summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CREDITS32
-rw-r--r--HISTORY718
-rw-r--r--INSTALL2
-rw-r--r--RELEASE-NOTES891
-rw-r--r--RELEASE-NOTES-1.18794
-rw-r--r--StartProfiler.sample12
-rw-r--r--api.php30
-rw-r--r--config/OBSOLETE2
-rw-r--r--config/index.php1
-rw-r--r--config/index.php51
-rw-r--r--docs/database.txt11
-rw-r--r--docs/databases/postgres.txt12
-rw-r--r--docs/design.html18
-rw-r--r--docs/export-0.4.xsd8
-rw-r--r--docs/export-0.5.xsd8
-rw-r--r--docs/globals.txt14
-rw-r--r--docs/hooks.txt333
-rw-r--r--docs/skin.txt11
-rw-r--r--extensions/ConfirmEdit/Captcha.php894
-rw-r--r--extensions/ConfirmEdit/CaptchaStore.php109
-rw-r--r--extensions/ConfirmEdit/ConfirmEdit.alias.php84
-rw-r--r--extensions/ConfirmEdit/ConfirmEdit.i18n.php3636
-rw-r--r--extensions/ConfirmEdit/ConfirmEdit.php227
-rw-r--r--extensions/ConfirmEdit/ConfirmEditHooks.php78
-rw-r--r--extensions/ConfirmEdit/FancyCaptcha.class.php249
-rw-r--r--extensions/ConfirmEdit/FancyCaptcha.i18n.php1416
-rw-r--r--extensions/ConfirmEdit/FancyCaptcha.php50
-rw-r--r--extensions/ConfirmEdit/HTMLCaptchaField.php84
-rw-r--r--extensions/ConfirmEdit/MathCaptcha.class.php57
-rw-r--r--extensions/ConfirmEdit/MathCaptcha.php19
-rw-r--r--extensions/ConfirmEdit/QuestyCaptcha.class.php71
-rw-r--r--extensions/ConfirmEdit/QuestyCaptcha.i18n.php1093
-rw-r--r--extensions/ConfirmEdit/QuestyCaptcha.php42
-rw-r--r--extensions/ConfirmEdit/README38
-rw-r--r--extensions/ConfirmEdit/ReCaptcha.i18n.php402
-rw-r--r--extensions/ConfirmEdit/ReCaptcha.php134
-rw-r--r--extensions/ConfirmEdit/captcha.py226
-rw-r--r--extensions/ConfirmEdit/recaptchalib.php277
-rw-r--r--extensions/Gadgets/ApiQueryGadgetCategories.php117
-rw-r--r--extensions/Gadgets/ApiQueryGadgets.php205
-rw-r--r--extensions/Gadgets/Gadgets.alias.php309
-rw-r--r--extensions/Gadgets/Gadgets.i18n.php2705
-rw-r--r--extensions/Gadgets/Gadgets.php54
-rw-r--r--extensions/Gadgets/Gadgets_body.php586
-rw-r--r--extensions/Gadgets/Gadgets_tests.php82
-rw-r--r--extensions/Gadgets/README42
-rw-r--r--extensions/Gadgets/SpecialGadgets.php168
-rw-r--r--extensions/Gadgets/install.settings1
-rw-r--r--extensions/Nuke/Nuke.alias.php214
-rw-r--r--extensions/Nuke/Nuke.i18n.php2162
-rw-r--r--extensions/Nuke/Nuke.php28
-rw-r--r--extensions/Nuke/Nuke_body.php268
-rw-r--r--extensions/Nuke/SpecialNuke.php2
-rw-r--r--extensions/ParserFunctions/COPYING283
-rw-r--r--extensions/ParserFunctions/Convert.php889
-rw-r--r--extensions/ParserFunctions/Expr.php555
-rw-r--r--extensions/ParserFunctions/ParserFunctions.i18n.magic.php566
-rw-r--r--extensions/ParserFunctions/ParserFunctions.i18n.php4695
-rw-r--r--extensions/ParserFunctions/ParserFunctions.php115
-rw-r--r--extensions/ParserFunctions/ParserFunctions_body.php846
-rw-r--r--extensions/ParserFunctions/README21
-rw-r--r--extensions/ParserFunctions/convertTests.txt231
-rw-r--r--extensions/ParserFunctions/exprTests.txt39
-rw-r--r--extensions/ParserFunctions/funcsParserTests.txt177
-rw-r--r--extensions/ParserFunctions/stringFunctionTests.txt32
-rw-r--r--extensions/ParserFunctions/testExpr.php38
-rw-r--r--extensions/Renameuser/RenameUserJob.php99
-rw-r--r--extensions/Renameuser/Renameuser.alias.php304
-rw-r--r--extensions/Renameuser/Renameuser.i18n.php4278
-rw-r--r--extensions/Renameuser/Renameuser.php113
-rw-r--r--extensions/Renameuser/Renameuser_body.php548
-rw-r--r--extensions/Renameuser/SpecialRenameuser.php1
-rw-r--r--extensions/Renameuser/renameUserCleanup.php205
-rw-r--r--extensions/Vector/README21
-rw-r--r--extensions/Vector/Vector.hooks.php192
-rw-r--r--extensions/Vector/Vector.i18n.php1854
-rw-r--r--extensions/Vector/Vector.php131
-rw-r--r--extensions/Vector/modules/ext.vector.collapsibleNav.css56
-rw-r--r--extensions/Vector/modules/ext.vector.collapsibleNav.js228
-rw-r--r--extensions/Vector/modules/ext.vector.collapsibleTabs.js123
-rw-r--r--extensions/Vector/modules/ext.vector.editWarning.js71
-rw-r--r--extensions/Vector/modules/ext.vector.expandableSearch.css9
-rw-r--r--extensions/Vector/modules/ext.vector.expandableSearch.js70
-rw-r--r--extensions/Vector/modules/ext.vector.footerCleanup.css87
-rw-r--r--extensions/Vector/modules/ext.vector.footerCleanup.js68
-rw-r--r--extensions/Vector/modules/ext.vector.sectionEditLinks.css15
-rw-r--r--extensions/Vector/modules/ext.vector.sectionEditLinks.js75
-rw-r--r--extensions/Vector/modules/ext.vector.simpleSearch.js130
-rw-r--r--extensions/Vector/modules/images/closed-ltr.pngbin0 -> 184 bytes
-rw-r--r--extensions/Vector/modules/images/closed-rtl.pngbin0 -> 942 bytes
-rw-r--r--extensions/Vector/modules/images/edit-faded.pngbin0 -> 546 bytes
-rw-r--r--extensions/Vector/modules/images/edit.pngbin0 -> 551 bytes
-rw-r--r--extensions/Vector/modules/images/open.pngbin0 -> 181 bytes
-rw-r--r--extensions/Vector/modules/images/portal-break.pngbin0 -> 242 bytes
-rw-r--r--extensions/Vector/switchExperimentPrefs.php63
-rw-r--r--extensions/WikiEditor/README18
-rw-r--r--extensions/WikiEditor/WikiEditor.hooks.php276
-rw-r--r--extensions/WikiEditor/WikiEditor.i18n.php25914
-rw-r--r--extensions/WikiEditor/WikiEditor.php508
-rw-r--r--extensions/WikiEditor/modules/contentCollector.js439
-rw-r--r--extensions/WikiEditor/modules/ext.wikiEditor.css23
-rw-r--r--extensions/WikiEditor/modules/ext.wikiEditor.dialogs.js15
-rw-r--r--extensions/WikiEditor/modules/ext.wikiEditor.highlight.js8
-rw-r--r--extensions/WikiEditor/modules/ext.wikiEditor.js8
-rw-r--r--extensions/WikiEditor/modules/ext.wikiEditor.preview.js8
-rw-r--r--extensions/WikiEditor/modules/ext.wikiEditor.previewDialog.js8
-rw-r--r--extensions/WikiEditor/modules/ext.wikiEditor.publish.js8
-rw-r--r--extensions/WikiEditor/modules/ext.wikiEditor.templateEditor.js12
-rw-r--r--extensions/WikiEditor/modules/ext.wikiEditor.templates.js12
-rw-r--r--extensions/WikiEditor/modules/ext.wikiEditor.tests.toolbar.js246
-rw-r--r--extensions/WikiEditor/modules/ext.wikiEditor.toc.js8
-rw-r--r--extensions/WikiEditor/modules/ext.wikiEditor.toolbar.hideSig.js14
-rw-r--r--extensions/WikiEditor/modules/ext.wikiEditor.toolbar.js14
-rw-r--r--extensions/WikiEditor/modules/images/dialogs/insert-link-error.pngbin0 -> 672 bytes
-rw-r--r--extensions/WikiEditor/modules/images/dialogs/insert-link-exists.pngbin0 -> 335 bytes
-rw-r--r--extensions/WikiEditor/modules/images/dialogs/insert-link-external-rtl.pngbin0 -> 279 bytes
-rw-r--r--extensions/WikiEditor/modules/images/dialogs/insert-link-external.pngbin0 -> 282 bytes
-rw-r--r--extensions/WikiEditor/modules/images/dialogs/insert-link-invalid.pngbin0 -> 607 bytes
-rw-r--r--extensions/WikiEditor/modules/images/dialogs/insert-link-notexists.pngbin0 -> 548 bytes
-rw-r--r--extensions/WikiEditor/modules/images/dialogs/loading-small.gifbin0 -> 4046 bytes
-rw-r--r--extensions/WikiEditor/modules/images/dialogs/loading.gifbin0 -> 4615 bytes
-rw-r--r--extensions/WikiEditor/modules/images/templateEditor/collapse.pngbin0 -> 1022 bytes
-rw-r--r--extensions/WikiEditor/modules/images/templateEditor/dialog-collapsed.pngbin0 -> 291 bytes
-rw-r--r--extensions/WikiEditor/modules/images/templateEditor/dialog-expanded.pngbin0 -> 277 bytes
-rw-r--r--extensions/WikiEditor/modules/images/templateEditor/expand.pngbin0 -> 250 bytes
-rw-r--r--extensions/WikiEditor/modules/images/templateEditor/name-base.pngbin0 -> 177 bytes
-rw-r--r--extensions/WikiEditor/modules/images/templateEditor/text-base.pngbin0 -> 128 bytes
-rw-r--r--extensions/WikiEditor/modules/images/templateEditor/wiki-text.pngbin0 -> 255 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toc/close.pngbin0 -> 369 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toc/grab.pngbin0 -> 131 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toc/grip.pngbin0 -> 159 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toc/open.pngbin0 -> 370 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/arrow-down.pngbin0 -> 181 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/arrow-ltr.pngbin0 -> 184 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/arrow-rtl.pngbin0 -> 192 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/base.pngbin0 -> 3632 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/button-sprite.pngbin0 -> 21076 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/example-image.pngbin0 -> 1124 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-big.pngbin0 -> 725 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-bold-A.pngbin0 -> 633 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-bold-B.pngbin0 -> 688 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-bold-F.pngbin0 -> 531 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-bold-G.pngbin0 -> 637 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-bold-N.pngbin0 -> 702 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-bold-P.pngbin0 -> 597 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-bold-V.pngbin0 -> 588 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-bold-ka.pngbin0 -> 1492 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-bold-ru.pngbin0 -> 925 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-bold.pngbin0 -> 754 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-indent-rtl.pngbin0 -> 1019 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-indent.pngbin0 -> 1037 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-italic-A.pngbin0 -> 556 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-italic-C.pngbin0 -> 485 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-italic-D.pngbin0 -> 588 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-italic-I.pngbin0 -> 406 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-italic-K.pngbin0 -> 625 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-italic-ka.pngbin0 -> 1247 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-italic.pngbin0 -> 644 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-olist-rtl.pngbin0 -> 359 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-olist.pngbin0 -> 365 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-small.pngbin0 -> 713 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-subscript.pngbin0 -> 731 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-superscript.pngbin0 -> 729 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-ulist-rtl.pngbin0 -> 227 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/format-ulist.pngbin0 -> 223 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/insert-file.pngbin0 -> 1386 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/insert-gallery.pngbin0 -> 338 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/insert-ilink.pngbin0 -> 332 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/insert-link.pngbin0 -> 545 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/insert-newline.pngbin0 -> 784 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/insert-nowiki.pngbin0 -> 1557 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/insert-redirect-rtl.pngbin0 -> 1319 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/insert-redirect.pngbin0 -> 1552 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/insert-reference.pngbin0 -> 371 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/insert-signature.pngbin0 -> 851 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/insert-table.pngbin0 -> 343 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/insert-xlink.pngbin0 -> 413 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/loading-small.gifbin0 -> 3331 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/loading.gifbin0 -> 5423 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/magnify-clip.pngbin0 -> 204 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/arrow-down.pngbin0 -> 187 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/arrow-left.pngbin0 -> 192 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/arrow-right.pngbin0 -> 189 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-big.pngbin0 -> 740 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-bold-A.pngbin0 -> 682 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-bold-B.pngbin0 -> 726 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-bold-F.pngbin0 -> 576 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-bold-G.pngbin0 -> 728 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-bold-N.pngbin0 -> 770 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-bold-P.pngbin0 -> 642 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-bold-V.pngbin0 -> 670 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-bold.pngbin0 -> 682 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-italic-A.pngbin0 -> 613 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-italic-C.pngbin0 -> 551 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-italic-I.pngbin0 -> 449 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-italic-K.pngbin0 -> 719 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-italic.pngbin0 -> 613 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-olist.pngbin0 -> 438 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-small.pngbin0 -> 688 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-subscript.pngbin0 -> 691 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-superscript.pngbin0 -> 698 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/format-ulist.pngbin0 -> 389 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/generate.sh12
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/insert-file.pngbin0 -> 929 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/insert-gallery.pngbin0 -> 1162 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/insert-link.pngbin0 -> 769 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/insert-newline.pngbin0 -> 834 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/insert-nowiki.pngbin0 -> 1585 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/insert-redirect.pngbin0 -> 1244 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/insert-reference.pngbin0 -> 1128 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/insert-signature.pngbin0 -> 673 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/insert-table.pngbin0 -> 284 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/png24/search-replace.pngbin0 -> 1088 bytes
-rw-r--r--extensions/WikiEditor/modules/images/toolbar/search-replace.pngbin0 -> 979 bytes
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.css112
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.config.css204
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.config.js1150
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.css56
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.js217
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.highlight.js357
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.html135
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.iframe.js1387
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.js559
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.preview.css26
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.preview.js164
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.previewDialog.css35
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.previewDialog.js131
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.publish.js146
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js865
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.templates.js69
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.toc.css177
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.toc.js667
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js1091
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.css303
-rw-r--r--extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.js775
-rw-r--r--extensions/WikiEditor/tests/selenium/WikiDialogs_Links.php68
-rw-r--r--extensions/WikiEditor/tests/selenium/WikiDialogs_Links_Setup.php296
-rw-r--r--extensions/WikiEditor/tests/selenium/WikiEditorConstants.php84
-rw-r--r--extensions/WikiEditor/tests/selenium/WikiEditorSeleniumConfig.php27
-rw-r--r--extensions/WikiEditor/tests/selenium/WikiEditorTestSuite.php35
-rw-r--r--img_auth.php31
-rw-r--r--includes/Action.php467
-rw-r--r--includes/AjaxDispatcher.php15
-rw-r--r--includes/AjaxFunctions.php101
-rw-r--r--includes/AjaxResponse.php4
-rw-r--r--includes/Article.php3667
-rw-r--r--includes/AuthPlugin.php13
-rw-r--r--includes/AutoLoader.php522
-rw-r--r--includes/Autopromote.php72
-rw-r--r--includes/BacklinkCache.php131
-rw-r--r--includes/BagOStuff.php906
-rw-r--r--includes/Block.php1156
-rw-r--r--includes/Category.php11
-rw-r--r--includes/CategoryPage.php197
-rw-r--r--includes/Categoryfinder.php7
-rw-r--r--includes/Cdb.php12
-rw-r--r--includes/Cdb_PHP.php76
-rw-r--r--includes/ChangeTags.php36
-rw-r--r--includes/ChangesFeed.php54
-rw-r--r--includes/ChangesList.php564
-rw-r--r--includes/Collation.php52
-rw-r--r--includes/ConfEditor.php78
-rw-r--r--includes/Cookie.php245
-rw-r--r--includes/DefaultSettings.php833
-rw-r--r--includes/Defines.php41
-rw-r--r--includes/DjVuImage.php12
-rw-r--r--includes/EditPage.php905
-rw-r--r--includes/Exception.php351
-rw-r--r--includes/Exif.php1150
-rw-r--r--includes/Export.php448
-rw-r--r--includes/ExternalEdit.php63
-rw-r--r--includes/ExternalStore.php16
-rw-r--r--includes/ExternalStoreDB.php16
-rw-r--r--includes/ExternalUser.php4
-rw-r--r--includes/FakeTitle.php6
-rw-r--r--includes/Fallback.php200
-rw-r--r--includes/Feed.php52
-rw-r--r--includes/FeedUtils.php2
-rw-r--r--includes/FileDeleteForm.php36
-rw-r--r--includes/FileRevertForm.php180
-rw-r--r--includes/ForkController.php6
-rw-r--r--includes/FormOptions.php121
-rw-r--r--includes/GenderCache.php135
-rw-r--r--includes/GlobalFunctions.php2092
-rw-r--r--includes/HTMLForm.php507
-rw-r--r--includes/HistoryBlob.php88
-rw-r--r--includes/HistoryPage.php50
-rw-r--r--includes/Hooks.php384
-rw-r--r--includes/Html.php102
-rw-r--r--includes/HttpFunctions.old.php1
-rw-r--r--includes/HttpFunctions.php306
-rw-r--r--includes/IP.php86
-rw-r--r--includes/ImageFunctions.php2
-rw-r--r--includes/ImageGallery.php147
-rw-r--r--includes/ImagePage.php660
-rw-r--r--includes/ImageQueryPage.php29
-rw-r--r--includes/Import.php290
-rw-r--r--includes/Init.php184
-rw-r--r--includes/Licenses.php49
-rw-r--r--includes/LinkFilter.php36
-rw-r--r--includes/Linker.php971
-rw-r--r--includes/LinksUpdate.php44
-rw-r--r--includes/LocalisationCache.php130
-rw-r--r--includes/LogEventsList.php277
-rw-r--r--includes/LogPage.php135
-rw-r--r--includes/MWFunction.php64
-rw-r--r--includes/MacBinary.php272
-rw-r--r--includes/MagicWord.php169
-rw-r--r--includes/Math.php341
-rw-r--r--includes/Message.php194
-rw-r--r--includes/MessageBlobStore.php56
-rw-r--r--includes/Metadata.php146
-rw-r--r--includes/MimeMagic.php475
-rw-r--r--includes/Namespace.php106
-rw-r--r--includes/ObjectCache.php123
-rw-r--r--includes/OutputHandler.php22
-rw-r--r--includes/OutputPage.php1537
-rw-r--r--includes/PHPVersionError.php91
-rw-r--r--includes/PageQueryPage.php2
-rw-r--r--includes/Pager.php40
-rw-r--r--includes/PatrolLog.php12
-rw-r--r--includes/PoolCounter.php115
-rw-r--r--includes/Preferences.php244
-rw-r--r--includes/PrefixSearch.php40
-rw-r--r--includes/ProfilerSimpleText.php39
-rw-r--r--includes/ProfilerStub.php52
-rw-r--r--includes/ProtectionForm.php80
-rw-r--r--includes/ProxyTools.php107
-rw-r--r--includes/QueryPage.php393
-rw-r--r--includes/RawPage.php38
-rw-r--r--includes/RecentChange.php157
-rw-r--r--includes/RequestContext.php399
-rw-r--r--includes/Revision.php124
-rw-r--r--includes/RevisionList.php370
-rw-r--r--includes/Sanitizer.php760
-rw-r--r--includes/SeleniumWebSettings.php197
-rw-r--r--includes/Setup.php463
-rw-r--r--includes/SiteConfiguration.php43
-rw-r--r--includes/SiteStats.php148
-rw-r--r--includes/Skin.php1761
-rw-r--r--includes/SkinLegacy.php942
-rw-r--r--includes/SkinTemplate.php1275
-rw-r--r--includes/SpecialPage.php1164
-rw-r--r--includes/SpecialPageFactory.php554
-rw-r--r--includes/SquidPurgeClient.php28
-rw-r--r--includes/Status.php54
-rw-r--r--includes/StreamFile.php15
-rw-r--r--includes/StringUtils.php22
-rw-r--r--includes/StubObject.php22
-rw-r--r--includes/Title.php1394
-rw-r--r--includes/TitleArray.php22
-rw-r--r--includes/User.php1740
-rw-r--r--includes/UserArray.php35
-rw-r--r--includes/UserMailer.php183
-rw-r--r--includes/ViewCountUpdate.php111
-rw-r--r--includes/WatchedItem.php5
-rw-r--r--includes/WatchlistEditor.php528
-rw-r--r--includes/WebRequest.php375
-rw-r--r--includes/WebResponse.php130
-rw-r--r--includes/WebStart.php82
-rw-r--r--includes/Wiki.php639
-rw-r--r--includes/WikiCategoryPage.php37
-rw-r--r--includes/WikiError.php12
-rw-r--r--includes/WikiFilePage.php139
-rw-r--r--includes/WikiMap.php21
-rw-r--r--includes/WikiPage.php2677
-rw-r--r--includes/Xml.php202
-rw-r--r--includes/XmlTypeCheck.php17
-rw-r--r--includes/ZhClient.php88
-rw-r--r--includes/ZhConversion.php230
-rw-r--r--includes/ZipDirectoryReader.php684
-rw-r--r--includes/actions/CreditsAction.php (renamed from includes/Credits.php)109
-rw-r--r--includes/actions/DeletetrackbackAction.php54
-rw-r--r--includes/actions/InfoAction.php151
-rw-r--r--includes/actions/MarkpatrolledAction.php86
-rw-r--r--includes/actions/PurgeAction.php100
-rw-r--r--includes/actions/RevertAction.php140
-rw-r--r--includes/actions/RevisiondeleteAction.php53
-rw-r--r--includes/actions/RollbackAction.php122
-rw-r--r--includes/actions/WatchAction.php183
-rw-r--r--includes/api/ApiBase.php276
-rw-r--r--includes/api/ApiBlock.php85
-rw-r--r--includes/api/ApiComparePages.php130
-rw-r--r--includes/api/ApiDelete.php42
-rw-r--r--includes/api/ApiDisabled.php6
-rw-r--r--includes/api/ApiEditPage.php105
-rw-r--r--includes/api/ApiEmailUser.php8
-rw-r--r--includes/api/ApiExpandTemplates.php21
-rw-r--r--includes/api/ApiFeedContributions.php207
-rw-r--r--includes/api/ApiFeedWatchlist.php41
-rw-r--r--includes/api/ApiFileRevert.php189
-rw-r--r--includes/api/ApiFormatBase.php22
-rw-r--r--includes/api/ApiFormatDbg.php6
-rw-r--r--includes/api/ApiFormatDump.php4
-rw-r--r--includes/api/ApiFormatJson.php4
-rw-r--r--includes/api/ApiFormatPhp.php4
-rw-r--r--includes/api/ApiFormatRaw.php8
-rw-r--r--includes/api/ApiFormatTxt.php6
-rw-r--r--includes/api/ApiFormatWddx.php4
-rw-r--r--includes/api/ApiFormatXml.php24
-rw-r--r--includes/api/ApiFormatYaml.php14
-rw-r--r--includes/api/ApiHelp.php17
-rw-r--r--includes/api/ApiImport.php38
-rw-r--r--includes/api/ApiLogin.php25
-rw-r--r--includes/api/ApiLogout.php10
-rw-r--r--includes/api/ApiMain.php256
-rw-r--r--includes/api/ApiMove.php49
-rw-r--r--includes/api/ApiOpenSearch.php12
-rw-r--r--includes/api/ApiPageSet.php127
-rw-r--r--includes/api/ApiParamInfo.php83
-rw-r--r--includes/api/ApiParse.php209
-rw-r--r--includes/api/ApiPatrol.php10
-rw-r--r--includes/api/ApiProtect.php24
-rw-r--r--includes/api/ApiPurge.php47
-rw-r--r--includes/api/ApiQuery.php74
-rw-r--r--includes/api/ApiQueryAllCategories.php28
-rw-r--r--includes/api/ApiQueryAllLinks.php31
-rw-r--r--includes/api/ApiQueryAllUsers.php189
-rw-r--r--includes/api/ApiQueryAllimages.php68
-rw-r--r--includes/api/ApiQueryAllmessages.php135
-rw-r--r--includes/api/ApiQueryAllpages.php74
-rw-r--r--includes/api/ApiQueryBacklinks.php80
-rw-r--r--includes/api/ApiQueryBase.php104
-rw-r--r--includes/api/ApiQueryBlocks.php86
-rw-r--r--includes/api/ApiQueryCategories.php14
-rw-r--r--includes/api/ApiQueryCategoryInfo.php8
-rw-r--r--includes/api/ApiQueryCategoryMembers.php88
-rw-r--r--includes/api/ApiQueryDeletedrevs.php117
-rw-r--r--includes/api/ApiQueryDisabled.php6
-rw-r--r--includes/api/ApiQueryDuplicateFiles.php14
-rw-r--r--includes/api/ApiQueryExtLinksUsage.php109
-rw-r--r--includes/api/ApiQueryExternalLinks.php52
-rw-r--r--includes/api/ApiQueryFilearchive.php113
-rw-r--r--includes/api/ApiQueryIWBacklinks.php13
-rw-r--r--includes/api/ApiQueryIWLinks.php33
-rw-r--r--includes/api/ApiQueryImageInfo.php227
-rw-r--r--includes/api/ApiQueryImages.php28
-rw-r--r--includes/api/ApiQueryInfo.php50
-rw-r--r--includes/api/ApiQueryLangBacklinks.php220
-rw-r--r--includes/api/ApiQueryLangLinks.php39
-rw-r--r--includes/api/ApiQueryLinks.php18
-rw-r--r--includes/api/ApiQueryLogEvents.php82
-rw-r--r--includes/api/ApiQueryPageProps.php62
-rw-r--r--includes/api/ApiQueryProtectedTitles.php32
-rw-r--r--includes/api/ApiQueryQueryPage.php198
-rw-r--r--includes/api/ApiQueryRandom.php22
-rw-r--r--includes/api/ApiQueryRecentChanges.php132
-rw-r--r--includes/api/ApiQueryRevisions.php57
-rw-r--r--includes/api/ApiQuerySearch.php38
-rw-r--r--includes/api/ApiQuerySiteinfo.php140
-rw-r--r--includes/api/ApiQueryStashImageInfo.php93
-rw-r--r--includes/api/ApiQueryTags.php20
-rw-r--r--includes/api/ApiQueryUserContributions.php30
-rw-r--r--includes/api/ApiQueryUserInfo.php41
-rw-r--r--includes/api/ApiQueryUsers.php97
-rw-r--r--includes/api/ApiQueryWatchlist.php94
-rw-r--r--includes/api/ApiQueryWatchlistRaw.php14
-rw-r--r--includes/api/ApiResult.php35
-rw-r--r--includes/api/ApiRollback.php24
-rw-r--r--includes/api/ApiRsd.php15
-rw-r--r--includes/api/ApiUnblock.php46
-rw-r--r--includes/api/ApiUndelete.php19
-rw-r--r--includes/api/ApiUpload.php291
-rw-r--r--includes/api/ApiUserrights.php17
-rw-r--r--includes/api/ApiWatch.php33
-rw-r--r--includes/cache/CacheDependency.php (renamed from includes/CacheDependency.php)29
-rw-r--r--includes/cache/HTMLCacheUpdate.php (renamed from includes/HTMLCacheUpdate.php)28
-rw-r--r--includes/cache/HTMLFileCache.php (renamed from includes/HTMLFileCache.php)51
-rw-r--r--includes/cache/LinkBatch.php (renamed from includes/LinkBatch.php)37
-rw-r--r--includes/cache/LinkCache.php (renamed from includes/LinkCache.php)30
-rw-r--r--includes/cache/MemcachedSessions.php (renamed from includes/MemcachedSessions.php)5
-rw-r--r--includes/cache/MessageCache.php (renamed from includes/MessageCache.php)539
-rw-r--r--includes/cache/SquidUpdate.php (renamed from includes/SquidUpdate.php)50
-rw-r--r--includes/db/CloneDatabase.php158
-rw-r--r--includes/db/Database.php1763
-rw-r--r--includes/db/DatabaseError.php314
-rw-r--r--includes/db/DatabaseIbm_db2.php292
-rw-r--r--includes/db/DatabaseMssql.php484
-rw-r--r--includes/db/DatabaseMysql.php219
-rw-r--r--includes/db/DatabaseOracle.php290
-rw-r--r--includes/db/DatabasePostgres.php178
-rw-r--r--includes/db/DatabaseSqlite.php299
-rw-r--r--includes/db/DatabaseUtility.php268
-rw-r--r--includes/db/LBFactory.php47
-rw-r--r--includes/db/LBFactory_Multi.php22
-rw-r--r--includes/db/LBFactory_Single.php42
-rw-r--r--includes/db/LoadBalancer.php203
-rw-r--r--includes/db/LoadMonitor.php67
-rw-r--r--includes/diff/DairikiDiff.php (renamed from includes/diff/WikiDiff.php)450
-rw-r--r--includes/diff/DifferenceEngine.php259
-rw-r--r--includes/diff/WikiDiff3.php14
-rw-r--r--includes/extauth/MediaWiki.php35
-rw-r--r--includes/extauth/vB.php6
-rw-r--r--includes/filerepo/ArchivedFile.php69
-rw-r--r--includes/filerepo/FSRepo.php122
-rw-r--r--includes/filerepo/File.php541
-rw-r--r--includes/filerepo/FileRepo.php122
-rw-r--r--includes/filerepo/FileRepoStatus.php12
-rw-r--r--includes/filerepo/ForeignAPIFile.php29
-rw-r--r--includes/filerepo/ForeignAPIRepo.php51
-rw-r--r--includes/filerepo/ForeignDBFile.php23
-rw-r--r--includes/filerepo/ForeignDBRepo.php4
-rw-r--r--includes/filerepo/Image.php80
-rw-r--r--includes/filerepo/LocalFile.php273
-rw-r--r--includes/filerepo/LocalRepo.php37
-rw-r--r--includes/filerepo/NullRepo.php3
-rw-r--r--includes/filerepo/OldLocalFile.php100
-rw-r--r--includes/filerepo/README18
-rw-r--r--includes/filerepo/RepoGroup.php56
-rw-r--r--includes/filerepo/UnregisteredLocalFile.php24
-rw-r--r--includes/installer/CliInstaller.php21
-rw-r--r--includes/installer/DatabaseInstaller.php27
-rw-r--r--includes/installer/DatabaseUpdater.php82
-rw-r--r--includes/installer/Ibm_db2Installer.php251
-rw-r--r--includes/installer/Ibm_db2Updater.php69
-rw-r--r--includes/installer/InstallDocFormatter.php42
-rw-r--r--includes/installer/Installer.i18n.php6105
-rw-r--r--includes/installer/Installer.php115
-rw-r--r--includes/installer/LocalSettingsGenerator.php19
-rw-r--r--includes/installer/MysqlInstaller.php62
-rw-r--r--includes/installer/MysqlUpdater.php36
-rw-r--r--includes/installer/OracleInstaller.php6
-rw-r--r--includes/installer/OracleUpdater.php35
-rw-r--r--includes/installer/PhpBugTests.php2
-rw-r--r--includes/installer/PostgresInstaller.php54
-rw-r--r--includes/installer/PostgresUpdater.php2
-rw-r--r--includes/installer/SqliteInstaller.php43
-rw-r--r--includes/installer/SqliteUpdater.php7
-rw-r--r--includes/installer/WebInstaller.php89
-rw-r--r--includes/installer/WebInstallerOutput.php27
-rw-r--r--includes/installer/WebInstallerPage.php114
-rw-r--r--includes/interwiki/Interwiki.php (renamed from includes/Interwiki.php)32
-rw-r--r--includes/job/DoubleRedirectJob.php10
-rw-r--r--includes/job/JobQueue.php74
-rw-r--r--includes/job/RefreshLinksJob.php2
-rw-r--r--includes/job/UploadFromUrlJob.php61
-rw-r--r--includes/json/FormatJson.php7
-rw-r--r--includes/json/Services_JSON.php80
-rw-r--r--includes/libs/CSSMin.php52
-rw-r--r--includes/libs/HttpStatus.php68
-rw-r--r--includes/libs/jsminplus.php2094
-rw-r--r--includes/libs/spyc.php248
-rw-r--r--includes/media/BMP.php35
-rw-r--r--includes/media/Bitmap.php363
-rw-r--r--includes/media/BitmapMetadataHandler.php269
-rw-r--r--includes/media/Bitmap_ClientOnly.php14
-rw-r--r--includes/media/DjVu.php65
-rw-r--r--includes/media/Exif.php836
-rw-r--r--includes/media/ExifBitmap.php210
-rw-r--r--includes/media/FormatMetadata.php1354
-rw-r--r--includes/media/GIF.php103
-rw-r--r--includes/media/GIFMetadataExtractor.php236
-rw-r--r--includes/media/Generic.php302
-rw-r--r--includes/media/IPTC.php576
-rw-r--r--includes/media/Jpeg.php46
-rw-r--r--includes/media/JpegMetadataExtractor.php252
-rw-r--r--includes/media/MediaTransformOutput.php26
-rw-r--r--includes/media/PNG.php88
-rw-r--r--includes/media/PNGMetadataExtractor.php359
-rw-r--r--includes/media/SVG.php92
-rw-r--r--includes/media/SVGMetadataExtractor.php27
-rw-r--r--includes/media/Tiff.php51
-rw-r--r--includes/media/XMP.php1174
-rw-r--r--includes/media/XMPInfo.php1139
-rw-r--r--includes/media/XMPValidate.php323
-rw-r--r--includes/mime.info3
-rw-r--r--includes/mime.types2
-rw-r--r--includes/normal/Makefile10
-rw-r--r--includes/normal/Utf8Case.php30
-rw-r--r--includes/normal/Utf8CaseGenerate.php1
-rw-r--r--includes/normal/Utf8Test.php2
-rw-r--r--includes/normal/UtfNormal.php42
-rw-r--r--includes/normal/UtfNormalBench.php1
-rw-r--r--includes/normal/UtfNormalData.inc10
-rw-r--r--includes/normal/UtfNormalDataK.inc2
-rw-r--r--includes/normal/UtfNormalDefines.php6
-rw-r--r--includes/normal/UtfNormalGenerate.php1
-rw-r--r--includes/normal/UtfNormalMemStress.php110
-rw-r--r--includes/normal/UtfNormalTest.php1
-rw-r--r--includes/normal/UtfNormalTest2.php6
-rw-r--r--includes/normal/UtfNormalUtil.php6
-rw-r--r--includes/objectcache/APCBagOStuff.php43
-rw-r--r--includes/objectcache/BagOStuff.php164
-rw-r--r--includes/objectcache/DBABagOStuff.php194
-rw-r--r--includes/objectcache/EhcacheBagOStuff.php230
-rw-r--r--includes/objectcache/EmptyBagOStuff.php27
-rw-r--r--includes/objectcache/HashBagOStuff.php58
-rw-r--r--includes/objectcache/MemcachedClient.php (renamed from includes/memcached-client.php)41
-rw-r--r--includes/objectcache/MemcachedPhpBagOStuff.php178
-rw-r--r--includes/objectcache/MultiWriteBagOStuff.php113
-rw-r--r--includes/objectcache/ObjectCache.php119
-rw-r--r--includes/objectcache/SqlBagOStuff.php432
-rw-r--r--includes/objectcache/WinCacheBagOStuff.php71
-rw-r--r--includes/objectcache/XCacheBagOStuff.php51
-rw-r--r--includes/objectcache/eAccelBagOStuff.php46
-rw-r--r--includes/parser/CoreLinkFunctions.php30
-rw-r--r--includes/parser/CoreParserFunctions.php173
-rw-r--r--includes/parser/CoreTagHooks.php65
-rw-r--r--includes/parser/DateFormatter.php8
-rw-r--r--includes/parser/LinkHolderArray.php252
-rw-r--r--includes/parser/Parser.php1224
-rw-r--r--includes/parser/ParserCache.php44
-rw-r--r--includes/parser/ParserOptions.php192
-rw-r--r--includes/parser/ParserOutput.php133
-rw-r--r--includes/parser/Parser_DiffTest.php4
-rw-r--r--includes/parser/Parser_LinkHooks.php21
-rw-r--r--includes/parser/Preprocessor.php48
-rw-r--r--includes/parser/Preprocessor_DOM.php249
-rw-r--r--includes/parser/Preprocessor_Hash.php214
-rw-r--r--includes/parser/Preprocessor_HipHop.hphp1941
-rw-r--r--includes/parser/StripState.php175
-rw-r--r--includes/parser/Tidy.php163
-rw-r--r--includes/profiler/Profiler.php (renamed from includes/Profiler.php)311
-rw-r--r--includes/profiler/ProfilerSimple.php (renamed from includes/ProfilerSimple.php)47
-rw-r--r--includes/profiler/ProfilerSimpleText.php54
-rw-r--r--includes/profiler/ProfilerSimpleTrace.php (renamed from includes/ProfilerSimpleTrace.php)10
-rw-r--r--includes/profiler/ProfilerSimpleUDP.php (renamed from includes/ProfilerSimpleUDP.php)8
-rw-r--r--includes/profiler/ProfilerStub.php15
-rw-r--r--includes/resourceloader/ResourceLoader.php297
-rw-r--r--includes/resourceloader/ResourceLoaderContext.php50
-rw-r--r--includes/resourceloader/ResourceLoaderFileModule.php270
-rw-r--r--includes/resourceloader/ResourceLoaderFilePageModule.php11
-rw-r--r--includes/resourceloader/ResourceLoaderModule.php189
-rw-r--r--includes/resourceloader/ResourceLoaderNoscriptModule.php52
-rw-r--r--includes/resourceloader/ResourceLoaderSiteModule.php4
-rw-r--r--includes/resourceloader/ResourceLoaderStartUpModule.php143
-rw-r--r--includes/resourceloader/ResourceLoaderUserGroupsModule.php59
-rw-r--r--includes/resourceloader/ResourceLoaderUserModule.php12
-rw-r--r--includes/resourceloader/ResourceLoaderUserOptionsModule.php29
-rw-r--r--includes/resourceloader/ResourceLoaderUserTokensModule.php63
-rw-r--r--includes/resourceloader/ResourceLoaderWikiModule.php44
-rw-r--r--includes/revisiondelete/RevisionDelete.php374
-rw-r--r--includes/revisiondelete/RevisionDeleteAbstracts.php235
-rw-r--r--includes/revisiondelete/RevisionDeleteUser.php130
-rw-r--r--includes/revisiondelete/RevisionDeleter.php191
-rw-r--r--includes/search/SearchEngine.php124
-rw-r--r--includes/search/SearchIBM_DB2.php4
-rw-r--r--includes/search/SearchMssql.php8
-rw-r--r--includes/search/SearchMySQL.php190
-rw-r--r--includes/search/SearchOracle.php14
-rw-r--r--includes/search/SearchPostgres.php36
-rw-r--r--includes/search/SearchSqlite.php12
-rw-r--r--includes/search/SearchUpdate.php4
-rw-r--r--includes/specials/SpecialActiveusers.php14
-rw-r--r--includes/specials/SpecialAllmessages.php214
-rw-r--r--includes/specials/SpecialAllpages.php80
-rw-r--r--includes/specials/SpecialAncientpages.php40
-rw-r--r--includes/specials/SpecialBlankpage.php3
-rw-r--r--includes/specials/SpecialBlock.php855
-rw-r--r--includes/specials/SpecialBlockList.php437
-rw-r--r--includes/specials/SpecialBlockip.php892
-rw-r--r--includes/specials/SpecialBlockme.php8
-rw-r--r--includes/specials/SpecialBooksources.php41
-rw-r--r--includes/specials/SpecialBrokenRedirects.php75
-rw-r--r--includes/specials/SpecialCategories.php19
-rw-r--r--includes/specials/SpecialChangePassword.php (renamed from includes/specials/SpecialResetpass.php)64
-rw-r--r--includes/specials/SpecialComparePages.php170
-rw-r--r--includes/specials/SpecialConfirmemail.php79
-rw-r--r--includes/specials/SpecialContributions.php322
-rw-r--r--includes/specials/SpecialDeadendpages.php58
-rw-r--r--includes/specials/SpecialDeletedContributions.php31
-rw-r--r--includes/specials/SpecialDisambiguations.php109
-rw-r--r--includes/specials/SpecialDoubleRedirects.php86
-rw-r--r--includes/specials/SpecialEditWatchlist.php596
-rw-r--r--includes/specials/SpecialEmailuser.php112
-rw-r--r--includes/specials/SpecialExport.php127
-rw-r--r--includes/specials/SpecialFewestrevisions.php41
-rw-r--r--includes/specials/SpecialFileDuplicateSearch.php226
-rw-r--r--includes/specials/SpecialFilepath.php11
-rw-r--r--includes/specials/SpecialImport.php50
-rw-r--r--includes/specials/SpecialIpblocklist.php581
-rw-r--r--includes/specials/SpecialLinkSearch.php202
-rw-r--r--includes/specials/SpecialListfiles.php148
-rw-r--r--includes/specials/SpecialListgrouprights.php62
-rw-r--r--includes/specials/SpecialListredirects.php96
-rw-r--r--includes/specials/SpecialListusers.php86
-rw-r--r--includes/specials/SpecialLockdb.php24
-rw-r--r--includes/specials/SpecialLog.php9
-rw-r--r--includes/specials/SpecialLonelypages.php64
-rw-r--r--includes/specials/SpecialLongpages.php15
-rw-r--r--includes/specials/SpecialMIMEsearch.php151
-rw-r--r--includes/specials/SpecialMergeHistory.php210
-rw-r--r--includes/specials/SpecialMostcategories.php49
-rw-r--r--includes/specials/SpecialMostimages.php39
-rw-r--r--includes/specials/SpecialMostlinked.php62
-rw-r--r--includes/specials/SpecialMostlinkedcategories.php57
-rw-r--r--includes/specials/SpecialMostlinkedtemplates.php50
-rw-r--r--includes/specials/SpecialMostrevisions.php62
-rw-r--r--includes/specials/SpecialMovepage.php36
-rw-r--r--includes/specials/SpecialNewimages.php308
-rw-r--r--includes/specials/SpecialNewpages.php286
-rw-r--r--includes/specials/SpecialPasswordReset.php273
-rw-r--r--includes/specials/SpecialPopularpages.php51
-rw-r--r--includes/specials/SpecialPreferences.php5
-rw-r--r--includes/specials/SpecialPrefixindex.php58
-rw-r--r--includes/specials/SpecialProtectedpages.php39
-rw-r--r--includes/specials/SpecialProtectedtitles.php26
-rw-r--r--includes/specials/SpecialRandompage.php90
-rw-r--r--includes/specials/SpecialRecentchanges.php417
-rw-r--r--includes/specials/SpecialRecentchangeslinked.php52
-rw-r--r--includes/specials/SpecialRevisiondelete.php238
-rw-r--r--includes/specials/SpecialSearch.php412
-rw-r--r--includes/specials/SpecialShortpages.php60
-rw-r--r--includes/specials/SpecialSpecialpages.php44
-rw-r--r--includes/specials/SpecialStatistics.php121
-rw-r--r--includes/specials/SpecialTags.php16
-rw-r--r--includes/specials/SpecialUnblock.php209
-rw-r--r--includes/specials/SpecialUncategorizedcategories.php18
-rw-r--r--includes/specials/SpecialUncategorizedimages.php32
-rw-r--r--includes/specials/SpecialUncategorizedpages.php54
-rw-r--r--includes/specials/SpecialUncategorizedtemplates.php18
-rw-r--r--includes/specials/SpecialUndelete.php703
-rw-r--r--includes/specials/SpecialUnlockdb.php16
-rw-r--r--includes/specials/SpecialUnusedcategories.php34
-rw-r--r--includes/specials/SpecialUnusedimages.php70
-rw-r--r--includes/specials/SpecialUnusedtemplates.php39
-rw-r--r--includes/specials/SpecialUnwatchedpages.php66
-rw-r--r--includes/specials/SpecialUpload.php150
-rw-r--r--includes/specials/SpecialUploadStash.php168
-rw-r--r--includes/specials/SpecialUserlogin.php405
-rw-r--r--includes/specials/SpecialUserrights.php29
-rw-r--r--includes/specials/SpecialVersion.php303
-rw-r--r--includes/specials/SpecialWantedcategories.php48
-rw-r--r--includes/specials/SpecialWantedfiles.php45
-rw-r--r--includes/specials/SpecialWantedpages.php102
-rw-r--r--includes/specials/SpecialWantedtemplates.php44
-rw-r--r--includes/specials/SpecialWatchlist.php825
-rw-r--r--includes/specials/SpecialWhatlinkshere.php86
-rw-r--r--includes/specials/SpecialWithoutinterwiki.php66
-rw-r--r--includes/templates/PHP4.php102
-rw-r--r--includes/templates/Userlogin.php48
-rw-r--r--includes/upload/UploadBase.php314
-rw-r--r--includes/upload/UploadFromFile.php33
-rw-r--r--includes/upload/UploadFromStash.php130
-rw-r--r--includes/upload/UploadFromUrl.php31
-rw-r--r--includes/upload/UploadStash.php615
-rw-r--r--includes/zhtable/Makefile.py14
-rw-r--r--includes/zhtable/simp2trad_noconvert.manual137
-rw-r--r--includes/zhtable/simpphrases.manual6
-rw-r--r--includes/zhtable/toCN.manual9
-rw-r--r--includes/zhtable/toHK.manual4
-rw-r--r--includes/zhtable/toSimp.manual5
-rw-r--r--includes/zhtable/toTW.manual8
-rw-r--r--includes/zhtable/toTrad.manual6
-rw-r--r--includes/zhtable/trad2simp.manual144
-rw-r--r--includes/zhtable/trad2simp_noconvert.manual1
-rw-r--r--includes/zhtable/tradphrases.manual50
-rw-r--r--includes/zhtable/tradphrases_exclude.manual1
-rw-r--r--index.php93
-rw-r--r--languages/Language.php957
-rw-r--r--languages/LanguageConverter.php218
-rw-r--r--languages/Names.php28
-rw-r--r--languages/classes/LanguageAm.php5
-rw-r--r--languages/classes/LanguageAr.php12
-rw-r--r--languages/classes/LanguageAz.php5
-rw-r--r--languages/classes/LanguageBe.php8
-rw-r--r--languages/classes/LanguageBe_tarask.php32
-rw-r--r--languages/classes/LanguageBg.php4
-rw-r--r--languages/classes/LanguageBh.php5
-rw-r--r--languages/classes/LanguageBs.php12
-rw-r--r--languages/classes/LanguageCs.php15
-rw-r--r--languages/classes/LanguageCu.php16
-rw-r--r--languages/classes/LanguageCy.php8
-rw-r--r--languages/classes/LanguageDsb.php16
-rw-r--r--languages/classes/LanguageEo.php14
-rw-r--r--languages/classes/LanguageEt.php4
-rw-r--r--languages/classes/LanguageFi.php15
-rw-r--r--languages/classes/LanguageFr.php5
-rw-r--r--languages/classes/LanguageGa.php16
-rw-r--r--languages/classes/LanguageGan.php47
-rw-r--r--languages/classes/LanguageGd.php27
-rw-r--r--languages/classes/LanguageGv.php5
-rw-r--r--languages/classes/LanguageHe.php2
-rw-r--r--languages/classes/LanguageHi.php5
-rw-r--r--languages/classes/LanguageHr.php7
-rw-r--r--languages/classes/LanguageHsb.php16
-rw-r--r--languages/classes/LanguageHu.php6
-rw-r--r--languages/classes/LanguageHy.php24
-rw-r--r--languages/classes/LanguageIu.deps.php8
-rw-r--r--languages/classes/LanguageIu.php224
-rw-r--r--languages/classes/LanguageJa.php14
-rw-r--r--languages/classes/LanguageKaa.php35
-rw-r--r--languages/classes/LanguageKk.php75
-rw-r--r--languages/classes/LanguageKk_cyrl.php25
-rw-r--r--languages/classes/LanguageKm.php5
-rw-r--r--languages/classes/LanguageKsh.php144
-rw-r--r--languages/classes/LanguageKu.php25
-rw-r--r--languages/classes/LanguageKu_ku.php4
-rw-r--r--languages/classes/LanguageLa.php5
-rw-r--r--languages/classes/LanguageLn.php6
-rw-r--r--languages/classes/LanguageLt.php7
-rw-r--r--languages/classes/LanguageLv.php2
-rw-r--r--languages/classes/LanguageMg.php5
-rw-r--r--languages/classes/LanguageMk.php5
-rw-r--r--languages/classes/LanguageMl.php6
-rw-r--r--languages/classes/LanguageMo.php6
-rw-r--r--languages/classes/LanguageMt.php6
-rw-r--r--languages/classes/LanguageMy.php5
-rw-r--r--languages/classes/LanguageNso.php5
-rw-r--r--languages/classes/LanguageOs.php87
-rw-r--r--languages/classes/LanguagePl.php10
-rw-r--r--languages/classes/LanguageQqx.php15
-rw-r--r--languages/classes/LanguageRo.php6
-rw-r--r--languages/classes/LanguageRu.php23
-rw-r--r--languages/classes/LanguageSe.php6
-rw-r--r--languages/classes/LanguageSgs.php (renamed from languages/classes/LanguageBat_smg.php)7
-rw-r--r--languages/classes/LanguageSh.php8
-rw-r--r--languages/classes/LanguageSk.php6
-rw-r--r--languages/classes/LanguageSl.php11
-rw-r--r--languages/classes/LanguageSma.php12
-rw-r--r--languages/classes/LanguageSr.php58
-rw-r--r--languages/classes/LanguageSr_ec.php6
-rw-r--r--languages/classes/LanguageSr_el.php6
-rw-r--r--languages/classes/LanguageTi.php5
-rw-r--r--languages/classes/LanguageTl.php5
-rw-r--r--languages/classes/LanguageTr.php23
-rw-r--r--languages/classes/LanguageTyv.php2
-rw-r--r--languages/classes/LanguageUk.php24
-rw-r--r--languages/classes/LanguageWa.php32
-rw-r--r--languages/classes/LanguageYue.php13
-rw-r--r--languages/classes/LanguageZh.php39
-rw-r--r--languages/classes/LanguageZh_hans.php14
-rw-r--r--languages/messages/MessagesAb.php14
-rw-r--r--languages/messages/MessagesAce.php174
-rw-r--r--languages/messages/MessagesAf.php693
-rw-r--r--languages/messages/MessagesAln.php64
-rw-r--r--languages/messages/MessagesAm.php160
-rw-r--r--languages/messages/MessagesAn.php365
-rw-r--r--languages/messages/MessagesAng.php55
-rw-r--r--languages/messages/MessagesAnp.php743
-rw-r--r--languages/messages/MessagesAr.php877
-rw-r--r--languages/messages/MessagesArc.php107
-rw-r--r--languages/messages/MessagesArn.php183
-rw-r--r--languages/messages/MessagesAry.php335
-rw-r--r--languages/messages/MessagesArz.php309
-rw-r--r--languages/messages/MessagesAs.php547
-rw-r--r--languages/messages/MessagesAst.php645
-rw-r--r--languages/messages/MessagesAv.php3
-rw-r--r--languages/messages/MessagesAvk.php236
-rw-r--r--languages/messages/MessagesAy.php1
-rw-r--r--languages/messages/MessagesAz.php432
-rw-r--r--languages/messages/MessagesBa.php233
-rw-r--r--languages/messages/MessagesBar.php645
-rw-r--r--languages/messages/MessagesBcc.php310
-rw-r--r--languages/messages/MessagesBcl.php108
-rw-r--r--languages/messages/MessagesBe.php270
-rw-r--r--languages/messages/MessagesBe_tarask.php636
-rw-r--r--languages/messages/MessagesBg.php609
-rw-r--r--languages/messages/MessagesBh.php735
-rw-r--r--languages/messages/MessagesBho.php739
-rw-r--r--languages/messages/MessagesBi.php8
-rw-r--r--languages/messages/MessagesBjn.php392
-rw-r--r--languages/messages/MessagesBm.php1
-rw-r--r--languages/messages/MessagesBn.php595
-rw-r--r--languages/messages/MessagesBo.php39
-rw-r--r--languages/messages/MessagesBpy.php113
-rw-r--r--languages/messages/MessagesBqi.php31
-rw-r--r--languages/messages/MessagesBr.php664
-rw-r--r--languages/messages/MessagesBrh.php650
-rw-r--r--languages/messages/MessagesBs.php697
-rw-r--r--languages/messages/MessagesBug.php5
-rw-r--r--languages/messages/MessagesCa.php687
-rw-r--r--languages/messages/MessagesCdo.php27
-rw-r--r--languages/messages/MessagesCe.php75
-rw-r--r--languages/messages/MessagesCeb.php74
-rw-r--r--languages/messages/MessagesCh.php36
-rw-r--r--languages/messages/MessagesCkb.php339
-rw-r--r--languages/messages/MessagesCo.php12
-rw-r--r--languages/messages/MessagesCps.php40
-rw-r--r--languages/messages/MessagesCrh_cyrl.php204
-rw-r--r--languages/messages/MessagesCrh_latn.php202
-rw-r--r--languages/messages/MessagesCs.php696
-rw-r--r--languages/messages/MessagesCsb.php71
-rw-r--r--languages/messages/MessagesCu.php41
-rw-r--r--languages/messages/MessagesCv.php40
-rw-r--r--languages/messages/MessagesCy.php548
-rw-r--r--languages/messages/MessagesDa.php677
-rw-r--r--languages/messages/MessagesDe.php794
-rw-r--r--languages/messages/MessagesDe_ch.php24
-rw-r--r--languages/messages/MessagesDe_formal.php88
-rw-r--r--languages/messages/MessagesDiq.php227
-rw-r--r--languages/messages/MessagesDsb.php763
-rw-r--r--languages/messages/MessagesDtp.php1413
-rw-r--r--languages/messages/MessagesDv.php33
-rw-r--r--languages/messages/MessagesDz.php31
-rw-r--r--languages/messages/MessagesEe.php11
-rw-r--r--languages/messages/MessagesEl.php672
-rw-r--r--languages/messages/MessagesEml.php2
-rw-r--r--languages/messages/MessagesEn.php866
-rw-r--r--languages/messages/MessagesEn_gb.php11
-rw-r--r--languages/messages/MessagesEo.php698
-rw-r--r--languages/messages/MessagesEs.php774
-rw-r--r--languages/messages/MessagesEt.php649
-rw-r--r--languages/messages/MessagesEu.php478
-rw-r--r--languages/messages/MessagesExt.php117
-rw-r--r--languages/messages/MessagesFa.php722
-rw-r--r--languages/messages/MessagesFi.php771
-rw-r--r--languages/messages/MessagesFo.php641
-rw-r--r--languages/messages/MessagesFr.php683
-rw-r--r--languages/messages/MessagesFrc.php20
-rw-r--r--languages/messages/MessagesFrp.php746
-rw-r--r--languages/messages/MessagesFrr.php131
-rw-r--r--languages/messages/MessagesFur.php193
-rw-r--r--languages/messages/MessagesFy.php298
-rw-r--r--languages/messages/MessagesGa.php116
-rw-r--r--languages/messages/MessagesGag.php122
-rw-r--r--languages/messages/MessagesGan_hans.php145
-rw-r--r--languages/messages/MessagesGan_hant.php195
-rw-r--r--languages/messages/MessagesGd.php122
-rw-r--r--languages/messages/MessagesGl.php968
-rw-r--r--languages/messages/MessagesGn.php3
-rw-r--r--languages/messages/MessagesGot.php11
-rw-r--r--languages/messages/MessagesGrc.php246
-rw-r--r--languages/messages/MessagesGsw.php677
-rw-r--r--languages/messages/MessagesGu.php394
-rw-r--r--languages/messages/MessagesGv.php122
-rw-r--r--languages/messages/MessagesHa.php37
-rw-r--r--languages/messages/MessagesHak.php105
-rw-r--r--languages/messages/MessagesHaw.php47
-rw-r--r--languages/messages/MessagesHe.php779
-rw-r--r--languages/messages/MessagesHi.php255
-rw-r--r--languages/messages/MessagesHif_latn.php211
-rw-r--r--languages/messages/MessagesHil.php116
-rw-r--r--languages/messages/MessagesHr.php693
-rw-r--r--languages/messages/MessagesHsb.php702
-rw-r--r--languages/messages/MessagesHt.php207
-rw-r--r--languages/messages/MessagesHu.php842
-rw-r--r--languages/messages/MessagesHy.php241
-rw-r--r--languages/messages/MessagesIa.php718
-rw-r--r--languages/messages/MessagesId.php718
-rw-r--r--languages/messages/MessagesIe.php267
-rw-r--r--languages/messages/MessagesIg.php89
-rw-r--r--languages/messages/MessagesIke_cans.php9
-rw-r--r--languages/messages/MessagesIke_latn.php9
-rw-r--r--languages/messages/MessagesIlo.php595
-rw-r--r--languages/messages/MessagesInh.php65
-rw-r--r--languages/messages/MessagesIo.php153
-rw-r--r--languages/messages/MessagesIs.php2007
-rw-r--r--languages/messages/MessagesIt.php703
-rw-r--r--languages/messages/MessagesJa.php849
-rw-r--r--languages/messages/MessagesJam.php1114
-rw-r--r--languages/messages/MessagesJut.php35
-rw-r--r--languages/messages/MessagesJv.php172
-rw-r--r--languages/messages/MessagesKa.php549
-rw-r--r--languages/messages/MessagesKaa.php175
-rw-r--r--languages/messages/MessagesKab.php75
-rw-r--r--languages/messages/MessagesKbd_cyrl.php56
-rw-r--r--languages/messages/MessagesKhw.php1083
-rw-r--r--languages/messages/MessagesKiu.php97
-rw-r--r--languages/messages/MessagesKk_arab.php292
-rw-r--r--languages/messages/MessagesKk_cyrl.php316
-rw-r--r--languages/messages/MessagesKk_latn.php295
-rw-r--r--languages/messages/MessagesKl.php10
-rw-r--r--languages/messages/MessagesKm.php844
-rw-r--r--languages/messages/MessagesKn.php180
-rw-r--r--languages/messages/MessagesKo.php716
-rw-r--r--languages/messages/MessagesKoi.php39
-rw-r--r--languages/messages/MessagesKrc.php212
-rw-r--r--languages/messages/MessagesKri.php1
-rw-r--r--languages/messages/MessagesKrj.php1
-rw-r--r--languages/messages/MessagesKs.php18
-rw-r--r--languages/messages/MessagesKs_arab.php75
-rw-r--r--languages/messages/MessagesKs_deva.php33
-rw-r--r--languages/messages/MessagesKsh.php785
-rw-r--r--languages/messages/MessagesKu_latn.php250
-rw-r--r--languages/messages/MessagesKw.php73
-rw-r--r--languages/messages/MessagesKy.php12
-rw-r--r--languages/messages/MessagesLa.php397
-rw-r--r--languages/messages/MessagesLad.php225
-rw-r--r--languages/messages/MessagesLb.php696
-rw-r--r--languages/messages/MessagesLez.php160
-rw-r--r--languages/messages/MessagesLfn.php44
-rw-r--r--languages/messages/MessagesLg.php78
-rw-r--r--languages/messages/MessagesLi.php659
-rw-r--r--languages/messages/MessagesLij.php773
-rw-r--r--languages/messages/MessagesLiv.php783
-rw-r--r--languages/messages/MessagesLmo.php101
-rw-r--r--languages/messages/MessagesLn.php14
-rw-r--r--languages/messages/MessagesLo.php105
-rw-r--r--languages/messages/MessagesLoz.php48
-rw-r--r--languages/messages/MessagesLt.php661
-rw-r--r--languages/messages/MessagesLtg.php46
-rw-r--r--languages/messages/MessagesLv.php459
-rw-r--r--languages/messages/MessagesLzh.php185
-rw-r--r--languages/messages/MessagesLzz.php39
-rw-r--r--languages/messages/MessagesMai.php459
-rw-r--r--languages/messages/MessagesMap_bms.php24
-rw-r--r--languages/messages/MessagesMdf.php310
-rw-r--r--languages/messages/MessagesMg.php323
-rw-r--r--languages/messages/MessagesMhr.php103
-rw-r--r--languages/messages/MessagesMin.php113
-rw-r--r--languages/messages/MessagesMk.php841
-rw-r--r--languages/messages/MessagesMl.php717
-rw-r--r--languages/messages/MessagesMn.php166
-rw-r--r--languages/messages/MessagesMo.php17
-rw-r--r--languages/messages/MessagesMr.php541
-rw-r--r--languages/messages/MessagesMrj.php27
-rw-r--r--languages/messages/MessagesMs.php865
-rw-r--r--languages/messages/MessagesMt.php646
-rw-r--r--languages/messages/MessagesMwl.php45
-rw-r--r--languages/messages/MessagesMy.php242
-rw-r--r--languages/messages/MessagesMyv.php254
-rw-r--r--languages/messages/MessagesMzn.php18
-rw-r--r--languages/messages/MessagesNah.php103
-rw-r--r--languages/messages/MessagesNan.php727
-rw-r--r--languages/messages/MessagesNap.php15
-rw-r--r--languages/messages/MessagesNds.php312
-rw-r--r--languages/messages/MessagesNds_nl.php721
-rw-r--r--languages/messages/MessagesNe.php499
-rw-r--r--languages/messages/MessagesNew.php2
-rw-r--r--languages/messages/MessagesNiu.php3
-rw-r--r--languages/messages/MessagesNl.php788
-rw-r--r--languages/messages/MessagesNl_informal.php38
-rw-r--r--languages/messages/MessagesNn.php517
-rw-r--r--languages/messages/MessagesNo.php772
-rw-r--r--languages/messages/MessagesNov.php8
-rw-r--r--languages/messages/MessagesNso.php70
-rw-r--r--languages/messages/MessagesNv.php2
-rw-r--r--languages/messages/MessagesOc.php366
-rw-r--r--languages/messages/MessagesOr.php478
-rw-r--r--languages/messages/MessagesOs.php68
-rw-r--r--languages/messages/MessagesPa.php203
-rw-r--r--languages/messages/MessagesPag.php9
-rw-r--r--languages/messages/MessagesPam.php114
-rw-r--r--languages/messages/MessagesPap.php11
-rw-r--r--languages/messages/MessagesPcd.php37
-rw-r--r--languages/messages/MessagesPdc.php158
-rw-r--r--languages/messages/MessagesPdt.php25
-rw-r--r--languages/messages/MessagesPfl.php35
-rw-r--r--languages/messages/MessagesPi.php19
-rw-r--r--languages/messages/MessagesPl.php697
-rw-r--r--languages/messages/MessagesPms.php601
-rw-r--r--languages/messages/MessagesPnb.php477
-rw-r--r--languages/messages/MessagesPnt.php54
-rw-r--r--languages/messages/MessagesPrg.php716
-rw-r--r--languages/messages/MessagesPs.php298
-rw-r--r--languages/messages/MessagesPt.php689
-rw-r--r--languages/messages/MessagesPt_br.php737
-rw-r--r--languages/messages/MessagesQqq.php741
-rw-r--r--languages/messages/MessagesQu.php624
-rw-r--r--languages/messages/MessagesQug.php761
-rw-r--r--languages/messages/MessagesRgn.php29
-rw-r--r--languages/messages/MessagesRif.php39
-rw-r--r--languages/messages/MessagesRm.php392
-rw-r--r--languages/messages/MessagesRmy.php21
-rw-r--r--languages/messages/MessagesRo.php712
-rw-r--r--languages/messages/MessagesRoa_rup.php217
-rw-r--r--languages/messages/MessagesRoa_tara.php553
-rw-r--r--languages/messages/MessagesRu.php604
-rw-r--r--languages/messages/MessagesRue.php575
-rw-r--r--languages/messages/MessagesRup.php224
-rw-r--r--languages/messages/MessagesRuq_cyrl.php2
-rw-r--r--languages/messages/MessagesRuq_latn.php2
-rw-r--r--languages/messages/MessagesSa.php380
-rw-r--r--languages/messages/MessagesSah.php552
-rw-r--r--languages/messages/MessagesSc.php66
-rw-r--r--languages/messages/MessagesScn.php291
-rw-r--r--languages/messages/MessagesSco.php83
-rw-r--r--languages/messages/MessagesSd.php140
-rw-r--r--languages/messages/MessagesSdc.php230
-rw-r--r--languages/messages/MessagesSe.php89
-rw-r--r--languages/messages/MessagesSei.php32
-rw-r--r--languages/messages/MessagesSg.php63
-rw-r--r--languages/messages/MessagesSgs.php89
-rw-r--r--languages/messages/MessagesSh.php813
-rw-r--r--languages/messages/MessagesShi.php62
-rw-r--r--languages/messages/MessagesSi.php617
-rw-r--r--languages/messages/MessagesSk.php708
-rw-r--r--languages/messages/MessagesSl.php677
-rw-r--r--languages/messages/MessagesSli.php291
-rw-r--r--languages/messages/MessagesSm.php6
-rw-r--r--languages/messages/MessagesSma.php76
-rw-r--r--languages/messages/MessagesSo.php172
-rw-r--r--languages/messages/MessagesSq.php618
-rw-r--r--languages/messages/MessagesSr.php2
-rw-r--r--languages/messages/MessagesSr_ec.php964
-rw-r--r--languages/messages/MessagesSr_el.php579
-rw-r--r--languages/messages/MessagesSrn.php143
-rw-r--r--languages/messages/MessagesSs.php3
-rw-r--r--languages/messages/MessagesSt.php6
-rw-r--r--languages/messages/MessagesStq.php320
-rw-r--r--languages/messages/MessagesSu.php400
-rw-r--r--languages/messages/MessagesSv.php690
-rw-r--r--languages/messages/MessagesSw.php441
-rw-r--r--languages/messages/MessagesSzl.php397
-rw-r--r--languages/messages/MessagesTa.php268
-rw-r--r--languages/messages/MessagesTcy.php114
-rw-r--r--languages/messages/MessagesTe.php578
-rw-r--r--languages/messages/MessagesTet.php109
-rw-r--r--languages/messages/MessagesTg_cyrl.php174
-rw-r--r--languages/messages/MessagesTg_latn.php159
-rw-r--r--languages/messages/MessagesTh.php413
-rw-r--r--languages/messages/MessagesTk.php182
-rw-r--r--languages/messages/MessagesTl.php621
-rw-r--r--languages/messages/MessagesTo.php51
-rw-r--r--languages/messages/MessagesTp.php12
-rw-r--r--languages/messages/MessagesTpi.php36
-rw-r--r--languages/messages/MessagesTr.php649
-rw-r--r--languages/messages/MessagesTs.php68
-rw-r--r--languages/messages/MessagesTt_cyrl.php290
-rw-r--r--languages/messages/MessagesTt_latn.php105
-rw-r--r--languages/messages/MessagesTyv.php20
-rw-r--r--languages/messages/MessagesUdm.php3
-rw-r--r--languages/messages/MessagesUg_arab.php511
-rw-r--r--languages/messages/MessagesUg_latn.php71
-rw-r--r--languages/messages/MessagesUk.php662
-rw-r--r--languages/messages/MessagesUr.php138
-rw-r--r--languages/messages/MessagesUz.php67
-rw-r--r--languages/messages/MessagesVec.php328
-rw-r--r--languages/messages/MessagesVep.php220
-rw-r--r--languages/messages/MessagesVi.php773
-rw-r--r--languages/messages/MessagesVls.php1
-rw-r--r--languages/messages/MessagesVmf.php64
-rw-r--r--languages/messages/MessagesVo.php278
-rw-r--r--languages/messages/MessagesVot.php27
-rw-r--r--languages/messages/MessagesVro.php122
-rw-r--r--languages/messages/MessagesWa.php85
-rw-r--r--languages/messages/MessagesWar.php75
-rw-r--r--languages/messages/MessagesWo.php125
-rw-r--r--languages/messages/MessagesWuu.php59
-rw-r--r--languages/messages/MessagesXal.php54
-rw-r--r--languages/messages/MessagesXmf.php43
-rw-r--r--languages/messages/MessagesYi.php414
-rw-r--r--languages/messages/MessagesYo.php359
-rw-r--r--languages/messages/MessagesYue.php463
-rw-r--r--languages/messages/MessagesZea.php38
-rw-r--r--languages/messages/MessagesZh.php119
-rw-r--r--languages/messages/MessagesZh_hans.php762
-rw-r--r--languages/messages/MessagesZh_hant.php698
-rw-r--r--languages/messages/MessagesZh_hk.php10
-rw-r--r--languages/messages/MessagesZh_tw.php76
-rw-r--r--languages/messages/MessagesZu.php9
-rw-r--r--load.php19
-rw-r--r--maintenance/7zip.inc18
-rw-r--r--maintenance/Doxyfile11
-rw-r--r--maintenance/Maintenance.php355
-rw-r--r--maintenance/Site.php19
-rw-r--r--maintenance/addwiki.php39
-rw-r--r--maintenance/archives/patch-archive_ar_revid.sql3
-rw-r--r--maintenance/archives/patch-image_reditects.sql0
-rw-r--r--maintenance/archives/patch-math.sql28
-rw-r--r--maintenance/archives/patch-page_no_title_convert.sql0
-rw-r--r--maintenance/archives/patch-profiling.sql2
-rw-r--r--maintenance/archives/patch-up_property.sql4
-rw-r--r--maintenance/archives/patch-uploadstash.sql49
-rw-r--r--maintenance/archives/patch-user-newtalk-timestamp-null.sql1
-rw-r--r--maintenance/archives/patch-user_email_index.sql1
-rw-r--r--maintenance/archives/patch-user_former_groups.sql9
-rw-r--r--maintenance/archives/patch-user_last_timestamp.sql2
-rw-r--r--maintenance/archives/upgradeLogging.php21
-rw-r--r--maintenance/backup.inc56
-rw-r--r--maintenance/backupPrefetch.inc25
-rw-r--r--maintenance/benchmarks/Benchmarker.php23
-rw-r--r--maintenance/benchmarks/bench_HTTP_HTTPS.php21
-rw-r--r--maintenance/benchmarks/bench_delete_truncate.php78
-rw-r--r--maintenance/benchmarks/bench_if_switch.php88
-rw-r--r--maintenance/benchmarks/bench_strtr_str_replace.php50
-rw-r--r--maintenance/benchmarks/bench_wfIsWindows.php21
-rw-r--r--maintenance/benchmarks/benchmarkPurge.php (renamed from maintenance/benchmarkPurge.php)7
-rw-r--r--maintenance/cdb.php119
-rw-r--r--maintenance/changePassword.php11
-rw-r--r--maintenance/checkBadRedirects.php8
-rw-r--r--maintenance/checkSyntax.php20
-rw-r--r--maintenance/cleanupImages.php2
-rw-r--r--maintenance/cleanupSpam.php1
-rw-r--r--maintenance/cleanupTable.inc3
-rw-r--r--maintenance/cleanupUploadStash.php75
-rw-r--r--maintenance/commandLine.inc22
-rw-r--r--maintenance/compareParsers.php142
-rw-r--r--maintenance/convertLinks.php4
-rw-r--r--maintenance/convertUserOptions.php2
-rw-r--r--maintenance/createAndPromote.php10
-rw-r--r--maintenance/deleteArchivedFiles.inc9
-rw-r--r--maintenance/deleteArchivedRevisions.inc2
-rw-r--r--maintenance/deleteBatch.php10
-rw-r--r--maintenance/deleteDefaultMessages.php4
-rw-r--r--maintenance/deleteOldRevisions.php1
-rw-r--r--maintenance/deleteOrphanedRevisions.php2
-rw-r--r--maintenance/deleteSelfExternals.php2
-rw-r--r--maintenance/doMaintenance.php47
-rw-r--r--maintenance/dumpBackup.php23
-rw-r--r--maintenance/dumpInterwiki.php64
-rw-r--r--maintenance/dumpIterator.php167
-rw-r--r--maintenance/dumpTextPass.php397
-rw-r--r--maintenance/dumpUploads.php2
-rw-r--r--maintenance/edit.php22
-rw-r--r--maintenance/eval.php24
-rw-r--r--maintenance/fetchText.php3
-rw-r--r--maintenance/findHooks.php (renamed from maintenance/findhooks.php)35
-rw-r--r--maintenance/fixDoubleRedirects.php120
-rw-r--r--maintenance/fixExtLinksProtocolRelative.php81
-rw-r--r--maintenance/fixSlaveDesync.php4
-rw-r--r--maintenance/formatInstallDoc.php54
-rw-r--r--maintenance/fuzz-tester.php115
-rw-r--r--maintenance/gearman/gearmanWorker.php2
-rw-r--r--maintenance/generateSitemap.php33
-rw-r--r--maintenance/hiphop/compiler.conf5
-rw-r--r--maintenance/hiphop/extra-files35
-rw-r--r--maintenance/hiphop/make308
-rw-r--r--maintenance/hiphop/run-server75
-rw-r--r--maintenance/hiphop/server.conf30
-rw-r--r--maintenance/httpSessionDownload.php57
-rw-r--r--maintenance/ibm_db2/patch-categorylinks-better-collation.sql21
-rw-r--r--maintenance/ibm_db2/patch-change_tag-indexes.sql5
-rw-r--r--maintenance/ibm_db2/patch-change_tag.sql8
-rw-r--r--maintenance/ibm_db2/patch-change_tag_summary.sql7
-rw-r--r--maintenance/ibm_db2/patch-change_valid_tag.sql3
-rw-r--r--maintenance/ibm_db2/patch-cl_collation-field.sql1
-rw-r--r--maintenance/ibm_db2/patch-cl_sortkey_prefix-field.sql1
-rw-r--r--maintenance/ibm_db2/patch-cl_type-field.sql1
-rw-r--r--maintenance/ibm_db2/patch-external_user.sql7
-rw-r--r--maintenance/ibm_db2/patch-ipb_allow_usertalk.sql23
-rw-r--r--maintenance/ibm_db2/patch-iw_api-field.sql1
-rw-r--r--maintenance/ibm_db2/patch-iw_api_and_wikiid.sql8
-rw-r--r--maintenance/ibm_db2/patch-iw_wikiid-field.sql1
-rw-r--r--maintenance/ibm_db2/patch-iwlinks.sql7
-rw-r--r--maintenance/ibm_db2/patch-l10n_cache.sql8
-rw-r--r--maintenance/ibm_db2/patch-log_search-rename-index.sql8
-rw-r--r--maintenance/ibm_db2/patch-log_search.sql8
-rw-r--r--maintenance/ibm_db2/patch-log_user_text.sql17
-rw-r--r--maintenance/ibm_db2/patch-module_deps.sql6
-rw-r--r--maintenance/ibm_db2/patch-msg_resource.sql8
-rw-r--r--maintenance/ibm_db2/patch-msg_resource_links.sql6
-rw-r--r--maintenance/ibm_db2/patch-rd_interwiki.sql8
-rw-r--r--maintenance/ibm_db2/patch-ss_active_users.sql11
-rw-r--r--maintenance/ibm_db2/patch-ul_value.sql3
-rw-r--r--maintenance/ibm_db2/patch-uq61_msg_resource_links.sql7
-rw-r--r--maintenance/ibm_db2/patch-uq81_msg_resource.sql7
-rw-r--r--maintenance/ibm_db2/patch-uq96_module_deps.sql7
-rw-r--r--maintenance/ibm_db2/patch-user_properties.sql10
-rw-r--r--maintenance/ibm_db2/tables.sql78
-rw-r--r--maintenance/importDump.php162
-rw-r--r--maintenance/importImages.inc18
-rw-r--r--maintenance/importImages.php29
-rw-r--r--maintenance/importSiteScripts.php76
-rw-r--r--maintenance/importTextFile.php15
-rw-r--r--maintenance/importUseModWiki.php533
-rw-r--r--maintenance/importUseModWikipedia.php892
-rw-r--r--maintenance/initEditCount.php2
-rw-r--r--maintenance/initStats.php2
-rw-r--r--maintenance/install-utils.inc31
-rw-r--r--maintenance/install.php14
-rw-r--r--maintenance/jsparse.php72
-rw-r--r--maintenance/lag.php17
-rw-r--r--maintenance/language/StatOutputs.php25
-rw-r--r--maintenance/language/checkDupeMessages.php28
-rw-r--r--maintenance/language/checkExtensions.php15
-rw-r--r--maintenance/language/checkLanguage.inc23
-rw-r--r--maintenance/language/checkLanguage.php15
-rw-r--r--maintenance/language/function-list.php15
-rw-r--r--maintenance/language/generateCollationData.php11
-rw-r--r--maintenance/language/generateNormalizerData.php21
-rw-r--r--maintenance/language/languages.inc19
-rw-r--r--maintenance/language/messageTypes.inc228
-rw-r--r--maintenance/language/messages.inc394
-rw-r--r--maintenance/language/rebuildLanguage.php26
-rw-r--r--maintenance/language/transstat.php20
-rw-r--r--maintenance/language/validate.php17
-rw-r--r--maintenance/language/writeMessagesArray.inc15
-rw-r--r--maintenance/mcc.php17
-rw-r--r--maintenance/mergeMessageFileList.php23
-rw-r--r--maintenance/migrateUserGroup.php2
-rw-r--r--maintenance/minify.php18
-rw-r--r--maintenance/moveBatch.php2
-rw-r--r--maintenance/mssql/tables.sql12
-rw-r--r--maintenance/mwdocgen.php51
-rw-r--r--maintenance/namespaceDupes.php13
-rw-r--r--maintenance/nextJobDB.php85
-rw-r--r--maintenance/nukePage.php1
-rw-r--r--maintenance/oracle/alterSharedConstraints.php90
-rw-r--r--maintenance/oracle/archives/patch-config.sql8
-rw-r--r--maintenance/oracle/archives/patch-up_property.sql3
-rw-r--r--maintenance/oracle/archives/patch-uploadstash.sql25
-rw-r--r--maintenance/oracle/archives/patch-user_email_index.sql4
-rw-r--r--maintenance/oracle/archives/patch-user_former_groups.sql9
-rw-r--r--maintenance/oracle/archives/patch_rebuild_dupfunc.sql146
-rw-r--r--maintenance/oracle/tables.sql103
-rw-r--r--maintenance/orphans.php2
-rw-r--r--maintenance/ourusers.php15
-rw-r--r--maintenance/populateCategory.php20
-rw-r--r--maintenance/populateLogSearch.php10
-rw-r--r--maintenance/populateLogUsertext.php4
-rw-r--r--maintenance/populateParentId.php2
-rw-r--r--maintenance/populateRevisionLength.php4
-rw-r--r--maintenance/populateSha1.php4
-rw-r--r--maintenance/postgres/archives/patch-user_former_groups.sql5
-rw-r--r--maintenance/postgres/compare_schemas.pl6
-rw-r--r--maintenance/postgres/mediawiki_mysql2postgres.pl26
-rw-r--r--maintenance/postgres/tables.sql41
-rw-r--r--maintenance/preprocessDump.php86
-rw-r--r--maintenance/preprocessorFuzzTest.php35
-rw-r--r--maintenance/protect.php2
-rw-r--r--maintenance/proxy_check.php (renamed from includes/proxy_check.php)0
-rw-r--r--maintenance/purgeList.php78
-rw-r--r--maintenance/purgeOldText.inc16
-rw-r--r--maintenance/purgeParserCache.php43
-rw-r--r--maintenance/purgeStaleMemcachedText.php34
-rw-r--r--maintenance/reassignEdits.php4
-rw-r--r--maintenance/rebuildFileCache.php25
-rw-r--r--maintenance/rebuildImages.php13
-rw-r--r--maintenance/rebuildInterwiki.php34
-rw-r--r--maintenance/rebuildLocalisationCache.php15
-rw-r--r--maintenance/rebuildall.php3
-rw-r--r--maintenance/rebuildtextindex.php9
-rw-r--r--maintenance/refreshImageMetadata.php199
-rw-r--r--maintenance/refreshLinks.php88
-rw-r--r--maintenance/resetUserTokens.php73
-rw-r--r--maintenance/runBatchedQuery.php5
-rw-r--r--maintenance/runJobs.php13
-rw-r--r--maintenance/sqlite.inc21
-rw-r--r--maintenance/sqlite.php9
-rw-r--r--maintenance/sqlite/archives/patch-archive_kill_ar_page_revid.sql3
-rw-r--r--maintenance/sqlite/archives/patch-rename-iwl_prefix.sql2
-rw-r--r--maintenance/stats.php44
-rw-r--r--maintenance/storage/checkStorage.php16
-rw-r--r--maintenance/storage/compressOld.inc300
-rw-r--r--maintenance/storage/compressOld.php398
-rw-r--r--maintenance/storage/fixBug20757.php23
-rw-r--r--maintenance/storage/moveToExternal.php17
-rw-r--r--maintenance/storage/recompressTracked.php22
-rw-r--r--maintenance/storage/resolveStubs.php20
-rw-r--r--maintenance/storage/storageTypeStats.php19
-rw-r--r--maintenance/storage/testCompression.php20
-rw-r--r--maintenance/storage/trackBlobs.php26
-rw-r--r--maintenance/tables.sql92
-rw-r--r--maintenance/tests/.svnignore6
-rw-r--r--maintenance/tests/selenium/SeleniumTestCase.php103
-rw-r--r--maintenance/tests/selenium/selenium_settings.ini.php52.sample23
-rw-r--r--maintenance/tests/selenium/suites/MediaWikExtraTestSuite.php20
-rw-r--r--maintenance/tests/selenium/suites/MediaWikiEditorTestSuite.php18
-rw-r--r--maintenance/tests/selenium/suites/MyContributionsTestCase.php76
-rw-r--r--maintenance/tests/selenium/suites/MyWatchListTestCase.php73
-rw-r--r--maintenance/tests/selenium/suites/SimpleSeleniumConfig.php15
-rw-r--r--maintenance/undelete.php23
-rw-r--r--maintenance/update.php26
-rw-r--r--maintenance/updateArticleCount.php66
-rw-r--r--maintenance/updateCollation.php62
-rw-r--r--maintenance/updateDoubleWidthSearch.php3
-rw-r--r--maintenance/updateRestrictions.php4
-rw-r--r--maintenance/updateSearchIndex.php11
-rw-r--r--maintenance/updateSpecialPages.php25
-rw-r--r--maintenance/upgrade1_5.php31
-rw-r--r--maintenance/userDupes.inc40
-rw-r--r--maintenance/userOptions.inc17
-rw-r--r--maintenance/userOptions.php15
-rw-r--r--maintenance/users.sql12
-rw-r--r--maintenance/waitForSlave.php2
-rw-r--r--maintenance/wikipedia-interwiki.sql1
-rw-r--r--maintenance/wiktionary-interwiki.sql1
-rw-r--r--math/.svnignore7
-rw-r--r--math/Makefile87
-rw-r--r--math/README119
-rw-r--r--math/TODO3
-rw-r--r--math/html.ml142
-rw-r--r--math/html.mli5
-rw-r--r--math/lexer.mll108
-rw-r--r--math/mathml.ml20
-rw-r--r--math/mathml.mli1
-rw-r--r--math/parser.mly118
-rw-r--r--math/render.ml58
-rw-r--r--math/render_info.mli20
-rw-r--r--math/tex.mli23
-rw-r--r--math/texutil.ml760
-rw-r--r--math/texutil.mli11
-rw-r--r--math/texvc.ml58
-rw-r--r--math/texvc_cgi.ml62
-rw-r--r--math/texvc_test.ml24
-rw-r--r--math/texvc_tex.ml3
-rw-r--r--math/util.ml26
-rw-r--r--mw-config/index.php6
-rw-r--r--opensearch_desc.php6
-rw-r--r--php5.php59
-rw-r--r--profileinfo.php8
-rw-r--r--redirect.php6
-rw-r--r--resources/Resources.php324
-rw-r--r--resources/jquery.tipsy/jquery.tipsy.css1
-rw-r--r--resources/jquery.tipsy/jquery.tipsy.js18
-rw-r--r--resources/jquery.ui/jquery.ui.accordion.js609
-rw-r--r--resources/jquery.ui/jquery.ui.autocomplete.js255
-rw-r--r--resources/jquery.ui/jquery.ui.button.js56
-rw-r--r--resources/jquery.ui/jquery.ui.core.js324
-rw-r--r--resources/jquery.ui/jquery.ui.dialog.js302
-rw-r--r--resources/jquery.ui/jquery.ui.draggable.js38
-rw-r--r--resources/jquery.ui/jquery.ui.droppable.js20
-rw-r--r--resources/jquery.ui/jquery.ui.mouse.js33
-rw-r--r--resources/jquery.ui/jquery.ui.position.js89
-rw-r--r--resources/jquery.ui/jquery.ui.progressbar.js63
-rw-r--r--resources/jquery.ui/jquery.ui.resizable.js73
-rw-r--r--resources/jquery.ui/jquery.ui.selectable.js15
-rw-r--r--resources/jquery.ui/jquery.ui.slider.js24
-rw-r--r--resources/jquery.ui/jquery.ui.sortable.js52
-rw-r--r--resources/jquery.ui/jquery.ui.tabs.js731
-rw-r--r--resources/jquery.ui/jquery.ui.widget.js88
-rw-r--r--resources/jquery.ui/themes/default/jquery.ui.autocomplete.css1
-rw-r--r--resources/jquery.ui/themes/default/jquery.ui.datepicker.css22
-rw-r--r--resources/jquery.ui/themes/vector/jquery.ui.autocomplete.css1
-rw-r--r--resources/jquery.ui/themes/vector/jquery.ui.button.css62
-rw-r--r--resources/jquery.ui/themes/vector/jquery.ui.datepicker.css26
-rw-r--r--resources/jquery.ui/themes/vector/jquery.ui.theme.css4
-rw-r--r--resources/jquery/images/sort_both.gifbin0 -> 1184 bytes
-rw-r--r--resources/jquery/images/sort_down.gifbin0 -> 1174 bytes
-rw-r--r--resources/jquery/images/sort_none.gif (renamed from skins/common/images/sort_none.gif)bin462 -> 462 bytes
-rw-r--r--resources/jquery/images/sort_up.gifbin0 -> 1174 bytes
-rw-r--r--resources/jquery/jquery.appear.js138
-rw-r--r--resources/jquery/jquery.async.js33
-rw-r--r--resources/jquery/jquery.autoEllipsis.js78
-rw-r--r--resources/jquery/jquery.byteLength.js19
-rw-r--r--resources/jquery/jquery.byteLimit.js56
-rw-r--r--resources/jquery/jquery.checkboxShiftClick.js14
-rw-r--r--resources/jquery/jquery.client.js390
-rw-r--r--resources/jquery/jquery.color.js125
-rw-r--r--resources/jquery/jquery.colorUtil.js193
-rw-r--r--resources/jquery/jquery.cookie.js87
-rw-r--r--resources/jquery/jquery.form.js791
-rw-r--r--resources/jquery/jquery.getAttrs.js24
-rw-r--r--resources/jquery/jquery.hoverIntent.js111
-rw-r--r--resources/jquery/jquery.js7038
-rw-r--r--resources/jquery/jquery.json.js180
-rw-r--r--resources/jquery/jquery.localize.js105
-rw-r--r--resources/jquery/jquery.makeCollapsible.css14
-rw-r--r--resources/jquery/jquery.makeCollapsible.js339
-rw-r--r--resources/jquery/jquery.messageBox.css15
-rw-r--r--resources/jquery/jquery.messageBox.js98
-rw-r--r--resources/jquery/jquery.mwPrototypes.js120
-rw-r--r--resources/jquery/jquery.placeholder.js32
-rw-r--r--resources/jquery/jquery.qunit.completenessTest.js267
-rw-r--r--resources/jquery/jquery.qunit.css225
-rw-r--r--resources/jquery/jquery.qunit.js1442
-rw-r--r--resources/jquery/jquery.suggestions.css2
-rw-r--r--resources/jquery/jquery.suggestions.js18
-rw-r--r--resources/jquery/jquery.tabIndex.js45
-rw-r--r--resources/jquery/jquery.tablesorter.css17
-rw-r--r--resources/jquery/jquery.tablesorter.js910
-rw-r--r--resources/jquery/jquery.textSelection.js183
-rw-r--r--resources/mediawiki.action/mediawiki.action.edit.js115
-rw-r--r--resources/mediawiki.action/mediawiki.action.history.diff.css (renamed from skins/common/diff.css)24
-rw-r--r--resources/mediawiki.action/mediawiki.action.history.js52
-rw-r--r--resources/mediawiki.action/mediawiki.action.view.metadata.js39
-rw-r--r--resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js2
-rw-r--r--resources/mediawiki.action/mediawiki.action.watch.ajax.js174
-rw-r--r--resources/mediawiki.language/languages/nl.js8
-rw-r--r--resources/mediawiki.language/languages/pt-br.js6
-rw-r--r--resources/mediawiki.language/languages/pt.js8
-rw-r--r--resources/mediawiki.language/mediawiki.language.js20
-rw-r--r--resources/mediawiki.libs/mediawiki.libs.jpegmeta.js731
-rw-r--r--resources/mediawiki.page/images/AJAXCategorySprite.pngbin0 -> 384 bytes
-rw-r--r--resources/mediawiki.page/mediawiki.page.ajaxCategories.css64
-rw-r--r--resources/mediawiki.page/mediawiki.page.ready.js24
-rw-r--r--resources/mediawiki.page/mediawiki.page.startup.js10
-rw-r--r--resources/mediawiki.special/mediawiki.special.block.js46
-rw-r--r--resources/mediawiki.special/mediawiki.special.changeslist.css47
-rw-r--r--resources/mediawiki.special/mediawiki.special.css274
-rw-r--r--resources/mediawiki.special/mediawiki.special.js1
-rw-r--r--resources/mediawiki.special/mediawiki.special.movePage.js5
-rw-r--r--resources/mediawiki.special/mediawiki.special.preferences.js172
-rw-r--r--resources/mediawiki.special/mediawiki.special.recentchanges.js39
-rw-r--r--resources/mediawiki.special/mediawiki.special.search.css (renamed from skins/common/search.css)4
-rw-r--r--resources/mediawiki.special/mediawiki.special.search.js32
-rw-r--r--resources/mediawiki.special/mediawiki.special.undelete.js10
-rw-r--r--resources/mediawiki.special/mediawiki.special.upload.js272
-rw-r--r--resources/mediawiki.util/mediawiki.util.js401
-rw-r--r--resources/mediawiki.util/mediawiki.util.test.js172
-rw-r--r--resources/mediawiki/mediawiki.Title.js334
-rw-r--r--resources/mediawiki/mediawiki.Uri.js260
-rw-r--r--resources/mediawiki/mediawiki.htmlform.js64
-rw-r--r--resources/mediawiki/mediawiki.js834
-rw-r--r--resources/mediawiki/mediawiki.log.js29
-rw-r--r--resources/mediawiki/mediawiki.user.js181
-rw-r--r--resources/mediawiki/mediawiki.util.js598
-rw-r--r--serialized/Utf8Case.ser2
-rw-r--r--serialized/first-letters-root.ser2
-rw-r--r--skins/ArchLinux.php306
-rw-r--r--skins/Chick.php6
-rw-r--r--skins/CologneBlue.php173
-rw-r--r--skins/Modern.php99
-rw-r--r--skins/MonoBook.php299
-rw-r--r--skins/Nostalgia.php46
-rw-r--r--skins/Simple.php9
-rw-r--r--skins/Standard.php149
-rw-r--r--skins/Vector.php609
-rw-r--r--skins/archlinux/IE60Fixes.css18
-rw-r--r--skins/archlinux/IE70Fixes.css14
-rw-r--r--skins/archlinux/external-ltr.png (renamed from skins/archlinux/external.png)bin143 -> 143 bytes
-rw-r--r--skins/archlinux/main.css114
-rw-r--r--skins/archlinux/print.css3
-rw-r--r--skins/archlinux/rtl.css251
-rw-r--r--skins/chick/main.css26
-rw-r--r--skins/cologneblue/screen.css (renamed from skins/common/cologneblue.css)22
-rw-r--r--skins/common/IEFixes.js4
-rw-r--r--skins/common/Makefile2
-rw-r--r--skins/common/ajax.js2
-rw-r--r--skins/common/ajaxwatch.js120
-rw-r--r--skins/common/block.js89
-rw-r--r--skins/common/commonPrint.css36
-rw-r--r--skins/common/common_rtl.css59
-rw-r--r--skins/common/config.css22
-rw-r--r--skins/common/config.js2
-rw-r--r--skins/common/diff.js20
-rw-r--r--skins/common/edit.js231
-rw-r--r--skins/common/enhancedchanges.js40
-rw-r--r--skins/common/history.js77
-rw-r--r--skins/common/htmlform.js40
-rw-r--r--skins/common/images/cc-by.pngbin0 -> 4739 bytes
-rw-r--r--skins/common/images/critical-32.pngbin2395 -> 1914 bytes
-rw-r--r--skins/common/images/download-32.pngbin2057 -> 1846 bytes
-rw-r--r--skins/common/images/info-32.pngbin2159 -> 1940 bytes
-rw-r--r--skins/common/images/magnify-clip-rtl.pngbin0 -> 252 bytes
-rw-r--r--skins/common/images/sort_down.gifbin464 -> 0 bytes
-rw-r--r--skins/common/images/sort_up.gifbin466 -> 0 bytes
-rw-r--r--skins/common/images/tick-32.pngbin1457 -> 1137 bytes
-rw-r--r--skins/common/images/warning-32.pngbin1895 -> 1349 bytes
-rw-r--r--skins/common/metadata.js53
-rw-r--r--skins/common/mwsuggest.js46
-rw-r--r--skins/common/oldshared.css32
-rw-r--r--skins/common/prefs.js138
-rw-r--r--skins/common/preview.js16
-rw-r--r--skins/common/protect.js2
-rw-r--r--skins/common/search.js50
-rw-r--r--skins/common/shared.css645
-rw-r--r--skins/common/upload.js49
-rw-r--r--skins/common/wikibits.js440
-rw-r--r--skins/modern/main.css74
-rw-r--r--skins/modern/rtl.css162
-rw-r--r--skins/monobook/IE60Fixes.css18
-rw-r--r--skins/monobook/IE70Fixes.css14
-rw-r--r--skins/monobook/external-ltr.png (renamed from skins/monobook/external.png)bin143 -> 143 bytes
-rw-r--r--skins/monobook/main.css114
-rw-r--r--skins/monobook/rtl.css251
-rw-r--r--skins/nostalgia/screen.css (renamed from skins/common/nostalgia.css)3
-rw-r--r--skins/simple/main.css43
-rw-r--r--skins/vector/images/arrow-down-icon.pngbin188 -> 241 bytes
-rw-r--r--skins/vector/images/user-icon.pngbin308 -> 584 bytes
-rw-r--r--skins/vector/screen.css120
-rw-r--r--skins/vector/vector.js19
-rw-r--r--tests/.htaccess (renamed from math/.htaccess)0
-rw-r--r--tests/RunSeleniumTests.php (renamed from maintenance/tests/RunSeleniumTests.php)29
-rw-r--r--tests/TestsAutoLoader.php33
-rw-r--r--tests/parser/extraParserTests.txt (renamed from maintenance/tests/parser/ExtraParserTests.txt)bin1261 -> 1261 bytes
-rw-r--r--tests/parser/parserTest.inc (renamed from maintenance/tests/parser/parserTest.inc)197
-rw-r--r--tests/parser/parserTests.txt (renamed from maintenance/tests/parser/parserTests.txt)893
-rw-r--r--tests/parser/parserTestsParserHook.php (renamed from maintenance/tests/parser/parserTestsParserHook.php)6
-rw-r--r--tests/parser/parserTestsStaticParserHook.php (renamed from maintenance/tests/parser/parserTestsStaticParserHook.php)4
-rw-r--r--tests/parser/preprocess/All_system_messages.expected5646
-rw-r--r--tests/parser/preprocess/All_system_messages.txt5645
-rw-r--r--tests/parser/preprocess/Factorial.expected17
-rw-r--r--tests/parser/preprocess/Factorial.txt16
-rw-r--r--tests/parser/preprocess/Fundraising.expected18
-rw-r--r--tests/parser/preprocess/Fundraising.txt17
-rw-r--r--tests/parser/preprocess/QuoteQuran.expected140
-rw-r--r--tests/parser/preprocess/QuoteQuran.txt139
-rw-r--r--tests/parserTests.php (renamed from maintenance/tests/parserTests.php)5
-rw-r--r--tests/phpunit/Makefile82
-rw-r--r--tests/phpunit/MediaWikiLangTestCase.php33
-rw-r--r--tests/phpunit/MediaWikiPHPUnitCommand.php46
-rw-r--r--tests/phpunit/MediaWikiTestCase.php239
-rw-r--r--tests/phpunit/README53
-rw-r--r--tests/phpunit/TODO10
-rw-r--r--tests/phpunit/bootstrap.php32
-rw-r--r--tests/phpunit/data/media/1bit-png.pngbin0 -> 167 bytes
-rw-r--r--tests/phpunit/data/media/Animated_PNG_example_bouncing_beach_ball.pngbin0 -> 72209 bytes
-rw-r--r--tests/phpunit/data/media/Gtk-media-play-ltr.svg35
-rw-r--r--tests/phpunit/data/media/Png-native-test.pngbin0 -> 4665 bytes
-rw-r--r--tests/phpunit/data/media/QA_icon.svg77
-rw-r--r--tests/phpunit/data/media/README38
-rw-r--r--tests/phpunit/data/media/US_states_by_total_state_tax_revenue.svg248
-rw-r--r--tests/phpunit/data/media/Wikimedia-logo.svg14
-rw-r--r--tests/phpunit/data/media/Xmp-exif-multilingual_test.jpgbin0 -> 12544 bytes
-rw-r--r--tests/phpunit/data/media/animated-xmp.gifbin0 -> 3864 bytes
-rw-r--r--tests/phpunit/data/media/animated.gifbin0 -> 497 bytes
-rw-r--r--tests/phpunit/data/media/broken_exif_date.jpgbin0 -> 3233 bytes
-rw-r--r--tests/phpunit/data/media/exif-gps.jpgbin0 -> 665 bytes
-rw-r--r--tests/phpunit/data/media/exif-user-comment.jpgbin0 -> 484 bytes
-rw-r--r--tests/phpunit/data/media/greyscale-na-png.pngbin0 -> 365 bytes
-rw-r--r--tests/phpunit/data/media/greyscale-png.pngbin0 -> 415 bytes
-rw-r--r--tests/phpunit/data/media/iptc-timetest-invalid.jpgbin0 -> 9573 bytes
-rw-r--r--tests/phpunit/data/media/iptc-timetest.jpgbin0 -> 9573 bytes
-rw-r--r--tests/phpunit/data/media/jpeg-comment-binary.jpgbin0 -> 448 bytes
-rw-r--r--tests/phpunit/data/media/jpeg-comment-iso8859-1.jpgbin0 -> 447 bytes
-rw-r--r--tests/phpunit/data/media/jpeg-comment-multiple.jpgbin0 -> 431 bytes
-rw-r--r--tests/phpunit/data/media/jpeg-comment-utf.jpgbin0 -> 445 bytes
-rw-r--r--tests/phpunit/data/media/jpeg-iptc-bad-hash.jpgbin0 -> 499 bytes
-rw-r--r--tests/phpunit/data/media/jpeg-iptc-good-hash.jpgbin0 -> 499 bytes
-rw-r--r--tests/phpunit/data/media/jpeg-padding-even.jpgbin0 -> 450 bytes
-rw-r--r--tests/phpunit/data/media/jpeg-padding-odd.jpgbin0 -> 451 bytes
-rw-r--r--tests/phpunit/data/media/jpeg-xmp-alt.jpgbin0 -> 3255 bytes
-rw-r--r--tests/phpunit/data/media/jpeg-xmp-psir.jpgbin0 -> 3308 bytes
-rw-r--r--tests/phpunit/data/media/jpeg-xmp-psir.xmp35
-rw-r--r--tests/phpunit/data/media/landscape-plain.jpgbin0 -> 38771 bytes
-rw-r--r--tests/phpunit/data/media/nonanimated.gifbin0 -> 200 bytes
-rw-r--r--tests/phpunit/data/media/portrait-rotated.jpgbin0 -> 38577 bytes
-rw-r--r--tests/phpunit/data/media/rgb-na-png.pngbin0 -> 593 bytes
-rw-r--r--tests/phpunit/data/media/rgb-png.pngbin0 -> 663 bytes
-rw-r--r--tests/phpunit/data/media/test.jpgbin0 -> 437 bytes
-rw-r--r--tests/phpunit/data/media/test.tiffbin0 -> 566 bytes
-rw-r--r--tests/phpunit/data/media/xmp.pngbin0 -> 582 bytes
-rw-r--r--tests/phpunit/data/xmp/1.result.php8
-rw-r--r--tests/phpunit/data/xmp/1.xmp11
-rw-r--r--tests/phpunit/data/xmp/2.result.php8
-rw-r--r--tests/phpunit/data/xmp/2.xmp12
-rw-r--r--tests/phpunit/data/xmp/3-invalid.result.php7
-rw-r--r--tests/phpunit/data/xmp/3-invalid.xmp31
-rw-r--r--tests/phpunit/data/xmp/3.result.php8
-rw-r--r--tests/phpunit/data/xmp/3.xmp29
-rw-r--r--tests/phpunit/data/xmp/4.result.php7
-rw-r--r--tests/phpunit/data/xmp/4.xmp22
-rw-r--r--tests/phpunit/data/xmp/5.result.php7
-rw-r--r--tests/phpunit/data/xmp/5.xmp16
-rw-r--r--tests/phpunit/data/xmp/6.result.php8
-rw-r--r--tests/phpunit/data/xmp/6.xmp18
-rw-r--r--tests/phpunit/data/xmp/7.result.php52
-rw-r--r--tests/phpunit/data/xmp/7.xmp67
-rw-r--r--tests/phpunit/data/xmp/README3
-rw-r--r--tests/phpunit/data/xmp/bag-for-seq.result.php10
-rw-r--r--tests/phpunit/data/xmp/bag-for-seq.xmp1
-rw-r--r--tests/phpunit/data/xmp/flash.result.php8
-rw-r--r--tests/phpunit/data/xmp/flash.xmp11
-rw-r--r--tests/phpunit/data/xmp/invalid-child-not-struct.result.php7
-rw-r--r--tests/phpunit/data/xmp/invalid-child-not-struct.xmp12
-rw-r--r--tests/phpunit/data/xmp/no-namespace.result.php7
-rw-r--r--tests/phpunit/data/xmp/no-namespace.xmp11
-rw-r--r--tests/phpunit/data/xmp/no-recognized-props.result.php2
-rw-r--r--tests/phpunit/data/xmp/no-recognized-props.xmp8
-rw-r--r--tests/phpunit/data/xmp/utf16BE.result.php12
-rw-r--r--tests/phpunit/data/xmp/utf16BE.xmpbin0 -> 930 bytes
-rw-r--r--tests/phpunit/data/xmp/utf16LE.result.php12
-rw-r--r--tests/phpunit/data/xmp/utf16LE.xmpbin0 -> 930 bytes
-rw-r--r--tests/phpunit/data/xmp/utf32BE.result.php12
-rw-r--r--tests/phpunit/data/xmp/utf32BE.xmpbin0 -> 1856 bytes
-rw-r--r--tests/phpunit/data/xmp/utf32LE.result.php12
-rw-r--r--tests/phpunit/data/xmp/utf32LE.xmpbin0 -> 1856 bytes
-rw-r--r--tests/phpunit/data/xmp/xmpExt.result.php8
-rw-r--r--tests/phpunit/data/xmp/xmpExt.xmp13
-rw-r--r--tests/phpunit/data/xmp/xmpExt2.xmp8
-rw-r--r--tests/phpunit/data/zip/cd-gap.zipbin0 -> 182 bytes
-rw-r--r--tests/phpunit/data/zip/cd-truncated.zipbin0 -> 171 bytes
-rw-r--r--tests/phpunit/data/zip/class-trailing-null.zipbin0 -> 173 bytes
-rw-r--r--tests/phpunit/data/zip/class-trailing-slash.zipbin0 -> 173 bytes
-rw-r--r--tests/phpunit/data/zip/class.zipbin0 -> 173 bytes
-rw-r--r--tests/phpunit/data/zip/empty.zipbin0 -> 22 bytes
-rw-r--r--tests/phpunit/data/zip/looks-like-zip64.zipbin0 -> 173 bytes
-rw-r--r--tests/phpunit/data/zip/nosig.zipbin0 -> 173 bytes
-rw-r--r--tests/phpunit/data/zip/split.zipbin0 -> 196 bytes
-rw-r--r--tests/phpunit/data/zip/trail.zipbin0 -> 181 bytes
-rw-r--r--tests/phpunit/data/zip/wrong-cd-start-disk.zipbin0 -> 173 bytes
-rw-r--r--tests/phpunit/data/zip/wrong-central-entry-sig.zipbin0 -> 173 bytes
-rw-r--r--tests/phpunit/includes/ArticleTablesTest.php34
-rw-r--r--tests/phpunit/includes/ArticleTest.php82
-rw-r--r--tests/phpunit/includes/BlockTest.php124
-rw-r--r--tests/phpunit/includes/CdbTest.php84
-rw-r--r--tests/phpunit/includes/ExternalStoreTest.php32
-rw-r--r--tests/phpunit/includes/ExtraParserTest.php113
-rw-r--r--tests/phpunit/includes/FauxResponseTest.php70
-rw-r--r--tests/phpunit/includes/FormOptionsInitializationTest.php85
-rw-r--r--tests/phpunit/includes/FormOptionsTest.php90
-rw-r--r--tests/phpunit/includes/GlobalFunctions/GlobalTest.php902
-rw-r--r--tests/phpunit/includes/GlobalFunctions/README2
-rw-r--r--tests/phpunit/includes/GlobalFunctions/wfExpandUrl.php78
-rw-r--r--tests/phpunit/includes/GlobalFunctions/wfUrlencodeTest.php120
-rw-r--r--tests/phpunit/includes/HooksTest.php102
-rw-r--r--tests/phpunit/includes/HtmlTest.php90
-rw-r--r--tests/phpunit/includes/HttpTest.php618
-rw-r--r--tests/phpunit/includes/IPTest.php508
-rw-r--r--tests/phpunit/includes/ImageFunctionsTest.php48
-rw-r--r--tests/phpunit/includes/JsonTest.php33
-rw-r--r--tests/phpunit/includes/LanguageConverterTest.php130
-rw-r--r--tests/phpunit/includes/LicensesTest.php22
-rw-r--r--tests/phpunit/includes/LocalFileTest.php99
-rw-r--r--tests/phpunit/includes/MWFunctionTest.php86
-rw-r--r--tests/phpunit/includes/MWNamespaceTest.php460
-rw-r--r--tests/phpunit/includes/MessageTest.php62
-rw-r--r--tests/phpunit/includes/ParserOptionsTest.php36
-rw-r--r--tests/phpunit/includes/Providers.php44
-rw-r--r--tests/phpunit/includes/ResourceLoaderTest.php91
-rw-r--r--tests/phpunit/includes/RevisionTest.php125
-rw-r--r--tests/phpunit/includes/SampleTest.php98
-rw-r--r--tests/phpunit/includes/SanitizerTest.php113
-rw-r--r--tests/phpunit/includes/SeleniumConfigurationTest.php228
-rw-r--r--tests/phpunit/includes/SiteConfigurationTest.php311
-rw-r--r--tests/phpunit/includes/TimeAdjustTest.php51
-rw-r--r--tests/phpunit/includes/TitlePermissionTest.php654
-rw-r--r--tests/phpunit/includes/TitleTest.php79
-rw-r--r--tests/phpunit/includes/UserIsValidEmailAddrTest.php79
-rw-r--r--tests/phpunit/includes/UserTest.php58
-rw-r--r--tests/phpunit/includes/WebRequestTest.php88
-rw-r--r--tests/phpunit/includes/XmlJsTest.php9
-rw-r--r--tests/phpunit/includes/XmlSelectTest.php139
-rw-r--r--tests/phpunit/includes/XmlTest.php304
-rw-r--r--tests/phpunit/includes/ZipDirectoryReaderTest.php79
-rw-r--r--tests/phpunit/includes/api/ApiBlockTest.php62
-rw-r--r--tests/phpunit/includes/api/ApiPurgeTest.php41
-rw-r--r--tests/phpunit/includes/api/ApiQueryTest.php67
-rw-r--r--tests/phpunit/includes/api/ApiTest.php277
-rw-r--r--tests/phpunit/includes/api/ApiTestCase.php139
-rw-r--r--tests/phpunit/includes/api/ApiTestCaseUpload.php114
-rw-r--r--tests/phpunit/includes/api/ApiTestUser.php59
-rw-r--r--tests/phpunit/includes/api/ApiUploadTest.php433
-rw-r--r--tests/phpunit/includes/api/ApiWatchTest.php179
-rw-r--r--tests/phpunit/includes/api/RandomImageGenerator.php473
-rw-r--r--tests/phpunit/includes/api/format/ApiFormatPhpTest.php19
-rw-r--r--tests/phpunit/includes/api/format/ApiFormatTestBase.php22
-rw-r--r--tests/phpunit/includes/api/generateRandomImages.php47
-rw-r--r--tests/phpunit/includes/api/words.txt1000
-rw-r--r--tests/phpunit/includes/db/DatabaseSqliteTest.php312
-rw-r--r--tests/phpunit/includes/db/DatabaseTest.php95
-rw-r--r--tests/phpunit/includes/db/sqlite/tables-1.13.sql342
-rw-r--r--tests/phpunit/includes/db/sqlite/tables-1.15.sql454
-rw-r--r--tests/phpunit/includes/db/sqlite/tables-1.16.sql483
-rw-r--r--tests/phpunit/includes/db/sqlite/tables-1.17.sql516
-rw-r--r--tests/phpunit/includes/installer/InstallDocFormatterTest.php64
-rw-r--r--tests/phpunit/includes/libs/IEUrlExtensionTest.php118
-rw-r--r--tests/phpunit/includes/libs/JavaScriptMinifierTest.php105
-rw-r--r--tests/phpunit/includes/media/BitmapMetadataHandlerTest.php125
-rw-r--r--tests/phpunit/includes/media/BitmapScalingTest.php136
-rw-r--r--tests/phpunit/includes/media/ExifBitmapTest.php122
-rw-r--r--tests/phpunit/includes/media/ExifRotationTest.php249
-rw-r--r--tests/phpunit/includes/media/ExifTest.php51
-rw-r--r--tests/phpunit/includes/media/FormatMetadataTest.php29
-rw-r--r--tests/phpunit/includes/media/GIFMetadataExtractorTest.php95
-rw-r--r--tests/phpunit/includes/media/GIFTest.php85
-rw-r--r--tests/phpunit/includes/media/IPTCTest.php55
-rw-r--r--tests/phpunit/includes/media/JpegMetadataExtractorTest.php94
-rw-r--r--tests/phpunit/includes/media/JpegTest.php29
-rw-r--r--tests/phpunit/includes/media/PNGMetadataExtractorTest.php141
-rw-r--r--tests/phpunit/includes/media/PNGTest.php88
-rw-r--r--tests/phpunit/includes/media/SVGMetadataExtractorTest.php88
-rw-r--r--tests/phpunit/includes/media/TiffTest.php36
-rw-r--r--tests/phpunit/includes/media/XMPTest.php154
-rw-r--r--tests/phpunit/includes/normal/CleanUpTest.php (renamed from includes/normal/CleanUpTest.php)53
-rw-r--r--tests/phpunit/includes/parser/MagicVariableTest.php195
-rw-r--r--tests/phpunit/includes/parser/MediaWikiParserTest.php34
-rw-r--r--tests/phpunit/includes/parser/NewParserTest.php850
-rw-r--r--tests/phpunit/includes/parser/ParserHelpers.php136
-rw-r--r--tests/phpunit/includes/parser/PreprocessorTest.php195
-rw-r--r--tests/phpunit/includes/parser/TagHooks.php77
-rw-r--r--tests/phpunit/includes/search/SearchEngineTest.php163
-rw-r--r--tests/phpunit/includes/search/SearchUpdateTest.php80
-rw-r--r--tests/phpunit/includes/specials/SpecialRecentchanges.php134
-rw-r--r--tests/phpunit/includes/upload/UploadFromUrlTest.php348
-rw-r--r--tests/phpunit/includes/upload/UploadStashTest.php53
-rw-r--r--tests/phpunit/includes/upload/UploadTest.php142
-rw-r--r--tests/phpunit/install-phpunit.sh36
-rw-r--r--tests/phpunit/languages/LanguageBe_taraskTest.php30
-rw-r--r--tests/phpunit/languages/LanguageTest.php246
-rw-r--r--tests/phpunit/languages/LanguageTrTest.php65
-rw-r--r--tests/phpunit/phpunit.php61
-rw-r--r--tests/phpunit/run-tests.bat1
-rw-r--r--tests/phpunit/skins/SideBarTest.php175
-rw-r--r--tests/phpunit/suite.xml37
-rw-r--r--tests/phpunit/suites/ExtensionsTestSuite.php33
-rw-r--r--tests/phpunit/suites/UploadFromUrlTestSuite.php178
-rw-r--r--tests/qunit/.htaccess1
-rw-r--r--tests/qunit/data/defineTestCallback.js4
-rw-r--r--tests/qunit/data/testrunner.js92
-rw-r--r--tests/qunit/data/testwarm.inject.js349
-rw-r--r--tests/qunit/index.html90
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.autoEllipsis.js58
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.byteLength.js42
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.byteLimit.js155
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.client.js205
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.colorUtil.js71
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.getAttrs.js17
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.localize.js119
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.mwPrototypes.js56
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.tabIndex.js50
-rw-r--r--tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js475
-rw-r--r--tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.js71
-rw-r--r--tests/qunit/suites/resources/mediawiki/mediawiki.js232
-rw-r--r--tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js35
-rw-r--r--tests/qunit/suites/resources/mediawiki/mediawiki.user.js29
-rw-r--r--tests/qunit/suites/resources/mediawiki/mediawiki.util.js307
-rw-r--r--tests/selenium/Selenium.php (renamed from maintenance/tests/selenium/Selenium.php)0
-rw-r--r--tests/selenium/SeleniumConfig.php (renamed from maintenance/tests/selenium/SeleniumConfig.php)63
-rw-r--r--tests/selenium/SeleniumLoader.php (renamed from maintenance/tests/selenium/SeleniumLoader.php)0
-rw-r--r--tests/selenium/SeleniumServerManager.php (renamed from maintenance/tests/selenium/SeleniumServerManager.php)6
-rw-r--r--tests/selenium/SeleniumTestCase.php127
-rw-r--r--tests/selenium/SeleniumTestConsoleLogger.php (renamed from maintenance/tests/selenium/SeleniumTestConsoleLogger.php)0
-rw-r--r--tests/selenium/SeleniumTestConstants.php24
-rw-r--r--tests/selenium/SeleniumTestHTMLLogger.php (renamed from maintenance/tests/selenium/SeleniumTestHTMLLogger.php)0
-rw-r--r--tests/selenium/SeleniumTestListener.php (renamed from maintenance/tests/selenium/SeleniumTestListener.php)0
-rw-r--r--tests/selenium/SeleniumTestSuite.php (renamed from maintenance/tests/selenium/SeleniumTestSuite.php)15
-rw-r--r--tests/selenium/data/SimpleSeleniumTestDB.sql1454
-rw-r--r--tests/selenium/data/SimpleSeleniumTestImages.zipbin0 -> 21993 bytes
-rw-r--r--tests/selenium/data/Wikipedia-logo-v2-de.png (renamed from maintenance/tests/selenium/data/Wikipedia-logo-v2-de.png)bin21479 -> 21479 bytes
-rw-r--r--tests/selenium/data/mediawiki118_fresh_installation.sql1544
-rw-r--r--tests/selenium/installer/MediaWikiButtonsAvailabilityTestCase.php102
-rw-r--r--tests/selenium/installer/MediaWikiDifferentDatabaseAccountTestCase.php82
-rw-r--r--tests/selenium/installer/MediaWikiDifferntDatabasePrefixTestCase.php95
-rw-r--r--tests/selenium/installer/MediaWikiErrorsConnectToDatabasePageTestCase.php136
-rw-r--r--tests/selenium/installer/MediaWikiErrorsNamepageTestCase.php132
-rw-r--r--tests/selenium/installer/MediaWikiHelpFieldHintTestCase.php140
-rw-r--r--tests/selenium/installer/MediaWikiInstallationCommonFunction.php283
-rw-r--r--tests/selenium/installer/MediaWikiInstallationConfig.php49
-rw-r--r--tests/selenium/installer/MediaWikiInstallationMessage.php57
-rw-r--r--tests/selenium/installer/MediaWikiInstallationVariables.php77
-rw-r--r--tests/selenium/installer/MediaWikiInstallerTestSuite.php53
-rw-r--r--tests/selenium/installer/MediaWikiMySQLDataBaseTestCase.php78
-rw-r--r--tests/selenium/installer/MediaWikiMySQLiteDataBaseTestCase.php79
-rw-r--r--tests/selenium/installer/MediaWikiOnAlreadyInstalledTestCase.php71
-rw-r--r--tests/selenium/installer/MediaWikiRestartInstallationTestCase.php115
-rw-r--r--tests/selenium/installer/MediaWikiRightFrameworkLinksTestCase.php93
-rw-r--r--tests/selenium/installer/MediaWikiUpgradeExistingDatabaseTestCase.php117
-rw-r--r--tests/selenium/installer/MediaWikiUserInterfaceTestCase.php531
-rw-r--r--tests/selenium/installer/README.txt32
-rw-r--r--tests/selenium/selenium_settings.ini.sample (renamed from maintenance/tests/selenium/selenium_settings.ini.sample)2
-rw-r--r--tests/selenium/selenium_settings_grid.ini.sample (renamed from maintenance/tests/selenium/selenium_settings_grid.ini.sample)6
-rw-r--r--tests/selenium/suites/AddContentToNewPageTestCase.php (renamed from maintenance/tests/selenium/suites/AddContentToNewPageTestCase.php)38
-rw-r--r--tests/selenium/suites/AddNewPageTestCase.php (renamed from maintenance/tests/selenium/suites/AddNewPageTestCase.php)18
-rw-r--r--tests/selenium/suites/CreateAccountTestCase.php (renamed from maintenance/tests/selenium/suites/CreateAccountTestCase.php)30
-rw-r--r--tests/selenium/suites/DeletePageAdminTestCase.php (renamed from maintenance/tests/selenium/suites/DeletePageAdminTestCase.php)38
-rw-r--r--tests/selenium/suites/EmailPasswordTestCase.php (renamed from maintenance/tests/selenium/suites/EmailPasswordTestCase.php)30
-rw-r--r--tests/selenium/suites/MediaWikiEditorConfig.php (renamed from maintenance/tests/selenium/suites/MediaWikiEditorConfig.php)11
-rw-r--r--tests/selenium/suites/MediaWikiEditorTestSuite.php18
-rw-r--r--tests/selenium/suites/MediaWikiExtraTestSuite.php20
-rw-r--r--tests/selenium/suites/MediawikiCoreSmokeTestCase.php (renamed from maintenance/tests/selenium/suites/MediawikiCoreSmokeTestCase.php)0
-rw-r--r--tests/selenium/suites/MediawikiCoreSmokeTestSuite.php (renamed from maintenance/tests/selenium/suites/MediawikiCoreSmokeTestSuite.php)2
-rw-r--r--tests/selenium/suites/MovePageTestCase.php (renamed from maintenance/tests/selenium/suites/MovePageTestCase.php)32
-rw-r--r--tests/selenium/suites/MyContributionsTestCase.php65
-rw-r--r--tests/selenium/suites/MyWatchListTestCase.php57
-rw-r--r--tests/selenium/suites/PageDeleteTestSuite.php (renamed from maintenance/tests/selenium/suites/PageDeleteTestSuite.php)2
-rw-r--r--tests/selenium/suites/PageSearchTestCase.php (renamed from maintenance/tests/selenium/suites/PageSearchTestCase.php)44
-rw-r--r--tests/selenium/suites/PreviewPageTestCase.php (renamed from maintenance/tests/selenium/suites/PreviewPageTestCase.php)10
-rw-r--r--tests/selenium/suites/SavePageTestCase.php (renamed from maintenance/tests/selenium/suites/SavePageTestCase.php)14
-rw-r--r--tests/selenium/suites/SimpleSeleniumConfig.php30
-rw-r--r--tests/selenium/suites/SimpleSeleniumTestCase.php (renamed from maintenance/tests/selenium/suites/SimpleSeleniumTestCase.php)15
-rw-r--r--tests/selenium/suites/SimpleSeleniumTestSuite.php (renamed from maintenance/tests/selenium/suites/SimpleSeleniumTestSuite.php)4
-rw-r--r--tests/selenium/suites/UserPreferencesTestCase.php (renamed from maintenance/tests/selenium/suites/UserPreferencesTestCase.php)72
-rw-r--r--tests/testHelpers.inc (renamed from maintenance/tests/testHelpers.inc)168
-rw-r--r--thumb.php8
-rw-r--r--trackback.php6
1829 files changed, 264636 insertions, 85103 deletions
diff --git a/CREDITS b/CREDITS
index 2842b0c0..a5d1ac51 100644
--- a/CREDITS
+++ b/CREDITS
@@ -1,4 +1,4 @@
-MediaWiki 1.17 is a collaborative project released under the
+MediaWiki 1.18 is a collaborative project released under the
GNU General Public License v2. We would like to recognize the
following names for their contribution to the product.
@@ -9,7 +9,9 @@ following names for their contribution to the product.
* Andrew Garrett
* Aryeh Gregor
* Ashar Voultoiz
+* Brian Wolff
* Bertrand Grondin
+* Brad Jorsch
* Brion Vibber
* Bryan Tong Minh
* Chad Horohoe
@@ -20,6 +22,7 @@ following names for their contribution to the product.
* Danny B.
* David McCabe
* Derk-Jan Hartman
+* DieBuche
* Domas Mituzas
* Emufarmers
* Fran Rogers
@@ -30,10 +33,12 @@ following names for their contribution to the product.
* Ilmari Karonen
* Jack D. Pond
* Jack Phoenix
+* Jan Paul Posma
* Jason Richey
* Jon Harald Søby
* Juliano F. Ravasi
* Leon Weber
+* Leslie Hoare
* Marco Schuster
* Matěj Grabovský
* Matt Johnston
@@ -51,6 +56,7 @@ following names for their contribution to the product.
* Remember the dot
* Roan Kattouw
* Robert Stojnić
+* Robin Pepermans
* Rotem Liss
* Ryan Lane
* Ryan Schmidt
@@ -61,9 +67,11 @@ following names for their contribution to the product.
* Soxred93
* Thomas Bleher
* Tim Starling
+* Timo Tijhof
* Tom Gries
* Trevor Parscal
* Victor Vasiliev
+* Yesid Carrillo
* Yuri Astrakhan
== Patch Contributors ==
@@ -73,7 +81,7 @@ following names for their contribution to the product.
* Amalthea
* Antonio Ospite
* Azliq7
-* Bawolff
+* Bergi
* Borislav Manolov
* Brad Jorsch
* Brent G
@@ -82,12 +90,15 @@ following names for their contribution to the product.
* Carsten Nielsen
* Conrad Irwin
* Dan Barrett
+* Dan Collins
* Dan Nessett
* Daniel Arnold
* Denny Vrandecic
-* Derk-Jan Hartman
-* DieBuche
+* Erwin Dokter
* FunPika
+* fomafix
+* Grunny
+* Harry Burt
* Ireas
* Jaska Zedlik
* Jeremy Baron
@@ -103,6 +114,7 @@ following names for their contribution to the product.
* Louperivois
* Lucas Garczewski
* Luigi Corsaro
+* Lupo
* Manuel Menal
* Marcin Cieślak
* Marcus Buck
@@ -111,11 +123,15 @@ following names for their contribution to the product.
* Matthew Britton
* mati
* Max Sikström
+* Michael Dale
* Michael De La Rue
+* Michael M.
* Michael Walsh
* Mike Horvath
* Mormegil
* MrPete
+* MZMcBride
+* mybugs.mail
* Nakon
* Nathan Larson
* nephele
@@ -126,18 +142,24 @@ following names for their contribution to the product.
* PieRRoMaN
* quietust
* René Kijewski
+* rgcjonas
* Robert Treat
* RockMFR
-* ST47
+* Salvatore Ingala
* Scott Colcord
* Simon Walker
* Solitarius
+* ST47
* Stefano Codari
* Str4nd
* svip
+* The Evil IP address
* Tisane
* Umherirrender
* Ville Stadista
+* Vitaliy Filippov
+* William Demchick
+* Yuvaraj Pandian T
* Zachary Hauri
== Translators ==
diff --git a/HISTORY b/HISTORY
index 2cc94aad..f2d00b41 100644
--- a/HISTORY
+++ b/HISTORY
@@ -1,135 +1,597 @@
Change notes from older releases. For current info see RELEASE-NOTES.
-== MediaWiki 1.16 ==
-
-== Changes since 1.16.4 ==
-
-* (bug 28534) Fixed XSS vulnerability for IE 6 clients. This is the third
- attempt at fixing bug 28235.
-* (bug 28639) Fixed potential privilege escalation when $wgBlockDisablesLogin
- is enabled.
-
-== Changes since 1.16.3 ==
-
-* (bug 28507) The change we made in 1.16.3 to fix bug 28235 (XSS for IE 6
- clients) was not actually sufficient to fix that bug. This release contains
- a second attempt, hopefully we have fixed it this time.
-
-== Changes since 1.16.2 ==
-
-* (bug 28449) Fixed permissions checks in Special:Import which allowed users
- without the 'import' permission to import pages from the configured import
- sources.
-* (bug 28235) Fixed XSS affecting IE 6 and earlier clients only, due to those
- browsers looking for a file extension in the query string of the URL, and
- ignoring the Content-Type header if one is found.
-* (bug 28450) Fixed a CSS validation issue involving escaped comments, which
- led to XSS for Internet Explorer clients and privacy loss for other clients.
-
-== Changes since 1.16.1 ==
-
-* (bug 26642) Fixed incorrect translated namespace due to a regression in the
- language converter.
-* The interface translations were updated.
-* (bug 27093, CVE-2011-0047): Fixed CSS injection vulnerability.
-* (bug 27094) Fixed server-side arbitrary script inclusion vulnerability.
- Affects Windows servers only. A malicious file with extension ".php" must
- exist on the server for the exploit to be effective.
+== MediaWiki 1.17 ==
+
+=== PHP 5.2 now required ==
+Since 1.17, the lowest supported version of MediaWiki is now 5.2.3. Please
+upgrade PHP if you have not done so prior to upgrading MediaWiki.
+
+=== New installer in 1.17 ===
+MediaWiki 1.17 is shipping with a completely redesigned installer to fix
+a lot of outstanding bugs, cleanup the code quality, and make it easier to
+use. Notably, you can now run upgrades from the web without having to move
+LocalSettings.php. Also, configuration script directory has been renamed
+from config/ to mw-config/. The specific bugs are listed below in the
+general notes.
+
+=== New ResourceLoader in 1.17 ===
+MediaWiki 1.17 ships with a ResourceLoader which combines and minifies css and
+javascript attached to the page. They are served from the new entry point load.php
+If the page is served with the &debug=true parameter, the non-minified files
+are used instead.
+
+=== Configuration changes in 1.17 ===
+* DatabaseFunctions.php that was needed for compatibility with pre-1.3
+ extensions has been removed.
+* $wgAllowImageTag can be set to true to whitelist the <img> tag in wikitext.
+* (bug 12797) Add $wgGalleryOptions for adjusting of default gallery display
+ options.
+* $wgAllowUserCssPrefs option allows disabling CSS-based preferences; which can
+ improve page loading speed.
+* (bug 22858) $wgLocalStylePath is by default set to the same value as
+ $wgStylePath but should never point to a different domain than the site is
+ on, allowing skins to use .htc files which are not cross-domain friendly.
+* (bug 20193) Added $wgVectorShowVariantName global configuration variable
+ which causes Vector to render the variants drop-down menu with a label
+ showing the current variant name. This is off by default, pending further
+ research into its user experience implications.
+* XmlFunctions.php has been removed. Use the Xml or Html classes as appropriate.
+* Added $wgSQLMode for setting database SQL modes - either performance (null)
+ or other reasons (such as enabling stricter checks)
+* $wgFileStore has been deprecated. The only usage $wgFileStore['deleted'] has
+ been turned into $wgDeletedDirectory.
+* $wgDeletedDirectory has been added to specify what directory to place deleted
+ uploads in.
+* IBM DB2 database no longer uses the db specific $wgDBport_db2 variable but the
+ normal $wgDBport.
+* The upload link for missing files can now be set separately from the
+ navigation link with $wgUploadMissingFileUrl.
+* $wgCategoryPrefixedDefaultSortkey was removed and is now always false. This
+ provides more sensible sorting behavior for categories.
+* Removed unused globals: $wgEnableSerializedMessages, $wgCheckSerialized,
+ $wgUseMemCached, $wgDisableSearchContext, $wgColorErrors,
+ $wgUseZhdaemon, $wgZhdaemonHost and $wgZhdaemonPort.
+* (bug 24408) The include_path is not modified in the default LocalSettings.php
+* $wgVectorExtraStyles was removed, and is no longer in use.
+* $wgLoadScript was added to specify alternative locations for ResourceLoader
+ requests.
+* $wgResourceLoaderMaxage was added to specify maxage and smaxage times for
+ responses from ResourceLoader based on whether the request's URL contained a
+ version parameter or not.
+* $wgResourceLoaderDebug was added to specify the default state of debug mode;
+ this will still be overridden with the debug URL parameter a la
+ $wgLanguageCode.
+* $wgResourceLoaderInlinePrivateModules was added to specify whether private
+ modules such as user.options should be embedded in the HTML output or
+ delivered through a resource loader request, which bypasses server cache (like
+ squid) and checks the user parameter against $wgUser. The former adds more
+ data to all pages, while the latter adds a request which cannot be cached
+ server side.
+* Removed $wgUpdates for database updates; extension should use
+ DatabaseUpdater::addExtensionUpdate().
+* Removed $wgServerName. It doesn't need to be set anymore and is no longer
+ available as input for other configuration items, either.
+* Remove $wgRemoteUploads. It was not well supported and superseded by
+ $wgUploadNavigationUrl.
+* (bug 198) $wgUpgradeKey allows unlocking the web installer for upgrades
+ without having to move LocalSettings.php
+* The FailFunction "error handling" method has now been removed
+* $wgAdditionalMailParams added to allow setting extra options to mail() calls.
+* $wgSecureLogin to optionaly login using HTTPS
+* (bug 25728) Added $wgPasswordSenderName to allow customise the name associed
+ with $wgPasswordSender
+* Sysops now have the "suppressredirect" right by default
+* (bug 22463) $wgFooterIcons added to allow configuration of the icons shown in
+ the footers of skins.
+* $wgFileCacheDepth can be used to set the depth of the subdirectory hierarchy
+ used for the file cache. Default value is 2, which matches former behavior
+* It's no longer necessary for LocalSettings.php to include DefaultSettings.php.
+* It's no longer necessary to set $wgCacheEpoch to the file modification time
+ of LocalSettings.php, in LocalSettings.php itself. Instead, this is done
+ automatically if $wgInvalidateCacheOnLocalSettingsChange is true (which is
+ the default).
+* (bug 26253) $wgPostCommitUpdateList has been removed
+
+=== New features in 1.17 ===
+* (bug 10183) Users can now add personal styles and scripts to all skins via
+ User:<name>/common.css and /common.js (if user css/js is enabled).
+* (bug 22748) Add anchors on Special:ListGroupRights.
+* (bug 21981) Add parameter 'showfilename' to <gallery> to automatically
+ apply the names of the individual files within the gallery.
+* Future-proof redirection to fragments in Gecko, so things work a little nicer
+ if they fix <https://bugzilla.mozilla.org/show_bug.cgi?id=516293>.
+* Support git:// and mms:// protocols by default for external links.
+* (bug 15810) Blocked admins can no longer unblock themselves without the
+ 'unblockself' permission (which they have by default).
+* (bug 18499) Added "enhanced" URL parameter to switch between old and enhanced
+ changes list.
+* (bug 22925) "sp-contributions-blocked-notice-anon" message now displayed when
+ viewing contributions of a blocked IP address.
+* (bug 22474) {{urlencode:}} now takes an optional second paramter for type of
+ escaping.
+* Special:Listfiles now supports a username parameter.
+* Special:Random carries over query string parameters.
+* (bug 23206) Add Special::Search hook for detecting successful "Go".
+* When visiting a "red link" of a deleted file, a deletion and move log excerpt
+ is provided on the Upload form.
+* (bug 22647) Add category details in search results.
+* (bug 23276) Add hook to Special:NewPages to modify query.
+* Add accesskey 's' and tooltip to 'Save' button at Special:Preferences.
+* Add accesskey 'b' and tooltip to the summary field of edit mode.
+* (bug 20186) Allow filtering Special:Contributions for RevisionDeleted edits.
+* ajaxwatch now uses the API and JQuery, and can be used to animate arbitrary
+ watch links, not just to watch the page the link is on.
+* (bug 20976) "searchmenu-new-nocreate" message now displayed when when there
+ is no title match in search and the user has no rights to create pages.
+* (bug 23429) Added new hook WatchlistEditorBuildRemoveLine.
+* (bug 22844) Added support for WinCache object caching.
+* (bug 23580) Add two new events to LivePreview so that scripts can be
+ notified about the beginning and finishing of LivePreview actions.
+* (bug 21278) Now the sidebar allows inclusion of wiki markup.
+* (bug 23733) Add IDs to messages used on CSS/JS pages
+* (bug 21312) RevisionMove allows moving individual revisions of a page to
+ another page. Introducing 'revisionmove' user right; disabled by default;
+ experimental feature.
+* Show validity period of the login cookie in Special:UserLogin and
+ Special:Preferences
+* Interlanguage links display the page title in their tooltip.
+* (bug 23621) New Special:ComparePages to compare (diff) two articles.
+* (bug 4597) Provide support in Special:Contributions to show only "current"
+ contributions
+* (bug 17857) {{anchorencode}} acts more like how the parser creates section ids
+* (bug 21477) \& can now be used in <math>
+* (bug 11641) \dotsc \dotsm \dotsi \dotso can now be used in <math>
+* (bug 21475) \mathtt and \textsf can now be used in <math>
+* texvc is now run via ulimit4.sh, to limit execution time.
+* SQLite now supports $wgSharedDB.
+* (bug 8507) Group file links by namespace:title on image pages
+* Stop emitting named entities, so we can use <!DOCTYPE html> while still being
+ well-formed XML
+* texvc now supports \bcancel and \xcancel in addition to \cancel and \cancelto
+* Added scriptExtension setting to $wgForeignFileRepos
+* ForeignApiRepo uses scriptDirUrl if apiBase not set
+* (bug 24212) Added MediaWiki:Filepage.css which is also included on foreign
+ client wikis.
+* (bug 14685) Double underscore magic word usage is now tracked in the
+ page_props table, as well as the behavioral magic words {{DEFAULTSORT}} and
+ {{DISPLAYTITLE}}
+* (bug 24045) MediaWiki:Ipb-needreblock is now wrapped in a div with class
+ "mw-ipb-needreblock"
+* Non-file pages can no longer be moved to the file namespace, nor vice versa.
+* (bug 671) The <dfn>, <kbd> and <samp> elements have been whitelisted in user
+ input
+* (bug 24563) Entries on Special:WhatLinksHere now have a link to their history
+* (bug 21503) There's now a "reason" field when creating account for other users
+* (bug 24418) action=markpatrolled now requires a token
+* A variety of category sort-related fixes, including:
+** (bug 164) In English, lowercase and uppercase letters now sort the same.
+ (This should be expanded to proper sorting for other languages before the
+ 1.17 release.)
+** (bug 1211) Subcategories, ordinary pages, and files now page separately.
+** When several pages are given the same sort key, they sort by their names
+ instead of randomly.
+* (bug 23848) Add {{ARTICLEPATH}} Magic Word.
+* JavaScript-based password complexity checker on account creation and
+ password change.
+* (bug 8140) Add dedicated CSS classes to Special:Newpages elements
+* (bug 11005) Add CSS class to empty pages in Special:Newpages
+* The parser cache is now shared amongst users whose different settings aren't
+ used in the page.
+* Any attribute beginning with "data-" can now be used in wikitext, per HTML5.
+* (bug 24007) Diff pages now mention the number of users having edited
+ intermediate revisions
+* Added new hook GetIP
+* Special:Version now displays whether a SQLite database supports full-text
+ search.
+* TS_ISO_8691_BASIC was added as a time format, which is used by ResourceLoader
+ for versioning
+* Maintenance scripts get a --memory-limit option to override defaults (which
+ is usually to set it to -1 to disable the limit)
+* (bug 25397) Allow uploading (not displaying) of WebP images, disabled
+ by default
+* (bug 23194) Special:ListFiles now has thumbnails
+* Use hreflang to specify canonical and alternate links, search engine friendly
+ when a wiki has multiple variant languages.
+* (bug 19593) Specifying --server in now works for all maintenance scripts
+* Now rebuildtextindex.php warns if SQLite doesn't support full-text search.
+* (bug 10541) Front/backend separation of installation/upgrade code
+* (bug 10596) Allow installer to enable extensions already in extensions folder
+* (bug 17394) Make installer check for latest version against MediaWiki.org
+* (bug 20627) Installer should be in languages other than English
+* Support for metadata in SVG files (title, description).
+* Special:Search: Add CSS classes to 'none found' and 'create link' messages
+* Add CSS classes (including namespace and pagename) to the enhanced recent
+ changes/watchlist entries
+* (bug 22463) Add hook 'SkinGetPoweredBy' to make 'powered by' icon/text
+ customizable
+* Added CSS print pagination to the print stylesheets
+* (bug 25960) Add <link rel=canonical"> for File pages of shared/foreign
+ file repositories.
+* When viewing a redirect, the redirect arrow and redirection target are both
+ wrapped in a div that has the class "redirectMsg" so that the redirection
+ arrow can be customized with CSS
+* (bug 21911) Hard coded limit for long page warning removed. New message
+ [[MediaWiki:Longpage-hint]] (empty per default) can be used instead.
+ Parameters: $1 shows the formatted textsize in Byte/KB/MB, $2 is the raw
+ number of the textsize in Byte
+* (bug 3276) Give image <gallery>s fluid width
+* Added uploads link to page subtitle in Special:Contributions
+* Added Special:Myuploads special page that redirects to Special:Listfiles
+* The footerlinks used in Monobook/Vector/Modern are now part of common skin
+ code, SkinTemplateOutputPageBeforeExec can be used to customize the list.
+* Special wrapping setups can now define MW_CONFIG_FILE to load a config file
+ other than LocalSettings.php. This is like MW_CONFIG_CALLBACK but works in
+ some cases where MW_CONFIG_CALLBACK will not work.
+
+=== Bug fixes in 1.17 ===
+* (bug 17560) Half-broken deletion moved image files to deletion archive
+ without updating database.
+* (bug 22666) Submitting user block form with an invalid user name no longer
+ throws an error.
+* (bug 22665, bug 22667) User '0' can now be unblocked and have its block
+ settings changed.
+* (bug 22606) The body of e-mail address confirmation message is now different
+ when the address changed.
+* (bug 22664) Special:Userrights now accepts '0' as a valid user name.
+* (bug 5210) Preload parser now parses <noinclude>, <includeonly> and
+ redirects.
+* (bug 22709) IIS7 mishandles redirects generated by OutputPage::output() when
+ the URL contains a colon.
+* (bug 22353) Categorised recent changes now works again.
+* (bug 22747) "Reveal my e-mail address in notification e-mails" preference is
+ now only displayed when relevant.
+* (bug 22772) {{#special:}} parser function now works with subpages.
+* (bug 18664) Relative URIs in interwiki links cause failed redirects.
+* (bug 19270) Relative URIs in interwiki links break interwiki transclusion.
+* (bug 22903) Revdelete log entries now show in the user preferred language.
+* (bug 22905) Correctly handle <abbr> followed by ISBN.
+* (bug 22940) Namespace aliases pointing to main namespace don't work.
+* (bug 15810) Blocked admins can no longer block/unblock other users.
+* (bug 22876) Avoid possible PHP Notice if $wgDefaultUserOptions is not
+ correctly set.
+* (bug 14952) Page titles are renormalized after html entities are removed so
+ that links with non-NFC character references work correctly.
+* (bug 22991) wgUserGroups JavaScript variable now reports * group for
+ anonymous users instead of null.
+* (bug 22627) Remove PHP notice when deleting a page only hidden users edited.
+* (bug 21520) Anonymous previews now also gives a warning about not being
+ logged in (anonpreviewwarning).
+* (bug 22935) image/x-ms-bmp mime type added for BMP files.
+* (bug 23024) Special:ListFiles now escapes file names correctly.
+* (bug 22867) "View source" tab is now only displayed if there's source text.
+* (bug 19393) Feeds now format dates in user language rather than content
+ language.
+* (bug 22852) "Served in" comment is now the time used to cache a single page
+ when using rebuildFileCache.php
+* (bug 22496) Viewing diff of a redirect page without specifying "oldid".
+ parameter no longer makes the page displayed as being the redirect target.
+* (bug 22918) Feed cache keys now use $wgRenderHashAppend.
+* (bug 21916) Last-Modified header is now correct when outputting cached feed.
+* (bug 20049) Fixed PHP notice in search highlighter that occurs in some cases.
+* (bug 23017) Special:Disambiguations now list pages in content namespaces
+ rather than only main namespace.
+* (bug 23063) $wgMaxAnimatedGifArea is checked against the total size of all
+ frames, and $wgMaxImageArea against the size of the first frame, rather than
+ the other way around. Both now default to 12.5 megapixels. Also, images
+ exceeding $wgMaxImageArea can still be embedded at original size.
+* (bug 23078) "All public logs" option on Special:Log is now always the first
+ item.
+* (bug 16817) Group names in user rights log are now singular and in lowercase.
+* Special:Preferences no longer crashes if the wiki default date formatting
+ style is not valid for the user's interface language.
+* (bug 23167) Check the watch checkbox by default if the watchcreations
+ preference is set.
+* Maintenance script cleanupTitles is now able to fix titles stored
+ in a negative namespace (which is invalid).
+* (bug 19858) Removed obsolete <big> in interface messages.
+* (bug 21456) "Bad title" error when showing non-local interwiki pages no longer
+ displays incorrect tabs.
+* (bug 23190) Improved math representation for text browsers.
+* (bug 22015) Improved upload-by-url error handling and error display.
+* (bug 17941) $wgMaxUploadSize is now honored by all upload sources.
+* (bug 23080) New usernames now limited to 235 bytes so that custom skin files
+ work.
+* (bug 23075) Correct MediaTransformError default width in gallery.
+* (bug 16487) The Anonymous user account used on Postgres is no longer
+ displayed on Special:Listusers.
+* (bug 23313) Move watchlisthidepatrolled above token in watchlist preferences
+ to enhance preference grouping.
+* (bug 23298) Interwiki links with prefix only in log summaries now link to the
+ correct link.
+* (bug 23284) Times are now rounded correctly.
+* (bug 23375) Added ogv, oga, spx as extensions for ogg files.
+* (bug 18408) All required permissions for uploading (upload, edit, create)
+ are now checked when loading Special:Upload. Toolbar link for Special:Upload
+ is no longer shown if the user does not have the required permissions.
+* (Bug 23397) texvc in html mode renders \sim as &tilde; not &sim;
+* (Bug 23241) Remove License selector, because it is not used when uploading a
+ new version.
+* (bug 23240) Add ID to namespace selector form on Special:Watchlist.
+* The pipe | character in urls is now escaped.
+* (bug 23422) mp3 files can now be moved.
+* (bug 23448) MediaWiki:Summary-preview is now displayed instead of
+ MediaWiki:Subject-preview when previewing summary.
+* (bug 23426) The {{REVISIONMONTH}} variable is now zero-padded and added
+ new variable {{REVISIONMONTH1}} when unpadded version is needed.
+* Special:Userrights didn't recognize user as changing his/her own rights if
+ user did not capitalize first letter of username.
+* (bug 23507) Add styles for printing wikitables.
+* (bug 19586) Avoid JS errors in mwsuggest when using old browsers such
+ as Opera 8.
+* (bug 23563) Old skins now support $wgUploadNavigationUrl and take into
+ account upload rights.
+* (bug 1347) Render \phi in math using images, in order to create consistent
+ and correct render results.
+* (bug 16573) Render \epsilon in math using images, in order to create
+ consistent and correct render results.
+* (bug 22541) Support image redirects when using ForeignAPIRepo.
+* (bug 22967) Make edit summary length cut-off behave correctly for
+ multibyte characters.
+* (bug 8689) Long numeric lines no longer kill the parser.
+* (bug 23740) Article::doRedirect() now use $extraQuery parameter correctly if
+ the $noRedir parameter is set to true
+* (bug 23688) Correct mime types for Office 2007 OpenXML documents.
+* (bug 23787) Corrected $wgDefaultSkin's comment in DefaultSettings.php
+* (bug 23797) Xml::input() now allows '0' for the value parameter
+* (bug 23747) Make sure that on History pages, the RevDel button is not
+ accidently activated when hitting enter.
+* (bug 23845) Special:ListFiles now uses correct file names without underscores
+* Ask for permanent login in Special:Preferences only if $wgCookieExpiration > 0
+* (bug 16356) Repair dumpInterwiki.inc to use proper normalization.
+* (bug 24006) deleteArchivedRevisions.php maintenance script now longer throws
+ a fatal error
+* (bug 23465) Don't ignore the predefined destination filename on
+ Special:Upload after following a red link
+* (bug 23642) Recognize mime types of MS OpenXML documents.
+* (bug 22784) Normalise underscores and spaces in autocomments.
+* (bug 19910) Headings of the form ===+\s+ are now displayed as valid headings
+* (bug 24022) Only check file extensions on the uploadpage when needed.
+* (bug 24076) Recognize Office 2003 files with OpenXML trailers
+* (bug 24244) Updated comments in DefaultSettings.php to reflect
+ Image: --> File: namespace rename.
+* Make wfTimestamp recognize negative unix timestamp values.
+* (bug 24401) SimpleSearch: No button/text indicating 'Search' if image is
+ disabled
+* (bug 23293) Do not show change tags when special:recentchanges(linked)
+ or special:newpages is transcluded into another page as it messes up the
+ page.
+* (bug 24517) LocalFile::newFromKey() and OldLocalFile::newFromKey() no longer
+ throw fatal errors
+* (bug 23380) Uploaded files that are larger than allowed by PHP now show a
+ useful error message.
+* Uploading to a protected title will allow the user to choose a new name
+ instead of showing an error page
+* (bug 24425) Use Database::replace instead of delete/insert in
+ SqlBagOStuff::set to avoid query errors about duplicate keynames.
+* (bug 15470) First letters of filenames are always capitalized by upload JS.
+* (bug 21215) NoLocalSettings.php doesn't tolerate rewrite rules
+* (bug 21052) Fix link color for stubs in NewPages
+* (bug 24714) Usage of {{#dateformat: }} in wikis without $wgUseDynamicDates no
+ longer pollutes the parser cache.
+* (bug 17031) Correct which characters the parser allows in tag attributes (a
+ letter, colon or underscore followed by 0 or more letters, numbers, colons,
+ underscores, hyphens, and/or periods).
+* Save 200 useless queries on each category page view
+* Shell commands will now work on Linux in filesystems mounted noexec
+* (bug 24804) Corrected commafying in Polish and Ukrainian
+* "Difference between pages" is now displayed instead of "Difference between
+ revisions" on diffs when appropriate.
+* (bug 23703) ForeignAPIRepo fails on findBySha1() when using a 1.14 install as
+ a repository due to missing 'name' attribute from the API list=allimages
+* (bug 24898) MediaWiki uses /tmp even if a vHost-specific tempdir is set, also
+ make wfTempDir() return a sane value for Windows on worst-case
+* (bug 24824) Support ImageMagick 6.5.6-2+ JPEG decoder size hint, to reduce
+ memory usage when such an ImageMagick is used for scaling.
+* Disable multithreaded behaviour in recent ImageMagick, to avoid a deadlock
+ when a resource limit such as $wgMaxShellMemory is hit.
+* (bug 24981) Allow extensions to access SpecialUpload variables again
+* (bug 20744) Wiki forgets about an uploaded file
+* (bug 17913) Don't show "older edit" when no older edit available
+* (bug 6204) TOC not properly rendered when using $wgMaxTocLevel
+* (bug 24977) The accesskey in history page now lead directly to the diff
+ instead of alterning focus between the two buttons.
+* (bug 24987) Special:ListUsers does not take external groups into account
+* (bug 20633) update.php has mixed language output
+* SQLite system table names are now never prefixed.
+* (bug 25292) SkinSubPageSubtitle hook now passes the Skin object as second
+ parameter
+* (bug 25167) Correctly load JS fixes for IE6 (fixing a regression in 1.16)
+* (bug 25367) wfShellExec() is more explicit when failing due to disabled
+ passthru()
+* (bug 25462) Fix double-escaping for section edit link tooltips
+* action=raw was removed for Special:Statistics. This information is still
+ available via the API
+* (bug 23934) Groups defined in $wgRevokePermissions but not in
+ $wgGroupPermissions now appear on Special:ListGroupRights
+* (bug 23923) Special:Prefixindex no longer shows results if nothing was
+ requested.
+* (bug 22308) Search now finds text in default main page immediately after setup
+* (bug 25697) Make sure empty lines render in diff view.
+* Use an actual minus sign in diff views, instead of a hyphen.
+* (bug 23732) Clarified "n links" message on Special:MostLinkedFiles
+* (bug 23731) Clarified "n links" message on Special:MostLinkedTemplates
+* (bug 25642) A exception is now thrown instead of a fatal error when using
+ $wgSMTP without PEAR mail package
+* (bug 19633) When possible, Upscale small SVGs when creating thumbnails.
+* (bug 11013) Database driver detection needs rewriting for robustness
+* (bug 13409) Installer prompts could use clarification--now has help boxes
+* (bug 16902) Installer spews warnings when exec() and dl() are not available
+* (bug 19129) Only show MyISAM/InnoDB when supported
+* (bug 17762) Only show other e-mail options when e-mail is globally enabled
+* Cache multiple sizes of InstantCommons thumbnails
+* (bug 25488) Disallowing anonymous users to read pages no longer throws error
+ on discussion pages with vector as default skin
+* (bug 24833) Files name in includes/diff/ are now less confusing
+* (bug 25713) SpecialPage::resolveAlias() now normalise spaces to underscores
+* (bug 25829) Special:Mypage and Special:Mytalk now forward oldid, diff and dir
+ parameters
+* (bug 25175) HTML file cache now honor $wgCacheDirectory if
+ $wgFileCacheDirectory is not set
+* (bug 13353) Diff3 version checks were too strict, did not detect working diff3
+* (bug 25843) Links to special pages using link= attribute on images are now
+ normalised like normal links to special pages
+* (bug 21364) External links using link= attribute on images now respect
+ $wgExternalLinkTarget
+* (bug 17789) Added a note to the total views on Special:Statistics saying that
+ is doesn't count non-existing pages and special pages
+* (bug 17996) HTTP redirects are now combined when requesting a special page
+* (bug 19944) Link on image thumbnails no longer link to "Media:" namespace in
+ some cases
+* (bug 25670) wfFindFile() now checks the namespace of the given title, only
+ "File" and "Media" are allowed now
+* (bug 25872) Rename the HttpRequest class to MWHttpRequest to avoid conflict
+ with php extension that defines same class.
+* (bug 20591) There's now a different message on Special:MovePage when
+ $wgFixDoubleRedirects is set to false.
+* Fixed PHP warnings when updating a broken MySQL database.
+* (bug 26023) Corrected deleteBacth.php's documentation
+* (bug 25451) Improved datetime representation in 32 bit php >= 5.2.
+* Show "skin does not exist error" only when the skin is inputted in the wrong
+ case.
+* (bug 26164) Potential html injection when the database server isn't available
+* (bug 26160) Upload description set by extensions are not propagated
+* (bug 9675) generateSitemap.php now takes an --urlpath parameter to allow
+ absolute URLs in the sitemap index (as required e.g. by Google)
+* Partial workaround for bug 6220: at least make files on shared repositories
+ show up as (struck-out) bluelinks instead of redlinks on Special:WantedFiles
+* rebuildFileCache.php no longer creates inappropriate cache files for redirects
+* (bug 18372) $wgFileExtensions will now override $wgFileBlacklist
+* (bug 25512) Subcategory list should not include category prefix for members.
+* (bug 20244) Installer does not validate SQLite database directory for stable path
+* (bug 1379) Installer directory conflicts with some hosts' configuration panel.
+* (bug 12070) After Installation MySQL was blocked
+* Fix XML well-formedness on a few pages when $wgHtml5 is true (the default)
+* (bug 28568) Entries in the iwlinks table are now removed on page deletion
+
+=== API changes in 1.17 ===
+* (bug 22738) Allow filtering by action type on query=logevent.
+* (bug 22764) uselang parameter for action=parse.
+* (bug 22944) API: watchlist options are inconsistent.
+* (bug 22868) don't list infinite block expiry date as "now" in API logevents.
+* (bug 22290) prop=revisions now outputs "comment" field even when comment.
+ is empty, for consistency with list=recentchanges.
+* (bug 19721) API action=help should have a way to just list for a specific
+ module.
+* (bug 23458) Add support for pageid parameter to action=parse requests.
+* (bug 23460) Parse action should have a section option.
+* (bug 21346) Make deleted images searchable by hash.
+* (bug 23461) Normalise usage of parameter names in parameter descriptions.
+* (bug 23548) Allow access of another users watchlist through watchlistraw
+ using token and username.
+* (bug 23524) Api Modules as followup to bug 14473 (Add iwlinks table to
+ track inline interwiki link usage).
+* Add pltitles and tltemplates to prop=links and prop=templates respectively,
+ similar to prop=categories's clcategorie
+* (bug 23834) Invalid "thumbwidth" and "thumbheight" in "imageinfo" query when
+ thumbnailing larger than original image
+* (bug 23835) Need "thumbmime" result in "imageinfo" query
+* (bug 23851) Repair diff for file redirect pages
+* (bug 24009) Include implicit groups in action=query&list=users&usprop=groups
+* (bug 24016) API: Handle parameters specified in simple string syntax
+ ( 'paramname' => 'defaultval' ) correctly when outputting help
+* (bug 24089) Logevents causes PHP Notice if leprop=title isn't supplied
+* (bug 23473) Give description of properties on all modules
+* (bug 24136) unknownerror when adding new section without summary, but
+ forceditsummary
+* (bug 16886) Sister projects box moves down the extract of the first result
+ in IE 7.
+* (bug 22339) Added srwhat=nearmatch to list=search to get a "go" result
+* (bug 24303) Added new &servedby parameter to all actions which adds the
+ hostname that served the request to the result. It is also added
+ unconditionally on error
+* (bug 24185) Titles in the Media and Special namespace are now supported for
+ title normalization in action=query. Special pages have their name resolved
+ to the local alias.
+* (bug 24296) Added converttitles parameter to convert titles to their
+ canonical language variant.
+* (bug 17398) Fixed "link" parameter in image links with "thumb" or "frame"
+ parameter.
+* (bug 23936) Add "displaytitle" to query/info API
+* (bug 24485) Make iwbacklinks a generator, optionally display iwprefix and
+ iwtitle
+* (bug 24564) Fix fatal errors when using list=deletedrevs, prop=revisions or
+ one of the backlinks generators with limit=max.
+* (bug 24656) API's parse module needs option to disable PP report
+* PARAM_REQUIRED parameter flag added. If this flag is set, and the end user
+ does not set the parameter, the API will automatically throw an error.
+* (bug 24665) When starttimestamp is not specified, fake it by setting it to
+ NOW, not to the timestamp of the last edit
+* (bug 24677) axto= parameters added to allcategories, allimages, alllinks,
+ allmessages, allpages, and allusers
+* (bug 24236) Add add, remove, add-self, remove-self tags to
+ meta=siteinfo&siprop=usergroups
+* (bug 24484) Add prop=pageprops module
+* (bug 24330) Add &redirect parameter to ?action=edit
+* (bug 24722) For list=allusers&auprop=blockinfo, only show blockedby and
+ blockreason if the user is actually blocked.
+* Add format=dump and format=dumpfm, outputs results in PHP's var_dump() format
+* For required string parameters, if '' is provided, this is now classed as
+ missing
+* (bug 24724) list=allusers is out by 1 (shows total users - 1)
+* (bug 24166) API error when using rvprop=tags
+* Introduced "asynchronous download" mode for upload-by-url. Requires
+ $wgAllowAsyncCopyUploads to be true.
+* sinumberingroup correctly gives size of 'user' group, and omits size of
+ implicit groups rather than showing 0.
+* (bug 25248) API: paraminfo errors with certain modules
+* (bug 25303) Fix API parameter integer validation to actually enforce
+ validation on the input values in addition to giving a warning. Also add flag
+ to enforce (die) if integer out of range (breaking change!)
+* (bug 24792) API help for action=purge sometimes wrongly stated whether a
+ POST request was needed due to cache pollution
+* Added iiprop=parsedcomment to prop=imageinfo, similar to prop=revisions
+* Added rvparse to parse revisions. For performance reasons if this option is
+ used, rvlimit is enforced to 1.
+* (bug 25748) If a action=parse request provides an oldid that is actually the
+ current revision id, try the parser cache, and save it to it if necessary
+* (bug 25463) Export header should not be shown if no pages were requested, to
+ reduce confusion
+* (bug 25648) API discovery information has been added as RSD link in page
+ <head> and by providing an API module action=rsd. Added hook
+ ApiRsdServiceApis for extensions to add their own service to the services
+ list.
+* The HTML of diff output markers has changed. Hyphens are now minus signs,
+ empty markers are now filled with non-breaking-space characters
+* (bug 25741) Add more data to list=search's srprop
+* (bug 25760) counter property still reported by the API when
+ $wgDisableCounters enabled
+* (bug 25987) prop=info&inprop=watched now also works for missing pages
+* (bug 26006) prop=langlinks now allows obtaining full URL
+* (bug 26075) ApiDelete.php now calls correctly ArticleDelete hook
+* (bug 26089) add block expiration to blockinfo
+* (bug 26125) prop=imageinfo&iiprop=size now returns the page count if the
+ file is a multi-page file
+* (bug 10268) Added linktodiffs parameter on action=feedwatchlist
+* (bug 26219) Show API limits for multi values in description
+
+=== Languages updated in 1.17 ===
+
+MediaWiki supports over 330 languages. Many localisations are updated
+regularly. Below only new and removed languages are listed, as well as
+changes to languages because of Bugzilla reports.
-== Changes since 1.16.0 ==
+* Moroccan Spoken Arabic (ary) (new)
+* Banjar (bjn) (new)
+* Danish (dk) (removed deprecated language code)
+* Fiji Hindi (Devangari script) (removed)
+* Kabardian (kdb) (new, dummy)
+* Kabardian (Cyrillic) (kbd-cyrl) (new)
+* Latgalian (ltg) (new)
+* Minangkabau (min) (new)
+* Dutch (informal) (nl-informal) (new)
+* Rusyn (rue) (new)
+
+* (bug 23156) Commafy and search normalization updated for Belarusian
+ (Taraškievica).
+* (bug 23283) Native name for Old English -> Ænglisc.
+* (bug 23364) Native name for Azerbaijani -> Azərbaycanca.
+* (bug 24593) Native name for Sorani now uses only Arabic script.
+* (bug 24628) Generic translations for NS_USER/NS_USER_TALK for Esperanto.
+* (bug 24917) Polish as fallback for Kashubia.
+* (bug 24794) Tatar link trail updated.
+* Esperanto date format corrected.
-* (bug 24981) Allow extensions to access SpecialUpload variables again
-* (bug 24724) list=allusers was out by 1 (shows total users - 1)
-* (bug 24166) Fixed API error when using rvprop=tags
-* For wikis using French as a content language, Special:Téléchargement works
- again as an alias for Special:Upload.
-* (bug 25167) Correctly load JS fixes for IE6 (fixing a regression in 1.16.0)
-* (bug 25248) Fixed paraminfo errors in certain API modules.
-* The installer now has improved handling for situations where safe_mode is
- active or exec() and similar functions are disabled.
-* (bug 19593) Specifying --server in now works for all maintenance scripts.
-* Fixed $wgLicenseTerms register globals.
-* (bug 26561) Fixed clickjacking vulnerabilities by introducing support for
- X-Frame-Options. The header value can be configured using $wgBreakFrames and
- $wgEditPageFrameOptions.
-
-== Changes since 1.16 beta 3 ==
-
-* (bug 23769) Disabled HTML 5 client-side form validation. Was introduced in
- 1.16 beta 1, but is currently poorly supported by browsers.
-* (bug 23175) Re-added window.ta variable for backwards compatibility.
-* (bug 23264) Fixed breakage of various command line scripts due to extra line
- endings being inserted by Maintenance::output().
-* Fixed HTTP client functionality with safe_mode=On.
-* Fixed parser tests broken in 1.16 beta 3.
-* For Oracle DB backend: fixed parser tests and table prefix feature.
-* (bug 23767) Fixed PHP warning when REQUEST_URI is blank (IIS issue).
-* Fixed plural function for Northern Sami (se)
-* (bug 23597) Fixed conflicts between ID attributes in the Vector skin and
- parser-generated heading IDs. Renamed head, panel, head-base and page-base.
-* Disabled $wgHitcounterUpdateFreq>1 feature on SQLite, does not work yet.
-* (bug 23465) Don't ignore the predefined destination filename on
- Special:Upload after following a red link to a file.
-* In SQLite full-text search feature: fixed "move page" feature, was non-
- functional.
-* (bug 24565) Fixed Cache-Control headers sent from API modules, to protect
- user privacy in the case where an attacker can access the wiki through the
- same HTTP proxy as a logged-in user.
-* Fixed an XSS vulnerability in profileinfo.php for installations with
- $wgEnableProfileInfo = true (false by default)
-* Fixed a case where an X-Vary-Options header was sent despite $wgUseXVO being
- false. Fixed a minor header parsing issue when $wgUseXVO = true.
-* Fixed a register_globals arbitrary inclusion vulnerability in
- MediaWikiParserTest.php, introduced in 1.16 beta 1.
-
-== Changes since 1.16 beta 2 ==
-
-* Fixed bugs in the [[Special:Userlogin]] and [[Special:Emailuser]] handling of
- invalid usernames.
-* Fixed sorting in [[Special:Allmessages]]
-* (bug 23113) Fixed title in the show/hide links on diff pages
-* (bug 23117) Fixed API rollback, was returning "badtoken" for valid requests
-* (bug 23127) Re-added missing $1 parameter to the uploadtext message
-* Fixed a bug in the Vector skin where personal tools display behind the logo
-* (bug 23139) Fixed a bug in edit conflict resolution, where both textboxes
- showed the same text.
-* (bug 23115, bug 23124) Fixed various problems with <title> and <h1> elements
- in page views and previews when the language converter is enabled.
-* (bug 23148) Fixed a local path disclosure vulnerability in ImageMagick image
- scaling, which was introduced in 1.16 beta 1.
-* Improved error checking on installer.
-* (bug 22970) Fixed a JavaScript error in the upload destination conflict
- check.
-* (bug 23167) Check the watch checkbox by default if the watchcreations
- preference is set.
-* (bug 23171) Improve IE6 version check to avoid false positives.
-* (bug 23176) Fixed upload warning override feature "upload new version",
- broken in 1.16 beta 1.
-* Fixed regression in unwatch links sent out in notification emails. When the
- mailing job was deferred via the job queue, the title was incorrect.
-* (bug 23534) Fixed SQL query error in API list=allusers.
-* Fixed a bug in uploads for non-JavaScript clients. An empty string was used
- as the default destination filename, instead of the source filename as
- expected.
-* (bug 23371) Fixed CSRF vulnerability in "e-mail me my password", "create
- account" and "create by e-mail" features of [[Special:Userlogin]]
-* (bug 23687) Fixed XSS vulnerability affecting IE clients only, due to a CSS
- validation issue.
-* Fixed a DoS vulnerability in ImageMagick image scaling. ImageMagick
- expanded wildcard characters "?" and "*" in image filenames, potentially
- causing large numbers of images to be scaled in response to a single request.
- The fix for this involves breaking the scaling of such image filenames until
- ImageMagick 6.6.1-5 or later is deployed, see bug 23361 for more details.
-* (bug 23608) Fixed invalid HTML in diff pages.
-
-=== Changes since 1.16 beta 1 ===
-
-* Fixed errors in maintenance/patchSql.php
-* (bug 19627) Fix regression from r57867 where HTMLForm would output
- <element classes="foo bar"> rather than <element class="foo bar">
-* Fixed broken "-r" option to maintenance/lag.php
-* (bug 23076) Fixed login CSRF vulnerability. Logins now require a token to
- be submitted along with the user name and password.
+== MediaWiki 1.16 ==
=== Configuration changes in 1.16 ===
diff --git a/INSTALL b/INSTALL
index 2a35216d..1f226fe0 100644
--- a/INSTALL
+++ b/INSTALL
@@ -6,7 +6,7 @@ Starting with MediaWiki 1.2.0, it's possible to install and configure the wiki
"in-place", as long as you have the necessary prerequisites available.
Required software:
-* Web server with PHP 5.2.3 or higher (1.16 was the last release to support 5.1.x)
+* Web server with PHP 5.2.3 or higher.
* A SQL server, the following types are supported
** MySQL 4.0.14 or higher
** PostgreSQL 8.3 or higher
diff --git a/RELEASE-NOTES b/RELEASE-NOTES
deleted file mode 100644
index d4eb8bf4..00000000
--- a/RELEASE-NOTES
+++ /dev/null
@@ -1,891 +0,0 @@
-= MediaWiki release notes =
-
-Security reminder: MediaWiki does not require PHP's register_globals
-setting since version 1.2.0. If you have it on, turn it '''off''' if you can.
-
-== MediaWiki 1.17.1 ==
-
-2011-11-24
-
-This a maintenance and security release of the MediaWiki 1.17 branch.
-
-=== Security changes ===
-* (bug 32276) Skins were generating output using the internal page title which
- would allow anonymous users to determine wheter a page exists, potentially
- leaking private data. In fact, the curid and oldid request parameters would
- allow page titles to be enumerated even when they are not guessable.
-* (bug 32616) action=ajax requests were dispatched to the relevant internal
- functions without any read permission checks being done. This could lead to
- data leakage on private wikis.
-
-=== Summary of selected changes in 1.17 ===
-
-Selected changes since MediaWiki 1.16 that may be of interest:
-
-* A new installer has been introduced. It has a wizard-style interface which is
- translated into many languages. Many shortcomings in the old installer were
- addressed with this rewrite. Note that it is no longer required for the config
- directory to be made writable by the webserver. Instead the generated
- LocalSettings.php file is offered as a download, which you must then upload
- to the wiki's base directory.
-
-* ResourceLoader, a new framework for delivering client-side resources such as
- JavaScript and CSS, has been introduced. These resources are now delivered
- through the new entry point script "load.php", instead of as static files
- served directly by the web server. This allows minification, compression and
- client-side caching to be used more effectively, which should provide a net
- performance improvement for most users.
-
-* Category sorting has been improved.
-** Sorting is now case insensitive.
-** Sub-categories, pages and files can now be paged separately.
-** When several pages are given the same sort key, they sort by their
- names instead of randomly.
-
-* The lowest supported version of PHP is now 5.2.3. If necessary, please
- upgrade PHP prior to upgrading MediaWiki.
-
-=== Changes since 1.17.0 ===
-
-* (bug 29535) Added missing Creative Commons CC0 icon.
-* (bug 29726) Fixed failure to load internationalization messages in
- client-side scripts on WebKit-based browsers.
-* Fixed a bug in message transformation where the previous language could leak
- into later transformations in the UI language.
-* (bug 29091) Fixed form of native name for Ossetic language (Иронау -> Ирон)
-* Fixed maintenance scripts upgrade1_5.php and rebuildImages.php, they did not
- work at all since 1.17 beta 1.
-* (bug 29531) Fixed img_auth.php for thumbnails and other filenames with
- multiple dots, was broken by the fix for bug 28840.
-* In the maintenance script purgeList.php, fixed a fatal error when a page
- title is given, instead of a URL.
-* (bug 19514) Unordered list list-style-image should be IE6-compatible (8-bit).
-* Installer checked for magic_quotes_runtime instead of register_globals.
-* $wgSVGMaxSize is now applied to the smaller of width or height, making very
- wide pano/timeline/diagram SVGs renderable at saner sizes.
-* (bug 29959) Installer fatal when cURL and allow_url_fopen is disabled and user
- tries to subsribe to mediawiki-announce.
-* Installer checked for magic_quotes_runtime instead of register_globals
-* (bug 30131) XCache with variable caching disabled no longer used for variable
- caching (CACHE_ACCEL)
-* (bug 30264) Changed installer-generated LocalSettings.php to use require_once()
- instead require() for included extensions.
-* (bug 26486) ResourceLoader modules with paths to nonexistent files cause PHP
- warnings/notices to be thrown
-* (bug 30907) Special:Unusedcategories should sort ascendingly.
-* (bug 30219) The page shown when LocalSettings.php does not exist was broken on
- Windows servers.
-
-=== Changes since 1.17.0rc1 ===
-
-* Fixed syntax error in generated LocalSettings.php when a non-default user
- rights profile is chosen.
-* (bug 29399) Fixed PostgreSQL installation when the DB user for installation
- is the same as the one for web access.
-* (bug 29233) Fixed failover for DB slave servers. When a DB slave went down,
- an error was immediately shown to the user, instead of trying another slave.
- Was broken since 1.17 beta 1.
-* (bug 29278) Fixed PHP fatal error when attempting to add text to a page via a
- redirect.
-* (bug 29408) Fixed uploads of files with MIME types that aren't detected by
- MediaWiki.
-* Removed DEFAULT '' NOT NULL field definitions from Oracle DB schema because
- using the DEFAULT value ('') in DML broke Oracle backend as it treats an
- empty VARCHAR2 value as NULL. Indexes on Oracle do not require NOT NULL
- fields.
-
-=== Changes since 1.17 beta 1 ===
-
-* Fixed warning about missing file "password.js".
-* When installing on MySQL, don't attempt to create a new database user if the
- same user is used for installation and web access.
-* Fixed SQL query errors in queries with table aliases.
-* (bug 27891) Fixed the "chronology protector", broken since 1.17beta1, which
- ensures that when database replication is used, the new version is seen by
- the user immediately after they create or edit an article.
-* (bug 28845) Allow PostgreSQL installation using a non-root user account which
- has role creation abilities.
-* When installing on PostgreSQL and the install account is the same as the web
- account, check to make sure that the account has suitable privileges in the
- mediawiki schema.
-* (bug 28172) Fixed error in PostgreSQL installation when creating the wiki
- sysop account.
-* Fixed an issue with the Oracle installer in cases where the user is different
- to the database name.
-* Added "unblockself" to the list of available rights.
-* In the installer, fixed the "user rights profile" option, it never worked.
-* (bug 29117) Fixed Hebrew localisation of the installer.
-* (bug 28840) Reduce the collateral damage caused by the fix for bug 28235 (XSS
- on Internet Explorer 6 due to a file extension in the query string) by
- reducing the number of URLs that are blocked, and by redirecting the request
- to a safer URL where possible instead of blocking it.
-* (bug 28812) Fixed documentation of API action=parse.
-* (bug 28979) Fixed styling of <abbr> and <acronym>.
-* Fixed the error message displayed when you try to create an account by email,
- but an email address is not given.
-* Fixed JS error due to missing dependency for jquery.suggestions.
-* Exposed $wgExtensionAssetsPath in JavaScript.
-* (bug 28738) Made ResourceLoader support environments with small URL length
- limits. The length limit can be configured via $wgResourceLoaderMaxQueryLength,
- and this is set automatically in the generated LocalSettings.php when the
- php.ini variable "suhosin.get.max_value_length" is set. When a URL exceeds
- this limit, the request is split up. Also, reduced the average length of
- load.php URLs by using a more compact parameter format.
-* (bug 25262) Fix for minification of hardcoded data: URIs in CSS.
-* (bug 25124) Respect $wgStyleDirectory in ResourceLoader.
-* Allow installation when no HTTP client is available, don't throw an exception.
-* (bug 27465) Fix metadata extraction for SVG files using unusual namespace
- names.
-* (bug 29174) Fix regression in upload-by-URL: uploading files larger than the
- PHP memory limit should work again.
-* Fixed the display of comments in the new user log.
-* (bug 28237) When installing extensions using the web-based installer, create
- any necessary database tables.
-* (bug 28983) Fixed automated installation of extensions that overwrite $path.
-* Fixed error caused by missing magic words.
-* Fixed breakage of article editing in PostgreSQL due to text search
- configuration errors.
-* Fixed the HTTPS client used when Curl is not available. This avoids an error
- during install about failure of the mediawiki-announce subscription.
-* (bug 28162) When installing to PostgreSQL, respect the "database port" input,
- it was ignored.
-
-=== Configuration changes in 1.17 ===
-
-* $wgLogAutocreatedAccounts controls whether autocreation of accounts is logged
- to new users log.
-* (bug 22858) $wgLocalStylePath is by default set to the same value as
- $wgStylePath but should never point to a different domain than the site is
- on, allowing skins to use .htc files which are not cross-domain friendly.
-* $wgFileStore has been deprecated. The only usage $wgFileStore['deleted'] has
- been turned into $wgDeletedDirectory.
-* $wgDeletedDirectory has been added to specify what directory to place deleted
- uploads in.
-* IBM DB2 database no longer uses the db specific $wgDBport_db2 variable but the
- normal $wgDBport.
-* $wgCategoryPrefixedDefaultSortkey was removed and is now always false. This
- provides more sensible sorting behavior for categories.
-* Removed unused globals: $wgEnableSerializedMessages, $wgCheckSerialized,
- $wgUseMemCached, $wgDisableSearchContext, $wgColorErrors, $wgUseZhdaemon,
- $wgZhdaemonHost and $wgZhdaemonPort.
-* (bug 24408) The include_path is not modified in the default LocalSettings.php
-* $wgVectorExtraStyles was removed, and is no longer in use.
-* Removed $wgUpdates for database updates; extensions should use
- DatabaseUpdater::addExtensionUpdate() via the LoadExtensionSchemaUpdates hook.
-* Removed $wgServerName. It doesn't need to be set anymore and is no longer
- available as input for other configuration items, either.
-* It's no longer necessary for LocalSettings.php to include DefaultSettings.php.
-* It's no longer necessary to set $wgCacheEpoch to the file modification time
- of LocalSettings.php, in LocalSettings.php itself. Instead, this is done
- automatically if $wgInvalidateCacheOnLocalSettingsChange is true (which is
- the default).
-* $wgCopyrightIcon is deprecated and $wgFooterIcons['copyright']['copyright']
- should be used instead.
-* $wgSysopUserBans is deprecated, and will be made permanently true in 1.18.
- If you need this functionality, you should use the BlockIp hook to filter and
- reject such blocks.
-* $wgSysopRangeBans is deprecated, you should set $wgBlockCIDRLimit to maximum
- (32 for IPv4, 128 for IPv6), equivalent to allowing rangeblocks of only 1
- address at a time.
-
-=== New features in 1.17 ===
-
-* (bug 10183) Users can now add personal styles and scripts to all skins via
- User:<name>/common.css and /common.js (if user css/js is enabled).
-* (bug 22748) Add anchors on Special:ListGroupRights.
-* (bug 21981) Add parameter 'showfilename' to <gallery> to automatically
- apply the names of the individual files within the gallery.
-* Future-proof redirection to fragments in Gecko, so things work a little nicer
- if they fix <https://bugzilla.mozilla.org/show_bug.cgi?id=516293>.
-* Support git:// and mms:// protocols by default for external links.
-* (bug 15810) Blocked admins can no longer unblock themselves without the
- 'unblockself' permission (which they have by default).
-* (bug 18499) Added "enhanced" URL parameter to switch between old and enhanced
- changes list.
-* (bug 22925) "sp-contributions-blocked-notice-anon" message now displayed when
- viewing contributions of a blocked IP address.
-* (bug 22474) {{urlencode:}} now takes an optional second parameter for type of
- escaping.
-* Special:Listfiles now supports a username parameter.
-* Special:Random carries over query string parameters.
-* (bug 23206) Add Special::Search hook for detecting successful "Go".
-* When visiting a "red link" of a deleted file, a deletion and move log excerpt
- is provided on the Upload form.
-* (bug 22647) Add category details in search results.
-* (bug 23276) Add hook to Special:NewPages to modify query.
-* Add accesskey 's' and tooltip to 'Save' button at Special:Preferences.
-* Add accesskey 'b' and tooltip to the summary field of edit mode.
-* (bug 20186) Allow filtering Special:Contributions for RevisionDeleted edits.
-* ajaxwatch now uses the API and JQuery, and can be used to animate arbitrary
- watch links, not just to watch the page the link is on.
-* (bug 20976) "searchmenu-new-nocreate" message now displayed when when there
- is no title match in search and the user has no rights to create pages.
-* (bug 23429) Added new hook WatchlistEditorBuildRemoveLine.
-* (bug 22844) Added support for WinCache object caching (for IIS).
-* (bug 23580) Add two new events to LivePreview so that scripts can be notified
- about the beginning and finishing of LivePreview actions.
-* (bug 21278) Now the sidebar allows inclusion of wiki markup.
-* (bug 23733) Add IDs to messages used on CSS/JS pages.
-* Show validity period of the login cookie in Special:UserLogin and
- Special:Preferences.
-* Interlanguage links display the page title in their tooltip.
-* (bug 23621) New Special:ComparePages to compare (diff) two articles.
-* (bug 4597) Provide support in Special:Contributions to show only "current"
- contributions
-* (bug 17857) {{anchorencode}} acts more like how the parser creates section ids
-* (bug 21477) \& can now be used in <math>
-* (bug 11641) \dotsc \dotsm \dotsi \dotso can now be used in <math>
-* (bug 21475) \mathtt and \textsf can now be used in <math>
-* texvc is now run via ulimit4.sh, to limit execution time.
-* SQLite now supports $wgSharedDB.
-* (bug 8507) Group file links by namespace:title on image pages.
-* Stop emitting named entities, so we can use <!DOCTYPE html> while still being
- well-formed XML.
-* texvc now supports \bcancel and \xcancel in addition to \cancel and \cancelto
-* Added scriptExtension setting to $wgForeignFileRepos.
-* ForeignApiRepo uses scriptDirUrl if apiBase not set.
-* (bug 24212) Added MediaWiki:Filepage.css which is also included on foreign
- client wikis.
-* (bug 14685) Double underscore magic word usage is now tracked in the
- page_props table, as well as the behavioral magic words {{DEFAULTSORT}} and
- {{DISPLAYTITLE}}
-* (bug 24045) MediaWiki:Ipb-needreblock is now wrapped in a div with class
- "mw-ipb-needreblock"
-* Non-file pages can no longer be moved to the file namespace, nor vice versa.
-* (bug 671) The <dfn>, <kbd> and <samp> elements have been whitelisted in user
- input.
-* (bug 21503) There's now a "reason" field when creating account for other users.
-* (bug 24418) action=markpatrolled now requires a token.
-* A variety of category sort-related fixes, including:
-** (bug 164) In English, lowercase and uppercase letters now sort the same.
-** (bug 1211) Subcategories, ordinary pages, and files now page separately.
-** When several pages are given the same sort key, they sort by their names
- instead of randomly.
-* (bug 23848) Add {{ARTICLEPATH}} Magic Word.
-* (bug 8140) Add dedicated CSS classes to Special:Newpages elements.
-* (bug 11005) Add CSS class to empty pages in Special:Newpages.
-* The parser cache is now shared amongst users whose different settings aren't
- used in the page.
-* Any attribute beginning with "data-" can now be used in wikitext, per HTML5.
-* (bug 24007) Diff pages now mention the number of users having edited
- intermediate revisions.
-* Added new hook GetIP.
-* Special:Version now displays whether a SQLite database supports full-text
- search.
-* TS_ISO_8691_BASIC was added as a time format, which is used by ResourceLoader
- for versioning.
-* Maintenance scripts get a --memory-limit option to override defaults (which
- is usually to set it to -1 to disable the limit).
-* (bug 25397) Allow uploading (not displaying) of WebP images, disabled
- by default.
-* (bug 23194) Special:ListFiles now has thumbnails.
-* Use hreflang to specify canonical and alternate links, search engine friendly
- when a wiki has multiple variant languages.
-* (bug 19593) Specifying --server in now works for all maintenance scripts.
-* Now rebuildtextindex.php warns if SQLite doesn't support full-text search.
-* (bug 10541) Front/backend separation of installation/upgrade code.
-* (bug 10596) Allow installer to enable extensions already in extensions folder.
-* (bug 20627) Installer should be in languages other than English.
-* Support for metadata in SVG files (title, description).
-* Special:Search: Add CSS classes to 'none found' and 'create link' messages.
-* Add CSS classes (including namespace and pagename) to the enhanced recent
- changes/watchlist entries.
-* (bug 22463) Add hook 'SkinGetPoweredBy' to make 'powered by' icon/text
- customizable.
-* Added CSS print pagination to the print stylesheets.
-* (bug 25960) Add <link rel=canonical"> for File pages of shared/foreign
- file repositories.
-* When viewing a redirect, the redirect arrow and redirection target are both
- wrapped in a div that has the class "redirectMsg" so that the redirection
- arrow can be customized with CSS.
-* (bug 21911) Hard coded limit for long page warning removed. New message
- [[MediaWiki:Longpage-hint]] (empty per default) can be used instead.
- Parameters: $1 shows the formatted textsize in Byte/KB/MB, $2 is the raw
- number of the textsize in Byte.
-* (bug 3276) Give image <gallery>s fluid width.
-* Added uploads link to page subtitle in Special:Contributions.
-* Added Special:Myuploads special page that redirects to Special:Listfiles.
-* The footerlinks used in Monobook/Vector/Modern are now part of common skin
- code, SkinTemplateOutputPageBeforeExec can be used to customize the list.
-* Special wrapping setups can now define MW_CONFIG_FILE to load a config file
- other than LocalSettings.php. This is like MW_CONFIG_CALLBACK but works in
- some cases where MW_CONFIG_CALLBACK will not work.
-* (bug 26574) Added 'upload' to $wgRestrictionTypes, allowing upload protected
- pages to be queried via the API and Special:ProtectedPages, and allowing
- disabling upload protection by removing it from $wgRestrictionTypes.
-* The name attribute of HTMLForm fields can now be overridden by passing a
- 'name' key in the descriptor array. Hidden field names are now treated
- consistently with other fields and, by default, prefixed with 'wp'.
-* (bug 27402) Add support for disabling MWSuggest.
-* (bug 26563) Add bytes changed per revision for stub and full article dumps.
-* (bug 27508) Add $wgSVGMetadataCutoff to limit the maximum amount of an svg we
- look at when finding metadata to prevent excessive resource usage.
-* (bug 198) $wgUpgradeKey allows unlocking the web installer for upgrades
- without having to move LocalSettings.php
-* Added $wgAllowImageTag, which can be set to true to whitelist the <img> tag
- in wikitext.
-* (bug 12797) Add $wgGalleryOptions for adjusting of default gallery display
- options.
-* Added the $wgAllowUserCssPrefs option which allows disabling CSS-based
- preferences; which can improve page loading speed.
-* Added $wgSQLMode for setting database SQL modes - either performance (null)
- or other reasons (such as enabling stricter checks).
-* (bug 20193) Added $wgVectorShowVariantName global configuration variable
- which causes Vector to render the variants drop-down menu with a label
- showing the current variant name. This is off by default, pending further
- research into its user experience implications.
-* The upload link for missing files can now be set separately from the
- navigation link with $wgUploadMissingFileUrl.
-* $wgAdditionalMailParams added to allow setting extra options to mail() calls.
-* Added $wgSecureLogin to optionally login using HTTPS.
-* (bug 25728) Added $wgPasswordSenderName to make the name associated
- with $wgPasswordSender configurable.
-* (bug 22463) $wgFooterIcons added to allow configuration of the icons shown in
- the footers of skins.
-* $wgFileCacheDepth can be used to set the depth of the subdirectory hierarchy.
- used for the file cache. Default value is 2, which matches former behavior.
-
-=== Bug fixes in 1.17 ===
-
-* (bug 17560) Half-broken deletion moved image files to deletion archive
- without updating database.
-* (bug 22666) Submitting user block form with an invalid user name no longer
- throws an error.
-* (bug 22665, bug 22667) User '0' can now be unblocked and have its block
- settings changed.
-* (bug 22606) The body of e-mail address confirmation message is now different
- when the address changed.
-* (bug 22664) Special:Userrights now accepts '0' as a valid user name.
-* (bug 5210) Preload parser now parses <noinclude>, <includeonly> and
- redirects.
-* (bug 22709) IIS7 mishandles redirects generated by OutputPage::output() when
- the URL contains a colon.
-* (bug 22353) Categorised recent changes now works again.
-* (bug 22747) "Reveal my e-mail address in notification e-mails" preference is
- now only displayed when relevant.
-* (bug 22772) {{#special:}} parser function now works with subpages.
-* (bug 18664) Relative URIs in interwiki links cause failed redirects.
-* (bug 19270) Relative URIs in interwiki links break interwiki transclusion.
-* (bug 22903) Revdelete log entries now show in the user preferred language.
-* (bug 22905) Correctly handle <abbr> followed by ISBN.
-* (bug 22940) Namespace aliases pointing to main namespace don't work.
-* (bug 15810) Blocked admins can no longer block/unblock other users.
-* (bug 22876) Avoid possible PHP Notice if $wgDefaultUserOptions is not
- correctly set.
-* (bug 14952) Page titles are renormalized after html entities are removed so
- that links with non-NFC character references work correctly.
-* (bug 22991) wgUserGroups JavaScript variable now reports * group for
- anonymous users instead of null.
-* (bug 22627) Remove PHP notice when deleting a page only hidden users edited.
-* (bug 21520) Anonymous previews now also gives a warning about not being
- logged in (anonpreviewwarning).
-* (bug 22935) image/x-ms-bmp mime type added for BMP files.
-* (bug 23024) Special:ListFiles now escapes file names correctly.
-* (bug 22867) "View source" tab is now only displayed if there's source text.
-* (bug 19393) Feeds now format dates in user language rather than content
- language.
-* (bug 22852) "Served in" comment is now the time used to cache a single page
- when using rebuildFileCache.php
-* (bug 22496) Viewing diff of a redirect page without specifying "oldid".
- parameter no longer makes the page displayed as being the redirect target.
-* (bug 22918) Feed cache keys now use $wgRenderHashAppend.
-* (bug 21916) Last-Modified header is now correct when outputting cached feed.
-* (bug 20049) Fixed PHP notice in search highlighter that occurs in some cases.
-* (bug 23017) Special:Disambiguations now list pages in content namespaces
- rather than only main namespace.
-* (bug 23063) $wgMaxAnimatedGifArea is checked against the total size of all.
- frames, and $wgMaxImageArea against the size of the first frame, rather than
- the other way around. Both now default to 12.5 megapixels. Also, images
- exceeding $wgMaxImageArea can still be embedded at original size.
-* (bug 23078) "All public logs" option on Special:Log is now always the first
- item.
-* (bug 16817) Group names in user rights log are now singular and in lowercase.
-* Special:Preferences no longer crashes if the wiki default date formatting
- style is not valid for the user's interface language.
-* (bug 23167) Check the watch checkbox by default if the watchcreations
- preference is set.
-* Maintenance script cleanupTitles is now able to fix titles stored
- in a negative namespace (which is invalid).
-* (bug 19858) Removed obsolete <big> in interface messages.
-* (bug 21456) "Bad title" error when showing non-local interwiki pages no longer
- displays incorrect tabs.
-* (bug 23190) Improved math representation for text browsers.
-* (bug 22015) Improved upload-by-url error handling and error display.
-* (bug 17941) $wgMaxUploadSize is now honored by all upload sources.
-* (bug 23080) New usernames now limited to 235 bytes so that custom skin files
- work.
-* (bug 23075) Correct MediaTransformError default width in gallery.
-* (bug 16487) The Anonymous user account used on Postgres is no longer
- displayed on Special:Listusers.
-* (bug 23313) Move watchlisthidepatrolled above token in watchlist preferences
- to enhance preference grouping.
-* (bug 23298) Interwiki links with prefix only in log summaries now link to the
- correct link.
-* (bug 23284) Times are now rounded correctly.
-* (bug 23375) Added ogv, oga, spx as extensions for ogg files.
-* (bug 18408) All required permissions for uploading (upload, edit, create).
- are now checked when loading Special:Upload. Toolbar link for Special:Upload
- is no longer shown if the user does not have the required permissions.
-* (bug 23397) texvc in html mode renders \sim as &tilde; not &sim;
-* (bug 23241) License selector should be disabled during upload of a new
- version.
-* (bug 23240) Add ID to namespace selector form on Special:Watchlist.
-* The pipe | character in urls is now escaped.
-* (bug 23422) mp3 files can now be moved.
-* (bug 23448) MediaWiki:Summary-preview is now displayed instead of
- MediaWiki:Subject-preview when previewing summary.
-* (bug 23426) The {{REVISIONMONTH}} variable is now zero-padded and added
- new variable {{REVISIONMONTH1}} when unpadded version is needed.
-* Special:Userrights didn't recognize user as changing his/her own rights if
- user did not capitalize first letter of username.
-* (bug 23507) Add styles for printing wikitables.
-* (bug 19586) Avoid JS errors in mwsuggest when using old browsers such
- as Opera 8.
-* (bug 23563) Old skins now support $wgUploadNavigationUrl and take into
- account upload rights.
-* (bug 1347) Render \phi in math using images, in order to create consistent
- and correct render results.
-* (bug 16573) Render \epsilon in math using images, in order to create
- consistent and correct render results.
-* (bug 22541) Support image redirects when using ForeignAPIRepo.
-* (bug 22967) Make edit summary length cut-off behave correctly for multibyte
- characters.
-* (bug 8689) Long numeric lines no longer kill the parser.
-* (bug 23740) Article::doRedirect() now use $extraQuery parameter correctly if
- the $noRedir parameter is set to true.
-* (bug 23688) Correct mime types for Office 2007 OpenXML documents.
-* (bug 23787) Corrected $wgDefaultSkin's comment in DefaultSettings.php.
-* (bug 23797) Xml::input() now allows '0' for the value parameter.
-* (bug 23747) Make sure that on History pages, the RevDel button is not
- accidentally activated when hitting enter.
-* (bug 23845) Special:ListFiles now uses correct file names without underscores.
-* Ask for permanent login in Special:Preferences only if $wgCookieExpiration > 0.
-* (bug 16356) Repair dumpInterwiki.inc to use proper normalization.
-* (bug 24006) deleteArchivedRevisions.php maintenance script now longer throws
- a fatal error.
-* (bug 23465) Don't ignore the predefined destination filename on
- Special:Upload after following a red link.
-* (bug 23642) Recognize mime types of MS OpenXML documents.
-* (bug 22784) Normalise underscores and spaces in autocomments.
-* (bug 19910) Headings of the form ===+\s+ are now displayed as valid headings.
-* (bug 24022) Only check file extensions on the uploadpage when needed.
-* (bug 24076) Recognize Office 2003 files with OpenXML trailers.
-* (bug 24244) Updated comments in DefaultSettings.php to reflect.
- Image: --> File: namespace rename.
-* Make wfTimestamp recognize negative unix timestamp values.
-* (bug 24401) SimpleSearch: No button/text indicating 'Search' if image is
- disabled.
-* (bug 23293) Do not show change tags when Special:RecentChanges(linked) or
- Special:Newpages is transcluded into another page as it messes up the page.
-* (bug 24517) LocalFile::newFromKey() and OldLocalFile::newFromKey() no longer
- throw fatal errors.
-* (bug 23380) Uploaded files that are larger than allowed by PHP now show a
- useful error message.
-* Uploading to a protected title will allow the user to choose a new name
- instead of showing an error page.
-* (bug 24425) Use Database::replace instead of delete/insert in
- SqlBagOStuff::set to avoid query errors about duplicate keynames.
-* (bug 15470) First letters of filenames are always capitalized by upload JS.
-* (bug 21215) NoLocalSettings.php doesn't tolerate rewrite rules.
-* (bug 21052) Fix link color for stubs in NewPages.
-* (bug 24714) Usage of {{#dateformat: }} in wikis without $wgUseDynamicDates no
- longer pollutes the parser cache.
-* (bug 17031) Correct which characters the parser allows in tag attributes (a
- letter, colon or underscore followed by 0 or more letters, numbers, colons,
- underscores, hyphens, and/or periods).
-* Save 200 useless queries on each category page view.
-* Shell commands will now work on Linux in filesystems mounted noexec.
-* (bug 24804) Corrected commafying in Polish and Ukrainian.
-* "Difference between pages" is now displayed instead of "Difference between
- revisions" on diffs when appropriate.
-* (bug 23703) ForeignAPIRepo fails on findBySha1() when using a 1.14 install as
- a repository due to missing 'name' attribute from the API list=allimages.
-* (bug 24898) MediaWiki uses /tmp even if a vHost-specific tempdir is set, also
- make wfTempDir() return a sane value for Windows on worst-case.
-* (bug 24824) Support ImageMagick 6.5.6-2+ JPEG decoder size hint, to reduce
- memory usage when such an ImageMagick is used for scaling.
-* Disable multithreaded behaviour in recent ImageMagick, to avoid a deadlock
- when a resource limit such as $wgMaxShellMemory is hit.
-* (bug 24981) Allow extensions to access SpecialUpload variables again.
-* (bug 20744) Wiki forgets about an uploaded file.
-* (bug 17913) Don't show "older edit" when no older edit available.
-* (bug 6204) TOC not properly rendered when using $wgMaxTocLevel.
-* (bug 24977) The accesskey in history page now lead directly to the diff.
- instead of alternating focus between the two buttons.
-* (bug 24987) Special:ListUsers does not take external groups into account.
-* (bug 20633) update.php has mixed language output.
-* SQLite system table names are now never prefixed.
-* (bug 25292) SkinSubPageSubtitle hook now passes the Skin object as second
- parameter.
-* (bug 25167) Correctly load JS fixes for IE6 (fixing a regression in 1.16).
-* (bug 25367) wfShellExec() is more explicit when failing due to disabled
- passthru().
-* (bug 25462) Fix double-escaping for section edit link tooltips.
-* action=raw was removed for Special:Statistics. This information is still
- available via the API.
-* (bug 23934) Groups defined in $wgRevokePermissions but not in
- $wgGroupPermissions now appear on Special:ListGroupRights.
-* (bug 23923) Special:Prefixindex no longer shows results if nothing was
- requested.
-* (bug 22308) Search now finds text in default main page immediately after setup.
-* (bug 25697) Make sure empty lines render in diff view.
-* Use an actual minus sign in diff views, instead of a hyphen.
-* (bug 23732) Clarified "n links" message on Special:MostLinkedFiles.
-* (bug 23731) Clarified "n links" message on Special:MostLinkedTemplates.
-* (bug 25642) A exception is now thrown instead of a fatal error when using
- $wgSMTP without PEAR mail package.
-* (bug 19633) When possible, Upscale small SVGs when creating thumbnails.
-* (bug 11013) Database driver detection needs rewriting for robustness.
-* (bug 13409) Installer prompts could use clarification--now has help boxes.
-* (bug 16902) Installer spews warnings when exec() and dl() are not available.
-* (bug 19129) Only show MyISAM/InnoDB when supported.
-* (bug 17762) Only show other e-mail options when e-mail is globally enabled.
-* Cache multiple sizes of InstantCommons thumbnails.
-* (bug 25488) Disallowing anonymous users to read pages no longer throws error
- on discussion pages with vector as default skin.
-* (bug 24833) Files name in includes/diff/ are now less confusing.
-* (bug 25713) SpecialPage::resolveAlias() now normalise spaces to underscores.
-* (bug 25829) Special:Mypage and Special:Mytalk now forward oldid, diff and dir
- parameters.
-* (bug 25175) HTML file cache now honor $wgCacheDirectory if
- $wgFileCacheDirectory is not set.
-* (bug 13353) Diff3 version checks were too strict, did not detect working diff3.
-* (bug 25843) Links to special pages using link= attribute on images are now.
- normalised like normal links to special pages.
-* (bug 21364) External links using link= attribute on images now respect
- $wgExternalLinkTarget.
-* (bug 17789) Added a note to the total views on Special:Statistics saying that
- is doesn't count non-existing pages and special pages.
-* (bug 17996) HTTP redirects are now combined when requesting a special page.
-* (bug 19944) Link on image thumbnails no longer link to "Media:" namespace in
- some cases.
-* (bug 25670) wfFindFile() now checks the namespace of the given title, only
- "File" and "Media" are allowed now.
-* (bug 25872) Rename the HttpRequest class to MWHttpRequest to avoid conflict
- with php extension that defines same class.
-* (bug 20591) There's now a different message on Special:MovePage when
- $wgFixDoubleRedirects is set to false.
-* Fixed PHP warnings when updating a broken MySQL database.
-* (bug 26023) Corrected deleteBacth.php's documentation.
-* (bug 25451) Improved datetime representation in 32 bit php >= 5.2.
-* Show "skin does not exist error" only when the skin is inputted in the wrong
- case.
-* (bug 26164) Potential html injection when the database server isn't available.
-* (bug 26160) Upload description set by extensions are not propagated.
-* (bug 9675) generateSitemap.php now takes an --urlpath parameter to allow
- absolute URLs in the sitemap index (as required e.g. by Google).
-* Partial workaround for bug 6220: at least make files on shared repositories
- show up as (struck-out) bluelinks instead of redlinks on Special:WantedFiles.
-* rebuildFileCache.php no longer creates inappropriate cache files for redirects.
-* (bug 25512) Subcategory list should not include category prefix for members.
-* (bug 10871) Javascript and CSS pages in MediaWiki namespace are no longer
- treated as wikitext on preview.
-* Page existence is now not revealed (in the colour of the tabs) to users who
- cannot read the page in question.
-* (bug 22753) Output from update.php is more clear when things changed, entries
- indicating nothing changed are now all prefixed by "..."
-* (bug 16019) $wgArticlePath = "/$1" no longer breaks API edit/watch actions.
-* (bug 18372) File types blacklisted by $wgFileBlacklist will no longer be shown as
- "Permitted file types" on the upload form.
-* (bug 26540) Fixed wrong call to applyPatch in MysqlUpdater.
-* (bug 26034) Make the "View / Read" tab in content_navigation style tabs remain
- selected when the action is "purge".
-* (bug 26733) Wrap initial table creation in transaction.
-* (bug 26208) Mark directionality of some interlanguage links.
-* (bug 26716) Provide link to instructions for external editor related preferences.
-* (bug 26961) Hide anon edits in watchlist preference now actually works.
-* (bug 1379) Installer directory conflicts with some hosts' configuration panel.
-* (bug 27781) Installer does not warn about 5.1.x. Added a compatibility function
- for array_key_exists().
-* Fix XML well-formedness on a few pages when $wgHtml5 is true (the default).
-* (bug 28069) MediaWiki fails streaming files when mod_deflate and ob_gzhandler
- are also set.
-* (bug 26223) Concurrently moving an article to different titles leaks a
- redirect revision with no page.
-* (bug 15641) Fixed permissions checks in Special:Import which allowed users
- without the 'import' permission to import pages from configured import sources.
-* (bug 26449) Keep underlines from headings outside of tables and thumbs by
- adding overflow:hidden to h1,h2,h3,h4,h5,h6 (also fixes editsection bunching).
-* (bug 26708) Remove background-color:white from tables in Monobook and Vector.
-* (bug 26781) {{PAGENAME}} and related parser functions escape their output better.
-* (bug 26716) Provide link to instructions for external editor related preferences
- and add a comment to the ini control file explaining what is going on.
-* (bug 28422) Remove color:black from tables in Monobook and Vector. And add it
- to table.wikitable instead.
-* (bug 27560) Search queries no longer fail in walloon language.
-* (bug 27700) The upload protection can now also be set for files that do not
- exist.
-* (bug 28034) uploading file to local wiki when file exists on shared repository
- (commons) gives spurious info in the warning message.
-* Usernames get lost when selecting different sorts on Special:listfiles.
-* (bug 28166) UploadBase assumes that 'edit' and 'upload' rights are not per
- page restrictions.
-* (bug 28242) Make redirects generated by urls containing a local interwiki
- prefix be a 301 instead of a 302.
-* (bug 28568) Entries in the iwlinks table are now removed on page deletion.
-* (bug 28306) Fix exposure of suppressed usernames in ForeignDBRepo.
-* (bug 28444) Fix regression: edit-on-doubleclick retains revision id again.
-* UtfNormal::cleanUp on an invalid utf-8 sequence no longer returns false if
- intl installed.
-* (bug 26729) Category pages should return 404 if they do not exist and have no
- members.
-* (bug 28214) When page not found, sends malformed HTTP/1.x instead of HTTP/1.1
- in header of response.
-* (bug 27634) TOC title appears in wrong language.
-* (bug 27761) Fix regression: pages with Esperanto titles containing convertible
- character sequences became unreachable.
-* (bug 27508) SVGMetadataExtractor takes too much resources on huge svgs.
-* (bug 27465) SVG thumbnail generation.
-* (bug 27467) preload can leave UNIQ.
-* (bug 27539) Allow attributes beginning with a digit in wiktext tag parameters.
-* (bug 27328) using relative paths in CSS imports in MediaWiki:Common.css broken
- in 1.17.
-* (bug 27333) Fix repetitive last-seen time queries on page history.
-* (bug 26250, bug 23817) Fix wfObjectToArray() to descend into arrays; fixes
- processing of JSON return values for ForeignAPIRepo when native json module
- not present.
-* (bug 25675) Fix search suggestions for Special: pages with spaces.
-* (bug 25571) Xml::encodeJsVar now passes floats natively instead of converting
- to strings.
-* (bug 27338) Gallery in 1.17 breaks for audio/video + ogghandler.
-* (bug 27302) Don't append the current timestamp for user/site modules when no
- user/site JS/CSS is present.
-* (bug 27016) dumpTextPass.php now consider the "output" parameter.
-* (bug 22606) don't send the "someone registred an account" message when setting
- email address (i.e. old one empty) in user preferences.
-* (bug 26458) Section edit links appear on pages that user does not have right
- to edit.
-* (bug 28611) Don't die in SqlBagOStuff::incr() if there's a race condition.
-* (bug 16886) Sister projects box moves down the extract of the first result
- in IE 7.
-* (bug 17398) Fixed "link" parameter in image links with "thumb" or "frame"
- parameter.
-
-=== API changes in 1.17 ===
-
-* BREAKING CHANGE: action=patrol now requires POST.
-* BREAKING CHANGE: patrol token is no longer the same as edit token.
-* BREAKING CHANGE: Session keys returned by ApiUpload are now strings instead
- of integers.
-* BREAKING CHANGE: (bug 25303) Fix API parameter integer validation to actually
- enforce validation on the input values in addition to giving a warning.
- Also add flag to enforce (die) if integer out of range.
-* (bug 24650) Fix API to work with categorylinks changes.
-* action=parse now correctly returns an error for nonexistent pages.
-* (bug 27201) Special:WhatLinksHere output no longer contains duplicate IDs.
-* (bug 26560) On allusers if limit < total number of users, last user gets
- duplicated.
-* (bug 27715) imageinfo didn't respect revdelete.
-* (bug 27479) API error when using both prop=pageprops and
- prop=info&inprop=displaytitle.
-* (bug 27862) Useremail module didn't properly return success on success.
-* (bug 27590) prop=imageinfo now allows querying the media type.
-* (bug 27587) list=filearchive now outputs full title info.
-* (bug 27897) list=allusers and list=users list hidden users.
-* (bug 22738) Allow filtering by action type on query=logevent.
-* (bug 22764) uselang parameter for action=parse.
-* (bug 22944) API: watchlist options are inconsistent.
-* (bug 22868) don't list infinite block expiry date as "now" in API logevents.
-* (bug 22290) prop=revisions now outputs "comment" field even when comment.
- is empty, for consistency with list=recentchanges.
-* (bug 19721) API action=help should have a way to just list for a specific
- module.
-* (bug 23458) Add support for pageid parameter to action=parse requests.
-* (bug 23460) Parse action should have a section option.
-* (bug 21346) Make deleted images searchable by hash.
-* (bug 23461) Normalise usage of parameter names in parameter descriptions.
-* (bug 23548) Allow access of another users watchlist through watchlistraw
- using token and username.
-* (bug 23524) Api Modules as followup to bug 14473 (Add iwlinks table to
- track inline interwiki link usage).
-* Add pltitles and tltemplates to prop=links and prop=templates respectively,
- similar to prop=categories's clcategorie.
-* (bug 23834) Invalid "thumbwidth" and "thumbheight" in "imageinfo" query when
- thumbnailing larger than original image.
-* (bug 23835) Need "thumbmime" result in "imageinfo" query.
-* (bug 23851) Repair diff for file redirect pages.
-* (bug 24009) Include implicit groups in action=query&list=users&usprop=groups.
-* (bug 24016) API: Handle parameters specified in simple string syntax
- ( 'paramname' => 'defaultval' ) correctly when outputting help.
-* (bug 24089) Logevents causes PHP Notice if leprop=title isn't supplied.
-* (bug 23473) Give description of properties on all modules.
-* (bug 24136) unknownerror when adding new section without summary, but
- forceditsummary.
-* (bug 22339) Added srwhat=nearmatch to list=search to get a "go" result.
-* (bug 24303) Added new &servedby parameter to all actions which adds the
- hostname that served the request to the result. It is also added
- unconditionally on error.
-* (bug 24185) Titles in the Media and Special namespace are now supported for
- title normalization in action=query. Special pages have their name resolved
- to the local alias.
-* (bug 24296) Added converttitles parameter to convert titles to their
- canonical language variant.
-* (bug 23936) Add "displaytitle" to query/info API.
-* (bug 24485) Make iwbacklinks a generator, optionally display iwprefix and
- iwtitle.
-* (bug 24564) Fix fatal errors when using list=deletedrevs, prop=revisions or
- one of the backlinks generators with limit=max.
-* (bug 24656) API's parse module needs option to disable PP report.
-* PARAM_REQUIRED parameter flag added. If this flag is set, and the end user
- does not set the parameter, the API will automatically throw an error.
-* (bug 24665) When starttimestamp is not specified, fake it by setting it to
- NOW, not to the timestamp of the last edit.
-* (bug 24677) axto= parameters added to allcategories, allimages, alllinks,
- allmessages, allpages, and allusers.
-* (bug 24236) Add add, remove, add-self, remove-self tags to
- meta=siteinfo&siprop=usergroups.
-* (bug 24484) Add prop=pageprops module.
-* (bug 24330) Add &redirect parameter to ?action=edit.
-* (bug 24722) For list=allusers&auprop=blockinfo, only show blockedby and
- blockreason if the user is actually blocked.
-* Add format=dump and format=dumpfm, outputs results in PHP's var_dump() format.
-* For required string parameters, if '' is provided, this is now classed as
- missing.
-* (bug 24724) list=allusers is out by 1 (shows total users - 1).
-* (bug 24166) API error when using rvprop=tags.
-* Introduced "asynchronous download" mode for upload-by-url. Requires
- $wgAllowAsyncCopyUploads to be true.
-* sinumberingroup correctly gives size of 'user' group, and omits size of
- implicit groups rather than showing 0.
-* (bug 25248) API: paraminfo errors with certain modules.
-* (bug 24792) API help for action=purge sometimes wrongly stated whether a
- POST request was needed due to cache pollution.
-* Added iiprop=parsedcomment to prop=imageinfo, similar to prop=revisions.
-* Added rvparse to parse revisions. For performance reasons if this option is
- used, rvlimit is enforced to 1.
-* (bug 25748) If a action=parse request provides an oldid that is actually the
- current revision id, try the parser cache, and save it to it if necessary.
-* (bug 25463) Export header should not be shown if no pages were requested, to
- reduce confusion.
-* (bug 25648) API discovery information has been added as RSD link in page.
- <head> and by providing an API module action=rsd. Added hook
- ApiRsdServiceApis for extensions to add their own service to the services
- list.
-* The HTML of diff output markers has changed. Hyphens are now minus signs,
- empty markers are now filled with non-breaking-space characters.
-* (bug 25741) Add more data to list=search's srprop.
-* (bug 25760) counter property still reported by the API when
- $wgDisableCounters enabled.
-* (bug 25987) prop=info&inprop=watched now also works for missing pages.
-* (bug 26006) prop=langlinks now allows obtaining full URL.
-* (bug 26075) ApiDelete.php now calls correctly ArticleDelete hook.
-* (bug 26089) add block expiration to blockinfo.
-* (bug 26125) prop=imageinfo&iiprop=size now returns the page count if the
- file is a multi-page file.
-* (bug 10268) Added linktodiffs parameter on action=feedwatchlist.
-* (bug 26219) Show API limits for multi values in description.
-* (bug 28070) Fix watchlist RSS for databases that store timestamps in a
- real timestamp field.
-* (bug 27722) list=filearchive now supports revdel.
-
-=== Language support changes in 1.17 ===
-
-MediaWiki supports over 330 languages. Many localizations are updated regularly.
-
-The following languages were added:
-
-* Moroccan Spoken Arabic (ary)
-* Banjar (bjn)
-* Kabardian (kdb)
-* Kabardian (Cyrillic) (kbd-cyrl)
-* Latgalian (ltg)
-* Minangkabau (min)
-* Dutch (informal) (nl-informal)
-* Rusyn (rue)
-
-Other significant changes to MediaWiki's language support:
-
-* Fiji Hindi (Devangari script) was removed.
-* Removed deprecated language code "dk" (Danish), use "da" instead.
-* Link trail added for sl and sh.
-* (bug 27633) Add characters to linkTrail for Portuguese (pt and pt-br).
-* (bug 23156) Commafy and search normalization updated for Belarusian
- (Taraškievica).
-* (bug 23283) Native name for Old English -> Ænglisc.
-* (bug 23364) Native name for Azerbaijani -> Azərbaycanca.
-* (bug 24593) Native name for Sorani now uses only Arabic script.
-* (bug 24628) Generic translations for NS_USER/NS_USER_TALK for Esperanto.
-* (bug 24917) Polish as fallback for Kashubia.
-* (bug 24794) Tatar link trail updated.
-* Esperanto date format corrected.
-* (bug 28159) Change interwiki name of language kbd to КъÑбÑÑ€Ð´ÐµÐ¸Ð±Ð·Ñ /
- Qabardjajəbza.
-* (bug 28184) Namespaces for the Latgalian Wikipedia.
-* (bug 25010) Bashkir-language interwikis: linktext change from Башҡорт
- to БашҡортÑа.
-* (bug 26395) Change name of Cornish language to Kernowek.
-
-=== Other changes in 1.17 ===
-
-* DatabaseFunctions.php that was needed for compatibility with pre-1.3
- extensions has been removed.
-* XmlFunctions.php has been removed. Use the Xml or Html classes as appropriate.
-* The FailFunction "error handling" method has now been removed
-* Sysops now have the "suppressredirect" right by default
-* Removed $wgRemoteUploads. It was not well supported and superseded by
- $wgUploadNavigationUrl.
-* (bug 26253) $wgPostCommitUpdateList has been removed
-* The PHPUnit test suite has been removed from this release due to serious issues
- which should be resolved by the 1.18 release.
-* Oracle DB now uses the __destruct fuction to commit/close connection as it
- doesn't commit on close if transation is triggered in OCI.
-
-== Compatibility ==
-
-MediaWiki 1.17 requires PHP 5.2.3 or later.
-
-MySQL is the recommended DBMS. PostgreSQL or SQLite can also be used, but
-support for them is somewhat less mature. There is experimental support for IBM
-DB2 and Microsoft SQL Server.
-
-The supported versions are:
-
-* MySQL 4.0 or later
-* PostgreSQL 8.3 or later
-* SQLite 3
-* Oracle 9.0.1 or later
-
-== Upgrading ==
-
-1.17 has several database changes since 1.16, and will not work without schema
-updates.
-
-If upgrading from before 1.11, and you are using a wiki as a commons repository,
-make sure that it is updated as well. Otherwise, errors may arise due to
-database schema changes.
-
-If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
-new database fields are filled with data.
-
-If you are upgrading from MediaWiki 1.4.x or earlier, some major database
-changes are made, and there is a slightly higher chance that things could
-break. Don't forget to always back up your database before upgrading!
-
-See the file UPGRADE for more detailed upgrade instructions.
-
-For notes on 1.16.x and older releases, see HISTORY.
-
-== Online documentation ==
-
-Documentation for both end-users and site administrators is available on
-MediaWiki.org, and is covered under the GNU Free Documentation License (except
-for pages that explicitly state that their contents are in the public domain):
-
- http://www.mediawiki.org/wiki/Documentation
-
-== Mailing list ==
-
-A mailing list is available for MediaWiki user support and discussion:
-
- http://lists.wikimedia.org/mailman/listinfo/mediawiki-l
-
-A low-traffic announcements-only list is also available:
-
- http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
-
-It's highly recommended that you sign up for one of these lists if you're
-going to run a public MediaWiki, so you can be notified of security fixes.
-
-== IRC help ==
-
-There's usually someone online in #mediawiki on irc.freenode.net
diff --git a/RELEASE-NOTES-1.18 b/RELEASE-NOTES-1.18
new file mode 100644
index 00000000..182d3152
--- /dev/null
+++ b/RELEASE-NOTES-1.18
@@ -0,0 +1,794 @@
+= MediaWiki release notes =
+
+Security reminder: MediaWiki does not require PHP's register_globals
+setting since version 1.2.0. If you have it on, turn it '''off''' if you can.
+
+== MediaWiki 1.18 ==
+2011-11-24
+
+This is the first stable release of the MediaWiki 1.18 branch.
+
+=== Summary of selected changes in 1.18 ===
+
+Selected changes since MediaWiki 1.17 that may be of interest:
+
+* Some of the more commonly used MediaWiki extensions are now included in the
+ release tarball. These extensions are ConfirmEdit, Gadgets, Nuke, ParserFunctions,
+ Renameuser, Vector and WikiEditor.
+
+* Gender support has been improved, meaning user pages can display the correct gender
+ variant of "User" can now be used.
+
+* MediaWiki can now detect the camera orientation of an image from the Exif metadata, and
+ can rotate the image thumbnail appropriately. Metadata support has been generally
+ improved, and can now extract IPTC and XMP metadata.
+
+* Improved directionality support in 1.18 means that MediaWiki is better to use for
+ RTL users.
+
+* MediaWiki now supports protocol - relative URLs in links, interwiki targets and $wgServer
+
+* Math support has been removed from core
+
+=== Changes since 1.18.0rc1 ===
+* (bug 32228) regression in Special:Search which did not conserve profile on new search
+* (bug 32460) Categories were improperly aligned in Simple and CologneBlue
+* (bug 32412) TOC links on [[Special:EditWatchlist]] points to the fieldsets
+* (bug 32582) Fix TOC show/hide link regression on IE 8
+
+=== Changes since 1.18 beta 1 ===
+* (bug 31886) Wrong titles redirecting to Special:Badtitle in the 1.18 deployment.
+* (bug 32051) Fix description for wlprop=sizes.
+* (bug 31913) Special:MostLinkedTemplates had an incorrect GROUP BY clause
+ under Microsoft SQL.
+* (bug 32100) installer complains about suhosin GET limit.
+* (bug 31933) fix 1.18 regression in Monobook sidebar: huge spacing between portlets
+ on IE 7 and IE 8/9 in compatibility view.
+* (bug 32126) Fix 1.18 regression in watchlist editor when items already removed
+ from watchlist.
+* (bug 32183) remove the client-* classes added from user-agent-sniffing onto
+ the <html> element.
+* (bug 29912) Unit tests break if parsertest tables are still present.
+* (bug 31694) During installation, tabbing order (cursor focus) goes to logo
+ instead of 'continue'.
+* (bug 29102) Upgrade fails "Unknown character set: 'mysql4".
+* (bug 31990) justify paragraphs pref adds extra space to category listing.
+* (bug 20148) Better title for [[Special:Disambiguations]] page.
+* (bug 31502) TOC is missing on Special:EditWatchlist.
+* (bug 32256) API list=search stops at first invalid result.
+* (bug 32047) jquery.tablesorter.js: thead is before caption.
+* (bug 29854) Store protocol-relative links twice in the externallinks table,
+ one with http: in el_index and once with https.
+* (bug 31822) Error during upgrade due to output buffer reset in stdout.
+
+=== Configuration changes in 1.18 ===
+* The WantedPages::getSQL hook has been removed and replaced with
+ WantedPages::getQueryInfo. This may break older extensions.
+* The SkinTemplateBuildContentActionUrlsAfterSpecialPage,
+ SkinTemplateContentActions and SkinTemplateTabs hooks have been removed in
+ favor of SkinTemplateNavigation and SkinTemplateNavigation::SpecialPage.
+* $wgUseCombinedLoginLink controls whether to output a combined
+ login / create account link in the personal bar, or to output separate login
+ and create account links.
+* Skin names are no longer created based on a ucfirst version of the key in
+ $wgValidSkinNames but now the value. This means for
+ $wgValidSkinNames["monobook"] = "MonoBook"; the skin loader will no longer try
+ loading SkinMonobook and will instead load SkinMonoBook.
+* $wgMaxUploadSize may now be set to an array to specify the upload size limit
+ per upload type.
+* $wgAPICacheHelp added in 1.16 is now removed. To disable API help caching, set
+ $wgAPICacheHelpTimeout = 0;
+* OutputPage::isUserJsAllowed() no longer returns false when scripts are allowed
+ by the page, but $wgAllowUserJs is set to false.
+* Pure "Skin" class based custom skins are no longer supported, all custom skins
+ should be put together using SkinTemplate and BaseTemplate or QuickTemplate.
+* The transliteration for passwords in case they were migrated from an old
+ Latin-1 install (previous to MediaWiki 1.5) is now only done for wikis with
+ $wgLegacyEncoding set.
+* (bug 27508) Add $wgSVGMetadataCutoff to limit the maximum amount of an SVG we
+ look at when finding metadata to prevent excessive resource usage.
+* $wgSysopUserBans and $wgSysopRangeBans (deprecated in 1.17) are now removed.
+ Use $wgBlockCIDRLimit = array( 'IPv4' => 43, 'IPv6' => 128 ) to achieve the
+ same functionality as $wgSysopRangeBans; you can use the BlockIp hook to
+ replicate $wgSysopUserBans functionality.
+* The options on the block form have been standardised such that checking a box
+ makes the block 'more serious'; so while "check to prevent account creation"
+ and "check to enable autoblock" remain the same, "check to allow user-talk
+ edit" is reversed to "check to *disable* user-talk edit", and "check to block
+ anon-only" becomes "check to block logged-in users too". The default settings
+ remain the same.
+* Most of the field names on the Special:Block form have been changed, which
+ will probably break screen-scraping bots.
+* (bug 26866) The 'trackback' right is no longer granted to sysops by default.
+ $wgUseTrackbacks is already false by default.
+* (bug 17009) the hiddenStructure CSS class, a highly hackish way of at least
+ *appearing* to hide article elements, has been removed. Use the
+ ParserFunctions extension to actually remove unwanted elements from the
+ output.
+* (bug 14202) $wgUseTeX has been superseded by the Math extension. To re-enable
+ math conversion after upgrading, obtain the Math extension from SVN or from
+ http://www.mediawiki.org/wiki/Extension:Math and add to LocalSettings.php:
+ require_once "$IP/extensions/Math/Math.php";
+* $wgProfiler is now a configuration array, see StartProfiler.sample for
+ details.
+* $wgProfiling has been removed.
+* The spyc library is now no longer included in phase3.
+* (bug 28343) Unused preferences contextlines/contextchars have been removed
+* $wgSkinExtensionFunctions has been removed. Use $wgExtensionFunctions instead.
+* $wgProto has been removed. You now only need to set $wgServer to change the
+ URL protocol.
+* $wgRateLimitsExcludedGroups (deprecated in 1.13) has been removed.
+* $wgInputEncoding and $wgOutputEncoding (deprecated in 1.5) have now been removed.
+* $wgAllowUserSkin (deprecated in 1.16) has now been removed.
+* $wgExtraRandompageSQL (deprecated in 1.16) has now been removed.
+* LogReader and LogViewer classes (deprecated in 1.14) have now been removed.
+* (bug 26033) Added $wgArticleCountMethod to select the method to use to say
+ whether a page is an article or not. $wgUseCommaCount is now deprecated.
+* $wgEnableDublinCoreRdf and $wgEnableCreativeCommonsRdf no longer work in core,
+ and the functionality has been moved to the relevant extensions. See
+ http://www.mediawiki.org/wiki/Extension:DublinCoreRdf and
+ http://www.mediawiki.org/wiki/Extension:CreativeCommonsRdf as appropriate.
+* (bug 21107) Split error "customcssjsprotected" into separate messages for JS and CSS
+* Removed $wgCheckCopyrightUpload from DefaultSettings, since the relevant feature
+ was removed in about 1.5.
+* LogPageValidTypes, LogPageLogName, LogPageLogHeader and LogPageActionText
+ hooks have been removed.
+* New hook "Collation::factory" to allow extensions to create custom
+ category collations.
+* $wgGroupPermissions now supports per namespace permissions.
+* $wgEnableAutoRotation enables or disables auto-rotation. Leaving it set to
+ null will cause MediaWiki to determine if auto-rotation is available.
+
+=== New features in 1.18 ===
+* BREAKING CHANGE: action=watch / action=unwatch now requires a token.
+* BREAKING CHANGE: Article class hierarchy split into WikiPage (backend).
+ and Article (frontend) hierarchies. Several hooks now pass a WikiPage object instead
+ of an Article object. These hooks all use an $article paramater as documented in hooks.txt.
+ Extensions should be updated to account for this, though most won't require any changes.
+* (bug 27860) Minor edit after clicking 'new section' tab
+ Now the "This is a minor edit" checkbox is not available when you
+ create a page or new section.
+* (bug 8130) Query pages should limit to content namespaces, not just main
+ namespace.
+* Search suggestions (other than in the Vector skin) will now use the HTML5
+ datalist feature where supported, currently only Firefox 4.
+* Special:Contribs now redirects to Special:Contributions.
+* (bug 6672) Images are now autorotated according to their EXIF orientation.
+ This only affects thumbnails; the source remains unrotated.
+* (bug 25708) Update case mappings and normalization to Unicode 6.0.0.
+* New hook ArticlePrepareTextForEdit added, called when preparing text to be
+ saved.
+* New parser option PreSaveTransform added, allows the pre-save transformation
+ to be selectively disabled.
+* Alternative to $wgHooks implemented, using the new Hooks class.
+* Add width parameter to Special:Filepath to allow getting the file path of a
+ thumbnail.
+* (bug 26870) Add size to {{filepath:}}.
+* Upload warnings now show a thumbnail of the uploaded file.
+* Introduced the edittools-upload message, which will be inserted under the
+ upload form instead of edittools if available.
+* (bug 26285) Extensions will be automatically generated on upload if the user
+ specified a filename without extension.
+* (bug 26851) Special:UserRights now allows to prefill the reason field
+* New maintenance script to fix double redirects
+ (maintenance/fixDoubleRedirects.php).
+* (bug 23315) New body classes to allow easier styling of special pages.
+* (bug 27159) Make email confirmation code expiration time configurable.
+* (bug 29047) CSS/JS for each user group is imported from MediaWiki:Group-sysop.js,
+ MediaWiki:Group-autoconfirmed.css, etc.
+* (bug 24230) Uploads of ZIP types, such as MS Office or OpenOffice can now be
+ safely enabled. A ZIP file reader was added which can scan a ZIP file for
+ potentially dangerous Java applets. This allows applets to be blocked
+ specifically, rather than all ZIP files being blocked.
+* (bug 2429) Allow selection of associated namespace in recent changes.
+* (bug 26217) File size is now checked before uploading in HTML5 browsers.
+* CSS stylesheet MediaWiki:Noscript.css is now loaded for users with JavaScript
+ disabled (enclosed in the head in a <noscript> tag).
+* Added UserGetLanguageObject hook to change the language used in $wgLang.
+* (bug 14645) When $wgMiserMode is on, expensive special pages are styled
+ differently (italicized by default) on Special:SpecialPages.
+* Added $wgAggregateStatsID, which allows UDP stats to be aggregated over
+ several wikis.
+* When $wgAllowMicrodataAttributes is true, all itemtypes are allowed, not just
+ the three that were defined in the original specification.
+* (bug 14706) Added support for the Imagick PHP extension.
+* (bug 18691) Added support for SVG rasterization using the Imagick PHP
+ extension.
+* (bug 2581, bug 6834) Added links to thumbnail in several resolutions to the
+ file description page. The sizes are set by $wgImageLimits.
+* (bug 28031) Add pageCount support to ArchivedFile.
+* (bug 27924) PhpHttpRequest doesn't return response body if HTTP != 200.
+* Added hook BitmapHandlerTransform to allow extension to transform a file
+ without overriding the entire handler.
+* The parser now attempts to output markers for editsection tokens and defer the
+ rendering of them post-cache to reduce parser cache fragmentation and ensure
+ skin customizability of edit section links.
+* (bug 24755) AuthPlugin auto-creation of local accounts can now be aborted by
+ other extensions by handling the 'AbortAutoAccount' hook, similar to the
+ 'AbortNewAccount' triggered by explicit account creations. (They are separate
+ to avoid loops and confusion; auth plugins like CentralAuth need to handle
+ AbortNewAccount separately.
+* Special:ListFiles is now transcludable.
+* (bug 13879) Special:Emailuser asks for suitable target user if called without.
+* (bug 16956) IPTC and XMP metadata now extracted from images.
+* (bug 23816) A tracking category is now added for any pages with broken images.
+* (bug 23495) Allow createAndPromote.php to create non-sysop users.
+* (bug 28916) A way to to toggle mw.config legacy globals settings from
+ LocalSettings.php has been created by introducing $wgLegacyJavaScriptGlobals.
+* (bug 28503) Support for ircs:// URL protocols.
+* (bug 26033) It is now possible to count all non-redirect pages in content
+ namespaces as articles.
+* Images can now be embedded in an XML dump stream using backupDump.php
+ --include-files and can be imported using importDump.php --uploads;
+ furthermore, it can import files from the filesystem using --image-base-path.
+* Three new hooks in Special:Undelete, 'UndeleteForm::showHistory',
+ 'UndeleteForm::showRevision' and 'UndeleteForm::undelete', so that extensions
+ may override the usage of PageArchive class and replace it with their own
+ class that extends PageArchive.
+* (bug 28915) Implement QUnit test suite for MediaWiki JavaScript.
+ Also built-in support for distribution through a TestSwarm instance.
+* (bug 29036) For cascade-protected pages, the mw-textarea-cprotected class is
+ added to the textarea on the edit form.
+* mw.util.wikiScript has been implemented (like wfScript in GlobalFunctions.php)
+* (bug 29067) Expose user.tokens (like we do user.options) in ResourceLoader.
+* New 'Debug' hook used by wfDebug() and wfDebugLog().
+* (bug 27655) Require token for watching/unwatching pages)
+* (bug 28904) (bug 29773) Update jQuery version from 1.4.4 to 1.6.2 (the latest version)
+* (bug 29441) Expose CapitalLinks config in JS to allow modules to properly
+ handle titles on case-sensitive wikis.
+* (bug 29397) Implement mw.Title module in core.
+* In MySQL 4.1.9+ with replication enabled, fetch the slave lag from SHOW SLAVE
+ STATUS instead of SHOW PROCESSLIST. This ensures that lag is reported
+ correctly in the case where there are no write events occurring. Note that
+ the DB user now needs to have the REPLICATION CLIENT privilege if you are
+ using replication.
+* Language codes in $wgDummyLanguageCodes are now excluded on localization
+ statistics (maintenance/language/transstat.php).
+* (bug 29586) Make the (next 200) links on categories link directly to
+ the relevant section of the category.
+* (bug 29109) Allow the automatic edit summary for redirect creation
+ show the first bit of the new redirect page.
+* (bug 29723) mw.util.wikiGetlink() now defaults to wgPageName.
+* (bug 29680) Add GetDefaultSortkey hook to override the default sortkey.
+* (bug 16699) {{#language:}} accepts second parameter to specify the language in
+ which the language name is wanted. Coverage depends on the cldr extension.
+* (bug 15802) An easy way to look up messages: language qqx which returns
+ the message keys.
+* (bug 29868) Add support for passing parameters to mw.msg in jquery.localize.
+* (bug 29558) $wgMiserMode now disables update.php by default.
+* AjaxCategories: Easily add, edit or delete categories on article pages.
+ Suggests possible categories when typing, all saves are done via AJAX.
+ Supports editing of multiple categories and then saving them in one batch.
+* $wgAutopromoteOnce was added, allowing for users to be automatically promoted
+ to explicit usergroups. If a group is removed from a user via Special:UserRights,
+ it will not automatically be re-added. Configuration is similar to
+ $wgAutopromote (see DefaultSettings.php).
+* The PerformRetroactiveAutoblock hook was added to allow overriding or complementing
+ retroactive autoblock handling. This runs when blocking a user with the 'autoblock' option.
+* MediaWiki now supports using protocol-relative URLs in links, interwiki
+ targets and $wgServer.
+* Introduced $wgVaryOnXFPForAPI which will cause the API to send
+ Vary: X-Forwarded-Proto headers.
+* New maintenance script to refresh image metadata (maintenance/refreshImageMetadata.php).
+* (bug 16428) Include permalink in printable version.
+* (bug 30722) Add an identity collation that sorts things based on what the
+ unicode code point is (aka pre-1.17 behaviour).
+* (bug 30940) Add a hook in User:getDefaultOptions.
+ To give extensions a better and more flexible way of providing default
+ values for preferences a hook has been introdiced in User:getDefaultOptions().
+ Setting preferences in $wgDefaultUserOptions still work fine, but when reading
+ them (i.e. with array_keys) to get a list of all preferences, then
+ $wgDefaultUserOptions should no longer be used as it will contain those set via
+ User:getDefaultOptions().
+* (bug 30497) Add client-nojs and client-js classes on document element
+ to let styles easily hide or show things based on general JS availability.
+* (bug 31293) If Special:Userlogin is loaded over HTTPS, display
+ MediaWiki:loginend-https instead of MediaWiki:loginend, if it's not empty.
+ Same for signupend on the account creation page.
+* (bug 31233) New OutputPage::addJsConfigVars() method to make the output page specific
+ mw.config map extendable.
+
+=== Bug fixes in 1.18 ===
+* (bug 27860) Minor edit after clicking 'new section' tab.
+* mw.util.getScript has been implemented (like wfScript in GlobalFunctions.php).
+* (bug 23119) WikiError class and subclasses are now marked as deprecated.
+* (bug 10871) Javascript and CSS pages in MediaWiki namespace are no longer
+ treated as wikitext on preview.
+* (bug 22753) Output from update.php is more clear when things changed, entries
+ indicating nothing changed are now all prefixed by "...".
+* Page existence is now not revealed (in the colour of the tabs) to users who
+ cannot read the page in question.
+* (bug 19006) {{REVISIONUSER}} no longer acts like {{CURRENTUSER}} in some
+ cases.
+* (bug 16019) $wgArticlePath = "/$1" no longer breaks API edit/watch actions.
+* (bug 18372) File types blacklisted by $wgFileBlacklist will no longer be shown
+ as "Permitted file types" on the upload form.
+* (bug 26379) importImages.php gives more descriptive error message on failure.
+* (bug 26410) + signs are no longer treated as spaces in internal links if
+ link has a % sign in it.
+* (bug 26412) Search results headers no longer show a bogus edit link.
+* (bug 26540) Fixed wrong call to applyPatch in MysqlUpdater.
+* (bug 26574) Added 'upload' to $wgRestrictionTypes, allowing upload protected
+ pages to be queried via the API and Special:ProtectedPages, and allowing
+ disabling upload protection by removing it from $wgRestrictionTypes.
+* If an edit summary exceeds 250 bytes and is truncated, add an ellipse.
+* (bug 26638) Database error pages display correctly in RTL languages.
+* (bug 26187) Confirmrecreate no longer parses the edit summary.
+* (bug 26208) Mark directionality of some interlanguage links.
+* (bug 26034) Make the "View / Read" tab in content_navigation style tabs remain
+ selected when the action is "purge".
+* (bug 14267) Support a MediaWiki:Mainpage-nstab override for the subject
+ namespace tab on the mainpage of a wiki.
+* (bug 10158) Do not mention allowing others to contact you when the feature
+ is disabled ($wgEnableUserEmail=false).
+* (bug 26733) Wrap initial table creation in transaction.
+* (bug 26729) Category pages should return 404 if they do not exist and have no
+ members.
+* (bug 2585) Image pages should send 404 if no image, no shared image and no
+ description page.
+* Custom editintro's using the editintro url parameter will no longer show
+ <noinclude> sections on pages they are included on.
+* (bug 26449) Keep underlines from headings outside of tables and thumbs by
+ adding overflow:hidden to h1,h2,h3,h4,h5,h6 (also fixes editsection bunching).
+* (bug 26708) Remove background-color:white from tables in Monobook and Vector.
+* (bug 28422) Remove color:black from tables in Monobook and Vector. And add it
+ to table.wikitable instead.
+* (bug 26781) {{PAGENAME}} and related parser functions escape their output
+ better.
+* (bug 26716) Provide link to instructions for external editor related
+ preferences and add a comment to the ini control file explaining what is
+ going on.
+* Trying to upload a file with no extension or with a disallowed MIME type now
+ gives the right message instead of complaining about a MIME/extension
+ mismatch.
+* (bug 26809) Uploading files with multiple extensions where one of the
+ extensions is blacklisted now gives the proper extension in the error message.
+* (bug 26961) Hide anon edits in watchlist preference now actually works.
+* (bug 19751) Filesystem is now checked during image undeletion.
+* Send last modified headers for Special:Recentchanges when RC patrol is
+ enabled, but user cannot see rc patrol links.
+* (bug 26548) ForeignAPIRepo (InstantCommons) now works with PDF files
+ and other multi-paged file formats.
+* Files with a mime type that does not match the extension are now properly
+ thumbnailed.
+* (bug 27201) Special:WhatLinksHere output no longer contains duplicate IDs.
+* (bug 15905) Nostalgia skin could become more usable by including a Talk:
+ link at the top of the page.
+* (bug 27560) Search queries no longer fail in Walloon language.
+* (bug 27679) Broken embedded files with special characters are no longer
+ double HTML escaped.
+* (bug 27700) The upload protection can now also be set for files that do not
+ exist.
+* (bug 27763) Article::getParserOutput() no longer throws a fatal given when an
+ incorrect revision ID is passed.
+* Trim the form field for uploading by url to remove extra spaces which could
+ cause confusing error messages.
+* (bug 27854) Http::isValidURI is way too lax.
+* Do not show enotifminoredits preference, if disabled by $wgEnotifMinorEdits.
+* AbortLogin returning "ABORTED" now handled. Also allows message identifier
+ for "ABORTED" reason to be returned and displayed to user.
+* (bug 28034) uploading file to local wiki when file exists on shared repository
+ (commons) gives spurious info in the warning message.
+* Usernames get lost when selecting different sorts on Special:listfiles.
+* (bug 14005) editing section 0 of an existing but empty page gives no such
+ section error.
+* (bug 26939) Installer does not set $wgMetaNamespace.
+* (bug 28166) UploadBase assumes that 'edit' and 'upload' rights are not per
+ page restrictions.
+* Make truncate function automatically consider length of '...' string,
+ since length can vary by localization.
+* (bug 28242) Make redirects generated by urls containing a local interwiki
+ prefix be a 301 instead of a 302.
+* (bug 15641) blocked administrators are now prevented from deleting or
+ protecting their own talk page; and all blocked users are more
+ comprehensively prevented from performing other actions.
+* (bug 27893) Edit-on-doubleclick now applies only on view and purge actions;
+ no longer triggers unexpectedly on delete, history etc.
+* (bug 28417) Fix PHP notice when importing revision without a listed id.
+* (bug 28430) Make html and TeX output of <math> always be left-to-right.
+* (bug 28306) Fix exposure of suppressed usernames in ForeignDBRepo.
+* (bug 28372) Fix bogus link to suppressed file versions in ForeignDBRepo.
+* (bug 27473) Fix regression: bold, italic no longer interfere with linktrail
+ for ca, kaa.
+* (bug 28444) Fix regression: edit-on-doubleclick retains revision id again.
+* &apos; character entity is now allowed in wikitext.
+* UtfNormal::cleanUp on an invalid utf-8 sequence no longer returns false if
+ intl installed.
+* (bug 28561) The css class small will no longer make nested elements even
+ smaller.
+* (bug 13172) Array type exif data (like GPS) was not being extracted from
+ images.
+* (bug 28532) wfMsgExt() and wfMsgWikiHtml() use $wgOut->parse().
+* (bug 16129) Transcluded special pages expose strip markers when they output
+ parsed messages.
+* (bug 27249) "Installed software" table in Special:Version should always be
+ left-to-right.
+* (bug 28719) Do not call mLinkHolders __destruct explicitly.
+* (bug 21196) Article::getContributors() no longer fails on PostgreSQL.
+* (bug 28752) XCache doesn't work in CLI mode.
+* (bug 28076) Thumbnail height limited to 360 pixels on Special:Listfiles.
+* (bug 22227) Special:Listfiles no longer throws an error on bogus file entries.
+* (bug 19408) user_properties.up_property: 32 bytes is not enough.
+* (bug 25262) Fix for minification of hardcoded data: URIs in CSS.
+* (bug 29263) Add LTR class to the shared CSS to be used for left-to-right text
+ such as SQL queries shown in dberrortext and similar messages in RTL
+ environments.
+* (bug 14977) Fixed $wgServer detection in cases where an IPv6 address is used
+ as the server name.
+* The View X deleted revisions is now shown again on Special:Upload.
+* (bug 29071) mediawiki.action.watch.ajax.js should pass uselang to API.
+* (bug 28868) Show total pages in the subtitle of an image on the
+ file description page for multi-paged documents.
+* (bug 28883) Message names for different compression types commonly
+ used in Tiff files.
+* When translcuding a special page, do not let it interpret url parameters.
+* (bug 28887) Special page classes are no longer re-used during 1 request.
+* (bug 28888) Searching for something starting with a # sign no longer tells
+ the user a page named [[:]] already exists.
+* (bug 23002) Imagelinks table not updated after imagemove.
+* (bug 27864) Transcluding {{Special:Prefix}} with empty prefix now lists all
+ pages.
+* (bug 18803) JPEG2000 images should not be uploadable as .jpg files.
+* (bug 11868) If using links to count articles, the checking will now be based
+ on the real presence of an internal link instead of the "[[" string.
+* (bug 28287) The "your changes" box for edit conflicts is now read-only.
+* (bug 28940) When making a thumb of an SVG, and only specifying the height
+ make the width be the max SVG size, not the natrual width of the SVG.
+* (bug 1780) Uploading files with non-ascii characters are now forbidden on
+ Windows.
+* (bug 23464) File: prefixes are now chopped off during uploading.
+* (bug 28174) Message config-logo-help amended to not explicitly assume any
+ LTR/RTL screen layout.
+* (bug 28992) Revision numbers in the patrol log are transformed in the user
+ language.
+* (bug 27073) ResourceLoaderDynamicStyles marker should be dynamically appended to
+ the document head if it doesn't exist.
+* (bug 27023) After the document is ready, mw.loader is broken (calls callback
+ before module is parsed).
+* (bug 4330) External URLs without a custom title should be treated as LTR,
+ even in RTL text.
+* (bug 29055) Make "don't send email on minor edits" preference apply to
+ changes to talk page in addition to watchlist edits.
+* (bug 28272) Special:AllMessages should have only one "Go" button.
+* (bug 29101) Special:FileDuplicateSearch no longer shows silly message.
+* (bug 29048) jQuery.tabIndex: firstTabIndex() should not output the same
+ as lastTabIndex().
+* (bug 29332) Warn if user requests mediawiki-announce subscription but does not
+ enter an e-mail address.
+* (bug 25375) Add canonical namespaces to "wgNamespaceIds" in mw.config.
+* The class JpegOrTiffHandler was renamed ExifBitmapHandler.
+* (bug 29443) Special:Undelete should use JavaScript to invert all checkboxes
+ instead of reloading the page.
+* (bug 29325) Setting $wgStrictFileExtensions to false no longer gives incorrect warning.
+* (bug 29437) Multiple apostrophes in deleted article title cause odd rendering.
+* (bug 29485) RSS feed of Special:RecentChange grouped together multiple
+ consecutive edits by same user in included diff, but then linked to
+ a single ungrouped diff.
+* Do not try to group together a page creation and edit in the RSS feed of RC.
+* (bug 29342) Patrol preferences shouldn't be visible to users who don't have
+ patrol permissions.
+* (bug 29471) Exception no longer thrown for files with invalid date in metadata.
+* (bug 29492) Long-running steps in the installer (such as Upgrade and Install)
+ no longer cause timeouts.
+* (bug 29507) Change 'image link' to 'file link' in Special:Whatlinkshere.
+* If the db is really screwed up, and doesn't have a recentchanges table,
+ make the updater throw an exception instead of a fatal.
+* wfArrayToCGI() and wfCgiToArray() now handle nested and associative arrays
+ correctly.
+* (bug 29567) mw.util.addPortletLink should only wrap link in <span> for
+ "vectorTabs" portlets.
+* (bug 8556) Incorrect session failure warning on preview-on-open
+ namespaces (categories) when combined with $wgRawHtml.
+* Use content language in formatting of dates in revertpage message
+ (rollback revert edit summary) and do not adjust for user timezone.
+* (bug 29277) MediaWiki:Filepage.css is also shown on the local wiki
+* Make sure Backlink cache does not retrieve interwiki redirects when looking for
+ redirects to a local page.
+* (bug 6100) Allow different directionality (LTR/RTL) for user interface
+ and wiki content, along with many other RTL and directionality improvements
+ (such as bugs 28030, 12406, 28349).
+* (bug 29712) Removed broken defaultUserOptionOverrides in MessagesXx files and
+ unneeded CSS flipping of quickbar. Instead, introduce option 5 which sets
+ left/right according to the directionality of your interface language.
+* (bug 19514) Unordered list list-style-image should be IE6-compatible (8-bit).
+* (bug 27410) The tag filter on a history page is now within a <label> element.
+* (bug 29779) DairikiDiff/WikiDiff <ins> and <del> should undo browser default
+ styling (strike/underline).
+* (bug 28630) Add iwlinks, langlinks, redirect to
+ RefreshLinks::deleteLinksFromNonexistent.
+* (bug 29797) Error: "Tried to load block with invalid type" when subpages
+ are disabled for user pages.
+* (bug 12205) Bidirectional names in action=credits are split and displayed.
+ incorrectly when wrapped to the next line.
+* (bug 20781) Move 'mainpagetext' messages to installer's .i18n file.
+* (bug 29737) "MediaWiki:Qbsettings-directionality" should refer to script,
+ not language.
+* (bug 26360) $wgSessionHandler was overriding system settings unconditionally.
+* Removed AjaxFunctions.php. The last remaining function js_unescape() was moved
+ to the FCKEditor extension.
+* (bug 28762) Resizing to specified height broken for very thin images.
+* (bug 29959) Installer fatal when cURL and allow_url_fopen is disabled and user
+ tries to subsribe to mediawiki-announce.
+* (bug 27427) mw.util.getParamValue shouldn't return value from hash even if
+ param is only present in hash.
+* Installer checked for magic_quotes_runtime instead of register_globals.
+* (bug 30131) XCache with variable caching disabled no longer used for variable
+ caching (CACHE_ACCEL)
+* $wgSVGMaxSize is now applied to the smaller of width or height, making very wide
+ pano/timeline/diagram SVGs renderable at saner sizes.
+* (bug 30219) The page shown when LocalSettings.php does not exist was broken on
+ Windows servers.
+* (bug 30074) Moving user JS subpages resulted in JS errors because
+ #REDIRECT [[Foo]] is invalid JS.
+* (bug 30335) Fix for HTMLForms using GET breaking when non-friendly URLs
+ are used.
+* (bug 30264) Changed installer-generated LocalSettings.php to use require_once()
+ instead require() for included extensions.
+* Tracking categories are no longer shown in footer for special pages.
+* (bug 30684) Fix bad escaping in mw.message for inexistent messages (i.e. <key>).
+* $wgOverrideSiteFeed no longer double escapes urls.
+* The preprocessor no longer fails with a PHP warning about XML_PARSE_HUGE when
+ processing complex pages using newer versions of libxml2.
+* (bug 30907) Special:Unusedcategories should sort ascendingly.
+* (bug 28545) When using the uca-default collation, sortkey's starting with a
+ space (U+20) will sort under an invisible header like in 1.16 rather than a U+6DE.
+* (bug 30192) Thumbnails of archived files are now deleted.
+* (bug 30843) mediawiki.Title should not convert extensions (anything after the
+ last full stop) to lower case).
+* (bug 31213) Exception thrown when trying to move file cross-namespace.
+* (bug 18424) Special:Prefixindex and Special:Allpages paging links are
+ really small, and somewhat inconsistent with each other.
+* (bug 30466) Entries in iwlinks table are now cleared when moving a page over
+ redirect.
+* (bug 31674) Can't edit watchlist if it contains special pages.
+* (bug 32100) Installer complains about Suhosin GET limit even if it is
+ already set above 1024 bytes.
+
+=== API changes in 1.18 ===
+* BREAKING CHANGE: action=watch now requires POST and token.
+* (bug 26339) Throw warning when truncating an overlarge API result.
+* (bug 14869) Add API module for accessing QueryPage-based special pages.
+* (bug 14020) API for Special:Unwatchedpages.
+* (bug 24287) Wrap API Help output at 100 characters.
+* Add a realname uiprop option to query=userinfo so a user's realname can be
+ extracted.
+* Add a &watchuser option to ApiBlock.
+* (bug 26541) Generator-ise ApiQueryRecentChanges.
+* action=parse now correctly returns an error for nonexistent pages.
+* (bug 25767) Add userrights properties to allusers and users query lists.
+* (bug 26558) list=allusers auprop=groups does not list groups a user is
+ automatically a member of.
+* (bug 26559) list=allusers auprop=rights does not match
+ list=users usprop=rights.
+* (bug 26560) On allusers if limit < total number of users, last user gets
+ duplicate.
+* (bug 25135) add "normalized" to action=parse.
+* (bug 26460) Add support for listing category members by category pageid.
+* (bug 26482) add a imimages param to prop=images.
+* (bug 26498) allow LinksUpdate with API.
+* (bug 26485) add a elextlinks param to prop=extlinks.
+* (bug 26483) add a iwtitles param to prop=iwlinks.
+* (bug 26484) add a lltitles param to prop=langlinks.
+* (bug 26480) add a pppageprops param to prop=pageprops.
+* (bug 26650) Remove $wgAPICacheHelp in favour of $wgAPICacheHelpTimeout.
+* (bug 24650) Fix API to work with categorylinks changes.
+* Expose list of skins in meta=siteinfo.
+* (bug 26548) Add iiurlparam param to query=imageinfo and query=stashimageinfo.
+* (bug 27205) aiprop=metadata and aiprop=parsedcomment need help text.
+* Add a amtitle param to meta=allmessages.
+* (bug 25832) query=allimages now outputs ns/title as well.
+* (bug 27199) Thumbnail urls can be fetched for old files as well.
+* (bug 27376) when using ApiBase::PARAM_TYPE => 'integer' without a min or
+ max value, API doesn't validate the input is actually an integer.
+* (bug 27479) API error when using both prop=pageprops and
+ prop=info&inprop=displaytitle.
+* (bug 27554) Update API information text to reflect change in bug 26125.
+* (bug 27611) list=blocks: Use ipb_by_text instead of join with user table.
+* (bug 27616) Add userid of blocked user and blocker to list=blocks.
+* (bug 27688) Simplify queries to list user block information.
+* (bug 27708) list=users does not have a property to return user id.
+* (bug 27715) imageinfo didn't respect revdelete.
+* (bug 27862) Useremail module didn't properly return success on success.
+* (bug 27590) prop=imageinfo now allows querying the media type.
+* (bug 27587) list=filearchive now outputs full title info.
+* (bug 27018) Added action=filerevert to revert files to an old version.
+* (bug 27897) list=allusers and list=users list hidden users.
+* (bug 27717) API's exturlusage module does not respect $wgMiserMode.
+* (bug 27588) list=filearchive&faprop=sha1 returns empty attribute.
+* (bug 28010) Passing a non existant user to list=users gives internal error.
+* (bug 27549) action=query&list=users&usprop=groups doesn't show implicit
+ groups if a user doesn't have explicit groups.
+* (bug 27670) Ordering by timestamp (and usage of start and end) isn't as clear
+ in auto generated document, as it is on mediawiki.org.
+* (bug 27182) API: Add filter by prefix for meta=allmessages.
+* (bug 27183) API: Add filter by customisation state for meta=allmessages.
+* (bug 27340) API: Allow listing of "small" categories.
+* (bug 27342) Add audir param to list=allusers.
+* (bug 27203) add fato param to list=filearchive.
+* (bug 27341) Add drto param to list=deletedrevs.
+* (bug 26630) Add API for Special:ActiveUsers.
+* (bug 27020) API: Allow title prefix search of logevents (only when not in
+ miser mode).
+* (bug 26629) add Special:MIMESearch to API.
+* (bug 27585) add pagecount to list=filearchive.
+* (bug 28104) Namespace for local pages in interwiki backlinks (iwbacklinks)
+ is missing.
+* (bug 27343) Add parseddescription to list=filearchive.
+* (bug 27469) label implicit groups in list=allusers&auprop=groups/
+ list=users&usprop=groups.
+* Addition of APIQuerySiteInfoGeneralInfo hook to add extra information to
+ the general site info results.
+* (bug 16288) API: consider making closure status of wikis more clear
+ with meta=siteinfo.
+* (bug 27589) list=allimages&aiprop=archivename is useless.
+* (bug 27586) Remove duplication of props in ApiQueryStashImageInfo
+ by using ApiQueryImageInfo.
+* (bug 28226) prop=extlinks&eloffset should be an integer.
+* (bug 28070) Fix watchlist RSS for databases that store timestamps in a
+ real timestamp field.
+* API upload errors may now return the parameter that needs to be changed and
+ a sessionkey to fix the error.
+* (bug 28249) allow dupes in meta=allmessages&amargs.
+* (bug 28263) cannot import xml with the API, when have not "import" user
+ right, but "importupload".
+* (bug 28365) Added description for uiprop=preferencestoken in meta=userinfo.
+* (bug 28394) Set forgotten parameters types in ApiUnblock.
+* (bug 28395) Set forgotten parameters types in ApiParse.
+* (bug 28368) add hint for multipart/form-data to API information of
+ action=import&xml=.
+* (bug 28391) action=feedwatchlist&allrev should be a bool.
+* (bug 28364) add registration date to meta=userinfo.
+* (bug 28254) action=paraminfo: Extract type from PARAM_DFLT if
+ PARAM_TYPE is not set.
+* (bug 27712) add parent_id to list=deletedrevs.
+* (bug 28455) Add 'toponly' to recentchanges API module.
+* (bug 26873) API: Add 'toponly' filter in usercontribs module.
+* (bug 28586) YAML: strings that are the same as boolean literals.
+* (bug 28591) Update/replace/supplement spyc (YAML parsing library).
+* YAML API output is now 1.2 compliant, using JSON as the formatter.
+* (bug 28672) give information about misermode on API.
+* (bug 28558) Add iw_api and iw_wikiid to meta=siteinfo&siprop=interwikimap
+* (bug 26882) Allow listing of indefinite protections with the API.
+* (bug 27344) add drprefix param to list=deletedrevs.
+* (bug 28560) list=deletedrevs should die, if combination of param is invalid.
+* (bug 28238) paraminfo: output both limits for multi param.
+* (bug 27179) API: List of extension tags through meta=siteinfo.
+* Get a list of function hooks through meta=siteinfo.
+* Get a list of all subscribed hooks, and those subscribers.
+* (bug 28225) Allow hiding of user groups in list=allusers.
+* (bug 27185) API: Add Special:ComparePages.
+* (bug 28265) allow outputting of comments for action=expandtemplates.
+* (bug 27790) Add query type for querymodules to output of ApiParamInfo.
+* (bug 28963) Add langbacklinks query module to the api.
+* (bug 27593) API should return error message when sha1/sha1base36 is invalid.
+* (bug 28578) API's parse module should not silently override invalid
+ title inputs.
+* (bug 20699) Watchlist API should list log-events.
+* (bug 29070) Require a token in API action=watch.
+* (bug 29221) Expose oldrevid in ApiQueryWatchlist output.
+* (bug 29267) Always give the servername for meta=siteinfo&siprop=dbrepllag.
+* (bug 28897) rvparse now respects rvsection for action=query&prop=revisions.
+* (bug 25734) API: Possible issue with revids validation.
+* (bug 28002) Internal error in ApiFormatRaw::getMimeType.
+* (bug 29237) ApiQuery now has an option to output the "iwurl" attribute.
+* (bug 28392) Mark action=undelete&timestamps as type "timestamp".
+* (bug 21346) Make deleted images searchable by hash (disabled in Miser Mode).
+* (bug 27595) sha1 search of list=filearchive does not work.
+* (bug 26763) Make RSS/Atom of user contributions more visible.
+* (bug 25133) Allow redirects also for action=parse&pageid.
+* (bug 29745) Fatal error in API search.
+* (bug 29476) API returns page title instead of sectiontitle for
+ srprop=sectiontitle.
+* Correct the documentation of srprop properties.
+* (bug 28817) Add reference help page link to API Modules.
+* (bug 29935) Improve formatting of examples in ApiParamInfo.
+* (bug 29938) list=users&usprop=rights shows rights the user doesn't have.
+* (bug 24781) The API will include an XML namespace if the includexmlnamespace
+ parameter is set.
+* (bug 29392) Setting the start or end parameter now works with lists blocks,
+ categorymembers, deletedrevs, logevents, protectedtitles, usercontributions
+ and watchlist in Postgres.
+
+=== Languages updated in 1.18 ===
+
+MediaWiki supports over 330 languages. Many localisations are updated
+regularly. Below only new and removed languages are listed, as well as
+changes to languages because of Bugzilla reports.
+
+* Angika (anp) (new).
+* Brahui (brh) (new).
+* Central Dusun (dtp) (new).
+* Jamaican Creole English (jam) (new).
+* Khowar (khw) (new).
+* Liv (liv) (new).
+* Kichwa (qug) (new).
+* Tokipona (tp) (removed) 'tokipona' is still valid.
+* (bug 17160) Gender specific display text for User namespace.
+* Link trail added for sl and sh.
+* (bug 27633) Add characters to linkTrail for Portuguese (pt and pt-br).
+* (bug 27426) Set $namespaceGenderAliases for Arabic (ar).
+* (bug 27385) Set Polish $namespaceGenderAliases.
+* (bug 27681) Set $namespaceGenderAliases for Portuguese (pt and pt-br).
+* (bug 27785) Fallback language for Kabardian (kbd) is English now.
+* (bug 27825) Raw watchlist edit message now uses formatted numbers.
+* (bug 28040) Turkish: properly lower case 'I' to 'ı' (dotless i) and
+ uppercase 'i' to 'Ä°' (dotted i).
+* Conversion script between Syllabics and Latin for the Inuktitut language.
+* Date formats for Indonesian (id) updated.
+* Bhojpuri (bho) (renamed from "bh").
+* (bug 29031) When translating block log entries, indefinite, infinite, and
+ infinity are now considered the same.
+* Aromanian (rup) (renamed from "rua-rup").
+* Kashmiri (ks) split into Kashmiri (Perso-Arabic) (ks-arab) and Kashmiri
+ (Devanagari) (ks-deva). Defaults to ks-arab.
+* (bug 30864) Use bengali numerals for <ol> for Assamese.
+* (bug 30817) Restored linktrail for kk (Kazakh).
+* (bug 27398) Add $wgExtraGenderNamespaces for configured gendered namespaces.
+* (bug 30846) New LanguageOs class.
+
+=== Other changes in 1.18 ===
+* Removed legacy wgAjaxWatch javascript global object, no longer in use.
+* (bug 28556) Upload support for MacBinary files has been removed (Used by
+ Internet Explorer 5 for Mac OS 9).
+* On wiki farm setups using $wgConf, 'wgCanonicalServer' is now expected to be
+ set for all wikis. This was already the case for 'wgServer'.
+
+== Compatibility ==
+
+MediaWiki 1.18 requires PHP 5.2.3. PHP 4 is no longer supported.
+
+MySQL is the recommended DBMS. PostgreSQL, Oracle or SQLite can also be used, but
+support for them is somewhat less mature. There is experimental support for IBM
+DB2 and Microsoft SQL Server.
+
+The supported versions are:
+
+* MySQL 4.0 or later
+* PostgreSQL 8.3 or later
+* SQLite 3
+* Oracle 9.0.1 or later
+
+== Upgrading ==
+
+1.18 has several database changes since 1.17, and will not work without schema
+updates.
+
+If upgrading from before 1.11, and you are using a wiki as a commons
+repository, make sure that it is updated as well. Otherwise, errors may arise
+due to database schema changes.
+
+If upgrading from before 1.7, you may want to run refreshLinks.php to ensure
+new database fields are filled with data.
+
+If you are upgrading from MediaWiki 1.4.x or earlier, some major database
+changes are made, and there is a slightly higher chance that things could
+break. Don't forget to always back up your database before upgrading!
+
+See the file UPGRADE for more detailed upgrade instructions.
+
+For notes on 1.17.x and older releases, see HISTORY.
+
+== Online documentation ==
+
+Documentation for both end-users and site administrators is available on
+MediaWiki.org, and is covered under the GNU Free Documentation License (except
+for pages that explicitly state that their contents are in the public domain):
+
+ http://www.mediawiki.org/wiki/Documentation
+
+== Mailing list ==
+
+A mailing list is available for MediaWiki user support and discussion:
+
+ http://lists.wikimedia.org/mailman/listinfo/mediawiki-l
+
+A low-traffic announcements-only list is also available:
+
+ http://lists.wikimedia.org/mailman/listinfo/mediawiki-announce
+
+It's highly recommended that you sign up for one of these lists if you're
+going to run a public MediaWiki, so you can be notified of security fixes.
+
+== IRC help ==
+
+There's usually someone online in #mediawiki on irc.freenode.net.
diff --git a/StartProfiler.sample b/StartProfiler.sample
index f91aeb92..6bce634d 100644
--- a/StartProfiler.sample
+++ b/StartProfiler.sample
@@ -1,20 +1,16 @@
<?php
-require_once( dirname(__FILE__).'/includes/ProfilerStub.php' );
-
/**
* To use a profiler, copy this file to StartProfiler.php,
- * delete the PHP line above, and add something like this:
+ * and add something like this:
*
- * require_once( dirname(__FILE__).'/includes/Profiler.php' );
- * $wgProfiler = new Profiler;
+ * $wgProfiler['class'] = 'Profiler';
*
* Or for a sampling profiler:
* if ( !mt_rand( 0, 100 ) ) {
- * require_once( dirname(__FILE__).'/includes/Profiler.php' );
- * $wgProfiler = new Profiler;
+ * $wgProfiler['class'] = 'Profiler';
* } else {
- * require_once( dirname(__FILE__).'/includes/ProfilerStub.php' );
+ * $wgProfiler['class'] = 'ProfilerStub';
* }
*
* Configuration of the profiler output can be done in LocalSettings.php
diff --git a/api.php b/api.php
index 5c675b06..39d27dd6 100644
--- a/api.php
+++ b/api.php
@@ -37,8 +37,18 @@
// So extensions (and other code) can check whether they're running in API mode
define( 'MW_API', true );
-// Initialise common code
-require ( dirname( __FILE__ ) . '/includes/WebStart.php' );
+// Bail if PHP is too low
+if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.2.3' ) < 0 ) {
+ require( dirname( __FILE__ ) . '/includes/PHPVersionError.php' );
+ wfPHPVersionError( 'api.php' );
+}
+
+// Initialise common code.
+if ( isset( $_SERVER['MW_COMPILED'] ) ) {
+ require ( 'phase3/includes/WebStart.php' );
+} else {
+ require ( dirname( __FILE__ ) . '/includes/WebStart.php' );
+}
wfProfileIn( 'api.php' );
$starttime = microtime( true );
@@ -50,9 +60,10 @@ if ( !$wgRequest->checkUrlExtension() ) {
// Verify that the API has not been disabled
if ( !$wgEnableAPI ) {
- echo 'MediaWiki API is not enabled for this site. Add the following line to your LocalSettings.php';
- echo '<pre><b>$wgEnableAPI=true;</b></pre>';
- die( 1 );
+ header( $_SERVER['SERVER_PROTOCOL'] . ' 500 MediaWiki configuration Error', true, 500 );
+ echo( 'MediaWiki API is not enabled for this site. Add the following line to your LocalSettings.php'
+ . '<pre><b>$wgEnableAPI=true;</b></pre>' );
+ die(1);
}
// Selectively allow cross-site AJAX
@@ -120,7 +131,8 @@ if ( $wgAPIRequestLog ) {
$_SERVER['HTTP_USER_AGENT']
);
$items[] = $wgRequest->wasPosted() ? 'POST' : 'GET';
- if ( $processor->getModule()->mustBePosted() ) {
+ $module = $processor->getModule();
+ if ( $module->mustBePosted() ) {
$items[] = "action=" . $wgRequest->getVal( 'action' );
} else {
$items[] = wfArrayToCGI( $wgRequest->getValues() );
@@ -129,6 +141,8 @@ if ( $wgAPIRequestLog ) {
wfDebug( "Logged API request to $wgAPIRequestLog\n" );
}
-// Shut down the database
-wfGetLBFactory()->shutdown();
+// Shut down the database. foo()->bar() syntax is not supported in PHP4: we won't ever actually
+// get here to worry about whether this should be = or =&, but the file has to parse properly.
+$lb = wfGetLBFactory();
+$lb->shutdown();
diff --git a/config/OBSOLETE b/config/OBSOLETE
deleted file mode 100644
index 108c1675..00000000
--- a/config/OBSOLETE
+++ /dev/null
@@ -1,2 +0,0 @@
-This is a back-compat directory for installer, which resides in mw-config/ now.
-It will probably be remved in 1.19. \ No newline at end of file
diff --git a/config/index.php b/config/index.php
deleted file mode 100644
index 948fe69f..00000000
--- a/config/index.php
+++ /dev/null
@@ -1 +0,0 @@
-<?php require( dirname( dirname( __FILE__ ) ) . '/mw-config/index.php' ); \ No newline at end of file
diff --git a/config/index.php5 b/config/index.php5
deleted file mode 100644
index f9ce630c..00000000
--- a/config/index.php5
+++ /dev/null
@@ -1 +0,0 @@
-<?php require( dirname( dirname( __FILE__ ) ) . '/mw-config/index.php5' ); \ No newline at end of file
diff --git a/docs/database.txt b/docs/database.txt
index b9fa6ff7..3985b70e 100644
--- a/docs/database.txt
+++ b/docs/database.txt
@@ -186,3 +186,14 @@ MediaWiki does support the following other DBMSs to varying degrees.
More information can be found about each of these databases (known issues,
level of support, extra configuration) in the "databases" subdirectory in
this folder.
+
+------------------------------------------------------------------------
+ Use of GROUP BY
+------------------------------------------------------------------------
+
+MySQL supports GROUP BY without checking anything in the SELECT clause.
+Other DBMSs (especially Postgres) are stricter and require that all the
+non-aggregate items in the SELECT clause appear in the GROUP BY. For
+this reason, it is highly discouraged to use SELECT * with GROUP BY
+queries.
+
diff --git a/docs/databases/postgres.txt b/docs/databases/postgres.txt
index cec51861..6b266a6a 100644
--- a/docs/databases/postgres.txt
+++ b/docs/databases/postgres.txt
@@ -92,6 +92,18 @@ in maintenance/tables.sql itself, as it is very strict in the
format it expects things to be in. :)
+== MySQL differences ==
+
+The major differences between MySQL and Postgres are represented as
+methods in the Database class. For example, implicitGroupby() is
+true for MySQL and false for Postgres. This means that in those
+places where the code does not add all the non-aggregate items
+from the SELECT clause to the GROUP BY, we can add them in, but in
+a conditional manner with the above method, as simply adding them
+all in to the main query may cause performance problems with
+MySQL.
+
+
== Getting help ==
In addition to the normal venues (MediaWiki mailing lists
diff --git a/docs/design.html b/docs/design.html
new file mode 100644
index 00000000..064a6976
--- /dev/null
+++ b/docs/design.html
@@ -0,0 +1,18 @@
+<!DOCTYPE html>
+<html lang="en" dir="ltr" xmlns="http://www.w3.org/1999/xhtml">
+<head>
+ <link rel="stylesheet" href="../skins/common/shared.css" />
+</head>
+<body style="font-size: small;">
+
+ <h2>Messages</h2>
+ <p class="success">Success message</p>
+ <p class="warning">Warning message</p>
+ <p class="error">Error message</p>
+
+ <h2>Messages box</h2>
+ <p class="visualClear successbox">Success message</p>
+ <p class="visualClear warningbox">Warning message</p>
+ <p class="visualClear errorbox">Error message</p>
+
+</body></html>
diff --git a/docs/export-0.4.xsd b/docs/export-0.4.xsd
index 9ff39254..3e7f2eab 100644
--- a/docs/export-0.4.xsd
+++ b/docs/export-0.4.xsd
@@ -68,8 +68,8 @@
<!-- Behavior when $wgCapitalLinks = false -->
<enumeration value="case-sensitive" />
- <!-- Cannot have two titles differing only by case. -->
- <!-- Not yet implemented as of MediaWiki 1.5 -->
+ <!-- Cannot have non-case senstitive titles eg [[FOO]] == [[Foo]] -->
+ <!-- Not yet implemented as of MediaWiki 1.18 -->
<enumeration value="case-insensitive" />
</restriction>
</simpleType>
@@ -161,6 +161,10 @@
<attribute ref="xml:space" use="optional" default="preserve" />
<!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
<attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
+ <!-- This isn't a good idea; we should be using "ID" instead of "NMTOKEN" -->
+ <!-- However, "NMTOKEN" is strictest definition that is both compatible with existing -->
+ <!-- usage ([0-9]+) and with the "ID" type. -->
+ <attribute name="id" type="NMTOKEN"/>
</extension>
</simpleContent>
</complexType>
diff --git a/docs/export-0.5.xsd b/docs/export-0.5.xsd
index a0884958..ca54c938 100644
--- a/docs/export-0.5.xsd
+++ b/docs/export-0.5.xsd
@@ -68,8 +68,8 @@
<!-- Behavior when $wgCapitalLinks = false -->
<enumeration value="case-sensitive" />
- <!-- Cannot have two titles differing only by case. -->
- <!-- Not yet implemented as of MediaWiki 1.5 -->
+ <!-- Cannot have non-case senstitive titles eg [[FOO]] == [[Foo]] -->
+ <!-- Not yet implemented as of MediaWiki 1.18 -->
<enumeration value="case-insensitive" />
</restriction>
</simpleType>
@@ -161,6 +161,10 @@
<attribute ref="xml:space" use="optional" default="preserve" />
<!-- This allows deleted=deleted on non-empty elements, but XSD is not omnipotent -->
<attribute name="deleted" use="optional" type="mw:DeletedFlagType"/>
+ <!-- This isn't a good idea; we should be using "ID" instead of "NMTOKEN" -->
+ <!-- However, "NMTOKEN" is strictest definition that is both compatible with existing -->
+ <!-- usage ([0-9]+) and with the "ID" type. -->
+ <attribute name="id" type="NMTOKEN"/>
<attribute name="bytes" use="optional" type="nonNegativeInteger"/>
</extension>
</simpleContent>
diff --git a/docs/globals.txt b/docs/globals.txt
index 46486dd8..8b4c755b 100644
--- a/docs/globals.txt
+++ b/docs/globals.txt
@@ -9,7 +9,7 @@ in a much more flexible way. Consider the elegance of:
# Generate the article HTML as if viewed by a web request
$article = new Article( Title::newFromText( $t ) );
$article->view();
-
+
versus
# Save current globals
@@ -29,13 +29,13 @@ Some of the current MediaWiki developers have an idle fantasy that some day,
globals will be eliminated from MediaWiki entirely, replaced by an application
object which would be passed to constructors. Whether that would be an
efficient, convenient solution remains to be seen, but certainly PHP 5 makes
-such object-oriented programming models easier than they were in previous
+such object-oriented programming models easier than they were in previous
versions.
For the time being though, MediaWiki programmers will have to work in an
environment with some global context. At the time of writing, 418 globals were
-initialised on startup by MediaWiki. 304 of these were configuration settings,
-which are documented in DefaultSettings.php. There is no comprehensive
+initialised on startup by MediaWiki. 304 of these were configuration settings,
+which are documented in DefaultSettings.php. There is no comprehensive
documentation for the remaining 114 globals, however some of the most important
ones are listed below. They are typically initialised either in index.php or in
Setup.php.
@@ -45,9 +45,6 @@ For a description of the classes, see design.txt.
$wgTitle
Title object created from the request URL.
-$wgArticle
- Article object corresponding to $wgTitle.
-
$wgOut
OutputPage object for HTTP response.
@@ -68,6 +65,3 @@ $wgRequest
$wgMemc, $messageMemc, $parserMemc
Object caches
-
-$wgMessageCache
- Message cache, to manage interface messages
diff --git a/docs/hooks.txt b/docs/hooks.txt
index 12d603bb..ca938555 100644
--- a/docs/hooks.txt
+++ b/docs/hooks.txt
@@ -234,6 +234,10 @@ 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.
+$user: the User object about to be created (read-only, incomplete)
+&$abortMsg: out parameter: name of error message to be displayed to user
+
'AbortAutoblock': Return false to cancel an autoblock.
$autoblockip: The IP going to be autoblocked.
$block: The block from which the autoblock is coming.
@@ -247,6 +251,7 @@ $password: the password being submitted, not yet checked for validity
&$retval: a LoginForm class constant to return from authenticateUserData();
default is LoginForm::ABORTED. Note that the client may be using
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)
$old: old title
@@ -255,9 +260,20 @@ $user: user who is doing the move
$err: error message
$reason: the reason for the move (added in 1.13)
-'AbortNewAccount': Return false to cancel account creation.
+'AbortNewAccount': Return false to cancel explicit account creation.
$user: the User object about to be created (read-only, incomplete)
-$message: out parameter: error message to display on abort
+&$msg: out parameter: name of error message to display on abort
+
+'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
+$name: name of the action
+&$fields: HTMLForm descriptor array
+$article: Article object
'AddNewAccount': after a user account is created
$user: the User object that was created. (Parameter added in 1.7)
@@ -270,16 +286,6 @@ $revCount: Number of revisions in the XML file
$sRevCount: Number of sucessfully imported revisions
$pageInfo: associative array of page information
-'AfterUserMessage': After a user message has been left, this hook is
-called to take care of any cleanup.
-$user: The user who we left the message for.
-$article: The article the message was left on.
-$subject: The subject of the message
-$text: The text of the message.
-$signature: The signature we used.
-$summary: The edit summary.
-$editor: The editor that performed the edit.
-
'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; ).
@@ -353,6 +359,11 @@ 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.
+$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
@@ -380,7 +391,8 @@ $article: the article (object) being deleted
$output: the OutputPage object ($wgOut)
&$reason: the reason (string) the article is being deleted
-'ArticleContentOnDiff': before showing the article below a diff
+'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)
@@ -440,6 +452,10 @@ $row: row (object) returned from the database server
$article: article (object) that data will be loaded
$fields: fileds (array) to load from the database
+'ArticlePrepareTextForEdit': called when preparing text to be saved
+$article: the article being saved
+$popts: parser options to be used for pre-save transformation
+
'ArticleProtect': before an article is protected
$article: the article being protected
$user: the user doing the protection
@@ -505,6 +521,9 @@ before the user is redirected back to the page
&$sectionanchor: The section anchor link (e.g. "#overview" )
&$extraq: Extra query parameters which can be added via hooked functions
+'ArticleViewFooter': After showing the footer section of an ordinary page view
+$article: Article object
+
'ArticleViewHeader': Before the parser cache is about to be tried for article
viewing.
&$article: the article
@@ -536,11 +555,6 @@ $name: Image name being checked
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.
-'BeforeGalleryFindFile': before an image is fetched for a gallery
-&$gallery,: the gallery object
-&$nt: the image title
-&$time: image timestamp
-
'BeforeInitialize': before anything is initialized in performRequestForTitle()
&$title: Title being used for request
&$article: The associated Article object
@@ -553,22 +567,38 @@ $mediaWiki: Mediawiki object
&$out: OutputPage object
&$skin: Skin object
+'BeforeParserFetchFileAndTitle': before an image is rendered by Parser
+$parser: Parser object
+$nt: the image title
+&$time: the image timestamp (use '0' to force a broken thumbnail)
+&$sha1: image base 36 sha1 (used to specify the file, $nt will be ignored if this is set)
+&$descQuery: query string to add to thumbnail URL
+
'BeforeParserFetchTemplateAndtitle': before a template is fetched by Parser
-&$parser: Parser object
-&$title: title of the template
+$parser: Parser object
+$title: title of the template
&$skip: skip this template and link it?
&$id: the id of the revision being parsed
-'BeforeParserMakeImageLinkObj': before an image is rendered by Parser
-&$parser: Parser object
-&$nt: the image title
-&$skip: skip this image and link it?
-&$time: the image timestamp
-
'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
+
+'BitmapHandlerTransform': before a file is transformed, gives extension the
+possibility to transform it themselves
+$handler: BitmapHandler
+$image: File
+&$scalerParams: Array with scaler parameters
+&$mto: null, set to a MediaTransformOutput
+
+'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
$block: the Block object about to be saved
$user: the user _doing_ the block (not the one being blocked)
@@ -595,6 +625,11 @@ $catpage: CategoryPage 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
+$collationName: Name of the collation in question
+&$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
$user: user (object) whose email is being confirmed
@@ -623,6 +658,10 @@ etc.
'DatabaseOraclePostInit': Called after initialising an Oracle database
&$db: the DatabaseOracle object
+'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)
+
'NewDifferenceEngine': Called when a new DifferenceEngine object is made
$title: the diff page title (nullable)
&$oldId: the actual old Id to use in the diff
@@ -675,7 +714,7 @@ pages
$editPage: EditPage object
'EditPage::attemptSave': called before an article is
-saved, that is before insertNewArticle() is called
+saved, that is before Article::doEdit() is called
$editpage_Obj: the current EditPage object
'EditPage::importFormData': allow extensions to read additional data
@@ -789,7 +828,7 @@ $editToken: The user's edit token.
'FetchChangesList': When fetching the ChangesList derivative for
a particular user
-&$user: User the list is being fetched for
+$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)
@@ -813,12 +852,6 @@ $fileVersions: array of undeleted versions. Empty if all versions were restored
$user: user who performed the undeletion
$reason: reason
-'FormatUserMessage': Hook to format a message if you want to override
-the internal formatter.
-$subject: Title of the message.
-&$text: Text of the message.
-$signature: Signature that they would like to leave.
-
'GetAutoPromoteGroups': When determining which autopromote groups a user
is entitled to be in.
&$user: user to promote.
@@ -832,15 +865,27 @@ $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
+'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()
+$variant: variant passed to Title::getCanonicalURL()
+
+'GetDefaultSortkey': Override the default sortkey for a page.
+$title: Title object that we need to get a sortkey for
+&$sortkey: Sortkey to use.
+
'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()
+$variant: variant passed to Title::getFullURL()
'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()
+$variant: variant passed to Title::getFullURL()
'GetIP': modify the ip of the current user (called only once)
&$ip: string holding the ip as determined so far
@@ -854,6 +899,15 @@ $linkcolour_ids: array of prefixed DB keys of the pages linked to,
$title: Title object of page
$url: string value as output (out parameter, can modify)
$query: query options passed to Title::getLocalURL()
+$variant: variant passed to Title::getLocalURL()
+
+'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
$user: User whose preferences are being modified.
@@ -956,6 +1010,12 @@ $ignoreRedirect: boolean to skip redirect check
$target: Title/string of redirect target
$article: Article object
+'InterwikiLoadPrefix': When resolving if a given prefix is an interwiki or not.
+Return true without providing an interwiki to continue interwiki search.
+$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.
+
'InternalParseBeforeLinks': during Parser's internalParse method before links
but after noinclude/includeonly/onlyinclude and other processing.
&$parser: Parser object
@@ -965,6 +1025,11 @@ but after noinclude/includeonly/onlyinclude and other processing.
'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.
+Callee may modify $url and $query, URL will be constructed as $url . $query
+&$url: URL to index.php
+&$query: Query string
+
'IsFileCacheable': Override the result of Article::isFileCacheable() (if true)
$article: article (object) being checked
@@ -994,13 +1059,17 @@ Use to define aliases of special pages names depending of the language
$specialPageAliases: associative array of magic words synonyms
$lang: laguage code (string)
+'LanguageGetTranslatedLanguageNames': Provide translated language names.
+&$names: array of language code => language name
+$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.
$skin: the Skin object
$target: the Title that the link is pointing to
-&$text: the contents that the <a> tag should have (raw HTML); null means "de-
+&$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-
@@ -1012,13 +1081,13 @@ $target: the Title that the link is pointing to
'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 $text will be returned. If you re-
+with HTML attributes $attribs and contents $html will be returned. If you re-
turn 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'.
-&$text: the final (raw HTML) contents of the <a> tag, after processing.
+&$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.
&$ret: the value to return if your hook returns false.
@@ -1088,21 +1157,8 @@ $paramArray: Array of parameters that corresponds to logging.log_params field.
&$revert: string that is displayed in the UI, similar to $comment.
$time: timestamp of the log entry (added in 1.12)
-'LogPageValidTypes': action being logged.
-DEPRECATED: Use $wgLogTypes
-&$type: array of strings
-
-'LogPageLogName': name of the logging page(s).
-DEPRECATED: Use $wgLogNames
-&$typeText: array of strings
-
-'LogPageLogHeader': strings used by wfMsg as a header.
-DEPRECATED: Use $wgLogHeaders
-&$headerText: array of strings
-
-'LogPageActionText': strings used by wfMsg as a header.
-DEPRECATED: Use $wgLogActions
-&$actionText: array of strings
+'MaintenanceRefreshLinksInit': before executing the refreshLinks.php maintenance script
+$refreshLinks: RefreshLinks object
'MagicWordMagicWords': When defining new magic word.
DEPRECATED: use $magicWords in a file listed in
@@ -1131,11 +1187,6 @@ $user: user (object) who marked the edit patrolled
$wcOnlySysopsCanPatrol: config setting indicating whether the user
must be a sysop to patrol the edit
-'MathAfterTexvc': after texvc is executed when rendering mathematics
-$mathRenderer: instance of MathRenderer
-$errmsg: error message, in HTML (string). Nonempty indicates failure
- of rendering the formula
-
'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.
@@ -1170,6 +1221,15 @@ the SkinTemplateToolboxEnd hook instead, which works for all
"SkinTemplate"-type skins.
$tools: array of tools
+'BaseTemplateToolbox': Called by BaseTemplate when building the $toolbox array
+and returning it for the skin to output. You can add items to the toolbox while
+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
+
'NewRevisionFromEditComplete': called when a revision was inserted
due to an edit
$article: the article edited
@@ -1233,6 +1293,12 @@ $categories: associative array, keys are category names, values are category
$links: array, intended to hold the result. Must be an associative array with
category types as keys and arrays of HTML links as values.
+'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
+
'PageHistoryBeforeList': When a history page list is about to be constructed.
$article: the article that the history is loading for
@@ -1363,6 +1429,11 @@ $out: OutputPage object
loader request or generating HTML output.
&$resourceLoader: ResourceLoader object
+'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.
+
'RawPageViewBeforeOutput': Right before the text is blown out in action=raw
&$obj: RawPage object
&$text: The text that's going to be the output
@@ -1414,16 +1485,6 @@ $query : Original query.
'SetupAfterCache': Called in Setup.php, after cache objects are set
-'SetupUserMessageArticle': Called in User::leaveUserMessage() before
-anything has been posted to the article.
-$user: The user who we left the message for.
-&$article: The article that will be posted to.
-$subject: The subject of the message
-$text: The text of the message.
-$signature: The signature we used.
-$summary: The edit summary.
-$editor: The editor that performed the edit.
-
'ShowMissingArticle': Called when generating the output for a non-existent page
$article: The article object corresponding to the page
@@ -1441,11 +1502,13 @@ $page: The SpecialSearch object.
'SiteNoticeBefore': Before the sitenotice/anonnotice is composed
&$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
+$skin: Skin object
Alter the contents of $siteNotice to add to/alter the sitenotice/anonnotice.
'SkinAfterBottomScripts': At the end of Skin::bottomScripts()
@@ -1480,29 +1543,20 @@ $skin: Skin object
'SkinSubPageSubtitle': At the beginning of Skin::subPageSubtitle()
&$subpages: Subpage links HTML
$skin: Skin object
+$out: OutputPage object
If false is returned $subpages will be used instead of the HTML
subPageSubtitle() generates.
If true is returned, $subpages will be ignored and the rest of
subPageSubtitle() will run.
-'SkinTemplateBuildContentActionUrlsAfterSpecialPage': after the single tab
-when showing a special page
-$sktemplate: SkinTemplate object
-$content_actions: array of tabs
-
'SkinTemplateBuildNavUrlsNav_urlsAfterPermalink': after creating the
"permanent link" tab
$sktemplate: SkinTemplate object
$nav_urls: array of tabs
-'SkinTemplateContentActions': Alter the "content action" links in SkinTemplates
-&$content_actions: Content actions
-[See http://svn.wikimedia.org/viewvc/mediawiki/trunk/extensions/examples/Content_action.php
-for an example]
-
Alter the structured navigation links in SkinTemplates, there are three of these hooks called in different spots.
-'SkinTemplateNavigation': Called on content pages before variants have been added
-'SkinTemplateNavigation::SpecialPage': Called on special pages before variands have been added
+'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
&$sktemplate: SkinTemplate object
&$links: Structured navigation links
@@ -1533,13 +1587,13 @@ $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': called when finished to build the actions tabs
-$sktemplate: SkinTemplate object
-$content_actions: array of tabs
-
'SkinTemplateToolboxEnd': Called by SkinTemplate skins after toolbox links have
been rendered (useful for adding more)
-$tools: array of tools
+$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.
'SoftwareInfo': Called by Special:Version for returning information about
the software
@@ -1583,11 +1637,25 @@ $newTitle: new title (object)
&$special: NewPagesPager object (subclass of ReverseChronologicalPager)
$opts: FormOptions object containing special page options
&$conds: array of WHERE conditionals for query
+&tables: array of tables to be queried
+&$fields: array of columns to select
+&$join_conds: join conditions for the tables
+
+'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.
'SpecialPage_initList': called when setting up SpecialPage::$mList, use this
hook to remove a core special page
$list: list (array) of core special pages
+'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.
+
'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()
@@ -1597,6 +1665,11 @@ use this to change some selection criteria or substitute a different title
&$title: If the hook returns false, a Title object to use instead of the
result from the normal query
+'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.
+
'SpecialRecentChangesPanel': called when building form options in
SpecialRecentChanges
&$extraOpts: array of added items, to which can be added
@@ -1609,7 +1682,12 @@ SpecialRecentChanges and SpecialRecentChangesLinked
&$join_conds: join conditions for the tables
$opts: FormOptions for this request
&$query_options: array of options for the database request
-&$select: String '*' or array of columns to select
+&$select: Array of columns to select
+
+'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"
&$title: title object generated from the text entered by the user
@@ -1619,9 +1697,27 @@ $opts: FormOptions for this request
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
+&$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
&$profiles: profiles, which can be modified.
+'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
+$profile: String: current search profile
+$engine: the search engine
+
'SpecialSearchResults': called before search result display when there
are matches
$term: string of search term
@@ -1644,12 +1740,22 @@ $form: The SpecialUpload object
use this to change the tables headers
$extTypes: associative array of extensions types
+'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.
+
'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.
+$request: WebRequest
+$title: Title of the currently found title obj
+$output: OutputPage object
+
'TitleArrayFromResult': called when creating an TitleArray object from a
database result
&$titleArray: set this to an object to override the default object returned
@@ -1667,6 +1773,23 @@ $user: user who did the move
$pageid: database ID of the page that's been moved
$redirid: database ID of the created redirect
+'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
+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
+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
$title: title object related to the revision
$rev: revision (object) that will be viewed
@@ -1676,6 +1799,9 @@ $rev: revision (object) that will be viewed
$action: action name
$article: article "acted on"
+'UnitTestsList': Called when building a list of files with PHPUnit tests
+&$files: list of files
+
'UnwatchArticle': before a watch is removed from an article
$user: user watching
$article: article object to be removed
@@ -1746,6 +1872,11 @@ $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
+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
&$userArray: set this to an object to override the default object returned
@@ -1794,6 +1925,10 @@ $user: User to get groups for
'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.
+&$defaultOptions: Array of preference keys and their default values.
+
'UserGetEmail': called when getting an user email address
$user: User object
&$email: email, change this to override local email
@@ -1807,6 +1942,10 @@ $user: User object
'UserGetImplicitGroups': Called in User::getImplicitGroups()
&$groups: List of implicit (automatically-assigned) groups
+'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
&$reservedUsernames: $wgReservedUsernames
@@ -1857,10 +1996,6 @@ $inject_html: Any HTML to inject after the "logged in" message.
'UserLoginForm': change to manipulate the login form
$template: SimpleTemplate instance for the form
-'UserLoginMailPassword': Block users from emailing passwords
-$name: the username to email the password of.
-&$error: out-param - the error message to return.
-
'UserLogout': before a user logs out
$user: the user object that is about to be logged out
@@ -1869,6 +2004,11 @@ $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.
+$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
$user : User object that was changed
$add : Array of strings corresponding to groups added
@@ -1901,10 +2041,10 @@ $user: User object
&$timestamp: new timestamp, change this to override local email
authentification timestamp
-'WantedPages::getSQL': called in WantedPagesPage::getSQL(), 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
-&$sql: raw SQL query used to get the list of wanted pages
+&$query: query array, see QueryPage::getQueryInfo() for format documentation
'WatchArticle': before a watch is added to an article
$user: user that will watch
@@ -1946,5 +2086,14 @@ $obj: The XmlDumpWriter object.
$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.
+
+'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
./maintenance/findhooks.php to find hidden one.
diff --git a/docs/skin.txt b/docs/skin.txt
index bbe6fec5..fab27b87 100644
--- a/docs/skin.txt
+++ b/docs/skin.txt
@@ -1,8 +1,9 @@
skin.txt
-MediaWiki's default skin is called Vector. This has been the case since
-the 1.17 release (2011). This replaces the popular skin, Monobook which
-had been been the default since MediaWiki 1.3 (2004). It is now the
+MediaWiki's default skin is called Vector. Vector was introduced in
+the 1.16 release (2010) and has been set as the default in MediaWiki since
+the 1.17 release (2011). This replaced the popular skin, Monobook which
+had been been the default since MediaWiki 1.3 (2004). Vector is now the
default skin on Wikimedia Projects.
There are three legacy skins which were introduced before MediaWiki 1.3:
@@ -81,9 +82,9 @@ It is now possible (since MediaWiki 1.12) to write a skin as a standard
MediaWiki extension, enabled via LocalSettings.php. This is done by adding
it to $wgValidSkinNames, for example:
-$wgValidSkinNames['mycoolskin'] = 'My cool skin';
+$wgValidSkinNames['mycoolskin'] = 'MyCoolSkin';
-and then registering a class in $wgAutoloadClasses called SkinMycoolskin, which
+and then registering a class in $wgAutoloadClasses called SkinMycoolSkin, which
derives from Skin. This technique is apparently not yet used (as of 2008)
outside the DumpHTML extension.
diff --git a/extensions/ConfirmEdit/Captcha.php b/extensions/ConfirmEdit/Captcha.php
new file mode 100644
index 00000000..1d781ae8
--- /dev/null
+++ b/extensions/ConfirmEdit/Captcha.php
@@ -0,0 +1,894 @@
+<?php
+
+/**
+ * Object encapsulating a captcha process. The captcha has two elements: it must be able
+ * to generate a frontend HTML representation of itself which can be presented to the user,
+ * which provides inputs for users to provide their interpretation of the captcha; and it
+ * must be able to retrieve that data from a subsequently-submitted request and validate
+ * whether the user got the data correct.
+ */
+abstract class Captcha {
+
+ /**
+ * @var String
+ */
+ protected $id;
+
+ /**
+ * Information about the captcha, in array form
+ * @var $info Array
+ */
+ protected $info;
+
+ /**
+ * Whether this captcha exists in the storage
+ * @var Bool
+ */
+ protected $exists;
+
+ /**
+ * Generate a new empty Captcha. This is guaranteed to return a Captcha object if it
+ * does not throw an exception
+ *
+ * @return Captcha subclass
+ */
+ public final static function factory() {
+ global $wgCaptchaClass;
+ $obj = new $wgCaptchaClass;
+ if ( $obj instanceof Captcha ) {
+ return $obj;
+ } else {
+ throw new MWException( "Invalid Captcha class $wgCaptchaClass, must extend Captcha" );
+ }
+ }
+
+ /**
+ * Instantiate a new Captcha object for a given Id
+ *
+ * @param $id Int
+ * @return Captcha
+ */
+ public final static function newFromId( $id ){
+ $obj = self::factory();
+ $obj->setId( $id );
+ return $obj->exists()
+ ? $obj
+ : null;
+ }
+
+ /**
+ * Instantiate a brand new captcha, never seen before.
+ *
+ * @return Captcha
+ */
+ public final static function newRandom(){
+ $obj = self::factory();
+ $obj->generateNew();
+ return $obj;
+ }
+
+ /**
+ * Protected constructor - use only the factory methods above to instantiate captchas,
+ * or you may end up with the wrong type of object
+ */
+ protected function __construct(){}
+
+ /**
+ * Get the captcha Id
+ *
+ * @return String
+ */
+ public function getId(){
+ return $this->id;
+ }
+
+ /**
+ * Set the Id internally. Don't include wierd things like entities or characters that
+ * need to be HTML-escaped, you'll just be creating more work and pain for yourself...
+ *
+ * @param $id String
+ */
+ protected function setId( $id ){
+ $this->id = $id;
+ }
+
+ /**
+ * Initialise $this->info etc with information needed to make this object a new,
+ * (ideally) never-seen-before captcha. Implementations should not save the data in
+ * the store in this function, as the captcha may not ever be used.
+ *
+ * @return Array of captcha info
+ */
+ # FIXME: detail
+ protected abstract function generateNew();
+
+ /**
+ * Save a generated captcha in storage somewhere where it won't be lost between
+ * requests. A random ID is used so legit users can make edits in multiple tabs
+ * or windows without being unnecessarily hobbled by a serial order requirement.
+ */
+ protected function store() {
+ // Assign random index if we're not udpating
+ if ( !isset( $this->info['index'] ) ) {
+ if( !$this->getId() ){
+ $this->setId( strval( mt_rand() ) );
+ }
+ $this->info['index'] = $this->getId();
+ }
+ CaptchaStore::get()->store( $this->info['index'], $this->info );
+ }
+
+ /**
+ * Fetch the data for this captcha from the CaptchaStore. This requires $this->id
+ * to be set.
+ *
+ * @return Array|Bool: Array of info, or false if missing
+ */
+ protected function retrieve() {
+ if( $this->getId() === null ){
+ return null;
+ }
+ if( $this->info === null ){
+ $this->info = CaptchaStore::get()->retrieve( $this->getId() );
+ $this->exists = $this->info !== false;
+ }
+ return $this->info;
+ }
+
+ /**
+ * Clear the information about this captcha from the CaptchaStore, so it cannot
+ * be reused at a later date.
+ */
+ protected function delete() {
+ if( $this->getId() !== null ){
+ CaptchaStore::get()->clear( $this->getId() );
+ }
+ }
+
+ /**
+ * Whether this captcha exists. $this->setId() must have been called from some context
+ *
+ * @return Bool
+ */
+ public function exists(){
+ if( $this->exists === null ){
+ $this->retrieve();
+ }
+ return $this->exists;
+ }
+
+ /**
+ * Load some data from a WebRequest. Implementations must load all data they need
+ * from the request in this function, they must not use the global $wgRequest, as
+ * in the post-1.18 environment they may not necessarily be the same.
+ *
+ * @param $request WebRequest
+ * @param $field HTMLCaptchaField will be passed if the captcha is part of an HTMLForm
+ */
+ public abstract function loadFromRequest( WebRequest $request, HTMLCaptchaField $field = null );
+
+ /**
+ * Return the data that would be needed to pass the captcha challenge through the API.
+ * Implementations must return an array with at least the following parameters:
+ * 'type' - a unique description of the type of challenge. This could be
+ * the class name
+ * 'mime' - the MIME type of the challenge
+ * 'id' - the captcha Id produced by getId()
+ * Implementations should document how the user should use the provided data to answer
+ * the captcha.
+ *
+ * Implementations may return False to indicate that it is not possible to represent
+ * the challenge via the API. API actions protected by such a captcha will be disabled.
+ *
+ * @return Array|Bool
+ */
+ public abstract function getApiParams();
+
+ /**
+ * Return the HTML which will be placed in the 'input' table cell of an HTMLForm.
+ * Implementations must include input fields which will perpetuate the captcha Id and
+ * any special data, as well as providing a means for the user to answer the captcha.
+ * Implementations should not include any help or label text, as these will be set in
+ * the label-message and help-message attributes of the HTMLCaptchafield.
+ * Implementations should honour the options set in the HTMLFormField such as
+ * $field->mName and $field->mReadonly.
+ *
+ * @param $field HTMLCaptchaField
+ * @return String raw HTML
+ */
+ public abstract function getFormHTML( HTMLCaptchaField $field );
+
+ /**
+ * Return the HTML which will be used in legacy forms which do not implement HTMLForm
+ * Implementations must include input fields which will perpetuate the captcha Id and
+ * any other necessary data, as well as providing a means for the user to answer the
+ * captcha, and any relevant descriptions and instructions.
+ *
+ * @return String raw HTML
+ */
+ public abstract function getFreeflowHTML();
+
+ /**
+ * Using the parameters loaded from the web request, check the captcha, maybe delete
+ * it if that's desirable, do any other necessary cleanup, and return Bool
+ * @return Bool whether the captcha was successfully answered
+ */
+ public abstract function checkCaptcha();
+}
+
+class SimpleCaptcha {
+
+ function getCaptcha() {
+ $a = mt_rand( 0, 100 );
+ $b = mt_rand( 0, 10 );
+
+ /* Minus sign is used in the question. UTF-8,
+ since the api uses text/plain, not text/html */
+ $op = mt_rand( 0, 1 ) ? '+' : '−';
+
+ $test = "$a $op $b";
+ $answer = ( $op == '+' ) ? ( $a + $b ) : ( $a - $b );
+ return array( 'question' => $test, 'answer' => $answer );
+ }
+
+ function addCaptchaAPI( &$resultArr ) {
+ $captcha = $this->getCaptcha();
+ $index = $this->storeCaptcha( $captcha );
+ $resultArr['captcha']['type'] = 'simple';
+ $resultArr['captcha']['mime'] = 'text/plain';
+ $resultArr['captcha']['id'] = $index;
+ $resultArr['captcha']['question'] = $captcha['question'];
+ }
+
+ /**
+ * Insert a captcha prompt into the edit form.
+ * This sample implementation generates a simple arithmetic operation;
+ * it would be easy to defeat by machine.
+ *
+ * Override this!
+ *
+ * @return string HTML
+ */
+ function getForm() {
+ $captcha = $this->getCaptcha();
+ $index = $this->storeCaptcha( $captcha );
+
+ return "<p><label for=\"wpCaptchaWord\">{$captcha['question']}</label> = " .
+ Xml::element( 'input', array(
+ 'name' => 'wpCaptchaWord',
+ 'id' => 'wpCaptchaWord',
+ 'tabindex' => 1 ) ) . // tab in before the edit textarea
+ "</p>\n" .
+ Xml::element( 'input', array(
+ 'type' => 'hidden',
+ 'name' => 'wpCaptchaId',
+ 'id' => 'wpCaptchaId',
+ 'value' => $index ) );
+ }
+
+ /**
+ * Insert the captcha prompt into an edit form.
+ * @param OutputPage $out
+ */
+ function editCallback( &$out ) {
+ $out->addWikiText( $this->getMessage( $this->action ) );
+ $out->addHTML( $this->getForm() );
+ }
+
+ /**
+ * Show a message asking the user to enter a captcha on edit
+ * The result will be treated as wiki text
+ *
+ * @param $action Action being performed
+ * @return string
+ */
+ function getMessage( $action ) {
+ $name = 'captcha-' . $action;
+ $text = wfMsg( $name );
+ # Obtain a more tailored message, if possible, otherwise, fall back to
+ # the default for edits
+ return wfEmptyMsg( $name, $text ) ? wfMsg( 'captcha-edit' ) : $text;
+ }
+
+ /**
+ * Inject whazawhoo
+ * @fixme if multiple thingies insert a header, could break
+ * @param $form HTMLForm
+ * @return bool true to keep running callbacks
+ */
+ function injectEmailUser( &$form ) {
+ global $wgCaptchaTriggers, $wgOut, $wgUser;
+ if ( $wgCaptchaTriggers['sendemail'] ) {
+ if ( $wgUser->isAllowed( 'skipcaptcha' ) ) {
+ wfDebug( "ConfirmEdit: user group allows skipping captcha on email sending\n" );
+ return true;
+ }
+ $form->addFooterText(
+ "<div class='captcha'>" .
+ $wgOut->parse( $this->getMessage( 'sendemail' ) ) .
+ $this->getForm() .
+ "</div>\n" );
+ }
+ return true;
+ }
+
+ /**
+ * Inject whazawhoo
+ * @fixme if multiple thingies insert a header, could break
+ * @param QuickTemplate $template
+ * @return bool true to keep running callbacks
+ */
+ function injectUserCreate( &$template ) {
+ global $wgCaptchaTriggers, $wgOut, $wgUser;
+ if ( $wgCaptchaTriggers['createaccount'] ) {
+ if ( $wgUser->isAllowed( 'skipcaptcha' ) ) {
+ wfDebug( "ConfirmEdit: user group allows skipping captcha on account creation\n" );
+ return true;
+ }
+ $template->set( 'header',
+ "<div class='captcha'>" .
+ $wgOut->parse( $this->getMessage( 'createaccount' ) ) .
+ $this->getForm() .
+ "</div>\n" );
+ }
+ return true;
+ }
+
+ /**
+ * Inject a captcha into the user login form after a failed
+ * password attempt as a speedbump for mass attacks.
+ * @fixme if multiple thingies insert a header, could break
+ * @param $template QuickTemplate
+ * @return bool true to keep running callbacks
+ */
+ function injectUserLogin( &$template ) {
+ if ( $this->isBadLoginTriggered() ) {
+ global $wgOut;
+ $template->set( 'header',
+ "<div class='captcha'>" .
+ $wgOut->parse( $this->getMessage( 'badlogin' ) ) .
+ $this->getForm() .
+ "</div>\n" );
+ }
+ return true;
+ }
+
+ /**
+ * When a bad login attempt is made, increment an expiring counter
+ * in the memcache cloud. Later checks for this may trigger a
+ * captcha display to prevent too many hits from the same place.
+ * @param User $user
+ * @param string $password
+ * @param int $retval authentication return value
+ * @return bool true to keep running callbacks
+ */
+ function triggerUserLogin( $user, $password, $retval ) {
+ global $wgCaptchaTriggers, $wgCaptchaBadLoginExpiration, $wgMemc;
+ if ( $retval == LoginForm::WRONG_PASS && $wgCaptchaTriggers['badlogin'] ) {
+ $key = $this->badLoginKey();
+ $count = $wgMemc->get( $key );
+ if ( !$count ) {
+ $wgMemc->add( $key, 0, $wgCaptchaBadLoginExpiration );
+ }
+ $count = $wgMemc->incr( $key );
+ }
+ return true;
+ }
+
+ /**
+ * Check if a bad login has already been registered for this
+ * IP address. If so, require a captcha.
+ * @return bool
+ * @access private
+ */
+ function isBadLoginTriggered() {
+ global $wgMemc, $wgCaptchaBadLoginAttempts;
+ return intval( $wgMemc->get( $this->badLoginKey() ) ) >= $wgCaptchaBadLoginAttempts;
+ }
+
+ /**
+ * Check if the IP is allowed to skip captchas
+ */
+ function isIPWhitelisted() {
+ global $wgCaptchaWhitelistIP;
+ if ( $wgCaptchaWhitelistIP ) {
+ $ip = wfGetIp();
+ foreach ( $wgCaptchaWhitelistIP as $range ) {
+ if ( IP::isInRange( $ip, $range ) ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Internal cache key for badlogin checks.
+ * @return string
+ * @access private
+ */
+ function badLoginKey() {
+ return wfMemcKey( 'captcha', 'badlogin', 'ip', wfGetIP() );
+ }
+
+ /**
+ * Check if the submitted form matches the captcha session data provided
+ * by the plugin when the form was generated.
+ *
+ * Override this!
+ *
+ * @param string $answer
+ * @param array $info
+ * @return bool
+ */
+ function keyMatch( $answer, $info ) {
+ return $answer == $info['answer'];
+ }
+
+ // ----------------------------------
+
+ /**
+ * @param EditPage $editPage
+ * @param string $action (edit/create/addurl...)
+ * @return bool true if action triggers captcha on editPage's namespace
+ */
+ function captchaTriggers( &$editPage, $action ) {
+ global $wgCaptchaTriggers, $wgCaptchaTriggersOnNamespace;
+ // Special config for this NS?
+ if ( isset( $wgCaptchaTriggersOnNamespace[$editPage->mTitle->getNamespace()][$action] ) )
+ return $wgCaptchaTriggersOnNamespace[$editPage->mTitle->getNamespace()][$action];
+
+ return ( !empty( $wgCaptchaTriggers[$action] ) ); // Default
+ }
+
+ /**
+ * @param EditPage $editPage
+ * @param string $newtext
+ * @param string $section
+ * @return bool true if the captcha should run
+ */
+ function shouldCheck( &$editPage, $newtext, $section, $merged = false ) {
+ $this->trigger = '';
+ $title = $editPage->mArticle->getTitle();
+
+ global $wgUser;
+ if ( $wgUser->isAllowed( 'skipcaptcha' ) ) {
+ wfDebug( "ConfirmEdit: user group allows skipping captcha\n" );
+ return false;
+ }
+ if ( $this->isIPWhitelisted() )
+ return false;
+
+
+ global $wgEmailAuthentication, $ceAllowConfirmedEmail;
+ if ( $wgEmailAuthentication && $ceAllowConfirmedEmail &&
+ $wgUser->isEmailConfirmed() ) {
+ wfDebug( "ConfirmEdit: user has confirmed mail, skipping captcha\n" );
+ return false;
+ }
+
+ if ( $this->captchaTriggers( $editPage, 'edit' ) ) {
+ // Check on all edits
+ global $wgUser;
+ $this->trigger = sprintf( "edit trigger by '%s' at [[%s]]",
+ $wgUser->getName(),
+ $title->getPrefixedText() );
+ $this->action = 'edit';
+ wfDebug( "ConfirmEdit: checking all edits...\n" );
+ return true;
+ }
+
+ if ( $this->captchaTriggers( $editPage, 'create' ) && !$editPage->mTitle->exists() ) {
+ // Check if creating a page
+ global $wgUser;
+ $this->trigger = sprintf( "Create trigger by '%s' at [[%s]]",
+ $wgUser->getName(),
+ $title->getPrefixedText() );
+ $this->action = 'create';
+ wfDebug( "ConfirmEdit: checking on page creation...\n" );
+ return true;
+ }
+
+ if ( $this->captchaTriggers( $editPage, 'addurl' ) ) {
+ // Only check edits that add URLs
+ if ( $merged ) {
+ // Get links from the database
+ $oldLinks = $this->getLinksFromTracker( $title );
+ // Share a parse operation with Article::doEdit()
+ $editInfo = $editPage->mArticle->prepareTextForEdit( $newtext );
+ $newLinks = array_keys( $editInfo->output->getExternalLinks() );
+ } else {
+ // Get link changes in the slowest way known to man
+ $oldtext = $this->loadText( $editPage, $section );
+ $oldLinks = $this->findLinks( $editPage, $oldtext );
+ $newLinks = $this->findLinks( $editPage, $newtext );
+ }
+
+ $unknownLinks = array_filter( $newLinks, array( &$this, 'filterLink' ) );
+ $addedLinks = array_diff( $unknownLinks, $oldLinks );
+ $numLinks = count( $addedLinks );
+
+ if ( $numLinks > 0 ) {
+ global $wgUser;
+ $this->trigger = sprintf( "%dx url trigger by '%s' at [[%s]]: %s",
+ $numLinks,
+ $wgUser->getName(),
+ $title->getPrefixedText(),
+ implode( ", ", $addedLinks ) );
+ $this->action = 'addurl';
+ return true;
+ }
+ }
+
+ global $wgCaptchaRegexes;
+ if ( $wgCaptchaRegexes ) {
+ // Custom regex checks
+ $oldtext = $this->loadText( $editPage, $section );
+
+ foreach ( $wgCaptchaRegexes as $regex ) {
+ $newMatches = array();
+ if ( preg_match_all( $regex, $newtext, $newMatches ) ) {
+ $oldMatches = array();
+ preg_match_all( $regex, $oldtext, $oldMatches );
+
+ $addedMatches = array_diff( $newMatches[0], $oldMatches[0] );
+
+ $numHits = count( $addedMatches );
+ if ( $numHits > 0 ) {
+ global $wgUser;
+ $this->trigger = sprintf( "%dx %s at [[%s]]: %s",
+ $numHits,
+ $regex,
+ $wgUser->getName(),
+ $title->getPrefixedText(),
+ implode( ", ", $addedMatches ) );
+ $this->action = 'edit';
+ return true;
+ }
+ }
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Filter callback function for URL whitelisting
+ * @param string url to check
+ * @return bool true if unknown, false if whitelisted
+ * @access private
+ */
+ function filterLink( $url ) {
+ global $wgCaptchaWhitelist;
+ $source = wfMsgForContent( 'captcha-addurl-whitelist' );
+
+ $whitelist = wfEmptyMsg( 'captcha-addurl-whitelist', $source )
+ ? false
+ : $this->buildRegexes( explode( "\n", $source ) );
+
+ $cwl = $wgCaptchaWhitelist !== false ? preg_match( $wgCaptchaWhitelist, $url ) : false;
+ $wl = $whitelist !== false ? preg_match( $whitelist, $url ) : false;
+
+ return !( $cwl || $wl );
+ }
+
+ /**
+ * Build regex from whitelist
+ * @param string lines from [[MediaWiki:Captcha-addurl-whitelist]]
+ * @return string Regex or bool false if whitelist is empty
+ * @access private
+ */
+ function buildRegexes( $lines ) {
+ # Code duplicated from the SpamBlacklist extension (r19197)
+
+ # Strip comments and whitespace, then remove blanks
+ $lines = array_filter( array_map( 'trim', preg_replace( '/#.*$/', '', $lines ) ) );
+
+ # No lines, don't make a regex which will match everything
+ if ( count( $lines ) == 0 ) {
+ wfDebug( "No lines\n" );
+ return false;
+ } else {
+ # Make regex
+ # It's faster using the S modifier even though it will usually only be run once
+ // $regex = 'http://+[a-z0-9_\-.]*(' . implode( '|', $lines ) . ')';
+ // return '/' . str_replace( '/', '\/', preg_replace('|\\\*/|', '/', $regex) ) . '/Si';
+ $regexes = '';
+ $regexStart = '/^https?:\/\/+[a-z0-9_\-.]*(';
+ $regexEnd = ')/Si';
+ $regexMax = 4096;
+ $build = false;
+ foreach ( $lines as $line ) {
+ // FIXME: not very robust size check, but should work. :)
+ if ( $build === false ) {
+ $build = $line;
+ } elseif ( strlen( $build ) + strlen( $line ) > $regexMax ) {
+ $regexes .= $regexStart .
+ str_replace( '/', '\/', preg_replace( '|\\\*/|', '/', $build ) ) .
+ $regexEnd;
+ $build = $line;
+ } else {
+ $build .= '|' . $line;
+ }
+ }
+ if ( $build !== false ) {
+ $regexes .= $regexStart .
+ str_replace( '/', '\/', preg_replace( '|\\\*/|', '/', $build ) ) .
+ $regexEnd;
+ }
+ return $regexes;
+ }
+ }
+
+ /**
+ * Load external links from the externallinks table
+ * @param $title Title
+ * @return Array
+ */
+ function getLinksFromTracker( $title ) {
+ $dbr = wfGetDB( DB_SLAVE );
+ $id = $title->getArticleId(); // should be zero queries
+ $res = $dbr->select( 'externallinks', array( 'el_to' ),
+ array( 'el_from' => $id ), __METHOD__ );
+ $links = array();
+ foreach ( $res as $row ) {
+ $links[] = $row->el_to;
+ }
+ return $links;
+ }
+
+ /**
+ * Backend function for confirmEdit() and confirmEditAPI()
+ * @return bool false if the CAPTCHA is rejected, true otherwise
+ */
+ private function doConfirmEdit( $editPage, $newtext, $section, $merged = false ) {
+ if ( $this->shouldCheck( $editPage, $newtext, $section, $merged ) ) {
+ if ( $this->passCaptcha() ) {
+ return true;
+ } else {
+ return false;
+ }
+ } else {
+ wfDebug( "ConfirmEdit: no need to show captcha.\n" );
+ return true;
+ }
+ }
+
+ /**
+ * The main callback run on edit attempts.
+ * @param EditPage $editPage
+ * @param string $newtext
+ * @param string $section
+ * @param bool $merged
+ * @return bool true to continue saving, false to abort and show a captcha form
+ */
+ function confirmEdit( $editPage, $newtext, $section, $merged = false ) {
+ if ( defined( 'MW_API' ) ) {
+ # API mode
+ # The CAPTCHA was already checked and approved
+ return true;
+ }
+ if ( !$this->doConfirmEdit( $editPage, $newtext, $section, $merged ) ) {
+ $editPage->showEditForm( array( &$this, 'editCallback' ) );
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * A more efficient edit filter callback based on the text after section merging
+ * @param EditPage $editPage
+ * @param string $newtext
+ */
+ function confirmEditMerged( $editPage, $newtext ) {
+ return $this->confirmEdit( $editPage, $newtext, false, true );
+ }
+
+
+ function confirmEditAPI( $editPage, $newtext, &$resultArr ) {
+ if ( !$this->doConfirmEdit( $editPage, $newtext, false, false ) ) {
+ $this->addCaptchaAPI( $resultArr );
+ return false;
+ }
+ return true;
+ }
+
+ /**
+ * Hook for user creation form submissions.
+ * @param User $u
+ * @param string $message
+ * @return bool true to continue, false to abort user creation
+ */
+ function confirmUserCreate( $u, &$message ) {
+ global $wgCaptchaTriggers, $wgUser;
+ if ( $wgCaptchaTriggers['createaccount'] ) {
+ if ( $wgUser->isAllowed( 'skipcaptcha' ) ) {
+ wfDebug( "ConfirmEdit: user group allows skipping captcha on account creation\n" );
+ return true;
+ }
+ if ( $this->isIPWhitelisted() )
+ return true;
+
+ $this->trigger = "new account '" . $u->getName() . "'";
+ if ( !$this->passCaptcha() ) {
+ $message = wfMsg( 'captcha-createaccount-fail' );
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Hook for user login form submissions.
+ * @param User $u
+ * @param string $message
+ * @return bool true to continue, false to abort user creation
+ */
+ function confirmUserLogin( $u, $pass, &$retval ) {
+ if ( $this->isBadLoginTriggered() ) {
+ if ( $this->isIPWhitelisted() )
+ return true;
+
+ $this->trigger = "post-badlogin login '" . $u->getName() . "'";
+ if ( !$this->passCaptcha() ) {
+ // Emulate a bad-password return to confuse the shit out of attackers
+ $retval = LoginForm::WRONG_PASS;
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Check the captcha on Special:EmailUser
+ * @param $from MailAddress
+ * @param $to MailAddress
+ * @param $subject String
+ * @param $text String
+ * @param $error String reference
+ * @return Bool true to continue saving, false to abort and show a captcha form
+ */
+ function confirmEmailUser( $from, $to, $subject, $text, &$error ) {
+ global $wgCaptchaTriggers, $wgUser;
+ if ( $wgCaptchaTriggers['sendemail'] ) {
+ if ( $wgUser->isAllowed( 'skipcaptcha' ) ) {
+ wfDebug( "ConfirmEdit: user group allows skipping captcha on email sending\n" );
+ return true;
+ }
+ if ( $this->isIPWhitelisted() )
+ return true;
+
+ if ( defined( 'MW_API' ) ) {
+ # API mode
+ # Asking for captchas in the API is really silly
+ $error = wfMsg( 'captcha-disabledinapi' );
+ return false;
+ }
+ $this->trigger = "{$wgUser->getName()} sending email";
+ if ( !$this->passCaptcha() ) {
+ $error = wfMsg( 'captcha-sendemail-fail' );
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Given a required captcha run, test form input for correct
+ * input on the open session.
+ * @return bool if passed, false if failed or new session
+ */
+ function passCaptcha() {
+ $info = $this->retrieveCaptcha();
+ if ( $info ) {
+ global $wgRequest;
+ if ( $this->keyMatch( $wgRequest->getVal( 'wpCaptchaWord' ), $info ) ) {
+ $this->log( "passed" );
+ $this->clearCaptcha( $info );
+ return true;
+ } else {
+ $this->clearCaptcha( $info );
+ $this->log( "bad form input" );
+ return false;
+ }
+ } else {
+ $this->log( "new captcha session" );
+ return false;
+ }
+ }
+
+ /**
+ * Log the status and any triggering info for debugging or statistics
+ * @param string $message
+ */
+ function log( $message ) {
+ wfDebugLog( 'captcha', 'ConfirmEdit: ' . $message . '; ' . $this->trigger );
+ }
+
+ /**
+ * Generate a captcha session ID and save the info in PHP's session storage.
+ * (Requires the user to have cookies enabled to get through the captcha.)
+ *
+ * A random ID is used so legit users can make edits in multiple tabs or
+ * windows without being unnecessarily hobbled by a serial order requirement.
+ * Pass the returned id value into the edit form as wpCaptchaId.
+ *
+ * @param array $info data to store
+ * @return string captcha ID key
+ */
+ function storeCaptcha( $info ) {
+ if ( !isset( $info['index'] ) ) {
+ // Assign random index if we're not udpating
+ $info['index'] = strval( mt_rand() );
+ }
+ CaptchaStore::get()->store( $info['index'], $info );
+ return $info['index'];
+ }
+
+ /**
+ * Fetch this session's captcha info.
+ * @return mixed array of info, or false if missing
+ */
+ function retrieveCaptcha() {
+ global $wgRequest;
+ $index = $wgRequest->getVal( 'wpCaptchaId' );
+ return CaptchaStore::get()->retrieve( $index );
+ }
+
+ /**
+ * Clear out existing captcha info from the session, to ensure
+ * it can't be reused.
+ */
+ function clearCaptcha( $info ) {
+ CaptchaStore::get()->clear( $info['index'] );
+ }
+
+ /**
+ * Retrieve the current version of the page or section being edited...
+ * @param EditPage $editPage
+ * @param string $section
+ * @return string
+ * @access private
+ */
+ function loadText( $editPage, $section ) {
+ $rev = Revision::newFromTitle( $editPage->mTitle );
+ if ( is_null( $rev ) ) {
+ return "";
+ } else {
+ $text = $rev->getText();
+ if ( $section != '' ) {
+ global $wgParser;
+ return $wgParser->getSection( $text, $section );
+ } else {
+ return $text;
+ }
+ }
+ }
+
+ /**
+ * Extract a list of all recognized HTTP links in the text.
+ * @param string $text
+ * @return array of strings
+ */
+ function findLinks( &$editpage, $text ) {
+ global $wgParser, $wgUser;
+
+ $options = new ParserOptions();
+ $text = $wgParser->preSaveTransform( $text, $editpage->mTitle, $wgUser, $options );
+ $out = $wgParser->parse( $text, $editpage->mTitle, $options );
+
+ return array_keys( $out->getExternalLinks() );
+ }
+
+ /**
+ * Show a page explaining what this wacky thing is.
+ */
+ function showHelp() {
+ global $wgOut;
+ $wgOut->setPageTitle( wfMsg( 'captchahelp-title' ) );
+ $wgOut->addWikiText( wfMsg( 'captchahelp-text' ) );
+ if ( CaptchaStore::get()->cookiesNeeded() ) {
+ $wgOut->addWikiText( wfMsg( 'captchahelp-cookies-needed' ) );
+ }
+ }
+}
diff --git a/extensions/ConfirmEdit/CaptchaStore.php b/extensions/ConfirmEdit/CaptchaStore.php
new file mode 100644
index 00000000..7b29e448
--- /dev/null
+++ b/extensions/ConfirmEdit/CaptchaStore.php
@@ -0,0 +1,109 @@
+<?php
+
+abstract class CaptchaStore {
+ /**
+ * Store the correct answer for a given captcha
+ * @param $index String
+ * @param $info String the captcha result
+ */
+ public abstract function store( $index, $info );
+
+ /**
+ * Retrieve the answer for a given captcha
+ * @param $index String
+ * @return String
+ */
+ public abstract function retrieve( $index );
+
+ /**
+ * Delete a result once the captcha has been used, so it cannot be reused
+ * @param $index
+ */
+ public abstract function clear( $index );
+
+ /**
+ * Whether this type of CaptchaStore needs cookies
+ * @return Bool
+ */
+ public abstract function cookiesNeeded();
+
+ /**
+ * The singleton instance
+ * @var CaptchaStore
+ */
+ private static $instance;
+
+ /**
+ * Get somewhere to store captcha data that will persist between requests
+ *
+ * @throws MWException
+ * @return CaptchaStore
+ */
+ public final static function get() {
+ if( !self::$instance instanceof self ){
+ global $wgCaptchaStorageClass;
+ if( in_array( 'CaptchaStore', class_parents( $wgCaptchaStorageClass ) ) ) {
+ self::$instance = new $wgCaptchaStorageClass;
+ } else {
+ throw new MWException( "Invalid CaptchaStore class $wgCaptchaStorageClass" );
+ }
+ }
+ return self::$instance;
+ }
+
+ /**
+ * Protected constructor: no creating instances except through the factory method above
+ */
+ protected function __construct(){}
+}
+
+class CaptchaSessionStore extends CaptchaStore {
+
+ function store( $index, $info ) {
+ $_SESSION['captcha' . $info['index']] = $info;
+ }
+
+ function retrieve( $index ) {
+ if ( isset( $_SESSION['captcha' . $index] ) ) {
+ return $_SESSION['captcha' . $index];
+ } else {
+ return false;
+ }
+ }
+
+ function clear( $index ) {
+ unset( $_SESSION['captcha' . $index] );
+ }
+
+ function cookiesNeeded() {
+ return true;
+ }
+}
+
+class CaptchaCacheStore extends CaptchaStore {
+
+ function store( $index, $info ) {
+ global $wgMemc, $wgCaptchaSessionExpiration;
+ $wgMemc->set( wfMemcKey( 'captcha', $index ), $info,
+ $wgCaptchaSessionExpiration );
+ }
+
+ function retrieve( $index ) {
+ global $wgMemc;
+ $info = $wgMemc->get( wfMemcKey( 'captcha', $index ) );
+ if ( $info ) {
+ return $info;
+ } else {
+ return false;
+ }
+ }
+
+ function clear( $index ) {
+ global $wgMemc;
+ $wgMemc->delete( wfMemcKey( 'captcha', $index ) );
+ }
+
+ function cookiesNeeded() {
+ return false;
+ }
+}
diff --git a/extensions/ConfirmEdit/ConfirmEdit.alias.php b/extensions/ConfirmEdit/ConfirmEdit.alias.php
new file mode 100644
index 00000000..debbfeaa
--- /dev/null
+++ b/extensions/ConfirmEdit/ConfirmEdit.alias.php
@@ -0,0 +1,84 @@
+<?php
+/**
+ * Aliases for special pages
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$specialPageAliases = array();
+
+/** English (English) */
+$specialPageAliases['en'] = array(
+ 'Captcha' => array( 'Captcha' ),
+);
+
+/** Arabic (العربية) */
+$specialPageAliases['ar'] = array(
+ 'Captcha' => array( 'كابتشا' ),
+);
+
+/** Egyptian Spoken Arabic (مصرى) */
+$specialPageAliases['arz'] = array(
+ 'Captcha' => array( 'كابتشا' ),
+);
+
+/** Esperanto (Esperanto) */
+$specialPageAliases['eo'] = array(
+ 'Captcha' => array( 'KontraÅ­spamilo' ),
+);
+
+/** Estonian (Eesti) */
+$specialPageAliases['et'] = array(
+ 'Captcha' => array( 'Robotilõks' ),
+);
+
+/** Persian (Ùارسی) */
+$specialPageAliases['fa'] = array(
+ 'Captcha' => array( 'کپچا' ),
+);
+
+/** Finnish (Suomi) */
+$specialPageAliases['fi'] = array(
+ 'Captcha' => array( 'Ihmiskäyttäjävarmistus' ),
+);
+
+/** Japanese (日本語) */
+$specialPageAliases['ja'] = array(
+ 'Captcha' => array( 'キャプãƒãƒ£' ),
+);
+
+/** Colognian (Ripoarisch) */
+$specialPageAliases['ksh'] = array(
+ 'Captcha' => array( 'Kaptscha' ),
+);
+
+/** Macedonian (МакедонÑки) */
+$specialPageAliases['mk'] = array(
+ 'Captcha' => array( 'Капча' ),
+);
+
+/** Malayalam (മലയാളം) */
+$specialPageAliases['ml'] = array(
+ 'Captcha' => array( 'à´•àµà´¯à´¾à´ªàµà´š' ),
+);
+
+/** Serbian Cyrillic ekavian (‪СрпÑки (ћирилица)‬) */
+$specialPageAliases['sr-ec'] = array(
+ 'Captcha' => array( 'Потврдни_код' ),
+);
+
+/** Simplified Chinese (‪中文(简体)‬) */
+$specialPageAliases['zh-hans'] = array(
+ 'Captcha' => array( '验è¯ç ' ),
+);
+
+/** Traditional Chinese (‪中文(ç¹é«”)‬) */
+$specialPageAliases['zh-hant'] = array(
+ 'Captcha' => array( '驗證碼' ),
+);
+
+/**
+ * For backwards compatibility with MediaWiki 1.15 and earlier.
+ */
+$aliases =& $specialPageAliases; \ No newline at end of file
diff --git a/extensions/ConfirmEdit/ConfirmEdit.i18n.php b/extensions/ConfirmEdit/ConfirmEdit.i18n.php
new file mode 100644
index 00000000..ada84a43
--- /dev/null
+++ b/extensions/ConfirmEdit/ConfirmEdit.i18n.php
@@ -0,0 +1,3636 @@
+<?php
+/**
+ * Internationalisation file for the ConfirmEdit extension.
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$messages = array();
+
+$messages['en'] = array(
+ 'captcha-edit' => 'To edit this page, please solve the simple sum below and enter the answer in the box ([[Special:Captcha/help|more info]]):',
+ 'captcha-desc' => 'Provides CAPTCHA techniques to protect against spam and password-guessing',
+ 'captcha-addurl' => 'Your edit includes new external links.
+To help protect against automated spam, please solve the simple sum below and enter the answer in the box ([[Special:Captcha/help|more info]]):',
+ 'captcha-badlogin' => 'To help protect against automated password cracking, please solve the simple sum below and enter the answer in the box ([[Special:Captcha/help|more info]]):',
+ 'captcha-createaccount' => 'To help protect against automated account creation, please solve the simple sum below and enter the answer in the box ([[Special:Captcha/help|more info]]):',
+ 'captcha-createaccount-fail' => "Incorrect or missing confirmation code.",
+ 'captcha-create' => 'To create the page, please solve the simple sum below and enter the answer in the box ([[Special:Captcha/help|more info]]):',
+ 'captcha-sendemail' => 'To help protect against automated spamming, please solve the simple sum below and enter the answer in the box ([[Special:Captcha/help|more info]]):',
+ 'captcha-sendemail-fail' => 'Incorrect or missing confirmation code.',
+ 'captcha-disabledinapi' => 'This action requires a captcha, so it cannot be performed through the API.',
+ 'captchahelp-title' => 'CAPTCHA help',
+ 'captchahelp-cookies-needed' => "You will need to have cookies enabled in your browser for this to work.",
+ 'captchahelp-text' => "Web sites that accept postings from the public, like this wiki, are often abused by spammers who use automated tools to post their links to many sites.
+While these spam links can be removed, they are a significant nuisance.
+
+Sometimes, especially when adding new web links to a page, the wiki may show you an image of colored or distorted text and ask you to type the words shown.
+Since this is a task that's hard to automate, it will allow most real humans to make their posts while stopping most spammers and other robotic attackers.
+
+Unfortunately this may inconvenience users with limited vision or using text-based or speech-based browsers.
+At the moment we do not have an audio alternative available.
+Please contact the [[{{MediaWiki:Grouppage-sysop}}|site administrators]] for assistance if this is unexpectedly preventing you from making legitimate posts.
+
+Hit the 'back' button in your browser to return to the page editor.",
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Syntax is as follows:
+# * Everything from a "#" character to the end of the line is a comment
+# * Every non-blank line is a regex fragment which will only match hosts inside URLs
+ #</pre> <!-- leave this line exactly as it is -->',
+
+ 'right-skipcaptcha' => 'Perform CAPTCHA-triggering actions without having to go through the CAPTCHA',
+);
+
+/** Message documentation (Message documentation)
+ * @author Aotake
+ * @author Hamilton Abreu
+ * @author MF-Warburg
+ * @author Meithal
+ * @author Meno25
+ * @author Purodha
+ * @author Siebrand
+ * @author The Evil IP address
+ * @author Toliño
+ */
+$messages['qqq'] = array(
+ 'captcha-edit' => 'This message will be shown when editing if the wiki requires solving a captcha for editing.
+See also
+*{{msg-mw|Questycaptcha-edit}}
+*{{msg-mw|Fancycaptcha-edit}}',
+ 'captcha-desc' => '{{desc}}',
+ 'captcha-addurl' => 'The explanation of CAPTCHA shown to users trying to add new external links.
+See also
+*{{msg-mw|Questycaptcha-addurl}}
+*{{msg-mw|Fancycaptcha-addurl}}',
+ 'captcha-badlogin' => 'The explanation of CAPTCHA shown to users failed three times to type in correct password.
+See also
+*{{msg-mw|Questycaptcha-badlogin}}
+*{{msg-mw|Fancycaptcha-badlogin}}',
+ 'captcha-createaccount' => 'The explanation of CAPTCHA shown to users trying to create a new account.
+See also
+*{{msg-mw|Questycaptcha-createaccount}}
+*{{msg-mw|Fancycaptcha-createaccount}}',
+ 'captcha-create' => 'This message will be shown when creating a page if the wiki requires solving a captcha for that.
+See also
+*{{msg-mw|Questycaptcha-create}}
+*{{msg-mw|Fancycaptcha-create}}',
+ 'captchahelp-title' => 'The page title of [[Special:Captcha/help]]',
+ 'captchahelp-text' => 'This is the help text shown on [[Special:Captcha/help]].',
+ 'captcha-addurl-whitelist' => "See also: [[MediaWiki:Spam-blacklist]] and [[MediaWiki:Spam-whitelist]]. 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.",
+ 'right-skipcaptcha' => '{{doc-right}}',
+);
+
+/** Afrikaans (Afrikaans)
+ * @author BrokenArrow
+ * @author Naudefj
+ */
+$messages['af'] = array(
+ 'captcha-edit' => 'U wysiging bevat nuwe webskakels. Neem kennis dat blote reklame van u werf, produk of besigheid as vandalisme beskou kan word. As beskerming teen outomatiese gemorsbydraes, sal u die woorde wat onder verskyn in die prentjie moet intik: <br />([[Special:Captcha/help|Wat is hierdie?]])',
+ 'captcha-desc' => 'Eenvoudige implementasie van captcha',
+ 'captcha-addurl' => 'U wysiging bevat nuwe webskakels.
+As beskerming teen outomatiese gemorsbydraes, sal u die woorde wat onder verskyn in die prentjie moet intik ([[Special:Captcha/help|Wat is hierdie?]]):',
+ 'captcha-badlogin' => 'Los asseblief die onderstaande eenvoudige som op en voer die antwoord in die blokkie in ter beskerming teen die outomatiese kraak van wagwoorde ([[Special:Captcha/help|meer inligting]]):',
+ 'captcha-createaccount' => "As 'n beskerming teen geoutomatiseerde gemors, tik asseblief die woorde wat in die beeld verskyn in om 'n rekening te skep: <br />([[Special:Captcha/help|Wat is hierdie?]])",
+ 'captcha-createaccount-fail' => 'Verkeerde of geen bevestigingkode.',
+ 'captcha-create' => 'U wysiging bevat nuwe webskakels. Neem kennis dat blote reklame van u werf, produk of besigheid as vandalisme beskou kan word. As beskerming teen outomatiese gemorsbydraes, sal u die woorde wat onder verskyn in die prentjie moet intik: <br />([[Special:Captcha/help|Wat is hierdie?]])',
+ 'captchahelp-title' => 'Captcha-hulp',
+ 'captchahelp-cookies-needed' => 'U moet koekies in u webblaaier aanskakel hê om dit te laat werk.',
+ 'captchahelp-text' => "Webwerwe wat bydraes van die publiek aanvaar (soos hierdie wiki) word soms lastig geval deur kwaaddoeners met programme wat outomaties skakels in 'n klomp werwe plaas. Alhoewel hierdie gemors verwyder kan word, is dit lastig.
+
+In party gevalle, veral as u skakels by 'n blad voeg, sal die wiki dalk 'n beeld met verwronge teks vertoon en vra dat u die woorde daarin intik. Omdat hierdie taak moeilik geoutomatiseer word, laat dit meeste regte mense toe om bydraes te maak terwyl dit meeste kwaaddoeners stop.
+
+Hierdie kan ongelukkig lastig wees vir mense met beperkte sig, of diegene wat teks- of spraakgebaseerde blaaiers gebruik. Tans is daar nog nie 'n klankalternatief beskikbaar nie. Kontak asseblief die [[{{MediaWiki:Grouppage-sysop}}|werfadministrateurs]] vir hulp as hierdie u onverwags belemmer om legitieme bydraes te maak.
+
+Gebruik die \"terug\"-knoppie van u blaaier om na die vorige blad terug te keer.",
+ 'right-skipcaptcha' => 'Captcha-handelinge uitvoer sonder om die captcha te hoef oplos',
+);
+
+/** Gheg Albanian (Gegë)
+ * @author Mdupont
+ */
+$messages['aln'] = array(
+ 'captcha-edit' => 'Për të redaktuar këtë faqe, ju lutem zgjidh shuma e thjeshtë më poshtë dhe të hyjë në përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'captcha-desc' => 'captcha Simple zbatimin e',
+ 'captcha-addurl' => 'Your redakto përfshin të jashtme lidhje të reja. Për të ndihmuar në mbrojtjen kundër spam automatizuar, ju lutem zgjidh shuma e thjeshtë më poshtë dhe të hyjë në përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'captcha-badlogin' => 'Për të ndihmuar në mbrojtjen kundër fjalëkalimin automatizuar plasaritje, ju lutem zgjidh shuma e thjeshtë më poshtë dhe të hyjë në përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'captcha-createaccount' => 'Për të ndihmuar në mbrojtjen kundër krijimit llogari e automatizuar, ju lutem zgjidh shuma e thjeshtë më poshtë dhe të hyjë në përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'captcha-createaccount-fail' => 'Pasakta ose të humbur Kodi i shifruar.',
+ 'captcha-create' => 'Për të krijuar një faqe, ju lutem zgjidh shuma e thjeshtë më poshtë dhe të hyjë në përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'captcha-sendemail' => 'Për të ndihmuar në mbrojtjen kundër spamming automatizuar, ju lutem zgjidh shuma e thjeshtë më poshtë dhe të hyjë në përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'captcha-sendemail-fail' => 'Pasakta ose të humbur Kodi i shifruar.',
+ 'captcha-disabledinapi' => 'Ky veprim kërkon një captcha, kështu që nuk mund të kryhet përmes API.',
+ 'captchahelp-title' => 'Captcha ndihmë',
+ 'captchahelp-cookies-needed' => 'Ju duhet të keni cookies të aktivizuara në shfletuesin tuaj për këtë për të punuar.',
+ 'captchahelp-text' => "Web faqet që pranojnë postings nga publiku, si ky wiki, shpesh keqtrajtohen nga spammers që përdorin mjete të automatizuar të postoni lidhjet e tyre me shumë vende. Përderisa këto lidhje spam mund të hiqen, ata janë një ngatërresë të rëndësishme. Ndonjëherë, sidomos kur duke shtuar të reja lidhje interneti në një faqe, wiki mund të tregojë se një imazh i ose deformuar tekst me ngjyra dhe kërkoni ju që të shtypni fjalë të treguar. Ngaqë kjo është një detyrë që është e vështirë për të automatizuar, ajo do të lejojë të vërtetë njerëzit më të për të bërë detyrat e tyre, ndërsa ndaluar më spammers dhe robotik sulmuesit të tjera. Për fat të keq kjo bezdi përdoruesit mund me vizion të kufizuar ose duke përdorur me bazë ose shprehjeje me bazë shfletuesit tekst. Për momentin ne nuk kemi një alternativë audio në dispozicion. Ju lutemi të kontaktoni [[{{MediaWiki:Grouppage-sysop}} site administratorët) |]] për ndihmë, nëse kjo është e papritur në parandalimin e ju prej bërë postimet legjitime. Hit 'butonin mbrapa në shfletuesin tuaj për t'u kthyer në faqen e redaktorit.",
+ 'captcha-addurl-whitelist' => '# <!-- leave this line exactly as it is --><pre>
+# Sintaksa është si më poshtë:
+# * Çdo gjë nga një "karakter #" në fund të linjës është një koment
+# * Çdo linjës jo të zbrazët është një fragment regex i cili vetëm do të përputhen me pret brenda URL
+ # </pre><!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'captcha Kryerja e veprimeve të shkaktuar pa pasur nevojë të shkojë nëpër captcha',
+);
+
+/** Amharic (አማርኛ)
+ * @author Codex Sinaiticus
+ */
+$messages['am'] = array(
+ 'captcha-edit' => 'ይህንን ድርሰት ለማረáˆá£ እባክዎን የሚቀጥለá‹áŠ• ቀላሠየመደመር ጥያቄ መáˆáˆµ ሳጥን á‹áˆµáŒ¥ ይጻá‰á¢ ([[Special:Captcha/help|ተጨማሪ መረጃ]])',
+ 'captcha-createaccount' => 'á‹«áˆá‰°áˆáˆˆáŒˆ የመኪናáŠá‰µ አባáˆáŠá‰µ ለመከላከáˆá¥ አባሠለመሆን በዚህ áˆáˆµáˆ የታዩት እንáŒáˆŠá‹áŠ› ቃላት ወይሠá‰áŒ¥áˆ­ መáˆáˆµ በትክክሠመጻá áŒá‹´á‰³ áŠá‹á¢ ([[Special:Captcha/help|ይህ áˆáŠ•á‹µáŠá‹?]]):',
+ 'captchahelp-title' => "የ'ካá•á‰»' መáŒáˆˆáŒ«",
+ 'captchahelp-text' => "አንዳንዴ 'ስá“áˆ' የተባሉት á‹«áˆá‰°áˆáˆˆáŒ‰ መáˆáŠ¥áŠ­á‰¶á‰½ የሚላኩ ሰዎች በመኪናáŠá‰µ አማካይáŠá‰µ በብዙ ድረገጽ ላይ የማይገባ ማስታወቂያ በመáˆáŒ á ላይ እየተገኘ áŠá‹á¢ ይህን የማይገባ መያያዣ ማስወገድ ቢቻለሠአስቸጋሪ ናቸá‹á¢
+
+ስለዚህ በመጀመርያ አባáˆáŠá‰µ ሲገቡ ወይሠአንዳንዴ የá‹áŒ­ ድረገጽ አድራሻ ሲጨመር የá•áˆ®áŒáˆ«áˆ™ ሶáትዌር 'ካá•á‰»' የእንáŒáˆŠá‹áŠ›áŠ• ቃላት ወይሠየá‰áŒ¥áˆ­ መáˆáˆµ እንዲዳáŒáˆ™ ለáˆá‰°áŠ“ ይጠይቃáˆá¢ ይህ አደራረጠለመኪናáŠá‰µ ቀላሠተáŒá‰£áˆ­ ሰላማይሆንᥠእá‹áŠá‰°áŠ› ሰዠከሆአለመáˆáŒ á ያስችለዋሠáŠáŒˆáˆ­ áŒáŠ• መኪናáŠá‰µ ከሆአዕንቅá‹á‰µ ይሆንበታáˆá¢
+
+ይህ ዘዴ ከመáˆáŒ á ያለáŒá‰£á‰¥ ቢከለክáˆá‹Ž እባክዎ መጋቢን ይጠይá‰á¢
+
+አáˆáŠ• ( <= 'back' ) በbrowserá‹Ž ላይ ይጫኑá¢",
+);
+
+/** Aragonese (Aragonés)
+ * @author Juanpabl
+ */
+$messages['an'] = array(
+ 'captcha-edit' => 'Ta editar ista pachina, faiga por favor a suma simpla que apareixe contino y escriba a solución en a caixa ([[Special:Captcha/help|más información]]):',
+ 'captcha-desc' => 'Implementación simpla de captcha',
+ 'captcha-addurl' => "A suya edición encluye vinclos esternos. Ta aduyar-nos en a proteción contra o spam automatizato, por favor, faiga a suma simpla que s'amuestra contino y escriba a respuesta en a caixa ([[Special:Captcha/help|más información]]):",
+ 'captcha-badlogin' => 'Ta aduyar en a protección contra a obtención automatizata de parolas de paso, por favor faiga a suma simpla que amaneixe contino y escriba a respuesta en a caixa ([[Special:Captcha/help|más información]]):',
+ 'captcha-createaccount' => "Ta aduyar-nos en a proteción contra a creyación automatica de cuentas, por favor faiga a suma simpla que s'amuestra contino y escriba a respuesta en a caixa ([[Special:Captcha/help|más información]]):",
+ 'captcha-createaccount-fail' => 'No ha escrito o codigo de confirmación, u iste ye incorreuto.',
+ 'captcha-create' => "Ta creyar a pachina, por favor faiga a suma simpla que s'amuestra contino y escriba a respuesta en a caixa ([[Special:Captcha/help|más información]]):",
+ 'captchahelp-title' => 'Aduya sobre o "captcha"',
+ 'captchahelp-cookies-needed' => 'Ta que o sistema funcione le cal tener as cookies activatas en o navegador.',
+ 'captchahelp-text' => "Os sitios web que acceptan mensaches d'o publico, como iste wiki, son a ormino obchecto d'abusos por spammers que fan servir ferramientas automatizatas ta encluyir-ie vinclos ta a-saber-los sitios. Encara que istos vinclos se pueden sacar, son un gran estorbo.
+
+Bellas vegadas, especialment quan se mire de adhibir nuevos vinclos a una pachina, o wiki talment le amuestre una imachen con testo en color y distorsionato, y le pregunte quáls son as parolas amostratas. Como ista ye una fayena de mal automatizar, premitirá a os usuarios humanos fer as suyas edicions de vez que aturará a muitos spammers y atacants automaticos.
+
+Manimenos, isto puede estar un barrache ta usuarios con visión limitata u que faigan ser navegadors basatos en texto u en a voz. Por l'inte no tenemos garra alternativa de audio. Por favor, contacte con os [[{{MediaWiki:Grouppage-sysop}}|administradors]] d'o wiki ta demandar aduya si isto le ye privando de fer as suyas edicions lechitimas.
+
+Punche o botón 'enta zaga' d'o suyo navegador ta tornar ta l'editor de pachinas.",
+ 'captcha-addurl-whitelist' => " #<!-- leave this line exactly as it is --> <pre>
+# A sintaxi ye asinas:
+# * Tot o que bi ha dende un carácter \"#\" dica a fin d'a linia ye un comentario
+# * Qualsiquier linia con testo un troz d'expresión regular (regex) que sólo concordará con os hosts aintro d'URLs
+ #</pre> <!-- leave this line exactly as it is -->",
+ 'right-skipcaptcha' => 'Fer accions que requieren o captcha sin fer servir o captcha',
+);
+
+/** Arabic (العربية)
+ * @author Aiman titi
+ * @author Alnokta
+ * @author Loya
+ * @author Meno25
+ * @author Mido
+ * @author OsamaK
+ * @author Samer
+ */
+$messages['ar'] = array(
+ 'captcha-edit' => 'لتعديل هذه الصÙحة، من Ùضلك قم بحل المسألة الرياضية البسيطة بالأسÙÙ„ وأدخل الإجابة ÙÙŠ الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'captcha-desc' => 'يوÙر تقنيات كابتشا للحماية ضد السبام وتخمين كلمات السر',
+ 'captcha-addurl' => 'تعديلك يحتوي على وصلات خارجية جديدة.
+للمساعدة ÙÙŠ الحماية من السبام الأوتوماتيكي، من Ùضلك حل عملية الجمع بالأسÙÙ„ وأدخل الإجابة ÙÙŠ الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'captcha-badlogin' => 'للمساعدة ÙÙŠ الحماية ضد سرقة كلمات السر، من Ùضلك حل عملية الجمع البسيطة بالأسÙÙ„ وأدخل الحل ÙÙŠ الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'captcha-createaccount' => 'كحماية ضد إنشاء الحسابات الأوتوماتيكي، من Ùضلك حل العملية الحسابية بالأسÙÙ„ وأدخل الإجابة ÙÙŠ الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'captcha-createaccount-fail' => 'كود تأكيد غير صحيح أو Ù…Ùقود.',
+ 'captcha-create' => 'لإنشاء هذه الصÙحة، من Ùضلك حل المسألة الرياضية التالية وأدخل
+الإجابة ÙÙŠ الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'captcha-sendemail' => 'للمساعدة ÙÙŠ الحماية ضد السخام الأتوماتيكي، رجاءً Ø­ÙÙ„ مسألة الجمع البسيطة أدناه وأدخل الإجابة ÙÙŠ المربع ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'captcha-sendemail-fail' => 'كود تأكيد غير صحيح أو Ù…Ùقود',
+ 'captcha-disabledinapi' => 'هذا الإجراء يتطلب تحقيق , لذلك لايمكن أعتمادها من API.',
+ 'captchahelp-title' => 'مساعدة الكابتشا',
+ 'captchahelp-cookies-needed' => 'ستحتاج إلى أن تكون الكوكيز Ù…Ùعلة ÙÙŠ متصÙحك لكي يعمل هذا',
+ 'captchahelp-text' => "عادة ما يتم ÙÙŠ المواقع التي تقبل الردود والرسائل من العامة، كهذا الويكي، تخريب الموقع عن طريق الأشخاص الذين يستعملون آليات معينة لإرسال وصلاتهم لمواقع متعددة بصورة آلية.
+وعلى الرغم من أن هذا يمكن إزالته ولكنه مزعج للغاية.
+
+ÙÙŠ بعض الأحيان، خصوصا عند إضاÙØ© وصلات لصÙحة، ربما يعرض الويكي صورة ملونة أو مشوشة ويطلب منك إدخال كلمات موجودة بالصورة أو يعرض عليك مسألة رياضية عشوائية ويطلب منك حلها.
+ولأن هذه المهمة صعبة للغاية لأن يقوم بها برنامج، سيسمح هذا للأشخاص الآدميين بإضاÙØ© تحريراتهم بينما ستوق٠البرامج التخريبية والهجمات الآلية الأخرى.
+
+للأس٠سيكون هذا صعبا بالنسبة لمستخدمي المتصÙحات المحدودة أو التي تعتمد على النصوص Ùقط أو قراءة النصوص.
+ÙÙŠ الوقت الحالي لا يوجد لدينا بديل سمعي.
+من Ùضلك راسل [[{{MediaWiki:Grouppage-sysop}}|إداريي الموقع]] للمساعدة إذا كان هذا الأمر يمنعك من التعديل ووضع وصلات قانونية.
+
+إذا كنت تحرر صÙحة معينة: اضغط زر 'العودة' ÙÙŠ متصÙحك للعودة إلى التحرير.",
+ 'captcha-addurl-whitelist' => ' #<!-- اترك هذا السطر تماما كما هو --> <pre>
+# الصيغة كما يلي:
+# * كل شيء من علامة "#" لنهاية السطر تعليق
+# * كل سطر غير Ùارغ هو جزء تعبير نمطي والذي سو٠يطابق Ùقط المضيÙين داخل العناوين
+ #</pre> <!-- اترك هذا السطر تماما كما هو -->',
+ 'right-skipcaptcha' => 'أداء Ø£Ùعال تستوجب تنÙيذ كابتشا دون المرور بها',
+);
+
+/** Egyptian Spoken Arabic (مصرى)
+ * @author Ghaly
+ * @author Meno25
+ * @author Ramsis II
+ */
+$messages['arz'] = array(
+ 'captcha-edit' => 'علشان تعدل ÙÙ‰ الصÙحة دى، لو سمحت تحل المسالة الرياضية البسيطة اللى تحت Ùˆ اكتب الاجاية ÙÙ‰ الصندوء ([[Special:Captcha/help|معلومات اكتر]]):',
+ 'captcha-desc' => 'تطبيق بسيط لـ كابتشا',
+ 'captcha-addurl' => 'التعديل بتاعك Ùيه لينكات خارجية جديدة.
+علشان تساعد ÙÙ‰ الحماية من السبام الاوتوماتيكى،لو سمحت تحل المسالة الرياضية البسيطة اللى تحت Ùˆ اكتب الاجابة ÙÙ‰ الصندوء([[Special:Captcha/help|معلومات اكتر]]):',
+ 'captcha-badlogin' => 'علشان تساعد ÙÙ‰ الحماية من السرقة الاوتوماتيكية للباسورد، لو سمجت تحل المسألة الرياضية البسيطة اللى تحت Ùˆ تكتب الاجابة جوه الصندوء([[Special:Captcha/help|معلومات اكتر]]):',
+ 'captcha-createaccount' => 'علشان تساعد ÙÙ‰ الحماية من Ùتح الحساب الاوتوماتيكى،لو سمحت تحل المسألة الرياضية البسيطة اللى تحت Ùˆ تكتب الاجابة جوه الصندوء ([[Special:Captcha/help|معلومات اكتر]]):',
+ 'captcha-createaccount-fail' => 'كود التأكيد مش صحيح أو ضايع.',
+ 'captcha-create' => 'علشان تبتدى الصÙحة دى، لو سمحت تحل السألة الرياضية البسيطة اللى تحت Ùˆ تكتب الاجابة جوه الصندوء ([[Special:Captcha/help|معلومات اكتر]]):',
+ 'captchahelp-title' => 'مساعدة الكابتشا',
+ 'captchahelp-cookies-needed' => 'لازم تكون الكوكيز بتاعتك متÙعلة ÙÙ‰ البراوزر علشان دا يشتغل.',
+ 'captchahelp-text' => "مواقع الويب اللى بتقبل رسايل من عامة الناس،زى الويكى دا،غالبا ما بيتعرضو لسوء استعمال عن طريق السبامرز اللى بيستخدمو اليات اوتوماتيكية علشان يبعتو لينكات لكذا موقع.
+على الرغم من ان السبام لينك ممكن يتشال، بس هى بتسبب ازعاج كبير .
+
+ساعات،و خصوصا لما بتضي٠ويب لينك جديدة لاى صÙحة،الويكى ممكن يعرض لك صورة لنص متشوه او متلون Ùˆ يطلب منك انك تكتب الكلمات المعروضة.
+Ùˆ علشان دى عملية من الصعب يقوم بها برنامج، Ùهى بتسمح لمعظم البنى ادمين انهم يبعتو مشاركتهم Ùˆ بتمنع معظم السبامرز Ùˆ المهاجمين الاوتوماتيكيين التانيين.
+
+للاسÙ،دا ممكن يسبب ازعاج لليوزرو اللى نظرهم ضعي٠او اللى بيستعملو براوز معتمد على الكلام او النصوص.
+ÙÙ‰ الوقت الحالى احنا ما عندناش اى بديل سمعى متواÙر.
+لو سمحت تتصل [[{{MediaWiki:Grouppage-sysop}}|بلاداريين]] بتوع الموقع علشان يساعدوك لو دا منعك بشكل مش متوقع من انك تشارك بشكل قانونى.
+
+دوس على زرار 'back'اللى ÙÙ‰ البراوزر بتاعك علشان ترجع لتحرير الصÙحة.",
+ 'captcha-addurl-whitelist' => ' #<!-- سيب السطر دا زى ما هو كدا بالظبط--> <pre>
+# الصيغة كدا:
+# * كل حاجة من علامة "#" لحد نهاية السطر هى تعليق
+# * كل سطر مش Ùاضى هو جزء ريجيكس Ùˆ اللى Ø­ يطابق بس المضيÙين جوه URLs
+ #</pre> <!-- سيب السطر دا زى ما هو كدا بالظبط -->',
+ 'right-skipcaptcha' => 'عمل حاجات بتنشط الكابتشا من غير ما تضطر تمر بالكابتشا',
+);
+
+/** Assamese (অসমীয়া)
+ * @author Chaipau
+ * @author Rajuonline
+ */
+$messages['as'] = array(
+ 'captcha-edit' => 'à¦à¦‡ পৃষà§à¦ à¦¾à¦Ÿà§‹ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰিবলৈ তলৰ সহজ অংকটো কৰি উতà§à¦¤à§°à¦¤à§‹ বাকছৰ ভিতৰত লিখক
+([[Special:Captcha/help|অধিক তথà§à¦¯]]):',
+ 'captcha-addurl' => 'আপোনাৰ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦¤ বাহিৰলৈ সংযোগ আছে।
+সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à§€à¦¯à¦¼ সà§à¦ªà¦¾à¦®à§° পৰা বাচিবলৈ, তলৰ সহজ অংকটো কৰি উতà§à¦¤à§°à¦¤à§‹ বাকছৰ ভিতৰত লিখক ([[Special:Captcha/help|অধিক তথà§à¦¯]]):',
+ 'captcha-badlogin' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à§€à¦¯à¦¼à¦­à¦¾à¦¬à§‡ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ ভঙাৰ পৰা বাচিবলৈ, তলৰ সহজ অংকটো কৰি উতà§à¦¤à§°à¦¤à§‹ বাকছৰ ভিতৰত লিখক
+([[Special:Captcha/help|অধিক তথà§à¦¯]]):',
+ 'captcha-createaccount' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à§€à¦¯à¦¼ হোৱা ভাবে সদসà§à¦¯à¦­à§à¦•à§à¦¤à¦¿ ৰোধ কৰিবলৈ, তলৰ সহজ অংকটো কৰি উতà§à¦¤à§°à¦¤à§‹ বাকছৰ ভিতৰত লিখক
+([[Special:Captcha/help|অধিক তথà§à¦¯]]):',
+ 'captcha-createaccount-fail' => 'ভà§à¦² বা খালী নিশà§à¦¬à¦¿à¦¤à¦•à§°à¦£ শবà§à¦¦',
+ 'captcha-create' => 'à¦à¦‡ পৃষà§à¦ à¦¾à¦Ÿà§‹ তৈয়াৰ কৰিবলৈ, তলৰ সহজ অংকটো কৰি উতà§à¦¤à§°à¦¤à§‹ বাকছৰ ভিতৰত লিখক
+([[Special:Captcha/help|অধিক তথà§à¦¯]]):',
+ 'captchahelp-cookies-needed' => 'à¦à¦‡ কামতো সমà§à¦ªà¦¨à§à¦¨ কৰিবলৈ, আপোনাৰ বà§à§°à¦¾à¦‰à¦œà¦¾à§°à¦¤ কà§à¦•à§€ সকà§à§°à§€à¦¯à¦¼ থাকিব লাগিব',
+ 'captchahelp-text' => "যিবোৰ ৱেবচাইটত জনতাই পাঠà§à¦¯ ভৰাব পাৰে, যেনে à¦à¦‡ ৱিকি, সেইবোৰক পà§à§°à¦¾à¦¯à¦¼à§‡ দà§à¦¸à§à¦•à§à§°à¦¿à¦¤à¦¿à¦•à¦¾à§°à¦¿ সà§à¦ªà§‡à¦®à¦¾à§°à¦¬à§‹à§°à§‡ সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à§€à¦¯à¦¼ আহিলাৰ দà§à¦¬à¦¾à§°à¦¾ তেওলোকৰ চাইটলৈ সংযোগ ভৰাই আকà§à§°à¦®à¦¨ কৰে।
+যদিও তেনে সà§à¦ªà¦¾à¦® সংযোগ গà§à¦šà¦¾à¦¬ পাৰি, পিছে à¦à¦¯à¦¼à¦¾ à¦à¦• ডাঙৰ উপদà§à§°à§±à¥¤
+
+কেতিয়াবা, সাধাৰণতে যেতিয়া কোনো পৃষà§à¦ à¦¾à¦²à§ˆ নতà§à¦¨ সংযোগ সৃষà§à¦Ÿà¦¿ কৰা হয়, তেতিয়া ৱিকিয়ে à¦à¦Ÿà¦¾ ৰঙীন বা বিকৃত চবি দেখà§à§±à¦¾à¦‡ তাত থকা শবà§à¦¦à¦–িনি আপোনাক টাইপ কৰিব কব পাৰে।
+যিহেতৠà¦à¦‡ কামতো সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à§€à¦¯à¦¼ ভাবে কৰা পà§à§°à¦¾à¦¯à¦¼à§‡ অসমà§à¦­à¦¬, ই বেছিভাগ পà§à§°à¦•à§ƒà¦¤ বà§à¦¯à¦•à§à¦¤à¦¿à¦• পাঠà§à¦¯ ভৰাব দিয়াৰ লগতে সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à§€à¦¯à¦¼ আহিলাৰ দà§à¦¬à¦¾à§°à¦¾ পাঠà§à¦¯ ভৰোৱা দà§à¦¸à§à¦•à§à§°à¦¿à¦¤à¦¿à¦•à¦¾à§°à¦¿ সকলক ৰোধ কৰিব পাৰে।
+
+দà§à§°à§à¦­à¦¾à¦—à§à¦¯à¦•à§à§°à¦®à§‡, সিমিত দৃষà§à¦Ÿà¦¿à¦¶à¦•à§à¦¤à¦¿ থকা বà§à¦¯à¦•à§à¦¤à¦¿à¦¸à¦•à¦²à§‡, বা পাঠà§à¦¯-আধাৰিত অথবা ধà§à¦¬à¦¨à¦¿-আধাৰিত বà§à§°à¦¾à¦‰à¦œà¦¾à§° বà§à¦¯à§±à¦¹à¦¾à§° কৰা বà§à¦¯à¦•à§à¦¤à¦¿à¦¸à¦•à¦²à§‡ ইয়াৰ বাবে আসà§à¦¬à¦¿à¦§à¦¾ পাব পাৰে.
+à¦à¦‡ সময়ত ইয়াৰ কোনো ধà§à¦¬à¦¨à¦¿-আধাৰিত বিকলà§à¦ª আমাৰ হাতত নাই।
+
+ইয়াৰ বাবে যদি আপà§à¦¨à¦¿ যà§à¦•à§à¦¤à¦¿à¦¸à¦®à§à¦®à¦¤ পঠà§à¦¯ ভৰাব অসà§à¦¬à¦¿à¦§à¦¾ পাইছে, তেনেহলে [[{{MediaWiki:Grouppage-sysop}}|চাইট পà§à§°à§±à¦¨à§à¦§à¦•à§°]] লগত যোগাযোগ কৰক।
+
+পৃষà§à¦ à¦¾ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦²à§ˆ ঘà§à§°à¦¿ যাবলৈ আপোনাৰ বà§à§°à¦¾à¦‰à¦œà¦¾à§°à§° 'back' বà§à¦Ÿà¦¾à¦®à¦¤ টিপা মাৰক।",
+);
+
+/** Asturian (Asturianu)
+ * @author Esbardu
+ * @author Xuacu
+ */
+$messages['ast'] = array(
+ 'captcha-edit' => "Pa editar esta páxina, por favor resuelvi la suma simple d'embaxo y pon la rempuesta nel caxellu ([[Special:Captcha/help|más información]]):",
+ 'captcha-desc' => "Ufre téuniques de CAPTCHA pa protexese escontra'l spam y descubrimientu de contraseñes",
+ 'captcha-addurl' => "La to edición inclúi nuevos enllaces esternos. P'aidar a protexer escontra'l spam automatizáu, por favor resuelvi la suma simple d'embaxo y pon la rempuesta nel caxellu ([[Special:Captcha/help|más información]]):",
+ 'captcha-badlogin' => "P'aidar a protexer escontra'l descifráu automáticu de claves, por favor resuelvi la suma simple d'embaxo y pon la rempuesta nel caxellu ([[Special:Captcha/help|más información]]):",
+ 'captcha-createaccount' => "P'aidar a protexer escontra la creación automática de cuentes, por favor resuelvi la suma simple d'embaxo y pon la rempuesta nel caxellu ([[Special:Captcha/help|más información]]):",
+ 'captcha-createaccount-fail' => 'Códigu de confirmación incorreutu o ausente.',
+ 'captcha-create' => "Pa crear la páxina, por favor resuelvi la suma simple d'embaxo y pon la rempuesta nel caxellu ([[Special:Captcha/help|más información]]):",
+ 'captcha-sendemail' => "P'aidar a protexese escontra la puxarra automatizada, por favor resuelvi la suma cenciella d'embaxo y pon la rempuesta na caxella ([[Special:Captcha/help|más información]]):",
+ 'captcha-sendemail-fail' => 'Códigu de confirmación incorreutu o ausente.',
+ 'captcha-disabledinapi' => 'Esta aición requier un captcha y, poro, nun pue facese pel API',
+ 'captchahelp-title' => 'Aida tocante al captcha',
+ 'captchahelp-cookies-needed' => "Has tener les cookies habilitaes nel to navegador pa que'l sistema funcione.",
+ 'captchahelp-text' => "Los sitios web qu'aceuten mensaxes del publicu, como esta wiki, davezu son oxetu d'abusu por spammers qu'usen programes pa incluyir los sos enllaces automáticamente.
+Mientres qu'estos enllaces de puxarra puen desaniciase, son enforma cafiantes.
+
+Dacuando, especialmente al amestar nuevos enllaces web nuna páxina, la wiki pue amosate una imaxe de testu coloreáu o distorsionáu y va pidite qu'escribas les pallabres que s'amuesen.
+Yá qu'esti ye un llabor difícil d'automatizar, permitirá a les más de les persones reales unviar los sos testos, al empar que llenden los más de los spammers y otros atacantes automáticos.
+
+Por desgracia, esto pue ser un inconveniente pa los usuarios con visión llimitada o qu'usen navegadores de testu o voz. De momentu nun tenemos disponible una alternativa de soníu. Por favor, ponte'n contautu colos [[{{MediaWiki:Grouppage-sysop}}|alministradores del sitiu]] pa pidir aida si esto te torgare facer ediciones llexítimes.
+
+Calca nel botón 'atrás' del to navegador pa volver a la páxina d'edición.",
+ 'captcha-addurl-whitelist' => ' #<!-- dexa esta llinia exautamente como ta --> <pre>
+# La sintaxis ye como sigue:
+# * Too dende\'l carauter "#" hasta la fin de la llinia ye un comentariu
+# * Toa llinia non vacia ye un fragmentu regex que namái buscará hosts n\'URLs
+ #</pre> <!-- dexa esta llinia exautamente como ta -->',
+ 'right-skipcaptcha' => 'Facer les acciones que requieren captcha ensin tener que lu introducir',
+);
+
+/** Bashkir (БашҡортÑа)
+ * @author Assele
+ */
+$messages['ba'] = array(
+ 'captcha-edit' => 'Был битте мөхәррирләү Ó©Ñөн, зинһар, Ñбай мәÑьәләне ÑиÑегеҙ һәм Ñуабын түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'captcha-desc' => 'Спамдан һәм паролде Ñратыуҙан һаҡлау Ó©Ñөн CAPTCHA Ñ‹Ñулдары менән тәьмин итә',
+ 'captcha-addurl' => 'Һеҙҙең текÑтығыҙҙа Ñңы тышҡы һылтанмалар бар.
+Ðвтоматик Ñпамдан һаҡлау маҡÑатында, зинһар, Ñбай мәÑьәләне ÑиÑегеҙ һәм Ñуабын түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'captcha-badlogin' => 'Паролде автоматик ватыуҙан һаҡлау маҡÑатында, зинһар, Ñбай мәÑьәләне ÑиÑегеҙ һәм Ñуабын түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'captcha-createaccount' => 'Иҫәп Ñҙмаларын автоматик булдырыуҙан һаҡлау маҡÑатында, зинһар, Ñбай мәÑьәләне ÑиÑегеҙ һәм Ñуабын түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'captcha-createaccount-fail' => 'Раҫлау коды керетелмәгән йәки дөрөҫ түгел.',
+ 'captcha-create' => 'Яңы бит булдырыу Ó©Ñөн, зинһар, Ñбай мәÑьәләне ÑиÑегеҙ һәм Ñуабын түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'captcha-sendemail' => 'Ðвтоматик Ñпамдан һаҡлау маҡÑатында, зинһар, Ñбай мәÑьәләне ÑиÑегеҙ һәм Ñуабын түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'captcha-sendemail-fail' => 'Раҫлау коды керетелмәгән йәки дөрөҫ түгел.',
+ 'captcha-disabledinapi' => 'Был ғәмәл captcha тикшереүен талап итә, шуға күрә API аша башҡарыла алмай.',
+ 'captchahelp-title' => 'Captcha тураһында белешмә',
+ 'captchahelp-cookies-needed' => 'Бының Ñшләүе Ó©Ñөн һеҙҙең браузерығыҙҙа куки булыуы кәрәк.',
+ 'captchahelp-text' => 'Үҙенә ÑÑтәлек өҫтәргә һәм ÑÑтәлеген мөхәррирләргә мөмкинлек биргән веб-Ñайттар, шул иҫәптән был вики, йыш ҡына Ñайттарға автоматик һылтанмалар Ó©Ò«Ñ‚Ó™Ò¯ Ó©Ñөн программалар ҡулланған ÑпамлауÑыларҙың маҡÑатына әйләнә.
+
+Ҡайһы бер ғәмәлдәрҙе башҡарған ваҡытта — мәҫәлән, биткә һылтанма өҫтәгән ваҡытта — һеҙ төҫлө йәки боҙолған текÑтлы махÑÑƒÑ Ñ€Ó™Ñем күрә алаһығыҙ, һеҙгә ошо текÑÑ‚Ñ‚Ñ‹ керетергә тәҡдим ителәÑәк.
+Программалар Ó©Ñөн боҙолған текÑÑ‚Ñ‚Ñ‹ уҡыу ауыр мәÑьәлә булып торғанға күрә, Ñпамлау һәм вандал программаларының күпÑелеге быны хәл итә алмаÑÑаҡ, Ó™ кешеләр еңел башҡараÑаҡ.
+
+ҮкенеÑкә ҡаршы, бындай һаҡлыҡ Ñаралары күҙҙәре наÑар күреүÑе кешеләргә йәки текÑтлы йәки уҡыуÑÑ‹ браузерҙар ҡулланған кешеләргә уңайһыҙлыҡ килтереүе мөмкин.
+Әлеге ваҡытта беҙҙең бындай тикшереүҙе тауыш менән алыштырыу мөмкинлеге юҡ.
+Зинһар, әгәр бындай тикшереү һеҙгә Ñайтта намыҫ менән Ñшләргә ҡамаÑаулаһа, [[{{MediaWiki:Grouppage-sysop}}|хәкимдәргә]] мөрәжәғәт итегеҙ.
+
+Мөхәррирләүгә кире ҡайтыу Ó©Ñөн, браузерығыҙҙа кире ҡайтыу төймәһенә баҫығыҙ.',
+ 'captcha-addurl-whitelist' => '#<!-- leave this line exactly as it is --> <pre>
+# СинтакÑиÑÑ‚Ñ‹Ò£ таÑуирламаһы:
+# * "#" хәрефенән алып бөтә юл юлдың аҙағына тиклем аңлатма тип һанала
+# * Һәр буш булмаған юл URL адреÑындағы үҙәк иÑеменең регулÑÑ€ аңлатмаһы тип һанала
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Captcha тикшереүен талап иткән ғәмәлдәрҙе тикшереүһеҙ башҡарыу',
+);
+
+/** Southern Balochi (بلوچی مکرانی)
+ * @author Mostafadaneshvar
+ */
+$messages['bcc'] = array(
+ 'captcha-edit' => 'به اصلاح کتن ای صÙحه،لطÙا ای جمع ساده حل کنیت Ùˆ جوابء جهلا وارد کنیت ([[Special:Captcha/help|گیشتر اطلاعات]]):',
+ 'captcha-desc' => ' کاربرد ساده captcha',
+ 'captcha-addurl' => 'شمی اصلاح شامل نوکین درای لینک انت.
+په Ú©Ù…Ú© په حمایت Ú†Ù‡ اتوماتیکی اسپم، لطÙا جمع ساده حل کینت Ùˆ جواب جهلء وارد کنیت ([[Special:Captcha/help|گیشتر اطلاعات]]):',
+ 'captcha-badlogin' => 'په Ú©Ù…Ú© په حمایت Ú†Ù‡ اتوماتیکی کلمه رمز پروشوک، لطÙا ای جمع ساده حل کنیت. جوابء جهلء وارد کنید ([[Special:Captcha/help|گیشتر اطلاعات]]):',
+ 'captcha-createaccount' => 'په Ú©Ù…Ú© په حمایت Ú†Ù‡ اتوماتیکی حساب شرکتن، لطÙا ای جهلی ساده جمع حل کنیت Ùˆ جواب بنویسیت ([[Special:Captcha/help|گیشتر اطلاعات]]):',
+ 'captcha-createaccount-fail' => 'اشتباه یا گارین کد تایید',
+ 'captcha-create' => 'په شرکتن صÙحه، لطÙا ای جمع ساده حل کنیت Ùˆ جواب ادان بنویسیت ([[Special:Captcha/help|گیشتر اطلاعات]]):',
+ 'captchahelp-title' => 'Ú©Ù…Ú© Captcha',
+ 'captchahelp-cookies-needed' => 'شمی نیاز بیت Ú©Ù‡ ته وتی بروزر Ú©ÙˆÚ©ÛŒ Ùعال کنیت په ای کارء',
+ 'captchahelp-text' => "وب سایتانی Ú©Ù‡ Ú†Ù‡ عام نوشته قبول کننت، په داب ای ویکی، اغلب Ú†Ù‡ طر٠اسپمرآن Ú©Ù‡ Ú†Ù‡ وسایل اتوماتیکی په دیم دهگ لینکانش په بازگین سایت سوء استÙاده Ú©Ù†Ú¯ بیت.
+اگر که ای لینک اسپمی دور کنگ بینت،بله باز اذیت کننت.
+
+لهتی وهد به خصوصی وهدی Ú©Ù‡ نوکین لینک وبی په یک صÙحه اضاÙÙ‡ بیت،ویکی شاید یک عکس رنگی یا هورت هورین متنی شما ار پیش داریت Ùˆ Ú†Ù‡ شما لوٹیت پیش داشتگین کلمات وارد کنیت.
+چه آ جاهی که ای کاری سختنت په اتوماتیک کتن،آی واقعی ترین انسان اجازت دنت تا وتی نوشتانک دیم دهنت چه آ دیم گیشترین اسپمر و هکرآنء متوق٠کنت.
+
+متاسÙانه Ø´ÛŒ شاید کاربرانء ناراحت کنت ته یک دید محدود یا استÙاده کتن Ú†Ù‡ بروزرآن متنی Ùˆ Ú¯Ù¾ÛŒ.
+هنو ما را تواری جایگزین نیست.
+لطÙا مدیران سایت تماس گریت په Ú©Ù…Ú© اگر Ø´ÛŒ یک ناخواسته این جلوگیری Ú†Ù‡ دیم دهگ قانونی انت.
+دکمه 'back' ته وتی بروزر بجنیت دان په صÙحه اصلاح تریت.",
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Syntax is as follows:
+# * Everything from a "#" character to the end of the line is a comment
+# * Every non-blank line is a regex fragment which will only match hosts inside URLs
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'اجرای کاران کپچا بی شی که چه طریق کپچا بروت',
+);
+
+/** Bikol Central (Bikol Central)
+ * @author Filipinayzd
+ */
+$messages['bcl'] = array(
+ 'captcha-create' => 'Tangarig maggibo an pahina, paki simbagan an simpleng suma sa ibaba asin ikaag an simbag sa laog kan kahon ([[Special:Captcha/help|more info]]):',
+ 'captchahelp-title' => 'Tabang sa Captcha',
+);
+
+/** Belarusian (БеларуÑкаÑ)
+ * @author Yury Tarasievich
+ * @author Хомелка
+ */
+$messages['be'] = array(
+ 'captcha-edit' => 'Ð”Ð»Ñ Ð·Ð¼ÑÐ½ÐµÐ½Ð½Ñ Ð³Ñтай Ñтаронцы, калі лаÑка, вырашыце проÑтую Ñуму ніжÑй Ñ– ўвÑдзіце адказ у поле ([[Special:Captcha/help|more info]]):',
+ 'captcha-desc' => 'ВырашÑнне проÑтай каптчы',
+ 'captcha-create' => 'Каб Ñтварыць Ñтаронку, развÑжыце проÑтае ўраўненне, што ніжÑй, Ñ– ўпішыце адказ у адпаведнае поле ([[Special:Captcha/help|больш падрабÑзна]]):',
+ 'captchahelp-title' => 'Даведка Капчы',
+ 'captchahelp-cookies-needed' => 'Каб гÑÑ‚Ð°Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð°Ñць працавала, належыць дазволіць у браўзеры апрацоўку квіткоў ("кукі").',
+ 'captcha-addurl-whitelist' => ' #<!-- радок абавÑзкова пакінуць Ñк Ñ‘Ñць (у Ñ‚.л., з прагалам у пачатку) --> <pre>
+# СінтакÑÑ–Ñ Ð½Ð°Ñтупны:
+# * УÑÑ‘ ад знаку "#" да канца радка гÑта каментар
+# * Кожны непуÑÑ‚Ñ‹ радок гÑта чаÑтковы Ñ€ÑгулÑрны выраз, Ñкі параўноўваецца з адраÑамі Ñервераў унутры URL-ÑÑž
+ #</pre> <!-- радок абавÑзкова пакінуць Ñк Ñ‘Ñць (у Ñ‚.л., з прагалам у пачатку) -->',
+);
+
+/** Belarusian (TaraÅ¡kievica orthography) (‪БеларуÑÐºÐ°Ñ (тарашкевіца)‬)
+ * @author EugeneZelenko
+ * @author Jim-by
+ * @author Red Winged Duck
+ * @author Wizardist
+ */
+$messages['be-tarask'] = array(
+ 'captcha-edit' => 'Каб Ñ€Ñдагаваць гÑтую Ñтаронку, калі лаÑка, знайдзіце проÑтую Ñуму Ñ– ўвÑдзіце адказ у поле ([[Special:Captcha/help|падрабÑзнаÑьці]]):',
+ 'captcha-desc' => 'Дадае мÑтад CAPTCHA Ð´Ð»Ñ Ð°Ð±Ð°Ñ€Ð¾Ð½Ñ‹ Ñупраць Ñпаму Ñ– падбору паролÑÑž',
+ 'captcha-addurl' => 'Вашае Ñ€Ñдагаваньне ўтрымлівае Ð½Ð¾Ð²Ñ‹Ñ Ð²Ð¾Ð½ÐºÐ°Ð²Ñ‹Ñ ÑпаÑылкі.
+У мÑтах абароны ад аўтаматычнага Ñпаму, калі лаÑка, знайдзіце проÑтую Ñуму Ñ– ўвÑдзіце адказ у поле ([[Special:Captcha/help|падрабÑзнаÑьці]]):',
+ 'captcha-badlogin' => 'У мÑтах абароны ад аўтаматычнага ўзлому паролÑÑž, калі лаÑка, знайдзіце проÑтую Ñуму Ñ– ўвÑдзіце адказ у поле ([[Special:Captcha/help|Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ]]):',
+ 'captcha-createaccount' => 'У мÑтах абароны ад аўтаматычнага ÑтварÑÐ½ÑŒÐ½Ñ Ñ€Ð°Ñ…ÑƒÐ½ÐºÐ°Ñž, калі лаÑка, знайдзіце проÑтую Ñуму Ñ– ўвÑдзіце адказ у поле ([[Special:Captcha/help|Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ]]):',
+ 'captcha-createaccount-fail' => 'Код Ð¿Ð°Ñ†ÑŒÐ²ÐµÑ€Ð´Ð¶Ð°Ð½ÑŒÐ½Ñ â€” нÑÑлушны альбо адÑутнічае.',
+ 'captcha-create' => 'Каб Ñтварыць Ñтаронку, калі лаÑка, знайдзіце проÑтую Ñуму Ñ– ўвÑдзіце адказ у поле ([[Special:Captcha/help|падрабÑзнаÑьці]]):',
+ 'captcha-sendemail' => 'У мÑтах абароны Ñупраць аўтаматычнага Ñпаму, калі лаÑка, знайдзіце проÑтую Ñуму Ñ– ўвÑдзіце вынік у полі ніжÑй ([[Special:Captcha/help|Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ]]):',
+ 'captcha-sendemail-fail' => 'Код Ð¿Ð°Ñ†ÑŒÐ²ÐµÑ€Ð´Ð¶Ð°Ð½ÑŒÐ½Ñ â€” нÑÑлушны альбо адÑутнічае.',
+ 'captcha-disabledinapi' => 'ГÑтае дзеÑньне патрабуе праверкі captcha, Ñ– з-за гÑтага Ð½Ñ Ð¼Ð¾Ð¶Ð° быць выкананае праз API.',
+ 'captchahelp-title' => 'Дапамога ў captcha',
+ 'captchahelp-cookies-needed' => 'Вам Ñ‚Ñ€Ñба дазволіць файлы-кукі Ñž Вашым браўзÑры, каб гÑÑ‚Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ Ð¿Ñ€Ð°Ñ†Ð°Ð²Ð°Ð»Ð°.',
+ 'captchahelp-text' => 'Ð’Ñб-Ñайты, ÑÐºÑ–Ñ Ð¿Ñ€Ñ‹Ð¼Ð°ÑŽÑ†ÑŒ запіÑÑ‹ ад грамадзкаÑьці, Ð¿Ð°Ð´Ð¾Ð±Ð½Ñ‹Ñ Ð½Ð° {{GRAMMAR:вінавальны|{{SITENAME}}}}, чаÑта атакуюцца ÑпамÑрамі, ÑÐºÑ–Ñ ÑžÐ¶Ñ‹Ð²Ð°ÑŽÑ†ÑŒ Ð°ÑžÑ‚Ð°Ð¼Ð°Ñ‚Ñ‹Ð·Ð°Ð²Ð°Ð½Ñ‹Ñ Ñ–Ð½ÑтрумÑнты, каб зьмÑшчаць Ñвае ÑпаÑылкі на шмат Ñайтаў.
+І Ñ…Ð°Ñ†Ñ Ð³ÑÑ‚Ñ‹Ñ ÑпаÑылкі могуць быць прыбраныÑ, Ñны выклікаюць Ð·Ð½Ð°Ñ‡Ð½Ñ‹Ñ Ð½ÑзручнаÑьці.
+
+ЧаÑам, аÑабліва калі Ð’Ñ‹ дадаеце Ð½Ð¾Ð²Ñ‹Ñ Ð²Ð¾Ð½ÐºÐ°Ð²Ñ‹Ñ ÑпаÑылкі на Ñтаронку, {{SITENAME}} можа паказаць Вам выÑву з калÑровым ці Ñкажоным Ñ‚ÑкÑтам Ñ– папраÑіць увеÑьці гÑÑ‚Ñ‹ Ñ‚ÑкÑÑ‚.
+Праз тое, што гÑтае заданьне цÑжка аўтаматызаваць, Ñно дазволіць большаÑьці Ñ€Ñальных людзей рабіць запіÑÑ‹, але Ñпыніць большаÑьць ÑпамÑраў Ñ– іншых аўтаматызаваных робатаў.
+
+Ðа жаль, гÑта можа выклікаць нÑзручнаÑьці Ð´Ð»Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°Ñž з абмежаваньнÑмі па зроку Ñ– Ð´Ð»Ñ Ñ‚Ñ‹Ñ…, хто ўжывае Ñ‚ÑкÑÑ‚Ð°Ð²Ñ‹Ñ Ñ†Ñ– Ð¼Ð¾ÑžÐ½Ñ‹Ñ Ð±Ñ€Ð°ÑžÐ·Ñры.
+Ðа гÑÑ‚Ñ‹ момант мы Ð½Ñ Ð¼Ð°ÐµÐ¼ аўдыё-альтÑрнатывы гÑтай праверцы.
+Калі лаÑка, зьвÑжыцеÑÑ Ð· [[{{MediaWiki:Grouppage-sysop}}|адмініÑтратарамі]], калі гÑÑ‚Ð°Ñ Ð¿Ñ€Ð°Ð²ÐµÑ€ÐºÐ° перашкаджае Вам рабіць ÑÐ»ÑƒÑˆÐ½Ñ‹Ñ Ð·Ð°Ð¿Ñ–ÑÑ‹.
+
+ÐаціÑьніце кнопку «назад» у Вашым браўзÑры, каб вÑрнуцца да Ñ€ÑÐ´Ð°Ð³Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ñтаронкі.',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# СынтакÑÑ–Ñ Ð½Ð°Ñтупны:
+# * УÑÑ‘, што пачынаецца з «#» Ñ– да канца радку, зьÑўлÑецца камÑнтарам
+# * УÑе непуÑÑ‚Ñ‹Ñ Ñ€Ð°Ð´ÐºÑ– зьÑўлÑюцца чаÑткамі Ñ€ÑгулÑрнага выразу, Ñкі будзе выкарыÑтоўвацца толькі
+# Ñž дачыненьні да назваў ÑÑрвÑраў у вонкавых ÑпаÑылках
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'ДоÑтуп да магчымаÑьцÑÑž абароненых пытаньнÑмі Ñž выÑве ці разьвÑзаньнем прыкладаў, без ÑƒÐ¶Ñ‹Ð²Ð°Ð½ÑŒÐ½Ñ Ð¿Ñ€Ð°Ð²ÐµÑ€Ð°Ðº',
+);
+
+/** Bulgarian (БългарÑки)
+ * @author DCLXVI
+ * @author Spiritia
+ */
+$messages['bg'] = array(
+ 'captcha-edit' => 'Редактирането на тази ÑÑ‚Ð°Ñ‚Ð¸Ñ Ð¸Ð·Ð¸Ñква потребителите да въведат отговора на задачата по-долу в текÑтовата ÐºÑƒÑ‚Ð¸Ñ ([[Special:Captcha/help|повече информациÑ]]):',
+ 'captcha-desc' => 'ПредоÑÑ‚Ð°Ð²Ñ Ð¾Ð¿Ñ€Ð¾Ñтена captcha Ñ‚ÐµÑ…Ð½Ð¾Ð»Ð¾Ð³Ð¸Ñ ÐºÐ°Ñ‚Ð¾ защита Ñрещу Ñпам и налучкване на пароли',
+ 'captcha-addurl' => 'Тази Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ñъдържа нови външни препратки. Като защита Ñрещу автоматизиран Ñпам ÑиÑтемата изиÑква потребителите да въведат отговора на задачата по-долу в текÑтовата ÐºÑƒÑ‚Ð¸Ñ ([[Special:Captcha/help|повече информациÑ]]):',
+ 'captcha-badlogin' => 'Като защита Ñрещу автоматизирано компрометиране на пароли, ÑиÑтемата изиÑква потребителите да въведат отговора на задачата по-долу в текÑтовата ÐºÑƒÑ‚Ð¸Ñ ([[Special:Captcha/help|повече информациÑ]]):',
+ 'captcha-createaccount' => 'Като защита от автоматизирани региÑтрации, ÑиÑтемата изиÑква при региÑтриране на потребителÑка Ñметка потребителите да въведат отговора на задачата по-долу в текÑтовата ÐºÑƒÑ‚Ð¸Ñ ([[Special:Captcha/help|повече информациÑ]]):',
+ 'captcha-createaccount-fail' => 'Грешен или липÑващ код за потвърждение.',
+ 'captcha-create' => 'За Ñъздаване на Ñтраницата е необходимо да Ñе реши задачата и да Ñе въведе отговорът в кутиÑта ([[Special:Captcha/help|повече информациÑ]]):',
+ 'captcha-sendemail-fail' => 'Грешен или липÑващ код за потвърждение.',
+ 'captchahelp-title' => 'Помощ за Ñaptcha',
+ 'captchahelp-cookies-needed' => 'За да работи това, необходимо е биÑквитките на Ð²Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€ да Ñа включени.',
+ 'captchahelp-text' => "Уеб Ñайтовете, които позволÑват Ñвободно да Ñе редактира и Ð´Ð¾Ð±Ð°Ð²Ñ Ð½Ð¾Ð²Ð¾ Ñъдържание (като това уики), чеÑто Ñа обект на атаки от Ñтрана на Ñпамъри, които използват ÑредÑтва за автоматизирано редактиране за публикуване на препратки към много Ñайтове. Въпреки че тези препратки могат да бъдат премахнати, те Ñа оÑобено неприÑтни за потребителите.
+
+ПонÑкога, оÑобено когато Ñе добавÑÑ‚ нови препратки към Ñтраниците, е възможно уикито да покаже картинка Ñ Ñ‚ÐµÐºÑÑ‚, който Ñ‚Ñ€Ñбва да бъде въведен в поÑоченото поле. Тъй като това е Ñтъпка, коÑто е трудно да бъде преÑкочена при автоматизирано редактиране, Ñ‚Ñ Ð·Ð°Ñ‚Ñ€ÑƒÐ´Ð½Ñва и Ñпира повечето Ñпамъри и роботи, но допуÑка иÑтинÑките потребителите да правÑÑ‚ редакции.
+
+За Ñъжаление тази Ñтъпка може да затрудни незрÑщи потребители или потребители, които използват текÑтови или речеви браузъри. За момента ÑиÑтемата не разполага Ñ Ð²ÑŠÐ·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑ‚ за глаÑова алтернатива. Обърнете Ñе за помощ към [[{{MediaWiki:Grouppage-sysop}}|админиÑтратор на Ñайта]], ако това изиÑкване на ÑиÑтемата ви затруднÑва да допринаÑÑте легитимно.
+
+ÐатиÑнете бутона 'back' на Ð²Ð°ÑˆÐ¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€, за да Ñе върнете към редактора на Ñтраници.",
+);
+
+/** Bengali (বাংলা)
+ * @author Bellayet
+ * @author Prometheus.pyrphoros
+ * @author Usarker
+ * @author Zaheen
+ */
+$messages['bn'] = array(
+ 'captcha-edit' => 'à¦à¦‡ নিবনà§à¦§à¦Ÿà¦¿ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে দয়া করে নিচের সহজ যোগটি সমাধান করà§à¦¨ à¦à¦¬à¦‚ ফলাফলটি বাকà§à¦¸à¦Ÿà¦¿à¦¤à§‡ পà§à¦°à¦¬à§‡à¦¶ করান ([[Special:Captcha/help|আরও তথà§à¦¯]]):',
+ 'captcha-desc' => 'সরল কà§à¦¯à¦¾à¦ªà¦šà¦¾ বাসà§à¦¤à¦¬à¦¾à¦¯à¦¼à¦¨',
+ 'captcha-addurl' => 'আপনার সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦¯à¦¼ নতà§à¦¨ বহিঃসংযোগ বিদà§à¦¯à¦®à¦¾à¦¨à¥¤ সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼ সà§à¦ªà§à¦¯à¦¾à¦®à§‡à¦° বিরà§à¦¦à§à¦§à§‡ সà§à¦°à¦•à§à¦·à¦¾à¦° খাতিরে অনà§à¦—à§à¦°à¦¹ নিচের যোগটি সমাহদান করà§à¦¨ à¦à¦¬à¦‚ উতà§à¦¤à¦°à¦Ÿà¦¿ বাকà§à¦¸à§‡ পà§à¦°à¦¬à§‡à¦¶ করান ([[Special:Captcha/help|আরও তথà§à¦¯]]):',
+ 'captcha-badlogin' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼ শবà§à¦¦à¦šà¦¾à¦¬à¦¿ কà§à¦°â€Œà§à¦¯à¦¾à¦•à¦¿à¦‚-à¦à¦° বিরà§à¦¦à§à¦§à§‡ সà§à¦°à¦•à§à¦·à¦¾à¦° খাতিরে অনà§à¦—à§à¦°à¦¹ করে নিচের যোগটি সমাধান করà§à¦¨ à¦à¦¬à¦‚ উতà§à¦¤à¦°à¦Ÿà¦¿ বাকà§à¦¸à§‡ পà§à¦°à¦¬à§‡à¦¶ করান ([[Special:Captcha/help|আরও তথà§à¦¯]]):',
+ 'captcha-createaccount' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼ অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ সৃষà§à¦Ÿà¦¿ রোধ করার খাতিরে অনà§à¦—à§à¦°à¦¹ করে নিচের যোগটি সমাধান করà§à¦¨ à¦à¦¬à¦‚ উতà§à¦¤à¦°à¦Ÿà¦¿ বাকà§à¦¸à§‡ পà§à¦°à¦¬à§‡à¦¶ করান ([[Special:Captcha/help|আরও তথà§à¦¯]]):',
+ 'captcha-createaccount-fail' => 'ভà§à¦² অথবা হারিয়ে যাওয়া নিশà§à¦šà¦¿à¦¤à¦•à¦°à¦£ সংকেত',
+ 'captcha-create' => 'পাতাটি সৃষà§à¦Ÿà¦¿ করতে চাইলে অনà§à¦—à§à¦°à¦¹ করে নিচের যোগটি সমাধান করà§à¦¨ à¦à¦¬à¦‚ উতà§à¦¤à¦°à¦Ÿà¦¿ বাকà§à¦¸à§‡ পà§à¦°à¦¬à§‡à¦¶ করান ([[Special:Captcha/help|আরও তথà§à¦¯]]):',
+ 'captcha-sendemail' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼ সà§à¦ªà§à¦¯à¦¾à¦® থেকে রকà§à¦·à¦¾ পেতে, অনà§à¦—à§à¦°à¦¹ করে সাধারন অংকটি সমাধান করà§à¦¨ à¦à¦¬à¦‚ উতà§à¦¤à¦°à¦ªà§à¦°à¦¦à¦¾à¦¨ বকà§à¦¸à§‡ লিখà§à¦¨ ([[Special:Captcha/help|আরও তথà§à¦¯]]):',
+ 'captcha-sendemail-fail' => 'নিশà§à¦šà¦¿à¦¤à¦•à¦°à¦£ কোডটি ভà§à¦² বা দেয়া হয়নি',
+ 'captcha-disabledinapi' => 'à¦à¦‡ কাজটি করার জনà§à¦¯ à¦à¦•à¦Ÿà¦¿ কà§à¦¯à¦¾à¦ªà¦šà¦¾ পà§à¦°à¦¯à¦¼à§‹à¦œà¦¨, তাই à¦à¦Ÿà¦¿ à¦à¦ªà¦¿à¦†à¦‡ দà§à¦¬à¦¾à¦°à¦¾ করা যাবে না।',
+ 'captchahelp-title' => 'কà§à¦¯à¦¾à¦ªà¦šà¦¾ সাহাযà§à¦¯',
+ 'captchahelp-cookies-needed' => 'à¦à¦‡ কাজটি করার জনà§à¦¯ আপনাকে আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡à¦° কà§à¦•à¦¿ সকà§à¦°à¦¿à¦¯à¦¼ করতে হবে।',
+ 'captchahelp-text' => 'যেসব ওয়েবসাইট পোসà§à¦Ÿà¦¿à¦‚-à¦à¦° জনà§à¦¯ উনà§à¦®à§à¦•à§à¦¤, যেমন à¦à¦‡ উইকিটি, সেগà§à¦²à¦¿ পà§à¦°à¦¾à¦¯à¦¼à¦‡ সà§à¦ªà§à¦¯à¦¾à¦®à¦¾à¦°à¦¦à§‡à¦° আকà§à¦°à¦®à¦£à§‡à¦° শিকার হয়। সà§à¦ªà§à¦¯à¦¾à¦®à¦¾à¦°à¦°à¦¾ সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼ সরঞà§à¦œà¦¾à¦® বà§à¦¯à¦¬à¦¹à¦¾à¦° করে তাদের সংযোগগà§à¦²à¦¿ বহৠসাইটে পোসà§à¦Ÿ করে। à¦à¦‡ সà§à¦ªà§à¦¯à¦¾à¦® সংযোগগà§à¦²à¦¿ মà§à¦›à§‡ ফেলা সমà§à¦­à¦¬, কিনà§à¦¤à§ à¦à¦—à§à¦²à¦¿ যথেষà§à¦Ÿ বিরকà§à¦¤à¦¿à¦° উদà§à¦°à§‡à¦• করে।
+
+কখনো কখনো, বিশেষ করে কোন পাতায় নতà§à¦¨ ওয়েব সংযোগ যোগ করার সময়, উইকিটি আপনাকে রঙিন বা বিকৃত টেকà§à¦¸à¦Ÿà¦¬à¦¿à¦¶à¦¿à¦·à§à¦Ÿ ছবি দেখিয়ে আপনাকে শবà§à¦¦à¦Ÿà¦¿ টাইপ করতে বলতে পারে। যেহেতৠà¦à¦‡ কাজটি সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼à¦­à¦¾à¦¬à§‡ সমà§à¦ªà¦¾à¦¦à¦¨ করা দà§à¦°à§‚হ, তাই à¦à¦‡ বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾à¦° ফলে পà§à¦°à¦•à§ƒà¦¤ মানà§à¦·à§‡à¦°à¦¾ পোসà§à¦Ÿ করতে পারবেন কিনà§à¦¤à§ বেশির ভাগ সà§à¦ªà§à¦¯à¦¾à¦®à¦¾à¦° বা রোবটভিতà§à¦¤à¦¿à¦• আকà§à¦°à¦®à¦£ বাধাপà§à¦°à¦¾à¦ªà§à¦¤ হবে।
+
+যারা চোখে কম দেখতে পান কিংবা টেকà§à¦¸à¦Ÿà¦­à¦¿à¦¤à§à¦¤à¦¿à¦• বা উকà§à¦¤à¦¿à¦­à¦¿à¦¤à§à¦¤à¦¿à¦• বà§à¦°à¦¾à¦‰à¦œà¦¾à¦° বà§à¦¯à¦¬à¦¹à¦¾à¦° করছেন, দà§à¦°à§à¦­à¦¾à¦—à§à¦¯à¦¬à¦¶à¦¤ à¦à¦‡ বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾à¦Ÿà¦¿ তাদের জনà§à¦¯ সমসà§à¦¯à¦¾à¦° সৃষà§à¦Ÿà¦¿ করবে। à¦à¦‡ মà§à¦¹à§‚রà§à¦¤à§‡ আমাদের কাছে à¦à¦‡ বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾à¦Ÿà¦¿à¦° কোন অডিও বিকলà§à¦ª নেই। যদি বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾à¦Ÿà¦¿ আপনাকে বৈধ পোসà§à¦Ÿ করতে অযাচিত বাধা দেয়, অনà§à¦—à§à¦°à¦¹ করে [[{{MediaWiki:Grouppage-sysop}}|সাইটের পà§à¦°à¦¶à¦¾à¦¸à¦•à¦¦à§‡à¦°]] কাছে সাহাযà§à¦¯ চান।
+
+আপনি à¦à¦–ন বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡à¦° বà§à¦¯à¦¾à¦• বোতাম চেপে পাতা সমà§à¦ªà¦¾à¦¦à¦•à§‡ ফেরত যেতে পারেন।',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# সিনটà§à¦¯à¦¾à¦•à§à¦¸ নিমà§à¦¨à¦°à§‚প:
+# * "#" কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦¾à¦° থেকে শà§à¦°à§ হয়ে লাইনের শেষ পরà§à¦¯à¦¨à§à¦¤ সবকিছৠà¦à¦•à¦Ÿà¦¿ মনà§à¦¤à¦¬à§à¦¯
+# * খালি নয় à¦à¦®à¦¨ পà§à¦°à¦¤à¦¿à¦Ÿà¦¿ লাইন à¦à¦•à¦Ÿà¦¿ রেজেকà§à¦¸ খণà§à¦¡à¦¾à¦‚শ যেটি URLগà§à¦²à¦¿à¦° ভেতরে হোসà§à¦Ÿà¦—à§à¦²à¦¿à¦° সাথে মিলে যাবে।
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'কà§à¦¯à¦¾à¦ªà¦šà¦¾à¦¤à§‡ না গিয়ে কà§à¦¯à¦¾à¦ªà¦šà¦¾ টà§à¦°à¦¿à¦—ারিং à¦à¦° কাজ করà§à¦¨',
+);
+
+/** Breton (Brezhoneg)
+ * @author BrokenArrow
+ * @author Fulup
+ * @author Y-M D
+ */
+$messages['br'] = array(
+ 'captcha-edit' => "A-raok gellout degas kemmoù war ar bajenn-mañ e c'houlenner ouzhoc'h respont d'ar jedadenn eeun a-is ha lakaat an disoc'h er vaezienn ([[Special:Captcha/help|Petra eo se?]])",
+ 'captcha-desc' => 'Pourchas a ra teknikoù CAPTCHA evit en em wareziñ diouzh ar strob hag an diskuliañ gerioù-tremen',
+ 'captcha-addurl' => "Liammoù diavaez nevez zo bet ouzhpennet ganeoc'h. A-benn talañ ouzh ar strob emgefre skrivit disoc'h ar jedadennig eeun-mañ er stern : <br />([[Special:Captcha/help|Petra eo se?]])",
+ 'captcha-badlogin' => "A-benn talañ ouzh preizhadur emgefre ar gerioù-tremen gant ar botoù e c'houlenner ouzhoc'h jediñ an tamm oberiadenn ha skrivañ an disoc'h anezhi er vaezienn a-is ([[Special:Captcha/help|Petra eo se ?]]):",
+ 'captcha-createaccount' => "A-benn hor skoazellañ da dalañ ouzh ar c'hrouiñ kontoù emgefre, skrivit ar gerioù a zeu war wel er stern-mañ evit enrollañ ho kont : <br />([[Special:Captcha/help|Petra eo se?]])",
+ 'captcha-createaccount-fail' => "Pe e vank ar c'hod kadarnaat pe eo fall anezhañ.",
+ 'captcha-create' => "A-benn krouiñ ar bajenn, skrivit disoc'h ar jedadennig eeun-mañ er vaezienn : <br />([[Special:Captcha/help|Petra eo se?]])",
+ 'captcha-sendemail' => "Evit hor skoazellañ da zizarbenn ar strob emgefre, sammit ar sifroù a-is ha skrivit an disoc'h er voest ([[Special:Captcha/help|gouzout hiroc'h]]) :",
+ 'captcha-sendemail-fail' => "Pe e vank ar c'hod kadarnaat pe eo fall anezhañ.",
+ 'captcha-disabledinapi' => "Evit an obererezh-mañ ez eus ezhomm ur captcha, dre-se ne c'hell ket bezañ graet dre an API.",
+ 'captchahelp-title' => 'Skoazell Capcha',
+ 'captchahelp-cookies-needed' => "Ret eo deoc'h gweredekaet an toupinoù war ho merdeer Web evit ma'z afe en-dro.",
+ 'captchahelp-text' => "Alies e vez taget al lec'hiennoù a zegemer kemennadennoù a-berzh an holl, evel ar wiki-mañ, gant ar stroberien a implij ostilhoù emgefre evit postañ o liammoù war lec'hiennoù a bep seurt.
+Ha pa c'hallfent bezañ diverket, kazus-mat ez int memes tra.
+
+A-wezhioù, dreist-holl pa vez ouzhpennet liammoù Web nevez war ur bajenn, e c'hallo ar wiki-mañ diskouez deoc'h ur skeudenn warni un tamm testenn liv pe a-dreuz. Goulennet e vo diganeoc'h skrivañ ar gerioù a welit.
+Un trevell start da emgefrekaat eo hemañ. Gant se e c'hallo an implijerien wirion postañ ar pezh a fell dezho tra ma vo lakaet un harz d'an darn vrasañ eus ar stroberien pe d'an dagerien robotek all.
+
+Koulskoude e c'hallo an implijerien berr o gweled pe ar re a implij merdeerioù diazezet war ar skrid pe war ar vouezh bezañ strafuilhet gant se. N'omp ket evit kinnig un diskoulm dre glevet evit c'hoazh.
+Kit e darempred gant [[{{MediaWiki:Grouppage-sysop}}|merourien al lec'hienn]] m'hoc'h eus diaesterioù evit kemer perzh abalamour d'an teknik-se.
+
+Pouezit war bouton 'kent' ho merdeer evit distreiñ d'ar bajenn gemmañ.",
+ 'captcha-addurl-whitelist' => " #<!-- laoskit al linenn-mañ tre evel m'emañ --> <pre>
+# Setu penaos emañ an ereadur :
+# * Kement tra war-lerc'h an arouezenn \"#\" zo un urzhiad, betek penn all al linenn
+# * Kement linenn n'eo ket goullo zo ur c'hod regex a vo implijet e diabarzh al liammoù gourdskrid hepken
+ #</pre> <!-- laoskit al linenn-mañ tre evel m'emañ -->",
+ 'right-skipcaptcha' => 'Lañsañ a ra an oberoù captcha hep bezañ rediet da dremen drezañ',
+);
+
+/** Bosnian (Bosanski)
+ * @author BrokenArrow
+ * @author CERminator
+ */
+$messages['bs'] = array(
+ 'captcha-edit' => 'VaÅ¡a izmjena ukljuÄuje nove URL linkove; kao zaÅ¡tita od automatizovanog vandalizma, moraćete da izraÄunate zadatak ispod i upiÅ¡ete odgovor u prozor:
+([[Special:Captcha/help|Å ta je ovo?]]):',
+ 'captcha-desc' => 'Omogućava CAPTCHA tehnike za zaštitu protiv spama i probijanja šifre',
+ 'captcha-addurl' => 'VaÅ¡a izmjena ukljuÄuje nove URL linkove; kao zaÅ¡tita od automatizovanog vandalizma, moraćete da upiÅ¡ete rezultat prikazane sume u okvir ([[Special:Captcha/help|Å ta je ovo?]]):',
+ 'captcha-badlogin' => 'Da bi ste pomogli protiv automatskog probijanja šifre, molimo riješite jednostavan zadatak sabiranja ispod i unesite rezultat u kutiju ([[Special:Captcha/help|više informacija]]):',
+ 'captcha-createaccount' => 'Kao zaštita od automatizovanog vandalizma, moraćete da ukucate rezultat sume u okvir ispod da biste registrovali nalog:
+<br />([[Special:Captcha/help|Å ta je ovo?]])',
+ 'captcha-createaccount-fail' => 'NetaÄan unos ili nedostatak Å¡ifre za potvrÄ‘ivanje.',
+ 'captcha-create' => 'Da bi ste napravili stranicu; kao zaštita od automatizovanog vandalizma, moraćete da ukucate rezultat prikazane sume u okvir ispod:
+([[Special:Captcha/help|Å ta je ovo?]])',
+ 'captcha-sendemail' => 'Da bi ste pomogli protiv automatskog stavljanja linkova, molimo riješite jednostavan zadatak sabiranja ispod i unesite rezultat u kutiju ([[Special:Captcha/help|više informacija]]):',
+ 'captcha-sendemail-fail' => 'NetaÄan unos ili nedostatak Å¡ifre za potvrÄ‘ivanje.',
+ 'captcha-disabledinapi' => 'Ova akcija zahtjeva captchu, tako da se ne može izvršiti preko API.',
+ 'captchahelp-title' => 'Pomoć pri captcha',
+ 'captchahelp-cookies-needed' => 'Da bi ste ovo mogli raditi potrebno je da omogućite kolaÄiće (cookies) u VaÅ¡em pregledniku.',
+ 'captchahelp-text' => "Websajtovi koji podržavaju slanje sadržaja iz javnosti, kao Å¡to je ovaj viki, Äesto zloupotrebljavaju vandali koji koriste automatizovane alate da Å¡alju svoje linkove ka mnogim sajtovima.
+Iako se ovi neželjeni linkovi mogu ukloniti, one ipak zadaju veliku muku.
+
+Ponekad, pogotovo kad se dodaju novi internet linkovi na stranicu, wiki softver Vam može pokazati sliku obojenog i izvrnutog teksta i tražiti da ukucate traženu rijeÄ.
+PoÅ¡to je teÅ¡ko automatizovati ovakav zadatak, on omogućuje svim pravim ljudima da vrÅ¡e svoje izmjene, ali će zato sprijeÄiti vandale i ostale robotske napadaÄe.
+
+Nažalost, ovo može da bude nepovoljno za korisnike sa ograniÄenim vidom i za one koji koriste preglednike bazirane na tekstu ili govoru.
+U ovom trenutku, audio alternativa nije dostupna.
+Molimo Vas da kontaktirate [[{{MediaWiki:Grouppage-sysop}}|administratore sajta]] radi pomoći ako Vas ovo neoÄekivano ometa u pravljenju dobrih izmjena.
+
+Kliknite 'nazad' ('back') dugme vašeg preglednika da se vratite na polje za unos teksta.",
+ 'captcha-addurl-whitelist' => ' #<!-- ostavite ovaj red onakav kakav je --> <pre>
+# Sintaksa je slijedeća:
+# * Sve od znaka "#" do kraja reda je komentar
+# * Svaki neprazni red je regex fragment koji će odgovarati samo domaćinima unutar URLova
+ #</pre> <!-- ostavite ovaj red onakav kakav je -->',
+ 'right-skipcaptcha' => 'Korištenje akcija nakon captcha bez potrebe prolaska kroz captcha proces',
+);
+
+/** Catalan (Català)
+ * @author El libre
+ * @author Paucabot
+ * @author SMP
+ * @author Ssola
+ * @author Toniher
+ */
+$messages['ca'] = array(
+ 'captcha-edit' => 'Per a poder modificar aquesta pàgina cal que resolgueu aquesta simple suma i introduïu el resultat en el quadre ([[Special:Captcha/help|més informació]]):',
+ 'captcha-desc' => "Proporciona tècniques CAPTCHA per a protegir contra la publicitat no desitjada i l'obtenció de contrasenyes",
+ 'captcha-addurl' => 'La vostra modificació conté enllaços externs nous. Com a protecció contra la brossa de propaganda automàtica, cal que resolgueu aquesta simple suma i introduïu el resultat en el quadre a continuació ([[Special:Captcha/help|més informació]]):',
+ 'captcha-badlogin' => "Per a ajudar en la protecció contra l'obtenció automatitzada de contrasenyes haureu de resoldre la suma que apareix a continuació ([[Special:Captcha/help|més informació]]):",
+ 'captcha-createaccount' => "Com a protecció contra la creació automàtica de comptes d'usuari necessitem que resolgueu aquesta simple suma i introduïu el resultat en el quadre a continuació ([[Special:Captcha/help|més informació]]):",
+ 'captcha-createaccount-fail' => 'Manca el codi de confirmació, o bé és incorrecte.',
+ 'captcha-create' => 'La vostra modificació conté enllaços externs nous. Com a protecció contra la brossa de propaganda automàtica, cal que resolgueu aquesta simple suma i introduïu el resultat en el quadre a continuació ([[Special:Captcha/help|més informació]]):',
+ 'captcha-sendemail' => "Per tal d'ajudar-nos en la lluita contra la publicitat automatitzada, cal que solucioneu la senzilla suma que apareix a continuació, i escrigueu el resultat a la casella ([[Special:Captcha/help|més informació]]):",
+ 'captcha-sendemail-fail' => 'Manca el codi de confirmació, o bé és incorrecte.',
+ 'captcha-disabledinapi' => "Aquesta acció requereix un captcha (codi d'imatge), per la qual cosa no es pot realitzar a través de l'API.",
+ 'captchahelp-title' => 'Ajuda amb el sistema captcha',
+ 'captchahelp-cookies-needed' => "Heu d'activar les galetes al vostre navegador per a que funcioni.",
+ 'captchahelp-text' => "Els webs que accepten la publicació de missatges per part del seu públic, com aquest wiki, són sovint víctimes de spam per part de robots automàtics que hi posen enllaços cap als seus webs. Aquests enllaços es poden anar eliminant, però suposen un important destorb.
+
+Quan creeu nous comptes d'usuari o afegiu enllaços a una pàgina se us demanarà que respongueu una pregunta fàcil, una suma o que teclegeu el text que apareix en una imatge distorsionada. És difícil programar un robot per aquest tipus de tasques, i gràcies a açò, es poden aturar la majoria d'atacants robots.
+
+Malauradament, aquest sistema pot suposar un inconvenient per a usuaris amb problemes de visió o que utilitzin navegadors de text simple o de veu. Actualment no disposem de cap alternativa auditiva disponible. Contacteu els [[{{MediaWiki:Grouppage-sysop}}|administradors del web]] si aquest sistema us impedeix de fer edicions legítimes.
+
+Necessitareu tenir les galetes (''cookies'') activades al vostre navegador per a realitzar aquestes accions.
+
+Cliqueu el botó de retrocedir del vostre navegador per a tornar al formulari.",
+ 'captcha-addurl-whitelist' => " #<!-- deixeu aquesta línia tal com està --> <pre>
+# La sintaxi és la següent:
+# * Totes les línies que comencen amb un # son considerades comentaris
+# * Tota línia no buida és un fragment d'expressió regular (regexp) que enllaçarà amb els hosts de les URL
+ #</pre> <!-- deixeu aquesta línia tal com està -->",
+ 'right-skipcaptcha' => 'Fer les accions que requereixen de captcha sense haver-lo de passar',
+);
+
+/** Min Dong Chinese (Mìng-dĕ̤ng-ngṳ̄) */
+$messages['cdo'] = array(
+ 'captcha-edit' => "Nṳ̄ gă-tiÄ•ng lÄu sÄ­ng gì nguôi-buô lièng-giék. Ôi lÄu ê̤ṳ-huòng ô tiàng-sê̤ṳ cê̤ṳ-dông huák-buó bóng-só̤ séng-sék (''spam''), kÄ«-dâe̤ng nṳ̄ gié-sáung â-dÄ̤ gÄng-dăng gì gă-huák, gái ciÅng dák-áng siÄ diÄ“ gáh-gáh diÄ“-sié ([[Special:Captcha/help|gáing sâ̤ séng-sék]]):",
+ 'captchahelp-title' => 'Captcha bÅng-cô',
+ 'captchahelp-text' => "Chiông wiki dÄ“ng kăi-huóng gì uÅng-câng sèu-sèu ké̤ṳk bóng-só̤ séng-sék huák-buó-nè̤ng (\\'\\'spammer\\'\\') páh-chÄ: Ä­-gáuk-nè̤ng kÄ•k cê̤ṳ-dông-huá gì gă-sÄ­ táik bóng-só̤ guÅng-gó̤ lièng gáu Ä­ gì uÅng-câng. ChÅ­i-iòng cÄ« piÄ• bóng-só̤ séng-sék â̤ dù lâi gì, dáng-sê iâ cêng-go̤ tÅ̤-iéng.
+
+Ô sèng-hâiu, dÄ•k-biék sê găk nṳ̄ gă-tiÄ•ng sÄ­ng gì nguôi-buô lièng-giék gáu wiki gì sèng-hâiu, wiki â̤ hiÄ“ng-sê sáik-ké gáuk-iông hĕ̤k-ciÄ sê hìng-câung ô gÄi-biéng gì ùng-cê dù-chiông, giéu nṳ̄ páh diÄ“ nṳ̄ sÅ« káng giéng gì cê hĕ̤k sṳ̀ (hô̤ lÅ̤ \"captcha\"). Ĭng-ôi gÄ­-ké-nè̤ng mâ̤ chiàng ciÄ Ãªng-ô, gó-chṳ̄ cêu â̤ huòng-cÄ« duâi-buô-hông iù gÄ­-ké-nè̤ng huák-buó bóng-só̤ séng-sék (bók-guó, cÄ­ng nè̤ng huák-buó bóng-só̤ séng-sék, ciÄ huÅng-huák huòng mâ̤ lì).
+
+CÄ­ng mì-hâng, dó̤i hÄ« piÄ• mĕ̤k-ciÅ­ mâ̤ hÅ̤, hĕ̤k-ciÄ sê sÄi-ê̤ṳng gÄ­-ṳ̀ ùng-buÅng (\\'\\'text-based\\'\\') hĕ̤k gÄ­-ṳ̀ siăng-Ä­ng (\\'\\'speech-based\\'\\') gì báuk-lÄng-ké (\\'\\'browser\\'\\') gì ê̤ṳng-hô lì gÅng, cÅ«ng-kuÄng cÄ­ng mâ̤ lê-biêng. CÄ« òng, nàng-gă gó mò̤ 1 cṳ̄ng gá hÅ̤ gì huÅng-huák. Nâ sê gÅng, cuòi Ä«ng-hiÅng nṳ̄ ciáng-siòng piÄ•ng-cÄ­k, chiÄng nṳ̄ lièng-hiê guÄng-lÄ«-uòng.
+
+Ôi lÄu captcha gì ciáng-siòng gĕ̤ng-cáuk, nṳ̄ diÅh páh kÅ­i báuk-lÄng-ké gì cookie.
+
+Buóh diÅng kó̤ piÄ•ng-cÄ­k hiÄ•k-miêng, áik \"diÅng kó̤ sèng 1 hiÄ•k\" (\\'\\'back\\'\\').",
+);
+
+/** Czech (ÄŒesky)
+ * @author Danny B.
+ * @author Li-sung
+ * @author Matěj Grabovský
+ * @author Mormegil
+ */
+$messages['cs'] = array(
+ 'captcha-edit' => 'Abyste mohli editovat tuto stránku, musíte vyÅ™eÅ¡it následující jednoduchý souÄet a napsat výsledek. ([[Special:Captcha/help|Co tohle znamená?]])',
+ 'captcha-desc' => 'Poskytuje techniky CAPTCHA pro ochranu před spamem a hádáním hesel',
+ 'captcha-addurl' => 'Vaše editace obsahuje nové externí odkazy.
+V zájmu ochrany pÅ™ed automatickým spamováním vyÅ™eÅ¡te následující jednoduchý souÄet a napiÅ¡te výsledek. ([[Special:Captcha/help|Co tohle znamená?]])',
+ 'captcha-badlogin' => 'V zájmu ochrany proti automatickým pokusům uhodnout heslo musíte vyÅ™eÅ¡it následující jednoduchý souÄet a napsat výsledek. ([[Special:Captcha/help|Co tohle znamená?]]):',
+ 'captcha-createaccount' => 'V rámci ochrany pÅ™ed automatickým vytvářením úÄtů musíte pro provedení registrace vyÅ™eÅ¡it následující jednoduchý souÄet a napsat výsledek. ([[Special:Captcha/help|Co tohle znamená?]])',
+ 'captcha-createaccount-fail' => 'ChybÄ›jící Äi neplatný potvrzovací kód.',
+ 'captcha-create' => 'Abyste mohli založit stránku, musíte vyÅ™eÅ¡it následující jednoduchý souÄet a napsat výsledek. ([[Special:Captcha/help|Co tohle znamená?]])',
+ 'captcha-sendemail' => 'V rámci ochrany proti automatickému spamování musíte vyÅ™eÅ¡it jednoduchý souÄet a napsat výsledek ([[Special:Captcha/help|více informací]]):',
+ 'captcha-sendemail-fail' => 'ChybÄ›jící Äi neplatný potvrzovací kód.',
+ 'captcha-disabledinapi' => 'Tato operace vyžaduje splnění CAPTCHA, takže ji nelze provést prostřednictvím API.',
+ 'captchahelp-title' => 'Nápověda ke captcha',
+ 'captchahelp-cookies-needed' => 'Aby to fungovalo, musíte mít ve svém prohlížeÄi zapnuty cookies.',
+ 'captchahelp-text' => 'Webové stránky, do kterých mohou pÅ™ispívat jejich návÅ¡tÄ›vníci (jako například tato wiki), jsou Äasto terÄem spammerů, kteří pomocí automatických nástrojů vkládají své odkazy na velké množství stránek. PÅ™estože lze tento spam odstranit, pÅ™edstavuje nepříjemné obtěžování.
+
+NÄ›kdy, zvláštÄ› pÅ™i pÅ™idávání nových webových odkazů, vám může wiki ukázat obrázek barevného Äi pokrouceného textu a požádat vás o opsání zobrazených znaků. Jelikož takovou úlohu lze jen těžko automatizovat, skuteÄní lidé mohou dále pÅ™ispívat, zatímco vÄ›tÅ¡inu spammerů a jiných robotických útoÄníků to zastaví.
+
+Bohužel to vÅ¡ak může pÅ™edstavovat nepříjemný problém pro uživatele se zrakovým postižením Äi uživatele používající textové prohlížeÄe Äi hlasové ÄteÄky. V souÄasné dobÄ› nemáme alternativní zvukovou verzi. Kontaktujte laskavÄ› [[{{MediaWiki:Grouppage-sysop}}|správce serveru]], pokud vám to brání v užiteÄných příspÄ›vcích a potÅ™ebujete pomoc.
+
+Pro návrat na pÅ™edchozí stránku stisknÄ›te ve svém prohlížeÄi tlaÄítko „zpÄ›t“.',
+ 'captcha-addurl-whitelist' => ' #<!-- Nechte tento řádek přesně tak jak je --> <pre>
+# Syntaxe je následující:
+# * Všechno od znaku „#“ do konce řádku je komentář
+# * Každý neprázdný řádek je fragment regulárního výrazu, který se aplikuje pouze na název stroje v URL
+ #</pre> <!-- Nechte tento řádek přesně tak jak je -->',
+ 'right-skipcaptcha' => 'Vykonávání akcí spojených s CAPTCHA bez nutnosti jejího řešení',
+);
+
+/** Welsh (Cymraeg)
+ * @author Lloffiwr
+ */
+$messages['cy'] = array(
+ 'captcha-edit' => "Er mwyn gallu golygu'r dudalen, gwnewch y swm isod a gosodwch y canlyniad yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ 'captcha-desc' => 'Yn gweithredu technegau CAPTCHA i arbed rhag sbam a dyfalu cyfrineiriau',
+ 'captcha-addurl' => 'Mae eich golygiad yn cynnwys cysylltiadau URL newydd. Er mwyn profi nad ydych yn beiriant sbam, byddwch gystal â theipio cyfanswm y swm canlynol yn y blwch isod ([[Special:Captcha/help|mwy o wybodaeth]]):',
+ 'captcha-badlogin' => 'Er mwyn ceisio rhwystro peiriannau datrys cyfrineiriau, byddwch gystal â gwneud y swm isod a gosod yr ateb yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):',
+ 'captcha-createaccount' => "Teipiwch cyfanswm y swm canlynol yn y blwch isod, os gwelwch yn dda. Mae'r nodwedd hon yn rhwystro rhaglenni sbam rhag creu cyfrifon i'w hunain ([[Special:Captcha/help|Mwy o wybodaeth]]):",
+ 'captcha-createaccount-fail' => "Côd cadarnhau ar goll neu'n anghywir.",
+ 'captcha-create' => "Er mwyn gallu creu'r dudalen, gwnewch y swm isod a gosodwch y canlyniad yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ 'captcha-sendemail' => 'Er mwyn cyfrannu at ddiogelu rhag sbamio awtomatig, byddwch gystal â gwneud y swm syml isod ac ysgrifennwch yr ateb yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):',
+ 'captcha-sendemail-fail' => 'Y cod cadarnhau yn anghywir neu yn eisiau.',
+ 'captcha-disabledinapi' => 'Mae angen "captcha" i gyflawni\'r weithred hon, felly nid oes modd ei gyflawni trwy\'r API.',
+ 'captchahelp-title' => 'Cymorth "captcha"',
+ 'captchahelp-cookies-needed' => "Er mwyn i hyn weithio mae'n rhaid bod cookies wedi eu galluogi ar eich gwe-lywiwr.",
+ 'captchahelp-text' => "Yn anffodus, mae safleoedd gwe fel y wici hon, sy'n caniatau i'r cyhoedd ysgrifennu iddi, yn darged beunyddiol i sbamwyr sy'n defnyddio rhaglenni arbennig i bostio eu cysylltiadau ar wefannau lu. Gellir dileu'r dolenni o'r tudalennau, ond byddai hynny'n waith trafferthus.
+
+O dro i dro, yn enwedig wrth ychwanegu dolenni at safleoedd gwe eraill, fe fydd y safle hon yn dangos delwedd o destun, ac fe fydd yn rhaid i chi deipio'r geiriau a ddangosir. Mae hyn yn dasg anodd iawn i raglenni cyfrifiadurol, felly dylai'r rhan fwyaf o olygwyr go iawn gyflawni'r dasg yn ddi-drafferth, yn wahanol i'r rhaglenni sbam.
+
+Yn anffodus, mae hyn yn creu trafferthion i'r rhai sydd yn defnyddio porwyr testun neu borwyr sain, neu sydd yn colli eu golwg.
+Ar hyn o bryd nid oes fersiwn sain ar gael.
+Cysylltwch â [[{{MediaWiki:Grouppage-sysop}}|gweinyddwyr y safle]] os ydi'r nodwedd hon yn eich rhwystro rhag ychwanegu golygiadau dilys.
+
+Gwasgwch botwm 'nôl' eich porwr er mwyn dychwelyd at y dudalen golygu.",
+ 'captcha-addurl-whitelist' => '#<!-- leave this line exactly as it is --> <pre>
+#
+# Dyma\'r gystrawen:
+# * Mae popeth o nod "#" hyd at ddiwedd y llinell yn sylwad
+# * Mae pob llinell nad yw\'n wag yn ddarn regex sydd ddim ond yn cydweddu
+# * gwesteiwyr tu mewn i gyfeiriadau URL
+
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => "Gwneud rhyw weithred, sy'n arfer deffro meddalwedd y captcha, heb ei ddeffro.",
+);
+
+/** Danish (Dansk)
+ * @author Aputtu
+ * @author Byrial
+ */
+$messages['da'] = array(
+ 'captcha-edit' => 'For at redigere denne side, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'captcha-desc' => 'Enkel captcha-implementering',
+ 'captcha-addurl' => 'Din redigering tilføjer nye eksterne henvisninger til artiklen. Som beskyttelse mod automatiseret spam, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'captcha-badlogin' => 'For at beskytte mod automatiserede gæt på kodeord, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'captcha-createaccount' => 'For at beskytte mod automatisk oprettelse af brugernavne, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'captcha-createaccount-fail' => 'Forkert eller manglende kodeord.',
+ 'captcha-create' => 'For at oprette en ny side, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'captcha-sendemail' => 'For at beskytte mod automatisk oprettelse af brugernavne, så bedes du venligst svare på regnestykket nedenfor og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'captcha-sendemail-fail' => 'Forkert eller manglende bekræftelseskode.',
+ 'captcha-disabledinapi' => "Denne handling kræver en captcha, så det ikke kan udføres via API'en.",
+ 'captchahelp-title' => 'Captcha-hjælp',
+ 'captchahelp-cookies-needed' => 'Din browser skal understøtte cookies, før dette kan gennemføres.',
+ 'captchahelp-text' => "Websites der accepterer indhold fra offentligheden, bliver ofte udsat for angreb fra spammere. Disse angreb sker med automatiske værktøjer, der anbringer de samme links på et stort antal websites på kort tid. Selvom disse links kan fjernes, er de en vedligeholdelsesmæssig byrde.
+
+I visse tilfælde, specielt når der tilføjes nye links til denne wiki, vil softwaren vise dig et billede af et stykke forvredet og sløret tekst. Du skal indtaste det ord, der vises, før du kan gennemføre handlingen. Formålet er at skelne mellem mennesker og automatiserede værktøjer, da de sidste har meget svært ved at genkende ordene.
+
+Desværre kan dette medføre problemer for svagtseende brugere, og brugere der bruger software der oplæser indholdet af siden. For øjeblikket findes der ikke et lydbaseret alternativ. Kontakt venligst en [[{{MediaWiki:Grouppage-sysop}}|administrator]] med henblik på at få hjælp, hvis dette forhindrer tilføjelsen af godartet materiale.
+
+Tryk på 'tilbage'-knappen i din browser for at returnere til redigeringssiden.",
+ 'captcha-addurl-whitelist' => ' #<!-- Undlad at rette denne linie --> <pre>
+# Vejledning:
+# * Alt fra et "#"-tegn til slutningen af en linie er en kommentar
+# * Alle ikke-blanke linier benyttes som regulært udtryk, der anvendes på hostnavne i URLer
+ #</pre> <!-- Undlad at rette denne linie -->',
+ 'right-skipcaptcha' => 'Udføre handlinger som normalt kræver "captcha"-bekræftelse uden at bruge "captcha"',
+);
+
+/** German (Deutsch)
+ * @author Imre
+ * @author Kghbln
+ * @author Metalhead64
+ * @author MichaelFrey
+ * @author Raimond Spekking
+ * @author The Evil IP address
+ * @author Umherirrender
+ */
+$messages['de'] = array(
+ 'captcha-edit' => 'Zur Bearbeitung der Seite löse die nachfolgende Rechenaufgabe und trage das Ergebnis in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].',
+ 'captcha-desc' => 'Stellt CAPTCHA-Techniken zum Schutz vor Spam und dem Erraten von Passwörtern bereit',
+ 'captcha-addurl' => 'Deine Bearbeitung enthält neue externe Links.
+Zum Schutz vor automatisiertem Spamming löse die nachfolgende Rechenaufgabe und trage das Ergebnis in das Feld unten ein. Klicke dann erneut auf „Seite speichern“ [[Special:Captcha/help|(Fragen oder Probleme?)]].',
+ 'captcha-badlogin' => 'Zum Schutz vor einer Kompromittierung deines Benutzerkontos löse die nachfolgende Rechenaufgabe und trage das Ergebnis in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]]:',
+ 'captcha-createaccount' => 'Zum Schutz vor automatisierter Anlage von Benutzerkonten löse die nachfolgende Rechenaufgabe und trage das Ergebnis in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].',
+ 'captcha-createaccount-fail' => 'Falscher oder fehlender Bestätigungscode.',
+ 'captcha-create' => 'Zur Erstellung der Seite löse die nachfolgende Rechenaufgabe und trage das Ergebnis in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].',
+ 'captcha-sendemail' => 'Um gegen automatischen Spam vorzugehen, löse bitte die einfache Rechenaufgabe und gib die Antwort unten in das Feld ein ([[Special:Captcha/help|mehr Informationen]]):',
+ 'captcha-sendemail-fail' => 'Falscher oder fehlender Bestätigungscode.',
+ 'captcha-disabledinapi' => 'Diese Aktion benötigt ein CAPTCHA. Sie kann nicht über die API ausgeführt werden.',
+ 'captchahelp-title' => 'CAPTCHA-Hilfe',
+ 'captchahelp-cookies-needed' => "'''Wichtiger Hinweis:''' Es müssen Cookies im Browser erlaubt sein.",
+ 'captchahelp-text' => 'Internetangebote, die für Beiträge von praktisch jedem offen sind — so wie dieses Wiki — werden oft von Spammern missbraucht, die ihre Links automatisch auf vielen Webseiten platzieren. Diese Spam-Links können wieder entfernt werden, sie sind aber ein erhebliches Ärgernis.
+
+In manchen Fällen, insbesondere beim Hinzufügen von neuen Weblinks zu einer Seite, kann es vorkommen, dass dieses Wiki ein Bild mit einem farbigen und verzerrten Text anzeigt und dazu auffordert, die angezeigten Wörter einzutippen.
+Da eine solche Aufgabe nur schwer automatisch erledigt werden kann, werden dadurch die meisten Spammer, die mit automatischen Werkzeugen arbeiten, gestoppt, wogegen menschliche Benutzer ihren Beitrag absenden können.
+
+Leider kann dies zu Schwierigkeiten für Personen führen, die über eine eingeschränkte Sehfähigkeit verfügen oder text- oder sprachbasierte Browser verwenden. Aktuell sind keine Audio-CAPTCHAs verfügbar.
+
+Bitte kontaktiere einen [[{{MediaWiki:Grouppage-sysop}}|Administratoren]] für weitere Hilfe, wenn dies es unmöglich macht, erwünschte Bearbeitungen vorzunehmen.
+
+Der „Zurück“-Knopf des Browsers führt zurück zum Bearbeitungsfenster.',
+ 'captcha-addurl-whitelist' => ' #<!-- Diese Zeile darf nicht verändert werden! --> <pre>
+# Syntax:
+# * Alles von einem #-Zeichen bis zum Ende der Zeile ist ein Kommentar
+# * Jede nicht-leere Zeile ist ein Regex-Fragment, das gegenüber den Hostnamen einer URL geprüft wird
+ #</pre> <!-- Diese Zeile darf nicht verändert werden! -->',
+ 'right-skipcaptcha' => 'Ãœberspringen der CAPTCHA-Eingabe',
+);
+
+/** German (formal address) (‪Deutsch (Sie-Form)‬)
+ * @author Imre
+ * @author Raimond Spekking
+ * @author The Evil IP address
+ */
+$messages['de-formal'] = array(
+ 'captcha-edit' => 'Zur Bearbeitung der Seite lösen Sie die nachfolgende Rechenaufgabe und tragen Sie das Ergebnis in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].',
+ 'captcha-addurl' => 'Ihre Bearbeitung enthält neue externe Links.
+Zum Schutz vor automatisiertem Spamming lösen Sie die nachfolgende Rechenaufgabe und tragen Sie das Ergebnis in das Feld unten ein.
+Klicken Sie dann erneut auf „Seite speichern“ [[Special:Captcha/help|(Fragen oder Probleme?)]].',
+ 'captcha-badlogin' => 'Zum Schutz vor einer Kompromittierung Ihres Benutzerkontos lösen Sie die nachfolgende Rechenaufgabe und tragen Sie das Ergebnis in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]]:',
+ 'captcha-createaccount' => 'Zum Schutz vor automatisierter Anlage von Benutzerkonten lösen Sie die nachfolgende Rechenaufgabe und tragen Sie das Ergebnis in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].',
+ 'captcha-create' => 'Zur Erstellung der Seite lösen Sie die nachfolgende Rechenaufgabe und tragen Sie das Ergebnis in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].',
+ 'captchahelp-text' => 'Internetangebote, die für Beiträge von praktisch jedem offen sind — so wie dieses Wiki — werden oft von Spammern missbraucht, die ihre Links automatisch auf vielen Webseiten platzieren. Diese Spam-Links können wieder entfernt werden, sie sind aber ein erhebliches Ärgernis.
+
+In manchen Fällen, insbesondere beim Hinzufügen von neuen Weblinks zu einer Seite, kann es vorkommen, dass dieses Wiki ein Bild mit einem farbigen und verzerrten Text anzeigt und dazu auffordert, die angezeigten Wörter einzutippen.
+Da eine solche Aufgabe nur schwer automatisch erledigt werden kann, werden dadurch die meisten Spammer, die mit automatischen Werkzeugen arbeiten, gestoppt, wogegen menschliche Benutzer ihren Beitrag absenden können.
+
+Leider kann dies zu Schwierigkeiten für Personen führen, die über eine eingeschränkte Sehfähigkeit verfügen oder text- oder sprachbasierte Browser verwenden. Aktuell sind keine Audio-Captchas verfügbar.
+
+Bitte kontaktieren Sie einen [[{{MediaWiki:Grouppage-sysop}}|Administratoren]] für weitere Hilfe, wenn dies es unmöglich macht, erwünschte Bearbeitungen vorzunehmen.
+
+Der „Zurück“-Knopf des Browsers führt zurück zum Bearbeitungsfenster.',
+);
+
+/** Zazaki (Zazaki)
+ * @author Aspar
+ * @author Xoser
+ */
+$messages['diq'] = array(
+ 'captcha-edit' => 'Qe ena pel vurnayîşî, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse ([[Special:Captcha/help|enformasyonê bînî]]):',
+ 'captcha-desc' => 'Implementasyonê captacha yê asanî',
+ 'captcha-addurl' => 'Vurnayîşanê tu de linkanê harîcîyê newe esto.
+Qe otomatik spamî ra pawitîş, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse ([[Special:Captcha/help|enformasyonê bînî]]):',
+ 'captcha-badlogin' => 'Qe otomatik parola crack kerdişî ra pawitîş, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse ([[Special:Captcha/help|enformasyonê bînî]]):',
+ 'captcha-createaccount' => 'Qe otomatik hesab viraştişî ra pawitîş, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse ([[Special:Captcha/help|enformasyonê bînî]]):',
+ 'captcha-createaccount-fail' => 'Kodê testiqî vin biyo ya zi raşt niyo.',
+ 'captcha-create' => 'Qe pel viraştîşî, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse ([[Special:Captcha/help|enformasyonê bînî]]):',
+ 'captcha-sendemail' => 'Qe otomatik spam ra pawitîşi, ma rica keno cewabê problemî qutiyê ke cor de zerre ey ra binuse
+([[Special:Captcha/help|enformasyonê bînî]]):',
+ 'captcha-sendemail-fail' => 'Kodê testiqî vin biyo ya zi raşt niyo.',
+ 'captcha-disabledinapi' => 'Ena hereket de captcha lazim o, aye ra ser API ra ena hereket nibena.',
+ 'captchahelp-title' => 'Yardimê captchayî',
+ 'captchahelp-cookies-needed' => 'Eka şıma wazeno bıkewê pela Wikipedia, programê internetê şıma de cookiesi gani aktiv bê.',
+ 'captchahelp-text' => "Siteyan ke kamu ra aleknayişê îlanî ra destur dano, ze ena wiki, spam kerdogan ke xacetane otomatiki ser kar keno inan ra atak beno.
+Ma eÅŸkeno linkane inan wedarno, feqat hewna inan problem zeman ma geno.
+
+Mavaci, key ti yew pele de linkane newi darneno, wiki belki ti ra yew resim mucneno u ti ra wazeno cekuyan ke resimda inan binusi.
+Eka ena process otomatik nibeno, ena process otomatik spam kerogan vinderneno feqay sexsi spam kerdogan nieÅŸkeno vindaro.
+
+Ma ef bikeri ena process belki ti ra zehmeti. belki cim tu ra ÅŸcekuyan hewl niesno.
+Nika ma da sistemê vengî cinoke ti ra vaci resim da kamci cekuyan esto.
+Ma rica keno ti yew [[{{MediaWiki:Grouppage-sysop}}|idarekar]] ra yew mesaj bişavî u o ra yardim bivaci eka ti yew linkê hewlî darnone.
+
+Browser xo de goceke 'back' rê klik bike şo pela editorî.",
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+#Sîntaks ze ena yo:
+# * Nişanê "#" ra nişanê ke bînê xetî de pêran piya xulasa yo
+# * Her xetî ke veng niyo fragmento regex u teyna URLan de hostan match keno
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Herekatanê captcha trigger perform bike ke ti ser captcha meşo',
+);
+
+/** Lower Sorbian (Dolnoserbski)
+ * @author Michawiki
+ */
+$messages['dsb'] = array(
+ 'captcha-edit' => 'Aby wobźěłował toś ten bok, rozwěž pšosym slědujucy jadnory liceński nadawk a zapódaj wuslědk do kašćika ([[Special:Captcha/help|Dalšne info]]):',
+ 'captcha-desc' => 'Staja techniki CAPTCHA za šćit pśeśiwo spamoju a wugódanjoju gronidłow k dispoziciji',
+ 'captcha-addurl' => 'Twója změna wopśimujo nowe eksterne wótkaze.
+Za šćit pśeśiwo zawtomatizěrowanemu spamoju, rozwěž pšosym slědujucy jadnory liceński nadawk a zapódaj wuslědk do kašćika ([[Special:Captcha/help|dalšne info]]):',
+ 'captcha-badlogin' => 'Za šćit pśeśiwo zawtomatizěrowanemu wuzgónjowanjeju gronidła, rozwěž pšosym slědujucy jadnory liceński nadawk a zapódaj wuslědk do kašćika ([[Special:Captcha/help|dalšne info]]):',
+ 'captcha-createaccount' => 'Za šćit pśeśiwo zawtomatizěrowanemu załoženjeju kontow, rozwěž pšosym slědujucy jadnory liceński nadawk a zapódaj wuslědk do kašćika ([[Special:Captcha/help|dalšne info]]):',
+ 'captcha-createaccount-fail' => 'Wopacny abo felujucy wobkšuśeński kod.',
+ 'captcha-create' => 'Aby napórał bok, rozwěž pšosym slědujucy jadnory liceński nadawk a zapódaj wuslědk do kašćika ([[Special:Captcha/help|dalšne info]]):',
+ 'captcha-sendemail' => 'Za šćit pśeśiwo awtomatiskemu spamowanjeju, rozwěž pšosym jadnory liceński nadawk a zapódaj wótegrono do kašćika ([[Special:Captcha/help|dalšne informacije]]):',
+ 'captcha-sendemail-fail' => 'Wopacny abo felujucy wobkšuśeński kod.',
+ 'captcha-disabledinapi' => 'Toś ta akcija pomina se captcha, togodla njedajo se pśez API wuwjasć.',
+ 'captchahelp-title' => 'Pomoc wó captcha',
+ 'captchahelp-cookies-needed' => 'Aby to funkcioněrowało, muse cookieje dowólone byś.',
+ 'captchahelp-text' => 'Websedła, kótarež akceptěruju zjawne pśinoski, ako toś ten wiki, znjewužywaju se cesto wót spamowarjow, kótarež wužywaju zawtomatizěrowane rědy, aby słali swóje wótkaze na wjele sedłow.
+Lěcrownož toś te spamowe wótkaze daju se wótpóraś, su wóne bejna pógóršota.
+
+Wótergi, wósebnje, gaž se nowe wótkaze pśidawaju bokoju, jo móžno, až wiki śi pokazujo wobraz barwojtego abo spryšćonego teksta a pšosy śe, aby zapódał zwobraznjone słowa.
+Dokulaž to jo nadawk, kótaryž dajo se śěžko awtomatizěrowaś, dówolujo to napšawdnym luźam jich pśinoski wótpósłaś, nejwěcej spamowarjow a robotowe ataki pak se zaźaržyju.
+
+Bóžko to móžo kazyś wužywarjow z wobgraniwoneju zamóžnosću wiźenja pśi wužywanju wobglědowakow, kótarež bazěruju na teksće abo rěcnem wudaśu.
+Tuchylu njamamy awdioalternatiwu.
+Staj se pšosym z [[{{MediaWiki:Grouppage-sysop}}|administratorami sedła]] z pšosbu wó pomoc do zwiska, jolic to śi njewócakane zawobarujo słanje legitimnych pśinoskow.
+
+Klikni na tłocašk "Slědk" we swójom wobglědowaku, aby wróśił k bokowemu editoroju.',
+ 'captcha-addurl-whitelist' => ' #<!-- wóstaj toś tu smužku rowno ako jo --> <pre>
+ # Syntaksa jo ako slědujo:
+ # * Wšykno wót znamuška "#" ku kóńcoju smužki jo komentar
+ # * Kužda smužka, kótaraž njejo prozna, jo fragment regularnego wuraza, kótaryž nastupa jano hostam w URL
+ #</pre> <!-- wóstaj toś tu smužku rowno ako jo -->',
+ 'right-skipcaptcha' => 'Akcije wugbaś, kótarež zapušćiju captcha, mimo až se nadawk captcha rozwěžo.',
+);
+
+/** Ewe (EÊ‹egbe)
+ * @author Natsubee
+ */
+$messages['ee'] = array(
+ 'captcha-edit' => 'Ne enye wò didi bena yea ɖɔ axa sia ɖo la, mía ve nuwò be na bu akɔnta si le nuŋɔŋlɔ sia gɔme, eye na ŋlɔ nusi wòkpɔ ɖe go sia me ([[Special:Captcha/help|gbeƒãɖeɖe]]):',
+);
+
+/** Greek (Ελληνικά)
+ * @author Badseed
+ * @author Consta
+ * @author Dada
+ * @author Geraki
+ * @author Glavkos
+ * @author Kiriakos
+ * @author Omnipaedista
+ * @author ZaDiak
+ * @author ΠεÏίεÏγος
+ */
+$messages['el'] = array(
+ 'captcha-edit' => 'Για να επεξεÏγαστείτε αυτή την σελίδα, παÏακαλοÏμε λÏστε την παÏακάτω Ï€Ïόσθεση και απαντήστε στο πλαίσιο ([[Special:Captcha/help|πληÏοφοÏίες]]):',
+ 'captcha-desc' => 'ΠαÏέχει τεχνικές CAPTCHA για την Ï€Ïοστασία από spam και Ï€Ïοσπάθειες σπασίματος κωδικών Ï€Ïόσβασης',
+ 'captcha-addurl' => 'Η επεξεÏγασία σας πεÏιλαμβάνει νέους εξωτεÏικοÏÏ‚ συνδέσμους. Για λόγους Ï€Ïοστασίας κατά αυτοματοποιημένου spam, παÏακαλοÏμε λÏστε την παÏακάτω Ï€Ïόσθεση και απαντήστε στο πλαίσιο ([[Special:Captcha/help|πληÏοφοÏίες]]):',
+ 'captcha-badlogin' => 'Για να βοηθήσετε στην Ï€Ïοστασία ενάντια στον "σπασμένο" κωδικό Ï€Ïόσβασης, παÏακαλώ λÏστε αυτή την απλή Ï€Ïάξη και εισάγετε το αποτέλεσμα της στο παÏακάτω κενό ([[Special:Captcha/help|πεÏισσότεÏες πληÏοφοÏίες]]):',
+ 'captcha-createaccount' => 'Για να βοηθήσετε στην Ï€Ïοστασία ενάντια στην αυτοματοποιημένη δημιουÏγία λογαÏιασμοÏ, παÏακαλώ λÏστε την απλή Ï€Ïάξη
+και εισάγετε την λÏση της στο παÏακάτω κενό
+([[Special:Captcha/help|πεÏισσότεÏες πληÏοφοÏίες]]):',
+ 'captcha-createaccount-fail' => 'Λάθος ή αγνοοÏμενος κωδικός ολοκλήÏωσης.',
+ 'captcha-create' => 'Για να δημιουÏγήσετε την σελίδα, παÏακαλοÏμε λÏστε την παÏακάτω Ï€Ïόσθεση και απαντήστε στο πλαίσιο ([[Special:Captcha/help|πληÏοφοÏίες]]):',
+ 'captcha-sendemail' => 'Για να βοηθήσετε στην αποφυγή αυτοματοποιημένων spam, παÏακαλοÏμε να λÏσετε την παÏακάτω απλή Ï€Ïάξη και να εισάγετε την απάντηση στο πεδίο ([[Special:Captcha/help|πεÏισσότεÏες πληÏοφοÏίες]]):',
+ 'captcha-sendemail-fail' => 'Ελλιπής ή λανθασμένος κωδικός επιβεβαίωσης.',
+ 'captcha-disabledinapi' => 'Η ενέÏγεια αυτή απαιτεί επαλήθευση Î»ÎµÎºÏ„Î¹ÎºÎ¿Ï ÎºÎµÎ¹Î¼Î­Î½Î¿Ï… και για αυτό δεν μποÏεί να γίνει μέσω του API.',
+ 'captchahelp-title' => 'Βοήθεια για το Captcha',
+ 'captchahelp-cookies-needed' => 'Θα Ï€Ïέπει να έχετε τα cookies ενεÏγοποιημένα στον φυλλομετÏητή σας για να εκτελεστεί η λειτουÏγία.',
+ 'captchahelp-text' => "Οι ιστοσελίδες που δέχονται τις επεξεÏγασίες από το κοινό, όπως αυτό το wiki, δεν χÏησιμοποιοÏνται συχνά σωστά από τους spammers που χÏησιμοποιοÏν τα αυτοματοποιημένα εÏγαλεία για να αποστείλουν τις συνδέσεις τους με πολλές σελίδες. Αυτές οι spam συνδέσεις μποÏοÏν να αφαιÏεθοÏν, επειδή είναι σημαντικά ενοχλητικές.
+
+ΜεÏικές φοÏές, ειδικά κατά την Ï€Ïοσθήκη νέων συνδέσμων σε μια σελίδα, το wiki μποÏεί να σας παÏουσιάσει μια εικόνα με ένα χÏωματισμένο ή διαστÏεβλωμένο κείμενο και να σας ζητήσει να πληκτÏολογήσετε τις λέξεις που παÏουσιάζονται. Δεδομένου ότι αυτό είναι ένας στόχος που είναι δÏσκολο να αυτοματοποιηθεί, θα επιτÏέψει στους πεÏισσότεÏους χÏήστες να κάνουν τις επεξεÏγασίες τους, σταματώντας τους spammers και άλλους Ïομποτικά επιτιθέμενους.
+
+Δυστυχώς αυτό μποÏεί να ενοχλήσει τους χÏήστες πεÏιοÏίζοντας το ÏŒÏαμα τους ή αυτοÏÏ‚ που βασίζονται στο κείμενο ή στην ομιλία που βασίζεται στις μηχανές αναζήτησης. ΠÏος το παÏόν δεν έχουμε μια διαθέσιμη εναλλακτική λÏση. ΠαÏακαλώ ελάτε σε επαφή με τους [[{{MediaWiki:Grouppage-sysop}}|διαχειÏιστές]] των σελίδων για βοήθεια, εάν αυτό σας αποτÏέπει απÏοσδόκητα από την παÏαγωγή των νόμιμων επεξεÏγασιών.
+
+Πατήστε το κουμπί 'πίσω' στη μηχανή αναζήτησης σας για να επιστÏέψετε στο συντάκτη σελίδων.",
+ 'captcha-addurl-whitelist' => ' #<!-- αφήστε αυτή την γÏαμμή ακÏιβώς όπως είναι --> <pre>
+# Η σÏνταξη είναι όπως παÏακάτω:
+# * Οτιδήποτε από ένα χαÏακτήÏα "#" ως το τέλος της γÏαμμής είναι ένα σχόλιο
+# * Κάθε μη κενή γÏαμμή είναι μια έκφÏαση regex που θα ταιÏιάζει μόνο hosts μέσα σε URL
+ #</pre> <!-- αφήστε αυτή την γÏαμμή ακÏιβώς όπως είναι -->',
+ 'right-skipcaptcha' => 'ΠÏαγματοποίηση ενεÏγειών που ενεÏγοποιοÏν captcha χωÏίς να χÏειάζεται πέÏασμα από το captcha',
+);
+
+/** British English (British English)
+ * @author Lcawte
+ */
+$messages['en-gb'] = array(
+ 'captchahelp-text' => "Web sites that accept postings from the public, like this wiki, are often abused by spammers who use automated tools to post their links to many sites.
+While these spam links can be removed, they are a significant nuisance.
+
+Sometimes, especially when adding new web links to a page, the wiki may show you an image of coloured or distorted text and ask you to type the words shown.
+Since this is a task that's hard to automate, it will allow most real humans to make their posts while stopping most spammers and other robotic attackers.
+
+Unfortunately this may inconvenience users with limited vision or using text-based or speech-based browsers.
+At the moment we do not have an audio alternative available.
+Please contact the [[{{MediaWiki:Grouppage-sysop}}|site administrators]] for assistance if this is unexpectedly preventing you from making legitimate posts.
+
+Hit the 'back' button in your browser to return to the page editor.",
+);
+
+/** Esperanto (Esperanto)
+ * @author Castelobranco
+ * @author Petrus Adamus
+ * @author Yekrats
+ */
+$messages['eo'] = array(
+ 'captcha-edit' => 'Por redakti ĉi tiun paÄon, bonvolu solvi la simplan sumon jenan kaj enigi la respondon en la skatolo ([[Special:Captcha/help|plua informo]]):',
+ 'captcha-desc' => 'Disponigas ilojn de Captcha por kontraŭigi spamaĵojn kaj pasvorto-divenadon',
+ 'captcha-addurl' => 'Via redakto entenas novajn eksterajn ligilojn.
+Por malhelpi aÅ­tomatan spamadon, bonvolu solvi la simplan problemon sube kaj entajpu la respondon en la kesto ([[Special:Captcha/help|pli da informo]]):',
+ 'captcha-badlogin' => 'Helpi protekti kontraÅ­ aÅ­tomata divenado de pasvortoj, bonvolu solvi la simplan sumon kaj enigi la respondon en la skatolo ([[Special:Captcha/help|plua informo]]):',
+ 'captcha-createaccount' => 'Helpi protekti kontraÅ­ aÅ­tomata konto-kreado, bonvolu solvi la simplan sumon suben
+kaj enigi la respondon en la skatolo ([[Special:Captcha/help|plua informo]]):',
+ 'captcha-createaccount-fail' => 'MalÄusta aÅ­ mankanta konfirma kodo.',
+ 'captcha-create' => 'Por krei la paÄon, bonvolu solvi la simplan sumon jenan kaj enigi la respondon en la skatolo ([[Special:Captcha/help|plua informo]]):',
+ 'captcha-sendemail' => 'Por helpi protekti kontraÅ­ aÅ­tomata spamado, bonvolu solvi la simplan sumon kaj enigi la respondon en la skatolo ([[Special:Captcha/help|plua informo]]):',
+ 'captcha-sendemail-fail' => 'MalÄusta aÅ­ mankanta konfirma kodo.',
+ 'captcha-disabledinapi' => 'Ĉi tiu ago bezonas captcha, tial Äi ne estas farebla per API.',
+ 'captchahelp-title' => 'Helpo pri captcha',
+ 'captchahelp-cookies-needed' => 'Vi devas permesi kuketojn en via retumilo por funkciigi ĉi tion.',
+ 'captchahelp-text' => "Retejoj kiuj akcepti informon de publiko, kiel ĉi tiu vikio, estas ofte misuzitaj de spamistoj kiu uzas aÅ­tomatajn ilojn por afiÅi ligilojn al multaj retejoj.
+Kvankam ĉi tiu spam-ligiloj estas forigeblaj, ili estas granda Äeno.
+
+Iufoje, ja kiam aldonante novajn retligilojn al paÄo, la vikio eble montros al vi bildon de bunta aÅ­ misformita teksto, kaj petos al vi tajpi la vortojn montratajn.
+Tial ĉi tiu tasko estas malfacila por fari aŭtomate, ebligos al realaj homoj fari aldonaĵojn, kaj malebligos spamistojn kaj aliajn robotajn atakilojn.
+
+BedaÅ­rinde, ĉi tio eble Äenetos uzantojn kun malbona vidkapablo kiu utiligas tekstajn aÅ­ voĉajn retumilojn.
+Ĉi-momente, neniu aŭda alternativo estas havebla.
+Bonvolu kontakti la [[{{MediaWiki:Grouppage-sysop}}|administrantojn de la retejo]] por helpo se ĉi tio malebligas al vi fari bonan aldonon.
+
+Klaku la 'reiru' butonon en via retumilo por reiri al la paÄo-redaktilo.",
+ 'captcha-addurl-whitelist' => ' #<!-- ne ÅanÄu ĉi tiun linion iel ajn --> <pre>
+# Sintakso estas jen:
+# * Ĉio ekde "#" signo al la fino de linio estas komento
+# * Ĉiu linio ne malplena estas ero de regex kiu kongruos retnodojn nur ene de ttt-adresoj
+ #</pre> <!-- ne ÅanÄu ĉi tiun linion iel ajn -->',
+ 'right-skipcaptcha' => "Faru ''captcha''-spronantaj agoj sen farante la ''captcha''-on",
+);
+
+/** Spanish (Español)
+ * @author Crazymadlover
+ * @author Drini
+ * @author Icvav
+ * @author Jatrobat
+ * @author Lin linao
+ * @author Locos epraix
+ * @author Muro de Aguas
+ * @author Pertile
+ * @author Sanbec
+ */
+$messages['es'] = array(
+ 'captcha-edit' => 'Para editar este artículo, por favor resuelve la sencilla suma que aparece abajo e introduce la solución en la caja ([[Special:Captcha/help|más información]]):',
+ 'captcha-desc' => 'Provee técnicas CAPTCHA para proteger contra spam y adivinación de contraseña.',
+ 'captcha-addurl' => 'Tu edición incluye nuevos enlaces externos.
+Para ayudar a proteger contra el spam automatizado, por favor resuelve la sencilla suma de abajo e introduce la respuesta en la caja ([[Special:Captcha/help|más información]]):',
+ 'captcha-badlogin' => 'Para ayudar a protegernos de la creación automática de cuentas, por favor resuelve la simple suma de abajo e introduce la respuesta en la caja ([[Special:Captcha/help|más información]]):',
+ 'captcha-createaccount' => 'Para ayudar a protegernos de la creación automática de cuentas, por favor resuelve la simple suma de abajo e introduce la respuesta en la caja ([[Special:Captcha/help|más información]]):',
+ 'captcha-createaccount-fail' => 'Falta el código de confirmación, o éste es incorrecto.',
+ 'captcha-create' => 'Para crear la página, por favor resuelve la simple suma de abajo e introduce la respuesta en la caja ([[Special:Captcha/help|más información]]):',
+ 'captcha-sendemail' => 'Para protegernos contra el spam automatizado, por favor resuelva la suma simple que se presenta a continuación e ingrese la respuesta en el cuadro de texto ([[Special:Captcha/help|más información]]):',
+ 'captcha-sendemail-fail' => 'El código de confirmación falta o es incorrecto.',
+ 'captcha-disabledinapi' => 'Esta acción requiere un captcha, así que no puede ser ejecutada a través de un API.',
+ 'captchahelp-title' => 'Ayuda sobre el captcha',
+ 'captchahelp-cookies-needed' => 'Debe tener las cookies activadas en el navegador para que el sistema funcione.',
+ 'captchahelp-text' => "Los sitios web que aceptan mensajes del público, como esta wiki, son a menudo objeto de abusos por spammers que utilizan programas para incluir automáticamente sus enlaces. Si bien estos enlaces pueden quitarse, son una gran molestia.
+
+En ocasiones, especialmente cuando añada nuevos enlaces a una página, la wiki le mostrará una imagen de texto coloreado o distorsionado y le pedirá que escriba las palabras que muestra. Dado que esta es una tarea difícil de automatizar, permite a la mayoría de las personas enviar sus textos, a la vez que detiene a la mayoría de los spammers y otros atacantes automáticos.
+
+Desafortunadamente esto puede ser un inconveniente para usuarios con visión limitada o para navegadores basados en texto o en voz.
+En este momento no tenemos una alternativa de audio disponible.
+Por favor contacte a los [[{{MediaWiki:Grouppage-sysop}}|administradores del sitio]] para asistencia si esto está impidiendiendo inesperadamente que hagas mensajes legítimos.
+
+Presione el botón 'atrás' en su navegador para retornar al editor de página.",
+ 'captcha-addurl-whitelist' => ' #<!-- deje esta línea exactamente como está --> <pre>
+# La sintaxis es la siguiente:
+# * Todo desde un caracter "#" hasta el final de la línea es un comentario
+# * Toda línea que no esté en blanco es un fragmento de expresión regular que se comparará con las URLs
+ #</pre> <!-- deje esta línea exactamente como está -->',
+ 'right-skipcaptcha' => 'Realiza acciones que despliegan un captcha sin tener que confirmar el captcha',
+);
+
+/** Estonian (Eesti)
+ * @author BrokenArrow
+ * @author Jaan513
+ * @author Pikne
+ */
+$messages['et'] = array(
+ 'captcha-edit' => 'Selle lehekülje muutmiseks lahenda palun lihtne tehe ja sisesta vastus kasti ([[Special:Captcha/help|lisateave]]).',
+ 'captcha-desc' => 'Pakub robotilõksu abil kaitset rämpspostituste ja paroolide äraarvamise vastu.',
+ 'captcha-addurl' => 'Sinu muudatus sisaldab uusi välislinke.
+Palun lahenda allpool lihtne tehe ja sisesta vastus kasti. Abinõu on kaitseks automaadistatud rämpsmuudatuste vastu ([[Special:Captcha/help|lisateave]]):',
+ 'captcha-badlogin' => 'Kaitseks automaatsete parooliäraarvajate vastu, palun lahenda see lihtne tehe ja sisesta vastus kasti ([[Special:Captcha/help|täpsem teave]]):',
+ 'captcha-createaccount' => 'Palun lahenda lihtne tehe ja sisesta vastus kasti. Abinõu on kaitseks kontode automaatse loomise vastu ([[Special:Captcha/help|lisateave]]):',
+ 'captcha-createaccount-fail' => 'Puuduv või valesti sisestatud kinnituskood.',
+ 'captcha-create' => 'Lehekülje loomiseks lahenda palun lihtne tehe ja sisesta vastus kasti
+([[Special:Captcha/help|täpsem teave]]):',
+ 'captcha-sendemail' => 'Palun lahenda allpool lihtne tehe ja sisesta vastus kasti. Abinõu on kaitseks automaadistatud rämpsmuudatuste vastu ([[Special:Captcha/help|lisateave]]):',
+ 'captcha-sendemail-fail' => 'Vigane või puuduv kinnituskood.',
+ 'captchahelp-title' => 'Mis on robotilõks?',
+ 'captchahelp-cookies-needed' => 'Selle toimimiseks peab veebilehitseja lubama küpsiseid.',
+ 'captchahelp-text' => 'Võrgukohti, mis lubavad külastajatel sisu muuta, nagu ka see viki, kasutavad sageli rämpsposti levitajad, lisades näiteks lehekülgedele reklaamilinke. Kuigi neid linke saab eemaldada, on nad siiski tülikad.
+
+Omale kasutajakontot registreerides või mõnele lehele uusi internetiaadresse postitades näidatakse teile moonutatud tekstiga pilti ning palutakse teil sisestada seal kuvatud sõnad. Kuna selliselt pildilt on arvutil raske teksti välja lugeda, on see efektiivseks kaitseks rämpspostirobotite vastu ja lubab samas tavakasutajatel rahus muudatusi teha.
+
+Kahjuks võib see tekitada ebamugavusi nägemisraskustega inimestele või neile, kes kasutavad tehiskõneseadet või tekstipõhist veebilehitsejat. Hetkel pole meil helipõhist alternatiivi.
+Kui teil tekib raskusi muudatuste tegemisel, võtke palun ühendust selle võrgukoha [[{{MediaWiki:Grouppage-sysop}}|ülematega]].
+
+Konto registreerimise lehele või lehe redigeerimisele tagasi jõudmiseks klõpsake oma veebilehitseja tagasi-nuppu.',
+ 'captcha-addurl-whitelist' => ' #<!-- Jäta see rida muutmata kujule. --> <pre>
+# Süntaks:
+# * Kõik alates märgist "#" kuni rea lõpuni on kommentaar
+# * Iga rida, mis ei ole tühi, on regulaaravaldise osa, milleks sobib internetiaadressi osadest ainult hostinimi
+ #</pre> <!-- Jäta see rida muutmata kujule. -->',
+ 'right-skipcaptcha' => 'Sooritada robotilõksu vallapäästvaid toiminguid testi läbimata',
+);
+
+/** Basque (Euskara)
+ * @author An13sa
+ * @author BrokenArrow
+ * @author Kobazulo
+ * @author Pi
+ */
+$messages['eu'] = array(
+ 'captcha-edit' => 'Orrialde hau editatzeko, mesedez, beheko batuketa erraz hau ebatzi eta erantzuna kutxan idatzi ([[Special:Captcha/help|argibide gehiago]]):',
+ 'captcha-desc' => 'CAPTCHA teknika erabiltzen ditu spamaren aurkako babeserako',
+ 'captcha-addurl' => 'Zure aldaketan URL lotura berriak daude; spam-a saihesteko, jarraian dagoen irudiko hitzak idaztea beharrezkoa da:<br /> ([[Special:Captcha/help|Zer da hau?]])',
+ 'captcha-createaccount' => 'Spam-a saihesteko, mesedez, irudian agertzen den hizki edo zenbaki kodea, beheko laukian idatzi zure kontua sortzeko:<br /> ([[Special:Captcha/help|Zer da hau?]])',
+ 'captcha-createaccount-fail' => 'Baieztatze kode ezegokia.',
+ 'captcha-create' => 'Orrialde hau sortzeko, mesedez, beheko batuketa erraz hau ebatzi eta erantzuna kutxan idatzi ([[Special:Captcha/help|argibide gehiago]]):',
+ 'captchahelp-title' => 'Captcha laguntza',
+ 'captchahelp-cookies-needed' => 'Beharrezkoa da nabigatzailean cookieak gaituta izatea honek funtzionatzeko.',
+ 'captchahelp-text' => "Publikoki aldaketak egiteko aukerak dituzten webguneetan, wiki honetan bezalaxe, spam testuak gehitzen dira sarritan tresna automatikoak erabiliz.
+Lotura horiek ezabatu egin daitezkeen arren, traba dira.
+
+Batzuetan, eta bereziki webgune berri bateko loturak gehitzen dituzunean, hitz batzuk dituen irudi bat agertuko zaizu, eta bertan ageri den testua idazteko eskatuko zaizu. Lan hori automatizatzeko zaila da, eta pertsonei ezer kostatzen ez zaigunez, spam testuak saihesteko lagungarria da.
+
+Zoritxarrez, ikusmen mugatua edo testu bidezko nabigatzaileak erabiltzen dituzten erabiltzeek arazoak izan ditzakete. Horrelako zerbait gertatzen bazaizu, mesedez, jarri [[{{MediaWiki:Grouppage-sysop}}|administratzaileekin]] harremanetan.
+
+Zure nabigatzaileko 'atzera' lotura erabili aldaketen orrialdera itzultzeko.",
+);
+
+/** Persian (Ùارسی)
+ * @author Ebraminio
+ * @author Huji
+ * @author Wayiran
+ */
+$messages['fa'] = array(
+ 'captcha-edit' => 'برای ویرایش این مقاله، لطÙاً حاصل جمع زیر را حساب کنید Ùˆ نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):',
+ 'captcha-desc' => 'روش‌های مبتنی بر CAPTCHA برای مقابله با هرزنگاری Ùˆ کش٠گذرواژه Ùراهم می‌کند',
+ 'captcha-addurl' => 'ویرایش شما شامل پیوندهای تازه‌ای به بیرون است. برای Ú©Ù…Ú© به جلوگیری از ارسال خودکار هرزنامه‌ها، لطÙاً حاصل جمع زیر را حساب کنید Ùˆ نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):',
+ 'captcha-badlogin' => 'برای Ú©Ù…Ú© به جلوگیری از سرقت خودکار کلمه عبور، لطÙاً حاصل جمع زیر را حساب کنید Ùˆ نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):',
+ 'captcha-createaccount' => 'برای جلوگیری از ایجاد خودکار حساب کاربری، لطÙاً حاصل جمع زیر را حساب کنید Ùˆ نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):',
+ 'captcha-createaccount-fail' => 'کد تأییدی وجود ندارد یا نادرست است.',
+ 'captcha-create' => 'برای ایجاد صÙحه لطÙاً حاصل جمع زیر را حساب کنید Ùˆ نتیجه را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):',
+ 'captcha-sendemail' => 'برای Ú©Ù…Ú© به Ø­Ùاظت در برابر هرزنامه‌های خودکار، لطÙاً جمع سادهٔ زیر را حل کنید Ùˆ جواب را در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیش‌تر]]):',
+ 'captcha-sendemail-fail' => 'کد تأییدی وجود ندارد یا نادرست است.',
+ 'captcha-disabledinapi' => 'این اقدام به کپچا نیاز دارد، بنابراین نمی‌تواند از طریق API انجام شود.',
+ 'captchahelp-title' => 'راهنمای Captcha',
+ 'captchahelp-cookies-needed' => 'برای کار کردن آن، شما باید کوکی‌های مرورگرتان را Ùعال کنید.',
+ 'captchahelp-text' => 'وبگاه‌هایی مثل این ویکی Ú©Ù‡ به عموم اجازهٔ نوشتن مطلب می‌دهند، غالباً مورد سوءاستÙادهٔ هرزÙرستندگانی می‌شوند Ú©Ù‡ با ابزارهای خودکار پیوندهای بیرونی به وبگاه‌های موردنظرشان وارد می‌کنند.
+اگر چه این پیوندهای هرز و تبلیغاتی را می‌توان دستی حذ٠کرد، ولی به هر حال باعث اعصاب‌خردی زیادی می‌شوند.
+
+گاهی اوقات، خصوصاً هنگامی Ú©Ù‡ پیوندهای بیرونی جدیدی به صÙحه اضاÙÙ‡ می‌شود، ویکی ممکن است به شما تصویری رنگی Ùˆ کج‌وکوله از متنی نشان بدهد Ùˆ از شما بخواهد Ú©Ù‡ کلمه‌های نشان‌داده‌شده را تایپ کنید.
+از آنجا که خودکارسازی این کار دشوار است، انسانهای واقعی می‌توانند پیوندهاشان را وارد کنند ولی برنامه‌های خودکار تبلیغاتی از خرابکاری باز خواهند ماند.
+
+متأسÙانه این امر ممکن است باعث مزاحمت برای کاربرانی شود Ú©Ù‡ چشمشان ضعی٠است یا از مرورگرهای متنی یا Ú¯Ùتاری استÙاده می‌کنند.
+در حال حاضر ما جایگزین صوتی‌ای برای این کار نداریم. لطÙاً اگر برای واردساختن پیوندهای مشروع دچار مشکل شده‌اید با [[{{MediaWiki:Grouppage-sysop}}|مدیران این وبگاه]] تماس بگیرید.
+
+دکمهٔ «بازگشت» را در مرورگر خود Ùشار دهید تا به صÙحهٔ ویرایش بازگردید.',
+ 'captcha-addurl-whitelist' => ' #<!-- این سطر را همان‌گونه که هست رها کنید --> <pre>
+# قواعد به این شکل است:
+# * همه‌چیز از «#» تا آخر سطر یک توضیح در نظر گرÙته می‌شود.
+# * هر سطری Ú©Ù‡ خالی نباشد یک قطعه در نظر گرÙته می‌شود Ú©Ù‡ Ùقط با نام میزبان اینترنتی سنجیده می‌شود.
+ #</pre> <!-- این سطر را همان‌گونه که هست رها کنید -->',
+ 'right-skipcaptcha' => 'انجام کارهایی Ú©Ù‡ CAPTCHA را Ùعال می‌کنند بدون نیاز به گذر از CAPTCHA',
+);
+
+/** Finnish (Suomi)
+ * @author Agony
+ * @author Centerlink
+ * @author Crt
+ * @author Nike
+ * @author Varusmies
+ */
+$messages['fi'] = array(
+ 'captcha-edit' => 'Ratkaise alla oleva summa jatkaaksesi ([[Special:Captcha/help|lisätietoja]]):',
+ 'captcha-desc' => 'Yksinkertainen ihmisvarmennustoteutus.',
+ 'captcha-addurl' => 'Muokkauksesi sisältää uusia linkkejä muille sivuille. Ratkaise alla oleva summa jatkaaksesi ([[Special:Captcha/help|lisätietoja]]):',
+ 'captcha-badlogin' => 'Salasananmurtajasovellusten takia, ratkaise alla oleva summa jatkaaksesi ([[Special:Captcha/help|lisätietoja]]):',
+ 'captcha-createaccount' => 'Ratkaise alla oleva summa jatkaaksesi ([[Special:Captcha/help|lisätietoja]]):',
+ 'captcha-createaccount-fail' => 'Väärä tai puuttuva varmistuskoodi.',
+ 'captcha-create' => 'Ratkaise alla oleva summa jatkaaksesi ([[Special:Captcha/help|lisätietoja]]):',
+ 'captcha-sendemail' => 'Jotta auttaisit suojautumaan automaattiselta roskapostitukselta, ratkaise alla oleva yksinkertainen yhteenlasku ja kirjoita vastaus laatikkoon ([[Special:Captcha/help|lisätietoja]]):',
+ 'captcha-sendemail-fail' => 'Virheellinen tai puuttuva vahvistuskoodi',
+ 'captcha-disabledinapi' => 'Tämä toiminto vaatii kuvavarmennusta, joten et voi suorittaa sitä APIn kautta.',
+ 'captchahelp-title' => 'Captcha-ohje',
+ 'captchahelp-cookies-needed' => 'Tämä toiminto vaatii evästeiden hyväksymistä.',
+ 'captchahelp-text' => 'Verkkosivut, jotka sallivat ulkopuolisten lisätä sisältöä, joutuvat usein spam-hyökkäysten kohteeksi. Spam-hyökkäyksessä spammerit käyttävät työkaluja, jotka automaattisesti lisäävät linkkejä monille sivuille. Vaikka nämä linkit voidaan poistaa, aiheutuu niistä silti merkittävä haitta.
+
+Joskus, erityisesti kun lisäät uusia linkkejä, saatat nähdä kuvan, jossa on värillistä ja vääristynyttä tekstiä, ja sinua pyydetään kirjoittamaan sen sisältämät sanat. Koska tätä tehtävää on vaikea automatisoida, se sallii melkein kaikkien oikeiden ihmisten tehdä muutoksensa, mutta estää automaattiset lisäykset.
+
+Valitettavasti tämä saattaa estää käyttäjiä, joilla on rajoittunut näkökyky tai käyttäjiä, jotka käyttävät teksti- tai puhepohjaisia selaimia. Ota yhteyttä sivuston [[{{MediaWiki:Grouppage-sysop}}|sivuston ylläpitäjiin]], jos et pysty tekemään kunnollisia muutoksia.
+
+Varmistus ei toimi, jos evästeet eivät ole käytössä.
+
+Voit palata muokkaustilaan selaimen paluutoiminnolla.',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Syntaksi on seuraava:
+# * Kaikki #-merkistä eteenpäin on kommenttia
+# * Jokainen ei-tyhjä rivi on säännöllisen lausekkeen osa, joka suoritetaan vain linkeissä esiintyville verkkonimille.
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Suorittaa ilman captcha-tarkistusta toimintoja, jotka normaalisti vaatisivat tarkistuksen läpikäyntiä',
+);
+
+/** Faroese (Føroyskt)
+ * @author Spacebirdy
+ */
+$messages['fo'] = array(
+ 'captcha-createaccount' => 'Sum ein vernd ímóti sjálvvirknum spam, er neyðugt hjá tær at skriva inn tey orð, sum koma fyri á myndini fyri at stovna eina kontu: <br />([[Special:Captcha/help|Hvat er hetta?]])',
+ 'captchahelp-title' => 'Captcha hjálp',
+);
+
+/** French (Français)
+ * @author Crochet.david
+ * @author Grondin
+ * @author IAlex
+ * @author Meithal
+ * @author PieRRoMaN
+ * @author Seb35
+ * @author Sherbrooke
+ * @author Urhixidur
+ * @author Verdy p
+ * @author Wyz
+ * @author Zetud
+ */
+$messages['fr'] = array(
+ 'captcha-edit' => 'Pour modifier cette page, veuillez calculer l’opération simple ci-dessous et en inscrire le résultat dans le champ ([[Special:Captcha/help|plus d’informations]]) :',
+ 'captcha-desc' => 'Offre des techniques CAPTCHA pour prétéger contre le spam et la découverte des mots de passe par essais multiples',
+ 'captcha-addurl' => 'Votre modification inclut de nouveaux liens externes.
+Pour nous aider dans la protection contre le pourriel automatisé, veuillez calculer l’opération simple ci-dessous et en inscrire le résultat dans le champ ([[Special:Captcha/help|plus d’informations]]) :',
+ 'captcha-badlogin' => 'Afin de nous aider à prévenir le cassage des mots de passe par des automates, veuillez calculer l’opération simple ci-dessous et en inscrire le résultat dans le champ ([[Special:Captcha/help|plus d’informations]]) :',
+ 'captcha-createaccount' => 'Afin de nous aider à lutter contre les créations automatiques de comptes, veuillez calculer l’opération simple ci-dessous et en inscrire le résultat dans le champ ([[Special:Captcha/help|plus d’informations]]) :',
+ 'captcha-createaccount-fail' => 'Code de confirmation erroné ou manquant.',
+ 'captcha-create' => 'Pour créer la page, veuillez calculer l’opération simple ci-dessous et en inscrire le résultat dans le champ ([[Special:Captcha/help|plus d’informations]]) :',
+ 'captcha-sendemail' => 'Afin de nous aider à prévenir le spam automatique, veuillez calculer l’opération simple ci-dessous et en inscrire le résultat dans le champ ([[Special:Captcha/help|plus d’informations]]) :',
+ 'captcha-sendemail-fail' => 'Code de confirmation incorrect ou manquant.',
+ 'captcha-disabledinapi' => "Cette action requiert un captcha, donc elle ne peut pas être effectuée via l'API.",
+ 'captchahelp-title' => 'Aide sur le captcha',
+ 'captchahelp-cookies-needed' => "Il vous faudra autoriser les témoins (''cookies'') de votre navigateur pour que cela fonctionne.",
+ 'captchahelp-text' => 'Les sites web qui acceptent des contributions du public, tels que ce wiki, sont souvent victimes de spammeurs qui utilisent des outils automatisés pour placer de nombreux liens vers leurs sites.
+Même si cette pollution peut être effacée, elle n’en reste pas moins irritante.
+
+Parfois, particulièrement lors de l’ajout de nouveaux liens externes dans une page, le wiki peut vous montrer une image d’un texte embrouillé, déformé ou coloré et vous demander de taper les mots indiqués.
+Cette tâche étant difficile à accomplir de façon automatisée, cela permet à la plupart des humains de réaliser leurs contributions tout en stoppant la plupart des spammeurs et autres attaquants robotisés.
+
+Malheureusement, cette solution peut gêner les utilisateurs malvoyants ou qui utilisent un navigateur en texte seul ou vocal. Nous ne disposons pas d’alternative audio pour l’instant.
+Veuillez contacter [[{{MediaWiki:Grouppage-sysop}}|les administrateurs du site]] si cela vous empêche de façon inattendue de faire des contributions légitimes.
+
+Cliquez sur le bouton « Précédent » de votre navigateur pour revenir à la page de modification.',
+ 'captcha-addurl-whitelist' => ' #<!-- laissez cette ligne exactement telle quelle --><pre>
+# La syntaxe est la suivante :
+# * Tout caractère depuis « # » jusqu’à la fin de la ligne est interprété comme un commentaire.
+# * Toute ligne non vide est un fragment d’expression rationnelle qui ne correspondra qu’aux hôtes dans les liens hypertextes.
+ #</pre><!-- laissez cette ligne exactement telle quelle -->',
+ 'right-skipcaptcha' => 'Réaliser des actions qui déclenchent un captcha sans avoir à passer celui-ci',
+);
+
+/** Franco-Provençal (Arpetan)
+ * @author ChrisPtDe
+ */
+$messages['frp'] = array(
+ 'captcha-edit' => 'Por changiér ceta pâge, volyéd calcular l’opèracion simpla ce-desot et pués nen buchiér lo rèsultat dens la bouèta ([[Special:Captcha/help|més d’enformacions]]) :',
+ 'captcha-desc' => 'Semond des tècniques CAPTCHA por protègiér contre lo spame et la dècuvèrta des mots de pâssa per un mouél de tentatives.',
+ 'captcha-addurl' => 'Voutron changement encllut de lims de defôr novéls.
+Por nos édiér a combatre contre lo spame ôtomatisâ, volyéd calcular l’opèracion simpla ce-desot et pués nen buchiér lo rèsultat dens la bouèta ([[Special:Captcha/help|més d’enformacions]]) :',
+ 'captcha-badlogin' => 'Por nos édiér a combatre contre lo piratâjo ôtomatisâ de mots de pâssa, volyéd calcular l’opèracion simpla ce-desot et pués nen buchiér lo rèsultat dens la bouèta ([[Special:Captcha/help|més d’enformacions]]) :',
+ 'captcha-createaccount' => 'Por nos édiér a combatre contre les crèacions ôtomatisâs de comptos, volyéd calcular l’opèracion simpla ce-desot et pués nen buchiér lo rèsultat dens la bouèta ([[Special:Captcha/help|més d’enformacions]]) :',
+ 'captcha-createaccount-fail' => 'Code de confirmacion fôx ou ben manquent.',
+ 'captcha-create' => 'Por fâre ceta pâge, volyéd calcular l’opèracion simpla ce-desot et pués nen buchiér lo rèsultat dens la bouèta ([[Special:Captcha/help|més d’enformacions]]) :',
+ 'captchahelp-title' => 'Éde sur lo captch·a',
+ 'captchahelp-cookies-needed' => "Vos fôdrat ôtorisar los tèmouens (''cookies'') de voutron navigator por que cen fonccione.",
+ 'captchahelp-text' => 'Los setos vouèbe qu’accèptont des contribucions du publico, coment ceti vouiqui, sont sovent victimos de spamors qu’utilisont des outils ôtomatisâs por betar tot plen de lims de vers lors setos.
+Mémo se celos lims de spame pôvont étre suprimâs, nen réstont pas muens una nuésence visibla.
+
+Des côps, particuliérement pendent l’aponsa de lims de defôr novéls dens una pâge, lo vouiqui vos pôt montrar una émâge d’un tèxto colorâ, dèformâ ou ben tordu et pués vos demandar de buchiér los mots montrâs.
+Mâlésiê a fâre de façon ôtomatisâ cél travâly, cen pèrmèt a la plepârt des homos de rèalisar lors contribucions tot en empachient la plepârt des spamors et des ôtros ataquents robotisâs.
+
+Mâlherosament, ceta solucion pôt gênar los utilisators mâl-veyents ou qu’utilisont un navigator en tèxto solèt ou ben vocal.
+Por lo moment, nos avens gins d’altèrnativa ôdiô.
+Vos volyéd veriér vers los [[{{MediaWiki:Grouppage-sysop}}|administrators du seto]] se cen vos empache de façon emprèvua de fâre des contribucions lèg·itimes.
+
+Clicâd sur lo boton « Devant » de voutron navigator por tornar a la bouèta d’èdicion.',
+ 'captcha-addurl-whitelist' => ' #<!-- lèssiéd ceta legne justo d’ense --> <pre>
+# La sintaxa est ceta :
+# * Tot caractèro dês « # » tant qu’a la fin de la legne est considèrâ coment un comentèro.
+# * Tota legne pas voueda est un bocon d’èxprèssion racionèla (*RegEx*) qu’analiserat ren que los hôtos dedens los lims hipèrtèxtos.
+ #</pre> <!-- lèssiéd ceta legne justo d’ense -->',
+ 'right-skipcaptcha' => 'Rèalisar des accions que dècllenchont un captch·a sen avêr a passar ceti',
+);
+
+/** Friulian (Furlan)
+ * @author Klenje
+ */
+$messages['fur'] = array(
+ 'captcha-edit' => 'Par cambiâ cheste pagjine, tu âs di risolvi cheste facile some e inserî la rispueste inte casele ([[Special:Captcha/help|altris informazions]]):',
+ 'captcha-addurl' => 'Il to cambiament al inclût gnûfs leams esternis.
+Par judânus cuintri la creazion automatiche di spam, tu âs di risolvi cheste facile some e inserî la rispueste inte casele ([[Special:Captcha/help|altris informazions]]):',
+ 'captcha-badlogin' => 'Par judânus cuintri dai atacs automotics a lis peraulis clâfs, tu âs di risolvi cheste facile some e inserî la rispueste inte casele ([[Special:Captcha/help|altris informazions]]):',
+ 'captcha-createaccount-fail' => 'Il codiç di control al mancje o nol è just.',
+ 'captcha-create' => 'Par creâ cheste pagjine, tu âs di risolvi cheste facile some e inserî la rispueste inte casele ([[Special:Captcha/help|altris informazions]]):',
+);
+
+/** Western Frisian (Frysk)
+ * @author Snakesteuben
+ */
+$messages['fy'] = array(
+ 'captcha-addurl' => 'Jo hawwe keppelings om utens oanpast/taheakke. As ekstra beskerming tsjin automatysk oanmakke reklame (SPAM) wurdt jo frege it antwurd op de ûndersteande som te jaan ([[Special:Captcha/help|meer ynformaasje]]):',
+ 'captcha-createaccount' => 'As beskerming tsjin it automatysk oanmeitsjen fan meidochnammen wurdt jo frege it antwurd op de ûndersteande som te jaan ([[Special:Captcha/help|meer ynformaasje]]):',
+ 'captcha-createaccount-fail' => 'It antwurd op de som kloppet net.',
+ 'captcha-create' => 'Om de side oan te meitsjen wurdt jo frege it antwurd op de ûndersteande som te jaan ([[Special:Captcha/help|meer ynformaasje]]).',
+ 'captchahelp-title' => 'Lettertoets-help',
+ 'captchahelp-text' => "Websteeën dêr't it publyk op skriuwe kin, lykas dizze {{SITENAME}}-wiki, kinne lêst hawwe fan lju dy't automatysk keppelings oan de websiden tafoegje. Op dizze wiki kinne sokke feroarings maklik weromset wurde, mar dat nimt al tiid dy't ek oars brûkt wurde kin.
+
+By it oanmelden as meidogger, en fierders benammen at jo keppelings om utens oan in side tafoegje, kinne jo fan de wiki in lettertoets krije. De wiki lit dan kleurde of ferwrongen letters sjen, en jo wurdt frege dy oer te tikken. Om't dit net maklik automatisearre wurde kin, hâldt dit it automatysk tafoegjen tsjin. It spitegernôch ek in lytse lêst foar de meidoggers.
+
+In probleem dêr't noch gjin oplossing foar is it dat it in tûkelteam is foar minsken dy't net goed sjen kinne of dy't in tekst-blêder of lûd-blêder brûke. Hjir soe in lûd-ferzje foar komme moatte, mar dy is der noch net. Oerlis mei in behearder at dit foar jo problemen jout.
+
+Gean tebek mei de tebek-knop fan jo blêder.",
+);
+
+/** Irish (Gaeilge)
+ * @author Alison
+ */
+$messages['ga'] = array(
+ 'captcha-edit' => 'Tá naisc URL nua san athrú seo atá tú ar tí a dhéanamh; mar chosaint in éadan turscair uathoibrithe, caithfidh tú an suim shimplí a réitigh agus a ionchur: <br />([[Special:Captcha/help|Céard é seo?]])',
+ 'captcha-addurl' => 'Tá naisc URL nua san athrú seo atá tú ar tí a dhéanamh; mar chosaint in éadan turscair uathoibrithe, caithfidh tú na focail san íomhá seo a ionchur: <br />([[Special:Captcha/help|Céard é seo?]])',
+ 'captcha-createaccount' => 'Mar chosaint in éadan turscair uathoibrithe, caithfidh tú na focail san íomhá seo a ionchur chun cuntas a chlárú: <br />([[Special:Captcha/help|Céard é seo?]])',
+ 'captcha-createaccount-fail' => 'Ní raibh an cód deimhnithe ceart sa bhosca, nó ní raibh aon chód ann ar chor ar bith.',
+ 'captcha-create' => 'Tá naisc URL nua san athrú seo atá tú ar tí a dhéanamh; mar chosaint in éadan turscair uathoibrithe, caithfidh tú na focail san íomhá seo a ionchur: <br />([[Special:Captcha/help|Céard é seo?]])',
+ 'captchahelp-title' => 'Cabhair maidir le Captcha',
+);
+
+/** Galician (Galego)
+ * @author Alma
+ * @author Toliño
+ * @author Xosé
+ */
+$messages['gl'] = array(
+ 'captcha-edit' => 'Para editar esta páxina, resolva a suma que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):',
+ 'captcha-desc' => 'Proporciona CAPTCHA como protección fronte ao spam e ao descubrimento de contrasinais',
+ 'captcha-addurl' => 'A súa edición inclúe novas ligazóns externas.
+Para contribuír na protección contra as ferramentas de publicación automática de ligazóns publicitarias, resolva a suma que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):',
+ 'captcha-badlogin' => 'Para contribuír a que non se descubran os contrasinais por medios automáticos, resolva a suma que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):',
+ 'captcha-createaccount' => 'Para contribuír contra a creación automatizada de contas, resolva a suma que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):',
+ 'captcha-createaccount-fail' => 'Falta o código de confirmación ou é incorrecto.',
+ 'captcha-create' => 'Para crear a páxina, resolva a suma que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):',
+ 'captcha-sendemail' => 'Para contribuír na protección contra o spam automatizado, resolva a suma que aparece a continuación e introduza a resposta na caixa ([[Special:Captcha/help|máis información]]):',
+ 'captcha-sendemail-fail' => 'Falta o código de confirmación ou é incorrecto.',
+ 'captcha-disabledinapi' => 'Esta acción necesita o captcha, polo que non se pode realizar a través da API.',
+ 'captchahelp-title' => 'Axuda acerca do captcha',
+ 'captchahelp-cookies-needed' => 'Necesita ter as cookies habilitadas no seu navegador para que funcione.',
+ 'captchahelp-text' => "'''CAPTCHA''' (acrónimo de \"'''C'''ompletely '''A'''utomated '''P'''ublic '''T'''uring test to tell '''C'''omputers and '''H'''umans '''A'''part\") é unha proba de autenticación do tipo desafío-resposta usado nos contornos informáticos para distinguir usuarios humanos de máquinas.
+
+Os sitios web que aceptan publicar as contribucións dos usuarios, coma este wiki, sofren, con frecuencia, o abuso por parte de ''spammers'' que usan ferramentas que automatizan a inclusión de lixo en forma de ligazóns publicitarias, nunha chea de páxinas, en pouco tempo.
+Mentres as devanditas ligazóns non son eliminadas supoñen unha molestia e unha perda de tempo.
+
+En ocasións, en particular cando engada algunha nova ligazón externa, o wiki pode amosar unha imaxe dun texto coloreado e distorsionado e pedirlle que introduza as palabras amosadas.
+Como esta tarefa é difícil de automatizar, permite distinguir entre persoas e robots e dificulta os ataques automatizados dos ''spammers''.
+
+Por desgraza, isto é un inconveniente para aqueles usuarios con dificultades de visión ou que utilicen navegadores de texto ou navegadores baseados en sistemas de voz.
+Polo de agora non dispoñemos dunha alternativa de son.
+Por favor, contacte cun [[{{MediaWiki:Grouppage-sysop}}|administrador do sitio]] para solicitar axuda se o sistema lle impide rexistrarse para facer contribucións lexítimas.
+
+Prema no botón \"atrás\" do seu navegador para volver á páxina de edición.",
+ 'captcha-addurl-whitelist' => ' #<!-- Deixe esta liña tal e como está --> <pre>
+# A sintaxe é a seguinte:
+# * Todo o que vaia despois dun carácter "#" ata o final da liña é un comentario
+# * Toda liña que non estea en branco é un fragmento de expresión regular que só coincide con dominios dentro de enderezos URL
+ #</pre> <!-- Deixe esta liña tal e como está -->',
+ 'right-skipcaptcha' => 'Levar a cabo as accións que requiren captcha sen ter que introducilo',
+);
+
+/** Ancient Greek (ἈÏχαία ἑλληνικὴ)
+ * @author Omnipaedista
+ */
+$messages['grc'] = array(
+ 'captchahelp-title' => 'Βοήθεια πεÏὶ τοῦ captcha',
+);
+
+/** Swiss German (Alemannisch)
+ * @author Als-Holder
+ * @author Melancholie
+ */
+$messages['gsw'] = array(
+ 'captcha-edit' => 'Zum d Syte bearbeite lees die Rächenufgab un trag s Ergebnis in s Fäld unten yy. [[Special:Captcha/help|(Frogen oder Probläm?)]]',
+ 'captcha-desc' => 'Stellt CAPTCHA-Tächnike zum Schutz vor Spam un em Rote vu Passwerter z Verfiegig',
+ 'captcha-addurl' => 'In Dyynere Bearbeitig het s neiji externi Gleicher.
+Zum Schutz vor automatisiertem Spamming lees die Rächenufgab un trag s Ergebnis in s Fäld unten yy. Druck drno nomol uf „Syte spychere“. [[Special:Captcha/help|(Frogen oder Probläm?)]]',
+ 'captcha-badlogin' => 'Zum Schutz vor ere Kompromittierig vu Dyynem Benutzerkonto lees die Rächenufgab un trag s Ergebnis in s Fäld unten yy [[Special:Captcha/help|(Frogen oder Probläm?)]]:',
+ 'captcha-createaccount' => 'Zum Schutz vor automatisiertem Aalege vu Benutzerkonte lees die Rächenufgab un trag s Ergebnis in s Fäld unten yy. [[Special:Captcha/help|(Frogen oder Probläm?)]]',
+ 'captcha-createaccount-fail' => 'Bestätigungscode isch falsch oder fählt.',
+ 'captcha-create' => 'Zum d Syten aalege lees die Rächenufgab un trag s Ergebnis in s Fäld unten yy. [[Special:Captcha/help|(Frogen oder Probläm?)]]',
+ 'captcha-sendemail' => '
+As Schutz gege e automatischs Spamming, lees die Rächenufgab un trag s Ergebnis in s Fäld unten yy ([[Special:Captcha/help|meh Informatione]]):',
+ 'captcha-sendemail-fail' => 'Bestätigungscode isch falsch oder fählt.',
+ 'captcha-disabledinapi' => 'Die Aktion brucht e Captcha. Si cha nit iber d API uusgfiert wäre.',
+ 'captchahelp-title' => 'Captcha-Hilf',
+ 'captchahelp-cookies-needed' => "'''Wichtiger Hiiwyys:''' Im Browser mien Cookiers erlaubt syy.",
+ 'captchahelp-text' => 'Internetaagebot, wu uf sin fir Byytreg vu jedem, wie z. B. des Wiki, wäre vyylmol vu Spammer missbruucht, wu ihri Gleicher automatisch uf vyylene Netzsyte platziere. Die Spam-Gleicher cha mer wider useneh, si stere aber zimli un nämme Arbetszyt in Aaspruch.
+
+In e Teil Fäll, v. a. wänn neiji Netzgleicher in e Syte dryygfiegt wäre, cha s syy, ass des Wiki derno ne Bild mit eme farbige un verzerrte Täxt aazeigt un dezue ufforderet, di aazeigte Werte yyzgee. Wel sonigi Ufgabe nit automatische chenne usgfiert wäre, cha mer eso di meischte Spammer, wu mit automatische Wärchzyyg schaffe, ufhalte, aber normali Benutzer chenne ihri Byytreg einewäg yygee.
+
+Leider cha des derzue fiere, ass Lyt Probläm iberchemme, wu ne yygschränkti Sähfähigkeit oder e Browser bruche, wu täxt- oder sprochbasiert isch.
+Im Momänt hän mir kei Audioalternative z Verfiegig.
+Bitte nimm Kontakt uf zum [[{{MediaWiki:Grouppage-sysop}}|Syteadministrator]] fir Unterstitzig wänn des Di uuerwartet abhaltet vu berächtigte Byyträg.
+
+Ins Bearbeitigsfänschter chunnt mer derno eifach wider mit em „Zruck“-Chnopf.',
+ 'captcha-addurl-whitelist' => ' #<!-- Die Zyyle derf nit gänderet wäre! --> <pre>
+# Syntax:
+# * Alles vun eme #-Zeiche bis zum Änd vu dr Zyyle isch e Kommentar
+# * Jedi nit-lääri Zyyle isch e Regex-Fragment, wu gegeniber dr dr Hostnäme vun ere URL prieft wird
+ #</pre> <!-- Die Zyyle derf nit gänderet wäre! -->',
+ 'right-skipcaptcha' => 'Iberspringe vu dr Captcha-Yygab',
+);
+
+/** Gujarati (ગà«àªœàª°àª¾àª¤à«€)
+ * @author Ashok modhvadia
+ * @author Dsvyas
+ */
+$messages['gu'] = array(
+ 'captcha-edit' => 'આ લેખમાં ફેરફાર કરવા માટે નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજà«àª¨àª¾ ખાનામાં લખો ([[Special:Captcha/help|more info]]):',
+ 'captcha-desc' => 'સાદà«àª‚ કૈપà«àªšàª¾ અમલીકરણ',
+ 'captcha-addurl' => 'તમે કરેલા ફેરફારોમાં નવી બાહà«àª¯ કડીઓ સામેલ છે. સà«àªµàªšàª¾àª²àª¿àª¤ સà«àªªà«‡àª®/સà«àªªàª¾àª®(spam) થી બચવા માટે નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજà«àª¨àª¾ ખાનામાં લખો
+([[Special:Captcha/help|more info]]):',
+ 'captcha-badlogin' => 'આપોઆપ થતી ગà«àªªà«àª¤àª¸àª‚જà«àªžàª¾àª¨à«€ ચોરી (password cracking)થી બચાવવા માટે નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજà«àª¨àª¾ ખાનામાં લખો ([[Special:Captcha/help|more info]]):',
+ 'captcha-createaccount' => 'આપોઆપ નવા ખાતા ખà«àª²àª¤àª¾ રોકવા માટે નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજà«àª¨àª¾ ખાનામાં લખો',
+ 'captcha-createaccount-fail' => 'ખોટી અથવા ખૂટતી પà«àª·à«àªŸàª¿ સંજà«àªžàª¾',
+ 'captcha-create' => 'નવà«àª‚ પાનà«àª‚ બનાવવા માટે નીચે આપેલા સરળ દાખલાનો જવાબ તેની બાજà«àª¨àª¾ ખાનામાં લખો ([[Special:Captcha/help|more info]]):',
+ 'captchahelp-title' => 'કેપà«àªŸà«àªšàª¾/કેપà«àªšàª¾ (Captcha) મદદ',
+ 'captchahelp-cookies-needed' => 'આ વà«àª¯àªµàª¸à«àª¥àª¿àª¤ રીતે જોઇ શકાય તે માટે તમારા બà«àª°àª¾àª‰àªàª°àª®àª¾àª‚ કà«àª•à«€àª àªàª¨à«‡àª¬àª² કરેલી હોવી જોઇશે.',
+ 'captchahelp-text' => "આપણી વિકિ જેવી વૅબ સાઇટો કે જે લોકોને યોગદાન કરવાની પરવાનગી આપે છે, તેમનો સà«àªªàª¾àª®àª°à«‹ દà«àªµàª¾àª°àª¾ દà«àª°à«‚પયોગ થતો આવà«àª¯à«‹ છે. આવા સà«àªªàª¾àª®àª°à«‹ તેમની કડીઓ àªàª• સાથે અનેક વૅબ સાઇટો પર મà«àª•àªµàª¾ માટે સà«àªµàªšàª¾àª²àª¿àª¤ સાધનો વાપરે છે. આવી કડીઓ ખરેખર àªàª• દૂષણ છે અને તેને દૂર કરવાના ઉપાય કરવા જોઇàª.
+
+કà«àª¯àª¾àª°à«‡àª•, ખાસ કરીને જà«àª¯àª¾àª°à«‡ તમે તમારા લેખમાં બાહà«àª¯ કડી ઉમેરતા હોવ તà«àª¯àª¾àª°à«‡, વિકિ તમને àªàª• રંગીન કે તà«àªŸà«‡àª²àª¾-ફà«àªŸà«‡àª²àª¾ અકà«àª·àª°à«‹ કે શબà«àª¦à«‹àª¨à«àª‚ ચિતà«àª° બતાવે અને તેમા વંચાતા શબà«àª¦à«‹ બાજà«àª¨àª¾àª‚ ખાનામાં લખવા માટે પà«àª›à«‡ àªàªµà«àª‚ બને. આનà«àª‚ કારણ ઠછે કે આ àªàª• àªàªµà«€ પદà«àª§àª¤àª¿ છે જે સà«àªµàªšàª¾àª²àª¿àª¤ રીતે કરવી લગભગ અશકà«àª¯ છે, અને ફકà«àª¤ વà«àª¯àª•à«àª¤àª¿àª—ત રીતે જ થઇ શકે છે, જે સà«àªªàª¾àª®àª°à«‹ અને અનà«àª¯ ઘà«àª¸àª£àª–ોરો ના હà«àª®àª²àª¾àª¨à«‡ ખાળે છે.
+
+કમભાગà«àª¯à«‡ આ પદà«àª§àª¤àª¿, àªàªµàª¾ લોકોને તકલિફ આપે તેમ છે જેઓની દૃષà«àªŸàª¿ નબળી છે અથવાતો જેઓ વાચા આધારીત કે સાદા બà«àª°àª¾àª‰àªàª°àª¨à«‹ ઉપયોગ કરે છે. હાલમા અમારી પાસે આવા ચિતà«àª°à«‹àª¨à«€ વાચા આધારિત વà«àª¯àªµàª¸à«àª¥àª¾ નથી. જો આ કારણે આપ કોઇ લેખમાં પà«àª°àª¦àª¾àª¨ ન કરી શકતા હોવ તો વધૠસહાય માટે કૃપા કરી પà«àª°àª¬àª‚ધકનો સંપરà«àª• સાધો.
+
+લેખમા ફેરફાર કરવાના પાના ઉપર પાછા ફરવા માટે આપના બà«àª°àª¾àª‰àªàª°àª¨àª¾ 'બેક' બટન ઉપર કà«àª²àª¿àª• કરો.",
+ 'captcha-addurl-whitelist' => ' #<!-- આ લીટીને જેમ છે તેમ જ રહેવા દો --> <pre>
+# સીનà«àªŸà«‡àª•à«àª¸ (Syntax) આ પà«àª°àª®àª¾àª£à«‡ છે :
+# * "#" સંજà«àªžàª¾àª¥à«€ શરૂ કરીને લીટીના અંત સà«àª§à«€àª¨à«àª‚ વરà«àª£àª¨ àªàª• ટીપà«àªªàª£à«€ છે
+# * ખાલી ન હોય તેવી દરેક લીટી રેજેકà«àª¸àª¨à«‹ ભાગ છે, જે ફકà«àª¤ URLsમાંના હોસà«àªŸ સાથે જ મેળ ખાશે
+ #</pre> <!-- આ લીટીને જેમ છે તેમ જ રહેવા દો -->',
+ 'right-skipcaptcha' => 'કૈપà«àªšàª¾ માધà«àª¯àª®àª®àª¾àª‚ ગયા વિના કૈપà«àªšàª¾ કારà«àª¯àª¾àª¨à«àªµàª¯àª¨ કà«àª°àª¿àª¯àª¾ અમલમાં મà«àª•à«‹',
+);
+
+/** Hebrew (עברית)
+ * @author Amire80
+ * @author Rotem Liss
+ * @author Rotemliss
+ * @author YaronSh
+ */
+$messages['he'] = array(
+ 'captcha-edit' => 'כדי לערוך ×ת הדף, ×× × ×¤×ª×¨×• ×ת תרגיל החיבור הפשוט שלהלן והקלידו ×ת התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):',
+ 'captcha-desc' => 'מתן טכניקות CAPTCHA להגנה נגד זיבול וניחוש ססמ×ות',
+ 'captcha-addurl' => '×¢×¨×™×›×ª×›× ×›×•×œ×œ×ª ×§×™×©×•×¨×™× ×—×™×¦×•× ×™×™× ×—×“×©×™×. ×›×”×’× ×” מפני ספ×× ×וטומטי, ×× × ×¤×ª×¨×• ×ת תרגיל החיבור הפשוט שלהלן והקלידו ×ת התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):',
+ 'captcha-badlogin' => '×›×”×’× ×” מפני פריצת סיסמ×ות ×וטומטית, ×× × ×¤×ª×¨×• ×ת תרגיל החיבור הפשוט שלהלן והקלידו ×ת התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):',
+ 'captcha-createaccount' => '×›×”×’× ×” מפני יצירת חשבונות ×וטומטית, ×× × ×¤×ª×¨×• ×ת תרגיל החיבור הפשוט שלהלן והקלידו ×ת התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):',
+ 'captcha-createaccount-fail' => '×œ× ×”×§×œ×“×ª× ×§×•×“ ×ישור, ×ו ×©×”×•× ×©×’×•×™.',
+ 'captcha-create' => 'כדי ליצור ×ת הדף, ×× × ×¤×ª×¨×• ×ת תרגיל החיבור הפשוט שלהלן והקלידו ×ת התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):',
+ 'captcha-sendemail' => 'כדי לעזור ×œ×”×™×œ×—× ×‘×ž×¦×™×¤×™ זבל ×וטומטיי×, עליך לחשב ×ת ×”×¡×›×•× ×”×¤×©×•×˜ שלהלן ולהזין ×ת התוצ××” בתיבה ([[Special:Captcha/help|מידע נוסף]]):',
+ 'captcha-sendemail-fail' => 'קוד ×”×ישור שגוי ×ו חסר.',
+ 'captcha-disabledinapi' => 'פעולה זו דורשת פתרון CAPTCHA ×•×œ× × ×™×ª×Ÿ לבצע ×ותה דרך ×”Ö¾API.',
+ 'captchahelp-title' => 'עזרה במערכת CAPTCHA',
+ 'captchahelp-cookies-needed' => '×¢×œ×™×›× ×œ×”×¤×¢×™×œ ×ת תכונת העוגיות (cookies) בדפדפן ×©×œ×›× ×›×“×™ שזה יעבוד.',
+ 'captchahelp-text' => '×¤×¢×ž×™× ×¨×‘×•×ª ×ž× ×¦×œ×™× ×ž×¤×™×¦×™ תוכן זבל ("ספ××") ××ª×¨×™× ×©×ž×§×‘×œ×™× ×ª×•×›×Ÿ מהציבור, כמו ×תר הוויקי ×”×–×”, כדי ×œ×¤×¨×¡× ×ת ×”×§×™×©×•×¨×™× ×©×œ×”× ×œ××ª×¨×™× ×¨×‘×™× ×‘×ינטרנט, ב×מצעות ×›×œ×™× ×וטומטיי×.
+××ž× × × ×™×ª×Ÿ להסיר ×ת קישורי הספ×× ×”×œ×œ×•, ×ך ×”× ×ž×”×•×•×™× ×ž×˜×¨×“ משמעותי.
+
+לעתי×, בעיקר כש××ª× ×ž×›× ×™×¡×™× ×§×™×©×•×¨×™ ×ינטרנט ×—×“×©×™× ×œ×ª×•×š עמוד, ×תר הוויקי עשוי להר×ות ×œ×›× ×ª×ž×•× ×” של טקסט צבעוני ×ו ×ž×¢×•×§× ×•×œ×‘×§×© ×ž×›× ×œ×”×§×œ×™×“ ×ת ×”×ž×™×œ×™× ×”×ž×•×¦×’×•×ª.
+כיוון שזו משימה שקשה לבצעה בצורה ×וטומטית, הדבר ×™×פשר לבני־××“× ××ž×™×ª×™×™× ×œ×©×œ×•×— ×ת הדפי×, ×ך יעצור ×ת רוב מפיצי תוכן הזבל ×•×”×ž×ª×§×™×¤×™× ×”×¨×•×‘×•×˜×™×™× ×”×חרי×.
+
+לרוע המזל, הדבר עשוי ×œ×’×¨×•× ×œ××™ נוחות ×œ×ž×©×ª×ž×©×™× ×¢× ×“×¤×“×¤×Ÿ בגרסה מוגבלת, ×ו ×©×ž×©×ª×ž×©×™× ×‘×“×¤×“×¤× ×™× ×ž×‘×•×¡×¡×™ טקסט ×ו דיבור.
+כרגע, ×ין לנו חלופה קולית זמינה.
+×× × ×¦×¨×• קשר ×¢× [[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] כדי לקבל עזרה ×× ×”×ž×¢×¨×›×ª מונעת ×ž×›× ×‘×ופן בלתי צפוי לבצע עריכות לגיטימיות.
+
+לחצו על הכפתור \'חזור\' בדפדפן ×©×œ×›× ×›×“×™ לחזור לדף העריכה.',
+ 'captcha-addurl-whitelist' => ' #<!-- יש להש×יר שורה זו בדיוק כפי ×©×”×™× ×›×ª×•×‘×” --> <pre>
+# זהו תחביר ההודעה:
+# * כל דבר בשורה שנכתב ל×חר סימן "#" ×”×•× ×”×¢×¨×”
+# * כל שורה ×œ× ×¨×™×§×” ×”×™× ×‘×™×˜×•×™ רגולרי שית××™× ×œ××ª×¨×™× ×‘×›×ª×•×‘×•×ª URL
+ #</pre> <!-- יש להש×יר שורה זו בדיוק כפי ×©×”×™× ×›×ª×•×‘×” -->',
+ 'right-skipcaptcha' => 'ביצוע פעולות הדורשות פתרון CAPTCHA ×œ×œ× ×¦×•×¨×š בפתרונו',
+);
+
+/** Hindi (हिनà¥à¤¦à¥€)
+ * @author Kaustubh
+ * @author Shyam
+ * @author आलोक
+ */
+$messages['hi'] = array(
+ 'captcha-edit' => 'यह पनà¥à¤¨à¤¾ संपादित करने के लिये, नीचे दिये हà¥à¤ आसान राशि का जवाब दिये हà¥à¤ टेकà¥à¤¸à¥à¤Ÿà¤¬à¥‰à¤•à¥à¤¸à¤®à¥‡à¤‚ लिखें ([[Special:Captcha/help|अधिक ज़ानकारी]]):',
+ 'captcha-desc' => 'आसानसे कॅपचा (captcha) का इसà¥à¤¤à¥‡à¤®à¤¾à¤²',
+ 'captcha-addurl' => 'आपके बदलावोंमें नई बाहà¥à¤¯à¤•à¤¡à¤¼à¤¿à¤¯à¤¾à¤‚ हैं। अपने आप होने वाले सà¥à¤ªà¥…मसे बचने के लिये, नीचे दिये हà¥à¤ आसान राशि का जवाब दिये हà¥à¤ टेकà¥à¤¸à¥à¤Ÿà¤¬à¥‰à¤•à¥à¤¸à¤®à¥‡à¤‚ लिखें ([[Special:Captcha/help|अधिक ज़ानकारी]]):',
+ 'captcha-badlogin' => 'अपने आप होनेवाले कूटशबà¥à¤¦ के भेद से बचने के लिये, नीचे दिये हà¥à¤ आसान राशि का जवाब दिये हà¥à¤ टेकà¥à¤¸à¥à¤Ÿà¤¬à¥‰à¤•à¥à¤¸à¤®à¥‡à¤‚ लिखें ([[Special:Captcha/help|अधिक ज़ानकारी]]):',
+ 'captcha-createaccount' => 'अपने आप होने वाले सदसà¥à¤¯ पंजीकरण से बचने के लिये, नीचे दिये हà¥à¤ आसान राशि का जवाब दिये हà¥à¤ टेकà¥à¤¸à¥à¤Ÿà¤¬à¥‰à¤•à¥à¤¸à¤®à¥‡à¤‚ लिखें ([[Special:Captcha/help|अधिक ज़ानकारी]]):',
+ 'captcha-createaccount-fail' => 'गलत या खाली सहमती कोड।',
+ 'captcha-create' => 'यह पनà¥à¤¨à¤¾ बनाने के लिये, नीचे दिये हà¥à¤ आसान राशि का जवाब दिये हà¥à¤ टेकà¥à¤¸à¥à¤Ÿà¤¬à¥‰à¤•à¥à¤¸à¤®à¥‡à¤‚ लिखें ([[Special:Captcha/help|अधिक ज़ानकारी]]):',
+ 'captchahelp-title' => 'कॅपà¥à¤Ÿà¤šà¤¾ सहायता',
+ 'captchahelp-cookies-needed' => 'यह कारà¥à¤¯ करने के लिये आपने कूकीज (cookies) à¤à¤¨à¥‡à¤¬à¤² किया होना आवशà¥à¤¯à¤• हैं।',
+ 'captchahelp-text' => "इस विकि जैसे जालसà¥à¤¥à¤², जो जनता जनारà¥à¤¦à¤¨ से लेख सà¥à¤µà¥€à¤•à¤¾à¤° करते हैं, अकà¥à¤¸à¤° रदà¥à¤¦à¥€ काम करने वालों के फंदे में आ जाते हैं, जो सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤ यंतà¥à¤°à¥‹à¤‚ से कई सà¥à¤¥à¤²à¥‹à¤‚ पर अपनी कड़ियाठछापने की कोशिश करते हैं।
+यूठतो ये रदà¥à¤¦à¥€ कड़ियाठहटाई जा सकती हैं, पर फिर भी ये à¤à¤‚à¤à¤Ÿ तो खड़ा करती ही हैं।
+
+कà¥à¤› बार, खासकर जब किसी पनà¥à¤¨à¥‡ पृषà¥à¤  पर à¤à¤• नया जाल पता जोड़ा जाता है, तब विकी आपको à¤à¤• रंगीन या टेढ़े मेढ़े लेख की तसà¥à¤µà¥€à¤° दिखा के आपको उस तसà¥à¤µà¥€à¤° में लिखी सामगà¥à¤°à¥€ को पढ़ के टंकित करने को कह सकती है।
+à¤à¤¸à¥€ तसà¥à¤µà¥€à¤° को यंतà¥à¤° दà¥à¤µà¤¾à¤°à¤¾ पढ़ पाना मà¥à¤¶à¥à¤•à¤¿à¤² होता है, इसलिठइसके जरिठअधिकतर मानव अपने लेख छाप पाà¤à¤à¤—े और साथ ही अधितकर रदà¥à¤¦à¥€ वाले और यांतà¥à¤°à¤¿à¤• उपकरण नहीं छाप पाà¤à¤à¤—े।
+
+दà¥à¤°à¥à¤­à¤¾à¤—à¥à¤¯à¤µà¤¶ इससे सीमित चकà¥à¤·à¥-दृषà¥à¤Ÿà¤¿ वाले सदसà¥à¤¯à¥‹à¤‚ या पाठ-आधारित या वाचन-आधारित विचरकों का पà¥à¤°à¤¯à¥‹à¤— करने वाले सदसà¥à¤¯à¥‹à¤‚ को समसà¥à¤¯à¤¾ आती है।
+इस समय हमारे पास इसका शà¥à¤°à¤µà¥à¤¯ विकलà¥à¤ª उपलबà¥à¤§ नहीं है।
+यदि इसकी वजह से आपको वैध लेख लिखने में अवरोध आ रहा हो तो कृपया सहायता के लिठ[[{{MediaWiki:Grouppage-sysop}}|सà¥à¤¥à¤² पà¥à¤°à¤¬à¤‚धकों]] से संपरà¥à¤• करें।
+
+पनà¥à¤¨à¤¾ संपादन पर वापस जाने के लिठअपने विचरक पर 'à¤à¤• पृषà¥à¤  पीछे जाà¤à¤' वाली कà¥à¤‚जी का पà¥à¤°à¤¯à¥‹à¤— करें।",
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# इसकी रà¥à¤ªà¤°à¥‡à¤·à¤¾ इस पà¥à¤°à¤•à¤¾à¤° हैं:
+# * "#" से शà¥à¤°à¥ होनेवाली सभी लाईनें टिपà¥à¤ªà¤£à¥€à¤¯à¤¾à¤ हैं।
+# * हर अनà¥à¤¯ लाईन regex fragment हैं जो सिरà¥à¤« URL के होसà¥à¤Ÿà¤¸à¥â€Œ को जोडता हैं
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Captcha में जाये बिना Captcha का इसà¥à¤¤à¥‡à¤®à¤¾à¤² करने के लिये मजबूर करें',
+);
+
+/** Croatian (Hrvatski)
+ * @author Dalibor Bosits
+ * @author Dnik
+ * @author Ex13
+ * @author Herr Mlinka
+ * @author SpeedyGonsales
+ */
+$messages['hr'] = array(
+ 'captcha-edit' => 'Da uredite ovu stranicu, molimo riješite jednostavno zbrajanje ispod i unesite rezultat u rubriku ([[Special:Captcha/help|više informacija]]):',
+ 'captcha-desc' => 'Pruža CAPTCHA tehnike za zaštitu od neželjene pošte (spam-a) i pogađanja zaporke',
+ 'captcha-addurl' => 'Vaše uređivanje sadrži nove vanjske poveznice. Kao zaštitu od automatskog spama, trebate unijeti slova koja vidite na slici: <br />([[Special:Captcha/help|Pomoć?]])',
+ 'captcha-badlogin' => 'Da se sprijeÄi automatizirano pogaÄ‘anje lozinki,
+molimo zbrojite donje brojeve i upišite rezultat ([[Special:Captcha/help|pomoć]]):',
+ 'captcha-createaccount' => 'Kao zaÅ¡titu od automatskog spama, pri otvaranju raÄuna trebate unijeti slova koja vidite na slici: <br />([[Special:Captcha/help|Pomoć]])',
+ 'captcha-createaccount-fail' => 'Potvrdni kod je nepotpun ili netoÄan.',
+ 'captcha-create' => 'Vaše uređivanje sadrži nove vanjske poveznice. Kao zaštitu od automatskog spama, trebate unijeti slova koja vidite na slici: <br />([[Special:Captcha/help|Pomoć?]])',
+ 'captcha-sendemail' => 'Da bi ste nam pomogli protiv automatskog spama, molimo riješite jednostavan zadatak zbrajanja ispod i unesite rezultat u okvir ([[Special:Captcha/help|više informacija]]):',
+ 'captcha-sendemail-fail' => 'Potvrdni kod je nepotpun ili netoÄan.',
+ 'captcha-disabledinapi' => 'Ova akcija traži captchu, tako da se ne može izvršiti preko API-ja.',
+ 'captchahelp-title' => 'Antispam pomoć',
+ 'captchahelp-cookies-needed' => "Trebate imati ukljuÄene kolaÄiće (''cookies'') u vaÅ¡em web pregledniku za ovu funkciju.",
+ 'captchahelp-text' => "Internetske stranice koji prihvaćaju doprinose od javnosti, poput ovog wikija, Äesto zloupotrebljavaju spameri, koji koriste automatizirane alate pomoću kojih postavljaju svoje poveznice na mnoge stranice.
+Iako se te spam poveznice mogu uklanjati, one predstavljaju znaÄajne neugodnost pri radu.
+
+Ponekad, a naroÄito kad se dodaje web poveznica na stranicu, wiki može prikazati sliku obojenog ili iskrivljenog teksta uz zahtjev za unos prikazanih rijeÄi.
+Budući da je takvu radnju teÅ¡ko automatizirati, to će omogućiti pravim suradnicima njihov nastavak u pridonoÅ¡enju, dok će zaustaviti većinu spamera i robotskih napadaÄa.
+
+Na žalost, ovo može biti nepristupaÄno za suradnike koji koriste tekstualne klijene ili one glasovno bazirane. TrenutaÄno nemamo glasovnu podrÅ¡ku za ovo.
+Molimo obratite se [[{{MediaWiki:Grouppage-sysop}}|administratorima]] za pomoć, ukoliko Vas ovo ometa pri dodavanju važećih sadržaja.
+
+Pritisnite u svom pregledniku 'nazad' kako bi se vratili na ureÄ‘ivaÄ stranice.",
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Rabi se slijedeća sintaksa:
+# * Sve od "#" znaka do kraja linije je komentar
+# * Svaki neprazni redak je regularni izraz (regex) koji odgovara poslužitelju unutar URL-a
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Izvođenje akcija koje pokreću captcha bez prolaženja kroz captcha sustav',
+);
+
+/** Upper Sorbian (Hornjoserbsce)
+ * @author Michawiki
+ */
+$messages['hsb'] = array(
+ 'captcha-edit' => 'Zo by stronu wobdźěłaÅ‚, rozrisaj proÅ¡u slÄ›dowacy liÄenski nadawk a zapodaj wuslÄ›dk do kašćika ([[Special:Captcha/help|DalÅ¡e informacije]]):',
+ 'captcha-desc' => 'Staja CAPTCHA-techniki za škit přećiwo spamej a zhódowanju hesłow k dispoziciji',
+ 'captcha-addurl' => 'W twojej zmÄ›nje su nowe eksterne wotkazy. Jako Å¡kitna naprawa pÅ™ećiwo spamej dyrbiÅ¡ slÄ›dowacy nadawk wuliÄeć a wuslÄ›dk do kašćika zapisować. KlikÅ„ potom znowa na „SkÅ‚adowaćâ€.<br />
+[[Special:Captcha/help|(ÄŒehodla?)]]',
+ 'captcha-badlogin' => 'Zo by so awtomatiskemu zadobywanju do hesÅ‚ow zadźěwaÅ‚o, dyrbiÅ¡ slÄ›dowacy nadawk wuliÄeć a wuslÄ›dk do kašćika zapisować. [[Special:Captcha/help|(PraÅ¡enja abo problemy?)]]',
+ 'captcha-createaccount' => 'Jako Å¡kitna naprawa pÅ™ećiwo awtomatiskemu wutworjenju wužiwarskich kontow dyrbiÅ¡ slÄ›dowacy nadawk wuliÄeć. [[Special:Captcha/help|(PraÅ¡enja abo problemy?)]]',
+ 'captcha-createaccount-fail' => 'WopaÄny abo pobrachowacy wuslÄ›dk.',
+ 'captcha-create' => 'Zo by stronu wutworiÅ‚, rozrisaj proÅ¡u slÄ›dowacy liÄenski nadawk a zapodaj wuslÄ›dk do kašćika ([[Special:Captcha/help|DalÅ¡e informacije]]):',
+ 'captcha-sendemail' => 'Za Å¡kit pÅ™ećiwo awtomatiskemu spamowanju, rozrisaj proÅ¡u jednory liÄenski nadawk a zapodaj wotmoÅ‚wu do kašćika ([[Special:Captcha/help|dalÅ¡e informacije]]):',
+ 'captcha-sendemail-fail' => 'WopaÄny abo falowacy wobkrućenski kod.',
+ 'captcha-disabledinapi' => 'Tuta akcija wužaduje sej captcha, tohodla njeda so přez API wuwjesć.',
+ 'captchahelp-title' => 'Pomoc z captcha',
+ 'captchahelp-cookies-needed' => 'Dyrbiš placki (cookies) w swojim wobhladowaku zmóžnić.',
+ 'captchahelp-text' => 'WebsydÅ‚a, kotrež powÄ›sće wot kóždeho akceptuja, so Äasto wot spamarjow znjewužiwaja, kotÅ™iž swoje wotkazy awtomatisce na wjele sydÅ‚ach rozdźěleja. HaÄrunjež so tute spamwotkazy hodźa wotstronić, su wone njesnadne mjerzanje.
+
+Druhdy, wosebje, hdyž so nowe webwotkazy stronje přidawaja, móže so stać, zo pokazuje tutón wiki wobraz z barbnym abo skomolenym tekstom a će prosy, zo by pokazane słowa zapodał.
+Dokelž to je nadawk, kotryž hodźi so jenož ćežko awtomatizować, dowoluje to woprawdźitym wosobam swoje powěsći wotpósłać, mjeztym zo so najwjace spamarjow a druhich nadpadowacych botow blokuje.
+
+Bohužel móže to k wobćežnosćam za tutych wužiwarjow wjesć, kotrychž kmanosć widźenja je wobmjezowana abo kotÅ™iž wobhladowaki wužiwaja, kotrež na tekst abo rÄ›Äne wudawanje bazÄ›ruja.
+Tuchwilu njedisponujemy wo awdioalternatiwje.
+Prošu staj so z [[{{MediaWiki:Grouppage-sysop}}|administratorami sydła]] z prostwu wo pomoc do zwiska, jeli to će haći legitimne powěsće pósłać.
+
+Klikń na tłócatko "Wróćo" w swojim wobhladowaku, zo by so k editorej wróćił.',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Syntaks je slědowaca:
+# * WÅ¡o wot znamjeÅ¡ka "#" haÄ do kónca linky je komentar
+# * Kóžda popisana linka je fragment regex (regularneho wuraza) kotryž so z mjenom hosta wěsteje URL přirunuje
+
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Captcha pÅ™eskoÄić',
+);
+
+/** Haitian (Kreyòl ayisyen)
+ * @author Boukman
+ * @author Masterches
+ */
+$messages['ht'] = array(
+ 'captcha-edit' => 'Pou ou kapab modifye paj sa, nou mande w kalkile ti adisyon fasil sa epitou mete rezilta, repons ou an nan bwat ki bò kote l ([[Special:Captcha/help|konnen plis sou fonksyon sa]]):',
+ 'captcha-desc' => 'Yon enplemantasyon captcha senp',
+ 'captcha-addurl' => 'Edisyon ou an genyen nouvo lyen pou andeyò.
+Pou ede nou pwoteje sistèm an kont pouryèl, tanpri, fè ti adisyon fasil sa epi bay repons ou an nan bwat ([[Special:Captcha/help|plis èd sou fonksyon sa]]):',
+ 'captcha-badlogin' => 'Pou ede nou lite kont òdinatè ki ap krake, pirate mopas yo, tanpri rezoud ti adisyon fasil sa epi mete repons ou an nan bwat ([[Special:Captcha/help|konnen plis sou fonksyon sa]]):',
+ 'captcha-createaccount' => 'Pou ede nou lite kont kreyasyon kont otomatik yo, souple rezoud ti adisyon sa epi mete nan bwat an repons ou an ([[Special:Captcha/help|konnen plis sou fonksyon sa]]):',
+);
+
+/** Hungarian (Magyar)
+ * @author Dani
+ * @author Glanthor Reviol
+ */
+$messages['hu'] = array(
+ 'captcha-edit' => 'A lap szerkesztéséhez meg kell, hogy kérjünk, írd be a lenti dobozba az alábbi egyszerű összeadás eredményét ([[Special:Captcha/help|segítség]]):',
+ 'captcha-desc' => 'CAPTCHA-technológiák a spamek és a jelszókitalálási technikák ellen',
+ 'captcha-addurl' => 'Szerkesztésed új külső linket tartalmaz. A reklámokat elhelyező robotok kiszűrése érdekében meg kell, hogy kérjünk, írd be a lenti dobozba az alábbi matematikai művelet eredményét. ([[Special:Captcha/help|segítség]])',
+ 'captcha-badlogin' => 'Az automatikus jelszófeltörés kiszűrése érdekében meg kell, hogy kérjünk, írd be a lenti dobozba az alábbi egyszerű számtani művelet eredményét ([[Special:Captcha/help|segítség]]):',
+ 'captcha-createaccount' => 'A felhasználói fiókok automatizált létrehozásának kiszűrése érdekében meg kell, hogy kérjünk, írd be a lenti dobozba az alábbi egyszerű számtani művelet eredményét. ([[Special:Captcha/help|segítség]])',
+ 'captcha-createaccount-fail' => 'Hibás vagy hiányzó ellenőrző kód.',
+ 'captcha-create' => 'Az oldal elkészítéséhez meg kell, hogy kérjünk, írd be a lenti dobozba az alábbi egyszerű számtani művelet eredményét. ([[Special:Captcha/help|segítség]])',
+ 'captcha-sendemail' => 'Hogy segíts az automatizált spammelés elleni védekezésben, kérünk oldd meg az alábbi egyszerű számítást, és írd be az eredményt a szövegdobozba ([[Special:Captcha/help|segítség]]):',
+ 'captcha-sendemail-fail' => 'Hibás vagy hiányzó ellenőrző kód.',
+ 'captcha-disabledinapi' => 'Ez a művelet captcha megoldásához kötött, így nem lehet végrehajtani az API-n keresztül.',
+ 'captchahelp-title' => 'Captcha segítség',
+ 'captchahelp-cookies-needed' => 'Engedélyezned kell a böngésződben a sütiket.',
+ 'captchahelp-text' => 'Az olyan weboldalakat, amelyekre bárki írhat, gyakran támadják meg spammerek olyan eszközök felhasználásával, amelyek képesek automatikusan, emberi felügyelet nélkül elhelyezni egy linket sok különböző oldalon.
+
+Az ilyen linkek kézi eltávolítása rengeteg energiát emésztene fel, ezért néha, különösen ha egy külső linket teszel egy cikkbe, a wiki egy valamilyen módon eltorzított szöveget (captcha-t) jelenít meg, és arra kér, hogy gépeld be azt. Mivel ezt automatikusan nagyon nehéz megtenni, a valódi szerkesztők így könnyen megkülönböztethetőek a spammerek robotjaitól.
+
+Sajnos ez komoly kényelmetlenséget jelenthet azoknak a felhasználóknak, akik gyengén látnak, vagy szöveges/hang-alapú böngészőt használnak. Jelenleg nem tudunk hang-alapú alternatívával szolgálni; ha a captcha megakadályoz abban, hogy szerkeszd a wikit, vedd fel a kapcsolatot az [[{{MediaWiki:Grouppage-sysop}}|adminisztrátorokkal]].
+
+Ha a captcha megoldása helyett inkább visszatérnél a szöveg szerkesztéséhez, használd a böngésződ „vissza†gombját.',
+ 'captcha-addurl-whitelist' => ' #<!-- ezt a sort hagyd pontosan így --> <pre>
+# A szintaktika a következő:
+# * Minden „#†karakterrel kezdődő sor megjegyzés
+# * Minden nem üres sor egy reguláris kifejezés darabja, amely csak az URL-ekben található kiszolgálókra keres
+ #</pre> <!-- ezt a sort hagyd pontosan így -->',
+ 'right-skipcaptcha' => 'captcha átugrása',
+);
+
+/** Interlingua (Interlingua)
+ * @author McDutchie
+ */
+$messages['ia'] = array(
+ 'captcha-edit' => 'Pro modificar iste pagina, per favor resolve le simple summa hic infra e entra le responsa in le quadro ([[Special:Captcha/help|plus info]]):',
+ 'captcha-desc' => 'Forni technicas CAPTCHA de protection contra spam e discoperta de contrasignos',
+ 'captcha-addurl' => 'Tu modification include nove ligamines externe.
+Como protection contra le spam automatic, per favor resolve le simple summa hic infra e entra le resultato in le quadro ([[Special:Captcha/help|plus info]]):',
+ 'captcha-badlogin' => 'Como protection contra le piratage automatic de contrasignos, per favor resolve le simple summa hic infra e entra le resultato in le quadro ([[Special:Captcha/help|plus info]]):',
+ 'captcha-createaccount' => 'Como protection contra le creation automatic de contos, per favor resolve le simple summa hic infra e entra le resultato in le quadro ([[Special:Captcha/help|plus info]]):',
+ 'captcha-createaccount-fail' => 'Codice de confirmation incorrecte o mancante.',
+ 'captcha-create' => 'Pro crear le pagina, per favor resolve le simple summa hic infra e entra le resultato in le quadro ([[Special:Captcha/help|plus info]]):',
+ 'captcha-sendemail' => 'Como protection contra le spam automatic, per favor resolve le simple summa hic infra e entra le resultato in le quadro ([[Special:Captcha/help|plus info]]):',
+ 'captcha-sendemail-fail' => 'Codice de confirmation incorrecte o mancante.',
+ 'captcha-disabledinapi' => 'Iste action require un captcha, dunque illo non pote esser exequite per medio del API.',
+ 'captchahelp-title' => 'Adjuta super le captcha',
+ 'captchahelp-cookies-needed' => 'Tu debe haber le cookies activate in tu navigator a fin que isto pote functionar.',
+ 'captchahelp-text' => "Le sitos web que accepta contributiones del publico, como iste wiki, es frequentemente abusate per spammatores que usa instrumentos automatic pro publicar lor ligamines in multe sitos.
+Ben que iste ligamines spam pote esser eliminate, illos constitue un considerabile molestia.
+
+Alcun vices, specialmente quando tu adde nove ligamines web a un pagina, le wiki pote monstrar te un imagine de texto colorate o distorquite e demandar que tu entra le parolas monstrate.
+Post que isto es un carga difficile de automatisar, isto permittera al major parte del humanos real de facer lor contributiones, durante que le major parte del spammatores e altere attaccatores robotic es stoppate.
+
+Infelicemente isto pote incommodar le usatores con vision limitate o usante navigatores a base de texto o synthese vocal.
+Al momento nos non dispone de un alternativa audio.
+Per favor contacta le [[{{MediaWiki:Grouppage-sysop}}|administratores del sito]] pro assistentia si isto insperatemente te impedi de facer contributiones legitime.
+
+Clicca le button 'retro' in tu navigator pro retornar al pagina de modification.",
+ 'captcha-addurl-whitelist' => ' #<!-- non modificar in alcun modo iste linea --> <pre>
+# Le syntaxe es lo sequente:
+# * Toto a partir de un character "#" usque al fin del linea es un commento
+# * Omne linea non vacue es un fragmento regex applicabile solmente a nomines de host intra adresses URL
+ #</pre> <!-- non modificar in alcun modo iste linea -->',
+ 'right-skipcaptcha' => 'Executar le actiones que activarea le captcha sin deber passar per le captcha',
+);
+
+/** Indonesian (Bahasa Indonesia)
+ * @author Borgx
+ * @author IvanLanin
+ * @author Iwan Novirion
+ * @author Rex
+ */
+$messages['id'] = array(
+ 'captcha-edit' => 'Untuk menyunting halaman ini, harap pecahkan penjumlahan sederhana di bawah ini dan masukkan jawaban di kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):',
+ 'captcha-desc' => 'Menyediakan teknik captcha untuk melindungi terhadap spam dan penebakan sandi',
+ 'captcha-addurl' => "Suntingan Anda menyertakan pranala luar baru. Sebagai pelindungan terhadap ''spam'' otomatis, Anda harus mengetikkan kata atau hasil perhitungan yang tertera berikut ini:<br />
+([[Special:Captcha/help|info lengkap]])",
+ 'captcha-badlogin' => 'Untuk membantu pelindungan terhadap perengkahan kunci sandi otomatis, tolong masukkan kata atau hasil perhitungan sederhana berikut dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):',
+ 'captcha-createaccount' => 'Sebagai pelindungan terhadap spam, Anda diharuskan untuk mengetikkan kata atau hasil perhitungan di bawah ini di kotak yang tersedia untuk dapat mendaftarkan pengguna baru:<br />
+([[Special:Captcha/help|info lengkap]])',
+ 'captcha-createaccount-fail' => 'Kode konfirmasi salah atau belum diisi.',
+ 'captcha-create' => 'Untuk menyunting halaman ini, silakan pecahkan penjumlahan sederhana di bawah ini dan masukkan jawaban di kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):',
+ 'captcha-sendemail' => 'Sebagai pelindungan terhadap spam, silakan pecahkan penjumlahan sederhana di bawah ini dan masukkan jawaban di kotak yang tersedia ([[Special:Captcha/help|more info]]):',
+ 'captcha-sendemail-fail' => 'Kode konfirmasi salah atau belum diisi.',
+ 'captcha-disabledinapi' => 'Tindakan ini membutuhkan captcha, sehingga tidak dapat dilakukan melalui API.',
+ 'captchahelp-title' => 'Mengenai Captcha',
+ 'captchahelp-cookies-needed' => 'Anda perlu mengaktifkan cookie pada penjelajah web Anda untuk menggunakan fitur ini.',
+ 'captchahelp-text' => "Situs-situs web yang menerima tulisan dari publik, seperti wiki ini, kerapkali disalahgunakan oleh pengguna-pengguna yang tidak bertanggungjawab untuk mengirimkan spam dengan menggunakan program-program otomatis.
+Walaupun pranala-pranala spam tersebut dapat dibuang, tetapi tetap saja menimbulkan gangguan berarti.
+
+Kadang-kadang, terutama ketika sedang menambahkan pranala web baru ke suatu halaman, wiki ini akan menampilkan sebuah bentuk gambar dari tulisan berwarna atau terdistorsi dan meminta Anda untuk mengetikkan kata yang ditampilkan.
+Karena ini merupakan suatu pekerjaan yang sulit diotomatisasi, pembatasan ini akan dapat dengan mudah dilalui oleh manusia, sekaligus juga dapat menghentikan hampir semua serangan spam dan robot otomatis lainnya.
+
+Sayangnya, hal ini dapat menimbulkan kesulitan bagi pengguna dengan keterbatasan penglihatan atau pengguna yang menggunakan penjelajah web berbasis-teks atau berbasis-suara.
+Saat ini, kami belum memiliki suatu alternatif suara untuk hal ini.
+Silakan hubungi [[{{MediaWiki:Grouppage-sysop}}|pengurus]] untuk meminta bantuan jika hal ini menghambat Anda untuk mengirimkan suntingan yang layak.
+
+Tekan tombol 'back' di penjelajah web Anda untuk kembali ke halaman penyuntingan.",
+ 'captcha-addurl-whitelist' => ' #<!-- biarkan baris ini sebagaimana adanya --> <pre>
+# Sintaksisnya adalah sebagai berikut:
+# * Semua yang diawali dengan karakter "#" hingga akhir baris adalah komentar
+# * Semua baris yang tidak kosong adalah fragmen regex yang hanya akan dicocokkan dengan nama host di dalam URL
+ #</pre> <!-- biarkan baris ini sebagaimana adanya -->',
+ 'right-skipcaptcha' => 'Melakukan tindakan pemicu captcha tanpa melalui Captcha',
+);
+
+/** Icelandic (Ãslenska)
+ * @author S.Örvarr.S
+ */
+$messages['is'] = array(
+ 'captcha-edit' => 'Til að breyta þessari síðu, gjörðu svo vel og finndu summuna að neðan og skrifaðu svarið í
+kassann ([[Special:Captcha/help|frekari upplýsinngar]]):',
+ 'captcha-addurl' => 'Breyting þín felur í sér viðbætta ytri tengla. Til að hjálpa okkur að verjast sjálfvirku
+auglýsingarusli gjörðu svo vel og finndu summuna að neðan og skrifaðu svarið í kassann ([[Special:Captcha/help|frekari upplýsinngar]]):',
+ 'captcha-badlogin' => 'Til að hjálpa okkur að verjast sjálfvirku leyniorðaárásum, gjörðu svo vel og finndu summuna að neðan og skrifaðu svarið í
+kassann ([[Special:Captcha/help|frekari upplýsinngar]]):',
+ 'captcha-createaccount' => 'Til að hjálpa okkur að verjast sjálfvirkri gerð aðganga gjörðu svo vel og finndu summuna að neðan og skrifaðu svarið í kassann ([[Special:Captcha/help|frekari upplýsinngar]]):',
+ 'captcha-createaccount-fail' => 'Staðfestingarkóðinn var rangur eða ekki til staðar.',
+ 'captcha-create' => 'Til að búa síðuna til, gjörðu svo vel og finndu summuna að neðan og skrifaðu svarið í kassann ([[Special:Captcha/help|frekari upplýsinngar]]):',
+ 'captchahelp-title' => 'Captcha-hjálp',
+ 'captchahelp-cookies-needed' => 'Þú verður að leyfa vefkökur til þess að þetta virki.',
+ 'captchahelp-text' => 'Vefsíður sem að leyfa framlög frá frá almenningi, líkt og þessi wiki-vefur, eru oft misnotaðar af svokölluðum „spömmurum“ sem nota sjálfvirk tól til þess að setja inn tengla á aðrar vefsíður. Aðrir notendur geta fjarlægt þessa tengla en töluverð truflun er af þeim.
+
+Stundum þegar þú breytir síðum, sérstaklega ef breytingin felur í sér nýja tengla á aðra vefi, getur gerst að þú sért beðin(n) um að skrifa inn orð sem birtast á lituðum eða óskýrum myndum. Fyrir flesta notendur af holdi og blóði er þetta lítið mál en sjálfvirk tól ráða ekki við þetta.
+
+Því miður kann þetta að valda notendum óþægindum sem hafa skerta sjón eða notast við talmálsvafra. Enn sem komið er eru ekki til aðrir valkostir fyrir þau tilvik. Ef þetta kemur í veg fyrir lögmætar breytingar af þinni hálfu getur þú leitað aðstoðar hjá stjórnendum vefsins.
+
+Notaðu „back“-hnapp vafrans til að halda áfram.',
+);
+
+/** Italian (Italiano)
+ * @author Beta16
+ * @author BrokenArrow
+ * @author Darth Kule
+ */
+$messages['it'] = array(
+ 'captcha-edit' => 'Per modificare la pagina è necessario risolvere il semplice calcolo presentato di seguito e inserire il risultato nella casella
+([[Special:Captcha/help|maggiori informazioni]]):',
+ 'captcha-desc' => "Fornisce tecniche CAPTCHA per la protezione contro lo spam e l'individuazione delle password",
+ 'captcha-addurl' => "La modifica richiesta aggiunge dei nuovi collegamenti esterni alla pagina; come misura precauzionale contro l'inserimento automatico di spam, è necessario risolvere il semplice calcolo presentato di seguito e inserire il risultato nella casella ([[Special:Captcha/help|maggiori informazioni]]):",
+ 'captcha-badlogin' => 'Come misura precauzionale contro i tentativi di forzatura automatica della password, è necessario risolvere il semplice calcolo presentato di seguito e inserire il risultato nella casella ([[Special:Captcha/help|maggiori informazioni]]):',
+ 'captcha-createaccount' => 'Come misura precauzionale contro i tentativi di creazione automatica degli account, per registrarsi è necessario risolvere il semplice calcolo presentato di seguito e inserire il risultato nella casella ([[Special:Captcha/help|maggiori informazioni]]):',
+ 'captcha-createaccount-fail' => 'Codice di verifica errato o mancante.',
+ 'captcha-create' => 'Per creare la pagina è necessario risolvere il semplice calcolo presentato di seguito e inserire il risultato nella casella:<br />
+([[Special:Captcha/help|maggiori informazioni]]):',
+ 'captcha-sendemail' => 'Come misura precauzionale nei confronti dei messaggi di spam automatici, è necessario risolvere il semplice calcolo presentato di seguito e inserire il risultato nella casella ([[Special:Captcha/help|maggiori informazioni]]):',
+ 'captcha-sendemail-fail' => 'Codice di verifica errato o mancante.',
+ 'captcha-disabledinapi' => 'Questa azione richiede un captcha, quindi non può essere eseguita tramite API.',
+ 'captchahelp-title' => "Cos'è il captcha?",
+ 'captchahelp-cookies-needed' => 'È necessario abilitare i cookie sul proprio browser per proseguire',
+ 'captchahelp-text' => "Capita spesso che i siti Web che accettano messaggi pubblici, come questo wiki, siano presi di mira da spammer che usano strumenti automatici per inserire collegamenti pubblicitari verso un gran numero di siti. Per quanto i collegamenti indesiderati si possano rimuovere, si tratta comunque di una seccatura non indifferente.
+
+In alcuni casi, ad esempio quando si tenta di aggiungere nuovi collegamenti Web in una pagina, il software wiki può mostrare una immagine con un breve testo colorato e/o distorto chiedendo di riscriverlo in un'apposita finestrella. Poiché si tratta di un'azione difficile da replicare da parte di un computer, questo meccanismo consente a (quasi tutti) gli utenti reali di completare l'inserimento desiderato, impedendo l'accesso alla maggior parte degli spammer e degli altri attacchi automatizzati.
+
+Sfortunatamente, queste misure di sicurezza possono mettere in difficoltà gli utenti con problemi visivi o coloro che utilizzano browser testuali o basati sulla sintesi vocale. Purtroppo al momento non è disponibile un meccanismo alternativo basato su messaggi audio; se queste procedure impediscono l'inserimento informazioni che si ritengono legittime, si prega di contattare gli [[{{MediaWiki:Grouppage-sysop}}|amministratori del sito]] e chiedere loro assistenza.
+
+Fare clic sul pulsante 'back' del browser per tornare alla pagina di modifica.",
+ 'captcha-addurl-whitelist' => ' #<!-- non modificare in alcun modo questa riga --> <pre>
+# La sintassi è la seguente:
+# * Tutto ciò che segue un carattere "#" è un commento, fino al termine della riga
+# * Tutte le righe non vuote sono frammenti di espressioni regolari che si applicano al solo nome dell\'host nelle URL
+ #</pre> <!-- non modificare in alcun modo questa riga -->',
+ 'right-skipcaptcha' => 'Compie le azioni che attiverebbero il captcha senza dover passare per il captcha',
+);
+
+/** Japanese (日本語)
+ * @author Aotake
+ * @author Fryed-peach
+ * @author Hosiryuhosi
+ * @author JtFuruhata
+ * @author Whym
+ */
+$messages['ja'] = array(
+ 'captcha-edit' => 'ã“ã®ãƒšãƒ¼ã‚¸ã‚’編集ã™ã‚‹ã«ã¯ã€ä¸‹è¨˜ã®ç°¡å˜ãªæ•°å¼ã‚’計算ã—ã€æ¬„ã«ç­”ãˆã‚’入力ã—ã¦ãã ã•ã„。([[Special:Captcha/help|ヘルプ]])',
+ 'captcha-desc' => 'スパムやパスワード推定ã®æ”»æ’ƒã‚’防ããŸã‚ã®CAPTCHA技術をæä¾›ã—ã¾ã™',
+ 'captcha-addurl' => 'ã‚ãªãŸã®ç·¨é›†ã«ã‚ˆã‚Šæ–°ãŸã«å¤–部リンクãŒè¿½åŠ ã•ã‚Œã‚ˆã†ã¨ã—ã¦ã„ã¾ã™ã€‚スパム防止ã®ãŸã‚ã€ä¸‹è¨˜ã®ç°¡å˜ãªæ•°å¼ã‚’計算ã—ã€æ¬„ã«ç­”ãˆã‚’入力ã—ã¦ãã ã•ã„。([[Special:Captcha/help|ヘルプ]])',
+ 'captcha-badlogin' => '自動化スクリプトã«ã‚ˆã‚‹ãƒ‘スワードクラック攻撃を防ããŸã‚ã€ä¸‹è¨˜ã®ç°¡å˜ãªæ•°å¼ã‚’計算ã—ã€æ¬„ã«ç­”ãˆã‚’入力ã—ã¦ãã ã•ã„。([[Special:Captcha/help|ヘルプ]])',
+ 'captcha-createaccount' => 'アカウントã®è‡ªå‹•ä½œæˆã‚’防ããŸã‚ã€ä¸‹è¨˜ã®ç°¡å˜ãªæ•°å¼ã‚’計算ã—ã€æ¬„ã«ç­”ãˆã‚’入力ã—ã¦ãã ã•ã„。([[Special:Captcha/help|ヘルプ]])',
+ 'captcha-createaccount-fail' => '確èªã‚³ãƒ¼ãƒ‰ã®å…¥åŠ›ãŒãªã„ã‹ã€é–“é•ã£ã¦ã„ã¾ã™ã€‚',
+ 'captcha-create' => 'ページを新è¦ä½œæˆã™ã‚‹ã«ã¯ã€ä¸‹è¨˜ã®ç°¡å˜ãªæ•°å¼ã‚’計算ã—ã€æ¬„ã«ç­”ãˆã‚’入力ã—ã¦ãã ã•ã„。([[Special:Captcha/help|ヘルプ]])',
+ 'captcha-sendemail' => 'ロボットã«ã‚ˆã‚‹ã‚¹ãƒ‘ムを防ããŸã‚ã€ä¸‹è¨˜ã®ç°¡å˜ãªæ•°å¼ã‚’計算ã—ã€æ¬„ã«ç­”ãˆã‚’入力ã—ã¦ãã ã•ã„ ([[Special:Captcha/help|詳細]]):',
+ 'captcha-sendemail-fail' => '確èªã‚³ãƒ¼ãƒ‰ãŒé–“é•ã£ã¦ã„ã‚‹ã‹å…¥åŠ›ã•ã‚Œã¦ã„ã¾ã›ã‚“。',
+ 'captcha-disabledinapi' => 'ã“ã®æ“作ã¯ã‚­ãƒ£ãƒ—ãƒãƒ£ã‚’å¿…è¦ã¨ã—ã¦ã„ã‚‹ãŸã‚ã€APIã«ã‚ˆã£ã¦å®Ÿè¡Œã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。',
+ 'captchahelp-title' => 'CAPTCHA(ç”»åƒèªè¨¼)ヘルプ',
+ 'captchahelp-cookies-needed' => 'ブラウザã®ã‚¯ãƒƒã‚­ãƒ¼æ©Ÿèƒ½ã‚’有効ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚',
+ 'captchahelp-text' => '一般ã‹ã‚‰ã®æŠ•ç¨¿ã‚’å—ã‘付ã‘ã‚‹ã“ã®ã‚¦ã‚£ã‚­ã®ã‚ˆã†ãªã‚¦ã‚§ãƒ–サイトã¯ã€è‡ªå‹•æŠ•ç¨¿ãƒ„ールを使ã£ã¦å¤šãã®ã‚µã‚¤ãƒˆã«ãƒªãƒ³ã‚¯ã‚’å¼µã£ã¦ã¾ã‚るスパマーã«ã‚ˆã‚Šè’らã•ã‚ŒãŒã¡ã§ã™ã€‚ã“ã®ã‚ˆã†ãªã‚¹ãƒ‘ムã¯é™¤åŽ»ã§ãã‚‹ã‚‚ã®ã®ã€ãã®ä½œæ¥­ã¯å¤§å¤‰ã«é¢å€’ãªã‚‚ã®ã§ã™ã€‚
+
+ã“ã®ãŸã‚ã€ã“ã®ã‚¦ã‚£ã‚­ã§ã¯ã¨ãã©ãã€ç‰¹ã«æ–°ã—ã„外部リンクãŒãƒšãƒ¼ã‚¸ã«è¿½åŠ ã•ã‚ŒãŸã¨ããªã©ã«ã€è‰²ã®ä»˜ã„ãŸã€ã‚ã‚‹ã„ã¯å½¢ã®ã‚†ãŒã‚“ã æ–‡å­—ã®ç”»åƒã‚’æ示ã—ã€ãªã‚“ã¨æ›¸ã„ã¦ã‚ã‚‹ã‹å…¥åŠ›ã‚’ãŠé¡˜ã„ã™ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®ä½œæ¥­ã¯è‡ªå‹•åŒ–ãŒé›£ã—ã„ãŸã‚ã€ã‚¹ãƒ‘マーãªã©ã®ãƒ—ログラムを用ã„ãŸæ”»æ’ƒã‚’ã»ã¼é˜»æ­¢ã—ã¤ã¤ã€å¤§åŠã®ç”Ÿèº«ã®äººé–“ã«ã‚ˆã‚‹æŠ•ç¨¿ã‚’å¯èƒ½ã«ã—ã¾ã™ã€‚
+
+ã—ã‹ã—ã€æ®‹å¿µãªã“ã¨ã«ã€ã“ã®æ–¹æ³•ã«ã‚ˆã‚Šã€è¦–力ã®ä½Žã„利用者やã€ãƒ†ã‚­ã‚¹ãƒˆãƒ™ãƒ¼ã‚¹ã‚ã‚‹ã„ã¯éŸ³å£°ãƒ™ãƒ¼ã‚¹ã®ãƒ–ラウザを使ã£ã¦ã„る利用者ã«ã”ä¸ä¾¿ã‚’ãŠã‹ã‘ã™ã‚‹å ´åˆãŒã‚ã‚Šã¾ã™ã€‚ç¾æ™‚点ã§ã¯ã€éŸ³å£°ã«ã‚ˆã‚‹ä»£æ›¿æ–¹æ³•ã¯ã‚ã‚Šã¾ã›ã‚“。正当ãªæŠ•ç¨¿ã‚’ã™ã‚‹ã«ã‚ãŸã£ã¦æœ¬æ©Ÿèƒ½ãŒéšœå®³ã¨ãªã£ã¦ã„ã‚‹å ´åˆã€[[{{MediaWiki:Grouppage-sysop}}|サイト管ç†è€…]]ã«é€£çµ¡ã—ã¦å”力を求ã‚ã¦ãã ã•ã„。
+
+ページã®ç·¨é›†ã«æˆ»ã‚‹ã«ã¯ã€ãƒ–ラウザã®ã€Œæˆ»ã‚‹ã€ãƒœã‚¿ãƒ³ã‚’押ã—ã¦ãã ã•ã„。',
+ 'captcha-addurl-whitelist' => ' #<!-- ã“ã®è¡Œã¯å¤‰æ›´ã—ãªã„ã§ãã ã•ã„ --> <pre>
+# 構文ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šã§ã™:
+# * "#"文字ã‹ã‚‰è¡Œæœ«ã¾ã§ã¯ã‚³ãƒ¡ãƒ³ãƒˆã¨ã—ã¦æ‰±ã‚ã‚Œã¾ã™
+# * 空白をå«ã‚“ã§ã„ãªã„è¡Œã¯ã€URLã«å«ã¾ã‚Œã‚‹ãƒ›ã‚¹ãƒˆåã¨ã®ä¸€è‡´ã‚’検出ã™ã‚‹æ­£è¦è¡¨ç¾ã§ã™
+ #</pre> <!-- ã“ã®è¡Œã¯å¤‰æ›´ã—ãªã„ã§ãã ã•ã„ -->',
+ 'right-skipcaptcha' => 'CAPTCHAãŒå¿…è¦ãªå ´é¢ã§CAPTCHAをスキップã—ã¦æ“作を実行ã™ã‚‹',
+);
+
+/** Jutish (Jysk)
+ * @author Huslåke
+ * @author Ælsån
+ */
+$messages['jut'] = array(
+ 'captcha-edit' => 'For at redigere denne side, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'captcha-desc' => 'Semple captcha implementåsje',
+ 'captcha-addurl' => 'Din redigering tilføjer nye eksterne henvisninger til artiklen. Som beskyttelse mod automatiseret spam, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'captcha-badlogin' => 'For at beskytte mod automatiserede gæt på kodeord, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'captcha-createaccount' => 'For at beskytte mod automatisk oprettelse af brugernavne, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'captcha-createaccount-fail' => 'Forkert eller manglende kodeord.',
+ 'captcha-create' => 'For at oprette en ny side, skal du give svaret på regnestyket nedenfor, og angive resultatet i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'captchahelp-title' => 'Captcha-hjælp',
+ 'captchahelp-cookies-needed' => 'Din browser skal understøtte cookies, før dette kan gennemføres.',
+ 'captchahelp-text' => "Websites der accepterer indhold fra offentligheden, bliver ofte udsat for angreb fra spammere. Disse angreb sker med automatiske værktøjer, der anbringer de samme links på et stort antal websites på kort tid. Selvom disse links kan fjernes, er de en vedligeholdelsesmæssig byrde.
+
+I visse tilfælde, specielt når der tilføjes nye links til denne wiki, vil softwaren vise dig et billede af et stykke forvredet og sløret tekst. Du skal indtaste det ord, der vises, før du kan gennemføre handlingen. Formålet er at skelne mellem mennesker og automatiserede værktøjer, da de sidste har meget svært ved at genkende ordene.
+
+Desværre kan dette medføre problemer for svagtseende brugere, og brugere der bruger software der oplæser indholdet af siden. For øjeblikket findes der ikke et lydbaseret alternativ. Kontakt venligst en administrator med henblik på at få hjælp, hvis dette forhindrer tilføjelsen af godartet materiale.
+
+Tryk på 'tilbage'-knappen i din browser for at returnere til redigeringssiden.",
+ 'captcha-addurl-whitelist' => ' #<!-- Undlad at rette denne linie --> <pre>
+# Vejledning:
+# * Alt fra et "#"-tegn til slutningen af en linie er en kommentar
+# * Alle ikke-blanke linier benyttes som regulært udtryk, der anvendes på hostnavne i URLer
+ #</pre> <!-- Undlad at rette denne linie -->',
+);
+
+/** Javanese (Basa Jawa)
+ * @author Meursault2004
+ * @author Pras
+ */
+$messages['jv'] = array(
+ 'captcha-edit' => 'Kanggo nyunting kaca iki, mangga pecahna tambah-tambahan ing ngisor iki lan lebokna wangsulané ing kothak cedaké ([[Special:Captcha/help|info sabanjuré]]):',
+ 'captcha-desc' => 'Implementasi prasaja captcha',
+ 'captcha-addurl' => "Suntingan panjenengan iku nyertakaké pranala jaba anyar.
+Kanggo ngéwangi ngreksa lawan ''spam'' otomatis, tulung pecahna itung-itungan ing ngisor iki lan lebokna kasilna sajroning kothak ([[Special:Captcha/help|info sabanjuré]]):",
+ 'captcha-badlogin' => 'Kanggo ngreksa lawan parengkahan kunci sandhi otomatis, tulung lebokna tembung utawa kasil itung-itungan gampang ing ngisor sajroning kothak sing wis sumedya ([[Special:Captcha/help|info sabanjuré]]):',
+ 'captcha-createaccount' => 'Kanggo ngreksa lawan panggawéyan rékening (akun) otomatis, tulung pecahna itung-itungan ing ngisor iki lan lebokna kasilna sajroning kothak ([[Special:Captcha/help|info sabanjuré]]):',
+ 'captcha-createaccount-fail' => 'Kode pandhedhesan (konfirmasi) salah utawa durung diisi.',
+ 'captcha-create' => 'Kanggo nggawé kaca iki, mangga itung-itungan ing ngisor iki diwangsuli sajroning kothak ([[Special:Captcha/help|info sabanjuré]]):',
+ 'captchahelp-title' => 'Pitulung Captcha',
+ 'captchahelp-cookies-needed' => 'Panjenengan perlu ngaktifaké cookie ing panjlajah wèb panjenengan kanggo nganggo fitur iki.',
+ 'captchahelp-text' => "Situs-situs wèb sing nampa data saka umum, kaya ta wiki iki, kerep disalahgunakaké déning panganggo-panganggo sing ora bertanggungjawab kanggo ngirimaké ''spam'' mawa program-program otomatis. Senadyan spam-spam iku bisa dibuang kabèh, nanging waé tetep ngrusuhi lan dianggep gawé masalah.
+
+Kadhangkala, utamané yèn mènèhi pranala wèb anyar ing sawijinig kaca, wiki iki bisa nuduhaké gambar sawijining gambar tulisan sing ana wernané utawa sing rusak lan njaluk panjenengan ngetik ulang tembung sing ana gambar iki.
+Amerga pagawéyan iki angèl diotomatisasi, pawatesan iki bisa ngidinaké mèh kabèh wong asli mbanjuraké sumbangsihé ngirim suntingan nanging menggak para pangirim spam lan robot otomatis.
+
+Émané, perkara iki bisa nggawé sawetara panganggo kangélan nyunting kaca iki, utamané sing daya pandelengané kurang utawa para panganggo sing nganggo panjlajah tèks adhedhasar tèks utawa swara. Saiki iki awaké dhéwé ora duwé alternatif audio kanggo iki. Mangga nyuwun pitulung karo [[{{MediaWiki:Grouppage-sysop}}|para pangurus]] yèn perkara iki menggak panjenengan ngirimaké suntingan sing layak.
+
+Pencèten tombol 'back' ing panjlajah wèb panjenengan kanggo bali menyang kaca panyuntingan.",
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Sintaksisé kaya mengkéné:
+# * Kabèh sing diawali mawa karakter "#" nganti pungkasané baris iku komentar
+# * Kabèh garis sing ora kosong iku fragmèn regex sing namung cocog karo jeneng host sajroning URL
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Nglakokaké aksi-aksi sing murupaké captcha tanpa kudu ngliwati captcha',
+);
+
+/** Georgian (ქáƒáƒ áƒ—ული)
+ * @author ITshnik
+ */
+$messages['ka'] = array(
+ 'captcha-edit' => 'áƒáƒ› გვერდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბისáƒáƒ—ვის, გთხáƒáƒ•áƒ—, áƒáƒ›áƒáƒ®áƒ¡áƒœáƒáƒ— ქვემáƒáƒ— მáƒáƒªáƒ”მული მáƒáƒ áƒ¢áƒ˜áƒ•áƒ˜ მáƒáƒ’áƒáƒšáƒ˜áƒ—ი დრპáƒáƒ¡áƒ£áƒ®áƒ˜ შეიყვáƒáƒœáƒáƒ— ყუთში ([[Special:Captcha/help|მეტი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ]]):',
+ 'captcha-addurl' => 'თქვენი ცვლილებრშეიცáƒáƒ•áƒ¡ áƒáƒ®áƒáƒš გáƒáƒ áƒ” ბმულებს.
+áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ სპáƒáƒ›áƒ˜áƒœáƒ’ისგáƒáƒœ თáƒáƒ•áƒ“áƒáƒªáƒ•áƒ˜áƒ¡ მიზნით, გთხáƒáƒ•áƒ—, áƒáƒ›áƒáƒ®áƒ¡áƒœáƒáƒ— ქვემáƒáƒ— მáƒáƒªáƒ”მული მáƒáƒ áƒ¢áƒ˜áƒ•áƒ˜ მáƒáƒ’áƒáƒšáƒ˜áƒ—ი დრპáƒáƒ¡áƒ£áƒ®áƒ˜ შეიყვáƒáƒœáƒáƒ— ყუთში ([[Special:Captcha/help|მეტი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ]]):',
+ 'captcha-badlogin' => 'პáƒáƒ áƒáƒšáƒ”ბის áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ გáƒáƒ¢áƒ”ხვისგáƒáƒœ თáƒáƒ•áƒ“áƒáƒªáƒ•áƒ˜áƒ¡ მიზნით, გთხáƒáƒ•áƒ—, áƒáƒ›áƒáƒ®áƒ¡áƒœáƒáƒ— ქვემáƒáƒ— მáƒáƒªáƒ”მული მáƒáƒ áƒ¢áƒ˜áƒ•áƒ˜ მáƒáƒ’áƒáƒšáƒ˜áƒ—ი დრპáƒáƒ¡áƒ£áƒ®áƒ˜ შეიყვáƒáƒœáƒáƒ— ყუთში ([[Special:Captcha/help|მეტი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ]]):',
+ 'captcha-createaccount' => 'áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ”ბის áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ შექმნისგáƒáƒœ თáƒáƒ•áƒ“áƒáƒªáƒ•áƒ˜áƒ¡ მიზნით, გთხáƒáƒ•áƒ—, áƒáƒ›áƒáƒ®áƒ¡áƒœáƒáƒ— ქვემáƒáƒ— მáƒáƒªáƒ”მული მáƒáƒ áƒ¢áƒ˜áƒ•áƒ˜ მáƒáƒ’áƒáƒšáƒ˜áƒ—ი დრპáƒáƒ¡áƒ£áƒ®áƒ˜ შეიყვáƒáƒœáƒáƒ— ყუთში ([[Special:Captcha/help|მეტი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ]]):',
+ 'captcha-create' => 'გვერდის შესáƒáƒ¥áƒ›áƒœáƒ”ლáƒáƒ“, გთხáƒáƒ•áƒ—, áƒáƒ›áƒáƒ®áƒ¡áƒœáƒáƒ— ქვემáƒáƒ— მáƒáƒªáƒ”მული მáƒáƒ áƒ¢áƒ˜áƒ•áƒ˜ მáƒáƒ’áƒáƒšáƒ˜áƒ—ი დრპáƒáƒ¡áƒ£áƒ®áƒ˜ შეიყვáƒáƒœáƒáƒ— ყუთში ([[Special:Captcha/help|მეტი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ]]):',
+ 'captcha-sendemail' => 'áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ სპáƒáƒ›áƒ˜áƒœáƒ’ისგáƒáƒœ თáƒáƒ•áƒ“áƒáƒªáƒ•áƒ˜áƒ¡ მიზნით, გთხáƒáƒ•áƒ—, áƒáƒ›áƒáƒ®áƒ¡áƒœáƒáƒ— ქვემáƒáƒ— მáƒáƒªáƒ”მული მáƒáƒ áƒ¢áƒ˜áƒ•áƒ˜ მáƒáƒ’áƒáƒšáƒ˜áƒ—ი დრპáƒáƒ¡áƒ£áƒ®áƒ˜ შეიყვáƒáƒœáƒáƒ— ყუთში ([[Special:Captcha/help|მეტი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ]]):',
+);
+
+/** Kara-Kalpak (Qaraqalpaqsha)
+ * @author Atabek
+ */
+$messages['kaa'] = array(
+ 'captcha-createaccount-fail' => "Tastıyıqlawshı kodın'ız nadurıs yamasa jazılmag'an",
+);
+
+/** Kazakh (Arabic script) (‫قازاقشا (تٴوتە)‬) */
+$messages['kk-arab'] = array(
+ 'captcha-edit' => 'بۇل بەتتٸ ٶڭدەۋ ٷشٸن, تٶمەندەگٸ قوسىندىلاۋدى شەشٸڭٸز دە, نٵتيجەسٸن
+اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):',
+ 'captcha-addurl' => 'تٷزەتۋٸڭٸزدە جاڭا سىرتقى سٸلتەمەلەر بار ەكەن. ٶزدٸكتٸك «سپام» جاسالۋىنان قورعانۋ ٷشٸن,
+تٶمەندەگٸ قاراپايىم قوسىندىلاۋدى شەشٸڭٸز دە, نٵتيجەسٸن اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):',
+ 'captcha-badlogin' => 'قۇپييا سٶزدٸ ٶزدٸكتٸك قيراتۋدان قورعانۋ ٷشٸن,
+تٶمەندەگٸ قاراپايىم قوسىندىلاۋدى شەشٸڭٸز دە, نٵتيجەسٸن اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):',
+ 'captcha-createaccount' => 'جاڭا تٸركەلگٸ ٶزدٸكتٸك جاسالۋىنان قورعانۋ ٷشٸن, تٶمەندەگٸ قاراپايىم قوسىندىلاۋدى
+شەشٸڭٸز دە, نٵتيجەسٸن اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):',
+ 'captcha-createaccount-fail' => 'كۋٵلاندىرۋ كودى دۇرىس ەمەس نەمەسە جوق.',
+ 'captcha-create' => 'جاڭا بەتتٸ باستاۋ ٷشٸن, تٶمەندەگٸ قاراپايىم قوسىندىلاۋدى شەشٸڭٸز دە,
+نٵتيجەسٸن اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):',
+ 'captchahelp-title' => 'CAPTCHA انىقتاماسى',
+ 'captchahelp-cookies-needed' => 'بۇل جۇمىس ٸستەۋ ٷشٸن, شولعىشىڭىزدا «cookies» دەگەندٸ ەندٸرٸڭٸز.',
+ 'captchahelp-text' => 'ٶزدٸكتٸك قۇرالدارى بار «سپاممەرلەر», بارشادان جٸبەرٸلگەن حاباردى قابىلدايتىن, بۇل ۋيكي سيياقتى, ۆەب-توراپتارعا سٸلتەمەلەرٸمەن جيٸ جاۋدىرادى. وسىنداي «سپام» سٸلتەمەلەرٸن الاستاۋ بولعاندا دا, بۇل مٵندٸ ىزا كەلتٸرەدٸ.
+
+كەيدە, ٵسٸرەسە بەتكە جاڭا ۆەب سٸلتەمەسٸن قوسقاندا, ۋيكي ٶڭٸ ٶزگەرگەن نە قيسايعان مٵتٸندٸ كٶرسەتٸپ جٵنە سول سٶزدەردٸ ەنگٸزۋ سۇراۋى مٷمكٸن. بۇل تاپسىرىس ٶزدٸك تٷردە اتقارۋ ٶتە قيىن, سوندىقتان بۇل يماندى ادام كٶپشٸلٸگٸنە كەدەرگٸ بولمايدى, بٸراق «سپاممەرلەردٸ» جٵنە بۇزاقى بوتپەن باسقا شابۋىل جاساعانداردى توقتاتادى.
+
+ٶكٸنٸشكە وراي, بۇل كٶرۋٸ تٶمەندەگەن, نەمەسە مٵتٸن نە داۋىس نەگٸزٸندەگٸ شولعىشتى قولداناتىن پايدالانۋشىعا ىڭعايسىزدىق كەلتٸرۋگە مٷمكٸن. وسى قازٸر بٸزدە دىبىستى بالاما جوق. ەگەر بۇل ادال جازۋىڭىزعا كەدەرگٸلەسە, توراپ باقىلاۋشىلارىنا قاتىناسىڭىز.
+
+بۇل جۇمىستى ٸستەۋ ٷشٸن شولعىشىڭىزدا «cookies» دەگەندٸ ەندٸرۋ قاجەت.
+
+بەت ٶڭدەۋٸنە قايتۋ بارۋ ٷشٸن «ارتقا» دەگەن تٷيمەسٸن باسىڭىز.',
+);
+
+/** Kazakh (Cyrillic) (Қазақша (Cyrillic)) */
+$messages['kk-cyrl'] = array(
+ 'captcha-edit' => 'Бұл бетті өңдеу үшін, төмендегі қоÑындылауды шешіңіз де, нәтижеÑін
+аумаққа енгізіңіз ([[{{ns:special}}:Captcha/help|көбірек ақпарат]]):',
+ 'captcha-addurl' => 'Түзетуіңізде жаңа Ñыртқы Ñілтемелер бар екен. Өздіктік «Ñпам» жаÑалуынан қорғану үшін,
+төмендегі қарапайым қоÑындылауды шешіңіз де, нәтижеÑін аумаққа енгізіңіз ([[{{ns:special}}:Captcha/help|көбірек ақпарат]]):',
+ 'captcha-badlogin' => 'ÒšÒ±Ð¿Ð¸Ñ Ñөзді өздіктік қиратудан қорғану үшін,
+төмендегі қарапайым қоÑындылауды шешіңіз де, нәтижеÑін аумаққа енгізіңіз ([[{{ns:special}}:Captcha/help|көбірек ақпарат]]):',
+ 'captcha-createaccount' => 'Жаңа тіркелгі өздіктік жаÑалуынан қорғану үшін, төмендегі қарапайым қоÑындылауды
+шешіңіз де, нәтижеÑін аумаққа енгізіңіз ([[{{ns:special}}:Captcha/help|көбірек ақпарат]]):',
+ 'captcha-createaccount-fail' => 'Куәландыру коды Ð´Ò±Ñ€Ñ‹Ñ ÐµÐ¼ÐµÑ Ð½ÐµÐ¼ÐµÑе жоқ.',
+ 'captcha-create' => 'Жаңа бетті баÑтау үшін, төмендегі қарапайым қоÑындылауды шешіңіз де,
+нәтижеÑін аумаққа енгізіңіз ([[{{ns:special}}:Captcha/help|көбірек ақпарат]]):',
+ 'captchahelp-title' => 'CAPTCHA анықтамаÑÑ‹',
+ 'captchahelp-cookies-needed' => 'Бұл Ð¶Ò±Ð¼Ñ‹Ñ Ñ–Ñтеу үшін, шолғышыңызда «cookies» дегенді ендіріңіз.',
+ 'captchahelp-text' => 'Өздіктік құралдары бар «Ñпаммерлер», баршадан жіберілген хабарды қабылдайтын, бұл уики ÑиÑқты, веб-тораптарға Ñілтемелерімен жиі жаудырады. ОÑындай «Ñпам» Ñілтемелерін алаÑтау болғанда да, бұл мәнді ыза келтіреді.
+
+Кейде, Ó™ÑіреÑе бетке жаңа веб ÑілтемеÑін қоÑқанда, уики өңі өзгерген не қиÑайған мәтінді көрÑетіп және Ñол Ñөздерді енгізу Ñұрауы мүмкін. Бұл тапÑÑ‹Ñ€Ñ‹Ñ Ó©Ð·Ð´Ñ–Ðº түрде атқару өте қиын, Ñондықтан бұл иманды адам көпшілігіне кедергі болмайды, бірақ «Ñпаммерлерді» және бұзақы ботпен баÑқа шабуыл жаÑағандарды тоқтатады.
+
+Өкінішке орай, бұл көруі төмендеген, немеÑе мәтін не Ð´Ð°ÑƒÑ‹Ñ Ð½ÐµÐ³Ñ–Ð·Ñ–Ð½Ð´ÐµÐ³Ñ– шолғышты қолданатын пайдаланушыға ыңғайÑыздық келтіруге мүмкін. ОÑÑ‹ қазір бізде дыбыÑÑ‚Ñ‹ балама жоқ. Егер бұл адал жазуыңызға кедергілеÑе, торап бақылаушыларына қатынаÑыңыз.
+
+Бұл жұмыÑÑ‚Ñ‹ Ñ–Ñтеу үшін шолғышыңызда «cookies» дегенді ендіру қажет.
+
+Бет өңдеуіне қайту бару үшін «Ðртқа» деген түймеÑін баÑыңыз.',
+);
+
+/** Kazakh (Latin) (Қазақша (Latin)) */
+$messages['kk-latn'] = array(
+ 'captcha-edit' => 'Bul betti öñdew üşin, tömendegi qosındılawdı şeşiñiz de, nätïjesin
+awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):',
+ 'captcha-addurl' => 'Tüzetwiñizde jaña sırtqı siltemeler bar eken. Özdiktik «spam» jasalwınan qorğanw üşin,
+tömendegi qarapaýım qosındılawdı şeşiñiz de, nätïjesin awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):',
+ 'captcha-badlogin' => 'Qupïya sözdi özdiktik qïratwdan qorğanw üşin,
+tömendegi qarapaýım qosındılawdı şeşiñiz de, nätïjesin awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):',
+ 'captcha-createaccount' => 'Jaña tirkelgi özdiktik jasalwınan qorğanw üşin, tömendegi qarapaýım qosındılawdı
+şeşiñiz de, nätïjesin awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):',
+ 'captcha-createaccount-fail' => 'Kwälandırw kodı durıs emes nemese joq.',
+ 'captcha-create' => 'Jaña betti bastaw üşin, tömendegi qarapaýım qosındılawdı şeşiñiz de,
+nätïjesin awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):',
+ 'captchahelp-title' => 'CAPTCHA anıqtaması',
+ 'captchahelp-cookies-needed' => 'Bul jumıs istew üşin, şolğışıñızda «cookies» degendi endiriñiz.',
+ 'captchahelp-text' => 'Özdiktik quraldarı bar «spammerler», barşadan jiberilgen xabardı qabıldaýtın, bul wïkï sïyaqtı, veb-toraptarğa siltemelerimen jïi jawdıradı. Osındaý «spam» siltemelerin alastaw bolğanda da, bul mändi ıza keltiredi.
+
+Keýde, äsirese betke jaña veb siltemesin qosqanda, wïkï öñi özgergen ne qïsaýğan mätindi körsetip jäne sol sözderdi engizw surawı mümkin. Bul tapsırıs özdik türde atqarw öte qïın, sondıqtan bul ïmandı adam köpşiligine kedergi bolmaýdı, biraq «spammerlerdi» jäne buzaqı botpen basqa şabwıl jasağandardı toqtatadı.
+
+Ökinişke oraý, bul körwi tömendegen, nemese mätin ne dawıs negizindegi şolğıştı qoldanatın paýdalanwşığa ıñğaýsızdıq keltirwge mümkin. Osı qazir bizde dıbıstı balama joq. Eger bul adal jazwıñızğa kedergilese, torap baqılawşılarına qatınasıñız.
+
+Bul jumıstı istew üşin şolğışıñızda «cookies» degendi endirw qajet.
+
+Bet öñdewine qaýtw barw üşin «Artqa» degen tüýmesin basıñız.',
+);
+
+/** Khmer (ភាសាážáŸ’មែរ)
+ * @author Lovekhmer
+ * @author Thearith
+ * @author គីមស៊្រុន
+ */
+$messages['km'] = array(
+ 'captcha-edit' => 'ដើម្បីកែប្រែ​ទំពáŸážšáž“áŸáŸ‡ សូមដោះស្រាយ​ប្រមាណវិធីបូក​ážáž¶áž„ក្រោម​នáŸáŸ‡ážšáž½áž…​បញ្ជូលចម្លើយ​ទៅក្នុង​ប្រអប់សិន([[Special:Captcha/help|áž–áŸážáŸŒáž˜áž¶áž“​បន្ážáŸ‚ម]])៖',
+ 'captcha-addurl' => 'កំណែ​របស់អ្នក​មាន​ážáŸ†ážŽáž—្ជាប់ក្រៅ​ážáŸ’មី។ ដើម្បី​ជួយបង្ការ​ស្ប៉ាម​ស្វáŸáž™áž”្រវážáŸ’ážáž· សូមដោះស្រាយ​ប្រមាណវិធីបូក​ážáž¶áž„ក្រោម​នáŸáŸ‡ážšáž½áž…​បញ្ជូលចម្លើយ​ទៅក្នុង​ប្រអប់សិន([[Special:Captcha/help|áž–áŸážáŸŒáž˜áž¶áž“​បន្ážáŸ‚ម]])៖',
+ 'captcha-badlogin' => 'ដើម្បីការពារការបំបែកពាក្យសំងាážáŸ‹ážŠáŸ„យស្វáŸáž™áž”្រវážáŸ’ážáž· សូមដោះស្រាយផលបូកážáž¶áž„ក្រោមរួចបញ្ជូលចម្លើយទៅក្នុងប្រអប់ ([[Special:Captcha/help|áž–áŸážáŸŒáž˜áž¶áž“បន្ážáŸ‚ម]])៖',
+ 'captcha-createaccount' => 'ដើម្បី​បង្ការការបង្កើážâ€‹áž‚ណនី​ស្វáŸáž™áž”្រវážáŸ’ážáž· សូមដោះស្រាយ​ប្រមាណវិធីបូក​ážáž¶áž„ក្រោម​នáŸáŸ‡ážšáž½áž…​បញ្ជូលចម្លើយ​ទៅក្នុង​ប្រអប់សិន([[Special:Captcha/help|áž–áŸážáŸŒáž˜áž¶áž“​បន្ážáŸ‚ម]])៖',
+ 'captcha-createaccount-fail' => 'កូដផ្ទៀងផ្ទាážáŸ‹áž”ាážáŸ‹áž”ង់ឬមិនážáŸ’រឹមážáŸ’រូវ។',
+ 'captcha-create' => 'ដើម្បី​បង្កើážâ€‹áž‘ំពáŸážš សូមដោះស្រាយ​ប្រមាណវិធីបូក​ážáž¶áž„ក្រោម​នáŸáŸ‡ážšáž½áž…​បញ្ជូលចម្លើយ​ទៅក្នុង​ប្រអប់សិន([[Special:Captcha/help|áž–áŸážáŸŒáž˜áž¶áž“​បន្ážáŸ‚ម]])៖',
+ 'captchahelp-title' => 'ជំនួយអំពី Captcha',
+);
+
+/** Korean (한국어)
+ * @author IRTC1015
+ * @author Klutzy
+ * @author Kwj2772
+ * @author ToePeu
+ */
+$messages['ko'] = array(
+ 'captcha-edit' => 'ê¸€ì„ íŽ¸ì§‘í•˜ê¸° 위해서는, ì•„ëž˜ì˜ ê°„ë‹¨í•œ ë§ì…ˆ ê°’ì„ ìž…ë ¥ìƒìžì— ì ì–´ 주세요([[Special:Captcha/help|ìžì„¸í•œ ì •ë³´]]):',
+ 'captcha-desc' => '스팸과 비밀번호 탈취를 방지하기 위한 캡차 ê¸°ëŠ¥ì„ ì œê³µ',
+ 'captcha-addurl' => '편집 ë‚´ìš©ì— ë‹¤ë¥¸ 웹 사ì´íŠ¸ ë§í¬ê°€ í¬í•¨ë˜ì–´ 있습니다. ìžë™ ìŠ¤íŒ¸ì„ ë§‰ê¸° 위해, ì•„ëž˜ì˜ ê°„ë‹¨í•œ 계산 ê°’ì„ ìž…ë ¥ìƒìžì— ì ì–´ 주세요([[Special:Captcha/help|ìžì„¸í•œ ì •ë³´]]):',
+ 'captcha-badlogin' => '계정 암호 í•´í‚¹ì„ ë§‰ê¸° 위해, ì•„ëž˜ì˜ ê°„ë‹¨í•œ 계산 ê°’ì„ ìž…ë ¥ìƒìžì— ì ì–´ 주세요. ([[Special:Captcha/help|ìžì„¸í•œ ì •ë³´]]):',
+ 'captcha-createaccount' => 'ìžë™ ê°€ìž…ì„ ë§‰ê¸° 위해, 아래 ë¬¸ì œì˜ ë‹µì„ ì ì–´ 주세요. ([[Special:Captcha/help|관련 ë„움ë§]]):',
+ 'captcha-createaccount-fail' => 'ìž…ë ¥ê°’ì´ ìž˜ëª»ë˜ì—ˆê±°ë‚˜ 없습니다.',
+ 'captcha-create' => '문서를 만들기 위해서는, ì•„ëž˜ì˜ ê°„ë‹¨í•œ 계산 ê°’ì„ ìž…ë ¥ìƒìžì— ì ì–´ 주세요([[Special:Captcha/help|ìžì„¸í•œ ì •ë³´]]):',
+ 'captcha-sendemail' => 'ìžë™í™”ëœ ìŠ¤íŒ¸ì„ ë°©ì§€í•˜ê¸° 위해, ì•„ëž˜ì˜ ê°„ë‹¨í•œ 계산 ê°’ì„ ìž…ë ¥ìƒìžì— ì ì–´ 주세요 ([[Special:Captcha/help|ìžì„¸í•œ ì •ë³´]]):',
+ 'captcha-sendemail-fail' => 'ìž…ë ¥ê°’ì´ ìž˜ëª»ë˜ì—ˆê±°ë‚˜ 없습니다.',
+ 'captcha-disabledinapi' => 'ì´ ë™ìž‘ì€ ìº¡ì°¨ë¥¼ ê±°ì³ì•¼ 하기 ë•Œë¬¸ì— APIë¡œ ì´ ìž‘ì—…ì„ ìˆ˜í–‰í•  수 없습니다.',
+ 'captchahelp-title' => 'Captcha ë„움ë§',
+ 'captchahelp-cookies-needed' => 'ì •ìƒì ìœ¼ë¡œ ìž‘ë™í•˜ë ¤ë©´ 웹 브ë¼ìš°ì €ì˜ 쿠키 ì‚¬ìš©ì´ í™œì„±í™”ë˜ì–´ìžˆì–´ì•¼ 합니다.',
+ 'captchahelp-text' => 'ì´ ìœ„í‚¤ì™€ ê°™ì´ ì‚¬ëžŒë“¤ì˜ ê³µê°œì ì¸ 참여가 가능한 웹 사ì´íŠ¸ì—서는 ìžë™ í”„ë¡œê·¸ëž¨ì´ ìŠ¤íŒ¸ì„ ë¿Œë¦¬ëŠ” 경우가 있습니다. 물론 ì´ëŸ¬í•œ ìŠ¤íŒ¸ì€ ì œê±°í•  수는 있지만 번거로운 ìž‘ì—…ì´ ëŠ˜ì–´ë‚©ë‹ˆë‹¤.
+
+ì´ëŸ¬í•œ ìŠ¤íŒ¸ì„ ë°©ì§€í•˜ê¸° 위해서, ì´ ìœ„í‚¤ì˜ ë¬¸ì„œì— ì›¹ 사ì´íŠ¸ 주소를 추가하는 ë“±ì˜ í–‰ë™ì„ í•  경우ì—는 비틀린 글ìžê°€ 들어있는 ê·¸ë¦¼ì„ ë³´ì—¬ì£¼ê³  ê·¸ ê·¸ë¦¼ì˜ ê¸€ìžë¥¼ 입력해 달ë¼ê³  하는 경우가 있습니다. ì´ ê¸€ìž ìž…ë ¥ ìž‘ì—…ì€ ìžë™ í”„ë¡œê·¸ëž¨ì„ ë§Œë“¤ê¸°ê°€ 힘들기 ë•Œë¬¸ì— ìŠ¤íŒ¸ì„ íš¨ê³¼ì ìœ¼ë¡œ 막으면서 ì¼ë°˜ 사용ìžë¥¼ 막지 ì•Šì„ ìˆ˜ 있습니다.
+
+웹 브ë¼ìš°ì €ì—ì„œ ê·¸ë¦¼ì„ ì™„ë²½í•˜ê²Œ 표시할 수 없거나, ê·¸ë¦¼ì´ ë‚˜ì˜¤ì§€ 않는 í…스트 ë°©ì‹ì´ë‚˜ ìŒì„± 합성 ë°©ì‹ ì›¹ 브ë¼ìš°ì €ë¥¼ 사용하는 경우ì—는 ì´ëŸ¬í•œ ìž…ë ¥ì´ ë¶ˆê°€ëŠ¥í•©ë‹ˆë‹¤. ì•„ì§ê¹Œì§€ëŠ” ì´ëŸ° ê²½ìš°ì— ëŒ€í•œ ëŒ€ì•ˆì´ ì—†ìŠµë‹ˆë‹¤. ì´ ê²½ìš° [[{{MediaWiki:Grouppage-sysop}}|사ì´íŠ¸ 관리ìž]]ì—게 ë„ì›€ì„ ìš”ì²­í•´ 주세요.
+
+ì´ì „ 화면으로 ëŒì•„가려면 웹 브ë¼ìš°ì €ì˜ ‘뒤로’ ë²„íŠ¼ì„ ëˆŒëŸ¬ 주세요.',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# ë¬¸ë²•ì€ ë‹¤ìŒê³¼ 같습니다:
+# * "#"ë¡œ 시작하는 ì¤„ì€ ì£¼ì„입니다.
+# * 빈 ì¤„ì´ ì•„ë‹Œ ì¤„ì€ ì •ê·œì‹ìœ¼ë¡œ, URLì˜ í˜¸ìŠ¤íŠ¸ë§Œì„ ê²€ì‚¬í•©ë‹ˆë‹¤.
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => '캡차 ê³¼ì •ì„ ê±°ì¹˜ì§€ ì•Šê³  캡차 ê³¼ì •ì„ ê±°ì¹œ 것으로 간주',
+);
+
+/** Colognian (Ripoarisch)
+ * @author Purodha
+ */
+$messages['ksh'] = array(
+ 'captcha-edit' => 'Öm de Sigg ze ändere, don di Zahle onge zosamme zälle un don de Antwoot en dat Käßje endraare. ([[Special:Captcha/help|Verklierung]])',
+ 'captcha-desc' => 'Brängk en „Kaptscha“ en et Wiki, öm jääje SPAM un jäje et Paßwööter-Dorschprobeere ze schöze.',
+ 'captcha-addurl' => 'Do häß neu Lingks op frembde Websigge dobei jedonn.
+Mer schöze uns Wiki jäje automatesche SPAM, dröm
+don di Zahle onge zosamme zälle un don de Antwoot
+en dat Käßje endraare. (Verklierung)',
+ 'captcha-badlogin' => 'Mer schöze Metmaacher en unsem Wiki jäje automatesche
+Paßwoot-Knackerei, dröm don di Zahle onge zosamme zälle,
+un de Antwoot en dat Käßje endraare. (Verklierung)',
+ 'captcha-createaccount' => 'Mer schöze uns Wiki dojäje, dat mer en Masse automatesch
+Metmaacher aanmeldt. Dröm beß esu joot un
+don di Zahle onge zosamme zälle un don de Antwoot
+en dat Käßje endraare. (Verklierung)',
+ 'captcha-createaccount-fail' => 'De Bestätijungszahl fählt udder es verkeeht.',
+ 'captcha-create' => 'Öm di Sigg neu aanzelääje, don di Zahle onge zosamme zälle,
+un don de Antwoot en dat Käßje endraare. (Verklierung)',
+ 'captcha-sendemail' => 'För automettesche SPAM ze verhendere, donn di Zahle onge zosamme zälle,
+un don de Antwoot en dat Käßje endraare. ([[Special:Captcha/help|Verklierung]])',
+ 'captcha-sendemail-fail' => 'De Bestätijungszahl fählt udder es verkeeht.',
+ 'captcha-disabledinapi' => 'För di Aufjab moß en extra Bestätejon enjejovve wääde, un dat künne mer nit övver de API.',
+ 'captchahelp-title' => 'Äklierung zum Kaptscha SPAM-Schotz',
+ 'captchahelp-cookies-needed' => 'Do moß <i lang="en">Cookies</i> en Dingem Brauser enjeschalldt han, domet da hee fluppe kann.',
+ 'captchahelp-text' => 'Op Web Saits wi dat Wiki hee, wo jeder jät beidraare kann, do kumme se öff wi de Fleeje un don met Projramme un fun Hand bloß Reklame-Lingks op de eije Websigge affläje, oohne Sinn un Verstand. Esu en SPAM kam_mer widder fott maache, dat määt ävver Ärjer un Opwand.
+
+Su jät wulle_mer nit hann, un donn_et jlish widder fottschmiiße.
+
+Domet mer do_met nidd_esu fill Ärrbed hann,
+maache_mer dänne Autmaate et Lääve schwer.
+Wann uns Wikki merk, et künnd_esu jet em Bösh sinn, dann zeisch et e Belldshe med komije Texte dren, un fröhsch, dat mer se jenau esu ennjävve sullt,
+wi se do shtonn. För_enne Minsch eß dat eifach, ävver dat es fodammp schwierich ze projrammiere.
+Dat es e beßßje läßtish för der Minsch, ävver de Robbotter hälld et unß bahl komplett fum Lief, un su jesinn, ess et netto enne Jewenn.
+
+Wann De Dich ens fordeis, es och nit schlimm, De wees norr_enß jefrooch. Wat De jetipp häs, kütt nit fott.
+
+Schaad es, mer hann noch keine Wääsh, dat met Shprooch odder sönswi ze maache, su dat Lück met Shprooch_Ußßjaave, Braille, un met nur Tex em Brauser oohne Bellder, em Räähn shtonn künnte. Dooht Ühr Zeush eets enß oohne Lengk speischere, un saat dä [[{{MediaWiki:Grouppage-sysop}}|Wikki_Köbesse]],
+wann Ãœhr Probbleme hatt. Do weed_Ãœch jehollfe weede.
+
+Jetz kanns De met Dingem Brauser singem „Zeröck“-Knopp wigger maache, wo De fürher woohß.',
+ 'captcha-addurl-whitelist' => ' #<!-- Lohß di Reih he jenou esu wi se es --> <pre>
+# Dä Opbou es:
+# * Alles fun enem #-Zeiche bes an et Engk fun ene Reih es ene Kommentaa för de Minsche
+# * Jede Reih met jet dren es en Stöck regular Expression, wat Domains en URL treffe kann
+ #</pre> <!-- Lohß di Reih he jenou esu wi se es -->',
+ 'right-skipcaptcha' => 'De Opforderung fum Kaptscha överjonn',
+);
+
+/** Latin (Latina)
+ * @author UV
+ */
+$messages['la'] = array(
+ 'captcha-edit' => 'Ad hanc paginam recensendum, necesse est tibi solvere calculationem subter et responsum in capsam inscribere ([[Special:Captcha/help|Quidst illud?]]):',
+ 'captcha-addurl' => 'Emendatione tua insunt nexus externi; ut spam automaticum vitemus, necesse est tibi solvere calculationem subter et responsum in capsam inscribere ([[Special:Captcha/help|Quidst illud?]]):',
+ 'captcha-badlogin' => 'Ut vitemus ne tesserae frangantur, necesse est tibi solvere calculationem subter et responsum in capsam inscribere ([[Special:Captcha/help|Quidst illud?]]):',
+ 'captcha-createaccount' => 'Ut creationem rationum automaticam vitemus, necesse est tibi solvere calculationem subter et responsum in capsam inscribere ([[Special:Captcha/help|Quidst illud?]]):',
+ 'captcha-createaccount-fail' => 'Codex affirmationis aut non scriptus est aut male.',
+ 'captcha-create' => 'Ad paginam creandum, necesse est tibi solvere calculationem subter et responsum in capsam inscribere ([[Special:Captcha/help|Quidst illud?]]):',
+ 'captchahelp-title' => 'Captcha auxilium',
+);
+
+/** Luxembourgish (Lëtzebuergesch)
+ * @author Les Meloures
+ * @author Robby
+ */
+$messages['lb'] = array(
+ 'captcha-edit' => "Fir dës Säit z'änneren, léist w.e.g. dës Rechenaufgab a gitt d'Resultat an d'Këscht ënnendrënner an ([[Special:Captcha/help|méi Informatiounen]]):",
+ 'captcha-desc' => 'Stellt Captcha-Techniken zur Verfügung fir géint Spam an Errode vu Passwierder ze schützen',
+ 'captcha-addurl' => 'An ärer Ännerung sinn nei extern Linken. Fir eis virun automatiséiertem Spamming ze schütze froe mir iech fir déi folgend einfach Rechenaufgab ze léisen an d\'Resultat an d\'Feld ënnen anzedroen. Klickt duerno w.e.g. nach eng Kéier op "Säit ofspäicheren" [[Special:Captcha/help|méi Informatiounen]].',
+ 'captcha-badlogin' => "Fir eis géint automatescht Hacke vu Passwierder ze schützen, léist w.e.g. déi einfach Additioun hei ënnendrënner an tippt d'Äntwert an d'Këscht ([[Special:Captcha/help|méi Informatiounen]]):",
+ 'captcha-createaccount' => "Fir eis géint d'automatescht Uleeë vu Benotzerkonten ze schützen, léist w.e.g. déi einfach Additioun hei ënnendrënner, an tippt d'Äntwert an d'Këscht ([[Special:Captcha/help|méi Informatiounen]]):",
+ 'captcha-createaccount-fail' => 'Falschen oder kee Confirmatiouns-Code.',
+ 'captcha-create' => "Fir eng Nei Säit unzeleeën, léist w.e.g. déi einfach Additioun hei ënnendrënner an tippt d'Äntwert an d'Këscht ([[Special:Captcha/help|méi Informatiounen]]):",
+ 'captcha-sendemail' => "Fir eis géint automatescht Spammen ze schützen, léist w.e.g. déi einfach Additioun hei ënnendrënner an tippt d'Äntwert an d'Këscht ([[Special:Captcha/help|méi Informatiounen]]):",
+ 'captcha-sendemail-fail' => 'Falschen oder kee Confirmatiouns-Code.',
+ 'captcha-disabledinapi' => 'Dës Aktioun brauch e Captcha, dofir ka se net mat enger API gemaach ginn.',
+ 'captchahelp-title' => 'Captcha-Hëllef',
+ 'captchahelp-cookies-needed' => 'Dir musst Cookieën an ärem Browser erlaben fir dat dëst fonktionéiert.',
+ 'captchahelp-text' => "Websäiten, déi et jidwerengem erlaben Ännerunge virzehuelen, sou wéi op dëser Wiki, ginn dacks vu sougenannte Spammer mëssbraucht, déi automatiséiert hir Linken op vill Internetsäite setzen. Esou Spam-Linke kënne wuel geläscht ginn, mee si sinn trotzdem eng grouss Plo.
+
+Heiandsdo, besonnesch wann nei Internet-Linken op eng Säit derbäigesat ginn, weist dës Wiki iech e Bild mat faarwegem oder verzerrtem Text a freet iech fir déi gewise Wierder anzetipppen. Well dëst eng Aufgab ass déi schwéier ze automatiséieren ass, erlaabt dëst datt Mënschen hir Ännerunge kënnen agi wärend déi meescht Spammer an aner Roboter-Attacke kënnen ofgewiert ginn.
+
+Leider kann dëst zu Schwierigkeete féiere fir Persounen déi net esou gutt gesinn oder déi text-baséiert oder sprooch-baséiert Browser benotzen.
+Zu dësem Zäitpunkt hu mir leider keng audio-Alternativ zu eiser Verfügung.
+Kontaktéiert w.e.g. [[{{MediaWiki:Grouppage-sysop}}|een Administrateur]] fir Hëllef wann dëst iech onerwaarter Wäis vu legitimen Editen ofhält.
+
+Dréckt op den 'Zréck' Knäppche vun ärem Browser fir an d'Beaarbechtungsfënster zréckzekommen.",
+ 'captcha-addurl-whitelist' => ' #<!-- Dës Linn onverännert loossen --> <pre>
+# Syntax:
+# * Alles vun engem #-Zeechen u bis zum Enn vun där Zeil ass eng Bemierkung
+# * All Zeil déi net eidel ass, ass ee Regex-Fragment, dat nëmme mat Hosten bannent URLë fonctionnéiert
+ #</pre> <!-- Dës Linn onverännert loossen -->',
+ 'right-skipcaptcha' => 'Aktiounen déi eng Captcha-Aktioun verlaangen ausféieren, ouni dës maachen ze mussen',
+);
+
+/** Limburgish (Limburgs)
+ * @author Matthias
+ * @author Ooswesthoesbes
+ */
+$messages['li'] = array(
+ 'captcha-edit' => "Geer wil dees pazjena bewerke. Veur estebleef 't antjwaord op de óngerstäönde einvawdife som in 't inveurvenster in ([[Special:Captcha/help|mieë informatie]]):",
+ 'captcha-desc' => 'Einvawdige implementatie van captcha',
+ 'captcha-addurl' => "Uw bewerking bevat nieuwe externe links (URL's). Voer ter bescherming tegen geautomatiseerde spam alstublieft het antwoord op de onderstaande eenvoudige som in in het invoerveld ([[Special:Captcha/help|meer informatie]]):",
+ 'captcha-badlogin' => 'Los alstublieft de onderstaande eenvoudige som op en voer het antwoord in het invoervenster in ter bescherming tegen het automatisch kraken van wachtwoorden ([[Special:Captcha/help|meer informatie]]):',
+ 'captcha-createaccount' => 'Voer ter bescherming tegen geautomatiseerde spam het antwoord op de onderstaande eenvoudige som in het invoervenster in ([[Special:Captcha/help|meer informatie]]):',
+ 'captcha-createaccount-fail' => 'De bevestigingscode ontbreekt of is onjuist.',
+ 'captcha-create' => 'U wilt een nieuwe pagina aanmaken. Voer alstublieft het antwoord op de onderstaande eenvoudige som in het invoervenster in ([[Special:Captcha/help|meer informatie]]):',
+ 'captchahelp-title' => 'Captcha-hölp',
+ 'captchahelp-cookies-needed' => 'Ge dient in uw browser cookies ingeschakeld te hebbe om dit te laote werke.',
+ 'captchahelp-text' => "Websites die vrie te bewèrke zeen, wie deze wiki, waere döks misbroek door spammers die d'r met hun programma's automatisch links op zetten naar vele websites. Hoewel deze externe links weer verwijderd kunnen worden, leveren ze wel veel hinder en administratief werk op.
+
+Soms, en in het bijzonder bij het toevoegen van externe links op pagina's, toont de wiki u een afbeelding met gekleurde of vervormde tekst en wordt u gevraagd de getoonde tekst in te voeren. Omdat dit proces lastig te automatiseren is, zijn vrijwel alleen mensen in staat dit proces succesvol te doorlopen en worden hiermee spammers en andere geautomatiseerde aanvallen geweerd.
+
+Helaas levert deze bevestiging voor gebruikers met een visuele handicap of een tekst- of spraakgebaseerde browser problemen op. Op het moment is er geen alternatief met geluid beschikbaar. Vraag alstublieft assistentie van de [[{{MediaWiki:Grouppage-sysop}}|sitebeheerders]] als dit proces u verhindert een nuttige bijdrage te leveren.
+
+Klik óppe 'trök'-knoep in uw browser om terug te gaan naar het tekstbewerkingsscherm.",
+ 'captcha-addurl-whitelist' => ' #<!-- laot deze regel --> <pre>
+# De syntaxis is as volgt:
+# * Alle tekst vanaaf \'t karakter "#" tot het einde van de regels wordt gezien als opmerking
+# * Iedere niet-lege regel is een fragment van een reguliere uitdrukking die alleen van toepassing is op hosts binnen URL\'s
+ #</pre> <!-- laot deze regel -->',
+ 'right-skipcaptcha' => 'Captchahandelinge oetveure zonder captcha te hove oplosse',
+);
+
+/** Lao (ລາວ) */
+$messages['lo'] = array(
+ 'captcha-edit' => 'àºàº²àº™àº”ັດà»àºà»‰ ຂອງ ທ່ານ ມີລິ້ງູຄ໌ພາàºàº™àº­àº. ເພື່ອ ເປັນàºàº²àº™àºŠà»ˆàº­àºàº›à»‰àº­àº‡àºàº±àº™ ສະà»àº›àº¡àº­àº±àº”ຕະໂນມັດ, àºàº°àº¥àº¸àº™àº²à»àºà»‰à»€àº¥àºàºšàº§àº ງ່າàºà»†àº‚້າງລຸ່ມນີ້ à»àº¥à»‰àº§ ພິມຄຳຕອບໃສ່ໃນ àºàº±àºš ([[Special:Captcha/help|more info]]):',
+ 'captcha-addurl' => 'àºàº²àº™àº”ັດà»àºà»‰àº‚ອງທ່ານ ມີ àºàº²àº™àºàº²àº‡àº¥àº´à»‰àº‡àº„໌ຫາພາàºàº™àº­àº. ເພື່ອເປັນàºàº²àº™àºŠà»ˆàº­àºàº›à»‰àº­àº‡àºàº±àº™ ສະà»àº›àº¡àº­àº±àº”ຕະໂນມັດ àºàº°àº¥àº¸àº™àº² à»àºà»‰à»€àº¥àºàºšàº§àºàº‡à»ˆàº²àºà»†àº‚້າງລຸ່ມນີ້ à»àº¥à»‰àº§ ພິມຜົນບວຠໃສ່ àºàº±àºš ([[Special:Captcha/help|ຂà»à»‰àº¡àº¹àº™à»€àºžàºµà»ˆàº¡à»€àº•àºµàº¡]]):',
+ 'captcha-createaccount' => 'ເພື່ອປ້ອງàºàº±àº™ àºàº²àº™àºªà»‰àº²àº‡àºšàº±àº™àºŠàºµà»àºšàºšàº­àº±àº”ຕະໂນມັດ, àºàº°àº¥àº¸àº™àº² à»àºà»‰à»€àº¥àºàºšàº§àºàº‡à»ˆàº²àºà»† ຂ້າງລຸ່ມ à»àº¥à»‰àº§ ພິມຄຳຕອບໃສ່ àºàº±àºš ([[Special:Captcha/help|more info]]):',
+ 'captcha-createaccount-fail' => 'ບà»à»ˆàº–ືຠຫຼື ບà»à»ˆàº¡àºµàº¥àº°àº«àº±àº”ຢືນຢັນ.',
+ 'captcha-create' => 'àºàº°àº¥àº¸àº™àº² à»àºà»‰à»€àº¥àºàºšàº§àºàº‡à»ˆàº²àºà»†àº¥àº¸à»ˆàº¡àº™àºµà»‰ à»àº¥àº° ພິມຜົນບວàºà»ƒàºªà»ˆà»ƒàº™àºàº±àºš ເພື່ອ ສ້າງໜ້ານີ້ ([[Special:Captcha/help|ຂà»à»‰àº¡àº¹àº™à»€àºžàºµà»ˆàº¡à»€àº•àºµàº¡]]):',
+);
+
+/** Lithuanian (Lietuvių)
+ * @author Garas
+ * @author Homo
+ * @author Matasg
+ */
+$messages['lt'] = array(
+ 'captcha-edit' => 'Kad redaguotumÄ—te šį straipsnį, apskaiÄiuokite Å¡iÄ… paprastÄ… sumÄ… ir įveskite atsakymÄ… į laukelį ([[Special:Captcha/help|daugiau informacijos]]):',
+ 'captcha-createaccount-fail' => 'Blogas arba nerastas patvirtinimo kodas.',
+);
+
+/** Latvian (Latviešu)
+ * @author BrokenArrow
+ * @author Marozols
+ * @author Yyy
+ */
+$messages['lv'] = array(
+ 'captcha-edit' => 'Lai izmainÄ«tu Å¡o lapu, atrisini Å¡o vienÄdojumu un iegÅ«to skaitli ieraksti Å¡ajÄ lodziņÄ: <br />([[Special:Captcha/help|KÄpÄ“c tÄ?]])',
+ 'captcha-addurl' => 'Tavas izmaiņas ietver jaunu URL saiti. Lai pasargÄtos no automÄtiskas mÄ“stuļoÅ¡anas, Tev ir jÄieraksta te redzamÄ vienÄdojuma rezultÄts: <br />([[Special:Captcha/help|KÄpÄ“c tÄ?]])',
+ 'captcha-badlogin' => 'Lai pasargÄtos no automÄtiskiem paroļu lauzÄ“jiem, lÅ«dzu aprÄ“Ä·ini Å¡Ä«s izteiksmes vÄ“rtÄ«bu un rezultÄtu ieraksti apakÅ¡Ä esoÅ¡ajÄ lodziÅ†Ä ([[Special:Captcha/help|papildus informÄcija]]):',
+ 'captcha-createaccount' => 'Lai pasargÄtos no automÄtiskas mÄ“stuļoÅ¡anas, Tev reÄ£istrÄ“joties ir jÄieraksta Å¡Ä« vienÄdojuma rezultÄts: <br />([[Special:Captcha/help|KÄpÄ“c tÄ?]])',
+ 'captcha-createaccount-fail' => 'Nepareizs apstiprinÄjuma kods vai arÄ« tas nav ievadÄ«ts.',
+ 'captcha-create' => 'Lai izveidotu Å¡o lapu, atrisini Å¡o vienÄdojumu un rezulÄtu ieraksti Å¡ajÄ lodziņÄ: <br />([[Special:Captcha/help|KÄpÄ“c tÄ?]])',
+ 'captchahelp-cookies-needed' => "Lai Å¡is darbotos, pÄrlÅ«kprogrammÄ jÄbÅ«t iespÄ“jotÄm (''enabled'') sÄ«kdatnÄ“m (''cookies'').",
+ 'captchahelp-text' => "Interneta lapas, kurÄs iespÄ“jams pievienot tekstu, kÄ Å¡ajÄ wiki, bieži cieÅ¡ no mÄ“stuļotÄjiem, kuri izmanto automatizÄ“tus lÄ«dzekļus, lai pievienotu savus saites daudzÄs jo daudzÄs interneta lapÄs.
+Kaut arÄ« Å¡Ä«s saites var viegli dzÄ“st, tomÄ“r tÄs ir nozÄ«mÄ«gs traucÄ“klis.
+
+ReizÄ“m, jo Ä«paÅ¡i pievienojot jaunas interneta saites, wiki programmatÅ«ra var parÄdÄ«t Tev attÄ“lu, kurÄ ir krÄsains vai sagrozÄ«ts teksts. Å is teksts ir jÄpÄrraksta un to ir ļoti grÅ«ti izdarÄ«t automÄtiski, tÄ apgrÅ«tinot lielÄko daļu mÄ“stuļotÄju, savukÄrt gandrÄ«z visi parastie lietotÄji to var izdarÄ«t bez grÅ«tÄ«bÄm.
+
+Diemžēl tas var apgrÅ«tinÄt lietotÄjus, kuriem ir redzes traucÄ“jumi vai kuri izmanto teksta pÄrlÅ«kus vai dzirdes pÄrlÅ«kus. Å obrÄ«d nav pieejama audio alternatÄ«va, bet sazinies ar [[{{MediaWiki:Grouppage-sysop}}|wiki administratoriem]], ja tas liedz Tev veikt labi domÄtus papildinÄjumus.
+
+Spied pÄrlÅ«ka pogu \"Atpakaļ\" (''Back''), lai atgrieztos iepriekÅ¡Ä“jÄ lapÄ.",
+);
+
+/** Malagasy (Malagasy)
+ * @author Jagwar
+ */
+$messages['mg'] = array(
+ 'right-skipcaptcha' => 'Manao tao mampisy ny captcha fa tsy mila mameno azy',
+);
+
+/** Macedonian (МакедонÑки)
+ * @author Bjankuloski06
+ * @author Brest
+ */
+$messages['mk'] = array(
+ 'captcha-edit' => 'За да ја уредите оваа Ñтраница потребно е да го најдете решението на едноÑтавната задача поÑтавена подолу и одговорот да го внеÑете во Ñоодветното поле за одговор([[Special:Captcha/help|повеќе информации]]):',
+ 'captcha-desc' => 'Овозможува техники од CAPTCHA за заштита од Ñпам и погодување на лозинки',
+ 'captcha-addurl' => 'Вашето уредување Ñодржи нови надворешни врÑки.
+За да ни помогнете да Ñе заштитиме од автоматизиран Ñпам, решете ја проÑтата задача подолу и впишете го бројот во полето ([[Special:Captcha/help|повеќе инфо]]):',
+ 'captcha-badlogin' => 'За да ни помогнете да Ñе заштитиме од автоматизирано пробивање на лозинки, решете ја проÑтата задача подолу и впишете го решението во полето
+([[Special:Captcha/help|повеќе инфо]]):',
+ 'captcha-createaccount' => 'За да ни помогнете да Ñе заштитиме од автоматизирано Ñоздавање на Ñметки, решете ја проÑтата задача подолу и впишете го бројот во полето ([[Special:Captcha/help|повеќе инфо]]):',
+ 'captcha-createaccount-fail' => 'Потврдниот код е неточен или недоÑтаÑува.',
+ 'captcha-create' => 'За да ја Ñоздадете Ñтраницата, прво решете ја проÑтата задача подолу и впишете го решението во полето ([[Special:Captcha/help|повеќе инфо]]):',
+ 'captcha-sendemail' => 'За да Ñе заштитиме од автоматизирано Ñпамирање, решете ја проÑтата задача подолу и впишете го резултатот во полето ([[Special:Captcha/help|повеќе информации]]):',
+ 'captcha-sendemail-fail' => 'Потврдниот код е неточен или недоÑтаÑува.',
+ 'captcha-disabledinapi' => 'Ова дејÑтво бара captcha, така што не може да Ñе изврши преку API.',
+ 'captchahelp-title' => 'Помош Ñо Captcha',
+ 'captchahelp-cookies-needed' => 'Треба да имате овозможено колачиња за да може ова да работи.',
+ 'captchahelp-text' => 'Мрежните меÑта кои прифаќаат учеÑтво на јавноÑта, како ова вики, чеÑтопати Ñтрадаат од Ñпамери кои кориÑтат автоматизирани алатки за да ги додаваат нивните врÑки на голем број мережни Ñтраници. Иако врÑките на Ñпамерот може да Ñе отÑтранат, тие значително ја пореметуваат нашата работа.
+
+Понекогаш, оÑобено кога додава нови врÑки на Ñтраница, викито може да ви прикаже обоен или извитоперен текÑÑ‚ и да ви побара да ги впишете прикажаните зборови.
+Бидејќи ова е задача која е тешко да Ñе автоматизира, им овозможува виÑтинÑките кориÑници да придонеÑуваат, а им попречува на Ñпамерите и другите роботÑки напаѓачи.
+
+ÐажалоÑÑ‚ ова може да е проблем за кориÑници Ñо лош вид, или оние кои кориÑтат прелиÑтувачи на оÑнова на текÑÑ‚ или глаÑовни наредби.
+Во моментов немаме аудио-алтернатива за ова.
+Контактирајте ги [[{{MediaWiki:Grouppage-sysop}}|админиÑтраторите на Ñтраната]] за помош доколку ова неочекувано ве Ñпречува во правењето на иÑкрени придонеÑи.
+
+Кликнете на копчето „назад“ во вашиот прелиÑувач за да Ñе вратите на уредувањето на Ñтраницата.',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# ÐžÐ¿Ð¸Ñ Ð½Ð° ÑинтакÑата:
+# * Сето она што Ñтои по знакот „#“, па до крајот на редот е коментар
+# * Секој непразен ред Ñе Ñмета за фрагмент од регуларен израз кој одговара Ñамо на имиња во URL адреÑи
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Изведување на акции кои повикуваат captcha без да одат преку captcha ÑиÑтемот',
+);
+
+/** Malayalam (മലയാളം)
+ * @author Praveenp
+ * @author Shijualex
+ */
+$messages['ml'] = array(
+ 'captcha-edit' => 'à´ˆ താൾ തിരàµà´¤àµà´¤àµà´µà´¾àµ», ദയവായി താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ ലഘൠഗണിത à´•àµà´°à´¿à´¯ ചെയàµà´¤àµ അതിനàµà´±àµ† ഉതàµà´¤à´°à´‚ താഴെയàµà´³àµà´³ പെടàµà´Ÿà´¿à´¯à´¿àµ½ ടൈപàµà´ªàµ ചെയàµà´¯àµà´• ([[Special:Captcha/help|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
+ 'captcha-desc' => 'പാഴെഴàµà´¤àµà´¤àµ ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´²à´¿à´¨àµà´‚ രഹസàµà´¯à´µà´¾à´•àµà´•àµ ഊഹികàµà´•à´²à´¿à´¨àµà´®àµ†à´¤à´¿à´°àµ† സംരകàµà´·à´£à´‚ തരàµà´¨àµà´¨ കാപàµà´š സംവിധാനം നൽകàµà´¨àµà´¨àµ',
+ 'captcha-addurl' => 'താങàµà´•à´³àµà´Ÿàµ† തിരàµà´¤àµà´¤à´²à´²à´¿àµ½ à´ªàµà´±à´‚ à´•à´£àµà´£à´¿à´•àµ¾ ഉൾപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.
+യാനàµà´¤àµà´°à´¿à´• à´¸àµà´ªà´¾à´®à´¿à´¨àµ†à´¤à´¿à´°àµ†à´¯àµà´³àµà´³ സം‌രകàµà´·à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† ഭാഗമായി, ദയവായി താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ ലഘൠഗണിത à´•àµà´°à´¿à´¯ ചെയàµà´¤àµ അതിനàµà´±àµ† ഉതàµà´¤à´°à´‚ താഴെയàµà´³àµà´³ പെടàµà´Ÿà´¿à´¯à´¿àµ½ ടൈപàµà´ªàµ ചെയàµà´¯àµà´• ([[Special:Captcha/help|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
+ 'captcha-badlogin' => 'യാനàµà´¤àµà´°à´¿à´• രഹസàµà´¯à´µà´¾à´•àµà´•àµ പൊളികàµà´•à´²à´¿à´¨àµ†à´¤à´¿à´°à´¾à´¯àµà´³àµà´³ സം‌രകàµà´·à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† ഭാഗമായി, ദയവായി താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ ലഘൠഗണിത à´•àµà´°à´¿à´¯ ചെയàµà´¤àµ അതിനàµà´±àµ† ഉതàµà´¤à´°à´‚ താഴെയàµà´³àµà´³ പെടàµà´Ÿà´¿à´¯à´¿àµ½ ടൈപàµà´ªàµ ചെയàµà´¯àµà´• ([[Special:Captcha/help|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
+ 'captcha-createaccount' => 'യാനàµà´¤àµà´°à´¿à´• à´…à´‚à´—à´¤àµà´µà´‚ സൃഷàµà´Ÿà´¿à´•àµà´•à´²à´¿à´¨àµ†à´¤à´¿à´°àµ†à´¯àµà´³àµà´³ സം‌രകàµà´·à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† ഭാഗമായി, ദയവായി താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ ലഘൠഗണിത à´•àµà´°à´¿à´¯ ചെയàµà´¤àµ അതിനàµà´±àµ† ഉതàµà´¤à´°à´‚ താഴെയàµà´³àµà´³ പെടàµà´Ÿà´¿à´¯à´¿àµ½ ടൈപàµà´ªàµ ചെയàµà´¯àµà´• ([[Special:Captcha/help|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
+ 'captcha-createaccount-fail' => 'തെറàµà´±à´¾à´¯à´¤àµ‹ ലഭàµà´¯à´®à´²àµà´²à´¾à´¤àµà´¤à´¤àµ‹ ആയ à´¸àµà´¥à´¿à´°àµ€à´•à´°à´£ കോഡàµ.',
+ 'captcha-create' => 'à´ˆ താൾ സൃഷàµà´Ÿà´¿à´•àµà´•àµà´µà´¾àµ», ദയവായി താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ കൂടàµà´Ÿàµ½ à´•àµà´°à´¿à´¯à´¯àµà´Ÿàµ† ഉതàµà´¤à´°à´‚ താഴെയàµà´³àµà´³ പെടàµà´Ÿà´¿à´¯à´¿àµ½ à´Žà´´àµà´¤àµà´• ([[Special:Captcha/help|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
+ 'captcha-sendemail' => 'യാനàµà´¤àµà´°à´¿à´•à´®à´¾à´¯ പാഴെഴàµà´¤àµà´¤àµ ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´²à´¿à´¨àµà´³àµà´³ à´ªàµà´°à´¤à´¿à´°àµ‹à´§à´®àµ†à´¨àµà´¨ നിലയിൽ, ദയവായി താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ ലഘൠഗണിതപàµà´°à´¶àµà´¨à´¤àµà´¤à´¿à´¨àµà´±àµ† ഉതàµà´¤à´°à´‚ പെടàµà´Ÿà´¿à´¯à´¿àµ½ à´Žà´´àµà´¤àµà´• ([[Special:Captcha/help|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
+ 'captcha-sendemail-fail' => 'തെറàµà´±à´¾à´¯à´¤àµ‹ ലഭàµà´¯à´®à´²àµà´²à´¾à´¤àµà´¤à´¤àµ‹ ആയ à´¸àµà´¥à´¿à´°àµ€à´•à´°à´£ കോഡàµ.',
+ 'captcha-disabledinapi' => 'à´ˆ à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿ പൂർണàµà´£à´®à´¾à´•à´¾àµ» കാപàµà´š ആവശàµà´¯à´®à´¾à´£àµ, à´…à´¤àµà´•àµŠà´£àµà´Ÿà´¿à´¤àµ à´Ž.പി.à´. ഉപയോഗിചàµà´šàµ ചെയàµà´¯à´¾àµ» കഴിയിലàµà´².',
+ 'captchahelp-title' => 'കാപàµà´šàµà´š സഹായം',
+ 'captchahelp-cookies-needed' => 'ഇതൠപàµà´°à´µàµ¼à´¤àµà´¤à´¿à´•àµà´•à´£à´®àµ†à´™àµà´•à´¿àµ½ താങàµà´•à´³àµà´Ÿàµ† à´¬àµà´°àµ—സറിൽ à´•àµà´•àµà´•à´¿à´•àµ¾ സജàµà´œàµ€à´•à´°à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•à´£à´‚.',
+ 'captchahelp-text' => "à´ˆ വികàµà´•à´¿à´ªàµ‹à´²àµ† പൊതàµà´œà´¨à´™àµà´™à´³à´¿àµ½ നിനàµà´¨àµà´‚ à´ªàµà´°à´¸à´¿à´¦àµà´§à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´²àµà´•àµ¾ à´¸àµà´µàµ€à´•à´°à´¿à´•àµà´•àµà´¨àµà´¨ വെബàµâ€Œâ€Œà´¸àµˆà´±àµà´±àµà´•àµ¾, à´¸àµà´µà´¯à´‚ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨ ഉപകരണങàµà´™àµ¾ ഉപയോഗിചàµà´šàµ à´•à´£àµà´£à´¿à´•à´³àµà´‚ മറàµà´±àµà´‚ à´ªàµà´°à´¸à´¿à´¦àµà´§à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´¨àµà´¨ à´¸àµà´ªà´¾à´®àµ¼à´®à´¾àµ¼ സാധാരണ à´¦àµà´°àµà´ªà´¯àµ‹à´—à´‚ ചെയàµà´¯à´¾à´±àµà´£àµà´Ÿàµ.
+ഇതàµà´¤à´°à´¤àµà´¤à´¿à´²àµà´³àµà´³ à´¸àµà´ªà´¾à´‚ à´•à´£àµà´£à´¿à´•àµ¾ നീകàµà´•à´‚ചെയàµà´¯à´ªàµà´ªàµ†à´Ÿàµà´Ÿàµà´ªàµ‹à´•àµà´®àµ†à´™àµà´•à´¿à´²àµà´‚, à´…à´µ ശരികàµà´•àµà´‚ ശലàµà´¯à´®à´¾à´£àµ.
+
+ചിലപàµà´ªàµ‹àµ¾, à´ªàµà´°à´¤àµà´¯àµ‡à´•à´¿à´šàµà´šàµ ഒരൠവെബൠകണàµà´£à´¿ താളിൽ കൂടàµà´Ÿà´¿à´šàµà´šàµ‡àµ¼à´•àµà´•àµà´®àµà´ªàµ‹àµ¾, നിറങàµà´™àµ¾ ചേർതàµà´¤à´¤àµ‹ വികലമാകàµà´•à´¿à´¯à´¤àµ‹ ആയ à´Žà´´àµà´¤àµà´¤àµà´•àµ¾ താങàµà´•à´³àµ† കാണിചàµà´šàµ à´…à´µ താങàµà´•à´³àµ‹à´Ÿàµ ടെപàµà´ªàµ ചെയàµà´¯à´¾àµ» വികàµà´•à´¿ ആവശàµà´¯à´ªàµà´ªàµ†à´Ÿà´¾à´‚.
+ഇതൠമനàµà´·àµà´¯à´¸à´¹à´¾à´¯à´®à´¿à´²àµà´²à´¾à´¤àµ† ചെയàµà´¯à´¾àµ» à´¬àµà´¦àµà´§à´¿à´®àµà´Ÿàµà´Ÿà´¾à´£àµ, à´…à´¤àµà´•àµŠà´£àµà´Ÿàµ ശരികàµà´•àµà´‚ മനàµà´·àµà´¯à´°à´¾à´¯à´¿à´Ÿàµà´Ÿàµà´³àµà´³à´µàµ¼à´•àµà´•àµ അവരàµà´Ÿàµ† à´ªàµà´°à´¸à´¿à´¦àµà´§à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´²àµà´•àµ¾ ചേർകàµà´•à´¾à´¨àµà´‚ അതേസമയം ബഹàµà´­àµ‚രിപകàµà´·à´‚ à´¸àµà´ªà´¾à´®àµ¼à´®à´¾à´°àµ‡à´¯àµà´‚ യനàµà´¤àµà´°à´™àµà´™à´³àµà´ªà´¯àµ‹à´—à´¿à´šàµà´šàµ ആകàµà´°à´®à´¿à´•àµà´•àµà´¨àµà´¨à´µà´°àµ‡à´¯àµà´‚ തടയാനàµà´‚ à´•à´´à´¿à´¯àµà´¨àµà´¨à´¤à´¾à´£àµ.
+
+ദൗർഭാഗàµà´¯à´•à´°à´®àµ†à´¨àµà´¨àµ പറയടàµà´Ÿàµ† ഇതൠചിലപàµà´ªàµ‹àµ¾ ദൃഷàµà´Ÿà´¿à´µàµˆà´•à´²àµà´¯à´‚ കൊണàµà´Ÿàµ‹ മറàµà´±àµ‹ à´Žà´´àµà´¤àµà´¤àµà´•àµ¾ മാതàµà´°à´®à´¨àµà´µà´¦à´¿à´•àµà´•àµà´¨àµà´¨ à´¬àµà´°àµ—സറàµà´•àµ¾ ഉപയോഗികàµà´•àµà´¨àµà´¨à´µàµ¼, ശബàµà´¦à´‚ കേടàµà´Ÿàµ മനസàµà´¸à´¿à´²à´¾à´•àµà´•àµà´¨àµà´¨à´µàµ¼ à´¤àµà´Ÿà´™àµà´™à´¿à´¯à´µàµ¼à´•àµà´•àµ à´¬àµà´¦àµà´§à´¿à´®àµà´Ÿàµà´Ÿà´¾à´¯àµ‡à´•àµà´•à´¾à´‚.
+ഇപàµà´ªàµ‹àµ¾ à´žà´™àµà´™àµ¾à´•àµà´•àµ ഇതിനൠപകരം ശബàµà´¦à´‚ നൽകàµà´¨àµà´¨ സംവിധാനമിലàµà´².
+
+ഇതൠനàµà´¯à´¾à´¯à´®à´¾à´¯ à´ªàµà´°à´¸à´¿à´¦àµà´§à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´²àµà´•àµ¾ ഇടàµà´¨àµà´¨à´¤à´¿àµ½ നിനàµà´¨àµà´‚ à´…à´ªàµà´°à´¤àµ€à´•àµà´·à´¿à´¤à´®à´¾à´¯à´¿ താങàµà´•à´³àµ† തടയàµà´¨àµà´¨àµà´µàµ†à´™àµà´•à´¿àµ½ ദയവായി [[{{MediaWiki:Grouppage-sysop}}|സൈറàµà´±à´¿à´¨àµà´±àµ† കാരàµà´¯à´¨à´¿àµ¼à´µà´¾à´¹à´•à´°àµ†]] ബനàµà´§à´ªàµà´ªàµ†à´Ÿàµà´•.
+
+à´¬àµà´°àµ—സറിലെ 'ബാകàµà´•àµ' ബടàµà´Ÿàµº ഞെകàµà´•à´¿à´¯à´¾àµ½ താങàµà´•àµ¾à´•àµà´•àµ താൾ തിരàµà´¤àµà´¤àµà´µà´¾à´¨àµà´³àµà´³ സംവിധാനതàµà´¤à´¿à´²àµ‡à´¯àµà´•àµà´•àµ മടങàµà´™à´¿à´ªàµà´ªàµ‹à´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµ.",
+ 'captcha-addurl-whitelist' => ' #<!-- à´ˆ വരി ഇതàµà´ªàµ‹à´²àµ† തനàµà´¨àµ† നിലനിർതàµà´¤àµà´• --> <pre>
+# സിനàµà´±à´¾à´•àµà´¸àµ താഴെ കാണàµà´¨àµà´¨ à´ªàµà´°à´•à´¾à´°à´®à´¾à´£àµâ€Œ:
+# * "#" à´Žà´¨àµà´¨ à´…à´•àµà´·à´°à´¤àµà´¤à´¿àµ½ à´¤àµà´Ÿà´™àµà´™àµà´¨àµà´¨ à´Žà´²àµà´²à´¾ വരികളàµà´‚ à´•àµà´±à´¿à´ªàµà´ªàµà´•à´³à´¾à´¯à´¿à´°à´¿à´•àµà´•àµà´‚
+# * ശൂനàµà´¯à´®à´²àµà´²à´¾à´¤àµà´¤ à´Žà´²àµà´²à´¾ വരികളàµà´‚ à´¯àµ.ആർ.à´Žà´²àµà´²à´¿à´¨àµ à´…à´•à´¤àµà´¤àµ† ഹോസàµà´±àµà´±àµà´•à´³àµà´®à´¾à´¯à´¿ മാതàµà´°à´‚ à´’à´¤àµà´¤àµà´¨àµ‹à´•àµà´•àµà´¨àµà´¨ റെജെകàµà´¸àµ ഘടകങàµà´™à´³à´¾à´¯à´¿à´°à´¿à´•àµà´•àµà´‚
+ #</pre> <!-- à´ˆ വരി ഇതàµà´ªàµ‹à´²àµ† തനàµà´¨àµ† നിലനിർതàµà´¤àµà´• -->',
+ 'right-skipcaptcha' => 'കാപàµà´š ഉപയോഗികàµà´•àµ‡à´£àµà´Ÿ à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿à´•àµ¾ കാപàµà´šà´¯à´¿à´²àµ‚ടെ à´•à´Ÿà´¨àµà´¨àµ പോകാതെ തനàµà´¨àµ† ചെയàµà´¯à´¾àµ» à´•à´´à´¿à´¯àµà´•',
+);
+
+/** Mongolian (Монгол)
+ * @author Chinneeb
+ */
+$messages['mn'] = array(
+ 'captcha-createaccount' => 'Ðвтоматаар Ñ…ÑÑ€ÑглÑгчийн бүртгÑл Ò¯Ò¯ÑгÑÑ…ÑÑÑ ÑÑргийлÑхийн тулд дараах Ñ…Ñлбар нийлбÑрийг бодож хайрцагт хариуг нь оруулна уу
+([[Special:Captcha/help|дÑлгÑÑ€Ñнгүй мÑдÑÑлÑл]]):',
+ 'captcha-createaccount-fail' => 'Баталгаажуулах код алдаатай, ÑÑвÑл байхгүй байна.',
+ 'captchahelp-title' => 'Captcha-н талаар туÑламж',
+ 'captchahelp-cookies-needed' => 'Үүнийг ажиллуулахын тулд та вÑб хөтөчийнхөө күүкиг идÑвхижүүлÑÑ… Ñ…ÑÑ€ÑгтÑй.',
+ 'captchahelp-text' => 'Ð­Ð½Ñ Ð²Ð¸ÐºÐ¸ шиг Ñ…Ò¯ÑÑÑн хүн болгон заÑварлах боломжтой вÑбÑайтуудад Ñпаммерууд Ñнз бүрийн Ñайтын холбооÑыг автоматаар олноор нь оруулдаг.
+ЭдгÑÑÑ€ Ñпам холбооÑуудыг уÑтгах боломжтой ч маш их төвөг учирдаг.
+
+Заримдаа, ÑлангуÑа ÑˆÐ¸Ð½Ñ Ð²Ñб холбооÑууд оруулж байх үед, вики нь өнгөт буюу мушгирÑан бичиг гаргаж таныг ÑÐ½Ñ Ð±Ð¸Ñ‡Ð³Ð¸Ð¹Ð³ шивж оруул гÑдÑг.
+Ð­Ð½Ñ Ò¯Ð¹Ð»Ð´Ð»Ð¸Ð¹Ð³ автоматаар хийх нь Ñ…Ñцүү ÑƒÑ‡Ñ€Ð°Ð°Ñ Ð¶Ð¸Ð½Ñ…ÑÐ½Ñ Ñ…Ò¯Ð¼Ò¯Ò¯Ñ Ó©Ó©Ñ€Ñдийн заÑваруудыг оруулах боломж олгодог ч Ñпаммерүүд болоод автомат халдлага үйлдÑгчдийг зогÑоож байдаг.
+
+ХарамÑалтай нь хараа муутай буюу бичигт ÑÑвÑл Ñрианд тулгуурлаÑан вÑб хөтөч ашигладаг Ñ…ÑÑ€ÑглÑгчдÑд хүндрÑл учирна.
+Одоогийн байдлаар дуун Ñонголт алга байна.
+Таньд бодит заÑвар хийхÑд хүндрÑл учирч байвал [[{{MediaWiki:Grouppage-sysop}}|Ñайтын админиÑтраторуудааÑ]] туÑламж авч холбогдоно уу.
+
+ХуудаÑны заÑварлагч руу буцахын тулд вÑб хөтөчийнхөө "буцаах" товч дÑÑÑ€ дарна уу.',
+);
+
+/** Marathi (मराठी)
+ * @author Kaustubh
+ */
+$messages['mr'] = array(
+ 'captcha-edit' => 'हे पान संपादित करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€, खाली दिलेले सोपे गणित सोडवून तà¥à¤¯à¤¾à¤šà¥‡ उतà¥à¤¤à¤° दिलेलà¥à¤¯à¤¾ पृषà¥à¤ à¤ªà¥‡à¤Ÿà¥€ मधà¥à¤¯à¥‡ लिहा ([[Special:Captcha/help|अधिक माहिती]]):',
+ 'captcha-desc' => 'सोपà¥à¤¯à¤¾ कॅपà¥à¤Ÿà¤šà¤¾à¤šà¤¾ वापर',
+ 'captcha-addurl' => 'तà¥à¤®à¤šà¥à¤¯à¤¾ संपादनात नवीन बाहà¥à¤¯à¤¦à¥à¤µà¥‡ आहेत. आपोआप होणारà¥â€à¤¯à¤¾ सà¥à¤ªà¥…म पासून वाचणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€, खाली दिलेले सोपे गणित सोडवून तà¥à¤¯à¤¾à¤šà¥‡ उतà¥à¤¤à¤° दिलेलà¥à¤¯à¤¾ पृषà¥à¤ à¤ªà¥‡à¤Ÿà¥€ मधà¥à¤¯à¥‡ लिहा ([[Special:Captcha/help|अधिक माहिती]]):',
+ 'captcha-badlogin' => 'आपोआप होणारà¥â€à¤¯à¤¾ परवलीचà¥à¤¯à¤¾ शबà¥à¤¦à¤¾à¤šà¥à¤¯à¤¾ चोरीपासून वाचणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€, खाली दिलेले सोपे गणित सोडवून तà¥à¤¯à¤¾à¤šà¥‡ उतà¥à¤¤à¤° दिलेलà¥à¤¯à¤¾ पृषà¥à¤ à¤ªà¥‡à¤Ÿà¥€ मधà¥à¤¯à¥‡ लिहा ([[Special:Captcha/help|अधिक माहिती]]):',
+ 'captcha-createaccount' => 'आपोआप होणारà¥â€à¤¯à¤¾ सदसà¥à¤¯ नोंदणीपासून वाचणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€, खाली दिलेले सोपे गणित सोडवून तà¥à¤¯à¤¾à¤šà¥‡ उतà¥à¤¤à¤° दिलेलà¥à¤¯à¤¾ पृषà¥à¤ à¤ªà¥‡à¤Ÿà¥€ मधà¥à¤¯à¥‡ लिहा ([[Special:Captcha/help|अधिक माहिती]]):',
+ 'captcha-createaccount-fail' => 'चà¥à¤•à¥€à¤šà¤¾ अथवा रिकामा सहमती कोड',
+ 'captcha-create' => 'हे पान तयार करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€, खाली दिलेले सोपे गणित सोडवून तà¥à¤¯à¤¾à¤šà¥‡ उतà¥à¤¤à¤° दिलेलà¥à¤¯à¤¾ पृषà¥à¤ à¤ªà¥‡à¤Ÿà¥€ मधà¥à¤¯à¥‡ लिहा ([[Special:Captcha/help|अधिक माहिती]]):',
+ 'captcha-sendemail-fail' => 'चà¥à¤•à¥€à¤šà¤¾ अथवा रिकामा सहमती कोड',
+ 'captchahelp-title' => 'कॅपà¥à¤Ÿà¤šà¤¾ साहायà¥à¤¯',
+ 'captchahelp-cookies-needed' => 'हे काम करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ तà¥à¤®à¥à¤¹à¥€ कूकीज (cookies) à¤à¤¨à¥‡à¤¬à¤² केलेलà¥à¤¯à¤¾ असणे गरजेचे आहे.',
+ 'captchahelp-text' => "जà¥à¤¯à¤¾ संकेतसà¥à¤¥à¤³à¤¾à¤‚वर जसे की हा विकि, सरà¥à¤µà¤¸à¤¾à¤®à¤¾à¤¨à¥à¤¯ लोकांकडून संपादने करणà¥à¤¯à¤¾à¤šà¥€ परवानगी असते, तिथे आपोआप होणारी सà¥à¤µà¤¤:चà¥à¤¯à¤¾ संकेतसà¥à¤¥à¤³à¤¾à¤‚चे दà¥à¤µà¥‡ देणारी संपादने (Spam) कायम होत असतात.
+अशी संपादने जरी काढता आली तरी ती à¤à¤• डोकेदà¥à¤–ी होऊ शकते.
+
+काहीवेळा, जेवà¥à¤¹à¤¾ à¤à¤–ादà¥à¤¯à¤¾ पानावर नवीन बाहà¥à¤¯à¤¦à¥à¤µà¤¾ देताना, विकि तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ à¤à¤• चितà¥à¤° दाखवून तà¥à¤¯à¤¾à¤‚तील शबà¥à¤¦ भरणà¥à¤¯à¤¾à¤¸ सांगू शकतो.
+हे काम संगणकाकरवी करून घेणà¥à¤¯à¤¾à¤¸ अवघड असलà¥à¤¯à¤¾à¤¨à¥‡, फकà¥à¤¤ खरी माणसेच संपादने करू शकतील व सà¥à¤ªà¥…मरà¥à¤¸à¤¨à¤¾ आळा बसू शकेल.
+
+पण खेदाची गोषà¥à¤Ÿ अशी की हà¥à¤¯à¤¾à¤®à¥à¤³à¥‡ अरà¥à¤§à¤¾à¤‚ध वà¥à¤¯à¤•à¥à¤¤à¥€ तसेच जà¥à¤¯à¤¾ वà¥à¤¯à¤•à¥à¤¤à¥€ फकà¥à¤¤ मजकूर दाखविणारा नà¥à¤¯à¤¾à¤¹à¤¾à¤³à¤• वापरतात, अशांना असà¥à¤µà¤¿à¤§à¤¾ होऊ शकते.
+सधà¥à¤¯à¤¾ आमचà¥à¤¯à¤¾à¤•à¤¡à¥‡ आवाज à¤à¤•à¤£à¥à¤¯à¤¾à¤šà¥€ सà¥à¤µà¤¿à¤§à¤¾ नाही.
+कृपया विकिवरील पà¥à¤°à¤¬à¤‚धकांशी या बाबतीत संपरà¥à¤• करावा.
+
+पृषà¥à¤  संपादनाकडे परत जाणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ आपलà¥à¤¯à¤¾ बà¥à¤°à¤¾à¤‰à¤à¤°à¤šà¥€ ’Back' ही कळ दाबा.",
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# रà¥à¤ªà¤°à¥‡à¤·à¤¾ खालीलपà¥à¤°à¤®à¤¾à¤£à¥‡:
+# * "#" ने सà¥à¤°à¥ होणारे व ओळीचà¥à¤¯à¤¾ शेवटपरà¥à¤¯à¤‚त जाणारे वाकà¥à¤¯ सूचना (Comment) आहे.
+# * पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• रिकामी नसलेली ओळ ही regex fragment आहे जी फकà¥à¤¤ URLमधील होसà¥à¤Ÿà¤¸à¤šà¥à¤¯à¤¾ जोडà¥à¤¯à¤¾ लावेल
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'कॅपचा मधà¥à¤¯à¥‡ न जाता कॅपचाचा वापर करणारà¥â€à¤¯à¤¾ कà¥à¤°à¤¿à¤¯à¤¾ करा',
+);
+
+/** Malay (Bahasa Melayu)
+ * @author Anakmalaysia
+ * @author Aurora
+ * @author Aviator
+ */
+$messages['ms'] = array(
+ 'captcha-edit' => 'Untuk menyunting laman ini, sila selesaikan kira-kira di bawah dan masukkan jawapannya dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'captcha-desc' => 'Menyediakan teknik CAPTCHA untuk melindungi daripada spam dan teka kata laluan',
+ 'captcha-addurl' => 'Suntingan anda mengandungi pautan luar baru.
+Untuk membanteras kegiatan spam automatik, anda diminta menyelesaikan kira-kira di bawah dan masukkan jawapannya dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'captcha-badlogin' => 'Untuk membanteras kegiatan meneka kata laluan secara automatik, anda diminta menyelesaikan kira-kira di bawah dan masukkan jawapannya dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'captcha-createaccount' => 'Untuk membanteras kegiatan pembukaan akaun secara automatik, anda diminta menyelesaikan kira-kira di bawah dan masukkan jawapannya dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'captcha-createaccount-fail' => 'Kod pengesahan tidak betul atau tidak ada.',
+ 'captcha-create' => 'Untuk mencipta laman tersebut, sila selesaikan kira-kira di bawah dan masukkan jawapannya dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'captcha-sendemail' => 'Untuk membanteras kegiatan spam secara automatik, anda diminta menyelesaikan kira-kira di bawah dan masukkan jawapannya dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'captcha-sendemail-fail' => 'Kod pengesahan tidak betul atau tidak ada.',
+ 'captcha-disabledinapi' => 'Tindakan ini memerlukan captcha, maka ia tidak boleh dilakukan melalui API.',
+ 'captchahelp-title' => 'Bantuan CAPTCHA',
+ 'captchahelp-cookies-needed' => "Sila aktifkan ''cookies'' pada pelayar web anda.",
+ 'captchahelp-text' => "Tapak web yang menerima sumbangan daripada orang awam, seperti wiki ini, sering disalahgunakan oleh penghantar spam yang menggunakan alatan automatik untuk mengirim pautan-pautan mereka di merata web.
+Walaupun pautan ini boleh dibuang, ia amat mengganggu.
+
+Kadangkala, terutamanya apabila menambah pautan baharu pada sesebuah laman, wiki ini akan memaparkan suatu imej yang mengandungi teks yang berwarna atau samar-samar dan meminta supaya anda menaip perkataan yang ditunjukkan.
+Oleh sebab tugas tersebut sukar dilakukan secara automatik, ia membolehkan manusia sebenar mengirim seperti biasa, manakala penghantar spam dan penyerang robot terhalang.
+
+Malangnya perkara ini boleh menyukarkan pengguna yang mengalami masalah penglihatan atau sedang menggunakan pelayar web teks atau tuturan. Pada masa ini kami tidak mempunyai alternatif audio.
+Sila hubungi [[{{MediaWiki:Grouppage-sysop}}|pentadbir tapak]] untuk mendapatkan bantuan sekiranya perkara ini menghalang anda daripada membuat sumbangan yang sah.
+
+Sila tekan butang 'back' di pelayar web anda untuk kembali ke laman suntingan.",
+ 'captcha-addurl-whitelist' => ' #<!-- jangan ubah baris ini --> <pre>
+# Sintaks:
+# * Aksara "#" sampai akhir baris diabaikan
+# * Ungkapan nalar dibaca daripada setiap baris dan dipadankan dengan nama hos sahaja
+ #</pre> <!-- jangan ubah baris ini -->',
+ 'right-skipcaptcha' => 'Melepasi pemeriksaan CAPTCHA',
+);
+
+/** Nahuatl (NÄhuatl)
+ * @author Fluence
+ */
+$messages['nah'] = array(
+ 'captchahelp-title' => 'Captchatechcopa tēpalēhuiliztli',
+);
+
+/** Min Nan Chinese (Bân-lâm-gú) */
+$messages['nan'] = array(
+ 'captcha-createaccount' => 'Ūi beh Ä«-hông lâng iÅng ke-si chÅ«-tÅng chù-chheh koh tah kóng-kò, chhiá⿠lí kÄ chhut-hiÄn tÄ« ang-á lÄi-bÄ«n ê jÄ« phah 1 piàn (thang chèng-bêng lí mÌ„ sÄ« ki-khì-lâng): <br />
+([[Special:Captcha/help|Che sÄ« siáâ¿-hòe?]])',
+ 'captcha-createaccount-fail' => 'Khak-jÄ«n-bé chhò-gÅ· iah-sÄ« làu-kau.',
+);
+
+/** Low German (Plattdüütsch)
+ * @author Slomox
+ */
+$messages['nds'] = array(
+ 'captcha-edit' => 'Disse Siet to ännern, musst du disse lütte Rekenopgaav lösen un dat Resultat in dat Feld ingeven ([[Special:Captcha/help|mehr dorto]]):',
+ 'captcha-desc' => 'Eenfach Captcha',
+ 'captcha-addurl' => 'In dien Ännern sünd ne’e Weblenken in.
+As Schutz gegen automaatsch Spam, löös disse lüttje Rekenopgaav un geev dat Resultat in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).',
+ 'captcha-badlogin' => 'As Schutz gegen Passwoord-Knackers, löös disse lüttje Rekenopgaav un geev dat Resultat in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).',
+ 'captcha-createaccount' => 'Dat hier nich Brukers automaatsch anleggt warrt, musst du disse lütte Rekenopgaav lösen ([[Special:Captcha/help|mehr dorto]]):',
+ 'captcha-createaccount-fail' => 'Kood to’n Bestätigen is verkehrt oder fehlt.',
+ 'captcha-create' => 'De Sied nee optostellen, löös disse lüttje Rekenopgaav un geev dat Resultat in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).',
+ 'captchahelp-title' => 'Help to Captchas',
+ 'captchahelp-cookies-needed' => 'Dien Browser mutt Cookies ünnerstütten un aktiveert hebben, dat dat geiht.',
+ 'captchahelp-text' => 'Websteden, de Bidrääg vun elkereen tolaten doot, so as dit Wiki, hebbt faken mit Spammers to doon, de en Computer-Programm bruukt, dat se jümmer Text oder Warf op mööglichst veel Sieden ünnerbringt.
+Ok wenn dat gau wedder rutnahmen warrt, stöört dat doch de Arbeid op dat Wiki.
+
+Af un to, besünners wenn du Lenken op Websteden in Sieden inföögst, wiest di de Software en Bild mit bunte un verdreihte Bookstaven un fraagt di, dat du de Bookstaven in dat Textfeld ingiffst.
+En Computer-Programm kann disse Bookstaven normalerwies nich lesen, aver de mehrsten Minschen köönt dat. Dormit sünd de Spammers vun de Sied utslaten.
+
+Dat kann aver ok angahn, dat nu ok Lüüd, de nich so good sehn köönt oder villicht Text- oder Vörlees-Browsers bruukt, mit disse Biller nich torecht kaamt.
+Opstunns gifft dat noch keen Audio-Alternativ för de Biller. Wenn du mit de Biller nich torechtkummst, denn schriev man an de Administraters vun de sied un beed jem üm Help.
+
+Mit den „Trüch“-Knopp vun dien Browser kummst du trüch na dat Ännerfinster.',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Op disse Siet staht de Websteden, bi de en Bruker,
+# de nich anmellt is un en ne’en Lenk in de Siet infögen deit,
+# keen Captcha utfüllen mutt.
+#
+# Syntax is disse:
+# * Allens vun en „#“-Teken bet na’t Enn vun de Reeg is en Kommentar
+# * All de annern Regen, de nich leddig sünd, warrt as regulären Utdruck bekeken,
+# de för Delen vun de Domään steiht.
+
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Överspringen vun Captchas',
+);
+
+/** Nedersaksisch (Nedersaksisch)
+ * @author Servien
+ */
+$messages['nds-nl'] = array(
+ 'captcha-edit' => "Um disse pagina te bewarken, mu-j eers 't antwoord op disse eenvoudige somme invullen ([[Special:Captcha/help|meer infermasie]]):",
+ 'captcha-desc' => 'Eenvoudige invoering van captcha',
+ 'captcha-addurl' => 'Joew bewarking bevat nieje uutgaonde verwiezingen.
+Voer ter de bescharming tegen ongewunste reclame de somme in dee hieronder steet:<br />
+([[Special:Captcha/help|Hulpe?]])',
+ 'captcha-badlogin' => "Los disse eenvoudige rekensomme op en voer 't antwoord in bie 't invoervienster in ter bescharming tegen 't autematisch kraken van wachwoorden ([[Special:Captcha/help|meer infermasie]]):",
+ 'captcha-createaccount' => "Voer ter bescharming tegen autematische ongewunste reclame 't antwoord op disse eenvoudige rekensomme in bie invoervienster ([[Special:Captcha/help|meer informatie]]):",
+ 'captcha-createaccount-fail' => 'Verkeerde of ontbrekende bevestigingscode.',
+ 'captcha-create' => "Je bin een nieje pagina an 't maken.
+Voer 't antwoord van disse eenvoudige rekensomme in bie 't invoervienster
+([[Special:Captcha/help|meer infermasie]]).",
+ 'captchahelp-title' => 'Lettertoetshulpe',
+ 'captchahelp-cookies-needed' => 'Je mutten cookies an hemmen staon um disse functie te gebruken.',
+ 'captchahelp-text' => "Websteeën waor iederene an kan biedragen, zoas disse {{SITENAME}}-wiki, wonnen vake misbruuk deurdat der ongewunste verwiezingen op ezet wonnen. Op disse wiki kunnen zokken bewarkingen makkelijk weerummezet wonnen, mar 't nimp wel tied in beslag dee aanders gebruuk kan wonnen.
+
+Soms a-j nieje verwiezingen bie een pagina derop zetten, wo-j evreugen um iets over te typen of in te vullen. Dit zörg derveur dat der gien ongewunste verwiezingen eplaos wonnen, umdat dit allinnig deur meensen edaon kan wonnen en neet deur botgebrukers.
+
+(Klik op de knoppe 'terug' in joew webkieker, um weerumme te gaon naor 't teksbewarkingscharm.)",
+ 'captcha-addurl-whitelist' => ' #<!-- laot disse regel zoas e is --> <pre>
+# De syntaxis is as volg:
+# * Alle tekse vanof \'t kerakter "#" tot \'t einde van de regels wonnen ezien as opmarking
+# * Alle regels dee neet leeg bin, wonnen ezien as een regeliere uutdrokking dee veur delen van de domein staon.
+ #</pre> <!-- laot disse regel zoas e is -->',
+);
+
+/** Dutch (Nederlands)
+ * @author SPQRobin
+ * @author Siebrand
+ */
+$messages['nl'] = array(
+ 'captcha-edit' => 'U wilt deze pagina bewerken.
+Voer het antwoord op de onderstaande eenvoudige som in het invoervenster in ([[Special:Captcha/help|meer informatie]]):',
+ 'captcha-desc' => 'Biedt CAPTCHA-technieken om bescherming te bieden tegen spam en het raden van wachtwoorden',
+ 'captcha-addurl' => "Uw bewerking bevat nieuwe externe verwijzingen (URL's).
+Voer ter bescherming tegen geautomatiseerde spam het antwoord op de onderstaande eenvoudige som in in het invoerveld ([[Special:Captcha/help|meer informatie]]):",
+ 'captcha-badlogin' => 'Los de onderstaande eenvoudige som op en voer het antwoord in het invoervenster in ter bescherming tegen het automatisch kraken van wachtwoorden ([[Special:Captcha/help|meer informatie]]):',
+ 'captcha-createaccount' => 'Voer ter bescherming tegen het geautomatiseerd gebruikers aanmaken het antwoord op de onderstaande eenvoudige som in het invoervenster in ([[Special:Captcha/help|meer informatie]]):',
+ 'captcha-createaccount-fail' => 'De bevestigingscode ontbreekt of is onjuist.',
+ 'captcha-create' => 'U wilt een nieuwe pagina aanmaken.
+Voer het antwoord op de onderstaande eenvoudige som in het invoervenster in ([[Special:Captcha/help|meer informatie]]):',
+ 'captcha-sendemail' => 'Voer ter bescherming tegen geautomatiseerde spam het antwoord op de onderstaande eenvoudige som in het invoervenster in ([[Special:Captcha/help|meer informatie]]):',
+ 'captcha-sendemail-fail' => 'De bevestigingscode ontbreekt of is onjuist.',
+ 'captcha-disabledinapi' => 'Voor deze handeling is een captcha nodig die niet afgehandeld kan worden via de API.',
+ 'captchahelp-title' => 'Captcha-hulppagina',
+ 'captchahelp-cookies-needed' => 'U dient in uw browser cookies ingeschakeld te hebben om dit te laten werken.',
+ 'captchahelp-text' => "Websites die vrij te bewerken zijn, zoals deze wiki, worden vaak misbruikt door spammers die er met hun programma's automatisch verwijzigen op zetten naar vele websites.
+Hoewel deze externe verwijzingen weer verwijderd kunnen worden, leveren ze wel veel hinder en administratief werk op.
+
+Soms, en in het bijzonder bij het toevoegen van externe verwijzingen op pagina's, ziet u een afbeelding met gekleurde of vervormde tekst en wordt u gevraagd de weergegeven tekst in te voeren.
+Omdat dit proces lastig te automatiseren is, zijn vrijwel alleen mensen in staat dit proces succesvol te doorlopen en worden hiermee spammers en andere geautomatiseerde aanvallen geweerd.
+
+Helaas levert deze bevestiging voor gebruikers met een visuele handicap of een tekst- of spraakgebaseerde browser problemen op.
+Op het moment is er geen alternatief met geluid beschikbaar.
+Vraag assistentie van de [[{{MediaWiki:Grouppage-sysop}}|sitebeheerders]] als dit proces u verhindert een nuttige bijdrage te leveren.
+
+Klik op de knop 'terug' in uw browser om terug te gaan naar het tekstbewerkingsscherm.",
+ 'captcha-addurl-whitelist' => ' #<!-- laat deze regel zoals hij is --> <pre>
+# De syntaxis is als volgt:
+# * Alle tekst vanaf het karakter "#" tot het einde van de regels wordt gezien als opmerking
+# * Iedere niet-lege regel is een fragment van een reguliere uitdrukking die alleen van toepassing is op hosts binnen URL\'s
+ #</pre> <!-- laat deze regel zoals hij is -->',
+ 'right-skipcaptcha' => 'Captchahandelingen uitvoeren zonder captcha te hoeven oplossen',
+);
+
+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+ * @author Eirik
+ * @author Frokor
+ * @author Harald Khan
+ * @author Nghtwlkr
+ */
+$messages['nn'] = array(
+ 'captcha-edit' => 'For å endre denne sida, ver venleg og løys det enkle reknestykket nedanfor og skriv svaret i ruta ([[Special:Captcha/help|meir informasjon]]):',
+ 'captcha-desc' => 'Enkel implementering av captcha-system.',
+ 'captcha-addurl' => 'Endringa di inkluderer nye lenkjer; som eit vern mot automatisert reklame (spam) er du nøydd til skrive inn orda i dette bildet: <br />([[Special:Captcha/help|Kva er dette?]])',
+ 'captcha-badlogin' => 'For å sikra oss mot automatisk passordtjuveri, ver venleg og skriv inn svaret på det enkle reknestykket i boksen nedanfor ([[Special:Captcha/help|meir informasjon]]):',
+ 'captcha-createaccount' => 'For å verne Wikipedia mot reklame (spam) må du skrive inn orda i biletet for å registrere ein konto. <br />([[Special:Captcha/help|Kva er dette?]])',
+ 'captcha-createaccount-fail' => 'Feil eller manglande godkjenningskode.',
+ 'captcha-create' => 'For å opprette denne sida, ver venleg og løys det enkle reknestykket nedanfor og skriv svaret i ruta ([[Special:Captcha/help|Kva er dette?]]):',
+ 'captchahelp-title' => 'Captcha-hjelp',
+ 'captchahelp-cookies-needed' => 'Du må ha informasjonskapslar aktivert i nettlesaren din for at dette skal verke.',
+ 'captchahelp-text' => 'Internettsider som kan verte endra av alle, som denne wikien, vert ofte misbrukte av reklameinnleggjarar (spammarar) som nyttar bottar til å poste mange lenkjer om gongen.
+Sjølv om slike reklamelenkjer kan verte fjerna er dei til stor irritasjon.
+
+Nokre gonger, særleg viss du vil leggje til nye internettlenkjer til ei side, kan wikien vise deg eit bilete av ein farga eller ujamn tekst og be deg skrive inn orda som vert viste.
+Sidan det er vanskeleg å automatisere denne oppgåva, vil funksjonen sleppe dei fleste verkelege menneska gjennom, men stoppe reklamerobotar.
+
+Diverre finst det i augeblikket ikkje noko lydalternativ for brukarar med nedsett syn som brukar tekst- eller talebaserte nettlesarar.
+Ver venleg å kontakte [[{{MediaWiki:Grouppage-sysop}}|administratorane]] viss denne funksjonen hindrar deg i å gjere skikkelege endringar.
+Trykk på «attende»-knappen for å kome tilbake til endringssida.',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Syntaksen er slik:
+# * Alt frå teiknet «#» til enden av lina er ein kommentar
+# * Alle liner som ikkje er tomme er fragment av regulære uttrykk som sjekkar vertar i URL-ar
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Utføre handlingar som normalt krever «captcha»-stadfesting utan å bruke «captcha»',
+);
+
+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+ * @author Audun
+ * @author Jon Harald Søby
+ * @author Laaknor
+ * @author Nghtwlkr
+ */
+$messages['no'] = array(
+ 'captcha-edit' => 'Skriv inn summen nedenfor i boksen for å kunne redigere denne siden ([[Special:Captcha/help|mer informasjon]]):',
+ 'captcha-desc' => 'Gir tilgang til CAPTCHA-teknikker for å beskytte mot søppl og passordgjetting',
+ 'captcha-addurl' => 'Din redigering inneholder nye eksterne lenker. Løs det enkle regnestykket i boksen nedenfor for å hjelpe oss å beskytte oss mot automatisk spam ([[Special:Captcha/help|mer informasjon]]):',
+ 'captcha-badlogin' => 'Løs det enkle regnestykket i boksen nedenfor for å hjelpe oss å beskytte oss mot automatisk passordtyveri ([[Special:Captcha/help|mer informasjon]]):',
+ 'captcha-createaccount' => 'Løs det enkle regnestykket i boksen nedenfor for å hjelpe oss å beskytte oss mot automatisk kontoopprettelse ([[Special:Captcha/help|mer informasjon]]):',
+ 'captcha-createaccount-fail' => 'Ukorrekt eller manglende bekreftelseskode.',
+ 'captcha-create' => 'Løs det enkle regnestykket i boksen nedenfor for å opprette siden ([[Special:Captcha/help|mer informasjon]]):',
+ 'captcha-sendemail' => 'Løs det enkle regnestykket i boksen nedenfor for å hjelpe oss å beskytte oss mot automatisk spamming ([[Special:Captcha/help|mer informasjon]]):',
+ 'captcha-sendemail-fail' => 'Ukorrekt eller manglende bekreftelseskode.',
+ 'captcha-disabledinapi' => 'Denne handlinger krever en captcha, så den kan ikke bli gjort gjennom APIet.',
+ 'captchahelp-title' => 'Hjelp med Captcha',
+ 'captchahelp-cookies-needed' => 'Du må slå på informasjonskapsler for at dette skal fungere.',
+ 'captchahelp-text' => "Internettsider som kan redigeres av alle, som denne wikien, blir ofte misbrukt av spammere som bruker roboter for å poste massive antall lenker. Selv om slike spamlenker kan fjernes er de til stor irritasjon.
+
+Noen ganger, særlig hvis du vil legge til nye internettlenker til en side, kan wikien vise deg et bilde av en farge eller ujevn tekst og be deg skrive inn ordene som vises. Siden det er vanskelig å automatisere denne oppgaven, vil funksjonen slippe de fleste virkelige mennesker igjennom, men stoppe spammere.
+
+Dessverre finnes det i øyeblikket ikke noe audioalternativ for brukere med begrenset syn som som bruker tekst- eller talebaserte nettlesere. Vennligst kontakt [[{{MediaWiki:Grouppage-sysop}}|administratorene]] hvis denne funksjonen forhindrer deg i å foreta legitime endringer.
+
+Trykk på 'tilbake'-knappen for å komme tilbake til redigeringssiden.",
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Syntaksen er som følger:
+# * Alle linjer som begynner med «#» er kommentarer
+# * Alle linjer som ikke er blanke er fragmenter av regulære uttrykk som sjekker verter i URL-er
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Utføre handlinger som normalt krever «captcha»-bekreftelse uten å bruke «captcha»',
+);
+
+/** Occitan (Occitan)
+ * @author Cedric31
+ */
+$messages['oc'] = array(
+ 'captcha-edit' => "Per modificar aquesta pagina, vos cal efectuar lo calcul çaijós e n'inscriure lo resultat dins lo camp ([[Special:Captcha/help|Mai d’entresenhas]]) :",
+ 'captcha-desc' => 'Implementacion captcha simpla',
+ 'captcha-addurl' => "Vòstra modificacion inclutz de ligams URL novèla ; per empachar las connexions automatizadas, vos cal picar los mots que s’afichan dins l’imatge que seguís : <br />([[Special:Captcha/help|Qu'es aquò?]])",
+ 'captcha-badlogin' => "Per ensajar de contornar las temptativas de cracatge de senhals automatizadas per de robòts, recopiatz lo tèxte çaijós dins la bóstia de tèxte plaçada al dejós d'aqueste. ([[Special:Captcha/help|Mai d’entresenhas]])",
+ 'captcha-createaccount' => 'Coma proteccion contra las creacions de compte abusivas, entratz lo resultat de l’addicion dins la bóstia çaijós:<br />
+([[Special:Captcha/help|mai d’entresenhas]])',
+ 'captcha-createaccount-fail' => 'Còde de confirmacion mancant o erronèu.',
+ 'captcha-create' => "Per modificar la pagina, vos cal de resòldre l'operacion çaijós e n'inscriure lo resultat dins lo camp ([[Special:Captcha/help|Mai d'infòs]]) :",
+ 'captchahelp-title' => 'Ajuda suls Captcha',
+ 'captchahelp-cookies-needed' => "Vos cal aver los cookies activats dins vòstre navigador per qu'aquò foncione.",
+ 'captchahelp-text' => "Los sites webs qu'accèptan de contribucions del public, coma aqueste wiki, sovent son atacats per de spammers qu'utilizan d'espleches automatizats per plaçar de ligams nombroses cap a de sites.
+Quitament se son de bon suprimir, demòran una noisença significativa.
+
+De còps, particularament quora apondètz de ligams extèrnes dins una pagina, lo wiki vos pòt mostrar un imatge amb un tèxte coloriat, desformat o torçut e vos demandar de picar los mots indicats.
+Aquesta tasca es complicada d'automatizar, çò que permet de diferenciar un uman real d'un logicial automatic malvolent.
+
+Malurosament, aquesta solucion pòt geinar d'utilizaires malvesents o qu'utilizan un navigador textual o vocal.
+Dispausam pas d’alternativa àudio pel moment.
+Contactatz [[{{MediaWiki:Grouppage-sysop}}|los administrators del site]] se aquò vos empacha d'un biais imprevist de postar de contribucions legitimas.
+
+Clicatz sul boton « Precedent » de vòstre navigador per tornar a la pagina de modificacion.",
+ 'captcha-addurl-whitelist' => '#<!-- daissatz aquesta linha exactament tala coma es --> <pre> # La sintaxi es la seguenta: # * Tot caractèr seguissent "#" fins a la fin de la linha serà interpretat coma un comentari # * Tota linha non voida es un còde regex que serà utilizat unicament a l\'interior dels ligams hypertext. #</pre> <!-- daissatz aquesta linha exactament tala coma es -->',
+ 'right-skipcaptcha' => "Acomplís lo desenclavament de las accions de captcha sens dever passar per l'intermediari aqueste darrièr",
+);
+
+/** Pampanga (Kapampangan) */
+$messages['pam'] = array(
+ 'captcha-createaccount' => 'Bang ala na kabud laltong account, pakipakibatan me ing papacuenta ra king lalam at ibili me ing pakibat ketang cahun ([[Special:Captcha/help|more info]]):',
+ 'captcha-createaccount-fail' => 'E ustu o ala yu ing confirmation code.',
+ 'captchahelp-text' => "Maralas, mayayabusu la reng karinan king Aptas (websites) kareng spammer a gagamit automatic a paralan ba rong ipasquil kareng dakal a karinan deng karelang suglung. Lipat ning malyari lang ilako deti, maragul la muring sakit buntuk.
+
+Neng kayi, lalu na neng mangibiling karagdagang suglung king metung a bulung, mapalyaring magpalto yang larawan ning sulat a maki kule o anting medisporma ing wiki, at pakisabi nang i-type me itang makasulat. Uling e malagwang gawang automatic ing dapat a iti, paintulutan nong magpasquil deng keraklan kareng tau, kabang sasabatan no reng keraklan kareng spammer at lulub a robot.
+
+Makalungkut mu pin at magkasakit la uli na niti deng gagamit a mapula mata o maki paglibut ( browser) a makabasi king sulat (text-based) o king siwala (speech-based). Ala keng alternatibu o kayaliling pakiramdaman king salukuyan. Nung malyari, pasaup ko sana ketang manibala king kekayung karinan (site administrator) nung magkasakit kayung magpasquil ulin na niti.
+
+Mangaylangan kang manyalanging cookie king kekang paglibut (browser) para king obrang iti.
+
+Timid me ing 'back' button king kekang browser bang mibalik ketang panaliling bulung (page editor).",
+);
+
+/** Deitsch (Deitsch)
+ * @author Xqt
+ */
+$messages['pdc'] = array(
+ 'captchahelp-title' => 'Captcha-Hilf',
+);
+
+/** Polish (Polski)
+ * @author Derbeth
+ * @author Leinad
+ * @author Sp5uhe
+ */
+$messages['pl'] = array(
+ 'captcha-edit' => 'Możesz edytować tę stronę, jednak najpierw musisz rozwiązać poniższe proste działanie matematyczne i wpisać wynik do pola tekstowego ([[Special:Captcha/help|pomoc]]):',
+ 'captcha-desc' => 'Dodaje CAPTCHA – zabezpieczenie przed spamującymi automatami oraz odgadywaniem haseł',
+ 'captcha-addurl' => 'Dodałeś nowe linki zewnętrzne. Ze względu na ochronę przed zautomatyzowanym spamem musisz wykonać proste działanie matematyczne i wpisać wynik w pole obok ([[Special:Captcha/help|więcej informacji]]):',
+ 'captcha-badlogin' => 'Zabezpieczenie przed automatycznym łamaniem haseł. Wpisz w pole poniżej wynik prostego działania matematycznego ([[Special:Captcha/help|pomoc]]).',
+ 'captcha-createaccount' => 'Zabezpieczenie przed automatycznie dodawanym spamem. Wpisz w pole poniżej wynik prostego działania matematycznego ([[Special:Captcha/help|pomoc]]).',
+ 'captcha-createaccount-fail' => 'Nieprawidłowy kod lub brak kodu potwierdzającego.',
+ 'captcha-create' => 'Aby utworzyć stronę wykonaj proste działanie i wpisz wynik w pole tekstowe ([[Special:Captcha/help|pomoc]]):',
+ 'captcha-sendemail' => 'Zabezpieczenie przed automatycznym spamem. Wpisz w pole poniżej wynik prostego dodawania ([[Special:Captcha/help|więcej informacji]]).',
+ 'captcha-sendemail-fail' => 'Nieprawidłowy lub brak kodu potwierdzającego.',
+ 'captcha-disabledinapi' => 'Ta czynność wymaga potwierdzenia capcha i z tego względu nie może być przeprowadzona z użyciem API.',
+ 'captchahelp-title' => 'Pomoc dla ochrony antyspamowej',
+ 'captchahelp-cookies-needed' => 'Musisz mieć włączone w przeglądarce ciasteczka (cookies), aby ta opcja działała.',
+ 'captchahelp-text' => 'Strony internetowe akceptujące edycje dokonywane przez każdego, tak jak ta wiki, są często atakowane przez spamerów, którzy używają automatycznych narzędzi, aby dodawać linki prowadzące do ich stron.
+Chociaż te linki mogą zostać usunięte, jest to uciążliwe.
+
+Czasami, zwłaszcza przy dodawaniu nowych linków do strony albo przy rejestracji, wiki może pokazać obrazek z kolorowym lub zniekształconym tekstem i poprosić Cię o przepisanie zamieszczonego na nim wyrazu.
+Ponieważ są to zadania trudne do zautomatyzowania, takie zabezpieczenia umożliwia ludziom dokonywania edycji, jednocześnie skutecznie powstrzymując większość spamerów i inne automatyczne ataki.
+
+Niestety, może być to niewygodne dla użytkowników z wadą wzroku lub używających przeglądarek tekstowych lub głosowych.
+Obecnie nie mamy alternatywnego rozwiÄ…zania audio.
+Skontaktuj się z [[{{MediaWiki:Grouppage-sysop}}|administratorami strony]] by uzyskać pomoc, jeśli nie możesz z tego powodu dokonywać uprawnionych edycji.
+
+Wciśnij przycisk „wstecz†w przeglądarce by powrócić do edycji strony.',
+ 'captcha-addurl-whitelist' => ' #<!-- nie modyfikuj tej linii --> <pre>
+# Składnia jest następująca:
+# * Linie zaczynające się od znaku „#†są komentarzami
+# * Każda linia, która nie jest pusta, jest wyrażeniem regularnym, które ma pasować do adresu serwera (fragmentu URL)
+ #</pre> <!-- nie modyfikuj tej linii -->',
+ 'right-skipcaptcha' => 'Dostęp do czynności zabezpieczonych pytaniem o treść obrazka lub rozwiązanie zadania, z pominięciem zabezpieczenia',
+);
+
+/** Piedmontese (Piemontèis)
+ * @author Borichèt
+ * @author Bèrto 'd Sèra
+ * @author Dragonòt
+ */
+$messages['pms'] = array(
+ 'captcha-edit' => "Për fe-ie dle modìfiche ansima a st'artìcol-sì, për piasì ch'a fasa ël total ambelessì sota
+e ch'a buta l'arzulta ant ël quadrèt ([[Special:Captcha/help|për savejne dë pì]]):",
+ 'captcha-desc' => "A dà dle técniche CAPTCHA për protege contra la rumenta e ij tentativ d'andviné la ciav",
+ 'captcha-addurl' => "Soa modìfica a la gionta dj'anliure esterne. Për giutene a vardesse da la reclam aotomatisà, për piasì ch'a fasa ël total ambelessì sota e ch'a buta l'arzultà ant ël quadrèt ([[Special:Captcha/help|për savejne dë pì]]):",
+ 'captcha-badlogin' => "Për giutene a vardesse da 'nt ij programa ch'a fan ciav fàosse n'aotomàtich, për piasì ch'a fasa ël total ambelessì sota e ch'a buta l'arzultà ant ël quadrèt ([[Special:Captcha/help|për savejne dë pì]]):",
+ 'captcha-createaccount' => "Për giutene a vardesse da ij programa ch'a deurbo dij cont n'aotomàtich, për piasì ch'a fasa ël total ambelessì sota
+e ch'a buta l'arzultà ant ël quadrèt ([[Special:Captcha/help|për savejne dë pì]]):",
+ 'captcha-createaccount-fail' => "Ël còdes ëd verìfica ò ch'a manca d'autut ò ch'a l'é pa bon.",
+ 'captcha-create' => "Për creé d'amblé sta pàgina-sì, për piasì ch'a fasa ël total ambelessì sota e ch'a buta l'arzultà<br />
+ant ël quadrèt ([[Special:Captcha/help|për savejne dë pì]]):",
+ 'captcha-sendemail' => "Për giuté a protegi contra la rumenta automàtica, për piasì ch'a fasa l'adission sempia sì-sota e ch'a buta l'arspòsta ant la casela ([[Special:Captcha/help|për savèjne ëd pi]]):",
+ 'captcha-sendemail-fail' => "Ël còdes ëd verìfica ò ch'a manca d'autut ò ch'a l'é pa bon.",
+ 'captcha-disabledinapi' => "St'assion-sì a ciama na captcha, parèj a peul pa esse fàita con na API.",
+ 'captchahelp-title' => 'Còs é-lo mai ës captcha?',
+ 'captchahelp-cookies-needed' => "Për podej dovré sossì a l'ha da manca che sò navigator (browser) a pija ij cookies.",
+ 'captchahelp-text' => "Soèns a-i riva che ij sit dla Ragnà che la gent a peul dovré për ëscrive chèich-còs, coma sta wiki-sì, a resto ambërlifà ëd reclam da màchine che a carìo soa ròba dadsà e dadlà n'aotomàtich. Për tant che sta reclam un a peula peuj gavela, a resta sempe un gran fastudi.
+
+Dle vire, dzortut quand un a caria dj'anliure esterne neuve ansime a na pàgina, la wiki a peul ësmon-je na figurin-a con dël test colora ò pura tut ëstòrt e ciameje d'arbate lòn ch'a-i é scrit andrinta. Da già ch'a l'é grama scrive un programa ch'a lo fasa, a ven che la pì gran part dla gent a-i la fa a scrive, ma la ói part dle màchine a-i la fa pa.
+
+Për maleur sossì a peul fastudié j'uetnt ch'a ës-ciàiro nen tant bin, col ch'a dòvro dij navigator mach a test ò pura dij navigator vocaj. Për adess i l'oma nen n'altërnativa disponibila ch'a fasa lese ël test a vos. Për piasì, ch'a contata j'[[{{MediaWiki:Grouppage-sysop}}|aministrator dël sit]] se sossì a dovèissa mai nen lasseje carié dël test ch'a sia legitim (visadì, nen dla reclam).
+
+Ch'a-i bata ansima al boton 'andré' ant sò navigator për torné andré a l'editor dla pàgina.",
+ 'captcha-addurl-whitelist' => " #<!-- leave this line exactly as it is --> <pre>
+# La sintassi a l'é costa:
+# * tut lòn ch'a-i ven dapress a un caràter \"#\" (fin-a a la fin dla riga) a l'é mach ëd coment
+# * minca riga nen veujda a l'é un frament d'espression regolar ch'as dòvra për identifiché j'adrësse dle màchine servente ant j'anliure
+ #</pre> <!-- leave this line exactly as it is -->",
+ 'right-skipcaptcha' => "A fà j'assion che a ativo la captcha sensa avèj da passé da la captcha",
+);
+
+/** Pashto (پښتو)
+ * @author Ahmed-Najib-Biabani-Ibrahimkhel
+ */
+$messages['ps'] = array(
+ 'captcha-create' => 'Ø¯Ø¯Û Ù„Ù¾Ø§Ø±Ù‡ Ú†Û Ù†ÙˆÛŒ ليکنه ترسره کړی، لطÙاً د همدغه ساده شمÛرو Úواب په ورکړ شوي چوکاټ Ú©Û ÙˆÙ„ÙŠÚ©ÛŒ ([[Special:Captcha/help|نور مالومات]]):',
+ 'captchahelp-cookies-needed' => 'Ø¯Ø¯Û Ú©Ú“Ù†Û Ø¯ ترسره Ú©Ûدلو لپاره تاسو ته پکار ده Ú†Û Ø¯ خپل کتنمل (browser) کوکيز (cookies) چارن Ú©Ú“ÛŒ.',
+);
+
+/** Portuguese (Português)
+ * @author 555
+ * @author Hamilton Abreu
+ * @author Malafaya
+ */
+$messages['pt'] = array(
+ 'captcha-edit' => 'Para editar esta página, por favor, resolva a soma simples apresentada abaixo e introduza a resposta na caixa ([[Special:Captcha/help|mais informações]]):',
+ 'captcha-desc' => 'Fornece técnicas CAPTCHA para protecção contra spam e tentativas de adivinhar a palavra-chave',
+ 'captcha-addurl' => "A sua edição introduziu links externos novos.
+Como prevenção contra sistemas automatizados de inserção de ''spam'', resolva a soma simples apresentada abaixo e introduza a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ 'captcha-badlogin' => 'Como prevenção com sistemas automatizados de descoberta de palavras-chave, resolva a soma simples apresentada abaixo e introduza a resposta na caixa ([[Special:Captcha/help|mais informações]]):',
+ 'captcha-createaccount' => 'Como prevenção contra sistemas automatizados de criação de contas, resolva a soma simples apresentada abaixo e introduza a resposta na caixa ([[Special:Captcha/help|mais informações]]):',
+ 'captcha-createaccount-fail' => 'Código incorreto ou não preenchido.',
+ 'captcha-create' => 'Para criar a página, resolva a soma simples apresentada abaixo e introduza a resposta na caixa ([[Special:Captcha/help|mais informações]]):',
+ 'captcha-sendemail' => "Como prevenção contra sistemas automatizados de inserção de ''spam'', resolva a soma simples apresentada abaixo e introduza a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ 'captcha-sendemail-fail' => 'Código de confirmação incorrecto ou não preenchido.',
+ 'captcha-disabledinapi' => 'Esta operação necessita de captcha, por isso não pode ser realizada através da API.',
+ 'captchahelp-title' => 'Ajuda sobre o CAPTCHA',
+ 'captchahelp-cookies-needed' => "É necessário possibilitar o uso de ''cookies'' no seu browser para que o ''captcha'' funcione.",
+ 'captchahelp-text' => "Sites na internet abertos a edição pública, como é o caso desta wiki, são frequentemente abusados por ''spammers'' que utilizam ferramentas automatizadas para inserção em massa de links, em muitos sites.
+Embora esses links possam ser removidos, representam um incómodo significativo.
+
+Por vezes, especialmente quando introduzir links externos novos numa página, a wiki apresentará a imagem de um texto colorido ou distorcido e pedirá que escreva o texto apresentado.
+Porque a interpretação do texto apresentado nas imagens é uma tarefa difícil de automatizar, este pedido feito pela wiki permite que a maioria das pessoas façam as suas edições, ao mesmo tempo que inibe edições feitas por ''spammers'' e outros mecanismos automatizados.
+
+Infelizmente, esta funcionalidade pode revelar-se um inconveniente para utilizadores com limitações visuais ou que utilizam browsers baseados em texto ou voz.
+Neste momento, não temos disponível uma alternativa em áudio.
+Por favor, contacte os [[{{MediaWiki:Grouppage-sysop}}|administradores]] para assistência, caso a funcionalidade esteja a impedi-lo de fazer edições legítimas.
+
+Clique o botão 'voltar' do seu browser para voltar à página de edição.",
+ 'captcha-addurl-whitelist' => ' #<!-- deixe esta linha exactamente como está --> <pre>
+# A sintaxe é a seguinte:
+# * Tudo desde um símbolo de cardinal (#) até ao fim da linha é um comentário
+# * Qualquer linha que não esteja em branco é um fragmento de expressão regular (regex) que será comparado com o servidor das URLs
+ #</pre> <!-- deixe esta linha exactamente como está -->',
+ 'right-skipcaptcha' => "Executar acções despoletadoras do CAPTCHA' sem ter de passar pelo CAPTCHA",
+);
+
+/** Brazilian Portuguese (Português do Brasil)
+ * @author Eduardo.mps
+ * @author Giro720
+ * @author Jesielt
+ */
+$messages['pt-br'] = array(
+ 'captcha-edit' => 'Para editar esta página será necessário que você resolva a simples soma abaixo e entre com a resposta no respectivo campo ([[Special:Captcha/help|o que é isto?]])',
+ 'captcha-desc' => 'Fornece técnicas captcha para proteção contra spam e tentativas de obtenção de senhas',
+ 'captcha-addurl' => 'Sua edição inclui novas ligações externas.
+Para prevenção contra sistemas automatizados que inserem spam, será necessário que você resolva a simples soma abaixo e entre com a resposta no respectivo campo ([[Special:Captcha/help|o que é isto?]])',
+ 'captcha-badlogin' => 'Como prevenção contra sistemas automatizados de pesquisa e descoberta de senhas, será necessário que você resolva a simples soma abaixo e entre com a resposta no respectivo campo ([[Special:Captcha/help|o que é isto?]])',
+ 'captcha-createaccount' => 'Como prevenção contra sistemas automatizados de criação de contas, por favor resolva a simples soma abaixo e entre com a resposta no respectivo campo ([[Special:Captcha/help|O que é isto?]]):',
+ 'captcha-createaccount-fail' => 'Código de confirmação incorreto ou não preenchido.',
+ 'captcha-create' => 'Para criar a página, por favor resolva a simples soma abaixo e entre com a resposta no respectivo campo ([[Special:Captcha/help|o que é isto?]])',
+ 'captcha-sendemail' => "Para ajudar a prevenir o ''spam'' automatizado, por favor, resolva a soma simples apresentada abaixo e introduza a resposta na caixa ([[Special:Captcha/help|mais informações]]):",
+ 'captcha-sendemail-fail' => 'Código de confirmação incorreto ou não preenchido.',
+ 'captcha-disabledinapi' => 'Esta operação necessita de captcha, por isso não pode ser realizada através da API.',
+ 'captchahelp-title' => 'Ajuda com o Captcha',
+ 'captchahelp-cookies-needed' => 'Você precisa ter cookies habilitados em seu navegador para que possa funcionar',
+ 'captchahelp-text' => "Sites abertos a inserções públicas, como é o caso desta wiki, são vulneráveis a spammers que utilizam ferramentas automatizadas para inserir seus links em diversos locais.
+Remover tais ligações posteriormente pode ser um incômodo significativo.
+
+Algumas vezes, especialmente ao adicionar novas ligações externas a uma página, o wiki exibirá uma imagem com um texto colorido ou distorcido e pedirá que você introduza as palavras exibidas.
+Uma vez que essa é uma tarefa um tanto difícil de ser automatizada, ela possibilita que a maioria dos humanos faça as suas inserções ao mesmo tempo que inibe as que forem feitas por spammers e mecanismos automatizados.
+
+Infelizmente, isso pode ser um inconveniente para usuários com limitações visuais ou que naveguem através de mecanismos baseados em texto ou baseados em voz.
+No momento, não está disponível uma alternativa em áudio.
+Por favor, contate os [[{{MediaWiki:Grouppage-sysop}}|administradores do sítio]] em casos que seja necessária a assistência de alguém para que você possa fazer as suas inserções legítimas.
+
+Pressione o botão 'voltar' de seu navegador para retornar à página de edição.",
+ 'captcha-addurl-whitelist' => ' #<!-- deixe este linha exatamente como está --> <pre>
+# A sintaxe é a que se segue:
+# * Tudo desde o caractere "#" até ao fim da linha é um comentário
+# * Qualquer linha não vazia é um fragmento de regex que irá apenas verificar o servidor dentro das URLs
+ #</pre> <!-- deixe este linha exatamente como está -->',
+ 'right-skipcaptcha' => 'Executar ações disparadoras de captcha sem ter que passar pelo captcha',
+);
+
+/** Quechua (Runa Simi)
+ * @author AlimanRuna
+ */
+$messages['qu'] = array(
+ 'captchahelp-title' => 'Captcha nisqamanta yanapay',
+);
+
+/** Romanian (Română)
+ * @author BrokenArrow
+ * @author Firilacroco
+ * @author KlaudiuMihaila
+ * @author Mihai
+ * @author Minisarm
+ */
+$messages['ro'] = array(
+ 'captcha-edit' => 'Editarea include legături externe noi. Pentru a evita spam-ul automat, vă rugăm să rezolvați adunarea de mai jos și introduceți rezultatul în căsuță ([[Special:Captcha/help|detalii]]):',
+ 'captcha-desc' => 'Oferă implementare de tip CAPTCHA împotriva spamului și încercărilor de aflare a parolelor',
+ 'captcha-addurl' => 'Editarea include legături externe noi. Pentru a evita spam-ul automat, vă rugăm să rezolvați adunarea de mai jos și introduceți rezultatul în căsuță ([[Special:Captcha/help|detalii]]):',
+ 'captcha-badlogin' => 'Ca măsură de protecție împotriva spargerii de parole, vă rugăm să rezolvați adunarea de mai jos și introduceți rezultatul în căsuță ([[Special:Captcha/help|detalii]]):',
+ 'captcha-createaccount' => 'Pentru a evita crearea automată de conturi, vă rugăm să rezolvați adunarea de mai jos și introduceți rezultatul în căsuță ([[Special:Captcha/help|detalii]]):',
+ 'captcha-createaccount-fail' => 'Cod de confirmare incorect sau lipsă.',
+ 'captcha-create' => 'Editarea include legături externe noi. Pentru a evita spam-ul automat, vă rugăm să rezolvați adunarea de mai jos și introduceți rezultatul în căsuță ([[Special:Captcha/help|detalii]]):',
+ 'captcha-sendemail-fail' => 'Codul de confirmare lipsește sau este incorect.',
+ 'captchahelp-title' => 'Despre „Captchaâ€',
+ 'captchahelp-cookies-needed' => 'Trebuie ca browserul dumneavoastră să accepte cookie-uri pentru ca aceasta să funcționeze.',
+ 'captchahelp-text' => "Siturile Web care acceptă postări din partea publicului, precum acest wiki, sunt de obicei abuzate de persoane care folosesc unelte automate pentru a introduce legături către multe situri. Deși aceste legături de spam pot fi scoase, acest lucru reprezintă o muncă inconvenientă.
+
+Uneori, mai ales la adăugarea de legături web noi într-o pagină, situl wiki vă poate arăta o imagine cu un text colorat sau distorsionat și veți fi rugat să introduceți cuvintele indicate. Deoarece aceasta este o sarcină greu de automatizat, ea permite majorității persoanelor reale să posteze și va opri majoritatea atacatorilor.
+
+Din nefericire, această metodă îi poate deranja pe utilizatorii cu probleme vizuale sau care folosesc browsere bazate pe text sau sunet. În acest moment nu avem o alternativă audio disponibilă.
+Vă rugăm, contactați [[{{MediaWiki:Grouppage-sysop}}|administratorii sitului]] pentru asistență dacă metoda vă oprește de la a face postări legitime.
+
+Apasă butonul 'Înapoi' al browserului pentru a te reîntoarce la pagina de editare.",
+);
+
+/** Tarandíne (Tarandíne)
+ * @author Joetaras
+ * @author Reder
+ */
+$messages['roa-tara'] = array(
+ 'captcha-edit' => "Pe cangià sta pàgene, pe piacere fa sta somma facile facile aqquà sotte e mitte 'a resposte jndr'à sckatele ([[Special:Captcha/help|maggiore 'mbormaziune]]):",
+ 'captcha-addurl' => "'U cangiamende tue inglude de le collegaminde esterne.
+Pe aiutà a proteggere condre a 'u spam automateche, pe piacere respunne a 'a domande ca combare sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+ 'captcha-badlogin' => "Pe aiutà a proteggere da le futteminde de passuord automateche, pe piacere fa sta somma facile facile aqquà sotte e mitte 'a resposte jndr'à sckatele ([[Special:Captcha/help|maggiore 'mbormaziune]]):",
+ 'captcha-createaccount-fail' => 'Codece de conferme non corrette o mangande.',
+ 'captcha-create' => "Pe ccrejà sta pàgene, pe piacere fa sta somma facile facile aqquà sotte e mitte 'a resposte jndr'à sckatele ([[Special:Captcha/help|maggiore 'mbormaziune]]):",
+ 'captcha-sendemail' => "Pe aiutà a proteggere da 'a munnezze automateche, pe piacere fa sta somma facile facile aqquà sotte e mitte 'a resposte jndr'à sckatele ([[Special:Captcha/help|maggiore 'mbormaziune]]):",
+ 'captcha-sendemail-fail' => 'Codece de conferme non corrette o mangande.',
+ 'captcha-disabledinapi' => "St'azione ave abbesogne de 'nu captcha, accussì non g'è possibbele eseguirle cu le API.",
+ 'captchahelp-title' => 'Aijute pu captcha',
+ 'captchahelp-cookies-needed' => "Tu è abbesogne de avè le cookie abbilitate jndr'à 'u browser tune pe sta fatìe.",
+ 'captcha-addurl-whitelist' => " #<!-- leave this line exactly as it is --> <pre>
+# 'A sindasse jè a cumme segue:
+# * Ogneccose da 'nu carattere \"#\" 'mbonde a fine d'a linèe jè 'nu commende
+# * Ogne linèe chiene jè 'nu frammende de regex 'u quale addà sulamende combrondarse cu le host jndr'à l'URL
+ #</pre> <!-- leave this line exactly as it is -->",
+);
+
+/** Russian (РуÑÑкий)
+ * @author Ahonc
+ * @author Aleksandrit
+ * @author Kalan
+ * @author ÐлекÑандр Сигачёв
+ */
+$messages['ru'] = array(
+ 'captcha-edit' => 'Чтобы отредактировать Ñту Ñтраницу, пожалуйÑта, решите проÑтой пример и введите ответ в текÑтовое поле ([[Special:Captcha/help|подробнее]]):',
+ 'captcha-desc' => 'ПредоÑтавлÑет методы CAPTCHA Ð´Ð»Ñ Ð·Ð°Ñ‰Ð¸Ñ‚Ñ‹ от Ñпама и подбора паролÑ',
+ 'captcha-addurl' => 'Ð’Ñ‹ добавили ÑÑылку на внешний Ñайт;
+в целÑÑ… защиты от автоматичеÑкого Ñпама, введите буквы изображённые на картинке:<br />
+([[Special:Captcha/help|Что Ñто такое?]])',
+ 'captcha-badlogin' => 'Ð’ целÑÑ… защиты от автоматичеÑкого взлома паролÑ, пожалуйÑта, выполните Ñледующее проÑтое арифметичеÑкое дейÑтвие и введите ответ в текÑтовое поле ниже ([[Special:Captcha/help|подробнее]]):',
+ 'captcha-createaccount' => 'Ð’ качеÑтве меры против автоматичеÑкого Ñпама, вы должны ввеÑти буквы, изображённые на картинке, чтобы зарегиÑтрироватьÑÑ Ð² ÑиÑтеме:<br />
+([[Special:Captcha/help|Что Ñто такое?]])',
+ 'captcha-createaccount-fail' => 'ÐšÐ¾Ð½Ñ‚Ñ€Ð¾Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð½ÐµÐ²ÐµÑ€Ð½Ð° или не введена.',
+ 'captcha-create' => 'Чтобы Ñоздать Ñтраницу, решите проÑтой пример и введите ответ в текÑтовое поле ([[Special:Captcha/help|что Ñто?]]):',
+ 'captcha-sendemail' => 'Ð’ целÑÑ… защиты от автоматичеÑкого Ñпама, пожалуйÑта, вычиÑлите приведённое проÑтое выражение и введите ответ ([[Special:Captcha/help| подробнее]]):',
+ 'captcha-sendemail-fail' => 'Код Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´ÐµÐ½Ð¸Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ñ‹Ð¹ или отÑутÑтвует.',
+ 'captcha-disabledinapi' => 'Это дейÑтвие требует проверки CAPTCHA, и поÑтому не может быть выполнено через API.',
+ 'captchahelp-title' => 'Справка о CAPTCHA',
+ 'captchahelp-cookies-needed' => 'Вам нужно включить куки в браузере, чтобы Ñта Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð·Ð°Ñ€Ð°Ð±Ð¾Ñ‚Ð°Ð»Ð°.',
+ 'captchahelp-text' => 'Веб-Ñайты, позволÑющие добавлÑÑ‚ÑŒ и изменÑÑ‚ÑŒ Ñвоё Ñодержимое, в том чиÑле Ñта вики, чаÑто ÑтановÑÑ‚ÑÑ Ñ†ÐµÐ»ÑŒÑŽ Ñпамеров, иÑпользующих программы Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкого Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑылок на Ñайты.
+Ð¥Ð¾Ñ‚Ñ Ñ‚Ð°ÐºÐ¸Ðµ ÑÑылки могут быть впоÑледÑтвии удалены, они ÑвлÑÑŽÑ‚ÑÑ ÑущеÑтвенной помехой.
+
+При некоторых дейÑтвиÑх — например, при добавлении на Ñтраницу новой веб-ÑÑылки — вы можете увидеть Ñпециальную картинку Ñ Ñ†Ð²ÐµÑ‚Ð½Ñ‹Ð¼ или иÑкажённым текÑтом, и вам будет предложено ввеÑти Ñтот иÑкажённый текÑÑ‚.
+Так как раÑпознавание иÑкажённого текÑта ÑвлÑетÑÑ Ñложной задачей Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼, то большинÑтво ÑпамерÑких и вандальных программ не могут Ñ Ð½ÐµÐ¹ ÑправитьÑÑ, в то Ð²Ñ€ÐµÐ¼Ñ ÐºÐ°Ðº люди ÑправлÑÑŽÑ‚ÑÑ Ð»ÐµÐ³ÐºÐ¾.
+
+К Ñожалению, Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð°Ñ Ð·Ð°Ñ‰Ð¸Ñ‚Ð° может причинить неудобÑтва людÑм Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñми по зрению или тем, кто иÑпользует текÑтовые или читающие браузеры.
+Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ñƒ Ð½Ð°Ñ Ð½ÐµÑ‚ звуковой альтернативы данной проверке.
+ПожалуйÑта, обратитеÑÑŒ за помощью к [[{{MediaWiki:Grouppage-sysop}}|админиÑтраторам]], еÑли Ð¿Ð¾Ð´Ð¾Ð±Ð½Ð°Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ° мешает вам доброÑовеÑтно работать Ñ Ñайтом.
+
+Ðажмите кнопку «Ðазад» в вашем браузере, чтобы вернутьÑÑ Ðº редактированию.',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# ОпиÑание ÑинтакÑиÑа:
+# * Ð’ÑÑ‘, Ð½Ð°Ñ‡Ð¸Ð½Ð°Ñ Ñ Ñимвола "#" и до конца Ñтроки ÑчитаетÑÑ ÐºÐ¾Ð¼Ð¼ÐµÐ½Ñ‚Ð°Ñ€Ð¸ÐµÐ¼
+# * ÐšÐ°Ð¶Ð´Ð°Ñ Ð½ÐµÐ¿ÑƒÑÑ‚Ð°Ñ Ñтрока ÑчитаетÑÑ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ регулÑрного Ð²Ñ‹Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÑоответÑтвующего имени узла в URL
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'выполнение требующих CAPTCHA-проверки дейÑтвий без Ð¿Ñ€Ð¾Ñ…Ð¾Ð¶Ð´ÐµÐ½Ð¸Ñ CAPTCHA',
+);
+
+/** Rusyn (РуÑиньÑкый)
+ * @author Gazeb
+ */
+$messages['rue'] = array(
+ 'captcha-edit' => 'ЖебыÑьте могли едітовати тоту Ñторінку, муÑите вырїшыти наÑтупну проÑту Ñуму Ñ– напиÑати резултат. ([[Special:Captcha/help|Што тото значіть?]])',
+ 'captcha-desc' => 'ПроÑта Ñ–Ð¼Ð¿Ð»ÐµÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ñ–Ñ Ð¾Ð²Ñ–Ñ€Ñ‘Ð²Ð°Ñ‡Ð¾Ð³Ð¾ коду (captcha)',
+ 'captcha-addurl' => 'Ваше ÐµÐ´Ñ–Ñ‚Ð¾Ð²Ð°Ð½Ñ Ð¾Ð±ÑÑгує новы одказы формов URL; про охорону перед автоматічным Ñпамом муÑите вырїшыти наÑтупну проÑту Ñуму Ñ– напиÑати резултат. ([[Special:Captcha/help|Што тото значіть?]])',
+ 'captcha-badlogin' => 'Ð’ рамках охороны перед автоматічныма пробами угаднути геÑло муÑите вырїшыти наÑтупну проÑту Ñуму Ñ– напиÑати резултат. ([[Special:Captcha/help|Што тото значіть?]]):',
+ 'captcha-createaccount' => 'Ð’ рамках охороны перед автоматічныма ÑтворёванÑми конт муÑите про Ð²Ñ‹ÐºÐ¾Ð½Ð°Ð½Ñ Ñ€ÐµÒ‘Ñ–Ñтрації вырїшыти наÑтупну проÑту Ñуму Ñ– напиÑати резултат. ([[Special:Captcha/help|Што тото значіть?]]):',
+ 'captcha-createaccount-fail' => 'ХыблÑчій ці неправилный код підтверджінÑ.',
+ 'captcha-create' => 'ЖебыÑьте могли Ñтворити тоту Ñторінку, муÑите вырїшыти наÑтупну проÑту Ñуму Ñ– напиÑати резултат. ([[Special:Captcha/help|Што тото значіть?]])',
+ 'captcha-sendemail' => 'Ð’ рамках охороны перед автоматічным Ñпамом муÑите вырїшыти наÑтупну проÑту Ñуму Ñ– напиÑати резултат. ([[Special:Captcha/help|Што тото значіть?]]):',
+ 'captcha-sendemail-fail' => 'ХыблÑчій ці неправилный код підтверджінÑ.',
+ 'captcha-disabledinapi' => 'Тота Ð¾Ð¿ÐµÑ€Ð°Ñ†Ñ–Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” ÑÐ¿Ð¾Ð²Ð½Ñ—Ð½Ñ CAPTCHA, также ÑÑ Ð½Ðµ даÑÑ‚ÑŒ выконати ÑредÑтвом API.',
+ 'captchahelp-title' => 'Поміч про CAPTCHA',
+ 'captchahelp-cookies-needed' => 'Ðбы то фунґовало, муÑите мати у Ñвоїм переглÑдачу запнуты кукі.',
+ 'captchahelp-text' => 'Вебовы Ñторінкы, до котрых можуть приÑпівати Ñ—Ñ… навщівници (Ñк наприклад тота вікі), Ñуть чаÑто цілём Ñпамерів, котры за помочі автоматічных інштрументів вкладають Ñвої одказы на велике множеÑтво Ñторінок. І наперек тому, же тот Ñпам ÑÑ Ð´Ð°ÑÑ‚ÑŒ одÑтранити, предÑтавлює неприємне отровованÑ.
+
+Даколи, окремо Ð¿Ð¾Ñ‡Ð°Ñ Ð¿Ñ€Ð¸Ð´Ð°Ð²Ð°Ð½Ñ Ð½Ð¾Ð²Ñ‹Ñ… вебовых одказів, вам може вікі указати образок фаребного ці поÑкручаного текÑту Ñ– пожадати Ð²Ð°Ñ Ð¾ опиÑÐ°Ð½Ñ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ñ‹Ñ… знаків. Кідьже таку задачу не годен легко автоматізовати, реалны люде можуть дале приÑпівати, але векшыну Ñпамерів Ñ– іншых роботічных атакерів тото заÑтавить.
+
+Ðа жаль тото може предÑтавлÑти неприємный проблем про хоÑнователїв поÑтиженых зраково ці голоÑовы чітачкы. Ð’ ÑучаÑній добі не маєме алтернатівни звукову верзію. ПроÑиме, контактуйте [[{{MediaWiki:Grouppage-sysop}}|адмініÑтратора Ñервера]], кідь вам то боронить в хоÑновным вкладї Ñ– треба вам поміч.
+
+Про Ð½Ð°Ð²ÐµÑ€Ð½ÑƒÑ‚Ñ Ð½Ð° попередню Ñторінку ÑтиÑнийте у Ñвоїм переглÑдачі клапку „назад“.',
+ 'captcha-addurl-whitelist' => ' #<!-- зохабте тот Ñ€Ñдок точно так Ñк Ñ” --> <pre>
+# СінтакÑÑ–Ñ Ñ” наÑлїднÑ:
+# * Вшытко од знаку „#“ до кінце Ñ€Ñдка Ñ” коментарь
+# * Каждый непорожнїй Ñ€Ñдок Ñ” фраґмент реґуларного выразу, котры ÑÑ Ð°Ð¿Ð»Ñ–ÐºÑƒÑ” лем на назву гоÑта в URL
+ #</pre> <!-- зохабте тот Ñ€Ñдок точно так Ñк Ñ” -->',
+ 'right-skipcaptcha' => 'Ð’Ñ‹ÐºÐ¾Ð½Ð¾Ð²Ð°Ð½Ñ Ð´Ñ—Ð¹ Ñпоєных з CAPTCHA без потребы Ñ—Ñ… рїшінÑ',
+);
+
+/** Yakut (Саха тыла)
+ * @author HalanTul
+ */
+$messages['sah'] = array(
+ 'captcha-edit' => 'СирÑйи уларытыаххын баҕардаххына, манна баар примеры Ñуоттаа уонна ÑппиÑтин аналлаах ÑÐ¸Ñ€Ð³Ñ Ñуруй ([[Special:Captcha/help|Ñиһилии]]):',
+ 'captcha-desc' => 'CAPTCHA көмөтүнÑн Ñпаамтан уонна киирии тылы уорууттан көмүÑкÑли хааччыйар',
+ 'captcha-addurl' => 'Ð¢Ð°Ñ Ñаайка ыйынньык туруорбуккун;
+Ñпаамтан көмүÑкÑнÑÑ€ Ñоруктаах Ñуолу толор - ойууга баар буукубалары хатылаа: <br />
+([[Special:Captcha/help|Сиһилии]])',
+ 'captcha-badlogin' => 'Киирии тылы аптамаат алдьаппатын туһугар оҥоһуллубут харыÑÑ‚Ñ‹Ñ‹Ñ€ дьайыыны толор, манна баар примеры Ñуоттаа уонна ÑппиÑтин анал ÑÐ¸Ñ€Ð³Ñ Ñуруй ([[Special:Captcha/help|Ñиһилии]]):',
+ 'captcha-createaccount' => 'БÑлиÑÑ‚ÑнÑргÑÑ€ аптамаатынан алдьатыыттан (Ñпаамтан) харыÑÑ‚Ñ‹Ñ‹Ñ€ Ñоруктаах дьайыыны оҥор, ойууга көÑÑ‚Ó©Ñ€ буукубалары анал ÑÐ¸Ñ€Ð³Ñ ÐºÐ¸Ð»Ð»ÑÑ€:<br />
+([[Special:Captcha/help|Сиһилии]])',
+ 'captcha-createaccount-fail' => 'БигÑргÑтии куода Ñуох ÑбÑÑ‚ÑÑ€ атын.',
+ 'captcha-create' => 'СирÑйи оҥорорго бу примеры Ñуоттаа ([[Special:Captcha/help|Ñиһилии]]):',
+ 'captcha-sendemail' => 'Ðптамаат Ñпаамтан көмүÑкÑнÑÑ€ туһугар, бука диÑн, бу дьайыыны Ñуоттаа уонна ÑппиÑтин Ñуруй ([[Special:Captcha/help|Ñиһилии]]):',
+ 'captcha-sendemail-fail' => 'БигÑргÑтии куода Ñуох ÑбÑÑ‚ÑÑ€ атын.',
+ 'captcha-disabledinapi' => 'Бу дьайыы CAPTCHA нөҥүө ÑÑ€Ñ Ð¾Ò¥Ð¾Ò»ÑƒÐ»Ð»Ð°Ñ€, онон API нөҥүө толоруллубат.',
+ 'captchahelp-title' => 'Captcha көмөтө',
+ 'captchahelp-cookies-needed' => 'Бу дьайыы үлÑлиирин курдук браузергар куукины холбоо.',
+ 'captchahelp-text' => 'Биһиги Ñаайпыт курдук иһинÑÑҕитин уларытары көҥүллүүр Ñаайтарга Ñороҕор Ñпам ыытар программалар аптамаатынан бÑйÑлÑрин ыйынньыктарын угаллар.
+Оннук аптамаатынан Ñбиллибит ыйынньыктары Ñуох оҥорор кыах баар ÑÑ€ÑÑри, ол биллÑн турар Ñин биир мÑÒ»ÑйдÑри Ò¯Ó©ÑкÑÑ‚ÑÑ€.
+
+Ол иһин Ñороҕор, холобур Ñаҥа ыйынньыгы ÑбÑргÑ, программа өҥнөөх ÑбÑÑ‚ÑÑ€ хаанньары барбыт тиÑкиÑÑ‚ÑÑÑ… ойууну көрдөрөн, ол тиÑкиһи анал Ñ‚Ò¯Ð½Ð½Ò¯ÐºÐºÑ Ñ…Ð°Ñ‚Ñ‹Ð»Ð°Ñ‚Ñ‹Ð°Ð½ Ñөп.
+Маннык көрдөһүүнү аптамаат кыайан толорбот, оттон киһи чÑпчÑкитик толорор.
+
+Ол гынан баран маннык көмүÑкÑл Ñорох дьоҥҥо (көрбөт ÑбÑÑ‚ÑÑ€ ааҕар браузердары туһанар дьоҥҥо) моһоллору Ò¯Ó©ÑкÑтиÑн Ñөп.
+Билигин бу моһолу Ñуох оҥорор кыах Ñуох.
+Оннук мÑÒ»Ñй таҕыÑтаҕына бука диÑн баалама, биир Ñмит [[{{MediaWiki:Grouppage-sysop}}|дьаһабылга (админиÑтраатарга)]] ÑÑ‚ÑÑÑ€, көмөлөһүө.
+
+ÐšÓ©Ð½Ð½Ó©Ñ€Ò¯Ò¯Ð³Ñ Ñ‚Ó©Ñ‚Ñ‚Ó©Ñ€Ò¯ тиийÑÑ€Ð³Ñ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ñ‹Ò¥ «Ðазад» тимÑҕин баттаа.',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# СинтакÑиһын быһаарыыта:
+# * "#" бÑлиÑÑ‚Ñ‚Ñн Ñтрока бүтүөр дылы барыта Ñ…Ð¾Ñ Ð±Ñ‹Ò»Ð°Ð°Ñ€Ñ‹Ñ‹ курдук ааҕыллар
+# * Ð¥Ð°Ñ Ð±Ð¸Ð¸Ñ€Ð´Ð¸Ð¸ кураанах буолбатах Ñтрока URL Ñорҕотун курдук ааҕыллар
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'CAPTCHA-бÑÑ€ÑбиÑркÑни ааһыахтаах дьайыылары CAPTCHA-та Ñуох толоруу',
+);
+
+/** Sicilian (Sicilianu)
+ * @author Melos
+ * @author Santu
+ */
+$messages['scn'] = array(
+ 'captcha-edit' => 'Pi mudificaru la pàggina è nicissàriu arisòrviri lu sèmprici càlculu prisintati di sècutu e nziriri lu risurtatu nnâ casedda
+([[Special:Captcha/help|chiossai nfurmazzioni]]):',
+ 'captcha-desc' => 'Sèmprici mplimintazzioni di na Captcha',
+ 'captcha-addurl' => "La mudìfica addumannata junci novi lijami di fora a la pàggina; pi pricauzzioni contr'a lu nzirimentu autumàticu di spam, è nicissarii arisòrviri lu sèmprici càlculu prisintatu di sècutu e nziriri lu risurtatu nnâ casedda ([[Special:Captcha/help|chiossai nfurmazzioni]]):",
+ 'captcha-badlogin' => "Pi pricauzzioni contr'a li tintativi di furzatura autumàtica dâ password, è nicussàriu arisòrviri lu sèmprici càlculu prusuntatu di sècutu e nziriri lu risurtatu nnâ casedda ([[Special:Captcha/help|chiossai nfurmazzioni]]):",
+ 'captcha-createaccount' => "Pi pricauzzioni contr'a li tintativi di criazzioni autumàtica di l'account, pi riggistràrisi è nicissàriu arisòrviri lu sèmprici càlculu prisintatu di sècutu e nziriri lu risurtatu nnâ casedda ([[Special:Captcha/help|chiossai nfurmazzioni]]):",
+ 'captcha-createaccount-fail' => 'Còdici di virìfica sbagghiatu o ca manca.',
+ 'captcha-create' => 'Pi criari la pàggina è nicissàriu arisòrviri lu sèmprici càlculu prisintatu di sècutu e nziriri lu risurtatu nnâ casedda:<br />
+([[Special:Captcha/help|chiossai nfurmazzioni]]):',
+ 'captchahelp-title' => "Chi cos'è lu captcha?",
+ 'captchahelp-cookies-needed' => 'È nicissàriu abbilitari li cookie supra lu browser pi jiri avanti',
+ 'captchahelp-text' => "Ô spissu accàpita ca li siti Web ca accunzèntunu missaggi pùbbrichi, comu a stu wiki, sù pigghiati di mira di spammer ca ùsanu strumenti autumàtichi pi nziriri lijami pubbricitari ammeri assai nùmmira di siti. Macari ca li lijami ca non sunnu disiati si ponnu livari, sta cosa è, nti ogni casu, na granni camurrìa.
+
+Nni tanti casi, p'asèmpiu quannu si voli jùnciri novi lijami Web nti na pàggina, lu software wiki pò ammustrari na mmàggini cu nu testu nicu acculuratu e/o difurmatu addumannannu di scrivìrilu nni na finistredda. Siccomu si tratta di na cosa difficili di fari pi nu computer, stu miccanìsimu pirmetti a (quasi tutti) l'utenti riali di cumplitari lu nzirimentu disiatu, mpidennu la trasuta a li chiossai di li spammer e di l'àutri attacchi autumatizzati.
+
+Pi sfurtuna, stu strataggemma pò mèttiri 'n difficultati a l'utenti ca hannu prubremi di vista o a chiddi ca ùsanu browser testuali o basati supr'a la sìntesi vucali. Purtroppu aoggi non ci sunnu àutri miccanìsimi abbasati supr'a missaggi sunori; si sti pruciduri mpidìsciunu lu nzirimentu di nfurmazzioni ca si pènzanu ca sù liggìttimi, siti prigati di cuntattari [[{{MediaWiki:Grouppage-sysop}}|l'amministraturi dû situ]] e addumannàrini l'assistenza.
+
+Fari clic supra ô buttuni 'back' dû browser pi turnari a la pàggina di mudìfica.",
+ 'captcha-addurl-whitelist' => " #<!-- non mudificari 'n nuddu modu sta riga --> <pre>
+# La sintassi è chista:
+# * Tuttu chiddu ca veni doppu nu caràtttrt \"#\" è nu cummentu, nzinu a la fini di la riga
+# * Tutti li righi npn vacanti sunnu frammenti di sprissioni riulari ca s'àpplicanu a lu sulu nomu di l'host ntê URL
+ #</pre> <!-- non mudificari 'n nuddu modu sta riga -->",
+ 'right-skipcaptcha' => "Fà l'azzioni ca attivàssiru lu captcha senza passari pi lu captcha",
+);
+
+/** Scots (Scots)
+ * @author OchAyeTheNoo
+ */
+$messages['sco'] = array(
+ 'captcha-edit' => 'Tae edit this airticle, please dae the eisy sum ablo an put the answer in the box ([[Special:Captcha/help|mair info]])',
+);
+
+/** Sinhala (සිංහල)
+ * @author Budhajeewa
+ * @author Singhalawap
+ * @author නන්දිමිතුරු
+ * @author පසිඳු කà·à·€à·’න්ද
+ */
+$messages['si'] = array(
+ 'captcha-edit' => 'මෙම පිටුව සංස්කරණය කිරීමට, කරුණà·à¶šà¶» පහත දà·à¶šà·Šà·€à·™à¶± සරල එකතුකිරීම විසඳ෠පිලිතුර කොටුවේ ඇතුලත් කරන්න ([[Special:Captcha/help|à·€à·à¶©à·’ විස්තර]]):',
+ 'captcha-desc' => 'ස්පෑම් සහ මුරපද-අනුමà·à¶± වලන් ආරක්ෂà·à·€ සදහ෠කà·à¶´à·Šà¶ à· තà·à¶šà·Šà·‚ණය සපයනු ලà·à¶¶à·š',
+ 'captcha-addurl' => 'ඔබගේ සංස්කරණයෙහි නව බà·à·„ිර සබà·à¶³à·’යන් අඩංගුයි.
+ස්වයංක්â€à¶»à·“ය අයà·à¶ à·’ත තà·à¶´à·‘ලෙන් ආරක්ෂ෠වනු වස්, පහත සරල ගණිත ගà·à¶§à·…ුව විසඳ෠පිළිතුර කොටුවෙහි ඇතුලත් කරන්න ([[Special:Captcha/help|à·€à·à¶©à·’මනත් තොරතුරු]]):',
+ 'captcha-badlogin' => 'ස්වයංක්â€à¶»à·“ය මුරපද බිඳීම වලක්වනු වස්, පහත සරල ගණිත ගà·à¶§à·…ුව විසඳ෠පිළිතුර කොටුවෙහි ඇතුලත් කරන්න ([[Special:Captcha/help|à·€à·à¶©à·’මනත් තොරතුරු]]):',
+ 'captcha-createaccount' => 'ස්වයංක්â€à¶»à·“ය ගිණුම් තà·à¶±à·“මෙන් ආරක්ෂ෠කිරීමට උදවු කරනු වස්, කරුණà·à¶šà¶» පහත දà·à¶šà·Šà·€à·™à¶± සරල එකතුකිරීම විසඳ෠පිලිතුර කොටුවේ ඇතුලත් කරන්න ([[Special:Captcha/help|à·€à·à¶©à·’ විස්තර]]):',
+ 'captcha-createaccount-fail' => 'තහවුරුකිරීමේ කේතය එක්ක෠සà·à·€à¶¯à·Šâ€à¶ºà¶ºà·’ නà·à¶­à·’නම් සොâ€à¶ºà·à¶œà¶­ නොහà·à¶š.',
+ 'captcha-create' => 'මෙම පිටුව තà·à¶±à·“මට, කරුණà·à¶šà¶» පහත දà·à¶šà·Šà·€à·™à¶± සරල එකතුකිරීම විසඳ෠පිලිතුර කොටුවේ ඇතුලත් කරන්න ([[Special:Captcha/help|à·€à·à¶©à·’ විස්තර]]):',
+ 'captcha-sendemail' => 'ස්â€à·€à¶ºà¶‚ක්â€à¶»à·“ය ස්පෑම්කරණයන්ගෙන් à·€à·à¶½à¶šà·“මට, කරුණà·à¶šà¶» පහත දà·à¶šà·Šà·€à·™à¶± සරල එකතුකිරීම විසඳ෠පිලිතුර කොටුවේ ඇතුලත් කරන්න ([[Special:Captcha/help|à·€à·à¶©à·’ විස්තර]]):',
+ 'captcha-sendemail-fail' => 'තහවුරුකෙරුම් කේතය සොයà·à¶œà¶­ නොහà·à¶šà·’ à·„à· à·€à·à¶»à¶¯à·’ය.',
+ 'captcha-disabledinapi' => 'මෙම ක්â€à¶»à·’යà·à·€à¶§ කà·à¶´à·Šà¶ à·à·€à¶šà·Š අවà·à·ƒà·’ නිස෠එය API හරහ෠කළ නොහà·à¶š.',
+ 'captchahelp-title' => 'Captcha උදවු',
+ 'captchahelp-cookies-needed' => 'මෙය ක්â€à¶»à·’යà·à¶­à·Šà¶¸à¶š වීමට නම් ඔබ විසින් ඔබගේ බ්â€à¶»à·€à·”සරයෙහි කුකීස් සක්â€à¶»à·’ය කොට තිබිය යුතුය.',
+ 'captchahelp-text' => 'මහජනයà·à¶œà·š පළකෙරුම් පිළිගන්න෠මෙවන් විකි à·€à·à¶±à·’ අඩවි තමන්ගේ අඩවියන් වෙත සබà·à¶³à·’ ඇතුලත් කිරීමට ස්â€à·€à¶ºà¶‚ක්â€à¶»à·“ය මෙවලම් භà·à·€à·’ත෠කරන ස්පෑම්කරුවන්ගේ අයත෠භà·à·€à·’තයට ගොදුරු වේ. මෙම සබà·à¶³à·’යන් ඉවත් කළ à·„à·à¶šà·’ වුවද, ඒව෠ඉතà·à¶¸à¶­à·Š කරදරකà·à¶»à·“ය.
+
+ඇතà·à¶¸à·Š විට, විà·à·šà·‚යෙන්ම පිටුවකට සබà·à¶³à·’යක් එක් කරන෠විට, විකිය විසින් ඔබට වර්ණිත හ෠විකෘතිත පෙළක් පෙන්ව෠එහි සඳහන් වදන් යතුරුලියන ලෙස ඔබෙන් ඉල්ලනු ඇති.
+එය ස්â€à·€à¶ºà¶‚කෙරුමට අසීරු ක්â€à¶»à·’යà·à·€à¶šà·Š බà·à·€à·’න් එය මගින් à·ƒà·à¶¶à·‘ මිනිසුන්ට ලිපි ලියුමට ඉඩ දෙන අතරම බොහà·à¶¸à¶ºà¶šà·Š ස්පෑම්කරුවන් හ෠ස්â€à·€à¶ºà¶‚ක්â€à¶»à·“ය පහරදීම් වලක්වනු ඇති.
+
+නමුත් අවà·à·ƒà¶±à·à·€à¶šà¶§ මෙය නිස෠දෘෂ්ඨි දà·à·‚ සහිත හ෠පෙළ-පà·à¶¯à¶š හ෠කථන-පà·à¶¯à¶š වෙබ් පිරික්සක භà·à·€à·’ත෠කරන පරිà·à·“ලකයන් අපහසුතà·à·€à¶§ පත් වනු ඇත.
+මේ වන විට අප සතුව à·à·Šâ€à¶»à·€à·Šâ€à¶º විකල්පයක් නොමà·à¶­.
+
+මෙය නිස෠ඔබට ලිපි ලිවීම දà·à¶©à·’ ලෙස කරදරකà·à¶»à·“ වී ඇත්නම් කරුණà·à¶šà¶» සහය සඳහ෠[[{{MediaWiki:Grouppage-sysop}}|අඩවි පරිපà·à¶½à¶šà¶ºà¶±à·Š]] සම්බන්ධ කරගන්න.
+
+පිටු සකසනයට ආපසු යà·à¶¸ සඳහ෠ඔබේ වෙබ් පිරික්සකයේ "පසුපසට" බොත්තම තද කරන්න.',
+ 'captcha-addurl-whitelist' => '#<!-- මෙම පේළිය මෙලෙසින්ම තිබීමට ඉඩ හරින්න --> <pre>
+# à·€à·à¶œà·Š රීතිය පහත පරිදි වේ:
+# * "#" අක්ෂරයක සිට පේළියක අග දක්ව෠සියල්ල පරිකථනයක් වේ
+# * සෑම නො-හිස් පේළියක්ම, කලà·à¶´ ලිපිනයන් (URL) තුල සත්කà·à¶»à¶šà¶ºà¶±à·Š පමණක් ගලපන නිත්ප්â€à¶»à¶šà· (නිත්â€à¶º ප්â€à¶»à¶šà·à·à¶±) ඛණ්ඩයක් වේ
+ #</pre> <!-- මෙම පේළිය එලෙසින්ම පà·à·€à¶­à·“මට ඉඩ හරින්න -->',
+ 'right-skipcaptcha' => 'captcha පරික්ෂ෠කීරීම සිදුකිරීමෙන් à·€à·à¶½à¶šà·™à¶¸à·’න් captcha පූරනකà·à¶»à¶š ක්â€à¶»à·’යà·à·€à¶½à·“න් සිදුකරන්න',
+);
+
+/** Slovak (SlovenÄina)
+ * @author Helix84
+ */
+$messages['sk'] = array(
+ 'captcha-edit' => 'Aby ste mohli upravovaÅ¥ túto stránku, vyrieÅ¡te prosím tento jednoduchý súÄet a napíšte výsledok do poľa ([[Special:Captcha/help|viac informácií]]):',
+ 'captcha-desc' => 'Poskytuje techniky captcha na ochranu pred spamom a hádaním hesla',
+ 'captcha-addurl' => 'VaÅ¡a úprava obsahuje nové externé odkazy. Ako pomoc pri ochrane pred automatickým spamom vyrieÅ¡te prosím tento jednoduchý súÄet a zadajte výsledok do poľa ([[Special:Captcha/help|viac informácií]]):',
+ 'captcha-badlogin' => 'Ako ochranu proti automatizovanému lámaniu hesiel, prosím vyrieÅ¡te nasledujúci súÄet a zadajte ho do poľa pre odpoveÄ ([[Special:Captcha/help|viac informácií]]):',
+ 'captcha-createaccount' => 'Kvôli ochrane proti automatizovanému spamu je potrebné napísaÅ¥ slová zobrazené na tomto obrázku, až potom bude vytvorený nový úÄet:
+<br />([[Special:Captcha/help|ÄŒo je toto?]])',
+ 'captcha-createaccount-fail' => 'Nesprávny alebo chýbajúci potvrdzovací kód.',
+ 'captcha-create' => 'Aby ste mohli vytvoriÅ¥ túto stránku, vyrieÅ¡te prosím tento jednoduchý súÄet a napíšte výsledok do poľa ([[Special:Captcha/help|viac informácií]]):',
+ 'captcha-sendemail' => 'Ako pomoc pri ochrane pred automatickým spamom, prosím, vyrieÅ¡ite nasledujúci jednoduchý súÄet a napíšte odpoveÄ do poľa ([[Special:Captcha/help|ÄalÅ¡ie informácie]]):',
+ 'captcha-sendemail-fail' => 'Nesprávny alebo chýbajúci potvrdzovací kód.',
+ 'captcha-disabledinapi' => 'Táto operácia vyžaduje captcha, preto nemôže byť vykonaná prostredníctvom rozhrania API.',
+ 'captchahelp-title' => 'Pomocník ku captcha',
+ 'captchahelp-cookies-needed' => 'Aby toto fungovalo, budete si musieÅ¥ v prehliadaÄi zapnúť koláÄiky (cookies).',
+ 'captchahelp-text' => 'Webstránky prijímajúce príspevky od verejnosti ako táto wiki sú Äasto cieľom zneužitia spammermi, ktorí používajú automatizované nástroje na to, aby svoje odkazy umiestnili na množstvo stránok. Hoci je možné tieto odkazy odstrániÅ¥, zbytoÄne to zaÅ¥ažuje používateľov.
+
+Niekedy, obzvlášť keÄ pridávate webové odkazy k Älánkom, wiki vám môže zobraziÅ¥ obrázok so zafarbeným alebo pokriveným textom a požiadaÅ¥ vás o prepísanie zobrazených slov. KeÄže takúto úlohu je Å¥ažké zautomatizovaÅ¥ a umožní skutoÄným ľuÄom poslaÅ¥ svoje príspevky, zastaví to väÄÅ¡inu spammerov a iných robotických útoÄníkov.
+
+NaneÅ¡Å¥astie, môže to byÅ¥ prekážkou pre používateľov so zrakovým postihnutím alebo tých, ktorí používajú textové alebo hovoriace prehliadaÄe. Momentálne nemáme dostupnú audio zvukovú alternatívu. Kontaktujte prosím [[{{MediaWiki:Grouppage-sysop}}|správcov stránok]] ak vám to neoÄakávane komplikuje umiestňovanie oprávnených príspevkov.
+
+StlaÄením tlaÄidla „späť“ vo vaÅ¡om prehliadaÄi sa vrátite do editora stránky.',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Syntax je nasledovná:
+# * Všetko od znaku „#“ do konca riadka je komentár
+# * Každý neprázdny riadok je fragment regulárneho výrazu, ktorého zhody budú iba stroje v rámci URL
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'VykonávaÅ¥ Äinnosti spúšťajúce captcha bez toho, aby bolo potrebné vyrieÅ¡iÅ¥ captcha',
+);
+
+/** Slovenian (SlovenÅ¡Äina)
+ * @author BrokenArrow
+ * @author Dbc334
+ */
+$messages['sl'] = array(
+ 'captcha-edit' => 'ÄŒe želite urejati stran, prosimo izraÄunajte preprost seÅ¡tevek spodaj in odgovor vpiÅ¡ite v polje ([[Special:Captcha/help|veÄ informacij]]):',
+ 'captcha-desc' => 'Nudi pristope CAPTCHA za zaÅ¡Äito proti smetju in ugibanju gesel',
+ 'captcha-addurl' => 'VaÅ¡e urejanje vkljuÄuje nove zunanje povezave.
+Zaradi zaÅ¡Äite pred samodejno navlako boste morali vpisati besede, ki se pojavijo v okencu ([[Special:Captcha/help|veÄ informacij]]):',
+ 'captcha-badlogin' => 'Zaradi zaÅ¡Äite pred samodejnim ugotavljanjem gesel, prosimo reÅ¡ite preprost seÅ¡tevek spodaj in vnesite odgovor v okence ([[Special:Captcha/help|veÄ informacij]]):',
+ 'captcha-createaccount' => 'Zaradi zaÅ¡Äite pred samodejnim ustvarjanjem raÄunov, prosimo reÅ¡ite preprost seÅ¡tevek spodaj in vnesite odgovor v okence ([[Special:Captcha/help|veÄ informacij]]):',
+ 'captcha-createaccount-fail' => 'NapaÄna ali manjkajoÄa potrditvena koda.',
+ 'captcha-create' => 'ÄŒe želite ustvariti stran, prosimo izraÄunajte preprost seÅ¡tevek spodaj in odgovor vpiÅ¡ite v polje ([[Special:Captcha/help|veÄ informacij]]):',
+ 'captcha-sendemail' => 'Zaradi zaÅ¡Äite pred samodejnim smetenjem, prosimo reÅ¡ite preprost seÅ¡tevek spodaj in vnesite odgovor v okence ([[Special:Captcha/help|veÄ informacij]]):',
+ 'captcha-sendemail-fail' => 'NapaÄna ali manjkajoÄa potrditvena koda.',
+ 'captcha-disabledinapi' => 'To dejanje zahteva preverjanje captcha, zato ga ni mogoÄe izvesti preko API.',
+ 'captchahelp-title' => 'PomoÄ za captcha',
+ 'captchahelp-cookies-needed' => 'Morali boste omogoÄiti piÅ¡kotke v vaÅ¡em brskalnik, Äe želite, da to deluje.',
+ 'captchahelp-text' => 'Spletne strani, ki omogoÄajo objavljanje Å¡irÅ¡i javnosti, kot na primer ta wiki, pogosto zlorabljajo spamerji, ki za objavo svojih povezav na mnogih straneh uporabljajo avtomatizirana orodja. ÄŒeprav se te neželene povezave da odstraniti, so precejÅ¡nja nadloga.
+
+VÄasih, zlasti pri dodajanju novih spletnih povezav na stran, vam bo morda wiki prikazal sliko obarvanega ali popaÄenega besedila in zahteval vpis prikazanih besed. Ker je to opravilo težko avtomatizirati, bo s tem veÄini ljudi objavljanje dovoljeno, spamerji in druge robotski napadalci pa bodo ustavljeni.
+
+Žal lahko to povzroÄi nevÅ¡eÄnosti uporabnikom s slabim vidom in tistim, ki uporabljajo besedilne ali govorne brskalnike. Glasovna možnost trenutno Å¡e ni na razpolago. ÄŒe vam to nepriÄakovano prepreÄuje legitimno objavo, se, prosimo, obrnite na [[{{MediaWiki:Grouppage-sysop}}|administratorje spletiÅ¡Äa]].
+
+Za vrnitev v urejevalnik izberite gumb »nazaj« vašega brskalnika.',
+ 'captcha-addurl-whitelist' => ' #<!-- pustite to vrstico takšno, kot je --> <pre>
+# Skladnja je sledeÄa:
+# * Vse od znaka »#« do konca vrstice je pripomba
+# * Vsaka neprazna vrstica je delec regularnega izraza, ki se bo ujemal samo z gostitelji v URL-jih
+ #</pre> <!-- pustite to vrstico takšno, kot je -->',
+ 'right-skipcaptcha' => 'Izvaja dejanja, ki sprožijo preverjanje captcha, brez da bi moral opraviti preverjanje',
+);
+
+/** Albanian (Shqip)
+ * @author BrokenArrow
+ * @author Dori
+ * @author Mikullovci11
+ * @author Olsi
+ */
+$messages['sq'] = array(
+ 'captcha-edit' => 'Për të redaktuar këtë faqe ju lutem zgjidhni shumën e mëposhtme dhe vendosni përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'captcha-desc' => 'Siguron teknika CAPTCHA për të mbrojtur kundër spam',
+ 'captcha-addurl' => 'Redaktimi juaj ka lidhje URL të reja dhe si mbrojtje kundër abuzimeve automatike duhet të shtypni çfarë shfaqet tek figura e mëposhtme:<br /> ([[Special:Captcha|Çfarë është kjo?]])',
+ 'captcha-badlogin' => 'Për tu mbrojtur nga metoda automatike të gjetjes së fjalëkalimeve ju kërkojmë të gjeni zgjidhni shumën e mëposhtme dhe të vendosni përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'captcha-createaccount' => 'Për mbrojtje kundër regjistrimeve automatike duhet të zgjidhni ekuacionin e mëposhtëm para se të hapni llogarinë:<br />([[Special:Captcha|Çfarë është kjo?]])',
+ 'captcha-createaccount-fail' => 'Mesazhi që duhej shtypur mungon ose nuk është shtypur siç duhet.',
+ 'captcha-create' => 'Për të krijuar këtë faqe ju lutem zgjidhni shumën e mëposhtme dhe vendosni përgjigjen në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'captcha-sendemail' => 'Për të ndihmuar në mbrojtjen kundër spamit të automatizuar, ju lutemi zgjidhni këtë më poshtë dhe shkruani përgjigjen në kuti
+([[Special:Captcha/help|më shumë informacion]]):',
+ 'captcha-sendemail-fail' => 'Mungon kodi i konfirmimit ose është i pasaktë.',
+ 'captcha-disabledinapi' => 'Ky veprim kërkon një captcha, kështu që nuk mund të kryhet nëpërmjet API.',
+ 'captchahelp-title' => 'Ndihmë rreth sistemit "Captcha"',
+ 'captchahelp-cookies-needed' => 'Duhet të pranoni "biskota" nga shfletuesi juaj për këtë veprim.',
+ 'captchahelp-text' => 'Faqet e rrjetit që pranojnë shkrime nga publiku, siç është edhe kjo wiki, shpesh abuzohen nga njerëz që duan të përfitojnë duke reklamuar ose promovuar lidhjet e tyre. Këto lloj abuzimesh mund të hiqen kollaj por janë një bezdi dhe shpenzim kohe i papranueshëm.
+
+Ndonjëherë, sidomos kur po hapni një llogari të re apo kur po shtoni lidhje të reja nëpërmjet redaktimit tuaj, sistemi mund t\'ju shfaqi një figurë që përmban fjalë me gërma ose numra të shtrembruara ose me ngjyra të ndryshme të cilat ju duhet të shtypni para se të mund të kryeni veprimin në fjalë. Kjo bëhet pasi është shumë e vështirë për një robot ose mjet automatik të kryejë të njëjtën punë. Kështu mund të dallohet nëse jeni me të vërtetë një njeri apo një robot. Ky lloj sistemi s\'mund të ndalojë tërë abuzimet por ndalon një pjesë të mirë të tyre, sidomos ato që janë automatike dhe të shumta në numër.
+
+Fatkeqësisht ky lloj sistemi mund të bezdisi përdoruesit me pamje të kufizuar ose ata që përdorin mjete teksti ose shfletues leximi me zë. Tani për tani nuk kemi mundësi për të ofruar një sistem me zë në vend të figurave. Ju lutem lidhuni me [[{{MediaWiki:Grouppage-sysop}}|administruesit]] nëse ky sistem po ju ndalon të jepni kontribute të vlefshme.
+
+Shtypni butonin "prapa" ("back") të shfletuesit tuaj për tu kthyer tek faqja e mëparshme.',
+ 'captcha-addurl-whitelist' => ' #<!-- lëreni këtë rresht siç është --> <pre>
+# Sintaksa është si më poshtë:
+# * Çdo gjë nga simboli "#" deri në fund të rreshtit është koment
+# * Çdo rresht jo-bosh është një pjesë regex që duhet t\'i përputhet emrat të shërbyesve brenda një URL-i
+ #</pre> <!-- lëreni këtë rresht siç është -->',
+ 'right-skipcaptcha' => 'Kryen veprime CAPTCHA-triggering pa pasur nevojë të shkojë nëpërmjet CAPTCHA',
+);
+
+/** Serbian Cyrillic ekavian (‪СрпÑки (ћирилица)‬)
+ * @author Millosh
+ * @author Rancher
+ */
+$messages['sr-ec'] = array(
+ 'captcha-edit' => 'За измену ове Ñтране, реши једноÑтаван збри иÑпод и унеÑи одговор у кутију ([[Special:Captcha/help|детаљније]]):',
+ 'captcha-desc' => 'Пружа заштиту против непожељних порука у виду потврдног кода',
+ 'captcha-addurl' => 'Твоја измена укључује нове Ñпољашње везе. У циљу заштите против аутоматÑког Ñпама, реши једноÑтаван збир иÑпод и упиши одговор у кутију ([[Special:Captcha/help|детаљније]]):',
+ 'captcha-badlogin' => 'У циљу заштите од аутоматÑке провале у лозинку, реши једноÑтаван збир иÑпод и унеÑи одговор у кутију ([[Special:Captcha/help|детаљније]]):',
+ 'captcha-createaccount' => 'У циљу заштите од аутоматÑког Ñтварања налога, реши једноÑтаван збир доле и унеÑи га у кутију ([[Special:Captcha/help|детаљније]]):',
+ 'captcha-createaccount-fail' => 'Ðеправилан или непоÑтојећи код за потврду.',
+ 'captcha-create' => 'За Ñтварање Ñтране реши једноÑтаван збир доле и унеÑи га у кутију ([[Special:Captcha/help|детаљније]]):',
+ 'captcha-sendemail-fail' => 'Ðеправилан или непоÑтојећи код за потврду.',
+ 'captchahelp-title' => 'Помоћ око потврдног кôда',
+ 'captchahelp-cookies-needed' => 'Потребно је да омогућите колачиће да би ово радило.',
+ 'right-skipcaptcha' => 'преÑкакање радњи које захтевају ÑƒÐ½Ð¾Ñ Ð¿Ð¾Ñ‚Ð²Ñ€Ð´Ð½Ð¾Ð³ кода',
+);
+
+/** Serbian Latin ekavian (‪Srpski (latinica)‬)
+ * @author Michaello
+ */
+$messages['sr-el'] = array(
+ 'captcha-edit' => 'Za izmenu ove strane, reši jednostavan zbri ispod i unesi odgovor u kutiju ([[Special:Captcha/help|detaljnije]]):',
+ 'captcha-desc' => 'jednostavna kapÄa implementacija',
+ 'captcha-addurl' => 'Tvoja izmena ukljuÄuje nove spoljaÅ¡nje veze. U cilju zaÅ¡tite protiv automatskog spama, reÅ¡i jednostavan zbir ispod i upiÅ¡i odgovor u kutiju ([[Special:Captcha/help|detaljnije]]):',
+ 'captcha-badlogin' => 'U cilju zaštite od automatske provale u lozinku, reši jednostavan zbir ispod i unesi odgovor u kutiju ([[Special:Captcha/help|detaljnije]]):',
+ 'captcha-createaccount' => 'U cilju zaštite od automatskog stvaranja naloga, reši jednostavan zbir dole i unesi ga u kutiju ([[Special:Captcha/help|detaljnije]]):',
+ 'captcha-createaccount-fail' => 'Nepravilan ili nepostojeći kod za potvrdu.',
+ 'captcha-create' => 'Za stvaranje strane reši jednostavan zbir dole i unesi ga u kutiju ([[Special:Captcha/help|detaljnije]]):',
+ 'captchahelp-title' => 'pomoć za kapÄu',
+ 'captchahelp-cookies-needed' => 'Da bi ovo uradio, neophodno je da su ti kolaÄići omogućeni u brauzeru.',
+ 'right-skipcaptcha' => 'Izvedi akcije kapÄe bez potrebe da se proÄ‘e kroz kapÄu.',
+);
+
+/** Seeltersk (Seeltersk)
+ * @author Pyt
+ */
+$messages['stq'] = array(
+ 'captcha-edit' => 'Tou Beoarbaidenge fon ju Siede löös ätterfoulgjende Reekenapgoawe un dräch dät Resultoat in dät Fäild hierunner ien [[Special:Captcha/help|(Froagen of Probleme?)]]:',
+ 'captcha-desc' => 'Eenfache Captcha-Implementierenge',
+ 'captcha-addurl' => 'Dien Beoarbaidenge änthaalt näie externe Ferbiendengen.
+Toun Schuts foar automatisierde Spammenge löös ju ätterfoulgjende Reekenapgoawe un dräch dät Resultoat in dät Fäild hierunner ien.
+Klik dan fonnäien ap „Siede spiekerje“ [[Special:Captcha/help|(Froagen of Probleme?)]].',
+ 'captcha-badlogin' => 'Toun Schuts foar ne Kompromittierenge fon dien Benutserkonto löös ju ätterfoulgjende Reekenapgoawe un dräch dät Resultoat in dät Fäild hierunner ien [[Special:Captcha/help|(Froagen of Probleme?)]].',
+ 'captcha-createaccount' => 'Toun Schuts foar automatisierden Anloage fon Benutserkonten löös ju ätterfoulgjende Reekenapgoawe un dräch dät Resultoat in dät Fäild hierunner ien [[Special:Captcha/help|(Froagen of Probleme?)]].',
+ 'captcha-createaccount-fail' => 'Falske of failjende Bestäätigengscode.',
+ 'captcha-create' => 'Uum disse Siede tou moakjen, löös juu ätterfoulgjende Reekenapgoawe ap un dräch dät Resultoat in dät Fäild hier unner ien [[Special:Captcha/help|(Froagen of Probleme?)]].',
+ 'captchahelp-title' => 'Captcha-Hälpe',
+ 'captchahelp-cookies-needed' => "'''Wichtige Waiwiesenge:''' Der mouten Cookies in dän Browser ferlööwed weese.",
+ 'captchahelp-text' => "Internetsteeden, do der foar Biedraage fon praktisk älkuneen eepen sunt - so as dät {{SITENAME}}-Wiki — wäide oafte fon Spammere misbruukt, do hiere Ferbiendengen automatisk ap fuul Websieden platzierje. Disse Spam-Ferbiendengen konnen wier wächhoald wäide, man jo sunt n groot Ferträit.
+
+In fuul Falle, besunners bie dät Bietouföigjen fon näie Webferbiendengen tou ne Siede, kon dät foarkuume, dät dit Wiki ne Bielde mäd n faawigen un fertroalden Text anwiest un deertou apfoardert, do anwiesde Woude ientoutippen. Deer sun Apgoawe man stuur automatisk ouhonneld wäide kon, wäide deertruch do maaste Spammere, do der mäd automatiske Reewen oarbaidje, stopped, wierjuun moanskelke Benutsere hieren Biedraach ouseende konnen.
+
+Spietelk genouch kon dät tou Meelasje foar Persoone fiere, do der minner goud sjo konnen of text- of sproakbasierde Browsere ferweende. Apstuuns hääbe wie neen Audio-Alternative ferföigboar.
+Kontaktier do [[{{MediaWiki:Grouppage-sysop}}|Site-Administratore]] foar Hälpe, wan dit jou Moite rakt bie dät Hoochleeden fon Biedraage.
+
+Klik ap dän 'Tourääch'-Knoop in jou Browser uum ätter dän Sieden-Editor touräächtougungen.",
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Syntax:
+# * Alles fon n #-Teeken bit tou dän Eend fon ju Riege is n Kommentoar
+# * Älke nit-loose Riege is n Regex-Fragment, dät juunuur den Hostnoome fon ne URL wröiged wäd
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Uurspringen fon ju Captcha-Iengoawe',
+);
+
+/** Sundanese (Basa Sunda)
+ * @author Irwangatot
+ * @author Kandar
+ */
+$messages['su'] = array(
+ 'captcha-edit' => 'Pikeun ngédit artikel ieu, mangga eusian itungan di handap ([[Special:Captcha/help|émbaran lengkep]]):',
+ 'captcha-desc' => 'Implementasi basajan captcha',
+ 'captcha-addurl' => 'Éditan anjeun ngawengku tumbu kaluar anyar.
+Pikeun nyegah spam, mangga eusian itungan di handap ieu
+([[Special:Captcha/help|émbaran lengkep]]):',
+ 'captcha-createaccount' => 'Pikeun nyegah dijieunna rekening sacara otomatis, mangga eusian itungan di handap ieu ([[Special:Captcha/help|émbaran lengkep]]):',
+ 'captcha-createaccount-fail' => 'Sandi konfirmasina salah atawa can dieusian.',
+ 'captcha-create' => 'Pikeun nyieun kacana, mangga eusian itungan di handap ieu ([[Special:Captcha/help|émbaran lengkep]]):',
+ 'captchahelp-title' => 'Pitulung Captcha',
+ 'captchahelp-text' => "Ramatloka nu nampa tulisan ti masarakat umum kawas ieu wiki mindeng diganggu ku spammer nu maké pakakas otomatis pikeun midangkeun tumbu-tumbuna ka loba loka. Najan tumbu spam ieu bisa dihapus, ari loba-loba teuing mah matak nyapékeun.
+
+Sometimes, especially when adding new web links to a page, the wiki may show you an image of colored or distorted text and ask you to type the words shown. Since this is a task that's hard to automate, it will allow most real humans to make their posts while stopping most spammers and other robotic attackers.
+
+Unfortunately this may inconvenience users with limited vision or using text-based or speech-based browsers. At the moment we do not have an audio alternative available. Please contact the site administrators for assistance if this is unexpectedly preventing you from making legitimate posts.
+
+You will need to have cookies enabled in your browser for this to work.
+
+Hit the 'back' button in your browser to return to the page editor.",
+ 'right-skipcaptcha' => 'Ngalakonan pamicu captcha tanpa ngaliwatan Captcha',
+);
+
+/** Swedish (Svenska)
+ * @author Ainali
+ * @author Boivie
+ * @author Lejonel
+ * @author M.M.S.
+ * @author MagnusA
+ * @author Per
+ */
+$messages['sv'] = array(
+ 'captcha-edit' => 'För att redigera den här sidan måste du först skriva svaret på följande
+räkneuppgift i rutan ([[Special:Captcha/help|mer information]]):',
+ 'captcha-desc' => 'Ger CAPTCHA tekniker för att skydda mot skräppost och lösenordsgissning',
+ 'captcha-addurl' => 'Din ändring lägger till nya externa länkar i texten. För att skydda wikin mot
+automatisk spam måste du skriva svaret på följande räkneuppgift i rutan ([[Special:Captcha/help|mer information]]):',
+ 'captcha-badlogin' => 'För att skydda mot wikin mot automatiserad lösenordsknäckning måste du skriva
+svaret på följande räkneuppgift i rutan ([[Special:Captcha/help|mer information]]):',
+ 'captcha-createaccount' => 'För att skydda wikin mot automatiskt skapade användarkonton måste du
+skriva svaret på följande räkneuppgift i rutan ([[Special:Captcha/help|mer information]]):',
+ 'captcha-createaccount-fail' => 'Bekräftelsekoden är felaktig eller saknas.',
+ 'captcha-create' => 'För att skapa den här sidan måste du skriva svaret på följande räkneuppgift
+i rutan ([[Special:Captcha/help|mer information]]):',
+ 'captcha-sendemail' => 'Lös den enkla matematiska uppgiften i rutan nedan, för att hjälpa oss att skydda mot automatisk spamning ([[Special:Captcha/help|mer information]]):',
+ 'captcha-sendemail-fail' => 'Felaktig eller saknad bekräftelsekod.',
+ 'captcha-disabledinapi' => 'Denna åtgärd kräver en captcha, så den kan inte utföras genom APIet.',
+ 'captchahelp-title' => 'Captchahjälp',
+ 'captchahelp-cookies-needed' => 'Du måste ha cookies aktiverade i din webbläsare för att det här ska fungera.',
+ 'captchahelp-text' => 'Webbplatser som tillåter inlägg från allmänheten, som den här wikin gör, kan missbrukas av spammare som använder ofta automatiserade verktyg för att lägga till länkar på många webbsajter.
+Även om dessa spamlänkar kan tas bort så är de till stort besvär.
+
+Ibland, speciellt då du lägger till nya externa länkar på en sida, visar wikin en bild på en färgad eller förvriden text och ber dig skriva texten som visas.
+Eftersom den uppgiften är svår att automatisera, låter den de flesta riktiga människor göra sina redigeringar medan spammare och andra robotattacker stoppas.
+
+Tyvärr kan det här orsaka problem för användare med nedsatt syn eller som använder text- eller talbaserade webbläsare.
+För tillfället finns inga ljudbaserade alternativ tillgängliga.
+Kontakta [[{{MediaWiki:Grouppage-sysop}}|webbplatsens administratörer]] för hjälp om det här hindrar dig från att göra legitima ändringar.
+
+Tryck på bakåtknappen i din webbläsare för att gå tillbaks till sidredigeringsläget.',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Syntaxen är följande:
+# * Allting från ett "#" till slutet av en rad är en kommentar
+# * Varje icketom rad är ett reguljärt uttryck som matchar domänen i en URL
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Utföra handlingar som normalt kräver "captcha"-bekräftning utan att använda "captcha"',
+);
+
+/** Telugu (తెలà±à°—à±)
+ * @author Chaduvari
+ * @author Kiranmayee
+ * @author Mpradeep
+ * @author Veeven
+ */
+$messages['te'] = array(
+ 'captcha-edit' => 'à°ˆ పేజీని సరిదిదà±à°¦à°¡à°¾à°¨à°¿à°•à°¿, కింది ఇచà±à°šà°¿à°¨ à°šà°¿à°¨à±à°¨ లెకà±à°•à°¨à°¿ చేసి జవాబà±à°¨à°¿ పకà±à°•à°¨à±à°¨à±à°¨ పెటà±à°Ÿà±†à°²à±‹ టైపౠచెయà±à°¯à°‚à°¡à°¿ ([[à°ªà±à°°à°¤à±à°¯à±‡à°•:Captcha/help|మరింత సమాచారం]]):',
+ 'captcha-desc' => 'సరళమైన అమకవేప అమలà±',
+ 'captcha-addurl' => 'మీ దిదà±à°¦à±à°¬à°¾à°Ÿà±à°²à±‹ కొతà±à°¤ బయటి లింకà±à°²à± ఉనà±à°¨à°¾à°¯à°¿. ఆటోమేటెడౠసà±à°ªà°¾à°®à± à°¨à±à°‚à°¡à°¿ à°°à°•à±à°·à°¿à°‚చేందà±à°•à± గానà±, à°•à°¿à°‚à°¦ ఇచà±à°šà°¿à°¨ లెకà±à°• యొకà±à°• జవాబà±à°¨à± ఇకà±à°•à°¡à±à°¨à±à°¨ పెటà±à°Ÿà±†à°²à±‹ రాయండి ([[Special:Captcha/help|మరింత సహాయం]]):',
+ 'captcha-badlogin' => 'పాసà±à°µà±‹à°°à±à°¡à±à°¨à± బాటà±à°² à°¦à±à°µà°¾à°°à°¾ తెలà±à°¸à±à°•à±‹à°•à±à°‚à°¡à°¾ ఉండేందà±à°•à±, à°•à°¿à°‚à°¦ ఇచà±à°šà°¿à°¨ లెకà±à°• యొకà±à°• జవాబà±à°¨à± ఇకà±à°•à°¡à±à°¨à±à°¨ పెటà±à°Ÿà±†à°²à±‹ రాయండి ([[Special:Captcha/help|మరింత సహాయం]]):',
+ 'captcha-createaccount' => 'బాటà±à°² à°¦à±à°µà°¾à°°à°¾ ఖాతాలనౠసృషà±à°Ÿà°¿à°‚à°šà°•à±à°‚à°¡à°¾ నిరోధించటానికి, à°•à°¿à°‚à°¦ ఇచà±à°šà°¿à°¨ లెకà±à°• యొకà±à°• జవాబà±à°¨à± ఇకà±à°•à°¡à±à°¨à±à°¨ పెటà±à°Ÿà±†à°²à±‹ రాయండి ([[Special:Captcha/help|మరింత సహాయం]]):',
+ 'captcha-createaccount-fail' => 'దృవీకరించà±à°•à±‹à°µà°¡à°¾à°¨à°¿à°•à°¿ విలà±à°µ ఇవà±à°µà°²à±‡à°¦à± లేదా దానిని తపà±à°ªà±à°—à°¾ ఇచà±à°šà°¾à°°à±.',
+ 'captcha-create' => 'కొతà±à°¤à°ªà±‡à°œà±€à°¨à°¿ సృషà±à°Ÿà°¿à°‚చడానికి, à°•à°¿à°‚à°¦ ఇచà±à°šà°¿à°¨ లెకà±à°• యొకà±à°• జవాబà±à°¨à± ఇకà±à°•à°¡à±à°¨à±à°¨ పెటà±à°Ÿà±†à°²à±‹ రాయండి ([[Special:Captcha/help|మరింత సహాయం]]):',
+ 'captchahelp-title' => 'ఆమకవేప సహాయం',
+ 'captchahelp-cookies-needed' => 'ఇది పని చెయà±à°¯à°¾à°²à°‚టే మీ à°¬à±à°°à±Œà°œà°°à±à°²à±‹ కూకీలౠసశకà±à°¤à°®à±ˆ ఉండాలి.',
+ 'captchahelp-text' => 'à°ªà±à°°à°œà°²à°¨à±à°‚à°¡à°¿ రచనలనౠసà±à°µà±€à°•à°°à°¿à°‚చే à°ˆ వికీ వంటి వెబà±â€Œà°¸à±ˆà°Ÿà±à°²à±, ఆటోమాటికౠపà±à°°à±‹à°—à±à°°à°¾à°®à±à°²à°¤à±‹ తమ à°¸à±à°µà°‚à°¤ లింకà±à°²à°¨à± చేరà±à°šà±‡ à°¸à±à°ªà°¾à°®à± à°®à±à°·à±à°•à°°à±à°² దాడà±à°²à°•à± à°—à±à°°à°µà°¡à°‚ తరచూ జరà±à°—à±à°¤à±‚ ఉంటà±à°‚ది. à°† లింకà±à°²à°¨à± తీసేయడం పెదà±à°¦ విషయం కాకపోయినపà±à°ªà°Ÿà°¿à°•à±€, అవి తలనెపà±à°ªà°¿ అనేది మాతà±à°°à°‚ నిజం.
+
+కొనà±à°¨à°¿à°¸à°¾à°°à±à°²à±, à°®à±à°–à±à°¯à°‚à°—à°¾ à°à°¦à±ˆà°¨à°¾ పేజీ à°¨à±à°‚à°¡à°¿ బయటకౠలింకà±à°²à± ఇచà±à°šà±‡à°Ÿà°ªà±à°¡à±, వంకరà±à°²à± తిరిగిపోయి ఉనà±à°¨ పదాల బొమà±à°®à°¨à± చూపించి à°† పదానà±à°¨à°¿ టైపౠచెయà±à°¯à°®à°¨à°¿ వికీ మిమà±à°®à°²à±à°¨à°¿ అడగవచà±à°šà±. దీనà±à°¨à°¿ ఆటోమాటికౠటూలà±à°¸à±à°¤à±‹ చెయà±à°¯à°¡à°‚ చాలా à°•à°·à±à°Ÿà°‚ కాబటà±à°Ÿà°¿, à°¸à±à°ªà°¾à°®à± జితà±à°¤à±à°²à± చెలà±à°²à°µà±; మనà±à°·à±à°¯à±à°²à± మాతà±à°°à°‚ మామూలà±à°—ానే చెయà±à°¯à°—లరà±.
+
+à°¦à±à°°à°¦à±ƒà°·à±à°Ÿà°µà°¶à°¾à°¤à±à°¤à±‚, చూపౠసరిగా లేనివారికి, టెకà±à°¸à±à°Ÿà± à°¬à±à°°à±Œà°œà°°à±à°²à± మాతà±à°°à°®à±‡ వాడేవారికి ఇది అసౌకరà±à°¯à°‚ కలిగిసà±à°¤à±à°‚ది. à°ªà±à°°à°¸à±à°¤à±à°¤à°¾à°¨à°¿à°•à°¿ శబà±à°¦à°‚ వినిపించే వెసà±à°²à±à°¬à°¾à°Ÿà± మాకౠలేదà±. మీరౠరచనలౠచెయà±à°¯à°•à±à°‚à°¡à°¾ ఇది à°…à°¡à±à°¡à±à°ªà°¡à±à°¤à±à°‚టే, సహాయం కోసం సైటౠనిరà±à°µà°¾à°¹à°•à±à°£à±à°£à°¿ సంపà±à°°à°¦à°¿à°‚à°šà°‚à°¡à°¿.
+మీరౠచెసే విలà±à°µà°¯à°¿à°¨, సమà±à°®à°¤à°®à°¯à°¿à°¨ à°µà±à°¯à°¾à°¸ మారà±à°ªà±à°²à± à°­à°¦à±à°°à°ªà°°à°šà°Ÿà°®à± à°•à±à°¦à°°à°•à°ªà±Šà°¤à±†, దయచేసి [[{{MediaWiki:Grouppage-sysop}}|సైటౠనిరà±à°µà°¹à°£à°¾à°§à°¿à°•à°¾à°°à°¿]]à°•à°¿ లేఖ రాయండి.
+
+మీ à°¬à±à°°à±Œà°œà°°à±à°²à±‹à°¨à°¿ à°¬à±à°¯à°¾à°•à±(back) మీటనౠనొకà±à°•à°¿ ఇంతకౠమà±à°‚దరి పేజీకి వెళà±à°³à°‚à°¡à°¿.',
+ 'captcha-addurl-whitelist' => ' #<!-- à°ˆ పంకà±à°¤à°¿à°¨à°¿ ఉనà±à°¨à°¦à±à°¨à±à°¨à°Ÿà±à°²à± ఇలాగే వదిలివేయండి --> <pre>
+# ఇకà±à°•à°¡ రాయాలà±à°¸à°¿à°¨ విధానం ఇదీ:
+# * "#" అనే à°…à°•à±à°·à°°à°‚ à°¨à±à°‚à°¡à°¿ à°† పంకà±à°¤à°¿ చివరివరకూ à°µà±à°¯à°¾à°–à±à°¯à°¾à°¨à°‚
+# * ఖాళీగా లేని à°ªà±à°°à°¤à±€ పంకà±à°¤à±€ à°’à°• regex భాగమà±, ఇది పేజీలో ఉనà±à°¨ URLà°²à±à°² యొకà±à°• హోసà±à°Ÿà±à°¤à±‹ మాతà±à°°à°®à±‡ సరిచూడబడà±à°¤à±à°‚ది
+ #</pre> <!-- à°ˆ పంకà±à°¤à°¿à°¨à°¿ ఉనà±à°¨à°¦à±à°¨à±à°¨à°Ÿà±à°²à± ఇలాగే వదిలివేయండి -->',
+ 'right-skipcaptcha' => 'ఆమకవేప à°¦à±à°µà°¾à°°à°¾ పోకà±à°‚డానే దాని à°Ÿà±à°°à°¿à°—à±à°—à°°à± à°šà°°à±à°¯à°²à°¨à± అమలౠచెయà±à°¯à°¿',
+);
+
+/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic))
+ * @author Ibrahim
+ */
+$messages['tg-cyrl'] = array(
+ 'captcha-edit' => 'Барои вироиши ин мақола, лутфан ҳоÑили ҷамъи зеринро ҳиÑоб кунед ва натиҷаро дар ҷаъба ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):',
+ 'captcha-desc' => 'Татбиқи Ñоддаи CAPTCHA',
+ 'captcha-addurl' => 'Вироиши шумо пайвандҳои ҷадиди хориҷиро дар бар мегирад. Барои кӯмак ба пешгири аз ирÑоли худкори ҳаразномаҳо, лутфан ҳоÑили ҷамъи зеринро ҳиÑоб кунед ва натиҷаро дар ҷаъба ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):',
+ 'captcha-badlogin' => 'Барои кӯмак ба пешгири аз шикаÑтани калимаи убур, лутфан ҳоÑили ҷамъи зеринро ҳиÑоб кунед ва натиҷаро дар ҷаъба ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):',
+ 'captcha-createaccount' => 'Барои кӯмак ба пешгири аз Ñҷоди худкори ҳиÑоби корбарӣ, лутфан ҳоÑили ҷамъи зеринро ҳиÑоб кунед ва натиҷаро дар ҷаъба ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):',
+ 'captcha-createaccount-fail' => 'Коди таъйид нодуруÑÑ‚ Ñ‘ гумшуда.',
+ 'captcha-create' => 'Барои Ñҷоди Ñаҳифа, лутфан ҳоÑили ҷамъи зеринро ҳиÑоб кунед ва натиҷаро дар ҷаъба ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):',
+ 'captchahelp-title' => 'Роҳнамои Captcha',
+ 'captchahelp-cookies-needed' => 'Барои кор кардани он, шумо боÑд кукиҳои мурургаратонро фаъол кунед.',
+ 'captchahelp-text' => "Сомонаҳое, ки имкони тағйир таваÑÑути ҳамагон дар онҳо вуҷуд дорад, монанди ин вики, гоҳ Ñ‘ ногоҳ таваÑÑути ҳаразнигориҳое, ки таваÑÑути абзорҳои худкор пайванди худро дар чандин Ñомонаҳо мефириÑтанд, мавриди ÑӯъиÑтифода қарор мегиранд.
+
+Дар пораи аз маворид, ба вижа замоне, ки Ñк пайванди интернетии ҷадид ба Ñаҳифа изофа мешавад, вики метавонад, Ñк таÑвир аз ҳуруфи рангӣ Ñ‘ матни бенурро ба шумо нишон бидиҳад ва аз шумо ворид кардани калимаи нишондодашударо пурÑон мешавад. Ба хотири ин ки анҷоми ин кор ба шакли худкор душвор аÑÑ‚, ин амал ба акÑари инÑонҳое иҷозат медиҳад, ки ба ирÑоли матолиб бипардозанд, дар ҳоле ки бештар роботҳои ҳамлакунанда ва ҳаразнигорҳоро мутавақиф мекунад.
+
+МутаÑÑифона ин равиш мумкин аÑÑ‚, корбароне, ки қувваи боÑираашон ÑуÑÑ‚ Ñ‘ аз мурургарҳои матнӣ Ñ‘ овозӣ иÑтифода мекунанд, дучори маҳдудиÑтҳое бикунад. Дар ҳоли ҳозир ҳеҷ чойгузини Ñавтӣ барои ин равиш мавҷуд неÑÑ‚. Чунончи ин маÑъала шуморо дучори маҳдудиÑте дур аз интизор дар ирÑоли навиштаҳои миҷоз мекунад, бо мудирони Ñомона оиди кӯмак Ñ‚Ð°Ð¼Ð¾Ñ Ð±Ð¸Ð³Ð¸Ñ€ÐµÐ´.
+
+Дар муругаратон тугмаи 'бозгашт'-ро бо пахш кардан ба Ñаҳифаи вироишгар баргардед.",
+ 'captcha-addurl-whitelist' => ' #<!—ин Ñатрро ҳамон гуна, ки ҳаÑÑ‚ раҳо кунед --> <pre>
+# Қоида ба ин шакл аÑÑ‚:
+# * Ҳама чиз аз "#" то охири Ñатр Ñк тавзеҳ ба назар гирифта мешавад
+# * Ҳар Ñатре, ки холӣ набошад Ñк қитъа дар назар гирифта мешавад, ки фақат бо номи мизбони интернетӣ Ñанҷида мешавад
+ #</pre> <!-- ин Ñатрро ҳамон гуна, ки ҳаÑÑ‚ раҳо кунед-->',
+);
+
+/** Tajik (Latin) (Тоҷикӣ (Latin))
+ * @author Liangent
+ */
+$messages['tg-latn'] = array(
+ 'captcha-edit' => "Baroi viroişi in maqola, lutfan hosili çam'i zerinro hisob kuned va natiçaro dar ça'ba vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ 'captcha-desc' => 'Tatbiqi soddai CAPTCHA',
+ 'captcha-addurl' => "Viroişi şumo pajvandhoi çadidi xoriçiro dar bar megirad. Baroi kūmak ba peşgiri az irsoli xudkori haraznomaho, lutfan hosili çam'i zerinro hisob kuned va natiçaro dar ça'ba vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ 'captcha-badlogin' => "Baroi kūmak ba peşgiri az şikastani kalimai ubur, lutfan hosili çam'i zerinro hisob kuned va natiçaro dar ça'ba vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ 'captcha-createaccount' => "Baroi kūmak ba peşgiri az eçodi xudkori hisobi korbarī, lutfan hosili çam'i zerinro hisob kuned va natiçaro dar ça'ba vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ 'captcha-createaccount-fail' => "Kodi ta'jid nodurust jo gumÅŸuda.",
+ 'captcha-create' => "Baroi eçodi sahifa, lutfan hosili çam'i zerinro hisob kuned va natiçaro dar ça'ba vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):",
+ 'captchahelp-title' => 'Rohnamoi Captcha',
+ 'captchahelp-cookies-needed' => "Baroi kor kardani on, ÅŸumo bojad kukihoi mururgaratonro fa'ol kuned.",
+ 'captchahelp-text' => "Somonahoe, ki imkoni taƣjir tavassuti hamagon dar onho vuçud dorad, monandi in viki, goh jo nogoh tavassuti haraznigorihoe, ki tavassuti abzorhoi xudkor pajvandi xudro dar candin somonaho mefiristand, mavridi sū'istifoda qaror megirand.
+
+Dar porai az mavorid, ba viƶa zamone, ki jak pajvandi internetiji çadid ba sahifa izofa meşavad, viki metavonad, jak tasvir az hurufi rangī jo matni benurro ba şumo nişon bidihad va az şumo vorid kardani kalimai nişondodaşudaro purson meşavad. Ba xotiri in ki ançomi in kor ba şakli xudkor duşvor ast, in amal ba aksari insonhoe içozat medihad, ki ba irsoli matolib bipardozand, dar hole ki beştar robothoi hamlakunanda va haraznigorhoro mutavaqif mekunad.
+
+Mutassifona in raviş mumkin ast, korbarone, ki quvvai bosiraaşon sust jo az mururgarhoi matnī jo ovozī istifoda mekunand, ducori mahdudijathoe bikunad. Dar holi hozir heç cojguzini savtī baroi in raviş mavçud nest. Cunonci in mas'ala şumoro ducori mahdudijate dur az intizor dar irsoli naviştahoi miçoz mekunad, bo mudironi somona oidi kūmak tamos bigired.
+
+Dar murugaraton tugmai 'bozgaÅŸt'-ro bo paxÅŸ kardan ba sahifai viroiÅŸgar bargarded.",
+ 'captcha-addurl-whitelist' => ' #<!—in satrro hamon guna, ki hast raho kuned --> <pre>
+# Qoida ba in ÅŸakl ast:
+# * Hama ciz az "#" to oxiri satr jak tavzeh ba nazar girifta meÅŸavad
+# * Har satre, ki xolī naboşad jak qit\'a dar nazar girifta meşavad, ki faqat bo nomi mizboni internetī sançida meşavad
+ #</pre> <!-- in satrro hamon guna, ki hast raho kuned-->',
+);
+
+/** Thai (ไทย)
+ * @author Passawuth
+ */
+$messages['th'] = array(
+ 'captcha-edit' => 'เพื่อที่จะà¹à¸à¹‰à¹„ขหน้านี้ à¸à¸£à¸¸à¸“าตอบโจทย์ปัà¸à¸«à¸²à¸—างคณิตศาสตร์ข้างล่าง à¹à¸¥à¸°à¹ƒà¸ªà¹ˆà¸„ำตอบลงในà¸à¸¥à¹ˆà¸­à¸‡ ([[Special:Captcha/help|รายละเอียดเพิ่มเติม]]) :',
+ 'captcha-addurl' => 'à¸à¸²à¸£à¹à¸à¹‰à¹„ขของคุณมีลิงà¸à¹Œà¹‡à¹„ปยังเว็บไซต์ภายนอà¸à¸”้วย
+เพื่อที่จะป้องà¸à¸±à¸™à¸ªà¹à¸›à¸¡ à¸à¸£à¸¸à¸“าà¹à¸à¹‰à¹‚จทย์ด้านล่าง à¹à¸¥à¸°à¸žà¸´à¸¡à¸žà¹Œà¸„ำตอบลงในà¸à¸¥à¹ˆà¸­à¸‡ ([[Special:Captcha/help|รายละเอียด]]):',
+ 'captcha-badlogin' => 'à¸à¸£à¸¸à¸“าà¹à¸à¹‰à¹‚จทย์ด้านล่าง à¹à¸¥à¸°à¸žà¸´à¸¡à¸žà¹Œà¸„ำตอบลงในà¸à¸¥à¹ˆà¸­à¸‡ เพื่อที่จะป้องà¸à¸±à¸™à¸à¸²à¹ˆà¸£à¹à¸­à¸šà¹à¸®à¸„รหัสผ่านโดยผู้ไม่หวังดี ([[Special:Captcha/help|รายละเอียด]]):',
+ 'captcha-createaccount' => 'à¸à¸£à¸¸à¸“าà¹à¸à¹‰à¹‚จทย์ด้านล่าง à¹à¸¥à¸°à¸žà¸´à¸¡à¸žà¹Œà¸„ำตอบลงในà¸à¸¥à¹ˆà¸­à¸‡ เพื่อที่จะป้องà¸à¸±à¸™à¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸šà¸±à¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹‚ดยผู้ไม่หวังดี ([[Special:Captcha/help|รายละเอียด]]):',
+ 'captcha-createaccount-fail' => 'โค้ดสำหรับà¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸¢à¸±à¸‡à¹„ม่ได้ใส่หรือผิด',
+ 'captcha-create' => 'à¸à¸£à¸¸à¸“าà¹à¸à¹‰à¹‚จทย์ด้านล่าง à¹à¸¥à¸°à¸žà¸´à¸¡à¸žà¹Œà¸„ำตอบลงในà¸à¸¥à¹ˆà¸­à¸‡ เพื่อที่จะสร้างหน้า
+([[Special:Captcha/help|รายละเอียด]]):',
+ 'captchahelp-title' => 'เà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¹à¸„ปต์ชา',
+ 'captchahelp-cookies-needed' => 'คุณต้องอนุà¸à¸²à¸•à¸„ุà¸à¸à¸µà¹‰à¸šà¸™à¹€à¸§à¹‡à¸šà¸šà¸£à¸²à¸§à¹€à¸‹à¸­à¸£à¹Œà¸‚องคุณ เพื่อที่คุณจะสามารถล็อà¸à¸­à¸´à¸™à¹„ด้',
+);
+
+/** Turkmen (Türkmençe)
+ * @author Hanberke
+ */
+$messages['tk'] = array(
+ 'captcha-edit' => 'Bu sahypany redaktirlemek üçin, aşakdaky meselni çözüň we jogaby gutynyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):',
+ 'captcha-desc' => 'Ãönekeý captcha ama aÅŸyrylyÅŸy',
+ 'captcha-addurl' => 'Özgerdişiňizde täze daşarky çykgytlar bar.
+Awtomatik spamdan goranmak üçin, aşakdaky ýönekeý soraga jogap beriň we jogaby gutynyň içine ýazyň ([[Special:Captcha/help|giňişleýin maglumat]]):',
+ 'captcha-badlogin' => 'Awtomat parol döwmeklikden goranmaga kömekleşmek üçin, aşakdaky meseläni çözüň we jogaby gutynyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):',
+ 'captcha-createaccount' => 'Awtomat hasap döredilmeginden goranmaga kömekleşmek üçin, aşakdaky meseläni çözüň we jogaby gutynyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):',
+ 'captcha-createaccount-fail' => 'Nädogry ýa-da kem tassyklama kody.',
+ 'captcha-create' => 'Sahypany döretmek üçin, aşakdaky meseläni çözüň we jogaby gutynyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):',
+ 'captcha-sendemail' => 'Awtomat spamdan goranmaga kömekleşmek üçin, aşakdaky meseläni çözüň we jogaby gutynyň içine ýazyň ([[Special:Captcha/help|giňişleýin maglumat]]):',
+ 'captcha-sendemail-fail' => 'Nädogry ýa-da kem tassyklama kody.',
+ 'captcha-disabledinapi' => 'Bu iş captcha talap edýär, şonuň üçin hem ony API bilen berjaý edip bolmaýar.',
+ 'captchahelp-title' => 'Captcha ýardamy',
+ 'captchahelp-cookies-needed' => 'Munuň işlemegi üçin brauzeriňiziň kukileri kabul etmegi gerek.',
+);
+
+/** Tagalog (Tagalog)
+ * @author AnakngAraw
+ */
+$messages['tl'] = array(
+ 'captcha-edit' => 'Para magawaan ng pagbabago ang pahinang ito, pakisagot lamang ang payak na pagtutuos na nasa ibaba at ipasok ang sagot sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):',
+ 'captcha-desc' => 'Nagbibigay ng mga pamamaraan ng CAPTCHA upang maisanggalang laban sa mga basurang e-liham at panghuhula ng hudyat',
+ 'captcha-addurl' => "Kasama sa mga pagbabagong ginawa mo ang bagong panlabas na mga kawing.
+Upang makatulong sa pagsasanggalang laban sa mga kusang dumarating na \"manlulusob\" (''spam''), pakisagot ang payak na pagtutuos sa ibaba at ipasok ang sagot sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):",
+ 'captcha-badlogin' => 'Upang makatulong sa pagsasanggalang laban sa mga kusang paglutas ng hudyat, pakisagot lamang payak na pagtutuos na nasa ibaba at ipasok ang sagot sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):',
+ 'captcha-createaccount' => 'Upang makatulong sa pagsasanggalang laban sa kusang paglikha ng kuwenta, pakisagot ang payak na pagtutuos na nasa ibaba at ipasok ang sagot sa loob ng kahon ([[Special:Captcha/help|masa marami pang kabatiran]]):',
+ 'captcha-createaccount-fail' => 'Hindi tama o nawawalang kodigo ng pagpapatotoo.',
+ 'captcha-create' => 'Upang malikha ang pahina, pakisagot lamang ang payak na pagtutuos na nasa ibaba at ipasok ang sagot sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):',
+ 'captcha-sendemail' => 'Upang makatulong sa pagsasanggalang laban sa mga kusang pagsalakay ng ispam, pakisagot ang payak na pagtutuos na nasa ibaba at ipasok ang sagot sa loob ng kahong ([[Special:Captcha/help|mas marami pang kabatiran]]):',
+ 'captcha-sendemail-fail' => 'Hindi tama o nawawalang kodigo ng pagpapatotoo.',
+ 'captcha-disabledinapi' => 'Ang aksyon na ito ay nangangailangan ng isang captcha, kaya hindi ito maaring gawin sa pamamagitan ng API.',
+ 'captchahelp-title' => "Tulong na pangpagsusuring ''captcha''",
+ 'captchahelp-cookies-needed' => "Kinakailangan mong magkaroon ng mga gumaganang mga \"otap\" (''cookies'') sa loob ng pantingin-tingin (''browser'') mo upang maisagawa ito.",
+ 'captchahelp-text' => "Ang mga websayt na tumatanggap ng mga pagpapaskil mula sa madla, katulad ng wiking ito, ay kalimitang inaabuso ng mga tagapagpadala ng mga manlulusob na gumagamit ng kusang mga kagamitan upang makapagpaskil ng kanilang mga kawing sa maraming mga sityo.
+Bagaman maaaring matanggal ang mga kawing na pangmanlulusob na ito, isa silang malaking abala.
+
+Kung minsan, lalo na kapag nagdaragdag ng bagong mga kawing na pangweb sa isang pahina, maaaring magpakita sa iyo ang wiki ng isang larawan ng may kulay o may masamang hubog na teksto at hihilingin kang magmakinilya ng ipinapakitang mga salita.
+Dahil sa isa itong gawaing mahirap na gawing kusa, napapahintulutan nito ang halos lahat ng mga tunay na tao upang magawa ang kanilang mga pagpapaskil habang pinipigil ang karamihan sa mga nagpapadala ng mga ispam' at iba pang mala-robot na mga manlulusob.
+
+Sa kasawiang palad maaaring hindi makaginhawa ito sa mga tagagamit na may malabong paningin o gumagamit ng pangteksto o pangpagsasalitang mga pantingin-tingin.
+Sa ngayon wala pa kaming pamalit na isang pangpandinig.
+Makipag-ugnayan lamang sa [[{{MediaWiki:Grouppage-sysop}}|mga tagapangasiwa ng sityo]] para humingi ng tulong kapag hindi inaasahang mapigilan ka sa pagsasagawa ng mga tunay na pagpapaskil.
+
+Pindutin ang pindutang 'bumalik' sa iyong pantingin-tingin upang makabalik sa pahinang pampatnugot.",
+ 'captcha-addurl-whitelist' => " #<!-- leave this line exactly as it is --> <pre>
+# Ang palaugnayan ay ayon sa mga sumusunod:
+# * Lahat ng bagay mula sa isang \"#\" na panitik hanggang sa wakas ng isang guhit/hanay ay isang puna (kumento)
+# * Bawat hindi/walang patlang na guhit/hanay ay isang piraso ng karaniwang pagsasaad (''regex'') na tutugma lamang sa mga tagapagpasinaya sa loob ng mga URL
+ #</pre> <!-- leave this line exactly as it is -->",
+ 'right-skipcaptcha' => "Gawin ang mga galaw na nakapagsasanhi ng pagsusuring ''captcha'' na hindi kinakailangang dumaan sa ''captcha''",
+);
+
+/** Turkish (Türkçe)
+ * @author Joseph
+ * @author Runningfridgesrule
+ */
+$messages['tr'] = array(
+ 'captcha-edit' => 'Bu sayfayı değiştirebilmek için lütfen aşağıdaki basit soruyu cevaplayın ve cevabı kutunun içine yazın ([[Special:Captcha/help|ayrıntılı bilgiler]]):',
+ 'captcha-desc' => 'Basit captcha uygulaması',
+ 'captcha-addurl' => 'Değişikliğiniz yeni dış bağlantılar içeriyor.
+Otomatik spamdan korunmak için, lütfen aşağıdaki basit soruyu cevaplayın ve cevabı kutunun içine yazın ([[Special:Captcha/help|ayrıntılı bilgiler]]):',
+ 'captcha-badlogin' => 'Otomatik parola çözülmesinden korunmak için, lütfen aşağıdaki basit soruyu cevaplayın ve kutunın içinde cevabı yazın ([[Special:Captcha/help|ayrıntılı bilgiler]]):',
+ 'captcha-createaccount' => 'Otomatik spama karşı bir koruma olarak, hesabınızı kaydetmek için bu resimde gözüken kelimeleri tuşlamanız gerekmektedir ([[Special:Captcha/help|Bu nedir?]]):',
+ 'captcha-createaccount-fail' => 'Hatalı ya da eksik onay kodu.',
+ 'captcha-create' => 'Bu sayfayı oluşturmak için, lütfen aşağıdaki basit soruyu cevaplayın ve kutunun içinde cevabı yazın ([[Special:Captcha/help|ayrıntılı bilgiler]]):',
+ 'captcha-sendemail' => 'Otomatik spamlere karşı korunmaya yardımcı olmak için, lütfen aşağıdaki basit işlemi çözün ve cevabı kutuya yazın ([[Special:Captcha/help|daha fazla bilgi]]):',
+ 'captcha-sendemail-fail' => 'Yanlış veya eksik onay kodu.',
+ 'captcha-disabledinapi' => 'Bu eylem captcha gerektiriyor, dolayısıyla API aracılığıyla yapılamaz.',
+ 'captchahelp-title' => 'Captcha yardımı',
+ 'captchahelp-cookies-needed' => 'Bunun çalışabilmesi için tarayıcınızın çerezleri kabul edilmesi gerekiyor.',
+ 'captchahelp-text' => "Bu viki gibi, dışarıdan katılıma izin veren web siteleri, pek çok siteye bağlantılar yaratan otomatik araçlarını çalıştıran ''spam''cilerin saldırılarına sıklıkla maruz kalırlar. Bu spam nitelikli bağlantılar silinebilir, fakat bu temizlik önemli bir sıkıntı yaratacaktır.
+
+Bazen, özellikle bir başka internet sitesine bağ eklerken, bozulmuş ve renklendirilmiş harflerden oluşan bir resim gösterilebilir ve sizden bu harfleri kutucuğa girmenizi istenir. Bu, otomatizasyonu oldukça zor bir iş olduğu için, gerçek insanlar bu işlemi yerine getirebilirken, spam yapmaya yarayan araçlar bunu yapmakta zorlanacaklardır.
+
+Ne var ki bu durum, görme sorunları yaşayan kişiler ve salt yazı-tabanlı veya salt ses tabanlı internet tarayıcı programları kullanan kimseler için rahatsızlık yaratmaktadır. Ne yazık ki, şu an için sesli bir alternatifimiz bulunmamaktadır. Eğer bu, sizin geçerli gönderiler yapmanıza beklenmedik bir şekilde engel oluyorsa, lütfen destek için [[{{MediaWiki:Grouppage-sysop}}|site yöneticileriyle]] irtibata geçin.
+
+Sayfa düzenleyiciye dönmek için tarayıcınızın 'geri' tuşuna basınız.",
+ 'captcha-addurl-whitelist' => ' #<!-- bu satırı olduğu gibi bırakın --> <pre>
+# Sözdizimi aşağıdaki gibidir:
+# * "#" karakterinden satır sonuna kadar her şey yorumdur
+# * Her boş olmayan satır, URLler içinde sadece host ile eşleşen regex parçalarıdır
+ #</pre> <!-- bu satırı olduğu gibi bırakın -->',
+ 'right-skipcaptcha' => "Captcha ile tetiklenen hareketleri, captcha'yı geçme zorunluluğu olmadan yap",
+);
+
+/** Ukrainian (УкраїнÑька)
+ * @author Ahonc
+ * @author Alex Khimich
+ * @author NickK
+ * @author Riwnodennyk
+ * @author ТеÑÑ‚
+ */
+$messages['uk'] = array(
+ 'captcha-edit' => 'Щоб відредагувати цю Ñторінку, будь лаÑка, виконайте проÑту арифметичну дію Ñ– введіть відповідь у текÑтове поле ([[Special:Captcha/help|докладніше]]):',
+ 'captcha-desc' => 'Забезпечує методи CAPTCHA Ð´Ð»Ñ Ð·Ð°Ñ…Ð¸Ñту від Ñпаму Ñ– підбору паролÑ',
+ 'captcha-addurl' => 'Ви додали поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° зовнішній Ñайт.
+Із метою захиÑту від автоматичного Ñпаму, будь лаÑка, виконайте проÑту арифметичну дію Ñ– введіть відповідь у текÑтове поле ([[Special:Captcha/help|докладніше]]):',
+ 'captcha-badlogin' => 'Із метою захиÑту від автоматичного злому паролÑ, будь лаÑка, виконайте проÑту арифметичну дію Ñ– введіть відповідь у текÑтове поле ([[Special:Captcha/help|докладніше]]):',
+ 'captcha-createaccount' => 'Із метою захиÑту від автоматичного ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¾Ð³Ð¾ запиÑу, будь лаÑка, виконайте проÑту арифметичну дію Ñ– введіть відповідь у текÑтове поле ([[Special:Captcha/help|докладніше]]):',
+ 'captcha-createaccount-fail' => 'Ðеправильний або відÑутній код підтвердженнÑ.',
+ 'captcha-create' => 'Щоб Ñтворити Ñторінку, будь лаÑка, виконайте проÑту арифметичну дію Ñ– введіть відповідь у текÑтове поле ([[Special:Captcha/help|докладніше]]):',
+ 'captcha-sendemail' => 'З метою захиÑту від автоматичного Ñпаму, дайте відповідь на проÑтий математичний приклад Ñ– введіть відповідь ([[Special:Captcha/help|деталі]]):',
+ 'captcha-sendemail-fail' => 'Ðеправильний або відÑутній код підтвердженнÑ.',
+ 'captcha-disabledinapi' => 'Ð¦Ñ Ð´Ñ–Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±ÑƒÑ” перевірки CAPTCHA, тому не може бути здійÑнена за допомогою API.',
+ 'captchahelp-title' => 'Довідка про CAPTCHA',
+ 'captchahelp-cookies-needed' => 'Вам потрібно ввімкнути куки у браузері, щоб Ñ†Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð·Ð°Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð»Ð°.',
+ 'captchahelp-text' => 'Веб-Ñайти, що дозволÑÑŽÑ‚ÑŒ додавати або змінювати Ñвій вміÑÑ‚, у тому чиÑлі вікі, чаÑто Ñтають ціллю Ñпамерів, Ñкі викориÑтовують програми Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾Ð³Ð¾ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñилань.
+Хоча такі поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ñ– можуть бути вилучені, вони Ñ” Ñ–Ñтотною вадою.
+
+Іноді, наприклад при додаванні на Ñторінку нового веб-поÑиланнÑ, вікі може показати вам картинку з кольоровим або Ñпотвореним текÑтом Ñ– запропонувати ввеÑти текÑÑ‚, Ñкий ви бачите.
+ОÑкільки подібну задачу важко автоматизувати, це дає можливіÑÑ‚ÑŒ більшоÑÑ‚Ñ– людей робити Ñвої зміни, в той Ñ‡Ð°Ñ Ñк більшіÑÑ‚ÑŒ ÑпамерÑьких Ñ– вандальних програм не можуть цього зробити.
+
+Ðа жаль, подібний захиÑÑ‚ може Ñпричинити незручноÑÑ‚Ñ– Ð´Ð»Ñ Ð»ÑŽÐ´ÐµÐ¹ із вадами зору. Зараз у Ð½Ð°Ñ Ð½ÐµÐ¼Ð° звукової альтернативи Ð´Ð»Ñ Ñ‚Ð°ÐºÐ¾Ñ— перевірки. Будь лаÑка, звернітьÑÑ Ð¿Ð¾ допомогу до [[{{MediaWiki:Grouppage-sysop}}|адмініÑтраторів]], Ñкщо подібна перевірка заважає вам доброÑовіÑно працювати з Ñайтом.
+
+ÐатиÑніть кнопку «Ðазад» у вашому браузері, щоб повернутиÑÑ Ð´Ð¾ редагуваннÑ.',
+ 'captcha-addurl-whitelist' => '#<!-- leave this line exactly as it is --> <pre>
+# ÐžÐ¿Ð¸Ñ ÑинтакÑиÑу:
+# * Ð’Ñе, що починаєтьÑÑ Ð· Ñимволу "#" до ÐºÑ–Ð½Ñ†Ñ Ñ€Ñдка, вважаєтьÑÑ ÐºÐ¾Ð¼ÐµÐ½Ñ‚Ð°Ñ€ÐµÐ¼
+# * Кожний непорожній Ñ€Ñдок вважаєтьÑÑ Ñ„Ñ€Ð°Ð³Ð¼ÐµÐ½Ñ‚Ð¾Ð¼ регулÑрного виразу відповідної назви вузла в URL
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => 'Ð’Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ð´Ñ–Ð¹, що вимагають CAPTCHA-перевірки, без Ð¿Ñ€Ð¾Ñ…Ð¾Ð´Ð¶ÐµÐ½Ð½Ñ CAPTCHA',
+);
+
+/** Vèneto (Vèneto)
+ * @author Candalua
+ */
+$messages['vec'] = array(
+ 'captcha-edit' => 'Par modificar la pagina te ghè da risòlvar sto senplice calcolo presentà de seguito e inserir el risultato ne la casela
+([[Special:Captcha/help|magiori informazion]]):',
+ 'captcha-desc' => 'Senplice inplementazion de un Captcha',
+ 'captcha-addurl' => "La modifica richiesta la zonta dei colegamenti foresti novi a la pagina; come misura precauzional contro l'inserimento automatico de spam, te ghè da risòlvar sto senplice calcolo presentà de seguito e inserir el risultato ne la casela ([[Special:Captcha/help|magiori informazion]]):",
+ 'captcha-badlogin' => 'Come misura precauzional contro i tentativi de forzatura automatica de la password, te ghè da risòlvar sto senplice calcolo presentà de seguito e inserir el risultato ne la casela ([[Special:Captcha/help|magiori informazion]]):',
+ 'captcha-createaccount' => 'Come misura precauzional contro i tentativi de creazion automatica dei account, par registrarse te ghè da risòlvar sto senplice calcolo presentà de seguito e inserir el risultato ne la casela ([[Special:Captcha/help|magiori informazion]]):',
+ 'captcha-createaccount-fail' => 'Codice de verifica sbaglià o mancante.',
+ 'captcha-create' => 'Per crear la pagina te ghè da risòlvar sto senplice calcolo presentà de seguito e inserir el risultato ne la casela ([[Special:Captcha/help|magiori informazion]]):',
+ 'captcha-sendemail' => 'Come misura precauzional contro i tentativi de forzatura automatica de la password, te ghè da risòlvar sto senplice calcolo e inserir el risultato ne la casela ([[Special:Captcha/help|magiori informazion]]):',
+ 'captcha-sendemail-fail' => 'Codice de verifica sbaglià o mancante.',
+ 'captcha-disabledinapi' => 'Sta azion la richiede un captcha, quindi no se pole farla tramite API.',
+ 'captchahelp-title' => "Coss'èlo sto captcha?",
+ 'captchahelp-cookies-needed' => 'Te ghè da verghe i cookies abilità sul to browser par proseguir.',
+ 'captchahelp-text' => "Sucéde spesso che i siti web che i acèta messagi publici, come sta wiki, i sia tolti de mira da spammer che dòpara strumenti automatici par inserir colegamenti publicitari verso un gran nùmaro de siti. Anca se i colegamenti insiderài i se pol cavar, se trata comunque de na secadura mìa da póco.
+
+In çerti casi, par esenpio quando se çerca de zontar novi colegamenti web in te na pagina, el software wiki el pol mostrar na imagine con un breve testo colorà e/o distorto, domandàndoghe a l'utente de riscrìvarlo drento na casela fata aposta. Sicome i computer no i xe mìa boni de replicar a la perfezion sta azion, sto mecanismo el ghe consente a (quasi tuti) i utenti reali de conpletar l'inserimento che i volea, inpedéndoghe l'acesso a la magior parte dei spammer e dei altri atachi automatizà.
+
+Sfortunatamente, ste misure de sicureza le pole métar in dificoltà i utenti che gà problemi de vista o quei che dòpara browser testuali o basà su la sintesi vocale. Purtropo al momento no xe disponibile nissun mecanismo alternativo basà su messagio audio; se ste procedure le inpedisse l'inserimento de informazion che se ritien legìtime, se prega de contatar i [[{{MediaWiki:Grouppage-sysop}}|aministradori del sito]] e domandarghe assistensa.
+
+Struca el boton \"Indrìo\" del to browser par tornar a la pagina de modifica.",
+ 'captcha-addurl-whitelist' => ' #<!-- no sta modificar in alcun modo sta riga --> <pre>
+# La sintassi la xe la seguente:
+# * Tuto quel che segue un caràtere "#" el xe un comento, fin a la fine de la riga
+# * Tute le righe mìa vode le xe framenti de espressioni regolari che se àplica al solo nome de l\'host ne le URL
+ #</pre> <!-- no sta modificar in alcun modo sta riga -->',
+ 'right-skipcaptcha' => 'Esegui le funsion de triggering del captcha sensa passar par el captcha',
+);
+
+/** Vietnamese (Tiếng Việt)
+ * @author Minh Nguyen
+ * @author Vinhtantran
+ */
+$messages['vi'] = array(
+ 'captcha-edit' => 'Äể sá»­a đổi trang này, xin hãy giải phép cá»™ng Ä‘Æ¡n giản dÆ°á»›i đây và gõ câu trả lá»i vào ô ([[Special:Captcha/help|thông tin thêm]]):',
+ 'captcha-desc' => 'Chống spam và sự đoán mật khẩu dùng CAPTCHA',
+ 'captcha-addurl' => 'Sá»­a đổi của bạn có chứa các liên kết ra bên ngoài. Äể giúp tránh spam tá»± Ä‘á»™ng, xin hãy giải phép toán Ä‘Æ¡n giản ở dÆ°á»›i và gõ kết quả vào ô ([[Special:Captcha/help|thông tin thêm]]):',
+ 'captcha-badlogin' => 'Äể giúp tránh hành Ä‘á»™ng bẻ mật khẩu tá»± Ä‘á»™ng, xin hãy giải phép cá»™ng
+đơn giản ở dưới và gõ kết quả vào ô ([[Special:Captcha/help|thông tin thêm]]):',
+ 'captcha-createaccount' => 'Äể giúp tránh việc tạo tài khoản tá»± Ä‘á»™ng, xin hãy giải phép cá»™ng
+đơn giản ở dưới và gõ kết quả vào ô ([[Special:Captcha/help|thông tin thêm]]):',
+ 'captcha-createaccount-fail' => 'Thiếu mã xác nhận hoặc mã xác nhận sai.',
+ 'captcha-create' => 'Äể tạo má»›i trang, xin hãy giải phép cá»™ng Ä‘Æ¡n giản ở dÆ°á»›i và gõ
+câu trả lá»i vào ô ([[Special:Captcha/help|thông tin thêm]]):',
+ 'captcha-sendemail' => 'Äể xác nhận rằng bạn không phải là tay spam, xin hãy giải phép cá»™ng Ä‘Æ¡n giản ở dÆ°á»›i và gõ câu trả lá»i vào ô ([[Special:Captcha/help|thông tin thêm]]):',
+ 'captcha-sendemail-fail' => 'Mã xác nhận không chính xác hoặc chưa được cung cấp.',
+ 'captcha-disabledinapi' => 'Tác vụ này đòi ngÆ°á»i dùng giải CAPTCHA trÆ°á»›c tiên, nên không thể thá»±c hiện nó qua API.',
+ 'captchahelp-title' => 'Trợ giúp Captcha',
+ 'captchahelp-cookies-needed' => 'Bạn cần phải bật cookie trong trình duyệt để chức năng này hoạt động được.',
+ 'captchahelp-text' => 'Những website cho phép bất kỳ ai cÅ©ng có thể gá»­i thông tin, nhÆ° wiki này, thÆ°á»ng bị các tay spam dùng công cụ tá»± Ä‘á»™ng để gá»­i các liên kết của há» tá»›i rất nhiá»u trang.
+Tuy chúng ta có thể xóa các liên kết này khá»i trang, chúng vẫn gây nhiá»u phiá»n toái.
+
+Äôi khi, nhất là khi bạn bổ sung liên kết má»›i vào trang, wiki có thể hiển thị má»™t hình có chữ dạng màu mè và méo mó rồi yêu cầu bạn gõ lại các chữ trong hình này.
+Do các phần má»m tá»± Ä‘á»™ng khó Ä‘á»c những hình này, nên má»i ngÆ°á»i bình thÆ°á»ng có thể tiếp tục gá»­i thông tin, mà vẫn chặn được các spam và robot phá hoại.
+
+Tuy vậy, tính năng này có thể bất tiện đối với những độc giả có thị giác yếu hay đang sử dụng trình duyệt bằng văn bản thuần hay trình duyệt bằng tiếng nói.
+Hiện tại chúng tôi chưa có chức năng phát âm thay thế.
+Xin hãy liên lạc vá»›i [[{{MediaWiki:Grouppage-sysop}}|ngÆ°á»i quản trị trang web]] để được trợ giúp nếu Ä‘iá»u này vô tình ngăn cản bạn đóng góp ná»™i dung tốt.
+
+Nhấn chuột vào nút “Back†của trình duyệt để trở lại trang soạn thảo.',
+ 'captcha-addurl-whitelist' => ' #<!-- xin để dòng này đừng thay đổi --> <pre>
+# Cú pháp như sau:
+# * Má»i thứ bắt đầu bằng ký tá»± “#†là lá»i chú thích
+# * Má»i hàng không trắng là má»™t Ä‘oạn biểu thức chính quy (regex) sẽ chỉ được so trùng vá»›i tên máy chủ trong URL
+ #</pre> <!-- xin để dòng này đừng thay đổi -->',
+ 'right-skipcaptcha' => 'Tự động bỠqua các hình CAPTCHA',
+);
+
+/** Volapük (Volapük)
+ * @author Malafaya
+ * @author Smeira
+ */
+$messages['vo'] = array(
+ 'captcha-edit' => 'Ad redakön yegedi at, dunolös, begö! saedami dono e penolös saedoti in bokil ([[Special:Captcha/help|nüns pluik]]):',
+ 'captcha-addurl' => 'Redakam olik keninükon yümis plödik nulik. Ad jelön siti ta peneds itjäfidik, dunolös, begö! saedami sököl, e penolös saedoti in bokil ([[Special:Captcha/help|nüns pluik]]):',
+ 'captcha-badlogin' => 'Ad jelön siti ta daget itjäfidik letavödas, dunolös, begö! saedami sököl e penolös saedoti in bokil ([[Special:Captcha/help|nüns pluik]]):',
+ 'captcha-createaccount' => 'Ad jelön siti ta kalijafam itjäfidik, dunolös, begö! saedami sököl e penolös saedoti in bokil ([[Special:Captcha/help|nüns pluik]]):',
+ 'captcha-createaccount-fail' => 'Kot fümükama paneveräton u paseleton.',
+ 'captcha-create' => 'Ad jafön padi, dunolös saedami balugik dono e penolös saedoti in bokil ([[Special:Captcha/help|nüns pluik]]):',
+ 'captchahelp-title' => 'Yuf ela Captcha',
+ 'captchahelp-cookies-needed' => 'Nedol mögükön „kekilis“ bevüresodanaföme olik ad dunön atosi.',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# Süntag binon sökölos:
+# * Valikos de malat: „#“ jü fin liena binon küpet
+# * Lien no vägik alik binon brekot: „regex“, kel poleigodon te ko vöds ninü els URLs
+ #</pre> <!-- leave this line exactly as it is -->',
+);
+
+/** Walloon (Walon)
+ * @author BrokenArrow
+ */
+$messages['wa'] = array(
+ 'captcha-edit' => "Dins vos candjmints i gn a des novelès hårdêyes (URL); po s' mete a houte des robots di spam, nos vs dimandans d' acertiner ki vos estoz bén ene djin, po çoula, tapez les mots k' aparexhèt dins l' imådje chal pa dzo:<br />([[{{ns:special}}:Captcha/help|Pocwè fjhans ns çoula?]])",
+ 'captcha-addurl' => "Dins vos candjmints i gn a des novelès hårdêyes (URL); po s' mete a houte des robots di spam, nos vs dimandans d' acertiner ki vos estoz bén ene djin, po çoula, tapez les mots k' aparexhèt dins l' imådje chal pa dzo:<br />([[{{ns:special}}:Captcha/help|Pocwè fjhans ns çoula?]])",
+ 'captcha-createaccount' => "Po s' mete a houte des robots di spam, nos vs dimandans d' acertiner ki vos estoz bén ene djin po-z ahiver vosse conte, po çoula, tapez les mots k' aparexhèt dins l' imådje chal pa dzo:<br />([[{{ns:special}}:Captcha/help|Pocwè fjhans ns çoula?]])",
+ 'captcha-createaccount-fail' => "Li côde d' acertinaedje est incorek ou mancant.",
+ 'captcha-create' => "Dins vos candjmints i gn a des novelès hårdêyes (URL); po s' mete a houte des robots di spam, nos vs dimandans d' acertiner ki vos estoz bén ene djin, po çoula, tapez les mots k' aparexhèt dins l' imådje chal pa dzo:<br />([[{{ns:special}}:Captcha/help|Pocwè fjhans ns çoula?]])",
+ 'captchahelp-title' => "Aidance passete d' acertinaedje",
+ 'captchahelp-text' => "Les waibes k' acceptèt des messaedjes do publik, come ci wiki chal, sont sovint eployîs pa des må-fjhants spameus, po pleur mete, avou des usteyes otomatikes, des loyéns di rclame viè les sites da zels.
+Bén seur, on pout todi les disfacer al mwin, mins c' est on soyant ovraedje.
+
+Adon, pa côps, copurade cwand vos radjoutez des hårdêyes a ene pådje, ou å moumint d' ahiver on novea conte sol wiki, on eployrè ene passete d' acertinaedje, dj' ô bén k' on vos mostere ene imådje avou on tecse kitoirdou eyet vs dimander di taper les mots so l' imådje. Come li ricnoxhance di ç' tecse la est målåjheye a fé otomaticmint pa on robot, çoula permete di leyî les vraiyès djins fé leus candjmints tot arestant l' plupårt des spameus et des sfwaitès atakes pa robot.
+
+Målureuzmint çoula apoite eto des målåjhminces po les cis k' ont des problinmes po vey, ou k' eployèt des betchteus e môde tecse ou båzés sol vwès. Pol moumint, nos n' avans nén ene alternative odio. S' i vs plait contactez les manaedjeus do site po d' l' aidance si çoula vos espaitche di fé vos candjmints ledjitimes.
+
+Clitchîz sol boton «En erî» di vosse betchteu waibe po rivni al pådje di dvant.",
+);
+
+/** Yiddish (ייִדיש)
+ * @author פוילישער
+ */
+$messages['yi'] = array(
+ 'captcha-badlogin' => 'כדי צו העלפֿן קעגן ×ויט×מ×ַטישער ברעכן פ×ַסווערטער, ×× × ×¤×ª×¨×• ×ת תרגיל החיבור הפשוט שלהלן והקלידו ×ת התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):',
+ 'captcha-createaccount' => 'כדי צו העלפֿן קעגן ×ויט×מ×ַטישע ש×ַפֿן ק×נטעס, ×× × ×¤×ª×¨×• ×ת תרגיל החיבור הפשוט שלהלן והקלידו ×ת התשובה בתיבה ([[Special:Captcha/help|מידע נוסף]]):',
+ 'captcha-createaccount-fail' => 'גרײַזיקער ×ָדער פֿעלנדיקער ב×ַשטעטיק־ק×ָד',
+);
+
+/** Yoruba (Yorùbá)
+ * @author Demmy
+ */
+$messages['yo'] = array(
+ 'captchahelp-title' => 'ÃŒrànwá»Ì Captcha',
+ 'captchahelp-cookies-needed' => 'Ẹ gbá»Ìjá»Ì€ gba cookies láyé nínú agbétàkùn yín kí èyí ó tó á¹£iṣẹÌ.',
+);
+
+/** Cantonese (粵語) */
+$messages['yue'] = array(
+ 'captcha-edit' => 'è¦ç·¨è¼¯å‘¢ä¸€ç¯‡æ–‡ï¼Œè«‹ç­”出一個簡單嘅加數和,跟ä½éŸ¿å€‹ç›’度打入 ([[Special:Captcha/help|更多資料]]):',
+ 'captcha-desc' => '簡單嘅 captcha 實行',
+ 'captcha-addurl' => '你編輯嘅內容è£é¢æœ‰æ–°å˜…URL連çµï¼›ç‚ºå’—é¿å…å—到自動垃圾程å¼çš„侵擾,請答出一個簡單嘅加數和,跟ä½éŸ¿å€‹ç›’度打入 ([[Special:Captcha/help|更多資料]]):',
+ 'captcha-badlogin' => '為咗防止程å¼è‡ªå‹•ç ´è§£å¯†ç¢¼ï¼Œè«‹ç­”出一個簡單嘅加數和,跟ä½éŸ¿å€‹ç›’度打入 ([[Special:Captcha/help|更多資料]]):',
+ 'captcha-createaccount' => '為咗防止程å¼è‡ªå‹•è¨»å†Šï¼Œè«‹ç­”出一個簡單嘅加數和,跟ä½éŸ¿å€‹ç›’度打入 ([[Special:Captcha/help|更多資料]]):',
+ 'captcha-createaccount-fail' => '驗證碼錯誤或者唔見咗。',
+ 'captcha-create' => 'è¦é–‹å‘¢ä¸€ç‰ˆï¼Œè«‹ç­”出一個簡單嘅加數和,跟ä½éŸ¿å€‹ç›’度打入 ([[Special:Captcha/help|更多資料]]):',
+ 'captchahelp-title' => 'Captcha 幫助',
+ 'captchahelp-cookies-needed' => '你需è¦é–‹å’—響ç€è¦½å™¨åº¦å˜…cookies先至å¯ä»¥ç”¨å‘¢æ¨£å˜¢ã€‚',
+ 'captchahelp-text' => '就好似呢個wikiå’,å°å…¬çœ¾é–‹æ”¾ç·¨è¼¯å˜…網站係會經常å—到垃圾連çµé¨·æ“¾ã€‚嗰啲人利用自動化垃圾程åºå°‡ä½¢å“‹å˜…連çµå¼µè²¼åˆ°å¥½å¤šç¶²ç«™ã€‚雖然呢啲連çµå¯ä»¥è¢«æ¸…除,但係呢啲嘢確實令人å分之討厭。
+
+有時,特別係當響一é æ·»åŠ æ–°å˜…網é é€£çµå—°é™£ï¼Œå‘¢å€‹ç¶²ç«™æœƒç•€ä½ ç‡ä¸€å¹…有é¡è‰²çš„或者有變形文字嘅圖åƒï¼Œè·Ÿä½è¦ä½ è¼¸å…¥æ‰€é¡¯ç¤ºå˜…文字。因為å’係難以自動完æˆå˜…一項任務,它將å…許人ä¿å­˜ä½¢å“‹å˜…編輯,åŒæ™‚亦阻止大多數發é€åžƒåœ¾éƒµä»¶è€…åŒå…¶å®ƒæ©Ÿæ¢°äººå˜…攻擊。
+
+令人éºæ†¾å˜…係,å’會令到視力唔好嘅人,或者利用基於文本或者基於è²éŸ³å˜…ç€è¦½å™¨ç”¨æˆ¶æ„Ÿåˆ°ä¸ä¾¿ã€‚而目å‰æˆ‘哋仲未能夠æ供音頻嘅é¸æ“‡ã€‚如果å’樣å’啱阻止到你進行正常嘅編輯,請åŒç®¡ç†å“¡è¯ç¹«ä»¥ç²å¾—幫助。
+
+撳一下響ç€è¦½å™¨åº¦å˜…「後退ã€æŽ£è¿”去你之å‰æ‰€ç·¨è¼¯ç·Šå˜…é é¢ã€‚',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# 語法好似下é¢å™‰:
+# * 所有由 "#" 字元之後嘅嘢到行尾係註解
+# * 所有éžç©ºç™½è¡Œä¿‚一個regex部份,åªä¿‚會åŒè£é¢å˜…URL主機相符
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => '執行captcha引發嘅動作時唔需è¦ç¶“éŽcaptcha',
+);
+
+/** Simplified Chinese (‪中文(简体)‬)
+ * @author Bencmq
+ * @author Liangent
+ * @author PhiLiP
+ */
+$messages['zh-hans'] = array(
+ 'captcha-edit' => 'è¦ç¼–辑这篇文章,请答出一个简å•çš„加法,然後在框内输入 ([[Special:Captcha/help|更多资料]]):',
+ 'captcha-desc' => '通过验è¯ç æŠ€æœ¯æ¥é˜»æ­¢åžƒåœ¾é‚®ä»¶å’Œå¯†ç çŒœè§£',
+ 'captcha-addurl' => '你编辑的内容中å«æœ‰ä¸€ä¸ªæ–°çš„外部链接;为了å…å—自动垃圾程åºçš„侵扰,请答出一个简å•çš„加法,然åŽåœ¨æ¡†å†…输入([[Special:Captcha/help|更多信æ¯]]):',
+ 'captcha-badlogin' => '为了防止程å¼è‡ªåŠ¨ç ´è§£å¯†ç ï¼Œè¯·ç­”出一个简å•çš„加法,然後在框内输入 ([[Special:Captcha/help|更多资料]]):',
+ 'captcha-createaccount' => '为了防止程å¼è‡ªåŠ¨æ³¨å†Œï¼Œè¯·ç­”出一个简å•çš„加法,然後在框内输入 ([[Special:Captcha/help|更多资料]]):',
+ 'captcha-createaccount-fail' => '验è¯ç é”™è¯¯æˆ–丢失。',
+ 'captcha-create' => 'è¦åˆ›å»ºé¡µé¢ï¼Œè¯·ç­”出一个简å•çš„加法,然後在框内输入 ([[Special:Captcha/help|更多资料]]):',
+ 'captcha-sendemail' => '为了防止程å¼è¿›è¡Œç ´å,请答出一个简å•çš„计算,然åŽåœ¨æ¡†å†…输入 ([[Special:Captcha/help|更多资料]]):',
+ 'captcha-sendemail-fail' => '验è¯ç é”™è¯¯æˆ–丢失。',
+ 'captcha-disabledinapi' => '这个è¦æ±‚需è¦ç»è¿‡Captcha验è¯ï¼Œæ•…无法é€è¿‡API使用。',
+ 'captchahelp-title' => 'Captcha 说明',
+ 'captchahelp-cookies-needed' => '您需è¦å¼€å¯æµè§ˆå™¨ä¸Šçš„cookiesæ–¹å¯ä½¿ç”¨è¿™ä¸ªå·¥å…·ã€‚',
+ 'captchahelp-text' => 'åƒæœ¬ç«™ä¸€æ ·ï¼Œå¯¹å…¬ä¼—开放编辑的网站ç»å¸¸è¢«åžƒåœ¾è¿žç»“骚扰。那些人使用自动化垃圾程åºå°†ä»–们的连结张贴到很多网站。虽然这些连结å¯ä»¥è¢«æ¸…除,但是这些东西确实令人å分讨厌。
+
+有时,特别是当给一个页é¢æ·»åŠ æ–°çš„网页链接时,本站会让你看一幅有颜色的或者有å˜å½¢æ–‡å­—的图åƒï¼Œå¹¶ä¸”è¦ä½ è¾“入所显示的文字。因为这是难以自动完æˆçš„一项任务,它将å…许人ä¿å­˜ä»–们的编辑,åŒæ—¶é˜»æ­¢å¤§å¤šæ•°å‘é€åžƒåœ¾é‚®ä»¶è€…和其他机器人的攻击。
+
+令人é—憾是,这会使得视力ä¸å¥½çš„人,或者使用基於文本或者基於声音的æµè§ˆå™¨çš„用户感到ä¸ä¾¿ã€‚而目å‰æˆ‘们还没有æ供的音频的选择。如果这正好阻止你进行正常的编辑,请和[[{{MediaWiki:Grouppage-sysop}}|站点管ç†å‘˜]]è”系获得帮助。
+
+点击æµè§ˆå™¨ä¸­çš„“åŽé€€â€æŒ‰é’®è¿”回你所编辑的页é¢ã€‚',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# 语法åƒä¸‹é¢è¿™æ ·:
+# * 所有在 "#" 字符åŽçš„内容全部是注释
+# * 所有éžç©ºç™½è¡Œæ˜¯ä¸€ä¸ªæ­£åˆ™è¡¨è¾¾å¼ï¼Œåªä¼šå¯¹URL中的内容进行匹é…
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => '执行captcha引å‘的动作时ä¸éœ€è¦ç»è¿‡captcha',
+);
+
+/** Traditional Chinese (‪中文(ç¹é«”)‬)
+ * @author Horacewai2
+ * @author Hydra
+ * @author Liangent
+ * @author Mark85296341
+ * @author Waihorace
+ */
+$messages['zh-hant'] = array(
+ 'captcha-edit' => 'è¦ç·¨è¼¯é€™ç¯‡æ–‡ç« ï¼Œè«‹ç­”出一個簡單的加法,然後在框內輸入 ([[Special:Captcha/help|更多資料]]):',
+ 'captcha-desc' => '通éŽé©—證碼技術來阻止垃圾郵件和密碼猜解',
+ 'captcha-addurl' => '你編輯的內容中å«æœ‰ä¸€å€‹æ–°çš„URL連çµï¼›ç‚ºäº†å…å—自動垃圾程å¼çš„侵擾,請答出一個簡單的加法,然後在框內輸入 ([[Special:Captcha/help|更多資料]]):',
+ 'captcha-badlogin' => '為了防止程å¼è‡ªå‹•ç ´è§£å¯†ç¢¼ï¼Œè«‹ç­”出一個簡單的加法,然後在框內輸入 ([[Special:Captcha/help|更多資料]]):',
+ 'captcha-createaccount' => '為了防止程å¼è‡ªå‹•è¨»å†Šï¼Œè«‹ç­”出一個簡單的加法,然後在框內輸入 ([[Special:Captcha/help|更多資料]]):',
+ 'captcha-createaccount-fail' => '驗證碼錯誤或éºå¤±ã€‚',
+ 'captcha-create' => 'è¦å»ºç«‹é é¢ï¼Œè«‹ç­”出一個簡單的加法,然後在框內輸入 ([[Special:Captcha/help|更多資料]]):',
+ 'captcha-sendemail' => '為了防止程å¼é€²è¡Œç ´å£žï¼Œè«‹ç­”出一個簡單的計算,然後在框內輸入 ([[Special:Captcha/help|更多資料]]):',
+ 'captcha-sendemail-fail' => '驗證碼錯誤或éºå¤±ã€‚',
+ 'captcha-disabledinapi' => '這個è¦æ±‚需è¦ç¶“éŽCaptcha驗證,故無法é€éŽAPI使用。',
+ 'captchahelp-title' => 'Captcha 說明',
+ 'captchahelp-cookies-needed' => '您需è¦é–‹å•Ÿç€è¦½å™¨ä¸Šçš„cookiesæ–¹å¯ä½¿ç”¨é€™å€‹å·¥å…·ã€‚',
+ 'captchahelp-text' => 'åƒæœ¬ç«™ä¸€æ¨£ï¼Œå°å…¬çœ¾é–‹æ”¾ç·¨è¼¯çš„網站經常被垃圾連çµé¨·æ“¾ã€‚那些人使用自動化垃圾程å¼å°‡ä»–們的連çµå¼µè²¼åˆ°å¾ˆå¤šç¶²ç«™ã€‚雖然這些連çµå¯ä»¥è¢«æ¸…除,但是這些æ±è¥¿ç¢ºå¯¦ä»¤äººå分討厭。
+
+有時,特別是當給一個é é¢æ·»åŠ æ–°çš„網é é€£çµæ™‚,本站會讓你看一幅有é¡è‰²çš„或者有變形文字的圖åƒï¼Œä¸¦ä¸”è¦ä½ è¼¸å…¥æ‰€é¡¯ç¤ºçš„文字。因為這是難以自動完æˆçš„一項任務,它將å…許人儲存他們的編輯,åŒæ™‚阻止大多數發é€åžƒåœ¾éƒµä»¶è€…和其他機器人的攻擊。
+
+令人éºæ†¾æ˜¯ï¼Œé€™æœƒä½¿å¾—視力ä¸å¥½çš„人,或者使用基於文字或者基於è²éŸ³çš„ç€è¦½å™¨çš„使用者感到ä¸ä¾¿ã€‚而目å‰æˆ‘們還沒有æ供的音訊的é¸æ“‡ã€‚如果這正好阻止你進行正常的編輯,請和[[{{MediaWiki:Grouppage-sysop}}|站點管ç†å“¡]]è¯ç¹«å–得幫助。
+
+點擊ç€è¦½å™¨ä¸­çš„「後退ã€æŒ‰éˆ•è¿”回你所編輯的é é¢ã€‚',
+ 'captcha-addurl-whitelist' => ' #<!-- leave this line exactly as it is --> <pre>
+# 語法åƒä¸‹é¢é€™æ¨£:
+# * 所有由 "#" 字元之後嘅字元至行尾是註解
+# * 所有éžç©ºç™½è¡Œæ˜¯ä¸€å€‹regex部份,åªæ˜¯è·Ÿåœ¨è£¡é¢çš„URL主機相符
+ #</pre> <!-- leave this line exactly as it is -->',
+ 'right-skipcaptcha' => '執行captcha引發的動作時ä¸éœ€è¦ç¶“éŽcaptcha',
+);
+
diff --git a/extensions/ConfirmEdit/ConfirmEdit.php b/extensions/ConfirmEdit/ConfirmEdit.php
new file mode 100644
index 00000000..0255a3ab
--- /dev/null
+++ b/extensions/ConfirmEdit/ConfirmEdit.php
@@ -0,0 +1,227 @@
+<?php
+
+/**
+ * ConfirmEdit MediaWiki extension.
+ *
+ * This is a framework that holds a variety of CAPTCHA tools. The
+ * default one, 'SimpleCaptcha', is not intended as a production-
+ * level CAPTCHA system, and another one of the options provided
+ * should be used in its place for any real usages.
+ *
+ * Copyright (C) 2005-2007 Brion Vibber <brion@wikimedia.org>
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ exit;
+}
+
+global $wgExtensionFunctions, $wgGroupPermissions;
+
+$wgExtensionFunctions[] = 'confirmEditSetup';
+$wgExtensionCredits['other'][] = array(
+ 'path' => __FILE__,
+ 'name' => 'ConfirmEdit',
+ 'author' => array( 'Brion Vibber', '...' ),
+ 'url' => 'http://www.mediawiki.org/wiki/Extension:ConfirmEdit',
+ 'version' => '1.0',
+ 'descriptionmsg' => 'captcha-desc',
+);
+
+/**
+ * The 'skipcaptcha' permission key can be given out to
+ * let known-good users perform triggering actions without
+ * having to go through the captcha.
+ *
+ * By default, sysops and registered bot accounts will be
+ * able to skip, while others have to go through it.
+ */
+$wgGroupPermissions['*' ]['skipcaptcha'] = false;
+$wgGroupPermissions['user' ]['skipcaptcha'] = false;
+$wgGroupPermissions['autoconfirmed']['skipcaptcha'] = false;
+$wgGroupPermissions['bot' ]['skipcaptcha'] = true; // registered bots
+$wgGroupPermissions['sysop' ]['skipcaptcha'] = true;
+$wgAvailableRights[] = 'skipcaptcha';
+
+/**
+ * List of IP ranges to allow to skip the captcha, similar to the group setting:
+ * "$wgGroupPermission[...]['skipcaptcha'] = true"
+ *
+ * Specific IP addresses or CIDR-style ranges may be used,
+ * for instance:
+ * $wgCaptchaWhitelistIP = array('192.168.1.0/24', '10.1.0.0/16');
+ */
+$wgCaptchaWhitelistIP = false;
+
+global $wgCaptcha, $wgCaptchaClass, $wgCaptchaTriggers;
+$wgCaptcha = null;
+$wgCaptchaClass = 'SimpleCaptcha';
+
+/**
+ * Actions which can trigger a captcha
+ *
+ * If the 'edit' trigger is on, *every* edit will trigger the captcha.
+ * This may be useful for protecting against vandalbot attacks.
+ *
+ * If using the default 'addurl' trigger, the captcha will trigger on
+ * edits that include URLs that aren't in the current version of the page.
+ * This should catch automated linkspammers without annoying people when
+ * they make more typical edits.
+ *
+ * The captcha code should not use $wgCaptchaTriggers, but CaptchaTriggers()
+ * which also takes into account per namespace triggering.
+ */
+$wgCaptchaTriggers = array();
+$wgCaptchaTriggers['edit'] = false; // Would check on every edit
+$wgCaptchaTriggers['create'] = false; // Check on page creation.
+$wgCaptchaTriggers['sendemail'] = false; // Special:Emailuser
+$wgCaptchaTriggers['addurl'] = true; // Check on edits that add URLs
+$wgCaptchaTriggers['createaccount'] = true; // Special:Userlogin&type=signup
+$wgCaptchaTriggers['badlogin'] = true; // Special:Userlogin after failure
+
+/**
+ * You may wish to apply special rules for captcha triggering on some namespaces.
+ * $wgCaptchaTriggersOnNamespace[<namespace id>][<trigger>] forces an always on /
+ * always off configuration with that trigger for the given namespace.
+ * Leave unset to use the global options ($wgCaptchaTriggers).
+ *
+ * Shall not be used with 'createaccount' (it is not checked).
+ */
+$wgCaptchaTriggersOnNamespace = array();
+
+# Example:
+# $wgCaptchaTriggersOnNamespace[NS_TALK]['create'] = false; //Allow creation of talk pages without captchas.
+# $wgCaptchaTriggersOnNamespace[NS_PROJECT]['edit'] = true; //Show captcha whenever editing Project pages.
+
+/**
+ * Indicate how to store per-session data required to match up the
+ * internal captcha data with the editor.
+ *
+ * 'CaptchaSessionStore' uses PHP's session storage, which is cookie-based
+ * and may fail for anons with cookies disabled.
+ *
+ * 'CaptchaCacheStore' uses $wgMemc, which avoids the cookie dependency
+ * but may be fragile depending on cache configuration.
+ */
+global $wgCaptchaStorageClass;
+$wgCaptchaStorageClass = 'CaptchaSessionStore';
+
+/**
+ * Number of seconds a captcha session should last in the data cache
+ * before expiring when managing through CaptchaCacheStore class.
+ *
+ * Default is a half hour.
+ */
+global $wgCaptchaSessionExpiration;
+$wgCaptchaSessionExpiration = 30 * 60;
+
+/**
+ * Number of seconds after a bad login that a captcha will be shown to
+ * that client on the login form to slow down password-guessing bots.
+ *
+ * Has no effect if 'badlogin' is disabled in $wgCaptchaTriggers or
+ * if there is not a caching engine enabled.
+ *
+ * Default is five minutes.
+ */
+global $wgCaptchaBadLoginExpiration;
+$wgCaptchaBadLoginExpiration = 5 * 60;
+
+/**
+ * Allow users who have confirmed their e-mail addresses to post
+ * URL links without being harassed by the captcha.
+ */
+global $ceAllowConfirmedEmail;
+$ceAllowConfirmedEmail = false;
+
+/**
+ * Number of bad login attempts before triggering the captcha. 0 means the
+ * captcha is presented on the first login.
+ */
+global $wgCaptchaBadLoginAttempts;
+$wgCaptchaBadLoginAttempts = 3;
+
+/**
+ * Regex to whitelist URLs to known-good sites...
+ * For instance:
+ * $wgCaptchaWhitelist = '#^https?://([a-z0-9-]+\\.)?(wikimedia|wikipedia)\.org/#i';
+ * Local admins can define a whitelist under [[MediaWiki:captcha-addurl-whitelist]]
+ */
+$wgCaptchaWhitelist = false;
+
+/**
+ * Additional regexes to check for. Use full regexes; can match things
+ * other than URLs such as junk edits.
+ *
+ * If the new version matches one and the old version doesn't,
+ * toss up the captcha screen.
+ *
+ * @fixme Add a message for local admins to add items as well.
+ */
+$wgCaptchaRegexes = array();
+
+/** Register special page */
+$wgSpecialPages['Captcha'] = 'CaptchaSpecialPage';
+
+$wgConfirmEditIP = dirname( __FILE__ );
+$wgExtensionMessagesFiles['ConfirmEdit'] = "$wgConfirmEditIP/ConfirmEdit.i18n.php";
+$wgExtensionAliasesFiles['ConfirmEdit'] = "$wgConfirmEditIP/ConfirmEdit.alias.php";
+
+if ( defined( 'MW_SUPPORTS_EDITFILTERMERGED' ) ) {
+ $wgHooks['EditFilterMerged'][] = 'ConfirmEditHooks::confirmEditMerged';
+} else {
+ $wgHooks['EditFilter'][] = 'ConfirmEditHooks::confirmEdit';
+}
+$wgHooks['UserCreateForm'][] = 'ConfirmEditHooks::injectUserCreate';
+$wgHooks['AbortNewAccount'][] = 'ConfirmEditHooks::confirmUserCreate';
+$wgHooks['LoginAuthenticateAudit'][] = 'ConfirmEditHooks::triggerUserLogin';
+$wgHooks['UserLoginForm'][] = 'ConfirmEditHooks::injectUserLogin';
+$wgHooks['AbortLogin'][] = 'ConfirmEditHooks::confirmUserLogin';
+$wgHooks['EmailUserForm'][] = 'ConfirmEditHooks::injectEmailUser';
+$wgHooks['EmailUser'][] = 'ConfirmEditHooks::confirmEmailUser';
+# Register API hook
+$wgHooks['APIEditBeforeSave'][] = 'ConfirmEditHooks::confirmEditAPI';
+
+$wgAutoloadClasses['ConfirmEditHooks'] = "$wgConfirmEditIP/ConfirmEditHooks.php";
+$wgAutoloadClasses['Captcha']= "$wgConfirmEditIP/Captcha.php";
+$wgAutoloadClasses['SimpleCaptcha']= "$wgConfirmEditIP/Captcha.php";
+$wgAutoloadClasses['CaptchaStore']= "$wgConfirmEditIP/CaptchaStore.php";
+$wgAutoloadClasses['CaptchaSessionStore']= "$wgConfirmEditIP/CaptchaStore.php";
+$wgAutoloadClasses['CaptchaCacheStore']= "$wgConfirmEditIP/CaptchaStore.php";
+$wgAutoloadClasses['CaptchaSpecialPage'] = "$wgConfirmEditIP/ConfirmEditHooks.php";
+$wgAutoloadClasses['HTMLCaptchaField']= "$wgConfirmEditIP/HTMLCaptchaField.php";
+
+/**
+ * Set up $wgWhitelistRead
+ */
+function confirmEditSetup() {
+ global $wgGroupPermissions, $wgCaptchaTriggers;
+ if ( !$wgGroupPermissions['*']['read'] && $wgCaptchaTriggers['badlogin'] ) {
+ // We need to ensure that the captcha interface is accessible
+ // so that unauthenticated users can actually get in after a
+ // mistaken password typing.
+ global $wgWhitelistRead;
+ $image = SpecialPage::getTitleFor( 'Captcha', 'image' );
+ $help = SpecialPage::getTitleFor( 'Captcha', 'help' );
+ $wgWhitelistRead[] = $image->getPrefixedText();
+ $wgWhitelistRead[] = $help->getPrefixedText();
+ }
+}
diff --git a/extensions/ConfirmEdit/ConfirmEditHooks.php b/extensions/ConfirmEdit/ConfirmEditHooks.php
new file mode 100644
index 00000000..dcdf49f7
--- /dev/null
+++ b/extensions/ConfirmEdit/ConfirmEditHooks.php
@@ -0,0 +1,78 @@
+<?php
+
+class ConfirmEditHooks {
+
+ /**
+ * Get the global Captcha instance
+ *
+ * @return Captcha
+ */
+ static function getInstance() {
+ global $wgCaptcha, $wgCaptchaClass;
+ static $done = false;
+ if ( !$done ) {
+ $done = true;
+ $wgCaptcha = new $wgCaptchaClass;
+ }
+ return $wgCaptcha;
+ }
+
+ static function confirmEdit( $editPage, $newtext, $section ) {
+ return self::getInstance()->confirmEdit( $editPage, $newtext, $section );
+ }
+
+ static function confirmEditMerged( $editPage, $newtext ) {
+ return self::getInstance()->confirmEditMerged( $editPage, $newtext );
+ }
+
+ static function confirmEditAPI( $editPage, $newtext, &$resultArr ) {
+ return self::getInstance()->confirmEditAPI( $editPage, $newtext, $resultArr );
+ }
+
+ static function injectUserCreate( &$template ) {
+ return self::getInstance()->injectUserCreate( $template );
+ }
+
+ static function confirmUserCreate( $u, &$message ) {
+ return self::getInstance()->confirmUserCreate( $u, $message );
+ }
+
+ static function triggerUserLogin( $user, $password, $retval ) {
+ return self::getInstance()->triggerUserLogin( $user, $password, $retval );
+ }
+
+ static function injectUserLogin( &$template ) {
+ return self::getInstance()->injectUserLogin( $template );
+ }
+
+ static function confirmUserLogin( $u, $pass, &$retval ) {
+ return self::getInstance()->confirmUserLogin( $u, $pass, $retval );
+ }
+
+ static function injectEmailUser( &$form ) {
+ return self::getInstance()->injectEmailUser( $form );
+ }
+
+ static function confirmEmailUser( $from, $to, $subject, $text, &$error ) {
+ return self::getInstance()->confirmEmailUser( $from, $to, $subject, $text, $error );
+ }
+}
+
+class CaptchaSpecialPage extends UnlistedSpecialPage {
+ public function __construct(){
+ parent::__construct( 'Captcha' );
+ }
+ function execute( $par ) {
+ $this->setHeaders();
+ $instance = ConfirmEditHooks::getInstance();
+ switch( $par ) {
+ case "image":
+ if ( method_exists( $instance, 'showImage' ) )
+ return $instance->showImage();
+ case "help":
+ default:
+ return $instance->showHelp();
+ }
+ }
+}
+
diff --git a/extensions/ConfirmEdit/FancyCaptcha.class.php b/extensions/ConfirmEdit/FancyCaptcha.class.php
new file mode 100644
index 00000000..b2f5c10e
--- /dev/null
+++ b/extensions/ConfirmEdit/FancyCaptcha.class.php
@@ -0,0 +1,249 @@
+<?php
+
+class FancyCaptcha extends SimpleCaptcha {
+ /**
+ * Check if the submitted form matches the captcha session data provided
+ * by the plugin when the form was generated.
+ *
+ * @param string $answer
+ * @param array $info
+ * @return bool
+ */
+ function keyMatch( $answer, $info ) {
+ global $wgCaptchaSecret;
+
+ $digest = $wgCaptchaSecret . $info['salt'] . $answer . $wgCaptchaSecret . $info['salt'];
+ $answerHash = substr( md5( $digest ), 0, 16 );
+
+ if ( $answerHash == $info['hash'] ) {
+ wfDebug( "FancyCaptcha: answer hash matches expected {$info['hash']}\n" );
+ return true;
+ } else {
+ wfDebug( "FancyCaptcha: answer hashes to $answerHash, expected {$info['hash']}\n" );
+ return false;
+ }
+ }
+
+ function addCaptchaAPI( &$resultArr ) {
+ $info = $this->pickImage();
+ if ( !$info ) {
+ $resultArr['captcha']['error'] = 'Out of images';
+ return;
+ }
+ $index = $this->storeCaptcha( $info );
+ $title = SpecialPage::getTitleFor( 'Captcha', 'image' );
+ $resultArr['captcha']['type'] = 'image';
+ $resultArr['captcha']['mime'] = 'image/png';
+ $resultArr['captcha']['id'] = $index;
+ $resultArr['captcha']['url'] = $title->getLocalUrl( 'wpCaptchaId=' . urlencode( $index ) );
+ }
+
+ /**
+ * Insert the captcha prompt into the edit form.
+ */
+ function getForm() {
+ $info = $this->pickImage();
+ if ( !$info ) {
+ throw new MWException( "Ran out of captcha images" );
+ }
+
+ // Generate a random key for use of this captcha image in this session.
+ // This is needed so multiple edits in separate tabs or windows can
+ // go through without extra pain.
+ $index = $this->storeCaptcha( $info );
+
+ wfDebug( "Captcha id $index using hash ${info['hash']}, salt ${info['salt']}.\n" );
+
+ $title = SpecialPage::getTitleFor( 'Captcha', 'image' );
+
+ return "<p>" .
+ Xml::element( 'img', array(
+ 'src' => $title->getLocalUrl( 'wpCaptchaId=' . urlencode( $index ) ),
+ 'width' => $info['width'],
+ 'height' => $info['height'],
+ 'alt' => '' ) ) .
+ "</p>\n" .
+ Xml::element( 'input', array(
+ 'type' => 'hidden',
+ 'name' => 'wpCaptchaId',
+ 'id' => 'wpCaptchaId',
+ 'value' => $index ) ) .
+ "<p>" .
+ Xml::element( 'input', array(
+ 'name' => 'wpCaptchaWord',
+ 'id' => 'wpCaptchaWord',
+ 'tabindex' => 1 ) ) . // tab in before the edit textarea
+ "</p>\n";
+ }
+
+ /**
+ * Select a previously generated captcha image from the queue.
+ * @fixme subject to race conditions if lots of files vanish
+ * @return mixed tuple of (salt key, text hash) or false if no image to find
+ */
+ function pickImage() {
+ global $wgCaptchaDirectory, $wgCaptchaDirectoryLevels;
+ return $this->pickImageDir(
+ $wgCaptchaDirectory,
+ $wgCaptchaDirectoryLevels );
+ }
+
+ function pickImageDir( $directory, $levels ) {
+ if ( $levels ) {
+ $dirs = array();
+
+ // Check which subdirs are actually present...
+ $dir = opendir( $directory );
+ while ( false !== ( $entry = readdir( $dir ) ) ) {
+ if ( ctype_xdigit( $entry ) && strlen( $entry ) == 1 ) {
+ $dirs[] = $entry;
+ }
+ }
+ closedir( $dir );
+
+ $place = mt_rand( 0, count( $dirs ) - 1 );
+ // In case all dirs are not filled,
+ // cycle through next digits...
+ for ( $j = 0; $j < count( $dirs ); $j++ ) {
+ $char = $dirs[( $place + $j ) % count( $dirs )];
+ $return = $this->pickImageDir( "$directory/$char", $levels - 1 );
+ if ( $return ) {
+ return $return;
+ }
+ }
+ // Didn't find any images in this directory... empty?
+ return false;
+ } else {
+ return $this->pickImageFromDir( $directory );
+ }
+ }
+
+ function pickImageFromDir( $directory ) {
+ if ( !is_dir( $directory ) ) {
+ return false;
+ }
+ $n = mt_rand( 0, $this->countFiles( $directory ) - 1 );
+ $dir = opendir( $directory );
+
+ $count = 0;
+
+ $entry = readdir( $dir );
+ $pick = false;
+ while ( false !== $entry ) {
+ $entry = readdir( $dir );
+ if ( preg_match( '/^image_([0-9a-f]+)_([0-9a-f]+)\\.png$/', $entry, $matches ) ) {
+ $size = getimagesize( "$directory/$entry" );
+ $pick = array(
+ 'salt' => $matches[1],
+ 'hash' => $matches[2],
+ 'width' => $size[0],
+ 'height' => $size[1],
+ 'viewed' => false,
+ );
+ if ( $count++ == $n ) {
+ break;
+ }
+ }
+ }
+ closedir( $dir );
+ return $pick;
+ }
+
+ /**
+ * Count the number of files in a directory.
+ * @return int
+ */
+ function countFiles( $dirname ) {
+ $dir = opendir( $dirname );
+ $count = 0;
+ while ( false !== ( $entry = readdir( $dir ) ) ) {
+ if ( $entry != '.' && $entry != '..' ) {
+ $count++;
+ }
+ }
+ closedir( $dir );
+ return $count;
+ }
+
+ function showImage() {
+ global $wgOut;
+
+ $wgOut->disable();
+
+ $info = $this->retrieveCaptcha();
+ if ( $info ) {
+ /*
+ // Be a little less restrictive for now; in at least some circumstances,
+ // Konqueror tries to reload the image even if you haven't navigated
+ // away from the page.
+ if( $info['viewed'] ) {
+ wfHttpError( 403, 'Access Forbidden', "Can't view captcha image a second time." );
+ return false;
+ }
+ */
+
+ $info['viewed'] = wfTimestamp();
+ $this->storeCaptcha( $info );
+
+ $salt = $info['salt'];
+ $hash = $info['hash'];
+ $file = $this->imagePath( $salt, $hash );
+
+ if ( file_exists( $file ) ) {
+ global $IP;
+ require_once "$IP/includes/StreamFile.php";
+ header( "Cache-Control: private, s-maxage=0, max-age=3600" );
+ wfStreamFile( $file );
+ return true;
+ }
+ }
+ wfHttpError( 500, 'Internal Error', 'Requested bogus captcha image' );
+ return false;
+ }
+
+ function imagePath( $salt, $hash ) {
+ global $wgCaptchaDirectory, $wgCaptchaDirectoryLevels;
+ $file = $wgCaptchaDirectory;
+ $file .= DIRECTORY_SEPARATOR;
+ for ( $i = 0; $i < $wgCaptchaDirectoryLevels; $i++ ) {
+ $file .= $hash { $i } ;
+ $file .= DIRECTORY_SEPARATOR;
+ }
+ $file .= "image_{$salt}_{$hash}.png";
+ return $file;
+ }
+
+ /**
+ * Show a message asking the user to enter a captcha on edit
+ * The result will be treated as wiki text
+ *
+ * @param $action Action being performed
+ * @return string
+ */
+ function getMessage( $action ) {
+ $name = 'fancycaptcha-' . $action;
+ $text = wfMsg( $name );
+ # Obtain a more tailored message, if possible, otherwise, fall back to
+ # the default for edits
+ return wfEmptyMsg( $name, $text ) ? wfMsg( 'fancycaptcha-edit' ) : $text;
+ }
+
+ /**
+ * Delete a solved captcha image, if $wgCaptchaDeleteOnSolve is true.
+ */
+ function passCaptcha() {
+ global $wgCaptchaDeleteOnSolve;
+
+ $info = $this->retrieveCaptcha(); // get the captcha info before it gets deleted
+ $pass = parent::passCaptcha();
+
+ if ( $pass && $wgCaptchaDeleteOnSolve ) {
+ $filename = $this->imagePath( $info['salt'], $info['hash'] );
+ if ( file_exists( $filename ) ) {
+ unlink( $filename );
+ }
+ }
+
+ return $pass;
+ }
+}
diff --git a/extensions/ConfirmEdit/FancyCaptcha.i18n.php b/extensions/ConfirmEdit/FancyCaptcha.i18n.php
new file mode 100644
index 00000000..fe25ccdc
--- /dev/null
+++ b/extensions/ConfirmEdit/FancyCaptcha.i18n.php
@@ -0,0 +1,1416 @@
+<?php
+/**
+ * Internationalisation file for the FancyCaptcha module of the ConfirmEdit
+ * extension.
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$messages = array();
+
+/** English */
+$messages['en'] = array(
+ 'fancycaptcha-desc' => 'Fancy CAPTCHA generator for Confirm Edit',
+ 'fancycaptcha-addurl' => 'Your edit includes new external links.
+To help protect against automated spam, please enter the words that appear below in the box ([[Special:Captcha/help|more info]]):',
+ 'fancycaptcha-badlogin' => 'To help protect against automated password cracking, please enter the words that appear below in the box ([[Special:Captcha/help|more info]]):',
+ 'fancycaptcha-createaccount' => 'To help protect against automated account creation, please enter the words that appear below in the box ([[Special:Captcha/help|more info]]):',
+ 'fancycaptcha-create' => 'To create the page, please enter the words that appear below in the box ([[Special:Captcha/help|more info]]):',
+ 'fancycaptcha-edit' => 'To edit this page, please enter the words that appear below in the box ([[Special:Captcha/help|more info]]):',
+ 'fancycaptcha-sendemail' => 'To help protect against automated spamming, please enter the words that appear below in the box ([[Special:Captcha/help|more info]]):',
+);
+
+/** Message documentation (Message documentation)
+ * @author Fryed-peach
+ * @author Hamilton Abreu
+ * @author Purodha
+ */
+$messages['qqq'] = array(
+ 'fancycaptcha-desc' => '{{desc}}',
+ 'fancycaptcha-addurl' => 'See also
+*{{msg-mw|captcha-addurl}}
+*{{msg-mw|Questycaptcha-addurl}}',
+ 'fancycaptcha-badlogin' => 'See also
+*{{msg-mw|captcha-badlogin}}
+*{{msg-mw|Questycaptcha-badlogin}}',
+ 'fancycaptcha-createaccount' => 'See also
+*{{msg-mw|captcha-createaccount}}
+*{{msg-mw|Questycaptcha-createaccount}}',
+ 'fancycaptcha-create' => 'See also
+*{{msg-mw|Captcha-create}}
+*{{msg-mw|Questycaptcha-create}}',
+ 'fancycaptcha-edit' => 'See also
+*{{msg-mw|Captcha-edit}}
+*{{msg-mw|Questycaptcha-edit}}',
+);
+
+/** Gheg Albanian (Gegë)
+ * @author Mdupont
+ */
+$messages['aln'] = array(
+ 'fancycaptcha-addurl' => 'Your redakto përfshin të jashtme lidhje të reja. Për të ndihmuar në mbrojtjen kundër spam automatizuar, ju lutem shkruani fjalët që shfaqen poshtë në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'fancycaptcha-badlogin' => 'Për të ndihmuar në mbrojtjen kundër fjalëkalimin automatizuar plasaritje, ju lutem shkruani fjalët që shfaqen poshtë në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'fancycaptcha-createaccount' => 'Për të ndihmuar në mbrojtjen kundër krijimit llogari e automatizuar, ju lutem shkruani fjalët që shfaqen poshtë në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'fancycaptcha-create' => 'Për të krijuar një faqe, ju lutem shkruani fjalët që shfaqen poshtë në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'fancycaptcha-edit' => 'Për të redaktuar këtë faqe, ju lutem shkruani fjalët që shfaqen poshtë në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'fancycaptcha-sendemail' => 'Për të ndihmuar në mbrojtjen kundër spamming automatizuar, ju lutem shkruani fjalët që shfaqen poshtë në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+);
+
+/** Amharic (አማርኛ)
+ * @author Codex Sinaiticus
+ */
+$messages['am'] = array(
+ 'fancycaptcha-createaccount' => 'á‹«áˆá‰°áˆáˆˆáŒˆ የመኪናáŠá‰µ አባáˆáŠá‰µ ለመከላከáˆá¥ አባሠለመሆን በዚህ áˆáˆµáˆ የታዩት እንáŒáˆŠá‹áŠ› ቃላት ወይሠá‰áŒ¥áˆ­ መáˆáˆµ በትክክሠመጻá áŒá‹´á‰³ áŠá‹á¢ ([[Special:Captcha/help|ይህ áˆáŠ•á‹µáŠá‹?]]) (To help protect against automated spam, you must type in the words or correct number answer exactly as seen beneath here before registering your account:)<br />',
+);
+
+/** Aragonese (Aragonés)
+ * @author Juanpabl
+ */
+$messages['an'] = array(
+ 'fancycaptcha-addurl' => "Ha encluyito vinclos esternos en a suya edición. Ta aduyar a protecher contra o spam automatico, escriba por favor as parolas que amaneixen en a caixa d'o cobaixo ([[Special:Captcha/help|más información]]):",
+ 'fancycaptcha-badlogin' => "Ta aduyar a protecher contra o trenque automatico de parolas de paso, escriba por favor as parolas que amaneixen en a caixa d'o cobaixo ([[Special:Captcha/help|más información]]):",
+ 'fancycaptcha-createaccount' => 'Ta aduyar a protecher contra a creyación automatica de cuentas, escriba por favor en o quatrón as parolas que amaneixen debaixo ([[Special:Captcha/help|más información]]):',
+ 'fancycaptcha-create' => "Ta creyar a pachina, escriba por favor as parolas que amaneixen en a caixa d'o cobaixo
+([[Special:Captcha/help|más información]]):",
+ 'fancycaptcha-edit' => "Ta editar ista pachina, escriba por favor as parolas que amaneixen en a caixa d'o cobaixo
+([[Special:Captcha/help|más información]]):",
+);
+
+/** Arabic (العربية)
+ * @author Aiman titi
+ * @author Meno25
+ */
+$messages['ar'] = array(
+ 'fancycaptcha-desc' => 'مولد Ùانسي كابتشا Ù„Confirm Edit',
+ 'fancycaptcha-addurl' => 'تعديلك يتضمن وصلات خارجية جديدة.
+للحماية من السبام الأوتوماتيكي، من Ùضلك أدخل الكلمات التي تظهر بالأسÙÙ„ ÙÙŠ الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'fancycaptcha-badlogin' => 'للمساعدة ÙÙŠ الحماية ضد سرقة كلمات السر، من Ùضلك أدخل الكلمات التي تظهر بالأسÙÙ„ ÙÙŠ الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'fancycaptcha-createaccount' => 'للمساعدة ÙÙŠ منع إنشاء حسابات بطريقة أوتوماتيكية، قم من Ùضلك بإدخال الكلمات التي تظهر أدناه ÙÙŠ الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'fancycaptcha-create' => 'لإنشاء الصÙحة، من Ùضلك أدخل الكلمات التي تظهر بالأسÙÙ„ ÙÙŠ الصندوق
+([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'fancycaptcha-edit' => 'لتعديل هذه الصÙحة، من Ùضلك أدخل الكلمات التي تظهر بالأسÙÙ„ ÙÙŠ الصندوق
+([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'fancycaptcha-sendemail' => 'للمساعدة ÙÙŠ منع إنشاء حسابات بطريقة أوتوماتيكية، قم من Ùضلك بإدخال الكلمات التي تظهر أدناه ÙÙŠ الصندوق ([[Special:Captcha/help|مزيد من المعلومات]]):',
+);
+
+/** Egyptian Spoken Arabic (مصرى)
+ * @author Meno25
+ * @author Ramsis II
+ */
+$messages['arz'] = array(
+ 'fancycaptcha-addurl' => 'تعديلك Ùيه لينكات خارجية جديدة
+علشان تساعد ÙÙ‰ الحماية من السبام الاوتوماتيكى، لو سمحت تكتب الكلمات اللى باينة تحت ÙÙ‰ الصندوء ([[Special:Captcha/help|معلومات زيادة]]):',
+ 'fancycaptcha-badlogin' => 'علشان تساعد ÙÙ‰ الحماية من السرقة الاتوماتيكية للباسورد، لو سمحت تدخل الكلمات اللى باينة تحت ÙÙ‰ الصندوء ([[Special:Captcha/help|معلومات زيادة]]):',
+ 'fancycaptcha-createaccount' => 'علشان تساعد ÙÙ‰ الحماية من الÙتح الاوتوماتيكى للحسابات،لو سمحت تدخل الكلمات اللى باينة تحت ÙÙ‰ الصندوء ([[Special:Captcha/help|معلومات زيادة]]):',
+ 'fancycaptcha-create' => 'علشان تبتدى صÙحة جديدة، لو سمحت تدخل الكلمات اللى ظاهرة تحت ÙÙ‰ الصندوق
+([[Special:Captcha/help|معلومات زيادة]]):',
+ 'fancycaptcha-edit' => 'علشان تعدل ÙÙ‰ الصÙحة دى،لو سمحت تكتب الكلمات اللى باينة تحت ÙÙ‰ الصندوء ([[Special:Captcha/help|معلومات زيادة]]):',
+);
+
+/** Assamese (অসমীয়া)
+ * @author Chaipau
+ * @author Rajuonline
+ */
+$messages['as'] = array(
+ 'fancycaptcha-addurl' => 'আপোনাৰ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦¤ বাহà§à¦¯à¦¿à¦• সংযোগ আছে।
+সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à§€à¦¯à¦¼ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à§° পৰা হাত সাৰিবলৈ, তলত দেখিবলৈ পোৱা শবà§à¦¦à¦Ÿà§‹ বাকচৰ ভিতৰত লিখক। ([[Special:Captcha/help|অধিক তথà§à¦¯]]):',
+ 'fancycaptcha-badlogin' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à§€à¦¯à¦¼ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ চà§à§°à¦¿à§° পৰা হাত সাৰিবলৈ,
+তলত দেখিবলৈ পোৱা শবà§à¦¦à¦Ÿà§‹ বাকচৰ ভিতৰত লিখক। ([[Special:Captcha/help|অধিক তথà§à¦¯]]):',
+ 'fancycaptcha-createaccount' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à§€à¦¯à¦¼ নতà§à¦¨ সদসà§à¦¯à¦­à§à¦•à§à¦¤à¦¿à§° পৰা হাত সাৰিবলৈ, তলত দেখিবলৈ পোৱা শবà§à¦¦à¦Ÿà§‹ বাকচৰ ভিতৰত লিখক। ([[Special:Captcha/help|অধিক তথà§à¦¯]]):',
+ 'fancycaptcha-create' => 'পৃষà§à¦ à¦¾à¦Ÿà§‹ বনাবলৈ, তলত দেখিবলৈ পোৱা শবà§à¦¦à¦Ÿà§‹ বাকচৰ ভিতৰত লিখক। ([[Special:Captcha/help|অধিক তথà§à¦¯]]):',
+ 'fancycaptcha-edit' => 'à¦à¦‡ পৃষà§à¦ à¦¾à¦Ÿà§‹ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰিবলৈ, তলত দেখিবলৈ পোৱা শবà§à¦¦à¦Ÿà§‹ বাকচৰ ভিতৰত লিখক। ([[Special:Captcha/help|অধিক তথà§à¦¯]]):',
+);
+
+/** Asturian (Asturianu)
+ * @author Esbardu
+ * @author Xuacu
+ */
+$messages['ast'] = array(
+ 'fancycaptcha-addurl' => "La to edición inclúi nuevos enllaces esternos. P'aidar a protexer escontra'l spam automatizáu, por favor escribi nel caxellu les pallabres qu'apaecen embaxo ([[Special:Captcha/help|más información]]):",
+ 'fancycaptcha-badlogin' => "P'aidar a protexer escontra'l descifráu automáticu de claves, por favor escribi nel caxellu les pallabres qu'apaecen embaxo ([[Special:Captcha/help|más información]]):",
+ 'fancycaptcha-createaccount' => "P'aidar a protexer escontra la creación automática de cuentes, por favor escribi nel caxellu les pallabres qu'apaecen embaxo ([[Special:Captcha/help|más información]]):",
+ 'fancycaptcha-create' => "Pa crear la páxina, por favor escribi nel caxellu les pallabres qu'apaecen embaxo ([[Special:Captcha/help|más información]]):",
+ 'fancycaptcha-edit' => "Pa editar la páxina, por favor escribi nel caxellu les pallabres qu'apaecen embaxo ([[Special:Captcha/help|más información]]):",
+ 'fancycaptcha-sendemail' => "P'aidar a protexer escontra'l corréu puxarra automáticu, por favor escribi nel caxellu les pallabres qu'apaecen embaxo ([[Special:Captcha/help|más información]]):",
+);
+
+/** Bashkir (БашҡортÑа)
+ * @author Assele
+ */
+$messages['ba'] = array(
+ 'fancycaptcha-addurl' => 'Һеҙҙең текÑтығыҙҙа Ñңы тышҡы һылтанмалар бар.
+Ðвтоматик Ñпамдан һаҡлау маҡÑатында, зинһар, күрһәтелгән һүҙҙәрҙе түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'fancycaptcha-badlogin' => 'Паролде автоматик ватыуҙан һаҡлау маҡÑатында, зинһар, күрһәтелгән һүҙҙәрҙе түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'fancycaptcha-createaccount' => 'Иҫәп Ñҙмаларын автоматик булдырыуҙан һаҡлау маҡÑатында, зинһар, күрһәтелгән һүҙҙәрҙе түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'fancycaptcha-create' => 'Яңы бит булдырыу Ó©Ñөн, зинһар, күрһәтелгән һүҙҙәрҙе түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'fancycaptcha-edit' => 'Был битте мөхәррирләү Ó©Ñөн, зинһар, күрһәтелгән һүҙҙәрҙе түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'fancycaptcha-sendemail' => 'Ðвтоматик Ñпамдан һаҡлау маҡÑатында, зинһар, күрһәтелгән һүҙҙәрҙе түбәндәге юлға керетегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+);
+
+/** Southern Balochi (بلوچی مکرانی)
+ * @author Mostafadaneshvar
+ */
+$messages['bcc'] = array(
+ 'fancycaptcha-addurl' => '‎بست',
+ 'fancycaptcha-badlogin' => 'په Ú©Ù…Ú© په محاÙظت Ú†Ù‡ اتوماتیکی پروشگ کلمه رمز، لطÙا کلماتی Ú©Ù‡ ته جهلگی جعبه ظاهر انت واردش کنیت ([[Special:Captcha/help|گیشترین اطلاعات]]):',
+ 'fancycaptcha-createaccount' => 'په Ú©Ù…Ú© په محاÙظت Ú†Ù‡ اتوماتیکی شرکتن حساب، لطÙا کلماتی Ú©Ù‡ ته جهلگی جعبه ظاهر انت واردش کنیت ([[Special:Captcha/help|گیشترین اطلاعات]]):',
+ 'fancycaptcha-create' => 'په شرکتن صÙحه، لطÙا کلماتی Ú©Ù‡ ته جهلگی جعبه ظاهراند واردش کنیت ([[Special:Captcha/help|گیشتر اطلاعات]]):',
+ 'fancycaptcha-edit' => 'په اصلاح کتن ای صÙحه، لطÙا کلماتی Ú©Ù‡ ته جهلگی جعبه ظاهراند واردش کنیت ([[Special:Captcha/help|گیشتر اطلاعات]]):',
+);
+
+/** Belarusian (TaraÅ¡kievica orthography) (‪БеларуÑÐºÐ°Ñ (тарашкевіца)‬)
+ * @author EugeneZelenko
+ * @author Jim-by
+ * @author Red Winged Duck
+ */
+$messages['be-tarask'] = array(
+ 'fancycaptcha-addurl' => 'Вашае Ñ€Ñдагаваньне ўтрымлівае Ð½Ð¾Ð²Ñ‹Ñ Ð²Ð¾Ð½ÐºÐ°Ð²Ñ‹Ñ ÑпаÑылкі.
+У мÑтах абароны ад Ñпаму, калі лаÑка, увÑдзіце Ñловы, ÑÐºÑ–Ñ Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ñž выÑве ([[Special:Captcha/help|болей інфармацыі]]):',
+ 'fancycaptcha-badlogin' => 'У мÑтах абароны ад аўтаматычнага злому паролÑÑž, калі лаÑка, увÑдзіце Ñловы, ÑÐºÑ–Ñ Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ñž выÑве ([[Special:Captcha/help|болей інфармацыі]]):',
+ 'fancycaptcha-createaccount' => 'У мÑтах абароны ад аўтаматычнага ÑтварÑÐ½ÑŒÐ½Ñ Ñ€Ð°Ñ…ÑƒÐ½ÐºÐ°Ñž, калі лаÑка, увÑдзіце Ñловы, ÑÐºÑ–Ñ Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ñž выÑве ([[Special:Captcha/help|болей інфармацыі]]):',
+ 'fancycaptcha-create' => 'Ð”Ð»Ñ ÑтварÑÐ½ÑŒÐ½Ñ Ñтаронкі, калі лаÑка, увÑдзіце Ñловы, ÑÐºÑ–Ñ Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ñž выÑве ([[Special:Captcha/help|болей інфармацыі]]):',
+ 'fancycaptcha-edit' => 'Ð”Ð»Ñ Ñ€ÑÐ´Ð°Ð³Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð³Ñтай Ñтаронкі, калі лаÑка, увÑдзіце Ñловы, ÑÐºÑ–Ñ Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ñž выÑве ([[Special:Captcha/help|болей інфармацыі]]):',
+ 'fancycaptcha-sendemail' => 'У мÑтах абароны Ñупраць аўтаматычнага Ñпаму, калі лаÑка, увÑдзіце Ñловы Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ð½Ñ–Ð¶Ñй у полі ([[Special:Captcha/help|Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ]]):',
+);
+
+/** Bulgarian (БългарÑки)
+ * @author Borislav
+ * @author DCLXVI
+ */
+$messages['bg'] = array(
+ 'fancycaptcha-addurl' => 'Текущата Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð²ÐºÐ»ÑŽÑ‡Ð²Ð° нови външни препратки. Като защита от автоматизиран Ñпам, ÑиÑтемата изиÑква от потребителите да въведат думите, показани по-долу в текÑтовата ÐºÑƒÑ‚Ð¸Ñ ([[Special:Captcha/help|повече информациÑ]]):',
+ 'fancycaptcha-badlogin' => 'Като защита Ñрещу опити за налучкване на паролата ви, молÑ, въведете буквите, които виждате на картинката ([[Special:Captcha/help|повече информациÑ]]):',
+ 'fancycaptcha-createaccount' => 'СиÑтемата за защита от автоматично Ñъздаване на потребителÑки Ñметки изиÑква да въведете това, което виждате в кутиÑта по-долу ([[Special:Captcha/help|повече информациÑ]]):',
+ 'fancycaptcha-create' => 'За Ñъздаване на Ñтраницата е необходимо да Ñе въведат думите от картинката в полето по-долу ([[Special:Captcha/help|повече информациÑ]]):',
+ 'fancycaptcha-edit' => 'За редактиране на Ñтраницата е необходимо да Ñе въведат думите от картинката в полето по-долу ([[Special:Captcha/help|повече информациÑ]]):',
+ 'fancycaptcha-sendemail' => 'Като защита Ñрещу автоматизиран Ñпам, въведете в кутиÑта думите, които Ñа показани по-долу ([[Special:Captcha/help|повече информациÑ]]):',
+);
+
+/** Bengali (বাংলা)
+ * @author Zaheen
+ */
+$messages['bn'] = array(
+ 'fancycaptcha-addurl' => 'আপনার সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦Ÿà¦¿à¦¤à§‡ নতà§à¦¨ বহিঃসংযোগ আছে। সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼ সà§à¦ªà§à¦¯à¦¾à¦®à§‡à¦° বিরà§à¦¦à§à¦§à§‡ সà§à¦°à¦•à§à¦·à¦¾à¦° খাতিরে অনà§à¦—à§à¦°à¦¹ করে নিচের বাকà§à¦¸à§‡ দেখানো শবà§à¦¦à¦—à§à¦²à¦¿ পà§à¦°à¦¬à§‡à¦¶ করান ([[Special:Captcha/help|আরও তথà§à¦¯]]):',
+ 'fancycaptcha-badlogin' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼ শবà§à¦¦à¦šà¦¾à¦¬à¦¿ কà§à¦°à§à¦¯à¦¾à¦•à¦¿à¦‚-à¦à¦° বিরà§à¦¦à§à¦§à§‡ সà§à¦°à¦•à§à¦·à¦¾à¦° খাতিরে অনà§à¦—à§à¦°à¦¹ করে নিচের বাকà§à¦¸à§‡ দেখানো শবà§à¦¦à¦—à§à¦²à¦¿ পà§à¦°à¦¬à§‡à¦¶ করান ([[Special:Captcha/help|আরও তথà§à¦¯]]):',
+ 'fancycaptcha-createaccount' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼ অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ সৃষà§à¦Ÿà¦¿à¦° বিরà§à¦¦à§à¦§à§‡ সà§à¦°à¦•à§à¦·à¦¾à¦° জনà§à¦¯ অনà§à¦—à§à¦°à¦¹ করে নিচের বাকà§à¦¸à§‡ দেখানো শবà§à¦¦à¦—à§à¦²à¦¿ পà§à¦°à¦¬à§‡à¦¶ করান ([[Special:Captcha/help|আরও তথà§à¦¯]]):',
+ 'fancycaptcha-create' => 'পাতাটি সৃষà§à¦Ÿà¦¿ করতে চাইলে অনà§à¦—à§à¦°à¦¹ করে নিচের বাকà§à¦¸à§‡ দেখানো শবà§à¦¦à¦—à§à¦²à¦¿ পà§à¦°à¦¬à§‡à¦¶ করান ([[Special:Captcha/help|আরও তথà§à¦¯]]):',
+ 'fancycaptcha-edit' => 'পাতাটি সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে চাইলে অনà§à¦—à§à¦°à¦¹ করে নিচের বাকà§à¦¸à§‡ দেখানো শবà§à¦¦à¦—à§à¦²à¦¿ পà§à¦°à¦¬à§‡à¦¶ করান
+([[Special:Captcha/help|আরও তথà§à¦¯]]):',
+);
+
+/** Breton (Brezhoneg)
+ * @author Fulup
+ */
+$messages['br'] = array(
+ 'fancycaptcha-addurl' => "Liammoù diavaez nevez zo bet degaset ganeoc'h. Evit stourm a-enep d'ar strob emgefre, skrivit ar gerioù a zeu war wel er voest a-is ([[Special:Captcha/help|gouzout hiroc'h]]):",
+ 'fancycaptcha-badlogin' => "A-benn talañ ouzh ar preizhañ kontoù dre c'herioù-tremen emgefre, skrivit er vaezienn ar gerioù merket dindan ([[Special:Captcha/help|Petra eo se?]]):",
+ 'fancycaptcha-createaccount' => "Evit stourm a-enep d'ar c'hontoù krouet ent emgefre, skrivit ar gerioù
+a zeu war wel er voest a-is ([[Special:Captcha/help|gouzout hiroc'h]]):",
+ 'fancycaptcha-create' => "Liammoù diavaez nevez zo bet degaset ganeoc'h. Evit stourm a-enep d'ar strob emgefre, skrivit ar gerioù a zeu war wel er voest a-is ([[Special:Captcha/help|gouzout hiroc'h]]):",
+ 'fancycaptcha-edit' => "Liammoù diavaez nevez zo bet degaset ganeoc'h. Evit stourm a-enep d'ar strob emgefre, skrivit ar gerioù a zeu war wel er voest a-is ([[Special:Captcha/help|gouzout hiroc'h]]):",
+ 'fancycaptcha-sendemail' => "Evit hor skoazellañ da zizarbenn ar strob emgefre, adskrivit ar gerioù a welit er voest dindan ([[Special:Captcha/help|gouzout hiroc'h]]):",
+);
+
+/** Bosnian (Bosanski)
+ * @author CERminator
+ */
+$messages['bs'] = array(
+ 'fancycaptcha-addurl' => 'VaÅ¡a izmjena ukljuÄuje nove vanjske linkove.
+Da bi se zaÅ¡titili od automatskog spama, molimo da unesete rijeÄi koje su prikazane u kutiji ([[Special:Captcha/help|viÅ¡e informacija]]):',
+ 'fancycaptcha-badlogin' => 'Da bi pomogli u sprjeÄavanju protiv automatskog probijanja Å¡ifre, molimo Vas da unesete rijeÄi koje su prikazane ispod u kutiji ([[Special:Captcha/help|viÅ¡e informacija]]):',
+ 'fancycaptcha-createaccount' => 'Da bi pomogli u sprjeÄavanju automatskog pravljenja raÄuna, molimo Vas da unesete rijeÄi koje su prikazane u kutiji ispod ([[Special:Captcha/help|viÅ¡e informacija]]):',
+ 'fancycaptcha-create' => 'Da bi ste napravili stranicu, molimo Vas unesite rijeÄi koje su prikazane u kutiji ispod ([[Special:Captcha/help|viÅ¡e informacija]]):',
+ 'fancycaptcha-edit' => 'Da bi ste ureÄ‘ivali ovu stranicu, molimo Vas unesite rijeÄi koje su prikazane u kutiji ispod ([[Special:Captcha/help|viÅ¡e informacija]]):',
+ 'fancycaptcha-sendemail' => 'Da bi pomogli u sprjeÄavanju protiv automatskog spamovanja, molimo Vas da unesete rijeÄi koje su prikazane ispod u kutiji ([[Special:Captcha/help|viÅ¡e informacija]]):',
+);
+
+/** Catalan (Català)
+ * @author Davidpar
+ * @author SMP
+ * @author Ssola
+ */
+$messages['ca'] = array(
+ 'fancycaptcha-addurl' => "La vostra modificació inclou nous enllaços externs. Com a protecció contra la propaganda automatitzada heu d'escriure en la caixa les paraules que apareixen a continuació ([[Special:Captcha/help|més informació]]):",
+ 'fancycaptcha-badlogin' => "Com a protecció contra l'obtenció automatitzada de contrasenyes cal que escriviu en la caixa les paraules que apareixen a continuació ([[Special:Captcha/help|més informació]]):",
+ 'fancycaptcha-createaccount' => 'Com a protecció contra la creació automatitzada de nous comptes cal que escriviu en la caixa les paraules que apareixen a continuació ([[Special:Captcha/help|més informació]]):',
+ 'fancycaptcha-create' => "Per a poder crear la pàgina heu d'escriure en la caixa les paraules que apareixen a continuació ([[Special:Captcha/help|més informació]]):",
+ 'fancycaptcha-edit' => "Per a poder modificar la pàgina heu d'escriure en la caixa les paraules que apareixen a continuació ([[Special:Captcha/help|més informació]]):",
+ 'fancycaptcha-sendemail' => 'Per ajudar a protegir contra el correu brossa automatitzat, si us plau, introduïu les paraules que apareixen a sota la caixa ([[Special:Captcha/help|més informació]]):',
+);
+
+/** Min Dong Chinese (Mìng-dĕ̤ng-ngṳ̄) */
+$messages['cdo'] = array(
+ 'fancycaptcha-badlogin' => 'Ôi-lÄu huòng-cÄ« tiàng-sê̤ṳ cê̤ṳ-dông puái-gÄi mÄ­k-mÄ, chiÄng nṳ̄ sṳ̆-Ä­k â-dÄ̤ bÄ“ng-bÄ“ng diÄ“-lié gì sṳ̀ ([[Special:Captcha/help|gáing sâ̤ séng-sék]]):',
+);
+
+/** Czech (ÄŒesky)
+ * @author Mormegil
+ */
+$messages['cs'] = array(
+ 'fancycaptcha-desc' => 'PokroÄilý generátor captcha pro rozšíření „Confirm Edit“',
+ 'fancycaptcha-addurl' => 'Vaše editace obsahuje nové odkazy formou URL; v zájmu ochrany před automatickým spamováním musíte opsat text z následujícího obrázku: ([[Special:Captcha/help|Co tohle znamená?]])',
+ 'fancycaptcha-badlogin' => 'V rámci ochrany proti automatickým pokusům uhodnout heslo musíte opsat text z následujícího obrázku. ([[Special:Captcha/help|Co tohle znamená?]])',
+ 'fancycaptcha-createaccount' => 'V rámci ochrany pÅ™ed automatickým zakládáním úÄtů musíte pro provedení registrace opsat text z následujícího obrázku: ([[Special:Captcha/help|Co tohle znamená?]])',
+ 'fancycaptcha-create' => 'Abyste mohli založit stránku, musíte opsat text z následujícího obrázku: ([[Special:Captcha/help|Co tohle znamená?]])',
+ 'fancycaptcha-edit' => 'Abyste mohli editovat tuto stránku, musíte opsat text z následujícího obrázku: ([[Special:Captcha/help|Co tohle znamená?]])',
+ 'fancycaptcha-sendemail' => 'V rámci ochrany proti automatickému spamování musíte opsat níže zobrazená slova ([[Special:Captcha/help|více informací]]):',
+);
+
+/** Church Slavic (СловѣÌньÑкъ / ⰔⰎⰑⰂⰡâ°â° â°”â°â°Ÿ)
+ * @author ОйЛ
+ */
+$messages['cu'] = array(
+ 'fancycaptcha-createaccount' => 'блюдєниꙗ дѣл҄ьма на аѵтоматьно мѣÑтоê™Ð¸Ð´Ð°Ð½Ð¸Ñ¥ · авлѥнъ Ñлова обраê™ÑŠ нижьшиѥмь окънѣ напиши â™ ([[Special:Captcha/help|иÑпльнѧщѧ вѣÑти]]) :',
+);
+
+/** Welsh (Cymraeg)
+ * @author Lloffiwr
+ */
+$messages['cy'] = array(
+ 'fancycaptcha-addurl' => "Mae eich golygiad yn cynnwys cyswllt allanol newydd.
+Er mwyn ceisio rhwystro peiriannau spam, byddwch gystal â theipio'r geiriau a welwch isod yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ 'fancycaptcha-badlogin' => "Er mwyn ceisio rhwystro peiriannau datrys cyfrineiriau, byddwch gystal â theipio'r geiriau a welwch isod yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ 'fancycaptcha-createaccount' => "Er mwyn ceisio rhwystro peiriannau creu cyfrifon, byddwch gystal â theipio'r geiriau a welwch isod yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ 'fancycaptcha-create' => "Er mwyn creu'r dudalen, byddwch gystal â theipio'r geiriau a welwch isod yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ 'fancycaptcha-edit' => "Er mwyn gallu golygu'r dudalen hon, byddwch gystal â theipio'r geiriau a welwch isod yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+ 'fancycaptcha-sendemail' => "Er mwyn cyfrannu at ddiogelu rhag sbamio awtomatig, byddwch gystal â gwneud y swm isod ac ysgrifennu'r ateb yn y blwch ([[Special:Captcha/help|rhagor o wybodaeth]]):",
+);
+
+/** Danish (Dansk) */
+$messages['da'] = array(
+ 'fancycaptcha-addurl' => 'Din ændring tilføjer nye eksterne henvisninger. For at beskytte mod automatiseret spam, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'fancycaptcha-badlogin' => 'For at beskytte mod automatiske forsøg på at gætte kodeord, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'fancycaptcha-createaccount' => 'For at beskytte mod automatisk oprettelse af brugernavne, der bruges til spam, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'fancycaptcha-create' => 'For at oprette en ny side, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'fancycaptcha-edit' => 'or at redigere denne side
+([[Special:Captcha/help|more info]]):',
+);
+
+/** German (Deutsch)
+ * @author Metalhead64
+ * @author Raimond Spekking
+ * @author Umherirrender
+ */
+$messages['de'] = array(
+ 'fancycaptcha-desc' => 'CAPTCHA-Generator für die Erweiterung „Confirm Edit“',
+ 'fancycaptcha-addurl' => 'Deine Bearbeitung enthält neue externe Links.
+Zum Schutz vor automatisiertem Spamming gib das folgende Wort in das Feld unten ein. Klicke dann erneut auf „Seite speichern“ ([[Special:Captcha/help|Fragen oder Probleme?]]).',
+ 'fancycaptcha-badlogin' => 'Zum Schutz vor einer Kompromittierung deines Benutzerkontos gib das folgende Wort in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]]:',
+ 'fancycaptcha-createaccount' => 'Zum Schutz vor automatisierter Anlage von Benutzerkonten gib bitte das folgende Wort in das Feld unten ein ([[Special:Captcha/help|Fragen oder Probleme?]]):',
+ 'fancycaptcha-create' => 'Zur Erstellung der Seite gib das folgende Wort in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].',
+ 'fancycaptcha-edit' => 'Zur Bearbeitung der Seite gib das folgende Wort in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].',
+ 'fancycaptcha-sendemail' => 'Um gegen automatischen Spam vorzugehen, gib bitte die Wörter unten in das Feld ein ([[Special:Captcha/help|mehr Informationen]]):',
+);
+
+/** German (formal address) (‪Deutsch (Sie-Form)‬)
+ * @author Imre
+ * @author MichaelFrey
+ * @author Umherirrender
+ */
+$messages['de-formal'] = array(
+ 'fancycaptcha-addurl' => 'Ihre Bearbeitung enthält neue externe Links.
+Zum Schutz vor automatisiertem Spamming geben Sie das folgende Wort in das Feld unten ein. Klicken Sie dann erneut auf „Seite speichern“ ([[Special:Captcha/help|Fragen oder Probleme?]]).',
+ 'fancycaptcha-badlogin' => 'Zum Schutz vor einer Kompromittierung Ihres Benutzerkontos geben Sie bitte das folgende Wort in das Feld unten ein [[Special:Captcha/help|(Haben Sie Fragen oder Probleme?)]]:',
+ 'fancycaptcha-createaccount' => 'Zum Schutz vor automatisierter Anlage von Benutzerkonten geben Sie bitte das folgende Wort in das Feld unten ein ([[Special:Captcha/help|Fragen oder Probleme?]]):',
+ 'fancycaptcha-create' => 'Zur Erstellung der Seite geben Sie das folgende Wort in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].',
+ 'fancycaptcha-edit' => 'Zur Bearbeitung der Seite geben Sie das folgende Wort in das Feld unten ein [[Special:Captcha/help|(Fragen oder Probleme?)]].',
+);
+
+/** Zazaki (Zazaki)
+ * @author Xoser
+ */
+$messages['diq'] = array(
+ 'fancycaptcha-addurl' => 'Vurnayîşanê tu de linkanê harîcîyê newe esto.
+Qe otomatik spamî ra pawitîş, ma rica keno çekuyanê ke qutiya cor de înan binuse ([[Special:Captcha/help|enformasyonê bînî]]):',
+ 'fancycaptcha-badlogin' => 'Qe otomatik parola crack kerdişî ra pawitîş, ma rica keno çekuyanê ke qutiya cor de înan binuse ([[Special:Captcha/help|enformasyonê bînî]]):',
+ 'fancycaptcha-createaccount' => 'Qe otomatik hesab viraştişî ra pawitîş, ma rica keno çekuyanê ke qutiya cor de înan binuse ([[Special:Captcha/help|enformasyonê bînî]]):',
+ 'fancycaptcha-create' => 'Qe pel viraştîşî, ma rica keno çekuyanê ke qutiya cor de înan binuse ([[Special:Captcha/help|enformasyonê bînî]]):',
+ 'fancycaptcha-edit' => 'Qe pel vurnayîşî, ma rica keno çekuyanê ke qutiya cor de înan binuse ([[Special:Captcha/help|enformasyonê bînî]]):',
+ 'fancycaptcha-sendemail' => 'Qe spamê otomayoni ra pawitîşi, ma rica keno çekuyanê ke qutiya cor de înan binuse
+([[Special:Captcha/help|enformasyonê bînî]]):',
+);
+
+/** Lower Sorbian (Dolnoserbski)
+ * @author Michawiki
+ */
+$messages['dsb'] = array(
+ 'fancycaptcha-addurl' => 'Twója změna wopśimujo nowe eksterne wótkaze.
+Za šćit pśeśiwo awtomatiskemu spamowanjeju, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):',
+ 'fancycaptcha-badlogin' => 'Za šćit pśeśiwo awtomatiskemu wugódanjeju gronidła, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):',
+ 'fancycaptcha-createaccount' => 'Za šćit pśeśiwo awtomatiskemu załoženjeju kontow, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):',
+ 'fancycaptcha-create' => 'Aby bok napórał, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):',
+ 'fancycaptcha-edit' => 'Aby toś ten bok wobźěłał, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):',
+ 'fancycaptcha-sendemail' => 'Za šćit pśeśiwo awtomatiskemu spamowanjeju, zapódaj pšosym słowa, kótarež pokazuju se dołojce w kašćiku ([[Special:Captcha/help|dalšne informacije]]):',
+);
+
+/** Greek (Ελληνικά)
+ * @author Badseed
+ * @author Consta
+ * @author Geraki
+ * @author Glavkos
+ * @author ZaDiak
+ */
+$messages['el'] = array(
+ 'fancycaptcha-addurl' => 'Η επεξεÏγασία σας πεÏιλαμβάνει νέους εξωτεÏικοÏÏ‚ σÏνδεσμους.
+Ως βοήθεια για την Ï€Ïοστασία από αυτόματα spam, παÏακαλοÏμε γÏάψτε τις λέξεις που εμφανίζονται παÏακάτω στο πλαίσιο ([[Special:Captcha/help|πεÏισσότεÏες πληÏοφοÏίες]]):',
+ 'fancycaptcha-badlogin' => 'Ως βοήθεια για την Ï€Ïοστασία από αυτόματα Ï€ÏογÏάμματα σπασίματος κωδικών, παÏακαλοÏμε γÏάψτε τις λέξεις που εμφανίζονται παÏακάτω στο πλαίσιο ([[Special:Captcha/help|πεÏισσότεÏες πληÏοφοÏίες]]):',
+ 'fancycaptcha-createaccount' => 'Για να βοηθήσετε στην Ï€Ïοστασία κατά των αυτόματα δημιουÏγοÏμενων λογαÏιασμών, παÏακαλοÏμε πληκτÏολογήστε στο πλαίσιο τις λέξεις που εμφανίζονται πιο κάτω ([[Special:Captcha/help|πεÏισσότεÏες πληÏοφοÏίες]]):',
+ 'fancycaptcha-create' => 'Για να δημιουÏγήσετε αυτήν την σελίδα, παÏακαλώ εισάγετε τις λέξεις που εμφανίζονται παÏακάτω μέσα στο κουτί
+([[Special:Captcha/help|πεÏισσότεÏες πληÏοφοÏίες]]):',
+ 'fancycaptcha-edit' => 'Για να επεξεÏγαστείτε αυτήν την σελίδα, παÏακαλώ εισάγετε τις λέξεις που εμφανίζονται παÏακάτω μέσα στο κουτί
+([[Special:Captcha/help|πεÏισσότεÏες πληÏοφοÏίες]]):',
+ 'fancycaptcha-sendemail' => 'Ως βοήθεια για την Ï€Ïοστασία από αυτόματα Ï€ÏογÏάμματα σπασίματος κωδικών, παÏακαλοÏμε γÏάψτε τις λέξεις που εμφανίζονται παÏακάτω στο πλαίσιο ([[Special:Captcha/help|πεÏισσότεÏες πληÏοφοÏίες]]):',
+);
+
+/** Esperanto (Esperanto)
+ * @author Yekrats
+ */
+$messages['eo'] = array(
+ 'fancycaptcha-addurl' => 'Via redakto inkluzivas novajn eksterajn ligilojn.
+Por preventi aÅ­tomatan spamon, bonvolu enigi la jenajn vortojn en la skatolo ([[Special:Captcha/help|plua informo]]):',
+ 'fancycaptcha-badlogin' => 'Helpi protekti kontraÅ­ aÅ­tomata divenado de pasvortoj, bonvolu enigi la jenajn vortojn en la skatolo ([[Special:Captcha/help|plua informo]]):',
+ 'fancycaptcha-createaccount' => 'Helpi protekti kontraÅ­ aÅ­tomata kreado de kontoj, bonvolu enigi la jenajn vortojn en la skatolo ([[Special:Captcha/help|plua informo]]):',
+ 'fancycaptcha-create' => 'Por krei la paÄon, bonvolu enigi la vortojn montritajn en la jena skatolo ([[Special:Captcha/help|plua informo]]):',
+ 'fancycaptcha-edit' => 'Por redakti ĉi tiun paÄon, bonvolu enigi la vortojn jenajn en la kesto ([[Special:Captcha/help|plua informo]]):',
+ 'fancycaptcha-sendemail' => 'Por helpi protekti kontraÅ­ aÅ­tomata spamado, bonvolu enigi la jenajn vortojn de la skatolo ([[Special:Captcha/help|plua informo]]):',
+);
+
+/** Spanish (Español)
+ * @author Icvav
+ * @author Pertile
+ * @author Sanbec
+ */
+$messages['es'] = array(
+ 'fancycaptcha-addurl' => 'Tu edición incluye nuevos enlaces externos. Para protegernos contra el spam automatizado, por favor introduce en el recuadro las palabras que aparecen debajo ([[Special:Captcha/help|más información]]):',
+ 'fancycaptcha-badlogin' => 'Para ayudarnos en la protección contra el descifrado automático de contraseñas, por favor, introduce las palabras que aparecen abajo en la caja ([[Special:Captcha/help|más información]]):',
+ 'fancycaptcha-createaccount' => 'Para evitar la creación automatizada de cuentas, introduce por favor en el recuadro las palabras que aparecen debajo ([[Special:Captcha/help|más información]]):',
+ 'fancycaptcha-create' => 'Para crear la página, por favor introduce en el recuadro las palabras que aparecen debajo ([[Special:Captcha/help|más información]]):',
+ 'fancycaptcha-edit' => 'Para editar esta página, por favor introduce en el recuadro las palabras que aparecen debajo ([[Special:Captcha/help|más información]]):',
+ 'fancycaptcha-sendemail' => 'Para protegernos contra el spam automatizado por favor ingrese las palabras que aparecen en el siguiente cuadro ([[Special:Captcha/help|más información]]):',
+);
+
+/** Estonian (Eesti)
+ * @author Pikne
+ */
+$messages['et'] = array(
+ 'fancycaptcha-desc' => 'Kirevate piltidega robotilõks, kinnitamaks muudatuste õigsust.',
+ 'fancycaptcha-addurl' => 'Sinu muudatus sisaldab uusi välislinke.
+Palun sisesta allpool olevas kastis kuvatud sõnad. Abinõu on kaitseks automaadistatud rämpsmuudatuste vastu ([[Special:Captcha/help|täpsem teave]]):',
+ 'fancycaptcha-badlogin' => 'Palun sisesta allpool olevas kastis kuvatud sõnad. Abinõu on kaitseks automaatsete parooliäraarvajate vastu ([[Special:Captcha/help|täpsem teave]]):',
+ 'fancycaptcha-createaccount' => 'Palun sisesta allpool olevas kastis kuvatud sõnad. Abinõu on kaitseks kontode automaatse loomise vastu ([[Special:Captcha/help|täpsem teave]]):',
+ 'fancycaptcha-create' => 'Lehekülje loomiseks sisesta palun allpool olevas kastis kuvatud sõnad ([[Special:Captcha/help|täpsem teave]]):',
+ 'fancycaptcha-edit' => 'Selle lehekülje muutmiseks sisesta palun allpool olevas kastis kuvatud sõnad ([[Special:Captcha/help|täpsev teave]]):',
+ 'fancycaptcha-sendemail' => 'Palun sisesta allpool olevas kastis kuvatud sõnad. Abinõu on kaitseks automaadistatud rämpsmuudatuste vastu ([[Special:Captcha/help|lisateave]]):',
+);
+
+/** Basque (Euskara)
+ * @author An13sa
+ */
+$messages['eu'] = array(
+ 'fancycaptcha-addurl' => 'Zure aldaketak kanpo lotura berriak ditu. Spam automatikoa saihestu ahal izateko, beheko koadroan ageri diren hitzak idatzi ([[Special:Captcha/help|informazio gehigarria]]):',
+ 'fancycaptcha-badlogin' => 'Pasahitzen cracking automatikoa saihestu asmoz, beheko koadroan ageri diren hitzak idazteko eskatzen dizugu ([[Special:Captcha/help|informazio gehigarria]]):',
+ 'fancycaptcha-createaccount' => 'Erabiltzaile kontuak automatikoki sortzea saihestu asmoz, beheko koadroan ageri diren hitzak idazteko eskatzen dizugu ([[Special:Captcha/help|informazio gehigarria]]):',
+ 'fancycaptcha-create' => 'Orrialde sortu ahal izateko, beheko koadroan ageri hitzak idatzi ([[Special:Captcha/help|informazio gehigarria]]):',
+ 'fancycaptcha-edit' => 'Orrialde hau aldatu ahal izateko, beheko koadroan ageri diren hitzak idatzi ([[Special:Captcha/help|informazio gehigarria]]):',
+ 'fancycaptcha-sendemail' => 'Zabor-posta automatizatuaz babesteko, idatzi azpiko kutxako hitzak ([[Special:Captcha/help|informazio gehiago]]):',
+);
+
+/** Persian (Ùارسی)
+ * @author Huji
+ * @author Ladsgroup
+ * @author Meisam
+ * @author Wayiran
+ */
+$messages['fa'] = array(
+ 'fancycaptcha-addurl' => 'ویرایش شما حاوی پیوندهای خارجی جدیدی است.
+برای Ú©Ù…Ú© به جلوگیری از هرزنگاری خودکار، لطÙاً واژه‌ای را Ú©Ù‡ در تصویر می‌بینید در جعبه وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):',
+ 'fancycaptcha-badlogin' => 'برای Ú©Ù…Ú© به جلوگیری از سرقت خودکار کلمه عبور، لطÙاً واژه‌ای را Ú©Ù‡ در تصویر می‌بینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):',
+ 'fancycaptcha-createaccount' => 'برای Ú©Ù…Ú© به جلوگیری از ایجاد خودکار حساب کاربری، لطÙاً واژه‌ای را Ú©Ù‡ در تصویر می‌بینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):',
+ 'fancycaptcha-create' => 'برای ایجاد این صÙحه، لطÙاً واژه‌ای را Ú©Ù‡ در تصویر می‌بینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):',
+ 'fancycaptcha-edit' => 'برای ویرایش این صÙحه، لطÙاً واژه‌ای را Ú©Ù‡ در تصویر می‌بینید وارد کنید ([[Special:Captcha/help|اطلاعات بیشتر]]):',
+ 'fancycaptcha-sendemail' => 'برای Ú©Ù…Ú© به محاÙظت در برابر هرزه‌نگاری خودکار، لطÙاً واژه‌هایی را Ú©Ù‡ در جعبهٔ زیر نمایش داده می‌شوند وارد کنید ([[Special:Captcha/help|اطلاعات بیش‌تر]]):',
+);
+
+/** Finnish (Suomi)
+ * @author Crt
+ * @author Nike
+ */
+$messages['fi'] = array(
+ 'fancycaptcha-addurl' => 'Muokkauksesi sisältää uusia linkkejä muille sivuille. Kirjoita kuvan sisältämät sanat alla olevaan tekstikenttään ([[Special:Captcha/help|lisätietoja]]):',
+ 'fancycaptcha-badlogin' => 'Automatisoidun salasanan murtamisen vaikeuttamiseksi kirjoita kuvan sisältämät sanat alla olevaan tekstikenttään ([[Special:Captcha/help|lisätietoja]]):',
+ 'fancycaptcha-createaccount' => 'Kirjoita kuvan sisältämät sanat alla olevaan tekstikenttään ([[Special:Captcha/help|lisätietoja]]):',
+ 'fancycaptcha-create' => 'Muokkauksesi sisältää uusia linkkejä muille sivuille. Kirjoita kuvan sisältämät sanat alla olevaan tekstikenttään ([[Special:Captcha/help|lisätietoja]]):',
+ 'fancycaptcha-edit' => 'Muokkauksesi sisältää uusia linkkejä muille sivuille. Kirjoita kuvan sisältämät sanat alla olevaan tekstikenttään ([[Special:Captcha/help|lisätietoja]]):',
+ 'fancycaptcha-sendemail' => 'Automatisoidun roskapostin lähettämisen vaikeuttamiseksi kirjoita kuvan sisältämät sanat alla olevaan tekstikenttään ([[Special:Captcha/help|lisätietoja]]):',
+);
+
+/** Faroese (Føroyskt)
+ * @author Spacebirdy
+ */
+$messages['fo'] = array(
+ 'fancycaptcha-addurl' => 'Sum ein vernd ímóti sjálvvirknum konto gerð, er neyðugt hjá tær at skriva inn tey orð, sum koma fyri á myndini fyri at stovna eina kontu: <br />([[Special:Captcha/help|Hvat er hetta?]])',
+ 'fancycaptcha-createaccount' => 'Sum ein vernd ímóti sjálvvirknum konto gerð, er neyðugt hjá tær at skriva inn tey orð, sum koma fyri á myndini fyri at stovna eina kontu: <br />([[Special:Captcha/help|Hvat er hetta?]]):',
+);
+
+/** French (Français)
+ * @author Crochet.david
+ * @author IAlex
+ * @author Sherbrooke
+ * @author Verdy p
+ */
+$messages['fr'] = array(
+ 'fancycaptcha-desc' => "Générateur d’images ''captcha'' anti-robots demandant une confirmation humaine des modifications.",
+ 'fancycaptcha-addurl' => 'Votre modification inclut de nouveaux liens externes.
+Pour vérifier qu’il ne s’agit pas de pourriels automatisés, veuillez entrer les mots qui apparaissent dans la boîte ci-dessous ([[Special:Captcha/help|plus d’informations]]) :',
+ 'fancycaptcha-badlogin' => 'Afin de nous aider à prévenir le cassage des mots de passe par des automates, veuillez entrer les mots qui apparaissent dans la boîte ci-dessous ([[Special:Captcha/help|plus d’informations]]) :',
+ 'fancycaptcha-createaccount' => 'Afin de nous aider à lutter contre les créations automatiques de comptes, veuillez entrer les mots qui apparaissent dans la boîte ci-dessous ([[Special:Captcha/help|plus d’informations]]) :',
+ 'fancycaptcha-create' => 'Pour créer la page, veuillez entrer les mots qui apparaissent dans la boîte ci-dessous ([[Special:Captcha|plus d’informations]]) :',
+ 'fancycaptcha-edit' => 'Pour modifier cette page, veuillez entrer les mots qui apparaissent dans la boîte ci-dessous ([[Special:Captcha|plus d’informations]]) :',
+ 'fancycaptcha-sendemail' => 'Afin de nous aider à prévenir le spam automatique, veuillez entrer les mots qui apparaissent dans la boîte ci-dessous ([[Special:Captcha/help|plus d’informations]]) :',
+);
+
+/** Franco-Provençal (Arpetan)
+ * @author ChrisPtDe
+ */
+$messages['frp'] = array(
+ 'fancycaptcha-desc' => "G·ènèrator d’émâges ''captcha'' anti-robots que demande una confirmacion d’homo des changements.",
+ 'fancycaptcha-addurl' => 'Voutron changement encllut de lims de defôr novéls.
+Por nos édiér a combatre contre lo spame ôtomatisâ, volyéd buchiér los mots qu’aparèssont dens la bouèta ce-desot ([[Special:Captcha/help|més d’enformacions]]) :',
+ 'fancycaptcha-badlogin' => 'Por nos édiér a combatre contre lo piratâjo ôtomatisâ de mots de pâssa, volyéd buchiér los mots qu’aparèssont dens la bouèta ce-desot ([[Special:Captcha/help|més d’enformacions]]) :',
+ 'fancycaptcha-createaccount' => 'Por nos édiér a combatre contre les crèacions ôtomatisâs de comptos, volyéd buchiér los mots qu’aparèssont dens la bouèta ce-desot ([[Special:Captcha/help|més d’enformacions]]) :',
+ 'fancycaptcha-create' => 'Por fâre ceta pâge, volyéd buchiér los mots qu’aparèssont dens la bouèta ce-desot ([[Special:Captcha/help|més d’enformacions]]) :',
+ 'fancycaptcha-edit' => 'Por changiér ceta pâge, volyéd buchiér los mots qu’aparèssont dens la bouèta ce-desot ([[Special:Captcha/help|més d’enformacions]]) :',
+);
+
+/** Western Frisian (Frysk)
+ * @author Snakesteuben
+ */
+$messages['fy'] = array(
+ 'fancycaptcha-badlogin' => 'As ekstra beskerming tsjin automatysk ûntsiferjen fan wachtwurden wurdt jo frege de ûndersteande letters oer te tikken. ([[Special:Captcha/help|mear ynformaasje]]).',
+);
+
+/** Irish (Gaeilge) */
+$messages['ga'] = array(
+ 'fancycaptcha-createaccount' => 'Mar chosaint in éadan cuntais a chruthaítear go huathoibríoch, ionchuir na focail a thaispeántar san íomhá seo thíos: <br />([[Special:Captcha/help|tuilleadh eolais]])',
+);
+
+/** Galician (Galego)
+ * @author Toliño
+ * @author Xosé
+ */
+$messages['gl'] = array(
+ 'fancycaptcha-desc' => 'Xerador de imaxes CAPTCHA para Confirm Edit',
+ 'fancycaptcha-addurl' => 'A súa edición inclúe ligazóns externas novas.
+Para contribuír na protección contra o spam automatizado, introduza as palabras que aparecen na caixa de embaixo ([[Special:Captcha/help|máis información]]):',
+ 'fancycaptcha-badlogin' => 'Para contribuír a que non se descubran os contrasinais por medios automáticos, introduza as palabras que aparecen na caixa de embaixo ([[Special:Captcha/help|máis información]]):',
+ 'fancycaptcha-createaccount' => 'Para contribuír contra a creación automatizada de contas, introduza as palabras que aparecen na caixa de embaixo ([[Special:Captcha/help|máis información]]):',
+ 'fancycaptcha-create' => 'Para crear a páxina, introduza as palabras que aparecen na caixa de embaixo ([[Special:Captcha/help|máis información]]):',
+ 'fancycaptcha-edit' => 'Para editar esta páxina, introduza as palabras que aparecen na caixa de embaixo ([[Special:Captcha/help|máis información]]):',
+ 'fancycaptcha-sendemail' => 'Para contribuír na protección contra o spam automatizado, introduza as palabras que aparecen na caixa de embaixo ([[Special:Captcha/help|máis información]]):',
+);
+
+/** Swiss German (Alemannisch)
+ * @author Als-Holder
+ * @author Melancholie
+ */
+$messages['gsw'] = array(
+ 'fancycaptcha-addurl' => 'In Dyynere Bearbeitig het s neiji externi Gleicher.
+Zum Schutz vor automatisiertem Spamming gib des Wort in s Fäld unten yy. Druck derno nomol uf „Syte spychere“. [[Special:Captcha/help|(Frogen oder Probläm?)]]',
+ 'fancycaptcha-badlogin' => 'Zum Schutz vor ere Kompromittierig vu Dyynm Benutzerkonto gib des Wort in s Fäld unten yy [[Special:Captcha/help|(Frogen oder Probläm?)]]:',
+ 'fancycaptcha-createaccount' => 'Zum Schutz vor ere automatisierte Aalag vu Benutzerkonte gib bitte des Wort in s Fäld unten yy ([[Special:Captcha/help|Frogen oder Probläm?]]):',
+ 'fancycaptcha-create' => 'Zum d Syten aalege gib des Wort in s Fäld unten yy. [[Special:Captcha/help|(Frogen oder Probläm?)]]',
+ 'fancycaptcha-edit' => 'Zum d Syte bearbeite gib des Wort in s Fäld unten yy. [[Special:Captcha/help|(Frogen oder Probläm?)]]',
+ 'fancycaptcha-sendemail' => 'As Schutz gege e automatischs Spamming, gib bitte des Wort in s Fäld unten yy ([[Special:Captcha/help|meh Informatione]]):',
+);
+
+/** Hebrew (עברית)
+ * @author Amire80
+ * @author Rotem Liss
+ */
+$messages['he'] = array(
+ 'fancycaptcha-addurl' => '×¢×¨×™×›×ª×›× ×›×•×œ×œ×ª ×§×™×©×•×¨×™× ×—×™×¦×•× ×™×™× ×—×“×©×™×.
+×›×”×’× ×” מפני ספ×× ×וטומטי, ×× × ×”×§×œ×™×“×• ×ת ×”×ž×™×œ×™× ×”×ž×•×¤×™×¢×•×ª להלן בתיבה ([[Special:Captcha/help|מידע נוסף]]):',
+ 'fancycaptcha-badlogin' => '×›×”×’× ×” מפני פריצת סיסמ×ות ×וטומטית, ×× × ×”×§×œ×™×“×• ×ת ×”×ž×™×œ×™× ×”×ž×•×¤×™×¢×•×ª להלן בתיבה ([[Special:Captcha/help|מידע נוסף]]):',
+ 'fancycaptcha-createaccount' => '×›×”×’× ×” מפני יצירת חשבונות ×וטומטית, ×× × ×”×§×œ×™×“×• ×ת ×”×ž×™×œ×™× ×”×ž×•×¤×™×¢×•×ª להלן בתיבה ([[Special:Captcha/help|מידע נוסף]]):',
+ 'fancycaptcha-create' => 'כדי ליצור ×ת הדף, ×× × ×”×§×œ×™×“×• ×ת ×”×ž×™×œ×™× ×”×ž×•×¤×™×¢×•×ª להלן בתיבה ([[Special:Captcha/help|מידע נוסף]]):',
+ 'fancycaptcha-edit' => 'כדי לערוך ×ת הדף, ×× × ×”×§×œ×™×“×• ×ת ×”×ž×™×œ×™× ×”×ž×•×¤×™×¢×•×ª להלן בתיבה ([[Special:Captcha/help|מידע נוסף]]):',
+ 'fancycaptcha-sendemail' => 'כדי לעזור להתגונן מפני שליחת זבל ×וטומטית, ×× × ×”×›× ×™×¡×• ×ת ×”×ž×™×œ×™× ×©×ž×•×¤×™×¢×•×ª בתיבה למטה ([[Special:Captcha/help|מידע נוסף]]):',
+);
+
+/** Hindi (हिनà¥à¤¦à¥€)
+ * @author Kaustubh
+ */
+$messages['hi'] = array(
+ 'fancycaptcha-addurl' => 'आपके बदलावोंमें नयी बाहरी कड़ीयाठहैं।
+अपनेआप होनेवाले संपादनोंसे बचाव के लिये, नीचे दिखनेवाले शबà¥à¤¦ दिये हà¥à¤ बकà¥à¤¸à¥‡à¤®à¥‡à¤‚ भरें ([[Special:Captcha/help|अधिक ज़ानकारी]]):',
+ 'fancycaptcha-badlogin' => 'अपनेआप होनेवाले कूटशबà¥à¤¦ की चोरी से बचाव के लिये, नीचे दिखनेवाले शबà¥à¤¦ दिये हà¥à¤ बकà¥à¤¸à¥‡à¤®à¥‡à¤‚ भरें ([[Special:Captcha/help|अधिक ज़ानकारी]]):',
+ 'fancycaptcha-createaccount' => 'अपनेआप होने वाले सदसà¥à¤¯ पंजिकरण से बचाव के लिये, नीचे दिखनेवाले शबà¥à¤¦ दिये हà¥à¤ बकà¥à¤¸à¥‡à¤®à¥‡à¤‚ भरें ([[Special:Captcha/help|अधिक ज़ानकारी]]):',
+ 'fancycaptcha-create' => 'यह पृषà¥à¤  बनाने के लिये, नीचे दिखने वाले अकà¥à¤·à¤° टेकà¥à¤¸à¥à¤Ÿ बकà¥à¤¸à¥‡à¤®à¥‡à¤‚ लिखें ([[Special:Captcha/help|अधिक ज़ानकारी]]):',
+ 'fancycaptcha-edit' => 'यह पृषà¥à¤  बदलने के लिये, नीचे दिखने वाले अकà¥à¤·à¤° टेकà¥à¤¸à¥à¤Ÿ बकà¥à¤¸à¥‡à¤®à¥‡à¤‚ लिखें ([[Special:Captcha/help|अधिक ज़ानकारी]]):',
+);
+
+/** Croatian (Hrvatski)
+ * @author SpeedyGonsales
+ */
+$messages['hr'] = array(
+ 'fancycaptcha-addurl' => 'Vaše uređivanje sadrži nove vanjske poveznice. Kao zaštitu od automatskog spama,
+molimo unesite slova koja vidite na slici dolje: ([[Special:Captcha/help|Pomoć]])',
+ 'fancycaptcha-badlogin' => 'Da se sprijeÄi automatiziranje pogaÄ‘anja lozinki, molimo unesite
+slova koja vidite na slici dolje: <br />([[Special:Captcha/help|Pomoć]])',
+ 'fancycaptcha-createaccount' => 'Kao zaÅ¡titu od automatskog otvaranja raÄuna, pri otvaranju raÄuna trebate
+unijeti slova koja vidite na slici: <br />([[Special:Captcha/help|Pomoć]])',
+ 'fancycaptcha-create' => 'Da bi stvorili novu stranicu, molimo unesite
+slova koja vidite na slici dolje: <br />([[Special:Captcha/help|Pomoć]])',
+ 'fancycaptcha-edit' => 'Da bi uređivali ovu stranicu, molimo unesite slova koja vidite na slici dolje: <br />([[Special:Captcha/help|Pomoć]])',
+ 'fancycaptcha-sendemail' => 'Da bi ste nam pomogli protiv automatskog spama, molimo unesite rijeÄi koje su prikazane ispod u okvir ([[Special:Captcha/help|viÅ¡e informacija]]):',
+);
+
+/** Upper Sorbian (Hornjoserbsce)
+ * @author Michawiki
+ */
+$messages['hsb'] = array(
+ 'fancycaptcha-addurl' => 'W twojej zmÄ›nje su nowe eksterne wotkazy. Jako Å¡kitna naprawa pÅ™ećiwo awtomatiskemu spamej zapodaj proÅ¡u sćěhowace znamjeÅ¡ka do kašćika ([[Special:Captcha/help|Äehodla?]]).',
+ 'fancycaptcha-badlogin' => 'Jako Å¡kitna naprawa pÅ™ećiwo awtomatiskemu zadobywanju do wužiwarskich kontow zapodaj proÅ¡u sćěhowace znamjeÅ¡ka do kašćika ([[Special:Captcha/help|Äehodla?]]):',
+ 'fancycaptcha-createaccount' => 'Jako Å¡kitna naprawa pÅ™ećiwo awtomatiskemu wutworjenju wužiwarskich kontow zapodaj proÅ¡u sćěhowace znamjeÅ¡ka do kašćika ([[Special:Captcha/help|Äehodla?]]):',
+ 'fancycaptcha-create' => 'Zo by stronu wutworić móhÅ‚ zapodaj proÅ¡u sćěhowace znamjeÅ¡ka do kašćika ([[Special:Captcha/help|Äehodla?]]):',
+ 'fancycaptcha-edit' => 'Zo by stronu wobdźěłować móhÅ‚ zapodaj proÅ¡u sćěhowace znamjeÅ¡ka do kašćika ([[Special:Captcha/help|Äehodla?]]):',
+ 'fancycaptcha-sendemail' => 'Za škit přećiwo awtomatiskemu spamowanju, zapodaj prošu słowa, kotrež so deleka w kašćiku jewi ([[Special:Captcha/help|dalše informacije]]):',
+);
+
+/** Hungarian (Magyar)
+ * @author Adam78
+ * @author Dorgan
+ * @author Glanthor Reviol
+ */
+$messages['hu'] = array(
+ 'fancycaptcha-addurl' => 'A szerkesztésed új külső hivatkozásokat tartalmaz. Az automatizált spamek megelőzése miatt kérjük, hogy add meg a lenti keretben olvasható szavakat ([[Special:Captcha/help|további segítség]]):',
+ 'fancycaptcha-badlogin' => 'Hogy az automatizált jelszópróbálkozásokat megelőzzük, kérjük, hogy add meg a lenti keretben olvasható szavakat ([[Special:Captcha/help|további segítség]]):',
+ 'fancycaptcha-createaccount' => 'A felhasználói fiókok automatizált létrehozásának elkerülésére, kérlek, írd be az alább megjelenő szót a szövegdobozba ([[Special:Captcha/help|segítség]]):',
+ 'fancycaptcha-create' => 'A lap létrehozásához kérjük, hogy add meg a lenti keretben olvasható szavakat ([[Special:Captcha/help|további segítség]]):',
+ 'fancycaptcha-edit' => 'A szerkesztésed új külső linkeket tartalmaz. A spam-robotok elleni védekezés elősegítésére kérlek írd be az alább megjelenő szót a szövegdobozba ([[Special:Captcha/help|segítség]]):',
+ 'fancycaptcha-sendemail' => 'Hogy segíts az automatikus spammelés elleni védekezésben, kérünk írd be az alábbi szavakat a szövegdobozba ([[Special:Captcha/help|segítség]]):',
+);
+
+/** Interlingua (Interlingua)
+ * @author McDutchie
+ */
+$messages['ia'] = array(
+ 'fancycaptcha-addurl' => 'Tu modification include nove ligamines externe.
+Como protection contra le spam automatic, per favor entra le parolas que appare infra in le quadro ([[Special:Captcha/help|plus info]]):',
+ 'fancycaptcha-badlogin' => 'Como protection contra le piratage automatic de contrasignos, per favor entra le parolas que appare infra in le quadro ([[Special:Captcha/help|plus info]]):',
+ 'fancycaptcha-createaccount' => 'Como protection contra le creation automatic de contos, per favor entra le parolas que appare infra in le quadro ([[Special:Captcha/help|plus info]]):',
+ 'fancycaptcha-create' => 'Pro crear le pagina, per favor entra le parolas que appare infra in le quadro ([[Special:Captcha/help|plus info]]):',
+ 'fancycaptcha-edit' => 'Pro modificar iste pagina, per favor entra le parolas que appare infra in le quadro ([[Special:Captcha/help|plus info]]):',
+ 'fancycaptcha-sendemail' => 'Pro adjutar nos in le protection contra le spam automatic, per favor entra le parolas que appare hic infra in le quadro ([[Special:Captcha/help|plus info]]):',
+);
+
+/** Indonesian (Bahasa Indonesia)
+ * @author Bennylin
+ * @author IvanLanin
+ * @author Iwan Novirion
+ */
+$messages['id'] = array(
+ 'fancycaptcha-addurl' => 'Suntingan Anda mencantumkan pranala luar baru. Untuk pelindungan terhadap spam otomatis, harap masukkan kata di bawah ini ke dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):',
+ 'fancycaptcha-badlogin' => 'Sebagai pelindungan terhadap pemecah kata kunci otomatis, harap masukkan kata di bawah ini ke dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):',
+ 'fancycaptcha-createaccount' => 'Untuk pelindungan terhadap pembuatan akun otomatis, tolong masukkan kata di bawah ini ke dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):',
+ 'fancycaptcha-create' => 'Untuk membuat halaman, silahkan masukkan kata-kata yang muncul di bawah ini ke dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):',
+ 'fancycaptcha-edit' => 'Untuk menyunting halaman ini, silahkan masukkan kata-kata yang muncul di bawah ini ke dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):',
+ 'fancycaptcha-sendemail' => 'Sebagai pelindungan terhadap spam otomatis, silahkan masukkan kata-kata yang muncul di bawah ini ke dalam kotak yang tersedia ([[Special:Captcha/help|info lengkap]]):',
+);
+
+/** Italian (Italiano)
+ * @author Beta16
+ * @author BrokenArrow
+ * @author Darth Kule
+ */
+$messages['it'] = array(
+ 'fancycaptcha-addurl' => "La modifica richiesta aggiunge dei collegamenti esterni alla pagina; come misura precauzionale contro l'inserimento automatico di spam, si prega di inserire nella casella sottostante le parole che compaiono di seguito ([[Special:Captcha/help|come funziona?]]):",
+ 'fancycaptcha-badlogin' => 'Come misura precauzionale contro i tentativi di forzatura automatica della password, si prega di inserire nella casella sottostante le parole che compaiono di seguito ([[Special:Captcha/help|come funziona?]]):',
+ 'fancycaptcha-createaccount' => 'Come misura precauzionale contro i tentativi di creazione automatica degli account, si prega di inserire nella casella sottostante le parole che compaiono di seguito ([[Special:Captcha/help|come funziona?]]):',
+ 'fancycaptcha-create' => 'Per creare la pagina si prega di inserire nella casella sottostante le parole che compaiono nella casella di seguito ([[Special:Captcha/help|come funziona?]]):',
+ 'fancycaptcha-edit' => 'Per modificare questa pagina si prega di inserire nella casella sottostante le parole che compaiono di seguito ([[Special:Captcha/help|come funziona?]]):',
+ 'fancycaptcha-sendemail' => 'Come misura precauzionale nei confronti dei messaggi di spam automatici, si prega di inserire nella casella sottostante le parole che compaiono di seguito ([[Special:Captcha/help|come funziona?]]):',
+);
+
+/** Japanese (日本語)
+ * @author Aotake
+ * @author Fryed-peach
+ * @author Marine-Blue
+ */
+$messages['ja'] = array(
+ 'fancycaptcha-desc' => 'Confirm Edit 用ã®è£…飾的㪠CAPTCHA 生æˆå™¨',
+ 'fancycaptcha-addurl' => 'ã‚ãªãŸã®ç·¨é›†ã§æ–°ãŸãªå¤–部リンクãŒè¿½åŠ ã•ã‚Œã¦ã„ã¾ã™ã€‚
+自動化スクリプトã«ã‚ˆã‚‹ã‚¹ãƒ‘ム行為防止ã®ãŸã‚ã€ä»¥ä¸‹ã®ãƒœãƒƒã‚¯ã‚¹ã«è¡¨ç¤ºã•ã‚Œã‚‹ç¢ºèªç”¨ã®æ–‡å­—列を入力ã—ã¦ãã ã•ã„ ([[Special:Captcha/help|詳細]]):',
+ 'fancycaptcha-badlogin' => '自動化スクリプトã«ã‚ˆã‚‹ãƒ‘スワードクラック攻撃を防止ã™ã‚‹ãŸã‚ã€ä»¥ä¸‹ã®ãƒœãƒƒã‚¯ã‚¹ã«è¡¨ç¤ºã•ã‚Œã‚‹ç¢ºèªç”¨ã®æ–‡å­—列を入力ã—ã¦ãã ã•ã„ ([[Special:Captcha/help|詳細]]):',
+ 'fancycaptcha-createaccount' => '自動化ã•ã‚ŒãŸã‚¢ã‚«ã‚¦ãƒ³ãƒˆä½œæˆã‚’防止ã™ã‚‹ãŸã‚ã€ä»¥ä¸‹ã®ãƒœãƒƒã‚¯ã‚¹ã«è¡¨ç¤ºã•ã‚Œã‚‹ç¢ºèªç”¨ã®æ–‡å­—列を入力ã—ã¦ãã ã•ã„ ([[Special:Captcha/help|詳細]]):',
+ 'fancycaptcha-create' => 'ページを作æˆã™ã‚‹ã«ã¯ä»¥ä¸‹ã®ãƒœãƒƒã‚¯ã‚¹ã«è¡¨ç¤ºã•ã‚Œã‚‹ç¢ºèªç”¨ã®æ–‡å­—列を入力ã—ã¦ãã ã•ã„ ([[Special:Captcha/help|詳細]]):',
+ 'fancycaptcha-edit' => 'ã“ã®ãƒšãƒ¼ã‚¸ã‚’編集ã™ã‚‹ã«ã¯ä»¥ä¸‹ã®ãƒœãƒƒã‚¯ã‚¹ã«è¡¨ç¤ºã•ã‚Œã‚‹ç¢ºèªç”¨ã®æ–‡å­—列を入力ã—ã¦ãã ã•ã„ ([[Special:Captcha/help|詳細]]):',
+ 'fancycaptcha-sendemail' => 'ロボットã«ã‚ˆã‚‹ã‚¹ãƒ‘ムを防ããŸã‚ã€ä»¥ä¸‹ã®ãƒœãƒƒã‚¯ã‚¹ã«è¡¨ç¤ºã•ã‚Œã‚‹ç¢ºèªç”¨ã®æ–‡å­—列を入力ã—ã¦ãã ã•ã„ ([[Special:Captcha/help|詳細]]):',
+);
+
+/** Jutish (Jysk)
+ * @author Huslåke
+ */
+$messages['jut'] = array(
+ 'fancycaptcha-addurl' => 'Din ændring tilføjer nye eksterne henvisninger. For at beskytte mod automatiseret spam, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'fancycaptcha-badlogin' => 'For at beskytte mod automatiske forsøg på at gætte kodeord, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'fancycaptcha-createaccount' => 'For at beskytte mod automatisk oprettelse af brugernavne, der bruges til spam, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'fancycaptcha-create' => 'For at oprette en ny side, skal du indtaste ordet som vises nedenfor i feltet under det. ([[Special:Captcha/help|mere information]]):',
+ 'fancycaptcha-edit' => 'or at redigere denne side
+([[Special:Captcha/help|more info]]):',
+);
+
+/** Javanese (Basa Jawa)
+ * @author Meursault2004
+ */
+$messages['jv'] = array(
+ 'fancycaptcha-addurl' => 'Suntingan panjenengan iku ngandhut pranala jaba anyar. Kanggo pangreksan marang spam otomatis, mangga lebokna tembung sing kapacak ing ngisor iki ing kothak sing wis cumepak ([[Special:Captcha/help|info jangkep]]):',
+ 'fancycaptcha-badlogin' => 'Kanggo ngréwangi pangreksan marang parengkahan kunci sandhi otomatis, mangga lebokna tembung sing kapacak ing ngisor iki ing kothak sing wis cumepak ([[Special:Captcha/help|info jangkep]]):',
+ 'fancycaptcha-createaccount' => 'Minangka pangreksan marang rékening (akun) sing digawé otomatis, tulung lebokna tembung sing kapacak ing ngisor iki ing kothak sing wis cumepak ([[Special:Captcha/help|info jangkep]]):',
+ 'fancycaptcha-create' => 'Suntingan panjenengan ngandhut pranala jaba anyar. Kanggo nggawé kaca iki, mangga isèkna tembung-tembung sing ana ing kothak iki ([[Special:Captcha/help|info jangkep]]):',
+ 'fancycaptcha-edit' => 'Suntingan panjenengan ngandhut pranala jaba anyar. Kanggo nyunting kaca iki, mangga isèkna tembung-tembung sing ana ing kothak iki ([[Special:Captcha/help|info jangkep]]):',
+);
+
+/** Georgian (ქáƒáƒ áƒ—ული)
+ * @author ITshnik
+ */
+$messages['ka'] = array(
+ 'fancycaptcha-addurl' => 'თქვენი ცვლილებრშეიცáƒáƒ•áƒ¡ áƒáƒ®áƒáƒš გáƒáƒ áƒ” ბმულებს.
+áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ სპáƒáƒ›áƒ˜áƒœáƒ’ისგáƒáƒœ თáƒáƒ•áƒ“áƒáƒªáƒ•áƒ˜áƒ¡ მიზნით, გთხáƒáƒ•áƒ—, შეიყვáƒáƒœáƒáƒ— ქვემáƒáƒ— მáƒáƒªáƒ”მული სიტყვები ყუთში ([[Special:Captcha/help|მეტი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ]]):',
+ 'fancycaptcha-badlogin' => 'პáƒáƒ áƒáƒšáƒ”ბის áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ გáƒáƒ¢áƒ”ხვისგáƒáƒœ თáƒáƒ•áƒ“áƒáƒªáƒ•áƒ˜áƒ¡ მიზნით, გთხáƒáƒ•áƒ—, შეიყვáƒáƒœáƒáƒ— ქვემáƒáƒ— მáƒáƒªáƒ”მული სიტყვები ყუთში ([[Special:Captcha/help|მეტი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ]]):',
+);
+
+/** Kara-Kalpak (Qaraqalpaqsha)
+ * @author Atabek
+ */
+$messages['kaa'] = array(
+ 'fancycaptcha-createaccount' => "Jan'a akkauntlardın' avtomatik jaratılıwının' aldın alıw ushın, to'mendegi
+ko'rsetilgen so'zlerdi kiritin'([[{{ns:special}}:Captcha/help|ko'birek mag'lıwmat]]):",
+);
+
+/** Kazakh (Arabic script) (‫قازاقشا (تٴوتە)‬) */
+$messages['kk-arab'] = array(
+ 'fancycaptcha-addurl' => 'تٷزەتۋٸڭٸزدە جاڭا سىرتقى سٸلتەمەلەر بار ەكەن. ٶزدٸك تٷردە «سپام» جاسالۋىنان قورعانۋ ٷشٸن,
+تٶمەندەگٸ كٶرسەتٸلگەن سٶزدەردٸ اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):',
+ 'fancycaptcha-badlogin' => 'قۇپييا سٶزدٸ ٶزدٸكتٸ بۇزدىرۋدان قورعانۋ ٷشٸن, تٶمەندەگٸ
+كٶرسەتٸلگەن سٶزدەردٸ اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):',
+ 'fancycaptcha-createaccount' => 'جاڭا تٸركەلگٸ ٶزدٸكتٸ جاسالۋىنان قورعانۋ ٷشٸن, تٶمەندەگٸ
+كٶرسەتٸلگەن سٶزدەردٸ اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):',
+ 'fancycaptcha-create' => 'تٷزەتۋٸڭٸزدە جاڭا سىرتقى سٸلتەمەلەر بار ەكەن. ٶزدٸك تٷردە «سپام» جاسالۋىنان قورعانۋ ٷشٸن,
+تٶمەندەگٸ كٶرسەتٸلگەن سٶزدەردٸ اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):',
+ 'fancycaptcha-edit' => 'تٷزەتۋٸڭٸزدە جاڭا سىرتقى سٸلتەمەلەر بار ەكەن. ٶزدٸك تٷردە «سپام» جاسالۋىنان قورعانۋ ٷشٸن,
+تٶمەندەگٸ كٶرسەتٸلگەن سٶزدەردٸ اۋماققا ەنگٸزٸڭٸز ([[{{ns:special}}:Captcha/help|كٶبٸرەك اقپارات]]):',
+);
+
+/** Kazakh (Cyrillic) (Қазақша (Cyrillic)) */
+$messages['kk-cyrl'] = array(
+ 'fancycaptcha-addurl' => 'Түзетуіңізде жаңа Ñыртқы Ñілтемелер бар екен. Өздік түрде «Ñпам» жаÑалуынан қорғану үшін,
+төмендегі көрÑетілген Ñөздерді аумаққа енгізіңіз ([[{{ns:special}}:Captcha/help|көбірек ақпарат]]):',
+ 'fancycaptcha-badlogin' => 'ÒšÒ±Ð¿Ð¸Ñ Ñөзді өздікті бұздырудан қорғану үшін, төмендегі
+көрÑетілген Ñөздерді аумаққа енгізіңіз ([[{{ns:special}}:Captcha/help|көбірек ақпарат]]):',
+ 'fancycaptcha-createaccount' => 'Жаңа тіркелгі өздікті жаÑалуынан қорғану үшін, төмендегі
+көрÑетілген Ñөздерді аумаққа енгізіңіз ([[{{ns:special}}:Captcha/help|көбірек ақпарат]]):',
+ 'fancycaptcha-create' => 'Түзетуіңізде жаңа Ñыртқы Ñілтемелер бар екен. Өздік түрде «Ñпам» жаÑалуынан қорғану үшін,
+төмендегі көрÑетілген Ñөздерді аумаққа енгізіңіз ([[{{ns:special}}:Captcha/help|көбірек ақпарат]]):',
+ 'fancycaptcha-edit' => 'Түзетуіңізде жаңа Ñыртқы Ñілтемелер бар екен. Өздік түрде «Ñпам» жаÑалуынан қорғану үшін,
+төмендегі көрÑетілген Ñөздерді аумаққа енгізіңіз ([[{{ns:special}}:Captcha/help|көбірек ақпарат]]):',
+);
+
+/** Kazakh (Latin) (Қазақша (Latin)) */
+$messages['kk-latn'] = array(
+ 'fancycaptcha-addurl' => 'Tüzetwiñizde jaña sırtqı siltemeler bar eken. Özdik türde «spam» jasalwınan qorğanw üşin,
+tömendegi körsetilgen sözderdi awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):',
+ 'fancycaptcha-badlogin' => 'Qupïya sözdi özdikti buzdırwdan qorğanw üşin, tömendegi
+körsetilgen sözderdi awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):',
+ 'fancycaptcha-createaccount' => 'Jaña tirkelgi özdikti jasalwınan qorğanw üşin, tömendegi
+körsetilgen sözderdi awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):',
+ 'fancycaptcha-create' => 'Tüzetwiñizde jaña sırtqı siltemeler bar eken. Özdik türde «spam» jasalwınan qorğanw üşin,
+tömendegi körsetilgen sözderdi awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):',
+ 'fancycaptcha-edit' => 'Tüzetwiñizde jaña sırtqı siltemeler bar eken. Özdik türde «spam» jasalwınan qorğanw üşin,
+tömendegi körsetilgen sözderdi awmaqqa engiziñiz ([[{{ns:special}}:Captcha/help|köbirek aqparat]]):',
+);
+
+/** Khmer (ភាសាážáŸ’មែរ)
+ * @author Thearith
+ * @author គីមស៊្រុន
+ */
+$messages['km'] = array(
+ 'fancycaptcha-addurl' => 'កំណែប្រែរបស់អ្នកមានážáŸ†ážŽáž—្ជាប់ážáž¶áž„ក្រៅ។
+
+ដើម្បីការពារពីស្ប៉ាម(spam)ស្វáŸáž™áž”្រវážáŸ’ážáž· សូមបញ្ជូលពាក្យážáž¶áž„ក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|áž–áŸážáŸŒáž˜áž¶áž“បន្ážáŸ‚ម]])៖',
+ 'fancycaptcha-badlogin' => 'ដើម្បីការពារការបំបែកពាក្យសំងាážáŸ‹ážŠáŸ„យស្វáŸáž™áž”្រវážáŸ’ážáž· សូមបញ្ជូលពាក្យážáž¶áž„ក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|áž–áŸážáŸŒáž˜áž¶áž“បន្ážáŸ‚ម]])៖',
+ 'fancycaptcha-createaccount' => 'ដើម្បីការពារការបង្កើážáž‚ណនីដោយស្វáŸáž™áž”្រវážáŸ’ážáž· សូមបញ្ជូលពាក្យážáž¶áž„ក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|áž–áŸážáŸŒáž˜áž¶áž“បន្ážáŸ‚ម]])៖',
+ 'fancycaptcha-create' => 'ដើម្បីបង្កើážáž‘ំពáŸážšáž“áŸáŸ‡ សូមបញ្ជូលពាក្យážáž¶áž„ក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|áž–áŸážáŸŒáž˜áž¶áž“បន្ážáŸ‚ម]])៖',
+ 'fancycaptcha-edit' => 'ដើម្បីកែប្រែទំពáŸážšáž“áŸáŸ‡ សូមបញ្ជូលពាក្យážáž¶áž„ក្រោមទៅក្នុងប្រអប់ ([[Special:Captcha/help|áž–áŸážáŸŒáž˜áž¶áž“បន្ážáŸ‚ម]])៖',
+);
+
+/** Korean (한국어)
+ * @author Kwj2772
+ * @author ToePeu
+ */
+$messages['ko'] = array(
+ 'fancycaptcha-addurl' => 'íŽ¸ì§‘ì´ ìƒˆë¡œìš´ 외부 ë§í¬ë¥¼ í¬í•¨í•˜ê³  있습니다.
+ìžë™í™”ëœ ìŠ¤íŒ¸ì„ ë§‰ê¸° 위해 아래 ìƒìžì˜ 단어를 ì ì–´ì£¼ì„¸ìš”. ([[Special:Captcha/help|ë” ë§Žì€ ì •ë³´]])',
+ 'fancycaptcha-badlogin' => 'ìžë™í™”ëœ ì•”í˜¸ê¹¨ê¸°ë¥¼ 막기 위해서, 아래 ìƒìžì— 있는 단어를 입력해 주시기 ë°”ëžë‹ˆë‹¤. ([[Special:Captcha/help|추가 ë„움ë§]]):',
+ 'fancycaptcha-createaccount' => 'ìžë™í™”ëœ ê³„ì • ìƒì„±ì„ 막기 위해서, 아래 ìƒìžì— 있는 단어를 입력해 주시기 ë°”ëžë‹ˆë‹¤. ([[Special:Captcha/help|추가 ë„움ë§]]):',
+ 'fancycaptcha-create' => 'ì´ ë¬¸ì„œë¥¼ ìƒì„±í•˜ì‹œë ¤ë©´, ì•„ëž˜ì˜ ìƒìž ì•ˆì— ìžˆëŠ” 낱ë§ì„ 입력해주세요 ([[Special:Captcha/help|ìžì„¸í•œ ì •ë³´]]):',
+ 'fancycaptcha-edit' => 'ì´ ë¬¸ì„œë¥¼ 편집하시려면, ì•„ëž˜ì˜ ìƒìž ì•ˆì— ìžˆëŠ” 낱ë§ì„ 입력해주세요 ([[Special:Captcha/help|ìžì„¸í•œ ì •ë³´]]):',
+ 'fancycaptcha-sendemail' => 'ìžë™í™”ëœ ìŠ¤íŒ¸ì„ ë°©ì§€í•˜ê¸° 위해, 아래 ìƒìžì— 있는 단어를 입력해 주시기 ë°”ëžë‹ˆë‹¤. ([[Special:Captcha/help|추가 ë„움ë§]]):',
+);
+
+/** Colognian (Ripoarisch)
+ * @author Purodha
+ */
+$messages['ksh'] = array(
+ 'fancycaptcha-desc' => 'Määt e nett Käptsche för dä <code lang="en">Confirm Edit</code> Projramm-Zohsatz',
+ 'fancycaptcha-addurl' => 'Do häß neu Lingks op frembde Websigge dobei jedonn.
+Mer schöze uns Wiki jäje automatesche SPAM, dröm
+don di Wööter en dat Käßje endraare. (Verklierung)',
+ 'fancycaptcha-badlogin' => 'Mer schöze Metmaacher en unsem Wiki jäje automatesche
+Paßwoot-Knackerei, dröm don di Wööt onge en dat Käßje
+endraare. (Verklierung)',
+ 'fancycaptcha-createaccount' => 'Mer schöze uns Wiki dojäje, dat mer en Masse automatesch
+Metmaacher aanmeldt. Dröm beß esu joot un
+don di Wööt onge en dat Käßje endraare. (Verklierung)',
+ 'fancycaptcha-create' => 'Öm di Sigg neu aanzelääje, don di Wööt onge en dat Käßje endraare. (Verklierung)',
+ 'fancycaptcha-edit' => 'Öm de Sigg ze ändere, don di Wööt onge en dat Käßje endraare. ([[Special:Captcha/help|Verklierung]])',
+ 'fancycaptcha-sendemail' => 'Öm et Wiki jääje automattesch enjedraare SPAM ze schötze,
+bes esu joot, donn di Wööter enjävve, di en däm Käßje heh dronger shtonn.
+([[Special:Captcha/help|Mieh Enfommazjuhne]])',
+);
+
+/** Latin (Latina)
+ * @author SPQRobin
+ */
+$messages['la'] = array(
+ 'fancycaptcha-addurl' => 'Emendatione tua insunt nexus externi; ut spam automaticum vitemus, necesse est tibi in capsam inscribere verba quae sub capsa monstrantur ([[Special:Captcha/help|Quidst illud?]]):',
+ 'fancycaptcha-badlogin' => 'Ut vitemus ne tesserae frangantur, necesse est tibi in capsam inscribere verba quae sub capsa monstrantur ([[Special:Captcha/help|Quidst illud?]]):',
+ 'fancycaptcha-createaccount' => 'Ut creationem rationum automaticam vitemus, necesse est tibi in capsam inscribere verba quae sub capsa monstrantur ([[Special:Captcha/help|Quidst illud?]]):',
+ 'fancycaptcha-create' => 'Ad paginam creandum, necesse est tibi in capsam inscribere verba quae sub capsa monstrantur ([[Special:Captcha/help|Quidst illud?]]):',
+ 'fancycaptcha-edit' => 'Ad hanc paginam recensendum, necesse est tibi in capsam inscribere verba quae sub capsa monstrantur ([[Special:Captcha/help|Quidst illud?]]):',
+);
+
+/** Luxembourgish (Lëtzebuergesch)
+ * @author Les Meloures
+ * @author Robby
+ */
+$messages['lb'] = array(
+ 'fancycaptcha-addurl' => 'An Ärer Ännerung sinn nei extern Linken.
+
+Fir ze hellëfen, géint automatiséierte Spam virzegoen, gitt w.e.g. déi Wierder an, déi an der Këscht ënnendrënner stinn ([[Special:Captcha/help|méi Informatiounen]]):',
+ 'fancycaptcha-badlogin' => "Fir ze hellëfe fir d'automatiséiert Hacke vu Passwierder méi schwéier ze maachen, gitt w.e.g. déi Wierder an, déi an der Këscht ënnendrënner stinn ([[Special:Captcha/help|méi Informatiounen]]):",
+ 'fancycaptcha-createaccount' => "Fir géint d'automatiséiert Opmaache vu Benotzerkonte virzegoen, gitt w.e.g. déi Wierder an, déi an der Këscht ënnedrënner stinn ([[Special:Captcha/help|méi Informatiounen]]):",
+ 'fancycaptcha-create' => 'Fir dës Säit unzeleeën, gitt w.e.g. déi Wierder an, déi an der Këscht ënnendrënner stinn ([[Special:Captcha/help|méi Informatiounen]]):',
+ 'fancycaptcha-edit' => "Fir dës Säit z'änneren, gitt w.e.g. déi Wierder an, déi an der Këscht ënnendrënner stinn ([[Special:Captcha/help|méi Informatiounen]]):",
+ 'fancycaptcha-sendemail' => 'Fir eis géint automatescht Spammen ze schützen, gitt w.e.g. déi Wierder déi an der Këscht ënnedrënner stinn an ([[Special:Captcha/help|méi Informatiounen]]):',
+);
+
+/** Limburgish (Limburgs)
+ * @author Matthias
+ */
+$messages['li'] = array(
+ 'fancycaptcha-addurl' => 'Uw bewerking bevat nieuwe externe links. Voer alstublieft de woorden die
+hieronder verschijnen in het invoerveld in als bescherming tegen automatische spam ([[Special:Captcha/help|meer informatie]]):',
+ 'fancycaptcha-badlogin' => 'Voer alstublieft de woorden die hieronder verschijnen in het invoerveld in als bescherming tegen het automatisch kraken van wachtwoorden ([[Special:Captcha/help|meer informatie]]):',
+ 'fancycaptcha-createaccount' => 'Voer alstublieft de woorden die hieronder verschijnen in het invoerveld in
+ter bescherming tegen het automatisch aanmaken van gebruikers ([[Special:Captcha/help|meer informatie]]):',
+ 'fancycaptcha-create' => 'Uw bewerking bevat nieuwe externe links. Voer alstublieft de woorden die
+hieronder verschijnen in het invoerveld in als bescherming tegen automatische spam ([[Special:Captcha/help|meer informatie]]):',
+ 'fancycaptcha-edit' => 'Uw bewerking bevat nieuwe externe links. Voer alstublieft de woorden die
+hieronder verschijnen in het invoerveld in als bescherming tegen automatische spam ([[Special:Captcha/help|mie informatie]]):',
+);
+
+/** Lao (ລາວ) */
+$messages['lo'] = array(
+ 'fancycaptcha-addurl' => 'àºàº²àº™àº”ັດà»àºà»‰àº‚ອງທ່ານ ມີລິ້ງຄ໌ພາàºàº™àº­àº. ເພື່ອປ້ອງàºàº±àº™ ສະà»àº›àº¡àº­àº±àº”ຕະໂນມັດ, àºàº°àº¥àº¸àº™àº² ພິມຄຳສັບຂ້າງລຸ່ມນີ້ ໃສ່ໃນàºàº±àºš ([[Special:Captcha/help|ຂà»à»‰àº¡àº¹àº™à»€àºžàºµà»ˆàº¡àº•àº·à»ˆàº¡]]):',
+ 'fancycaptcha-badlogin' => 'ເພື່ອຊ່ອàºàº›à»‰àº­àº‡àºàº±àº™ àºàº²àº™àºªàº·àºšàº„ົ້ນຫາລະຫັດຜ່ານà»àºšàºšàº­àº±àº”ຕະໂນມັດ, àºàº°àº¥àº¸àº™àº² ພິມຄຳສັບ ຂ້າງລຸ່ມນີ້ ໃສ່ໃນàºàº±àºš ([[Special:Captcha/help|ຂà»à»‰àº¡àº¹àº™à»€àºžàºµà»ˆàº¡àº•àº·à»ˆàº¡]]):',
+ 'fancycaptcha-createaccount' => 'ເພື່ອປ້ອງàºàº±àº™ àºàº²àº™àºªà»‰àº²àº‡àºšàº±àº™àºŠàºµà»àºšàºšàº­àº±àº”ຕະໂນມດ, àºàº°àº¥àº¸àº™àº²àºžàº´àº¡ ຄຳສັບຂ້າງລຸ່ມນີ້​ ໃສ່ໃນàºàº±àºš ([[Special:Captcha/help|ຂà»à»‰àº¡àº¹àº™à»€àºžàº´à»ˆàº¡àº•àº·àº¡]]):',
+ 'fancycaptcha-create' => 'àºàº°àº¥àº¸àº™àº² ພິມຄຳສັບຂ້າງລຸ່ມນີ້​ ໃສ່ໃນàºàº±àºš ເພື່ອສ້າງໜ້ານີ້ ([[Special:Captcha/help|more info]]):',
+ 'fancycaptcha-edit' => 'àºàº°àº¥àº¸àº™àº² ພິມຄຳສັບຂ້າງລຸ່ມນີ້ ໃສ່ໃນàºàº±àºš ເພື່ອ ດັດà»àºà»‰à»œà»‰àº²àº™àºµà»‰ ([[Special:Captcha/help|ຂà»à»‰àº¡àº¹àº™à»€àºžàºµà»ˆàº¡àº•àº·à»ˆàº¡]]):',
+);
+
+/** Macedonian (МакедонÑки)
+ * @author Bjankuloski06
+ */
+$messages['mk'] = array(
+ 'fancycaptcha-desc' => 'Збогатен Ñоздавач CAPTCHA за потврда на уредувања',
+ 'fancycaptcha-addurl' => 'Вашето уредување вклучува нови надворешни врÑки.
+Со цел да Ñе заштитиме од автоматизиран Ñпам, внеÑете ги зборовите на Ñликичката подолу ([[Special:Captcha/help|повеќе информации]]):',
+ 'fancycaptcha-badlogin' => 'Со цел да Ñе заштитиме од автоматизирано пробивање на лозинки, внеÑете ги зборовите на Ñликичката подолу ([[Special:Captcha/help|повеќе информации]]):',
+ 'fancycaptcha-createaccount' => 'Со цел да Ñе заштитиме од автоматизирано Ñоздавање на Ñметки, внеÑете ги зборовите на Ñликичката подолу ([[Special:Captcha/help|повеќе информации]]):',
+ 'fancycaptcha-create' => 'За да Ñоздадете Ñтраница, внеÑете ги зборовите на Ñликичката подолу ([[Special:Captcha/help|повеќе информации]]):',
+ 'fancycaptcha-edit' => 'За да ја уредите Ñтраницава, внеÑете ги зборовите на Ñликичката подолу ([[Special:Captcha/help|повеќе информации]]):',
+ 'fancycaptcha-sendemail' => 'За да Ñе заштитиме од автоматизирано Ñпамирање, препишете ги зборовите од Ñликичката во полето подолу ([[Special:Captcha/help|повеќе информации]]):',
+);
+
+/** Malayalam (മലയാളം)
+ * @author Praveenp
+ * @author Shijualex
+ */
+$messages['ml'] = array(
+ 'fancycaptcha-addurl' => 'താങàµà´•à´³àµà´Ÿàµ† തിരàµà´¤àµà´¤à´²à´²à´¿àµ½ à´ªàµà´±à´‚ à´•à´£àµà´£à´¿à´•àµ¾ ഉൾപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.
+യാനàµà´¤àµà´°à´¿à´• à´¸àµà´ªà´¾à´®à´¿à´¨àµ†à´¤à´¿à´°àµ†à´¯àµà´³àµà´³ സം‌രകàµà´·à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† ഭാഗമായി, താഴെ കാണàµà´¨àµà´¨ വാകàµà´•àµà´•àµ¾ പെടàµà´Ÿà´¿à´¯à´¿àµ½ ടൈപàµà´ªàµ ചെയàµà´¯àµà´• ([[Special:Captcha/help|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
+ 'fancycaptcha-badlogin' => 'രഹസàµà´¯à´µà´¾à´•àµà´•àµ യാനàµà´¤àµà´°à´¿à´•à´®à´¾à´¯à´¿ പൊളികàµà´•àµà´¨àµà´¨à´¤àµ തടയàµà´¨àµà´¨à´¤à´¿à´¨àµà´±àµ† ഭാഗമായി, താഴെ കാണàµà´¨àµà´¨ വാകàµà´•àµà´•àµ¾ പെടàµà´Ÿà´¿à´¯à´¿àµ½ ടൈപàµà´ªàµ ചെയàµà´¯àµà´• ([[Special:Captcha/help|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
+ 'fancycaptcha-createaccount' => 'à´…à´‚à´—à´¤àµà´µà´‚ യാനàµà´¤àµà´°à´¿à´•à´®à´¾à´¯à´¿ സൃഷàµà´Ÿà´¿à´•àµà´•àµà´¨àµà´¨à´¤àµ തടയàµà´¨àµà´¨à´¤àµŠà´´à´¿à´µà´¾à´•àµà´•à´¾à´¨àµà´³àµà´³ സം‌രകàµà´·à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† ഭാഗമായി, താഴെ കാണàµà´¨àµà´¨ വാകàµà´•àµà´•àµ¾ പെടàµà´Ÿà´¿à´¯à´¿àµ½ ടൈപàµà´ªàµ ചെയàµà´¯àµà´• ([[Special:Captcha/help|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
+ 'fancycaptcha-create' => 'à´ˆ താൾ സൃഷàµà´Ÿà´¿à´•àµà´•àµà´µà´¾àµ» താഴെയàµà´³àµà´³ പെടàµà´Ÿà´¿à´¯à´¿àµ½ കാണàµà´¨àµà´¨ വാകàµà´•àµà´•àµ¾ ടൈപàµà´ªàµ ചെയàµà´¯àµà´• ([[Special:Captcha/help|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
+ 'fancycaptcha-edit' => 'à´ˆ താൾ തിരàµà´¤àµà´¤àµà´µà´¾àµ» ദയവായി താഴെ കാണàµà´¨àµà´¨ വാകàµà´•àµà´•àµ¾ പെടàµà´Ÿà´¿à´¯à´¿àµ½ ടൈപàµà´ªàµ ചെയàµà´¯àµà´• ([[Special:Captcha/help|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
+ 'fancycaptcha-sendemail' => 'യാനàµà´¤àµà´°à´¿à´•à´®à´¾à´¯ പാഴെഴàµà´¤àµà´¤àµ ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´²à´¿à´¨àµà´³àµà´³ à´ªàµà´°à´¤à´¿à´°àµ‹à´§à´®àµ†à´¨àµà´¨ നിലയിൽ, താഴെ കാണàµà´¨àµà´¨ വാകàµà´•àµà´•àµ¾ പെടàµà´Ÿà´¿à´¯à´¿àµ½ ടൈപàµà´ªàµ ചെയàµà´¯àµà´• ([[Special:Captcha/help|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
+);
+
+/** Marathi (मराठी)
+ * @author Kaustubh
+ */
+$messages['mr'] = array(
+ 'fancycaptcha-addurl' => 'तà¥à¤®à¤šà¥à¤¯à¤¾ संपादनात नवीन बाहà¥à¤¯ दà¥à¤µà¥‡ आहेत.
+आपोआप होणारà¥â€à¤¯à¤¾ संपादनांपासून बचावासाठी, खाली दिसणारे शबà¥à¤¦ दिलेलà¥à¤¯à¤¾ पृषà¥à¤ à¤ªà¥‡à¤Ÿà¥€ मधà¥à¤¯à¥‡ लिहा ([[Special:Captcha/help|अधिक माहिती]]):',
+ 'fancycaptcha-badlogin' => 'आपोआप होणारà¥â€à¤¯à¤¾ परवलीचà¥à¤¯à¤¾ शबà¥à¤¦à¤¾à¤šà¥à¤¯à¤¾ चोरीपासून वाचणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€, खाली दिसणारे शबà¥à¤¦ दिलेलà¥à¤¯à¤¾ पृषà¥à¤ à¤ªà¥‡à¤Ÿà¥€ मधà¥à¤¯à¥‡ लिहा ([[Special:Captcha/help|अधिक माहिती]]):',
+ 'fancycaptcha-createaccount' => 'आपोआप होणारà¥â€à¤¯à¤¾ सदसà¥à¤¯ नोंदणीपासून वाचणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€, खाली दिसणारे शबà¥à¤¦ दिलेलà¥à¤¯à¤¾ पृषà¥à¤ à¤ªà¥‡à¤Ÿà¥€ मधà¥à¤¯à¥‡ लिहा ([[Special:Captcha/help|अधिक माहिती]]):',
+ 'fancycaptcha-create' => 'हे पान तयार करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€, खाली दिसणारे शबà¥à¤¦ दिलेलà¥à¤¯à¤¾ पृषà¥à¤ à¤ªà¥‡à¤Ÿà¥€ मधà¥à¤¯à¥‡ लिहा ([[Special:Captcha/help|अधिक माहिती]]):',
+ 'fancycaptcha-edit' => 'हे पान संपादित करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€, खाली दिसणारे शबà¥à¤¦ दिलेलà¥à¤¯à¤¾ पृषà¥à¤ à¤ªà¥‡à¤Ÿà¥€ मधà¥à¤¯à¥‡ लिहा ([[Special:Captcha/help|अधिक माहिती]]):',
+);
+
+/** Malay (Bahasa Melayu)
+ * @author Anakmalaysia
+ * @author Aviator
+ */
+$messages['ms'] = array(
+ 'fancycaptcha-addurl' => 'Suntingan anda mengandungi pautan luar baru. Untuk membanteras kegiatan spam automatik, anda diminta mengisi huruf-huruf berikut dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'fancycaptcha-badlogin' => 'Untuk membanteras kegiatan meneka kata laluan secara automatik, anda diminta mengisi huruf-huruf berikut dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'fancycaptcha-createaccount' => 'Untuk membanteras kegiatan pembukaan akaun secara automatik, anda diminta mengisi huruf-huruf berikut dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'fancycaptcha-create' => 'Untuk mencipta laman ini, anda diminta mengisi huruf-huruf berikut dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'fancycaptcha-edit' => 'Untuk menyunting laman ini, anda diminta mengisi huruf-huruf berikut dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'fancycaptcha-sendemail' => 'Untuk membanteras kegiatan spam secara automatik, anda diminta mengisi huruf-huruf berikut dalam kotak yang disediakan ([[Special:Captcha/help|maklumat lanjut]]):',
+);
+
+/** Low German (Plattdüütsch)
+ * @author Slomox
+ */
+$messages['nds'] = array(
+ 'fancycaptcha-addurl' => 'In dien Ännern sünd ne’e Weblenken in.
+As Schutz gegen automaatsch Spam, geev disse Bookstavenreeg in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).',
+ 'fancycaptcha-badlogin' => 'As Schutz gegen Passwoord-Knackers, geev disse Bookstavenreeg in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).',
+ 'fancycaptcha-createaccount' => 'As Schutz gegen dat automaatsch Opstellen vun ne’e Brukerkonten, geev disse Bookstavenreeg in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).',
+ 'fancycaptcha-create' => 'Disse Sied nee optostellen, geev disse Bookstavenreeg in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).',
+ 'fancycaptcha-edit' => 'Disse Sied to ännern, geev disse Bookstavenreeg in dat Feld ünnen in ([[Special:Captcha/help|mehr Infos]]).',
+);
+
+/** Nedersaksisch (Nedersaksisch)
+ * @author Servien
+ */
+$messages['nds-nl'] = array(
+ 'fancycaptcha-addurl' => "Joew bewarking bevat uutgaonde verwiezingen.
+Um dit prejek te bescharmen tegen spam, mu-j 't woord dat hieronder steet invullen ([[Special:Captcha/help|hulpe]]):",
+ 'fancycaptcha-badlogin' => "Um disse webstee te beveiligen tegen 't kraken van wachwoorden, wö-j verzoch um de woorden dee-j hieronder zien in te vullen ([[Special:Captcha/help|hulpe]]):",
+ 'fancycaptcha-createaccount' => "Um disse wiki te bescharmen tegen 't autematisch anmaken van gebrukersprefielen mu-j 't woord hieronder invullen ([[Special:Captcha/help|hulpe]]):",
+ 'fancycaptcha-create' => "Um een pagina an te maken, mu-j 't woord dat hieronder steet invullen
+([[Special:Captcha/help|hulpe]]):",
+ 'fancycaptcha-edit' => 'Joew bewarking bevat nieje uutgaonde verwiezingen. Um disse wiki te bescharmen tegen ongewunste toevoegingen mu-j de woorden hieronder invullen ([[Special:Captcha/help|hulpe]]):',
+ 'fancycaptcha-sendemail' => "Voer de woorden dee hieronder staon in 't invoerveld in as bescharming tegen autematische ongewunste reclame ([[Special:Captcha/help|meer infermasie]]):",
+);
+
+/** Dutch (Nederlands)
+ * @author Siebrand
+ */
+$messages['nl'] = array(
+ 'fancycaptcha-desc' => "Generator voor opgedirkte captcha's voor ConfirmEdit",
+ 'fancycaptcha-addurl' => 'Uw bewerking bevat nieuwe externe verwijzingen.
+Voer de woorden die hieronder verschijnen in het invoerveld in als bescherming tegen automatische spam ([[Special:Captcha/help|meer informatie]]):',
+ 'fancycaptcha-badlogin' => 'Voer de woorden die hieronder verschijnen in het invoerveld in als bescherming tegen geautomatiseerde wachtwoordaanvallen ([[Special:Captcha/help|meer informatie]]):',
+ 'fancycaptcha-createaccount' => 'Voer de woorden die hieronder verschijnen in het invoerveld in ter bescherming tegen het geautomatiseerd aanmaken van gebruikers ([[Special:Captcha/help|meer informatie]]):',
+ 'fancycaptcha-create' => 'Voer de woorden die hieronder verschijnen in het invoerveld in om de pagina aan te maken ([[Special:Captcha/help|meer informatie]]):',
+ 'fancycaptcha-edit' => 'Voer de woorden die hieronder verschijnen in het invoerveld in om deze pagina te bewerken ([[Special:Captcha/help|meer informatie]]):',
+ 'fancycaptcha-sendemail' => 'Voer de woorden die hieronder verschijnen in het invoerveld in als bescherming tegen geautomatiseerde spam ([[Special:Captcha/help|meer informatie]]):',
+);
+
+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+ * @author Harald Khan
+ */
+$messages['nn'] = array(
+ 'fancycaptcha-addurl' => 'Endringa di inneheld nye utlenkjer.
+For å hjelpa oss med å unngå automatisert spam, ver venleg og skriv inn orda som kjem til syne i boksen under ([[Special:Captcha/help|meir informasjon]]):',
+ 'fancycaptcha-badlogin' => 'Skriv inn orda som kjem til syne i boksen nedanfor for å hjelpa oss med å unngå automatisert passordknekking ([[Special:Captcha/help|meir informasjon]]):',
+ 'fancycaptcha-createaccount' => 'Skriv inn orda som kjem til syne i boksen nedanfor for å hjelpa oss med å unngå automatisk kontooppretting ([[Special:Captcha/help|meir informasjon]]):',
+ 'fancycaptcha-create' => 'Skriv inn orda som kjem til syne i boksen nedanfor for å oppretta sida ([[Special:Captcha/help|meir informasjon]]):',
+ 'fancycaptcha-edit' => 'For å endra denne sida, ver venleg og skriv inn orda som kjem til syne i boksen nedanfor ([[Special:Captcha/help|meir informasjon]]):',
+);
+
+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+ * @author Harald Khan
+ * @author Jon Harald Søby
+ * @author Laaknor
+ */
+$messages['no'] = array(
+ 'fancycaptcha-addurl' => 'Din endring inkluderer nye eksterne lenker. For hjelpe oss å beskytte oss mot automatisk spam, vennligst skriv inn ordene som kommer opp i denne boksen ([[Special:Captcha/help|mer informasjon]]):',
+ 'fancycaptcha-badlogin' => 'Skriv inn ordene som dukker opp i boksen nedenfor for å hjelpe oss å beskytte oss mot passordtyveri ([[Special:Captcha/help|mer informasjon]]):',
+ 'fancycaptcha-createaccount' => 'Skriv inn ordene som dukker opp i boksen nedenfor for å hjelpe oss å beskytte oss mot automatisk kontoopprettelse ([[Special:Captcha/help|mer informasjon]]):',
+ 'fancycaptcha-create' => 'Skriv inn ordene som dukker opp i boksen nedenfor for å opprette siden ([[Special:Captcha/help|mer informasjon]]):',
+ 'fancycaptcha-edit' => 'For å endre denne siden, vennligst skriv inn ordene som dukker opp i boksen nedenfor ([[Special:Captcha/help|mer informasjon]]):',
+ 'fancycaptcha-sendemail' => 'For å beskytte mot automatisert spam så må du skrive ordene under inn i tekstboksen ([[Special:Captcha/help|mer informasjon]]):',
+);
+
+/** Occitan (Occitan)
+ * @author Cedric31
+ */
+$messages['oc'] = array(
+ 'fancycaptcha-desc' => "Generador d’imatges ''captcha'' antirobòts que demandan una confirmacion umana de las modificacions.",
+ 'fancycaptcha-addurl' => "Vòstra modificacion inclutz de ligams extèrnes novèls. Per verificar que s’agisson pas de spams automatics, epicatz los mots qu'apareisson dins la bóstia çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :",
+ 'fancycaptcha-badlogin' => 'Per ajudar a vos protegir contra lo piratatge de compte per de senhals automatics, mercés de picar los mots que s’afichan dins aquesta bóstia ([[Special:Captcha/help|Ajuda]]) :',
+ 'fancycaptcha-createaccount' => 'Coma proteccion contra las creacions de compte abusivas, picatz los mots çaijós dins la bóstia ([[Special:Captcha/help|mai d’entresenhas]]) :',
+ 'fancycaptcha-create' => "Vòstra modificacion inclutz de ligams extèrnes novèls. Per verificar que s’agisson pas de spams automatics, picatz los mots qu'apareisson dins la bóstia çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :",
+ 'fancycaptcha-edit' => "Vòstra modificacion inclutz de ligams extèrnes novèls. Per verificar que s’agís pas de spam automatic, picatz los mots qu'apareisson dins la bóstia çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :",
+ 'fancycaptcha-sendemail' => "Per tal de nos ajudar a prevenir lo spam automatic, entratz los mots qu'apareisson dins la bóstia çaijós ([[Special:Captcha/help|mai d’informacions]]) :",
+);
+
+/** Oriya (ଓଡ଼ିଆ)
+ * @author Psubhashish
+ */
+$messages['or'] = array(
+ 'fancycaptcha-createaccount' => 'ଆପେଆପେ ଖାତା ଖୋଲିବାକୠଅଟକାଇବା ପାଇଠଦୟାକରି à¬à¬¹à¬¿ ଘରଭିତରେ ଥିବା ଶବà­à¬¦à¬¸à¬¬à­à¬•à­ ତା ତଳେ ଥିବା ବାକà­à¬¸à¬°à­‡ ଟାଇପ କରନà­à¬¤à­ । ([[Special:Captcha/help|ଅଧିକ ଜାଣିବା]]):',
+);
+
+/** Polish (Polski)
+ * @author Sp5uhe
+ */
+$messages['pl'] = array(
+ 'fancycaptcha-desc' => 'Generator obrazka, którego odczytanie jest wymagane dla zatwierdzenia edycji.',
+ 'fancycaptcha-addurl' => 'Twoja edycja zawiera nowe linki zewnętrzne. Ze względu na ochronę przed zautomatyzowanym spamem prosimy o wpisanie słów, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|pomoc]]):',
+ 'fancycaptcha-badlogin' => 'Ze względu na zabezpieczenie przed automatycznym łamaniem haseł prosimy o wpisanie słów, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|pomoc]]):',
+ 'fancycaptcha-createaccount' => 'Ze względu na ochronę przed automatycznym spamem, aby się zarejestrować musisz wpisać słowo, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|pomoc]])',
+ 'fancycaptcha-create' => 'Aby utworzyć tę stronę, wpisz słowa, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|pomoc]]):',
+ 'fancycaptcha-edit' => 'Aby edytować tę stronę, wpisz słowa, które widzisz poniżej, do pola tekstowego ([[Special:Captcha/help|pomoc]]):',
+ 'fancycaptcha-sendemail' => 'Zabezpieczenie przed automatycznie dodawanym spamem. Wprowadzić słowa widoczne w poniższym prostokącie ([[Special:Captcha/help|więcej informacji]]).',
+);
+
+/** Piedmontese (Piemontèis)
+ * @author Borichèt
+ * @author Bèrto 'd Sèra
+ */
+$messages['pms'] = array(
+ 'fancycaptcha-addurl' => "Soa modìfica a l'ha andrinta dj'anliure esterne neuve.
+Për dene na man a vardesse da la reclam aotomatisà, për piasì, ch'a l'arbata le paròle ch'a s-ciàira ambelessì sota ([[Special:Captcha/help|për savejne dë pì]]):",
+ 'fancycaptcha-badlogin' => "Për dene na man a vardesse da ij programa ch'a fan ciav fàosse, për piasì, ch'a l'arbata le paròle ch'a s-ciàira ambelessì sota ([[Special:Captcha/help|për savejne dë pì]]):",
+ 'fancycaptcha-createaccount' => "Për dene na man a vardesse da ij programa ch'a deurbo cont neuv n'aotomàtich, për piasì, ch'a l'arbata le paròle ch'a s-ciàira ambelessì sota ([[Special:Captcha/help|për savejne dë pì]]):",
+ 'fancycaptcha-create' => "Për creé sta pàgina-i d'amblé, për piasì, ch'a l'arbata le paròle ch'a s-ciàira ambelessì sota ([[Special:Captcha/help|për savejne dë pì]]):",
+ 'fancycaptcha-edit' => "Për fe-ie dle modìfiche ansima a sta pàgina-sì, për piasì, ch'a l'arbata le paròle ch'a s-ciàira ambelessì sota ([[Special:Captcha/help|për savejne dë pì]]):",
+ 'fancycaptcha-sendemail' => "Për giuté a protegi contra la rumenta automàtica, për piasì ch'a anseriss le paròle che as vëddo sota ant la casela ([[Special:Captcha/help|për savèjne ëd pi]]):",
+);
+
+/** Pashto (پښتو)
+ * @author Ahmed-Najib-Biabani-Ibrahimkhel
+ */
+$messages['ps'] = array(
+ 'fancycaptcha-create' => 'Ø¯Ø¯Û Ù„Ù¾Ø§Ø±Ù‡ Ú†Û ÙŠÙˆ مخ جوړ شي، مهرباني ÙˆÚ©Ú“ÛŒ Ù„Ø§Ù†Ø¯Û ÙˆØ±Ú©Ú“ شوي توري Ú…Ù†Ú«Ù‡ Ú†Û ØªØ§Ø³Ùˆ ته ښکاري Ù‡Ù…Ø§ØºØ³Û Ú©Ù¼ مټ په لانديني چوکاټ Ú©Û ÙˆÙ„ÙŠÚ©ÛŒ
+([[Special:Captcha/help|نور مالومات]]):',
+);
+
+/** Portuguese (Português)
+ * @author Hamilton Abreu
+ * @author Malafaya
+ */
+$messages['pt'] = array(
+ 'fancycaptcha-desc' => 'Gerador sofisticado de captcha para o Confirm Edit',
+ 'fancycaptcha-addurl' => "A sua edição introduziu links externos novos.
+Para ajudar a prevenir o ''spam'' automatizado, por favor, introduza na caixa abaixo as palavras apresentadas ([[Special:Captcha/help|mais informações]]):",
+ 'fancycaptcha-badlogin' => 'Para ajudar a prevenir mecanismos automatizados de descoberta de palavras-chave, por favor, introduza na caixa abaixo as palavras apresentadas ([[Special:Captcha/help|mais informações]]):',
+ 'fancycaptcha-createaccount' => 'Para ajudar a prevenir a criação de contas automatizada, por favor, introduza na caixa abaixo as palavras apresentadas ([[Special:Captcha/help|mais informações]]):',
+ 'fancycaptcha-create' => 'Para criar a página, por favor, introduza na caixa abaixo as palavras apresentadas ([[Special:Captcha/help|mais informações]]):',
+ 'fancycaptcha-edit' => 'Para editar esta página, por favor, introduza na caixa abaixo as palavras apresentadas ([[Special:Captcha/help|mais informações]]):',
+ 'fancycaptcha-sendemail' => "Para ajudar a prevenir o ''spam'' automatizado, por favor, introduza na caixa as palavras que aparecem abaixo ([[Special:Captcha/help|mais informações]]):",
+);
+
+/** Brazilian Portuguese (Português do Brasil)
+ * @author Eduardo.mps
+ * @author Giro720
+ */
+$messages['pt-br'] = array(
+ 'fancycaptcha-addurl' => "A sua edição inclui novas ligações externas. Como prevenção contra sistemas automatizados que inserem ''spam'', por favor, introduza as palavras exibidas na seguinte caixa ([[Special:Captcha/help|mais informações]]):",
+ 'fancycaptcha-badlogin' => 'Como prevenção contra formas automatizadas de descoberta de palavras-chave, por favor, introduza as palavras exibidas na seguinte caixa ([[Special:Captcha/help|mais informações]]):',
+ 'fancycaptcha-createaccount' => 'Como prevenção contra sistemas automatizados de criação de contas, por favor, introduza as palavras exibidas na seguinte caixa ([[Special:Captcha/help|mais informações]]):',
+ 'fancycaptcha-create' => 'Para criar a página, por favor, introduza as palavras exibidas na seguinte caixa ([[Special:Captcha/help|mais informações]]):',
+ 'fancycaptcha-edit' => 'Para editar esta página, por favor, introduza as palavras exibidas na seguinte caixa ([[Special:Captcha/help|mais informações]]):',
+ 'fancycaptcha-sendemail' => "Para ajudar a prevenir o ''spam'' automatizado, por favor, introduza na caixa as palavras que aparecem abaixo ([[Special:Captcha/help|mais informações]]):",
+);
+
+/** Romansh (Rumantsch)
+ * @author Kazu89
+ */
+$messages['rm'] = array(
+ 'fancycaptcha-createaccount' => "Per impedir la creaziun automatica da contos d'utilisader, endatescha per plaschair ils bustabs che vegnan mussads sutvart ([[Special:Captcha/help|dapli infos]]):",
+);
+
+/** Romanian (Română)
+ * @author Mihai
+ */
+$messages['ro'] = array(
+ 'fancycaptcha-createaccount' => 'Pentru a ajuta protecția împotriva creării automate de conturi, te rog să introduci în cutie cuvintele care apar mai jos ([[Special:Captcha/help|mai multe detalii]]):',
+ 'fancycaptcha-create' => 'Pentru a crea pagina, te rog să introduci în cutie cuvintele care apar mai jos ([[Special:Captcha/help|mai multe detalii]]):',
+ 'fancycaptcha-edit' => 'Pentru a modifica această pagină, te rog să introduci în cutie cuvintele care apar mai jos ([[Special:Captcha/help|mai multe detalii]]):',
+);
+
+/** Tarandíne (Tarandíne)
+ * @author Joetaras
+ */
+$messages['roa-tara'] = array(
+ 'fancycaptcha-addurl' => "'U cangiamende tue inglude de le collegaminde esterne.
+Pe aiutà a proteggere condre a 'u spam automateche, pe piacere mitte le parole ca combare sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+ 'fancycaptcha-badlogin' => 'Pe aiutà a proteggere condre a futteminde automatece de password, pe piacere mitte le parole ca combare aqquà sotte ([[Special:Captcha/help|more info]]):',
+ 'fancycaptcha-createaccount' => 'Pe aiutà a proteggere condre a ccreazione automateche de cunde utinde, pe piacere mitte le parole ca combare aqquà sotte ([[Special:Captcha/help|more info]]):',
+ 'fancycaptcha-create' => 'Pe ccrejà sta pàgene, pe piacere mitte le parole ca combare aqquà sotte ([[Special:Captcha/help|more info]]):',
+ 'fancycaptcha-edit' => 'Pe cangià sta pàgene, pe piacere mitte le parole combare aqquà sotte ([[Special:Captcha/help|more info]]):',
+ 'fancycaptcha-sendemail' => "Pe aiutà a proteggere condre a spam automatece, pe piacere mitte le parole ca combare aqquà sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+);
+
+/** Russian (РуÑÑкий)
+ * @author Lockal
+ * @author ÐлекÑандр Сигачёв
+ */
+$messages['ru'] = array(
+ 'fancycaptcha-addurl' => 'Ваша правка Ñодержит новые внешние ÑÑылки. Ð’ целÑÑ… защиты от Ñпама, пожалуйÑта, введите Ñлова, показанные ниже в рамке ([[Special:Captcha/help|подробнее…]]):',
+ 'fancycaptcha-badlogin' => 'Ð’ целÑÑ… защиты от автоматичеÑкого взлома паролей, пожалуйÑта, введите в поле ввода буквы Ñ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ([[Special:Captcha/help|подробнее]]):',
+ 'fancycaptcha-createaccount' => 'Ð”Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡ÐµÑкой региÑтрации учётных запиÑей, пожалуйÑта, введите изображённые Ñимволы в текÑтовое поле ([[Special:Captcha/help|подробнее]]):',
+ 'fancycaptcha-create' => 'Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñтраницы, пожалуйÑта, введите буквы, которые видны на изображении ниже ([[Special:Captcha/help|подробнее…]]):',
+ 'fancycaptcha-edit' => 'Ð”Ð»Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтраницы, пожалуйÑта, введите буквы, которые видны на изображении ниже ([[Special:Captcha/help|подробнее…]]):',
+ 'fancycaptcha-sendemail' => 'Ð’ целÑÑ… защиты от автоматичеÑкого Ñпама, пожалуйÑта, введите показанные ниже Ñлова ([[Special:Captcha/help|подробнее]]):',
+);
+
+/** Rusyn (РуÑиньÑкый)
+ * @author Gazeb
+ */
+$messages['rue'] = array(
+ 'fancycaptcha-addurl' => 'Ваше ÐµÐ´Ñ–Ñ‚Ð¾Ð²Ð°Ð½Ñ Ð¾Ð±ÑÑгує новы одказы формов URL; про охорону перед автоматічным Ñпамом муÑите опиÑати текÑÑ‚ з наÑтупного образку. ([[Special:Captcha/help|Што тото значіть?]])',
+ 'fancycaptcha-badlogin' => 'Ð’ рамках охороны перед автоматічныма пробами угаднути геÑло муÑите опиÑати текÑÑ‚ з наÑтупного образку. ([[Special:Captcha/help|Што тото значіть?]]):',
+ 'fancycaptcha-createaccount' => 'Ð’ рамках охороны перед автоматічныма ÑтворёванÑми конт муÑите про Ð²Ñ‹ÐºÐ¾Ð½Ð°Ð½Ñ Ñ€ÐµÒ‘Ñ–Ñтрації опиÑати текÑÑ‚ з наÑтупного образку. ([[Special:Captcha/help|Што тото значіть?]]):',
+ 'fancycaptcha-create' => 'Жебы Ñьте могли Ñтворити Ñторінку, муÑите опиÑати текÑÑ‚ з наÑтупного образку:([[Special:Captcha/help|Што тото значіть?]])',
+ 'fancycaptcha-edit' => 'Жебы Ñьте могли едітовати тоту Ñторінку, муÑите опиÑати текÑÑ‚ з наÑтупного образку: ([[Special:Captcha/help|Што тото значіть?]])',
+ 'fancycaptcha-sendemail' => 'Ð’ рамках охороны перед автоматічным Ñпамом муÑите опиÑати текÑÑ‚ з наÑтупного образку. ([[Special:Captcha/help|Што тото значіть?]]):',
+);
+
+/** Yakut (Саха тыла)
+ * @author HalanTul
+ */
+$messages['sah'] = array(
+ 'fancycaptcha-addurl' => 'Эн көннөрүүҥ Ñ‚Ð°Ñ Ñ‹Ð¹Ñ‹Ð½Ð½ÑŒÑ‹ÐºÑ‚Ð°Ð°Ñ… Ñбит. Спаамтан көмүÑкÑнÑÑ€ Ñоруктаах дьайыыны оҥор, манна баар тыллары хатылаа ([[Special:Captcha/help|Ñиһилии…]]):',
+ 'fancycaptcha-badlogin' => 'Киирии тылы аптамаатынан алдьатыыттан көмүÑкÑнÑÑ€ дьайыыны оҥороргор көрдөһөбүт, манна ойууламмыт буукубалары хатылаа ([[Special:Captcha/help|Ñиһилии]]):',
+ 'fancycaptcha-createaccount' => 'Ðаттары аптамаатынан бÑлиÑтиири Ñуох оҥорор туһуттан бу дьайыыны оҥороргор көрдөһөбүт: ойууламмыт Ñурук бÑлиÑлÑрин анал ÑÐ¸Ñ€Ð³Ñ ÐºÐ¸Ð»Ð»ÑÑ€ ([[Special:Captcha/help|Ñиһилии]]):',
+ 'fancycaptcha-create' => 'Эн көннөрүүҥ Ñ‚Ð°Ñ Ñ‹Ð¹Ñ‹Ð½Ð½ÑŒÑ‹ÐºÑ‚Ð°Ñ€Ð´Ð°Ð°Ñ… Ñбит. Спаамтан көмүÑкÑнÑÑ€ туһуттан манна баар тыллары хатылыыргар көрдөһөбүт ([[Special:Captcha/help|Ñиһилии…]]):',
+ 'fancycaptcha-edit' => 'Эн көннөрүүҥ Ñ‚Ð°Ñ Ñ‹Ð¹Ñ‹Ð½Ð½ÑŒÑ‹ÐºÑ‚Ð°Ñ€Ð´Ð°Ð°Ñ… Ñбит. Спаамтан көмүÑкÑнÑÑ€ туһуттан манна баар тыллары хатылыыргар көрдөһөбүт ([[Special:Captcha/help|Ñиһилии…]]):',
+ 'fancycaptcha-sendemail' => 'Ðптамаат Ñпаамтан көмүÑкÑнÑÑ€ дьайыыны оҥороргор көрдөһөбүт, манна ойууламмыт тыллары хатылаа ([[Special:Captcha/help|Ñиһилии]]):',
+);
+
+/** Sinhala (සිංහල)
+ * @author Thameera123
+ * @author නන්දිමිතුරු
+ */
+$messages['si'] = array(
+ 'fancycaptcha-addurl' => 'ඔබගේ සංස්කරණයෙහි නව බà·à·„ිර සබà·à¶³à·’යන් අඩංගුයි.
+ස්වයංක්â€à¶»à·“ය අයà·à¶ à·’ත තà·à¶´à·‘ලෙන් ආරක්ෂ෠වනු වස්, පහත පෙන්නුම් කෙරෙන වචන කොටුව තුල ඇතුලත් කරන්න ([[Special:Captcha/help|à·€à·à¶©à·’මනත් තොරතුරු]]):',
+ 'fancycaptcha-badlogin' => 'ස්වයංක්â€à¶»à·“ය මුරපද බිඳීම වලක්වනු වස්, පහත පෙන්නුම් කෙරෙන වචන කොටුව තුල ඇතුලත් කරන්න ([[Special:Captcha/help|à·€à·à¶©à·’මනත් තොරතුරු]]):',
+ 'fancycaptcha-createaccount' => 'ස්වයංක්â€à¶»à·“ය ගිණුම් තà·à¶±à·“ම à·€à·à¶½à¶šà·”මâ€à¶§ උදවු වනු වස්, පහත පෙන්නුම් කෙරෙන වචන කොටුව තුල ඇතුලත් කරන්න ([[Special:Captcha/help|à·€à·à¶©à·’මනත් තොරතුරු]]):',
+ 'fancycaptcha-create' => 'පිටුව තනනු වස්, පහත පෙන්නුම් කෙරෙන වචන කොටුව තුල ඇතුලත් කරන්න ([[Special:Captcha/help|à·€à·à¶©à·’මනත් තොරතුරු]]):',
+ 'fancycaptcha-edit' => 'මෙම පිටුව සංස්කරණය කරනු වස්, පහත පෙන්නුම් කෙරෙන වචන කොටුව තුල ඇතුලත් කරන්න ([[Special:Captcha/help|à·€à·à¶©à·’මනත් තොරතුරු]]):',
+ 'fancycaptcha-sendemail' => 'ස්වයංක්â€à¶»à·“ය ස්පෑම් කිරීම්වලින් ආරක්ෂ෠කිරීම සඳහ෠උදව් වීමට පහත කොටුවේ පෙන්වන වචන ඇතුළත් කරන්න ([[Special:Captcha/help|more info]]):',
+);
+
+/** Slovak (SlovenÄina)
+ * @author Helix84
+ */
+$messages['sk'] = array(
+ 'fancycaptcha-addurl' => 'Vaša úprava obsahuje nové URL odkazy; kvôli ochrane proti automatizovanému spamu je potrebné napísať slová zobrazené na tomto obrázku: <br />([[Special:Captcha/help|Čo je toto?]])',
+ 'fancycaptcha-badlogin' => 'Ako ochranu proti automatizovanému lámaniu hesiel, prosím zadajte slová z nasledujúceho obrázka do poľa pre odpoveÄ ([[Special:Captcha/help|viac informácií]]):',
+ 'fancycaptcha-createaccount' => 'Kvôli ochrane proti automatizovanému spamu je potrebné napísaÅ¥ slová zobrazené na tomto obrázku, až potom bude vytvorený nový úÄet: <br />([[Special:Captcha/help|ÄŒo je toto?]])',
+ 'fancycaptcha-create' => 'Vaša úprava obsahuje nové URL odkazy; kvôli ochrane proti automatizovanému spamu je potrebné napísať slová zobrazené na tomto obrázku: <br />([[Special:Captcha/help|Čo je toto?]])',
+ 'fancycaptcha-edit' => 'Vaša úprava obsahuje nové URL odkazy; kvôli ochrane proti automatizovanému spamu je potrebné napísať slová zobrazené na tomto obrázku: <br />([[Special:Captcha/help|Čo je toto?]])',
+ 'fancycaptcha-sendemail' => 'Ako ochranu proti automatizovanému spamu, prosím zadajte slová z nasledujúceho obrázka do poľa pre odpoveÄ ([[Special:Captcha/help|ÄalÅ¡ie informácie]]):',
+);
+
+/** Slovenian (SlovenÅ¡Äina)
+ * @author Dbc334
+ */
+$messages['sl'] = array(
+ 'fancycaptcha-addurl' => 'VaÅ¡e urejanje vkljuÄuje nove zunanje povezave.
+Zaradi zaÅ¡Äite pred samodejnim smetjem, prosimo vnesite spodnje besede v polje ([[Special:Captcha/help|veÄ informacij]]):',
+ 'fancycaptcha-badlogin' => 'Zaradi zaÅ¡Äite pred samodejnim ugotavljanjem gesel, prosimo vnesite spodnje besede v polje ([[Special:Captcha/help|veÄ informacij]]):',
+ 'fancycaptcha-createaccount' => 'Zaradi zaÅ¡Äite pred samodejnim ustvarjanjem raÄunov, prosimo vnesite spodnje besede v polje ([[Special:Captcha/help|veÄ informacij]]):',
+ 'fancycaptcha-create' => 'ÄŒe želite ustvariti stran, prosimo vnesite spodnje besede v polje ([[Special:Captcha/help|veÄ informacij]]):',
+ 'fancycaptcha-edit' => 'ÄŒe želite urejati stran, prosimo vnesite spodnje besede v polje ([[Special:Captcha/help|veÄ informacij]]):',
+ 'fancycaptcha-sendemail' => 'Zaradi zaÅ¡Äite pred samodejnim smetenjem, prosimo vnesite spodnje besede v polje ([[Special:Captcha/help|veÄ informacij]]):',
+);
+
+/** Albanian (Shqip)
+ * @author Dori
+ * @author Olsi
+ */
+$messages['sq'] = array(
+ 'fancycaptcha-addurl' => 'Redaktimi juaj ka lidhje URL të reja dhe si mbrojtje kundër abuzimeve automatike duhet të shtypni çfarë shfaqet tek figura e mëposhtme:<br /> ([[Special:Captcha|Çfarë është kjo?]])',
+ 'fancycaptcha-badlogin' => 'Për tu mbrojtur nga metoda automatike të gjetjes së fjalëkalimeve ju kërkojmë të vendosni fjalët e figurës në kuti ([[Special:Captcha/help|më shumë informacion]]):',
+ 'fancycaptcha-createaccount' => 'Për të mbrojtur kundër hapjeve të llogarive në mënyrë automatike ju lutem shtypni çfarë shfaqet tek figura e mëposhtme ([[Special:Captcha|Çfarë është kjo?]]):',
+ 'fancycaptcha-create' => 'Për të krijuar një faqe, ju lutem shtypni çfarë shfaqet tek figura e mëposhtme ([[Special:Captcha|Çfarë është kjo?]]):',
+ 'fancycaptcha-edit' => 'Për të redaktuar këtë faqe ju lutem shtypni çfarë shfaqet tek figura e mëposhtme ([[Special:Captcha|Çfarë është kjo?]]):',
+ 'fancycaptcha-sendemail' => "Për t'u mbrojtur nga metoda automatike e gjetjes së fjalëkalimeve ju kërkojmë të vendosni fjalët e figurës në kuti ([[Special:Captcha/help|më shumë informacion]]):",
+);
+
+/** Serbian Cyrillic ekavian (‪СрпÑки (ћирилица)‬)
+ * @author Millosh
+ * @author Rancher
+ * @author Жељко Тодоровић
+ * @author Михајло Ðнђелковић
+ */
+$messages['sr-ec'] = array(
+ 'fancycaptcha-addurl' => 'Ваша измена Ñадржи нове Ñпољне везе.
+У циљу заштите од злоупотребе, унеÑите знакове Ñа Ñлике у поље изнад.',
+ 'fancycaptcha-badlogin' => 'У циљу Ñпречавања откривања лозинки, унеÑите знакове Ñа Ñлике у поље изнад.',
+ 'fancycaptcha-createaccount' => 'У циљу заштите од злоупотребе, унеÑите знакове Ñа Ñлике у поље изнад.',
+ 'fancycaptcha-create' => 'Да биÑте направили Ñтраницу, унеÑите знакове Ñа Ñлике у поље изнад.',
+ 'fancycaptcha-edit' => 'Да биÑте изменили ову Ñтраницу, унеÑите знакове Ñа Ñлике у поље изнад.',
+ 'fancycaptcha-sendemail' => 'У циљу заштите од злоупотребе, унеÑите знакове Ñа Ñлике у поље изнад.',
+);
+
+/** Serbian Latin ekavian (‪Srpski (latinica)‬)
+ * @author Michaello
+ * @author Жељко Тодоровић
+ */
+$messages['sr-el'] = array(
+ 'fancycaptcha-addurl' => 'Tvoja izmena ukljuÄuje nove spoljne veze. U cilju zaÅ¡tite od automatskog spama, unesi reÄi koje se nalaze ispod u kutiju ([[Special:Captcha/help|detaljnije]]):',
+ 'fancycaptcha-badlogin' => 'U cilju spreÄavanja automatskog otkrivanja lozinki, unesi reÄi koje se nalaze ispod u kutiju ([[Special:Captcha/help|detaljnije]]):',
+ 'fancycaptcha-createaccount' => 'U cilju zaÅ¡tite od automatskog spama, unesi reÄi odozdo u kutiju ([[Special:Captcha/help|detaljnije]]):',
+ 'fancycaptcha-create' => 'Da bi se napravila stranica, potrebno je uneti reÄi koje se nalaze ispod kutije ([[Special:Captcha/help|detaljnije]]):',
+ 'fancycaptcha-edit' => 'Za izmenu ove strane unesi reÄi koje se nalaze ispod kutije ([[Special:Captcha/help|detaljnije]]):',
+ 'fancycaptcha-sendemail' => 'U cilju zaÅ¡tite od automatskog spama, unesi reÄi odozdo u kutiju ([[Special:Captcha/help|detaljnije]]):',
+);
+
+/** Seeltersk (Seeltersk)
+ * @author Pyt
+ */
+$messages['stq'] = array(
+ 'fancycaptcha-addurl' => 'Dien Beoarbaidenge änthaalt näie externe Ferbiendengen.
+Tou Schuts foar automatisierde Spamminge reek dät foulgjende Woud in dät Fäild ien.
+Klik dan fonnäien ap „Siede spiekerje“ [[Special:Captcha/help|(Froagen of Probleme?)]].',
+ 'fancycaptcha-badlogin' => 'Toun Schuts foar ne Kompromittierenge fon dien Benutserkonto reek dät foulgjende Woud in dät Fäild hierunner ien [[Special:Captcha/help|(Froagen of Probleme?)]]:',
+ 'fancycaptcha-createaccount' => 'Toun Schuts foar automatisierde Anloage fon Benutserkonten reek dät foulgjende Woud in dät Fäild hierunner ien [[Special:Captcha/help|(Froagen of Probleme?)]].',
+ 'fancycaptcha-create' => 'Tou dät Moakjen fon ju Siede reek dät foulgjende Woud in dät Fäild hierunner ien
+[[Special:Captcha/help|(Froagen of Probleme?)]].',
+ 'fancycaptcha-edit' => 'Tou Beoarbaidenge fon disse Siede reek dät foulgjende Woud in dät Fäild hierunner ien
+[[Special:Captcha/help|(Froagen of Probleme?)]].',
+);
+
+/** Sundanese (Basa Sunda)
+ * @author Irwangatot
+ */
+$messages['su'] = array(
+ 'fancycaptcha-edit' => 'Éditan Anjeun ngeusikeun tumbu kaluar nu anyar. Pikeun panangtayungan ka spam otomatis, mangga asukkeun kecap di handapeun ieu ka kotak anu disadiakeun ([[Special:Captcha/help|salengkeupna]]):',
+);
+
+/** Swedish (Svenska)
+ * @author Ainali
+ */
+$messages['sv'] = array(
+ 'fancycaptcha-addurl' => 'Din ändring lägger till nya externa länkar i texten. För att skydda wikin mot
+automatisk spam måste du skriva orden som visas härunder i rutan ([[Special:Captcha/help|mer information]]):',
+ 'fancycaptcha-badlogin' => 'För att skydda wikin mot automatiserad lösenordknäckning måste du skriva
+orden som visas härunder i rutan ([[Special:Captcha/help|mer information]]):',
+ 'fancycaptcha-createaccount' => 'För att skydda wikin mot automatiskt skapade användarkonton måste du
+skriva orden som visas härunder i rutan ([[Special:Captcha/help|mer information]]):',
+ 'fancycaptcha-create' => 'För att skapa den här sidan måste du först skriva orden som visas härunder i rutan
+([[Special:Captcha/help|mer information]]):',
+ 'fancycaptcha-edit' => 'För att redigera den här sidan måste du först skriva orden som visas härunder i rutan
+([[Special:Captcha/help|mer information]]):',
+ 'fancycaptcha-sendemail' => 'För att skydda wikin mot automatiserad lösenordknäckning måste du skriva
+orden som visas härunder i rutan ([[Special:Captcha/help|mer information]]):',
+);
+
+/** Telugu (తెలà±à°—à±)
+ * @author Mpradeep
+ */
+$messages['te'] = array(
+ 'fancycaptcha-addurl' => 'మీ దిదà±à°¦à±à°¬à°¾à°Ÿà±à°²à±‹ కొతà±à°¤ బయటి లింకà±à°²à±à°¨à±à°¨à°¾à°¯à°¿. బాటà±à°²à°¦à±à°µà°¾à°°à°¾ చేసే à°¸à±à°ªà°¾à°®à± à°¨à±à°‚à°¡à°¿ à°°à°•à±à°·à°£à°¨à± à°à°°à±à°ªà°°à°šà±‡à°‚à°¦à±à°•à± గానà±,
+à°•à°¿à°‚à°¦ కనిపించే బొమà±à°®à°²à±‹à°¨à°¿ à°…à°•à±à°·à°°à°¾à°²à°¨à± పెటà±à°Ÿà±†à°²à±‹ రాయండి ([[Special:Captcha/help|మరింత సమాచారం]]):',
+ 'fancycaptcha-badlogin' => 'సంకేత పదాలనౠదొంగిలించే ఆటోమాటికౠపà±à°°à±‹à°—à±à°°à°¾à°®à±à°² à°¨à±à°‚à°¡à°¿ à°°à°•à±à°·à°¿à°‚చేందà±à°•à± గానà±, à°•à°¿à°‚à°¦ కనిపించే బొమà±à°®à°²à±‹à°¨à°¿ à°…à°•à±à°·à°°à°¾à°²à°¨à± పెటà±à°Ÿà±†à°²à±‹ రాయండి ([[Special:Captcha/help|మరింత సమాచారం]]):',
+ 'fancycaptcha-createaccount' => 'ఆటోమాటిగà±à°—à°¾ ఖాతాలనౠసృషà±à°Ÿà°¿à°‚చడానà±à°¨à°¿ నివారించేందà±à°•à±, à°•à°¿à°‚à°¦ కనిపించే పదాలనà±
+à°ˆ పెటà±à°Ÿà±†à°²à±‹ రాయండి ([[Special:Captcha/help|మరింత సహాయం]]):',
+ 'fancycaptcha-create' => 'కొతà±à°¤ పేజీ సృషà±à°Ÿà°¿à°‚చేందà±à°•à± గానà±, à°•à°¿à°‚à°¦ కనిపించే బొమà±à°®à°²à±‹à°¨à°¿ à°…à°•à±à°·à°°à°¾à°²à°¨à± పెటà±à°Ÿà±†à°²à±‹ రాయండి
+([[Special:Captcha/help|మరింత సమాచారం]]):',
+ 'fancycaptcha-edit' => 'à°ˆ పేజీలో దిదà±à°¦à±à°¬à°¾à°Ÿà± చేసేందà±à°•à±, à°•à°¿à°‚à°¦ కనిపించే బొమà±à°®à°²à±‹à°¨à°¿ à°…à°•à±à°·à°°à°¾à°²à°¨à± పెటà±à°Ÿà±†à°²à±‹ రాయండి
+([[Special:Captcha/help|మరింత సమాచారం]]):',
+);
+
+/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic))
+ * @author Ibrahim
+ */
+$messages['tg-cyrl'] = array(
+ 'fancycaptcha-addurl' => 'Вироиши шумо пайвандҳои ҷадиди хориҷиро дар бар мегирад. Барои кӯмак ба пешгири аз ҳаразнигори худкор, лутфан вожаеро ки дар таÑвир мебинед, ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):',
+ 'fancycaptcha-badlogin' => 'Барои кӯмак ба пешгири аз шикаÑтани худкори калимаҳои убур, вожаеро ки дар таÑвир мебинед, ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):',
+ 'fancycaptcha-createaccount' => 'Барои кӯмак аз Ñҷоди худкори ҳиÑоби корбарӣ, вожаеро ки дар таÑвир мебинед, ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):',
+ 'fancycaptcha-create' => 'Барои Ñҷоди Ñаҳифа, вожаеро ки дар таÑвир мебинед, ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):',
+ 'fancycaptcha-edit' => 'Барои вироиши ин Ñаҳифа, вожаеро ки дар таÑвир мебинед, ворид кунед ([[Special:Captcha/help|иттилооти бештар]]):',
+);
+
+/** Tajik (Latin) (Тоҷикӣ (Latin))
+ * @author Liangent
+ */
+$messages['tg-latn'] = array(
+ 'fancycaptcha-addurl' => 'Viroişi şumo pajvandhoi çadidi xoriçiro dar bar megirad. Baroi kūmak ba peşgiri az haraznigori xudkor, lutfan voƶaero ki dar tasvir mebined, vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):',
+ 'fancycaptcha-badlogin' => 'Baroi kūmak ba peşgiri az şikastani xudkori kalimahoi ubur, voƶaero ki dar tasvir mebined, vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):',
+ 'fancycaptcha-createaccount' => 'Baroi kūmak az eçodi xudkori hisobi korbarī, voƶaero ki dar tasvir mebined, vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):',
+ 'fancycaptcha-create' => 'Baroi eçodi sahifa, voƶaero ki dar tasvir mebined, vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):',
+ 'fancycaptcha-edit' => 'Baroi viroişi in sahifa, voƶaero ki dar tasvir mebined, vorid kuned ([[Special:Captcha/help|ittilooti beştar]]):',
+);
+
+/** Thai (ไทย)
+ * @author Harley Hartwell
+ */
+$messages['th'] = array(
+ 'fancycaptcha-addurl' => 'à¸à¸²à¸£à¹à¸à¹‰à¹„ขของคุณมีà¸à¸²à¸£à¹€à¸žà¸´à¹ˆà¸¡à¸¥à¸´à¸‡à¸à¹Œà¹„ปสู่เว็บไซต์อื่น เพื่อช่วยป้องà¸à¸±à¸™à¸à¸²à¸£à¸ªà¹à¸›à¸¡à¸­à¸±à¸•à¹‚นมัติ à¸à¸£à¸¸à¸“าพิมพ์ข้อความที่คุณเห็นด้านล่างลงในà¸à¸¥à¹ˆà¸­à¸‡à¸—ี่à¸à¸³à¸«à¸™à¸”ให้ ([[Special:Captcha/help|ข้อมูลเพิ่มเติม]])',
+ 'fancycaptcha-badlogin' => 'เพื่อป้องà¸à¸±à¸™à¸à¸²à¸£à¹à¸„ร็à¸à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¸ˆà¸²à¸à¸à¸£à¸°à¸šà¸§à¸™à¸à¸²à¸£à¸­à¸±à¸•à¹‚นมัติ à¸à¸£à¸¸à¸“าพิมพ์ข้อความที่คุณเห็นด้านล่างลงในà¸à¸¥à¹ˆà¸­à¸‡à¸—ี่à¸à¸³à¸«à¸™à¸”ให้ ([[Special:Captcha/help|ข้อมูลเพิ่มเติม]])',
+ 'fancycaptcha-createaccount' => 'เพื่อป้องà¸à¸±à¸™à¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸šà¸±à¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸”้วยà¸à¸£à¸°à¸šà¸§à¸™à¸à¸²à¸£à¸­à¸±à¸•à¹‚นมัติ à¸à¸£à¸¸à¸“าพิมพ์ข้อความที่คุณเห็นด้านล่างลงในà¸à¸¥à¹ˆà¸­à¸‡à¸—ี่à¸à¸³à¸«à¸™à¸”ให้ ([[Special:Captcha/help|ข้อมูลเพิ่มเติม]])',
+ 'fancycaptcha-create' => 'เพื่อสร้างหน้านี้ à¸à¸£à¸¸à¸“าพิมพ์ข้อความที่คุณเห็นด้านล่างลงในà¸à¸¥à¹ˆà¸­à¸‡à¸—ี่à¸à¸³à¸«à¸™à¸”ให้ ([[Special:Captcha/help|ข้อมูลเพิ่มเติม]])',
+ 'fancycaptcha-edit' => 'เพื่อà¹à¸à¹‰à¹„ขหน้านี้ à¸à¸£à¸¸à¸“าพิมพ์ข้อความที่คุณเห็นด้านล่างลงในà¸à¸¥à¹ˆà¸­à¸‡à¸—ี่à¸à¸³à¸«à¸™à¸”ให้ ([[Special:Captcha/help|ข้อมูลเพิ่มเติม]])',
+);
+
+/** Turkmen (Türkmençe)
+ * @author Hanberke
+ */
+$messages['tk'] = array(
+ 'fancycaptcha-badlogin' => 'Awtomatik parol döwülmeginden goranmak üçin, aşakdaky sözleri gutunyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):',
+ 'fancycaptcha-createaccount' => 'Hasaby awtomatik parol döwülmeginden goramak üçin, aşakdaky sözleri gutunyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):',
+ 'fancycaptcha-create' => 'Sahypa döretmek üçin, aşakdaky sözleri gutunyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):',
+ 'fancycaptcha-edit' => 'Bu sahypany redaktirlemek üçin, aşakdaky sözleri gutunyň içine ýazyň ([[Special:Captcha/help|jikme-jik]]):',
+);
+
+/** Tagalog (Tagalog)
+ * @author AnakngAraw
+ */
+$messages['tl'] = array(
+ 'fancycaptcha-addurl' => "Kabilang sa ginawa mong pagbabago ang bagong panlabas na mga kawing.
+Upang makatulong sa pagsasanggalang laban sa kusang pinapadalang mga \"manlulusob\" (''spam''), pakilagay lamang ang mga salitang lumitaw sa ibaba papasok sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):",
+ 'fancycaptcha-badlogin' => 'Upang makatulong sa pagsasanggalang laban sa mga kusang paglutas ng hudyat, pakilagay lamang ang mga salitang lumitaw sa ibaba patungo sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):',
+ 'fancycaptcha-createaccount' => 'Upang makatulong sa pagsasanggalang laban sa kusang paglikha ng kuwenta/akawnt, pakilagay lamang ang mga salitang lumitaw sa ibaba patungo sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):',
+ 'fancycaptcha-create' => 'Upang malikha ang pahina, pakilagay lamang ang mga salitang lumitaw sa ibaba patungo sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):',
+ 'fancycaptcha-edit' => 'Upang mabago ang pahinang ito, pakilagay lamang ang mga salitang lumitaw sa ibaba patungo sa loob ng kahon ([[Special:Captcha/help|mas marami pang kabatiran]]):',
+ 'fancycaptcha-sendemail' => 'Upang makatulong sa pagsasanggalang laban sa mga kusang pagsalakay ng ispam, pakilagay lamang ang mga salitang lumilitaw sa ibaba sa loob ng kahong ([[Special:Captcha/help|marami pang kabatiran]]):',
+);
+
+/** Turkish (Türkçe)
+ * @author Joseph
+ * @author Runningfridgesrule
+ */
+$messages['tr'] = array(
+ 'fancycaptcha-addurl' => 'Değişikliğiniz yeni dış bağlantılar içeriyor.
+Otomatik spamdan korunmak için, lütfen aşağıdaki sözcükleri kutunun içine yazın ([[Special:Captcha/help|ayrıntılı bilgiler]]):',
+ 'fancycaptcha-badlogin' => 'Otomatik parola çözülmesinden korunmak için, lütfen aşağıdaki sözcükleri kutunun içine yazın ([[Special:Captcha/help|ayrıntılı bilgiler]]):',
+ 'fancycaptcha-createaccount' => 'Otomatik hesap oluşturmaya karşı korumaya yardım etmek için, lütfen aşağıdaki kutuda görünen kelimeleri girin ([[Special:Captcha/help|daha fazla bilgi]]):',
+ 'fancycaptcha-create' => 'Sayfayı oluşturmak için, lütfen aşağıdaki kutuda görünen kelimeleri girin ([[Special:Captcha/help|daha fazla bilgi]]):',
+ 'fancycaptcha-edit' => 'Bu sayfayı değiştirmek için, lütfen aşağıdaki kutuda görünen kelimeleri girin ([[Special:Captcha/help|daha fazla bilgi]]):',
+ 'fancycaptcha-sendemail' => 'Otomatik spamlerden korunmaya yardımcı olmak için, lütfen aşağıda görünen sözcükleri kutuya yazın ([[Special:Captcha/help|daha fazla bilgi]]):',
+);
+
+/** Ukrainian (УкраїнÑька)
+ * @author Ahonc
+ * @author Ytsukeng Fyvaprol
+ */
+$messages['uk'] = array(
+ 'fancycaptcha-addurl' => 'Ваше Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–Ñтить нові зовнішні поÑиланнÑ.
+Із метою захиÑту від Ñпаму, будь лаÑка, введіть у текÑтове поле Ñлова, зображені на картинці ([[Special:Captcha/help|докладніше]]):',
+ 'fancycaptcha-badlogin' => 'Із метою захиÑту від автоматичного злому паролÑ, будь лаÑка, введіть у текÑтове поле Ñлова, зображені на картинці ([[Special:Captcha/help|докладніше]]):',
+ 'fancycaptcha-createaccount' => 'Із метою захиÑту від автоматичного ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¸Ñ… запиÑів, будь лаÑка, введіть у текÑтове поле Ñлова, зображені на картинці ([[Special:Captcha/help|докладніше]]):',
+ 'fancycaptcha-create' => 'Щоб Ñтворити Ñторінку, будь лаÑка, введіть у текÑтове поле Ñлова, зображені на картинці: ([[Special:Captcha/help|докладніше]]):',
+ 'fancycaptcha-edit' => 'Щоб редагувати цю Ñторінку, будь лаÑка, введіть у текÑтове поле Ñлова, зображені на картинці: ([[Special:Captcha/help|докладніше]]):',
+ 'fancycaptcha-sendemail' => 'Ð”Ð»Ñ Ð·Ð°Ñ…Ð¸Ñту від автоматичного Ñпаму, будь лаÑка, введіть Ñлова, Ñкі показані нижче в полі ([[Special:Captcha/help|more info]]):',
+);
+
+/** Vèneto (Vèneto)
+ * @author Candalua
+ */
+$messages['vec'] = array(
+ 'fancycaptcha-addurl' => 'La to modifica la include dei novi colegamenti esterni.
+Par jutarne a conbàtar el spam, par piaser inserissi ne la casela le parole che vien fora qua soto ([[Special:Captcha/help|magiori informazion]]):',
+ 'fancycaptcha-badlogin' => 'Par precauzion contro i tentativi de forzatura automatica de le password, par piaser inserissi ne la casela le parole che vien fora qua soto ([[Special:Captcha/help|magiori informazion]]):',
+ 'fancycaptcha-createaccount' => 'Par jutarne a inpedir la creazion automatica dei account, par piaser inserissi ne la casela le parole che vien fora qua soto ([[Special:Captcha/help|magiori informazion]]):',
+ 'fancycaptcha-create' => 'Par crear la pagina, par piaser inserissi ne la casela le parole che vien fora qua soto ([[Special:Captcha/help|magiori informazion]]):',
+ 'fancycaptcha-edit' => 'Par modificar la pagina, par piaser inserissi ne la casela le parole che vien fora qua soto ([[Special:Captcha/help|magiori informazion]]):',
+ 'fancycaptcha-sendemail' => 'Par precauzion contro i tentativi de forzatura automatica de le password, par piaser inserissi ne la casela le parole che vien fora qua soto ([[Special:Captcha/help|magiori informazion]]):',
+);
+
+/** Vietnamese (Tiếng Việt)
+ * @author Minh Nguyen
+ * @author Vinhtantran
+ */
+$messages['vi'] = array(
+ 'fancycaptcha-desc' => 'Trình sản xuất hình CAPTCHA đặc biệt cho ConfirmEdit',
+ 'fancycaptcha-addurl' => 'Sá»­a đổi của bạn có chứa các liên kết ngoài. Äể giúp tránh spam tá»± Ä‘á»™ng, xin hãy nhập những từ xuất hiện ở dÆ°á»›i vào ô ([[Special:Captcha/help|thông tin thêm]]):',
+ 'fancycaptcha-badlogin' => 'Äể giúp tránh bẻ mật khẩu tá»± Ä‘á»™ng, xin hãy nhập những từ xuất hiện ở dÆ°á»›i vào ô ([[Special:Captcha/help|thông tin thêm]]):',
+ 'fancycaptcha-createaccount' => 'Äể giúp tránh tạo tài khoản tá»± Ä‘á»™ng, xin hãy nhập những chữ xuất hiện ở dÆ°á»›i vào ô ([[Special:Captcha/help|thông tin thêm]]):',
+ 'fancycaptcha-create' => 'Äể tạo trang, xin hãy nhập những chữ xuất hiện ở dÆ°á»›i vào ô ([[Special:Captcha/help|thông tin thêm]]):',
+ 'fancycaptcha-edit' => 'Äể sá»­a trang này, xin hãy nhập những từ xuất hiện ở dÆ°á»›i vào ô ([[Special:Captcha/help|thông tin thêm]]):',
+ 'fancycaptcha-sendemail' => 'Äể giúp chúng tôi chống lại spam tá»± Ä‘á»™ng, xin hãy nhập những từ xuất hiện ở dÆ°á»›i vào ô ([[Special:Captcha/help|thông tin thêm]]):',
+);
+
+/** Volapük (Volapük)
+ * @author Smeira
+ */
+$messages['vo'] = array(
+ 'fancycaptcha-addurl' => 'Redakam olik keninükon yümis plödik nulik. Ad jelön siti ta peneds itjäfidik, penolös vödis sököl in bokil ([[Special:Captcha/help|nüns pluik]]):',
+ 'fancycaptcha-badlogin' => 'Ad jelön siti ta daget itjäfidik letavödas, penolös, begö! vödis dono pejonölis in bokil ([[Special:Captcha/help|nüns pluik]]):',
+ 'fancycaptcha-createaccount' => 'Ad jelön siti ta kalijafam itjäfidik, penolös, begö! vödis dono pejonölis in bokil ([[Special:Captcha/help|nüns pluik]]):',
+ 'fancycaptcha-create' => 'Ad jafön padi at, penolös, begö! vödis dono pejonöls in bokil ([[Special:Captcha/help|nüns pluik]]):',
+ 'fancycaptcha-edit' => 'Ad redakön padi at, penolös, begö! vödis dono pejonölis ini bokil ([[Special:Captcha/help|nüns pluik]]):',
+);
+
+/** Võro (Võro)
+ * @author Võrok
+ */
+$messages['vro'] = array(
+ 'fancycaptcha-badlogin' => 'Salasõna automaatsõ vällänuhkmisõ vasta kirodaq pildi päält sõnaq alanolõvahe kasti
+([[Special:Captcha/help|Abiteedüs]]):',
+);
+
+/** Yiddish (ייִדיש)
+ * @author פוילישער
+ */
+$messages['yi'] = array(
+ 'fancycaptcha-create' => 'צו ש×ַפֿן ×“×¢× ×‘×œ×ַט, זײַט ×זוי גוט ×ון קל×ַפט ×ַרײַן די ווערטער וו×ָס זענען ××™× ×¢× ×§×¢×¡×˜×œ ×ונטן ([[Special:Captcha/help|מער ×ינפֿ×רמ×ַציע]]):',
+ 'fancycaptcha-edit' => 'צו רעד×ִקטירן ×“×¢× ×‘×œ×ַט, זײַט ×זוי גוט ×ון קל×ַפט ×ַרײַן די ווערטער וו×ָס שטייען ××™× ×¢× ×§×¢×¡×˜×œ ×ונטן ([[Special:Captcha/help|מער ×ינפֿ×רמ×ַציע]]):',
+);
+
+/** Yoruba (Yorùbá)
+ * @author Demmy
+ */
+$messages['yo'] = array(
+ 'fancycaptcha-addurl' => 'Àwá»n àtúná¹£e yín ní àwá»n ìjápá»Ì€ òde nínú.
+Láti ṣèránwá»Ì láti kojú spam aá¹£efúnrararẹ̀, ẹ já»Ì€wá»Ì ẹ fi àwá»n á»Ì€rá»Ì€ tí wá»Ìn hàn nísàlẹ̀ sínú ààyè ([[Special:Captcha/help|ẹ̀kúnrẹÌrẹÌ]]):',
+);
+
+/** Cantonese (粵語) */
+$messages['yue'] = array(
+ 'fancycaptcha-addurl' => '你嘅編輯包括咗新嘅外部連çµã€‚為咗防止自動化嘅濫貼,請響下é¢å€‹ç›’度輸入下é¢å˜…文字 ([[Special:Captcha/help|更多資訊]]):',
+ 'fancycaptcha-badlogin' => '為咗防止ä¸ç•¶ç¨‹å¼ç ´è§£å¯†ç¢¼ï¼Œè«‹éŸ¿ä¸‹é¢å€‹ç›’度輸入下é¢å˜…文字 ([[Special:Captcha/help|更多資訊]]):',
+ 'fancycaptcha-createaccount' => '為咗防止自動化開新戶å£ï¼Œè«‹éŸ¿ä¸‹é¢å€‹ç›’度輸入下é¢å˜…文字 ([[Special:Captcha/help|更多資訊]]):',
+ 'fancycaptcha-create' => 'è¦é–‹ä¸€å€‹æ–°ç‰ˆï¼Œè«‹éŸ¿ä¸‹é¢å€‹ç›’度輸入下é¢å˜…文字 ([[Special:Captcha/help|更多資訊]]):',
+ 'fancycaptcha-edit' => 'è¦ç·¨è¼¯å‘¢ä¸€ç‰ˆï¼Œè«‹éŸ¿ä¸‹é¢å€‹ç›’度輸入下é¢å˜…文字 ([[Special:Captcha/help|更多資訊]]):',
+);
+
+/** Simplified Chinese (‪中文(简体)‬)
+ * @author Bencmq
+ */
+$messages['zh-hans'] = array(
+ 'fancycaptcha-addurl' => '你的编辑内容中å«æœ‰æœ¬ç½‘站以外的链接。为防止ä¸å½“程å¼å¤§é‡ç ´å,请输入以下的文字([[Special:Captcha/help|相关信æ¯]]):',
+ 'fancycaptcha-badlogin' => '为防止ä¸å½“程å¼ç ´è§£å¯†ç ï¼Œè¯·è¾“入以下的文字([[Special:Captcha/help|相关信æ¯]]):',
+ 'fancycaptcha-createaccount' => '为防止ä¸å½“程å¼å¤§é‡å»ºç«‹å¸æˆ·ï¼Œè¯·è¾“入以下的文字([[Special:Captcha/help|相关信æ¯]]):',
+ 'fancycaptcha-create' => '为防止ä¸å½“程å¼å¤§é‡å»ºç«‹é¡µé¢ï¼Œè¯·è¾“入以下的文字([[Special:Captcha/help|相关信æ¯]]):',
+ 'fancycaptcha-edit' => '如你想è¦ç¼–辑這个页é¢ï¼Œè¯·è¾“入以下的文字([[Special:Captcha/help|相关信æ¯]]):',
+ 'fancycaptcha-sendemail' => '为防止ä¸å½“程å¼è¿›è¡Œç ´å,请输入以下的文字([[Special:Captcha/help|相关资讯]]):',
+);
+
+/** Traditional Chinese (‪中文(ç¹é«”)‬)
+ * @author Horacewai2
+ * @author Waihorace
+ */
+$messages['zh-hant'] = array(
+ 'fancycaptcha-addurl' => '您的編輯內容中å«æœ‰æœ¬ç¶²ç«™ä»¥å¤–的連çµã€‚為防止ä¸ç•¶ç¨‹å¼å¤§é‡ç ´å£žï¼Œè«‹è¼¸å…¥ä»¥ä¸‹çš„文字([[Special:Captcha/help|相關資訊]]):',
+ 'fancycaptcha-badlogin' => '為防止ä¸ç•¶ç¨‹å¼ç ´è§£å¯†ç¢¼ï¼Œè«‹è¼¸å…¥ä»¥ä¸‹çš„文字([[Special:Captcha/help|相關資訊]]):',
+ 'fancycaptcha-createaccount' => '為防止ä¸ç•¶ç¨‹å¼å¤§é‡å»ºç«‹å¸³æˆ¶ï¼Œè«‹è¼¸å…¥ä»¥ä¸‹çš„文字([[Special:Captcha/help|相關資訊]]):',
+ 'fancycaptcha-create' => '為防止ä¸ç•¶ç¨‹å¼å¤§é‡å»ºç«‹é é¢ï¼Œè«‹è¼¸å…¥ä»¥ä¸‹çš„文字([[Special:Captcha/help|相關資訊]]):',
+ 'fancycaptcha-edit' => '如您想è¦ç·¨è¼¯æ­¤é é¢ï¼Œè«‹è¼¸å…¥ä»¥ä¸‹çš„文字([[Special:Captcha/help|相關資訊]]):',
+ 'fancycaptcha-sendemail' => '為防止ä¸ç•¶ç¨‹å¼é€²è¡Œç ´å£žï¼Œè«‹è¼¸å…¥ä»¥ä¸‹çš„文字([[Special:Captcha/help|相關資訊]]):',
+);
+
diff --git a/extensions/ConfirmEdit/FancyCaptcha.php b/extensions/ConfirmEdit/FancyCaptcha.php
new file mode 100644
index 00000000..4204546b
--- /dev/null
+++ b/extensions/ConfirmEdit/FancyCaptcha.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * Experimental image-based captcha plugin, using images generated by an
+ * external tool.
+ *
+ * Copyright (C) 2005, 2006 Brion Vibber <brion@pobox.com>
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ exit;
+}
+
+global $wgCaptchaDirectory;
+$wgCaptchaDirectory = "$wgUploadDirectory/captcha"; // bad default :D
+
+global $wgCaptchaDirectoryLevels;
+$wgCaptchaDirectoryLevels = 0; // To break into subdirectories
+
+global $wgCaptchaSecret;
+$wgCaptchaSecret = "CHANGE_THIS_SECRET!";
+
+/**
+ * By default the FancyCaptcha rotates among all available captchas.
+ * Setting $wgCaptchaDeleteOnSolve to true will delete the captcha
+ * files when they are correctly solved. Thus the user will need
+ * something like a cron creating new thumbnails to avoid drying up.
+ */
+$wgCaptchaDeleteOnSolve = false;
+
+$wgExtensionMessagesFiles['FancyCaptcha'] = dirname( __FILE__ ) . '/FancyCaptcha.i18n.php';
+$wgAutoloadClasses['FancyCaptcha'] = dirname( __FILE__ ) . '/FancyCaptcha.class.php';
diff --git a/extensions/ConfirmEdit/HTMLCaptchaField.php b/extensions/ConfirmEdit/HTMLCaptchaField.php
new file mode 100644
index 00000000..a458544c
--- /dev/null
+++ b/extensions/ConfirmEdit/HTMLCaptchaField.php
@@ -0,0 +1,84 @@
+<?php
+/**
+ * HTMLFormField for inserting Captchas into a form.
+ *
+ * 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
+ *
+ * @class
+ */
+class HTMLCaptchaField extends HTMLFormField {
+
+ /**
+ * @var Captcha
+ */
+ private $captcha;
+
+ public $prefix = '';
+
+ /**
+ * @var Bool|Array
+ */
+ private $validationResult;
+
+ public function __construct( $params ){
+ parent::__construct( $params );
+
+ // For differentiating the type of form, mainly
+ if( isset( $params['prefix'] ) ){
+ $this->prefix = $params['prefix'];
+ }
+ }
+
+ /**
+ * Get the captcha body. Don't include any of the surrounding table cells/rows
+ *
+ * @param $value String
+ * @return String
+ */
+ public function getInputHTML( $value ){
+ # TODO
+ }
+
+ public function validate( $data, $alldata ){
+ // We sent back the exists status of the captcha before. If it *doesn't* exist
+ // we actually want to validate this as true, because we don't want an angry red
+ // error message, just for the user to put the captcha in again
+ if( $data === false ){
+ return true;
+ }
+
+
+ }
+
+ /**
+ * @param $request WebRequest
+ * @return void
+ */
+ public function loadDataFromRequest( $request ){
+ $this->captcha = Captcha::factory();
+ $this->captcha->loadFromRequest( $request, $this );
+ if( !$this->captcha->exists() ){
+ // The captcha doesn't exist; probably because it's already been used and
+ // then deleted for security. Load the field up with a new captcha which
+ // will be shown to the user when the validation of said new object fails
+ $this->captcha = Captcha::newRandom();
+ }
+
+ // This will be useful as the difference between "the captcha doesn't exist" and
+ // "you answered the captcha wrongly"
+ return $this->captcha->exists();
+ }
+} \ No newline at end of file
diff --git a/extensions/ConfirmEdit/MathCaptcha.class.php b/extensions/ConfirmEdit/MathCaptcha.class.php
new file mode 100644
index 00000000..220df31d
--- /dev/null
+++ b/extensions/ConfirmEdit/MathCaptcha.class.php
@@ -0,0 +1,57 @@
+<?php
+
+class MathCaptcha extends SimpleCaptcha {
+
+ /** Validate a captcha response */
+ function keyMatch( $answer, $info ) {
+ return (int)$answer == (int)$info['answer'];
+ }
+
+ function addCaptchaAPI( &$resultArr ) {
+ list( $sum, $answer ) = $this->pickSum();
+ $index = $this->storeCaptcha( array( 'answer' => $answer ) );
+ $resultArr['captcha']['type'] = 'math';
+ $resultArr['captcha']['mime'] = 'text/tex';
+ $resultArr['captcha']['id'] = $index;
+ $resultArr['captcha']['question'] = $sum;
+ }
+
+ /** Produce a nice little form */
+ function getForm() {
+ list( $sum, $answer ) = $this->pickSum();
+ $index = $this->storeCaptcha( array( 'answer' => $answer ) );
+
+ $form = '<table><tr><td>' . $this->fetchMath( $sum ) . '</td>';
+ $form .= '<td>' . Xml::input( 'wpCaptchaWord', false, false, array( 'tabindex' => '1' ) ) . '</td></tr></table>';
+ $form .= Html::hidden( 'wpCaptchaId', $index );
+ return $form;
+ }
+
+ /** Pick a random sum */
+ function pickSum() {
+ $a = mt_rand( 0, 100 );
+ $b = mt_rand( 0, 10 );
+ $op = mt_rand( 0, 1 ) ? '+' : '-';
+ $sum = "{$a} {$op} {$b} = ";
+ $ans = $op == '+' ? ( $a + $b ) : ( $a - $b );
+ return array( $sum, $ans );
+ }
+
+ /** Fetch the math */
+ function fetchMath( $sum ) {
+ // class_exists() unfortunately doesn't work with HipHop, and
+ // its replacement, MWInit::classExists(), wasn't added until
+ // MW 1.18, and is thus unusable here - so instead, we'll
+ // just duplicate the code of MWInit::classExists().
+ try {
+ $r = new ReflectionClass( 'MathRenderer' );
+ } catch( ReflectionException $r ) {
+ throw new MWException( 'MathCaptcha requires the Math extension for MediaWiki versions 1.18 and above.' );
+ }
+
+ $math = new MathRenderer( $sum );
+ $math->setOutputMode( MW_MATH_PNG );
+ $html = $math->render();
+ return preg_replace( '/alt=".*?"/', '', $html );
+ }
+}
diff --git a/extensions/ConfirmEdit/MathCaptcha.php b/extensions/ConfirmEdit/MathCaptcha.php
new file mode 100644
index 00000000..297feb5c
--- /dev/null
+++ b/extensions/ConfirmEdit/MathCaptcha.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * Captcha class using simple sums and the math renderer
+ * Not brilliant, but enough to dissuade casual spam bots
+ *
+ * @file
+ * @ingroup Extensions
+ * @author Rob Church <robchur@gmail.com>
+ * @copyright © 2006 Rob Church
+ * @licence GNU General Public Licence 2.0
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ echo( "This file is an extension to the MediaWiki software and cannot be used standalone.\n" );
+ die( 1 );
+}
+
+$wgAutoloadClasses['MathCaptcha'] = dirname( __FILE__ ) . '/MathCaptcha.class.php';
diff --git a/extensions/ConfirmEdit/QuestyCaptcha.class.php b/extensions/ConfirmEdit/QuestyCaptcha.class.php
new file mode 100644
index 00000000..478fcf34
--- /dev/null
+++ b/extensions/ConfirmEdit/QuestyCaptcha.class.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * QuestyCaptcha class
+ *
+ * @file
+ * @author Benjamin Lees <emufarmers@gmail.com>
+ * @ingroup Extensions
+ */
+
+class QuestyCaptcha extends SimpleCaptcha {
+
+ /** Validate a captcha response */
+ function keyMatch( $answer, $info ) {
+ if ( is_array( $info['answer'] ) ) {
+ return in_array( strtolower( $answer ), $info['answer'] );
+ } else {
+ return strtolower( $answer ) == strtolower( $info['answer'] );
+ }
+ }
+
+ function addCaptchaAPI( &$resultArr ) {
+ $captcha = $this->getCaptcha();
+ $index = $this->storeCaptcha( $captcha );
+ $resultArr['captcha']['type'] = 'question';
+ $resultArr['captcha']['mime'] = 'text/plain';
+ $resultArr['captcha']['id'] = $index;
+ $resultArr['captcha']['question'] = $captcha['question'];
+ }
+
+ function getCaptcha() {
+ global $wgCaptchaQuestions;
+ return $wgCaptchaQuestions[mt_rand( 0, count( $wgCaptchaQuestions ) - 1 )]; // pick a question, any question
+ }
+
+ function getForm() {
+ $captcha = $this->getCaptcha();
+ if ( !$captcha ) {
+ die( "No questions found; set some in LocalSettings.php using the format from QuestyCaptcha.php." );
+ }
+ $index = $this->storeCaptcha( $captcha );
+ return "<p><label for=\"wpCaptchaWord\">{$captcha['question']}</label> " .
+ Xml::element( 'input', array(
+ 'name' => 'wpCaptchaWord',
+ 'id' => 'wpCaptchaWord',
+ 'tabindex' => 1 ) ) . // tab in before the edit textarea
+ "</p>\n" .
+ Xml::element( 'input', array(
+ 'type' => 'hidden',
+ 'name' => 'wpCaptchaId',
+ 'id' => 'wpCaptchaId',
+ 'value' => $index ) );
+ }
+
+ function getMessage( $action ) {
+ $name = 'questycaptcha-' . $action;
+ $text = wfMsg( $name );
+ # Obtain a more tailored message, if possible, otherwise, fall back to
+ # the default for edits
+ return wfEmptyMsg( $name, $text ) ? wfMsg( 'questycaptcha-edit' ) : $text;
+ }
+
+ function showHelp() {
+ global $wgOut;
+ $wgOut->setPageTitle( wfMsg( 'captchahelp-title' ) );
+ $wgOut->addWikiText( wfMsg( 'questycaptchahelp-text' ) );
+ if ( $this->storage->cookiesNeeded() ) {
+ $wgOut->addWikiText( wfMsg( 'captchahelp-cookies-needed' ) );
+ }
+ }
+}
diff --git a/extensions/ConfirmEdit/QuestyCaptcha.i18n.php b/extensions/ConfirmEdit/QuestyCaptcha.i18n.php
new file mode 100644
index 00000000..458343ee
--- /dev/null
+++ b/extensions/ConfirmEdit/QuestyCaptcha.i18n.php
@@ -0,0 +1,1093 @@
+<?php
+/**
+ * Internationalisation file for the QuestyCaptcha module of the ConfirmEdit
+ * extension.
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$messages = array();
+
+/** English */
+$messages['en'] = array(
+ 'questycaptcha-desc' => 'Questy CAPTCHA generator for Confirm Edit',
+ 'questycaptcha-addurl' => 'Your edit includes new external links.
+To help protect against automated spam, please answer the question that appears below ([[Special:Captcha/help|more info]]):',
+ 'questycaptcha-badlogin' => 'To help protect against automated password cracking, please answer the question that appears below ([[Special:Captcha/help|more info]]):',
+ 'questycaptcha-createaccount' => 'To help protect against automated account creation, please answer the question that appears below ([[Special:Captcha/help|more info]]):',
+ 'questycaptcha-create' => 'To create the page, please answer the question that appears below ([[Special:Captcha/help|more info]]):',
+ 'questycaptcha-edit' => 'To edit this page, please answer the question that appears below ([[Special:Captcha/help|more info]]):',
+ 'questycaptcha-sendemail' => 'To help protect against automated spamming, please answer the question that appears below ([[Special:Captcha/help|more info]]):',
+ 'questycaptchahelp-text' => "Web sites that accept contributions from the public, like this wiki, are often abused by spammers who use automated tools to add their links to many sites.
+While these spam links can be removed, they are a significant nuisance.
+
+Sometimes, especially when adding new web links to a page, the wiki may ask you to answer a question.
+Since this is a task that is hard to automate, it will allow most real humans to make their contributions while stopping most spammers and other robotic attackers.
+
+Please contact the [[{{MediaWiki:Grouppage-sysop}}|site administrators]] for assistance if this is unexpectedly preventing you from making legitimate contributions.
+
+Click the 'back' button in your browser to return to the page editor.",
+);
+
+/** Message documentation (Message documentation)
+ * @author Fryed-peach
+ * @author Hamilton Abreu
+ */
+$messages['qqq'] = array(
+ 'questycaptcha-desc' => '{{desc}}',
+ 'questycaptcha-addurl' => 'See also
+*{{msg-mw|captcha-addurl}}
+*{{msg-mw|Fancycaptcha-addurl}}',
+ 'questycaptcha-badlogin' => 'See also
+*{{msg-mw|captcha-badlogin}}
+*{{msg-mw|Fancycaptcha-badlogin}}',
+ 'questycaptcha-createaccount' => 'See also
+*{{msg-mw|captcha-createaccount}}
+*{{msg-mw|Fancycaptcha-createaccount}}',
+ 'questycaptcha-create' => 'See also
+*{{msg-mw|Captcha-create}}
+*{{msg-mw|Fancycaptcha-create}}',
+ 'questycaptcha-edit' => 'See also
+*{{msg-mw|Captcha-edit}}
+*{{msg-mw|Fancycaptcha-edit}}',
+ 'questycaptchahelp-text' => 'See also {{msg-mw|Captchahelp-text}}.',
+);
+
+/** Gheg Albanian (Gegë)
+ * @author Mdupont
+ */
+$messages['aln'] = array(
+ 'questycaptcha-addurl' => 'Your redakto përfshin të jashtme lidhje të reja. Për të ndihmuar në mbrojtjen kundër spam automatizuar, ju lutem përgjigje pyetjes që duket më poshtë ([[Special:Captcha/help|më shumë informacion]]):',
+ 'questycaptcha-badlogin' => 'Për të ndihmuar në mbrojtjen kundër fjalëkalimin automatizuar plasaritje, ju lutem përgjigje pyetjes që duket më poshtë ([[Special:Captcha/help|më shumë informacion]]):',
+ 'questycaptcha-createaccount' => 'Për të ndihmuar në mbrojtjen kundër krijimit llogari e automatizuar, ju lutemi përgjigje pyetjes që duket më poshtë ([[Special:Captcha/help|më shumë informacion]]):',
+ 'questycaptcha-create' => 'Për të krijuar një faqe, ju lutem përgjigje të pyetjes që duket më poshtë ([[Special:Captcha/help|më shumë informacion]]):',
+ 'questycaptcha-edit' => 'Për të redaktuar këtë faqe, ju lutem përgjigje të pyetjes që duket më poshtë ([[Special:Captcha/help|më shumë informacion]]):',
+ 'questycaptcha-sendemail' => 'Për të ndihmuar në mbrojtjen kundër spamming automatizuar, ju lutem përgjigje pyetjes që duket më poshtë ([[Special:Captcha/help|më shumë informacion]]):',
+ 'questycaptchahelp-text' => "Web faqet që të pranojë kontribute nga publiku, si ky wiki, shpesh keqtrajtohen nga spammers që përdorin mjete të automatizuar për të shtuar lidhjet e tyre me shumë vende. Përderisa këto lidhje spam mund të hiqen, ata janë një ngatërresë të rëndësishme. Ndonjëherë, sidomos kur duke shtuar të reja web lidhje me një faqe, wiki mund të kërkojë që për t'iu përgjigjur një pyetje. Ngaqë kjo është një detyrë që është e vështirë për të automatizuar, ajo do të lejojë të vërtetë njerëzit më të japin kontribute të tyre, ndërsa ndaluar spammers më dhe robotik sulmuesit të tjera. Ju lutem kontaktoni [[{{MediaWiki:Grouppage-sysop}}|faqe administratorët]] për ndihmë, nëse kjo është e papritur në parandalimin e ju nga bërja e kontributeve të ligjshme. Kliko 'butonin mbrapa në shfletuesin tuaj për t'u kthyer në faqen e redaktorit.",
+);
+
+/** Arabic (العربية)
+ * @author Meno25
+ * @author OsamaK
+ */
+$messages['ar'] = array(
+ 'questycaptcha-desc' => 'مولد كويستي كابتشا لConfirm Edit',
+ 'questycaptcha-addurl' => 'يحتوي تعديلك على وصلات خارجية جديدة.
+للمساعدة ÙÙŠ الحماية من السبام التلقائي، من Ùضلك أجب على السؤال الذي يظهر أدناه ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'questycaptcha-badlogin' => 'للمساعدة ÙÙŠ الحماية من السبام التلقائي، من Ùضلك أجب على السؤال الذي يظهر أدناه ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'questycaptcha-createaccount' => 'للمساعدة ÙÙŠ الحماية من إنشاء الحسابات التلقائي، من Ùضلك أجب على السؤال الذي يظهر أدناه ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'questycaptcha-create' => 'لتنشئ الصÙحة، من Ùضلك أجب على السؤال الذي يظهر أدناه ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'questycaptcha-edit' => 'لتحرّر هذه الصÙحة، من Ùضلك أجب على السؤال الذي يظهر أدناه ([[Special:Captcha/help|مزيد من المعلومات]]):',
+ 'questycaptchahelp-text' => "عادة ما يتم ÙÙŠ المواقع التي تقبل الردود والرسائل من العامة، كهذا الويكي، تخريب الموقع عن طريق الأشخاص الذين يستعملون آليات معينة لإرسال وصلاتهم لمواقع متعددة بصورة آلية.
+وعلى الرغم من أن هذا يمكن إزالته ولكنه مزعج للغاية.
+
+ÙÙŠ بعض الأحيان، خصوصا عند إضاÙØ© وصلات لصÙحة، ربما يعرض الويكي صورة ملونة أو مشوشة ويطلب منك إدخال كلمات موجودة بالصورة أو يعرض عليك مسألة رياضية عشوائية ويطلب منك حلها.
+ولأن هذه المهمة صعبة للغاية لأن يقوم بها برنامج، سيسمح هذا للأشخاص الآدميين بإضاÙØ© تحريراتهم بينما ستوق٠البرامج التخريبية والهجمات الآلية الأخرى.
+
+للأس٠سيكون هذا صعبا بالنسبة لمستخدمي المتصÙحات المحدودة أو التي تعتمد على النصوص Ùقط أو قراءة النصوص.
+ÙÙŠ الوقت الحالي لا يوجد لدينا بديل سمعي.
+من Ùضلك راسل [[{{MediaWiki:Grouppage-sysop}}|إداريي الموقع]] للمساعدة إذا كان هذا الأمر يمنعك من التعديل ووضع وصلات قانونية.
+
+إذا كنت تحرر صÙحة معينة: اضغط زر 'العودة' ÙÙŠ متصÙحك للعودة إلى التحرير.",
+);
+
+/** Bashkir (БашҡортÑа)
+ * @author Assele
+ */
+$messages['ba'] = array(
+ 'questycaptcha-addurl' => 'Һеҙҙең текÑтығыҙҙа Ñңы тышҡы һылтанмалар бар.
+Ðвтоматик Ñпамдан һаҡлау маҡÑатында, зинһар, түбәндә килтерелгән һорауға Ñуап бирегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'questycaptcha-badlogin' => 'Паролде автоматик ватыуҙан һаҡлау маҡÑатында, зинһар, түбәндә килтерелгән һорауға Ñуап бирегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'questycaptcha-createaccount' => 'Иҫәп Ñҙмаларын автоматик булдырыуҙан һаҡлау маҡÑатында, зинһар, түбәндә килтерелгән һорауға Ñуап бирегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'questycaptcha-create' => 'Яңы бит булдырыу Ó©Ñөн, зинһар, түбәндә килтерелгән һорауға Ñуап бирегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'questycaptcha-edit' => 'Был битте мөхәррирләү Ó©Ñөн, зинһар, түбәндә килтерелгән һорауға Ñуап бирегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'questycaptcha-sendemail' => 'Ðвтоматик Ñпамдан һаҡлау маҡÑатында, зинһар, түбәндә килтерелгән һорауға Ñуап бирегеҙ ([[Special:Captcha/help|тулыраҡ мәғлүмәт]]):',
+ 'questycaptchahelp-text' => 'Үҙенә ÑÑтәлек өҫтәргә һәм ÑÑтәлеген мөхәррирләргә мөмкинлек биргән веб-Ñайттар, шул иҫәптән был вики, йыш ҡына Ñайттарға автоматик һылтанмалар Ó©Ò«Ñ‚Ó™Ò¯ Ó©Ñөн программалар ҡулланған ÑпамлауÑыларҙың маҡÑатына әйләнә.
+Бындай һылтанмалар юйыла ала, әммә улар һиҙелерлек уңайһыҙлыҡ килтерә.
+
+Ҡайһы бер ғәмәлдәрҙе башҡарған ваҡытта — мәҫәлән, биткә һылтанма өҫтәгән ваҡытта — вики һеҙгә һорауға Ñуап бирергә тәҡдим итә ала. Был мәÑьәләне автоматик рәүештә ÑиÑеү ауыр булғанға күрә, ул күпÑелек кешеләргә мөхәррирләүҙе башҡарырға мөмкинлек бирәÑәк, һәм шул уҡ ваҡытта ÑпамлауÑыларҙың һәм башҡа автоматлаштырылған зыÑн килтереүÑеләрҙең күпÑелеген туҡтатаÑаҡ.
+
+Зинһар, әгәр бындай тикшереү һеҙгә Ñайтта намыҫ менән Ñшләргә ҡамаÑаулаһа, [[{{MediaWiki:Grouppage-sysop}}|хәкимдәргә]] мөрәжәғәт итегеҙ.
+
+Мөхәррирләүгә кире ҡайтыу Ó©Ñөн, браузерығыҙҙа кире ҡайтыу төймәһенә баҫығыҙ.',
+);
+
+/** Belarusian (TaraÅ¡kievica orthography) (‪БеларуÑÐºÐ°Ñ (тарашкевіца)‬)
+ * @author EugeneZelenko
+ * @author Jim-by
+ */
+$messages['be-tarask'] = array(
+ 'questycaptcha-addurl' => 'Вашае Ñ€Ñдагаваньне ўтрымлівае Ð²Ð¾Ð½ÐºÐ°Ð²Ñ‹Ñ ÑпаÑылкі.
+Каб абараніцца да аўтаматычнага Ñпаму, калі лаÑка, адкажыце на пытаньне, паказанае ніжÑй ([[Special:Captcha/help|Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ]]):',
+ 'questycaptcha-badlogin' => 'Ð”Ð»Ñ Ð°Ð±Ð°Ñ€Ð¾Ð½Ñ‹ Ñупраць аўтаматычнага падбору паролÑ, калі лаÑка, адкажыце на пытаньне, паказанае ніжÑй ([[Special:Captcha/help|Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ]]):',
+ 'questycaptcha-createaccount' => 'Ð”Ð»Ñ Ð°Ð±Ð°Ñ€Ð¾Ð½Ñ‹ Ñупраць аўтаматычнага ÑтварÑÐ½ÑŒÐ½Ñ Ñ€Ð°Ñ…ÑƒÐ½ÐºÐ°Ñž, калі лаÑка, адкажыце на пытаньне, паказанае ніжÑй ([[Special:Captcha/help|Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ]]):',
+ 'questycaptcha-create' => 'Ð”Ð»Ñ ÑтварÑÐ½ÑŒÐ½Ñ Ñтаронкі, калі лаÑка, адкажыце на пытаньне, паказанае ніжÑй ([[Special:Captcha/help|Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ]]):',
+ 'questycaptcha-edit' => 'Ð”Ð»Ñ Ñ€ÑÐ´Ð°Ð³Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð³Ñтай Ñтаронкі, калі лаÑка, адкажыце на пытаньне, паказанае ніжÑй ([[Special:Captcha/help|Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ]]):',
+ 'questycaptcha-sendemail' => 'У мÑтах абароны Ñупраць аўтаматычнага Ñпаму, калі лаÑка, адкажыце на пытаньне, паказанае ніжÑй ([[Special:Captcha/help|Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ]]):',
+ 'questycaptchahelp-text' => 'Ð’Ñб-Ñайты, ÑÐºÑ–Ñ Ð¿Ñ€Ñ‹Ð¼Ð°ÑŽÑ†ÑŒ запіÑÑ‹ ад грамадзкаÑьці, Ð¿Ð°Ð´Ð¾Ð±Ð½Ñ‹Ñ Ð½Ð° {{GRAMMAR:вінавальны|{{SITENAME}}}}, чаÑта атакуюцца ÑпамÑрамі, ÑÐºÑ–Ñ ÑžÐ¶Ñ‹Ð²Ð°ÑŽÑ†ÑŒ Ð°ÑžÑ‚Ð°Ð¼Ð°Ñ‚Ñ‹Ð·Ð°Ð²Ð°Ð½Ñ‹Ñ Ñ–Ð½ÑтрумÑнты, каб зьмÑшчаць Ñвае ÑпаÑылкі на шмат Ñайтаў.
+І Ñ…Ð°Ñ†Ñ Ð³ÑÑ‚Ñ‹Ñ ÑпаÑылкі могуць быць прыбраныÑ, Ñны выклікаюць Ð·Ð½Ð°Ñ‡Ð½Ñ‹Ñ Ð½ÑзручнаÑьці.
+
+ЧаÑам, аÑабліва калі Ð’Ñ‹ дадаеце Ð½Ð¾Ð²Ñ‹Ñ Ð²Ð¾Ð½ÐºÐ°Ð²Ñ‹Ñ ÑпаÑылкі на Ñтаронку, {{SITENAME}} можа паказаць Вам выÑву з калÑровым ці Ñкажоным Ñ‚ÑкÑтам Ñ– папраÑіць увеÑьці гÑÑ‚Ñ‹ Ñ‚ÑкÑÑ‚.
+Праз тое, што гÑтае заданьне цÑжка аўтаматызаваць, Ñно дазволіць большаÑьці Ñ€Ñальных людзей рабіць запіÑÑ‹, але Ñпыніць большаÑьць ÑпамÑраў Ñ– іншых аўтаматызаваных робатаў.
+
+Ðа жаль, гÑта можа выклікаць нÑзручнаÑьці Ð´Ð»Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°Ñž з абмежаваньнÑмі па зроку Ñ– Ð´Ð»Ñ Ñ‚Ñ‹Ñ…, хто ўжывае Ñ‚ÑкÑÑ‚Ð°Ð²Ñ‹Ñ Ñ†Ñ– Ð¼Ð¾ÑžÐ½Ñ‹Ñ Ð±Ñ€Ð°ÑžÐ·Ñры.
+Ðа гÑÑ‚Ñ‹ момант мы Ð½Ñ Ð¼Ð°ÐµÐ¼ аўдыё-альтÑрнатывы гÑтай праверцы.
+Калі лаÑка, зьвÑжыцеÑÑ Ð· [[{{MediaWiki:Grouppage-sysop}}|адмініÑтратарамі]], калі гÑÑ‚Ð°Ñ Ð¿Ñ€Ð°Ð²ÐµÑ€ÐºÐ° перашкаджае Вам рабіць ÑÐ»ÑƒÑˆÐ½Ñ‹Ñ Ð·Ð°Ð¿Ñ–ÑÑ‹.
+
+ÐаціÑьніце кнопку «назад» у Вашым браўзÑры, каб вÑрнуцца да Ñ€ÑÐ´Ð°Ð³Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ñтаронкі.',
+);
+
+/** Breton (Brezhoneg)
+ * @author Fulup
+ */
+$messages['br'] = array(
+ 'questycaptcha-addurl' => "Degaset hoc'h liammoù diavaez nevez.
+A-benn hor skoazellañ da stourm a-enep d'ar strob emgefre, respontit d'ar goulenn a-is ([[Special:Captcha/help|muioc'h a ditouroù]]) :",
+ 'questycaptcha-badlogin' => "A-benn hor skoazellañ da stourm a-enep ar freuzañ gerioù-tremen gant ardivinkoù, respontit d'ar goulenn a-is ([[Special:Captcha/help|muioc'h a ditouroù]]) :",
+ 'questycaptcha-createaccount' => "A-benn hor skoazellañ da stourm a-enep ar c'hrouiñ kontoù emgefre, respontit d'ar goulenn a-is ([[Special:Captcha/help|muioc'h a ditouroù]]) :",
+ 'questycaptcha-create' => "A-benn gellout krouiñ ar bajenn, respontit d'ar goulenn a-is ([[Special:Captcha/help|muioc'h a ditouroù]]) :",
+ 'questycaptcha-edit' => "A-benn gellout degas kemmoù er bajenn-mañ, respontit d'ar goulenn a-is ([[Special:Captcha/help|muioc'h a ditouroù]]) :",
+ 'questycaptcha-sendemail' => "Evit hor skoazellañ da zizarbenn ar strob emgefre, respontit d'ar goulenn skrivet dindan ([[Special:Captcha/help|gouzout hiroc'h]]) :",
+ 'questycaptchahelp-text' => "Alies e vez taget al lec'hiennoù a zegemer kemennadennoù a-berzh an holl, evel ar wiki-mañ, gant ar stroberien a implij ostilhoù emgefre evit postañ o liammoù war-du lec'hiennoù a bep seurt. Ha pa c'hallfent bezañ diverket, kazus-mat ez eo ar stroboù-se memes tra.
+
+A-wezhioù, dreist-holl pa vez ouzhpennet liammoù Web nevez war ur bajenn, e c'hallo ar wiki-mañ sevel ur goulenn ouzhoc'h.
+Un trevell start da emgefrekaat eo hemañ. Gant se e c'hallo an implijerien wirion postañ ar pezh a fell dezho tra ma vo lakaet un harz d'an darn vrasañ eus ar stroberien pe d'an dagerien robotek all.
+
+Kit e darempred gant [[{{MediaWiki:Grouppage-sysop}}|merourien al lec'hienn]] evit bezañ skoazellet m'hoc'h eus diaesterioù da gemer perzh da vat abalamour d'an teknik-se.
+
+Pouezit war bouton 'kent' ho merdeer evit distreiñ d'ar bajenn gemmañ.",
+);
+
+/** Bosnian (Bosanski)
+ * @author CERminator
+ */
+$messages['bs'] = array(
+ 'questycaptcha-addurl' => 'VaÅ¡a izmjena ukljuÄuje nove vanjske linkove.
+Da bi pomogli protiv automatskog spama, molimo odgovorite na pitanje koje je prikazano ispod ([[Special:Captcha/help|više informacija]]):',
+ 'questycaptcha-badlogin' => 'Da bi pomogli u sprjeÄavanju protiv automatskog probijanja Å¡ifre, molimo Vas da odgovorite na pitanje koje je prikazano ispod ([[Special:Captcha/help|viÅ¡e informacija]]):',
+ 'questycaptcha-createaccount' => 'Da bi pomogli u sprjeÄavanju automatskog pravljenja raÄuna, molimo Vas da odgovorite na pitanje koje je prikazano ispod ([[Special:Captcha/help|viÅ¡e informacija]]):',
+ 'questycaptcha-create' => 'Da bi ste napravili stranicu, molimo Vas da odgovorite na pitanje koje je prikazano ispod ([[Special:Captcha/help|više informacija]]):',
+ 'questycaptcha-edit' => 'Da bi ste uredili ovu stranicu, molimo Vas da odgovorite na pitanje koje je prikazano ispod ([[Special:Captcha/help|više informacija]]):',
+ 'questycaptcha-sendemail' => 'Da bi pomogli u zaštiti protiv automatskog spamovanja, molimo Vas da odgovorite na pitanje koje je prikazano ispod ([[Special:Captcha/help|više informacija]]):',
+ 'questycaptchahelp-text' => "Websajtovi koji podržavaju doprinose iz javnosti, kao Å¡to je ovaj viki, Äesto zloupotrebljavaju vandali koji koriste automatizovane alate da Å¡alju svoje linkove ka mnogim sajtovima.
+Iako se ovi neželjeni linkovi mogu ukloniti, oni ipak zadaju veliku muku.
+
+Ponekad, pogotovo kad se dodaju novi internet linkovi na stranicu, wiki može tražiti od Vas da odgovorite na pitanje. PoÅ¡to je teÅ¡ko automatizovati ovakav zadatak, on omogućuje svim pravim ljudima da vrÅ¡e svoje izmjene, ali će zato sprijeÄiti vandale i ostale robotske napadaÄe.
+
+Molimo Vas da kontaktirate [[{{MediaWiki:Grouppage-sysop}}|administratore stranice]] za pomoć ako je ovo prepreka za Vas da pravite uobiÄajene izmjene.
+
+Kliknite 'nazad' ('back') dugme vašeg preglednika da se vratite na polje za unos teksta.",
+);
+
+/** Catalan (Català)
+ * @author Paucabot
+ * @author Toniher
+ */
+$messages['ca'] = array(
+ 'questycaptcha-addurl' => "L'edició inclou enllaços externs nous.
+Per ajudar a protegir-se contra la brossa automàtica, responeu la pregunta que apareix a continuació ([[Special:Captcha/help|més informació]]):",
+ 'questycaptcha-create' => 'Per crear la pàgina, per favor responeu la pregunta que apareix a continuació ([[Special:Captcha/help|més informació]]):',
+);
+
+/** Czech (ÄŒesky)
+ * @author Mormegil
+ */
+$messages['cs'] = array(
+ 'questycaptcha-addurl' => 'Vaše editace obsahuje nové externí odkazy.
+V zájmu ochrany před automatickým spamováním musíte zodpovědět níže uvedenou otázku ([[Special:Captcha/help|další informace]]):',
+ 'questycaptcha-badlogin' => 'V rámci ochrany proti automatickým pokusům uhodnout heslo musíte zodpovědět níže uvedenou otázku ([[Special:Captcha/help|další informace]]):',
+ 'questycaptcha-createaccount' => 'V rámci ochrany pÅ™ed automatickým vytvářením úÄtů musíte pro provedení registrace zodpovÄ›dÄ›t níže uvedenou otázku ([[Special:Captcha/help|další informace]]):',
+ 'questycaptcha-create' => 'Abyste mohli založit stránku, musíte zodpovědět níže uvedenou otázku ([[Special:Captcha/help|další informace]]):',
+ 'questycaptcha-edit' => 'Abyste mohli editovat tuto stránku, musíte zodpovědět níže uvedenou otázku ([[Special:Captcha/help|další informace]]):',
+ 'questycaptcha-sendemail' => 'V rámci ochrany proti automatickému spamování musíte zodpovědět níže zobrazenou otázku ([[Special:Captcha/help|více informací]]):',
+ 'questycaptchahelp-text' => 'Webové stránky, do kterých mohou pÅ™ispívat jejich návÅ¡tÄ›vníci (jako například tato wiki), jsou Äasto terÄem spammerů, kteří pomocí automatických nástrojů vkládají své odkazy na velké množství stránek. PÅ™estože lze tento spam odstranit, pÅ™edstavuje nepříjemné obtěžování.
+
+Někdy, zvláště při přidávání nových webových odkazů, vás wiki může požádat o zodpovězení otázky.
+Jelikož takovou úlohu lze jen těžko automatizovat, skuteÄní lidé mohou dále pÅ™ispívat, zatímco vÄ›tÅ¡inu spammerů a jiných robotických útoÄníků to zastaví.
+
+Pokud vám to brání v užiteÄných příspÄ›vcích a potÅ™ebujete pomoc, kontaktujte laskavÄ› [[{{MediaWiki:Grouppage-sysop}}|správce serveru]].
+
+Pro návrat na pÅ™edchozí stránku stisknÄ›te ve svém prohlížeÄi tlaÄítko „zpÄ›t“.',
+);
+
+/** German (Deutsch)
+ * @author Kghbln
+ * @author Pill
+ * @author Umherirrender
+ */
+$messages['de'] = array(
+ 'questycaptcha-addurl' => 'Deine Bearbeitung enthält neue externe Links.
+Zum Schutz vor automatisiertem Spam beantworte bitte die untenstehende Frage ([[Special:Captcha/help|weitere Informationen]]):',
+ 'questycaptcha-badlogin' => 'Zum Schutz vor einer Kompromittierung deines Benutzerkontos beantworte bitte die folgende Frage ([[Special:Captcha/help|weitere Informationen]]):',
+ 'questycaptcha-createaccount' => 'Zum Schutz vor einer automatisierten Anlage von Benutzerkonten ist es erforderlich, die folgende Frage zu beantworten ([[Special:Captcha/help|weitere Informationen]]):',
+ 'questycaptcha-create' => 'Bitte beantworte die folgende Frage, um diese Seite erstellen zu können ([[Special:Captcha/help|weitere Informationen]]):',
+ 'questycaptcha-edit' => 'Bitte beantworte die folgende Frage, um diese Seite bearbeiten zu können ([[Special:Captcha/help|weitere Informationen]]):',
+ 'questycaptcha-sendemail' => 'Zum Schutz vor automatisiertem Spam bitten wir dich, die unten angezeigte Frage zu beantworten ([[Special:Captcha/help|weitere Informationen]]):',
+ 'questycaptchahelp-text' => 'Internetangebote, die — wie dieses Wiki — für Beiträge von praktisch jedem offen sind, werden häufig von Spammern missbraucht, welche versuchen, mithilfe entsprechender Werkzeuge ihre Links automatisch auf vielen Webseiten zu platzieren.
+Zwar können derartige Spam-Links wieder entfernt werden, doch stellen sie trotzdem ein erhebliches Ärgernis dar.
+
+In manchen Fällen, meist beim Versuch, neue Weblinks zu einer Seite hinzuzufügen, kann es vorkommen, dass du um die Beantwortung einer Frage gebeten wirst.
+Da es kaum möglich ist, dies zu automatisieren, können hierdurch die meisten Spammer aufgehalten werden. Menschlichen Benutzer sollten ihre Bearbeitungen hingegen durchführen können.
+
+Sollte dich dieses Verfahren beim Vornehmen erwünschter Bearbeitungen behindern, wende dich bitte an einen [[{{MediaWiki:Grouppage-sysop}}|Administrator]], um Unterstützung zu erhalten.
+
+Der „Zurück“-Knopf des Browsers führt zurück zum Bearbeitungsfenster.',
+);
+
+/** German (formal address) (‪Deutsch (Sie-Form)‬)
+ * @author Imre
+ * @author Umherirrender
+ */
+$messages['de-formal'] = array(
+ 'questycaptcha-addurl' => 'Ihre Bearbeitung enthält neue externe Links.
+Zum Schutz vor automatisiertem Spam beantworten Sie bitte die untenstehende Frage ([[Special:Captcha/help|weitere Informationen]]):',
+ 'questycaptcha-badlogin' => 'Zum Schutz vor einer Kompromittierung Ihres Benutzerkontos beantworten Sie bitte die folgende Frage ([[Special:Captcha/help|weitere Informationen]]):',
+ 'questycaptcha-create' => 'Bitte beantworten Sie die folgende Frage, um diese Seite erstellen zu können ([[Special:Captcha/help|weitere Informationen]]):',
+ 'questycaptcha-edit' => 'Bitte beantworten Sie die folgende Frage, um diese Seite bearbeiten zu können ([[Special:Captcha/help|weitere Informationen]]):',
+ 'questycaptcha-sendemail' => 'Zum Schutz vor automatisiertem Spam bitten wir Sie, die folgende Frage zu beantworten ([[Special:Captcha/help|weitere Informationen]]):',
+ 'questycaptchahelp-text' => 'Internetangebote, die — wie dieses Wiki — für Beiträge von praktisch jedem offen sind, werden häufig von Spammern missbraucht, welche versuchen, mithilfe entsprechender Werkzeuge ihre Links automatisch auf vielen Webseiten zu platzieren.
+Zwar können derartige Spam-Links wieder entfernt werden, doch stellen sie trotzdem ein erhebliches Ärgernis dar.
+
+In manchen Fällen, meist beim Versuch, neue Weblinks zu einer Seite hinzuzufügen, kann es vorkommen, dass Sie um die Beantwortung einer Frage gebeten wirst.
+Da es kaum möglich ist, dies zu automatisieren, können hierdurch die meisten Spammer aufgehalten werden. Menschlichen Benutzer sollten ihre Bearbeitungen hingegen durchführen können.
+
+Sollte Sie dieses Verfahren beim Vornehmen erwünschter Bearbeitungen behindern, wenden Sie sich bitte an einen [[{{MediaWiki:Grouppage-sysop}}|Administrator]], um Unterstützung zu erhalten.
+
+Der „Zurück“-Knopf des Browsers führt zurück zum Bearbeitungsfenster.',
+);
+
+/** Lower Sorbian (Dolnoserbski)
+ * @author Michawiki
+ */
+$messages['dsb'] = array(
+ 'questycaptcha-addurl' => 'Twója změna wopśimujo nowe eksterne wótkaze.
+Za šćit pśeśiwo zawtomatizěrowanemu spamoju, wótegroń pšosym na pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):',
+ 'questycaptcha-badlogin' => 'Za šćit pśeśiwo zawtomatizěrowanemu wusnuchlenjeju gronidła, wótegroń pšosym na pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):',
+ 'questycaptcha-createaccount' => 'Za šćit pśeśiwo zawtomatizěrowanemu napóranjeju kontow, wótegroń pšosym na pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):',
+ 'questycaptcha-create' => 'Aby napórał bok, wótegroń pšosym na pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):',
+ 'questycaptcha-edit' => 'Aby wobźěłał toś ten bok, wótegroń pšosym na pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):',
+ 'questycaptcha-sendemail' => 'Za šćit pśeśiwo awtomatiskemu spamowanjeju, wótegroń pšosym pšašanje, kótarež pokazujo se dołojce ([[Special:Captcha/help|dalšne informacije]]):',
+ 'questycaptchahelp-text' => 'Websedła, kótarež akceptěruju zjawne pśinoski, ako toś ten wiki, znjewužywaju se cesto wót spamowarjow, kótarež wužywaju zawtomatizěrowane rědy, aby pśidali swóje wótkaze na wjele sedłow. Lěcrownož toś te spamowe wótkaze daju se wótpóraś, su wóne bejna pógóršota.
+
+Wótergi, wósebnje, gaž se nowe wótkaze pśidawaju bokoju, jo móžno, až se śi wiki něco pšaša.
+Dokulaž to jo nadawk, kótaryž dajo se śěžko awtomatizěrowaś, dowólujo to napšawdnym luźam jich pśinoski wótpósłaś, nejwěcej spamowarjow a robotowe ataki pak se zaźaržyju.
+
+Staj se pšosym z [[{{MediaWiki:Grouppage-sysop}}|administratorami sedła]] z pšosbu wó pomoc do zwiska, jolic to śi njewócakane zawobarujo słanje legitimnych pśinoskow.
+
+Klikni na tłocašk "Slědk" we swójom wobglědowaku, aby wróśił se k wobźěłowańskemu woknoju.',
+);
+
+/** Greek (Ελληνικά)
+ * @author Omnipaedista
+ */
+$messages['el'] = array(
+ 'questycaptcha-addurl' => 'Η επεξεÏγασία σας πεÏιέχει νέους εξωτεÏικοÏÏ‚ συνδέσμους.
+Για να μας βοηθήσετε στην Ï€Ïοστασία κατά των αυτοματοποιημένων σπαμ, παÏακαλώ απαντήστε στην παÏακάτω εÏώτηση ([[Special:Captcha/help|πεÏισσότεÏες πληÏοφοÏίες]]):',
+);
+
+/** Esperanto (Esperanto)
+ * @author Castelobranco
+ */
+$messages['eo'] = array(
+ 'questycaptcha-addurl' => 'Via redakto entenas novajn eksterajn ligilojn.
+Por helpi protekti kontraÅ­ aÅ­tomatan spamadon, bonvolu respondu la demandon sube ([[Special:Captcha/help|pli da informo]]):',
+ 'questycaptcha-badlogin' => 'Por helpi protekti kontraÅ­ aÅ­tomata divenado de pasvortoj, bonvolu respondu la demandon sube ([[Special:Captcha/help|pli da informo]]):',
+ 'questycaptcha-createaccount' => 'Por helpi protekti kontraÅ­ aÅ­tomata konto-kreado, bonvolu respondu la demandon sube ([[Special:Captcha/help|pli da informo]]):',
+ 'questycaptcha-create' => 'Por krei la paÄon, bonvolu respondu la demandon sube ([[Special:Captcha/help|pli da informo]]):',
+ 'questycaptcha-edit' => 'Por redakti ĉi tiun paÄon, bonvolu respondu la demandon sube ([[Special:Captcha/help|pli da informo]]):',
+ 'questycaptchahelp-text' => "Retejoj kiuj akcepti informon de publiko, kiel ĉi tiu vikio, estas ofte misuzitaj de spamistoj kiu uzas aÅ­tomatajn ilojn por afiÅi ligilojn al multaj retejoj. Kvankam ĉi tiu spam-ligiloj estas forigeblaj, ili estas granda Äeno.
+
+Iufoje, ja kiam aldonante novajn retligilojn al paÄo, la vikio eble petos al vi respondi demandon. Tial ĉi tiu tasko estas malfacila por fari aÅ­tomate, ebligos al realaj homoj fari aldonaĵojn, kaj malebligos spamistojn kaj aliajn robotajn atakilojn.
+
+Bonvolu kontakti la [[{{MediaWiki:Grouppage-sysop}}|administrantojn de la retejo]] por helpo se ĉi tio malebligas al vi fari bonan aldonon.
+
+Klaku la 'reiru' butonon en via retumilo por reiri al la paÄo-redaktilo.",
+);
+
+/** Spanish (Español)
+ * @author Crazymadlover
+ * @author Pertile
+ */
+$messages['es'] = array(
+ 'questycaptcha-addurl' => 'Tu edición incluye nuevos vínculos externos.
+Para ayudar a proteger contra spam automático, por favor responde la pregunta que aparece abajo ([[Special:Captcha/help|más información]]):',
+ 'questycaptcha-badlogin' => 'Para ayudar a proteger contra craqueo de contraseña, por favor responde la pregunta que aparece abajo ([[Special:Captcha/help|más información]]):',
+ 'questycaptcha-createaccount' => 'Para ayudar a proteger contra la creación automática de cuentas, por favor responde la pregunta que aparece abajo ([[Special:Captcha/help|más información]]):',
+ 'questycaptcha-create' => 'Para crear la página, por favor responde la pregunta que aparece abajo ([[Special:Captcha/help|más información]]):',
+ 'questycaptcha-edit' => 'Para editar esta página, por favor responde la pregunta que aparece abajo ([[Special:Captcha/help|más información]]):',
+ 'questycaptcha-sendemail' => 'Para protegernos contra el spam automatizado por favor conteste la pregunta que aparece a continuación ([[Special:Captcha/help|más información]]):',
+ 'questycaptchahelp-text' => "Sitios Web que aceptan contribuciones del público, como este wiki, son constantemente abusadas por enviadores de spam quienes usan herramientas automáticas para agregar sus enlaces a muchos sitios.
+Así estos enlaces spam puedan ser borrados, son una molestia significativa.
+
+A veces, especialmente cuando se agregan nuevos enlaces web a una página, el wiki puede pedirte que respondas a una pregunta.
+Ya que esta es una tarea que es difícil de automatizar, eso permitirá que más seres humanos reales hagan sus contribuciones mientras detiene a la mayor parte de enviadores de spam y otros atacantes robóticos.
+
+Por favor contacta a los [[{{MediaWiki:Grouppage-sysop}}|administradores del sitio]] para asistencia si esto está impidiéndote hacer contribuciones legítimas.
+
+Haz click en el botón 'atrás' en tu navegador para regresar al editor de página.",
+);
+
+/** Basque (Euskara)
+ * @author Kobazulo
+ */
+$messages['eu'] = array(
+ 'questycaptcha-create' => 'Orrialdea sortzeko, behean agertzen den galdera erantzun ezazu mesedez ([[Special:Captcha/help|informazio gehiago]]):',
+ 'questycaptcha-edit' => 'Orrialde hau aldatzeko, behean agertzen den galdera erantzun ezazu mesedez ([[Special:Captcha/help|informazio gehiago]]):',
+);
+
+/** Finnish (Suomi)
+ * @author Crt
+ * @author Nike
+ */
+$messages['fi'] = array(
+ 'questycaptcha-addurl' => 'Muokkauksesi sisältää uusia ulkoisia linkkejä.
+Automatisoitujen roskamuokkausten välttämiseksi vastaa alla olevaan kysymykseen ([[Special:Captcha/help|lisätietoja]]):',
+ 'questycaptcha-badlogin' => 'Automatisoidun salasanan murtamisen estämiseksi vastaa alla olevaan kysymykseen ([[Special:Captcha/help|lisätietoja]]):',
+ 'questycaptcha-createaccount' => 'Automaattisen käyttäjätunnusten luonnin estämiseksi vastaa alla olevaan kysymykseen ([[Special:Captcha/help|lisätietoja]]):',
+ 'questycaptcha-create' => 'Luodaksesi sivun vastaa alla olevaan kysymykseen ([[Special:Captcha/help|lisätietoja]]):',
+ 'questycaptcha-edit' => 'Muokataksesi tätä sivua vastaa alla olevaan kysymykseen ([[Special:Captcha/help|lisätietoja]]):',
+ 'questycaptcha-sendemail' => 'Automatisoidun roskapostin lähettämisen estämiseksi vastaa alla olevaan kysymykseen ([[Special:Captcha/help|lisätietoja]]):',
+ 'questycaptchahelp-text' => 'Web-sivustot, jotka hyväksyvät materiaalia yleisöltä, kuten tämä wiki, joutuvat usein automaattisia työkaluja käyttävien "spämmääjien" kohteeksi jotka lisäävät linkkejä eri sivustoille. Vaikka nämä roskalinkit voidaan poistaa, ne ovat merkittävä haittatekijä.
+
+Joskus, erityisesti kun lisäät uusia Web-linkkejä sivulle, wiki saattaa pyytää sinua vastaamaan kysymykseen.
+Koska tämä on vaikeasti automatisoitava tehtävä, se antaa useimpien oikeiden henkilöiden osallistua estäen roskamuokkausten ja muiden automaattisten hyökkäysten tekijöitä.
+
+Ota yhteyttä [[{{MediaWiki:Grouppage-sysop}}|ylläpitäjiin]] saadaksesi avustusta jos tämä odottamattomasti estää sinua tekemästä asiallisia muokkauksia.
+
+Napsauta selaimesi \'takaisin\'-painiketta palataksesi sivumuokkaimeen.',
+);
+
+/** French (Français)
+ * @author IAlex
+ * @author Verdy p
+ */
+$messages['fr'] = array(
+ 'questycaptcha-desc' => "Générateur de questions ''captcha'' pour confirmer les modifications",
+ 'questycaptcha-addurl' => 'Votre modification inclut de nouveaux liens externes.
+Pour nous aider dans la protection contre le pourriel automatisé, veuillez répondre à la question ci-dessous ([[Special:Captcha/help|plus d’informations]]) :',
+ 'questycaptcha-badlogin' => 'Afin de nous aider à prévenir le cassage des mots de passe par des automates, veuillez répondre à la question ci-dessous ([[Special:Captcha/help|plus d’informations]]) :',
+ 'questycaptcha-createaccount' => 'Afin de nous aider à lutter contre les créations automatiques de comptes, veuillez répondre à la question qui apparaît ci-dessous ([[Special:Captcha/help|plus d’informations]]) :',
+ 'questycaptcha-create' => 'Pour créer la page, veuillez répondre à la question ci-dessous ([[Special:Captcha/help|plus d’informations]]) :',
+ 'questycaptcha-edit' => 'Pour modifier cette page, veuillez répondre à la question ci-dessous ([[Special:Captcha/help|plus d’informations]]) :',
+ 'questycaptcha-sendemail' => 'Afin de nous aider à prévenir le spam automatique, veuillez répondre à la question ci-dessous ([[Special:Captcha/help|plus d’informations]]) :',
+ 'questycaptchahelp-text' => 'Les sites web qui acceptent des contributions du public, tels que ce wiki, sont souvent victimes de polluposteurs qui utilisent des outils automatisés pour placer de nombreux liens vers leurs sites.
+Même si cette pollution peut être effacée, elle n’en reste pas moins irritante.
+
+Parfois, particulièrement lors de l’ajout de nouveaux liens externes dans une page, le wiki peut vous demander de répondre à une question.
+Cette tâche étant difficile à accomplir de façon automatisée, cela permet à la plupart des humains de réaliser leurs contributions tout en stoppant la plupart des polluposteurs et autres attaquants robotisés.
+
+Veuillez contacter [[{{MediaWiki:Grouppage-sysop}}|les administrateurs du site]] si cela vous empêche de façon inattendue de faire des contributions légitimes.
+
+Cliquez sur le bouton « Précédent » de votre navigateur pour revenir à la page de modification.',
+);
+
+/** Galician (Galego)
+ * @author Toliño
+ */
+$messages['gl'] = array(
+ 'questycaptcha-desc' => 'Xerador de preguntas CAPTCHA para Confirm Edit',
+ 'questycaptcha-addurl' => 'A súa edición inclúe novas ligazóns externas.
+Para axudar na protección contra o spam automatizado, conteste a pregunta que aparece a continuación ([[Special:Captcha/help|máis información]]):',
+ 'questycaptcha-badlogin' => 'Para axudar na protección contra o descifrado automatizado de contrasinais, conteste a pregunta que aparece a continuación ([[Special:Captcha/help|máis información]]):',
+ 'questycaptcha-createaccount' => 'Para axudar na protección contra a creación automática de contas, conteste a pregunta que aparece a continuación ([[Special:Captcha/help|máis información]]):',
+ 'questycaptcha-create' => 'Para crear a páxina, conteste a pregunta que aparece a continuación ([[Special:Captcha/help|máis información]]):',
+ 'questycaptcha-edit' => 'Para editar esta páxina, conteste a pregunta que aparece a continuación ([[Special:Captcha/help|máis información]]):',
+ 'questycaptcha-sendemail' => 'Para contribuír na protección contra o spam automatizado, responda a pregunta que aparece a continuación ([[Special:Captcha/help|máis información]]):',
+ 'questycaptchahelp-text' => "Os sitios web que aceptan publicar as contribucións dos usuarios, coma este wiki, sofren, con frecuencia, o abuso por parte de ''spammers'' que usan ferramentas que automatizan a inclusión de lixo en forma de ligazóns publicitarias, nunha chea de páxinas, en pouco tempo.
+Mentres as devanditas ligazóns non son eliminadas supoñen unha molestia e unha perda de tempo.
+
+En ocasións, en particular cando engada algunha nova ligazón externa, o wiki pode pedirlle que conteste unha pregunta.
+Como esta tarefa é difícil de automatizar, permite distinguir entre persoas e robots e dificulta os ataques automatizados dos ''spammers''.
+
+Por favor, contacte cun [[{{MediaWiki:Grouppage-sysop}}|administrador do sitio]] para solicitar axuda se o sistema lle impide rexistrarse para facer contribucións lexítimas.
+
+Prema no botón \"atrás\" do seu navegador para volver á páxina de edición.",
+);
+
+/** Swiss German (Alemannisch)
+ * @author Als-Holder
+ */
+$messages['gsw'] = array(
+ 'questycaptcha-addurl' => 'In Dynere Bearbeitig het s neji extärni Gleicher (Links).
+As Schutz gege automatischi Spam, beantwort bitte d FRog, wu do unter gnännt wird ([[Special:Captcha/help|meh Informatione]]):',
+ 'questycaptcha-badlogin' => 'As Schutz gege ne automatisch Passwort-Knacke, beantwort bitte d Frog, wu do unte gnännt wird ([[Special:Captcha/help|meh Informatione]]):',
+ 'questycaptcha-createaccount' => 'As Schutz gege ne automatisch Aalege vu Benutzerkonte, beantwort bitte d Frog, wu do unte gnännt wird ([[Special:Captcha/help|meh Informatione]]):',
+ 'questycaptcha-create' => 'Go d Syte aalege, beantwort bitte d Frog, wu do unte gnännt wird ([[Special:Captcha/help|meh Informatione]]):',
+ 'questycaptcha-edit' => 'Go die Syte bearbeite, beantwort bitte d Frog, wu do unte gnännt wird ([[Special:Captcha/help|meh Informatione]]):',
+ 'questycaptcha-sendemail' => 'As Schutz gege e automatischs Spamming, beantwort bitte d Frog, wu do unte gnännt wird ([[Special:Captcha/help|meh Informatione]]):',
+ 'questycaptchahelp-text' => "Websyte, wu jede cha byytrage, wie des Wiki, wäre vylmol missbrucht vu Spammer, wu automatischi Wärchzyg bruche go ihri Gleicher (Links) in meglischt vyli Syte yyfiege.
+Au wänn die Spamgleicher chenne wider uusegnuu wäre, sin si einewäg e zimlig Ärgernis.
+
+Ab un zue, vor allem wänn neji Netzgleicher (Weblinks) in e Syte yygfiegt wäre, forderet s Wiki Di villicht uf, e Frog z beantworte.
+Wel des e Ufgab isch, wu mer schwär cha automatisiere, isch des e Megligkeit, Spammer un anderi automatischi Attacke z verhindere, derwylscht di meischte mänschlige Benutzer ihri Bearbeitige chenne byytrage.
+
+Bitte nimm Kontakt uf zue dr [[{{MediaWiki:Grouppage-sysop}}|Website-Administratore]] fir Hilf, wänn des unerwarteterwys verhinderet, ass Du chasch rächtmäßigi Bearbeitige mache.
+
+Druck dr 'Zruck'-Chnopf in Dyym Browser go zuem Bearbeitigsfänschter zruckgoh.",
+);
+
+/** Hebrew (עברית)
+ * @author Rotemliss
+ * @author YaronSh
+ */
+$messages['he'] = array(
+ 'questycaptcha-addurl' => '×¢×¨×™×›×ª×›× ×›×•×œ×œ×ª ×§×™×©×•×¨×™× ×—×™×¦×•× ×™×™× ×—×“×©×™×.
+×›×”×’× ×” מפני ספ×× ×וטומטי, ×× × ×¢× ×• על הש×לה המופיעה להלן ([[Special:Captcha/help|מידע נוסף]]):',
+ 'questycaptcha-badlogin' => '×›×”×’× ×” מפני פריצת סיסמ×ות ×וטומטית, ×× × ×¢× ×• על הש×לה המופיעה להלן ([[Special:Captcha/help|מידע נוסף]]):',
+ 'questycaptcha-createaccount' => '×›×”×’× ×” מפני יצירת חשבונות ×וטומטית, ×× × ×¢× ×• על הש×לה המופיעה להלן ([[Special:Captcha/help|מידע נוסף]]):',
+ 'questycaptcha-create' => 'כדי ליצור ×ת הדף, ×× × ×¢× ×• על הש×לה המופיעה להלן ([[Special:Captcha/help|מידע נוסף]]):',
+ 'questycaptcha-edit' => 'כדי לערוך ×ת הדף, ×× × ×¢× ×• על הש×לה המופיעה להלן ([[Special:Captcha/help|מידע נוסף]]):',
+ 'questycaptcha-sendemail' => 'כדי לסייע בהגנה מפני הודעות ספ×× ×וטומטיות, × × ×œ×¢× ×•×ª על הש×לה המופיעה להלן ([[Special:Captcha/help|מידע נוסף]]):',
+ 'questycaptchahelp-text' => "×¤×¢×ž×™× ×¨×‘×•×ª ×ž× ×¦×œ×™× ×¡×¤××ž×¨×™× ××ª×¨×™× ×©×ž×§×‘×œ×™× ×ª×•×›×Ÿ מהציבור, כמו ×תר הוויקי ×”×–×”, כדי להוסיף ×ת ×”×§×™×©×•×¨×™× ×©×œ×”× ×œ××ª×¨×™× ×¨×‘×™× ×‘×ינטרנט, ב×מצעות ×›×œ×™× ×וטומטיי×.
+××ž× × × ×™×ª×Ÿ להסיר ×ת קישורי הספ×× ×”×œ×œ×•, ×ך ×”× ×ž×”×•×•×™× ×ž×˜×¨×“ משמעותי.
+
+לעתי×, בעיקר כש××ª× ×ž×›× ×™×¡×™× ×§×™×©×•×¨×™ ×ינטרנט ×—×“×©×™× ×œ×ª×•×š עמוד, ×תר הוויקי עשוי לבקש ×ž×›× ×œ×¢× ×•×ª על ש×לה.
+כיוון שזו משימה שקשה לבצעה בצורה ×וטומטית, הדבר ×™×פשר לבני־××“× ××ž×™×ª×™×™× ×œ×©×œ×•×— ×ת הדפי×, ×ך יעצור ×ת רוב הספ××ž×¨×™× ×•×”×ž×ª×§×™×¤×™× ×”×¨×•×‘×•×˜×™×™× ×”×חרי×.
+
+×× × ×¦×¨×• קשר ×¢× [[{{MediaWiki:Grouppage-sysop}}|מפעילי המערכת]] לעזרה ×× ×”×ž×¢×¨×›×ª מונעת ×ž×›× ×‘×ופן בלתי צפוי לבצע עריכות לגיטימיות.
+
+לחצו על הכפתור 'Back' בדפדפן ×©×œ×›× ×›×“×™ לחזור לדף העריכה.",
+);
+
+/** Upper Sorbian (Hornjoserbsce)
+ * @author Michawiki
+ */
+$messages['hsb'] = array(
+ 'questycaptcha-addurl' => 'Twoja změna wobsahuje nowe eksterne wotkazy.
+Za škit přećiwo awtomatizowanemu spamej, wotmołw prošu na prašenje, kotrež so deleka jewi ([[Special:Captcha/help|dalše informacije]]):',
+ 'questycaptcha-badlogin' => 'Za škit přećiwo awtomatiskemu kradnjenju hesła, wotmołw prošu na prašenje, kotrež so deleka jewi ([[Special:Captcha/help|dalše informacije]]):',
+ 'questycaptcha-createaccount' => 'Za škit přećiwo awtomatizowanemu tworjenju kontow, wotmołw prošu na prašenje, kotrež so deleka jewi ([[Special:Captcha/help|dalš informacije]]):',
+ 'questycaptcha-create' => 'Zo by stronu wutworił, wotmołw prošu na prašenje, kotrež so deleka jewi ([[Special:Captcha/help|dalše informacije]]):',
+ 'questycaptcha-edit' => 'Zo by tutu stronu změnił, wotmołw prošu na prašenje, kotrež so deleka jewi ([[Special:Captcha/help|dalše informacije]]):',
+ 'questycaptcha-sendemail' => 'Za škit přećiwo awtomatiskemu spamowanju, wotmołw prošu na prašenje, kotrež so deleka jewi ([[Special:Captcha/help|dalše informacije]]):',
+ 'questycaptchahelp-text' => 'WebsydÅ‚a, kotrež pÅ™inoÅ¡ki ze zjawnosće akceptuja, kaž tutón wiki, so Äasto wot spamarjow znjewužiwaja, kotÅ™iž awtomatizowane nastroje wužiwaja, zo bychu swoje wotkazy wjele sydÅ‚am pÅ™idali. HaÄrunjež so tute spamowe wotkazy hodźa wotstronić, su wone njesnadne mjerzanje.
+
+Druhdy, wosebje, hdyž so nowe webwotkazy stronje pÅ™idawaja, wiki so ći nÄ›Äeho praÅ¡a.
+Dokelž to je nadawk, kotryž hodźi so jenož ćežko awtomatizować, dowoluje to woprawdźitym wosobam swoje přinoški wotpósłać, mjeztym zo so najwjace spamarjow a druhich nadpadowacych botow blokuje.
+
+Prošu staj so z [[{{MediaWiki:Grouppage-sysop}}|administratorami sydła]] z prostwu wo pomoc do zwiska, jeli to će haći legitimne přinoški pósłać.
+
+Klikń na tłócatko "Wróćo" w swojim wobhladowaku, zo by so k wobdźěłowanskemu woknu wróćił.',
+);
+
+/** Hungarian (Magyar)
+ * @author Glanthor Reviol
+ */
+$messages['hu'] = array(
+ 'questycaptcha-addurl' => 'A szerkesztésed új külső hivatkozásokat tartalmaz.
+Segíts az automatikus spamek elleni védekezésben, kérlek válaszolj az alábbi kérdésre ([[Special:Captcha/help|további információk]]):',
+ 'questycaptcha-badlogin' => 'Segíts az automatikus jelszófeltörés kivédésében, kérlek válaszolj az alábbi kérdésre ([[Special:Captcha/help|további információk]]):',
+ 'questycaptcha-createaccount' => 'Segíts az automatikus felhasználói fiók készítés kivédésében, kérlek válszolj az alábbi kérdésre ([[Special:Captcha/help|további információk]]):',
+ 'questycaptcha-create' => 'Kérlek válaszolj az alábbi kérdésre a lap létrehozásához ([[Special:Captcha/help|további információk]]):',
+ 'questycaptcha-edit' => 'A lap szerkesztéséhez kérlek válaszolj az alábbi kérdésre ([[Special:Captcha/help|további információk]]):',
+ 'questycaptcha-sendemail' => 'Hogy segíts az automatikus spammelés elleni védekezésben, kérünk válaszolj az alábbi kérdésre ([[Special:Captcha/help|segítség]]):',
+ 'questycaptchahelp-text' => 'Az olyan weboldalakat, amelyekre bárki írhat, gyakran támadják meg spammerek olyan eszközök felhasználásával, amelyek képesek automatikusan, emberi felügyelet nélkül elhelyezni hivatkozásokat sok különböző oldalon.
+
+Néha, különösen ha egy új külső hivatkozást teszel egy szócikkbe, a wiki egy egy kérdés megválaszolására kérhet.
+Mivel ezt nehéz automatizálni, a valódi szerkesztőknek lehetőségük lesz szerkeszteni, miközben kiszűri a legtöbb spammert és más automatizált kártevőket.
+
+Ha ez nem várt módon akadályoz a hasznos közreműködéseidben, segítségért kérlek vedd fel a kapcsolatot [[{{MediaWiki:Grouppage-sysop}}|az oldal adminisztrátoraival]].
+
+Használd a böngésződ „vissza†gombját a szöveg szerkesztéséhez való visszalépéshez.',
+);
+
+/** Interlingua (Interlingua)
+ * @author McDutchie
+ */
+$messages['ia'] = array(
+ 'questycaptcha-addurl' => 'Tu modification include nove ligamines externe.
+Pro adjutar nos in le protection contra le spam automatisate, per favor responde al question ci infra ([[Special:Captcha/help|plus info]]):',
+ 'questycaptcha-badlogin' => 'Pro adjutar nos in le protection contra le deciframento automatisate de contrasignos, per favor responde al question ci infra ([[Special:Captcha/help|plus info]]):',
+ 'questycaptcha-createaccount' => 'Pro adjutar nos in le protection contra le creation automatisate de contos, per favor responde al question ci infra ([[Special:Captcha/help|plus info]]):',
+ 'questycaptcha-create' => 'Pro crear le pagina, per favor responde al question ci infra ([[Special:Captcha/help|plus info]]):',
+ 'questycaptcha-edit' => 'Pro modificar iste pagina, per favor responde al question ci infra ([[Special:Captcha/help|plus info]]):',
+ 'questycaptcha-sendemail' => 'Pro adjutar nos in le protection contra le spam automatic, per favor responde al question hic infra ([[Special:Captcha/help|plus info]]):',
+ 'questycaptchahelp-text' => "Le sitos web que accepta contributiones del publico, como iste wiki, es frequentemente abusate per spammatores que usa instrumentos automatic pro publicar lor ligamines in multe sitos.
+Ben que iste ligamines spam pote esser eliminate, illos constitue un considerabile molestia.
+
+Alcun vices, specialmente quando tu adde nove ligamines web a un pagina, le wiki pote demandar te de responder a un question.
+Post que isto es un carga difficile de automatisar, isto permittera al major parte del humanos real de facer lor contributiones, durante que le major parte del spammatores e altere attaccatores robotic es stoppate.
+
+Per favor contacta le [[{{MediaWiki:Grouppage-sysop}}|administratores del sito]] pro assistentia si isto insperatemente te impedi de facer contributiones legitime.
+
+Clicca le button 'retro' in tu navigator pro retornar al editor de paginas.",
+);
+
+/** Indonesian (Bahasa Indonesia)
+ * @author Bennylin
+ * @author Irwangatot
+ * @author IvanLanin
+ * @author Iwan Novirion
+ */
+$messages['id'] = array(
+ 'questycaptcha-addurl' => 'Suntingan Anda menambahkan pranala eksternal yang baru.
+Untuk melindungi dari spam otomatis, mohon jawab pertanyaan di bawah ini
+([[Special:Captcha/help|info lebih lanjut]]):',
+ 'questycaptcha-badlogin' => 'Untuk melindungi dari pemecah kata sandi otomatis, mohon jawab pertanyaan di bawah ini
+([[Special:Captcha/help|info lebih lanjut]]):',
+ 'questycaptcha-createaccount' => 'Untuk melindungi dari pembuatan akun otomatis, mohon jawab pertanyaan di bawah ini
+([[Special:Captcha/help|info lebih lanjut]]):',
+ 'questycaptcha-create' => 'Untuk membuat halaman, mohon jawab pertanyaan di bawah ini
+([[Special:Captcha/help|info lebih lanjut]]):',
+ 'questycaptcha-edit' => 'Untuk menyunting halaman ini, mohon jawab pertanyaan di bawah ini
+([[Special:Captcha/help|info lebih lanjut]]):',
+ 'questycaptcha-sendemail' => 'Sebagai pelindungan terhadap spam otomatis, silahkan jawab pertanyaan di bawah ini ([[Special:Captcha/help|info lengkap]]):',
+ 'questycaptchahelp-text' => "Situs-situs web yang menerima tulisan dari publik, seperti wiki ini, kerapkali disalahgunakan oleh pengguna-pengguna yang tidak bertanggungjawab untuk mengirimkan spam dengan menggunakan program-program otomatis guna membahkan prnala mereka pada berbagai situs web.
+Walaupun pranala-pranala spam tersebut dapat dibuang, tetapi tetap saja menimbulkan gangguan yang berarti.
+
+Kadang-kadang, terutama sat menambahkan pranala web baru ke suatu halaman, wiki akan meminta anda menjawab suatu pertanyaan.
+Karena ini merupakan suatu pekerjaan yang sulit diotomatisasi, pembatasan ini akan dapat dengan mudah dilalui oleh manusia, sekaligus juga dapat menghentikan hampir semua serangan spam dan robot otomatis lainnya.
+
+Silakan hubungi [[{{MediaWiki:Grouppage-sysop}}|pengurus]] untuk meminta bantuan jika hal ini menghambat anda untuk mengirimkan suntingan yang layak.
+
+Tekan tombol 'back' di penjelajah web Anda untuk kembali ke halaman penyuntingan.",
+);
+
+/** Italian (Italiano)
+ * @author Beta16
+ * @author Darth Kule
+ */
+$messages['it'] = array(
+ 'questycaptcha-addurl' => "La modifica richiesta aggiunge dei collegamenti esterni alla pagina; come misura precauzionale contro l'inserimento automatico di spam, si prega di rispondere alla domanda che compare di seguito ([[Special:Captcha/help|come funziona?]]):",
+ 'questycaptcha-badlogin' => 'Come misura precauzionale contro i tentativi di forzatura automatica della password, si prega di rispondere alla domanda che compare di seguito ([[Special:Captcha/help|come funziona?]]):',
+ 'questycaptcha-createaccount' => 'Come misura precauzionale contro i tentativi di creazione automatica degli account, si prega di rispondere alla domanda che compare di seguito ([[Special:Captcha/help|come funziona?]]):',
+ 'questycaptcha-create' => 'Per creare la pagina si prega di rispondere alla domanda che compare di seguito ([[Special:Captcha/help|come funziona?]]):',
+ 'questycaptcha-edit' => 'Per modificare questa pagina si prega di rispondere alla domanda che compare di seguito ([[Special:Captcha/help|come funziona?]]):',
+ 'questycaptcha-sendemail' => 'Come misura precauzionale nei confronti dei messaggi di spam automatici, si prega di inserire nella casella sottostante le parole che compaiono di seguito ([[Special:Captcha/help|come funziona?]]):',
+ 'questycaptchahelp-text' => "Capita spesso che i siti Web che accettano messaggi pubblici, come questo wiki, siano presi di mira da spammer che usano strumenti automatici per inserire collegamenti pubblicitari verso un gran numero di siti. Per quanto i collegamenti indesiderati si possano rimuovere, si tratta comunque di una seccatura non indifferente.
+
+In alcuni casi, ad esempio quando si tenta di aggiungere nuovi collegamenti Web in una pagina, il software wiki può richiedere di rispondere a una domanda. Poiché si tratta di un'azione difficile da replicare da parte di un computer, questo meccanismo consente a (quasi tutti) gli utenti reali di effettuare i proprio contributi, impedendo l'accesso alla maggior parte degli spammer e degli altri attacchi automatizzati.
+
+Se queste procedure impediscono contributi che si ritengono legittimi, si prega di contattare gli [[{{MediaWiki:Grouppage-sysop}}|amministratori del sito]] e chiedere loro assistenza.
+
+Fare clic sul pulsante 'indietro' del browser per tornare alla pagina di modifica.",
+);
+
+/** Japanese (日本語)
+ * @author Aotake
+ * @author Fryed-peach
+ */
+$messages['ja'] = array(
+ 'questycaptcha-desc' => 'Confirm Edit 用ã®è³ªå•å½¢å¼ CAPTCHA 生æˆå™¨',
+ 'questycaptcha-addurl' => 'ã‚ãªãŸã®ç·¨é›†ã§ã¯æ–°ãŸãªå¤–部リンクãŒè¿½åŠ ã•ã‚Œã¦ã„ã¾ã™ã€‚自動ã§å®Ÿè¡Œã•ã‚Œã‚‹ã‚¹ãƒ‘ム行為防止ã®ãŸã‚ã€ä»¥ä¸‹ã«è¡¨ç¤ºã•ã‚Œã‚‹ç¢ºèªç”¨ã®è³ªå•ã«å›žç­”ã—ã¦ãã ã•ã„ ([[Special:Captcha/help|詳細]]):',
+ 'questycaptcha-badlogin' => '自動化スクリプトã«ã‚ˆã‚‹ãƒ‘スワードクラック攻撃を防止ã™ã‚‹ãŸã‚ã€ä»¥ä¸‹ã«è¡¨ç¤ºã•ã‚Œã‚‹ç¢ºèªç”¨ã®è³ªå•ã«å›žç­”ã—ã¦ãã ã•ã„ ([[Special:Captcha/help|詳細]]):',
+ 'questycaptcha-createaccount' => '自動化ã•ã‚ŒãŸã‚¢ã‚«ã‚¦ãƒ³ãƒˆä½œæˆã‚’防止ã™ã‚‹ãŸã‚ã€ä»¥ä¸‹ã«è¡¨ç¤ºã•ã‚Œã‚‹ç¢ºèªç”¨ã®è³ªå•ã«å›žç­”ã—ã¦ãã ã•ã„ ([[Special:Captcha/help|詳細]]):',
+ 'questycaptcha-create' => 'ページを作æˆã™ã‚‹ã«ã¯ä»¥ä¸‹ã«è¡¨ç¤ºã•ã‚Œã‚‹ç¢ºèªç”¨ã®è³ªå•ã«å›žç­”ã—ã¦ãã ã•ã„ ([[Special:Captcha/help|詳細]]):',
+ 'questycaptcha-edit' => 'ã“ã®ãƒšãƒ¼ã‚¸ã‚’編集ã™ã‚‹ã«ã¯ä»¥ä¸‹ã«è¡¨ç¤ºã•ã‚Œã‚‹ç¢ºèªç”¨ã®è³ªå•ã«å›žç­”ã—ã¦ãã ã•ã„ ([[Special:Captcha/help|詳細]]):',
+ 'questycaptcha-sendemail' => 'ロボットã«ã‚ˆã‚‹ã‚¹ãƒ‘ムを防ããŸã‚ã€ä»¥ä¸‹ã«è¡¨ç¤ºã•ã‚Œã‚‹ç¢ºèªç”¨ã®è³ªå•ã«å›žç­”ã—ã¦ãã ã•ã„ ([[Special:Captcha/help|詳細]]):',
+ 'questycaptchahelp-text' => '一般ã‹ã‚‰ã®æŠ•ç¨¿ã‚’å—ã‘付ã‘ã‚‹ã“ã®ã‚¦ã‚£ã‚­ã®ã‚ˆã†ãªã‚¦ã‚§ãƒ–サイトã¯ã€è‡ªå‹•æŠ•ç¨¿ãƒ„ールを使ã£ã¦å¤šãã®ã‚µã‚¤ãƒˆã«ãƒªãƒ³ã‚¯ã‚’å¼µã£ã¦ã¾ã‚るスパマーã«ã‚ˆã‚Šè’らã•ã‚ŒãŒã¡ã§ã™ã€‚ã“ã®ã‚ˆã†ãªã‚¹ãƒ‘ムã¯é™¤åŽ»ã§ãã‚‹ã‚‚ã®ã®ã€ãã®ä½œæ¥­ã¯å¤§å¤‰ã«é¢å€’ãªã‚‚ã®ã§ã™ã€‚
+
+ã“ã®ãŸã‚ã€ã“ã®ã‚¦ã‚£ã‚­ã§ã¯ã¨ãã©ãã€ç‰¹ã«æ–°ã—ã„外部リンクãŒãƒšãƒ¼ã‚¸ã«è¿½åŠ ã•ã‚ŒãŸã¨ããªã©ã«ã€è³ªå•ã«ç­”ãˆã¦ã„ãŸã ãよã†ãŠé¡˜ã„ã™ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚ã“ã®ä½œæ¥­ã¯è‡ªå‹•åŒ–ãŒé›£ã—ã„ãŸã‚ã€ã‚¹ãƒ‘マーãªã©ã®ãƒ—ログラムを用ã„ãŸæ”»æ’ƒã‚’ã»ã¼é˜»æ­¢ã—ã¤ã¤ã€å¤§åŠã®ç”Ÿèº«ã®äººé–“ã«ã‚ˆã‚‹æŠ•ç¨¿ã‚’å¯èƒ½ã«ã—ã¾ã™ã€‚
+
+正当ãªæŠ•ç¨¿ã‚’ã™ã‚‹ã«ã‚ãŸã£ã¦æœ¬æ©Ÿèƒ½ãŒéšœå®³ã¨ãªã£ã¦ã„ã‚‹å ´åˆã€[[{{MediaWiki:Grouppage-sysop}}|サイト管ç†è€…]]ã«é€£çµ¡ã—ã¦å”力を求ã‚ã¦ãã ã•ã„。
+
+ページã®ç·¨é›†ã«æˆ»ã‚‹ã«ã¯ã€ãƒ–ラウザã®ã€Œæˆ»ã‚‹ã€ãƒœã‚¿ãƒ³ã‚’押ã—ã¦ãã ã•ã„。',
+);
+
+/** Korean (한국어)
+ * @author Kwj2772
+ */
+$messages['ko'] = array(
+ 'questycaptcha-badlogin' => 'ìžë™í™”ëœ ë¹„ë°€ë²ˆí˜¸ 깨기를 방지하기 위해 아래애 ë³´ì´ëŠ” ì§ˆë¬¸ì— ëŒ€ë‹µí•´ì£¼ì„¸ìš” ([[Special:Captcha/help|ìžì„¸í•œ ì •ë³´]]):',
+);
+
+/** Colognian (Ripoarisch)
+ * @author Purodha
+ */
+$messages['ksh'] = array(
+ 'questycaptcha-addurl' => 'Ding Änderung säz neu Lengks noh ußerhallef vum Wiki.
+Öm uns jäje der automattesch dobeijedonn <i lang="en">SPAM</i> ze hellefe,
+bes esu joot un donn di Frooch be_anntwoode, di heh dronger shteiht.
+([[Special:Captcha/help|Mieh Enfommazjuhne]])',
+ 'questycaptcha-badlogin' => 'Öm uns jäje et automattesche Paßwootknacke ze hellefe,
+bes esu joot un donn di Frooch be_anntwoode, di heh dronge shteiht.
+([[Special:Captcha/help|Mieh Enfommazjuhne]])',
+ 'questycaptcha-createaccount' => 'Öm uns jäje et maßesch automattesch neu Metmaacher Aanlääje ze hellefe,
+bes esu joot un donn di Frooch be_anntwoode, di heh dronger shteiht.
+([[Special:Captcha/help|Mieh Enfommazjuhne]])',
+ 'questycaptcha-create' => 'Öm di Sigg aanzelääje,
+bes esu joot, donn di Frooch be_anntwoode, di heh dronge shteiht.
+([[Special:Captcha/help|Mieh Enfommazjuhne]])',
+ 'questycaptcha-edit' => 'Öm di Sigg ze änderee,
+bes esu joot, donn di Frooch be_anntwoode, di heh dronge shteiht.
+([[Special:Captcha/help|Mieh Enfommazjuhne]])',
+ 'questycaptcha-sendemail' => 'Öm et Wiki jääje automattesch enjedraare SPAM ze schötze,
+bes esu joot, donn di Frooch be_anntwoode, di heh dronger shteiht.
+([[Special:Captcha/help|Mieh Enfommazjuhne]])',
+ 'questycaptchahelp-text' => 'Websigge, di Beijdrääsch vun de Öffentleschkeit aannämme, wi dat Wiki heh,
+wääde öff vun <i lang="en">SPAM</i>mer heimjesöhk. Di bruche Projramme
+för ier Lengks udder annder Jedrieße automattesch en dousende Wikis erin
+ze bränge. Der <i lang="en">SPAM</i> kam_mer wider fott maache, ävver dä
+blief e Ärjeneß.
+
+Manschmohl, besönders, wann De neu Lengks en en Sigg donn wells, künnt et
+Wiki Desch bedde, en Frooch ze be_antwoode. Nohdämm dat schwiiresch mem
+automattesche Projramm henzekrijje es, löht et de Minsche ier Beidrääsch
+maache, deiht ävver de miehßte <i lang="en">SPAM</i>mer un ander Robots affhallde.
+
+Donn Desh aan de [[{{MediaWiki:Grouppage-sysop}}|Köbeße vum Wiki]] wende,
+wann et Der trozdämm en de Fööß kütt, un De Dinge aanshtändejje Beijdraach
+nit en et Wiki kriß!
+
+Dä „Retuur“-Lengk udder -Knopp vun Dingem Brauser brängk Desch wider op
+di Sigg zom Ändere, woh De jraad wohß.',
+);
+
+/** Luxembourgish (Lëtzebuergesch)
+ * @author Les Meloures
+ * @author Robby
+ */
+$messages['lb'] = array(
+ 'questycaptcha-addurl' => "An Ärer Ännerung sinn nei extern Linken.
+Fir d'Protectioun géint automatesche Spam ze vergréisseren, beäntwert w.e.g. déi Fro hei ënnendrënner ([[Special:Captcha/help|méi Informatiounen]]):",
+ 'questycaptcha-badlogin' => "Fir d'Protectioun géint d'automatiséiert Knacke vu Passwierder ze vergréisseren, beäntwert w.e.g. déi Fro hei ënnedrënner ([[Special:Captcha/help|méi Informatiounen]]):",
+ 'questycaptcha-createaccount' => "Fir d'Protectioun géint d'automatiséiert Uleeë vu Benotzerkonten ze vergréisseren, beäntwert w.e.g. déi Fro hei ënnendrënner ([[Special:Captcha/help|méi Informatiounen]]):",
+ 'questycaptcha-create' => "Fir d'Säit unzeleeën, beäntwert w.e.g. déi Fro hei ënnedrënner ([[Special:Captcha/help|méi Informatiounen]]):",
+ 'questycaptcha-edit' => "Fir dës Säit z'änneren, beäntwert w.e.g. déi Fro hei ënnedrënner ([[Special:Captcha/help|méi Informatiounen]]):",
+ 'questycaptcha-sendemail' => 'Fir ze hëllefe eis géint automatiséierte Spam ze schütze, beäntwert w.e.g. déi Fro hei ënnendrënner ([[Special:Captcha/help|méi Informatiounen]]):',
+ 'questycaptchahelp-text' => "Websäiten, déi et jidwerengem erlaben Ännerunge virzehuelen, sou wéi dës Wiki, ginn dacks vu sougenannte Spammer mëssbraucht, déi automatiséiert hir Linken op vill Internetsäite setzen.
+Esou Spam-Linke kënne wuel geläscht ginn, mee si sinn trotzdem eng grouss Plo.
+
+Heiandsdo, besonnesch wann nei Internet-Linken op eng Säit derbäigesat ginn, freet dës Wiki Iech eng Fro ze beäntwerten.
+Well dëst eng Aufgab ass déi schwéier z'automatiséieren ass, erlaabt dëst datt Mënschen hir Ännerunge kënnen agi wärend déi meescht Spammer an aner Roboter-Attacke kënnen ofgewiert ginn.
+
+Kontaktéiert w.e.g. d'[[{{MediaWiki:Grouppage-sysop}}|Administrateure vun dësem Site]] fir Hëllef wann dëst Iech onerwaarter Wäis vu legitimen Editen ofhält.
+
+Dréckt op den 'Zréck' Knäppche vun ärem Browser fir an d'Beaarbechtungsfënster zréckzekommen.",
+);
+
+/** Macedonian (МакедонÑки)
+ * @author Bjankuloski06
+ */
+$messages['mk'] = array(
+ 'questycaptcha-desc' => 'Создавач CAPTCHA Ñо текнувало за потврда на уредувања',
+ 'questycaptcha-addurl' => 'Вашето уредување Ñодржи нови надворешни врÑки.
+За да ни помогнете да Ñе заштитиме од автоматизиран Ñпам, одговорете на прашањето подолу ([[Special:Captcha/help|повеќе инфо]]):',
+ 'questycaptcha-badlogin' => 'За да ни помогнете да Ñе заштитиме од автоматизирано пробивање на лозинки, одговорете на прашањето подолу ([[Special:Captcha/help|повеќе инфо]]):',
+ 'questycaptcha-createaccount' => 'За да ни помогнете да Ñе заштитиме од автоматизирано Ñоздавање на Ñметки, одговорете на прашањето подолу ([[Special:Captcha/help|повеќе инфо]]):',
+ 'questycaptcha-create' => 'За да ја Ñоздадете Ñтраницата, одговорете на прашањето подолу ([[Special:Captcha/help|повеќе инфо]]):',
+ 'questycaptcha-edit' => 'За да ја уредите Ñтраницава, одговорете на прашањето подолу ([[Special:Captcha/help|повеќе инфо]]):',
+ 'questycaptcha-sendemail' => 'За да Ñе заштитиме од автоматизирано Ñпамирање, одговорете на долупоÑтавеното прашање ([[Special:Captcha/help|повеќе информации]]):',
+ 'questycaptchahelp-text' => 'Мрежните меÑта кои прифаќаат учеÑтво на јавноÑта, како ова вики, чеÑтопати Ñтрадаат од Ñпамери кои кориÑтат автоматизирани алатки за да ги додаваат нивните врÑки на голем број мрежни меÑта.
+Иако врÑките на Ñпамерот може да Ñе отÑтранат, тие значително ја пореметуваат нашата работа.
+
+Понекогаш, оÑобено кога додава нови врÑки на Ñтраница, викито може да ви побара да одговорите на прашање.
+Бидејќи ова е задача која е тешко да Ñе автоматизира, им овозможува виÑтинÑките кориÑници да придонеÑуваат, а им попречува на Ñпамерите и другите роботÑки напаѓачи.
+
+Контактирајте ги [[{{MediaWiki:Grouppage-sysop}}|админиÑтраторите на Ñтраната]] за помош доколку ова неочекувано ве Ñпречува во правењето на иÑкрени придонеÑи.
+
+Кликнете на копчето „назад“ во вашиот прелиÑувач за да Ñе вратите на уредувањето на Ñтраницата.',
+);
+
+/** Malayalam (മലയാളം)
+ * @author Junaidpv
+ */
+$messages['ml'] = array(
+ 'questycaptcha-addurl' => 'താങàµà´•à´³àµà´Ÿàµ† തിരàµà´¤àµà´¤à´²àµà´•à´³à´¿àµ½ à´ªàµà´±à´‚ à´•à´£àµà´£à´¿à´•àµ¾ ഉൾപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.
+യാനàµà´¤àµà´°à´¿à´• à´¸àµà´ªà´¾à´®à´¿à´¨àµ†à´¤à´¿à´°àµ†à´¯àµà´³àµà´³ സം‌രകàµà´·à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† ഭാഗമായി, താഴെ കാണàµà´¨àµà´¨ വാകàµà´•àµà´•àµ¾ പെടàµà´Ÿà´¿à´¯à´¿àµ½ ടൈപàµà´ªàµ ചെയàµà´¯àµà´• ([[Special:Captcha/help|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
+);
+
+/** Malay (Bahasa Melayu)
+ * @author Anakmalaysia
+ */
+$messages['ms'] = array(
+ 'questycaptcha-addurl' => 'Suntingan anda mengandungi pautan luar baru.
+Untuk membanteras kegiatan spam automatik, anda diminta menjawab soalan yang berikut ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'questycaptcha-badlogin' => 'Untuk membanteras kegiatan meneka kata laluan secara automatik, anda diminta menjawab soalan berikut ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'questycaptcha-createaccount' => 'Untuk membanteras kegiatan pembukaan akaun secara automatik, anda diminta menjawab soalan berikut ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'questycaptcha-create' => 'Untuk mencipta laman ini, anda diminta menjawab soalan berikut ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'questycaptcha-edit' => 'Untuk menyunting laman ini, anda diminta menjawab soalan berikut ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'questycaptcha-sendemail' => 'Untuk membanteras kegiatan spam secara automatik, anda diminta menjawab soalan berikut ([[Special:Captcha/help|maklumat lanjut]]):',
+ 'questycaptchahelp-text' => "Tapak-tapak web yang menerima sumbangan awam, misalnya wiki ini, sering disalah guna oleh pembuat spam yang menggunakan peralatan berautomasi untuk membubuh pautan mereka di banyak tapak.
+Walaupun pautan-pautan spam ini boleh dipadamkan, namun ia amat menyusahkan.
+
+Adakalanya, terutamanya apabila membubuh pautan web baru pada sesuatu laman, wiki ini mungkin akan menanya anda satu soalan.
+Memandangkan ini ialah tugas yang sukar diautomasi, ia akan membolehkan kebanyakan manusia sebenar untuk membuat sumbangan, sambil menghalang spam dan serangan robotik yang seumpamanya.
+
+Sila hubungi [[{{MediaWiki:Grouppage-sysop}}|pentadbir laman]] untuk mendapatkan bantuan jika ia menghalang anda daripada membuat sumbangan yang munasabah tanpa dijangka.
+
+Klik butang 'â†' untuk kembali ke editor laman.",
+);
+
+/** Dutch (Nederlands)
+ * @author Siebrand
+ */
+$messages['nl'] = array(
+ 'questycaptcha-addurl' => 'Uw bewerking bevat nieuwe externe verwijzingen.
+Beantwoord de onderstaande vraag als bescherming tegen automatische spam ([[Special:Captcha/help|meer informatie]]):',
+ 'questycaptcha-badlogin' => 'Beantwoord de onderstaande vraag als bescherming tegen geautomatiseerde wachtwoordaanvallen ([[Special:Captcha/help|meer informatie]]):',
+ 'questycaptcha-createaccount' => 'Beantwoord de onderstaande vraag als bescherming tegen het geautomatiseerd aanmaken van gebruikers ([[Special:Captcha/help|meer informatie]]):',
+ 'questycaptcha-create' => 'Beantwoord de onderstaande vraag om de pagina aan te maken ([[Special:Captcha/help|meer informatie]]):',
+ 'questycaptcha-edit' => 'Beantwoord de onderstaande vraag om deze pagina te bewerken ([[Special:Captcha/help|meer informatie]]):',
+ 'questycaptcha-sendemail' => 'Beantwoord de onderstaande vraag als bescherming tegen geautomatiseerde spam ([[Special:Captcha/help|meer informatie]]):',
+ 'questycaptchahelp-text' => "Websites die vrij te bewerken zijn, zoals deze wiki, worden vaak misbruikt door spammers die er met hun programma's automatisch verwijzigen op zetten naar vele websites.
+Hoewel deze externe verwijzingen weer verwijderd kunnen worden, leveren ze wel veel hinder en administratief werk op.
+
+Soms, en in het bijzonder bij het toevoegen van externe verwijzingen op pagina's, vraag de wiki u een vraag te beantwoorden.
+Omdat dit proces lastig te automatiseren is, zijn vrijwel alleen mensen in staat dit proces succesvol te doorlopen en worden hiermee spammers en andere geautomatiseerde aanvallen geweerd.
+
+Vraag assistentie van de [[{{MediaWiki:Grouppage-sysop}}|sitebeheerders]] als dit proces u verhindert een nuttige bijdrage te leveren.
+
+Klik op de knop 'terug' in uw browser om terug te gaan naar het tekstbewerkingsscherm.",
+);
+
+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+ * @author Gunnernett
+ */
+$messages['nn'] = array(
+ 'questycaptcha-addurl' => 'Endringa di inneheld nye lenkjer ut.
+Som ei hjelp til å unngå automatisert spam, ver venleg og skiv inn spørsmålet som er synt nedanfor ([[Special:Captcha/help|meir informasjon]]):',
+ 'questycaptcha-createaccount' => 'For å hjelpa til med å hindra automatisk kontooppretting, ver venleg og svar på spørsmålet nedanfor ([[Special:Captcha/help|more info]]):',
+ 'questycaptcha-create' => 'For å oppretta sida, ver venleg og svar på spørsmålet nedanfor ([[Special:Captcha/help|meir informasjon]]):',
+ 'questycaptcha-edit' => 'For å endra sida, ver venleg og svar på spørsmålet som er synt nedanfor ([[Special:Captcha/help|meir informasjon]]):',
+);
+
+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+ * @author Nghtwlkr
+ * @author Simny
+ */
+$messages['no'] = array(
+ 'questycaptcha-addurl' => 'Din endring inneholder nye eksterne lenker.
+For å beskytte mot autmatisert spam, vennligst svar på spørsmålet som vises under ([[Special:Captcha/help|mer informasjon]]):',
+ 'questycaptcha-badlogin' => 'For å hindre passordtyveri, vær vennlig og svar på spørsmålet under ([[Special:Captcha/help|mer informasjon]]):',
+ 'questycaptcha-createaccount' => 'For å beskytte mot autmatisert spam, vennligst svar på spørsmålet som vises under ([[Special:Captcha/help|mer informasjon]]):',
+ 'questycaptcha-create' => 'For å opprette siden, vennligst svar på spørsmålet som vises under ([[Special:Captcha/help|mer informasjon]]):',
+ 'questycaptcha-edit' => 'For å endre denne siden, vennligst svar på spørsmålet som vises under ([[Special:Captcha/help|mer informasjon]]):',
+ 'questycaptcha-sendemail' => 'For å beskytte mot automatisert søppelpost, svar på spørsmålet som vises nedenfor ([[Special:Captcha/help|mer info]]):',
+ 'questycaptchahelp-text' => "Nettsteder som tar imot bidrag fra allmennheten, som denne wikien, er ofte utsatt for angrep fra spammere som bruker automatiserte verktøy for å legge til lenker til mange sider.
+Selv om disse spam-lenkene kan fjernes er de en stor plage.
+
+Iblant, spesielt ved tillegg av nye lenker til en side, kan wikien be deg svare på et spørsmål.
+Siden dette er en oppgave som er vanskelig å automatisere, vil den tillate de fleste virkelige personer å bidra mens den stopper de fleste spammere og andre robotangrep.
+
+Vennligst kontakt [[{{MediaWiki:Grouppage-sysop}}|sideadministratorer]] for hjelp dersom dette er uventet hindrer deg fra å bidra med legitime bidrag.
+
+Klikk på 'tilbake'-knappen i nettleseren din for å gå tilbake til sideeditoren.",
+);
+
+/** Occitan (Occitan)
+ * @author Cedric31
+ */
+$messages['oc'] = array(
+ 'questycaptcha-addurl' => 'Vòstra modificacion inclutz de ligams extèrnes novèls.
+Per nos ajudar dins la proteccion contra lo spam automatizat, respondètz a la question çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :',
+ 'questycaptcha-badlogin' => "Per nos ajudar a prevenir la copadura dels senhals per d'automats, respondètz a la question çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :",
+ 'questycaptcha-createaccount' => "Per nos ajudar a luchar contra las creacions automaticas de comptes, respondètz a la question qu'apareis çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :",
+ 'questycaptcha-create' => 'Per crear la pagina, respondètz a la question çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :',
+ 'questycaptcha-edit' => 'Per modificar aquesta pagina, respondètz a la question çaijós ([[Special:Captcha/help|mai d’entresenhas]]) :',
+ 'questycaptcha-sendemail' => "Per tal de nos ajudar a prevenir lo spam automatic, entratz los mots qu'apareisson dins la bóstia çaijós ([[Special:Captcha/help|mai d’informacions]]) :",
+ 'questycaptchahelp-text' => "Los sites web qu'acceptan de contribucions del public, coma aqueste wiki, son sovent victimas de polluposteires qu'utilizan d'espleches automatizats per plaçar de ligams nombroses cap a lors sites.
+Quitament s'aquesta pollucion pòt èsser escafada, es irritanta.
+
+De còps, particularament al moment de l’apondon de ligams extèrnes novèls dins una pagina, lo wiki vos pòt demandar de respondre a una question.
+Aqueste prètzfach es pas de bon acomplir d'un biais automatizat, aquò permet a la màger part dels umans de realizar lors contribucions tot en empachant la màger part dels polluposteires e autres atacants robotizats.
+
+Contactatz [[{{MediaWiki:Grouppage-sysop}}|los administrators del site]] s'aquò vos empacha de faiçon imprevista de far de contribucions legitimas.
+
+Clicatz sul boton « Precedent » de vòstre navigador per tornar a la pagina de modificacion.",
+);
+
+/** Polish (Polski)
+ * @author Sp5uhe
+ */
+$messages['pl'] = array(
+ 'questycaptcha-addurl' => 'Edycja zawiera nowe linki zewnętrzne.
+Ochrona przed zautomatyzowanym spamem wymaga odpowiedzi na poniższe pytanie ([[Special:Captcha/help|więcej informacji]])',
+ 'questycaptcha-badlogin' => 'Ochrona przed zautomatyzowanym łamaniem haseł wymaga odpowiedzi na poniższe pytanie ([[Special:Captcha/help|więcej informacji]])',
+ 'questycaptcha-createaccount' => 'Ochrona przed zautomatyzowanym tworzeniem kont wymaga odpowiedzi na poniższe pytanie ([[Special:Captcha/help|więcej informacji]])',
+ 'questycaptcha-create' => 'Utworzenie strony jest możliwe po udzieleniu odpowiedzi na poniższe pytanie ([[Special:Captcha/help|więcej informacji]])',
+ 'questycaptcha-edit' => 'Edycja strony jest możliwa po udzieleniu odpowiedzi na poniższe pytanie ([[Special:Captcha/help|więcej informacji]])',
+ 'questycaptcha-sendemail' => 'Z uwagi na ochronę przed automatycznym spamem, należy odpowiedzieć na znajdujące się poniżej pytanie ([[Special:Captcha/help|pomoc]])',
+ 'questycaptchahelp-text' => "Witryny, które publicznie udostępniają możliwość wprowadzania zmian, tak jak ta wiki, często są wykorzystywane przez spamerów, którzy korzystają ze zautomatyzowanych narzędzi, aby dodawać swoje linki do wielu stron.
+Pomimo tego, że takie linki mogą zostać usunięte, jest to jednak uciążliwe.
+
+Czasami, zwłaszcza jeśli dodano nowe linki zewnętrzne, wiki może poprosić o udzielenie odpowiedzi na pytanie.
+Ponieważ odpowiadanie na pytania jest czynnością trudną do zautomatyzowania, pozwala większości ludziom na wykonywanie edycji, zarazem uniemożliwiając ją spamerom i innym atakującym automatom.
+
+Skontaktuj się z [[{{MediaWiki:Grouppage-sysop}}|administratorami]], jeśli potrzebujesz pomocy ponieważ mechanizm ten uniemożliwia Ci dokonywania uzasadnionych edycji.
+
+Kliknij przycisk 'wstecz' w przeglądarce, aby wrócić do strony edycji.",
+);
+
+/** Piedmontese (Piemontèis)
+ * @author Borichèt
+ * @author Dragonòt
+ */
+$messages['pms'] = array(
+ 'questycaptcha-addurl' => 'Toa modìfica a conten na neuva anliura esterna.
+Për giuté a protegi contra spam automàtich, për piasì arspond a la custion che a-i é sì sota ([[Special:Captcha/help|për savèjne ëd pì]]):',
+ 'questycaptcha-badlogin' => 'Për giuté a protegi contra ël crack ëd ciav automatisà, për piasì arspond a la custion che a ven fòra sota ([[Special:Captcha/help|për savèjne ëd pì]]):',
+ 'questycaptcha-createaccount' => 'Për giuté a protegi contra la creassion automàtica ëd cont, për piasì arspond a la custion che a ven fòra sota ([[Special:Captcha/help|për savejne ëd pì]]):',
+ 'questycaptcha-create' => 'Për creé la pàgina, për piasì arspond a la custion che a ven fòra sota: ([[Special:Captcha/help|për savejne ëd pì]]):',
+ 'questycaptcha-edit' => 'Për modifiché sta pàgina-sì, për piasì arspond a la custion che a ven fòra sota ([[Special:Captcha/help|për savejne ëd pì]]):',
+ 'questycaptcha-sendemail' => "Për giuté a protegi contra la rumenta automàtica, për piasì ch'a risponda a la chestion ch'as vëdd sì-sota ([[Special:Captcha/help|për savèjne ëd pi]]):",
+ 'questycaptchahelp-text' => "Soèns a-i riva che ij sit dla Ragnà che la gent a peul dovré për ëscrive chèich-còs, coma sta wiki-sì, a resto ambërlifà ëd reclam da màchine che a carìo soa ròba dadsà e dadlà n'automàtich.
+Për tant che sta reclam un a peula peuj gavela, a resta sempe un gran fastudi.
+
+Dle vire, dzortut quand un a caria dj'anliure esterne neuve ansime a na pàgina, la wiki a peul ciamete d'arsponde a na custion.
+Da già ch'a l'é grama scrive un programa ch'a lo fasa, a ven che la pì gran part dla gent a-i la fa a scrive, ma la ói part dle màchine a-i la fa pa.
+
+Për piasì contata j'[[{{MediaWiki:Grouppage-sysop}}|aministrador dël sit]] për assistensa se sòn-sì a l'ha nen lassate fé na contribussion legìtima.
+
+Ch'a-i bata ansima al boton 'andré' ant sò navigator për torné andré a l'editor dla pàgina.",
+);
+
+/** Portuguese (Português)
+ * @author Crazymadlover
+ * @author Giro720
+ * @author Hamilton Abreu
+ */
+$messages['pt'] = array(
+ 'questycaptcha-addurl' => "A sua edição introduziu links externos novos.
+Para ajudar a prevenir o ''spam'' automatizado, por favor, responda à questão apresentada abaixo ([[Special:Captcha/help|mais informações]]):",
+ 'questycaptcha-badlogin' => 'Para ajudar a prevenir mecanismos automatizados de descoberta de palavras-chave, por favor, responda à questão apresentada abaixo ([[Special:Captcha/help|mais informações]]):',
+ 'questycaptcha-createaccount' => 'Para ajudar a prevenir a criação de contas automatizada, por favor, responda à questão apresentada abaixo ([[Special:Captcha/help|mais informações]]):',
+ 'questycaptcha-create' => 'Para criar a página, por favor, responda à questão apresentada abaixo ([[Special:Captcha/help|mais informações]]):',
+ 'questycaptcha-edit' => 'Para editar esta página, por favor, responda à questão apresentada abaixo ([[Special:Captcha/help|mais informações]]):',
+ 'questycaptcha-sendemail' => "Para ajudar a prevenir o ''spam'' automatizado, por favor, responda à seguinte pergunta ([[Special:Captcha/help|mais informações]]):",
+ 'questycaptchahelp-text' => "Sites na internet abertos a edição pública, como é o caso desta wiki, são frequentemente abusados por ''spammers'' que utilizam ferramentas automatizadas para inserção em massa de links em muitos sites.
+Embora esses links possam ser removidos, representam um incómodo significativo.
+
+Por vezes, especialmente quando introduzir links externos novos numa página, a wiki pedirá que responda a uma pergunta.
+Porque esta é uma tarefa difícil de automatizar, permite que a maioria das pessoas façam as suas edições, ao mesmo tempo que inibe edições feitas por ''spammers'' e outros mecanismos automatizados.
+
+Por favor, contacte os [[{{MediaWiki:Grouppage-sysop}}|administradores]] para assistência, caso esta funcionalidade esteja a impedi-lo de fazer edições legítimas.
+
+Clique o botão 'voltar' do seu browser para voltar à página de edição.",
+);
+
+/** Brazilian Portuguese (Português do Brasil)
+ * @author Eduardo.mps
+ * @author Giro720
+ */
+$messages['pt-br'] = array(
+ 'questycaptcha-addurl' => 'Sua edição inclui novas ligações externas.
+Para proteção contra spam automático, por favor responda a questão que aparece abaixo ([[Special:Captcha/help|mais informações]]):',
+ 'questycaptcha-badlogin' => 'Para proteger contra quebra automatizada de palavra-chave, por favor responda a questão que aparece abaixo ([[Special:Captcha/help|more info]]):',
+ 'questycaptcha-createaccount' => 'Para proteger contra criação automática de contas, por favor responda as questões que aparecem abaixo ([[Special:Captcha/help|more info]]):',
+ 'questycaptcha-create' => 'Para criar a página, por favor responda a questão que aparece abaixo ([[Special:Captcha/help|more info]]):',
+ 'questycaptcha-edit' => 'Para editar esta página, por favor responda a questão que aparece abaixo ([[Special:Captcha/help|more info]]):',
+ 'questycaptcha-sendemail' => "Para ajudar a prevenir o ''spam'' automatizado, por favor, responda à seguinte pergunta ([[Special:Captcha/help|mais informações]]):",
+ 'questycaptchahelp-text' => "Sítios que aceitam contribuições públicas, como este wiki, são vulneráveis a spammers que utilizam ferramentas automatizadas para inserir as suas ligações em diversos locais.
+Apesar de ser possível emover tais ligações, elas são um incômodo significativo.
+
+Algumas vezes, especialmente ao adicionar novas ligações externas a uma página, a wiki pode pedir a você que responda a uma pergunta.
+Uma vez que essa é uma tarefa um difícil de ser automatizada, ela possibilita que a maioria dos humanos faça as suas contribuições ao mesmo tempo que inibe as que forem feitas por spammers e mecanismos automatizados.
+
+Por favor entre em contato com os [[{{MediaWiki:Grouppage-sysop}}|administradores do sítio]] para assistí-lo caso isto esteja impedindo-o de realizar contribuições legítimas.
+
+Pressione o botão 'voltar' de seu navegador para retornar à página de edição.\"",
+);
+
+/** Tarandíne (Tarandíne)
+ * @author Joetaras
+ */
+$messages['roa-tara'] = array(
+ 'questycaptcha-addurl' => "'U cangiamende tue inglude de le collegaminde esterne.
+Pe aiutà a proteggere condre a 'u spam automateche, pe piacere respunne a 'a domande ca combare sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+ 'questycaptcha-badlogin' => "Pe aiutà a proteggere condre a futteminde automatece de password, pe piacere respunne a 'a domande ca combare aqquà sotte ([[Special:Captcha/help|more info]]):",
+ 'questycaptcha-createaccount' => "Pe aiutà a proteggere condre a ccreazione automateche de cunde utinde, pe piacere respunne a 'a domande ca combare aqquà sotte ([[Special:Captcha/help|more info]]):",
+ 'questycaptcha-create' => "Pe ccrejà sta pàgene, pe piacere respunne a 'a domande ca combare aqquà sotte ([[Special:Captcha/help|more info]]):",
+ 'questycaptcha-edit' => "Pe cangià sta pàgene, pe piacere respunne a 'a domande ca combare aqquà sotte ([[Special:Captcha/help|more info]]):",
+ 'questycaptcha-sendemail' => "Pe aiutà a proteggere condre a spam automatece, pe piacere respunne a 'a domande ca combare aqquà sotte ([[Special:Captcha/help|cchiù 'mbormaziune]]):",
+ 'questycaptchahelp-text' => "Le site web ca accettane condrebbute da 'u pubbleche, cumme sta Uicchi, sonde spesse abusate da le ''spammer'' ca ausane struminde automatece e aggiungene le lore collegaminde a 'nu sacche de site.<br />
+Pure ca chiste collegaminde de spam ponne essere luate, lore sò sembre 'nu scassamende de palle.<br />
+<br />
+Certe vote, specialmende quanne aggiunge 'nu nuève collegamende web a 'na pàgene, Uicchi te pò chiedere de responnere a 'na domande.<br />
+Accussì addeviene 'nu combete cchiù defficile da automatizzà, accussì se permette a le cristiane de fà cangiaminde reale e se blocchene de cchiù le ''spammer'' e otre attacche de robot.<br />
+<br />
+Pe piacere condatte le [[{{MediaWiki:Grouppage-sysop}}|amministrature d'u site]] pe assistenze ce stu fatte non ge funzione accume se deve e no te face fà le cangiaminde legittime.<br />
+<br />
+Cazze 'u buttone 'rrete' jndr'à 'u browser tue pe turnà 'a pàgene d'u cangiamende.",
+);
+
+/** Russian (РуÑÑкий)
+ * @author ÐлекÑандр Сигачёв
+ */
+$messages['ru'] = array(
+ 'questycaptcha-addurl' => 'Ваша правка Ñодержит новые внешние ÑÑылки.
+Ð’ целÑÑ… защиты от автоматичеÑкого Ñпама, пожалуйÑта, ответьте на приведённый ниже Ð²Ð¾Ð¿Ñ€Ð¾Ñ ([[Special:Captcha/help|подробнее]]):',
+ 'questycaptcha-badlogin' => 'Ð’ целÑÑ… защиты от автоматичеÑкого подбора паролÑ, пожалуйÑта, ответьте на приведённый ниже Ð²Ð¾Ð¿Ñ€Ð¾Ñ ([[Special:Captcha/help|подробнее]]):',
+ 'questycaptcha-createaccount' => 'Ð’ целÑÑ… защиты от автоматичеÑкого ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ñ‹Ñ… запиÑей, пожалуйÑта, ответьте на приведённый ниже Ð²Ð¾Ð¿Ñ€Ð¾Ñ ([[Special:Captcha/help|подробнее]]):',
+ 'questycaptcha-create' => 'Ð”Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñтраницы, пожалуйÑта, ответьте на приведённый ниже Ð²Ð¾Ð¿Ñ€Ð¾Ñ ([[Special:Captcha/help|подробнее]]):',
+ 'questycaptcha-edit' => 'Чтобы изменить Ñту Ñтраницу, пожалуйÑта, ответьте на приведённый ниже Ð²Ð¾Ð¿Ñ€Ð¾Ñ ([[Special:Captcha/help|подробнее]]):',
+ 'questycaptcha-sendemail' => 'Ð’ целÑÑ… защиты от автоматичеÑкого Ñпама, пожалуйÑта, ответьте на приведённый ниже Ð²Ð¾Ð¿Ñ€Ð¾Ñ ([[Special:Captcha/help|подробнее]]):',
+ 'questycaptchahelp-text' => 'Веб-Ñайты позволÑющие изменÑÑ‚ÑŒ Ñвоё Ñодержимое, как Ñта вики, чаÑто ÑтановÑÑ‚ÑÑ Ñ†ÐµÐ»ÑŒÑŽ Ñпамеров, иÑпользующих автоматичеÑкие инÑтрументы Ð´Ð»Ñ Ð´Ð¾Ð±Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑÑылок на другие Ñайты.
+ÐеÑÐ¼Ð¾Ñ‚Ñ€Ñ Ð½Ð° то, что такие ÑÑылки могут быть удалены, они ÑвлÑÑŽÑ‚ÑÑ Ð·Ð°Ð¼ÐµÑ‚Ð½Ð¾Ð¹ помехой.
+
+Иногда, в чаÑтноÑти при добавлении на Ñтраницу новых веб-ÑÑылок, вики может попроÑить Ð²Ð°Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð¸Ñ‚ÑŒ на вопроÑ.
+Так как Ñта задача, которую Ñложно автоматизировать, то Ñто позволит большинÑтву людей Ñделать данную правку, и в тоже Ð²Ñ€ÐµÐ¼Ñ Ð¾Ñтановит большинÑтво Ñпамеров и других роботизированных недоброжелателей.
+
+ПожалуйÑта, обратитеÑÑŒ к [[{{MediaWiki:Grouppage-sysop}}|админиÑтраторам Ñайта]] за помощь, еÑли Ð´Ð°Ð½Ð½Ð°Ñ ÑиÑтема не позволÑет вам вноÑить допуÑтимые изменениÑ.
+
+Ðажмите в вашем браузере кнопку «назад», чтобы вернутьÑÑ Ðº Ñтранице редактированиÑ.',
+);
+
+/** Slovak (SlovenÄina)
+ * @author Helix84
+ */
+$messages['sk'] = array(
+ 'questycaptcha-addurl' => 'Vaša úprava obsahuje nové externé odkazy.
+Ako opatrenie proti automatizovanému spamu musíte zodpovedať dolu uvedenú otázku
+([[Special:Captcha/help|ÄalÅ¡ie informácie]]):',
+ 'questycaptcha-badlogin' => 'Ako opatrenie proti automatizovanému lámaniu hesiel musíte zodpovedať dolu uvedenú otázku
+([[Special:Captcha/help|ÄalÅ¡ie informácie]]):',
+ 'questycaptcha-createaccount' => 'Ako opatrenie proti automatizovanému vytváraniu úÄtov musíte zodpovedaÅ¥ dolu uvedenú otázku
+([[Special:Captcha/help|ÄalÅ¡ie informácie]]):',
+ 'questycaptcha-create' => 'Ak chcete vytvoriť stránku, musíte zodpovedať dolu uvedenú otázku
+([[Special:Captcha/help|ÄalÅ¡ie informácie]]):',
+ 'questycaptcha-edit' => 'Ak chcete upraviť túto stránku, musíte zodpovedať dolu uvedenú otázku
+([[Special:Captcha/help|ÄalÅ¡ie informácie]]):',
+ 'questycaptchahelp-text' => 'Webstránky, ktoré prijímajú príspevky od verejnosti ako táto wiki, sú Äasto cieľom zneužitia spammermi, ktorí používajú automatizované nástroje na pridávanie odkazov na svoje stránku na mnohé lokality.
+Hoci je možné odkazy na spam odstrániť, je to významná nepríjemnosť.
+
+Niekedy, obzvlášť pri pridávaní nových webových odkazov na stránku, vás wiki môže požiadať o zodpovedanie otázky.
+Pretože takúto úlohu je Å¥ažké zautomatizovaÅ¥, umožní väÄÅ¡ine skutoÄných ľudí prispievaÅ¥ a zastaví vaÄÅ¡inu spammerov a robotických útoÄníkov.
+
+Kontaktujte prosím [[{{MediaWiki:Grouppage-sysop}}|správcov lokality]] ak potrebujete pomoc v prípade, že vám táto funkcia neoÄakávaným spôsobom bráni v právoplatných príspevkoch.
+
+Späť na úpravu stránky sa vrátite kliknutím na tlaÄidlo „Späť“ vo vaÅ¡om prehliadaÄi.',
+);
+
+/** Swedish (Svenska)
+ * @author Boivie
+ */
+$messages['sv'] = array(
+ 'questycaptcha-addurl' => 'Din redigering inkluderar nya externa länkar.
+För att hjälpa till i skyddet mot automatisk spam, vänligen svara på frågan som finns nedan ([[Special:Captcha/help|mer information]]):',
+ 'questycaptcha-badlogin' => 'För att hjälpa till i skyddet mot automatisk lösenordsknäckning, vänligen svara på frågan som finns nedan ([[Special:Captcha/help|mer information]]):',
+ 'questycaptcha-createaccount' => 'För att hjälpa till i skyddet mot automatiskt kontoskapande, vänligen svara på frågan som finns nedan ([[Special:Captcha/help|mer information]]):',
+ 'questycaptcha-create' => 'För att skapa sidan, vänligen svara på frågan som finns nedan ([[Special:Captcha/help|mer information]]):',
+ 'questycaptcha-edit' => 'För att redigera denna sida, vänligen svara på frågan som finns nedan ([[Special:Captcha/help|mer information]]):',
+ 'questycaptcha-sendemail' => 'För att skydda mot automatisk spamning, vänligen svara på frågan som visas nedan ([[Special:Captcha/help|mer information]]):',
+ 'questycaptchahelp-text' => "Webbplatser som accepterar bidrag från allmänheten, som denna wiki, blir ofta utnyttjade av spammare som använder automatiska verktyg för att lägga till sina linkar till många sajter.
+Även om dessa spam-länkar kan tas bort är de väldigt störande.
+
+Ibland, särskilt vid tillägg av nya webblänkar till en sida, kan wikin be dig svara på en fråga.
+Eftersom denna uppgift är svår att automatisera, låter den de flesta riktiga människor göra sina bidrag medan den stoppar de flesta spammare och andra robotattackerare.
+
+Vänligen kontakta [[{{MediaWiki:Grouppage-sysop}}|sajtens administratörer]] för hjälp ifall detta oväntat förhindrar dig från att göra tillåtna bidrag.
+
+Klicka 'tillbaka'-knappen i din webbläsare för att återvända till sidredigeraren.",
+);
+
+/** Telugu (తెలà±à°—à±)
+ * @author Kiranmayee
+ * @author Veeven
+ */
+$messages['te'] = array(
+ 'questycaptcha-addurl' => 'మీరౠచేసిన మారà±à°ªà±à°²à±‹ కొతà±à°¤ బయటి లింకà±à°²à± ఉనà±à°¨à°¾à°¯à°¿.
+ఆటోమేటెడౠసà±à°ªà°¾à°®à± à°¨à±à°‚à°¡à°¿ à°°à°•à±à°·à°£à°•à±ˆ, à°•à±à°°à°¿à°‚à°¦ కనిపించే à°ªà±à°°à°¶à±à°¨à°•à± సమాధానమివà±à°µà°‚à°¡à°¿ ([[Special:Captcha/help|మరింత సమాచారం]]):',
+ 'questycaptcha-edit' => 'à°ˆ పేజీని సరిదిదà±à°¦à°¡à°¾à°¨à°¿à°•à°¿, à°•à±à°°à°¿à°‚à°¦ కనిపించే à°ªà±à°°à°¶à±à°¨à°•à°¿ జవాబివà±à°µà°‚à°¡à°¿ ([[Special:Captcha/help|మరింత సమాచారం]]):',
+);
+
+/** Thai (ไทย)
+ * @author Harley Hartwell
+ */
+$messages['th'] = array(
+ 'questycaptchahelp-text' => "เว็บไซต์ที่บุคคลภายนอà¸à¹€à¸‚้ามาช่วยเขียนได้ เช่น วิà¸à¸´à¸™à¸µà¹‰ มัà¸à¸–ูà¸à¸ªà¹à¸›à¸¡à¹‚ดยผู้ใช้ที่ใช้บอตหรือโปรà¹à¸à¸£à¸¡à¸­à¸±à¸•à¹‚นมัติเพื่อเพิ่มลิงà¸à¹Œà¹„ปยังเว็บไซต์หลาย ๆ เว็บไซต์ à¹à¸¡à¹‰à¹€à¸£à¸²à¸ˆà¸°à¸ªà¸²à¸¡à¸²à¸£à¸–นำลิงà¸à¹Œà¸—ี่สà¹à¸›à¸¡à¸­à¸­à¸à¹„ด้à¸à¹‡à¸•à¸²à¸¡ à¹à¸•à¹ˆà¸à¹‡à¸¢à¹ˆà¸´à¸­à¸¡à¸à¹ˆà¸­à¹ƒà¸«à¹‰à¹€à¸à¸´à¸”ความรำคาà¸à¸•à¹ˆà¸­à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹„ด้เช่นà¸à¸±à¸™
+
+เนื่องจาà¸à¸à¸²à¸£à¹ƒà¸ªà¹ˆà¸¥à¸´à¸‡à¸à¹Œà¹€à¸›à¹‡à¸™à¹€à¸£à¸·à¹ˆà¸­à¸‡à¸¢à¸²à¸à¹ƒà¸™à¸à¸²à¸£à¸”ูà¹à¸¥à¹‚ดยอัตโนมัติ ในบางครั้ง โดยเฉพาะเมื่อคุณใส่ลิงà¸à¹Œà¹€à¸§à¹‡à¸šà¸ à¸²à¸¢à¸™à¸­à¸ ระบบวิà¸à¸´à¸­à¸²à¸ˆà¸‚อให้คุณตอบคำถาม เพื่อป้องà¸à¸±à¸™à¸™à¸±à¸à¸ªà¹à¸›à¸¡à¹à¸¥à¸°à¹‚รบอตโจมตีอื่น ๆ ทำà¸à¸²à¸£à¹à¸à¹‰à¹„ข à¹à¸•à¹ˆà¸ˆà¸°à¸­à¸™à¸¸à¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¸—ี่ใà¸à¸¥à¹‰à¹€à¸„ียงมนุษย์มาà¸à¸—ีุ่สุดà¹à¸à¹‰à¹„ขได้
+
+à¸à¸£à¸¸à¸“าติดต่อ [[{{MediaWiki:Grouppage-sysop}}|ผู้ดูà¹à¸¥à¸£à¸°à¸šà¸š]] หาà¸à¸à¸£à¸°à¸šà¸§à¸™à¸à¸²à¸£à¸™à¸µà¹‰à¹„ม่สามารถทำให้คุณà¹à¸à¹‰à¹„ขข้อมูลให้ถูà¸à¸•à¹‰à¸­à¸‡à¹„ด้
+
+à¸à¸”ปุ่ม 'Back' บนเบราเซอร์ของคุณเพื่อà¸à¸¥à¸±à¸šà¹„ปยังหน้าà¹à¸à¹‰à¹„ข",
+);
+
+/** Tagalog (Tagalog)
+ * @author AnakngAraw
+ */
+$messages['tl'] = array(
+ 'questycaptcha-addurl' => 'Kasali sa pagbago mo ang bagong panglabas na mga kawing.
+Upang makatulong sa pagsanggalang laban sa kusang panglulusob, pakisagot ang tanong na nakalitaw sa ibaba ([[Special:Captcha/help|more info]]):',
+ 'questycaptcha-badlogin' => 'Upang makatulong sa pagsasanggalang laban sa mga kusang paglutas ng hudyat, pakisagot lamang ang tanong na nakalitaw sa ibaba ([[Special:Captcha/help|marami pang kabatiran]]):',
+ 'questycaptcha-createaccount' => 'Upang makatulong sa pagsasanggalang laban sa kusang paglikha ng akawnt, pakisagot ang tanong na nakalitaw sa ibaba ([[Special:Captcha/help|marami pang kabatiran]]):',
+ 'questycaptcha-create' => 'Upang malikha ang pahina, pakisagot ang tanong na nakalitaw sa ibaba ([[Special:Captcha/help|marami pang kabatiran]]):',
+ 'questycaptcha-edit' => 'Upang mabago ang pahina, pakisagot ang tanong na nakalitaw sa ibaba ([[Special:Captcha/help|marami pang kabatiran]]):',
+ 'questycaptcha-sendemail' => 'Upang makatulong sa pagsasanggalang laban sa mga kusang paglusob, pakisagot lamang ang tanong na nakalitaw sa ibaba ([[Special:Captcha/help|marami pang kabatiran]]):',
+ 'questycaptchahelp-text' => "Ang mga websayt na tumatanggap ng mga ambag mula sa madla, katulad ng wiking ito, ay madalas abusuhin ng mga manlulusob na gumagamit ng kasangkapang pangkusa upang madagdag ang kanilang mga kawing sa maraming mga sayt.
+
+Kung minsan, partikular na kapag nagdaragdag ng bagong mga kawing pangweb sa isang pahina, maaaring humiling ang wiki na sagutin mo ang isang tanong.
+Dahil isa itong gawaing mahirap ikusa, magpapahintulot ito ng karamihan sa tunay na mga tao na gawin ang kanilang mga kontribusyon habang pinahihinto ang karamihan sa mga ispamer at iba pang mga makarobot na mga panglusob.
+
+Mangyaring makipag-ugnayan sa [[{{MediaWiki:Grouppage-sysop}}|mga tagapangasiwa ng sayt]] para sa pagtulong kung hindi inaasahang pigilan ka mula sa paggawa ng tunay na mga ambag.
+
+Pindutin ang pindutang 'bumalik' sa iyong pantingin-tingin upang makabalik sa pambago ng pahina.",
+);
+
+/** Turkish (Türkçe)
+ * @author Joseph
+ * @author Vito Genovese
+ */
+$messages['tr'] = array(
+ 'questycaptcha-addurl' => 'Değişikliğiniz yeni dış bağlantı içeriyor.
+Otomatik reklama karşı korunmaya yardımcı olmak için, lütfen ([[Special:Captcha/help|daha fazla bilgi]]) bölümünün altında yer alan soruya cevap verin:',
+ 'questycaptcha-badlogin' => 'Otomatik şifre kırmaya karşı korunmaya yardımcı olmak için, lütfen ([[Special:Captcha/help|daha fazla bilgi]]) bölümünün altında yer alan soruya cevap verin:',
+ 'questycaptcha-createaccount' => 'Otomatik hesap oluşturmaya karşı korunmaya yardımcı olmak için, lütfen ([[Special:Captcha/help|daha fazla bilgi]]) bölümünün altında yer alan soruya cevap verin:',
+ 'questycaptcha-create' => 'Sayfayı oluşturmak için, lütfen ([[Special:Captcha/help|daha fazla bilgi]]) bölümünün altında yer alan soruya cevap verin:',
+ 'questycaptcha-edit' => 'Sayfayı değiştirmek için, lütfen ([[Special:Captcha/help|daha fazla bilgi]]) bölümünün altında yer alan soruya cevap verin:',
+ 'questycaptcha-sendemail' => 'Otomatik spamlerden korunmaya yardımcı olmak için, lütfen aşağıda görünen soruyu cevaplayın ([[Special:Captcha/help|daha fazla bilgi]]):',
+ 'questycaptchahelp-text' => "Bu viki gibi herkesin katkı yapmasına izin veren web siteleri, genellikle bir çok siteye verilen bağlantıları ekleyen otomatik araçlar kullanan reklam amaçlı kullanıcılar tarafından istismar edilmektedir.
+Bu reklam bağlantıları kaldırılabiliyor olsa da, önemli bir sıkıntı yaratmaktadırlar.
+
+Bazen, özellikle bir sayfaya yeni web bağlantıları eklenirken, viki size bir soru sorabilir.
+Bu, otomatikleştirilmesi zor bir iş olduğu için, insanların katkılarını yapmasını mümkün kılarken çoğu reklam amaçlı kullanıcıyı ya da robot saldırganı durduracaktır.
+
+Bu durumun sizi normal katkılarınızı yapmaktan olağandışı bir şekilde alıkoyması halinde, lütfen destek için [[{{MediaWiki:Grouppage-sysop}}|site hizmetlileri]] ile irtibata geçin.
+
+Sayfa editörüne dönmek için tarayıcınızın 'geri' düğmesine tıklayın.",
+);
+
+/** Ukrainian (УкраїнÑька)
+ * @author Diemon.ukr
+ */
+$messages['uk'] = array(
+ 'questycaptcha-addurl' => 'Ваше Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð¼Ñ–Ñтить нові зовнішні поÑиланнÑ.
+Із метою захиÑту від Ñпаму, будь лаÑка, дайте відповідь на питаннÑ, що наводитьÑÑ Ð½Ð¸Ð¶Ñ‡Ðµ ([[Special:Captcha/help|докладніше]]):',
+ 'questycaptcha-badlogin' => 'Із метою захиÑту від автоматичного підбору паролÑ, будь лаÑка, дайте відповідь на питаннÑ, що наводитьÑÑ Ð½Ð¸Ð¶Ñ‡Ðµ ([[Special:Captcha/help|докладніше]]):',
+ 'questycaptcha-createaccount' => 'Із метою захиÑту від автоматичного ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¸Ñ… запиÑів, будь лаÑка, дайте відповідь на питаннÑ, що наводитьÑÑ Ð½Ð¸Ð¶Ñ‡Ðµ ([[Special:Captcha/help|докладніше]]):',
+ 'questycaptcha-create' => 'Щоб Ñтворити Ñторінку, будь лаÑка, дайте відповідь на питаннÑ, що наводитьÑÑ Ð½Ð¸Ð¶Ñ‡Ðµ ([[Special:Captcha/help|докладніше]]):',
+ 'questycaptcha-edit' => 'Щоб редагувати цю Ñторінку, будь лаÑка, дайте відповідь на питаннÑ, що наводитьÑÑ Ð½Ð¸Ð¶Ñ‡Ðµ ([[Special:Captcha/help|докладніше]]):',
+ 'questycaptcha-sendemail' => 'Із метою захиÑту від автоматичного Ñпаму, будь лаÑка, дайте відповідь на питаннÑ, що наводитьÑÑ Ð½Ð¸Ð¶Ñ‡Ðµ ([[Special:Captcha/help|докладніше]]):',
+ 'questycaptchahelp-text' => 'Сайти, Ñкі надають можливіÑÑ‚ÑŒ змінювати Ñвій зміÑÑ‚, Ñк це вікі, чаÑто Ñ” міÑцем Ð·Ð»Ð¾Ð²Ð¶Ð¸Ð²Ð°Ð½Ð½Ñ Ñпамерів, Ñкі викориÑтовують автоматизовані інÑтрументи Ð´Ð»Ñ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñилань на інші Ñайти.
+Хоча ці Ñпам-поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¼Ð¾Ð¶ÑƒÑ‚ÑŒ бути вилучені, вони Ñ” Ñуттєвим негативним чинником.
+
+Іноді, оÑобливо при додаванні нових поÑилань веб-Ñторінки, вікі може попроÑити Ð²Ð°Ñ Ð²Ñ–Ð´Ð¿Ð¾Ð²Ñ–Ñти на запитаннÑ.
+Це Ñ” завданнÑм, Ñке важко автоматизувати, тому воно дозволить більшоÑÑ‚Ñ– реальних людей зробити Ñвій внеÑок, Ñ– в той же Ñ‡Ð°Ñ Ð·ÑƒÐ¿Ð¸Ð½Ð¸Ñ‚ÑŒ більшіÑÑ‚ÑŒ Ñпамерів та інших роботизованих нападників.
+
+Будь лаÑка, зв\'ÑжітьÑÑ Ð· [[{{MediaWiki:Grouppage-sysop}}|адмініÑтраторами Ñайту]] по допомогу, Ñкщо Ñ†Ñ ÑиÑтема не дозволÑÑ” вам робити допуÑтимий внеÑок.
+
+ÐатиÑніть на кнопку "назад" у браузері, щоб повернутиÑÑ Ð½Ð° Ñторінку редагуваннÑ.',
+);
+
+/** Yiddish (ייִדיש)
+ * @author פוילישער
+ */
+$messages['yi'] = array(
+ 'questycaptcha-create' => 'צו ש×ַפֿן ×“×¢× ×‘×œ×ַט, ביטע ענטפֿערט די פֿר×Ö·×’×¢ ×ונטן ([[Special:Captcha/help|מער ×ינפֿ×רמ×ַציע]]):',
+);
+
+/** Simplified Chinese (‪中文(简体)‬) */
+$messages['zh-hans'] = array(
+ 'questycaptcha-addurl' => '您的编辑内容中å«æœ‰æœ¬ç½‘站以外的连结。为防止ä¸å½“程å¼å¤§é‡ç ´å,请回答以下的问题([[Special:Captcha/help|相关资讯]]):',
+ 'questycaptcha-badlogin' => '为防止ä¸å½“程å¼ç ´è§£å¯†ç ï¼Œè¯·å›žç­”以下的问题([[Special:Captcha/help|相关资讯]]):',
+ 'questycaptcha-createaccount' => '为防止ä¸å½“程å¼å¤§é‡å»ºç«‹å¸æˆ·ï¼Œè¯·å›žç­”以下的问题([[Special:Captcha/help|相关资讯]]):',
+ 'questycaptcha-create' => '为防止ä¸å½“程å¼å¤§é‡å»ºç«‹é¡µé¢ï¼Œè¯·å›žç­”以下问题([[Special:Captcha/help|相关资讯]]):',
+ 'questycaptcha-edit' => '为防破å,如您想è¦ç¼–辑此页é¢ï¼Œè¯·å›žç­”以下的问题([[Special:Captcha/help|相关资讯]]):',
+ 'questycaptcha-sendemail' => '为防止ä¸å½“程å¼ç ´è§£å¯†ç ï¼Œè¯·å›žç­”下列问题([[Special:Captcha/help|相关资讯]]):',
+);
+
+/** Traditional Chinese (‪中文(ç¹é«”)‬)
+ * @author Horacewai2
+ * @author Waihorace
+ */
+$messages['zh-hant'] = array(
+ 'questycaptcha-addurl' => '您的編輯內容中å«æœ‰æœ¬ç¶²ç«™ä»¥å¤–的連çµã€‚為防止ä¸ç•¶ç¨‹å¼å¤§é‡ç ´å£žï¼Œè«‹å›žç­”以下的å•é¡Œï¼ˆ[[Special:Captcha/help|相關資訊]]):',
+ 'questycaptcha-badlogin' => '為防止ä¸ç•¶ç¨‹å¼ç ´è§£å¯†ç¢¼ï¼Œè«‹å›žç­”以下的å•é¡Œï¼ˆ[[Special:Captcha/help|相關資訊]]):',
+ 'questycaptcha-createaccount' => '為防止ä¸ç•¶ç¨‹å¼å¤§é‡å»ºç«‹å¸³æˆ¶ï¼Œè«‹å›žç­”以下的å•é¡Œï¼ˆ[[Special:Captcha/help|相關資訊]]):',
+ 'questycaptcha-create' => '為防止ä¸ç•¶ç¨‹å¼å¤§é‡å»ºç«‹é é¢ï¼Œè«‹å›žç­”以下å•é¡Œï¼ˆ[[Special:Captcha/help|相關資訊]]):',
+ 'questycaptcha-edit' => '為防破壞,如您想è¦ç·¨è¼¯æ­¤é é¢ï¼Œè«‹å›žç­”以下的å•é¡Œï¼ˆ[[Special:Captcha/help|相關資訊]]):',
+ 'questycaptcha-sendemail' => '為防止ä¸ç•¶ç¨‹å¼ç ´è§£å¯†ç¢¼ï¼Œè«‹å›žç­”下列å•é¡Œï¼ˆ[[Special:Captcha/help|相關資訊]]):',
+);
+
diff --git a/extensions/ConfirmEdit/QuestyCaptcha.php b/extensions/ConfirmEdit/QuestyCaptcha.php
new file mode 100644
index 00000000..351c3421
--- /dev/null
+++ b/extensions/ConfirmEdit/QuestyCaptcha.php
@@ -0,0 +1,42 @@
+<?php
+/**
+ * A question-based captcha plugin.
+ *
+ * Copyright (C) 2009 Benjamin Lees <emufarmers@gmail.com>
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ exit;
+}
+
+global $wgCaptchaQuestions;
+$wgCaptchaQuestions = array();
+
+// Add your questions in LocalSettings.php using this format
+// $wgCaptchaQuestions[] = array( 'question' => "A question?", 'answer' => "An answer!" );
+// $wgCaptchaQuestions[] = array( 'question' => 'How much wood would a woodchuck chuck if a woodchuck could chuck wood?', 'answer' => 'as much wood as...' );
+// $wgCaptchaQuestions[] = array( 'question' => "What is this wiki's name?", 'answer' => "$wgSitename" );
+// You can also provide several acceptable answers to a given question (the answers shall be in lowercase):
+// $wgCaptchaQuestions[] = array( 'question' => "2 + 2 ?", 'answer' => array( '4', 'four' ) );
+
+$wgExtensionMessagesFiles['QuestyCaptcha'] = dirname( __FILE__ ) . '/QuestyCaptcha.i18n.php';
+$wgAutoloadClasses['QuestyCaptcha'] = dirname( __FILE__ ) . '/QuestyCaptcha.class.php';
diff --git a/extensions/ConfirmEdit/README b/extensions/ConfirmEdit/README
new file mode 100644
index 00000000..f23fbb2b
--- /dev/null
+++ b/extensions/ConfirmEdit/README
@@ -0,0 +1,38 @@
+ConfirmEdit extension for MediaWiki
+
+This extension provides various CAPTCHA tools for MediaWiki, to allow
+for protection against spambots and other automated tools.
+
+For more information, see the extension homepage at:
+http://www.mediawiki.org/wiki/Extension:ConfirmEdit
+
+== Overview ==
+
+The following modules are included in ConfirmEdit:
+
+* SimpleCaptcha - users have to solve an arithmetic math problem
+* MathCaptcha - users have to solve a math problem that's displayed as
+an image
+* FancyCaptcha - users have to identify a series of characters, displayed
+in a stylized way
+* QuestyCaptcha - users have to answer a question, out of a series of
+questions defined by the administrator(s)
+* ReCaptcha - users have to identify a series of characters, either
+visually or audially, from a widget provided by the reCAPTCHA service
+
+== License ==
+
+ConfirmEdit is published under the GPL license.
+
+== Authors ==
+
+The main framework, and the SimpleCaptcha and FancyCaptcha modules, were
+written by Brion Vibber.
+
+The MathCaptcha module was written by Rob Church.
+
+The QuestyCaptcha module was written by Benjamin Lees.
+
+The reCAPTCHA module was written by Mike Crawford and Ben Maurer.
+
+Additional maintenance work was done by Yaron Koren.
diff --git a/extensions/ConfirmEdit/ReCaptcha.i18n.php b/extensions/ConfirmEdit/ReCaptcha.i18n.php
new file mode 100644
index 00000000..a2001424
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha.i18n.php
@@ -0,0 +1,402 @@
+<?php
+/**
+ * Internationalisation file for the reCAPTCHA module of the ConfirmEdit
+ * extension.
+ *
+ * @addtogroup Extensions
+*/
+
+$messages = array();
+
+/* English */
+$messages['en'] = array(
+ 'recaptcha-desc' => 'reCAPTCHA module for Confirm Edit',
+ 'recaptcha-edit' => 'To help protect against automated edit spam, please type the two words you see in the box below:',
+ 'recaptcha-addurl' => 'Your edit includes new external links. To help protect against automated spam, please type the two words you see in the box below:',
+ 'recaptcha-badpass' => 'To help protect against automated password cracking, please type the two words you see in the box below:',
+ 'recaptcha-createaccount' => 'To help protect against automated account creation, please type the two words you see in the box below:',
+ 'recaptcha-createaccount-fail' => "Incorrect or missing reCAPTCHA answer.",
+ 'recaptcha-create' => 'To help protect against automated page creation, please type the two words you see in the box below:',
+);
+
+/** Arabic (العربية)
+ * @author Meno25
+ */
+$messages['ar'] = array(
+ 'recaptcha-desc' => 'موديل reCAPTCHA لConfirm Edit',
+);
+
+/** Asturian (Asturianu)
+ * @author Xuacu
+ */
+$messages['ast'] = array(
+ 'recaptcha-edit' => "P'ayudar a protexenos escontra'l spam d'edición, escribi les dos pallabres que se ven na caxella d'abaxo:",
+ 'recaptcha-addurl' => "La to edición incluye enllaces esternos nuevos. P'ayudar a protexenos escontra'l spam automáticu, escribi les dos pallabres que se ven na caxella d'abaxo:",
+ 'recaptcha-badpass' => "P'ayudar a protexenos escontra'l frañimientu de claves automáticu, escribi les dos pallabres que se ven na caxella d'abaxo:",
+ 'recaptcha-createaccount' => "P'ayudar a protexenos escontra la creación de cuentes automática, escribi les dos pallabres que se ven na caxella d'abaxo:",
+ 'recaptcha-createaccount-fail' => 'Falta la rempuesta a la entruga de reCAPTCHA o ye incorreuta',
+ 'recaptcha-create' => "P'ayudar a protexenos escontra la creación de páxines automática, escribi les dos pallabres que se ven na caxella d'abaxo:",
+);
+
+/** Belarusian (TaraÅ¡kievica orthography) (‪БеларуÑÐºÐ°Ñ (тарашкевіца)‬)
+ * @author EugeneZelenko
+ * @author Jim-by
+ */
+$messages['be-tarask'] = array(
+ 'recaptcha-edit' => 'Ð”Ð»Ñ Ð°Ð±Ð°Ñ€Ð¾Ð½Ñ‹ Ñупраць Ñпаму, калі лаÑка, увÑдзіце два Ñловы, ÑÐºÑ–Ñ Ð’Ñ‹ бачыце Ñž полі ніжÑй:',
+ 'recaptcha-addurl' => 'Вашае Ñ€Ñдагаваньне ўтрымлівае Ð½Ð¾Ð²Ñ‹Ñ Ð²Ð¾Ð½ÐºÐ°Ð²Ñ‹Ñ ÑпаÑылкі. Ð”Ð»Ñ Ð°Ð±Ð°Ñ€Ð¾Ð½Ñ‹ Ñупраць Ñпаму, калі лаÑка, увÑдзіце два Ñловы, ÑÐºÑ–Ñ Ð’Ñ‹ бачыце Ñž полі ніжÑй:',
+ 'recaptcha-badpass' => 'Ð”Ð»Ñ Ð°Ð±Ð°Ñ€Ð¾Ð½Ñ‹ Ñупраць узлому паролю, калі лаÑка, увÑдзіце два Ñловы, ÑÐºÑ–Ñ Ð’Ñ‹ бачыце Ñž полі ніжÑй:',
+ 'recaptcha-createaccount' => 'Ð”Ð»Ñ Ð°Ð±Ð°Ñ€Ð¾Ð½Ñ‹ Ñупраць аўтаматычнага ÑтварÑÐ½ÑŒÐ½Ñ Ñ€Ð°Ñ…ÑƒÐ½ÐºÐ°Ñž, калі лаÑка, увÑдзіце два Ñловы, ÑÐºÑ–Ñ Ð’Ñ‹ бачыце Ñž полі ніжÑй:',
+ 'recaptcha-createaccount-fail' => 'Ðдказ reCAPTCHA нÑÑлушны ці адÑутнічае.',
+ 'recaptcha-create' => 'Ð”Ð»Ñ Ð°Ð±Ð°Ñ€Ð¾Ð½Ñ‹ Ñупраць аўтаматычнага ÑтварÑÐ½ÑŒÐ½Ñ Ñтаронак, калі лаÑка, увÑдзіце два Ñловы, ÑÐºÑ–Ñ Ð’Ñ‹ бачыце Ñž полі ніжÑй:',
+);
+
+/** Breton (Brezhoneg)
+ * @author Fulup
+ */
+$messages['br'] = array(
+ 'recaptcha-edit' => "Da sikour en em wareziñ diouzh ar stroboù emgefre, merkit an daou c'her a welit er voest dindan :",
+ 'recaptcha-addurl' => "Liamm diavaez nevez zo bet degaset ganeoc'h. Da sikour en em wareziñ diouzh ar stroboù, merkit an daou c'her a welit er voest dindan :",
+ 'recaptcha-badpass' => "Da sikour en em wareziñ diouzh an diskuliañ gerioù-tremen emgefre dre daolioù-esae, merkit an daou c'her a welit er voest dindan :",
+ 'recaptcha-createaccount' => "Da sikour en em wareziñ diouzh ar c'hrouiñ kontoù emgefre, merkit an daou c'her a welit er voest dindan :",
+ 'recaptcha-createaccount-fail' => 'Respont reCAPTHCA faziek pe ezvezant.',
+ 'recaptcha-create' => "Da sikour en em wareziñ diouzh ar c'hrouiñ pajennoù emgefre, merkit an daou c'her a welit er voest dindan :",
+);
+
+/** Bosnian (Bosanski)
+ * @author CERminator
+ */
+$messages['bs'] = array(
+ 'recaptcha-edit' => 'Da bismo pomogli protiv automatiziranog spam ureÄ‘ivanja, molimo upiÅ¡ite dvije rijeÄi koje vidite u kutiju ispod:',
+ 'recaptcha-addurl' => 'VaÅ¡e izmjene ukljuÄuju nove vanjske linkove. Da bismo pomogli protiv automatiziranog spama, molimo upiÅ¡ite dvije rijeÄi koje vidite u kutiju ispod.',
+ 'recaptcha-badpass' => 'Da bismo pomogli protiv automatiziranog probijanja Å¡ifre, molimo upiÅ¡ite dvije rijeÄi koje vidite u kutiju ispod:',
+ 'recaptcha-createaccount' => 'Da bismo pomogli protiv automatiziranog pravljenja raÄuna, molimo upiÅ¡ite dvije rijeÄi koje vidite u kutiju ispod:',
+ 'recaptcha-createaccount-fail' => 'Neispravan ili nedostajući reCAPTCHA odgovor.',
+ 'recaptcha-create' => 'Da bismo pomogli protiv automatiziranog pravljenja stranica, molimo upiÅ¡ite dvije rijeÄi koje vidite u kutiju ispod:',
+);
+
+/** Czech (ÄŒesky)
+ * @author Jkjk
+ * @author Mormegil
+ */
+$messages['cs'] = array(
+ 'recaptcha-desc' => 'Podpora reCAPTCHA pro rozšíření Confirm Edit',
+ 'recaptcha-edit' => 'V zájmu ochrany před automatickým spamováním opište dvě slova, která vidíte na obrázku:',
+ 'recaptcha-addurl' => 'Vaše editace obsahuje nové externí odkazy. V zájmu ochrany před automatickým spamováním opište dvě slova, která vidíte na obrázku:',
+ 'recaptcha-badpass' => 'V zájmu ochrany proti automatickým pokusům uhodnout heslo opište dvě slova, která vidíte na obrázku:',
+ 'recaptcha-createaccount' => 'V rámci ochrany pÅ™ed automatickým vytvářením úÄtů opiÅ¡te dvÄ› slova, která vidíte na obrázku:',
+ 'recaptcha-createaccount-fail' => 'Nesprávná nebo chybÄ›jící odpovÄ›Ä na reCAPTCHA.',
+ 'recaptcha-create' => 'V zájmu ochrany před automatickým zakládáním stránek opište dvě slova, která vidíte na obrázku:',
+);
+
+/** Welsh (Cymraeg)
+ * @author Lloffiwr
+ */
+$messages['cy'] = array(
+ 'recaptcha-edit' => "Er mwyn ei gwneud yn annodd i olygyddion awtomatig osod sbam, teipiwch y ddau air sydd i'w gweld yn y blwch isod:",
+ 'recaptcha-addurl' => "Mae'ch golygiad yn cynnwys cysylltiadau allanol newydd. Er mwyn helpu i ddiogelu rhag sbam awtomatig, teipiwch y ddau air sydd i'w gweld yn y blwch isod:",
+ 'recaptcha-badpass' => "Er mwyn helpu i arbed rhag i'ch cyfrinair gael ei ddatrys gan beiriant, teipiwch y ddau air sydd i'w gweld yn y blwch isod:",
+ 'recaptcha-createaccount' => "Er mwyn ei gwneud yn annodd i beiriannau i agor cyfrifon yn awtomatig, teipiwch y ddau air sydd i'w gweld yn y blwch isod:",
+ 'recaptcha-createaccount-fail' => "Mae'r ateb i'r pos CAPTCHA yn anghywir neu yn eisiau.",
+ 'recaptcha-create' => "Er mwyn ei gwneud yn annodd i beiriannau i ddechrau tudalennau yn awtomatig, teipiwch y ddau air sydd i'w gweld yn y blwch isod:",
+);
+
+/** German (Deutsch) */
+$messages['de'] = array(
+ 'recaptcha-edit' => 'Zum Schutz vor automatisiertem Spam, gib bitte die beiden folgenden Wörter in das untenstehende Feld ein:',
+ 'recaptcha-addurl' => 'Deine Bearbeitung enthält neue externe Links. Zum Schutz vor automatisiertem Spam gib bitte die beiden folgenden Wörter in das folgende Feld ein:',
+ 'recaptcha-badpass' => 'Zum Schutz gegen automatisiertes Knacken von Passwörtern, gib bitte die beiden folgenden Wörter in das folgende Feld ein:',
+ 'recaptcha-createaccount' => 'Zum Schutz gegen automatisierte Erstellung von Benutzerkonten gib bitte die beiden folgenden Wörter in das folgende Feld ein:',
+ 'recaptcha-createaccount-fail' => 'Fehlerhafte oder fehlende reCAPTCHA Antwort.',
+ 'recaptcha-create' => 'Zum Schutz gegen automatisierte Erstellung von Seiten gib bitte die beiden folgenden Wörter in das folgende Feld ein:',
+);
+
+/** Spanish (Español)
+ * @author Fitoschido
+ */
+$messages['es'] = array(
+ 'recaptcha-edit' => 'Para protegernos de la publicidad automatizada, escribe las dos palabras visibles en el cuadro de abajo:',
+ 'recaptcha-addurl' => 'Tu edición incluye nuevos enlaces externos. Para ayudar a protegernos contra el spam automatizado, por favor, escribe las dos palabras que ves en el cuadro a continuación:',
+ 'recaptcha-badpass' => 'Para protegernos del robo automatizado de contraseñas, escribe las dos palabras visibles en el cuadro de abajo:',
+ 'recaptcha-createaccount' => 'Para protegernos de la creación automática de cuentas, escribe las dos palabras que ves en el cuadro de abajo:',
+ 'recaptcha-createaccount-fail' => 'ReCAPTCHA incorrecto o sin responder.',
+ 'recaptcha-create' => 'Para protegernos de la creación automática de páginas, escribe las dos palabras que ves en el cuadro de abajo:',
+);
+
+/** French (Français) */
+$messages['fr'] = array(
+ 'recaptcha-edit' => "Pour nous protéger des robots, merci d'écrire les deux mots visibles dans le cadre qui suit:",
+ 'recaptcha-addurl' => "Votre contribution contient des liens vers un site externe. Pour nous protéger des robots, merci d'écrire les deux mots visibles dans le cadre qui suit:",
+ 'recaptcha-badpass' => "Pour nous protéger des essais automatiques de cassage de mot de passe, merci d'écrire les deux mots visibles dans le cadre qui suit:",
+ 'recaptcha-createaccount' => "Pour nous protéger des créations automatiques de compte, merci d'écrire les deux mots visibles dans le cadre qui suit:",
+ 'recaptcha-createaccount-fail' => 'Réponse de reCAPTCHA fausse ou manquante.',
+ 'recaptcha-create' => "Pour nous protéger des créations automatiques de pages, merci d'écrire les deux mots visibles dans le cadre qui suit:",
+);
+
+/** Galician (Galego)
+ * @author Toliño
+ */
+$messages['gl'] = array(
+ 'recaptcha-desc' => 'Módulo de reCAPTCHA para Confirm Edit',
+ 'recaptcha-edit' => 'Para axudarnos á protección contra o spam, escriba as dúas palabras que vexa nesta caixa:',
+ 'recaptcha-addurl' => 'A súa edición inclúe novas ligazóns externas. Para axudar na protección contra o spam automático, ten que escribir as dúas palabras que aparecen na caixa inferior:',
+ 'recaptcha-badpass' => 'Para axudarnos á protección contra o roubo de contrasinais, escriba as dúas palabras que vexa nesta caixa:',
+ 'recaptcha-createaccount' => 'Para axudarnos á protección contra a creación automática de contas, escriba as dúas palabras que vexa nesta caixa:',
+ 'recaptcha-createaccount-fail' => 'Falta a resposta ao reCAPTCHA ou esta é incorrecta.',
+ 'recaptcha-create' => 'Para axudarnos á protección contra a creación automática de páxinas, escriba as dúas palabras que vexa nesta caixa:',
+);
+
+/** Swiss German (Alemannisch)
+ * @author Als-Holder
+ */
+$messages['gsw'] = array(
+ 'recaptcha-edit' => 'Zum Schutz vor automatisiertem Spam, gib bitte di beide Werter in s Fäld unten yy:',
+ 'recaptcha-addurl' => 'In Dyre Bearbeitg het s neji extärni Links. Zum Schutz vor automatisiertem Spam, gib bitte di beide Werter in s Fäld unten yy:',
+ 'recaptcha-badpass' => 'Zum Schutz gege automatisiert Knacken vu Passwerter, gib bitte di beide Werter in s Fäld unten yy:',
+ 'recaptcha-createaccount' => 'Zum Schutz gege s automatisiert Aalege vu Benutzerkonte, gib bitte di beide Werter in s Fäld unten yy:',
+ 'recaptcha-createaccount-fail' => 'D reCAPTCHA-Antwort isch fählerhaft oder si fählt.',
+ 'recaptcha-create' => 'Zum Schutz gege s automatisiert Aalege vu Syte, gib bitte di beide Werter in s Fäld unten yy:',
+);
+
+/** Hebrew (עברית) */
+$messages['he'] = array(
+ 'recaptcha-edit' => '××™× ×›× ×ž×©×ª×ž×© רשו×.×›×”×’× ×” מפני ספ×× ×וטומטי, ×× × ×”×§×œ×™×“×• ×ת שתי ×”×ž×™×œ×™× ×©×œ×”×œ×Ÿ. תודה.',
+ 'recaptcha-addurl' => '××™× ×›× ×ž×©×ª×ž×© רשו×.×›×”×’× ×” מפני ספ×× ×וטומטי, ×× × ×”×§×œ×™×“×• ×ת שתי ×”×ž×™×œ×™× ×©×œ×”×œ×Ÿ. תודה.',
+ 'recaptcha-badpass' => '×›×”×’× ×” מפני מפצחי סיסמ×ות ××•×˜×•×ž×˜×™×™× ×× × ×”×§×œ×™×“×• ×ת שתי ×”×ž×™×œ×™× ×©×œ×”×œ×Ÿ:',
+ 'recaptcha-createaccount' => '×›×”×’× ×” מפני יצירת חשבונות ×¤×™×§×˜×™×‘×™×™× ×¢"×™ ××•×˜×•×ž×˜×™× ×× × ×”×§×œ×™×“×• ×ת שתי ×”×ž×™×œ×™× ×©×œ×”×œ×Ÿ:',
+ 'recaptcha-createaccount-fail' => '×œ× ×”×•×§×œ×“×• מילות ×”×ישור, ×ו שהוקלדו ×ž×™×œ×™× ×œ× × ×›×•× ×•×ª. נסו שנית.',
+ 'recaptcha-create' => '××™× ×›× ×ž×©×ª×ž×© רשו×.×›×”×’× ×” מפני ספ×× ×וטומטי, ×× × ×”×§×œ×™×“×• ×ת שתי ×”×ž×™×œ×™× ×©×œ×”×œ×Ÿ. תודה.',
+);
+
+/** Upper Sorbian (Hornjoserbsce)
+ * @author Michawiki
+ */
+$messages['hsb'] = array(
+ 'recaptcha-edit' => 'Za škit přećiwo awtomatizowanemu spamej, prošu zapisaj dwě słowje, kotrejž w slědowacym polu widźiš:',
+ 'recaptcha-addurl' => 'Twoja změna wobsahuje nowe eksterne wotkazy. Za škit přećiwo awtomatizowanemu spamej, prošu zapisaj dwě słowje, kotrerjž w slědowacym polu widźiš:',
+ 'recaptcha-badpass' => 'Za škit přećiwo awtomatizowanemu złamanju hesłow, zapisaj prošu wobě słowje, kotrejž widźiš, do slědowaceho pola:',
+ 'recaptcha-createaccount' => 'Za škit přećiwo awtomatiskemu wutworjenju konta, prošu zapisaj tej wobě słowje, kotrejž w slědowacym polu widźiš:',
+ 'recaptcha-createaccount-fail' => 'WopaÄna abo falowaca wotmoÅ‚wa reCAPTCHA.',
+ 'recaptcha-create' => 'Za škit přećiwo awtomatiskemu wutworjenju strony, prošu zapisaj tej wobě słowje, kotrejž w slědowacym polu widźiš:',
+);
+
+/** Interlingua (Interlingua)
+ * @author McDutchie
+ */
+$messages['ia'] = array(
+ 'recaptcha-edit' => 'Pro adjutar a proteger nos contra le spam automatisate, per favor entra le duo parolas que tu vide in le quadro sequente:',
+ 'recaptcha-addurl' => 'Iste modification include nove ligamines externe. Pro adjutar a proteger nos contra le spam automatisate, per favor entra le duo parolas que tu vide in le quadro sequente:',
+ 'recaptcha-badpass' => 'Pro adjutar a proteger nos contra le furto automatisate de contrasignos, per favor entra le duo parolas que tu vide in le quadro sequente:',
+ 'recaptcha-createaccount' => 'Pro adjutar a proteger nos contra le creation automatisate de contos, per favor entra le duo parolas que tu vide in le quadro sequente:',
+ 'recaptcha-createaccount-fail' => 'Responsa reCAPTCHA incorrecte o mancante.',
+ 'recaptcha-create' => 'Pro adjutar a proteger nos contra le creation automatisate de paginas, per favor entra le duo parolas que tu vide in le quadro sequente:',
+);
+
+/** Indonesian (Bahasa Indonesia)
+ * @author IvanLanin
+ */
+$messages['id'] = array(
+ 'recaptcha-edit' => 'Untuk membantu pelindungan terhadap spam penyuntingan otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:',
+ 'recaptcha-addurl' => 'Suntingan Anda menyertakan pranala eksternal baru. Untuk membantu pelindungan terhadap spam otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:',
+ 'recaptcha-badpass' => 'Untuk membantu pelindungan terhadap perengkahan sandi otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:',
+ 'recaptcha-createaccount' => 'Untuk membantu pelindungan terhadap pembuatan akun otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:',
+ 'recaptcha-createaccount-fail' => 'Jawaban reCAPTCHA tidak benar atau tidak dimasukkan.',
+ 'recaptcha-create' => 'Untuk membantu pelindungan terhadap pembuatan halaman otomatis, silakan ketik dua kata yang Anda lihat dalam kotak di bawah ini:',
+);
+
+/** Japanese (日本語) */
+$messages['ja'] = array(
+ 'recaptcha-edit' => '自動編集スパムã‹ã‚‰ã®ä¿è­·ã®ãŸã‚ã€ä¸‹ã®ç”»åƒã«è¡¨ç¤ºã•ã‚Œã¦ã„ã‚‹ï¼’ã¤ã®è¨€è‘‰ã‚’入力 ã—ã¦ãã ã•ã„。',
+ 'recaptcha-addurl' => 'ã‚ãªãŸã®ç·¨é›†ã¯æ–°ã—ã„外部リンクをå«ã‚“ã§ã„ã¾ã™ã€‚自動スパムã‹ã‚‰ã®ä¿è­·ã®ãŸ ã‚ã€ä¸‹ã®ç”»åƒã«è¡¨ç¤ºã•ã‚Œã¦ã„ã‚‹ï¼’ã¤ã®è¨€è‘‰ã‚’入力ã—ã¦ãã ã•ã„。',
+ 'recaptcha-badpass' => '自動パスワードクラッキングã‹ã‚‰ã®ä¿è­·ã®ãŸã‚ã«ã€ä¸‹ã®ç”»åƒã«è¡¨ç¤ºã•ã‚Œã¦ã„ã‚‹ï¼’ ã¤ã®è¨€è‘‰ã‚’入力ã—ã¦ãã ã•ã„。',
+ 'recaptcha-createaccount' => '自動アカウント登録ã‹ã‚‰ã®ä¿è­·ã®ãŸã‚ã«ã€ä¸‹ã®ç”»åƒã«è¡¨ç¤ºã•ã‚Œã¦ã„ã‚‹ï¼’ã¤ã®è¨€è‘‰ を入力ã—ã¦ãã ã•ã„。',
+ 'recaptcha-createaccount-fail' => '入力ã•ã‚ŒãŸæ–‡å­—列ãŒæ­£ã—ãã‚ã‚Šã¾ã›ã‚“。',
+ 'recaptcha-create' => '自動ページ作æˆã‹ã‚‰ã®ä¿è­·ã®ãŸã‚ã«ã€ä¸‹ã®ç”»åƒã«è¡¨ç¤ºã•ã‚Œã¦ã„ã‚‹ï¼’ã¤ã®è¨€è‘‰ã‚’å…¥ 力ã—ã¦ãã ã•ã„。',
+);
+
+/** Colognian (Ripoarisch)
+ * @author Purodha
+ */
+$messages['ksh'] = array(
+ 'recaptcha-edit' => 'Schrief di zwei Wööt en dä Kaste onge erin.
+Dat sull jääje et automattesche Ändere un SPAM em Wiki schöze.',
+ 'recaptcha-addurl' => 'Schrief di zwei Wööt en dä Kaste onge erin.
+Dat sull jääje automattesch en et Wiki jebraate SPAM schöze, nohdämm en Dingem Beidraach {{PLURAL:$1|ene neue Lengk dren es|neue Lengks dren sin|kein neue Lengks dren sin}}.',
+ 'recaptcha-badpass' => 'Schrief di zwei Wööt en dä Kaste onge erin.
+Dat sull jääje et automattesche Paßwoot Knacke em Wiki schöze.',
+ 'recaptcha-createaccount' => 'Schrief di zwei Wööt en dä Kaste onge erin.
+Dat sull jääje SPAM un automattesch aanjelaate Zohjäng nohm Wiki schöze.',
+ 'recaptcha-createaccount-fail' => 'Dat wohr en verkehte udder jaa kei Antwoot op dat Kaptscha.',
+ 'recaptcha-create' => 'Schrief di zwei Wööt en dä Kaste onge erin.
+Dat sull jääje SPAM un automattesch aanjelaate Sigge em Wiki schöze.',
+);
+
+/** Luxembourgish (Lëtzebuergesch)
+ * @author Robby
+ */
+$messages['lb'] = array(
+ 'recaptcha-edit' => "Fir ze hëllefe eis géint automatiséierte Spam ze schützen, tippt w.e.g. déi zwee Wierder déi Dir gesitt an d'Këscht ënnendrënner an:",
+ 'recaptcha-addurl' => "An Ärer Ännerung sinn nei extern Linken! Fir ze hëllefe géint automatiséierte Spam virzegoen, tippt w.e.g. déi zwee Wierder déi Dir gesitt an d'Këscht ënnendrënner:",
+ 'recaptcha-badpass' => "Fir ze hëllefe eis géint d'automatiséiert hacke vu Passwierder ze schützen, tippt w.e.g. déi zwee Wierder déi Dir gesitt an d'Këscht ënnendrënner an:",
+ 'recaptcha-createaccount' => "Fir ze hëllefe eis géint d'automatiséiert Uleeë vu Benotzerkonten ze schützen, tippt w.e.g. déi zwee Wierder déi Dir gesitt an d'Këscht ënnendrënner an:",
+ 'recaptcha-createaccount-fail' => 'reCAPTCHA Äntwert feelt oder ass net korrekt.',
+ 'recaptcha-create' => "Fir ze hëllefe eis géint d'automatiséiert Uleeë vu Säiten ze schützen, tippt w.e.g. déi zwee Wierder déi Dir gesitt an d'Këscht ënnendrënner an:",
+);
+
+/** Macedonian (МакедонÑки)
+ * @author Bjankuloski06
+ */
+$messages['mk'] = array(
+ 'recaptcha-desc' => 'Модул reCAPTCHA за потврда на уредувања',
+ 'recaptcha-edit' => 'Како заштитна мерка против автоматизиран Ñпам, внеÑете ги двата збора прикажани во полето:',
+ 'recaptcha-addurl' => 'Во вашите измени има нови надворешни врÑки. Како заштитна мерка против автоматизиран Ñпам, внеÑете ги двата збора прикажани во полето:',
+ 'recaptcha-badpass' => 'Како заштитна мерка против автоматизирано провалување на лозинки, внеÑете ги двата збора прикажани во полето:',
+ 'recaptcha-createaccount' => 'Како заштитна мерка против автоматизирано Ñоздавање на Ñметки, внеÑете ги двата збора прикажани во полето:',
+ 'recaptcha-createaccount-fail' => 'reCAPTCHA доби погрешен одговор или одговорот недоÑтаÑува.',
+ 'recaptcha-create' => 'Како заштитна мерка против автоматизирано Ñоздавање на Ñтраници, внеÑете ги двата збора прикажани во полето:',
+);
+
+/** Malay (Bahasa Melayu)
+ * @author Anakmalaysia
+ */
+$messages['ms'] = array(
+ 'recaptcha-edit' => 'Untuk membanteras kegiatan spam automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:',
+ 'recaptcha-addurl' => 'Suntingan anda termasuk pautan luar baru. Untuk membanteras kegiatan spam automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:',
+ 'recaptcha-badpass' => 'Untuk membanteras kegiatan meneka kata laluan secara automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:',
+ 'recaptcha-createaccount' => 'Untuk membanteras kegiatan membuka akaun secara automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:',
+ 'recaptcha-createaccount-fail' => 'Jawapan reCAPTCHA tidak betul atau tidak ada.',
+ 'recaptcha-create' => 'Untuk membanteras kegiatan mencipta laman secara automatik, sila taipkan dua perkataan yang anda lihat dalam petak di bawah:',
+);
+
+/** Dutch (Nederlands)
+ * @author Siebrand
+ */
+$messages['nl'] = array(
+ 'recaptcha-edit' => 'Voer ter bescherming tegen geautomatiseerde spam de twee woorden die u ziet in het invoervenster in:',
+ 'recaptcha-addurl' => 'Uw bewerking bevat nieuwe externe verwijzingen. Voer ter bescherming tegen geautomatiseerde spam de twee woorden die u ziet in het invoervenster in:',
+ 'recaptcha-badpass' => 'Voer ter bescherming tegen het automatisch kraken van wachtwoorden de twee woorden die u ziet in het invoervenster in:',
+ 'recaptcha-createaccount' => 'Om het automatisch aanmaken van gebruikers tegen te gaan moet u de twee woorden die u ziet invoeren:',
+ 'recaptcha-createaccount-fail' => 'Het reCAPTCHA-antwoord is onjuist of niet ingevoerd.',
+ 'recaptcha-create' => "Om het automatisch aanmaken van pagina's tegen te gaan moet u de twee woorden die u ziet invoeren:",
+);
+
+/** Polish (Polski) */
+$messages['pl'] = array(
+ 'recaptcha-edit' => 'Aby uchronić nas przed robotami, proszę wpisać dwa widoczne słowa w poniższym polu:',
+ 'recaptcha-addurl' => 'Twoja edycja zawiera linki zewnętrzne. Aby uchronić nas przed robotami, proszę wpisać dwa widoczne słowa w poniższym polu:',
+ 'recaptcha-badpass' => 'Aby uchronić nas przed złamaniem automatycznym haseł, proszę wpisać dwa widoczne słowa w poniższym polu:',
+ 'recaptcha-createaccount' => 'Aby uchronić nas przed automatycznym stworzeniem użytkowników, proszę wpisać dwa widoczne słowa w poniższym polu:',
+ 'recaptcha-createaccount-fail' => 'Odpowiedź na reCAPTCHA jest fałszywa lub brakująca.',
+ 'recaptcha-create' => 'Aby uchronić nas przed tworzeniem stron przez robotów, proszę wpisać dwa widoczne słowa w poniższym polu:',
+);
+
+/** Piedmontese (Piemontèis)
+ * @author Borichèt
+ * @author Dragonòt
+ */
+$messages['pms'] = array(
+ 'recaptcha-edit' => "Për giuté a protege contra la rumenta dle modìfiche automàtiche, për piasì ch'a scriva le doe paròle ch'a s-ciàira ant ël quàder sì-sota:",
+ 'recaptcha-addurl' => "Soa modìfica a conten d'anliure esterne neuv. Për giuté a protege contra la rumenta dle modìfiche automàtiche, për piasì ch'a scriva le doe paròle ch'a s-ciàira ant ël quàder sì-sota:",
+ 'recaptcha-badpass' => "Për giuté a protege contra la forsadura automatisà ëd le ciav, për piasì ch'a scriva le doe paròle ch'a s-ciàira ant ël formolari sì-sota:",
+ 'recaptcha-createaccount' => "Për giuté a protege contra la creassion automatisà ëd cont, për piasì ch'a scriva le doe paròle ch'a s-ciàira ant ël formolari sì-sota:",
+ 'recaptcha-createaccount-fail' => 'Rispòsta ëd reCAPTCHA fàussa o mancanta.',
+ 'recaptcha-create' => "Për giuté a protege contra la creassion automatisà ëd pàgine, për piasì ch'a scriv le doe paròle ch'a s-ciàira ant la casela sì-sota:",
+);
+
+/** Portuguese (Português)
+ * @author Hamilton Abreu
+ */
+$messages['pt'] = array(
+ 'recaptcha-edit' => 'Para proteger-nos de spam, por favor escreva as duas palavras visíveis abaixo:',
+ 'recaptcha-addurl' => "A sua edição contém links externos novos. Como prevenção contra sistemas automatizados de inserção de ''spam'', escreva as duas palavras visíveis na caixa abaixo:",
+ 'recaptcha-badpass' => 'Para proteger-nos de robots que tentam adivinhar senhas, por favor escreva as duas palavras visíveis abaixo:',
+ 'recaptcha-createaccount' => 'Para proteger-nos de criação automática de contas, por favor escreva as duas palavras visíveis abaixo:',
+ 'recaptcha-createaccount-fail' => 'A resposta ao reCAPTCHA é errada.',
+ 'recaptcha-create' => 'Para proteger-nos da criação automática de páginas, por favor escreva as duas palavras visíveis abaixo:',
+);
+
+/** Brazilian Portuguese (Português do Brasil) */
+$messages['pt-br'] = array(
+ 'recaptcha-edit' => 'Para ajudar a prevenir contra vandalismos, por favor digite as duas palavras que você vê na caixa abaixo:',
+ 'recaptcha-addurl' => 'A sua edição inclui ligações externas. Para ajudar a prevenir contra vandalismos, por favor digite as duas palavras que você vê na caixa abaixo:',
+ 'recaptcha-badpass' => 'Para ajudar a prevenir contra tentativas de desbloquear senhas, por favor digite as duas palavras que você vê na caixa abaixo:',
+ 'recaptcha-createaccount' => 'Para ajudar a prevenir contra criação automatizada de usuários, por favor digite as duas palavras que você vê na caixa abaixo:',
+ 'recaptcha-createaccount-fail' => 'Resposta incorreta ao reCAPTCHA.',
+ 'recaptcha-create' => 'Para ajudar a prevenir contra criação automatizada de páginas, por favor digite as duas palavras que você vê na caixa abaixo:',
+);
+
+/** Russian (РуÑÑкий)
+ * @author ÐлекÑандр Сигачёв
+ */
+$messages['ru'] = array(
+ 'recaptcha-edit' => 'Ð’ целÑÑ… защиты от автоматичеÑкого Ñпама в правках, пожалуйÑта, введите два Ñлова, которые вы видите ниже:',
+ 'recaptcha-addurl' => 'Ваша правка Ñодержит новые внешние ÑÑылки. Ð’ целÑÑ… защиты от автоматичеÑкого Ñпама, пожалуйÑта, введите два Ñлова, которые вы видите ниже:',
+ 'recaptcha-badpass' => 'Ð’ целÑÑ… защиты от автоматичеÑкого подбора паролÑ, пожалуйÑта, введите два Ñлова, которые вы видите ниже:',
+ 'recaptcha-createaccount' => 'Ð’ целÑÑ… защиты от автоматичеÑкого ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ñ‹Ñ… запиÑей, пожалуйÑта, введите два Ñлова, которые вы видите ниже:',
+ 'recaptcha-createaccount-fail' => 'Ответ reCAPTCHA неправильный или отÑутÑтвует.',
+ 'recaptcha-create' => 'Ð’ целÑÑ… защиты от автоматичеÑкого ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñтраниц, пожалуйÑта, введите два Ñлова, которые вы видите ниже:',
+);
+
+/** Swedish (Svenska) */
+$messages['sv'] = array(
+ 'recaptcha-edit' => 'Den här sidan skyddas mot spam-robotar, bevisa att du är en människa genom att skriva de två orden du ser i boxen nedan:',
+ 'recaptcha-addurl' => 'Din förändring av sidan innehåller nya externa länkar, vilket är typiskt för spam. Bevisa att du är en människa genom att skriva de två orden du ser i boxen nedan:',
+ 'recaptcha-badpass' => 'För att skydda wikin mot robotar som gissar användares lösenord behöver användare bevisa att de är människor. Skriv ner de två orden som du ser i boxen nedan:',
+ 'recaptcha-createaccount' => 'För att skydda wikin mot robotar som skapar konton behöver användare bevisa att de är människor. Var vänlig och skriv ner de två orden du ser i boxen nedan:',
+ 'recaptcha-createaccount-fail' => 'Du har angivit ett felaktig svar för reCAPTCHA.',
+ 'recaptcha-create' => 'För att skydda wikin mot robotar som skapar nya artiklar. Var vänlig och skriv ner de två orden som finns i boxen nedan:',
+);
+
+/** Swahili (Kiswahili)
+ * @author Lloffiwr
+ */
+$messages['sw'] = array(
+ 'recaptcha-edit' => 'Ili kusaidia kuzuia mashine zisihariri, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:',
+ 'recaptcha-addurl' => 'Haririo lako lina viungo vipya vya nje. Ili kusaidia katika kuzuisha viungo visivyotakiwa visiwekwe na mashine, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:',
+ 'recaptcha-badpass' => 'Ili kusaidia katika kuzuia neno lako la siri lisigunduliwe na mashine, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:',
+ 'recaptcha-createaccount' => 'Ili kusaidia kuzuia akaunti zisifunguliwe nyingi na mashine, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:',
+ 'recaptcha-createaccount-fail' => 'Jibu la swali la CAPTCHA si sahihi au halipo.',
+ 'recaptcha-create' => 'Ili kusaidia kuzuia kurasa zisianzishwe nyingi na mashine, tafadhali andika maneno mawili yanayoonekana katika kisanduku pakipo chini:',
+);
+
+/** Tagalog (Tagalog)
+ * @author AnakngAraw
+ */
+$messages['tl'] = array(
+ 'recaptcha-edit' => 'Upang makatulong sa pagprutekta laban sa kusang basurang pamamatnugot, paki imakinilya ang dalawang mga salitang nakikita mo sa loob ng kahong nasa ibaba:',
+ 'recaptcha-addurl' => 'Ang pagbabago mo ay nagsasama ng bagong panlabas na mga kawing. Upang makatulong sa pagprutekta laban sa kusang paglusob ng basurang-liham, paki imakinilya ang dalawang mga salitang nakikita sa loob ng kahong nasa ibaba:',
+ 'recaptcha-badpass' => 'Upang makatulong sa pagsasanggalang laban sa kusang panghuhula ng hudyat, paki imakinilya ang dalawang mga salitang nakikita mo sa loob ng kahong nasa ibaba:',
+ 'recaptcha-createaccount' => 'Upang makatulong sa pagprutekta laban sa kusang paglikha ng akawnt, paki imakinilya ang dalawang mga salitang nakikita mo sa loob ng kahong nasa ibaba:',
+ 'recaptcha-createaccount-fail' => 'Hindi tama o nawawalang sagot sa reCAPTCHA.',
+ 'recaptcha-create' => 'Upang makatulong sa pagprutekta laban sa kusang paglikha ng pahina, paki imakinilya ang dalawang mga salitang nakikita mo sa loob ng kahong nasa ibaba:',
+);
+
+/** Ukrainian (УкраїнÑька)
+ * @author ТеÑÑ‚
+ */
+$messages['uk'] = array(
+ 'recaptcha-createaccount-fail' => 'Відповідь reCAPTCHA неправильна або відÑутнÑ.',
+);
+
+/** Vietnamese (Tiếng Việt) */
+$messages['vi'] = array(
+ 'recaptcha-edit' => 'Äể giúp tránh các sá»­a đổi rác tá»± Ä‘á»™ng, xin hãy gõ hai từ mà bạn nhìn thấy vào ô dÆ°á»›i đây:',
+ 'recaptcha-addurl' => 'Sá»­a đổi của bạn có chứa liên kết ngoài má»›i. Äể giúp tránh các sá»­a đổi rác tá»± Ä‘á»™ng, xin hãy gõ hai từ mà bạn nhìn vào ô dÆ°á»›i đây:',
+ 'recaptcha-badpass' => 'Äể giúp tránh bẻ khóa mật khẩu tá»± Ä‘á»™ng, xin hãy gõ hai từ mà bạn nhìn vào ô dÆ°á»›i đây:',
+ 'recaptcha-createaccount' => 'Äể giúp tránh việc mở tài khoản tá»± Ä‘á»™ng, xin hãy gõ hai từ mà bạn nhìn vào ô dÆ°á»›i đây:',
+ 'recaptcha-createaccount-fail' => 'Thiếu câu trả lá»i reCAPTCHA hoặc câu trả lá»i không đúng.',
+ 'recaptcha-create' => 'Äể giúp tránh việc tạo trang tá»± Ä‘á»™ng, xin hãy gõ hai từ mà bạn nhìn vào ô dÆ°á»›i đây:',
+);
+
+/** Simplified Chinese (‪中文(简体)‬)
+ * @author Hydra
+ */
+$messages['zh-hans'] = array(
+ 'recaptcha-edit' => 'è¦å¸®åŠ©ä¿æŠ¤å…å—垃圾邮件自动的编辑,请键入您在下é¢çš„框中看到这两个è¯ï¼š',
+ 'recaptcha-addurl' => '您的编辑包å«æ–°çš„外部链接。为了帮助防止自动垃圾邮件,请键入您在下é¢çš„框中看到这两个è¯ï¼š',
+ 'recaptcha-badpass' => '为帮助防止自动密ç ç ´è§£ï¼Œè¯·é”®å…¥æ‚¨çœ‹åˆ°ä¸‹é¢çš„框中的两个字:',
+ 'recaptcha-createaccount' => '为了帮助防止创建自动化的å¸æˆ·ï¼Œè¯·é”®å…¥æ‚¨åœ¨ä¸‹é¢çš„框中看到的这两个字:',
+ 'recaptcha-createaccount-fail' => 'ä¸æ­£ç¡®æˆ–缺失的 reCAPTCHA 答案。',
+ 'recaptcha-create' => '为了帮助防止自动的页创建,请键入您在下é¢çš„框中看到这两个è¯ï¼š',
+);
+
diff --git a/extensions/ConfirmEdit/ReCaptcha.php b/extensions/ConfirmEdit/ReCaptcha.php
new file mode 100644
index 00000000..b068b86e
--- /dev/null
+++ b/extensions/ConfirmEdit/ReCaptcha.php
@@ -0,0 +1,134 @@
+<?php
+
+/**
+ * Captcha class using the reCAPTCHA widget.
+ * Stop Spam. Read Books.
+ *
+ * @addtogroup Extensions
+ * @author Mike Crawford <mike.crawford@gmail.com>
+ * @copyright Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
+ * @licence MIT/X11
+ */
+
+if( !defined( 'MEDIAWIKI' ) ) {
+ exit;
+}
+
+$wgExtensionMessagesFiles['ReCaptcha'] = dirname( __FILE__ ) . '/ReCaptcha.i18n.php';
+
+require_once( 'recaptchalib.php' );
+
+// Set these in LocalSettings.php
+$wgReCaptchaPublicKey = '';
+$wgReCaptchaPrivateKey = '';
+// For backwards compatibility
+$recaptcha_public_key = '';
+$recaptcha_private_key = '';
+
+$wgExtensionFunctions[] = 'efReCaptcha';
+
+/**
+ * Make sure the keys are defined.
+ */
+function efReCaptcha() {
+ global $wgReCaptchaPublicKey, $wgReCaptchaPrivateKey;
+ global $recaptcha_public_key, $recaptcha_private_key;
+ global $wgServerName;
+
+ // Backwards compatibility
+ if ( $wgReCaptchaPublicKey == '' ) {
+ $wgReCaptchaPublicKey = $recaptcha_public_key;
+ }
+ if ( $wgReCaptchaPrivateKey == '' ) {
+ $wgReCaptchaPrivateKey = $recaptcha_private_key;
+ }
+
+ if ($wgReCaptchaPublicKey == '' || $wgReCaptchaPrivateKey == '') {
+ die ('You need to set $wgReCaptchaPrivateKey and $wgReCaptchaPublicKey in LocalSettings.php to ' .
+ "use the reCAPTCHA plugin. You can sign up for a key <a href='" .
+ htmlentities(recaptcha_get_signup_url ($wgServerName, "mediawiki")) . "'>here</a>.");
+ }
+}
+
+
+class ReCaptcha extends SimpleCaptcha {
+
+ //reCAPTHCA error code returned from recaptcha_check_answer
+ private $recaptcha_error = null;
+
+ /**
+ * Displays the reCAPTCHA widget.
+ * If $this->recaptcha_error is set, it will display an error in the widget.
+ *
+ */
+ function getForm() {
+ global $wgReCaptchaPublicKey;
+ $useHttps = ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' );
+ return "<script>var RecaptchaOptions = { tabindex : 1 }; </script> " .
+ recaptcha_get_html($wgReCaptchaPublicKey, $this->recaptcha_error, $useHttps);
+ }
+
+ /**
+ * Calls the library function recaptcha_check_answer to verify the users input.
+ * Sets $this->recaptcha_error if the user is incorrect.
+ * @return boolean
+ *
+ */
+ function passCaptcha() {
+ global $wgReCaptchaPrivateKey;
+ $recaptcha_response = recaptcha_check_answer ($wgReCaptchaPrivateKey,
+ wfGetIP (),
+ $_POST['recaptcha_challenge_field'],
+ $_POST['recaptcha_response_field']);
+ if (!$recaptcha_response->is_valid) {
+ $this->recaptcha_error = $recaptcha_response->error;
+ return false;
+ }
+ $recaptcha_error = null;
+ return true;
+
+ }
+
+ /**
+ * Called on all edit page saves. (EditFilter events)
+ * @return boolean - true if page save should continue, false if should display Captcha widget.
+ */
+ function confirmEdit( $editPage, $newtext, $section, $merged = false ) {
+ if( $this->shouldCheck( $editPage, $newtext, $section ) ) {
+
+ if (!isset($_POST['recaptcha_response_field'])) {
+ //User has not yet been presented with Captcha, show the widget.
+ $editPage->showEditForm( array( &$this, 'editCallback' ) );
+ return false;
+ }
+
+ if( $this->passCaptcha() ) {
+ return true;
+ } else {
+ //Try again - show the widget
+ $editPage->showEditForm( array( &$this, 'editCallback' ) );
+ return false;
+ }
+
+ } else {
+ wfDebug( "ConfirmEdit: no need to show captcha.\n" );
+ return true;
+ }
+ }
+
+ /**
+ * Show a message asking the user to enter a captcha on edit
+ * The result will be treated as wiki text
+ *
+ * @param $action Action being performed
+ * @return string
+ */
+ function getMessage( $action ) {
+ $name = 'recaptcha-' . $action;
+ $text = wfMsg( $name );
+ # Obtain a more tailored message, if possible, otherwise, fall back to
+ # the default for edits
+ return wfEmptyMsg( $name, $text ) ? wfMsg( 'recaptcha-edit' ) : $text;
+ }
+
+}
diff --git a/extensions/ConfirmEdit/captcha.py b/extensions/ConfirmEdit/captcha.py
new file mode 100644
index 00000000..f1a05011
--- /dev/null
+++ b/extensions/ConfirmEdit/captcha.py
@@ -0,0 +1,226 @@
+#!/usr/bin/python
+#
+# Script to generate distorted text images for a captcha system.
+#
+# Copyright (C) 2005 Neil Harris
+#
+# 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
+#
+# Further tweaks by Brion Vibber <brion@pobox.com>:
+# 2006-01-26: Add command-line options for the various parameters
+# 2007-02-19: Add --dirs param for hash subdirectory splits
+# Tweaks by Greg Sabino Mullane <greg@turnstep.com>:
+# 2008-01-06: Add regex check to skip words containing other than a-z
+
+import random
+import math
+import hashlib
+from optparse import OptionParser
+import os
+import sys
+import re
+
+try:
+ import Image
+ import ImageFont
+ import ImageDraw
+ import ImageEnhance
+ import ImageOps
+except:
+ sys.exit("This script requires the Python Imaging Library - http://www.pythonware.com/products/pil/")
+
+nonalpha = re.compile('[^a-z]') # regex to test for suitability of words
+
+# Does X-axis wobbly copy, sandwiched between two rotates
+def wobbly_copy(src, wob, col, scale, ang):
+ x, y = src.size
+ f = random.uniform(4*scale, 5*scale)
+ p = random.uniform(0, math.pi*2)
+ rr = ang+random.uniform(-30, 30) # vary, but not too much
+ int_d = Image.new('RGB', src.size, 0) # a black rectangle
+ rot = src.rotate(rr, Image.BILINEAR)
+ # Do a cheap bounding-box op here to try to limit work below
+ bbx = rot.getbbox()
+ if bbx == None:
+ return src
+ else:
+ l, t, r, b= bbx
+ # and only do lines with content on
+ for i in range(t, b+1):
+ # Drop a scan line in
+ xoff = int(math.sin(p+(i*f/y))*wob)
+ xoff += int(random.uniform(-wob*0.5, wob*0.5))
+ int_d.paste(rot.crop((0, i, x, i+1)), (xoff, i))
+ # try to stop blurring from building up
+ int_d = int_d.rotate(-rr, Image.BILINEAR)
+ enh = ImageEnhance.Sharpness(int_d)
+ return enh.enhance(2)
+
+
+def gen_captcha(text, fontname, fontsize, file_name):
+ """Generate a captcha image"""
+ # white text on a black background
+ bgcolor = 0x0
+ fgcolor = 0xffffff
+ # create a font object
+ font = ImageFont.truetype(fontname,fontsize)
+ # determine dimensions of the text
+ dim = font.getsize(text)
+ # create a new image significantly larger that the text
+ edge = max(dim[0], dim[1]) + 2*min(dim[0], dim[1])
+ im = Image.new('RGB', (edge, edge), bgcolor)
+ d = ImageDraw.Draw(im)
+ x, y = im.size
+ # add the text to the image
+ d.text((x/2-dim[0]/2, y/2-dim[1]/2), text, font=font, fill=fgcolor)
+ k = 3
+ wob = 0.20*dim[1]/k
+ rot = 45
+ # Apply lots of small stirring operations, rather than a few large ones
+ # in order to get some uniformity of treatment, whilst
+ # maintaining randomness
+ for i in range(k):
+ im = wobbly_copy(im, wob, bgcolor, i*2+3, rot+0)
+ im = wobbly_copy(im, wob, bgcolor, i*2+1, rot+45)
+ im = wobbly_copy(im, wob, bgcolor, i*2+2, rot+90)
+ rot += 30
+
+ # now get the bounding box of the nonzero parts of the image
+ bbox = im.getbbox()
+ bord = min(dim[0], dim[1])/4 # a bit of a border
+ im = im.crop((bbox[0]-bord, bbox[1]-bord, bbox[2]+bord, bbox[3]+bord))
+ # and turn into black on white
+ im = ImageOps.invert(im)
+
+ # save the image, in format determined from filename
+ im.save(file_name)
+
+def gen_subdir(basedir, md5hash, levels):
+ """Generate a subdirectory path out of the first _levels_
+ characters of _hash_, and ensure the directories exist
+ under _basedir_."""
+ subdir = None
+ for i in range(0, levels):
+ char = md5hash[i]
+ if subdir:
+ subdir = os.path.join(subdir, char)
+ else:
+ subdir = char
+ fulldir = os.path.join(basedir, subdir)
+ if not os.path.exists(fulldir):
+ os.mkdir(fulldir)
+ return subdir
+
+def try_pick_word(words, blacklist, verbose):
+ word1 = words[random.randint(0,len(words)-1)]
+ word2 = words[random.randint(0,len(words)-1)]
+ word = word1+word2
+ if verbose:
+ print "word is %s" % word
+ if nonalpha.search(word):
+ if verbose:
+ print "skipping word pair '%s' because it contains non-alphabetic characters" % word
+ return None
+
+ for naughty in blacklist:
+ if naughty in word:
+ if verbose:
+ print "skipping word pair '%s' because it contains blacklisted word '%s'" % (word, naughty)
+ return None
+ return word
+
+def pick_word(words, blacklist, verbose):
+ for x in range(1000): # If we can't find a valid combination in 1000 tries, just give up
+ word = try_pick_word(words, blacklist, verbose)
+ if word:
+ return word
+ sys.exit("Unable to find valid word combinations")
+
+def read_wordlist(filename):
+ return [x.strip().lower() for x in open(wordlist).readlines()]
+
+if __name__ == '__main__':
+ """This grabs random words from the dictionary 'words' (one
+ word per line) and generates a captcha image for each one,
+ with a keyed salted hash of the correct answer in the filename.
+
+ To check a reply, hash it in the same way with the same salt and
+ secret key, then compare with the hash value given.
+ """
+ parser = OptionParser()
+ parser.add_option("--wordlist", help="A list of words (required)", metavar="WORDS.txt")
+ parser.add_option("--key", help="The passphrase set as $wgCaptchaSecret (required)", metavar="KEY")
+ parser.add_option("--output", help="The directory to put the images in - $wgCaptchaDirectory (required)", metavar="DIR")
+ parser.add_option("--font", help="The font to use (required)", metavar="FONT.ttf")
+ parser.add_option("--font-size", help="The font size (default 40)", metavar="N", type='int', default=40)
+ parser.add_option("--count", help="The maximum number of images to make (default 20)", metavar="N", type='int', default=20)
+ parser.add_option("--blacklist", help="A blacklist of words that should not be used", metavar="FILE")
+ parser.add_option("--fill", help="Fill the output directory to contain N files, overrides count, cannot be used with --dirs", metavar="N", type='int')
+ parser.add_option("--dirs", help="Put the images into subdirectories N levels deep - $wgCaptchaDirectoryLevels", metavar="N", type='int')
+ parser.add_option("--verbose", "-v", help="Show debugging information", action='store_true')
+
+ opts, args = parser.parse_args()
+
+ if opts.wordlist:
+ wordlist = opts.wordlist
+ else:
+ sys.exit("Need to specify a wordlist")
+ if opts.key:
+ key = opts.key
+ else:
+ sys.exit("Need to specify a key")
+ if opts.output:
+ output = opts.output
+ else:
+ sys.exit("Need to specify an output directory")
+ if opts.font and os.path.exists(opts.font):
+ font = opts.font
+ else:
+ sys.exit("Need to specify the location of a font")
+
+ blacklistfile = opts.blacklist
+ count = opts.count
+ fill = opts.fill
+ dirs = opts.dirs
+ verbose = opts.verbose
+ fontsize = opts.font_size
+
+ if fill:
+ count = max(0, fill - len(os.listdir(output)))
+
+ words = read_wordlist(wordlist)
+ words = [x for x in words
+ if len(x) in (4,5) and x[0] != "f"
+ and x[0] != x[1] and x[-1] != x[-2]]
+
+ if blacklistfile:
+ blacklist = read_wordlist(blacklistfile)
+ else:
+ blacklist = []
+
+ for i in range(count):
+ word = pick_word(words, blacklist, verbose)
+ salt = "%08x" % random.randrange(2**32)
+ # 64 bits of hash is plenty for this purpose
+ md5hash = hashlib.md5(key+salt+word+key+salt).hexdigest()[:16]
+ filename = "image_%s_%s.png" % (salt, md5hash)
+ if dirs:
+ subdir = gen_subdir(output, md5hash, dirs)
+ filename = os.path.join(subdir, filename)
+ if verbose:
+ print filename
+ gen_captcha(word, font, fontsize, os.path.join(output, filename))
+
diff --git a/extensions/ConfirmEdit/recaptchalib.php b/extensions/ConfirmEdit/recaptchalib.php
new file mode 100644
index 00000000..32c4f4d7
--- /dev/null
+++ b/extensions/ConfirmEdit/recaptchalib.php
@@ -0,0 +1,277 @@
+<?php
+/*
+ * This is a PHP library that handles calling reCAPTCHA.
+ * - Documentation and latest version
+ * http://recaptcha.net/plugins/php/
+ * - Get a reCAPTCHA API Key
+ * https://www.google.com/recaptcha/admin/create
+ * - Discussion group
+ * http://groups.google.com/group/recaptcha
+ *
+ * Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
+ * AUTHORS:
+ * Mike Crawford
+ * Ben Maurer
+ *
+ * Permission is hereby granted, free of charge, to any person obtaining a copy
+ * of this software and associated documentation files (the "Software"), to deal
+ * in the Software without restriction, including without limitation the rights
+ * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ * copies of the Software, and to permit persons to whom the Software is
+ * furnished to do so, subject to the following conditions:
+ *
+ * The above copyright notice and this permission notice shall be included in
+ * all copies or substantial portions of the Software.
+ *
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ * THE SOFTWARE.
+ */
+
+/**
+ * The reCAPTCHA server URL's
+ */
+define("RECAPTCHA_API_SERVER", "http://www.google.com/recaptcha/api");
+define("RECAPTCHA_API_SECURE_SERVER", "https://www.google.com/recaptcha/api");
+define("RECAPTCHA_VERIFY_SERVER", "www.google.com");
+
+/**
+ * Encodes the given data into a query string format
+ * @param $data - array of string elements to be encoded
+ * @return string - encoded request
+ */
+function _recaptcha_qsencode ($data) {
+ $req = "";
+ foreach ( $data as $key => $value )
+ $req .= $key . '=' . urlencode( stripslashes($value) ) . '&';
+
+ // Cut the last '&'
+ $req=substr($req,0,strlen($req)-1);
+ return $req;
+}
+
+
+
+/**
+ * Submits an HTTP POST to a reCAPTCHA server
+ * @param string $host
+ * @param string $path
+ * @param array $data
+ * @param int port
+ * @return array response
+ */
+function _recaptcha_http_post($host, $path, $data, $port = 80) {
+
+ $req = _recaptcha_qsencode ($data);
+
+ $http_request = "POST $path HTTP/1.0\r\n";
+ $http_request .= "Host: $host\r\n";
+ $http_request .= "Content-Type: application/x-www-form-urlencoded;\r\n";
+ $http_request .= "Content-Length: " . strlen($req) . "\r\n";
+ $http_request .= "User-Agent: reCAPTCHA/PHP\r\n";
+ $http_request .= "\r\n";
+ $http_request .= $req;
+
+ $response = '';
+ if( false == ( $fs = @fsockopen($host, $port, $errno, $errstr, 10) ) ) {
+ die ('Could not open socket');
+ }
+
+ fwrite($fs, $http_request);
+
+ while ( !feof($fs) )
+ $response .= fgets($fs, 1160); // One TCP-IP packet
+ fclose($fs);
+ $response = explode("\r\n\r\n", $response, 2);
+
+ return $response;
+}
+
+
+
+/**
+ * Gets the challenge HTML (javascript and non-javascript version).
+ * This is called from the browser, and the resulting reCAPTCHA HTML widget
+ * is embedded within the HTML form it was called from.
+ * @param string $pubkey A public key for reCAPTCHA
+ * @param string $error The error given by reCAPTCHA (optional, default is null)
+ * @param boolean $use_ssl Should the request be made over ssl? (optional, default is false)
+
+ * @return string - The HTML to be embedded in the user's form.
+ */
+function recaptcha_get_html ($pubkey, $error = null, $use_ssl = false)
+{
+ if ($pubkey == null || $pubkey == '') {
+ die ("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
+ }
+
+ if ($use_ssl) {
+ $server = RECAPTCHA_API_SECURE_SERVER;
+ } else {
+ $server = RECAPTCHA_API_SERVER;
+ }
+
+ $errorpart = "";
+ if ($error) {
+ $errorpart = "&amp;error=" . $error;
+ }
+ return '<script type="text/javascript" src="'. $server . '/challenge?k=' . $pubkey . $errorpart . '"></script>
+
+ <noscript>
+ <iframe src="'. $server . '/noscript?k=' . $pubkey . $errorpart . '" height="300" width="500" frameborder="0"></iframe><br/>
+ <textarea name="recaptcha_challenge_field" rows="3" cols="40"></textarea>
+ <input type="hidden" name="recaptcha_response_field" value="manual_challenge"/>
+ </noscript>';
+}
+
+
+
+
+/**
+ * A ReCaptchaResponse is returned from recaptcha_check_answer()
+ */
+class ReCaptchaResponse {
+ var $is_valid;
+ var $error;
+}
+
+
+/**
+ * Calls an HTTP POST function to verify if the user's guess was correct
+ * @param string $privkey
+ * @param string $remoteip
+ * @param string $challenge
+ * @param string $response
+ * @param array $extra_params an array of extra variables to post to the server
+ * @return ReCaptchaResponse
+ */
+function recaptcha_check_answer ($privkey, $remoteip, $challenge, $response, $extra_params = array())
+{
+ if ($privkey == null || $privkey == '') {
+ die ("To use reCAPTCHA you must get an API key from <a href='https://www.google.com/recaptcha/admin/create'>https://www.google.com/recaptcha/admin/create</a>");
+ }
+
+ if ($remoteip == null || $remoteip == '') {
+ die ("For security reasons, you must pass the remote ip to reCAPTCHA");
+ }
+
+
+
+ //discard spam submissions
+ if ($challenge == null || strlen($challenge) == 0 || $response == null || strlen($response) == 0) {
+ $recaptcha_response = new ReCaptchaResponse();
+ $recaptcha_response->is_valid = false;
+ $recaptcha_response->error = 'incorrect-captcha-sol';
+ return $recaptcha_response;
+ }
+
+ $response = _recaptcha_http_post (RECAPTCHA_VERIFY_SERVER, "/recaptcha/api/verify",
+ array (
+ 'privatekey' => $privkey,
+ 'remoteip' => $remoteip,
+ 'challenge' => $challenge,
+ 'response' => $response
+ ) + $extra_params
+ );
+
+ $answers = explode ("\n", $response [1]);
+ $recaptcha_response = new ReCaptchaResponse();
+
+ if (trim ($answers [0]) == 'true') {
+ $recaptcha_response->is_valid = true;
+ }
+ else {
+ $recaptcha_response->is_valid = false;
+ $recaptcha_response->error = $answers [1];
+ }
+ return $recaptcha_response;
+
+}
+
+/**
+ * gets a URL where the user can sign up for reCAPTCHA. If your application
+ * has a configuration page where you enter a key, you should provide a link
+ * using this function.
+ * @param string $domain The domain where the page is hosted
+ * @param string $appname The name of your application
+ */
+function recaptcha_get_signup_url ($domain = null, $appname = null) {
+ return "https://www.google.com/recaptcha/admin/create?" . _recaptcha_qsencode (array ('domains' => $domain, 'app' => $appname));
+}
+
+function _recaptcha_aes_pad($val) {
+ $block_size = 16;
+ $numpad = $block_size - (strlen ($val) % $block_size);
+ return str_pad($val, strlen ($val) + $numpad, chr($numpad));
+}
+
+/* Mailhide related code */
+
+function _recaptcha_aes_encrypt($val,$ky) {
+ if (! function_exists ("mcrypt_encrypt")) {
+ die ("To use reCAPTCHA Mailhide, you need to have the mcrypt php module installed.");
+ }
+ $mode=MCRYPT_MODE_CBC;
+ $enc=MCRYPT_RIJNDAEL_128;
+ $val=_recaptcha_aes_pad($val);
+ return mcrypt_encrypt($enc, $ky, $val, $mode, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0");
+}
+
+
+function _recaptcha_mailhide_urlbase64 ($x) {
+ return strtr(base64_encode ($x), '+/', '-_');
+}
+
+/* gets the reCAPTCHA Mailhide url for a given email, public key and private key */
+function recaptcha_mailhide_url($pubkey, $privkey, $email) {
+ if ($pubkey == '' || $pubkey == null || $privkey == "" || $privkey == null) {
+ die ("To use reCAPTCHA Mailhide, you have to sign up for a public and private key, " .
+ "you can do so at <a href='http://www.google.com/recaptcha/mailhide/apikey'>http://www.google.com/recaptcha/mailhide/apikey</a>");
+ }
+
+
+ $ky = pack('H*', $privkey);
+ $cryptmail = _recaptcha_aes_encrypt ($email, $ky);
+
+ return "http://www.google.com/recaptcha/mailhide/d?k=" . $pubkey . "&c=" . _recaptcha_mailhide_urlbase64 ($cryptmail);
+}
+
+/**
+ * gets the parts of the email to expose to the user.
+ * eg, given johndoe@example,com return ["john", "example.com"].
+ * the email is then displayed as john...@example.com
+ */
+function _recaptcha_mailhide_email_parts ($email) {
+ $arr = preg_split("/@/", $email );
+
+ if (strlen ($arr[0]) <= 4) {
+ $arr[0] = substr ($arr[0], 0, 1);
+ } else if (strlen ($arr[0]) <= 6) {
+ $arr[0] = substr ($arr[0], 0, 3);
+ } else {
+ $arr[0] = substr ($arr[0], 0, 4);
+ }
+ return $arr;
+}
+
+/**
+ * Gets html to display an email address given a public an private key.
+ * to get a key, go to:
+ *
+ * http://www.google.com/recaptcha/mailhide/apikey
+ */
+function recaptcha_mailhide_html($pubkey, $privkey, $email) {
+ $emailparts = _recaptcha_mailhide_email_parts ($email);
+ $url = recaptcha_mailhide_url ($pubkey, $privkey, $email);
+
+ return htmlentities($emailparts[0]) . "<a href='" . htmlentities ($url) .
+ "' onclick=\"window.open('" . htmlentities ($url) . "', '', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=500,height=300'); return false;\" title=\"Reveal this e-mail address\">...</a>@" . htmlentities ($emailparts [1]);
+
+}
+
+
+?>
diff --git a/extensions/Gadgets/ApiQueryGadgetCategories.php b/extensions/Gadgets/ApiQueryGadgetCategories.php
new file mode 100644
index 00000000..45468966
--- /dev/null
+++ b/extensions/Gadgets/ApiQueryGadgetCategories.php
@@ -0,0 +1,117 @@
+<?php
+/**
+ * Created on 16 April 2011
+ * API for Gadgets extension
+ *
+ * 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
+ */
+
+class ApiQueryGadgetCategories extends ApiQueryBase {
+ private $props,
+ $neededNames;
+
+ public function __construct( $query, $moduleName ) {
+ parent::__construct( $query, $moduleName, 'gc' );
+ }
+
+ public function execute() {
+ $params = $this->extractRequestParams();
+ $this->props = array_flip( $params['prop'] );
+ $this->neededNames = isset( $params['names'] )
+ ? array_flip( $params['names'] )
+ : false;
+
+ $this->getMain()->setCacheMode( 'public' );
+
+ $this->getList();
+ }
+
+ private function getList() {
+ $data = array();
+ $result = $this->getResult();
+ $gadgets = Gadget::loadStructuredList();
+
+ foreach ( $gadgets as $category => $list ) {
+ if ( !$this->neededNames || isset( $this->neededNames[$category] ) ) {
+ $row = array();
+ if ( isset( $this->props['name'] ) ) {
+ $row['name'] = $category;
+ }
+ if ( $category !== "" ) {
+ if ( isset( $this->props['title'] ) ) {
+ $row['desc'] = wfMessage( "gadget-section-$category" )->parse();
+ }
+ }
+ if ( isset( $this->props['members'] ) ) {
+ $row['members'] = count( $list );
+ }
+ $data[] = $row;
+ }
+ }
+ $result->setIndexedTagName( $data, 'category' );
+ $result->addValue( 'query', $this->getModuleName(), $data );
+ }
+
+ public function getAllowedParams() {
+ return array(
+ 'prop' => array(
+ ApiBase::PARAM_DFLT => 'name',
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_TYPE => array(
+ 'name',
+ 'title',
+ 'members',
+ ),
+ ),
+ 'names' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_ISMULTI => true,
+ ),
+ );
+ }
+
+ public function getDescription() {
+ return 'Returns a list of gadget categories';
+ }
+
+ public function getParamDescription() {
+ return array(
+ 'prop' => array(
+ 'What gadget category information to get:',
+ ' name - Internal category name',
+ ' title - Category title',
+ ' members - Number of gadgets in category',
+ ),
+ 'names' => 'Name(s) of gadgets to retrieve',
+ );
+ }
+
+ protected function getExamples() {
+ $params = $this->getAllowedParams();
+ $allProps = implode( '|', $params['prop'][ApiBase::PARAM_TYPE] );
+ return array(
+ 'Get a list of existing gadget categories:',
+ ' api.php?action=query&list=gadgetcategories',
+ 'Get all information about categories named "foo" and "bar":',
+ " api.php?action=query&list=gadgetcategories&gcnames=foo|bar&gcprop=$allProps",
+ );
+ }
+
+ public function getVersion() {
+ return __CLASS__ . ': $Id: ApiQueryGadgetCategories.php 96850 2011-09-12 15:10:26Z reedy $';
+ }
+
+}
diff --git a/extensions/Gadgets/ApiQueryGadgets.php b/extensions/Gadgets/ApiQueryGadgets.php
new file mode 100644
index 00000000..46e9eb24
--- /dev/null
+++ b/extensions/Gadgets/ApiQueryGadgets.php
@@ -0,0 +1,205 @@
+<?php
+/**
+ * Created on 15 April 2011
+ * API for Gadgets extension
+ *
+ * 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
+ */
+
+class ApiQueryGadgets extends ApiQueryBase {
+ private $props,
+ $category,
+ $neededIds,
+ $listAllowed,
+ $listEnabled;
+
+ public function __construct( $query, $moduleName ) {
+ parent::__construct( $query, $moduleName, 'ga' );
+ }
+
+ public function execute() {
+ $params = $this->extractRequestParams();
+ $this->props = array_flip( $params['prop'] );
+ $this->categories = isset( $params['categories'] )
+ ? array_flip( $params['categories'] )
+ : false;
+ $this->neededIds = isset( $params['ids'] )
+ ? array_flip( $params['ids'] )
+ : false;
+ $this->listAllowed = isset( $params['allowed'] ) && $params['allowed'];
+ $this->listEnabled = isset( $params['enabled'] ) && $params['enabled'];
+
+ $this->getMain()->setCacheMode( $this->listAllowed || $this->listEnabled
+ ? 'anon-public-user-private' : 'public' );
+
+ $this->applyList( $this->getList() );
+ }
+
+ private function getList() {
+ $gadgets = Gadget::loadStructuredList();
+
+ $result = array();
+ foreach ( $gadgets as $category => $list ) {
+ if ( $this->categories && !isset( $this->categories[$category] ) ) {
+ continue;
+ }
+ foreach ( $list as $g ) {
+ if ( $this->isNeeded( $g ) ) {
+ $result[] = $g;
+ }
+ }
+ }
+ return $result;
+ }
+
+ private function applyList( $gadgets ) {
+ $data = array();
+ $result = $this->getResult();
+
+ foreach ( $gadgets as $g ) {
+ $row = array();
+ if ( isset( $this->props['id'] ) ) {
+ $row['id'] = $g->getName();
+ }
+ if ( isset( $this->props['metadata'] ) ) {
+ $row['metadata'] = $this->fakeMetadata( $g );
+ $this->setIndexedTagNameForMetadata( $row['metadata'] );
+ }
+ if ( isset( $this->props['desc'] ) ) {
+ $row['desc'] = $g->getDescription();
+ }
+ $data[] = $row;
+ }
+ $result->setIndexedTagName( $data, 'gadget' );
+ $result->addValue( 'query', $this->getModuleName(), $data );
+ }
+
+ /**
+ *
+ */
+ private function isNeeded( Gadget $gadget ) {
+ global $wgUser;
+
+ return ( $this->neededIds === false || isset( $this->neededIds[$gadget->getName()] ) )
+ && ( !$this->listAllowed || $gadget->isAllowed( $wgUser ) )
+ && ( !$this->listEnabled || $gadget->isEnabled( $wgUser ) );
+ }
+
+ private function fakeMetadata( Gadget $g ) {
+ return array(
+ 'settings' => array(
+ 'rights' => $g->getRequiredRights(),
+ 'default' => $g->isOnByDefault(),
+ 'hidden' => false, // Only exists in RL2 branch
+ 'shared' => false, // Only exists in RL2 branch
+ 'category' => $g->getCategory(),
+ ),
+ 'module' => array(
+ 'scripts' => $g->getScripts(),
+ 'styles' => $g->getStyles(),
+ 'dependencies' => $g->getDependencies(),
+ 'messages' => array(), // Only exists in RL2 branch
+ )
+ );
+ }
+
+ private function setIndexedTagNameForMetadata( &$metadata ) {
+ static $tagNames = array(
+ 'rights' => 'right',
+ 'scripts' => 'script',
+ 'styles' => 'style',
+ 'dependencies' => 'dependency',
+ 'messages' => 'message',
+ );
+
+ $result = $this->getResult();
+ foreach ( $metadata as $type => &$data ) {
+ foreach ( $data as $key => &$value ) {
+ if ( is_array( $value ) ) {
+ $tag = isset( $tagNames[$key] ) ? $tagNames[$key] : $key;
+ $result->setIndexedTagName( $value, $tag );
+ }
+ }
+ }
+ }
+
+ public function getAllowedParams() {
+ return array(
+ 'prop' => array(
+ ApiBase::PARAM_DFLT => 'id|metadata',
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_TYPE => array(
+ 'id',
+ 'metadata',
+ 'desc',
+ ),
+ ),
+ 'language' => null,
+ 'categories' => array(
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_TYPE => 'string',
+ ),
+ 'ids' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_ISMULTI => true,
+ ),
+ 'allowed' => false,
+ 'enabled' => false,
+ );
+ }
+
+ public function getDescription() {
+ return 'Returns a list of gadgets used on this wiki';
+ }
+
+ public function getParamDescription() {
+ $p = $this->getModulePrefix();
+ return array(
+ 'prop' => array(
+ 'What gadget information to get:',
+ ' id - Internal gadget ID',
+ ' metadata - The gadget metadata',
+ ' desc - Gadget description transformed into HTML (can be slow, use only if really needed)',
+ ),
+ 'categories' => 'Gadgets from what categories to retrieve',
+ 'ids' => 'ID(s) of gadgets to retrieve',
+ 'allowed' => 'List only gadgets allowed to current user',
+ 'enabled' => 'List only gadgets enabled by current user',
+ );
+ }
+
+ protected function getExamples() {
+ $params = $this->getAllowedParams();
+ $allProps = implode( '|', $params['prop'][ApiBase::PARAM_TYPE] );
+ return array(
+ 'Get a list of gadgets along with their descriptions:',
+ ' api.php?action=query&list=gadgets&gaprop=id|desc',
+ 'Get a list of gadgets with all possble properties:',
+ " api.php?action=query&list=gadgets&gaprop=$allProps",
+ 'Get a list of gadgets belonging to caregory "foo":',
+ ' api.php?action=query&list=gadgets&gacategories=foo',
+ 'Get information about gadgets "foo" and "bar":',
+ ' api.php?action=query&list=gadgets&gaids=foo|bar&gaprop=id|desc|metadata',
+ 'Get a list of gadgets enabled by current user:',
+ ' api.php?action=query&list=gadgets&gaenabled',
+ );
+ }
+
+ public function getVersion() {
+ return __CLASS__ . ': $Id: ApiQueryGadgets.php 97274 2011-09-16 14:24:52Z reedy $';
+ }
+
+}
diff --git a/extensions/Gadgets/Gadgets.alias.php b/extensions/Gadgets/Gadgets.alias.php
new file mode 100644
index 00000000..03ccf66b
--- /dev/null
+++ b/extensions/Gadgets/Gadgets.alias.php
@@ -0,0 +1,309 @@
+<?php
+/**
+ * Aliases for Special:Gadgets
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$specialPageAliases = array();
+
+/** English (English) */
+$specialPageAliases['en'] = array(
+ 'Gadgets' => array( 'Gadgets' ),
+);
+
+/** Afrikaans (Afrikaans) */
+$specialPageAliases['af'] = array(
+ 'Gadgets' => array( 'Geriewe' ),
+);
+
+/** Arabic (العربية) */
+$specialPageAliases['ar'] = array(
+ 'Gadgets' => array( 'إضاÙات' ),
+);
+
+/** Egyptian Spoken Arabic (مصرى) */
+$specialPageAliases['arz'] = array(
+ 'Gadgets' => array( 'ادوات' ),
+);
+
+/** Bulgarian (БългарÑки) */
+$specialPageAliases['bg'] = array(
+ 'Gadgets' => array( 'Джаджи' ),
+);
+
+/** Breton (Brezhoneg) */
+$specialPageAliases['br'] = array(
+ 'Gadgets' => array( 'Bitrakoù' ),
+);
+
+/** Bosnian (Bosanski) */
+$specialPageAliases['bs'] = array(
+ 'Gadgets' => array( 'Dodaci' ),
+);
+
+/** Czech (ÄŒesky) */
+$specialPageAliases['cs'] = array(
+ 'Gadgets' => array( 'Udělátka' ),
+);
+
+/** German (Deutsch) */
+$specialPageAliases['de'] = array(
+ 'Gadgets' => array( 'Helferlein' ),
+);
+
+/** Lower Sorbian (Dolnoserbski) */
+$specialPageAliases['dsb'] = array(
+ 'Gadgets' => array( 'Gadgety' ),
+);
+
+/** Greek (Ελληνικά) */
+$specialPageAliases['el'] = array(
+ 'Gadgets' => array( 'ΕÏγαλεία', 'ΠÏοσαÏτήματα' ),
+);
+
+/** Esperanto (Esperanto) */
+$specialPageAliases['eo'] = array(
+ 'Gadgets' => array( 'Aldonaĵoj' ),
+);
+
+/** Spanish (Español) */
+$specialPageAliases['es'] = array(
+ 'Gadgets' => array( 'Artilugios', 'Accesorios' ),
+);
+
+/** Estonian (Eesti) */
+$specialPageAliases['et'] = array(
+ 'Gadgets' => array( 'Tööriistad' ),
+);
+
+/** Basque (Euskara) */
+$specialPageAliases['eu'] = array(
+ 'Gadgets' => array( 'Gadgetak' ),
+);
+
+/** Persian (Ùارسی) */
+$specialPageAliases['fa'] = array(
+ 'Gadgets' => array( 'ابزارها' ),
+);
+
+/** Finnish (Suomi) */
+$specialPageAliases['fi'] = array(
+ 'Gadgets' => array( 'Pienoisohjelmat' ),
+);
+
+/** Franco-Provençal (Arpetan) */
+$specialPageAliases['frp'] = array(
+ 'Gadgets' => array( 'Outils' ),
+);
+
+/** Galician (Galego) */
+$specialPageAliases['gl'] = array(
+ 'Gadgets' => array( 'Trebellos' ),
+);
+
+/** Swiss German (Alemannisch) */
+$specialPageAliases['gsw'] = array(
+ 'Gadgets' => array( 'Hälferli' ),
+);
+
+/** Hawaiian (Hawai`i) */
+$specialPageAliases['haw'] = array(
+ 'Gadgets' => array( 'HÄmeÊ»a', 'Hamea' ),
+);
+
+/** Hebrew (עברית) */
+$specialPageAliases['he'] = array(
+ 'Gadgets' => array( 'סקריפטי×' ),
+);
+
+/** Croatian (Hrvatski) */
+$specialPageAliases['hr'] = array(
+ 'Gadgets' => array( 'Dodaci' ),
+);
+
+/** Upper Sorbian (Hornjoserbsce) */
+$specialPageAliases['hsb'] = array(
+ 'Gadgets' => array( 'Specialne_funkcije' ),
+);
+
+/** Haitian (Kreyòl ayisyen) */
+$specialPageAliases['ht'] = array(
+ 'Gadgets' => array( 'Gajèt' ),
+);
+
+/** Hungarian (Magyar) */
+$specialPageAliases['hu'] = array(
+ 'Gadgets' => array( 'Segédeszközök' ),
+);
+
+/** Interlingua (Interlingua) */
+$specialPageAliases['ia'] = array(
+ 'Gadgets' => array( 'Gadgetes' ),
+);
+
+/** Indonesian (Bahasa Indonesia) */
+$specialPageAliases['id'] = array(
+ 'Gadgets' => array( 'Alat', 'Gadget' ),
+);
+
+/** Italian (Italiano) */
+$specialPageAliases['it'] = array(
+ 'Gadgets' => array( 'Accessori' ),
+);
+
+/** Japanese (日本語) */
+$specialPageAliases['ja'] = array(
+ 'Gadgets' => array( 'ガジェット' ),
+);
+
+/** Korean (한국어) */
+$specialPageAliases['ko'] = array(
+ 'Gadgets' => array( '소ë„구' ),
+);
+
+/** Ladino (Ladino) */
+$specialPageAliases['lad'] = array(
+ 'Gadgets' => array( 'Instrumenticos' ),
+);
+
+/** Luxembourgish (Lëtzebuergesch) */
+$specialPageAliases['lb'] = array(
+ 'Gadgets' => array( 'Gadgeten' ),
+);
+
+/** Macedonian (МакедонÑки) */
+$specialPageAliases['mk'] = array(
+ 'Gadgets' => array( 'Ðлатки' ),
+);
+
+/** Malayalam (മലയാളം) */
+$specialPageAliases['ml'] = array(
+ 'Gadgets' => array( 'കൂട' ),
+);
+
+/** Marathi (मराठी) */
+$specialPageAliases['mr'] = array(
+ 'Gadgets' => array( 'सà¥à¤µà¤¿à¤§à¤¾' ),
+);
+
+/** Malay (Bahasa Melayu) */
+$specialPageAliases['ms'] = array(
+ 'Gadgets' => array( 'Gajet' ),
+);
+
+/** Maltese (Malti) */
+$specialPageAliases['mt'] = array(
+ 'Gadgets' => array( 'Aġġeġġi', 'Aċċessorji' ),
+);
+
+/** Nedersaksisch (Nedersaksisch) */
+$specialPageAliases['nds-nl'] = array(
+ 'Gadgets' => array( 'Technisch_spul' ),
+);
+
+/** Dutch (Nederlands) */
+$specialPageAliases['nl'] = array(
+ 'Gadgets' => array( 'Extensies' ),
+);
+
+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬) */
+$specialPageAliases['nn'] = array(
+ 'Gadgets' => array( 'Tilleggsfunksjonar' ),
+);
+
+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬) */
+$specialPageAliases['no'] = array(
+ 'Gadgets' => array( 'Tilleggsfunksjoner' ),
+);
+
+/** Occitan (Occitan) */
+$specialPageAliases['oc'] = array(
+ 'Gadgets' => array( 'Gadgèts' ),
+);
+
+/** Polish (Polski) */
+$specialPageAliases['pl'] = array(
+ 'Gadgets' => array( 'Gadżety' ),
+);
+
+/** Romanian (Română) */
+$specialPageAliases['ro'] = array(
+ 'Gadgets' => array( 'Gadgeturi' ),
+);
+
+/** Sanskrit (संसà¥à¤•à¥ƒà¤¤) */
+$specialPageAliases['sa'] = array(
+ 'Gadgets' => array( 'सà¥à¤µà¤¿à¤§à¤¾_(गॅजेट)' ),
+);
+
+/** Sinhala (සිංහල) */
+$specialPageAliases['si'] = array(
+ 'Gadgets' => array( 'විජෙට්ටු' ),
+);
+
+/** Slovak (SlovenÄina) */
+$specialPageAliases['sk'] = array(
+ 'Gadgets' => array( 'HraÄky' ),
+);
+
+/** Slovenian (SlovenÅ¡Äina) */
+$specialPageAliases['sl'] = array(
+ 'Gadgets' => array( 'VtiÄniki', 'Vticniki' ),
+);
+
+/** Serbian Cyrillic ekavian (‪СрпÑки (ћирилица)‬) */
+$specialPageAliases['sr-ec'] = array(
+ 'Gadgets' => array( 'Гаџети' ),
+);
+
+/** Swedish (Svenska) */
+$specialPageAliases['sv'] = array(
+ 'Gadgets' => array( 'Finesser' ),
+);
+
+/** Thai (ไทย) */
+$specialPageAliases['th'] = array(
+ 'Gadgets' => array( 'อุปà¸à¸£à¸“์เสริม', 'à¹à¸à¹€à¸ˆà¸•' ),
+);
+
+/** Tagalog (Tagalog) */
+$specialPageAliases['tl'] = array(
+ 'Gadgets' => array( 'Mga gadyet' ),
+);
+
+/** Turkish (Türkçe) */
+$specialPageAliases['tr'] = array(
+ 'Gadgets' => array( 'KüçükAraçlar' ),
+);
+
+/** Татарча (Татарча) */
+$specialPageAliases['tt-cyrl'] = array(
+ 'Gadgets' => array( 'Гаджетлар' ),
+);
+
+/** Vèneto (Vèneto) */
+$specialPageAliases['vec'] = array(
+ 'Gadgets' => array( 'Strumenti' ),
+);
+
+/** Vietnamese (Tiếng Việt) */
+$specialPageAliases['vi'] = array(
+ 'Gadgets' => array( 'Công_cụ_đa_năng' ),
+);
+
+/** Simplified Chinese (‪中文(简体)‬) */
+$specialPageAliases['zh-hans'] = array(
+ 'Gadgets' => array( 'å°å·¥å…·' ),
+);
+
+/** Traditional Chinese (‪中文(ç¹é«”)‬) */
+$specialPageAliases['zh-hant'] = array(
+ 'Gadgets' => array( 'å°å·¥å…·' ),
+);
+
+/**
+ * For backwards compatibility with MediaWiki 1.15 and earlier.
+ */
+$aliases =& $specialPageAliases; \ No newline at end of file
diff --git a/extensions/Gadgets/Gadgets.i18n.php b/extensions/Gadgets/Gadgets.i18n.php
new file mode 100644
index 00000000..14162ef5
--- /dev/null
+++ b/extensions/Gadgets/Gadgets.i18n.php
@@ -0,0 +1,2705 @@
+<?php
+/**
+ * Internationalisation file for extension Gadgets.
+ *
+ * @file
+ * @ingroup Extensions
+ * @author Daniel Kinzler, brightbyte.de
+ * @copyright © 2007 Daniel Kinzler
+ * @license GNU General Public Licence 2.0 or later
+ */
+
+$messages = array();
+
+/** English
+ * @author Daniel Kinzler, brightbyte.de
+ */
+$messages['en'] = array(
+ #for Special:Version
+ 'gadgets-desc' => 'Lets users select custom [[Special:Gadgets|CSS and JavaScript gadgets]] in their [[Special:Preferences|preferences]]',
+
+ #for Special:Preferences
+ 'prefs-gadgets' => 'Gadgets',
+ 'gadgets-prefstext' => 'Below is a list of special gadgets you can enable for your account.
+These gadgets are mostly based on JavaScript, so JavaScript has to be enabled in your browser for them to work.
+Note that these gadgets will have no effect on this preferences page.
+
+Also note that these special gadgets are not part of the MediaWiki software, and are usually developed and maintained by users on your local wiki.
+Local administrators can edit the [[MediaWiki:Gadgets-definition|definitions]] and [[Special:Gadgets|descriptions]] of available gadgets.',
+
+ #for Special:Gadgets
+ 'gadgets' => 'Gadgets',
+ 'gadgets-title' => 'Gadgets',
+ 'gadgets-pagetext' => "Below is a list of special gadgets users can enable on their [[Special:Preferences|preferences page]], as defined by the [[MediaWiki:Gadgets-definition|definitions]].
+This overview provides easy access to the system message pages that define each gadget's description and code.",
+ 'gadgets-uses' => 'Uses',
+ 'gadgets-required-rights' => 'Requires the {{PLURAL:$2|$1 right|following rights: $1}}.',
+ 'gadgets-default' => 'Enabled for everyone by default.',
+ 'gadgets-export' => 'Export',
+ 'gadgets-export-title' => 'Gadget export',
+ 'gadgets-not-found' => 'Gadget "$1" not found.',
+ 'gadgets-export-text' => 'To export the $1 gadget, click on "{{int:gadgets-export-download}}" button, save the downloaded file,
+go to Special:Import on destination wiki and upload it. Then add the following to MediaWiki:Gadgets-definition page:
+<pre>$2</pre>
+You must have appropriate permissions on destination wiki (including the right to edit system messages) and import from file uploads must be enabled.',
+ 'gadgets-export-download' => 'Download',
+);
+
+/** Message documentation (Message documentation)
+ * @author EugeneZelenko
+ * @author Jon Harald Søby
+ * @author Kghbln
+ * @author Lloffiwr
+ * @author Mormegil
+ * @author Purodha
+ * @author SPQRobin
+ * @author Siebrand
+ * @author The Evil IP address
+ */
+$messages['qqq'] = array(
+ 'gadgets-desc' => '{{desc}}',
+ 'prefs-gadgets' => 'In Gadgets extension. The name of a tab in [[Special:Preferences]] where user set their preferences for the extension.
+
+{{Identical|Gadgets}}',
+ 'gadgets-prefstext' => 'In Gadgets extension. This is the explanation text displayed under the Gadgets tab in [[Special:Preferences]].',
+ 'gadgets' => '{{Identical|Gadgets}}',
+ 'gadgets-title' => '{{Identical|Gadgets}}',
+ 'gadgets-uses' => "This is used as a verb in third-person singular. It appears in front of a script name. Example: \"''Uses: Gadget-UTCLiveClock.js''\"
+
+See [http://meta.wikimedia.org/wiki/Special:Gadgets Gadgets page in meta.wikimedia.org]",
+ 'gadgets-required-rights' => 'Parameters:
+* $1 - a list.
+* $2 - the number of items in list $1 for PLURAL use.',
+ 'gadgets-export' => 'Used on [[Special:Gadgets]]. This is a verb, not noun.
+{{Identical|Export}}',
+ 'gadgets-export-download' => 'Use the verb for this message. Submit button.
+{{Identical|Download}}',
+);
+
+/** Afrikaans (Afrikaans)
+ * @author Anrie
+ * @author Naudefj
+ */
+$messages['af'] = array(
+ 'gadgets-desc' => 'Laat gebruikers toe om [[Special:Gadgets|CSS en JavaScripts]] geriewe te aktiveer in hulle [[Special:Preferences|voorkeure]]',
+ 'prefs-gadgets' => 'Geriewe',
+ 'gadgets-prefstext' => "Hieronder is 'n lys van spesiale geriewe wat u kan aktiveer.
+Hierdie geriewe maak hoofsaaklik van JavaScript gebruik. Dus moet JavaScript in u webblaaier geaktiveer wees.
+Hierdie geriewe het geen invloed op hoe hierdie voorkeurbladsy vertoon nie.
+
+Hierdie geriewe is nie deel van die MediaWiki-sagteware nie en word gewoonlik deur gebruikers op u tuiswiki ontwikkel en onderhou.
+Plaaslike administrateurs kan die beskikbare geriewe by [[MediaWiki:Gadgets-definition|definisies]] en [[Special:Gadgets|beskrywings]] wysig.",
+ 'gadgets' => 'Geriewe',
+ 'gadgets-title' => 'Geriewe',
+ 'gadgets-pagetext' => "Hieronder is 'n lys van spesiale geriewe wat gebruikers deur hulle [[Special:Preferences|voorkeure]] kan aktiveer, soos gedefinieer in [[MediaWiki:Gadgets-definition]].
+Die oorsig bied maklike toegang tot die stelselboodskapblaaie wat elke gerief se beskrywing en kode wys.",
+ 'gadgets-uses' => 'Gebruik',
+ 'gadgets-export' => 'Eksporteer',
+ 'gadgets-export-download' => 'Laai af',
+);
+
+/** Amharic (አማርኛ)
+ * @author Codex Sinaiticus
+ */
+$messages['am'] = array(
+ 'prefs-gadgets' => 'ተጨማሪ መሣርያዎች',
+ 'gadgets-prefstext' => 'ከዚህ ታች አንዳንድ ተጨማሪ መሣርያ ወይሠመኪናáŠá‰µ በá‹áˆ­á‹áˆ­ ሊገአይችላáˆá¢ እáŠá‹šáˆ… በደንብ እንዲሠሩ በኮáˆá’á‹á‰°áˆ­á‹Ž ላይ ጃቫ-ስክሪá•á‰µ እንዲኖር አስáˆáˆ‹áŒŠáŠá‰µ áŠá‹á¢
+
+የዚህ ዊኪ መጋቢዎች [[MediaWiki:Gadgets-definition]]
+እና [[Special:Gadgets]] በመጠቀሠአዲስ መሣርያ ሊጨáˆáˆ© ይቻላáˆá¢',
+ 'gadgets' => 'ተጨማሪ መሣርያዎች',
+ 'gadgets-title' => 'ተጨማሪ መሣርያዎች',
+ 'gadgets-pagetext' => 'ተጨማሪ መሣርያዎች ወይሠመኪናዎች በየዊኪ á•áˆ®á‹¤ የለያያሉá¢
+
+ተጨማሪ መሣሪያዎች ለማáŒáŠ˜á‰µá£ ወደ [[Special:Preferences|áˆáˆ­áŒ«á‹Žá‰½]] ይሂዱá¢
+
+የዚህ ገጽ መራጃ በተለይ ለመጋቢዎችና አስተዳዳሪዎች ይጠቅማáˆá¢
+
+በዚህ {{SITENAME}} የሚገኙት ተቸማሪ መሣርያዎች እáŠáŠšáˆ… ናቸá‹á¦',
+ 'gadgets-uses' => 'የተጠቀመዠጃቫ-ስክሪá•á‰µ',
+);
+
+/** Aragonese (Aragonés)
+ * @author Juanpabl
+ */
+$messages['an'] = array(
+ 'gadgets-desc' => 'Deixa que os usuario seleccionen os [[Special:Gadgets|gadgets de CSS y JavaScript]] que quieran en as suyas [[Special:Preferences|preferencias]]',
+ 'prefs-gadgets' => 'Trastes',
+ 'gadgets-prefstext' => "Contino ye una lista de trastes especials que puede fer servir en a suya cuenta.
+Como quasi totz istos trastes son feitos en JavaScript, caldrá que tienga activato JavaScript en o suyo navegador ta que vaigan bien. Pare cuenta que istos trastes no tendrán garra efeuto en ista pachina de preferencias.
+
+Pare cuenta tamién que istos trastes especials no fan parte d'o software MediaWiki, y que gosan estar desenvolicatos y mantenitos por usuarios d'a suya wiki local.
+Os almenistradors locals pueden editar os trastes disponibles en as pachinas de [[MediaWiki:Gadgets-definition|definicions]] y de [[Special:Gadgets|descripcions]].",
+ 'gadgets' => 'Trastes',
+ 'gadgets-title' => 'Trastes',
+ 'gadgets-pagetext' => "Contino ye una lista de trastes especials que os usuarios pueden activar en a suya [[Special:Preferences|pachina de preferencias]], como se define en a pachina de [[MediaWiki:Gadgets-definition|definicions]].
+Ista lista premite ir facilment t'as pachinas de mensaches d'o sistema que definen a descripción y o codigo de cada traste.",
+ 'gadgets-uses' => 'Fa servir',
+);
+
+/** Arabic (العربية)
+ * @author Aiman titi
+ * @author Meno25
+ * @author OsamaK
+ */
+$messages['ar'] = array(
+ 'gadgets-desc' => 'يسمح للمستخدمين باختيار [[Special:Gadgets|إضاÙات سي إس إس وجاÙاسكريبت]] معدلة ÙÙŠ [[Special:Preferences|تÙضيلاتهم]]',
+ 'prefs-gadgets' => 'الإضاÙات',
+ 'gadgets-prefstext' => 'بالأسÙÙ„ قائمة بالإضاÙات الخاصة التي يمكن تÙعيلها لحسابك.
+هذه الإضاÙات مبنية على الأغلب على جاÙاسكريبت، لذا ÙالجاÙاسكريبت يجب أن تكون Ù…Ùعلة ÙÙŠ متصÙحك لكي يعملوا.
+لاحظ أن هذه الإضاÙات لن يكون لها أي تأثير على صÙحة التÙضيلات هذه.
+
+أيضا لاحظ أن هذه الإضاÙات الخاصة ليست جزءا من برنامج ميدياويكي، وعادة يتم تطويرها وصيانتها بواسطة مستخدمين ÙÙŠ الويكي المحلي الخاص بك.
+الإداريون المحليون يمكنهم تعديل الإضاÙات المتوÙرة باستخدام [[MediaWiki:Gadgets-definition|التعريÙات]]
+Ùˆ [[Special:Gadgets|الوصوÙات]].',
+ 'gadgets' => 'إضاÙات',
+ 'gadgets-title' => 'إضاÙات',
+ 'gadgets-pagetext' => 'بالأسÙÙ„ قائمة بالإضاÙات الخاصة التي يمكن أن يقوم المستخدمون بتÙعيلها على [[Special:Preferences|صÙحة تÙضيلاتهم]]ØŒ معرÙØ© بواسطة [[MediaWiki:Gadgets-definition|التعريÙات]].
+هذا العرض يوÙر دخولا سهلا لصÙحات رسائل النظام التي تعر٠وص٠وكود كل إضاÙØ©.',
+ 'gadgets-uses' => 'تستخدم',
+ 'gadgets-required-rights' => 'يتطلب {{PLURAL:$2|$1 حق|الحقوق التالية: $1}}.',
+ 'gadgets-default' => 'تمكين الجميع بشكل اÙتراضي.',
+ 'gadgets-export' => 'صدّر',
+ 'gadgets-export-title' => 'أداة تصدير',
+ 'gadgets-not-found' => 'الأداة "$1" لم يتم العثور عليها.',
+ 'gadgets-export-text' => 'لتصدير $1 الأداة، انقر Ùوق "{{int:gadgets-export-download}}" زر Ø­Ùظ المل٠الذي تم تحميله،
+ الذهاب إلى الخاص: الاستيراد على واجهة الويكي وتحميله. قم بإضاÙØ© ما يلي إلى MediaWiki:Gadgets-definition الصÙحة:
+<pre>$2</pre>
+يجب أن يكون لديك الأذونات المناسبة على الويكي (بما ÙÙŠ ذلك الحق ÙÙŠ تحرير رسائل النظام) ويجب أن يتم تمكين الاستيراد من تحميل الملÙ.',
+ 'gadgets-export-download' => 'نزّل',
+);
+
+/** Aramaic (ÜܪܡÜÜ)
+ * @author Basharh
+ */
+$messages['arc'] = array(
+ 'gadgets' => 'ܬܘܣܦÜܬ̈Ü',
+ 'gadgets-title' => 'ܬܘܣܦÜܬ̈Ü',
+ 'gadgets-export-download' => 'Üܚܬ:',
+);
+
+/** Egyptian Spoken Arabic (مصرى)
+ * @author Ghaly
+ * @author Meno25
+ * @author Ramsis II
+ */
+$messages['arz'] = array(
+ 'gadgets-desc' => 'بيسمح لليوزرز انهم يختارو [[Special:Gadgets|اضاÙاتCSS ÙˆJavaScript]] ÙÙ‰ [[Special:Preferences|التÙضيلات]] بتاعتهم',
+ 'prefs-gadgets' => 'اضاÙات',
+ 'gadgets-prefstext' => 'تحت ÙÙ‰ لستة بالضاÙات المخصوصة اللى انت ممكن تÙعلها ÙÙ‰ الحساب بتاعك.
+الاضاÙات دى غالبا ما بتبقى مبينة على الجاÙاسكريبت،و علشان كده لازم تÙعل الجاÙاسطريبت ÙÙ‰ البراوزر بتاعك علشتن يشتغلو.
+اعمل حسابك ان الاضاÙات دى مش Ø­ يكون ليها اى تاثير على صÙحة التÙضيلات دى.
+
+كمان،خد بالك ان الاضاÙات المخصوصة دى مش جزء من برامج الميدياويكى ،و غالبا بيطورها Ùˆ يعملها صيانة اليوزرز اللى ÙÙ‰ الويكى المحلى بتاعك.
+الادارى المحلى ممكن يعدل الاضاÙات الموجودة باستخدام [[MediaWiki:Gadgets-definition|التعريÙات]] Ùˆ [[Special:Gadgets|التوصيÙات]].',
+ 'gadgets' => 'إضاÙات',
+ 'gadgets-title' => 'إضاÙات',
+ 'gadgets-pagetext' => 'تحت ÙÙ‰ لستة بالاضاÙات المخصوصة Ùˆ اللى اليوزرز ممكن ÙŠÙعلوها على [[Special:Preferences|صÙحة التÙضيلات]], زى ما بتعرÙها [[MediaWiki:Gadgets-definition|التعريÙات]].
+العرض دا بيوÙر دخول سهل لصÙحات رسايل النظام Ùˆ اللى بتعر٠وص٠و كود كل اضاÙØ©.',
+ 'gadgets-uses' => 'إستخدامات',
+);
+
+/** Asturian (Asturianu)
+ * @author Esbardu
+ */
+$messages['ast'] = array(
+ 'gadgets-desc' => 'Permite a los usuarios seleicionar al gustu [[Special:Gadgets|accesorios CSS y JavaScript]] nes sos [[Special:Preferences|preferencies]]',
+ 'prefs-gadgets' => 'Accesorios',
+ 'gadgets-prefstext' => "Embaxo amuésase una llista de los accesorios especiales que pues activar pa la to cuenta.
+Estos accesorios tán mayormente basaos en JavaScript, polo qu'has tener activáu esti nel to navegador pa que funcionen.
+Date cuenta de qu'estos accesorios nun tendrán efeutu nesta páxina de preferencies.
+
+Has decatate tamién de qu'estos accesorios especiales nun son parte del software MediaWiki, y que normalmente son
+desenrollaos y manteníos por usuarios de la to wiki llocal.
+Los alministradores llocales puen editar los accesorios disponibles usando les [[MediaWiki:Gadgets-definition|definiciones]] y les [[Special:Gadgets|descripciones]].",
+ 'gadgets' => 'Accesorios',
+ 'gadgets-title' => 'Accesorios',
+ 'gadgets-pagetext' => 'Embaxo amuésase una llista de los accesorios especiales que los usuarios puen activar na so [[Special:Preferences|páxina de preferencies]], según queden definíos poles [[MediaWiki:Gadgets-definition|definiciones]].
+Esta visión xeneral proporciona un accesu fácil a les páxines de mensaxes del sistema que definen la descripción y el códigu de cada accesoriu.',
+ 'gadgets-uses' => 'Usa',
+);
+
+/** Azerbaijani (Azərbaycanca)
+ * @author Cekli829
+ * @author Vugar 1981
+ */
+$messages['az'] = array(
+ 'gadgets-uses' => 'Ä°stifadÉ™',
+ 'gadgets-export' => 'Ä°xrac',
+ 'gadgets-export-download' => 'Yüklə',
+);
+
+/** Bashkir (БашҡортÑа)
+ * @author РуÑтам Ðурыев
+ */
+$messages['ba'] = array(
+ 'prefs-gadgets' => 'Гаджеттар',
+ 'gadgets' => 'Гаджеттар',
+ 'gadgets-title' => 'Гаджеттар',
+ 'gadgets-uses' => 'Ҡулланыла',
+ 'gadgets-export' => 'Сығарырға',
+ 'gadgets-not-found' => '"$1" гаджеты табылманы.',
+ 'gadgets-export-download' => 'КүÑереп алырға',
+);
+
+/** Southern Balochi (بلوچی مکرانی)
+ * @author Mostafadaneshvar
+ */
+$messages['bcc'] = array(
+ 'gadgets-desc' => 'اجازت دن کابرانء که انتخاب کنن دلواهی [[Special:Gadgets|گجت آنی سی اس اس و جاوا اسکرسپت]] ته وتی [[Special:Preferences|ترجیحات]]',
+ 'prefs-gadgets' => 'گجت آن',
+ 'gadgets' => 'گجت آن',
+ 'gadgets-title' => 'گجت آن',
+ 'gadgets-uses' => 'استÙاده بیت',
+);
+
+/** Belarusian (TaraÅ¡kievica orthography) (‪БеларуÑÐºÐ°Ñ (тарашкевіца)‬)
+ * @author Cesco
+ * @author EugeneZelenko
+ * @author Jim-by
+ * @author Red Winged Duck
+ * @author Wizardist
+ * @author Zedlik
+ */
+$messages['be-tarask'] = array(
+ 'gadgets-desc' => 'ДазвалÑе ўдзельнікам выбіраць [[Special:Gadgets|CSS Ñ– JavaScript-дадаткі]] Ñž Ñваіх [[Special:Preferences|наладах]]',
+ 'prefs-gadgets' => 'ГаджÑÑ‚Ñ‹',
+ 'gadgets-prefstext' => 'ÐіжÑй знаходзіцца ÑÑŒÐ¿Ñ–Ñ ÑпÑцыÑльных гаджÑтаў, ÑÐºÑ–Ñ Ð’Ñ‹ можаце ўключыць Ð´Ð»Ñ Ñвайго рахунка.
+ГÑÑ‚Ñ‹Ñ Ð³Ð°Ð´Ð¶ÑÑ‚Ñ‹, пераважна, заÑÐ½Ð°Ð²Ð°Ð½Ñ‹Ñ Ð½Ð° JavaScript, таму Вам неабходна ўключыць JavaScript у Ñваім браўзÑры Ð´Ð»Ñ Ñ‚Ð°Ð³Ð¾, каб Ñны працавалі.
+Заўважце, што гÑÑ‚Ñ‹Ñ Ð³Ð°Ð´Ð¶ÑÑ‚Ñ‹ не працуюць на Ñтаронцы наладаў.
+
+ТакÑама заўважце, што гÑÑ‚Ñ‹Ñ Ð³Ð°Ð´Ð¶ÑÑ‚Ñ‹ не зьÑўлÑюцца чаÑткай праграмнага забеÑьпÑчÑÐ½ÑŒÐ½Ñ MediaWiki, Ñ–, звычайна, раÑпрацоўваюцца ўдзельнікамі Вашай лÑкальнай вікі.
+ЛÑÐºÐ°Ð»ÑŒÐ½Ñ‹Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтратары маюць магчымаÑьць мÑнÑць ÑÑŒÐ¿Ñ–Ñ Ð³Ð°Ð´Ð¶Ñтаў з дапамогай [[MediaWiki:Gadgets-definition|вызначÑньнÑÑž]] Ñ– [[Special:Gadgets|апіÑаньнÑÑž]].',
+ 'gadgets' => 'ГаджÑÑ‚Ñ‹',
+ 'gadgets-title' => 'ГаджÑÑ‚Ñ‹',
+ 'gadgets-pagetext' => 'ÐіжÑй знаходзіцца ÑÑŒÐ¿Ñ–Ñ Ð³Ð°Ð´Ð¶Ñтаў, ÑÐºÑ–Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÑ– могуць уключыць у [[Special:Preferences|Ñваіх наладах]], у адпаведнаÑьці Ñа ÑьпіÑам на Ñтаронцы [[MediaWiki:Gadgets-definition|вызначÑньнÑÑž]].
+ГÑÑ‚Ñ‹ ÑÑŒÐ¿Ñ–Ñ Ð´Ð°Ð·Ð²Ð°Ð»Ñе лёгка атрымаць доÑтуп да Ñтаронак ÑÑ‹ÑÑ‚Ñмных паведамленьнÑÑž, ÑÐºÑ–Ñ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°ÑŽÑ†ÑŒ апіÑаньні Ñ– ÐºÑ€Ñ‹Ð½Ñ–Ñ‡Ð½Ñ‹Ñ ÐºÐ¾Ð´Ñ‹ гаджÑтаў.',
+ 'gadgets-uses' => 'ВыкарыÑтаньне',
+ 'gadgets-required-rights' => '{{PLURAL:$2|Патрабуецца права $1|Патрабуюцца наÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ð²Ñ‹: $1}}.',
+ 'gadgets-default' => 'Ð”Ð°Ð·Ð²Ð¾Ð»ÐµÐ½Ñ‹Ñ Ð´Ð»Ñ ÑžÑÑ–Ñ… па змоўчваньні.',
+ 'gadgets-export' => 'ЭкÑпартаваць',
+ 'gadgets-export-title' => 'ЭкÑпарт гаджÑта',
+ 'gadgets-not-found' => 'ГаджÑÑ‚ «$1» Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹.',
+ 'gadgets-export-text' => 'Каб ÑкÑпартаваць гаджÑÑ‚ $1, націÑьніце кнопку «{{int:gadgets-export-download}}», захавайце загружаны файл, зайдзіце на Special:Import у мÑтавай вікі Ñ– загрузіце файл туды. Затым дадайце наÑтупны зьмеÑÑ‚ на Ñтаронку MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Ð’Ñ‹ павінны мець Ð°Ð´Ð¿Ð°Ð²ÐµÐ´Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ð²Ñ‹ Ñž мÑтавай вікі (у тым ліку Ñ– правы на Ñ€Ñдагаваньне ÑÑ‹ÑÑ‚Ñмных паведамленьнÑÑž), а Ñž вікі муÑіць быць ÑƒÐºÐ»ÑŽÑ‡Ð°Ð½Ð°Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð°Ñьць імпарту з файлаў.',
+ 'gadgets-export-download' => 'Загрузіць',
+);
+
+/** Bulgarian (БългарÑки)
+ * @author Borislav
+ * @author DCLXVI
+ * @author Spiritia
+ * @author Turin
+ */
+$messages['bg'] = array(
+ 'gadgets-desc' => 'ПозволÑва на потребителите да избират и активират [[Special:Gadgets|CSS и JavaScript джаджи]] от Ñвоите [[Special:Preferences|наÑтройки]]',
+ 'prefs-gadgets' => 'Джаджи',
+ 'gadgets-prefstext' => 'По-долу е ÑпиÑъкът на Ñпециалните джаджи, които можете да активирате на ÑвоÑта потребителÑка Ñметка.
+Тъй като почти вÑички джаджи Ñа базирани на ДжаваÑкрипт, Ñ‚Ñ€Ñбва да го активирате на браузъра Ñи, за да могат те да работÑÑ‚.
+Имайте предвид, че тези джаджи нÑма да окажат влиÑние на тази Ñтраница Ñ Ð½Ð°Ñтройки.
+
+Също така, джаджите не Ñа чаÑÑ‚ от Ñофтуера МедиÑУики, и обикновено Ñе разработват и поддържат от потребители в локалното уики. Локалните админиÑтратори могат да редактират наличните джаджи поÑредÑтвом [[MediaWiki:Gadgets-definition|дефинициите]] и [[Special:Gadgets|опиÑаниÑта]].',
+ 'gadgets' => 'Джаджи',
+ 'gadgets-title' => 'Джаджи',
+ 'gadgets-pagetext' => 'По-долу е ÑпиÑъкът на Ñпециалните джаджи, които потребителите могат да активират чрез [[Special:Preferences|Ñтраницата Ñи Ñ Ð½Ð°Ñтройки]], както е указано на [[MediaWiki:Gadgets-definition]].
+Този ÑпиÑък дава леÑен доÑтъп до Ñтраниците ÑÑŠÑ ÑиÑтемни ÑъобщениÑ, Ñъдържащи опиÑанието и кода на вÑÑка джаджа.',
+ 'gadgets-uses' => 'Използва',
+ 'gadgets-default' => 'Ðктивирана за вÑички по подразбиране.',
+ 'gadgets-export' => 'ИзнаÑÑне',
+ 'gadgets-export-download' => 'ИзтеглÑне',
+);
+
+/** Bengali (বাংলা)
+ * @author Bellayet
+ * @author Wikitanvir
+ * @author Zaheen
+ */
+$messages['bn'] = array(
+ 'gadgets-desc' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦° তাদের [[Special:Preferences|পছনà§à¦¦à§‡]] সà§à¦¬à¦¨à¦¿à¦°à§à¦¬à¦¾à¦šà¦¿à¦¤ [[Special:Gadgets|সিà¦à¦¸à¦à¦¸ à¦à¦¬à¦‚ জাভাসà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ গà§à¦¯à¦¾à¦œà§‡à¦Ÿ]] নিরà§à¦¬à¦¾à¦šà¦¨à§‡à¦° সà§à¦¯à§‹à¦— দাও',
+ 'prefs-gadgets' => 'গà§à¦¯à¦¾à¦œà§‡à¦Ÿà¦—à§à¦²à¦¿',
+ 'gadgets-prefstext' => 'নিচে কিছৠবিশেষ গà§à¦¯à¦¾à¦œà§‡à¦Ÿà§‡à¦° তালিকা দেওয়া হল, যেগà§à¦²à¦¿ আপনি আপনার অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà§‡à¦° জনà§à¦¯ সকà§à¦°à¦¿à¦¯à¦¼ করতে পারেন।
+à¦à¦‡ গà§à¦¯à¦¾à¦œà§‡à¦Ÿà¦—à§à¦²à¦¿ বেশিরভাগই জাভাসà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ-ভিতà§à¦¤à¦¿à¦•, তাই à¦à¦—à§à¦²à¦¿ কাজ করতে হলে আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡ জাভাসà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ সকà§à¦°à¦¿à¦¯à¦¼ থাকতে হবে।
+লকà§à¦·à§à¦¯ করà§à¦¨, à¦à¦‡ গà§à¦¯à¦¾à¦œà§‡à¦Ÿà¦—à§à¦²à¦¿ à¦à¦‡ পছনà§à¦¦ পাতায় কোন পà§à¦°à¦­à¦¾à¦¬ ফেলবে না।
+
+আরও লকà§à¦·à§à¦¯ করà§à¦¨ যে à¦à¦‡ বিশেষ গà§à¦¯à¦¾à¦œà§‡à¦Ÿà¦—à§à¦²à¦¿ মিডিয়াউইকি সফটওয়à§à¦¯à¦¾à¦°à§‡à¦° অংশ নয়, à¦à¦¬à¦‚ সাধারণত আপনার সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼ উইকির বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦°à¦¾ à¦à¦—à§à¦²à¦¿ তৈরি করেন ও রকà§à¦·à¦£à¦¾à¦¬à§‡à¦•à§à¦·à¦£ করেন। সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼ পà§à¦°à¦¶à¦¾à¦¸à¦•à§‡à¦°à¦¾ লভà§à¦¯ গà§à¦¯à¦¾à¦œà§‡à¦Ÿà¦—à§à¦²à¦¿ [[MediaWiki:Gadgets-definition|সংজà§à¦žà¦¾]] à¦à¦¬à¦‚ [[Special:Gadgets|বরà§à¦£à¦¨à¦¾]]-à¦à¦° সাহাযà§à¦¯à§‡ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে পারেন।',
+ 'gadgets' => 'গà§à¦¯à¦¾à¦œà§‡à¦Ÿà¦—à§à¦²à¦¿',
+ 'gadgets-title' => 'গà§à¦¯à¦¾à¦œà§‡à¦Ÿ',
+ 'gadgets-pagetext' => 'নিচে বিশেষ গà§à¦¯à¦¾à¦œà§‡à¦Ÿà§‡à¦° à¦à¦•à¦Ÿà¦¿ তালিকা রয়েছে, যা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ তাদের [[Special:Preferences|পà§à¦°à¦›à¦¨à§à¦¦à§‡à¦° পাতা]] থেকে সকà§à¦°à¦¿à¦¯à¦¼ করে নিতে পারবেন à¦à¦¬à¦‚ যা [[MediaWiki:Gadgets-definition|definitions]] পাতায় সংজà§à¦žà¦¾à¦¯à¦¼à¦¿à¦¤ রয়েছে। পরà§à¦¯à¦¾à¦²à§‹à¦šà¦¨à¦¾ সিসà§à¦Ÿà§‡à¦® বারà§à¦¤à¦¾ পাতায় সহজ পà§à¦°à¦¬à§‡à¦¶à¦¾à¦§à¦¿à¦•à¦¾à¦° দিবে, যেখানে গà§à¦¯à¦¾à¦œà§‡à¦Ÿà§‡à¦° বরà§à¦£à¦¨à¦¾ à¦à¦¬à¦‚ কোড রয়েছে।',
+ 'gadgets-uses' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦¸à¦®à§‚হ',
+ 'gadgets-export' => 'রপà§à¦¤à¦¾à¦¨à¦¿',
+ 'gadgets-not-found' => 'গà§à¦¯à¦¾à¦œà§‡à¦Ÿ "$1" খà§à¦œà§‡ পাওয়া যায়নি।',
+ 'gadgets-export-download' => 'ডাউনলোড',
+);
+
+/** Breton (Brezhoneg)
+ * @author Fulup
+ * @author Gwendal
+ * @author Y-M D
+ */
+$messages['br'] = array(
+ 'gadgets-desc' => 'Leuskel a ra an implijerien da bersonelaat [[Special:Gadgets|bitrakoù CSS ha JavaScript]] en o [[Special:Preferences|fenndibaboù]]',
+ 'prefs-gadgets' => 'Bitrakoù',
+ 'gadgets-prefstext' => "A-is ez eus ur roll eus ar bitrakoù a c'hallit gweredekaat evit ho kont.
+Evit ar pep brasañ eo diazezet ar bitrakoù-se war JavaScript, setu ma rank JavaScript bezañ gweredekaet war ho merdeer evit ma'z afent en-dro.
+Notennit mat ne vo efed ebet gant ar bitrakoù-se war ar bajenn penndibaboù-mañ.
+
+Notennit ivez n'eus ket eus ar bitrakoù-se tammoù eus meziant MediaWiki; peurliesañ ez int diorroet ha trezalc'het gant implijerien war ho wiki lec'hel.
+Gallout a ra ar verourien lec'hel degas cheñchamantoù er bitrakoù en ur ober gant an [[MediaWiki:Gadgets-definition|termenadurioù]] hag an [[Special:Gadgets|deskrivadurioù]].",
+ 'gadgets' => 'Bitrakoù',
+ 'gadgets-title' => 'Bitrakoù',
+ 'gadgets-pagetext' => "A-is ez eus ur roll eus ar bitrakoù a c'hall bezañ gweredekaet gant an implijerien war o fajenn [[Special:Preferences|penndibaboù]], evel m'eo termenet en [[MediaWiki:Gadgets-definition|termenadurioù]].
+Ar sell hollek-mañ a bourchas ur moned aes d'ar pajennoù kemennadennoù reizhiad a dermen deskrivadur ha kod pep bitrak.",
+ 'gadgets-uses' => 'A implij',
+ 'gadgets-required-rights' => 'Rekis eo kaout an {{PLURAL:$2|aotre $1|aotreoù da-heul : $1}}.',
+ 'gadgets-default' => 'Gweredekaet dre ziouer evit an holl.',
+ 'gadgets-export' => 'Ezporzh',
+ 'gadgets-export-title' => 'Ezporzhiañ bitrakoù',
+ 'gadgets-not-found' => 'N\'eo ket bet kavet ar bitrak "$1".',
+ 'gadgets-export-text' => 'Evit ezporzhiañ ar bitrak $1, klikañ war ar bouton "{{int:gadgets-export-download}}", enrollañ ar restr pellgarget,
+mont d\'ar bajenn Dibar :Enporzh ar wiki tal hag enporzhiañ. Goude-se ouzhpennañ an destenn da-heul e pajenn MediaWiki:Gadgets-definition :
+<pre>$2</pre>
+Rankout a rit kaout ar gwirioù a zere war ar wiki tal (en o zouez ar gwir da zegas kemmoù er c\'hemennadennoù reizhiad) ha ret eo d\'an enporzhiañ adalek restroù bezañ gweredekaet.',
+ 'gadgets-export-download' => 'Pellgargañ',
+);
+
+/** Bosnian (Bosanski)
+ * @author CERminator
+ */
+$messages['bs'] = array(
+ 'gadgets-desc' => 'Omogućava korisnicima da odaberu vlastite [[Special:Gadgets|CSS i JavaScript dodatke]] (gadgets) u svojim [[Special:Preferences|postavkama]]',
+ 'prefs-gadgets' => 'Dodaci',
+ 'gadgets-prefstext' => "Ovo je spisak specijalih gadgets (''dodataka'') koje možete omogućiti za VaÅ¡ korisniÄki raÄun. Ovi dodaci su najÄešće bazirani na JavaScript, tako da se postavke JavaScript moraju omogućiti u VaÅ¡em web pregledniku da bi mogli raditi.
+Zapamtite da ovi gadgets ne uzrokuju nikakve efekte na ovoj stranici za postavke.
+
+TakoÄ‘er morate obratiti pažnju da ovi specijalni dodaci nisu dio MediaWiki software-a, a obiÄno ih prave i razvijaju korisnici na lokalnim wikijima.
+Administratori mogu mijenjati dostupne gadgetse koristeći [[MediaWiki:Gadgets-definition|definicije]] i [[Special:Gadgets|opise]].",
+ 'gadgets' => 'Dodaci (gadgets)',
+ 'gadgets-title' => 'Dodaci',
+ 'gadgets-pagetext' => 'Ispod je spisak posebnih dodataka koje korisnici mogu omogućiti na svojim [[Special:Preferences|postavkama]], kako je to definisano u [[MediaWiki:Gadgets-definition|definicijama dodataka]].
+Ovaj pregled daje jednostavan pristup sistemu stranica poruka koje definišu svaki dodatak i njihov opis i kod.',
+ 'gadgets-uses' => 'Upotrebe',
+ 'gadgets-required-rights' => 'Zahtijeva {{PLURAL:$2|$1 pravo|slijedeća prava: $1}}.',
+ 'gadgets-default' => 'Omogućeno za svakog po postavkama.',
+ 'gadgets-export' => 'Izvoz',
+ 'gadgets-export-title' => 'Izvoz dodatka',
+ 'gadgets-not-found' => 'Dodatak "$1" nije pronađen.',
+ 'gadgets-export-text' => 'Za izvoz dodatka $1, kliknite na dugme "{{int:gadgets-export-download}}", spremite skinutu datoteku,
+idite na Posebno:Uvoz na odredišnu wiki i postavite je. Zatim dodajte slijedeće na stranicu MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Morate imati odgovarajuća prava na odrediÅ¡noj wiki (ukljuÄujući pravo da ureÄ‘ujete sistemske poruke) i uvoz iz postavljenih datoteka mora biti omogućen.',
+ 'gadgets-export-download' => 'Skidanje',
+);
+
+/** Catalan (Català)
+ * @author Aleator
+ * @author Paucabot
+ * @author SMP
+ * @author Toniher
+ * @author Vriullop
+ */
+$messages['ca'] = array(
+ 'gadgets-desc' => 'Permet als usuaris personalitzar [[Special:Gadgets|ginys CSS i JavaScript]] a les seves [[Special:Preferences|preferències]]',
+ 'prefs-gadgets' => 'Ginys',
+ 'gadgets-prefstext' => "A continuació teniu una llista de ginys especials que podeu activar al vostre compte.<br />
+La majoria d'aquests ginys fan servir JavaScript, per tant l'haureu de tenir activat al vostre navegador per a que funcionin.
+Tingueu en compte que aquests ginys no tenen cap efecte sobre aquesta pàgina de preferències.
+
+Tingueu també present que aquests ginys especials no formen part del programari MediaWiki i que acostumen a estar fets i mantinguts per usuaris del vostre wiki local.<br />
+Els administradors locals poden editar els ginys disponibles fent servir [[MediaWiki:Gadgets-definition|definicions]] i [[Special:Gadgets|descripcions]].",
+ 'gadgets' => 'Ginys',
+ 'gadgets-title' => 'Ginys',
+ 'gadgets-pagetext' => 'A continuació teniu una llista de ginys especials que els usuaris poden activar a la seva [[Special:Preferences|pàgina de preferències]], segons les [[MediaWiki:Gadgets-definition|seves definicions]].
+Aquesta llista permet un fàcil accés a les pàgines del sistema que defineixen la descripció i el codi de cada giny.',
+ 'gadgets-uses' => 'Usa',
+ 'gadgets-required-rights' => 'Requereix el {{PLURAL:$2|dret $1|següents drets: $1}}.',
+ 'gadgets-export' => 'Exporta',
+ 'gadgets-export-title' => 'Exportació de ginys',
+ 'gadgets-not-found' => "No s'ha trobat el giny «$1».",
+ 'gadgets-export-text' => "Per a exportar el giny $1, feu clic al botó «{{int:gadgets-export-download}}», deseu el fitxer baixat,
+aneu a Special:Import al wiki de destinació i pugeu-lo. Llavors afegiu el següent a la pàgina MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Heu de tenir els permisos adequats en el wiki de destinació (incloent-hi els permisos per editar missatges del sistema) i s'ha d'habilitar la importació de la pujada de fitxers.",
+ 'gadgets-export-download' => 'Baixa',
+);
+
+/** Chechen (Ðохчийн)
+ * @author Sasan700
+ */
+$messages['ce'] = array(
+ 'gadgets-desc' => 'Ðтто бо декъашхошна харжам ба [[Special:Preferences|гIÐ¸Ñ€Ñ Ð½Ð¸Ñбарца]] CSS- а JavaScript-Ñ…Iоттончаш, лато лууш йерш',
+ 'prefs-gadgets' => 'Хlоттончаш',
+ 'gadgets-prefstext' => 'Лаххьа балийна леррина хlоттончаш могlам, шуьга шайга латалур йолуш хьай долахь долучу дакъан.
+Ð¥lара Ñ…lоттончаш дукхачу хьолÑÑ…ÑŒ болх беш ÑŽ оцу JavaScript Ñ‚lÑÑ…ÑŒ, цундела аша латоеза JavaScript шай дуьнена машан гlирÑа чохь, цаьрга болх байта.
+Диц маделаш, Ñ…lара Ñ…lоттончаш болх бÑш Ñз Ñ…lо гlÐ¸Ñ€Ñ Ð½Ð¸Ñбо агlон чохь.
+
+Ишта диц маде, Ñ…lара Ñ…lоттончаш юкъа йогуш Ñз кху MediaWiki гlирÑашна, мадарра аьльча шу Ñанна декъашхоша шаьш йеш ÑŽ.
+Ðдманкуьйгалхошка шайг хийцало и Ñ…lоттончи могlам, Ñ…lокх могlам гlонца [[MediaWiki:Gadgets-definition|къаÑтам бало]] а [[Special:Gadgets|церах лаьцна]].',
+ 'gadgets' => 'Хlоттончаш',
+ 'gadgets-title' => 'Хlоттончаш',
+ 'gadgets-pagetext' => 'ГlирÑа хааман могlамаш, къаÑтош йолу Ñ…lоттончи цlераш, хуьлаш йолу Ñ…Iокху [[MediaWiki:Gadgets-definition|къаÑтамца]]]].
+Ð¥Iокху могIамо атто бо гIирÑан хаамаш атта Ñ‚Iе кхочуш барца, цуьнах лаьцна Ñ…Iоттош а йолш йолучу Ñ…Iоттончи ишарца.',
+ 'gadgets-uses' => 'Лелош йу',
+);
+
+/** Sorani (کوردی)
+ * @author Asoxor
+ */
+$messages['ckb'] = array(
+ 'prefs-gadgets' => 'ئامرازەکان',
+ 'gadgets' => 'ئامرازەکان',
+ 'gadgets-title' => 'ئامرازەکان',
+);
+
+/** Czech (ÄŒesky)
+ * @author Danny B.
+ * @author Li-sung
+ * @author Mormegil
+ */
+$messages['cs'] = array(
+ 'gadgets-desc' => 'Umožňuje uživatelům vybrat si [[Special:Gadgets|CSS a JavaScriptové udělátko]] ve svém [[Special:Preferences|nastavení]].',
+ 'prefs-gadgets' => 'Udělátka',
+ 'gadgets-prefstext' => 'Níže je pÅ™ehled speciálních udÄ›látek, která si můžete ve svém úÄtu zapnout.
+Tato udÄ›látka jsou založena pÅ™evážnÄ› na JavaScriptu, takže je pro jejich funkÄnost nutné mít v prohlížeÄi JavaScript zapnutý.
+Udělátka nejsou aplikována na této stránce nastavení.
+
+UvÄ›domte si také, že speciální udÄ›látka nejsou souÄástí softwaru MediaWiki a&nbsp;jsou vytvářena a&nbsp;spravována uživateli této wiki.
+Místní správci mohou upravovat [[MediaWiki:Gadgets-definition|definice]] a&nbsp;[[Special:Gadgets|popisy]] dostupných udělátek.',
+ 'gadgets' => 'Udělátka',
+ 'gadgets-title' => 'Udělátka',
+ 'gadgets-pagetext' => 'Níže je přehled speciálních udělátek, která si uživatelé mohou zapnout ve svém [[Special:Preferences|nastavení]]. Jejich seznam lze upravovat na stránce [[MediaWiki:Gadgets-definition]].
+Tento přehled poskytuje jednoduchý přístup k&nbsp;systémovým hlášením, která definují zdrojový kód a&nbsp;popis každého udělátka.',
+ 'gadgets-uses' => 'používá',
+ 'gadgets-required-rights' => 'Vyžaduje {{PLURAL:$2|oprávnění $1|následující oprávnění: $1}}.',
+ 'gadgets-default' => 'Implicitně zapnuto všem.',
+ 'gadgets-export' => 'Exportovat',
+ 'gadgets-export-title' => 'Export udělátka',
+ 'gadgets-not-found' => 'Udělátko „$1“ nebylo nalezeno.',
+ 'gadgets-export-text' => 'Chcete-li exportovat udÄ›látko $1, kliknÄ›te na tlaÄítko „{{int:gadgets-export-download}}“, uložte stažený soubor, na cílové wiki pÅ™ejdÄ›te na stránku Special:Import a soubor naÄtÄ›te. Poté na tamní stránku MediaWiki:Gadgets-definition pÅ™idejte následující:
+<pre>$2</pre>
+Na cílové wiki musíte mít přísluÅ¡ná oprávnÄ›ní (vÄetnÄ› práva editovat systémová hlášení) a musí tam být povolen import naÄtením souboru.',
+ 'gadgets-export-download' => 'Stáhnout',
+);
+
+/** Welsh (Cymraeg)
+ * @author Lloffiwr
+ */
+$messages['cy'] = array(
+ 'gadgets-desc' => 'Yn galluogi defnyddwyr i ddewis [[Special:Gadgets|teclynnau CSS a JavaScript]] yn eu [[Special:Preferences|dewisiadau]]',
+ 'prefs-gadgets' => 'Teclynnau',
+ 'gadgets-prefstext' => "Ceir rhestr isod o'r teclynnau y gallwch eu galluogi.
+Mae'r rhan fwyaf o'r teclynnau yn defnyddio JavaScript, felly mae'n rhaid galluogi JavaScript ar eich porwr er mwyn iddynt weithio.
+Sylwer na gaiff y teclynnau hyn unrhyw effaith ar y dudalen hon o ddewisiadau.
+
+Sylwer hefyd nad yw'r teclynnau hyn yn ran o feddalwedd MediaWiki; fel arfer defnyddwyr y wici hwn sydd wedi datblygu'r teclynnau ac sydd yn eu cynnal.
+Mae gweinyddwyr y wici hwn yn gallu golygu [[MediaWiki:Gadgets-definition|diffiniadau]] a [[Special:Gadgets|disgrifiadau]]'r teclynnau sydd ar gael.",
+ 'gadgets' => 'Teclynnau',
+ 'gadgets-title' => 'Teclynnau',
+ 'gadgets-pagetext' => "Isod mae rhestr o declynnau arbennig y gall defnyddwyr eu galluogi ar eu [[Special:Preferences|tudalennau dewisiadau]], sef rhestr a bennir yn y dudalen [[MediaWiki:Gadgets-definition|diffiniadau]].
+Mae'r trosolwg hwn yn cynnig mynediad rhwydd at y tudalennau negeseuon sustem sy'n diffinio disgrifiad a chod pob teclyn.",
+ 'gadgets-uses' => 'Yn defnyddio',
+ 'gadgets-required-rights' => 'Mae gofyn cael y {{PLURAL:$2|gallu $1|galluoedd canlynol: $1}}.',
+ 'gadgets-default' => 'Wedi ei alluogi i bawb yn ddiofyn.',
+ 'gadgets-export' => 'Allforio',
+ 'gadgets-export-title' => 'Allforio teclyn',
+ 'gadgets-not-found' => 'Heb ddod o hyd i\'r teclyn "$1".',
+ 'gadgets-export-text' => "I allforio'r teclyn \$1, pwyswch ar y botwm \"{{int:gadgets-export-download}}\", rhowch y ffeil a islwythir ar gadw, ewch i Special:Import ar wici'r pendraw a'i huwchlwytho. Yna ychwanegwch y canlynol at y dudalen MediaWiki:Gadgets-definition:
+<pre>\$2</pre>
+Mae'n rhaid bod y galluoedd pwrpasol gennych ar wici'r pendraw (gan gynnwys y gallu i olygu negeseuon y sustem), a rhaid bod mewnforio drwy uwchlwytho ffeiliau wedi ei alluogi.",
+ 'gadgets-export-download' => 'Islwyther',
+);
+
+/** Danish (Dansk)
+ * @author Byrial
+ * @author Peter Alberti
+ */
+$messages['da'] = array(
+ 'gadgets-desc' => 'Lader brugere vælge brugerdefinerede [[Special:Gadgets|CSS og JavaScript gadgets]] i deres [[Special:Preferences|indstillinger]]',
+ 'prefs-gadgets' => 'Gadgets',
+ 'gadgets-prefstext' => 'Nedenstående er en liste over de gadgets som du kan aktivere for din brugerkonto.
+Da disse gadgets hovedsageligt er baseret på JavaScript skal du slå JavaScript til i din browser for at få dem til at virke.
+Bemærk at disse gadgets ikke vil have nogen effekt på denne side (indstillinger).
+
+Bemærk også at disse specielle gadgets ikke er en del af MediaWiki-softwaren og at de typisk bliver vedligeholdt af brugere på din lokale wiki.
+Lokale administratorer kan redigere tilgængelige gadgets med [[MediaWiki:Gadgets-definition|definitioner]] og [[Special:Gadgets|beskrivelser]].',
+ 'gadgets' => 'Gadgets',
+ 'gadgets-title' => 'Gadgets',
+ 'gadgets-pagetext' => 'Nedenstående er en liste med de specielle gadgets som brugere kan aktivere i deres [[Special:Preferences|indstillinger]], som defineret i [[MediaWiki:Gadgets-definition|definitionerne]].
+Denne oversigtsside giver simpel adgang til de beskedsider som definerer hver gadgets beskrivelse og kode.',
+ 'gadgets-uses' => 'Bruger',
+ 'gadgets-required-rights' => 'Kræver {{PLURAL:$2|rettigheden $1|følgende rettigheder: $1}}.',
+ 'gadgets-default' => 'Aktiveret for alle som standard.',
+ 'gadgets-export' => 'Eksporter',
+ 'gadgets-export-title' => 'Eksporter gadget',
+ 'gadgets-not-found' => 'Gadget "$1" ikke fundet.',
+ 'gadgets-export-text' => 'For at eksportere værktøjet $1, klik på knappen "{{int:gadgets-export-download}}", gem den downloadede fil, gå til Special:Import på destinationswikien og læg den op. Tilføj så følgende til siden MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Du skal have de nødvendige rettigheder på destinationswikien (herunder rettigheden til at redigere systemmeddelelser) og importering via oplægning af filer skal være slået til.',
+ 'gadgets-export-download' => 'Download',
+);
+
+/** German (Deutsch)
+ * @author Daniel Kinzler, brightbyte.de
+ * @author Kghbln
+ * @author Metalhead64
+ * @author Raimond Spekking
+ * @author The Evil IP address
+ * @author Umherirrender
+ * @author ✓
+ */
+$messages['de'] = array(
+ 'gadgets-desc' => 'Ermöglicht es Benutzern, in ihren [[Special:Preferences|persönlichen Einstellungen]] vordefinierte [[Special:Gadgets|CSS- und JavaScript-Helferlein]] zu aktivieren',
+ 'prefs-gadgets' => 'Helferlein',
+ 'gadgets-prefstext' => 'Dies ist eine Liste spezieller Helferlein, die jeder Benutzer aktivieren kann.
+Die Helferlein basieren zumeist auf JavaScript. Daher muss JavaScript im Browser aktiviert sein, damit sie funktionieren können.
+Sie funktionieren allerdings nicht auf dieser Spezialseite mit den persönlichen Einstellungen.
+
+Außerdem ist zu beachten, dass diese Helferlein im Allgemeinen nicht Teil von MediaWiki sind, sondern meist von Benutzern lokaler Wikis entwickelt und gewartet werden.
+Lokale Administratoren können die verfügbaren Helferlein bearbeiten. Dafür stehen die [[MediaWiki:Gadgets-definition|Definitionen]] und [[Special:Gadgets|Beschreibungen]] zur Verfügung.',
+ 'gadgets' => 'Helferlein',
+ 'gadgets-title' => 'Helferlein',
+ 'gadgets-pagetext' => 'Liste besonderer, in [[MediaWiki:Gadgets-definition]] festgelegter Helferlein, die für jeden Benutzer in seinen [[Special:Preferences|persönlichen Einstellungen]] verfügbar sind.
+Diese Ãœbersicht bietet direkten Zugang zu den MediaWiki-Systemnachrichten, welche die Beschreibung sowie den Programmcode jedes Helferlein enthalten.',
+ 'gadgets-uses' => 'Benutzt',
+ 'gadgets-required-rights' => 'Erfordert die {{PLURAL:$2|folgende Berechtigung:|folgenden Berechtigungen:}} $1',
+ 'gadgets-default' => 'Für alle standardmäßig aktiviert.',
+ 'gadgets-export' => 'Export',
+ 'gadgets-export-title' => 'Export der Helferlein',
+ 'gadgets-not-found' => 'Helferlein „$1“ wurde nicht gefunden.',
+ 'gadgets-export-text' => 'Um das Helferlein $1 zu exportieren, klicke auf die Schaltfläche „{{int:gadgets-export-download}}“ und speichere die heruntergeladene Datei. Gehe sodann zur Spezialseite Spezial:Import auf dem für den Import vorgesehenen Wiki und lade die Datei hoch. Danach füge den folgenden Text der Seite MediaWiki:Gadgets-definition hinzu:
+<pre>$2</pre>
+Du musst über die notwendigen Berechtigungen auf dem für den Import vorgesehenen Wiki verfügen (einschließlich der Berechtigung MediaWiki-Systemnachrichten zu bearbeiten). Zudem muss der Import von Datei-Uploads aktiviert sein.',
+ 'gadgets-export-download' => 'Herunterladen',
+);
+
+/** German (formal address) (‪Deutsch (Sie-Form)‬)
+ * @author Kghbln
+ */
+$messages['de-formal'] = array(
+ 'gadgets-export-text' => 'Um das Helferlein $1 zu exportieren, klicken Sie auf die Schaltfläche „{{int:gadgets-export-download}}“ und speichern Sie die heruntergeladene Datei. Gehen Sie sodann zur Spezialseite Spezial:Import auf dem für den Import vorgesehenen Wiki und laden Sie die Datei hoch. Danach fügen Sie den folgenden Text der Seite MediaWiki:Gadgets-definition hinzu:
+<pre>$2</pre>
+Sie müssen über die notwendigen Berechtigungen auf dem für den Import vorgesehenen Wiki verfügen (einschließlich der Berechtigung MediaWiki-Systemnachrichten zu bearbeiten). Zudem muss der Import von Datei-Uploads aktiviert sein.',
+);
+
+/** Zazaki (Zazaki)
+ * @author Xoser
+ */
+$messages['diq'] = array(
+ 'gadgets-desc' => 'Karberan rê destur bide ke pê [[Special:Preferences|opsiyonan]] ra [[Special:Gadgets|Xacetanê CSS u JavaScriptî]] biweçî',
+ 'prefs-gadgets' => 'Xacetî',
+ 'gadgets-prefstext' => 'Cor de yew listeyê xacetanê xasî estê ke ti eşkenî xesabê xo de a bike.
+Enê xecatan ser JavaScript gure kenê, aya ra ti gani browser xo de JavaScript a bike.
+Ena pela opsiyonî de xacetan etki nikenê.
+
+Enê xecatanê xasî parçê sofwarê Mediyawîkî niyo, aye ra karberanê localî enê xecetî virazeno.
+Adminstorê localî eşkenê xacetî [[MediaWiki:Gadgets-definition|definitions]] u [[Special:Gadgets|descriptions]] ra bivurne.',
+ 'gadgets' => 'Xacetî',
+ 'gadgets-title' => 'Xacetî',
+ 'gadgets-pagetext' => 'Cor de yew listeyê xacetanê xasî estê ke ti eşkenî [[Special:Preferences|xesabê xo]] de a bike, descripsiyon [[MediaWiki:Gadgets-definition|definitions]] de esto.
+Ena descripisyon kerberanê îmkan dano ke aye meajanê sistemî ra asani cikewtê.',
+ 'gadgets-uses' => 'Karber',
+);
+
+/** Lower Sorbian (Dolnoserbski)
+ * @author Michawiki
+ */
+$messages['dsb'] = array(
+ 'gadgets-desc' => 'Dowólujo wužywarjam w jich [[Special:Preferences|nastajenjach]] [[Special:Gadgets|gadgets CSS a JavaScript]] wubraś',
+ 'prefs-gadgets' => 'Gadgets',
+ 'gadgets-prefstext' => 'Dołojce jo lisćina specielnych gadgetow, kótarež móžoš za swójo konto zmóžniś.
+Toś te gadgety se zwětšego bazěruju na JavaScripśe, togodla musy JavaScript w twójom wobglědowaku zmóžnjony byś, aby funkcioněrowali.
+Glědaj, až toś te gadgety njewustatkuju se na bok nastajenjow.
+
+Glědaj teke, až toś te gadgety njejsu źěl softwary MediaWiki a se zwětšego wót wužywarjow na twójom lokalnem wikiju wuwijaju a wótwarduju.
+Lokalne administratory mógu k dispoziciji stojece gadgety z pomocu [[MediaWiki:Gadgets-definition|definicijow ]] a [[Special:Gadgets|wopisanjow]] wobźełaś.',
+ 'gadgets' => 'Gadgets',
+ 'gadgets-title' => 'Gadgets',
+ 'gadgets-pagetext' => 'Dołojce jo lisćina specialnych gadgetow, kótarež wužywarje mógu w [[Special:Preferences|swójich nastajenjach]] zmóžniś, kaž w [[MediaWiki:Gadgets-definition]] definiěrowane.
+Toś ten pśeglěd bitujo lažki pśistup k bokam systemowych powěsćow, kótarež wopisanje a kod gadgeta definěruju.',
+ 'gadgets-uses' => 'Wužywa',
+ 'gadgets-export' => 'Eksportěrowaś',
+ 'gadgets-export-title' => 'Eksport specialneje funkcije',
+ 'gadgets-not-found' => 'Specialna funkcija "$1" njejo se namakała.',
+ 'gadgets-export-text' => 'Aby specialnu funkciju $1 eksportěrował, klikni na tłocašk "{{int:gadgets-export-download}}", składuj ześěgnjonu dataju, źi do Special:Import w celowem wikiju a nagraj ju. Pśidaj pótom slědujuce k bokoju MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Musyš trěbne pšawa na celowem wikiju měś (inkluziwnje pšawo za wobźěłowanje systemowych powěźeńkow) a import datajowych nagraśow musy znjemóžnjony byś.',
+ 'gadgets-export-download' => 'Ześěgnuś',
+);
+
+/** Greek (Ελληνικά)
+ * @author Badseed
+ * @author Consta
+ * @author Dead3y3
+ * @author Glavkos
+ * @author Lou
+ * @author ZaDiak
+ */
+$messages['el'] = array(
+ 'gadgets-desc' => 'ΕπιτÏέπει στους χÏήστες να διαλέξουν [[Special:Gadgets|CSS και JavaScript συσκευές]] στις [[Special:Preferences|Ï€Ïοτιμήσεις]] τους',
+ 'prefs-gadgets' => 'Ειδικές επιλογές',
+ 'gadgets-prefstext' => 'Ακολουθεί μια λίστα με ειδικές επιλογές που μποÏείτε να ενεÏγοποιήσειτε για το λογαÏιασμό σας.
+Αυτές οι επιλογές είναι βασισμένες κυÏίως σε JavaScript, οπότε αυτή θα Ï€Ïέπει να ενεÏγοποιηθεί στον φυλλομετÏητή σας για να δουλέψουν.
+Σημειώστε ότι οι επιλογές αυτές δεν θα έχουν καμία επίδÏαση σε αυτή τη σελίδα Ï€Ïοτιμήσεων.
+
+Επίσης σημειώστε ότι αυτές οι ειδικές επιλογές δεν είναι μέÏος του Î»Î¿Î³Î¹ÏƒÎ¼Î¹ÎºÎ¿Ï MediaWiki, και συνήθως αναπτÏσσονται και συντηÏοÏνται από χÏήστες στο τοπικό σας wiki.
+Οι τοπικοί διαχειÏιστές μποÏοÏν να επεξεÏγαστοÏν τις διαθέσιμες επιλογές χÏησιμοποιώντας τις σελίδες [[MediaWiki:Gadgets-definition]] και [[Special:Gadgets]].',
+ 'gadgets' => 'Ειδικές επιλογές',
+ 'gadgets-title' => 'Συσκευές',
+ 'gadgets-pagetext' => 'ΠαÏακάτω βÏίσκεται ένας κατάλογος με τις ειδικές λειτουÏγίες τις οποίες οι χÏήστες μποÏοÏν να ενεÏγοποιήσουν στη [[Special:Preferences|σελίδα Ï€Ïοτιμήσεών]] τους, όπως οÏίζεται από τη σελίδα [[MediaWiki:Gadgets-definition|οÏισμών]].<br />
+Αυτή η επισκόπηση παÏέχει εÏκολη Ï€Ïόσβαση στις σελίδες μηνυμάτων του συστήματος που οÏίζουν την πεÏιγÏαφή και τον κώδικα κάθε λειτουÏγίας.',
+ 'gadgets-uses' => 'ΧÏήσεις',
+ 'gadgets-required-rights' => 'Απαιτεί το {{PLURAL:$2|$1 right|following rights: $1}}.',
+ 'gadgets-export' => 'Εξαγωγή',
+ 'gadgets-export-title' => 'ΜικÏοεφαÏμογή εξαγωγής',
+ 'gadgets-not-found' => 'ΜικÏοεφαÏμογή "$1" δεν βÏέθηκε.',
+ 'gadgets-export-text' => 'Για την εξαγωγή της μικÏοεφαÏμογής (gadget) $1, κάντε κλικ στο κουμπί "{{int:gadgets-export-download}}", αποθηκεÏστε το αÏχείο που λάβατε, πάτε στο Special:Import του wiki Ï€ÏοοÏÎ¹ÏƒÎ¼Î¿Ï ÎºÎ±Î¹ ανεβάστε το. Μετά Ï€Ïοσθέστε τα παÏακάτω στη σελίδα οÏÎ¹ÏƒÎ¼Î¿Ï Ï„Ï‰Î½ MediaWiki:Gadgets:
+<pre>$2</pre>
+ΠÏέπει να έχετε τα κατάλληλα δικαιώματα στο wiki Ï€ÏοοÏÎ¹ÏƒÎ¼Î¿Ï (συμπεÏιλαμβανομένου και του δικαιώματος επεξεÏγασίας μηνυμάτων συστήματος) και να είναι ενεÏγοποιημένη η εισαγωγή αÏχείων Ï€Ïος ανέβασμα.',
+ 'gadgets-export-download' => 'Λήψη',
+);
+
+/** Esperanto (Esperanto)
+ * @author Yekrats
+ */
+$messages['eo'] = array(
+ 'gadgets-desc' => 'Permesas al uzantoj elekti proprajn [[Special:Gadgets|CSS kaj JavaScript aldonaĵojn]] en ties [[Special:Preferences|preferoj]].',
+ 'prefs-gadgets' => 'Aldonaĵoj',
+ 'gadgets-prefstext' => 'Jen listo de specialaj aldonaĵoj kiujn vi povas aktivigi por via uzulkonto.
+Plej multaj el ili baziÄas sur Ä´avaskriptoj, sekve Ä´avaskripto nepre estu aktivigita por ke ili funkciu.
+Notu ke tiuj aldonaĵoj ne efikos sur viaj preferoj.
+
+Notu ankaÅ­ ke ili ne estas parto de la programaro MediaWiki, kaj estas kutime evoluigitaj kaj prizorgataj de uzuloj sur via loka vikio.
+Lokaj administrantoj povas redakti liston de haveblaj aldonaĵoj per [[MediaWiki:Gadgets-definition|difinoj]] kaj [[Special:Gadgets|priskriboj]].',
+ 'gadgets' => 'Aldonaĵoj',
+ 'gadgets-title' => 'Aldonaĵoj',
+ 'gadgets-pagetext' => 'Jen listo da specialaj aldonaĵoj kiujn uzuloj povas aktivigi en [[Special:Preferences|siaj preferoj]], kiel difinite en [[MediaWiki:Gadgets-definition|difinoj]].
+Ĉi tiu superrigardo provizas facilan aliron al la sistemaj mesaÄoj kiuj difinas la priskribon kaj la kodon de ĉiuj aldonaĵoj.',
+ 'gadgets-uses' => 'uzas',
+ 'gadgets-required-rights' => 'Bezonas la {{PLURAL:$2|$1 rajton|jenajn rajtojn: $1}}.',
+ 'gadgets-default' => 'Ŝaltita por ĉiu defaŭlte.',
+ 'gadgets-export' => 'Eksporti',
+ 'gadgets-export-title' => 'Aldonaĵo-eksportado',
+ 'gadgets-not-found' => 'Aldonaĵo "$1" ne estis trovita.',
+ 'gadgets-export-text' => 'Eksporti la aldonaĵon $1, klaku butonon "{{int:gadgets-export-download}}", konservu la elÅutitan dosieron,
+iru Special:Import en cela vikio kaj alÅutu Äin. Poste aldonu la jenan signoĉenon al paÄo MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Vi nepras la taÅ­gajn rajtojn ĉe cela vikio (inkluzivante rajton redakti sistemajn mesaÄojn) kaj importebleco de dosieraj alÅutaĵojn devas esti Åaltita.',
+ 'gadgets-export-download' => 'ElÅuti',
+);
+
+/** Spanish (Español)
+ * @author Crazymadlover
+ * @author Muro de Aguas
+ * @author Remember the dot
+ * @author Sanbec
+ */
+$messages['es'] = array(
+ 'gadgets-desc' => 'Permite a los usuarios seleccionar [[Special:Gadgets|artilugios de CSS y JavaScript]] en sus [[Special:Preferences|preferencias]].',
+ 'prefs-gadgets' => 'Artilugios',
+ 'gadgets-prefstext' => "Debajo hay una lista de artilugios que puedes activar a tu gusto. Ten en cuenta que la mayoría de ellos utilizan JavaScript para funcionar, así que debes tenerlo activado en tu explorador si quieres que los artilugios que actives funcionen.
+
+Ten en cuenta también que estos complementos no forman parte del software MediaWiki, y están desarrollados por usuarios de este wiki.
+
+Los administradores pueden editar los artilugios que están disponibles en las páginas [[MediaWiki:Gadgets-definition]] y [[Special:Gadgets]].
+
+'''Los artilugios no tienen efecto en esta página.'''",
+ 'gadgets' => 'Artilugios',
+ 'gadgets-title' => 'Artilugios',
+ 'gadgets-pagetext' => 'Debajo hay una lista de artilugios especiales que los usuarios pueden activar en sus [[Special:Preferences|preferencias]], según la [[MediaWiki:Gadgets-definition|lista de definición de artilugios]]. Esta vista provee un acceso fácil a la páginas de mensajes del sistema que definen la descripción y el código de cada artilugio.',
+ 'gadgets-uses' => 'Usos',
+ 'gadgets-export' => 'Exportar',
+ 'gadgets-export-title' => 'Exportación de gadget',
+ 'gadgets-not-found' => 'Gadget "$1" no encontrado.',
+ 'gadgets-export-text' => 'Para exportar el gadget $1, haz click en el botón "{{int:gadgets-export-download}}", graba el archivo descargado,
+ve a Special:Importar un wiki de destino y subirlo. Luego agrega lo siguiente a MediaWiki:Gadgets-definition page:
+<pre>$2</pre>
+Debes tener permisos apropiados en el wiki de destino (incluyendo el derecho a editar mensajes de sistema) e importación desde archivos subidos debe estar habilitado.',
+ 'gadgets-export-download' => 'Descargar',
+);
+
+/** Estonian (Eesti)
+ * @author Avjoska
+ * @author Pikne
+ */
+$messages['et'] = array(
+ 'gadgets-desc' => 'Võimaldab kasutajal [[Special:Preferences|eelistuste leheküljel]] erinevaid [[Special:Gadgets|CSS- ja JavaScript-tööriistu]] valida.',
+ 'prefs-gadgets' => 'Tööriistad',
+ 'gadgets-prefstext' => 'Allpool on nimekiri eririistadest, mida kasutajad saavad oma konto jaoks sisse lülitada.
+Enamasti põhinevad need riistad JavaScriptil, seega peab nende töötamiseks sinu veebilehitsejas JavaScript lubatud olema.
+Pane tähele, et need riistad ei mõjuta kuidagi seda eelistuste lehekülge.
+
+Samuti pane tähele, et need eririistad ei ole osa MediaWiki tarkvarast ja on tavaliselt arendatud ja ülalpeetud sinu kohalikus vikis.
+Kohalikud administraatorid saavad olemasolevaid riistu muuta [[MediaWiki:Gadgets-definition|määratluste]] ja [[Special:Gadgets|kirjelduste]] abil.',
+ 'gadgets' => 'Tööriistad',
+ 'gadgets-title' => 'Tööriistad',
+ 'gadgets-pagetext' => 'Allpool on nimekiri eririistadest, mida kasutajad saavad oma [[Special:Preferences|eelistuste leheküljel]] sisse lülitada, nii nagu [[MediaWiki:Gadgets-definition|määratlustes]] määratletud. See ülevaade võimaldab kergesti ligi pääseda süsteemi sõnumilehekülgedele, milles on iga riista kirjeldus ja kood.',
+ 'gadgets-uses' => 'Kasutab',
+ 'gadgets-required-rights' => 'Tarvis on {{PLURAL:$2|järgmist õigust|järgmisi õigusi}}: $1',
+ 'gadgets-default' => 'Vaikimisi kõigile lubatud.',
+ 'gadgets-export' => 'Ekspordi',
+ 'gadgets-export-title' => 'Tööriista eksportimine',
+ 'gadgets-not-found' => 'Tööriista "$1" ei leidu.',
+ 'gadgets-export-text' => 'Klõpsa nuppu "{{int:gadgets-export-download}}", et eksportida tööriist $1; salvesta allalaaditav fail;
+mine sihtvikis leheküljele Special:Import ja laadi see üles. Seejärel lisa järgnev leheküljele MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Sul peavad olema sihtvikis vajalikud õigused (kaasa arvatud õigus redigeerida süsteemi sõnumeid) ja üleslaaditavate failide kaudu importimine peab olema lubatud.',
+ 'gadgets-export-download' => 'Laadi alla',
+);
+
+/** Basque (Euskara)
+ * @author An13sa
+ * @author Inorbez
+ * @author Unai Fdz. de Betoño
+ */
+$messages['eu'] = array(
+ 'gadgets-desc' => 'Lankideek [[Special:Gadgets|CSS eta JavaScript gadgetak]] aukeratu ditzazkete beraien [[Special:Preferences|hobespenetan]]',
+ 'prefs-gadgets' => 'Gadgetak',
+ 'gadgets-prefstext' => 'Zure kontuan erabili ditzakezun gadgeten zerrenda bat agertzen da behean.
+JavaScript-en oinarritzen dira gehienbat gadget hauek; beraz, funtzionatzeko zure nabigatzailean JavaScript gaituta egon behar da.
+Kontuan izan gadget hauek ez dutela eraginik izango hobespen orri honetan.
+
+Kontuan izan baita gadget berezi hauek ez direla MediaWiki softwarearen zati bat. Gehienetan guneko wikietako garatzaileek sortu eta mantentzen dituzte.
+Administratzaileek [[MediaWiki:Gadgets-definition|definizioak]] eta [[Special:Gadgets|deskribapenak]] erabiliz aldatu dezakete eskuragarri dauden gadgetak.',
+ 'gadgets' => 'Gadgetak',
+ 'gadgets-title' => 'Gadgetak',
+ 'gadgets-pagetext' => 'Erabiltzaile bakoitzak bere [[Special:Preferences|hobespen orrian]] erabili ditzakeen gadgeten zerrenda bat agertzen da behean, [[MediaWiki:Gadgets-definition|definizioek]] zehaztu bezala.
+Ikuspegi orokor honek gadget bakoitza definitzen duen deskribapen eta kode orrietarako lotura errazak eskaintzen ditu.',
+ 'gadgets-uses' => 'Erabilerak',
+);
+
+/** Extremaduran (Estremeñu)
+ * @author Better
+ */
+$messages['ext'] = array(
+ 'gadgets-uses' => 'Usus',
+);
+
+/** Persian (Ùارسی)
+ * @author Bersam
+ * @author Ebraminio
+ * @author Huji
+ * @author Ladsgroup
+ * @author Wayiran
+ */
+$messages['fa'] = array(
+ 'gadgets-desc' => 'به کاربرها امکان انتخاب ابزارهای شخصی CSS Ùˆ JavaScript را از طریق صÙحهٔ [[Special:Preferences|ترجیحات]] می‌دهد',
+ 'prefs-gadgets' => 'ابزارها',
+ 'gadgets-prefstext' => 'در زیر Ùهرستی از ابزارهای ویژه‌ای Ú©Ù‡ می‌توانید برای حساب کاربری‌تان Ùعال کنید را می‌بینید.
+این ابزارها در بیشتر موارد مبتنی بر جاوااسکریپت هستند، پس برای استÙاده از آن‌ها باید جاوااسکرپیت را در مرورگر خودتان Ùعال کنید.
+توجه کنید Ú©Ù‡ این ابزارها نمی‌توانند صÙحهٔ ترجیحات را تغییر دهند.
+
+دقت داشته باشد Ú©Ù‡ این ابزارها جزئی از نرم‌اÙزار مدیاویکی نیستند، Ùˆ معمولاً توسط کاربران هر ویکی ساخته Ùˆ نگهداری می‌شوند.
+مدیران هر ویکی می‌توانند با استÙاده از صÙحه‌های [[MediaWiki:Gadgets-definition|تعاریÙ]] Ùˆ [[Special:Gadgets|توضیحات]] به ویرایش ابزارها بپردازند.',
+ 'gadgets' => 'ابزارها',
+ 'gadgets-title' => 'ابزارها',
+ 'gadgets-pagetext' => 'در زیر Ùهرستی از ابزارهای ویژه‌ای Ú©Ù‡ کاربران می‌توانند از طریق [[Special:Preferences|صÙحهٔ ترجیحاتشان]] Ùعال کنند می‌بینید، Ú©Ù‡ مطابق آن Ú†Ù‡ است Ú©Ù‡ در صÙحهٔ [[MediaWiki:Gadgets-definition|تعاریÙ]] تعری٠شده‌است.
+این خلاصه Ú©Ù…Ú© می‌کند Ú©Ù‡ به صÙحه‌های پیغام سیستمی Ú©Ù‡ توضیحات Ùˆ کد هر ابزار را شامل می‌شوند به راحتی دست پیدا کنید.',
+ 'gadgets-uses' => 'برنامه',
+ 'gadgets-required-rights' => 'به {{PLURAL:|حق $1|حق‌های روبرو: $2 $1}} نیاز است.',
+ 'gadgets-default' => 'به‌طور پیش‌Ùرض برای همه Ùعال است.',
+ 'gadgets-export' => 'برون‌بری',
+ 'gadgets-export-title' => 'برون‌بری ابزار',
+ 'gadgets-not-found' => 'ابزار «$1» یاÙت نشد.',
+ 'gadgets-export-text' => 'برای برون‌بری ابزار $1ØŒ بر دکمهٔ «{{int:gadgets-export-download}}» کلیک کنید، پروندهٔ بارگیری‌شده را ذخیره کنید، به ویژه:درون‌ریزی در ویکی مقصد بروید Ùˆ بارگذاری‌اش کنید. سپس این را به صÙحهٔ مدیاویکی:Gadgets-definition بیÙزایید:
+<pre>$2</pre>
+لازم است تا در ویکی مقصد دسترسی‌های مناسب (شامل حق ویرایش پیغام‌های سامانه) را داشته باشید Ùˆ درون‌ریزی از بارگذاری‌های پرونده باید Ùعال شده باشد.',
+ 'gadgets-export-download' => 'بارگیری',
+);
+
+/** Finnish (Suomi)
+ * @author Crt
+ * @author Nike
+ */
+$messages['fi'] = array(
+ 'gadgets-desc' => 'Tarjoaa mahdollisuuden käyttäjille ottaa käyttöön [[Special:Gadgets|määritettyjä CSS- ja JavaScript-pienoisohjelmia]] omista [[Special:Preferences|asetuksistaan]].',
+ 'prefs-gadgets' => 'Pienoisohjelmat',
+ 'gadgets-prefstext' => 'Alla on lista pienoisohjelmista, joita käyttäjät voivat ottaa käyttöön. Nämä pienoisohjelmat pohjautuvat usein JavaScriptiin, joten toimiakseen selaimessasi pitää olla JavaScript käytössä.
+
+Huomio myös, että nämä pienoisohjelmat eivät ole osa MediaWiki-ohjelmistoa – tavallisesti niitä kehittävät ja ylläpitävät paikallisen wikin käyttäjät. Paikalliset ylläpitäjät voivat muokata saatavilla olevia pienoisohjelmia [[MediaWiki:Gadgets-definition|määrityssivulla]] ja [[Special:Gadgets|kuvauksista]].',
+ 'gadgets' => 'Pienoisohjelmat',
+ 'gadgets-title' => 'Pienoisohjelmat',
+ 'gadgets-pagetext' => 'Alla on lista pienoisohjelmista, joita käyttäjät voivat ottaa käyttöön [[Special:Preferences|asetussivulta]]. Pienoisohjelmat määritetään [[MediaWiki:Gadgets-definition|täältä]].
+
+Tämä lista antaa helpon pääsyn järjestelmäviesteihin, jotka sisältävät pienoisohjelmien kuvauksen ja koodin.',
+ 'gadgets-uses' => 'Käyttää',
+ 'gadgets-export' => 'Vie',
+ 'gadgets-export-title' => 'Pienoisohjelmien vienti',
+ 'gadgets-not-found' => 'Pienoisohjelmaa $1 ei löytynyt.',
+ 'gadgets-export-text' => 'Jos haluat kopioida pienoisohjelman $1 omaan wikiisi, toimi seuraavasti: Napsauta »{{int:gadgets-export-download}}» ja tallenna tiedosto. Mene oman wikisi sivulle Special:Import ja syötä tallennettu tiedosto. Lisää seuraava koodinpätkä sivulle MediaWiki:Gadgets-definition omassa wikissäsi:
+<pre>$2</pre>
+Sinulla pitää olla tarvittavat oikeudet omassa wikissäsi, kuten järjestelmäviestien muokkaus ja sivujen tuonti tiedostoja tallentamalla.',
+ 'gadgets-export-download' => 'Lataa',
+);
+
+/** French (Français)
+ * @author Delhovlyn
+ * @author Dr Brains
+ * @author Grondin
+ * @author IAlex
+ * @author Meno25
+ * @author Peter17
+ * @author PieRRoMaN
+ * @author Sherbrooke
+ * @author Urhixidur
+ * @author Zetud
+ */
+$messages['fr'] = array(
+ 'gadgets-desc' => 'Permet aux utilisateurs de choisir des [[Special:Gadgets|gadgets CSS et Javascripts]] personnalisés dans leurs [[Special:Preferences|préférences]]',
+ 'prefs-gadgets' => 'Gadgets',
+ 'gadgets-prefstext' => "Voici une liste de gadgets que vous pouvez activer pour votre compte.
+Ils font appel à JavaScript, lequel doit donc être activé sur votre navigateur Web pour qu'ils fonctionnent.
+Notez que ces gadgets n'ont aucun effet sur cette page des préférences.
+
+Notez aussi que ces gadgets spéciaux ne font nullement partie du logiciel MediaWiki, et qu'ils sont généralement développés et maintenus par des utilisateurs sur votre wiki local.
+Les administrateurs locaux peuvent modifier les gadgets disponibles en utilisant les [[MediaWiki:Gadgets-definition|définitions]] et les [[Special:Gadgets|descriptions]].",
+ 'gadgets' => 'Gadgets',
+ 'gadgets-title' => 'Gadgets',
+ 'gadgets-pagetext' => "Voici une liste de gadgets que les utilisateurs peuvent activer dans leur [[Special:Preferences|page de préférences]], tel que défini dans les [[MediaWiki:Gadgets-definition|définitions]].
+Cette vue d'ensemble donne un accès rapide aux pages de messages système qui définissent la description et le code de chaque gadget.",
+ 'gadgets-uses' => 'Utilise',
+ 'gadgets-required-rights' => 'Requiert {{PLURAL:$2|le droit $1|les droits suivants : $1}}.',
+ 'gadgets-default' => 'Activé pour tout le monde par défaut.',
+ 'gadgets-export' => 'Exporter',
+ 'gadgets-export-title' => 'Export de gadget',
+ 'gadgets-not-found' => 'Gadget « $1 » non trouvé.',
+ 'gadgets-export-text' => 'Pour exporter le gadget $1, cliquer sur le bouton « {{int:gadgets-export-download}} », enregistrer le fichier téléchargé puis aller sur la page Special:Import du wiki de destination et l’importer. Ajouter ensuite le texte suivant dans la page MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Il est nécessaire de disposer des droits correspondants sur le wiki de destination (y compris celui de modifier les messages système) et l’import depuis des fichiers doit être activé.',
+ 'gadgets-export-download' => 'Télécharger',
+);
+
+/** Franco-Provençal (Arpetan)
+ * @author ChrisPtDe
+ */
+$messages['frp'] = array(
+ 'gadgets-desc' => 'Pèrmèt ux utilisators de chouèsir des [[Special:Gadgets|outils CSS et JavaScript]] pèrsonalisâs dens lors [[Special:Preferences|prèferences]].',
+ 'prefs-gadgets' => 'Outils',
+ 'gadgets-prefstext' => 'Vê-que una lista d’outils que vos pouede activar por voutron compto.
+Font apèl a JavaScript, que dêt vêr étre activâ sur voutron navigator por que fonccionont.
+Notâd que celos outils ont gins de rèsultat sur ceta pâge de prèferences.
+
+Notâd asse-ben que celos outils spèciâls sont pas du tot avouéc la programeria MediaWiki, et pués que sont en g·ènèral dèvelopâs et mantegnus per des utilisators sur voutron vouiqui local.
+Los administrators locals pôvont changiér los outils disponiblos en utilisent les [[MediaWiki:Gadgets-definition|dèfinicions]] et les [[Special:Gadgets|dèscripcions]].',
+ 'gadgets' => 'Outils',
+ 'gadgets-title' => 'Outils',
+ 'gadgets-pagetext' => 'Vê-que una lista d’outils que los utilisators pôvont activar dens lor [[Special:Preferences|pâge de prèferences]], coment dèfeni dens les [[MediaWiki:Gadgets-definition|dèfinicions]].
+Ceti apèrçu balye un accès vito fêt a les pâges de mèssâjos sistèmo que dèfenéssont la dèscripcion et lo code de châque outil.',
+ 'gadgets-uses' => 'Utilise',
+ 'gadgets-export' => 'Èxportacion',
+ 'gadgets-export-title' => 'Èxportacion d’outil',
+ 'gadgets-not-found' => 'Outil « $1 » pas trovâ.',
+ 'gadgets-export-download' => 'Tèlèchargiér',
+);
+
+/** Galician (Galego)
+ * @author Alma
+ * @author Toliño
+ */
+$messages['gl'] = array(
+ 'gadgets-desc' => 'Deixa que os usuarios seleccionen [[Special:Gadgets|trebellos CSS e JavaScript]] nas súas [[Special:Preferences|preferencias]]',
+ 'prefs-gadgets' => 'Trebellos',
+ 'gadgets-prefstext' => 'Embaixo hai unha lista de trebellos especiais que pode activar para a súa conta.
+A maioría destes trebellos baséanse no JavaScript, así que ten que ter o JavaScript activado no seu navegador para que funcionen.
+Teña en conta que estes trebellos non funcionarán nesta páxina de preferencias.
+
+Teña tamén en conta que estes trebellos especiais non son parte do software de MediaWiki e que os crean e manteñen os usuarios no seu wiki local. Os administradores locais poden editar os trebellos dispoñíbeis mediante [[MediaWiki:Gadgets-definition|definicións]] e [[Special:Gadgets|descricións]].',
+ 'gadgets' => 'Trebellos',
+ 'gadgets-title' => 'Trebellos',
+ 'gadgets-pagetext' => 'Embaixo hai unha lista dos trebellos especiais que os usuarios poden habilitar na súa páxina de preferencias, tal e como se describe nas [[MediaWiki:Gadgets-definition|definicións]].
+Este panorama xeral é de doado acceso ao sistema das páxinas de mensaxes que define cada descrición e código dos trebellos.',
+ 'gadgets-uses' => 'Usa',
+ 'gadgets-required-rights' => '{{PLURAL:$2|Cómpre dereitos de $1|Cómpren os seguintes dereitos: $1}}.',
+ 'gadgets-default' => 'Activar para todos por defecto.',
+ 'gadgets-export' => 'Exportar',
+ 'gadgets-export-title' => 'Exportación de trebellos',
+ 'gadgets-not-found' => 'Non se atopou o trebello "$1".',
+ 'gadgets-export-text' => 'Para exportar o trebello $1, prema sobre o botón "{{int:gadgets-export-download}}", garde o ficheiro descargado,
+vaia á páxina especial Special:Import do wiki de destino e cárgueo. A continuación, engada o seguinte texto na páxina MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Debe ter os permisos axeitados no wiki de destino (incluído o dereito de modificar as mensaxes do sistema) e a importación desde a carga de ficheiros debe estar activada.',
+ 'gadgets-export-download' => 'Descargar',
+);
+
+/** Ancient Greek (ἈÏχαία ἑλληνικὴ)
+ * @author Omnipaedista
+ */
+$messages['grc'] = array(
+ 'prefs-gadgets' => 'Μηχανήματα',
+ 'gadgets' => 'Μηχανήματα',
+ 'gadgets-title' => 'Μηχανήματα',
+ 'gadgets-uses' => 'ΧÏήσεις',
+);
+
+/** Swiss German (Alemannisch)
+ * @author Als-Holder
+ */
+$messages['gsw'] = array(
+ 'gadgets-desc' => 'Macht s Benutzer megli, in ihre [[Special:Preferences|persenlige Yystellige]] vordefinierti [[Special:Gadgets|CSS- und JavaScript-Gadgets]] z aktiviere',
+ 'prefs-gadgets' => 'Gadgets',
+ 'gadgets-prefstext' => 'Unter git s e Lischt vu spezielle Gadgets, wu for jede Benutzer chenne aktiviert wäre.
+D Gadgets basiere zmeischt uf JavaScript, wäge däm muess JavaScript im Browser aktiviert syy, ass si funktioniere.
+D Gadgets funktionieren aber nit uf däre Syte mit persenlige Yystellige.
+
+Mer muess au Acht gee, ass die Gadgets im Allgmeinen nit Teil vu MediaWiki sin, sundern meischt vu
+Benutzer vum lokale Wikis entwicklet un gwartet wäre. Lokali Wiki-Ammanne chenne d Lischt vu dr verfiegbare Gadgets iber d Syte [[MediaWiki:Gadgets-definition]] un [[Special:Gadgets]] bearbeite',
+ 'gadgets' => 'Gadgets',
+ 'gadgets-title' => 'Gadgets',
+ 'gadgets-pagetext' => 'Lischt vu spezielle Gadgets, wu fir jede Benutzer in syyne [[Special:Preferences|persenlige Yystellige]] verfiegbar sin, wie s [[MediaWiki:Gadgets-definition|definiert]] isch.
+Die Ibersicht bietet e direkte Zuegang zue dr Syschtemnochrichte, wu d Bschryybig un dr Programmcode vu jedem Gadget din sin.',
+ 'gadgets-uses' => 'Bruucht',
+ 'gadgets-required-rights' => 'Brucht {{PLURAL:$2|des Rächt:|die Rächt:}} $1',
+ 'gadgets-default' => 'Fir alli standardmäßig aktiviert.',
+ 'gadgets-export' => 'Exportiere',
+ 'gadgets-export-title' => 'Hälferli exportiere',
+ 'gadgets-not-found' => 'Hälferli „$1“ isch nit gfunde wore.',
+ 'gadgets-export-text' => 'Go s Hälferli $1 exportiere, klick uf d Schaltflechi „{{int:gadgets-export-download}}“ un tue di abeglade Datei spychere. Gang derno uf d Spezialsyte Spezial:Import uf em Wiki, wu fir dr Import vorgsäh isch, un lad d Datei ufe. Derno fieg dää Text in d Syte MediaWiki:Gadgets-definition yy:
+<pre>$2</pre>
+Du muesch iber di notwändige Rächt uf em Wiki verfiege, wu fir dr Import vorgsäh isch (mitsamt em Rächt MediaWiki-Syschtemnochrichte z bearbeite). Derzue mueß dr Import vu Datei-Upload aktiviert syy.',
+ 'gadgets-export-download' => 'Abelade',
+);
+
+/** Gujarati (ગà«àªœàª°àª¾àª¤à«€)
+ * @author Dsvyas
+ */
+$messages['gu'] = array(
+ 'prefs-gadgets' => 'યંતà«àª°à«‹/સાધનો',
+ 'gadgets-prefstext' => "નીચે àªàªµàª¾ વિશેષ સાધનોની યાદી નીચે આપી છે જે તમે તમારા ખાતામાં સકà«àª°àª¿àª¯ કરી શકો છો.
+આ સાધનો મહદૠઅંશે જાવા સà«àª•à«àª°àª¿àªªà«àªŸ આધારિત છે માટે તે યોગà«àª¯ રીતે કામ કરે તે માટે આપના બà«àª°àª¾àª‰àªàª°àª®àª¾àª‚ જાવા સà«àª•à«àª°àª¿àªªà«àªŸ સકà«àª°àª¿àª¯ (àªàª¨à«‡àª¬àª²) કરેલી હોવી જરૂરી છે.
+ઠબાબત નોંધમાં લેશો કે આ સાધનોની અસર તમારા 'મારી પસંદ'ના પાના ઉપર થશે નહી.
+
+ઠવાત પણ ધà«àª¯àª¾àª¨àª®àª¾àª‚ રાખશો કે આ વિશેષ સાધનો મિડિયાવિકિ સૉફà«àªŸàªµà«‡àª°àª¨à«‹ ભાગ નથી, સામાનà«àª¯ રીતે તે આપના સà«àª¥àª¾àª¨à«€àª• વિકિના સભà«àª¯à«‹ દà«àªµàª¾àª°àª¾ વિકસાવવામાં આવà«àª¯àª¾ હોય છે અને તેઓજ તેનà«àª‚ ધà«àª¯àª¾àª¨ રાખે છે. સà«àª¥àª¾àª¨àª¿àª• પà«àª°àª¬àª‚ધકો [[MediaWiki:Gadgets-definition|વà«àª¯àª¾àª–à«àª¯àª¾]] અને [[Special:Gadgets|વરà«àª£àª¨]]નો ઉપયોગ કરીને આ સાધનોમાં ફેરફાર કરી શકે છે.",
+ 'gadgets' => 'યંતà«àª°à«‹/સાધનો',
+ 'gadgets-title' => 'યંતà«àª°à«‹/સાધનો',
+ 'gadgets-pagetext' => 'નીચે àªàªµàª¾ વિશેષ સાધનોની યાદી આપી છે જેમાથી જરૂરીયાત પà«àª°àª®àª¾àª£à«‡àª¨àª¾ સાધનો સભà«àª¯ તેમના [[Special:Preferences|મારી પસંદ]] પાના ઉપર સકà«àª°àª¿àª¯ કરી શકે છે ([[MediaWiki:Gadgets-definition|વà«àª¯àª¾àª–à«àª¯àª¾]]મા વરà«àª£àªµà«àª¯àª¾ મà«àªœàª¬).
+
+આ નિરિકà«àª·àª£àª¥à«€ સહેલાઇથી સિસà«àªŸàª® સંદેશા વાળા પાના ખોલી શકશો જà«àª¯àª¾àª‚ દરેક સાધનનà«àª‚ વરà«àª£àª¨ અને તેનો કોડ આપેલો છે.',
+ 'gadgets-uses' => 'ઉપયોગો',
+);
+
+/** Hebrew (עברית)
+ * @author Amire80
+ * @author Rotem Liss
+ * @author YaronSh
+ */
+$messages['he'] = array(
+ 'gadgets-desc' => '×פשרות ×œ×ž×©×ª×ž×©×™× ×œ×‘×—×•×¨ [[Special:Gadgets|×¡×§×¨×™×¤×˜×™× ×‘×§×•×“ JavaScript וסגנונות בקוד CSS]] ב[[Special:Preferences|העדפות]] שלה×',
+ 'prefs-gadgets' => 'סקריפטי×',
+ 'gadgets-prefstext' => 'להלן רשימה של ×¡×§×¨×™×¤×˜×™× ×©×ª×•×›×œ×• להתקין בחשבון שלכ×.
+×”×¡×§×¨×™×¤×˜×™× ×ž×‘×•×¡×¡×™× ×‘×¨×•×‘× ×¢×œ שפת JavaScript, ולכן יש ל×פשר ×ת הפעלתה בדפדפן כדי ×©×”× ×™×¢×‘×“×•.
+שימו לב ×©×œ× ×ª×”×™×” ×œ×¡×§×¨×™×¤×˜×™× ×›×œ השפעה על דף ההעדפות ×”×–×”.
+
+כמו כן, ×”×¡×§×¨×™×¤×˜×™× ××™× × ×—×œ×§ מתוכנת מדיה־ויקי, ×•×”× ×‘×“×¨×š כלל ×ž×¤×•×ª×—×™× ×•×ž×ª×•×—×–×§×™× ×¢×œ ידי ×ž×©×ª×ž×©×™× ×‘×•×•×™×§×™ המקומי.
+מפעילי המערכת ×™×›×•×œ×™× ×œ×¢×¨×•×š ×ת ב[[MediaWiki:Gadgets-definition|דף ההגדרות]] ו[[Special:Gadgets|התי×ורי×]] של הסקריפטי×.',
+ 'gadgets' => 'סקריפטי×',
+ 'gadgets-title' => 'סקריפטי×',
+ 'gadgets-pagetext' => 'זוהי רשימה של ×¡×§×¨×™×¤×˜×™× ×©×ž×©×ª×ž×©×™× ×™×›×•×œ×™× ×œ×”×ª×§×™×Ÿ ב×מצעות [[Special:Preferences|דף ההעדפות]] שלה×, כפי שהוגדרו ב[[MediaWiki:Gadgets-definition|הודעת המערכת המת×ימה]].
+מכ×ן ניתן לגשת בקלות לדפי הודעות המערכת ×©×ž×’×“×™×¨×™× ×ת התי×ור והקוד של כל סקריפט.',
+ 'gadgets-uses' => 'משתמש בדפי×',
+ 'gadgets-required-rights' => '{{PLURAL:$2|נדרשת ההרש××” $1|נדרשות ההרש×ות $1}}.',
+ 'gadgets-default' => 'מופעל ×œ×›×•×œ× ×œ×¤×™ בררת מחדל.',
+ 'gadgets-export' => 'יצו×',
+ 'gadgets-export-title' => '×™×¦×•× ×’×דג׳טי×',
+ 'gadgets-not-found' => '×”×’×דג׳ט "$1" ×œ× × ×ž×¦×.',
+ 'gadgets-export-text' => 'כדי ×œ×™×™×¦× ×ת ×”×’×דג׳ט $1, יש ללחוץ על הלחצן "{{int:gadgets-export-download}}", לשמור ×ת הקובץ שהתקבל,
+לגשת ×ל Special:Import ב×תר הוויקי המיועד ולהעלות ×ותו. ו××– להוסיף ×ת ×”×“×‘×¨×™× ×”×‘××™× ×œ×“×£ MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+עליך להיות ×¢× ×”×¨×©×ות מת×ימות ב×תר הוויקי המיועד (לרבות הרש×ות לעריכת הודעות מערכת) וה×פשרות ×œ×™×™×‘×•× ×ž×§×•×‘×¥ חייבת להיות מופעלת.',
+ 'gadgets-export-download' => 'הורדה',
+);
+
+/** Hindi (हिनà¥à¤¦à¥€)
+ * @author Kaustubh
+ * @author Shyam
+ */
+$messages['hi'] = array(
+ 'gadgets-desc' => 'सदसà¥à¤¯à¥‹à¤‚ को उनकी [[Special:Preferences|वरीयताओं]] में से चà¥à¤¨à¤¿à¤‚दा [[Special:Gadgets|CSS और जावालिपि जà¥à¤—त]] चà¥à¤¨à¤¨à¥‡ दो।',
+ 'prefs-gadgets' => 'उपकरण (गैज़ेट)',
+ 'gadgets-prefstext' => 'नीचे विशेष जà¥à¤—तों की सूची दी गई है, जो कि आप अपने खाते में सकà¥à¤·à¤® कर सकते हैं।
+ये जà¥à¤—त अधिकांशत: जावालिपि पर आधारित है, इसलिठइनà¥à¤¹à¥‡à¤‚ कारà¥à¤¯à¤¶à¥€à¤² कराने के लिठआप अपने बà¥à¤°à¤¾à¤‰à¤œà¤° में जावालिपि को सकà¥à¤·à¤® कर लें।
+धà¥à¤¯à¤¾à¤¨ दें कि इन जà¥à¤—तों से आपके वरीयता पृषà¥à¤  पर कोई असर नहीं होगा।
+
+यह भी धà¥à¤¯à¤¾à¤¨ दें कि ये विशेष जà¥à¤—त मीडियाविकी सॉफà¥à¤Ÿà¤µà¥‡à¤¯à¤° का भाग नहीं हैं, और पà¥à¤°à¤¾à¤¯: सदसà¥à¤¯à¥‹à¤‚ दà¥à¤µà¤¾à¤°à¤¾ उनकी सà¥à¤¥à¤¾à¤¨à¥€à¤¯ विकी पर विकसित à¤à¤µà¤‚ अनà¥à¤°à¤•à¥à¤·à¤¿à¤¤ किठजाते हैं।
+सà¥à¤¥à¤¾à¤¨à¥€à¤¯ पà¥à¤°à¤¶à¤¾à¤¸à¤• [[MediaWiki:Gadgets-definition]] à¤à¤µà¤‚ [[Special:Gadgets]] पà¥à¤°à¤¯à¥‹à¤— करके उपलबà¥à¤§ जà¥à¤—तों को संपादित कर सकते हैं।',
+ 'gadgets' => 'उपकरण',
+ 'gadgets-title' => 'उपकरण',
+ 'gadgets-pagetext' => 'नीचे विशेष जà¥à¤—तों कि सूची दी गई है, जिनà¥à¤¹à¥‡à¤‚ सदसà¥à¤¯ [[MediaWiki:Gadgets-definition]] की परिभाषा के अनà¥à¤¸à¤¾à¤°, अपने वरीयता पृषà¥à¤  में सकà¥à¤·à¤® कर सकते हैं।
+यह समीकà¥à¤·à¤¾ तंतà¥à¤° संदेश पृषà¥à¤ à¥‹à¤‚ तक पहà¥à¤à¤šà¤¨à¥‡ का आसान मारà¥à¤— पà¥à¤°à¤¦à¤¾à¤¨ करती है, जो की पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• जà¥à¤—त के वरà¥à¤£à¤¨ à¤à¤µà¤‚ कूट भाषा को परिभाषित करते हैं।',
+ 'gadgets-uses' => 'उपयोग',
+);
+
+/** Croatian (Hrvatski)
+ * @author Anton008
+ * @author Dalibor Bosits
+ * @author Ex13
+ * @author SpeedyGonsales
+ */
+$messages['hr'] = array(
+ 'gadgets-desc' => 'Omogućava suradnicama biranje osobnih [[Special:Gadgets|CSS i JavaScript dodataka]] u svojim [[Special:Preferences|postavkama]]',
+ 'prefs-gadgets' => 'Dodaci',
+ 'gadgets-prefstext' => 'Slijedi popis posebnih dodataka koje možete omogućiti.
+One su većinom napisane u JavaScriptu, stoga JavaScript mora biti omogućen u vašem web pregledniku da bi dodaci radili.
+Nijedan dodatak nema uÄinka na ovu stranicu s postavkama.
+
+Ovi posebni dodaci nisu dio MediaWiki softvera, najÄešće su razvijane i održavane od suradnika na lokalnom wikiju.
+Lokalni administratori mogu uređivati dostupne dodatke putem [[MediaWiki:Gadgets-definition|definicija]] i [[Special:Gadgets|opisa]].',
+ 'gadgets' => 'Dodaci',
+ 'gadgets-title' => 'Dodaci',
+ 'gadgets-pagetext' => 'Slijedi popis posebnih JavaScript dodataka koje suradnici mogu omogućiti u svojim [[Special:Preferences|postavkama]], kako je definirano stranicom [[MediaWiki:Gadgets-definition|definicija]].
+Ovaj pregled omogućava lak pristup porukama sustava koje opisuju dodatke i njihov kod.',
+ 'gadgets-uses' => 'Koristi',
+ 'gadgets-required-rights' => 'Zahtijeva {{PLURAL:$2|$1 pravo|sljedeća prava: $1}}.',
+ 'gadgets-export' => 'Izvezi',
+ 'gadgets-export-title' => "Izvoz JS skripti (''gadgets'')",
+ 'gadgets-not-found' => "''Gadget'' \"\$1\" nije pronađen.",
+ 'gadgets-export-text' => 'Za izvoz $1 JavaScript pomoćne skripte (\'\'gadgeta\'\'), kliknite na "{{int:gadgets-export-download}}" gumb, snimiti preuzetu datoteku,
+zatim idete na Special:Import na odredišnoj wiki i postavite skriptu tamo. Zatim dodajte sljedeće na "MediaWiki:Gadgets-definition stranici:
+<pre>$2</pre>
+Morate imati odgovarajuća prava na odrediÅ¡noj wiki (ukljuÄujući i pravo na ureÄ‘ivanje sistemskih poruka) i uvoz iz snimljenih datoteka mora biti omogućen.',
+ 'gadgets-export-download' => 'Preuzmi',
+);
+
+/** Upper Sorbian (Hornjoserbsce)
+ * @author Michawiki
+ */
+$messages['hsb'] = array(
+ 'gadgets-desc' => 'Zmóžnja wužiwarjam swójske [[Special:Gadgets|přisłuški za CSS a JavaScript]] w jich [[Special:Preferences|nastajenjach]] wubrać',
+ 'prefs-gadgets' => 'Specialne funkcije',
+ 'gadgets-prefstext' => 'Deleka je lisćina specialnych funkcijow, kotrež móžeš za swoje wužiwarske konto zmóžnić. Tute specialne funkcije zwjetša na JavaScripće bazěruja, tohodla dyrbi JavaScript we wobhladowaku zmóžnjeny być, zo bychu fungowali.
+Wobkedźbuj tež, zo so tute specialne funkcije na tutu stronu z wosobinskimi nastajenjemi njewuskutkuja.
+
+Nimo toho wobkedźbuj, zo tute specialne funkcije dźěl softwary MediaWiki njejsu a so zwjetša wot wužiwarjow na jich lokalnym wikiju wuwiwaja a wothladuja. Lokalni administratorojo móža lisćinu k dispoziciji stejacych specialnych funkcijow z pomocu [[MediaWiki:Gadgets-definition|definicijow]] a [[Special:Gadgets|wopisanjow]] wobdźěłać.',
+ 'gadgets' => 'Specialne funkcije',
+ 'gadgets-title' => 'Specialne funkcije',
+ 'gadgets-pagetext' => 'Deleka je lisćina specialnych funkcijow, kotrež wužiwarjo móža na swojej [[Special:Preferences|stronje nastajenjow]] zmóžnić, kaž přez [[MediaWiki:Gadgets-definition|definicije]] definowane.
+Tutón přehlad skići lochki přistup k systemowym zdźělenkam, kotrež wopisanje a kod kóždeje specialneje funkcije definuja.',
+ 'gadgets-uses' => 'Wužiwa',
+ 'gadgets-export' => 'Eksportować',
+ 'gadgets-export-title' => 'Specialnu funkciju eksportować',
+ 'gadgets-not-found' => 'Specialna funkcija "$1" njeje so namakała.',
+ 'gadgets-export-text' => 'Zo by specialnu funkciju $1 eksportowaÅ‚, klikÅ„ na tłóÄatko "{{int:gadgets-export-download}}", skÅ‚aduj sćehnjenu dataju, dźi do Special:Import w cilowym wikiju a nahraj ju. PÅ™idaj potom slÄ›dowace k MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Dyrbiš trěbne prawa na cilowym wikiju měć (inkluziwnje prawo systemowe powěsće wobdźěłać) a a import datajowych nahraćow dyrbi zmóžnjeny być.',
+ 'gadgets-export-download' => 'Sćahnyć',
+);
+
+/** Hungarian (Magyar)
+ * @author BáthoryPéter
+ * @author Dani
+ * @author Tgr
+ */
+$messages['hu'] = array(
+ 'gadgets-desc' => 'A felhasználók saját [[Special:Gadgets|CSS és JavaScript eszközöket]] választhatnak ki a [[Special:Preferences|beállításaiknál]]',
+ 'prefs-gadgets' => 'Segédeszközök',
+ 'gadgets-prefstext' => 'Az alábbi listában látható segédeszközök bekapcsolásával kényelmesebbé teheted a wiki használatát és szerkesztését.
+Legtöbbjük JavaScriptet használ, így ezt engedélyezned kell a böngésződben, hogy működjenek.
+A segédeszközök nem működnek ezen a beállításoldalon, így probléma esetén ki tudod őket kapcsolni.
+
+Ezek az eszközök nem részei a [[MediaWiki]] szoftvernek, általában a wiki felhasználói tartják karban őket.
+Az adminisztrátorok a [[MediaWiki:Gadgets-definition|definíciókat]] és a [[Special:Gadgets|leírásokat]] tartalmazó lapok segítségével tudják módosítani az elérhető eszközök listáját.',
+ 'gadgets' => 'Segédeszközök',
+ 'gadgets-title' => 'Segédeszközök',
+ 'gadgets-pagetext' => 'Itt látható azon segédeszközök listája, amiket a felhasználók bekapcsolhatnak a beállításaiknál. A lista a [[MediaWiki:Gadgets-definition|definíciókat]] tartalmazó lapon módosítható.
+Ez az áttekintő lap egyszerű hozzáférést nyúlt az eszközök kódját, illetve leírását tartalmazó rendszerüzenet-lapokhoz.',
+ 'gadgets-uses' => 'Kód',
+ 'gadgets-required-rights' => 'A következő {{PLURAL:$2|jogosultságra|jogosultságokra}} van szükség: $1.',
+ 'gadgets-default' => 'Mindenki számára engedélyezett alapértelmezettként.',
+ 'gadgets-export' => 'Exportálás',
+ 'gadgets-export-title' => 'Gadget export',
+ 'gadgets-not-found' => 'A(z) „$1“ segédeszköz nem található.',
+ 'gadgets-export-text' => 'A(z) $1 segédeszköz exportálásához kattints a „{{int:gadgets-export-download}}“ gombra, mentsd el a fájlt, majd a célwikiben a Special:Import lapon töltsd fel. Ezután a MediaWiki:Gadgets-definition laphoz add hozzá a következőket:
+<pre>$2</pre>
+A célwikiben rendelkezned kell a megfelelő jogokkal (beleértve a rendszerüzenetek szerkesztését) és engedélyezve kell lennie a fájlimportálásnak.',
+ 'gadgets-export-download' => 'Letöltés',
+);
+
+/** Interlingua (Interlingua)
+ * @author McDutchie
+ */
+$messages['ia'] = array(
+ 'gadgets-desc' => 'Permitte que usatores selige [[Special:Gadgets|gadgets CSS e JavaScript]] personalisate in lor [[Special:Preferences|preferentias]]',
+ 'prefs-gadgets' => 'Gadgets',
+ 'gadgets-prefstext' => 'Infra es un lista de gadgets special que tu pote activar in tu conto.
+Iste gadgets se basa pro le major parte in JavaScript, ergo JavaScript debe esser active in tu navigator pro permitter que illos functiona.
+Nota que iste gadgets non habera effecto in iste pagina de preferentias.
+
+Nota etiam que iste gadgets special non face parte del software de MediaWiki, e es normalmente disveloppate e mantenite per usatores in tu wiki local.
+Le administratores local pote modificar le gadgets disponibile per medio de [[MediaWiki:Gadgets-definition|definitiones]] e [[Special:Gadgets|descriptiones]].',
+ 'gadgets' => 'Gadgets',
+ 'gadgets-title' => 'Gadgets',
+ 'gadgets-pagetext' => 'Infra es un lista de gadgets special que le usatores pote activar in lor [[Special:Preferences|paginas de preferentias]], secundo le [[MediaWiki:Gadgets-definition|definitiones]].
+Iste supervista permitte le accesso commode al paginas de messages de systema que defini le description e codice de cata gadget.',
+ 'gadgets-uses' => 'Usa',
+ 'gadgets-required-rights' => 'Require le {{PLURAL:$2|derecto de $1|sequente derectos: $1}}.',
+ 'gadgets-default' => 'Activate pro omnes per predefinition.',
+ 'gadgets-export' => 'Exportar',
+ 'gadgets-export-title' => 'Exportation de gadget',
+ 'gadgets-not-found' => 'Gadget "$1" non trovate.',
+ 'gadgets-export-text' => 'Pro exportar le gadget $1, clicca super le button "{{int:gadgets-export-download}}", salveguarda le file discargate,
+va a Special:Import in le wiki de destination e incarga lo. Postea adde lo sequente al pagina MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Tu debe haber le permissiones appropriate in le wiki de destination (includente le derecto de modificar le messages de systema) e le importation ex files incargate debe esser activate.',
+ 'gadgets-export-download' => 'Discargar',
+);
+
+/** Indonesian (Bahasa Indonesia)
+ * @author Bennylin
+ * @author Farras
+ * @author IvanLanin
+ */
+$messages['id'] = array(
+ 'gadgets-desc' => 'Memungkinkan pengguna memilih [[Special:Gadgets|perkakas CSS dan JavaScript]] melalui [[Special:Preferences|preferensi]] mereka',
+ 'prefs-gadgets' => 'Perkakas',
+ 'gadgets-prefstext' => 'Berikut adalah daftar perkakas istimewa yang dapat Anda aktifkan untuk akun Anda. Semua perkakas tersebut sebagian besar berbasis JavaScript sehingga Anda harus mengaktifkan JavaScript pada penjelajah Anda untuk dapat menjalankannya. Perhatikan bahwa berbagai perkakas tersebut tidak memiliki pengaruh terhadap halaman preferensi ini.
+
+Juga perhatikan bahwa perkakas istimewa ini bukanlah bagian dari perangkat lunak MediaWiki dan biasanya dikembangkan dan dipelihara oleh para pengguna di wiki lokal Anda. Pengurus lokal dapat menyunting perkakas yang tersedia melalui [[MediaWiki:Gadgets-definition]] dan [[Special:Gadgets]].',
+ 'gadgets' => 'Perkakas',
+ 'gadgets-title' => 'Perkakas',
+ 'gadgets-pagetext' => 'Berikut adalah daftar perkakas istimewa yang dapat diaktifkan pengguna melalui [[Special:Preferences|halaman preferensi]] mereka sebagaimana didefinisikan oleh [[MediaWiki:Gadgets-definition]]. Tinjauan berikut memberikan kemudahan akses ke dalam halaman pesan sistem yang mendefinisikan deskripsi dan kode masing-masing perkakas.',
+ 'gadgets-uses' => 'Penggunaan',
+ 'gadgets-required-rights' => 'Memerlukan {{PLURAL:$2|hak $1|hak-hak berikut: $1}}.',
+ 'gadgets-default' => 'Diaktifkan untuk semua orang secara bawaan.',
+ 'gadgets-export' => 'Ekspor',
+ 'gadgets-export-title' => 'Ekspor perkakas',
+ 'gadgets-not-found' => 'Perkakas "$1" tidak ditemukan.',
+ 'gadgets-export-text' => 'Untuk mengekspor perkakas $1, klik tombol "{{int:gadgets-export-download}}", simpan berkas yang diunduh,
+tuju ke Special:Import pada wiki tujuan dan unggah berkas itu. Kemudian tambahkan berkas tersebut ke halaman MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Anda harus memeroleh izin pada wiki tujuan (termasuk hak menyunting pesan sistem) dan mengimpor dari unggahan berkas yang harus diaktifkan.',
+ 'gadgets-export-download' => 'Unduh',
+);
+
+/** Ido (Ido)
+ * @author Malafaya
+ */
+$messages['io'] = array(
+ 'gadgets-uses' => 'Ol uzas',
+);
+
+/** Icelandic (Ãslenska)
+ * @author Jóna Þórunn
+ */
+$messages['is'] = array(
+ 'gadgets-desc' => 'Gerir notendum kleift að velja [[Special:Gadgets|CSS og JavaScript-forrit]] í [[Special:Preferences|stillingum sínum]]',
+ 'prefs-gadgets' => 'Smáforrit',
+ 'gadgets-prefstext' => 'Eftirfarandi er listi yfir smáforrit sem þú getur notað á notandareikningi þínum. Þessi forrit eru að mestu byggð á JavaScript svo vafrinn þarf að styðja JavaScript til að þau virki. Athugaðu einnig að forritin hafa engin áhrif á stillingasíðunni.
+
+Forritin eru ekki hluti af MediaWiki-hugbúnaðinum heldur eru skrifuð og viðhaldin af notendum á þessu wiki-verkefni. Möppudýr geta breytt forritunum á [[MediaWiki:Gadgets-definition]] og [[Special:Gadgets]].',
+ 'gadgets' => 'Smáforrit',
+ 'gadgets-title' => 'Smáforrit',
+ 'gadgets-uses' => 'Notar',
+);
+
+/** Italian (Italiano)
+ * @author Beta16
+ * @author BrokenArrow
+ * @author Darth Kule
+ * @author Melos
+ * @author Nemo bis
+ */
+$messages['it'] = array(
+ 'gadgets-desc' => 'Consente agli utenti di selezionare [[Special:Gadgets|accessori CSS e JavaScript]] nelle proprie [[Special:Preferences|preferenze]]',
+ 'prefs-gadgets' => 'Accessori',
+ 'gadgets-prefstext' => "Di seguito viene presentata una lista di accessori speciali (''gadget'') che è possibile abilitare per il proprio account.
+La maggior parte di questi accessori è basata su JavaScript, è quindi necessario abilitare JavaScript nel proprio browser perché funzionino correttamente. Si noti che gli accessori non hanno alcun effetto in questa pagina di preferenze.
+
+Inoltre, si noti che questi accessori speciali non sono compresi nel software MediaWiki e vengono di solito realizzati e gestiti dagli utenti di ciascun sito wiki. Gli amministratori del sito possono modificare la lista degli accessori disponibili tramite le pagine delle [[MediaWiki:Gadgets-definition|definizioni]] e delle [[Special:Gadgets|descrizioni]].",
+ 'gadgets' => 'Accessori',
+ 'gadgets-title' => 'Accessori',
+ 'gadgets-pagetext' => "Di seguito sono elencati gli accessori (''gadget'') che gli utenti possono abilitare sulla propria pagina delle [[Special:Preferences|preferenze]], seguendo le [[MediaWiki:Gadgets-definition|definizioni]]. Questa panoramica fornisce un comodo meccanismo per accedere ai messaggi di sistema nei quali sono definiti la descrizione e il codice di ciascun accessorio.",
+ 'gadgets-uses' => 'Utilizza',
+ 'gadgets-required-rights' => 'Richiede {{PLURAL:$2|il diritto $1|i seguenti diritti: $1}}.',
+ 'gadgets-default' => 'Attivato per tutti, per impostazione predefinita.',
+ 'gadgets-export' => 'Esporta',
+ 'gadgets-export-title' => 'Esporta accessorio',
+ 'gadgets-not-found' => 'Accessorio "$1" non trovato.',
+ 'gadgets-export-download' => 'Scarica',
+);
+
+/** Japanese (日本語)
+ * @author Aotake
+ * @author JtFuruhata
+ * @author Mzm5zbC3
+ * @author Whym
+ * @author é’å­å®ˆæ­Œ
+ */
+$messages['ja'] = array(
+ 'gadgets-desc' => '利用者ãŒ[[Special:Gadgets|CSSã‚„JavaScriptã®ã‚«ã‚¹ã‚¿ãƒ ã‚¬ã‚¸ã‚§ãƒƒãƒˆ]]ã‚’[[Special:Preferences|{{int:preferences}}]]ã§é¸æŠžã§ãるよã†ã«ã™ã‚‹',
+ 'prefs-gadgets' => 'ガジェット',
+ 'gadgets-prefstext' => '下記ã¯ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§åˆ©ç”¨ã§ãるガジェットã®ä¸€è¦§ã§ã™ã€‚ã“れらã®ã‚¬ã‚¸ã‚§ãƒƒãƒˆã¯ã»ã¨ã‚“ã©ãŒJavaScriptベースã®ãŸã‚ã€å‹•ä½œã•ã›ã‚‹ã«ã¯ãƒ–ラウザ設定ã§JavaScriptを有効ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚ãªãŠã€{{int:preferences}}ページ上ã§ã¯å‹•ä½œã—ã¾ã›ã‚“。
+
+ã¾ãŸã€ã“れらã®ã‚¬ã‚¸ã‚§ãƒƒãƒˆã¯ MediaWiki ソフトウェアã®ä¸€éƒ¨ã§ã¯ãªãã€é–‹ç™ºã¨ãƒ¡ãƒ³ãƒ†ãƒŠãƒ³ã‚¹ã¯é€šå¸¸ã‚¦ã‚£ã‚­æ¯Žã®åˆ©ç”¨è€…ã«ã‚ˆã£ã¦è¡Œã‚ã‚Œã¦ã„ã‚‹ã“ã¨ã«ã‚‚注æ„ã—ã¦ãã ã•ã„。管ç†è€…ã¯[[MediaWiki:Gadgets-definition|ガジェットã®å®šç¾©]]ã‚„[[Special:Gadgets|ガジェットã®èª¬æ˜Ž]]ã‹ã‚‰åˆ©ç”¨å¯èƒ½ãªã‚¬ã‚¸ã‚§ãƒƒãƒˆã‚’編集ã§ãã¾ã™ã€‚',
+ 'gadgets' => 'ガジェット',
+ 'gadgets-title' => 'ガジェット',
+ 'gadgets-pagetext' => '以下ã¯ã€[[MediaWiki:Gadgets-definition]] 上ã§å®šç¾©ã•ã‚ŒãŸã€åˆ©ç”¨è€…ãŒ[[Special:Preferences|{{int:preferences}}]]ã«ã¦åˆ©ç”¨å¯èƒ½ã«ã™ã‚‹ã“ã¨ãŒã§ãるガジェットã®ä¸€è¦§ã§ã™ã€‚ã“ã®ä¸€è¦§ã¯ã‚¬ã‚¸ã‚§ãƒƒãƒˆã®èª¬æ˜Žã‚„プログラムコードを定義ã—ã¦ã„るシステムメッセージページã¸ã®ç°¡å˜ãªã‚¢ã‚¯ã‚»ã‚¹ã‚‚æä¾›ã—ã¾ã™ã€‚',
+ 'gadgets-uses' => '利用ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«',
+ 'gadgets-required-rights' => '{{PLURAL:$2|$1ã®æ¨©é™|$1ã®æ¨©é™}}ãŒå¿…è¦ã§ã™ã€‚',
+ 'gadgets-default' => 'デフォルトã§å…¨å“¡ã«æœ‰åŠ¹ã§ã™ã€‚',
+ 'gadgets-export' => 'エクスãƒãƒ¼ãƒˆ',
+ 'gadgets-export-title' => 'ガジェットã®ã‚¨ã‚¯ã‚¹ãƒãƒ¼ãƒˆ',
+ 'gadgets-not-found' => 'ガジェット「$1ã€ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。',
+ 'gadgets-export-text' => '$1ガジェットをエクスãƒãƒ¼ãƒˆã™ã‚‹ã«ã¯ã€ã€Œ{{int:gadgets-export-download}}ã€ãƒœã‚¿ãƒ³ã‚’クリックã—ã€ãƒ€ã‚¦ãƒ³ãƒ­ãƒ¼ãƒ‰ã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’ä¿å­˜ã—ã€
+é…布先ã®ã‚¦ã‚£ã‚­ã®Special:Importã¸è¡Œã£ã¦ã‚¢ãƒƒãƒ—ロードã—ã¦ãã ã•ã„。ãã—ã¦ã€ä»¥ä¸‹ã‚’MediaWiki:Gadgets-definitionページã«è¿½åŠ ã—ã¦ãã ã•ã„:
+<pre>$2</pre>
+エクスãƒãƒ¼ãƒˆã«ã¯ã€é…布先ã®ã‚¦ã‚£ã‚­ã§é©åˆ‡ãªè¨±å¯ï¼ˆã‚·ã‚¹ãƒ†ãƒ ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ç·¨é›†æ¨©é™ã‚’å«ã‚€ï¼‰ãŒå¿…è¦ã§ã€ã•ã‚‰ã«ãƒ•ã‚¡ã‚¤ãƒ«ã‹ã‚‰ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆãŒæœ‰åŠ¹åŒ–ã•ã‚Œã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚',
+ 'gadgets-export-download' => 'ダウンロード',
+);
+
+/** Jutish (Jysk)
+ * @author Huslåke
+ */
+$messages['jut'] = array(
+ 'prefs-gadgets' => 'Gøreter',
+ 'gadgets-prefstext' => 'Nedenstående er en liste over de gadgets som du kan aktivere for din brugerkonto. Da disse gadgets hovedsageligt er baseret på JavaScript skal du slå JavaScript til i din browser for at få dem til at virke. Bemærk at disse gadgets ikke vil have nogen effekt på denne side (indstillinger).
+
+Bemærk også at disse specielle gadgets ikke er en del af MediaWiki-softwaren og at de typisk bliver vedligeholdt af brugere på din lokale wiki. Lokale administratorer kan redigere tilgængelige gadgets med [[MediaWiki:Gadgets-definition]] og [[Special:Gadgets]].',
+ 'gadgets' => 'Gøreter',
+ 'gadgets-title' => 'Gøreter',
+ 'gadgets-pagetext' => 'Nedenstående er en liste med de specielle gadgets som brugere kan aktivere i deres indstillinger som defineret i [[MediaWiki:Gadgets-definition]]. Denne oversigtsside giver simpel adgang til de systembeskeder som definerer hver gadgets beskrivelse og kode.',
+ 'gadgets-uses' => 'Brugere',
+);
+
+/** Javanese (Basa Jawa)
+ * @author Meursault2004
+ * @author Pras
+ */
+$messages['jv'] = array(
+ 'gadgets-desc' => 'Marengaké para panganggo milih [[Special:Gadgets|gadget CSS lan JavaScript]] ngliwati [[Special:Preferences|préferènsi]] dhéwé-dhéwé.',
+ 'prefs-gadgets' => 'Gadget',
+ 'gadgets-prefstext' => 'Ing ngisor iki daftar gadget astaméwa sing bisa panjenangan aktifaké kanggo rékening panjenengan. Gadget-gadget iki sabagéyan gedhé adhedhasar JavaScript dadi panjenengan kudu ngaktifaké JavaScript ing panjlajah wèb panjenengan supaya bisa nglakokaké.
+Mangga diwigatèkaké yèn gadget-gadget iki ora ndarbèni pangaruh marang kaca préferènsi iki.
+
+Uga mangga diwigatèkaké yèn gadget astaméwa iki dudu bagéyan saka piranti empuk MediaWiki lan biasané dikembangaké lan diopèni déning panganggo-panganggo ing wiki lokal panjenengan. Pangurus lokal bisa nyunting gadget sing kasedyakaké nganggo [[MediaWiki:Gadgets-definition|dhéfinisi]] lan [[Special:Gadgets|uraian]].',
+ 'gadgets' => 'Gadget',
+ 'gadgets-title' => 'Gadget',
+ 'gadgets-pagetext' => 'Ing ngisor iki daftar gadget astaméwa sing bisa diaktifaké ing [[Special:Preferences|kaca prèferènsi]] panganggo, kayadéné didéfinisi déning [[MediaWiki:Gadgets-definition|dhéfinisi]].
+Tinjoan iki mènèhi aksès sing gampang menyang kaca-kaca pesen sistem sing ngawedhar saben gadget lan kodhe.',
+ 'gadgets-uses' => 'Kagunan',
+);
+
+/** Georgian (ქáƒáƒ áƒ—ული)
+ * @author BRUTE
+ * @author David1010
+ */
+$messages['ka'] = array(
+ 'prefs-gadgets' => 'გáƒáƒ¯áƒ”ტები',
+ 'gadgets' => 'გáƒáƒ¯áƒ”ტები',
+ 'gadgets-title' => 'გáƒáƒ¯áƒ”ტები',
+ 'gadgets-uses' => 'გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნებáƒ',
+ 'gadgets-export' => 'ექსპáƒáƒ áƒ¢áƒ˜',
+ 'gadgets-export-title' => 'გáƒáƒ¯áƒ”ტის ექსპáƒáƒ áƒ¢áƒ˜',
+ 'gadgets-not-found' => 'გáƒáƒ¯áƒ”ტი "$1" ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ.',
+ 'gadgets-export-download' => 'ჩáƒáƒ›áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ',
+);
+
+/** Kazakh (Arabic script) (‫قازاقشا (تٴوتە)‬) */
+$messages['kk-arab'] = array(
+ 'prefs-gadgets' => 'قاجەت قۇرالدار',
+ 'gadgets-prefstext' => 'تومەندە ٴوز تىركەلگىڭىزدە قوسا الاتىن ارناۋلى قاجەت قۇرالدار ٴتىزىمى بەرىلەدى.
+وسى قاجەت قۇرالدار كوبىنەسە JavaScript امىرلەرىنە نەگىزدەلىنەدى, سوندىقتان بۇلار جۇمىس ىستەۋى ٴۇشىن شولعىشىڭىزدا JavaScript قوسىلعان بولۋى كەرەك.
+بۇل باپتاۋ بەتىنە وسى قاجەت قۇرالدار اسەر ەتپەيتىنىڭ ەسكەرىڭىز.
+
+تاعى دا ەسكەرىڭىز: وسى قاجەت قۇرالدار MediaWiki باعدارلاماسىنىڭ بولىگى ەمەس, جانە دە بۇلاردى جايشىلىقتا جەرگىلىكتى ۋىيكىيدىڭ قاتىسۋشىلارى دامىتادى جانە قوشتايدى.
+جەرگىلىكتى اكىمشىلەر جەتىمدى قاجەت نارسە ٴتىزىمىن [[{{ns:mediawiki}}:Gadgets-definition]] جانە [[{{ns:special}}:Gadgets]] بەتتەرى ارقىلى
+وڭدەي الادى.',
+ 'gadgets' => 'قاجەت قۇرالدار',
+ 'gadgets-title' => 'قاجەت قۇرالدار',
+ 'gadgets-pagetext' => 'تومەندە ارناۋلى قاجەت قۇرالدار ٴتىزىمى بەرىلەدى. [[{{ns:mediawiki}}:Gadgets-definition]] بەتىندە انىقتالعان قاجەت قۇرالداردى قاتىسۋشىلار ٴوزىنىڭ باپتاۋىندا قوسا الادى.
+بۇل شولۋ بەتى ارقىلى ٴاربىر قاجەت قۇرالدىڭ سىيپاتتاماسى مەن ٴامىرىن انىقتايتىن جۇيە حابار بەتتەرىنە جەڭىل قاتىناي الاسىز.',
+ 'gadgets-uses' => 'قولدانۋداعىلار',
+);
+
+/** Kazakh (Cyrillic) (Қазақша (Cyrillic)) */
+$messages['kk-cyrl'] = array(
+ 'prefs-gadgets' => 'Қажет құралдар',
+ 'gadgets-prefstext' => 'Төменде өз тіркелгіңізде қоÑа алатын арнаулы қажет құралдар тізімі беріледі.
+ОÑÑ‹ қажет құралдар көбінеÑе JavaScript әмірлеріне негізделінеді, Ñондықтан бұлар Ð¶Ò±Ð¼Ñ‹Ñ Ñ–Ñтеуі үшін шолғышыңызда JavaScript қоÑылған болуы керек.
+Бұл баптау бетіне оÑÑ‹ қажет құралдар Ó™Ñер етпейтінің еÑкеріңіз.
+
+Тағы да еÑкеріңіз: оÑÑ‹ қажет құралдар MediaWiki бағдарламаÑының бөлігі емеÑ, және де бұларды жайшылықта жергілікті уикидің қатыÑушылары дамытады және қоштайды.
+Жергілікті әкімшілер жетімді қажет нәрÑе тізімін [[{{ns:mediawiki}}:Gadgets-definition]] және [[{{ns:special}}:Gadgets]] беттері арқылы
+өңдей алады.',
+ 'gadgets' => 'Қажет құралдар',
+ 'gadgets-title' => 'Қажет құралдар',
+ 'gadgets-pagetext' => 'Төменде арнаулы қажет құралдар тізімі беріледі. [[{{ns:mediawiki}}:Gadgets-definition]] бетінде анықталған қажет құралдарды қатыÑушылар өзінің баптауында қоÑа алады.
+Бұл шолу беті арқылы әрбір қажет құралдың ÑипаттамаÑÑ‹ мен әмірін анықтайтын жүйе хабар беттеріне жеңіл қатынай алаÑыз.',
+ 'gadgets-uses' => 'Қолданудағылар',
+);
+
+/** Kazakh (Latin) (Қазақша (Latin)) */
+$messages['kk-latn'] = array(
+ 'prefs-gadgets' => 'Qajet quraldar',
+ 'gadgets-prefstext' => 'Tömende öz tirkelgiñizde qosa alatın arnawlı qajet quraldar tizimi beriledi.
+Osı qajet quraldar köbinese JavaScript ämirlerine negizdelinedi, sondıqtan bular jumıs istewi üşin şolğışıñızda JavaScript qosılğan bolwı kerek.
+Bul baptaw betine osı qajet quraldar äser etpeýtiniñ eskeriñiz.
+
+Tağı da eskeriñiz: osı qajet quraldar MediaWiki bağdarlamasınıñ böligi emes, jäne de bulardı jaýşılıqta jergilikti wïkïdiñ qatıswşıları damıtadı jäne qoştaýdı.
+Jergilikti äkimşiler jetimdi qajet närse tizimin [[{{ns:mediawiki}}:Gadgets-definition]] jäne [[{{ns:special}}:Gadgets]] betteri arqılı
+öñdeý aladı.',
+ 'gadgets' => 'Qajet quraldar',
+ 'gadgets-title' => 'Qajet quraldar',
+ 'gadgets-pagetext' => 'Tömende arnawlı qajet quraldar tizimi beriledi. [[{{ns:mediawiki}}:Gadgets-definition]] betinde anıqtalğan qajet quraldardı qatıswşılar öziniñ baptawında qosa aladı.
+Bul şolw beti arqılı ärbir qajet quraldıñ sïpattaması men ämirin anıqtaýtın jüýe xabar betterine jeñil qatınaý alasız.',
+ 'gadgets-uses' => 'Qoldanwdağılar',
+);
+
+/** Khmer (ភាសាážáŸ’មែរ)
+ * @author Chhorran
+ * @author Lovekhmer
+ * @author Thearith
+ * @author គីមស៊្រុន
+ */
+$messages['km'] = array(
+ 'prefs-gadgets' => 'គ្រឿងបន្ទាប់បន្សំ',
+ 'gadgets' => 'គ្រឿងបន្ទាប់បន្សំ',
+ 'gadgets-title' => 'គ្រឿងបន្ទាប់បន្សំ',
+ 'gadgets-uses' => 'ប្រើ',
+);
+
+/** Korean (한국어)
+ * @author Ficell
+ * @author IRTC1015
+ * @author Klutzy
+ * @author Kwj2772
+ */
+$messages['ko'] = array(
+ 'gadgets-desc' => 'ê° ì‚¬ìš©ìžê°€ [[Special:Gadgets|CSS/ìžë°”스í¬ë¦½íŠ¸ 소ë„구]]를 [[Special:Preferences|ì‚¬ìš©ìž í™˜ê²½ 설정]]ì„ í†µí•´ 사용할 수 있ë„ë¡ í—ˆìš©',
+ 'prefs-gadgets' => '소ë„구',
+ 'gadgets-prefstext' => '아래 목ë¡ì€ 현재 사용 가능한 소ë„êµ¬ì˜ ëª©ë¡ìž…니다.
+ëŒ€ë¶€ë¶„ì˜ ì†Œë„구는 ìžë°”스í¬ë¦½íŠ¸ë¡œ ë™ìž‘하며, 웹 브ë¼ìš°ì €ì—ì„œ ìžë°”스í¬ë¦½íŠ¸ë¥¼ 사용할 수 있어야 ë™ìž‘합니다.
+소ë„구는 ì´ í™˜ê²½ 설정 페ì´ì§€ì—는 ì˜í–¥ì„ 주지 않습니다.
+
+ì´ ì†Œë„êµ¬ë“¤ì€ ë¯¸ë””ì–´ìœ„í‚¤ì˜ ê¸°ëŠ¥ì´ ì•„ë‹ˆë©°, ì¼ë°˜ì ìœ¼ë¡œ ê° ìœ„í‚¤ì˜ ì‚¬ìš©ìžê°€ 개발·관리하고 있습니다.
+ê° ìœ„í‚¤ì˜ ê´€ë¦¬ìžëŠ” [[MediaWiki:Gadgets-definition|소ë„구 ì •ì˜ ë¬¸ì„œ]]와 [[Special:Gadgets|소ë„구 설명 문서]]를 통해 소ë„êµ¬ë“¤ì„ ê´€ë¦¬í•  수 있습니다.',
+ 'gadgets' => '소ë„구 목ë¡',
+ 'gadgets-title' => '소ë„구',
+ 'gadgets-pagetext' => '[[Special:Preferences|ì‚¬ìš©ìž í™˜ê²½ 설정]]ì—ì„œ 설정할 수 있는 소ë„구 목ë¡ìž…니다. 해당 목ë¡ì€ [[MediaWiki:Gadgets-definition|소ë„구 ì •ì˜]]ì—ì„œ 편집할 수 있습니다.
+ì´ ë¬¸ì„œì—서는 ê° ì†Œë„êµ¬ì˜ ê° ì„¤ëª… 문서/ì½”ë“œì˜ ì‹œìŠ¤í…œ 메시지 ë§í¬ë¥¼ 제공합니다.',
+ 'gadgets-uses' => 'ë‹¤ìŒ ì½”ë“œë¥¼ ì´ìš©',
+ 'gadgets-required-rights' => '{{PLURAL:$2|$1 ê¶Œí•œì´ í•„ìš”í•©ë‹ˆë‹¤.|ë‹¤ìŒ ê¶Œí•œì´ í•„ìš”í•©ë‹ˆë‹¤: $1}}',
+ 'gadgets-default' => '기본ì ìœ¼ë¡œ 모든 사람ì—게 활성화ë˜ì–´ 있습니다.',
+ 'gadgets-export' => '내보내기',
+ 'gadgets-export-title' => '소ë„구 내보내기',
+ 'gadgets-not-found' => '소ë„구 "$1"ì„ ì°¾ì„ ìˆ˜ 없습니다.',
+ 'gadgets-export-text' => '$1 소ë„구를 내보내려면 "{{int:gadgets-export-download}}" ë²„íŠ¼ì„ í´ë¦­í•˜ì—¬ ë‹¤ìš´ë¡œë“œëœ íŒŒì¼ì„ 저장한 후,
+내보내려는 위키ì—ì„œ Special:Importë¡œ 가서 올리십시오. ê·¸ ë‹¤ìŒ MediaWiki:Gadgets-definition ë¬¸ì„œì— ë‹¤ìŒì„ 추가하십시오:
+<pre>$2</pre>
+해당 위키ì—ì„œ 시스템 메시지 편집 등 특정 ê¶Œí•œì„ ê°–ê³  있어야 합니다. ë˜í•œ íŒŒì¼ ì˜¬ë¦¬ê¸°ë¥¼ 통한 가져오기 ê¸°ëŠ¥ì´ í™œì„±í™”ë˜ì–´ 있어야 합니다.',
+ 'gadgets-export-download' => '다운로드',
+);
+
+/** Karachay-Balkar (Къарачай-Малкъар)
+ * @author Iltever
+ */
+$messages['krc'] = array(
+ 'gadgets' => 'Гаджетле',
+);
+
+/** Colognian (Ripoarisch)
+ * @author Purodha
+ */
+$messages['ksh'] = array(
+ 'gadgets-desc' => 'En iere [[Special:Preferences|Enstellunge]] künne Metmaacher [[Special:Gadgets|CSS- un JavaScrip-Gadgets]] en- un ußschallde.',
+ 'prefs-gadgets' => '<i lang="en">Gadgets</i>',
+ 'gadgets-prefstext' => 'Hee is en Liss met bestemmpte <i lang="en">Gadgets</i>,
+di för jede Metmaacher enjeschalldt wäde könne.
+Di boue miets op Javascrip op, drom moß mer\'t em Brauser
+enschallde, domet dat klapp.
+<i lang="en">Gadgets</i> werke nimmohls op dä Sigg hee,
+met Dinge persönleche Enstellunge.
+
+Opjepaß! <i lang="en">Gadgets</i>, sin kei Schtöck vun MediaWiki,
+söndern sin extra em Wiki installeet, un sin vun de Wiki-Bedriever
+oder Metmaacher ußjedaach un enjerescht.
+Wä et Rääsch doför hät, kann se övver de Sigge
+[[MediaWiki:Gadgets-definition|<i lang="en">Gadgets</i> fäßlääje]]
+un [[Special:Gadgets|<i lang="en">Gadgets</i> beschriewe]]
+enreschte un ändere.',
+ 'gadgets' => '<i lang="en">Gadgets</i>',
+ 'gadgets-title' => '<i lang="en">Gadgets</i>',
+ 'gadgets-pagetext' => 'He kütt en Liss met spezielle <i lang="en">Gadgets</i>,
+di jede Metmaacher övver sing
+[[Special:Preferences|päsönlije Enstellunge]] enschallte kann.
+Se wääde üvver [[MediaWiki:Gadgets-definition]] enjerecht.
+Die Övverseech hee jit enne direkte Zohjang op di Texte em Wiki,
+wo de Projramme, un de Erklierunge för de <i lang="en">Gadgets</i> dren enthallde
+sin.',
+ 'gadgets-uses' => 'Bruch',
+ 'gadgets-required-rights' => 'Bruch {{PLURAL:$2|dat Rääsch:|de Rääschde:|kein besönder Rääschde.}} $1',
+ 'gadgets-default' => 'Shtandattmääßesh för jeeder_ein ennjeschalldt.',
+ 'gadgets-export' => 'Expotteere',
+ 'gadgets-export-title' => '<i lang="en">Gadgets</i> expotteere',
+ 'gadgets-not-found' => '<i lang="en">Gadget</i> „$1“ nit jefonge.',
+ 'gadgets-export-text' => 'Öm dat <i lang="en">Gadget</i> „$1“ ze expotteere, donn op dä Knopp „{{int:gadgets-export-download}}“ klecke, un donn dann de eronger jelaade Dattei faßhallde. Dann jangk en dat Wiki, woh De dat empotteere wells, un doh op die Extrasigg <code lang="en">Spezial:Import</code>, un donn se huh laade. Dann deihs De en däm Wiki op dä Sigg <code lang="en">MediaWiki:Gadgets-definition</code> dat heh dobei:
+<pre>$2</pre>
+Do moß en däm Wiki de nüüdijje Rääschde han, och dat Rääsch, aan Täxte un Nohreeschte vum Systeem ze ändere, un et Empoteere vun huhjelaade Dateije moß zohjelohße sin.',
+ 'gadgets-export-download' => 'Eronger laade',
+);
+
+/** Kurdish (Latin) (Kurdî (Latin))
+ * @author George Animal
+ */
+$messages['ku-latn'] = array(
+ 'gadgets-not-found' => ' Gadget "$1" nehate dîtin.',
+);
+
+/** Luxembourgish (Lëtzebuergesch)
+ * @author Les Meloures
+ * @author Robby
+ */
+$messages['lb'] = array(
+ 'gadgets-desc' => 'Erméiglecht de Benotzer et perséinlech [[Special:Gadgets|CSS a JavaScript Gadgeten]] an hiren [[Special:Preferences|Astellunge]] festzeleeën.',
+ 'prefs-gadgets' => 'Gadgeten',
+ 'gadgets-prefstext' => "Lëscht vu spezielle Gadgeten déi fir Äre Benotzerkont aktivéiert kënne ginn.
+D'Gadgete baséiere meeschtens op engem JavaScript, dofir muss JavaScript an Ärem Browser aktivéiert sinn, fir datt se fonctionéieren.
+D'Gadgete fonctionéieren awer net op dëser Säit mat de perséinlechen Astellungen.
+
+Ausserdeem sollt Dir wëssen, datt dës Gadgete generell net Deel vu MediaWiki sinn, a meeschtens vu Benotzer vu lokale Wikien entwéckelt an ënnerhale ginn.
+Lokal Wiki-Administrateure kënnen d'Lëscht von den disponibele Gadgeten op de Säiten [[MediaWiki:Gadgets-definition|Definitioune vun Gadgeten]] a [[Special:Gadgets|Beschreiwunge vu Gadgeten]] änneren.",
+ 'gadgets' => 'Gadgeten',
+ 'gadgets-title' => 'Gadgeten',
+ 'gadgets-pagetext' => "Ënnendrënner ass eng Lëscht vun de spezielle Gadgeten déi d'Benotzer op hire [[Special:Preferences|Benotzer-Astellungen]] aschalte kënnen, esou wéi dat op [[MediaWiki:Gadgets-definition|definéiert]] ass.
+Dës Iwwersiicht gëtt einfachen Zougang zu de Systemmessage-Säiten, déi all Gadget beschreiwen an zum Programméiercode vun dem Gadget.",
+ 'gadgets-uses' => 'Benotzt',
+ 'gadgets-required-rights' => "Erfuerdert {{PLURAL:$2|d'Recht|d'Rechter}}: $1.",
+ 'gadgets-default' => 'Fir jiddwereen als Standard ageschalt.',
+ 'gadgets-export' => 'Export',
+ 'gadgets-export-title' => 'Export vu Gadgeten',
+ 'gadgets-not-found' => 'Gadget "$1" net fonnt.',
+ 'gadgets-export-text' => 'Fir de Gadget $1 z\'exportéieren klickt w.e.g. op de(n) "{{int:gadgets-export-download}}"-Knäppchen, späichert den erofgelueden Fichier, gitt op Spezial:Import op der Zil-Wiki a lued en do erop. Duerno setzt der op d\'MediaWiki:Gadgets-Definitiouns Säit dëst derbäi:<pre>$2</pre>
+Dir musst déi erfuerdert Rechter(inklusiv d\'Recht fir System-Messagen z\'änneren) op der Zil-Wiki hunn an den Import vun eropgelueden Fichiere muss ageschalt sinn.',
+ 'gadgets-export-download' => 'Eroflueden',
+);
+
+/** Limburgish (Limburgs)
+ * @author Matthias
+ * @author Ooswesthoesbes
+ * @author Tibor
+ */
+$messages['li'] = array(
+ 'gadgets-desc' => 'Laot gebroekers [[Special:Gadgets|CSS en JavaScripts]] activere in häör [[Special:Preferences|veurkeure]]',
+ 'prefs-gadgets' => 'Biedènger',
+ 'gadgets-prefstext' => 'Hiejónger sjtaon de sjpeciaal oetbreijinge dies te veur dien gebroekersaccount kèns insjakele.
+De oetbreijinge zeen veurnamelik gebaseerd op JavaScript, dus JavaScript mót veur diene browser ingesjakeld zeen óm die te laote wirke.
+De oetbreijinge höbbe geine invlood op dees pazjena mit veurkäöre.
+
+Dees sjpeciaal oetbreijinge zeen ouch gein óngerdeil van de MediaWiki-software en die mótte meistal óntwikkeld en óngerhauwe waere door gebroekers van diene wiki.
+Lokaal beheerders kónne de besjikbaar oetbreijinge aangaeve in [[MediaWiki:Gadgets-definition]] en [[Special:Gadgets]].',
+ 'gadgets' => 'Oetbreijinger',
+ 'gadgets-title' => 'Oetbreijinger',
+ 'gadgets-pagetext' => 'Hiej ónger staon de speciaal oetbreijinger die gebroekers kinne insjakele via häöre [[Special:Preferences|veurkeure]] wie ingesteldj is in [[MediaWiki:Gadgets-definition]].
+Dit euverzich bi-jtj uch einvoudige toegank toet de systeemtekspazjena wo de besjrieving en de programmacode van edere oetbreijing steit.',
+ 'gadgets-uses' => 'Gebroek',
+ 'gadgets-export' => 'Veur oet',
+ 'gadgets-export-title' => 'Exporteer oetbreijing',
+ 'gadgets-not-found' => 'Oetbreiding "$1" neet gevonje.',
+ 'gadgets-export-download' => 'Haol óp',
+);
+
+/** Lithuanian (Lietuvių)
+ * @author Homo
+ * @author Vpovilaitis
+ */
+$messages['lt'] = array(
+ 'gadgets-desc' => 'Leidžia naudotojams pasirinkti savo [[Special:Gadgets|CSS ir JavaScript priemones]] jų [[Special:Preferences|nustatymuose]]',
+ 'prefs-gadgets' => 'PriemonÄ—s',
+ 'gadgets-prefstext' => 'Žemiau yra sąrašas specialių priemonių, kurias jūs galite įjungti naudojimui.
+Šios priemonės daugiausiai yra sukurtos naudojant JavaScript, todėl, kad jos veiktų, jūsų naršyklėje turi būti įjungtas JavaScript palaikymas.
+Atsiminkite, kad šios priemonės neturi įtakos jūsų nustatymų puslapiui.
+
+Taip pat žinokite, kad šios specialios priemonės nėra MediaWiki programinės įrangos dalis ir yra sukurtos bei palaikomos vietinio vikiprojekto naudotojų. Vietiniai administratoriai gali redaguoti suteikiamų specialių priemonių sąrašą, naudodami puslapius [[MediaWiki:Gadgets-definition|priemonių aprašymas]] ir [[Special:Gadgets|priemonės]].',
+ 'gadgets' => 'PriemonÄ—s',
+ 'gadgets-title' => 'PriemonÄ—s',
+ 'gadgets-pagetext' => 'Žemiau yra sąrašas specialių priemonių, kurias naudotojai gali įjungti savo [[Special:Preferences|nustatymų puslapyje]]. Jos apibūdintos [[MediaWiki:Gadgets-definition|priemonių aprašyme]]. Ši apžvalga suteikia lengvą priėjimą prie sisteminių pranešimų puslapių, kuriuose pateiktas kiekvienos priemonės trumpas aprašas ir kodas.',
+ 'gadgets-uses' => 'Panaudojimai',
+);
+
+/** Latvian (Latviešu)
+ * @author Marozols
+ * @author Papuass
+ */
+$messages['lv'] = array(
+ 'prefs-gadgets' => 'RÄ«ki',
+ 'gadgets' => 'RÄ«ki',
+ 'gadgets-title' => 'RÄ«ki',
+ 'gadgets-export-download' => 'LejupielÄdÄ“t',
+);
+
+/** Malagasy (Malagasy)
+ * @author Jagwar
+ */
+$messages['mg'] = array(
+ 'gadgets' => 'Gadget',
+ 'gadgets-title' => 'Gadget',
+ 'gadgets-uses' => 'Mampiasa',
+ 'gadgets-export' => 'Hamoaka',
+ 'gadgets-export-title' => 'Famoahana gadget',
+ 'gadgets-not-found' => 'Tsy hita ny gadget « $1 ».',
+ 'gadgets-export-download' => 'Hampidina',
+);
+
+/** Macedonian (МакедонÑки)
+ * @author Bjankuloski06
+ * @author Brest
+ */
+$messages['mk'] = array(
+ 'gadgets-desc' => 'Им овозможува на кориÑниците во нивните [[Special:Preferences|нагодувања]] да одберат Ñвои ÑопÑтвени [[Special:Gadgets|CSS- и JavaScript-алатки]]',
+ 'prefs-gadgets' => 'Ðлатки',
+ 'gadgets-prefstext' => 'Ова е ÑпиÑок на Ñпецијални алатки кои можете да ги активирате за вашата кориÑничка Ñметка.
+Ðлатките Ñе оÑновани претежно на JavaScript, па затоа морате да имате овозможено JavaScript на вашиот прелиÑтувач за да можат да работат.
+Имајте предвид дека алатките нема да имаат никаков ефект врз оваа Ñтраница за нагодување.
+
+ИÑто така имајте на ум дека овие Ñпецијални алатки не Ñе дел од програмÑката опрема на МедијаВики и иÑтите Ñе Ñоздаваат и одржуваат од кориÑници на вашето локално вики.
+Локалните админиÑтратори можат да ги уредуваат и прилагодуваат алатките кориÑтејќи Ñе Ñо [[MediaWiki:Gadgets-definition|определувања]] и [[Special:Gadgets|опиÑи]].',
+ 'gadgets' => 'Ðлатки',
+ 'gadgets-title' => 'Ðлатки',
+ 'gadgets-pagetext' => 'Ова е ÑпиÑок на Ñпецијални алатки кои кориÑниците можат да ги активираат на нивната [[Special:Preferences|Ñтраница за нагодување]], наведени во [[MediaWiki:Gadgets-definition|определувањата]].
+Овој преглед дава леÑен приÑтап до ÑиÑтемÑките пораки кои го определуваат опиÑот и кодот на Ñекоја алатка.',
+ 'gadgets-uses' => 'КориÑти',
+ 'gadgets-required-rights' => 'Треба {{PLURAL:$2|да Ñе има правото на $1|да Ñе имаат Ñледниве права: $1}}.',
+ 'gadgets-default' => 'ДоÑтапно за Ñите по оÑновно',
+ 'gadgets-export' => 'Извези',
+ 'gadgets-export-title' => 'Извоз на алатка',
+ 'gadgets-not-found' => 'Ðлатката „$1“ не е пронајдена.',
+ 'gadgets-export-text' => 'За да ја извезете алатката $1, кликнете на копчето „{{int:gadgets-export-download}}“, зачувајте ја преземената податотека,
+одете на Special:Import на целното вики и подигнете ја. Потоа на Ñтраницата MediaWiki:Gadgets-definition внеÑете го Ñледново:
+<pre>$2</pre>
+Мора да имате Ñоодветни дозволи на целното вики (вклучувајќи го правото за уредување на ÑиÑтемÑки пораки), и мора да биде овозможен увозот од подигања.',
+ 'gadgets-export-download' => 'Преземи',
+);
+
+/** Malayalam (മലയാളം)
+ * @author Praveenp
+ * @author Shijualex
+ */
+$messages['ml'] = array(
+ 'gadgets-desc' => 'ഉപയോകàµà´¤à´¾à´•àµà´•àµ¾ [[Special:Preferences|à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™à´³à´¿àµ½ നിനàµà´¨àµ]] അവർകàµà´•à´¿à´·àµà´Ÿà´®àµà´³àµà´³ [[Special:Gadgets|സി.à´Žà´¸àµ.à´Žà´¸àµ., ജാവാസàµà´•àµà´°à´¿à´ªàµà´±àµà´±àµ ഗാഡàµà´œà´±àµà´±àµà´•àµ¾]] തിരഞàµà´žàµ†à´Ÿàµà´•àµà´•à´¾àµ» à´…à´¨àµà´µà´¦à´¿à´•àµà´•àµ½.',
+ 'prefs-gadgets' => 'ഗാഡàµà´œà´±àµà´±àµ',
+ 'gadgets-prefstext' => 'താങàµà´•à´³àµà´Ÿàµ† à´…à´‚à´—à´¤àµà´µà´¤àµà´¤à´¿à´¨àµ ഉപയോഗികàµà´•à´¾à´µàµà´¨àµà´¨ à´ªàµà´°à´¤àµà´¯àµ‡à´• ഗാഡàµà´œà´±àµà´±àµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯à´¾à´£àµ താഴെയàµà´³àµà´³à´¤àµ.
+à´ˆ ഗാഡàµâ€Œâ€Œà´œà´±àµà´±àµà´•àµ¾ à´ªàµà´°à´§à´¾à´¨à´®à´¾à´¯àµà´‚ ജാവാസàµà´•àµà´°à´¿à´ªàµà´±àµà´±à´¿àµ½ അധിഷàµà´ à´¿à´¤à´®à´¾à´¯à´¤à´¿à´¨à´¾àµ½ ഇവ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¿à´•àµà´•àµà´µà´¾àµ» താങàµà´•à´³àµà´Ÿàµ† à´¬àµà´°àµ—സറിൽ ജാവാസàµà´•àµà´°à´¿à´ªàµà´±àµà´±àµ സജàµà´œà´®à´¾à´•àµà´•à´¿ നൽകിയിരികàµà´•à´£à´‚.
+à´ˆ à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™àµ¾ താളിൽ à´ˆ ഗാഡàµà´œà´±àµà´±àµà´•àµ¾à´•àµà´•àµ യാതൊരൠസàµà´µà´¾à´§àµ€à´¨à´µàµà´®à´¿à´²àµà´²à´¨àµà´¨à´±à´¿à´¯àµà´•.
+
+à´ˆ à´ªàµà´°à´¤àµà´¯àµ‡à´• ഗാഡàµâ€Œâ€Œà´œà´±àµà´±àµà´•àµ¾ മീഡിയവികàµà´•à´¿ സോഫàµà´±àµà´±àµâ€Œâ€Œà´µàµ‡à´±à´¿à´¨àµà´±àµ† ഭാഗമേയലàµà´² à´Žà´¨àµà´¨àµà´‚ മനസàµà´¸à´¿à´²à´¾à´•àµà´•àµà´•, à´…à´µ വികസിപàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨à´¤àµà´‚ പരിപാലികàµà´•àµà´¨àµà´¨à´¤àµà´‚ താങàµà´•à´³àµà´Ÿàµ† à´ªàµà´°à´¾à´¦àµ‡à´¶à´¿à´• വികàµà´•à´¿à´¯à´¿à´²àµ† ഉപയോകàµà´¤à´¾à´•àµà´•à´³à´¾à´¯à´¿à´°à´¿à´•àµà´•àµà´‚.
+à´ªàµà´°à´¾à´¦àµ‡à´¶à´¿à´• കാരàµà´¯à´¨à´¿àµ¼à´µà´¾à´¹à´•àµ¼à´•àµà´•àµ ലഭàµà´¯à´®à´¾à´¯ ഗാഡàµâ€Œâ€Œà´œà´±àµà´±àµà´•à´³àµ† [[MediaWiki:Gadgets-definition|നിർവചനങàµà´™à´³àµà´‚]] [[Special:Gadgets|വിവരണങàµà´™à´³àµà´‚]] ഉപയോഗിചàµà´šàµ തിരàµà´¤àµà´¤à´¾àµ» à´•à´´à´¿à´¯àµà´¨àµà´¨à´¤à´¾à´£àµ.',
+ 'gadgets' => 'ഗാഡàµà´œà´±àµà´±àµ',
+ 'gadgets-title' => 'ഗാഡàµà´œà´±àµà´±àµ',
+ 'gadgets-pagetext' => 'ഉപയോകàµà´¤à´¾à´•àµà´•àµ¾à´•àµà´•àµ അവരàµà´Ÿàµ† [[Special:Preferences|à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™àµ¾ താളിൽ]] നിനàµà´¨àµà´‚ സജàµà´œà´®à´¾à´•àµà´•à´¾à´µàµà´¨àµà´¨ ഗാഡàµà´œà´±àµà´±àµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´• [[MediaWiki:Gadgets-definition|à´…à´µ നിർവàµà´µà´šà´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ à´ªàµà´°à´•à´¾à´°à´‚]] താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.
+ഓരോ ഗാഡàµà´œà´±àµà´±à´¿à´¨àµà´±àµ‡à´¯àµà´‚ വിവരണവàµà´‚ കോഡàµà´‚ ഉളàµà´³ സനàµà´¦àµ‡à´¶ താളàµà´•à´³à´¿à´²àµ‡à´•àµà´•àµ പോകാനàµà´³àµà´³ à´Žà´³àµà´ªàµà´ªà´µà´´à´¿ à´ˆ പടàµà´Ÿà´¿à´• നൽകàµà´¨àµà´¨àµ.',
+ 'gadgets-uses' => 'ഉപയോഗങàµà´™àµ¾',
+ 'gadgets-required-rights' => '{{PLURAL:$2|$1 അവകാശം|$1 à´Žà´¨àµà´¨àµ€ അവകാശങàµà´™àµ¾}} ആവശàµà´¯à´®à´¾à´£àµ.',
+ 'gadgets-default' => 'à´Žà´²àµà´²à´¾à´µàµ¼à´•àµà´•àµà´‚ à´¸àµà´µà´¤àµ‡ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¨à´¸à´œàµà´œà´®à´¾à´¯à´¿à´°à´¿à´•àµà´•àµà´‚.',
+ 'gadgets-export' => 'കയറàµà´±àµà´®à´¤à´¿ ചെയàµà´¯àµà´•',
+ 'gadgets-export-title' => 'ഗാഡàµà´œà´±àµà´±àµ കയറàµà´±àµà´®à´¤à´¿ ചെയàµà´¯àµà´•',
+ 'gadgets-not-found' => 'ഗാഡàµà´œà´±àµà´±àµ "$1" à´•à´£àµà´Ÿàµ†à´¤àµà´¤à´¾à´¨à´¾à´¯à´¿à´²àµà´².',
+ 'gadgets-export-text' => '$1 à´Žà´¨àµà´¨ ഗാഡàµà´œà´±àµà´±àµ കയറàµà´±àµà´®à´¤à´¿ ചെയàµà´¯à´¾àµ», "{{int:gadgets-export-download}}" à´Žà´¨àµà´¨ ബടàµà´Ÿà´£à´¿àµ½ ഞെകàµà´•àµà´•, ഡൗൺലോഡൠചെയàµà´¤àµ ലഭികàµà´•àµà´¨àµà´¨ à´ªàµà´°à´®à´¾à´£à´‚ സേവൠചെയàµà´¯àµà´•, ലകàµà´·àµà´¯à´µà´¿à´•àµà´•à´¿à´¯à´¿à´²àµ† Special:Import à´Žà´¨àµà´¨ താളിൽ ചെനàµà´¨ ശേഷം അതൠഅവിടെ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµà´•. താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨à´¤àµ MediaWiki:Gadgets-definition താളിൽ ചേർകàµà´•àµà´•:
+<pre>$2</pre>
+ലകàµà´·àµà´¯à´µà´¿à´•àµà´•à´¿à´¯à´¿àµ½ താങàµà´•àµ¾à´•àµà´•àµ ആവശàµà´¯à´®à´¾à´¯ à´…à´¨àµà´®à´¤à´¿à´•àµ¾ (à´µàµà´¯à´µà´¸àµà´¥à´¾à´¸à´¨àµà´¦àµ‡à´¶à´™àµà´™àµ¾ തിരàµà´¤àµà´¤à´¾à´¨àµà´³àµà´³ അവകാശമടകàµà´•à´‚) ഉണàµà´Ÿà´¾à´¯à´¿à´°à´¿à´•àµà´•à´£à´‚ à´’à´ªàµà´ªà´‚ à´ªàµà´°à´®à´¾à´£ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ വഴിയàµà´³àµà´³ ഇറകàµà´•àµà´®à´¤à´¿ അവിടെ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¨à´¸à´œàµà´œà´®à´¾à´¯à´¿à´°à´¿à´•àµà´•àµà´•à´¯àµà´‚ വേണം.',
+ 'gadgets-export-download' => 'ഡൗൺലോഡàµ',
+);
+
+/** Marathi (मराठी)
+ * @author Kaustubh
+ * @author Mahitgar
+ */
+$messages['mr'] = array(
+ 'gadgets-desc' => 'सदसà¥à¤¯à¤¾à¤‚ना तà¥à¤¯à¤¾à¤‚चà¥à¤¯à¤¾ [[Special:Preferences|पसंतीची]] [[Special:Gadgets|CSS व जावासà¥à¤•à¥à¤°à¥€à¤ªà¥à¤Ÿ गॅजेटà¥à¤¸]] निवडणà¥à¤¯à¤¾à¤šà¥€ परवानगी देते.',
+ 'prefs-gadgets' => 'उपकरण(गॅजेट)',
+ 'gadgets-prefstext' => 'खाली तà¥à¤®à¥à¤¹à¥€ तà¥à¤®à¤šà¥à¤¯à¤¾ सदसà¥à¤¯à¤¤à¥à¤µà¤¾à¤¸à¤¾à¤ à¥€ वापरू शकत असलेलà¥à¤¯à¤¾ गॅजेटà¥à¤¸à¤šà¥€ यादी दिलेली आहे. ही गॅजेटà¥à¤¸ मà¥à¤–à¥à¤¯à¤¤à¥à¤µà¥‡ जावासà¥à¤•à¥à¤°à¥€à¤ªà¥à¤Ÿà¤µà¤° अवलंबून असलà¥à¤¯à¤¾à¤®à¥à¤³à¥‡ तà¥à¤®à¤šà¥à¤¯à¤¾ बà¥à¤°à¤¾à¤‰à¤à¤° मधà¥à¤¯à¥‡ जावासà¥à¤•à¥à¤°à¥€à¤ªà¥à¤Ÿ à¤à¤¨à¥‡à¤¬à¤² असणे आवशà¥à¤¯à¤• आहे. या गॅजेटà¥à¤¸à¤®à¥à¤³à¥‡ या पसंतीचà¥à¤¯à¤¾ पानावर कà¥à¤ à¤²à¥‡à¤¹à¥€ परिणाम होणार नाहीत याची कृपया नोंद घà¥à¤¯à¤¾à¤µà¥€.
+
+तसेच ही गॅजेटà¥à¤¸ मीडियाविकी पà¥à¤°à¤£à¤¾à¤²à¥€à¤šà¤¾ हिसà¥à¤¸à¤¾ नाहीत, व ही मà¥à¤–à¥à¤¯à¤¤à¥à¤µà¥‡ सà¥à¤¥à¤¾à¤¨à¤¿à¤• विकिवर सदसà¥à¤¯à¤¾à¤‚दà¥à¤µà¤¾à¤°à¥‡ उपलबà¥à¤§ केली जातात. सà¥à¤¥à¤¾à¤¨à¤¿à¤• पà¥à¤°à¤¬à¤‚धक उपलबà¥à¤§ गॅजेटà¥à¤¸ [[MediaWiki:Gadgets-definition]] व [[Special:Gadgets]] वापरून बदलू शकतात.',
+ 'gadgets' => 'सà¥à¤µà¤¿à¤§à¤¾ (गॅजेट)',
+ 'gadgets-title' => 'गॅजेट',
+ 'gadgets-pagetext' => 'खाली तà¥à¤®à¥à¤¹à¥€ तà¥à¤®à¤šà¥à¤¯à¤¾ सदसà¥à¤¯à¤¤à¥à¤µà¤¾à¤¸à¤¾à¤ à¥€ वापरू शकत असलेलà¥à¤¯à¤¾ [[MediaWiki:Gadgets-definition]]ने सांगितलेलà¥à¤¯à¤¾ गॅजेटà¥à¤¸à¤šà¥€ यादी दिलेली आहे. हे पान तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• गॅजेटà¥à¤¸à¤šà¤¾ कोड व वà¥à¤¯à¤¾à¤–à¥à¤¯à¤¾ देणारà¥â€à¤¯à¤¾ पानासाठी सोपी संपरà¥à¤• सà¥à¤µà¤¿à¤§à¤¾ पà¥à¤°à¤µà¤¿à¤¤à¥‡.',
+ 'gadgets-uses' => 'उपयोग',
+);
+
+/** Malay (Bahasa Melayu)
+ * @author Anakmalaysia
+ * @author Aviator
+ * @author Zamwan
+ */
+$messages['ms'] = array(
+ 'gadgets-desc' => 'Membolehkan pengguna memilih [[Special:Gadgets|gajet CSS dan JavaScript]] tempahan melalui [[Special:Preferences|laman keutamaan]]',
+ 'prefs-gadgets' => 'Gajet',
+ 'gadgets-prefstext' => 'Yang berikut ialah senarai gajet khas yang anda boleh hidupkan untuk akaun anda. Kebanyakan daripada gajet-gajet ini memerlukan JavaScript, oleh itu anda perlu menghidupkan ciri JavaScript dalam pelayar web anda untuk menggunakannya. Sila ambil perhatian bahawa gajet-gajet ini tidak menjejaskan laman keutamaan ini.
+
+Sila ambil perhatian juga bahawa gajet-gajet khas ini bukan sebahagian daripada perisian MediaWiki, dan biasanya dibangunkan dan diselenggara oleh para pengguna di wiki tempatan anda. Pentadbir tempatan boleh mengubah gajet-gajet yang sedia ada menggunakan [[MediaWiki:Gadgets-definition|takrif]] dan [[Special:Gadgets|keterangan]].',
+ 'gadgets' => 'Gajet',
+ 'gadgets-title' => 'Gajet',
+ 'gadgets-pagetext' => 'Yang berikut ialah senarai gajet khas yang boleh dihidupkan oleh pengguna melalui [[Special:Preferences|laman keutamaan]], sebagai mana yang telah [[MediaWiki:Gadgets-definition|ditakrifkan]]. Laman ini menyediakan capaian mudah kepada laman pesanan sistem yang mentakrifkan setiap kod dan keterangan gajet.',
+ 'gadgets-uses' => 'Menggunakan',
+ 'gadgets-required-rights' => 'Memerlukan {{PLURAL:$2|hak $1|hak-hak berikut: $1}}.',
+ 'gadgets-default' => 'Dihidupkan untuk semua orang secara sediaan.',
+ 'gadgets-export' => 'Eksport',
+ 'gadgets-export-title' => 'Eksport gajet',
+ 'gadgets-not-found' => 'Gajet "$1" tiada.',
+ 'gadgets-export-text' => 'Untuk mengeksport gajet $1, klik butang "{{int:gadgets-export-download}}", simpan fail yang dimuat turun, pergi ke Khas:Import di wiki sasaran dan muat naik fail tadi di situ. Kemudian tambah kod berikut dalam laman MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Anda hendaklah mempunyai keizinan yang bersesuaian di wiki sasaran (termasuklah hak untuk menyunting pesanan sistem) dan ciri import daripada fail muat naik hendaklah dibolehkan.',
+ 'gadgets-export-download' => 'Muat turun',
+);
+
+/** Maltese (Malti)
+ * @author Chrisportelli
+ */
+$messages['mt'] = array(
+ 'gadgets-prefstext' => "Hawn taħt hawn lista ta' aġġeġġi speċjali li inti tista' tippermetti għall-kont tiegħek.
+Dawn l-aġġeġġi huma l-aktar ibbażati fuq JavaScript, u għalhekk il-JavaScript trid tkun awtorizzata fil-browżer tiegħek sabiex ikunu jistgħu jaħdmu.
+Kun af li dawn l-aġġeġġi mhu se jħallu ebda effett fuq din il-paġna tal-preferenzi.
+
+Għandek tkun taf ukoll li dawn l-aġġeġġi spe1jali mhumiex parti mis-softwer tal-MediaWiki, u huma ħafna drabi żviluppati u mantenuti minn utenti fuq il-wiki lokali tiegħek.
+L-amministraturi lokali jistgħu jimmodifikaw id-[[MediaWiki:Gadgets-definition|definizzjonijiet]] u d-[[Special:Gadgets|deskrizzjonijiet]] tal-aġġeġġi disponibbli.",
+ 'gadgets-pagetext' => "Hawn taħt hawn lista ta' aġġeġġi speċjali li l-utenti jistgħu jippermettu fil-[[Special:Preferences|paġna tal-preferenzi]], kif definit fid-[[MediaWiki:Gadgets-definition|definizzjonijiet]].
+Din il-ħarsa tipprovdi aċċess faċli għall-messaġġi tas-sistema li fihom hemm deskrizzjoni u s-sors ta' kull aġġeġġ.",
+);
+
+/** Low German (Plattdüütsch)
+ * @author Slomox
+ */
+$messages['nds'] = array(
+ 'gadgets-desc' => 'Lett Brukers vörgeven [[Special:Gadgets|CSS- un JavaScript-Gadgets]] in jemehr [[Special:Preferences|Instellungen]] aktiveren',
+ 'prefs-gadgets' => 'Gadgets',
+ 'gadgets-prefstext' => 'Ünnen steit en List vun spezielle Warktüüch, de elkeen Bruker för sik anstellen kann.
+Disse Warktüüch loopt tomehrst mit Javascript. Dat mutt also in’n Browser anstellt wesen, dat dat löppt.
+Wees aver gewohr, dat de Warktüüch hier direkt op disse Sied mit de persönlichen Instellungen nix bewarkt.
+
+De Warktüüch sünd denn ok keen offiziellen Deel vun MediaWiki, sünnern warrt normalerwies vun enkelte Brukers vun dat lokale Wiki schreven. De Administraters vun dat Wiki köönt de List mit de Warktüüch över de Sieden [[MediaWiki:Gadgets-definition]] un [[Special:Gadgets]] ännern.',
+ 'gadgets' => 'Gadgets',
+ 'gadgets-title' => 'Gadgets',
+ 'gadgets-pagetext' => 'Ünnen steit en List mit spezielle Warktüüch, de för all Brukers in de [[Special:Preferences|Instellungen]] anstellt warrn köönt. Defineert sünd de Warktüüch in [[MediaWiki:Gadgets-definition]].
+Disse Översicht gifft direkten Togang to de Systemnarichten, in de de Text to de Warktüüch un jemehr Programmkood steit.',
+ 'gadgets-uses' => 'Bruukt',
+);
+
+/** Nedersaksisch (Nedersaksisch)
+ * @author Servien
+ */
+$messages['nds-nl'] = array(
+ 'gadgets-desc' => 'Laot gebrukers [[Special:Gadgets|CSS en JavaScripts]] activeren in der [[Special:Preferences|veurkeuren]]',
+ 'prefs-gadgets' => 'Technisch spul',
+ 'gadgets-prefstext' => "Hieronder steet speciaal techinische spul da-j inschakelen kunnen.
+'t Is veurnamelijk ebaseerd op JavaScript, dus JavaScript mu-j an hemmen staon in joew webkieker um 't te laoten warken.
+Al dit technische spul hef gien invleud op disse veurkeurenpagina.
+
+Disse technische snufjes maken oek gien deel uut van de MediaWiki-pregrammetuur, en 't wönnen meestentieds ontwikkeld en onderhouwen
+deur gebrukers van joew eigen wiki.
+Beheerders kunnen 't beschikbaore technische spul angeven in [[MediaWiki:Gadgets-definition|defenisies]] en [[Special:Gadgets|beschrievingen]].",
+ 'gadgets' => 'Technisch spul',
+ 'gadgets-title' => 'Technisch spul',
+ 'gadgets-pagetext' => 'Hieronder steet speciaal technisch spul dee gebrukers in kunnen schakelen bie [[Special:Preferences|mien veurkeuren]], zoas in-esteld in de [[MediaWiki:Gadgets-definition|defenisies]].
+Dit overzichte biejt eenvoudige toegang tot de systeemtekspagina waor de beschrieving en de pregrammacode van elke technisch snufjen steet.',
+ 'gadgets-uses' => 'Gebruuk',
+);
+
+/** Nepali (नेपाली)
+ * @author Bhawani Gautam
+ */
+$messages['ne'] = array(
+ 'gadgets-desc' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ [[Special:Preferences|अभिरà¥à¤šà¤¿ अनà¥à¤¸à¤¾à¤°]] [[Special:Gadgets|CSS र जाभासà¥à¤•à¥à¤°à¥€à¤ªà¥à¤Ÿ उपकरणहरà¥]] छानà¥à¤¨ दिनà¥à¤¹à¥‹à¤¸à¥',
+ 'prefs-gadgets' => 'उपकरणहरà¥',
+ 'gadgets-prefstext' => 'विशेष उपकरणहरà¥à¤•à¥‹ सूची तल दिइà¤à¤•à¥‹à¤› तपाईंले आफà¥à¤¨à¥‹ खातामा सकà¥à¤°à¤¿à¤¯ पारà¥à¤¨ सकà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤›à¥¤
+पà¥à¤°à¤¾à¤¯ सबै उपकरणहरॠजाभासà¥à¤•à¥à¤°à¥€à¤ªà¥à¤Ÿà¤®à¤¾ आधारित छनà¥, यस कारण बà¥à¤°à¤¾à¤‰à¤œà¤°à¤®à¤¾ काम गराउनको लागि जाभासà¥à¤•à¥à¤°à¥€à¤ªà¥à¤Ÿà¤²à¤¾à¤ˆ सकà¥à¤°à¤¿à¤¯ गरà¥à¤¨à¥ परà¥à¤›à¥¤
+याद राखà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ती उपकरणहरà¥à¤²à¥‡ अभिरà¥à¤šà¤¿ पृषà¥à¤ à¤®à¤¾ असर गरà¥à¤¦à¥ˆà¤¨à¤¨à¥à¥¤
+यो पनि याद राखà¥à¤¹à¥‹à¤¸à¥ यी विशेष उपकरणहरॠमीडिया विकि सफà¥à¤Ÿà¤µà¥‡à¤¯à¤°à¤­à¤¿à¤¤à¥à¤° परà¥à¤¦à¥ˆà¤¨à¤¨à¥ र पà¥à¤°à¤¾à¤¯ सà¥à¤¥à¤¾à¤¨à¥€à¤¯ विकि पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤¹à¤°à¥à¤²à¥‡ विकास यसको विकास र सञà¥à¤šà¤¾à¤²à¤¨ गरà¥à¤¦à¤›à¤¨à¥à¥¤ सà¥à¤¥à¤¾à¤¨à¥€à¤¯ पà¥à¤°à¤¬à¤¨à¥à¤§à¤•à¤¹à¤°à¥à¤²à¥‡ उपलबà¥à¤§ उपकरणहरà¥à¤•à¤¾ [[MediaWiki:Gadgets-definition|परिभाषाहरà¥]] र [[Special:Gadgets|विवरणहरà¥]] समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¦à¤›à¤¨à¥à¥¤',
+ 'gadgets' => 'उपकरणहरà¥',
+ 'gadgets-title' => 'उपकरणहरà¥',
+ 'gadgets-pagetext' => 'विशेष उपकरणहरà¥à¤•à¥‹ सूची तल दिइà¤à¤•à¥‹à¤› पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤¹à¤°à¥à¤²à¥‡ [[MediaWiki:Gadgets-definition|परिभाषाहरà¥]]मा जनाठअनà¥à¤¸à¤¾à¤° आफà¥à¤¨à¥‹ [[Special:Preferences|अभिरà¥à¤šà¤¿ पृषà¥à¤ à¤®à¤¾]], सकà¥à¤°à¤¿à¤¯ पारà¥à¤¨ सकà¥à¤¨à¥‡à¤›à¤¨à¥à¥¤à¥¤
+यस सिंहावलोकनले पà¥à¤°à¤£à¤¾à¤²à¥€ सनà¥à¤¦à¥‡à¤¶ पृषà¥à¤  सजिलै पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨ सकिनेछ जसले पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• उपकरणको विवरण र कोडलाई परिभाषित गरेको छ।',
+ 'gadgets-uses' => 'पà¥à¤°à¤¯à¥‹à¤—हरà¥',
+ 'gadgets-required-rights' => 'आवशà¥à¤¯à¤•à¤¤à¤¾ छ {{PLURAL:$2|$1 अधिकारको|निमà¥à¤¨ अधिकारहरà¥à¤•à¥‹: $1}}.',
+ 'gadgets-default' => 'सबैको निमà¥à¤¤à¤¿ सà¥à¤°à¥à¤¦à¥‡à¤–ि नैं सकà¥à¤°à¤¿à¤¯ छ।',
+ 'gadgets-export' => 'निरà¥à¤¯à¤¾à¤¤ गरà¥à¤¨à¥‡',
+ 'gadgets-export-title' => 'उपकरण निरà¥à¤¯à¤¾à¤¤',
+ 'gadgets-not-found' => 'उपकरण "$1" पाइà¤à¤¨à¥¤',
+ 'gadgets-export-text' => '$1 उपरणलाई निरà¥à¤¯à¤¾à¤¤ गरà¥à¤¨, "{{int:gadgets-export-download}}" बटनमा कà¥à¤²à¤¿à¤• गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, डाउनलोड गरिà¤à¤•à¥‹ फाइललाई संगà¥à¤°à¤¹ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥,
+जानà¥à¤¹à¥‹à¤¸à¥ विशेष:लकà¥à¤·à¤¿à¤¤ विकिमा निरà¥à¤¯à¤¾à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ र अपलोड गरà¥à¤¹à¥‹à¤¸à¥à¥¤ तà¥à¤¯à¤¸à¤ªà¤›à¤¿ तल दिà¤à¤•à¤¾ मीडियाविकि: उपकरण परिभाषाहरॠपरिभाषा पृषà¥à¤ à¤®à¤¾ थपà¥à¤¨à¥à¤¹à¥‹à¤¸à¥:
+<pre>$2</pre>
+तपाईंसित लकà¥à¤·à¤¿à¤¤ विकिमा पà¥à¤°à¤£à¤¾à¤²à¥€ सनà¥à¤¦à¥‡à¤¶à¤¹à¤°à¥ समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥‡ अधिकार सहित आयात गरà¥à¤¨à¥‡ समà¥à¤šà¤¿à¤¤ अनà¥à¤®à¤¤à¤¿ र फाइल अपलोड पनि सकà¥à¤°à¤¿à¤¯ गरिà¤à¤•à¥‹ हà¥à¤¨à¥à¤ªà¤°à¥à¤›à¥¤',
+ 'gadgets-export-download' => 'डाउनलोड गरà¥à¤¨à¥‡',
+);
+
+/** Dutch (Nederlands)
+ * @author Annabel
+ * @author SPQRobin
+ * @author Siebrand
+ */
+$messages['nl'] = array(
+ 'gadgets-desc' => 'Laat gebruikers [[Special:Gadgets|CSS en JavaScripts]] activeren in hun [[Special:Preferences|voorkeuren]]',
+ 'prefs-gadgets' => 'Uitbreidingen',
+ 'gadgets-prefstext' => 'Hieronder staan de speciale uitbreidingen die u kunt inschakelen.
+De uitbreidingen zijn voornamelijk gebaseerd op JavaScript, dus JavaScript moet voor uw browser ingeschakeld zijn om ze te laten werken.
+De uitbreidingen hebben geen invloed op deze pagina met voorkeuren.
+
+Deze speciale uitbreidingen zijn geen onderdeel van de MediaWiki-software en worden meestal ontwikkeld en onderhouden door gebruikers van uw wiki.
+Beheerders kunnen de beschikbare uitbreidingen aangeven in [[MediaWiki:Gadgets-definition|definities]] en [[Special:Gadgets|beschrijvingen]].',
+ 'gadgets' => 'Uitbreidingen',
+ 'gadgets-title' => 'Uitbreidingen',
+ 'gadgets-pagetext' => 'Hieronder staan de speciale uitbreidingen die gebruikers kunnen inschakelen via hun [[Special:Preferences|voorkeuren]], zoals ingesteld in de [[MediaWiki:Gadgets-definition|definities]].
+Dit overzicht biedt eenvoudige toegang tot de systeemtekstpagina waar de beschrijving en de programmacode van iedere uitbreiding staat.',
+ 'gadgets-uses' => 'Gebruikt',
+ 'gadgets-required-rights' => '{{PLURAL:$2|Het volgende recht is|De volgende rechten zijn}} vereist: $1.',
+ 'gadgets-default' => 'Standaard ingeschakeld voor iedereen.',
+ 'gadgets-export' => 'Exporteren',
+ 'gadgets-export-title' => 'Uitbreiding exporteren',
+ 'gadgets-not-found' => 'Uitbreiding "$1" niet gevonden.',
+ 'gadgets-export-text' => 'Klik op de knop "{{int:gadgets-export-download}}" om de uitbreiding "$1" te exporteren.
+Sla daarna het gedownloade bestand op.
+Ga naar "Special:Import" in de doelwiki en upload het geëxporteerde bestand.
+Voeg daarna het volgende toe aan de pagina "MediaWiki:Gadgets-definition":
+<pre>$2</pre>
+U moet de juiste rechten hebben op de doelwiki, inclusief het recht om bewerkingen te maken aan de systeemberichten, en importeren uit bestanden moet ingeschakeld zijn.',
+ 'gadgets-export-download' => 'Downloaden',
+);
+
+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+ * @author Eirik
+ * @author Harald Khan
+ * @author Nghtwlkr
+ */
+$messages['nn'] = array(
+ 'gadgets-desc' => 'Lèt brukarane velje eigendefinerte [[Special:Gadgets|CSS- og JavaScript-verktøy]] i [[Special:Preferences|innstillingane sine]].',
+ 'prefs-gadgets' => 'Tilleggsfunksjonar',
+ 'gadgets-prefstext' => 'Under finn du ei liste over tilleggsfunksjonar som du kan slå på på kontoen din. Desse tilleggsfunksjonane er for det meste baserte på JavaScript, så JavaScript må vere slått på i nettlesaren din for at dei skal verke. Merk at desse tilleggsfunksjonane ikkje har nokon effekt på denne innstillingssida.
+
+Merk også at tilleggsfunksjonane ikkje er ein del av MediaWiki-programvara, og at dei vanlegvis er utvikla og vedlikehaldne av brukarar på din lokale wiki. Lokale administratorar kan endre dei tilgjengelege tilleggsfunksjonane ved å endre [[MediaWiki:Gadgets-definition|definisjonane]] og [[Special:Gadgets|skildringane]].',
+ 'gadgets' => 'Tilleggsfunksjonar',
+ 'gadgets-title' => 'Tilleggsfunksjonar',
+ 'gadgets-pagetext' => 'Under finn du ei liste over tilleggsfunksjonar som brukarane kan slå på på [[Special:Preferences|innstillingane]] sine, som oppgjevne i [[MediaWiki:Gadgets-definition|definisjonane]].
+Dette oversynet gjev enkel tilgang til systemmeldingssidene som inneheld skildringa og koden til kvar enkelt tilleggsfunksjon.',
+ 'gadgets-uses' => 'Brukar',
+ 'gadgets-export' => 'Eksporter',
+ 'gadgets-export-download' => 'Last ned',
+);
+
+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+ * @author Jon Harald Søby
+ * @author Laaknor
+ * @author Nghtwlkr
+ * @author Sjurhamre
+ */
+$messages['no'] = array(
+ 'gadgets-desc' => 'Lar brukere velge egendefinerte [[Special:Gadgets|CSS- og JavaScript-verktøy]] i [[Special:Preferences|innstillingene sine]]',
+ 'prefs-gadgets' => 'Tilleggsfunksjoner',
+ 'gadgets-prefstext' => 'Nedenfor er en liste over tilleggsfunksjoner du kan slå på for kontoen din.
+Disse funksjonene er for det meste basert på JavaScript, så du må ha dette slått på i nettleseren din for at de skal fungere.
+Merk at funksjonene ikke vil ha noen innvirkning på denne innstillingssiden.
+
+Merk også at disse verktøyene ikke er del av MediaWiki-programvaren, og vanligvis utvikles og vedlikeholdes av brukere på den lokale wikien. Lokale administratorer kan redigere tilgjengelig verktøy ved å endre [[MediaWiki:Gadgets-definition|definisjonene]] og [[Special:Gadgets|beskrivelsene]].',
+ 'gadgets' => 'Tilleggsfunksjoner',
+ 'gadgets-title' => 'Tilleggsfunksjoner',
+ 'gadgets-pagetext' => 'Nedenfor er en liste over tilleggsfunksjoner brukere kan slå på i [[Special:Preferences|innstillingene]], som definert på [[MediaWiki:Gadgets-definition]]. Denne oversikten gir lett tilgang til systembeskjedsidene som definerer hvert verktøys beskrivelse og kode.',
+ 'gadgets-uses' => 'Bruk',
+ 'gadgets-required-rights' => 'Krever {{PLURAL:$2|$1 rettighet|følgende rettigheter: $1}}.',
+ 'gadgets-default' => 'Aktivert for alle som standard',
+ 'gadgets-export' => 'Eksporter',
+ 'gadgets-export-title' => 'Tilleggsfunksjon eksport',
+ 'gadgets-not-found' => 'Tilleggsfunksjon «$1» ikke funnet.',
+ 'gadgets-export-text' => 'For å eksportere verktøyet $1, klikk på «{{int:gadgets-export-download}}»-knappen, lagre den nedlastede filen, gå til Special:Import på destinasjonswikien og last den opp. Deretter legger du til følgende på siden MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Du må ha de nødvendige tillatelsene på destinasjonswikien (inkludert retten til å redigere systemmeldinger) og import fra filopplastinger må være aktivert.',
+ 'gadgets-export-download' => 'Last ned',
+);
+
+/** Occitan (Occitan)
+ * @author Cedric31
+ */
+$messages['oc'] = array(
+ 'gadgets-desc' => 'Daissa als utilizaires los [[Special:Gadgets|gadgets CSS e JavaScript]] dins lor [[Special:Preferences|preferéncias]]',
+ 'prefs-gadgets' => 'Gadgets',
+ 'gadgets-prefstext' => "Çaijós apareis una tièra de gadgets que podètz activar per vòstre compte. Fan ampèl a JavaScript, deu doncas èsser activat per vòstre navigador Web.
+
+An pas cap d'incidéncia sus aquesta pagina de preferéncias. E mai, son generalament desvolopats e mantenguts sus aqueste wiki.
+Los administrators pòdon modificar los gadgets en passant per [[MediaWiki:Gadgets-definition|las definicions]] e las [[Special:Gadgets|descripcions]].",
+ 'gadgets' => 'Gadgets',
+ 'gadgets-title' => 'Gadgets',
+ 'gadgets-pagetext' => "Çaijós apareis una lista de gadgets que los utilizaires pòdon activar dins lor [[Special:Preferences|pagina de preferéncias]], coma definit dins ''[[MediaWiki:Gadgets-definition|las definicions]]''.
+Aqueste susvòl dona un accès rapid a las paginas de messatges del sistèma que definisson cada descripcion e cada còde dels gadgets.",
+ 'gadgets-uses' => 'Utiliza',
+);
+
+/** Pampanga (Kapampangan)
+ * @author Katimawan2005
+ */
+$messages['pam'] = array(
+ 'gadgets-desc' => 'Didinan nong tsansa/pamikatagun a mamiling pasadiang [[Special:Gadgets|CSS ampong JavaScript gadget]] ketang karelang [[Special:Preferences|pinili]] (preferences)',
+ 'prefs-gadgets' => 'Deng gadget',
+ 'gadgets-prefstext' => 'Ating tala (listaan) da reng espesial a gadget a agamit mu ba meng apaliari (enable) ing kekang account.
+Uling makabasi la king JavaScript deng keraklan kareting gadget, kailangan yang papaliari ing JavaScript king kekang browser ba lang gumada deti.
+Tandanan mung ala lang epektu king bulung da ring pinili (preferences page) deng gadget a reti.
+
+Tandanan mu muring e la kayabe king MediaWiki software deting gadget, at keraklan, gagawan da la ampong mamantinian deng talagamit ketang kekayung lokal a wiki.
+Maliari lang makapag-edit deng talapanibala (administrator) kareng gadget a atiu nung gamitan de ing [[MediaWiki:Gadgets-definition]] ampo ing [[Special:Gadgets]].',
+ 'gadgets' => 'Deng gadget',
+ 'gadgets-title' => 'Deng gadget',
+ 'gadgets-pagetext' => 'Makabili ya king lalam ing tala (listaan) da reng espesial a gadget a apaliari (enable) da reng talagamit ketang karelang bulung da ring pinili (preferences page), agpang king kabaldugan king [[MediaWiki:Gadgets-definition]].
+Gawa nang malagua niting piyakitan (overview) ing pamanintun kareng bulung a maki system message a milalarawan king balang gadget at babie king kayang code.',
+ 'gadgets-uses' => 'Gamit',
+);
+
+/** Deitsch (Deitsch)
+ * @author Xqt
+ */
+$messages['pdc'] = array(
+ 'prefs-gadgets' => 'Gadgets',
+ 'gadgets' => 'Gadgets',
+ 'gadgets-title' => 'Gadgets',
+);
+
+/** Polish (Polski)
+ * @author Derbeth
+ * @author Sp5uhe
+ */
+$messages['pl'] = array(
+ 'gadgets-desc' => 'Pozwala użytkownikom wybrać [[Special:Gadgets|gadżety CSS i JavaScript]] na [[Special:Preferences|stronie preferencji]]',
+ 'prefs-gadgets' => 'Gadżety',
+ 'gadgets-prefstext' => 'Poniżej znajduje się lista specjalnych gadżetów, które możesz włączyć dla swojego konta użytkownika.
+Gadżety najczęściej wykorzystują JavaScript, więc by działały musisz mieć w swojej przeglądarce włączoną obsługę JavaScriptu. Gadżety nie mają wpływu na tę stronę preferencji.
+
+Gadżety nie są częścią oprogramowania MediaWiki i najprawdopodobniej zostały stworzone przez użytkowników tego wiki.
+Lokalni administratorzy mogą edytować dostępne gadżety używając stron [[MediaWiki:Gadgets-definition|Definicje gadżetów]] oraz [[Special:Gadgets|Gadżety]].',
+ 'gadgets' => 'Gadżety',
+ 'gadgets-title' => 'Gadżety',
+ 'gadgets-pagetext' => 'Poniżej znajduje się lista specjalnych gadżetów, które użytkownicy mogą włączyć na swojej [[Special:Preferences|stronie preferencji]]. Lista ta jest zdefiniowana na stronie [[MediaWiki:Gadgets-definition|definicji]].
+Poniższy przegląd ułatwia dostęp do komunikatów systemu, które definiują opis i kod każdego z gadżetów.',
+ 'gadgets-uses' => 'Użycie',
+ 'gadgets-required-rights' => 'Wymaga {{PLURAL:$2|uprawnienia|następujących uprawnień:}} $1.',
+ 'gadgets-default' => 'Domyślnie włączone dla wszystkich.',
+ 'gadgets-export' => 'Eksportuj',
+ 'gadgets-export-title' => 'Eksportowanie gadżetów',
+ 'gadgets-not-found' => 'Nie odnaleziono gadżetu „$1â€.',
+ 'gadgets-export-text' => 'Aby wyeksportować gadżet „$1†kliknij na przycisk „{{int:gadgets-export-download}}â€, zapisz pobrany plik, wejdź na stronÄ™ Special;Import w docelowej wiki i przeÅ›lij go. NastÄ™pnie dodaj poniższy kod do strony MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Musisz mieć właściwe uprawnienia na wiki docelowej (w tym do edycji komunikatów systemowych) oraz musi być włączony import na serwer poprzez przesłanie pliku.',
+ 'gadgets-export-download' => 'Pobierz',
+);
+
+/** Piedmontese (Piemontèis)
+ * @author Borichèt
+ * @author Bèrto 'd Sèra
+ * @author Dragonòt
+ */
+$messages['pms'] = array(
+ 'gadgets-desc' => "A lassa che j'utent a selession-o [[Special:Gadgets|CSS e gadget JavaScript]] ant ij [[Special:Preferences|sò gust]]",
+ 'prefs-gadgets' => 'Component',
+ 'gadgets-prefstext' => "Ambelessì sota a-i é na lista ëd component ch'a peul vischesse ant sò cont personal.
+Sti component-sì a son dzortut basà ansima a JavaScript, donca a venta anans tut che JavaScript a sia avisch ant sò navigator, s'a veul che ij component a travajo.
+Ch'a ten-a present che sti component a l'han gnun efet ansima a la pàgina dij \"sò gust\".
+
+Ch'a nòta ëdcò che a son nen part dël programa MediaWiki e che për sòlit a resto dësvlupà e mantnù da dj'utent dla wiki andova chiel/chila as treuva adess.
+J'aministrator locaj a peulo regolé ij component disponibij ën dovrand le pàgine [[MediaWiki:Gadgets-definition|definission dij component]] e [[Special:Gadgets|component]].",
+ 'gadgets' => 'Component',
+ 'gadgets-title' => 'Component',
+ 'gadgets-pagetext' => "Ambelessì sota a-i é na lista ëd component spessiaj che j'utent a peulo butesse avisch ant ij [[Special:Preferences|sò gust]], conforma a la [[MediaWiki:Gadgets-definition|definission dij component]].
+Sta lista complessiva a smon na stra còmoda për rivé a le pàgine ëd messagi ëd sistema ch'a definisso descrission e còdes ëd vira component.",
+ 'gadgets-uses' => 'a dòvra',
+ 'gadgets-required-rights' => "A ciama {{PLURAL:$2|ël drit $1|ij drit ch'a ven-o: $1}}.",
+ 'gadgets-default' => 'Abilità për mincadun për default',
+ 'gadgets-export' => 'Esporté',
+ 'gadgets-export-title' => "Esportassion d'acessòri",
+ 'gadgets-not-found' => 'Acessòri "$1" pa trovà.',
+ 'gadgets-export-text' => "Për esporté l'acessòri \$1, sgnaché an sël boton \"{{int:gadgets-export-download}}\", salvé l'archivi dëscarià, andé a Special:Import an sla wiki ëd destinassion e carielo. Peui gionté lòn ch'a-i é sì-sota a la pàgina MediaWiki:Gadgets-definition:
+<pre>\$2</pre>
+A-i é da manca d'avèj ij përmess aproprià an sla wiki ëd destinassion (comprèis ij drit për modifiché ij mëssagi ëd sistema) e l'amportassion da archivi carià a dev esse abilità.",
+ 'gadgets-export-download' => 'Dëscaria',
+);
+
+/** Pashto (پښتو)
+ * @author Ahmed-Najib-Biabani-Ibrahimkhel
+ */
+$messages['ps'] = array(
+ 'gadgets-uses' => 'کارونÛ',
+ 'gadgets-export-download' => 'ښکته کول',
+);
+
+/** Portuguese (Português)
+ * @author 555
+ * @author Hamilton Abreu
+ * @author Malafaya
+ */
+$messages['pt'] = array(
+ 'gadgets-desc' => "Permite que os utilizadores seleccionem [[Special:Gadgets|''\"gadgets\"'' JavaScript e CSS]] personalizados nas suas [[Special:Preferences|preferências]]",
+ 'prefs-gadgets' => 'Gadgets',
+ 'gadgets-prefstext' => "Segue-se uma lista de ''\"gadgets\"'' especiais que pode activar na sua conta.
+Estes ''gadgets'' são baseados principalmente em JavaScript, sendo necessário activar o suporte a JavaScript no seu browser para que funcionem.
+Note que não terão efeito nesta página de preferências.
+
+Note também que estes ''gadgets'' especiais não fazem parte do programa MediaWiki, sendo geralmente desenvolvidos e mantidos por utilizadores na sua wiki local.
+Administradores locais podem editar os ''gadgets'' disponíveis usando as [[MediaWiki:Gadgets-definition|definições]] e [[Special:Gadgets|descrições]].",
+ 'gadgets' => 'Gadgets',
+ 'gadgets-title' => 'Gadgets',
+ 'gadgets-pagetext' => "Segue-se uma lista de ''\"gadgets\"'' que podem ser activados pelos utilizadores nas suas [[Special:Preferences|preferências]], como estabelecido pelas [[MediaWiki:Gadgets-definition|definições]].
+Este resumo proporciona acesso fácil às páginas das mensagens de sistema que definem a descrição e o código de cada ''gadget''.",
+ 'gadgets-uses' => 'Utiliza',
+ 'gadgets-required-rights' => 'Requer {{PLURAL:$2|o privilégio $1|os seguintes privilégios: $1}}.',
+ 'gadgets-default' => 'Activado para todos por padrão.',
+ 'gadgets-export' => 'Exportar',
+ 'gadgets-export-title' => 'Exportação de gadget',
+ 'gadgets-not-found' => 'O gadget "$1" não foi encontrado.',
+ 'gadgets-export-text' => 'Para exportar o gadget $1, clique o botão "{{int:gadgets-export-download}}", grave o ficheiro transferido,
+vá à página Special:Import na wiki de destino e faça o upload do ficheiro. Depois adicione o seguinte à página MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Na wiki de destino, tem de ter as permissões necessárias (incluindo o privilégio de editar mensagens de sistema) e têm de ser permitidas importações por upload de ficheiros.',
+ 'gadgets-export-download' => 'Download',
+);
+
+/** Brazilian Portuguese (Português do Brasil)
+ * @author Eduardo.mps
+ * @author Giro720
+ * @author GoEThe
+ */
+$messages['pt-br'] = array(
+ 'gadgets-desc' => 'Permite aos utilizadores selecionarem [[Special:Gadgets|"gadgets" JavaScript e CSS]] personalizados nas suas [[Special:Preferences|preferências]]',
+ 'prefs-gadgets' => 'Gadgets',
+ 'gadgets-prefstext' => 'Segue-se uma lista de "gadgets" que podem ser ativados em sua conta.
+Tais gadgets normalmente são baseados em JavaScript, o que faz com que seja necessário que o suporte a JavaScript esteja ativado em seu navegador para que os mesmos funcionem.
+Note que os gadgets não possuem efeito nesta página (a página de preferências).
+
+Note também que tais gadgets não são parte do software MediaWiki, geralmente sendo desenvolvidos e mantidos por usuários de sua wiki local.
+Administradores locais podem editar os gadgets disponíveis através de [[MediaWiki:Gadgets-definition|definições]] e [[Special:Gadgets|descrições]].',
+ 'gadgets' => 'Gadgets',
+ 'gadgets-title' => 'Gadgets',
+ 'gadgets-pagetext' => 'Segue-se uma lista de "gadgets" que podem ser ativados por utilizadores através de [[Special:Preferences|suas páginas de preferências]], definidos em [[MediaWiki:Gadgets-definition|definições]].
+Esta visão geral proporciona um acesso fácil para as mensagens de sistema que definem as descrições e códigos de cada um dos gadgets.',
+ 'gadgets-uses' => 'Utiliza',
+ 'gadgets-required-rights' => 'Requer {{PLURAL:$2|o privilégio $1|os seguintes privilégios: $1}}.',
+ 'gadgets-default' => 'Ativar para todos por padrão.',
+ 'gadgets-export' => 'Exportar',
+ 'gadgets-export-title' => 'Exportação de gadget',
+ 'gadgets-not-found' => '*Gadget "$1" não encontrado.',
+ 'gadgets-export-text' => 'Para exportar o gadget $1, clique no botão "{{int:gadgets-export-download}}", salve o arquivo transferido,
+vá à página Special:Import na wiki de destino e faça o upload do arquivo. Depois adicione o seguinte à página MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Na wiki de destino, você deve ter as permissões necessárias (incluindo o privilégio de editar mensagens de sistema) e a importação por upload de arquivos deve estar habilitada na wiki.',
+ 'gadgets-export-download' => 'Baixar',
+);
+
+/** Quechua (Runa Simi)
+ * @author AlimanRuna
+ */
+$messages['qu'] = array(
+ 'prefs-gadgets' => 'Yanapaqchakuna',
+ 'gadgets' => 'Yanapaqchakuna',
+ 'gadgets-title' => 'Yanapaqchakuna',
+);
+
+/** Romanian (Română)
+ * @author Cin
+ * @author Firilacroco
+ * @author KlaudiuMihaila
+ * @author Stelistcristi
+ */
+$messages['ro'] = array(
+ 'gadgets-desc' => 'Permite utilizatorilor să își aleagă [[Special:Gadgets|gadgeturi CSS și JavaScript]] în [[Special:Preferences|preferințele]] lor',
+ 'prefs-gadgets' => 'Gadgeturi',
+ 'gadgets' => 'Gadgeturi',
+ 'gadgets-title' => 'Gadgeturi',
+ 'gadgets-uses' => 'Utilizări',
+ 'gadgets-export' => 'Exportă',
+ 'gadgets-export-title' => 'Exportul de gadgeturi',
+ 'gadgets-not-found' => 'Gadgetul „$1†nu a fost găsit.',
+ 'gadgets-export-download' => 'Descarcă',
+);
+
+/** Tarandíne (Tarandíne)
+ * @author Joetaras
+ */
+$messages['roa-tara'] = array(
+ 'gadgets-desc' => "Lasse scacchià a l'utinde le [[Special:Gadgets|gadget CSS e JavaScript]] personalizzate jndr'à le lore [[Special:Preferences|preferenze]]",
+ 'prefs-gadgets' => 'Gadget',
+ 'gadgets-prefstext' => "Sotte stè 'n'elenghe de gadget speciale ca tu abbilità sus a 'u cunde tune.
+Ste riale sò assaije basate sus a Javascript, accussì Javascript addà essere abbilitate jndr'à 'u browser tune pe le fà fatià.
+Vide che ste riale non ge tènene effette sus a sta pàgene de preferenze.
+
+Pò vide pure ca ste gadget non ge sonde parte d'u software de MediaUicchi e sonde normalmende sviluppate e mandenute da l'utinde d'a Uicchipèdie locale tune.
+Le amministrature locale ponne cangià le gadget disponibbele ausanne le [[MediaWiki:Gadgets-definition|definiziune]] e le [[Special:Gadgets|descriziune]].",
+ 'gadgets' => 'Gadget',
+ 'gadgets-title' => 'Gadget',
+ 'gadgets-pagetext' => "Sotte stè 'n'elenghe de gadget speciale ca l'utinde ponne abbilità sus a lore [[Special:Preferences|pàgene de le preferenze]], cumme definite da le [[MediaWiki:Gadgets-definition|definiziune]].
+Stu riepileghe prevede 'nu facile facile accesse a le pàggene de le messagge d'u sisteme ca definiscene ogne descrizione e codece de le gadget.",
+ 'gadgets-uses' => 'Ause',
+ 'gadgets-required-rights' => "Richiede {{PLURAL:$2|'u $1 deritte|le seguende deritte: $1}}.",
+ 'gadgets-default' => 'Abbilete pe ogneune pe default.',
+ 'gadgets-export' => 'Esporte',
+ 'gadgets-export-title' => "Esporte 'u gadget",
+ 'gadgets-not-found' => 'Gadget "$1" none acchiate.',
+ 'gadgets-export-text' => "Pe esportà 'u \$1 gadget, cazze sus a 'u buttone \"{{int:gadgets-export-download}}\", reggistre 'u file scarecate, veje'a pàgene Special:Import sus 'a Uicchi de destinazione e carechele. Pò aggiunge 'a seguende pàgene MediaWiki:Gadgets-definition:
+<pre>\$2</pre>
+Tu a ave le permesse appropriate sus 'a Uicchi de destinazione (ingludenne le deritte a cangià le messagge d'u sisteme) e 'a 'mbortazione da file carecate adda essere abbilitate.",
+ 'gadgets-export-download' => 'Scareche',
+);
+
+/** Russian (РуÑÑкий)
+ * @author Ahonc
+ * @author Eleferen
+ * @author Illusion
+ * @author MaxSem
+ * @author VasilievVV
+ * @author ÐлекÑандр Сигачёв
+ */
+$messages['ru'] = array(
+ 'gadgets-desc' => 'ПозволÑет учаÑтникам выбирать в [[Special:Preferences|наÑтройках]] CSS- и JavaScript-гаджеты, которые они хотÑÑ‚ подключить',
+ 'prefs-gadgets' => 'Гаджеты',
+ 'gadgets-prefstext' => 'Ðиже приведён ÑпиÑок Ñпециальных гаджетов, которые вы можете включить Ð´Ð»Ñ Ñвоей учётной запиÑи.
+Эти гаджеты преимущеÑтвенно оÑнованы на JavaScript, поÑтому вы должны включить JavaScript в Ñвоём браузере Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы они работали.
+Учтите, что Ñти гаджеты не работают на Ñтранице наÑтроек.
+
+Также учтите, что Ñти гаджеты не ÑвлÑÑŽÑ‚ÑÑ Ñ‡Ð°Ñтью MediaWiki и обычно разрабатываютÑÑ Ð¸ обÑлуживаютÑÑ ÑƒÑ‡Ð°Ñтниками вашей локальной вики.
+ÐдминиÑтраторы могут изменÑÑ‚ÑŒ ÑпиÑок гаджетов Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ Ñтраниц [[MediaWiki:Gadgets-definition|определений]] и [[Special:Gadgets|опиÑаний]].',
+ 'gadgets' => 'Гаджеты',
+ 'gadgets-title' => 'Гаджеты',
+ 'gadgets-pagetext' => 'Ðиже приведён ÑпиÑок гаджетов, которые учаÑтники могут включить на Ñвоей Ñтранице наÑтроек, в ÑоответÑтвии Ñо ÑпиÑком на Ñтранице [[MediaWiki:Gadgets-definition|определений]].
+Этот ÑпиÑок позволÑет легко получить доÑтуп к Ñтраницам ÑиÑтемных Ñообщений, определÑющих опиÑÐ°Ð½Ð¸Ñ Ð¸ иÑходные коды гаджетов.',
+ 'gadgets-uses' => 'ИÑпользует',
+ 'gadgets-required-rights' => '{{PLURAL:$2|ТребуетÑÑ Ð¿Ñ€Ð°Ð²Ð¾ «$1»|ТребуютÑÑ Ð¿Ñ€Ð°Ð²Ð°: $1}}.',
+ 'gadgets-default' => 'Включён Ð´Ð»Ñ Ð²Ñех по умолчанию.',
+ 'gadgets-export' => 'ЭкÑпортировать',
+ 'gadgets-export-title' => 'ЭкÑпорт гаджета',
+ 'gadgets-not-found' => 'Гаджет «$1» не найден.',
+ 'gadgets-export-text' => 'Ð”Ð»Ñ ÑкÑпорта гаджета $1, нажмите кнопку «{{int:gadgets-export-download}}», Ñохраните загруженный файл,
+перейдите на Ñтраницу Special:Import целевой вики и загрузите файл. Затем добавьте Ñледующие Ñтроки на Ñтраницу MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Ð’Ñ‹ должны иметь ÑоответÑтвующие Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð² целевой вики (в том чиÑле право на редактирование ÑиÑтемных Ñообщений), также на Ñервере должна быть включена наÑтройка импорта из файлов.',
+ 'gadgets-export-download' => 'Загрузить',
+);
+
+/** Rusyn (РуÑиньÑкый)
+ * @author Gazeb
+ */
+$messages['rue'] = array(
+ 'gadgets-desc' => 'Уможнює хоÑнователÑм Ñобі выбрати [[Special:Gadgets|CSS Ñ– JavaScript додаток]] у Ñвоїм [[Special:Preferences|наÑтавлїню]].',
+ 'prefs-gadgets' => 'Додаткы',
+ 'gadgets-prefstext' => 'Ðиже Ñ” переглÑд шпеціалный додатків, котры Ñобі можете у Ñвоїм контї запнути.
+Тоты додаткы Ñуть оÑнованы переважно на JavaScript-Ñ–, также Ñ” про Ñ—Ñ… функчноÑÑ‚ÑŒ треба мати запнутый JavaScript в переглÑдачі.
+Додаткы не Ñуть аплікованы на тій Ñторінцї наÑтавлїнÑ.
+
+УÑвідомте Ñобі тыж, же шпеціалны додаткы не Ñуть чаÑтёв Ñофтверу MediaWiki Ñ–&nbsp;Ñуть Ñторёваны Ñ–&nbsp;адмініÑтрованы хоÑнователÑми той вікі.
+Локалны адмініÑтраторы можуть управлÑти [[MediaWiki:Gadgets-definition|дефініції]] Ñ–&nbsp;[[Special:Gadgets|попиÑÑ‹]] доÑтупных додатків.',
+ 'gadgets' => 'Додаткы',
+ 'gadgets-title' => 'Додаткы',
+ 'gadgets-pagetext' => 'Ðиже Ñ” переглÑд шпеціалных додатків, котры Ñобі хоÑнователї можуть запнути у Ñвоїм [[Special:Preferences|наÑтавлїню]]. Їх ÑпиÑок ÑÑ Ð´Ð°ÑÑ‚ÑŒ управлÑти на Ñторінцї [[MediaWiki:Gadgets-definition]].
+Тот переглÑд додавать проÑтый приÑтуп к&nbsp;ÑÑ–Ñтемным повідомлїнÑм, котры дефінують код Ñ–&nbsp;Ð¿Ð¾Ð¿Ð¸Ñ ÐºÐ°Ð¶Ð´Ð¾Ð³Ð¾ додатку.',
+ 'gadgets-uses' => 'ХоÑнує',
+ 'gadgets-export' => 'ЕкÑпортовати',
+ 'gadgets-export-title' => 'ЕкÑпорт додатку',
+ 'gadgets-not-found' => 'Додато „$1“ не найдженый.',
+ 'gadgets-export-text' => 'Кідь хочете екÑпортовати додаток $1, кликните на клапку „{{int:gadgets-export-download}}“, уложте Ñкачаный файл, на цілёвій вікі перейдьте на Ñторінку Special:Import Ñ– файл начітайте. Пак на Ñторінку MediaWiki:Gadgets-definition придайте наÑтупне:
+<pre>$2</pre>
+Ðа цілёвій вікі муÑите мати одповідны права (шпеціално права едітовати ÑÑ–Ñтемны повідомлїнÑ) Ñ– муÑить быти поволеный імпорт з файлу.',
+ 'gadgets-export-download' => 'Скачати',
+);
+
+/** Yakut (Саха тыла)
+ * @author HalanTul
+ */
+$messages['sah'] = array(
+ 'gadgets-desc' => 'БÑйÑлÑрин [[Special:Preferences|туруорууларыгар]] кыттааччылар [[Special:Gadgets|CSS уонна JavaScript гаджеттары]] холбонуохтарын Ñөп.',
+ 'prefs-gadgets' => 'Гаджеттар',
+ 'gadgets-prefstext' => 'Ðллара аналлаах гаджеттар иÑпииһÑктÑÑ€Ñ ÐºÓ©Ñтөллөр. Балары бÑйÑÒ¥ бÑлиÑÑ‚Ñммит ааккынан киирÑн туһаныаххын Ñөп.
+Бу үнүÑтүрүмүөннÑÑ€ үкÑүлÑÑ€Ñ JavaScript көмөтүнÑн үлÑлииллÑÑ€, онон туһаныаххын баҕарар буоллаххына JavaScript холбоо.
+Бу гаджеттар туроуорууларгын уларытар ÑирÑйгÑÑ€ үлÑлÑÑбÑÑ‚Ñ‚Ñрин умнума.
+
+Ó¨ÑÑÓ© маны умнума: бу гаджеттар MediaWiki Ñорҕото буолбатахтар, кинилÑри кыттааччылар бÑйÑлÑÑ€Ñ Ð°Ð¹Ð°Ð»Ð»Ð°Ñ€ уонна көрөллөр-иÑÑ‚ÑллÑÑ€. Дьаһабыллар гаджеттар иÑпииһÑктÑрин [[MediaWiki:Gadgets-definition|быһаарыы ÑирÑйдÑÑ€]] уонна [[Special:Gadgets|ойуулуур ÑирÑйдÑÑ€]] көмөлөрүнÑн уларытыахтарын Ñөп.',
+ 'gadgets' => 'Гаджеттар',
+ 'gadgets-title' => 'Гаджеттар',
+ 'gadgets-pagetext' => 'Манна [[MediaWiki:Gadgets-definition|быһаарыы ÑирÑйигÑÑ€]] Ñуруллубутун курдук [[Special:Preferences|туруоруу ÑирÑйин]] көмөтүнÑн холбонуон Ñөптөөх гаджеттар тиһиктÑÑ€Ñ ÐºÓ©Ñ€Ð´Ó©Ñ€Ò¯Ð»Ò¯Ð½Ð½Ñ.
+Этот ÑпиÑок позволÑет легко получить доÑтуп к Ñтраницам ÑиÑтемных Ñообщений, определÑющих опиÑÐ°Ð½Ð¸Ñ Ð¸ иÑходные коды гаджетов.',
+ 'gadgets-uses' => 'Туһанар',
+ 'gadgets-required-rights' => '$2 бÑйÑбил (быраап) ирдÑнÑÑ€: «$1»',
+ 'gadgets-default' => 'Барыларыгар холбоно Ñылдьар.',
+ 'gadgets-export' => 'ЭкÑпортаа',
+ 'gadgets-export-title' => 'Ҕааддьыты таһаарыы (ÑкÑпорт)',
+ 'gadgets-not-found' => '"$1" ҕааддьыт көÑтүбÑÑ‚Ñ.',
+ 'gadgets-export-text' => '$1 ҕааддьыты таһаарарга (ÑкÑпорт), «{{int:gadgets-export-download}}» тимÑҕи баттаа, хачайдаммыт билÑни бигÑргÑÑ‚,
+онтон угуохтаах биикиҥ Special:Import ÑирÑйигÑÑ€ киирÑн уган кÑбиÑ. Ол кÑÐ½Ð½Ñ MediaWiki:Gadgets-definition ÑирÑÐ¹Ð³Ñ Ð±Ñƒ уÑтуруокалары Ñп:
+<pre>$2</pre>
+Угуохтаах биикигÑÑ€ аналлаах көҥүллÑÑÑ… буолуохтааххын (ол иһигÑÑ€ тиһилик биллÑриилÑрин ÑÑ€ÑдÑÑкÑийÑлиир кыах), Ñбиитин ÑиÑрбÑÑ€Ð³Ñ Ð±Ð¸Ð»Ñни киллÑрии көҥүллÑммит буолуохтаах.',
+ 'gadgets-export-download' => 'Хачайдааһын',
+);
+
+/** Samogitian (Žemaitėška)
+ * @author Hugo.arg
+ */
+$messages['sgs'] = array(
+ 'gadgets' => 'RakondÄ',
+);
+
+/** Sinhala (සිංහල)
+ * @author Budhajeewa
+ * @author නන්දිමිතුරු
+ * @author බිඟුවà·
+ */
+$messages['si'] = array(
+ 'gadgets-desc' => 'උපයà·à¶œà·Šâ€à¶º [[Special:Gadgets|CSS හ෠ජà·à·€à·à·ƒà·Šà¶šà·Šâ€à¶»à·’ප්ට් මෙවලම්]] ඔවුන්ගේ [[Special:Preferences|අභිරුචීන්හිදී]] තà·à¶»à·à¶œà·à¶±à·”මට පරිà·à·“ලකයන් හට ඉඩ සලසයි',
+ 'prefs-gadgets' => 'මෙවලම්',
+ 'gadgets-prefstext' => 'පහත දà·à¶šà·Šà·€à·™à¶±à·Šà¶±à·š ඔබේ ගිණුම සඳහ෠සක්â€à¶»à·“ය කළ à·„à·à¶šà·’ විà·à·šà·‚ ගà·à¶¢à¶§à¶ºà¶±à·Š ලයිස්තුවකි.
+මෙම ගà·à¶¢à¶§à¶ºà¶±à·Š බොහ෠විට JavaScript මත පදනම් වේ, එම නිස෠ඒව෠ක්â€à¶»à·’යà·à¶­à·Šà¶¸à¶š වීම සඳහ෠ඔබේ පිරික්සකයේ JavaScript සක්â€à¶»à·“ය කොට තිබිය යුතුය.
+මෙම රිසිකෙරුම් පිටුව තුළ මෙම ගà·à¶¢à¶§à¶ºà¶±à·Š ක්â€à¶»à·’යà·à¶­à·Šà¶¸à¶š නොවන බව සලකන්න.
+
+මෙම විà·à·šà·‚ ගà·à¶¢à¶§à¶ºà¶±à·Š MediaWiki මෘදුකà·à¶‚ගයේ කොටසක් නොවන බව සලකන්න, බොහ෠විට ඒව෠ඔබේ ප්â€à¶»à·à¶¯à·šà·à·“ය විකියේ පරිà·à·“ලකයන් විසින් නිර්මà·à¶«à¶º කර නඩත්තු කරනු ලà·à¶¶à·š.
+ප්â€à¶»à·à¶¯à·šà·à·’ක පරිපà·à¶½à¶šà¶ºà¶±à·Š හට ගà·à¶¢à¶§à¶ºà¶±à·Šà·„à·’ [[MediaWiki:Gadgets-definition|අර්ථ දà·à¶šà·Šà·€à·“ම්]] à·„à· [[Special:Gadgets|පà·à·„à·à¶¯à·’ළිකෙරුම්]] වෙනස් කළ à·„à·à¶š.',
+ 'gadgets' => 'මෙවලම්',
+ 'gadgets-title' => 'මෙවලම්',
+ 'gadgets-pagetext' => 'පහත දà·à¶šà·Šà·€à·™à¶±à·Šà¶±à·š [[MediaWiki:Gadgets-definition|අර්ථදà·à¶šà·Šà·€à·“ම්]] කරන ලද ආකà·à¶»à¶º අනුව පරිà·à·“ලකයන්ට ඔවුන්ගේ [[Special:Preferences|රිසිකෙරුම් පිටුව]] මතදී සක්â€à¶»à·“ය කළ à·„à·à¶šà·’ විà·à·šà·‚ ගà·à¶¢à¶§à¶ºà¶±à·Š ලයිස්තුවකි.
+මෙම දළ විà·à·Šà¶½à·šà·‚ණය සියළු ගà·à¶¢à¶§à¶ºà¶±à·Šà¶œà·š විස්තර කෙරුම් හ෠කේතයන් අර්ථ දක්වන පද්ධති පණිවුඩ පිටු වෙත පහසු ළඟà·à·€à·“ම් ලබà·à¶¯à·š.',
+ 'gadgets-uses' => 'පරිà·à·“ලනය කරයි',
+ 'gadgets-export' => 'අපනයනය කරන්න',
+ 'gadgets-export-title' => 'ගà·à¶¢à¶§à¶º අපනයනය කරන්න',
+ 'gadgets-not-found' => '"$1" ගà·à¶¢à¶§à¶º හමුවුනේ නà·à¶­.',
+ 'gadgets-export-text' => '$1 ගà·à¶¢à¶§à¶º අපනයනය කෙරුමට, "{{int:gadgets-export-download}}" බොත්තම මත ක්ලික් කර අදà·à·… ගොනුව බ෠සුරà·à¶šà¶œà¶±à·Šà¶±. අනතුරුව ගමනà·à¶±à·Šà¶­ විකියේදී Special:Import වෙත ගොස් එය පටවන්න. පසුව MediaWiki:Gadgets-definition පිටුවට පහත දà·à¶šà·Šà·€à·™à¶±à·Šà¶± ඇතුලත් කරන්න:
+
+<pre>$2</pre>
+
+මේ සඳහ෠ගමනà·à¶±à·Šà¶­ විකියේදී ඔබ සතුව අවසරයන් කිහිපයක් (පද්ධති පණිවුඩ වෙනස් කිරීම ඇතුළුව) සහ ගොනුවකින් ආනයනය කිරීම සක්â€à¶»à·“යව තිබිය යුතුය.',
+ 'gadgets-export-download' => 'බà·à¶œà¶±à·Šà¶±',
+);
+
+/** Slovak (SlovenÄina)
+ * @author Helix84
+ */
+$messages['sk'] = array(
+ 'gadgets-desc' => 'Umožňuje používateľovi vybrať [[Special:Gadgets|CSS a JavaScriptové nástroje]] vo svojich [[Special:Preferences|nastaveniach]]',
+ 'prefs-gadgets' => 'Nástroje',
+ 'gadgets-prefstext' => 'Dolu je zoznam Å¡peciálych nástrojov, ktoré môžete zapnúť v rámci svojho úÄtu.
+Tieto nástroje sú zväÄÅ¡a založené na JavaScripte, takže aby fungovali, musíte maÅ¥ v prehliadaÄi zapnutý JavaScript.
+Nástroje nemajú vplyv na túto stránku nastavení.
+
+Tiež majte na pamäti, že tieto nástroje nie sú súÄasÅ¥ou MediaWiki a zvyÄajne ich vyvíjajú a udržiavajú používatelia vaÅ¡ej lokálnej wiki.
+Lokálni správcovia môžu upraviť zoznam dostupných nástrojov pomocou [[MediaWiki:Gadgets-definition|definícií]] a [[Special:Gadgets|popisov]].',
+ 'gadgets' => 'Nástroje',
+ 'gadgets-title' => 'Nástroje',
+ 'gadgets-pagetext' => 'Dolu je zoznam Å¡peciálych nástrojov, ktoré môžu používatelia zapnúť v rámci svojho úÄtu na svojej stránke [[Special:Preferences|nastavení]]. Tento zoznam definuje stránka [[MediaWiki:Gadgets-definition]]. Tento prehľad poskytuje jednoduchý prístup k systémovým stránkam, ktoré definujú popis a kód každého z nástrojov.',
+ 'gadgets-uses' => 'Použitia',
+ 'gadgets-required-rights' => 'Vyžaduje {{PLURAL:$2|právo $1|nasledovné práva: $1}}.',
+ 'gadgets-default' => 'Povolené pre každého v predvolenom nastavení.',
+ 'gadgets-export' => 'Exportovať',
+ 'gadgets-export-title' => 'Export nástroja',
+ 'gadgets-not-found' => 'Nástroj „$1†nebol nájdený.',
+ 'gadgets-export-text' => 'Ak chcete exportovaÅ¥ nástroj $1, kliknite na tlaÄidlo „{{int:gadgets-export-download}}“, uložte stiahnutý súbor,
+ choÄte na stránku Special:Import na cieľovej wiki a nahrajte ho. Potom pridajte nasledujúce na stránku MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Musíte mať príslušné oprávnenia na cieľovej wiki (vrátane práva na úpravu systémových správ) a import z nahraného súboru musí byť povolený.',
+ 'gadgets-export-download' => 'Stiahnuť',
+);
+
+/** Slovenian (SlovenÅ¡Äina)
+ * @author Dbc334
+ * @author Smihael
+ */
+$messages['sl'] = array(
+ 'gadgets-desc' => 'OmogoÄa uporabnikom, da vkljuÄijo [[Special:Gadgets|vtiÄnike CSS in JavaScript]] v [[Special:Preferences|nastavitvah]]',
+ 'prefs-gadgets' => 'VtiÄniki',
+ 'gadgets-prefstext' => 'Prikazan je seznam posebnih vtiÄnikov, ki si jih lahko omogoÄite za vaÅ¡ raÄun.
+VeÄinoma temeljijo na JavaScript, zato mora biti za njihovo delovanje omogoÄen v vaÅ¡em brskalniku.
+Ti vtiÄniki nimajo nobenega vpliva na to nastavitveno stran.
+
+Prav tako pomnite, da ti vtiÄniki niso del programja MediaWiki, in jih obiÄajno razvijajo ter vzdržujejo uporabniki na vaÅ¡em lokalnem wikiju.
+Administratorji lahko uredite seznam vtiÄnikov z uporabo [[Special:Gadgets|posebne strani]] in [[MediaWiki:Gadgets-definition|opisov]].',
+ 'gadgets' => 'VtiÄniki',
+ 'gadgets-title' => 'VtiÄniki',
+ 'gadgets-pagetext' => 'Spodaj je seznam posebnih vtiÄnikov (opredeljenih z [[MediaWiki:Gadgets-definition|definicijami]]), ki jih lahko uporabniki vkljuÄijo v svojih [[Special:Preferences|nastavitvah]].
+Ta pregled omogoÄa enostaven dostop do sistema za nastavljanje opisa in kode vsakega vtiÄnika posebej.',
+ 'gadgets-uses' => 'Uporablja',
+ 'gadgets-required-rights' => 'Zahteva {{PLURAL:$2|pravico $1|naslednji pravici: $1|naslednje pravice: $1}}.',
+ 'gadgets-default' => 'Privzeto omogoÄeno za vsakogar.',
+ 'gadgets-export' => 'Izvozi',
+ 'gadgets-export-title' => 'Izvoz vtiÄnika',
+ 'gadgets-not-found' => 'VtiÄnika »$1« ni mogoÄe najti.',
+ 'gadgets-export-text' => 'Za izvoz vtiÄnika $1 kliknite na gumb »{{int:gadgets-export-download}}«, shranite preneseno datoteko,
+pojdite na Special:Import na ciljnem wikiju in jo naložite. Nato dodajte naslednjo vrstico na stran MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Na ciljnem wikiju morate imeti ustrezna dovoljenja (vkljuÄno s pravico urejanja sistemskih sporoÄil) in omogoÄeni morajo biti uvozi iz naloženih datotek.',
+ 'gadgets-export-download' => 'Prenesi',
+);
+
+/** Albanian (Shqip)
+ * @author Mikullovci11
+ * @author Olsi
+ * @author Vinie007
+ */
+$messages['sq'] = array(
+ 'gadgets-desc' => 'Lejin përdoruesit të zgjedhin [[Special:Gadgets|CSS dhe JavaScript gadgets]] në [[Special:Preferences|preferencat]] e tyre',
+ 'prefs-gadgets' => 'Gadgets',
+ 'gadgets-prefstext' => "Më poshtë është një listë e mjeteve shtesë speciale që mund të aktivizohen për llogarinë tuaj.
+Këto mjete shtesë janë të bazuara kryesisht në JavaScript, pra JavaScript-i duhet aktivizuar në shfletuesin tuaj që ato të punojnë.
+Vini re se këto mjete shtesë nuk do të kenë efekt në këtë faqe preferencash.
+
+Gjithashtu vini re se këto mjete shtesë speciale nuk janë pjesë e softuerit MediaWiki, dhe zakonisht janë zhvilluar dhe mirëmbajtur nga përdoruesit në wiki-n tuaj lokal.
+Administratorët lokalë mund t'i ndryshojnë [[MediaWiki:Gadgets-definition|përkufizimet]] dhe [[Special:Gadgets|përshkrimet]] e mjeteve shtesë të mundshme.",
+ 'gadgets' => 'Gadgets',
+ 'gadgets-title' => 'Gadgets',
+ 'gadgets-pagetext' => 'Më poshtë është një listë e mjeteve shtesë speciale që mund të aktivizohen në [[Special:Preferences|faqen e preferencave]] të tyre, siç është përcaktuar nga [[MediaWiki:Gadgets-definition|përkufizimet]].
+Kjo pasqyrë siguron qasje të lehtë në faqet e mesazheve të sistemit që përkufizon përshkrimin e çdo mjeti shtesë dhe kodin.',
+ 'gadgets-uses' => 'Përdorues',
+ 'gadgets-required-rights' => 'Kërkon {{PLURAL:$2| $1 drejtën | drejta: $1 }}.',
+ 'gadgets-default' => 'Aktivizuar për të gjithë nga default.',
+ 'gadgets-export' => 'Eksporto',
+ 'gadgets-export-title' => 'Eksport mjetesh shtesë',
+ 'gadgets-not-found' => 'Mjeti shtesë "$1" nuk u gjet.',
+ 'gadgets-export-text' => 'Për eksportimin e mjetit shtesë $1, klikoni në butonin "{{int:gadgets-export-download}}", ruani skedën e shkarkuar,
+shkoni tek Speciale:Import në wiki-n e destinuar dhe ngarkojeni. Më pas shtoni atë që shihni më poshtë tek MediaWiki:
+<pre>$2</pre>
+Ju duhet të keni leje të përshtatshme në wiki-n e destinuar (duke përfshirë të drejtën e redaktimit të mesazheve të sistemit) dhe importi nga ngarkimet e skedave duhet të jetë i aktizuar.',
+ 'gadgets-export-download' => 'Shkarko',
+);
+
+/** Serbian Cyrillic ekavian (‪СрпÑки (ћирилица)‬)
+ * @author Millosh
+ * @author Rancher
+ * @author Жељко Тодоровић
+ */
+$messages['sr-ec'] = array(
+ 'gadgets-desc' => 'Омогућава кориÑницима да изаберу прилагођене [[Special:Gadgets|CSS и јаваÑкрипт гаџете]] у Ñвојим [[Special:Preferences|подешавањима]]',
+ 'prefs-gadgets' => 'Гаџети',
+ 'gadgets-prefstext' => 'ИÑпод Ñе налази ÑпиÑак поÑебних гаџета које можете да омогућите на Ñвом налогу.
+Ове Ñправице Ñу углавном заÑноване на јаваÑкрипти, тако да она мора бити омогућена.
+Гаџети неће утицати на Ñтраницу за подешавање.
+
+Они ниÑу део Ñофтвера Медијавики, већ Ñе развијају и одржавају од Ñтране кориÑника ваше викије.
+ÐдминиÑтратори могу да измене [[MediaWiki:Gadgets-definition|значења]] и [[Special:Gadgets|опиÑе]] доÑтупних гаџета.',
+ 'gadgets' => 'Гаџети',
+ 'gadgets-title' => 'Гаџети',
+ 'gadgets-pagetext' => 'ИÑпод је ÑпиÑак поÑебних гаџета које кориÑници могу да омогуће на Ñвојој [[Special:Preferences|Ñтраници за подешавање]], као што је наведено у [[MediaWiki:Gadgets-definition|дефиницијама]].
+Овај преглед пружа брз приÑтуп ÑиÑтемÑким порукама које дефинишу Ñваки Ð¾Ð¿Ð¸Ñ Ð¸ кôд гаџета.',
+ 'gadgets-uses' => 'КориÑти Ñе',
+ 'gadgets-export' => 'Извези',
+ 'gadgets-export-title' => 'Извоз гаџета',
+ 'gadgets-not-found' => 'Гаџет „$1“ није пронађен.',
+ 'gadgets-export-text' => "Да биÑте извезли $1 гаџет, кликните на дугме „{{int:gadgets-export-download}}“, Ñачувајте преузету датотеку,
+пређите на ''Special:Import'' на жељеној викији и пошаљите гаџет. Ðакон тога, додајте Ñледеће на ''MediaWiki:Gadgets-definition'' Ñтраницу:
+<pre>$2</pre>
+Морате имати одређене дозволе на наведеној викији (укључујући и право за уређивање ÑиÑтемÑких порука), док увоз преко датотека мора бити омогућен.",
+ 'gadgets-export-download' => 'Преузми',
+);
+
+/** Serbian Latin ekavian (‪Srpski (latinica)‬)
+ * @author Michaello
+ * @author Жељко Тодоровић
+ */
+$messages['sr-el'] = array(
+ 'prefs-gadgets' => 'Gedžeti',
+ 'gadgets' => 'gedžeti',
+ 'gadgets-title' => 'gedžeti',
+ 'gadgets-uses' => 'koristi se',
+);
+
+/** Seeltersk (Seeltersk)
+ * @author Pyt
+ */
+$messages['stq'] = array(
+ 'gadgets-desc' => 'Lät Benutsere in hiere [[Special:Preferences|persöönelke Ienstaalengen]] foardefinierde [[Special:Gadgets|CSS- un JavaScript-Gadgets]] aktivierje',
+ 'prefs-gadgets' => 'Gadgets',
+ 'gadgets-prefstext' => 'Lieste fon spezielle Hälpere do der fon älken Benutser aktivierd wäide konnen.
+Do Hälpere basierje maastens ap Javascript, deeruum mout Javascript in dän Browser aktivierd weese, uumdät jo funktionierje.
+Do Hälpere funktionierje oawers nit ap disse Siede mäd persöönelke Ienstaalengen.
+
+Buutendät is tou beoachtjen, dät disse Hälpere in Algemeenen nit Paat fon MediaWiki sunt, man maast fon
+Benutsere fon lokoale Wikis äntwikkeld un fersuurged wäide. Lokoale Wiki-Administratore konnen do ferföichboare Hälpere beoarbaidje. Deerfoar stounde do [[MediaWiki:Gadgets-definition|Definitione]] un [[Special:Gadgets|Beschrieuwengen]] tou Ferföigenge.',
+ 'gadgets' => 'Gadgets',
+ 'gadgets-title' => 'Gadgets',
+ 'gadgets-pagetext' => 'Lieste fon spezielle Hälpere, do der foar älken Benutser in sien [[Special:Preferences|persöönelke Ienstaalengen]] ferföichboar sunt, as [[MediaWiki:Gadgets-definition| definierd]].
+Disse Uursicht bjut direkten Tougoang tou do Systemättergjuchte, do ju Beschrieuwenge as uk dän Programkode fon älken Hälper änthoolde.',
+ 'gadgets-uses' => 'Benutsed',
+);
+
+/** Sundanese (Basa Sunda)
+ * @author Irwangatot
+ */
+$messages['su'] = array(
+ 'gadgets-desc' => 'Matak bisa pamaké milih [[Special:Gadgets|Gajet CSS sarta Javascript]] ngaliwatan [[Special:Preferences|Préferénsi]] maranéhanana',
+);
+
+/** Swedish (Svenska)
+ * @author Ainali
+ * @author Boivie
+ * @author Cohan
+ * @author Lejonel
+ * @author M.M.S.
+ */
+$messages['sv'] = array(
+ 'gadgets-desc' => 'Låter användare aktivera personliga [[Special:Gadgets|CSS- och JavaScript-finesser]] genom sina [[Special:Preferences|inställningar]]',
+ 'prefs-gadgets' => 'Finesser',
+ 'gadgets-prefstext' => 'Härunder finns en lista över finesser som du kan aktivera för ditt konto.
+De flesta funktionerna är baserade på JavaScript, så du måste ha JavaScript aktiverat i din webbläsare för att de ska fungera.
+Notera att de här tilläggsfunktionerna inte kommer ha någon effekt den här inställningssidan.
+
+Notera också att dessa finesser inte är en del av MediaWiki-programvaran, och är för det mesta utvecklade och underhållna av användare på den här wikin.
+Lokala administratörer kan redigera [[MediaWiki:Gadgets-definition|definitionerna]] och [[Special:Gadgets|beskrivningarna]] av de tillgängliga finesserna.',
+ 'gadgets' => 'Finesser',
+ 'gadgets-title' => 'Finesser',
+ 'gadgets-pagetext' => 'Härunder finns en lista över finesser som användare kan aktivera i sina [[Special:Preferences|inställningar]], definierad av [[MediaWiki:Gadgets-definition|definieringarna]].
+Den här översikten ger enkel åtkomst till de systemmeddelanden som definierar beskrivningarna och koden för varje finess.',
+ 'gadgets-uses' => 'Använder',
+ 'gadgets-required-rights' => 'Kräver {{PLURAL:$2|$1 rättighet|följande rättigheter: $1}}.',
+ 'gadgets-default' => 'Som standard aktiverat för alla.',
+ 'gadgets-export' => 'Exportera',
+ 'gadgets-export-title' => 'Exportera finess',
+ 'gadgets-not-found' => 'Tillägg "$1" hittades inte.',
+ 'gadgets-export-text' => 'För att exportera tillägg $1, klicka på "{{int:gadgets-export-download}}"-knappen, spara den nedladdade filen, gå till Special:Importera på destinationswikin och ladda upp den. Lägg sedan till följande till MediaWiki:Gadgets-definition sidan:
+<pre>$2</pre>
+Du måste ha tillräckliga behörigheter på destinationswikin (inklusive möjlighet att ändra systemmeddelanden) och att importera från filuppladningar måste vara aktiverad.',
+ 'gadgets-export-download' => 'Ladda ner',
+);
+
+/** Swahili (Kiswahili) */
+$messages['sw'] = array(
+ 'gadgets-export-download' => 'Pakua',
+);
+
+/** Tamil (தமிழà¯)
+ * @author TRYPPN
+ */
+$messages['ta'] = array(
+ 'prefs-gadgets' => 'கரà¯à®µà®¿à®•à®³à¯',
+ 'gadgets' => 'கரà¯à®µà®¿à®•à®³à¯',
+ 'gadgets-title' => 'கரà¯à®µà®¿à®•à®³à¯',
+ 'gadgets-uses' => 'பயனà¯à®ªà®¾à®Ÿà¯à®•à®³à¯',
+ 'gadgets-export' => 'à®à®±à¯à®±à¯à®®à®¤à®¿ செயà¯',
+ 'gadgets-export-title' => 'கரà¯à®µà®¿à®¯à¯ˆ à®à®±à¯à®±à¯à®®à®¤à®¿ செயà¯',
+ 'gadgets-not-found' => "''$1'' எனà¯à®± கரà¯à®µà®¿ காணபà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ.",
+ 'gadgets-export-download' => 'பதிவிறகà¯à®•à®®à¯ செயà¯',
+);
+
+/** Telugu (తెలà±à°—à±)
+ * @author Kiranmayee
+ * @author Mpradeep
+ * @author Veeven
+ */
+$messages['te'] = array(
+ 'gadgets-desc' => 'వాడà±à°•à°°à±à°²à°¨à± వారి [[Special:Preferences|à°…à°­à°¿à°°à±à°šà±à°²]]లో à°ªà±à°°à°¤à±à°¯à±‡à°• [[Special:Gadgets|CSS మరియౠజావాసà±à°•à±à°°à°¿à°ªà±à°Ÿà± గాడà±à°œà±†à°Ÿà±à°²à°¨à±]] à°Žà°‚à°šà±à°•à±‹à°¨à°¿à°¸à±à°¤à±à°‚ది',
+ 'prefs-gadgets' => 'ఉపకరణాలà±',
+ 'gadgets-prefstext' => 'à°ˆ దిగà±à°µ ఉనà±à°¨ à°ªà±à°°à°¤à±à°¯à±‡à°• ఉపకరణాల à°¨à±à°‚à°¡à°¿ సభà±à°¯à±à°²à± తమకౠకావలసినవి à°Ÿà°¿à°•à±à°•à± పెటà±à°Ÿà°¿ మీ ఖాతాకౠవీటిని ఎనేబà±à°²à± చేసà±à°•à±Šà°µà°šà±à°šà±. à°ˆ ఉపకరణాలౠజావాసà±à°•à±à°°à°¿à°ªà±à°Ÿà±à°ªà±ˆ ఆధారపడి పనిచేసà±à°¤à°¾à°¯à°¿ కాబటà±à°Ÿà°¿ ఇవి సరిగా పనిచెయà±à°¯à°¾à°²à°‚టే మీ à°¬à±à°°à±Œà°œà°°à±à°²à±‹ జావాసà±à°•à±à°°à°¿à°ªà±à°Ÿà±à°¨à± ఎనేబà±à°²à± చేసి ఉండాలి. à°ˆ ఉపకరణాలౠఅభిరà±à°šà±à°² పేజీపై à°Žà°Ÿà±à°µà°‚à°Ÿà°¿ à°ªà±à°°à°­à°¾à°µà°¾à°¨à±à°¨à°¿ à°•à°²à±à°—జేయవని గమనించాలి.
+
+అలాగే à°ˆ à°ªà±à°°à°¤à±à°¯à±‡à°• ఉపకరణాలౠమీడియావికీ సాఫà±à°Ÿà±à°µà±‡à°°à±à°²à±‹ భాగమౠకాదని గమనించాలి. వీటిని సాధారణంగా మీ à°¸à±à°¥à°¾à°¨à°¿à°• వికీలోని సభà±à°¯à±à°²à±‡ తయారà±à°šà±‡à°¸à°¿ నిరà±à°µà°¹à°¿à°¸à±à°¤à±‚ ఉంటారà±. à°¸à±à°¥à°¾à°¨à°¿à°• వికీ నిరà±à°µà°¾à°¹à°•à±à°²à± లభà±à°¯à°®à°¯à±à°¯à±‡ ఉపకరణాలనౠ[[MediaWiki:Gadgets-definition|ఉపకరణాల నిరà±à°µà°šà°¨]] మరియౠ[[Special:Gadgets|ఉపకరణాల వివరణ]] పేజీలనౠఉపయోగించి మారà±à°ªà±à°²à±à°šà±‡à°°à±à°ªà±à°²à± చేయవచà±à°šà±.',
+ 'gadgets' => 'ఉపకరణాలà±',
+ 'gadgets-title' => 'ఉపకరణాలà±',
+ 'gadgets-pagetext' => 'à°ˆ దిగà±à°µà°¨ ఉనà±à°¨ à°ªà±à°°à°¤à±à°¯à±‡à°• ఉపకరణాల à°¨à±à°‚à°¡à°¿ సభà±à°¯à±à°²à± తమకౠకావలసినవి తమ [[Special:Preferences|à°…à°­à°¿à°°à±à°šà±à°²à± పేజీ]]లోని ఉపకరణాల టాబà±à°²à±‹ à°Ÿà°¿à°•à±à°•à± పెటà±à°Ÿà°¿ ఎనేబà±à°²à± చేసà±à°•à±Šà°¨à±‡ అవకాశం ఉనà±à°¨à°¦à°¿. వీటిని [[MediaWiki:Gadgets-definition|ఉపకరణాల నిరà±à°µà°šà°¨]] పేజీలో నిరà±à°µà°šà°¿à°‚à°šà°¡à°‚ జరిగింది. à°ˆ à°šà°¿à°¨à±à°¨ పరిచయం ఆయా ఉపకరణాల నిరà±à°µà°šà°¨ మరియౠకోడà±à°•à± సంబంధించిన మీడియావికీ సందేశాలకౠసà±à°²à±à°µà±à°—à°¾ చేరà±à°•à±à°¨à±‡à°‚à°¦à±à°•à± లింకà±à°²à°¨à± సమకూరà±à°šà±à°¤à±à°‚ది.',
+ 'gadgets-uses' => 'ఉపయోగించే ఫైళà±à°³à±',
+ 'gadgets-export' => 'à°Žà°—à±à°®à°¤à°¿à°‚à°šà±',
+ 'gadgets-export-download' => 'దింపà±à°•à±‹à°‚à°¡à°¿',
+);
+
+/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic))
+ * @author Ibrahim
+ */
+$messages['tg-cyrl'] = array(
+ 'gadgets-desc' => 'Ðз тариқи Ñаҳифаи [[Special:Preferences|тарҷиҳот]] ба корбарон имкониÑти интихоби абзорҳои шахÑии [[Special:Gadgets|CSS ва ҶаваСкрипт]]ро медиҳад.',
+ 'prefs-gadgets' => 'Ðбзорҳо',
+ 'gadgets-prefstext' => 'Дар зер феҳриÑти аз абзорҳои вижаеро мебинед, ки барои ҳиÑобатон метавонед фаъол кунед. Ин абзорҳо бештар дар аÑоÑи ҶаваСкрипт ҳаÑтанд, Ð¿Ð°Ñ Ð±Ð°Ñ€Ð¾Ð¸ иÑтфода аз онҳо боÑд ҶаваСкриптро дар мурургаратон фаъол кунед. Таваҷҷӯҳ кунед, ки ин абзорҳо наметавонанд Ñаҳифаи тарҷиҳотро тағйир диҳанд.
+
+Диққат дошта бошед, ки ин абзорҳои ҷузъӣ аз нармафзори МедиаВики неÑтанд ва ҳамчун Ñке аз қиÑмҳои он ба ҳиÑоб намераванд, ва одатан аз тарафи корбарони ҳар вики Ñохта ва нигаҳдорӣ мешаванд. Мудирони ҳар вики метавонанд бо иÑтифода аз Ñаҳифаҳои [[MediaWiki:Gadgets-definition]] ва [[Special:Gadgets]] ба вироиши абзорҳо бипардозанд.',
+ 'gadgets' => 'Ðбзорҳо',
+ 'gadgets-title' => 'Ðбзорҳо',
+ 'gadgets-pagetext' => 'Дар зер феҳриÑти абзорҳои вижаро мебинед, ки корбарон метавонанд дар Ñаҳифаи тарҷиҳоти худ мутобиқи [[MediaWiki:Gadgets-definition]] фаъол кунанд. Ин хулоÑа даÑтраÑии оÑонро ба Ñаҳифаи пайғомҳои ÑиÑтемавӣ, ки шомили тавзеҳот ва коди ҳар абзор аÑÑ‚, пешкаш мекунад.',
+ 'gadgets-uses' => 'Корбурдҳо',
+);
+
+/** Tajik (Latin) (Тоҷикӣ (Latin))
+ * @author Liangent
+ */
+$messages['tg-latn'] = array(
+ 'gadgets-desc' => 'Az tariqi sahifai [[Special:Preferences|tarçihot]] ba korbaron imkonijati intixobi abzorhoi şaxsiji [[Special:Gadgets|CSS va ÇavaSkript]]ro medihad.',
+ 'prefs-gadgets' => 'Abzorho',
+ 'gadgets' => 'Abzorho',
+ 'gadgets-title' => 'Abzorho',
+ 'gadgets-uses' => 'Korburdho',
+);
+
+/** Thai (ไทย)
+ * @author Ans
+ * @author Passawuth
+ */
+$messages['th'] = array(
+ 'gadgets-desc' => 'ให้ผู้ใช้สามารถเลือà¸à¹ƒà¸Šà¹‰ [[Special:Gadgets|CSS à¹à¸¥à¸° จาวาสคริปต์]] ที่สร้างขึ้นเป็นà¸à¸²à¸£à¹€à¸‰à¸žà¸²à¸° ในหน้า [[Special:Preferences|ตั้งค่า]] ได้',
+ 'prefs-gadgets' => 'อุปà¸à¸£à¸“์เสริม',
+ 'gadgets-prefstext' => 'ด้านล่างเป็นรายà¸à¸²à¸£à¸­à¸¸à¸›à¸à¸£à¸“์เสริม ที่บัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‚องคุณสามารถเปิดใช้งานได้
+อุปà¸à¸£à¸“์เสริมเหล่านี้ส่วนใหà¸à¹ˆà¸ˆà¸°à¸—ำงานผ่านจาวาสคริปต์ ดังนั้นเบราเซอร์ของคุณต้องเปิดใช้งานจาวาสคริปต์จึงจะสามารถใช้อุปà¸à¸£à¸“์เสริมเหล่านี้ได้
+อย่างไรà¸à¹‡à¸•à¸²à¸¡à¸­à¸¸à¸›à¸à¸£à¸“์เสริมเหล่านี้จะไม่ส่งผลหรือประมวลผลใดๆ ในหน้าตั้งค่านี้
+
+นอà¸à¸ˆà¸²à¸à¸™à¸µà¹‰à¸­à¸¸à¸›à¸à¸£à¸“์เสริมพิเศษเหล่านี้ไม่ได้เป็นส่วนหนึ่งของซอฟต์à¹à¸§à¸£à¹Œà¸¡à¸µà¹€à¸”ียวิà¸à¸´ à¹à¸•à¹ˆà¸žà¸±à¸’นาà¹à¸¥à¸°à¸”ูà¹à¸¥à¹‚ดยผู้ใช้งานในวิà¸à¸´à¸—ี่คุณใช้อยู่
+โดยผู้ดูà¹à¸¥à¸‚องวิà¸à¸´à¸™à¸±à¹‰à¸™à¹† สามารถà¹à¸à¹‰à¹„ขอุปà¸à¸£à¸“์เสริมที่มีอยู่ผ่านทางหน้า [[MediaWiki:Gadgets-definition|definition]] à¹à¸¥à¸° [[Special:Gadgets|คำอธิบาย]]',
+ 'gadgets' => 'อุปà¸à¸£à¸“์เสริม',
+ 'gadgets-title' => 'อุปà¸à¸£à¸“์เสริม',
+ 'gadgets-pagetext' => 'รายà¸à¸²à¸£à¸”้านล่างเป็นรายà¸à¸²à¸£à¸­à¸¸à¸›à¸à¸£à¸“์เสริมพิเศษที่ผู้ใช้สามารถเปิดใช้ในส่วน[[Special:Preferences|à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าส่วนตัว]] อุปà¸à¸£à¸“์เสริมทั้งหมดได้ถูà¸à¸à¸³à¸«à¸™à¸”ไว้ใน [[MediaWiki:Gadgets-definition|ส่วนà¸à¸³à¸«à¸™à¸”อุปà¸à¸£à¸“์เสริม]]
+ขณะที่หน้านี้จะà¸à¸¥à¹ˆà¸²à¸§à¹‚ดยรวมเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸š คำอธิบายà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™ à¹à¸¥à¸° โค้ดของอุปà¸à¸£à¸“์เสริมà¹à¸•à¹ˆà¸¥à¸°à¸•à¸±à¸§',
+ 'gadgets-uses' => 'เรียà¸à¹ƒà¸Šà¹‰',
+);
+
+/** Turkmen (Türkmençe)
+ * @author Hanberke
+ */
+$messages['tk'] = array(
+ 'gadgets-desc' => 'Ulanyjylaryň [[Special:Preferences|ileri tutmalarynda]] ýörite [[Special:Gadgets|CSS we JavaScript gajetlerini]] saýlamaklaryna rugsat berýär',
+ 'prefs-gadgets' => 'Gajetler',
+ 'gadgets' => 'Gajetler',
+ 'gadgets-title' => 'Gajetler',
+ 'gadgets-uses' => 'Ulanýar',
+ 'gadgets-export' => 'Eksportirle',
+ 'gadgets-export-title' => 'Gajet eksporty',
+ 'gadgets-not-found' => '"$1" gajeti tapylmady.',
+ 'gadgets-export-download' => 'Göçürip al',
+);
+
+/** Tagalog (Tagalog)
+ * @author AnakngAraw
+ */
+$messages['tl'] = array(
+ 'gadgets-desc' => 'Nagpapahintulot sa mga tagagamit na makapili ng pinasadyang [[Special:Gadgets|mga gadyet na pang-CSS at pang-JavaScript]] sa kanilang [[Special:Preferences|mga kagustuhan]]',
+ 'prefs-gadgets' => 'Mga gadyet (kasangkapan)',
+ 'gadgets-prefstext' => "Nasa ibaba ang isang talaan ng mga natatanging kasangkapan (gadyet) na maaari mong paganahin para sa iyong kuwenta/akawnt.
+Karamihan sa mga gadyet na ito ang nakaugnay/nakabatay sa ''JavaScript'', kaya dapat na paandarin ang ''JavaScript'' sa iyong pantingin-tingin (''browser'') upang gumana.
+Pakitandaang walang magiging epekto sa pahina ng mga kagustuhang ito ang ganitong mga gadyet.
+
+Pakitandaan din na ang mga natatanging gadyet na ito ay hindi kabahagi ng sopwer ng MediaWiki, at karaniwang pinaunlad at pinananatili ng mga tagagamit sa katutubo/lokal mong wiki.
+Maaaring baguhin ng pampook/lokal na mga tagapangasiwa ang makukuhang mga gadyet sa pamamagitan ng [[MediaWiki:Gadgets-definition|mga kahulugan]] at [[Special:Gadgets|mga paglalarawan]].",
+ 'gadgets' => 'Mga gadyet (kasangkapan)',
+ 'gadgets-title' => 'Mga gadyet (kasangkapan)',
+ 'gadgets-pagetext' => 'Nasa ibaba ang isang talaan ng natatanging mga kasangkapan (gadyet) na mapapagana ng mga tagagamit sa kanilang [[Special:Preferences|pahina ng mga kagustuhan]], ayon sa nilalarawan ng [[MediaWiki:Gadgets-definition|mga kahulugan]].
+Nagbibigay ang pagtalakay na ito ng magaang na daan/akseso patungo sa mga pahina ng sistemang pangmensahe na nagbibigay kahulugan sa paglalarawan at kodigo ng bawat gadyet.',
+ 'gadgets-uses' => 'Mga mapaggagamitan',
+ 'gadgets-required-rights' => 'Nangangailangan ng {{PLURAL:$2|$1 na karapatan|sumusunod na mga karapatan: $1}}.',
+ 'gadgets-default' => 'Likas ang pagkakatakda na pinapagana para sa lahat.',
+ 'gadgets-export' => 'Iluwas',
+ 'gadgets-export-title' => 'Pagluluwas ng gadyet',
+ 'gadgets-not-found' => 'Hindi natagpuan ang gadyet na "$1".',
+ 'gadgets-export-text' => 'Upang iluwas ang gadyet na $1, pindutin ang pindutang "{{int:gadgets-export-download}}", sagipin ang talaksang ikinargang paibaba,
+pumunta sa Special:Import na nasa kapupuntahang wiki at ikarga itong paitaas. Pagkaraan ay idagdag ang sumusunod sa pahina ng MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Dapat kang mayroong nararapat na mga pahintulot sa kapupuntahang wiki (kasama ang karapatang mamatnugot ng mga mensahe ng sistema) at dapat na gumagana ang mga inangkat mula sa mga talaksang ikinargang paitaas',
+ 'gadgets-export-download' => 'Ikargang pababa',
+);
+
+/** Turkish (Türkçe)
+ * @author Erkan Yilmaz
+ * @author Joseph
+ * @author Karduelis
+ * @author Koc61
+ */
+$messages['tr'] = array(
+ 'gadgets-desc' => 'Kullanıcıların [[Special:Preferences|tercihlerinde]] özel [[Special:Gadgets|CSS ve JavaScript gadgetlerini]] seçmelerine izin verir',
+ 'prefs-gadgets' => 'Gadgetler',
+ 'gadgets-prefstext' => 'Aşağıdaki, hesabınız için etkinleştirebileceğiniz özel gadgetlerin listesidir.
+Bu gadgetler çoğunlukla JavaScript temellidir, bu yüzden çalışmaları için tarayıcınızda JavaScript etkinleştirilmelidir.
+Bu gadgetlerin bu tercihler sayfasına bir etkisinin olmayacağını unutmayın.
+
+Ayrıca unutmayın ki, bu özel gadgetler MedyaViki yazılımının bir parçası değildir, ve genellikle yerel vikinizdeki kullanıcılar tarafından geliştirilip, idame ettirilirler.
+Yerel yöneticiler [[MediaWiki:Gadgets-definition|tanımları]] ve [[Special:Gadgets|açıklamaları]] kullanarak uygun gadgetleri değiştirebilirler.',
+ 'gadgets' => 'Küçük araçlar',
+ 'gadgets-title' => 'Gadgetler',
+ 'gadgets-pagetext' => "Aşağıdaki, kullanıcıların [[Special:Preferences|tercihler sayfasında]] etkin hale getirebileceği, [[MediaWiki:Gadgets-definition|tanımlarla]] belirtildiği gibi, özel gadgetlerin bir listesidir.
+Bu genel bakış, her gadget'in tanımını ve kodunu belirten sistem mesaj sayfalarına kolay erişim sağlar.",
+ 'gadgets-uses' => 'Kullanıyor',
+ 'gadgets-export' => 'Dışa aktar',
+ 'gadgets-export-title' => 'Gadget dışa aktarımı',
+ 'gadgets-not-found' => 'Gadget "$1" bulunamadı.',
+ 'gadgets-export-text' => '$1 gadgetini dışa aktarmak için "{{int:gadgets-export-download}}" düğmesine tıklayın, yüklenen dosyayı kaydedin, hedef vikide Special:Import sayfasına gidin ve yükleyin. Sonra aşağıdakini MediaWiki:Gadgets-definition sayfasına ekleyin:
+<pre>$2</pre>
+Hedef vikide uygun izinlerinizin olması (sistem mesajlarını değiştirmek yetkisi dahil) ve dosyadan içe aktarmanın etkinleştirilmiş olması gerekir.',
+ 'gadgets-export-download' => 'Ä°ndir',
+);
+
+/** Tatar (Cyrillic) (Татарча/Tatarça (Cyrillic))
+ * @author Ильнар
+ */
+$messages['tt-cyrl'] = array(
+ 'prefs-gadgets' => 'Гаджетлар',
+ 'gadgets' => 'Гаджетлар',
+ 'gadgets-title' => 'Гаджетлар',
+);
+
+/** Ukrainian (УкраїнÑька)
+ * @author AS
+ * @author Ahonc
+ * @author Prima klasy4na
+ * @author Riwnodennyk
+ */
+$messages['uk'] = array(
+ 'gadgets-desc' => 'ДозволÑÑ” кориÑтувачам обирати [[Special:Gadgets|CSS- та JavaScript-додатки]] у Ñвоїх [[Special:Preferences|налаштуваннÑÑ…]]',
+ 'prefs-gadgets' => 'Додатки',
+ 'gadgets-prefstext' => 'Ðижче наведений ÑпиÑок Ñпеціальних додатків, Ñкі ви можете ввімкнути Ð´Ð»Ñ Ñвого облікового запиÑу.
+Ці додатки переважно базуютьÑÑ Ð½Ð° JavaScript, тому ви повинні ввімкнути JavaScript Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб вони працювали.
+Зауважте, що ці додатки не працюють на Ñторінці налаштувань.
+
+Також зауважте, що ці додатки не Ñ” чаÑтиною MediaWiki Ñ– зазвичай розроблÑÑŽÑ‚ÑŒÑÑ Ñ– обÑлуговуютьÑÑ ÐºÐ¾Ñ€Ð¸Ñтувачами локальної вікі.
+ÐдмініÑтратори можуть змінювати ÑпиÑок додатків за допомогою Ñторінок Ñ—Ñ… [[MediaWiki:Gadgets-definition|визначеннÑ]] та [[Special:Gadgets|опиÑу]].',
+ 'gadgets' => 'Додатки',
+ 'gadgets-title' => 'Додатки',
+ 'gadgets-pagetext' => 'Ðижче наведений ÑпиÑок додатків, Ñкі можна ввімкнути на [[Special:Preferences|Ñторінці налаштувань]]. СпиÑок міÑтитьÑÑ Ð½Ð° [[MediaWiki:Gadgets-definition|Ñторінці визначень]].
+Цей ÑпиÑок дозволÑÑ” легко переглÑдати ÑиÑтемні повідомленнÑ, Ñкі міÑÑ‚ÑÑ‚ÑŒ опиÑи Ñ– коди додатків.',
+ 'gadgets-uses' => 'ВикориÑтовує',
+ 'gadgets-export' => 'ЕкÑпортувати',
+ 'gadgets-export-title' => 'ЕкÑпорт додатка',
+ 'gadgets-not-found' => 'Додаток "$1" не знайдено.',
+ 'gadgets-export-text' => 'Ðби екÑпортувати додаток $1, натиÑніть на ґудзик "{{int:gadgets-export-download}}", збережіть завантажений файл,
+перейдіть до Special:Import на потібній віці Ñ– відвантажте його там. Тоді додайте наÑтупний текÑÑ‚ на Ñторінку MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Ви повинні мати відповідні права на цільовій віці (зокрема на Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÑиÑтемних повідомлень), окрім того має бути ввімкнена можливіÑÑ‚ÑŒ імпорту з файлу.',
+ 'gadgets-export-download' => 'Завантажити',
+);
+
+/** Vèneto (Vèneto)
+ * @author Candalua
+ */
+$messages['vec'] = array(
+ 'gadgets-desc' => 'Consente ai utenti de selezionar [[Special:Gadgets|acessori CSS e JavaScript]] ne le proprie [[Special:Preferences|preferense]]',
+ 'prefs-gadgets' => 'Acessori',
+ 'gadgets-prefstext' => "De seguito se cata na lista de acessori speciali (''gadget'') che se pol abilitar par el proprio account.
+La mazor parte de sti acessori la se basa su JavaScript, e quindi te ghè da abilitar JavaScript sul to browser se te vol che i funsiona coretamente. Nota che i accessori no i gà nissun efeto in sta pagina de preferense.
+
+Nota anca che sti acessori speciali no i fa parte del software MediaWiki e i vien de solito realizà e gestìi dai utenti de ogni sito wiki. I aministradori del sito i pol modificar la lista dei acessori disponibili tramite le pagine [[MediaWiki:Gadgets-definition|definissioni]] e [[Special:Gadgets|descrissioni]].",
+ 'gadgets' => 'Acessori',
+ 'gadgets-title' => 'Acessori',
+ 'gadgets-pagetext' => "De seguito vien presentà n'elenco de acessori (''gadget'') che i utenti i pol abilitar su la so [[Special:Preferences|pagina de le preferenze]], seguendo le definizion riportà in [[MediaWiki:Gadgets-definition]].
+Sta panoramica la fornisse un comodo mecanismo par accédar ai messagi de sistema nei quali xe definìo la descrizion e el codice de ciascun acessorio.",
+ 'gadgets-uses' => 'Dopara',
+ 'gadgets-export' => 'Esporta',
+ 'gadgets-export-title' => 'Esporta acessorio',
+ 'gadgets-not-found' => 'Acessorio "$1" mia catà.',
+ 'gadgets-export-text' => 'Par esportar el gadget $1, struca "{{int:gadgets-export-download}}", salva el file, va su Special:Import de la wiki de destinassion e carichelo. Dopo zonta sta roba qua su MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Te serve i parmessi su la wiki de destinassion (compreso quelo de modificar i messaji de sistema) e l\'inportassion dei file la deve essar ativà.',
+ 'gadgets-export-download' => 'Descarga',
+);
+
+/** Veps (Vepsan kel')
+ * @author Игорь БродÑкий
+ */
+$messages['vep'] = array(
+ 'prefs-gadgets' => 'Gadžetad',
+ 'gadgets' => 'Gadžetad:',
+ 'gadgets-title' => 'Gadžetad',
+ 'gadgets-uses' => 'Kävutab',
+);
+
+/** Vietnamese (Tiếng Việt)
+ * @author Meno25
+ * @author Minh Nguyen
+ * @author Vinhtantran
+ */
+$messages['vi'] = array(
+ 'gadgets-desc' => 'Äể các thành viên chá»n những [[Special:Gadgets|công cụ Ä‘a năng]] đặc chế bằng CSS và JavaScript trong [[Special:Preferences|tùy chá»n]]',
+ 'prefs-gadgets' => 'Công cụ đa năng',
+ 'gadgets-prefstext' => 'Dưới đây là danh sách các công cụ đa năng đặc biệt mà bạn có thể kích hoạt cho tài khoản của mình.
+Những công cụ này chủ yếu dựa trên JavaScript, do đó bạn phải kích hoạt JavaScript trong trình duyệt để các công cụ này hoạt động.
+Chú ý rằng những công cụ Ä‘a năng này sẽ không có tác dụng trong trang tùy chá»n cá nhân.
+
+CÅ©ng chú ý rằng những công cụ đặc biệt này không phải là má»™t phần của phần má»m MediaWiki, mà thÆ°á»ng được phát triển và bảo trì bởi những thành viên ở wiki của há». Những quản lý ở từng ngôn ngữ có thể sá»­a đổi các công cụ Ä‘a năng có sẵn từ các danh sách [[MediaWiki:Gadgets-definition|định nghÄ©a]] và [[Special:Gadgets|miêu tả]].',
+ 'gadgets' => 'Công cụ đa năng',
+ 'gadgets-title' => 'Công cụ đa năng',
+ 'gadgets-pagetext' => 'DÆ°á»›i đây là danh sách các công cụ Ä‘a năng đặc biệt mà thành viên có thể dùng tại [[Special:Preferences|trang tùy chá»n cá nhân]] của há», theo [[MediaWiki:Gadgets-definition|định nghÄ©a]]. Trang tổng quan này cung cấp cách tiếp cận dá»… dàng đến trang các thông báo hệ thống để định nghÄ©a miêu tả và mã của từng công cụ.',
+ 'gadgets-uses' => 'Sử dụng',
+ 'gadgets-required-rights' => 'Cần {{PLURAL:$2|quyá»n $1|các quyá»n: $1}}.',
+ 'gadgets-default' => 'Äược kích hoạt cho tất cả má»i ngÆ°á»i theo mặc định.',
+ 'gadgets-export' => 'Xuất',
+ 'gadgets-export-title' => 'Xuất công cụ đa năng',
+ 'gadgets-not-found' => 'Không tìm thấy công cụ Ä‘a năng “$1â€.',
+ 'gadgets-export-text' => 'Äể xuất công cụ Ä‘a năng $1, hãy bấm nút “{{int:gadgets-export-download}}â€, lÆ°u tập tin được tải vá», mở trang Special:Import trên wiki đích và tải nó lên. Sau đó, thêm mã này vào trang MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+Bạn phải có đủ quyá»n truy cập trên wiki đích (bao gồm quyá»n sá»­a đổi thông Ä‘iệp hệ thống) và wiki phải bật chức năng xuất từ tập tin tải lên.',
+ 'gadgets-export-download' => 'Tải vá»',
+);
+
+/** Volapük (Volapük)
+ * @author Smeira
+ */
+$messages['vo'] = array(
+ 'gadgets-uses' => 'Gebs',
+);
+
+/** Yiddish (ייִדיש)
+ * @author פוילישער
+ */
+$messages['yi'] = array(
+ 'gadgets-export' => 'עקספ×רטירן',
+ 'gadgets-export-download' => '×ַר×ָפל×ָדן',
+);
+
+/** Yoruba (Yorùbá)
+ * @author Demmy
+ */
+$messages['yo'] = array(
+ 'gadgets-uses' => 'Àwá»n ìlò',
+ 'gadgets-export' => 'Ìkójáde',
+ 'gadgets-export-download' => 'Ìrùsílẹ̀',
+);
+
+/** Cantonese (粵語)
+ * @author Shinjiman
+ */
+$messages['yue'] = array(
+ 'gadgets-desc' => '畀用戶響佢哋嘅[[Special:Preferences|喜好設定]]度設定自定嘅[[Special:Gadgets|CSSåŒåŸ‹JavaScriptå°å·¥å…·]]',
+ 'prefs-gadgets' => 'å°å·¥å…·',
+ 'gadgets-prefstext' => '下é¢ä¿‚一個特別å°å·¥å…·ï¼Œä½ å¯ä»¥éŸ¿ä½ å€‹æˆ¶å£åº¦å•Ÿç”¨ã€‚
+呢啲å°å·¥å…·å¤šæ•¸éƒ½ä¿‚基於JavaScript建造,如果è¦é–‹ä½¢å“‹ï¼Œå™‰å€‹ç€è¦½å™¨å˜…JavaScript就需è¦å•Ÿç”¨å’—先至用得到。
+è¦ç•™æ„嘅就係呢啲å°å·¥å…·éŸ¿å‘¢å€‹å–œå¥½è¨­å®šç‰ˆåº¦ä¿‚無效果嘅。
+
+亦都åŒæ™‚ç•™æ„呢啲å°å·¥å…·å˜…特別é å””ä¿‚MediaWiki軟件嘅一部份,通常都係由你本地嘅wiki度開發åŒç¶­è­·ã€‚本地管ç†å“¡å¯ä»¥éŸ¿[[MediaWiki:Gadgets-definition]]åŒåŸ‹[[Special:Gadgets]]編輯å¯ä»¥ç”¨åˆ°å˜…å°å·¥å…·ã€‚',
+ 'gadgets' => 'å°å·¥å…·',
+ 'gadgets-title' => 'å°å·¥å…·',
+ 'gadgets-pagetext' => '下é¢ä¿‚一個按照[[MediaWiki:Gadgets-definition]]嘅定義特別å°å·¥å…·æ¸…單,用戶å¯ä»¥éŸ¿ä½¢å“‹å˜…喜好設定é åº¦é–‹ä½¢å“‹ã€‚
+呢個概覽æ供嘅系統信æ¯é å˜…簡易存å–,å¯ä»¥å®šç¾©æ¯å€‹å°å·¥å…·å˜…æè¿°åŒåŸ‹ç¢¼ã€‚',
+ 'gadgets-uses' => '用',
+);
+
+/** Simplified Chinese (‪中文(简体)‬)
+ * @author Gaoxuewei
+ * @author Hydra
+ * @author Shinjiman
+ * @author Xiaomingyan
+ * @author 阿pp
+ */
+$messages['zh-hans'] = array(
+ 'gadgets-desc' => 'å…许用户在其[[Special:Preferences|系统设置]]中选择自定义[[Special:Gadgets|CSSå’ŒJavaScript工具]]',
+ 'prefs-gadgets' => 'å°å·¥å…·',
+ 'gadgets-prefstext' => '以下是一个特殊å°å·¥å…·ï¼Œæ‚¨å¯ä»¥åœ¨æ‚¨çš„账户中激活。
+这些å°å·¥å…·å¤šæ•°éƒ½æ˜¯åŸºäºŽJavaScript建造,如果è¦æ¿€æ´»å®ƒä»¬ï¼Œé‚£ä¹ˆæµè§ˆå™¨çš„JavaScript就需è¦æ¿€æ´»åŽæ–¹å¯ä½¿ç”¨ã€‚
+è¦ç•™æ„的是这些å°å·¥å…·åœ¨è¿™ä¸ªå‚数设置页é¢ä¸­æ˜¯æ²¡æœ‰æ•ˆæžœçš„。
+
+亦都åŒæ—¶ç•™æ„这些å°å·¥å…·çš„特殊页é¢ä¸æ˜¯MediaWiki软件的一部份,通常都是由您本地的wiki中开å‘以åŠç»´æŠ¤ã€‚本地管ç†å‘˜å¯ä»¥åœ¨[[MediaWiki:Gadgets-definition]]以åŠ[[Special:Gadgets]]编辑å¯ä¾›ä½¿ç”¨çš„å°å·¥å…·ã€‚',
+ 'gadgets' => 'å°å·¥å…·',
+ 'gadgets-title' => 'å°å·¥å…·',
+ 'gadgets-pagetext' => '以下是一个按照[[MediaWiki:Gadgets-definition]]定义的特殊å°å·¥å…·åˆ—表,用户å¯ä»¥åœ¨ä»–们的å‚数设置页é¢ä¸­æ¿€æ´»å®ƒä»¬ã€‚
+通过这个概览å¯ä»¥æ–¹ä¾¿çš„获得系统信æ¯é¡µé¢ï¼Œä»Žè€Œå¯ä»¥å®šä¹‰æ¯ä¸ªå°å·¥å…·çš„æ述以åŠæºç ã€‚',
+ 'gadgets-uses' => '使用',
+ 'gadgets-required-rights' => '需è¦{{PLURAL:$2|$1æƒé™|以下æƒé™ï¼š$1}}.',
+ 'gadgets-default' => '默认情况下å¯ç”¨çš„æ¯ä¸ªäººã€‚',
+ 'gadgets-export' => '导出',
+ 'gadgets-export-title' => 'å°å·¥å…·å‡ºå£',
+ 'gadgets-not-found' => '找ä¸åˆ°â€œ$1â€å°å·¥å…·ã€‚',
+ 'gadgets-export-text' => 'è¦å¯¼å‡º $1 å°å·¥å…·ï¼Œè¯·å•å‡»"{{int:gadgets-export-download}}"按钮,ä¿å­˜ä¸‹è½½çš„文件
+转到特别: 导入目标 wiki 上并将其上传。然åŽå°†ä»¥ä¸‹æ·»åŠ åˆ° MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+您必须具有适当的æƒé™ (包括编辑系统消æ¯çš„æƒåˆ©ï¼‰ 的目标维基上,必须å¯ç”¨å¯¼å…¥çš„文件上传。',
+ 'gadgets-export-download' => '下载',
+);
+
+/** Traditional Chinese (‪中文(ç¹é«”)‬)
+ * @author Horacewai2
+ * @author Mark85296341
+ * @author Shinjiman
+ * @author Waihorace
+ */
+$messages['zh-hant'] = array(
+ 'gadgets-desc' => '讓使用者å¯ä»¥åœ¨[[Special:Preferences|å好設定]]中自訂 [[Special:Gadgets|CSS與JavaScript工具]]',
+ 'prefs-gadgets' => 'å°å·¥å…·',
+ 'gadgets-prefstext' => '以下是一個特殊å°å·¥å…·ï¼Œæ‚¨å¯ä»¥åœ¨æ‚¨çš„帳戶中啟用。
+這些å°å·¥å…·å¤šæ•¸éƒ½æ˜¯åŸºæ–¼ JavaScript 建造,如果è¦å•Ÿç”¨å®ƒå€‘,那麼ç€è¦½å™¨çš„ JavaScript 就需è¦å•Ÿç”¨å¾Œæ–¹å¯ä½¿ç”¨ã€‚
+è¦ç•™æ„的是這些å°å·¥å…·åœ¨é€™å€‹å好設定é é¢ä¸­æ˜¯æ²’有效果的。
+
+亦都åŒæ™‚ç•™æ„這些å°å·¥å…·çš„特殊é é¢ä¸æ˜¯ MediaWiki 軟體的一部份,通常都是由您本地的 wiki 中開發以åŠç¶­è­·ã€‚本地管ç†å“¡å¯ä»¥åœ¨ [[MediaWiki:Gadgets-definition]] ä»¥åŠ [[Special:Gadgets]] 編輯å¯ä¾›ä½¿ç”¨çš„å°å·¥å…·ã€‚',
+ 'gadgets' => 'å°å·¥å…·',
+ 'gadgets-title' => 'å°å·¥å…·',
+ 'gadgets-pagetext' => '以下是一個按照 [[MediaWiki:Gadgets-definition]] 的定義特殊å°å·¥å…·æ¸…單,用戶å¯ä»¥åœ¨å®ƒå€‘çš„[[Special:Preferences|å好設定é é¢]]中啟用它們。
+
+這個概覽æ供的系統資訊é é¢çš„簡易存å–,å¯ä»¥å®šç¾©æ¯å€‹å°å·¥å…·çš„æ述以åŠåŽŸå§‹ç¢¼ã€‚',
+ 'gadgets-uses' => '使用',
+ 'gadgets-required-rights' => '需è¦{{PLURAL:$2|$1權é™|以下權é™ï¼š$1}}。',
+ 'gadgets-default' => 'é è¨­æ‰€æœ‰äººå•Ÿç”¨ã€‚',
+ 'gadgets-export' => '匯出',
+ 'gadgets-export-title' => '匯出å°å·¥å…·',
+ 'gadgets-not-found' => '找ä¸åˆ°ã€Œ$1ã€å°å·¥å…·ã€‚',
+ 'gadgets-export-text' => 'è¦åŒ¯å‡º $1 å°å·¥å…·ï¼Œè«‹é»žæ“Šã€Œ{{int:gadgets-export-download}}ã€æŒ‰éˆ•ï¼Œå„²å­˜ä¸‹è¼‰çš„檔案
+轉到 Special:Import 目標 wiki 上並將其上傳。然後將以下新增到 MediaWiki:Gadgets-definition:
+<pre>$2</pre>
+您必須具有é©ç•¶çš„æ¬Šé™ ï¼ˆåŒ…æ‹¬ç·¨è¼¯ç³»çµ±è¨Šæ¯çš„權利) 的目標維基上,必須啟用匯入的檔案上傳。',
+ 'gadgets-export-download' => '下載',
+);
+
diff --git a/extensions/Gadgets/Gadgets.php b/extensions/Gadgets/Gadgets.php
new file mode 100644
index 00000000..11409a22
--- /dev/null
+++ b/extensions/Gadgets/Gadgets.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Gadgets extension - lets users select custom javascript gadgets
+ *
+ *
+ * For more info see http://mediawiki.org/wiki/Extension:Gadgets
+ *
+ * @file
+ * @ingroup Extensions
+ * @author Daniel Kinzler, brightbyte.de
+ * @copyright © 2007 Daniel Kinzler
+ * @license GNU General Public Licence 2.0 or later
+ */
+
+if( !defined( 'MEDIAWIKI' ) ) {
+ echo( "This file is an extension to the MediaWiki software and cannot be used standalone.\n" );
+ die( 1 );
+}
+
+if ( version_compare( $wgVersion, '1.18alpha', '<' ) ) {
+ die( "This version of Extension:Gadgets requires MediaWiki 1.18+\n" );
+}
+
+$wgExtensionCredits['other'][] = array(
+ 'path' => __FILE__,
+ 'name' => 'Gadgets',
+ 'author' => array( 'Daniel Kinzler', 'Max Semenik' ),
+ 'url' => 'http://mediawiki.org/wiki/Extension:Gadgets',
+ 'descriptionmsg' => 'gadgets-desc',
+);
+
+$wgHooks['ArticleSaveComplete'][] = 'GadgetHooks::articleSaveComplete';
+$wgHooks['BeforePageDisplay'][] = 'GadgetHooks::beforePageDisplay';
+$wgHooks['UserGetDefaultOptions'][] = 'GadgetHooks::userGetDefaultOptions';
+$wgHooks['GetPreferences'][] = 'GadgetHooks::getPreferences';
+$wgHooks['ResourceLoaderRegisterModules'][] = 'GadgetHooks::registerModules';
+$wgHooks['UnitTestsList'][] = 'GadgetHooks::unitTestsList';
+
+$dir = dirname(__FILE__) . '/';
+$wgExtensionMessagesFiles['Gadgets'] = $dir . 'Gadgets.i18n.php';
+$wgExtensionAliasesFiles['Gadgets'] = $dir . 'Gadgets.alias.php';
+
+$wgAutoloadClasses['ApiQueryGadgetCategories'] = $dir . 'ApiQueryGadgetCategories.php';
+$wgAutoloadClasses['ApiQueryGadgets'] = $dir . 'ApiQueryGadgets.php';
+$wgAutoloadClasses['Gadget'] = $dir . 'Gadgets_body.php';
+$wgAutoloadClasses['GadgetHooks'] = $dir . 'Gadgets_body.php';
+$wgAutoloadClasses['GadgetResourceLoaderModule'] = $dir . 'Gadgets_body.php';
+$wgAutoloadClasses['SpecialGadgets'] = $dir . 'SpecialGadgets.php';
+
+$wgSpecialPages['Gadgets'] = 'SpecialGadgets';
+$wgSpecialPageGroups['Gadgets'] = 'wiki';
+
+$wgAPIListModules['gadgetcategories'] = 'ApiQueryGadgetCategories';
+$wgAPIListModules['gadgets'] = 'ApiQueryGadgets';
diff --git a/extensions/Gadgets/Gadgets_body.php b/extensions/Gadgets/Gadgets_body.php
new file mode 100644
index 00000000..a904d6e4
--- /dev/null
+++ b/extensions/Gadgets/Gadgets_body.php
@@ -0,0 +1,586 @@
+<?php
+/**
+ * Gadgets extension - lets users select custom javascript gadgets
+ *
+ *
+ * For more info see http://mediawiki.org/wiki/Extension:Gadgets
+ *
+ * @file
+ * @ingroup Extensions
+ * @author Daniel Kinzler, brightbyte.de
+ * @copyright © 2007 Daniel Kinzler
+ * @license GNU General Public Licence 2.0 or later
+ */
+
+class GadgetHooks {
+
+ /**
+ * ArticleSaveComplete hook handler.
+ *
+ * @param $article Article
+ * @param $user User
+ * @param $text String: New page text
+ */
+ public static function articleSaveComplete( $article, $user, $text ) {
+ //update cache if MediaWiki:Gadgets-definition was edited
+ $title = $article->mTitle;
+ if( $title->getNamespace() == NS_MEDIAWIKI && $title->getText() == 'Gadgets-definition' ) {
+ Gadget::loadStructuredList( $text );
+ }
+ return true;
+ }
+
+ /**
+ * UserGetDefaultOptions hook handler
+ * @param $defaultOptions Array of default preference keys and values
+ */
+ public static function userGetDefaultOptions( &$defaultOptions ) {
+ $gadgets = Gadget::loadStructuredList();
+ if (!$gadgets) return true;
+
+ foreach( $gadgets as $section => $thisSection ) {
+ foreach( $thisSection as $gadgetId => $gadget ) {
+ if ( $gadget->isOnByDefault() ) {
+ $defaultOptions['gadget-' . $gadgetId] = 1;
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * GetPreferences hook handler.
+ * @param $user User
+ * @param $preferences Array: Preference descriptions
+ */
+ public static function getPreferences( $user, &$preferences ) {
+ $gadgets = Gadget::loadStructuredList();
+ if (!$gadgets) return true;
+
+ $options = array();
+ $default = array();
+ foreach( $gadgets as $section => $thisSection ) {
+ $available = array();
+ foreach( $thisSection as $gadget ) {
+ if ( $gadget->isAllowed( $user ) ) {
+ $gname = $gadget->getName();
+ $available[$gadget->getDescription()] = $gname;
+ if ( $gadget->isEnabled( $user ) ) {
+ $default[] = $gname;
+ }
+ }
+ }
+ if ( $section !== '' ) {
+ $section = wfMsgExt( "gadget-section-$section", 'parseinline' );
+ if ( count ( $available ) ) {
+ $options[$section] = $available;
+ }
+ } else {
+ $options = array_merge( $options, $available );
+ }
+ }
+
+ $preferences['gadgets-intro'] =
+ array(
+ 'type' => 'info',
+ 'label' => '&#160;',
+ 'default' => Xml::tags( 'tr', array(),
+ Xml::tags( 'td', array( 'colspan' => 2 ),
+ wfMsgExt( 'gadgets-prefstext', 'parse' ) ) ),
+ 'section' => 'gadgets',
+ 'raw' => 1,
+ 'rawrow' => 1,
+ );
+
+ $preferences['gadgets'] =
+ array(
+ 'type' => 'multiselect',
+ 'options' => $options,
+ 'section' => 'gadgets',
+ 'label' => '&#160;',
+ 'prefix' => 'gadget-',
+ 'default' => $default,
+ );
+
+ return true;
+ }
+
+ /**
+ * ResourceLoaderRegisterModules hook handler.
+ * @param $resourceLoader ResourceLoader
+ */
+ public static function registerModules( &$resourceLoader ) {
+ $gadgets = Gadget::loadList();
+ if ( !$gadgets ) {
+ return true;
+ }
+ foreach ( $gadgets as $g ) {
+ $module = $g->getModule();
+ if ( $module ) {
+ $resourceLoader->register( $g->getModuleName(), $module );
+ }
+ }
+ return true;
+ }
+
+ /**
+ * BeforePageDisplay hook handler.
+ * @param $out OutputPage
+ */
+ public static function beforePageDisplay( $out ) {
+ global $wgUser;
+
+ wfProfileIn( __METHOD__ );
+
+ $gadgets = Gadget::loadList();
+ if ( !$gadgets ) {
+ wfProfileOut( __METHOD__ );
+ return true;
+ }
+
+ $lb = new LinkBatch();
+ $lb->setCaller( __METHOD__ );
+ $pages = array();
+
+ foreach ( $gadgets as $gadget ) {
+ if ( $gadget->isEnabled( $wgUser ) && $gadget->isAllowed( $wgUser ) ) {
+ if ( $gadget->hasModule() ) {
+ $out->addModules( $gadget->getModuleName() );
+ }
+ foreach ( $gadget->getLegacyScripts() as $page ) {
+ $lb->add( NS_MEDIAWIKI, $page );
+ $pages[] = $page;
+ }
+ }
+ }
+
+ $lb->execute( __METHOD__ );
+
+ $done = array();
+ foreach ( $pages as $page ) {
+ if ( isset( $done[$page] ) ) continue;
+ $done[$page] = true;
+ self::applyScript( $page, $out );
+ }
+ wfProfileOut( __METHOD__ );
+
+ return true;
+ }
+
+ /**
+ * Adds one legacy script to output.
+ *
+ * @param $page String: Unprefixed page title
+ * @param $out OutputPage
+ */
+ private static function applyScript( $page, $out ) {
+ global $wgJsMimeType;
+
+ # bug 22929: disable gadgets on sensitive pages. Scripts loaded through the
+ # ResourceLoader handle this in OutputPage::getModules()
+ # TODO: make this extension load everything via RL, then we don't need to worry
+ # about any of this.
+ if( $out->getAllowedModules( ResourceLoaderModule::TYPE_SCRIPTS ) < ResourceLoaderModule::ORIGIN_USER_SITEWIDE ){
+ return;
+ }
+
+ $t = Title::makeTitleSafe( NS_MEDIAWIKI, $page );
+ if ( !$t ) return;
+
+ $u = $t->getLocalURL( 'action=raw&ctype=' . $wgJsMimeType );
+ $out->addScriptFile( $u, $t->getLatestRevID() );
+ }
+
+ /**
+ * UnitTestsList hook handler
+ * @param $files Array: List of extension test files
+ */
+ public static function unitTestsList( $files ) {
+ $files[] = dirname( __FILE__ ) . '/Gadgets_tests.php';
+ return true;
+ }
+}
+
+/**
+ * Wrapper for one gadget.
+ */
+class Gadget {
+ /**
+ * Increment this when changing class structure
+ */
+ const GADGET_CLASS_VERSION = 5;
+
+ private $version = self::GADGET_CLASS_VERSION,
+ $scripts = array(),
+ $styles = array(),
+ $dependencies = array(),
+ $name,
+ $definition,
+ $resourceLoaded = false,
+ $requiredRights = array(),
+ $onByDefault = false,
+ $category;
+
+ /**
+ * Creates an instance of this class from definition in MediaWiki:Gadgets-definition
+ * @param $definition String: Gadget definition
+ * @return Mixed: Instance of Gadget class or false if $definition is invalid
+ */
+ public static function newFromDefinition( $definition ) {
+ $m = array();
+ if ( !preg_match( '/^\*+ *([a-zA-Z](?:[-_:.\w\d ]*[a-zA-Z0-9])?)(\s*\[.*?\])?\s*((\|[^|]*)+)\s*$/', $definition, $m ) ) {
+ return false;
+ }
+ //NOTE: the gadget name is used as part of the name of a form field,
+ // and must follow the rules defined in http://www.w3.org/TR/html4/types.html#type-cdata
+ // Also, title-normalization applies.
+ $gadget = new Gadget();
+ $gadget->name = trim( str_replace(' ', '_', $m[1] ) );
+ $gadget->definition = $definition;
+ $options = trim( $m[2], ' []' );
+ foreach ( preg_split( '/\s*\|\s*/', $options, -1, PREG_SPLIT_NO_EMPTY ) as $option ) {
+ $arr = preg_split( '/\s*=\s*/', $option, 2 );
+ $option = $arr[0];
+ if ( isset( $arr[1] ) ) {
+ $params = explode( ',', $arr[1] );
+ $params = array_map( 'trim', $params );
+ } else {
+ $params = array();
+ }
+ switch ( $option ) {
+ case 'ResourceLoader':
+ $gadget->resourceLoaded = true;
+ break;
+ case 'dependencies':
+ $gadget->dependencies = $params;
+ break;
+ case 'rights':
+ $gadget->requiredRights = $params;
+ break;
+ case 'default':
+ $gadget->onByDefault = true;
+ break;
+ }
+ }
+ foreach ( preg_split( '/\s*\|\s*/', $m[3], -1, PREG_SPLIT_NO_EMPTY ) as $page ) {
+ $page = "Gadget-$page";
+ if ( preg_match( '/\.js/', $page ) ) {
+ $gadget->scripts[] = $page;
+ } elseif ( preg_match( '/\.css/', $page ) ) {
+ $gadget->styles[] = $page;
+ }
+ }
+ return $gadget;
+ }
+
+ /**
+ * @return String: Gadget name
+ */
+ public function getName() {
+ return $this->name;
+ }
+
+ /**
+ * @return String: Gadget description parsed into HTML
+ */
+ public function getDescription() {
+ return wfMessage( "gadget-{$this->getName()}" )->parse();
+ }
+
+ /**
+ * @return String: Wikitext of gadget description
+ */
+ public function getRawDescription() {
+ return wfMessage( "gadget-{$this->getName()}" )->plain();
+ }
+
+ /**
+ * @return String: Name of category (aka section) our gadget belongs to. Empty string if none.
+ */
+ public function getCategory() {
+ return $this->category;
+ }
+
+ /**
+ * @return String: Name of ResourceLoader module for this gadget
+ */
+ public function getModuleName() {
+ return "ext.gadget.{$this->name}";
+ }
+
+ /**
+ * Checks whether this is an instance of an older version of this class deserialized from cache
+ * @return Boolean
+ */
+ public function isOutdated() {
+ return $this->version != self::GADGET_CLASS_VERSION;
+ }
+
+ /**
+ * Checks whether this gadget is enabled for given user
+ *
+ * @param $user User: user to check against
+ * @return Boolean
+ */
+ public function isEnabled( $user ) {
+ return (bool)$user->getOption( "gadget-{$this->name}", $this->onByDefault );
+ }
+
+ /**
+ * Checks whether given user has permissions to use this gadget
+ *
+ * @param $user User: user to check against
+ * @return Boolean
+ */
+ public function isAllowed( $user ) {
+ return count( array_intersect( $this->requiredRights, $user->getRights() ) ) == count( $this->requiredRights );
+ }
+
+ /**
+ * @return Boolean: Whether this gadget is on by default for everyone (but can be disabled in preferences)
+ */
+ public function isOnByDefault() {
+ return $this->onByDefault;
+ }
+
+ /**
+ * @return Boolean: Whether all of this gadget's JS components support ResourceLoader
+ */
+ public function supportsResourceLoader() {
+ return $this->resourceLoaded;
+ }
+
+ /**
+ * @return Boolean: Whether this gadget has resources that can be loaded via ResourceLoader
+ */
+ public function hasModule() {
+ return count( $this->styles )
+ + ( $this->supportsResourceLoader() ? count( $this->scripts ) : 0 )
+ > 0;
+ }
+
+ /**
+ * @return String: Definition for this gadget from MediaWiki:gadgets-definition
+ */
+ public function getDefinition() {
+ return $this->definition;
+ }
+
+ /**
+ * @return Array: Array of pages with JS not prefixed with namespace
+ */
+ public function getScripts() {
+ return $this->scripts;
+ }
+
+ /**
+ * @return Array: Array of pages with CSS not prefixed with namespace
+ */
+ public function getStyles() {
+ return $this->styles;
+ }
+
+ /**
+ * @return Array: Array of all of this gadget's resources
+ */
+ public function getScriptsAndStyles() {
+ return array_merge( $this->scripts, $this->styles );
+ }
+
+ /**
+ * Returns module for ResourceLoader, see getModuleName() for its name.
+ * If our gadget has no scripts or styles suitable for RL, false will be returned.
+ * @return Mixed: GadgetResourceLoaderModule or false
+ */
+ public function getModule() {
+ $pages = array();
+ foreach( $this->styles as $style ) {
+ $pages['MediaWiki:' . $style] = array( 'type' => 'style' );
+ }
+ if ( $this->supportsResourceLoader() ) {
+ foreach ( $this->scripts as $script ) {
+ $pages['MediaWiki:' . $script] = array( 'type' => 'script' );
+ }
+ }
+ if ( !count( $pages ) ) {
+ return null;
+ }
+ return new GadgetResourceLoaderModule( $pages, $this->dependencies );
+ }
+
+ /**
+ * Returns list of scripts that don't support ResourceLoader
+ * @return Array
+ */
+ public function getLegacyScripts() {
+ if ( $this->supportsResourceLoader() ) {
+ return array();
+ }
+ return $this->scripts;
+ }
+
+ /**
+ * Returns names of resources this gadget depends on
+ * @return Array
+ */
+ public function getDependencies() {
+ return $this->dependencies;
+ }
+
+ /**
+ * Returns array of permissions required by this gadget
+ * @return Array
+ */
+ public function getRequiredRights() {
+ return $this->requiredRights;
+ }
+
+ /**
+ * Loads and returns a list of all gadgets
+ * @return Mixed: Array of gadgets or false
+ */
+ public static function loadList() {
+ static $gadgets = null;
+
+ if ( $gadgets !== null ) return $gadgets;
+
+ wfProfileIn( __METHOD__ );
+ $struct = self::loadStructuredList();
+ if ( !$struct ) {
+ $gadgets = $struct;
+ wfProfileOut( __METHOD__ );
+ return $gadgets;
+ }
+
+ $gadgets = array();
+ foreach ( $struct as $section => $entries ) {
+ $gadgets = array_merge( $gadgets, $entries );
+ }
+ wfProfileOut( __METHOD__ );
+
+ return $gadgets;
+ }
+
+ /**
+ * Checks whether gadget list from cache can be used.
+ * @return Boolean
+ */
+ private static function isValidList( $gadgets ) {
+ if ( !is_array( $gadgets ) ) return false;
+ // Check if we have 1) array of gadgets 2) the gadgets are up to date
+ // One check is enough
+ foreach ( $gadgets as $section => $list ) {
+ foreach ( $list as $g ) {
+ if ( !( $g instanceof Gadget ) || $g->isOutdated() ) {
+ return false;
+ } else {
+ return true;
+ }
+ }
+ }
+ return true; // empty array
+ }
+
+ /**
+ * Loads list of gadgets and returns it as associative array of sections with gadgets
+ * e.g. array( 'sectionnname1' => array( $gadget1, $gadget2),
+ * 'sectionnname2' => array( $gadget3 ) );
+ * @param $forceNewText String: New text of MediaWiki:gadgets-sdefinition. If specified, will
+ * force a purge of cache and recreation of the gadget list.
+ * @return Mixed: Array or false
+ */
+ public static function loadStructuredList( $forceNewText = null ) {
+ global $wgMemc;
+
+ static $gadgets = null;
+ if ( $gadgets !== null && $forceNewText === null ) return $gadgets;
+
+ wfProfileIn( __METHOD__ );
+ $key = wfMemcKey( 'gadgets-definition', self::GADGET_CLASS_VERSION );
+
+ if ( $forceNewText === null ) {
+ //cached?
+ $gadgets = $wgMemc->get( $key );
+ if ( self::isValidList( $gadgets ) ) {
+ wfProfileOut( __METHOD__ );
+ return $gadgets;
+ }
+
+ $g = wfMessage( "gadgets-definition" )->inContentLanguage();
+ if ( !$g->exists() ) {
+ $gadgets = false;
+ wfProfileOut( __METHOD__ );
+ return $gadgets;
+ }
+ $g = $g->plain();
+ } else {
+ $g = $forceNewText;
+ }
+
+ $g = preg_replace( '/<!--.*-->/s', '', $g );
+ $g = preg_split( '/(\r\n|\r|\n)+/', $g );
+
+ $gadgets = array();
+ $section = '';
+
+ foreach ( $g as $line ) {
+ $m = array();
+ if ( preg_match( '/^==+ *([^*:\s|]+?)\s*==+\s*$/', $line, $m ) ) {
+ $section = $m[1];
+ }
+ else {
+ $gadget = self::newFromDefinition( $line );
+ if ( $gadget ) {
+ $gadgets[$section][$gadget->getName()] = $gadget;
+ $gadget->category = $section;
+ }
+ }
+ }
+
+ //cache for a while. gets purged automatically when MediaWiki:Gadgets-definition is edited
+ $wgMemc->set( $key, $gadgets, 60*60*24 );
+ $source = $forceNewText !== null ? 'input text' : 'MediaWiki:Gadgets-definition';
+ wfDebug( __METHOD__ . ": $source parsed, cache entry $key updated\n");
+ wfProfileOut( __METHOD__ );
+
+ return $gadgets;
+ }
+}
+
+/**
+ * Class representing a list of resources for one gadget
+ */
+class GadgetResourceLoaderModule extends ResourceLoaderWikiModule {
+ private $pages, $dependencies;
+
+ /**
+ * Creates an instance of this class
+ * @param $pages Array: Associative array of pages in ResourceLoaderWikiModule-compatible
+ * format, for example:
+ * array(
+ * 'MediaWiki:Gadget-foo.js' => array( 'type' => 'script' ),
+ * 'MediaWiki:Gadget-foo.css' => array( 'type' => 'style' ),
+ * )
+ * @param $dependencies Array: Names of resources this module depends on
+ */
+ public function __construct( $pages, $dependencies ) {
+ $this->pages = $pages;
+ $this->dependencies = $dependencies;
+ }
+
+ /**
+ * Overrides the abstract function from ResourceLoaderWikiModule class
+ * @return Array: $pages passed to __construct()
+ */
+ protected function getPages( ResourceLoaderContext $context ) {
+ return $this->pages;
+ }
+
+ /**
+ * Overrides ResourceLoaderModule::getDependencies()
+ * @return Array: Names of resources this module depends on
+ */
+ public function getDependencies() {
+ return $this->dependencies;
+ }
+}
diff --git a/extensions/Gadgets/Gadgets_tests.php b/extensions/Gadgets/Gadgets_tests.php
new file mode 100644
index 00000000..58cb2a3e
--- /dev/null
+++ b/extensions/Gadgets/Gadgets_tests.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * @group Gadgets
+ */
+class GadgetsTest extends PHPUnit_Framework_TestCase {
+
+ private function create( $line ) {
+ $g = Gadget::newFromDefinition( $line );
+ // assertInstanceOf() is available since PHPUnit 3.5
+ $this->assertEquals( 'Gadget', get_class( $g ) );
+ return $g;
+ }
+
+ function testInvalidLines() {
+ $this->assertFalse( Gadget::newFromDefinition( '' ) );
+ $this->assertFalse( Gadget::newFromDefinition( '<foo|bar>' ) );
+ }
+
+ function testSimpleCases() {
+ $g = $this->create( '* foo bar| foo.css|foo.js|foo.bar' );
+ $this->assertEquals( 'foo_bar', $g->getName() );
+ $this->assertEquals( 'ext.gadget.foo_bar', $g->getModuleName() );
+ $this->assertEquals( array( 'Gadget-foo.js' ), $g->getScripts() );
+ $this->assertEquals( array( 'Gadget-foo.css' ), $g->getStyles() );
+ $this->assertEquals( array( 'Gadget-foo.js', 'Gadget-foo.css' ),
+ $g->getScriptsAndStyles() );
+ $this->assertEquals( array( 'Gadget-foo.js' ), $g->getLegacyScripts() );
+ $this->assertFalse( $g->supportsResourceLoader() );
+ $this->assertTrue( $g->hasModule() );
+ }
+
+ function testRLtag() {
+ $g = $this->create( '*foo [ResourceLoader]|foo.js|foo.css' );
+ $this->assertEquals( 'foo', $g->getName() );
+ $this->assertTrue( $g->supportsResourceLoader() );
+ $this->assertEquals(0, count( $g->getLegacyScripts() ) );
+ }
+
+ function testDependencies() {
+ $g = $this->create( '* foo[ResourceLoader|dependencies=jquery.ui]|bar.js' );
+ $this->assertEquals( array( 'Gadget-bar.js' ), $g->getScripts() );
+ $this->assertTrue( $g->supportsResourceLoader() );
+ $this->assertEquals( array( 'jquery.ui' ), $g->getDependencies() );
+ }
+
+ function testPreferences() {
+ global $wgUser;
+
+ // This test makes call to the parser which requires valids Outputpage
+ // and Title objects. Set them up there, they will be released at the
+ // end of the test.
+ global $wgOut, $wgTitle;
+ $old_wgOut = $wgOut;
+ $old_wgTitle = $wgTitle;
+ $wgTitle = Title::newFromText( 'Parser test for Gadgets extension' );
+
+ // Proceed with test setup:
+ $prefs = array();
+ $context = new RequestContext();
+ $wgOut = $context->getOutput();
+ $wgOut->setTitle( Title::newFromText( 'test' ) );
+
+ Gadget::loadStructuredList( '* foo | foo.js
+==keep-section1==
+* bar| bar.js
+==remove-section==
+* baz [rights=embezzle] |baz.js
+==keep-section2==
+* quux [rights=read] | quux.js' );
+ $this->assertTrue( GadgetHooks::getPreferences( $wgUser, $prefs ), 'GetPrefences hook should return true' );
+
+ $options = $prefs['gadgets']['options'];
+ $this->assertFalse( isset( $options['&lt;gadget-section-remove-section&gt;'] ), 'Must not show empty sections' );
+ $this->assertTrue( isset( $options['&lt;gadget-section-keep-section1&gt;'] ) );
+ $this->assertTrue( isset( $options['&lt;gadget-section-keep-section2&gt;'] ) );
+
+ // Restore globals
+ $wgOut = $old_wgOut;
+ $wgTitle = $old_wgTitle;
+ }
+}
diff --git a/extensions/Gadgets/README b/extensions/Gadgets/README
new file mode 100644
index 00000000..6b42059d
--- /dev/null
+++ b/extensions/Gadgets/README
@@ -0,0 +1,42 @@
+--------------------------------------------------------------------------
+README for the Gadgets extension
+Copyright © 2007 Daniel Kinzler
+Licenses: GNU General Public Licence (GPL)
+ GNU Free Documentation License (GFDL)
+--------------------------------------------------------------------------
+
+The Gadgets extension provides a way for users to pick JavaScript or CSS
+based "gadgets" that other wiki users provide.
+
+<http://mediawiki.org/wiki/Extension:Gadgets>
+
+The Gadgets extension was originally written by Daniel Kinzler in 2007
+and is released under the GNU General Public Licence (GPL).
+The internationalization files may contain contributions by several people;
+they should be mentioned in each file individually.
+
+== Prerequisites ==
+This version of Gadgets requires MediaWiki 1.17 or later. To get a version
+compatible with earlier MediaWiki release, visit
+ http://www.mediawiki.org/wiki/Special:ExtensionDistributor/Gadgets
+
+== Installing ==
+Copy the Gadgets directory into the extensions folder of your
+MediaWiki installation. Then add the following lines to your
+LocalSettings.php file (near the end):
+
+ require_once( "$IP/extensions/Gadgets/Gadgets.php" );
+
+== Usage ==
+See http://www.mediawiki.org/wiki/Extension:Gadgets#Usage
+
+== Caveats ==
+
+* Gadgets do not apply to Special:Preferences, Special:UserLogin and
+ Special:ResetPass so users can always disable any broken gadgets they
+ may have enabled, and malicious gadgets will be unable to steal passwords.
+* Uses BeforePageDisplay hook, thus only works with MonoBook based skins;
+ specifically, does not work with CologneBlue.
+* Gadget code is included after user code - that means that user JS has no
+ access to things defined in gadgets, and user CSS is overwritten by CSS
+ from gadgets. (pending a better way to insert things into the HTML head)
diff --git a/extensions/Gadgets/SpecialGadgets.php b/extensions/Gadgets/SpecialGadgets.php
new file mode 100644
index 00000000..eb872fc7
--- /dev/null
+++ b/extensions/Gadgets/SpecialGadgets.php
@@ -0,0 +1,168 @@
+<?php
+/**
+ * Special:Gadgets, provides a preview of MediaWiki:Gadgets.
+ *
+ * @file
+ * @ingroup SpecialPage
+ * @author Daniel Kinzler, brightbyte.de
+ * @copyright © 2007 Daniel Kinzler
+ * @license GNU General Public License 2.0 or later
+ */
+
+if( !defined( 'MEDIAWIKI' ) ) {
+ echo( "not a valid entry point.\n" );
+ die( 1 );
+}
+
+/**
+ *
+ */
+class SpecialGadgets extends SpecialPage {
+
+ /**
+ * Constructor
+ */
+ function __construct() {
+ parent::__construct( 'Gadgets', '', true );
+ }
+
+ /**
+ * Main execution function
+ * @param $par Parameters passed to the page
+ */
+ function execute( $par ) {
+ $parts = explode( '/', $par );
+ if ( count( $parts ) == 2 && $parts[0] == 'export' ) {
+ $this->showExportForm( $parts[1] );
+ } else {
+ $this->showMainForm();
+ }
+ }
+
+ /**
+ * Displays form showing the list of installed gadgets
+ */
+ public function showMainForm() {
+ global $wgOut, $wgUser, $wgLang, $wgContLang;
+
+ $skin = $wgUser->getSkin();
+
+ $this->setHeaders();
+ $wgOut->setPagetitle( wfMsg( "gadgets-title" ) );
+ $wgOut->addWikiMsg( 'gadgets-pagetext' );
+
+ $gadgets = Gadget::loadStructuredList();
+ if ( !$gadgets ) return;
+
+ $lang = "";
+ if ( $wgLang->getCode() != $wgContLang->getCode() ) {
+ $lang = "/" . $wgLang->getCode();
+ }
+
+ $listOpen = false;
+
+ $msgOpt = array( 'parseinline', 'parsemag' );
+ $editInterfaceAllowed = $wgUser->isAllowed( 'editinterface' );
+
+ foreach ( $gadgets as $section => $entries ) {
+ if ( $section !== false && $section !== '' ) {
+ $t = Title::makeTitleSafe( NS_MEDIAWIKI, "Gadget-section-$section$lang" );
+ if ( $editInterfaceAllowed ) {
+ $lnkTarget = $t
+ ? $skin->link( $t, wfMsgHTML( 'edit' ), array(), array( 'action' => 'edit' ) )
+ : htmlspecialchars( $section );
+ $lnk = "&#160; &#160; [$lnkTarget]";
+ } else {
+ $lnk = '';
+ }
+ $ttext = wfMsgExt( "gadget-section-$section", $msgOpt );
+
+ if( $listOpen ) {
+ $wgOut->addHTML( Xml::closeElement( 'ul' ) . "\n" );
+ $listOpen = false;
+ }
+ $wgOut->addHTML( Html::rawElement( 'h2', array(), $ttext . $lnk ) . "\n" );
+ }
+
+ foreach ( $entries as $gadget ) {
+ $t = Title::makeTitleSafe( NS_MEDIAWIKI, "Gadget-{$gadget->getName()}$lang" );
+ if ( !$t ) continue;
+
+ $links = array();
+ if ( $editInterfaceAllowed ) {
+ $links[] = $skin->link( $t, wfMsgHTML( 'edit' ), array(), array( 'action' => 'edit' ) );
+ }
+ $links[] = $skin->link( $this->getTitle( "export/{$gadget->getName()}" ), wfMsgHtml( 'gadgets-export' ) );
+
+ $ttext = wfMsgExt( "gadget-{$gadget->getName()}", $msgOpt );
+
+ if( !$listOpen ) {
+ $listOpen = true;
+ $wgOut->addHTML( Xml::openElement( 'ul' ) );
+ }
+ $lnk = '&#160;&#160;' . wfMsg( 'parentheses', $wgLang->pipeList( $links ) );
+ $wgOut->addHTML( Xml::openElement( 'li' ) .
+ $ttext . $lnk . "<br />" .
+ wfMsgHTML( 'gadgets-uses' ) . wfMsg( 'colon-separator' )
+ );
+
+ $lnk = array();
+ foreach ( $gadget->getScriptsAndStyles() as $codePage ) {
+ $t = Title::makeTitleSafe( NS_MEDIAWIKI, $codePage );
+ if ( !$t ) continue;
+
+ $lnk[] = $skin->link( $t, htmlspecialchars( $t->getText() ) );
+ }
+ $wgOut->addHTML( $wgLang->commaList( $lnk ) );
+ $rights = $gadget->getRequiredRights();
+ if ( count( $rights ) ) {
+ $wgOut->addHTML( '<br />' .
+ wfMessage( 'gadgets-required-rights', $wgLang->commaList( $rights ), count( $rights ) )->parse()
+ );
+ }
+ if ( $gadget->isOnByDefault() ) {
+ $wgOut->addHTML( '<br />' . wfMessage( 'gadgets-default' )->parse() );
+ }
+
+ $wgOut->addHTML( Xml::closeElement( 'li' ) . "\n" );
+ }
+ }
+
+ if( $listOpen ) {
+ $wgOut->addHTML( Xml::closeElement( 'ul' ) . "\n" );
+ }
+ }
+
+ /**
+ * Exports a gadget with its dependencies in a serialized form
+ * @param $gadget String Name of gadget to export
+ */
+ public function showExportForm( $gadget ) {
+ global $wgOut, $wgScript;
+
+ $gadgets = Gadget::loadList();
+ if ( !isset( $gadgets[$gadget] ) ) {
+ $wgOut->showErrorPage( 'error', 'gadgets-not-found', array( $gadget ) );
+ return;
+ }
+
+ $g = $gadgets[$gadget];
+ $this->setHeaders();
+ $wgOut->setPagetitle( wfMsg( "gadgets-export-title" ) );
+ $wgOut->addWikiMsg( 'gadgets-export-text', $gadget, $g->getDefinition() );
+
+ $exportList = "MediaWiki:gadget-$gadget\n";
+ foreach ( $g->getScriptsAndStyles() as $page ) {
+ $exportList .= "MediaWiki:$page\n";
+ }
+
+ $wgOut->addHTML( Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) )
+ . Html::hidden( 'title', SpecialPage::getTitleFor( 'Export' )->getPrefixedDBKey() )
+ . Html::hidden( 'pages', $exportList )
+ . Html::hidden( 'wpDownload', '1' )
+ . Html::hidden( 'templates', '1' )
+ . Xml::submitButton( wfMsg( 'gadgets-export-download' ) )
+ . Html::closeElement( 'form' )
+ );
+ }
+}
diff --git a/extensions/Gadgets/install.settings b/extensions/Gadgets/install.settings
new file mode 100644
index 00000000..f67255a8
--- /dev/null
+++ b/extensions/Gadgets/install.settings
@@ -0,0 +1 @@
+require_once( "{{path}}/Gadgets.php" );
diff --git a/extensions/Nuke/Nuke.alias.php b/extensions/Nuke/Nuke.alias.php
new file mode 100644
index 00000000..e7fdac5d
--- /dev/null
+++ b/extensions/Nuke/Nuke.alias.php
@@ -0,0 +1,214 @@
+<?php
+/**
+ * Aliases for Special:Nuke
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$specialPageAliases = array();
+
+/** English (English) */
+$specialPageAliases['en'] = array(
+ 'Nuke' => array( 'Nuke' ),
+);
+
+/** Arabic (العربية) */
+$specialPageAliases['ar'] = array(
+ 'Nuke' => array( 'حذÙ_كمي' ),
+);
+
+/** Egyptian Spoken Arabic (مصرى) */
+$specialPageAliases['arz'] = array(
+ 'Nuke' => array( 'مسح_كامل' ),
+);
+
+/** Belarusian (TaraÅ¡kievica orthography) (‪БеларуÑÐºÐ°Ñ (тарашкевіца)‬) */
+$specialPageAliases['be-tarask'] = array(
+ 'Nuke' => array( 'МаÑавае_выдаленьне' ),
+);
+
+/** German (Deutsch) */
+$specialPageAliases['de'] = array(
+ 'Nuke' => array( 'Massenlöschung' ),
+);
+
+/** Lower Sorbian (Dolnoserbski) */
+$specialPageAliases['dsb'] = array(
+ 'Nuke' => array( 'Wulašowanje_z_kopicami' ),
+);
+
+/** Spanish (Español) */
+$specialPageAliases['es'] = array(
+ 'Nuke' => array( 'BorradoMasivo', 'Borrado_en_masa' ),
+);
+
+/** Estonian (Eesti) */
+$specialPageAliases['et'] = array(
+ 'Nuke' => array( 'Lauskustutamine' ),
+);
+
+/** Persian (Ùارسی) */
+$specialPageAliases['fa'] = array(
+ 'Nuke' => array( 'حذÙ_دسته‌جمعی' ),
+);
+
+/** Finnish (Suomi) */
+$specialPageAliases['fi'] = array(
+ 'Nuke' => array( 'Massapoisto' ),
+);
+
+/** Swiss German (Alemannisch) */
+$specialPageAliases['gsw'] = array(
+ 'Nuke' => array( 'Masseleschig' ),
+);
+
+/** Hawaiian (Hawai`i) */
+$specialPageAliases['haw'] = array(
+ 'Nuke' => array( 'Luku' ),
+);
+
+/** Hebrew (עברית) */
+$specialPageAliases['he'] = array(
+ 'Nuke' => array( 'מחיקה_מרובה' ),
+);
+
+/** Upper Sorbian (Hornjoserbsce) */
+$specialPageAliases['hsb'] = array(
+ 'Nuke' => array( 'Masowe_wušmórnjenje' ),
+);
+
+/** Haitian (Kreyòl ayisyen) */
+$specialPageAliases['ht'] = array(
+ 'Nuke' => array( 'Dechouke' ),
+);
+
+/** Hungarian (Magyar) */
+$specialPageAliases['hu'] = array(
+ 'Nuke' => array( 'Kiirtás' ),
+);
+
+/** Interlingua (Interlingua) */
+$specialPageAliases['ia'] = array(
+ 'Nuke' => array( 'Deler_in_massa' ),
+);
+
+/** Indonesian (Bahasa Indonesia) */
+$specialPageAliases['id'] = array(
+ 'Nuke' => array( 'Nuklir' ),
+);
+
+/** Italian (Italiano) */
+$specialPageAliases['it'] = array(
+ 'Nuke' => array( 'CancellazioneMassiva' ),
+);
+
+/** Japanese (日本語) */
+$specialPageAliases['ja'] = array(
+ 'Nuke' => array( 'ã¾ã¨ã‚ã¦å‰Šé™¤' ),
+);
+
+/** Korean (한국어) */
+$specialPageAliases['ko'] = array(
+ 'Nuke' => array( '문서대량삭제' ),
+);
+
+/** Colognian (Ripoarisch) */
+$specialPageAliases['ksh'] = array(
+ 'Nuke' => array( 'Maßesch_Sigge_Fottschmiiße' ),
+);
+
+/** Ladino (Ladino) */
+$specialPageAliases['lad'] = array(
+ 'Nuke' => array( 'Bombardea' ),
+);
+
+/** Luxembourgish (Lëtzebuergesch) */
+$specialPageAliases['lb'] = array(
+ 'Nuke' => array( 'Masseläschung' ),
+);
+
+/** Macedonian (МакедонÑки) */
+$specialPageAliases['mk'] = array(
+ 'Nuke' => array( 'Ðукирање' ),
+);
+
+/** Malayalam (മലയാളം) */
+$specialPageAliases['ml'] = array(
+ 'Nuke' => array( 'സർവàµà´µà´¨à´¾à´¶à´‚' ),
+);
+
+/** Malay (Bahasa Melayu) */
+$specialPageAliases['ms'] = array(
+ 'Nuke' => array( 'Hapus_pukal' ),
+);
+
+/** Nedersaksisch (Nedersaksisch) */
+$specialPageAliases['nds-nl'] = array(
+ 'Nuke' => array( 'Massaal_vortdoon' ),
+);
+
+/** Dutch (Nederlands) */
+$specialPageAliases['nl'] = array(
+ 'Nuke' => array( 'MassaalVerwijderen' ),
+);
+
+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬) */
+$specialPageAliases['nn'] = array(
+ 'Nuke' => array( 'Massesletting' ),
+);
+
+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬) */
+$specialPageAliases['no'] = array(
+ 'Nuke' => array( 'Massesletting' ),
+);
+
+/** Polish (Polski) */
+$specialPageAliases['pl'] = array(
+ 'Nuke' => array( 'Masowe_usuwanie' ),
+);
+
+/** Sanskrit (संसà¥à¤•à¥ƒà¤¤) */
+$specialPageAliases['sa'] = array(
+ 'Nuke' => array( 'नà¥à¤¯à¥‚क' ),
+);
+
+/** Slovak (SlovenÄina) */
+$specialPageAliases['sk'] = array(
+ 'Nuke' => array( 'ZniÄenie' ),
+);
+
+/** Swedish (Svenska) */
+$specialPageAliases['sv'] = array(
+ 'Nuke' => array( 'Massradering' ),
+);
+
+/** Tagalog (Tagalog) */
+$specialPageAliases['tl'] = array(
+ 'Nuke' => array( 'Malawakang pagbura' ),
+);
+
+/** Turkish (Türkçe) */
+$specialPageAliases['tr'] = array(
+ 'Nuke' => array( 'Uçur' ),
+);
+
+/** Vietnamese (Tiếng Việt) */
+$specialPageAliases['vi'] = array(
+ 'Nuke' => array( 'Xóa_hàng_loạt', 'Xoá_hàng_loạt' ),
+);
+
+/** Simplified Chinese (‪中文(简体)‬) */
+$specialPageAliases['zh-hans'] = array(
+ 'Nuke' => array( 'æœå…‹é²å…‹' ),
+);
+
+/** Traditional Chinese (‪中文(ç¹é«”)‬) */
+$specialPageAliases['zh-hant'] = array(
+ 'Nuke' => array( '大é‡åˆªé™¤' ),
+);
+
+/**
+ * For backwards compatibility with MediaWiki 1.15 and earlier.
+ */
+$aliases =& $specialPageAliases; \ No newline at end of file
diff --git a/extensions/Nuke/Nuke.i18n.php b/extensions/Nuke/Nuke.i18n.php
new file mode 100644
index 00000000..e028221f
--- /dev/null
+++ b/extensions/Nuke/Nuke.i18n.php
@@ -0,0 +1,2162 @@
+<?php
+/**
+ * Internationalisation file for the Nuke extension
+ *
+ * @file
+ * @ingroup Extensions
+ * @author Brion Vibber
+ */
+
+$messages = array();
+
+/** English
+ * @author Brion Vibber
+ */
+$messages['en'] = array(
+ 'nuke' => 'Mass delete',
+ 'nuke-desc' => 'Gives administrators the ability to [[Special:Nuke|mass delete]] pages',
+ 'nuke-nopages' => "No new pages by [[Special:Contributions/$1|$1]] in recent changes.",
+ 'nuke-list' => "The following pages were recently created by [[Special:Contributions/$1|$1]];
+put in a comment and hit the button to delete them.",
+ 'nuke-list-multiple' => 'The following pages were recently created;
+put in a comment and hit the button to delete them.',
+ 'nuke-defaultreason' => "Mass deletion of pages added by $1",
+ 'nuke-tools' => 'This tool allows for mass deletions of pages recently added by a given user or an IP address.
+Input the username or IP address to get a list of pages to delete, or leave blank for all users.',
+ 'nuke-submit-user' => 'Go',
+ 'nuke-submit-delete' => 'Delete selected',
+ 'right-nuke' => 'Mass delete pages',
+ 'nuke-select' => 'Select: $1',
+ 'nuke-userorip' => 'Username, IP address or blank:',
+ 'nuke-maxpages' => 'Maximum number of pages:',
+ 'nuke-multiplepeople'=> 'multiple users',
+ 'nuke-editby' => 'Created by [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => "Page '''$1''' has been deleted.",
+ 'nuke-not-deleted' => "Page [[:$1]] '''could not''' be deleted.",
+);
+
+/** Message documentation (Message documentation)
+ * @author Jon Harald Søby
+ * @author Meno25
+ * @author Purodha
+ * @author The Evil IP address
+ */
+$messages['qqq'] = array(
+ 'nuke-desc' => '{{desc}}',
+ 'nuke-submit-user' => '{{Identical|Go}}',
+ 'right-nuke' => '{{doc-right}}',
+ 'nuke-select' => '{{Identical|Select}}',
+);
+
+/** Niuean (ko e vagahau Niuē)
+ * @author Jose77
+ */
+$messages['niu'] = array(
+ 'nuke-submit-user' => 'Fano',
+);
+
+/** Afrikaans (Afrikaans)
+ * @author Naudefj
+ */
+$messages['af'] = array(
+ 'nuke' => 'Massa verwyder',
+ 'nuke-nopages' => 'Geen nuwe bladsye [[Special:Contributions/$1|$1]] in onlangse wysigings.',
+ 'nuke-defaultreason' => 'Massa verwydering van bladsye van $1',
+ 'nuke-submit-user' => 'Laat waai',
+ 'nuke-submit-delete' => 'Skrap geselekteerde',
+ 'right-nuke' => 'Massa verwydering van bladsye',
+ 'nuke-select' => 'Selekteer: $1',
+);
+
+/** Aragonese (Aragonés)
+ * @author Juanpabl
+ */
+$messages['an'] = array(
+ 'nuke' => 'Borrato masivo',
+ 'nuke-desc' => 'Da a os almenistradors a capacidat de fer [[Special:Nuke|borratos masivos]] de pachinas',
+ 'nuke-nopages' => 'No bi ha garra pachina nueva feita por [[Special:Contributions/$1|$1]] entre os zaguers cambeos.',
+ 'nuke-list' => 'A siguients pachinas fuoron creyatas por [[Special:Contributions/$1|$1]]; escriba un comentario y punche o botón ta borrar-los.',
+ 'nuke-defaultreason' => "Borrato masivo d'as pachinas adhibitas por $1",
+ 'nuke-tools' => "Ista ferramienta fa posible de fer borratos masivos de pachinas adhibitas en zaguerías por un usuario u adreza IP datos. Escriba o nombre d'usuario u l'adreza IP ta obtener una lista de pachinas ta borrar:",
+ 'nuke-submit-user' => 'Ir-ie',
+ 'nuke-submit-delete' => 'Borrar as trigatas',
+ 'right-nuke' => 'Borrar pachinas masivament',
+);
+
+/** Arabic (العربية)
+ * @author Meno25
+ */
+$messages['ar'] = array(
+ 'nuke' => 'حذ٠كمي',
+ 'nuke-desc' => 'يعطي مدراء النظام القدرة على [[Special:Nuke|الحذ٠الكمي]] للصÙحات',
+ 'nuke-nopages' => 'لا صÙحات جديدة بواسطة [[Special:Contributions/$1|$1]] ÙÙŠ أحدث التغييرات.',
+ 'nuke-list' => 'الصÙحات التالية تم إنشاؤها حديثا بواسطة [[Special:Contributions/$1|$1]]Ø›
+ضع تعليقا واضغط الزر لحذÙهم.',
+ 'nuke-defaultreason' => 'إزالة كمية للصÙحات المضاÙØ© بواسطة $1',
+ 'nuke-tools' => 'هذه الأداة تسمح بالحذ٠الضخم للصÙحات المضاÙØ© حديثا بواسطة مستخدم أو أيبي معطى.
+أدخل اسم المستخدم أو الأيبي لعرض قائمة بالصÙحات للحذÙ:',
+ 'nuke-submit-user' => 'اذهب',
+ 'nuke-submit-delete' => 'حذ٠المختار',
+ 'right-nuke' => 'حذ٠الصÙحات كميا',
+);
+
+/** Aramaic (ÜܪܡÜÜ)
+ * @author Basharh
+ */
+$messages['arc'] = array(
+ 'nuke-submit-user' => 'ܙܠ',
+);
+
+/** Egyptian Spoken Arabic (مصرى)
+ * @author Meno25
+ * @author Ramsis II
+ */
+$messages['arz'] = array(
+ 'nuke' => 'مسح كبير',
+ 'nuke-desc' => 'بيدى السيسوبات امكانية [[Special:Nuke|المسح الكبير]] للصÙحات',
+ 'nuke-nopages' => '[[Special:Contributions/$1|$1]] ماعملش صÙحات جديدة ÙÙ‰ احدث التغيرات.',
+ 'nuke-list' => 'الصÙحات دى اتعملها انشاء قريب عى طريق [[Special:Contributions/$1|$1]];
+اكتب تعليق و دوس على الزرار علشان تمسحهم.',
+ 'nuke-defaultreason' => 'مسح كبير للصÙحات اللى ضاÙها $1',
+ 'nuke-tools' => 'الطريقة دى بتسمحلك تعمل مسح كبير للصÙحات اللى اتضاÙت قريب عن طريق واحد من اليوزرز او الأى بى.
+دخل اسم اليوزر او عنوان الاى بى علشان تطلعلك لستة بالصÙحات اللى Ø­ تتمسح.',
+ 'nuke-submit-user' => 'روح',
+ 'nuke-submit-delete' => 'امسح اللى اخترته',
+ 'right-nuke' => 'مسح كبير للصÙحات',
+);
+
+/** Asturian (Asturianu)
+ * @author Esbardu
+ * @author Xuacu
+ */
+$messages['ast'] = array(
+ 'nuke' => 'Esborráu masivu',
+ 'nuke-desc' => "Da a los alministradores la capacidá d'[[Special:Nuke|esborrar páxines masivamente]]",
+ 'nuke-nopages' => 'Nun hai páxines nueves de [[Special:Contributions/$1|$1]] nos cambeos recientes.',
+ 'nuke-list' => 'Les páxines siguientes foron creaes recién por [[Special:Contributions/$1|$1]]; escribi un comentariu y calca nel botón pa esborrales.',
+ 'nuke-list-multiple' => "Les páxines darréu se crearon recientemente;
+escribi un comentariu y calca'l botón pa desaniciales.",
+ 'nuke-defaultreason' => 'Esborráu masivu de páxines añadíes por $1',
+ 'nuke-tools' => "Esta ferramienta permite desanicios masivos de páxines añadíes recién por un usuariu o una IP determinada. Escribi'l nome d'usuariu o la IP pa obtener una llista de páxines a desaniciar, o dexa en blanco pa tolos usuarios.",
+ 'nuke-submit-user' => 'Dir',
+ 'nuke-submit-delete' => 'Esborrar seleicionaes',
+ 'right-nuke' => 'Esborráu masivu de páxines',
+ 'nuke-select' => 'Seleicionar: $1',
+ 'nuke-userorip' => "Nome d'usuariu, direición IP o en blanco:",
+ 'nuke-maxpages' => 'Máximu númberu de páxines:',
+ 'nuke-multiplepeople' => 'múltiples usuarios',
+ 'nuke-editby' => 'Creáu por [[Special:Contributions/$1|$1]]',
+);
+
+/** Bashkir (БашҡортÑа)
+ * @author Assele
+ */
+$messages['ba'] = array(
+ 'nuke' => 'Күпләп юйыу',
+ 'nuke-desc' => 'Хәкимдәргә биттәрҙе [[Special:Nuke|күпләп юйыу]] мөмкинлеген бирә',
+ 'nuke-nopages' => 'Һуңғы үҙгәртеүҙәрҙә [[Special:Contributions/$1|$1]] тарафынан булдырылған биттәр юҡ.',
+ 'nuke-list' => 'Түбәндәге биттәр [[Special:Contributions/$1|$1]] тарафынан Ñңыраҡ булдырылған.
+Уларҙы юйыр Ó©Ñөн, аңлатма керетегеҙ һәм төймәгә баҫығыҙ.',
+ 'nuke-defaultreason' => '$1 тарафынан булдырылған биттәрҙе күпләп юйыу',
+ 'nuke-tools' => 'Был бит билдәләнгән ҡатнашыуÑÑ‹ йәки IP Ð°Ð´Ñ€ÐµÑ Ñ‚Ð°Ñ€Ð°Ñ„Ñ‹Ð½Ð°Ð½ булдырылған биттәрҙе күпләп юйыу мөмкинлеген бирә.
+Юйыла торған биттәр иÑемлеген алыр Ó©Ñөн, ҡатнашыуÑÑ‹ иÑемен йәки IP адреÑÑ‚Ñ‹ керетегеҙ.',
+ 'nuke-submit-user' => 'Үтәргә',
+ 'nuke-submit-delete' => 'Һайланғандарҙы юйырға',
+ 'right-nuke' => 'Биттәрҙе күпләп юйыу',
+ 'nuke-select' => 'Һайланған: $1',
+);
+
+/** Southern Balochi (بلوچی مکرانی)
+ * @author Mostafadaneshvar
+ */
+$messages['bcc'] = array(
+ 'nuke' => 'حذ٠جمعی',
+ 'nuke-desc' => 'مدیران سیستمء ای توانایی دنت تا صÙحات [[Special:Nuke|حذ٠جمعی]]',
+ 'nuke-nopages' => 'Ù‡Ú† نوکین صÙحه په وسیله [[Special:Contributions/$1|$1]] ته نوکین تغییرات.',
+ 'nuke-list' => 'جهلگین صÙحات نوکی شر بیتگین گون [[Special:Contributions/$1|$1]];
+توضیحی بویسیت و دکمه بجنیت تا آیانء حذ٠کنت.',
+ 'nuke-defaultreason' => 'حذ٠جمعی صÙحات اضاÙÙ‡ بوتت په وسیله $1',
+ 'nuke-tools' => 'ای وسیله شما را اجازت دن تا صÙحاتی Ú©Ù‡ گون یک داتگین کاربر یا Ø¢ÛŒ Ù¾ÛŒ شربیتگن حذÙØ´ کنت.
+نام کاربری یا Ø¢ÛŒ Ù¾ÛŒ وارد کنیت تا یک لیستی Ú†Ù‡ صÙحات په حذ٠پیشداریتن.',
+ 'nuke-submit-user' => 'برو',
+ 'nuke-submit-delete' => 'انتخاب بوتگین حذÙ',
+ 'right-nuke' => 'حذ٠جمعی صÙحات',
+);
+
+/** Belarusian (БеларуÑкаÑ)
+ * @author Yury Tarasievich
+ * @author Хомелка
+ */
+$messages['be'] = array(
+ 'nuke' => 'МаÑавае Ñціранне',
+ 'nuke-desc' => 'Дае адмініÑтратарам магчымаÑць [[Special:Nuke|маÑавага выдаленнÑ]] Ñтаронак',
+ 'nuke-nopages' => 'ÐÑма новых Ñтаронак аўтарÑтва [[Special:Contributions/$1|$1]] у нÑдаўніх змÑненнÑÑ….',
+ 'nuke-list' => 'ÐаÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ñтаронкі былі нÑдаўна ÑÑ‚Ð²Ð¾Ñ€Ð°Ð½Ñ‹Ñ [[Special:Contributions/$1|$1]];
+упішыце тлумачÑнне Ñ– націÑніце кнопку, каб Ñ–Ñ… Ñцерці.',
+ 'nuke-defaultreason' => 'МаÑавае Ñціранне Ñтаронак, Ñтвораных $1',
+ 'nuke-tools' => 'ІнÑтрумент дазвалÑе маÑава Ñціраць Ñтаронкі, Ð´Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ Ð½Ñдаўна пÑўным удзельнікам ці з пÑўнага IP-адраÑу.
+Упішыце Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ° ці IP, каб атрымаць пералік Ñтаронак, ÑÐºÑ–Ñ Ð¼Ð¾Ð¶Ð½Ð° Ñцерці.',
+ 'nuke-submit-user' => 'Ðаперад',
+ 'nuke-submit-delete' => 'Сцерці пазначанае',
+ 'right-nuke' => 'маÑава Ñціраць Ñтаронкі',
+);
+
+/** Belarusian (TaraÅ¡kievica orthography) (‪БеларуÑÐºÐ°Ñ (тарашкевіца)‬)
+ * @author EugeneZelenko
+ * @author Jim-by
+ * @author Wizardist
+ */
+$messages['be-tarask'] = array(
+ 'nuke' => 'МаÑавае выдаленьне',
+ 'nuke-desc' => 'Дае адмініÑтратарам магчымаÑьць [[Special:Nuke|маÑавага выдаленьнÑ]] Ñтаронак',
+ 'nuke-nopages' => 'У апошніх зьменах нÑма новых Ñтаронак, Ñтвораных [[Special:Contributions/$1|$1]].',
+ 'nuke-list' => 'ÐаÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ñтаронкі былі нÑдаўна Ñтвораны ўдзельнікам [[Special:Contributions/$1|$1]];
+дадайце камÑнтар Ñ– націÑьніце кнопку Ð´Ð»Ñ Ñ–Ñ… выдаленьнÑ.',
+ 'nuke-list-multiple' => 'ÐаÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ñтаронкі былі Ñтвораны нÑдаўна;
+уÑтаўце камÑнтар Ñ– націÑьніце кнопку каб Ñ–Ñ… выдаліць.',
+ 'nuke-defaultreason' => 'МаÑавае выдаленьне Ñтаронак, Ñтвораных удзельнікам $1',
+ 'nuke-tools' => 'ГÑÑ‚Ñ‹ інÑтрумÑнт дазвалÑе рабіць маÑÐ°Ð²Ñ‹Ñ Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½ÑŒÐ½Ñ– Ñтаронак, Ñтвораных пÑўным удзельнікам альбо з IP-адраÑу. УвÑдзіце Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ° ці IP-Ð°Ð´Ñ€Ð°Ñ Ð´Ð»Ñ Ñ‚Ð°Ð³Ð¾, каб атрымаць ÑÑŒÐ¿Ñ–Ñ Ñтаронак Ð´Ð»Ñ Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½ÑŒÐ½Ñ, ці пакіньце пуÑтым Ð´Ð»Ñ ÑžÑÑ–Ñ… удзельнікаў.',
+ 'nuke-submit-user' => 'Выканаць',
+ 'nuke-submit-delete' => 'Выдаліць выбраныÑ',
+ 'right-nuke' => 'маÑавае выдаленьне Ñтаронак',
+ 'nuke-select' => 'Выбраць: $1',
+ 'nuke-userorip' => 'Удзельнік, IP-Ð°Ð´Ñ€Ð°Ñ Ñ†Ñ– пуÑтое:',
+ 'nuke-maxpages' => 'МакÑÑ‹Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ÐºÐ¾Ð»ÑŒÐºÐ°Ñьць Ñтаронак:',
+ 'nuke-multiplepeople' => 'некалькі ўдзельнікаў',
+ 'nuke-editby' => 'Створана [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => 'Старонка «$1» выдаленаÑ.',
+ 'nuke-not-deleted' => "Старонка [[:$1]] '''Ð½Ñ Ð¼Ð¾Ð¶Ð°''' быць выдаленаÑ.",
+);
+
+/** Bulgarian (БългарÑки)
+ * @author Borislav
+ * @author DCLXVI
+ * @author Spiritia
+ */
+$messages['bg'] = array(
+ 'nuke' => 'МаÑово изтриване',
+ 'nuke-desc' => 'ПредоÑÑ‚Ð°Ð²Ñ Ð½Ð° админиÑтраторите възможноÑÑ‚ за [[Special:Nuke|маÑово изтриване]] на Ñтраници',
+ 'nuke-nopages' => 'Сред поÑледните промени не ÑъщеÑтвуват нови Ñтраници, Ñъздадени от [[Special:Contributions/$1|$1]].',
+ 'nuke-list' => 'Следните Ñтраници Ñа били наÑкоро Ñъздадени от [[Special:Contributions/$1|$1]]. Ðапишете коментар и щракнете бутона, за да ги изтриете.',
+ 'nuke-defaultreason' => 'МаÑово изтриване на Ñтраници, Ñъздадени от $1',
+ 'nuke-tools' => 'Този инÑтрумент позволÑва маÑовото изтриване на Ñтраници, Ñъздадени от даден региÑтриран или анонимен потребител. Въведете потребителÑко име или IP, за да получите ÑпиÑъка от Ñтраници за изтриване:',
+ 'nuke-submit-user' => 'ОтварÑне',
+ 'nuke-submit-delete' => 'Изтриване на избраните',
+ 'right-nuke' => 'маÑово изтриване на Ñтраници',
+);
+
+/** Bengali (বাংলা)
+ * @author Bellayet
+ * @author Wikitanvir
+ * @author Zaheen
+ */
+$messages['bn'] = array(
+ 'nuke' => 'গণ মà§à¦›à§‡ ফেলা',
+ 'nuke-desc' => 'পà§à¦°à¦¶à¦¾à¦¸à¦•à¦¦à§‡à¦° পাতাগà§à¦²à¦¿ [[Special:Nuke|গণহারে মà§à¦›à§‡ ফেলার]] কà§à¦·à¦®à¦¤à¦¾ দেয়',
+ 'nuke-nopages' => 'সামà§à¦ªà§à¦°à¦¤à¦¿à¦• পরিবরà§à¦¤à¦¨à¦—à§à¦²à¦¿à¦¤à§‡ [[Special:Contributions/$1|$1]]-à¦à¦° তৈরি কোন নতà§à¦¨ পাতা নেই।',
+ 'nuke-list' => '[[Special:Contributions/$1|$1]] সামà§à¦ªà§à¦°à¦¤à¦¿à¦• কালে নিচের পাতাগà§à¦²à¦¿ সৃষà§à¦Ÿà¦¿ করেছেন; à¦à¦•à¦Ÿà¦¿ মনà§à¦¤à¦¬à§à¦¯ দিন à¦à¦¬à¦‚ বোতাম চেপে à¦à¦—à§à¦²à¦¿ মà§à¦›à§‡ ফেলà§à¦¨à¥¤',
+ 'nuke-defaultreason' => '$1-à¦à¦° যোগ করা পাতাগà§à¦²à¦¿à¦° গণ মà§à¦›à§‡-ফেলা',
+ 'nuke-tools' => 'à¦à¦‡ সরঞà§à¦œà¦¾à¦®à¦Ÿà¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করে আপনি à¦à¦•à¦Ÿà¦¿ পà§à¦°à¦¦à¦¤à§à¦¤ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° বা আইপি ঠিকানার যোগ করা পাতাগà§à¦²à¦¿ গণ আকারে মà§à¦›à§‡ ফেলতে পারবেন। পাতাগà§à¦²à¦¿à¦° তালিকা পেতে বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম বা আইপি ঠিকানাটি ইনপà§à¦Ÿ করà§à¦¨:',
+ 'nuke-submit-user' => 'যাও',
+ 'nuke-submit-delete' => 'নিরà§à¦¬à¦¾à¦šà¦¿à¦¤ গà§à¦²à§‹ মà§à¦›à§‡ ফেলো',
+ 'nuke-select' => 'নিরà§à¦¬à¦¾à¦šà¦¨: $1',
+ 'nuke-userorip' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম, আইপি ঠিকানা বা খালি:',
+ 'nuke-maxpages' => 'সরà§à¦¬à§‹à¦šà§à¦š সংখà§à¦¯à¦• পাতাসমূহ:',
+ 'nuke-multiplepeople' => 'à¦à¦•à¦¾à¦§à¦¿à¦• বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€',
+);
+
+/** Breton (Brezhoneg)
+ * @author Fulup
+ */
+$messages['br'] = array(
+ 'nuke' => "Diverkañ a-vloc'h",
+ 'nuke-desc' => "Reiñ a ra an tu d'ar verourien da [[Special:Nuke|ziverkañ pajennoù a-vras]]",
+ 'nuke-nopages' => "Pajenn nevez ebet bet krouet gant [[Special:Contributions/$1|$1]] er c'hemmoù diwezhañ.",
+ 'nuke-list' => "Nevez zo eo bet krouet ar pajennoù da-heul gant [[Special:Contributions/$1|$1]];
+Merkañ un tamm notenn ha klikañ war ar bouton d'o diverkañ.",
+ 'nuke-list-multiple' => 'Krouet e oa bet ar pajennoù da-heul nevez zo ;
+Lakait un notenn ha klikit war ar bouton evit o diverkañ.',
+ 'nuke-defaultreason' => 'Diverkañ a-vras ar pajennoù bet ouzhpennet gant $1',
+ 'nuke-tools' => "Talvezout a ra an ostilh-mañ da ziverkañ a-vras pajennoù bet ouzhpennet nevez zo gant un implijer enrollet pe gant ur chomlec'h IP.
+Merkañ ar c'homlec'h IP pe anv an implijer evit kaout roll ar pajennoù da ziverkañ, pe lezel gwenn evit an holl implijerien.",
+ 'nuke-submit-user' => 'Mont',
+ 'nuke-submit-delete' => 'Dilemel ar re diuzet',
+ 'right-nuke' => 'Diverkañ pajennoù a-vras',
+ 'nuke-select' => 'Diuzañ : $1',
+ 'nuke-userorip' => "Anv implijer, chomlec'h IP pe gwenn :",
+ 'nuke-maxpages' => 'Niver brasañ a bajennoù :',
+ 'nuke-multiplepeople' => 'meur a implijer',
+ 'nuke-editby' => 'Savet gant [[Special:Contributions/$1|$1]]',
+);
+
+/** Bosnian (Bosanski)
+ * @author CERminator
+ */
+$messages['bs'] = array(
+ 'nuke' => 'Masovno brisanje',
+ 'nuke-desc' => 'Daje administratorima mogućnost [[Special:Nuke|masovnog brisanja]] stranica',
+ 'nuke-nopages' => 'Nema novih stranica od korisnika [[Special:Contributions/$1|$1]] u nedavnim izmjenama.',
+ 'nuke-list' => 'Prikazane stranice su nedavno napravljenje od strane [[Special:Contributions/$1|$1]];
+navedite razloge i komentare te kliknite na dugme da bi ste ih obrisali.',
+ 'nuke-list-multiple' => 'Slijedeće stranice su nedavno napravljene;
+stavite ih u komentar i pritisnite dugme za njihovo brisanje.',
+ 'nuke-defaultreason' => 'Masovno uklanjanje stranica koje je dodao $1',
+ 'nuke-tools' => 'Ovaj alat omogućuje masovno brisanje stranica koje je nedavno dodao određeni korisnik ili IP adresa.
+Unesite korisniÄko ime ili IP adresu za izlistavanje stranica koje se briÅ¡u ili ostavite prazno za prikaz svih korisnika.',
+ 'nuke-submit-user' => 'Idi',
+ 'nuke-submit-delete' => 'ObriÅ¡i oznaÄeno',
+ 'right-nuke' => 'Masovno brisanje stranica',
+ 'nuke-select' => 'Odaberi: $1',
+ 'nuke-userorip' => 'KorisniÄko ime, IP adresa ili ostaviti prazno:',
+ 'nuke-maxpages' => 'Najveći broj stranica:',
+ 'nuke-multiplepeople' => 'više korisnika',
+ 'nuke-editby' => 'Napravio [[Special:Contributions/$1|$1]]',
+);
+
+/** Catalan (Català)
+ * @author Paucabot
+ * @author SMP
+ * @author Toniher
+ */
+$messages['ca'] = array(
+ 'nuke' => 'Eliminació massiva',
+ 'nuke-desc' => "Dóna als administradors l'habilitat d'[[Special:Nuke|esborrar pàgines massivament]]",
+ 'nuke-nopages' => 'No hi ha pàgines noves de [[Special:Contributions/$1|$1]] als canvis recents.',
+ 'nuke-list' => 'Les següents pàgines han estat creades recentment per [[Special:Contributions/$1|$1]];
+feu un comentari i cliqueu el botó per a esborrar-les.',
+ 'nuke-defaultreason' => 'Esborrat massiu de pàgines creades per $1',
+ 'nuke-tools' => "Aquesta eina permet l'eliminació massiva de pàgines creades recentment per un usuari o IP.
+Introduïu el nom d'usuari o la IP per obtenir una llista de pàgines per esborrar.",
+ 'nuke-submit-user' => 'Vés-hi',
+ 'nuke-submit-delete' => 'Esborra la selecció',
+ 'right-nuke' => 'Esborrar pàgines de forma massiva',
+);
+
+/** Chechen (Ðохчийн)
+ * @author Sasan700
+ */
+$messages['ce'] = array(
+ 'nuke' => 'Дуккха дIадайар',
+ 'nuke-defaultreason' => 'Декъашхочо кхоьллина агIонаш, дуккха дIайайар $1',
+ 'nuke-submit-delete' => 'Дlадайá хаьржнарш',
+ 'right-nuke' => 'дуккха агIонаш дIайайар',
+);
+
+/** Chamorro (Chamoru)
+ * @author Jatrobat
+ */
+$messages['ch'] = array(
+ 'nuke-submit-user' => 'HÃ¥nao',
+);
+
+/** Czech (ÄŒesky)
+ * @author Danny B.
+ * @author Jkjk
+ * @author Li-sung
+ * @author Matěj Grabovský
+ * @author Mormegil
+ */
+$messages['cs'] = array(
+ 'nuke' => 'Hromadné mazání',
+ 'nuke-desc' => 'Dává správcům možnost [[Special:Nuke|hromadného mazání]] stránek',
+ 'nuke-nopages' => 'V posledních změnách nejsou žádné nové stránky od uživatele [[Special:Contributions/$1|$1]].',
+ 'nuke-list' => 'Následující stránky nedávno vytvoÅ™il uživatel [[Special:Contributions/$1|$1]]; vyplňte komentář a vÅ¡echny smažte kliknutím na tlaÄítko.',
+ 'nuke-list-multiple' => 'Nedávno byly vytvořeny následující stránky;
+zadáním komentáře a stisknutím tlaÄítka je smažete.',
+ 'nuke-defaultreason' => 'Hromadné odstranění stránek, které vytvořil $1',
+ 'nuke-tools' => 'Tento nástroj umožňuje hromadné smazání stránek nedávno vytvořených zadaným uživatelem nebo IP adresou.
+Zadejte uživatelské jméno nebo IP adresu, zobrazí se seznam stránek ke smazání; případně ponechte prázdné pro všechny uživatele.',
+ 'nuke-submit-user' => 'Provést',
+ 'nuke-submit-delete' => 'Smazat vybrané',
+ 'right-nuke' => 'Hromadné mazání stránek',
+ 'nuke-select' => 'Vybrat: $1',
+ 'nuke-userorip' => 'Uživatelské jméno, IP adresa nebo ponechte prázdné:',
+ 'nuke-maxpages' => 'Maximální poÄet stran:',
+ 'nuke-multiplepeople' => 'více uživatelů',
+ 'nuke-editby' => 'Vytvořili [[Special:Contributions/$1|$1]]',
+);
+
+/** Danish (Dansk)
+ * @author Byrial
+ */
+$messages['da'] = array(
+ 'nuke' => 'Massesletning',
+ 'nuke-desc' => 'Giver administratorer mulighed for at [[Special:Nuke|masseslette]] sider',
+ 'nuke-nopages' => 'Der er ingen nye sider af [[Special:Contributions/$1|$1]] i seneste ændringer.',
+ 'nuke-list' => 'Følgende sider er oprettet for nylig af [[Special:Contributions/$1|$1]]; skriv en kommentar og tryk på knappen for at slette dem.',
+ 'nuke-defaultreason' => 'Massesletting af sider som er oprettet af $1',
+ 'nuke-tools' => 'Dette værktøj muliggør massesletting af sider som for nylig er oprettet af en bestemt bruger eller IP.
+Skriv et brugernavn eller en IP for at få en liste over sider at slette.',
+ 'nuke-submit-user' => 'Udfør',
+ 'nuke-submit-delete' => 'Slet valgte',
+ 'right-nuke' => 'masseslette sider',
+);
+
+/** German (Deutsch)
+ * @author Kghbln
+ * @author Raimond Spekking
+ */
+$messages['de'] = array(
+ 'nuke' => 'Massenlöschung von Seiten',
+ 'nuke-desc' => 'Ergänzt eine [[Special:Nuke|Spezialseite]] zur Massenlöschung von Seiten',
+ 'nuke-nopages' => 'Es gibt in den „Letzten Änderungen“ keine neuen Seiten von [[Special:Contributions/$1|$1]].',
+ 'nuke-list' => 'Die folgenden Seiten wurden von [[Special:Contributions/$1|$1]] angelegt.
+Gib einen Kommentar bezüglich der Löschung an und klicke auf die Schaltfläche, um die Seiten nun zu löschen.',
+ 'nuke-list-multiple' => 'Die folgenden Seiten wurden vor kurzem erstellt.
+Gib einen Kommentar bezüglich der Löschung an und klicke auf die Schaltfläche, um die Seiten nun zu löschen.',
+ 'nuke-defaultreason' => 'Massenlöschung der Seiten, die von „$1“ angelegt wurden',
+ 'nuke-tools' => 'Diese Arbeitshilfe ermöglicht die Massenlöschung von Seiten, die von einer IP-Adresse oder einem Benutzer angelegt wurden.
+Gib die IP-Adresse oder den Benutzernamen ein, um eine Liste der zu löschenden Seiten zu erhalten. Sofern Du keine Angabe machst, werden alle Benutzer ausgewählt.',
+ 'nuke-submit-user' => 'Hole die Liste',
+ 'nuke-submit-delete' => 'Ausgewählte Seiten löschen',
+ 'right-nuke' => 'Massenlöschung von Seiten',
+ 'nuke-select' => 'Auswählen: $1',
+ 'nuke-userorip' => 'Benutzername, IP-Adresse oder keine Angabe:',
+ 'nuke-maxpages' => 'Maximale Anzahl der Seiten:',
+ 'nuke-multiplepeople' => 'mehrere Benutzer',
+ 'nuke-editby' => 'Erstellt von [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => 'Seite „$1“ wurde gelöscht.',
+ 'nuke-not-deleted' => "Seite [[:$1]] '''konnte nicht''' gelöscht werden.",
+);
+
+/** German (formal address) (‪Deutsch (Sie-Form)‬)
+ * @author Kghbln
+ * @author Raimond Spekking
+ */
+$messages['de-formal'] = array(
+ 'nuke-list' => 'Die folgenden Seiten wurden von [[Special:Contributions/$1|$1]] angelegt.
+Geben Sie einen Kommentar bezüglich der Löschung an und klicken Sie auf die Schaltfläche, um die Seiten nun zu löschen.',
+ 'nuke-list-multiple' => 'Die folgenden Seiten wurden vor kurzem erstellt.
+Geben Sie einen Kommentar bezüglich der Löschung an und klicken Sie auf die Schaltfläche, um die Seiten nun zu löschen.',
+ 'nuke-tools' => 'Diese Arbeitshilfe ermöglicht die Massenlöschung von Seiten, die von einer IP-Adresse oder einem Benutzer angelegt wurden.
+Geben Sie die IP-Adresse oder den Benutzernamen ein, um eine Liste der zu löschenden Seiten zu erhalten. Sofern Sie keine Angabe machen, werden alle Benutzer ausgewählt.',
+);
+
+/** Zazaki (Zazaki)
+ * @author Aspar
+ */
+$messages['diq'] = array(
+ 'nuke' => 'pêropiya hewnakeno..',
+ 'nuke-desc' => 'Hizmetlilere, sayfaları [[Special:Nuke|kitlesel silme]] yeteneği verir',
+ 'nuke-nopages' => 'vuriyayişê ke hetê ıney ra [[Special:Contributions/$1|$1]] biye tede çı pelê neweyi çini .',
+ 'nuke-list' => 'pelê ke cêr de yê hetê ıney ra [[Special:Contributions/$1|$1]] yew tarixo nızdi de vıraziyayi; mışore bıkerê u qey hewnakerdışi yew tuş bıtıknê.',
+ 'nuke-defaultreason' => 'Mass removal of pages added by $1',
+ 'nuke-tools' => 'Bu araç, bir kullanıcı ya da IP tarafından yakın zamanda eklenen sayfaların kitlesel silinmelerine izin verir.
+Silinecek sayfaların listesini almak için kullanıcı adını ya da IPyi girin.',
+ 'nuke-submit-user' => 'ÅŸo',
+ 'nuke-submit-delete' => 'niÅŸanbiyayeyi hewnaker',
+ 'right-nuke' => 'pelan yew hew de hewnaker',
+);
+
+/** Lower Sorbian (Dolnoserbski)
+ * @author Michawiki
+ */
+$messages['dsb'] = array(
+ 'nuke' => 'Masowe lašowanje',
+ 'nuke-desc' => 'Zmóžnja admininistratoram boki [[Special:Nuke|z masami lašowaś]]',
+ 'nuke-nopages' => 'Žedne nowe boki wót [[Special:Contributions/$1|$1]] w aktualnych změnach',
+ 'nuke-list' => 'Slědujuce boki su se nowo napórali wót [[Special:Contributions/$1|$1]];
+zapódaj komentar a klikni na tłocašk, aby je lašował.',
+ 'nuke-list-multiple' => 'Slědujuce boki su se rowno napórali;
+zapódaj komentar a klikni na tłocašk, aby je wulašował.',
+ 'nuke-defaultreason' => 'Masowe lašowanje bokow, kótarež $1 jo pśidał.',
+ 'nuke-tools' => 'Toś ten rěd zmóžnja masowe lašowanja bokow, kótarež wěsty wužywaŕ abo IP jo rowno pśidał. Zapódaj wužywarske mě abo IP-adresu, aby dostał lisćinu bokow, kótarež maju se lašowaś abo wóstaj pólo prozne, aby wubrał wšych wužywarjow.',
+ 'nuke-submit-user' => 'W pórěźe',
+ 'nuke-submit-delete' => 'Wubrane wulašowaś',
+ 'right-nuke' => 'Boki z masami lašowaś',
+ 'nuke-select' => 'WubraÅ›: $1',
+ 'nuke-userorip' => 'Wužywarske mě, IP-adresa abo žedno pódaśe:',
+ 'nuke-maxpages' => 'Maksimalna licba bokow:',
+ 'nuke-multiplepeople' => 'někotare wužywarje',
+ 'nuke-editby' => 'Napórany wót [[Special:Contributions/$1|$1]]',
+);
+
+/** Ewe (EÊ‹egbe) */
+$messages['ee'] = array(
+ 'nuke-submit-user' => 'Yi',
+);
+
+/** Greek (Ελληνικά)
+ * @author Dead3y3
+ * @author ZaDiak
+ */
+$messages['el'] = array(
+ 'nuke' => 'Μαζική διαγÏαφή',
+ 'nuke-desc' => 'Δίνει στους διαχειÏιστές την ικανότητα να [[Special:Nuke|διαγÏάφουν μαζικά]] σελίδες',
+ 'nuke-nopages' => 'Καμία νέα σελίδα από τον/την [[Special:Contributions/$1|$1]] στις Ï€Ïόσφατες αλλαγές.',
+ 'nuke-list' => 'Οι ακόλουθες σελίδες δημιουÏγήθηκαν Ï€Ïοσφατα από τον/την [[Special:Contributions/$1|$1]]·
+βάλτε ένα σχόλιο και πατήστε το κουμπί για να τις διαγÏάψετε.',
+ 'nuke-defaultreason' => 'Μαζική αφαίÏεση σελίδων Ï€Ïοστιθέμενων από τον/την $1',
+ 'nuke-tools' => 'Αυτό το εÏγαλείο επιτÏέπει μαζικές διαγÏαφές σελίδων Ï€Ïόσφατα Ï€Ïοστιθέμενων από έναν δοσμέ-νο/νη χÏήστ-η/Ïια ή IP.<br />
+Εισάγετε το όνομα χÏήστ-η/Ïιας ή την IP για να πάÏετε έναν κατάλογο με σελίδες Ï€Ïος διαγÏαφή.',
+ 'nuke-submit-user' => 'Πήγαινε',
+ 'nuke-submit-delete' => 'ΔιαγÏαφή επιλεγμένων',
+ 'right-nuke' => 'Μαζική διαγÏαφή σελίδων',
+);
+
+/** Esperanto (Esperanto)
+ * @author Yekrats
+ */
+$messages['eo'] = array(
+ 'nuke' => 'Amasforigi',
+ 'nuke-desc' => 'Rajtigas al administrantoj la kapablon [[Special:Nuke|amasforigi]] paÄojn',
+ 'nuke-nopages' => 'Neniuj novaj paÄoj de [[Special:Contributions/$1|$1]] en lastaj ÅanÄoj.',
+ 'nuke-list' => 'La jenaj paÄoj estis lastatempe kreitaj de [[Special:Contributions/$1|$1]];
+aldonu komenton kaj klaku la butonon forigi ilin.',
+ 'nuke-defaultreason' => 'Amasforigo de paÄoj aldonita de $1',
+ 'nuke-tools' => 'Ĉi tiu ilo ebligas amasforigojn da paÄoj lastatempe aldonitaj de aparta uzanto aÅ­ IP-adreso.
+Enigu la salutnomon aÅ­ IP-adreson por akiri liston de paÄoj forigi, aÅ­ lasu Äin malplena por ĉiuj uzantoj.',
+ 'nuke-submit-user' => 'Ek!',
+ 'nuke-submit-delete' => 'Forigi elekton',
+ 'right-nuke' => 'Amasforigi paÄojn',
+ 'nuke-select' => 'Elektu: $1',
+ 'nuke-userorip' => 'Salutnomo, IP-adreso, aÅ­ nenio:',
+ 'nuke-maxpages' => 'Maksimuma nombro de paÄoj:',
+ 'nuke-multiplepeople' => 'multaj uzantoj',
+ 'nuke-editby' => 'Kreita de [[Special:Contributions/$1|$1]]',
+);
+
+/** Spanish (Español)
+ * @author Aleator
+ * @author Crazymadlover
+ * @author Dferg
+ * @author Jatrobat
+ * @author Remember the dot
+ * @author Sanbec
+ */
+$messages['es'] = array(
+ 'nuke' => 'Borrado en masa',
+ 'nuke-desc' => 'Da a los administradores la posibilidad de [[Special:Nuke|borrar páginas de forma masiva]]',
+ 'nuke-nopages' => 'No hay páginas nuevas de [[Special:Contributions/$1|$1]] en los cambios recientes.',
+ 'nuke-list' => '[[Special:Contributions/$1|$1]] creó recientemente las siguientes páginas;
+escriba un comentario y haga clic en el botón para borrarlas.',
+ 'nuke-defaultreason' => 'Eliminación en masa de páginas añadidas por $1',
+ 'nuke-tools' => 'Esta herramienta permite borrados masivos de páginas creadas recientemente por un usuario o una dirección IP.
+Introduzca el nombre de usuario o la dirección IP para obtener la lista de páginas a borrar, o déjelo en blanco para todos los usuarios.',
+ 'nuke-submit-user' => 'Ir',
+ 'nuke-submit-delete' => 'Borrar lo seleccionado',
+ 'right-nuke' => 'Borrar páginas masivamente',
+);
+
+/** Estonian (Eesti)
+ * @author Pikne
+ */
+$messages['et'] = array(
+ 'nuke' => 'Lauskustutamine',
+ 'nuke-desc' => 'Võimaldab ülematel lehekülgede [[Special:Nuke|lauskustutamist]].',
+ 'nuke-nopages' => 'Viimaste muudatuste all pole uusi kasutaja [[Special:Contributions/$1|$1]] loodud lehekülgi.',
+ 'nuke-list' => 'Kasutaja [[Special:Contributions/$1|$1]] on hiljuti loonud järgnevad leheküljed. Enne kustutamist sisesta kommentaar.',
+ 'nuke-defaultreason' => 'Kasutaja $1 lisatud lehekülgede lauseemaldamine',
+ 'nuke-tools' => 'See tööriist võimaldab ülesantud kasutaja või IP-aadressi lisatud leheküljed lauskustutada.
+Kustutatavate lehekülgede nimekirja näitamiseks sisesta kasutajanimi või IP-aadress.',
+ 'nuke-submit-user' => 'Mine',
+ 'nuke-submit-delete' => 'Kustuta väljavalitud',
+ 'right-nuke' => 'Lehekülgi lauskustutada',
+);
+
+/** Basque (Euskara)
+ * @author Theklan
+ * @author Unai Fdz. de Betoño
+ */
+$messages['eu'] = array(
+ 'nuke' => 'Ezabaketa masiboa',
+ 'nuke-nopages' => 'Aldaketa berrietan ez dago [[Special:Contributions/$1|$1]](r)en orri berririk.',
+ 'nuke-defaultreason' => '$1(e)k sortutako orrien ezabaketa masiboa',
+ 'nuke-submit-user' => 'Joan',
+ 'nuke-submit-delete' => 'Aukeratutakoa ezabatu',
+ 'right-nuke' => 'Masiboki ezabatutako orrialdeak',
+);
+
+/** Persian (Ùارسی)
+ * @author Huji
+ */
+$messages['fa'] = array(
+ 'nuke' => 'حذ٠دسته‌جمعی',
+ 'nuke-desc' => 'به مدیران امکان [[Special:Nuke|حذ٠دسته‌جمعی]] صÙحه‌ها را می‌دهد',
+ 'nuke-nopages' => 'صÙحه‌ٔ جدیدی از [[Special:Contributions/$1|$1]] در تغییرات اخیر وجود ندارد.',
+ 'nuke-list' => 'صÙحه‌های زیر به تازگی توسط [[Special:Contributions/$1|$1]] ایجاد شده‌اند؛ توضیحی ارائه کنید Ùˆ دکمه را بزنید تا این صحÙه‌ها حذ٠شوند.',
+ 'nuke-defaultreason' => 'حذ٠دسته‌جمعی صÙحه‌هایی Ú©Ù‡ توسط $1 ایجاد شده‌اند',
+ 'nuke-tools' => 'این ابزار امکان حذ٠دسته‌جمعی صÙحه‌هایی Ú©Ù‡ به تازگی توسط یک کاربر یا نشانی آی‌پی اضاÙÙ‡ شده‌اند را Ùراهم می‌کند.
+نام کاربری یا نشانی آی‌پی موردنظر را وارد کنید، یا جعبه را خالی بگذارید تا تمام کاربرها در نظر گرÙته شوند.',
+ 'nuke-submit-user' => 'برو',
+ 'nuke-submit-delete' => 'حذ٠موارد انتخاب شده',
+ 'right-nuke' => 'حذ٠دسته‌جمعی صÙحه‌ها',
+);
+
+/** Finnish (Suomi)
+ * @author Crt
+ * @author Jaakonam
+ */
+$messages['fi'] = array(
+ 'nuke' => 'Massapoisto',
+ 'nuke-desc' => 'Mahdollistaa ylläpitäjille sivujen [[Special:Nuke|massapoistamisen]].',
+ 'nuke-nopages' => 'Ei käyttäjän [[Special:Contributions/$1|$1]] lisäämiä uusia sivuja tuoreissa muutoksissa.',
+ 'nuke-list' => 'Käyttäjä [[Special:Contributions/$1|$1]] on äskettäin luonut seuraavat sivut.',
+ 'nuke-defaultreason' => 'Käyttäjän $1 lisäämien sivujen massapoistaminen',
+ 'nuke-tools' => 'Tämä työkalu mahdollistaa äskettäin lisättyjen sivujen massapoistamisen käyttäjänimen tai IP-osoitteen perusteella.
+Kirjoita käyttäjänimi tai IP-osoite, niin saat listan poistettavista sivuista.',
+ 'nuke-submit-user' => 'Siirry',
+ 'nuke-submit-delete' => 'Poista valitut',
+ 'right-nuke' => 'Massapoistaa sivuja',
+ 'nuke-select' => 'Valitse: $1',
+);
+
+/** French (Français)
+ * @author Grondin
+ * @author IAlex
+ * @author Jean-Frédéric
+ * @author Louperivois
+ * @author Peter17
+ * @author Sherbrooke
+ * @author Zetud
+ */
+$messages['fr'] = array(
+ 'nuke' => 'Suppression en masse',
+ 'nuke-desc' => 'Donne la possibilité aux administrateurs de [[Special:Nuke|supprimer en masse]] des pages',
+ 'nuke-nopages' => 'Aucune nouvelle page créée par [[Special:Contributions/$1|$1]] dans la liste des changements récents.',
+ 'nuke-list' => 'Les pages suivantes ont été créées récemment par [[Special:Contributions/$1|$1]]; Indiquer un commentaire et cliquer sur le bouton pour les supprimer.',
+ 'nuke-list-multiple' => 'Les pages suivantes ont été récemment créées ;
+entrez un commentaire et cliquez sur le bouton pour les supprimer.',
+ 'nuke-defaultreason' => 'Suppression en masse des pages ajoutées par $1',
+ 'nuke-tools' => 'Cet outil permet les suppressions en masse des pages ajoutées récemment par un utilisateur enregistré ou par une adresse IP. Indiquer l’adresse IP afin d’obtenir la liste des pages à supprimer, ou laisser blanc pour tous les utilisateurs.',
+ 'nuke-submit-user' => 'Valider',
+ 'nuke-submit-delete' => 'Supprimer la sélection',
+ 'right-nuke' => 'Supprimer des pages en masse',
+ 'nuke-select' => 'Sélectionnez : $1',
+ 'nuke-userorip' => "Nom d'utilisateur, adresse IP ou vide :",
+ 'nuke-maxpages' => 'Nombre maximal de pages :',
+ 'nuke-multiplepeople' => 'plusieurs utilisateurs',
+ 'nuke-editby' => 'Créé par [[Special:Contributions/$1|$1]]',
+);
+
+/** Franco-Provençal (Arpetan)
+ * @author ChrisPtDe
+ */
+$messages['frp'] = array(
+ 'nuke' => 'Suprèssion en massa',
+ 'nuke-desc' => 'Balye la possibilitât ux administrators de [[Special:Nuke|suprimar en massa]] des pâges.',
+ 'nuke-nopages' => 'Gins de pâge novèla fêta per [[Special:Contributions/$1|$1]] dens la lista des dèrriérs changements.',
+ 'nuke-list' => 'Cetes pâges ont étâ fêtes dèrriérement per [[Special:Contributions/$1|$1]] ;
+buchiéd un comentèro et pués clicâd sur lo boton por les suprimar.',
+ 'nuke-defaultreason' => 'Suprèssion en massa de les pâges apondues per $1',
+ 'nuke-tools' => 'Ceti outil pèrmèt les suprèssions en massa de les pâges apondues dèrriérement per un utilisator encartâ ou ben per una adrèce IP.
+Buchiér lo nom d’utilisator ou ben l’adrèce IP por avêr la lista de les pâges a suprimar, ou ben lèssiér blanc por tôs los utilisators.',
+ 'nuke-submit-user' => 'Validar',
+ 'nuke-submit-delete' => 'Suprimar lo chouèx',
+ 'right-nuke' => 'Suprimar des pâges en massa',
+ 'nuke-select' => 'Chouèsésséd : $1',
+ 'nuke-userorip' => 'Nom d’utilisator, adrèce IP ou ben vouedo :',
+ 'nuke-multiplepeople' => 'un mouél d’utilisators',
+ 'nuke-editby' => 'Fêt per [[Special:Contributions/$1|$1]]',
+);
+
+/** Friulian (Furlan)
+ * @author Klenje
+ */
+$messages['fur'] = array(
+ 'nuke-submit-user' => 'Va',
+);
+
+/** Galician (Galego)
+ * @author Alma
+ * @author Toliño
+ * @author Xosé
+ */
+$messages['gl'] = array(
+ 'nuke' => 'Eliminar en masa',
+ 'nuke-desc' => 'Dá aos administradores a posibilidade de [[Special:Nuke|borrar páxinas]] masivamente',
+ 'nuke-nopages' => 'Non hai novas páxinas feitas por [[Special:Contributions/$1|$1]] nos cambios recentes.',
+ 'nuke-list' => '[[Special:Contributions/$1|$1]] creou nos últimos intres as seguintes páxinas;
+escriba un comentario e prema o botón para borralas.',
+ 'nuke-list-multiple' => 'As seguintes páxinas creáronse recentemente;
+insira un comentario e prema o botón para borralas.',
+ 'nuke-defaultreason' => 'Eliminación en masa das páxinas engadidas por $1',
+ 'nuke-tools' => 'Esta ferramenta permite borrar en masa as páxinas engadidas recentemente por un determinado usuario ou enderezo IP.
+Introduza o nome do usuario ou enderezo IP para obter unha lista das páxinas para borrar. Déixeo en branco para todos os usuarios.',
+ 'nuke-submit-user' => 'Adiante',
+ 'nuke-submit-delete' => 'Eliminar o seleccionado',
+ 'right-nuke' => 'Borrar páxinas masivamente',
+ 'nuke-select' => 'Seleccionar: $1',
+ 'nuke-userorip' => 'Nome de usuario, enderezo IP ou en branco:',
+ 'nuke-maxpages' => 'Número máximo de páxinas:',
+ 'nuke-multiplepeople' => 'varios usuarios',
+ 'nuke-editby' => 'Creado por [[Special:Contributions/$1|$1]]',
+);
+
+/** Ancient Greek (ἈÏχαία ἑλληνικὴ)
+ * @author Omnipaedista
+ */
+$messages['grc'] = array(
+ 'nuke' => 'Μαζικὴ διαγÏαφή',
+ 'nuke-desc' => 'Δίδει τοῖς γέÏουσι τὴν ἱκανότητα [[Special:Nuke|μαζικῆς διαγÏαφῆς]] δέλτων.',
+ 'nuke-nopages' => 'Οá½Î´ÎµÎ¼Î¯Î± νέα δέλτος ὑπὸ τοῦ [[Special:Contributions/$1|$1]] á¼Î½ ταῖς Ï€Ïοσφάτοις ἀλλαγαῖς.',
+ 'nuke-list' => 'Αἱ ἀκόλουθοι δέλτοι Ï€Ïοσφάτως á¼Ï€Î¿Î¹Î®Î¸Î·ÏƒÎ±Î½ ὑπὸ τοῦ/τῆς [[Special:Contributions/$1|$1]]·
+á¼Î½Î±Ï€ÏŒÎ¸Î¿Ï… σχόλιόν τι καὶ πίεσον τὸ κομβίον ἵνα διαγÏάψῃς αὗται.',
+ 'nuke-defaultreason' => 'Μαζικὴ ἀφαίÏεσις δέλτων Ï€Ïοστεθειμένων ὑπὸ τοῦ $1',
+ 'nuke-tools' => 'Τόδε τὸ á¼Ïγαλεῖον á¼Ï€Î¹Ï„Ïέπει τὰν μαζικὰν διαγÏαφὰς δá¼Î»Ï„ων Ï€Ïοσφάτως Ï€Ïοστεθειμένων á¼Î¾ ἑνὸς δεδομένου χÏωμένου á¼¢ ἑνὸς IP (Διαδικτυακοῦ ΠÏωτοκόλλου).
+Ἔξεστί σοι εἰσάξειν τὸ ὀνοματεῖον á¼¢ τὸ IP ἵνα λάβῃς μίαν καταλογὴν διαγÏαπτέων δέλτων.',
+ 'nuke-submit-user' => 'Ἱέναι',
+ 'nuke-submit-delete' => 'ΔιαγÏάφειν τὴν á¼Ï€ÎµÎ¹Î»ÎµÎ³Î¼Î­Î½Î·Î½',
+ 'right-nuke' => 'Μαζικὴ διαγÏαφὴ δέλτων',
+);
+
+/** Swiss German (Alemannisch)
+ * @author Als-Holder
+ */
+$messages['gsw'] = array(
+ 'nuke' => 'Masseleschig',
+ 'nuke-desc' => 'Git Ammanne d Megligkeit fir e [[Special:Nuke|Masseleschig]] vu Syte',
+ 'nuke-nopages' => 'In dr Letschte Änderige het s kei neije Syte vu [[Special:Contributions/$1|$1]].',
+ 'nuke-list' => 'Die Syte sin vu [[Special:Contributions/$1|$1]] aagleit wore;
+gib e Kommentar yy un druck uf dr Leschchnopf.',
+ 'nuke-list-multiple' => 'Die Syte sin vor churzem aagleit wore.
+Schryb e Kommentar un druck uf dr Chnopf go si lesche.',
+ 'nuke-defaultreason' => 'Masseleschig vu Syte, wu vu „$1“ aagleit wore sin',
+ 'nuke-tools' => 'Des Wärchzyyg git d Megligkeit fir e Masseleschig vu Syte, wu vun ere IP-Adräss oder vun eme Benutzer aagleit wore sin. Gib d IP-Adräss/dr Benutzername yy fir ne Lischt z iberchu. Wänn du kei Aagab machsch, wäre alli Benutzer uusgwehlt.',
+ 'nuke-submit-user' => 'Hol Lischt',
+ 'nuke-submit-delete' => 'Lesche',
+ 'right-nuke' => 'Masseleschig vu Syte',
+ 'nuke-select' => 'Uuswehle: $1',
+ 'nuke-userorip' => 'Benutzername, IP-Adräss oder kei Aagab:',
+ 'nuke-maxpages' => 'Maximali Sytezahl:',
+ 'nuke-multiplepeople' => 'mehreri Benutzer',
+ 'nuke-editby' => 'Aagleit vu [[Special:Contributions/$1|$1]]',
+);
+
+/** Manx (Gaelg)
+ * @author MacTire02
+ */
+$messages['gv'] = array(
+ 'nuke-submit-user' => 'Gow',
+);
+
+/** Hebrew (עברית)
+ * @author Amire80
+ * @author Rotem Liss
+ * @author YaronSh
+ */
+$messages['he'] = array(
+ 'nuke' => 'מחיקה מרובה',
+ 'nuke-desc' => '×פשרות למפעילי המערכת לבצע [[Special:Nuke|מחיקה מרובה]] של דפי×',
+ 'nuke-nopages' => '×ין ×“×¤×™× ×—×“×©×™× ×©× ×•×¦×¨×• על ידי [[Special:Contributions/$1|$1]] in ×‘×©×™× ×•×™×™× ×”×חרוני×.',
+ 'nuke-list' => '×”×“×¤×™× ×”×‘××™× × ×•×¦×¨×• ל×חרונה על ידי [[Special:Contributions/$1|$1]];
+×× × ×›×ª×‘×• נימוק למחיקה ולחצו על הכפתור כדי למחוק ×ות×.',
+ 'nuke-list-multiple' => '×”×“×¤×™× ×”×‘××™× × ×•×¦×¨×• ל×חרונה;
+×× × ×›×ª×‘×• נימוק למחיקה ולחצו על הכפתור כדי למחוק ×ות×.',
+ 'nuke-defaultreason' => 'הסרה מרובה של ×“×¤×™× ×©× ×•×¡×¤×• על ידי $1',
+ 'nuke-tools' => 'כלי ×–×” מ×פשר מחיקות המוניות של ×“×¤×™× ×©× ×•×¡×¤×• ל×חרונה על ידי משתמש ×ו כתובת IP מסוימי×.
+כתבו ×ת ×©× ×”×ž×©×ª×ž×© ×ו כתובת ×”Ö¾IP כדי לקבל ×ת רשימת ×”×“×¤×™× ×œ×ž×—×™×§×” ×ו הש×ירו ×ת השדה ×”×–×” ריק עבור כל המשתמשי×.',
+ 'nuke-submit-user' => 'הצגה',
+ 'nuke-submit-delete' => 'מחיקת ×”×“×¤×™× ×©× ×‘×—×¨×•',
+ 'right-nuke' => 'מחיקה מרובה של דפי×',
+ 'nuke-select' => 'בחירה: $1',
+ 'nuke-userorip' => '×©× ×ž×©×ª×ž×©, כתובת IP ×ו ריק:',
+ 'nuke-maxpages' => 'מספר מרבי של דפי×:',
+ 'nuke-multiplepeople' => '×ž×©×ª×ž×©×™× ×ž×¨×•×‘×™×',
+ 'nuke-editby' => 'נוצר על ידי [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => "הדף '''$1''' נמחק.",
+ 'nuke-not-deleted' => "'''×œ× × ×™×ª×Ÿ''' למחוק ×ת הדף [[:$1]].",
+);
+
+/** Hindi (हिनà¥à¤¦à¥€)
+ * @author Kaustubh
+ * @author Shyam
+ */
+$messages['hi'] = array(
+ 'nuke' => 'à¤à¤•à¤¸à¤¾à¤¥ बहà¥à¤¤ सारे पनà¥à¤¨à¥‡ हटायें',
+ 'nuke-desc' => 'पà¥à¤°à¤¬à¤‚धकोंको à¤à¤•à¤¸à¤¾à¤¥ [[Special:Nuke|बहà¥à¤¤ सारे पनà¥à¤¨à¥‡ हटानेकी]] अनà¥à¤®à¤¤à¤¿ देता हैं',
+ 'nuke-nopages' => 'हाल में हà¥à¤ बदलावोंमें [[Special:Contributions/$1|$1]] दà¥à¤µà¤¾à¤°à¤¾ नये पनà¥à¤¨à¥‡ नहीं हैं।',
+ 'nuke-list' => 'नीचे दिये हà¥à¤ पनà¥à¤¨à¥‡ [[Special:Contributions/$1|$1]] ने हाल में बनायें हैं; टिपà¥à¤ªà¤£à¥€ दें और हटाने के लिये बटनपर कà¥à¤²à¤¿à¤• करें।',
+ 'nuke-defaultreason' => '$1 ने बनाये हà¥à¤ पनà¥à¤¨à¥‡ à¤à¤•à¤¸à¤¾à¤¥ हटायें',
+ 'nuke-tools' => 'यह उपकरण किसी सदसà¥à¤¯ या IP दà¥à¤µà¤¾à¤°à¤¾ हाल ही में जोड़े गठपृषà¥à¤ à¥‹à¤‚ को सामूहिक रूप से हटाने में सहायक है।
+सदसà¥à¤¯à¤¨à¤¾à¤® या IP डालकर हटाने वाले पृषà¥à¤ à¥‹à¤‚ की सूची पà¥à¤°à¤¾à¤ªà¥à¤¤ करें।',
+ 'nuke-submit-user' => 'जायें',
+ 'nuke-submit-delete' => 'चà¥à¤¨à¥‡ हà¥à¤ हटायें',
+ 'right-nuke' => 'बहà¥à¤¤à¤¸à¥‡ पनà¥à¤¨à¥‡ à¤à¤•à¤¸à¤¾à¤¥ हटायें',
+);
+
+/** Hiligaynon (Ilonggo)
+ * @author Jose77
+ */
+$messages['hil'] = array(
+ 'nuke-submit-user' => 'Lakat',
+);
+
+/** Croatian (Hrvatski)
+ * @author Dalibor Bosits
+ * @author Dnik
+ * @author SpeedyGonsales
+ */
+$messages['hr'] = array(
+ 'nuke' => 'Skupno brisanje',
+ 'nuke-desc' => 'Daje administratorima mogućnost [[Special:Nuke|skupnog brisanja]] stranica',
+ 'nuke-nopages' => 'Nema novih stranica suradnika [[Special:Contributions/$1|$1]] među nedavnim promjenama.',
+ 'nuke-list' => 'Slijedeće stranice je stvorio suradnik [[Special:Contributions/$1|$1]]; napiÅ¡ite zakljuÄak i kliknite gumb za njihovo brisanje.',
+ 'nuke-defaultreason' => 'Skupno brisanje stranica suradnika $1',
+ 'nuke-tools' => 'Ova ekstenzija omogućava skupno brisanje stranica (Älanaka) nekog prijavljenog ili neprijavljenog suradnika. UpiÅ¡ite ime ili IP adresu za dobivanje popisa stranica koje je moguće obrisati:',
+ 'nuke-submit-user' => 'Kreni',
+ 'nuke-submit-delete' => 'ObriÅ¡i oznaÄeno',
+ 'right-nuke' => 'Skupno brisanje stranica',
+ 'nuke-select' => 'Odaberite: $1',
+);
+
+/** Upper Sorbian (Hornjoserbsce)
+ * @author Michawiki
+ */
+$messages['hsb'] = array(
+ 'nuke' => 'Masowe wušmórnjenje',
+ 'nuke-desc' => 'Zmóžnja administratoram [[Special:Nuke|masowe wušmórnjenje]] stronow',
+ 'nuke-nopages' => 'W poslednich změnach njejsu nowe strony z [[Special:Contributions/$1|$1]].',
+ 'nuke-list' => 'SlÄ›dowace strony buchu runje pÅ™ez [[Special:Contributions/$1|$1]] wutworjene; zapodaj komentar a klikÅ„ na tłóÄatko wuÅ¡mórnjenja.',
+ 'nuke-list-multiple' => 'Slědowace strony su so runje wutowrili;
+napisaj komentar a klikÅ„ na tłóÄatko, zo by je wuÅ¡mórnyÅ‚.',
+ 'nuke-defaultreason' => 'Masowe wušmórnjenje stronow, kotrež buchu wot $1 wutworjene',
+ 'nuke-tools' => 'Tutón grat zmóžnja masowe wušmórnjenje stronow, kotrež buchu wot IP-adresy abo wužiwarja přidate. Zapodaj IP-adresu abo wužiwarske mjeno, zo by lisćinu stronow dóstał, kotrež maja so wušmórnyć.',
+ 'nuke-submit-user' => 'W porjadku',
+ 'nuke-submit-delete' => 'Wušmórnyć',
+ 'right-nuke' => 'Masowe zniÄenje stronow',
+ 'nuke-select' => 'Wubrać: $1',
+ 'nuke-userorip' => 'Wužiwar, IP abo prózdny:',
+ 'nuke-maxpages' => 'Maksimalna liÄba stronow:',
+ 'nuke-multiplepeople' => 'wjacori ludźo',
+ 'nuke-editby' => 'Wutworjeny wot [[Special:Contributions/$1|$1]]',
+);
+
+/** Hungarian (Magyar)
+ * @author Dani
+ * @author Dorgan
+ * @author KossuthRad
+ */
+$messages['hu'] = array(
+ 'nuke' => 'Halmozott törlés',
+ 'nuke-desc' => 'Lehetővé teszi az adminisztrátorok számára a lapok [[Special:Nuke|tömeges törlését]].',
+ 'nuke-nopages' => 'Nincsenek új oldalak [[Special:Contributions/$1|$1]] az aktuális események között.',
+ 'nuke-list' => 'Az alábbi lapokat nem rég készítette [[Special:Contributions/$1|$1]]; adj meg egy indoklást, és kattints a gombra a törlésükhöz.',
+ 'nuke-defaultreason' => '$1 által készített lapok tömeges eltávolítása',
+ 'nuke-tools' => 'Ez az eszköz lehetővé teszi egy adott felhasználó vagy IP által nem rég készített lapok tömeges törlését. Add meg a felhasználónevet vagy az IP-címet, hogy lekérd a törlendő lapok listáját:',
+ 'nuke-submit-user' => 'Menj',
+ 'nuke-submit-delete' => 'Kijelöltek törlése',
+ 'right-nuke' => 'oldalak tömeges törlése',
+);
+
+/** Interlingua (Interlingua)
+ * @author McDutchie
+ */
+$messages['ia'] = array(
+ 'nuke' => 'Deletion in massa',
+ 'nuke-desc' => 'Da le possibilitate al administratores de [[Special:Nuke|deler paginas in massa]]',
+ 'nuke-nopages' => 'Nulle nove paginas per [[Special:Contributions/$1|$1]] trovate in le modificationes recente.',
+ 'nuke-list' => 'Le sequente paginas esseva recentemente create per [[Special:Contributions/$1|$1]];
+entra un commento e clicca le button pro deler los.',
+ 'nuke-list-multiple' => 'Le sequente paginas esseva create recentemente;
+entra un commento e pulsa sur le button pro deler los.',
+ 'nuke-defaultreason' => 'Deletion in massa de paginas addite per $1',
+ 'nuke-tools' => 'Iste instrumento permitte le deletion in massa de paginas recentemente addite per un usator o adresse IP specific.
+Entra le nomine de usator o adresse IP pro obtener un lista de paginas a deler, o lassa vacue pro tote le usatores.',
+ 'nuke-submit-user' => 'Ir',
+ 'nuke-submit-delete' => 'Deler selection',
+ 'right-nuke' => 'Deler paginas in massa',
+ 'nuke-select' => 'Seliger: $1',
+ 'nuke-userorip' => 'Nomine de usator, adresse IP o vacue:',
+ 'nuke-maxpages' => 'Numero maxime de paginas:',
+ 'nuke-multiplepeople' => 'multiple usatores',
+ 'nuke-editby' => 'Create per [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => "Le pagina '''$1''' ha essite delite.",
+ 'nuke-not-deleted' => "Le pagina [[:$1]] '''non poteva''' esser delite.",
+);
+
+/** Indonesian (Bahasa Indonesia)
+ * @author Bennylin
+ * @author IvanLanin
+ * @author Rex
+ */
+$messages['id'] = array(
+ 'nuke' => 'Penghapusan massal',
+ 'nuke-desc' => 'Memberikan kemampuan bagi pengurus untuk [[Special:Nuke|menghapus halaman secara massal]]',
+ 'nuke-nopages' => 'Tak ditemukan halaman baru dari [[Special:Contributions/$1|$1]] di perubahan terbaru.',
+ 'nuke-list' => 'Halaman berikut baru saja dibuat oleh [[Special:Contributions/$1|$1]]; masukkan suatu komentar dan tekan tombol untuk menghapus halaman-halaman tersebut.',
+ 'nuke-list-multiple' => 'Halaman berikut baru dibuat;
+masukkan suatu komentar dan tekan tombol untuk menghapus.',
+ 'nuke-defaultreason' => 'Penghapusan massal halaman-halaman yang dibuat oleh $1',
+ 'nuke-tools' => 'Alat ini memungkinkan penghapusan massal halaman-halaman yang baru saja dibuat oleh seorang pengguna atau IP.
+Masukkan nama pengguna atau IP untuk mendapat daftar halaman yang dapat dihapus atau kosongkan untuk daftar halaman dari semua pengguna.',
+ 'nuke-submit-user' => 'Tuju ke',
+ 'nuke-submit-delete' => 'Hapus yang terpilih',
+ 'right-nuke' => 'Melakukan penghapusan masal halaman',
+ 'nuke-select' => 'Pilih: $1',
+ 'nuke-userorip' => 'Nama pengguna, alamat IP, atau kosong:',
+ 'nuke-maxpages' => 'Jumlah maksimum halaman:',
+ 'nuke-multiplepeople' => 'beberapa pengguna',
+ 'nuke-editby' => 'Dibuat oleh [[Special:Contributions/$1|$1]]',
+);
+
+/** Igbo (Igbo)
+ * @author Ukabia
+ */
+$messages['ig'] = array(
+ 'nuke-submit-user' => 'Gá',
+);
+
+/** Ido (Ido)
+ * @author Malafaya
+ */
+$messages['io'] = array(
+ 'nuke-submit-user' => 'Irar',
+ 'nuke-submit-delete' => 'Efacez selektiti',
+);
+
+/** Icelandic (Ãslenska)
+ * @author S.Örvarr.S
+ */
+$messages['is'] = array(
+ 'nuke' => 'Fjöldaeyða',
+ 'nuke-submit-user' => 'Ãfram',
+);
+
+/** Italian (Italiano)
+ * @author .anaconda
+ * @author Beta16
+ * @author BrokenArrow
+ * @author Darth Kule
+ */
+$messages['it'] = array(
+ 'nuke' => 'Cancellazione di massa',
+ 'nuke-desc' => 'Consente agli amministratori la [[Special:Nuke|cancellazione in massa]] delle pagine',
+ 'nuke-nopages' => 'Non sono state trovate nuove pagine create da [[Special:Contributions/$1|$1]] tra le modifiche recenti.',
+ 'nuke-list' => 'Le seguenti pagine sono state create di recente da [[Special:Contributions/$1|$1]]; inserisci un commento e conferma la cancellazione.',
+ 'nuke-list-multiple' => 'Le seguenti pagine sono state create recentemente;
+inserisci un commento e premi il pulsante per cancellarle.',
+ 'nuke-defaultreason' => 'Cancellazione di massa delle pagine create da $1',
+ 'nuke-tools' => "Questo strumento permette la cancellazione in massa delle pagina create di recente da un determinato utente registrato o anonimo (IP).
+Inserisci il nome utente o l'indirizzo IP per la lista delle pagine da cancellare, oppure lascia vuoto per tutti gli utenti.",
+ 'nuke-submit-user' => 'Vai',
+ 'nuke-submit-delete' => 'Cancella la selezione',
+ 'right-nuke' => 'Cancella pagine in massa',
+ 'nuke-select' => 'Seleziona: $1',
+ 'nuke-userorip' => 'Nome utente, indirizzo IP o vuoto:',
+ 'nuke-maxpages' => 'Numero massimo di pagine:',
+ 'nuke-multiplepeople' => 'più utenti',
+ 'nuke-editby' => 'Creato da [[Special:Contributions/$1|$1]]',
+);
+
+/** Japanese (日本語)
+ * @author Aotake
+ * @author Fievarsty
+ * @author Hosiryuhosi
+ * @author JtFuruhata
+ * @author Muttley
+ * @author Ohgi
+ * @author é’å­å®ˆæ­Œ
+ */
+$messages['ja'] = array(
+ 'nuke' => 'ã¾ã¨ã‚ã¦å‰Šé™¤',
+ 'nuke-desc' => '{{int:group-sysop}}ãŒãƒšãƒ¼ã‚¸ã‚’[[Special:Nuke|ã¾ã¨ã‚ã¦å‰Šé™¤]]ã§ãるよã†ã«ã™ã‚‹',
+ 'nuke-nopages' => '最近ã®æ›´æ–°ãƒšãƒ¼ã‚¸ã«[[Special:Contributions/$1|$1]]ãŒæ–°è¦ä½œæˆã—ãŸãƒšãƒ¼ã‚¸ã¯ã‚ã‚Šã¾ã›ã‚“。',
+ 'nuke-list' => '以下ã¯ã€[[Special:Contributions/$1|$1]] ã«ã‚ˆã£ã¦æœ€è¿‘作æˆã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã®ä¸€è¦§ã§ã™ã€‚ç†ç”±ã‚’記入ã—ボタンを押ã™ã¨ã€ä¸€æ°—ã«å‰Šé™¤ã•ã‚Œã¾ã™ã€‚',
+ 'nuke-list-multiple' => '最近作æˆã•ã‚ŒãŸãƒšãƒ¼ã‚¸ãŒè¡¨ç¤ºã•ã‚Œã¦ã„ã¾ã™ã€‚
+コメントを入力ã—ã€ãƒœã‚¿ãƒ³ã‚’押ã™ã¨ã€å‰Šé™¤ã•ã‚Œã¾ã™ã€‚',
+ 'nuke-defaultreason' => '$1 ã«ã‚ˆã£ã¦åŠ ãˆã‚‰ã‚ŒãŸãƒšãƒ¼ã‚¸ã‚’一括ã—ã¦å‰Šé™¤',
+ 'nuke-tools' => 'ã“ã®ãƒ„ールを使ã†ã¨ã€æŒ‡å®šã—ãŸåˆ©ç”¨è€…ã¾ãŸã¯IPアドレスã«ã‚ˆã£ã¦æœ€è¿‘作æˆã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã‚’ã€ã¾ã¨ã‚ã¦å‰Šé™¤ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
+利用者åã¾ãŸã¯IPアドレスを入力ã™ã‚‹ã¨ã€å‰Šé™¤å¯¾è±¡ãƒšãƒ¼ã‚¸ã®ä¸€è¦§ãŒç”Ÿæˆã•ã‚Œã¾ã™ã€‚空ã«ã™ã‚‹ã¨ã€ã™ã¹ã¦ã®åˆ©ç”¨è€…ã«ã‚ˆã‚‹ã‚‚ã®ãŒå¯¾è±¡ã«ãªã‚Šã¾ã™ã€‚',
+ 'nuke-submit-user' => '一覧å–å¾—',
+ 'nuke-submit-delete' => 'é¸æŠžã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã‚’削除',
+ 'right-nuke' => 'ページã®ä¸€æ‹¬å‰Šé™¤',
+ 'nuke-select' => 'é¸æŠžï¼š$1',
+ 'nuke-userorip' => '利用者åã€IPアドレスã¾ãŸã¯ç©ºç™½:',
+ 'nuke-maxpages' => 'ページã®æœ€å¤§é‡:',
+ 'nuke-multiplepeople' => '複数ã®åˆ©ç”¨è€…',
+ 'nuke-editby' => '[[Special:Contributions/$1|$1]]ã«ã‚ˆã£ã¦ä½œæˆ',
+);
+
+/** Jutish (Jysk)
+ * @author Huslåke
+ */
+$messages['jut'] = array(
+ 'nuke' => 'Massa slettenge',
+ 'nuke-desc' => 'Gæv administråtårer æ mågleghed til [[Special:Nuke|massa slette]] pæge',
+ 'nuke-nopages' => 'Ekke ny pæge til [[Special:Contributions/$1|$1]] i seneste ændrenger.',
+ 'nuke-list' => 'Æ følgende pæger åorte ræsentleg skep via [[Special:Contributions/$1|$1]]; set i en bemærkenge og slå æ knup til sletter hun.',
+ 'nuke-defaultreason' => 'Massa sletterenge der pæger skep via $1',
+ 'nuke-tools' => 'Dette tool gæv men æ mågleghed før massa sletterenge der pæges ræsentleg skeppen via æ gæven bruger æller IP. Input æ brugernavn æller IP til kriige æ liste der pæges til sletterenge:',
+ 'nuke-submit-user' => 'GÃ¥',
+ 'nuke-submit-delete' => 'Sletterenge sælektærn',
+);
+
+/** Javanese (Basa Jawa)
+ * @author Meursault2004
+ */
+$messages['jv'] = array(
+ 'nuke' => 'Busak massal',
+ 'nuke-desc' => 'Mènèhi opsis fungsionalitas kanggo [[Special:Nuke|mbusak massal]] kaca-kaca',
+ 'nuke-nopages' => 'Ora ditemokaké kaca anyar saka [[Special:Contributions/$1|$1]] ing owah-owahan pungkasan.',
+ 'nuke-list' => 'Kaca-kaca ing ngisor iki lagi baé digawé déning [[Special:Contributions/$1|$1]];
+lebokna komentar lan pencèten tombol kanggo mbusak kabèh.',
+ 'nuke-defaultreason' => 'Pambusakan massal kaca-kaca sing digawé déning $1',
+ 'nuke-tools' => 'Piranti iki bisa ngakibataké pambusakan massal kaca-kaca sing lagi waé ditambahaké déning sawijining panganggo utawa alamat IP.
+Lebokna jeneng panganggo utawa alamat IP kanggo olèh daftar kaca-kaca sing bisa dibusak:',
+ 'nuke-submit-user' => 'Lakokna',
+ 'nuke-submit-delete' => 'Busaken sing kapilih',
+ 'right-nuke' => 'Pambusakan masal',
+);
+
+/** Georgian (ქáƒáƒ áƒ—ული)
+ * @author Alsandro
+ * @author BRUTE
+ * @author Dawid Deutschland
+ * @author Sopho
+ */
+$messages['ka'] = array(
+ 'nuke' => 'მáƒáƒ¡áƒáƒ‘რივი წáƒáƒ¨áƒšáƒ',
+ 'nuke-desc' => 'áƒáƒ“მინისტრáƒáƒ¢áƒáƒ áƒ”ბს áƒáƒ«áƒšáƒ”ვს გვერდების [[Special:Nuke|მáƒáƒ¡áƒáƒ‘რივáƒáƒ“ წáƒáƒ¨áƒšáƒ˜áƒ¡]] სáƒáƒ¨áƒ£áƒáƒšáƒ”ბáƒáƒ¡',
+ 'nuke-nopages' => 'ბáƒáƒšáƒ ცვლილებებში áƒáƒ  áƒáƒ áƒ˜áƒ¡ áƒáƒ®áƒáƒšáƒ˜ გვერდები [[Special:Contributions/$1|$1]]-ის მიერ.',
+ 'nuke-list' => 'ეს გვერდები შეიქმნრ[[Special:Contributions/$1|$1]]-ის მიერ;
+შეიყვáƒáƒœáƒ”თ კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜ დრდáƒáƒáƒ­áƒ˜áƒ áƒ”თ ღილáƒáƒ™áƒ¡ მáƒáƒ— წáƒáƒ¡áƒáƒ¨áƒšáƒ”ლáƒáƒ“.',
+ 'nuke-defaultreason' => '$1-ის მიერ დáƒáƒ›áƒáƒ¢áƒ”ბული გვერდების მáƒáƒ¡áƒáƒ‘რივი წáƒáƒ¨áƒšáƒ',
+ 'nuke-tools' => 'ეს გვერდი გáƒáƒ«áƒšáƒ”ვთ ნებისმიერი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის áƒáƒœ IP მისáƒáƒ›áƒáƒ áƒ—ის მიერ დáƒáƒ›áƒáƒ¢áƒ”ბული გვერდების ერთბáƒáƒ¨áƒáƒ“ წáƒáƒ¨áƒšáƒ˜áƒ¡ სáƒáƒ¨áƒ£áƒáƒšáƒ”ბáƒáƒ¡.
+შეიყვáƒáƒœáƒ”თ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი áƒáƒœ IP მისáƒáƒ›áƒáƒ áƒ—ი მის მიერ დáƒáƒ›áƒáƒ¢áƒ”ბული გვერდების სიის მისáƒáƒ¦áƒ”ბáƒáƒ“.',
+ 'nuke-submit-user' => 'გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ',
+ 'nuke-submit-delete' => 'áƒáƒ áƒ©áƒ”ულის წáƒáƒ¨áƒšáƒ',
+ 'right-nuke' => 'გვერდების მáƒáƒ¡áƒáƒ‘რივáƒáƒ“ წáƒáƒ¨áƒšáƒ',
+ 'nuke-select' => 'áƒáƒ˜áƒ áƒ©áƒ˜áƒ”თ: $1',
+);
+
+/** Khmer (ភាសាážáŸ’មែរ)
+ * @author Chhorran
+ * @author Thearith
+ * @author គីមស៊្រុន
+ */
+$messages['km'] = array(
+ 'nuke' => 'លុបចáŸáž‰â€‹áž‡áž¶ážáŸ’សែ',
+ 'nuke-desc' => 'ផ្ážáž›áŸ‹áž›áž‘្ធភាព​ឱ្យ​អ្នកážáŸ‚ទាំប្រពáŸáž“្ធ [[Special:Nuke|លុបចáŸáž‰â€‹áž‡áž¶ážáŸ’សែ]] ទំពáŸážšáž“ានា',
+ 'nuke-nopages' => 'គ្មាន​ទំពáŸážšâ€‹ážáŸ’មី [[Special:Contributions/$1|$1]] ក្នុង​បំលាស់ប្ážáž¼ážšâ€‹ážáŸ’មីៗ​។',
+ 'nuke-list' => 'ទំពáŸážšáž‘ាំងនáŸáŸ‡ ទើបážáŸ‚​ážáŸ’រូវ​បាន​បង្កើហដោយ [[Special:Contributions/$1|$1]]; សូម​ដាក់​ហáŸážáž»áž•áž› និង​ចុច​ប្រអប់​ដើម្បី​លុបចáŸáž‰â€‹áž–ួកវា​។',
+ 'nuke-defaultreason' => 'ការដកចáŸáž‰â€‹áž‡áž¶ážáŸ’សែ នៃ​ទំពáŸážšâ€‹áž”ានបន្ážáŸ‚ម​ដោយ $1',
+ 'nuke-tools' => 'ឧបករណáŸâ€‹áž“áŸáŸ‡ អនុញ្ញាážâ€‹áž›áž»áž”áž…áŸáž‰â€‹áž‡áž¶ážáŸ’សែ​នូវ​ទំពáŸážšâ€‹áž‘ើប​បាន​បន្ážáŸ‚ម​ážáŸ’មីៗ ដោយ​អ្នកប្រើប្រាស់​បាន​ចុះ​ឈ្មោះ ឬ ដោយ​អាសយដ្ឋាន IP ។ សូម​បញ្ចូល​អážáŸ’ážáž“ាមអ្នកប្រើប្រាស់ ឬ អាសយដ្ឋាន IP ដើម្បី​មាន​បញ្ជីទំពáŸážšâ€‹ážŸáž˜áŸ’រាប់​លុប​៖',
+ 'nuke-submit-user' => 'ទៅ',
+ 'nuke-submit-delete' => 'លុបចáŸáž‰ ជម្រើសយក',
+);
+
+/** Kannada (ಕನà³à²¨à²¡)
+ * @author Nayvik
+ */
+$messages['kn'] = array(
+ 'nuke-submit-user' => 'ಹೋಗà³',
+);
+
+/** Korean (한국어)
+ * @author Albamhandae
+ * @author Klutzy
+ * @author Kwj2772
+ * @author ToePeu
+ */
+$messages['ko'] = array(
+ 'nuke' => '문서 대량 삭제',
+ 'nuke-desc' => '관리ìžê°€ 문서를 [[Special:Nuke|대량 ì‚­ì œ]]í•  수 있는 ê¸°ëŠ¥ì„ ì¶”ê°€í•©ë‹ˆë‹¤.',
+ 'nuke-nopages' => 'ìµœê·¼ì— [[Special:Contributions/$1|$1]] 사용ìžê°€ 만든 문서가 없습니다.',
+ 'nuke-list' => '다ìŒì€ [[Special:Contributions/$1|$1]]ì´(ê°€) ìµœê·¼ì— ë§Œë“  문서입니다.
+ì‚­ì œì— ëŒ€í•œ ì´ìœ ë¥¼ 입력한 ë‹¤ìŒ ì•„ëž˜ ë²„íŠ¼ì„ í´ë¦­í•´ì£¼ì„¸ìš”.',
+ 'nuke-list-multiple' => '다ìŒì€ ìµœê·¼ì— ìƒì„±ëœ 문서입니다.
+문서를 삭제하려면 ì´ìœ ë¥¼ 입력하고 ì‚­ì œ ë²„íŠ¼ì„ ëˆ„ë¥´ì‹­ì‹œì˜¤.',
+ 'nuke-defaultreason' => '$1ì´(ê°€) 작성한 문서를 대량 삭제함',
+ 'nuke-tools' => 'ì´ ë„구를 ì´ìš©í•´ 특정 사용ìžë‚˜ IP 사용ìžê°€ 최근 ìƒì„±í•œ 문서를 대량으로 삭제할 수 있습니다.
+삭제할 문서 목ë¡ì„ 가져오려면 계정 ì´ë¦„ì´ë‚˜ IP 주소를 입력하십시오. 입력하지 않으면 모든 사용ìžë¥¼ 대ìƒìœ¼ë¡œ 합니다.',
+ 'nuke-submit-user' => '계ì†',
+ 'nuke-submit-delete' => 'ì„ íƒí•œ 문서 ì‚­ì œ',
+ 'right-nuke' => '문서 대량 삭제',
+ 'nuke-select' => 'ì„ íƒ: $1',
+ 'nuke-userorip' => '계정 ì´ë¦„ì´ë‚˜ IP 주소 (í˜¹ì€ ê³µëž€ìœ¼ë¡œ 남겨 ë‘십시오):',
+ 'nuke-maxpages' => 'ë¬¸ì„œì˜ ìµœëŒ€ í¬ê¸°:',
+ 'nuke-multiplepeople' => 'ë‹¤ìˆ˜ì˜ íŽ¸ì§‘ìž',
+ 'nuke-editby' => '[[Special:Contributions/$1|$1]]ì´(ê°€) ìƒì„±í•¨',
+);
+
+/** Krio (Krio)
+ * @author Jose77
+ */
+$messages['kri'] = array(
+ 'nuke-submit-user' => 'Go to am',
+);
+
+/** Kinaray-a (Kinaray-a)
+ * @author Jose77
+ */
+$messages['krj'] = array(
+ 'nuke-submit-user' => 'Agto',
+);
+
+/** Colognian (Ripoarisch)
+ * @author Purodha
+ */
+$messages['ksh'] = array(
+ 'nuke' => 'Sigge fottschmieße ang Mass',
+ 'nuke-desc' => 'Määd_et müjjelesch för de Wiki-Köbesse, [[Special:Nuke|angmass Sigge fottzeschmieße]].',
+ 'nuke-nopages' => 'Mer han kein neu Sigge {{GENDER:$1|vum|vum|vum Metmaacher|vun dä|vum}} [[Special:Contributions/$1|$1]] en de {{lcfirst:{{int:Recentchanges}}}}.',
+ 'nuke-list' => 'Hee di Sigge sen fum „[[Special:Contributions/$1|$1]]“ neu
+aanjelaat woode. Jiff enne Jrond för et Fottschmieße aan,
+un dann donn der Knopp zom Fottschmieße dröcke.',
+ 'nuke-list-multiple' => 'Heh di Sigge woodte köözlesch aanjelaat.
+Jiv ene Jrond udder Zosammegfassung aan,
+un kleck op dä Knopp för se fott ze schmiiße.',
+ 'nuke-defaultreason' => 'Fum $1 neu aanjelaate Sigge ang Block fottschmieße',
+ 'nuke-tools' => 'Di Sigg hee hellef Der, angmaß Sigge fottzeschmieße,
+di ene bestemmpte enjeloggte udder namelose Metmaacher
+köözlesch aanjalaat hät.
+Jif dä Metmaacher-Name udder de IP-Address fun däm Naameloose aan,
+öm en Liß met Sigge fun däm ze krijje,
+udder lohß dat Feld läddesch, dann kriß De en Leß vun Alle.',
+ 'nuke-submit-user' => 'Leß holle',
+ 'nuke-submit-delete' => 'Donn de ußjewählte Sigge fottschmieße!',
+ 'right-nuke' => 'Massich Sigge Fottschmieße',
+ 'nuke-select' => 'Ußwähle: $1',
+ 'nuke-userorip' => 'Metmaacher_Name, <i lang="en">IP</i>-Addräß udder nix:',
+ 'nuke-maxpages' => 'Nit mieh Sigge, wi:',
+ 'nuke-multiplepeople' => 'ongerscheidlijje Metmaacher',
+ 'nuke-editby' => 'Aanjelaat vum [[Special:Contributions/$1|$1]]',
+);
+
+/** Luxembourgish (Lëtzebuergesch)
+ * @author Les Meloures
+ * @author Robby
+ */
+$messages['lb'] = array(
+ 'nuke' => 'Masse-Läschung',
+ 'nuke-desc' => "Gëtt Administrateuren d'Méiglechkeet fir [[Special:Nuke|vill Säite mateneen ze läschen]]",
+ 'nuke-nopages' => 'Et gëtt bei de läschten Ännerunge keng nei Säite vum [[Special:Contributions/$1|$1]].',
+ 'nuke-list' => 'Dës Säite goufe viru kuerzem vum [[Special:Contributions/$1|$1]] nei ugeluecht; gitt w.e.g. eng Bemierkung an, an dréckt op de Knäppche Läschen.',
+ 'nuke-list-multiple' => 'Dës Säite goufe rezent gemaach;
+setzt eng Bemierkung derbäi a klickt op de Knäppche fir se ze läschen.',
+ 'nuke-defaultreason' => 'Masse-Läschung vu Säiten, déi vum $1 ugefaang goufen',
+ 'nuke-tools' => "Dësen Tool erlaabt vill Säite mateneen ze läschen, déi vun engem Benotzer oder vun enger IP-Adresse ugeluecht goufen.
+Gitt w.e.g. d'IP-Adress respektiv de Benotzer n fir eng Lescht vun de Säiten ze kréien déi geläscht solle ginn, oder loosst et eidel fir all Benotzer.",
+ 'nuke-submit-user' => 'Lass',
+ 'nuke-submit-delete' => 'Ugewielt läschen',
+ 'right-nuke' => 'Vill Säite matenee läschen',
+ 'nuke-select' => 'Eraussichen:$1',
+ 'nuke-userorip' => 'Benotzernumm, IP-Adress oder eidel:',
+ 'nuke-maxpages' => 'Maximal Zuel vu Säiten:',
+ 'nuke-multiplepeople' => 'méi Benotzer',
+ 'nuke-editby' => 'Gemaach vum [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => "D'Säit '''$1''' gouf geläscht.",
+ 'nuke-not-deleted' => "D'Säit [[:$1]] '''konnt net''' geläscht ginn.",
+);
+
+/** Limburgish (Limburgs)
+ * @author Aelske
+ * @author Matthias
+ * @author Ooswesthoesbes
+ * @author Pahles
+ */
+$messages['li'] = array(
+ 'nuke' => 'Massaal weggoeje',
+ 'nuke-desc' => "Geuf beheerdersj de meugelikheid óm [[Special:Nuke|massaal pagina's weg te goeje]]",
+ 'nuke-nopages' => "Gein nuuj pagina's van [[Special:Contributions/$1|$1]] in de recente wieziginge.",
+ 'nuke-list' => "De onderstaonde pagina's zien recentelijk aangemaakt door [[Special:Contributions/$1|$1]]; voer 'n rede in en klik op de knop om ze te verwijdere/",
+ 'nuke-defaultreason' => "Massaal weggoeje van pagina's van $1",
+ 'nuke-tools' => "Dit hölpmiddel maak 't meugelik massaal pagina's te wisse die recentelijk zin aangemaak door 'n gebroeker of IP-adres. Veur de gebroekersnaam of 't IP-adres in veur 'n liees van te wisse pagina's:",
+ 'nuke-submit-user' => 'Gank',
+ 'nuke-submit-delete' => 'Geslecteerd wisse',
+ 'right-nuke' => "Massaal pagina's weggoeje",
+);
+
+/** Lithuanian (Lietuvių)
+ * @author Homo
+ * @author Matasg
+ */
+$messages['lt'] = array(
+ 'nuke' => 'Masinis trynimas',
+ 'nuke-desc' => 'Suteikia administratoriams galimybę [[Special:Nuke|masiškai trinti]] puslapius',
+ 'nuke-nopages' => 'Nėra naujų puslapių, sukurtų [[Special:Contributions/$1|$1]] naujausiuose keitimuose.',
+ 'nuke-list' => 'Šiuos puslapius neseniai sukūrė [[Special:Contributions/$1|$1]];
+įrašykite komentarą ir paspauskite mygtuką, kad jie būtų ištrinti.',
+ 'nuke-defaultreason' => 'Masinis pašalinimas puslapių, kuriuos sukūrė $1',
+ 'nuke-tools' => 'Šis įrankis leidžia masiškai ištrinti puslapius, neseniai sukurtus nurodyto naudotojo ar IP.
+Įrašykite naudotojo vardą ar IP adresą, kad gautumėte trintinų puslapių sąrašą.',
+ 'nuke-submit-user' => 'Išsiųsti',
+ 'nuke-submit-delete' => 'IÅ¡trinti pasirinktus(Ä…)',
+ 'right-nuke' => 'Masinis puslapių trynėjas',
+);
+
+/** Literary Chinese (文言) */
+$messages['lzh'] = array(
+ 'nuke' => 'é‡åˆª',
+ 'nuke-nopages' => '近易無示[[Special:Contributions/$1|$1]]之新é ã€‚',
+ 'nuke-list' => '[[Special:Contributions/$1|$1]]之作所示;剔註å†é»žåˆªä¹‹ã€‚',
+ 'nuke-defaultreason' => 'é‡åˆªç”±$1所建之é ',
+ 'nuke-tools' => 'æ­¤æ„供簿或IP建之é ã€‚入簿å加號å–表作刪也:',
+ 'nuke-submit-user' => 'å¾€',
+ 'nuke-submit-delete' => '刪已擇',
+ 'right-nuke' => 'é‡åˆªé ',
+);
+
+/** Malagasy (Malagasy)
+ * @author Jagwar
+ */
+$messages['mg'] = array(
+ 'right-nuke' => 'Mamafa pejy maro',
+);
+
+/** Macedonian (МакедонÑки)
+ * @author Bjankuloski06
+ */
+$messages['mk'] = array(
+ 'nuke' => 'Групно бришење',
+ 'nuke-desc' => 'Им дава можноÑÑ‚ на админиÑтраторите да вршат [[Special:Nuke|групно бришење]] на Ñтраници',
+ 'nuke-nopages' => 'Ðема нови Ñтраници од [[Special:Contributions/$1|$1]] во Ñкорешните промени.',
+ 'nuke-list' => 'Следниве Ñтраници биле неодамна Ñоздадени од [[Special:Contributions/$1|$1]];
+вметнете коментар и притиÑнете на копчето за да ги избришете',
+ 'nuke-list-multiple' => 'Следниве Ñтраници Ñе Ñоздадени неодамна.
+ВнеÑете коментар и ÑтиÑнете на копчето за да ги избришете.',
+ 'nuke-defaultreason' => 'Групно отÑтранување на Ñтраници додадени од $1',
+ 'nuke-tools' => 'Оваа алатка овозможува збирни бришења на Ñтраници неодамна додадени од извеÑен кориÑник или IP-адреÑа.
+ВнеÑете го кориÑничкото име или IP-адреÑа за да го добиете ÑпиÑокот на Ñтраници за бришење, или пак оÑтавете го празно ако Ñакате да Ñе наведат Ñите кориÑници.',
+ 'nuke-submit-user' => 'Изврши',
+ 'nuke-submit-delete' => 'Избриши ги избраните',
+ 'right-nuke' => 'Групно бришење на Ñтраници',
+ 'nuke-select' => 'Одбери: $1',
+ 'nuke-userorip' => 'КориÑничко име, IP-адреÑа или празно:',
+ 'nuke-maxpages' => 'МакÑ. број на Ñтраници:',
+ 'nuke-multiplepeople' => 'повеќе лица',
+ 'nuke-editby' => 'Создадено од [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => "Страницата '''$1''' е избришана.",
+ 'nuke-not-deleted' => "Страницата [[:$1]] '''не можеше''' да Ñе избрише.",
+);
+
+/** Malayalam (മലയാളം)
+ * @author Praveenp
+ * @author Shijualex
+ */
+$messages['ml'] = array(
+ 'nuke' => 'കൂടàµà´Ÿ മായàµà´•àµà´•àµ½',
+ 'nuke-desc' => 'സിസോപàµà´ªàµà´•àµ¾à´•àµà´•àµ താളàµà´•àµ¾ [[Special:Nuke|കൂടàµà´Ÿà´®à´¾à´¯à´¿ മായàµà´•àµà´•à´¾à´¨àµà´³àµà´³]] അവകാശം നൽകàµà´•',
+ 'nuke-nopages' => '[[Special:Contributions/$1|$1]] ഉണàµà´Ÿà´¾à´•àµà´•à´¿à´¯ à´ªàµà´¤à´¿à´¯ താളàµà´•à´³àµŠà´¨àµà´¨àµà´‚ à´ªàµà´¤à´¿à´¯ മാറàµà´±à´™àµà´™à´³à´¿à´²à´¿à´²àµà´².',
+ 'nuke-list' => 'താഴെ à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•àµ¾ [[Special:Contributions/$1|$1]] സമീപ കാലതàµà´¤àµ സൃഷàµà´Ÿà´¿à´šàµà´šà´µ ആണàµâ€Œ;
+ഇവ മായàµà´•àµà´•àµà´µà´¾àµ» à´…à´­à´¿à´ªàµà´°à´¾à´¯à´‚ രേഖപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¤à´¿à´¨àµ ശേഷം ബടàµà´Ÿàµº അമർതàµà´¤àµà´•.',
+ 'nuke-list-multiple' => 'താഴെകàµà´•àµŠà´Ÿàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•àµ¾ à´…à´Ÿàµà´¤àµà´¤à´¿à´Ÿàµ† സൃഷàµà´Ÿà´¿à´šàµà´šà´¤à´¾à´£àµ;
+à´…à´­à´¿à´ªàµà´°à´¾à´¯à´®à´¾à´•àµà´•à´¿à´¯à´¿à´Ÿàµà´Ÿàµ à´…à´µ മായàµà´•àµà´•à´¾à´¨à´¾à´¯à´¿ ബടàµà´Ÿàµº ഞെകàµà´•àµà´•.',
+ 'nuke-defaultreason' => '$1 ചേർതàµà´¤ താളàµà´•àµ¾ മൊതàµà´¤à´®à´¾à´¯à´¿ മായàµà´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ സം‌വിധാനം',
+ 'nuke-tools' => 'à´à´¤àµ†à´™àµà´•à´¿à´²àµà´‚ ഒരൠഉപയോകàµà´¤à´¾à´µàµ à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ à´.പി. സമീപകാലതàµà´¤àµ സൃഷàµà´Ÿà´¿à´šàµà´š താളàµà´•àµ¾ കൂടàµà´Ÿà´®à´¾à´¯à´¿ മായàµà´•àµà´•à´¾à´¨àµà´³àµà´³ സൗകരàµà´¯à´‚ à´ˆ സം‌വിധാനം നൽകàµà´¨àµà´¨àµ. ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ à´.പി. ഇവിടെ നൽകിയാൽ മായàµà´•àµà´•àµ‡à´£àµà´Ÿ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´• ലഭàµà´¯à´®à´¾à´•àµà´¨àµà´¨à´¤à´¾à´£àµ, à´Žà´²àµà´²à´¾ ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµà´‚ സൃഷàµà´Ÿà´¿à´šàµà´šà´¿à´Ÿàµà´Ÿàµà´³àµà´³ താൾ മായàµà´•àµà´•à´¾àµ» ശൂനàµà´¯à´®à´¾à´¯à´¿à´Ÿàµà´•.',
+ 'nuke-submit-user' => 'പോകൂ',
+ 'nuke-submit-delete' => 'തിരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤à´µ മായàµà´•àµà´•àµà´•',
+ 'right-nuke' => 'താളàµà´•àµ¾ കൂടàµà´Ÿà´¤àµà´¤àµ‹à´Ÿàµ† മായàµà´•àµà´•àµà´•',
+ 'nuke-select' => 'തിരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•: $1',
+ 'nuke-userorip' => 'ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚, à´.പി. വിലാസം à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ ശൂനàµà´¯à´®à´¾à´¯à´¿à´Ÿàµà´•:',
+ 'nuke-maxpages' => 'പരമാവധി à´Žà´¤àµà´° താളàµà´•àµ¾:',
+ 'nuke-multiplepeople' => 'à´’à´¨àµà´¨à´¿à´²à´§à´¿à´•à´‚ പേർ',
+ 'nuke-editby' => 'നിർമàµà´®à´¿à´šàµà´šà´¤àµ [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => "'''$1''' à´Žà´¨àµà´¨ താൾ മായàµà´šàµà´šàµ à´•à´´à´¿à´žàµà´žàµ.",
+ 'nuke-not-deleted' => "[[:$1]] à´Žà´¨àµà´¨ താൾ മായàµà´•àµà´•à´¾àµ» '''കഴിയിലàµà´²'''.",
+);
+
+/** Marathi (मराठी)
+ * @author Kaustubh
+ */
+$messages['mr'] = array(
+ 'nuke' => 'à¤à¤•à¤¦à¤® खूप पाने वगळा',
+ 'nuke-desc' => 'पà¥à¤°à¤¬à¤‚धकांना à¤à¤•à¤¾à¤šà¤µà¥‡à¤³à¥€ [[Special:Nuke|अनेक पाने वगळणà¥à¤¯à¤¾à¤šà¥€]] परवानगी देते',
+ 'nuke-nopages' => '[[Special:Contributions/$1|$1]] कडून अलीकडील बदलांमधà¥à¤¯à¥‡ नवीन पाने नाहीत.',
+ 'nuke-list' => 'खालील पाने ही [[Special:Contributions/$1|$1]] ने अलिकडे वाढविलेली आहेत; शेरा दà¥à¤¯à¤¾ व वगळणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ कळीवर टिचकी दà¥à¤¯à¤¾.',
+ 'nuke-defaultreason' => '$1 ने नवीन वाढविलेली अनेक पाने à¤à¤•à¤¾à¤µà¥‡à¤³à¥€ वगळा',
+ 'nuke-tools' => 'हे उपकरण à¤à¤–ादà¥à¤¯à¤¾ विशिषà¥à¤Ÿ सदसà¥à¤¯ अथवा अंकपतà¥à¤¤à¥à¤¯à¤¾à¤¦à¥à¤µà¤¾à¤°à¥‡ नवीन तयार करणà¥à¤¯à¤¾à¤¤ आलेलà¥à¤¯à¤¾ पानांना à¤à¤•à¤¾à¤šà¤µà¥‡à¤³à¥€ वगळणà¥à¤¯à¤¾à¤šà¥€ संधी देते. सदसà¥à¤¯ नाव अथवा अंकपतà¥à¤¤à¤¾ दिलà¥à¤¯à¤¾à¤¸ वगळणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ पानांची यादी मिळेल:',
+ 'nuke-submit-user' => 'जा',
+ 'nuke-submit-delete' => 'निवडलेले वगळा',
+ 'right-nuke' => 'खूप पाने à¤à¤•à¤¤à¥à¤° वगळा',
+);
+
+/** Malay (Bahasa Melayu)
+ * @author Anakmalaysia
+ * @author Aviator
+ */
+$messages['ms'] = array(
+ 'nuke' => 'Hapus pukal',
+ 'nuke-desc' => 'Membolehkan penyelia [[Special:Nuke|menghapuskan laman-laman]] secara pukal',
+ 'nuke-nopages' => 'Tiada laman baru oleh [[Special:Contributions/$1|$1]] dalam senarai perubahan terkini.',
+ 'nuke-list' => 'Laman-laman berikut dicipta oleh [[Special:Contributions/$1|$1]]; sila masukkan komen anda dan tekan butang untuk menghapuskannya.',
+ 'nuke-list-multiple' => 'Laman-laman berikut baru diwujudkan;
+isikan komen dan tekan butang untuk menghapuskannya.',
+ 'nuke-defaultreason' => 'Menghapuskan laman-laman yang ditambah oleh $1 secara pukal',
+ 'nuke-tools' => 'Alat ini membolehkan penghapusan secara besar-besaran laman-laman yang dibuka oleh pengguna atau alamat IP tertentu.
+Isikan nama pengguna atau alamat IP untuk mendapat senarai laman yang hendak dikosongkan, atau biarkan kosong untuk semua pengguna.',
+ 'nuke-submit-user' => 'Pergi',
+ 'nuke-submit-delete' => 'Hapus',
+ 'right-nuke' => 'Menghapuskan laman secara pukal',
+ 'nuke-select' => 'Pilih: $1',
+ 'nuke-userorip' => 'Nama pengguna, alamat IP atau kosong:',
+ 'nuke-maxpages' => 'Bilangan halaman maksimum:',
+ 'nuke-multiplepeople' => 'berbilang pengguna',
+ 'nuke-editby' => 'Dibuat oleh [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => "Laman '''$1''' telah dihapuskan.",
+ 'nuke-not-deleted' => "Laman [[:$1]] '''tidak dapat''' dihapuskan.",
+);
+
+/** Maltese (Malti)
+ * @author Chrisportelli
+ */
+$messages['mt'] = array(
+ 'nuke' => 'Tħassir tal-massa',
+ 'nuke-desc' => "Jagħti lill-amministraturi l-għodda li [[Special:Nuke|jħassru bil-massa]] numru ta' paġni.",
+ 'nuke-nopages' => 'Ma nstabu l-ebda paġni ġodda maħluqa minn [[Special:Contributions/$1|$1]] fost it-tibdil riċenti.',
+ 'nuke-list' => 'Il-paġni segwenti ġew riċentament maħluqa minn [[Special:Contributions/$1|$1]];
+daħħal kumment u agħfas il-buttuna sabiex tħassarhom.',
+ 'nuke-defaultreason' => "Tħassir ta' massa ta' paġni miżjuda minn $1",
+ 'nuke-tools' => "Din l-għodda tippermetti t-tħassir ta' massa ta' paġni li ġew miżjuda riċentament minn utent partikulari jew IP.
+Daħħal l-isem tal-utent jew l-indirizz IP biex tikseb lista ta' paġni li jridu jitħassru, jew ħalliha votja sabiex issejjaħ l-utenti kollha.",
+ 'nuke-submit-user' => 'Mur',
+ 'nuke-submit-delete' => 'Ħassar dawk magħżula',
+ 'right-nuke' => 'Ħassar paġni bil-massa',
+);
+
+/** Erzya (ЭрзÑнь)
+ * @author Botuzhaleny-sodamo
+ */
+$messages['myv'] = array(
+ 'nuke-submit-user' => 'ÐдÑ',
+);
+
+/** Nahuatl (NÄhuatl)
+ * @author Fluence
+ */
+$messages['nah'] = array(
+ 'nuke' => 'Huēyi tlapololiztli',
+ 'nuke-submit-user' => 'YÄuh',
+);
+
+/** Low German (Plattdüütsch)
+ * @author Slomox
+ */
+$messages['nds'] = array(
+ 'nuke' => 'General-Utmesten',
+ 'nuke-desc' => 'Verlöövt Administraters dat [[Special:Nuke|General-Utmesten]] vun Sieden',
+ 'nuke-nopages' => 'Gifft in de Ne’esten Ännern kene ne’en Sieden vun [[Special:Contributions/$1|$1]].',
+ 'nuke-list' => 'Disse Sieden hett [[Special:Contributions/$1|$1]] nee maakt; geev en Kommentar in un drück op den Utmest-Knopp.',
+ 'nuke-defaultreason' => 'General-Utmesten vun Sieden, de $1 anleggt hett',
+ 'nuke-tools' => 'Dit Warktüüch verlöövt dat General-Utmesten vun Sieden, de vun ene IP-Adress oder en Bruker anleggt worrn sünd. Geev de IP-Adress oder den Brukernaam in, dat du ene List kriggst:',
+ 'nuke-submit-user' => 'List kriegen',
+ 'nuke-submit-delete' => 'Utmesten',
+ 'right-nuke' => 'Groten Hümpel Sieden wegsmieten',
+);
+
+/** Nedersaksisch (Nedersaksisch)
+ * @author Servien
+ */
+$messages['nds-nl'] = array(
+ 'nuke' => 'Massaal vortdoon',
+ 'nuke-desc' => "Hiermee kunnen beheerders [[Special:Nuke|massaal pagina's vortdoon]]",
+ 'nuke-nopages' => "Gien nieje pagina's van [[Special:Contributions/$1|$1]] in de leste wiezigingen.",
+ 'nuke-defaultreason' => "Massaal pagina's van $1 vortdoon",
+ 'right-nuke' => "Massaal pagina's vortdoon",
+);
+
+/** Dutch (Nederlands)
+ * @author SPQRobin
+ * @author Siebrand
+ */
+$messages['nl'] = array(
+ 'nuke' => 'Massaal verwijderen',
+ 'nuke-desc' => "Geeft beheerders de mogelijkheid om [[Special:Nuke|massaal pagina's te verwijderen]]",
+ 'nuke-nopages' => "Geen nieuwe pagina's van [[Special:Contributions/$1|$1]] in de recente wijzigingen.",
+ 'nuke-list' => "De onderstaande pagina's zijn recentelijk aangemaakt door [[Special:Contributions/$1|$1]]; voer een reden in en klik op de knop om ze te verwijderen.",
+ 'nuke-list-multiple' => "De volgende pagina's zijn recentelijk aangemaakt.
+Geef een reden op en klik op de knop om ze te verwijderen.",
+ 'nuke-defaultreason' => "Massaal verwijderen van pagina's van $1",
+ 'nuke-tools' => "Dit hulpmiddel maakt het mogelijk pagina's die recentelijk zijn aangemaakt door een gebruiker of IP-adres massaal te verwijderen.
+Voer de gebruikersnaam of het IP-adres in voor een lijst van te verwijderen pagina's of laat leeg voor alle gebruikers.",
+ 'nuke-submit-user' => 'OK',
+ 'nuke-submit-delete' => 'Selectie verwijderen',
+ 'right-nuke' => "Massaal pagina's verwijderen",
+ 'nuke-select' => 'Selectie: $1',
+ 'nuke-userorip' => 'Gebruikersnaam, IP-adres of leeg:',
+ 'nuke-maxpages' => "Maximum aantal pagina's:",
+ 'nuke-multiplepeople' => 'meerdere gebruikers',
+ 'nuke-editby' => 'Aangemaakt door [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => "Pagina '''$1''' is verwijderd.",
+ 'nuke-not-deleted' => "Pagina [[:$1]] '''kon niet''' worden verwijderd.",
+);
+
+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+ * @author Harald Khan
+ */
+$messages['nn'] = array(
+ 'nuke' => 'Massesletting',
+ 'nuke-desc' => 'Gjev administratorane moglegheita til å [[Special:Nuke|massesletta]] sider',
+ 'nuke-nopages' => 'Ingen nye sider av [[Special:Contributions/$1|$1]] i siste endringar.',
+ 'nuke-list' => 'Følgjande sider blei nyleg oppretta av [[Special:Contributions/$1|$1]].
+Skriv inn ei sletteårsak og trykk på knappen for å sletta alle sidene.',
+ 'nuke-defaultreason' => 'Massesletting av sider lagde inn av $1',
+ 'nuke-tools' => 'Dette verktøyet mogleggjer massesletting av sider som nyleg er lagde inn av ein viss brukar eller ei viss IP-adressa.
+Skriv inn eit brukarnamn eller ei IP-adressa for å få ei lista over sider som ein kan sletta her.',
+ 'nuke-submit-user' => 'GÃ¥',
+ 'nuke-submit-delete' => 'Slett valde',
+ 'right-nuke' => 'Masseslett sider',
+ 'nuke-select' => 'Vel: $1',
+ 'nuke-multiplepeople' => 'fleire brukarar',
+ 'nuke-editby' => 'Oppretta av [[Special:Contributions/$1|$1]]',
+);
+
+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+ * @author Jon Harald Søby
+ * @author Nghtwlkr
+ */
+$messages['no'] = array(
+ 'nuke' => 'Massesletting',
+ 'nuke-desc' => 'Gir administratorer muligheten til å [[Special:Nuke|masseslette]] sider',
+ 'nuke-nopages' => 'Ingen nye sider av [[Special:Contributions/$1|$1]] i siste endringer.',
+ 'nuke-list' => 'Følgende sider ble nylig opprettet av [[Special:Contributions/$1|$1]]; skriv inn en slettingsgrunn og trykk på knappen for å slette alle sidene.',
+ 'nuke-defaultreason' => 'Massesletting av sider lagt inn av $1',
+ 'nuke-tools' => 'Dette verktøyet muliggjør massesletting av sider som nylig er lagt inn av en gitt bruker eller IP. Skriv et brukernavn eller en IP for å få en liste over sider som slettes:',
+ 'nuke-submit-user' => 'GÃ¥',
+ 'nuke-submit-delete' => 'Slett valgte',
+ 'right-nuke' => 'Slette sider <i>en masse</i>',
+ 'nuke-select' => 'Velg: $1',
+ 'nuke-editby' => 'Opprettet av [[Special:Contributions/$1|$1]]',
+);
+
+/** Northern Sotho (Sesotho sa Leboa)
+ * @author Mohau
+ */
+$messages['nso'] = array(
+ 'nuke-submit-user' => 'Sepela',
+);
+
+/** Occitan (Occitan)
+ * @author Cedric31
+ */
+$messages['oc'] = array(
+ 'nuke' => 'Supression en massa',
+ 'nuke-desc' => 'Balha la possiblitat als administrators de [[Special:Nuke|suprimir en massa]] de paginas.',
+ 'nuke-nopages' => 'Cap de pagina novèla creada per [[Special:Contributions/$1|$1]] dins la lista dels darrièrs cambiaments.',
+ 'nuke-list' => 'Las paginas seguentas son estadas creadas recentament per [[Special:Contributions/$1|$1]]; Indicatz un comentari e clicatz sul boton per los suprimir.',
+ 'nuke-defaultreason' => 'Supression en massa de las paginas apondudas per $1',
+ 'nuke-tools' => 'Aquesta aisina autoriza las supressions en massa de las paginas apondudas recentament per un utilizaire enregistrat o per una adreça IP. Indicatz l’adreça IP per obténer la tièra de las paginas de suprimir :',
+ 'nuke-submit-user' => 'Validar',
+ 'nuke-submit-delete' => 'Supression seleccionada',
+ 'right-nuke' => 'Suprimir de paginas en massa',
+);
+
+/** Ossetic (Иронау)
+ * @author Amikeco
+ */
+$messages['os'] = array(
+ 'nuke' => 'Бирæгай аппарын',
+ 'nuke-submit-user' => 'Ðфтæ уæд',
+ 'right-nuke' => 'фæрÑтæ бирæгай аппарын',
+);
+
+/** Deitsch (Deitsch)
+ * @author Xqt
+ */
+$messages['pdc'] = array(
+ 'nuke-submit-user' => 'Lischt hole',
+);
+
+/** Polish (Polski)
+ * @author Derbeth
+ * @author Leinad
+ * @author Nux
+ * @author Sp5uhe
+ */
+$messages['pl'] = array(
+ 'nuke' => 'Masowe usuwanie',
+ 'nuke-desc' => 'Dodaje administratorom funkcję równoczesnego [[Special:Nuke|usuwania dużej liczby stron]]',
+ 'nuke-nopages' => 'Brak nowych stron autorstwa [[Special:Contributions/$1|$1]] w ostatnich zmianach.',
+ 'nuke-list' => 'Następujące strony zostały ostatnio utworzone przez [[Special:Contributions/$1|$1]]; wpisz komentarz i wciśnij przycisk by usunąć je.',
+ 'nuke-list-multiple' => 'Poniższa lista przedstawia ostatnio dodane strony.
+Wpisz powód, a następnie zatwierdź usunięcie stron.',
+ 'nuke-defaultreason' => 'Masowe usunięcie stron dodanych przez $1',
+ 'nuke-tools' => 'Narzędzie pozwala na masowe usuwanie stron ostatnio dodanych przez zarejestrowanego lub anonimowego użytkownika.
+Wpisz nazwę użytkownika lub adres IP by otrzymać listę stron do usunięcia. Możesz także nic nie wpisywać, wtedy będzie można masowo usunąć wkład wszystkich użytkowników.',
+ 'nuke-submit-user' => 'Dalej',
+ 'nuke-submit-delete' => 'Usuń zaznaczone',
+ 'right-nuke' => 'Masowe usuwanie stron',
+ 'nuke-select' => 'Wybierz: $1',
+ 'nuke-userorip' => 'Podaj nazwę użytkownika, adres IP lub pozostaw puste pole',
+ 'nuke-maxpages' => 'Maksymalna liczba stron',
+ 'nuke-multiplepeople' => 'wielu użytkowników',
+ 'nuke-editby' => 'Utworzona przez [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => "Strona '''$1''' została usunięta.",
+ 'nuke-not-deleted' => "Strony [[:$1]] '''nie można''' usunąć.",
+);
+
+/** Piedmontese (Piemontèis)
+ * @author Borichèt
+ * @author Bèrto 'd Sèra
+ * @author Dragonòt
+ */
+$messages['pms'] = array(
+ 'nuke' => "Scancelament d'amblé",
+ 'nuke-desc' => "A dà a j'aministrador l'abilitassion a [[Special:Nuke|scanselé a baron]] le pàgine",
+ 'nuke-nopages' => "Gnun-a pàgine faite da [[Special:Contributions/$1|$1]] ant j'ùltim cambiament.",
+ 'nuke-list' => "Ste pàgine-sì a son staite faite ant j'ùltim temp da [[Special:Contributions/$1|$1]]; ch'a lassa un coment e ch'a-i daga 'n colp ansima al boton për gaveje via tute d'amblé.",
+ 'nuke-list-multiple' => "Le pàgine sì-dapress a son stàite creà da pòch;
+ch'a buta un coment e ch'a sgnaca ël boton për scanceleje.",
+ 'nuke-defaultreason' => "Scancelament d'amblé dle pàgine faite da $1",
+ 'nuke-tools' => "St'utiss-sì a lassa scancelé d'amblé le pàgine giontà ant j'ùltim temp da un chèich utent ò da 'nt na chèicha adrëssa IP. Ch'a buta lë stranòm ò l'adrëssa IP për tiré giù na lista dle pàgine da scancelé, o ch'a lassa an bianch për tùit j'utent.",
+ 'nuke-submit-user' => 'Va',
+ 'nuke-submit-delete' => 'Scansela le selessionà',
+ 'right-nuke' => 'Scansela le pàgine a baron',
+ 'nuke-select' => 'Selessioné: $1',
+ 'nuke-userorip' => 'Nòm utent, adrëssa IP o gnente:',
+ 'nuke-maxpages' => 'Màssim nùmer ëd pàgine:',
+ 'nuke-multiplepeople' => 'pi utent',
+ 'nuke-editby' => 'Creà da [[Special:Contributions/$1|$1]]',
+);
+
+/** Pashto (پښتو)
+ * @author Ahmed-Najib-Biabani-Ibrahimkhel
+ */
+$messages['ps'] = array(
+ 'nuke-submit-user' => 'ورÚÙ‡',
+ 'nuke-submit-delete' => 'ټاکل شوی ړنګول',
+);
+
+/** Portuguese (Português)
+ * @author 555
+ * @author Hamilton Abreu
+ * @author Malafaya
+ */
+$messages['pt'] = array(
+ 'nuke' => 'Eliminação em massa',
+ 'nuke-desc' => '[[Special:Nuke|Página especial]] que permite que os administradores apaguem páginas de forma massiva',
+ 'nuke-nopages' => 'Não há páginas criadas por [[Special:Contributions/$1|$1]] nas mudanças recentes.',
+ 'nuke-list' => 'As páginas a seguir foram criadas recentemente por [[Special:Contributions/$1|$1]]; introduza um comentário e pressione o botão a seguir para eliminá-las.',
+ 'nuke-list-multiple' => 'As seguintes páginas foram criadas recentemente;
+introduza um comentário e clique o botão para eliminá-las.',
+ 'nuke-defaultreason' => 'Eliminação em massa de páginas criadas por $1',
+ 'nuke-tools' => 'Esta ferramenta permite a eliminação em massa de páginas criadas recentemente por um utilizador ou IP específico. Forneça o nome de utilizador ou o IP para obter a lista de páginas a eliminar, ou deixe em branco para todos os utilizadores.',
+ 'nuke-submit-user' => 'Ir',
+ 'nuke-submit-delete' => 'Eliminar as seleccionadas',
+ 'right-nuke' => 'Eliminar páginas em massa',
+ 'nuke-select' => 'Seleccionar: $1',
+ 'nuke-userorip' => 'Utilizador, endereço IP, ou vazio:',
+ 'nuke-maxpages' => 'Nº máximo de páginas:',
+ 'nuke-multiplepeople' => 'vários utilizadores',
+ 'nuke-editby' => 'Criada por [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => "A página '''$1''' foi eliminada.",
+ 'nuke-not-deleted' => 'Não foi possível eliminar a página [[:$1]].',
+);
+
+/** Brazilian Portuguese (Português do Brasil)
+ * @author Carla404
+ * @author Eduardo.mps
+ * @author Giro720
+ */
+$messages['pt-br'] = array(
+ 'nuke' => 'Eliminar em massa',
+ 'nuke-desc' => 'Dá aos sysops a possibilidade de [[Special:Nuke|apagar páginas em massa]]',
+ 'nuke-nopages' => 'Não há novas páginas criadas por [[Special:Contributions/$1|$1]] nas mudanças recentes.',
+ 'nuke-list' => 'As páginas a seguir foram criadas recentemente por [[Special:Contributions/$1|$1]]; forneça uma justificativa e pressione o botão a seguir para eliminá-las.',
+ 'nuke-list-multiple' => 'As seguintes páginas foram criadas recentemente;
+introduza um comentário e clique o botão para eliminá-las.',
+ 'nuke-defaultreason' => 'Eliminação em massa de páginas criadas por $1',
+ 'nuke-tools' => 'Esta ferramenta permite a eliminação em massa de páginas criadas recentemente por um usuário ou IP específico.
+Forneça o nome de usuário ou o IP para obter a lista de páginas a eliminar, ou deixe em branco para todos os usuários.',
+ 'nuke-submit-user' => 'Ir',
+ 'nuke-submit-delete' => 'Eliminar as selecionadas',
+ 'right-nuke' => 'Eliminar páginas em massa',
+ 'nuke-select' => 'Selecionar: $1',
+ 'nuke-userorip' => 'Nome de usuário, endereço IP, ou vazio:',
+ 'nuke-maxpages' => 'Número máximo de páginas:',
+ 'nuke-multiplepeople' => 'vários usuários',
+ 'nuke-editby' => 'Criada por [[Special:Contributions/$1|$1]]',
+);
+
+/** Quechua (Runa Simi)
+ * @author AlimanRuna
+ */
+$messages['qu'] = array(
+ 'nuke' => 'Tawqa qulluy',
+ 'nuke-desc' => "Kamachiqkunata [[Special:Nuke|p'anqa tawqa qulluywan]] atichin",
+ 'nuke-nopages' => "Manam kanchu [[Special:Contributions/$1|$1]]-pa musuqta kamarisqan p'anqakuna ñaqha hukchasqakunapi.",
+ 'nuke-list' => "Kay qatiq p'anqakunataqa [[Special:Contributions/$1|$1]] ruraqmi kamarirqun; imarayku nispa butunta ñit'iy tawqalla qullunapaq.",
+ 'nuke-list-multiple' => "Kay qatiq p'anqakunaqa ñaqha kamarisqam;
+imatapas willapuspa butunta ñit'ipay qullunapaq.",
+ 'nuke-defaultreason' => "$1-pa rurasqan p'anqakunata tawqalla qulluy",
+ 'nuke-tools' => "Kay llamk'anawanqa huk ruraqpa icha huk IP huchhap ñaqha kamarisqan p'anqakunata tawqalla qulluytam atinki.
+Ruraqpa sutinta icha IP huchhanta yaykuchiy qulluna p'anqakunata rikunaykipaq.",
+ 'nuke-submit-user' => 'Riy',
+ 'nuke-submit-delete' => 'Akllasqata qulluy',
+ 'right-nuke' => "Tawqa qulluna p'anqakuna",
+ 'nuke-select' => 'Akllay: $1',
+ 'nuke-userorip' => "Ruraqpa sutin, IP huchha icha ch'usaq:",
+ 'nuke-maxpages' => "Kay chhika p'anqakunamanta ama aswan kachunchu:",
+ 'nuke-multiplepeople' => 'imaymana ruraqkuna',
+ 'nuke-editby' => '[[Special:Contributions/$1|$1]] sutiyuqpa kamarisqan',
+);
+
+/** Tarifit (Tarifit)
+ * @author Jose77
+ */
+$messages['rif'] = array(
+ 'nuke-submit-user' => 'Raḥ ɣa',
+);
+
+/** Romanian (Română)
+ * @author Cin
+ * @author Firilacroco
+ * @author KlaudiuMihaila
+ * @author Mihai
+ * @author Minisarm
+ * @author Stelistcristi
+ */
+$messages['ro'] = array(
+ 'nuke' => 'Ştergere în masă',
+ 'nuke-desc' => 'Oferă administratorilor abilitatea de [[Special:Nuke|a șterge în masă]] pagini',
+ 'nuke-nopages' => 'Nicio pagină nouă de către [[Special:Contributions/$1|$1]] în schimbările recente.',
+ 'nuke-list' => 'Aceste pagini au fost recent create de [[Special:Contributions/$1|$1]];
+adăugați un comentariu și apăsați butonul pentru a le șterge.',
+ 'nuke-defaultreason' => 'Eliminatorul în masă al paginilor adăugat de $1',
+ 'nuke-tools' => 'Această unealtă permite ștergeri în masă a paginilor recent adăugate de către un utilizator dat sau adresă IP.
+Introduceți numele de utilizator sau adresa IP pentru a primi o listă cu paginile de șters sau nu completați nimic pentru a lua în calcul toți utilizatorii.',
+ 'nuke-submit-user' => 'Du-te',
+ 'nuke-submit-delete' => 'Șterge ce e marcat',
+ 'right-nuke' => 'șterge pagini în masă',
+ 'nuke-select' => 'Alegeți: $1',
+ 'nuke-userorip' => 'Nume de utilizator, adresă IP sau necompletare:',
+ 'nuke-maxpages' => 'Număr maxim de pagini:',
+ 'nuke-multiplepeople' => 'mai mulți utilizatori',
+ 'nuke-editby' => 'Creat de [[Special:Contributions/$1|$1]]',
+);
+
+/** Tarandíne (Tarandíne)
+ * @author Joetaras
+ */
+$messages['roa-tara'] = array(
+ 'nuke' => 'Scangellazione de masse',
+ 'nuke-desc' => "Dà a l'amministrature l'abbilità de [[Special:Nuke|scangellà massivamende]] le pàggene",
+ 'nuke-nopages' => "Nisciuna pàgena nove da [[Special:Contributions/$1|$1]] jndr'à l'urteme cangiaminde.",
+ 'nuke-list' => "Le pàggene seguende onne state ccrejate recendemende da [[Special:Contributions/$1|$1]];
+mitte 'nu commende e cazze sus a 'u buttone pe scangellarle.",
+ 'nuke-list-multiple' => "Le pàggene seguende onne state ccrejate recendemende;
+mitte 'nu commende e cazze 'u buttone pe scangellarle.",
+ 'nuke-defaultreason' => 'Scangellazzione de masse de le pàggene aggiunde da $1',
+ 'nuke-tools' => "Stu strumende permette le scangellazziune de masse de le pàggene aggiunde de recende da 'nu certe utende o IP.<br />
+Mitte 'u nome de l'utende o l'indirizze IP pe avè 'n'elenghe de le pàggene de scangellà, o lasse vianghe pe tutte l'utinde.",
+ 'nuke-submit-user' => 'Veje',
+ 'nuke-submit-delete' => "Scangelle 'a selezione",
+ 'right-nuke' => 'Scangellazione de masse de le pàggene',
+ 'nuke-select' => 'Scacchie: $1',
+ 'nuke-userorip' => "Nome de l'utende, indirizze IP o vianghe:",
+ 'nuke-maxpages' => 'Numere massime de pàggene:',
+ 'nuke-multiplepeople' => 'utinde multiple',
+ 'nuke-editby' => 'Ccrejate da [[Special:Contributions/$1|$1]]',
+);
+
+/** Russian (РуÑÑкий)
+ * @author HalanTul
+ * @author VasilievVV
+ * @author ÐлекÑандр Сигачёв
+ */
+$messages['ru'] = array(
+ 'nuke' => 'МножеÑтвенное удаление',
+ 'nuke-desc' => 'Даёт админиÑтраторам возможноÑÑ‚ÑŒ [[Special:Nuke|множеÑтвенного удалениÑ]] Ñтраниц',
+ 'nuke-nopages' => 'Созданий Ñтраниц учаÑтником [[Special:Contributions/$1|$1]] не найдено в Ñвежих правках.',
+ 'nuke-list' => 'Следующие Ñтраницы были недавно Ñозданы учаÑтником [[Special:Contributions/$1|$1]]. Введите комментарий и нажмите на кнопку Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы удалить их.',
+ 'nuke-list-multiple' => 'Следующие Ñтраницы были недавно Ñозданы.
+ОÑтавьте примечание и нажмите кнопку, чтобы удалить их.',
+ 'nuke-defaultreason' => 'МножеÑтвенное удаление Ñтраниц, Ñозданных учаÑтником $1',
+ 'nuke-tools' => 'Эта Ñтраница позволÑет множеÑтвенно удалÑÑ‚ÑŒ Ñтраницы, недавно Ñозданные определённым учаÑтником или Ñ Ð·Ð°Ð´Ð°Ð½Ð½Ð¾Ð³Ð¾ IP-адреÑа.
+Введите Ð¸Ð¼Ñ ÑƒÑ‡Ð°Ñтника или IP-адреÑ, чтобы получить ÑпиÑок Ñтраниц Ð´Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ, или оÑтавьте поле пуÑтым, еÑли хотите выбрать вÑех учаÑтников.',
+ 'nuke-submit-user' => 'Выполнить',
+ 'nuke-submit-delete' => 'Удалить выбранные',
+ 'right-nuke' => 'множеÑтвенное удаление Ñтраниц',
+ 'nuke-select' => 'Выбор: $1',
+ 'nuke-userorip' => 'Ð˜Ð¼Ñ ÑƒÑ‡Ð°Ñтника, IP-Ð°Ð´Ñ€ÐµÑ (можно оÑтавить пуÑтым):',
+ 'nuke-maxpages' => 'МакÑимальное количеÑтво Ñтраниц:',
+ 'nuke-multiplepeople' => 'неÑкольких учаÑтников',
+ 'nuke-editby' => 'Созданные [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => "Страница '''$1''' была удалена.",
+ 'nuke-not-deleted' => "Страницы [[:$1]] '''не может''' быть удалена.",
+);
+
+/** Rusyn (РуÑиньÑкый)
+ * @author Gazeb
+ */
+$messages['rue'] = array(
+ 'nuke' => 'МаÑове вылучінÑ',
+ 'nuke-submit-user' => 'Выконати',
+ 'nuke-submit-delete' => 'Змазати выбдарны',
+ 'right-nuke' => 'МаÑове Ð²Ñ‹Ð»ÑƒÑ‡Ñ–Ð½Ñ Ñторінок',
+);
+
+/** Yakut (Саха тыла)
+ * @author HalanTul
+ */
+$messages['sah'] = array(
+ 'nuke' => 'МааÑÑабай Ñотуу',
+ 'nuke-desc' => 'ÐдминиÑтраатардарга [[Special:Nuke|ÑлбÑÑ… ÑирÑйи биир дьайыыннан Ñотор]] кыаҕы биÑÑ€ÑÑ€',
+ 'nuke-nopages' => 'КÑнники көннөрүүлÑÑ€ иÑпииһÑктÑригÑÑ€ [[Special:Contributions/$1|$1]] Ñаҥа ÑирÑйи оҥорбута көÑтүбÑÑ‚Ñ.',
+ 'nuke-list' => 'Бу ÑирÑйдÑри Ñоторутааҕыта [[Special:Contributions/$1|$1]] кыттааччы оҥорбут. Сотуоххун баҕарар буоллаххына быһаарыыны оҥорон баран тимÑҕи баттаа.',
+ 'nuke-list-multiple' => 'Бу ÑирÑйдÑÑ€ Ñоторутааҕыта оҥоһуллубуттар.
+Соторго быһаарыыта Ñуруйан баран тимÑҕи баттаа.',
+ 'nuke-defaultreason' => '$1 кыттааччы айбыт ÑирÑйдÑрин бүтүннүү Ñуох оҥоруу',
+ 'nuke-tools' => 'Бу ÑирÑй көмөтүнÑн ханнык ÑÐ¼Ñ ÐºÑ‹Ñ‚Ñ‚Ð°Ð°Ñ‡Ñ‡Ñ‹ оҥорбут көннөрүүлÑрин ÑбÑÑ‚ÑÑ€ биир IP-ттан оҥоһуллубут көннөрүүлÑри бүтүннүү Ñуох гынахха Ñөп.
+Кыттааччы аатын ÑбÑÑ‚ÑÑ€ IP-тын киллÑрдÑÑ…Ñ…Ð¸Ð½Ñ Ð¾Ò¥Ð¾Ñ€Ð±ÑƒÑ‚ көннөрүүлÑрин Ñ‚Ð¸Ò»Ð¸Ð³Ñ Ñ‚Ð°Ñ…Ñыа, кураанах хааллардаххына бары кыттааччылар көннөрүүлÑÑ€Ñ ÐºÓ©ÑÑ‚Ò¯Ó©.',
+ 'nuke-submit-user' => 'Толор',
+ 'nuke-submit-delete' => 'Талыллыбыты Ñот',
+ 'right-nuke' => 'СирÑйдÑри халҕаһалыы Ñуох оҥоруу',
+ 'nuke-select' => 'Талыы: $1',
+ 'nuke-userorip' => 'Кыттааччы аата, IP-аадырыһа (кураанах хаалларыахха Ñөп):',
+ 'nuke-maxpages' => 'СирÑй ахÑаанын хааччаҕа (макÑимум):',
+ 'nuke-multiplepeople' => 'ÑлбÑÑ… кыттааччы',
+ 'nuke-editby' => 'Оҥоһуллубуттар [[Special:Contributions/$1|$1]]',
+);
+
+/** Sicilian (Sicilianu)
+ * @author Santu
+ */
+$messages['scn'] = array(
+ 'nuke' => 'Scancella la massa',
+ 'nuke-desc' => "Pirmetti a l'amministraturi la [[Special:Nuke|scancillazzioni 'n massa]] dê pàggini",
+ 'nuke-nopages' => "Nun s'attruvaru pàggini novi criati di [[Special:Contributions/$1|$1]] ntra li mudìfichi fatti di picca tempu.",
+ 'nuke-list' => 'Li pàggini ccà di sècutu havi picca ca foru criati di [[Special:Contributions/$1|$1]]; nzirisci nu cummentu e cunferma la scancillazzioni.',
+ 'nuke-defaultreason' => 'Scanciallazzioni di massa dê pàggini criati di $1',
+ 'nuke-tools' => "Stu strumentu pirmetti di scancillari 'n massa pàggini criati di picca tempu di N'utenti o IP. Nzirisci lu nomu utenti o lu IP pi la lista dê pàggini di scancillari.",
+ 'nuke-submit-user' => 'Và',
+ 'nuke-submit-delete' => 'Scancella la silizzioni',
+ 'right-nuke' => "Scancella pàggini 'n massa",
+);
+
+/** Sinhala (සිංහල)
+ * @author නන්දිමිතුරු
+ */
+$messages['si'] = array(
+ 'nuke-submit-user' => 'යන්න',
+);
+
+/** Slovak (SlovenÄina)
+ * @author Helix84
+ */
+$messages['sk'] = array(
+ 'nuke' => 'Hromadné mazanie',
+ 'nuke-desc' => 'Dáva správcom schopnosť [[Special:Nuke|hromadného mazania]] stránok',
+ 'nuke-nopages' => 'V posledných zmenách sa nenachádzajú nové stránky od [[Special:Contributions/$1|$1]].',
+ 'nuke-list' => '[[Special:Contributions/$1|$1]] nedávno vytvoril nasledovné nové stránky; vyplňte komentár a stlaÄením tlaÄidla ich vymažete.',
+ 'nuke-list-multiple' => 'Tieto stránky boli nedávno vytvorené;
+vložením komentára a stlaÄením tlaÄidla ich môžete zmazaÅ¥.',
+ 'nuke-defaultreason' => 'Hromadné odstránenie stránok, ktoré pridal $1',
+ 'nuke-tools' => 'Tento nástroj umožňuje hromadné odstránenie stránok, ktoré nedávno pridal zadaný používateľ alebo IP.
+Zadajte používateľa alebo IP a dostanete zoznam stránok na zmazanie. Ponechajte prázdne a použije sa na všetkých používateľov.',
+ 'nuke-submit-user' => 'Vykonať',
+ 'nuke-submit-delete' => 'Zmazať vybrané',
+ 'right-nuke' => 'Hromadné mazanie stránok',
+ 'nuke-select' => 'Vybrať: $1',
+ 'nuke-userorip' => 'Používateľské meno, IP adresa alebo prázdne:',
+ 'nuke-maxpages' => 'Maximálny poÄet strán:',
+ 'nuke-multiplepeople' => 'viacerí používatelia',
+ 'nuke-editby' => 'Vytvoril [[Special:Contributions/$1|$1]]',
+);
+
+/** Slovenian (SlovenÅ¡Äina)
+ * @author Dbc334
+ */
+$messages['sl'] = array(
+ 'nuke' => 'MnožiÄni izbris',
+ 'nuke-desc' => 'Da administratorjem zmožnost [[Special:Nuke|množiÄnega izbrisa]] strani',
+ 'nuke-nopages' => 'Ni novih strani uporabnika [[Special:Contributions/$1|$1]] v zadnjih spremembah.',
+ 'nuke-list' => 'Naslednje strani je nedavno ustvaril uporabnik [[Special:Contributions/$1|$1]];
+vnesite komentar in pritisnite gumb za njihov izbris.',
+ 'nuke-list-multiple' => 'Naslednje strani so bile pred kratkim ustvarjene;
+vnesite pripombo in kliknite gumb, da jih izbrišete.',
+ 'nuke-defaultreason' => 'MnožiÄno brisanje strani, ki jih je dodal $1',
+ 'nuke-tools' => 'To orodje omogoÄa množiÄni izbris strani, ki jih je nedavno ustvaril doloÄen uporabnik ali IP.
+Vnesite uporabniško ime ali IP, da pridobite seznam strani za izbris, ali pustite prazno za vse uporabnike.',
+ 'nuke-submit-user' => 'Pojdi',
+ 'nuke-submit-delete' => 'Izbriši izbrano',
+ 'right-nuke' => 'MnožiÄno brisanje strani',
+ 'nuke-select' => 'Izberite: $1',
+ 'nuke-userorip' => 'Uporabniško ime, IP-naslov ali prazno:',
+ 'nuke-maxpages' => 'NajveÄje Å¡tevilo strani:',
+ 'nuke-multiplepeople' => 'veÄ oseb',
+ 'nuke-editby' => 'Ustvaril(-a) [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => "Stran '''$1''' je bila izbrisana.",
+ 'nuke-not-deleted' => "Strani [[:$1]] '''ni bilo mogoÄe''' izbrisati.",
+);
+
+/** Serbian Cyrillic ekavian (‪СрпÑки (ћирилица)‬)
+ * @author Millosh
+ * @author Rancher
+ * @author Жељко Тодоровић
+ */
+$messages['sr-ec'] = array(
+ 'nuke' => 'МаÑовно бриÑање',
+ 'nuke-desc' => 'Даје админиÑтратору могућноÑÑ‚ да [[Special:Nuke|маÑовно брише]] Ñтранице.',
+ 'nuke-nopages' => 'Ðема нових Ñтраница од Ñтране кориÑника [[Special:Contributions/$1|$1]] у Ñкорашњим изменама.',
+ 'nuke-list' => 'Следеће Ñтранице је Ñкоро направио кориÑник [[Special:Contributions/$1|$1]]; коментариши и притиÑни дугме за њихово бриÑање.',
+ 'nuke-defaultreason' => 'МаÑовно бриÑање Ñтраница које је направио кориÑник $1',
+ 'nuke-tools' => 'Ово оруђе омогућава маÑовно бриÑање Ñтраница које је Ñкоро додао одређени кориÑник (региÑтрован или не). УнеÑи кориÑничко име или ИП адреÑу за добијање ÑпиÑка Ñтраница за бриÑање.',
+ 'nuke-submit-user' => 'Иди',
+ 'nuke-submit-delete' => 'Обриши изабрано',
+ 'right-nuke' => 'маÑовно бриÑање Ñтраница',
+);
+
+/** Serbian Latin ekavian (‪Srpski (latinica)‬)
+ * @author Michaello
+ * @author Жељко Тодоровић
+ */
+$messages['sr-el'] = array(
+ 'nuke' => 'Masovno brisanje',
+ 'nuke-desc' => 'Daje administratoru mogućnost da [[Special:Nuke|masovno briše]] stranice.',
+ 'nuke-nopages' => 'Nema novih stranica od strane korisnika [[Special:Contributions/$1|$1]] u skorašnjim izmenama.',
+ 'nuke-list' => 'Sledeće stranice je skoro napravio korisnik [[Special:Contributions/$1|$1]]; komentariši i pritisni dugme za njihovo brisanje.',
+ 'nuke-defaultreason' => 'Masovno brisanje stranica koje je napravio korisnik $1.',
+ 'nuke-tools' => 'Ovo oruÄ‘e omogućava masovno brisanje stranica koje je skoro dodao odreÄ‘eni korisnik (registrovan ili ne). Unesi korisniÄko ime ili IP adresu za dobijanje spiska stranica za brisanje.',
+ 'nuke-submit-user' => 'Idi',
+ 'nuke-submit-delete' => 'Obriši obeleženo',
+ 'right-nuke' => 'Masovno brisanje strana.',
+);
+
+/** Seeltersk (Seeltersk)
+ * @author Pyt
+ */
+$messages['stq'] = array(
+ 'nuke' => 'Massen-Läskenge',
+ 'nuke-desc' => 'Moaket Administratore ju [[Special:Nuke|Massenlöösenge]] fon Sieden muugelk',
+ 'nuke-nopages' => 'Dät rakt in do Lääste Annerengen neen näie Sieden fon [[Special:Contributions/$1|$1]].',
+ 'nuke-list' => 'Do foulgjende Sieden wuuden fon [[Special:Contributions/$1|$1]] moaked; reek n Kommentoar ien un tai ap dän Läsk-Knoop.',
+ 'nuke-defaultreason' => 'Massen-Läskenge fon Sieden, do der fon $1 anlaid wuden',
+ 'nuke-tools' => 'Disse Reewe moaket ju Massen-Läskenge muugelk fon Sieden, do der fon een IP-Adresse of aan Benutser anlaid wuuden. Reek ju IP-Adresse/die Benutsernoome ien, uum ne Lieste tou kriegen:',
+ 'nuke-submit-user' => 'Hoalje Lieste',
+ 'nuke-submit-delete' => 'Läskje',
+ 'right-nuke' => 'Massenlöösenge fon Sieden',
+);
+
+/** Sundanese (Basa Sunda)
+ * @author Irwangatot
+ * @author Kandar
+ */
+$messages['su'] = array(
+ 'nuke' => 'Ngahapus masal',
+ 'nuke-desc' => 'Leler kuncén kawenangan pikeun [[Special:Nuke|ngahapus kaca sacara masal]]',
+ 'nuke-nopages' => 'Euweuh kaca anyar karya [[Special:Contributions/$1|$1]] dina béréndélan nu anyar robah.',
+ 'nuke-list' => 'Kaca di handap anyar dijieun ku [[Special:Contributions/$1|$1]];<br />
+tuliskeun pamanggih anjeun, terus pencét tombolna pikeun ngahapus.',
+ 'nuke-defaultreason' => 'Ngahapus kaca sacara masal ditambahkeun ku $1',
+ 'nuke-tools' => 'Ieu parabot bisa dipaké pikeun ngahapus masal kaca-kaca nu anyar ditambahkeun ku pamaké atawa IP nu dimaksud. Asupkeun landihan atawa IP pikeun mulut kaca nu rék dihapus:',
+ 'nuke-submit-user' => 'Jung',
+ 'nuke-submit-delete' => 'Hapus nu dipilih',
+ 'right-nuke' => 'Ngahapus masal kaca',
+);
+
+/** Swedish (Svenska)
+ * @author Lejonel
+ * @author Tobulos1
+ */
+$messages['sv'] = array(
+ 'nuke' => 'Massradering',
+ 'nuke-desc' => 'Gör det möjligt för administratörer att [[Special:Nuke|massradera]] sidor',
+ 'nuke-nopages' => 'Inga nya sidor av [[Special:Contributions/$1|$1]] bland de senaste ändringarna.',
+ 'nuke-list' => 'Följande sidor har nyligen skapats av [[Special:Contributions/$1|$1]]. Skriv en raderingskommentar och klicka på knappen för att ta bort dem.',
+ 'nuke-defaultreason' => 'Massradering av sidor skapade av $1',
+ 'nuke-tools' => 'Det här verktyget gör det möjligt att massradera sidor som nyligen skapats av en viss användare eller IP-adress.
+Ange ett användarnamn eller en IP-adress för att se en lista över sidor som kan tas bort.',
+ 'nuke-submit-user' => 'Visa',
+ 'nuke-submit-delete' => 'Ta bort valda',
+ 'right-nuke' => 'Massradera sidor',
+ 'nuke-select' => 'Välj: $1',
+);
+
+/** Swahili (Kiswahili) */
+$messages['sw'] = array(
+ 'nuke-submit-user' => 'Nenda',
+);
+
+/** Tamil (தமிழà¯)
+ * @author TRYPPN
+ */
+$messages['ta'] = array(
+ 'nuke-submit-user' => 'செலà¯',
+);
+
+/** Telugu (తెలà±à°—à±)
+ * @author Veeven
+ */
+$messages['te'] = array(
+ 'nuke' => 'సామూహిక తొలగింపà±',
+ 'nuke-desc' => 'నిరà±à°µà°¾à°¹à°•à±à°²à°•à± పేజీలనౠ[[Special:Nuke|సామూహికంగా తొలగించే]] సౌలభà±à°¯à°¾à°¨à±à°¨à°¿à°¸à±à°¤à±à°‚ది',
+ 'nuke-nopages' => 'ఇటీవలి మారà±à°ªà±à°²à°²à±‹ [[Special:Contributions/$1|$1]] సృషà±à°Ÿà°¿à°‚à°šà°¿à°¨ కొతà±à°¤ పేజీలేమీ లేవà±.',
+ 'nuke-list' => 'à°ˆ à°•à±à°°à°¿à°‚à°¦ పేరà±à°•à±Šà°¨à±à°¨ పేజీలనౠ[[Special:Contributions/$1|$1]] ఇటీవలే సృషà±à°Ÿà°¿à°‚చారà±; వాటిని తొలగించడానికి à°Žà°‚à°¦à±à°•à±‹ à°“ à°µà±à°¯à°¾à°–à±à°¯ రాసి ఆతరà±à°µà°¾à°¤ తొలగించౠఅనà±à°¨ బొతà±à°¤à°‚ నొకà±à°•à°‚à°¡à°¿.',
+ 'nuke-defaultreason' => '$1 చేరà±à°šà°¿à°¨ పేజీల యొకà±à°• సామూహిక తొలగింపà±',
+ 'nuke-tools' => 'à°“ à°ªà±à°°à°¤à±à°¯à±‡à°• వాడà±à°•à°°à°¿ లేదా IP చేరà±à°šà°¿à°¨ పేజీలనౠఒకà±à°•à°¸à°¾à°°à°¿à°—à°¾ తొలగించడానికి à°ˆ పనిమà±à°Ÿà±à°Ÿà± వీలà±à°•à°²à±à°ªà°¿à°¸à±à°¤à±à°‚ది. పేజీల జాబితాని పొందడానికి à°† వాడà±à°•à°°à°¿à°ªà±‡à°°à±à°¨à°¿ లేదా IPని ఇవà±à°µà°‚à°¡à°¿:',
+ 'nuke-submit-user' => 'వెళà±à°³à±',
+ 'nuke-submit-delete' => 'à°Žà°‚à°šà±à°•à±à°¨à±à°¨à°µà°¿ తొలగించà±',
+ 'right-nuke' => 'పేజీలనౠసామూహికంగా తొలగించడం',
+ 'nuke-select' => 'à°Žà°‚à°šà±à°•à±‹à°‚à°¡à°¿: $1',
+ 'nuke-maxpages' => 'à°—à°°à°¿à°·à±à°  à°ªà±à°Ÿà°² సంఖà±à°¯:',
+ 'nuke-multiplepeople' => 'పలౠవాడà±à°•à°°à±à°²à±',
+);
+
+/** Tetum (Tetun)
+ * @author MF-Warburg
+ */
+$messages['tet'] = array(
+ 'nuke-submit-user' => 'Bá',
+);
+
+/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic))
+ * @author Ibrahim
+ */
+$messages['tg-cyrl'] = array(
+ 'nuke' => 'Ҳазфи даÑтаҷамъӣ',
+ 'nuke-desc' => 'Ба мудирон имкони [[Special:Nuke|ҳазфи даÑтаҷамъии]] Ñаҳифаҳоро медиҳад',
+ 'nuke-nopages' => 'Саҳифаи ҷадиде аз [[Special:Contributions/$1|$1]] дар тағйироти охирин вуҷуд надорад.',
+ 'nuke-list' => 'Саҳифаҳои зерин ба тозагӣ таваÑÑути [[Special:Contributions/$1|$1]] Ñҷод шудаанд; тавзеҳеро гузоред ва тугмаеро фишор бидиҳед то ин Ñаҳифаҳо ҳазф шаванд.',
+ 'nuke-defaultreason' => 'Ҳазфи даÑтиҷамъии Ñаҳифаҳое, ки таваÑÑути $1 Ñҷод шудаанд',
+ 'nuke-tools' => 'Ин абзор имкони ҳазфи даÑтиҷамъии Ñаҳифаҳое, ки ба тозагӣ таваÑÑути Ñк корбар Ñ‘ нишонии интернетӣ IP изофашударо фароҳам мекунад. Ðоми корбар Ñ‘ нишонии IP вуруд кунед, феҳриÑти Ñаҳифаҳои барои ҳазфро даÑÑ‚Ñ€Ð°Ñ ÐºÑƒÐ½ÐµÐ´:',
+ 'nuke-submit-user' => 'Бирав',
+ 'nuke-submit-delete' => 'Интихобшудагон ҳазф шаванд',
+ 'right-nuke' => 'Ҳазфи даÑтаҷамъии Ñаҳифаҳо',
+);
+
+/** Tajik (Latin) (Тоҷикӣ (Latin))
+ * @author Liangent
+ */
+$messages['tg-latn'] = array(
+ 'nuke' => "Hazfi dastaçam'ī",
+ 'nuke-desc' => "Ba mudiron imkoni [[Special:Nuke|hazfi dastaçam'ii]] sahifahoro medihad",
+ 'nuke-nopages' => 'Sahifai çadide az [[Special:Contributions/$1|$1]] dar taƣjiroti oxirin vuçud nadorad.',
+ 'nuke-list' => 'Sahifahoi zerin ba tozagī tavassuti [[Special:Contributions/$1|$1]] eçod şudaand; tavzehero guzored va tugmaero fişor bidihed to in sahifaho hazf şavand.',
+ 'nuke-defaultreason' => "Hazfi dastiçam'iji sahifahoe, ki tavassuti $1 eçod şudaand",
+ 'nuke-tools' => "In abzor imkoni hazfi dastiçam'iji sahifahoe, ki ba tozagī tavassuti jak korbar jo nişoniji internetī IP izofaşudaro faroham mekunad. Nomi korbar jo nişoniji IP vurud kuned, fehristi sahifahoi baroi hazfro dastras kuned:",
+ 'nuke-submit-user' => 'Birav',
+ 'nuke-submit-delete' => 'IntixobÅŸudagon hazf ÅŸavand',
+ 'right-nuke' => "Hazfi dastaçam'iji sahifaho",
+);
+
+/** Turkmen (Türkmençe)
+ * @author Hanberke
+ */
+$messages['tk'] = array(
+ 'nuke' => 'Köpçülikleýin öçür',
+ 'nuke-desc' => 'Administratorlara sahypalary [[Special:Nuke|köpçülikleýin öçürme]] ukybyny berýär',
+ 'nuke-nopages' => 'Soňky üýtgeşmelerde [[Special:Contributions/$1|$1]] tarapyndan döredilen täze sahypa ýok.',
+ 'nuke-list' => 'Aşakdaky sahypalar ýakyn wagtda [[Special:Contributions/$1|$1]] tarafından oluşturuldu;
+bir teswir ýazyň we öçürmek üçin düwmä basyň.',
+ 'nuke-defaultreason' => '$1 tarapyndan sahypalaryň köpçülikleýin aýrylmagy goşuldy',
+ 'nuke-tools' => 'Bu gural bir ulanyjy ýa-da IP tarapyndan ýakyn wagtda goşulan sahypalaryň köpçülikleýin öçürilmegine rugsat berýär.
+Öçürilmeli sahypalaryň sanawyny almak üçin ulanyjy adyny ýa-da IP-ni giriziň.',
+ 'nuke-submit-user' => 'Git',
+ 'nuke-submit-delete' => 'Saýlanylanlary öçür',
+ 'right-nuke' => 'Sahypalary köpçülikleýin öçür',
+);
+
+/** Tagalog (Tagalog)
+ * @author AnakngAraw
+ */
+$messages['tl'] = array(
+ 'nuke' => 'Malawakang pagbura',
+ 'nuke-desc' => "Nagbibigay sa mga ''sysop'' ng kakayahang [[Special:Nuke|magburang pangmalawakan]] ng mga pahina",
+ 'nuke-nopages' => 'Walang bagong mga pahinang ginawa ni [[Special:Contributions/$1|$1]] na nasa loob ng kamakailang mga pagbabago.',
+ 'nuke-list' => 'Ang sumusunod na mga pahina ay nilikha kamakailan lamang ni [[Special:Contributions/$1|$1]];
+maglagay/magpasok ng isang puna (kumento) at pindutin ang pindutan upang mabura ang mga ito.',
+ 'nuke-list-multiple' => 'Ang sumusunod na mga pahina ay kamakailan lamang nalikha;
+maglagay ng isang puna at pindutin ang pindutan upang mabura ang mga ito.',
+ 'nuke-defaultreason' => 'Idinagdag ni $1 ang malawakang pagbubura ng mga pahina',
+ 'nuke-tools' => 'Nagpapahintulot ang kagamitang ito upang mabura ng malawakan ang mga pahinang idinagdag kamakailan ng isang ibinigay na tagagamit o tirahan ng IP.
+Ipasok ang pangalan ng tagagamit o tirahan ng IP upang makakuha ng isang talaan ng mga pahinang buburahin, o iwanang walang laman para sa lahat ng mga tagagamit.',
+ 'nuke-submit-user' => 'Gawin',
+ 'nuke-submit-delete' => 'Pinili ang pagbura',
+ 'right-nuke' => 'Malawakang burahin ang mga pahina',
+ 'nuke-select' => 'Piliin: $1',
+ 'nuke-userorip' => 'Pangalan ng tagagamit, Tirahan ng IP o walang laman:',
+ 'nuke-maxpages' => 'Pinakamaraming bilang ng mga pahina:',
+ 'nuke-multiplepeople' => 'maramihang mga tagagamit',
+ 'nuke-editby' => 'Nilikha ni [[Special:Contributions/$1|$1]]',
+);
+
+/** Turkish (Türkçe)
+ * @author Erkan Yilmaz
+ * @author Joseph
+ * @author Srhat
+ * @author Tarikozket
+ */
+$messages['tr'] = array(
+ 'nuke' => 'Kitlesel silme',
+ 'nuke-desc' => 'Hizmetlilere, sayfaları [[Special:Nuke|kitlesel silme]] yeteneği verir',
+ 'nuke-nopages' => 'Son değişikliklerde [[Special:Contributions/$1|$1]] tarafından oluşturulan yeni sayfa yok.',
+ 'nuke-list' => 'Aşağıdaki sayfalar yakın zamanda [[Special:Contributions/$1|$1]] tarafından oluşturuldu;
+bir yorum girin ve silmek için düğmeye basın.',
+ 'nuke-defaultreason' => '$1 tarafından eklenen sayfaların kitlesel kaldırımı',
+ 'nuke-tools' => 'Bu araç, bir kullanıcı ya da IP tarafından yakın zamanda eklenen sayfaların kitlesel silinmelerine izin verir.
+Silinecek sayfaların listesini almak için kullanıcı adını ya da IPyi girin.',
+ 'nuke-submit-user' => 'Git',
+ 'nuke-submit-delete' => 'Seçileni sil',
+ 'right-nuke' => 'Sayfaları kitlesel olarak sil',
+ 'nuke-select' => 'Seçilmiş: $1',
+);
+
+/** Tatar (Cyrillic) (Татарча/Tatarça (Cyrillic))
+ * @author Ильнар
+ */
+$messages['tt-cyrl'] = array(
+ 'nuke' => 'Күпләп бетерү',
+ 'right-nuke' => 'битләрне күпләп бетерү',
+);
+
+/** ئۇيغۇرچە (ئۇيغۇرچە)
+ * @author Alfredie
+ */
+$messages['ug-arab'] = array(
+ 'nuke-submit-user' => 'كۆچۈش',
+);
+
+/** Uighur (Latin) (ئۇيغۇرچە / Uyghurche‎ (Latin))
+ * @author Jose77
+ */
+$messages['ug-latn'] = array(
+ 'nuke-submit-user' => 'Köchüsh',
+);
+
+/** Ukrainian (УкраїнÑька)
+ * @author Ahonc
+ * @author ТеÑÑ‚
+ */
+$messages['uk'] = array(
+ 'nuke' => 'МаÑове вилученнÑ',
+ 'nuke-desc' => 'Дає адмініÑтраторам можливіÑÑ‚ÑŒ [[Special:Nuke|маÑового вилученнÑ]] Ñторінок',
+ 'nuke-nopages' => 'У нових редагуваннÑÑ… не знайдено Ñторінок, Ñтворених кориÑтувачем [[Special:Contributions/$1|$1]].',
+ 'nuke-list' => 'ÐаÑтупні Ñторінки були нещодавно Ñтворені кориÑтувачем [[Special:Contributions/$1|$1]].
+Уведіть коментар Ñ– натиÑніть на кнопку Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб вилучити Ñ—Ñ….',
+ 'nuke-defaultreason' => 'МаÑове Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ñторінок, Ñтворених кориÑтувачем $1',
+ 'nuke-tools' => "Ð¦Ñ Ñторінка дозволÑÑ” маÑово вилучати Ñторінки, Ñтворені певним кориÑтувачем або з певної IP-адреÑи.
+Уведіть ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача або IP Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб отримати ÑпиÑок Ñтворених ним Ñторінок:",
+ 'nuke-submit-user' => 'Виконати',
+ 'nuke-submit-delete' => 'Вилучити обрані',
+ 'right-nuke' => 'МаÑове Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ñторінок',
+ 'nuke-select' => 'Вибір: $1',
+ 'nuke-maxpages' => 'МакÑимальна кількіÑÑ‚ÑŒ Ñторінок:',
+ 'nuke-editby' => 'Створені [[Special:Contributions/$1|$1]]',
+);
+
+/** Vèneto (Vèneto)
+ * @author Candalua
+ */
+$messages['vec'] = array(
+ 'nuke' => 'Scancelazion de massa',
+ 'nuke-desc' => 'Consente ai aministradori la [[Special:Nuke|scancelazion in massa]] de le pagine',
+ 'nuke-nopages' => 'No xe stà catà pagine nove creà da [[Special:Contributions/$1|$1]] tra le modifiche recenti.',
+ 'nuke-list' => 'Le seguenti pagine le xe stà creà de recente da [[Special:Contributions/$1|$1]]; inserissi un comento e conferma la scancelazion.',
+ 'nuke-defaultreason' => 'Scancelazion de massa de le pagine creà da $1',
+ 'nuke-tools' => "Sto strumento el permete la scancelazion in massa de le pagine creà de recente da un determinato utente o IP. Inserissi el nome utente o l'IP par la lista de le pagine da scancelar:",
+ 'nuke-submit-user' => 'Và',
+ 'nuke-submit-delete' => 'Scancela la selezion',
+ 'right-nuke' => 'Scancelassion de massa de le pagine',
+);
+
+/** Veps (Vepsan kel')
+ * @author Игорь БродÑкий
+ */
+$messages['vep'] = array(
+ 'nuke' => 'Massine heitmine',
+ 'nuke-submit-user' => 'Mäne',
+ 'nuke-submit-delete' => 'ÄŒuta valitud',
+);
+
+/** Vietnamese (Tiếng Việt)
+ * @author Minh Nguyen
+ * @author Vinhtantran
+ */
+$messages['vi'] = array(
+ 'nuke' => 'Xóa hàng loạt',
+ 'nuke-desc' => 'Cung cấp cho bảo quản viên khả năng [[Special:Nuke|xóa trang hàng loạt]]',
+ 'nuke-nopages' => 'Không có trang mới do [[Special:Contributions/$1|$1]] tạo ra trong thay đổi gần đây.',
+ 'nuke-list' => 'Các trang sau do [[Special:Contributions/$1|$1]] tạo ra gần đây; hãy ghi lý do và nhấn nút để xóa tất cả những trang này.',
+ 'nuke-list-multiple' => 'Các trang sau được tạo ra gần đây.
+ÄÆ°a vào lý do và bấm nút để xóa chúng.',
+ 'nuke-defaultreason' => 'Xóa hàng loạt các trang do $1 tạo ra',
+ 'nuke-tools' => 'Công cụ này cho phép xóa hàng loạt các trang do má»™t thành viên hoặc ngÆ°á»i dùng địa chỉ IP nào đó tạo ra gần đây.
+Hãy nhập tên thành viên hoặc địa chỉ IP để lấy danh sách các trang sẽ xóa, hoặc để trống để xem các trang của má»i ngÆ°á»i dùng.',
+ 'nuke-submit-user' => 'Tìm kiếm',
+ 'nuke-submit-delete' => 'Xóa các trang đã chá»n',
+ 'right-nuke' => 'Xóa trang hàng loạt',
+ 'nuke-select' => 'Chá»n: $1',
+ 'nuke-userorip' => 'Tên thành viên, địa chỉ IP, hoặc trống:',
+ 'nuke-maxpages' => 'Số trang tối đa:',
+ 'nuke-multiplepeople' => 'hÆ¡n má»™t ngÆ°á»i',
+ 'nuke-editby' => 'Äược tạo bởi [[Special:Contributions/$1|$1]]',
+ 'nuke-deleted' => "Äã xóa trang '''$1'''.",
+ 'nuke-not-deleted' => "'''Không thể''' xóa trang [[:$1]].",
+);
+
+/** Volapük (Volapük)
+ * @author Smeira
+ */
+$messages['vo'] = array(
+ 'nuke' => 'Moükön pademi',
+ 'nuke-desc' => 'Gevon guvanes fägi ad moükön padamödotis',
+ 'nuke-nopages' => 'Pads nonik fa geban: [[Special:Contributions/$1|$1]] pejaföls binons su lised votükamas nulik.',
+ 'nuke-list' => 'Pads sököl pejafons brefabüo fa geban: [[Special:Contributions/$1|$1]]; penolös küpeti e klikolös gnobi ad moükön onis.',
+ 'nuke-defaultreason' => 'Moükam padas fa geban: $1 pejafölas',
+ 'nuke-tools' => 'Stum at kanon moükön mödoti padas fa geban u ladet-IP semik brefabüo pejafölas. Penolös gebananemi u ladeti-IP ad dagetön lisedi padas moükovik:',
+ 'nuke-submit-user' => 'Ledunolöd',
+ 'nuke-submit-delete' => 'Pevalöl ad pamoükön',
+ 'right-nuke' => 'Moükön padamödoti',
+);
+
+/** Yiddish (ייִדיש)
+ * @author פוילישער
+ */
+$messages['yi'] = array(
+ 'nuke-submit-user' => 'צייגן',
+);
+
+/** Cantonese (粵語)
+ * @author Shinjiman
+ */
+$messages['yue'] = array(
+ 'nuke' => '大é‡åˆªé™¤',
+ 'nuke-desc' => 'ç•€æ“作員去åš[[Special:Nuke|大é‡åˆªé™¤]]嘅能力',
+ 'nuke-nopages' => '響最近更改度無[[Special:Contributions/$1|$1]]所åšå˜…æ–°é ã€‚',
+ 'nuke-list' => '下é¢å˜…é ä¿‚ç”±[[Special:Contributions/$1|$1]]響之å‰æ‰€å¯«å˜…;記低一個註解å†æ’³æŽ£åŽ»åˆªé™¤ä½¢å“‹ã€‚',
+ 'nuke-defaultreason' => '大é‡åˆªé™¤ç”±$1所開嘅é ',
+ 'nuke-tools' => '呢個工具容許之å‰æ供咗嘅用戶或者IP加入嘅é ã€‚輸入用戶å或者IP去拎é ä¸€è¦½åŽ»åˆªé™¤:',
+ 'nuke-submit-user' => '去',
+ 'nuke-submit-delete' => '刪除㨂咗嘅',
+ 'right-nuke' => '大é‡åˆªé ',
+);
+
+/** Simplified Chinese (‪中文(简体)‬)
+ * @author Gaoxuewei
+ * @author Hydra
+ * @author Liangent
+ * @author PhiLiP
+ * @author Shinjiman
+ * @author Xiaomingyan
+ * @author 阿pp
+ */
+$messages['zh-hans'] = array(
+ 'nuke' => '大é‡åˆ é™¤',
+ 'nuke-desc' => '使系统管ç†å‘˜å…·æœ‰[[Special:Nuke|大é‡åˆ é™¤]]页é¢çš„能力',
+ 'nuke-nopages' => '在最近更改中没有[[Special:Contributions/$1|$1]]所作的新页é¢ã€‚',
+ 'nuke-list' => '以下页é¢æ˜¯ç”±[[Special:Contributions/$1|$1]]最新创建的;
+请留下摘è¦ä¿¡æ¯ï¼Œå¹¶ç‚¹å‡»æŒ‰é’®åˆ é™¤è¿™äº›é¡µé¢ã€‚',
+ 'nuke-list-multiple' => 'æœ€è¿‘åˆ›å»ºä»¥ä¸‹é¡µé¢ ï¼›
+在注释中,点击è¦åˆ é™¤å®ƒä»¬ã€‚',
+ 'nuke-defaultreason' => '大é‡åˆ é™¤ç”±$1所创建的页é¢',
+ 'nuke-tools' => '此工具å…许大规模删除指定用户或 IP 地å€æœ€è¿‘添加的页é¢ã€‚
+输入用户å或 IP 地å€ä»¥èŽ·å–å¯åˆ é™¤é¡µé¢çš„列表,空白则检索所有用户。',
+ 'nuke-submit-user' => 'æ交',
+ 'nuke-submit-delete' => '删除已选择的',
+ 'right-nuke' => '大é‡åˆ é™¤é¡µé¢',
+ 'nuke-select' => '选定:$1',
+ 'nuke-userorip' => 'IP 地å€æˆ–空白的用户å:',
+ 'nuke-maxpages' => '最大页é¢ï¼š',
+ 'nuke-multiplepeople' => '多个用户',
+ 'nuke-editby' => '与 [[Special:Contributions/$1|$1]]创建的',
+);
+
+/** Traditional Chinese (‪中文(ç¹é«”)‬)
+ * @author Mark85296341
+ * @author Shinjiman
+ */
+$messages['zh-hant'] = array(
+ 'nuke' => '大é‡åˆªé™¤',
+ 'nuke-desc' => '給æ“作員作出[[Special:Nuke|大é‡åˆªé™¤]]的能力',
+ 'nuke-nopages' => '在最近更改中沒有 [[Special:Contributions/$1|$1]] 所作的新é é¢ã€‚',
+ 'nuke-list' => '以下的é é¢æ˜¯ç”±[[Special:Contributions/$1|$1]]在以å‰æ‰€å¯«çš„;記下一個註解å†é»žæ“ŠæŒ‰éˆ•åŽ»åˆªé™¤å®ƒå€‘。',
+ 'nuke-defaultreason' => '大é‡åˆªé™¤ç”± $1 所建立的é é¢',
+ 'nuke-tools' => '這個工具容許先å‰æ供了的用戶或 IP ä½å€å»ºç«‹çš„é é¢ã€‚輸入用戶å或IP去å–å¾—é é¢åˆ—表以作刪除:',
+ 'nuke-submit-user' => '執行',
+ 'nuke-submit-delete' => '刪除已é¸æ“‡çš„',
+ 'right-nuke' => '大é‡åˆªé™¤é é¢',
+ 'nuke-select' => 'é¸æ“‡ï¼š$1',
+);
+
diff --git a/extensions/Nuke/Nuke.php b/extensions/Nuke/Nuke.php
new file mode 100644
index 00000000..28c7cda1
--- /dev/null
+++ b/extensions/Nuke/Nuke.php
@@ -0,0 +1,28 @@
+<?php
+
+if( !defined( 'MEDIAWIKI' ) ) {
+ die( 'Not an entry point.' );
+}
+
+define( 'Nuke_VERSION', '1.1' );
+
+$dir = dirname(__FILE__) . '/';
+
+$wgExtensionMessagesFiles['Nuke'] = $dir . 'Nuke.i18n.php';
+$wgExtensionAliasesFiles['Nuke'] = $dir . 'Nuke.alias.php';
+
+$wgExtensionCredits['specialpage'][] = array(
+ 'path' => __FILE__,
+ 'name' => 'Nuke',
+ 'descriptionmsg' => 'nuke-desc',
+ 'author' => 'Brion Vibber',
+ 'url' => 'http://www.mediawiki.org/wiki/Extension:Nuke',
+ 'version' => Nuke_VERSION,
+);
+
+$wgGroupPermissions['sysop']['nuke'] = true;
+$wgAvailableRights[] = 'nuke';
+
+$wgAutoloadClasses['SpecialNuke'] = $dir . 'Nuke_body.php';
+$wgSpecialPages['Nuke'] = 'SpecialNuke';
+$wgSpecialPageGroups['Nuke'] = 'pagetools';
diff --git a/extensions/Nuke/Nuke_body.php b/extensions/Nuke/Nuke_body.php
new file mode 100644
index 00000000..faa205ca
--- /dev/null
+++ b/extensions/Nuke/Nuke_body.php
@@ -0,0 +1,268 @@
+<?php
+
+class SpecialNuke extends SpecialPage {
+
+ public function __construct() {
+ parent::__construct( 'Nuke', 'nuke' );
+ }
+
+ public function execute( $par ){
+ global $wgUser, $wgRequest;
+
+ if( !$this->userCanExecute( $wgUser ) ){
+ $this->displayRestrictionError();
+ return;
+ }
+
+ $this->setHeaders();
+ $this->outputHeader();
+
+ if( $wgRequest->wasPosted() && $wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ) ) {
+ $target = $wgRequest->getText( 'target', $par );
+
+ // Normalise name
+ if ( $target !== '' ) {
+ $user = User::newFromName( $target );
+ if ( $user ) $target = $user->getName();
+ }
+
+ $reason = $wgRequest->getText(
+ 'wpReason',
+ wfMsgForContent(
+ 'nuke-defaultreason',
+ $target === '' ? wfMsg( 'nuke-multiplepeople' ) : $target
+ )
+ );
+
+ if ( $wgRequest->getVal( 'action' ) == 'delete' ) {
+ $pages = $wgRequest->getArray( 'pages' );
+
+ if( $pages ) {
+ return $this->doDelete( $pages, $reason );
+ }
+ }
+ else {
+ $this->listForm( $target, $reason, $wgRequest->getInt( 'limit' ) );
+ }
+ }
+ else {
+ $this->promptForm();
+ }
+ }
+
+ /**
+ * Prompt for a username or IP address.
+ */
+ protected function promptForm() {
+ global $wgOut, $wgUser;
+
+ $wgOut->addWikiMsg( 'nuke-tools' );
+
+ $wgOut->addHTML(
+ Xml::openElement(
+ 'form',
+ array(
+ 'action' => $this->getTitle()->getLocalURL( 'action=submit' ),
+ 'method' => 'post'
+ )
+ )
+ . '<table><tr>'
+ . '<td>' . htmlspecialchars( wfMsg( 'nuke-userorip' ) ) . '</td>'
+ . '<td>' . Xml::input( 'target', 40 ) . '</td>'
+ . '</tr><tr>'
+ . '<td>' . htmlspecialchars( wfMsg( 'nuke-maxpages' ) ) . '</td>'
+ . '<td>' . Xml::input( 'limit', 7, '500' ) . '</td>'
+ . '</tr><tr>'
+ . '<td></td>'
+ . '<td>' . Xml::submitButton( wfMsg( 'nuke-submit-user' ) ) . '</td>'
+ .'</tr></table>'
+ . Html::hidden( 'wpEditToken', $wgUser->editToken() )
+ . Xml::closeElement( 'form' )
+ );
+ }
+
+ /**
+ * Display list of pages to delete.
+ *
+ * @param string $username
+ * @param string $reason
+ * @param integer $limit
+ */
+ protected function listForm( $username, $reason, $limit ) {
+ global $wgUser, $wgOut, $wgLang;
+
+ $pages = $this->getNewPages( $username, $limit );
+
+ if( count( $pages ) == 0 ) {
+ $wgOut->addWikiMsg( 'nuke-nopages', $username );
+ return $this->promptForm();
+ }
+
+ if ( $username == '' ) {
+ $wgOut->addWikiMsg( 'nuke-list-multiple' );
+ }
+ else {
+ $wgOut->addWikiMsg( 'nuke-list', $username );
+ }
+
+ $nuke = $this->getTitle();
+
+ $script = <<<JAVASCRIPT
+<script type="text/javascript">
+function selectPages( bool ) {
+ var inputs = document.getElementsByTagName("input");
+ for (i = 0; i < inputs.length; i++) {
+ if (inputs[i].type == "checkbox") {
+ inputs[i].checked = bool;
+ }
+ }
+}
+</script>
+JAVASCRIPT;
+ $wgOut->addScript( $script );
+
+ $wgOut->addHTML(
+ Xml::openElement( 'form', array(
+ 'action' => $nuke->getLocalURL( 'action=delete' ),
+ 'method' => 'post',
+ 'name' => 'nukelist')
+ ) .
+ Html::hidden( 'wpEditToken', $wgUser->editToken() ) .
+ Xml::tags( 'p',
+ null,
+ Xml::inputLabel(
+ wfMsg( 'deletecomment' ), 'wpReason', 'wpReason', 60, $reason
+ )
+ )
+ );
+
+ // Select: All, None
+ $links = array();
+ $links[] = '<a href="#" onclick="selectPages( true ); return false;">' .
+ wfMsg( 'powersearch-toggleall' ) . '</a>';
+ $links[] = '<a href="#" onclick="selectPages( false ); return false;">' .
+ wfMsg( 'powersearch-togglenone' ) . '</a>';
+ $wgOut->addHTML(
+ Xml::tags( 'p',
+ null,
+ wfMsg( 'nuke-select', $wgLang->commaList( $links ) )
+ )
+ );
+
+ // Delete button
+ $wgOut->addHTML(
+ Xml::submitButton( wfMsg( 'nuke-submit-delete' ) )
+ );
+
+ $wgOut->addHTML( '<ul>' );
+
+ $sk = $wgUser->getSkin();
+ foreach( $pages as $info ) {
+ list( $title, $edits, $userName ) = $info;
+ $image = $title->getNamespace() == NS_IMAGE ? wfLocalFile( $title ) : false;
+ $thumb = $image && $image->exists() ? $image->transform( array( 'width' => 120, 'height' => 120 ), 0 ) : false;
+
+ $changes = wfMsgExt( 'nchanges', 'parsemag', $wgLang->formatNum( $edits ) );
+
+ $wgOut->addHTML( '<li>' .
+ Xml::check( 'pages[]', true,
+ array( 'value' => $title->getPrefixedDbKey() )
+ ) .
+ '&#160;' .
+ ( $thumb ? $thumb->toHtml( array( 'desc-link' => true ) ) : '' ) .
+ $sk->makeKnownLinkObj( $title ) .
+ '&#160;(' .
+ ( $userName ? wfMsgExt( 'nuke-editby', 'parseinline', $userName ) . ',&#160;' : '' ) .
+ $sk->makeKnownLinkObj( $title, $changes, 'action=history' ) .
+ ")</li>\n" );
+ }
+
+ $wgOut->addHTML(
+ "</ul>\n" .
+ Xml::submitButton( wfMsg( 'nuke-submit-delete' ) ) .
+ "</form>"
+ );
+ }
+
+ /**
+ * Gets a list of new pages by the specified user or everyone when none is specified.
+ *
+ * @param string $username
+ * @param integer $limit
+ *
+ * @return array
+ */
+ protected function getNewPages( $username, $limit ) {
+ $dbr = wfGetDB( DB_SLAVE );
+
+ $what = array(
+ 'rc_namespace',
+ 'rc_title',
+ 'rc_timestamp',
+ 'COUNT(*) AS edits'
+ );
+
+ $where = array( "(rc_new = 1) OR (rc_log_type = 'upload' AND rc_log_action = 'upload')" );
+
+ if ( $username == '' ) {
+ $what[] = 'rc_user_text';
+ }
+ else {
+ $where['rc_user_text'] = $username;
+ }
+
+ $result = $dbr->select( 'recentchanges',
+ $what,
+ $where,
+ __METHOD__,
+ array(
+ 'ORDER BY' => 'rc_timestamp DESC',
+ 'GROUP BY' => 'rc_namespace, rc_title',
+ 'LIMIT' => $limit
+ )
+ );
+
+ $pages = array();
+
+ foreach ( $result as $row ) {
+ $pages[] = array(
+ Title::makeTitle( $row->rc_namespace, $row->rc_title ),
+ $row->edits,
+ $username == '' ? $row->rc_user_text : false
+ );
+ }
+
+ $dbr->freeResult( $result );
+
+ return $pages;
+ }
+
+ /**
+ * Does the actual deletion of the pages.
+ *
+ * @param array $pages The pages to delete
+ * @param string $reason
+ */
+ protected function doDelete( array $pages, $reason ) {
+ global $wgOut;
+
+ $res = array();
+ foreach( $pages as $page ) {
+ $title = Title::newFromURL( $page );
+ $file = $title->getNamespace() == NS_FILE ? wfLocalFile( $title ) : false;
+ if ( $file ) {
+ $oldimage = null; // Must be passed by reference
+ $ok = FileDeleteForm::doDelete( $title, $file, $oldimage, $reason, false )->isOK();
+ } else {
+ $article = new Article( $title, 0 );
+ $ok = $article->doDeleteArticle( $reason );
+ }
+ if ( $ok ) {
+ $res[] = wfMsgExt( 'nuke-deleted', array( 'parseinline' ), $title->getPrefixedText() );
+ } else {
+ $res[] = wfMsgExt( 'nuke-not-deleted', array( 'parseinline' ), $title->getPrefixedText() );
+ }
+ }
+ $wgOut->addHTML( "<ul>\n<li>" .implode( "</li>\n<li>", $res ) . "</li>\n</ul>\n" );
+ }
+}
diff --git a/extensions/Nuke/SpecialNuke.php b/extensions/Nuke/SpecialNuke.php
new file mode 100644
index 00000000..99fe994f
--- /dev/null
+++ b/extensions/Nuke/SpecialNuke.php
@@ -0,0 +1,2 @@
+<?php
+require_once( dirname( __FILE__ ) . '/Nuke.php' );
diff --git a/extensions/ParserFunctions/COPYING b/extensions/ParserFunctions/COPYING
new file mode 100644
index 00000000..67563f07
--- /dev/null
+++ b/extensions/ParserFunctions/COPYING
@@ -0,0 +1,283 @@
+The ParserFunctions extension may be copied and redistributed under the GNU
+General Public License.
+
+-------------------------------------------------------------------------------
+
+ GNU GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1989, 1991 Free Software Foundation, Inc.,
+ 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+License is intended to guarantee your freedom to share and change free
+software--to make sure the software is free for all its users. This
+General Public License applies to most of the Free Software
+Foundation's software and to any other program whose authors commit to
+using it. (Some other Free Software Foundation software is covered by
+the GNU Lesser General Public License instead.) You can apply it to
+your programs, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if you
+distribute copies of the software, or if you modify it.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must give the recipients all the rights that
+you have. You must make sure that they, too, receive or can get the
+source code. And you must show them these terms so they know their
+rights.
+
+ We protect your rights with two steps: (1) copyright the software, and
+(2) offer you this license which gives you legal permission to copy,
+distribute and/or modify the software.
+
+ Also, for each author's protection and ours, we want to make certain
+that everyone understands that there is no warranty for this free
+software. If the software is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original, so
+that any problems introduced by others will not reflect on the original
+authors' reputations.
+
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that redistributors of a free
+program will individually obtain patent licenses, in effect making the
+program proprietary. To prevent this, we have made it clear that any
+patent must be licensed for everyone's free use or not licensed at all.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ GNU GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License applies to any program or other work which contains
+a notice placed by the copyright holder saying it may be distributed
+under the terms of this General Public License. The "Program", below,
+refers to any such program or work, and a "work based on the Program"
+means either the Program or any derivative work under copyright law:
+that is to say, a work containing the Program or a portion of it,
+either verbatim or with modifications and/or translated into another
+language. (Hereinafter, translation is included without limitation in
+the term "modification".) Each licensee is addressed as "you".
+
+Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running the Program is not restricted, and the output from the Program
+is covered only if its contents constitute a work based on the
+Program (independent of having been made by running the Program).
+Whether that is true depends on what the Program does.
+
+ 1. You may copy and distribute verbatim copies of the Program's
+source code as you receive it, in any medium, provided that you
+conspicuously and appropriately publish on each copy an appropriate
+copyright notice and disclaimer of warranty; keep intact all the
+notices that refer to this License and to the absence of any warranty;
+and give any other recipients of the Program a copy of this License
+along with the Program.
+
+You may charge a fee for the physical act of transferring a copy, and
+you may at your option offer warranty protection in exchange for a fee.
+
+ 2. You may modify your copy or copies of the Program or any portion
+of it, thus forming a work based on the Program, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) You must cause the modified files to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ b) You must cause any work that you distribute or publish, that in
+ whole or in part contains or is derived from the Program or any
+ part thereof, to be licensed as a whole at no charge to all third
+ parties under the terms of this License.
+
+ c) If the modified program normally reads commands interactively
+ when run, you must cause it, when started running for such
+ interactive use in the most ordinary way, to print or display an
+ announcement including an appropriate copyright notice and a
+ notice that there is no warranty (or else, saying that you provide
+ a warranty) and that users may redistribute the program under
+ these conditions, and telling the user how to view a copy of this
+ License. (Exception: if the Program itself is interactive but
+ does not normally print such an announcement, your work based on
+ the Program is not required to print an announcement.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Program,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Program, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Program.
+
+In addition, mere aggregation of another work not based on the Program
+with the Program (or with a work based on the Program) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may copy and distribute the Program (or a work based on it,
+under Section 2) in object code or executable form under the terms of
+Sections 1 and 2 above provided that you also do one of the following:
+
+ a) Accompany it with the complete corresponding machine-readable
+ source code, which must be distributed under the terms of Sections
+ 1 and 2 above on a medium customarily used for software interchange; or,
+
+ b) Accompany it with a written offer, valid for at least three
+ years, to give any third party, for a charge no more than your
+ cost of physically performing source distribution, a complete
+ machine-readable copy of the corresponding source code, to be
+ distributed under the terms of Sections 1 and 2 above on a medium
+ customarily used for software interchange; or,
+
+ c) Accompany it with the information you received as to the offer
+ to distribute corresponding source code. (This alternative is
+ allowed only for noncommercial distribution and only if you
+ received the program in object code or executable form with such
+ an offer, in accord with Subsection b above.)
+
+The source code for a work means the preferred form of the work for
+making modifications to it. For an executable work, complete source
+code means all the source code for all modules it contains, plus any
+associated interface definition files, plus the scripts used to
+control compilation and installation of the executable. However, as a
+special exception, the source code distributed need not include
+anything that is normally distributed (in either source or binary
+form) with the major components (compiler, kernel, and so on) of the
+operating system on which the executable runs, unless that component
+itself accompanies the executable.
+
+If distribution of executable or object code is made by offering
+access to copy from a designated place, then offering equivalent
+access to copy the source code from the same place counts as
+distribution of the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 4. You may not copy, modify, sublicense, or distribute the Program
+except as expressly provided under this License. Any attempt
+otherwise to copy, modify, sublicense or distribute the Program is
+void, and will automatically terminate your rights under this License.
+However, parties who have received copies, or rights, from you under
+this License will not have their licenses terminated so long as such
+parties remain in full compliance.
+
+ 5. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Program or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Program (or any work based on the
+Program), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Program or works based on it.
+
+ 6. Each time you redistribute the Program (or any work based on the
+Program), the recipient automatically receives a license from the
+original licensor to copy, distribute or modify the Program subject to
+these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+
+ 7. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Program at all. For example, if a patent
+license would not permit royalty-free redistribution of the Program by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Program.
+
+If any portion of this section is held invalid or unenforceable under
+any particular circumstance, the balance of the section is intended to
+apply and the section as a whole is intended to apply in other
+circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system, which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 8. If the distribution and/or use of the Program is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Program under this License
+may add an explicit geographical distribution limitation excluding
+those countries, so that distribution is permitted only in or among
+countries not thus excluded. In such case, this License incorporates
+the limitation as if written in the body of this License.
+
+ 9. The Free Software Foundation may publish revised and/or new versions
+of the General Public License from time to time. Such new versions will
+be similar in spirit to the present version, but may differ in detail to
+address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Program
+specifies a version number of this License which applies to it and "any
+later version", you have the option of following the terms and conditions
+either of that version or of any later version published by the Free
+Software Foundation. If the Program does not specify a version number of
+this License, you may choose any version ever published by the Free Software
+Foundation.
+
+ 10. If you wish to incorporate parts of the Program into other free
+programs whose distribution conditions are different, write to the author
+to ask for permission. For software which is copyrighted by the Free
+Software Foundation, write to the Free Software Foundation; we sometimes
+make exceptions for this. Our decision will be guided by the two goals
+of preserving the free status of all derivatives of our free software and
+of promoting the sharing and reuse of software generally.
+
+ NO WARRANTY
+
+ 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
+FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
+OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
+PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
+OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
+TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
+PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
+REPAIR OR CORRECTION.
+
+ 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
+REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
+INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
+OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
+TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
+YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
+PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
+POSSIBILITY OF SUCH DAMAGES.
diff --git a/extensions/ParserFunctions/Convert.php b/extensions/ParserFunctions/Convert.php
new file mode 100644
index 00000000..2ae54d19
--- /dev/null
+++ b/extensions/ParserFunctions/Convert.php
@@ -0,0 +1,889 @@
+<?php
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ die( 'This file is a MediaWiki extension, it is not a valid entry point' );
+}
+
+class ConvertError extends MWException {
+ public function __construct( $msg /*...*/ ) {
+ $args = func_get_args();
+ array_shift( $args );
+ array_map( 'htmlspecialchars', $args );
+ $this->message = '<strong class="error">' . wfMsgForContent( "pfunc-convert-$msg", $args ) . '</strong>';
+ }
+}
+
+class ConvertParser {
+
+ # A regex which matches the body of the string and the source unit separately
+ const UNITS_REGEX = '/^(.+?)([a-z]+\^?\d?(?:\/\w+\^?\d?)*)$/i';
+
+ # A regex which matches a number
+ const NUM_REGEX = '/\b((?:\+|\-|&minus;|\x{2212})?(\d+(?:\.\d+)?)(?:E(?:\+|\-|&minus;|\x{2212})?\d+)?)\b/iu';
+
+ # A regex *FRAGMENT* which matches SI prefixes
+ const PREFIX_REGEX = '[YZEPTGMkh(da)dcm\x{03BC}\x{00B5}npfazy]?';
+
+ /**
+ * @var ConvertUnit
+ */
+ protected $sourceUnit;
+
+ /**
+ * @var ConvertUnit
+ */
+ protected $targetUnit;
+
+ # Whether to abbreviate the output unit
+ protected $abbreviate;
+
+ # Whether to link the output unit, if possible
+ protected $link;
+
+ # If set, don't output the unit or format the number
+ protected $raw;
+
+ # What precision to round to.
+ protected $decimalPlaces;
+ protected $significantFigures;
+
+ # What language to display the units in
+ # @var Language
+ protected $language;
+
+ # The last value converted, which will be used for PLURAL evaluation
+ protected $lastValue;
+
+ /**
+ * Reset the parser so it isn't contaminated by the results of previous parses
+ */
+ public function clearState(){
+ # Make sure we break any references set up in the parameter passing below
+ unset( $this->sourceUnit );
+ unset( $this->targetUnit );
+ $this->sourceUnit = null;
+ $this->targetUnit = null;
+
+ $this->lastValue
+ = $this->link
+ = $this->precision
+ = $this->abbreviate
+ = $this->raw
+ = $this->significantFigures
+ = $this->decimalPlaces
+ = null;
+
+ $this->language = true; # prompts wfGetLangObj() to use $wgContLang
+ }
+
+ /**
+ * Evaluate a convert expression
+ * @param $args Array of the parameters passed to the original tag function
+ * @return String
+ * @throws ConvertError
+ */
+ public function execute( $args ) {
+ $this->clearState();
+ array_shift( $args ); # Dump Parser object
+
+ if( count( $args ) == 0 ){
+ # that was easy
+ return '';
+ }
+ $string = trim( array_shift( $args ) );
+
+ # Process the rest of the args
+ static $magicWords = array(
+ 'sourceunit' => null,
+ 'targetunit' => null,
+ 'linkunit' => null,
+ 'decimalplaces' => null,
+ 'significantfigures' => null,
+ 'abbreviate' => null,
+ 'rawsuffix' => null,
+ 'language' => null,
+ );
+ if( !is_object( $magicWords ) ){
+ foreach( $magicWords as $key => &$val ){
+ $magicWords[$key] =& MagicWord::get( $key );
+ }
+ # The $magicWords[key]->function() syntax doesn't work, so cast to
+ # object so we can use $magicWords->key->function() instead
+ $magicWords = (object)$magicWords;
+ }
+
+ $n = 0; # Count of unnamed parameters
+ foreach ( $args as $arg ) {
+ $parts = array_map( 'trim', explode( '=', $arg, 2 ) );
+ if ( count( $parts ) == 2 ) {
+ # Found "="
+ if ( $magicWords->sourceunit->matchStartAndRemove( $parts[0] ) ) {
+ if( $magicWords->targetunit->matchStartAndRemove( $parts[1] ) ){
+ $this->targetUnit =& $this->sourceUnit;
+ } else {
+ $this->sourceUnit = new ConvertUnit( $parts[1] );
+ }
+
+ } elseif ( $magicWords->targetunit->matchStartAndRemove( $parts[0] ) ) {
+ if( $magicWords->sourceunit->matchStartAndRemove( $parts[1] ) ){
+ $this->targetUnit =& $this->sourceUnit;
+ } else {
+ $this->targetUnit = new ConvertUnit( $parts[1] );
+ }
+
+ } elseif( $magicWords->decimalplaces->matchStartAndRemove( $parts[0] ) ) {
+ $this->decimalPlaces = intval( $parts[1] );
+
+ } elseif( $magicWords->significantfigures->matchStartAndRemove( $parts[0] ) ) {
+ # It doesn't make any sense to have negative sig-figs
+ if( intval( $parts[1] ) > 0 ){
+ $this->significantFigures = intval( $parts[1] );
+ }
+
+ } elseif( $magicWords->language->matchStartAndRemove( $parts[0] ) ) {
+ # if this is an invalid code we'll get $wgContLang back
+ $this->language = Language::factory( $parts[1] );
+ }
+
+ } elseif( $magicWords->linkunit->matchStartAndRemove( $parts[0] ) ) {
+ $this->link = true;
+
+ } elseif( $magicWords->abbreviate->matchStartAndRemove( $parts[0] ) ) {
+ $this->abbreviate = true;
+
+ } elseif( $magicWords->rawsuffix->matchStartAndRemove( $parts[0] ) ) {
+ $this->raw = true;
+
+ } elseif( $parts[0] != '' && !$n++ && !$this->targetUnit instanceof ConvertUnit ){
+ # First unnamed parameter = output unit
+ $this->targetUnit = new ConvertUnit( $parts[0] );
+ }
+ }
+
+ # Get the source unit, if not already set. This throws ConvertError on failure
+ if ( !$this->sourceUnit instanceof ConvertUnit ){
+ $this->deduceSourceUnit( $string );
+ } else {
+ # The string has no unit on the end, so it's been trimmed to the end of the
+ # last digit, meaning the unit specified by #sourceunit won't have any space
+ $string .= ' ';
+ }
+
+ # Use the default unit (SI usually)
+ if( !$this->targetUnit instanceof ConvertUnit ){
+ $this->targetUnit = $this->sourceUnit->getDefaultUnit();
+ }
+
+ if( $this->targetUnit->dimension->value != $this->sourceUnit->dimension->value ){
+ throw new ConvertError(
+ 'dimensionmismatch',
+ $this->sourceUnit->dimension->getLocalisedName(true),
+ $this->targetUnit->dimension->getLocalisedName(true)
+ );
+ }
+
+ return $this->processString( $string );
+ }
+
+ /**
+ * Find the unit at the end of the string and load $this->sourceUnit with an appropriate
+ * ConvertUnit, or throw an exception if the unit is unrecognised.
+ * @param $string
+ */
+ protected function deduceSourceUnit( $string ){
+ # Get the unit from the end of the string
+ $matches = array();
+ preg_match( self::UNITS_REGEX, $string, $matches );
+
+ if( count( $matches ) == 3 ){
+ $this->sourceUnit = new ConvertUnit( $matches[2] );
+ } else {
+ throw new ConvertError( 'nounit' );
+ }
+ }
+
+ /**
+ * Identify the values to be converted, and convert them
+ * @param $string String
+ * @return String
+ */
+ protected function processString( $string ){
+ # Replace values
+ $string = preg_replace_callback(
+ self::NUM_REGEX,
+ array( $this, 'convert' ),
+ ltrim( preg_replace( self::UNITS_REGEX, '$1', $string ) )
+ );
+ if( $this->raw ){
+ return trim( $string );
+ } else {
+ $unit = $this->targetUnit->getText(
+ $this->lastValue,
+ $this->link,
+ $this->abbreviate,
+ $this->language
+ );
+ return $string . $unit;
+ }
+ }
+
+ /**
+ * Express a value in the $sourceUnit in terms of the $targetUnit, preserving
+ * an appropriate degree of accuracy.
+ * @param $value String
+ * @return String
+ */
+ public function convert( $value ){
+ global $wgContLang;
+ $valueFloat = floatval( $value[1] );
+ $newValue = $valueFloat
+ * $this->sourceUnit->getConversion()
+ / $this->targetUnit->getConversion();
+ if( $this->decimalPlaces !== null && $this->significantFigures !== null ){
+ # round to the required number of decimal places, or the required number
+ # of significant figures, whichever is the least precise
+ $dp = floor( $this->significantFigures - log10( abs( $newValue ) ) ); # Convert SF to DP
+ $newValue = round( $newValue, max( $dp, $this->decimalPlaces ) );
+
+ } elseif( $this->decimalPlaces !== null ){
+ $newValue = round( $newValue, $this->decimalPlaces );
+
+ } elseif( $this->significantFigures !== null ){
+ $dp = floor( $this->significantFigures - log10( abs( $newValue ) ) ); # Convert SF to DP
+ $newValue = round( $newValue, $dp );
+
+ } else {
+ # Need to round to a similar accuracy as the original value. To do that we
+ # select the accuracy which will as closely as possible preserve the maximum
+ # percentage error in the value. So 36ft = 36 ± 0.5 ft, so the uncertainty
+ # is ±0.5/36 = ±1.4%. In metres this is 10.9728 ± 1.4%, or 10.9728 ± 0.154
+ # we take the stance of choosing the limit which is *more* precise than the
+ # original value.
+
+ # Strip sign and exponent
+ $num = preg_replace( self::NUM_REGEX, '$2', $value[1] );
+
+ if( strpos( $num, '.' ) !== false ){
+ # If there is a decimal point, this is the number of digits after it.
+ $dpAfter = strlen( $num ) - strpos( $num, '.' ) - 1;
+ $error = pow( 10, -$dpAfter - 1 ) * 5;
+
+ } elseif( $num == 0 ) {
+ # The logarithms below will be unhappy, and it doesn't actually matter
+ # what error we come up with, zero is still zero
+ $error = 1;
+
+ } else {
+ # Number of digits before the point
+ $dpBefore = floor( log10( abs( $num ) ) );
+
+ # Number of digits if we reverse the string = number
+ # of digits excluding trailing zeros
+ $dpAfter = floor( log10( abs( strrev( $num ) ) ) );
+
+ # How many significant figures to consider numbers like "35000" to have
+ # is a tricky question. We say 2 here because if people want to ensure
+ # that the zeros are included, they could write it as 3.500E4
+ $error = pow( 10, $dpBefore - $dpAfter - 1 ) * 5;
+ }
+
+ $errorFraction = $error / $num;
+
+ $i = 10;
+ while( $i > -10 && ( round( $newValue, $i - 1 ) != 0 ) &&
+ # Rounding to 10dp avoids floating point errors in exact conversions,
+ # which are on the order of 1E-16
+ ( round( 5 * pow( 10, -$i ) / round( $newValue, $i - 1 ), 10 ) <= round( $errorFraction, 10 ) ) )
+ {
+ $i--;
+ }
+
+ $newValue = round( $newValue, $i );
+ # We may need to stick significant zeros back onto the number
+ if( $i > 0 ){
+ if( strpos( $newValue, '.' ) !== false ){
+ $newValue = str_pad( $newValue, $i + strpos( $newValue, '.' ) + 1, '0' );
+ } else {
+ $newValue .= '.' . str_repeat( '0', $i );
+ }
+ }
+ }
+
+ # Store the last value for use in PLURAL later
+ $this->lastValue = $newValue;
+
+ return $this->raw
+ ? $newValue
+ : $wgContLang->formatNum( $newValue );
+ }
+
+}
+
+/**
+ * A dimension
+ */
+class ConvertDimension {
+
+ const MASS = 1; # KILOGRAM
+ const LENGTH = 10; # METRE
+ const TIME = 100; # SECOND
+ const TEMPERATURE = 1E3; # KELVIN
+ const QUANTITY = 1E4; # MOLE
+ const CURRENT = 1E5; # AMPERE
+ const INTENSITY = 1E6; # CANDELA
+
+ # fuel efficiencies are ugly and horrible and dimensionally confused, and have the
+ # same dimensions as LENGTH or 1/LENGTH. But someone wanted to include them... so
+ # we have up to ten dimensions which can be identified by values of this.
+ # 0 = sane unit
+ # 1 = some sort of fuel efficiency
+ const UGLY_HACK_VALUE = 1E7;
+
+ /**
+ * Dimension constants. These are the values you'd get if you added the SI
+ * base units together with the weighting given above, also the output from
+ * getDimensionHash(). Cool thing is, you can add these together to get new
+ * compound dimensions.
+ */
+ const DIM_DIMENSIONLESS = 0; # Numbers etc
+ const DIM_LENGTH = 10;
+ const DIM_AREA = 20;
+ const DIM_VOLUME = 30;
+ const DIM_TIME = 100;
+ const DIM_TIME_SQ = 200;
+ const DIM_MASS = 1;
+ const DIM_TEMPERATURE = 1000;
+ const DIM_SPEED = -90; # LENGTH / TIME
+ const DIM_ACCELERATION = -190; # LENGTH / TIME_SQ
+ const DIM_FORCE = -189; # MASS * LENGTH / TIME_SQ
+ const DIM_TORQUE = -179; # also MASS * AREA / TIME_SQ, but all units are single
+ const DIM_ENERGY = -179; # MASS * AREA / TIME_SQ, all units are compound
+ const DIM_PRESSURE = -209; # MASS / ( LENGTH * TIME_SQ )
+ const DIM_POWER = -79; # MASS * AREA / TIME
+ const DIM_DENSITY = -29; # MASS / VOLUME
+ const DIM_FUELEFFICIENCY_PVE = 10000020; # fuel efficiency in VOLUME / LENGTH
+ const DIM_FUELEFFICIENCY_NVE = 99999990; # fuel efficiency in LENGTH / VOLUME
+
+ # Map of dimension names to message keys. This also serves as a list of what
+ # dimensions will not throw an error when encountered.
+ public static $legalDimensions = array(
+ self::DIM_LENGTH => 'length',
+ self::DIM_AREA => 'area',
+ self::DIM_VOLUME => 'volume',
+ self::DIM_TIME => 'time',
+ self::DIM_TIME_SQ => 'timesquared',
+ self::DIM_MASS => 'mass',
+ self::DIM_TEMPERATURE => 'temperature',
+ self::DIM_SPEED => 'speed',
+ self::DIM_ACCELERATION => 'acceleration',
+ self::DIM_FORCE => 'force',
+ self::DIM_TORQUE => 'torque',
+ self::DIM_ENERGY => 'energy',
+ self::DIM_PRESSURE => 'pressure',
+ self::DIM_POWER => 'power',
+ self::DIM_DENSITY => 'density',
+ self::DIM_FUELEFFICIENCY_PVE => 'fuelefficiencypositive',
+ self::DIM_FUELEFFICIENCY_NVE => 'fuelefficiencynegative',
+ );
+
+ public $value;
+ protected $name;
+
+ /**
+ * Constructor
+ * @param $var ConvertDimension|Int a dimension constant or existing unit
+ * @param $var2 ConvertDimension|Int optionally another dimension constant for a compound unit $var/$var2
+ */
+ public function __construct( $var, $var2=null ){
+ static $legalDimensionsFlip;
+
+ if( is_string( $var ) ){
+ if( $legalDimensionsFlip === null ){
+ $legalDimensionsFlip = array_flip( self::$legalDimensions );
+ }
+ if( isset( $legalDimensionsFlip[$var] ) ){
+ $dim = $legalDimensionsFlip[$var];
+ } else {
+ # Should be unreachable
+ throw new ConvertError( 'unknowndimension' );
+ }
+ } elseif( $var instanceof self ){
+ $dim = $var->value;
+ } else {
+ $dim = intval( $var );
+ }
+
+ if( $var2 === null ){
+ $this->value = $dim;
+ $this->name = $this->compoundName = self::$legalDimensions[$this->value];
+
+ } else {
+ if( is_string( $var2 ) ){
+ if( $legalDimensionsFlip === null ){
+ $legalDimensionsFlip = array_flip( self::$legalDimensions );
+ }
+ if( isset( $legalDimensionsFlip[$var2] ) ){
+ $dim2 = $legalDimensionsFlip[$var2];
+ } else {
+ # Should be unreachable
+ throw new ConvertError( 'unknowndimension' );
+ }
+ } elseif( $var2 instanceof self ){
+ $dim2 = $var2->value;
+ } else {
+ $dim2 = intval( $var2 );
+ }
+
+ $this->value = $dim - $dim2;
+ if( in_array( $this->value, array_keys( self::$legalDimensions ) ) ){
+ $this->name = self::$legalDimensions[$this->value];
+ $this->compoundName = array(
+ self::$legalDimensions[$dim],
+ self::$legalDimensions[$dim2],
+ );
+ } else {
+ # Some combinations of units are fine (carats per bushel is a perfectly good,
+ # if somewhat bizarre, measure of density, for instance). But others (like
+ # carats per miles-per-gallon) are definitely not.
+ # TODO: this allows compound units like <gigawatthours>/<pascal> as a unit
+ # of volume; is that a good thing or a bad thing?
+ throw new ConvertError( 'invalidcompoundunit', "$var/$var2" );
+ }
+ }
+ }
+
+ /**
+ * Convert to string. Magic in PHP 5.1 and above.
+ * @return String
+ */
+ public function __toString(){
+ return strval( $this->name );
+ }
+
+ /**
+ * Get the name, or names, of the dimension
+ * @param $expandCompound Bool Whether to return a string instead of an array of strings in
+ * case of a compound unit
+ * @return String|Array of String
+ */
+ public function getName( $expandCompound = false ){
+ return $expandCompound
+ ? $this->name
+ : $this->compoundName;
+ }
+
+ /**
+ * Get the localised name of the dimension. Output is unescaped
+ * @return String
+ */
+ public function getLocalisedName(){
+ return wfMsg( "pfunc-convert-dimension-{$this->name}" );
+ }
+
+}
+
+class ConvertUnit {
+
+ /**
+ * array(
+ * DIMENSION => array(
+ * UNIT => array(
+ * CONVERSION,
+ * REGEX,
+ * TAKES_SI_PREFIXES,
+ * )
+ * )
+ * )
+ */
+ protected static $units = array(
+ ConvertDimension::DIM_LENGTH => array(
+ 'metre' => array( 1, 'm', true ),
+ 'angstrom' => array( 0.00000001, '\x{00C5}', false ),
+
+ 'mile' => array( 1609.344, 'mi|miles?', false ),
+ 'furlong' => array( 201.168, 'furlong', false ),
+ 'chain' => array( 20.1168 , 'chain', false ),
+ 'rod' => array( 5.0292, 'rod|pole|perch', false ),
+ 'fathom' => array( 1.8288, 'fathom', false ),
+ 'yard' => array( 0.9144, 'yards?|yd', false ),
+ 'foot' => array( 0.3048, 'foot|feet|ft', false ),
+ 'hand' => array( 0.1016, 'hands?', false ),
+ 'inch' => array( 0.0254, 'inch|inches|in', false ),
+
+ 'nauticalmile' => array( 1852, 'nauticalmiles?|nmi', false ),
+ 'nauticalmileuk' => array( 1853.184, 'old[Uu][Kk]nmi|[Bb]rnmi|admi', false ),
+ 'nauticalmileus' => array( 1853.24496, 'old[Uu][Ss]nmi', false ),
+
+ 'parsec' => array( 3.0856775813057E16, 'parsecs?|pc', true ),
+ 'lightyear' => array( 9.4607304725808E15, 'lightyears?|ly', true ),
+ 'astronomicalunit' => array( 149597870700, 'astronomicalunits?|AU|au', false ),
+ ),
+
+ ConvertDimension::DIM_AREA => array(
+ 'squarekilometre' => array( 1E6, 'km2|km\^2', false ),
+ 'squaremetre' => array( 1, 'm2|m\^2', false ),
+ 'squarecentimetre' => array( 1E-4, 'cm2|cm\^2', false ),
+ 'squaremillimetre' => array( 1E-6, 'mm2|mm\^2', false ),
+ 'hectare' => array( 1E4, 'hectares?|ha', false ),
+
+ 'squaremile' => array( 2589988.110336, 'sqmi|mi2|mi\^2', false ),
+ 'acre' => array( 4046.856422, 'acres?', false ),
+ 'squareyard' => array( 0.83612736, 'sqyd|yd2|yd\^2', false ),
+ 'squarefoot' => array( 0.09290304, 'sqft|ft2|ft\^2', false ),
+ 'squareinch' => array( 0.00064516, 'sqin|in2|in\^2', false ),
+
+ 'squarenauticalmile' => array( 3429904, 'sqnmi|nmi2|nmi\^2', false ),
+ 'dunam' => array( 1000, 'dunam', false ),
+ 'tsubo' => array( 3.305785, 'tsubo', false ),
+ ),
+
+ ConvertDimension::DIM_VOLUME => array(
+ 'cubicmetre' => array( 1, 'm3|m\^3', false ),
+ 'cubiccentimetre' => array( 1E-6, 'cm3|cm\^3', false ),
+ 'cubicmillimetre' => array( 1E-9, 'mm3|mm\^3', false ),
+ 'litre' => array( 1E-3 , 'l', true ),
+
+ 'cubicyard' => array( 0.764554857984, 'cuyd|yd3|yd\^3', false ),
+ 'cubicfoot' => array( 0.028316846592, 'cuft|ft3|ft\^3', false ),
+ 'cubicinch' => array( 0.000016387064, 'cuin|in3|in\^3', false ),
+ 'barrel' => array( 0.16365924, 'bbl|barrels?|impbbl', false ),
+ 'bushel' => array( 0.03636872, 'bsh|bushels?|impbsh', false ),
+ 'gallon' => array( 0.00454609, 'gal|gallons?|impgal', false ),
+ 'quart' => array( 0.0011365225, 'qt|quarts?|impqt', false ),
+ 'pint' => array( 0.00056826125, 'pt|pints?|imppt', false ),
+ 'fluidounce' => array( 0.0000284130625, 'floz|impfloz', false ),
+
+ 'barrelus' => array( 0.119240471196, 'usbbl', false ),
+ 'barreloil' => array( 0.158987294928, 'oilbbl', false ),
+ 'barrelbeer' => array( 0.117347765304, 'beerbbl', false ),
+ 'usgallon' => array( 0.003785411784, 'usgal', false ),
+ 'usquart' => array( 0.000946352946, 'usqt', false ),
+ 'uspint' => array( 0.000473176473, 'uspt', false ),
+ 'usfluidounce' => array( 0.0000295735295625, 'usfloz', false ),
+ 'usdrybarrel' => array( 0.11562819898508, 'usdrybbl', false ),
+ 'usbushel' => array( 0.03523907016688, 'usbsh', false ),
+ 'usdrygallon' => array( 0.00440488377086, 'usdrygal', false ),
+ 'usdryquart' => array( 0.001101220942715, 'usdryqt', false ),
+ 'usdrypint' => array( 0.0005506104713575, 'usdrypt', false ),
+ ),
+
+ ConvertDimension::DIM_TIME => array(
+ 'year' => array( 31557600, 'yr', true ),
+ 'day' => array( 86400, 'd|days?', false ),
+ 'hour' => array( 3600, 'hours?|hr|h', false ),
+ 'minute' => array( 60, 'minutes?|mins?', false ),
+ 'second' => array( 1, 's', false ),
+ ),
+
+ ConvertDimension::DIM_SPEED => array(
+ 'knot' => array( 0.514444444, 'knot|kn', false ),
+ 'speedoflight' => array( 2.9979E8, 'c', false ),
+ ),
+
+ ConvertDimension::DIM_PRESSURE => array(
+ 'pascal' => array( 1, 'Pa', true ),
+
+ 'bar' => array( 100000, 'bar', false ),
+ 'decibar' => array( 10000, 'dbar', false ),
+ 'millibar' => array( 100 , 'mbar|mb', false ),
+ 'kilobarye' => array( 100, 'kba', false ),
+ 'barye' => array( 0.1, 'ba', false ),
+
+ 'atmosphere' => array( 101325, 'atm|atmospheres?', false ),
+ 'torr' => array( 133.32237, 'torr', false ),
+ 'mmhg' => array( 133.322387415, 'mmHg', false ),
+ 'inhg' => array( 3386.38864034, 'inHg', false ),
+ 'psi' => array( 6894.757293, 'psi', false ),
+ ),
+ # TODO: other dimensions as needed
+ );
+
+ /**
+ * array(
+ * PREFIX => array(
+ * CONVERSION,
+ * REGEX,
+ * )
+ * )
+ * They're out of order because this is the order in which they are tested, and
+ * some prefixes are much more likely to occur than others
+ */
+ protected static $prefixes = array(
+ 'kilo' => array( 1E3, 'k' ),
+ 'milli' => array( 1E-3, 'm' ),
+ 'centi' => array( 1E-2, 'c' ),
+ 'giga' => array( 1E9, 'G' ),
+ 'micro' => array( 1E-6, '(?:\x{03BC}|\x{00B5})' ), # There are two similar mu characters
+ 'mega' => array( 1E6, 'M' ),
+ 'nano' => array( 1E-9, 'n' ),
+ 'hecto' => array( 1E2, 'h' ),
+ 'deca' => array( 1E1, 'da' ),
+ 'deci' => array( 1E-1, 'd' ),
+ 'yotta' => array( 1E24, 'Y' ),
+ 'zetta' => array( 1E21, 'Z' ),
+ 'exa' => array( 1E18, 'E' ),
+ 'peta' => array( 1E15, 'P' ),
+ 'tera' => array( 1E12, 'T' ),
+ 'pico' => array( 1E-12, 'p' ),
+ 'femto' => array( 1E-15, 'f' ),
+ 'atto' => array( 1E-18, 'a' ),
+ 'zepto' => array( 1E-21, 'z' ),
+ 'yocto' => array( 1E-24, 'y' ),
+ );
+
+ # Default units for each dimension
+ # TODO: this should ideally be localisable
+ protected static $defaultUnit = array(
+ ConvertDimension::DIM_LENGTH => 'metre',
+ ConvertDimension::DIM_AREA => 'squaremetre',
+ ConvertDimension::DIM_VOLUME => 'cubicmetre',
+ ConvertDimension::DIM_TIME => 'second',
+ ConvertDimension::DIM_SPEED => 'metre/second',
+ ConvertDimension::DIM_PRESSURE => 'pascal',
+ );
+
+ # An array of preprocessing conversions to apply to units
+ protected static $unitConversions = array(
+ '/^mph$/u' => 'mi/h',
+ );
+
+ # Map of UNIT => DIMENSION, created on construct
+ protected static $dimensionMap = false;
+
+ /***************** MEMBER VARIABLES *****************/
+
+ /**
+ * @var ConvertDimension
+ */
+ public $dimension;
+
+ # What number you need to multiply this unit by to get the equivalent
+ # value in SI base units
+ protected $conversion = 1;
+
+ # A regex which matches the unit
+ protected $regex;
+
+ # The name of the unit (key into $units[$dimension] above
+ protected $unitName;
+
+ # The SI prefix, if applicable
+ protected $prefix = null;
+
+ /***************** MEMBER FUNCTIONS *****************/
+
+ /**
+ * Constructor
+ * @param $rawUnit String
+ */
+ public function __construct( $rawUnit ){
+ if( self::$dimensionMap === false ){
+ self::$dimensionMap = array();
+ foreach( self::$units as $dimension => $arr ){
+ foreach( $arr as $unit => $val ){
+ self::$dimensionMap[$unit] = $dimension;
+ }
+ }
+ }
+
+ $this->parseUnit( $rawUnit );
+ }
+
+ /**
+ * Parse a raw unit string, and populate member variables
+ * @param $rawUnit String
+ */
+ protected function parseUnit( $rawUnit ){
+
+ # Do mappings like 'mph' --> 'mi/h'
+ $rawUnit = preg_replace(
+ array_keys( self::$unitConversions ),
+ array_values( self::$unitConversions ),
+ $rawUnit
+ );
+
+ $parts = explode( '/', $rawUnit );
+ array_map( 'trim', $parts );
+ if( count( $parts ) == 1 ){
+ # Single unit
+ foreach( self::$units as $dimension => $units ){
+ foreach( $units as $unit => $data ){
+ if( $rawUnit == $unit
+ || ( !$data[2] && preg_match( "/^({$data[1]})$/u", $parts[0] ) )
+ || ( $data[2] && preg_match( "/^(" . ConvertParser::PREFIX_REGEX . ")(" . $data[1] . ")$/u", $parts[0] ) ) )
+ {
+ $this->dimension = new ConvertDimension( self::$dimensionMap[$unit] );
+ $this->conversion = $data[0];
+ $this->regex = $data[1];
+ $this->unitName = $unit;
+
+ # Grab the SI prefix, if it's allowed and there is one
+ if( $data[2] && !preg_match( "/^({$data[1]})$/u", $parts[0] ) ){
+ foreach( self::$prefixes as $prefix => $pdata ){
+ if( preg_match( "/^({$pdata[1]})({$data[1]})$/u", $parts[0] ) ){
+ $this->prefix = $prefix;
+ break;
+ }
+ }
+ }
+
+ return;
+ }
+ }
+ }
+
+ # Unknown unit
+ throw new ConvertError( 'unknownunit', $rawUnit );
+
+ } elseif( count( $parts ) == 2 ){
+ # Compound unit.
+ $top = new self( $parts[0] );
+ $bottom = new self( $parts[1] );
+ $this->dimension = new ConvertDimension( $top->dimension, $bottom->dimension );
+ $this->conversion = $top->conversion / $bottom->conversion;
+ $this->regex = "(?:{$top->regex})/(?:{$bottom->regex})";
+ $this->unitName = array( $top->unitName, $bottom->unitName );
+ $this->prefix = array( $top->prefix, $bottom->prefix );
+ return;
+
+ } else {
+ # Whaaat? Too many parts
+ throw new ConvertError( 'doublecompoundunit', $rawUnit );
+ }
+ }
+
+ /**
+ * Get the mathematical factor which will convert a measurement in this unit into a
+ * measurement in the SI base unit for the dimension
+ * @return double
+ */
+ public function getConversion(){
+ return $this->conversion * $this->getPrefixConversion();
+ }
+
+ /**
+ * Get the conversion factor associated with the prefix(es) in the unit
+ * @return double
+ */
+ public function getPrefixConversion(){
+ if( !$this->prefix ){
+ return 1;
+ } elseif( is_array( $this->prefix ) ){
+ $x = $this->prefix[0] !== null
+ ? self::$prefixes[$this->prefix[0]][0]
+ : 1;
+ if( $this->prefix[1] !== null ){
+ $x *= self::$prefixes[$this->prefix[1]][0];
+ }
+ return $x;
+ } else {
+ return self::$prefixes[$this->prefix][0];
+ }
+ }
+
+ /**
+ * Get a regular expression which will match keywords for this unit
+ * @return String
+ */
+ public function getRegex(){
+ return $this->regex;
+ }
+
+ /**
+ * Get the text of the unit
+ * @param $value String number for PLURAL support
+ * @param $link Bool
+ * @param $abbreviate Bool
+ * @param $language Language
+ * @return String
+ */
+ public function getText( $value, $link=false, $abbreviate=false, $language=null ){
+ global $wgContLang;
+ $value = $wgContLang->formatNum( $value );
+
+ if( !is_array( $this->unitName ) ){
+ $msgText = $this->getTextFromMessage(
+ $this->dimension->getName(),
+ $this->unitName,
+ $this->prefix,
+ $value, $link, $abbreviate, $language
+ );
+
+ } elseif( !wfEmptyMsg( "pfunc-convert-unit-{$this->dimension->getName(true)}-{$this->unitName[0]}-{$this->unitName[1]}" ) ){
+ # A wiki has created, say, [[MediaWiki:pfunc-convert-unit-speed-metres-second]]
+ # so they can have it display "<metres per second>" rather than
+ # "<metres>/<second>"
+ $msgText = $this->getTextFromMessage(
+ $this->dimension->getName(true),
+ "{$this->unitName[0]}-{$this->unitName[1]}",
+ $this->prefix, # This will probably be rubbish, but it's the wiki users' problem, not ours
+ $value, $link, $abbreviate, $language
+ );
+
+ } else {
+ $dimensionNames = $this->dimension->getName();
+ $msgText = $this->getTextFromMessage(
+ $dimensionNames[0],
+ $this->unitName[0],
+ $this->prefix[0],
+ $value, $link, $abbreviate, $language
+ );
+ $msg2Text = $this->getTextFromMessage(
+ $dimensionNames[1],
+ $this->unitName[1],
+ $this->prefix[1],
+ 1, # Singular for denominator
+ $link, $abbreviate, $language
+ );
+ $msgText = "$msgText/$msg2Text";
+ }
+
+ return trim( $msgText );
+ }
+
+ /**
+ * Retrieve the unit text from actual messages
+ * @param $dimension String
+ * @param $unit String
+ * @param $prefix String
+ * @param $string String
+ * @param $number String the actual value (for {{PLURAL}} etc)
+ * @param $link Bool
+ * @param $abbreviate Bool
+ * @param $language Language|Bool|null
+ * @return String
+ */
+ protected function getTextFromMessage( $dimension, $unit, $prefix, $string, $number, $link, $abbreviate, $language ){
+ $abbr = $abbreviate ? '-abbr' : '';
+ $prefix = $prefix === null
+ ? ''
+ : wfMsgExt( "pfunc-convert-prefix-$prefix$abbr", array( 'parsemag', 'language' => $language ) );
+
+ $text = wfMsgExt(
+ "pfunc-convert-unit-$dimension-$unit$abbr",
+ array( 'parsemag', 'language' => $language ),
+ $number,
+ $prefix
+ );
+
+ if( $link && !wfEmptyMsg( "pfunc-convert-unit-$dimension-$unit-link" ) ){
+ $title = Title::newFromText(
+ wfMsgForContentNoTrans( "pfunc-convert-unit-$dimension-$unit-link" ),
+ $prefix
+ );
+ if( $title instanceof Title ){
+ $text = "[[{$title->getFullText()}|$text]]";
+ }
+ }
+
+ return $text;
+ }
+
+ /**
+ * Get the default (usually SI) unit associated with this particular dimension
+ * @return ConvertUnit
+ */
+ public function getDefaultUnit(){
+ return new ConvertUnit( self::$defaultUnit[$this->dimension->value] );
+ }
+}
diff --git a/extensions/ParserFunctions/Expr.php b/extensions/ParserFunctions/Expr.php
new file mode 100644
index 00000000..299d382d
--- /dev/null
+++ b/extensions/ParserFunctions/Expr.php
@@ -0,0 +1,555 @@
+<?php
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ die( 'This file is a MediaWiki extension, it is not a valid entry point' );
+}
+
+// Character classes
+define( 'EXPR_WHITE_CLASS', " \t\r\n" );
+define( 'EXPR_NUMBER_CLASS', '0123456789.' );
+
+// Token types
+define( 'EXPR_WHITE', 1 );
+define( 'EXPR_NUMBER', 2 );
+define( 'EXPR_NEGATIVE', 3 );
+define( 'EXPR_POSITIVE', 4 );
+define( 'EXPR_PLUS', 5 );
+define( 'EXPR_MINUS', 6 );
+define( 'EXPR_TIMES', 7 );
+define( 'EXPR_DIVIDE', 8 );
+define( 'EXPR_MOD', 9 );
+define( 'EXPR_OPEN', 10 );
+define( 'EXPR_CLOSE', 11 );
+define( 'EXPR_AND', 12 );
+define( 'EXPR_OR', 13 );
+define( 'EXPR_NOT', 14 );
+define( 'EXPR_EQUALITY', 15 );
+define( 'EXPR_LESS', 16 );
+define( 'EXPR_GREATER', 17 );
+define( 'EXPR_LESSEQ', 18 );
+define( 'EXPR_GREATEREQ', 19 );
+define( 'EXPR_NOTEQ', 20 );
+define( 'EXPR_ROUND', 21 );
+define( 'EXPR_EXPONENT', 22 );
+define( 'EXPR_SINE', 23 );
+define( 'EXPR_COSINE', 24 );
+define( 'EXPR_TANGENS', 25 );
+define( 'EXPR_ARCSINE', 26 );
+define( 'EXPR_ARCCOS', 27 );
+define( 'EXPR_ARCTAN', 28 );
+define( 'EXPR_EXP', 29 );
+define( 'EXPR_LN', 30 );
+define( 'EXPR_ABS', 31 );
+define( 'EXPR_FLOOR', 32 );
+define( 'EXPR_TRUNC', 33 );
+define( 'EXPR_CEIL', 34 );
+define( 'EXPR_POW', 35 );
+define( 'EXPR_PI', 36 );
+
+class ExprError extends MWException {
+ public function __construct( $msg, $parameter = '' ) {
+ $this->message = '<strong class="error">' . wfMsgForContent( "pfunc_expr_$msg", htmlspecialchars( $parameter ) ) . '</strong>';
+ }
+}
+
+class ExprParser {
+ var $maxStackSize = 100;
+
+ var $precedence = array(
+ EXPR_NEGATIVE => 10,
+ EXPR_POSITIVE => 10,
+ EXPR_EXPONENT => 10,
+ EXPR_SINE => 9,
+ EXPR_COSINE => 9,
+ EXPR_TANGENS => 9,
+ EXPR_ARCSINE => 9,
+ EXPR_ARCCOS => 9,
+ EXPR_ARCTAN => 9,
+ EXPR_EXP => 9,
+ EXPR_LN => 9,
+ EXPR_ABS => 9,
+ EXPR_FLOOR => 9,
+ EXPR_TRUNC => 9,
+ EXPR_CEIL => 9,
+ EXPR_NOT => 9,
+ EXPR_POW => 8,
+ EXPR_TIMES => 7,
+ EXPR_DIVIDE => 7,
+ EXPR_MOD => 7,
+ EXPR_PLUS => 6,
+ EXPR_MINUS => 6,
+ EXPR_ROUND => 5,
+ EXPR_EQUALITY => 4,
+ EXPR_LESS => 4,
+ EXPR_GREATER => 4,
+ EXPR_LESSEQ => 4,
+ EXPR_GREATEREQ => 4,
+ EXPR_NOTEQ => 4,
+ EXPR_AND => 3,
+ EXPR_OR => 2,
+ EXPR_PI => 0,
+ EXPR_OPEN => -1,
+ EXPR_CLOSE => -1,
+ );
+
+ var $names = array(
+ EXPR_NEGATIVE => '-',
+ EXPR_POSITIVE => '+',
+ EXPR_NOT => 'not',
+ EXPR_TIMES => '*',
+ EXPR_DIVIDE => '/',
+ EXPR_MOD => 'mod',
+ EXPR_PLUS => '+',
+ EXPR_MINUS => '-',
+ EXPR_ROUND => 'round',
+ EXPR_EQUALITY => '=',
+ EXPR_LESS => '<',
+ EXPR_GREATER => '>',
+ EXPR_LESSEQ => '<=',
+ EXPR_GREATEREQ => '>=',
+ EXPR_NOTEQ => '<>',
+ EXPR_AND => 'and',
+ EXPR_OR => 'or',
+ EXPR_EXPONENT => 'e',
+ EXPR_SINE => 'sin',
+ EXPR_COSINE => 'cos',
+ EXPR_TANGENS => 'tan',
+ EXPR_ARCSINE => 'asin',
+ EXPR_ARCCOS => 'acos',
+ EXPR_ARCTAN => 'atan',
+ EXPR_LN => 'ln',
+ EXPR_EXP => 'exp',
+ EXPR_ABS => 'abs',
+ EXPR_FLOOR => 'floor',
+ EXPR_TRUNC => 'trunc',
+ EXPR_CEIL => 'ceil',
+ EXPR_POW => '^',
+ EXPR_PI => 'pi',
+ );
+
+
+ var $words = array(
+ 'mod' => EXPR_MOD,
+ 'and' => EXPR_AND,
+ 'or' => EXPR_OR,
+ 'not' => EXPR_NOT,
+ 'round' => EXPR_ROUND,
+ 'div' => EXPR_DIVIDE,
+ 'e' => EXPR_EXPONENT,
+ 'sin' => EXPR_SINE,
+ 'cos' => EXPR_COSINE,
+ 'tan' => EXPR_TANGENS,
+ 'asin' => EXPR_ARCSINE,
+ 'acos' => EXPR_ARCCOS,
+ 'atan' => EXPR_ARCTAN,
+ 'exp' => EXPR_EXP,
+ 'ln' => EXPR_LN,
+ 'abs' => EXPR_ABS,
+ 'trunc' => EXPR_TRUNC,
+ 'floor' => EXPR_FLOOR,
+ 'ceil' => EXPR_CEIL,
+ 'pi' => EXPR_PI,
+ );
+
+ /**
+ * Evaluate a mathematical expression
+ *
+ * The algorithm here is based on the infix to RPN algorithm given in
+ * http://montcs.bloomu.edu/~bobmon/Information/RPN/infix2rpn.shtml
+ * It's essentially the same as Dijkstra's shunting yard algorithm.
+ */
+ function doExpression( $expr ) {
+ $operands = array();
+ $operators = array();
+
+ # Unescape inequality operators
+ $expr = strtr( $expr, array( '&lt;' => '<', '&gt;' => '>',
+ '&minus;' => '-', '−' => '-' ) );
+
+ $p = 0;
+ $end = strlen( $expr );
+ $expecting = 'expression';
+
+ while ( $p < $end ) {
+ if ( count( $operands ) > $this->maxStackSize || count( $operators ) > $this->maxStackSize ) {
+ throw new ExprError( 'stack_exhausted' );
+ }
+ $char = $expr[$p];
+ $char2 = substr( $expr, $p, 2 );
+
+ // Mega if-elseif-else construct
+ // Only binary operators fall through for processing at the bottom, the rest
+ // finish their processing and continue
+
+ // First the unlimited length classes
+
+ if ( false !== strpos( EXPR_WHITE_CLASS, $char ) ) {
+ // Whitespace
+ $p += strspn( $expr, EXPR_WHITE_CLASS, $p );
+ continue;
+ } elseif ( false !== strpos( EXPR_NUMBER_CLASS, $char ) ) {
+ // Number
+ if ( $expecting != 'expression' ) {
+ throw new ExprError( 'unexpected_number' );
+ }
+
+ // Find the rest of it
+ $length = strspn( $expr, EXPR_NUMBER_CLASS, $p );
+ // Convert it to float, silently removing double decimal points
+ $operands[] = floatval( substr( $expr, $p, $length ) );
+ $p += $length;
+ $expecting = 'operator';
+ continue;
+ } elseif ( ctype_alpha( $char ) ) {
+ // Word
+ // Find the rest of it
+ $remaining = substr( $expr, $p );
+ if ( !preg_match( '/^[A-Za-z]*/', $remaining, $matches ) ) {
+ // This should be unreachable
+ throw new ExprError( 'preg_match_failure' );
+ }
+ $word = strtolower( $matches[0] );
+ $p += strlen( $word );
+
+ // Interpret the word
+ if ( !isset( $this->words[$word] ) ) {
+ throw new ExprError( 'unrecognised_word', $word );
+ }
+ $op = $this->words[$word];
+ switch( $op ) {
+ // constant
+ case EXPR_EXPONENT:
+ if ( $expecting != 'expression' ) {
+ continue;
+ }
+ $operands[] = exp( 1 );
+ $expecting = 'operator';
+ continue 2;
+ case EXPR_PI:
+ if ( $expecting != 'expression' ) {
+ throw new ExprError( 'unexpected_number' );
+ }
+ $operands[] = pi();
+ $expecting = 'operator';
+ continue 2;
+ // Unary operator
+ case EXPR_NOT:
+ case EXPR_SINE:
+ case EXPR_COSINE:
+ case EXPR_TANGENS:
+ case EXPR_ARCSINE:
+ case EXPR_ARCCOS:
+ case EXPR_ARCTAN:
+ case EXPR_EXP:
+ case EXPR_LN:
+ case EXPR_ABS:
+ case EXPR_FLOOR:
+ case EXPR_TRUNC:
+ case EXPR_CEIL:
+ if ( $expecting != 'expression' ) {
+ throw new ExprError( 'unexpected_operator', $word );
+ }
+ $operators[] = $op;
+ continue 2;
+ }
+ // Binary operator, fall through
+ $name = $word;
+ }
+
+ // Next the two-character operators
+
+ elseif ( $char2 == '<=' ) {
+ $name = $char2;
+ $op = EXPR_LESSEQ;
+ $p += 2;
+ } elseif ( $char2 == '>=' ) {
+ $name = $char2;
+ $op = EXPR_GREATEREQ;
+ $p += 2;
+ } elseif ( $char2 == '<>' || $char2 == '!=' ) {
+ $name = $char2;
+ $op = EXPR_NOTEQ;
+ $p += 2;
+ }
+
+ // Finally the single-character operators
+
+ elseif ( $char == '+' ) {
+ ++$p;
+ if ( $expecting == 'expression' ) {
+ // Unary plus
+ $operators[] = EXPR_POSITIVE;
+ continue;
+ } else {
+ // Binary plus
+ $op = EXPR_PLUS;
+ }
+ } elseif ( $char == '-' ) {
+ ++$p;
+ if ( $expecting == 'expression' ) {
+ // Unary minus
+ $operators[] = EXPR_NEGATIVE;
+ continue;
+ } else {
+ // Binary minus
+ $op = EXPR_MINUS;
+ }
+ } elseif ( $char == '*' ) {
+ $name = $char;
+ $op = EXPR_TIMES;
+ ++$p;
+ } elseif ( $char == '/' ) {
+ $name = $char;
+ $op = EXPR_DIVIDE;
+ ++$p;
+ } elseif ( $char == '^' ) {
+ $name = $char;
+ $op = EXPR_POW;
+ ++$p;
+ } elseif ( $char == '(' ) {
+ if ( $expecting == 'operator' ) {
+ throw new ExprError( 'unexpected_operator', '(' );
+ }
+ $operators[] = EXPR_OPEN;
+ ++$p;
+ continue;
+ } elseif ( $char == ')' ) {
+ $lastOp = end( $operators );
+ while ( $lastOp && $lastOp != EXPR_OPEN ) {
+ $this->doOperation( $lastOp, $operands );
+ array_pop( $operators );
+ $lastOp = end( $operators );
+ }
+ if ( $lastOp ) {
+ array_pop( $operators );
+ } else {
+ throw new ExprError( 'unexpected_closing_bracket' );
+ }
+ $expecting = 'operator';
+ ++$p;
+ continue;
+ } elseif ( $char == '=' ) {
+ $name = $char;
+ $op = EXPR_EQUALITY;
+ ++$p;
+ } elseif ( $char == '<' ) {
+ $name = $char;
+ $op = EXPR_LESS;
+ ++$p;
+ } elseif ( $char == '>' ) {
+ $name = $char;
+ $op = EXPR_GREATER;
+ ++$p;
+ } else {
+ throw new ExprError( 'unrecognised_punctuation', UtfNormal::cleanUp( $char ) );
+ }
+
+ // Binary operator processing
+ if ( $expecting == 'expression' ) {
+ throw new ExprError( 'unexpected_operator', $name );
+ }
+
+ // Shunting yard magic
+ $lastOp = end( $operators );
+ while ( $lastOp && $this->precedence[$op] <= $this->precedence[$lastOp] ) {
+ $this->doOperation( $lastOp, $operands );
+ array_pop( $operators );
+ $lastOp = end( $operators );
+ }
+ $operators[] = $op;
+ $expecting = 'expression';
+ }
+
+ // Finish off the operator array
+ while ( $op = array_pop( $operators ) ) {
+ if ( $op == EXPR_OPEN ) {
+ throw new ExprError( 'unclosed_bracket' );
+ }
+ $this->doOperation( $op, $operands );
+ }
+
+ return implode( "<br />\n", $operands );
+ }
+
+ function doOperation( $op, &$stack ) {
+ switch ( $op ) {
+ case EXPR_NEGATIVE:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ $stack[] = -$arg;
+ break;
+ case EXPR_POSITIVE:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ break;
+ case EXPR_TIMES:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ $stack[] = $left * $right;
+ break;
+ case EXPR_DIVIDE:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ if ( $right == 0 ) throw new ExprError( 'division_by_zero', $this->names[$op] );
+ $stack[] = $left / $right;
+ break;
+ case EXPR_MOD:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ if ( $right == 0 ) throw new ExprError( 'division_by_zero', $this->names[$op] );
+ $stack[] = $left % $right;
+ break;
+ case EXPR_PLUS:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ $stack[] = $left + $right;
+ break;
+ case EXPR_MINUS:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ $stack[] = $left - $right;
+ break;
+ case EXPR_AND:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ $stack[] = ( $left && $right ) ? 1 : 0;
+ break;
+ case EXPR_OR:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ $stack[] = ( $left || $right ) ? 1 : 0;
+ break;
+ case EXPR_EQUALITY:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ $stack[] = ( $left == $right ) ? 1 : 0;
+ break;
+ case EXPR_NOT:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ $stack[] = ( !$arg ) ? 1 : 0;
+ break;
+ case EXPR_ROUND:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $digits = intval( array_pop( $stack ) );
+ $value = array_pop( $stack );
+ $stack[] = round( $value, $digits );
+ break;
+ case EXPR_LESS:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ $stack[] = ( $left < $right ) ? 1 : 0;
+ break;
+ case EXPR_GREATER:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ $stack[] = ( $left > $right ) ? 1 : 0;
+ break;
+ case EXPR_LESSEQ:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ $stack[] = ( $left <= $right ) ? 1 : 0;
+ break;
+ case EXPR_GREATEREQ:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ $stack[] = ( $left >= $right ) ? 1 : 0;
+ break;
+ case EXPR_NOTEQ:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ $stack[] = ( $left != $right ) ? 1 : 0;
+ break;
+ case EXPR_EXPONENT:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ $stack[] = $left * pow( 10, $right );
+ break;
+ case EXPR_SINE:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ $stack[] = sin( $arg );
+ break;
+ case EXPR_COSINE:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ $stack[] = cos( $arg );
+ break;
+ case EXPR_TANGENS:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ $stack[] = tan( $arg );
+ break;
+ case EXPR_ARCSINE:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ if ( $arg < -1 || $arg > 1 ) throw new ExprError( 'invalid_argument', $this->names[$op] );
+ $stack[] = asin( $arg );
+ break;
+ case EXPR_ARCCOS:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ if ( $arg < -1 || $arg > 1 ) throw new ExprError( 'invalid_argument', $this->names[$op] );
+ $stack[] = acos( $arg );
+ break;
+ case EXPR_ARCTAN:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ $stack[] = atan( $arg );
+ break;
+ case EXPR_EXP:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ $stack[] = exp( $arg );
+ break;
+ case EXPR_LN:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ if ( $arg <= 0 ) throw new ExprError( 'invalid_argument_ln', $this->names[$op] );
+ $stack[] = log( $arg );
+ break;
+ case EXPR_ABS:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ $stack[] = abs( $arg );
+ break;
+ case EXPR_FLOOR:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ $stack[] = floor( $arg );
+ break;
+ case EXPR_TRUNC:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ $stack[] = (int)$arg;
+ break;
+ case EXPR_CEIL:
+ if ( count( $stack ) < 1 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $arg = array_pop( $stack );
+ $stack[] = ceil( $arg );
+ break;
+ case EXPR_POW:
+ if ( count( $stack ) < 2 ) throw new ExprError( 'missing_operand', $this->names[$op] );
+ $right = array_pop( $stack );
+ $left = array_pop( $stack );
+ if ( false === ( $stack[] = pow( $left, $right ) ) ) throw new ExprError( 'division_by_zero', $this->names[$op] );
+ break;
+ default:
+ // Should be impossible to reach here.
+ throw new ExprError( 'unknown_error' );
+ }
+ }
+}
diff --git a/extensions/ParserFunctions/ParserFunctions.i18n.magic.php b/extensions/ParserFunctions/ParserFunctions.i18n.magic.php
new file mode 100644
index 00000000..78ba7747
--- /dev/null
+++ b/extensions/ParserFunctions/ParserFunctions.i18n.magic.php
@@ -0,0 +1,566 @@
+<?php
+
+$magicWords = array();
+
+/**
+ * English
+ */
+
+$magicWords = array();
+
+/** English (English) */
+$magicWords['en'] = array(
+ 'expr' => array( 0, 'expr' ),
+ 'if' => array( 0, 'if' ),
+ 'ifeq' => array( 0, 'ifeq' ),
+ 'ifexpr' => array( 0, 'ifexpr' ),
+ 'iferror' => array( 0, 'iferror' ),
+ 'switch' => array( 0, 'switch' ),
+ 'default' => array( 0, '#default' ),
+ 'ifexist' => array( 0, 'ifexist' ),
+ 'time' => array( 0, 'time' ),
+ 'timel' => array( 0, 'timel' ),
+ 'rel2abs' => array( 0, 'rel2abs' ),
+ 'titleparts' => array( 0, 'titleparts' ),
+ 'convert' => array( 0, 'convert' ),
+ 'sourceunit' => array( 0, '#sourceunit' ),
+ 'targetunit' => array( 0, '#targetunit' ),
+ 'linkunit' => array( 0, '#linkunit' ),
+ 'decimalplaces' => array( 0, '#dp' ),
+ 'significantfigures' => array( 0, '#sf' ),
+ 'abbreviate' => array( 0, '#abbreviate' ),
+ 'language' => array( 0, '#language' ),
+ 'len' => array( 0, 'len' ),
+ 'pos' => array( 0, 'pos' ),
+ 'rpos' => array( 0, 'rpos' ),
+ 'sub' => array( 0, 'sub' ),
+ 'count' => array( 0, 'count' ),
+ 'replace' => array( 0, 'replace' ),
+ 'explode' => array( 0, 'explode' ),
+ 'urldecode' => array( 0, 'urldecode' ),
+);
+
+/** Arabic (العربية) */
+$magicWords['ar'] = array(
+ 'expr' => array( 0, 'تعبير' ),
+ 'if' => array( 0, 'لو' ),
+ 'ifeq' => array( 0, 'لومعادلة' ),
+ 'ifexpr' => array( 0, 'لوتعبير' ),
+ 'iferror' => array( 0, 'لوخطأ' ),
+ 'switch' => array( 0, 'تبديل' ),
+ 'default' => array( 0, '#اÙتراضي' ),
+ 'ifexist' => array( 0, 'لوموجود' ),
+ 'time' => array( 0, 'وقت' ),
+ 'timel' => array( 0, 'تيمل' ),
+ 'rel2abs' => array( 0, 'ريلتوآبس' ),
+ 'titleparts' => array( 0, 'أجزاء_العنوان' ),
+ 'language' => array( 0, '#لغة:' ),
+ 'len' => array( 0, 'لين' ),
+ 'pos' => array( 0, 'بوس' ),
+ 'rpos' => array( 0, 'آربوس' ),
+ 'sub' => array( 0, 'متÙرع' ),
+ 'count' => array( 0, 'عدد' ),
+ 'replace' => array( 0, 'استبدال' ),
+ 'explode' => array( 0, 'انÙجار' ),
+ 'urldecode' => array( 0, 'ÙÙƒ_مسار' ),
+);
+
+/** Aramaic (ÜܪܡÜÜ) */
+$magicWords['arc'] = array(
+ 'language' => array( 0, '#Ü Ü«Ü¢Ü:' ),
+);
+
+/** Egyptian Spoken Arabic (مصرى) */
+$magicWords['arz'] = array(
+ 'expr' => array( 0, 'تعبير', 'expr' ),
+ 'if' => array( 0, 'لو', 'if' ),
+ 'ifeq' => array( 0, 'لومعادلة', 'ifeq' ),
+ 'ifexpr' => array( 0, 'لوتعبير', 'ifexpr' ),
+ 'iferror' => array( 0, 'لوخطأ', 'iferror' ),
+ 'switch' => array( 0, 'تبديل', 'switch' ),
+ 'default' => array( 0, '#اÙتراضي', '#default' ),
+ 'ifexist' => array( 0, 'لوموجود', 'ifexist' ),
+ 'time' => array( 0, 'وقت', 'time' ),
+ 'timel' => array( 0, 'تيمل', 'timel' ),
+ 'rel2abs' => array( 0, 'ريلتوآبس', 'rel2abs' ),
+ 'titleparts' => array( 0, 'أجزاء_العنوان', 'titleparts' ),
+ 'len' => array( 0, 'لين', 'len' ),
+ 'pos' => array( 0, 'بوس', 'pos' ),
+ 'rpos' => array( 0, 'آربوس', 'rpos' ),
+ 'sub' => array( 0, 'متÙرع', 'sub' ),
+ 'count' => array( 0, 'عدد', 'count' ),
+ 'replace' => array( 0, 'استبدال', 'replace' ),
+ 'explode' => array( 0, 'انÙجار', 'explode' ),
+);
+
+/** Breton (Brezhoneg) */
+$magicWords['br'] = array(
+ 'time' => array( 0, 'amzer' ),
+ 'convert' => array( 0, 'amdreiñ' ),
+ 'count' => array( 0, 'kontañ' ),
+ 'replace' => array( 0, 'erlec\'hiañ' ),
+);
+
+/** Bosnian (Bosanski) */
+$magicWords['bs'] = array(
+ 'language' => array( 0, '#JEZIK:' ),
+);
+
+/** Chechen (Ðохчийн) */
+$magicWords['ce'] = array(
+ 'time' => array( 0, 'хан', 'time' ),
+ 'replace' => array( 0, 'хийцарна', 'замена', 'replace' ),
+);
+
+/** Czech (ÄŒesky) */
+$magicWords['cs'] = array(
+ 'expr' => array( 0, 'výraz', 'expr' ),
+ 'if' => array( 0, 'když', 'if' ),
+ 'ifexist' => array( 0, 'kdyžexist', 'ifexist' ),
+ 'time' => array( 0, 'Äas', 'time' ),
+ 'len' => array( 0, 'délka', 'len' ),
+ 'count' => array( 0, 'poÄet', 'count' ),
+ 'replace' => array( 0, 'nahradit', 'replace' ),
+);
+
+/** Esperanto (Esperanto) */
+$magicWords['eo'] = array(
+ 'expr' => array( 0, 'espr', 'esprimo' ),
+ 'if' => array( 0, 'se' ),
+ 'ifeq' => array( 0, 'seekv', 'seekvacio' ),
+ 'ifexpr' => array( 0, 'seespr', 'seeksprimo' ),
+ 'iferror' => array( 0, 'seeraras' ),
+ 'switch' => array( 0, 'Åaltu', 'Åalti', 'sxaltu', 'sxalti' ),
+ 'default' => array( 0, '#defaÅ­lte', '#defauxlte' ),
+ 'ifexist' => array( 0, 'seekzistas' ),
+ 'time' => array( 0, 'tempo' ),
+ 'timel' => array( 0, 'tempoo' ),
+ 'language' => array( 0, '#LINGVO:' ),
+);
+
+/** Spanish (Español) */
+$magicWords['es'] = array(
+ 'if' => array( 0, 'si', 'if' ),
+ 'ifexpr' => array( 0, 'siexpr', 'ifexpr' ),
+ 'iferror' => array( 0, 'sierror', 'iferror' ),
+ 'switch' => array( 0, 'según', 'switch' ),
+ 'ifexist' => array( 0, 'siexiste', 'ifexist' ),
+ 'time' => array( 0, 'tiempo', 'time' ),
+ 'len' => array( 0, 'long', 'longitud', 'len' ),
+ 'replace' => array( 0, 'reemplazar', 'replace' ),
+ 'explode' => array( 0, 'separar', 'explode' ),
+);
+
+/** Estonian (Eesti) */
+$magicWords['et'] = array(
+ 'language' => array( 0, '#KEEL:' ),
+);
+
+/** Persian (Ùارسی) */
+$magicWords['fa'] = array(
+ 'expr' => array( 0, 'حساب' ),
+ 'if' => array( 0, 'اگر' ),
+ 'ifeq' => array( 0, 'اگرمساوی' ),
+ 'ifexpr' => array( 0, 'اگرحساب' ),
+ 'iferror' => array( 0, 'اگرخطا' ),
+ 'switch' => array( 0, 'گزینه' ),
+ 'default' => array( 0, '#پیش‌Ùرض' ),
+ 'ifexist' => array( 0, 'اگرموجود' ),
+ 'time' => array( 0, 'زمان' ),
+ 'timel' => array( 0, 'زمان‌بلند' ),
+ 'rel2abs' => array( 0, 'نسبی‌به‌مطلق' ),
+ 'titleparts' => array( 0, 'پاره‌عنوان' ),
+ 'language' => array( 0, '#زبان' ),
+ 'len' => array( 0, 'طول' ),
+ 'pos' => array( 0, 'جا' ),
+ 'rpos' => array( 0, 'جار' ),
+ 'sub' => array( 0, 'تکه' ),
+ 'count' => array( 0, 'شمار' ),
+ 'replace' => array( 0, 'جایگزین' ),
+ 'explode' => array( 0, 'گسترش' ),
+ 'urldecode' => array( 0, 'نشانی‌بی‌کد' ),
+);
+
+/** Finnish (Suomi) */
+$magicWords['fi'] = array(
+ 'language' => array( 0, '#KIELI:' ),
+);
+
+/** Galician (Galego) */
+$magicWords['gl'] = array(
+ 'language' => array( 0, '#LINGUA:', '#IDIOMA:' ),
+);
+
+/** Hebrew (עברית) */
+$magicWords['he'] = array(
+ 'expr' => array( 0, 'חשב', 'expr' ),
+ 'if' => array( 0, 'תנ××™', 'if' ),
+ 'ifeq' => array( 0, 'שווה', 'ifeq' ),
+ 'ifexpr' => array( 0, 'חשב תנ××™', 'ifexpr' ),
+ 'iferror' => array( 0, 'תנ××™ שגי××”', 'iferror' ),
+ 'switch' => array( 0, 'בחר', 'switch' ),
+ 'default' => array( 0, '#ברירת מחדל', '#default' ),
+ 'ifexist' => array( 0, 'קיי×', 'ifexist' ),
+ 'time' => array( 0, 'זמן', 'time' ),
+ 'timel' => array( 0, 'זמןמ', 'timel' ),
+ 'rel2abs' => array( 0, 'יחסי למוחלט', 'rel2abs' ),
+ 'titleparts' => array( 0, 'חלק בכותרת', 'titleparts' ),
+);
+
+/** Hungarian (Magyar) */
+$magicWords['hu'] = array(
+ 'expr' => array( 0, 'kif', 'expr' ),
+ 'if' => array( 0, 'ha', 'if' ),
+ 'ifeq' => array( 0, 'haegyenlő', 'ifeq' ),
+ 'ifexpr' => array( 0, 'hakif', 'ifexpr' ),
+ 'iferror' => array( 0, 'hahibás', 'iferror' ),
+ 'default' => array( 0, '#alapértelmezett', '#default' ),
+ 'ifexist' => array( 0, 'halétezik', 'ifexist' ),
+ 'time' => array( 0, 'idő', 'time' ),
+ 'len' => array( 0, 'hossz', 'len' ),
+ 'pos' => array( 0, 'pozíció', 'pos' ),
+ 'rpos' => array( 0, 'jpozíció', 'rpos' ),
+);
+
+/** Indonesian (Bahasa Indonesia) */
+$magicWords['id'] = array(
+ 'expr' => array( 0, 'hitung', 'expr' ),
+ 'if' => array( 0, 'jika', 'if' ),
+ 'ifeq' => array( 0, 'jikasama', 'ifeq' ),
+ 'ifexpr' => array( 0, 'jikahitung', 'ifexpr' ),
+ 'iferror' => array( 0, 'jikasalah', 'iferror' ),
+ 'switch' => array( 0, 'pilih', 'switch' ),
+ 'default' => array( 0, '#baku', '#default' ),
+ 'ifexist' => array( 0, 'jikaada', 'ifexist' ),
+ 'time' => array( 0, 'waktu', 'time' ),
+ 'timel' => array( 0, 'waktu1', 'timel' ),
+ 'titleparts' => array( 0, 'bagianjudul', 'titleparts' ),
+);
+
+/** Igbo (Igbo) */
+$magicWords['ig'] = array(
+ 'if' => array( 0, 'ȯ_bú', 'if' ),
+ 'time' => array( 0, 'ógè', 'time' ),
+ 'timel' => array( 0, 'ógèl', 'timel' ),
+);
+
+/** Italian (Italiano) */
+$magicWords['it'] = array(
+ 'ifexist' => array( 0, 'ifexists' ),
+ 'language' => array( 0, '#LINGUA' ),
+);
+
+/** Japanese (日本語) */
+$magicWords['ja'] = array(
+ 'expr' => array( 0, 'å¼' ),
+ 'if' => array( 0, 'ã‚‚ã—' ),
+ 'ifeq' => array( 0, 'ã‚‚ã—ç­‰ã—ã„' ),
+ 'ifexpr' => array( 0, 'ã‚‚ã—å¼' ),
+ 'iferror' => array( 0, 'ã‚‚ã—エラー' ),
+ 'switch' => array( 0, '切り替ãˆ' ),
+ 'default' => array( 0, '#既定' ),
+ 'ifexist' => array( 0, 'ã‚‚ã—存在' ),
+ 'time' => array( 0, '時間' ),
+ 'timel' => array( 0, '時間地方' ),
+ 'rel2abs' => array( 0, 'å‚ç…§ã‹ã‚‰çµ¶å¯¾' ),
+ 'titleparts' => array( 0, 'タイトル部分' ),
+ 'language' => array( 0, '#言語:', '#言語:' ),
+ 'len' => array( 0, 'é•·ã•' ),
+ 'pos' => array( 0, 'ä½ç½®' ),
+ 'rpos' => array( 0, '最後ã®ä½ç½®' ),
+ 'sub' => array( 0, '切りå–ã‚Š' ),
+ 'count' => array( 0, '回数' ),
+ 'replace' => array( 0, 'ç½®ãæ›ãˆ' ),
+ 'explode' => array( 0, '分割' ),
+ 'urldecode' => array( 0, 'URLデコード' ),
+);
+
+/** Khmer (ភាសាážáŸ’មែរ) */
+$magicWords['km'] = array(
+ 'language' => array( 0, '#ភាសា:' ),
+);
+
+/** Korean (한국어) */
+$magicWords['ko'] = array(
+ 'expr' => array( 0, '수ì‹' ),
+ 'switch' => array( 0, '스위치' ),
+ 'default' => array( 0, '#기본값' ),
+ 'time' => array( 0, '시간' ),
+ 'timel' => array( 0, '지역시간' ),
+ 'language' => array( 0, '#언어:' ),
+ 'len' => array( 0, '길ì´' ),
+ 'count' => array( 0, '개수' ),
+ 'replace' => array( 0, 'êµì²´' ),
+ 'explode' => array( 0, '분리' ),
+ 'urldecode' => array( 0, '주소디코딩:' ),
+);
+
+/** ‪Kurdî (latînî)‬ (‪Kurdî (latînî)‬) */
+$magicWords['ku-latn'] = array(
+ 'len' => array( 0, '#ziman' ),
+);
+
+/** Ladino (Ladino) */
+$magicWords['lad'] = array(
+ 'switch' => array( 0, 'asegún', 'según', 'switch' ),
+);
+
+/** Malagasy (Malagasy) */
+$magicWords['mg'] = array(
+ 'if' => array( 0, 'raha', 'if' ),
+ 'ifeq' => array( 0, 'rahamitovy', 'ifeq' ),
+ 'ifexpr' => array( 0, 'rahamarina', 'ifexpr' ),
+ 'iferror' => array( 0, 'rahadiso', 'iferror' ),
+ 'default' => array( 0, '#tsipalotra', '#default' ),
+ 'ifexist' => array( 0, 'rahamisy', 'ifexist' ),
+ 'time' => array( 0, 'lera', 'time' ),
+);
+
+/** Macedonian (МакедонÑки) */
+$magicWords['mk'] = array(
+ 'expr' => array( 0, 'израз' ),
+ 'if' => array( 0, 'ако' ),
+ 'ifeq' => array( 0, 'акоиÑто' ),
+ 'ifexpr' => array( 0, 'акоизраз' ),
+ 'iferror' => array( 0, 'акогрешка' ),
+ 'switch' => array( 0, 'префрли' ),
+ 'default' => array( 0, '#пооÑновно' ),
+ 'ifexist' => array( 0, 'акопоÑтои' ),
+ 'time' => array( 0, 'време' ),
+ 'timel' => array( 0, 'времел' ),
+ 'rel2abs' => array( 0, 'релдоапÑ' ),
+ 'titleparts' => array( 0, 'наÑловделови' ),
+ 'convert' => array( 0, 'претвори' ),
+ 'sourceunit' => array( 0, '#изворнаединица' ),
+ 'targetunit' => array( 0, '#целнаединица' ),
+ 'linkunit' => array( 0, '#врÑкаединица' ),
+ 'abbreviate' => array( 0, '#Ñкрати' ),
+ 'len' => array( 0, 'долж' ),
+ 'pos' => array( 0, 'пол' ),
+ 'rpos' => array( 0, 'впол' ),
+ 'sub' => array( 0, 'зам' ),
+ 'count' => array( 0, 'Ñметај' ),
+ 'replace' => array( 0, 'замени' ),
+ 'explode' => array( 0, 'разложи' ),
+ 'urldecode' => array( 0, 'urlдекод' ),
+);
+
+/** Malayalam (മലയാളം) */
+$magicWords['ml'] = array(
+ 'if' => array( 0, 'à´Žà´™àµà´•à´¿àµ½' ),
+ 'ifeq' => array( 0, 'സമെമെങàµà´•à´¿àµ½' ),
+ 'ifexpr' => array( 0, 'à´Žà´•àµà´¸àµà´ªàµà´°àµ†à´·à´¨àµ†à´™àµà´•à´¿àµ½' ),
+ 'iferror' => array( 0, 'പിഴവെങàµà´•à´¿àµ½' ),
+ 'switch' => array( 0, 'മാറàµà´±àµà´•' ),
+ 'default' => array( 0, '#à´¸àµà´µà´¤à´µàµ‡' ),
+ 'ifexist' => array( 0, 'ഉണàµà´Ÿàµ†à´™àµà´•à´¿àµ½' ),
+ 'time' => array( 0, 'സമയം' ),
+ 'timel' => array( 0, 'സമയം|' ),
+ 'language' => array( 0, '#ഭാഷ:' ),
+ 'sub' => array( 0, 'ഉപം' ),
+ 'count' => array( 0, 'à´Žà´£àµà´£àµà´•' ),
+ 'replace' => array( 0, 'മാറàµà´±à´¿à´šàµà´šàµ‡àµ¼à´•àµà´•àµà´•' ),
+ 'explode' => array( 0, 'വിസàµà´«àµ‹à´Ÿà´¨à´‚' ),
+);
+
+/** Marathi (मराठी) */
+$magicWords['mr'] = array(
+ 'expr' => array( 0, 'करण', 'expr' ),
+ 'if' => array( 0, 'जर', 'इफ', 'if' ),
+ 'ifeq' => array( 0, 'जरसम', 'ifeq' ),
+ 'ifexpr' => array( 0, 'जरकरण', 'ifexpr' ),
+ 'iferror' => array( 0, 'जरतà¥à¤°à¥à¤Ÿà¥€', 'iferror' ),
+ 'switch' => array( 0, 'कळ', 'सांगकळ', 'असेलतरसांग', 'असलेतरसांग', 'सà¥à¤µà¥€à¤š', 'switch' ),
+ 'default' => array( 0, '#अविचल', '#default' ),
+ 'ifexist' => array( 0, 'जरअसेल', 'जरआहे', 'ifexist' ),
+ 'time' => array( 0, 'वेळ', 'time' ),
+ 'timel' => array( 0, 'वेळसà¥à¤¥à¤¾', 'timel' ),
+ 'titleparts' => array( 0, 'शीरà¥à¤·à¤•à¤–ंड', 'टाइटलपारà¥à¤Ÿà¥à¤¸', 'titleparts' ),
+ 'len' => array( 0, 'लांबी', 'len' ),
+ 'pos' => array( 0, 'सà¥à¤¥à¤¶à¥‹à¤§', 'pos' ),
+ 'rpos' => array( 0, 'मागà¥à¤šà¤¾à¤¸à¥à¤¥à¤¶à¥‹à¤§', 'rpos' ),
+ 'sub' => array( 0, 'उप', 'sub' ),
+ 'count' => array( 0, 'मोज', 'मोजा', 'count' ),
+ 'replace' => array( 0, 'नेबदल', 'रिपà¥à¤²à¥‡à¤¸', 'replace' ),
+ 'explode' => array( 0, 'à¤à¤•à¤«à¥‹à¤¡', 'explode' ),
+);
+
+/** Erzya (ЭрзÑнь) */
+$magicWords['myv'] = array(
+ 'language' => array( 0, '#КЕЛЕСЬ:' ),
+);
+
+/** Nedersaksisch (Nedersaksisch) */
+$magicWords['nds-nl'] = array(
+ 'if' => array( 0, 'as', 'als', 'if' ),
+ 'ifeq' => array( 0, 'asgelieke', 'alsgelijk', 'ifeq' ),
+ 'ifexpr' => array( 0, 'asexpressie', 'alsexpressie', 'ifexpr' ),
+ 'iferror' => array( 0, 'asfout', 'alsfout', 'iferror' ),
+ 'default' => array( 0, '#standard', '#standaard', '#default' ),
+ 'ifexist' => array( 0, 'asbesteet', 'alsbestaat', 'ifexist' ),
+ 'time' => array( 0, 'tied', 'tijd', 'time' ),
+ 'timel' => array( 0, 'tiedl', 'tijdl', 'timel' ),
+ 'rel2abs' => array( 0, 'relatiefnaorabseluut', 'relatiefnaarabsoluut', 'rel2abs' ),
+);
+
+/** Dutch (Nederlands) */
+$magicWords['nl'] = array(
+ 'expr' => array( 0, 'expressie' ),
+ 'if' => array( 0, 'als' ),
+ 'ifeq' => array( 0, 'alsgelijk' ),
+ 'ifexpr' => array( 0, 'alsexpressie' ),
+ 'iferror' => array( 0, 'alsfout' ),
+ 'switch' => array( 0, 'schakelen' ),
+ 'default' => array( 0, '#standaard' ),
+ 'ifexist' => array( 0, 'alsbestaat' ),
+ 'time' => array( 0, 'tijd' ),
+ 'timel' => array( 0, 'tijdl' ),
+ 'rel2abs' => array( 0, 'relatiefnaarabsoluut' ),
+ 'titleparts' => array( 0, 'paginanaamdelen' ),
+ 'convert' => array( 0, 'converteren' ),
+ 'sourceunit' => array( 0, '#broneenheid' ),
+ 'targetunit' => array( 0, '#doeleenheid' ),
+ 'linkunit' => array( 0, '#verbindingseenheid' ),
+ 'abbreviate' => array( 0, '#afkorten' ),
+ 'language' => array( 0, '#TAAL:' ),
+ 'count' => array( 0, 'telling' ),
+ 'replace' => array( 0, 'vervangen' ),
+ 'explode' => array( 0, 'exploderen' ),
+ 'urldecode' => array( 0, 'urldecoderen' ),
+);
+
+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬) */
+$magicWords['nn'] = array(
+ 'expr' => array( 0, 'uttrykk', 'expr' ),
+ 'if' => array( 0, 'om', 'if' ),
+ 'ifeq' => array( 0, 'omlik', 'ifeq' ),
+ 'ifexpr' => array( 0, 'omuttrykk', 'ifexpr' ),
+ 'iferror' => array( 0, 'omfeil', 'iferror' ),
+ 'switch' => array( 0, 'byt', 'switch' ),
+ 'ifexist' => array( 0, 'omfinst', 'ifexist' ),
+ 'time' => array( 0, 'tid', 'time' ),
+ 'timel' => array( 0, 'tidl', 'timel' ),
+ 'rel2abs' => array( 0, 'reltilabs', 'rel2abs' ),
+ 'titleparts' => array( 0, 'titteldelar', 'titleparts' ),
+ 'len' => array( 0, 'lengd', 'len' ),
+ 'replace' => array( 0, 'erstatt', 'replace' ),
+);
+
+/** Oriya (ଓଡ଼ିଆ) */
+$magicWords['or'] = array(
+ 'time' => array( 0, 'ସମୟ' ),
+ 'convert' => array( 0, 'ବଦଳାଇବା' ),
+);
+
+/** Polish (Polski) */
+$magicWords['pl'] = array(
+ 'language' => array( 0, '#JĘZYK:' ),
+);
+
+/** Pashto (پښتو) */
+$magicWords['ps'] = array(
+ 'if' => array( 0, 'Ú©Ù‡', 'if' ),
+ 'time' => array( 0, 'وخت', 'time' ),
+ 'count' => array( 0, 'شمÛرل', 'count' ),
+);
+
+/** Portuguese (Português) */
+$magicWords['pt'] = array(
+ 'if' => array( 0, 'se', 'if' ),
+ 'ifeq' => array( 0, 'seigual', 'ifeq' ),
+ 'ifexpr' => array( 0, 'seexpr', 'ifexpr' ),
+ 'iferror' => array( 0, 'seerro', 'iferror' ),
+ 'default' => array( 0, '#padrão', '#padrao', '#default' ),
+ 'ifexist' => array( 0, 'seexiste', 'ifexist' ),
+ 'titleparts' => array( 0, 'partesdotítulo', 'partesdotitulo', 'titleparts' ),
+ 'len' => array( 0, 'comprimento', 'len' ),
+);
+
+/** Russian (РуÑÑкий) */
+$magicWords['ru'] = array(
+ 'replace' => array( 0, 'замена' ),
+);
+
+/** Albanian (Shqip) */
+$magicWords['sq'] = array(
+ 'language' => array( 0, '#GJUHA:' ),
+);
+
+/** Serbian Cyrillic ekavian (‪СрпÑки (ћирилица)‬) */
+$magicWords['sr-ec'] = array(
+ 'default' => array( 0, '#подразумевано' ),
+ 'time' => array( 0, 'време' ),
+ 'convert' => array( 0, 'претвори' ),
+ 'sourceunit' => array( 0, '#изворнајединица', '#изворна_јединица' ),
+ 'targetunit' => array( 0, '#крајњајединица', '#крајња_јединица' ),
+ 'linkunit' => array( 0, '#везајединице', '#веза_јединице' ),
+ 'abbreviate' => array( 0, '#Ñкрати' ),
+ 'pos' => array( 0, 'поз' ),
+ 'count' => array( 0, 'број' ),
+ 'replace' => array( 0, 'замени' ),
+);
+
+/** Swedish (Svenska) */
+$magicWords['sv'] = array(
+ 'expr' => array( 0, 'utr', 'expr' ),
+ 'if' => array( 0, 'om', 'if' ),
+ 'ifeq' => array( 0, 'omlika', 'ifeq' ),
+ 'ifexpr' => array( 0, 'omutr', 'ifexpr' ),
+ 'iferror' => array( 0, 'omfel', 'iferror' ),
+ 'switch' => array( 0, 'växel', 'switch' ),
+ 'default' => array( 0, '#standard', '#default' ),
+ 'ifexist' => array( 0, 'omfinns', 'ifexist' ),
+ 'time' => array( 0, 'tid', 'time' ),
+ 'timel' => array( 0, 'tidl', 'timel' ),
+ 'replace' => array( 0, 'ersätt', 'replace' ),
+ 'explode' => array( 0, 'explodera', 'explode' ),
+);
+
+/** Tamil (தமிழà¯) */
+$magicWords['ta'] = array(
+ 'count' => array( 0, 'எணà¯à®£à®¿à®•à¯à®•à¯ˆ' ),
+);
+
+/** Turkish (Türkçe) */
+$magicWords['tr'] = array(
+ 'expr' => array( 0, 'iÅŸlem', 'islem', 'ifade' ),
+ 'if' => array( 0, 'eÄŸer', 'eger' ),
+ 'switch' => array( 0, 'deÄŸiÅŸtir', 'degistir' ),
+ 'default' => array( 0, '#vas' ),
+);
+
+/** Татарча (Татарча) */
+$magicWords['tt-cyrl'] = array(
+ 'language' => array( 0, '#ТЕЛ:' ),
+);
+
+/** Ukrainian (УкраїнÑька) */
+$magicWords['uk'] = array(
+ 'expr' => array( 0, 'вираз', 'expr' ),
+ 'if' => array( 0, 'Ñкщо', 'if' ),
+ 'ifeq' => array( 0, 'Ñкщорівні', 'рівні', 'ifeq' ),
+ 'ifexpr' => array( 0, 'Ñкщовираз', 'ifexpr' ),
+ 'iferror' => array( 0, 'Ñкщопомилка', 'iferror' ),
+ 'switch' => array( 0, 'вибірка', 'switch' ),
+ 'default' => array( 0, '#інакше', '#default' ),
+ 'ifexist' => array( 0, 'ÑкщоіÑнує', 'ifexist' ),
+);
+
+/** Vietnamese (Tiếng Việt) */
+$magicWords['vi'] = array(
+ 'expr' => array( 0, 'côngthức' ),
+ 'language' => array( 0, '#NGÔNNGỮ:' ),
+);
+
+/** Yiddish (ייִדיש) */
+$magicWords['yi'] = array(
+ 'expr' => array( 0, 'רעכן' ),
+ 'if' => array( 0, 'תנ××™' ),
+ 'ifeq' => array( 0, 'גלייך' ),
+ 'ifexpr' => array( 0, '×ויברעכן' ),
+ 'switch' => array( 0, 'קלייב' ),
+ 'default' => array( 0, '#גרונט' ),
+ 'ifexist' => array( 0, 'עקזיסט' ),
+ 'time' => array( 0, 'צייט' ),
+ 'timel' => array( 0, 'צייטל' ),
+);
diff --git a/extensions/ParserFunctions/ParserFunctions.i18n.php b/extensions/ParserFunctions/ParserFunctions.i18n.php
new file mode 100644
index 00000000..1fa3892d
--- /dev/null
+++ b/extensions/ParserFunctions/ParserFunctions.i18n.php
@@ -0,0 +1,4695 @@
+<?php
+/**
+ * Internationalisation file for extension ParserFunctions.
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$messages = array();
+
+$messages['en'] = array(
+ 'pfunc_desc' => 'Enhance parser with logical functions',
+ 'pfunc_time_error' => 'Error: invalid time',
+ 'pfunc_time_too_long' => 'Error: too many #time calls',
+ 'pfunc_time_too_big' => 'Error: #time only supports years up to 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Error: Invalid depth in path: "$1" (tried to access a node above the root node)',
+ 'pfunc_expr_stack_exhausted' => 'Expression error: Stack exhausted',
+ 'pfunc_expr_unexpected_number' => 'Expression error: Unexpected number',
+ 'pfunc_expr_preg_match_failure' => 'Expression error: Unexpected preg_match failure',
+ 'pfunc_expr_unrecognised_word' => 'Expression error: Unrecognised word "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Expression error: Unexpected $1 operator',
+ 'pfunc_expr_missing_operand' => 'Expression error: Missing operand for $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Expression error: Unexpected closing bracket',
+ 'pfunc_expr_unrecognised_punctuation' => 'Expression error: Unrecognised punctuation character "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Expression error: Unclosed bracket',
+ 'pfunc_expr_division_by_zero' => 'Division by zero',
+ 'pfunc_expr_invalid_argument' => 'Invalid argument for $1: < -1 or > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Invalid argument for ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Expression error: Unknown error ($1)',
+ 'pfunc_expr_not_a_number' => 'In $1: result is not a number',
+ 'pfunc_string_too_long' => 'Error: string exceeds $1 character limit',
+ 'pfunc-convert-dimensionmismatch' => 'Error: cannot convert between units of "$1" and "$2"',
+ 'pfunc-convert-unknownunit' => 'Error: unknown unit "$1"',
+ 'pfunc-convert-unknowndimension' => 'Error: unknown dimension "$1"',
+ 'pfunc-convert-invalidcompoundunit' => 'Error: invalid compound unit "$1"',
+ 'pfunc-convert-nounit' => 'Error: no source unit given',
+ 'pfunc-convert-doublecompoundunit' => 'Error: cannot parse double compound units like "$1"',
+
+ # DIMENSION NAMES
+ 'pfunc-convert-dimension-length' => 'length',
+ 'pfunc-convert-dimension-area' => 'area',
+ 'pfunc-convert-dimension-volume' => 'volume',
+ 'pfunc-convert-dimension-time' => 'time',
+ 'pfunc-convert-dimension-timesquared' => 'time<sup>2</sup>',
+ 'pfunc-convert-dimension-mass' => 'mass',
+ 'pfunc-convert-dimension-speed' => 'speed',
+ 'pfunc-convert-dimension-temperature' => 'temperature',
+ 'pfunc-convert-dimension-acceleration' => 'acceleration',
+ 'pfunc-convert-dimension-force' => 'force',
+ 'pfunc-convert-dimension-torque' => 'torque',
+ 'pfunc-convert-dimension-energy' => 'energy',
+ 'pfunc-convert-dimension-power' => 'power',
+ 'pfunc-convert-dimension-pressure' => 'pressure',
+ 'pfunc-convert-dimension-density' => 'density',
+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'fuelefficiencypositive',
+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'fuelefficiencynegative',
+
+ # SI PREFIXES
+
+ 'pfunc-convert-prefix-yotta' => 'yotta',
+ 'pfunc-convert-prefix-zetta' => 'zetta',
+ 'pfunc-convert-prefix-exa' => 'exa',
+ 'pfunc-convert-prefix-peta' => 'peta',
+ 'pfunc-convert-prefix-tera' => 'tera',
+ 'pfunc-convert-prefix-giga' => 'giga',
+ 'pfunc-convert-prefix-mega' => 'mega',
+ 'pfunc-convert-prefix-kilo' => 'kilo',
+ 'pfunc-convert-prefix-hecto' => 'hecto',
+ 'pfunc-convert-prefix-deca' => 'deca',
+ 'pfunc-convert-prefix-deci' => 'deci',
+ 'pfunc-convert-prefix-centi' => 'centi',
+ 'pfunc-convert-prefix-milli' => 'milli',
+ 'pfunc-convert-prefix-micro' => 'micro',
+ 'pfunc-convert-prefix-nano' => 'nano',
+ 'pfunc-convert-prefix-pico' => 'pico',
+ 'pfunc-convert-prefix-femto' => 'femto',
+ 'pfunc-convert-prefix-atto' => 'atto',
+ 'pfunc-convert-prefix-zepto' => 'zepto',
+ 'pfunc-convert-prefix-yocto' => 'yocto',
+
+ 'pfunc-convert-prefix-yotta-abbr' => 'Y',
+ 'pfunc-convert-prefix-zetta-abbr' => 'Z',
+ 'pfunc-convert-prefix-exa-abbr' => 'E',
+ 'pfunc-convert-prefix-peta-abbr' => 'P',
+ 'pfunc-convert-prefix-tera-abbr' => 'T',
+ 'pfunc-convert-prefix-giga-abbr' => 'G',
+ 'pfunc-convert-prefix-mega-abbr' => 'M',
+ 'pfunc-convert-prefix-kilo-abbr' => 'k',
+ 'pfunc-convert-prefix-hecto-abbr' => 'h',
+ 'pfunc-convert-prefix-deca-abbr' => 'da',
+ 'pfunc-convert-prefix-deci-abbr' => 'd',
+ 'pfunc-convert-prefix-centi-abbr' => 'c',
+ 'pfunc-convert-prefix-milli-abbr' => 'm',
+ 'pfunc-convert-prefix-micro-abbr' => 'μ',
+ 'pfunc-convert-prefix-nano-abbr' => 'n',
+ 'pfunc-convert-prefix-pico-abbr' => 'p',
+ 'pfunc-convert-prefix-femto-abbr' => 'f',
+ 'pfunc-convert-prefix-atto-abbr' => 'a',
+ 'pfunc-convert-prefix-zepto-abbr' => 'z',
+ 'pfunc-convert-prefix-yocto-abbr' => 'y',
+
+ # LENGTH
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2meter|$2meters}}',
+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|angstrom|angstroms}}',
+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|mile|miles}}',
+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|furlong|furlongs}}',
+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|chain|chains}}',
+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|rod|rods}}',
+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|fathom|fathoms}}',
+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|yard|yards}}',
+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|foot|feet}}',
+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|hand|hands}}',
+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|inch|inches}}',
+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|nautical mile|nautical miles}}',
+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|nautical mile (pre-1970 British)|nautical miles (pre-1970 British)}}',
+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1|nautical mile (pre-1954 US)|nautical miles (pre-1954 US)}}',
+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2parsec|$2parsecs}}',
+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1|$2lightyear|$2lightyears}}',
+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|astronomical unit|astronomical units}}',
+
+ 'pfunc-convert-unit-length-metre-abbr' => '$2m',
+ 'pfunc-convert-unit-length-angstrom-abbr' => 'Ã…',
+ 'pfunc-convert-unit-length-mile-abbr' => 'mi',
+ 'pfunc-convert-unit-length-furlong-abbr' => 'furlong',
+ 'pfunc-convert-unit-length-chain-abbr' => 'chain',
+ 'pfunc-convert-unit-length-rod-abbr' => 'rd',
+ 'pfunc-convert-unit-length-fathom-abbr' => 'fathom',
+ 'pfunc-convert-unit-length-yard-abbr' => 'yd',
+ 'pfunc-convert-unit-length-foot-abbr' => 'ft',
+ 'pfunc-convert-unit-length-hand-abbr' => 'h',
+ 'pfunc-convert-unit-length-inch-abbr' => 'in',
+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'nmi',
+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'nmi (Brit)',
+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'nmi (pre-1954 US)',
+ 'pfunc-convert-unit-length-parsec-abbr' => '$2pc',
+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2ly',
+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'AU',
+
+ # AREA #
+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|square kilometer|square kilometers}}',
+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|square meter|square meters}}',
+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|square centimeter|square centimeters}}',
+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|square millimeter|square millimeters}}',
+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hectare|hectares}}',
+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|square mile|square miles}}',
+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|acre|acres}}',
+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|square yard|square yards}}',
+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|square foot|square feet}}',
+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|square inch|square inches}}',
+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|square nautical mile|square nautical miles}}',
+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|dunam|dunams}}',
+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|tsubo|tsubo}}',
+
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
+ 'pfunc-convert-unit-area-squaremile-abbr' => 'sq mi',
+ 'pfunc-convert-unit-area-acre-abbr' => 'acre',
+ 'pfunc-convert-unit-area-squareyard-abbr' => 'sq yd',
+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'sq ft',
+ 'pfunc-convert-unit-area-squareinch-abbr' => 'sq in',
+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'sq nmi',
+ 'pfunc-convert-unit-area-dunam-abbr' => 'dunam',
+ 'pfunc-convert-unit-area-tsubo-abbr' => 'tsubo',
+
+ # TIME #
+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|second|seconds}}',
+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|$2year|$2years}}',
+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|day|days}}',
+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|hour|hours}}',
+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minute|minutes}}',
+
+ 'pfunc-convert-unit-time-second-abbr' => 's',
+ 'pfunc-convert-unit-time-year-abbr' => '$2yr',
+ 'pfunc-convert-unit-time-day-abbr' => 'day',
+ 'pfunc-convert-unit-time-hour-abbr' => 'hr',
+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
+
+ # VOLUME #
+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|cubic meter|cubic meters}}',
+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|cubic centimeter|cubic centimeters}}',
+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|cubic millimeter|cubic millimeters}}',
+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|kiloliter|kiloliters}}',
+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|liter|liters}}',
+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|centiliter|centiliters}}',
+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|milliliter|milliliters}}',
+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|cubic yard|cubic yards}}',
+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|cubic foot|cubic feet}}',
+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|cubic inch|cubic inches}}',
+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|barrel|barrels}}',
+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|bushel|bushels}}',
+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|gallon|gallons}}',
+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|quart|quarts}}',
+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|pint|pints}}',
+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1|fluid ounce|fluid ounces}}',
+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1|US barrel|US barrels}}',
+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1|barrel|barrel}}',
+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1|barrel|barrel}}',
+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|US gallon|US gallons}}',
+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|US quart|US quarts}}',
+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|US pint|US pints}}',
+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1|US fluid ounce|US fluid ounces}}',
+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1|US dry barrel|US dry barrels}}',
+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1|US bushel|US bushels}}',
+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|US dry gallon|US dry gallons}}',
+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|US dry quart|US dry quarts}}',
+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|US dry pint|US dry pints}}',
+
+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-litre-abbr' => '$2l',
+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'cu yd',
+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'cu ft',
+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'cu in',
+ 'pfunc-convert-unit-volume-barrel-abbr' => 'bbl',
+ 'pfunc-convert-unit-volume-bushel-abbr' => 'bsh',
+ 'pfunc-convert-unit-volume-gallon-abbr' => 'gal',
+ 'pfunc-convert-unit-volume-quart-abbr' => 'qt',
+ 'pfunc-convert-unit-volume-pint-abbr' => 'pt',
+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'fl oz',
+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'US bbl',
+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'bbl',
+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'bbl',
+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'US gal',
+ 'pfunc-convert-unit-volume-usquart-abbr' => 'US qt',
+ 'pfunc-convert-unit-volume-uspint-abbr' => 'US pt',
+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'US fl oz',
+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'US bbl',
+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'US bsh',
+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'US dry gal',
+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'US dry qt',
+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'US dry pt',
+
+ # SPEED
+ 'pfunc-convert-unit-speed-mile-hour' => 'miles per hour',
+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
+
+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'mph',
+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
+
+ # PRESSURE
+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|$2pascal|$2pascals}}',
+ 'pfunc-convert-unit-pressure-bar' => 'bar',
+ 'pfunc-convert-unit-pressure-decibar' => 'decibar',
+ 'pfunc-convert-unit-pressure-millibar' => 'millibar',
+ 'pfunc-convert-unit-pressure-kilobarye' => 'kilobarye',
+ 'pfunc-convert-unit-pressure-barye' => 'barye',
+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmosphere|atmospheres}}',
+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|Torr|Torr}}',
+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|millimeter of mercury|millimeters of mercury}}',
+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|inch of mercury|inches of mercury}}',
+ 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1|pound per square-inch|pounds per square-inch}}',
+
+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'kBa',
+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ba',
+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
+ 'pfunc-convert-unit-pressure-torr-abbr' => 'Torr',
+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'mmHg',
+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'inHg',
+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
+);
+
+/** Message documentation (Message documentation)
+ * @author Jon Harald Søby
+ * @author Meno25
+ * @author Siebrand
+ * @author The Evil IP address
+ */
+$messages['qqq'] = array(
+ 'pfunc_desc' => '{{desc}}',
+ 'pfunc_expr_division_by_zero' => '{{Identical|Divizion by zero}}',
+ 'pfunc_string_too_long' => 'PLURAL is supported for $1.',
+);
+
+/** Afrikaans (Afrikaans)
+ * @author Naudefj
+ */
+$messages['af'] = array(
+ 'pfunc_desc' => 'Verryk die ontleder met logiese funksies',
+ 'pfunc_time_error' => 'Fout: ongeldige tyd',
+ 'pfunc_time_too_long' => 'Fout: #time te veel kere geroep',
+ 'pfunc_rel2abs_invalid_depth' => 'Fout: Ongeldige diepte in pad: "$1" (probeer \'n node bo die wortelnode te roep)',
+ 'pfunc_expr_stack_exhausted' => 'Fout in uitdrukking: stack uitgeput',
+ 'pfunc_expr_unexpected_number' => 'Fout in uitdrukking: onverwagte getal',
+ 'pfunc_expr_preg_match_failure' => 'Fout in uitdrukking: onverwagte faling van preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Fout in uitdrukking: woord "$1" nie herken',
+ 'pfunc_expr_unexpected_operator' => 'Fout in uitdrukking: onverwagte operateur $1',
+ 'pfunc_expr_missing_operand' => 'Fout in uitdrukking: geen operand vir $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Fout in uitdrukking: hakkie onverwags gesluit',
+ 'pfunc_expr_unrecognised_punctuation' => 'Fout in uitdrukking: onbekende leesteken "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Fout in uitdrukking: hakkie nie gesluit nie',
+ 'pfunc_expr_division_by_zero' => 'Deling deur nul',
+ 'pfunc_expr_invalid_argument' => 'Ongeldige argument vir $1: < -1 of > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ongeldige argument vir ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Fout in uitdrukking: onbekende fout ($1)',
+ 'pfunc_expr_not_a_number' => "In $1: resultaat is nie 'n getal nie",
+ 'pfunc_string_too_long' => 'Fout: String oorskry $1 karakter limiet',
+);
+
+/** Gheg Albanian (Gegë)
+ * @author Mdupont
+ */
+$messages['aln'] = array(
+ 'pfunc_desc' => 'Enhance parser me funksione logjike',
+ 'pfunc_time_error' => 'Gabim: koha e pavlefshme',
+ 'pfunc_time_too_long' => 'Gabim: kohë shumë # thirrjet',
+ 'pfunc_rel2abs_invalid_depth' => 'Gabim: thellësia e pavlefshme në rrugën: "$1" (u përpoq për të hyrë në një nyjë mbi nyjen e rrënjë)',
+ 'pfunc_expr_stack_exhausted' => 'gabim Shprehja: qipi rraskapitur',
+ 'pfunc_expr_unexpected_number' => 'gabim Shprehja: Numri i papritur',
+);
+
+/** Aragonese (Aragonés)
+ * @author Juanpabl
+ */
+$messages['an'] = array(
+ 'pfunc_desc' => 'Amillorar o parseyador con funcions lochicas',
+ 'pfunc_time_error' => 'Error: tiempo incorreuto',
+ 'pfunc_time_too_long' => 'Error: masiadas cridas #time',
+ 'pfunc_rel2abs_invalid_depth' => 'Error: Fondura incorreuta en o camín: "$1" (ha prebato d\'acceder ta un nodo por dencima d\'o nodo radiz)',
+ 'pfunc_expr_stack_exhausted' => "Error d'expresión: Pila acotolada",
+ 'pfunc_expr_unexpected_number' => "Error d'expresión: numero no asperato",
+ 'pfunc_expr_preg_match_failure' => "Error d'expresión: fallo de preg_match no asperato",
+ 'pfunc_expr_unrecognised_word' => 'Error d\'expresión: parola "$1" no reconoixita',
+ 'pfunc_expr_unexpected_operator' => "Error d'expresión: operador $1 no asperato",
+ 'pfunc_expr_missing_operand' => "Error d'expresión: a $1 li falta un operando",
+ 'pfunc_expr_unexpected_closing_bracket' => "Error d'expresión: zarradura d'o gafet no asperata",
+ 'pfunc_expr_unrecognised_punctuation' => 'Error d\'expresión: carácter de puntuación "$1" no reconoixito',
+ 'pfunc_expr_unclosed_bracket' => "Error d'expresión: gafet sin zarrar",
+ 'pfunc_expr_division_by_zero' => 'División por zero',
+ 'pfunc_expr_invalid_argument' => 'Argumento no conforme ta $1: < -1 u > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argumento no conforme ta ln: <=0',
+ 'pfunc_expr_unknown_error' => "Error d'expresión: error esconoixito ($1)",
+ 'pfunc_expr_not_a_number' => 'En $1: o resultau no ye un numero',
+);
+
+/** Arabic (العربية)
+ * @author Aiman titi
+ * @author Meno25
+ */
+$messages['ar'] = array(
+ 'pfunc_desc' => 'محلل ممدد بدوال منطقية',
+ 'pfunc_time_error' => 'خطأ: زمن غير صحيح',
+ 'pfunc_time_too_long' => 'خطأ: استدعاءات #time كثيرة جدا',
+ 'pfunc_time_too_big' => 'خطأ : # الوقت يدعم Ùقط حتى 9999 سنة',
+ 'pfunc_rel2abs_invalid_depth' => 'خطأ: عمق غير صحيح ÙÙŠ المسار: "$1" (حاول دخول عقدة Ùوق العقدة الجذرية)',
+ 'pfunc_expr_stack_exhausted' => 'خطأ ÙÙŠ التعبير: ستاك مجهد',
+ 'pfunc_expr_unexpected_number' => 'خطأ ÙÙŠ التعبير: رقم غير متوقع',
+ 'pfunc_expr_preg_match_failure' => 'خطأ ÙÙŠ التعبير: Ùشل preg_match غير متوقع',
+ 'pfunc_expr_unrecognised_word' => 'خطأ ÙÙŠ التعبير: كلمة غير متعر٠عليها "$1"',
+ 'pfunc_expr_unexpected_operator' => 'خطأ ÙÙŠ التعبير: عامل $1 غير متوقع',
+ 'pfunc_expr_missing_operand' => 'خطأ ÙÙŠ التعبير: operand Ù…Ùقود Ù„$1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'خطأ ÙÙŠ التعبير: قوس إغلاق غير متوقع',
+ 'pfunc_expr_unrecognised_punctuation' => 'خطأ ÙÙŠ التعبير: علامة ترقيم غير متعر٠عليها "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'خطأ ÙÙŠ التعبير: قوس غير مغلق',
+ 'pfunc_expr_division_by_zero' => 'القسمة على صÙر',
+ 'pfunc_expr_invalid_argument' => 'مدخلة غير صحيحة ل $1: < -1 أو > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'مدخلة غير صحيحة ل ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'خطأ ÙÙŠ التعبير: خطأ غير معرو٠($1)',
+ 'pfunc_expr_not_a_number' => 'ÙÙŠ $1: النتيجة ليست رقما',
+ 'pfunc_string_too_long' => 'خطأ: السلسلة تتجاوز الحد $1 حرÙ',
+);
+
+/** Aramaic (ÜܪܡÜÜ)
+ * @author Basharh
+ */
+$messages['arc'] = array(
+ 'pfunc_time_error' => 'ܦܘܕÜ: Ü¥Ü•Ü¢Ü Ü Ü Ü¬ÜªÜܨܬÜ',
+);
+
+/** Egyptian Spoken Arabic (مصرى)
+ * @author Ghaly
+ * @author Meno25
+ * @author Ramsis II
+ */
+$messages['arz'] = array(
+ 'pfunc_desc' => 'محلل متدعم ب دوال منطقية',
+ 'pfunc_time_error' => 'غلطه:وقت مش صحيح',
+ 'pfunc_time_too_long' => 'غلط: استدعاءات #time كتيرة قوى',
+ 'pfunc_rel2abs_invalid_depth' => 'غلط: عمق مش صحيح ÙÙ‰ المسار: "$1" (حاول دخول عقدة Ùوق العقدة الجزرية)',
+ 'pfunc_expr_stack_exhausted' => 'غلط ÙÙ‰ التعبير: ستاك مجهد',
+ 'pfunc_expr_unexpected_number' => 'غلط ÙÙ‰ التعبير: رقم مش متوقع',
+ 'pfunc_expr_preg_match_failure' => 'غلط تعبيري: Ùشل مش متوقع ÙÙ‰ preg_match',
+ 'pfunc_expr_unrecognised_word' => 'غلط تعبيري: كلمة مش متعر٠عليها "$1"',
+ 'pfunc_expr_unexpected_operator' => 'غلط تعبيري: عامل $1 مش متوقع',
+ 'pfunc_expr_missing_operand' => 'غلط تعبيري: operand بتاع $1 ضايع',
+ 'pfunc_expr_unexpected_closing_bracket' => 'غلط تعبيري:قوس Ù‚ÙÙ„ مش متوقع',
+ 'pfunc_expr_unrecognised_punctuation' => 'غلط تعبيري:علامة الترقيم "$1" مش متعر٠عليها',
+ 'pfunc_expr_unclosed_bracket' => 'غلط تعبيري:قوس مش مقÙول',
+ 'pfunc_expr_division_by_zero' => 'القسمه على صÙر',
+ 'pfunc_expr_invalid_argument' => 'مدخلة مش صحيحة لـ $1: < -1 or > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'مدخلة مش صحيحة لـ ln: <= 0',
+ 'pfunc_expr_unknown_error' => '($1)غلط تعبيري: غلط مش معروÙ',
+ 'pfunc_expr_not_a_number' => 'ÙÙ‰ $1: النتيجه مش رقم',
+);
+
+/** Assamese (অসমীয়া)
+ * @author Rajuonline
+ */
+$messages['as'] = array(
+ 'pfunc_time_error' => 'ভà§à¦²: অযোগà§à¦¯ সময়',
+);
+
+/** Asturian (Asturianu)
+ * @author Esbardu
+ * @author Xuacu
+ */
+$messages['ast'] = array(
+ 'pfunc_desc' => "Ameyora l'análisis sintáuticu con funciones llóxiques",
+ 'pfunc_time_error' => 'Error: tiempu non válidu',
+ 'pfunc_time_too_long' => 'Error: demasiaes llamaes #time',
+ 'pfunc_rel2abs_invalid_depth' => 'Error: Nivel de subdireutoriu non válidu: "$1" (intentu d\'accesu penriba del direutoriu raíz)',
+ 'pfunc_expr_stack_exhausted' => "Error d'espresión: Pila escosada",
+ 'pfunc_expr_unexpected_number' => "Error d'espresión: Númberu inesperáu",
+ 'pfunc_expr_preg_match_failure' => "Error d'espresión: Fallu inesperáu de preg_match",
+ 'pfunc_expr_unrecognised_word' => 'Error d\'espresión: Pallabra "$1" non reconocida',
+ 'pfunc_expr_unexpected_operator' => "Error d'espresión: Operador $1 inesperáu",
+ 'pfunc_expr_missing_operand' => "Error d'espresión: Falta operador en $1",
+ 'pfunc_expr_unexpected_closing_bracket' => "Error d'espresión: Paréntesis final inesperáu",
+ 'pfunc_expr_unrecognised_punctuation' => 'Error d\'espresión: Caráuter de puntuación "$1" non reconocíu',
+ 'pfunc_expr_unclosed_bracket' => "Error d'espresión: Paréntesis non zarráu",
+ 'pfunc_expr_division_by_zero' => 'División por cero',
+ 'pfunc_expr_invalid_argument' => 'Argumentu non válidu pa $1: < -1 o > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argumentu non válidu pa ln: <= 0',
+ 'pfunc_expr_unknown_error' => "Error d'espresión: Error desconocíu ($1)",
+ 'pfunc_expr_not_a_number' => 'En $1: el resultáu nun ye un númberu',
+ 'pfunc_string_too_long' => 'Error: la cadena pasa la llende de $1 caráuteres',
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2metru|$2metros}}',
+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|angstrom|angstroms}}',
+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|milla|milles}}',
+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|yarda|yardes}}',
+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|pie|pies}}',
+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|quilómetru cuadráu|quilómetros cuadraos}}',
+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|metru cuadráu|metros cuadraos}}',
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|segundu|segundos}}',
+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|$2añu|$2años}}',
+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|día|díes}}',
+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|hora|hores}}',
+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minutu|minutos}}',
+ 'pfunc-convert-unit-time-second-abbr' => 's',
+ 'pfunc-convert-unit-time-year-abbr' => '$2añ',
+ 'pfunc-convert-unit-time-day-abbr' => 'día',
+ 'pfunc-convert-unit-time-hour-abbr' => 'h',
+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|metru cúbicu|metros cúbicos}}',
+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|centímetru cúbicu|centímetros cúbicos}}',
+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|milímetru cúbicu|milímetros cúbicos}}',
+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|kilollitru|kilollitros}}',
+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|llitru|llitros}}',
+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|centillitru|centillitros}}',
+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|milillitru|milillitros}}',
+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-litre-abbr' => '$2l',
+ 'pfunc-convert-unit-speed-mile-hour' => 'milles por hora',
+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|$2pascal|$2pascales}}',
+ 'pfunc-convert-unit-pressure-bar' => 'bar',
+ 'pfunc-convert-unit-pressure-decibar' => 'decibar',
+ 'pfunc-convert-unit-pressure-millibar' => 'milibar',
+ 'pfunc-convert-unit-pressure-kilobarye' => 'kilobario',
+ 'pfunc-convert-unit-pressure-barye' => 'bario',
+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmósfera|atmósferes}}',
+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'kBa',
+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ba',
+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
+);
+
+/** Azerbaijani (Azərbaycanca)
+ * @author Cekli829
+ */
+$messages['az'] = array(
+ 'pfunc_time_error' => 'Xəta: yanlış zaman',
+);
+
+/** Bashkir (БашҡортÑа)
+ * @author Assele
+ */
+$messages['ba'] = array(
+ 'pfunc_desc' => 'Логик функциÑлар менән Ñҡшыртылған уҡыу ҡоралы',
+ 'pfunc_time_error' => 'Хата: ваҡыт дөрөҫ түгел',
+ 'pfunc_time_too_long' => 'Хата: #time функциÑһы бигерәк күп Ñаҡырылған',
+ 'pfunc_rel2abs_invalid_depth' => 'Хата: "$1" юлының тәрәнлеге дөрөҫ түгел (тәүге төйөндән өҫтәрәк торған төйөндө аÑырға тырышыу)',
+ 'pfunc_expr_stack_exhausted' => 'Ðңлатма хатаһы: Стек тулған',
+ 'pfunc_expr_unexpected_number' => 'Ðңлатма хатаһы: Көтөлмәгән һан',
+ 'pfunc_expr_preg_match_failure' => 'Ðңлатма хатаһы: Көтөлмәгән preg_match хатаһы',
+ 'pfunc_expr_unrecognised_word' => 'Ðңлатма хатаһы: Танылмаған "$1" һүҙе',
+ 'pfunc_expr_unexpected_operator' => 'Ðңлатма хатаһы: Көтөлмәгән $1 операторы',
+ 'pfunc_expr_missing_operand' => 'Ðңлатма хатаһы: $1 аңлатмаһы Ó©Ñөн операнд етмәй',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Ðңлатма хатаһы: Көтөлмәгән Ñбыу йәйәһе',
+ 'pfunc_expr_unrecognised_punctuation' => 'Ðңлатма хатаһы: Танылмаған "$1" тыныш билдәһе',
+ 'pfunc_expr_unclosed_bracket' => 'Ðңлатма хатаһы: Ябылмаған йәйә',
+ 'pfunc_expr_division_by_zero' => 'Ðулгә бүлеү хатаһы',
+ 'pfunc_expr_invalid_argument' => '$1 Ó©Ñөн аргумент дөрөҫ түгел: < -1 йәки > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'ln Ó©Ñөн аргумент дөрөҫ түгел: <= 0',
+ 'pfunc_expr_unknown_error' => 'Ðңлатма хатаһы: Билдәһеҙ хата ($1)',
+ 'pfunc_expr_not_a_number' => '$1: һөҙөмтә — һан түгел',
+ 'pfunc_string_too_long' => 'Хата: Юл оҙонлоғо билдәләнгән Ñиктән — $1 хәрефтән — ашҡан',
+);
+
+/** Southern Balochi (بلوچی مکرانی)
+ * @author Mostafadaneshvar
+ */
+$messages['bcc'] = array(
+ 'pfunc_desc' => 'تجزیه کنوکء بهتر کن گون عملگر آن منطقی',
+ 'pfunc_time_error' => 'حطا: نامعتبر وهد',
+ 'pfunc_time_too_long' => 'حطا: بازگین #زمان سوج',
+ 'pfunc_rel2abs_invalid_depth' => 'حطا: نامعتبر عمق ته مسیر: "$1"(سعی کتن په یک بالادی گرهنی چه ریشگی گرهنانا برسیت)',
+ 'pfunc_expr_stack_exhausted' => 'حطا اصطلاح: توده حالیک',
+ 'pfunc_expr_unexpected_number' => 'حطا اصطلاح: غیر منظرین شماره',
+ 'pfunc_expr_preg_match_failure' => 'حطا اصطلاح: غیرمنتظره این preg_ همسانی پروش وارت',
+ 'pfunc_expr_unrecognised_word' => 'حطا اصطلاح: نا شناسین کلمه "$1"',
+ 'pfunc_expr_unexpected_operator' => 'حطا اصطلاح:نه لوٹتین $1 اپراتور',
+ 'pfunc_expr_missing_operand' => 'حطا اصطلاح: گارین عملوند په $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'حطا اصطلاح: نه لوٹتگین براکت بندگ',
+ 'pfunc_expr_unrecognised_punctuation' => 'حطا اصطلاح: ناشناسین کاراکتر نشانه هلگی "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'حطا اصطلاح: نه بسته گین براکت',
+ 'pfunc_expr_division_by_zero' => 'تقسیم بر صÙر',
+ 'pfunc_expr_invalid_argument' => 'نامعتبر آرگومان په $1: < -1 یا > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'نامعتبر آرگومان ته شی : <= 0',
+ 'pfunc_expr_unknown_error' => 'حطا اصطلاح :ناشناسین حطا ($1)',
+ 'pfunc_expr_not_a_number' => 'ته $1: نتیجه یک عددی نهنت',
+);
+
+/** Belarusian (TaraÅ¡kievica orthography) (‪БеларуÑÐºÐ°Ñ (тарашкевіца)‬)
+ * @author EugeneZelenko
+ * @author Jim-by
+ * @author Red Winged Duck
+ */
+$messages['be-tarask'] = array(
+ 'pfunc_desc' => 'Палепшаны парÑÑÑ€ зь лÑгічнымі функцыÑмі',
+ 'pfunc_time_error' => 'Памылка: нÑÑлушны чаÑ',
+ 'pfunc_time_too_long' => 'Памылка: зашмат выклікаў функцыі #time',
+ 'pfunc_time_too_big' => 'Памылка: #time падтрымлівае гады толькі Ñž дыÑпазоне да 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Памылка: нÑÑÐ»ÑƒÑˆÐ½Ð°Ñ Ð³Ð»Ñ‹Ð±Ñ–Ð½Ñ ÑˆÐ»Ñху: «$1» (Ñпроба доÑтупу да вузла, Ñкі знаходзіцца вышÑй карÑннага)',
+ 'pfunc_expr_stack_exhausted' => 'Памылка выразу: ÑÑ‚Ñк перапоўнены',
+ 'pfunc_expr_unexpected_number' => 'Памылка выразу: Ð½ÐµÑ‡Ð°ÐºÐ°Ð½Ð°Ñ Ð»Ñ–Ñ‡Ð±Ð°',
+ 'pfunc_expr_preg_match_failure' => 'Памылка выразу: Ð½ÐµÑ‡Ð°ÐºÐ°Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Памылка выразу: нераÑпазнанае Ñлова «$1»',
+ 'pfunc_expr_unexpected_operator' => 'Памылка выразу: нечаканы апÑратар $1',
+ 'pfunc_expr_missing_operand' => 'Памылка выразу: нÑма апÑранду $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Памылка выразу: Ð½ÐµÑ‡Ð°ÐºÐ°Ð½Ð°Ñ Ð·Ð°ÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‡Ð°Ñ Ð´ÑƒÐ¶ÐºÐ°',
+ 'pfunc_expr_unrecognised_punctuation' => 'Памылка выразу: нераÑпазнаны Ñымбаль пунктуацыі «$1»',
+ 'pfunc_expr_unclosed_bracket' => 'Памылка выразу: Ð½ÐµÐ·Ð°ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð´ÑƒÐ¶ÐºÐ°',
+ 'pfunc_expr_division_by_zero' => 'ДзÑленьне на нуль',
+ 'pfunc_expr_invalid_argument' => 'Памылковы аргумÑнт Ð´Ð»Ñ $1: < -1 ці > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Памылковы аргумÑнт Ð´Ð»Ñ ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Памылка выразу: невÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° ($1)',
+ 'pfunc_expr_not_a_number' => 'У $1: вынік не зьÑўлÑецца лічбай',
+ 'pfunc_string_too_long' => 'Памылка: у радку перавышаны ліміт $1 {{PLURAL:$1|Ñымбаль|Ñымбалі|ÑымбалÑÑž}}',
+);
+
+/** Bulgarian (БългарÑки)
+ * @author DCLXVI
+ * @author Spiritia
+ */
+$messages['bg'] = array(
+ 'pfunc_desc' => 'ПодобрÑване на парÑера Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑки функции',
+ 'pfunc_time_error' => 'Грешка: невалидно време',
+ 'pfunc_time_too_long' => 'Грешка: Твърде много Ð¸Ð·Ð²Ð¸ÐºÐ²Ð°Ð½Ð¸Ñ Ð½Ð° #time',
+ 'pfunc_rel2abs_invalid_depth' => 'Грешка: Ðевалидна дълбочина в път: "$1" (опит за доÑтъп на възел над корена)',
+ 'pfunc_expr_stack_exhausted' => 'Грешка в запиÑа: Стекът е изчерпан',
+ 'pfunc_expr_unexpected_number' => 'Грешка в запиÑа: Ðеочаквано чиÑло',
+ 'pfunc_expr_preg_match_failure' => 'Грешка в израза: Ðеочакван проблем Ñ preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Грешка в запиÑа: Ðеразпозната дума "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Грешка в запиÑа: Ðеочакван оператор $1',
+ 'pfunc_expr_missing_operand' => 'Грешка в запиÑа: ЛипÑващ операнд в $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Грешка в запиÑа: Една затварÑща Ñкоба в повече',
+ 'pfunc_expr_unrecognised_punctuation' => 'Грешка в запиÑа: Ðеразпознат пунктуационен знак "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Грешка в запиÑа: Ðезатворена Ñкоба',
+ 'pfunc_expr_division_by_zero' => 'Деление на нула',
+ 'pfunc_expr_invalid_argument' => 'Ðевалиден аргумент за $1: < -1 или > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ðевалиден аргумент за ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Грешка в запиÑа: Ðеразпозната грешка ($1)',
+ 'pfunc_expr_not_a_number' => 'Ð’ $1: резултатът не е чиÑло',
+ 'pfunc_string_too_long' => 'Грешка: Ðизът превишава лимита от $1 знака',
+);
+
+/** Bengali (বাংলা)
+ * @author Bellayet
+ * @author Zaheen
+ */
+$messages['bn'] = array(
+ 'pfunc_desc' => 'লজিকাল ফাংশন দিয়ে পারà§à¦¸à¦¾à¦°à¦•à§‡ উনà§à¦¨à¦¤ করà§à¦¨',
+ 'pfunc_time_error' => 'তà§à¦°à§à¦Ÿà¦¿: অবৈধ সময়',
+ 'pfunc_time_too_long' => 'তà§à¦°à§à¦Ÿà¦¿: অতà§à¦¯à¦§à¦¿à¦• সংখà§à¦¯à¦• #time কল',
+ 'pfunc_rel2abs_invalid_depth' => 'তà§à¦°à§à¦Ÿà¦¿: পাথে অবৈধ গভীরতা: "$1" (মূল নোডের উপরের à¦à¦•à¦Ÿà¦¿ নোড অà§à¦¯à¦¾à¦•à§à¦¸à§‡à¦¸ করতে চেষà§à¦Ÿà¦¾ করেছিল)',
+ 'pfunc_expr_stack_exhausted' => 'à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨ তà§à¦°à§à¦Ÿà¦¿: সà§à¦Ÿà§à¦¯à¦¾à¦• শেষ হয়ে গেছে',
+ 'pfunc_expr_unexpected_number' => 'à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨ তà§à¦°à§à¦Ÿà¦¿: অযাচিত সংখà§à¦¯à¦¾',
+ 'pfunc_expr_preg_match_failure' => 'à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨ তà§à¦°à§à¦Ÿà¦¿: অযাচিত preg_match বà§à¦¯à¦°à§à¦¥à¦¤à¦¾',
+ 'pfunc_expr_unrecognised_word' => 'à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨ তà§à¦°à§à¦Ÿà¦¿: অপরিচিত শবà§à¦¦ "$1"',
+ 'pfunc_expr_unexpected_operator' => 'à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨ তà§à¦°à§à¦Ÿà¦¿: অযাচিত $1 অপারেটর',
+ 'pfunc_expr_missing_operand' => 'à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨ তà§à¦°à§à¦Ÿà¦¿: $1-à¦à¦° জনà§à¦¯ অপারেনà§à¦¡ নেই।',
+ 'pfunc_expr_unexpected_closing_bracket' => 'à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨ তà§à¦°à§à¦Ÿà¦¿: অযাচিত সমাপà§à¦¤à¦•à¦¾à¦°à§€ বনà§à¦§à¦¨à§€',
+ 'pfunc_expr_unrecognised_punctuation' => 'à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨ তà§à¦°à§à¦Ÿà¦¿: অপরিচিত বিরামচিহà§à¦¨ কà§à¦¯à¦¾à¦°à§‡à¦•à§à¦Ÿà¦¾à¦° "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨ তà§à¦°à§à¦Ÿà¦¿: উনà§à¦®à§à¦•à§à¦¤ বনà§à¦§à¦¨à§€',
+ 'pfunc_expr_division_by_zero' => 'শূনà§à¦¯ দà§à¦¬à¦¾à¦°à¦¾ ভাগ করা হয়েছে',
+ 'pfunc_expr_invalid_argument' => '$1 à¦à¦° জনà§à¦¯ ভà§à¦² শরà§à¦¤: < -1 অথবা > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'ln à¦à¦° জনà§à¦¯ অসিদà§à¦§ শরà§à¦¤: <= 0',
+ 'pfunc_expr_unknown_error' => 'à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨ তà§à¦°à§à¦Ÿà¦¿: অজানা তà§à¦°à§à¦Ÿà¦¿ ($1)',
+ 'pfunc_expr_not_a_number' => '$1: ঠফলাফল কোন সংখà§à¦¯à¦¾ নয়',
+);
+
+/** Breton (Brezhoneg)
+ * @author Fulup
+ */
+$messages['br'] = array(
+ 'pfunc_desc' => "Gwellaat a ra ar parser gant arc'hwelioù poellek",
+ 'pfunc_time_error' => 'Fazi : pad direizh',
+ 'pfunc_time_too_long' => 'Fazi : betek re eo bet galvet #time',
+ 'pfunc_time_too_big' => 'Fazi: #time ne skor nemet bloazioù betek 9999',
+ 'pfunc_rel2abs_invalid_depth' => "Fazi : Donder direizh evit an hent : \"\$1\" (klasket ez eus bet mont d'ul live a-us d'ar c'havlec'h-mamm)",
+ 'pfunc_expr_stack_exhausted' => 'Kemennad faziek : pil riñset',
+ 'pfunc_expr_unexpected_number' => "Kemennad faziek : niver dic'hortoz",
+ 'pfunc_expr_preg_match_failure' => "Kemennad faziek : c'hwitadenn dic'hortoz evit <code>preg_match</code>",
+ 'pfunc_expr_unrecognised_word' => 'Kemennad faziek : Ger dianav "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Kemennad faziek : Oberier $1 dianav',
+ 'pfunc_expr_missing_operand' => 'Kemennad faziek : Dianav eo operand $1',
+ 'pfunc_expr_unexpected_closing_bracket' => "Kemennad faziek : Krommell zehoù dic'hortoz",
+ 'pfunc_expr_unrecognised_punctuation' => 'Kemennad faziek : arouezenn boentadouiñ dianav "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Kemennad faziek : Krommell zigor',
+ 'pfunc_expr_division_by_zero' => 'Rannañ dre mann',
+ 'pfunc_expr_invalid_argument' => 'Talvoudenn direizh evit $1: < -1 pe > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Talvoudenn direizh evit ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Kemennad faziek : Fazi dianav ($1)',
+ 'pfunc_expr_not_a_number' => "E $1: An disoc'h n'eo ket un niver",
+ 'pfunc_string_too_long' => "Fazi : Dreist d'ar vevenn uhelañ a $1 arouezenn eo an neudennad",
+);
+
+/** Bosnian (Bosanski)
+ * @author CERminator
+ * @author Seha
+ */
+$messages['bs'] = array(
+ 'pfunc_desc' => 'Povisi parser sa logiÄnim funkcijama',
+ 'pfunc_time_error' => 'Greška: vrijeme nije valjano',
+ 'pfunc_time_too_long' => 'Greška: previše poziva funkcije #time',
+ 'pfunc_time_too_big' => 'Greška: #time samo podržava godine do 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'GraÅ¡ka: Nevrijedeća dubina u putu: "$1" (pokuÅ¡aj dolaska na nula taÄku iza korijenske nula taÄke)',
+ 'pfunc_expr_stack_exhausted' => 'Greška izraza: Stok potrošen',
+ 'pfunc_expr_unexpected_number' => 'GreÅ¡ka izraza: NeoÄekivani broj',
+ 'pfunc_expr_preg_match_failure' => 'Razvojna greÅ¡ka: NeoÄekivana greÅ¡ka preg-pogotka',
+ 'pfunc_expr_unrecognised_word' => 'GreÅ¡ka izraza: Nepoznata rijeÄ "$1"',
+ 'pfunc_expr_unexpected_operator' => 'GreÅ¡ka izraza: NeoÄekivani $1 operator',
+ 'pfunc_expr_missing_operand' => 'Greška izraza: Nedostaje operator za $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'GreÅ¡ka izraza: NeoÄekivana zagrada zatvaranja',
+ 'pfunc_expr_unrecognised_punctuation' => 'Razvojna greška: Nije prepoznat karakter punktacije "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Greška izraza: Nezatvorena zagrada',
+ 'pfunc_expr_division_by_zero' => 'Dijeljenje s nulom',
+ 'pfunc_expr_invalid_argument' => 'Nevažeći argument za $1: : < -1 ili > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Nevažeći argument za ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Razvojna greška: Nepoznata greška ($1)',
+ 'pfunc_expr_not_a_number' => 'u $1: rezultat nije broj',
+ 'pfunc_string_too_long' => 'Greška: Niz prelazi limit od $1 znakova',
+);
+
+/** Catalan (Català)
+ * @author Jordi Roqué
+ * @author Qllach
+ * @author SMP
+ */
+$messages['ca'] = array(
+ 'pfunc_desc' => 'Millora el processat amb funcions lògiques',
+ 'pfunc_time_error' => 'Error: temps invàlid',
+ 'pfunc_time_too_long' => 'Error: massa crides #time',
+ 'pfunc_rel2abs_invalid_depth' => "Error: Adreça invàlida al directori: «$1» (s'intentava accedir a un node superior de l'arrel)",
+ 'pfunc_expr_stack_exhausted' => "Error de l'expressió: Pila exhaurida",
+ 'pfunc_expr_unexpected_number' => "Error de l'expressió: Nombre inesperat",
+ 'pfunc_expr_preg_match_failure' => "Error de l'expressió: Error de funció no compresa i inesperada",
+ 'pfunc_expr_unrecognised_word' => 'Error de l\'expressió: Paraula no reconeguda "$1"',
+ 'pfunc_expr_unexpected_operator' => "Error de l'expressió: Operador $1 inesperat",
+ 'pfunc_expr_missing_operand' => "Error de l'expressió: Falta l'operand de $1",
+ 'pfunc_expr_unexpected_closing_bracket' => "Error de l'expressió: Parèntesi inesperat",
+ 'pfunc_expr_unrecognised_punctuation' => 'Error de l\'expressió: Signe de puntuació no reconegut "$1"',
+ 'pfunc_expr_unclosed_bracket' => "Error de l'expressió: Parèntesi no tancat",
+ 'pfunc_expr_division_by_zero' => 'Divisió entre zero',
+ 'pfunc_expr_invalid_argument' => 'Valor no vàlid per a $1: < -1 ó > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Valor no vàlid per a ln: <= 0',
+ 'pfunc_expr_unknown_error' => "Error de l'expressió: Desconegut ($1)",
+ 'pfunc_expr_not_a_number' => 'A $1: el resultat no és un nombre',
+ 'pfunc_string_too_long' => 'Error: La cadena és $1 caràcters massa llarga',
+);
+
+/** Chechen (Ðохчийн)
+ * @author Sasan700
+ */
+$messages['ce'] = array(
+ 'pfunc_time_error' => 'Гlалато: хан нийÑа Ñц',
+ 'pfunc_expr_stack_exhausted' => 'Яздарехь гlалат ду: хьаладуьззина татол',
+ 'pfunc_expr_unrecognised_word' => 'Яздарехь гlалат ду: дойзуш доцу дош «$1»',
+);
+
+/** Czech (ÄŒesky)
+ * @author Danny B.
+ * @author Li-sung
+ * @author Matěj Grabovský
+ * @author Mormegil
+ * @author Sp5uhe
+ */
+$messages['cs'] = array(
+ 'pfunc_desc' => 'Rozšíření parseru o logické funkce',
+ 'pfunc_time_error' => 'Chyba: neplatný Äas',
+ 'pfunc_time_too_long' => 'Chyba: příliš mnoho volání #time',
+ 'pfunc_time_too_big' => 'Chyba: #time nepodporuje roky nad 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Chyba: Neplatná hloubka v cestě: "$1" (pokus o přístup do uzlu vyššího než kořen)',
+ 'pfunc_expr_stack_exhausted' => 'Chyba ve výrazu: Zásobník plně obsazen',
+ 'pfunc_expr_unexpected_number' => 'Chyba ve výrazu: OÄekáváno Äíslo',
+ 'pfunc_expr_preg_match_failure' => 'Chyba ve výrazu: NeoÄekávaná chyba funkce preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Chyba ve výrazu: Nerozpoznané slovo ˆ„$1“',
+ 'pfunc_expr_unexpected_operator' => 'Chyba ve výrazu: NeoÄekávaný operátor $1',
+ 'pfunc_expr_missing_operand' => 'Chyba ve výrazu: Chybí operand pro $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Chyba ve výrazu: NeoÄekávaná uzavírací závorka',
+ 'pfunc_expr_unrecognised_punctuation' => 'Chyba ve výrazu: Nerozpoznaný interpunkÄní znak ˆ„$1“',
+ 'pfunc_expr_unclosed_bracket' => 'Chyba ve výrazu: Neuzavřené závorky',
+ 'pfunc_expr_division_by_zero' => 'Dělení nulou',
+ 'pfunc_expr_invalid_argument' => 'Neplatný argument pro $1: < -1 nebo > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Neplatný argument pro ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Chyba ve výrazu: Neznámá chyba ($1)',
+ 'pfunc_expr_not_a_number' => 'V $1: výsledkem není Äíslo',
+ 'pfunc_string_too_long' => 'Chyba: Řetězec je delší než $1 {{PLURAL:$1|znak|znaky|znaků}}, což je limit',
+ 'pfunc-convert-dimensionmismatch' => 'Chyba: Nelze převést mezi jednotkami „$1“ a „$2“.',
+ 'pfunc-convert-unknownunit' => 'Chyba: Neznámá jednotka „$1“.',
+ 'pfunc-convert-unknowndimension' => 'Chyba: Neznámý rozměr „$1“',
+ 'pfunc-convert-invalidcompoundunit' => 'Chyba: Neplatná složená jednotka „$1“.',
+ 'pfunc-convert-nounit' => 'Chyba: Nebyla zadána zdrojová jednotka.',
+ 'pfunc-convert-doublecompoundunit' => 'Chyba: Nelze zpracovat dvojitě složené jednotky, jako je „$1“.',
+ 'pfunc-convert-dimension-length' => 'délka',
+ 'pfunc-convert-dimension-area' => 'plocha',
+ 'pfunc-convert-dimension-volume' => 'objem',
+ 'pfunc-convert-dimension-time' => 'Äas',
+ 'pfunc-convert-dimension-timesquared' => 'Äas²',
+ 'pfunc-convert-dimension-mass' => 'hmotnost',
+ 'pfunc-convert-dimension-speed' => 'rychlost',
+ 'pfunc-convert-dimension-temperature' => 'teplota',
+ 'pfunc-convert-dimension-acceleration' => 'zrychlení',
+ 'pfunc-convert-dimension-force' => 'síla',
+ 'pfunc-convert-dimension-torque' => 'toÄivý moment',
+ 'pfunc-convert-dimension-energy' => 'energie',
+ 'pfunc-convert-dimension-power' => 'výkon',
+ 'pfunc-convert-dimension-pressure' => 'tlak',
+ 'pfunc-convert-dimension-density' => 'hustota',
+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'spotřeba',
+ 'pfunc-convert-prefix-yotta' => 'yotta',
+ 'pfunc-convert-prefix-zetta' => 'zetta',
+ 'pfunc-convert-prefix-exa' => 'exa',
+ 'pfunc-convert-prefix-peta' => 'peta',
+ 'pfunc-convert-prefix-tera' => 'tera',
+ 'pfunc-convert-prefix-giga' => 'giga',
+ 'pfunc-convert-prefix-mega' => 'mega',
+ 'pfunc-convert-prefix-kilo' => 'kilo',
+ 'pfunc-convert-prefix-hecto' => 'hekto',
+ 'pfunc-convert-prefix-deca' => 'deka',
+ 'pfunc-convert-prefix-deci' => 'deci',
+ 'pfunc-convert-prefix-centi' => 'centi',
+ 'pfunc-convert-prefix-milli' => 'mili',
+ 'pfunc-convert-prefix-micro' => 'mikro',
+ 'pfunc-convert-prefix-nano' => 'nano',
+ 'pfunc-convert-prefix-pico' => 'piko',
+ 'pfunc-convert-prefix-femto' => 'femto',
+ 'pfunc-convert-prefix-atto' => 'atto',
+ 'pfunc-convert-prefix-zepto' => 'zepto',
+ 'pfunc-convert-prefix-yocto' => 'yokto',
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2metr|$2metry|$2metrů}}',
+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|míle|míle|mil}}',
+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|stopa|stopy|stop}}',
+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|palec|palce|palců}}',
+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2parsek|$2parseky|$2parseků}}',
+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|astronomická jednotka|astronomické jednotky|astronomických jednotek}}',
+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|kilometr ÄtvereÄní|kilometry ÄtvereÄní|kilometrů ÄtvereÄních}}',
+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hektar|hektary|hektarů}}',
+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|akr|akry|akrů}}',
+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|ÄtvereÄní stopa|ÄtvereÄní stopy|ÄtvereÄních stop}}',
+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|ÄtvereÄní palec|ÄtvereÄní palce|ÄtvereÄních palců}}',
+);
+
+/** Danish (Dansk)
+ * @author Byrial
+ * @author Morten LJ
+ * @author Peter Alberti
+ */
+$messages['da'] = array(
+ 'pfunc_desc' => 'Udvider parser med logiske funktioner',
+ 'pfunc_time_error' => 'Fejl: Ugyldig tid',
+ 'pfunc_time_too_long' => 'Fejl: for mange kald af #time',
+ 'pfunc_time_too_big' => 'Fejl: #time understøtter kun årstal frem til 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Fejl: Ugyldig dybde i sti: "$1" (prøvede at tilgå en knude over rodknuden)',
+ 'pfunc_expr_stack_exhausted' => 'Udtryksfejl: Stak tømt',
+ 'pfunc_expr_unexpected_number' => 'Fejl: Uventet tal',
+ 'pfunc_expr_preg_match_failure' => 'Udtryksfejl: Uventet fejl i preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Udtryksfejl: Uventet ord "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Udtryksfejl: Uventet "$1"-operator',
+ 'pfunc_expr_missing_operand' => 'Udtryksfejl: Manglende operand til $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Udtryksfejl: Uventet lukkende parentes',
+ 'pfunc_expr_unrecognised_punctuation' => 'Udtryksfejl: Uventet tegnsætning-tegn: "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Udtryksfejl: Uafsluttet kantet parantes',
+ 'pfunc_expr_division_by_zero' => 'Division med nul',
+ 'pfunc_expr_invalid_argument' => 'Ugyldigt argument for $1: < -1 eller > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ugyldigt argument for ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Udtryksfejl: Ukendt fejl ($1)',
+ 'pfunc_expr_not_a_number' => 'I $1: Resultatet er ikke et tal',
+ 'pfunc_string_too_long' => 'Fejl: Strengen overskrider grænsen på $1 tegn',
+);
+
+/** German (Deutsch)
+ * @author Kghbln
+ * @author LWChris
+ * @author Metalhead64
+ * @author Raimond Spekking
+ */
+$messages['de'] = array(
+ 'pfunc_desc' => 'Erweitert den Parser um logische Funktionen',
+ 'pfunc_time_error' => 'Fehler: Ungültige Zeitangabe',
+ 'pfunc_time_too_long' => 'Fehler: Zu viele #time-Aufrufe',
+ 'pfunc_time_too_big' => 'Fehler: #time unterstützt nur Jahre bis 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Fehler: Ungültige Pfadtiefe: „$1“ (Zugriff auf einen Knotenpunkt oberhalb des Hauptknotenpunktes ist empfohlen)',
+ 'pfunc_expr_stack_exhausted' => 'Expression-Fehler: Stacküberlauf',
+ 'pfunc_expr_unexpected_number' => 'Expression-Fehler: Unerwartete Zahl',
+ 'pfunc_expr_preg_match_failure' => 'Expression-Fehler: Unerwartete „preg_match“-Fehlfunktion',
+ 'pfunc_expr_unrecognised_word' => 'Expression-Fehler: Unerkanntes Wort „$1“',
+ 'pfunc_expr_unexpected_operator' => 'Expression-Fehler: Unerwarteter Operator <tt>$1</tt>',
+ 'pfunc_expr_missing_operand' => 'Expression-Fehler: Fehlender Operand für <tt>$1</tt>',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Expression-Fehler: Unerwartete schließende eckige Klammer',
+ 'pfunc_expr_unrecognised_punctuation' => 'Expression-Fehler: Unerkanntes Satzzeichen „$1“',
+ 'pfunc_expr_unclosed_bracket' => 'Expression-Fehler: Nicht geschlossene eckige Klammer',
+ 'pfunc_expr_division_by_zero' => 'Division durch Null',
+ 'pfunc_expr_invalid_argument' => 'Ungültiges Argument für $1: < -1 oder > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ungültiges Argument für ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Expression-Fehler: Unbekannter Fehler ($1)',
+ 'pfunc_expr_not_a_number' => 'In $1: Ergebnis ist keine Zahl',
+ 'pfunc_string_too_long' => 'Fehler: Zeichenkette überschreitet Zeichenlimit von $1',
+);
+
+/** Swiss High German (Schweizer Hochdeutsch)
+ * @author MichaelFrey
+ */
+$messages['de-ch'] = array(
+ 'pfunc_expr_unexpected_closing_bracket' => 'Expression-Fehler: Unerwartete schliessende eckige Klammer',
+);
+
+/** Zazaki (Zazaki)
+ * @author Aspar
+ */
+$messages['diq'] = array(
+ 'pfunc_desc' => 'Enhance parser with logical functions',
+ 'pfunc_time_error' => 'xeta: zemano nemeqbul',
+ 'pfunc_time_too_long' => 'xeta:zaf zêd mesajê #timeyi',
+ 'pfunc_rel2abs_invalid_depth' => 'Hata: Yolda geçersiz derinlik: "$1" (kök düğümünün üstünde bir düğüme erişmeye çalıştı)',
+ 'pfunc_expr_stack_exhausted' => 'xetaya ifadeyi: stack qediya',
+ 'pfunc_expr_unexpected_number' => 'xetaya ifadeyi: amaro bêtexmin',
+ 'pfunc_expr_preg_match_failure' => 'xetaya ifadeyi: arızaya preg_matchi yo bêtexmin',
+ 'pfunc_expr_unrecognised_word' => 'xetaya ifadeyi: çekuya "$1"i nêşinasiyeno',
+ 'pfunc_expr_unexpected_operator' => 'xetaya ifadeyi: operatorê $1i yo bêtexmin',
+ 'pfunc_expr_missing_operand' => 'xetaya ifadeyi: qey $1i termo kêm',
+ 'pfunc_expr_unexpected_closing_bracket' => 'xetaya ifadeyi: parantez bıqefelno bêtexmin',
+ 'pfunc_expr_unrecognised_punctuation' => 'xetaya ifadeyi: karakterê noqtakerdışê "$1"i yo ke nêşınasiyeno',
+ 'pfunc_expr_unclosed_bracket' => 'xetaya ifadeyi: parantezo nêqefelnaye',
+ 'pfunc_expr_division_by_zero' => 'pê sıfır teqsim ker',
+ 'pfunc_expr_invalid_argument' => 'Invalid argument for $1: < -1 or > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Invalid argument for ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'xetaya ifadeyi: neticeya ke nêzaniyena ($1)',
+ 'pfunc_expr_not_a_number' => '$1 de: netice yew amar niyo',
+ 'pfunc_string_too_long' => 'xeta: rêze heddê karakteri yo $1i veciyaya',
+);
+
+/** Lower Sorbian (Dolnoserbski)
+ * @author Michawiki
+ */
+$messages['dsb'] = array(
+ 'pfunc_desc' => 'Rozšyrja parser wó logiske funkcije',
+ 'pfunc_time_error' => 'Zmólka: njepłaśiwy cas',
+ 'pfunc_time_too_long' => 'Zmólka: pśewjele zawołanjow #time',
+ 'pfunc_rel2abs_invalid_depth' => 'Zmólka: Njepłaśiwy dłym w sćažce: "$1" (wopyt na suk pśistup měś, kótaryž jo wušej kórjenjowego suka)',
+ 'pfunc_expr_stack_exhausted' => 'Wurazowa zmólka: Stack wupócerany',
+ 'pfunc_expr_unexpected_number' => 'Wurazowa zmólka: Njewócakana licba',
+ 'pfunc_expr_preg_match_failure' => 'Wurazowa zmólka: Njewócakana zmólkata funkcija preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Wurazowa zmólka: Njespóznane słowo "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Wurazowa zmólka: Njewócakany opeator $1',
+ 'pfunc_expr_missing_operand' => 'Wurazowa zmólka: Felujucy operand za $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Wurazowa zmólka: Njewócakana kóńcajuca rožkata spinka',
+ 'pfunc_expr_unrecognised_punctuation' => 'Wurazowa zmólka: Njespóznane interpunkciske znamuško "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Wurazowa zmólka: Žedna kóńcajuca spinka',
+ 'pfunc_expr_division_by_zero' => 'Diwizija pśez nul',
+ 'pfunc_expr_invalid_argument' => 'Njepłaśiwy argument $1: < -1 abo > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Njepłaśiwy argument za ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Wurazowa zmólka: Njeznata zmólka ($1)',
+ 'pfunc_expr_not_a_number' => 'W $1: wuslědk njejo licba',
+ 'pfunc_string_too_long' => 'Zmólka: ZnamjeÅ¡kowy rÄ›d pÅ›ekÄaca limit $1 znamjeÅ¡kow',
+);
+
+/** Greek (Ελληνικά)
+ * @author Consta
+ * @author Dead3y3
+ * @author Omnipaedista
+ * @author ΑπεÏγός
+ */
+$messages['el'] = array(
+ 'pfunc_desc' => 'Βελτιώνει το συντακτικό αναλυτή με λογικές συναÏτήσεις',
+ 'pfunc_time_error' => 'Σφάλμα: άκυÏος χÏόνος',
+ 'pfunc_time_too_long' => 'Σφάλμα: πάÏα πολλές κλήσεις της #time',
+ 'pfunc_rel2abs_invalid_depth' => 'Σφάλμα: ΆκυÏο βάθος στη διαδÏομή: «$1» (έγινε Ï€Ïοσπάθεια για Ï€Ïόσβαση σε έναν κόμβο πάνω από τον Ïιζικό κόμβο)',
+ 'pfunc_expr_stack_exhausted' => 'Σφάλμα έκφÏασης: Η στοίβα εξαντλήθηκε',
+ 'pfunc_expr_unexpected_number' => 'Σφάλμα έκφÏασης: Μη αναμενόμενος αÏιθμός',
+ 'pfunc_expr_preg_match_failure' => 'Σφάλμα έκφÏασης: Μη αναμενόμενη αποτυχία preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Σφάλμα έκφÏασης: Μη αναγνωÏίσιμη λέξη "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Σφάλμα έκφÏασης: Μη αναμενόμενος τελεστής $1',
+ 'pfunc_expr_missing_operand' => 'Σφάλμα έκφÏασης: Λείπει ο τελεστέος για την έκφÏαση $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Σφάλμα έκφÏασης: Μη αναμενόμενη αγκÏλη κλεισίματος',
+ 'pfunc_expr_unrecognised_punctuation' => 'Σφάλμα έκφÏασης: Μη αναγνÏίσμος χαÏακτήÏας στίξης "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Σφάλμα έκφÏασης: ΑγκÏλη χωÏίς κλείσιμο',
+ 'pfunc_expr_division_by_zero' => 'ΔιαίÏεση με το μηδέν',
+ 'pfunc_expr_invalid_argument' => 'ΆκυÏη παÏάμετÏος για το $1: < -1 ή > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'ΆκυÏη παÏάμετÏος για το ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Σφάλμα έκφÏασης: Άγνωστο σφάλμα ($1)',
+ 'pfunc_expr_not_a_number' => 'Στο $1: το αποτέλεσμα δεν είναι αÏιθμός',
+ 'pfunc_string_too_long' => 'Σφάλμα: ο οÏμαθός υπεÏβαίνει $1 το ÏŒÏιο χαÏακτήÏων',
+);
+
+/**
+ * British english
+ * @author Happy-melon
+ */
+$messages['en-gb'] = array(
+ # LENGTH
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2metre|$2metres}}',
+
+ # AREA #
+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|square kilometre|square kilometres}}',
+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|square metre|square metres}}',
+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|square centimetre|square centimetres}}',
+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|square millimetre|square millimetres}}',
+
+ # VOLUME #
+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|cubic metre|cubic metres}}',
+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|cubic centimetre|cubic centimetres}}',
+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|cubic millimetre|cubic millimetres}}',
+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|$2litre|$2litres}}',
+
+ # PRESSURE
+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|millimetre of mercury|millimetres of mercury}}',
+);
+
+/** Esperanto (Esperanto)
+ * @author Yekrats
+ */
+$messages['eo'] = array(
+ 'pfunc_desc' => 'Etendi sintaksan analizilon kun logikaj funkcioj',
+ 'pfunc_time_error' => 'Eraro: malvalida tempo',
+ 'pfunc_time_too_long' => "Eraro: tro da vokoj ''#time''",
+ 'pfunc_rel2abs_invalid_depth' => 'Eraro: Malvalida profundo en vojo: "$1" (provis atingi nodon super la radika nodo)',
+ 'pfunc_expr_stack_exhausted' => 'Esprima eraro: Stako estis malplenigita',
+ 'pfunc_expr_unexpected_number' => 'Esprima eraro: Neatendita numeralo',
+ 'pfunc_expr_preg_match_failure' => 'Esprima eraro: Neatendita preg_match malsukceso',
+ 'pfunc_expr_unrecognised_word' => 'Esprima eraro: Nekonata vorto "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Esprima eraro: Neatendita operacisimbolo $1',
+ 'pfunc_expr_missing_operand' => 'Esprima eraro: Mankas operando por $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Esprima eraro: Neatendita ferma krampo',
+ 'pfunc_expr_unrecognised_punctuation' => 'Esprima eraro: Nekonata interpunkcia simbolo "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Esprima eraro: Malferma krampo',
+ 'pfunc_expr_division_by_zero' => 'Divido per nulo',
+ 'pfunc_expr_invalid_argument' => 'Malvalida argumento por $1: < -1 or > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Malvalida argumento por ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Esprima eraro: Nekonata eraro ($1)',
+ 'pfunc_expr_not_a_number' => 'En $1: rezulto ne estas nombro',
+ 'pfunc_string_too_long' => 'Eraro: Ĉeno preterpasas signo-limon $1',
+);
+
+/** Spanish (Español)
+ * @author Crazymadlover
+ * @author Muro de Aguas
+ * @author Remember the dot
+ * @author Sanbec
+ */
+$messages['es'] = array(
+ 'pfunc_desc' => 'Mejora el analizador lógico con funciones.',
+ 'pfunc_time_error' => 'Error con la expresión: Tiempo no válido',
+ 'pfunc_time_too_long' => 'Error con la expresión: se están utilizando demasiados "#time"',
+ 'pfunc_rel2abs_invalid_depth' => 'Error: Profundidad no válida en la ruta: «$1» (trataste de acceder a un nodo por encima de la raíz)',
+ 'pfunc_expr_stack_exhausted' => 'Error de expresión: Pila agotada',
+ 'pfunc_expr_unexpected_number' => 'Error con la expresión: Número no esperado',
+ 'pfunc_expr_preg_match_failure' => 'Error de expresión: Fracaso preg_match no esperado',
+ 'pfunc_expr_unrecognised_word' => 'Error con la expresión: La palabra "$1" no se reconoce',
+ 'pfunc_expr_unexpected_operator' => 'Error con la expresión: Operador $1 no esperado',
+ 'pfunc_expr_missing_operand' => 'Error con la expresión: Falta un operador para $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Error con la expresión: Paréntesis de cierre no esperado',
+ 'pfunc_expr_unrecognised_punctuation' => 'Error con la expresión: Carácter de puntuación no reconocido "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Error con la expresión: Paréntesis sin cerrar',
+ 'pfunc_expr_division_by_zero' => 'División entre cero',
+ 'pfunc_expr_invalid_argument' => 'Argumento incorrecto para $1: < -1 ó > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argumento incorrecto para ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Error con la expresión: Error desconocido ($1)',
+ 'pfunc_expr_not_a_number' => 'En $1: el resultado no es un número',
+ 'pfunc_string_too_long' => 'Error: la cadena excede el límite de $1 caracteres',
+);
+
+/** Estonian (Eesti)
+ * @author Pikne
+ */
+$messages['et'] = array(
+ 'pfunc_desc' => 'Laiendab parserit loogiliste funktsioonidega.',
+ 'pfunc_expr_division_by_zero' => 'Nulliga jagamine',
+);
+
+/** Basque (Euskara)
+ * @author An13sa
+ * @author Kobazulo
+ */
+$messages['eu'] = array(
+ 'pfunc_time_error' => 'Errorea: baliogabeko ordua',
+ 'pfunc_time_too_long' => 'Errorea: #time dei gehiegi',
+ 'pfunc_time_too_big' => 'Errorea: #time funtzioak 9999 urtera arte funtzionatzen du bakarrik',
+ 'pfunc_rel2abs_invalid_depth' => 'Errorea: Baliogabeko sakonera fitxategi bidean: "$1" (root puntutik gora sartzen saiatu da)',
+ 'pfunc_expr_unexpected_number' => 'Adierazpen errorea: Ustekabeko zenbakia',
+ 'pfunc_expr_unrecognised_word' => 'Adierazpen errorea: Hitz ezezaguna "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Adierazpen errorea: Ustekabeko $1 eragilea',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Adierazpen errorea: Ustekabeko kortxete itxiera',
+ 'pfunc_expr_unrecognised_punctuation' => 'Adierazpen errorea: puntuazio karaktere ezezaguna "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Adierazpen errorea: Itxi gabeko kortxetea',
+ 'pfunc_expr_division_by_zero' => 'Zeroz zatitu',
+ 'pfunc_expr_invalid_argument' => 'Argumentu okerra ondorengoarentzat: $1: < -1 edo > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argumentu okerra ondorengoarentzat: ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Adierazpen errorea: errore ezezaguna ($1)',
+ 'pfunc_expr_not_a_number' => '$1-(e)n: emaitza ez da zenbaki bat',
+ 'pfunc_string_too_long' => 'Errorea: hitzak $1 karaktereko muga gainditzen du',
+);
+
+/** Persian (Ùارسی)
+ * @author Ebraminio
+ * @author Huji
+ * @author Wayiran
+ */
+$messages['fa'] = array(
+ 'pfunc_desc' => 'به تجزیه‌گر، دستورهای منطقی می‌اÙزاید',
+ 'pfunc_time_error' => 'خطا: زمان غیرمجاز',
+ 'pfunc_time_too_long' => 'خطا: Ùراخوانی بیش از حد #time',
+ 'pfunc_time_too_big' => 'خطا: <span style="direction: ltr; unicode-bidi: bidi-override;">#time</span> تا سال Û¹Û¹Û¹Û¹ را Ùقط حمایت می‌کند.',
+ 'pfunc_rel2abs_invalid_depth' => 'خطا: عمق غیر مجاز در نشانی «$1» (تلاش برای دسترسی به یک نشانی Ùراتر از نشانی ریشه)',
+ 'pfunc_expr_stack_exhausted' => 'خطای عبارت: پشته از دست رÙته',
+ 'pfunc_expr_unexpected_number' => 'خطای عبارت: عدد دور از انتظار',
+ 'pfunc_expr_preg_match_failure' => 'خطای عبارت: خطای preg_match دور از انتظار',
+ 'pfunc_expr_unrecognised_word' => 'خطای عبارت: کلمه ناشناخته «$1»',
+ 'pfunc_expr_unexpected_operator' => 'خطای عبارت: عملگر $1 دور از انتظار',
+ 'pfunc_expr_missing_operand' => 'خطای عبارت: عملگر گمشده برای $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'خطای عبارت: پرانتز بسته اضاÙÛŒ',
+ 'pfunc_expr_unrecognised_punctuation' => 'خطای عبارت: نویسه نقطه‌گذاری شناخته نشده «$1»',
+ 'pfunc_expr_unclosed_bracket' => 'خطای عبارت: پرانتز بسته‌نشده',
+ 'pfunc_expr_division_by_zero' => 'تقسیم بر صÙر',
+ 'pfunc_expr_invalid_argument' => 'پارامتر غیر مجاز برای $1: < -۱ یا > ۱',
+ 'pfunc_expr_invalid_argument_ln' => 'پارامتر غیر مجاز برای لگاریتم طبیعی: <= صÙر',
+ 'pfunc_expr_unknown_error' => 'خطای عبارت: خطای ناشناخته ($1)',
+ 'pfunc_expr_not_a_number' => 'در $1: نتیجه عدد نیست',
+ 'pfunc_string_too_long' => 'خطا: رشته از محدودیت نویسه‌ای $1 تجاوز می‌کند',
+);
+
+/** Finnish (Suomi)
+ * @author Agony
+ * @author Cimon Avaro
+ * @author Nike
+ */
+$messages['fi'] = array(
+ 'pfunc_desc' => 'Laajentaa jäsennintä loogisilla funktiolla.',
+ 'pfunc_time_error' => 'Virhe: kelvoton aika',
+ 'pfunc_time_too_long' => 'Virhe: liian monta #time-kutsua',
+ 'pfunc_rel2abs_invalid_depth' => 'Virhe: Virheellinen syvyys polussa: $1 (ei juurisolmun sisällä)',
+ 'pfunc_expr_stack_exhausted' => 'Virhe lausekkeessa: pino loppui',
+ 'pfunc_expr_unexpected_number' => 'Virhe lausekkeessa: odottamaton numero',
+ 'pfunc_expr_preg_match_failure' => 'Virhe lausekkeessa: <tt>preg_match</tt> palautti virheen',
+ 'pfunc_expr_unrecognised_word' => 'Virhe lausekkeessa: tunnistamaton sana â€$1â€',
+ 'pfunc_expr_unexpected_operator' => 'Virhe lausekkeessa: odottamaton $1-operaattori',
+ 'pfunc_expr_missing_operand' => 'Virhe lausekkeessa: operaattorin $1 edellyttämä operandi puuttuu',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Virhe lausekkeessa: odottamaton sulkeva sulkumerkki',
+ 'pfunc_expr_unrecognised_punctuation' => 'Virhe lausekkeessa: tunnistamaton välimerkki â€$1â€',
+ 'pfunc_expr_unclosed_bracket' => 'Virhe ilmauksessa: sulkeva sulkumerkki puuttuu',
+ 'pfunc_expr_division_by_zero' => 'Virhe: Jako nollalla',
+ 'pfunc_expr_invalid_argument' => 'Virheellinen arvo $1: < -1 tai > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Virheellinen arvo funktiolle ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Virhe lausekkeessa: tuntematon virhe ($1)',
+ 'pfunc_expr_not_a_number' => 'Lausekkeessa $1: tulos ei ole luku',
+ 'pfunc_string_too_long' => 'Virhe: Merkkijono ylittää $1 merkin ylärajan',
+);
+
+/** French (Français)
+ * @author Crochet.david
+ * @author Grondin
+ * @author IAlex
+ * @author Sherbrooke
+ * @author Urhixidur
+ * @author Verdy p
+ */
+$messages['fr'] = array(
+ 'pfunc_desc' => 'Améliore le parseur avec des fonctions logiques',
+ 'pfunc_time_error' => 'Erreur : durée invalide.',
+ 'pfunc_time_too_long' => 'Erreur : appels trop nombreux à <code>#time</code>.',
+ 'pfunc_time_too_big' => 'Erreur : #time prend uniquement en charge des années jusqu’à 9999.',
+ 'pfunc_rel2abs_invalid_depth' => 'Erreur : profondeur invalide dans le chemin « $1 » (a essayé d’accéder à un niveau au-dessus du nœud racine).',
+ 'pfunc_expr_stack_exhausted' => 'Erreur d’expression : pile épuisée.',
+ 'pfunc_expr_unexpected_number' => 'Erreur d’expression : nombre inattendu.',
+ 'pfunc_expr_preg_match_failure' => 'Erreur d’expression : échec inattendu de <code>preg_match</code>.',
+ 'pfunc_expr_unrecognised_word' => 'Erreur d’expression : mot « $1 » non reconnu.',
+ 'pfunc_expr_unexpected_operator' => "Erreur d’expression : opérateur '''$1''' inattendu.",
+ 'pfunc_expr_missing_operand' => "Erreur d’expression : opérande manquant pour '''$1'''.",
+ 'pfunc_expr_unexpected_closing_bracket' => 'Erreur d’expression : parenthèse fermante inattendue.',
+ 'pfunc_expr_unrecognised_punctuation' => 'Erreur d’expression : caractère de ponctuation « $1 » non reconnu.',
+ 'pfunc_expr_unclosed_bracket' => 'Erreur d’expression : parenthèse non fermée.',
+ 'pfunc_expr_division_by_zero' => 'Division par zéro.',
+ 'pfunc_expr_invalid_argument' => "Paramètre incorrect pour '''$1''' : < -1 ou > 1.",
+ 'pfunc_expr_invalid_argument_ln' => "Paramètre incorrect pour '''ln''' : ≤ 0.",
+ 'pfunc_expr_unknown_error' => 'Erreur d’expression : erreur inconnue ($1).',
+ 'pfunc_expr_not_a_number' => 'Dans $1 : le résultat n’est pas un nombre.',
+ 'pfunc_string_too_long' => 'Erreur : La chaîne dépasse la limite maximale de $1 caractère{{PLURAL:$1||s}}.',
+ 'pfunc-convert-unknownunit' => 'Erreur : "$1" est une unité inconnue.',
+ 'pfunc-convert-unknowndimension' => 'Erreur : "$1" est une dimension inconnue.',
+ 'pfunc-convert-dimension-length' => 'longueur',
+ 'pfunc-convert-dimension-area' => 'aire',
+ 'pfunc-convert-dimension-volume' => 'volume',
+ 'pfunc-convert-dimension-time' => 'temps',
+ 'pfunc-convert-dimension-timesquared' => 'temps<sup>2</sup>',
+ 'pfunc-convert-dimension-mass' => 'masse',
+ 'pfunc-convert-dimension-speed' => 'vitesse',
+ 'pfunc-convert-dimension-temperature' => 'température',
+ 'pfunc-convert-dimension-acceleration' => 'accélération',
+ 'pfunc-convert-dimension-force' => 'force',
+ 'pfunc-convert-dimension-torque' => 'couple',
+ 'pfunc-convert-dimension-energy' => 'énergie',
+ 'pfunc-convert-dimension-power' => 'puissance',
+ 'pfunc-convert-dimension-pressure' => 'pression',
+ 'pfunc-convert-dimension-density' => 'densité',
+ 'pfunc-convert-prefix-yotta' => 'yotta',
+ 'pfunc-convert-prefix-zetta' => 'zetta',
+ 'pfunc-convert-prefix-exa' => 'exa',
+ 'pfunc-convert-prefix-peta' => 'peta',
+ 'pfunc-convert-prefix-tera' => 'tera',
+ 'pfunc-convert-prefix-giga' => 'giga',
+ 'pfunc-convert-prefix-mega' => 'mega',
+ 'pfunc-convert-prefix-kilo' => 'kilo',
+ 'pfunc-convert-prefix-hecto' => 'hecto',
+ 'pfunc-convert-prefix-deca' => 'deca',
+ 'pfunc-convert-prefix-deci' => 'deci',
+ 'pfunc-convert-prefix-centi' => 'centi',
+ 'pfunc-convert-prefix-milli' => 'milli',
+ 'pfunc-convert-prefix-micro' => 'micro',
+ 'pfunc-convert-prefix-nano' => 'nano',
+ 'pfunc-convert-prefix-pico' => 'pico',
+ 'pfunc-convert-prefix-femto' => 'femto',
+ 'pfunc-convert-prefix-atto' => 'atto',
+ 'pfunc-convert-prefix-zepto' => 'zepto',
+ 'pfunc-convert-prefix-yocto' => 'yocto',
+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|brasse|brasses}}',
+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|pied|pieds}}',
+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|main|mains}}',
+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|pouce|pouces}}',
+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|unité astronomique|unités astronomiques}}',
+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hectare|hectares}}',
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|seconde|secondes}}',
+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|jour|jours}}',
+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|heure|heures}}',
+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minute|minutes}}',
+ 'pfunc-convert-unit-time-second-abbr' => 's',
+ 'pfunc-convert-unit-time-year-abbr' => '$2an',
+ 'pfunc-convert-unit-time-day-abbr' => 'j',
+ 'pfunc-convert-unit-time-hour-abbr' => 'h',
+ 'pfunc-convert-unit-time-minute-abbr' => 'm',
+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|litre|litres}}',
+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|centilitre|centilitres}}',
+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|millilitre|millilitres}}',
+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|boisseau|boisseaux}}',
+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-litre-abbr' => '$2l',
+ 'pfunc-convert-unit-speed-mile-hour' => 'miles par heure',
+ 'pfunc-convert-unit-pressure-bar' => 'bar',
+ 'pfunc-convert-unit-pressure-decibar' => 'decibar',
+ 'pfunc-convert-unit-pressure-millibar' => 'millibar',
+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
+);
+
+/** Franco-Provençal (Arpetan)
+ * @author ChrisPtDe
+ */
+$messages['frp'] = array(
+ 'pfunc_desc' => 'Mèlyore lo parsor avouéc des fonccions logiques.',
+ 'pfunc_time_error' => 'Èrror : temps envalido',
+ 'pfunc_time_too_long' => 'Èrror : trop grant nombro d’apèls a <code>#time</code>',
+ 'pfunc_rel2abs_invalid_depth' => 'Èrror : provondior envalida dens lo chemin « $1 » (at tâchiê d’arrevar a un nivél en-dessus du nuod racena)',
+ 'pfunc_expr_stack_exhausted' => 'Èrror d’èxprèssion : pila èpouesiê',
+ 'pfunc_expr_unexpected_number' => 'Èrror d’èxprèssion : nombro emprèvu',
+ 'pfunc_expr_preg_match_failure' => 'Èrror d’èxprèssion : falyita emprèvua de <code>preg_match</code>',
+ 'pfunc_expr_unrecognised_word' => 'Èrror d’èxprèssion : mot « $1 » pas recognu',
+ 'pfunc_expr_unexpected_operator' => 'Èrror d’èxprèssion : opèrator « $1 » emprèvu',
+ 'pfunc_expr_missing_operand' => 'Èrror d’èxprèssion : opèrando manquent por « $1 »',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Èrror d’èxprèssion : parentèsa cllosenta emprèvua',
+ 'pfunc_expr_unrecognised_punctuation' => 'Èrror d’èxprèssion : caractèro de ponctuacion « $1 » pas recognu',
+ 'pfunc_expr_unclosed_bracket' => 'Èrror d’èxprèssion : parentèsa pas cllôsa',
+ 'pfunc_expr_division_by_zero' => 'Division per zérô',
+ 'pfunc_expr_invalid_argument' => 'Argument fôx por « $1 » : < -1 ou ben > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argument fôx por « ln » : ≤ 0',
+ 'pfunc_expr_unknown_error' => 'Èrror d’èxprèssion : èrror encognua ($1)',
+ 'pfunc_expr_not_a_number' => 'Dens $1 : lo rèsultat est pas un nombro',
+ 'pfunc_string_too_long' => 'Èrror : la chêna dèpâsse la limita d’amont de $1 caractèro{{PLURAL:$1||s}}',
+);
+
+/** Galician (Galego)
+ * @author Alma
+ * @author Elisardojm
+ * @author Toliño
+ * @author Xosé
+ */
+$messages['gl'] = array(
+ 'pfunc_desc' => 'Mellora o analizador con funcións lóxicas',
+ 'pfunc_time_error' => 'Erro: Hora non válida.',
+ 'pfunc_time_too_long' => 'Erro: Demasiadas chamadas #time.',
+ 'pfunc_time_too_big' => 'Erro: #time só permite anos ata o 9999.',
+ 'pfunc_rel2abs_invalid_depth' => 'Erro: Profundidade da ruta non válida: "$1" (intentouse acceder a un nodo por riba do nodo raíz).',
+ 'pfunc_expr_stack_exhausted' => 'Erro de expresión: Pila esgotada.',
+ 'pfunc_expr_unexpected_number' => 'Erro de expresión: Número inesperado.',
+ 'pfunc_expr_preg_match_failure' => 'Erro de expresión: Fallo de preg_match inesperado.',
+ 'pfunc_expr_unrecognised_word' => 'Erro de expresión: Descoñécese a palabra "$1".',
+ 'pfunc_expr_unexpected_operator' => 'Erro de expresión: Operador "$1" inesperado.',
+ 'pfunc_expr_missing_operand' => 'Erro de expresión: Falta un operador para $1.',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Erro de expresión: Corchete de peche inesperado.',
+ 'pfunc_expr_unrecognised_punctuation' => 'Erro de expresión: Descoñécese o signo de puntuación "$1".',
+ 'pfunc_expr_unclosed_bracket' => 'Erro de expresión: Paréntese sen pechar.',
+ 'pfunc_expr_division_by_zero' => 'División por cero.',
+ 'pfunc_expr_invalid_argument' => 'Argumento inválido para $1: < -1 ou > 1.',
+ 'pfunc_expr_invalid_argument_ln' => 'Argumento inválido para ln: <= 0.',
+ 'pfunc_expr_unknown_error' => 'Erro de expresión: Erro descoñecido ($1).',
+ 'pfunc_expr_not_a_number' => 'En $1: O resultado non é un número.',
+ 'pfunc_string_too_long' => 'Erro: A cadea excede o límite de $1 caracteres.',
+ 'pfunc-convert-dimension-length' => 'lonxitude',
+ 'pfunc-convert-dimension-area' => 'área',
+ 'pfunc-convert-dimension-volume' => 'volume',
+ 'pfunc-convert-dimension-time' => 'tempo',
+ 'pfunc-convert-dimension-timesquared' => 'tempo<sup>2</sup>',
+ 'pfunc-convert-dimension-mass' => 'masa',
+ 'pfunc-convert-dimension-speed' => 'velocidade',
+ 'pfunc-convert-dimension-temperature' => 'temperatura',
+ 'pfunc-convert-dimension-acceleration' => 'aceleración',
+ 'pfunc-convert-dimension-force' => 'forza',
+ 'pfunc-convert-dimension-torque' => 'torque',
+ 'pfunc-convert-dimension-energy' => 'enerxía',
+ 'pfunc-convert-dimension-power' => 'potencia',
+ 'pfunc-convert-dimension-pressure' => 'presión',
+ 'pfunc-convert-dimension-density' => 'densidade',
+ 'pfunc-convert-prefix-yotta' => 'yotta',
+ 'pfunc-convert-prefix-zetta' => 'zetta',
+ 'pfunc-convert-prefix-exa' => 'exa',
+ 'pfunc-convert-prefix-peta' => 'peta',
+ 'pfunc-convert-prefix-tera' => 'tera',
+ 'pfunc-convert-prefix-giga' => 'xiga',
+ 'pfunc-convert-prefix-mega' => 'mega',
+ 'pfunc-convert-prefix-kilo' => 'quilo',
+ 'pfunc-convert-prefix-hecto' => 'hecto',
+ 'pfunc-convert-prefix-deca' => 'deca',
+ 'pfunc-convert-prefix-deci' => 'deci',
+ 'pfunc-convert-prefix-centi' => 'centi',
+ 'pfunc-convert-prefix-milli' => 'milli',
+ 'pfunc-convert-prefix-micro' => 'micro',
+ 'pfunc-convert-prefix-nano' => 'nano',
+ 'pfunc-convert-prefix-pico' => 'pico',
+ 'pfunc-convert-prefix-femto' => 'femto',
+ 'pfunc-convert-prefix-atto' => 'atto',
+ 'pfunc-convert-prefix-zepto' => 'zepto',
+ 'pfunc-convert-prefix-yocto' => 'yocto',
+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
+);
+
+/** Ancient Greek (ἈÏχαία ἑλληνικὴ)
+ * @author Omnipaedista
+ */
+$messages['grc'] = array(
+ 'pfunc_expr_division_by_zero' => 'ΔιαίÏεσις διὰ τοῦ μηδενός',
+);
+
+/** Swiss German (Alemannisch)
+ * @author Als-Holder
+ */
+$messages['gsw'] = array(
+ 'pfunc_desc' => 'Erwyteret dr Parser um logischi Funktione',
+ 'pfunc_time_error' => 'Fähler: uugiltigi Zytaagab',
+ 'pfunc_time_too_long' => 'Fähler: z vyyl #time-Ufruef',
+ 'pfunc_time_too_big' => 'Fähler: #time unterstitzt nume Johr bis 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Fähler: uugültigi Tiefi im Pfad: „$1“ (Versuech, uf e Chnotepunkt oberhalb vum Hauptchnotepunkt zuezgryfe)',
+ 'pfunc_expr_stack_exhausted' => 'Expression-Fähler: Stackiberlauf',
+ 'pfunc_expr_unexpected_number' => 'Expression-Fähler: Nit erwarteti Zahl',
+ 'pfunc_expr_preg_match_failure' => 'Expression-Fähler: Nit erwarteti „preg_match“-Fählfunktion',
+ 'pfunc_expr_unrecognised_word' => 'Expression-Fähler: Nit erkannt Wort „$1“',
+ 'pfunc_expr_unexpected_operator' => 'Expression-Fähler: Nit erwartete Operator: <tt>$1</tt>',
+ 'pfunc_expr_missing_operand' => 'Expression-Fähler: Operand fir <tt>$1</tt> fählt',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Expression-Fähler: Nit erwarteti schließendi eckigi Chlammere',
+ 'pfunc_expr_unrecognised_punctuation' => 'Expression-Fähler: Nit erkannt Satzzeiche „$1“',
+ 'pfunc_expr_unclosed_bracket' => 'Expression-Fähler: Nit gschlosseni eckige Chlammere',
+ 'pfunc_expr_division_by_zero' => 'Expression-Fähler: Division dur Null',
+ 'pfunc_expr_invalid_argument' => 'Nit giltig Argument fir $1: < -1 oder > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Nit giltig Argument fir ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Expression-Fähler: Nit bekannte Fehler ($1)',
+ 'pfunc_expr_not_a_number' => 'Expression-Fähler: In $1: Ergebnis isch kei Zahl',
+ 'pfunc_string_too_long' => 'Fähler: d Zeichechette het meh wie di zuelässig Zahl vu $1 Zeiche',
+);
+
+/** Hebrew (עברית)
+ * @author Amire80
+ */
+$messages['he'] = array(
+ 'pfunc_desc' => 'הוספת פונקציות לוגיות למפענח',
+ 'pfunc_time_error' => 'שגי××”: זמן שגוי',
+ 'pfunc_time_too_long' => 'שגי××”: שימוש ב"#זמן" ×¤×¢×ž×™× ×¨×‘×•×ª מדי',
+ 'pfunc_time_too_big' => 'שגי××”: #זמן תומכת רק ×‘×©× ×™× ×¢×“ 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'שגי××”: עומק שגוי בנתיב: "$1" (ניסיון כניסה לצומת מעל צומת השורש)',
+ 'pfunc_expr_stack_exhausted' => 'שגי××” בביטוי: המחסנית מל××”',
+ 'pfunc_expr_unexpected_number' => 'שגי××” בביטוי: מספר בלתי צפוי',
+ 'pfunc_expr_preg_match_failure' => 'שגי××” בביטוי: כישלון בלתי צפוי של הת×מת ביטוי רגולרי',
+ 'pfunc_expr_unrecognised_word' => 'שגי××” בביטוי: מילה בלתי מזוהה, "$1"',
+ 'pfunc_expr_unexpected_operator' => 'שגי××” בביטוי: ×ופרנד $1 בלתי צפוי',
+ 'pfunc_expr_missing_operand' => 'שגי××” בביטוי: חסר ×ופרנד ל־$1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'שגי××” בביטוי: ×¡×•×’×¨×™×™× ×¡×•×’×¨×™× ×‘×œ×ª×™ צפויי×',
+ 'pfunc_expr_unrecognised_punctuation' => 'שגי××” בביטוי: תו פיסוק בלתי מזוהה, "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'שגי××” בביטוי: ×¡×•×’×¨×™×™× ×‘×œ×ª×™ סגורי×',
+ 'pfunc_expr_division_by_zero' => 'חלוקה ב×פס',
+ 'pfunc_expr_invalid_argument' => '×רגומנט בלתי תקין לפונקציה $1: < -1 ×ו > 1',
+ 'pfunc_expr_invalid_argument_ln' => '×רגומנט בלתי תקין לפונקציה ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'שגי××” בביטוי: שגי××” בלתי ידועה ($1)',
+ 'pfunc_expr_not_a_number' => 'התוצ××” של $1 ××™× ×” מספר',
+ 'pfunc_string_too_long' => 'שגי××”: המחרוזת עוברת ×ת גבול ×”×ª×•×•×™× ×”×ž×•×ª×¨, $1',
+ 'pfunc-convert-dimensionmismatch' => 'שגי××”: ×œ× × ×™×ª×Ÿ להמיר בין יחידות של "$1" ושל "$2".',
+ 'pfunc-convert-unknownunit' => 'שגי××”: יחידה ×œ× ×™×“×•×¢×” "$1".',
+ 'pfunc-convert-unknowndimension' => 'שגי××”: ממד ×œ× ×™×“×•×¢ "$1".',
+ 'pfunc-convert-invalidcompoundunit' => 'שגי××”: יחידה מורכבת ×œ× ×™×“×•×¢×” "$1".',
+ 'pfunc-convert-nounit' => 'שגי××”: ×œ× × ×™×ª× ×” יחידה התחלתית.',
+ 'pfunc-convert-doublecompoundunit' => 'שגי××”: ×œ× × ×™×ª×Ÿ לפענח יחידות מורכבות כפולות כמו "$1".',
+ 'pfunc-convert-dimension-length' => '×ורך',
+ 'pfunc-convert-dimension-area' => 'שטח',
+ 'pfunc-convert-dimension-volume' => 'נפח',
+ 'pfunc-convert-dimension-time' => 'זמן',
+ 'pfunc-convert-dimension-timesquared' => 'זמן<sup>2</sup>',
+ 'pfunc-convert-dimension-mass' => 'מסה',
+ 'pfunc-convert-dimension-speed' => 'מהירות',
+ 'pfunc-convert-dimension-temperature' => 'חו×',
+ 'pfunc-convert-dimension-acceleration' => 'ת×וצה',
+ 'pfunc-convert-dimension-force' => 'כוח',
+ 'pfunc-convert-dimension-torque' => 'מומנט הסיבוב',
+ 'pfunc-convert-dimension-energy' => '×נרגיה',
+ 'pfunc-convert-dimension-power' => 'הספק',
+ 'pfunc-convert-dimension-pressure' => 'לחץ',
+ 'pfunc-convert-dimension-density' => 'צפיפות',
+ 'pfunc-convert-prefix-yotta' => 'יוט×',
+ 'pfunc-convert-prefix-zetta' => 'זט×',
+ 'pfunc-convert-prefix-exa' => '×קסה',
+ 'pfunc-convert-prefix-peta' => 'פטה',
+ 'pfunc-convert-prefix-tera' => 'טרה',
+ 'pfunc-convert-prefix-giga' => '×’×™×’×”',
+ 'pfunc-convert-prefix-mega' => 'מגה',
+ 'pfunc-convert-prefix-kilo' => 'קילו',
+ 'pfunc-convert-prefix-hecto' => 'הקטו',
+ 'pfunc-convert-prefix-deca' => 'דקה',
+ 'pfunc-convert-prefix-deci' => 'דצי',
+ 'pfunc-convert-prefix-centi' => 'סנטי',
+ 'pfunc-convert-prefix-milli' => 'מילי',
+ 'pfunc-convert-prefix-micro' => 'מיקרו',
+ 'pfunc-convert-prefix-nano' => 'ננו',
+ 'pfunc-convert-prefix-pico' => 'פיקו',
+ 'pfunc-convert-prefix-femto' => 'פמטו',
+ 'pfunc-convert-prefix-atto' => '×טו',
+ 'pfunc-convert-prefix-zepto' => 'זפטו',
+ 'pfunc-convert-prefix-yocto' => 'יוקטו',
+ 'pfunc-convert-unit-length-furlong-abbr' => 'פרלונג',
+ 'pfunc-convert-unit-length-chain-abbr' => 'שלשלת',
+ 'pfunc-convert-unit-length-rod-abbr' => 'מַטֶּה',
+ 'pfunc-convert-unit-length-fathom-abbr' => 'פ×תו×',
+ 'pfunc-convert-unit-length-yard-abbr' => '×™×רד',
+ 'pfunc-convert-unit-length-foot-abbr' => 'רגל',
+ 'pfunc-convert-unit-length-hand-abbr' => 'כף־יד',
+ 'pfunc-convert-unit-length-inch-abbr' => '×ינץ׳',
+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'מיל ימי',
+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'מיל ימי (×נגלי)',
+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'מיל ימי (×רה״ב לפני 1954)',
+ 'pfunc-convert-unit-length-parsec-abbr' => '$2 פ×רסק',
+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2 שנות ×ור',
+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'יחידה ×סטרונומית',
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'קמ״ר',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'מ״ר',
+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'סמ״ר',
+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'ממ״ר',
+ 'pfunc-convert-unit-area-hectare-abbr' => 'הקט×ר',
+ 'pfunc-convert-unit-area-squaremile-abbr' => 'מיל רבוע',
+ 'pfunc-convert-unit-area-acre-abbr' => '×קר',
+ 'pfunc-convert-unit-area-squareyard-abbr' => '×™×רד רבוע',
+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'רגל רבועה',
+ 'pfunc-convert-unit-area-squareinch-abbr' => '×ינץ׳ רבוע',
+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'מיל ימי רבוע',
+ 'pfunc-convert-unit-area-dunam-abbr' => 'דונ×',
+ 'pfunc-convert-unit-area-tsubo-abbr' => 'צובו',
+ 'pfunc-convert-unit-time-second-abbr' => 'שנייה',
+ 'pfunc-convert-unit-time-day-abbr' => 'יו×',
+ 'pfunc-convert-unit-time-hour-abbr' => 'שעה',
+ 'pfunc-convert-unit-time-minute-abbr' => 'דקה',
+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'מטר מעוקב',
+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'ס״מ מעוקב',
+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'מ״מ מעוקב',
+ 'pfunc-convert-unit-volume-litre-abbr' => '$2 ל׳',
+ 'pfunc-convert-unit-volume-cubicyard-abbr' => '×™×רד מעוקב',
+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'רגל מעוקבת',
+ 'pfunc-convert-unit-volume-cubicinch-abbr' => '×ינץ׳ מעוקב',
+ 'pfunc-convert-unit-volume-barrel-abbr' => 'חבית',
+ 'pfunc-convert-unit-volume-bushel-abbr' => 'בושל',
+ 'pfunc-convert-unit-volume-gallon-abbr' => 'גלון',
+ 'pfunc-convert-unit-volume-quart-abbr' => 'קוו×רטה',
+ 'pfunc-convert-unit-volume-pint-abbr' => 'פיינט',
+ 'pfunc-convert-unit-volume-fluidounce-abbr' => '×ונקייה',
+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'חבית ×מריק×ית',
+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'חבית',
+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'חבית',
+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'גלון ×מריק××™',
+ 'pfunc-convert-unit-volume-usquart-abbr' => 'קוו×רטה ×מריק×ית',
+ 'pfunc-convert-unit-volume-uspint-abbr' => 'פיינט ×מריק××™',
+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => '×ונקייה ×מריק×ית',
+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'חבית ×מריק×ית',
+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'בושל ×מריק××™',
+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'גלון יבש ×מריק××™',
+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'קוו×רטה יבשה ×מריק×ית',
+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'פיינט יבש ×מריק××™',
+ 'pfunc-convert-unit-speed-mile-hour' => 'מיל לשעה',
+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'מיל לשעה',
+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
+ 'pfunc-convert-unit-pressure-bar' => 'בר',
+ 'pfunc-convert-unit-pressure-decibar' => 'דציבר',
+ 'pfunc-convert-unit-pressure-millibar' => 'מיליבר',
+ 'pfunc-convert-unit-pressure-kilobarye' => 'קילובָּרְיֶה',
+ 'pfunc-convert-unit-pressure-barye' => 'בָּרְיֶה',
+ 'pfunc-convert-unit-pressure-bar-abbr' => 'בר',
+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'דציבר',
+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'מיליבר',
+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'קילובָּרְיֶה',
+ 'pfunc-convert-unit-pressure-barye-abbr' => 'בָּרְיֶה',
+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => '×טמ׳',
+ 'pfunc-convert-unit-pressure-torr-abbr' => 'טור',
+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'מ״מ כספית',
+ 'pfunc-convert-unit-pressure-inhg-abbr' => '×ינץ׳ כספית',
+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
+);
+
+/** Hindi (हिनà¥à¤¦à¥€)
+ * @author Kaustubh
+ * @author Shyam
+ */
+$messages['hi'] = array(
+ 'pfunc_desc' => 'लॉजिकल कारà¥à¤¯à¥‹à¤‚का इसà¥à¤¤à¥‡à¤®à¤¾à¤² करके पारà¥à¤¸à¤° बढायें',
+ 'pfunc_time_error' => 'गलती: गलत समय',
+ 'pfunc_time_too_long' => 'गलती: बहà¥à¤¤ सारे #time कॉल',
+ 'pfunc_rel2abs_invalid_depth' => 'गलती: पाथ में गलत गहराई: "$1" (रूट नोडके उपर वाले नोड खोजने की कोशीश की)',
+ 'pfunc_expr_stack_exhausted' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨à¤®à¥‡à¤‚ गलती: सà¥à¤Ÿà¥…क खतम हो गया',
+ 'pfunc_expr_unexpected_number' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨à¤®à¥‡à¤‚ गलती: अनपेकà¥à¤·à¤¿à¤¤ संखà¥à¤¯à¤¾',
+ 'pfunc_expr_preg_match_failure' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ गलती: अनपेकà¥à¤·à¤¿à¤¤ preg_match रदà¥à¤¦à¥€à¤•à¤°à¤£',
+ 'pfunc_expr_unrecognised_word' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ गलती: अनिशà¥à¤šà¤¿à¤¤ शबà¥à¤¦ "$1"',
+ 'pfunc_expr_unexpected_operator' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ गलती: अनपेकà¥à¤·à¤¿à¤¤ $1 ओपरेटर',
+ 'pfunc_expr_missing_operand' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ गलती: $1 का घटक मिला नहीं',
+ 'pfunc_expr_unexpected_closing_bracket' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ गलती: अनपेकà¥à¤·à¤¿à¤¤ समापà¥à¤¤à¤¿ बà¥à¤°à¥ˆà¤•à¥‡à¤Ÿ',
+ 'pfunc_expr_unrecognised_punctuation' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ गलती: अनपेकà¥à¤·à¤¿à¤¤ उदà¥à¤—ार चिनà¥à¤¹ "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ गलती: बà¥à¤°à¥ˆà¤•à¥‡à¤Ÿ बंद नहीं किया',
+ 'pfunc_expr_division_by_zero' => 'शूनà¥à¤¯ से भाग',
+ 'pfunc_expr_invalid_argument' => '$1: < -1 or > 1 के लिठअमानà¥à¤¯ कथन',
+ 'pfunc_expr_invalid_argument_ln' => 'ln: <= 0 के लिठअमानà¥à¤¯ कथन',
+ 'pfunc_expr_unknown_error' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ गलती: अजà¥à¤žà¤¾à¤¤ गलती ($1)',
+ 'pfunc_expr_not_a_number' => '$1 में: रिज़लà¥à¤Ÿ संखà¥à¤¯à¤¾à¤®à¥‡à¤‚ नहीं हैं',
+);
+
+/** Croatian (Hrvatski)
+ * @author Dalibor Bosits
+ * @author Dnik
+ * @author Ex13
+ * @author SpeedyGonsales
+ */
+$messages['hr'] = array(
+ 'pfunc_desc' => 'Mogućnost proÅ¡irivanja parsera logiÄkim funkcijama',
+ 'pfunc_time_error' => 'Greška: oblik vremena nije valjan',
+ 'pfunc_time_too_long' => 'Greška: prevelik broj #time (vremenskih) poziva',
+ 'pfunc_rel2abs_invalid_depth' => 'GreÅ¡ka: Nevaljana dubina putanje: "$1" (pokuÅ¡aj pristupanja Ävoru iznad korijenskog)',
+ 'pfunc_expr_stack_exhausted' => 'Greška u predlošku: prepunjen stog',
+ 'pfunc_expr_unexpected_number' => 'GreÅ¡ka u predloÅ¡ku: NeoÄekivan broj',
+ 'pfunc_expr_preg_match_failure' => 'GreÅ¡ka u predloÅ¡ku: NeoÄekivana preg_match greÅ¡ka',
+ 'pfunc_expr_unrecognised_word' => 'GreÅ¡ka u predloÅ¡ku: Nepoznata rijeÄ "$1"',
+ 'pfunc_expr_unexpected_operator' => 'GreÅ¡ka u predloÅ¡ku: NeoÄekivani operator $1',
+ 'pfunc_expr_missing_operand' => 'Greška u predlošku: Operator $1 nedostaje',
+ 'pfunc_expr_unexpected_closing_bracket' => 'GreÅ¡ka u predloÅ¡ku: NeoÄekivana zatvorena zagrada',
+ 'pfunc_expr_unrecognised_punctuation' => 'Greška u predlošku: Nepoznat interpunkcijski znak "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Greška u predlošku: Nezatvorene zagrade',
+ 'pfunc_expr_division_by_zero' => 'Dijeljenje s nulom',
+ 'pfunc_expr_invalid_argument' => 'Nevaljani argumenti za $1: < -1 ili > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Nevaljani argument za ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Greška u predlošku: Nepoznata greška ($1)',
+ 'pfunc_expr_not_a_number' => 'U $1: rezultat nije broj',
+ 'pfunc_string_too_long' => 'GreÅ¡ka: Niz prelazi ograniÄenje od $1 znakova',
+);
+
+/** Upper Sorbian (Hornjoserbsce)
+ * @author Michawiki
+ */
+$messages['hsb'] = array(
+ 'pfunc_desc' => 'Parser wo logiske funkcije rozšěrić',
+ 'pfunc_time_error' => 'Zmylk: njepÅ‚aćiwe Äasowe podaće',
+ 'pfunc_time_too_long' => 'Zmylk: přewjele zawołanjow #time',
+ 'pfunc_rel2abs_invalid_depth' => 'Zmylk: Njepłaćiwa hłubokosć w pućiku: "$1" (Pospyt, zo by na suk wyše hłowneho suka dohrabnyło)',
+ 'pfunc_expr_stack_exhausted' => 'Wurazowy zmylk: Staplowy skÅ‚ad wuÄerpany',
+ 'pfunc_expr_unexpected_number' => 'Wurazowy zmylk: NjewoÄakowana liÄba',
+ 'pfunc_expr_preg_match_failure' => 'Wurazowy zmylk: NjewoÄakowana zmylna funkcija "preg_match"',
+ 'pfunc_expr_unrecognised_word' => 'Wurazowy zmylk: Njespóznate słowo "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Wurazowy zmylk: NjewoÄakowany operator $1',
+ 'pfunc_expr_missing_operand' => 'Wurazowy zmylk: Falowacy operand za $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Wurazowy zmylk: NjewoÄakowana kónÄna róžkata spinka',
+ 'pfunc_expr_unrecognised_punctuation' => 'Wurazowy zmylk: Njespóznate interpunkciske znamješko "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Wurazowy zmylk: Njewotzamknjena róžkata spinka',
+ 'pfunc_expr_division_by_zero' => 'Diwizija přez nulu',
+ 'pfunc_expr_invalid_argument' => 'Njepłaćiwy argument za $1: < -1 abo > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Njepłaćiwy argument za ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Wurazowy zmylk: Njeznaty zmylk ($1)',
+ 'pfunc_expr_not_a_number' => 'W $1: WuslÄ›dk liÄba njeje',
+ 'pfunc_string_too_long' => 'Zmylk: ZnamjeÅ¡kowy slÄ›d pÅ™ekroÄuje limit $1 znamjeÅ¡kow',
+);
+
+/** Hungarian (Magyar)
+ * @author Dani
+ */
+$messages['hu'] = array(
+ 'pfunc_desc' => 'Az értelmező kiegészítése logikai funkciókkal',
+ 'pfunc_time_error' => 'Hiba: érvénytelen idő',
+ 'pfunc_time_too_long' => 'Hiba: a #time túl sokszor lett meghívva',
+ 'pfunc_time_too_big' => 'Hiba: a #time csak 9999-ig támogatja az éveket',
+ 'pfunc_rel2abs_invalid_depth' => 'Hiba: nem megfelelő a mélység az elérési útban: „$1†(egy olyan csomópontot akartál elérni, amely a gyökércsomópont felett van)',
+ 'pfunc_expr_stack_exhausted' => 'Hiba a kifejezésben: a verem kiürült',
+ 'pfunc_expr_unexpected_number' => 'Hiba a kifejezésben: nem várt szám',
+ 'pfunc_expr_preg_match_failure' => 'Hiba a kifejezésben: a preg_match váratlanul hibát jelzett',
+ 'pfunc_expr_unrecognised_word' => 'Hiba a kifejezésben: ismeretlen „$1†szó',
+ 'pfunc_expr_unexpected_operator' => 'Hiba a kifejezésben: nem várt $1 operátor',
+ 'pfunc_expr_missing_operand' => 'Hiba a kifejezésben: $1 egyik operandusa hiányzik',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Hiba a kifejezésben: nem várt zárójel',
+ 'pfunc_expr_unrecognised_punctuation' => 'Hiba a kifejezésben: ismeretlen „$1†központozó karakter',
+ 'pfunc_expr_unclosed_bracket' => 'Hiba a kifejezésben: lezáratlan zárójel',
+ 'pfunc_expr_division_by_zero' => 'Nullával való osztás',
+ 'pfunc_expr_invalid_argument' => '$1 érvénytelen paramétert kapott: < -1 vagy > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Az ln érvénytelen paramétert kapott: <= 0',
+ 'pfunc_expr_unknown_error' => 'Hiba a kifejezésben: ismeretlen hiba ($1)',
+ 'pfunc_expr_not_a_number' => '$1: az eredmény nem szám',
+ 'pfunc_string_too_long' => 'Hiba: a sztring túllépte a(z) $1 karakteres határt',
+);
+
+/** Interlingua (Interlingua)
+ * @author McDutchie
+ */
+$messages['ia'] = array(
+ 'pfunc_desc' => 'Meliorar le analysator syntactic con functiones logic',
+ 'pfunc_time_error' => 'Error: tempore invalide',
+ 'pfunc_time_too_long' => 'Error: troppo de appellos a #time',
+ 'pfunc_time_too_big' => 'Error: #time supporta solmente annos usque a 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Error: Profunditate invalide in cammino: "$1" (essayava acceder a un nodo superior al radice)',
+ 'pfunc_expr_stack_exhausted' => 'Error in expression: Pila exhaurite',
+ 'pfunc_expr_unexpected_number' => 'Error in expression: Numero non expectate',
+ 'pfunc_expr_preg_match_failure' => 'Error in expression: Fallimento non expectate in preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Error in expression: Parola "$1" non recognoscite',
+ 'pfunc_expr_unexpected_operator' => 'Error in expression: Operator $1 non expectate',
+ 'pfunc_expr_missing_operand' => 'Error in expression: Manca un operando pro $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Error in expression: Accollada clause non expectate',
+ 'pfunc_expr_unrecognised_punctuation' => 'Error in expression: Character de punctuation "$1" non recognoscite',
+ 'pfunc_expr_unclosed_bracket' => 'Error in expression: Accollada non claudite',
+ 'pfunc_expr_division_by_zero' => 'Division per zero',
+ 'pfunc_expr_invalid_argument' => 'Argumento invalide pro $1: < -1 o > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argumento invalide pro ln: ≤ 0',
+ 'pfunc_expr_unknown_error' => 'Error de expression: Error incognite ($1)',
+ 'pfunc_expr_not_a_number' => 'In $1: le resultato non es un numero',
+ 'pfunc_string_too_long' => 'Error: Le catena excede le limite de $1 {{PLURAL:$1|character|characteres}}',
+ 'pfunc-convert-dimensionmismatch' => 'Error: Impossibile converter inter unitates de "$1" e "$2".',
+ 'pfunc-convert-unknownunit' => 'Error: Unitate "$1" incognite.',
+ 'pfunc-convert-unknowndimension' => 'Error: Dimension "$1" incognite.',
+ 'pfunc-convert-invalidcompoundunit' => 'Error: Unitate composite "$1" invalide.',
+ 'pfunc-convert-nounit' => 'Error: Nulle unitate de origine specificate.',
+ 'pfunc-convert-doublecompoundunit' => 'Error: Non pote processar unitates composite duplice como "$1".',
+ 'pfunc-convert-dimension-length' => 'longitude',
+ 'pfunc-convert-dimension-area' => 'area',
+ 'pfunc-convert-dimension-volume' => 'volumine',
+ 'pfunc-convert-dimension-time' => 'tempore',
+ 'pfunc-convert-dimension-timesquared' => 'tempore<sup>2</sup>',
+ 'pfunc-convert-dimension-mass' => 'massa',
+ 'pfunc-convert-dimension-speed' => 'velocitate',
+ 'pfunc-convert-dimension-temperature' => 'temperatura',
+ 'pfunc-convert-dimension-acceleration' => 'acceleration',
+ 'pfunc-convert-dimension-force' => 'fortia',
+ 'pfunc-convert-dimension-torque' => 'torsion',
+ 'pfunc-convert-dimension-energy' => 'energia',
+ 'pfunc-convert-dimension-power' => 'potentia',
+ 'pfunc-convert-dimension-pressure' => 'pression',
+ 'pfunc-convert-dimension-density' => 'densitate',
+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'efficientiaenergeticpositive',
+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'efficientiaenergeticnegative',
+ 'pfunc-convert-prefix-yotta' => 'yotta',
+ 'pfunc-convert-prefix-zetta' => 'zetta',
+ 'pfunc-convert-prefix-exa' => 'exa',
+ 'pfunc-convert-prefix-peta' => 'peta',
+ 'pfunc-convert-prefix-tera' => 'tera',
+ 'pfunc-convert-prefix-giga' => 'giga',
+ 'pfunc-convert-prefix-mega' => 'mega',
+ 'pfunc-convert-prefix-kilo' => 'kilo',
+ 'pfunc-convert-prefix-hecto' => 'hecto',
+ 'pfunc-convert-prefix-deca' => 'deca',
+ 'pfunc-convert-prefix-deci' => 'deci',
+ 'pfunc-convert-prefix-centi' => 'centi',
+ 'pfunc-convert-prefix-milli' => 'milli',
+ 'pfunc-convert-prefix-micro' => 'micro',
+ 'pfunc-convert-prefix-nano' => 'nano',
+ 'pfunc-convert-prefix-pico' => 'pico',
+ 'pfunc-convert-prefix-femto' => 'femto',
+ 'pfunc-convert-prefix-atto' => 'atto',
+ 'pfunc-convert-prefix-zepto' => 'zepto',
+ 'pfunc-convert-prefix-yocto' => 'yocto',
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2metro|$2metros}}',
+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|ångström|ångströmes}}',
+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|millia|millias}}',
+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|furlong|furlongs}}',
+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|catena|catenas}}',
+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|pertica|perticas}}',
+);
+
+/** Indonesian (Bahasa Indonesia)
+ * @author IvanLanin
+ * @author Meursault2004
+ * @author Rex
+ */
+$messages['id'] = array(
+ 'pfunc_desc' => 'Mengembangkan parser dengan fungsi logis',
+ 'pfunc_time_error' => 'Kesalahan: waktu tidak valid',
+ 'pfunc_time_too_long' => 'Kesalahan: Pemanggilan #time terlalu banyak',
+ 'pfunc_time_too_big' => 'Galat: #time hanya mendukung tahun hingga 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Kesalahan: Kedalaman path tidak valid: "$1" (mencoba mengakses simpul di atas simpul akar)',
+ 'pfunc_expr_stack_exhausted' => 'Kesalahan ekspresi: Stack habis',
+ 'pfunc_expr_unexpected_number' => 'Kesalahan ekspresi: Angka yang tak terduga',
+ 'pfunc_expr_preg_match_failure' => 'Kesalahan ekspresi: Kegagalan preg_match tak terduga',
+ 'pfunc_expr_unrecognised_word' => 'Kesalahan ekspresi: Kata "$1" tak dikenal',
+ 'pfunc_expr_unexpected_operator' => 'Kesalahan ekspresi: Operator $1 tak terduga',
+ 'pfunc_expr_missing_operand' => 'Kesalahan ekspresi: Operand tak ditemukan untuk $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Kesalahan ekspresi: Kurung tutup tak terduga',
+ 'pfunc_expr_unrecognised_punctuation' => 'Kesalahan ekspresi: Karakter tanda baca "$1" tak dikenali',
+ 'pfunc_expr_unclosed_bracket' => 'Kesalahan ekspresi: Kurung tanpa tutup',
+ 'pfunc_expr_division_by_zero' => 'Pembagian oleh nol',
+ 'pfunc_expr_invalid_argument' => 'Argumen tidak berlaku untuk $1: < -1 or > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argumen tidak berlaku untuk ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Kesalahan ekspresi: Kesalahan tak dikenal ($1)',
+ 'pfunc_expr_not_a_number' => 'Pada $1: hasilnya bukan angka',
+ 'pfunc_string_too_long' => 'Kesalahan: String melebihi limit $1 karakter',
+);
+
+/** Ido (Ido)
+ * @author Malafaya
+ */
+$messages['io'] = array(
+ 'pfunc_time_error' => 'Eroro: ne-valida tempo',
+ 'pfunc_expr_division_by_zero' => 'Divido per zero',
+);
+
+/** Italian (Italiano)
+ * @author Beta16
+ * @author BrokenArrow
+ * @author Darth Kule
+ * @author Pietrodn
+ */
+$messages['it'] = array(
+ 'pfunc_desc' => 'Aggiunge al parser una serie di funzioni logiche',
+ 'pfunc_time_error' => 'Errore: orario non valido',
+ 'pfunc_time_too_long' => 'Errore: troppe chiamate a #time',
+ 'pfunc_time_too_big' => "Errore: #time supporta solo fino all'anno 9999",
+ 'pfunc_rel2abs_invalid_depth' => 'Errore: profondità non valida nel percorso "$1" (si è tentato di accedere a un nodo superiore alla radice)',
+ 'pfunc_expr_stack_exhausted' => "Errore nell'espressione: stack esaurito",
+ 'pfunc_expr_unexpected_number' => "Errore nell'espressione: numero inatteso",
+ 'pfunc_expr_preg_match_failure' => "Errore nell'espressione: errore inatteso in preg_match",
+ 'pfunc_expr_unrecognised_word' => 'Errore nell\'espressione: parola "$1" non riconosciuta',
+ 'pfunc_expr_unexpected_operator' => "Errore nell'espressione: operatore $1 inatteso",
+ 'pfunc_expr_missing_operand' => "Errore nell'espressione: operando mancante per $1",
+ 'pfunc_expr_unexpected_closing_bracket' => "Errore nell'espressione: parentesi chiusa inattesa",
+ 'pfunc_expr_unrecognised_punctuation' => 'Errore nell\'espressione: carattere di punteggiatura "$1" non riconosciuto',
+ 'pfunc_expr_unclosed_bracket' => "Errore nell'espressione: parentesi non chiusa",
+ 'pfunc_expr_division_by_zero' => 'Divisione per zero',
+ 'pfunc_expr_invalid_argument' => 'Argomento non valido per $1: < -1 o > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argomento non valido per ln: <= 0',
+ 'pfunc_expr_unknown_error' => "Errore nell'espressione: errore sconosciuto ($1)",
+ 'pfunc_expr_not_a_number' => 'In $1: il risultato non è un numero',
+ 'pfunc_string_too_long' => 'Errore: la stringa supera il limite di $1 {{PLURAL:$1|carattere|caratteri}}',
+);
+
+/** Japanese (日本語)
+ * @author Aotake
+ * @author Fryed-peach
+ * @author JtFuruhata
+ * @author Ohgi
+ * @author é’å­å®ˆæ­Œ
+ */
+$messages['ja'] = array(
+ 'pfunc_desc' => 'パーサーã«è«–ç†é–¢æ•°ã‚’追加ã—ã¦æ‹¡å¼µã™ã‚‹',
+ 'pfunc_time_error' => 'エラー: 時刻ãŒä¸æ­£ã§ã™',
+ 'pfunc_time_too_long' => 'エラー: #time 呼ã³å‡ºã—ãŒå¤šã™ãŽã¾ã™',
+ 'pfunc_time_too_big' => 'エラー: #timeã¯æœ€å¤§ã§9999å¹´ã¾ã§ã§ã™ã€‚',
+ 'pfunc_rel2abs_invalid_depth' => 'エラー: パス "$1" ã®éšŽå±¤ãŒä¸æ­£ã§ã™(ルート階層ã‹ã‚‰ã®ã‚¢ã‚¯ã‚»ã‚¹ã‚’ãŠè©¦ã—ãã ã•ã„)',
+ 'pfunc_expr_stack_exhausted' => '構文エラー: スタックãŒç©ºã§ã™',
+ 'pfunc_expr_unexpected_number' => '構文エラー: 予期ã›ã¬æ•°å­—ã§ã™',
+ 'pfunc_expr_preg_match_failure' => '構文エラー: 予期ã›ã¬å½¢ã§ preg_match ã«å¤±æ•—ã—ã¾ã—ãŸ',
+ 'pfunc_expr_unrecognised_word' => '構文エラー: "$1" ã¯èªè­˜ã§ãã¾ã›ã‚“',
+ 'pfunc_expr_unexpected_operator' => '構文エラー: 予期ã›ã¬æ¼”ç®—å­ $1 ãŒã‚ã‚Šã¾ã™',
+ 'pfunc_expr_missing_operand' => '構文エラー: $1 ã®æ¼”算対象ãŒã‚ã‚Šã¾ã›ã‚“',
+ 'pfunc_expr_unexpected_closing_bracket' => '構文エラー: 予期ã›ã¬é–‰ã˜æ‹¬å¼§ã§ã™',
+ 'pfunc_expr_unrecognised_punctuation' => '構文エラー: èªè­˜ã§ããªã„区切り文字 "$1" ãŒã‚ã‚Šã¾ã™',
+ 'pfunc_expr_unclosed_bracket' => '構文エラー: 括弧ãŒé–‰ã˜ã‚‰ã‚Œã¦ã„ã¾ã›ã‚“',
+ 'pfunc_expr_division_by_zero' => '0ã§é™¤ç®—ã—ã¾ã—ãŸ',
+ 'pfunc_expr_invalid_argument' => '$1ã®å¼•æ•°ãŒç„¡åŠ¹ã§ã™: < -1 ã¾ãŸã¯ > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'ln ã®å¼•æ•°ãŒç„¡åŠ¹ã§ã™: <= 0',
+ 'pfunc_expr_unknown_error' => '構文エラー: 予期ã›ã¬ã‚¨ãƒ©ãƒ¼($1)',
+ 'pfunc_expr_not_a_number' => '$1: çµæžœãŒæ•°å­—ã§ã¯ã‚ã‚Šã¾ã›ã‚“',
+ 'pfunc_string_too_long' => 'エラー: 文字列ãŒæ–‡å­—æ•°åˆ¶é™ $1 を超ãˆã¾ã—ãŸ',
+);
+
+/** Javanese (Basa Jawa)
+ * @author Meursault2004
+ */
+$messages['jv'] = array(
+ 'pfunc_desc' => 'Kembangna parser mawa fungsi logis',
+ 'pfunc_time_error' => 'Kaluputan: wektu ora absah',
+ 'pfunc_time_too_long' => 'Kaluputan: Olèhé nyeluk #time kakèhan',
+ 'pfunc_rel2abs_invalid_depth' => 'Kaluputan: Kajeroané path ora absah: "$1" (nyoba ngakses simpul sadhuwuring simpul oyot)',
+ 'pfunc_expr_stack_exhausted' => 'Kaluputan èksprèsi: Stack entèk',
+ 'pfunc_expr_unexpected_number' => 'Kaluputan èksprèsi: Angka ora kaduga',
+ 'pfunc_expr_preg_match_failure' => 'Kaluputan èksprèsi: Kaluputan preg_match sing ora kaduga',
+ 'pfunc_expr_unrecognised_word' => 'Kaluputan èksprèsi: Tembung "$1" ora ditepungi',
+ 'pfunc_expr_unexpected_operator' => 'Kaluputan èksprèsi: Operator $1 ora kaduga',
+ 'pfunc_expr_missing_operand' => 'Kaluputan èksprèsi: Operand ora ditemokaké kanggo $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Kaluputan èksprèsi: Kurung tutup ora kaduga',
+ 'pfunc_expr_unrecognised_punctuation' => 'Kaluputan èksprèsi: Karakter tandha wacan "$1" ora ditepungi',
+ 'pfunc_expr_unclosed_bracket' => 'Kaluputan èksprèsi: Kurung tanpa tutup',
+ 'pfunc_expr_division_by_zero' => 'Dipara karo das (nol)',
+ 'pfunc_expr_invalid_argument' => 'Argumèn ora absah kanggo $1: < -1 utawa > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argumèn ora absah kanggo ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Kaluputan èksprèsi: Kaluputan ora ditepungi ($1)',
+ 'pfunc_expr_not_a_number' => 'Ing $1: pituwasé dudu angka',
+);
+
+/** Georgian (ქáƒáƒ áƒ—ული)
+ * @author BRUTE
+ * @author Dawid Deutschland
+ */
+$messages['ka'] = array(
+ 'pfunc_time_error' => 'შეცდáƒáƒ›áƒ: áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ დრáƒ',
+ 'pfunc_expr_division_by_zero' => 'გáƒáƒ§áƒáƒ¤áƒ ნულით',
+ 'pfunc_expr_invalid_argument' => 'მცდáƒáƒ áƒ˜ áƒáƒ áƒ’უმენტი $1: < -1 áƒáƒœ > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'მცდáƒáƒ áƒ˜ áƒáƒ áƒ’უმენტი ln: <= 0',
+ 'pfunc_expr_not_a_number' => '$1: შედექში ციფრი áƒáƒ áƒáƒ',
+ 'pfunc_string_too_long' => 'შეცდáƒáƒ›áƒ: სტრიქáƒáƒœáƒ˜áƒ¡ ზáƒáƒ›áƒ áƒáƒ¦áƒ”მáƒáƒ¢áƒ”ბრ$1 სიმბáƒáƒšáƒáƒ¡ ლიმიტს',
+);
+
+/** Kazakh (Arabic script) (‫قازاقشا (تٴوتە)‬) */
+$messages['kk-arab'] = array(
+ 'pfunc_time_error' => 'قاتە: جارامسىز ۋاقىت',
+ 'pfunc_time_too_long' => 'قاتە: #time شاقىرۋى تىم كوپ',
+ 'pfunc_rel2abs_invalid_depth' => 'قاتە: مىنا جولدىڭ جارامسىز تەرەندىگى «$1» (تامىر ٴتۇيىننىڭ ۇستىندەگى تۇيىنگە قاتىناۋ تالابى)',
+ 'pfunc_expr_stack_exhausted' => 'ايتىلىم قاتەسى: ستەك سارقىلدى',
+ 'pfunc_expr_unexpected_number' => 'ايتىلىم قاتەسى: كۇتىلمەگەن سان',
+ 'pfunc_expr_preg_match_failure' => 'ايتىلىم قاتەسى: كۇتىلمەگەن preg_match ساتسىزدىگى',
+ 'pfunc_expr_unrecognised_word' => 'ايتىلىم قاتەسى: تانىلماعان ٴسوز «$1»',
+ 'pfunc_expr_unexpected_operator' => 'ايتىلىم قاتەسى: كۇتىلمەگەن وپەراتور $1',
+ 'pfunc_expr_missing_operand' => 'ايتىلىم قاتەسى: $1 ٴۇشىن جوعالعان وپەراند',
+ 'pfunc_expr_unexpected_closing_bracket' => 'ايتىلىم قاتەسى: كۇتىلمەگەن جاباتىن جاقشا',
+ 'pfunc_expr_unrecognised_punctuation' => 'ايتىلىم قاتەسى: تانىلماعان تىنىس بەلگىسى «$1»',
+ 'pfunc_expr_unclosed_bracket' => 'ايتىلىم قاتەسى: جابىلماعان جاقشا',
+ 'pfunc_expr_division_by_zero' => 'نولگە ٴبولىنۋى',
+ 'pfunc_expr_unknown_error' => 'ايتىلىم قاتەسى: بەلگىسىز قاتە ($1)',
+ 'pfunc_expr_not_a_number' => '$1 دەگەندە: ناتىيجە سان ەمەس',
+);
+
+/** Kazakh (Cyrillic) (Қазақша (Cyrillic)) */
+$messages['kk-cyrl'] = array(
+ 'pfunc_time_error' => 'Қате: жарамÑыз уақыт',
+ 'pfunc_time_too_long' => 'Қате: #time шақыруы тым көп',
+ 'pfunc_rel2abs_invalid_depth' => 'Қате: Мына жолдың жарамÑыз терендігі «$1» (тамыр түйіннің Ò¯Ñтіндегі түйінге қатынау талабы)',
+ 'pfunc_expr_stack_exhausted' => 'Ðйтылым қатеÑÑ–: Стек Ñарқылды',
+ 'pfunc_expr_unexpected_number' => 'Ðйтылым қатеÑÑ–: Күтілмеген Ñан',
+ 'pfunc_expr_preg_match_failure' => 'Ðйтылым қатеÑÑ–: Күтілмеген preg_match ÑәтÑіздігі',
+ 'pfunc_expr_unrecognised_word' => 'Ðйтылым қатеÑÑ–: Танылмаған Ñөз «$1»',
+ 'pfunc_expr_unexpected_operator' => 'Ðйтылым қатеÑÑ–: Күтілмеген оператор $1',
+ 'pfunc_expr_missing_operand' => 'Ðйтылым қатеÑÑ–: $1 үшін жоғалған операнд',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Ðйтылым қатеÑÑ–: Күтілмеген жабатын жақша',
+ 'pfunc_expr_unrecognised_punctuation' => 'Ðйтылым қатеÑÑ–: Танылмаған Ñ‚Ñ‹Ð½Ñ‹Ñ Ð±ÐµÐ»Ð³Ñ–ÑÑ– «$1»',
+ 'pfunc_expr_unclosed_bracket' => 'Ðйтылым қатеÑÑ–: Жабылмаған жақша',
+ 'pfunc_expr_division_by_zero' => 'Ðөлге бөлінуі',
+ 'pfunc_expr_unknown_error' => 'Ðйтылым қатеÑÑ–: БелгіÑіз қате ($1)',
+ 'pfunc_expr_not_a_number' => '$1 дегенде: нәтиже Ñан емеÑ',
+);
+
+/** Kazakh (Latin) (Қазақша (Latin)) */
+$messages['kk-latn'] = array(
+ 'pfunc_time_error' => 'Qate: jaramsız waqıt',
+ 'pfunc_time_too_long' => 'Qate: #time şaqırwı tım köp',
+ 'pfunc_rel2abs_invalid_depth' => 'Qate: Mına joldıñ jaramsız terendigi «$1» (tamır tüýinniñ üstindegi tüýinge qatınaw talabı)',
+ 'pfunc_expr_stack_exhausted' => 'Aýtılım qatesi: Stek sarqıldı',
+ 'pfunc_expr_unexpected_number' => 'Aýtılım qatesi: Kütilmegen san',
+ 'pfunc_expr_preg_match_failure' => 'Aýtılım qatesi: Kütilmegen preg_match sätsizdigi',
+ 'pfunc_expr_unrecognised_word' => 'Aýtılım qatesi: Tanılmağan söz «$1»',
+ 'pfunc_expr_unexpected_operator' => 'Aýtılım qatesi: Kütilmegen operator $1',
+ 'pfunc_expr_missing_operand' => 'Aýtılım qatesi: $1 üşin joğalğan operand',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Aýtılım qatesi: Kütilmegen jabatın jaqşa',
+ 'pfunc_expr_unrecognised_punctuation' => 'Aýtılım qatesi: Tanılmağan tınıs belgisi «$1»',
+ 'pfunc_expr_unclosed_bracket' => 'Aýtılım qatesi: Jabılmağan jaqşa',
+ 'pfunc_expr_division_by_zero' => 'Nölge bölinwi',
+ 'pfunc_expr_unknown_error' => 'Aýtılım qatesi: Belgisiz qate ($1)',
+ 'pfunc_expr_not_a_number' => '$1 degende: nätïje san emes',
+);
+
+/** Khmer (ភាសាážáŸ’មែរ)
+ * @author Lovekhmer
+ * @author Thearith
+ * @author គីមស៊្រុន
+ */
+$messages['km'] = array(
+ 'pfunc_time_error' => 'កំហុស៖ áž–áŸáž›ážœáŸáž›áž¶áž˜áž·áž“ážáŸ’រឹមážáŸ’រូវ',
+ 'pfunc_expr_division_by_zero' => 'ចែកនឹងសូន្យ',
+ 'pfunc_expr_not_a_number' => 'ក្នុង $1: លទ្ធផល​មិន​មែន​ជា​លáŸážâ€‹áž‘áŸ',
+);
+
+/** Korean (한국어)
+ * @author Klutzy
+ * @author Kwj2772
+ * @author ToePeu
+ * @author Yknok29
+ */
+$messages['ko'] = array(
+ 'pfunc_desc' => 'íŒŒì„œì— ë…¼ë¦¬ 함수를 추가',
+ 'pfunc_time_error' => '오류: ì‹œê°„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤.',
+ 'pfunc_time_too_long' => '오류: #timeì„ ë„ˆë¬´ ë§Žì´ ì¼ìŠµë‹ˆë‹¤.',
+ 'pfunc_time_too_big' => '오류: #time 함수는 9999ë…„ê¹Œì§€ë§Œì„ ì§€ì›í•©ë‹ˆë‹¤.',
+ 'pfunc_rel2abs_invalid_depth' => '오류: 경로 구조가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤: "$1" (루트 노드 ìœ„ì˜ ë…¸ë“œì— ì ‘ì†ì„ ì‹œë„했습니다)',
+ 'pfunc_expr_stack_exhausted' => '표현 오류: 스íƒì´ 비어 있습니다.',
+ 'pfunc_expr_unexpected_number' => 'í‘œí˜„ì‹ ì˜¤ë¥˜: 예ìƒì¹˜ 못한 ê°’',
+ 'pfunc_expr_preg_match_failure' => 'í‘œí˜„ì‹ ì˜¤ë¥˜: 예ìƒì¹˜ 못한 preg_match 오류',
+ 'pfunc_expr_unrecognised_word' => 'í‘œí˜„ì‹ ì˜¤ë¥˜: ì•Œ 수 없는 단어 ‘$1’',
+ 'pfunc_expr_unexpected_operator' => '표현 오류: ìž˜ëª»ëœ $1 ì—°ì‚°ìž',
+ 'pfunc_expr_missing_operand' => '표현 오류: $1ì˜ í”¼ì—°ì‚°ìžê°€ 없습니다.',
+ 'pfunc_expr_unexpected_closing_bracket' => '표현 오류: 예ìƒì¹˜ 못한 괄호 닫기',
+ 'pfunc_expr_unrecognised_punctuation' => '표현 오류: ì•Œ 수 없는 ë¬¸ìž "$1"',
+ 'pfunc_expr_unclosed_bracket' => '표현 오류: 괄호를 닫지 않았습니다.',
+ 'pfunc_expr_division_by_zero' => '0으로 나눔',
+ 'pfunc_expr_invalid_argument' => '$1 í•¨ìˆ˜ì˜ ë³€ìˆ˜ê°€ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤: < -1 ë˜ëŠ” > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'ìžì—°ë¡œê·¸ì˜ 진수가 잘못ë˜ì—ˆìŠµë‹ˆë‹¤: <= 0',
+ 'pfunc_expr_unknown_error' => '표현 오류: 알려지지 ì•Šì€ ì˜¤ë¥˜ ($1)',
+ 'pfunc_expr_not_a_number' => '$1: 결과가 숫ìžê°€ 아닙니다.',
+ 'pfunc_string_too_long' => '오류: $1ìž ì œí•œì„ ì´ˆê³¼í•˜ì˜€ìŠµë‹ˆë‹¤.',
+);
+
+/** Colognian (Ripoarisch)
+ * @author Purodha
+ */
+$messages['ksh'] = array(
+ 'pfunc_desc' => 'Deit em Wiki Funxione för Entscheidunge un esu dobei.',
+ 'pfunc_time_error' => 'Fähler: Onjöltijje Zick.',
+ 'pfunc_time_too_long' => 'Fähler: <code>#time</code> weed zo öff jebruch.',
+ 'pfunc_time_too_big' => 'Ene Fähleres opjefalle: <code lang="en">#time</code> kann bloß bes nohm Johr 9999 jonn.',
+ 'pfunc_rel2abs_invalid_depth' => 'Fähler: Zo fill „retuur“ em Pahdt „$1“ — mer wöre wigger wi för der Aanfang zeröck jejange.',
+ 'pfunc_expr_stack_exhausted' => 'Fähler en enem Ußdrock: Dä löht der <i lang="en">stack</i> övverloufe.',
+ 'pfunc_expr_unexpected_number' => 'Fähler en enem Ußdrock: En Zahl dom_mer nit äwaade.',
+ 'pfunc_expr_preg_match_failure' => 'Fähler en enem Ußdrock: Esu ene Fähler en „<i lang="en">preg_match</i>“ dum_mer nit äwade.',
+ 'pfunc_expr_unrecognised_word' => 'Fähler en enem Ußdrock: Dat Woot „$1“ es unbikannt.',
+ 'pfunc_expr_unexpected_operator' => 'Fähler en enem Ußdrock: Dat Räschezeiche „$1“ dom_mer hee nit äwaade.',
+ 'pfunc_expr_missing_operand' => 'Fähler en enem Ußdrock: För dat Räschezeiche „$1“ dom_mer ävver ene Operand äwaade.',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Fähler en enem Ußdrock: En eckijje Klammer-Zoh dom_mer esu nit äwaade.',
+ 'pfunc_expr_unrecognised_punctuation' => 'Fähler en enem Ußdrock: Dat Satzzeiche „$1“ dom_mer esu nit äwaade.',
+ 'pfunc_expr_unclosed_bracket' => 'Fähler en enem Ußdrock: Do fählt en eckijje Klammer-Zoh.',
+ 'pfunc_expr_division_by_zero' => 'Fähler en enem Ußdrock: Dorsch Noll jedeilt.',
+ 'pfunc_expr_invalid_argument' => 'Fähler: Dä Parrameeter för <code>$1</code> moß -1 udder 1 sin, udder dozwesche lijje.',
+ 'pfunc_expr_invalid_argument_ln' => 'Fähler: Dä Parrameeter för <code>ln</code> moß 0 udder kleiner wi 0 sin.',
+ 'pfunc_expr_unknown_error' => 'Fähler en enem Ußdrock: Unbikannt ($1)',
+ 'pfunc_expr_not_a_number' => 'Fähler en enem Ußdrock: En <code>$1</code> es dat wat erus kütt kein Zahl.',
+ 'pfunc_string_too_long' => 'Fähler en enem Ußdrock: En Zeijshereih es länger wi $1 Zeijshe.',
+ 'pfunc-convert-dimension-length' => 'Längemohß',
+ 'pfunc-convert-dimension-area' => 'Flächemohß',
+ 'pfunc-convert-dimension-volume' => 'Hohlmohß',
+ 'pfunc-convert-dimension-time' => 'Ziggmohß',
+ 'pfunc-convert-dimension-timesquared' => 'Zigg<sup>2</sup>-Mohß',
+ 'pfunc-convert-dimension-mass' => 'Mohß för de Mass',
+ 'pfunc-convert-dimension-speed' => 'Jeschwendechkeit',
+ 'pfunc-convert-dimension-pressure' => 'Drock',
+ 'pfunc-convert-prefix-yotta' => 'Yotta',
+ 'pfunc-convert-prefix-zetta' => 'Zetta',
+ 'pfunc-convert-prefix-exa' => 'Exa',
+ 'pfunc-convert-prefix-tera' => 'Tera',
+ 'pfunc-convert-prefix-giga' => 'Giga',
+ 'pfunc-convert-prefix-mega' => 'Mega',
+ 'pfunc-convert-prefix-kilo' => 'Killo',
+ 'pfunc-convert-prefix-hecto' => 'Häkto',
+ 'pfunc-convert-prefix-deca' => 'Dekka',
+ 'pfunc-convert-prefix-deci' => 'Dezi',
+ 'pfunc-convert-prefix-centi' => 'Cänti',
+ 'pfunc-convert-prefix-milli' => 'Milli',
+ 'pfunc-convert-prefix-micro' => 'Mikro',
+ 'pfunc-convert-prefix-nano' => 'Nanno',
+ 'pfunc-convert-prefix-pico' => 'Picko',
+ 'pfunc-convert-prefix-femto' => 'Fämto',
+ 'pfunc-convert-prefix-atto' => 'Atto',
+ 'pfunc-convert-prefix-zepto' => 'Zäpto',
+ 'pfunc-convert-prefix-yocto' => 'Jokto',
+ 'pfunc-convert-unit-length-metre' => 'Meeter',
+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|Meil|Meile|Meile}}',
+ 'pfunc-convert-unit-area-squarekilometre' => 'Quadraatkillomeetere',
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm²',
+);
+
+/** Luxembourgish (Lëtzebuergesch)
+ * @author Robby
+ */
+$messages['lb'] = array(
+ 'pfunc_desc' => 'Erweidert Parser mat logesche Fonctiounen',
+ 'pfunc_time_error' => 'Feeler: ongëlteg Zäit',
+ 'pfunc_time_too_long' => 'Feeler: ze dacks #time opgeruff',
+ 'pfunc_time_too_big' => 'Feeler: #time ënnerstëtzt nëmme Jore bis 9999',
+ 'pfunc_expr_stack_exhausted' => 'Expressiouns-Feeler: Stack iwwergelaf',
+ 'pfunc_expr_unexpected_number' => 'Expressiouns-Feeler: Onerwarten Zuel',
+ 'pfunc_expr_unrecognised_word' => 'Expressiouns-Feeler: Onerkantent Wuert "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Expression-Feeler: Onerwarten Operateur: <tt>$1</tt>',
+ 'pfunc_expr_missing_operand' => 'Expression-Feeler: Et feelt en Operand fir <tt>$1</tt>',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Expressiouns-Feeler: Onerwarte Klammer déi zougemaach gëtt',
+ 'pfunc_expr_unrecognised_punctuation' => 'Expressiouns-Feeler: D\'Sazzeechen "$1" gouf net erkannt',
+ 'pfunc_expr_unclosed_bracket' => 'Expressiouns-Feeler: Eckeg Klammer net zougemaach',
+ 'pfunc_expr_division_by_zero' => 'Divisioun duerch Null',
+ 'pfunc_expr_invalid_argument' => 'Ongültege Wäert fir $1: < -1 oder > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ongültege Wäert fir ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Expression-Feeler: Onbekannte Feeler ($1)',
+ 'pfunc_expr_not_a_number' => "An $1: D'Resultat ass keng Zuel",
+ 'pfunc_string_too_long' => "Feeler: D'Zeecheketten ass méi laang wéi d'Limit vu(n) $1 Zeechen",
+);
+
+/** Limburgish (Limburgs)
+ * @author Matthias
+ * @author Ooswesthoesbes
+ */
+$messages['li'] = array(
+ 'pfunc_desc' => 'Verrijkt de parser met logische functies',
+ 'pfunc_time_error' => 'Fout: ongeldige tied',
+ 'pfunc_time_too_long' => 'Fout: #time te vaok aangerope',
+ 'pfunc_rel2abs_invalid_depth' => 'Fout: ongeldige diepte in pad: "$1" (probeerde \'n node bove de stamnode aan te rope)',
+ 'pfunc_expr_stack_exhausted' => 'Fout in oetdrukking: stack oetgeput',
+ 'pfunc_expr_unexpected_number' => 'Fout in oetdrukking: onverwacht getal',
+ 'pfunc_expr_preg_match_failure' => 'Fout in oetdrukking: onverwacht fale van preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Fout in oetdrukking: woord "$1" neet herkend',
+ 'pfunc_expr_unexpected_operator' => 'Fout in oetdrukking: neet verwachte operator $1',
+ 'pfunc_expr_missing_operand' => 'Fout in oetdrukking: operand veur $1 mist',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Fout in oetdrukking: haakje sloete op onverwachte plaats',
+ 'pfunc_expr_unrecognised_punctuation' => 'Fout in oetdrukking: neet herkend leesteke "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Fout in oetdrukking: neet geslote haakje opene',
+ 'pfunc_expr_division_by_zero' => 'Deiling door nul',
+ 'pfunc_expr_invalid_argument' => 'Ongeldige paramaeter veur $1: < -1 of > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ongeldige paramaeter veur ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Fout in oetdrukking: ónbekindje fout ($1)',
+ 'pfunc_expr_not_a_number' => 'In $1: rezultaot is gein getal',
+ 'pfunc_string_too_long' => 'Fout: De teks is lenger es de limiet van $1 {{PLURAL:$1|teike|teikes}}',
+);
+
+/** Lithuanian (Lietuvių)
+ * @author Hugo.arg
+ */
+$messages['lt'] = array(
+ 'pfunc_time_error' => 'Klaida: neteisingas laikas',
+);
+
+/** Latvian (Latviešu)
+ * @author Papuass
+ */
+$messages['lv'] = array(
+ 'pfunc_time_error' => 'Kļūda: nederīgs laiks',
+ 'pfunc_time_too_long' => 'Kļūda: pÄrÄk daudz #time izsaukumu',
+ 'pfunc_expr_division_by_zero' => 'Dalīšana ar nulli',
+);
+
+/** Macedonian (МакедонÑки)
+ * @author Bjankuloski06
+ * @author Brest
+ */
+$messages['mk'] = array(
+ 'pfunc_desc' => 'Проширување на можноÑтите на парÑерот Ñо логички функции',
+ 'pfunc_time_error' => 'Грешка: погрешен формат за време',
+ 'pfunc_time_too_long' => 'Грешка: премногу повикувања на функцијата #time',
+ 'pfunc_time_too_big' => 'Грешка: #time поддржува Ñамо години до 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Грешка: Ðеважечка длабочина во патеката: „$1“ (обид за приÑтап до јазол кој Ñе наоѓа повиÑоко од коренитиот)',
+ 'pfunc_expr_stack_exhausted' => 'Грешка во изразот: Складот е преполн',
+ 'pfunc_expr_unexpected_number' => 'Грешка во изразот: Ðеочекуван број',
+ 'pfunc_expr_preg_match_failure' => 'Грешка во изразот: Ðеочекуван проблем Ñо preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Грешка во изразот: Ðепрепознаен збор „$1“',
+ 'pfunc_expr_unexpected_operator' => 'Грешка во изразот: Ðеочекуван оператор $1',
+ 'pfunc_expr_missing_operand' => 'Грешка во изразот: ÐедоÑтаÑува операнд за $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Грешка во изразот: Ðеочекувано затворање на заграда',
+ 'pfunc_expr_unrecognised_punctuation' => 'Грешка во изразот: Ðепрепознаен интерпункциÑки знак „$1“',
+ 'pfunc_expr_unclosed_bracket' => 'Грешка во изразот: Ðезатворена заграда',
+ 'pfunc_expr_division_by_zero' => 'Делење Ñо нула',
+ 'pfunc_expr_invalid_argument' => 'Ðеважечки аргумент за $1: < -1 или > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ðеважечки аргумент за ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Грешка во изразот: Ðепозната грешка ($1)',
+ 'pfunc_expr_not_a_number' => 'Во $1: резултатот не е број',
+ 'pfunc_string_too_long' => 'Грешка: низата го надминува ограничувањето од $1 знаци',
+ 'pfunc-convert-dimensionmismatch' => 'Грешка: претворањето од единицата „$1“ во единицата „$2“ е невозможно',
+ 'pfunc-convert-unknownunit' => 'Грешка: непозната единица „$1“',
+ 'pfunc-convert-unknowndimension' => 'Грешка: непозната димензија „$1“',
+ 'pfunc-convert-invalidcompoundunit' => 'Грешка: неважечка мешовита единица „$1“',
+ 'pfunc-convert-nounit' => 'Грешка: нема наведено изворна единица',
+ 'pfunc-convert-doublecompoundunit' => 'Грешка: не можам да парÑирам двојни мешовити единици како „$1“',
+ 'pfunc-convert-dimension-length' => 'должина',
+ 'pfunc-convert-dimension-area' => 'плоштина',
+ 'pfunc-convert-dimension-volume' => 'волумен',
+ 'pfunc-convert-dimension-time' => 'време',
+ 'pfunc-convert-dimension-timesquared' => 'време<sup>2</sup>',
+ 'pfunc-convert-dimension-mass' => 'маÑа',
+ 'pfunc-convert-dimension-speed' => 'брзина',
+ 'pfunc-convert-dimension-temperature' => 'температура',
+ 'pfunc-convert-dimension-acceleration' => 'забрзување',
+ 'pfunc-convert-dimension-force' => 'Ñила',
+ 'pfunc-convert-dimension-torque' => 'момент на Ñила',
+ 'pfunc-convert-dimension-energy' => 'енергија',
+ 'pfunc-convert-dimension-power' => 'моќ',
+ 'pfunc-convert-dimension-pressure' => 'притиÑок',
+ 'pfunc-convert-dimension-density' => 'гуÑтина',
+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'позитивна горивна ефикаÑноÑÑ‚',
+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'негативна горивна ефикаÑноÑÑ‚',
+ 'pfunc-convert-prefix-yotta' => 'јота',
+ 'pfunc-convert-prefix-zetta' => 'зета',
+ 'pfunc-convert-prefix-exa' => 'екÑа',
+ 'pfunc-convert-prefix-peta' => 'пета',
+ 'pfunc-convert-prefix-tera' => 'тера',
+ 'pfunc-convert-prefix-giga' => 'гига',
+ 'pfunc-convert-prefix-mega' => 'мега',
+ 'pfunc-convert-prefix-kilo' => 'кило',
+ 'pfunc-convert-prefix-hecto' => 'хекто',
+ 'pfunc-convert-prefix-deca' => 'дека',
+ 'pfunc-convert-prefix-deci' => 'деци',
+ 'pfunc-convert-prefix-centi' => 'Ñанти',
+ 'pfunc-convert-prefix-milli' => 'мили',
+ 'pfunc-convert-prefix-micro' => 'микро',
+ 'pfunc-convert-prefix-nano' => 'нано',
+ 'pfunc-convert-prefix-pico' => 'пико',
+ 'pfunc-convert-prefix-femto' => 'фемто',
+ 'pfunc-convert-prefix-atto' => 'ато',
+ 'pfunc-convert-prefix-zepto' => 'зепто',
+ 'pfunc-convert-prefix-yocto' => 'јокто',
+ 'pfunc-convert-prefix-yotta-abbr' => 'Ј',
+ 'pfunc-convert-prefix-zetta-abbr' => 'З',
+ 'pfunc-convert-prefix-exa-abbr' => 'Е',
+ 'pfunc-convert-prefix-peta-abbr' => 'П',
+ 'pfunc-convert-prefix-tera-abbr' => 'Т',
+ 'pfunc-convert-prefix-giga-abbr' => 'Г',
+ 'pfunc-convert-prefix-mega-abbr' => 'М',
+ 'pfunc-convert-prefix-kilo-abbr' => 'к',
+ 'pfunc-convert-prefix-hecto-abbr' => 'Ñ…',
+ 'pfunc-convert-prefix-deca-abbr' => 'да',
+ 'pfunc-convert-prefix-deci-abbr' => 'д',
+ 'pfunc-convert-prefix-centi-abbr' => 'Ñ',
+ 'pfunc-convert-prefix-milli-abbr' => 'м',
+ 'pfunc-convert-prefix-micro-abbr' => 'μ',
+ 'pfunc-convert-prefix-nano-abbr' => 'н',
+ 'pfunc-convert-prefix-pico-abbr' => 'п',
+ 'pfunc-convert-prefix-femto-abbr' => 'Ñ„',
+ 'pfunc-convert-prefix-atto-abbr' => 'а',
+ 'pfunc-convert-prefix-zepto-abbr' => 'з',
+ 'pfunc-convert-prefix-yocto-abbr' => 'ј',
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|метар|метри}}',
+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|ангÑтрем|ангÑтреми}}',
+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|милја|милји}}',
+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|фурлонг|фурлонзи}}',
+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|ланец|ланци}}',
+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|прачка|прачки}}',
+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|фатом|фатоми}}',
+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|јарда|јарди}}',
+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|Ñтапка|Ñтапки}}',
+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|дланка|дланки}}',
+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|инч|инчи}}',
+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|наутичка милја|наутички милји}}',
+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|наутичка милја (британÑка, пред 1970)|наутички милји (британÑка, пред 1970)}}',
+ 'pfunc-convert-unit-length-nauticalmileus' => '{PLURAL:$1|наутичка милја (американÑка, пред 1954)|наутички милји (американÑки, пред 1954)}}',
+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2 парÑек|$2 парÑеци}}',
+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1|ÑветлоÑна година|ÑветлоÑни години}}',
+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|аÑтрономÑка единица|аÑтрономÑки единици}}',
+ 'pfunc-convert-unit-length-metre-abbr' => '$2 м',
+ 'pfunc-convert-unit-length-mile-abbr' => 'ми',
+ 'pfunc-convert-unit-length-furlong-abbr' => 'фурлонг',
+ 'pfunc-convert-unit-length-chain-abbr' => 'ланец',
+ 'pfunc-convert-unit-length-rod-abbr' => 'пр',
+ 'pfunc-convert-unit-length-fathom-abbr' => 'фатом',
+ 'pfunc-convert-unit-length-yard-abbr' => 'јд',
+ 'pfunc-convert-unit-length-foot-abbr' => 'ÑÑ‚',
+ 'pfunc-convert-unit-length-hand-abbr' => 'дл',
+ 'pfunc-convert-unit-length-inch-abbr' => 'ин',
+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'нми',
+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'нми (брит)',
+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'нми (амер. пред 1954)',
+ 'pfunc-convert-unit-length-parsec-abbr' => '$2 пÑ',
+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2 Ñг',
+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'ae',
+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|квадратен километар|квадратни километри}}',
+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|квадратен метар|квадратни метри}}',
+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|квадратен Ñантиметар|квадратни Ñантиметри}}',
+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|квадратен милиметар|квадратни милиметри}}',
+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|хектар|хектари}}',
+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|квадратна милја|квадратни милји}}',
+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|акр|акри}}',
+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|квадратна јарда|квадратни јарди}}',
+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|квадратна Ñтапка|квадратни Ñтапки}}',
+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|квадратен инч|квадратни инчи}}',
+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|квадратна наутичка милја|квадратни наутички милји}}',
+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|дунум|дунуми}}',
+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|цубо|цуба}}',
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'км<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'м<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'Ñм<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'мм<msup>2</sup>',
+ 'pfunc-convert-unit-area-hectare-abbr' => 'ха',
+ 'pfunc-convert-unit-area-squaremile-abbr' => 'ми<sup>2</sup>',
+ 'pfunc-convert-unit-area-acre-abbr' => 'акр',
+ 'pfunc-convert-unit-area-squareyard-abbr' => 'јд<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'ÑÑ‚<sup>2</sup>',
+ 'pfunc-convert-unit-area-squareinch-abbr' => 'ин<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'нми<sup>2</sup>',
+ 'pfunc-convert-unit-area-dunam-abbr' => 'дунум',
+ 'pfunc-convert-unit-area-tsubo-abbr' => 'цубо',
+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|Ñекунда|Ñекунди}}',
+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|година|години}}',
+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|ден|дена}}',
+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|чаÑ|чаÑа}}',
+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|минута|минути}}',
+ 'pfunc-convert-unit-time-second-abbr' => 'Ñ',
+ 'pfunc-convert-unit-time-year-abbr' => '$2 г',
+ 'pfunc-convert-unit-time-day-abbr' => 'ден',
+ 'pfunc-convert-unit-time-hour-abbr' => 'ч',
+ 'pfunc-convert-unit-time-minute-abbr' => 'мин',
+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|кубен метар|кубни метри}}',
+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|кубен Ñантиметар|кубни Ñантиметри}}',
+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|кубен милиметар|кубни милиметри}}',
+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|килолитар|килолитри}}',
+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|литар|литри}}',
+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|центилитар|центилитри}}',
+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|милилитар|милилитри}}',
+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|кубна јарда|кубни јарди}}',
+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|кубна Ñтапка|кубни Ñтапки}}',
+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|кубен инч|кубни инчи}}',
+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|барел|барели}}',
+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|бушел|бушели}}',
+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|галон|галони}}',
+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|кварта|кварти}}',
+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|пинта|пинти}}',
+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1|течна унца|течни унци}}',
+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1|американÑки барел|американÑки барели}}',
+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1|барел|барели}}',
+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1|барел|барели}}',
+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|американÑки галон|американÑки галони}}',
+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|американÑка кварта|американÑки кварти}}',
+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|американÑка пинта|американÑки пинти}}',
+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1|американÑка течна унца|американÑки течни унци}}',
+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1|американÑки Ñув барел|американÑки Ñуви барели}}',
+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1|американÑки бушел|американÑки бушели}}',
+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|американÑки Ñув галон|американÑки Ñуви галони}}',
+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|американÑка Ñува кварта|американÑки Ñуви кварти}}',
+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|американÑка Ñува пинта|американÑки Ñуви пинти}}',
+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'м<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'Ñм<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'мм<sup>3</sup>',
+ 'pfunc-convert-unit-volume-litre-abbr' => '$2 л',
+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'јд<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'ÑÑ‚<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'ин<sup>3</sup>',
+ 'pfunc-convert-unit-volume-barrel-abbr' => 'ббл',
+ 'pfunc-convert-unit-volume-bushel-abbr' => 'бш',
+ 'pfunc-convert-unit-volume-gallon-abbr' => 'гал',
+ 'pfunc-convert-unit-volume-quart-abbr' => 'кт',
+ 'pfunc-convert-unit-volume-pint-abbr' => 'пт',
+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'тч уц',
+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'ббл (СÐД)',
+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'ббл',
+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'ббл',
+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'гал (СÐД)',
+ 'pfunc-convert-unit-volume-usquart-abbr' => 'кт (СÐД)',
+ 'pfunc-convert-unit-volume-uspint-abbr' => 'пт (СÐД)',
+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'тч уц (СÐД)',
+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'ббл (СÐД)',
+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'бш (СÐД)',
+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'Ñув гал (СÐД)',
+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'Ñув кт (СÐД)',
+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'Ñув пт (СÐД)',
+ 'pfunc-convert-unit-speed-mile-hour' => 'милји на чаÑ',
+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'ми/ч',
+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|паÑкал|паÑкали}}',
+ 'pfunc-convert-unit-pressure-bar' => 'бар',
+ 'pfunc-convert-unit-pressure-decibar' => 'децибар',
+ 'pfunc-convert-unit-pressure-millibar' => 'милибар',
+ 'pfunc-convert-unit-pressure-kilobarye' => 'килобарија',
+ 'pfunc-convert-unit-pressure-barye' => 'барија',
+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|атмоÑфера|атмоÑфери}}',
+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|тор|тора}}',
+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|милиметар живин Ñтолб|милиметри живин Ñтолб}}',
+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|инч живин Ñтолб|инчи живин Ñтолб}}',
+ 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1|фунта на квадратен инч|фунти на квадратен инч}}',
+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2 Па',
+ 'pfunc-convert-unit-pressure-bar-abbr' => 'бар',
+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'дбар',
+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'мбар',
+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'кБа',
+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ба',
+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'атм',
+ 'pfunc-convert-unit-pressure-torr-abbr' => 'тор',
+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'ммHg',
+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'инHg',
+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
+);
+
+/** Malayalam (മലയാളം)
+ * @author Praveenp
+ * @author Shijualex
+ */
+$messages['ml'] = array(
+ 'pfunc_desc' => 'ലോജികàµà´•àµ½ à´«à´™àµà´·àµ»à´¸àµ ഉപയോഗിചàµà´šàµ പാർസർ വിപàµà´²à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
+ 'pfunc_time_error' => 'പിഴവàµ:അസാധàµà´µà´¾à´¯ സമയം',
+ 'pfunc_time_too_long' => 'പിഴവàµ: വളരെയധികം #സമയ കാളàµà´•àµ¾',
+ 'pfunc_time_too_big' => 'പിഴവàµ: 9999 വരെയàµà´³àµà´³ വർഷങàµà´™àµ¾ മാതàµà´°à´®àµ‡ #time പിനàµà´¤àµà´£à´¯àµà´•àµà´•àµà´¨àµà´¨àµà´³àµà´³àµ',
+ 'pfunc_rel2abs_invalid_depth' => 'പിഴവàµ: പഥതàµà´¤à´¿àµ½ അസാധàµà´µà´¾à´¯ ആഴം: "$1" (റൂടàµà´Ÿàµ തലതàµà´¤à´¿à´¨àµà´‚ à´®àµà´•à´³à´¿à´²àµà´³àµà´³ തലം à´Žà´Ÿàµà´•àµà´•à´¾à´¨àµà´³àµà´³ à´¶àµà´°à´®à´‚)',
+ 'pfunc_expr_stack_exhausted' => 'à´Žà´•àµà´¸àµâ€Œà´ªàµà´°àµ†à´·àµ» പിഴവàµ: à´¸àµà´±àµà´±à´¾à´•àµà´•àµ à´ªàµà´±à´¨àµà´¤à´³àµà´³à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
+ 'pfunc_expr_unexpected_number' => 'à´ªàµà´°à´¯àµ‹à´—രീതിയിൽ പിഴവàµ: à´ªàµà´°à´¤àµ€à´•àµà´·à´¿à´•àµà´•à´¾à´¤àµà´¤ സംഖàµà´¯',
+ 'pfunc_expr_preg_match_failure' => 'à´ªàµà´°à´¯àµ‹à´—രീതിയിൽ പിഴവàµ: à´…à´ªàµà´°à´¤àµ€à´•àµà´·à´¿à´¤à´®à´¾à´¯ preg_match പരാജയം',
+ 'pfunc_expr_unrecognised_word' => 'à´ªàµà´°à´¯àµ‹à´—രീതിയിൽ പിഴവàµ: "$1" à´Žà´¨àµà´¨ തിരിചàµà´šà´±à´¿à´¯à´¾àµ» സാധികàµà´•à´¾à´žàµà´ž വാകàµà´•àµ',
+ 'pfunc_expr_unexpected_operator' => 'à´ªàµà´°à´¯àµ‹à´—രീതിയിൽ പിഴവàµ: à´…à´ªàµà´°à´¤àµ€à´•àµà´·à´¿à´¤à´®à´¾à´¯ $1 à´“à´ªàµà´ªà´±àµ‡à´±àµà´±àµ¼',
+ 'pfunc_expr_missing_operand' => 'à´Žà´•àµà´¸àµà´ªàµà´°àµ†à´·àµ» പിഴവàµ: $1 à´Žà´¨àµà´¨à´¤à´¿à´¨àµà´³àµà´³ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¨à´˜à´Ÿà´•à´‚ നൽകിയിടàµà´Ÿà´¿à´²àµà´²',
+ 'pfunc_expr_unexpected_closing_bracket' => 'à´ªàµà´°à´¯àµ‹à´—രീതിയിൽ പിഴവàµ: à´…à´ªàµà´°à´¤àµ€à´•àµà´·à´¿à´¤à´®à´¾à´¯à´¿ കോഷàµà´ à´•à´‚ à´…à´Ÿà´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
+ 'pfunc_expr_unrecognised_punctuation' => 'à´ªàµà´°à´¯àµ‹à´—രീതിയിൽ പിഴവàµ: തിരിചàµà´šà´±à´¿à´¯à´¾àµ» കഴിയാതàµà´¤ വിരാമചിഹàµà´¨à´‚ "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'à´ªàµà´°à´¯àµ‹à´—രീതിയിൽ പിഴവàµ: à´…à´Ÿà´¯àµà´•àµà´•à´¾à´¤àµà´¤ കോഷàµà´ à´•à´‚',
+ 'pfunc_expr_division_by_zero' => 'പൂജàµà´¯à´‚ കൊണàµà´Ÿàµà´³àµà´³ ഹരണം',
+ 'pfunc_expr_invalid_argument' => '$1:< -1 à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ > 1 à´Žà´¨àµà´¨à´¤à´¿à´¨àµ നൽകിയ അസാധàµà´µà´¾à´¯ ആർഗàµà´¯àµà´®àµ†à´¨àµà´±àµ',
+ 'pfunc_expr_invalid_argument_ln' => 'ln: <= 0 à´Žà´¨àµà´¨à´¤à´¿à´¨àµ നൽകിയ അസാധàµà´µà´¾à´¯ ആർഗàµà´¯àµà´®àµ†à´¨àµà´±àµ',
+ 'pfunc_expr_unknown_error' => 'à´ªàµà´°à´¯àµ‹à´—രീതിയിൽ പിഴവàµ: കാരണം à´…à´œàµà´žà´¾à´¤à´®à´¾à´¯ പിഴവൠ($1)',
+ 'pfunc_expr_not_a_number' => '$1-ൽ: ഫലം ഒരൠസംഖàµà´¯à´¯à´²àµà´²',
+ 'pfunc_string_too_long' => 'പിഴവàµ: പദം ലിപികളàµà´Ÿàµ† പരിധിയായ $1 അതിലംഘികàµà´•àµà´¨àµà´¨àµ',
+);
+
+/** Marathi (मराठी)
+ * @author Htt
+ * @author Kaustubh
+ */
+$messages['mr'] = array(
+ 'pfunc_desc' => 'तारà¥à¤•à¤¿à¤• कारà¥à¤¯à¥‡ वापरून पारà¥à¤¸à¤° वाढवा',
+ 'pfunc_time_error' => 'तà¥à¤°à¥à¤Ÿà¥€: चà¥à¤•à¥€à¤šà¤¾ वेळ',
+ 'pfunc_time_too_long' => 'तà¥à¤°à¥à¤Ÿà¥€: खूप जासà¥à¤¤ #time कॉलà¥à¤¸',
+ 'pfunc_time_too_big' => 'चूक: #वेळ फकà¥à¤¤ ९९९९ सालापरà¥à¤¯à¤‚तचà¥à¤¯à¤¾ वरà¥à¤·à¤¾à¤‚ना समरà¥à¤¥à¤¨ देते',
+ 'pfunc_rel2abs_invalid_depth' => 'तà¥à¤°à¥à¤Ÿà¥€: मारà¥à¤—ामधà¥à¤¯à¥‡ चà¥à¤•à¥€à¤šà¥€ गहनता: "$1" (रूट नोडचà¥à¤¯à¤¾ वरील नोड शोधायचा पà¥à¤°à¤¯à¤¤à¥à¤¨ केला)',
+ 'pfunc_expr_stack_exhausted' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ तà¥à¤°à¥à¤Ÿà¥€: सà¥à¤Ÿà¥…क संपला',
+ 'pfunc_expr_unexpected_number' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ तà¥à¤°à¥à¤Ÿà¥€: अनपेकà¥à¤·à¤¿à¤¤ कà¥à¤°à¤®à¤¾à¤‚क',
+ 'pfunc_expr_preg_match_failure' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ तà¥à¤°à¥à¤Ÿà¥€: अनपेकà¥à¤·à¤¿à¤¤ preg_match रदà¥à¤¦à¥€à¤•à¤°à¤£',
+ 'pfunc_expr_unrecognised_word' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ तà¥à¤°à¥à¤Ÿà¥€: अनोळखी शबà¥à¤¦ "$1"',
+ 'pfunc_expr_unexpected_operator' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ तà¥à¤°à¥à¤Ÿà¥€: अनोळखी $1 कारà¥à¤¯à¤µà¤¾à¤¹à¤•',
+ 'pfunc_expr_missing_operand' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ तà¥à¤°à¥à¤Ÿà¥€: $1 चा घटक सापडला नाही',
+ 'pfunc_expr_unexpected_closing_bracket' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ तà¥à¤°à¥à¤Ÿà¥€: अनपेकà¥à¤·à¤¿à¤¤ समापà¥à¤¤à¥€ कंस',
+ 'pfunc_expr_unrecognised_punctuation' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ तà¥à¤°à¥à¤Ÿà¥€: अनोळखी उदà¥à¤—ारवाचक चिनà¥à¤¹ "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ तà¥à¤°à¥à¤Ÿà¥€: कंस समापà¥à¤¤ केलेला नाही',
+ 'pfunc_expr_division_by_zero' => 'शूनà¥à¤¯ ने भागाकार',
+ 'pfunc_expr_invalid_argument' => '$1 साठी अवैध अरà¥à¤—à¥à¤¯à¥à¤®à¥‡à¤‚ट: < -1 किंवा > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'ln करिता अवैध अरà¥à¤—à¥à¤¯à¥à¤®à¥‡à¤‚ट: <= 0',
+ 'pfunc_expr_unknown_error' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ तà¥à¤°à¥à¤Ÿà¥€: अनोळखी तà¥à¤°à¥à¤Ÿà¥€ ($1)',
+ 'pfunc_expr_not_a_number' => '$1 मधà¥à¤¯à¥‡: निकाल संखà¥à¤¯à¥‡à¤¤ नाही',
+);
+
+/** Malay (Bahasa Melayu)
+ * @author Anakmalaysia
+ * @author Aurora
+ * @author Aviator
+ * @author Kurniasan
+ */
+$messages['ms'] = array(
+ 'pfunc_desc' => 'Meningkatkan penghurai dengan fungsi-fungsi logik',
+ 'pfunc_time_error' => 'Ralat: waktu tidak sah',
+ 'pfunc_time_too_long' => 'Ralat: terlalu banyak panggilan #time',
+ 'pfunc_time_too_big' => 'Ralat: #time hanya menyokong tahun sehingga 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Ralat: Kedalaman tidak sah dalam laluan: "$1" (cubaan mencapai nod di atas nod induk)',
+ 'pfunc_expr_stack_exhausted' => 'Ralat ungkapan: Tindanan tuntas',
+ 'pfunc_expr_unexpected_number' => 'Ralat ungkapan: Nombor tidak dijangka',
+ 'pfunc_expr_preg_match_failure' => 'Ralat ungkapan: Kegagalan preg_match tidak dijangka',
+ 'pfunc_expr_unrecognised_word' => 'Ralat ungkapan: Perkataan "$1" tidak dikenali',
+ 'pfunc_expr_unexpected_operator' => 'Ralat ungkapan: Pengendali $1 tidak dijangka',
+ 'pfunc_expr_missing_operand' => 'Ralat ungkapan: Kendalian bagi $1 tiada',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Ralat ungkapan: Penutup kurungan tidak dijangka',
+ 'pfunc_expr_unrecognised_punctuation' => 'Ralat ungkapan: Aksara tanda baca "$1" tidak dikenali',
+ 'pfunc_expr_unclosed_bracket' => 'Ralat ungkapan: Tanda kurung tidak ditutup',
+ 'pfunc_expr_division_by_zero' => 'Pembahagian dengan sifar',
+ 'pfunc_expr_invalid_argument' => 'Argumen bagi $1 tidak sah: < -1 atau > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argumen bagi ln tidak sah: <= 0',
+ 'pfunc_expr_unknown_error' => 'Ralat ungkapan: Ralat tidak diketahui ($1)',
+ 'pfunc_expr_not_a_number' => 'Dalam $1: hasil bukan nombor',
+ 'pfunc_string_too_long' => 'Ralat: Rentetan melampaui batas aksara $1',
+ 'pfunc-convert-dimensionmismatch' => 'Ralat: Tidak boleh menukar antara unit-unit "$1" dan "$2".',
+ 'pfunc-convert-unknownunit' => 'Ralat: Unit "$1" tidak dikenali.',
+ 'pfunc-convert-unknowndimension' => 'Ralat: Matra "$1" tidak dikenali.',
+ 'pfunc-convert-invalidcompoundunit' => 'Ralat: Unit majmuk "$1" tidak sah.',
+ 'pfunc-convert-nounit' => 'Ralat: Tiada unit sumber yang diberikan.',
+ 'pfunc-convert-doublecompoundunit' => 'Ralat: Unit majmuk berganda seperti "$1" tidak boleh dihuraikan.',
+ 'pfunc-convert-dimension-length' => 'panjang',
+ 'pfunc-convert-dimension-area' => 'luas',
+ 'pfunc-convert-dimension-volume' => 'isipadu',
+ 'pfunc-convert-dimension-time' => 'masa',
+ 'pfunc-convert-dimension-timesquared' => 'masa<sup>2</sup>',
+ 'pfunc-convert-dimension-mass' => 'jisim',
+ 'pfunc-convert-dimension-speed' => 'kelajuan',
+ 'pfunc-convert-dimension-temperature' => 'suhu',
+ 'pfunc-convert-dimension-acceleration' => 'pecutan',
+ 'pfunc-convert-dimension-force' => 'daya',
+ 'pfunc-convert-dimension-torque' => 'tork',
+ 'pfunc-convert-dimension-energy' => 'tenaga',
+ 'pfunc-convert-dimension-power' => 'kuasa',
+ 'pfunc-convert-dimension-pressure' => 'tekanan',
+ 'pfunc-convert-dimension-density' => 'ketumpatan',
+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'kecekapanbahanapipositif',
+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'kecekapanbahanapinegatif',
+ 'pfunc-convert-prefix-yotta' => 'yotta',
+ 'pfunc-convert-prefix-zetta' => 'zetta',
+ 'pfunc-convert-prefix-exa' => 'eksa',
+ 'pfunc-convert-prefix-peta' => 'peta',
+ 'pfunc-convert-prefix-tera' => 'tera',
+ 'pfunc-convert-prefix-giga' => 'giga',
+ 'pfunc-convert-prefix-mega' => 'mega',
+ 'pfunc-convert-prefix-kilo' => 'kilo',
+ 'pfunc-convert-prefix-hecto' => 'hekto',
+ 'pfunc-convert-prefix-deca' => 'deka',
+ 'pfunc-convert-prefix-deci' => 'desi',
+ 'pfunc-convert-prefix-centi' => 'senti',
+ 'pfunc-convert-prefix-milli' => 'mili',
+ 'pfunc-convert-prefix-micro' => 'mikro',
+ 'pfunc-convert-prefix-nano' => 'nano',
+ 'pfunc-convert-prefix-pico' => 'piko',
+ 'pfunc-convert-prefix-femto' => 'femto',
+ 'pfunc-convert-prefix-atto' => 'atto',
+ 'pfunc-convert-prefix-zepto' => 'zepto',
+ 'pfunc-convert-prefix-yocto' => 'yokto',
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2meter|$2meter}}',
+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|angstrom|angstrom}}',
+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|batu|batu}}',
+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|furlong|furlong}}',
+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|rantai|rantai}}',
+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|pol|pol}}',
+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|fatom|fatom}}',
+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|ela|ela}}',
+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|kaki|kaki}}',
+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|tangan|tangan}}',
+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|inci|inci}}',
+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|batu nautika|batu nautika}}',
+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|batu nautika (British pra-1970)|batu nautika (British pra-1970)}}',
+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1|batu nautika (AS pra-1954)|batu nautika (AS pra-1954)}}',
+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2parsek|$2parsek}}',
+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1|$2tahun cahaya|$2tahun cahaya}}',
+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|unit astronomi|unit astronomi}}',
+ 'pfunc-convert-unit-length-furlong-abbr' => 'furlong',
+ 'pfunc-convert-unit-length-chain-abbr' => 'rantai',
+ 'pfunc-convert-unit-length-rod-abbr' => 'pol',
+ 'pfunc-convert-unit-length-fathom-abbr' => 'fatom',
+ 'pfunc-convert-unit-length-yard-abbr' => 'ela',
+ 'pfunc-convert-unit-length-foot-abbr' => 'kaki',
+ 'pfunc-convert-unit-length-hand-abbr' => 'tgn',
+ 'pfunc-convert-unit-length-inch-abbr' => 'in',
+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'batu n',
+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'batu n (Brit)',
+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'batu n (AS pra-1954)',
+ 'pfunc-convert-unit-length-parsec-abbr' => '$2pc',
+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2tc',
+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'AU',
+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|kilometer persegi|kilometer persegi}}',
+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|meter persegi|meter persegi}}',
+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|sentimeter persegi|sentimeter persegi}}',
+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|milimeter persegi|milimeter persegi}}',
+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hektar|hektar}}',
+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|batu persegi|batu persegi}}',
+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|ekar|ekar}}',
+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|ela persegi|ela persegi}}',
+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|kaki persegi|kaki persegi}}',
+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|inci persegi|inci persegi}}',
+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|batu nautika persegi|batu nautika persegi}}',
+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|dunam|dunam}}',
+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|tsubo|tsubo}}',
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
+ 'pfunc-convert-unit-area-squaremile-abbr' => 'batu<sup>2</sup>',
+ 'pfunc-convert-unit-area-acre-abbr' => 'ekar',
+ 'pfunc-convert-unit-area-squareyard-abbr' => 'ela<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'kaki<sup>2</sup>',
+ 'pfunc-convert-unit-area-squareinch-abbr' => 'inci<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'batu n<sup>2</sup>',
+ 'pfunc-convert-unit-area-dunam-abbr' => 'dunam',
+ 'pfunc-convert-unit-area-tsubo-abbr' => 'tsubo',
+ 'pfunc-convert-unit-time-second' => '{{PLURAL: $1|saat|saat}}',
+ 'pfunc-convert-unit-time-year' => '{{PLURAL: $1|$2tahun|$2tahun}}',
+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|hari|hari}}',
+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|jam|jam}}',
+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minit|minit}}',
+ 'pfunc-convert-unit-time-second-abbr' => 's',
+ 'pfunc-convert-unit-time-year-abbr' => '$2thn',
+ 'pfunc-convert-unit-time-day-abbr' => 'hari',
+ 'pfunc-convert-unit-time-hour-abbr' => 'jam',
+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|meter padu|meter padu}}',
+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|sentimeter padu|sentimeter padu}}',
+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|milimeter padu|milimeter padu}}',
+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|kilolite|kiloliter}}',
+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|liter|liter}}',
+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|sentiliter|sentiliter}}',
+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|mililiter|mililiter}}',
+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|ela padu|ela padu}}',
+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|kaki padu|kaki padu}}',
+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|inci padu|inci padu}}',
+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|tong|tong}}',
+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|busyel|busyel}}',
+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|gelen|gelen}}',
+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|kuart|kuart}}',
+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|pain|pain}}',
+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1|auns bendalir|auns bendalir}}',
+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1|tong AS|tong AS}}',
+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1|tong|tong}}',
+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1|tong|tong}}',
+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|gelen AS|gelen AS}}',
+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|kuart AS|kuart AS}}',
+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|pain AS|pain AS}}',
+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1|auns bendalir AS|auns bendalir AS}}',
+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1|tong kering AS|tong kering AS}}',
+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1|busyel AS|busyel AS}}',
+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|gelen kering AS|gelen kering AS}}',
+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|kuart kering AS|kuart kering AS}}',
+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|pain kering AS|pain kering AS}}',
+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-litre-abbr' => '$2l',
+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'ela<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'kaki<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'inci<sup>3</sup>',
+ 'pfunc-convert-unit-volume-barrel-abbr' => 'tong',
+ 'pfunc-convert-unit-volume-bushel-abbr' => 'bsh',
+ 'pfunc-convert-unit-volume-gallon-abbr' => 'gal',
+ 'pfunc-convert-unit-volume-quart-abbr' => 'qt',
+ 'pfunc-convert-unit-volume-pint-abbr' => 'pt',
+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'fl oz',
+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'tong AS',
+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'tong',
+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'tong',
+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'gal AS',
+ 'pfunc-convert-unit-volume-usquart-abbr' => 'qt AS',
+ 'pfunc-convert-unit-volume-uspint-abbr' => 'pt AS',
+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'fl oz AS',
+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'tong AS',
+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'bsh AS',
+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'gal kering AS',
+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'qt kering AS',
+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'pt kering AS',
+ 'pfunc-convert-unit-speed-mile-hour' => 'batu sejam',
+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'bsj',
+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|$2pascal|$2pascal}}',
+ 'pfunc-convert-unit-pressure-bar' => 'bar',
+ 'pfunc-convert-unit-pressure-decibar' => 'desibar',
+ 'pfunc-convert-unit-pressure-millibar' => 'milibar',
+ 'pfunc-convert-unit-pressure-kilobarye' => 'kilobarye',
+ 'pfunc-convert-unit-pressure-barye' => 'barye',
+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmosfera|atmosfera}}',
+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|Torr|Torr}}',
+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|milimeter raksa|milimeter raksa}}',
+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|inci raksa|inci raksa}}',
+ 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1|paun seinci persegi|paun seinci persegi}}',
+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'kBa',
+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ba',
+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
+ 'pfunc-convert-unit-pressure-torr-abbr' => 'Torr',
+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'mmHg',
+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'inHg',
+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
+);
+
+/** Erzya (ЭрзÑнь)
+ * @author Botuzhaleny-sodamo
+ */
+$messages['myv'] = array(
+ 'pfunc_time_error' => 'ИльведевкÑÑÑÑŒ: Ð°Ð¼Ð°ÑˆÑ‚Ð¾Ð²Ð¸ÐºÑ ÑˆÐºÐ°ÑÑŒ',
+ 'pfunc_expr_stack_exhausted' => 'ÐвтавкÑÑонть ильведевкÑ: ÑтекеÑÑŒ тыц пешкÑе',
+ 'pfunc_expr_division_by_zero' => 'ÐольÑÑ Ð¹Ð°Ð²Ð¾Ð¼Ð°',
+);
+
+/** Nahuatl (NÄhuatl)
+ * @author Fluence
+ */
+$messages['nah'] = array(
+ 'pfunc_time_error' => 'AhcuallÅtl: ahcualli cÄhuitl',
+);
+
+/** Low German (Plattdüütsch)
+ * @author Slomox
+ */
+$messages['nds'] = array(
+ 'pfunc_desc' => 'Beriekert den Parser mit logische Funkschonen',
+ 'pfunc_time_error' => 'Fehler: mit de Tiet stimmt wat nich',
+ 'pfunc_time_too_long' => 'Fehler: #time warrt to faken opropen',
+ 'pfunc_rel2abs_invalid_depth' => 'Fehler: Mit den Padd „$1“ stimmt wat nich, liggt nich ünner den Wuddelorner',
+ 'pfunc_expr_stack_exhausted' => 'Fehler in’n Utdruck: Stack överlopen',
+ 'pfunc_expr_unexpected_number' => 'Fehler in’n Utdruck: Unverwacht Tall',
+ 'pfunc_expr_preg_match_failure' => 'Fehler in’n Utdruck: Unverwacht Fehler bi „preg_match“',
+ 'pfunc_expr_unrecognised_word' => 'Fehler in’n Utdruck: Woort „$1“ nich kennt',
+ 'pfunc_expr_unexpected_operator' => 'Fehler in’n Utdruck: Unverwacht Operator $1',
+ 'pfunc_expr_missing_operand' => 'Fehler in’n Utdruck: Operand för $1 fehlt',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Fehler in’n Utdruck: Unverwacht Klammer to',
+ 'pfunc_expr_unrecognised_punctuation' => 'Fehler in’n Utdruck: Satzteken „$1“ nich kennt',
+ 'pfunc_expr_unclosed_bracket' => 'Fehler in’n Utdruck: Nich slatene Klammer',
+ 'pfunc_expr_division_by_zero' => 'Delen dör Null',
+ 'pfunc_expr_invalid_argument' => 'Ungüllig Argument för $1: < -1 oder > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ungüllig Argument för ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Fehler in’n Utdruck: Unbekannten Fehler ($1)',
+ 'pfunc_expr_not_a_number' => 'In $1: wat rutkamen is, is kene Tall',
+);
+
+/** Nepali (नेपाली) */
+$messages['ne'] = array(
+ 'pfunc_time_error' => 'तà¥à¤°à¥à¤Ÿà¥€: गलत/वा हà¥à¤¦à¥ˆà¤¨à¤¹à¥à¤¨à¥‡ समय',
+ 'pfunc_time_too_long' => 'तà¥à¤°à¥à¤Ÿà¥€: à¤à¤•à¤¦à¤® धेरै #time callहरà¥',
+ 'pfunc_rel2abs_invalid_depth' => 'तà¥à¤°à¥à¤Ÿà¥€: पाथमा (इनभà¥à¤¯à¤¾à¤²à¤¿à¤¡)गलत गहिराइ(डेपà¥à¤¥) भयो: "$1" (ले रà¥à¤Ÿ नोड भनà¥à¤¦à¤¾à¤ªà¤¨à¤¿ माथिको नोडलाइ चलाउन(à¤à¤•à¤¸à¥‡à¤¸) गरà¥à¤¨ खोजà¥à¤¯à¥‹)',
+);
+
+/** Dutch (Nederlands)
+ * @author SPQRobin
+ * @author Siebrand
+ */
+$messages['nl'] = array(
+ 'pfunc_desc' => 'Verrijkt de parser met logische functies',
+ 'pfunc_time_error' => 'Fout: ongeldige tijd',
+ 'pfunc_time_too_long' => 'Fout: #time te vaak aangeroepen',
+ 'pfunc_time_too_big' => 'Fout: #time ondersteunt jaren tot maximaal 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Fout: ongeldige diepte in pad: "$1" (probeerde een node boven de stamnode aan te roepen)',
+ 'pfunc_expr_stack_exhausted' => 'Fout in uitdrukking: stack uitgeput',
+ 'pfunc_expr_unexpected_number' => 'Fout in uitdrukking: onverwacht getal',
+ 'pfunc_expr_preg_match_failure' => 'Fout in uitdrukking: onverwacht falen van preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Fout in uitdrukking: woord "$1" niet herkend',
+ 'pfunc_expr_unexpected_operator' => 'Fout in uitdrukking: niet verwachte operator $1',
+ 'pfunc_expr_missing_operand' => 'Fout in uitdrukking: operand voor $1 mist',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Fout in uitdrukking: haakje sluiten op onverwachte plaats',
+ 'pfunc_expr_unrecognised_punctuation' => 'Fout in uitdrukking: niet herkend leesteken "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Fout in uitdrukking: niet gesloten haakje openen',
+ 'pfunc_expr_division_by_zero' => 'Deling door nul',
+ 'pfunc_expr_invalid_argument' => 'Ongeldige parameter voor $1: < -1 of > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ongeldige parameter voor ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Fout in uitdrukking: onbekende fout ($1)',
+ 'pfunc_expr_not_a_number' => 'In $1: resultaat is geen getal',
+ 'pfunc_string_too_long' => 'Fout: De tekst is langer dan de limiet van $1 {{PLURAL:$1|karakter|karakters}}',
+ 'pfunc-convert-dimensionmismatch' => 'Fout: het is niet mogelijk te converteren tussen de eenheden van "$1" en "$2".',
+ 'pfunc-convert-unknownunit' => 'Fout: onbekende eenheid "$1".',
+ 'pfunc-convert-unknowndimension' => 'Fout: Onbekende afmeting "$1".',
+ 'pfunc-convert-invalidcompoundunit' => 'Fout: Ongeldige samengestelde eenheid "$1".',
+ 'pfunc-convert-nounit' => 'Fout: Geen broneenheid opgegeven.',
+ 'pfunc-convert-doublecompoundunit' => 'Fout: het is niet mogelijk samengestelde eenheden zoals "$1" te verwerken.',
+ 'pfunc-convert-dimension-length' => 'lengte',
+ 'pfunc-convert-dimension-area' => 'oppervlakte',
+ 'pfunc-convert-dimension-volume' => 'inhoud',
+ 'pfunc-convert-dimension-time' => 'tijd',
+ 'pfunc-convert-dimension-timesquared' => 'tijd<sup>2</sup>',
+ 'pfunc-convert-dimension-mass' => 'massa',
+ 'pfunc-convert-dimension-speed' => 'snelheid',
+ 'pfunc-convert-dimension-temperature' => 'temperatuur',
+ 'pfunc-convert-dimension-acceleration' => 'versnelling',
+ 'pfunc-convert-dimension-force' => 'kracht',
+ 'pfunc-convert-dimension-torque' => 'koppel',
+ 'pfunc-convert-dimension-energy' => 'energie',
+ 'pfunc-convert-dimension-power' => 'vermogen',
+ 'pfunc-convert-dimension-pressure' => 'druk',
+ 'pfunc-convert-dimension-density' => 'dichtheid',
+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'brandstofefficientiepositief',
+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'brandstofefficientienegatief',
+ 'pfunc-convert-prefix-yotta' => 'yotta',
+ 'pfunc-convert-prefix-zetta' => 'zetta',
+ 'pfunc-convert-prefix-exa' => 'exa',
+ 'pfunc-convert-prefix-peta' => 'peta',
+ 'pfunc-convert-prefix-tera' => 'tera',
+ 'pfunc-convert-prefix-giga' => 'giga',
+ 'pfunc-convert-prefix-mega' => 'mega',
+ 'pfunc-convert-prefix-kilo' => 'kilo',
+ 'pfunc-convert-prefix-hecto' => 'hecto',
+ 'pfunc-convert-prefix-deca' => 'deca',
+ 'pfunc-convert-prefix-deci' => 'deci',
+ 'pfunc-convert-prefix-centi' => 'centi',
+ 'pfunc-convert-prefix-milli' => 'milli',
+ 'pfunc-convert-prefix-micro' => 'micro',
+ 'pfunc-convert-prefix-nano' => 'nano',
+ 'pfunc-convert-prefix-pico' => 'pico',
+ 'pfunc-convert-prefix-femto' => 'femto',
+ 'pfunc-convert-prefix-atto' => 'atto',
+ 'pfunc-convert-prefix-zepto' => 'zepto',
+ 'pfunc-convert-prefix-yocto' => 'yocto',
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|meter|meter}}',
+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|angstrom|angstrom}}',
+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|mijl|mijl}}',
+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|furlong|furlong}}',
+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|chain|chains}}',
+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|roede|roede}}',
+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|vadem|vadem}}',
+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|yard|yards}}',
+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|voet|voet}}',
+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|hand|handen}}',
+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|inch|inches}}',
+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|nautische mijl|nautische mijlen}}',
+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|nautische mijl (Brits, voor 1970)|nautische mijlen (Brits, voor 1970)}}',
+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1|nautische mijl (VS, voor 1954)|nautische mijlen (VS, voor 1954)}}',
+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2 parsec|$2 parsecs}}',
+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1|$2 lichtjaar|$2 lichtjaren}}',
+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|astronomische eenheid|astronomische eenheden}}',
+ 'pfunc-convert-unit-length-furlong-abbr' => 'furlong',
+ 'pfunc-convert-unit-length-chain-abbr' => 'chain',
+ 'pfunc-convert-unit-length-rod-abbr' => 'rd',
+ 'pfunc-convert-unit-length-fathom-abbr' => 'fath',
+ 'pfunc-convert-unit-length-yard-abbr' => 'yd',
+ 'pfunc-convert-unit-length-foot-abbr' => 'ft',
+ 'pfunc-convert-unit-length-hand-abbr' => 'h',
+ 'pfunc-convert-unit-length-inch-abbr' => 'in',
+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'NM',
+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'MN (Brits)',
+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'MN (VS voor 1954)',
+ 'pfunc-convert-unit-length-parsec-abbr' => '$2pc',
+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2lj',
+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'AE',
+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|vierkante kilometer|vierkante kilometer}}',
+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|vierkante meter|vierkante meter}}',
+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|vierkante centimeter|vierkante centimeter}}',
+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|vierkante millimeter|vierkante millimeter}}',
+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hectare|hectare}}',
+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|vierkante mijl|vierkante mijl}}',
+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|acre|acres}}',
+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|vierkante yard|vierkante yards}}',
+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|voerkante foot|vierkante foot}}',
+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|vierkante inch|vierkante inches}}',
+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|vierkante nautische mijl|vierkante nautische mijlen}}',
+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|dunam|dunams}}',
+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|tsubo|tsubo}}',
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
+ 'pfunc-convert-unit-area-squaremile-abbr' => 'sq mi',
+ 'pfunc-convert-unit-area-acre-abbr' => 'acre',
+ 'pfunc-convert-unit-area-squareyard-abbr' => 'sq yd',
+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'sq ft',
+ 'pfunc-convert-unit-area-squareinch-abbr' => 'sq in',
+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'vierkante mijl',
+ 'pfunc-convert-unit-area-dunam-abbr' => 'dunam',
+ 'pfunc-convert-unit-area-tsubo-abbr' => 'tsubo',
+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|seconde|seconden}}',
+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|$2jaar|$2jaren}}',
+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|dag|dagen}}',
+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|uur|uur}}',
+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minuut|minuten}}',
+ 'pfunc-convert-unit-time-second-abbr' => 'sec.',
+ 'pfunc-convert-unit-time-year-abbr' => '$2jaar',
+ 'pfunc-convert-unit-time-day-abbr' => 'dag',
+ 'pfunc-convert-unit-time-hour-abbr' => 'uur',
+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1| kubieke meter|kubieke meter}}',
+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|kubieke centimeter|kubieke centimeter}}',
+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|kubieke millimeter|kubieke millimeter}}',
+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|kiloliter|kiloliter}}',
+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|liter|liter}}',
+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|centiliters|centiliter}}',
+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|milliliter|milliliter}}',
+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|kubieke yard|kubieke yard}}',
+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|kubieke voet|kubieke voet}}',
+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|kubieke inch|kubieke inch}}',
+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|vat|vaten}}',
+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|bushel|bushels}}',
+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|gallon|gallon}}',
+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|quart|quart}}',
+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|pint|pints}}',
+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1|fluid ounce|fluid ounces}}',
+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1|VS-vat|VS-vaten}}',
+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1|vat|vaten}}',
+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1|vat|vaten}}',
+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|VS-gallon|VS-gallon}}',
+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|VS-quart|VS-quart}}',
+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|VS-pint|VS-pints}}',
+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1|VS-fluid ounce|VS-fluid ounces}}',
+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1|VS-droog vat|VS-droge vaten}}',
+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1|VS-bushel|VS-bushels}}',
+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|VS-droge gallon|VS-droge gallon}}',
+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|VS-droge quart|VS-droge quart}}',
+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|VS-droge pint|VS-droge pints}}',
+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-litre-abbr' => 'l',
+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'yd<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'ft<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'in<sup>3</sup>',
+ 'pfunc-convert-unit-volume-barrel-abbr' => 'bbl',
+ 'pfunc-convert-unit-volume-bushel-abbr' => 'bsh',
+ 'pfunc-convert-unit-volume-gallon-abbr' => 'gal',
+ 'pfunc-convert-unit-volume-quart-abbr' => 'qt',
+ 'pfunc-convert-unit-volume-pint-abbr' => 'pt',
+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'fl.oz.',
+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'VS bbl',
+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'bbl',
+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'bbl',
+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'VS gal',
+ 'pfunc-convert-unit-volume-usquart-abbr' => 'VS qt',
+ 'pfunc-convert-unit-volume-uspint-abbr' => 'VS pt',
+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'VS fl.oz.',
+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'VS bbl',
+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'VS bsh',
+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'VS drg.gal',
+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'VS drg.qt',
+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'VS drg.pt',
+ 'pfunc-convert-unit-speed-mile-hour' => 'mijl per uur',
+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'mpu',
+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|$2pascal|$2pascal}}',
+ 'pfunc-convert-unit-pressure-bar' => 'bar',
+ 'pfunc-convert-unit-pressure-decibar' => 'decibar',
+ 'pfunc-convert-unit-pressure-millibar' => 'millibar',
+ 'pfunc-convert-unit-pressure-kilobarye' => 'kilobarn',
+ 'pfunc-convert-unit-pressure-barye' => 'barye',
+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmosfeer|atmosfeer}}',
+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|Torr|Torr}}',
+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|millimeter kwik|millimeter kwik}}',
+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|duim kwik|duimen kwik}}',
+ 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1|pond per vierkante inch|pond per vierkante inch}}',
+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'kBa',
+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ba',
+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
+ 'pfunc-convert-unit-pressure-torr-abbr' => 'Torr',
+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'mmHg',
+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'inHg',
+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
+);
+
+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+ * @author Eirik
+ * @author Frokor
+ * @author Gunnernett
+ * @author Harald Khan
+ */
+$messages['nn'] = array(
+ 'pfunc_desc' => 'Legg til logiske funksjonar i parseren.',
+ 'pfunc_time_error' => 'Feil: Ugyldig tid',
+ 'pfunc_time_too_long' => 'Feil: #time er kalla for mange gonger',
+ 'pfunc_rel2abs_invalid_depth' => 'Feil: Ugyldig djupn i stien: «$1» (prøvde å nå ein node ovanfor rotnoden)',
+ 'pfunc_expr_stack_exhausted' => 'Feil i uttrykket: Stacken er tømd',
+ 'pfunc_expr_unexpected_number' => 'Feil i uttrykket: Uventa tal',
+ 'pfunc_expr_preg_match_failure' => 'Feil i uttrykket: Uventa feil i preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Feil i uttrykket: Ukjent ord, «$1»',
+ 'pfunc_expr_unexpected_operator' => 'Feil i uttrykket: Uventa operatør, $1',
+ 'pfunc_expr_missing_operand' => 'Feil i uttrykket: Operand for $1 manglar',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Feil i uttrykket: Uventa avsluttande parentes',
+ 'pfunc_expr_unrecognised_punctuation' => 'Feil i uttrykket: Ukjent punktumsteikn, «$1»',
+ 'pfunc_expr_unclosed_bracket' => 'Feil i uttrykket: Ein parentes er ikkje avslutta',
+ 'pfunc_expr_division_by_zero' => 'Divisjon med null',
+ 'pfunc_expr_invalid_argument' => 'Ugyldig argument for $1: < -1 eller > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ugyldig argument for ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Feil i uttrykket: Ukjend feil ($1)',
+ 'pfunc_expr_not_a_number' => 'Resultatet i $1 er ikkje eit tal',
+ 'pfunc_string_too_long' => 'Feil: Strengen går over grensa på $1 teikn',
+);
+
+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+ * @author Jon Harald Søby
+ * @author Laaknor
+ */
+$messages['no'] = array(
+ 'pfunc_desc' => 'Utvid parser med logiske funksjoner',
+ 'pfunc_time_error' => 'Feil: ugyldig tid',
+ 'pfunc_time_too_long' => 'Feil: #time brukt for mange ganger',
+ 'pfunc_time_too_big' => 'Feil: #time støtter kun år opp til 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Feil: Ugyldig dybde i sti: «$1» (prøvde å få tilgang til en node over rotnoden)',
+ 'pfunc_expr_stack_exhausted' => 'Uttrykksfeil: Stakk utbrukt',
+ 'pfunc_expr_unexpected_number' => 'Uttrykksfeil: Uventet nummer',
+ 'pfunc_expr_preg_match_failure' => 'Uttrykksfeil: Uventet preg_match-feil',
+ 'pfunc_expr_unrecognised_word' => 'Uttrykksfeil: Ugjenkjennelig ord «$1»',
+ 'pfunc_expr_unexpected_operator' => 'Uttrykksfeil: Uventet $1-operator',
+ 'pfunc_expr_missing_operand' => 'Uttrykksfeil: Mangler operand for $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Uttrykksfeil: Uventet lukkende parentes',
+ 'pfunc_expr_unrecognised_punctuation' => 'Uttrykksfeil: Ugjenkjennelig tegn «$1»',
+ 'pfunc_expr_unclosed_bracket' => 'Uttrykksfeil: Ã…pen parentes',
+ 'pfunc_expr_division_by_zero' => 'Deling på null',
+ 'pfunc_expr_invalid_argument' => 'Ugyldig argument for $1: < -1 eller > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ugyldig argument for ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Uttrykksfeil: Ukjent feil ($1)',
+ 'pfunc_expr_not_a_number' => 'I $1: resultat er ikke et tall',
+ 'pfunc_string_too_long' => 'Feil: Strengen går over grensen på $1 tegn',
+);
+
+/** Occitan (Occitan)
+ * @author Cedric31
+ */
+$messages['oc'] = array(
+ 'pfunc_desc' => 'Augmenta lo parser amb de foncions logicas',
+ 'pfunc_time_error' => 'Error: durada invalida',
+ 'pfunc_time_too_long' => 'Error: parser #time apelat tròp de còps',
+ 'pfunc_rel2abs_invalid_depth' => 'Error: nivèl de repertòri invalid dins lo camin : "$1" (a ensajat d’accedir a un nivèl al-dessús del repertòri raiç)',
+ 'pfunc_expr_stack_exhausted' => 'Expression erronèa : pila agotada',
+ 'pfunc_expr_unexpected_number' => 'Expression erronèa : nombre pas esperat',
+ 'pfunc_expr_preg_match_failure' => 'Expression erronèa : una expression pas compresa a pas capitat',
+ 'pfunc_expr_unrecognised_word' => "Error d'expression : lo mot '''$1''' es pas reconegut",
+ 'pfunc_expr_unexpected_operator' => "Error d'expression : l'operador '''$1''' es pas reconegut",
+ 'pfunc_expr_missing_operand' => "Error d'expression : l'operanda '''$1''' es pas reconeguda",
+ 'pfunc_expr_unexpected_closing_bracket' => "Error d'expression : parentèsi tampanta pas prevista",
+ 'pfunc_expr_unrecognised_punctuation' => "Error d'expression : caractèr de ponctuacion « $1 » pas reconegut",
+ 'pfunc_expr_unclosed_bracket' => 'Error d’expression : parentèsi pas tampada',
+ 'pfunc_expr_division_by_zero' => 'Division per zèro',
+ 'pfunc_expr_invalid_argument' => 'Valor incorrècta per $1 : < -1 o > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Valor incorrècta per ln : ≤ 0',
+ 'pfunc_expr_unknown_error' => "Error d'expression : error desconeguda ($1)",
+ 'pfunc_expr_not_a_number' => 'Dins $1 : lo resultat es pas un nombre',
+ 'pfunc_string_too_long' => 'Error : La cadena depassa lo limit maximal de $1 caractèr{{PLURAL:$1||s}}',
+);
+
+/** Polish (Polski)
+ * @author Derbeth
+ * @author Sp5uhe
+ */
+$messages['pl'] = array(
+ 'pfunc_desc' => 'Rozszerza analizator składni o funkcje logiczne',
+ 'pfunc_time_error' => 'Błąd – niepoprawny czas',
+ 'pfunc_time_too_long' => 'Błąd – zbyt wiele wywołań funkcji #time',
+ 'pfunc_time_too_big' => 'Błąd – rok w #time nie może być większy niż 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Błąd – nieprawidłowa głębokość w ścieżce „$1†(próba dostępu do węzła powyżej korzenia)',
+ 'pfunc_expr_stack_exhausted' => 'Błąd w wyrażeniu – stos wyczerpany',
+ 'pfunc_expr_unexpected_number' => 'Błąd w wyrażeniu – nieoczekiwana liczba',
+ 'pfunc_expr_preg_match_failure' => 'Błąd w wyrażeniu – nieoczekiwany błąd preg_match',
+ 'pfunc_expr_unrecognised_word' => 'BÅ‚Ä…d w wyrażeniu – nierozpoznane sÅ‚owo „$1â€',
+ 'pfunc_expr_unexpected_operator' => 'Błąd w wyrażeniu – nieoczekiwany operator $1',
+ 'pfunc_expr_missing_operand' => 'Błąd w wyrażeniu – brak argumentu funkcji $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Błąd w wyrażeniu – nieoczekiwany nawias zamykający',
+ 'pfunc_expr_unrecognised_punctuation' => 'BÅ‚Ä…d w wyrażeniu – nierozpoznany znak interpunkcyjny „$1â€',
+ 'pfunc_expr_unclosed_bracket' => 'Błąd w wyrażeniu – niedomknięty nawias',
+ 'pfunc_expr_division_by_zero' => 'Dzielenie przez zero',
+ 'pfunc_expr_invalid_argument' => 'Nieprawidłowy argument funkcji $1 – mniejszy od -1 lub większy od 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Nieprawidłowy argument funkcji ln – mniejszy lub równy 0',
+ 'pfunc_expr_unknown_error' => 'Błąd w wyrażeniu – nieznany błąd ($1)',
+ 'pfunc_expr_not_a_number' => 'W $1 – wynik nie jest liczbą',
+ 'pfunc_string_too_long' => 'Błąd – długość ciągu znaków przekracza dopuszczalne $1',
+ 'pfunc-convert-dimensionmismatch' => 'BÅ‚Ä…d – nie można konwertować pomiÄ™dzy jednostkami „$1†i „$2â€',
+ 'pfunc-convert-unknownunit' => 'BÅ‚Ä…d – nieznana jednostka „$1â€',
+ 'pfunc-convert-unknowndimension' => 'BÅ‚Ä…d – nieznana jednostka „$1â€',
+ 'pfunc-convert-invalidcompoundunit' => 'BÅ‚Ä…d – nieprawidÅ‚owa jednostka zÅ‚ożona „$1â€',
+ 'pfunc-convert-nounit' => 'Błąd – brak jednostki źródłowej',
+ 'pfunc-convert-doublecompoundunit' => 'BÅ‚Ä…d – nie można przetworzyć jednostki podwójnie zÅ‚ożonej jak „$1â€',
+ 'pfunc-convert-dimension-length' => 'długość',
+ 'pfunc-convert-dimension-area' => 'powierzchnia',
+ 'pfunc-convert-dimension-volume' => 'objętość',
+ 'pfunc-convert-dimension-time' => 'czas',
+ 'pfunc-convert-dimension-timesquared' => 'czas<sup>2</sup>',
+ 'pfunc-convert-dimension-mass' => 'masa',
+ 'pfunc-convert-dimension-speed' => 'prędkość',
+ 'pfunc-convert-dimension-temperature' => 'temperatura',
+ 'pfunc-convert-dimension-acceleration' => 'przyspieszenie',
+ 'pfunc-convert-dimension-force' => 'siła',
+ 'pfunc-convert-dimension-torque' => 'moment obrotowy',
+ 'pfunc-convert-dimension-energy' => 'energia',
+ 'pfunc-convert-dimension-power' => 'moc',
+ 'pfunc-convert-dimension-pressure' => 'ciśnienie',
+ 'pfunc-convert-dimension-density' => 'gęstość',
+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'bezwzględne zużycie paliwa',
+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'nieprawidłowe zużycie paliwa',
+ 'pfunc-convert-prefix-yotta' => 'jotta',
+ 'pfunc-convert-prefix-zetta' => 'zetta',
+ 'pfunc-convert-prefix-exa' => 'eksa',
+ 'pfunc-convert-prefix-peta' => 'peta',
+ 'pfunc-convert-prefix-tera' => 'tera',
+ 'pfunc-convert-prefix-giga' => 'giga',
+ 'pfunc-convert-prefix-mega' => 'mega',
+ 'pfunc-convert-prefix-kilo' => 'kilo',
+ 'pfunc-convert-prefix-hecto' => 'hekto',
+ 'pfunc-convert-prefix-deca' => 'deka',
+ 'pfunc-convert-prefix-deci' => 'decy',
+ 'pfunc-convert-prefix-centi' => 'centy',
+ 'pfunc-convert-prefix-milli' => 'mili',
+ 'pfunc-convert-prefix-micro' => 'mikro',
+ 'pfunc-convert-prefix-nano' => 'nano',
+ 'pfunc-convert-prefix-pico' => 'piko',
+ 'pfunc-convert-prefix-femto' => 'femto',
+ 'pfunc-convert-prefix-atto' => 'atto',
+ 'pfunc-convert-prefix-zepto' => 'zepto',
+ 'pfunc-convert-prefix-yocto' => 'jokto',
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2 metr|$2 metry|$2 metrów}}',
+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|angstrem|angstremy|angstremów}}',
+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|mila|mile|mil}}',
+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|furlong|furlongi|furlongów}}',
+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|łańcuch|łańcuchy|łańcuchów}}',
+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|pręt|pręty|prętów}}',
+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|sążeń|sążnie|sążni}}',
+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|jard|jardy|jardów}}',
+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|stopa|stopy|stóp}}',
+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|dłoń|dłonie|dłoni}}',
+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|cal|cale|cali}}',
+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|mila morska|mile morskie|mil morskich}}',
+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|mila morska brytyjska|mile morskie brytyjskie|mil morskich brytyjskich}} sprzed 1970 roku',
+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1|mila morska amerykańska|mile morskie amerykańskie|mil morskich amerykańskich}} sprzed 1954 roku',
+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2 parsek|$2 parseki|$2 parseków}}',
+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1|$2 rok świetlny|$2 lata świetlne|$2 lat świetlnych}}',
+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|jednostka astronomiczna|jednostki astronomiczne|jednostek astronomicznych}}',
+ 'pfunc-convert-unit-length-furlong-abbr' => 'furlong',
+ 'pfunc-convert-unit-length-chain-abbr' => 'łańcuch',
+ 'pfunc-convert-unit-length-rod-abbr' => 'rd',
+ 'pfunc-convert-unit-length-fathom-abbr' => 'sążeń',
+ 'pfunc-convert-unit-length-yard-abbr' => 'jard',
+ 'pfunc-convert-unit-length-foot-abbr' => 'stopa',
+ 'pfunc-convert-unit-length-hand-abbr' => 'dłoń',
+ 'pfunc-convert-unit-length-inch-abbr' => 'cal',
+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'INM',
+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'angielska mila morska',
+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'amerykańska mila morska sprzed 1954 roku',
+ 'pfunc-convert-unit-length-parsec-abbr' => '$2 pc',
+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2 lat świetlnych',
+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'j.a.',
+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|kilometr kwadratowy|kilometry kwadratowe|kilometrów kwadratowych}}',
+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|metr kwadratowy|metry kwadratowe|metrów kwadratowych}}',
+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|centymetr kwadratowy|centymetry kwadratowe|centymetrów kwadratowych}}',
+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|milimetr kwadratowy|milimetry kwadratowe|milimetrów kwadratowych}}',
+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hektar|hektary|hektarów}}',
+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|mila kwadratowa|mile kwadratowe|mil kwadratowych}}',
+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|akr|akry|akrów}}',
+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|jard kwadratowy|jardy kwadratowe|jardów kwadratowych}}',
+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|stopa kwadratowa|stopy kwadratowe|stóp kwadratowych}}',
+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|cal kwadratowy|cale kwadratowe|cali kwadratowych}}',
+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|mila morska kwadratowa|mile morskie kwadratowe|mil morskich kwadratowych}}',
+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|dunam|dunamy|dunamów}}',
+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|tsubo|tsubo|tsubo}}',
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
+ 'pfunc-convert-unit-area-squaremile-abbr' => 'mila<sup>2</sup>',
+ 'pfunc-convert-unit-area-acre-abbr' => 'akr',
+ 'pfunc-convert-unit-area-squareyard-abbr' => 'jard<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'stopa<sup>2</sup>',
+ 'pfunc-convert-unit-area-squareinch-abbr' => 'cal<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'mila morska<sup>2</sup>',
+ 'pfunc-convert-unit-area-dunam-abbr' => 'dunam',
+ 'pfunc-convert-unit-area-tsubo-abbr' => 'tsubo',
+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|sekunda|sekundy|sekund}}',
+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|$2 rok|$2 lata|$2 lat}}',
+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|dzień|dni}}',
+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|godzina|godziny|godzin}}',
+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minuta|minuty|minut}}',
+ 'pfunc-convert-unit-time-second-abbr' => 's',
+ 'pfunc-convert-unit-time-year-abbr' => '$2 jard',
+ 'pfunc-convert-unit-time-day-abbr' => 'doba',
+ 'pfunc-convert-unit-time-hour-abbr' => 'h',
+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|metr sześcienny|metry sześcienne|metrów sześciennych}}',
+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|centymetr sześcienny|centymetry sześcienne|centymetrów sześciennych}}',
+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|milimetr sześcienny|milimetry sześcienne|milimetrów sześciennych}}',
+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|tysiąc litrów|tysiące litrów|tysięcy litrów}}',
+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|litr|litry|litrów}}',
+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|dziesiąta część|dziesiąte części|dziesiątych części}} litra',
+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|mililitr|mililitry|mililitrów}}',
+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|jard|jardów}}',
+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-litre-abbr' => '$2 l',
+ 'pfunc-convert-unit-speed-mile-hour' => 'mil na godzinÄ™',
+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|$2paskal|$2paskali}}',
+ 'pfunc-convert-unit-pressure-bar' => 'barów',
+ 'pfunc-convert-unit-pressure-decibar' => 'decybarów',
+ 'pfunc-convert-unit-pressure-millibar' => 'millibarów',
+ 'pfunc-convert-unit-pressure-kilobarye' => 'kilobarów',
+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmosfera|atmosfer}}',
+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|milimtr słupka rtęci|milimetrów słupka rtęci}}',
+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|cal słupka rtęci|cali słupka rtęci}}',
+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar.',
+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'mmHg',
+);
+
+/** Piedmontese (Piemontèis)
+ * @author Bèrto 'd Sèra
+ * @author Dragonòt
+ */
+$messages['pms'] = array(
+ 'pfunc_desc' => 'Mijora ël parse con funsion lògiche',
+ 'pfunc_time_error' => 'Eror: temp nen bon',
+ 'pfunc_time_too_long' => 'Eror: #time a ven ciamà tròpe vire',
+ 'pfunc_time_too_big' => 'Eror: #time a përmëtt mach agn fin al 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Eror: profondità nen bon-a ant ël përcors: "$1" (a l\'é provasse a ciamé un grop dzora a la rèis)',
+ 'pfunc_expr_stack_exhausted' => "Eror ëd l'espression: stach esaurìa",
+ 'pfunc_expr_unexpected_number' => "Eror ëd l'espression: nùmer pa spetà",
+ 'pfunc_expr_preg_match_failure' => "Eror ëd l'espression: eror pa spetà an preg_match",
+ 'pfunc_expr_unrecognised_word' => 'Eror ëd l\'espression: paròla "$1" pa arconossùa',
+ 'pfunc_expr_unexpected_operator' => "Eror ëd l'espression: operator $1 pa spetà",
+ 'pfunc_expr_missing_operand' => "Eror ëd l'espression: Operand për $1 mancant",
+ 'pfunc_expr_unexpected_closing_bracket' => "Eror ëd l'espression: paréntesi pa sarà",
+ 'pfunc_expr_unrecognised_punctuation' => 'Eror ëd l\'espression: caràter ëd puntegiadura "$1" pa arconossù',
+ 'pfunc_expr_unclosed_bracket' => "Eror ëd l'espression: paréntesi pa sarà",
+ 'pfunc_expr_division_by_zero' => 'Division për zero',
+ 'pfunc_expr_invalid_argument' => 'Argoment pa bon për $1: < -1 o > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argoment pa bon për ln: <= 0',
+ 'pfunc_expr_unknown_error' => "Eror ëd l'espression: Eror pa conossù ($1)",
+ 'pfunc_expr_not_a_number' => "An $1: l'arzultà a l'é pa un nùmer",
+ 'pfunc_string_too_long' => 'Eror: la stringa a passa ël lìmit ëd $1 caràter',
+);
+
+/** Western Punjabi (پنجابی)
+ * @author Khalid Mahmood
+ */
+$messages['pnb'] = array(
+ 'pfunc-convert-dimension-length' => 'لمبائی',
+ 'pfunc-convert-dimension-area' => 'تھاں',
+ 'pfunc-convert-dimension-volume' => 'والیوم',
+ 'pfunc-convert-dimension-time' => 'ویلÛ',
+ 'pfunc-convert-dimension-timesquared' => 'واری<sup>2</sup>',
+ 'pfunc-convert-dimension-mass' => 'ماس',
+ 'pfunc-convert-dimension-speed' => 'دوڑ',
+ 'pfunc-convert-dimension-temperature' => 'گرمی ناپ',
+ 'pfunc-convert-dimension-acceleration' => 'سدی دوڑ',
+ 'pfunc-convert-dimension-force' => 'زور',
+ 'pfunc-convert-dimension-torque' => 'ٹارک',
+ 'pfunc-convert-dimension-energy' => 'انرجی',
+ 'pfunc-convert-dimension-power' => 'پاور',
+ 'pfunc-convert-dimension-pressure' => 'دبآ',
+ 'pfunc-convert-dimension-density' => 'گوڑا',
+ 'pfunc-convert-prefix-yotta' => 'یوٹا',
+ 'pfunc-convert-prefix-zetta' => 'زیٹا',
+ 'pfunc-convert-prefix-exa' => 'ایکسا',
+ 'pfunc-convert-prefix-peta' => 'پیٹا',
+ 'pfunc-convert-prefix-tera' => 'ٹیرا',
+ 'pfunc-convert-prefix-giga' => 'گیگا',
+ 'pfunc-convert-prefix-mega' => 'میگا',
+ 'pfunc-convert-prefix-kilo' => 'کلو',
+ 'pfunc-convert-prefix-hecto' => 'Ûیکٹو',
+ 'pfunc-convert-prefix-deca' => 'ڈیکا',
+ 'pfunc-convert-prefix-deci' => 'ڈیسی',
+ 'pfunc-convert-prefix-centi' => 'سنٹی',
+ 'pfunc-convert-prefix-milli' => 'ملی',
+ 'pfunc-convert-prefix-micro' => 'مائکرو',
+ 'pfunc-convert-prefix-nano' => 'نینو',
+ 'pfunc-convert-prefix-pico' => 'Ù¾Ú©Ùˆ',
+ 'pfunc-convert-prefix-femto' => 'Ùمٹو',
+ 'pfunc-convert-prefix-atto' => 'اٹو',
+ 'pfunc-convert-prefix-zepto' => 'زپٹو',
+ 'pfunc-convert-prefix-yocto' => 'یوکٹو',
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2میٹر}}',
+ 'pfunc-convert-unit-length-furlong-abbr' => 'Ùرلانگ',
+ 'pfunc-convert-unit-length-chain-abbr' => 'زنجیر',
+ 'pfunc-convert-unit-length-rod-abbr' => 'رداس',
+ 'pfunc-convert-unit-length-fathom-abbr' => 'Ùیدم',
+ 'pfunc-convert-unit-length-yard-abbr' => 'گز',
+ 'pfunc-convert-unit-length-foot-abbr' => 'ÙÙ¹',
+ 'pfunc-convert-unit-length-hand-abbr' => 'کینٹÛ',
+ 'pfunc-convert-unit-length-inch-abbr' => 'انچ',
+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'سمندری میل',
+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'سمندری میل (برطانیÛ)',
+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'سمندری میل (Ø§Ù…Ø±ÛŒÚ©Û 1954 توں Ù¾ÛÙ„Û’)',
+ 'pfunc-convert-unit-length-parsec-abbr' => '$2کمپیوٹر',
+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2ly',
+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'اسمانی ناپ',
+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|مربع کلومیٹر|مربع کلومیٹر}}',
+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|مربع میٹر|مربع میٹر}}',
+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|مربع سینٹیمیٹر|مربع سینٹیمیٹر}}',
+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|مربع میلیمیٹر|مربع میلیمیٹر}}',
+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|Ûیکٹر|Ûیکٹر}}',
+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|مربع میلیمیٹر|مربع میل}}',
+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|ایکڑ|ایکڑ}}',
+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|مربع گز|مربع گز}}',
+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|مربع ÙÙ¹|مربع ÙÙ¹}}',
+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|مربع انچ|مربع انچ}}',
+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|مربع سمندری میل|مربع سمندری میل}}',
+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|ڈنام|ڈنام}}',
+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|زوبو|زوبو}}',
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'کلومیٹر<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
+ 'pfunc-convert-unit-area-hectare-abbr' => 'Ûیکٹر',
+ 'pfunc-convert-unit-area-squaremile-abbr' => 'مربع میل',
+ 'pfunc-convert-unit-area-acre-abbr' => 'ایکڑ',
+ 'pfunc-convert-unit-area-squareyard-abbr' => 'مربع گز',
+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'مربع ÙÙ¹',
+ 'pfunc-convert-unit-area-squareinch-abbr' => 'مربع انچ',
+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'مربع سمندری میل',
+ 'pfunc-convert-unit-area-dunam-abbr' => 'دونام',
+ 'pfunc-convert-unit-area-tsubo-abbr' => 'سوبو',
+ 'pfunc-convert-unit-time-second' => '$1 {{PLURAL:$1|سکنٹ|سکنٹاں}}',
+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|$2ورÛ|$2ورے}}',
+ 'pfunc-convert-unit-time-day' => ' {{PLURAL:$1|دن|دناں}}',
+ 'pfunc-convert-unit-time-hour' => ' {{PLURAL:$1|کینٹا|کینٹے}}',
+ 'pfunc-convert-unit-time-minute' => ' {{PLURAL:$1|منٹ|منٹاں}}',
+ 'pfunc-convert-unit-time-second-abbr' => 'سکنث',
+ 'pfunc-convert-unit-time-year-abbr' => '$2ورÛ',
+ 'pfunc-convert-unit-time-day-abbr' => 'دیاڑھ',
+ 'pfunc-convert-unit-time-hour-abbr' => 'کینٹÛ',
+ 'pfunc-convert-unit-time-minute-abbr' => 'منٹ',
+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|مربع میٹر|مربع میٹر}}',
+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|مربع سینٹیمیٹر|مربع سینٹیمیٹر}}',
+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|مربع میلیمیٹر|مربع میلیمیٹر}}',
+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|کلولٹر|کلولٹر}}',
+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|لٹر|لٹر}}',
+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|سینٹیلٹر}}',
+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|ملیلٹر}}',
+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|مربع گز}}',
+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|مربع ÙÙ¹}}',
+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|مربع انچ}}',
+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|بیرل}}',
+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|بشل}}',
+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|گیلن}}',
+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|کوارٹز}}',
+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|پنٹ}}',
+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1|پانیسر اونس}}',
+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1|بیرل}}',
+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1|بیرل}}',
+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1|بیرل}}',
+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|گیلن}}',
+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|کوارٹز}}',
+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|پنٹ}}',
+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1|پانیسر اونس}}',
+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1|بیرل}}',
+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1|بشل}}',
+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|گیلن}}',
+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|کوارٹز}}',
+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|پنٹ}}',
+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>2</sup>',
+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'سینٹی میٹر<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'ملی میٹر<sup>3</sup>',
+ 'pfunc-convert-unit-volume-litre-abbr' => '$2ly',
+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'مربع گز',
+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'مربع ÙÙ¹',
+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'مکعب انچ',
+ 'pfunc-convert-unit-volume-barrel-abbr' => 'bbl',
+);
+
+/** Pashto (پښتو)
+ * @author Ahmed-Najib-Biabani-Ibrahimkhel
+ */
+$messages['ps'] = array(
+ 'pfunc_time_error' => 'ستونزه: ناسم وخت',
+ 'pfunc_expr_division_by_zero' => 'ÙˆÛØ´ په صÙر',
+);
+
+/** Portuguese (Português)
+ * @author Hamilton Abreu
+ * @author Malafaya
+ */
+$messages['pt'] = array(
+ 'pfunc_desc' => 'Adiciona funções lógicas ao analisador sintáctico',
+ 'pfunc_time_error' => 'Erro: tempo inválido',
+ 'pfunc_time_too_long' => 'Erro: demasiadas chamadas a #time',
+ 'pfunc_time_too_big' => 'Erro: #time só lida com anos até 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Erro: Profundidade inválida no caminho: "$1" (foi tentado o acesso a um nó acima do nó raiz)',
+ 'pfunc_expr_stack_exhausted' => 'Erro de expressão: Pilha esgotada',
+ 'pfunc_expr_unexpected_number' => 'Erro de expressão: Número inesperado',
+ 'pfunc_expr_preg_match_failure' => 'Erro de expressão: Falha em preg_match inesperada',
+ 'pfunc_expr_unrecognised_word' => 'Erro de expressão: Palavra "$1" não reconhecida',
+ 'pfunc_expr_unexpected_operator' => 'Erro de expressão: Operador $1 inesperado',
+ 'pfunc_expr_missing_operand' => 'Erro de expressão: Falta operando para $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Erro de expressão: Parêntese de fecho inesperado',
+ 'pfunc_expr_unrecognised_punctuation' => 'Erro de expressão: Carácter de pontuação "$1" não reconhecido',
+ 'pfunc_expr_unclosed_bracket' => 'Erro de expressão: Parêntese não fechado',
+ 'pfunc_expr_division_by_zero' => 'Divisão por zero',
+ 'pfunc_expr_invalid_argument' => 'Argumento inválido para $1: < -1 or > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argumento inválido para ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Erro de expressão: Erro desconhecido ($1)',
+ 'pfunc_expr_not_a_number' => 'Em $1: resultado não é um número',
+ 'pfunc_string_too_long' => 'Erro: Texto excede o limite de $1 caracteres',
+);
+
+/** Brazilian Portuguese (Português do Brasil)
+ * @author Eduardo.mps
+ * @author Giro720
+ */
+$messages['pt-br'] = array(
+ 'pfunc_desc' => 'Melhora o analisador (parser) com funções lógicas',
+ 'pfunc_time_error' => 'Erro: tempo inválido',
+ 'pfunc_time_too_long' => 'Erro: muitas chamadas a #time',
+ 'pfunc_time_too_big' => 'Erro: #time só lida com anos até 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Erro: Profundidade inválida no caminho: "$1" (foi tentado o acesso a um nó acima do nó raiz)',
+ 'pfunc_expr_stack_exhausted' => 'Erro de expressão: Pilha esgotada',
+ 'pfunc_expr_unexpected_number' => 'Erro de expressão: Número inesperado',
+ 'pfunc_expr_preg_match_failure' => 'Erro de expressão: Falha em preg_match inesperada',
+ 'pfunc_expr_unrecognised_word' => 'Erro de expressão: Palavra "$1" não reconhecida',
+ 'pfunc_expr_unexpected_operator' => 'Erro de expressão: Operador $1 inesperado',
+ 'pfunc_expr_missing_operand' => 'Erro de expressão: Falta operando para $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Erro de expressão: Parêntese de fechamento inesperado',
+ 'pfunc_expr_unrecognised_punctuation' => 'Erro de expressão: Caractere de pontuação "$1" não reconhecido',
+ 'pfunc_expr_unclosed_bracket' => 'Erro de expressão: Parêntese não fechado',
+ 'pfunc_expr_division_by_zero' => 'Divisão por zero',
+ 'pfunc_expr_invalid_argument' => 'Argumento inválido para $1: < -1 or > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argumento inválido para ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Erro de expressão: Erro desconhecido ($1)',
+ 'pfunc_expr_not_a_number' => 'Em $1: resultado não é um número',
+ 'pfunc_string_too_long' => 'Erro: cadeia de caracteres excede o limite de $1 caracteres',
+);
+
+/** Quechua (Runa Simi)
+ * @author AlimanRuna
+ */
+$messages['qu'] = array(
+ 'pfunc_desc' => 'Parser nisqata sullwa ruranakunawan allinchay',
+ 'pfunc_time_error' => 'Pantasqa: Pachaqa manam allinchu',
+ 'pfunc_time_too_long' => 'Pantasqa: nisyu "#time" (pacha)',
+ 'pfunc_time_too_big' => "Pantasqa: #time nisqaqa 9999 watallakamam watakunata q'imin",
+ 'pfunc_rel2abs_invalid_depth' => 'Pantasqa: ñanpa ukhu kayninqa manam allinchu: "$1" (saphi khipu hawanpi kaq khiputam aypayta munaspa)',
+ 'pfunc_expr_stack_exhausted' => 'Rikuchikuypi pantasqa: Nisyu tawqa',
+ 'pfunc_expr_unexpected_number' => 'Rikuchikuypi pantasqa: Mana suyakusqa yupay',
+ 'pfunc_expr_preg_match_failure' => 'Rikuchikuypi pantasqa: Mana suyakusqa preg_match alqa',
+ 'pfunc_expr_unrecognised_word' => 'Rikuchikuypi pantasqa: Mana riqsisqa rima "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Rikuchikuypi pantasqa: Mana suyakusqa ruraq "$1"',
+ 'pfunc_expr_missing_operand' => 'Rikuchikuypi pantasqa: Manam kanchu $1-paq ruraq',
+ 'pfunc_expr_unexpected_closing_bracket' => "Rikuchikuypi pantasqa: Nisyu wichq'aq qinchaq",
+ 'pfunc_expr_unrecognised_punctuation' => 'Rikuchikuypi pantasqa: Mana riqsisqa qillqa unancha "$1"',
+ 'pfunc_expr_unclosed_bracket' => "Rikuchikuypi pantasqa: Manam kanchu wichq'aq qinchaq",
+ 'pfunc_expr_division_by_zero' => "Ch'usaqwan rakisqa",
+ 'pfunc_expr_invalid_argument' => '$1-paq mana allin ninakuy: : < -1 icha > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'ln-paq mana allin ninakuy: <= 0',
+ 'pfunc_expr_unknown_error' => 'Rikuchikuypi pantasqa: Mana riqsisqa pantasqa ($1)',
+ 'pfunc_expr_not_a_number' => '$1-pi: lluqsiyninqa manam yupaychu',
+ 'pfunc_string_too_long' => 'Pantasqa: Qillqa tiwlliqa $1 sanampa saywatam llallin',
+);
+
+/** Romanian (Română)
+ * @author KlaudiuMihaila
+ * @author Minisarm
+ * @author Stelistcristi
+ */
+$messages['ro'] = array(
+ 'pfunc_desc' => 'Îmbunătățiți parser-ul cu funcții logice',
+ 'pfunc_time_error' => 'Eroare: timp incorect',
+ 'pfunc_time_too_long' => 'Eroare: prea multe apeluri #time',
+ 'pfunc_rel2abs_invalid_depth' => 'Eroare: adâncime incorectă în cale: "$1" (încercat accesarea unui nod deasupra nodului rădăcină)',
+ 'pfunc_expr_stack_exhausted' => 'Eroare de expresie: Stivă epuizată',
+ 'pfunc_expr_unexpected_number' => 'Eroare de expresie: număr neașteptat',
+ 'pfunc_expr_preg_match_failure' => 'Eroare de expresie: eșuare preg_match neașteptată',
+ 'pfunc_expr_unrecognised_word' => 'Eroare de expresie: "$1" este cuvânt necunoscut',
+ 'pfunc_expr_unexpected_operator' => 'Eroare de expresie: operator $1 neașteptat',
+ 'pfunc_expr_missing_operand' => 'Eroare de expresie: operand lipsă pentru $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Eroare de expresie: paranteză închisă neașteptată',
+ 'pfunc_expr_unrecognised_punctuation' => 'Eroare de expresie: caracter de punctuație „$1†necunoscut',
+ 'pfunc_expr_unclosed_bracket' => 'Eroare de expresie: paranteză neînchisă',
+ 'pfunc_expr_division_by_zero' => 'Împărțire la zero',
+ 'pfunc_expr_invalid_argument' => 'Argument incorect pentru $1: < -1 sau > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argument incorect pentru ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Eroare de expresie: eroare necunoscută ($1)',
+ 'pfunc_expr_not_a_number' => 'În $1: rezultatul nu este un număr',
+ 'pfunc_string_too_long' => 'Eroare: Şirul depășește limita de caractere de $1',
+);
+
+/** Tarandíne (Tarandíne)
+ * @author Joetaras
+ */
+$messages['roa-tara'] = array(
+ 'pfunc_desc' => "L'analizzatore avanzate cu le funziune loggeche",
+ 'pfunc_time_error' => 'Errore: Orarie invalide',
+ 'pfunc_time_too_long' => 'Errore: stonne troppe #time chiamate',
+ 'pfunc_rel2abs_invalid_depth' => "Errore: Profondità invalide jndr'à 'u percorse: \"\$1\" (s'à pruvate a pigghià 'nu node sus a 'u node radice)",
+ 'pfunc_expr_stack_exhausted' => 'Espressione in errore: Stack anghiute',
+ 'pfunc_expr_unexpected_number' => 'Espressione in errore: Numere inaspettate',
+ 'pfunc_expr_preg_match_failure' => 'Espressione in errore: preg_match inaspettate e fallite',
+ 'pfunc_expr_unrecognised_word' => 'Espressione in errore: Parola scanusciute "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Espressione in errore: Operatore $1 inaspettate',
+ 'pfunc_expr_missing_operand' => 'Espressione in errore: Operande zumbate pe $1',
+ 'pfunc_expr_unexpected_closing_bracket' => "Espressione in errore: Non g'onne state achiuse le parendesi",
+ 'pfunc_expr_unrecognised_punctuation' => 'Espressione in errore: Carattere de punde "$1" scanusciute',
+ 'pfunc_expr_unclosed_bracket' => 'Espressione in errore: Parendesi non achiuse',
+ 'pfunc_expr_division_by_zero' => 'Divisione pe zero',
+ 'pfunc_expr_invalid_argument' => 'Argomende invalide pe $1: < -1 o > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argomende invalide pe ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Espressione in errore: Errore scanusciute ($1)',
+ 'pfunc_expr_not_a_number' => "In $1: 'u resultate non g'è 'nu numere",
+ 'pfunc_string_too_long' => "Errore: 'A stringhe supranesce 'u limite de $1 carattere",
+);
+
+/** Russian (РуÑÑкий)
+ * @author G0rn
+ * @author ÐлекÑандр Сигачёв
+ */
+$messages['ru'] = array(
+ 'pfunc_desc' => 'Улучшенный ÑинтакÑичеÑкий анализатор Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐµÑкими функциÑми',
+ 'pfunc_time_error' => 'Ошибка: неправильное времÑ',
+ 'pfunc_time_too_long' => 'Ошибка: Ñлишком много вызовов функции #time',
+ 'pfunc_time_too_big' => 'Ошибка. Параметр #time не может превышать 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Ошибка: Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð°Ñ Ð³Ð»ÑƒÐ±Ð¸Ð½Ð° пути: «$1» (попытка доÑтупа к узлу, находÑщемуÑÑ Ð²Ñ‹ÑˆÐµ, чем корневой)',
+ 'pfunc_expr_stack_exhausted' => 'Ошибка выражениÑ: переполнение Ñтека',
+ 'pfunc_expr_unexpected_number' => 'Ошибка выражениÑ: неожидаемое чиÑло',
+ 'pfunc_expr_preg_match_failure' => 'Ошибка выражениÑ: Ñбой preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Ошибка выражениÑ: неопознанное Ñлово «$1»',
+ 'pfunc_expr_unexpected_operator' => 'Ошибка выражениÑ: неожидаемый оператор $1',
+ 'pfunc_expr_missing_operand' => 'Ошибка выражениÑ: $1 не хватает операнда',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Ошибка выражениÑ: Ð½ÐµÐ¾Ð¶Ð¸Ð´Ð°ÐµÐ¼Ð°Ñ Ð·Ð°ÐºÑ€Ñ‹Ð²Ð°ÑŽÑ‰Ð°Ñ Ñкобка',
+ 'pfunc_expr_unrecognised_punctuation' => 'Ошибка выражениÑ: неопознанный Ñимвол пунктуации «$1»',
+ 'pfunc_expr_unclosed_bracket' => 'Ошибка выражениÑ: Ð½ÐµÐ·Ð°ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ñкобка',
+ 'pfunc_expr_division_by_zero' => 'Деление на ноль',
+ 'pfunc_expr_invalid_argument' => 'Ошибочный аргумент $1: < -1 или > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ошибочный аргумент ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Ошибка выражениÑ: неизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° ($1)',
+ 'pfunc_expr_not_a_number' => 'Ð’ $1: результат не ÑвлÑетÑÑ Ñ‡Ð¸Ñлом',
+ 'pfunc_string_too_long' => 'Ошибка: Ñтрока превышает ограничение в $1 Ñимволов',
+ 'pfunc-convert-dimensionmismatch' => 'Ошибка. Ðе удаетÑÑ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ñ‚ÑŒ единицы Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Â«$1» и «$2».',
+ 'pfunc-convert-unknownunit' => 'Ошибка. ÐеизвеÑÑ‚Ð½Ð°Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð° «$1».',
+ 'pfunc-convert-unknowndimension' => 'Ошибка. ÐеизвеÑÑ‚Ð½Ð°Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð½Ð¾ÑÑ‚ÑŒ «$1».',
+ 'pfunc-convert-invalidcompoundunit' => 'Ошибка. ÐедопуÑÑ‚Ð¸Ð¼Ð°Ñ ÑоÑÑ‚Ð°Ð²Ð½Ð°Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð° «$1».',
+ 'pfunc-convert-nounit' => 'Ошибка. Ðе указана иÑÑ…Ð¾Ð´Ð½Ð°Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð°.',
+ 'pfunc-convert-doublecompoundunit' => 'Ошибка. Ðевозможно разобрать двойные ÑоÑтавные единицы вида «$1».',
+ 'pfunc-convert-dimension-length' => 'длина',
+ 'pfunc-convert-dimension-area' => 'площадь',
+ 'pfunc-convert-dimension-volume' => 'объём',
+ 'pfunc-convert-dimension-time' => 'времÑ',
+ 'pfunc-convert-dimension-timesquared' => 'времÑ<sup>2</sup>',
+ 'pfunc-convert-dimension-mass' => 'маÑÑа',
+ 'pfunc-convert-dimension-speed' => 'ÑкороÑÑ‚ÑŒ',
+ 'pfunc-convert-dimension-temperature' => 'температура',
+ 'pfunc-convert-dimension-acceleration' => 'уÑкорение',
+ 'pfunc-convert-dimension-force' => 'Ñила',
+ 'pfunc-convert-dimension-torque' => 'крутÑщий момент',
+ 'pfunc-convert-dimension-energy' => 'ÑнергиÑ',
+ 'pfunc-convert-dimension-power' => 'мощноÑÑ‚ÑŒ',
+ 'pfunc-convert-dimension-pressure' => 'давление',
+ 'pfunc-convert-dimension-density' => 'плотноÑÑ‚ÑŒ',
+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'Ð¿Ð¾Ð·Ð¸Ñ‚Ð¸Ð²Ð½Ð°Ñ Ñ‚Ð¾Ð¿Ð»Ð¸Ð²Ð½Ð°Ñ ÑффективноÑÑ‚ÑŒ',
+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'Ð½ÐµÐ³Ð°Ñ‚Ð¸Ð²Ð½Ð°Ñ Ñ‚Ð¾Ð¿Ð»Ð¸Ð²Ð½Ð°Ñ ÑффективноÑÑ‚ÑŒ',
+ 'pfunc-convert-prefix-yotta' => 'йотта',
+ 'pfunc-convert-prefix-zetta' => 'зетта',
+ 'pfunc-convert-prefix-exa' => 'ÑкÑа',
+ 'pfunc-convert-prefix-peta' => 'пета',
+ 'pfunc-convert-prefix-tera' => 'тера',
+ 'pfunc-convert-prefix-giga' => 'гига',
+ 'pfunc-convert-prefix-mega' => 'мега',
+ 'pfunc-convert-prefix-kilo' => 'кило',
+ 'pfunc-convert-prefix-hecto' => 'гекто',
+ 'pfunc-convert-prefix-deca' => 'дека',
+ 'pfunc-convert-prefix-deci' => 'деци',
+ 'pfunc-convert-prefix-centi' => 'Ñанти',
+ 'pfunc-convert-prefix-milli' => 'милли',
+ 'pfunc-convert-prefix-micro' => 'микро',
+ 'pfunc-convert-prefix-nano' => 'нано',
+ 'pfunc-convert-prefix-pico' => 'пико',
+ 'pfunc-convert-prefix-femto' => 'фемто',
+ 'pfunc-convert-prefix-atto' => 'атто',
+ 'pfunc-convert-prefix-zepto' => 'зепто',
+ 'pfunc-convert-prefix-yocto' => 'йокто',
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2метр|$2метра|$2метров}}',
+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|ангÑтрем|ангÑтрема|ангÑтрем}}',
+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|милÑ|мили|миль}}',
+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|фурлонг|фурлонга|фурлонгов}}',
+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|чейн|чейна|чейнов}}',
+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|род|рода|родов}}',
+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|фатом|фатома|фатомов}}',
+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|Ñрд|Ñрда|Ñрдов}}',
+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|фут|фута|футов}}',
+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|Ñ…Ñнд|Ñ…Ñнда|Ñ…Ñндов}}',
+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|дюйм|дюйма|дюймов}}',
+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|морÑÐºÐ°Ñ Ð¼Ð¸Ð»Ñ|морÑкие мили|морÑких милей}}',
+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|морÑÐºÐ°Ñ Ð¼Ð¸Ð»Ñ (британÑÐºÐ°Ñ Ð´Ð¾ 1970)|морÑкие мили (британÑких до 1970)|морÑких миль (британÑких до 1970)}}',
+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1|морÑÐºÐ°Ñ Ð¼Ð¸Ð»Ñ (СШРдо 1970)|морÑкие мили (СШРдо 1970)|морÑких миль (СШРдо 1970)}}',
+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2парÑек|$2парÑека|$2парÑек}}',
+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1|$2 Ñветовой год|$2 Ñветовых года|$2 Ñветовых лет}}',
+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|аÑтрономичеÑÐºÐ°Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ†Ð°|аÑтрономичеÑкие единицы|аÑтрономичеÑких единиц}}',
+ 'pfunc-convert-unit-length-furlong-abbr' => 'фурлонг',
+ 'pfunc-convert-unit-length-chain-abbr' => 'чейн',
+ 'pfunc-convert-unit-length-rod-abbr' => 'род',
+ 'pfunc-convert-unit-length-fathom-abbr' => 'фатом',
+ 'pfunc-convert-unit-length-yard-abbr' => 'Ñрд',
+ 'pfunc-convert-unit-length-foot-abbr' => 'фут',
+ 'pfunc-convert-unit-length-hand-abbr' => 'Ñ…Ñнд',
+ 'pfunc-convert-unit-length-inch-abbr' => 'дюйм',
+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'морÑÐºÐ°Ñ Ð¼Ð¸Ð»Ñ',
+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'брит. морÑÐºÐ°Ñ Ð¼Ð¸Ð»Ñ',
+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'морÑÐºÐ°Ñ Ð¼Ð¸Ð»Ñ (СШРдо 1954)',
+ 'pfunc-convert-unit-length-parsec-abbr' => '$2 пк',
+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2 Ñв. г.',
+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'а. е.',
+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|квадратный километр|квадратных километра|квадратных километров}}',
+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|квадратный метр|квадратных метра|квадратных метров}}',
+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|квадратный Ñантиметр|квадратных Ñантиметра|квадратных Ñантиметров}}',
+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|квадратный миллиметр|квадратных миллиметра|квадратных миллиметров}}',
+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|гектар|гектара|гектар}}',
+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð°Ñ Ð¼Ð¸Ð»Ñ|квадратных мили|квадратных миль}}',
+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|акр|акра|акров}}',
+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|квадратный Ñрд|квадратных Ñрда|квадратных Ñрдов}}',
+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|квадратный фут|квадратных фута|квадратных футов}}',
+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|квадратный дюйм|квадратных дюйма|квадратных дюймов}}',
+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|ÐºÐ²Ð°Ð´Ñ€Ð°Ñ‚Ð½Ð°Ñ Ð¼Ð¾Ñ€ÑÐºÐ°Ñ Ð¼Ð¸Ð»Ñ|квадратные морÑкие мили|квадратных морÑких миль}}',
+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|дунам|дунама|дунамов}}',
+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|цубо|цубо|цубо}}',
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'км<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'м<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'Ñм<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'мм<sup>2</sup>',
+ 'pfunc-convert-unit-area-hectare-abbr' => 'га',
+ 'pfunc-convert-unit-area-squaremile-abbr' => 'кв. ми',
+ 'pfunc-convert-unit-area-acre-abbr' => 'акр',
+ 'pfunc-convert-unit-area-squareyard-abbr' => 'кв. Ñрд',
+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'кв. м',
+ 'pfunc-convert-unit-area-squareinch-abbr' => 'кв. дюйм',
+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'кв. м. ми',
+ 'pfunc-convert-unit-area-dunam-abbr' => 'дунам',
+ 'pfunc-convert-unit-area-tsubo-abbr' => 'цубо',
+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|Ñекунда|Ñекунды|Ñекунд}}',
+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|$2год|$2года|$2лет}}',
+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|день|днÑ|дней}}',
+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|чаÑ|чаÑа|чаÑов}}',
+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|минута|минуты|минут}}',
+ 'pfunc-convert-unit-time-second-abbr' => 'Ñ',
+ 'pfunc-convert-unit-time-year-abbr' => '$2 г',
+ 'pfunc-convert-unit-time-day-abbr' => 'дн',
+ 'pfunc-convert-unit-time-hour-abbr' => 'ч.',
+ 'pfunc-convert-unit-time-minute-abbr' => 'м.',
+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|кубичеÑкий метр|кубичеÑких метра|кубичеÑких метров}}',
+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|кубичеÑкий Ñантиметр|кубичеÑких Ñантиметра|кубичеÑких Ñантиметров}}',
+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|кубичеÑкий миллиметр|кубичеÑких миллиметра|кубичеÑких миллиметров}}',
+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|килолитр|килолитра|килолитров}}',
+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|литр|литра|литров}}',
+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|Ñантилитр|Ñантилитра|Ñантилитров}}',
+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|миллилитр|миллилитра|миллилитров}}',
+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|кубичеÑкий Ñрд|кубичеÑких Ñрда|кубичеÑких Ñрдов}}',
+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|кубичеÑкий фут|кубичеÑких фута|кубичеÑких футов}}',
+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|кубичеÑкий дюйм|кубичеÑких дюйма|кубичеÑких дюймов}}',
+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|баррель|баррелÑ|баррелей}}',
+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|бушель|бушелÑ|бушелей}}',
+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|галлон|галлона|галлонов}}',
+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|кварта|кварты|кварт}}',
+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|пинта|пинты|пинт}}',
+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1|Ð¶Ð¸Ð´ÐºÐ°Ñ ÑƒÐ½Ñ†Ð¸Ñ|жидких унции|жидких унций}}',
+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1|баррель СШÐ|Ð±Ð°Ñ€Ñ€ÐµÐ»Ñ Ð¡Ð¨Ð|баррелей СШÐ}}',
+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1|баррель|баррелÑ|баррелей}}',
+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1|баррель|баррелÑ|баррелей}}',
+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|галлон СШÐ|галлона СШÐ|галлонов СШÐ}}',
+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|кварта СШÐ|кварты СШÐ|кварт СШÐ}}',
+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|пинта СШÐ|пинты СШÐ|пинт СШÐ}}',
+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1|Ð¶Ð¸Ð´ÐºÐ°Ñ ÑƒÐ½Ñ†Ð¸Ñ Ð¡Ð¨Ð|жидких унции СШÐ|жидких унций СШÐ}}',
+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1|Ñухой баррель СШÐ|Ñухих Ð±Ð°Ñ€Ñ€ÐµÐ»Ñ Ð¡Ð¨Ð|Ñухих баррелей СШÐ}}',
+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1|бушель СШÐ|Ð±ÑƒÑˆÐµÐ»Ñ Ð¡Ð¨Ð|бушелей СШÐ}}',
+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|Ñухой галлон СШÐ|Ñухих галлона СШÐ|Ñухих галлонов СШÐ}}',
+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|ÑÑƒÑ…Ð°Ñ ÐºÐ²Ð°Ñ€Ñ‚Ð° СШÐ|Ñухие кварты СШÐ|Ñухих кварт СШÐ}}',
+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|ÑÑƒÑ…Ð°Ñ Ð¿Ð¸Ð½Ñ‚Ð° СШÐ|Ñухих пинты СШÐ|Ñухих пинт СШÐ}}',
+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'м<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'Ñм<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'мм<sup>3</sup>',
+ 'pfunc-convert-unit-volume-litre-abbr' => '$2 л',
+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'куб. Ñрд',
+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'куб. фут',
+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'куб. дюйм',
+ 'pfunc-convert-unit-volume-barrel-abbr' => 'бр.',
+ 'pfunc-convert-unit-volume-bushel-abbr' => 'бш.',
+ 'pfunc-convert-unit-volume-gallon-abbr' => 'гал.',
+ 'pfunc-convert-unit-volume-quart-abbr' => 'кв.',
+ 'pfunc-convert-unit-volume-pint-abbr' => 'пт.',
+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'жид. унц.',
+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'бр. СШÐ',
+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'бр.',
+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'бр.',
+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'гал. СШÐ',
+ 'pfunc-convert-unit-volume-usquart-abbr' => 'кт. СШÐ',
+ 'pfunc-convert-unit-volume-uspint-abbr' => 'пт. СШÐ',
+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'жид. унц. СШÐ',
+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'бр. СШÐ',
+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'вш. СШÐ',
+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'Ñух. гал. СШÐ',
+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'Ñух. кт. СШÐ',
+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'Ñух. пт. СШÐ',
+ 'pfunc-convert-unit-speed-mile-hour' => 'миль/чаÑ',
+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'миль/ч',
+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|$2паÑкаль|$2паÑкалÑ|$2паÑкалей}}',
+ 'pfunc-convert-unit-pressure-bar' => 'бар',
+ 'pfunc-convert-unit-pressure-decibar' => 'децибар',
+ 'pfunc-convert-unit-pressure-millibar' => 'миллибар',
+ 'pfunc-convert-unit-pressure-kilobarye' => 'килобариÑ',
+ 'pfunc-convert-unit-pressure-barye' => 'бариÑ',
+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|атмоÑфера|атмоÑферы|атмоÑфер}}',
+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|торр|торра|торр}}',
+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|миллиметр ртутного Ñтолба|миллиметра ртутного Ñтолба|миллиметров ртутного Ñтолба}}',
+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|дюйм ртутного Ñтолба|дюйма ртутного Ñтолба|дюймов ртутного Ñтолба}}',
+ 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1|фунт на квадратный дюйм|фунта на квадратный дюйм|фунтов на квадратный дюйм}}',
+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Па',
+ 'pfunc-convert-unit-pressure-bar-abbr' => 'бар',
+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'дбар',
+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'мбар',
+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'КБа',
+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ба',
+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'атм',
+ 'pfunc-convert-unit-pressure-torr-abbr' => 'торр',
+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'мм рт. ÑÑ‚.',
+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'дюйм. рт. ÑÑ‚.',
+ 'pfunc-convert-unit-pressure-psi-abbr' => 'фунт. на кв. дюйм',
+);
+
+/** Rusyn (РуÑиньÑкый)
+ * @author Gazeb
+ */
+$messages['rue'] = array(
+ 'pfunc_desc' => 'РоÑÑˆÑ‹Ñ€Ñ—Ð½Ñ Ð¿Ð°Ñ€Ñера о лоґічны функції',
+ 'pfunc_time_error' => 'Хына: неплатный чаÑ',
+ 'pfunc_time_too_long' => 'Хыба: дуже много ÐºÐ»Ð¸ÐºÐ°Ð½Ñ #time',
+ 'pfunc_rel2abs_invalid_depth' => 'Хыба: Ðеплатна глубка в Ñтежцї: "$1" (проба о приÑтуп до узла выÑшого Ñк корїнь)',
+ 'pfunc_expr_stack_exhausted' => 'Хыба выразу: ЗаÑобник переповненый',
+ 'pfunc_expr_unexpected_number' => 'Хыба выразу: Чекане чіÑло',
+ 'pfunc_expr_preg_match_failure' => 'Хыба выразу: Ðечекана хыба функції preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Хыба выразу: Ðерозпознане Ñлово „$1“',
+ 'pfunc_expr_unexpected_operator' => 'Хыба выразу: Ðечеканый оператор: $1',
+ 'pfunc_expr_missing_operand' => 'Хыба выразу: Хыбить операнд про $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Хыба выразу: Ðечекана заперача заперка',
+ 'pfunc_expr_unrecognised_punctuation' => 'Хыба выразу: Ðерозпознаный роздїловый знак „$1“',
+ 'pfunc_expr_unclosed_bracket' => 'Хыба ыразу: Ðезаперты заперкы',
+ 'pfunc_expr_division_by_zero' => 'Ð”Ñ—Ð»Ñ—Ð½Ñ Ð½ÑƒÐ»Ð¾Ð²',
+ 'pfunc_expr_invalid_argument' => 'Ðеправилный арґумент про $1: < -1 або > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ðеправилный арґумент про ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Хыба выразу: Ðезнама хыба ($1)',
+ 'pfunc_expr_not_a_number' => 'У $1: резултат не Ñ” чіÑло',
+ 'pfunc_string_too_long' => 'Хыба: Ланц Ñ” довшый Ñк $1 {{PLURAL:$1|знак|знакы|знаків}}, што Ñ” ліміт',
+);
+
+/** Yakut (Саха тыла)
+ * @author HalanTul
+ */
+$messages['sah'] = array(
+ 'pfunc_desc' => 'ЛогичеÑкай функциÑлаах тупÑарыллыбыт ÑинтакÑичеÑкай анализатор',
+ 'pfunc_time_error' => 'ÐлҕаÑ: Ñыыһа кÑм',
+ 'pfunc_time_too_long' => 'ÐлҕаÑ: #time Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ Ð½Ð°Ò»Ð°Ð° ÑлбÑхтик хатыламмыт',
+ 'pfunc_time_too_big' => 'ÐлҕаÑ: #time 9999-у ааһыа Ñуохтаах',
+ 'pfunc_rel2abs_invalid_depth' => 'ÐлҕаÑ: Ð¾ÑˆÐ¸Ð±Ð¾Ñ‡Ð½Ð°Ñ Ð³Ð»ÑƒÐ±Ð¸Ð½Ð° пути: «$1» (попытка доÑтупа к узлу, находÑщемуÑÑ Ð²Ñ‹ÑˆÐµ, чем корневой)',
+ 'pfunc_expr_stack_exhausted' => 'Ошибка выражениÑ: переполнение Ñтека',
+ 'pfunc_expr_unexpected_number' => 'ÐлҕаÑ: кÑÑ‚ÑһиллибÑÑ‚ÑÑ… чыыһыла',
+ 'pfunc_expr_preg_match_failure' => 'ÐлҕаÑ: preg_match моһуоктанна',
+ 'pfunc_expr_unrecognised_word' => 'ÐлҕаÑ: биллибÑÑ‚ тыл «$1»',
+ 'pfunc_expr_unexpected_operator' => 'ÐлҕаÑ: кÑÑ‚ÑһиллибÑÑ‚ÑÑ… оператор $1',
+ 'pfunc_expr_missing_operand' => 'ÐлҕаÑ: $1 операнда тиийбÑÑ‚',
+ 'pfunc_expr_unexpected_closing_bracket' => 'ÐлҕаÑ: кÑÑ‚ÑһиллибÑÑ‚ÑÑ… Ñабар уÑкуопка',
+ 'pfunc_expr_unrecognised_punctuation' => 'ÐлҕаÑ: биллибÑÑ‚ Ð¿ÑƒÐ½ÐºÑ‚ÑƒÐ°Ñ†Ð¸Ñ Ð±ÑлиÑÑ‚Ñ Â«$1»',
+ 'pfunc_expr_unclosed_bracket' => 'ÐлҕаÑ: Ñабыллыбатах уÑкуопка',
+ 'pfunc_expr_division_by_zero' => 'Ðуулга Ñ‚Ò¯Ò¥Ñттии',
+ 'pfunc_expr_invalid_argument' => '$1 Ð°Ð»Ò•Ð°Ñ Ð°Ñ€Ð³ÑƒÐ¼ÐµÐ½Ð½Ð°Ð°Ñ…: < -1 or > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'ln аргумена Ñыыһалаах: <= 0',
+ 'pfunc_expr_unknown_error' => 'Expression error (ошибка выражениÑ): БиллибÑÑ‚ Ð°Ð»Ò•Ð°Ñ ($1)',
+ 'pfunc_expr_not_a_number' => '$1 иһигÑÑ€: ÑппиÑÑ‚Ñ Ñ‡Ñ‹Ñ‹Ò»Ñ‹Ð»Ð° буолбатах',
+ 'pfunc_string_too_long' => 'ÐлҕаÑ: УÑтуруока уһуна $1 бÑлиÑннÑн хааччахха баппат',
+);
+
+/** Sicilian (Sicilianu)
+ * @author Melos
+ * @author Santu
+ */
+$messages['scn'] = array(
+ 'pfunc_desc' => 'Ci junci ô parser na sèrii di funzioni lòggichi',
+ 'pfunc_time_error' => 'Sbàgghiu: uràriu nun vàlidu',
+ 'pfunc_time_too_long' => 'Sbàgghiu: troppi chiamati a #time',
+ 'pfunc_rel2abs_invalid_depth' => 'Sbàgghiu: prufunnità non vàlida ntô pircorsu "$1" (si tintau di tràsiri a nu nodu cchiù supra di la ràdica)',
+ 'pfunc_expr_stack_exhausted' => 'Sbàgghiu nti la sprissioni: lu stack finìu',
+ 'pfunc_expr_unexpected_number' => 'Sbàgghiu nti la sprissioni: nùmmiru non privistu',
+ 'pfunc_expr_preg_match_failure' => "Sbàgghiu nti la sprissioni: sbàgghiu non privistu 'n preg_match",
+ 'pfunc_expr_unrecognised_word' => 'Sbàgghiu nti la sprissioni: palora "$1" non canusciuta',
+ 'pfunc_expr_unexpected_operator' => 'Sbàgghiu nti la sprissioni: upiraturi $1 non privistu',
+ 'pfunc_expr_missing_operand' => 'Sbàgghiu nti la sprissioni: upirandu mancanti pi $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Sbàgghiu nti la sprissioni: parèntisi chiusa non aspittata',
+ 'pfunc_expr_unrecognised_punctuation' => 'Sbàgghiu nti la sprissioni: caràttiri di puntiggiatura "$1" non canusciutu',
+ 'pfunc_expr_unclosed_bracket' => 'Sbàgghiu nti la sprissioni: parèntisi non chiuruta',
+ 'pfunc_expr_division_by_zero' => 'Divisioni pi zeru',
+ 'pfunc_expr_invalid_argument' => 'Argumentu non vàlidu pi $1: < -1 o > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argumentu non vàlidu pi ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Sbàgghiu nti la sprissioni: sbàgghiu scanusciutu ($1)',
+ 'pfunc_expr_not_a_number' => 'Nti $1: lu risurtatu nun è nu nùmmiru',
+ 'pfunc_string_too_long' => 'Erruri: la stringa supira lu limiti di $1 carattiri',
+);
+
+/** Sinhala (සිංහල)
+ * @author Budhajeewa
+ * @author නන්දිමිතුරු
+ */
+$messages['si'] = array(
+ 'pfunc_desc' => 'තà·à¶»à·Šà¶šà·“ක à·à·Šâ€à¶»à·’තයන් උපයà·à¶œà·“ කරගනිමින් ව්â€à¶ºà·à¶šà¶»à¶« විග්â€à¶»à·„කය වර්ධනය කරන්න',
+ 'pfunc_time_error' => 'දà·à·‚ය: අනීතික වේලà·à·€',
+ 'pfunc_time_too_long' => 'දà·à·‚ය: වේල෠ඇමතුම් # පමණට à·€à·à¶©à·’ය',
+ 'pfunc_rel2abs_invalid_depth' => 'දà·à·‚ය: පෙතෙහි ගà·à¶¹à·”ර අනීතිකයි: "$1" (මූල මංසලට ඉහළ මංසලක් ප්â€à¶»à·€à·šà·à¶±à¶ºà¶§ උත්සà·à·„ දà·à¶»à·’ණි)',
+ 'pfunc_expr_stack_exhausted' => 'ප්â€à¶»à¶šà·à·à¶± දà·à·‚ය: ඇසිරුම හිස්ව පà·à·€à¶­à·’ණි',
+ 'pfunc_expr_unexpected_number' => 'ප්â€à¶»à¶šà·à·à¶± දà·à·‚ය: අනපේක්â€à·‚ිත සංඛ්â€à¶ºà·à·€',
+ 'pfunc_expr_preg_match_failure' => 'ප්â€à¶»à¶šà·à·à¶± දà·à·‚ය: බලà·à¶´à·œà¶»à·œà¶­à·Šà¶­à·” නොවූ preg_match ඇණහිටුම',
+ 'pfunc_expr_unrecognised_word' => 'ප්â€à¶»à¶šà·à·à¶± දà·à·‚ය: හඳුනà·à¶±à·œà¶œà¶­à·Š වදන "$1"',
+ 'pfunc_expr_unexpected_operator' => 'ප්â€à¶»à¶šà·à·à¶± දà·à·‚ය: අනපේක්â€à·‚ිත $1 මෙහෙයුම්කà·à¶»à¶šà¶º',
+ 'pfunc_expr_missing_operand' => 'ප්â€à¶»à¶šà·à·à¶± දà·à·‚ය: $1 සඳහ෠අස්ථà·à¶±à¶œà¶­ ප්â€à¶»à·€à¶»à·Šà¶­à·Šâ€à¶ºà¶º',
+ 'pfunc_expr_unexpected_closing_bracket' => 'ප්â€à¶»à¶šà·à·à¶± දà·à·‚ය: අනපේක්â€à·‚ිත à·€à·à·ƒà·“ම් වරහන',
+ 'pfunc_expr_unrecognised_punctuation' => 'ප්â€à¶»à¶šà·à·à¶± දà·à·‚ය: හඳුනà·à¶±à·œà¶œà¶­à·Š විරà·à¶¸ අක්ෂරය "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'ප්â€à¶»à¶šà·à·à¶± දà·à·‚ය: නොවà·à·ƒà·– වරහන',
+ 'pfunc_expr_division_by_zero' => 'à·à·”න්â€à¶ºà¶ºà·™à¶±à·Š බෙදීම',
+ 'pfunc_expr_invalid_argument' => '$1: < -1 à·„à· > 1 සඳහ෠අනීතික විස්තà·à¶»à¶šà¶º',
+ 'pfunc_expr_invalid_argument_ln' => 'ln: <= 0 සඳහ෠අනීතික විස්තà·à¶»à¶šà¶º',
+ 'pfunc_expr_unknown_error' => 'ප්â€à¶»à¶šà·à·à¶± දà·à·‚ය: අඥà·à¶­ දà·à·‚ය ($1)',
+ 'pfunc_expr_not_a_number' => '$1: à·„à·’ ප්â€à¶»à¶­à·’ඵලය සංඛ්â€à¶ºà·à·€à¶šà·Š නොවේ',
+ 'pfunc_string_too_long' => 'Error: වදන් පෙළ අකුරු $1 සීමà·à·€ ඉක්මවයි',
+);
+
+/** Slovak (SlovenÄina)
+ * @author Helix84
+ */
+$messages['sk'] = array(
+ 'pfunc_desc' => 'Rozšírenie syntaktického analyzátora o logické funkcie',
+ 'pfunc_time_error' => 'Chyba: Neplatný Äas',
+ 'pfunc_time_too_long' => 'Chyba: príliš veľa volaní #time',
+ 'pfunc_rel2abs_invalid_depth' => 'Chyba: Neplatná hĺbka v ceste: „$1“ (pokus o prístup k uzlu nad koreňovým uzlom)',
+ 'pfunc_expr_stack_exhausted' => 'Chyba výrazu: Zásobník vyÄerpaný',
+ 'pfunc_expr_unexpected_number' => 'Chyba výrazu: NeoÄakávané Äíslo',
+ 'pfunc_expr_preg_match_failure' => 'Chyba výrazu: NeoÄakávané zlyhanie funkcie preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Chyba výrazu: Nerozpoznané slovo „$1“',
+ 'pfunc_expr_unexpected_operator' => 'Chyba výrazu: NeoÄakávaný operátor $1',
+ 'pfunc_expr_missing_operand' => 'Chyba výrazu: Chýbajúci operand pre $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Chyba výrazu: NeoÄakávaná zatvárajúca hranatá zátvorka',
+ 'pfunc_expr_unrecognised_punctuation' => 'Chyba výrazu: Nerozpoznané diakritické znamienko „$1“',
+ 'pfunc_expr_unclosed_bracket' => 'Chyba výrazu: Neuzavretá hranatá zátvorka',
+ 'pfunc_expr_division_by_zero' => 'Chyba výrazu: Delenie nulou',
+ 'pfunc_expr_invalid_argument' => 'Neplatný argument pre $1: < -1 alebo > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Neplatný argument pre ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Chyba výrazu: Neznáma chyba ($1)',
+ 'pfunc_expr_not_a_number' => 'V $1: výsledok nie je Äíslo',
+ 'pfunc_string_too_long' => 'Chyba: ReÅ¥azec prekraÄuje limit $1 znakov',
+);
+
+/** Slovenian (SlovenÅ¡Äina)
+ * @author Dbc334
+ */
+$messages['sl'] = array(
+ 'pfunc_desc' => 'IzboljÅ¡a razÄlenjevalnik z logiÄnimi funkcijami',
+ 'pfunc_time_error' => 'Napaka: neveljaven Äas',
+ 'pfunc_time_too_long' => 'Napaka: preveÄ klicev #time',
+ 'pfunc_time_too_big' => 'Napaka: #time podpira samo leta do 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Napaka: Neveljavna globina poti: »$1« (poskus dostopanja do vozliÅ¡Äa viÅ¡jega od korenskega vozliÅ¡Äa)',
+ 'pfunc_expr_stack_exhausted' => 'Napaka v izrazu: Sklad je izÄrpan',
+ 'pfunc_expr_unexpected_number' => 'Napaka v izrazu: NepriÄakovani Å¡tevilo',
+ 'pfunc_expr_preg_match_failure' => 'Napaka v izrazu: NepriÄakovan neuspeh preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Napaka v izrazu: Neprepoznana beseda »$1«',
+ 'pfunc_expr_unexpected_operator' => 'Napaka v izrazu: NepriÄakovan operator $1',
+ 'pfunc_expr_missing_operand' => 'Napaka v izrazu: ManjkajoÄ operand za $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Napaka v izrazu: NepriÄakovan zakljuÄni oklepaj',
+ 'pfunc_expr_unrecognised_punctuation' => 'Napaka v izrazu: NepriÄakovan znak za loÄilo »$1«',
+ 'pfunc_expr_unclosed_bracket' => 'Napaka v izrazu: Nezaprti oklepaj',
+ 'pfunc_expr_division_by_zero' => 'Deljenje z niÄlo',
+ 'pfunc_expr_invalid_argument' => 'NapaÄen argument za $1: < -1 ali > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'NapaÄen argument za ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Napaka v izrazu: Neznana napaka ($1)',
+ 'pfunc_expr_not_a_number' => 'V $1: rezultat ni Å¡tevilo',
+ 'pfunc_string_too_long' => 'Napaka: Niz presega omejitev $1 {{PLURAL:$1|znaka|znakov}}',
+ 'pfunc-convert-dimensionmismatch' => 'Napaka: Ne morem pretvoriti med enotama »$1« in »$2«.',
+ 'pfunc-convert-unknownunit' => 'Napaka: Neznana enota »$1«.',
+ 'pfunc-convert-unknowndimension' => 'Napaka: Neznana razsežnost »$1«.',
+ 'pfunc-convert-invalidcompoundunit' => 'Napaka: Neveljavna sestavljena enota »$1«.',
+ 'pfunc-convert-nounit' => 'Napaka: Izvirna enota ni podana.',
+ 'pfunc-convert-doublecompoundunit' => 'Napaka: Ne morem razÄleniti dvojne sestavljene enote, kot je »$1«.',
+ 'pfunc-convert-dimension-length' => 'dolžina',
+ 'pfunc-convert-dimension-area' => 'ploÅ¡Äina',
+ 'pfunc-convert-dimension-volume' => 'prostornina',
+ 'pfunc-convert-dimension-time' => 'Äas',
+ 'pfunc-convert-dimension-timesquared' => 'Äas<sup>2</sup>',
+ 'pfunc-convert-dimension-mass' => 'masa',
+ 'pfunc-convert-dimension-speed' => 'hitrost',
+ 'pfunc-convert-dimension-temperature' => 'temperatura',
+ 'pfunc-convert-dimension-acceleration' => 'pospešek',
+ 'pfunc-convert-dimension-force' => 'sila',
+ 'pfunc-convert-dimension-torque' => 'navor',
+ 'pfunc-convert-dimension-energy' => 'energija',
+ 'pfunc-convert-dimension-power' => 'moÄ',
+ 'pfunc-convert-dimension-pressure' => 'tlak',
+ 'pfunc-convert-dimension-density' => 'gostota',
+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'pozitivna uÄinkovitost goriva',
+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'negativna uÄinkovitost goriva',
+ 'pfunc-convert-prefix-yotta' => 'jota',
+ 'pfunc-convert-prefix-zetta' => 'zeta',
+ 'pfunc-convert-prefix-exa' => 'eksa',
+ 'pfunc-convert-prefix-peta' => 'peta',
+ 'pfunc-convert-prefix-tera' => 'tera',
+ 'pfunc-convert-prefix-giga' => 'giga',
+ 'pfunc-convert-prefix-mega' => 'mega',
+ 'pfunc-convert-prefix-kilo' => 'kilo',
+ 'pfunc-convert-prefix-hecto' => 'hekto',
+ 'pfunc-convert-prefix-deca' => 'deka',
+ 'pfunc-convert-prefix-deci' => 'deci',
+ 'pfunc-convert-prefix-centi' => 'centi',
+ 'pfunc-convert-prefix-milli' => 'mili',
+ 'pfunc-convert-prefix-micro' => 'mikro',
+ 'pfunc-convert-prefix-nano' => 'nano',
+ 'pfunc-convert-prefix-pico' => 'piko',
+ 'pfunc-convert-prefix-femto' => 'femto',
+ 'pfunc-convert-prefix-atto' => 'ato',
+ 'pfunc-convert-prefix-zepto' => 'zepto',
+ 'pfunc-convert-prefix-yocto' => 'jokto',
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|meter|metra|metri|metrov}}',
+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|angstrem|angstrema|angstremi|angstremov}}',
+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|milja|milji|milje|milj}}',
+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|furlong|furlonga|furlongi|furlongov}}',
+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|veriga|verigi|verige|verig}}',
+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|palica|palici|palice|palic}}',
+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|seženj|sežnja|sežnji|sežnjev}}',
+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|jard|jarda|jardi|jardov}}',
+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|Äevelj|Äevlja|Äevlji|Äeljev}}',
+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|dlan|dlani}}',
+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|palec|palca|palci|palcev}}',
+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|navtiÄna milja|navtiÄni milji|navtiÄne milje|navtiÄnih milj}}',
+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|navtiÄna milja|navtiÄni milji|navtiÄne milje|navtiÄnih milj}} (britanska, pred 1970)',
+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1|navtiÄna milja|navtiÄni milji|navtiÄne milje|navtiÄnih milj}} (ZDA, pred 1954)',
+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|parsek|parseka|parseki|persekov}}',
+ 'pfunc-convert-unit-length-lightyear' => '$2 {{PLURAL:$1|svetlobno leto|svetlobni leti|svetlobna leta|svetlobnih let}}',
+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|astronomska enota|astronomski enoti|astronomske enote|astronomskih enot}}',
+ 'pfunc-convert-unit-length-metre-abbr' => 'm',
+ 'pfunc-convert-unit-length-angstrom-abbr' => 'Ã…',
+ 'pfunc-convert-unit-length-furlong-abbr' => 'furlong',
+ 'pfunc-convert-unit-length-chain-abbr' => 'veriga',
+ 'pfunc-convert-unit-length-rod-abbr' => 'rd',
+ 'pfunc-convert-unit-length-fathom-abbr' => 'seženj',
+ 'pfunc-convert-unit-length-yard-abbr' => 'yd',
+ 'pfunc-convert-unit-length-foot-abbr' => 'ft',
+ 'pfunc-convert-unit-length-hand-abbr' => 'h',
+ 'pfunc-convert-unit-length-inch-abbr' => 'in',
+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'nmi',
+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'nmi (Brit)',
+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'nmi (ZDA, pred 1954)',
+ 'pfunc-convert-unit-length-parsec-abbr' => '$2 pc',
+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2 sv. l.',
+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'a.e.',
+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|kvadratni kilometer|kvadratna kilometra|kvadratni kilometri|kvadratnih kilometrov}}',
+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|kvadratni meter|kvadratna metra|kvadratni metri|kvadratnih metrov}}',
+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|kvadratni centimeter|kvadratna centimetra|kvadratni centimetri|kvadratnih centimetrov}}',
+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|kvadratni milimeter|kvadratna milimetra|kvadratni milimetri|kvadratnih milimetrov}}',
+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hektar|hektara|hektare|hektarov}}',
+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|kvadratna milja|kvadratni milji|kvadratne milje|kvadratnih milj}}',
+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|aker|akra|akri|akrov}}',
+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|kvadratni jard|kvadratna jarda|kvadratni jardi|kvadratnih jardov}}',
+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|kvadratni Äevelj|kvadratna Äevlja|kvadratni Äevlji|kvadratnih Äevljev}}',
+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|kvadratni palec|kvadratna palca|kvadratni palci|kvadratnih palcev}}',
+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|kvadratna navtiÄna milja|kvadratni navtiÄni milji|kvadratne navtiÄne milje|kvadratnih navtiÄnih milj}}',
+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|dunam|dunama|dunami|dunamov}}',
+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|tsubo|tsuba|tsubi|tsubov}}',
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
+ 'pfunc-convert-unit-area-squaremile-abbr' => 'kv. mi',
+ 'pfunc-convert-unit-area-acre-abbr' => 'aker',
+ 'pfunc-convert-unit-area-squareyard-abbr' => 'kv. yd',
+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'kv. ft',
+ 'pfunc-convert-unit-area-squareinch-abbr' => 'kv. in',
+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'kv nmi',
+ 'pfunc-convert-unit-area-dunam-abbr' => 'dunam',
+ 'pfunc-convert-unit-area-tsubo-abbr' => 'tsubo',
+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|sekunda|sekundi|sekunde|sekund}}',
+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|leto|leti|leta|let}}',
+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|dan|dneva|dnevi|dni}}',
+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|ura|uri|ure|ur}}',
+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minuta|minuti|minute|minut}}',
+ 'pfunc-convert-unit-time-second-abbr' => 's',
+ 'pfunc-convert-unit-time-year-abbr' => 'leto',
+ 'pfunc-convert-unit-time-day-abbr' => 'dan',
+ 'pfunc-convert-unit-time-hour-abbr' => 'ura',
+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|kubiÄni meter|kubiÄna metra|kubiÄni metri|kubiÄnih metrov}}',
+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|kubiÄni centimeter|kubiÄna centimetra|kubiÄni centimetri|kubiÄnih centimetrov}}',
+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|kubiÄni milimeter|kubiÄna milimetra|kubiÄni milimetri|kubiÄnih milimetrov}}',
+ 'pfunc-convert-unit-volume-kilolitre' => 'kilo{{PLURAL:$1|liter|litra|litri|litrov}}',
+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|liter|litra|litri|litrov}}',
+ 'pfunc-convert-unit-volume-centilitre' => 'centi{{PLURAL:$1|liter|litra|litri|litrov}}',
+ 'pfunc-convert-unit-volume-millilitre' => 'mili{{PLURAL:$1|liter|litra|litri|litrov}}',
+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|kubiÄni jard|kubiÄna jarda|kubiÄni jardi|kubiÄnih jardov}}',
+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|kubiÄni Äevelj|kubiÄna Äevlja|kubiÄni Äevlji|kubiÄnih Äevljev}}',
+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|kubiÄni palec|kubiÄna palca|kubiÄni palci|kubiÄnih palcev}}',
+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|sod|soda|sodi|sodov}}',
+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1|bušel|bušla|bušli|bušlov}}',
+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|galona|galoni|galone|galon}}',
+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|kvart|kvarta|kvarti|kvartov}}',
+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|pint|pinta|pinti|pintov}}',
+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1|tekoÄinska unÄa|tekoÄinski unÄi|tekoÄinske unÄe|tekoÄinskih unÄ}}',
+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1|ameriški sod|ameriška soda|ameriški sodi|ameriških sodov}}',
+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1|sod|soda|sodi|sodov}}',
+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1|sod|soda|sodi|sodov}}',
+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|ameriška galona|ameriški galoni|ameriške galone|ameriških galon}}',
+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|ameriški kvart|ameriška kvarta|ameriški kvarti|ameriških kvartov}}',
+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|ameriški pint|ameriška pinta|ameriški pinti|ameriških pintov}}',
+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1|ameriÅ¡ka tekoÄinska unÄa|ameriÅ¡ki tekoÄinski unÄi|ameriÅ¡ke tekoÄinske unÄe|ameriÅ¡kih tekoÄinskih unÄ}}',
+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1|ameriški suhi sod|ameriška suha soda|ameriški suhi sodi|ameriških suhih sodov}}',
+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1|ameriški bušel|ameriška bušla|ameriški bušli|ameriških bušlov}}',
+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|ameriška suha galona|ameriški suhi galoni|ameriške suhe galone|ameriških suhih galon}}',
+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|ameriški suhi kvart|ameriška suha kvarta|ameriški suhi kvarti|ameriških suhih kvartov}}',
+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|ameriški suhi pint|ameriška suha pinta|ameriški suhi pinti|ameriških suhih pintov}}',
+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-litre-abbr' => '$2 l',
+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'kub. yd',
+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'kub. ft',
+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'kub. in',
+ 'pfunc-convert-unit-volume-barrel-abbr' => 'bbl',
+ 'pfunc-convert-unit-volume-bushel-abbr' => 'bsh',
+ 'pfunc-convert-unit-volume-gallon-abbr' => 'gal',
+ 'pfunc-convert-unit-volume-quart-abbr' => 'qt',
+ 'pfunc-convert-unit-volume-pint-abbr' => 'pt',
+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'fl oz',
+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'am. bbl',
+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'bbl',
+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'bbl',
+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'am. gal',
+ 'pfunc-convert-unit-volume-usquart-abbr' => 'am. qt',
+ 'pfunc-convert-unit-volume-uspint-abbr' => 'am. pt',
+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'am. fl oz',
+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'am. bbl',
+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'am. bsh',
+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'am. suha gal',
+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'am. suhi qt',
+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'am. suhi pt',
+ 'pfunc-convert-unit-speed-mile-hour' => 'milje na uro',
+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'mph',
+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|paskal|paskala|paskali|paskalov}}',
+ 'pfunc-convert-unit-pressure-bar' => 'bar',
+ 'pfunc-convert-unit-pressure-decibar' => 'decibar',
+ 'pfunc-convert-unit-pressure-millibar' => 'milibar',
+ 'pfunc-convert-unit-pressure-kilobarye' => 'kilobarye',
+ 'pfunc-convert-unit-pressure-barye' => 'barye',
+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmosfera|atmosferi|atmosfere|atmosfer}}',
+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|torr|torra|torri|torrov}}',
+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|milimeter|milimetra|milimetri|milimetrov}} živega srebra',
+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|palec|palca|palci|palcev}} živega srebra',
+ 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1|funt|funta|funti|funtov}} na kvadratni palec',
+ 'pfunc-convert-unit-pressure-pascal-abbr' => 'Pa',
+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'kBa',
+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ba',
+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
+ 'pfunc-convert-unit-pressure-torr-abbr' => 'Torr',
+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'mmHg',
+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'inHg',
+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
+);
+
+/** Albanian (Shqip)
+ * @author Olsi
+ * @author Vinie007
+ */
+$messages['sq'] = array(
+ 'pfunc_desc' => 'Enhance parser me funksione logjike',
+ 'pfunc_time_error' => 'Gabim: kohë e pavlefshme',
+ 'pfunc_time_too_long' => 'Gabim: shumë #thirrje kohe',
+ 'pfunc_time_too_big' => 'Gabim: # kohë mbështet vetëm vjet deri në 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Gabim: thellësi e pavlefshme në rrugë: "$1" (u përpoq për të hyrë në një nyje mbi nyjen e rrënjës)',
+ 'pfunc_expr_stack_exhausted' => 'Gabim shprehjeje: Stack exhausted',
+ 'pfunc_expr_unexpected_number' => 'Gabim shprehjeje: Numër i papritur',
+ 'pfunc_expr_preg_match_failure' => 'Gabim shprehjeje: Dështim i papritur i preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Gabim shprehjeje: Fjalë e panjohur: $1',
+ 'pfunc_expr_unexpected_operator' => 'Gabim shprehjeje: Operator i papritur $1',
+ 'pfunc_expr_missing_operand' => 'Gabim shprehjej: Operim i munfuar për $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Gabim shprehjeje: Mbyllje e papritur kllapash',
+ 'pfunc_expr_unrecognised_punctuation' => 'Gabim shprehjeje: Karakater pikësimi i panjohur "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Gabim shprehjeje: Mosmbyllje kllapash',
+ 'pfunc_expr_division_by_zero' => 'Pjesëtim me zero',
+ 'pfunc_expr_invalid_argument' => 'Argument i pavlefshëm për $1: < -1 ose > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argument i pavlefshëm për ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Gabim shprehjeje: Gabim i panjohur ($1)',
+ 'pfunc_expr_not_a_number' => 'Në $1: rezultati nuk është një numër',
+ 'pfunc_string_too_long' => 'Gabim: string kalon limit $1 karakter',
+);
+
+/** Serbian Cyrillic ekavian (‪СрпÑки (ћирилица)‬)
+ * @author Millosh
+ * @author Rancher
+ * @author Verlor
+ */
+$messages['sr-ec'] = array(
+ 'pfunc_desc' => 'Проширује рашчлањивач Ñ Ð»Ð¾Ð³Ð¸Ñ‡ÐºÐ¸Ð¼ функцијама',
+ 'pfunc_time_error' => 'Грешка: лоше време',
+ 'pfunc_time_too_long' => 'Грешка: превише #time позива',
+ 'pfunc_expr_stack_exhausted' => 'Грешка у изразу: Ñтек напуњен',
+ 'pfunc_expr_unexpected_number' => 'Грешка у изразу: неочекивани број',
+ 'pfunc_expr_preg_match_failure' => 'Грешка у изразу: Ðеочекивана preg_match грешка',
+ 'pfunc_expr_unrecognised_word' => 'Грешка у изразу: непозната реч "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Грешка у изразу: непознати оператор "$1"',
+ 'pfunc_expr_missing_operand' => 'Грешка у изразу: недоÑтаје операнд за $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Грешка у изразу: Ðеочекивано затварање Ñредње заграде.',
+ 'pfunc_expr_unrecognised_punctuation' => 'Грешка у изразу: Ðепознати интерпункцијÑки карактер "$1".',
+ 'pfunc_expr_unclosed_bracket' => 'Грешка у изразу: Ðезатворена Ñредња заграда.',
+ 'pfunc_expr_division_by_zero' => 'Дељење Ñа нулом.',
+ 'pfunc_expr_invalid_argument' => 'Лош аргумент: $1 је < -1 или > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Лош аргумент: ln <= 0',
+ 'pfunc_expr_unknown_error' => 'Грешка у изразу: Ðепозната грешка ($1)',
+ 'pfunc_expr_not_a_number' => 'Резултат у $1 није број.',
+ 'pfunc_string_too_long' => 'Грешка: реч прекорачује $1 Ñлова, што је поÑтављено ограничење',
+);
+
+/** Serbian Latin ekavian (‪Srpski (latinica)‬)
+ * @author Michaello
+ */
+$messages['sr-el'] = array(
+ 'pfunc_desc' => 'obogati parser logiÄkim funkcijama',
+ 'pfunc_time_error' => 'Greška: loše vreme',
+ 'pfunc_time_too_long' => 'Greška: previše #time poziva',
+ 'pfunc_expr_stack_exhausted' => 'Greška u izrazu: stek napunjen',
+ 'pfunc_expr_unexpected_number' => 'GreÅ¡ka u izrazu: neoÄekivani broj',
+ 'pfunc_expr_preg_match_failure' => 'GreÅ¡ka u izrazu: NeoÄekivana preg_match greÅ¡ka',
+ 'pfunc_expr_unrecognised_word' => 'GreÅ¡ka u izrazu: nepoznata reÄ "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Greška u izrazu: nepoznati operator "$1"',
+ 'pfunc_expr_missing_operand' => 'Greška u izrazu: nedostaje operand za $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'GreÅ¡ka u izrazu: NeoÄekivano zatvaranje srednje zagrade.',
+ 'pfunc_expr_unrecognised_punctuation' => 'Greška u izrazu: Nepoznati interpunkcijski karakter "$1".',
+ 'pfunc_expr_unclosed_bracket' => 'Greška u izrazu: Nezatvorena srednja zagrada.',
+ 'pfunc_expr_division_by_zero' => 'Deljenje sa nulom.',
+ 'pfunc_expr_invalid_argument' => 'Loš argument: $1 je < -1 ili > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Loš argument: ln <= 0',
+ 'pfunc_expr_unknown_error' => 'Greška u izrazu: Nepoznata greška ($1)',
+ 'pfunc_expr_not_a_number' => 'Rezultat u $1 nije broj.',
+ 'pfunc_string_too_long' => 'GreÅ¡ka: reÄ prekoraÄuje $1 slova, Å¡to je postavljeno ograniÄenje',
+);
+
+/** Seeltersk (Seeltersk)
+ * @author Pyt
+ */
+$messages['stq'] = array(
+ 'pfunc_desc' => 'Ärwiedert dän Parser uum logiske Funktione',
+ 'pfunc_time_error' => 'Failer: uungultige Tiedangoawe',
+ 'pfunc_time_too_long' => 'Failer: tou fuul #time-Aproupe',
+ 'pfunc_rel2abs_invalid_depth' => 'Failer: uungultige Djüpte in Paad: „$1“ (Fersäik, ap n Knättepunkt buppe dän Haudknättepunkt toutougriepen)',
+ 'pfunc_expr_stack_exhausted' => 'Expression-Failer: Stack-Uurloop',
+ 'pfunc_expr_unexpected_number' => 'Expression-Failer: Nit ferwachtede Taal',
+ 'pfunc_expr_preg_match_failure' => 'Expression-Failer: Uunferwachtede „preg_match“-Failfunktion',
+ 'pfunc_expr_unrecognised_word' => 'Expression-Failer: Nit wierkoand Woud „$1“',
+ 'pfunc_expr_unexpected_operator' => 'Expression-Failer: Uunferwachteden Operator: <strong><tt>$1</tt></strong>',
+ 'pfunc_expr_missing_operand' => 'Expression-Failer: Failenden Operand foar <strong><tt>$1</tt></strong>',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Expression-Failer: Uunferwachte sluutende kaantige Klammere',
+ 'pfunc_expr_unrecognised_punctuation' => 'Expression-Failer: Nit wierkoand Satsteeken „$1“',
+ 'pfunc_expr_unclosed_bracket' => 'Expression-Failer: Nit sleetene kaantige Klammer',
+ 'pfunc_expr_division_by_zero' => 'Expression-Failer: Division truch Null',
+ 'pfunc_expr_invalid_argument' => 'Uungultich Argument foar $1: < -1 of > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Uungultich Argument foar ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Expression-Failer: Uunbekoanden Failer ($1)',
+ 'pfunc_expr_not_a_number' => 'Expression-Failer: In $1: Resultoat is neen Taal',
+ 'pfunc_string_too_long' => 'Failer: Teekenkätte is laanger as dät Teekenlimit fon $1',
+);
+
+/** Sundanese (Basa Sunda)
+ * @author Irwangatot
+ * @author Kandar
+ */
+$messages['su'] = array(
+ 'pfunc_desc' => 'Ngembangkeun parser kalawan fungsi logis',
+ 'pfunc_time_error' => 'Éror: titimangsa teu valid',
+ 'pfunc_expr_division_by_zero' => 'Pambagi ku nol',
+);
+
+/** Swedish (Svenska)
+ * @author Ainali
+ * @author Lejonel
+ * @author M.M.S.
+ * @author Najami
+ */
+$messages['sv'] = array(
+ 'pfunc_desc' => 'Lägger till logiska funktioner i parsern',
+ 'pfunc_time_error' => 'Fel: ogiltig tid',
+ 'pfunc_time_too_long' => 'Fel: för många anrop av #time',
+ 'pfunc_time_too_big' => 'Fel: # tid stöder endast år fram till 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Fel: felaktig djup i sökväg: "$1" (försöker nå en nod ovanför rotnoden)',
+ 'pfunc_expr_stack_exhausted' => 'Fel i uttryck: Stackutrymmet tog slut',
+ 'pfunc_expr_unexpected_number' => 'Fel i uttryck: Oväntat tal',
+ 'pfunc_expr_preg_match_failure' => 'Fel i uttryck: Oväntad fel i preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Fel i uttryck: Okänt ord "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Fel i uttryck: Oväntad operator $1',
+ 'pfunc_expr_missing_operand' => 'Fel i uttryck: Operand saknas för $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Fel i uttryck: Oväntad avslutande parentes',
+ 'pfunc_expr_unrecognised_punctuation' => 'Fel i uttryck: Okänt interpunktionstecken "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Fel i uttryck: Oavslutad parentes',
+ 'pfunc_expr_division_by_zero' => 'Division med noll',
+ 'pfunc_expr_invalid_argument' => 'Ogiltigt argument för $1: < -1 eller > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Ogiltigt argument för ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Fel i uttryck: Okänt fel ($1)',
+ 'pfunc_expr_not_a_number' => 'I $1: resultatet är inte ett tal',
+ 'pfunc_string_too_long' => 'Fel: Strängen överskrider gränsen på $1 tecken',
+ 'pfunc-convert-dimensionmismatch' => 'Fel: Kan inte konvertera mellan enheterna "$1" och "$2".',
+ 'pfunc-convert-unknownunit' => 'Fel: Okänd enhet "$1".',
+ 'pfunc-convert-unknowndimension' => 'Fel: Okänd dimension "$1".',
+ 'pfunc-convert-dimension-length' => 'längd',
+ 'pfunc-convert-dimension-area' => 'area',
+ 'pfunc-convert-dimension-volume' => 'volym',
+ 'pfunc-convert-dimension-time' => 'tid',
+ 'pfunc-convert-dimension-timesquared' => 'tid <sup>2</sup>',
+ 'pfunc-convert-dimension-mass' => 'massa',
+ 'pfunc-convert-dimension-speed' => 'hastighet',
+ 'pfunc-convert-dimension-temperature' => 'temperatur',
+ 'pfunc-convert-dimension-acceleration' => 'acceleration',
+ 'pfunc-convert-dimension-force' => 'kraft',
+ 'pfunc-convert-dimension-torque' => 'vridmoment',
+ 'pfunc-convert-dimension-energy' => 'energi',
+ 'pfunc-convert-dimension-pressure' => 'tryck',
+ 'pfunc-convert-dimension-density' => 'densitet',
+ 'pfunc-convert-prefix-yotta' => 'yotta',
+ 'pfunc-convert-prefix-zetta' => 'zetta',
+ 'pfunc-convert-prefix-exa' => 'exa',
+ 'pfunc-convert-prefix-peta' => 'peta',
+ 'pfunc-convert-prefix-tera' => 'tera',
+ 'pfunc-convert-prefix-giga' => 'giga',
+ 'pfunc-convert-prefix-mega' => 'mega',
+ 'pfunc-convert-prefix-kilo' => 'kilo',
+ 'pfunc-convert-prefix-hecto' => 'hekto',
+ 'pfunc-convert-prefix-deca' => 'deka',
+ 'pfunc-convert-prefix-deci' => 'deci',
+ 'pfunc-convert-prefix-centi' => 'centi',
+ 'pfunc-convert-prefix-milli' => 'milli',
+ 'pfunc-convert-prefix-micro' => 'mikro',
+ 'pfunc-convert-prefix-nano' => 'nano',
+ 'pfunc-convert-prefix-pico' => 'piko',
+ 'pfunc-convert-prefix-femto' => 'femto',
+ 'pfunc-convert-prefix-atto' => 'atto',
+ 'pfunc-convert-prefix-zepto' => 'zepto',
+ 'pfunc-convert-prefix-yocto' => 'yokto',
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1|$2meter|$2meter}}',
+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1|ångström|ångström}}',
+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1|engelsk mil|engelska mil}}',
+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1|furlong|furlonger}}',
+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1|chain|chains}}',
+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1|stång|stänger}}',
+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1|famn|famnar}}',
+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1|yard|yards}}',
+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1|fot|fot}}',
+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1|hand|händer}}',
+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1|tum|tum}}',
+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1|nautisk mil|nautiska mil}}',
+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1|nautisk mil (innan 1970, brittisk)|nautiska mil (innan 1970, brittisk)}}',
+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1|nautisk mil (innan 1954, USA)|nautiska mil (innan 1954, USA)}}',
+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1|$2parsec|$2parsec}}',
+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1|$2ljusår|$2ljusår}}',
+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1|astronomisk enhet|astronomiska enheter}}',
+ 'pfunc-convert-unit-length-furlong-abbr' => 'furlong',
+ 'pfunc-convert-unit-length-chain-abbr' => 'chain',
+ 'pfunc-convert-unit-length-fathom-abbr' => 'famn',
+ 'pfunc-convert-unit-length-yard-abbr' => 'yd',
+ 'pfunc-convert-unit-length-foot-abbr' => 'ft',
+ 'pfunc-convert-unit-length-hand-abbr' => 'h',
+ 'pfunc-convert-unit-length-inch-abbr' => 'in',
+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'nmi',
+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'nmi (Storbr.)',
+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'nmi (innan 1954, USA)',
+ 'pfunc-convert-unit-length-parsec-abbr' => '$2pc',
+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'AU',
+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1|kvadratkilometer|kvadratkilometer}}',
+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1|kvadratmeter|kvadratmeter}}',
+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1|kvadratcentimeter|kvadratcentimeter}}',
+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1|kvadratmillimeter|kvadratmillimeter}}',
+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1|hektar|hektar}}',
+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1|kvadratmil|kvadratmil}}',
+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1|tunnland|tunnland}}',
+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1|kvadratyard|kvadratyard}}',
+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1|kvadratfot|kvadratfötter}}',
+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1|kvadrattum|kvadrattum}}',
+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1|kvadratisk nautisk mil|kvadratiska nautiska mil}}',
+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1|dunam|dunam}}',
+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1|tsubo|tsubo}}',
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm<sup>2</sup>',
+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm<sup>2</sup>',
+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
+ 'pfunc-convert-unit-area-squaremile-abbr' => 'kv mil',
+ 'pfunc-convert-unit-area-acre-abbr' => 'tunnland',
+ 'pfunc-convert-unit-area-squareyard-abbr' => 'kv yd',
+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'kv ft',
+ 'pfunc-convert-unit-area-squareinch-abbr' => 'kv in',
+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'kv nmi',
+ 'pfunc-convert-unit-area-dunam-abbr' => 'dunam',
+ 'pfunc-convert-unit-area-tsubo-abbr' => 'tsubo',
+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1|sekund|sekunder}}',
+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1|$2Ã¥r|$2Ã¥r}}',
+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1|dag|dagar}}',
+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1|timme|timmar}}',
+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1|minut|minuter}}',
+ 'pfunc-convert-unit-time-second-abbr' => 's',
+ 'pfunc-convert-unit-time-day-abbr' => 'dag',
+ 'pfunc-convert-unit-time-hour-abbr' => 'tim',
+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1|kubikmeter|kubikmeter}}',
+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1|kubikcentimeter|kubikcentimeter}}',
+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1|kubikmillimeter|kubikmillimeter}}',
+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1|kiloliter|kiloliter}}',
+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1|liter|liter}}',
+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1|centiliter|centiliter}}',
+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1|milliliter|milliliter}}',
+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1|kubikyard|kubikyards}}',
+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1|kubikfot|kubikfötter}}',
+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1|kubiktum|kubiktum}}',
+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1|fat|fat}}',
+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1|gallon|gallons}}',
+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1|quart|quarts}}',
+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1|pint|pints}}',
+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1|gallon (USA, våt)|gallon (USA, våt)}}',
+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1|quart (USA, våt)|quart (USA, våt)}}',
+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1|pint (USA, våt)|pint (USA, våt)}}',
+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1|gallon (USA, torr)|gallon (USA, torr)}}',
+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1|quart (USA, torr)|quart (USA, torr)}}',
+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1|pint (USA, torr)|pint (USA, torr)}}',
+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm<sup>3</sup>',
+ 'pfunc-convert-unit-volume-litre-abbr' => '$2l',
+ 'pfunc-convert-unit-volume-gallon-abbr' => 'gal',
+ 'pfunc-convert-unit-speed-mile-hour' => 'miles per timme',
+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'mph',
+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1|$2pascal|$2pascal}}',
+ 'pfunc-convert-unit-pressure-bar' => 'bar',
+ 'pfunc-convert-unit-pressure-millibar' => 'millibar',
+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1|atmosfär|atmosfärer}}',
+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1|torr|torr}}',
+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1|millimeter kvicksilver|millimeter kvicksilver}}',
+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1|tum kvicksilver|tum kvicksilver}}',
+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'mmHg',
+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
+);
+
+/** Telugu (తెలà±à°—à±)
+ * @author Mpradeep
+ * @author Veeven
+ */
+$messages['te'] = array(
+ 'pfunc_time_error' => 'లోపం: సమయం సరిగà±à°—à°¾ లేదà±',
+ 'pfunc_time_too_long' => 'లోపం: #timeనౠచాలా సారà±à°²à± ఉపయోగించారà±',
+ 'pfunc_rel2abs_invalid_depth' => 'లోపం: పాతౠయొకà±à°• డెపà±à°¤à± సరిగà±à°—ాలేదà±: "$1" (రూటౠనోడౠకంటే పైన ఉనà±à°¨ నోడౠఉపయోగించటానికి à°ªà±à°°à°¯à°¤à±à°¨à°‚ జరిగింది)',
+ 'pfunc_expr_stack_exhausted' => 'సమాసంలో(Expression) లోపం: à°¸à±à°Ÿà°¾à°•à± మొతà±à°¤à°‚ అయిపోయింది',
+ 'pfunc_expr_unexpected_number' => 'సమాసంలో(Expression) లోపం: ఊహించని సంఖà±à°¯ వచà±à°šà°¿à°‚ది',
+ 'pfunc_expr_preg_match_failure' => 'సమాసంలో(Expression) లోపం: preg_matchలో ఊహించని విఫలం',
+ 'pfunc_expr_unrecognised_word' => 'సమాసంలో(Expression) లోపం: "$1" అనే పదానà±à°¨à°¿ à°—à±à°°à±à°¤à±à°ªà°Ÿà±à°Ÿà°²à±‡à°•à°ªà±‹à°¤à±à°¨à±à°¨à°¾à°¨à±',
+ 'pfunc_expr_unexpected_operator' => 'సమాసంలో(Expression) లోపం: $1 పరికరà±à°¤à°¨à±(operator) ఊహించలేదà±',
+ 'pfunc_expr_missing_operand' => 'సమాసంలో(Expression) లోపం: $1à°•à± à°’à°• ఆపరాండà±à°¨à± ఇవà±à°µà°²à±‡à°¦à±',
+ 'pfunc_expr_unexpected_closing_bracket' => 'సమాసంలో(Expression) లోపం: ఊహించని à°¬à±à°°à°¾à°•à±†à°Ÿà±à°Ÿà± à°®à±à°—à°¿à°‚à°ªà±',
+ 'pfunc_expr_unrecognised_punctuation' => 'సమాసంలో(Expression) లోపం: "$1" అనే విరామ à°šà°¿à°¹à±à°¨à°¾à°¨à±à°¨à°¿ à°—à±à°°à±à°¤à°¿à°‚చలేకపోతà±à°¨à±à°¨à°¾à°¨à±',
+ 'pfunc_expr_unclosed_bracket' => 'సమాసంలో(Expression) లోపం: à°¬à±à°°à°¾à°•à±†à°Ÿà±à°Ÿà±à°¨à± మూయలేదà±',
+ 'pfunc_expr_division_by_zero' => 'à°¸à±à°¨à±à°¨à°¾à°¤à±‹ భాగించారà±',
+ 'pfunc_expr_unknown_error' => 'సమాసంలో(Expression) లోపం: తెలియని లోపం ($1)',
+ 'pfunc_expr_not_a_number' => '$1లో: వచà±à°šà°¿à°¨ ఫలితం సంఖà±à°¯ కాదà±',
+);
+
+/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic))
+ * @author Ibrahim
+ */
+$messages['tg-cyrl'] = array(
+ 'pfunc_desc' => 'Ба таҷзеҳкунанда, даÑтурҳои мантиқӣ меафзоÑд',
+ 'pfunc_time_error' => 'Хато: замони ғайримиҷоз',
+ 'pfunc_time_too_long' => 'Хато: #time фарохонии беш аз ҳад',
+ 'pfunc_rel2abs_invalid_depth' => 'Хато: Чуқурии ғайримиҷоз дар нишонӣ: "$1" (талош барои даÑтраÑи ба Ñк нишонӣ болотар аз нишонии реша)',
+ 'pfunc_expr_stack_exhausted' => 'Хатои ибора: Пушта аз даÑÑ‚ рафтааÑÑ‚',
+ 'pfunc_expr_unexpected_number' => 'Хатои ибора: Ðдади ғайримунтазир',
+ 'pfunc_expr_preg_match_failure' => 'Хатои ибора: Хатои ғайримунтазири preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Хатои ибора: Калимаи ношинохта "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Хатои ибора: Ðмалгари ғайримунтазири $1',
+ 'pfunc_expr_missing_operand' => 'Хатои ибора: Ðмалгари гумшуда барои $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Хатои ибора: ҚафÑи баÑтаи номунтазир',
+ 'pfunc_expr_unrecognised_punctuation' => 'Хатои ибора: Ðломати нуқтагузории шинохтанашуда "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Хатои ибора: ҚафÑи баÑтанашуда',
+ 'pfunc_expr_division_by_zero' => 'ТақÑим бар Ñифр',
+ 'pfunc_expr_unknown_error' => 'Хатои ибора: Хатои Ð½Ð¾ÑˆÐ¸Ð½Ð¾Ñ ($1)',
+ 'pfunc_expr_not_a_number' => 'Дар $1: натиҷа адад неÑÑ‚',
+);
+
+/** Tajik (Latin) (Тоҷикӣ (Latin))
+ * @author Liangent
+ */
+$messages['tg-latn'] = array(
+ 'pfunc_desc' => 'Ba taçzehkunanda, dasturhoi mantiqī meafzojad',
+ 'pfunc_time_error' => 'Xato: zamoni ƣajrimiçoz',
+ 'pfunc_time_too_long' => 'Xato: #time faroxoniji beÅŸ az had',
+ 'pfunc_rel2abs_invalid_depth' => 'Xato: Cuquriji ƣajrimiçoz dar nişonī: "$1" (taloş baroi dastrasi ba jak nişonī bolotar az nişoniji reşa)',
+ 'pfunc_expr_stack_exhausted' => 'Xatoi ibora: PuÅŸta az dast raftaast',
+ 'pfunc_expr_unexpected_number' => 'Xatoi ibora: Adadi ƣajrimuntazir',
+ 'pfunc_expr_preg_match_failure' => 'Xatoi ibora: Xatoi ƣajrimuntaziri preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Xatoi ibora: Kalimai noÅŸinoxta "$1"',
+ 'pfunc_expr_unexpected_operator' => 'Xatoi ibora: Amalgari ƣajrimuntaziri $1',
+ 'pfunc_expr_missing_operand' => 'Xatoi ibora: Amalgari gumÅŸuda baroi $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Xatoi ibora: Qafsi bastai nomuntazir',
+ 'pfunc_expr_unrecognised_punctuation' => 'Xatoi ibora: Alomati nuqtaguzoriji ÅŸinoxtanaÅŸuda "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Xatoi ibora: Qafsi bastanaÅŸuda',
+ 'pfunc_expr_division_by_zero' => 'Taqsim bar sifr',
+ 'pfunc_expr_unknown_error' => 'Xatoi ibora: Xatoi noÅŸinos ($1)',
+ 'pfunc_expr_not_a_number' => 'Dar $1: natiça adad nest',
+);
+
+/** Thai (ไทย)
+ * @author Ans
+ */
+$messages['th'] = array(
+ 'pfunc_time_error' => 'เà¸à¸´à¸”ข้อผิดพลาด: ค่าเวลาไม่ถูà¸à¸•à¹‰à¸­à¸‡',
+ 'pfunc_time_too_long' => 'เà¸à¸´à¸”ข้อผิดพลาด: มีà¸à¸²à¸£à¹€à¸£à¸µà¸¢à¸à¹ƒà¸Šà¹‰ #time มาà¸à¹€à¸à¸´à¸™à¹„ป',
+ 'pfunc_rel2abs_invalid_depth' => 'เà¸à¸´à¸”ข้อผิดพลาด: path depth ไม่ถูà¸à¸•à¹‰à¸­à¸‡: "$1" (เป็นà¸à¸²à¸£à¸žà¸¢à¸²à¸¢à¸²à¸¡à¸—ี่จะเข้าถึงตำà¹à¸«à¸™à¹ˆà¸‡à¸—ี่อยู่เหนือตำà¹à¸«à¸™à¹ˆà¸‡à¸£à¸²à¸)',
+ 'pfunc_expr_stack_exhausted' => 'สูตรเà¸à¸´à¸”ข้อผิดพลาด: มี stack ไม่พอในà¸à¸²à¸£à¸„ำนวณสูตร',
+ 'pfunc_expr_unexpected_number' => 'สูตรไม่ถูà¸à¸•à¹‰à¸­à¸‡: ค่าตัวเลขอยู่ผิดที่',
+ 'pfunc_expr_preg_match_failure' => 'สูตรเà¸à¸´à¸”ข้อผิดพลาด: เà¸à¸´à¸”ความล้มเหลวในà¸à¸²à¸£à¸ªà¸±à¹ˆà¸‡ preg_match โดยไม่ทราบสาเหตุ',
+ 'pfunc_expr_unrecognised_word' => 'สูตรไม่ถูà¸à¸•à¹‰à¸­à¸‡: "$1" เป็นคำที่ไม่รู้จัà¸',
+ 'pfunc_expr_unexpected_operator' => 'สูตรไม่ถูà¸à¸•à¹‰à¸­à¸‡: $1 อยู่ผิดที่',
+ 'pfunc_expr_missing_operand' => 'สูตรไม่ถูà¸à¸•à¹‰à¸­à¸‡: ได้รับค่าไม่ครบในà¸à¸²à¸£à¸„ำนวณ $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'สูตรไม่ถูà¸à¸•à¹‰à¸­à¸‡: ปิดวงเล็บเà¸à¸´à¸™ หรือ ปิดวงเล็บผิดที่',
+ 'pfunc_expr_unrecognised_punctuation' => 'สูตรไม่ถูà¸à¸•à¹‰à¸­à¸‡: "$1" เป็นเครื่องหมายหรือตัวอัà¸à¸©à¸£à¸—ี่ไม่รู้จัà¸',
+ 'pfunc_expr_unclosed_bracket' => 'สูตรไม่ถูà¸à¸•à¹‰à¸­à¸‡: ไม่ได้ปิดวงเล็บ',
+ 'pfunc_expr_division_by_zero' => 'ตัวหารเป็นศูนย์',
+ 'pfunc_expr_invalid_argument' => 'ค่าตัวà¹à¸›à¸£à¹„ม่ถูà¸à¸•à¹‰à¸­à¸‡: $1 ไม่สามารถรับค่าที่น้อยà¸à¸§à¹ˆà¸² -1 หรือ มาà¸à¸à¸§à¹ˆà¸² 1',
+ 'pfunc_expr_invalid_argument_ln' => 'ค่าตัวà¹à¸›à¸£à¹„ม่ถูà¸à¸•à¹‰à¸­à¸‡: ln ไม่สามารถรับค่าที่น้อยà¸à¸§à¹ˆà¸²à¸«à¸£à¸·à¸­à¹€à¸—่าà¸à¸±à¸šà¸¨à¸¹à¸™à¸¢à¹Œ',
+ 'pfunc_expr_unknown_error' => 'สูตรไม่ถูà¸à¸•à¹‰à¸­à¸‡: เà¸à¸´à¸”ความผิดพลาดในสูตรโดยไม่ทราบสาเหตุ ($1)',
+ 'pfunc_expr_not_a_number' => '$1: ผลลัพธ์ไม่สามารถà¹à¸—นด้วยจำนวน (NAN or not a number)',
+);
+
+/** Turkmen (Türkmençe)
+ * @author Hanberke
+ */
+$messages['tk'] = array(
+ 'pfunc_desc' => 'Parseri logiki funksiýalar bilen güýçlendir',
+ 'pfunc_time_error' => 'Säwlik: nädogry wagt',
+ 'pfunc_time_too_long' => 'Säwlik: aşa köp #time çagyryşlary',
+ 'pfunc_rel2abs_invalid_depth' => 'Säwlik: Ãolda nädogry çuňluk: "$1" (kök düwüniň üstündäki bir düwüne barjak boldy)',
+ 'pfunc_expr_stack_exhausted' => 'Aňlatma säwligi: Stek gutardy',
+ 'pfunc_expr_unexpected_number' => 'Aňlatma säwligi: Garaşylmaýan san',
+ 'pfunc_expr_preg_match_failure' => 'Aňlatma säwligi: Garaşylmaýan preg_match näsazlygy',
+ 'pfunc_expr_unrecognised_word' => 'Aňlatma säwligi: Bilinmeýän "$1" sözi',
+ 'pfunc_expr_unexpected_operator' => 'Aňlatma säwligi: Garaşylmaýan $1 operatory',
+ 'pfunc_expr_missing_operand' => 'Aňlatma säwligi: $1 üçin kem operand',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Aňlatma säwligi: Garaşylmaýan ýapyjy ýaý',
+ 'pfunc_expr_unrecognised_punctuation' => 'Aňlatma säwligi: Bilinmeýän punktuasiýa simwoly "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Aňlatma säwligi: Ãapylmadyk ýaý',
+ 'pfunc_expr_division_by_zero' => 'Nola bölmek',
+ 'pfunc_expr_invalid_argument' => '$1: < -1 ýa-da > 1 üçin nädogry argument',
+ 'pfunc_expr_invalid_argument_ln' => 'ln: <= 0 üçin nädogry argument',
+ 'pfunc_expr_unknown_error' => 'Aňlatma säwligi: Näbelli säwlik ($1)',
+ 'pfunc_expr_not_a_number' => '$1-de: netije san däl',
+ 'pfunc_string_too_long' => 'Säwlik: Setir $1 simwol çäginden geçýär',
+);
+
+/** Tagalog (Tagalog)
+ * @author AnakngAraw
+ */
+$messages['tl'] = array(
+ 'pfunc_desc' => 'Pagibayuhin ang katangian ng banghay na may mga tungkuling makatwiran (may lohika)',
+ 'pfunc_time_error' => 'Kamalian: hindi tanggap na oras',
+ 'pfunc_time_too_long' => 'Kamalian: napakaraming mga pagtawag sa #oras',
+ 'pfunc_rel2abs_invalid_depth' => 'Kamalian: Hindi tanggap na sukat ng lalim sa daanan: "$1" (sinubok na puntahan ang isang alimpusong nasa itaas ng bugkol ng ugat)',
+ 'pfunc_expr_stack_exhausted' => 'Kamalian sa pagpapahayag: Naubos na ang salansan',
+ 'pfunc_expr_unexpected_number' => 'Kamalian sa pagpapahayag: Hindi inaasahang bilang',
+ 'pfunc_expr_preg_match_failure' => "Kamalian sa pagpapahayag: Hindi inaasahang pagkabigo ng \"pagtutugma_ng_hibla\" (''preg_match'')",
+ 'pfunc_expr_unrecognised_word' => 'Kamalian sa pagpapahayag: Hindi nakikilalang salitang "$1"',
+ 'pfunc_expr_unexpected_operator' => "Kamalian sa pagpapahayag: Hindi inaasahang bantas na tagapagsagawa (''operator'') ng $1",
+ 'pfunc_expr_missing_operand' => "Kamalian sa pagpapahayag: Nawawalang halaga (''operand'') para sa $1",
+ 'pfunc_expr_unexpected_closing_bracket' => 'Kamalian sa pagpapahayag: Hindi inaasahang pangpagtatapos na panaklong na kasingay (braket)',
+ 'pfunc_expr_unrecognised_punctuation' => 'Kamalian sa pagpapahayag: Hindi nakikilalang panitik na pangpalabantasang "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'Kamalian sa pagpapahayag: Hindi naisarang panaklong na kasingay (braket)',
+ 'pfunc_expr_division_by_zero' => 'Paghahati sa pamamagitan ng wala (sero)',
+ 'pfunc_expr_invalid_argument' => 'Hindi tanggap na pangangatwiran (argumento) para sa $1: < -1 o > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Hindi tanggap na pangangatwiran (argumento) para sa ln: <= 0',
+ 'pfunc_expr_unknown_error' => 'Kamalian sa pagpapahayag: Hindi nalalamang kamalian ($1)',
+ 'pfunc_expr_not_a_number' => 'Sa $1: ang kinalabasan ay hindi isang bilang',
+ 'pfunc_string_too_long' => 'Kamalian: Lumampas ang bagting sa $1 hangganang panitik',
+);
+
+/** Turkish (Türkçe)
+ * @author Joseph
+ */
+$messages['tr'] = array(
+ 'pfunc_desc' => 'Derleyiciyi mantıksal fonksiyonlarla geliştir',
+ 'pfunc_time_error' => 'Hata: geçersiz zaman',
+ 'pfunc_time_too_long' => 'Hata: çok fazla #time çağrısı',
+ 'pfunc_rel2abs_invalid_depth' => 'Hata: Yolda geçersiz derinlik: "$1" (kök düğümünün üstünde bir düğüme erişmeye çalıştı)',
+ 'pfunc_expr_stack_exhausted' => 'İfade hatası: Stack bitti',
+ 'pfunc_expr_unexpected_number' => 'İfade hatası: Beklenmeyen sayı',
+ 'pfunc_expr_preg_match_failure' => 'İfade hatası: Beklenmedik preg_match arızası',
+ 'pfunc_expr_unrecognised_word' => 'İfade hatası: Tanınmayan "$1" kelimesi',
+ 'pfunc_expr_unexpected_operator' => 'İfade hatası: Beklenmedik $1 operatörü',
+ 'pfunc_expr_missing_operand' => 'İfade hatası: $1 için eksik terim',
+ 'pfunc_expr_unexpected_closing_bracket' => 'İfade hatası: Beklenmedik kapa parantez',
+ 'pfunc_expr_unrecognised_punctuation' => 'İfade hatası: Tanınmayan noktalama karakteri "$1"',
+ 'pfunc_expr_unclosed_bracket' => 'İfade hatası: Kapanmamış parantez',
+ 'pfunc_expr_division_by_zero' => 'Sıfır ile bölme',
+ 'pfunc_expr_invalid_argument' => '$1 için geçersiz değişken: < -1 ya da > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'ln için geçersiz değişken: <= 0',
+ 'pfunc_expr_unknown_error' => 'İfade hatası: Bilinmeyen hata ($1)',
+ 'pfunc_expr_not_a_number' => "$1'de: sonuç bir sayı değil",
+ 'pfunc_string_too_long' => 'Hata: Dize $1 karakter sınırını geçiyor',
+);
+
+/** Ukrainian (УкраїнÑька)
+ * @author AS
+ * @author Ahonc
+ */
+$messages['uk'] = array(
+ 'pfunc_desc' => 'Покращений ÑинтакÑичний аналізатор з логічними функціÑми',
+ 'pfunc_time_error' => 'Помилка: неправильний чаÑ',
+ 'pfunc_time_too_long' => 'Помилка: забагато викликів функції #time',
+ 'pfunc_rel2abs_invalid_depth' => 'Помилка: неправильна глибина шлÑху: «$1» (Ñпроба доÑтупу до вузла, що знаходитьÑÑ Ð²Ð¸Ñ‰Ðµ, ніж кореневий)',
+ 'pfunc_expr_stack_exhausted' => 'Помилка виразу: Ñтек переповнений',
+ 'pfunc_expr_unexpected_number' => 'Помилка виразу: неочікуване чиÑло',
+ 'pfunc_expr_preg_match_failure' => 'Помилка виразу: збій preg_match',
+ 'pfunc_expr_unrecognised_word' => 'Помилка виразу: незрозуміле Ñлово «$1»',
+ 'pfunc_expr_unexpected_operator' => 'Помилка виразу: неочікуваний оператор $1',
+ 'pfunc_expr_missing_operand' => 'Помилка виразу: бракує операнда Ð´Ð»Ñ $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Помилка виразу: неочікувана закрита дужка',
+ 'pfunc_expr_unrecognised_punctuation' => 'Помилка виразу: незрозумілий розділовий знак «$1»',
+ 'pfunc_expr_unclosed_bracket' => 'Помилка виразу: незакрита дужка',
+ 'pfunc_expr_division_by_zero' => 'Ð”Ñ–Ð»ÐµÐ½Ð½Ñ Ð½Ð° нуль',
+ 'pfunc_expr_invalid_argument' => 'Ðеправильний аргумент Ð´Ð»Ñ $1: < -1 або > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Помилковий аргумент логарифма (має бути більший від нулÑ)',
+ 'pfunc_expr_unknown_error' => 'Помилка виразу: невідома помилка ($1)',
+ 'pfunc_expr_not_a_number' => 'У $1: результат не Ñ” чиÑлом',
+ 'pfunc_string_too_long' => 'Помилка: довжина Ñ€Ñдка перевищує межу в {{PLURAL:$1|$1 Ñимвол|$1 Ñимволи|$1 Ñимволів}}',
+);
+
+/** Vèneto (Vèneto)
+ * @author Candalua
+ */
+$messages['vec'] = array(
+ 'pfunc_desc' => 'Zonta al parser na serie de funsion logiche',
+ 'pfunc_time_error' => 'Eror: orario mìa valido',
+ 'pfunc_time_too_long' => 'Eror: massa chiamate a #time',
+ 'pfunc_rel2abs_invalid_depth' => 'Eror: profondità mìa valida nel percorso "$1" (se gà proà a accédar a un nodo piassè sora de la raìsa)',
+ 'pfunc_expr_stack_exhausted' => "Eror ne l'espression: stack esaurìo",
+ 'pfunc_expr_unexpected_number' => "Eror ne l'espression: xe vegnù fora un nùmaro che no se se spetava",
+ 'pfunc_expr_preg_match_failure' => "Eror ne l'espression: eror inateso in preg_match",
+ 'pfunc_expr_unrecognised_word' => 'Eror ne l\'espression: parola "$1" mìa riconossiùa',
+ 'pfunc_expr_unexpected_operator' => "Eror ne l'espression: operator $1 inateso",
+ 'pfunc_expr_missing_operand' => "Eror ne l'espression: operando mancante par $1",
+ 'pfunc_expr_unexpected_closing_bracket' => "Eror ne l'espression: parentesi chiusa inatesa",
+ 'pfunc_expr_unrecognised_punctuation' => 'Eror ne l\'espression: caràtere de puntegiatura "$1" mìa riconossiùo',
+ 'pfunc_expr_unclosed_bracket' => "Eror ne l'espression: parentesi verta e mìa sarà",
+ 'pfunc_expr_division_by_zero' => 'Division par zero',
+ 'pfunc_expr_invalid_argument' => 'Argomento mìa valido par $1: < -1 or > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Argomento mìa valido par ln: <= 0',
+ 'pfunc_expr_unknown_error' => "Eror ne l'espression: eror sconossiùo ($1)",
+ 'pfunc_expr_not_a_number' => "In $1: el risultato no'l xe mìa un nùmaro",
+ 'pfunc_string_too_long' => 'Eròr: la stringa la va fora dal limite de {{PLURAL:$1|1 caràtere|$1 caràteri}}',
+);
+
+/** Veps (Vepsan kel')
+ * @author Игорь БродÑкий
+ */
+$messages['vep'] = array(
+ 'pfunc_time_error' => 'Petuz: vär aig',
+);
+
+/** Vietnamese (Tiếng Việt)
+ * @author Minh Nguyen
+ * @author Vinhtantran
+ */
+$messages['vi'] = array(
+ 'pfunc_desc' => 'Nâng cao bộ xử lý với những hàm cú pháp lôgic',
+ 'pfunc_time_error' => 'Lá»—i: thá»i gian không hợp lệ',
+ 'pfunc_time_too_long' => 'Lá»—i: quá nhiá»u lần gá»i #time',
+ 'pfunc_time_too_big' => 'Lỗi: #time chỉ hỗ trợ các năm cho tới 9999',
+ 'pfunc_rel2abs_invalid_depth' => 'Lá»—i: Ä‘á»™ sâu không hợp lệ trong Ä‘Æ°á»ng dẫn “$1†(do cố gắng truy cập nút phía trên nút gốc)',
+ 'pfunc_expr_stack_exhausted' => 'Lá»—i biểu thức: Äã cạn stack',
+ 'pfunc_expr_unexpected_number' => 'Lỗi biểu thức: Dư số',
+ 'pfunc_expr_preg_match_failure' => 'Lỗi biểu thức: Hàm preg_match thất bại',
+ 'pfunc_expr_unrecognised_word' => 'Lỗi biểu thức: Từ “$1†không rõ ràng',
+ 'pfunc_expr_unexpected_operator' => "Lỗi biểu thức: Dư toán tử '''$1'''",
+ 'pfunc_expr_missing_operand' => 'Lỗi biểu thức: Thiếu toán hạng trong $1',
+ 'pfunc_expr_unexpected_closing_bracket' => 'Lỗi biểu thức: Dư dấu đóng ngoặc',
+ 'pfunc_expr_unrecognised_punctuation' => 'Lỗi biểu thức: Dấu phân cách “$1†không rõ ràng',
+ 'pfunc_expr_unclosed_bracket' => 'Lỗi biểu thức: Dấu ngoặc chưa được đóng',
+ 'pfunc_expr_division_by_zero' => 'Chia cho zero',
+ 'pfunc_expr_invalid_argument' => 'Tham số không hợp lệ cho $1: < −1 hay > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'Tham số không hợp lệ cho ln: ≤ 0',
+ 'pfunc_expr_unknown_error' => 'Lỗi biểu thức: Lỗi không rõ nguyên nhân ($1)',
+ 'pfunc_expr_not_a_number' => 'Trong $1: kết quả không phải là kiểu số',
+ 'pfunc_string_too_long' => 'Lỗi: Chuỗi vượt quá giới hạn $1 ký tự',
+ 'pfunc-convert-dimensionmismatch' => 'Lá»—i: Không thể chuyển đổi giữa các Ä‘Æ¡n vị “$1†và “$2â€.',
+ 'pfunc-convert-unknownunit' => 'Lá»—i: Không hiểu Ä‘Æ¡n vị “$1â€.',
+ 'pfunc-convert-unknowndimension' => 'Lá»—i: Không hiểu kích thÆ°á»›c “$1â€.',
+ 'pfunc-convert-invalidcompoundunit' => 'Lá»—i: ÄÆ¡n vị ghép “$1†không hợp lệ.',
+ 'pfunc-convert-nounit' => 'Lỗi: Không đưa vào đơn vị nguồn.',
+ 'pfunc-convert-doublecompoundunit' => 'Lá»—i: Không thể phân tích các Ä‘Æ¡n vị ghép đúp nhÆ° “$1â€.',
+ 'pfunc-convert-dimension-length' => 'chiá»u dài',
+ 'pfunc-convert-dimension-area' => 'diện tích',
+ 'pfunc-convert-dimension-volume' => 'thể tích',
+ 'pfunc-convert-dimension-time' => 'thá»i gian',
+ 'pfunc-convert-dimension-timesquared' => 'thá»i gian²',
+ 'pfunc-convert-dimension-mass' => 'khối lượng',
+ 'pfunc-convert-dimension-speed' => 'tốc độ',
+ 'pfunc-convert-dimension-temperature' => 'nhiệt độ',
+ 'pfunc-convert-dimension-acceleration' => 'gia tốc',
+ 'pfunc-convert-dimension-force' => 'lực lượng',
+ 'pfunc-convert-dimension-torque' => 'mô men lực',
+ 'pfunc-convert-dimension-energy' => 'năng lượng',
+ 'pfunc-convert-dimension-power' => 'công suất',
+ 'pfunc-convert-dimension-pressure' => 'áp suất',
+ 'pfunc-convert-dimension-density' => 'mật độ',
+ 'pfunc-convert-dimension-fuelefficiencypositive' => 'hiệu quả nhiên liệu dương',
+ 'pfunc-convert-dimension-fuelefficiencynegative' => 'hiệu quả nhiên liệu âm',
+ 'pfunc-convert-prefix-yotta' => 'yôta',
+ 'pfunc-convert-prefix-zetta' => 'zêta',
+ 'pfunc-convert-prefix-exa' => 'exa',
+ 'pfunc-convert-prefix-peta' => 'pêta',
+ 'pfunc-convert-prefix-tera' => 'têra',
+ 'pfunc-convert-prefix-giga' => 'giga',
+ 'pfunc-convert-prefix-mega' => 'mêga',
+ 'pfunc-convert-prefix-kilo' => 'kilô',
+ 'pfunc-convert-prefix-hecto' => 'hêctô',
+ 'pfunc-convert-prefix-deca' => 'Ä‘á»ca',
+ 'pfunc-convert-prefix-deci' => 'đêxi',
+ 'pfunc-convert-prefix-centi' => 'xenti',
+ 'pfunc-convert-prefix-milli' => 'mili',
+ 'pfunc-convert-prefix-micro' => 'micrô',
+ 'pfunc-convert-prefix-nano' => 'nanô',
+ 'pfunc-convert-prefix-pico' => 'picô',
+ 'pfunc-convert-prefix-femto' => 'femtô',
+ 'pfunc-convert-prefix-atto' => 'atô',
+ 'pfunc-convert-prefix-zepto' => 'zéptô',
+ 'pfunc-convert-prefix-yocto' => 'yóctô',
+ 'pfunc-convert-unit-length-metre' => '{{PLURAL:$1}}$2mét',
+ 'pfunc-convert-unit-length-angstrom' => '{{PLURAL:$1}}ångström',
+ 'pfunc-convert-unit-length-mile' => '{{PLURAL:$1}}dặm',
+ 'pfunc-convert-unit-length-furlong' => '{{PLURAL:$1}}furlong',
+ 'pfunc-convert-unit-length-chain' => '{{PLURAL:$1}}chain',
+ 'pfunc-convert-unit-length-rod' => '{{PLURAL:$1}}rod',
+ 'pfunc-convert-unit-length-fathom' => '{{PLURAL:$1}}fathom',
+ 'pfunc-convert-unit-length-yard' => '{{PLURAL:$1}}yard',
+ 'pfunc-convert-unit-length-foot' => '{{PLURAL:$1}}foot',
+ 'pfunc-convert-unit-length-hand' => '{{PLURAL:$1}}hand',
+ 'pfunc-convert-unit-length-inch' => '{{PLURAL:$1}}inch',
+ 'pfunc-convert-unit-length-nauticalmile' => '{{PLURAL:$1}}hải lý',
+ 'pfunc-convert-unit-length-nauticalmileuk' => '{{PLURAL:$1}}hải lý (Anh trước 1970)',
+ 'pfunc-convert-unit-length-nauticalmileus' => '{{PLURAL:$1}}hải lý (Mỹ trước 1954)',
+ 'pfunc-convert-unit-length-parsec' => '{{PLURAL:$1}}$2parsec',
+ 'pfunc-convert-unit-length-lightyear' => '{{PLURAL:$1}}$2 năm ánh sáng',
+ 'pfunc-convert-unit-length-astronomicalunit' => '{{PLURAL:$1}}đơn vị thiên văn',
+ 'pfunc-convert-unit-length-furlong-abbr' => 'furlong',
+ 'pfunc-convert-unit-length-chain-abbr' => 'chain',
+ 'pfunc-convert-unit-length-rod-abbr' => 'rd',
+ 'pfunc-convert-unit-length-fathom-abbr' => 'fathom',
+ 'pfunc-convert-unit-length-yard-abbr' => 'yd',
+ 'pfunc-convert-unit-length-foot-abbr' => 'ft',
+ 'pfunc-convert-unit-length-hand-abbr' => 'h',
+ 'pfunc-convert-unit-length-inch-abbr' => 'in',
+ 'pfunc-convert-unit-length-nauticalmile-abbr' => 'nmi',
+ 'pfunc-convert-unit-length-nauticalmileuk-abbr' => 'nmi (Anh)',
+ 'pfunc-convert-unit-length-nauticalmileus-abbr' => 'nmi (Mỹ trước 1954)',
+ 'pfunc-convert-unit-length-parsec-abbr' => '$2pc',
+ 'pfunc-convert-unit-length-lightyear-abbr' => '$2ly',
+ 'pfunc-convert-unit-length-astronomicalunit-abbr' => 'ua',
+ 'pfunc-convert-unit-area-squarekilometre' => '{{PLURAL:$1}}kilômét vuông',
+ 'pfunc-convert-unit-area-squaremetre' => '{{PLURAL:$1}}mét vuông',
+ 'pfunc-convert-unit-area-squarecentimetre' => '{{PLURAL:$1}}xentimét vuông',
+ 'pfunc-convert-unit-area-squaremillimetre' => '{{PLURAL:$1}}millimét vuông',
+ 'pfunc-convert-unit-area-hectare' => '{{PLURAL:$1}}hecta',
+ 'pfunc-convert-unit-area-squaremile' => '{{PLURAL:$1}}dặm vuông',
+ 'pfunc-convert-unit-area-acre' => '{{PLURAL:$1}}mẫu Anh',
+ 'pfunc-convert-unit-area-squareyard' => '{{PLURAL:$1}}yard vuông',
+ 'pfunc-convert-unit-area-squarefoot' => '{{PLURAL:$1}}foot vuông',
+ 'pfunc-convert-unit-area-squareinch' => '{{PLURAL:$1}}inch vuông',
+ 'pfunc-convert-unit-area-squarenauticalmile' => '{{PLURAL:$1}}hải lý vuông',
+ 'pfunc-convert-unit-area-dunam' => '{{PLURAL:$1}}dunam',
+ 'pfunc-convert-unit-area-tsubo' => '{{PLURAL:$1}}tsubo',
+ 'pfunc-convert-unit-area-squarekilometre-abbr' => 'km²',
+ 'pfunc-convert-unit-area-squaremetre-abbr' => 'm²',
+ 'pfunc-convert-unit-area-squarecentimetre-abbr' => 'cm²',
+ 'pfunc-convert-unit-area-squaremillimetre-abbr' => 'mm²',
+ 'pfunc-convert-unit-area-hectare-abbr' => 'ha',
+ 'pfunc-convert-unit-area-squaremile-abbr' => 'sq mi',
+ 'pfunc-convert-unit-area-acre-abbr' => 'mẫu',
+ 'pfunc-convert-unit-area-squareyard-abbr' => 'sq yd',
+ 'pfunc-convert-unit-area-squarefoot-abbr' => 'sq ft',
+ 'pfunc-convert-unit-area-squareinch-abbr' => 'sq in',
+ 'pfunc-convert-unit-area-squarenauticalmile-abbr' => 'sq nmi',
+ 'pfunc-convert-unit-area-dunam-abbr' => 'dunam',
+ 'pfunc-convert-unit-area-tsubo-abbr' => 'tsubo',
+ 'pfunc-convert-unit-time-second' => '{{PLURAL:$1}}giây',
+ 'pfunc-convert-unit-time-year' => '{{PLURAL:$1}}$2 năm',
+ 'pfunc-convert-unit-time-day' => '{{PLURAL:$1}}ngày',
+ 'pfunc-convert-unit-time-hour' => '{{PLURAL:$1}}giá»',
+ 'pfunc-convert-unit-time-minute' => '{{PLURAL:$1}}phút',
+ 'pfunc-convert-unit-time-second-abbr' => 's',
+ 'pfunc-convert-unit-time-year-abbr' => '$2yr',
+ 'pfunc-convert-unit-time-day-abbr' => 'ngày',
+ 'pfunc-convert-unit-time-hour-abbr' => 'h',
+ 'pfunc-convert-unit-time-minute-abbr' => 'min',
+ 'pfunc-convert-unit-volume-cubicmetre' => '{{PLURAL:$1}}mét khối',
+ 'pfunc-convert-unit-volume-cubiccentimetre' => '{{PLURAL:$1}}xentimét khối',
+ 'pfunc-convert-unit-volume-cubicmillimetre' => '{{PLURAL:$1}}milimét khối',
+ 'pfunc-convert-unit-volume-kilolitre' => '{{PLURAL:$1}}kilôlít',
+ 'pfunc-convert-unit-volume-litre' => '{{PLURAL:$1}}lít',
+ 'pfunc-convert-unit-volume-centilitre' => '{{PLURAL:$1}}xentilít',
+ 'pfunc-convert-unit-volume-millilitre' => '{{PLURAL:$1}}mililít',
+ 'pfunc-convert-unit-volume-cubicyard' => '{{PLURAL:$1}}yard khối',
+ 'pfunc-convert-unit-volume-cubicfoot' => '{{PLURAL:$1}}foot khối',
+ 'pfunc-convert-unit-volume-cubicinch' => '{{PLURAL:$1}}inch khối',
+ 'pfunc-convert-unit-volume-barrel' => '{{PLURAL:$1}}thùng',
+ 'pfunc-convert-unit-volume-bushel' => '{{PLURAL:$1}}giạ',
+ 'pfunc-convert-unit-volume-gallon' => '{{PLURAL:$1}}gallon',
+ 'pfunc-convert-unit-volume-quart' => '{{PLURAL:$1}}quart',
+ 'pfunc-convert-unit-volume-pint' => '{{PLURAL:$1}}pint',
+ 'pfunc-convert-unit-volume-fluidounce' => '{{PLURAL:$1}}aoxÆ¡ chất lá»ng',
+ 'pfunc-convert-unit-volume-barrelus' => '{{PLURAL:$1}}thùng Mỹ',
+ 'pfunc-convert-unit-volume-barreloil' => '{{PLURAL:$1}}thùng',
+ 'pfunc-convert-unit-volume-barrelbeer' => '{{PLURAL:$1}}thùng',
+ 'pfunc-convert-unit-volume-usgallon' => '{{PLURAL:$1}}gallon Mỹ',
+ 'pfunc-convert-unit-volume-usquart' => '{{PLURAL:$1}}quart Mỹ',
+ 'pfunc-convert-unit-volume-uspint' => '{{PLURAL:$1}}pint Mỹ',
+ 'pfunc-convert-unit-volume-usfluidounce' => '{{PLURAL:$1}}aoxÆ¡ chất lá»ng Mỹ',
+ 'pfunc-convert-unit-volume-usdrybarrel' => '{{PLURAL:$1}}thùng chất khô Mỹ',
+ 'pfunc-convert-unit-volume-usbushel' => '{{PLURAL:$1}}thùng Mỹ',
+ 'pfunc-convert-unit-volume-usdrygallon' => '{{PLURAL:$1}}gallon chất khô Mỹ',
+ 'pfunc-convert-unit-volume-usdryquart' => '{{PLURAL:$1}}quart chất khô Mỹ',
+ 'pfunc-convert-unit-volume-usdrypint' => '{{PLURAL:$1}}pint chất khô Mỹ',
+ 'pfunc-convert-unit-volume-cubicmetre-abbr' => 'm³',
+ 'pfunc-convert-unit-volume-cubiccentimetre-abbr' => 'cm³',
+ 'pfunc-convert-unit-volume-cubicmillimetre-abbr' => 'mm³',
+ 'pfunc-convert-unit-volume-litre-abbr' => '$2l',
+ 'pfunc-convert-unit-volume-cubicyard-abbr' => 'cu yd',
+ 'pfunc-convert-unit-volume-cubicfoot-abbr' => 'cu ft',
+ 'pfunc-convert-unit-volume-cubicinch-abbr' => 'cu in',
+ 'pfunc-convert-unit-volume-barrel-abbr' => 'bbl',
+ 'pfunc-convert-unit-volume-bushel-abbr' => 'bsh',
+ 'pfunc-convert-unit-volume-gallon-abbr' => 'gal',
+ 'pfunc-convert-unit-volume-quart-abbr' => 'qt',
+ 'pfunc-convert-unit-volume-pint-abbr' => 'pt',
+ 'pfunc-convert-unit-volume-fluidounce-abbr' => 'fl oz',
+ 'pfunc-convert-unit-volume-barrelus-abbr' => 'bbl Mỹ',
+ 'pfunc-convert-unit-volume-barreloil-abbr' => 'bbl',
+ 'pfunc-convert-unit-volume-barrelbeer-abbr' => 'bbl',
+ 'pfunc-convert-unit-volume-usgallon-abbr' => 'gal Mỹ',
+ 'pfunc-convert-unit-volume-usquart-abbr' => 'qt Mỹ',
+ 'pfunc-convert-unit-volume-uspint-abbr' => 'pt Mỹ',
+ 'pfunc-convert-unit-volume-usfluidounce-abbr' => 'fl oz Mỹ',
+ 'pfunc-convert-unit-volume-usdrybarrel-abbr' => 'bbl Mỹ',
+ 'pfunc-convert-unit-volume-usbushel-abbr' => 'bsh Mỹ',
+ 'pfunc-convert-unit-volume-usdrygallon-abbr' => 'dry gal Mỹ',
+ 'pfunc-convert-unit-volume-usdryquart-abbr' => 'dry qt Mỹ',
+ 'pfunc-convert-unit-volume-usdrypint-abbr' => 'dry pt Mỹ',
+ 'pfunc-convert-unit-speed-mile-hour' => 'dặm má»™t giá»',
+ 'pfunc-convert-unit-speed-speedoflight' => 'c',
+ 'pfunc-convert-unit-speed-mile-hour-abbr' => 'mph',
+ 'pfunc-convert-unit-speed-speedoflight-abbr' => 'c',
+ 'pfunc-convert-unit-pressure-pascal' => '{{PLURAL:$1}}$2pascal',
+ 'pfunc-convert-unit-pressure-bar' => 'ba',
+ 'pfunc-convert-unit-pressure-decibar' => 'đêxiba',
+ 'pfunc-convert-unit-pressure-millibar' => 'miliba',
+ 'pfunc-convert-unit-pressure-kilobarye' => 'kilôbarye',
+ 'pfunc-convert-unit-pressure-barye' => 'barye',
+ 'pfunc-convert-unit-pressure-atmosphere' => '{{PLURAL:$1}}atmôtphe',
+ 'pfunc-convert-unit-pressure-torr' => '{{PLURAL:$1}}torr',
+ 'pfunc-convert-unit-pressure-mmhg' => '{{PLURAL:$1}}milimét thủy ngân',
+ 'pfunc-convert-unit-pressure-inhg' => '{{PLURAL:$1}}inch thủy ngân',
+ 'pfunc-convert-unit-pressure-psi' => '{{PLURAL:$1}}pound một inch vuông',
+ 'pfunc-convert-unit-pressure-pascal-abbr' => '$2Pa',
+ 'pfunc-convert-unit-pressure-bar-abbr' => 'bar',
+ 'pfunc-convert-unit-pressure-decibar-abbr' => 'dbar',
+ 'pfunc-convert-unit-pressure-millibar-abbr' => 'mbar',
+ 'pfunc-convert-unit-pressure-kilobarye-abbr' => 'kBa',
+ 'pfunc-convert-unit-pressure-barye-abbr' => 'Ba',
+ 'pfunc-convert-unit-pressure-atmosphere-abbr' => 'atm',
+ 'pfunc-convert-unit-pressure-torr-abbr' => 'Torr',
+ 'pfunc-convert-unit-pressure-mmhg-abbr' => 'mmHg',
+ 'pfunc-convert-unit-pressure-inhg-abbr' => 'inHg',
+ 'pfunc-convert-unit-pressure-psi-abbr' => 'psi',
+);
+
+/** Volapük (Volapük)
+ * @author Smeira
+ */
+$messages['vo'] = array(
+ 'pfunc_time_error' => 'Pök: tim no lonöföl',
+ 'pfunc_expr_division_by_zero' => 'Müedam dub ser',
+ 'pfunc_expr_unknown_error' => 'Notidotapöl: pöl nesevädik ($1)',
+ 'pfunc_expr_not_a_number' => 'In $1: sek no binon num',
+);
+
+/** Yiddish (ייִדיש)
+ * @author פוילישער
+ */
+$messages['yi'] = array(
+ 'pfunc_time_error' => 'גרײַז: ×ומגילטיגע צײַט',
+ 'pfunc_expr_unexpected_operator' => '×ויסדריק גרײַז: ×ומגעריכטער $1 ×פער×ַט×ר',
+ 'pfunc_expr_unclosed_bracket' => '×ויסדריק גרײַז: ×ומגעשל×סענער קל×ַמער',
+ 'pfunc_expr_not_a_number' => '×ין $1: רעזולט×ַט ××™×– נישט קיין נומער',
+);
+
+/** Yoruba (Yorùbá)
+ * @author Demmy
+ */
+$messages['yo'] = array(
+ 'pfunc_time_error' => 'Àsìṣe: àsìkò àìtá»Ì',
+ 'pfunc_expr_unexpected_number' => 'Àsìṣe ìgbékalẹ̀á»Ì€rá»Ì€: Ná»Ìmbà àìretí',
+ 'pfunc_expr_division_by_zero' => 'Pínpín pẹ̀lú òdo',
+ 'pfunc_expr_not_a_number' => 'Nínú $1: èsì kìí á¹£e ná»Ìmbà',
+);
+
+/** Cantonese (粵語)
+ * @author Shinjiman
+ */
+$messages['yue'] = array(
+ 'pfunc_desc' => '用é‚輯功能去加強處ç†å™¨',
+ 'pfunc_time_error' => '錯: 唔啱嘅時間',
+ 'pfunc_time_too_long' => '錯: 太多 #time 呼å«',
+ 'pfunc_rel2abs_invalid_depth' => '錯: 唔啱路徑嘅深度: "$1" (已經試éŽç”±é ­é»žè½å€‹é»žåº¦)',
+ 'pfunc_expr_stack_exhausted' => '表é”錯: å †å è€—盡',
+ 'pfunc_expr_unexpected_number' => '表é”錯: 未é æ–™å˜…數字',
+ 'pfunc_expr_preg_match_failure' => '表é”錯: 未é æ–™å˜… preg_match失敗',
+ 'pfunc_expr_unrecognised_word' => '表é”錯: 未é æ–™å˜…å­— "$1"',
+ 'pfunc_expr_unexpected_operator' => '表é”錯: 未é æ–™å˜… $1 é‹ç®—符',
+ 'pfunc_expr_missing_operand' => '表é”錯: 缺少 $1 嘅é‹ç®—符',
+ 'pfunc_expr_unexpected_closing_bracket' => '表é”錯: 未é æ–™å˜…閂括號',
+ 'pfunc_expr_unrecognised_punctuation' => '表é”錯: 未能èªå¾—到嘅標點 "$1"',
+ 'pfunc_expr_unclosed_bracket' => '表é”錯: 未閂好嘅括號',
+ 'pfunc_expr_division_by_zero' => '除以零',
+ 'pfunc_expr_invalid_argument' => '$1嘅無效åƒæ•¸: < -1 or > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'ln嘅無效åƒæ•¸: <= 0',
+ 'pfunc_expr_unknown_error' => '表é”錯: 未知嘅錯 ($1)',
+ 'pfunc_expr_not_a_number' => '響 $1: çµæžœå””係數字',
+);
+
+/** Simplified Chinese (‪中文(简体)‬)
+ * @author Liangent
+ * @author Philip
+ * @author Shinjiman
+ */
+$messages['zh-hans'] = array(
+ 'pfunc_desc' => '用逻辑函数加强解æžå™¨',
+ 'pfunc_time_error' => '错误:无效时间',
+ 'pfunc_time_too_long' => '错误:#time调用次数过多',
+ 'pfunc_rel2abs_invalid_depth' => '错误:无效路径深度:“$1â€ï¼ˆå°è¯•è®¿é—®æ ¹èŠ‚点以上节点)',
+ 'pfunc_expr_stack_exhausted' => '表达å¼é”™è¯¯ï¼šå †æ ˆè€—å°½',
+ 'pfunc_expr_unexpected_number' => '表达å¼é”™è¯¯ï¼šæœªé¢„料的数字',
+ 'pfunc_expr_preg_match_failure' => '表达å¼é”™è¯¯ï¼šæœªé¢„料的preg_match失败',
+ 'pfunc_expr_unrecognised_word' => '表达å¼é”™è¯¯ï¼šæ— æ³•è¯†åˆ«çš„è¯è¯­â€œ$1â€',
+ 'pfunc_expr_unexpected_operator' => '表达å¼é”™è¯¯ï¼šæœªé¢„料的$1æ“作符',
+ 'pfunc_expr_missing_operand' => '表达å¼é”™è¯¯ï¼šç¼ºå°‘$1çš„æ“作数',
+ 'pfunc_expr_unexpected_closing_bracket' => '表达å¼é”™è¯¯ï¼šæœªé¢„料的å括å·',
+ 'pfunc_expr_unrecognised_punctuation' => '表达å¼é”™è¯¯ï¼šæ— æ³•è¯†åˆ«çš„标点“$1â€',
+ 'pfunc_expr_unclosed_bracket' => '表达å¼é”™è¯¯ï¼šæœªå°é—­çš„括å·',
+ 'pfunc_expr_division_by_zero' => '零除',
+ 'pfunc_expr_invalid_argument' => '$1的无效å‚数:< -1 或 > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'ln的无效å‚数:<= 0',
+ 'pfunc_expr_unknown_error' => '表达å¼é”™è¯¯ï¼šæœªçŸ¥é”™è¯¯ï¼ˆ$1)',
+ 'pfunc_expr_not_a_number' => '在$1中:结果ä¸æ˜¯æ•°å­—',
+ 'pfunc_string_too_long' => '错误:字符串超过$1字符é™åˆ¶',
+);
+
+/** Traditional Chinese (‪中文(ç¹é«”)‬)
+ * @author Gaoxuewei
+ * @author Liangent
+ * @author Mark85296341
+ * @author Shinjiman
+ * @author Waihorace
+ */
+$messages['zh-hant'] = array(
+ 'pfunc_desc' => '用é‚輯函數加強解æžå™¨',
+ 'pfunc_time_error' => '錯誤:無效時間',
+ 'pfunc_time_too_long' => '錯誤:éŽå¤šçš„ #time 呼å«',
+ 'pfunc_time_too_big' => '錯誤:#時間åªæ”¯æ´è‡³9999å¹´',
+ 'pfunc_rel2abs_invalid_depth' => '錯誤:無效路徑深度:「$1ã€ï¼ˆå˜—試訪å•é ‚點以上節點)',
+ 'pfunc_expr_stack_exhausted' => '表é”å¼éŒ¯èª¤ï¼šå †ç–Šè€—盡',
+ 'pfunc_expr_unexpected_number' => '表é”å¼éŒ¯èª¤ï¼šæœªé æ–™çš„數字',
+ 'pfunc_expr_preg_match_failure' => '表é”å¼éŒ¯èª¤ï¼šæœªé æ–™çš„ preg_match 失敗',
+ 'pfunc_expr_unrecognised_word' => '表é”å¼éŒ¯èª¤ï¼šç„¡æ³•è­˜åˆ¥çš„詞語「$1ã€',
+ 'pfunc_expr_unexpected_operator' => '表é”å¼éŒ¯èª¤ï¼šæœªé æ–™çš„ $1 é‹ç®—å­',
+ 'pfunc_expr_missing_operand' => '表é”å¼éŒ¯èª¤ï¼šç¼ºå°‘ $1 çš„é‹ç®—å…ƒ',
+ 'pfunc_expr_unexpected_closing_bracket' => '表é”å¼éŒ¯èª¤ï¼šæœªé æ–™çš„å括號',
+ 'pfunc_expr_unrecognised_punctuation' => '表é”å¼éŒ¯èª¤ï¼šç„¡æ³•è­˜åˆ¥çš„標點「$1ã€',
+ 'pfunc_expr_unclosed_bracket' => '表é”å¼éŒ¯èª¤ï¼šæœªå°é–‰çš„括號',
+ 'pfunc_expr_division_by_zero' => '除以零',
+ 'pfunc_expr_invalid_argument' => '$1 的無效åƒé‡ï¼š< -1 或 > 1',
+ 'pfunc_expr_invalid_argument_ln' => 'ln 的無效åƒé‡ï¼š<= 0',
+ 'pfunc_expr_unknown_error' => '表é”å¼éŒ¯èª¤ï¼šæœªçŸ¥éŒ¯èª¤ï¼ˆ$1)',
+ 'pfunc_expr_not_a_number' => '在 $1 中:çµæžœä¸æ˜¯æ•¸å­—',
+ 'pfunc_string_too_long' => '錯誤:字符串超éŽ$1字符é™åˆ¶',
+);
+
diff --git a/extensions/ParserFunctions/ParserFunctions.php b/extensions/ParserFunctions/ParserFunctions.php
new file mode 100644
index 00000000..da9f3bbe
--- /dev/null
+++ b/extensions/ParserFunctions/ParserFunctions.php
@@ -0,0 +1,115 @@
+<?php
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ die( 'This file is a MediaWiki extension, it is not a valid entry point' );
+}
+
+/**
+ * CONFIGURATION
+ * These variables may be overridden in LocalSettings.php after you include the
+ * extension file.
+ */
+
+/**
+ * Defines the maximum length of a string that string functions are allowed to operate on
+ * Prevention against denial of service by string function abuses.
+ */
+$wgPFStringLengthLimit = 1000;
+
+/**
+ * Enable string functions.
+ *
+ * Set this to true if you want your users to be able to implement their own
+ * parsers in the ugliest, most inefficient programming language known to man:
+ * MediaWiki wikitext with ParserFunctions.
+ *
+ * WARNING: enabling this may have an adverse impact on the sanity of your users.
+ * An alternative, saner solution for embedding complex text processing in
+ * MediaWiki templates can be found at: http://www.mediawiki.org/wiki/Extension:Lua
+ */
+$wgPFEnableStringFunctions = false;
+
+/**
+ * Enable Convert parser for converting between units of measurement
+ */
+$wgPFEnableConvert = false;
+
+/**
+ * The language for 'en' is actually 'en-us', which insists on using non-canonical translations
+ * of the SI base units ("meter" rather than "metre" and "liter" rather than "litre"). We
+ * can avoid contaminatng dialects by internally mapping languages by default; this is
+ * configurable so you can remove it if you like, or add other maps if that's useful.
+ * Essentially, if your wiki's $wgContLang appears as a key in this array, the value is
+ * what is used as the default language for {{#convert}} output.
+ */
+$wgPFUnitLanguageVariants = array(
+ 'en' => 'en-gb'
+);
+
+/** REGISTRATION */
+$wgExtensionCredits['parserhook'][] = array(
+ 'path' => __FILE__,
+ 'name' => 'ParserFunctions',
+ 'version' => '1.4.0',
+ 'url' => 'http://www.mediawiki.org/wiki/Extension:ParserFunctions',
+ 'author' => array( 'Tim Starling', 'Robert Rohde', 'Ross McClure', 'Juraj Simlovic' ),
+ 'descriptionmsg' => 'pfunc_desc',
+);
+
+$wgAutoloadClasses['ExtParserFunctions'] = dirname( __FILE__ ) . '/ParserFunctions_body.php';
+$wgAutoloadClasses['ExprParser'] = dirname( __FILE__ ) . '/Expr.php';
+$wgAutoloadClasses['ConvertParser'] = dirname( __FILE__ ) . '/Convert.php';
+
+$wgExtensionMessagesFiles['ParserFunctions'] = dirname( __FILE__ ) . '/ParserFunctions.i18n.php';
+$wgExtensionMessagesFiles['ParserFunctionsMagic'] = dirname( __FILE__ ) . '/ParserFunctions.i18n.magic.php';
+
+$wgParserTestFiles[] = dirname( __FILE__ ) . "/funcsParserTests.txt";
+$wgParserTestFiles[] = dirname( __FILE__ ) . "/stringFunctionTests.txt";
+$wgParserTestFiles[] = dirname( __FILE__ ) . "/convertTests.txt";
+
+$wgHooks['ParserFirstCallInit'][] = 'wfRegisterParserFunctions';
+
+function wfRegisterParserFunctions( $parser ) {
+ global $wgPFEnableStringFunctions, $wgPFEnableConvert;
+
+ if ( defined( get_class( $parser ) . '::SFH_OBJECT_ARGS' ) ) {
+ // These functions accept DOM-style arguments
+ $parser->setFunctionHook( 'if', 'ExtParserFunctions::ifObj', SFH_OBJECT_ARGS );
+ $parser->setFunctionHook( 'ifeq', 'ExtParserFunctions::ifeqObj', SFH_OBJECT_ARGS );
+ $parser->setFunctionHook( 'switch', 'ExtParserFunctions::switchObj', SFH_OBJECT_ARGS );
+ $parser->setFunctionHook( 'ifexist', 'ExtParserFunctions::ifexistObj', SFH_OBJECT_ARGS );
+ $parser->setFunctionHook( 'ifexpr', 'ExtParserFunctions::ifexprObj', SFH_OBJECT_ARGS );
+ $parser->setFunctionHook( 'iferror', 'ExtParserFunctions::iferrorObj', SFH_OBJECT_ARGS );
+ } else {
+ $parser->setFunctionHook( 'if', 'ExtParserFunctions::ifHook' );
+ $parser->setFunctionHook( 'ifeq', 'ExtParserFunctions::ifeq' );
+ $parser->setFunctionHook( 'switch', 'ExtParserFunctions::switchHook' );
+ $parser->setFunctionHook( 'ifexist', 'ExtParserFunctions::ifexist' );
+ $parser->setFunctionHook( 'ifexpr', 'ExtParserFunctions::ifexpr' );
+ $parser->setFunctionHook( 'iferror', 'ExtParserFunctions::iferror' );
+ }
+
+ $parser->setFunctionHook( 'expr', 'ExtParserFunctions::expr' );
+ $parser->setFunctionHook( 'time', 'ExtParserFunctions::time' );
+ $parser->setFunctionHook( 'timel', 'ExtParserFunctions::localTime' );
+ $parser->setFunctionHook( 'rel2abs', 'ExtParserFunctions::rel2abs' );
+ $parser->setFunctionHook( 'titleparts', 'ExtParserFunctions::titleparts' );
+
+ // String Functions
+ if ( $wgPFEnableStringFunctions ) {
+ $parser->setFunctionHook( 'len', 'ExtParserFunctions::runLen' );
+ $parser->setFunctionHook( 'pos', 'ExtParserFunctions::runPos' );
+ $parser->setFunctionHook( 'rpos', 'ExtParserFunctions::runRPos' );
+ $parser->setFunctionHook( 'sub', 'ExtParserFunctions::runSub' );
+ $parser->setFunctionHook( 'count', 'ExtParserFunctions::runCount' );
+ $parser->setFunctionHook( 'replace', 'ExtParserFunctions::runReplace' );
+ $parser->setFunctionHook( 'explode', 'ExtParserFunctions::runExplode' );
+ $parser->setFunctionHook( 'urldecode', 'ExtParserFunctions::runUrlDecode' );
+ }
+
+ if( $wgPFEnableConvert ) {
+ $parser->setFunctionHook( 'convert', 'ExtParserFunctions::convert' );
+ }
+
+ return true;
+}
diff --git a/extensions/ParserFunctions/ParserFunctions_body.php b/extensions/ParserFunctions/ParserFunctions_body.php
new file mode 100644
index 00000000..13611510
--- /dev/null
+++ b/extensions/ParserFunctions/ParserFunctions_body.php
@@ -0,0 +1,846 @@
+<?php
+
+class ExtParserFunctions {
+ static $mExprParser;
+ static $mConvertParser;
+ static $mTimeCache = array();
+ static $mTimeChars = 0;
+ static $mMaxTimeChars = 6000; # ~10 seconds
+
+ public static function clearState( $parser ) {
+ self::$mTimeChars = 0;
+ $parser->pf_ifexist_breakdown = array();
+ $parser->pf_markerRegex = null;
+ return true;
+ }
+
+ /**
+ * Register ParserClearState hook.
+ * We defer this until needed to avoid the loading of the code of this file
+ * when no parser function is actually called.
+ */
+ public static function registerClearHook() {
+ static $done = false;
+ if( !$done ) {
+ global $wgHooks;
+ $wgHooks['ParserClearState'][] = __CLASS__ . '::clearState';
+ $done = true;
+ }
+ }
+
+ /**
+ * Get the marker regex. Cached.
+ */
+ public static function getMarkerRegex( $parser ) {
+ self::registerClearHook();
+ if ( isset( $parser->pf_markerRegex ) ) {
+ return $parser->pf_markerRegex;
+ }
+
+ wfProfileIn( __METHOD__ );
+
+ $prefix = preg_quote( $parser->uniqPrefix(), '/' );
+
+ // The first line represents Parser from release 1.12 forward.
+ // subsequent lines are hacks to accomodate old Mediawiki versions.
+ if ( defined( 'Parser::MARKER_SUFFIX' ) )
+ $suffix = preg_quote( Parser::MARKER_SUFFIX, '/' );
+ elseif ( isset( $parser->mMarkerSuffix ) )
+ $suffix = preg_quote( $parser->mMarkerSuffix, '/' );
+ elseif ( defined( 'MW_PARSER_VERSION' ) &&
+ strcmp( MW_PARSER_VERSION, '1.6.1' ) > 0 )
+ $suffix = "QINU\x07";
+ else $suffix = 'QINU';
+
+ $parser->pf_markerRegex = '/' . $prefix . '(?:(?!' . $suffix . ').)*' . $suffix . '/us';
+
+ wfProfileOut( __METHOD__ );
+ return $parser->pf_markerRegex;
+ }
+
+ // Removes unique markers from passed parameters, used by string functions.
+ private static function killMarkers ( $parser, $text ) {
+ return preg_replace( self::getMarkerRegex( $parser ), '' , $text );
+ }
+
+ /**
+ * @return ExprParser
+ */
+ public static function &getExprParser() {
+ if ( !isset( self::$mExprParser ) ) {
+ self::$mExprParser = new ExprParser;
+ }
+ return self::$mExprParser;
+ }
+
+ public static function expr( $parser, $expr = '' ) {
+ try {
+ return self::getExprParser()->doExpression( $expr );
+ } catch ( ExprError $e ) {
+ return $e->getMessage();
+ }
+ }
+
+ public static function ifexpr( $parser, $expr = '', $then = '', $else = '' ) {
+ try {
+ $ret = self::getExprParser()->doExpression( $expr );
+ if ( is_numeric( $ret ) ) {
+ $ret = floatval( $ret );
+ }
+ if ( $ret ) {
+ return $then;
+ } else {
+ return $else;
+ }
+ } catch ( ExprError $e ) {
+ return $e->getMessage();
+ }
+ }
+
+ public static function ifexprObj( $parser, $frame, $args ) {
+ $expr = isset( $args[0] ) ? trim( $frame->expand( $args[0] ) ) : '';
+ $then = isset( $args[1] ) ? $args[1] : '';
+ $else = isset( $args[2] ) ? $args[2] : '';
+ $result = self::ifexpr( $parser, $expr, $then, $else );
+ if ( is_object( $result ) ) {
+ $result = trim( $frame->expand( $result ) );
+ }
+ return $result;
+ }
+
+ public static function ifHook( $parser, $test = '', $then = '', $else = '' ) {
+ if ( $test !== '' ) {
+ return $then;
+ } else {
+ return $else;
+ }
+ }
+
+ public static function ifObj( $parser, $frame, $args ) {
+ $test = isset( $args[0] ) ? trim( $frame->expand( $args[0] ) ) : '';
+ if ( $test !== '' ) {
+ return isset( $args[1] ) ? trim( $frame->expand( $args[1] ) ) : '';
+ } else {
+ return isset( $args[2] ) ? trim( $frame->expand( $args[2] ) ) : '';
+ }
+ }
+
+ public static function ifeq( $parser, $left = '', $right = '', $then = '', $else = '' ) {
+ if ( $left == $right ) {
+ return $then;
+ } else {
+ return $else;
+ }
+ }
+
+ public static function ifeqObj( $parser, $frame, $args ) {
+ $left = isset( $args[0] ) ? trim( $frame->expand( $args[0] ) ) : '';
+ $right = isset( $args[1] ) ? trim( $frame->expand( $args[1] ) ) : '';
+ if ( $left == $right ) {
+ return isset( $args[2] ) ? trim( $frame->expand( $args[2] ) ) : '';
+ } else {
+ return isset( $args[3] ) ? trim( $frame->expand( $args[3] ) ) : '';
+ }
+ }
+
+ public static function iferror( $parser, $test = '', $then = '', $else = false ) {
+ if ( preg_match( '/<(?:strong|span|p|div)\s(?:[^\s>]*\s+)*?class="(?:[^"\s>]*\s+)*?error(?:\s[^">]*)?"/', $test ) ) {
+ return $then;
+ } elseif ( $else === false ) {
+ return $test;
+ } else {
+ return $else;
+ }
+ }
+
+ public static function iferrorObj( $parser, $frame, $args ) {
+ $test = isset( $args[0] ) ? trim( $frame->expand( $args[0] ) ) : '';
+ $then = isset( $args[1] ) ? $args[1] : false;
+ $else = isset( $args[2] ) ? $args[2] : false;
+ $result = self::iferror( $parser, $test, $then, $else );
+ if ( $result === false ) {
+ return '';
+ } else {
+ return trim( $frame->expand( $result ) );
+ }
+ }
+
+ public static function switchHook( $parser /*,...*/ ) {
+ $args = func_get_args();
+ array_shift( $args );
+ $primary = trim( array_shift( $args ) );
+ $found = $defaultFound = false;
+ $parts = null;
+ $default = null;
+ $mwDefault =& MagicWord::get( 'default' );
+ foreach ( $args as $arg ) {
+ $parts = array_map( 'trim', explode( '=', $arg, 2 ) );
+ if ( count( $parts ) == 2 ) {
+ # Found "="
+ if ( $found || $parts[0] == $primary ) {
+ # Found a match, return now
+ return $parts[1];
+ } elseif ( $defaultFound || $mwDefault->matchStartAndRemove( $parts[0] ) ) {
+ $default = $parts[1];
+ } # else wrong case, continue
+ } elseif ( count( $parts ) == 1 ) {
+ # Multiple input, single output
+ # If the value matches, set a flag and continue
+ if ( $parts[0] == $primary ) {
+ $found = true;
+ } elseif ( $mwDefault->matchStartAndRemove( $parts[0] ) ) {
+ $defaultFound = true;
+ }
+ } # else RAM corruption due to cosmic ray?
+ }
+ # Default case
+ # Check if the last item had no = sign, thus specifying the default case
+ if ( count( $parts ) == 1 ) {
+ return $parts[0];
+ } elseif ( !is_null( $default ) ) {
+ return $default;
+ } else {
+ return '';
+ }
+ }
+
+ /**
+ * @static
+ * @param $parser Parser
+ * @param $frame PPFrame
+ * @param $args
+ * @return string
+ */
+ public static function switchObj( $parser, $frame, $args ) {
+ if ( count( $args ) == 0 ) {
+ return '';
+ }
+ $primary = trim( $frame->expand( array_shift( $args ) ) );
+ $found = $defaultFound = false;
+ $default = null;
+ $lastItemHadNoEquals = false;
+ $mwDefault =& MagicWord::get( 'default' );
+ foreach ( $args as $arg ) {
+ $bits = $arg->splitArg();
+ $nameNode = $bits['name'];
+ $index = $bits['index'];
+ $valueNode = $bits['value'];
+
+ if ( $index === '' ) {
+ # Found "="
+ $lastItemHadNoEquals = false;
+ if ( $found ) {
+ # Multiple input match
+ return trim( $frame->expand( $valueNode ) );
+ } else {
+ $test = trim( $frame->expand( $nameNode ) );
+ if ( $test == $primary ) {
+ # Found a match, return now
+ return trim( $frame->expand( $valueNode ) );
+ } elseif ( $defaultFound || $mwDefault->matchStartAndRemove( $test ) ) {
+ $default = $valueNode;
+ } # else wrong case, continue
+ }
+ } else {
+ # Multiple input, single output
+ # If the value matches, set a flag and continue
+ $lastItemHadNoEquals = true;
+ $test = trim( $frame->expand( $valueNode ) );
+ if ( $test == $primary ) {
+ $found = true;
+ } elseif ( $mwDefault->matchStartAndRemove( $test ) ) {
+ $defaultFound = true;
+ }
+ }
+ }
+ # Default case
+ # Check if the last item had no = sign, thus specifying the default case
+ if ( $lastItemHadNoEquals ) {
+ return $test;
+ } elseif ( !is_null( $default ) ) {
+ return trim( $frame->expand( $default ) );
+ } else {
+ return '';
+ }
+ }
+
+ /**
+ * Returns the absolute path to a subpage, relative to the current article
+ * title. Treats titles as slash-separated paths.
+ *
+ * Following subpage link syntax instead of standard path syntax, an
+ * initial slash is treated as a relative path, and vice versa.
+ *
+ * @param $parser Parser
+ */
+ public static function rel2abs( $parser , $to = '' , $from = '' ) {
+
+ $from = trim( $from );
+ if ( $from == '' ) {
+ $from = $parser->getTitle()->getPrefixedText();
+ }
+
+ $to = rtrim( $to , ' /' );
+
+ // if we have an empty path, or just one containing a dot
+ if ( $to == '' || $to == '.' ) {
+ return $from;
+ }
+
+ // if the path isn't relative
+ if ( substr( $to , 0 , 1 ) != '/' &&
+ substr( $to , 0 , 2 ) != './' &&
+ substr( $to , 0 , 3 ) != '../' &&
+ $to != '..' )
+ {
+ $from = '';
+ }
+ // Make a long path, containing both, enclose it in /.../
+ $fullPath = '/' . $from . '/' . $to . '/';
+
+ // remove redundant current path dots
+ $fullPath = preg_replace( '!/(\./)+!', '/', $fullPath );
+
+ // remove double slashes
+ $fullPath = preg_replace( '!/{2,}!', '/', $fullPath );
+
+ // remove the enclosing slashes now
+ $fullPath = trim( $fullPath , '/' );
+ $exploded = explode ( '/' , $fullPath );
+ $newExploded = array();
+
+ foreach ( $exploded as $current ) {
+ if ( $current == '..' ) { // removing one level
+ if ( !count( $newExploded ) ) {
+ // attempted to access a node above root node
+ return '<strong class="error">' . wfMsgForContent( 'pfunc_rel2abs_invalid_depth', $fullPath ) . '</strong>';
+ }
+ // remove last level from the stack
+ array_pop( $newExploded );
+ } else {
+ // add the current level to the stack
+ $newExploded[] = $current;
+ }
+ }
+
+ // we can now join it again
+ return implode( '/' , $newExploded );
+ }
+
+ /**
+ * @static
+ * @param $parser Parser
+ * @param $frame PPFrame
+ * @return bool
+ */
+ public static function incrementIfexistCount( $parser, $frame ) {
+ // Don't let this be called more than a certain number of times. It tends to make the database explode.
+ global $wgExpensiveParserFunctionLimit;
+ self::registerClearHook();
+ $parser->mExpensiveFunctionCount++;
+ if ( $frame ) {
+ $pdbk = $frame->getPDBK( 1 );
+ if ( !isset( $parser->pf_ifexist_breakdown[$pdbk] ) ) {
+ $parser->pf_ifexist_breakdown[$pdbk] = 0;
+ }
+ $parser->pf_ifexist_breakdown[$pdbk] ++;
+ }
+ return $parser->mExpensiveFunctionCount <= $wgExpensiveParserFunctionLimit;
+ }
+
+ public static function ifexist( $parser, $title = '', $then = '', $else = '' ) {
+ return self::ifexistCommon( $parser, false, $title, $then, $else );
+ }
+
+ public static function ifexistCommon( $parser, $frame, $titletext = '', $then = '', $else = '' ) {
+ global $wgContLang;
+ $title = Title::newFromText( $titletext );
+ $wgContLang->findVariantLink( $titletext, $title, true );
+ if ( $title ) {
+ if ( $title->getNamespace() == NS_MEDIA ) {
+ /* If namespace is specified as NS_MEDIA, then we want to
+ * check the physical file, not the "description" page.
+ */
+ if ( !self::incrementIfexistCount( $parser, $frame ) ) {
+ return $else;
+ }
+ $file = wfFindFile( $title );
+ if ( !$file ) {
+ return $else;
+ }
+ $parser->mOutput->addImage(
+ $file->getName(), $file->getTimestamp(), $file->getSha1() );
+ return $file->exists() ? $then : $else;
+ } elseif ( $title->getNamespace() == NS_SPECIAL ) {
+ /* Don't bother with the count for special pages,
+ * since their existence can be checked without
+ * accessing the database.
+ */
+ return SpecialPage::exists( $title->getDBkey() ) ? $then : $else;
+ } elseif ( $title->isExternal() ) {
+ /* Can't check the existence of pages on other sites,
+ * so just return $else. Makes a sort of sense, since
+ * they don't exist _locally_.
+ */
+ return $else;
+ } else {
+ $pdbk = $title->getPrefixedDBkey();
+ $lc = LinkCache::singleton();
+ if ( !self::incrementIfexistCount( $parser, $frame ) ) {
+ return $else;
+ }
+ if ( 0 != ( $id = $lc->getGoodLinkID( $pdbk ) ) ) {
+ $parser->mOutput->addLink( $title, $id );
+ return $then;
+ } elseif ( $lc->isBadLink( $pdbk ) ) {
+ $parser->mOutput->addLink( $title, 0 );
+ return $else;
+ }
+ $id = $title->getArticleID();
+ $parser->mOutput->addLink( $title, $id );
+ if ( $id ) {
+ return $then;
+ }
+ }
+ }
+ return $else;
+ }
+
+ public static function ifexistObj( $parser, $frame, $args ) {
+ $title = isset( $args[0] ) ? trim( $frame->expand( $args[0] ) ) : '';
+ $then = isset( $args[1] ) ? $args[1] : null;
+ $else = isset( $args[2] ) ? $args[2] : null;
+
+ $result = self::ifexistCommon( $parser, $frame, $title, $then, $else );
+ if ( $result === null ) {
+ return '';
+ } else {
+ return trim( $frame->expand( $result ) );
+ }
+ }
+
+ public static function time( $parser, $format = '', $date = '', $language = '', $local = false ) {
+ global $wgLang, $wgContLang, $wgLocaltimezone;
+ self::registerClearHook();
+ if ( isset( self::$mTimeCache[$format][$date][$language][$local] ) ) {
+ return self::$mTimeCache[$format][$date][$language][$local];
+ }
+
+ # compute the timestamp string $ts
+ # PHP >= 5.2 can handle dates before 1970 or after 2038 using the DateTime object
+ # PHP < 5.2 is limited to dates between 1970 and 2038
+
+ $invalidTime = false;
+
+ if ( class_exists( 'DateTime' ) ) { # PHP >= 5.2
+ # the DateTime constructor must be used because it throws exceptions
+ # when errors occur, whereas date_create appears to just output a warning
+ # that can't really be detected from within the code
+ try {
+ # Determine timezone
+ if ( $local ) {
+ # convert to MediaWiki local timezone if set
+ if ( isset( $wgLocaltimezone ) ) {
+ $tz = new DateTimeZone( $wgLocaltimezone );
+ } else {
+ $tz = new DateTimeZone( date_default_timezone_get() );
+ }
+ } else {
+ # if local time was not requested, convert to UTC
+ $tz = new DateTimeZone( 'UTC' );
+ }
+
+ # Correct for DateTime interpreting 'XXXX' as XX:XX o'clock
+ if ( preg_match( '/^[0-9]{4}$/', $date ) ) {
+ $date = '00:00 '.$date;
+ }
+
+ # Parse date
+ if ( $date !== '' ) {
+ $dateObject = new DateTime( $date, $tz );
+ } else {
+ # use current date and time
+ $dateObject = new DateTime( 'now', $tz );
+ }
+
+ # Generate timestamp
+ $ts = $dateObject->format( 'YmdHis' );
+ } catch ( Exception $ex ) {
+ $invalidTime = true;
+ }
+ } else { # PHP < 5.2
+ if ( $date !== '' ) {
+ $unix = @strtotime( $date );
+ } else {
+ $unix = time();
+ }
+
+ if ( $unix == -1 || $unix == false ) {
+ $invalidTime = true;
+ } else {
+ if ( $local ) {
+ # Use the time zone
+ if ( isset( $wgLocaltimezone ) ) {
+ $oldtz = getenv( 'TZ' );
+ putenv( 'TZ=' . $wgLocaltimezone );
+ }
+ wfSuppressWarnings(); // E_STRICT system time bitching
+ $ts = date( 'YmdHis', $unix );
+ wfRestoreWarnings();
+ if ( isset( $wgLocaltimezone ) ) {
+ putenv( 'TZ=' . $oldtz );
+ }
+ } else {
+ $ts = wfTimestamp( TS_MW, $unix );
+ }
+ }
+ }
+
+ # format the timestamp and return the result
+ if ( $invalidTime ) {
+ $result = '<strong class="error">' . wfMsgForContent( 'pfunc_time_error' ) . '</strong>';
+ } else {
+ self::$mTimeChars += strlen( $format );
+ if ( self::$mTimeChars > self::$mMaxTimeChars ) {
+ return '<strong class="error">' . wfMsgForContent( 'pfunc_time_too_long' ) . '</strong>';
+ } else {
+ if ( $ts < 100000000000000 ) { // Language can't deal with years after 9999
+ if ( $language !== '' && Language::isValidBuiltInCode( $language ) ) {
+ // use whatever language is passed as a parameter
+ $langObject = Language::factory( $language );
+ $result = $langObject->sprintfDate( $format, $ts );
+ } else {
+ // use wiki's content language
+ $result = $parser->getFunctionLang()->sprintfDate( $format, $ts );
+ }
+ } else {
+ return '<strong class="error">' . wfMsgForContent( 'pfunc_time_too_big' ) . '</strong>';
+ }
+ }
+ }
+ self::$mTimeCache[$format][$date][$language][$local] = $result;
+ return $result;
+ }
+
+ public static function localTime( $parser, $format = '', $date = '', $language = '' ) {
+ return self::time( $parser, $format, $date, $language, true );
+ }
+
+ /**
+ * Obtain a specified number of slash-separated parts of a title,
+ * e.g. {{#titleparts:Hello/World|1}} => "Hello"
+ *
+ * @param Parser $parser Parent parser
+ * @param string $title Title to split
+ * @param int $parts Number of parts to keep
+ * @param int $offset Offset starting at 1
+ * @return string
+ */
+ public static function titleparts( $parser, $title = '', $parts = 0, $offset = 0 ) {
+ $parts = intval( $parts );
+ $offset = intval( $offset );
+ $ntitle = Title::newFromText( $title );
+ if ( $ntitle instanceof Title ) {
+ $bits = explode( '/', $ntitle->getPrefixedText(), 25 );
+ if ( count( $bits ) <= 0 ) {
+ return $ntitle->getPrefixedText();
+ } else {
+ if ( $offset > 0 ) {
+ --$offset;
+ }
+ if ( $parts == 0 ) {
+ return implode( '/', array_slice( $bits, $offset ) );
+ } else {
+ return implode( '/', array_slice( $bits, $offset, $parts ) );
+ }
+ }
+ } else {
+ return $title;
+ }
+ }
+
+ /**
+ * Get a ConvertParser object
+ * @return ConvertParser
+ */
+ protected static function &getConvertParser() {
+ if ( !isset( self::$mConvertParser ) ) {
+ self::$mConvertParser = new ConvertParser;
+ }
+ return self::$mConvertParser;
+ }
+
+ public static function convert( /*...*/ ) {
+ try {
+ $args = func_get_args();
+ return self::getConvertParser()->execute( $args );
+ } catch ( ConvertError $e ) {
+ return $e->getMessage();
+ }
+ }
+
+ // Verifies parameter is less than max string length.
+ private static function checkLength( $text ) {
+ global $wgPFStringLengthLimit;
+ return ( mb_strlen( $text ) < $wgPFStringLengthLimit );
+ }
+
+ // Generates error message. Called when string is too long.
+ private static function tooLongError() {
+ global $wgPFStringLengthLimit, $wgContLang;
+ return '<strong class="error">' .
+ wfMsgExt( 'pfunc_string_too_long',
+ array( 'escape', 'parsemag', 'content' ),
+ $wgContLang->formatNum( $wgPFStringLengthLimit ) ) .
+ '</strong>';
+ }
+
+ /**
+ * {{#len:string}}
+ *
+ * Reports number of characters in string.
+ */
+ public static function runLen ( $parser, $inStr = '' ) {
+ wfProfileIn( __METHOD__ );
+
+ $inStr = self::killMarkers( $parser, (string)$inStr );
+ $len = mb_strlen( $inStr );
+
+ wfProfileOut( __METHOD__ );
+ return $len;
+ }
+
+ /**
+ * {{#pos: string | needle | offset}}
+ *
+ * Finds first occurrence of "needle" in "string" starting at "offset".
+ *
+ * Note: If the needle is an empty string, single space is used instead.
+ * Note: If the needle is not found, empty string is returned.
+ */
+ public static function runPos ( $parser, $inStr = '', $inNeedle = '', $inOffset = 0 ) {
+ wfProfileIn( __METHOD__ );
+
+ $inStr = self::killMarkers( $parser, (string)$inStr );
+ $inNeedle = self::killMarkers( $parser, (string)$inNeedle );
+
+ if ( !self::checkLength( $inStr ) ||
+ !self::checkLength( $inNeedle ) ) {
+ wfProfileOut( __METHOD__ );
+ return self::tooLongError();
+ }
+
+ if ( $inNeedle == '' ) { $inNeedle = ' '; }
+
+ $pos = mb_strpos( $inStr, $inNeedle, $inOffset );
+ if ( $pos === false ) { $pos = ""; }
+
+ wfProfileOut( __METHOD__ );
+ return $pos;
+ }
+
+ /**
+ * {{#rpos: string | needle}}
+ *
+ * Finds last occurrence of "needle" in "string".
+ *
+ * Note: If the needle is an empty string, single space is used instead.
+ * Note: If the needle is not found, -1 is returned.
+ */
+ public static function runRPos ( $parser, $inStr = '', $inNeedle = '' ) {
+ wfProfileIn( __METHOD__ );
+
+ $inStr = self::killMarkers( $parser, (string)$inStr );
+ $inNeedle = self::killMarkers( $parser, (string)$inNeedle );
+
+ if ( !self::checkLength( $inStr ) ||
+ !self::checkLength( $inNeedle ) ) {
+ wfProfileOut( __METHOD__ );
+ return self::tooLongError();
+ }
+
+ if ( $inNeedle == '' ) { $inNeedle = ' '; }
+
+ $pos = mb_strrpos( $inStr, $inNeedle );
+ if ( $pos === false ) { $pos = -1; }
+
+ wfProfileOut( __METHOD__ );
+ return $pos;
+ }
+
+ /**
+ * {{#sub: string | start | length }}
+ *
+ * Returns substring of "string" starting at "start" and having
+ * "length" characters.
+ *
+ * Note: If length is zero, the rest of the input is returned.
+ * Note: A negative value for "start" operates from the end of the
+ * "string".
+ * Note: A negative value for "length" returns a string reduced in
+ * length by that amount.
+ */
+ public static function runSub ( $parser, $inStr = '', $inStart = 0, $inLength = 0 ) {
+ wfProfileIn( __METHOD__ );
+
+ $inStr = self::killMarkers( $parser, (string)$inStr );
+
+ if ( !self::checkLength( $inStr ) ) {
+ wfProfileOut( __METHOD__ );
+ return self::tooLongError();
+ }
+
+ if ( intval( $inLength ) == 0 ) {
+ $result = mb_substr( $inStr, $inStart );
+ } else {
+ $result = mb_substr( $inStr, $inStart, $inLength );
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $result;
+ }
+
+ /**
+ * {{#count: string | substr }}
+ *
+ * Returns number of occurrences of "substr" in "string".
+ *
+ * Note: If "substr" is empty, a single space is used.
+ */
+ public static function runCount ( $parser, $inStr = '', $inSubStr = '' ) {
+ wfProfileIn( __METHOD__ );
+
+ $inStr = self::killMarkers( $parser, (string)$inStr );
+ $inSubStr = self::killMarkers( $parser, (string)$inSubStr );
+
+ if ( !self::checkLength( $inStr ) ||
+ !self::checkLength( $inSubStr ) ) {
+ wfProfileOut( __METHOD__ );
+ return self::tooLongError();
+ }
+
+ if ( $inSubStr == '' ) { $inSubStr = ' '; }
+
+ $result = mb_substr_count( $inStr, $inSubStr );
+
+ wfProfileOut( __METHOD__ );
+ return $result;
+ }
+
+ /**
+ * {{#replace:string | from | to | limit }}
+ *
+ * Replaces each occurrence of "from" in "string" with "to".
+ * At most "limit" replacements are performed.
+ *
+ * Note: Armored against replacements that would generate huge strings.
+ * Note: If "from" is an empty string, single space is used instead.
+ */
+ public static function runReplace( $parser, $inStr = '',
+ $inReplaceFrom = '', $inReplaceTo = '', $inLimit = -1 ) {
+ global $wgPFStringLengthLimit;
+ wfProfileIn( __METHOD__ );
+
+ $inStr = self::killMarkers( $parser, (string)$inStr );
+ $inReplaceFrom = self::killMarkers( $parser, (string)$inReplaceFrom );
+ $inReplaceTo = self::killMarkers( $parser, (string)$inReplaceTo );
+
+ if ( !self::checkLength( $inStr ) ||
+ !self::checkLength( $inReplaceFrom ) ||
+ !self::checkLength( $inReplaceTo ) ) {
+ wfProfileOut( __METHOD__ );
+ return self::tooLongError();
+ }
+
+ if ( $inReplaceFrom == '' ) { $inReplaceFrom = ' '; }
+
+ // Precompute limit to avoid generating enormous string:
+ $diff = mb_strlen( $inReplaceTo ) - mb_strlen( $inReplaceFrom );
+ if ( $diff > 0 ) {
+ $limit = ( ( $wgPFStringLengthLimit - mb_strlen( $inStr ) ) / $diff ) + 1;
+ } else {
+ $limit = -1;
+ }
+
+ $inLimit = intval( $inLimit );
+ if ( $inLimit >= 0 ) {
+ if ( $limit > $inLimit || $limit == -1 ) { $limit = $inLimit; }
+ }
+
+ // Use regex to allow limit and handle UTF-8 correctly.
+ $inReplaceFrom = preg_quote( $inReplaceFrom, '/' );
+ $inReplaceTo = StringUtils::escapeRegexReplacement( $inReplaceTo );
+
+ $result = preg_replace( '/' . $inReplaceFrom . '/u',
+ $inReplaceTo, $inStr, $limit );
+
+ if ( !self::checkLength( $result ) ) {
+ wfProfileOut( __METHOD__ );
+ return self::tooLongError();
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $result;
+ }
+
+
+ /**
+ * {{#explode:string | delimiter | position | limit}}
+ *
+ * Breaks "string" into chunks separated by "delimiter" and returns the
+ * chunk identified by "position".
+ *
+ * Note: Negative position can be used to specify tokens from the end.
+ * Note: If the divider is an empty string, single space is used instead.
+ * Note: Empty string is returned if there are not enough exploded chunks.
+ */
+ public static function runExplode ( $parser, $inStr = '', $inDiv = '', $inPos = 0, $inLim = null ) {
+ wfProfileIn( __METHOD__ );
+
+ $inStr = self::killMarkers( $parser, (string)$inStr );
+ $inDiv = self::killMarkers( $parser, (string)$inDiv );
+
+ if ( $inDiv == '' ) { $inDiv = ' '; }
+
+ if ( !self::checkLength( $inStr ) ||
+ !self::checkLength( $inDiv ) ) {
+ wfProfileOut( __METHOD__ );
+ return self::tooLongError();
+ }
+
+ $inDiv = preg_quote( $inDiv, '/' );
+
+ $matches = preg_split( '/' . $inDiv . '/u', $inStr, $inLim );
+
+ if ( $inPos >= 0 && isset( $matches[$inPos] ) ) {
+ $result = $matches[$inPos];
+ } elseif ( $inPos < 0 && isset( $matches[count( $matches ) + $inPos] ) ) {
+ $result = $matches[count( $matches ) + $inPos];
+ } else {
+ $result = '';
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $result;
+ }
+
+ /**
+ * {{#urldecode:string}}
+ *
+ * Decodes URL-encoded (like%20that) strings.
+ */
+ public static function runUrlDecode( $parser, $inStr = '' ) {
+ wfProfileIn( __METHOD__ );
+
+ $inStr = self::killMarkers( $parser, (string)$inStr );
+ if ( !self::checkLength( $inStr ) ) {
+ wfProfileOut( __METHOD__ );
+ return self::tooLongError();
+ }
+
+ $result = urldecode( $inStr );
+
+ wfProfileOut( __METHOD__ );
+ return $result;
+ }
+}
diff --git a/extensions/ParserFunctions/README b/extensions/ParserFunctions/README
new file mode 100644
index 00000000..9665c2f3
--- /dev/null
+++ b/extensions/ParserFunctions/README
@@ -0,0 +1,21 @@
+ParserFunctions v1.4.0
+
+1. Licensing
+2. How to install
+3. Tests
+
+1. Licensing
+Licensed under GNU GPL. See COPYING for more license information.
+
+2. How to install
+ a. Download this tarbell and extract the contents to $IP/extensions/ParserFunctions/
+ where $IP is your root wiki install
+ b. Add 'require_once( "$IP/extensions/ParserFunctions/ParserFunctions.php");' to the
+ end of your LocalSettings (without the single quotes)
+ c. Enjoy
+
+3. Tests
+ParserFunctions ships with two tests
+- Parser tests. These get added to the main parser tests, see there for docs
+- Expression tests. These are designed to test the math-related functions
+ See testExpr.php
diff --git a/extensions/ParserFunctions/convertTests.txt b/extensions/ParserFunctions/convertTests.txt
new file mode 100644
index 00000000..dc09c45a
--- /dev/null
+++ b/extensions/ParserFunctions/convertTests.txt
@@ -0,0 +1,231 @@
+!! functionhooks
+convert
+!! endfunctionhooks
+
+!! test
+Simple conversion
+!! input
+{{#convert: 10 m | km }}
+!!result
+<p>0.01 kilometres
+</p>
+!! end
+
+!! test
+Position and formatting of numbers and units
+!! input
+*{{#convert: 10 m | km }}
+*{{#convert: 10m | km }}
+*{{#convert: 10 km | m }}
+*{{#convert: 10-km | m }}
+*{{#convert: 10E2 km | m }}
+*{{#convert: 10E-2 km | m }}
+*{{#convert: 10.0E2 km | m }}
+*{{#convert: 10.0E2.5 km | m }}
+!! result
+<ul><li>0.01 kilometres
+</li><li>0.01kilometres
+</li><li>10,000 metres
+</li><li>10,000-metres
+</li><li>1,000,000 metres
+</li><li>100 metres
+</li><li>1,000,000 metres
+</li><li>1,000,000.5,000 metres
+</li></ul>
+
+!! end
+
+!! test
+Precision 1
+!! input
+*{{#convert: 10 m | km }}
+*{{#convert: 11 m | km }}
+*{{#convert: 12 m | km }}
+*{{#convert: 13 m | km }}
+*{{#convert: 14 m | km }}
+*{{#convert: 15 m | km }}
+*{{#convert: 16 m | km }}
+*{{#convert: 17 m | km }}
+*{{#convert: 18 m | km }}
+*{{#convert: 19 m | km }}
+*{{#convert: 20 m | km }}
+!! result
+<ul><li>0.01 kilometres
+</li><li>0.011 kilometres
+</li><li>0.012 kilometres
+</li><li>0.013 kilometres
+</li><li>0.014 kilometres
+</li><li>0.015 kilometres
+</li><li>0.016 kilometres
+</li><li>0.017 kilometres
+</li><li>0.018 kilometres
+</li><li>0.019 kilometres
+</li><li>0.02 kilometres
+</li></ul>
+
+!! end
+
+!! test
+Precision 2
+!! input
+*{{#convert: 10.0 m | km }}
+*{{#convert: 10.1 m | km }}
+*{{#convert: 10.2 m | km }}
+*{{#convert: 10.3 m | km }}
+*{{#convert: 10.4 m | km }}
+*{{#convert: 10.5 m | km }}
+*{{#convert: 10.6 m | km }}
+*{{#convert: 10.7 m | km }}
+!! result
+<ul><li>0.0100 kilometres
+</li><li>0.0101 kilometres
+</li><li>0.0102 kilometres
+</li><li>0.0103 kilometres
+</li><li>0.0104 kilometres
+</li><li>0.0105 kilometres
+</li><li>0.0106 kilometres
+</li><li>0.0107 kilometres
+</li></ul>
+
+!! end
+
+!! test
+String interpolation
+!! input
+{{#convert: 25, 26, 27, 28, 29, and 30 km }}
+!! result
+<p>25,000, 26,000, 27,000, 28,000, 29,000, and 30,000 metres
+</p>
+!! end
+
+!! test
+Precision 3
+!! input
+{{#convert: 25, 26, 27, 28, 29, and 30 miles }}
+!! result
+<p>40,000, 42,000, 43,000, 45,000, 47,000, and 50,000 metres
+</p>
+!! end
+
+!! test
+Precision 4
+!! input
+{{#convert:35000, 35E3, 35.0E3, 350E2, 3.500E4, 35000E0, 350000E-1 m | km }}
+!! result
+<p>35, 35, 35.0, 35, 35.00, 35, 35 kilometres
+</p>
+!! end
+
+!! test
+#sourceunit
+!!input
+*{{#convert: 25 | #sourceunit = km }}
+*{{#convert: 25 | #sourceunit=km }}
+*{{#convert: 25 | #sourceunit = km | #sourceunit = mm }}
+*{{#convert: 25 | #sourceunit = km | cm }}
+!! result
+<ul><li>25,000 metres
+</li><li>25,000 metres
+</li><li>0.025 metres
+</li><li>2,500,000 centimetres
+</li></ul>
+
+!! end
+
+!! test
+Precision overrides
+!!input
+*{{#convert: 1 mi | #dp = 0 }}
+*{{#convert: 1 mi | #dp=1 }}
+*{{#convert: 1 mi | #dp = -2 }}
+*{{#convert: 1 mi | #dp = 5 }}
+*{{#convert: 1 mi | #dp = -8 }}
+*{{#convert: 1 mi | #sf = 0 }}
+*{{#convert: 1 mi | #sf=1 }}
+*{{#convert: 1 mi | #sf = 3 }}
+*{{#convert: 1 mi | #sf = 5 }}
+*{{#convert: 1 mi | #sf = -8 }}
+!! result
+<ul><li>1,609 metres
+</li><li>1,609.3 metres
+</li><li>1,600 metres
+</li><li>1,609.344 metres
+</li><li>0 metres
+</li><li>2,000 metres
+</li><li>2,000 metres
+</li><li>1,610 metres
+</li><li>1,609.3 metres
+</li><li>2,000 metres
+</li></ul>
+
+!! end
+
+
+!! test
+Errors
+!! input
+*{{#convert: 25 | km }}
+*{{#convert: 25 foobars | mi }}
+*{{#convert: 25 mi | #sourceunit = foobar }}
+*{{#convert: 25 km | s }}
+*{{#convert: 25 km/Pa | m/Pa }}
+*{{#convert: 25 km/s/l }}
+*{{#convert: 25 km/m3 }}
+!! result
+<ul><li><strong class="error">Error: no source unit given</strong>
+</li><li><strong class="error">Error: unknown unit "foobars"</strong>
+</li><li><strong class="error">Error: unknown unit "foobar"</strong>
+</li><li><strong class="error">Error: cannot convert between units of "length" and "time"</strong>
+</li><li><strong class="error">Error: invalid compound unit "length/pressure"</strong>
+</li><li><strong class="error">Error: cannot parse double compound units like "km/s/l"</strong>
+</li><li><strong class="error">Error: invalid compound unit "length/volume"</strong>
+</li></ul>
+
+!! end
+
+
+!! test
+#sourceunit = #targetunit
+!! input
+*{{#convert: 25 km | #targetunit = #sourceunit }}
+*{{#convert: 25 km | #sourceunit = #targetunit }}
+!! result
+<ul><li>25 kilometres
+</li><li>25 kilometres
+</li></ul>
+
+!! end
+
+!! test
+#language
+!! input
+*{{#convert: 10 m | km | #language=en-gb }}
+*{{#convert: 10m | km | #language = en }}
+*{{#convert: 10 km | m |#language=en}}
+*{{#convert: 10 Pa | mmHg | #language = fr }}
+!! result
+<ul><li>0.01 kilometres
+</li><li>0.01kilometers
+</li><li>10,000 meters
+</li><li>0.1 millimètre de mercure
+</li></ul>
+
+!! end
+
+!! test
+Case sensitivity
+!! input
+*{{#convert: 10 mm | m }}
+*{{#convert: 10 Mm | m }}
+*{{#convert: 10 km | Mm }}
+*{{#convert: 10 Pa | mmHg }}
+*{{#convert: 10 pa | mmHg }}
+!! result
+<ul><li>0.01 metres
+</li><li>10,000,000 metres
+</li><li>0.01 megametres
+</li><li>0.1 millimetres of mercury
+</li><li><strong class="error">Error: unknown unit "pa"</strong>
+</li></ul>
+
+!! end
diff --git a/extensions/ParserFunctions/exprTests.txt b/extensions/ParserFunctions/exprTests.txt
new file mode 100644
index 00000000..d842d462
--- /dev/null
+++ b/extensions/ParserFunctions/exprTests.txt
@@ -0,0 +1,39 @@
+1 + 1 = 2
+-1 + 1 = 0
++1 + 1 = 2
+4 * 4 = 16
+-4 * -4 = 4 * 4
+(1/3) * 3 = 1
+3 / 1.5 = 2
+3 mod 2 = 1
+1 or 0
+not (1 and 0)
+not 0
+4.0 round 0; 4
+ceil 4; 4
+floor 4; 4
+4.5 round 0; 5
+4.2 round 0; 4
+-4.2 round 0; -4
+-4.5 round 0; -5
+-2.0 round 0; -2
+ceil -3; -3
+floor -6.0; -6
+ceil 4.2; 5
+ceil -4.5; -4
+floor -4.5; -5
+4 < 5
+-5 < 2
+-2 <= -2
+abs(-2); 2
+4 > 3
+4 > -3
+5 >= 2
+2 >= 2
+1 != 2
+not (1 != 1)
+1e4 = 10000
+1e-2 = 0.01
+ln(exp(1));1
+trunc(4.5);4
+trunc(-4.5);-4
diff --git a/extensions/ParserFunctions/funcsParserTests.txt b/extensions/ParserFunctions/funcsParserTests.txt
new file mode 100644
index 00000000..ef2c1f38
--- /dev/null
+++ b/extensions/ParserFunctions/funcsParserTests.txt
@@ -0,0 +1,177 @@
+# Force the test runner to ensure the extension is loaded
+# fixme... this doesn't seem to work :D
+#!! functionhooks
+#time
+#!! endfunctionhooks
+
+# fixme: #time seems to be accepting input as local time, which strikes me as wrong
+
+!! article
+ParserFunctions page
+!! text
+A sample page so we can test ifexist.
+
+This used to be a Main Page, but that caused duplicate article
+warnings when running the normal tests at the same time.
+!! endarticle
+
+!! article
+File:Dionysos-Brunnen am Kölner Dom.jpg
+!! text
+blah blah
+!! endarticle
+
+!! test
+Input times should probably be UTC, not local time
+!! input
+{{#time:c|15 January 2001}}
+!!result
+<p>2001-01-15T00:00:00+00:00
+</p>
+!! end
+
+!! test
+Time test in traditional range...
+!! input
+{{#time:Y|15 January 2001}}
+!! result
+<p>2001
+</p>
+!! end
+
+!! test
+Time test prior to 1970 Unix creation myth
+!! input
+{{#time:Y|5 April 1967}}
+!! result
+<p>1967
+</p>
+!! end
+
+!! test
+Time test after the 2038 32-bit Apocalype
+!! input
+{{#time:Y|28 July 2061}}
+!! result
+<p>2061
+</p>
+!! end
+
+!! test
+Bug 19093: Default values don't fall through in switch
+!! input
+<{{#switch: foo | bar | #default = DEF }}>
+<{{#switch: foo | #default | bar = DEF }}>
+!! result
+<p>&lt;DEF&gt;
+&lt;DEF&gt;
+</p>
+!! end
+
+!! test
+{{#ifexist}}
+!! input
+{{#ifexist:Media:Foobar.jpg|Found|Not found}}
+{{#ifexist:ParserFunctions page|Found|Not found}}
+{{#ifexist:Missing|Found|Not found}}
+!! result
+<p>Found
+Found
+Not found
+</p>
+!! end
+
+!! test
+#if
+!! input
+{{#if: | yes | no}}
+{{#if: string | yes | no}}
+{{#if: | yes | no}}
+{{#if:
+
+
+| yes | no}}
+{{#if: 1==2 | yes | no}}
+{{#if: foo | yes }}
+{{#if: | yes }}(empty)
+{{#if: foo | | no}}(empty)
+{{#if: {{{1}}} | yes | no}}
+{{#if: {{{1|}}} | yes | no}}
+!! result
+<p>no
+yes
+no
+no
+yes
+yes
+(empty)
+(empty)
+yes
+no
+</p>
+!! end
+
+!! test
+#ifeq
+!!input
+{{#ifeq: 01 | 1 | yes | no}}
+{{#ifeq: 0 | -0 | yes | no}}
+{{#ifeq: foo | bar | yes | no}}
+{{#ifeq: foo | Foo | yes | no}}
+{{#ifeq: "01" | "1" | yes | no}}
+!! result
+<p>yes
+yes
+no
+no
+no
+</p>
+!! end
+
+!! test
+#iferror
+!!input
+{{#iferror: {{#expr: 1 + 2 }} | error | correct }}
+{{#iferror: {{#expr: 1 + X }} | error | correct }}
+{{#iferror: {{#expr: 1 + 2 }} | error }}
+{{#iferror: {{#expr: 1 + X }} | error }}
+{{#iferror: {{#expr: 1 + 2 }} }}
+{{#iferror: {{#expr: 1 + X }} }}empty
+!! result
+<p>correct
+error
+3
+error
+3
+empty
+</p>
+!! end
+
+
+!! test
+#ifexpr
+!! input
+{{#ifexpr: | yes | no}}
+{{#ifexpr: 1 > 0 | yes }}
+{{#ifexpr: 1 < 0 | yes }}empty
+{{#ifexpr: 1 > 0 | | no}}empty
+{{#ifexpr: 1 < 0 | | no}}
+{{#ifexpr: 1 > 0 }}empty
+!! result
+<p>no
+yes
+empty
+empty
+no
+empty
+</p>
+!! end
+
+!! test
+Bug 22866: #ifexpr should evaluate "-0" as false
+!! input
+{{#ifexpr: (-1)*0 | true | false }}
+!! result
+<p>false
+</p>
+!! end
diff --git a/extensions/ParserFunctions/stringFunctionTests.txt b/extensions/ParserFunctions/stringFunctionTests.txt
new file mode 100644
index 00000000..064decef
--- /dev/null
+++ b/extensions/ParserFunctions/stringFunctionTests.txt
@@ -0,0 +1,32 @@
+# @todo expand
+!! functionhooks
+len
+!! endfunctionhooks
+
+!! test
+#len
+!! input
+{{#len:}}
+{{#len:0}}
+{{#len:test}}
+!!result
+<p>0
+1
+4
+</p>
+!! end
+
+!! test
+#urldecode
+!! input
+{{#urldecode:}}
+{{#urldecode:foo%20bar}}
+{{#urldecode:%D0%9C%D0%B5%D0%B4%D0%B8%D0%B0%D0%92%D0%B8%D0%BA%D0%B8}}
+{{#urldecode: some unescaped string}}
+!! result
+<p>foo bar
+МедиаВики
+some unescaped string
+</p>
+!! end
+
diff --git a/extensions/ParserFunctions/testExpr.php b/extensions/ParserFunctions/testExpr.php
new file mode 100644
index 00000000..4a941737
--- /dev/null
+++ b/extensions/ParserFunctions/testExpr.php
@@ -0,0 +1,38 @@
+<?php
+
+require_once ( getenv( 'MW_INSTALL_PATH' ) !== false
+ ? getenv( 'MW_INSTALL_PATH' ) . "/maintenance/commandLine.inc"
+ : dirname( __FILE__ ) . '/../../maintenance/commandLine.inc' );
+require( 'Expr.php' );
+
+$tests = file( 'exprTests.txt' );
+
+$pass = $fail = 0;
+
+// Each test is on one line. The test must always evaluate to '1'.
+$parser = new ExprParser;
+foreach ( $tests as $test ) {
+ $test = trim( $test );
+ if ( in_string( ';', $test ) )
+ list( $input, $expected ) = explode( ';', $test );
+ else {
+ $input = $test;
+ $expected = 1;
+ }
+
+ $expected = trim( $expected );
+ $input = trim( $input );
+
+ $result = $parser->doExpression( $input );
+ if ( $result != $expected ) {
+ print
+ "FAILING test -- $input
+ gave a final result of $result, instead of $expected.\n";
+ $fail++;
+ } else {
+ print "PASSED test $test\n";
+ $pass++;
+ }
+}
+
+print "Passed $pass tests, failed $fail tests, out of a total of " . ( $pass + $fail ) . "\n"; \ No newline at end of file
diff --git a/extensions/Renameuser/RenameUserJob.php b/extensions/Renameuser/RenameUserJob.php
new file mode 100644
index 00000000..6da2c7e6
--- /dev/null
+++ b/extensions/Renameuser/RenameUserJob.php
@@ -0,0 +1,99 @@
+<?php
+/**
+ * Custom job to perform updates on tables in busier environments
+ */
+class RenameUserJob extends Job {
+
+ /**
+ * Constructor
+ *
+ * @param Title $title Associated title
+ * @param array $params Job parameters
+ */
+ public function __construct( $title, $params ) {
+ parent::__construct( 'renameUser', $title, $params );
+ }
+
+ /**
+ * Execute the job
+ *
+ * @return bool
+ */
+ public function run() {
+ $dbw = wfGetDB( DB_MASTER );
+
+ $table = $this->params['table'];
+ $column = $this->params['column'];
+ $oldname = $this->params['oldname'];
+ $userID = isset( $this->params['userID'] ) ? $this->params['userID'] : null;
+ $uidColumn = isset( $this->params['uidColumn'] ) ? $this->params['uidColumn'] : null;
+ $timestampColumn = isset( $this->params['timestampColumn'] ) ? $this->params['timestampColumn'] : null;
+ $minTimestamp = $this->params['minTimestamp'];
+ $maxTimestamp = $this->params['maxTimestamp'];
+ $uniqueKey = isset( $this->params['uniqueKey'] ) ? $this->params['uniqueKey'] : null;
+ $keyId = isset( $this->params['keyId'] ) ? $this->params['keyId'] : null;
+ $newname = $this->params['newname'];
+ $count = $this->params['count'];
+
+ # Conditions like "*_user_text = 'x'
+ $conds = array( $column => $oldname );
+ # If user ID given, add that to condition to avoid rename collisions.
+ if ( isset( $userID ) ) {
+ $conds[$uidColumn] = $userID;
+ }
+ # Bound by timestamp if given
+ if ( isset( $timestampColumn ) ) {
+ $conds[] = "$timestampColumn >= '$minTimestamp'";
+ $conds[] = "$timestampColumn <= '$maxTimestamp'";
+ # Otherwise, bound by key (B/C)
+ } elseif ( isset( $uniqueKey ) ) {
+ $conds[$uniqueKey] = $keyId;
+ } else {
+ wfDebug( 'RenameUserJob::run - invalid job row given' ); // this shouldn't happen
+ return false;
+ }
+ # Update a chuck of rows!
+ $dbw->update( $table,
+ array( $column => $newname ),
+ $conds,
+ __METHOD__
+ );
+ # Special case: revisions may be deleted while renaming...
+ if ( $table == 'revision' && isset( $timestampColumn ) ) {
+ $actual = $dbw->affectedRows();
+ # If some revisions were not renamed, they may have been deleted.
+ # Do a pass on the archive table to get these straglers...
+ if ( $actual < $count ) {
+ $dbw->update( 'archive',
+ array( 'ar_user_text' => $newname ),
+ array( 'ar_user_text' => $oldname,
+ 'ar_user' => $userID,
+ // No user,rev_id index, so use timestamp to bound
+ // the rows. This can use the user,timestamp index.
+ "ar_timestamp >= '$minTimestamp'",
+ "ar_timestamp <= '$maxTimestamp'" ),
+ __METHOD__
+ );
+ }
+ }
+ # Special case: revisions may be restored while renaming...
+ if ( $table == 'archive' && isset( $timestampColumn ) ) {
+ $actual = $dbw->affectedRows();
+ # If some revisions were not renamed, they may have been restored.
+ # Do a pass on the revision table to get these straglers...
+ if ( $actual < $count ) {
+ $dbw->update( 'revision',
+ array( 'rev_user_text' => $newname ),
+ array( 'rev_user_text' => $oldname,
+ 'rev_user' => $userID,
+ // No user,rev_id index, so use timestamp to bound
+ // the rows. This can use the user,timestamp index.
+ "rev_timestamp >= '$minTimestamp'",
+ "rev_timestamp <= '$maxTimestamp'" ),
+ __METHOD__
+ );
+ }
+ }
+ return true;
+ }
+}
diff --git a/extensions/Renameuser/Renameuser.alias.php b/extensions/Renameuser/Renameuser.alias.php
new file mode 100644
index 00000000..c6e5b438
--- /dev/null
+++ b/extensions/Renameuser/Renameuser.alias.php
@@ -0,0 +1,304 @@
+<?php
+/**
+ * Aliases for Special:Renameuser
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$specialPageAliases = array();
+
+/** English (English) */
+$specialPageAliases['en'] = array(
+ 'Renameuser' => array( 'RenameUser' ),
+);
+
+/** Arabic (العربية) */
+$specialPageAliases['ar'] = array(
+ 'Renameuser' => array( 'إعادة_تسمية_مستخدم' ),
+);
+
+/** Egyptian Spoken Arabic (مصرى) */
+$specialPageAliases['arz'] = array(
+ 'Renameuser' => array( 'سمّى_تانى_يوزر' ),
+);
+
+/** Bulgarian (БългарÑки) */
+$specialPageAliases['bg'] = array(
+ 'Renameuser' => array( 'Преименуване' ),
+);
+
+/** Breton (Brezhoneg) */
+$specialPageAliases['br'] = array(
+ 'Renameuser' => array( 'AdenevelImplijer' ),
+);
+
+/** Bosnian (Bosanski) */
+$specialPageAliases['bs'] = array(
+ 'Renameuser' => array( 'PreimenovanjeKorisnika' ),
+);
+
+/** Catalan (Català) */
+$specialPageAliases['ca'] = array(
+ 'Renameuser' => array( 'Reanomena usuari' ),
+);
+
+/** Czech (ÄŒesky) */
+$specialPageAliases['cs'] = array(
+ 'Renameuser' => array( 'Přejmenovat_uživatele' ),
+);
+
+/** German (Deutsch) */
+$specialPageAliases['de'] = array(
+ 'Renameuser' => array( 'Benutzer_umbenennen' ),
+);
+
+/** Lower Sorbian (Dolnoserbski) */
+$specialPageAliases['dsb'] = array(
+ 'Renameuser' => array( 'Wužywarja pśemjeniś' ),
+);
+
+/** Divehi (Þ‹Þ¨ÞˆÞ¬Þ€Þ¨Þ„Þ¦ÞÞ°) */
+$specialPageAliases['dv'] = array(
+ 'Renameuser' => array( 'Þ‰Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞªÞŽÞ¬ Þ‚Þ¦Þ‚Þ° Þ„Þ¦Þ‹Þ¦ÞÞª Þ†ÞªÞƒÞ¦Þ‡Þ°ÞˆÞ§' ),
+);
+
+/** Greek (Ελληνικά) */
+$specialPageAliases['el'] = array(
+ 'Renameuser' => array( 'ΜετονομασίαΧÏήστη' ),
+);
+
+/** Esperanto (Esperanto) */
+$specialPageAliases['eo'] = array(
+ 'Renameuser' => array( 'Alinomigi_uzanton' ),
+);
+
+/** Spanish (Español) */
+$specialPageAliases['es'] = array(
+ 'Renameuser' => array( 'RenombrarUsuario', 'Renombrar_usuario', 'Cambiar_el_nombre_de_usuario' ),
+);
+
+/** Finnish (Suomi) */
+$specialPageAliases['fi'] = array(
+ 'Renameuser' => array( 'Käyttäjätunnusten_nimeäminen' ),
+);
+
+/** French (Français) */
+$specialPageAliases['fr'] = array(
+ 'Renameuser' => array( 'Renommer_utilisateur', 'RenommerUtilisateur' ),
+);
+
+/** Franco-Provençal (Arpetan) */
+$specialPageAliases['frp'] = array(
+ 'Renameuser' => array( 'Renomar l\'utilisator', 'RenomarLUtilisator' ),
+);
+
+/** Galician (Galego) */
+$specialPageAliases['gl'] = array(
+ 'Renameuser' => array( 'Renomear_usuario' ),
+);
+
+/** Swiss German (Alemannisch) */
+$specialPageAliases['gsw'] = array(
+ 'Renameuser' => array( 'Benutzer e andre Name gee' ),
+);
+
+/** Hebrew (עברית) */
+$specialPageAliases['he'] = array(
+ 'Renameuser' => array( 'שינוי_ש×_משתמש' ),
+);
+
+/** Croatian (Hrvatski) */
+$specialPageAliases['hr'] = array(
+ 'Renameuser' => array( 'Preimenuj_suradnika' ),
+);
+
+/** Upper Sorbian (Hornjoserbsce) */
+$specialPageAliases['hsb'] = array(
+ 'Renameuser' => array( 'Wužiwarja přemjenować' ),
+);
+
+/** Haitian (Kreyòl ayisyen) */
+$specialPageAliases['ht'] = array(
+ 'Renameuser' => array( 'RenonmenItilizatè' ),
+);
+
+/** Hungarian (Magyar) */
+$specialPageAliases['hu'] = array(
+ 'Renameuser' => array( 'Szerkesztő_átnevezése' ),
+);
+
+/** Interlingua (Interlingua) */
+$specialPageAliases['ia'] = array(
+ 'Renameuser' => array( 'Renominar_usator' ),
+);
+
+/** Indonesian (Bahasa Indonesia) */
+$specialPageAliases['id'] = array(
+ 'Renameuser' => array( 'Ganti_nama_pengguna', 'GantiNamaPengguna' ),
+);
+
+/** Italian (Italiano) */
+$specialPageAliases['it'] = array(
+ 'Renameuser' => array( 'RinominaUtente' ),
+);
+
+/** Japanese (日本語) */
+$specialPageAliases['ja'] = array(
+ 'Renameuser' => array( '利用者å変更', '利用者åã®å¤‰æ›´' ),
+);
+
+/** Khmer (ភាសាážáŸ’មែរ) */
+$specialPageAliases['km'] = array(
+ 'Renameuser' => array( 'ប្ដូរឈ្មោះអ្នកប្រើប្រាស់' ),
+);
+
+/** Korean (한국어) */
+$specialPageAliases['ko'] = array(
+ 'Renameuser' => array( 'ì´ë¦„바꾸기', '계정ì´ë¦„바꾸기', '사용ìžì´ë¦„바꾸기' ),
+);
+
+/** Colognian (Ripoarisch) */
+$specialPageAliases['ksh'] = array(
+ 'Renameuser' => array( 'Metmaacher ömnänne', 'Medmaacher ömnänne', 'Metmaacher ömnenne', 'Medmaacher ömnenne', 'Metmaacher ömdäufe', 'Medmaacher ömdäufe' ),
+);
+
+/** Latin (Latina) */
+$specialPageAliases['la'] = array(
+ 'Renameuser' => array( 'Usorem renominare' ),
+);
+
+/** Luxembourgish (Lëtzebuergesch) */
+$specialPageAliases['lb'] = array(
+ 'Renameuser' => array( 'Benotzer_ëmbenennen' ),
+);
+
+/** Macedonian (МакедонÑки) */
+$specialPageAliases['mk'] = array(
+ 'Renameuser' => array( 'ПреименувајКориÑник' ),
+);
+
+/** Malayalam (മലയാളം) */
+$specialPageAliases['ml'] = array(
+ 'Renameuser' => array( 'ഉപയോകàµà´¤àµƒà´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚' ),
+);
+
+/** Marathi (मराठी) */
+$specialPageAliases['mr'] = array(
+ 'Renameuser' => array( 'सदसà¥à¤¯à¤ªà¥à¤°à¥à¤¨à¤¾à¤®à¤¿à¤¤à¤•à¤°à¤¾' ),
+);
+
+/** Malay (Bahasa Melayu) */
+$specialPageAliases['ms'] = array(
+ 'Renameuser' => array( 'Tukar_nama_pengguna' ),
+);
+
+/** Maltese (Malti) */
+$specialPageAliases['mt'] = array(
+ 'Renameuser' => array( 'BiddelIsemUtent' ),
+);
+
+/** Nedersaksisch (Nedersaksisch) */
+$specialPageAliases['nds-nl'] = array(
+ 'Renameuser' => array( 'Gebruker_herneumen' ),
+);
+
+/** Dutch (Nederlands) */
+$specialPageAliases['nl'] = array(
+ 'Renameuser' => array( 'GebruikerHernoemen' ),
+);
+
+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬) */
+$specialPageAliases['nn'] = array(
+ 'Renameuser' => array( 'Døyp_om_brukar' ),
+);
+
+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬) */
+$specialPageAliases['no'] = array(
+ 'Renameuser' => array( 'Gi_en_bruker_nytt_navn' ),
+);
+
+/** Occitan (Occitan) */
+$specialPageAliases['oc'] = array(
+ 'Renameuser' => array( 'TornarNomenarUtilizaire', 'Tornar nomenar Utilizaire' ),
+);
+
+/** Polish (Polski) */
+$specialPageAliases['pl'] = array(
+ 'Renameuser' => array( 'Zmiana_nazwy_użytkownika' ),
+);
+
+/** Pashto (پښتو) */
+$specialPageAliases['ps'] = array(
+ 'Renameuser' => array( 'دکارونکي نوم بدلون' ),
+);
+
+/** Portuguese (Português) */
+$specialPageAliases['pt'] = array(
+ 'Renameuser' => array( 'Alterar nome de utilizador' ),
+);
+
+/** Brazilian Portuguese (Português do Brasil) */
+$specialPageAliases['pt-br'] = array(
+ 'Renameuser' => array( 'Renomear utilizador', 'Renomear usuário' ),
+);
+
+/** Romanian (Română) */
+$specialPageAliases['ro'] = array(
+ 'Renameuser' => array( 'Redenumire_utilizator' ),
+);
+
+/** Slovak (SlovenÄina) */
+$specialPageAliases['sk'] = array(
+ 'Renameuser' => array( 'PremenovaťPoužívateľa' ),
+);
+
+/** Albanian (Shqip) */
+$specialPageAliases['sq'] = array(
+ 'Renameuser' => array( 'RiemërtoPërdorues' ),
+);
+
+/** Serbian Cyrillic ekavian (‪СрпÑки (ћирилица)‬) */
+$specialPageAliases['sr-ec'] = array(
+ 'Renameuser' => array( 'Преименуј_кориÑника' ),
+);
+
+/** Swedish (Svenska) */
+$specialPageAliases['sv'] = array(
+ 'Renameuser' => array( 'Användarnamnbyte' ),
+);
+
+/** Swahili (Kiswahili) */
+$specialPageAliases['sw'] = array(
+ 'Renameuser' => array( 'BadilishajinalaMtumiaji' ),
+);
+
+/** Thai (ไทย) */
+$specialPageAliases['th'] = array(
+ 'Renameuser' => array( 'เปลี่ยนชื่อผู้ใช้' ),
+);
+
+/** Tagalog (Tagalog) */
+$specialPageAliases['tl'] = array(
+ 'Renameuser' => array( 'Muling pangalan ang tagagamit' ),
+);
+
+/** Turkish (Türkçe) */
+$specialPageAliases['tr'] = array(
+ 'Renameuser' => array( 'KullanıcıAdınıDeğiştir', 'KullanıcıİsminiDeğiştir' ),
+);
+
+/** Vietnamese (Tiếng Việt) */
+$specialPageAliases['vi'] = array(
+ 'Renameuser' => array( 'Äổi_tên_thành_viên', 'Äổi_tên_ngÆ°á»i_dùng' ),
+);
+
+/** Simplified Chinese (‪中文(简体)‬) */
+$specialPageAliases['zh-hans'] = array(
+ 'Renameuser' => array( 'é‡å‘½å用户' ),
+);
+
+/**
+ * For backwards compatibility with MediaWiki 1.15 and earlier.
+ */
+$aliases =& $specialPageAliases; \ No newline at end of file
diff --git a/extensions/Renameuser/Renameuser.i18n.php b/extensions/Renameuser/Renameuser.i18n.php
new file mode 100644
index 00000000..9dd1bcc5
--- /dev/null
+++ b/extensions/Renameuser/Renameuser.i18n.php
@@ -0,0 +1,4278 @@
+<?php
+/**
+ * Internationalisation file for extension Renameuser.
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$messages = array();
+
+$messages['en'] = array(
+ 'renameuser' => 'Rename user',
+ 'renameuser-linkoncontribs' => 'rename user',
+ 'renameuser-linkoncontribs-text' => 'Rename this user',
+ 'renameuser-desc' => 'Adds a [[Special:Renameuser|special page]] to rename a user (need \'\'renameuser\'\' right)',
+ 'renameuser-summary' => '', # do not translate or duplicate this message to other languages
+ 'renameuserold' => 'Current username:',
+ 'renameusernew' => 'New username:',
+ 'renameuserreason' => 'Reason for rename:',
+ 'renameusermove' => 'Move user and talk pages (and their subpages) to new name',
+ 'renameusersuppress' => 'Do not create redirects to the new name',
+ 'renameuserreserve' => 'Block the old username from future use',
+ 'renameuserwarnings' => 'Warnings:',
+ 'renameuserconfirm' => 'Yes, rename the user',
+ 'renameusersubmit' => 'Submit',
+
+ 'renameusererrordoesnotexist' => 'The user "<nowiki>$1</nowiki>" does not exist.',
+ 'renameusererrorexists' => 'The user "<nowiki>$1</nowiki>" already exists.',
+ 'renameusererrorinvalid' => 'The username "<nowiki>$1</nowiki>" is invalid.',
+ 'renameuser-error-request' => 'There was a problem with receiving the request.
+Please go back and try again.',
+ 'renameuser-error-same-user' => 'You cannot rename a user to the same thing as before.',
+ 'renameusersuccess' => 'The user "<nowiki>$1</nowiki>" has been renamed to "<nowiki>$2</nowiki>".',
+
+ 'renameuser-page-exists' => 'The page $1 already exists and cannot be automatically overwritten.',
+ 'renameuser-page-moved' => 'The page $1 has been moved to $2.',
+ 'renameuser-page-unmoved' => 'The page $1 could not be moved to $2.',
+
+ 'renameuserlogpage' => 'User rename log',
+ 'renameuserlogpagetext' => 'This is a log of changes to user names.',
+ 'renameuserlogentry' => 'renamed $1 to "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 edit|$1 edits}}. Reason: $2',
+ 'renameuser-move-log' => 'Automatically moved page while renaming the user "[[User:$1|$1]]" to "[[User:$2|$2]]"',
+
+ 'right-renameuser' => 'Rename users',
+
+ 'renameuser-renamed-notice' => 'This user has been renamed.
+The rename log is provided below for reference.', # Supports GENDER
+);
+
+/** Message documentation (Message documentation)
+ * @author EugeneZelenko
+ * @author Jon Harald Søby
+ * @author Meno25
+ * @author SPQRobin
+ * @author Siebrand
+ * @author The Evil IP address
+ */
+$messages['qqq'] = array(
+ 'renameuser-linkoncontribs' => 'Link description used on Special:Contributions and Special:DeletedContributions. Only added if a user has rights to rename users.',
+ 'renameuser-linkoncontribs-text' => 'Tooltip for {{msg-mw|renameuser-linkoncontribs}}.',
+ 'renameuser-desc' => '{{desc}}',
+ 'renameuserreserve' => 'Option to block the old username (after it has been renamed) from being used again.',
+ 'renameuserwarnings' => '{{Identical|Warning}}',
+ 'renameusersubmit' => '{{Identical|Submit}}',
+ 'renameuserlogentry' => 'Used in [[Special:Log/renameuser]].
+* Parameter $1 is the original username
+* Parameter $2 is the new username',
+ 'right-renameuser' => '{{doc-right}}',
+ 'renameuser-renamed-notice' => 'This message supports the use of GENDER with parameter $1.',
+);
+
+/** ꢱꣃꢬꢵꢯ꣄ꢡ꣄ꢬꢵ (ꢱꣃꢬꢵꢯ꣄ꢡ꣄ꢬꢵ)
+ * @author MooRePrabu
+ */
+$messages['saz'] = array(
+ 'renameuser' => 'ꢮꢮ꣄ꢬꢸꢥꢵꢬ꣄ ꢥꢵꢮ꣄ ꢪꢬ꣄ꢗꢶ',
+ 'renameusernew' => 'ꢥê£ê¢®ê£„ê¢®ê£ ê¢®ê¢®ê£„ê¢¬ê¢¸ê¢¥ê¢µê¢¬ê£„ ꢥꢵꢮ꣄',
+);
+
+/** Afrikaans (Afrikaans)
+ * @author Naudefj
+ * @author SPQRobin
+ */
+$messages['af'] = array(
+ 'renameuser' => 'Hernoem gebruiker',
+ 'renameuser-linkoncontribs' => 'hernoem gebruiker',
+ 'renameuser-linkoncontribs-text' => 'Hernoem hierdie gebruiker',
+ 'renameuser-desc' => "Herdoop gebruikers (benodig ''renameuser'' regte)",
+ 'renameuserold' => 'Huidige gebruikersnaam:',
+ 'renameusernew' => 'Nuwe gebruikersnaam:',
+ 'renameuserreason' => 'Rede vir hernoeming:',
+ 'renameusermove' => 'Hernoem gebruikers- en besprekingsbladsye (met subblaaie) na nuwe naam',
+ 'renameuserreserve' => 'Voorkom dat die ou gebruiker in die toekoms weer gebruik kan word',
+ 'renameuserwarnings' => 'Waarskuwings:',
+ 'renameuserconfirm' => 'Ja, hernoem die gebruiker',
+ 'renameusersubmit' => 'Hernoem',
+ 'renameusererrordoesnotexist' => 'Die gebruiker "<nowiki>$1</nowiki>" bestaan nie',
+ 'renameusererrorexists' => 'Die gebruiker "<nowiki>$1</nowiki>" bestaan reeds',
+ 'renameusererrorinvalid' => '"<nowiki>$1</nowiki>" is \'n ongeldige gebruikernaam',
+ 'renameuser-error-request' => "Daar was 'n probleem met die ontvangs van die versoek. Gaan asseblief terug en probeer weer.",
+ 'renameuser-error-same-user' => 'U kan nie a gebruiker na dieselfde naam hernoem nie.',
+ 'renameusersuccess' => 'Die gebruiker "<nowiki>$1</nowiki>" is hernoem na "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'Die bladsy $1 bestaan reeds en kan nie outomaties oorskryf word nie.',
+ 'renameuser-page-moved' => 'Die bladsy $1 is na $2 geskuif.',
+ 'renameuser-page-unmoved' => 'Die bladsy $1 kon nie na $2 geskuif word nie.',
+ 'renameuserlogpage' => 'Logboek van gebruikershernoemings',
+ 'renameuserlogpagetext' => 'Hieronder is gebruikersname wat gewysig is.',
+ 'renameuserlogentry' => 'het $1 na "$2" hernoem',
+ 'renameuser-log' => '{{PLURAL:$1|1 wysiging|$1 wysigings}}. Rede: $2',
+ 'renameuser-move-log' => 'Bladsy is outomaties geskuif met die wysiging van die gebruiker "[[User:$1|$1]]" na "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Hernoem gebruikers',
+ 'renameuser-renamed-notice' => 'Hierdie gebruiker is hernoem.
+Relevante inligting uit die logboek van gebruikersnaamwysigings word hier onder ter verwysing weergegee.',
+);
+
+/** Aragonese (Aragonés)
+ * @author Juanpabl
+ * @author SMP
+ */
+$messages['an'] = array(
+ 'renameuser' => 'Renombrar un usuario',
+ 'renameuser-desc' => "Renombrar un usuario (amenista os dreitos de ''renameuser'')",
+ 'renameuserold' => 'Nombre actual:',
+ 'renameusernew' => 'Nombre nuevo:',
+ 'renameuserreason' => "Razón d'o cambeo de nombre:",
+ 'renameusermove' => "Tresladar as pachinas d'usuario y de descusión (y as suyas sozpachinas) ta o nuevo nombre",
+ 'renameuserwarnings' => 'Alvertencias:',
+ 'renameuserconfirm' => "Sí, quiero cambiar o nombre de l'usuario",
+ 'renameusersubmit' => 'Ninviar',
+ 'renameusererrordoesnotexist' => 'L\'usuario "<nowiki>$1</nowiki>" no existe.',
+ 'renameusererrorexists' => 'L\'usuario "<nowiki>$1</nowiki>" ya existe.',
+ 'renameusererrorinvalid' => 'O nombre d\'usuario "<nowiki>$1</nowiki>" no ye conforme.',
+ 'renameuser-error-request' => 'Bi habió bell problema recullindo a demanda. Por favor, torne enta zaga y prebe una atra vegada.',
+ 'renameuser-error-same-user' => 'No puede renombrar un usuario con o mesmo nombre que ya teneba.',
+ 'renameusersuccess' => 'S\'ha renombrau l\'usuario "<nowiki>$1</nowiki>" como "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'A pachina $1 ya existe y no puede estar sustituyita automaticament.',
+ 'renameuser-page-moved' => "S'ha tresladato a pachina $1 ta $2.",
+ 'renameuser-page-unmoved' => "A pachina $1 no s'ha puesto tresladar ta $2.",
+ 'renameuserlogpage' => "Rechistro de cambios de nombre d'usuarios",
+ 'renameuserlogpagetext' => "Isto ye un rechistro de cambios de nombres d'usuarios",
+ 'renameuserlogentry' => 'Renombrato $1 como "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 edición|$1 edicions}}. Razón: $2',
+ 'renameuser-move-log' => 'Pachina tresladata automaticament en renombrar o usuario "[[User:$1|$1]]" como "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Renombrar usuarios',
+);
+
+/** Old English (Ænglisc)
+ * @author Spacebirdy
+ */
+$messages['ang'] = array(
+ 'renameuser' => 'Ednemnan brūcend',
+ 'renameuser-linkoncontribs' => 'ednemnan brūcend',
+ 'renameusersubmit' => 'Forþsendan',
+);
+
+/** Arabic (العربية)
+ * @author Aiman titi
+ * @author Meno25
+ * @author Mido
+ * @author OsamaK
+ */
+$messages['ar'] = array(
+ 'renameuser' => 'إعادة تسمية مستخدم',
+ 'renameuser-linkoncontribs' => 'أعد تسمية المستخدم',
+ 'renameuser-linkoncontribs-text' => 'أعد تسمية هذا المستخدم',
+ 'renameuser-desc' => "يضي٠[[Special:Renameuser|صÙحة خاصة]] لإعادة تسمية مستخدم (يحتاج إلى صلاحية ''renameuser'')",
+ 'renameuserold' => 'اسم المستخدم الحالي:',
+ 'renameusernew' => 'الاسم الجديد:',
+ 'renameuserreason' => 'السبب لإعادة التسمية:',
+ 'renameusermove' => 'انقل صÙحات المستخدم ونقاشه (بالصÙحات الÙرعية) إلى الاسم الجديد',
+ 'renameusersuppress' => 'لا تقم بإنشاء عمليات إعادة التوجيه إلى الاسم الجديد',
+ 'renameuserreserve' => 'احÙظ اسم المستخدم القديم ضد الاستخدام',
+ 'renameuserwarnings' => 'التحذيرات:',
+ 'renameuserconfirm' => 'نعم، أعد تسمية المستخدم',
+ 'renameusersubmit' => 'أرسل',
+ 'renameusererrordoesnotexist' => 'لا يوجد مستخدم بالاسم "<nowiki>$1</nowiki>"',
+ 'renameusererrorexists' => 'المستخدم "<nowiki>$1</nowiki>" موجود بالÙعل',
+ 'renameusererrorinvalid' => 'اسم المستخدم "<nowiki>$1</nowiki>" غير صحيح',
+ 'renameuser-error-request' => 'حدثت مشكلة أثناء استقبال الطلب.
+من Ùضلك عد وحاول مرة ثانية.',
+ 'renameuser-error-same-user' => 'لا يمكنك إعادة تسمية مستخدم بنÙس الاسم كما كان من قبل.',
+ 'renameusersuccess' => 'تمت إعادة تسمية المستخدم "<nowiki>$1</nowiki>" إلى "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'الصÙحة $1 موجودة بالÙعل ولا يمكن إنشاء أخرى مكانها أوتوماتيكيا.',
+ 'renameuser-page-moved' => 'تم نقل الصÙحة $1 إلى $2.',
+ 'renameuser-page-unmoved' => 'لم يتمكن من نقل الصÙحة $1 إلى $2.',
+ 'renameuserlogpage' => 'سجل إعادة تسمية المستخدمين',
+ 'renameuserlogpagetext' => 'هذا سجل بالتغييرات ÙÙŠ أسماء المستخدمين',
+ 'renameuserlogentry' => 'أعاد تسمية $1 باسم "$2"',
+ 'renameuser-log' => '{{PLURAL:$1||تعديل واحد|تعديلان|$1 تعديلات|$1 تعديلًا|$1 تعديل}}. السبب: $2',
+ 'renameuser-move-log' => 'نقل الصÙحة تلقائيا خلال إعادة تسمية المستخدم من "[[User:$1|$1]]" إلى "[[User:$2|$2]]"',
+ 'right-renameuser' => 'إعادة تسمية المستخدمين',
+ 'renameuser-renamed-notice' => 'لقد تمت إعادة تسمية {{GENDER:$1|هذا المستخدم|هذه المستخدمة}}.
+سجل إعادة التسمية معروض بالأسÙÙ„ كمرجع:',
+);
+
+/** Aramaic (ÜܪܡÜÜ)
+ * @author Basharh
+ * @author Michaelovic
+ */
+$messages['arc'] = array(
+ 'renameuser' => 'ܫܚܠܦ Ü«Ü¡Ü Ü•Ü¡Ü¦Ü ÜšÜ¢Ü',
+ 'renameuser-linkoncontribs' => 'ܫܚܠܦ Ü«Ü¡Ü Ü•Ü¡Ü¦Ü ÜšÜ¢Ü',
+ 'renameuser-linkoncontribs-text' => 'ܫܚܠܦ Ü«Ü¡Ü Ü•Ü—Ü¢Ü Ü¡Ü¦Ü ÜšÜ¢Ü',
+ 'renameuserold' => 'Ü«Ü¡Ü Ü•Ü¡Ü¦Ü ÜšÜ¢Ü Ü¥Ü¬ÜÜ©Ü:',
+ 'renameusernew' => 'Ü«Ü¡Ü Ü•Ü¡Ü¦Ü ÜšÜ¢Ü ÜšÜ•Ü¬Ü:',
+ 'renameuserwarnings' => 'ܙܘܗܪ̈Ü:',
+ 'renameuserconfirm' => 'ÜÜÜ¢, ܫܚܠܦ Ü«Ü¡Ü Ü•Ü¡Ü¦Ü ÜšÜ¢Ü',
+ 'renameusersubmit' => 'ܡܨÜܘܬÜ',
+);
+
+/** Egyptian Spoken Arabic (مصرى)
+ * @author Ghaly
+ * @author Meno25
+ * @author Ramsis II
+ */
+$messages['arz'] = array(
+ 'renameuser' => 'تغيير تسمية يوزر',
+ 'renameuser-desc' => "بيضي٠[[Special:Renameuser|صÙحة مخصوصة]] علشان تغير اسم يوزر(محتاج صلاحية ''renameuser'')",
+ 'renameuserold' => 'اسم اليوزر الحالي:',
+ 'renameusernew' => 'اسم اليوزر الجديد:',
+ 'renameuserreason' => 'السبب لإعادة التسميه:',
+ 'renameusermove' => 'انقل صÙحات اليوزر Ùˆ مناقشاته (بالصÙحات الÙرعية)للاسم الجديد.',
+ 'renameuserreserve' => 'احÙظ اسم اليوزر القديم ضد الاستخدام',
+ 'renameuserwarnings' => 'التحذيرات:',
+ 'renameuserconfirm' => 'ايوه،سمى اليوزر دا من تاني',
+ 'renameusersubmit' => 'تقديم',
+ 'renameusererrordoesnotexist' => 'اليوزر"<nowiki>$1</nowiki>" مالوش وجود.',
+ 'renameusererrorexists' => 'اليوزر "<nowiki>$1</nowiki>" موجود من قبل كدا.',
+ 'renameusererrorinvalid' => 'اسم اليوزر "<nowiki>$1</nowiki>"مش صحيح.',
+ 'renameuser-error-request' => 'حصلت مشكلة ÙÙ‰ استلام الطلب.
+لو سمحت ارجع لورا و حاول تانى.',
+ 'renameuser-error-same-user' => 'ما ينÙعش تغير اسم اليوزر لنÙس الاسم من تانى.',
+ 'renameusersuccess' => 'اليوزر "<nowiki>$1</nowiki>" اتغير اسمه لـ"<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'الصÙحة $1 موجودة من قبل كدا Ùˆ ماينÙعش يتكتب عليها اوتوماتيكى.',
+ 'renameuser-page-moved' => 'تم نقل الصÙحه $1 Ù„ $2.',
+ 'renameuser-page-unmoved' => 'الصÙحة $1 مانÙعش تتنقل لـ$2.',
+ 'renameuserlogpage' => 'سجل تغيير تسمية اليوزرز',
+ 'renameuserlogpagetext' => 'دا سجل بالتغييرات ÙÙ‰ أسامى اليوزرز',
+ 'renameuserlogentry' => 'اتغيرت تسمية$1 لـ "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 تعديل|$1 تعديل}}. علشان: $2',
+ 'renameuser-move-log' => 'الصÙحة اتنقلت اوتوماتيكى لما اليوزر "[[User:$1|$1]]" اتغير اسمه لـ "[[User:$2|$2]]"',
+ 'right-renameuser' => 'غير اسم اليوزرز',
+);
+
+/** Asturian (Asturianu)
+ * @author Esbardu
+ * @author Xuacu
+ */
+$messages['ast'] = array(
+ 'renameuser' => 'Renomar usuariu',
+ 'renameuser-linkoncontribs' => 'renomar usuariu',
+ 'renameuser-linkoncontribs-text' => 'Renomar esti usuariu',
+ 'renameuser-desc' => "Renoma un usuariu (necesita'l permisu ''renameuser'')",
+ 'renameuserold' => "Nome d'usuariu actual:",
+ 'renameusernew' => "Nome d'usuariu nuevu:",
+ 'renameuserreason' => 'Motivu del cambéu de nome:',
+ 'renameusermove' => "Treslladar les páxines d'usuariu y d'alderique (y toles subpáxines) al nome nuevu",
+ 'renameusersuppress' => 'Nun crear redireiciones al nome nuevu',
+ 'renameuserreserve' => "Bloquiar el nome d'usuariu antiguu pa evitar usalu nun futuru",
+ 'renameuserwarnings' => 'Avisos:',
+ 'renameuserconfirm' => "Sí, renomar l'usuariu",
+ 'renameusersubmit' => 'Executar',
+ 'renameusererrordoesnotexist' => 'L\'usuariu "<nowiki>$1</nowiki>" nun esiste.',
+ 'renameusererrorexists' => 'L\'usuariu "<nowiki>$1</nowiki>" yá esiste.',
+ 'renameusererrorinvalid' => 'El nome d\'usuariu "<nowiki>$1</nowiki>" nun ye válidu.',
+ 'renameuser-error-request' => 'Hebo un problema al recibir el pidimientu. Por favor vuelve atrás y inténtalo otra vuelta.',
+ 'renameuser-error-same-user' => 'Nun pues renomar un usuariu al mesmu nome que tenía.',
+ 'renameusersuccess' => 'L\'usuariu "<nowiki>$1</nowiki>" foi renomáu como "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'La páxina $1 yá esiste y nun pue ser sobreescrita automáticamente.',
+ 'renameuser-page-moved' => 'La páxina $1 treslladóse a $2.',
+ 'renameuser-page-unmoved' => 'La páxina $1 nun pudo treslladase a $2.',
+ 'renameuserlogpage' => "Rexistru de cambeos de nome d'usuariu",
+ 'renameuserlogpagetext' => "Esti ye un rexistru de los cambeos de nomes d'usuariu",
+ 'renameuserlogentry' => 'renomó a $1 como "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 edición|$1 ediciones}}. Motivu: $2',
+ 'renameuser-move-log' => 'Treslladóse la páxina automáticamente al renomar al usuariu "[[User:$1|$1]]" como "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Renomar usuarios',
+ 'renameuser-renamed-notice' => "Se renomó esti usuariu.
+El rexistru de renomaos s'ufre darréu pa referencia.",
+);
+
+/** Azerbaijani (Azərbaycanca)
+ * @author Cekli829
+ * @author Vago
+ * @author Vugar 1981
+ */
+$messages['az'] = array(
+ 'renameuser' => 'İstifadəçi adını dəyiş',
+ 'renameuser-linkoncontribs' => 'istifadəçi adını dəyiş',
+ 'renameuser-linkoncontribs-text' => 'Bu istifadəçinin adını dəyiş',
+ 'renameusernew' => 'Yeni istifadəçi adı:',
+ 'renameuserwarnings' => 'Xəbərdarlıqlar:',
+ 'renameuserconfirm' => 'Bəli, istifadəçinin adını dəyiş',
+ 'renameusersubmit' => 'Yolla',
+ 'renameusererrordoesnotexist' => '"<nowiki>$1</nowiki>" istifadəçi adı mövcud deyil.',
+ 'renameusererrorexists' => '"<nowiki>$1</nowiki>" istifadəçi adı artıq mövcuddur.',
+ 'renameusererrorinvalid' => '"<nowiki>$1</nowiki>" istifadəçi adı yolverilməzdir.',
+ 'renameuser-page-moved' => '$1 $2 səhifəsinə köçürülüb.',
+ 'renameuser-page-unmoved' => '$1 $2 səhifəsinə köçürülə bilinmir.',
+ 'renameuserlogpage' => 'İstifadəçi adı dəyişmə gündəliyi',
+ 'right-renameuser' => 'istifadəçilərin adını dəyiş',
+);
+
+/** Bashkir (БашҡортÑа)
+ * @author Assele
+ */
+$messages['ba'] = array(
+ 'renameuser' => 'ҠатнашыуÑының иÑемен үҙгәртергә',
+ 'renameuser-linkoncontribs' => 'ҡатнашыуÑының иÑемен үҙгәртергә',
+ 'renameuser-linkoncontribs-text' => 'Был ҡатнашыуÑының иÑемен үҙгәртергә',
+ 'renameuser-desc' => "ҠатнашыуÑÑ‹ иÑемен үҙгәртеү Ó©Ñөн [[Special:Renameuser|махÑÑƒÑ Ð±Ð¸Ñ‚]] өҫтәй (''renameuser'' хоҡуғы кәрәк)",
+ 'renameuserold' => 'Хәҙерге иÑеме:',
+ 'renameusernew' => 'Яңы иÑеме:',
+ 'renameuserreason' => 'ИÑемен үҙгәртеү Ñәбәбе:',
+ 'renameusermove' => 'Шулай уҡ ҡатнашыуÑÑ‹ битенең, фекер алышыу битенең (һәм уларҙың ÑÑке биттәренең) иÑемен үҙгәртергә',
+ 'renameusersuppress' => 'Яңы иÑемгә йүнәлтеүҙәр булдырмаҫҡа',
+ 'renameuserreserve' => 'ҠатнашыуÑының Ñлекке иÑемен киләÑәктә ҡулланыу Ó©Ñөн һаҡларға',
+ 'renameuserwarnings' => 'Киҫәтеүҙәр:',
+ 'renameuserconfirm' => 'Эйе, ҡатнашыуÑының иÑемен үҙгәртергә',
+ 'renameusersubmit' => 'Һаҡларға',
+ 'renameusererrordoesnotexist' => '"<nowiki>$1</nowiki>" иÑемле ҡатнашыуÑÑ‹ теркәлмәгән.',
+ 'renameusererrorexists' => '"<nowiki>$1</nowiki>" иÑемле ҡатнашыуÑÑ‹ теркәлгән инде.',
+ 'renameusererrorinvalid' => '"<nowiki>$1</nowiki>" ҡатнашыуÑÑ‹ иÑеме дөрөҫ түгел.',
+ 'renameuser-error-request' => 'Һорауҙы алыу менән ҡыйынлыҡтар тыуҙы.
+Зинһар, кире ҡайтығыҙ һәм Ñңынан ҡабатлап ҡарағыҙ.',
+ 'renameuser-error-same-user' => 'Һеҙ ҡатнашыуÑÑ‹ иÑемен шул уҡ иÑемгә үҙгәртә алмайһығыҙ.',
+ 'renameusersuccess' => '"<nowiki>$1</nowiki>" ҡатнашыуÑыһының иÑеме "<nowiki>$2</nowiki>" иÑеменә үҙгәртелде.',
+ 'renameuser-page-exists' => '$1 бите бар инде һәм уның өҫтөнә автоматик рәүештә Ñҙҙырыу мөмкин түгел.',
+ 'renameuser-page-moved' => '$1 битенең иÑеме $2 тип үҙгәртелде.',
+ 'renameuser-page-unmoved' => '$1 битенең иÑеме $2 тип үҙгәртелә алмай.',
+ 'renameuserlogpage' => 'ҠатнашыуÑÑ‹ иÑемдәрен үҙгәртеү Ñҙмалары журналы',
+ 'renameuserlogpagetext' => 'Был — ҡатнашыуÑÑ‹ иÑемдәрен үҙгәртеү Ñҙмалары журналы.',
+ 'renameuserlogentry' => '$1 ҡатнашыуÑыһын "$2" тип үҙгәрткән',
+ 'renameuser-log' => '$1 {{PLURAL:$1|үҙгәртеү}}. Сәбәбе: $2',
+ 'renameuser-move-log' => 'Биттең иÑеме "[[User:$1|$1]]" ҡатнашыуÑыһының иÑемен "[[User:$2|$2]]" тип үҙгәртеү Ñәбәпле үҙенән-үҙе үҙгәргән',
+ 'right-renameuser' => 'ҠатнашыуÑыларҙың иÑемен үҙгәртеү',
+ 'renameuser-renamed-notice' => 'Был ҡатнашыуÑының иÑеме үҙгәртелгән.
+Түбәндә белешмә Ó©Ñөн иÑем үҙгәртеү Ñҙмалары журналы килтерелгән.',
+);
+
+/** Southern Balochi (بلوچی مکرانی)
+ * @author Mostafadaneshvar
+ */
+$messages['bcc'] = array(
+ 'renameuser' => 'کاربر نامی بدل کن',
+ 'renameuser-desc' => "یک کاربر نامی بدیل کن(حق ''بدل نام''لازمن)",
+ 'renameuserold' => 'هنوکین نام کاربری:',
+ 'renameusernew' => 'نوکین نام کاربری:',
+ 'renameuserreason' => 'دلیل په نام بدل کتن:',
+ 'renameusermove' => 'صÙحات Ú¯Ù¾ Ùˆ کاربر (Ùˆ آیانی زیر صÙحات) په نوکین نام جاه په جاه Ú©Ù†',
+ 'renameuserwarnings' => 'هوژاریان:',
+ 'renameuserconfirm' => 'بله، کاربر نامی عوض کن',
+ 'renameusersubmit' => 'دیم دی',
+ 'renameusererrordoesnotexist' => 'کاربر "<nowiki>$1</nowiki>" موجود نهنت.',
+ 'renameusererrorexists' => 'کاربر "<nowiki>$1</nowiki>" هنو هستن.',
+ 'renameusererrorinvalid' => 'نام کاربری "<nowiki>$1</nowiki>" نامعتبر انت.',
+ 'renameuser-error-request' => 'مشکلی گون دریاÙت درخواست هستت.
+لطÙا برگردیت Ùˆ دگه تلاش کنیت.',
+ 'renameuser-error-same-user' => 'شما نه تونیت یک کاربر په هما پیشگین چیزی نامی بدل کنیت',
+ 'renameusersuccess' => 'کاربر "<nowiki>$1</nowiki>" نامی بدل بوتت په "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'صÙحه $1 الان هست Ùˆ اتوماتیکی اور Ø¢ÛŒ نوسیگ نه بیت.',
+ 'renameuser-page-moved' => 'صÙحه $1 جاه په جاه بیت په $2.',
+ 'renameuser-page-unmoved' => 'صÙحه $1 نه تونیت په $2 جاه په جاه بیت.',
+ 'renameuserlogpage' => 'آمار نام بدل کتن کاربر',
+ 'renameuserlogpagetext' => 'شی آماری چه تغییرات نامان کاربران انت',
+ 'renameuserlogentry' => 'نام بدل بوت $1 په "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 اصلاح|$1 اصلاحلات}}. دلیل: $2',
+ 'renameuser-move-log' => 'اتوماتیکی صÙحه جاه په جاه بیت وهدی Ú©Ù‡ کاربر نام بدل بی "[[User:$1|$1]]" به "[[User:$2|$2]]"',
+ 'right-renameuser' => 'عوض کتن نام کابران',
+);
+
+/** Bikol Central (Bikol Central)
+ * @author Filipinayzd
+ */
+$messages['bcl'] = array(
+ 'renameusersubmit' => 'Isumitir',
+ 'renameusererrordoesnotexist' => 'An parágamit "<nowiki>$1</nowiki>" mayò man',
+ 'renameusererrorexists' => 'An parágamit "<nowiki>$1</nowiki>" yaon na',
+ 'renameuser-page-moved' => 'An páhinang $1 piglipat sa $2.',
+ 'renameuser-page-unmoved' => 'An páhinang $1 dai mailipat sa $2.',
+ 'renameuser-log' => '$1 mga hirá. Rasón: $2',
+);
+
+/** Belarusian (TaraÅ¡kievica orthography) (‪БеларуÑÐºÐ°Ñ (тарашкевіца)‬)
+ * @author EugeneZelenko
+ * @author Jim-by
+ * @author Red Winged Duck
+ * @author Wizardist
+ */
+$messages['be-tarask'] = array(
+ 'renameuser' => 'Перайменаваць рахунак удзельніка',
+ 'renameuser-linkoncontribs' => 'перайменаваць удзельніка',
+ 'renameuser-linkoncontribs-text' => 'Перайменаваць рахунак гÑтага ўдзельніка',
+ 'renameuser-desc' => "Дадае [[Special:Renameuser|ÑпÑцыÑльную Ñтаронку]] Ð´Ð»Ñ Ð¿ÐµÑ€Ð°Ð¹Ð¼ÐµÐ½Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ñ€Ð°Ñ…ÑƒÐ½ÐºÑƒ ўдзельніка (Ð½ÐµÐ°Ð±Ñ…Ð¾Ð´Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ð²Ñ‹ на ''перайменаваньне ўдзельніка'')",
+ 'renameuserold' => 'ЦÑперашнÑе Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°:',
+ 'renameusernew' => 'Ðовае імÑ:',
+ 'renameuserreason' => 'Прычына перайменаваньнÑ:',
+ 'renameusermove' => 'Перайменаваць Ñтаронкі ўдзельніка Ñ– гутарак (Ñ– Ñ–Ñ… падÑтаронкі)',
+ 'renameusersuppress' => 'Ðе Ñтвараць перанакіраваньні на новую назву рахунку',
+ 'renameuserreserve' => 'ЗаблÑкаваць Ñтарое Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ° Ð´Ð»Ñ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹ÑÑ‚Ð°Ð½ÑŒÐ½Ñ Ñž будучыні',
+ 'renameuserwarnings' => 'ПапÑÑ€Ñджаньні:',
+ 'renameuserconfirm' => 'Так, перайменаваць удзельніка',
+ 'renameusersubmit' => 'Перайменаваць',
+ 'renameusererrordoesnotexist' => 'Рахунак «<nowiki>$1</nowiki>» не Ñ–Ñнуе.',
+ 'renameusererrorexists' => 'Рахунак «<nowiki>$1</nowiki>» ужо Ñ–Ñнуе.',
+ 'renameusererrorinvalid' => 'ÐÑÑлушнае Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ° «<nowiki>$1</nowiki>».',
+ 'renameuser-error-request' => 'Узьніклі праблемы з атрыманьнем запыту.
+Калі лаÑка, вÑрніцеÑÑ Ð½Ð°Ð·Ð°Ð´ Ñ– паÑпрабуйце ізноў.',
+ 'renameuser-error-same-user' => 'Ðемагчыма перайменаваць рахунак удзельніка Ñž тое ж Ñамае імÑ.',
+ 'renameusersuccess' => 'Рахунак «<nowiki>$1</nowiki>» быў перайменаваны ў «<nowiki>$2</nowiki>».',
+ 'renameuser-page-exists' => 'Старонка $1 ужо Ñ–Ñнуе Ñ– Ð½Ñ Ð¼Ð¾Ð¶Ð° быць аўтаматычна перазапіÑанаÑ.',
+ 'renameuser-page-moved' => 'Старонка $1 была Ð¿ÐµÑ€Ð°Ð¹Ð¼ÐµÐ½Ð°Ð²Ð°Ð½Ð°Ñ Ñž $2.',
+ 'renameuser-page-unmoved' => 'Старонка $1 Ð½Ñ Ð¼Ð¾Ð¶Ð° быць Ð¿ÐµÑ€Ð°Ð¹Ð¼ÐµÐ½Ð°Ð²Ð°Ð½Ð°Ñ Ñž $2.',
+ 'renameuserlogpage' => 'Журнал перайменаваньнÑÑž удзельнікаў',
+ 'renameuserlogpagetext' => 'ГÑта журнал перайменаваньнÑÑž рахункаў удзельнікаў.',
+ 'renameuserlogentry' => 'перайменаваў $1 у «$2»',
+ 'renameuser-log' => '$1 {{PLURAL:$1|Ñ€Ñдагаваньне|Ñ€Ñдагаваньні|Ñ€ÑдагаваньнÑÑž}}. Прычына: $2',
+ 'renameuser-move-log' => 'Ðўтаматычнае перайменаваньне Ñтаронкі Ñž ÑувÑзі зь перайменаваньнем рахунку ўдзельніка з «[[User:$1|$1]]» у «[[User:$2|$2]]»',
+ 'right-renameuser' => 'перайменаваньне ўдзельнікаў',
+ 'renameuser-renamed-notice' => '{{GENDER:$1|ГÑÑ‚Ñ‹ удзельнік быў перайменаваны|ГÑÑ‚Ð°Ñ ÑƒÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–Ñ†Ð° была перайменаванаÑ}}.
+Журнал перайменаваньнÑÑž удзельнікаў пададзены ніжÑй Ð´Ð»Ñ Ð´Ð°Ð²ÐµÐ´ÐºÑ–.',
+);
+
+/** Bulgarian (БългарÑки)
+ * @author Borislav
+ * @author DCLXVI
+ * @author Spiritia
+ * @author Turin
+ */
+$messages['bg'] = array(
+ 'renameuser' => 'Преименуване на потребител',
+ 'renameuser-linkoncontribs' => 'преименуване на потребител',
+ 'renameuser-linkoncontribs-text' => 'Преименуване на този потребител',
+ 'renameuser-desc' => 'Ð”Ð¾Ð±Ð°Ð²Ñ Ð²ÑŠÐ·Ð¼Ð¾Ð¶Ð½Ð¾ÑÑ‚ за преименуване на потребители',
+ 'renameuserold' => 'Текущо потребителÑко име:',
+ 'renameusernew' => 'Ðово потребителÑко име:',
+ 'renameuserreason' => 'Причина за преименуването:',
+ 'renameusermove' => 'ПремеÑтване под новото име на потребителÑката лична Ñтраница и беÑеда (както и техните подÑтраници)',
+ 'renameusersuppress' => 'Без Ñъздаване на пренаÑочване към новото име',
+ 'renameuserreserve' => 'Блокиране на Ñтарото потребителÑко име Ñрещу ÑƒÐ·ÑƒÑ€Ð¿Ð°Ñ†Ð¸Ñ Ð² бъдеще',
+ 'renameuserwarnings' => 'ПредупреждениÑ:',
+ 'renameuserconfirm' => 'Да, преименуване на потребителÑ',
+ 'renameusersubmit' => 'Изпълнение',
+ 'renameusererrordoesnotexist' => 'ПотребителÑÑ‚ „<nowiki>$1</nowiki>“ не ÑъщеÑтвува.',
+ 'renameusererrorexists' => 'ПотребителÑÑ‚ „<nowiki>$1</nowiki>“ вече ÑъщеÑтвува.',
+ 'renameusererrorinvalid' => 'ПотребителÑкото име „<nowiki>$1</nowiki>“ е невалидно.',
+ 'renameuser-error-request' => 'Имаше проблем Ñ Ð¿Ñ€Ð¸ÐµÐ¼Ð°Ð½ÐµÑ‚Ð¾ на заÑвката. Върнете Ñе на предишната Ñтраница и опитайте отново!',
+ 'renameuser-error-same-user' => 'Ðовото потребителÑко име е Ñъщото като Ñтарото.',
+ 'renameusersuccess' => 'ПотребителÑÑ‚ „<nowiki>$1</nowiki>“ беше преименуван на „<nowiki>$2</nowiki>“',
+ 'renameuser-page-exists' => 'Страницата $1 вече ÑъщеÑтвува и не може да бъде автоматично замеÑтена.',
+ 'renameuser-page-moved' => 'Страницата $1 беше премеÑтена като $2.',
+ 'renameuser-page-unmoved' => 'Страницата $1 не можа да бъде премеÑтена като $2.',
+ 'renameuserlogpage' => 'Дневник на преименуваниÑта',
+ 'renameuserlogpagetext' => 'Ð’ този дневник Ñе запиÑват преименуваниÑта на потребители.',
+ 'renameuserlogentry' => 'преименува $1 на „$2“',
+ 'renameuser-log' => '{{PLURAL:$1|една редакциÑ|$1 редакции}}. Причина: $2',
+ 'renameuser-move-log' => 'Ðвтоматично премеÑтена Ñтраница при преименуването на потребител "[[User:$1|$1]]" като "[[User:$2|$2]]"',
+ 'right-renameuser' => 'преименуване на потребители',
+ 'renameuser-renamed-notice' => 'ПотребителÑÑ‚ беше преименуван.
+За Ñправка по-долу е показан Дневникът на преименуваниÑта.',
+);
+
+/** Bengali (বাংলা)
+ * @author Bellayet
+ */
+$messages['bn'] = array(
+ 'renameuser' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নামানà§à¦¤à¦° করো',
+ 'renameuser-linkoncontribs' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নামানà§à¦¤à¦°',
+ 'renameuser-linkoncontribs-text' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নামানà§à¦¤à¦° করো',
+ 'renameuser-desc' => "à¦à¦•à¦œà¦¨ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ নামানà§à¦¤à¦° করà§à¦¨ (''বà§à¦¯à¦¬à¦¹à¦¾à¦•à¦¾à¦°à§€ নামানà§à¦¤à¦°'' অধিকার পà§à¦°à¦¯à¦¼à§‹à¦œà¦¨)",
+ 'renameuserold' => 'বরà§à¦¤à¦®à¦¾à¦¨ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম:',
+ 'renameusernew' => 'নতà§à¦¨ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম:',
+ 'renameuserreason' => 'নামানà§à¦¤à¦°à§‡à¦° কারণ:',
+ 'renameusermove' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ à¦à¦¬à¦‚ আলাপের পাতা (à¦à¦¬à¦‚ তার উপপাতাসমূহ) নতà§à¦¨ নামে সরিয়ে নাও',
+ 'renameuserwarnings' => 'সতরà§à¦•à§€à¦•à¦°à¦£:',
+ 'renameuserconfirm' => 'হà§à¦¯à¦¾à¦, বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° নাম পরিবরà§à¦¤à¦¨ করো',
+ 'renameusersubmit' => 'জমা দিন',
+ 'renameusererrordoesnotexist' => '"<nowiki>$1</nowiki>" নামের কোন বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাই।',
+ 'renameusererrorexists' => '"<nowiki>$1</nowiki>" বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ ইতিমধà§à¦¯à§‡ বিদà§à¦¯à¦®à¦¾à¦¨ আছে।',
+ 'renameusererrorinvalid' => '"<nowiki>$1</nowiki>" বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নামটি ঠিক নয়।',
+ 'renameuser-error-request' => 'à¦à¦‡ অনà§à¦°à§‹à¦§ গà§à¦°à¦¹à¦£à§‡ সমসà§à¦¯à¦¾ ছিল। দয়াকরে পেছনে যান à¦à¦¬à¦‚ আবার চেষà§à¦Ÿà¦¾ করà§à¦¨à¥¤',
+ 'renameuser-error-same-user' => 'আপনি পূরà§à¦¬à§‡à¦° নামে নামানà§à¦¤à¦° করতে পারবেন না।',
+ 'renameusersuccess' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ "<nowiki>$1</nowiki>" থেকে "<nowiki>$2</nowiki>" তে নামানà§à¦¤à¦°à¦¿à¦¤ করা হয়েছে।',
+ 'renameuser-page-exists' => 'পাতা $1 বিদà§à¦¯à¦®à¦¾à¦¨ à¦à¦¬à¦‚ সয়ঙà§à¦•à§à¦°à¦¿à¦¯à¦¼à¦­à¦¾à¦¬à§‡ à¦à¦Ÿà¦¿à¦° উপর লেখা যাবে না',
+ 'renameuser-page-moved' => 'পাতাটি $1 থেকে $2 তে সরিয়ে নেওয়া হয়েছে।',
+ 'renameuser-page-unmoved' => 'পাতাটি $1 থেকে $2 তে সরিয়ে নেওয়া যাবে না।',
+ 'renameuserlogpage' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নামানà§à¦¤à¦°à§‡à¦° লগ',
+ 'renameuserlogpagetext' => 'à¦à¦Ÿà¦¿ বà§à¦¯à¦¾à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নামের পরিবরà§à¦¤à¦¨à§‡à¦° লগ',
+ 'renameuserlogentry' => '$1 থেকে "$2" তে নামানà§à¦¤à¦° করা হয়েছে',
+ 'renameuser-log' => '{{PLURAL:$1|1 সমà§à¦ªà¦¾à¦¦à¦¨à¦¾|$1 সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦¸à¦®à§‚হ}}। কারণ: $2',
+ 'renameuser-move-log' => 'যখন বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ "[[User:$1|$1]]" থেকে "[[User:$2|$2]]" তে নামানà§à¦¤à¦°à¦¿à¦¤ হবে তখন সয়ঙà§à¦•à§à¦°à¦¿à¦¯à¦¼à¦­à¦¾à¦¬à§‡ পাতা সরিয়ে নেওয়া হয়েছে',
+ 'right-renameuser' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦° পà§à¦¨à¦°à¦¾à¦¯à¦¼ নাম দাও',
+);
+
+/** Breton (Brezhoneg)
+ * @author Fulup
+ * @author Gwendal
+ * @author Y-M D
+ */
+$messages['br'] = array(
+ 'renameuser' => 'Adenvel an implijer',
+ 'renameuser-linkoncontribs' => 'adenvel an implijer',
+ 'renameuser-linkoncontribs-text' => 'adenvel an implijer-mañ',
+ 'renameuser-desc' => "Adenvel un implijer (ret eo kaout ''gwirioù adenvel'')",
+ 'renameuserold' => 'Anv a-vremañ an implijer :',
+ 'renameusernew' => 'Anv implijer nevez :',
+ 'renameuserreason' => 'Abeg evit adenvel :',
+ 'renameusermove' => 'Kas ar pajennoù implijer ha kaozeal (hag o ispajennoù) betek o anv nevez',
+ 'renameusersuppress' => 'Arabat krouiñ adkasoù war-du an anv nevez',
+ 'renameuserreserve' => "Mirout na vo implijet an anv kozh pelloc'h en dazont",
+ 'renameuserwarnings' => 'Diwallit :',
+ 'renameuserconfirm' => 'Ya, adenvel an implijer',
+ 'renameusersubmit' => 'Adenvel',
+ 'renameusererrordoesnotexist' => 'An implijer "<nowiki>$1</nowiki>" n\'eus ket anezhañ',
+ 'renameusererrorexists' => 'Krouet eo bet an anv implijer "<nowiki>$1</nowiki>" dija',
+ 'renameusererrorinvalid' => 'Faziek eo an anv implijer "<nowiki>$1</nowiki>"',
+ 'renameuser-error-request' => 'Ur gudenn zo bet gant degemer ar reked. Kit war-gil ha klaskit en-dro.',
+ 'renameuser-error-same-user' => "N'haller ket adenvel un implijer gant an hevelep anv hag a-raok.",
+ 'renameusersuccess' => 'Deuet eo an implijer "<nowiki>$1</nowiki>" da vezañ "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => "Bez' ez eus eus ar bajenn $1 dija, n'haller ket hec'h erlec'hiañ ent emgefreek.",
+ 'renameuser-page-moved' => 'Adkaset eo bet ar bajenn $1 da $2.',
+ 'renameuser-page-unmoved' => "N'eus ket bet gallet adkas ar bajenn $1 da $2.",
+ 'renameuserlogpage' => 'Roll an implijerien bet adanvet',
+ 'renameuserlogpagetext' => 'Setu istor an implijerien bet cheñchet o anv ganto',
+ 'renameuserlogentry' => 'en deus adanvet $1 e "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 degasadenn|$1 degasadenn}}. Abeg : $2',
+ 'renameuser-move-log' => 'Pajenn dilec\'hiet ent emgefreek e-ser adenvel an implijer "[[User:$1|$1]]" e "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Adenvel implijerien',
+ 'renameuser-renamed-notice' => "Adanvet eo bet an implijer-mañ.
+A-is emañ marilh an adanvadurioù, ma'z oc'h dedennet.",
+);
+
+/** Bosnian (Bosanski)
+ * @author CERminator
+ */
+$messages['bs'] = array(
+ 'renameuser' => 'Preimenuj korisnika',
+ 'renameuser-linkoncontribs' => 'preimenuj korisnika',
+ 'renameuser-linkoncontribs-text' => 'Preimenuj ovog korisnika',
+ 'renameuser-desc' => "Dodaje [[Special:Renameuser|posebnu stranicu]] u svrhu promjene imena korisnika (zahtjeva pravo ''preimenovanja korisnika'')",
+ 'renameuserold' => 'Trenutno ime korisnika:',
+ 'renameusernew' => 'Novo korisniÄko ime:',
+ 'renameuserreason' => 'Razlog promjene imena:',
+ 'renameusermove' => 'Premještanje korisnika i njegove stranice za razgovor (zajedno sa podstranicama) na novo ime',
+ 'renameusersuppress' => 'Ne pravi preusmjerenja na novo ime',
+ 'renameuserreserve' => 'Blokiraj staro korisniÄko ime od kasnijeg koriÅ¡tenja',
+ 'renameuserwarnings' => 'Upozorenja:',
+ 'renameuserconfirm' => 'Da, promijeni ime korisnika',
+ 'renameusersubmit' => 'Pošalji',
+ 'renameusererrordoesnotexist' => 'Korisnik "<nowiki>$1</nowiki>" ne postoji.',
+ 'renameusererrorexists' => 'Korisnik "<nowiki>$1</nowiki>" već postoji.',
+ 'renameusererrorinvalid' => 'KorisniÄko ime "<nowiki>$1</nowiki>" nije valjano.',
+ 'renameuser-error-request' => 'Nastao je problem pri prijemu zahtjeva.
+Molimo Vas da se vratite nazad i pokušate ponovo.',
+ 'renameuser-error-same-user' => 'Ne može se promijeniti ime korisnika u isto kao i ranije.',
+ 'renameusersuccess' => 'Ime korisnika "<nowiki>$1</nowiki>" je promijenjeno u "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'Stranica $1 već postoji i ne može biti automatski prepisana.',
+ 'renameuser-page-moved' => 'Stranica $1 je premještena na $2.',
+ 'renameuser-page-unmoved' => 'Stranica $1 nije mogla biti premještena na $2.',
+ 'renameuserlogpage' => 'Zapisnik preimenovanja korisnika',
+ 'renameuserlogpagetext' => 'Ovo je zapisnik promjena korisniÄkih imena.',
+ 'renameuserlogentry' => '$1 preimenovan u "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 izmjena|$1 izmjene|$1 izmjena}}. Razlog: $2',
+ 'renameuser-move-log' => 'Automatski premjeÅ¡tena stranica pri promjeni korisniÄkog imena "[[User:$1|$1]]" u "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Preimenovanje korisnika',
+ 'renameuser-renamed-notice' => 'Ovaj korisnik je promijenio ime.
+Zapisnik preimenovanje je prikazan ispod kao referenca.',
+);
+
+/** Catalan (Català)
+ * @author El libre
+ * @author Juanpabl
+ * @author Paucabot
+ * @author Qllach
+ * @author SMP
+ * @author Toniher
+ * @author Vriullop
+ */
+$messages['ca'] = array(
+ 'renameuser' => "Reanomena l'usuari",
+ 'renameuser-linkoncontribs' => "Reanomena l'usuari/a",
+ 'renameuser-linkoncontribs-text' => "Canvia el nom d'aquest usuari/a",
+ 'renameuser-desc' => "Reanomena un usuari (necessita drets de ''renameuser'')",
+ 'renameuserold' => "Nom d'usuari actual:",
+ 'renameusernew' => "Nou nom d'usuari:",
+ 'renameuserreason' => 'Motiu pel canvi:',
+ 'renameusermove' => "Reanomena la pàgina d'usuari, la de discussió i les subpàgines que tingui al nou nom",
+ 'renameusersuppress' => 'No creis redireccions cap al nou nom',
+ 'renameuserreserve' => "Bloca el nom d'usuari antic d'usos futurs",
+ 'renameuserwarnings' => 'Advertències:',
+ 'renameuserconfirm' => "Sí, reanomena l'usuari",
+ 'renameusersubmit' => 'Tramet',
+ 'renameusererrordoesnotexist' => "L'usuari «<nowiki>$1</nowiki>» no existeix",
+ 'renameusererrorexists' => "L'usuari «<nowiki>$1</nowiki>» ja existeix",
+ 'renameusererrorinvalid' => "El nom d'usuari «<nowiki>$1</nowiki>» no és vàlid",
+ 'renameuser-error-request' => "Hi ha hagut un problema en la recepció de l'ordre.
+Torneu enrere i torneu-ho a intentar.",
+ 'renameuser-error-same-user' => 'No podeu reanomenar un usuari a un nom que ja tenia anteriorment.',
+ 'renameusersuccess' => "L'usuari «<nowiki>$1</nowiki>» s'ha reanomenat com a «<nowiki>$2</nowiki>»",
+ 'renameuser-page-exists' => 'La pàgina «$1» ja existeix i no pot ser sobreescrita automàticament',
+ 'renameuser-page-moved' => "La pàgina «$1» s'ha reanomenat com a «$2».",
+ 'renameuser-page-unmoved' => "La pàgina $1 no s'ha pogut reanomenar com a «$2».",
+ 'renameuserlogpage' => "Registre del canvi de nom d'usuari",
+ 'renameuserlogpagetext' => "Aquest és un registre dels canvis als noms d'usuari",
+ 'renameuserlogentry' => 'ha reanomenat $1 a "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|Una contribució|$1 contribucions}}. Motiu: $2',
+ 'renameuser-move-log' => "S'ha reanomenat automàticament la pàgina mentre es reanomenava l'usuari «[[User:$1|$1]]» com «[[User:$2|$2]]»",
+ 'right-renameuser' => 'Reanomenar usuaris',
+ 'renameuser-renamed-notice' => "S'ha canviat el nom d'aquest usuari.
+A continuació es proporciona el registre de reanomenaments per a més informació.",
+);
+
+/** Chechen (Ðохчийн)
+ * @author Sasan700
+ */
+$messages['ce'] = array(
+ 'renameuser' => 'Декъашхон цlе хийца',
+ 'renameuser-linkoncontribs' => 'декъашхон цlе хийца',
+);
+
+/** Sorani (کوردی) */
+$messages['ckb'] = array(
+ 'renameusersubmit' => 'ناردن',
+);
+
+/** Crimean Turkish (Latin) (Qırımtatarca (Latin))
+ * @author Don Alessandro
+ */
+$messages['crh-latn'] = array(
+ 'renameuserlogpage' => 'Qullanıcı adı deñişikligi jurnalı',
+ 'renameuserlogpagetext' => 'Aşağıda bulunğan cedvel adı deñiştirilgen qullanıcılarnı köstere',
+ 'renameuserlogentry' => '$1 qullanıcısınıñ adını "$2" оlaraq deñiştirdi',
+ 'renameuser-log' => '{{PLURAL:$1|1 deñişiklik|$1 deñişiklik}} yapqan. Sebep: $2',
+);
+
+/** Crimean Turkish (Cyrillic) (Qırımtatarca (Cyrillic))
+ * @author Don Alessandro
+ */
+$messages['crh-cyrl'] = array(
+ 'renameuserlogpage' => 'Къулланыджы ады денъишиклиги журналы',
+ 'renameuserlogpagetext' => 'Ðшагъыда булунгъан джедвель ады денъиштирильген къулланыджыларны коÑьтере',
+ 'renameuserlogentry' => '$1 къулланыджыÑынынъ адыны "$2" оларакъ денъиштирди',
+ 'renameuser-log' => '{{PLURAL:$1|1 денъишиклик|$1 денъишиклик}} Ñпкъан. Себеп: $2',
+);
+
+/** Czech (ÄŒesky)
+ * @author Danny B.
+ * @author Li-sung
+ * @author Martin Kozák
+ * @author Matěj Grabovský
+ * @author Mormegil
+ */
+$messages['cs'] = array(
+ 'renameuser' => 'Přejmenovat uživatele',
+ 'renameuser-linkoncontribs' => 'přejmenovat uživatele',
+ 'renameuser-linkoncontribs-text' => 'Přejmenovat tohoto uživatele',
+ 'renameuser-desc' => "Přejmenování uživatele (vyžadováno oprávnění ''renameuser'')",
+ 'renameuserold' => 'Stávající uživatelské jméno:',
+ 'renameusernew' => 'Nové uživatelské jméno:',
+ 'renameuserreason' => 'Důvod přejmenování:',
+ 'renameusermove' => 'Přesunout uživatelské a diskusní stránky (a jejich podstránky) na nové jméno',
+ 'renameusersuppress' => 'Nevytvářet přesměrování na nové jméno',
+ 'renameuserreserve' => 'Zabránit nové registraci původního uživatelského jména',
+ 'renameuserwarnings' => 'Upozornění:',
+ 'renameuserconfirm' => 'Ano, přejmenovat uživatele',
+ 'renameusersubmit' => 'Přejmenovat',
+ 'renameusererrordoesnotexist' => 'Uživatel se jménem „<nowiki>$1</nowiki>“ neexistuje',
+ 'renameusererrorexists' => 'Uživatel se jménem „<nowiki>$1</nowiki>“ již existuje',
+ 'renameusererrorinvalid' => 'Uživatelské jméno „<nowiki>$1</nowiki>“ nelze použít',
+ 'renameuser-error-request' => 'Při přijímání požadavku došlo k chybě. Vraťte se a zkuste to znovu.',
+ 'renameuser-error-same-user' => 'Nové uživatelské jméno je stejné jako dosavadní.',
+ 'renameusersuccess' => 'Uživatel „<nowiki>$1</nowiki>“ byl úspěšně přejmenován na „<nowiki>$2</nowiki>“',
+ 'renameuser-page-exists' => 'Stránka $1 již existuje a nelze ji automaticky přepsat.',
+ 'renameuser-page-moved' => 'Stránka $1 byla přesunuta na $2.',
+ 'renameuser-page-unmoved' => 'Stránku $1 se nepodařilo přesunout na $2.',
+ 'renameuserlogpage' => 'Kniha přejmenování uživatelů',
+ 'renameuserlogpagetext' => 'Toto je záznam přejmenování uživatelů (změn uživatelského jména).',
+ 'renameuserlogentry' => 'přejmenovává $1 na „$2“',
+ 'renameuser-log' => '{{PLURAL:$1|1 editace|$1 editace|$1 editací}}. Zdůvodnění: $2',
+ 'renameuser-move-log' => 'Automatický přesun při přejmenování uživatele „[[User:$1|$1]]“ na „[[User:$2|$2]]“',
+ 'right-renameuser' => 'Přejmenovávání uživatelů',
+ 'renameuser-renamed-notice' => 'Tento uživatel byl přejmenován.
+Pro přehled je níže zobrazen výpis z knihy přejmenování uživatelů.',
+);
+
+/** Church Slavic (СловѣÌньÑкъ / ⰔⰎⰑⰂⰡâ°â° â°”â°â°Ÿ)
+ * @author Svetko
+ * @author ОйЛ
+ */
+$messages['cu'] = array(
+ 'renameuser' => 'прѣимєноуи польꙃєватєл҄ь',
+ 'renameuserold' => 'нꙑнѣщьнѥѥ имѧ :',
+ 'renameusernew' => 'ново имѧ :',
+ 'renameuserreason' => 'какъ ÑъмꙑÑлъ :',
+ 'renameusermove' => 'нарьци тако польꙃєватєлꙗ Ñтраницѫ · бєÑѣдѫ и ихъ подъÑтраницѧ',
+ 'renameusersubmit' => 'єи',
+ 'renameusererrordoesnotexist' => 'польꙃєватєлꙗ â– <nowiki>$1</nowiki> ■нѣÑÑ‚ÑŠ',
+ 'renameusererrorexists' => 'польꙃєватєл҄ь â– <nowiki>$1</nowiki> ■ѥÑÑ‚ÑŠ ÑŽ',
+ 'renameusererrorinvalid' => 'имѧ â– <nowiki>$1</nowiki> ■нѣÑÑ‚ÑŠ годѣ',
+ 'renameuserlogpage' => 'польꙃєватєлъ прѣимєнованиꙗ Ñ—Ñторїꙗ',
+ 'renameuserlogentry' => 'нарєчє $1 имєньмь â– $2 â–',
+);
+
+/** Chuvash (Чӑвашла)
+ * @author FLAGELLVM DEI
+ */
+$messages['cv'] = array(
+ 'renameuserconfirm' => 'Çапла, хутшăнакан Ñтне улăштармалла',
+ 'renameuser-page-moved' => '$1 Ñтраницăн Ñтне $2 çине улăштарнă.',
+);
+
+/** Welsh (Cymraeg)
+ * @author Lloffiwr
+ */
+$messages['cy'] = array(
+ 'renameuser' => 'Ail-enwi defnyddiwr',
+ 'renameuser-linkoncontribs' => "ail-enwi'r defnyddiwr",
+ 'renameuser-linkoncontribs-text' => "Ail-enwi'r defnyddiwr hwn",
+ 'renameuser-desc' => "Yn ychwanegu [[Special:Renameuser|tudalen arbennig]] er mwyn gallu ail-enwi cyfrif defnyddiwr (sydd angen y gallu ''renameuser'')",
+ 'renameuserold' => 'Enw presennol y defnyddiwr:',
+ 'renameusernew' => "Enw newydd i'r defnyddiwr:",
+ 'renameuserreason' => 'Y rheswm dros ail-enwi:',
+ 'renameusermove' => "Symud y tudalennau defnyddiwr a sgwrs (ac unrhyw is-dudalennau) i'r enw newydd",
+ 'renameusersuppress' => "Peidiwch â gosod ailgyfeiriadau i'r enw newydd",
+ 'renameuserreserve' => 'Atal yr hen enw defnyddiwr rhag cael ei ddefnyddio rhagor',
+ 'renameuserwarnings' => 'Rhybuddion:',
+ 'renameuserconfirm' => "Parhau gyda'r ail-enwi",
+ 'renameusersubmit' => 'Anfon',
+ 'renameusererrordoesnotexist' => 'Nid yw\'r defnyddiwr "<nowiki>$1</nowiki>" yn bodoli.',
+ 'renameusererrorexists' => 'Mae\'r defnyddiwr "<nowiki>$1</nowiki>" eisoes yn bodoli.',
+ 'renameusererrorinvalid' => 'Mae\'r enw defnyddiwr "<nowiki>$1</nowiki>" yn annilys',
+ 'renameuser-error-request' => 'Cafwyd trafferth yn derbyn y cais.
+Ewch yn ôl a cheisio eto, os gwelwch yn dda.',
+ 'renameuser-error-same-user' => "Ni ellir ail-enwi defnyddiwr gyda'r un enw ag o'r blaen.",
+ 'renameusersuccess' => 'Mae\'r defnyddiwr "<nowiki>$1</nowiki>" wedi cael ei ail-enwi i "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => "Mae'r dudalen $1 ar gael yn barod ac ni ellir ei throsysgrifo.",
+ 'renameuser-page-moved' => 'Symudwyd $1 i $2.',
+ 'renameuser-page-unmoved' => 'Ni lwyddwyd i symud y dudalen $1 i $2.',
+ 'renameuserlogpage' => 'Lòg ail-enwi defnyddwyr',
+ 'renameuserlogpagetext' => "Dyma lòg o'r holl newidiadau i enwau defnyddwyr.",
+ 'renameuserlogentry' => 'wedi ail-enwi $1 yn "$2"',
+ 'renameuser-log' => '$1 {{PLURAL:$1|golygiad|golygiad|olygiad|golygiad|golygiad|o olygiadau}}. Rheswm: $2',
+ 'renameuser-move-log' => 'Wedi symud y dudalen yn awtomatig wrth ail-enwi\'r defnyddiwr "[[User:$1|$1]]" i "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Ail-enwi defnyddwyr',
+ 'renameuser-renamed-notice' => "Mae'r defnyddiwr hwn wedi ei ail-enwi.
+Mae'r lòg ail-enwi defnyddwyr i'w weld isod.",
+);
+
+/** Danish (Dansk)
+ * @author Byrial
+ * @author Froztbyte
+ * @author Peter Alberti
+ */
+$messages['da'] = array(
+ 'renameuser' => 'Omdøb bruger',
+ 'renameuser-linkoncontribs' => 'omdøb bruger',
+ 'renameuser-linkoncontribs-text' => 'Omdøb denne bruger',
+ 'renameuser-desc' => "Laver en [[Special:Renameuser|specialside]] til at omdøbe en bruger (kræver rettigheden ''renameuser'')",
+ 'renameuserold' => 'Nuværende brugernavn:',
+ 'renameusernew' => 'Nyt brugernavn:',
+ 'renameuserreason' => 'Årsag til omdøbning:',
+ 'renameusermove' => 'Flyt bruger- og diskussionssider (og deres undersider) til nyt navn',
+ 'renameusersuppress' => 'Opret ikke omdirigeringer til det nye navn',
+ 'renameuserreserve' => 'Bloker det gamle brugernavn fra fremtidig brug',
+ 'renameuserwarnings' => 'Advarsler:',
+ 'renameuserconfirm' => 'Ja, omdøb brugeren',
+ 'renameusersubmit' => 'Omdøb',
+ 'renameusererrordoesnotexist' => 'Brugeren "<nowiki>$1</nowiki>" findes ikke.',
+ 'renameusererrorexists' => 'Brugeren "<nowiki>$1</nowiki>" findes allerede.',
+ 'renameusererrorinvalid' => 'Brugernavnet "<nowiki>$1</nowiki>" er ugyldigt.',
+ 'renameuser-error-request' => 'Det var et problem med at modtage forespørgslen.
+Gå venligst tilbage og prøv igen.',
+ 'renameuser-error-same-user' => 'Du kan ikke omdøbe en bruger til det samme navn som før.',
+ 'renameusersuccess' => 'Brugeren "<nowiki>$1</nowiki>" er blevet omdøbt til "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'Siden $1 eksisterer allerede og kan ikke automatisk overskrives.',
+ 'renameuser-page-moved' => 'Siden $1 er flyttet til $2.',
+ 'renameuser-page-unmoved' => 'Siden $1 kunne ikke flyttes til $2.',
+ 'renameuserlogpage' => 'Brugeromdøbningslog',
+ 'renameuserlogpagetext' => 'Dette er en log over omdøbninger af brugernavne.',
+ 'renameuserlogentry' => 'har omdøbt $1 til "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 redigering|$1 redigeringer}}. Ã…rsag: $2',
+ 'renameuser-move-log' => 'Side automatisk flyttet ved omdøbning af bruger "[[User:$1|$1]]" til "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Omdøbe brugere',
+ 'renameuser-renamed-notice' => 'Denne bruger er blevet omdøbt.
+Til information er omdøbningsloggen vist nedenfor.',
+);
+
+/** German (Deutsch)
+ * @author Kghbln
+ * @author Raimond Spekking
+ * @author Spacebirdy
+ * @author The Evil IP address
+ * @author Umherirrender
+ */
+$messages['de'] = array(
+ 'renameuser' => 'Benutzer umbenennen',
+ 'renameuser-linkoncontribs' => 'Benutzer umbenennen',
+ 'renameuser-linkoncontribs-text' => 'Diesen Benutzer umbenennen',
+ 'renameuser-desc' => 'Ergänzt eine [[Special:Renameuser|Spezialseite]] zum Umbenennen eines Benutzers',
+ 'renameuserold' => 'Bisheriger Benutzername:',
+ 'renameusernew' => 'Neuer Benutzername:',
+ 'renameuserreason' => 'Grund:',
+ 'renameusermove' => 'Benutzer-/Diskussionsseite (inkl. Unterseiten) auf den neuen Benutzernamen verschieben',
+ 'renameusersuppress' => 'Weiterleitung auf den neuen Benutzernamen unterdrücken',
+ 'renameuserreserve' => 'Alten Benutzernamen für eine Neuregistrierung blockieren',
+ 'renameuserwarnings' => 'Warnungen:',
+ 'renameuserconfirm' => 'Ja, Benutzer umbenennen',
+ 'renameusersubmit' => 'Umbenennen',
+ 'renameusererrordoesnotexist' => 'Der Benutzername „<nowiki>$1</nowiki>“ existiert nicht.',
+ 'renameusererrorexists' => 'Der Benutzername „<nowiki>$1</nowiki>“ existiert bereits.',
+ 'renameusererrorinvalid' => 'Der Benutzername „<nowiki>$1</nowiki>“ ist ungültig.',
+ 'renameuser-error-request' => 'Es gab ein Problem beim Empfang der Anfrage. Bitte nochmal versuchen.',
+ 'renameuser-error-same-user' => 'Alter und neuer Benutzername sind identisch.',
+ 'renameusersuccess' => 'Der Benutzer „<nowiki>$1</nowiki>“ wurde erfolgreich in „<nowiki>$2</nowiki>“ umbenannt.',
+ 'renameuser-page-exists' => 'Die Seite „$1“ ist bereits vorhanden und kann nicht automatisch überschrieben werden.',
+ 'renameuser-page-moved' => 'Die Seite „$1“ wurde nach „$2“ verschoben.',
+ 'renameuser-page-unmoved' => 'Die Seite „$1“ konnte nicht nach „$2“ verschoben werden.',
+ 'renameuserlogpage' => 'Benutzernamenänderungs-Logbuch',
+ 'renameuserlogpagetext' => 'In diesem Logbuch werden die Änderungen von Benutzernamen protokolliert.',
+ 'renameuserlogentry' => 'hat „$1“ in „$2“ umbenannt',
+ 'renameuser-log' => '{{PLURAL:$1|1 Bearbeitung|$1 Bearbeitungen}}. Grund: $2',
+ 'renameuser-move-log' => 'Seite während der Benutzerkontoumbenennung von „[[User:$1|$1]]“ in „[[User:$2|$2]]“ automatisch verschoben',
+ 'right-renameuser' => 'Benutzer umbenennen',
+ 'renameuser-renamed-notice' => '{{GENDER:$1|Dieser Benutzer|Diese Benutzerin|Dieser Benutzer}} wurde umbenannt.
+Zur Information folgt das Benutzernamenänderungs-Logbuch.',
+);
+
+/** Zazaki (Zazaki)
+ * @author Aspar
+ * @author Xoser
+ */
+$messages['diq'] = array(
+ 'renameuser' => 'nameyê karberi bıvurn',
+ 'renameuser-linkoncontribs' => 'name bivurne',
+ 'renameuser-linkoncontribs-text' => 'Nameyê ena karber bivurne',
+ 'renameuser-desc' => "qey newe ra namedayişê karberi re yew [[Special:Renameuser|pelo xas]] têare keno (gani heqqê ''karberi re newe ra name bıde'' bıbo )",
+ 'renameuserold' => 'nameyê karberi yo nıkayi',
+ 'renameusernew' => 'nameyê karberi yo newe',
+ 'renameuserreason' => 'çıra:',
+ 'renameusermove' => 'nameyê karberan u pelê werêaameyişan bıkırışi nameyo newe',
+ 'renameuserreserve' => 'nameyê karberi yo verini bloke bıker.',
+ 'renameuserwarnings' => 'hiÅŸyariyi',
+ 'renameuserconfirm' => 'bele karberi newe ra name bıker',
+ 'renameusersubmit' => 'bierşawê/biruşnê',
+ 'renameusererrordoesnotexist' => '"<nowiki>$1</nowiki>" no name de yew karber çino.',
+ 'renameusererrorexists' => '"<nowiki>$1</nowiki>" karber ca ra esto',
+ 'renameusererrorinvalid' => '"<nowiki>$1</nowiki>" nameyê karberi nemeqbulo',
+ 'renameuser-error-request' => 'ca ardışê waştışê şıma de yew problem veciya.
+kerem kerê agêrê newe ra tesel bıkerê, bıcerbnê',
+ 'renameuser-error-same-user' => 'şıma nêşkeni nameyê karberi yo verini reyna biyarî pakerî',
+ 'renameusersuccess' => '"<nowiki>$1</nowiki>" rumuzê no karberi yo cıwa verın vuriya "<nowiki>$2</nowiki>" no rumuzi re.',
+ 'renameuser-page-exists' => '$1 pel ca ra esto newe ra ser nênusiyeno.',
+ 'renameuser-page-moved' => '$1 pel kırışiya no $2 pel',
+ 'renameuser-page-unmoved' => '$1 pel nêkırışiya no $2 pel.',
+ 'renameuserlogpage' => 'qeydê vuriyayişê nameyê karberi',
+ 'renameuserlogpagetext' => 'listeya cêrıni nameyê karberê ke vuriyayo mocneno',
+ 'renameuserlogentry' => '$1newe ra neme bı: "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 edit|$1 edit}}. çıra: $2',
+ 'renameuser-move-log' => 'wexta ke karber "[[User:$1|$1]]" no name ra kırışiya "[[User:$2|$2]]" no name re ya newe ra name diyêne pel zi otomotikmen kırişiya',
+ 'right-renameuser' => 'nameyê karberan bıvurn',
+ 'renameuser-renamed-notice' => 'nameyê na/no karberi/e vuriya.
+qey referansi rocaneyê vuriyayişê nameyi cêr de yo.',
+);
+
+/** Lower Sorbian (Dolnoserbski)
+ * @author Michawiki
+ */
+$messages['dsb'] = array(
+ 'renameuser' => 'Wužywarja pśemjeniś',
+ 'renameuser-linkoncontribs' => 'wužywarja psemjenjowaś',
+ 'renameuser-linkoncontribs-text' => 'Toś togo wužywarja pśemjenjowaś',
+ 'renameuser-desc' => "Wužywarja pśemjeniś (pomina se pšawo ''renameuser'')",
+ 'renameuserold' => 'Aktualne wužywarske mě:',
+ 'renameusernew' => 'Nowe wužywarske mě:',
+ 'renameuserreason' => 'Pśicyna za pśemjenjenje',
+ 'renameusermove' => 'Wužywarski a diskusijny bok (a jich pódboki) do nowego mjenja pśesunuś',
+ 'renameusersuppress' => 'Dalejpósrědnjenja k nowemu mjenjoju njenapóraś',
+ 'renameuserreserve' => 'Stare wužywarske mě pśeśiwo pśichodnemu wužywanjeju blokěrowaś',
+ 'renameuserwarnings' => 'Warnowanja:',
+ 'renameuserconfirm' => 'Jo, wužywarja pśemjeniś',
+ 'renameusersubmit' => 'Pśemjeniś',
+ 'renameusererrordoesnotexist' => 'Wužywaŕ "<nowiki>$1</nowiki>" njeeksistěrujo.',
+ 'renameusererrorexists' => 'Wužywaŕ "<nowiki>$1</nowiki>" južo eksistěrujo.',
+ 'renameusererrorinvalid' => 'Wužywarske mě "<nowiki>$1</nowiki>" jo njepłaśiwe.',
+ 'renameuser-error-request' => 'Problem jo pśi dostawanju napšašanja wustupił.
+Źi pšosym slědk a wopytaj hyšći raz.',
+ 'renameuser-error-same-user' => 'Njamóžoš wužywarja do togo samogo mjenja pśemjeniś',
+ 'renameusersuccess' => 'Wužywaŕ "<nowiki>$1</nowiki>" jo se do "<nowiki>$2</nowiki>" pśemjenił.',
+ 'renameuser-page-exists' => 'Bok $1 južo eksistěrujo a njedajo se awtomatiski pśepisaś.',
+ 'renameuser-page-moved' => 'Bok $1 jo se do $2 pśesunuł.',
+ 'renameuser-page-unmoved' => 'Bok $1 njejo se do $2 pśesunuś dał.',
+ 'renameuserlogpage' => 'Protokol wužywarskich pśemjenjenjow',
+ 'renameuserlogpagetext' => 'Toś to jo protokol změnow na wužywarskich mjenjach.',
+ 'renameuserlogentry' => 'jo $1 do "$2" pśemjenił',
+ 'renameuser-log' => '{{PLURAL:&1|1 změna|$1 změnje|$1 změny|$1 změnow}}. Pśicyna: $2',
+ 'renameuser-move-log' => 'Pśi pśemjenjowanju wužywarja "[[User:$1|$1]]" do "[[User:$2|$2]]" awtomatiski pśesunjony bok',
+ 'right-renameuser' => 'Wužywarjow pśemjeniś',
+ 'renameuser-renamed-notice' => 'Toś ten wužywaŕ jo se pśemjenił.
+Protokol pśemjenjowanjow jo dołojce ako referenca pódany.',
+);
+
+/** Greek (Ελληνικά)
+ * @author Badseed
+ * @author Consta
+ * @author Dead3y3
+ * @author Glavkos
+ * @author Kiriakos
+ * @author MF-Warburg
+ * @author Omnipaedista
+ * @author ZaDiak
+ */
+$messages['el'] = array(
+ 'renameuser' => 'Μετονομασία χÏήστη',
+ 'renameuser-linkoncontribs' => 'Μετονομασία χÏήστη',
+ 'renameuser-linkoncontribs-text' => 'Μετονομασία Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… χÏήστη',
+ 'renameuser-desc' => "ΠÏοσθέτει μια [[Special:Renameuser|ειδική σελίδα]] για την μετονομασία ενός χÏήστη (είναι απαÏαίτητο το δικαίωμα ''renameuser'')",
+ 'renameuserold' => 'ΤÏέχον όνομα χÏήστη:',
+ 'renameusernew' => 'Îέο όνομα χÏήστη:',
+ 'renameuserreason' => 'Λόγος μετονομασίας:',
+ 'renameusermove' => 'Μετακίνηση της σελίδας χÏήστη και της σελίδας συζήτησης χÏήστη (και των υποσελίδων τους) στο καινοÏÏγιο όνομα',
+ 'renameusersuppress' => 'Μην δημιουÏγείτε ανακατευθÏνσεις στο νέο όνομα',
+ 'renameuserreserve' => 'ΦÏαγή του Ï€Î±Î»Î¹Î¿Ï Î¿Î½ÏŒÎ¼Î±Ï„Î¿Ï‚ χÏήστη/χÏήστÏιας από μελλοντική χÏήση',
+ 'renameuserwarnings' => 'ΠÏοειδοποιήσεις:',
+ 'renameuserconfirm' => 'Îαι, μετονομάστε τον χÏήστη',
+ 'renameusersubmit' => 'ΚαταχώÏιση',
+ 'renameusererrordoesnotexist' => 'Ο χÏήστης "<nowiki>$1</nowiki>" δεν υπάÏχει',
+ 'renameusererrorexists' => 'Ο χÏήστης "<nowiki>$1</nowiki>" υπάÏχει ήδη.',
+ 'renameusererrorinvalid' => 'Το όνομα χÏήστη "<nowiki>$1</nowiki>" είναι άκυÏο.',
+ 'renameuser-error-request' => 'ΥπήÏξε ένα Ï€Ïόβλημα στην παÏαλαβή της αίτησης. ΠαÏακαλοÏμε επιστÏέψτε και ξαναδοκιμάστε.',
+ 'renameuser-error-same-user' => 'Δεν μποÏείτε να μετονομάσετε έναν χÏήστη σε όνομα ίδιο με το Ï€ÏοηγοÏμενο.',
+ 'renameusersuccess' => 'Ο χÏήστης ή η χÏήστÏια «<nowiki>$1</nowiki>» έχει μετονομαστεί σε «<nowiki>$2</nowiki>».',
+ 'renameuser-page-exists' => 'Η σελίδα $1 υπάÏχει ήδη και δεν μποÏεί να αντικατασταθεί αυτόματα.',
+ 'renameuser-page-moved' => 'Η σελίδα $1 μετακινήθηκε στο $2.',
+ 'renameuser-page-unmoved' => 'Η σελίδα $1 δεν μπόÏεσε να μετακινηθεί στο $2.',
+ 'renameuserlogpage' => 'ΑÏχείο μετονομασίας χÏηστών',
+ 'renameuserlogpagetext' => 'Αυτό είναι ένα αÏχείο καταγÏαφών αλλαγών σε ονόματα χÏηστών',
+ 'renameuserlogentry' => 'Ο/Η $1 μετονομάστηκε σε «$2»',
+ 'renameuser-log' => '{{PLURAL:$1|1 επεξεÏγασία|$1 επεξεÏγασίες}}. Λόγος: $2',
+ 'renameuser-move-log' => 'Η σελίδα μετακινήθηκε αυτόματα κατά τη μετονομασία του χÏήστη "[[User:$1|$1]]" σε "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Μετονομασία χÏηστών',
+ 'renameuser-renamed-notice' => 'Αυτός ο χÏήστης άλλαξε όνομα
+Tο ημεÏολόγιο επανονομασιών δίνεται παÏακάτω για αναφοÏά.',
+);
+
+/** Esperanto (Esperanto)
+ * @author Tlustulimu
+ * @author Yekrats
+ */
+$messages['eo'] = array(
+ 'renameuser' => 'Alinomigu uzanton',
+ 'renameuser-linkoncontribs' => 'renomigi uzanton',
+ 'renameuser-linkoncontribs-text' => 'Renomigi ĉi tiun uzanton',
+ 'renameuser-desc' => "Alinomigu uzanton (bezonas rajton ''renameuser'')",
+ 'renameuserold' => 'Aktuala salutnomo:',
+ 'renameusernew' => 'Nova salutnomo:',
+ 'renameuserreason' => 'Kialo por alinomigo:',
+ 'renameusermove' => 'Movu uzantan kaj diskutan paÄojn (kaj ties subpaÄojn) al la nova nomo',
+ 'renameusersuppress' => 'Ne krei alidirektilojn al la nova nomo',
+ 'renameuserreserve' => 'Teni la malnovan salutnomon de plua uzo',
+ 'renameuserwarnings' => 'Avertoj:',
+ 'renameuserconfirm' => 'Jes, renomigu la uzanton',
+ 'renameusersubmit' => 'Ek',
+ 'renameusererrordoesnotexist' => 'La uzanto "<nowiki>$1</nowiki>" ne ekzistas',
+ 'renameusererrorexists' => 'La uzanto "<nowiki>$1</nowiki>" jam ekzistas',
+ 'renameusererrorinvalid' => 'La salutnomo "<nowiki>$1</nowiki>" estas malvalida',
+ 'renameuser-error-request' => 'Estis problemo recivante la peton.
+Bonvolu retroigi kaj reprovi.',
+ 'renameuser-error-same-user' => 'Vi ne povas alinomigi uzanton al la sama nomo.',
+ 'renameusersuccess' => 'La uzanto "<nowiki>$1</nowiki>" estas alinomita al "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'La paÄo $1 jam ekzistas kaj ne povas esti aÅ­tomate anstataÅ­ata.',
+ 'renameuser-page-moved' => 'La paÄo $1 estis movita al $2.',
+ 'renameuser-page-unmoved' => 'La paÄo $1 ne povis esti movita al $2.',
+ 'renameuserlogpage' => 'Protokolo pri alinomigoj de uzantoj',
+ 'renameuserlogpagetext' => 'Jen protokolo pri ÅanÄoj de salutnomoj.',
+ 'renameuserlogentry' => 'renomigis $1 al "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 redakto|$1 redaktoj}}. Kialo: $2',
+ 'renameuser-move-log' => 'AÅ­tomate movis paÄon dum alinomigo de la uzanto "[[User:$1|$1]]" al "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Alinomigi uzantojn',
+ 'renameuser-renamed-notice' => 'Ĉi tiu uzanto estis renomigita.
+Jen la protokolo pri renomigado por via referenco.',
+);
+
+/** Spanish (Español)
+ * @author Alhen
+ * @author Dferg
+ * @author Diego Grez
+ * @author Icvav
+ * @author Jatrobat
+ * @author Lin linao
+ * @author Locos epraix
+ * @author Remember the dot
+ * @author Sanbec
+ * @author Spacebirdy
+ * @author Translationista
+ */
+$messages['es'] = array(
+ 'renameuser' => 'Renombrar usuario',
+ 'renameuser-linkoncontribs' => 'renombrar usuario',
+ 'renameuser-linkoncontribs-text' => 'Renombrar este usuario',
+ 'renameuser-desc' => "Añade una [[Special:Renameuser|página especial]] para renombrar a un usuario (necesita el derecho ''renameuser'')",
+ 'renameuserold' => 'Nombre actual:',
+ 'renameusernew' => 'Nuevo nombre de usuario:',
+ 'renameuserreason' => 'Motivo:',
+ 'renameusermove' => 'Trasladar las páginas de usuario y de discusión (y sus subpáginas) al nuevo nombre',
+ 'renameusersuppress' => 'No crear redirecciones al nuevo nombre',
+ 'renameuserreserve' => 'Bloquea el antiguo nombre de usuario para evitar usarlo en el futuro',
+ 'renameuserwarnings' => 'Avisos:',
+ 'renameuserconfirm' => 'Sí, renombrar el usuario',
+ 'renameusersubmit' => 'Enviar',
+ 'renameusererrordoesnotexist' => 'El usuario «<nowiki>$1</nowiki>» no existe',
+ 'renameusererrorexists' => 'El usuario «<nowiki>$1</nowiki>» ya existe',
+ 'renameusererrorinvalid' => 'El nombre de usuario «<nowiki>$1</nowiki>» no es válido',
+ 'renameuser-error-request' => 'Hubo un problema al recibir la solicitud.
+Por favor, vuelve atrás e inténtalo de nuevo.',
+ 'renameuser-error-same-user' => 'No puedes renombrar a un usuario con el nombre que ya tenía.',
+ 'renameusersuccess' => 'El usuario «<nowiki>$1</nowiki>» ha sido renombrado a «<nowiki>$2</nowiki>»',
+ 'renameuser-page-exists' => 'La página $1 ya existe y no puede ser reemplazada automáticamente.',
+ 'renameuser-page-moved' => 'La página $1 ha sido trasladada a $2.',
+ 'renameuser-page-unmoved' => 'La página $1 no pudo ser trasladada a $2.',
+ 'renameuserlogpage' => 'Registro de cambios de nombre de usuarios',
+ 'renameuserlogpagetext' => 'Este es un registro de cambios de nombres de usuarios',
+ 'renameuserlogentry' => 'ha renombrado a $1 a "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 edición|$1 ediciones}}. Motivo: $2',
+ 'renameuser-move-log' => 'Página trasladada automáticamente al renombrar al usuario "[[User:$1|$1]]" a "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Renombrar usuarios',
+ 'renameuser-renamed-notice' => 'Este usuario ha sido renombrado.
+El registro de cambios de nombre de usuario se provee abajo para referencia.',
+);
+
+/** Estonian (Eesti)
+ * @author Avjoska
+ * @author Jaan513
+ * @author Pikne
+ * @author Silvar
+ * @author WikedKentaur
+ */
+$messages['et'] = array(
+ 'renameuser' => 'Kasutajanime muutmine',
+ 'renameuser-desc' => "Lisab kasutajanime muutmise [[Special:Renameuser|erilehekülje]] (vajab ''renameuser''-õigust).",
+ 'renameuserold' => 'Praegune kasutajanimi:',
+ 'renameusernew' => 'Uus kasutajanimi:',
+ 'renameuserreason' => 'Muutmise põhjus:',
+ 'renameusermove' => 'Nimeta ümber kasutajaleht, aruteluleht ja nende alamlehed.',
+ 'renameuserreserve' => 'Ära luba vana kasutajanime edaspidi kasutada',
+ 'renameuserwarnings' => 'Hoiatused:',
+ 'renameuserconfirm' => 'Jah, nimeta kasutaja ümber',
+ 'renameusersubmit' => 'Muuda',
+ 'renameusererrordoesnotexist' => 'Kasutajat "<nowiki>$1</nowiki>" ei ole olemas.',
+ 'renameusererrorexists' => 'Kasutaja "<nowiki>$1</nowiki>" on juba olemas.',
+ 'renameusererrorinvalid' => 'Kasutajanimi "<nowiki>$1</nowiki>" on vigane.',
+ 'renameuser-error-request' => 'Palvet ei õnnestunud kätte saada.
+Palun ürita uuesti.',
+ 'renameuser-error-same-user' => 'Vana ja uus nimi on samased.',
+ 'renameusersuccess' => 'Kasutaja "<nowiki>$1</nowiki>" uus nimi on nüüd "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'Lehekülg $1 on juba olemas ja seda ei saa automaatselt üle kirjutada.',
+ 'renameuser-page-moved' => 'Lehekülg $1 on teisaldatud pealkirja $2 alla.',
+ 'renameuser-page-unmoved' => 'Lehekülje $1 teisaldamine nime $2 alla ei õnnestunud.',
+ 'renameuserlogpage' => 'Kasutajanime muutmise logi',
+ 'renameuserlogpagetext' => 'See on kasutajanimede muutmise logi.',
+ 'renameuserlogentry' => 'nimetas kasutaja $1 ümber kasutajaks "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 redigeerimine|$1 redigeerimist}}. Põhjus: $2',
+ 'renameuser-move-log' => 'Teisaldatud automaatselt, kui kasutaja "[[User:$1|$1]]" nimetati ümber kasutajaks "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Muuta kasutajanimesid',
+ 'renameuser-renamed-notice' => 'Kasutaja on ümbernimetatud.
+Allpool on toodud ümbernimetamislogi.',
+);
+
+/** Basque (Euskara)
+ * @author An13sa
+ * @author Theklan
+ */
+$messages['eu'] = array(
+ 'renameuser' => 'Erabiltzaile bati izena aldatu',
+ 'renameuserold' => 'Oraingo erabiltzaile izena:',
+ 'renameusernew' => 'Erabiltzaile izen berria:',
+ 'renameuserreason' => 'Izena aldatzeko arrazoia:',
+ 'renameuserwarnings' => 'Oharrak:',
+ 'renameuserconfirm' => 'Bai, lankidearen izena aldatu',
+ 'renameusersubmit' => 'Bidali',
+ 'renameusererrorexists' => '"<nowiki>$1</nowiki>" lankidea existitzen da',
+ 'renameusererrorinvalid' => '"<nowiki>$1</nowiki>" erabiltzaile izena okerra da',
+ 'renameusersuccess' => '"<nowiki>$1</nowiki>" lankidearen izen berria "<nowiki>$2</nowiki>" da',
+ 'renameuser-page-exists' => 'Badago $1 orrialdea, eta ezin da automatikoki gainidatzi.',
+ 'renameuser-page-moved' => '$1 orrialde $2(e)ra mugitu da.',
+ 'renameuser-page-unmoved' => 'Ezin izan da $1 orrialdea $2(e)ra mugitu.',
+ 'renameuserlogpage' => 'Erabiltzaileen izen aldaketa erregistroa',
+ 'renameuserlogpagetext' => 'Erabiltzaileen izen aldaketen erregistroa da hau',
+ 'renameuser-log' => '{{PLURAL:$1|aldaketa 1|$1 aldaketa}}. Arrazoia: $2',
+ 'right-renameuser' => 'Lankideak berrizendatu',
+);
+
+/** Extremaduran (Estremeñu)
+ * @author Better
+ */
+$messages['ext'] = array(
+ 'renameuser-page-moved' => 'S´á moviu la páhina $1 a $2.',
+);
+
+/** Persian (Ùارسی)
+ * @author Ebraminio
+ * @author Huji
+ * @author Wayiran
+ */
+$messages['fa'] = array(
+ 'renameuser' => 'تغییر نام کاربر',
+ 'renameuser-linkoncontribs' => 'تغییر نام کاربر',
+ 'renameuser-linkoncontribs-text' => 'تغییر نام کاربر',
+ 'renameuser-desc' => "نام یک کاربر را تغییر می‌دهد (نیازمند برخورداری از اختیارات ''تغییرنام'' است)",
+ 'renameuserold' => 'نام کاربری کنونی:',
+ 'renameusernew' => 'نام کاربری نو:',
+ 'renameuserreason' => 'علت تغییر نام کاربری:',
+ 'renameusermove' => 'صÙحه کاربر Ùˆ صÙحه بحث کاربر (Ùˆ زیر صÙحه‌های آن‌ها) را به نام جدید انتقال بده',
+ 'renameusersuppress' => 'تغییر مسیر به نام جدید ایجاد نکن',
+ 'renameuserreserve' => 'نام کاربری قبلی را در مقابل استÙادهٔ مجدد Ø­Ùظ Ú©Ù†',
+ 'renameuserwarnings' => 'هشدار:',
+ 'renameuserconfirm' => 'بله، نام کاربر را تغییر بده',
+ 'renameusersubmit' => 'ارسال',
+ 'renameusererrordoesnotexist' => 'نام کاربری «<nowiki>$1</nowiki>» وجود ندارد',
+ 'renameusererrorexists' => 'نام کاربری «<nowiki>$1</nowiki>» استÙاده شده‌است',
+ 'renameusererrorinvalid' => 'نام کاربری «<nowiki>$1</nowiki>» غیر مجاز است',
+ 'renameuser-error-request' => 'در دریاÙت درخواست مشکلی پیش آمد. لطÙاً به صÙحهٔ قبل بازگردید Ùˆ دوباره تلاش کنید.',
+ 'renameuser-error-same-user' => 'شما نمی‌توانید نام یک کاربر را به همان نام قبلی‌اش تغییر دهید.',
+ 'renameusersuccess' => 'نام کاربر «<nowiki>$1</nowiki>» به «<nowiki>$2</nowiki>» تغییر یاÙت.',
+ 'renameuser-page-exists' => 'صÙحهٔ $1 از قبل وجود داشته Ùˆ به طور خودکار قابل بازنویسی نیست.',
+ 'renameuser-page-moved' => 'صÙحهٔ $1 به $2 انتقال داده شد.',
+ 'renameuser-page-unmoved' => 'امکان انتقال صÙحهٔ $1 به $2 وجود ندارد.',
+ 'renameuserlogpage' => 'سیاهه تغییر نام کاربر',
+ 'renameuserlogpagetext' => 'این سیاههٔ تغییر نام کاربران است',
+ 'renameuserlogentry' => 'نام $1 را به $2 تغییر داد',
+ 'renameuser-log' => '$1 ویرایش. دلیل: $2',
+ 'renameuser-move-log' => 'صÙحه در ضمن تغییر نام «[[User:$1|$1]]» به «[[User:$2|$2]]» به طور خودکار انتقال داده شد.',
+ 'right-renameuser' => 'تغییر نام کاربران',
+ 'renameuser-renamed-notice' => 'این کاربر تغییر نام داده‌است.
+سیاهه تغییر نام در ادامه آمده است.',
+);
+
+/** Finnish (Suomi)
+ * @author Agony
+ * @author Centerlink
+ * @author Crt
+ * @author Nike
+ * @author Str4nd
+ */
+$messages['fi'] = array(
+ 'renameuser' => 'Käyttäjätunnuksen vaihto',
+ 'renameuser-linkoncontribs' => 'nimeä käyttäjä uudelleen',
+ 'renameuser-linkoncontribs-text' => 'Nimeä tämä käyttäjä uudelleen',
+ 'renameuser-desc' => "Mahdollistaa käyttäjän uudelleennimeämisen (vaatii ''renameuser''-oikeudet).",
+ 'renameuserold' => 'Nykyinen tunnus',
+ 'renameusernew' => 'Uusi tunnus',
+ 'renameuserreason' => 'Kommentti',
+ 'renameusermove' => 'Siirrä käyttäjä- ja keskustelusivut alasivuineen uudelle nimelle',
+ 'renameusersuppress' => 'Älä luo ohjauksia uuteen nimeen',
+ 'renameuserreserve' => 'Estä entinen käyttäjänimi tulevalta käytöltä',
+ 'renameuserwarnings' => 'Varoitukset:',
+ 'renameuserconfirm' => 'Kyllä, uudelleennimeä käyttäjä',
+ 'renameusersubmit' => 'Nimeä',
+ 'renameusererrordoesnotexist' => 'Tunnusta â€<nowiki>$1</nowiki>†ei ole',
+ 'renameusererrorexists' => 'Tunnus â€<nowiki>$1</nowiki>†on jo olemassa',
+ 'renameusererrorinvalid' => 'Tunnus â€<nowiki>$1</nowiki>†ei ole kelvollinen',
+ 'renameuser-error-request' => 'Pyynnön vastaanottamisessa oli ongelma. Ole hyvä ja yritä uudelleen.',
+ 'renameuser-error-same-user' => 'Et voi nimetä käyttäjää uudelleen samaksi kuin hän jo on.',
+ 'renameusersuccess' => 'Käyttäjän â€<nowiki>$1</nowiki>†tunnus on nyt â€<nowiki>$2</nowiki>â€.',
+ 'renameuser-page-exists' => 'Sivu $1 on jo olemassa eikä sitä korvattu.',
+ 'renameuser-page-moved' => 'Sivu $1 siirrettiin nimelle $2.',
+ 'renameuser-page-unmoved' => 'Sivun $1 siirtäminen nimelle $2 ei onnistunut.',
+ 'renameuserlogpage' => 'Tunnusten vaihdot',
+ 'renameuserlogpagetext' => 'Tämä on loki käyttäjätunnuksien vaihdoista.',
+ 'renameuserlogentry' => 'on nimennyt käyttäjän $1 käyttäjäksi â€$2â€',
+ 'renameuser-log' => 'Tehnyt {{PLURAL:$1|yhden muokkauksen|$1 muokkausta}}. $2',
+ 'renameuser-move-log' => 'Siirretty automaattisesti tunnukselta â€[[User:$1|$1]]†tunnukselle â€[[User:$2|$2]]â€',
+ 'right-renameuser' => 'Nimetä käyttäjätunnuksia uudelleen',
+ 'renameuser-renamed-notice' => 'Tämä käyttäjä on nimetty uudelleen.
+Alla on ote tunnusten vaihtolokista.',
+);
+
+/** Faroese (Føroyskt)
+ * @author Spacebirdy
+ */
+$messages['fo'] = array(
+ 'renameusernew' => 'Nýtt brúkaranavn:',
+);
+
+/** French (Français)
+ * @author Cedric31
+ * @author Crochet.david
+ * @author Grondin
+ * @author Hégésippe Cormier
+ * @author IAlex
+ * @author Peter17
+ * @author PieRRoMaN
+ * @author Urhixidur
+ * @author Verdy p
+ */
+$messages['fr'] = array(
+ 'renameuser' => 'Renommer l’utilisateur',
+ 'renameuser-linkoncontribs' => 'renommer l’utilisateur',
+ 'renameuser-linkoncontribs-text' => 'Renommer cet utilisateur',
+ 'renameuser-desc' => "Renomme un utilisateur (nécessite les droits de ''renameuser'')",
+ 'renameuserold' => 'Nom actuel de l’utilisateur :',
+ 'renameusernew' => 'Nouveau nom de l’utilisateur :',
+ 'renameuserreason' => 'Motif du changement de nom :',
+ 'renameusermove' => 'Renommer toutes les pages de l’utilisateur vers le nouveau nom',
+ 'renameusersuppress' => 'Ne pas créer de redirection vers le nouveau nom',
+ 'renameuserreserve' => 'Réserver l’ancien nom pour un usage futur',
+ 'renameuserwarnings' => 'Avertissements :',
+ 'renameuserconfirm' => 'Oui, renommer l’utilisateur',
+ 'renameusersubmit' => 'Soumettre',
+ 'renameusererrordoesnotexist' => 'L’utilisateur « <nowiki>$1</nowiki> » n’existe pas',
+ 'renameusererrorexists' => 'L’utilisateur « <nowiki>$1</nowiki> » existe déjà',
+ 'renameusererrorinvalid' => 'Le nom d’utilisateur « <nowiki>$1</nowiki> » n’est pas valide',
+ 'renameuser-error-request' => 'Un problème existe avec la réception de la requête. Revenez en arrière et essayez à nouveau.',
+ 'renameuser-error-same-user' => 'Vous ne pouvez pas renommer un utilisateur du même nom qu’auparavant.',
+ 'renameusersuccess' => 'L’utilisateur « <nowiki>$1</nowiki> » a été renommé « <nowiki>$2</nowiki> »',
+ 'renameuser-page-exists' => 'La page $1 existe déjà et ne peut pas être automatiquement remplacée.',
+ 'renameuser-page-moved' => 'La page $1 a été déplacée vers $2.',
+ 'renameuser-page-unmoved' => 'La page $1 ne peut pas être renommée en $2.',
+ 'renameuserlogpage' => 'Journal des changements de noms d’utilisateurs',
+ 'renameuserlogpagetext' => 'Ceci est l’historique des changements de noms d’utilisateur',
+ 'renameuserlogentry' => 'a renommé « $1 » en « $2 »',
+ 'renameuser-log' => '$1 modification{{PLURAL:$1||s}}. Motif : $2',
+ 'renameuser-move-log' => 'Page déplacée automatiquement lorsque l’utilisateur « [[User:$1|$1]] » est devenu « [[User:$2|$2]] »',
+ 'right-renameuser' => 'Renommer des utilisateurs',
+ 'renameuser-renamed-notice' => 'Cet utilisateur a été renommé.
+Le journal des renommages est disponible ci-dessous pour information.',
+);
+
+/** Franco-Provençal (Arpetan)
+ * @author ChrisPtDe
+ */
+$messages['frp'] = array(
+ 'renameuser' => 'Renomar l’utilisator',
+ 'renameuser-linkoncontribs' => 'renomar l’utilisator',
+ 'renameuser-linkoncontribs-text' => 'Renomar ceti utilisator',
+ 'renameuser-desc' => "Apond una [[Special:Renameuser|pâge spèciâla]] por renomar un utilisator (at fôta des drêts de ''renameuser'').",
+ 'renameuserold' => 'Nom d’ora a l’utilisator :',
+ 'renameusernew' => 'Novél nom a l’utilisator :',
+ 'renameuserreason' => 'Rêson du changement de nom :',
+ 'renameusermove' => 'Renomar totes les pâges a l’utilisator vers lo novél nom',
+ 'renameusersuppress' => 'Pas fâre de redirèccion vers lo novél nom',
+ 'renameuserreserve' => 'Resèrvar lo viely nom por un usâjo a vegnir',
+ 'renameuserwarnings' => 'Avèrtissements :',
+ 'renameuserconfirm' => 'Ouè, renomar l’utilisator',
+ 'renameusersubmit' => 'Sometre',
+ 'renameusererrordoesnotexist' => 'L’utilisator « <nowiki>$1</nowiki> » ègziste pas.',
+ 'renameusererrorexists' => 'L’utilisator « <nowiki>$1</nowiki> » ègziste ja.',
+ 'renameusererrorinvalid' => 'Lo nom d’utilisator « <nowiki>$1</nowiki> » est envalido.',
+ 'renameuser-error-request' => 'Un problèmo ègziste avouéc la reçua de la requéta.
+Volyéd tornar arriér et pués tornar èprovar.',
+ 'renameuser-error-same-user' => 'Vos pouede pas renomar un utilisator du mémo nom que dês devant.',
+ 'renameusersuccess' => 'L’utilisator « <nowiki>$1</nowiki> » at étâ renomâ en « <nowiki>$2</nowiki> ».',
+ 'renameuser-page-exists' => 'La pâge $1 ègziste ja et pôt pas étre remplaciê ôtomaticament.',
+ 'renameuser-page-moved' => 'La pâge $1 at étâ dèplaciê vers $2.',
+ 'renameuser-page-unmoved' => 'La pâge $1 pôt pas étre renomâ en $2.',
+ 'renameuserlogpage' => 'Jornal des changements de nom d’utilisator',
+ 'renameuserlogpagetext' => 'O est lo jornal des changements de nom d’utilisator.',
+ 'renameuserlogentry' => 'at renomâ « $1 » en « $2 »',
+ 'renameuser-log' => '$1 changement{{PLURAL:$1||s}}. Rêson : $2',
+ 'renameuser-move-log' => 'Pâge dèplaciê ôtomaticament quand l’utilisator « [[User:$1|$1]] » est vegnu « [[User:$2|$2]] »',
+ 'right-renameuser' => 'Renomar des utilisators',
+ 'renameuser-renamed-notice' => 'Ceti utilisator at étâ renomâ.
+Lo jornal des changements de nom est disponiblo ce-desot por enformacion.',
+);
+
+/** Friulian (Furlan)
+ * @author Klenje
+ */
+$messages['fur'] = array(
+ 'renameuser' => 'Cambie non par un utent',
+ 'renameuserold' => 'Non utent atuâl:',
+ 'renameusernew' => 'Gnûf non utent:',
+ 'renameuserwarnings' => 'Avîs:',
+);
+
+/** Western Frisian (Frysk)
+ * @author SK-luuut
+ * @author Snakesteuben
+ */
+$messages['fy'] = array(
+ 'renameuser' => 'Feroarje in meidochnamme',
+ 'renameuser-desc' => "Foeget in [[Special:Renameuser|spesiale side]] ta om in meidoggersnamme te feroarjen (jo hawwe hjirfoar it ''renameuser'' rjocht nedich)",
+ 'renameuserold' => 'Alde namme:',
+ 'renameusernew' => 'Nije namme:',
+ 'renameuserreason' => 'Reden foar nammewiziging:',
+ 'renameusermove' => 'Werneam meidogger en oerlis siden (mei ûnderlizzende siden) nei de nije namme',
+ 'renameuserreserve' => 'Takomst brûken fan de âlde meidoggersnamme foarkomme',
+ 'renameuserwarnings' => 'Warskôgings:',
+ 'renameuserconfirm' => 'Ja, feroarje de namme fan de meidogger',
+ 'renameusersubmit' => 'Feroarje',
+ 'renameusererrordoesnotexist' => 'Der is gjin meidogger mei de namme "<nowiki>$1</nowiki>"',
+ 'renameusererrorexists' => 'De meidochnamme "<nowiki>$1</nowiki>" wurdt al brûkt.',
+ 'renameusererrorinvalid' => 'De meidochnamme "<nowiki>$1</nowiki>" mei net.',
+ 'renameuser-error-request' => "Der wie in probleem mei it ferwurkjen fan de oanfraach.
+Gean tebek en probearje it asjebleaft op 'e nij.",
+ 'renameuser-error-same-user' => 'Jo kinne in meidoggersnamme net nei deselde namme feroarje.',
+ 'renameusersuccess' => 'Meidogger "<nowiki>$1</nowiki>" is no meidogger "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'De side $1 bestiet al en kin net automatysk oerskreaun wurde.',
+ 'renameuser-page-moved' => 'Sidenamme $1 is feroare yn $2.',
+ 'renameuser-page-unmoved' => 'Sidenamme $1 koe net feroare wurde yn $2.',
+ 'renameuserlogpage' => 'Nammeferoar-loch',
+ 'renameuserlogpagetext' => 'Dit is in loch fan feroarings fan meidochnammen.',
+ 'renameuserlogentry' => 'hat de namme fan $1 feroare yn "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|ien feroaring|$1 feroarings}}. Reden: $2',
+ 'renameuser-move-log' => 'Sidenamme automatysk feroare by it feroarjen fan de meidoggersnamme fan "[[User:$1|$1]]" yn "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Feroarje meidoggersnammen',
+);
+
+/** Irish (Gaeilge)
+ * @author Alison
+ */
+$messages['ga'] = array(
+ 'renameuser' => 'Athainmnigh úsáideoir',
+ 'renameuserold' => 'Ainm reatha úsáideora:',
+ 'renameusernew' => 'Ainm nua úsáideora:',
+ 'renameusersuccess' => 'Athainmníodh úsáideoir "<nowiki>$1</nowiki>" mar "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'Tá leathanach "$1" ann chean féin; ní féidir ábhar a scríobh thairis go huathoibríoch.',
+ 'renameuserlogentry' => 'athainmníodh úsáideoir $1 mar "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|Athrú amháin|$1 athruithe}}. Fáth: $2',
+);
+
+/** Galician (Galego)
+ * @author Alma
+ * @author Prevert
+ * @author Toliño
+ */
+$messages['gl'] = array(
+ 'renameuser' => 'Mudar o nome do usuario',
+ 'renameuser-linkoncontribs' => 'cambiar o nome do usuario',
+ 'renameuser-linkoncontribs-text' => 'Cambiar o nome deste usuario',
+ 'renameuser-desc' => "Engade unha [[Special:Renameuser|páxina especial]] para renomear un usuario (precisa dereitos de ''renomear usuarios'')",
+ 'renameuserold' => 'Nome de usuario actual:',
+ 'renameusernew' => 'Novo nome de usuario:',
+ 'renameuserreason' => 'Razón para mudar o nome:',
+ 'renameusermove' => 'Mover as páxinas de usuario e de conversa (xunto coas subpáxinas) ao novo nome',
+ 'renameusersuppress' => 'Non crear a redirección cara ao novo nome',
+ 'renameuserreserve' => 'Reservar o nome de usuario vello para un uso posterior',
+ 'renameuserwarnings' => 'Avisos:',
+ 'renameuserconfirm' => 'Si, renomear este usuario',
+ 'renameusersubmit' => 'Enviar',
+ 'renameusererrordoesnotexist' => 'O usuario "<nowiki>$1</nowiki>" non existe.',
+ 'renameusererrorexists' => 'O usuario "<nowiki>$1</nowiki>" xa existe.',
+ 'renameusererrorinvalid' => 'O nome de usuario "<nowiki>$1</nowiki>" non é válido.',
+ 'renameuser-error-request' => 'Houbo un problema coa recepción da solicitude.
+Volva atrás e inténteo de novo.',
+ 'renameuser-error-same-user' => 'Non pode mudar o nome dun usuario ao mesmo nome que tiña antes.',
+ 'renameusersuccess' => 'O nome de usuario de "<nowiki>$1</nowiki>" cambiou a "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'A páxina "$1" xa existe e non pode ser sobrescrita automaticamente.',
+ 'renameuser-page-moved' => 'A páxina "$1" foi movida a "$2".',
+ 'renameuser-page-unmoved' => 'A páxina "$1" non pode ser movida a "$2".',
+ 'renameuserlogpage' => 'Rexistro de cambios de nome de usuario',
+ 'renameuserlogpagetext' => 'Este é un rexistro dos cambios nos nomes de usuario.',
+ 'renameuserlogentry' => 'mudou o nome de "$1" a "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 edición|$1 edicións}}. Razón: $2',
+ 'renameuser-move-log' => 'A páxina moveuse automaticamente cando se mudou o nome do usuario "[[User:$1|$1]]" a "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Renomear usuarios',
+ 'renameuser-renamed-notice' => 'Este usuario foi renomeado.
+Velaquí está o rexistro de cambios de nome de usuario por se quere consultalo.',
+);
+
+/** Ancient Greek (ἈÏχαία ἑλληνικὴ)
+ * @author Omnipaedista
+ */
+$messages['grc'] = array(
+ 'renameusersubmit' => 'Ὑποβάλλειν',
+ 'renameuser-log' => '{{PLURAL:$1|1 μεταγÏαφή|$1 μεταγÏαφαί}}. Αίτία: $2',
+);
+
+/** Swiss German (Alemannisch)
+ * @author Als-Holder
+ */
+$messages['gsw'] = array(
+ 'renameuser' => 'Benutzer umnänne',
+ 'renameuser-linkoncontribs' => 'Benutzer umnänne',
+ 'renameuser-linkoncontribs-text' => 'Dää Benutzer umnänne',
+ 'renameuser-desc' => "Ergänzt e [[Special:Renameuser|Spezialsyte]] fir d Umnännig vun eme Benutzer (brucht s ''renameuser''-Rächt)",
+ 'renameuserold' => 'Bishärige Benutzername:',
+ 'renameusernew' => 'Neije Benutzername:',
+ 'renameuserreason' => 'Grund:',
+ 'renameusermove' => 'Verschieb Benutzer-/Diskussionssyte mit Untersyte uf dr neij Benutzername',
+ 'renameusersuppress' => 'Kei Wyterleitig uf dr nej Benutzername aalege',
+ 'renameuserreserve' => 'Blockier dr alt Benutzername fir e Neijregischtrierig',
+ 'renameuserwarnings' => 'Warnige:',
+ 'renameuserconfirm' => 'Jo, Benutzer umnänne',
+ 'renameusersubmit' => 'Umnänne',
+ 'renameusererrordoesnotexist' => 'Dr Benutzername „<nowiki>$1</nowiki>“ git s nit.',
+ 'renameusererrorexists' => 'Dr Benutzername „<nowiki>$1</nowiki>“ git s scho.',
+ 'renameusererrorinvalid' => 'Dr Benutzername „<nowiki>$1</nowiki>“ isch uugiltig.',
+ 'renameuser-error-request' => 'S het e Probläm bim Empfang vu dr Aafrog gee. Bitte nomol versueche.',
+ 'renameuser-error-same-user' => 'Dr alt und dr neij Benutzername sin identisch.',
+ 'renameusersuccess' => 'Dr Benutzer „<nowiki>$1</nowiki>“ isch mit Erfolg in „<nowiki>$2</nowiki>“ umgnännt wore.',
+ 'renameuser-page-exists' => 'D Syte $1 git s scho un cha nit automatisch iberschribe wäre.',
+ 'renameuser-page-moved' => 'D Syte $1 isch noch $2 verschobe wore.',
+ 'renameuser-page-unmoved' => 'D Syte $1 het nit chenne noch $2 verschobe wäre.',
+ 'renameuserlogpage' => 'Benutzernamenänderigs-Logbuech',
+ 'renameuserlogpagetext' => 'In däm Logbuech wäre d Änderige vu Benutzernäme protokolliert.',
+ 'renameuserlogentry' => 'het „$1“ in „$2“ umgnännt',
+ 'renameuser-log' => '{{PLURAL:$1|1 Bearbeitig|$1 Bearbeitige}}. Grund: $2',
+ 'renameuser-move-log' => 'dur d Umnännig vu „[[User:$1|$1]]“ noch „[[User:$2|$2]]“ automatisch verschobeni Syte',
+ 'right-renameuser' => 'Benutzer umnänne',
+ 'renameuser-renamed-notice' => 'Dää Benutzer isch umgnännt wore.
+S Umnännigs-Logbuech wird do unte ufgfiert as Quälle.',
+);
+
+/** Hebrew (עברית)
+ * @author Amire80
+ * @author Rotem Liss
+ * @author YaronSh
+ */
+$messages['he'] = array(
+ 'renameuser' => 'שינוי ×©× ×ž×©×ª×ž×©',
+ 'renameuser-linkoncontribs' => 'שינוי ×©× ×ž×©×ª×ž×©',
+ 'renameuser-linkoncontribs-text' => 'שינוי ×©× ×”×ž×©×ª×ž×© ×”×–×”',
+ 'renameuser-desc' => "הוספת [[Special:Renameuser|דף מיוחד]] לשינוי ×©× ×ž×©×ª×ž×© (דרושה הרש×ת ''renameuser'')",
+ 'renameuserold' => '×©× ×ž×©×ª×ž×© נוכחי:',
+ 'renameusernew' => '×©× ×ž×©×ª×ž×© חדש:',
+ 'renameuserreason' => 'סיבה לשינוי הש×:',
+ 'renameusermove' => 'העברת דפי המשתמש והשיחה (כולל דפי המשנה שלה×) ×œ×©× ×”×—×“×©',
+ 'renameusersuppress' => '×œ× ×œ×™×¦×•×¨ הפניות ×œ×©× ×”×—×“×©',
+ 'renameuserreserve' => 'חסימת ×©× ×”×ž×©×ª×ž×© הישן לשימוש נוסף',
+ 'renameuserwarnings' => '×זהרות:',
+ 'renameuserconfirm' => 'כן, שנה ×ת ×©× ×”×ž×©×ª×ž×©',
+ 'renameusersubmit' => 'שינוי ×©× ×ž×©×ª×ž×©',
+ 'renameusererrordoesnotexist' => 'המשתמש "<nowiki>$1</nowiki>" ×ינו קיי×.',
+ 'renameusererrorexists' => 'המשתמש "<nowiki>$1</nowiki>" כבר קיי×.',
+ 'renameusererrorinvalid' => '×©× ×”×ž×©×ª×ž×© "<nowiki>$1</nowiki>" ×ינו תקין.',
+ 'renameuser-error-request' => 'הייתה בעיה בקבלת הבקשה. ×× × ×—×–×¨×• לדף ×”×§×•×“× ×•× ×¡×• שנית.',
+ 'renameuser-error-same-user' => '××™× ×›× ×™×›×•×œ×™× ×œ×©× ×•×ª ×ת ×©× ×”×ž×©×ª×ž×© ×œ×©× ×–×”×” לשמו הישן.',
+ 'renameusersuccess' => '×©× ×”×ž×©×ª×ž×© של "<nowiki>$1</nowiki>" שונה ל"<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'הדף $1 כבר ×§×™×™× ×•×œ× × ×™×ª×Ÿ לדרוס ×ותו ×וטומטית.',
+ 'renameuser-page-moved' => 'הדף $1 הועבר ל$2.',
+ 'renameuser-page-unmoved' => '×œ× × ×™×ª×Ÿ ×”×™×” להעביר ×ת הדף $1 ל$2.',
+ 'renameuserlogpage' => 'יומן שינויי שמות משתמש',
+ 'renameuserlogpagetext' => 'זהו יומן ×”×©×™× ×•×™×™× ×‘×©×ž×•×ª המשתמשי×.',
+ 'renameuserlogentry' => 'שינה ×ת ×©× ×”×ž×©×ª×ž×© "$1" ל־"$2"',
+ 'renameuser-log' => '{{PLURAL:$1|עריכה ×חת|$1 עריכות}}. סיבה: $2',
+ 'renameuser-move-log' => 'העברה ×וטומטית בעקבות שינוי ×©× ×”×ž×©×ª×ž×© "[[User:$1|$1]]" ל־"[[User:$2|$2]]"',
+ 'right-renameuser' => 'שינוי שמות משתמש',
+ 'renameuser-renamed-notice' => '×©× ×”×ž×©×ª×ž×© ×”×–×” שונה.
+יומן שינויי שמות המשתמש מוצג להלן.',
+);
+
+/** Hindi (हिनà¥à¤¦à¥€)
+ * @author Kaustubh
+ */
+$messages['hi'] = array(
+ 'renameuser' => 'सदसà¥à¤¯à¤¨à¤¾à¤® बदलें',
+ 'renameuser-desc' => "सदसà¥à¤¯à¤¨à¤¾à¤® बदलें (''सदसà¥à¤¯à¤¨à¤¾à¤® बदलने अधिकार'' अनिवारà¥à¤¯)",
+ 'renameuserold' => 'सदà¥à¤¯ सदसà¥à¤¯à¤¨à¤¾à¤®:',
+ 'renameusernew' => 'नया सदसà¥à¤¯à¤¨à¤¾à¤®:',
+ 'renameuserreason' => 'नाम बदलने के कारण:',
+ 'renameusermove' => 'सदसà¥à¤¯ पृषà¥à¤  और वारà¥à¤¤à¤¾ पृषà¥à¤  (और उनके सबपेज) नये नाम की ओर भेजें',
+ 'renameusersubmit' => 'भेजें',
+ 'renameusererrordoesnotexist' => 'सदसà¥à¤¯ "<nowiki>$1</nowiki>" असà¥à¤¤à¤¿à¤¤à¥à¤µà¤®à¥‡à¤‚ नहीं हैं।',
+ 'renameusererrorexists' => 'सदसà¥à¤¯ "<nowiki>$1</nowiki>" पहले से असà¥à¤¤à¤¿à¤¤à¥à¤µà¤®à¥‡à¤‚ हैं।',
+ 'renameusererrorinvalid' => 'सदसà¥à¤¯à¤¨à¤¾à¤® "<nowiki>$1</nowiki>" गलत हैं।',
+ 'renameuser-error-request' => 'यह मांग पूरी करने मे समसà¥à¤¯à¤¾ आई हैं।
+कृपया पीछे जाकर फिरसे यतà¥à¤¨ करें।',
+ 'renameuser-error-same-user' => 'आप सदसà¥à¤¯à¤¨à¤¾à¤® को उसी नामसे बदल नहीं सकते हैं।',
+ 'renameusersuccess' => '"<nowiki>$1</nowiki>" का सदसà¥à¤¯à¤¨à¤¾à¤® "<nowiki>$2</nowiki>" कर दिया गया हैं।',
+ 'renameuser-page-exists' => '$1 यह पनà¥à¤¨à¤¾ पहले से असà¥à¤¤à¤¿à¤¤à¥à¤µà¤®à¥‡à¤‚ हैं और इसपर अपने आप पà¥à¤¨à¤°à¥à¤²à¥‡à¤–न नहीं कर सकतें।',
+ 'renameuser-page-moved' => '$1 का नाम बदलकर $2 कर दिया गया हैं।',
+ 'renameuser-page-unmoved' => '$1 का नाम बदलकर $2 नहीं कर सकें हैं।',
+ 'renameuserlogpage' => 'सदसà¥à¤¯à¤¨à¤¾à¤® बदलाव सूची',
+ 'renameuserlogpagetext' => 'यह सदसà¥à¤¯à¤¨à¤¾à¤®à¥‹à¤‚में हà¥à¤ बदलावोंकी सूची हैं',
+ 'renameuserlogentry' => 'ने $1 को "$2" में बदल दिया हैं',
+ 'renameuser-log' => '{{PLURAL:$1|1 बदलाव|$1 बदलाव}}. कारण: $2',
+ 'renameuser-move-log' => '"[[User:$1|$1]]" को "[[User:$2|$2]]" करते वकà¥à¤¤ अपने आप सदसà¥à¤¯à¤ªà¥ƒà¤·à¥à¤  बदल दिया हैं',
+ 'right-renameuser' => 'सदसà¥à¤¯à¥‹à¤‚के नाम बदलें',
+ 'renameuser-renamed-notice' => 'इस सदसà¥à¤¯ का नाम बदल दिया गया है।
+संदरà¥à¤­ के लिठनीचे नाम बदलने का चिटà¥à¤ à¤¾ है।',
+);
+
+/** Fiji Hindi (Latin) (Fiji Hindi (Latin))
+ * @author Thakurji
+ */
+$messages['hif-latn'] = array(
+ 'renameuser' => 'Sadasya ke naam badlo',
+ 'renameuser-desc' => "[[Special:Renameuser|special panna]] ke jorro ek sadasya ke naam badle ke khatir (''renameuser'' ke hak maange hai)",
+ 'renameuserold' => 'Abhi ke username:',
+ 'renameusernew' => 'Nawaa username:',
+ 'renameuserreason' => 'Naam badle ke kaaran:',
+ 'renameusermove' => 'Sadasya aur salah waala panna (aur uske sub-panna) ke naam badlo',
+ 'renameuserreserve' => 'Purana username ke aage use kare se roko',
+ 'renameuserwarnings' => 'Chetauni:',
+ 'renameuserconfirm' => 'Haan, sadasya ke naam badlo',
+ 'renameusersubmit' => 'Submit karo',
+ 'renameusererrordoesnotexist' => '"<nowiki>$1</nowiki>" naam ke koi sadasya nai hai.',
+ 'renameusererrorexists' => '"<nowiki>$1</nowiki>" naam ke ek sadasya abhi hai.',
+ 'renameusererrorinvalid' => 'Username "<nowiki>$1</nowiki>" kharaab hai.',
+ 'renameuser-error-request' => 'Request ke le me kuchh karrbarr bhais hai.
+Meharbani kar ke laut ke fir kosis karo.',
+ 'renameuser-error-same-user' => 'Aap sadasya ke naam ke badal ke pahile waala naam nai kare sakta hai.',
+ 'renameusersuccess' => 'Sadasya "<nowiki>$1</nowiki>" ke naam badal ke "<nowiki>$2</nowiki>" kar dewa gais hai.',
+ 'renameuser-page-exists' => 'Panna $1 abhi hai aur iske apne se overwrite nai karaa jaae sake hai.',
+ 'renameuser-page-moved' => 'Panna $1 ke naam badal ke $2 kar dewa gais hai.',
+ 'renameuser-page-unmoved' => 'Panna $1 ke naam badal ke $2 nai kare sakaa hai.',
+ 'renameuserlogpage' => 'Sadasya ke naam badle ke log',
+ 'renameuserlogpagetext' => 'Ii ek sadasya ke naam badle ke log hai.',
+ 'renameuserlogentry' => '$1 ke naam badal ke "$2" kar dewa gais hai',
+ 'renameuser-log' => '{{PLURAL:$1|1 badlao|$1 badlao}}. Kaaran: $2',
+ 'renameuser-move-log' => 'Automatically panna ke move kar diya hai jab ki sadasya ke naam "[[User:$1|$1]]" se badal ke "[[User:$2|$2]]" kar dewa gais hai',
+ 'right-renameuser' => 'Sadasya log ke naam badlo',
+);
+
+/** Croatian (Hrvatski)
+ * @author Dalibor Bosits
+ * @author Dnik
+ * @author Ex13
+ * @author SpeedyGonsales
+ * @author Tivek
+ */
+$messages['hr'] = array(
+ 'renameuser' => 'Preimenuj suradnika',
+ 'renameuser-linkoncontribs' => 'preimenuj suradnika',
+ 'renameuser-linkoncontribs-text' => 'Preimenuj ovog suradnika',
+ 'renameuser-desc' => "Dodaje [[Special:Renameuser|posebnu stranicu]] za preimenovanje suradnika (potrebno je ''renameuser'' pravo)",
+ 'renameuserold' => 'TrenutaÄno suradniÄko ime:',
+ 'renameusernew' => 'Novo suradniÄko ime:',
+ 'renameuserreason' => 'Razlog za preimenovanje:',
+ 'renameusermove' => 'Premjesti suradnikove stranice (glavnu, stranicu za razgovor i podstranice, ako postoje) na novo ime',
+ 'renameusersuppress' => 'Ne kreiraj preusmjeravanja na novo ime',
+ 'renameuserreserve' => 'Zadrži staro suradniÄko ime od daljnje upotrebe',
+ 'renameuserwarnings' => 'Upozorenja:',
+ 'renameuserconfirm' => 'Da, preimenuj suradnika',
+ 'renameusersubmit' => 'Potvrdi',
+ 'renameusererrordoesnotexist' => 'Suradnik "<nowiki>$1</nowiki>" ne postoji (suradniÄko ime nije zauzeto).',
+ 'renameusererrorexists' => 'SuradniÄko ime "<nowiki>$1</nowiki>" već postoji',
+ 'renameusererrorinvalid' => 'SuradniÄko ime "<nowiki>$1</nowiki>" nije valjano',
+ 'renameuser-error-request' => 'Pojavio se problem sa zaprimanjem zahtjeva. Molimo, vratite se i probajte ponovo.',
+ 'renameuser-error-same-user' => 'Ne možete preimenovati suradnika u isto kao prethodno.',
+ 'renameusersuccess' => 'Suradnik "<nowiki>$1</nowiki>" je preimenovan u "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'Stranica $1 već postoji i ne može biti prepisana.',
+ 'renameuser-page-moved' => 'Suradnikova stranica $1 je premještena, sad se zove: $2.',
+ 'renameuser-page-unmoved' => 'Stranica $1 ne može biti preimenovana u $2.',
+ 'renameuserlogpage' => 'Evidencija preimenovanja suradnika',
+ 'renameuserlogpagetext' => 'Ovo je evidencija preimenovanja suradniÄkih imena',
+ 'renameuserlogentry' => 'promijenjeno suradniÄko ime $1 u "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 uređivanje|$1 uređivanja}}. Razlog: $2',
+ 'renameuser-move-log' => 'Stranica suradnika je premještena prilikom preimenovanja iz "[[User:$1|$1]]" u "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Preimenovati suradnike',
+ 'renameuser-renamed-notice' => 'Ovaj suradnik je preimenovan.
+Evidencija preimenovanja suradnika je prikazana ispod kao obavijest.',
+);
+
+/** Upper Sorbian (Hornjoserbsce)
+ * @author Dundak
+ * @author Michawiki
+ */
+$messages['hsb'] = array(
+ 'renameuser' => 'Wužiwarja přemjenować',
+ 'renameuser-linkoncontribs' => 'wužiwarja přemjenować',
+ 'renameuser-linkoncontribs-text' => 'Tutoho wužiwarja přemjenować',
+ 'renameuser-desc' => "Wužiwarja přemjenować (požada prawo ''renameuser'')",
+ 'renameuserold' => 'Tuchwilne wužiwarske mjeno:',
+ 'renameusernew' => 'Nowe wužiwarske mjeno:',
+ 'renameuserreason' => 'PÅ™iÄina za pÅ™emjenowanje:',
+ 'renameusermove' => 'Wužiwarsku stronu a wužiwarsku diskusiju (a jeju podstrony) na nowe mjeno přesunyć',
+ 'renameusersuppress' => 'Dalesposrědkowanja k nowemu mjenu njewutworić',
+ 'renameuserreserve' => 'Stare wužiwarske mjeno za přichodne wužiwanje blokować',
+ 'renameuserwarnings' => 'Warnowanja:',
+ 'renameuserconfirm' => 'Haj, wužiwarja přemjenować',
+ 'renameusersubmit' => 'Składować',
+ 'renameusererrordoesnotexist' => 'Wužiwarske mjeno „<nowiki>$1</nowiki>“ njeeksistuje.',
+ 'renameusererrorexists' => 'Wužiwarske mjeno „<nowiki>$1</nowiki>“ hižo eksistuje.',
+ 'renameusererrorinvalid' => 'Wužiwarske mjeno „<nowiki>$1</nowiki>“ njeje płaćiwe.',
+ 'renameuser-error-request' => 'Problem je při přijimanju požadanja wustupił. Prošu dźi wróćo a spytaj hišće raz.',
+ 'renameuser-error-same-user' => 'Njemóžeš wužiwarja do samsneje wěcy kaž prjedy přemjenować.',
+ 'renameusersuccess' => 'Wužiwar „<nowiki>$1</nowiki>“ bu wuspěšnje na „<nowiki>$2</nowiki>“ přemjenowany.',
+ 'renameuser-page-exists' => 'Strona $1 hižo eksistuje a njemóže so awtomatisce přepisować.',
+ 'renameuser-page-moved' => 'Strona $1 bu pod nowy titul $2 přesunjena.',
+ 'renameuser-page-unmoved' => 'Njemóžno stronu $1 pod titul $2 přesunyć.',
+ 'renameuserlogpage' => 'Protokol přemjenowanja wužiwarjow',
+ 'renameuserlogpagetext' => 'Tu protokoluja so wšě přemjenowanja wužiwarjow.',
+ 'renameuserlogentry' => 'je $1 do "$2" přemjenował',
+ 'renameuser-log' => '{{PLURAL:$1|1 zmÄ›na|$1 zmÄ›nje|$1 zmÄ›ny|$1 zmÄ›now}}. PÅ™iÄina: $2',
+ 'renameuser-move-log' => 'Přez přemjenowanje wužiwarja „[[User:$1|$1]]“ na „[[User:$2|$2]]“ awtomatisce přesunjena strona.',
+ 'right-renameuser' => 'Wužiwarjow přemjenować',
+ 'renameuser-renamed-notice' => 'Tutón wužiwar je so přemjenował.
+Protokol přemjenowanjow je deleka jako referenca podaty.',
+);
+
+/** Hungarian (Magyar)
+ * @author Adam78
+ * @author Dani
+ * @author Tgr
+ */
+$messages['hu'] = array(
+ 'renameuser' => 'Szerkesztő átnevezése',
+ 'renameuser-linkoncontribs' => 'felhasználó átnevezése',
+ 'renameuser-linkoncontribs-text' => 'Felhasználó átnevezése',
+ 'renameuser-desc' => "Lehetővé teszi egy felhasználó átnevezését (''renameuser'' jog szükséges)",
+ 'renameuserold' => 'Jelenlegi felhasználónév:',
+ 'renameusernew' => 'Új felhasználónév:',
+ 'renameuserreason' => 'Ãtnevezés oka:',
+ 'renameusermove' => 'Felhasználói- és vitalapok (és azok allapjainak) áthelyezése az új név alá',
+ 'renameusersuppress' => 'Ne készüljön átirányítás az új névre',
+ 'renameuserreserve' => 'Régi név blokkolása a jövőbeli használat megakadályozására',
+ 'renameuserwarnings' => 'Figyelmeztetések:',
+ 'renameuserconfirm' => 'Igen, nevezd át a szerkesztőt',
+ 'renameusersubmit' => 'Elküld',
+ 'renameusererrordoesnotexist' => 'Nem létezik „<nowiki>$1</nowiki>†nevű felhasználó',
+ 'renameusererrorexists' => 'Már létezik „<nowiki>$1</nowiki>†nevű felhasználó',
+ 'renameusererrorinvalid' => 'A felhasználónév („<nowiki>$1</nowiki>â€) érvénytelen',
+ 'renameuser-error-request' => 'Hiba történt a lekérdezés küldése közben. Menj vissza az előző oldalra és próbáld újra.',
+ 'renameuser-error-same-user' => 'Nem nevezhetsz át egy felhasználót a meglévő nevére.',
+ 'renameusersuccess' => '„<nowiki>$1</nowiki>†sikeresen át lett nevezve „<nowiki>$2</nowiki>†névre.',
+ 'renameuser-page-exists' => '$1 már létezik, és nem lehet automatikusan felülírni.',
+ 'renameuser-page-moved' => '$1 át lett nevezve $2 névre',
+ 'renameuser-page-unmoved' => '$1-t nem sikerült $2 névre nevezi',
+ 'renameuserlogpage' => 'Felhasználóátnevezési napló',
+ 'renameuserlogpagetext' => 'Ez a felhasználói nevek változtatásának naplója.',
+ 'renameuserlogentry' => 'átnevezte $1 azonosítóját (az új név: „$2â€)',
+ 'renameuser-log' => '$1 szerkesztése van. Indoklás: $2',
+ 'renameuser-move-log' => '„[[User:$1|$1]]†„[[User:$2|$2]]†névre való átnevezése közben automatikusan átnevezett oldal',
+ 'right-renameuser' => 'felhasználók átnevezése',
+ 'renameuser-renamed-notice' => 'Ezt a szerkesztőt átnevezték.
+Alább látható a szerkesztőátnevezési napló tájékoztatásként.',
+);
+
+/** Interlingua (Interlingua)
+ * @author McDutchie
+ */
+$messages['ia'] = array(
+ 'renameuser' => 'Renominar usator',
+ 'renameuser-linkoncontribs' => 'renominar usator',
+ 'renameuser-linkoncontribs-text' => 'Renominar iste usator',
+ 'renameuser-desc' => "Adde un [[Special:Renameuser|pagina special]] pro renominar un usator (require le privilegio ''renameuser'')",
+ 'renameuserold' => 'Nomine de usator actual:',
+ 'renameusernew' => 'Nove nomine de usator:',
+ 'renameuserreason' => 'Motivo del renomination:',
+ 'renameusermove' => 'Renominar etiam le paginas de usator e de discussion (e lor subpaginas) verso le nove nomine',
+ 'renameusersuppress' => 'Non crear redirectiones al nove nomine',
+ 'renameuserreserve' => 'Blocar le ancian nomine de usator de esser usate in le futuro',
+ 'renameuserwarnings' => 'Advertimentos:',
+ 'renameuserconfirm' => 'Si, renomina le usator',
+ 'renameusersubmit' => 'Submitter',
+ 'renameusererrordoesnotexist' => 'Le usator "<nowiki>$1</nowiki>" non existe.',
+ 'renameusererrorexists' => 'Le usator ""<nowiki>$1</nowiki>"" existe ja.',
+ 'renameusererrorinvalid' => 'Le nomine de usator "<nowiki>$1</nowiki>" es invalide.',
+ 'renameuser-error-request' => 'Il habeva un problema con le reception del requesta.
+Per favor retorna e reproba.',
+ 'renameuser-error-same-user' => 'Tu non pote renominar un usator al mesme nomine.',
+ 'renameusersuccess' => 'Le usator "<nowiki>$1</nowiki>" ha essite renominate a "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'Le pagina $1 existe ja e non pote esser automaticamente superscribite.',
+ 'renameuser-page-moved' => 'Le pagina $1 ha essite renominate a $2.',
+ 'renameuser-page-unmoved' => 'Le pagina $1 non poteva esser renominate a $2.',
+ 'renameuserlogpage' => 'Registro de renominationes de usatores',
+ 'renameuserlogpagetext' => 'Isto es un registro de cambiamentos de nomines de usator.',
+ 'renameuserlogentry' => 'renominava $1 verso "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 modification|$1 modificationes}}. Motivo: $2',
+ 'renameuser-move-log' => 'Le pagina ha essite automaticamente renominate con le renomination del usator "[[User:$1|$1]]" a "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Renominar usatores',
+ 'renameuser-renamed-notice' => 'Iste usator ha essite renominate.
+Le registro de renominationes es providite ci infra pro referentia.',
+);
+
+/** Indonesian (Bahasa Indonesia)
+ * @author Bennylin
+ * @author Irwangatot
+ * @author IvanLanin
+ * @author Rex
+ */
+$messages['id'] = array(
+ 'renameuser' => 'Penggantian nama pengguna',
+ 'renameuser-linkoncontribs' => 'mengubah nama pengguna',
+ 'renameuser-linkoncontribs-text' => 'Ubah nama pengguna ini',
+ 'renameuser-desc' => "Mengganti nama pengguna (perlu hak akses ''renameuser'')",
+ 'renameuserold' => 'Nama sekarang:',
+ 'renameusernew' => 'Nama baru:',
+ 'renameuserreason' => 'Alasan penggantian nama:',
+ 'renameusermove' => 'Pindahkan halaman pengguna dan pembicaraannya (berikut subhalamannya) ke nama baru',
+ 'renameusersuppress' => 'Jangan membuat pengalihan untuk nama baru',
+ 'renameuserreserve' => 'Cadangkan nama pengguna lama sehingga tidak dapat digunakan lagi',
+ 'renameuserwarnings' => 'Peringatan:',
+ 'renameuserconfirm' => 'Ya, ganti nama pengguna tersebut',
+ 'renameusersubmit' => 'Kirim',
+ 'renameusererrordoesnotexist' => 'Pengguna "<nowiki>$1</nowiki>" tidak ada',
+ 'renameusererrorexists' => 'Pengguna "<nowiki>$1</nowiki>" telah ada',
+ 'renameusererrorinvalid' => 'Nama pengguna "<nowiki>$1</nowiki>" tidak sah',
+ 'renameuser-error-request' => 'Ada masalah dalam pemrosesan permintaan. Silakan kembali dan coba lagi.',
+ 'renameuser-error-same-user' => 'Anda tak dapat mengganti nama pengguna sama seperti asalnya.',
+ 'renameusersuccess' => 'Pengguna "<nowiki>$1</nowiki>" telah diganti namanya menjadi "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'Halaman $1 telah ada dan tidak dapat ditimpa secara otomatis.',
+ 'renameuser-page-moved' => 'Halaman $1 telah dipindah ke $2.',
+ 'renameuser-page-unmoved' => 'Halaman $1 tidak dapat dipindah ke $2.',
+ 'renameuserlogpage' => 'Log penggantian nama pengguna',
+ 'renameuserlogpagetext' => 'Di bawah ini adalah log penggantian nama pengguna',
+ 'renameuserlogentry' => 'telah mengganti nama $1 menjadi "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 suntingan|$1 suntingan}}. Alasan: $2',
+ 'renameuser-move-log' => 'Secara otomatis memindahkan halaman sewaktu mengganti nama pengguna "[[User:$1|$1]]" menjadi "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Mengganti nama pengguna',
+ 'renameuser-renamed-notice' => 'Penguna ini telah berganti nama.
+Log pergantian nama disediakan di bawah untuk referensi.',
+);
+
+/** Igbo (Igbo)
+ * @author Ukabia
+ */
+$messages['ig'] = array(
+ 'renameuserwarnings' => 'Ngéntị:',
+ 'renameusersubmit' => 'Dànyé',
+ 'renameuser-page-moved' => 'Ihü $1 a páfùrù gá $2.',
+ 'renameuser-page-unmoved' => 'Ihü $1 énweghịkị páfù gá $2.',
+);
+
+/** Ido (Ido)
+ * @author Malafaya
+ * @author Wyvernoid
+ */
+$messages['io'] = array(
+ 'renameuser' => 'Rinomar uzanto',
+ 'renameuserold' => 'Aktuala uzantonomo:',
+ 'renameusernew' => 'Nova uzantonomo:',
+ 'renameuserwarnings' => 'Averti:',
+ 'renameuserconfirm' => "Yes, rinomez l'uzanto",
+ 'renameusererrordoesnotexist' => 'L\'uzanto "<nowiki>$1</nowiki>" ne existas.',
+ 'renameusererrorexists' => 'L\'uzanto "<nowiki>$1</nowiki>" ja existas.',
+ 'renameusererrorinvalid' => 'L\'uzantonomo "<nowiki>$1</nowiki>" esas ne-valida.',
+ 'renameuser-error-same-user' => 'Vu ne povas renomar uzanto ad la sama nomo.',
+ 'renameusersuccess' => 'La uzanto "<nowiki>$1</nowiki>" rinomesis "<nowiki>$2</nowiki>".',
+ 'renameuser-page-moved' => 'La pagino $1 movesis a $2.',
+ 'renameuser-page-unmoved' => 'On ne povis movar la pagino $1 a $2.',
+ 'renameuserlogpage' => 'Registro di uzanto-rinomizuri',
+ 'renameuserlogpagetext' => 'Ito es registro di uzantonomala chanji.',
+ 'renameuserlogentry' => 'rinomis $1 por "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 redakto|$1 redakti}}. Motivo: $2',
+ 'right-renameuser' => 'Rinomar uzanti',
+);
+
+/** Icelandic (Ãslenska)
+ * @author Cessator
+ * @author S.Örvarr.S
+ * @author Spacebirdy
+ * @author Ævar Arnfjörð Bjarmason
+ * @author לערי ריינה×רט
+ */
+$messages['is'] = array(
+ 'renameuser' => 'Breyta notandanafni',
+ 'renameuserold' => 'Núverandi notandanafn:',
+ 'renameusernew' => 'Nýja notandanafnið:',
+ 'renameuserreason' => 'Ãstæða:',
+ 'renameusersubmit' => 'Senda',
+ 'renameusererrordoesnotexist' => 'Notandinn „<nowiki>$1</nowiki>“ er ekki til',
+ 'renameusererrorexists' => 'Notandinn „<nowiki>$1</nowiki>“ er nú þegar til',
+ 'renameusererrorinvalid' => 'Notandanafnið „<nowiki>$1</nowiki>“ er ógilt',
+ 'renameuser-page-exists' => 'Síða sem heitir $1 er nú þegar til og það er ekki hægt að búa til nýja grein með sama heiti.',
+ 'renameuser-page-moved' => 'Síðan $1 hefur verið færð á $2.',
+ 'renameuser-page-unmoved' => 'Ekki var hægt að færa síðuna $1 á $2.',
+ 'renameuserlogpage' => 'Skrá yfir nafnabreytingar notenda',
+ 'renameuserlogpagetext' => 'Þetta er skrá yfir nýlegar breytingar á notendanöfnum.',
+ 'renameuser-log' => '{{PLURAL:$1|1 breyting|$1 breytingar}}. Ãstæða: $2',
+);
+
+/** Italian (Italiano)
+ * @author .anaconda
+ * @author BrokenArrow
+ * @author Darth Kule
+ * @author Gianfranco
+ * @author HalphaZ
+ * @author Melos
+ * @author Nemo bis
+ */
+$messages['it'] = array(
+ 'renameuser' => 'Rinomina utente',
+ 'renameuser-linkoncontribs' => 'rinomina utente',
+ 'renameuser-linkoncontribs-text' => 'Rinomina questo utente',
+ 'renameuser-desc' => "Aggiunge una [[Special:Renameuser|pagina speciale]] per rinominare un utente (richiede i diritti di ''renameuser'')",
+ 'renameuserold' => 'Nome utente attuale:',
+ 'renameusernew' => 'Nuovo nome utente:',
+ 'renameuserreason' => 'Motivo del cambio nome:',
+ 'renameusermove' => 'Rinomina anche la pagina utente, la pagina di discussione e le relative sottopagine',
+ 'renameusersuppress' => 'Non creare redirect al nuovo nome',
+ 'renameuserreserve' => "Impedisci l'utilizzo del vecchio nome in futuro",
+ 'renameuserwarnings' => 'Avvisi:',
+ 'renameuserconfirm' => 'Sì, rinomina questo utente',
+ 'renameusersubmit' => 'Invia',
+ 'renameusererrordoesnotexist' => 'L\'utente "<nowiki>$1</nowiki>" non esiste',
+ 'renameusererrorexists' => 'L\'utente "<nowiki>$1</nowiki>" esiste già',
+ 'renameusererrorinvalid' => 'Il nome utente "<nowiki>$1</nowiki>" non è valido',
+ 'renameuser-error-request' => 'Si è verificato un problema nella ricezione della richiesta. Tornare indietro e riprovare.',
+ 'renameuser-error-same-user' => 'Non è possibile rinominare un utente allo stesso nome che aveva già.',
+ 'renameusersuccess' => 'L\'utente "<nowiki>$1</nowiki>" è stato rinominato in "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'La pagina $1 esiste già; impossibile sovrascriverla automaticamente.',
+ 'renameuser-page-moved' => 'La pagina $1 è stata spostata a $2.',
+ 'renameuser-page-unmoved' => 'Impossibile spostare la pagina $1 a $2.',
+ 'renameuserlogpage' => 'Utenti rinominati',
+ 'renameuserlogpagetext' => 'Di seguito sono elencate le modifiche ai nomi utente.',
+ 'renameuserlogentry' => 'ha rinominato $1 in "$2"',
+ 'renameuser-log' => 'Che ha {{PLURAL:$1|un contributo|$1 contributi}}. Motivo: $2',
+ 'renameuser-move-log' => 'Spostamento automatico della pagina - utente rinominato da "[[User:$1|$1]]" a "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Rinomina gli utenti',
+ 'renameuser-renamed-notice' => 'Questo utente è stato rinominato.
+Il registro delle rinomine è riportato di seguito per informazione.',
+);
+
+/** Japanese (日本語)
+ * @author Aotake
+ * @author Broad-Sky
+ * @author Fryed-peach
+ * @author Hosiryuhosi
+ * @author Marine-Blue
+ * @author Ohgi
+ * @author Suisui
+ * @author é’å­å®ˆæ­Œ
+ */
+$messages['ja'] = array(
+ 'renameuser' => '利用者åã®å¤‰æ›´',
+ 'renameuser-linkoncontribs' => '利用者å変更',
+ 'renameuser-linkoncontribs-text' => 'ã“ã®åˆ©ç”¨è€…ã®åå‰ã‚’変更ã™ã‚‹',
+ 'renameuser-desc' => '利用者å変更ã®ãŸã‚ã®[[Special:Renameuser|特別ページ]]を追加ã™ã‚‹(renameuser権é™ãŒå¿…è¦)',
+ 'renameuserold' => 'ç¾åœ¨ã®åˆ©ç”¨è€…å:',
+ 'renameusernew' => 'æ–°ã—ã„利用者å:',
+ 'renameuserreason' => '変更ç†ç”±:',
+ 'renameusermove' => '利用者ページã¨ä¼šè©±ãƒšãƒ¼ã‚¸(ãŠã‚ˆã³ãれらã®ã‚µãƒ–ページ)ã‚’æ–°ã—ã„åå‰ã«ç§»å‹•ã™ã‚‹',
+ 'renameusersuppress' => 'æ–°ã—ã„åå‰ã¸ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã‚’作æˆã—ãªã„',
+ 'renameuserreserve' => '旧利用者åã®ä»Šå¾Œã®ä½¿ç”¨ã‚’ブロックã™ã‚‹',
+ 'renameuserwarnings' => '警告:',
+ 'renameuserconfirm' => 'ã¯ã„ã€åˆ©ç”¨è€…åを変更ã—ã¾ã™',
+ 'renameusersubmit' => '変更',
+ 'renameusererrordoesnotexist' => '利用者「<nowiki>$1</nowiki>ã€ã¯å­˜åœ¨ã—ã¾ã›ã‚“。',
+ 'renameusererrorexists' => '利用者「<nowiki>$1</nowiki>ã€ã¯æ—¢ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚',
+ 'renameusererrorinvalid' => '利用者å「<nowiki>$1</nowiki>ã€ã¯ç„¡åŠ¹ãªå€¤ã§ã™ã€‚',
+ 'renameuser-error-request' => 'è¦æ±‚を正常ã«å—ã‘付ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚戻ã£ã¦ã‹ã‚‰å†åº¦ãŠè©¦ã—ãã ã•ã„。',
+ 'renameuser-error-same-user' => 'ç¾åœ¨ã¨åŒã˜åˆ©ç”¨è€…åã«å¤‰æ›´ã™ã‚‹ã“ã¨ã¯å‡ºæ¥ã¾ã›ã‚“。',
+ 'renameusersuccess' => '利用者「<nowiki>$1</nowiki>ã€ã‚’「<nowiki>$2</nowiki>ã€ã«å¤‰æ›´ã—ã¾ã—ãŸã€‚',
+ 'renameuser-page-exists' => '$1 ãŒæ—¢ã«å­˜åœ¨ã—ã¦ã„ã‚‹ãŸã‚ã€è‡ªå‹•ã§ä¸Šæ›¸ãã§ãã¾ã›ã‚“ã§ã—ãŸã€‚',
+ 'renameuser-page-moved' => '$1 ã‚’ $2 ã«ç§»å‹•ã—ã¾ã—ãŸã€‚',
+ 'renameuser-page-unmoved' => '$1 ã‚’ $2 ã«ç§»å‹•ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚',
+ 'renameuserlogpage' => '利用者å変更記録',
+ 'renameuserlogpagetext' => 'ã“ã‚Œã¯ã€åˆ©ç”¨è€…åã®å¤‰æ›´ã‚’記録ã—ãŸã‚‚ã®ã§ã™ã€‚',
+ 'renameuserlogentry' => '$1 を「$2ã€ã¸åˆ©ç”¨è€…å変更ã—ã¾ã—ãŸ',
+ 'renameuser-log' => '{{PLURAL:$1|投稿数}}$1回。ç†ç”±: $2',
+ 'renameuser-move-log' => 'åå‰ã®å¤‰æ›´ã¨å…±ã«ã€Œ[[User:$1|$1]]ã€ã‚’「[[User:$2|$2]]ã€ã¸è‡ªå‹•çš„ã«ç§»å‹•ã—ã¾ã—ãŸ',
+ 'right-renameuser' => '利用者å変更',
+ 'renameuser-renamed-notice' => 'ã“ã®åˆ©ç”¨è€…ã¯æ”¹åã—ã¾ã—ãŸã€‚å‚考ã®ãŸã‚ã€æ”¹å記録を以下ã«è¼‰ã›ã¾ã™ã€‚',
+);
+
+/** Jutish (Jysk)
+ * @author Huslåke
+ * @author Ælsån
+ */
+$messages['jut'] = array(
+ 'renameuser' => 'Gæf æ bruger en ny navn',
+ 'renameuser-desc' => "Gæf en bruger en ny navn (''renameuser'' regt er nøteg)",
+ 'renameuserold' => 'Nuværende brugernavn:',
+ 'renameusernew' => 'Ny brugernavn:',
+ 'renameuserreason' => "Før hvat dett'er dun:",
+ 'renameusermove' => 'Flyt bruger og diskusje sider (og deres substrøk) til ny navn',
+ 'renameusersubmit' => 'GÃ¥ til',
+ 'renameusererrordoesnotexist' => 'Æ bruger "<nowiki>$1</nowiki>" bestä ekke.',
+ 'renameusererrorexists' => 'Æ bruger "<nowiki>$1</nowiki>" er ål.',
+ 'renameusererrorinvalid' => 'Æ brugernavn "<nowiki>$1</nowiki>" er ogyldegt.',
+ 'renameuser-error-request' => 'Her har en pråblæm ve enkriige der anfråge. Gå hen og pråbær nurmål.',
+ 'renameuser-error-same-user' => 'Du kenst ekke hernåm æ bruger til æselbste nåm als dafør.',
+ 'renameusersuccess' => 'Æ bruger "<nowiki>$1</nowiki>" er hernåmt til "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'Æ pæge $1 er ål og ken ekke åtåmatisk åverflyttet være.',
+ 'renameuser-page-moved' => 'Æ pæge $1 er flyttet til $2.',
+ 'renameuser-page-unmoved' => 'Æ pæge $1 kon ekke flyttet være til $2.',
+ 'renameuserlogpage' => 'Bruger hernåm log',
+ 'renameuserlogpagetext' => "Dett'er en log der ændrenger til brugernavner",
+ 'renameuserlogentry' => 'har hernåmt $1 til "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|en redigærenge|$1 redigærenger}}. Resån: $2',
+ 'renameuser-move-log' => 'Åtåmatisk flyttet pæge hviil hernåm der bruger "[[User:$1|$1]]" til "[[User:$2|$2]]"',
+);
+
+/** Javanese (Basa Jawa)
+ * @author Meursault2004
+ * @author Pras
+ */
+$messages['jv'] = array(
+ 'renameuser' => 'Ngganti jeneng panganggo',
+ 'renameuser-desc' => "Ngganti jeneng panganggo (perlu hak aksès ''renameuser'')",
+ 'renameuserold' => 'Jeneng panganggo saiki:',
+ 'renameusernew' => 'Jeneng panganggo anyar:',
+ 'renameuserreason' => 'Alesan ganti jeneng:',
+ 'renameusermove' => 'Mindhah kaca panganggo lan kaca dhiskusiné (sarta subkaca-kacané) menyang jeneng anyar',
+ 'renameuserreserve' => 'Blokir utawa cadhangaké jeneng panganggo lawas supaya ora bisa dianggo manèh',
+ 'renameuserwarnings' => 'Pènget:',
+ 'renameuserconfirm' => 'Ya, ganti jeneng panganggo kasebut',
+ 'renameusersubmit' => 'Kirim',
+ 'renameusererrordoesnotexist' => 'Panganggo "<nowiki>$1</nowiki>" ora ana.',
+ 'renameusererrorexists' => 'Panganggo "<nowiki>$1</nowiki>" wis ana.',
+ 'renameusererrorinvalid' => 'Jeneng panganggo "<nowiki>$1</nowiki>" ora absah',
+ 'renameuser-error-request' => 'Ana masalah nalika nampa panyuwunan panjenengan.
+Mangga balènana lan nyoba manèh.',
+ 'renameuser-error-same-user' => 'Panjenengan ora bisa ngganti jeneng panganggo dadi kaya jeneng asalé.',
+ 'renameusersuccess' => 'Panganggo "<nowiki>$1</nowiki>" wis diganti jenengé dadi "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'Kaca $1 wis ana lan ora bisa ditimpa sacara otomatis.',
+ 'renameuser-page-moved' => 'Kaca $1 wis dialihaké menyang $2.',
+ 'renameuser-page-unmoved' => 'Kaca $1 ora bisa dialihaké menyang $2.',
+ 'renameuserlogpage' => 'Log ganti jeneng panganggo',
+ 'renameuserlogpagetext' => 'Iki log owah-owahan jeneng panganggo',
+ 'renameuserlogentry' => 'Ganti jeneng $1 dadi "$2"',
+ 'renameuser-log' => 'sing wis duwé $1 suntingan. Alesan: $2',
+ 'renameuser-move-log' => 'Sacara otomatis mindhah kaca nalika ngganti jeneng panganggo "[[User:$1|$1]]" dadi "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Ganti jeneng panganggo-panganggo',
+);
+
+/** Georgian (ქáƒáƒ áƒ—ული)
+ * @author BRUTE
+ * @author Dawid Deutschland
+ * @author Malafaya
+ * @author Sopho
+ */
+$messages['ka'] = array(
+ 'renameuser' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლის გáƒáƒ›áƒáƒªáƒ•áƒšáƒ',
+ 'renameuser-linkoncontribs' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლის გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვáƒ',
+ 'renameuser-linkoncontribs-text' => 'áƒáƒ› მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლის გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვáƒ',
+ 'renameuserold' => 'áƒáƒ›áƒŸáƒáƒ›áƒ˜áƒœáƒ“ელი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი:',
+ 'renameusernew' => 'áƒáƒ®áƒáƒšáƒ˜ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი:',
+ 'renameuserreason' => 'სáƒáƒ®áƒ”ლის შეცვლის მიზეზი:',
+ 'renameusermove' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლისრდრგáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ˜áƒ¡ გვერდების (დრმáƒáƒ—ი დáƒáƒ¥áƒ•áƒ”მდებáƒáƒ áƒ”ბული გვერდების) გáƒáƒ“áƒáƒ¢áƒáƒœáƒ áƒáƒ®áƒáƒš დáƒáƒ¡áƒáƒ®áƒ”ლებáƒáƒ–ე',
+ 'renameusersuppress' => 'áƒáƒ  გáƒáƒ“áƒáƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—áƒáƒ— áƒáƒ®áƒáƒš სáƒáƒ®áƒ”ლზე',
+ 'renameuserreserve' => 'ძველი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლის სáƒáƒ›áƒáƒ›áƒáƒ•áƒšáƒ გáƒáƒ›áƒáƒ§áƒ”ნების áƒáƒ™áƒ áƒ«áƒáƒšáƒ•áƒ',
+ 'renameuserwarnings' => 'გáƒáƒ¤áƒ áƒ—ხილებები:',
+ 'renameuserconfirm' => 'დიáƒáƒ®, მსურს სáƒáƒ®áƒ”ლის გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვáƒ',
+ 'renameusersubmit' => 'გáƒáƒ’ზáƒáƒ•áƒœáƒ',
+ 'renameusererrordoesnotexist' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი "<nowiki>$1</nowiki>" áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს',
+ 'renameusererrorexists' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი "<nowiki>$1</nowiki>" უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს',
+ 'renameusererrorinvalid' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი "<nowiki>$1</nowiki>" áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ',
+ 'renameuser-error-request' => 'მáƒáƒ—ხáƒáƒ•áƒœáƒ˜áƒ¡ მიღებáƒáƒ¡áƒ—áƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბით რáƒáƒ¦áƒáƒª პრáƒáƒ‘ლემáƒáƒ. გთხáƒáƒ•áƒ—, ხელáƒáƒ®áƒšáƒ სცáƒáƒ“ეთ.',
+ 'renameuser-error-same-user' => 'თქვენ áƒáƒ  შეგიძლიáƒáƒ— დáƒáƒáƒ áƒ¥áƒ•áƒáƒ— მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს იგივე სáƒáƒ®áƒ”ლი, რáƒáƒª ერქვრწინáƒáƒ—.',
+ 'renameusersuccess' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი - "<nowiki>$1</nowiki>", შეიცვáƒáƒšáƒ "<nowiki>$2</nowiki>"-ით',
+ 'renameuser-page-exists' => 'გვერდი $1 უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს დრმისი áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ შენáƒáƒªáƒ•áƒšáƒ”ბრშეუძლებელიáƒ.',
+ 'renameuser-page-moved' => 'გვერდი $1 გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒšáƒ˜áƒ $2-ზე.',
+ 'renameuser-page-unmoved' => 'áƒáƒ  მáƒáƒ®áƒ”რხდრგვერდის $1 გáƒáƒ“áƒáƒ¢áƒáƒœáƒ $2-ზე.',
+ 'renameuserlogpage' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლის გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვის რეგისტრáƒáƒªáƒ˜áƒ˜áƒ¡ ჟურნáƒáƒšáƒ˜',
+ 'renameuserlogpagetext' => 'ეს áƒáƒ áƒ˜áƒ¡ ჟურნáƒáƒšáƒ˜, სáƒáƒ“áƒáƒª áƒáƒ¦áƒ áƒ˜áƒªáƒ®áƒ£áƒšáƒ˜áƒ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლთრცვლილებები',
+ 'renameuserlogentry' => 'სáƒáƒ®áƒ”ლი გáƒáƒ“áƒáƒ”რქვრ$1-ს "$2"-ზე',
+ 'renameuser-log' => '$1 რედáƒáƒ¥áƒªáƒ˜áƒ. მიზეზი: $2',
+ 'renameuser-move-log' => 'áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ იქნრგáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒšáƒ˜ გვერდი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის "[[User:$1|$1]]" სáƒáƒ®áƒ”ლის შეცვლისáƒáƒ¡ "[[User:$2|$2]]-ით"',
+ 'right-renameuser' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლების სáƒáƒ®áƒ”ლის გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვáƒ',
+ 'renameuser-renamed-notice' => 'áƒáƒ› მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს სáƒáƒ®áƒ”ლი გáƒáƒ“áƒáƒ”რქვáƒ.
+ქვემáƒáƒ— მáƒáƒ§áƒ•áƒáƒœáƒ˜áƒšáƒ˜áƒ სáƒáƒ®áƒ”ლის გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვის ჟურნáƒáƒšáƒ˜.',
+);
+
+/** Kazakh (Arabic script) (‫قازاقشا (تٴوتە)‬) */
+$messages['kk-arab'] = array(
+ 'renameuser' => 'قاتىسۋشىنى قايتا اتاۋ',
+ 'renameuserold' => 'اعىمداعى قاتىسۋشى اتى:',
+ 'renameusernew' => 'جاڭا قاتىسۋشى اتى:',
+ 'renameuserreason' => 'قايتا اتاۋ سەبەبى:',
+ 'renameusermove' => 'قاتىسۋشىنىڭ جەكە جانە تالقىلاۋ بەتتەرىن (جانە دە ولاردىڭ تومەنگى بەتتەرىن) جاڭا اتاۋعا جىلجىتۋ',
+ 'renameusersubmit' => 'جىبەرۋ',
+ 'renameusererrordoesnotexist' => '«<nowiki>$1» دەگەن قاتىسۋشى جوق',
+ 'renameusererrorexists' => '«$1» دەگەن قاتىسۋشى بار تۇگە',
+ 'renameusererrorinvalid' => '«$1» قاتىسۋشى اتى جارامسىز',
+ 'renameusersuccess' => '«$1» دەگەن قاتىسۋشى اتى «$2» دەگەنگە اۋىستىرىلدى',
+ 'renameuser-page-exists' => '$1 دەگەن بەت بار تۇگە, جانە وزدىك تۇردە ونىڭ ۇستىنە ەشتەڭە جازىلمايدى.',
+ 'renameuser-page-moved' => '$1 دەگەن بەت $2 دەگەن بەتكە جىلجىتىلدى.',
+ 'renameuser-page-unmoved' => '$1 دەگەن بەت $2 دەگەن بەتكە جىلجىتىلمادى.',
+ 'renameuserlogpage' => 'قاتىسۋشىنى قايتا اتاۋ جۋرنالى',
+ 'renameuserlogpagetext' => 'بۇل قاتىسۋشى اتىنداعى وزگەرىستەر جۋرنالى',
+ 'renameuserlogentry' => '$1 اتاۋىن $2 دەگەنگە وزگەرتتى',
+ 'renameuser-log' => '$1 تۇزەتۋى بار. $2',
+ 'renameuser-move-log' => '«[[User:$1|$1]]» دەگەن قاتىسۋشى اتىن «[[User:$2|$2]]» دەگەنگە اۋىسقاندا بەت وزدىك تۇردە جىلجىتىلدى',
+);
+
+/** Kazakh (Cyrillic) (Қазақша (Cyrillic)) */
+$messages['kk-cyrl'] = array(
+ 'renameuser' => 'ҚатыÑушыны қайта атау',
+ 'renameuserold' => 'Ðғымдағы қатыÑушы аты:',
+ 'renameusernew' => 'Жаңа қатыÑушы аты:',
+ 'renameuserreason' => 'Қайта атау Ñебебі:',
+ 'renameusermove' => 'ҚатыÑушының жеке және талқылау беттерін (және де олардың төменгі беттерін) жаңа атауға жылжыту',
+ 'renameusersubmit' => 'Жіберу',
+ 'renameusererrordoesnotexist' => '«<nowiki>$1</nowiki>» деген қатыÑушы жоқ',
+ 'renameusererrorexists' => '«<nowiki>$1</nowiki>» деген қатыÑушы бар түге',
+ 'renameusererrorinvalid' => '«<nowiki>$1</nowiki>» қатыÑушы аты жарамÑыз',
+ 'renameusersuccess' => '«<nowiki>$1</nowiki>» деген қатыÑушы аты «<nowiki>$2</nowiki>» дегенге ауыÑтырылды',
+ 'renameuser-page-exists' => '$1 деген бет бар түге, және өздік түрде оның Ò¯Ñтіне ештеңе жазылмайды.',
+ 'renameuser-page-moved' => '$1 деген бет $2 деген бетке жылжытылды.',
+ 'renameuser-page-unmoved' => '$1 деген бет $2 деген бетке жылжытылмады.',
+ 'renameuserlogpage' => 'ҚатыÑушыны қайта атау журналы',
+ 'renameuserlogpagetext' => 'Бұл қатыÑушы атындағы өзгеріÑтер журналы',
+ 'renameuserlogentry' => '$1 атауын «$2» дегенге өзгертті',
+ 'renameuser-log' => '$1 түзетуі бар. $2',
+ 'renameuser-move-log' => '«[[User:$1|$1]]» деген қатыÑушы атын «[[User:$2|$2]]» дегенге ауыÑқанда бет өздік түрде жылжытылды',
+);
+
+/** Kazakh (Latin) (Қазақша (Latin)) */
+$messages['kk-latn'] = array(
+ 'renameuser' => 'Qatıswşını qaýta ataw',
+ 'renameuserold' => 'Ağımdağı qatıswşı atı:',
+ 'renameusernew' => 'Jaña qatıswşı atı:',
+ 'renameuserreason' => 'Qaýta ataw sebebi:',
+ 'renameusermove' => 'Qatıswşınıñ jeke jäne talqılaw betterin (jäne de olardıñ tömengi betterin) jaña atawğa jıljıtw',
+ 'renameusersubmit' => 'Jiberw',
+ 'renameusererrordoesnotexist' => '«<nowiki>$1</nowiki>» degen qatıswşı joq',
+ 'renameusererrorexists' => '«<nowiki>$1</nowiki>» degen qatıswşı bar tüge',
+ 'renameusererrorinvalid' => '«<nowiki>$1</nowiki>» qatıswşı atı jaramsız',
+ 'renameusersuccess' => '«<nowiki>$1</nowiki>» degen qatıswşı atı «<nowiki>$2</nowiki>» degenge awıstırıldı',
+ 'renameuser-page-exists' => '$1 degen bet bar tüge, jäne özdik türde onıñ üstine eşteñe jazılmaýdı.',
+ 'renameuser-page-moved' => '$1 degen bet $2 degen betke jıljıtıldı.',
+ 'renameuser-page-unmoved' => '$1 degen bet $2 degen betke jıljıtılmadı.',
+ 'renameuserlogpage' => 'Qatıswşını qaýta ataw jwrnalı',
+ 'renameuserlogpagetext' => 'Bul qatıswşı atındağı özgerister jwrnalı',
+ 'renameuserlogentry' => '$1 atawın «$2» degenge özgertti',
+ 'renameuser-log' => '$1 tüzetwi bar. $2',
+ 'renameuser-move-log' => '«[[User:$1|$1]]» degen qatıswşı atın «[[User:$2|$2]]» degenge awısqanda bet özdik türde jıljıtıldı',
+);
+
+/** Khmer (ភាសាážáŸ’មែរ)
+ * @author Chhorran
+ * @author Lovekhmer
+ * @author Thearith
+ * @author គីមស៊្រុន
+ */
+$messages['km'] = array(
+ 'renameuser' => 'ប្ážáž¼ážšáž¢ážáŸ’ážáž“ាម',
+ 'renameuser-linkoncontribs' => 'ប្ážáž¼ážšážˆáŸ’មោះអ្នកប្រើប្រាស់',
+ 'renameuser-linkoncontribs-text' => 'ប្ដូរឈ្មោះអ្នកប្រើប្រាស់នáŸáŸ‡',
+ 'renameuser-desc' => "ប្ážáž¼ážšážˆáŸ’មោះអ្នកប្រើប្រាស់(ážáŸ’រូវការសិទ្ធិ ''ប្ážáž¼ážšážˆáŸ’មោះអ្នកប្រើប្រាស់'')",
+ 'renameuserold' => 'ឈ្មោះអ្នកប្រើប្រាស់បច្ចុប្បន្ន ៖',
+ 'renameusernew' => 'ឈ្មោះអ្នកប្រើប្រាស់ážáŸ’មី៖',
+ 'renameuserreason' => 'មូលហáŸážáž»áŸ–',
+ 'renameusermove' => 'ប្ážáž¼ážšáž‘ីážáž¶áŸ†áž„ទំពáŸážšáž¢áŸ’នកប្រើប្រាស់និងទំពáŸážšáž–ិភាក្សា(រួមទាំងទំពáŸážšážšáž„ផងដែរ)ទៅឈ្មោះážáŸ’មី',
+ 'renameusersuppress' => 'កុំបង្កើážáž€áž¶ážšáž”ញ្ជូនបន្ážáž‘ៅឈ្មោះážáŸ’មី',
+ 'renameuserreserve' => 'ហាមឃាážáŸ‹áž‚ណនីចាស់ពីការប្រើប្រាស់នាពáŸáž›áž¢áž“ាគáž',
+ 'renameuserwarnings' => 'បម្រាម​៖',
+ 'renameuserconfirm' => 'បាទ/ចាស៎ សូមប្ážáž¼ážšážˆáŸ’មោះអ្នកប្រើប្រាស់នáŸáŸ‡',
+ 'renameusersubmit' => 'ដាក់ស្នើ',
+ 'renameusererrordoesnotexist' => 'អ្នកប្រើប្រាស់ "<nowiki>$1</nowiki>" មិនមាន ។',
+ 'renameusererrorexists' => 'អ្នកប្រើប្រាស់ "<nowiki>$1</nowiki>" មានហើយ ។',
+ 'renameusererrorinvalid' => 'ឈ្មោះអ្នកប្រើប្រាស់ "<nowiki>$1</nowiki>" មិនážáŸ’រឹមážáŸ’រូវ ។',
+ 'renameuser-error-request' => 'មានបញ្ហា​ចំពោះការទទួលសំណើ​។ សូមážáŸ’រឡប់ក្រោយ ហើយព្យាយាមម្ážáž„ទៀážâ€‹áŸ”',
+ 'renameuser-error-same-user' => 'អ្នកមិនអាចប្ážáž¼ážšážˆáŸ’មោះអ្នកប្រើប្រាស់ទៅជាឈ្មោះដូចមុនបានទáŸáŸ”',
+ 'renameusersuccess' => 'អ្នកប្រើប្រាស់ "<nowiki>$1</nowiki>" ážáŸ’រូវបានប្ážáž¼ážšážˆáŸ’មោះទៅ "<nowiki>$2</nowiki>"។',
+ 'renameuser-page-exists' => 'ទំពáŸážš $1 មានហើយ មិនអាចសរសáŸážšáž‡áž¶áž“់ពីលើដោយស្វáŸáž™áž”្រវážáŸ’ážáž·áž‘áŸáŸ”',
+ 'renameuser-page-moved' => 'ទំពáŸážš$1ážáŸ’រូវបានប្ážáž¼ážšáž‘ីážáž¶áŸ†áž„ទៅ$2ហើយ។',
+ 'renameuser-page-unmoved' => 'ទំពáŸážš$1មិនអាចប្ážáž¼ážšáž‘ីážáž¶áŸ†áž„ទៅ$2បានទáŸáŸ”',
+ 'renameuserlogpage' => 'កំនážáŸ‹áž áŸážáž»áž“ៃការប្ážáž¼ážšážˆáŸ’មោះអ្នកប្រើប្រាស់',
+ 'renameuserlogpagetext' => 'áž“áŸáŸ‡áž‡áž¶áž€áŸ†ážŽážáŸ‹áž áŸážáž»áž“ៃបំលាស់ប្ážáž¼ážšáž“ៃឈ្មោះអ្នកប្រើប្រាស់',
+ 'renameuserlogentry' => 'បានប្ážáž¼ážšážˆáŸ’មោះ $1 ទៅជា "$2" ហើយ',
+ 'renameuser-log' => '{{PLURAL:$1|កំណែប្រែ}}។ áž áŸážáž»áž•áž›áŸ– $2',
+ 'renameuser-move-log' => 'បានប្ážáž¼ážšáž‘ីážáž¶áŸ†áž„ទំពáŸážšážŠáŸ„យស្វáŸáž™áž”្រវážáŸ’ážáž·áž€áŸ’នុងážážŽáŸˆáž–áŸáž›áž”្ážáž¼ážšážˆáŸ’មោះអ្នកប្រើប្រាស់ "[[User:$1|$1]]" ទៅ "[[User:$2|$2]]"',
+ 'right-renameuser' => 'ប្ដូរឈ្មោះអ្នកប្រើប្រាស់នានា',
+ 'renameuser-renamed-notice' => 'ឈ្មោះរបស់អ្នកប្រើប្រាស់នáŸáŸ‡ážáŸ’រូវបានប្ដូររួចហើយ។
+
+ážáž¶áž„ក្រោមនáŸáŸ‡áž‡áž¶áž€áŸ†ážŽážáŸ‹áž áŸážáž»áž“ៃការប្ដូរឈ្មោះ។',
+);
+
+/** Kannada (ಕನà³à²¨à²¡)
+ * @author Nayvik
+ * @author Shushruth
+ */
+$messages['kn'] = array(
+ 'renameuser' => 'ಸದಸà³à²¯à²°à²¨à³à²¨à³ ಮರà³à²¨à²¾à²®à²•à²°à²£ ಮಾಡಿ',
+ 'renameuserwarnings' => 'ಎಚà³à²šà²°à²¿à²•à³†à²—ಳà³:',
+);
+
+/** Korean (한국어)
+ * @author Albamhandae
+ * @author Ficell
+ * @author Klutzy
+ * @author Kwj2772
+ * @author ToePeu
+ */
+$messages['ko'] = array(
+ 'renameuser' => '계정 ì´ë¦„ 변경',
+ 'renameuser-linkoncontribs' => 'ì´ë¦„ 바꾸기',
+ 'renameuser-linkoncontribs-text' => 'ì´ ì‚¬ìš©ìžì˜ 계정 ì´ë¦„ì„ ë°”ê¿‰ë‹ˆë‹¤.',
+ 'renameuser-desc' => "계정 ì´ë¦„ ë³€ê²½ì„ ìœ„í•œ [[Special:Renameuser|특수 문서]]를 추가한다 ('''renameuser''' 권한 í•„ìš”)",
+ 'renameuserold' => '기존 계정 ì´ë¦„:',
+ 'renameusernew' => '새 ì´ë¦„:',
+ 'renameuserreason' => '바꾸는 ì´ìœ :',
+ 'renameusermove' => 'ì‚¬ìš©ìž ë¬¸ì„œì™€ 토론 문서, 하위 문서를 새 ì‚¬ìš©ìž ì´ë¦„으로 ì´ë™í•˜ê¸°',
+ 'renameusersuppress' => '새 ì´ë¦„으로 넘겨주기를 ìƒì„±í•˜ì§€ 않기',
+ 'renameuserreserve' => 'ë‚˜ì¤‘ì— ì´ì „ì˜ ì´ë¦„ì´ ì‚¬ìš©ë˜ì§€ ì•Šë„ë¡ ì°¨ë‹¨í•˜ê¸°',
+ 'renameuserwarnings' => '경고:',
+ 'renameuserconfirm' => '예, ì´ë¦„ì„ ë³€ê²½í•©ë‹ˆë‹¤.',
+ 'renameusersubmit' => '변경',
+ 'renameusererrordoesnotexist' => '‘<nowiki>$1</nowiki>’ 사용ìžê°€ 존재하지 않습니다.',
+ 'renameusererrorexists' => '‘<nowiki>$1</nowiki>’ 사용ìžê°€ ì´ë¯¸ 존재합니다.',
+ 'renameusererrorinvalid' => '‘<nowiki>$1</nowiki>’ ì‚¬ìš©ìž ì´ë¦„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤.',
+ 'renameuser-error-request' => 'ìš”ì²­ì„ ì •ìƒì ìœ¼ë¡œ 전송하지 못했습니다.
+뒤로 가서 다시 ì‹œë„해주세요.',
+ 'renameuser-error-same-user' => 'ì´ì „ì˜ ì´ë¦„ê³¼ ê°™ì€ ì´ë¦„으로는 바꿀 수 없습니다.',
+ 'renameusersuccess' => '‘<nowiki>$1</nowiki>’ 사용ìžê°€ ‘<nowiki>$2</nowiki>’(으)ë¡œ 변경ë˜ì—ˆìŠµë‹ˆë‹¤.',
+ 'renameuser-page-exists' => '$1 문서가 ì´ë¯¸ 존재하여 ìžë™ìœ¼ë¡œ ì´ë™í•˜ì§€ 못했습니다.',
+ 'renameuser-page-moved' => '$1 문서를 $2(으)ë¡œ ì´ë™í–ˆìŠµë‹ˆë‹¤.',
+ 'renameuser-page-unmoved' => '$1 문서를 $2(으)ë¡œ ì´ë™í•˜ì§€ 못했습니다.',
+ 'renameuserlogpage' => 'ì´ë¦„ 변경 기ë¡',
+ 'renameuserlogpagetext' => '계정 ì´ë¦„ 변경 기ë¡ìž…니다.',
+ 'renameuserlogentry' => '$1ì—ì„œ ‘$2’(으)ë¡œ ì´ë¦„ì„ ë°”ê¾¸ì—ˆìŠµë‹ˆë‹¤.',
+ 'renameuser-log' => '기여 $1ê±´. ì´ìœ : $2',
+ 'renameuser-move-log' => '‘[[User:$1|$1]]’ 사용ìžë¥¼ ‘[[User:$2|$2]]’(으)ë¡œ 바꾸면서 문서를 ìžë™ìœ¼ë¡œ ì´ë™í•¨',
+ 'right-renameuser' => '계정 ì´ë¦„ 변경',
+ 'renameuser-renamed-notice' => 'ì´ ì‚¬ìš©ìžì˜ 계정 ì´ë¦„ì´ ë³€ê²½ë˜ì—ˆìŠµë‹ˆë‹¤.
+ì•„ëž˜ì˜ ì´ë¦„ 변경 기ë¡ì„ 참고하십시오.',
+);
+
+/** Colognian (Ripoarisch)
+ * @author Purodha
+ */
+$messages['ksh'] = array(
+ 'renameuser' => 'Metmaacher ömdäufe',
+ 'renameuser-linkoncontribs' => 'Metmaacher ömnänne',
+ 'renameuser-linkoncontribs-text' => 'Heh dä Metmaacher ömnänne',
+ 'renameuser-desc' => '[[Special:Renameuser|Metmaacher ömdäufe]] — ävver do bruch mer et Rääsch „<i lang=en">renameuser</i>“ för.',
+ 'renameuserold' => 'Dä ahle Metmaacher-Name',
+ 'renameusernew' => 'Dä neue Metmaacher-Name',
+ 'renameuserreason' => 'Jrund för et Ömdäufe:',
+ 'renameusermove' => 'De Metmaachersigg met Klaaf- un Ungersigge op dä neue Metmaacher-Name ömstelle',
+ 'renameusersuppress' => 'Donn kein Ömleidung op dä neue Name aanlääje',
+ 'renameuserreserve' => 'Donn dä Name fun dämm Metmaacher dobei sperre, dat_e nit norrens neu aanjemelldt weed.',
+ 'renameuserwarnings' => 'Warnunge:',
+ 'renameuserconfirm' => 'Jo, dunn dä Metmaacher ömbenenne un em singe Name ändere',
+ 'renameusersubmit' => 'Ömdäufe!',
+ 'renameusererrordoesnotexist' => 'Ene Metmaacher „<nowiki>$1</nowiki>“ kenne mer nit.',
+ 'renameusererrorexists' => 'Ene Metmaacher met däm Name „<nowiki>$1</nowiki>“ jit et ald.',
+ 'renameusererrorinvalid' => 'Ene Metmaacher-Name eß „<nowiki>$1</nowiki>“ ävver nit, dä wöhr nit richtich.',
+ 'renameuser-error-request' => 'Mer hatte e Problem met Dingem Opdrach.
+Bes esu joot un versöök et noch ens.',
+ 'renameuser-error-same-user' => 'Do Tuppes! Der ahle un der neue Name es dersellve. Do bengk et Ömdäufe jaanix.',
+ 'renameusersuccess' => 'Dä Metmaacher „<nowiki>$1</nowiki>“ es jetz op „<nowiki>$2</nowiki>“ ömjedäuf.',
+ 'renameuser-page-exists' => 'De Sigg $1 es ald doh, un mer könne se nit automatesch övverschrieve',
+ 'renameuser-page-moved' => 'De Sigg wood vun „$1“ op „$2“ ömjenannt.',
+ 'renameuser-page-unmoved' => 'Di Sigg „$1“ kunnt nit op „$2“ ömjenannt wääde.',
+ 'renameuserlogpage' => 'Logboch vum Metmaacher-Ömdäufe',
+ 'renameuserlogpagetext' => 'Dat es et Logboch vun de ömjedäufte Metmaachere',
+ 'renameuserlogentry' => 'hät „$1“ op dä Metmaacher „$2“ ömjedäuf',
+ 'renameuser-log' => '{{PLURAL:$1|ein Beärbeidung|$1 Beärbeidung|kein Beärbeidung}}. Jrund: $2',
+ 'renameuser-move-log' => 'Di Sigg weet automatesch ömjenannt weil mer dä Metmaacher „[[User:$1|$1]]“ op „[[User:$2|$2]]“ öm am däufe sin.',
+ 'right-renameuser' => 'Metmaacher ömdäufe',
+ 'renameuser-renamed-notice' => 'Dä Metmaacher es ömjenannt woode.
+Dat kanns De unge en däm Ußzoch uss_em Logbooch vum Metmacher Ömnänne fenge.',
+);
+
+/** Kurdish (Latin) (Kurdî (Latin))
+ * @author George Animal
+ */
+$messages['ku-latn'] = array(
+ 'renameuser' => 'Navî bikarhênerê biguherîne',
+ 'renameuser-linkoncontribs' => 'navî bikarhênerê biguherîne',
+ 'renameuser-linkoncontribs-text' => 'Navê vî bikarhênerî biguherîne',
+ 'renameuserold' => 'Navî niha:',
+ 'renameusernew' => 'Navî nuh:',
+ 'renameuserreason' => 'Sedema ji bo navguhertinê:',
+ 'renameuserconfirm' => 'Erê, navê vî bikarhênerî biguherîne',
+ 'renameusersubmit' => 'Bike',
+ 'renameusererrordoesnotexist' => 'Bikarhêner "<nowiki>$1</nowiki>" tune ye.',
+ 'renameusersuccess' => 'Navî bikarhênerê "<nowiki>$1</nowiki>" bû "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'Rûpela $1 berê heye û ew nikane otomatîk were jêbirin.',
+ 'renameuser-page-moved' => 'Rûpela $1 çû cihê $2.',
+ 'renameuser-page-unmoved' => 'Rûpela $1 nikanî çûba ciha $2.',
+ 'renameuser-log' => 'yê $1 beşdarîyên xwe hebû. $2',
+ 'right-renameuser' => 'Navê bikarhêneran biguherîne:',
+);
+
+/** Latin (Latina)
+ * @author MF-Warburg
+ * @author SPQRobin
+ * @author UV
+ */
+$messages['la'] = array(
+ 'renameuser' => 'Usorem renominare',
+ 'renameuserold' => 'Praesente nomen usoris:',
+ 'renameusernew' => 'Novum nomen usoris:',
+ 'renameuserreason' => 'Causa renominationis:',
+ 'renameusermove' => 'Movere paginas usoris et disputationis (et subpaginae) in nomen novum',
+ 'renameusersubmit' => 'Renominare',
+ 'renameusererrordoesnotexist' => 'Usor "<nowiki>$1</nowiki>" non existit',
+ 'renameusererrorexists' => 'Usor "<nowiki>$1</nowiki>" iam existit',
+ 'renameusererrorinvalid' => 'Nomen usoris "<nowiki>$1</nowiki>" irritum est',
+ 'renameusersuccess' => 'Usor "<nowiki>$1</nowiki>" renominatus est in "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'Pagina $1 iam existit et non potest automatice deleri.',
+ 'renameuser-page-moved' => 'Pagina $1 mota est ad $2.',
+ 'renameuser-page-unmoved' => 'Pagina $1 ad $2 moveri non potuit.',
+ 'renameuserlogpage' => 'Index renominationum usorum',
+ 'renameuserlogpagetext' => 'Hic est index renominationum usorum',
+ 'renameuserlogentry' => 'renominavit $1 in "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 recensio|$1 recensiones}}. Causa: $2',
+ 'renameuser-move-log' => 'movit paginam automatice in renominando usorem "[[User:$1|$1]]" in "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Usores renominare',
+ 'renameuser-renamed-notice' => 'Hic usor renominatus est.
+Commodule notatio renominationum usoris subter datur.',
+);
+
+/** Luxembourgish (Lëtzebuergesch)
+ * @author Les Meloures
+ * @author Robby
+ */
+$messages['lb'] = array(
+ 'renameuser' => 'Benotzernumm änneren',
+ 'renameuser-linkoncontribs' => 'Benotzer ëmbenennen',
+ 'renameuser-linkoncontribs-text' => 'Dëse Benotzer ëmbenennen',
+ 'renameuser-desc' => "Benotzernumm änneren (Dir braucht dofir ''renameuser''-Rechter)",
+ 'renameuserold' => 'Aktuelle Benotzernumm:',
+ 'renameusernew' => 'Neie Benotzernumm:',
+ 'renameuserreason' => "Grond fir d'Ëmbenennung:",
+ 'renameusermove' => 'Benotzer- an Diskussiounssäiten (an déi jeweileg Ënnersäiten) op den neie Benotzernumm réckelen',
+ 'renameusersuppress' => 'Maacht keng Viruleedungen op den neien Numm',
+ 'renameuserreserve' => 'Den ale Benotzernumm fir de weitere Gebrauch spären',
+ 'renameuserwarnings' => 'Warnungen:',
+ 'renameuserconfirm' => 'Jo, Benotzer ëmbenennen',
+ 'renameusersubmit' => 'Ëmbenennen',
+ 'renameusererrordoesnotexist' => 'De Benotzer "<nowiki>$1</nowiki>" gëtt et net.',
+ 'renameusererrorexists' => 'De Benotzer "<nowiki>$1</nowiki>" gët et schonn.',
+ 'renameusererrorinvalid' => 'De Benotzernumm "<nowiki>$1</nowiki>" kann net benotzt ginn.',
+ 'renameuser-error-request' => 'Et gouf e Problem mat ärer Ufro.
+Gitt w.e.g. zréck a versicht et nach eng Kéier.',
+ 'renameuser-error-same-user' => 'Dir kënnt kee Benotzernumm änneren, an him deselwechten Numm erëmginn.',
+ 'renameusersuccess' => 'De Benotzer "<nowiki>$1</nowiki>" gouf "<nowiki>$2</nowiki>" ëmbenannt.',
+ 'renameuser-page-exists' => "D'Säit $1 gëtt et schonns a kann net automatesch iwwerschriwwe ginn.",
+ 'renameuser-page-moved' => "D'Säit $1 gouf op $2 geréckelt.",
+ 'renameuser-page-unmoved' => "D'Säit $1 konnt net op $2 geréckelt ginn.",
+ 'renameuserlogpage' => 'Logbuch vun den Ännerunge vum Benotzernumm',
+ 'renameuserlogpagetext' => 'An dësem Logbuch ginn Ännerunge vu Benotzernimm festgehal.',
+ 'renameuserlogentry' => 'huet de Benotzer $1 op "$2" ëmbenannt',
+ 'renameuser-log' => '{{PLURAL:$1|1 Ännerung|$1 Ännerungen}}. Grond: $2',
+ 'renameuser-move-log' => 'Duerch d\'Réckele vum Benotzer "[[User:$1|$1]]" op "[[User:$2|$2]]" goufen déi folgend Säiten automatesch matgeréckelt:',
+ 'right-renameuser' => 'Benotzer ëmbenennen',
+ 'renameuser-renamed-notice' => "Dëse Benotzer gouf ëmbenannt.
+D'Logbuch mat den Ëmbenunngen ass hei ënnendrënner.",
+);
+
+/** Limburgish (Limburgs)
+ * @author Matthias
+ * @author Ooswesthoesbes
+ * @author Pahles
+ * @author Tibor
+ */
+$messages['li'] = array(
+ 'renameuser' => 'Herneum gebroeker',
+ 'renameuser-linkoncontribs' => 'herneum gebroeker',
+ 'renameuser-linkoncontribs-text' => 'Hernöm deze broeker',
+ 'renameuser-desc' => "Voog 'n [[Special:Renameuser|speciaal pazjwna]] toe óm 'ne gebroeker te hernömme (doe höbs hiej ''renameuser''-rech veur neudig)",
+ 'renameuserold' => 'Hujige gebroekersnaam:',
+ 'renameusernew' => 'Nuje gebroekersnaam:',
+ 'renameuserreason' => 'Ree veur hernömme:',
+ 'renameusermove' => "De gebroekerspazjena en euverlèkpazjena (en eventueel subpazjena's) hernömmme nao de nuje gebroekersnaam",
+ 'renameusersuppress' => 'Maak gein redireks nao de nuje naam',
+ 'renameuserreserve' => 'Veurkómme det de aaje gebroeker opnuuj wörd geregistreerd',
+ 'renameuserwarnings' => 'Waarschuwinge:',
+ 'renameuserconfirm' => 'Jao, hernaam gebroeker',
+ 'renameusersubmit' => 'Herneum',
+ 'renameusererrordoesnotexist' => 'De gebroeker "<nowiki>$1</nowiki>" besteit neet.',
+ 'renameusererrorexists' => 'De gebroeker "<nowiki>$1</nowiki>" besteit al.',
+ 'renameusererrorinvalid' => 'De gebroekersnaam "<nowiki>$1</nowiki>" is óngeljig.',
+ 'renameuser-error-request' => "d'r Woor 'n perbleem bie 't óntvange vanne aanvraog. Lèvver trök te gaon en opnuuj te perbere/",
+ 'renameuser-error-same-user' => 'De kèns gein gebroekers herneume nao dezelfde naam.',
+ 'renameusersuccess' => 'De gebroeker "<nowiki>$1</nowiki>" is hernömp nao "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'De pazjena $1 besteit al en kan neet automatisch euversjreve waere,',
+ 'renameuser-page-moved' => 'De pagina $1 is hernömp nao $2.',
+ 'renameuser-page-unmoved' => 'De pagina $1 kon neet hernömp waere nao $2.',
+ 'renameuserlogpage' => 'Logbook gebroekersnaamwieziginge',
+ 'renameuserlogpagetext' => 'Hiejónger staon gebroekersname die verangerdj zeen',
+ 'renameuserlogentry' => 'haet $1 hernömp nao "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 bewerking|$1 bewerkinge}}. Ree: $2',
+ 'renameuser-move-log' => 'Automatisch hernömp bie \'t wiezige van gebroeker "[[User:$1|$1]]" nao "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Gebroekers hernaome',
+ 'renameuser-renamed-notice' => "Deze gebroeker is herneump.
+Relevante regels oet 't logbook staon hieónger.",
+);
+
+/** Lithuanian (Lietuvių)
+ * @author Homo
+ * @author Hugo.arg
+ * @author Matasg
+ */
+$messages['lt'] = array(
+ 'renameuser' => 'Pervadinti naudotojÄ…',
+ 'renameuser-desc' => "Pervadinti naudotoją (reikia ''pervadintojo'' teisių)",
+ 'renameuserold' => 'Esamas naudotojo vardas:',
+ 'renameusernew' => 'Naujas naudotojo vardas:',
+ 'renameuserreason' => 'Pervadinimo priežastis:',
+ 'renameusermove' => 'Perkelti naudotojo ir aptarimo puslapius (bei jo subpuslapius) prie naujo vardo',
+ 'renameuserreserve' => 'Užblokuoti senąjį naudotojo vardą nuo galimybių naudoti ateityje',
+ 'renameuserwarnings' => 'Įspėjimai:',
+ 'renameuserconfirm' => 'Taip, pervadinti naudotojÄ…',
+ 'renameusersubmit' => 'Patvirtinti',
+ 'renameusererrordoesnotexist' => 'Naudotojas "<nowiki>$1</nowiki>" neegzistuoja.',
+ 'renameusererrorexists' => 'Naudotojas "<nowiki>$1</nowiki>" jau egzistuoja.',
+ 'renameusererrorinvalid' => 'Naudotojo vardas "<nowiki>$1</nowiki>" netinkamas.',
+ 'renameuser-error-request' => 'Iškilo prašymo gavimo problema.
+Prašome eiti atgal ir bandyti iš naujo.',
+ 'renameuser-error-same-user' => 'Jūs negalite pervadinti naudotojo į tokį pat vardą, kaip pirmiau.',
+ 'renameusersuccess' => 'Naudotojas "<nowiki>$1</nowiki>" buvo pervadintas į "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'Puslapis $1 jau egzistuoja ir negali būti automatiškai perrašytas.',
+ 'renameuser-page-moved' => 'Puslapis $1 buvo perkeltas į $2.',
+ 'renameuser-page-unmoved' => 'Puslapis $1 negali būti perkeltas į $2.',
+ 'renameuserlogpage' => 'Naudotojų pervadinimo sąrašas',
+ 'renameuserlogpagetext' => 'Tai yra naudotojų vardų pakeitimų sąrašas',
+ 'renameuserlogentry' => 'pervadintas $1 į „$2“',
+ 'renameuser-log' => '{{PLURAL:$1|1 redagavimas|$1 redagavimų(ai)}}. Priežastis: $2',
+ 'renameuser-move-log' => 'Puslapis automatiškai perkeltas, kai buvo pervadinamas naudotojas "[[User:$1|$1]]" į "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Pervadinti naudotojus',
+);
+
+/** Latvian (Latviešu)
+ * @author Papuass
+ * @author Xil
+ */
+$messages['lv'] = array(
+ 'renameuser' => 'PÄrsaukt lietotÄju',
+ 'renameuser-linkoncontribs' => 'pÄrsaukt lietotÄju',
+ 'renameuser-linkoncontribs-text' => 'PÄrsaukt Å¡o lietotÄju',
+ 'renameuserold' => 'PaÅ¡reizÄ“jais lietotÄja vÄrds:',
+ 'renameusernew' => 'Jaunais lietotÄja vÄrds:',
+ 'renameuserreason' => 'PÄrsaukÅ¡anas iemesls:',
+ 'renameuserreserve' => 'BloÄ·Ä“t veco lietotÄjvÄrdu no turpmÄkas izmantoÅ¡anas',
+ 'renameuserwarnings' => 'BrÄ«dinÄjumi:',
+ 'renameuserconfirm' => 'JÄ, pÄrdÄ“vÄ“t lietotÄju',
+ 'renameusersubmit' => 'Iesniegt',
+ 'renameusererrorexists' => 'LietotÄjs "<nowiki>$1</nowiki>" jau ir.',
+ 'renameusersuccess' => 'LietotÄjs "<nowiki>$1</nowiki>" pÄrdÄ“vÄ“ts par "<nowiki>$2</nowiki>".',
+ 'renameuserlogpage' => 'LietotÄju pÄrdÄ“vÄ“Å¡anas reÄ£istrs',
+ 'renameuserlogpagetext' => 'LietotÄjvÄrdu maiņas reÄ£istrs',
+ 'right-renameuser' => 'PÄrsaukt lietotÄjus',
+);
+
+/** Malagasy (Malagasy)
+ * @author Jagwar
+ */
+$messages['mg'] = array(
+ 'renameuser' => "Hanova ny anaran'ny mpikambana",
+ 'renameuser-linkoncontribs' => "Manova ny anaran'ny mpikambana",
+ 'renameuser-linkoncontribs-text' => "Hanova ny anaran'ity mpikambana ity",
+ 'renameuserold' => 'Anaram-pikambana ankehitriny :',
+ 'renameusernew' => 'Anaram-pikambana vaovao :',
+ 'renameuserreason' => "Anton'ny fanovana anarana :",
+ 'renameusermove' => "Afindrany pejim-pikambana any amin'ny anarana vaovao",
+ 'renameuserwarnings' => 'Fampitandremana :',
+ 'renameuserconfirm' => 'Eny, soloy anarana ilay mpikambana',
+ 'renameusersubmit' => 'Alefa',
+ 'renameuserlogpage' => 'Laogim-panovana anaram-pikambana',
+ 'right-renameuser' => "Manova ny anaran'ny mpikambana",
+);
+
+/** Macedonian (МакедонÑки)
+ * @author Bjankuloski06
+ * @author Brest
+ * @author Misos
+ */
+$messages['mk'] = array(
+ 'renameuser' => 'Преименувај кориÑник',
+ 'renameuser-linkoncontribs' => 'преименувај кориÑник',
+ 'renameuser-linkoncontribs-text' => 'Преименувај го кориÑников',
+ 'renameuser-desc' => "Додава [[Special:Renameuser|Ñпецијална Ñтраница]] за преименување на кориÑник (бара право на ''renameuser'')",
+ 'renameuserold' => 'Сегашно кориÑничко име:',
+ 'renameusernew' => 'Ðово кориÑничко име:',
+ 'renameuserreason' => 'Образложение за преименување:',
+ 'renameusermove' => 'ПремеÑти кориÑничка Ñтраница и Ñтраници за разговор (и нивните потÑтраници) под новото име',
+ 'renameusersuppress' => 'Ðе Ñоздавај пренаÑочувања кон новото име',
+ 'renameuserreserve' => 'Блокирање на Ñтарото кориÑничко име, да не може да Ñе кориÑти во иднина',
+ 'renameuserwarnings' => 'Предупредувања:',
+ 'renameuserconfirm' => 'Да, преименувај го кориÑникот',
+ 'renameusersubmit' => 'ВнеÑи',
+ 'renameusererrordoesnotexist' => 'КориÑникот „<nowiki>$1</nowiki>“ не поÑтои',
+ 'renameusererrorexists' => 'КориÑникот „<nowiki>$1</nowiki>“ веќе поÑтои',
+ 'renameusererrorinvalid' => 'КориÑничкото име „<nowiki>$1</nowiki>“ не е важечко.',
+ 'renameuser-error-request' => 'Се јави проблем при примањето на барањето.
+Вратете Ñе и обидете Ñе повторно.',
+ 'renameuser-error-same-user' => 'Ðе можете да го преименувате кориÑникот во име кое е иÑто како претходното.',
+ 'renameusersuccess' => 'КориÑникот „<nowiki>$1</nowiki>“ е преименуван во „<nowiki>$2</nowiki>“',
+ 'renameuser-page-exists' => 'Страницата $1 веќе поÑтои и не може автоматÑки да Ñе замени Ñо друга Ñодржина.',
+ 'renameuser-page-moved' => 'Страницата $1 е премеÑтена на $2.',
+ 'renameuser-page-unmoved' => 'Страницата $1 неможеше да Ñе премеÑти на $2.',
+ 'renameuserlogpage' => 'Дневник на преименувања на кориÑници',
+ 'renameuserlogpagetext' => 'Ово е дневник на преименувања на кориÑници',
+ 'renameuserlogentry' => 'го преименуваше $1 во „$2“',
+ 'renameuser-log' => '{{PLURAL:$1|1 уредување|$1 уредувања}}. Образложение: $2',
+ 'renameuser-move-log' => 'ÐвтоматÑки премеÑтена Ñтраница при преименување на кориÑникот „[[User:$1|$1]]“ во „[[User:$2|$2]]“',
+ 'right-renameuser' => 'Преименување кориÑници',
+ 'renameuser-renamed-notice' => 'Овој кориÑник е преименуван.
+Подолу е приложен дневникот на преименување за Ñпоредба.',
+);
+
+/** Malayalam (മലയാളം)
+ * @author Praveenp
+ * @author Shijualex
+ */
+$messages['ml'] = array(
+ 'renameuser' => 'ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚ ചെയàµà´¯àµà´•',
+ 'renameuser-linkoncontribs' => 'ഉപയോകàµà´¤àµƒ à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚',
+ 'renameuser-linkoncontribs-text' => 'à´ˆ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† പേരൠമാറàµà´±àµà´•',
+ 'renameuser-desc' => "ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚ ചെയàµà´¯àµà´µà´¾à´¨àµà´³àµà´³ (''à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£'' അവകാശം വേണം) ഒരൠ[[Special:Renameuser|à´ªàµà´°à´¤àµà´¯àµ‡à´• താൾ]] ചേർകàµà´•àµà´¨àµà´¨àµ",
+ 'renameuserold' => 'ഇപàµà´ªàµ‹à´´à´¤àµà´¤àµ† ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚:',
+ 'renameusernew' => 'à´ªàµà´¤à´¿à´¯ ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚:',
+ 'renameuserreason' => 'ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ മാറàµà´±à´¾à´¨àµà´³àµà´³ കാരണം:',
+ 'renameusermove' => 'നിലവിലàµà´³àµà´³ ഉപയോകàµà´¤àµƒà´¤à´¾à´³àµà´‚, ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† സം‌വാദം താളàµà´‚ (ഉപതാളàµà´•àµ¾ à´…à´Ÿà´•àµà´•à´‚) à´ªàµà´¤à´¿à´¯ നാമതàµà´¤à´¿à´²àµ‡à´•àµà´•àµ മാറàµà´±àµà´•.',
+ 'renameusersuppress' => 'à´ªàµà´¤à´¿à´¯ നാമതàµà´¤à´¿à´²àµ‡à´¯àµà´•àµà´•àµ തിരിചàµà´šàµà´µà´¿à´Ÿà´²àµà´•à´³àµŠà´¨àµà´¨àµà´‚ സൃഷàµà´Ÿà´¿à´•àµà´•à´°àµà´¤àµ',
+ 'renameuserreserve' => 'പഴയ ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ ഭാവിയിൽ ഉപയോഗികàµà´•àµà´¨àµà´¨à´¤àµ തടയàµà´•',
+ 'renameuserwarnings' => 'à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµà´•àµ¾:',
+ 'renameuserconfirm' => 'അതെ, ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚ ചെയàµà´¯àµà´•',
+ 'renameusersubmit' => 'സമർപàµà´ªà´¿à´•àµà´•àµà´•',
+ 'renameusererrordoesnotexist' => '"<nowiki>$1</nowiki>" à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µàµ നിലവിലിലàµà´².',
+ 'renameusererrorexists' => '"<nowiki>$1</nowiki>" à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µàµ നിലവിലàµà´£àµà´Ÿàµ.',
+ 'renameusererrorinvalid' => '"<nowiki>$1</nowiki>" à´Žà´¨àµà´¨ ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ അസാധàµà´µà´¾à´£àµâ€Œ.',
+ 'renameuser-error-request' => 'അപേകàµà´· à´¸àµà´µàµ€à´•à´°à´¿à´•àµà´•àµà´®àµà´ªàµ‹àµ¾ പിഴവൠസം‌ഭവിചàµà´šàµ. ദയവായി തിരിചàµà´šàµ പോയി വീണàµà´Ÿàµà´‚ പരിശàµà´°à´®à´¿à´•àµà´•àµà´•.',
+ 'renameuser-error-same-user' => 'നിലവിലàµà´³àµà´³ ഒരൠഉപയോകàµà´¤àµƒà´¨à´¾à´®à´¤àµà´¤à´¿à´²àµ‡à´•àµà´•àµ വേറൊരൠഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚ നടതàµà´¤àµà´µà´¾àµ» സാധികàµà´•à´¿à´²àµà´².',
+ 'renameusersuccess' => '"<nowiki>$1</nowiki>" à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† "<nowiki>$2</nowiki>" à´Žà´¨àµà´¨ നാമതàµà´¤à´¿à´²àµ‡à´•àµà´•àµ à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
+ 'renameuser-page-exists' => '$1 à´Žà´¨àµà´¨ താൾ നിലവിലàµà´³àµà´³à´¤à´¿à´¨à´¾àµ½ അതിനെ യാനàµà´¤àµà´°à´¿à´•à´®à´¾à´¯à´¿ മാറàµà´±à´¾àµ» കഴിയിലàµà´².',
+ 'renameuser-page-moved' => '$1 à´Žà´¨àµà´¨ താൾ $2 à´Žà´¨àµà´¨à´¾à´•àµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
+ 'renameuser-page-unmoved' => '$1 à´Žà´¨àµà´¨ താൾ $2 à´Žà´¨àµà´¨à´¾à´•àµà´•à´¾àµ» സാദàµà´§àµà´¯à´®à´²àµà´².',
+ 'renameuserlogpage' => 'ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚ നടതàµà´¤à´¿à´¯à´¤à´¿à´¨àµà´±àµ† à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¨à´°àµ‡à´–',
+ 'renameuserlogpagetext' => 'à´ˆ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¨à´°àµ‡à´– ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚ നടതàµà´¤à´¿à´¯à´¤à´¿à´¨àµà´±àµ‡à´¤à´¾à´£àµâ€Œ.',
+ 'renameuserlogentry' => '$1 à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† "$2" à´Žà´¨àµà´¨àµ à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
+ 'renameuser-log' => '{{PLURAL:$1|ഒരൠതിരàµà´¤àµà´¤àµ½|$1 തിരàµà´¤àµà´¤à´²àµà´•àµ¾}}. കാരണം: $2',
+ 'renameuser-move-log' => '"[[User:$1|$1]]" à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† "[[User:$2|$2]]" à´Žà´¨àµà´¨àµ à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚ ചെയàµà´¤à´ªàµà´ªàµ‹àµ¾ താൾ യാനàµà´¤àµà´°à´¿à´•à´®à´¾à´¯à´¿ മാറàµà´±à´¿.',
+ 'right-renameuser' => 'ഉപയോകàµà´¤àµƒ à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚',
+ 'renameuser-renamed-notice' => 'à´ˆ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.
+à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£ രേഖ അവലംബമായി പരിശോധികàµà´•à´¾à´¨à´¾à´¯à´¿ താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
+);
+
+/** Mongolian (Монгол)
+ * @author Chinneeb
+ */
+$messages['mn'] = array(
+ 'renameusersubmit' => 'Явуулах',
+);
+
+/** Marathi (मराठी)
+ * @author Kaustubh
+ */
+$messages['mr'] = array(
+ 'renameuser' => 'सदसà¥à¤¯à¤¨à¤¾à¤® बदला',
+ 'renameuser-linkoncontribs' => 'सदसà¥à¤¯à¤¨à¤¾à¤® बदला',
+ 'renameuser-desc' => "सदसà¥à¤¯à¤¨à¤¾à¤® बदला (यासाठी तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ ''सदसà¥à¤¯à¤¨à¤¾à¤® बदलणà¥à¤¯à¤¾à¤šà¥‡ अधिकार'' असणे आवशà¥à¤¯à¤• आहे)",
+ 'renameuserold' => 'सधà¥à¤¯à¤¾à¤šà¥‡ सदसà¥à¤¯à¤¨à¤¾à¤®:',
+ 'renameusernew' => 'नवीन सदसà¥à¤¯à¤¨à¤¾à¤®:',
+ 'renameuserreason' => 'नाम बदलणà¥à¤¯à¤¾à¤šà¥‡ कारण:',
+ 'renameusermove' => 'सदसà¥à¤¯ तसेच सदसà¥à¤¯ चरà¥à¤šà¤¾à¤ªà¤¾à¤¨ (तसेच तà¥à¤¯à¤¾à¤‚ची उपपाने) नवीन सदसà¥à¤¯à¤¨à¤¾à¤®à¤¾à¤•à¤¡à¥‡ सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरीत करा',
+ 'renameusersubmit' => 'पाठवा',
+ 'renameusererrordoesnotexist' => '"<nowiki>$1</nowiki>" नावाचा सदसà¥à¤¯ असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ नाही.',
+ 'renameusererrorexists' => '"<nowiki>$1</nowiki>" नावाचा सदसà¥à¤¯ अगोदरच असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ आहे',
+ 'renameusererrorinvalid' => '"<nowiki>$1</nowiki>" हे नाव चà¥à¤•à¥€à¤šà¥‡ आहे.',
+ 'renameuser-error-request' => 'हे काम करताना तà¥à¤°à¥à¤Ÿà¥€ आढळलेली आहे. कृपया मागे जाऊन परत पà¥à¤°à¤¯à¤¤à¥à¤¨ करा.',
+ 'renameuser-error-same-user' => 'तà¥à¤®à¥à¤¹à¥€ à¤à¤–ादà¥à¤¯à¤¾ सदसà¥à¤¯à¤¾à¤²à¤¾ परत पूरà¥à¤µà¥€à¤šà¥à¤¯à¤¾ नावाकडे बदलू शकत नाही',
+ 'renameusersuccess' => '"<nowiki>$1</nowiki>" या सदसà¥à¤¯à¤¾à¤šà¥‡ नाव "<nowiki>$2</nowiki>" ला बदललेले आहे.',
+ 'renameuser-page-exists' => '$1 हे पान अगोदरच असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ आहे व आपोआप पà¥à¤¨à¤°à¥à¤²à¥‡à¤–न करता येत नाही.',
+ 'renameuser-page-moved' => '$1 हे पान $2 मथळà¥à¤¯à¤¾à¤–ाली सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरीत केले.',
+ 'renameuser-page-unmoved' => '$1 हे पान $2 मथळà¥à¤¯à¤¾à¤–ाली सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरीत करू शकत नाही.',
+ 'renameuserlogpage' => 'सदसà¥à¤¯à¤¨à¤¾à¤® बदल यादी',
+ 'renameuserlogpagetext' => 'ही सदसà¥à¤¯à¤¨à¤¾à¤®à¤¾à¤‚मधà¥à¤¯à¥‡ केलेलà¥à¤¯à¤¾ बदलांची यादी आहे.',
+ 'renameuserlogentry' => 'नी $1 ला "$2" केले',
+ 'renameuser-log' => '{{PLURAL:$1|१ संपादन|$1 संपादने}}. कारण: $2',
+ 'renameuser-move-log' => '"[[User:$1|$1]]" ला "[[User:$2|$2]]" बदलताना आपोआप सदसà¥à¤¯ पान सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरीत केलेले आहे.',
+ 'right-renameuser' => 'सदसà¥à¤¯à¤¾à¤‚ची नावे बदला',
+);
+
+/** Malay (Bahasa Melayu)
+ * @author Anakmalaysia
+ * @author Aurora
+ * @author Aviator
+ */
+$messages['ms'] = array(
+ 'renameuser' => 'Tukar nama pengguna',
+ 'renameuser-linkoncontribs' => 'tukar nama pengguna',
+ 'renameuser-linkoncontribs-text' => 'Tukar nama pengguna ini',
+ 'renameuser-desc' => "Menukar nama pengguna (memerlukan hak ''renameuser'')",
+ 'renameuserold' => 'Nama semasa:',
+ 'renameusernew' => 'Nama baru:',
+ 'renameuserreason' => 'Sebab tukar:',
+ 'renameusermove' => 'Pindahkan laman pengguna dan laman perbincangannya (berserta semua sublaman yang ada) ke nama baru',
+ 'renameusersuppress' => 'Jangan buat lencongan ke nama baru',
+ 'renameuserreserve' => 'Pelihara nama pengguna lama supaya tidak digunakan lagi',
+ 'renameuserwarnings' => 'Amaran:',
+ 'renameuserconfirm' => 'Ya, tukar nama pengguna ini',
+ 'renameusersubmit' => 'Hantar',
+ 'renameusererrordoesnotexist' => 'Pengguna "<nowiki>$1</nowiki>" tidak wujud.',
+ 'renameusererrorexists' => 'Pengguna "<nowiki>$1</nowiki>" telah pun wujud.',
+ 'renameusererrorinvalid' => 'Nama pengguna "<nowiki>$1</nowiki>" tidak sah.',
+ 'renameuser-error-request' => 'Berlaku masalah ketika menerima permintaan anda.
+Sila undur dan cuba lagi.',
+ 'renameuser-error-same-user' => 'Anda tidak boleh menukar nama pengguna kepada nama yang sama.',
+ 'renameusersuccess' => 'Nama "<nowiki>$1</nowiki>" telah ditukar menjadi "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'Laman $1 telah pun wujud dan tidak boleh ditulis ganti secara automatik.',
+ 'renameuser-page-moved' => 'Laman $1 telah dipindahkan ke $2.',
+ 'renameuser-page-unmoved' => 'Laman $1 tidak dapat dipindahkan ke $2.',
+ 'renameuserlogpage' => 'Log penukaran nama pengguna',
+ 'renameuserlogpagetext' => 'Ini ialah log penukaran nama pengguna.',
+ 'renameuserlogentry' => 'telah menukar nama $1 menjadi "$2"',
+ 'renameuser-log' => '$1 suntingan. Sebab: $2',
+ 'renameuser-move-log' => 'Memindahkan laman secara automatik ketika menukar nama "[[User:$1|$1]]" menjadi "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Menukar nama pengguna',
+ 'renameuser-renamed-notice' => 'Pengguna ini telah dinamakan semula.
+Log penukaran nama ditunjukkan di bawah sebagai rujukan.',
+);
+
+/** Maltese (Malti)
+ * @author Chrisportelli
+ * @author Roderick Mallia
+ */
+$messages['mt'] = array(
+ 'renameuser' => 'Semmi utent mill-Ä¡did',
+ 'renameuserold' => 'Isem tal-utent attwali:',
+ 'renameusernew' => 'Isem tal-utent il-Ä¡did:',
+ 'renameuserreason' => 'Raġuni għall-bidla fl-isem:',
+ 'renameusermove' => "Mexxi l-paġna tal-utent, il-paġna ta' diskussjoni u s-sottopaġni taħt l-isem il-ġdid",
+ 'renameuserreserve' => 'Imblokka l-użu tal-isem il-qadim fil-futur',
+ 'renameuserwarnings' => 'Twissijiet:',
+ 'renameuserconfirm' => 'Iva, semmi mill-Ä¡did dan l-utent',
+ 'renameusersubmit' => 'Ibgħat',
+ 'renameusererrordoesnotexist' => 'L-utent "<nowiki>$1</nowiki>" ma jeżistix.',
+ 'renameusererrorexists' => 'L-utent "<nowiki>$1</nowiki>" diġà jeżisti.',
+ 'renameusererrorinvalid' => 'L-isem tal-utent "<nowiki>$1</nowiki>" hu invalidu.',
+);
+
+/** Erzya (ЭрзÑнь)
+ * @author Botuzhaleny-sodamo
+ */
+$messages['myv'] = array(
+ 'renameusernew' => 'Од лемеÑÑŒ:',
+ 'renameuserreserve' => 'ÐžÐ·Ð°Ð²Ñ‚Ð¾Ð¼Ñ Ñ‚Ð°ÑˆÑ‚Ð¾ ÑовицÑнь лементь ÑаймеÑ, Ñ‚ÐµÐ²Ñ Ð¸Ð»Ñзо нолдаво Ñеде тов',
+ 'renameuserconfirm' => 'ИÑÑ‚Ñ, макÑÑ‚ ÑовицÑнтень од лем',
+ 'renameusersubmit' => 'МакÑомÑ',
+ 'renameusererrordoesnotexist' => '"<nowiki>$1</nowiki>" ÑовицÑÑÑŒ араÑÑŒ.',
+);
+
+/** Nahuatl (NÄhuatl)
+ * @author Fluence
+ */
+$messages['nah'] = array(
+ 'renameusersubmit' => 'TiquihuÄz',
+);
+
+/** Min Nan Chinese (Bân-lâm-gú) */
+$messages['nan'] = array(
+ 'renameuser' => 'Kái iÅng-chiá ê miâ',
+ 'renameuser-page-moved' => '$1 í-keng sóa khì tī $2.',
+ 'renameuserlogpagetext' => 'Chit-ê log liaÌt-chhut kái-piàn iÅng-chiá miâ-jÄ« ê tÅng-chok.',
+);
+
+/** Low German (Plattdüütsch)
+ * @author Slomox
+ */
+$messages['nds'] = array(
+ 'renameuser' => 'Brukernaam ännern',
+ 'renameuser-desc' => "Föögt en [[Special:Renameuser|Spezialsied]] to för dat Ne’en-Naam-Geven för Brukers (''renameuser''-Recht nödig)",
+ 'renameuserold' => 'Brukernaam nu:',
+ 'renameusernew' => 'Nee Brukernaam:',
+ 'renameuserreason' => 'Gründ för den ne’en Naam:',
+ 'renameusermove' => 'Brukersieden op’n ne’en Naam schuven',
+ 'renameuserreserve' => 'Den olen Brukernaam dor vör schulen, dat he noch wedder nee anmellt warrt',
+ 'renameuserwarnings' => 'Wohrschauels:',
+ 'renameuserconfirm' => 'Jo, den Bruker en ne’en Naam geven',
+ 'renameusersubmit' => 'Ännern',
+ 'renameusererrordoesnotexist' => "Bruker ''<nowiki>$1</nowiki>'' gifft dat nich",
+ 'renameusererrorexists' => "Bruker ''<nowiki>$1</nowiki>'' gifft dat al",
+ 'renameusererrorinvalid' => "Brukernaam ''<nowiki>$1</nowiki>'' geiht nich",
+ 'renameuser-error-request' => 'Dat geev en Problem bi’t Överdragen vun de Anfraag. Gah trüch un versöök dat noch wedder.',
+ 'renameuser-error-same-user' => 'De ole un ne’e Brukernaam sünd gliek.',
+ 'renameusersuccess' => "Brukernaam ''<nowiki>$1</nowiki>'' op ''<nowiki>$2</nowiki>'' ännert",
+ 'renameuser-page-exists' => 'Siet $1 gifft dat al un kann nichautomaatsch överschreven warrn.',
+ 'renameuser-page-moved' => 'Siet $1 schaven na $2.',
+ 'renameuser-page-unmoved' => 'Siet $1 kunn nich na $2 schaven warrn.',
+ 'renameuserlogpage' => 'Ännerte-Brukernaams-Logbook',
+ 'renameuserlogpagetext' => 'Dit is dat Logbook för ännerte Brukernaams',
+ 'renameuserlogentry' => 'hett „$1“ ne’en Naam „$2“ geven',
+ 'renameuser-log' => '{{PLURAL:$1|1 Ännern|$1 Ännern}}. Grund: $2',
+ 'renameuser-move-log' => "Siet bi dat Ännern vun’n Brukernaam ''[[User:$1|$1]]'' na ''[[User:$2|$2]]'' automaatsch schaven",
+ 'right-renameuser' => 'Brukers ne’en Naam geven',
+);
+
+/** Nedersaksisch (Nedersaksisch)
+ * @author Servien
+ */
+$messages['nds-nl'] = array(
+ 'renameuser' => 'Gebruker herneumen',
+ 'renameuser-linkoncontribs' => 'gebruker herneumen',
+ 'renameuserold' => 'Gebrukersnaam noen',
+ 'renameusernew' => 'Nieje gebrukersnaam:',
+ 'renameuserreason' => "Reden veur 't herneumen:",
+ 'renameusermove' => "Herneum gebruker en gebrukerspagina's (en subpagina's) naor de nieje naam.",
+ 'renameusersuppress' => 'Gien deurverwiezingen maken naor de nieje naam',
+ 'renameuserreserve' => 'Veurkoemen dat de ouwe gebruker opniej eregistreerd wönnen',
+ 'renameuserwarnings' => 'Waorschuwingen:',
+ 'renameuserconfirm' => 'Ja, herneum disse gebruker',
+ 'renameusersubmit' => 'Herneumen',
+ 'renameusererrordoesnotexist' => 'De gebruker "<nowiki>$1</nowiki>" besteet neet.',
+ 'renameusererrorexists' => 'De gebrukersnaam "<nowiki>$1</nowiki>" is al in gebruuk.',
+ 'renameusererrorinvalid' => 'De gebrukersnaam "<nowiki>$1</nowiki>" is ongeldig.',
+ 'renameusersuccess' => 'Gebruker "<nowiki>$1</nowiki>" is herneumd naor "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'De pagina $1 besteet al en kan neet autematisch overschreven wönnen.',
+ 'renameuser-page-moved' => 'De pagina $1 is herneumd naor $2.',
+ 'renameuser-page-unmoved' => 'De pagina $1 kon neet herneumd wönnen naor $2.',
+ 'renameuserlogpage' => 'Logboek gebrukersnaamwiezigingen',
+ 'renameuserlogpagetext' => 'Dit is een logboek mit wiezigingen van gebrukersnamen',
+ 'renameuserlogentry' => 'hef $1 herneumd naor "$2"',
+ 'renameuser-move-log' => 'Pagina is autematisch verplaos bie \'t herneumen van de gebruker "[[User:$1|$1]]" naor "[[User:$2|$2]]"',
+ 'right-renameuser' => 'gebrukers herneumen',
+ 'renameuser-renamed-notice' => "Disse gebrukersnaam is herneumd.
+Hieronder vie-j 't herneumlogboek as rifferentie.",
+);
+
+/** Nepali (नेपाली) */
+$messages['ne'] = array(
+ 'renameuserold' => 'अहिलेको पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम:',
+ 'renameusernew' => 'नयाठपà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम:',
+ 'renameusersubmit' => 'बà¥à¤à¤¾à¤‰à¤¨à¥‡',
+ 'renameuser-page-exists' => '$1 पृषà¥à¤  पहिले देखि नै रहेको छ र सà¥à¤µà¤¤: अधिलेखन गरà¥à¤¨ सकिà¤à¤¨ ।',
+ 'renameuser-page-moved' => ' $1 पृषà¥à¤ à¤²à¤¾à¤ˆ $2 मा सारियो ।',
+ 'renameuser-page-unmoved' => '$1 पृषà¥à¤ à¤²à¤¾à¤ˆ $2 मा सारà¥à¤¨ सकिà¤à¤¨ ।',
+);
+
+/** Dutch (Nederlands)
+ * @author Effeietsanders
+ * @author SPQRobin
+ * @author Siebrand
+ */
+$messages['nl'] = array(
+ 'renameuser' => 'Gebruiker hernoemen',
+ 'renameuser-linkoncontribs' => 'gebruiker hernoemen',
+ 'renameuser-linkoncontribs-text' => 'Deze gebruiker hernoemen',
+ 'renameuser-desc' => "Voegt een [[Special:Renameuser|speciale pagina]] toe om een gebruiker te hernoemen (u hebt hiervoor het recht ''renameuser'' nodig)",
+ 'renameuserold' => 'Huidige gebruikersnaam:',
+ 'renameusernew' => 'Nieuwe gebruikersnaam:',
+ 'renameuserreason' => 'Reden voor hernoemen:',
+ 'renameusermove' => "De gebruikerspagina en overlegpagina (en eventuele subpagina's) hernoemen naar de nieuwe gebruikersnaam",
+ 'renameusersuppress' => 'Geen doorverwijzingen maken naar de nieuwe naam',
+ 'renameuserreserve' => 'Voorkomen dat de oude gebruiker opnieuw wordt geregistreerd',
+ 'renameuserwarnings' => 'Waarschuwingen:',
+ 'renameuserconfirm' => 'Ja, hernoem de gebruiker',
+ 'renameusersubmit' => 'Opslaan',
+ 'renameusererrordoesnotexist' => 'De gebruiker "<nowiki>$1</nowiki>" bestaat niet.',
+ 'renameusererrorexists' => 'De gebruiker "<nowiki>$1</nowiki>" bestaat al.',
+ 'renameusererrorinvalid' => 'De gebruikersnaam "<nowiki>$1</nowiki>" is ongeldig.',
+ 'renameuser-error-request' => 'Er was een probleem bij het ontvangen van de aanvraag. Gelieve terug te gaan en opnieuwe te proberen.',
+ 'renameuser-error-same-user' => 'U kunt geen gebruiker hernoemen naar dezelfde naam.',
+ 'renameusersuccess' => 'De gebruiker "<nowiki>$1</nowiki>" is hernoemd naar "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'De pagina $1 bestaat al en kan niet automatisch overschreven worden.',
+ 'renameuser-page-moved' => 'De pagina $1 is hernoemd naar $2.',
+ 'renameuser-page-unmoved' => 'De pagina $1 kon niet hernoemd worden naar $2.',
+ 'renameuserlogpage' => 'Logboek gebruikersnaamwijzigingen',
+ 'renameuserlogpagetext' => 'Hieronder staan gebruikersnamen die gewijzigd zijn',
+ 'renameuserlogentry' => 'heeft $1 hernoemd naar "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 bewerking|$1 bewerkingen}}. Reden: $2',
+ 'renameuser-move-log' => 'Automatisch hernoemd bij het wijzigen van gebruiker "[[User:$1|$1]]" naar "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Gebruikers hernoemen',
+ 'renameuser-renamed-notice' => 'Deze gebruiker is hernoemd.
+Relevante regels uit het logboek gebruikersnaamwijzigingen worden hieronder ter referentie weergegeven.',
+);
+
+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+ * @author Gunnernett
+ * @author Harald Khan
+ * @author Ranveig
+ */
+$messages['nn'] = array(
+ 'renameuser' => 'Døyp om brukar',
+ 'renameuser-linkoncontribs' => 'døyp om brukar',
+ 'renameuser-desc' => "Legg til ei [[Special:Renameuser|spesialsida]] for å døypa om ein brukar (krev ''renameuser''-rettar)",
+ 'renameuserold' => 'Noverande brukarnamn:',
+ 'renameusernew' => 'Nytt brukarnamn:',
+ 'renameuserreason' => 'Årsak for omdøyping:',
+ 'renameusermove' => 'Flytt brukar- og brukardiskusjonssider (og deira undersider) til nytt namn.',
+ 'renameuserreserve' => 'Blokker det gamle brukarnamnet for framtidig bruk',
+ 'renameuserwarnings' => 'Ã…tvaringar:',
+ 'renameuserconfirm' => 'Ja, endra namn på brukaren',
+ 'renameusersubmit' => 'Utfør',
+ 'renameusererrordoesnotexist' => 'Brukaren «<nowiki>$1</nowiki>» finst ikkje.',
+ 'renameusererrorexists' => 'Brukaren «<nowiki>$1</nowiki>» finst allereie.',
+ 'renameusererrorinvalid' => 'Brukarnamnet «<nowiki>$1</nowiki>» er ikkje gyldig.',
+ 'renameuser-error-request' => 'Det var eit problem med å motta førespurnaden.
+Gå attende og prøv på nytt.',
+ 'renameuser-error-same-user' => 'Du kan ikkje gje ein brukar same namn som han/ho har frå før.',
+ 'renameusersuccess' => 'Brukaren «<nowiki>$1</nowiki>» har fått brukarnamnet endra til «<nowiki>$2</nowiki>»',
+ 'renameuser-page-exists' => 'Sida $1 finst allereie og kan ikkje automatisk verta skrive over.',
+ 'renameuser-page-moved' => 'Sida $1 har vorte flytta til $2.',
+ 'renameuser-page-unmoved' => 'Sida $1 kunne ikkje verta flytta til $2.',
+ 'renameuserlogpage' => 'Logg over brukarnamnendringar',
+ 'renameuserlogpagetext' => 'Logg over endringar av brukarnamn',
+ 'renameuserlogentry' => 'endra $1 til «$2»',
+ 'renameuser-log' => '{{PLURAL:$1|eitt bidrag|$1 bidrag}}. Ã…rsak: $2',
+ 'renameuser-move-log' => 'Flytta sida automatisk under omdøyping av brukaren «[[User:$1|$1]]» til «[[User:$2|$2]]»',
+ 'right-renameuser' => 'Døypa om brukarar',
+ 'renameuser-renamed-notice' => 'Denne brukaren har fått nytt namn.
+Til informasjon er omdøpingsloggen synt nedanfor.',
+);
+
+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+ * @author Jon Harald Søby
+ * @author Nghtwlkr
+ */
+$messages['no'] = array(
+ 'renameuser' => 'Døp om bruker',
+ 'renameuser-linkoncontribs' => 'døp om bruker',
+ 'renameuser-linkoncontribs-text' => 'Døp om denne brukeren',
+ 'renameuser-desc' => "Legger til en [[Special:Renameuser|spesialside]] for å døpe om en bruker (krever ''renameuser''-rettigheter)",
+ 'renameuserold' => 'Nåværende brukernavn:',
+ 'renameusernew' => 'Nytt brukernavn:',
+ 'renameuserreason' => 'Årsak for omdøping:',
+ 'renameusermove' => 'Flytt bruker- og brukerdiskusjonssider (og deres undersider) til nytt navn',
+ 'renameusersuppress' => 'Ikke opprett omdirigeringer til det nye navnet',
+ 'renameuserreserve' => 'Blokker det gamle brukernavnet fra framtidig bruk',
+ 'renameuserwarnings' => 'Advarsler:',
+ 'renameuserconfirm' => 'Ja, døp om brukeren',
+ 'renameusersubmit' => 'Utfør',
+ 'renameusererrordoesnotexist' => 'Brukeren «<nowiki>$1</nowiki>» finnes ikke.',
+ 'renameusererrorexists' => 'Brukeren «<nowiki>$1</nowiki>» finnes allerede.',
+ 'renameusererrorinvalid' => 'Brukernavnet «<nowiki>$1</nowiki>» er ugyldig.',
+ 'renameuser-error-request' => 'Det var et problem med å motta forespørselen.
+Gå tilbake og prøv igjen.',
+ 'renameuser-error-same-user' => 'Du kan ikke gi en bruker samme navn som han/hun allerede har.',
+ 'renameusersuccess' => 'Brukeren «<nowiki>$1</nowiki>» har blitt omdøpt til «<nowiki>$2</nowiki>».',
+ 'renameuser-page-exists' => 'Siden $1 finnes allerede, og kunne ikke erstattes automatisk.',
+ 'renameuser-page-moved' => 'Siden $1 har blitt flyttet til $2.',
+ 'renameuser-page-unmoved' => 'Siden $1 kunne ikke flyttes til $2.',
+ 'renameuserlogpage' => 'Omdøpingslogg',
+ 'renameuserlogpagetext' => 'Dette er en logg over endringer i brukernavn.',
+ 'renameuserlogentry' => 'døpte om $1 til «$2»',
+ 'renameuser-log' => '{{PLURAL:$1|1 bidrag|$1 bidrag}}. Ã…rsak: $2',
+ 'renameuser-move-log' => 'Flyttet side automatisk under omdøping av brukeren «[[User:$1|$1]]» til «[[User:$2|$2]]»',
+ 'right-renameuser' => 'Døpe om brukere',
+ 'renameuser-renamed-notice' => 'Denne brukeren er døpt om.
+Til informasjon er omdøpningsloggen vist nedenfor.',
+);
+
+/** Northern Sotho (Sesotho sa Leboa)
+ * @author Mohau
+ */
+$messages['nso'] = array(
+ 'renameuser' => 'Fetola leina la mošomiši',
+ 'renameuserold' => 'Leina la bjale la mošomiši:',
+ 'renameusernew' => 'Leina le lempsha la mošomiši:',
+ 'renameuserreason' => 'Lebaka lago fetola leina:',
+ 'renameuser-page-moved' => 'Letlakala $1 le hudušitšwe go $2',
+);
+
+/** Occitan (Occitan)
+ * @author Cedric31
+ */
+$messages['oc'] = array(
+ 'renameuser' => "Tornar nomenar l'utilizaire",
+ 'renameuser-desc' => "Torna nomenar un utilizaire (necessita los dreches de ''renameuser'')",
+ 'renameuserold' => "Nom actual de l'utilizaire :",
+ 'renameusernew' => "Nom novèl de l'utilizaire :",
+ 'renameuserreason' => 'Motiu del cambiament de nom :',
+ 'renameusermove' => 'Desplaçar totas las paginas de l’utilizaire cap al nom novèl',
+ 'renameuserreserve' => 'Reservar lo nom ancian per un usatge futur',
+ 'renameuserwarnings' => 'Avertiments :',
+ 'renameuserconfirm' => 'Òc, tornar nomenar l’utilizaire',
+ 'renameusersubmit' => 'Sometre',
+ 'renameusererrordoesnotexist' => "Lo nom d'utilizaire « <nowiki>$1</nowiki> » es pas valid",
+ 'renameusererrorexists' => "Lo nom d'utilizaire « <nowiki>$1</nowiki> » existís ja",
+ 'renameusererrorinvalid' => "Lo nom d'utilizaire « <nowiki>$1</nowiki> » existís pas",
+ 'renameuser-error-request' => 'Un problèma existís amb la recepcion de la requèsta. Tornatz en rèire e ensajatz tornamai.',
+ 'renameuser-error-same-user' => 'Podètz pas tornar nomenar un utilizaire amb la meteissa causa deperabans.',
+ 'renameusersuccess' => "L'utilizaire « <nowiki>$1</nowiki> » es plan estat renomenat en « <nowiki>$2</nowiki> »",
+ 'renameuser-page-exists' => 'La pagina $1 existís ja e pòt pas èsser remplaçada automaticament.',
+ 'renameuser-page-moved' => 'La pagina $1 es estada desplaçada cap a $2.',
+ 'renameuser-page-unmoved' => 'La pagina $1 pòt pas èsser renomenada en $2.',
+ 'renameuserlogpage' => "Istoric dels cambiaments de nom d'utilizaire",
+ 'renameuserlogpagetext' => "Aquò es l'istoric dels cambiaments de nom dels utilizaires",
+ 'renameuserlogentry' => 'a renomenat $1 en "$2"',
+ 'renameuser-log' => '$1 {{PLURAL:$1|edicion|edicions}}. Motiu : $2',
+ 'renameuser-move-log' => 'Pagina desplaçada automaticament al moment del cambiament de nom de l’utilizaire "[[User:$1|$1]]" en "[[User:$2|$2]]"',
+ 'right-renameuser' => "Tornar nomenar d'utilizaires",
+ 'renameuser-renamed-notice' => 'Aqueste utilizaire es estat renomenat.
+Lo jornal dels cambiaments de noms es disponible çaijós per informacion.',
+);
+
+/** Oriya (ଓଡ଼ିଆ)
+ * @author Odisha1
+ */
+$messages['or'] = array(
+ 'renameusersubmit' => 'ଦାଖଲକରିବା',
+);
+
+/** Ossetic (Иронау)
+ * @author Amikeco
+ */
+$messages['os'] = array(
+ 'renameuser' => 'Ðрхайæджы ном баив',
+ 'renameuserold' => 'Ðыры ном:',
+ 'renameusernew' => 'Ðог ном:',
+ 'renameuserreason' => 'Ðом ивыны аххоÑ:',
+ 'renameusersubmit' => 'Ðфтæ уæд',
+ 'renameuserlogpage' => 'Ðрхайджыты нæмттæ ивыны лог',
+);
+
+/** Picard (Picard)
+ * @author Geoleplubo
+ */
+$messages['pcd'] = array(
+ 'renameuser' => "Canger ch'nom d'uzeu",
+ 'renameusernew' => 'Nouvieu nom dechl uzeu',
+ 'renameuserreason' => "Motif dech canjemint d'nom",
+ 'renameuserwarnings' => 'Afute ! :',
+ 'renameuserconfirm' => 'Oui, érlonmer echl uzeu',
+ 'renameusererrorinvalid' => 'Ech nom "<nowiki>$1</nowiki>" est non-val.',
+ 'renameusersuccess' => 'Echl uzeu "<nowiki>$1</nowiki>" o té érlonmé "<nowiki>$2</nowiki>".',
+ 'renameuser-page-moved' => "L'pache $1 o té déplachée dsus $2.",
+ 'renameuser-page-unmoved' => "L'pache $1 ale n'put poin éte déplachée su $2.",
+ 'renameuserlogpage' => "Jornal d'chés canjemints éd chés noms d'uzeus",
+ 'renameuserlogpagetext' => "Ch'est un jornal éd chés canjemints d'chés noms d'uzeus.",
+ 'renameuserlogentry' => '$1 est érlonmé in "$2"',
+ 'right-renameuser' => 'Érlonmer chés uzeus',
+);
+
+/** Deitsch (Deitsch)
+ * @author Xqt
+ */
+$messages['pdc'] = array(
+ 'renameuser' => 'Naame vum Yuuser ennere',
+ 'renameuserold' => 'Current Yuusernaame:',
+ 'renameusernew' => 'Nei Yuuser-Naame',
+ 'renameuserreason' => 'Grund:',
+ 'renameuserwarnings' => 'Warninge:',
+ 'renameuserlogentry' => 'hot „$1“ nooch „$2“ gennert',
+ 'renameuser-log' => '{{PLURAL:$1|1 Ennering|$1 Enneringe}}. Grund: $2',
+);
+
+/** Pälzisch (Pälzisch)
+ * @author SPS
+ */
+$messages['pfl'] = array(
+ 'renameusersubmit' => 'Benutzer umbenenne',
+);
+
+/** Polish (Polski)
+ * @author Derbeth
+ * @author Leinad
+ * @author Maikking
+ * @author Nux
+ * @author Sp5uhe
+ * @author WarX
+ * @author Wpedzich
+ */
+$messages['pl'] = array(
+ 'renameuser' => 'Zmiana nazwy użytkownika',
+ 'renameuser-linkoncontribs' => 'zmień nazwę użytkownika',
+ 'renameuser-linkoncontribs-text' => 'Zmień nazwę tego użytkownika',
+ 'renameuser-desc' => "Zmiana nazwy użytkownika (wymaga posiadania uprawnień ''renameuser'')",
+ 'renameuserold' => 'Obecna nazwa użytkownika:',
+ 'renameusernew' => 'Nowa nazwa użytkownika:',
+ 'renameuserreason' => 'Przyczyna zmiany nazwy:',
+ 'renameusermove' => 'Przeniesienie strony osobistej i strony dyskusji użytkownika (oraz ich podstron) pod nową nazwę użytkownika',
+ 'renameusersuppress' => 'Nie twórz przekierowania do nowej nazwy',
+ 'renameuserreserve' => 'Zablokuj starą nazwę użytkownika przed możliwością użycia jej',
+ 'renameuserwarnings' => 'Ostrzeżenia:',
+ 'renameuserconfirm' => 'Zmień nazwę użytkownika',
+ 'renameusersubmit' => 'Zmień',
+ 'renameusererrordoesnotexist' => 'Użytkownik „<nowiki>$1</nowiki>†nie istnieje',
+ 'renameusererrorexists' => 'Użytkownik „<nowiki>$1</nowiki>†już istnieje',
+ 'renameusererrorinvalid' => 'Niepoprawna nazwa użytkownika „<nowiki>$1</nowiki>â€',
+ 'renameuser-error-request' => 'Wystąpił problem z odbiorem żądania.
+Cofnij się i spróbuj jeszcze raz.',
+ 'renameuser-error-same-user' => 'Nie możesz zmienić nazwy użytkownika na taką samą jaka była wcześniej.',
+ 'renameusersuccess' => 'Nazwa użytkownika „<nowiki>$1</nowiki>†zostaÅ‚a zmieniona na „<nowiki>$2</nowiki>â€',
+ 'renameuser-page-exists' => 'Strona „$1†już istnieje i nie może być automatycznie nadpisana.',
+ 'renameuser-page-moved' => 'Strona „$1†zostaÅ‚a przeniesiona pod nazwÄ™ „$2â€.',
+ 'renameuser-page-unmoved' => 'Strona „$1†nie mogÅ‚a zostać przeniesiona pod nazwÄ™ „$2â€.',
+ 'renameuserlogpage' => 'Zmiany nazw użytkowników',
+ 'renameuserlogpagetext' => 'To jest rejestr zmian nazw użytkowników',
+ 'renameuserlogentry' => 'zmieniÅ‚ nazwÄ™ użytkownika $1 na „$2â€',
+ 'renameuser-log' => '$1 {{PLURAL:$1|edycja|edycje|edycji}}. Powód: $2',
+ 'renameuser-move-log' => 'Automatyczne przeniesienie stron użytkownika po zmianie nazwy konta z „[[User:$1|$1]]†na „[[User:$2|$2]]â€',
+ 'right-renameuser' => 'Zmiana nazw kont użytkowników',
+ 'renameuser-renamed-notice' => 'Nazwa konta {{GENDER:$1|tego użytkownika|tej użytkowniczki|użytkownika(â€czki)}} zostaÅ‚a zmieniona.
+Rejestr zmian nazw kont użytkowników znajduje się poniżej.',
+);
+
+/** Piedmontese (Piemontèis)
+ * @author Borichèt
+ * @author Bèrto 'd Sèra
+ * @author Dragonòt
+ */
+$messages['pms'] = array(
+ 'renameuser' => "Arbatié n'utent",
+ 'renameuser-linkoncontribs' => "arbatié n'utent",
+ 'renameuser-linkoncontribs-text' => "Arbatié st'utent-sì",
+ 'renameuser-desc' => "A gionta na [[Special:Renameuser|pàgina special]] për arnominé n'utent (a-i é dabzògn dël drit ''renameuser'')",
+ 'renameuserold' => 'Stranòm corent:',
+ 'renameusernew' => 'Stranòm neuv:',
+ 'renameuserreason' => "Rason ch'as cambia stranòm:",
+ 'renameusermove' => 'Tramuda ëdcò la pàgina utent e cola dle ciaciarade (con tute soe sotapàgine) a lë stranòm neuv',
+ 'renameusersuppress' => 'Creé nen na ridiression al nòm neuv',
+ 'renameuserreserve' => 'Blòca lë stanòm vej da future utilisassion',
+ 'renameuserwarnings' => 'Atension:',
+ 'renameuserconfirm' => "É!, arnòmina l'utent",
+ 'renameusersubmit' => 'Falo',
+ 'renameusererrordoesnotexist' => 'A-i é pa gnun utent ch\'as ës-ciama "<nowiki>$1</nowiki>"',
+ 'renameusererrorexists' => 'N\'utent ch\'as ës-ciama "<nowiki>$1</nowiki>" a-i é già',
+ 'renameusererrorinvalid' => 'Lë stranòm "<nowiki>$1</nowiki>" a l\'é nen bon',
+ 'renameuser-error-request' => "A l'é stàit-ie un problema con l'esecussion ëd l'arcesta.
+Për piasì torna andré e preuva torna.",
+ 'renameuser-error-same-user' => "It peule pa arnominé n'utent con ël midem nòm ëd prima.",
+ 'renameusersuccess' => 'L\'utent "<nowiki>$1</nowiki>" a l\'é stait arbatià an "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => "La pàgina $1 a-i é già e as peul nen passe-ie dzora n'aotomàtich.",
+ 'renameuser-page-moved' => "La pàgina $1 a l'ha fait San Martin a $2.",
+ 'renameuser-page-unmoved' => "La pàgina $1 a l'é pa podusse tramudé a $2.",
+ 'renameuserlogpage' => "Registr dj'arbatiagi",
+ 'renameuserlogpagetext' => "Sossì a l'é un registr dle modìfiche djë stranòm dj'utent",
+ 'renameuserlogentry' => 'a l\'ha arbatià $1 an "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 modìfica|$1 modìfiche}}. Rason: $2',
+ 'renameuser-move-log' => 'Pàgina utent tramudà n\'aotomàtich damëntrè ch\'as arbatiava "[[User:$1|$1]]" an "[[User:$2|$2]]"',
+ 'right-renameuser' => "Arnòmina j'utent",
+ 'renameuser-renamed-notice' => "St'utent-sì a l'é stàit arnominà.
+Ël registr ëd l'arnòmina a l'é dàit sota për arferiment.",
+);
+
+/** Pashto (پښتو)
+ * @author Ahmed-Najib-Biabani-Ibrahimkhel
+ */
+$messages['ps'] = array(
+ 'renameuser' => 'کارن-نوم بدلول',
+ 'renameuser-linkoncontribs' => 'د کارن نوم بدلول',
+ 'renameuser-linkoncontribs-text' => 'د Ø¯Û Ú©Ø§Ø±Ù† نوم بدلول',
+ 'renameuserold' => 'اوسنی کارن-نوم:',
+ 'renameusernew' => 'نوی کارن-نوم:',
+ 'renameuserreason' => 'د نوم د بدلون سبب:',
+ 'renameuserwarnings' => 'ګواښنÛ:',
+ 'renameuserconfirm' => 'هو، کارن-نوم بدلوم',
+ 'renameusersubmit' => 'سپارل',
+ 'renameusererrordoesnotexist' => 'د "<nowiki>$1</nowiki>" په نامه کوم کارن نه شته.',
+ 'renameusererrorexists' => 'د "<nowiki>$1</nowiki>" په نامه يو کارن له پخوا نه شته.',
+ 'renameusererrorinvalid' => 'د "<nowiki>$1</nowiki>" کارن نوم سم نه دی.',
+ 'renameuser-error-request' => 'د ØºÙˆÚšØªÙ†Û Ù¾Ù‡ ترلاسه کولو Ú©Û ÙŠÙˆÙ‡ ستونزه راپÛÚšÙ‡ شوه.
+مهرباني ÙˆÚ©Ú“ÛŒ بÛرته پرشا ولاړ Ø´ÛŒ او يو ÚÙ„ بيا Ù¾Ø±Û Ú©ÙˆÚšÚš ÙˆÚ©Ú“ÛŒ.',
+ 'renameuser-page-moved' => 'د $1 مخ $2 ته ولÛږدل شو.',
+ 'renameuserlogpage' => 'د کارن-نوم يادښت',
+ 'renameuserlogentry' => 'د $1 نوم، "$2" ته بدل شو',
+ 'renameuser-log' => '{{PLURAL:$1|1 سمون|$1 سمونونه}}. سبب: $2',
+ 'right-renameuser' => 'کارن-نومونه بدلول',
+);
+
+/** Portuguese (Português)
+ * @author 555
+ * @author Giro720
+ * @author Hamilton Abreu
+ * @author Malafaya
+ * @author Waldir
+ */
+$messages['pt'] = array(
+ 'renameuser' => 'Alterar o nome do utilizador',
+ 'renameuser-linkoncontribs' => 'alterar nome do utilizador',
+ 'renameuser-linkoncontribs-text' => 'Alterar o nome deste utilizador',
+ 'renameuser-desc' => "[[Special:Renameuser|Página especial]] para alterar o nome de um utilizador (requer o privilégio ''renameuser'')",
+ 'renameuserold' => 'Nome de utilizador actual:',
+ 'renameusernew' => 'Novo nome de utilizador:',
+ 'renameuserreason' => 'Motivo da alteração de nome:',
+ 'renameusermove' => 'Mover as páginas e subpáginas de utilizador e as respectivas discussões para o novo nome',
+ 'renameusersuppress' => 'Não criar redireccionamentos para o novo nome',
+ 'renameuserreserve' => 'Impedir novos usos do antigo nome de utilizador',
+ 'renameuserwarnings' => 'Alertas:',
+ 'renameuserconfirm' => 'Sim, renomeie o utilizador',
+ 'renameusersubmit' => 'Enviar',
+ 'renameusererrordoesnotexist' => 'O utilizador "<nowiki>$1</nowiki>" não existe.',
+ 'renameusererrorexists' => 'Já existe um utilizador "<nowiki>$1</nowiki>".',
+ 'renameusererrorinvalid' => 'O nome de utilizador "<nowiki>$1</nowiki>" é inválido.',
+ 'renameuser-error-request' => 'Houve um problema ao receber este pedido.
+Retorne e tente de novo.',
+ 'renameuser-error-same-user' => 'Não é possível alterar o nome de um utilizador para o nome anterior.',
+ 'renameusersuccess' => 'O nome do utilizador "<nowiki>$1</nowiki>" foi alterado para "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'Já existe a página $1. Não é possível sobrescrever automaticamente.',
+ 'renameuser-page-moved' => 'A página $1 foi movida para $2.',
+ 'renameuser-page-unmoved' => 'Não foi possível mover a página $1 para $2.',
+ 'renameuserlogpage' => 'Registo de alteração do nome de utilizadores',
+ 'renameuserlogpagetext' => 'Este é um registo de alterações efectuadas a nomes de utilizadores.',
+ 'renameuserlogentry' => 'mudou nome $1 para "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 edição|$1 edições}}. Motivo: $2',
+ 'renameuser-move-log' => 'Página movida automaticamente ao alterar o nome do utilizador "[[User:$1|$1]]" para "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Alterar nomes de utilizadores',
+ 'renameuser-renamed-notice' => 'Este nome de utilizador foi alterado.
+É apresentado abaixo o registo de alteração do nome de utilizadores.',
+);
+
+/** Brazilian Portuguese (Português do Brasil)
+ * @author 555
+ * @author Giro720
+ */
+$messages['pt-br'] = array(
+ 'renameuser' => 'Renomear usuário',
+ 'renameuser-linkoncontribs' => 'renomear usuário',
+ 'renameuser-linkoncontribs-text' => 'excluir este usuário',
+ 'renameuser-desc' => "Adiciona uma [[Special:Renameuser|página especial]] para renomear um usuário (requer privilégio ''renameuser'')",
+ 'renameuserold' => 'Nome de usuário atual:',
+ 'renameusernew' => 'Novo nome de usuário:',
+ 'renameuserreason' => 'Motivo da alteração de nome:',
+ 'renameusermove' => 'Mover as páginas de usuário, páginas de discussão de usuário e sub-páginas para o novo nome',
+ 'renameusersuppress' => 'Não criar redirecionamentos para o novo nome',
+ 'renameuserreserve' => 'Impedir novos usos do antigo nome de usuário',
+ 'renameuserwarnings' => 'Alertas:',
+ 'renameuserconfirm' => 'Sim, renomeie o usuário',
+ 'renameusersubmit' => 'Enviar',
+ 'renameusererrordoesnotexist' => 'Não existe um usuário "<nowiki>$1</nowiki>".',
+ 'renameusererrorexists' => 'Já existe um usuário "<nowiki>$1</nowiki>".',
+ 'renameusererrorinvalid' => 'O nome de usuário "<nowiki>$1</nowiki>" é inválido.',
+ 'renameuser-error-request' => 'Houve um problema ao receber este pedido.
+Retorne e tente novamente.',
+ 'renameuser-error-same-user' => 'Não é possível renomear um usuário para o nome anterior.',
+ 'renameusersuccess' => 'O usuário "<nowiki>$1</nowiki>" foi renomeado para "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'Já existe a página $1. Não é possível sobrescrever automaticamente.',
+ 'renameuser-page-moved' => 'A página $1 foi movida com sucesso para $2.',
+ 'renameuser-page-unmoved' => 'Não foi possível mover a página $1 para $2.',
+ 'renameuserlogpage' => 'Registro de renomeação de usuários',
+ 'renameuserlogpagetext' => 'Este é um registro de alterações efetuadas em nomes de usuários.',
+ 'renameuserlogentry' => 'renomeou $1 para "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 edição|$1 edições}}. Motivo: $2',
+ 'renameuser-move-log' => 'Páginas foram movidas automaticamente ao renomear o usuário "[[User:$1|$1]]" para "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Renomear usuários',
+ 'renameuser-renamed-notice' => 'Este usuário foi renomeado.
+O registro de renomeação é fornecido abaixo para referência.',
+);
+
+/** Quechua (Runa Simi)
+ * @author AlimanRuna
+ */
+$messages['qu'] = array(
+ 'renameuser' => 'Ruraqpa sutinta hukchay',
+ 'renameuser-linkoncontribs' => 'ruraqpa sutinta hukchay',
+ 'renameuser-linkoncontribs-text' => 'Kay ruraqpa sutinta hukchay',
+ 'renameuser-desc' => "[[Special:Renameuser|Sapaq p'anqatam]] yapan ruraqpa sutinta hukchanapaq (''renameuser'' hayñi kana tiyan)",
+ 'renameuserold' => 'Kunan ruraqpa sutin:',
+ 'renameusernew' => 'Musuq ruraqpa sutin:',
+ 'renameuserreason' => 'Imarayku ruraqpa sutinta hukchasqa:',
+ 'renameusermove' => "Ruraqpa p'anqanta, rimachinanta (urin p'anqankunatapas) musuq sutinman astay",
+ 'renameusersuppress' => 'Musuq sutiman ama pusapunata kamariychu',
+ 'renameuserreserve' => "Ruraqpa mawk'a sutinta qhipaq pacha suti kanamanta hark'ay",
+ 'renameuserwarnings' => 'Yuyampaykuna:',
+ 'renameuserconfirm' => 'Arí, ruraqpa sutinta hukchay',
+ 'renameusersubmit' => 'Kachay',
+ 'renameusererrordoesnotexist' => '"<nowiki>$1</nowiki>" sutiyuq ruraqqa manam kanchu.',
+ 'renameusererrorexists' => '"<nowiki>$1</nowiki>" sutiyuq ruraqqa kachkanñam.',
+ 'renameusererrorinvalid' => '"<nowiki>$1</nowiki>" nisqa sutiqa manam allinchu.',
+ 'renameuser-error-request' => 'Manam atinichu mañasqaykita chaskiyta. Ama hina kaspa, ñawpaqman kutimuspa musuqmanta ruraykachay.',
+ 'renameuser-error-same-user' => 'Manam atinkichu ruraqpa sutinta ñawpaq suti hinalla sutinman hukchayta.',
+ 'renameusersuccess' => 'Ruraqpa "<nowiki>$1</nowiki>" nisqa sutinqa "<nowiki>$2</nowiki>" nisqa sutinman hukchasqañam.',
+ 'renameuser-page-exists' => '"<nowiki>$1</nowiki>" sutiyuq p\'anqaqa kachkanñam. Manam atinallachu kikinmanta huknachay.',
+ 'renameuser-page-moved' => '"<nowiki>$1</nowiki>" ñawpa sutiyuq ruraqpa p\'anqanqa "<nowiki>$2</nowiki>" nisqa musuq p\'anqanman astasqañam.',
+ 'renameuser-page-unmoved' => 'Manam atinichu "<nowiki>$1</nowiki>" ñawpa sutiyuq ruraqpa p\'anqanta "<nowiki>$2</nowiki>" nisqa musuq p\'anqanman astayta.',
+ 'renameuserlogpage' => "Ruraqpa sutin hukchay hallch'a",
+ 'renameuserlogpagetext' => "Kayqa ruraqkunap sutinkunata hukchaymanta hallch'am",
+ 'renameuserlogentry' => '$1-pa sutinta "$2" sutiman hukchasqa',
+ 'renameuser-log' => "{{PLURAL:$1|1 llamk'apusqa|$1 llamk'apusqakuna}}, kayrayku: $2",
+ 'renameuser-move-log' => '"[[User:$1|$1]]" ruraqpa sutinta "[[User:$2|$2]]" sutiman hukchaspa kikinmanta ruraqpa p\'anqatapas astan',
+ 'right-renameuser' => 'Ruraqpa sutinkunata hukchay',
+ 'renameuser-renamed-notice' => "Kay ruraqpa sutinqa hukchasqañam.
+Kay qatiqpiqa hukchay hallch'atam rikunki.",
+);
+
+/** Romani (Romani)
+ * @author Desiphral
+ */
+$messages['rmy'] = array(
+ 'renameusersubmit' => 'De le jeneske aver nav',
+);
+
+/** Romanian (Română)
+ * @author Cin
+ * @author Emily
+ * @author Firilacroco
+ * @author KlaudiuMihaila
+ * @author Memo18
+ * @author Minisarm
+ * @author Stelistcristi
+ */
+$messages['ro'] = array(
+ 'renameuser' => 'Redenumire utilizator',
+ 'renameuser-linkoncontribs' => 'redenumirea utilizatorului',
+ 'renameuser-linkoncontribs-text' => 'RedenumeÅŸte acest utilizator',
+ 'renameuser-desc' => "Adaugă o [[Special:Renameuser|pagină specială]] pentru a redenumi un utilizator (necesită drept de ''renameuser'')",
+ 'renameuserold' => 'Numele de utilizator existent:',
+ 'renameusernew' => 'Noul nume de utilizator:',
+ 'renameuserreason' => 'Motivul schimbării numelui:',
+ 'renameusermove' => 'Mută pagina de utilizator și pagina de discuții (și subpaginile lor) la noul nume',
+ 'renameusersuppress' => 'Nu crea redirecționări către noul nume',
+ 'renameuserreserve' => 'Blochează vechiul nume de utilizator pentru utilizări viitoare',
+ 'renameuserwarnings' => 'Avertizări:',
+ 'renameuserconfirm' => 'Da, redenumește utilizatorul',
+ 'renameusersubmit' => 'Trimite',
+ 'renameusererrordoesnotexist' => 'Utilizatorul „<nowiki>$1</nowiki>†nu există.',
+ 'renameusererrorexists' => 'Utilizatorul „<nowiki>$1</nowiki>†există deja.',
+ 'renameusererrorinvalid' => 'Numele de utilizator „<nowiki>$1</nowiki>†este invalid.',
+ 'renameuser-error-request' => 'Am întâmpinat o problemă în procesul de recepționare a cererii.
+Vă rugăm să vă întoarceți și să reîncercați.',
+ 'renameuser-error-same-user' => 'Nu puteți redenumi un utilizator la același nume ca și înainte.',
+ 'renameusersuccess' => 'Utilizatorul „$1†a fost redenumit în „$2â€',
+ 'renameuser-page-exists' => 'Pagina $1 există deja și nu poate fi suprascrisă automat.',
+ 'renameuser-page-moved' => 'Pagina $1 a fost redenumită în $2.',
+ 'renameuser-page-unmoved' => 'Pagina $1 nu poate fi redenumită în $2.',
+ 'renameuserlogpage' => 'Jurnal redenumiri utilizatori',
+ 'renameuserlogpagetext' => 'Acesta este un jurnal al modificărilor de nume de utilizator',
+ 'renameuserlogentry' => 'a redenumit $1 în „$2â€',
+ 'renameuser-log' => '{{PLURAL:$1|o contribuție|$1 contribuții}}. Motiv: $2',
+ 'renameuser-move-log' => 'Pagină mutată automat la redenumirea utilizatorului de la „[[User:$1|$1]]†la „[[User:$2|$2]]â€',
+ 'right-renameuser' => 'Redenumește utilizatori',
+ 'renameuser-renamed-notice' => 'Acestui utilizator i-a fost schimbat numele.
+Jurnalul redenumirilor este furnizat mai jos pentru referință.',
+);
+
+/** Tarandíne (Tarandíne)
+ * @author Joetaras
+ */
+$messages['roa-tara'] = array(
+ 'renameuser' => "Renomene l'utende",
+ 'renameuser-linkoncontribs' => "renomene l'utende",
+ 'renameuser-linkoncontribs-text' => 'Renomene quiste utende',
+ 'renameuser-desc' => "Aggiunge 'na [[Special:Renameuser|pàgena speciale]] pe renomena 'n'utende (abbesogne de le deritte ''renameuser'')",
+ 'renameuserold' => "Nome de l'utende de mò:",
+ 'renameusernew' => "Nome de l'utende nuève:",
+ 'renameuserreason' => "Mutive d'u cangiamende:",
+ 'renameusermove' => "Spuèste utende e pàgene de le 'ngazzaminde (e le sottopàggene) a 'u nome nuève",
+ 'renameusersuppress' => "Nò ccrejà ridirezionaminde sus a 'u nome nuève",
+ 'renameuserreserve' => "Blocche 'u nome utende vicchije da le ause future",
+ 'renameuserwarnings' => 'Avvise:',
+ 'renameuserconfirm' => "Sine, cange 'u nome a l'utende",
+ 'renameusersubmit' => 'Conferme',
+ 'renameusererrordoesnotexist' => 'L\'utende "<nowiki>$1</nowiki>" non g\'esiste.',
+ 'renameusererrorexists' => 'L\'utende "<nowiki>$1</nowiki>" esiste ggià.',
+ 'renameusererrorinvalid' => '\'U nome utende "<nowiki>$1</nowiki>" non è valide.',
+ 'renameuser-error-request' => "Stave 'nu probbleme cu 'a ricezione d'a richieste.<br />
+Pe piacere tuèrne rrete e pruève 'n'otra vote.",
+ 'renameuser-error-same-user' => "Tu non ge puè renomenà 'n'utende cu 'u stesse nome d'apprime.",
+ 'renameusersuccess' => 'L\'utende "<nowiki>$1</nowiki>" ha cangiate \'u nome jndr\'à "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => "'A pàgene $1 già esiste e non ge se pò automaticamende sovrascrivere.",
+ 'renameuser-page-moved' => "'A pàgene $1 ha state spustate sus a $2.",
+ 'renameuser-page-unmoved' => "'A pàgene $1 non ge pò essere spustate sus a $2.",
+ 'renameuserlogpage' => 'Archivije de le renomenaminde de le utinde',
+ 'renameuserlogpagetext' => "Quiste jè l'archivije de le cangiaminde de le nome de l'utinde.",
+ 'renameuserlogentry' => 'renomenate da $1 a "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 cangiamende|$1 cangiaminde}}. Mutive: $2',
+ 'renameuser-move-log' => 'Pàgena spustate automaticamende quanne è renomenate l\'utende "[[User:$1|$1]]" jndr\'à "[[User:$2|$2]]"',
+ 'right-renameuser' => "Rennomene l'utinde",
+ 'renameuser-renamed-notice' => "Stu utende ha state renomenate.
+L'archivije de le renomenaziune 'u iacchie aqquà sotte cumme referimende.",
+);
+
+/** Russian (РуÑÑкий)
+ * @author Ahonc
+ * @author EugeneZelenko
+ * @author Innv
+ * @author Kaganer
+ * @author ÐлекÑандр Сигачёв
+ */
+$messages['ru'] = array(
+ 'renameuser' => 'Переименовать учаÑтника',
+ 'renameuser-linkoncontribs' => 'переименовать учаÑтника',
+ 'renameuser-linkoncontribs-text' => 'Переименовать Ñтого учаÑтника',
+ 'renameuser-desc' => "Переименование учаÑтника (требуютÑÑ Ð¿Ñ€Ð°Ð²Ð° ''renameuser'')",
+ 'renameuserold' => 'Ð˜Ð¼Ñ Ð² наÑтоÑщий момент:',
+ 'renameusernew' => 'Ðовое имÑ:',
+ 'renameuserreason' => 'Причина переименованиÑ:',
+ 'renameusermove' => 'Переименовать также Ñтраницу учаÑтника, личное обÑуждение и их подÑтраницы',
+ 'renameusersuppress' => 'Ðе Ñоздавать перенаправлений на новое имÑ',
+ 'renameuserreserve' => 'Зарезервировать Ñтарое Ð¸Ð¼Ñ ÑƒÑ‡Ð°Ñтника Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² будущем',
+ 'renameuserwarnings' => 'ПредупреждениÑ:',
+ 'renameuserconfirm' => 'Да, переименовать учаÑтника',
+ 'renameusersubmit' => 'Выполнить',
+ 'renameusererrordoesnotexist' => 'УчаÑтник Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ «<nowiki>$1</nowiki>» не зарегиÑтрирован.',
+ 'renameusererrorexists' => 'УчаÑтник Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ «<nowiki>$1</nowiki>» уже зарегиÑтрирован.',
+ 'renameusererrorinvalid' => 'ÐедопуÑтимое Ð¸Ð¼Ñ ÑƒÑ‡Ð°Ñтника «<nowiki>$1</nowiki>»',
+ 'renameuser-error-request' => 'Возникли Ð·Ð°Ñ‚Ñ€ÑƒÐ´Ð½ÐµÐ½Ð¸Ñ Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸ÐµÐ¼ запроÑа. ПожалуйÑта, вернитеÑÑŒ назад и повторите ещё раз.',
+ 'renameuser-error-same-user' => 'Ð’Ñ‹ не можете переименовать учаÑтника в тоже имÑ, что и было раньше.',
+ 'renameusersuccess' => 'УчаÑтник «<nowiki>$1</nowiki>» был переименован в «<nowiki>$2</nowiki>».',
+ 'renameuser-page-exists' => 'Страница $1 уже ÑущеÑтвует и не может быть перезапиÑана автоматичеÑки.',
+ 'renameuser-page-moved' => 'Страница $1 была переименована в $2.',
+ 'renameuser-page-unmoved' => 'Страница $1 не может быть переименована в $2.',
+ 'renameuserlogpage' => 'Журнал переименований учаÑтников',
+ 'renameuserlogpagetext' => 'Это журнал произведённых переименований зарегиÑтрированных учаÑтников.',
+ 'renameuserlogentry' => 'переименовал $1 в «$2»',
+ 'renameuser-log' => '$1 {{PLURAL:$1|правка|правки|правок}}. Причина: $2',
+ 'renameuser-move-log' => 'ÐвтоматичеÑки в ÑвÑзи Ñ Ð¿ÐµÑ€ÐµÐ¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸ÐµÐ¼ учётной запиÑи «[[User:$1|$1]]» в «[[User:$2|$2]]»',
+ 'right-renameuser' => 'переименование учаÑтников',
+ 'renameuser-renamed-notice' => 'Этот учаÑтник был переименован.
+Ðиже Ð´Ð»Ñ Ñправки приведён журнал переименований.',
+);
+
+/** Rusyn (РуÑиньÑкый)
+ * @author Gazeb
+ */
+$messages['rue'] = array(
+ 'renameuser' => 'ПеременоватихоÑнователÑ',
+ 'renameuser-linkoncontribs' => 'переменовати хоÑнователÑ',
+ 'renameuser-linkoncontribs-text' => 'Переменовати того хоÑнователÑ',
+ 'renameuser-desc' => 'ПридаÑÑ‚ÑŒ [[Special:Renameuser|шпеціалну Ñторінку]] про Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð¾Ð²Ð°Ð½Ñ Ñ…Ð¾ÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ (треба права "renameuser")',
+ 'renameuserold' => 'Ðктуалне мено:',
+ 'renameusernew' => 'Ðове мено:',
+ 'renameuserreason' => 'Причіна переменованÑ:',
+ 'renameusermove' => 'Переменовати тыж Ñторінкы хоÑнователÑ, Ñторінкы діÑкузії Ñ– Ñ—Ñ… підÑторінкы',
+ 'renameusersuppress' => 'Ðе Ñтворюйте напрÑÐ¼Ð»Ñ—Ð½Ñ Ð½Ð° нову назву',
+ 'renameuserreserve' => 'Блоковати нову реґіÑтрацію Ñтарого мена хоÑнователÑ',
+ 'renameuserwarnings' => 'ВарованÑ:',
+ 'renameuserconfirm' => 'Гей, переменовати хоÑнователÑ',
+ 'renameusersubmit' => 'Выконати',
+ 'renameusererrordoesnotexist' => 'ХоÑнователь з іменом „<nowiki>$1</nowiki>“ не Ñ”Ñтвує',
+ 'renameusererrorexists' => 'ХоÑнователь з іменом „<nowiki>$1</nowiki>“ уж Ñ”Ñтвує',
+ 'renameusererrorinvalid' => 'ХоÑнователÑьке Ñ–Ð¼Ñ â€ž<nowiki>$1</nowiki>“ ÑÑ Ð½Ðµ даÑÑ‚ÑŒ хоÑновати',
+ 'renameuser-error-request' => 'ÐŸÐ¾Ñ‡Ð°Ñ Ð¿Ñ€Ð¸Ñ—Ð¼Ð°Ð½Ñ Ð¿Ð¾Ð¶Ð°Ð´Ð°Ð²ÐºÑ‹ дішло ку хыбі. Вернийте ÑÑ Ñ– Ñпробуйте то знову.',
+ 'renameuser-error-same-user' => 'Ðове Ñ–Ð¼Ñ Ñ…Ð¾ÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ” тото Ñаме Ñк дотеперїшнє.',
+ 'renameusersuccess' => 'ХоÑнователь „<nowiki>$1</nowiki>“ быв уÑпішно переменованый на „<nowiki>$2</nowiki>“',
+ 'renameuser-page-exists' => 'Сторінка $1 уж екзіÑтує Ñ– не може быти автоматічно перепиÑана.',
+ 'renameuser-page-moved' => 'Сторінка $1 была переменована на $2.',
+ 'renameuser-page-unmoved' => 'Сторінка $1 не може быти переменована на $2.',
+ 'renameuserlogpage' => 'Лоґ переменовань хоÑнователїв',
+ 'renameuserlogpagetext' => 'Тото Ñ” протокол переменовань хоÑнователїв',
+ 'renameuserlogentry' => 'переменовав $1 на „$2“',
+ 'renameuser-log' => '{{PLURAL:$1|1 едітованÑ|$1 едітовань|$1 едітовань}}. Причіна: $2',
+ 'renameuser-move-log' => 'Ðвтоматічне Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð¾Ð²Ð°Ð½Ñ Ñторінкы Ð¿Ð¾Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÐ¼ÐµÐ½Ð¾Ð²Ð°Ð½Ñ Ñ…Ð¾ÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ â€ž[[User:$1|$1]]“ на „[[User:$2|$2]]“',
+ 'right-renameuser' => 'ÐŸÐµÑ€ÐµÐ¼ÐµÐ½Ð¾Ð²Ð°Ð½Ñ Ñ…Ð¾Ñнователїв',
+ 'renameuser-renamed-notice' => 'Тот хоÑнователь быв переменованый.
+Про переглÑд Ñ” ниже указаный Ð²Ñ‹Ð¿Ð¸Ñ Ð· лоґу переменовань хоÑнователїв.',
+);
+
+/** Yakut (Саха тыла)
+ * @author HalanTul
+ */
+$messages['sah'] = array(
+ 'renameuser' => 'Кыттааччы аатын уларыт',
+ 'renameuser-linkoncontribs' => 'кыттааччы аатын уларытыы',
+ 'renameuser-linkoncontribs-text' => 'Бу кыттааччы аатын уларыт',
+ 'renameuser-desc' => "Кыттааччы аатын уларытыы (''renameuser'' бырааба наада)",
+ 'renameuserold' => 'Билиҥҥи аата:',
+ 'renameusernew' => 'Саҥа аата:',
+ 'renameuserreason' => 'Ðатын уларыппыт Ñ‚Ó©Ñ€Ò¯Ó©Ñ‚Ñ:',
+ 'renameusermove' => 'Кыттааччы аатын кытта кÑпÑÑÑ‚ÑÑ€ Ñирин, уонна атын ÑирÑйдÑрин ааттарын уларыт',
+ 'renameusersuppress' => 'Саҥа аакка утаарыылары оҥорума',
+ 'renameuserreserve' => 'Кыттааччы урукку аатын кÑлин туттарга анаан хааллар',
+ 'renameuserwarnings' => 'СÑÑ€ÑтиилÑÑ€:',
+ 'renameuserconfirm' => 'Сөп, аатын уларыт',
+ 'renameusersubmit' => 'Толор',
+ 'renameusererrordoesnotexist' => 'Маннык ааттаах кыттааччы «<nowiki>$1</nowiki>» бÑлиÑÑ‚ÑммÑÑ‚ÑÑ….',
+ 'renameusererrorexists' => 'Маннык ааттаах кыттааччы "<nowiki>$1</nowiki>" номнуо баар.',
+ 'renameusererrorinvalid' => 'Маннык аат "<nowiki>$1</nowiki>" көҥуллÑммÑÑ‚.',
+ 'renameuser-error-request' => 'Ð—Ð°Ð¿Ñ€Ð¾Ñ Ñ‚ÑƒÑ‚ÑƒÑƒÑ‚Ð° моһуоктанна. Бука диÑн төнүн уонна хатылаа.',
+ 'renameuser-error-same-user' => 'Кыттааччы аатын урукку аатыгар уларытар табыллыбат.',
+ 'renameusersuccess' => '"<nowiki>$1</nowiki>" кыттааччы мантан ыла "<nowiki>$2</nowiki>" диÑн ааттанна.',
+ 'renameuser-page-exists' => '$1 ÑирÑй номнуо баар онон аптамаатынан хат Ñуруллар кыаҕа Ñуох.',
+ 'renameuser-page-moved' => '$1 ÑирÑй маннык ааттаммыт $2.',
+ 'renameuser-page-unmoved' => '$1 ÑирÑй маннык $2 ааттанар кыаҕа Ñуох.',
+ 'renameuserlogpage' => 'Кыттааччылар ааттарын уларытыыларын Ñурунаала',
+ 'renameuserlogpagetext' => 'Бу бÑлиÑÑ‚Ñммит кыттааччылар ааттарын уларытыыларын Ñурунаала',
+ 'renameuserlogentry' => '$1 аатын манныкка уларытта "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|БиирдÑ|$1 төгүл}} уларыйбыт. ТөрүөтÑ: $2',
+ 'renameuser-move-log' => '«[[User:$1|$1]]» аата «[[User:$2|$2]]» буолбутунан аптамаатынан',
+ 'right-renameuser' => 'Кыттааччылар ааттарын уларытыы',
+ 'renameuser-renamed-notice' => 'Бу кыттааччы аата уларыйбыт.
+Ðллара аат уларыйыытын Ñурунаала көÑÑ‚Ó©Ñ€.',
+);
+
+/** Sardinian (Sardu)
+ * @author Andria
+ * @author Marzedu
+ */
+$messages['sc'] = array(
+ 'renameusernew' => 'Nou nùmene usuàriu:',
+);
+
+/** Sicilian (Sicilianu)
+ * @author Santu
+ */
+$messages['scn'] = array(
+ 'renameuser' => 'Rinòmina utenti',
+ 'renameuser-desc' => "Funzioni pi rinuminari n'utenti (addumanna li diritti di ''renameuser'')",
+ 'renameuserold' => 'Nomu utenti dô prisenti:',
+ 'renameusernew' => 'Novu nomu utenti:',
+ 'renameuserreason' => 'Mutivu dû caciu di nomu',
+ 'renameusermove' => 'Rinòmina macari la pàggina utenti, la pàggina di discussioni e li suttapàggini',
+ 'renameuserreserve' => 'Sarva lu vecchiu utenti pi futuri usi',
+ 'renameuserwarnings' => 'Avvisi:',
+ 'renameuserconfirm' => "Si, rinòmina st'utenti",
+ 'renameusersubmit' => 'Manna',
+ 'renameusererrordoesnotexist' => 'L\'utenti "<nowiki>$1</nowiki>" nun esisti',
+ 'renameusererrorexists' => 'L\'utenti "<nowiki>$1</nowiki>" c\'è già',
+ 'renameusererrorinvalid' => 'Lu nomu utenti "<nowiki>$1</nowiki>" nun è vàlidu',
+ 'renameuser-error-request' => "Si virificau nu prubbrema nnô ricivimentu dâ dumanna. Turnari arredi e pruvari n'àutra vota.",
+ 'renameuser-error-same-user' => "Nun si pò ri-numinari n'utenti cô stissu nomu c'avìa già.",
+ 'renameusersuccess' => 'L\'utenti "<nowiki>$1</nowiki>" vinni ri-numinatu \'n "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => "La pàggina $1 c'è già; mpussìbbili suprascrivìrila autumaticamenti.",
+ 'renameuser-page-moved' => 'La pàggina $1 vinni spustata a $2.',
+ 'renameuser-page-unmoved' => 'Mpussìbbili mòviri la pàggina $1 a $2.',
+ 'renameuserlogpage' => 'Utenti ri-numinati',
+ 'renameuserlogpagetext' => "Di sècutu sunnu elencati li ri-numinazzioni di l'utenti.",
+ 'renameuserlogentry' => 'hà ri-numinatu $1 \'n "$2"',
+ 'renameuser-log' => 'Ca havi {{PLURAL:$1|nu cuntribbutu|$1 cuntribbuti}}. Mutivu: $2',
+ 'renameuser-move-log' => 'Spustamentu autumàticu dâ pàggina - utenti ri-numinatu di "[[User:$1|$1]]" a "[[User:$2|$2]]"',
+ 'right-renameuser' => "Ri-nòmina l'utenti",
+);
+
+/** Samogitian (Žemaitėška)
+ * @author Hugo.arg
+ */
+$messages['sgs'] = array(
+ 'renameuserold' => 'Esams nauduotuojÄ— vards:',
+ 'renameusernew' => 'Naus nauduotuojÄ— vards:',
+ 'renameusersuccess' => 'Nauduotuos "<nowiki>$1</nowiki>" bova parvadÄ—nts i "<nowiki>$2</nowiki>".',
+);
+
+/** Serbo-Croatian (Srpskohrvatski / СрпÑкохрватÑки)
+ * @author OC Ripper
+ */
+$messages['sh'] = array(
+ 'renameusersubmit' => 'Unesi',
+);
+
+/** Sinhala (සිංහල)
+ * @author Budhajeewa
+ * @author තඹරු විජේසේකර
+ * @author නන්දිමිතුරු
+ * @author à·à·Šà·€à·™à¶­
+ */
+$messages['si'] = array(
+ 'renameuser' => 'පරිà·à·“ලකය෠යළි-නම්කරන්න',
+ 'renameuser-linkoncontribs' => 'පරිà·à·“ලකය෠යළි-නම්කරන්න',
+ 'renameuser-linkoncontribs-text' => 'මෙම පරිà·à·“ලකය෠ප්â€à¶»à¶­à·’-නම් කරන්න',
+ 'renameuser-desc' => "පරිà·à·“ලකයෙක් යළි-නම්කරනු වස් [[Special:Renameuser|විà·à·šà·‚ පිටුවක්]] එක් කරන්න (''renameuser'' අයිතිය අවà·à·Šâ€à¶ºà¶ºà·’)",
+ 'renameuserold' => 'වත්මන් පරිà·à·“ලක නà·à¶¸à¶º:',
+ 'renameusernew' => 'නව පරිà·à·“ලක නà·à¶¸à¶º:',
+ 'renameuserreason' => 'යළි-නම්කිරීමට හේතුව:',
+ 'renameusermove' => 'පරිà·à·“ලක à·„à· à·ƒà·à¶šà¶ à·Šà¶¡à· පිටු (හ෠ඒවà·à¶ºà·š උපපිටු) නව නම වෙතට ගෙන යන්න',
+ 'renameusersuppress' => 'යළි යොමුවන් නම නà·à¶¸à¶ºà·š à·ƒà·à¶šà·ƒà·“මෙන් වළකින්න.',
+ 'renameuserreserve' => 'පà·à¶»à¶«à·’ පරිà·à·“ලක නම අනà·à¶œà¶­ භà·à·€à·’තයෙන් à·€à·à¶»à¶«à¶º කරන්න',
+ 'renameuserwarnings' => 'අවවà·à¶¯à¶ºà¶±à·Š:',
+ 'renameuserconfirm' => 'ඔව්, පරිà·à·“ලකය෠යළි-නම්කරන්න',
+ 'renameusersubmit' => 'යොමන්න',
+ 'renameusererrordoesnotexist' => '"<nowiki>$1</nowiki>" පරිà·à·“ලකය෠නොපවතී.',
+ 'renameusererrorexists' => '"<nowiki>$1</nowiki>" පරිà·à·“ලකය෠දà·à¶±à¶§à¶¸à¶­à·Š පවතියි.',
+ 'renameusererrorinvalid' => '"<nowiki>$1</nowiki>" පරිà·à·“ලක නà·à¶¸à¶º අනීතිකයි.',
+ 'renameuser-error-request' => 'ඉල්ලීම ලà·à¶¶à·“මේ දà·à·‚යක් හට ගà·à¶±à·’නි.
+කරුණà·à¶šà¶» ආපසු ගොස් නà·à·€à¶­ උත්සà·à·„ කරන්න.',
+ 'renameuser-error-same-user' => 'ඔබට පරිà·à·“ලකයෙක් පෙර තිබූ නමටම ප්â€à¶»à¶­à·’නම්කළ නොහà·à¶š.',
+ 'renameusersuccess' => '"<nowiki>$1</nowiki>" පරිà·à·“ලකය෠"<nowiki>$2</nowiki>" වෙත ප්â€à¶»à¶­à·’නම් කෙරිනි.',
+ 'renameuser-page-exists' => '$1 පිටුව දà·à¶±à¶§à¶¸à¶­à·Š පවතින අතර, එය ස්වයංක්â€à¶»à·“යව අධිලිවීමකට භà·à¶¢à¶±à¶º කල නොහà·à¶š.',
+ 'renameuser-page-moved' => ' $1 පිටුව $2 වෙත ගෙනයන ලදි.',
+ 'renameuser-page-unmoved' => ' $1 පිටුව $2 වෙත ගෙනය෠නොහà·à¶š.',
+ 'renameuserlogpage' => 'පරිà·à·“ලක ප්â€à¶»à¶­à·’නම්කෙරුම් ලොගය',
+ 'renameuserlogpagetext' => 'මෙය පරිà·à·“ලක නà·à¶¸ වෙනස්වීම් පිළිබඳ ලà¶à·”-සටහනකි.',
+ 'renameuserlogentry' => '$1, "$2" ලෙස ප්â€à¶»à¶­à·’නම් කෙරිනි',
+ 'renameuser-log' => '{{PLURAL:$1|එක් සංස්කරණයක්|සංස්කරණ $1 ක්}}. හේතුව: $2',
+ 'renameuser-move-log' => 'පරිà·à·“ලක "[[User:$1|$1]]", "[[User:$2|$2]]" වෙත ප්â€à¶»à¶­à·’නම්කරන අතරතුර පිටුව ස්â€à·€à¶ºà¶‚ක්â€à¶»à·“යව ගෙනයන ලදී',
+ 'right-renameuser' => 'පරිà·à·“ලකයන් ප්â€à¶»à¶­à·’නම් කරන්න',
+ 'renameuser-renamed-notice' => 'මෙම පරිà·à·“ලකය෠ප්â€à¶»à¶­à·’නම්කර ඇත.
+ප්â€à¶»à¶­à·’නම්කෙරුම් ලà¶à·”-සටහන පහත දක්ව෠ඇත.',
+);
+
+/** Slovak (SlovenÄina)
+ * @author Helix84
+ * @author Jkjk
+ */
+$messages['sk'] = array(
+ 'renameuser' => 'Premenovať používateľa',
+ 'renameuser-linkoncontribs' => 'premenovať používateľa',
+ 'renameuser-linkoncontribs-text' => 'Premenovať tohto používateľa',
+ 'renameuser-desc' => "Premenovať používateľa (vyžaduje právo ''renameuser'')",
+ 'renameuserold' => 'SúÄasné používateľské meno:',
+ 'renameusernew' => 'Nové používateľské meno:',
+ 'renameuserreason' => 'Dôvod premenovania:',
+ 'renameusermove' => 'Presunúť používateľské a diskusné stránky (a ich podstránky) na nový názov',
+ 'renameusersuppress' => 'Nevytvárať presmerovania na nový názov',
+ 'renameuserreserve' => 'VyhradiÅ¥ staré používateľské meno (zabrániÅ¥ ÄalÅ¡iemu použitiu)',
+ 'renameuserwarnings' => 'Upozornenia:',
+ 'renameuserconfirm' => 'Ãno, premenovaÅ¥ používateľa',
+ 'renameusersubmit' => 'Odoslať',
+ 'renameusererrordoesnotexist' => 'Používateľ „<nowiki>$1</nowiki>“ neexistuje',
+ 'renameusererrorexists' => 'Používateľ „<nowiki>$1</nowiki>“ už existuje',
+ 'renameusererrorinvalid' => 'Používateľské meno „<nowiki>$1</nowiki>“ je neplatné',
+ 'renameuser-error-request' => 'Pri prijímaní vašej požiadavky nastal problém. Prosím, vráťte sa a skúste to znova.',
+ 'renameuser-error-same-user' => 'Nemôžete premenovať používateľa na rovnaké meno ako mal predtým.',
+ 'renameusersuccess' => 'Používateľ „<nowiki>$1</nowiki>“ bol premenovaný na „<nowiki>$2</nowiki>“',
+ 'renameuser-page-exists' => 'Stránka $1 už existuje a nie je možné ju automaticky prepísať.',
+ 'renameuser-page-moved' => 'Stránka $1 bola presunutá na $2.',
+ 'renameuser-page-unmoved' => 'Stránku $1 nebolo možné presunúť na $2.',
+ 'renameuserlogpage' => 'Záznam premenovaní používateľov',
+ 'renameuserlogpagetext' => 'Toto je záznam premenovaní používateľov',
+ 'renameuserlogentry' => 'premenoval používateľa $1 na „$2â€',
+ 'renameuser-log' => 'mal {{PLURAL:$1|1 úpravu|$1 úpravy|$1 úprav}}. Dôvod: $2',
+ 'renameuser-move-log' => 'Automaticky presunutá stránka poÄas premenovania používateľa „[[User:$1|$1]]“ na „[[User:$2|$2]]“',
+ 'right-renameuser' => 'Premenovávať používateľov',
+ 'renameuser-renamed-notice' => 'Tento používateľ bol premenovaný.
+Dolu nájdete záznam premenovaní.',
+);
+
+/** Slovenian (SlovenÅ¡Äina)
+ * @author Dbc334
+ */
+$messages['sl'] = array(
+ 'renameuser' => 'Preimenovanje uporabnika',
+ 'renameuser-linkoncontribs' => 'preimenuj uporabnika',
+ 'renameuser-linkoncontribs-text' => 'Preimenuj tega uporabnika',
+ 'renameuser-desc' => "Doda [[Special:Renameuser|posebno stran]] za preimenovanje uporabnika (potrebna je pravica ''renameuser'')",
+ 'renameuserold' => 'Trenutno uporabniško ime:',
+ 'renameusernew' => 'Novo uporabniško ime:',
+ 'renameuserreason' => 'Razlog preimenovanja:',
+ 'renameusermove' => 'Prestavi uporabniške in pogovorne strani (ter njihove podstrani) na novo ime',
+ 'renameusersuppress' => 'Ne ustvari preusmeritev na novo ime',
+ 'renameuserreserve' => 'Blokiraj staro uporabniško ime pred nadaljnjo uporabo',
+ 'renameuserwarnings' => 'Opozorila:',
+ 'renameuserconfirm' => 'Da, preimenuj uporabnika',
+ 'renameusersubmit' => 'Potrdi',
+ 'renameusererrordoesnotexist' => 'Uporabnik »<nowiki>$1</nowiki>« ne obstaja.',
+ 'renameusererrorexists' => 'Uporabnik »<nowiki>$1</nowiki>« že obstaja.',
+ 'renameusererrorinvalid' => 'Uporabniško ime »<nowiki>$1</nowiki>« ni veljavno.',
+ 'renameuser-error-request' => 'Pri prejemanju zahteve je prišlo do težave.
+Prosimo, pojdite nazaj in poskusite znova.',
+ 'renameuser-error-same-user' => 'Ne morete preimenovati uporabnika na enako stvar kot prej.',
+ 'renameusersuccess' => 'Uporabnik »<nowiki>$1</nowiki>« je bil preimenovan v »<nowiki>$2</nowiki>«.',
+ 'renameuser-page-exists' => 'Stran $1 že obstaja in je ni mogoÄe samodejno prepisati.',
+ 'renameuser-page-moved' => 'Stran $1 je bila prestavljena na $2.',
+ 'renameuser-page-unmoved' => 'Strani $1 ni mogoÄe prestaviti na $2.',
+ 'renameuserlogpage' => 'Dnevnik preimenovanj uporabnikov',
+ 'renameuserlogpagetext' => 'Prikazan je dnevnik sprememb uporabniških imen.',
+ 'renameuserlogentry' => '- preimenovanje $1 v »$2«',
+ 'renameuser-log' => '$1 {{PLURAL:$1|urejanje|urejanji|urejanja|urejanj}}. Razlog: $2',
+ 'renameuser-move-log' => 'Samodejno prestavljanje strani pri preimenovanju uporabnika »[[User:$1|$1]]« v »[[User:$2|$2]]«',
+ 'right-renameuser' => 'Preimenovanje uporabnikov',
+ 'renameuser-renamed-notice' => 'Ta uporabnik je bil preimenovan.
+Dnevnik preimenovanja je naveden spodaj.',
+);
+
+/** Lower Silesian (Schläsch)
+ * @author Schläsinger
+ */
+$messages['sli'] = array(
+ 'renameuserold' => 'Bisheriger Benutzernoame:',
+ 'renameusernew' => 'Neuer Benutzernoame:',
+ 'renameuserreason' => 'Grund:',
+);
+
+/** Albanian (Shqip)
+ * @author Dori
+ * @author Mikullovci11
+ * @author Olsi
+ */
+$messages['sq'] = array(
+ 'renameuser' => 'Riemëroje përdoruesin',
+ 'renameuser-linkoncontribs' => 'Riemëroje përdoruesin',
+ 'renameuser-linkoncontribs-text' => 'Riemëroje këtë përdoruesin',
+ 'renameuser-desc' => "Shton një [[Special:Renameuser|faqe speciale]] për të riemëruar një përdorues (duhet e drejta ''renameuser'')",
+ 'renameuserold' => 'Emri i tanishëm',
+ 'renameusernew' => 'Emri i ri',
+ 'renameuserreason' => 'Arsyeja për riemërim:',
+ 'renameusermove' => 'Zhvendos faqet e përdoruesit dhe të diskutimit (dhe nën-faqet e tyre) tek emri i ri',
+ 'renameusersuppress' => 'Mos krijoni përcjellime tek emri i ri',
+ 'renameuserreserve' => 'Bllokoni emrin e vjetër të përdoruesit të përdorim në të ardhmen',
+ 'renameuserwarnings' => 'Paralajmërimet:',
+ 'renameuserconfirm' => 'Po, ndërrojë emrin e përdoruesit',
+ 'renameusersubmit' => 'Ndryshoje',
+ 'renameusererrordoesnotexist' => 'Përdoruesi me emër "<nowiki>$1</nowiki>" nuk ekziston',
+ 'renameusererrorexists' => 'Përdoruesi me emër "<nowiki>$1</nowiki>" ekziston',
+ 'renameusererrorinvalid' => 'Emri "<nowiki>$1</nowiki>" nuk është i lejuar',
+ 'renameuser-error-request' => 'Kishte një problem me marrjen e kërkesës.
+Ju lutemi kthehuni prapa dhe provoni përsëri.',
+ 'renameuser-error-same-user' => 'Ju nuk mund të riemëroni një përdorues tek e njëjta gjë si më parë.',
+ 'renameusersuccess' => 'Përdoruesi "<nowiki>$1</nowiki>" u riemërua në "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'Faqja $1 ekziston dhe nuk mund të mbivendoset automatikisht.',
+ 'renameuser-page-moved' => 'Faqja $1 është zhvendosur tek $2.',
+ 'renameuser-page-unmoved' => "Faqja $1 s'mund të zhvendosej tek $2.",
+ 'renameuserlogpage' => 'Regjistri i emër-ndryshimeve',
+ 'renameuserlogpagetext' => 'Ky është një regjistër i ndryshimeve së emrave të përdoruesve',
+ 'renameuserlogentry' => 'riemëruar $1 tek "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 redaktim|$1 redaktime}}. Arsyeja: $2',
+ 'renameuser-move-log' => 'Lëvizi faqen automatikisht kur riemëroi përdoruesin "[[User:$1|$1]]" në "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Riemëroni përdorueset',
+ 'renameuser-renamed-notice' => 'Ky përdorues është riemëruar.
+Regjistri i riemërimit është poshtë për referencë.',
+);
+
+/** Serbian Cyrillic ekavian (‪СрпÑки (ћирилица)‬)
+ * @author Millosh
+ * @author Rancher
+ * @author Sasa Stefanovic
+ * @author Жељко Тодоровић
+ * @author Михајло Ðнђелковић
+ */
+$messages['sr-ec'] = array(
+ 'renameuser' => 'Преименуј кориÑника',
+ 'renameuser-linkoncontribs' => 'преименуј кориÑника',
+ 'renameuser-linkoncontribs-text' => 'Преименуј овог кориÑника',
+ 'renameuser-desc' => "Додаје [[Special:Renameuser|поÑебну Ñтраницу]] за преименовање кориÑника (потребно право ''renameuser'')",
+ 'renameuserold' => 'Тренутно кориÑничко име:',
+ 'renameusernew' => 'Ðово кориÑничко име:',
+ 'renameuserreason' => 'Разлог:',
+ 'renameusermove' => 'ПремеÑти кориÑничку Ñтраницу и Ñтраницу за разговор (и њихове подÑтранице) на нови назив',
+ 'renameusersuppress' => 'Ðе правите преуÑмерења на нови назив',
+ 'renameuserreserve' => 'Блокирај Ñтаро кориÑничко име за даљу употребу',
+ 'renameuserwarnings' => 'Упозорења:',
+ 'renameuserconfirm' => 'Да, преименуј кориÑника',
+ 'renameusersubmit' => 'Прихвати',
+ 'renameusererrordoesnotexist' => 'КориÑник „<nowiki>$1</nowiki>“ не поÑтоји.',
+ 'renameusererrorexists' => 'КориÑник „<nowiki>$1</nowiki>“ већ поÑтоји.',
+ 'renameusererrorinvalid' => 'Погрешно кориÑничко име: "<nowiki>$1</nowiki>"',
+ 'renameuser-error-request' => 'Дошло је до проблема при примању захтева.
+Вратите Ñе назад и покушајте поново.',
+ 'renameuser-error-same-user' => 'Ðе можете преименовати кориÑника у иÑто име.',
+ 'renameusersuccess' => 'КориÑник "<nowiki>$1</nowiki>" је преименован на "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'Страница $1 већ поÑтоји и не може Ñе заменити.',
+ 'renameuser-page-moved' => 'Страница $1 је премештена у $2.',
+ 'renameuser-page-unmoved' => 'Страница $1 Ñе не може премеÑтити у $2.',
+ 'renameuserlogpage' => 'ИÑторија преименовања кориÑника',
+ 'renameuserlogpagetext' => 'Ово је иÑторија измена кориÑничких имена.',
+ 'renameuserlogentry' => '{{GENDER:|је преименовао|је преименовала|преименова}} $1 у „$2“',
+ 'renameuser-log' => '{{PLURAL:$1|1 измена|$1 измене|$1 измена}}.
+Разлог: $2',
+ 'renameuser-move-log' => 'Премештене Ñтранице приликом преименовања кориÑника: „[[User:$1|$1]]“ у „[[User:$2|$2]]“.',
+ 'right-renameuser' => 'преименовање кориÑничких имена',
+ 'renameuser-renamed-notice' => 'Овом кориÑнику је промењено име.
+ИÑторија промена имена је приложена иÑпод, као информација.',
+);
+
+/** Serbian Latin ekavian (‪Srpski (latinica)‬)
+ * @author Liangent
+ * @author Michaello
+ * @author Жељко Тодоровић
+ */
+$messages['sr-el'] = array(
+ 'renameuser' => 'Preimenuj korisnika',
+ 'renameuser-linkoncontribs' => 'preimenuj korisnika',
+ 'renameuser-linkoncontribs-text' => 'Preimenuj ovog korisnika',
+ 'renameuser-desc' => "Dodaje [[Special:Renameuser|posebnu stranicu]] za preimenovanje korisnika (potrebno pravo ''renameuser'').",
+ 'renameuserold' => 'Trenutno korisniÄko ime:',
+ 'renameusernew' => 'Novo korisniÄko ime:',
+ 'renameuserreason' => 'Razlog preimenovanja:',
+ 'renameusermove' => 'Premesti korisniÄku stranicu i stranicu za razgovor (i njihove podstranice) na novo ime',
+ 'renameuserreserve' => 'Blokiraj staro korisniÄko ime za dalju upotrebu',
+ 'renameuserwarnings' => 'Upozorenja:',
+ 'renameuserconfirm' => 'Da, preimenuj korisniÄko ime.',
+ 'renameusersubmit' => 'Prihvati',
+ 'renameusererrordoesnotexist' => 'Korisnik "<nowiki>$1</nowiki>" ne postoji',
+ 'renameusererrorexists' => 'Korisnik "<nowiki>$1</nowiki>" već postoji',
+ 'renameusererrorinvalid' => 'PogreÅ¡no korisniÄko ime: "<nowiki>$1</nowiki>"',
+ 'renameuser-error-request' => 'Javio se problem prilikom prihvatanja zahteva. Idi nazad i pokušaj ponovo.',
+ 'renameuser-error-same-user' => 'Ne možeÅ¡ preimenovati korisniÄko ime u isto kao i prethodno.',
+ 'renameusersuccess' => 'Korisnik "<nowiki>$1</nowiki>" je preimenovan na "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'Stranica $1 već postoji i ne može biti automatski presnimljena.',
+ 'renameuser-page-moved' => 'Stranica $1 je premeštena na $2.',
+ 'renameuser-page-unmoved' => 'Stranica $1 ne može biti premeštena na $2.',
+ 'renameuserlogpage' => 'Istorija preimenovanja korisnika',
+ 'renameuserlogpagetext' => 'Ovo je istorija izmena korisniÄkih imena.',
+ 'renameuserlogentry' => 'je preimenovao $1 u „$2“',
+ 'renameuser-log' => '{{PLURAL:$1|1 izmena|$1 izmene|$1 izmena}}. Razlog: $2',
+ 'renameuser-move-log' => 'Automatski pomerene stranice prilikom preimenovanja korisniÄkog imena: „[[User:$1|$1]]“ u „[[User:$2|$2]]“.',
+ 'right-renameuser' => 'preimenovanje korisniÄkih imena',
+ 'renameuser-renamed-notice' => 'Ovom korisniku je promenjeno ime.
+Istorija promena imena je priložena ispod, kao informacija.',
+);
+
+/** Seeltersk (Seeltersk)
+ * @author Maartenvdbent
+ * @author Pyt
+ */
+$messages['stq'] = array(
+ 'renameuser' => 'Benutsernoome annerje',
+ 'renameuser-desc' => "Föiget ne [[Special:Renameuser|Spezioalsiede]] bietou tou Uumbenaamenge fon n Benutser (fräiget dät ''renameuser''-Gjucht)",
+ 'renameuserold' => 'Benutsernoomer bithäär:',
+ 'renameusernew' => 'Näie Benutsernoome:',
+ 'renameuserreason' => 'Gruund foar Uumenaame:',
+ 'renameusermove' => 'Ferschuuwe Benutser-/Diskussionssiede inkl. Unnersieden ap dän näie Benutsernoome',
+ 'renameuserreserve' => 'Blokkierje dän oolde Benutsernoome foar ne näie Registrierenge',
+ 'renameuserwarnings' => 'Woarschauengen:',
+ 'renameuserconfirm' => 'Jee, Benutser uumbenaame',
+ 'renameusersubmit' => 'Uumbenaame',
+ 'renameusererrordoesnotexist' => 'Die Benutsernoome "<nowiki>$1</nowiki>" bestoant nit',
+ 'renameusererrorexists' => 'Die Benutsernoome "<nowiki>$1</nowiki>" bestoant al',
+ 'renameusererrorinvalid' => 'Die Benutsernoome "<nowiki>$1</nowiki>" is uungultich',
+ 'renameuser-error-request' => 'Dät roat n Problem bie dän Ämpfang fon ju Anfroage. Fersäik jädden nochmoal.',
+ 'renameuser-error-same-user' => 'Oolde un näie Benutsernoome sunt identisk.',
+ 'renameusersuccess' => 'Die Benutser "<nowiki>$1</nowiki>" wuude mäd Ärfoulch uumenaamd in "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'Ju Siede $1 bestoant al un kon nit automatisk uurschrieuwen wäide.',
+ 'renameuser-page-moved' => 'Ju Siede $1 wuude ätter $2 ferschäuwen.',
+ 'renameuser-page-unmoved' => 'Ju Siede $1 kuude nit ätter $2 ferschäuwen wäide.',
+ 'renameuserlogpage' => 'Benutsernoomenannerengs-Logbouk',
+ 'renameuserlogpagetext' => 'In dit Logbouk wäide do Annerengen fon Benutsernoomen protokollierd.',
+ 'renameuserlogentry' => 'häd "$1" in "$2" uumenaamd',
+ 'renameuser-log' => '{{PLURAL:$1|1 Beoarbaidenge|$1 Beoarbaidengen}}. Gruund: $2',
+ 'renameuser-move-log' => 'truch ju Uumbenaamenge fon „[[User:$1|$1]]“ ätter „[[User:$2|$2]]“ automatisk ferschäuwene Siede.',
+ 'right-renameuser' => 'Benutser uumenaame',
+);
+
+/** Sundanese (Basa Sunda)
+ * @author Irwangatot
+ * @author Kandar
+ */
+$messages['su'] = array(
+ 'renameuser' => 'Ganti ngaran pamaké',
+ 'renameuser-desc' => "Ganti ngaran pamaké (perlu kawenangan ''renameuser'')",
+ 'renameuserold' => 'Ngaran pamaké ayeuna:',
+ 'renameusernew' => 'Ngaran pamaké anyar:',
+ 'renameuserreason' => 'Alesan ganti ngaran:',
+ 'renameusermove' => 'Pindahkeun kaca pamaké jeung obrolanna (jeung sub-kacanna) ka ngaran anyar',
+ 'renameusersubmit' => 'Kirim',
+ 'renameusererrordoesnotexist' => 'Euweuh pamaké nu ngaranna "<nowiki>$1</nowiki>"',
+ 'renameusererrorexists' => 'Pamaké "<nowiki>$1</nowiki>" geus aya',
+ 'renameusererrorinvalid' => 'Ngaran pamaké "<nowiki>$1</nowiki>" teu sah',
+ 'renameuser-error-request' => 'Aya gangguan nalika nampa paménta. Coba balik deui, terus cobaan deui.',
+ 'renameuser-error-same-user' => 'Anjeun teu bisa ngaganti ngaran pamaké ka ngaran nu éta-éta kénéh.',
+ 'renameusersuccess' => 'Pamaké "<nowiki>$1</nowiki>" geus diganti ngaranna jadi "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'Kaca $1 geus aya sarta teu bisa ditimpah kitu baé.',
+ 'renameuser-page-moved' => 'Kaca $1 geus dipindahkeun ka $2.',
+ 'renameuser-page-unmoved' => 'Kaca $1 teu bisa dipindahkeun ka $2.',
+ 'renameuserlogpage' => 'Log ganti ngaran',
+ 'renameuserlogpagetext' => 'Ieu minangka log parobahan ngaran pamaké',
+ 'renameuserlogentry' => 'geus ngaganti ngaran $1 jadi "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 édit|$1 édit}}. Alesan: $2',
+ 'renameuser-move-log' => 'Otomatis mindahkeun kaca nalika ngaganti ngaran "[[User:$1|$1]]" jadi "[[User:$2|$2]]"',
+);
+
+/** Swedish (Svenska)
+ * @author Boivie
+ * @author Cohan
+ * @author Dafer45
+ * @author Habj
+ * @author Lejonel
+ * @author M.M.S.
+ * @author Najami
+ * @author Per
+ */
+$messages['sv'] = array(
+ 'renameuser' => 'Byt användarnamn',
+ 'renameuser-linkoncontribs' => 'byt användarnamn',
+ 'renameuser-linkoncontribs-text' => 'byt namn på denna användare',
+ 'renameuser-desc' => "Lägger till en [[Special:Renameuser|specialsida]] för att byta namn på en användare (kräver behörigheten ''renameuser'')",
+ 'renameuserold' => 'Nuvarande användarnamn:',
+ 'renameusernew' => 'Nytt användarnamn:',
+ 'renameuserreason' => 'Anledning till namnbytet:',
+ 'renameusermove' => 'Flytta användarsidan och användardiskussionen (och deras undersidor) till det nya namnet',
+ 'renameusersuppress' => 'Skapa inte omdirigeringar till det nya namnet',
+ 'renameuserreserve' => 'Reservera det gamla användarnamnet från framtida användning',
+ 'renameuserwarnings' => 'Varningar:',
+ 'renameuserconfirm' => 'Ja, byt namn på användaren',
+ 'renameusersubmit' => 'Verkställ',
+ 'renameusererrordoesnotexist' => 'Användaren "<nowiki>$1</nowiki>" finns inte',
+ 'renameusererrorexists' => 'Användaren "<nowiki>$1</nowiki>" finns redan.',
+ 'renameusererrorinvalid' => 'Användarnamnet "<nowiki>$1</nowiki>" är ogiltigt.',
+ 'renameuser-error-request' => 'Ett problem inträffade i hanteringen av begäran. Gå tillbaks och försök igen.',
+ 'renameuser-error-same-user' => 'Du kan inte byta namn på en användare till samma som tidigare.',
+ 'renameusersuccess' => 'Användaren "<nowiki>$1</nowiki>" har fått sitt namn bytt till "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'Sidan $1 finns redan och kan inte skrivas över automatiskt.',
+ 'renameuser-page-moved' => 'Sidan $1 har flyttats till $2.',
+ 'renameuser-page-unmoved' => 'Sidan $1 kunde inte flyttas till $2.',
+ 'renameuserlogpage' => 'Logg över användarnamnsbyten',
+ 'renameuserlogpagetext' => 'Detta är en logg över byten av användarnamn',
+ 'renameuserlogentry' => 'bytte namn på $1 till "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 redigering|$1 redigeringar}}. Anledning: $2',
+ 'renameuser-move-log' => 'Flyttade automatiskt sidan när namnet byttes på användaren "[[User:$1|$1]]" till "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Ändra användares namn',
+ 'renameuser-renamed-notice' => 'Användaren har fått ett nytt namn.
+Som referens återfinns omdöpningsloggen nedan.',
+);
+
+/** Swahili (Kiswahili) */
+$messages['sw'] = array(
+ 'renameusersubmit' => 'Wasilisha',
+);
+
+/** Tamil (தமிழà¯)
+ * @author TRYPPN
+ */
+$messages['ta'] = array(
+ 'renameuserold' => 'தறà¯à®ªà¯‹à®¤à¯ˆà®¯ பயனர௠பெயரà¯:',
+ 'renameusernew' => 'பà¯à®¤à®¿à®¯ பயனர௠பெயரà¯:',
+ 'renameuserreason' => 'மறà¯à®ªà¯†à®¯à®°à¯à®•à¯à®•à®¾à®© காரணமà¯:',
+ 'renameuserwarnings' => 'எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ:',
+ 'renameuserconfirm' => 'சரி, பயனரà¯à®•à¯à®•à¯ மாறà¯à®±à¯à®ªà¯à®ªà¯†à®¯à®°à¯ கொடà¯à®•à¯à®•à®µà¯à®®à¯',
+ 'renameusersubmit' => 'சமரà¯à®ªà¯à®ªà®¿',
+);
+
+/** Telugu (తెలà±à°—à±)
+ * @author Chaduvari
+ * @author Mpradeep
+ * @author Veeven
+ */
+$messages['te'] = array(
+ 'renameuser' => 'వాడà±à°•à°°à°¿ పేరà±à°®à°¾à°°à±à°šà±',
+ 'renameuser-linkoncontribs' => 'వాడà±à°•à°°à°¿ పేరà±à°®à°¾à°°à±à°šà±',
+ 'renameuser-linkoncontribs-text' => 'à°ˆ వాడà±à°•à°°à°¿ పేరà±à°¨à°¿ మారà±à°šà°‚à°¡à°¿',
+ 'renameuser-desc' => "వాడà±à°•à°°à°¿ పేరౠమారà±à°šà°‚à°¡à°¿ (''renameuser'' à°…à°¨à±à°¨ అధికారం కావాలి)",
+ 'renameuserold' => 'à°ªà±à°°à°¸à±à°¤à±à°¤ వాడà±à°•à°°à°¿ పేరà±:',
+ 'renameusernew' => 'కొతà±à°¤ వాడà±à°•à°°à°¿ పేరà±:',
+ 'renameuserreason' => 'పేరౠమారà±à°šà°¡à°¾à°¨à°¿à°•à°¿ కారణం:',
+ 'renameusermove' => 'సభà±à°¯à±à°¨à°¿ పేజీ, à°šà°°à±à°šà°¾à°ªà±‡à°œà±€à°²à°¨à± (వాటి ఉపపేజీలతో సహా) కొతà±à°¤ పేరà±à°•à± తరలించండి',
+ 'renameusersuppress' => 'కొతà±à°¤ పేరà±à°•à°¿ దారిమారà±à°ªà±à°²à± సృషà±à°Ÿà°¿à°‚à°šà°•à±',
+ 'renameuserreserve' => 'పాత వాడà±à°•à°°à°¿à°ªà±‡à°°à±à°¨à°¿ భవిషà±à°¯à°¤à±à°¤à±à°²à±‹ వాడకà±à°‚à°¡à°¾ నిరోధించà±',
+ 'renameuserwarnings' => 'హెచà±à°šà°°à°¿à°•à°²à±:',
+ 'renameuserconfirm' => 'à°…à°µà±à°¨à±, వాడà±à°•à°°à°¿ పేరౠమారà±à°šà±',
+ 'renameusersubmit' => 'పంపించà±',
+ 'renameusererrordoesnotexist' => '"<nowiki>$1</nowiki>" పేరà±à°—à°² వాడà±à°•à°°à°¿ లేరà±.',
+ 'renameusererrorexists' => '"<nowiki>$1</nowiki>" పేరà±à°¤à±‹ వాడà±à°•à°°à°¿ ఇపà±à°ªà°Ÿà°¿à°•à±‡ ఉనà±à°¨à°¾à°°à±.',
+ 'renameusererrorinvalid' => '"<nowiki>$1</nowiki>" అనే వాడà±à°•à°°à°¿à°ªà±‡à°°à± సరైనది కాదà±.',
+ 'renameuser-error-request' => 'మీ à°…à°­à±à°¯à°°à±à°¥à°¨à°¨à± à°¸à±à°µà±€à°•à°°à°¿à°‚చేటపà±à°ªà±à°¡à± à°’à°• సమసà±à°¯ తలెతà±à°¤à°¿à°‚ది. దయచేసి వెనకà±à°•à± వెళà±à°²à°¿ ఇంకోసారి à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿.',
+ 'renameuser-error-same-user' => 'సభà±à°¯à°¨à°¾à°®à°¾à°¨à±à°¨à°¿ ఇంతకౠమà±à°‚దౠఉనà±à°¨ సభà±à°¯à°¨à°¾à°®à°‚తోనే మారà±à°šà°¡à°‚ à°•à±à°¦à°°à°¦à±.',
+ 'renameusersuccess' => '"<nowiki>$1</nowiki>" అనే సభà±à°¯à°¨à°¾à°®à°¾à°¨à±à°¨à°¿ "<nowiki>$2</nowiki>"à°—à°¾ మారà±à°šà±‡à°¸à°¾à°‚.',
+ 'renameuser-page-exists' => '$1 పేజీ ఇపà±à°ªà°Ÿà°¿à°•à±‡ ఉంది, కాబటà±à°Ÿà°¿ ఆటోమాటిగà±à°—à°¾ దానిపై కొతà±à°¤à°ªà±‡à°œà±€à°¨à°¿ à°°à±à°¦à±à°¦à°¡à°‚ à°•à±à°¦à°°à°¦à±.',
+ 'renameuser-page-moved' => '$1 పేజీని $2 పేజీకి తరలించాం.',
+ 'renameuser-page-unmoved' => '$1 పేజీని $2 పేజీకి తరలించలేక పోయాం.',
+ 'renameuserlogpage' => 'వాడà±à°•à°°à°¿ పేరà±à°®à°¾à°°à±à°ªà±à°² à°šà°¿à°Ÿà±à°Ÿà°¾',
+ 'renameuserlogpagetext' => 'ఇది వాడà±à°•à°°à°¿ పేరà±à°²à°•à°¿ జరిగిన మారà±à°ªà±à°² à°šà°¿à°Ÿà±à°Ÿà°¾.',
+ 'renameuserlogentry' => '$1ని "$2"à°—à°¾ పేరౠమారà±à°šà°¾à°°à±',
+ 'renameuser-log' => '{{PLURAL:$1|à°’à°• దిదà±à°¦à±à°¬à°¾à°Ÿà±|$1 దిదà±à°¦à±à°¬à°¾à°Ÿà±à°²à±}}. కారణం: $2',
+ 'renameuser-move-log' => '"[[User:$1|$1]]" పేరà±à°¨à± "[[User:$2|$2]]"కౠమారà±à°šà°¡à°‚తో పేజీని ఆటోమాటిగà±à°—à°¾ తరలించాం',
+ 'right-renameuser' => 'వాడà±à°•à°°à±à°² పేరౠమారà±à°šà°¡à°‚',
+ 'renameuser-renamed-notice' => 'à°ˆ వాడà±à°•à°°à°¿ పేరౠమారింది.
+మీ సమాచారం కోసం పేరà±à°®à°¾à°°à±à°ªà±à°² à°šà°¿à°Ÿà±à°Ÿà°¾à°¨à°¿ à°•à±à°°à°¿à°‚à°¦ ఇచà±à°šà°¾à°‚.',
+);
+
+/** Tetum (Tetun)
+ * @author MF-Warburg
+ */
+$messages['tet'] = array(
+ 'renameuser' => "Fó naran foun ba uza-na'in sira",
+ 'renameuser-desc' => "Fó naran foun ba uza-na'in sira (presiza priviléjiu ''renameuser'')",
+ 'renameuserold' => "Naran uza-na'in atuál:",
+ 'renameusernew' => "Naran uza-na'in foun:",
+ 'renameuserreason' => 'Motivu:',
+ 'renameusermove' => "Book pájina uza-na'in no diskusaun (no sub-pájina) ba naran foun",
+ 'renameuserconfirm' => 'Sin, fó naran foun',
+ 'renameusersubmit' => 'Fó naran foun',
+ 'renameusererrordoesnotexist' => 'Uza-na\'in "<nowiki>$1</nowiki>" la iha.',
+ 'renameuser-page-moved' => 'Book tiha pájina $1 ba $2.',
+ 'renameuser-page-unmoved' => 'La bele book pájina $1 ba $2.',
+ 'right-renameuser' => "Fó naran foun ba uza-na'in sira",
+);
+
+/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic))
+ * @author Ibrahim
+ */
+$messages['tg-cyrl'] = array(
+ 'renameuser' => 'Тағйири номи корбарӣ',
+ 'renameuser-desc' => "Ðоми Ñк корбарро тағйир медиҳад (ниёзманд ба ихтиёроти ''тағйирином'' аÑÑ‚)",
+ 'renameuserold' => 'Ðоми корбари феълӣ:',
+ 'renameusernew' => 'Ðоми корбари ҷадид:',
+ 'renameuserreason' => 'Иллати тағйири номи корбарӣ:',
+ 'renameusermove' => 'Саҳифаи корбарӣ ва Ñаҳифаи баҳÑи корбар (ва зерÑаҳифаҳои он)ро интиқол бидеҳ',
+ 'renameuserreserve' => 'БаÑтани номи корбарии кӯҳна аз иÑтифодаи оÑнда',
+ 'renameuserwarnings' => 'Ҳушдорҳо:',
+ 'renameuserconfirm' => 'Бале, номи корбариро тағйир бидеҳ',
+ 'renameusersubmit' => 'Сабт',
+ 'renameusererrordoesnotexist' => 'Ðоми корбарӣ "<nowiki>$1</nowiki>" вуҷуд надорад.',
+ 'renameusererrorexists' => 'Ðоми корбарӣ "<nowiki>$1</nowiki>" иÑтифода шудааÑÑ‚.',
+ 'renameusererrorinvalid' => 'Ðоми корбарӣ "<nowiki>$1</nowiki>" ғайри миҷоз аÑÑ‚.',
+ 'renameuser-error-request' => 'Дар дарёфти дархоÑÑ‚ мушкилие пеш омад. Лутфан ба Ñаҳифаи қаблӣ бозгардед ва дубора талош кунед.',
+ 'renameuser-error-same-user' => 'Шумо наметавонед номи Ñк корбарро ба ҳамон номи қаблиаш тағйир диҳед.',
+ 'renameusersuccess' => 'Ðоми корбар "<nowiki>$1</nowiki>" ба "<nowiki>$2</nowiki>" тағйир Ñ‘Ñ„Ñ‚.',
+ 'renameuser-page-exists' => 'Саҳифаи $1 аллакай вуҷуд дорда ва ба таври худкор қобили бознавиÑÓ£ неÑÑ‚.',
+ 'renameuser-page-moved' => 'Саҳифаи $1 ба $2 кӯчонида шуд.',
+ 'renameuser-page-unmoved' => 'Имкони кӯчонидани Ñаҳифаи $1 ба $2 вуҷуд надорад.',
+ 'renameuserlogpage' => 'Гузориши тағйири номи корбар',
+ 'renameuserlogpagetext' => 'Ин гузориши тағйири номи корбарон аÑÑ‚',
+ 'renameuserlogentry' => 'номи $1ро ба "$2" тағйир дод',
+ 'renameuser-log' => '{{PLURAL:$1|1 вироиш|$1 вироишҳо}}. Далел: $2',
+ 'renameuser-move-log' => 'Саҳифа дар вақти тағйири номи корбар "[[User:$1|$1]]" ба "[[User:$2|$2]]" ба таври худкор кӯчонида шуд',
+ 'right-renameuser' => 'Тағйири номи корбарон',
+);
+
+/** Tajik (Latin) (Тоҷикӣ (Latin))
+ * @author Liangent
+ */
+$messages['tg-latn'] = array(
+ 'renameuser' => 'Taƣjiri nomi korbarī',
+ 'renameuser-desc' => "Nomi jak korbarro taƣjir medihad (nijozmand ba ixtijoroti ''taƣjirinom'' ast)",
+ 'renameuserold' => "Nomi korbari fe'lī:",
+ 'renameusernew' => 'Nomi korbari çadid:',
+ 'renameuserreason' => 'Illati taƣjiri nomi korbarī:',
+ 'renameusermove' => 'Sahifai korbarī va sahifai bahsi korbar (va zersahifahoi on)ro intiqol bideh',
+ 'renameuserreserve' => 'Bastani nomi korbariji kūhna az istifodai ojanda',
+ 'renameuserwarnings' => 'HuÅŸdorho:',
+ 'renameuserconfirm' => 'Bale, nomi korbariro taƣjir bideh',
+ 'renameusersubmit' => 'Sabt',
+ 'renameusererrordoesnotexist' => 'Nomi korbarī "<nowiki>$1</nowiki>" vuçud nadorad.',
+ 'renameusererrorexists' => 'Nomi korbarī "<nowiki>$1</nowiki>" istifoda şudaast.',
+ 'renameusererrorinvalid' => 'Nomi korbarī "<nowiki>$1</nowiki>" ƣajri miçoz ast.',
+ 'renameuser-error-request' => 'Dar darjofti darxost muşkilie peş omad. Lutfan ba sahifai qablī bozgarded va dubora taloş kuned.',
+ 'renameuser-error-same-user' => 'Şumo nametavoned nomi jak korbarro ba hamon nomi qabliaş taƣjir dihed.',
+ 'renameusersuccess' => 'Nomi korbar "<nowiki>$1</nowiki>" ba "<nowiki>$2</nowiki>" taƣjir joft.',
+ 'renameuser-page-exists' => 'Sahifai $1 allakaj vuçud dorda va ba tavri xudkor qobili boznavisī nest.',
+ 'renameuser-page-moved' => 'Sahifai $1 ba $2 kūconida şud.',
+ 'renameuser-page-unmoved' => 'Imkoni kūconidani sahifai $1 ba $2 vuçud nadorad.',
+ 'renameuserlogpage' => 'Guzorişi taƣjiri nomi korbar',
+ 'renameuserlogpagetext' => 'In guzorişi taƣjiri nomi korbaron ast',
+ 'renameuser-log' => '{{PLURAL:$1|1 viroiÅŸ|$1 viroiÅŸho}}. Dalel: $2',
+ 'renameuser-move-log' => 'Sahifa dar vaqti taƣjiri nomi korbar "[[User:$1|$1]]" ba "[[User:$2|$2]]" ba tavri xudkor kūconida şud',
+ 'right-renameuser' => 'Taƣjiri nomi korbaron',
+);
+
+/** Thai (ไทย)
+ * @author Harley Hartwell
+ * @author Mopza
+ * @author Passawuth
+ */
+$messages['th'] = array(
+ 'renameuser' => 'เปลี่ยนชื่อผู้ใช้',
+ 'renameuser-desc' => "เพิ่ม[[Special:Renameuser|หน้าพิเศษ]] สำหรับเปลี่ยนชื่อผู้ใช้ (ต้องมีสิทธิ์ ''renameuser'' (เปลี่ยนชื่อผู้ใช้))",
+ 'renameuserold' => 'ชื่อผู้ใช้ปัจจุบัน:',
+ 'renameusernew' => 'ชื่อผู้ใช้ใหม่:',
+ 'renameuserreason' => 'เหตุผลในà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸Šà¸·à¹ˆà¸­:',
+ 'renameusermove' => 'ย้ายหน้าผู้ใช้à¹à¸¥à¸°à¸«à¸™à¹‰à¸²à¸žà¸¹à¸”คุย (รวมถึงหน้าย่อยด้วย) ไปยังชื่อใหม่',
+ 'renameuserreserve' => 'บล็อà¸à¸Šà¸·à¹ˆà¸­à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹€à¸”ิมจาà¸à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹ƒà¸™à¸­à¸™à¸²à¸„ต',
+ 'renameuserwarnings' => 'คำเตือน:',
+ 'renameuserconfirm' => 'ใช่, เปลี่ยนชื่อผู้ใช้นี้',
+ 'renameusersubmit' => 'ตà¸à¸¥à¸‡',
+ 'renameusererrordoesnotexist' => 'ไม่พบผู้ใช้ "<nowiki>$1</nowiki>" ในระบบ',
+ 'renameusererrorexists' => 'มีผู้ใช้ "<nowiki>$1</nowiki>" อยู่à¹à¸¥à¹‰à¸§',
+ 'renameusererrorinvalid' => 'ไม่สามารถใช้ชื่อผู้ใช้ "<nowiki>$1</nowiki>" ได้',
+ 'renameuser-error-request' => 'มีปัà¸à¸«à¸²à¹€à¸à¸´à¸”ขึ้นเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸à¸²à¸£à¸£à¸±à¸šà¸„ำเรียà¸à¸£à¹‰à¸­à¸‡à¸‚องคุณ à¸à¸£à¸¸à¸“าà¸à¸¥à¸±à¸šà¹„ปที่หน้าเดิม à¹à¸¥à¸° พยายามอีà¸à¸„รั้ง',
+ 'renameuser-error-same-user' => 'ไม่สามารถเปลี่ยนชื่อผู้ใช้ได้เนื่องจาà¸à¸¡à¸µà¸Šà¸·à¹ˆà¸­à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸™à¸µà¹‰à¸­à¸¢à¸¹à¹ˆà¸à¹ˆà¸­à¸™à¹à¸¥à¹‰à¸§',
+ 'renameusersuccess' => 'ผู้ใช้:<nowiki>$1</nowiki> ถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸Šà¸·à¹ˆà¸­à¹€à¸›à¹‡à¸™ ผู้ใช้:<nowiki>$2</nowiki> เรียบร้อยà¹à¸¥à¹‰à¸§',
+ 'renameuser-page-exists' => 'หน้า $1 มีอยู่à¹à¸¥à¹‰à¸§ à¹à¸¥à¸°à¹„ม่สามารถย้ายไปà¹à¸—นที่ได้โดยอัตโนมัติ',
+ 'renameuser-page-moved' => 'หน้า $1 ถูà¸à¸¢à¹‰à¸²à¸¢à¹„ปยัง $2',
+ 'renameuser-page-unmoved' => 'ไม่สามารถย้ายหน้า $1 ไปยัง $2 ได้',
+ 'renameuserlogpage' => 'ปูมà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸Šà¸·à¹ˆà¸­à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰',
+ 'renameuserlogpagetext' => 'ข้อมูลà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸Šà¸·à¹ˆà¸­à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰',
+ 'renameuserlogentry' => 'ได้เปลี่ยนชื่อ $1 ไปเป็น [[ผู้ใช้:$2]]',
+ 'renameuser-log' => 'à¹à¸à¹‰à¹„ขà¹à¸¥à¹‰à¸§ $1 ครั้ง เหตุผล: $2',
+ 'renameuser-move-log' => 'ย้ายโดยอัตโนมัติ ขณะเปลี่ยนชื่อผู้ใช้จาภ"[[User:$1|$1]]" เป็น "[[User:$2|$2]]"',
+ 'right-renameuser' => 'เปลี่ยนชื่อผู้ใช้',
+ 'renameuser-renamed-notice' => 'ผู้ใช้นี้ได้ถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸Šà¸·à¹ˆà¸­ บันทึà¸à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸Šà¸·à¹ˆà¸­à¹à¸ªà¸”งอยู่ด้านล่างสำหรับà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡',
+);
+
+/** Turkmen (Türkmençe)
+ * @author Hanberke
+ */
+$messages['tk'] = array(
+ 'renameuser' => 'Ulanyjy adyny üýtget',
+ 'renameuser-linkoncontribs' => 'ulanyjy adyny üýtget',
+ 'renameuser-linkoncontribs-text' => 'Bu ulanyjynyň adyny üýtget',
+ 'renameuser-desc' => "Ulanyjyny täzeden atlandyrmak üçin [[Special:Renameuser|ýörite sahypa]] goşýar (''ulanyjynytäzedenatlandyr'' hukugy gerek)",
+ 'renameuserold' => 'Häzirki ulanyjy ady:',
+ 'renameusernew' => 'Täze ulanyjy ady:',
+ 'renameuserreason' => 'At üýtgetmegiň sebäbi:',
+ 'renameusermove' => 'Ulanyjy we pikir alyşma sahypalaryny (we kiçi sahypalaryny) täze ada geçir',
+ 'renameusersuppress' => 'Täze ada gönükdirmeler döretme',
+ 'renameuserreserve' => 'Köne ulanyjy adyny indi ulanylmakdan blokirle',
+ 'renameuserwarnings' => 'Duýduryşlar:',
+ 'renameuserconfirm' => 'Hawa, ulanyjynyň adyny üýtget',
+ 'renameusersubmit' => 'TabÅŸyr',
+ 'renameusererrordoesnotexist' => '"<nowiki>$1</nowiki>" atly ulanyjy ýok.',
+ 'renameusererrorexists' => '"<nowiki>$1</nowiki>" ulanyjysy eýýäm bar.',
+ 'renameusererrorinvalid' => '"<nowiki>$1</nowiki>" ulanyjy ady nädogry.',
+ 'renameuser-error-request' => 'Talaby almak bilen baglanyşykyly bir probleme ýüze çykdy.
+Yza gaýdyp gaýtadan synanyşyp görüň.',
+ 'renameuser-error-same-user' => 'Ulanyja öňküsi ýaly bir ada täzeden geçirip bilmeýärsiňiz.',
+ 'renameusersuccess' => 'Ulanyjy "<nowiki>$1</nowiki>" täze ada geçirildi: "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => '$1 sahypasy eýýäm bar we onuň üstüne awtomatik ýazyp bolmaýar.',
+ 'renameuser-page-moved' => '$1 sahypasy $2 sahypasyna geçirildi.',
+ 'renameuser-page-unmoved' => '$1 sahypasyny $2 sahypasyna geçirip bolmaýar.',
+ 'renameuserlogpage' => 'Ulanyjy adyny üýtgetme gündeligi',
+ 'renameuserlogpagetext' => 'Bu gündelik ulanyjy ady üýtgetmelerini görkezýär.',
+ 'renameuserlogentry' => '$1 täzeden atlandyryldy: "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 özgerdiş|$1 özgerdiş}}. Sebäp: $2',
+ 'renameuser-move-log' => 'Ulanyjy "[[User:$1|$1]]" adyndan "[[User:$2|$2]]" adyna täzeden atlandyrylanda, sahypa awtomatik geçirildi',
+ 'right-renameuser' => 'Ulanyjylaryň adyny üýtget',
+ 'renameuser-renamed-notice' => 'Bu ulanyjynyň ady üýtgedilipdir.
+At üýtgediş gündeligi aşakda salgylanma üçin berilýär.',
+);
+
+/** Tagalog (Tagalog)
+ * @author AnakngAraw
+ */
+$messages['tl'] = array(
+ 'renameuser' => 'Muling pangalanan ang tagagamit',
+ 'renameuser-linkoncontribs' => 'muling pangalanan ang tagagamit',
+ 'renameuser-linkoncontribs-text' => 'muling pangalanan ang tagagamit na ito',
+ 'renameuser-desc' => "Nagdaragdag ng isang [[Special:Renameuser|natatanging pahina]] para mapangalanang muli ang isang tagagamit (kailangang ang karapatang ''pangalanangmuliangtagagamit'')",
+ 'renameuserold' => 'Pangkasalukuyang pangalan ng tagagamit:',
+ 'renameusernew' => 'Bagong pangalan ng tagagamit:',
+ 'renameuserreason' => 'Dahil para sa muling pagpapangalan:',
+ 'renameusermove' => 'Ilipat ang mga pahina ng tagagamit at pangusapan (at mga kabahaging pahina nila) patungo sa bagong pangalan',
+ 'renameusersuppress' => 'Huwag lumikha ng mga pagpapapunta sa bagong pangalan',
+ 'renameuserreserve' => 'Hadlangan ang dating pangalan ng tagagamit mula sa muling paggamit sa hinaharap',
+ 'renameuserwarnings' => 'Mga babala:',
+ 'renameuserconfirm' => 'Oo, pangalanang muli ang tagagamit',
+ 'renameusersubmit' => 'Ipasa',
+ 'renameusererrordoesnotexist' => 'Hindi pa umiiral ang tagagamit na "<nowiki>$1</nowiki>".',
+ 'renameusererrorexists' => 'Umiiral na ang tagagamit na "<nowiki>$1</nowiki>".',
+ 'renameusererrorinvalid' => 'Hindi tanggap ang pangalan ng tagagamit na "<nowiki>$1</nowiki>".',
+ 'renameuser-error-request' => 'Nagkaroon ng isang suliranin sa pagtanggap ng kahilingan.
+Magbalik lamang at subukan uli.',
+ 'renameuser-error-same-user' => 'Hindi mo maaaring pangalanang muli ang tagagamit patungo sa kaparehong bagay na katulad ng dati.',
+ 'renameusersuccess' => 'Ang tagagamit na "<nowiki>$1</nowiki>" ay muling napangalanan na patungong "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'Umiiral na ang pahinang $1 at hindi maaaring kusang mapatungan.',
+ 'renameuser-page-moved' => 'Ang pahinang $1 ay nailipat na patungo sa $2.',
+ 'renameuser-page-unmoved' => 'Hindi mailipat ang pahinang $1 patungo sa $2.',
+ 'renameuserlogpage' => 'Talaan ng muling pagpapangalan ng tagagamit',
+ 'renameuserlogpagetext' => 'Isa itong pagtatala/talaan ng mga pagbabago sa mga pangalan ng tagagamit.',
+ 'renameuserlogentry' => 'muling pinangalan si $1 patungo sa "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 pagbabago|$1 mga pagbabago}}. Dahilan: $2',
+ 'renameuser-move-log' => 'Kusang inilipat ang pahina habang muling pinapangalanan ang tagagamit na si "[[User:$1|$1]]" patungo sa "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Muling pangalanan ang mga tagagamit',
+ 'renameuser-renamed-notice' => 'Napangalanan nang muli ang tagagamit na ito.
+Ibinigay sa ibaba ang talaan ng pagpapangalang muli para masangguni.',
+);
+
+/** Tonga (lea faka-Tonga) */
+$messages['to'] = array(
+ 'renameuser' => 'Liliu hingoa ʻo e ʻetita',
+ 'renameuserold' => 'Hingoa motuʻa ʻo e ʻetita:',
+ 'renameusernew' => 'Hingoa foʻou ʻo e ʻetita:',
+ 'renameusersubmit' => 'Fai Ä liliuhingoa',
+ 'renameusererrordoesnotexist' => 'Ko e ʻetita "<nowiki>$1</nowiki>" ʻoku ʻikai toka tuʻu ia',
+ 'renameusererrorexists' => 'Ko e ʻetita "<nowiki>$1</nowiki>" ʻoku toka tuʻu ia',
+ 'renameusererrorinvalid' => 'ʻOku taʻeʻaonga ʻa e hingoa fakaʻetita ko "<nowiki>$1</nowiki>"',
+ 'renameusersuccess' => 'Ko e ʻetita "<nowiki>$1</nowiki>" kuo liliuhingoa ia kia "<nowiki>$2</nowiki>"',
+ 'renameuserlogpage' => 'Tohinoa ʻo e liliu he hingoa ʻo e ʻetita',
+ 'renameuserlogpagetext' => 'Ko e tohinoa ʻeni ʻo e ngaahi liliu ki he hingoa ʻo e kau ʻetita',
+);
+
+/** Turkish (Türkçe)
+ * @author Joseph
+ * @author Karduelis
+ * @author Runningfridgesrule
+ * @author UÄŸur BaÅŸak
+ * @author Vito Genovese
+ */
+$messages['tr'] = array(
+ 'renameuser' => 'Kullanıcı adı değiştir',
+ 'renameuser-linkoncontribs' => 'kullanıcıyı yeniden adlandır',
+ 'renameuser-linkoncontribs-text' => 'Bu kullanıcıyı yeniden adlandır',
+ 'renameuser-desc' => "Kullanıcıyı yeniden adlandırmak için bir [[Special:Renameuser|özel sayfa]] ekler (''kullanıcıyıyenidenadlandır'' hakkı gerekir)",
+ 'renameuserold' => 'Şu anda ki kullanıcı adı:',
+ 'renameusernew' => 'Yeni kullanıcı adı:',
+ 'renameuserreason' => 'Neden:',
+ 'renameusermove' => 'Kullanıcı ve tartışma sayfalarını (ve alt sayfalarını) yeni isme taşı',
+ 'renameusersuppress' => 'Yeni ada yönlendirmeler oluşturma',
+ 'renameuserreserve' => 'Eski kullanıcı adını ilerdeki kullanımlar için engelle',
+ 'renameuserwarnings' => 'Uyarılar:',
+ 'renameuserconfirm' => 'Evet, kullanıcıyı yeniden adlandır',
+ 'renameusersubmit' => 'Gönder',
+ 'renameusererrordoesnotexist' => '"<nowiki>$1</nowiki>" adlı kullanıcı bulunmamaktadır.',
+ 'renameusererrorexists' => '"<nowiki>$1</nowiki>" kullanıcısı zaten mevcut.',
+ 'renameusererrorinvalid' => '"<nowiki>$1</nowiki>" kullanıcı adı geçersiz.',
+ 'renameuser-error-request' => 'İsteğin alımıyla ilgili bir problem var.
+Lütfen geri dönüp tekrar deneyin.',
+ 'renameuser-error-same-user' => 'Bir kullanıcıyı eskiden olduğu isme yeniden adlandıramazsınız.',
+ 'renameusersuccess' => 'Daha önce "<nowiki>$1</nowiki>" olarak kayıtlı kullanıcının rumuzu "<nowiki>$2</nowiki>" olarak değiştirilmiştir.',
+ 'renameuser-page-exists' => '$1 sayfası zaten mevcut ve otomatik olarak üstüne yazılamaz.',
+ 'renameuser-page-moved' => '$1 sayfası $2 sayfasına taşındı.',
+ 'renameuser-page-unmoved' => '$1 sayfası $2 sayfasına taşınamıyor.',
+ 'renameuserlogpage' => 'Kullanıcı adı değişikliği kayıtları',
+ 'renameuserlogpagetext' => 'Aşağıda bulunan liste adı değiştirilmiş kullanıcıları gösterir.',
+ 'renameuserlogentry' => '$1, "$2" olarak yeniden adlandırıldı',
+ 'renameuser-log' => '{{PLURAL:$1|1 düzenleme|$1 düzenleme}}. Neden: $2',
+ 'renameuser-move-log' => 'Kullanıcıyı "[[User:$1|$1]]" isminden "[[User:$2|$2]]" ismine yeniden adlandırırken, sayfa otomatik olarak taşındı',
+ 'right-renameuser' => 'Kullanıcıların adlarını değiştirir',
+ 'renameuser-renamed-notice' => 'Bu kullanıcının adı değiştirildi.
+Referans için ad değiştirme günlüğü aşağıda sağlanmıştır.',
+);
+
+/** Ukrainian (УкраїнÑька)
+ * @author AS
+ * @author Ahonc
+ * @author EugeneZelenko
+ * @author Prima klasy4na
+ * @author ТеÑÑ‚
+ */
+$messages['uk'] = array(
+ 'renameuser' => 'Перейменувати кориÑтувача',
+ 'renameuser-linkoncontribs' => 'перейменувати кориÑтувача',
+ 'renameuser-linkoncontribs-text' => 'Перейменувати цього кориÑтувача',
+ 'renameuser-desc' => "ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача (потрібні права ''renameuser'')",
+ 'renameuserold' => "Поточне ім'Ñ:",
+ 'renameusernew' => "Ðове ім'Ñ:",
+ 'renameuserreason' => 'Причина перейменуваннÑ:',
+ 'renameusermove' => 'Перейменувати також Ñторінку кориÑтувача, Ñторінку Ð¾Ð±Ð³Ð¾Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñ‚Ð° їхні підÑторінки',
+ 'renameusersuppress' => 'Ðе Ñтворюйте Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð½Ð° нову назву',
+ 'renameuserreserve' => "Зарезервувати Ñтаре ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача Ð´Ð»Ñ Ð¿Ð¾Ð´Ð°Ð»ÑŒÑˆÐ¾Ð³Ð¾ викориÑтаннÑ",
+ 'renameuserwarnings' => 'ПопередженнÑ:',
+ 'renameuserconfirm' => 'Так, перейменувати кориÑтувача',
+ 'renameusersubmit' => 'Виконати',
+ 'renameusererrordoesnotexist' => 'КориÑтувач з іменем «<nowiki>$1</nowiki>» не зареєÑтрований.',
+ 'renameusererrorexists' => 'КориÑтувач з іменем «<nowiki>$1</nowiki>» уже зареєÑтрований.',
+ 'renameusererrorinvalid' => "ÐедопуÑтиме ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача: <nowiki>$1</nowiki>.",
+ 'renameuser-error-request' => 'Виникли уÑÐºÐ»Ð°Ð´Ð½ÐµÐ½Ð½Ñ Ð· отриманнÑм запиту. Будь лаÑка, повернітьÑÑ Ð½Ð°Ð·Ð°Ð´ Ñ– повторіть іще раз.',
+ 'renameuser-error-same-user' => "Ви не можете змінити ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача на те Ñаме, що було раніше.",
+ 'renameusersuccess' => 'КориÑтувач «<nowiki>$1</nowiki>» був перейменований на «<nowiki>$2</nowiki>».',
+ 'renameuser-page-exists' => 'Сторінка $1 вже Ñ–Ñнує Ñ– не може бути перезапиÑана автоматично.',
+ 'renameuser-page-moved' => 'Сторінка $1 була перейменована на $2.',
+ 'renameuser-page-unmoved' => 'Сторінка $1 не може бути перейменована на $2.',
+ 'renameuserlogpage' => 'Журнал перейменувань кориÑтувачів',
+ 'renameuserlogpagetext' => 'Це журнал здійÑнених перейменувань зареєÑтрованих кориÑтувачів.',
+ 'renameuserlogentry' => 'перейменував $1 на «$2»',
+ 'renameuser-log' => 'мав $1 {{PLURAL:$1|редагуваннÑ|редагуваннÑ|редагувань}}. Причина: $2',
+ 'renameuser-move-log' => 'Ðвтоматичне Ð¿ÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ñторінки при перейменуванні кориÑтувача «[[User:$1|$1]]» на «[[User:$2|$2]]»',
+ 'right-renameuser' => 'ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів',
+ 'renameuser-renamed-notice' => 'Цей кориÑтувач був перейменований.
+Ð”Ð»Ñ Ð´Ð¾Ð²Ñ–Ð´ÐºÐ¸ нижче наведений журнал перейменувань.',
+);
+
+/** Urdu (اردو) */
+$messages['ur'] = array(
+ 'renameuser' => 'صار٠کا نام تبدیل کریں',
+ 'renameuser-log' => 'جن کی $1 ترامیم تھیں. $2',
+);
+
+/** Vèneto (Vèneto)
+ * @author Candalua
+ */
+$messages['vec'] = array(
+ 'renameuser' => 'Rinomina utente',
+ 'renameuser-linkoncontribs' => 'rinomina utente',
+ 'renameuser-linkoncontribs-text' => 'Rinomina sto utente',
+ 'renameuser-desc' => "Funsion par rinominar un utente (ghe vole i diriti de ''renameuser'')",
+ 'renameuserold' => 'Vecio nome utente:',
+ 'renameusernew' => 'Novo nome utente:',
+ 'renameuserreason' => 'Motivo del canbio nome',
+ 'renameusermove' => 'Rinomina anca la pagina utente, la pagina de discussion e le relative sotopagine',
+ 'renameusersuppress' => 'No stà crear rimandi al nome novo',
+ 'renameuserreserve' => "Tien da conto el vecio nome utente par inpedir che'l vegna doparà in futuro",
+ 'renameuserwarnings' => 'Avertimenti:',
+ 'renameuserconfirm' => "Sì, rinomina l'utente",
+ 'renameusersubmit' => 'Invia',
+ 'renameusererrordoesnotexist' => 'El nome utente "<nowiki>$1</nowiki>" no l\'esiste',
+ 'renameusererrorexists' => 'El nome utente "<nowiki>$1</nowiki>" l\'esiste de zà',
+ 'renameusererrorinvalid' => 'El nome utente "<nowiki>$1</nowiki>" no\'l xe mìa valido.',
+ 'renameuser-error-request' => 'Se gà verificà un problema ne la ricezion de la richiesta. Torna indrìo e ripróa da novo.',
+ 'renameuser-error-same-user' => "No se pol rinominar un utente al stesso nome che'l gavea zà.",
+ 'renameusersuccess' => 'El nome utente "<nowiki>$1</nowiki>" el xe stà canbià in "<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => 'La pagina $1 la esiste de zà; no se pole sovrascrìvarla automaticamente.',
+ 'renameuser-page-moved' => 'La pagina $1 la xe stà spostà a $2.',
+ 'renameuser-page-unmoved' => 'No se pole spostar la pagina $1 a $2.',
+ 'renameuserlogpage' => 'Registro dei utenti rinominà',
+ 'renameuserlogpagetext' => 'De seguito vien presentà el registro de le modifiche ai nomi utente',
+ 'renameuserlogentry' => 'gà rinominà $1 in "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 contributo|$1 contributi}}. Motivo: $2',
+ 'renameuser-move-log' => 'Spostamento automatico de la pagina - utente rinominà da "[[User:$1|$1]]" a "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Rinomina utenti',
+ 'renameuser-renamed-notice' => 'Sto utente el gà canbià nome.
+Qua soto ghe xe el riferimento sul registro de rinomina.',
+);
+
+/** Veps (Vepsan kel')
+ * @author Игорь БродÑкий
+ */
+$messages['vep'] = array(
+ 'renameusernew' => "Uz' kävutajan nimi:",
+ 'renameuserreason' => 'Udesnimitandan sü:',
+ 'renameusersubmit' => 'Tehta',
+ 'right-renameuser' => 'Udesnimitada kävutajid',
+);
+
+/** Vietnamese (Tiếng Việt)
+ * @author Minh Nguyen
+ * @author Vinhtantran
+ */
+$messages['vi'] = array(
+ 'renameuser' => 'Äổi tên thành viên',
+ 'renameuser-linkoncontribs' => 'đổi tên thành viên',
+ 'renameuser-linkoncontribs-text' => 'Äổi tên thành viên này',
+ 'renameuser-desc' => "Äổi tên thành viên (cần có quyá»n ''renameuser'')",
+ 'renameuserold' => 'Tên hiệu hiện nay:',
+ 'renameusernew' => 'Tên hiệu mới:',
+ 'renameuserreason' => 'Lý do đổi tên:',
+ 'renameusermove' => 'Di chuyển trang thành viên và thảo luận thành viên (cùng với trang con của nó) sang tên mới',
+ 'renameusersuppress' => 'Không tạo trang đổi hướng đến tên mới',
+ 'renameuserreserve' => 'Không cho phép ai lấy tên cũ',
+ 'renameuserwarnings' => 'Cảnh báo:',
+ 'renameuserconfirm' => 'Äổi tên ngÆ°á»i dùng',
+ 'renameusersubmit' => 'Thực hiện',
+ 'renameusererrordoesnotexist' => 'Thành viên “<nowiki>$1</nowiki>†không tồn tại.',
+ 'renameusererrorexists' => 'Thành viên “<nowiki>$1</nowiki>†đã hiện hữu.',
+ 'renameusererrorinvalid' => 'Tên thành viên “<nowiki>$1</nowiki>†không hợp lệ.',
+ 'renameuser-error-request' => 'Có trục trặc trong tiếp nhận yêu cầu. Xin hãy quay lại và thử lần nữa.',
+ 'renameuser-error-same-user' => 'Bạn không thể đổi tên thành viên sang tên y hệt như vậy.',
+ 'renameusersuccess' => 'Thành viên “<nowiki>$1</nowiki>†đã được đổi tên thành “<nowiki>$2</nowiki>â€.',
+ 'renameuser-page-exists' => 'Trang $1 đã tồn tại và không thể bị tự động ghi đè.',
+ 'renameuser-page-moved' => 'Trang $1 đã được di chuyển đến $2.',
+ 'renameuser-page-unmoved' => 'Trang $1 không thể di chuyển đến $2.',
+ 'renameuserlogpage' => 'Nhật trình đổi tên thành viên',
+ 'renameuserlogpagetext' => 'Äây là nhật trình ghi lại các thay đổi đối vá»›i tên thành viên',
+ 'renameuserlogentry' => 'đã đổi tên $1 thành “$2â€',
+ 'renameuser-log' => 'Äã có {{PLURAL:$1|1 sá»­a đổi|$1 sá»­a đổi}}. Lý do: $2',
+ 'renameuser-move-log' => 'Äã tá»± Ä‘á»™ng di chuyển trang khi đổi tên thành viên “[[User:$1|$1]]†thành “[[User:$2|$2]]â€',
+ 'right-renameuser' => 'Äổi tên thành viên',
+ 'renameuser-renamed-notice' => 'Thành viên này đã được đổi tên.
+Nhật trình đổi tên được ghi ở dưới để tiện theo dõi.',
+);
+
+/** Volapük (Volapük)
+ * @author Malafaya
+ * @author Smeira
+ */
+$messages['vo'] = array(
+ 'renameuser' => 'Votanemön gebani',
+ 'renameuser-linkoncontribs' => 'votanemön gebani',
+ 'renameuser-linkoncontribs-text' => 'Votanemön gebani at',
+ 'renameuser-desc' => "Votanemön gebani (gität: ''renameuser'' zesüdon)",
+ 'renameuserold' => 'Gebananem anuik:',
+ 'renameusernew' => 'Gebananem nulik:',
+ 'renameuserreason' => 'Kod votanemama:',
+ 'renameusermove' => 'Topätükön padi e bespikapadi gebana (e donapadis onsik) ad nem nulik',
+ 'renameuserreserve' => 'Neletön gebananemi rigik (pos votanemam) ad pagebön ün fütür',
+ 'renameuserwarnings' => 'Nuneds:',
+ 'renameuserconfirm' => 'Si, votanemolös gebani',
+ 'renameusersubmit' => 'Sedön',
+ 'renameusererrordoesnotexist' => 'Geban: "<nowiki>$1</nowiki>" no dabinon.',
+ 'renameusererrorexists' => 'Geban: "<nowiki>$1</nowiki>" ya dabinon.',
+ 'renameusererrorinvalid' => 'Gebananem: "<nowiki>$1</nowiki>" no lonöfon.',
+ 'renameuser-error-request' => 'Ädabinon säkäd pö daget bega. Geikolös, begö! e steifülolös dönu.',
+ 'renameuser-error-same-user' => 'No kanol votanemön gebani ad nem ot.',
+ 'renameusersuccess' => 'Geban: "<nowiki>$1</nowiki>" pevotanemon ad "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => 'Pad: $1 ya dabinon e no kanon pamoükön itjäfidiko.',
+ 'renameuser-page-moved' => 'Pad: $1 petopätükon ad pad: $2.',
+ 'renameuser-page-unmoved' => 'No eplöpos ad topätükön padi: $1 ad pad: $2.',
+ 'renameuserlogpage' => 'Jenotalised votanemamas',
+ 'renameuserlogpagetext' => 'Is palisedons votükams gebananemas.',
+ 'renameuserlogentry' => 'evotanemon eli $1 ad "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|Redakam 1|Redakams $1}}. Kod: $2',
+ 'renameuser-move-log' => 'Pad petopätükon itjäfidiko dü votanemama gebana: "[[User:$1|$1]]" ad "[[User:$2|$2]]"',
+ 'right-renameuser' => 'Votanemön gebanis',
+);
+
+/** Walloon (Walon)
+ * @author Srtxg
+ */
+$messages['wa'] = array(
+ 'renameuser' => 'Rilomer èn uzeu',
+ 'renameuserold' => "No d' elodjaedje pol moumint:",
+ 'renameusernew' => "Novea no d' elodjaedje:",
+ 'renameuserreason' => 'RÃ¥jhon pol rilomaedje:',
+ 'renameusermove' => "Displaecî les pådjes d' uzeu et d' copene (eyet leus dzo-pådjes) viè l' novea no",
+ 'renameusersubmit' => 'Evoye',
+ 'renameusererrordoesnotexist' => "L' uzeu «<nowiki>$1</nowiki>» n' egzistêye nén",
+ 'renameusererrorexists' => "L' uzeu «<nowiki>$1</nowiki>» egzistêye dedja",
+ 'renameusererrorinvalid' => "Li no d' elodjaedje «<nowiki>$1</nowiki>» n' est nén on no valide",
+ 'renameusersuccess' => "L' uzeu «<nowiki>$1</nowiki>» a stî rlomé a «<nowiki>$2</nowiki>»",
+ 'renameuser-page-exists' => "Li pådje $1 egzistêye dedja et n' pout nén esse otomaticmint spotcheye.",
+ 'renameuser-page-moved' => 'Li pådje $1 a stî displaeceye viè $2.',
+ 'renameuser-page-unmoved' => 'Li pådje $1 èn pout nén esse displaeceye viè $2.',
+ 'renameuserlogpage' => "Djournå des candjmints d' no d' uzeus",
+ 'renameuserlogpagetext' => "Chal pa dzo c' est ene djivêye des uzeus k' ont candjî leu no d' elodjaedje.",
+ 'renameuser-log' => "k' aveut ddja fwait $1 candjmints. $2",
+ 'renameuser-move-log' => "Pådje displaeceye otomaticmint tot rlomant l' uzeu «[[User:$1|$1]]» viè «[[User:$2|$2]]»",
+);
+
+/** Yiddish (ייִדיש)
+ * @author פוילישער
+ */
+$messages['yi'] = array(
+ 'renameuser' => 'בײַטן ב×ַניצער × ×ָמען',
+ 'renameuser-linkoncontribs' => 'בײַטן ב×ַניצער × ×ָמען',
+ 'renameuser-linkoncontribs-text' => 'בײַטן × ×ָמען פֿון ×“×¢× ×‘×ַניצער',
+ 'renameuserold' => 'לויפיגער ב×ַניצער-× ×ָמען:',
+ 'renameusernew' => 'נײַער ב×ַניצער-× ×ָמען:',
+ 'renameuserreason' => 'סיבה פֿ×ַר ענדערן × ×ָמען:',
+ 'renameusermove' => 'ב×ַוועגן ב×ַניצער ×ון שמועס בלעטער (מיט זייערע ×ונטערבלעטער) צו × ×²Ö·×¢× × ×ָמען',
+ 'renameuserwarnings' => 'וו×רענונגען:',
+ 'renameuserconfirm' => '×™×Ö¸, ענדער ×“×¢× ×‘×ַניצער־נ×ָמען',
+ 'renameusersubmit' => '×ײַנגעבן',
+ 'renameusererrordoesnotexist' => 'דער ב×ניצער "<nowiki>$1</nowiki>" עקסיסטירט נישט.',
+ 'renameusererrorexists' => 'דער ב×ניצער "<nowiki>$1</nowiki>" עקסיסטירט שוין.',
+ 'renameusererrorinvalid' => 'דער ב×ניצער × ×מען "<nowiki>$1</nowiki>" ××™×– נישט גילטיק.',
+ 'renameuser-error-same-user' => 'מען קען נישט ענדערן × ×‘×ַניצער ×¦×•× ×–×¢×œ×‘×Ÿ × ×ָמען ווי פֿריער.',
+ 'renameusersuccess' => 'דער ב×ַניצער־נ×ָמען "<nowiki>$1</nowiki>" ××™×– געוו×רן געענדערט צו "<nowiki>$2</nowiki>".',
+ 'renameuser-page-exists' => "דער בל×ַט $1 עקזיסטירט שוין ×ון מ'קען ××™× × ×™×©×˜ ×ויט×ָמ×ַטיש ×יבערשרײַבן.",
+ 'renameuser-page-moved' => 'דער בל×ַט $1 ××™×– געוו×רן ב×ַוועגט צו $2.',
+ 'renameuser-page-unmoved' => 'מען קען נישט ב×ַוועגן ×“×¢× ×‘×œ×ַט $1 צו $2.',
+ 'renameuserlogpage' => 'ב×ַניצער × ×ָמען-טויש ל×ָג-בוך',
+ 'renameuserlogpagetext' => 'ד×ָס ××™×– ×Ö· ל××’ פֿון ענדערונגען צו ב×ַניצער־נעמען.',
+ 'renameuserlogentry' => 'מ\'×”×ט ×“×¢× × ×ָמען $1 געענדערט צו "$2"',
+ 'renameuser-log' => '{{PLURAL:$1|1 רעד×ַקטירונג|$1 רעד×ַקטירונגע×}}. גרונד: $2',
+ 'renameuser-move-log' => '×ויט×מ×ַטיש ב×ַוועגט בל×ַט דורך ענדערן ב×ַניצער־נ×ָמען פֿון "[[User:$1|$1]]" צו "[[User:$2|$2]]"',
+ 'right-renameuser' => 'בײַטן ב×ַניצער נעמען',
+ 'renameuser-renamed-notice' => 'דער × ×ָמען פֿון ×“×¢× ×‘×ַניצער ××™×– געענדערט געוו×רן.
+דער ענדערן נעמען ל×גבוך ווערט געוויזן ×ונטן.',
+);
+
+/** Yoruba (Yorùbá)
+ * @author Demmy
+ */
+$messages['yo'] = array(
+ 'renameuserold' => 'OrúkỠoníṣe ìsinsìnyí:',
+ 'renameusernew' => 'OrúkỠoníṣe tuntun:',
+ 'renameuserwarnings' => 'Àwá»n ìkìlá»Ì€:',
+ 'renameusererrordoesnotexist' => 'Oníṣe "<nowiki>$1</nowiki>" kò sí.',
+ 'renameusererrorexists' => 'Oníṣe "<nowiki>$1</nowiki>" tilẹ̀ wà tẹÌlẹ̀.',
+ 'renameuserlogentry' => 'ṣàtúnsá»lórúká» $1 sí $2',
+ 'renameuser-log' => '{{PLURAL:$1|Àtúná¹£e 1|Àwá»n àtúná¹£e $1}}. ÃŒdíẹ̀: $2',
+);
+
+/** Cantonese (粵語) */
+$messages['yue'] = array(
+ 'renameuser' => '改用戶å',
+ 'renameuser-desc' => "幫用戶改å (éœ€è¦ ''renameuser'' 權é™)",
+ 'renameuserold' => 'ç¾æ™‚嘅用戶å:',
+ 'renameusernew' => '新嘅用戶å:',
+ 'renameuserreason' => '改å嘅原因:',
+ 'renameusermove' => 'æ¬ç”¨æˆ¶é åŒåŸ‹ä½¢å˜…å°è©±é ï¼ˆåŒåŸ‹ä½¢å“‹å˜…ç´°é ï¼‰åˆ°æ–°å',
+ 'renameuserwarnings' => '警告:',
+ 'renameuserconfirm' => '係,改呢個用戶å',
+ 'renameusersubmit' => 'éžäº¤',
+ 'renameusererrordoesnotexist' => '用戶"<nowiki>$1</nowiki>"唔存在',
+ 'renameusererrorexists' => '用戶"<nowiki>$1</nowiki>"已經存在',
+ 'renameusererrorinvalid' => '用戶å"<nowiki>$1</nowiki>"唔正確',
+ 'renameuser-error-request' => '響收到請求嗰陣出咗å•é¡Œã€‚
+請返去å†è©¦éŽã€‚',
+ 'renameuser-error-same-user' => 'ä½ å””å¯ä»¥æ”¹ä¸€ä½ç”¨æˆ¶ä¿‚åŒä¹‹å‰å˜…嘢一樣。',
+ 'renameusersuccess' => '用戶"<nowiki>$1</nowiki>"已經改咗ååš"<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => '$1呢一版已經存在,唔å¯ä»¥è‡ªå‹•é‡å¯«ã€‚',
+ 'renameuser-page-moved' => '$1呢一版已經æ¬åˆ°åŽ»$2。',
+ 'renameuser-page-unmoved' => '$1呢一版唔能夠æ¬åˆ°åŽ»$2。',
+ 'renameuserlogpage' => '用戶改å日誌',
+ 'renameuserlogpagetext' => '呢個係改用戶å嘅日誌',
+ 'renameuserlogentry' => '已經幫 $1 改咗ååš "$2"',
+ 'renameuser-log' => 'æ“有$1次編輯。 原因: $2',
+ 'renameuser-move-log' => '當由"[[User:$1|$1]]"改ååš"[[User:$2|$2]]"嗰陣已經自動æ¬å’—用戶é ',
+ 'right-renameuser' => '改用戶å',
+);
+
+/** Simplified Chinese (‪中文(简体)‬)
+ * @author Bencmq
+ * @author Gaoxuewei
+ * @author Gzdavidwong
+ * @author Hydra
+ * @author Liangent
+ * @author Xiaomingyan
+ */
+$messages['zh-hans'] = array(
+ 'renameuser' => 'æ›´å用户',
+ 'renameuser-linkoncontribs' => '用户é‡æ–°å‘½å',
+ 'renameuser-linkoncontribs-text' => 'é‡å‘½å此用户',
+ 'renameuser-desc' => "添加一个[[Special:Renameuser|特殊页é¢]]æ¥é‡å‘½å用户(需è¦''renameuser''æƒé™ï¼‰",
+ 'renameuserold' => '当å‰ç”¨æˆ·å:',
+ 'renameusernew' => '新用户å:',
+ 'renameuserreason' => 'é‡å‘½å的原因:',
+ 'renameusermove' => '移动用户页åŠå…¶å¯¹è¯é¡µï¼ˆåŒ…括å„å­é¡µï¼‰åˆ°æ–°çš„åå­—',
+ 'renameusersuppress' => 'ä¸è¦åˆ›å»ºé‡å®šå‘到新的å称',
+ 'renameuserreserve' => 'å°ç¦æ—§ç”¨æˆ·å,使之ä¸èƒ½åœ¨æ—¥åŽä½¿ç”¨',
+ 'renameuserwarnings' => '警告:',
+ 'renameuserconfirm' => '是,为用户é‡å‘½å',
+ 'renameusersubmit' => 'æ交',
+ 'renameusererrordoesnotexist' => '用户"<nowiki>$1</nowiki>"ä¸å­˜åœ¨',
+ 'renameusererrorexists' => '用户"<nowiki>$1</nowiki>"已存在',
+ 'renameusererrorinvalid' => '用户å"<nowiki>$1</nowiki>"ä¸å¯ç”¨',
+ 'renameuser-error-request' => '在收到请求时出现问题。
+请回去é‡è¯•ã€‚',
+ 'renameuser-error-same-user' => '您ä¸å¯ä»¥æ›´æ”¹ä¸€ä½ç”¨æˆ·æ˜¯è·Ÿä¹‹å‰çš„东西一样。',
+ 'renameusersuccess' => '用户"<nowiki>$1</nowiki>"å·²ç»æ›´å为"<nowiki>$2</nowiki>"',
+ 'renameuser-page-exists' => '$1这一页己ç»å­˜åœ¨ï¼Œä¸èƒ½è‡ªåŠ¨è¦†å†™ã€‚',
+ 'renameuser-page-moved' => '$1这一页已ç»ç§»åŠ¨åˆ°$2。',
+ 'renameuser-page-unmoved' => '$1这一页ä¸èƒ½ç§»åŠ¨åˆ°$2。',
+ 'renameuserlogpage' => '用户åå˜æ›´æ—¥å¿—',
+ 'renameuserlogpagetext' => '这是用户å更改的日志',
+ 'renameuserlogentry' => 'å·²ç»æŠŠ $1 é‡å‘½å为 "$2"',
+ 'renameuser-log' => '拥有$1次编辑。 ç†ç”±: $2',
+ 'renameuser-move-log' => '当由"[[User:$1|$1]]"é‡å‘½å作"[[User:$2|$2]]"时已ç»è‡ªåŠ¨ç§»åŠ¨ç”¨æˆ·é¡µ',
+ 'right-renameuser' => 'æ›´å用户',
+ 'renameuser-renamed-notice' => '该用户已被é‡æ–°å‘½å。
+以下列出更改用户å日志以供å‚考。',
+);
+
+/** Traditional Chinese (‪中文(ç¹é«”)‬)
+ * @author Gaoxuewei
+ * @author Horacewai2
+ * @author Mark85296341
+ * @author Waihorace
+ * @author Wrightbus
+ */
+$messages['zh-hant'] = array(
+ 'renameuser' => '用戶é‡æ–°å‘½å',
+ 'renameuser-linkoncontribs' => '用戶é‡æ–°å‘½å',
+ 'renameuser-linkoncontribs-text' => 'é‡å‘½å此用戶',
+ 'renameuser-desc' => "新增一個[[Special:Renameuser|特殊é é¢]]來é‡å‘½å用戶(需è¦''renameuser''權é™ï¼‰",
+ 'renameuserold' => 'ç¾æ™‚用戶å:',
+ 'renameusernew' => '新的使用者å稱:',
+ 'renameuserreason' => 'é‡æ–°å‘½å的原因:',
+ 'renameusermove' => '移動用戶é åŠå…¶å°è©±é ï¼ˆåŒ…括å„å­é ï¼‰åˆ°æ–°çš„åå­—',
+ 'renameusersuppress' => 'ä¸è¦å»ºç«‹é‡å®šå‘到新的å稱',
+ 'renameuserreserve' => 'å°ç¦èˆŠä½¿ç”¨è€…å稱,使之ä¸èƒ½åœ¨æ—¥å¾Œä½¿ç”¨',
+ 'renameuserwarnings' => '警告:',
+ 'renameuserconfirm' => '是,為用戶é‡æ–°å‘½å',
+ 'renameusersubmit' => 'æ交',
+ 'renameusererrordoesnotexist' => '用戶「<nowiki>$1</nowiki>ã€ä¸å­˜åœ¨',
+ 'renameusererrorexists' => '用戶「<nowiki>$1</nowiki>ã€å·²å­˜åœ¨',
+ 'renameusererrorinvalid' => '用戶å「<nowiki>$1</nowiki>ã€ä¸å¯ç”¨',
+ 'renameuser-error-request' => '在收到請求時出ç¾å•é¡Œã€‚
+請回去é‡è©¦ã€‚',
+ 'renameuser-error-same-user' => '您ä¸å¯ä»¥æ›´æ”¹ä¸€ä½ç”¨æˆ¶æ˜¯è·Ÿä¹‹å‰çš„æ±è¥¿ä¸€æ¨£ã€‚',
+ 'renameusersuccess' => '用戶「<nowiki>$1</nowiki>ã€å·²ç¶“æ›´å為「<nowiki>$2</nowiki>ã€',
+ 'renameuser-page-exists' => '$1 這一é å·±ç¶“存在,ä¸èƒ½è‡ªå‹•è¦†å¯«ã€‚',
+ 'renameuser-page-moved' => '$1 這一é å·²ç¶“移動到 $2。',
+ 'renameuser-page-unmoved' => '$1 這一é ä¸èƒ½ç§»å‹•åˆ° $2。',
+ 'renameuserlogpage' => '用戶å變更日誌',
+ 'renameuserlogpagetext' => '這是用戶å更改的日誌',
+ 'renameuserlogentry' => '已經把 $1 é‡æ–°å‘½å為「$2ã€',
+ 'renameuser-log' => 'æ“有 $1 次編輯。 ç†ç”±ï¼š$2',
+ 'renameuser-move-log' => '當由「[[User:$1|$1]]ã€é‡æ–°å‘½å作「[[User:$2|$2]]ã€æ™‚已經自動移動用戶é ',
+ 'right-renameuser' => 'é‡æ–°å‘½å用戶',
+ 'renameuser-renamed-notice' => '該用戶已被é‡æ–°å‘½å。
+以下列出更改用戶å日誌以供åƒè€ƒã€‚',
+);
+
+/** Zulu (isiZulu) */
+$messages['zu'] = array(
+ 'renameusersubmit' => 'Yisa',
+);
+
diff --git a/extensions/Renameuser/Renameuser.php b/extensions/Renameuser/Renameuser.php
new file mode 100644
index 00000000..ecfb4298
--- /dev/null
+++ b/extensions/Renameuser/Renameuser.php
@@ -0,0 +1,113 @@
+<?php
+if ( !defined( 'MEDIAWIKI' ) ) die();
+/**
+ * A Special Page extension to rename users, runnable by users with renameuser
+ * righs
+ *
+ * @file
+ * @ingroup Extensions
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+$wgAvailableRights[] = 'renameuser';
+$wgGroupPermissions['bureaucrat']['renameuser'] = true;
+
+$wgExtensionCredits['specialpage'][] = array(
+ 'path' => __FILE__,
+ 'name' => 'Renameuser',
+ 'author' => array( 'Ævar Arnfjörð Bjarmason', 'Aaron Schulz' ),
+ 'url' => 'http://www.mediawiki.org/wiki/Extension:Renameuser',
+ 'descriptionmsg' => 'renameuser-desc',
+);
+
+# Internationalisation file
+$dir = dirname( __FILE__ ) . '/';
+$wgExtensionMessagesFiles['Renameuser'] = $dir . 'Renameuser.i18n.php';
+$wgExtensionAliasesFiles['Renameuser'] = $dir . 'Renameuser.alias.php';
+
+/**
+ * Users with more than this number of edits will have their rename operation
+ * deferred via the job queue.
+ */
+define( 'RENAMEUSER_CONTRIBJOB', 5000 );
+
+# Add a new log type
+global $wgLogTypes, $wgLogNames, $wgLogHeaders, $wgLogActions;
+$wgLogTypes[] = 'renameuser';
+$wgLogNames['renameuser'] = 'renameuserlogpage';
+$wgLogHeaders['renameuser'] = 'renameuserlogpagetext';
+# $wgLogActions['renameuser/renameuser'] = 'renameuserlogentry';
+$wgLogActionsHandlers['renameuser/renameuser'] = 'wfRenameUserLogActionText'; // deal with old breakage
+
+/**
+ * @param $type
+ * @param $action
+ * @param $title Title
+ * @param $skin Skin
+ * @param $params array
+ * @param $filterWikilinks bool
+ * @return String
+ */
+function wfRenameUserLogActionText( $type, $action, $title = null, $skin = null, $params = array(), $filterWikilinks = false ) {
+ if ( !$title || $title->getNamespace() !== NS_USER ) {
+ $rv = ''; // handled in comment, the old way
+ } else {
+ $titleLink = $skin ?
+ $skin->makeLinkObj( $title, htmlspecialchars( $title->getPrefixedText() ) ) : htmlspecialchars( $title->getText() );
+ # Add title to params
+ array_unshift( $params, $titleLink );
+ $rv = wfMsg( 'renameuserlogentry', $params );
+ }
+ return $rv;
+}
+
+$wgAutoloadClasses['SpecialRenameuser'] = dirname( __FILE__ ) . '/Renameuser_body.php';
+$wgAutoloadClasses['RenameUserJob'] = dirname( __FILE__ ) . '/RenameUserJob.php';
+$wgSpecialPages['Renameuser'] = 'SpecialRenameuser';
+$wgSpecialPageGroups['Renameuser'] = 'users';
+$wgJobClasses['renameUser'] = 'RenameUserJob';
+
+$wgHooks['ShowMissingArticle'][] = 'wfRenameUserShowLog';
+$wgHooks['ContributionsToolLinks'][] = 'wfRenameuserOnContribsLink';
+
+/**
+ * Show a log if the user has been renamed and point to the new username.
+ * Don't show the log if the $oldUserName exists as a user.
+ *
+ * @param $article Article
+ */
+function wfRenameUserShowLog( $article ) {
+ global $wgOut;
+ $title = $article->getTitle();
+ $oldUser = User::newFromName( $title->getBaseText() );
+ if ( ($title->getNamespace() == NS_USER || $title->getNamespace() == NS_USER_TALK ) && ($oldUser && $oldUser->isAnon() )) {
+ // Get the title for the base userpage
+ $page = Title::makeTitle( NS_USER, str_replace( ' ', '_', $title->getBaseText() ) )->getPrefixedDBkey();
+ LogEventsList::showLogExtract( $wgOut, 'renameuser', $page, '', array( 'lim' => 10, 'showIfEmpty' => false,
+ 'msgKey' => array( 'renameuser-renamed-notice', $title->getBaseText() ) ) );
+ }
+ return true;
+}
+
+/**
+ * @param $id
+ * @param $nt Title
+ * @param $tools
+ * @return bool
+ */
+function wfRenameuserOnContribsLink( $id, $nt, &$tools ) {
+ global $wgUser;
+
+ if ( $wgUser->isAllowed( 'renameuser' ) && $id ) {
+ $sk = $wgUser->getSkin();
+ $tools[] = $sk->link(
+ SpecialPage::getTitleFor( 'Renameuser' ),
+ wfMsg( 'renameuser-linkoncontribs' ),
+ array( 'title' => wfMsgExt( 'renameuser-linkoncontribs-text', 'parseinline' ) ),
+ array( 'oldusername' => $nt->getText() )
+ );
+ }
+ return true;
+}
diff --git a/extensions/Renameuser/Renameuser_body.php b/extensions/Renameuser/Renameuser_body.php
new file mode 100644
index 00000000..1e72aeaa
--- /dev/null
+++ b/extensions/Renameuser/Renameuser_body.php
@@ -0,0 +1,548 @@
+<?php
+if ( !defined( 'MEDIAWIKI' ) ) {
+ echo "RenameUser extension\n";
+ exit( 1 );
+}
+
+/**
+ * Special page allows authorised users to rename
+ * user accounts
+ */
+class SpecialRenameuser extends SpecialPage {
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ parent::__construct( 'Renameuser', 'renameuser' );
+ }
+
+ /**
+ * Show the special page
+ *
+ * @param mixed $par Parameter passed to the page
+ */
+ public function execute( $par ) {
+ global $wgOut, $wgUser, $wgRequest, $wgContLang, $wgLang;
+ global $wgCapitalLinks;
+
+ $this->setHeaders();
+ $wgOut->addWikiMsg( 'renameuser-summary' );
+
+ if ( !$wgUser->isAllowed( 'renameuser' ) ) {
+ $wgOut->permissionRequired( 'renameuser' );
+ return;
+ }
+
+ if ( wfReadOnly() ) {
+ $wgOut->readOnlyPage();
+ return;
+ }
+
+ if( $wgUser->isBlocked() ){
+ $wgOut->blockedPage();
+ }
+
+ $showBlockLog = $wgRequest->getBool( 'submit-showBlockLog' );
+ $oldnamePar = trim( str_replace( '_', ' ', $wgRequest->getText( 'oldusername', $par ) ) );
+ $oldusername = Title::makeTitle( NS_USER, $oldnamePar );
+ // Force uppercase of newusername, otherwise wikis with wgCapitalLinks=false can create lc usernames
+ $newusername = Title::makeTitleSafe( NS_USER, $wgContLang->ucfirst( $wgRequest->getText( 'newusername' ) ) );
+ $oun = is_object( $oldusername ) ? $oldusername->getText() : '';
+ $nun = is_object( $newusername ) ? $newusername->getText() : '';
+ $token = $wgUser->editToken();
+ $reason = $wgRequest->getText( 'reason' );
+
+ $move_checked = $wgRequest->getBool( 'movepages', !$wgRequest->wasPosted());
+ $suppress_checked = $wgRequest->getCheck( 'suppressredirect' );
+
+ $warnings = array();
+ if ( $oun && $nun && !$wgRequest->getCheck( 'confirmaction' ) ) {
+ wfRunHooks( 'RenameUserWarning', array( $oun, $nun, &$warnings ) );
+ }
+
+ $wgOut->addHTML(
+ Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getTitle()->getLocalUrl(), 'id' => 'renameuser' ) ) .
+ Xml::openElement( 'fieldset' ) .
+ Xml::element( 'legend', null, wfMsg( 'renameuser' ) ) .
+ Xml::openElement( 'table', array( 'id' => 'mw-renameuser-table' ) ) .
+ "<tr>
+ <td class='mw-label'>" .
+ Xml::label( wfMsg( 'renameuserold' ), 'oldusername' ) .
+ "</td>
+ <td class='mw-input'>" .
+ Xml::input( 'oldusername', 20, $oun, array( 'type' => 'text', 'tabindex' => '1' ) ) . ' ' .
+ "</td>
+ </tr>
+ <tr>
+ <td class='mw-label'>" .
+ Xml::label( wfMsg( 'renameusernew' ), 'newusername' ) .
+ "</td>
+ <td class='mw-input'>" .
+ Xml::input( 'newusername', 20, $nun, array( 'type' => 'text', 'tabindex' => '2' ) ) .
+ "</td>
+ </tr>
+ <tr>
+ <td class='mw-label'>" .
+ Xml::label( wfMsg( 'renameuserreason' ), 'reason' ) .
+ "</td>
+ <td class='mw-input'>" .
+ Xml::input( 'reason', 40, $reason, array( 'type' => 'text', 'tabindex' => '3', 'maxlength' => 255 ) ) .
+ "</td>
+ </tr>"
+ );
+ if ( $wgUser->isAllowed( 'move' ) ) {
+ $wgOut->addHTML( "
+ <tr>
+ <td>&#160;
+ </td>
+ <td class='mw-input'>" .
+ Xml::checkLabel( wfMsg( 'renameusermove' ), 'movepages', 'movepages',
+ $move_checked, array( 'tabindex' => '4' ) ) .
+ "</td>
+ </tr>"
+ );
+
+ if ( $wgUser->isAllowed( 'suppressredirect' ) ) {
+ $wgOut->addHTML( "
+ <tr>
+ <td>&#160;
+ </td>
+ <td class='mw-input'>" .
+ Xml::checkLabel( wfMsg( 'renameusersuppress' ), 'suppressredirect', 'suppressredirect',
+ $suppress_checked, array( 'tabindex' => '5' ) ) .
+ "</td>
+ </tr>"
+ );
+ }
+ }
+ if ( $warnings ) {
+ $warningsHtml = array();
+ foreach ( $warnings as $warning )
+ $warningsHtml[] = is_array( $warning ) ?
+ call_user_func_array( 'wfMsgWikiHtml', $warning ) :
+ wfMsgHtml( $warning );
+ $wgOut->addHTML( "
+ <tr>
+ <td class='mw-label'>" . wfMsgWikiHtml( 'renameuserwarnings' ) . "
+ </td>
+ <td class='mw-input'>" .
+ '<ul style="color: red; font-weight: bold"><li>' .
+ implode( '</li><li>', $warningsHtml ) . '</li></ul>' .
+ "</td>
+ </tr>"
+ );
+ $wgOut->addHTML( "
+ <tr>
+ <td>&#160;
+ </td>
+ <td class='mw-input'>" .
+ Xml::checkLabel( wfMsg( 'renameuserconfirm' ), 'confirmaction', 'confirmaction',
+ false, array( 'tabindex' => '6' ) ) .
+ "</td>
+ </tr>"
+ );
+ }
+ $wgOut->addHTML( "
+ <tr>
+ <td>&#160;
+ </td>
+ <td class='mw-submit'>" .
+ Xml::submitButton( wfMsg( 'renameusersubmit' ), array( 'name' => 'submit',
+ 'tabindex' => '7', 'id' => 'submit' ) ) .
+ ' ' .
+ Xml::submitButton( wfMsg( 'blocklogpage' ), array ( 'name' => 'submit-showBlockLog',
+ 'id' => 'submit-showBlockLog', 'tabindex' => '8' ) ) .
+ "</td>
+ </tr>" .
+ Xml::closeElement( 'table' ) .
+ Xml::closeElement( 'fieldset' ) .
+ Html::hidden( 'token', $token ) .
+ Xml::closeElement( 'form' ) . "\n"
+ );
+
+ // Show block log if requested
+ if ( $showBlockLog && is_object( $oldusername ) ) {
+ $this->showLogExtract( $oldusername, 'block', $wgOut ) ;
+ return;
+ }
+
+ if ( $wgRequest->getText( 'token' ) === '' ) {
+ # They probably haven't even submitted the form, so don't go further.
+ return;
+ } elseif ( $warnings ) {
+ # Let user read warnings
+ return;
+ } elseif ( !$wgRequest->wasPosted() || !$wgUser->matchEditToken( $wgRequest->getVal( 'token' ) ) ) {
+ $wgOut->wrapWikiMsg( "<div class=\"errorbox\">$1</div>", 'renameuser-error-request' );
+ return;
+ } elseif ( !is_object( $oldusername ) ) {
+ $wgOut->wrapWikiMsg( "<div class=\"errorbox\">$1</div>",
+ array( 'renameusererrorinvalid', $wgRequest->getText( 'oldusername' ) ) );
+ return;
+ } elseif ( !is_object( $newusername ) ) {
+ $wgOut->wrapWikiMsg( "<div class=\"errorbox\">$1</div>",
+ array( 'renameusererrorinvalid', $wgRequest->getText( 'newusername' ) ) );
+ return;
+ } elseif ( $oldusername->getText() == $newusername->getText() ) {
+ $wgOut->wrapWikiMsg( "<div class=\"errorbox\">$1</div>", 'renameuser-error-same-user' );
+ return;
+ }
+
+ // Suppress username validation of old username
+ $olduser = User::newFromName( $oldusername->getText(), false );
+ $newuser = User::newFromName( $newusername->getText(), 'creatable' );
+
+ // It won't be an object if for instance "|" is supplied as a value
+ if ( !is_object( $olduser ) ) {
+ $wgOut->wrapWikiMsg( "<div class=\"errorbox\">$1</div>",
+ array( 'renameusererrorinvalid', $oldusername->getText() ) );
+ return;
+ }
+ if ( !is_object( $newuser ) || !User::isCreatableName( $newuser->getName() ) ) {
+ $wgOut->wrapWikiMsg( "<div class=\"errorbox\">$1</div>",
+ array( 'renameusererrorinvalid', $newusername->getText() ) );
+ return;
+ }
+
+ // Check for the existence of lowercase oldusername in database.
+ // Until r19631 it was possible to rename a user to a name with first character as lowercase
+ if ( $oldusername->getText() !== $wgContLang->ucfirst( $oldusername->getText() ) ) {
+ // oldusername was entered as lowercase -> check for existence in table 'user'
+ $dbr = wfGetDB( DB_SLAVE );
+ $uid = $dbr->selectField( 'user', 'user_id',
+ array( 'user_name' => $oldusername->getText() ),
+ __METHOD__ );
+ if ( $uid === false ) {
+ if ( !$wgCapitalLinks ) {
+ $uid = 0; // We are on a lowercase wiki but lowercase username does not exists
+ } else {
+ // We are on a standard uppercase wiki, use normal
+ $uid = $olduser->idForName();
+ $oldusername = Title::makeTitleSafe( NS_USER, $olduser->getName() );
+ }
+ }
+ } else {
+ // oldusername was entered as upperase -> standard procedure
+ $uid = $olduser->idForName();
+ }
+
+ if ( $uid == 0 ) {
+ $wgOut->wrapWikiMsg( "<div class=\"errorbox\">$1</div>",
+ array( 'renameusererrordoesnotexist', $oldusername->getText() ) );
+ return;
+ }
+
+ if ( $newuser->idForName() != 0 ) {
+ $wgOut->wrapWikiMsg( "<div class=\"errorbox\">$1</div>",
+ array( 'renameusererrorexists', $newusername->getText() ) );
+ return;
+ }
+
+ // Always get the edits count, it will be used for the log message
+ $contribs = User::edits( $uid );
+
+ // Give other affected extensions a chance to validate or abort
+ if ( !wfRunHooks( 'RenameUserAbort', array( $uid, $oldusername->getText(), $newusername->getText() ) ) ) {
+ return;
+ }
+
+ // Do the heavy lifting...
+ $rename = new RenameuserSQL( $oldusername->getText(), $newusername->getText(), $uid );
+ if ( !$rename->rename() ) {
+ return;
+ }
+
+ // If this user is renaming his/herself, make sure that Title::moveTo()
+ // doesn't make a bunch of null move edits under the old name!
+ if ( $wgUser->getId() == $uid ) {
+ $wgUser->setName( $newusername->getText() );
+ }
+
+ // Log this rename
+ $log = new LogPage( 'renameuser' );
+ $log->addEntry( 'renameuser', $oldusername, wfMsgExt( 'renameuser-log', array( 'parsemag', 'content' ),
+ $wgContLang->formatNum( $contribs ), $reason ), $newusername->getText() );
+
+ // Move any user pages
+ if ( $wgRequest->getCheck( 'movepages' ) && $wgUser->isAllowed( 'move' ) ) {
+ $dbr = wfGetDB( DB_SLAVE );
+
+ $pages = $dbr->select(
+ 'page',
+ array( 'page_namespace', 'page_title' ),
+ array(
+ 'page_namespace IN (' . NS_USER . ',' . NS_USER_TALK . ')',
+ '(page_title ' . $dbr->buildLike( $oldusername->getDBkey() . '/', $dbr->anyString() ) .
+ ' OR page_title = ' . $dbr->addQuotes( $oldusername->getDBkey() ) . ')'
+ ),
+ __METHOD__
+ );
+
+ $suppressRedirect = false;
+
+ if ( $wgRequest->getCheck( 'suppressredirect' ) && $wgUser->isAllowed( 'suppressredirect' ) ) {
+ $suppressRedirect = true;
+ }
+
+ $output = '';
+ $skin = $wgUser->getSkin();
+ foreach ( $pages as $row ) {
+ $oldPage = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
+ $newPage = Title::makeTitleSafe( $row->page_namespace,
+ preg_replace( '!^[^/]+!', $newusername->getDBkey(), $row->page_title ) );
+ # Do not autodelete or anything, title must not exist
+ if ( $newPage->exists() && !$oldPage->isValidMoveTarget( $newPage ) ) {
+ $link = $skin->makeKnownLinkObj( $newPage );
+ $output .= '<li class="mw-renameuser-pe">' . wfMsgHtml( 'renameuser-page-exists', $link ) . '</li>';
+ } else {
+ $success = $oldPage->moveTo( $newPage, false, wfMsgForContent( 'renameuser-move-log',
+ $oldusername->getText(), $newusername->getText() ), !$suppressRedirect );
+ if ( $success === true ) {
+ $oldLink = $skin->makeKnownLinkObj( $oldPage, '', 'redirect=no' );
+ $newLink = $skin->makeKnownLinkObj( $newPage );
+ $output .= '<li class="mw-renameuser-pm">' . wfMsgHtml( 'renameuser-page-moved', $oldLink, $newLink ) . '</li>';
+ } else {
+ $oldLink = $skin->makeKnownLinkObj( $oldPage );
+ $newLink = $skin->makeLinkObj( $newPage );
+ $output .= '<li class="mw-renameuser-pu">' . wfMsgHtml( 'renameuser-page-unmoved', $oldLink, $newLink ) . '</li>';
+ }
+ }
+ }
+ if ( $output )
+ $wgOut->addHTML( '<ul>' . $output . '</ul>' );
+ }
+
+ // Output success message stuff :)
+ $wgOut->wrapWikiMsg( "<div class=\"successbox\">$1</div><br style=\"clear:both\" />",
+ array( 'renameusersuccess', $oldusername->getText(), $newusername->getText() ) );
+ }
+
+ /**
+ * @param $username Title
+ * @param $type
+ * @param $out
+ * @return void
+ */
+ function showLogExtract( $username, $type, &$out ) {
+ # Show relevant lines from the logs:
+ $out->addHTML( Xml::element( 'h2', null, LogPage::logName( $type ) ) . "\n" );
+ LogEventsList::showLogExtract( $out, $type, $username->getPrefixedText() );
+ }
+}
+
+class RenameuserSQL {
+ /**
+ * The old username
+ *
+ * @var string
+ * @access private
+ */
+ var $old;
+
+ /**
+ * The new username
+ *
+ * @var string
+ * @access private
+ */
+ var $new;
+
+ /**
+ * The user ID
+ *
+ * @var integer
+ * @access private
+ */
+ var $uid;
+
+ /**
+ * The the tables => fields to be updated
+ *
+ * @var array
+ * @access private
+ */
+ var $tables;
+
+ /**
+ * Constructor
+ *
+ * @param string $old The old username
+ * @param string $new The new username
+ */
+ function __construct( $old, $new, $uid ) {
+ $this->old = $old;
+ $this->new = $new;
+ $this->uid = $uid;
+
+ $this->tables = array(); // Immediate updates
+ $this->tables['image'] = array( 'img_user_text', 'img_user' );
+ $this->tables['oldimage'] = array( 'oi_user_text', 'oi_user' );
+ $this->tables['filearchive'] = array('fa_user_text','fa_user');
+ $this->tablesJob = array(); // Slow updates
+ // If this user has a large number of edits, use the jobqueue
+ if ( User::edits( $this->uid ) > RENAMEUSER_CONTRIBJOB ) {
+ $this->tablesJob['revision'] = array( 'rev_user_text', 'rev_user', 'rev_timestamp' );
+ $this->tablesJob['archive'] = array( 'ar_user_text', 'ar_user', 'ar_timestamp' );
+ $this->tablesJob['logging'] = array( 'log_user_text', 'log_user', 'log_timestamp' );
+ } else {
+ $this->tables['revision'] = array( 'rev_user_text', 'rev_user' );
+ $this->tables['archive'] = array( 'ar_user_text', 'ar_user' );
+ $this->tables['logging'] = array( 'log_user_text', 'log_user' );
+ }
+ // Recent changes is pretty hot, deadlocks occur if done all at once
+ if ( wfQueriesMustScale() ) {
+ $this->tablesJob['recentchanges'] = array( 'rc_user_text', 'rc_user', 'rc_timestamp' );
+ } else {
+ $this->tables['recentchanges'] = array( 'rc_user_text', 'rc_user' );
+ }
+
+ wfRunHooks( 'RenameUserSQL', array( $this ) );
+ }
+
+ /**
+ * Do the rename operation
+ */
+ function rename() {
+ global $wgMemc, $wgAuth, $wgUpdateRowsPerJob;
+
+ wfProfileIn( __METHOD__ );
+
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
+ wfRunHooks( 'RenameUserPreRename', array( $this->uid, $this->old, $this->new ) );
+
+ // Rename and touch the user before re-attributing edits,
+ // this avoids users still being logged in and making new edits while
+ // being renamed, which leaves edits at the old name.
+ $dbw->update( 'user',
+ array( 'user_name' => $this->new, 'user_touched' => $dbw->timestamp() ),
+ array( 'user_name' => $this->old ),
+ __METHOD__
+ );
+ if ( !$dbw->affectedRows() ) {
+ return false;
+ }
+ // Reset token to break login with central auth systems.
+ // Again, avoids user being logged in with old name.
+ $user = User::newFromId( $this->uid );
+ $authUser = $wgAuth->getUserInstance( $user );
+ $authUser->resetAuthToken();
+
+ // Delete from memcached.
+ $wgMemc->delete( wfMemcKey( 'user', 'id', $this->uid ) );
+
+ // Update ipblock list if this user has a block in there.
+ $dbw->update( 'ipblocks',
+ array( 'ipb_address' => $this->new ),
+ array( 'ipb_user' => $this->uid, 'ipb_address' => $this->old ),
+ __METHOD__ );
+ // Update this users block/rights log. Ideally, the logs would be historical,
+ // but it is really annoying when users have "clean" block logs by virtue of
+ // being renamed, which makes admin tasks more of a pain...
+ $oldTitle = Title::makeTitle( NS_USER, $this->old );
+ $newTitle = Title::makeTitle( NS_USER, $this->new );
+ $dbw->update( 'logging',
+ array( 'log_title' => $newTitle->getDBkey() ),
+ array( 'log_type' => array( 'block', 'rights' ),
+ 'log_namespace' => NS_USER,
+ 'log_title' => $oldTitle->getDBkey() ),
+ __METHOD__ );
+ // Do immediate updates!
+ foreach ( $this->tables as $table => $fieldSet ) {
+ list( $nameCol, $userCol ) = $fieldSet;
+ $dbw->update( $table,
+ array( $nameCol => $this->new ),
+ array( $nameCol => $this->old, $userCol => $this->uid ),
+ __METHOD__
+ );
+ }
+
+ // Increase time limit (like CheckUser); this can take a while...
+ if ( $this->tablesJob ) {
+ wfSuppressWarnings();
+ set_time_limit( 120 );
+ wfRestoreWarnings();
+ }
+
+ $jobs = array(); // jobs for all tables
+ // Construct jobqueue updates...
+ // FIXME: if a bureaucrat renames a user in error, he/she
+ // must be careful to wait until the rename finishes before
+ // renaming back. This is due to the fact the the job "queue"
+ // is not really FIFO, so we might end up with a bunch of edits
+ // randomly mixed between the two new names. Some sort of rename
+ // lock might be in order...
+ foreach ( $this->tablesJob as $table => $params ) {
+ $userTextC = $params[0]; // some *_user_text column
+ $userIDC = $params[1]; // some *_user column
+ $timestampC = $params[2]; // some *_timestamp column
+
+ $res = $dbw->select( $table,
+ array( $timestampC ),
+ array( $userTextC => $this->old, $userIDC => $this->uid ),
+ __METHOD__,
+ array( 'ORDER BY' => "$timestampC ASC" )
+ );
+
+ $jobParams = array();
+ $jobParams['table'] = $table;
+ $jobParams['column'] = $userTextC;
+ $jobParams['uidColumn'] = $userIDC;
+ $jobParams['timestampColumn'] = $timestampC;
+ $jobParams['oldname'] = $this->old;
+ $jobParams['newname'] = $this->new;
+ $jobParams['userID'] = $this->uid;
+ // Timestamp column data for index optimizations
+ $jobParams['minTimestamp'] = '0';
+ $jobParams['maxTimestamp'] = '0';
+ $jobParams['count'] = 0;
+
+ // Insert jobs into queue!
+ while ( true ) {
+ $row = $dbw->fetchObject( $res );
+ if ( !$row ) {
+ # If there are any job rows left, add it to the queue as one job
+ if ( $jobParams['count'] > 0 ) {
+ $jobs[] = Job::factory( 'renameUser', $oldTitle, $jobParams );
+ }
+ break;
+ }
+ # Since the ORDER BY is ASC, set the min timestamp with first row
+ if ( $jobParams['count'] == 0 ) {
+ $jobParams['minTimestamp'] = $row->$timestampC;
+ }
+ # Keep updating the last timestamp, so it should be correct
+ # when the last item is added.
+ $jobParams['maxTimestamp'] = $row->$timestampC;
+ # Update row counter
+ $jobParams['count']++;
+ # Once a job has $wgUpdateRowsPerJob rows, add it to the queue
+ if ( $jobParams['count'] >= $wgUpdateRowsPerJob ) {
+ $jobs[] = Job::factory( 'renameUser', $oldTitle, $jobParams );
+ $jobParams['minTimestamp'] = '0';
+ $jobParams['maxTimestamp'] = '0';
+ $jobParams['count'] = 0;
+ }
+ }
+ $dbw->freeResult( $res );
+ }
+
+ if ( count( $jobs ) > 0 ) {
+ Job::safeBatchInsert( $jobs ); // don't commit yet
+ }
+
+ // Commit the transaction
+ $dbw->commit();
+
+ // Delete from memcached again to make sure
+ $wgMemc->delete( wfMemcKey( 'user', 'id', $this->uid ) );
+
+ // Clear caches and inform authentication plugins
+ $user = User::newFromId( $this->uid );
+ $wgAuth->updateExternalDB( $user );
+ wfRunHooks( 'RenameUserComplete', array( $this->uid, $this->old, $this->new ) );
+
+ wfProfileOut( __METHOD__ );
+ return true;
+ }
+}
diff --git a/extensions/Renameuser/SpecialRenameuser.php b/extensions/Renameuser/SpecialRenameuser.php
new file mode 100644
index 00000000..60052eca
--- /dev/null
+++ b/extensions/Renameuser/SpecialRenameuser.php
@@ -0,0 +1 @@
+<?php require dirname( __FILE__ ) . '/Renameuser.php';
diff --git a/extensions/Renameuser/renameUserCleanup.php b/extensions/Renameuser/renameUserCleanup.php
new file mode 100644
index 00000000..bd578b6a
--- /dev/null
+++ b/extensions/Renameuser/renameUserCleanup.php
@@ -0,0 +1,205 @@
+<?php
+/**
+ * Maintenance script to clean up after incomplete user renames
+ * Sometimes user edits are left lying around under the old name,
+ * check for that and assign them to the new username
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ * @author Ariel Glenn <ariel@wikimedia.orf>
+ */
+
+$IP = getenv( 'MW_INSTALL_PATH' );
+if ( $IP === false ) {
+ $IP = dirname( __FILE__ ) . '/../..';
+}
+require( "$IP/maintenance/Maintenance.php" );
+
+class RenameUserCleanup extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Maintenance script to finish incomplete rename user, in particular to reassign edits that were missed";
+ $this->addOption( 'olduser', 'Old user name', true, true );
+ $this->addOption( 'newuser', 'New user name', true, true );
+ $this->mBatchSize = 1000;
+ }
+
+ public function execute() {
+ $this->output( "Rename User Cleanup starting...\n\n" );
+ $olduser = User::newFromName( $this->getOption( 'olduser' ) );
+ $newuser = User::newFromName( $this->getOption( 'newuser' ) );
+ if ( !$newuser->getId() ) {
+ $this->error( "No such user: " . $this->getOption( 'newuser' ), true );
+ exit(1);
+ }
+ if ($olduser->getId() ) {
+ print( "WARNING!!: Old user still exists: " . $this->getOption( 'olduser' ) . "\n");
+ print("proceed anyways? We'll only re-attribute edits that have the new user uid (or 0) and the old user name. [N/y] ");
+ $stdin = fopen ("php://stdin","rt");
+ $line = fgets($stdin);
+ fclose($stdin);
+ if ( $line[0] != "Y" && $line[0] != "y" ) {
+ print("Exiting at user's request\n");
+ exit(0);
+ }
+ }
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $result = $dbr->select( 'logging', '*',
+ array( 'log_type' => 'renameuser',
+ 'log_action' => 'renameuser',
+ 'log_title' => $olduser->getName(),
+ 'log_params' => $newuser->getName()
+ ),
+ __METHOD__
+ );
+ if (! $result || ! $result->numRows() ) {
+ // try the old format
+ $result = $dbr->select( 'logging', '*',
+ array( 'log_type' => 'renameuser',
+ 'log_action' => 'renameuser',
+ 'log_title' => $olduser->getName(),
+ ),
+ __METHOD__
+ );
+ if (! $result || ! $result->numRows() ) {
+ print("No log entry found for a rename of ".$olduser->getName()." to ".$newuser->getName().", giving up\n");
+ exit(1);
+ }
+ else {
+ foreach ( $result as $row ) {
+ print("Found possible log entry of the rename, please check: ".$row->log_title." with comment ".$row->log_comment." on $row->log_timestamp\n");
+ }
+ }
+ }
+ else {
+ foreach ( $result as $row ) {
+ print("Found log entry of the rename: ".$olduser->getName()." to ".$newuser->getName()." on $row->log_timestamp\n");
+ }
+ }
+ if ($result->numRows() > 1) {
+ print("More than one rename entry found in the log, not sure what to do. Continue anyways? [N/y] ");
+ $stdin = fopen ("php://stdin","rt");
+ $line = fgets($stdin);
+ fclose($stdin);
+ if ( $line[0] != "Y" && $line[0] != "y" ) {
+ print("Exiting at user's request\n");
+ exit(1);
+ }
+ }
+ $dbw = wfGetDB( DB_MASTER );
+
+ $this->updateTable('revision', 'rev_user_text', 'rev_user', 'rev_timestamp', $olduser, $newuser, $dbw);
+ $this->updateTable('archive', 'ar_user_text', 'ar_user', 'ar_timestamp', $olduser, $newuser, $dbw);
+ $this->updateTable('logging', 'log_user_text', 'log_user', 'log_timestamp', $olduser, $newuser, $dbw);
+ $this->updateTable('image', 'img_user_text', 'img_user', 'img_timestamp', $olduser, $newuser, $dbw);
+ $this->updateTable('oldimage', 'oi_user_text', 'oi_user', 'oi_timestamp', $olduser, $newuser, $dbw);
+ $this->updateTable('filearchive', 'fa_user_text','fa_user', 'fa_timestamp', $olduser, $newuser, $dbw);
+ print "Done!\n";
+ exit(0);
+ }
+
+ public function updateTable($table,$usernamefield,$useridfield,$timestampfield,$olduser,$newuser,$dbw) {
+ $doUid = 0;
+
+ $contribs = $dbw->selectField( $table, 'count(*)',
+ array( $usernamefield => $olduser->getName(), $useridfield => $newuser->getId() ), __METHOD__ );
+ if ($contribs == 0) {
+ $contribs = $dbw->selectField( $table, 'count(*)',
+ array( $usernamefield => $olduser->getName(), $useridfield => 0 ), __METHOD__ );
+ if ($contribs > 0) {
+ print("Found $contribs edits to be re-attributed from table $table but the uid present is 0 (should be ".$newuser->getId().")\n");
+ print("If you proceed, the uid field will be set to that of the new user name (i.e. ".$newuser->getId().") in these rows.\n");
+ $doUid = 1;
+ }
+ else {
+ print("No edits to be re-attributed from table $table\n");
+ return(0);
+ }
+ }
+ else {
+ print("total number of edits to be re-attributed from table $table: $contribs\n");
+ }
+ print("proceed? [N/y] ");
+ $stdin = fopen ("php://stdin","rt");
+ $line = fgets($stdin);
+ fclose($stdin);
+ if ( $line[0] != "Y" && $line[0] != "y" ) {
+ print("skipping at user's request\n");
+ return(0);
+ }
+ $selectConds = array( $usernamefield => $olduser->getName() );
+ $updateFields = array( $usernamefield => $newuser->getName() );
+ $updateConds = array( $usernamefield => $olduser->getName() );
+
+ $extraConds = array( $useridfield => $newuser->getId() );
+ $extraCondsNoUid = array( $useridfield => 0 );
+ # uid in rows is set properly, use as cond to find rows, don't bother to update it
+ if (! $doUid) {
+ $selectConds = array_merge( $selectConds, $extraConds );
+ $updateConds = array_merge( $updateConds, $extraConds );
+ }
+ # uid in edit rows is 0, we will set it and we will only update rows with 0 uid and the old user name
+ else {
+ $selectConds = array_merge( $selectConds, $extraCondsNoUid );
+ $updateConds = array_merge( $updateConds, $extraCondsNoUid );
+ $updateFields = array_merge( $updateFields, $extraConds );
+ }
+
+ while ($contribs > 0) {
+ print("doing batch of up to approximately ".$this->mBatchSize."\n");
+ print("do this batch? [N/y] ");
+ $stdin = fopen ("php://stdin","rt");
+ $line = fgets($stdin);
+ fclose($stdin);
+ if ( $line[0] != "Y" && $line[0] != "y" ) {
+ print("skipping at user's request\n");
+ return(0);
+ }
+ $dbw->begin();
+ $result = $dbw->select( $table, $timestampfield, $selectConds , __METHOD__,
+ array( 'ORDER BY' => $timestampfield.' DESC', 'LIMIT' => $this->mBatchSize ) );
+ if (! $result) {
+ print("There were rows for updating but now they are gone. Skipping.\n");
+ $dbw->rollback();
+ return(0);
+ }
+ $result->seek($result->numRows() -1 );
+ $row = $result->fetchObject();
+ $timestamp = $row->$timestampfield;
+ $updateCondsWithTime = array_merge( $updateConds, array ("$timestampfield >= $timestamp") );
+ $success = $dbw->update( $table, $updateFields, $updateCondsWithTime, __METHOD__ );
+ if ($success) {
+ $rowsDone = $dbw->affectedRows();
+ $dbw->commit();
+ }
+ else {
+ print("problem with the update, rolling back and exiting\n");
+ $dbw->rollback();
+ exit(1);
+ }
+ //$contribs = User::edits( $olduser->getId() );
+ $contribs = $dbw->selectField( $table, 'count(*)', $selectConds, __METHOD__ );
+ print("updated $rowsDone edits; $contribs edits remaining to be re-attributed\n");
+ }
+ return(0);
+ }
+
+}
+
+$maintClass = "RenameUserCleanup";
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/extensions/Vector/README b/extensions/Vector/README
new file mode 100644
index 00000000..7394ff47
--- /dev/null
+++ b/extensions/Vector/README
@@ -0,0 +1,21 @@
+# Vector provides enhancements to the Vector skin
+
+# This extension requires MediaWiki 1.17+ because it makes use of ResourceLoader.
+
+# Example LocalSettings.php additions
+
+require_once( "$IP/extensions/Vector/Vector.php" );
+
+# Before configuring this extension, see Vector.php and become familiar with the initial state and structure of the
+# $wgVectorFeatures configuration variable. Essentially it's an array of arrays, keyed by feature name, each containing
+# global and user keys with boolean values. "global" indicates that it should be turned on for everyone always, while
+# user indicates that users should be allowed to turn it on or off in their user preferences.
+
+# To enable a preference by default but still allow users to disable it in preferences, use something like...
+
+$wgDefaultUserOptions['vector-collapsiblenav'] = 1;
+
+# By default, the Vector skin does not use the simplified search box. To take advantage of the simplesearch feature you
+# must add this to your LocalSettings.php file.
+
+$wgVectorUseSimpleSearch = true;
diff --git a/extensions/Vector/Vector.hooks.php b/extensions/Vector/Vector.hooks.php
new file mode 100644
index 00000000..51d387b9
--- /dev/null
+++ b/extensions/Vector/Vector.hooks.php
@@ -0,0 +1,192 @@
+<?php
+/**
+ * Hooks for Vector extension
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+class VectorHooks {
+
+ /* Protected Static Members */
+
+ protected static $features = array(
+ 'collapsiblenav' => array(
+ 'preferences' => array(
+ 'vector-collapsiblenav' => array(
+ 'type' => 'toggle',
+ 'label-message' => 'vector-collapsiblenav-preference',
+ 'section' => 'rendering/advancedrendering',
+ ),
+ ),
+ 'requirements' => array(
+ 'vector-collapsiblenav' => true,
+ ),
+ 'configurations' => array(
+ 'wgCollapsibleNavBucketTest',
+ 'wgCollapsibleNavForceNewVersion',
+ ),
+ 'modules' => array( 'ext.vector.collapsibleNav' ),
+ ),
+ 'collapsibletabs' => array(
+ 'modules' => array( 'ext.vector.collapsibleTabs' ),
+ ),
+ 'editwarning' => array(
+ 'preferences' => array(
+ // Ideally this would be 'vector-editwarning'
+ 'useeditwarning' => array(
+ 'type' => 'toggle',
+ 'label-message' => 'vector-editwarning-preference',
+ 'section' => 'editing/advancedediting',
+ ),
+ ),
+ 'requirements' => array(
+ 'useeditwarning' => true,
+ ),
+ 'modules' => array( 'ext.vector.editWarning' ),
+ ),
+ 'expandablesearch' => array(
+ 'requirements' => array( 'vector-simplesearch' => true ),
+ 'modules' => array( 'ext.vector.expandableSearch' ),
+ ),
+ 'footercleanup' => array(
+ 'modules' => array( 'ext.vector.footerCleanup' ),
+ ),
+ 'sectioneditlinks' => array(
+ 'modules' => array( 'ext.vector.sectionEditLinks' ),
+ 'configurations' => array(
+ 'wgVectorSectionEditLinksBucketTest',
+ 'wgVectorSectionEditLinksLotteryOdds',
+ 'wgVectorSectionEditLinksExperiment',
+ ),
+ 'requirements' => array(
+ 'vector-noexperiments' => false,
+ ),
+ ),
+ 'simplesearch' => array(
+ 'requirements' => array( 'vector-simplesearch' => true, 'disablesuggest' => false ),
+ 'modules' => array( 'ext.vector.simpleSearch' ),
+ ),
+ 'experiments' => array(
+ 'preferences' => array(
+ 'vector-noexperiments' => array(
+ 'type' => 'toggle',
+ 'label-message' => 'vector-noexperiments-preference',
+ 'section' => 'rendering/advancedrendering',
+ ),
+ ),
+ ),
+ );
+
+ /* Protected Static Methods */
+
+ protected static function isEnabled( $name ) {
+ global $wgVectorFeatures, $wgUser;
+
+ // Features with global set to true are always enabled
+ if ( !isset( $wgVectorFeatures[$name] ) || $wgVectorFeatures[$name]['global'] ) {
+ return true;
+ }
+ // Features with user preference control can have any number of preferences to be specific values to be enabled
+ if ( $wgVectorFeatures[$name]['user'] ) {
+ if ( isset( self::$features[$name]['requirements'] ) ) {
+ foreach ( self::$features[$name]['requirements'] as $requirement => $value ) {
+ // Important! We really do want fuzzy evaluation here
+ if ( $wgUser->getOption( $requirement ) != $value ) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+ // Features controlled by $wgVectorFeatures with both global and user set to false are awlways disabled
+ return false;
+ }
+
+ /* Static Methods */
+
+ /**
+ * BeforePageDisplay hook
+ *
+ * Adds the modules to the page
+ *
+ * @param $out OutputPage output page
+ * @param $skin Skin current skin
+ */
+ public static function beforePageDisplay( $out, $skin ) {
+ if ( $skin instanceof SkinVector ) {
+ // Add modules for enabled features
+ foreach ( self::$features as $name => $feature ) {
+ if ( isset( $feature['modules'] ) && self::isEnabled( $name ) ) {
+ $out->addModules( $feature['modules'] );
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * GetPreferences hook
+ *
+ * Adds Vector-releated items to the preferences
+ *
+ * @param $user User current user
+ * @param $defaultPreferences array list of default user preference controls
+ */
+ public static function getPreferences( $user, &$defaultPreferences ) {
+ global $wgVectorFeatures;
+
+ foreach ( self::$features as $name => $feature ) {
+ if (
+ isset( $feature['preferences'] ) &&
+ ( !isset( $wgVectorFeatures[$name] ) || $wgVectorFeatures[$name]['user'] )
+ ) {
+ foreach ( $feature['preferences'] as $key => $options ) {
+ $defaultPreferences[$key] = $options;
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * ResourceLoaderGetConfigVars hook
+ *
+ * Adds enabled/disabled switches for Vector modules
+ */
+ public static function resourceLoaderGetConfigVars( &$vars ) {
+ global $wgVectorFeatures;
+
+ $configurations = array();
+ foreach ( self::$features as $name => $feature ) {
+ if (
+ isset( $feature['configurations'] ) &&
+ ( !isset( $wgVectorFeatures[$name] ) || self::isEnabled( $name ) )
+ ) {
+ foreach ( $feature['configurations'] as $configuration ) {
+ global $$configuration;
+ $configurations[$configuration] = $$configuration;
+ }
+ }
+ }
+ if ( count( $configurations ) ) {
+ $vars = array_merge( $vars, $configurations );
+ }
+ return true;
+ }
+
+ /**
+ * @param $vars array
+ * @return bool
+ */
+ public static function makeGlobalVariablesScript( &$vars ) {
+ // Build and export old-style wgVectorEnabledModules object for back compat
+ $enabledModules = array();
+ foreach ( self::$features as $name => $feature ) {
+ $enabledModules[$name] = self::isEnabled( $name );
+ }
+
+ $vars['wgVectorEnabledModules'] = $enabledModules;
+ return true;
+ }
+}
diff --git a/extensions/Vector/Vector.i18n.php b/extensions/Vector/Vector.i18n.php
new file mode 100644
index 00000000..409d065a
--- /dev/null
+++ b/extensions/Vector/Vector.i18n.php
@@ -0,0 +1,1854 @@
+<?php
+/**
+ * Internationalisation for Vector extension
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$messages = array();
+
+/** English
+ * @author Trevor Parscal
+ */
+$messages['en'] = array(
+ 'vector' => 'UI improvements for Vector',
+ 'vector-desc' => 'Improves on the user interface elements of the Vector skin.',
+ 'vector-collapsiblenav-preference' => 'Enable collapsing of items in the navigation menu in Vector skin',
+ 'vector-collapsiblenav-more' => 'More languages',
+ 'vector-editwarning-warning' => 'Leaving this page may cause you to lose any changes you have made.
+If you are logged in, you can disable this warning in the "Editing" section of your preferences.',
+ 'vector-editwarning-preference' => 'Warn me when I leave an edit page with unsaved changes',
+ 'vector-simplesearch-search' => 'Search',
+ 'vector-simplesearch-containing' => 'containing...',
+ 'vector-noexperiments-preference' => 'Exclude me from feature experiments',
+);
+
+/** Message documentation (Message documentation)
+ * @author Fryed-peach
+ * @author Lloffiwr
+ * @author Umherirrender
+ */
+$messages['qqq'] = array(
+ 'vector' => 'UI means User Interface. Vector is the name of an interface skin.',
+ 'vector-desc' => '{{desc}}',
+ 'vector-editwarning-warning' => "{{doc-important|Do ''not'' use <nowiki>{{int:prefs-editing}}</nowiki> for \"Editing\". It is forbidden in this message, see [[mwr:68405]].}}",
+ 'vector-simplesearch-search' => 'Greyed out default text in the simple search box in the Vector skin. (It disappears and lets the user enter the requested search terms when the search box receives focus.)
+
+{{Identical|Search}}',
+ 'vector-simplesearch-containing' => 'Label used in the special item of the search suggestions list which gives the user an option to perform a full text search for the term.',
+ 'vector-noexperiments-preference' => 'An option in [[Special:Preferences]]',
+);
+
+/** Afrikaans (Afrikaans)
+ * @author Adriaan
+ * @author Naudefj
+ */
+$messages['af'] = array(
+ 'vector' => 'Gebruikerskoppelvlak-verbeteringe vir Vektor',
+ 'vector-desc' => 'Verbeter die gebruikerskoppelvlak-elemente van die Vektor omslag (skin).',
+ 'vector-collapsiblenav-preference' => 'Inklapbare navigasiespyskaart by die gebruik van Vector toelaat',
+ 'vector-collapsiblenav-more' => 'Meer tale',
+ 'vector-editwarning-warning' => 'As u hierdie bladsy verlaat, verloor u moontlik die wysigings wat u aangebring het.
+Indien u aangemeld is, kan u hierdie waarskuwing in die {{int:prefs-editing}}"-afdeling van u voorkeure afskakel.',
+ 'vector-editwarning-preference' => "Waarsku my as ek 'n gewysigde bladsy verlaat alvorens dit gestoor is",
+ 'vector-simplesearch-search' => 'Soek',
+ 'vector-simplesearch-containing' => 'bevat...',
+);
+
+/** Gheg Albanian (Gegë)
+ * @author Mdupont
+ */
+$messages['aln'] = array(
+ 'vector' => 'përmirësime UI për Vektor',
+ 'vector-desc' => 'Në elementet përmirëson ndërfaqen e përdoruesit të lëkurës Vektor.',
+ 'vector-collapsiblenav-preference' => 'Aktivizo paloset la navigacion menu',
+ 'vector-editwarning-warning' => 'Duke e lënë këtë faqe mund të bëjë që ju të humbni ndonjë ndryshim që keni bërë. Nëse ju jeni regjistruar, ju mund ta çaktivizoni këtë paralajmërim në "Tue redaktue" seksionin e preferencave tuaja.',
+ 'vector-editwarning-preference' => 'Paralajmëron mua kur unë të lë një redakto faqe me ndryshimet e para shpëtimit',
+ 'vector-simplesearch-search' => 'Kërkim',
+ 'vector-simplesearch-containing' => 'përmban ...',
+);
+
+/** Amharic (አማርኛ)
+ * @author Codex Sinaiticus
+ */
+$messages['am'] = array(
+ 'vector-simplesearch-search' => 'áˆáˆáŒ',
+ 'vector-simplesearch-containing' => 'በመጣጥáŽá‰½ ይዘት ለመáˆáˆáŒ...',
+);
+
+/** Aragonese (Aragonés)
+ * @author Juanpabl
+ */
+$messages['an'] = array(
+ 'vector' => "Milloras d'a interficie ta Vector",
+ 'vector-desc' => "Milloras en os elementos d'interficie d'usuario de l'aparencia Vector.",
+ 'vector-collapsiblenav-preference' => "Activar a opción de plegar os menús de navegación en l'aparencia Vector",
+ 'vector-collapsiblenav-more' => 'Más luengas',
+ 'vector-editwarning-warning' => "Si sale d'ista pachina perderá totz os cambios que haiga feito. Si tiene una cuenta d'usuario, puet eliminar ista alvertencia en a sección «Caixa d'edición» d'as suyas preferencies.",
+ 'vector-editwarning-preference' => "Alvertir-me quan salga d'una pachina d'edición sin alzar os cambios",
+ 'vector-simplesearch-search' => 'Mirar',
+ 'vector-simplesearch-containing' => 'que contién...',
+);
+
+/** Arabic (العربية)
+ * @author Aiman titi
+ * @author Meno25
+ * @author OsamaK
+ */
+$messages['ar'] = array(
+ 'vector' => 'تحسينات واجهة المستخدم Ù„Ùكتور',
+ 'vector-desc' => 'تحسينات ÙÙŠ عناصر واجهة المستخدم لواجهة Ùكتور.',
+ 'vector-collapsiblenav-preference' => 'مكّن طي العناصر ÙÙŠ قائمة التصÙØ­ ÙÙŠ واجهة Ùكتور',
+ 'vector-collapsiblenav-more' => 'لغات أخرى',
+ 'vector-editwarning-warning' => 'قد تتسبب مغادرة هذه الصÙحة بخسارتك لأي تغييرات قمت بها.
+يمكنك تعطيل هذا التحذير إذا كنت والجلًا ÙÙŠ قسم "التحرير" ÙÙŠ تÙضيلاتك.',
+ 'vector-editwarning-preference' => 'حذّرني عندما أغادر تحرير صÙحة ذات تغييرات غير محÙوظة',
+ 'vector-simplesearch-search' => 'ابحث',
+ 'vector-simplesearch-containing' => 'يحتوي...',
+ 'vector-noexperiments-preference' => 'استبعادي من إستخدام الميزة',
+);
+
+/** Aramaic (ÜܪܡÜÜ)
+ * @author Basharh
+ */
+$messages['arc'] = array(
+ 'vector-simplesearch-search' => 'ܒܨÜ',
+ 'vector-simplesearch-containing' => 'ܚܒܫ ܥܠ...',
+);
+
+/** Egyptian Spoken Arabic (مصرى)
+ * @author Dudi
+ * @author Meno25
+ */
+$messages['arz'] = array(
+ 'vector' => 'تحسينات واجهه المستخدم Ù„Ùكتور',
+ 'vector-desc' => 'تحسينات ÙÙ‰ عناصر واجهه المستخدم لواجهه Ùكتور.',
+ 'vector-collapsiblenav-preference' => 'خلّى الليستات بتاعة مينيو الاستكشا٠تبان مقÙوله ÙÙ‰ Vector skin',
+ 'vector-collapsiblenav-more' => 'لغات اكتر',
+ 'vector-editwarning-warning' => 'لو سيبت الصÙحه دى ممكن يخلّيك تضيّع اى تغييرات عملتها.
+لو انت مسجّل دخولك, ممكن تعطّل التحذير ده من الجزء بتاع "تعديل" ÙÙ‰ تÙضيلاتك.',
+ 'vector-editwarning-preference' => 'حذّرنى لما اسيب صÙحة تعديل Ùيها تغييرات مش متسييڤه',
+ 'vector-simplesearch-search' => 'تدوير',
+ 'vector-simplesearch-containing' => 'جوّاه...',
+);
+
+/** Azerbaijani (Azərbaycanca)
+ * @author PPerviz
+ */
+$messages['az'] = array(
+ 'vector-simplesearch-search' => 'Axtar',
+);
+
+/** Bashkir (БашҡортÑа)
+ * @author Assele
+ */
+$messages['ba'] = array(
+ 'vector' => '"Векторлы" күренешен Ñҡшыртыуҙар',
+ 'vector-desc' => '"Векторлы" күренешенең ҡулланыуÑÑ‹ интерфейÑында Ñҡшыртыуҙар.',
+ 'vector-collapsiblenav-preference' => '"Векторлы" күренешендә һул ÑÒ¡ менюла блоктарҙы төрөргә Ñ€Ó©Ñ…Ñәт итергә',
+ 'vector-collapsiblenav-more' => 'Күберәк телдәр',
+ 'vector-editwarning-warning' => 'ИкенÑе биткә күÑеү һеҙ индергән үҙгәрештәрҙең юғалыуына килтереүе мөмкин.
+Әгәр ÑиÑтемала танылыу үтһәгеҙ, көйләүҙәрегеҙ битенең "Мөхәррирләү" бүлегендә был киҫәтеүҙе һүндерә алаһығыҙ.',
+ 'vector-editwarning-preference' => 'Мөхәррирләү битенән үҙгәртеүҙәрҙе һаҡламайынÑа Ñыҡҡан ваҡытта мине киҫәтергә',
+ 'vector-simplesearch-search' => 'Эҙләү',
+ 'vector-simplesearch-containing' => 'ÑÑтәлегендә...',
+ 'vector-noexperiments-preference' => 'Һынау Ó©Ñөн мөмкинлектәр тәҡдим итмәҫкә',
+);
+
+/** Bavarian (Boarisch)
+ * @author Mucalexx
+ * @author ✓
+ */
+$messages['bar'] = array(
+ 'vector' => "Vabesserrungen fyr d' Vector-Benutzerowerflächen",
+ 'vector-desc' => 'Vabesserrungen an da Vektor-Benutzerowerflächen',
+ 'vector-collapsiblenav-preference' => 'Zåmmkloppm vo Elemente im Navigazionsmenü vo da Benutzerowerflächen Vector aktivirn',
+ 'vector-collapsiblenav-more' => 'Weiderne Sproochen',
+ 'vector-editwarning-warning' => "'s Valossen vo derer Seiten kå dodazua fyrn, daas d' Änderrungen valurn geengan.
+Ois ågmödter Benutzer kå's Åzoang vo derer Warnung im \"Beorweiten\"-Bereich vo de Eistellungen obgschoiden wern.",
+ 'vector-editwarning-preference' => ' A Warung geem, sofern a zur da Beorweitung geffnate Seiten valossen werd, de ned gspeicherde Änderrungen enthoit.',
+ 'vector-simplesearch-search' => 'Suach',
+ 'vector-simplesearch-containing' => 'Voitextsuach noch ...',
+ 'vector-noexperiments-preference' => 'Ned an Funkzions-Experimenten teilnemmer',
+);
+
+/** Belarusian (БеларуÑкаÑ)
+ * @author Maksim L.
+ */
+$messages['be'] = array(
+ 'vector' => 'ПалÑпшае інтÑрфÑÐ¹Ñ Ð´Ð»Ñ ÐºÐ°Ð¶ÑƒÑ…Ð° Vector',
+ 'vector-desc' => 'ПалÑпшае Ñлементы інтÑрфÑйÑу ўдзельніка Ð´Ð»Ñ ÐºÐ°Ð¶ÑƒÑ…Ð° Vector',
+ 'vector-collapsiblenav-preference' => 'Уключыць згортванне блокаў у навігацыйным меню Ð´Ð»Ñ ÐºÐ°Ð¶ÑƒÑ…Ð° Vector',
+ 'vector-collapsiblenav-more' => 'Болей моваў',
+ 'vector-editwarning-warning' => 'Выхад з гÑтай Ñтаронкі прывÑдзе да Ñтраты правак, ÑÐºÑ–Ñ Ð²Ñ‹ зрабілі.
+Калі Ð’Ñ‹ зарÑгіÑÑ‚Ñ€Ð°Ð²Ð°Ð½Ñ‹Ñ Ñž ÑÑ–ÑÑ‚Ñме, Ð’Ñ‹ можаце адключыць гÑта папÑÑ€Ñджанне Ñž закладцы "Праца" Вашых наÑтаўленнÑÑž.',
+ 'vector-editwarning-preference' => 'ПапÑÑ€Ñдзіць мÑне, калі Ñ Ð¿Ð°ÐºÑ–Ð´Ð°ÑŽ Ñтаронку з незахаванымі праўкамі',
+ 'vector-simplesearch-search' => 'ЗнайÑці',
+ 'vector-simplesearch-containing' => 'змÑшчае...',
+);
+
+/** Belarusian (TaraÅ¡kievica orthography) (‪БеларуÑÐºÐ°Ñ (тарашкевіца)‬)
+ * @author EugeneZelenko
+ * @author Jim-by
+ * @author Wizardist
+ * @author Zedlik
+ */
+$messages['be-tarask'] = array(
+ 'vector' => 'ПалÑпшÑньні інтÑрфÑйÑу Ð´Ð»Ñ Ð°Ñ„Ð°Ñ€Ð¼Ð»ÐµÐ½ÑŒÐ½Ñ Â«Ð’Ñктар»',
+ 'vector-desc' => 'ПалÑпшае ÑлемÑнты інтÑрфÑйÑу карыÑтальніка Ð´Ð»Ñ Ð°Ñ„Ð°Ñ€Ð¼Ð»ÐµÐ½ÑŒÐ½Ñ Â«Ð’Ñктар».',
+ 'vector-collapsiblenav-preference' => 'Дазволіць згортваньне блёкаў у навігацыйным мÑню Ð´Ð»Ñ Ð°Ñ„Ð°Ñ€Ð¼Ð»ÐµÐ½ÑŒÐ½Ñ Â«Ð’Ñктар»',
+ 'vector-collapsiblenav-more' => 'Болей моваў',
+ 'vector-editwarning-warning' => 'УÑе Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ñ‹Ñ Ð’Ð°Ð¼Ñ– зьмены могуць быць ÑтрачаныÑ, калі Ð’Ñ‹ пакінеце гÑтую Ñтаронку.
+Калі Ð’Ñ‹ ўвайшлі Ñž ÑÑ‹ÑÑ‚Ñму, Ð’Ñ‹ можаце адключыць гÑтае папÑÑ€Ñджаньне у ÑÑкцыі «РÑдагаваньне» Вашых наладаў.',
+ 'vector-editwarning-preference' => 'ПапÑÑ€Ñджваць мÑне, калі Ñ Ð±ÑƒÐ´Ñƒ пакідаць Ñтаронку Ñ€ÑÐ´Ð°Ð³Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð·ÑŒ незахаванымі зьменамі',
+ 'vector-simplesearch-search' => 'Пошук',
+ 'vector-simplesearch-containing' => 'утрымлівае...',
+ 'vector-noexperiments-preference' => 'Ðе прапаноўваць ÑкÑпÑрымÑÐ½Ñ‚Ð°Ð»ÑŒÐ½Ñ‹Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð°Ñьці',
+);
+
+/** Bulgarian (БългарÑки)
+ * @author DCLXVI
+ * @author Spiritia
+ * @author Turin
+ */
+$messages['bg'] = array(
+ 'vector' => 'ÐŸÐ¾Ð´Ð¾Ð±Ñ€ÐµÐ½Ð¸Ñ Ð½Ð° потребителÑÐºÐ¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð·Ð° облик Вектор',
+ 'vector-desc' => 'ПодобрÑва елементите от потребителÑÐºÐ¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð½Ð° облик Вектор.',
+ 'vector-collapsiblenav-preference' => 'Включване на Ñгъваемо/разгъваемо меню за Ð½Ð°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð² облика Vector',
+ 'vector-collapsiblenav-more' => 'Още езици',
+ 'vector-editwarning-warning' => 'Ðко излезете от тази Ñтраница, може да загубите вÑички незапазени промени, които Ñте направили.
+Ðко Ñте влезли в ÑиÑтемата, можете да изключите това предупреждение през меню "Редактиране" във вашите лични наÑтройки.',
+ 'vector-editwarning-preference' => 'Предупреждаване при опит за напуÑкане на Ñтраница, отворена в режим на редактиране, без да Ñа запазени промените',
+ 'vector-simplesearch-search' => 'ТърÑене',
+ 'vector-noexperiments-preference' => 'Ðе Ð¶ÐµÐ»Ð°Ñ Ð´Ð° учаÑтвам в бъдещи екÑперименти',
+);
+
+/** Bahasa Banjar (Bahasa Banjar)
+ * @author Ezagren
+ */
+$messages['bjn'] = array(
+ 'vector-collapsiblenav-more' => 'Labih banyak bahasa',
+ 'vector-editwarning-preference' => 'Ingatakan ulun pabila maninggalakan tungkaran pambabakan sabalum manyimpan parubahan',
+ 'vector-simplesearch-search' => 'Gagai',
+ 'vector-simplesearch-containing' => 'isian ...',
+);
+
+/** Bengali (বাংলা)
+ * @author Bellayet
+ * @author Wikitanvir
+ */
+$messages['bn'] = array(
+ 'vector' => 'ভেকà§à¦Ÿà¦°à§‡à¦° জনà§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸à§‡à¦° উনà§à¦¨à¦¤à¦¿ সাধন',
+ 'vector-desc' => 'ভেকà§à¦Ÿà¦° সà§à¦•à¦¿à¦¨à§‡à¦° ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸ উপাদানের উনà§à¦¨à¦¤à¦¿ সাধন',
+ 'vector-collapsiblenav-preference' => 'ভেকà§à¦Ÿà¦° সà§à¦•à¦¿à¦¨à§‡ ভাà¦à¦œà¦¯à§‹à¦—à§à¦¯ নেভিগেশন মেনৠসকà§à¦°à¦¿à¦¯à¦¼ করো',
+ 'vector-collapsiblenav-more' => 'আরও ভাষা',
+ 'vector-editwarning-warning' => 'à¦à¦‡ পাতাটি তà§à¦¯à¦¾à¦— করলে আপনার আপনার করা পরিবরà§à¦¤à¦¨à¦—à§à¦²à§‹ হারিয়ে যেতে পারে।
+আপনি যদি লগইন করা থাকেন, আপনি à¦à¦‡ সতরà§à¦•à§€à¦•à¦°à¦£ বারà§à¦¤à¦¾à¦Ÿà¦¿ আপনার পছনà§à¦¦à§‡à¦° "সমপাদনা" অনà§à¦šà§à¦›à§‡à¦¦ থেকে নিসà§à¦•à§à¦°à¦¿à¦¯à¦¼ করতে পারেন।',
+ 'vector-editwarning-preference' => 'অসংরকà§à¦·à¦¿à¦¤ পরিবরà§à¦¤à¦¨ সহ কোনো পাতা তà§à¦¯à¦¾à¦—ের সময় সাবধান করো',
+ 'vector-simplesearch-search' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
+ 'vector-simplesearch-containing' => 'যা আছে...',
+);
+
+/** Bishnupria Manipuri (ইমার ঠার/বিষà§à¦£à§à¦ªà§à¦°à¦¿à¦¯à¦¼à¦¾ মণিপà§à¦°à§€)
+ * @author Usingha
+ */
+$messages['bpy'] = array(
+ 'vector' => 'ভেকà§à¦Ÿà¦°à¦° কা আতাকà§à¦°à¦¾à¦° ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸à¦¹à¦¾à¦° উনà§à¦¨à¦¤à¦¿ করানিহান',
+ 'vector-desc' => 'ভেকà§à¦Ÿà¦° সà§à¦•à¦¿à¦¨à¦° ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸ মাথেলর উনà§à¦¨à¦¤à¦¿ করানি।',
+ 'vector-collapsiblenav-preference' => 'ভেকà§à¦Ÿà¦° সà§à¦•à¦¿à¦¨à¦¹à¦¾à¦¨à¦¾à¦° থিপকরানি à¦à¦•à¦°à¦¬ নেভিগেশন মেনৠথা কর',
+ 'vector-collapsiblenav-more' => 'আরাকউ ঠার',
+ 'vector-editwarning-warning' => 'পাতা à¦à¦¹à¦¾à¦¨ বেলিয়া গেলেগা তি সিলকরিসত অতা মাঙà§à¦‡à¦¤à§‡ পারে।
+তি লগইন করিসতগ ইলে, à¦à¦°à§‡ সিঙকরানির পৌ à¦à¦¹à¦¾à¦¨ তর "পতানি" থাকেতà§à¦¤ আরà§à¦® করানি পারর।',
+ 'vector-editwarning-preference' => 'পতানির সময় ইতৠনাকরিয়া বেলিয়া গেলেগা মরে সিঙকরেদিস',
+ 'vector-simplesearch-search' => 'বিসারা',
+ 'vector-simplesearch-containing' => 'আসেতা...',
+);
+
+/** Breton (Brezhoneg)
+ * @author Fulup
+ * @author Y-M D
+ */
+$messages['br'] = array(
+ 'vector' => 'Gwellaennoù IU evit Vector',
+ 'vector-desc' => 'Gwellaat a ra elfennoù eus ar gwiskadur Vector war an etrefas implijer.',
+ 'vector-collapsiblenav-preference' => 'Aotren al lañser merdeiñ pak-dispak a-gleiz gant an neuz Vector',
+ 'vector-collapsiblenav-more' => "Muioc'h a yezhoù",
+ 'vector-editwarning-warning' => "Mar kuitait ar bajenn-mañ e c'hallit koll ar c'hemmoù degaset ganeoc'h.
+Ma'z oc'h kevreet e c'hallit diweredekaat ar c'hemenn-diwall-mañ e rann \"Prenestr skridaozañ\" ho penndibaboù.",
+ 'vector-editwarning-preference' => 'Kas keloù din pa guitaan ur bajenn degaset kemmoù enni hep enrollañ',
+ 'vector-simplesearch-search' => 'Klask',
+ 'vector-simplesearch-containing' => 'ennañ...',
+ 'vector-noexperiments-preference' => "Lezit-me er-maez eus al labour amprouiñ an arc'hwelioù nevez",
+);
+
+/** Bosnian (Bosanski)
+ * @author CERminator
+ */
+$messages['bs'] = array(
+ 'vector' => 'UI poboljšanja za Vector',
+ 'vector-desc' => 'PoboljÅ¡ava elemente korisniÄkog interfejsa u koži Vector.',
+ 'vector-collapsiblenav-preference' => 'Omogući skrivanje stavki u navigacionom meniju u koži Vector',
+ 'vector-collapsiblenav-more' => 'Više jezika',
+ 'vector-editwarning-warning' => 'NapuÅ¡tanje ove stranice može dovesti do gubitka svih promjena koje ste naÄinili.
+Ako ste prijavljeni, možete iskljuÄiti ovo upozorenje u "VeliÄine tekstualnog polja" dijelu vaÅ¡ih opcija.',
+ 'vector-editwarning-preference' => 'Upozori me kada napustim stranicu za izmjene bez spašenih promjena',
+ 'vector-simplesearch-search' => 'Traži',
+ 'vector-simplesearch-containing' => 'sadrži...',
+ 'vector-noexperiments-preference' => 'IskljuÄi me iz funkcijskih probi',
+);
+
+/** Catalan (Català)
+ * @author Paucabot
+ * @author SMP
+ * @author Vriullop
+ */
+$messages['ca'] = array(
+ 'vector' => 'Millores de la interfície per a Vector',
+ 'vector-desc' => "Millores en els elements d'interfície d'usuari de l'aparença Vector.",
+ 'vector-collapsiblenav-preference' => "Activa l'opció de plegar els menús de navegació en l'aparença Vector",
+ 'vector-collapsiblenav-more' => 'Més llengües',
+ 'vector-editwarning-warning' => "Si sortiu d'aquesta pàgina perdreu tots els canvis que hàgiu fet.
+Si teniu un compte d'usuari, podeu eliminar aquest avís a la secció «Caixa d'edició» de les vostres preferències.",
+ 'vector-editwarning-preference' => "Avisa'm quan surti d'una pàgina d'edició amb canvis sense desar",
+ 'vector-simplesearch-search' => 'Cerca',
+ 'vector-simplesearch-containing' => 'que conté ...',
+ 'vector-noexperiments-preference' => 'Exclou-me dels experiments de funcionalitats',
+);
+
+/** Chechen (Ðохчийн)
+ * @author Sasan700
+ */
+$messages['ce'] = array(
+ 'vector-simplesearch-search' => 'Лаха',
+);
+
+/** Sorani (کوردی)
+ * @author Asoxor
+ * @author Marmzok
+ */
+$messages['ckb'] = array(
+ 'vector-collapsiblenav-preference' => 'ڕێگە بدە بە کرانەوەی بڕگەکانی پێرستی ڕێدۆزی لە بەرگی ڤێکتۆردا.',
+ 'vector-collapsiblenav-more' => 'زمانەکانی دیکە',
+ 'vector-editwarning-warning' => 'بەجێ‌هێشتنی ئەم لاپەڕەیە دەبێتە هۆی لە‌دەست چوونی هەموو ئەو گۆڕانکاریانەی کردووتە.
+ئەگەر لەژوورەوەی، دەتوانی ئەم ئاگادارییە لە بەشی "دەستکاریی" لە ھەڵبژاردەکانی، لەکاربخەی.',
+ 'vector-editwarning-preference' => 'ھۆشیارم بکەوە کاتێک لە پەڕەیەکی دەستکاری بە گۆڕانکاریی پاشەکەوت‌نەکراو دەردەچم',
+ 'vector-simplesearch-search' => 'گەڕان',
+ 'vector-simplesearch-containing' => 'بە لەبەرگرتنەوەی ...',
+);
+
+/** Crimean Turkish (Latin) (Qırımtatarca (Latin))
+ * @author Don Alessandro
+ */
+$messages['crh-latn'] = array(
+ 'vector-simplesearch-search' => 'Qıdır',
+ 'vector-simplesearch-containing' => 'içinde bu olğan...',
+);
+
+/** Crimean Turkish (Cyrillic) (Qırımtatarca (Cyrillic))
+ * @author Don Alessandro
+ */
+$messages['crh-cyrl'] = array(
+ 'vector-simplesearch-search' => 'Къыдыр',
+ 'vector-simplesearch-containing' => 'ичинде бу олгъан...',
+);
+
+/** Czech (ÄŒesky)
+ * @author Mormegil
+ */
+$messages['cs'] = array(
+ 'vector' => 'Vylepšení uživatelského rozhraní pro Vektor',
+ 'vector-desc' => 'Vylepšuje prvky uživatelského rozhraní vzhledu Vektor.',
+ 'vector-collapsiblenav-preference' => 'Povolit sbalování položek v navigaÄním menu ve vzhledu Vektor',
+ 'vector-collapsiblenav-more' => 'Další jazyky',
+ 'vector-editwarning-warning' => 'Opuštěním této stránky se mohou veškeré provedené změny ztratit.
+Pokud jste přihlášeni, můžete si toto varování vypnout na záložce „Editace“ v uživatelském nastavení.',
+ 'vector-editwarning-preference' => 'Upozornit, když budu opouštět editaci bez uložení změn',
+ 'vector-simplesearch-search' => 'Hledat',
+ 'vector-simplesearch-containing' => 'obsahující…',
+ 'vector-noexperiments-preference' => 'NeúÄastnit se experimentů s novými funkcemi',
+);
+
+/** Kashubian (Kaszëbsczi)
+ * @author Kuvaly
+ */
+$messages['csb'] = array(
+ 'vector-simplesearch-search' => 'Szëkba',
+);
+
+/** Church Slavic (СловѣÌньÑкъ / ⰔⰎⰑⰂⰡâ°â° â°”â°â°Ÿ)
+ * @author ОйЛ
+ */
+$messages['cu'] = array(
+ 'vector-collapsiblenav-more' => 'дроуꙃи Ñ©ê™ê™‘ци',
+ 'vector-simplesearch-search' => 'иÑканиѥ',
+ 'vector-simplesearch-containing' => 'ÑÑ¥ дрьжащи···',
+);
+
+/** Chuvash (Чӑвашла)
+ * @author FLAGELLVM DEI
+ */
+$messages['cv'] = array(
+ 'vector-simplesearch-search' => 'Шырав',
+);
+
+/** Welsh (Cymraeg)
+ * @author Lloffiwr
+ */
+$messages['cy'] = array(
+ 'vector' => "Gwelliannau i'r rhyngwyneb ar gyfer Vector",
+ 'vector-desc' => 'Yn gwella ar y rhyngwyneb yn y wedd Vector.',
+ 'vector-collapsiblenav-preference' => "Galluogi crebachu'r ddewislen lywio yn y wedd Vector",
+ 'vector-collapsiblenav-more' => 'Rhagor o ieithoedd',
+ 'vector-editwarning-warning' => 'Os y gadewch y dudalen hon mae\'n bosib y collwch eich newidiadau iddi.
+Gallwch ddiddymu\'r rhybudd hwn yn yr adran "Golygu" yn eich dewisiadau.',
+ 'vector-editwarning-preference' => "Tynnwch fy sylw pan wyf ar fin gadael tudalen olygu heb roi'r newidiadau ar gadw",
+ 'vector-simplesearch-search' => 'Chwilio',
+ 'vector-simplesearch-containing' => 'yn cynnwys...',
+ 'vector-noexperiments-preference' => "Peidio â'm cynnwys mewn arbrofion ar y nodweddion",
+);
+
+/** Danish (Dansk)
+ * @author Froztbyte
+ * @author Peter Alberti
+ * @author Sarrus
+ * @author Sir48
+ */
+$messages['da'] = array(
+ 'vector' => 'Forbedringer af brugerinterfacet til Vector',
+ 'vector-desc' => 'Forbedrer dele af brugerinterfacet til Vector-skinnet',
+ 'vector-collapsiblenav-preference' => 'Aktiver sammenklapning i navigationsmenuen i Vector-skinnet',
+ 'vector-collapsiblenav-more' => 'Flere sprog',
+ 'vector-editwarning-warning' => 'Hvis du forlader siden nu, risikerer du at miste alle ændringer som du har lavet.
+Denne advarsel kan slås fra under Redigering i dine indstillinger.',
+ 'vector-editwarning-preference' => 'Advar mig hvis jeg forlader en redigeringsside med ikke gemte ændringer.',
+ 'vector-simplesearch-search' => 'Søg',
+ 'vector-simplesearch-containing' => 'indeholder...',
+ 'vector-noexperiments-preference' => 'Udeluk mig fra funktionseksperimenter',
+);
+
+/** German (Deutsch)
+ * @author Church of emacs
+ * @author Kghbln
+ * @author SVG
+ * @author The Evil IP address
+ * @author Tischbeinahe
+ * @author ✓
+ */
+$messages['de'] = array(
+ 'vector' => 'Verbesserungen für die Vector-Benutzeroberfläche',
+ 'vector-desc' => 'Stellt Verbesserungen für die Benutzeroberfläche „Vector“ zur Verfügung',
+ 'vector-collapsiblenav-preference' => 'Zusammenklappen von Elementen im Navigationsmenü der Benutzeroberfläche Vector aktivieren',
+ 'vector-collapsiblenav-more' => 'Weitere Sprachen',
+ 'vector-editwarning-warning' => 'Das Verlassen dieser Seite kann dazu führen, dass die Änderungen verloren gehen.
+Als angemeldeter Benutzer kann das Anzeigen dieser Warnung im „Bearbeiten“-Bereich der Einstellungen abgeschaltet werden.',
+ 'vector-editwarning-preference' => 'Warnen, sofern eine zur Bearbeitung geöffnete Seite verlassen wird, die nicht gespeicherte Änderungen enthält',
+ 'vector-simplesearch-search' => 'Suche',
+ 'vector-simplesearch-containing' => 'Volltextsuche nach …',
+ 'vector-noexperiments-preference' => 'Nicht an Funktionsexperimenten teilnehmen',
+);
+
+/** German (formal address) (‪Deutsch (Sie-Form)‬) */
+$messages['de-formal'] = array(
+ 'vector-editwarning-warning' => 'Das Verlassen dieser Seite kann dazu führen, dass Ihre Änderungen verloren gehen.
+Wenn Sie angemeldet sind, können Sie das Anzeigen dieser Warnung im „Bearbeiten“-Bereich Ihrer Einstellungen abschalten.',
+);
+
+/** Zazaki (Zazaki)
+ * @author Mirzali
+ * @author Xoser
+ */
+$messages['diq'] = array(
+ 'vector' => 'Ser vectori UI hacetanê hewli',
+ 'vector-desc' => 'Ena ser Vector skin, interface hewl keno.',
+ 'vector-collapsiblenav-preference' => 'Eyarê qic kerdisê ke hecatan menuyê navigasyon ke Vector de inan a bike',
+ 'vector-collapsiblenav-more' => 'Ziwananê binan',
+ 'vector-editwarning-warning' => 'ihtimal o ke wexta şıma peli ra bıveci, vurnayiş o ke şıma kerdo, hewna şiyêro .
+eke şıma kewtê hesabê xo, no hişyari tercihanê xo ra şıma eşkeni "Ho vurnayeno" bıvındarnî .',
+ 'vector-editwarning-preference' => 'wexta ke ez pelo nêqeydbiyaye ra veciyaya mı hişyar bıker',
+ 'vector-simplesearch-search' => 'Cıgeyre',
+ 'vector-simplesearch-containing' => 'tedeestey...',
+);
+
+/** Lower Sorbian (Dolnoserbski)
+ * @author Michawiki
+ */
+$messages['dsb'] = array(
+ 'vector' => 'Pólěpšenja wužywarskego pówjercha za Vector',
+ 'vector-desc' => 'Pólěpša elementy wužywarskego pówjercha za suknju Vector.',
+ 'vector-collapsiblenav-preference' => 'Fałdujobny lěwy nawgiaciski meni w sukni Vector zmóžniś',
+ 'vector-collapsiblenav-more' => 'Dalšne rěcy',
+ 'vector-editwarning-warning' => 'Gaž toś ten bok se spušća, mógu se změny zgubiś, kótarež sy pśewjadł. Jolic sy pśizjawjeny, móžoš toś to warnowanje we wótrězku Wobźěłaś swójich nastajenjow znjemóžniś.',
+ 'vector-editwarning-preference' => 'Warnowaś, gaž bok spušća se z njeskłaźonymi změnami',
+ 'vector-simplesearch-search' => 'PytaÅ›',
+ 'vector-simplesearch-containing' => 'wopśimujo...',
+);
+
+/** Greek (Ελληνικά)
+ * @author Dead3y3
+ * @author Geraki
+ * @author Glavkos
+ * @author ΑπεÏγός
+ */
+$messages['el'] = array(
+ 'vector' => 'βελτιώσεις στο UI για το Vector',
+ 'vector-desc' => 'ΠαÏέχει βελτίωση στα στοιχεία διεπαφής χÏήστη του skin Vector.',
+ 'vector-collapsiblenav-preference' => 'ΕνεÏγοποίηση πτυσσόμενων ενοτήτων στο Î¼ÎµÎ½Î¿Ï Ï€Î»Î¿Î®Î³Î·ÏƒÎ·Ï‚ με το θέμα Vector',
+ 'vector-collapsiblenav-more' => 'ΠεÏισσότεÏες γλώσσες',
+ 'vector-editwarning-warning' => 'Αφήνοντας αυτή τη σελίδα μποÏεί να σας κάνει να χάσετε κάποιες αλλαγές που έχετε κάνει.
+Αν έχετε συνδεθεί, μποÏείτε να απενεÏγοποιήσετε αυτή την Ï€Ïοειδοποίηση στο τμήμα "ΕπεξεÏγασία" των Ï€Ïοτιμήσεών σας.',
+ 'vector-editwarning-preference' => 'ΠÏοειδοποίηση όταν εγκαταλείπω μία σελίδα επεξεÏγασίας χωÏίς να έχω Ï€Ïώτα αποθηκεÏσει τις αλλαγές',
+ 'vector-simplesearch-search' => 'Αναζήτηση',
+ 'vector-simplesearch-containing' => 'πεÏιέχει...',
+ 'vector-noexperiments-preference' => 'ΕξαιÏέστε με από την λειτουÏγία πειÏαμάτων',
+);
+
+/** Esperanto (Esperanto)
+ * @author AVRS
+ * @author Maximillion Pegasus
+ * @author Yekrats
+ */
+$messages['eo'] = array(
+ 'vector' => 'Plibonigado de grafika interfaco por Vector',
+ 'vector-desc' => 'Plibonigas la elementojn de la uzula interfaco de la Vector-etoso.',
+ 'vector-collapsiblenav-preference' => 'Åœalti kaÅebladon de aĵoj en la dekstra navigmenuo kun etoso Vector',
+ 'vector-collapsiblenav-more' => 'Pli lingvoj',
+ 'vector-editwarning-warning' => 'Forlasante ĉi tiun paÄon kaÅ­zos al vi perdi iun ajn ÅanÄojn kiujn vi faris.
+Se vi ensalutas, vi povas malÅalti ĉi tiun averton en la sekcio "Grandeco de redakta tekstujo" de viaj preferoj.',
+ 'vector-editwarning-preference' => 'Avertu min kiam mi forlasas redaktan paÄon kun nekonservitaj ÅanÄoj',
+ 'vector-simplesearch-search' => 'Serĉi',
+ 'vector-simplesearch-containing' => 'enhavas...',
+ 'vector-noexperiments-preference' => 'Ekskluzivu min de estontecaj testoj',
+);
+
+/** Spanish (Español)
+ * @author Crazymadlover
+ * @author Drini
+ * @author Fitoschido
+ * @author Locos epraix
+ * @author Translationista
+ */
+$messages['es'] = array(
+ 'vector' => 'Mejoras de interfaz de usuario para Vector',
+ 'vector-desc' => 'Mejora los elementos de la interfaz de usuario del skin Vector.',
+ 'vector-collapsiblenav-preference' => 'Activar el menú de navegación izquierda plegable en la piel Vector',
+ 'vector-collapsiblenav-more' => 'Más idiomas',
+ 'vector-editwarning-warning' => 'Dejar esta página le causará la pérdida de cualquier cambio que haya hecho.
+Si está "logueado", puede deshabilitar esta advertencia en la sección "Edición" de sus preferencias.',
+ 'vector-editwarning-preference' => 'Advertirme cuando abandone una página editada con cambios sin grabar',
+ 'vector-simplesearch-search' => 'Búsqueda',
+ 'vector-simplesearch-containing' => 'conteniendo...',
+ 'vector-noexperiments-preference' => 'Excluirme de características experimentales',
+);
+
+/** Estonian (Eesti)
+ * @author Pikne
+ */
+$messages['et'] = array(
+ 'vector-collapsiblenav-preference' => 'Luba Vektori-kujundusega navigeerimismenüü üksusi peita',
+ 'vector-editwarning-warning' => 'Sellelt leheküljelt lahkumise tõttu võivad tehtud muudatused kaotsi minna.
+Kui oled sisse loginud, saad selle hoiatuse eelistuste alaosas "Toimetamine" keelata.',
+ 'vector-editwarning-preference' => 'Hoiata mind, kui lahkun redigeerimisleheküljelt muudatusi salvestamata',
+ 'vector-simplesearch-search' => 'Otsi',
+ 'vector-simplesearch-containing' => 'sisalduv...',
+ 'vector-noexperiments-preference' => 'Jäta mind funktsioonide katsetamisest kõrvale',
+);
+
+/** Basque (Euskara)
+ * @author An13sa
+ */
+$messages['eu'] = array(
+ 'vector' => 'EI hobekuntzak Vector-entzat',
+ 'vector-desc' => 'Vector skin-eko lankidearen interfazeko elementuak hobetzen ditu.',
+ 'vector-collapsiblenav-preference' => 'Vector skin-ean ezkerreko nabigazio menua irekigarri bihurtzen du',
+ 'vector-collapsiblenav-more' => 'Hizkuntza gehiago',
+ 'vector-editwarning-warning' => 'Orrialde honetatik irteten bazara, egindako aldaketak galdu egingo dira.
+Saioa hasi baduzu, mezu hau kendu dezakezu zure hobespenen orrialdeko "Aldatzen" atalean.',
+ 'vector-editwarning-preference' => 'Abisa nazazu gorde gabeko aldaketak eginez orrialde bat uzten dudanean',
+ 'vector-simplesearch-search' => 'Bilatu',
+ 'vector-simplesearch-containing' => 'edukian...',
+);
+
+/** Persian (Ùارسی)
+ * @author Ebraminio
+ * @author Huji
+ * @author Ladsgroup
+ * @author Sahim
+ */
+$messages['fa'] = array(
+ 'vector' => 'بهبودهای رابط کاربر برای پوستهٔ برداری',
+ 'vector-desc' => 'بهبود در عناصر رابط کاربری از طریق پوسته وکتور',
+ 'vector-collapsiblenav-preference' => 'Ùعال‌کردن منوی تاشوی ناوبری در پوسته وکتور',
+ 'vector-collapsiblenav-more' => 'زبان‌های بیشتر',
+ 'vector-editwarning-warning' => 'خروج از این صÙحه ممکن است باعث از دست رÙتن هرچه نوشته‌اید شود.
+اگر شما با نام کاربری وارد شده‌اید می‌توانید این هشدار را در بخش «در حال ویرایش» ترجیحاتتان بیابید.',
+ 'vector-editwarning-preference' => 'زمان خروج از صÙحهٔ ویرایش در صورت داشتن ویرایش‌های‌ ذخیره‌نشده به من هشدار بده',
+ 'vector-simplesearch-search' => 'جستجو',
+ 'vector-simplesearch-containing' => 'صÙحه‌های دربردارنده...',
+ 'vector-noexperiments-preference' => 'من را از ویژگی‌های آزمایشی مستثنی کن',
+);
+
+/** Finnish (Suomi)
+ * @author Crt
+ * @author Nike
+ * @author Str4nd
+ */
+$messages['fi'] = array(
+ 'vector' => 'Käyttöliittymän parannukset Vectorille',
+ 'vector-desc' => 'Parantaa käyttöliittymän osia Vector-ulkoasusta.',
+ 'vector-collapsiblenav-preference' => 'Ota käyttöön sivupalkin kohteiden piilottaminen Vector-ulkoasussa',
+ 'vector-collapsiblenav-more' => 'Muilla kielillä',
+ 'vector-editwarning-warning' => 'Tältä sivulta poistuminen saattaa aiheuttaa kaikkien tekemiesi muutosten katoamisen.
+Jos olet kirjautuneena sisään, voit poistaa tämän varoituksen käytöstä asetuksissa â€Muokkausâ€-osiossa.',
+ 'vector-editwarning-preference' => 'Varoita minua, kun poistun muokkaussivulta tallentamatta muutoksia',
+ 'vector-simplesearch-search' => 'Etsi',
+ 'vector-simplesearch-containing' => 'sisältää...',
+);
+
+/** French (Français)
+ * @author IAlex
+ * @author Jean-Frédéric
+ * @author PieRRoMaN
+ * @author Sherbrooke
+ * @author Urhixidur
+ */
+$messages['fr'] = array(
+ 'vector' => 'Améliorations IU pour Vector',
+ 'vector-desc' => 'Améliorations des éléments de l’interface utilisateur de l’habillage Vector.',
+ 'vector-collapsiblenav-preference' => "Activer le menu de navigation à gauche repliable avec l'habillage vector",
+ 'vector-collapsiblenav-more' => 'Plus de langues',
+ 'vector-editwarning-warning' => 'Quitter cette page vous fera perdre toutes les modifications que vous avez faites.
+Si vous êtes connecté avec votre compte, vous pouvez retirer cet avertissement dans la section « Fenêtre de modification » de vos préférences.',
+ 'vector-editwarning-preference' => 'M’avertir quand je quitte une page de modification sans publier les changements',
+ 'vector-simplesearch-search' => 'Rechercher',
+ 'vector-simplesearch-containing' => 'contenant...',
+ 'vector-noexperiments-preference' => "M'exclure des expériences de nouvelles fonctionnalités",
+);
+
+/** Franco-Provençal (Arpetan)
+ * @author ChrisPtDe
+ */
+$messages['frp'] = array(
+ 'vector' => 'Mèlyoracions EU por « Vèctor »',
+ 'vector-desc' => 'Mèlyoracions des èlèments de l’entèrface utilisator de l’habelyâjo « Vèctor ».',
+ 'vector-collapsiblenav-preference' => 'Activar lo menu de navigacion repleyâblo avouéc l’habelyâjo « Vèctor »',
+ 'vector-collapsiblenav-more' => 'Més de lengoues',
+ 'vector-editwarning-warning' => 'Quitar ceta pâge vos farat pèrdre tôs los changements que vos éd fêts.
+Se vos éte branchiê, vos pouede enlevar ceti avèrtissement dens la sèccion « Fenétra d’èdicion » de voutres prèferences.',
+ 'vector-editwarning-preference' => 'M’avèrtir quand quito una pâge de changement sen sôvar los changements',
+ 'vector-simplesearch-search' => 'Rechèrchiér',
+ 'vector-simplesearch-containing' => 'que contint...',
+);
+
+/** Friulian (Furlan)
+ * @author Klenje
+ */
+$messages['fur'] = array(
+ 'vector-collapsiblenav-more' => 'Altris lenghis',
+ 'vector-editwarning-preference' => 'Visimi cuant che o stoi par lassâ une pagjine dulà che a son cambiaments no salvâts',
+ 'vector-simplesearch-search' => 'Ricercje',
+ 'vector-simplesearch-containing' => 'che al à dentri...',
+);
+
+/** Traditional Gan script (‪贛語(ç¹é«”)‬)
+ * @author Symane
+ */
+$messages['gan-hant'] = array(
+ 'vector-simplesearch-search' => 'å°‹å–',
+);
+
+/** Scottish Gaelic (Gàidhlig)
+ * @author Akerbeltz
+ */
+$messages['gd'] = array(
+ 'vector' => 'Leasachaidhean an UI airson Vector',
+ 'vector-desc' => 'Cuiridh seo piseach air eileamaidean eadar-aghaidh nan cleachdaichean san chraiceann Vector.',
+ 'vector-collapsiblenav-preference' => 'Cuir an comas dùmhlachadh nan rudan san chlàr-taice seòlaidh san chraiceann Vector',
+ 'vector-collapsiblenav-more' => 'Barrachd chànan',
+ 'vector-editwarning-warning' => 'Ma dh\'fhàgas tu an duilleag seo, faodaidh gun caill thu mùthadh sam bith a rinn thu.
+Ma tha thu air logadh a-steach, \'s urrainn dhut an rabhadh seo a chur dheth san roinn "Deasachadh" sna roghainnean agad.',
+ 'vector-editwarning-preference' => 'Thoir rabhadh dhomh ma bhios mi an impis duilleag deasachaidh fhàgail mus do shàbhail mi na mùthaidhean agam',
+ 'vector-simplesearch-search' => 'Lorg',
+ 'vector-simplesearch-containing' => 'anns a bheil...',
+);
+
+/** Galician (Galego)
+ * @author Toliño
+ */
+$messages['gl'] = array(
+ 'vector' => 'Melloras na interface de usuario para a aparencia Vector',
+ 'vector-desc' => 'Mellora os elementos da interface de usuario da aparencia Vector.',
+ 'vector-collapsiblenav-preference' => 'Activar o menú de navegación despregable á esquerda na aparencia vector',
+ 'vector-collapsiblenav-more' => 'Máis linguas',
+ 'vector-editwarning-warning' => 'Deixar esta páxina pode causar a perda de calquera cambio feito.
+Se accedeu ao sistema, pode desactivar esta mensaxe de advertencia na sección "Edición" das súas preferencias.',
+ 'vector-editwarning-preference' => 'Avisádeme cando deixe unha páxina de edición cos cambios sen gardar',
+ 'vector-simplesearch-search' => 'Procurar',
+ 'vector-simplesearch-containing' => 'que conteña...',
+ 'vector-noexperiments-preference' => 'Excluídeme das novas características',
+);
+
+/** Ancient Greek (ἈÏχαία ἑλληνικὴ) */
+$messages['grc'] = array(
+ 'vector-simplesearch-search' => 'Ζητεῖν',
+ 'vector-simplesearch-containing' => 'πεÏιέχον...',
+);
+
+/** Swiss German (Alemannisch)
+ * @author Als-Holder
+ */
+$messages['gsw'] = array(
+ 'vector' => 'BI-Verbesserige fir Vektor',
+ 'vector-desc' => 'Verbesserige an dr Elemänt vu dr Benutzeroberflechi bim Vector-skin',
+ 'vector-collapsiblenav-preference' => 'Yyklappbar Navgationsmenü yyschalte bi dr Verwändig vu Vector',
+ 'vector-collapsiblenav-more' => 'Meh Sproche',
+ 'vector-editwarning-warning' => 'Wänn Du die Syte verlosch, cha s syy, ass Du alli Bearbeitige verliersch, wu Du do dra gmacht hesch.
+Wänn Du aagmäldet bisch, chasch s Anzeige vu däre Warnig im „Tekscht-Ygab“-Beryych vu Dyyne Yystelligen abstelle.',
+ 'vector-editwarning-preference' => 'Warn mi, wänn I ne Syte verloss mit Bearbeitige, wu nonig gspycheret sin',
+ 'vector-simplesearch-search' => 'Suechi',
+ 'vector-simplesearch-containing' => 'din het s …',
+ 'vector-noexperiments-preference' => 'Mi uusschließe vu dr Dailnahm Feature-Experimänt',
+);
+
+/** Manx (Gaelg)
+ * @author Shimmin Beg
+ */
+$messages['gv'] = array(
+ 'vector-collapsiblenav-more' => 'Tooilley çhengaghyn',
+ 'vector-editwarning-warning' => "My faagys oo y duillag, hed caghlaaghyn erbee er coayl, foddee.
+My t'ou uss loggalt stiagh, foddee oo lhiettal y raaue shoh 'sy tosheeaghtyn ayd, 'sy rheynn \"Reaghey\".",
+ 'vector-editwarning-preference' => 'Cur raaue dou my ta mee faagail duillag reaghey gyn sauail yn obbyr jeant aym',
+ 'vector-simplesearch-search' => 'Ronsaghey',
+ 'vector-simplesearch-containing' => 'goaill stiagh...',
+);
+
+/** Hebrew (עברית)
+ * @author Amire80
+ * @author Rotemliss
+ * @author YaronSh
+ * @author Yonidebest
+ */
+$messages['he'] = array(
+ 'vector' => 'שיפורי מנשק משתמש עבור וקטור',
+ 'vector-desc' => 'משפר ×ת פריטי מנשק המשתמש של ערכת התצוגה וקטור.',
+ 'vector-collapsiblenav-preference' => 'הפעלת קיפול ×¤×¨×™×˜×™× ×‘×ª×¤×¨×™×˜ הניווט בעיצוב וקטור',
+ 'vector-collapsiblenav-more' => 'דף ×–×” בשפות ×חרות',
+ 'vector-editwarning-warning' => 'עזיבת דף ×–×” עשויה ×œ×’×¨×•× ×œ×ובדן כל ×”×©×™× ×•×™×™× ×©×‘×™×¦×¢×ª×.
+×× ××ª× ×ž×—×•×‘×¨×™× ×œ×—×©×‘×•×Ÿ, תוכלו לבטל ×זהרה זו בחלק "עריכה" שבהעדפות שלכ×.',
+ 'vector-editwarning-preference' => 'הצגת ×זהרה ×× ×× ×™ עומד לעזוב דף עריכה ×¢× ×©×™× ×•×™×™× ×©×˜×¨× × ×©×ž×¨×•',
+ 'vector-simplesearch-search' => 'חיפוש',
+ 'vector-simplesearch-containing' => 'כולל...',
+ 'vector-noexperiments-preference' => '×ל תכללו ×ותי ×‘× ×™×¡×•×™×™× ×‘×¢×ª×™×“',
+);
+
+/** Croatian (Hrvatski)
+ * @author Anton008
+ * @author Excaliboor
+ * @author SpeedyGonsales
+ */
+$messages['hr'] = array(
+ 'vector' => 'PoboljÅ¡anja suÄelja stila Vektor',
+ 'vector-desc' => 'PoboljÅ¡ava elemente korisniÄkog suÄelja stila Vector.',
+ 'vector-collapsiblenav-preference' => 'Omogući sklopivi lijevi navigacijski izbornik za Vektor stil',
+ 'vector-collapsiblenav-more' => 'Više jezika',
+ 'vector-editwarning-warning' => 'Napuštanje ove stranice može uzrokovati gubitak svake izmjene koju ste napravili.
+Možete onemogućiti ovo upozorenje u odjeljku "Širina okvira za uređivanje" Vaših postavki.',
+ 'vector-editwarning-preference' => 'Upozori me kad napuštam stranicu za uređivanje bez spremanja izmjena',
+ 'vector-simplesearch-search' => 'Traži',
+ 'vector-simplesearch-containing' => 'sadrži....',
+ 'vector-noexperiments-preference' => 'IskljuÄi me iz daljnjih eksperimentiranja',
+);
+
+/** Upper Sorbian (Hornjoserbsce)
+ * @author Michawiki
+ */
+$messages['hsb'] = array(
+ 'vector' => 'Polěpšenja wužiwarskeho powjercha za Vector',
+ 'vector-desc' => 'Polěpša elementy wužiwarskeho powjercha šata Vector',
+ 'vector-collapsiblenav-preference' => 'Pokazowanje zapiskow w nawigaciskim meniju w šaće Vector zmóžnić',
+ 'vector-collapsiblenav-more' => 'DalÅ¡e rÄ›Äe',
+ 'vector-editwarning-warning' => 'Hdyž so strona wopušća, móžeja so změny zhubić, kotrež sy přewjedł. Jeli sy přizjewjeny, móžeš tute warnowanje we wotrězku Wobdźěłowanje swojich nastajenjow znjemóžnić.',
+ 'vector-editwarning-preference' => 'Warnować, hdyž so wobdźěłowanska strona z njeskładowanymi změnami wopušća',
+ 'vector-simplesearch-search' => 'Pytać',
+ 'vector-simplesearch-containing' => 'wobsahuje...',
+ 'vector-noexperiments-preference' => 'Mje z funkciskich eksperimentow wuzamknyć',
+);
+
+/** Hungarian (Magyar)
+ * @author Dani
+ * @author Hunyadym
+ * @author Tgr
+ */
+$messages['hu'] = array(
+ 'vector' => 'Fejlesztések a Vector felhasználói felületén',
+ 'vector-desc' => 'Fejlesztések a Vector felület felhasználói felületének elemein.',
+ 'vector-collapsiblenav-preference' => 'Összecsukható navigációs menü engedélyezése a Vector felületen',
+ 'vector-collapsiblenav-more' => 'Más nyelveken',
+ 'vector-editwarning-warning' => 'A lap elhagyásával az összes itt végzett változtatás elveszhet.
+Ha be vagy jelentkezve letilthatod ezt a figyelmeztetést a beállításaid „Szerkesztés†szakaszában.',
+ 'vector-editwarning-preference' => 'Figyelmeztessen, ha szerkesztéskor a módosítások mentése nélkül akarom elhagyni a lapot',
+ 'vector-simplesearch-search' => 'Keresés',
+ 'vector-simplesearch-containing' => 'tartalmazza…',
+ 'vector-noexperiments-preference' => 'Nem akarok kísérleti funkciókat használni',
+);
+
+/** Armenian (Õ€Õ¡ÕµÕ¥Ö€Õ¥Õ¶)
+ * @author Xelgen
+ */
+$messages['hy'] = array(
+ 'vector-editwarning-warning' => 'Ô±ÕµÕ½ Õ§Õ»Õ¨ Õ¬Ö„Õ¥Õ¬Õ¸Õ¾ Õ¤Õ¸Ö‚Ö„ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¯Õ¸Ö€ÖÕ¶Õ¥Õ¬ Õ±Õ¥Ö€ Õ¯Õ¡Õ¿Õ¡Ö€Õ¡Õ® ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨Ö‰
+ÔµÕ©Õ¥ Õ¤Õ¸Ö‚Ö„ Õ£Ö€Õ¡Õ¶ÖÕ¾Õ¡Õ® Õ¥Ö„ Õ°Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£Õ¸Ö‚Õ´, Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¡Õ¶Õ»Õ¡Õ¿Õ¥Õ¬ Õ¡ÕµÕ½ Õ¶Õ¡Õ­Õ¡Õ¦Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´Õ¨ Õ±Õ¥Ö€ Õ¶Õ¡Õ­Õ¨Õ¶Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« «Խմբագրում» Õ¢Õ¡ÕªÕ¶Õ¸Ö‚Õ´Ö‰',
+ 'vector-editwarning-preference' => 'Ô¶Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¶Õ¥Õ¬ Õ«Õ¶Õ±, Õ¥Ö€Õ¢ Õ¥Õ½ Õ¬Ö„Õ¸Ö‚Õ´ Õ¥Õ´ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ´Õ¡Õ¶ Õ§Õ»Õ¨ Õ¡Õ¼Õ¡Õ¶Ö Õ¯Õ¡Õ¿Õ¡Ö€Õ¡Õ® ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ°Õ«Õ·Õ¥Õ¬Õ¸Ö‚Ö‰',
+ 'vector-simplesearch-search' => 'ÕˆÖ€Õ¸Õ¶Õ¥Õ¬',
+);
+
+/** Interlingua (Interlingua)
+ * @author McDutchie
+ */
+$messages['ia'] = array(
+ 'vector' => 'Meliorationes del interfacie de usator pro Vector',
+ 'vector-desc' => 'Meliora le elementos del interfacie de usator del apparentia Vector.',
+ 'vector-collapsiblenav-preference' => 'Render plicabile le elementos in le menu de navigation in le apparentia Vector',
+ 'vector-collapsiblenav-more' => 'Plus linguas',
+ 'vector-editwarning-warning' => 'Quitar iste pagina pote causar le perdita de omne modificationes que tu ha facite.
+Si tu ha aperite un session, tu pote disactivar iste aviso in le section "Modification" de tu preferentias.',
+ 'vector-editwarning-preference' => 'Advertir me quando io quita un pagina de modification sin publicar le cambiamentos',
+ 'vector-simplesearch-search' => 'Cercar',
+ 'vector-simplesearch-containing' => 'continente...',
+ 'vector-noexperiments-preference' => 'Excluder me de functionalitate experimental',
+);
+
+/** Indonesian (Bahasa Indonesia)
+ * @author Farras
+ * @author Irwangatot
+ * @author IvanLanin
+ * @author Kenrick95
+ */
+$messages['id'] = array(
+ 'vector' => 'Meningkatkan UI untuk Vector',
+ 'vector-desc' => 'Meningkatkan elemen pada antarmuka penguna dari kulit Vector.',
+ 'vector-collapsiblenav-preference' => 'Aktifkan fungsi menu navigasi kiri yang dapat ditampilkan pada kulit Vektor',
+ 'vector-collapsiblenav-more' => 'Lebih banyak bahasa',
+ 'vector-editwarning-warning' => 'Meninggalkan halaman ini dapat menyebabkan semua perubahan yang belum tersimpan hilang.
+Jika Anda telah masuk log, Anda dapat mematikan peringatan ini lewat "Penyuntingan" pada halaman preferensi Anda.',
+ 'vector-editwarning-preference' => 'Ingatkan saya bila meninggalkan halaman penyuntingan sebelum menyimpan perubahan',
+ 'vector-simplesearch-search' => 'Cari',
+ 'vector-simplesearch-containing' => 'isian ...',
+ 'vector-noexperiments-preference' => 'Kecualikan saya dari percobaan fitur',
+);
+
+/** Igbo (Igbo)
+ * @author Ukabia
+ */
+$messages['ig'] = array(
+ 'vector-simplesearch-search' => 'Chöwá',
+);
+
+/** Ido (Ido)
+ * @author Malafaya
+ */
+$messages['io'] = array(
+ 'vector-collapsiblenav-more' => 'Plusa lingui',
+ 'vector-simplesearch-search' => 'Serchez',
+ 'vector-simplesearch-containing' => 'quan kontenas...',
+);
+
+/** Icelandic (Ãslenska)
+ * @author Krun
+ * @author Ævar Arnfjörð Bjarmason
+ */
+$messages['is'] = array(
+ 'vector-collapsiblenav-more' => 'Fleiri tungumál',
+ 'vector-simplesearch-search' => 'Leita',
+ 'vector-simplesearch-containing' => 'sem innihalda ...',
+);
+
+/** Italian (Italiano)
+ * @author Beta16
+ * @author Una giornata uggiosa '94
+ */
+$messages['it'] = array(
+ 'vector' => "Miglioramenti all'interfaccia utente per Vector",
+ 'vector-desc' => "Migliora gli elementi dell'interfaccia utente della skin Vector.",
+ 'vector-collapsiblenav-preference' => 'Abilita menù di navigazione nascondibile per la skin Vector',
+ 'vector-collapsiblenav-more' => 'Più lingue',
+ 'vector-editwarning-warning' => 'Lasciare questa pagina potrebbe costarti la perdita di tutti i cambiamenti effettuati.
+Se sei loggato, puoi disattivare questo avviso nella sezione "Casella di modifica" delle tue preferenze.',
+ 'vector-editwarning-preference' => 'Avvisa quando lascio una pagina di modifica con modifiche non salvate',
+ 'vector-simplesearch-search' => 'Ricerca',
+ 'vector-simplesearch-containing' => 'contenente...',
+ 'vector-noexperiments-preference' => 'Escludimi dalle funzionalità sperimentali',
+);
+
+/** Japanese (日本語)
+ * @author Fryed-peach
+ * @author Whym
+ * @author é’å­å®ˆæ­Œ
+ */
+$messages['ja'] = array(
+ 'vector' => 'ベクター用ユーザーインターフェイス改良',
+ 'vector-desc' => 'ベクター・スキンã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹è¦ç´ ã‚’改良ã™ã‚‹ã€‚',
+ 'vector-collapsiblenav-preference' => 'ベクター外装ã®ãƒŠãƒ“ゲーションã§ã€é …ç›®ã®æŠ˜ã‚Šç•³ã¿ã‚’有効化ã™ã‚‹',
+ 'vector-collapsiblenav-more' => 'ä»–ã®è¨€èªž',
+ 'vector-editwarning-warning' => 'ã“ã®ãƒšãƒ¼ã‚¸ã‚’離れるã¨ã€ã‚ãªãŸãŒè¡Œã£ãŸå¤‰æ›´ã¯ã™ã¹ã¦å¤±ã‚ã‚Œã¦ã—ã¾ã†ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。ログインã—ã¦ã„ã‚‹å ´åˆã€å€‹äººè¨­å®šã®ã€Œç·¨é›†ã€ã‚¿ãƒ–ã§ã“ã®è­¦å‘Šã‚’表示ã—ãªã„よã†ã«ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚',
+ 'vector-editwarning-preference' => '変更をä¿å­˜ã›ãšã«ç·¨é›†ç”»é¢ã‹ã‚‰é›¢ã‚Œã‚ˆã†ã¨ã—ãŸéš›ã«è­¦å‘Šã™ã‚‹',
+ 'vector-simplesearch-search' => '検索',
+ 'vector-simplesearch-containing' => 'ã“ã®èªžå¥ã‚’全文検索',
+ 'vector-noexperiments-preference' => '機能ã«ã¤ã„ã¦ã®å®Ÿé¨“ã‹ã‚‰è‡ªåˆ†ã‚’除外ã™ã‚‹',
+);
+
+/** Javanese (Basa Jawa) */
+$messages['jv'] = array(
+ 'vector-simplesearch-search' => 'Golèk',
+);
+
+/** Georgian (ქáƒáƒ áƒ—ული)
+ * @author BRUTE
+ * @author გიáƒáƒ áƒ’იმელáƒ
+ */
+$messages['ka'] = array(
+ 'vector' => 'ვექტáƒáƒ áƒ£áƒšáƒ˜ თემის ინტერფეისის გáƒáƒ£áƒ›áƒ¯áƒáƒ‘ესებáƒ',
+ 'vector-desc' => 'ვექტáƒáƒ áƒ£áƒšáƒ˜ თემის სáƒáƒ›áƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლრინტერფეისის გáƒáƒ£áƒ›áƒ¯áƒáƒ‘ესებáƒ',
+ 'vector-collapsiblenav-preference' => 'დáƒáƒ áƒ—ეთ მáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ• "ვექტáƒáƒ " დიზáƒáƒ˜áƒœáƒ¨áƒ˜ ბლáƒáƒ™áƒ”ბის ჩáƒáƒ™áƒ”ცვáƒ',
+ 'vector-collapsiblenav-more' => 'დáƒáƒ›áƒáƒ¢áƒ”ბითი ენები',
+ 'vector-editwarning-warning' => 'სხვრგვერდზე გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ გáƒáƒ›áƒáƒ˜áƒ¬áƒ•áƒ”ვს ცვლილებების დáƒáƒ™áƒáƒ áƒ’ვáƒáƒ¡.',
+ 'vector-editwarning-preference' => 'გáƒáƒ›áƒáƒ¤áƒ áƒ—ხილე, რáƒáƒ“ესáƒáƒª დáƒáƒ•áƒ¢áƒáƒ•áƒ”ბ რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒáƒ“ გვერდს, დáƒáƒ£áƒ›áƒáƒ®áƒ¡áƒáƒ•áƒ áƒ”ბელი ცვლილებებით',
+ 'vector-simplesearch-search' => 'ძიებáƒ',
+ 'vector-simplesearch-containing' => 'შეიცáƒáƒ•áƒ¡...',
+);
+
+/** Kalaallisut (Kalaallisut)
+ * @author Qaqqalik
+ */
+$messages['kl'] = array(
+ 'vector-simplesearch-search' => 'Ujarlerit',
+);
+
+/** Khmer (ភាសាážáŸ’មែរ)
+ * @author គីមស៊្រុន
+ */
+$messages['km'] = array(
+ 'vector-collapsiblenav-more' => 'ភាសាផ្សáŸáž„ទៀáž',
+ 'vector-editwarning-warning' => 'ចាកចáŸáž‰áž–ីទំពáŸážšáž“áŸáŸ‡ នឹងធ្វើឲ្យអ្នកបាážáŸ‹áž”ង់កំណែប្រែដែលអ្នកបានធ្វើ។
+ប្រសិនបើអ្នកបានកážáŸ‹ážˆáŸ’មោះរួចហើយ អ្នកអាច​បិទ​បម្រាម​នáŸáŸ‡â€‹áž“ៅ​ក្នុងផ្នែក​ "កំណែប្រែ" នៃ​ចំណូល​ចិážáŸ’ážâ€‹ážšáž”ស់​អ្នក​។',
+ 'vector-editwarning-preference' => 'សូមព្រមាន​ážáŸ’ញុំ​ áž–áŸáž›ážŠáŸ‚áž›ážáŸ’ញុំ​ចាកចáŸáž‰â€‹áž–ី​ទំពáŸážšâ€‹áž€áŸ‚ប្រែដោយមិន​បានរក្សា​ទុកបំលាស់ប្ដូរ​នានា​',
+ 'vector-simplesearch-search' => 'ស្វែងរក​',
+ 'vector-simplesearch-containing' => 'ដែលមានពាក្យ...',
+);
+
+/** Korean (한국어)
+ * @author Albamhandae
+ * @author IRTC1015
+ * @author Kwj2772
+ */
+$messages['ko'] = array(
+ 'vector' => '벡터 ìŠ¤í‚¨ì˜ ì¸í„°íŽ˜ì´ìŠ¤ í–¥ìƒ',
+ 'vector-desc' => '벡터 ìŠ¤í‚¨ì˜ ì‚¬ìš©ìž ì¸í„°íŽ˜ì´ìŠ¤ë¥¼ í–¥ìƒ',
+ 'vector-collapsiblenav-preference' => '왼쪽 사ì´ë“œë°” 메뉴 접기(벡터 스킨 ì „ìš©)',
+ 'vector-collapsiblenav-more' => '기타 언어',
+ 'vector-editwarning-warning' => 'ì´ ì°½ì—ì„œ 벗어나면 저장하지 ì•Šì€ íŽ¸ì§‘ì´ ëª¨ë‘ ì‚¬ë¼ì§‘니다.
+로그ì¸í•œ 경우, 환경 설정 ‘편집ìƒìžâ€™ëž€ì—ì„œ ì´ ê²½ê³ ì°½ì„ ë„우지 ì•Šë„ë¡ ì„¤ì •í•  수 있습니다.',
+ 'vector-editwarning-preference' => '수정한 ë‚´ìš©ì„ ì €ìž¥í•˜ì§€ ì•Šê³  편집 ì–‘ì‹ì„ 닫거나 다른 페ì´ì§€ë¡œ ì´ë™í•  ë•Œ 알림',
+ 'vector-simplesearch-search' => '검색',
+ 'vector-simplesearch-containing' => '다ìŒì˜ 어구가 들어간 문서 찾기',
+ 'vector-noexperiments-preference' => '새 기능 실험ì—ì„œ 나를 제외합니다.',
+);
+
+/** Karachay-Balkar (Къарачай-Малкъар)
+ * @author Iltever
+ */
+$messages['krc'] = array(
+ 'vector' => '«Вектор» темагъа интерфейÑни игилендириу',
+ 'vector-desc' => '«Вектор» темагъа къошулуучу интерфейÑни игилендириулери',
+ 'vector-collapsiblenav-preference' => 'Сол менюда «Вектор» темада блокла джашырыу амалны джандыр',
+ 'vector-collapsiblenav-more' => 'Дагъыда тилле',
+ 'vector-editwarning-warning' => 'Башха бетге кёчÑегиз, Ñтген тюрлениулеригиз Ñ‚Ð°Ñ Ð±Ð¾Ð»ÑƒÑ€Ð³ÑŠÐ° боллукъдула.
+СиÑтемада региÑтрациÑны ётген ÑÑегиз, бу билдириуню джарашдырыуларыгъызны «Тюрлендириу» деген бёлюмюнде джукълатыргъа боллукъÑуз.',
+ 'vector-editwarning-preference' => 'Тюрлендириулени Ñакълатмай редакторлау бетден кетген Ñагъатымда билдир',
+ 'vector-simplesearch-search' => 'Излеу',
+ 'vector-simplesearch-containing' => 'ичиндегиÑи…',
+);
+
+/** Colognian (Ripoarisch)
+ * @author Purodha
+ */
+$messages['ksh'] = array(
+ 'vector' => 'Verbäßert Schnettschtäll för Minsche en dä Vektor Bovverfläsch.',
+ 'vector-desc' => 'Verbäßert Schnettschtäll för Minsche en dä Vektor Bovverfläsch.',
+ 'vector-collapsiblenav-preference' => 'Donn zohlohße, Ußwahle em Ußsinn „Vektor“ zoh_ze_klappe',
+ 'vector-collapsiblenav-more' => 'Mieh Shprooche',
+ 'vector-editwarning-warning' => 'Wann de vun hee dä Sigg fott jeihß, doh künnte all Ding Änderunge aan dä Sigg verschött jonn.
+Do kanns heh di Warnung affschallde, wann de aanjemelldt un enjelogg bes, dann kriß de se nieh mieh wider. Jangk doför en dä Affschnett „Beim Bearbeide“ en Dinge Enshtellunge.',
+ 'vector-editwarning-preference' => 'Donn mesch warne, wann esch vun en Sigg fott jonn, ih dat esch all ming Änderunge avjeschpeischert hann.',
+ 'vector-simplesearch-search' => 'Söhke',
+ 'vector-simplesearch-containing' => 'dren änthallde…',
+ 'vector-noexperiments-preference' => 'Donn mesch nit met neue Saache zom Ußprobeere behällijje',
+);
+
+/** Kurdish (Latin) (Kurdî (Latin))
+ * @author Erdal Ronahi
+ */
+$messages['ku-latn'] = array(
+ 'vector-collapsiblenav-more' => 'Zêdetir ziman',
+ 'vector-simplesearch-search' => 'Lêgerîn',
+ 'vector-simplesearch-containing' => 'dihundirîne...',
+);
+
+/** Cornish (Kernowek)
+ * @author Kw-Moon
+ */
+$messages['kw'] = array(
+ 'vector-collapsiblenav-more' => 'Moy a yethow',
+ 'vector-editwarning-warning' => 'Mar qwrewgh whi gara an folen-ma, whi a alja kelly chanjyow eus gwres genowgh.
+Mars owgh whi omgelmys, whi a ell dialosegy an gwarnyans-ma en trogh "Chanjya" agas dowisyanjow.',
+ 'vector-editwarning-preference' => 'Gwra ow gwarnya pan von gara folen chanjya gen chanjyow nag eus gwithys',
+ 'vector-simplesearch-search' => 'Whilas',
+ 'vector-simplesearch-containing' => 'ow senjy...',
+);
+
+/** Latin (Latina) */
+$messages['la'] = array(
+ 'vector-simplesearch-search' => 'Quaerere',
+);
+
+/** Luxembourgish (Lëtzebuergesch)
+ * @author Robby
+ */
+$messages['lb'] = array(
+ 'vector' => 'Verbesserunge vum Benotzer-IInterface (UI) fir Vector',
+ 'vector-desc' => "Verbessert am Benotzer-Interface Elementer vum Ausgesinn ''Vector''.",
+ 'vector-collapsiblenav-preference' => 'Zesummeklappe vun Objeten am Navigatiounsmenü am Vector-Ausgesinn aschalten',
+ 'vector-collapsiblenav-more' => 'Méi Sproochen',
+ 'vector-editwarning-warning' => 'Wann Dir dës Säit verloosst kann dat dozou féieren datt Dir all Ännerungen, déi Dir gemaach hutt, verléiert.
+Wann Dir ageloggt sidd, kënnt Dir dës Warnung an der Sektioun "Änneren" vun Ären Astellungen ausschalten.',
+ 'vector-editwarning-preference' => "Mech warne wann ech d'Ännerung vun enger Säit verloosen, ouni Ännerunge gespäichert ze hunn",
+ 'vector-simplesearch-search' => 'Sichen',
+ 'vector-simplesearch-containing' => 'mat ...',
+ 'vector-noexperiments-preference' => 'Mech vun Experimenter mat neie Fonctiounen eraushuelen',
+);
+
+/** Ganda (Luganda)
+ * @author Kizito
+ */
+$messages['lg'] = array(
+ 'vector-editwarning-warning' => 'Bw\'ova ku lupapula luno kiyinza okuleetera enkyukakyuka z\'olukozeko okuvawo.<br />
+Bw\'oba nga okola oyingidde mu sisitemu, okulabula kuno oyinza okukusirisa nga weyambisa<br />
+ebiri mu kitundu ekya "Kukyusa" eky\'omu "Nteekateeka yange".',
+);
+
+/** Limburgish (Limburgs)
+ * @author Ooswesthoesbes
+ */
+$messages['li'] = array(
+ 'vector' => 'Vectorgebroekersinterfaceverbaeteringe',
+ 'vector-desc' => 'Verbaetertj de vectorgebroekersinterface-illemente',
+ 'vector-collapsiblenav-preference' => 'Zèt inklapbaar navigatiemenu in bie vectorgebroek',
+ 'vector-collapsiblenav-more' => 'Mieë spräök',
+ 'vector-editwarning-warning' => "Es se dees pagina verleets verluus se meugelik wieziginge die se haes gemaak.
+Es se bös aangemeld, kins se dees waorsjoewing oetzètten in 't bewerkingstabblaad in dien veurkäöre.",
+ 'vector-editwarning-preference' => "Waorssjoew mich es ich 'n bewerkdje pagina die nag neet is opgeslage wil verlaote",
+ 'vector-simplesearch-search' => 'Zeuke',
+ 'vector-simplesearch-containing' => 'bevat...',
+);
+
+/** Lithuanian (Lietuvių)
+ * @author Garas
+ * @author Matasg
+ */
+$messages['lt'] = array(
+ 'vector' => '„Vektorinės“ vartotojo sąsajos patobulinimai',
+ 'vector-collapsiblenav-more' => 'Daugiau kalbų',
+ 'vector-editwarning-warning' => 'Palikdamas šį puslapį jūs prarasite visus padarytus pakeitimus.',
+ 'vector-editwarning-preference' => 'Perspėti mane, kai palieku redagavimo puslapį, o jame yra neišsaugotų pakeitimų',
+ 'vector-simplesearch-search' => 'Ieškoti',
+);
+
+/** Latvian (Latviešu)
+ * @author GreenZeb
+ * @author Xil
+ */
+$messages['lv'] = array(
+ 'vector' => 'Vector lietotÄja saskarsnes uzlabojumi',
+ 'vector-desc' => 'Uzlabo lietotÄja saskarsnes elementus Vector apdarÄ“.',
+ 'vector-collapsiblenav-more' => 'VairÄk valodu',
+ 'vector-editwarning-warning' => 'AtstÄjot Å¡o lapu tu zaudÄ“si izdarÄ«tÄs izmaiņas.
+Ja esi pieteicies, jÅ«s vari atspÄ“jot Å¡o brÄ«dinÄjumu savÄs izvÄ“lÄ“s sadaÄ¼Ä "rediģēšana"',
+ 'vector-editwarning-preference' => 'BrÄ«dinÄt mani, kad es atstÄju lapas rediģēšanu nesaglabÄjot izmaiņas',
+ 'vector-simplesearch-search' => 'Meklēt',
+ 'vector-simplesearch-containing' => 'MeklÄ“jamÄ frÄze:',
+);
+
+/** Minangkabau (Baso Minangkabau)
+ * @author VoteITP
+ */
+$messages['min'] = array(
+ 'vector' => 'Membaiki UI untuak Vektor',
+ 'vector-desc' => 'Membaiki elemen pado antamuka pangguno dari kulit Vektor',
+ 'vector-collapsiblenav-preference' => 'Aktifkan fungsi menu navigasi yang dapek ditampilkan pado kulit Vektor',
+ 'vector-collapsiblenav-more' => 'Labiah banyak baso',
+ 'vector-editwarning-warning' => 'Maninggakan laman ko dapek maakibatkan parubahan yang awak buek hilang. Jiko awak lah masuak log, awak dapek maabaikan maklumat ko malalui "Suntingan" pado laman preferensi awak.',
+ 'vector-editwarning-preference' => 'Ingekkan denai katiko denai maninggakan laman suntiang sabalun menyimpan parubahan',
+ 'vector-simplesearch-search' => 'Cari',
+ 'vector-simplesearch-containing' => 'Barisi...',
+);
+
+/** Macedonian (МакедонÑки)
+ * @author Bjankuloski06
+ */
+$messages['mk'] = array(
+ 'vector' => 'Подобрувања на поÑредникот за изгледот „ВекторÑки“',
+ 'vector-desc' => 'Ги подобрува елементите на кориÑничкиот поÑредник на изгледот „ВекторÑки“.',
+ 'vector-collapsiblenav-preference' => 'Овозможи раÑклопување на елементи во навигационо мени во рувото „ВекторÑко“',
+ 'vector-collapsiblenav-more' => 'Повеќе јазици',
+ 'vector-editwarning-warning' => 'Ðко ја напуштите Ñтраницата ќе ги изгубите Ñите промени кои Ñте ги направиле.
+Ðко Ñте најавени, можете да го иÑклучите ова предупредување во одделот „Уредување“ во вашите нагодувања.',
+ 'vector-editwarning-preference' => 'Предупреди ме кога Ñакам да напуштам Ñтраница за уредување без да ги имам зачувано промените',
+ 'vector-simplesearch-search' => 'Пребарување',
+ 'vector-simplesearch-containing' => 'Ñодржи...',
+ 'vector-noexperiments-preference' => 'Изземиме од екÑперименти so функции',
+);
+
+/** Malayalam (മലയാളം)
+ * @author Junaidpv
+ * @author Praveenp
+ */
+$messages['ml'] = array(
+ 'vector' => 'വെകàµà´±àµà´±àµ¼ ദൃശàµà´¯à´°àµ‚പതàµà´¤à´¿à´¨àµà´±àµ† സമàµà´ªàµ¼à´•àµà´•à´®àµà´– മെചàµà´šà´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´²àµà´•àµ¾',
+ 'vector-desc' => 'വെകàµà´±àµà´±àµ¼ ദൃശàµà´¯à´°àµ‚പതàµà´¤à´¿àµ½ ഉപയോകàµà´¤àµƒ സമàµà´ªàµ¼à´•àµà´•à´®àµà´– ഘടകങàµà´™à´³à´¿à´²àµ† മെചàµà´šà´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´²àµà´•àµ¾.',
+ 'vector-collapsiblenav-preference' => 'വെകàµà´±àµà´±àµ¼ ദൃശàµà´¯à´°àµ‚പതàµà´¤à´¿àµ½ ഇടതàµà´µà´¶à´¤àµà´¤àµ† വഴികാടàµà´Ÿà´¿ മെനൠചàµà´°àµà´•àµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´•àµà´•à´¿ സജàµà´œàµ€à´•à´°à´¿à´•àµà´•àµà´•',
+ 'vector-collapsiblenav-more' => 'ഇതര ഭാഷകളിൽ',
+ 'vector-editwarning-warning' => 'à´ˆ താളിൽ നിനàµà´¨àµà´‚ പോകàµà´¨àµà´¨à´¤àµ താങàµà´•àµ¾ വരàµà´¤àµà´¤à´¿à´¯ മാറàµà´±à´™àµà´™àµ¾ നഷàµà´Ÿà´ªàµà´ªàµ†à´Ÿà´¾àµ» ഇടയാകàµà´•àµà´‚.
+താങàµà´•àµ¾ ലോഗിൻ ചെയàµà´¤à´¿à´Ÿàµà´Ÿàµà´£àµà´Ÿàµ†à´™àµà´•à´¿àµ½, താങàµà´•à´³àµà´Ÿàµ† à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™à´³à´¿àµ½ "തിരàµà´¤àµà´¤àµ½" à´Žà´¨àµà´¨ ഭാഗതàµà´¤àµ ചെനàµà´¨àµ à´ˆ അറിയിപàµà´ªàµ à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´¨àµà´¨à´¤àµ ഒഴിവാകàµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµ.',
+ 'vector-editwarning-preference' => 'സേവൠചെയàµà´¯à´¾à´¤àµà´¤ മാറàµà´±à´™àµà´™à´³àµ‹à´Ÿàµ കൂടിയ തിരàµà´¤àµà´¤àµ½ താളിൽ നിനàµà´¨àµà´‚ പോകàµà´®àµà´ªàµ‹àµ¾ à´Žà´¨àµà´¨àµ† അറിയികàµà´•àµà´•',
+ 'vector-simplesearch-search' => 'തിരയàµà´•',
+ 'vector-simplesearch-containing' => 'ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´¨àµà´¨àµ...',
+ 'vector-noexperiments-preference' => 'സവിശേഷഗàµà´£à´™àµà´™àµ¾ പരീകàµà´·à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿àµ½ നിനàµà´¨àµà´‚ à´Žà´¨àµà´¨àµ† ഒഴിവാകàµà´•àµà´•',
+);
+
+/** Mongolian (Монгол) */
+$messages['mn'] = array(
+ 'vector-simplesearch-search' => 'Хайх',
+);
+
+/** Marathi (मराठी)
+ * @author Mahitgar
+ * @author V.narsikar
+ */
+$messages['mr'] = array(
+ 'vector' => 'समदिश परिधानाचà¥à¤¯à¤¾ उपयोगकरà¥à¤¤à¤¾-आंतरपृषà¥à¤ à¤¾à¤¤à¥€à¤²(UI) सà¥à¤§à¤¾à¤°à¤£à¤¾',
+ 'vector-desc' => 'समदिश परिधान (वà¥à¤¹à¥‡à¤•à¥à¤Ÿà¤°) तà¥à¤µà¤šà¥‡à¤šà¥à¤¯à¤¾ उपयोगकरà¥à¤¤à¤¾-आंतरपृषà¥à¤  (इंटरफेस) घटकांमधà¥à¤¯à¥‡ सà¥à¤§à¤¾à¤°à¤£à¤¾ करते',
+ 'vector-collapsiblenav-preference' => 'समदिश परिधानाचà¥à¤¯à¤¾ सà¥à¤šà¤¾à¤²à¤¨à¤¾à¤¨à¥à¤•à¥à¤°à¤®à¤¾à¤¤à¥€à¤² घटकांची घडीकà¥à¤·à¤®à¤¤à¤¾ सकà¥à¤·à¤® करा.',
+ 'vector-collapsiblenav-more' => 'इतर भाषा दाखवा',
+ 'vector-editwarning-warning' => "या पानावरà¥à¤¨ दà¥à¤¸à¤°à¥â€à¤¯à¤¾ पानावर गेलà¥à¤¯à¤¾à¤¸, तà¥à¤®à¥à¤¹à¥€ येथे केलेले बदल जतन होणार नाहीत.
+ही सूचना घालवणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ ''माà¤à¥à¤¯à¤¾ पसंती'' मधील संपादनपसंतीत बदल करा.",
+ 'vector-editwarning-preference' => 'जर मी संपादित करीत असलेलà¥à¤¯à¤¾ पानावरील माà¤à¥‡ संपादिलेले बदल जतन न केलà¥à¤¯à¤¾à¤¸ मला इशारा दà¥à¤¯à¤¾',
+ 'vector-simplesearch-search' => 'शोधा',
+ 'vector-simplesearch-containing' => '.......हे असलेले',
+);
+
+/** Malay (Bahasa Melayu)
+ * @author Anakmalaysia
+ * @author Aurora
+ * @author Diagramma Della Verita
+ */
+$messages['ms'] = array(
+ 'vector' => 'pembaikian untuk Vector',
+ 'vector-desc' => 'Meningkatkan tetapan pengguna pada halaman Vector',
+ 'vector-collapsiblenav-preference' => 'Aktifkan menu navigasi pada laman',
+ 'vector-collapsiblenav-more' => 'Bahasa lain',
+ 'vector-editwarning-warning' => 'Meninggalkan laman ini mungkin akan menyebabkan anda kehilangan sebarang perubahan yang telah anda lakukan.
+Anda boleh melumpuhkan amaran in di bahagian "Menyunting" dalam keutamaan anda.',
+ 'vector-editwarning-preference' => 'Beri saya amaran apabila saya meninggalkan sesebuah laman penyuntingan tanpa menyimpan perubahan.',
+ 'vector-simplesearch-search' => 'Cari',
+ 'vector-simplesearch-containing' => 'mengandungi...',
+ 'vector-noexperiments-preference' => 'Kecualikan saya dari uji kaji ciri',
+);
+
+/** Maltese (Malti)
+ * @author Chrisportelli
+ */
+$messages['mt'] = array(
+ 'vector' => 'Titjib tal-interfaċċa tal-utent għal Vector',
+ 'vector-desc' => 'Ittejjeb l-elementi tal-interfaċċa tal-utent tal-aspett grafiku Vector.',
+ 'vector-collapsiblenav-preference' => "Ippermetti ''menus'' tan-navigazzjoni li jistew jinħbew fl-aspett grafiku Vector",
+ 'vector-collapsiblenav-more' => 'Aktar lingwi',
+ 'vector-editwarning-warning' => 'Jekk tħalli din il-paġna jista\' jwassal sabiex titlef kwalunkwe tibdil li tkun għamilt. Jekk int tinsab fil-kont tiegħek, tista\' tneħħi dan l-avviż fis-sezzjoni "Modifiki" tal-preferenzi tiegħek.',
+ 'vector-editwarning-preference' => "Avżani kull meta nħalli paġna ta' modifika b'modifiki li għadhom ma ġewx salvati",
+ 'vector-simplesearch-search' => 'Fittex',
+ 'vector-simplesearch-containing' => 'li tinkludi...',
+);
+
+/** Nahuatl (NÄhuatl)
+ * @author Ricardo gs
+ * @author Teòtlalili
+ */
+$messages['nah'] = array(
+ 'vector-collapsiblenav-more' => 'Okseki tlâtòltìn',
+ 'vector-simplesearch-search' => 'Tlatēmoliztli',
+);
+
+/** Nedersaksisch (Nedersaksisch)
+ * @author Servien
+ */
+$messages['nds-nl'] = array(
+ 'vector-collapsiblenav-preference' => "Inklapbaor navigasiemenu inschakelen bie 't gebruuk van Vector",
+ 'vector-collapsiblenav-more' => 'Meer talen',
+ 'vector-editwarning-warning' => 'A-j disse pagina ofsluten dan kan \'t ween dat der wieziging dee-j emaak hemmen kwiet raken.
+A-j an-emeld bin, dan ku-j disse waorschuwing uutzetten in \'t tabblad "Bewarken" in joew veurkeuren.',
+ 'vector-editwarning-preference' => 'Waorschuw mien a-k een bewörken pagina of wil sluten dee-j nog neet op-esleugen is',
+ 'vector-simplesearch-search' => 'Zeuken',
+ 'vector-simplesearch-containing' => 'bevat...',
+);
+
+/** Dutch (Nederlands)
+ * @author Siebrand
+ */
+$messages['nl'] = array(
+ 'vector' => 'Gebruikersinterfaceverbeteringen voor Vector',
+ 'vector-desc' => 'Verbetert de gebruikersinterfaceelementen van het uiterlijk Vector',
+ 'vector-collapsiblenav-preference' => 'Inklapbaar navigatiemenu inschakelen bij gebruik van Vector',
+ 'vector-collapsiblenav-more' => 'Meer talen',
+ 'vector-editwarning-warning' => 'Als u deze pagina verlaat verliest u mogelijk wijzigingen die u hebt gemaakt.
+Als u bent aangemeld, kunt u deze waarschuwing uitschakelen in het tabblad "Bewerken" in uw voorkeuren.',
+ 'vector-editwarning-preference' => 'Waarschuw mij als ik een bewerkte pagina die nog niet is opgeslagen wil verlaten',
+ 'vector-simplesearch-search' => 'Zoeken',
+ 'vector-simplesearch-containing' => 'bevat...',
+ 'vector-noexperiments-preference' => 'Mij in de toekomst niet laten deelnemen aan experimenten',
+);
+
+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+ * @author Gunnernett
+ */
+$messages['nn'] = array(
+ 'vector-collapsiblenav-more' => 'Fleire språk',
+ 'vector-editwarning-warning' => 'Gjennom å navigera vekk frå denne sida vil du mista alle endringane du måtte ha gjort.
+Denne åtvaringa kan slåast av under Endring i instillingane dine.',
+ 'vector-editwarning-preference' => 'Gje ei åtvaring om eg går ut av ei redigeringsside og ikkje alle endringar er lagra',
+ 'vector-simplesearch-search' => 'Søk',
+ 'vector-simplesearch-containing' => 'inneheld ...',
+);
+
+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+ * @author Jon Harald Søby
+ * @author Laaknor
+ * @author Nghtwlkr
+ */
+$messages['no'] = array(
+ 'vector' => 'Brukergrensesnittsforbedringer for Vector',
+ 'vector-desc' => 'Forbedrer elementer i brukergrensesnittet for Vector-utseendet.',
+ 'vector-collapsiblenav-preference' => 'Aktiver sammenlegging av element i navigeringsmenyen i drakten Vector',
+ 'vector-collapsiblenav-more' => 'Flere språk',
+ 'vector-editwarning-warning' => 'Ved å forlate siden vil du miste alle endringer du har utført.
+Denne advarselen kan slås av under Redigering i instillingene dine.',
+ 'vector-editwarning-preference' => 'Si ifra dersom jeg forlater en side jeg har gjort redigeringer på men ikke har lagret siden.',
+ 'vector-simplesearch-search' => 'Søk',
+ 'vector-simplesearch-containing' => 'inneholder …',
+ 'vector-noexperiments-preference' => 'Eksluder meg fra funksjonseksperimenter',
+);
+
+/** Occitan (Occitan)
+ * @author Cedric31
+ */
+$messages['oc'] = array(
+ 'vector' => 'Melhoraments IU per Vector',
+ 'vector-desc' => "Melhoraments dels elements de l'interfàcia d'utilizaire de l'abilhatge Vector.",
+ 'vector-collapsiblenav-preference' => "Activar lo menut de navigacion d'esquèrra replegable",
+ 'vector-editwarning-warning' => "Quitar aquesta pagina vos farà pèrdre totas las modificacions qu'avètz fachas.
+Se sètz connectat amb vòstre compte, podètz levar aqueste avertiment dins la seccion Fenèstra de modificacion de vòstras preferéncias.",
+ 'vector-editwarning-preference' => 'M’avisar quand quiti una pagina de modificacion sens publicar los cambiaments',
+ 'vector-simplesearch-search' => 'Recercar',
+ 'vector-simplesearch-containing' => 'que conten...',
+);
+
+/** Deitsch (Deitsch)
+ * @author Xqt
+ */
+$messages['pdc'] = array(
+ 'vector-collapsiblenav-more' => 'Weidere Schprooche',
+ 'vector-simplesearch-search' => 'Uffgucke',
+);
+
+/** Polish (Polski)
+ * @author Sp5uhe
+ */
+$messages['pl'] = array(
+ 'vector' => 'Ulepszenia interfejsu użytkownika dla skórki Wektor',
+ 'vector-desc' => 'Poprawia elementy interfejsu użytkownika skórki Wektor.',
+ 'vector-collapsiblenav-preference' => 'Włącz po lewej rozwijalne menu nawigacyjne w skórce Wektor',
+ 'vector-collapsiblenav-more' => 'Inne języki',
+ 'vector-editwarning-warning' => 'Opuszczenie tej strony może spowodować utratę wprowadzonych przez Ciebie zmian.
+Jeśli jesteś zalogowany możesz wyłączyć wyświetlanie tego ostrzeżenia w zakładce Edycja w swoich preferencjach.',
+ 'vector-editwarning-preference' => 'Ostrzegaj mnie, gdy opuszczam stronÄ™ edycji bez zapisania zmian',
+ 'vector-simplesearch-search' => 'Szukaj',
+ 'vector-simplesearch-containing' => 'zawierajÄ…ce...',
+ 'vector-noexperiments-preference' => 'Nie chcę w przyszłości brać udziału w testach',
+);
+
+/** Piedmontese (Piemontèis)
+ * @author Borichèt
+ * @author Dragonòt
+ */
+$messages['pms'] = array(
+ 'vector' => 'Ameliorament UI për Vector',
+ 'vector-desc' => "Ameliorament ëd j'element dl'antërfacia utent dla pel Vector.",
+ 'vector-collapsiblenav-preference' => "Abilité a stërmé j'element ant la bara ëd navigassion ant ël livel Vector",
+ 'vector-collapsiblenav-more' => "Pì 'd lenghe",
+ 'vector-editwarning-warning' => "Lassé sta pàgina-sì a peul fé an manera che it perde tute le modìfiche ch'it l'has fàit.
+S'it ses logà, it peule disabilité st'avis-sì ant la session \"Quàder ëd modìfica dël test\" dij tò gust.",
+ 'vector-editwarning-preference' => 'Avisme quand che i lasso na pàgina ëd modìfiche con modìfiche nen salvà',
+ 'vector-simplesearch-search' => 'Arserca',
+ 'vector-simplesearch-containing' => 'contenent ...',
+ 'vector-noexperiments-preference' => "Gav-me da j'esperiment ëd le funsion",
+);
+
+/** Pontic (Ποντιακά) */
+$messages['pnt'] = array(
+ 'vector-simplesearch-search' => 'ΑÏάεμαν',
+);
+
+/** Pashto (پښتو)
+ * @author Ahmed-Najib-Biabani-Ibrahimkhel
+ */
+$messages['ps'] = array(
+ 'vector-collapsiblenav-more' => 'Ù†ÙˆØ±Û Ú˜Ø¨Û',
+ 'vector-simplesearch-search' => 'پلټل',
+);
+
+/** Portuguese (Português)
+ * @author Hamilton Abreu
+ * @author Helder.wiki
+ */
+$messages['pt'] = array(
+ 'vector' => 'Melhorias da interface do tema Vector',
+ 'vector-desc' => 'Melhora os elementos da interface do utilizador para o tema Vector',
+ 'vector-collapsiblenav-preference' => 'Permitir o ocultamento dos elementos do menu de navegação no tema Vector',
+ 'vector-collapsiblenav-more' => 'Mais línguas',
+ 'vector-editwarning-warning' => 'Abandonar esta página pode fazer com que perca todas as suas alterações.
+Se estiver autenticado, pode desactivar este aviso na secção "Edição" das preferências.',
+ 'vector-editwarning-preference' => 'Avisar-me ao abandonar uma página editada sem gravar as alterações.',
+ 'vector-simplesearch-search' => 'Pesquisa',
+ 'vector-simplesearch-containing' => 'contendo...',
+ 'vector-noexperiments-preference' => 'Excluir-me da experimentação de funcionalidades',
+);
+
+/** Brazilian Portuguese (Português do Brasil)
+ * @author Daemorris
+ * @author Everton137
+ * @author Giro720
+ * @author Helder.wiki
+ */
+$messages['pt-br'] = array(
+ 'vector' => 'Melhorias da IU do Vector',
+ 'vector-desc' => 'Melhora a interface do usuário do tema Vector',
+ 'vector-collapsiblenav-preference' => 'Ativar o ocultamento de itens no menu de navegação no tema Vector',
+ 'vector-collapsiblenav-more' => 'Mais idiomas',
+ 'vector-editwarning-warning' => 'Abandonar esta página pode fazer com que você perca todas as alterações que fez.
+Se você estiver autenticado, você pode desabilitar este aviso na seção "Opções de edição" de suas preferências.',
+ 'vector-editwarning-preference' => 'Avisar-me quando eu deixar uma janela de edição sem ter salvo as alterações',
+ 'vector-simplesearch-search' => 'Pesquisa',
+ 'vector-simplesearch-containing' => 'contendo...',
+ 'vector-noexperiments-preference' => 'Excluir-me da experimentação de funcionalidades',
+);
+
+/** Quechua (Runa Simi)
+ * @author AlimanRuna
+ */
+$messages['qu'] = array(
+ 'vector' => 'Ruraqpaq uyapurapi Vector nisqapaq allinchasqakuna',
+ 'vector-desc' => 'Ruraqpaq uyapurapi Vector qarap qallawankunata allinchan.',
+ 'vector-collapsiblenav-preference' => "Vector qarap wamp'unanpi qallawa pakana llamk'anata atichiy",
+ 'vector-collapsiblenav-more' => 'Aswan rimaykuna',
+ 'vector-editwarning-warning' => "Kay p'anqata saqispaykiqa lliw rurarqusqayki hukchasqakunatachá chinkachiykiman.
+Yaykusqa kaspaykiqa, kay yuyampayta hark'ayta atinki allinkachinaykikunapi \"Llamk'apusqa\" rakipi.",
+ 'vector-editwarning-preference' => "Yuyampaway p'anqata saqiptiy manaraq rurarqusqay hukchasqakunata waqaychaspay.",
+ 'vector-simplesearch-search' => 'Maskay',
+ 'vector-simplesearch-containing' => 'kaykunayuq: ...',
+ 'vector-noexperiments-preference' => 'Ñuqawan ama lliplli llanchikukunata ruraychu',
+);
+
+/** Romanian (Română)
+ * @author AdiJapan
+ * @author Minisarm
+ */
+$messages['ro'] = array(
+ 'vector' => 'Îmbunătățiri la nivelul interfeței Vector',
+ 'vector-desc' => 'Îmbunătățiri ale elementelor interfeței Vector.',
+ 'vector-collapsiblenav-preference' => 'Activează ascunderea elementelor meniului de navigare în interfața Vector',
+ 'vector-collapsiblenav-more' => 'Mai multe limbi',
+ 'vector-editwarning-warning' => 'Părăsind această pagină, există riscul pierderii modificărilor efectuate.
+Dacă sunteți autentificat, puteți dezactiva această avertizare în secțiunea „Modificare†a preferințelor dumneavoastră.',
+ 'vector-editwarning-preference' => 'Avertizează-mă când părăsesc o pagină fără a salva modificările',
+ 'vector-simplesearch-search' => 'Căutare',
+ 'vector-simplesearch-containing' => 'conținând...',
+ 'vector-noexperiments-preference' => 'Nu mai vreau să iau parte la experimente viitoare',
+);
+
+/** Tarandíne (Tarandíne)
+ * @author Joetaras
+ */
+$messages['roa-tara'] = array(
+ 'vector' => 'Miglioramende UI pe Vector',
+ 'vector-desc' => "Migliore l'elemende de l'inderfacce utende d'a schermate Vector.",
+ 'vector-collapsiblenav-preference' => "Abbilete 'a chiusure de le artichele jndr'à 'u menu de navigazione sus a 'u skin Vector",
+ 'vector-collapsiblenav-more' => 'Cchiù linguagge',
+ 'vector-editwarning-warning' => 'Assenne da sta pàgene tu puè perdè tutte le date ca è cangiate.
+Ce tu è trasute, tu puè disabbilità st\'avvertimende jndr\'à sezione "Cangiaminde..." de le preferenze tune.',
+ 'vector-editwarning-preference' => "Avvisave quanne jie lasse 'na pàgene cangiate senze ca agghie sarvate le cangiaminde",
+ 'vector-simplesearch-search' => 'Cirche',
+ 'vector-simplesearch-containing' => 'tène...',
+ 'vector-noexperiments-preference' => 'Escludeme da le funziune sperimendale',
+);
+
+/** Russian (РуÑÑкий)
+ * @author G0rn
+ * @author MaxSem
+ * @author ÐлекÑандр Сигачёв
+ */
+$messages['ru'] = array(
+ 'vector' => 'Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð¸Ñ Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñа Ð´Ð»Ñ Ñ‚ÐµÐ¼Ñ‹ «Векторное»',
+ 'vector-desc' => 'Ð£Ð»ÑƒÑ‡ÑˆÐµÐ½Ð¸Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÑŒÑкого интерфейÑа Ð´Ð»Ñ Ñ‚ÐµÐ¼Ñ‹ Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Â«Ð’ÐµÐºÑ‚Ð¾Ñ€Ð½Ð¾ÐµÂ»',
+ 'vector-collapsiblenav-preference' => 'Разрешить Ñворачивать блоки в левом меню в теме «Векторное»',
+ 'vector-collapsiblenav-more' => 'Больше Ñзыков',
+ 'vector-editwarning-warning' => 'Переход на другую Ñтраницу может привеÑти к потере Ñделанных вами изменений.
+ЕÑли вы зарегиÑтрированы в ÑиÑтеме, то вы можете отключить Ñто предупреждение в разделе «Редактирование» ваших наÑтроек.',
+ 'vector-editwarning-preference' => 'Предупреждать, когда Ñ Ð¿Ð¾ÐºÐ¸Ð´Ð°ÑŽ Ñтраницу Ñ Ð½ÐµÑохранёнными изменениÑми',
+ 'vector-simplesearch-search' => 'ПоиÑк',
+ 'vector-simplesearch-containing' => 'Ñодержащие…',
+ 'vector-noexperiments-preference' => 'Ðе предлагать ÑкÑпериментальные возможноÑти',
+);
+
+/** Rusyn (РуÑиньÑкый)
+ * @author Gazeb
+ */
+$messages['rue'] = array(
+ 'vector' => 'Ð—Ð´Ð¾ÐºÐ¾Ð½Ð°Ð»Ñ—Ð½Ñ Ñ…Ð¾ÑновательÑкого інтерфейÑу про Вектор',
+ 'vector-desc' => 'Здоконалює елементы хоÑновательÑкого інтерфейÑу Вектор.',
+ 'vector-collapsiblenav-preference' => 'Поволити згортати положкы навіґачного меню во взглÑдї «Векторне»',
+ 'vector-collapsiblenav-more' => 'Іншы Ñзыкы',
+ 'vector-editwarning-warning' => 'Переход на іншу Ñторінку запричінить Ñтрату вашых змін.
+Покы Ñьте {{GENDER:|приголошеный|приголошена|приголошены}}, можете Ñобі тото Ð²Ð°Ñ€Ð¾Ð²Ð°Ð½Ñ Ð²Ñ‹Ð¿Ð½ÑƒÑ‚Ð¸ на заложцї „ЕдітованÑ“ в хоÑновательÑкім наÑтавлїню.',
+ 'vector-editwarning-preference' => 'Упозорнити нÑ, кідь буду опущати Ñторінку без ÑƒÐ»Ð¾Ð¶Ñ–Ð½Ñ Ð·Ð¼Ñ–Ð½',
+ 'vector-simplesearch-search' => 'ГлÑдати',
+ 'vector-simplesearch-containing' => 'обÑÑгуючій...',
+);
+
+/** Yakut (Саха тыла)
+ * @author HalanTul
+ */
+$messages['sah'] = array(
+ 'vector' => '"Вектор" диÑн тиÑмÑни тупÑарар',
+ 'vector-desc' => 'Вектор диÑн тиÑÐ¼Ñ Ñ‚ÑƒÑ‚Ñ‚Ð°Ñ€ интерфейÑын тупÑарыы',
+ 'vector-collapsiblenav-preference' => 'Вектор тиÑÐ¼Ñ Ñ…Ð°Ò¥Ð°Ñ Ð¼ÐµÐ½ÑŽÑ‚ÑƒÐ³Ð°Ñ€ блоктары куччатары (Ñворачивание) көҥүллүүргÑ',
+ 'vector-collapsiblenav-more' => 'Ó¨ÑÑÓ© тыллар',
+ 'vector-editwarning-warning' => 'Ðтын ÑирÑÐ¹Ð³Ñ ÐºÓ©ÑÑ‚Ó©Ñ…Ñ…Ò¯Ð½Ñ Ð±Ð¸Ð»Ð¸Ð³Ð¸Ð½ оҥорбут уларытыыларыҥ барыта ÑүтÑн хаалыахтара.
+БÑлиÑÑ‚Ñммит буоллаҕына, бу ÑÑÑ€Ñтиини туруорууларыҥ «Уларытыы» ÑирÑйигÑÑ€ араарыаххын Ñөп.',
+ 'vector-editwarning-preference' => 'ЭрÑдÑÑкÑийÑлиир ÑирÑйтÑн уларытыыларбын бигÑргÑппÑÐºÐºÑ Ñ‚Ð°Ñ…Ñаары гыннахпына ÑÑÑ€ÑÑ‚ÑÑÑ€',
+ 'vector-simplesearch-search' => 'Көрдөөһүн',
+ 'vector-simplesearch-containing' => 'тыл баар Ñ‹Ñтатыйалара...',
+ 'vector-noexperiments-preference' => 'ЭÑпÑримиÑн быһыытынан бÑриллÑÑ€ кыахтары туһаммат гын',
+);
+
+/** Sardinian (Sardu)
+ * @author Andria
+ */
+$messages['sc'] = array(
+ 'vector-simplesearch-search' => 'Chirca',
+);
+
+/** Sicilian (Sicilianu) */
+$messages['scn'] = array(
+ 'vector-simplesearch-search' => 'Ricerca',
+);
+
+/** Sinhala (සිංහල)
+ * @author Budhajeewa
+ * @author Calcey
+ * @author තඹරු විජේසේකර
+ * @author බිඟුවà·
+ */
+$messages['si'] = array(
+ 'vector' => 'දෛà·à·’ක සඳහ෠UI දියුණු කිරීම්',
+ 'vector-desc' => 'දෛà·à·’ක පෘෂ්ඨයේ පරිà·à·“ලක අතුරු මුහුණත් මූලිකà·à¶‚ග මත දියුණු කරයි',
+ 'vector-collapsiblenav-preference' => 'Vector ඡවියේ ගමන්කෙරුම් මෙනුවේ අංග à·„à·à¶šà·’ළුම සක්â€à¶»à·“ය කරයි',
+ 'vector-collapsiblenav-more' => 'තවත් භà·à·‚à·à·€à¶±à·Š',
+ 'vector-editwarning-warning' => 'අවධà·à¶±à¶ºà¶§: මෙම පිටුවෙන් නික්ම යà·à¶¸ ඔබ සිදු කළ වෙනස්කම් නà·à¶­à·’වී යෑමට හේතු විය à·„à·à¶š.
+ඔබ ප්â€à¶»à·€à·’ෂ්ටවී ඇත්නම්, ඔබගේ වරණයන්වල "සංසකරණය කිරීම්" කොටසේ ඇති මෙම අනතුරු ඇඟවීම අක්â€à¶»à·“ය කළ à·„à·à¶š.',
+ 'vector-editwarning-preference' => 'ම෠සංස්කරණ පිටුවක් සුරකිනු නොලà·à¶¶à·– වෙනස්කිරීම් සමඟ අතහà·à¶» යන විට අවවà·à¶¯ කරන්න',
+ 'vector-simplesearch-search' => 'ගවේà·à¶«à¶º කරන්න',
+ 'vector-simplesearch-containing' => 'ඇතුළත් වෙමින් පවතී...',
+);
+
+/** Slovak (SlovenÄina)
+ * @author Helix84
+ */
+$messages['sk'] = array(
+ 'vector' => 'Vylepšenia použ. rozhrania Vector',
+ 'vector-desc' => 'Vylepšuje prvky používateľského rozhrania témy vzhľady Vector',
+ 'vector-collapsiblenav-preference' => 'PovoliÅ¥ zbaľovanie položiek v navigaÄnom menu v téme vzhľadu Vector',
+ 'vector-collapsiblenav-more' => 'Ďalšie jazyky',
+ 'vector-editwarning-warning' => 'Ak opustíte túto stránku, môžete tým stratiť všetky vykonané zmeny.
+Ak ste prihlásený, toto upozornenie môžete vypnúť v sekcii „Úpravy“ svojich nastavení.',
+ 'vector-editwarning-preference' => 'UpozorniÅ¥ ma, keÄ opúšťam upravovaciu stránku s neuloženými zmenami',
+ 'vector-simplesearch-search' => 'Hľadať',
+ 'vector-simplesearch-containing' => 'obsahuje...',
+ 'vector-noexperiments-preference' => 'VylúÄiÅ¥ ma z budúcich experimentov',
+);
+
+/** Slovenian (SlovenÅ¡Äina)
+ * @author Dbc334
+ */
+$messages['sl'] = array(
+ 'vector' => 'Izboljšave uporabniškega vmesnika za Vector',
+ 'vector-desc' => 'Izboljšave elementov uporabniškega vmesnika kože Vector.',
+ 'vector-collapsiblenav-preference' => 'OmogoÄi zlaganje vnosov v navigacijskem meniju v koži Vector',
+ 'vector-collapsiblenav-more' => 'VeÄ jezikov',
+ 'vector-editwarning-warning' => 'ZapuÅ¡Äanje te strani lahko povzroÄi izgubo vseh sprememb, ki ste jih naredili.
+To opozorilo lahko onemogoÄite v razdelku »Urejanje« svojih nastavitev.',
+ 'vector-editwarning-preference' => 'Opozori me, ko skušam zapreti urejevalno polje z neshranjenimi spremembami',
+ 'vector-simplesearch-search' => 'Iskanje',
+ 'vector-simplesearch-containing' => 'vsebujoÄ ...',
+ 'vector-noexperiments-preference' => 'IzkljuÄi me iz prihodnjih preizkusov',
+);
+
+/** Somali (Soomaaliga)
+ * @author Maax
+ */
+$messages['so'] = array(
+ 'vector-simplesearch-search' => 'Raadi',
+);
+
+/** Albanian (Shqip)
+ * @author Mikullovci11
+ * @author Olsi
+ */
+$messages['sq'] = array(
+ 'vector' => 'Përmirësime UI për Vector',
+ 'vector-desc' => 'Përmirësime në elementet e ndërfaqes së përdoruesit të pamjes Vector.',
+ 'vector-collapsiblenav-preference' => 'Aktivizoni mbylljen e artikujve në menunë e navigimit në pamjen Vector',
+ 'vector-collapsiblenav-more' => 'Gjuhët tjera',
+ 'vector-editwarning-warning' => 'Lënia e kësaj faqeje mund t\'ju shkaktojë humbjen e çdo ndryshimi që keni bërë.
+Nëse keni hyrë brenda, ju mund ta hiqni këtë paralajmërim në seksionin "Redaktimi" tek preferencat tuaja.',
+ 'vector-editwarning-preference' => 'Më paralajmëro kur unë lë një redaktim faqeje me ndryshime të paruajtura',
+ 'vector-simplesearch-search' => 'Kërko',
+ 'vector-simplesearch-containing' => 'përmban ...',
+);
+
+/** Serbian Cyrillic ekavian (‪СрпÑки (ћирилица)‬)
+ * @author Helios13
+ * @author Rancher
+ * @author Жељко Тодоровић
+ */
+$messages['sr-ec'] = array(
+ 'vector' => 'Побољшања кориÑничког интерфејÑа за вектор',
+ 'vector-desc' => 'Побољшава кориÑничке елементе Ñучеља за преÑвлаку Вектор.',
+ 'vector-collapsiblenav-preference' => 'Скупљање Ñтавки навигационог менија у Vector преÑвлаци',
+ 'vector-collapsiblenav-more' => 'Још језика:',
+ 'vector-editwarning-warning' => 'Ðко напуÑтите ову Ñтраницу, изгубићете Ñве измене које Ñте направили.
+Ðко Ñте пријављени, можете онемогућити ово упозорење у Ñвојим подешавањима, у одељку „Уређивање“.',
+ 'vector-editwarning-preference' => 'Упозори ме када напуÑтим Ñтраницу која није Ñачувана',
+ 'vector-simplesearch-search' => 'Претрага',
+ 'vector-simplesearch-containing' => 'Ñадржи...',
+);
+
+/** Serbian Latin ekavian (‪Srpski (latinica)‬)
+ * @author Liangent
+ */
+$messages['sr-el'] = array(
+ 'vector-collapsiblenav-more' => 'Još jezika:',
+ 'vector-editwarning-preference' => 'Upozori me kada napustim stranicu sa nesaÄuvanim promenama',
+ 'vector-simplesearch-search' => 'Pretraga',
+ 'vector-simplesearch-containing' => 'sadrži...',
+);
+
+/** Sundanese (Basa Sunda)
+ * @author Kandar
+ */
+$messages['su'] = array(
+ 'vector-collapsiblenav-more' => 'Basa lianna',
+ 'vector-editwarning-preference' => 'Béjaan kuring lamun ninggalkeun kaca édit anu parobahanana can disimpen',
+ 'vector-simplesearch-search' => 'Sungsi',
+ 'vector-simplesearch-containing' => 'ngandung...',
+);
+
+/** Swedish (Svenska)
+ * @author Ainali
+ * @author Boivie
+ * @author MagnusA
+ */
+$messages['sv'] = array(
+ 'vector' => 'Användargränssnittsförbättringar för Vector',
+ 'vector-desc' => 'Förbättrar element i användargränssnittet för Vector-utseendet.',
+ 'vector-collapsiblenav-preference' => 'Aktivera hopfällning av poster i navigeringsmenyn i Vector-utseendet',
+ 'vector-collapsiblenav-more' => 'Fler språk',
+ 'vector-editwarning-warning' => 'Om du lämnar den här sidan kommer du att förlora alla ändringar du har gjort.
+Om du är inloggad kan du slå av den här varningen under "Redigering" i dina inställningar.',
+ 'vector-editwarning-preference' => 'Varna mig om jag lämnar en redigeringssida där jag gjort ändringar men inte sparat.',
+ 'vector-simplesearch-search' => 'Sök',
+ 'vector-simplesearch-containing' => 'innehåller...',
+ 'vector-noexperiments-preference' => 'Uteslut mig från funktionsexperiment',
+);
+
+/** Swahili (Kiswahili)
+ * @author Lloffiwr
+ * @author Muddyb Blast Producer
+ */
+$messages['sw'] = array(
+ 'vector' => 'Mabadiliko ya kuendeleza kusano ya Vector',
+ 'vector-desc' => 'Inaboresha kusano kwa ajili ya watumiaji wa umbo la Vector.',
+ 'vector-collapsiblenav-preference' => 'Kuwezesha vitu vikunjike katika orodha ya urambazaji, katika umbo la Vector',
+ 'vector-collapsiblenav-more' => 'Lugha zingine',
+ 'vector-editwarning-warning' => 'Ukitoka kwenye ukurasa huu labda utapoteza madabiliko uliyoyafanya.
+Unaweza kuondoa ilani hii ukienda kwenye sehemu ya "Kuhariri" kwenye mapendekezo yako.',
+ 'vector-editwarning-preference' => 'Unionyeshe ilani ninapotaka kutoka kwenye ukurasa ninouhariri, bila kuhifadhi mabadiliko',
+ 'vector-simplesearch-search' => 'Kutafuta',
+ 'vector-simplesearch-containing' => 'ya maneno...',
+);
+
+/** Tamil (தமிழà¯)
+ * @author Sodabottle
+ * @author TRYPPN
+ */
+$messages['ta'] = array(
+ 'vector-collapsiblenav-more' => 'மேலà¯à®®à¯ அதிகமான மொழிகளà¯',
+ 'vector-editwarning-preference' => 'தொகà¯à®¤à¯à®¤à¯à®•à¯ கொணà¯à®Ÿà®¿à®°à¯à®•à¯à®•à¯à®®à¯ பகà¯à®•à®¤à¯à®¤à¯ˆ சேமிகà¯à®•à®¾à®®à®²à¯ வெளியேறினால௠எனகà¯à®•à¯ எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ செயà¯',
+ 'vector-simplesearch-search' => 'தேடà¯',
+);
+
+/** Telugu (తెలà±à°—à±)
+ * @author Veeven
+ */
+$messages['te'] = array(
+ 'vector' => 'వెకà±à°Ÿà°°à± కొరకౠమà±à°–ాంతరపౠమెరà±à°—à±à°²à±',
+ 'vector-collapsiblenav-more' => 'మరినà±à°¨à°¿ భాషలà±',
+ 'vector-editwarning-warning' => 'à°ˆ పేజీని వదిలివెళà±à°³à°¡à°‚ వలà±à°² మీరౠచేసిన మారà±à°ªà±à°²à°¨à± కోలà±à°ªà±‹à°¯à±‡ అవకాశం ఉంది.
+మీరౠపà±à°°à°µà±‡à°¶à°¿à°‚à°šà°¿à°µà±à°‚టే, à°ˆ హెచà±à°šà°°à°¿à°•à°¨à°¿ మీ à°…à°­à°¿à°°à±à°šà±à°²à°²à±‹ "మరపà±à°²à±" అనే విభాగంలో అచేతనం చేసà±à°•à±‹à°µà°šà±à°šà±.',
+ 'vector-editwarning-preference' => 'à°à°¦à±ˆà°¨à°¾ పేజీని నేనౠవదిలివెళà±à°¤à±à°¨à±à°¨à°ªà±à°ªà±à°¡à± దానిలో à°­à°¦à±à°°à°ªà°°à°šà°¨à°¿ మారà±à°ªà±à°²à± ఉంటే ననà±à°¨à± హెచà±à°šà°°à°¿à°‚à°šà±',
+ 'vector-simplesearch-search' => 'వెతà±à°•à±',
+);
+
+/** Thai (ไทย)
+ * @author Horus
+ * @author Octahedron80
+ * @author Woraponboonkerd
+ */
+$messages['th'] = array(
+ 'vector-desc' => 'ข้อปรับปรุงองค์ประà¸à¸­à¸šà¸­à¸´à¸™à¹€à¸•à¸­à¸£à¹Œà¹€à¸Ÿà¸‹à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‚องสà¸à¸´à¸™à¹€à¸§à¸à¹€à¸•à¸­à¸£à¹Œ',
+ 'vector-collapsiblenav-preference' => 'ใช้งานà¸à¸²à¸£à¸¢à¹ˆà¸­à¸£à¸²à¸¢à¸à¸²à¸£à¸‚องเมนูนำทางในสà¸à¸´à¸™à¹€à¸§à¸à¹€à¸•à¸­à¸£à¹Œ',
+ 'vector-collapsiblenav-more' => 'ภาษาอื่นๆ',
+ 'vector-editwarning-warning' => 'à¸à¸²à¸£à¸­à¸­à¸à¸ˆà¸²à¸à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¸­à¸²à¸ˆà¸—ำให้ความเปลี่ยนà¹à¸›à¸¥à¸‡à¸—ี่คุณà¸à¸£à¸°à¸—ำสูà¸à¸«à¸²à¸¢
+ถ้าคุณล็อà¸à¸­à¸´à¸™à¹à¸¥à¹‰à¸§ คุณสามารถปิดคำเตือนนี้ได้ที่ส่วน "à¸à¸²à¸£à¹à¸à¹‰à¹„ข" ในà¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าของคุณ',
+ 'vector-editwarning-preference' => 'เตือนฉัน เมื่อฉันà¸à¸³à¸¥à¸±à¸‡à¸ˆà¸°à¸­à¸­à¸à¸ˆà¸²à¸à¸«à¸™à¹‰à¸²à¹à¸à¹‰à¹„ขโดยมีข้อมูลที่ยังไม่ได้บันทึà¸',
+ 'vector-simplesearch-search' => 'ค้นหา',
+ 'vector-simplesearch-containing' => 'ประà¸à¸­à¸šà¹„ปด้วย...',
+);
+
+/** Turkmen (Türkmençe)
+ * @author Hanberke
+ */
+$messages['tk'] = array(
+ 'vector' => 'Vector üçin interfeýs gowulandyrmalary',
+ 'vector-collapsiblenav-more' => 'Has köp dil',
+ 'vector-simplesearch-search' => 'Gözleg',
+ 'vector-simplesearch-containing' => 'öz içine alýar...',
+);
+
+/** Tagalog (Tagalog)
+ * @author AnakngAraw
+ */
+$messages['tl'] = array(
+ 'vector' => 'Mga pagpapainam na UI para sa Vector',
+ 'vector-desc' => 'Nagpapainam sa mga sangkap ng dugtungang-mukha na pangtatagamit ng pabalat ng Vector.',
+ 'vector-collapsiblenav-preference' => 'Paganahin ang pagkanatitiklop ng mga bagay na nasa loob ng talaang panglibot sa loob ng pabalat na Vector',
+ 'vector-collapsiblenav-more' => 'Iba pang mga wika',
+ 'vector-editwarning-warning' => 'Ang paglisan mula sa pahinang ito ay maaaring makasanhi sa iyo ng pagkawala ng anumang mga pagbabagong ginawa mo.
+Kung nakalagda ka, maaari mong huwag paganahin ang babalang ito sa loob ng seksyong "May binabago" ng mga nais mo.',
+ 'vector-editwarning-preference' => 'Magbabala sa akin kapag umalis ako sa isang pahina ng pampatnugot na hindi pa nasasagip ang mga pagbabago',
+ 'vector-simplesearch-search' => 'Maghanap',
+ 'vector-simplesearch-containing' => 'naglalaman ng ...',
+ 'vector-noexperiments-preference' => 'Huwag akong isali sa tampok na mga eksperimento',
+);
+
+/** Turkish (Türkçe)
+ * @author Karduelis
+ * @author Srhat
+ * @author Vito Genovese
+ */
+$messages['tr'] = array(
+ 'vector' => 'Vector için kullanıcı arabirimi iyileştirmeleri',
+ 'vector-desc' => 'Vector görünümünün kullanıcı arayüzü bileşenlerini iyileştirir',
+ 'vector-collapsiblenav-preference' => 'Vector temasında dolaşım menüsündeki ögelerin daraltılmasını etkinleştir',
+ 'vector-collapsiblenav-more' => 'Daha fazla dil',
+ 'vector-editwarning-warning' => 'Bu sayfadan ayrılmak yaptığınız herhangi bir değişikliği kaybetmenize sebep olabilir.
+Eğer giriş yaptıysanız, bu uyarıyı, tercihlerinizin "Sayfa yazma alanı" bölümünde devre dışı bırakabilirsiniz.',
+ 'vector-editwarning-preference' => 'Kaydedilmemiş değişikliğe sahip bir değişiklik sayfasından çıkarken beni uyar',
+ 'vector-simplesearch-search' => 'Ara',
+ 'vector-simplesearch-containing' => 'içeren...',
+);
+
+/** Tatar (Cyrillic) (Татарча/Tatarça (Cyrillic))
+ * @author Ильнар
+ */
+$messages['tt-cyrl'] = array(
+ 'vector' => '«Сызымлы» бизәлеше өчен Ñңартулар',
+ 'vector-collapsiblenav-preference' => '«Сызымлы» бизәлеше өчен Ñул менюдагы блокларны Ñбарга Ñ€Ó©Ñ…Ñәт итү',
+ 'vector-collapsiblenav-more' => 'Башка телләр',
+ 'vector-editwarning-warning' => 'Башка биткә күчү вакытында бу мәкаләгә керткән үзгәрешләр югалырга мөмкин.
+Әгәрдә Ñез теркәлгән булÑагыз, бу иÑкәрмәне Ñез «Көйләнмәләрем» өлешендә үзгәртә алаÑыз.',
+ 'vector-editwarning-preference' => 'Битне Ñакламыйча китү вакытында мине киÑәтергә',
+ 'vector-simplesearch-search' => 'Эзләү',
+ 'vector-simplesearch-containing' => 'Ñчтәлек...',
+);
+
+/** Ukrainian (УкраїнÑька)
+ * @author AS
+ * @author Microcell
+ * @author Prima klasy4na
+ */
+$messages['uk'] = array(
+ 'vector' => 'УдоÑÐºÐ¾Ð½Ð°Ð»ÐµÐ½Ð½Ñ Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñу кориÑтувача за допомогою «векторного» оформленнÑ',
+ 'vector-desc' => 'Покращує елементи інтерфейÑу кориÑтувача за допомогою «векторного» оформленнÑ.',
+ 'vector-collapsiblenav-preference' => 'Дозволити згортати блоки навігаційного меню в оформленні «Векторне»',
+ 'vector-collapsiblenav-more' => 'Інші мови',
+ 'vector-editwarning-warning' => 'Перехід на іншу Ñторінку призведе до втрати ваших змін.
+Якщо ви ввійшли до ÑиÑтеми, то ви можете відключити це Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð² розділі «РедагуваннÑ» ваших налаштувань.',
+ 'vector-editwarning-preference' => 'Попереджати мене, коли Ñ Ð¿Ð¾ÐºÐ¸Ð´Ð°ÑŽ Ñторінку Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð· незбереженими змінами',
+ 'vector-simplesearch-search' => 'Пошук',
+ 'vector-simplesearch-containing' => 'що міÑÑ‚ÑÑ‚ÑŒ...',
+ 'vector-noexperiments-preference' => 'ВідмовитиÑÑŒ від Ð²Ð¸Ð¿Ñ€Ð¾Ð±ÑƒÐ²Ð°Ð½Ð½Ñ Ñ‚ÐµÑ…Ð½Ñ–Ñ‡Ð½Ð¸Ñ… екÑпериментів',
+);
+
+/** Vèneto (Vèneto)
+ * @author Candalua
+ * @author Vajotwo
+ */
+$messages['vec'] = array(
+ 'vector' => 'Mejoramenti de interfacia utente (UI) par el Vector.',
+ 'vector-desc' => "Mejora l'interfacia utente del tema Vector.",
+ 'vector-collapsiblenav-preference' => 'Abiłita menù de navigaxion nascondibiłe par ła skin Vector',
+ 'vector-collapsiblenav-more' => 'Pì łengue',
+ 'vector-editwarning-warning' => 'Se te vè via da sta pagina te podaressi pèrdar tute le modìfeghe che te ghè fato.
+Se te sì loggà, te poli disabilitar sto aviso in te la sezion "Dimension de la casela de modifica" de le to preferense.',
+ 'vector-editwarning-preference' => 'Dime se sto lassando na pagina de modifica sensa aver salvà',
+ 'vector-simplesearch-search' => 'Serca',
+ 'vector-simplesearch-containing' => 'che contien...',
+);
+
+/** Veps (Vepsan kel') */
+$messages['vep'] = array(
+ 'vector-simplesearch-search' => 'Ectä',
+ 'vector-simplesearch-containing' => 'mülütajad...',
+);
+
+/** Vietnamese (Tiếng Việt)
+ * @author Minh Nguyen
+ * @author Vinhtantran
+ */
+$messages['vi'] = array(
+ 'vector' => 'Giao diện tích hợp với Vectơ',
+ 'vector-desc' => 'Hoàn thiện các phần giao diện để tích hợp với hình dạng Vectơ',
+ 'vector-collapsiblenav-preference' => 'Bật trình đơn chuyển hướng gấp lại được ở bên phải trong bỠngoài Vectơ',
+ 'vector-collapsiblenav-more' => 'Thêm ngôn ngữ khác',
+ 'vector-editwarning-warning' => 'Rá»i khá»i trang này sẽ khiến bạn mất các sá»­a đổi đã thá»±c hiện.
+Nếu đã đăng nhập, bạn có thể tắt cảnh báo này tại mục “Sá»­a đổi†trong tùy chá»n cá nhân.',
+ 'vector-editwarning-preference' => 'Cảnh báo khi tôi thoát trang sửa đổi mà chưa lưu trang',
+ 'vector-simplesearch-search' => 'Tìm kiếm',
+ 'vector-simplesearch-containing' => 'có chứa…',
+ 'vector-noexperiments-preference' => 'Loại trừ tôi khá»i các thí nghiệm tính năng',
+);
+
+/** Volapük (Volapük)
+ * @author Malafaya
+ */
+$messages['vo'] = array(
+ 'vector-collapsiblenav-more' => 'Püks pluik',
+ 'vector-simplesearch-search' => 'Suk',
+ 'vector-simplesearch-containing' => 'ninädöl...',
+);
+
+/** Mingrelian (მáƒáƒ áƒ’áƒáƒšáƒ£áƒ áƒ˜) */
+$messages['xmf'] = array(
+ 'vector-simplesearch-search' => 'გáƒáƒ áƒ£áƒ',
+);
+
+/** Yiddish (ייִדיש)
+ * @author פוילישער
+ */
+$messages['yi'] = array(
+ 'vector' => 'ב×ַניצער־×ויבערפֿל×ַך פֿ×ַרבעסערונגען פֿ×ַר וועקט×ר',
+ 'vector-desc' => 'פֿ×ַרבעסערט ×“×¢× ×‘×ניצער ×ויבערפֿל×ַך פֿ×ַר דער וועקט×ר ווײַזונג.',
+ 'vector-collapsiblenav-preference' => '×ַקטיווירן צונויפֿלייגן ×יינהייטן ××™× ×¢× × ×ַוויג×ַציע מעניו ×ין ×“×¢× ×•×•×¢×§×˜×ר געשטעל',
+ 'vector-collapsiblenav-more' => '× ×ך שפר×ַכן',
+ 'vector-editwarning-warning' => '×יבערל×זן ×“×¢× ×‘×œ×ט קען ×’×•×¨× ×–×²Ö·×Ÿ פֿ×רלירן ×ײַערע ענדערונגען.
+×ויב ×יר זענט ×רײַנל×גירט, קענט ×יר מבטל זײַן די ד××–×™×’×¢ וו×רענונג ×ין דער "ב××רבעטן" ×פטיילונג פון ×ײַערע פרעפערענצן.',
+ 'vector-editwarning-preference' => 'שטעלן × ×•×•×רענונג ווען ×יך ל××– ×יבער × ×¨×¢×“×קטירונג בל×ט מיט נישט ×ויפגעהיטענע ענדערונגען',
+ 'vector-simplesearch-search' => 'זוכן',
+ 'vector-simplesearch-containing' => 'כולל…',
+);
+
+/** Yoruba (Yorùbá)
+ * @author Demmy
+ */
+$messages['yo'] = array(
+ 'vector' => 'Àwá»n ìmúdára UI fún Vector',
+ 'vector-collapsiblenav-more' => 'Àwá»n èdè lẹÌkùúnrẹÌrẹÌ',
+ 'vector-editwarning-warning' => 'Kíkúrò ní ojúewé yìí yíò jáº¹Ì kí ẹ pòfo àwá»n àtúná¹£e tí ẹ ti á¹£e.
+Tó bá jáº¹Ì pé ẹ ti wá»lé, ẹ lè dẹÌkun ìkìlá»Ì€ yìí nínù abala "Àtúná¹£e ṣíṣe" ti àwá»n ìfẹÌràn yín.',
+ 'vector-editwarning-preference' => 'Kìlá»Ì€ fún mi tí mo bá únkúrò ní ojúewé àtúná¹£e láì tíì mupamá»Ì',
+ 'vector-simplesearch-search' => 'Ṣàwárí',
+ 'vector-simplesearch-containing' => 'tó ní...',
+);
+
+/** Cantonese (粵語)
+ * @author Horacewai2
+ * @author Waihorace
+ */
+$messages['yue'] = array(
+ 'vector' => 'å°æ–¼Vector嘅界é¢æ”¹é€²',
+ 'vector-desc' => '改進Vectorç•«é¢å˜…ç•Œé¢å…ƒç´ ã€‚',
+ 'vector-collapsiblenav-preference' => '用å¯æŠ˜ç–Šå°Žèˆªåˆ—',
+ 'vector-collapsiblenav-more' => '更多語言',
+ 'vector-editwarning-warning' => '離開呢一版會令到你嘅修改唔見咗。
+ä½ å¯ä»¥éŸ¿ä½ å˜…喜好設定嘅"編輯中"å°ç¯€åº¦åœç”¨å‘¢å€‹è­¦å‘Šã€‚',
+ 'vector-editwarning-preference' => '當我離開未ä¿å­˜å¥½å˜…修改嗰陣警告我',
+ 'vector-simplesearch-search' => 'æµå˜¢',
+ 'vector-simplesearch-containing' => 'å單傳é€ç·Š...',
+);
+
+/** Simplified Chinese (‪中文(简体)‬)
+ * @author Bencmq
+ * @author Liangent
+ * @author Onecountry
+ * @author 阿pp
+ */
+$messages['zh-hans'] = array(
+ 'vector' => 'Vector用户界é¢æ”¹è¿›',
+ 'vector-desc' => '改进Vector皮肤中的用户界é¢å…ƒç´ ã€‚',
+ 'vector-collapsiblenav-preference' => '在Vector皮肤的导航èœå•ä¸­æŠ˜å é¡¹ç›®',
+ 'vector-collapsiblenav-more' => '更多语言',
+ 'vector-editwarning-warning' => '离开这个页é¢å¯èƒ½ä¼šä»¤æ‚¨å¤±åŽ»ä¹‹å‰çš„所有更改。
+若您已ç»ç™»å…¥ï¼Œæ‚¨å¯åœ¨æ‚¨å‚数设置的“{{int:prefs-editing}}â€èŠ‚中关闭此警告。',
+ 'vector-editwarning-preference' => '如在更改未ä¿å­˜æ—¶ç¦»å¼€é¡µé¢ï¼Œåˆ™å‘出警告',
+ 'vector-simplesearch-search' => 'æœç´¢',
+ 'vector-simplesearch-containing' => 'å«æœ‰...',
+ 'vector-noexperiments-preference' => '功能实验中排除我',
+);
+
+/** Traditional Chinese (‪中文(ç¹é«”)‬)
+ * @author Gaoxuewei
+ * @author Liangent
+ * @author Mark85296341
+ * @author Wrightbus
+ */
+$messages['zh-hant'] = array(
+ 'vector' => 'Vector 使用者介é¢æ”¹é€²',
+ 'vector-desc' => '改進 Vector 外觀中的使用者介é¢å…ƒç´ ã€‚',
+ 'vector-collapsiblenav-preference' => '在 Vector 外觀的導覽é¸å–®ä¸­æ‘ºç–Šé …ç›®',
+ 'vector-collapsiblenav-more' => '更多語言',
+ 'vector-editwarning-warning' => '離開這個é é¢å¯èƒ½æœƒä»¤æ‚¨å¤±åŽ»ä¹‹å‰çš„所有更改。
+若您已經登入,您å¯åœ¨æ‚¨å好設定的「編輯ã€ç¯€ä¸­é—œé–‰æ­¤è­¦å‘Šã€‚',
+ 'vector-editwarning-preference' => '當我在更改未儲存時離開é é¢æ™‚警告我',
+ 'vector-simplesearch-search' => 'æœå°‹',
+ 'vector-simplesearch-containing' => '包å«...',
+ 'vector-noexperiments-preference' => '我ä¸åƒèˆ‡åŠŸèƒ½å¯¦éšª',
+);
+
diff --git a/extensions/Vector/Vector.php b/extensions/Vector/Vector.php
new file mode 100644
index 00000000..1d7eefdf
--- /dev/null
+++ b/extensions/Vector/Vector.php
@@ -0,0 +1,131 @@
+<?php
+/**
+ * Vector extension
+ *
+ * @file
+ * @ingroup Extensions
+ *
+ * @author Trevor Parscal <trevor@wikimedia.org>
+ * @author Roan Kattouw <roan.kattouw@gmail.com>
+ * @author Nimish Gautam <nimish@wikimedia.org>
+ * @author Adam Miller <amiller@wikimedia.org>
+ * @license GPL v2 or later
+ * @version 0.3.0
+ */
+
+/* Configuration */
+
+// Each module may be configured individually to be globally on/off or user preference based
+$wgVectorFeatures = array(
+ 'collapsiblenav' => array( 'global' => true, 'user' => true ),
+ 'collapsibletabs' => array( 'global' => true, 'user' => false ),
+ 'editwarning' => array( 'global' => false, 'user' => true ),
+ 'simplesearch' => array( 'global' => false, 'user' => true ),
+ // The follwing are experimental and likely unstable - use at your own risk
+ 'expandablesearch' => array( 'global' => false, 'user' => false ),
+ 'footercleanup' => array( 'global' => false, 'user' => false ),
+ 'sectioneditlinks' => array( 'global' => false, 'user' => false ),
+);
+
+// The Vector skin has a basic version of simple search, which is a prerequisite for the enhanced one
+$wgDefaultUserOptions['vector-simplesearch'] = 1;
+
+// Enable bucket testing for new version of collapsible nav
+$wgCollapsibleNavBucketTest = false;
+// Force the new version
+$wgCollapsibleNavForceNewVersion = false;
+
+// Enable bucket testing for new version of section edit links
+$wgVectorSectionEditLinksBucketTest = false;
+// Percentage of users who's use of section edit links will be tracked - half of which will see the
+// new section edit links - default 5%
+$wgVectorSectionEditLinksLotteryOdds = 5;
+// Version number of the current experiment - Buckets from previous experiments will be overwritten
+// with new values when this is incremented, so as to allow accurate re-distribution. When changing
+// the lottery odds, this needs to change too, or you will have inaccurate data.
+$wgVectorSectionEditLinksExperiment = 0;
+
+/* Setup */
+
+$wgExtensionCredits['other'][] = array(
+ 'path' => __FILE__,
+ 'name' => 'Vector',
+ 'author' => array( 'Trevor Parscal', 'Roan Kattouw', 'Nimish Gautam', 'Adam Miller' ),
+ 'version' => '0.3.0',
+ 'url' => 'http://www.mediawiki.org/wiki/Extension:Vector',
+ 'descriptionmsg' => 'vector-desc',
+);
+$wgAutoloadClasses['VectorHooks'] = dirname( __FILE__ ) . '/Vector.hooks.php';
+$wgExtensionMessagesFiles['Vector'] = dirname( __FILE__ ) . '/Vector.i18n.php';
+$wgHooks['BeforePageDisplay'][] = 'VectorHooks::beforePageDisplay';
+$wgHooks['GetPreferences'][] = 'VectorHooks::getPreferences';
+$wgHooks['ResourceLoaderGetConfigVars'][] = 'VectorHooks::resourceLoaderGetConfigVars';
+$wgHooks['MakeGlobalVariablesScript'][] = 'VectorHooks::makeGlobalVariablesScript';
+
+$vectorResourceTemplate = array(
+ 'localBasePath' => dirname( __FILE__ ) . '/modules',
+ 'remoteExtPath' => 'Vector/modules',
+ 'group' => 'ext.vector',
+);
+$wgResourceModules += array(
+ 'ext.vector.collapsibleNav' => $vectorResourceTemplate + array(
+ 'scripts' => 'ext.vector.collapsibleNav.js',
+ 'styles' => 'ext.vector.collapsibleNav.css',
+ 'messages' => array(
+ 'vector-collapsiblenav-more',
+ ),
+ 'dependencies' => array(
+ 'jquery.client',
+ 'jquery.cookie',
+ 'jquery.tabIndex',
+ ),
+ ),
+ 'ext.vector.collapsibleTabs' => $vectorResourceTemplate + array(
+ 'scripts' => 'ext.vector.collapsibleTabs.js',
+ 'dependencies' => array(
+ 'jquery.collapsibleTabs',
+ 'jquery.delayedBind',
+ ),
+ ),
+ 'ext.vector.editWarning' => $vectorResourceTemplate + array(
+ 'scripts' => 'ext.vector.editWarning.js',
+ 'messages' => array(
+ 'vector-editwarning-warning',
+ ),
+ ),
+ 'ext.vector.expandableSearch' => $vectorResourceTemplate + array(
+ 'scripts' => 'ext.vector.expandableSearch.js',
+ 'styles' => 'ext.vector.expandableSearch.css',
+ 'dependencies' => array(
+ 'jquery.client',
+ 'jquery.expandableField',
+ 'jquery.delayedBind',
+ ),
+ ),
+ 'ext.vector.footerCleanup' => $vectorResourceTemplate + array(
+ 'scripts' => 'ext.vector.footerCleanup.js',
+ 'styles' => 'ext.vector.footerCleanup.css',
+ ),
+ 'ext.vector.sectionEditLinks' => $vectorResourceTemplate + array(
+ 'scripts' => 'ext.vector.sectionEditLinks.js',
+ 'styles' => 'ext.vector.sectionEditLinks.css',
+ 'dependencies' => array(
+ 'jquery.cookie',
+ 'jquery.clickTracking',
+ ),
+ ),
+ 'ext.vector.simpleSearch' => $vectorResourceTemplate + array(
+ 'scripts' => 'ext.vector.simpleSearch.js',
+ 'messages' => array(
+ 'vector-simplesearch-search',
+ 'vector-simplesearch-containing',
+ ),
+ 'dependencies' => array(
+ 'jquery.client',
+ 'jquery.suggestions',
+ 'jquery.autoEllipsis',
+ 'jquery.placeholder',
+ ),
+ ),
+);
+
diff --git a/extensions/Vector/modules/ext.vector.collapsibleNav.css b/extensions/Vector/modules/ext.vector.collapsibleNav.css
new file mode 100644
index 00000000..f11046c9
--- /dev/null
+++ b/extensions/Vector/modules/ext.vector.collapsibleNav.css
@@ -0,0 +1,56 @@
+/* Prototype code to show collapsing left nav options */
+#mw-panel.collapsible-nav div.portal {
+ /* @embed */
+ background-image:url(images/portal-break.png);
+ background-position:left top;
+ background-repeat:no-repeat;
+ padding: 0.25em 0 !important;
+ margin: -11px 9px 10px 11px;
+}
+#mw-panel.collapsible-nav div.portal h5 {
+ color: #4D4D4D;
+ font-weight: normal;
+ /* @embed */
+ background: url(images/open.png) left center no-repeat;
+ padding: 4px 0 3px 1.5em;
+ margin-bottom: 0px;
+}
+#mw-panel.collapsible-nav div.collapsed h5 {
+ color: #0645AD;
+ /* @embed */
+ background: url(images/closed-ltr.png) left center no-repeat;
+ margin-bottom: 0px;
+}
+#mw-panel.collapsible-nav div h5:hover {
+ cursor: pointer;
+ text-decoration: none;
+}
+#mw-panel.collapsible-nav div.collapsed h5:hover {
+ text-decoration: underline;
+}
+#mw-panel.collapsible-nav div.portal div.body {
+ background: none !important;
+ padding-top: 0px;
+ display: none;
+}
+#mw-panel.collapsible-nav div.persistent div.body {
+ display: block;
+}
+#mw-panel.collapsible-nav div.first h5 {
+ display: none;
+}
+#mw-panel.collapsible-nav div.persistent h5 {
+ background: none !important;
+ padding-left: 0.7em;
+ cursor: default;
+}
+#mw-panel.collapsible-nav div.portal div.body ul li {
+ padding: 0.25em 0;
+}
+#mw-panel.collapsible-nav div.first {
+ background-image: none;
+ margin-top: 0px;
+}
+#mw-panel.collapsible-nav div.persistent div.body {
+ margin-left: 0.5em;
+} \ No newline at end of file
diff --git a/extensions/Vector/modules/ext.vector.collapsibleNav.js b/extensions/Vector/modules/ext.vector.collapsibleNav.js
new file mode 100644
index 00000000..9a9b77f7
--- /dev/null
+++ b/extensions/Vector/modules/ext.vector.collapsibleNav.js
@@ -0,0 +1,228 @@
+/*
+ * Collapisble navigation for Vector
+ */
+( function( $ ) {
+
+ /* Browser Support */
+
+ var map = {
+ // Left-to-right languages
+ 'ltr': {
+ // Collapsible Nav is broken in Opera < 9.6 and Konqueror < 4
+ 'msie': [['>=', 7]],
+ 'opera': [['>=', 9.6]],
+ 'konqueror': [['>=', 4.0]],
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false,
+ 'ps3': false
+ },
+ // Right-to-left languages
+ 'rtl': {
+ 'msie': [['>=', 7]],
+ 'opera': [['>=', 9.6]],
+ 'konqueror': [['>=', 4.0]],
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false,
+ 'ps3': false
+ }
+ };
+ if ( !$.client.test( map ) ) {
+ return true;
+ }
+
+ /* Bucket Testing */
+
+ // Fallback to old version
+ var version = 1;
+ // Allow new version override
+ if ( mediaWiki.config.get( 'wgCollapsibleNavForceNewVersion' ) ) {
+ version = 2;
+ } else {
+ // Make bucket testing optional
+ if ( mediaWiki.config.get( 'wgCollapsibleNavBucketTest' ) ) {
+ // This is be determined randomly, and then stored in a cookie
+ version = $.cookie( 'vector-nav-pref-version' );
+ // If the cookie didn't exist, or the value is out of range, generate a new one and save it
+ if ( version == null ) {
+ // 50% of the people will get the new version
+ version = Math.round( Math.random() + 1 );
+ $.cookie( 'vector-nav-pref-version', version, { 'expires': 30, 'path': '/' } );
+ }
+ }
+ }
+
+ /* Special Language Portal Handling */
+
+ // Language portal splitting feature (if it's turned on)
+ if ( version == 2 ) {
+ // How many links to show in the primary languages portal
+ var limit = 5;
+ // How many links there must be in the secondary portal to justify having a secondary portal
+ var threshold = 3;
+ // Make the interwiki language links list a secondary list, and create a new list before it as primary list
+ $( '#p-lang ul' ).addClass( 'secondary' ).before( '<ul class="primary"></ul>' );
+ // This is a list of languages in order of Wikipedia project size. This is the lowest fallback for choosing
+ // which links to show in the primary list. Ideally the browser's accept-language headers should steer this
+ // list, and we should fallback on a site configured (MediaWiki:Common.js) list of prefered languages.
+ var languages = [
+ 'en', 'fr', 'de', 'es', 'pt', 'it', 'ru', 'ja', 'nl', 'pl', 'zh', 'sv', 'ar', 'tr', 'uk', 'fi', 'no', 'ca',
+ 'ro', 'hu', 'ksh', 'id', 'he', 'cs', 'vi', 'ko', 'sr', 'fa', 'da', 'eo', 'sk', 'th', 'lt', 'vo', 'bg',
+ 'sl', 'hr', 'hi', 'et', 'mk', 'simple', 'new', 'ms', 'nn', 'gl', 'el', 'eu', 'ka', 'tl', 'bn', 'lv', 'ml',
+ 'bs', 'te', 'la', 'az', 'sh', 'war', 'br', 'is', 'mr', 'be-x-old', 'sq', 'cy', 'lb', 'ta', 'zh-classical',
+ 'an', 'jv', 'ht', 'oc', 'bpy', 'ceb', 'ur', 'zh-yue', 'pms', 'scn', 'be', 'roa-rup', 'qu', 'af', 'sw',
+ 'nds', 'fy', 'lmo', 'wa', 'ku', 'hy', 'su', 'yi', 'io', 'os', 'ga', 'ast', 'nap', 'vec', 'gu', 'cv',
+ 'bat-smg', 'kn', 'uz', 'zh-min-nan', 'si', 'als', 'yo', 'li', 'gan', 'arz', 'sah', 'tt', 'bar', 'gd', 'tg',
+ 'kk', 'pam', 'hsb', 'roa-tara', 'nah', 'mn', 'vls', 'gv', 'mi', 'am', 'ia', 'co', 'ne', 'fo', 'nds-nl',
+ 'glk', 'mt', 'ang', 'wuu', 'dv', 'km', 'sco', 'bcl', 'mg', 'my', 'diq', 'tk', 'szl', 'ug', 'fiu-vro', 'sc',
+ 'rm', 'nrm', 'ps', 'nv', 'hif', 'bo', 'se', 'sa', 'pnb', 'map-bms', 'lad', 'lij', 'crh', 'fur', 'kw', 'to',
+ 'pa', 'jbo', 'ba', 'ilo', 'csb', 'wo', 'xal', 'krc', 'ckb', 'pag', 'ln', 'frp', 'mzn', 'ce', 'nov', 'kv',
+ 'eml', 'gn', 'ky', 'pdc', 'lo', 'haw', 'mhr', 'dsb', 'stq', 'tpi', 'arc', 'hak', 'ie', 'so', 'bh', 'ext',
+ 'mwl', 'sd', 'ig', 'myv', 'ay', 'iu', 'na', 'cu', 'pi', 'kl', 'ty', 'lbe', 'ab', 'got', 'sm', 'as', 'mo',
+ 'ee', 'zea', 'av', 'ace', 'kg', 'bm', 'cdo', 'cbk-zam', 'kab', 'om', 'chr', 'pap', 'udm', 'ks', 'zu', 'rmy',
+ 'cr', 'ch', 'st', 'ik', 'mdf', 'kaa', 'aa', 'fj', 'srn', 'tet', 'or', 'pnt', 'bug', 'ss', 'ts', 'pcd',
+ 'pih', 'za', 'sg', 'lg', 'bxr', 'xh', 'ak', 'ha', 'bi', 've', 'tn', 'ff', 'dz', 'ti', 'ki', 'ny', 'rw',
+ 'chy', 'tw', 'sn', 'tum', 'ng', 'rn', 'mh', 'ii', 'cho', 'hz', 'kr', 'ho', 'mus', 'kj'
+ ];
+ // If the user has an Accept-Language cookie, use it. Otherwise, set it asynchronously but keep the default
+ // behavior for this page view.
+ var acceptLangCookie = $.cookie( 'accept-language' );
+ if ( acceptLangCookie != null ) {
+ // Put the user's accepted languages before the list ordered by wiki size
+ if ( acceptLangCookie != '' ) {
+ languages = acceptLangCookie.split( ',' ).concat( languages );
+ }
+ } else {
+ $.getJSON(
+ wgScriptPath + '/api.php?action=query&meta=userinfo&uiprop=acceptlang&format=json',
+ function( data ) {
+ var langs = [];
+ if (
+ typeof data.query != 'undefined' &&
+ typeof data.query.userinfo != 'undefined' &&
+ typeof data.query.userinfo.acceptlang != 'undefined'
+ ) {
+ for ( var j = 0; j < data.query.userinfo.acceptlang.length; j++ ) {
+ if ( data.query.userinfo.acceptlang[j].q != 0 ) {
+ langs.push( data.query.userinfo.acceptlang[j]['*'] );
+ }
+ }
+ }
+ $.cookie( 'accept-language', langs.join( ',' ), { 'path': '/', 'expires': 30 } );
+ }
+ );
+ }
+ // Shortcuts to the two lists
+ var $primary = $( '#p-lang ul.primary' );
+ var $secondary = $( '#p-lang ul.secondary' );
+ // Adjust the limit based on the threshold
+ if ( $secondary.children().length < limit + threshold ) {
+ limit += threshold;
+ }
+ // Move up to 5 of the links into the primary list, based on the priorities set forth in the languages list
+ var count = 0;
+ for ( var i = 0; i < languages.length; i++ ) {
+ var $link = $secondary.find( '.interwiki-' + languages[i] );
+ if ( $link.length ) {
+ if ( count++ < limit ) {
+ $link.appendTo( $primary );
+ } else {
+ break;
+ }
+ }
+ }
+ // If there's still links in the secondary list and we havn't filled the primary list to it's limit yet, move
+ // links into the primary list in order of appearance
+ if ( count < limit ) {
+ $secondary.children().each( function() {
+ if ( count++ < limit ) {
+ $(this).appendTo( $primary );
+ } else {
+ return false;
+ }
+ } );
+ }
+ // Hide the more portal if it's now empty, otherwise make the list into it's very own portal
+ if ( $secondary.children().length == 0 ) {
+ $secondary.remove();
+ } else {
+ $( '#p-lang' ).after( '<div id="p-lang-more" class="portal"><h5></h5><div class="body"></div></div>' );
+ $( '#p-lang-more h5' ).text( mw.usability.getMsg( 'vector-collapsiblenav-more' ) );
+ $secondary.appendTo( $( '#p-lang-more div.body' ) );
+ }
+ // Always show the primary interwiki language portal
+ $( '#p-lang' ).addClass( 'persistent' );
+ }
+
+ /* General Portal Modification */
+
+ // Always show the first portal
+ $( '#mw-panel > div.portal:first' ).addClass( 'first persistent' );
+ // Apply a class to the entire panel to activate styles
+ $( '#mw-panel' ).addClass( 'collapsible-nav' );
+ // Use cookie data to restore preferences of what to show and hide
+ $( '#mw-panel > div.portal:not(.persistent)' )
+ .each( function( i ) {
+ var id = $(this).attr( 'id' );
+ var state = $.cookie( 'vector-nav-' + id );
+ // In the case that we are not showing the new version, let's show the languages by default
+ if (
+ state == 'true' ||
+ ( state == null && i < 1 ) ||
+ ( state == null && version == 1 && id == 'p-lang' )
+ ) {
+ $(this)
+ .addClass( 'expanded' )
+ .find( 'div.body' )
+ .show();
+ } else {
+ $(this).addClass( 'collapsed' );
+ }
+ // Re-save cookie
+ if ( state != null ) {
+ $.cookie( 'vector-nav-' + $(this).attr( 'id' ), state, { 'expires': 30, 'path': '/' } );
+ }
+ } );
+ // Use the same function for all navigation headings - don't repeat yourself
+ function toggle( $element ) {
+ $.cookie(
+ 'vector-nav-' + $element.parent().attr( 'id' ),
+ $element.parent().is( '.collapsed' ),
+ { 'expires': 30, 'path': '/' }
+ );
+ $element
+ .parent()
+ .toggleClass( 'expanded' )
+ .toggleClass( 'collapsed' )
+ .find( 'div.body' )
+ .slideToggle( 'fast' );
+ }
+
+ /* Tab Indexing */
+
+ var $headings = $( '#mw-panel > div.portal:not(.persistent) > h5' );
+ // Get the highest tab index
+ var tabIndex = $( document ).lastTabIndex() + 1;
+ // Fix the search not having a tabindex
+ $( '#searchInput' ).attr( 'tabindex', tabIndex++ );
+ // Make it keyboard accessible
+ $headings.each( function() {
+ $(this).attr( 'tabindex', tabIndex++ );
+ } );
+ // Toggle the selected menu's class and expand or collapse the menu
+ $( '#mw-panel' )
+ .delegate( 'div.portal:not(.persistent) > h5', 'keydown', function( event ) {
+ // Make the space and enter keys act as a click
+ if ( event.which == 13 /* Enter */ || event.which == 32 /* Space */ ) {
+ toggle( $(this) );
+ }
+ } )
+ .delegate( 'div.portal:not(.persistent) > h5', 'mousedown', function( event ) {
+ if ( event.which != 3 ) { // Right mouse click
+ toggle( $(this) );
+ $(this).blur();
+ }
+ return false;
+ } );
+} )( jQuery );
diff --git a/extensions/Vector/modules/ext.vector.collapsibleTabs.js b/extensions/Vector/modules/ext.vector.collapsibleTabs.js
new file mode 100644
index 00000000..fb0681e7
--- /dev/null
+++ b/extensions/Vector/modules/ext.vector.collapsibleTabs.js
@@ -0,0 +1,123 @@
+/*
+ * Collapsible tabs for Vector
+ */
+jQuery(function( $ ) {
+ var rtl = $( 'body' ).is( '.rtl' );
+
+ // Overloading the moveToCollapsed function to animate the transition
+ $.collapsibleTabs.moveToCollapsed = function( ele ) {
+ var $moving = $( ele );
+
+ //$.collapsibleTabs.getSettings( $( $.collapsibleTabs.getSettings( $moving ).expandedContainer ) ).shifting = true;
+ // Do the above, except with guards for JS errors
+ var data = $.collapsibleTabs.getSettings( $moving );
+ if ( !data ) {
+ return;
+ }
+ var expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
+ if ( !expContainerSettings ) {
+ return;
+ }
+ expContainerSettings.shifting = true;
+
+ // Remove the element from where it's at and put it in the dropdown menu
+ var target = data.collapsedContainer;
+ $moving.css( "position", "relative" )
+ .css( ( rtl ? 'left' : 'right' ), 0 )
+ .animate( { width: '1px' }, "normal", function() {
+ $( this ).hide();
+ // add the placeholder
+ $( '<span class="placeholder" style="display:none;"></span>' ).insertAfter( this );
+ $( this ).detach().prependTo( target ).data( 'collapsibleTabsSettings', data );
+ $( this ).attr( 'style', 'display:list-item;' );
+ //$.collapsibleTabs.getSettings( $( $.collapsibleTabs.getSettings( $( ele ) ).expandedContainer ) )
+ // .shifting = false;
+ // Do the above, except with guards for JS errors
+ var data = $.collapsibleTabs.getSettings( $( ele ) );
+ if ( !data ) {
+ return;
+ }
+ var expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
+ if ( !expContainerSettings ) {
+ return;
+ }
+ expContainerSettings.shifting = false;
+ $.collapsibleTabs.handleResize();
+ } );
+ };
+
+ // Overloading the moveToExpanded function to animate the transition
+ $.collapsibleTabs.moveToExpanded = function( ele ) {
+ var $moving = $( ele );
+ //$.collapsibleTabs.getSettings( $( $.collapsibleTabs.getSettings( $moving ).expandedContainer ) ).shifting = true;
+ // Do the above, except with guards for JS errors
+ var data = $.collapsibleTabs.getSettings( $moving );
+ if ( !data ) {
+ return;
+ }
+ var expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
+ if ( !expContainerSettings ) {
+ return;
+ }
+ expContainerSettings.shifting = true;
+
+ // grab the next appearing placeholder so we can use it for replacing
+ var $target = $( data.expandedContainer ).find( 'span.placeholder:first' );
+ var expandedWidth = data.expandedWidth;
+ $moving.css( "position", "relative" ).css( ( rtl ? 'right' : 'left' ), 0 ).css( 'width', '1px' );
+ $target.replaceWith( $moving.detach().css( 'width', '1px' ).data( 'collapsibleTabsSettings', data )
+ .animate( { width: expandedWidth+"px" }, "normal", function( ) {
+ $( this ).attr( 'style', 'display:block;' );
+ //$.collapsibleTabs.getSettings( $( $.collapsibleTabs.getSettings( $( ele ) ).expandedContainer ) )
+ // .shifting = false;
+ // Do the above, except with guards for JS errors
+ var data = $.collapsibleTabs.getSettings( $( this ) );
+ if ( !data ) {
+ return;
+ }
+ var expContainerSettings = $.collapsibleTabs.getSettings( $( data.expandedContainer ) );
+ if ( !expContainerSettings ) {
+ return;
+ }
+ expContainerSettings.shifting = false;
+ $.collapsibleTabs.handleResize();
+ } ) );
+ };
+
+ // Bind callback functions to animate our drop down menu in and out
+ // and then call the collapsibleTabs function on the menu
+ $( '#p-views ul' ).bind( 'beforeTabCollapse', function() {
+ if ( $( '#p-cactions' ).css( 'display' ) == 'none' ) {
+ $( '#p-cactions' )
+ .addClass( 'filledPortlet' ).removeClass( 'emptyPortlet' )
+ .find( 'h5' )
+ .css( 'width','1px' ).animate( { 'width':'26px' }, 390 );
+ }
+ } ).bind( 'beforeTabExpand', function() {
+ if ( $( '#p-cactions li' ).length == 1 ) {
+ $( '#p-cactions h5' ).animate( { 'width':'1px' }, 370, function() {
+ $( this ).attr( 'style', '' )
+ .parent().addClass( 'emptyPortlet' ).removeClass( 'filledPortlet' );
+ });
+ }
+ } ).collapsibleTabs( {
+ expandCondition: function( eleWidth ) {
+ if( rtl ){
+ return ( $( '#right-navigation' ).position().left + $( '#right-navigation' ).width() + 1 )
+ < ( $( '#left-navigation' ).position().left - eleWidth );
+ } else {
+ return ( $( '#left-navigation' ).position().left + $( '#left-navigation' ).width() + 1 )
+ < ( $( '#right-navigation' ).position().left - eleWidth );
+ }
+ },
+ collapseCondition: function() {
+ if( rtl ) {
+ return ( $( '#right-navigation' ).position().left + $( '#right-navigation' ).width() )
+ > $( '#left-navigation' ).position().left;
+ } else {
+ return ( $( '#left-navigation' ).position().left + $( '#left-navigation' ).width() )
+ > $( '#right-navigation' ).position().left;
+ }
+ }
+ } );
+} );
diff --git a/extensions/Vector/modules/ext.vector.editWarning.js b/extensions/Vector/modules/ext.vector.editWarning.js
new file mode 100644
index 00000000..d7494c70
--- /dev/null
+++ b/extensions/Vector/modules/ext.vector.editWarning.js
@@ -0,0 +1,71 @@
+/*
+ * Edit warning for Vector
+ */
+(function( $ ) {
+ $(document).ready( function() {
+ // Check if EditWarning is enabled and if we need it
+ if ( $( '#wpTextbox1' ).size() == 0 ) {
+ return true;
+ }
+ // Get the original values of some form elements
+ $( '#wpTextbox1, #wpSummary' ).each( function() {
+ $(this).data( 'origtext', $(this).val() );
+ });
+ // Attach our own handler for onbeforeunload which respects the current one
+ var fallbackWindowOnBeforeUnload = window.onbeforeunload;
+ var ourWindowOnBeforeUnload = function() {
+ var fallbackResult = undefined;
+ var retval = undefined;
+ var thisFunc = arguments.callee;
+ // Check if someone already set on onbeforeunload hook
+ if ( fallbackWindowOnBeforeUnload ) {
+ // Get the result of their onbeforeunload hook
+ fallbackResult = fallbackWindowOnBeforeUnload();
+ }
+ // Check if their onbeforeunload hook returned something
+ if ( fallbackResult !== undefined ) {
+ // Exit here, returning their message
+ retval = fallbackResult;
+ } else {
+ // Check if the current values of some form elements are the same as
+ // the original values
+ if (
+ wgAction == 'submit' ||
+ $( '#wpTextbox1' ).data( 'origtext' ) != $( '#wpTextbox1' ).val() ||
+ $( '#wpSummary' ).data( 'origtext' ) != $( '#wpSummary' ).val()
+ ) {
+ // Return our message
+ retval = mediaWiki.msg( 'vector-editwarning-warning' );
+ }
+ }
+
+ // Unset the onbeforeunload handler so we don't break page caching in Firefox
+ window.onbeforeunload = null;
+ if ( retval !== undefined ) {
+ // ...but if the user chooses not to leave the page, we need to rebind it
+ setTimeout( function() {
+ window.onbeforeunload = thisFunc;
+ } );
+ return retval;
+ }
+ };
+ var pageShowHandler = function() {
+ // Re-add onbeforeunload handler
+ window.onbeforeunload = ourWindowOnBeforeUnload;
+ };
+ pageShowHandler();
+ if ( window.addEventListener ) {
+ window.addEventListener('pageshow', pageShowHandler, false);
+ } else if ( window.attachEvent ) {
+ window.attachEvent( 'pageshow', pageShowHandler );
+ }
+
+ // Add form submission handler
+ $( 'form' ).submit( function() {
+ // Restore whatever previous onbeforeload hook existed
+ window.onbeforeunload = fallbackWindowOnBeforeUnload;
+ });
+ });
+ //Global storage of fallback for onbeforeunload hook
+ var fallbackWindowOnBeforeUnload = null;
+})( jQuery );
diff --git a/extensions/Vector/modules/ext.vector.expandableSearch.css b/extensions/Vector/modules/ext.vector.expandableSearch.css
new file mode 100644
index 00000000..be679b4c
--- /dev/null
+++ b/extensions/Vector/modules/ext.vector.expandableSearch.css
@@ -0,0 +1,9 @@
+.expandableField {
+ display: block;
+}
+#simpleSearch {
+ overflow: auto;
+}
+#searchButton {
+ margin-top: 0.2em !important;
+} \ No newline at end of file
diff --git a/extensions/Vector/modules/ext.vector.expandableSearch.js b/extensions/Vector/modules/ext.vector.expandableSearch.js
new file mode 100644
index 00000000..850ff74f
--- /dev/null
+++ b/extensions/Vector/modules/ext.vector.expandableSearch.js
@@ -0,0 +1,70 @@
+/*
+ * Expandable search for Vector
+ */
+$( document ).ready( function() {
+
+ /* Browser Support */
+
+ var map = {
+ // Left-to-right languages
+ 'ltr': {
+ // Collapsible Nav is broken in Opera < 9.6 and Konqueror < 4
+ 'msie': [['>=', 8]],
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false,
+ 'ps3': false
+ },
+ // Right-to-left languages
+ 'rtl': {
+ 'msie': [['>=', 8]],
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false,
+ 'ps3': false
+ }
+ };
+ if ( !$.client.test( map ) ) {
+ return true;
+ }
+
+ $( '#searchInput' )
+ .expandableField( {
+ 'beforeExpand': function( context ) {
+ // animate the containers border
+ $( this )
+ .parent()
+ .animate( {
+ 'borderTopColor': '#a0d8ff',
+ 'borderLeftColor': '#a0d8ff',
+ 'borderRightColor': '#a0d8ff',
+ 'borderBottomColor': '#a0d8ff' }, 'fast' );
+ },
+ 'beforeCondense': function( context ) {
+ // animate the containers border
+ $( this )
+ .parent()
+ .animate( {
+ 'borderTopColor': '#aaaaaa',
+ 'borderLeftColor': '#aaaaaa',
+ 'borderRightColor': '#aaaaaa',
+ 'borderBottomColor': '#aaaaaa' }, 'fast' );
+ },
+ 'afterExpand': function( context ) {
+ //trigger the collapsible tabs resize handler
+ if ( typeof $.collapsibleTabs != 'undefined' ){
+ $.collapsibleTabs.handleResize();
+ }
+ },
+ 'afterCondense': function( context ) {
+ //trigger the collapsible tabs resize handler
+ if ( typeof $.collapsibleTabs != 'undefined' ){
+ $.collapsibleTabs.handleResize();
+ }
+ },
+ 'expandToLeft': ! $( 'body' ).is( '.rtl' )
+ } )
+ .css( 'float', $( 'body' ).is( '.rtl' ) ? 'right' : 'left' )
+ .siblings( 'button' )
+ .css( 'float', $( 'body' ).is( '.rtl' ) ? 'right' : 'left' );
+} );
diff --git a/extensions/Vector/modules/ext.vector.footerCleanup.css b/extensions/Vector/modules/ext.vector.footerCleanup.css
new file mode 100644
index 00000000..ab951df6
--- /dev/null
+++ b/extensions/Vector/modules/ext.vector.footerCleanup.css
@@ -0,0 +1,87 @@
+/* Prototype code to show collapsing left nav options */
+#editpage-bottom {
+ background-color: #F3F3F3;
+ border: 1px solid silver;
+ border-top: none;
+ padding: 20px 170px 20px 170px;
+ margin-right: -2px;
+}
+
+#editpage-bottom input.inline-hint {
+ color: #999999;
+ font-style: italic;
+}
+.collapsible-list {
+ border-top: 1px solid silver;
+ border-bottom: 1px solid silver;
+}
+.collapsible-list {
+ border-top: 1px solid silver;
+ border-bottom: 1px solid silver;
+ padding: 3px 2px;
+}
+.collapsible-list ul {
+ display: block;
+ padding: 0 0 0 14px;
+}
+.collapsible-list.collapsed label {
+ /* @embed */
+ background: url(../images/vector/collapsibleNav/arrow-down.png?1) 0 50% no-repeat;
+ padding: 4px 0 3px 1.5em;
+ margin-bottom: 0px;
+}
+.collapsible-list.expanded label {
+ /* @embed */
+ background: url(../images/vector/collapsibleNav/arrow-right.png?1) 0 50% no-repeat;
+ padding: 4px 0 3px 1.5em;
+ margin-bottom: 0px;
+}
+
+#editpage-bottom .editOptions {
+ width: 100%;
+}
+#editpage-bottom #wpSummaryLabel,
+#editpage-bottom #editpage-summary-fields,
+#editpage-bottom .editButtons {
+ float: left;
+}
+#editpage-bottom #wpSummaryLabel{
+ width: 150px;
+ margin-left: -150px;
+ position: relative;
+}
+#editpage-bottom #editpage-summary-fields {
+ width: 100%;
+ margin-right: -100%;
+}
+#editpage-bottom #editpage-summary-fields input.mw-summary {
+ width: 95%;
+}
+#editpage-bottom .editButtons {
+ width: 150px;
+ margin-right: -150px;
+ float: right;
+ position: relative;
+}
+#editpage-bottom #editpage-copywarn {
+ margin-left: -150px;
+ margin-right: 10px;
+}
+/* Why don't we use self clearing floats anywhere? */
+
+#editpage-bottom .editOptions:after {
+ content: ".";
+ display: block;
+ height: 0;
+ clear: both;
+ visibility: hidden;
+}
+#editpage-bottom .editOptions {
+ display: inline-block;
+}
+* html #editpage-bottom .editOptions {
+ height: 1%;
+}
+#editpage-bottom .editOptions {
+ display:block;
+} \ No newline at end of file
diff --git a/extensions/Vector/modules/ext.vector.footerCleanup.js b/extensions/Vector/modules/ext.vector.footerCleanup.js
new file mode 100644
index 00000000..eb9b3dd2
--- /dev/null
+++ b/extensions/Vector/modules/ext.vector.footerCleanup.js
@@ -0,0 +1,68 @@
+/*
+ * Footer cleanup for Vector
+ */
+$( document ).ready( function() {
+ $( '#editpage-copywarn' )
+ .add( '.editOptions' )
+ .wrapAll( '<div id="editpage-bottom"></div>' );
+ $( '#wpSummary' )
+ .data( 'hint',
+ $( '#wpSummaryLabel span small' )
+ .remove()
+ .text()
+ // FIXME - Not a long-term solution. This change should be done in the message itself
+ .replace( /\)|\(/g, '' )
+ )
+ .change( function() {
+ if ( $( this ).val().length == 0 ) {
+ $( this )
+ .addClass( 'inline-hint' )
+ .val( $( this ).data( 'hint' ) );
+ } else {
+ $( this ).removeClass( 'inline-hint' );
+ }
+ } )
+ .focus( function() {
+ if ( $( this ).val() == $( this ).data( 'hint' ) ) {
+ $( this )
+ .removeClass( 'inline-hint' )
+ .val( "" );
+ }
+ })
+ .blur( function() { $( this ).trigger( 'change' ); } )
+ .trigger( 'change' );
+ $( '#wpSummary' )
+ .add( '.editCheckboxes' )
+ .wrapAll( '<div id="editpage-summary-fields"></div>' );
+
+ $( '#editpage-specialchars' ).remove();
+
+ // transclusions
+ // FIXME - bad CSS styling here with double class selectors. Should address here.
+ var transclusionCount = $( '.templatesUsed ul li' ).size();
+ $( '.templatesUsed ul' )
+ .wrap( '<div id="transclusions-list" class="collapsible-list collapsed"></div>' )
+ .parent()
+ // FIXME: i18n, remove link from message and let community add link to transclusion page if it exists
+ .prepend( '<label>This page contains <a href="http://en.wikipedia.org/wiki/transclusion">transclusions</a> of <strong>'
+ + transclusionCount
+ + '</strong> other pages.</label>' );
+ $( '.mw-templatesUsedExplanation' ).remove();
+
+ $( '.collapsible-list label' )
+ .click( function() {
+ $( this )
+ .parent()
+ .toggleClass( 'expanded' )
+ .toggleClass( 'collapsed' )
+ .find( 'ul' )
+ .slideToggle( 'fast' );
+ return false;
+ })
+ .trigger( 'click' );
+ $( '#wpPreview, #wpDiff, .editHelp, #editpage-specialchars' )
+ .remove();
+ $( '#mw-editform-cancel' )
+ .remove()
+ .appendTo( '.editButtons' );
+} );
diff --git a/extensions/Vector/modules/ext.vector.sectionEditLinks.css b/extensions/Vector/modules/ext.vector.sectionEditLinks.css
new file mode 100644
index 00000000..6c864001
--- /dev/null
+++ b/extensions/Vector/modules/ext.vector.sectionEditLinks.css
@@ -0,0 +1,15 @@
+span.vector-editLink {
+ float: none;
+ display: inline-block;
+}
+span.vector-editLink a {
+ padding-left: 18px;
+ /* @embed */
+ background-image: url(images/edit-faded.png);
+ background-position: left top;
+ background-repeat: no-repeat;
+}
+span.vector-editLink a:hover {
+ /* @embed */
+ background-image: url(images/edit.png);
+}
diff --git a/extensions/Vector/modules/ext.vector.sectionEditLinks.js b/extensions/Vector/modules/ext.vector.sectionEditLinks.js
new file mode 100644
index 00000000..94a154e9
--- /dev/null
+++ b/extensions/Vector/modules/ext.vector.sectionEditLinks.js
@@ -0,0 +1,75 @@
+/*
+ * Section Edit Links for Vector
+ */
+( function( $, mw ) {
+
+var eventBase = 'ext.vector.sectionEditLinks-bucket:';
+var cookieBase = 'ext.vector.sectionEditLinks-';
+
+if ( mw.config.get( 'wgVectorSectionEditLinksBucketTest', false ) ) {
+ // If the version in the client's cookie doesn't match wgVectorSectionEditLinksExperiment, then
+ // we need to disregard the bucket they may already be in to ensure accurate redistribution
+ var currentExperiment = $.cookie( cookieBase + 'experiment' );
+ var experiment = Number( mw.config.get( 'wgVectorSectionEditLinksExperiment', 0 ) );
+ var bucket = null;
+ if ( currentExperiment === null || Number( currentExperiment ) != experiment ) {
+ $.cookie( cookieBase + 'experiment', experiment );
+ } else {
+ bucket = $.cookie( cookieBase + 'bucket' );
+ }
+ if ( bucket === null ) {
+ // Percentage chance of being tracked
+ var odds = Math.min( 100, Math.max( 0,
+ Number( mw.config.get( 'wgVectorSectionEditLinksLotteryOdds', 0 ) )
+ ) );
+ // 0 = not tracked, 1 = tracked with old version, 2 = tracked with new version
+ bucket = ( Math.random() * 100 ) < odds ? Number( Math.random() < 0.5 ) + 1 : 0;
+ $.cookie( cookieBase + 'bucket', bucket, { 'path': '/', 'expires': 30 } );
+ // If we are going to track this person from now on, let's also track which bucket we put
+ // them into and when
+ if ( bucket > 0 && 'trackAction' in $ ) {
+ $.trackAction( eventBase + bucket + '@' + experiment );
+ }
+ }
+}
+if ( bucket > 0 ) {
+ // Transform the targets of section edit links to route through the click tracking API
+ var session = $.cookie( 'clicktracking-session' );
+ $( 'span.editsection a, #ca-edit a' ).each( function() {
+ var event = eventBase + bucket + '@' + experiment;
+ if ( $(this).is( '#ca-edit a' ) ) {
+ event += '-tab';
+ }
+ var href = $( this ).attr( 'href' );
+ var editUrl = href + ( href.indexOf( '?' ) >= 0 ? '&' : '?' ) + $.param( {
+ 'clicktrackingsession': session,
+ 'clicktrackingevent': event + '-save'
+ } );
+ $(this).attr( 'href', $.trackActionURL( editUrl, event + '-click' ) );
+ } );
+ if ( bucket == 2 ) {
+ // Move the link over to be next to the heading text and style it with an icon
+ $( 'span.mw-headline' ).each( function() {
+ $(this)
+ .after(
+ $( '<span class="editsection vector-editLink"></span>' )
+ .append(
+ $(this)
+ .prev( 'span.editsection' )
+ .find( 'a' )
+ .each( function() {
+ var text = $(this).text();
+ $(this).text(
+ text.substr( 0, 1 ).toUpperCase() + text.substr( 1 )
+ );
+ } )
+ .detach()
+ )
+ )
+ .prev( 'span.editsection' )
+ .remove();
+ } );
+ }
+}
+
+} )( jQuery, mediaWiki );
diff --git a/extensions/Vector/modules/ext.vector.simpleSearch.js b/extensions/Vector/modules/ext.vector.simpleSearch.js
new file mode 100644
index 00000000..01ef14ea
--- /dev/null
+++ b/extensions/Vector/modules/ext.vector.simpleSearch.js
@@ -0,0 +1,130 @@
+/* JavaScript for SimpleSearch extension */
+
+jQuery( document ).ready( function( $ ) {
+
+ // Compatibility map
+ var map = {
+ 'browsers': {
+ // Left-to-right languages
+ 'ltr': {
+ // SimpleSearch is broken in Opera < 9.6
+ 'opera': [['>=', 9.6]],
+ 'docomo': false,
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false
+ },
+ // Right-to-left languages
+ 'rtl': {
+ 'opera': [['>=', 9.6]],
+ 'docomo': false,
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false
+ }
+ }
+ };
+ if ( !$.client.test( map ) ) {
+ return true;
+ }
+
+ // Disable MWSuggest if loaded
+ if ( window.os_MWSuggestDisable ) {
+ window.os_MWSuggestDisable();
+ }
+
+ // Placeholder text for SimpleSearch box
+ $( '#simpleSearch > input#searchInput' )
+ .attr( 'placeholder', mw.msg( 'vector-simplesearch-search' ) )
+ .placeholder();
+
+ // General suggestions functionality for all search boxes
+ $( '#searchInput, #searchInput2, #powerSearchText, #searchText' )
+ .suggestions( {
+ fetch: function( query ) {
+ var $this = $(this);
+ if ( query.length !== 0 ) {
+ var request = $.ajax( {
+ url: mw.util.wikiScript( 'api' ),
+ data: {
+ action: 'opensearch',
+ search: query,
+ namespace: 0,
+ suggest: ''
+ },
+ dataType: 'json',
+ success: function( data ) {
+ if ( $.isArray( data ) && 1 in data ) {
+ $this.suggestions( 'suggestions', data[1] );
+ }
+ }
+ });
+ $this.data( 'request', request );
+ }
+ },
+ cancel: function() {
+ var request = $(this).data( 'request' );
+ // If the delay setting has caused the fetch to have not even happend yet, the request object will
+ // have never been set
+ if ( request && $.isFunction( request.abort ) ) {
+ request.abort();
+ $(this).removeData( 'request' );
+ }
+ },
+ result: {
+ select: function( $input ) {
+ $input.closest( 'form' ).submit();
+ }
+ },
+ delay: 120,
+ positionFromLeft: $( 'body' ).hasClass( 'rtl' ),
+ highlightInput: true
+ } )
+ .bind( 'paste cut drop', function( e ) {
+ // make sure paste and cut events from the mouse and drag&drop events
+ // trigger the keypress handler and cause the suggestions to update
+ $( this ).trigger( 'keypress' );
+ } );
+ // Special suggestions functionality for skin-provided search box
+ $( '#searchInput' ).suggestions( {
+ result: {
+ select: function( $input ) {
+ $input.closest( 'form' ).submit();
+ }
+ },
+ special: {
+ render: function( query ) {
+ if ( $(this).children().length === 0 ) {
+ $(this).show();
+ var $label = $( '<div></div>', {
+ 'class': 'special-label',
+ text: mw.msg( 'vector-simplesearch-containing' )
+ })
+ .appendTo( $(this) );
+ var $query = $( '<div></div>', {
+ 'class': 'special-query',
+ text: query
+ })
+ .appendTo( $(this) );
+ $query.autoEllipsis();
+ } else {
+ $(this).find( '.special-query' )
+ .empty()
+ .text( query )
+ .autoEllipsis();
+ }
+ },
+ select: function( $input ) {
+ $input.closest( 'form' ).append(
+ $( '<input>', {
+ type: 'hidden',
+ name: 'fulltext',
+ val: '1'
+ })
+ );
+ $input.closest( 'form' ).submit();
+ }
+ },
+ $region: $( '#simpleSearch' )
+ } );
+}); \ No newline at end of file
diff --git a/extensions/Vector/modules/images/closed-ltr.png b/extensions/Vector/modules/images/closed-ltr.png
new file mode 100644
index 00000000..c27c9636
--- /dev/null
+++ b/extensions/Vector/modules/images/closed-ltr.png
Binary files differ
diff --git a/extensions/Vector/modules/images/closed-rtl.png b/extensions/Vector/modules/images/closed-rtl.png
new file mode 100644
index 00000000..be968a4a
--- /dev/null
+++ b/extensions/Vector/modules/images/closed-rtl.png
Binary files differ
diff --git a/extensions/Vector/modules/images/edit-faded.png b/extensions/Vector/modules/images/edit-faded.png
new file mode 100644
index 00000000..0f622e12
--- /dev/null
+++ b/extensions/Vector/modules/images/edit-faded.png
Binary files differ
diff --git a/extensions/Vector/modules/images/edit.png b/extensions/Vector/modules/images/edit.png
new file mode 100644
index 00000000..ec02a986
--- /dev/null
+++ b/extensions/Vector/modules/images/edit.png
Binary files differ
diff --git a/extensions/Vector/modules/images/open.png b/extensions/Vector/modules/images/open.png
new file mode 100644
index 00000000..bf2d4fb4
--- /dev/null
+++ b/extensions/Vector/modules/images/open.png
Binary files differ
diff --git a/extensions/Vector/modules/images/portal-break.png b/extensions/Vector/modules/images/portal-break.png
new file mode 100644
index 00000000..e81b5597
--- /dev/null
+++ b/extensions/Vector/modules/images/portal-break.png
Binary files differ
diff --git a/extensions/Vector/switchExperimentPrefs.php b/extensions/Vector/switchExperimentPrefs.php
new file mode 100644
index 00000000..82ddd868
--- /dev/null
+++ b/extensions/Vector/switchExperimentPrefs.php
@@ -0,0 +1,63 @@
+<?php
+
+$path = '../..';
+
+if ( getenv( 'MW_INSTALL_PATH' ) !== false ) {
+ $path = getenv( 'MW_INSTALL_PATH' );
+}
+
+require_once( $path . '/maintenance/Maintenance.php' );
+
+class SwitchExperimentPrefs extends Maintenance {
+ function __construct() {
+ parent::__construct();
+ $this->addOption( 'pref', 'Preference to set', true, true );
+ $this->addOption( 'value', 'Value to set the preference to', true, true );
+ $this->mDescription = 'Set a preference for all users that have the vector-noexperiments preference enabled.';
+ }
+
+ function execute() {
+ $dbw = wfGetDB( DB_MASTER );
+
+ $batchSize = 100;
+ $total = 0;
+ $lastUserID = 0;
+ while ( true ) {
+ $res = $dbw->select( 'user_properties', array( 'up_user' ),
+ array( 'up_property' => 'vector-noexperiments', "up_user > $lastUserID" ),
+ __METHOD__,
+ array( 'LIMIT' => $batchSize ) );
+ if ( !$res->numRows() ) {
+ $dbw->commit();
+ break;
+ }
+ $total += $res->numRows();
+
+ $ids = array();
+ foreach ( $res as $row ) {
+ $ids[] = $row->up_user;
+ }
+ $lastUserID = max( $ids );
+
+
+ foreach ( $ids as $id ) {
+ $user = User::newFromId( $id );
+ if ( !$user->isLoggedIn() )
+ continue;
+ $user->setOption( $this->getOption( 'pref' ), $this->getOption( 'value' ) );
+ $user->saveSettings();
+ }
+
+ echo "$total\n";
+
+ wfWaitForSlaves(); // Must be wfWaitForSlaves_masterPos(); on 1.17wmf1
+ }
+ echo "Done\n";
+
+ }
+}
+
+$maintClass = 'SwitchExperimentPrefs';
+require_once( RUN_MAINTENANCE_IF_MAIN );
+
+
diff --git a/extensions/WikiEditor/README b/extensions/WikiEditor/README
new file mode 100644
index 00000000..bf166042
--- /dev/null
+++ b/extensions/WikiEditor/README
@@ -0,0 +1,18 @@
+# WikiEditor provides enhancements to the MediaWiki edit page
+
+# This extension requires MediaWiki 1.17+ because it makes use of ResourceLoader.
+
+# Example LocalSettings.php additions
+
+require_once( "$IP/extensions/WikiEditor/WikiEditor.php" );
+
+# Before configuring this extension, see WikiEditor.php and become familiar with the initial state and structure of the
+# $wgWikiEditorFeatures configuration variable. Essentially it's an array of arrays, keyed by feature name, each
+# containing global and user keys with boolean values. "global" indicates that it should be turned on for everyone
+# always, while user indicates that users should be allowed to turn it on or off in their user preferences.
+
+# To enable a preference by default but still allow users to disable it in preferences, use something like...
+
+$wgDefaultUserOptions['usebetatoolbar'] = 1;
+$wgDefaultUserOptions['usebetatoolbar-cgd'] = 1;
+$wgDefaultUserOptions['wikieditor-preview'] = 1;
diff --git a/extensions/WikiEditor/WikiEditor.hooks.php b/extensions/WikiEditor/WikiEditor.hooks.php
new file mode 100644
index 00000000..1a8a251f
--- /dev/null
+++ b/extensions/WikiEditor/WikiEditor.hooks.php
@@ -0,0 +1,276 @@
+<?php
+/**
+ * Hooks for WikiEditor extension
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+class WikiEditorHooks {
+
+ /* Protected Static Members */
+
+ protected static $features = array(
+
+ /* Beta Features */
+
+ 'toolbar' => array(
+ 'preferences' => array(
+ // Ideally this key would be 'wikieditor-toolbar'
+ 'usebetatoolbar' => array(
+ 'type' => 'toggle',
+ 'label-message' => 'wikieditor-toolbar-preference',
+ 'section' => 'editing/beta',
+ ),
+ ),
+ 'requirements' => array(
+ 'usebetatoolbar' => true,
+ ),
+ 'modules' => array(
+ 'ext.wikiEditor.toolbar',
+ ),
+ ),
+ 'dialogs' => array(
+ 'preferences' => array(
+ // Ideally this key would be 'wikieditor-toolbar-dialogs'
+ 'usebetatoolbar-cgd' => array(
+ 'type' => 'toggle',
+ 'label-message' => 'wikieditor-toolbar-dialogs-preference',
+ 'section' => 'editing/beta',
+ ),
+ ),
+ 'requirements' => array(
+ 'usebetatoolbar-cgd' => true,
+ 'usebetatoolbar' => true,
+ ),
+ 'modules' => array(
+ 'ext.wikiEditor.dialogs',
+ ),
+ ),
+ 'hidesig' => array(
+ 'preferences' => array(
+ 'wikieditor-toolbar-hidesig' => array(
+ 'type' => 'toggle',
+ 'label-message' => 'wikieditor-toolbar-hidesig',
+ 'section' => 'editing/beta',
+ ),
+ ),
+ 'requirements' => array(
+ 'wikieditor-toolbar-hidesig' => true,
+ 'usebetatoolbar' => true,
+ ),
+ 'modules' => array(
+ 'ext.wikiEditor.toolbar.hideSig',
+ ),
+ ),
+
+ /* Labs Features */
+
+ 'templateEditor' => array(
+ 'preferences' => array(
+ 'wikieditor-template-editor' => array(
+ 'type' => 'toggle',
+ 'label-message' => 'wikieditor-template-editor-preference',
+ 'section' => 'editing/labs',
+ ),
+ ),
+ 'requirements' => array(
+ 'wikieditor-template-editor' => true,
+ ),
+ 'modules' => array(
+ 'ext.wikiEditor.templateEditor',
+ ),
+ ),
+ 'templates' => array(
+ 'preferences' => array(
+ 'wikieditor-templates' => array(
+ 'type' => 'toggle',
+ 'label-message' => 'wikieditor-templates-preference',
+ 'section' => 'editing/labs',
+ ),
+ ),
+ 'requirements' => array(
+ 'wikieditor-templates' => true,
+ ),
+ 'modules' => array(
+ 'ext.wikiEditor.templates',
+ ),
+ ),
+ 'preview' => array(
+ 'preferences' => array(
+ 'wikieditor-preview' => array(
+ 'type' => 'toggle',
+ 'label-message' => 'wikieditor-preview-preference',
+ 'section' => 'editing/labs',
+ ),
+ ),
+ 'requirements' => array(
+ 'wikieditor-preview' => true,
+ ),
+ 'modules' => array(
+ 'ext.wikiEditor.preview',
+ ),
+ ),
+ 'previewDialog' => array(
+ 'preferences' => array(
+ 'wikieditor-previewDialog' => array(
+ 'type' => 'toggle',
+ 'label-message' => 'wikieditor-previewDialog-preference',
+ 'section' => 'editing/labs',
+ ),
+ ),
+ 'requirements' => array(
+ 'wikieditor-previewDialog' => true,
+ ),
+ 'modules' => array(
+ 'ext.wikiEditor.previewDialog',
+ ),
+ ),
+ 'publish' => array(
+ 'preferences' => array(
+ 'wikieditor-publish' => array(
+ 'type' => 'toggle',
+ 'label-message' => 'wikieditor-publish-preference',
+ 'section' => 'editing/labs',
+ ),
+ ),
+ 'requirements' => array(
+ 'wikieditor-publish' => true,
+ ),
+ 'modules' => array(
+ 'ext.wikiEditor.publish',
+ ),
+ ),
+ 'toc' => array(
+ 'preferences' => array(
+ // Ideally this key would be 'wikieditor-toc'
+ 'usenavigabletoc' => array(
+ 'type' => 'toggle',
+ 'label-message' => 'wikieditor-toc-preference',
+ 'section' => 'editing/labs',
+ ),
+ ),
+ 'requirements' => array(
+ 'usenavigabletoc' => true,
+ ),
+ 'modules' => array(
+ 'ext.wikiEditor.toc',
+ ),
+ ),
+ );
+
+ /* Static Methods */
+
+ /**
+ * Checks if a certain option is enabled
+ *
+ * This method is public to allow other extensions that use WikiEditor to use the
+ * same configuration as WikiEditor itself
+ *
+ * @param $name Name of the feature, should be a key of $features
+ */
+ public static function isEnabled( $name ) {
+ global $wgWikiEditorFeatures, $wgUser;
+
+ // Features with global set to true are always enabled
+ if ( !isset( $wgWikiEditorFeatures[$name] ) || $wgWikiEditorFeatures[$name]['global'] ) {
+ return true;
+ }
+ // Features with user preference control can have any number of preferences to be specific values to be enabled
+ if ( $wgWikiEditorFeatures[$name]['user'] ) {
+ if ( isset( self::$features[$name]['requirements'] ) ) {
+ foreach ( self::$features[$name]['requirements'] as $requirement => $value ) {
+ // Important! We really do want fuzzy evaluation here
+ if ( $wgUser->getOption( $requirement ) != $value ) {
+ return false;
+ }
+ }
+ }
+ return true;
+ }
+ // Features controlled by $wgWikiEditorFeatures with both global and user set to false are awlways disabled
+ return false;
+ }
+
+ /**
+ * EditPage::showEditForm:initial hook
+ *
+ * Adds the modules to the edit form
+ *
+ * @param $toolbar array list of toolbar items
+ */
+ public static function editPageShowEditFormInitial( &$toolbar ) {
+ global $wgOut;
+
+ // Add modules for enabled features
+ foreach ( self::$features as $name => $feature ) {
+ if ( isset( $feature['modules'] ) && self::isEnabled( $name ) ) {
+ $wgOut->addModules( $feature['modules'] );
+ }
+ }
+ return true;
+ }
+
+ /**
+ * GetPreferences hook
+ *
+ * Adds WikiEditor-releated items to the preferences
+ *
+ * @param $user User current user
+ * @param $defaultPreferences array list of default user preference controls
+ */
+ public static function getPreferences( $user, &$defaultPreferences ) {
+ global $wgWikiEditorFeatures;
+
+ foreach ( self::$features as $name => $feature ) {
+ if (
+ isset( $feature['preferences'] ) &&
+ ( !isset( $wgWikiEditorFeatures[$name] ) || $wgWikiEditorFeatures[$name]['user'] )
+ ) {
+ foreach ( $feature['preferences'] as $key => $options ) {
+ $defaultPreferences[$key] = $options;
+ }
+ }
+ }
+ return true;
+ }
+
+ /**
+ * MakeGlobalVariablesScript hook
+ *
+ * Adds enabled/disabled switches for WikiEditor modules
+ */
+ public static function resourceLoaderGetConfigVars( &$vars ) {
+ global $wgWikiEditorFeatures;
+
+ $configurations = array();
+ foreach ( self::$features as $name => $feature ) {
+ if (
+ isset( $feature['configurations'] ) &&
+ ( !isset( $wgWikiEditorFeatures[$name] ) || self::isEnabled( $name ) )
+ ) {
+ foreach ( $feature['configurations'] as $configuration ) {
+ global $$configuration;
+ $configurations[$configuration] = $$configuration;
+ }
+ }
+ }
+ if ( count( $configurations ) ) {
+ $vars = array_merge( $vars, $configurations );
+ }
+ return true;
+ }
+
+ public static function makeGlobalVariablesScript( &$vars ) {
+ global $wgWikiEditorFeatures;
+
+ // Build and export old-style wgWikiEditorEnabledModules object for back compat
+ $enabledModules = array();
+ foreach ( self::$features as $name => $feature ) {
+ $enabledModules[$name] = self::isEnabled( $name );
+ }
+
+ $vars['wgWikiEditorEnabledModules'] = $enabledModules;
+ return true;
+ }
+}
diff --git a/extensions/WikiEditor/WikiEditor.i18n.php b/extensions/WikiEditor/WikiEditor.i18n.php
new file mode 100644
index 00000000..8a975717
--- /dev/null
+++ b/extensions/WikiEditor/WikiEditor.i18n.php
@@ -0,0 +1,25914 @@
+<?php
+/**
+ * Internationalisation for WikiEditor extension
+ *
+ * @file
+ * @ingroup Extensions
+ */
+
+$messages = array();
+
+/** English
+ * @author Trevor Parscal
+ */
+$messages['en'] = array(
+ /* WikiEditor */
+ 'wikieditor' => 'Advanced wikitext editing interface',
+ 'wikieditor-desc' => 'Provides an extendable wikitext editing interface and many feature-providing modules',
+ 'wikieditor-wikitext-tab' => 'Wikitext',
+ 'wikieditor-loading' => 'Loading',
+ /* Preview */
+ 'wikieditor-preview-preference' => 'Enable side-by-side preview',
+ 'wikieditor-preview-tab' => 'Preview',
+ 'wikieditor-preview-changes-tab' => 'Changes',
+ 'wikieditor-preview-loading' => 'Loading...',
+ /* Preview Dialog */
+ 'wikieditor-previewDialog-preference' => 'Enable preview dialog',
+ 'wikieditor-previewDialog-tab' => 'Preview',
+ 'wikieditor-previewDialog-loading' => 'Loading...',
+ /* Publish */
+ 'wikieditor-publish-preference' => 'Enable step-by-step publishing',
+ 'wikieditor-publish-button-publish' => 'Publish',
+ 'wikieditor-publish-button-cancel' => 'Cancel',
+ 'wikieditor-publish-dialog-title' => 'Publish to {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Edit summary (briefly describe the changes you have made):',
+ 'wikieditor-publish-dialog-minor' => 'Minor edit',
+ 'wikieditor-publish-dialog-watch' => 'Watch this page',
+ 'wikieditor-publish-dialog-publish' => 'Publish',
+ 'wikieditor-publish-dialog-goback' => 'Go back',
+ /* Template Editor */
+ 'wikieditor-template-editor-preference' => 'Enable form-based editing of wiki templates',
+ 'wikieditor-template-editor-dialog-title' => 'Edit template',
+ 'wikieditor-template-editor-dialog-submit' => 'Update',
+ 'wikieditor-template-editor-dialog-cancel' => 'Cancel',
+ /* Templates */
+ 'wikieditor-templates-preference' => 'Enable template collapsing',
+ /* Table of Contents */
+ 'wikieditor-toc-preference' => 'Enable navigable table of contents',
+ 'wikieditor-toc-show' => 'Show contents',
+ 'wikieditor-toc-hide' => 'Hide contents',
+ /* Toolbar */
+ 'wikieditor-toolbar' => 'Editing toolbar',
+ 'wikieditor-toolbar-desc' => 'Edit page toolbar with enhanced usability',
+ 'wikieditor-toolbar-preference' => 'Enable enhanced editing toolbar',
+ 'wikieditor-toolbar-dialogs-preference' => 'Enable dialogs for inserting links, tables and more',
+ 'wikieditor-toolbar-hidesig' => 'Hide the signature button from pages in the main namespace',
+ 'wikieditor-toolbar-loading' => 'Loading...',
+ /* Toolbar - Main Section */
+ 'wikieditor-toolbar-tool-bold' => 'Bold',
+ 'wikieditor-toolbar-tool-bold-example' => 'Bold text',
+ 'wikieditor-toolbar-tool-italic' => 'Italic',
+ 'wikieditor-toolbar-tool-italic-example' => 'Italic text',
+ 'wikieditor-toolbar-tool-ilink' => 'Internal link',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Link title',
+ 'wikieditor-toolbar-tool-xlink' => 'External link (remember http:// prefix)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com link title',
+ 'wikieditor-toolbar-tool-link' => 'Link',
+ 'wikieditor-toolbar-tool-link-title' => 'Insert link',
+ 'wikieditor-toolbar-tool-link-int' => 'To a wiki page',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Target page or URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Page title or URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Text to display:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Text to be displayed',
+ 'wikieditor-toolbar-tool-link-ext' => 'To an external web page',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Link URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Link text:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Insert link',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Cancel',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Page exists',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Page does not exist',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Invalid title',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'External link',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Checking page existence...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'The title you specified is invalid.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'The URL you specified looks like it was intended as a link to another wiki page.
+Do you want to make it an internal link?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Internal link',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'External link',
+ 'wikieditor-toolbar-tool-link-empty' => "You did not enter anything to link to.",
+ 'wikieditor-toolbar-tool-file' => 'Embedded file',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Reference',
+ 'wikieditor-toolbar-tool-reference-example' => 'Insert footnote text here',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Cancel',
+ 'wikieditor-toolbar-tool-reference-title' => 'Insert reference',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Insert',
+ 'wikieditor-toolbar-tool-reference-text' => 'Reference text',
+ 'wikieditor-toolbar-tool-signature' => 'Signature and timestamp',
+ /* Toolbar - Advanced Section */
+ 'wikieditor-toolbar-section-advanced' => 'Advanced',
+ 'wikieditor-toolbar-tool-heading' => 'Heading',
+ 'wikieditor-toolbar-tool-heading-1' => 'Level 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Level 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Level 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Level 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Level 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Heading text',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Bulleted list',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Bulleted list item',
+ 'wikieditor-toolbar-tool-olist' => 'Numbered list',
+ 'wikieditor-toolbar-tool-olist-example' => 'Numbered list item',
+ 'wikieditor-toolbar-tool-indent' => 'Indentation',
+ 'wikieditor-toolbar-tool-indent-example' => 'Indented line',
+ 'wikieditor-toolbar-tool-nowiki' => 'No wiki formatting',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Insert non-formatted text here',
+ 'wikieditor-toolbar-tool-redirect' => 'Redirect',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Target page name',
+ 'wikieditor-toolbar-tool-big' => 'Big',
+ 'wikieditor-toolbar-tool-big-example' => 'Big text',
+ 'wikieditor-toolbar-tool-small' => 'Small',
+ 'wikieditor-toolbar-tool-small-example' => 'Small text',
+ 'wikieditor-toolbar-tool-superscript' => 'Superscript',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Superscript text',
+ 'wikieditor-toolbar-tool-subscript' => 'Subscript',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Subscript text',
+ 'wikieditor-toolbar-group-insert' => 'Insert',
+ 'wikieditor-toolbar-tool-gallery' => 'Picture gallery',
+ 'wikieditor-toolbar-tool-gallery-example' => "$1:Example.jpg|Caption1
+$1:Example.jpg|Caption2",
+ 'wikieditor-toolbar-tool-newline' => 'New line',
+ 'wikieditor-toolbar-tool-table' => 'Table',
+ 'wikieditor-toolbar-tool-table-example-old' => "-
+! header 1
+! header 2
+! header 3
+|-
+| row 1, cell 1
+| row 1, cell 2
+| row 1, cell 3
+|-
+| row 2, cell 1
+| row 2, cell 2
+| row 2, cell 3",
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Cell text',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Header text',
+ 'wikieditor-toolbar-tool-table-title' => 'Insert table',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rows',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Columns',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Add header row',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Style with borders',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Make table sortable',
+ 'wikieditor-toolbar-tool-table-example' => 'Example',
+ 'wikieditor-toolbar-tool-table-preview' => 'Preview',
+ 'wikieditor-toolbar-tool-table-insert' => 'Insert',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Cancel',
+ 'wikieditor-toolbar-tool-table-example-text' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut nec purus diam. Sed aliquam imperdiet nunc quis lacinia. Donec rutrum consectetur placerat. Sed volutpat neque non purus faucibus id ultricies enim euismod.',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Inserting a table with more than $1 cells is not possible with this dialog.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'You have not entered a valid number of rows or columns.',
+ 'wikieditor-toolbar-tool-table-zero' => 'You cannot insert a table with zero rows or columns.',
+ 'wikieditor-toolbar-tool-replace' => 'Search and replace',
+ 'wikieditor-toolbar-tool-replace-title' => 'Search and replace',
+ 'wikieditor-toolbar-tool-replace-search' => 'Search for:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Replace with:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Match case',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Treat search string as a regular expression',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Find next',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Replace next',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Replace all',
+ 'wikieditor-toolbar-tool-replace-close' => 'Close',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Your search did not match anything.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 replacement(s) made.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'You did not enter anything to search for.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'The regular expression you entered is invalid: $1',
+ /* Toolbar - Special characters Section */
+ 'wikieditor-toolbar-section-characters' => 'Special characters',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin extended',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbols',
+ 'wikieditor-toolbar-characters-page-greek' => 'Greek',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cyrillic',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabic',
+ 'wikieditor-toolbar-characters-page-arabicextended' => 'Arabic extended',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persian',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebrew',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ /* Toolbar - Help Section */
+ 'wikieditor-toolbar-section-help' => 'Help',
+ 'wikieditor-toolbar-help-heading-description' => 'Description',
+ 'wikieditor-toolbar-help-heading-syntax' => 'What you type',
+ 'wikieditor-toolbar-help-heading-result' => 'What you get',
+ 'wikieditor-toolbar-help-page-format' => 'Formatting',
+ 'wikieditor-toolbar-help-page-link' => 'Links',
+ 'wikieditor-toolbar-help-page-heading' => 'Headings',
+ 'wikieditor-toolbar-help-page-list' => 'Lists',
+ 'wikieditor-toolbar-help-page-file' => 'Files',
+ 'wikieditor-toolbar-help-page-reference' => 'References',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discussion',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Italic',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Italic text''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Italic text</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Bold',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Bold text'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Bold text</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Bold &amp; italic',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Bold &amp; italic text'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Bold &amp; italic text</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Internal link',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Page title|Link label]]<br />[[Page title]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Link label</a><br /><a href='#'>Page title</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'External link',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Link label]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Link label</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2nd level heading',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Heading text ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Heading text</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3rd level heading',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Heading text ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Heading text</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4th level heading',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Heading text ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Heading text</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5th level heading',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Heading text =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Heading text</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Bulleted list',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* List item<br />* List item',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>List item</li><li>List item</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Numbered list',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# List item<br /># List item',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>List item</li><li>List item</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Embedded file',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Caption text]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Caption text</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Reference',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Page text.&lt;ref name="test"&gt;[http://www.example.org Link text], additional text.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Page text.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Additional use of same reference',
+ 'wikieditor-toolbar-help-content-rereference-syntax' => '&lt;ref name="test" /&gt;',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Page text.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Display references',
+ 'wikieditor-toolbar-help-content-showreferences-syntax' => '&lt;references /&gt;',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Link text</a>, additional text.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Signature with timestamp',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-syntax' => '~~~~',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Username</a> (<a href='#' title='{{#special:mytalk}}'>talk</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signature',
+ 'wikieditor-toolbar-help-content-signature-syntax' => '~~~',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Username</a> (<a href='#' title='{{#special:mytalk}}'>talk</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indent',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normal text<br />:Indented text<br />::Indented text',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normal text<dl><dd>Indented text<dl><dd>Indented text</dd></dl></dd></dl>',
+);
+
+/** Message documentation (Message documentation)
+ * @author EugeneZelenko
+ * @author Hamilton Abreu
+ * @author Harald Khan
+ * @author Liangent
+ * @author Lloffiwr
+ * @author Mormegil
+ * @author Onecountry
+ * @author Prima klasy4na
+ * @author Raymond
+ * @author Siebrand
+ */
+$messages['qqq'] = array(
+ 'wikieditor-desc' => "{{desc}}
+
+I guess that 'feature-providing modules' means the same as 'modules providing features'.",
+ 'wikieditor-wikitext-tab' => 'Caption of the tab containing the edit box',
+ 'wikieditor-loading' => "Explanatory text for the temporary cover placed over the wikiediort while it's being assembled
+{{Identical|Loading}}",
+ 'wikieditor-preview-preference' => "Option in [[Special:Preferences]], tab ''{{int:prefs-editing}}''",
+ 'wikieditor-preview-tab' => 'Caption of the tab containing the preview
+
+{{Identical|Preview}}',
+ 'wikieditor-preview-changes-tab' => "Caption of the tab containing a diff of the user's changes, à la ''{{int:Showdiff}}'' ({{msg-mw|Showdiff|notext=1}}).
+
+{{Identical|Change}}",
+ 'wikieditor-preview-loading' => 'Alt text for spinner displayed while preview is being loaded
+{{Identical|Loading}}',
+ 'wikieditor-previewDialog-tab' => 'Caption of the tab containing the preview
+
+{{Identical|Preview}}',
+ 'wikieditor-previewDialog-loading' => 'Alt text for spinner displayed while preview is being loaded
+{{Identical|Loading}}',
+ 'wikieditor-publish-preference' => "Option in [[Special:Preferences]], tab ''{{int:prefs-editing}}''",
+ 'wikieditor-publish-button-publish' => 'Button to the right of the Edit/Preview tabs that opens a dialog window that lets the user save their edit
+
+{{Identical|Publish}}',
+ 'wikieditor-publish-button-cancel' => 'Button to the right of the Edit/Preview tabs that has the same effect as the {{msg-mw|Cancel}} link below the edit box.
+
+{{Identical|Cancel}}',
+ 'wikieditor-publish-dialog-title' => 'Title of the dialog that opens when the user clicks the Publish button',
+ 'wikieditor-publish-dialog-summary' => 'Label for the edit summary textbox in the dialog that opens when the user clicks the Publish button. See also {{msg-mw|Summary}}.',
+ 'wikieditor-publish-dialog-minor' => 'Label for the minor edit checkbox in the dialog that opens when the user clicks the Publish button. See also {{msg-mw|Minoredit}}',
+ 'wikieditor-publish-dialog-watch' => 'Label for the watch checkbox in the dialog that opens when the user clicks the Publish button
+
+{{Identical|Watch this page}}',
+ 'wikieditor-publish-dialog-publish' => "Button that saves the user's edit in the dialog that opens when the user clicks the Publish button
+
+{{Identical|Publish}}",
+ 'wikieditor-publish-dialog-goback' => 'Button that closes the dialog that opens when the user clicks the Publish button
+
+{{Identical|Go back}}',
+ 'wikieditor-template-editor-dialog-submit' => '{{Identical|Update}}',
+ 'wikieditor-template-editor-dialog-cancel' => '{{Identical|Cancel}}',
+ 'wikieditor-toc-preference' => "Option at [[Special:Preferences]], tab ''{{int:prefs-editing}}''",
+ 'wikieditor-toc-show' => 'Label of the show/hide link when the navigable table of contents is hidden',
+ 'wikieditor-toc-hide' => 'Label of the show/hide link when the navigable table of contents is visible',
+ 'wikieditor-toolbar-desc' => '{{desc}}',
+ 'wikieditor-toolbar-preference' => 'Option in [[Special:Preferences]]',
+ 'wikieditor-toolbar-dialogs-preference' => "Caption of a checkbox on [[Special:Preferences]] (''editing'' tab), enabling helper dialogs for various features of the advanced edit toolbar (e.g. inserting links or tables).
+{{Identical|Enable dialogs for inserting links, tables and more}}",
+ 'wikieditor-toolbar-loading' => '{{Identical|Loading}}',
+ 'wikieditor-toolbar-tool-bold' => '{{Identical|Bold}}',
+ 'wikieditor-toolbar-tool-bold-example' => '{{Identical|Bold text}}',
+ 'wikieditor-toolbar-tool-italic' => '{{Identical|Italic}}',
+ 'wikieditor-toolbar-tool-italic-example' => '{{Identical|Italic text}}',
+ 'wikieditor-toolbar-tool-ilink' => '{{Identical|Internal link}}',
+ 'wikieditor-toolbar-tool-xlink' => '{{Identical|External link (remember http:// prefix)}}',
+ 'wikieditor-toolbar-tool-xlink-example' => "www.example.com is not a real website, but it has been reserved to use in software documentation, and will never be sold or used for advertising. If you translate the word example and try to go to that web address then you might get a message that it doesn't exist. But somebody may have created a commercial web page for that address, such as www.Beispiel.org, using the German word for example. It is therefore recommended that you do not translate http://www.example.com at all. If you do wish to translate it you should first check where the translated link takes you, and bear in mind that anybody could purchase that name in the future.",
+ 'wikieditor-toolbar-tool-link' => '{{Identical|Link}}',
+ 'wikieditor-toolbar-tool-link-cancel' => '{{Identical|Cancel}}',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Text shown when the title the user entered exists',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Text shown when the title the user entered does not exist',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Text shown when the title the user entered is invalid',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Text shown when the link target the user entered points to an external web site
+{{Identical|External link}}',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'alt text and title text for the image shown while the title the user entered is being checked for existence',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'This message appears when you try to create an internal link but the page title in the link is invalid.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => '{{Identical|Internal link}}',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => '{{Identical|External link}}',
+ 'wikieditor-toolbar-tool-file' => '{{Identical|Embedded file}}',
+ 'wikieditor-toolbar-tool-reference' => '{{Identical|Reference}}',
+ 'wikieditor-toolbar-tool-reference-cancel' => '{{Identical|Cancel}}',
+ 'wikieditor-toolbar-tool-reference-title' => 'Title of insert reference dialog. This text is on the very top bar of the dialog.',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Button text for the insert action of the insert reference dialog.
+{{Identical|Insert}}',
+ 'wikieditor-toolbar-tool-reference-text' => 'Label for the input field on the insert reference dialog.',
+ 'wikieditor-toolbar-tool-signature' => '{{Identical|Signature with timestamp}}',
+ 'wikieditor-toolbar-section-advanced' => '{{Identical|Advanced}}',
+ 'wikieditor-toolbar-group-format' => '{{Identical|Format}}',
+ 'wikieditor-toolbar-tool-ulist' => '{{Identical|Bulleted list}}',
+ 'wikieditor-toolbar-tool-olist' => '{{Identical|Numbered list}}',
+ 'wikieditor-toolbar-tool-nowiki' => '工具æ æ³¨é‡Š',
+ 'wikieditor-toolbar-tool-redirect' => "Tooltip for icon to place wiki text for a redirect in the edit box. The label before these icons says 'Insert'. 'Redirect' is a noun here.
+{{Identical|Redirect}}",
+ 'wikieditor-toolbar-tool-redirect-example' => "Target is an adjective describing the page name. You could use 'destination' instead of 'target'. 'Target page name' is the destination of the redirect and appears when the wikitext for a redirect is inserted in the text box thus
+ <nowiki>#REDIRECT [[target page name]]</nowiki>",
+ 'wikieditor-toolbar-tool-small' => '{{Identical|Small}}',
+ 'wikieditor-toolbar-group-insert' => '{{Identical|Insert}}',
+ 'wikieditor-toolbar-tool-table' => '{{Identical|Table}}',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => '[[File:Wikieditor-toolbar-tool-table.png|thumb]] See screenshot.',
+ 'wikieditor-toolbar-tool-table-example-header' => '[[File:Wikieditor-toolbar-tool-table.png|thumb]] See screenshot.',
+ 'wikieditor-toolbar-tool-table-title' => '[[File:Wikieditor-toolbar-tool-table.png|thumb]] See screenshot.',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => '[[File:Wikieditor-toolbar-tool-table.png|thumb]] See screenshot.',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => '[[File:Wikieditor-toolbar-tool-table.png|thumb]] See screenshot.',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => '[[File:Wikieditor-toolbar-tool-table.png|thumb]] See screenshot.',
+ 'wikieditor-toolbar-tool-table-wikitable' => '[[File:Wikieditor-toolbar-tool-table.png|thumb]] See screenshot.',
+ 'wikieditor-toolbar-tool-table-sortable' => '[[File:Wikieditor-toolbar-tool-table.png|thumb]] See screenshot.',
+ 'wikieditor-toolbar-tool-table-example' => '{{Identical|Example}}
+ [[File:Wikieditor-toolbar-tool-table.png|thumb]]This is a noun. Important to indicate that this is not a preview of what the table will look like, but an example of what it will look similar to. See screenshot.',
+ 'wikieditor-toolbar-tool-table-preview' => '{{Identical|Preview}}
+
+[[File:Wikieditor-toolbar-tool-table.png|thumb]]This is a noun. See screenshot.',
+ 'wikieditor-toolbar-tool-table-insert' => '{{Identical|Insert}}
+
+[[File:Wikieditor-toolbar-tool-table.png|thumb]] See screenshot.',
+ 'wikieditor-toolbar-tool-table-cancel' => '{{Identical|Cancel}}',
+ 'wikieditor-toolbar-tool-table-example-text' => 'Placeholder text to help the table example appear to be in the context of an article. Should be lorem ipsum, or equivalent.',
+ 'wikieditor-toolbar-tool-table-toomany' => '[[file:Bulbgraph.png|left|22px]]
+This message does not support PLURAL on $1.',
+ 'wikieditor-toolbar-tool-replace' => '{{Identical|Search and replace}}',
+ 'wikieditor-toolbar-tool-replace-title' => '{{Identical|Search and replace}}',
+ 'wikieditor-toolbar-tool-replace-search' => '{{Identical|Search}}',
+ 'wikieditor-toolbar-tool-replace-case' => 'This could as well be translated as "case sensitive search" -
+"case" refers to character case, that is upper case, or lower case.',
+ 'wikieditor-toolbar-tool-replace-regex' => 'A "regular expression" is a syntax to find strings based on patterns, for more see [[wikipedia:Regular expression|the Wikipedia article]].
+
+More notes:
+* "Regular expression" is mostly a programmer tool, which is sometimes exposed to normal users too. It\'s almost as an programming language, but it is used to describe different kinds of strings (sometimes also called patterns and pattern matching), and is often used to change (parts of) the strings too.',
+ 'wikieditor-toolbar-tool-replace-close' => '{{Identical|Close}}',
+ 'wikieditor-toolbar-tool-replace-success' => '[[file:Bulbgraph.png|left|22px]]
+This message does not support PLURAL on $1.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => '$1 is a browser-supplied error message, probably in English, possibly in the browser language.
+
+A "regular expression" is a syntax to find strings based on patterns, for more see [[wikipedia:Regular expression|the Wikipedia article]].
+
+Regular expressions are mostly a programmer tool, which is sometimes exposed to normal users too. It\'s almost as an programming language, but it is used to describe different kinds of strings (sometimes also called patterns and pattern matching), and is often used to change (parts of) the strings too.',
+ 'wikieditor-toolbar-characters-page-latin' => 'This is the name of a script, or alphabet, not a language',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA means a script: "international phonetic alphabet" here, and not "international phonetic association", the organization behind it.',
+ 'wikieditor-toolbar-characters-page-greek' => 'This is the name of a script, or alphabet, not a language.',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'This is the name of a script, or a group of alphabets, used mainly in Eastern Europe and North and Central Asia.',
+ 'wikieditor-toolbar-characters-page-arabic' => 'This is the name of a script, or alphabet, not a language.',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'This is the name of a script, or alphabet, not a language.',
+ 'wikieditor-toolbar-section-help' => '{{Identical|Help}}',
+ 'wikieditor-toolbar-help-heading-description' => '{{Identical|Description}}',
+ 'wikieditor-toolbar-help-page-link' => '{{Identical|Links}}',
+ 'wikieditor-toolbar-help-page-list' => '{{Identical|List}}',
+ 'wikieditor-toolbar-help-page-file' => '{{Identical|File}}',
+ 'wikieditor-toolbar-help-page-reference' => '{{Identical|Reference}}',
+ 'wikieditor-toolbar-help-page-discussion' => '{{Identical|Discussion}}',
+ 'wikieditor-toolbar-help-content-italic-description' => '{{Identical|Italic}}',
+ 'wikieditor-toolbar-help-content-italic-syntax' => '{{Identical|Italic text}}',
+ 'wikieditor-toolbar-help-content-italic-result' => '{{Identical|Italic text}}',
+ 'wikieditor-toolbar-help-content-bold-description' => '{{Identical|Bold}}',
+ 'wikieditor-toolbar-help-content-bold-syntax' => '{{Identical|Bold text}}',
+ 'wikieditor-toolbar-help-content-bold-result' => '{{Identical|Bold text}}',
+ 'wikieditor-toolbar-help-content-ilink-description' => '{{Identical|Internal link}}',
+ 'wikieditor-toolbar-help-content-xlink-description' => '{{Identical|External link}}',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => "www.example.org is not a real website, but it has been reserved to use in software documentation. If you translate the word example and try to go to that web address then you might get a message that it doesn't exist. But somebody may have created a commercial web page for that address, such as www.Beispiel.org, using the German word for example. It is therefore recommended that you do not translate http://www.example.org at all. If you do wish to translate it you should first check where the translated link takes you.",
+ 'wikieditor-toolbar-help-content-xlink-result' => "www.example.org is not a real website, but it has been reserved to use in software documentation. If you translate the word example and try to go to that web address then you might get a message that it doesn't exist. But somebody may have created a commercial web page for that address, such as www.Beispiel.org, using the German word for example. It is therefore recommended that you do not translate http://www.example.org at all. If you do wish to translate it you should first check where the translated link takes you.",
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '{{Identical|Heading text}}',
+ 'wikieditor-toolbar-help-content-heading2-result' => '{{Identical|Heading text}}',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '{{Identical|Heading text}}',
+ 'wikieditor-toolbar-help-content-heading3-result' => '{{Identical|Heading text}}',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '{{Identical|Heading text}}',
+ 'wikieditor-toolbar-help-content-heading4-result' => '{{Identical|Heading text}}',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '{{Identical|Heading text}}',
+ 'wikieditor-toolbar-help-content-heading5-result' => '{{Identical|Heading text}}',
+ 'wikieditor-toolbar-help-content-ulist-description' => '{{Identical|Bulleted list}}',
+ 'wikieditor-toolbar-help-content-olist-description' => '{{Identical|Numbered list}}',
+ 'wikieditor-toolbar-help-content-file-description' => '{{Identical|Embedded file}}',
+ 'wikieditor-toolbar-help-content-file-syntax' => "{{doc-important|''thumb'' is a magic word. Leave it untranslated!}}",
+ 'wikieditor-toolbar-help-content-file-result' => '{{doc-important|Do not translate anything except "Caption text" (twice) and "Enlarge" (to "{{int:thumbnail-more}}").}}',
+ 'wikieditor-toolbar-help-content-reference-description' => '{{Identical|Reference}}',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'I suggest leaving the <code>name="test"</code> string in English
+
+www.example.org is not a real website, but it has been reserved to use in software documentation. If you translate the word example and try to go to that web address then you might get a message that it doesn\'t exist. But somebody may have created a commercial web page for that address, such as www.Beispiel.org, using the German word for example. It is therefore recommended that you do not translate http://www.example.org at all. If you do wish to translate it you should first check where the translated link takes you.',
+ 'wikieditor-toolbar-help-content-rereference-syntax' => '{{Optional}}',
+ 'wikieditor-toolbar-help-content-showreferences-syntax' => '{{Optional}}',
+ 'wikieditor-toolbar-help-content-showreferences-result' => 'For the <code><nowiki><li></nowiki></code> tag’s <code>id</code> attribute, non-ASCII characters are URL-encoded as follows: a period (<code>.</code>) followed by a capital hexadecimal code. For example, <code><nowiki><ref name="thử"></nowiki></code> produces <code><nowiki><li id="cite_note-th.E1.BB.AD-0"></nowiki></code>.
+
+www.example.org is not a real website, but it has been reserved to use in software documentation. If you translate the word example and try to go to that web address then you might get a message that it doesn\'t exist. But somebody may have created a commercial web page for that address, such as www.Beispiel.org, using the German word for example. It is therefore recommended that you do not translate http://www.example.org at all. If you do wish to translate it you should first check where the translated link takes you.',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => '{{Identical|Signature with timestamp}}',
+ 'wikieditor-toolbar-help-content-signature-description' => '{{Identical|Signature}}',
+);
+
+/** Abkhazian (ÐÒ§Ñуа)
+ * @author Temuri rajavi
+ */
+$messages['ab'] = array(
+ 'wikieditor-toolbar-characters-page-latin' => 'Ðлаҭын',
+ 'wikieditor-toolbar-characters-page-greek' => 'Ðберзентә',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Ðкирилица',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Ðраҧтә',
+ 'wikieditor-toolbar-section-help' => 'Ðцхыраара',
+ 'wikieditor-toolbar-help-page-file' => 'Ðфаилқәа',
+ 'wikieditor-toolbar-help-page-discussion' => 'Ðхцәажәара',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='Special:MyPage'> Ðлахәыла ахьʒ</a> (<a href='#' title='Special:MyTalk'> ахцәажәара </a>)",
+);
+
+/** Afrikaans (Afrikaans)
+ * @author Adriaan
+ * @author Anrie
+ * @author Naudefj
+ */
+$messages['af'] = array(
+ 'wikieditor' => 'Uitgebreide teksverwerker vir wikiteks',
+ 'wikieditor-desc' => "Voorsien 'n uitbreibare wikiteks-verwerker en modules met bykomende funksies",
+ 'wikieditor-wikitext-tab' => 'Wikiteks',
+ 'wikieditor-loading' => 'Laai tans',
+ 'wikieditor-preview-preference' => 'Wysig en voorskou langs mekaar',
+ 'wikieditor-preview-tab' => 'Voorskou',
+ 'wikieditor-preview-changes-tab' => 'Wysigings',
+ 'wikieditor-preview-loading' => 'Besig om te laai...',
+ 'wikieditor-previewDialog-preference' => 'Aktiveer voorskou-dialoog',
+ 'wikieditor-previewDialog-tab' => 'Voorskou',
+ 'wikieditor-previewDialog-loading' => 'Besig om te laai...',
+ 'wikieditor-publish-preference' => 'Aktiveer stap-vir-stap publisering',
+ 'wikieditor-publish-button-publish' => 'Publiseer',
+ 'wikieditor-publish-button-cancel' => 'Kanselleer',
+ 'wikieditor-publish-dialog-title' => 'Publiseer na {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Wysigingsopsomming (beskryf kortliks wat u verander het):',
+ 'wikieditor-publish-dialog-minor' => 'Klein wysiging',
+ 'wikieditor-publish-dialog-watch' => 'Hou die bladsy dop',
+ 'wikieditor-publish-dialog-publish' => 'Publiseer',
+ 'wikieditor-publish-dialog-goback' => 'Terug',
+ 'wikieditor-template-editor-preference' => 'Aktiveer vorm-gebaseerde wysiging van wikisjablone',
+ 'wikieditor-template-editor-dialog-title' => 'Wysig sjabloon',
+ 'wikieditor-template-editor-dialog-submit' => 'Bywerk',
+ 'wikieditor-template-editor-dialog-cancel' => 'Kanselleer',
+ 'wikieditor-templates-preference' => 'Inklapbare sjablone toelaat',
+ 'wikieditor-toc-preference' => 'Aktiveer navigeerbare inhoudsopgawe',
+ 'wikieditor-toc-show' => 'Wys inhoud',
+ 'wikieditor-toc-hide' => 'Versteek inhoud',
+ 'wikieditor-toolbar' => 'Wysigingswerksbalk',
+ 'wikieditor-toolbar-desc' => 'Wysigingsbalk met verhoogde bruikbaarheid',
+ 'wikieditor-toolbar-preference' => 'Gebruik gevorderde redigeringsbalk',
+ 'wikieditor-toolbar-dialogs-preference' => 'Aktiveer dialoog vir die byvoeging van skakels, tabelle en meer',
+ 'wikieditor-toolbar-loading' => 'Besig om te laai...',
+ 'wikieditor-toolbar-tool-bold' => 'Vetdruk',
+ 'wikieditor-toolbar-tool-bold-example' => 'Vetgedrukte teks',
+ 'wikieditor-toolbar-tool-italic' => 'Skuinsdruk',
+ 'wikieditor-toolbar-tool-italic-example' => 'Skuinsgedrukte teks',
+ 'wikieditor-toolbar-tool-ilink' => 'Interne skakel',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Skakel se titel',
+ 'wikieditor-toolbar-tool-xlink' => 'Eksterne skakel (onthou http:// vooraan)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.voorbeeld.co.za skakel se titel',
+ 'wikieditor-toolbar-tool-link' => 'Skakel',
+ 'wikieditor-toolbar-tool-link-title' => 'Voeg skakel by',
+ 'wikieditor-toolbar-tool-link-int' => "Na 'n wikibladsy",
+ 'wikieditor-toolbar-tool-link-int-target' => 'Bladsynaam:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Bladsynaam of URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Skakel se teks:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Sleutel die teks wat vertoon moet word in',
+ 'wikieditor-toolbar-tool-link-ext' => "Na 'n eksterne webbladsy",
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Skakel se teks:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Skakel byvoeg',
+ 'wikieditor-toolbar-tool-link-cancel' => 'kanselleer',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Die bladsy bestaan al',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Die bladsy bestaan nie',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Ongeldige bladsynaam',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Eksterne skakel',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Kontroleer of die bladsy reeds bestaan...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Die titel wat u verskaf het is ongeldig.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "Die URL wat u verskaf het lyk asof dit bedoel is as skakel na 'n ander wikibladsy.
+Wil u dit na 'n interne skakel verander?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Interne skakel',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Eksterne skakel',
+ 'wikieditor-toolbar-tool-link-empty' => 'U het niks ingesleutel om na te skakel nie.',
+ 'wikieditor-toolbar-tool-file' => 'Ingebedde lêer',
+ 'wikieditor-toolbar-tool-file-example' => 'Voorbeeld.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Verwysing',
+ 'wikieditor-toolbar-tool-reference-example' => 'Voeg teks vir voetnota hier in',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Kanselleer',
+ 'wikieditor-toolbar-tool-reference-title' => 'Verwysing invoeg',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Invoeg',
+ 'wikieditor-toolbar-tool-reference-text' => 'Verwysingteks',
+ 'wikieditor-toolbar-tool-signature' => 'Handtekening en tydstempel',
+ 'wikieditor-toolbar-section-advanced' => 'Gevorderde funksies',
+ 'wikieditor-toolbar-tool-heading' => 'Opskrif',
+ 'wikieditor-toolbar-tool-heading-1' => 'Vlak 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Vlak 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Vlak 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Vlak 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Vlak 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Opskrifteks',
+ 'wikieditor-toolbar-group-format' => 'Formatteer:',
+ 'wikieditor-toolbar-tool-ulist' => 'Ongenommerde lys',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Lyn in ongenommerde lys',
+ 'wikieditor-toolbar-tool-olist' => 'Genommerde lys',
+ 'wikieditor-toolbar-tool-olist-example' => 'Lyn in genommerde lys',
+ 'wikieditor-toolbar-tool-indent' => 'Indentasie',
+ 'wikieditor-toolbar-tool-indent-example' => 'Ingekeepte lyn',
+ 'wikieditor-toolbar-tool-nowiki' => 'Geen wiki-formattering',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Ongeformatteerde teks hier invoeg',
+ 'wikieditor-toolbar-tool-redirect' => 'Aanstuur',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Teikenbladsynaam',
+ 'wikieditor-toolbar-tool-big' => 'Groot',
+ 'wikieditor-toolbar-tool-big-example' => 'Groot gedrukte teks',
+ 'wikieditor-toolbar-tool-small' => 'Klein',
+ 'wikieditor-toolbar-tool-small-example' => 'Klein gedrukte teks',
+ 'wikieditor-toolbar-tool-superscript' => 'Boskrif',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Teks in boskrif',
+ 'wikieditor-toolbar-tool-subscript' => 'Onderskrif',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Teks in onderskrif',
+ 'wikieditor-toolbar-group-insert' => 'Invoeg',
+ 'wikieditor-toolbar-tool-gallery' => 'Fotogalery',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Voorbeeld1|Byskrif1
+$1:Voorbeeld2|Byskrif2',
+ 'wikieditor-toolbar-tool-newline' => 'Nuwe lyn',
+ 'wikieditor-toolbar-tool-table' => 'Tabel',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! opskrif 1
+! opskrif 2
+! opskrif 3
+|-
+| ry 1, sel 1
+| ry 1, sel 2
+| ry 1, sel 3
+|-
+| ry 2, sel 1
+| ry 2, sel 2
+| ry 2, sel 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Selteks',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Opskrifteks',
+ 'wikieditor-toolbar-tool-table-title' => 'Voeg tabel in',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rye',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolomme',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Voeg opskriflyn in',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Styl met rante',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Maak tabel sorteerbaar',
+ 'wikieditor-toolbar-tool-table-example' => 'Selteks',
+ 'wikieditor-toolbar-tool-table-preview' => 'Voorskou',
+ 'wikieditor-toolbar-tool-table-insert' => 'Invoeg',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Kanselleer',
+ 'wikieditor-toolbar-tool-table-toomany' => "U kan nie 'n tabel met meer as $1 selle met die dialoog invoeg nie.",
+ 'wikieditor-toolbar-tool-table-invalidnumber' => "U het 'n ongeldige aantal lyne of kolomme verskaf.",
+ 'wikieditor-toolbar-tool-table-zero' => "U kan nie 'n tabel sonder lyne en kolomme invoeg nie.",
+ 'wikieditor-toolbar-tool-replace' => 'Soek en vervang',
+ 'wikieditor-toolbar-tool-replace-title' => 'Soek en vervang',
+ 'wikieditor-toolbar-tool-replace-search' => 'Soek na:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Vervang met:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Gevoelig vir hoofletters',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Hanteer die soekstring as \'n "regular expression"',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Vind volgende',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Vervang volgende',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Vervang alles',
+ 'wikieditor-toolbar-tool-replace-close' => 'Sluit',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'U soektog het geen resultate opgelewer nie.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 vervangings gemaak.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'U het niks ingesleutel om na te soek nie.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Die "regular expression" wat u verskaf het is ongeldig: $1',
+ 'wikieditor-toolbar-section-characters' => 'Spesiale karakters',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latyns',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latyns uitgebreid',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IFA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simbole',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grieks',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cyrillies',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabies',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persiese',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebreeus',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengaals',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Hulp',
+ 'wikieditor-toolbar-help-heading-description' => 'Beskrywing',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Wat u tik',
+ 'wikieditor-toolbar-help-heading-result' => 'Wat u sal sien',
+ 'wikieditor-toolbar-help-page-format' => 'Formatering',
+ 'wikieditor-toolbar-help-page-link' => 'Skakels',
+ 'wikieditor-toolbar-help-page-heading' => 'Opskrifte',
+ 'wikieditor-toolbar-help-page-list' => 'Lyste',
+ 'wikieditor-toolbar-help-page-file' => 'Lêers',
+ 'wikieditor-toolbar-help-page-reference' => 'Verwysings',
+ 'wikieditor-toolbar-help-page-discussion' => 'Bespreking',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursief',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursiewe teks''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursief gedrukte teks</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Vet',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Vetgedrukte teks'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Vetgedrukte teks</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Vet &amp; kursief',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Vet- en kursief gedrukte teks'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<em><strong>Vet- en kursief gedrukte teks</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Interne skakel',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Bladsynaam|Skakel se teks]]<br />[[Bladsynaam]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Etiket van skakel</a><br /><a href='#'>Bladsynaam</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Eksterne skakel',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.voorbeeld.org Skakel se etiket]<br />[http://www.voorbeeld.org]<br />http://www.voorbeeld.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Skakel se etiket</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.voorbeeld.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Vlak 2 opskrif',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Opskrifteks ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Opskrifteks</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Vlak 3 opskrif',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Opskrifteks ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Opskrifteks</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Vlak 4 opskrif',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Opskrifteks ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Opskrifteks</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Vlak 5 opskrif',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Opskrifteks =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Opskrifteks</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Ongenommerde lys',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Lyn in ongenommerde lys<br />* Lyn in ongenommerde lys',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Lyn in ongenommerde lys</li><li>Lyn in ongenommerde lys</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Genommerde lys',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Lyn in genommerde lys<br /># Lyn in genommerde lys',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Lyn in genommerde lys</li><li>Lyn in genommerde lys</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Ingebedde lêer',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Voorbeeld.png|thumb|Byskrif]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Byskrif' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Vergroot' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Byskrif</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Verwysing',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Bladsyteks.&lt;ref name="test"&gt;[http://www.voorbeeld.org Skakel se teks], addisionele teks.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Bladsyteks <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Hergebruik van dieselfde verwysing',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Bladsyteks <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Wys verwysings',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.voorbeeld.org' class='external text' href='#'>Skakel se teks</a>, addisionele teks.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Handtekening met tydstempel',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Gebruikersnaam</a> (<a href='#' title='{{#special:mytalk}}'>bespreking</a>) 15:54, 10 Junie 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Handtekening',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Gebruikersnaam</a> (<a href='#' title='{{#special:mytalk}}'>bespreking</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indenteer',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normale teks<br />: Geïndenteerde teks<br />::Geïndenteerde teks',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normale teks<dl><dd>Geïndenteerde teks<dl><dd>Geïndenteerde teks</dd></dl></dd></dl>',
+);
+
+/** Gheg Albanian (Gegë)
+ * @author Mdupont
+ */
+$messages['aln'] = array(
+ 'wikieditor' => 'redaktimi i avancuar wikitext interface',
+ 'wikieditor-desc' => 'Siguron një ndërfaqe të vazhdohet redaktimi wikitext dhe module shumë me metrazh të siguruar',
+ 'wikieditor-wikitext-tab' => 'Wikitext',
+ 'wikieditor-loading' => 'Ngarkim',
+ 'wikieditor-preview-preference' => 'Aktivizo-krah për krah preview',
+ 'wikieditor-preview-tab' => 'Preview',
+ 'wikieditor-preview-changes-tab' => 'Ndryshimet',
+ 'wikieditor-preview-loading' => 'Loading ...',
+ 'wikieditor-previewDialog-tab' => 'Preview',
+ 'wikieditor-previewDialog-loading' => 'Loading ...',
+ 'wikieditor-publish-preference' => 'Aktivizo-hap pas hapi botuese',
+ 'wikieditor-publish-button-publish' => 'Publikoj',
+ 'wikieditor-publish-button-cancel' => 'Anuloj',
+ 'wikieditor-publish-dialog-title' => 'Publikimi në {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'përmbledhje Edit (përshkruaj shkurtimisht ndryshimet që keni bërë):',
+ 'wikieditor-publish-dialog-minor' => 'Minor redakto',
+ 'wikieditor-publish-dialog-watch' => 'Watch këtë faqe',
+ 'wikieditor-publish-dialog-publish' => 'Publikoj',
+ 'wikieditor-publish-dialog-goback' => 'Kthehem',
+ 'wikieditor-template-editor-preference' => 'Lejo redaktimin e bazuar në formë të wiki templates',
+ 'wikieditor-template-editor-dialog-title' => 'Edit template',
+ 'wikieditor-template-editor-dialog-submit' => 'Update',
+ 'wikieditor-template-editor-dialog-cancel' => 'Anuloj',
+ 'wikieditor-templates-preference' => 'Aktivizo template kolaps',
+ 'wikieditor-toc-preference' => 'Tabela e përmbajtjeve Aktivizo lundrueshëm',
+ 'wikieditor-toc-show' => 'Përmbajtja Show',
+ 'wikieditor-toc-hide' => 'Përmbajtja Hide',
+ 'wikieditor-toolbar' => 'Editing toolbar',
+ 'wikieditor-toolbar-desc' => 'toolbar Redakto faqe me të përdorshmërisë zgjeruar',
+ 'wikieditor-toolbar-preference' => 'Lejo redaktimin zgjeruar toolbar',
+ 'wikieditor-toolbar-dialogs-preference' => 'dialogs Aktivizo për futjen e lidhjeve, tavolina dhe më shumë',
+ 'wikieditor-toolbar-loading' => 'Loading ...',
+ 'wikieditor-toolbar-tool-bold' => 'Guximtar',
+ 'wikieditor-toolbar-tool-bold-example' => 'Tekst i trashë',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Teksti i pjerrët',
+ 'wikieditor-toolbar-tool-ilink' => 'Lidhje të Brendshme',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titulli Link',
+ 'wikieditor-toolbar-tool-xlink' => 'Lidhje e jashtme (most harro prefiksin http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'Lidhje http://www.example.com Titulli',
+ 'wikieditor-toolbar-tool-link' => 'Lidhje',
+ 'wikieditor-toolbar-tool-link-title' => 'Vendos Lidhje',
+ 'wikieditor-toolbar-tool-link-int' => 'Për një faqe wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'faqe synuar ose URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titulli i faqes ose URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Tekst për të shfaqur:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => "Tekst për t'u shfaqur",
+ 'wikieditor-toolbar-tool-link-ext' => 'Për një faqe të jashtme interneti',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL Link:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'text Link:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Vendos Lidhje',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Anuloj',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Page ekziston',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Faqja nuk ekziston',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Titulli i pavlefshëm',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Lidhje e jashtme',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Kontrollit të ekzistencës faqe ...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Titulli ju specifikuar është i pavlefshëm.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL-in që të specifikuar duket si ajo ishte menduar si një lidhje në faqe të tjera wiki.
+A doni ta bërë atë një lidhje të brendshme?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Lidhje të Brendshme',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Lidhje e jashtme',
+ 'wikieditor-toolbar-tool-link-empty' => 'Ju nuk kanë hyrë në ndonjë gjë për të link.',
+ 'wikieditor-toolbar-tool-file' => 'Embedded file',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referim',
+ 'wikieditor-toolbar-tool-reference-example' => 'Vendos tekst shënimin këtu',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Anuloj',
+ 'wikieditor-toolbar-tool-reference-title' => 'Fut referencë',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Kall',
+ 'wikieditor-toolbar-tool-reference-text' => 'tekstit Referenca',
+ 'wikieditor-toolbar-tool-signature' => 'Nënshkrimi dhe gjithë kohë',
+ 'wikieditor-toolbar-section-advanced' => 'I avancuar',
+ 'wikieditor-toolbar-tool-heading' => 'Titull',
+ 'wikieditor-toolbar-tool-heading-1' => 'Niveli 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Niveli 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Niveli 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Niveli 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Niveli 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Titull tekst',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista e bulleted',
+ 'wikieditor-toolbar-tool-ulist-example' => 'pika bulleted lista',
+ 'wikieditor-toolbar-tool-olist' => 'Lista e Numëruar',
+ 'wikieditor-toolbar-tool-olist-example' => 'pika Numëruar lista',
+ 'wikieditor-toolbar-tool-indent' => 'Gjurmë',
+ 'wikieditor-toolbar-tool-indent-example' => 'Shkarko prerë',
+ 'wikieditor-toolbar-tool-nowiki' => 'Nuk formatimit wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Vendos tekst këtu nuk duhet të formatohet',
+ 'wikieditor-toolbar-tool-redirect' => 'Përcjellëse',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Emri i synuar faqe',
+ 'wikieditor-toolbar-tool-big' => 'I madh',
+ 'wikieditor-toolbar-tool-big-example' => 'Big tekst',
+ 'wikieditor-toolbar-tool-small' => 'I vogël',
+ 'wikieditor-toolbar-tool-small-example' => 'tekstin e vogla',
+ 'wikieditor-toolbar-tool-superscript' => 'Indeks i sipërm',
+ 'wikieditor-toolbar-tool-superscript-example' => 'tekstit Sipërshkrim',
+ 'wikieditor-toolbar-tool-subscript' => 'Subscript',
+ 'wikieditor-toolbar-tool-subscript-example' => 'tekstit Subscript',
+ 'wikieditor-toolbar-group-insert' => 'Kall',
+ 'wikieditor-toolbar-tool-gallery' => 'galeri artesh',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1: Example.jpg|Caption1
+$1: Example.jpg|Caption2',
+ 'wikieditor-toolbar-tool-newline' => 'Linjë e re',
+ 'wikieditor-toolbar-tool-table' => 'Tryezë',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! header 1
+! header 2
+! header 3
+|-
+| rresht 1, qelizë 1
+| rresht 1, qelizë 2
+| rresht 1, qelizë 3
+| -
+| rresht 2, qelizë 1
+| rresht 2, qelizë 2
+| rresht 2, qelizë 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'tekstit qelizë',
+ 'wikieditor-toolbar-tool-table-example-header' => 'tekstit Header',
+ 'wikieditor-toolbar-tool-table-title' => 'Fut tabelë',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rreshtave',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolumne',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Shto rreshtit',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Logo me kufij',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Bëni tryezë llojllojshme',
+ 'wikieditor-toolbar-tool-table-example' => 'Shembull',
+ 'wikieditor-toolbar-tool-table-preview' => 'Preview',
+ 'wikieditor-toolbar-tool-table-insert' => 'Kall',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Anuloj',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Futur një tavolinë me shumë se qelizat e $1 nuk është e mundur me këtë dialog.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Ju nuk keni hyrë në një numër të vlefshme të rreshtave dhe kolonave.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ju nuk mund të vendos një tabelë me zero rreshta ose kolona.',
+ 'wikieditor-toolbar-tool-replace' => 'Kërkoni dhe zëvendësuar',
+ 'wikieditor-toolbar-tool-replace-title' => 'Kërkoni dhe zëvendësuar',
+ 'wikieditor-toolbar-tool-replace-search' => 'Kërko për:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Replace me:',
+ 'wikieditor-toolbar-tool-replace-case' => 'rast Match',
+ 'wikieditor-toolbar-tool-replace-regex' => 'string Silleni kërkim si një shprehje e rregullt',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Gjej të ardhshëm',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Replace e ardhshme',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Zëvendësojnë të gjithë',
+ 'wikieditor-toolbar-tool-replace-close' => 'Mshele',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Kërkimi juaj nuk u përputh me ndonjë gjë.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 zëvendësimit (s) bëhet.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ju nuk shkruani ndonjë gjë për të kërkuar për.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Shprehje e rregullt keni hyrë është i pavlefshëm: $1',
+ 'wikieditor-toolbar-section-characters' => 'karaktere të veçanta',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latinisht',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latine zgjeruar',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simbolet',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grek',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'I sllavishtes së vjetër',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabisht',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebraisht',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Shqip',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Guxharati',
+ 'wikieditor-toolbar-section-help' => 'Ndihmë',
+ 'wikieditor-toolbar-help-heading-description' => 'Përshkrim',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Çfarë ju lloji',
+ 'wikieditor-toolbar-help-heading-result' => 'Çfarë ju të merrni',
+ 'wikieditor-toolbar-help-page-format' => 'Formatimi',
+ 'wikieditor-toolbar-help-page-link' => 'Lidhje',
+ 'wikieditor-toolbar-help-page-heading' => 'Titujt',
+ 'wikieditor-toolbar-help-page-list' => 'Listat',
+ 'wikieditor-toolbar-help-page-file' => 'Files',
+ 'wikieditor-toolbar-help-page-reference' => 'Lidhje të jashtme',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskutim',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "Teksti i pjerrët''''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Teksti i pjerrët</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Guximtar',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Tekst i trashë'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Tekst i trashë</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Bold & italic',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Bold &amp; tekst kursiv'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Bold & italic text</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Lidhje të Brendshme',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Page title|Link emërtim]]<br />[[Page title]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Etiketa Link</a><br /><a href='#'>Titulli i faqes</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Lidhje e jashtme',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => 'Etiketa [http://www.example.org Link] <br /> [Http://www.example.org] <br /> http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Etiketa Link</a> <br /> <a href='#' class='external autonumber'>[1]</a> <br /> <a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Niveli 2 titull',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => 'Text == == Titull',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2> Titull tekst </h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Niveli 3 titull',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Tekst === Titull',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3> Titull tekst </h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Niveli 4 titull',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Tekst Titulli ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4> Titull tekst </h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Niveli 5 titull',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== ===== Tekst Titulli',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5> Titull tekst </h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista e bulleted',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Pika Lista <br /> * Pika Lista',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li> pika Lista </li><li> pika Lista </li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista e Numëruar',
+ 'wikieditor-toolbar-help-content-olist-syntax' => 'pika # Lista <br /> pika # Lista',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li> pika Lista </li><li> pika Lista </li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Embedded file',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Caption teksti]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'> <a title=\"tekstit Legjenda\" class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a> <div class='thumbcaption'><div class='magnify'> <a title=\"Zmadho\" class='internal' href='#'><img height='11' width='15' alt='' src='\$1/common/images/magnify-clip.png'/></a> </div> tekstit Legjenda </div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referim',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Tekst faqesh. name="test"> <ref [http://www.example.org] teksti Link, teksti shtesë. </> ref',
+ 'wikieditor-toolbar-help-content-reference-result' => "Tekst faqesh. <a href='#'><sup>[1]</sup></a>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'përdorimin shtesë të njëjtën referencë',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Tekst faqesh. <a href='#'><sup>[1]</sup></a>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'referenca Display',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'> <a title='' href='#'><b>^</b></a> <a rel='nofollow' title=\"http://www.example.org\" class='external text' href='#'>Teksti Link</a> , teksti shtesë. </li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Nënshkrimi me gjithë kohë',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => '<a href=\'#\' title="{{#special:mypage}}">Emri i përdoruesit</a> ( <a href=\'#\' title="{{#special:mytalk}}">të folur</a> ) 15:54, 10 Qershor 2009 (UTC)',
+ 'wikieditor-toolbar-help-content-signature-description' => 'Nënshkrim',
+ 'wikieditor-toolbar-help-content-signature-result' => '<a href=\'#\' title="{{#special:mypage}}">Emri i përdoruesit</a> ( <a href=\'#\' title="{{#special:mytalk}}">të folur</a> )',
+ 'wikieditor-toolbar-help-content-indent-description' => 'Porosit',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'tekstit Normale <br /> : Teksti i prerë <br /> :: Teksti i prerë',
+ 'wikieditor-toolbar-help-content-indent-result' => 'tekstit Normale <dl><dd> Teksti i prerë <dl><dd> Teksti i prerë </dd></dl></dd></dl>',
+);
+
+/** Aragonese (Aragonés)
+ * @author Juanpabl
+ */
+$messages['an'] = array(
+ 'wikieditor' => "Interficie abanzada d'edición de wikitexto",
+ 'wikieditor-desc' => 'Proporciona una interficie extensible de modificación de wikitexto y quantos modulos de funcionalidatz',
+ 'wikieditor-wikitext-tab' => 'Wikitexto',
+ 'wikieditor-loading' => 'Cargando',
+ 'wikieditor-preview-preference' => 'Activar a previsualización costau a costau',
+ 'wikieditor-preview-tab' => 'Previsualizar',
+ 'wikieditor-preview-changes-tab' => 'Cambios',
+ 'wikieditor-preview-loading' => 'Cargando...',
+ 'wikieditor-previewDialog-preference' => 'Activar o dialogo de visualización previa',
+ 'wikieditor-previewDialog-tab' => 'Previsualización',
+ 'wikieditor-previewDialog-loading' => 'Cargando…',
+ 'wikieditor-publish-preference' => 'Activar a publicación trango a trango',
+ 'wikieditor-publish-button-publish' => 'Publicar',
+ 'wikieditor-publish-button-cancel' => 'Cancelar',
+ 'wikieditor-publish-dialog-title' => 'Publicar en {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => "Resumen d'edición (describa breument os cambios que ha feito):",
+ 'wikieditor-publish-dialog-minor' => 'Edición menor',
+ 'wikieditor-publish-dialog-watch' => 'Cosirar ista pachina',
+ 'wikieditor-publish-dialog-publish' => 'Publicar',
+ 'wikieditor-publish-dialog-goback' => 'Tornar',
+ 'wikieditor-template-editor-preference' => 'Activar a edición de plantillas basada en formularios',
+ 'wikieditor-template-editor-dialog-title' => 'Editar a plantilla',
+ 'wikieditor-template-editor-dialog-submit' => 'Actualizar',
+ 'wikieditor-template-editor-dialog-cancel' => 'Cancelar',
+ 'wikieditor-templates-preference' => 'Activar o replegamiento de plantillas',
+ 'wikieditor-toc-preference' => 'Activar a tabla de contenius navigable',
+ 'wikieditor-toc-show' => 'Amostrar o conteniu',
+ 'wikieditor-toc-hide' => 'Amagar o conteniu',
+ 'wikieditor-toolbar' => "Barra de ferramientas d'edición",
+ 'wikieditor-toolbar-desc' => "Barra de ferramientas d'edición con usabilidat amillorada",
+ 'wikieditor-toolbar-preference' => "Activar a barra de ferramientas d'edición amillorada",
+ 'wikieditor-toolbar-dialogs-preference' => 'Activar as caixas de dialogos ta ficar vinclos, tablas y atros',
+ 'wikieditor-toolbar-loading' => 'Cargando...',
+ 'wikieditor-toolbar-tool-bold' => 'Negreta',
+ 'wikieditor-toolbar-tool-bold-example' => 'Texto en negreta',
+ 'wikieditor-toolbar-tool-italic' => 'Cursiva',
+ 'wikieditor-toolbar-tool-italic-example' => 'Texto en cursiva',
+ 'wikieditor-toolbar-tool-ilink' => 'Vinclo interno',
+ 'wikieditor-toolbar-tool-ilink-example' => "Títol d'o vinclo",
+ 'wikieditor-toolbar-tool-xlink' => "Vinclo externo (recorde-se-ne d'o prefixo http://)",
+ 'wikieditor-toolbar-tool-xlink-example' => "http://www.example.com títol d'o vinclo",
+ 'wikieditor-toolbar-tool-link' => 'Vinclo',
+ 'wikieditor-toolbar-tool-link-title' => 'Fique un vinclo',
+ 'wikieditor-toolbar-tool-link-int' => 'Enta una pachina wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Pachina u URL de destino:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => "Títol d'a pachina u URL",
+ 'wikieditor-toolbar-tool-link-int-text' => "Texto d'o vinclo:",
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Texto a amostrar',
+ 'wikieditor-toolbar-tool-link-ext' => 'Enta una pachina web externa',
+ 'wikieditor-toolbar-tool-link-ext-target' => "URL d'o vinclo:",
+ 'wikieditor-toolbar-tool-link-ext-text' => "Texto d'o vinclo:",
+ 'wikieditor-toolbar-tool-link-insert' => 'Fique un vinclo',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'A pachina existe',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'A pachina no existe',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Títol invalido',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Vinclo externo',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "Comprebando a existencia d'a pachina...",
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'O títol que ha especificato no ye valido.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "O URL que ha especificato pareix que enlazaba con un atra pachina d'o wiki. Quiere tornar-lo en un vinclo interno?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Vinclo interno',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Vinclo externo',
+ 'wikieditor-toolbar-tool-link-empty' => 'No ha escrito garra cosa ta enlazar.',
+ 'wikieditor-toolbar-tool-file' => 'Imachen incorporada',
+ 'wikieditor-toolbar-tool-file-example' => 'Exemplo.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referencia',
+ 'wikieditor-toolbar-tool-reference-example' => 'Ficar aquí una nota a lo piet',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-reference-title' => 'Ficar referencia',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Insertar',
+ 'wikieditor-toolbar-tool-reference-text' => "Texto d'a referencia",
+ 'wikieditor-toolbar-tool-signature' => 'Sinyatura, calendata y hora',
+ 'wikieditor-toolbar-section-advanced' => 'Abanzato',
+ 'wikieditor-toolbar-tool-heading' => 'Títol',
+ 'wikieditor-toolbar-tool-heading-1' => 'Livel 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Livel 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Livel 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Livel 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Livel 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Texto de títol',
+ 'wikieditor-toolbar-group-format' => 'Formato',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista con puntos',
+ 'wikieditor-toolbar-tool-ulist-example' => "Elemento d'a lista con puntos",
+ 'wikieditor-toolbar-tool-olist' => 'Lista numerata',
+ 'wikieditor-toolbar-tool-olist-example' => "Elemento d'a lista numerata",
+ 'wikieditor-toolbar-tool-indent' => 'Indentación',
+ 'wikieditor-toolbar-tool-indent-example' => 'Linia indentada',
+ 'wikieditor-toolbar-tool-nowiki' => 'Sin formato wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Escriba aquí texto sin formateyar',
+ 'wikieditor-toolbar-tool-redirect' => 'Reendrecera',
+ 'wikieditor-toolbar-tool-redirect-example' => "Nombre d'a pachina de destino",
+ 'wikieditor-toolbar-tool-big' => 'Gran',
+ 'wikieditor-toolbar-tool-big-example' => 'Texto gran',
+ 'wikieditor-toolbar-tool-small' => 'Chicot',
+ 'wikieditor-toolbar-tool-small-example' => 'Texto chicot',
+ 'wikieditor-toolbar-tool-superscript' => 'Superéndiz',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Texto en superéndiz',
+ 'wikieditor-toolbar-tool-subscript' => 'Subéndiz',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Texto en subéndiz',
+ 'wikieditor-toolbar-group-insert' => 'Insertar',
+ 'wikieditor-toolbar-tool-gallery' => "Galería d'imachens",
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Eixemplo.jpg|Piet_de_foto_1
+$1:Eixemplo.jpg|Piet_de_foto_2',
+ 'wikieditor-toolbar-tool-newline' => 'Nueva linia',
+ 'wikieditor-toolbar-tool-table' => 'Tabla',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! encabezau 1
+! encabezau 2
+! encabezau 3
+|-
+| ringlera 1, celda 1
+| ringlera 1, celda 2
+| ringlera 1, celda 3
+|-
+| ringlera 2, celda 1
+| ringlera 2, celda 2
+| ringlera 2, celda 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => "Texto d'a celda",
+ 'wikieditor-toolbar-tool-table-example-header' => 'Texto de títol',
+ 'wikieditor-toolbar-tool-table-title' => 'Insertar una tabla',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Ringleras',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Columnas',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => "Adhibir una filera d'encabezau",
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Estilo con cantos',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Fer a tabla ordenable',
+ 'wikieditor-toolbar-tool-table-example' => 'Eixemplo',
+ 'wikieditor-toolbar-tool-table-preview' => 'Visualización previa',
+ 'wikieditor-toolbar-tool-table-insert' => 'Insertar',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Con iste quadro de dialogo no ye posible insertar una tabla con más de $1 celdas.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'No ha escrito un numero valido de fileras u columnas.',
+ 'wikieditor-toolbar-tool-table-zero' => 'No se puet insertar una tabla con zero fileras u columnas.',
+ 'wikieditor-toolbar-tool-replace' => 'Buscar y reemplazar',
+ 'wikieditor-toolbar-tool-replace-title' => 'Buscar y reemplazar',
+ 'wikieditor-toolbar-tool-replace-search' => 'Mirar:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Reemplazar por:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Distinguir mayusclas/minusclas',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Tractar a cadena a mirar como una expresión regular',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Mirar o siguient',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Substituye o siguient',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Substituir tot',
+ 'wikieditor-toolbar-tool-replace-close' => 'Zarrar',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'A suya busca no ha trobau garra resultau concordant.',
+ 'wikieditor-toolbar-tool-replace-success' => "S'han feito $1 substitucions.",
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'No ha escrito garra cosa ta mirar.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'A expresión regular que ha escrito ye invalida: $1',
+ 'wikieditor-toolbar-section-characters' => 'Carácters especials',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latín',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latín enamplau',
+ 'wikieditor-toolbar-characters-page-ipa' => 'AFI(IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Símbols',
+ 'wikieditor-toolbar-characters-page-greek' => 'Griego',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirilico',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabico',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persa',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebreu',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalí',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Cingalés',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujaratí',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laosiano',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Aduya',
+ 'wikieditor-toolbar-help-heading-description' => 'Descripción',
+ 'wikieditor-toolbar-help-heading-syntax' => 'O que vusté escribe',
+ 'wikieditor-toolbar-help-heading-result' => "O que s'obtiene",
+ 'wikieditor-toolbar-help-page-format' => 'Formateyo',
+ 'wikieditor-toolbar-help-page-link' => 'Vinclos',
+ 'wikieditor-toolbar-help-page-heading' => 'Títol',
+ 'wikieditor-toolbar-help-page-list' => 'Listas',
+ 'wikieditor-toolbar-help-page-file' => 'Fichers',
+ 'wikieditor-toolbar-help-page-reference' => 'Referencias',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discusión',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Cursiva',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Texto en cursiva''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Texto en cursiva</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Negreta',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Texto en negreta'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Texto en negreta</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Negreta y cursiva',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Texto en negreta y cursiva'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Texto en negreta y cursiva</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Vinclo interno',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => "[[Títol d'a pachina|Texto d'o vinclo]]<br />[[Títol de pachina]]",
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Texto d'o vinclo</a><br /><a href='#'>Títol d'a pachina</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Vinclo externo',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => "[http://www.example.org Texto d'o vinclo]<br />[http://www.example.org]<br />http://www.example.org",
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Texto d'o vinclo</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Títol de 2o ran',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => "== Texto d'o títol ==",
+ 'wikieditor-toolbar-help-content-heading2-result' => "<h2>Texto d'o títol</h2>",
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Títol de 3r ran',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => "=== Texto d'o títol ===",
+ 'wikieditor-toolbar-help-content-heading3-result' => "<h3>Texto d'o títol</h3>",
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Títol de 4o ran',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => "==== Texto d'o títol ====",
+ 'wikieditor-toolbar-help-content-heading4-result' => "<h4>Texto d'o títol</h4>",
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Títol de 5o ran',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => "===== Texto d'o títol =====",
+ 'wikieditor-toolbar-help-content-heading5-result' => "<h5>Texto d'o títol</h5>",
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista con puntos',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => "* Elemento d'a lista<br />* Elemento d'a lista",
+ 'wikieditor-toolbar-help-content-ulist-result' => "<ul><li>Elemento d'a lista</li><li>Elemento d'a lista</li></ul>",
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista numerata',
+ 'wikieditor-toolbar-help-content-olist-syntax' => "# Elemento d'a lista<br /># Elemento d'a lista",
+ 'wikieditor-toolbar-help-content-olist-result' => "<ol><li>Elemento d'a lista</li><li>Elemento d'a lista</li></ol>",
+ 'wikieditor-toolbar-help-content-file-description' => 'Fichero incorporato',
+ 'wikieditor-toolbar-help-content-file-syntax' => "[[$1:Eixemplo.png|thumb|Texto descriptivo d'a imachen]]",
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Texto de piet de foto' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Fer más gran' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Texto de piet de foto</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referencia',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Texto d\'a pachina.&lt;ref name="test"&gt;[http://www.example.org Texto d\'o vinclo], texto adicional.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Texto d'a pachina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => "Uso adicional d'a mesma referencia",
+ 'wikieditor-toolbar-help-content-rereference-result' => "Texto d'a pachina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Amostrar as referencias',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='referencias'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Texto d'o vinclo</a>, texto adicional.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Sinyatura, calendata y hora',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nombre d'usuario</a> (<a href='#' title='{{#special:mytalk}}'>discusión</a>) 15:54, 10 de chunio de 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Sinyatura',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nombre d'usuario</a> (<a href='#' title='{{#special:mytalk}}'>discusión</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indentación',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Texto normal<br />:Texto indentato<br />::Texto indentato',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Texto normal<dl><dd>Texto indentato<dl><dd>Texto indentato</dd></dl></dd></dl>',
+);
+
+/** Old English (Ænglisc)
+ * @author WÅdenhelm
+ */
+$messages['ang'] = array(
+ 'wikieditor-toolbar' => 'Ä€dihtende tÅlscyttel',
+ 'wikieditor-toolbar-loading' => 'HlÄdende...',
+ 'wikieditor-toolbar-tool-bold' => 'Þicce',
+ 'wikieditor-toolbar-tool-bold-example' => 'Þicce traht',
+ 'wikieditor-toolbar-tool-ilink' => 'Innanƿeard hlenċe',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Hlenċenama',
+ 'wikieditor-toolbar-tool-xlink' => 'ŪtanÆ¿eard hlenÄ‹e (Èemynd http:// foretraht)',
+ 'wikieditor-toolbar-tool-link' => 'Hlenċe',
+ 'wikieditor-toolbar-tool-link-title' => 'Hlenċan ēacian',
+ 'wikieditor-toolbar-tool-link-int' => 'To ƿikisīdan',
+ 'wikieditor-toolbar-tool-link-int-target' => 'GÅl sÄ«de oþþe URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Sīdenama oþþe URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Traht to scēaƿienne:',
+ 'wikieditor-toolbar-tool-link-ext' => 'To ūtanƿeardum ƿebbsīdan',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Hlenċe URL',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ūtanƿeard hlenċan',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Innanƿeard hlenċe',
+ 'wikieditor-toolbar-tool-file-example' => 'Bisen.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Fruma',
+ 'wikieditor-toolbar-tool-heading-1' => 'Emnet 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Emnet 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Emnet 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Emnet 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Emnet 5',
+ 'wikieditor-toolbar-tool-big' => 'Miċel',
+ 'wikieditor-toolbar-tool-big-example' => 'Miċel traht',
+ 'wikieditor-toolbar-tool-small' => 'Lytel',
+ 'wikieditor-toolbar-tool-small-example' => 'Lytel traht',
+ 'wikieditor-toolbar-tool-table' => 'Tæfl',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rǣƿa',
+ 'wikieditor-toolbar-tool-table-example' => 'Bisen',
+ 'wikieditor-toolbar-tool-table-preview' => 'Forescēaƿian',
+ 'wikieditor-toolbar-characters-page-latin' => 'LÇ£den',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Ä€strecced LÇ£den',
+ 'wikieditor-toolbar-characters-page-symbols' => 'TÄcnu',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grēcisc',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cyrillisc',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabisc',
+ 'wikieditor-toolbar-characters-page-persian' => 'Perseanisc',
+ 'wikieditor-toolbar-section-help' => 'Help',
+ 'wikieditor-toolbar-help-page-link' => 'Hlenċan',
+ 'wikieditor-toolbar-help-page-discussion' => 'Ȝespreċ',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Þicce',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Þicce traht'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Þicce traht</strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Innanƿeard hlenċe',
+ 'wikieditor-toolbar-help-content-reference-description' => 'Fruma',
+);
+
+/** Arabic (العربية)
+ * @author Aiman titi
+ * @author McDutchie
+ * @author Meno25
+ * @author OsamaK
+ * @author Samer
+ * @author ترجمان05
+ */
+$messages['ar'] = array(
+ 'wikieditor' => 'الواجهة المتقدمة لتعديل نص ويكي',
+ 'wikieditor-desc' => 'يوÙر واجهة تعديل نص ويكي قابلة للتمديد والعديد من الوحدات التي توÙر المزايا',
+ 'wikieditor-wikitext-tab' => 'نص الويكي',
+ 'wikieditor-loading' => 'ÙŠÙحمّل',
+ 'wikieditor-preview-preference' => 'مكّن المعاينة جنبًا لجنب',
+ 'wikieditor-preview-tab' => 'عاين',
+ 'wikieditor-preview-changes-tab' => 'التغييرات',
+ 'wikieditor-preview-loading' => 'ÙŠÙحمّل...',
+ 'wikieditor-previewDialog-preference' => 'مكّن حوار المعاينة',
+ 'wikieditor-previewDialog-tab' => 'عاين',
+ 'wikieditor-previewDialog-loading' => 'ÙŠÙحمّل...',
+ 'wikieditor-publish-preference' => 'Ùعل النشر خطوة بخطوة',
+ 'wikieditor-publish-button-publish' => 'انشر',
+ 'wikieditor-publish-button-cancel' => 'ألغÙ',
+ 'wikieditor-publish-dialog-title' => 'انشر ÙÙŠ {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'ملخص التعديل (اشرح باختصار التغييرات التي قمت بها):',
+ 'wikieditor-publish-dialog-minor' => 'تعديل Ø·ÙÙŠÙ',
+ 'wikieditor-publish-dialog-watch' => 'راقب هذه الصÙحة',
+ 'wikieditor-publish-dialog-publish' => 'انشر',
+ 'wikieditor-publish-dialog-goback' => 'ارجع',
+ 'wikieditor-template-editor-preference' => 'Ùعل تعديل قوالب الويكي المعتمد على النماذج',
+ 'wikieditor-template-editor-dialog-title' => 'عدّل القالب',
+ 'wikieditor-template-editor-dialog-submit' => 'حدّث',
+ 'wikieditor-template-editor-dialog-cancel' => 'ألغÙ',
+ 'wikieditor-templates-preference' => 'مكّن طي القوالب',
+ 'wikieditor-toc-preference' => 'مكّن جدول المحتويات القابل للتصÙØ­',
+ 'wikieditor-toc-show' => 'أظهر المحتويات',
+ 'wikieditor-toc-hide' => 'أخÙ٠المحتويات',
+ 'wikieditor-toolbar' => 'شريط أدوات التحرير',
+ 'wikieditor-toolbar-desc' => 'شريط تحرير الصÙحات مع تحسين الاستخدامية',
+ 'wikieditor-toolbar-preference' => 'مكّن شريط أدوات التحرير المÙحسّن',
+ 'wikieditor-toolbar-dialogs-preference' => 'مكّن حوارات إدراج الوصلات والجداول وغيرها',
+ 'wikieditor-toolbar-hidesig' => 'إخÙاء زر التوقيع من الصÙحات الموجودة ÙÙŠ مساحة الاسم الرئيسي',
+ 'wikieditor-toolbar-loading' => 'ÙŠÙحمّل...',
+ 'wikieditor-toolbar-tool-bold' => 'عريض',
+ 'wikieditor-toolbar-tool-bold-example' => 'نص عريض',
+ 'wikieditor-toolbar-tool-italic' => 'مائل',
+ 'wikieditor-toolbar-tool-italic-example' => 'نص مائل',
+ 'wikieditor-toolbar-tool-ilink' => 'وصلة داخلية',
+ 'wikieditor-toolbar-tool-ilink-example' => 'عنوان الوصلة',
+ 'wikieditor-toolbar-tool-xlink' => 'وصلة خارجية (تذكر البدء بhttp://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com عنوان الوصلة',
+ 'wikieditor-toolbar-tool-link' => 'وصلة',
+ 'wikieditor-toolbar-tool-link-title' => 'إدراج وصلة',
+ 'wikieditor-toolbar-tool-link-int' => 'لصÙحة ويكي',
+ 'wikieditor-toolbar-tool-link-int-target' => 'عنوان الصÙحة:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'عنوان الصÙحة أو المسار',
+ 'wikieditor-toolbar-tool-link-int-text' => 'نص الوصلة:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'أدخل النص الذي ينبغي إظهاره',
+ 'wikieditor-toolbar-tool-link-ext' => 'لصÙحة وب خارجية',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'مسار الوصلة:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'نص الوصلة:',
+ 'wikieditor-toolbar-tool-link-insert' => 'أدرج الوصلة',
+ 'wikieditor-toolbar-tool-link-cancel' => 'ألغÙ',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'الصÙحة موجودة',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'الصÙحة غير موجودة',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'عنوان غير صحيح',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'وصلة خارجية',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'يلتمس وجود الصÙحة...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'العنوان الذي اخترته غير صالح.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'يبدو أن المÙراد بالمسار الذي حددته وصلة إلى صÙحة ويكي أخرى. أتريد أن تجعلها وصلة داخلية؟',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'وصلة داخلية',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'وصلة خارجية',
+ 'wikieditor-toolbar-tool-link-empty' => 'لم تدخل شيئا لتصل به.',
+ 'wikieditor-toolbar-tool-file' => 'مل٠مضمّن',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'مرجع',
+ 'wikieditor-toolbar-tool-reference-example' => 'أدرج نص الحاشية هنا',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'ألغÙ',
+ 'wikieditor-toolbar-tool-reference-title' => 'إدراج مرجع',
+ 'wikieditor-toolbar-tool-reference-insert' => 'أدرج',
+ 'wikieditor-toolbar-tool-reference-text' => 'نص المرجع',
+ 'wikieditor-toolbar-tool-signature' => 'توقيع مع الطابع الزمني',
+ 'wikieditor-toolbar-section-advanced' => 'متقدم',
+ 'wikieditor-toolbar-tool-heading' => 'ترويسة',
+ 'wikieditor-toolbar-tool-heading-1' => 'المستوى 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'المستوى 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'المستوى 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'المستوى 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'المستوى 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'نص الترويسة',
+ 'wikieditor-toolbar-group-format' => 'تنسيق',
+ 'wikieditor-toolbar-tool-ulist' => 'قائمة منقّطة',
+ 'wikieditor-toolbar-tool-ulist-example' => 'عنصر Ùائمة منقّطة',
+ 'wikieditor-toolbar-tool-olist' => 'قائمة مرقّمة',
+ 'wikieditor-toolbar-tool-olist-example' => 'عنصر قائمة مرقّمة',
+ 'wikieditor-toolbar-tool-indent' => 'هامش',
+ 'wikieditor-toolbar-tool-indent-example' => 'سطر بهامش',
+ 'wikieditor-toolbar-tool-nowiki' => 'لا تنسيق ويكي',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'أدرج نصًا غير منسق هنا',
+ 'wikieditor-toolbar-tool-redirect' => 'تحويلة',
+ 'wikieditor-toolbar-tool-redirect-example' => 'اسم الصÙحة الهدÙ',
+ 'wikieditor-toolbar-tool-big' => 'كبير',
+ 'wikieditor-toolbar-tool-big-example' => 'نص كبير',
+ 'wikieditor-toolbar-tool-small' => 'صغير',
+ 'wikieditor-toolbar-tool-small-example' => 'نص صغير',
+ 'wikieditor-toolbar-tool-superscript' => 'حر٠علوي',
+ 'wikieditor-toolbar-tool-superscript-example' => 'نص الحر٠العلوي',
+ 'wikieditor-toolbar-tool-subscript' => 'حر٠سÙلي',
+ 'wikieditor-toolbar-tool-subscript-example' => 'نص الحر٠السÙلي',
+ 'wikieditor-toolbar-group-insert' => 'أدرج',
+ 'wikieditor-toolbar-tool-gallery' => 'معرض صور',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|تعليق1
+$1:Example.jpg|تعليق2',
+ 'wikieditor-toolbar-tool-newline' => 'سطر جديد',
+ 'wikieditor-toolbar-tool-table' => 'جدولًا',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! ترويسة 1
+! ترويسة 2
+! ترويسة 3
+|-
+| ص٠1، خلية 1
+| ص٠1، خلية 2
+| ص٠1، خلية 3
+|-
+| ص٠2، خلية 1
+| ص٠2، خلية 2
+| ص٠2، خلية 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'نص الخلية',
+ 'wikieditor-toolbar-tool-table-example-header' => 'نص الترويسة',
+ 'wikieditor-toolbar-tool-table-title' => 'إدراج جدول',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'الصÙÙˆÙ',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'الأعمدة',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'ضمّن ص٠الترويسة',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'سمة ذات حدود',
+ 'wikieditor-toolbar-tool-table-sortable' => 'اجعل الجدول قابلا للترتيب',
+ 'wikieditor-toolbar-tool-table-example' => 'مثال',
+ 'wikieditor-toolbar-tool-table-preview' => 'عاين',
+ 'wikieditor-toolbar-tool-table-insert' => 'أدرج',
+ 'wikieditor-toolbar-tool-table-cancel' => 'ألغÙ',
+ 'wikieditor-toolbar-tool-table-toomany' => 'إدراج جدول بأكثر من $1 خلية غير ممكن عبر هذا الحوار.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'لم تدخل رقما صحيحا للصÙو٠أو الأعمدة.',
+ 'wikieditor-toolbar-tool-table-zero' => 'لا يمكن أن تدرج جدولا بلا صÙو٠أو أعمدة.',
+ 'wikieditor-toolbar-tool-replace' => 'ابحث واستبدل',
+ 'wikieditor-toolbar-tool-replace-title' => 'ابحث واستبدل',
+ 'wikieditor-toolbar-tool-replace-search' => 'ابحث عن:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'استبدل ب:',
+ 'wikieditor-toolbar-tool-replace-case' => 'مطابقة الحالة',
+ 'wikieditor-toolbar-tool-replace-regex' => 'عامل عبارة البحث كتعبير نمطي',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'جÙد التالي',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'استبدل التالي',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'استبدل الكل',
+ 'wikieditor-toolbar-tool-replace-close' => 'أغلق',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'بحثك لم يطابق أي شيء.',
+ 'wikieditor-toolbar-tool-replace-success' => 'أجري $1 استبدال(ات).',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'لم تكتب شيئًا لتبحث عنه.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'التعبير النمطي الذي أدخلته غير صالح: $1',
+ 'wikieditor-toolbar-section-characters' => 'محار٠خاصة',
+ 'wikieditor-toolbar-characters-page-latin' => 'اللاتينية',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'مد لاتيني',
+ 'wikieditor-toolbar-characters-page-ipa' => 'آي بي إي',
+ 'wikieditor-toolbar-characters-page-symbols' => 'رموز',
+ 'wikieditor-toolbar-characters-page-greek' => 'اليونانية',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'السيريلية',
+ 'wikieditor-toolbar-characters-page-arabic' => 'العربية',
+ 'wikieditor-toolbar-characters-page-persian' => 'الÙارسية',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'العبرية',
+ 'wikieditor-toolbar-characters-page-bangla' => 'البنغالية',
+ 'wikieditor-toolbar-characters-page-telugu' => 'تيلوجو',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'سنهالا',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'جوجاراتي',
+ 'wikieditor-toolbar-characters-page-thai' => 'التايلاندية',
+ 'wikieditor-toolbar-characters-page-lao' => 'اللاوية',
+ 'wikieditor-toolbar-characters-page-khmer' => 'الخميرية (الكمبودية)',
+ 'wikieditor-toolbar-section-help' => 'مساعدة',
+ 'wikieditor-toolbar-help-heading-description' => 'الوصÙ',
+ 'wikieditor-toolbar-help-heading-syntax' => 'ما تكتبه',
+ 'wikieditor-toolbar-help-heading-result' => 'ما تحصل عليه',
+ 'wikieditor-toolbar-help-page-format' => 'تنسيق',
+ 'wikieditor-toolbar-help-page-link' => 'وصلات',
+ 'wikieditor-toolbar-help-page-heading' => 'ترويسات',
+ 'wikieditor-toolbar-help-page-list' => 'قوائم',
+ 'wikieditor-toolbar-help-page-file' => 'ملÙات',
+ 'wikieditor-toolbar-help-page-reference' => 'مراجع',
+ 'wikieditor-toolbar-help-page-discussion' => 'نقاش',
+ 'wikieditor-toolbar-help-content-italic-description' => 'مائل',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''نص مائل''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>نص مائل</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'عريض',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''نص عريض'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>نص عريض</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'عريض ومائل',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''نص عريض ومائل'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>نص عريض ومائل</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'وصلة داخلية',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[عنوان الصÙحة|اسم الوصلة]]<br />[[عنوان الصÙحة]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>اسم الوصلة</a><br /><a href='#'>عنوان الصÙحة</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'وصلة خارجية',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org اسم الوصلة]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>اسم الوصلة</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'ترويسة المستوى الثاني',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== نص الترويسة ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>نص الترويسة</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'ترويسة المستوى الثالث',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== نص الترويسة ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>نص الترويسة</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'توريسة المستوى الرابع',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== نص الترويسة ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>نص الترويسة</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'توريسة المستوى الخامس',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== نص الترويسة =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>نص الترويسة</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'قائمة منقّطة',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* عنصر قائمة<br />* عنصر قائمة',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>عنصر قائمة</li><li>عنصر قائمة</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'قائمة مرقّمة',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# عنصر قائمة<br /># عنصر قائمة',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>عنصر قائمة</li><li>عنصر قائمة</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'مل٠مضمّن',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|نص التعليق]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='نص التعليق' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='تكبير' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>نص التعليق</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'مرجع',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'نص الصÙحة.&lt;ref name="test"&gt;[http://www.example.org نص الوصلة]ØŒ نص إضاÙÙŠ.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "نص الصÙحة.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'استخدام Ù†Ùس المرجع مرة أخرى',
+ 'wikieditor-toolbar-help-content-rereference-result' => "نص الصÙحة.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'اعرض المراجع',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>نص الرابط</a>ØŒ نص إضاÙÙŠ.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'التوقيع مع الطابع الزمني',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>اسم المستخدم</a> (<a href='#' title='{{#special:mytalk}}'>ناقش</a>) 15:54، 10 يونيو 2009 (ت‌ع‌م)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'التوقيع',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>اسم المستخدم</a> (<a href='#' title='{{#special:mytalk}}'>ناقش</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'بادئة',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'نص عادي<br />:نص ببادئة<br />::نص ببادئة',
+ 'wikieditor-toolbar-help-content-indent-result' => 'نص عادي<dl><dd>نص ببادئة<dl><dd>نص ببادئة</dd></dl></dd></dl>',
+);
+
+/** Aramaic (ÜܪܡÜÜ)
+ * @author Basharh
+ * @author Michaelovic
+ */
+$messages['arc'] = array(
+ 'wikieditor-preview-tab' => 'ÜšÜÜªÜ¬Ü Ü©Ü•Ü¡ÜܬÜ',
+ 'wikieditor-preview-changes-tab' => 'ܫܘܚܠܦ̈Ü',
+ 'wikieditor-previewDialog-tab' => 'ÜšÜÜªÜ Ü©Ü•Ü¡ÜÜ',
+ 'wikieditor-publish-button-cancel' => 'ܒܛܘܠ',
+ 'wikieditor-publish-dialog-minor' => 'Ü«Ü˜ÜšÜ Ü¦Ü Ü™Ü¥Ü˜ÜªÜ',
+ 'wikieditor-publish-dialog-watch' => 'ÜªÜ—Ü Ü¦ÜÜ¬Ü Ü—Ü•Ü',
+ 'wikieditor-template-editor-dialog-title' => 'ܫܚܠܦ Ü©Ü Ü’Ü',
+ 'wikieditor-template-editor-dialog-submit' => 'ܚܕܬ',
+ 'wikieditor-template-editor-dialog-cancel' => 'ܒܛܘܠ',
+ 'wikieditor-toc-show' => 'ÜšÜ˜Ü ÜšÜ’Üܫܬ̈Ü',
+ 'wikieditor-toc-hide' => 'Ü›Ü«Ü ÜšÜ’Üܫܬ̈Ü',
+ 'wikieditor-toolbar-tool-bold' => 'ܥܒÜܬÜ',
+ 'wikieditor-toolbar-tool-bold-example' => 'ÜŸÜ¬Ü’Ü¬Ü Ü¥Ü’ÜܬÜ',
+ 'wikieditor-toolbar-tool-italic' => 'ܦܠÜܡܬÜ',
+ 'wikieditor-toolbar-tool-italic-example' => 'ÜŸÜ¬Ü’Ü¬Ü Ü¦Ü ÜܡܬÜ',
+ 'wikieditor-toolbar-tool-ilink' => 'ÜÜ£Ü˜ÜªÜ Ü“Ü˜ÜÜ',
+ 'wikieditor-toolbar-tool-ilink-example' => 'ܟܘܢÜÜ Ü•ÜܣܘܪÜ',
+ 'wikieditor-toolbar-tool-xlink' => 'ÜÜ£Ü˜ÜªÜ Ü’ÜªÜÜ (ܕܟܘܪ http:// Ü©Ü•Ü¡ÜܬÜ)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com ܟܘܢÜÜ Ü•ÜܣܘܪÜ',
+ 'wikieditor-toolbar-tool-link' => 'ÜܣܘܪÜ',
+ 'wikieditor-toolbar-tool-link-title' => 'ܣܢܘܦ ÜܣܘܪÜ',
+ 'wikieditor-toolbar-tool-link-int' => 'ܠܦÜÜ¬Ü Ü•Ü˜ÜÜ©Ü',
+ 'wikieditor-toolbar-tool-link-int-text' => 'ÜŸÜ¬Ü’Ü¬Ü Ü ÜšÜ˜Ü˜ÜÜ',
+ 'wikieditor-toolbar-tool-link-ext' => 'ܠܦÜÜ¬Ü Ü•Ü¢Ü˜Ü Ü Ü’ÜªÜܬÜ',
+ 'wikieditor-toolbar-tool-link-insert' => 'ܣܢܘܦ ÜܣܘܪÜ',
+ 'wikieditor-toolbar-tool-link-cancel' => 'ܒܛܘܠ',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'ܦÜÜ¬Ü Ü—Ü•Ü ÜÜܬ',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'ܦÜÜ¬Ü Ü—Ü•Ü Ü Üܬ',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ܟܘܢÜÜ Ü Ü Ü¬ÜªÜܨÜ',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'ÜÜ£Ü˜ÜªÜ Ü’ÜªÜÜ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'ÜÜ£Ü˜ÜªÜ Ü“Ü˜ÜÜ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'ÜÜ£Ü˜ÜªÜ Ü’ÜªÜÜ',
+ 'wikieditor-toolbar-tool-file' => 'Ü Ü¦Ü¦Ü Ü›Ü¡ÜܪÜ',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'ܡܒܘܥÜ',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'ܒܛܘܠ',
+ 'wikieditor-toolbar-tool-reference-title' => 'ܣܢܘܦ ܡܒܘܥÜ',
+ 'wikieditor-toolbar-tool-reference-insert' => 'ܣܢܘܦ',
+ 'wikieditor-toolbar-section-advanced' => 'ܡܬܩܕܡܢÜ',
+ 'wikieditor-toolbar-tool-heading-1' => 'ܫܘÜÜ 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'ܫܘÜÜ 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'ܫܘÜÜ 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'ܫܘÜÜ 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'ܫܘÜÜ 5',
+ 'wikieditor-toolbar-group-format' => 'ܣܕÜܪܘܬÜ',
+ 'wikieditor-toolbar-tool-redirect' => 'ܨܘÜÜ’Ü',
+ 'wikieditor-toolbar-tool-small' => 'ܙܥܘܪÜ',
+ 'wikieditor-toolbar-tool-small-example' => 'ÜŸÜ¬Ü’Ü¬Ü Ü™Ü¥Ü˜ÜªÜ¬Ü',
+ 'wikieditor-toolbar-group-insert' => 'ܣܢܘܦ',
+ 'wikieditor-toolbar-tool-gallery' => 'Ü’Üܬ Ü“Ü ÜšÜ Ü•Ü¨Ü˜ÜªÌˆÜ¬Ü',
+ 'wikieditor-toolbar-tool-newline' => 'Ü£ÜªÜ›Ü ÜšÜ•Ü¬Ü',
+ 'wikieditor-toolbar-tool-table' => 'ܠܘܚÜܬÜ',
+ 'wikieditor-toolbar-tool-table-title' => 'Ü£Ü¢Ü¦Ü Ü•Ü Ü˜ÜšÜܬÜ',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'ܨ̈ܦÜ',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'ܥܡܘܕ̈Ü',
+ 'wikieditor-toolbar-tool-table-example' => 'ܡܬܠÜ',
+ 'wikieditor-toolbar-tool-table-preview' => 'ÜšÜÜªÜ Ü©Ü•Ü¡ÜÜ',
+ 'wikieditor-toolbar-tool-table-insert' => 'ܣܢܘܦ',
+ 'wikieditor-toolbar-tool-table-cancel' => 'ܒܛܘܠ',
+ 'wikieditor-toolbar-section-characters' => 'ÜÜ¬Ü˜Ü¬ÌˆÜ Ü•ÜܠܢÜܬ̈Ü',
+ 'wikieditor-toolbar-characters-page-latin' => 'Ü ÜÜ›ÜÜ¢ÜÜܬ',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Ü ÜÜ›ÜÜ¢ÜÜܬ ܡܬÜÜšÜ',
+ 'wikieditor-toolbar-characters-page-symbols' => 'ܪ̈ܡܙÜ',
+ 'wikieditor-toolbar-characters-page-greek' => 'ÜܘܢÜÜܬ',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Ü©ÜܪÜÜ ÜÜܬ',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ܥܪܒÜÜܬ',
+ 'wikieditor-toolbar-characters-page-persian' => 'ܦܪܣÜÜܬ',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'ܥܒܪÜÜܬ',
+ 'wikieditor-toolbar-characters-page-bangla' => 'ܒܢܓÜÜ ÜÜܬ',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Ü›ÜܠܘܓܘÜÜܬ',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'ܣܢܗÜÜ ÜÜܬ',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'ܓܘܓÜܪÜÜ›ÜÜÜܬ',
+ 'wikieditor-toolbar-characters-page-thai' => 'Ü›ÜܠܢܕÜÜܬ',
+ 'wikieditor-toolbar-characters-page-lao' => 'Ü ÜܘÜÜܬ',
+ 'wikieditor-toolbar-characters-page-khmer' => 'ÜŸÜ¡ÜܪÜÜܬ',
+ 'wikieditor-toolbar-section-help' => 'ܥܘܕܪܢÜ',
+ 'wikieditor-toolbar-help-heading-description' => 'ܫܘܡܗÜ',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Ü¡Ü•Ü¡ ܟܬܒ Üܢܬ',
+ 'wikieditor-toolbar-help-heading-result' => 'Ü¡Ü•Ü¡ ÜÜ¬Ü Ü ÜŸ',
+ 'wikieditor-toolbar-help-page-format' => 'ܣܕÜܪܘܬÜ',
+ 'wikieditor-toolbar-help-page-link' => 'Üܣܪ̈Ü',
+ 'wikieditor-toolbar-help-page-heading' => 'ܪ̈ÜܫܬÜ',
+ 'wikieditor-toolbar-help-page-list' => 'ܡܟܬܒܘܬ̈Ü',
+ 'wikieditor-toolbar-help-page-file' => 'ܠܦܦ̈Ü',
+ 'wikieditor-toolbar-help-page-reference' => 'ܡܒܘܥ̈Ü',
+ 'wikieditor-toolbar-help-page-discussion' => 'Ü¡Ü¡Ü Ü Ü',
+ 'wikieditor-toolbar-help-content-italic-description' => 'ܦܠÜܡܬÜ',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''ÜŸÜ¬Ü’Ü¬Ü Ü¦Ü ÜܡܬÜ''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>ÜŸÜ¬Ü’Ü¬Ü Ü¦Ü ÜܡܬÜ</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'ܥܒÜܬÜ',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''ÜŸÜ¬Ü’Ü¬Ü Ü¥Ü’ÜܬÜ'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>ÜŸÜ¬Ü’Ü¬Ü Ü¥Ü’ÜܬÜ</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'ܦܠÜÜ¡Ü¬Ü &amp; ܥܒÜܬÜ',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => 'ܦܠÜÜ¡Ü¬Ü &amp; ÜŸÜ¬Ü’Ü¬Ü Ü¥Ü’ÜܬÜ',
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>ܦܠÜÜ¡Ü¬Ü &amp; ܥܒÜÜ¬Ü text</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'ÜÜ£Ü˜ÜªÜ Ü“Ü˜ÜÜ',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'ÜÜ£Ü˜ÜªÜ Ü’ÜªÜÜ',
+ 'wikieditor-toolbar-help-content-file-description' => 'Ü Ü¦Ü¦Ü Ü›Ü¡ÜܪÜ',
+ 'wikieditor-toolbar-help-content-reference-description' => 'ܡܒܘܥÜ',
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'ÜšÜ˜Ü Ü¡Ü’Ü˜Ü¥Ü',
+ 'wikieditor-toolbar-help-content-signature-description' => 'ÜªÜ¡Ü ÜÜÜ•Ü',
+);
+
+/** Egyptian Spoken Arabic (مصرى)
+ * @author Dudi
+ * @author Meno25
+ */
+$messages['arz'] = array(
+ 'wikieditor' => 'Interface متقدم بتاع تعديل wikitext',
+ 'wikieditor-desc' => 'بيدّى interface بتاع wikitext بينÙع يتكبّر Ùˆ modules كتيره بتنÙع تعمل مميزات',
+ 'wikieditor-wikitext-tab' => 'Wikitext',
+ 'wikieditor-loading' => 'بيلوّد',
+ 'wikieditor-preview-preference' => 'شغّل الپروڤه بتاعة الجنب مع جنب',
+ 'wikieditor-preview-tab' => 'پروڤه',
+ 'wikieditor-preview-changes-tab' => 'تغييرات',
+ 'wikieditor-preview-loading' => 'بيلوّد...',
+ 'wikieditor-previewDialog-tab' => 'پروڤه',
+ 'wikieditor-previewDialog-loading' => 'بيلوّد...',
+ 'wikieditor-publish-preference' => 'شغل النشر واحده بواحده',
+ 'wikieditor-publish-button-publish' => 'انشر',
+ 'wikieditor-publish-button-cancel' => 'كانسل',
+ 'wikieditor-publish-dialog-title' => 'انشر ÙÙ‰ {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'ملخص التعديل (اشرح بإختصار التغييرات اللى عملتها):',
+ 'wikieditor-publish-dialog-minor' => 'تعديل صغير',
+ 'wikieditor-publish-dialog-watch' => 'راقب الصÙحه دى',
+ 'wikieditor-publish-dialog-publish' => 'انشر',
+ 'wikieditor-publish-dialog-goback' => 'ارجع',
+ 'wikieditor-template-editor-preference' => 'شغّل تعديل قوالب الwiki على اساس الÙورمه',
+ 'wikieditor-template-editor-dialog-title' => 'تعديل قالب',
+ 'wikieditor-template-editor-dialog-submit' => 'تحديث (update)',
+ 'wikieditor-template-editor-dialog-cancel' => 'كانسل',
+ 'wikieditor-templates-preference' => 'خلّى القالب يبان مقÙول',
+ 'wikieditor-toc-preference' => 'Enable navigable table of contents',
+ 'wikieditor-toc-show' => 'بيّن المحتويات',
+ 'wikieditor-toc-hide' => 'خبّى المحتويات',
+ 'wikieditor-toolbar' => 'شريط عدّة التحرير',
+ 'wikieditor-toolbar-desc' => 'عدّل صÙحة العدّة بالenhanced usability',
+ 'wikieditor-toolbar-loading' => 'بتلوّد...',
+ 'wikieditor-toolbar-tool-bold' => 'Bold',
+ 'wikieditor-toolbar-tool-bold-example' => 'Bold text',
+ 'wikieditor-toolbar-tool-italic' => 'Italic',
+ 'wikieditor-toolbar-tool-italic-example' => 'Italic text',
+ 'wikieditor-toolbar-tool-ilink' => 'لينك جوّانى',
+ 'wikieditor-toolbar-tool-ilink-example' => 'عنوان اللينك',
+ 'wikieditor-toolbar-tool-xlink' => 'لينك برّانى (اÙتكر تبتدى بـ http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com عنوان اللينك',
+ 'wikieditor-toolbar-tool-link' => 'لينك',
+ 'wikieditor-toolbar-tool-link-title' => 'Ø­ÙØ· لينك',
+ 'wikieditor-toolbar-tool-link-int' => 'لصÙحة wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'الصÙحه او الURL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'عنوان الصÙحه او الURL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'التكست اللى يتبيّن:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'التكست اللى ح يبان',
+ 'wikieditor-toolbar-tool-link-ext' => 'لصÙحة web برّانيّه',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Link URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'تكست اللينك:',
+ 'wikieditor-toolbar-tool-link-insert' => 'حط لينك',
+ 'wikieditor-toolbar-tool-link-cancel' => 'كانسل',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'الصÙحه موجوده',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'الصÙحه مش موجوده',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'لينك مش موجود',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'لينك برّانى',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'بيتشيّك على وجود الصÙحه...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'العنوان اللى حددته مش موجود.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'الURL اللى حددته باين عليه انه كان مقصود انه يحوّل على صÙحة ويكى تانيه. عايز تخلّيه لينك جوّانى؟',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'لينك جوّانى',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'لينك برّانى',
+ 'wikieditor-toolbar-tool-link-empty' => 'انت ما حطّيتش اى حاجه علشان يتوصّل عليها.',
+ 'wikieditor-toolbar-tool-file' => 'Embedded file',
+ 'wikieditor-toolbar-tool-reference' => 'مرجع',
+ 'wikieditor-toolbar-tool-reference-example' => 'اعمل insert لنَص الfootnote هنا',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'كانسل',
+ 'wikieditor-toolbar-tool-reference-title' => 'حط مرجع',
+ 'wikieditor-toolbar-tool-reference-insert' => 'حط',
+ 'wikieditor-toolbar-tool-reference-text' => 'التكست بتاع المرجع',
+ 'wikieditor-toolbar-tool-signature' => 'الامضا و ختم الوقت',
+ 'wikieditor-toolbar-section-advanced' => 'متقدم',
+ 'wikieditor-toolbar-tool-heading-example' => 'تكست العنوان',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'ليسته منقطه بـbullets',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Bulleted list item',
+ 'wikieditor-toolbar-tool-olist' => 'ليسته مترقمه',
+ 'wikieditor-toolbar-tool-olist-example' => 'Item اليسته المترقمه',
+ 'wikieditor-toolbar-tool-indent' => 'المساÙÙ‡ اللى ÙÙ‰ الاول (indentation)',
+ 'wikieditor-toolbar-tool-indent-example' => 'السطر الindented',
+ 'wikieditor-toolbar-tool-nowiki' => 'ماÙيش Ùورمات للويكى',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'حط تكست مش معمولâ€Ù„Ù‡ Ùورمات هنا',
+ 'wikieditor-toolbar-tool-redirect' => 'تحويل',
+ 'wikieditor-toolbar-tool-redirect-example' => 'اسم الصÙحه المقصوده',
+ 'wikieditor-toolbar-tool-big' => 'كبير',
+ 'wikieditor-toolbar-tool-big-example' => 'تكست كبير',
+ 'wikieditor-toolbar-tool-small' => 'صغير',
+ 'wikieditor-toolbar-tool-small-example' => 'تكست صغير',
+ 'wikieditor-toolbar-tool-superscript' => 'Superscript',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Superscript text',
+ 'wikieditor-toolbar-tool-subscript' => 'Subscript',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Subscript text',
+ 'wikieditor-toolbar-group-insert' => 'حط',
+ 'wikieditor-toolbar-tool-gallery' => 'جاليرى الصور',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Caption1
+$1:Example.jpg|Caption2',
+ 'wikieditor-toolbar-tool-newline' => 'سطر جديد',
+ 'wikieditor-toolbar-tool-table' => 'جدول',
+ 'wikieditor-toolbar-tool-table-example-old' => '! header 1
+! header 2
+! header 3
+|-
+| row 1, cell 1
+| row 1, cell 2
+| row 1, cell 3
+|-
+| row 2, cell 1
+| row 2, cell 2',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Cell text',
+ 'wikieditor-toolbar-tool-table-example-header' => 'تكست العنوان',
+ 'wikieditor-toolbar-tool-table-title' => 'حط جدول',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'صÙوق',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'عواميد',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'زوّد ص٠عنوان',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Style with borders',
+ 'wikieditor-toolbar-tool-table-sortable' => 'خلّى الجدول ينÙع يترتب',
+ 'wikieditor-toolbar-tool-table-example' => 'مثال',
+ 'wikieditor-toolbar-tool-table-preview' => 'پروڤه',
+ 'wikieditor-toolbar-tool-table-insert' => 'حط',
+ 'wikieditor-toolbar-tool-table-cancel' => 'كانسل',
+ 'wikieditor-toolbar-tool-table-toomany' => 'مش ممكن يتعمل insert لـ table بأكتر من $1 cells بالـ dialog ده.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'انت ما دخّلتش رقم موجود للـ rows او الـ columns',
+ 'wikieditor-toolbar-tool-table-zero' => 'ما ينÙعش تعمل insert لـ table من-غير rows او columns.',
+ 'wikieditor-toolbar-tool-replace' => 'دوّر و بدّل',
+ 'wikieditor-toolbar-tool-replace-title' => 'دوّر و بدّل',
+ 'wikieditor-toolbar-tool-replace-search' => 'دوّر على:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'بدّل بـ:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Match case',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Treat search string as a regular expression',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'شو٠اللى بعده',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'بدّل اللى بعده',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'بدلهم كلهم',
+ 'wikieditor-toolbar-tool-replace-close' => 'إقÙÙ„',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'التدوير بتاعك ما وصلش لأى حاجه.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 تبديلات اتعملت.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'انت ما حطّيتش اى حاجه علشان تدوّر عليها.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'The regular expression you entered is invalid: $1',
+ 'wikieditor-toolbar-section-characters' => 'Special characters',
+ 'wikieditor-toolbar-characters-page-latin' => 'لاتينى',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin extended',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-greek' => 'يونانى',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'كيريلى',
+ 'wikieditor-toolbar-characters-page-arabic' => 'عربى',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'عبرى',
+ 'wikieditor-toolbar-characters-page-bangla' => 'بانجلاديشى',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-section-help' => 'مساعده',
+ 'wikieditor-toolbar-help-heading-description' => 'الوصÙ',
+ 'wikieditor-toolbar-help-heading-syntax' => 'اللى بتكتبه',
+ 'wikieditor-toolbar-help-heading-result' => 'اللى بتاخده',
+ 'wikieditor-toolbar-help-page-format' => 'Formatting',
+ 'wikieditor-toolbar-help-page-link' => 'لينكات',
+ 'wikieditor-toolbar-help-page-heading' => 'Headings',
+ 'wikieditor-toolbar-help-page-list' => 'ليسَت',
+ 'wikieditor-toolbar-help-page-file' => 'Ùايلات',
+ 'wikieditor-toolbar-help-page-reference' => 'مراجع',
+ 'wikieditor-toolbar-help-page-discussion' => 'مناقشه',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Italic',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Italic text''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Italic text</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Bold',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Bold text'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Bold text</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Bold &amp; italic',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Bold &amp; italic text'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Bold &amp; italic text</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'لينك جوّانى',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[اسم الصÙحه|اسم اللينك]]<br />[[اسم الصÙحه]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>اسم اللينك</a><br /><a href='#'>اسم الصÙحه</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'لينك برّانى',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org اسم اللينك]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>اسم اللينك</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2nd level heading',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Heading text ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Heading text</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3rd level heading',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Heading text ===',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4th level heading',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Heading text</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5th level heading',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Heading text =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Heading text</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'ليسته Ùيها bullets',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* List item<br />* List item',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>List item</li><li>List item</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'ليسته مترقمه',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# List item<br /># List item',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>List item</li><li>List item</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Embedded file',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Caption text]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Caption text</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'مرجع',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Page text.&lt;ref name="test"&gt;[http://www.example.org Link text], additional text.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Page text.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'إستعمل تانى Ù†Ùس المرجع',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Page text.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'اعرض المراجع',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Link text</a>, additional text.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'الامضا مع ختم الوقت',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>اسم اليوزر</a> (<a href='#' title='{{#special:mytalk}}'>كلّمه</a>) 15:54,†10 يونيه 2009 â€(UTC)â€",
+ 'wikieditor-toolbar-help-content-signature-description' => 'امضا',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>اسم اليوزر</a> (<a href='#' title='{{#special:mytalk}}'>كلّم</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indent',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normal text<br />:Indented text<br />::Indented text',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normal text<dl><dd>Indented text<dl><dd>Indented text</dd></dl></dd></dl>',
+);
+
+/** Assamese (অসমীয়া)
+ * @author Chaipau
+ */
+$messages['as'] = array(
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+);
+
+/** Azerbaijani (Azərbaycanca)
+ * @author Cekli829
+ * @author PPerviz
+ * @author Vago
+ */
+$messages['az'] = array(
+ 'wikieditor-wikitext-tab' => 'Vikimətn',
+ 'wikieditor-loading' => 'Yüklə',
+ 'wikieditor-preview-tab' => 'Sınaq göstərişi',
+ 'wikieditor-preview-loading' => 'Yüklənir…',
+ 'wikieditor-previewDialog-tab' => 'Sınaq göstərişi',
+ 'wikieditor-previewDialog-loading' => 'Yüklənir…',
+ 'wikieditor-publish-button-cancel' => 'Ləğv et',
+ 'wikieditor-template-editor-dialog-cancel' => 'Ləğv et',
+ 'wikieditor-toolbar-loading' => 'Yüklənir…',
+ 'wikieditor-toolbar-tool-bold' => 'Qalın',
+ 'wikieditor-toolbar-tool-bold-example' => 'Qalın mətn',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kursiv mətn',
+ 'wikieditor-toolbar-tool-ilink' => 'Daxili keçid',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Keçidin başlığı',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com başlıq',
+ 'wikieditor-toolbar-tool-link' => 'Keçid',
+ 'wikieditor-toolbar-tool-link-title' => 'Keçid yerləşdir',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'URL üçün səhifə başlığı',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL linki:',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Ləğv et',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Daxili keçid',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Xarici keçid',
+ 'wikieditor-toolbar-tool-file' => 'Şəkil əlavə etmə',
+ 'wikieditor-toolbar-tool-file-example' => 'Misal.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Ä°stinad',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Ləğv et',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Yerləşdirmək',
+ 'wikieditor-toolbar-tool-reference-text' => 'İstinad mətn',
+ 'wikieditor-toolbar-tool-signature' => 'Ä°mza vÉ™ vaxt qeydi',
+ 'wikieditor-toolbar-section-advanced' => 'Ætraflı',
+ 'wikieditor-toolbar-tool-heading' => 'Başlıq',
+ 'wikieditor-toolbar-tool-heading-1' => 'Səviyyə 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Səviyyə 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Səviyyə 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Səviyyə 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Səviyyə 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Başlıq mətni',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-redirect' => 'Yönləndirmə',
+ 'wikieditor-toolbar-tool-big' => 'Böyük',
+ 'wikieditor-toolbar-tool-big-example' => 'Böyük mətn',
+ 'wikieditor-toolbar-tool-small' => 'Kiçik',
+ 'wikieditor-toolbar-tool-small-example' => 'Kiçik mətn',
+ 'wikieditor-toolbar-group-insert' => 'Yerləşdirmək',
+ 'wikieditor-toolbar-tool-gallery' => 'Şəkil qalereyası',
+ 'wikieditor-toolbar-tool-newline' => 'Yeni xətt',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! başlıq 1
+! başlıq 2
+! başlıq 3
+|-
+| sıra 1, sütun 1
+| sıra 1, sütun 2
+| sıra 1, sütun 3
+|-
+| sıra 2, sütun 1
+| sıra 2, sütun 2
+| sıra 2, sütun 3',
+ 'wikieditor-toolbar-tool-table-title' => 'Cədvəl yerləşdir',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Sətirlər:',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Sütunlar:',
+ 'wikieditor-toolbar-tool-table-example' => 'Nümunə',
+ 'wikieditor-toolbar-tool-table-preview' => 'Sınaq göstərişi',
+ 'wikieditor-toolbar-tool-table-insert' => 'Yerləşdirmək',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Ləğv et',
+ 'wikieditor-toolbar-tool-replace' => 'Axtar və dəyiş',
+ 'wikieditor-toolbar-tool-replace-title' => 'Axtar və dəyiş',
+ 'wikieditor-toolbar-tool-replace-search' => 'Axtar:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Bununla dəyiş:',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Növbətini axtar',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Növbətini dəyiş',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Hamısını dəyiş',
+ 'wikieditor-toolbar-tool-replace-close' => 'BaÄŸla',
+ 'wikieditor-toolbar-section-characters' => 'Xüsusi işarələr',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latın',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latın genişləndirilmiş',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simvollar',
+ 'wikieditor-toolbar-characters-page-greek' => 'Yunan',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kiril',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ÆrÉ™b',
+ 'wikieditor-toolbar-characters-page-persian' => 'Fars',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ä°vrit',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Benqal',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Teluqu',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tay',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-section-help' => 'Kömək',
+ 'wikieditor-toolbar-help-heading-description' => 'Təsvir',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Yazdığınız',
+ 'wikieditor-toolbar-help-heading-result' => 'Aldığınız',
+ 'wikieditor-toolbar-help-page-format' => 'Formatlaşdırmaq',
+ 'wikieditor-toolbar-help-page-link' => 'Keçidlər',
+ 'wikieditor-toolbar-help-page-heading' => 'Başlıqlar',
+ 'wikieditor-toolbar-help-page-list' => 'Siyahılar',
+ 'wikieditor-toolbar-help-page-file' => 'Fayllar',
+ 'wikieditor-toolbar-help-page-reference' => 'Ä°stinadlar',
+ 'wikieditor-toolbar-help-page-discussion' => 'Müzakirə',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursiv mətn''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursiv mətn</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Qalın',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Qalın mətn'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Qalın mətn</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Qalın və kursiv',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Qalın və kursiv mətn'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Qalın və kursiv mətn</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Daxili keçid',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Səhifənin adı|Keçidin adı]]<br />[[Səhifənin adı]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Keçidin adı</a><br /><a href='#'>Səhifənin adı</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Xarici keçid',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Keçidin adı]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Keçidin adı</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2-ci səviyyəlı başlıq',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Başlıq mətn ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Başlıq mətn</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3-cü səviyyəli başlıq',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Başlıq mətn ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Başlıq mətn</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4-cü səviyyəli başlıq',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Başlıq mətn ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Başlıq mətn</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5-ci səviyyəlı başlıq',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Başlıq mətn =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Başlıq mətn</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Markalanmış siyahı',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Siyahı bəndi<br />* Siyahı bəndi',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Siyahı bəndi</li><li>Siyahı bəndi</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Nömrələnən siyahı',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Siyahı bəndi<br /># Siyahı bəndi',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Siyahı bəndi</li><li>Siyahı bəndi</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Şəkil əlavə etmə',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Mövzu mətni]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Mövzu mətni' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Böyüt' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Mövzu mətni</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Ä°stinad',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Səhifənin mətni.&lt;ref name="test"&gt;[http://www.example.org Keçidin mətni], əlavə mətnt.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Səhifənin mətni.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Eyni istinaddan istifadənin əlavəsi',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Səhifə mətni.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'İstinadları göstər',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Keçid mətni</a>, əlavə mətn.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Vaxt qeydi ilÉ™ imza',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>İstifadəçi adı</a> (<a href='#' title='{{#special:mytalk}}'>müzakirə</a>) 15:54, 10 iyun 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Ä°mza',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>İstifadəçi adı</a> (<a href='#' title='{{#special:mytalk}}'>müzakirə</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Abzas',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normal mətn<br />:Abzasla mətn<br />::Abzasla mətn',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normal mətn<dl><dd>Abzasla mətn<dl><dd>Abzasla mətn</dd></dl></dd></dl>',
+);
+
+/** Bashkir (БашҡортÑа)
+ * @author Assele
+ */
+$messages['ba'] = array(
+ 'wikieditor' => 'Киңәйтелгән викитекÑÑ‚ мөхәррирләү интерфейÑÑ‹',
+ 'wikieditor-desc' => 'Киңәйтелгән викитекÑÑ‚ мөхәррирләү интерфейÑÑ‹ менән һәм модулдәр тарафынан күп мөмкинлектәр менән тәьмин итә',
+ 'wikieditor-wikitext-tab' => 'ВикитекÑÑ‚',
+ 'wikieditor-loading' => 'Сығарыу',
+ 'wikieditor-preview-preference' => 'Йәнәш ҡарап Ñығыуҙы тоҡандырырға',
+ 'wikieditor-preview-tab' => 'Ҡарап Ñығыу',
+ 'wikieditor-preview-changes-tab' => 'Үҙгәрештәр',
+ 'wikieditor-preview-loading' => 'Сығарыу...',
+ 'wikieditor-previewDialog-preference' => 'Ҡарап Ñығыу диалогын тоҡандырырға',
+ 'wikieditor-previewDialog-tab' => 'Ҡарап Ñығыу',
+ 'wikieditor-previewDialog-loading' => 'Сығарыу...',
+ 'wikieditor-publish-preference' => 'Ðҙымлап баҫтырыуҙы тоҡандырырға',
+ 'wikieditor-publish-button-publish' => 'Баҫтырып Ñығарырға',
+ 'wikieditor-publish-button-cancel' => 'Кире алырға',
+ 'wikieditor-publish-dialog-title' => ' {{SITENAME}} проектына баҫтырып Ñығарырға',
+ 'wikieditor-publish-dialog-summary' => 'Үҙгәртеүҙәр таÑуирламаһы (ниндәй үҙгәртеүҙәр кереткәнегеҙҙе ҡыҫҡаÑа таÑуирлағыҙ):',
+ 'wikieditor-publish-dialog-minor' => 'Әҙ генә үҙгәрештәр',
+ 'wikieditor-publish-dialog-watch' => 'Был битте күҙәтергә',
+ 'wikieditor-publish-dialog-publish' => 'Баҫтырып Ñығарырға',
+ 'wikieditor-publish-dialog-goback' => 'Кире ҡайтырға',
+ 'wikieditor-template-editor-preference' => 'Ҡалыптарҙы формалар Ñрҙамында үҙгәртеүҙе тоҡандырырға',
+ 'wikieditor-template-editor-dialog-title' => 'Ҡалыпты үҙгәртеү',
+ 'wikieditor-template-editor-dialog-submit' => 'Яңыртырға',
+ 'wikieditor-template-editor-dialog-cancel' => 'Кире алырға',
+ 'wikieditor-templates-preference' => 'Ҡалыптарҙы йыйыу мөмкинлеген тоҡандырырға',
+ 'wikieditor-toc-preference' => 'Йөкмәтке буйлап күÑеү һылтанмаларын күрһәтергә',
+ 'wikieditor-toc-show' => 'Йөкмәткене күрһәтергә',
+ 'wikieditor-toc-hide' => 'Йөкмәткене йәшерергә',
+ 'wikieditor-toolbar' => 'Мөхәррирләү ҡоралдары',
+ 'wikieditor-toolbar-desc' => 'Яҡшыртылған мөхәррирләү ҡоралдары',
+ 'wikieditor-toolbar-preference' => 'Яҡшыртылған мөхәррирләү ҡоралдарын ҡулланырға',
+ 'wikieditor-toolbar-dialogs-preference' => 'Һылтанмалар, таблицалар һәм башҡаларҙы Ó©Ò«Ñ‚Ó™Ò¯ Ó©Ñөн диалогтар ҡулланырға',
+ 'wikieditor-toolbar-loading' => 'Сығарыу...',
+ 'wikieditor-toolbar-tool-bold' => 'Ҡалын',
+ 'wikieditor-toolbar-tool-bold-example' => 'Ҡалын Ñҙылыш',
+ 'wikieditor-toolbar-tool-italic' => 'Ò Ñ‹Ñ',
+ 'wikieditor-toolbar-tool-italic-example' => 'Ò Ñ‹Ñ Ñҙылыш',
+ 'wikieditor-toolbar-tool-ilink' => 'ЭÑке һылтанма',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Һылтанма иÑеме',
+ 'wikieditor-toolbar-tool-xlink' => 'Тышҡы һылтанма (http:// префикÑын онотмағыҙ)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com һылтанма иÑеме',
+ 'wikieditor-toolbar-tool-link' => 'Һылтанма',
+ 'wikieditor-toolbar-tool-link-title' => 'Һылтанма өҫтәү',
+ 'wikieditor-toolbar-tool-link-int' => 'Вики биткә күÑеү',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Кәрәкле бит йәки URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Биттең иÑеме йәки URL адреÑÑ‹:',
+ 'wikieditor-toolbar-tool-link-int-text' => 'КүрһәтелеүÑе текÑÑ‚:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'КүрһәтелеүÑе текÑÑ‚',
+ 'wikieditor-toolbar-tool-link-ext' => 'Тышҡы веб Ñайтҡа',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Һылтанманың URL адреÑÑ‹:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Һылтанманың текÑÑ‚Ñ‹:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Һылтанма өҫтәргә',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Кире алырға',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Был бит бар инде',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Был бит юҡ',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ИÑем дөрөҫ түгел',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Тышҡы һылтанма',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Биттең барлығын тикшереү...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Керетелгән иÑем дөрөҫ түгел.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Һеҙ күрһәткән URL Ð°Ð´Ñ€ÐµÑ Ð±Ð°ÑˆÒ¡Ð° вики-биттең һылтанмаһына оҡшаған.
+Был һылтанманы ÑÑке һылтанмаға әйләндерергә теләйһегеҙме?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'ЭÑке һылтанма',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Тышҡы һылтанма',
+ 'wikieditor-toolbar-tool-link-empty' => 'Һеҙ нимәгә һылтанма Ñһағанығыҙҙы күрһәтмәгәнһегеҙ.',
+ 'wikieditor-toolbar-tool-file' => 'Индерелгән файл',
+ 'wikieditor-toolbar-tool-file-example' => 'Миҫал.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Төшөрмә',
+ 'wikieditor-toolbar-tool-reference-example' => 'Төшөрмәнең текÑтын бында керетегеҙ',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Кире алырға',
+ 'wikieditor-toolbar-tool-reference-title' => 'Төшөрмә өҫтәү',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Өҫтәргә',
+ 'wikieditor-toolbar-tool-reference-text' => 'Төшөрмәнең текÑÑ‚Ñ‹',
+ 'wikieditor-toolbar-tool-signature' => 'Имза һәм ҡуйыу ваҡыты',
+ 'wikieditor-toolbar-section-advanced' => 'Киңәйтелгән',
+ 'wikieditor-toolbar-tool-heading' => 'ИÑем',
+ 'wikieditor-toolbar-tool-heading-1' => '1-Ñе быуын',
+ 'wikieditor-toolbar-tool-heading-2' => '2-Ñе быуын',
+ 'wikieditor-toolbar-tool-heading-3' => '3-ÑÓ© быуын',
+ 'wikieditor-toolbar-tool-heading-4' => '4-Ñе быуын',
+ 'wikieditor-toolbar-tool-heading-5' => '5-Ñе быуын',
+ 'wikieditor-toolbar-tool-heading-example' => 'ИÑем',
+ 'wikieditor-toolbar-group-format' => 'Форматлау',
+ 'wikieditor-toolbar-tool-ulist' => 'Тамғалы иÑемлек',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Тамғалы иÑемлектең бер юлы',
+ 'wikieditor-toolbar-tool-olist' => 'Һанлы иÑемлек',
+ 'wikieditor-toolbar-tool-olist-example' => 'Һанлы иÑемлектең бер юлы',
+ 'wikieditor-toolbar-tool-indent' => 'Буш ара',
+ 'wikieditor-toolbar-tool-indent-example' => 'Буш аралы юл',
+ 'wikieditor-toolbar-tool-nowiki' => 'Вики-форматлауға иғтибар итмәҫкә',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Бында форматланмаған текÑÑ‚Ñ‹ өҫтәгеҙ.',
+ 'wikieditor-toolbar-tool-redirect' => 'КүÑереү',
+ 'wikieditor-toolbar-tool-redirect-example' => 'КүÑÓ™ торған биттең иÑеме',
+ 'wikieditor-toolbar-tool-big' => 'Эре',
+ 'wikieditor-toolbar-tool-big-example' => 'Эре текÑÑ‚',
+ 'wikieditor-toolbar-tool-small' => 'Ваҡ',
+ 'wikieditor-toolbar-tool-small-example' => 'Ваҡ текÑÑ‚',
+ 'wikieditor-toolbar-tool-superscript' => 'Юлдан өҫтә',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Юлдан өҫтәге текÑÑ‚',
+ 'wikieditor-toolbar-tool-subscript' => 'Юлдан аҫта',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Юлдан аҫтағы текÑÑ‚',
+ 'wikieditor-toolbar-group-insert' => 'Ó¨Ò«Ñ‚Ó™Ò¯',
+ 'wikieditor-toolbar-tool-gallery' => 'РәÑемдәр йыйынтығы',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Миҫал.jpg|ТаÑуирлама1
+$1:Миҫал.jpg|ТаÑуирлама2',
+ 'wikieditor-toolbar-tool-newline' => 'Яңы юл',
+ 'wikieditor-toolbar-tool-table' => 'Таблица',
+ 'wikieditor-toolbar-tool-table-example-old' => '! башлыҡ 1
+! башлыҡ 2
+! башлыҡ 3
+|-
+| юл 1, күҙәнәк 1
+| юл 1, күҙәнәк 2
+| юл 1, күҙәнәк 3
+|-
+| юл 2, күҙәнәк 1
+| юл 2, күҙәнәк 2
+| юл 2, күҙәнәк 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ТекÑÑ‚',
+ 'wikieditor-toolbar-tool-table-example-header' => 'ИÑем',
+ 'wikieditor-toolbar-tool-table-title' => 'Таблица өҫтәү',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Юлдар',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Бағаналар',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Башлыҡ юлын өҫтәү',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Сиктәрен Ñһау',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Таблицаны тәртипкә килтермәле итергә',
+ 'wikieditor-toolbar-tool-table-example' => 'ТекÑÑ‚',
+ 'wikieditor-toolbar-tool-table-preview' => 'Ҡарап Ñығырға',
+ 'wikieditor-toolbar-tool-table-insert' => 'Өҫтәргә',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Кире алырға',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Был диалог аша $1 күҙәнәктән ашыу дәүмәл менән таблица өҫтәргә мөмкин түгел.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Һеҙ юлдар һәм бағаналар һанын дөрөҫ күрһәтмәгәнһегеҙ.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Юлдар һәм бағаналар һаны нуль була алмай.',
+ 'wikieditor-toolbar-tool-replace' => 'Эҙләү һәм алмаштырыу',
+ 'wikieditor-toolbar-tool-replace-title' => 'Эҙләү һәм алмаштырыу',
+ 'wikieditor-toolbar-tool-replace-search' => 'Табырға:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Ошоға алмаштырырға:',
+ 'wikieditor-toolbar-tool-replace-case' => 'РегиÑтрҙы иҫәпкә алырға',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Эҙләү Ó©Ñөн текÑÑ‚Ñ‚Ñ‹ регулÑÑ€ аңлатма тип иҫәпләргә',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Сираттағыны табырға',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Сираттағыны алмаштырырға',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Барыһын да алмаштырырға',
+ 'wikieditor-toolbar-tool-replace-close' => 'Ябырға',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Һеҙҙең һорауығыҙ буйынÑа бер ни Ò™Ó™ табылманы.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 алмаштырыу үткәрелде.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Һеҙ нимә Ñҙләгәнегеҙҙе күрһәтмәгәнһегеҙ.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Һеҙ кереткән регулÑÑ€ аңлатма дөрөҫ түгел: $1',
+ 'wikieditor-toolbar-section-characters' => 'МахÑÑƒÑ Ñ‚Ð°Ð¼Ò“Ð°Ð»Ð°Ñ€',
+ 'wikieditor-toolbar-characters-page-latin' => 'Латин',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Латин (киңәйтелгән)',
+ 'wikieditor-toolbar-characters-page-ipa' => 'Ð¥ÐФӘ (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Тамғалар',
+ 'wikieditor-toolbar-characters-page-greek' => 'Грек',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Кириллик',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Ғәрәп',
+ 'wikieditor-toolbar-characters-page-persian' => 'ФарÑÑ‹',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Йәһүд',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Бенгал',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Телугу',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Сингал',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Гуджарати',
+ 'wikieditor-toolbar-characters-page-thai' => 'Тай',
+ 'wikieditor-toolbar-characters-page-lao' => 'Лао',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Кһмер',
+ 'wikieditor-toolbar-section-help' => 'Белешмә',
+ 'wikieditor-toolbar-help-heading-description' => 'ТаÑуирлама',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Һеҙ керетәһегеҙ',
+ 'wikieditor-toolbar-help-heading-result' => 'Килеп Ñыға',
+ 'wikieditor-toolbar-help-page-format' => 'Форматлау',
+ 'wikieditor-toolbar-help-page-link' => 'Һылтанмалар',
+ 'wikieditor-toolbar-help-page-heading' => 'ИÑемдәр',
+ 'wikieditor-toolbar-help-page-list' => 'ИÑемлектәр',
+ 'wikieditor-toolbar-help-page-file' => 'Файлдар',
+ 'wikieditor-toolbar-help-page-reference' => 'Төшөрмәләр',
+ 'wikieditor-toolbar-help-page-discussion' => 'Фекер алышыу',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Ò Ñ‹Ñ',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Ò Ñ‹Ñ Ñҙыу''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Ò Ñ‹Ñ Ñҙыу</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Ҡалын',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Ҡалын Ñҙыу'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Ҡалын Ñҙыу</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Ҡалын һәм Ò¡Ñ‹Ñ',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Ҡалын һәм Ò¡Ñ‹Ñ Ñҙыу'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Ҡалын һәм Ò¡Ñ‹Ñ Ñҙыу</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'ЭÑке һылтанма',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Биттең иÑеме|Һылтанма текÑÑ‚Ñ‹]]<br />[[Биттең иÑеме]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Һылтанма текÑÑ‚Ñ‹</a><br /><a href='#'>Биттең иÑеме</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Тышҡы һылтанма',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Һылтанма текÑÑ‚Ñ‹]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Һылтанма текÑÑ‚Ñ‹</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2-Ñе быуындағы иÑем',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '==ИÑем ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>ИÑем</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3-ÑÓ© быуындағы иÑем',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== ИÑем ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>ИÑем</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4-Ñе быуындағы иÑем',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== ИÑем ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>ИÑем</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5-Ñе быуындағы иÑем',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== ИÑем =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>ИÑем</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Тамғалы иÑемлек',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* ИÑемлектең бер юлы<br />* ИÑемлектең бер юлы',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>ИÑемлектең бер юлы</li><li>ИÑемлектең бер юлы</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Һанлы иÑемлек',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# ИÑемлектең бер юлы<br /># ИÑемлектең бер юлы',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>ИÑемлектең бер юлы</li><li>ИÑемлектең бер юлы</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Индерелгән файл',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Миҫал.png|thumb|Ðңлатма]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Ðңлатма' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Ҙурайтырға' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Ðңлатма</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Төшөрмә',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Биттәге текÑÑ‚.&lt;ref name="test"&gt;[http://www.example.org Һылтанма текÑÑ‚Ñ‹], өҫтәмә текÑÑ‚.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Биттәге текÑÑ‚.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Бер үк төшөрмәне ҡабаттан ҡулланыу',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Биттәге текÑÑ‚.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Төшөрмәләрҙе күрһәтеү',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Һылтанма текÑÑ‚Ñ‹</a>, өҫтәмә текÑÑ‚.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Имза һәм ҡуйыу ваҡыты',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>ҠатнашыуÑÑ‹ иÑеме</a> (<a href='#' title='{{#special:mytalk}}'>фекер алышыу</a>) 11:56, 30 авгуÑÑ‚ (Урағай) 2010 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Имза',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>ҠатнашыуÑÑ‹ иÑеме</a> (<a href='#' title='{{#special:mytalk}}'>фекер алышыу</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Буш ара',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Ғәҙәттәге юл<br />:Буш аралы юл<br />::Буш аралы юл',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Ғәҙәттәге юл<dl><dd>Буш аралы юл<dl><dd>Буш аралы юл</dd></dl></dd></dl>',
+);
+
+/** Bavarian (Boarisch)
+ * @author Mucalexx
+ */
+$messages['bar'] = array(
+ 'wikieditor-template-editor-preference' => 'Formularbasirnds Beorwaten vo Wiki-Vurlong aktivirn',
+ 'wikieditor-template-editor-dialog-title' => 'Vurlog beorwaten',
+ 'wikieditor-template-editor-dialog-submit' => 'Aktualisirn',
+ 'wikieditor-template-editor-dialog-cancel' => 'Obbrecha',
+ 'wikieditor-templates-preference' => 'Aktivirung vom Ei- und Ausblenden vo Vurlong',
+);
+
+/** Belarusian (БеларуÑкаÑ)
+ * @author Maksim L.
+ * @author Yury Tarasievich
+ */
+$messages['be'] = array(
+ 'wikieditor' => 'Палепшаны інтÑÑ€Ñ„ÐµÐ¹Ñ Ð¿Ñ€Ð°ÑžÐºÑ– вікітÑкÑта',
+ 'wikieditor-desc' => 'Дадае палепшаны інтÑÑ€Ñ„ÐµÐ¹Ñ Ð¿Ñ€Ð°ÑžÐºÑ– вікітÑкÑта Ñ– шмат модульных функцый',
+ 'wikieditor-wikitext-tab' => 'ВікітÑкÑÑ‚',
+ 'wikieditor-loading' => 'Загрузка',
+ 'wikieditor-preview-preference' => 'Уключыць перадпаказ бок аб бок',
+ 'wikieditor-preview-tab' => 'Перадпаказ',
+ 'wikieditor-preview-changes-tab' => 'Змены',
+ 'wikieditor-preview-loading' => 'Загрузка...',
+ 'wikieditor-publish-preference' => 'Уключыць пакрокавую публікацыю',
+ 'wikieditor-publish-button-publish' => 'Ðпублікаваць',
+ 'wikieditor-publish-button-cancel' => 'Закрыць',
+ 'wikieditor-publish-dialog-title' => 'Ðпублікаваць у {{GRAMMAR:меÑны|{{SITENAME}}}}',
+ 'wikieditor-publish-dialog-summary' => 'ТлумачÑнне правак (каротка апішыце Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ñ‹Ñ Ð¿Ñ€Ð°ÑžÐºÑ–)',
+ 'wikieditor-publish-dialog-minor' => 'Ð”Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¿Ñ€Ð°ÑžÐºÐ°',
+ 'wikieditor-publish-dialog-watch' => 'Ðазіраць за гÑтай Ñтаронкай',
+ 'wikieditor-publish-dialog-publish' => 'Ðпублікаваць',
+ 'wikieditor-publish-dialog-goback' => 'Ð’Ñрнуцца',
+ 'wikieditor-template-editor-preference' => 'Уключыць праўку шаблонаў праз дыÑлогі',
+ 'wikieditor-template-editor-dialog-title' => 'Правіць шаблон',
+ 'wikieditor-template-editor-dialog-submit' => 'Ðбнавіць',
+ 'wikieditor-template-editor-dialog-cancel' => 'Закрыць',
+ 'wikieditor-templates-preference' => 'Уключыць згортванне шаблонаў',
+ 'wikieditor-toc-preference' => 'Уключыць змеÑÑ‚ з магчымаÑцю навігацыі',
+ 'wikieditor-toc-show' => 'Паказаць змеÑÑ‚',
+ 'wikieditor-toc-hide' => 'Схаваць змеÑÑ‚',
+ 'wikieditor-toolbar' => 'ПанÑль інÑтрументаў',
+ 'wikieditor-toolbar-desc' => 'ПанÑль інÑтрументаў з палепшанымі магчымаÑцÑмі',
+ 'wikieditor-toolbar-preference' => 'Уключыць панÑль інÑтрументаў з палепшанымі магчымаÑцÑмі',
+ 'wikieditor-toolbar-dialogs-preference' => 'Уключыць дыÑлогі Ð´Ð»Ñ ÑžÑтаўкі ÑпаÑылак, табліц Ñ– інш.',
+ 'wikieditor-toolbar-loading' => 'Загрузка…',
+ 'wikieditor-toolbar-tool-bold' => 'Цёмны',
+ 'wikieditor-toolbar-tool-bold-example' => 'Цёмны Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-tool-italic' => 'КурÑÑ–Ñž',
+ 'wikieditor-toolbar-tool-italic-example' => 'КурÑіўны Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-tool-ilink' => 'Ð£Ð½ÑƒÑ‚Ñ€Ð°Ð½Ð°Ñ ÑпаÑылка',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Ðазва ÑпаÑылкі',
+ 'wikieditor-toolbar-tool-xlink' => 'СпаÑылка Ñž Сеціва (памÑтайце пра прÑÑ„Ñ–ÐºÑ http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com назва ÑпаÑылкі',
+ 'wikieditor-toolbar-tool-link' => 'СпаÑылка',
+ 'wikieditor-toolbar-tool-link-title' => 'УÑтавіць ÑпаÑылку',
+ 'wikieditor-toolbar-tool-link-int' => 'Ðа вікі-Ñтаронку',
+ 'wikieditor-toolbar-tool-link-int-target' => 'ÐœÑÑ‚Ð°Ð²Ð°Ñ Ñтаронка або URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Ðазва Ñтаронкі або URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'ТÑкÑÑ‚ Ð´Ð»Ñ Ð¿Ð°ÐºÐ°Ð·Ñƒ:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Упішыце Ñ‚ÑкÑÑ‚, Ñкі будзе паказаны',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ðа Ñтаронку Ñž Сеціве',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL ÑпаÑылкі:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'ТÑкÑÑ‚ ÑпаÑылкі:',
+ 'wikieditor-toolbar-tool-link-insert' => 'УÑтавіць ÑпаÑылку',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Закрыць',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Старонка Ñ–Ñнуе',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Старонкі не Ñ–Ñнуе',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ÐÑÑÐ»ÑƒÑˆÐ½Ð°Ñ Ð½Ð°Ð·Ð²Ð°',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'СпаÑылка Ñž Сеціва',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Праверка наÑўнаÑці Ñтаронкі...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'УпіÑÐ°Ð½Ð°Ñ Ð½ÑÑÐ»ÑƒÑˆÐ½Ð°Ñ Ð½Ð°Ð·Ð²Ð°.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'УÑтаўлены URL, падобны да ÑпаÑылкі на іншую вікі-Ñтаронку.
+Зрабіць ÑпаÑылку ўнутранай?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Ð£Ð½ÑƒÑ‚Ñ€Ð°Ð½Ð°Ñ ÑпаÑылка',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'СпаÑылка Ñž Сеціва',
+ 'wikieditor-toolbar-tool-link-empty' => 'Ð’Ñ‹ не ÑžÑтавілі Ð°Ð´Ñ€Ð°Ñ ÑпаÑылкі.',
+ 'wikieditor-toolbar-tool-file' => 'Файл у Ñ‚ÑкÑце',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'ЗноÑка',
+ 'wikieditor-toolbar-tool-reference-example' => 'Упішыце Ñюды Ñ‚ÑкÑÑ‚ зноÑкі',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Закрыць',
+ 'wikieditor-toolbar-tool-reference-title' => 'УÑтавіць зноÑку',
+ 'wikieditor-toolbar-tool-reference-insert' => 'УÑтавіць',
+ 'wikieditor-toolbar-tool-reference-text' => 'ТÑкÑÑ‚ зноÑкі',
+ 'wikieditor-toolbar-tool-signature' => 'Ваш Ð¿Ð¾Ð´Ð¿Ñ–Ñ Ñ– адзначаны чаÑ',
+ 'wikieditor-toolbar-section-advanced' => 'Дадаткова',
+ 'wikieditor-toolbar-tool-heading' => 'Загаловак',
+ 'wikieditor-toolbar-tool-heading-1' => 'Узровень 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Узровень 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Узровень 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Узровень 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Узровень 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'ТÑкÑÑ‚ загалоўка',
+ 'wikieditor-toolbar-group-format' => 'Фармат',
+ 'wikieditor-toolbar-tool-ulist' => 'Маркіраваны пералік',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Элемент маркіраванага пераліку',
+ 'wikieditor-toolbar-tool-olist' => 'Ðумараваны пералік',
+ 'wikieditor-toolbar-tool-olist-example' => 'Элемент нумараванага пераліку',
+ 'wikieditor-toolbar-tool-indent' => 'ВодÑтуп',
+ 'wikieditor-toolbar-tool-indent-example' => 'Радок з водÑтупам',
+ 'wikieditor-toolbar-tool-nowiki' => 'Без вікі-фарматаваннÑ',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'УÑтаўце Ñюды нефарматаваны Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-tool-redirect' => 'Redirect',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ðазва мÑтавай Ñтаронкі',
+ 'wikieditor-toolbar-tool-big' => 'Буйны',
+ 'wikieditor-toolbar-tool-big-example' => 'Буйны Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-tool-small' => 'Дробны',
+ 'wikieditor-toolbar-tool-small-example' => 'Дробны Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-tool-superscript' => 'Верхні індÑкÑ',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Ðадрадковы Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-tool-subscript' => 'Ðіжні індÑкÑ',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Падрадковы Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-group-insert' => 'УÑтавіць',
+ 'wikieditor-toolbar-tool-gallery' => 'ГалерÑÑ Ð²Ñ‹ÑÑž',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|ÐпіÑанне1
+$1:Example.jpg|ÐпіÑанне2',
+ 'wikieditor-toolbar-tool-newline' => 'Ðовы радок',
+ 'wikieditor-toolbar-tool-table' => 'Табліца',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+ ! загаловак 1
+ ! загаловак 2
+ ! загаловак 3
+ | -
+ | радок 1, ÑчÑйка 1
+ | радок 1, ÑчÑйка 2
+ | радок 1, ÑчÑйка 3
+ | -
+ | радок 2, ÑчÑйка 1
+ | радок 2, ÑчÑйка 2
+ | радок 2, ÑчÑйка 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ТÑкÑÑ‚ ÑчÑйкі',
+ 'wikieditor-toolbar-tool-table-example-header' => 'ТÑкÑÑ‚ загалоўка',
+ 'wikieditor-toolbar-tool-table-title' => 'УÑтавіць табліцу',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Радкоў',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Слупкоў',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Дадаць радок загалоўка',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Стыль з граніцамі',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Дадаць магчымаÑць ÑартаваннÑ',
+ 'wikieditor-toolbar-tool-table-example' => 'ТÑкÑÑ‚ ÑчÑйкі',
+ 'wikieditor-toolbar-tool-table-preview' => 'Перадпаказ',
+ 'wikieditor-toolbar-tool-table-insert' => 'УÑтавіць',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Закрыць',
+ 'wikieditor-toolbar-tool-table-toomany' => 'УÑтаўка табліцы больш чым з $ 1 {{PLURAL:$1|ÑчÑйкай|ÑчÑйкамі|ÑчÑйкамі}} не магчыма праз гÑÑ‚Ñ‹ дыÑлог.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Ð’Ñ‹ не ўвÑлі Ñлушную колькаÑць радкоў або Ñлупкоў.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ð’Ñ‹ не можаце ÑžÑтавіць табліцу з нулÑвой колькаÑцю радкоў або Ñлупкоў.',
+ 'wikieditor-toolbar-tool-replace' => 'ЗнайÑці Ñ– замÑніць',
+ 'wikieditor-toolbar-tool-replace-title' => 'Пошук і замена',
+ 'wikieditor-toolbar-tool-replace-search' => 'ЗнайÑці:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'ЗамÑніць на:',
+ 'wikieditor-toolbar-tool-replace-case' => 'З улікам Ñ€ÑгіÑтру',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Лічыць радок пошуку Ñ€ÑгулÑрным выразам',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'ЗнайÑці наÑтупнае',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'ЗамÑніць наÑтупнае',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'ЗамÑніць уÑе',
+ 'wikieditor-toolbar-tool-replace-close' => 'Закрыць',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Ваш пошук нічога не даў.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Зроблена $1 замен.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Вы не далі чаго шукаць.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Ð’Ñ‹ далі нÑверны Ñ€ÑгулÑрны выраз: $1',
+ 'wikieditor-toolbar-section-characters' => 'СпецыÑÐ»ÑŒÐ½Ñ‹Ñ Ñімвалы',
+ 'wikieditor-toolbar-characters-page-latin' => 'ЛацінÑкіÑ',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'ЛацінÑÐºÑ–Ñ Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Сімвалы',
+ 'wikieditor-toolbar-characters-page-greek' => 'ГрÑчаÑкіÑ',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'КірылічныÑ',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ÐрабÑкіÑ',
+ 'wikieditor-toolbar-characters-page-persian' => 'ПерÑідÑкіÑ',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Іўрыт',
+ 'wikieditor-toolbar-characters-page-bangla' => 'БенгальÑкіÑ',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Целугу',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'СінгальÑкіÑ',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Гуджараці',
+ 'wikieditor-toolbar-characters-page-thai' => 'ТайÑкіÑ',
+ 'wikieditor-toolbar-characters-page-lao' => 'ЛаоÑкіÑ',
+ 'wikieditor-toolbar-characters-page-khmer' => 'КхмерÑкіÑ',
+ 'wikieditor-toolbar-section-help' => 'Даведка',
+ 'wikieditor-toolbar-help-heading-description' => 'ÐпіÑанне',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Што Ð’Ñ‹ ўпіÑваеце',
+ 'wikieditor-toolbar-help-heading-result' => 'Што Вы атрымаеце',
+ 'wikieditor-toolbar-help-page-format' => 'Фарматаванне',
+ 'wikieditor-toolbar-help-page-link' => 'СпаÑылкі',
+ 'wikieditor-toolbar-help-page-heading' => 'Загалоўкі',
+ 'wikieditor-toolbar-help-page-list' => 'Пералікі',
+ 'wikieditor-toolbar-help-page-file' => 'Файлы',
+ 'wikieditor-toolbar-help-page-reference' => 'ЗноÑкі',
+ 'wikieditor-toolbar-help-page-discussion' => 'Размовы',
+ 'wikieditor-toolbar-help-content-italic-description' => 'КурÑÑ–Ñž',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''КурÑіўны Ñ‚ÑкÑÑ‚''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>КурÑіўны Ñ‚ÑкÑÑ‚</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Цёмны',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Цёмны Ñ‚ÑкÑÑ‚'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Цёмны Ñ‚ÑкÑÑ‚</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Цёмны курÑÑ–Ñž',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Цёмны курÑіўны Ñ‚ÑкÑÑ‚'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<em><strong>Цёмны курÑіўны Ñ‚ÑкÑÑ‚</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Ð£Ð½ÑƒÑ‚Ñ€Ð°Ð½Ð°Ñ ÑпаÑылка',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Ðазва мÑтавай Ñтаронкі|ТÑкÑÑ‚ ÑпаÑылкі]]<br />[[Ðазва мÑтавай Ñтаронкі]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>ТÑкÑÑ‚ ÑпаÑылкі</a><br /><a href='#'>Ðазва мÑтавай Ñтаронкі</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'СпаÑылка Ñž Сеціва',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org ТÑкÑÑ‚ ÑпаÑылкі]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>ТÑкÑÑ‚ ÑпаÑылкі</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Загаловак 2-га ўзроўню',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== ТÑкÑÑ‚ загалоўка ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>ТÑкÑÑ‚ загалоўка</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Загаловак 3-га ўзроўню',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== ТÑкÑÑ‚ загалоўка ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>ТÑкÑÑ‚ загалоўка</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Загаловак 4-га ўзроўню',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== ТÑкÑÑ‚ загалоўка ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>ТÑкÑÑ‚ загалоўка</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Загаловак 5-га ўзроўню',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== ТÑкÑÑ‚ загалоўка =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>ТÑкÑÑ‚ загалоўка</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Маркіраваны пералік',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Элемент пераліка<br /> * Элемент пераліка',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Элемент пераліка</li><li>Элемент пераліка</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Ðумараваны пералік',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Элемент пераліка<br /># Элемент пераліка',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Элемент пераліка</li><li>Элемент пераліка</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Файл у Ñ‚ÑкÑце',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|ÐпіÑанне файла]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='ÐпіÑанне файла' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>ÐпіÑанне файла</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'ЗноÑка',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'ТÑкÑÑ‚ на Ñтаронцы.&lt;ref name="test"&gt;[http://www.example.org ТÑкÑÑ‚ ÑпаÑылкі], аÑтатні Ñ‚ÑкÑÑ‚ зноÑкі.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "ТÑкÑÑ‚ на Ñтаронцы.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Шматразовае карыÑтанне зноÑкай',
+ 'wikieditor-toolbar-help-content-rereference-result' => "ТÑкÑÑ‚ на Ñтаронцы.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Паказаць зноÑкі',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>ТÑÑкт ÑпаÑылкі</a>, аÑтатні Ñ‚ÑкÑÑ‚ зноÑкі.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Ваш Ð¿Ð¾Ð´Ð¿Ñ–Ñ Ñ– адзначаны чаÑ',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Ð†Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°</a> (<a href='#' title='{{#special:mytalk}}'>размовы</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ПодпіÑ',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Ð†Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°</a> (<a href='#' title='{{#special:mytalk}}'>размовы</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'ВодÑтуп',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'ПроÑÑ‚Ñ‹ Ñ‚ÑкÑÑ‚<br />:ТÑкÑÑ‚ з водÑтупам<br />::ТÑкÑÑ‚ з водÑтупам',
+ 'wikieditor-toolbar-help-content-indent-result' => 'ПроÑÑ‚Ñ‹ Ñ‚ÑкÑÑ‚<dl><dd>ТÑкÑÑ‚ з водÑтупам<dl><dd>ТÑкÑÑ‚ з водÑтупам</dd></dl></dd></dl>',
+);
+
+/** Belarusian (TaraÅ¡kievica orthography) (‪БеларуÑÐºÐ°Ñ (тарашкевіца)‬)
+ * @author EugeneZelenko
+ * @author Jim-by
+ * @author Wizardist
+ * @author Zedlik
+ */
+$messages['be-tarask'] = array(
+ 'wikieditor' => 'Пашыраны інтÑрфÑÐ¹Ñ Ñ€ÑÐ´Ð°Ð³Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð²Ñ–ÐºÑ–-Ñ‚ÑкÑту',
+ 'wikieditor-desc' => 'Дадае пашыраны інтÑрфÑÐ¹Ñ Ñ€ÑÐ´Ð°Ð³Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð²Ñ–ÐºÑ–-Ñ‚ÑкÑту Ñ– шмат модульных магчымаÑьцÑÑž',
+ 'wikieditor-wikitext-tab' => 'Вікі-Ñ‚ÑкÑÑ‚',
+ 'wikieditor-loading' => 'Загрузка',
+ 'wikieditor-preview-preference' => 'Уключыць папÑÑ€Ñдні праглÑд адзін ÐºÐ°Ð»Ñ Ð°Ð´Ð½Ð°Ð³Ð¾',
+ 'wikieditor-preview-tab' => 'ПапÑÑ€Ñдні праглÑд',
+ 'wikieditor-preview-changes-tab' => 'Зьмены',
+ 'wikieditor-preview-loading' => 'Загрузка…',
+ 'wikieditor-previewDialog-preference' => 'Уключыць дыÑлёг папÑÑ€ÑднÑга праглÑду',
+ 'wikieditor-previewDialog-tab' => 'ПапÑÑ€Ñдні праглÑд',
+ 'wikieditor-previewDialog-loading' => 'Загрузка…',
+ 'wikieditor-publish-preference' => 'Уключыць пакрокавую публікацыю',
+ 'wikieditor-publish-button-publish' => 'Ðпублікаваць',
+ 'wikieditor-publish-button-cancel' => 'СкаÑаваць',
+ 'wikieditor-publish-dialog-title' => 'Ðпублікаваць у {{GRAMMAR:меÑны|{{SITENAME}}}}',
+ 'wikieditor-publish-dialog-summary' => 'ÐпіÑаньне Ñ€ÑдагаваньнÑÑž (коратка апішыце Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ñ‹Ñ Ð’Ð°Ð¼Ñ– зьмены):',
+ 'wikieditor-publish-dialog-minor' => 'Ð”Ñ€Ð¾Ð±Ð½Ð°Ñ Ð¿Ñ€Ð°ÑžÐºÐ°',
+ 'wikieditor-publish-dialog-watch' => 'Ðазіраць за гÑтай Ñтаронкай',
+ 'wikieditor-publish-dialog-publish' => 'Ðпублікаваць',
+ 'wikieditor-publish-dialog-goback' => 'Ð’Ñрнуцца',
+ 'wikieditor-template-editor-preference' => 'Дазволіць Ñ€Ñдагаваньне шаблёнаў вікі праз формы',
+ 'wikieditor-template-editor-dialog-title' => 'РÑдагаваць шаблён',
+ 'wikieditor-template-editor-dialog-submit' => 'Ðбнавіць',
+ 'wikieditor-template-editor-dialog-cancel' => 'СкаÑаваць',
+ 'wikieditor-templates-preference' => 'Уключыць згортваньне шаблёнаў',
+ 'wikieditor-toc-preference' => 'Уключыць зьмеÑÑ‚ з магчымаÑьцю навігацыі',
+ 'wikieditor-toc-show' => 'Паказаць зьмеÑÑ‚',
+ 'wikieditor-toc-hide' => 'Схаваць зьмеÑÑ‚',
+ 'wikieditor-toolbar' => 'ПанÑль інÑтрумÑнтаў Ð´Ð»Ñ Ñ€ÑдагаваньнÑ',
+ 'wikieditor-toolbar-desc' => 'ПанÑль інÑтрумÑнтаў Ð´Ð»Ñ Ñ€ÑÐ´Ð°Ð³Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð· палепшанай зручнаÑьцю',
+ 'wikieditor-toolbar-preference' => 'Уключыць палепшаную панÑль інÑтрумÑнтаў Ð´Ð»Ñ Ñ€ÑдагаваньнÑ',
+ 'wikieditor-toolbar-dialogs-preference' => 'Дазволіць формы Ð´Ð»Ñ ÑžÑтаўкі ÑпаÑылак, табліцаў Ñ– іншых ÑлемÑнтаў',
+ 'wikieditor-toolbar-hidesig' => 'Схаваць кнопку подпіÑу Ñа Ñтаронак у аÑноўнай праÑторы назваў',
+ 'wikieditor-toolbar-loading' => 'Загрузка…',
+ 'wikieditor-toolbar-tool-bold' => 'ТлуÑÑ‚Ñ‹',
+ 'wikieditor-toolbar-tool-bold-example' => 'ТлуÑÑ‚Ñ‹ Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-tool-italic' => 'КурÑÑ–Ñž',
+ 'wikieditor-toolbar-tool-italic-example' => 'КурÑіўны Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-tool-ilink' => 'Ð£Ð½ÑƒÑ‚Ñ€Ð°Ð½Ð°Ñ ÑпаÑылка',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Ðазва ÑпаÑылкі',
+ 'wikieditor-toolbar-tool-xlink' => 'Ð’Ð¾Ð½ÐºÐ°Ð²Ð°Ñ ÑпаÑылка (не забывайцеÑÑ Ð¿Ð°Ñ‡Ñ‹Ð½Ð°Ñ†ÑŒ з http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com назва ÑпаÑылкі',
+ 'wikieditor-toolbar-tool-link' => 'СпаÑылка',
+ 'wikieditor-toolbar-tool-link-title' => 'УÑтавіць ÑпаÑылку',
+ 'wikieditor-toolbar-tool-link-int' => 'Ðа вікі-Ñтаронку',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Ðазва Ñтаронкі:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Ðазва Ñтаронкі альбо URL-адраÑ',
+ 'wikieditor-toolbar-tool-link-int-text' => 'ТÑкÑÑ‚ ÑпаÑылкі:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'УвÑдзіце Ñ‚ÑкÑÑ‚, Ñкі павінен быць паказаны',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ðа вонкавую ÑžÑб-Ñтаронку',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL-Ð°Ð´Ñ€Ð°Ñ ÑпаÑылкі:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'ТÑкÑÑ‚ ÑпаÑылкі:',
+ 'wikieditor-toolbar-tool-link-insert' => 'УÑтавіць ÑпаÑылку',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Закрыць',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Старонка Ñ–Ñнуе',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Старонка не Ñ–Ñнуе',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ÐÑÑÐ»ÑƒÑˆÐ½Ð°Ñ Ð½Ð°Ð·Ð²Ð°',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ð’Ð¾Ð½ÐºÐ°Ð²Ð°Ñ ÑпаÑылка',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Праверка Ñ–ÑÐ½Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ñтаронкі…',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'ÐŸÐ°Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°Ñ Ð½ÑÑÐ»ÑƒÑˆÐ½Ð°Ñ Ð½Ð°Ð·Ð²Ð°.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Пададзены URL-Ð°Ð´Ñ€Ð°Ñ Ð²ÐµÑ€Ð°Ð³Ð¾Ð´Ð½Ð° зьÑўлÑецца ÑпаÑылкай на іншую вікі-Ñтаронку.
+Ці жадаеце зрабіць Ñе ўнутранай ÑпаÑылкай?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Ð£Ð½ÑƒÑ‚Ñ€Ð°Ð½Ð°Ñ ÑпаÑылка',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ð’Ð¾Ð½ÐºÐ°Ð²Ð°Ñ ÑпаÑылка',
+ 'wikieditor-toolbar-tool-link-empty' => 'Ð’Ñ‹ не ўвÑлі Ð°Ð´Ñ€Ð°Ñ ÑпаÑылкі.',
+ 'wikieditor-toolbar-tool-file' => 'Укладзены файл',
+ 'wikieditor-toolbar-tool-file-example' => 'Прыклад.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'ЗноÑка',
+ 'wikieditor-toolbar-tool-reference-example' => 'УÑтаўце Ñюды Ñ‚ÑкÑÑ‚ зноÑкі',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Закрыць',
+ 'wikieditor-toolbar-tool-reference-title' => 'УÑтавіць зноÑку',
+ 'wikieditor-toolbar-tool-reference-insert' => 'УÑтавіць',
+ 'wikieditor-toolbar-tool-reference-text' => 'ТÑкÑÑ‚ зноÑкі',
+ 'wikieditor-toolbar-tool-signature' => 'ÐŸÐ¾Ð´Ð¿Ñ–Ñ Ñ– чаÑ',
+ 'wikieditor-toolbar-section-advanced' => 'Дадаткова',
+ 'wikieditor-toolbar-tool-heading' => 'Загаловак',
+ 'wikieditor-toolbar-tool-heading-1' => 'Узровень 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Узровень 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Узровень 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Узровень 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Узровень 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'ТÑкÑÑ‚ загалоўку',
+ 'wikieditor-toolbar-group-format' => 'Фармат',
+ 'wikieditor-toolbar-tool-ulist' => 'Маркіраваны ÑьпіÑ',
+ 'wikieditor-toolbar-tool-ulist-example' => 'ЭлемÑнт маркіраванага ÑьпіÑу',
+ 'wikieditor-toolbar-tool-olist' => 'Ðумараваны ÑьпіÑ',
+ 'wikieditor-toolbar-tool-olist-example' => 'ЭлемÑнт нумараванага ÑьпіÑу',
+ 'wikieditor-toolbar-tool-indent' => 'ВодÑтуп',
+ 'wikieditor-toolbar-tool-indent-example' => 'Радок з водÑтупам',
+ 'wikieditor-toolbar-tool-nowiki' => 'Ігнараваць вікі-фарматаваньне',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'УÑтаўце Ñюды нефарматаваны Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-tool-redirect' => 'Перанакіраваньне',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ðазва мÑтавай Ñтаронкі',
+ 'wikieditor-toolbar-tool-big' => 'Буйны',
+ 'wikieditor-toolbar-tool-big-example' => 'Буйны Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-tool-small' => 'Дробны',
+ 'wikieditor-toolbar-tool-small-example' => 'Дробны Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-tool-superscript' => 'Верхні індÑкÑ',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Ðадрадковы Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-tool-subscript' => 'Ðіжні індÑкÑ',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Падрадковы Ñ‚ÑкÑÑ‚',
+ 'wikieditor-toolbar-group-insert' => 'УÑтавіць',
+ 'wikieditor-toolbar-tool-gallery' => 'ГалерÑÑ Ð²Ñ‹Ñваў',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Прыклад.jpg|ПодпіÑ1
+$1:Прыклад.jpg|ПодпіÑ2',
+ 'wikieditor-toolbar-tool-newline' => 'Ðовы радок',
+ 'wikieditor-toolbar-tool-table' => 'Табліца',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! загаловак 1
+! загаловак 2
+! загаловак 3
+|-
+| радок 1, ÑчÑйка 1
+| радок 1, ÑчÑйка 2
+| радок 1, ÑчÑйка 3
+|-
+| радок 2, ÑчÑйка 1
+| радок 2, ÑчÑйка 2
+| радок 2, ÑчÑйка 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ТÑкÑÑ‚ у ÑчÑйцы',
+ 'wikieditor-toolbar-tool-table-example-header' => 'ТÑкÑÑ‚ загалоўку',
+ 'wikieditor-toolbar-tool-table-title' => 'УÑтавіць табліцу',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Радкоў',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Слупкоў',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Дадаць радок загалоўку',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Стыль зь межамі',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Дадаць магчымаÑьць ÑартаваньнÑ',
+ 'wikieditor-toolbar-tool-table-example' => 'ТÑкÑÑ‚ у ÑчÑйцы',
+ 'wikieditor-toolbar-tool-table-preview' => 'ПапÑÑ€Ñдні праглÑд',
+ 'wikieditor-toolbar-tool-table-insert' => 'УÑтавіць',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Закрыць',
+ 'wikieditor-toolbar-tool-table-toomany' => 'ГÑÑ‚Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° Ð½Ñ Ð¼Ð¾Ð¶Ð° ÑžÑтавіць табліцу, ÑÐºÐ°Ñ ÑžÑ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ больш за $1 {{PLURAL:$1|ÑчÑйку|ÑчÑйкі|ÑчÑек}}.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Ð’Ñ‹ не ўвÑлі Ñлушную колькаÑьць радкоў ці Ñлупкоў.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ð’Ñ‹ Ð½Ñ Ð¼Ð¾Ð¶Ð°Ñ†Ðµ ÑžÑтавіць табліцу з нулÑвой колькаÑьцю радкоў ці Ñлупкоў.',
+ 'wikieditor-toolbar-tool-replace' => 'ЗнайÑьці Ñ– замÑніць',
+ 'wikieditor-toolbar-tool-replace-title' => 'Пошук і замена',
+ 'wikieditor-toolbar-tool-replace-search' => 'Шукаць:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'ЗамÑніць на:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Улічваць Ñ€ÑгіÑтар літар',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Лічыць радок пошуку Ñ€ÑгулÑрным выразам',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'ПрацÑгваць пошук',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'ПрацÑгваць замену',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'ЗамÑніць уÑÑ‘',
+ 'wikieditor-toolbar-tool-replace-close' => 'Закрыць',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Па Вашым запыце нічога Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ð°.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Зроблена заменаў: $1.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ð’Ñ‹ не ўвÑлі нічога Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Уведзены Вамі Ñ€ÑгулÑрны выраз зьÑўлÑецца нÑÑлушным: $1',
+ 'wikieditor-toolbar-section-characters' => 'СпÑцыÑÐ»ÑŒÐ½Ñ‹Ñ Ñымбалі',
+ 'wikieditor-toolbar-characters-page-latin' => 'ЛацінÑкіÑ',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'ЛацінÑÐºÑ–Ñ Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ',
+ 'wikieditor-toolbar-characters-page-ipa' => 'МФР(IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Сымбалі',
+ 'wikieditor-toolbar-characters-page-greek' => 'ГрÑцкіÑ',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'КірылічныÑ',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ÐрабÑкіÑ',
+ 'wikieditor-toolbar-characters-page-persian' => 'ПÑÑ€ÑыдзкіÑ',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Іўрыт',
+ 'wikieditor-toolbar-characters-page-bangla' => 'БÑнгальÑкіÑ',
+ 'wikieditor-toolbar-characters-page-telugu' => 'ТÑлугу',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'СынгальÑкіÑ',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Гуджараці',
+ 'wikieditor-toolbar-characters-page-thai' => 'ТайÑкіÑ',
+ 'wikieditor-toolbar-characters-page-lao' => 'ЛаоÑкіÑ',
+ 'wikieditor-toolbar-characters-page-khmer' => 'КхмÑÑ€ÑкіÑ',
+ 'wikieditor-toolbar-section-help' => 'Дапамога',
+ 'wikieditor-toolbar-help-heading-description' => 'ÐпіÑаньне',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Што Вы ўводзіце',
+ 'wikieditor-toolbar-help-heading-result' => 'Што Вы атрымаеце',
+ 'wikieditor-toolbar-help-page-format' => 'Фарматаваньне',
+ 'wikieditor-toolbar-help-page-link' => 'СпаÑылкі',
+ 'wikieditor-toolbar-help-page-heading' => 'Загалоўкі',
+ 'wikieditor-toolbar-help-page-list' => 'СьпіÑÑ‹',
+ 'wikieditor-toolbar-help-page-file' => 'Файлы',
+ 'wikieditor-toolbar-help-page-reference' => 'ЗноÑкі',
+ 'wikieditor-toolbar-help-page-discussion' => 'Ðбмеркаваньне',
+ 'wikieditor-toolbar-help-content-italic-description' => 'КурÑÑ–Ñž',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''КурÑіўны Ñ‚ÑкÑÑ‚''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>КурÑіўны Ñ‚ÑкÑÑ‚</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'ТлуÑÑ‚Ñ‹',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''ТлуÑÑ‚Ñ‹ Ñ‚ÑкÑÑ‚'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>ТлуÑÑ‚Ñ‹ Ñ‚ÑкÑÑ‚</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'ТлуÑÑ‚Ñ‹ курÑÑ–Ñž',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''ТлуÑÑ‚Ñ‹ курÑіўны Ñ‚ÑкÑÑ‚'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>ТлуÑÑ‚Ñ‹ курÑіўны Ñ‚ÑкÑÑ‚</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Ð£Ð½ÑƒÑ‚Ñ€Ð°Ð½Ð°Ñ ÑпаÑылка',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Ðазва Ñтаронкі|Метка ÑпаÑылкі]]<br />[[Ðазва Ñтаронкі]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>ТÑкÑÑ‚ ÑпаÑылкі</a><br /><a href='#'>Ðазва Ñтаронкі</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ð’Ð¾Ð½ÐºÐ°Ð²Ð°Ñ ÑпаÑылка',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org ТÑкÑÑ‚ ÑпаÑылкі]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Метка ÑпаÑылкі</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Загаловак 2-га ўзроўню',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== ТÑкÑÑ‚ загалоўку ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>ТÑкÑÑ‚ загалоўку</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Загаловак 3-га ўзроўню',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== ТÑкÑÑ‚ загалоўку ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>ТÑкÑÑ‚ загалоўку</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Загаловак 4-га ўзроўню',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== ТÑкÑÑ‚ загалоўку ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>ТÑкÑÑ‚ загалоўку</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Загаловак 5-га ўзроўню',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== ТÑкÑÑ‚ загалоўку =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>ТÑкÑÑ‚ загалоўку</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Маркіраваны ÑьпіÑ',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* ЭлемÑнт ÑьпіÑу<br />* ЭлемÑнт ÑьпіÑу',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>ЭлемÑнт ÑьпіÑу</li><li>ЭлемÑнт ÑьпіÑу</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Ðумараваны ÑьпіÑ',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# ЭлемÑнт ÑьпіÑу<br /># ЭлемÑнт ÑьпіÑу',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>ЭлемÑнт ÑьпіÑу</li><li>ЭлемÑнт ÑьпіÑу</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Укладзены файл',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Прыклад.png|thumb|ТÑкÑÑ‚ подпіÑу]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='ТÑкÑÑ‚ подпіÑу' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>ТÑкÑÑ‚ подпіÑу</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'ЗноÑка',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'ТÑкÑÑ‚ Ñтаронкі.&lt;ref name="test"&gt;[http://www.example.org ТÑкÑÑ‚ ÑпаÑылкі], дадатковы Ñ‚ÑкÑÑ‚.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "ТÑкÑÑ‚ Ñтаронкі.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Паўторнае выкарыÑтаньне той жа зноÑкі',
+ 'wikieditor-toolbar-help-content-rereference-result' => "ТÑкÑÑ‚ Ñтаронкі.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Паказваць зноÑкі',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>ТÑкÑÑ‚ ÑпаÑылкі</a>, дадатковы Ñ‚ÑкÑÑ‚.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ÐŸÐ¾Ð´Ð¿Ñ–Ñ Ñ– чаÑ',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Ð†Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°</a> (<a href='#' title='{{#special:mytalk}}'>гутаркі</a>) 15:54, 10 чÑÑ€Ð²ÐµÐ½Ñ 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ПодпіÑ',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Ð†Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°</a> (<a href='#' title='{{#special:mytalk}}'>гутаркі</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'ВодÑтуп',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Звычайны Ñ‚ÑкÑÑ‚<br />:ТÑкÑÑ‚ з водÑтупам<br />::ТÑкÑÑ‚ з водÑтупам',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Звычайны Ñ‚ÑкÑÑ‚<dl><dd>ТÑкÑÑ‚ з водÑтупам<dl><dd>ТÑкÑÑ‚ з водÑтупам</dd></dl></dd></dl>',
+);
+
+/** Bulgarian (БългарÑки)
+ * @author DCLXVI
+ * @author McDutchie
+ * @author Spiritia
+ * @author Turin
+ */
+$messages['bg'] = array(
+ 'wikieditor' => 'Подобрен Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð·Ð° редактиране на уикитекÑÑ‚',
+ 'wikieditor-desc' => 'Предлага разширÑем Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð·Ð° редактиране на уикитекÑÑ‚ и множеÑтво модули Ñ Ð´Ð¾Ð¿ÑŠÐ»Ð½Ð¸Ñ‚ÐµÐ»Ð½Ð¸ функционалноÑти',
+ 'wikieditor-wikitext-tab' => 'УикитекÑÑ‚',
+ 'wikieditor-loading' => 'Зареждане',
+ 'wikieditor-preview-tab' => 'Предварителен преглед',
+ 'wikieditor-preview-changes-tab' => 'Промени',
+ 'wikieditor-preview-loading' => 'Зареждане...',
+ 'wikieditor-previewDialog-tab' => 'Предварителен преглед',
+ 'wikieditor-previewDialog-loading' => 'Зареждане...',
+ 'wikieditor-publish-preference' => 'Включване на публикуване Ñтъпка по Ñтъпка',
+ 'wikieditor-publish-button-publish' => 'Публикуване',
+ 'wikieditor-publish-button-cancel' => 'Отказване',
+ 'wikieditor-publish-dialog-title' => 'Публикуване в {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Резюме на редакциÑта (кратко опиÑание на текущо направените промени):',
+ 'wikieditor-publish-dialog-minor' => 'Малка промÑна',
+ 'wikieditor-publish-dialog-watch' => 'Ðаблюдаване на Ñтраницата',
+ 'wikieditor-publish-dialog-publish' => 'Публикуване',
+ 'wikieditor-publish-dialog-goback' => 'Връщане',
+ 'wikieditor-template-editor-preference' => 'Разрешено редактирането на уикишаблони чрез формулÑÑ€',
+ 'wikieditor-template-editor-dialog-title' => 'Редактиране на шаблона',
+ 'wikieditor-template-editor-dialog-submit' => 'ОбновÑване',
+ 'wikieditor-template-editor-dialog-cancel' => 'Отказване',
+ 'wikieditor-toc-preference' => 'Разрешена навигируема таблица на Ñъдържанието',
+ 'wikieditor-toc-show' => 'Показване на Ñъдържанието',
+ 'wikieditor-toc-hide' => 'Скриване на Ñъдържанието',
+ 'wikieditor-toolbar' => 'Лента за редактиране',
+ 'wikieditor-toolbar-desc' => 'Лента за редактиране Ñ Ð¿Ð¾Ð´Ð¾Ð±Ñ€ÐµÐ½Ð¸ възможноÑти за използваемоÑÑ‚',
+ 'wikieditor-toolbar-preference' => 'Включване на разширената лента Ñ Ð¸Ð½Ñтрументи',
+ 'wikieditor-toolbar-dialogs-preference' => 'Включване на инÑтрументи за вмъкване на препратки, таблици и други',
+ 'wikieditor-toolbar-hidesig' => 'Скриване на бутона за Ð¿Ð¾Ð´Ð¿Ð¸Ñ Ð·Ð° Ñтраници от оÑновното именно проÑтранÑтво',
+ 'wikieditor-toolbar-loading' => 'Зареждане...',
+ 'wikieditor-toolbar-tool-bold' => 'Получер (удебелен) текÑÑ‚',
+ 'wikieditor-toolbar-tool-bold-example' => 'Получер текÑÑ‚',
+ 'wikieditor-toolbar-tool-italic' => 'КурÑивен (наклонен) текÑÑ‚',
+ 'wikieditor-toolbar-tool-italic-example' => 'КурÑивен текÑÑ‚',
+ 'wikieditor-toolbar-tool-ilink' => 'Вътрешна препратка',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Заглавие на препратката',
+ 'wikieditor-toolbar-tool-xlink' => 'Външна препратка (не забравÑйте http:// )',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com ТекÑÑ‚ на препратката',
+ 'wikieditor-toolbar-tool-link' => 'Препратка',
+ 'wikieditor-toolbar-tool-link-title' => 'Вмъкване на препратка',
+ 'wikieditor-toolbar-tool-link-int' => 'Към уики-Ñтраница',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Страница или URL за Ñвързване:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Име на Ñтраницата или URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Показван текÑÑ‚:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Въведете текÑта, който да Ñе показва',
+ 'wikieditor-toolbar-tool-link-ext' => 'Към външна уеб-Ñтраница',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL-Ð°Ð´Ñ€ÐµÑ Ð½Ð° препратката:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'ТекÑÑ‚ на препратката:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Вмъкване на препратка',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Отказване',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Страницата ÑъщеÑтвува',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Страницата не ÑъщеÑтвува',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Ðевалидно заглавие',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Външна препратка',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Проверка дали Ñтраницата ÑъщеÑтвува...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Зададеното заглавие е недопуÑтимо.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL-адреÑÑŠÑ‚, който Ñте задали, изглежда като връзка към друга уики-Ñтраница.
+ИÑкате ли препратката да бъде вътрешна?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Вътрешна препратка',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Външна препратка',
+ 'wikieditor-toolbar-tool-link-empty' => 'Ðе Ñте въвели Ð°Ð´Ñ€ÐµÑ Ð½Ð° препратката.',
+ 'wikieditor-toolbar-tool-file' => 'Вграден файл',
+ 'wikieditor-toolbar-tool-file-example' => 'Пример.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Източник (бележка под линиÑ)',
+ 'wikieditor-toolbar-tool-reference-example' => 'Въведете тук текÑÑ‚ на бележка под линиÑ',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Отказване',
+ 'wikieditor-toolbar-tool-reference-title' => 'Вмъкване на източник (бележка под линиÑ)',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Вмъкване',
+ 'wikieditor-toolbar-tool-reference-text' => 'ТекÑÑ‚ на източника (бележката под линиÑ)',
+ 'wikieditor-toolbar-tool-signature' => 'ПодпиÑ, дата и чаÑ',
+ 'wikieditor-toolbar-section-advanced' => 'Допълнително',
+ 'wikieditor-toolbar-tool-heading' => 'Заглавие',
+ 'wikieditor-toolbar-tool-heading-1' => 'Ðиво 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Ðиво 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Ðиво 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Ðиво 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Ðиво 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'ТекÑÑ‚ на заглавието',
+ 'wikieditor-toolbar-group-format' => 'Оформление',
+ 'wikieditor-toolbar-tool-ulist' => 'Точкуван ÑпиÑък',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Елемент от точкуван ÑпиÑък',
+ 'wikieditor-toolbar-tool-olist' => 'Ðомериран ÑпиÑък',
+ 'wikieditor-toolbar-tool-olist-example' => 'Елемент от номериран ÑпиÑък',
+ 'wikieditor-toolbar-tool-indent' => 'ОтÑтъп',
+ 'wikieditor-toolbar-tool-indent-example' => 'Ред Ñ Ð¾Ñ‚Ñтъп',
+ 'wikieditor-toolbar-tool-nowiki' => 'Пренебрегване на форматиращите команди',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Тук въведете текÑÑ‚',
+ 'wikieditor-toolbar-tool-redirect' => 'ПренаÑочваща Ñтраница',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Целева Ñтраница',
+ 'wikieditor-toolbar-tool-big' => 'ГолÑм',
+ 'wikieditor-toolbar-tool-big-example' => 'ГолÑм текÑÑ‚',
+ 'wikieditor-toolbar-tool-small' => 'Малък',
+ 'wikieditor-toolbar-tool-small-example' => 'Малък текÑÑ‚',
+ 'wikieditor-toolbar-tool-superscript' => 'Горен индекÑ',
+ 'wikieditor-toolbar-tool-superscript-example' => 'ТекÑÑ‚ в горен индекÑ',
+ 'wikieditor-toolbar-tool-subscript' => 'Долен индекÑ',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ТекÑÑ‚ в долен индекÑ',
+ 'wikieditor-toolbar-group-insert' => 'Вмъкване',
+ 'wikieditor-toolbar-tool-gallery' => 'ГалериÑ',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|ОпиÑание1
+$1:Example.jpg|ОпиÑание2',
+ 'wikieditor-toolbar-tool-newline' => 'Ðов ред',
+ 'wikieditor-toolbar-tool-table' => 'Таблица',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! колона 1
+! колона 2
+! колона 3
+|-
+| ред 1, клетка 1
+| ред 1, клетка 2
+| ред 1, клетка 3
+|-
+| ред 2, клетка 1
+| ред 2, клетка 2
+| ред 2, клетка 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ТекÑÑ‚ в клетката',
+ 'wikieditor-toolbar-tool-table-example-header' => 'ТекÑÑ‚ на заглавието',
+ 'wikieditor-toolbar-tool-table-title' => 'Вмъкване на таблица',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Редове',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Колони',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'ДобавÑне на заглавен ред',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Изглед Ñ Ñ€Ð°Ð¼ÐºÐ¸',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Сортируема таблица',
+ 'wikieditor-toolbar-tool-table-example' => 'Пример',
+ 'wikieditor-toolbar-tool-table-preview' => 'Предварителен преглед',
+ 'wikieditor-toolbar-tool-table-insert' => 'Вмъкване',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Отказване',
+ 'wikieditor-toolbar-tool-table-toomany' => 'През този диалогов режим не може да Ñе вмъкне таблица Ñ Ð¿Ð¾Ð²ÐµÑ‡Ðµ от $1 клетки.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Ðе Ñте въвели валидно чиÑло за Ð±Ñ€Ð¾Ñ Ñ€ÐµÐ´Ð¾Ð²Ðµ или Ñтълбове.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ðе можете да вмъкнете таблица Ñ Ð½ÑƒÐ»Ð° на брой редове или Ñтълбове.',
+ 'wikieditor-toolbar-tool-replace' => 'ТърÑене и замÑна',
+ 'wikieditor-toolbar-tool-replace-title' => 'ТърÑене и замÑна',
+ 'wikieditor-toolbar-tool-replace-search' => 'ТърÑене на:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'ЗамеÑтване Ñ:',
+ 'wikieditor-toolbar-tool-replace-case' => 'ЧувÑтвителноÑÑ‚ към региÑтъра',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Третиране на низа за Ñ‚ÑŠÑ€Ñене като регулÑрен израз',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'ТърÑене на Ñледващо',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'ЗамÑна на Ñледващо',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'ЗамÑна на вÑички',
+ 'wikieditor-toolbar-tool-replace-close' => 'ЗатварÑне',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'ÐÑмаше резултати, които да отговарÑÑ‚ на вашето Ñ‚ÑŠÑ€Ñене.',
+ 'wikieditor-toolbar-tool-replace-success' => '{{PLURAL:$1|Ðаправена е|Ðаправени Ñа}} $1 {{PLURAL:$1|замÑна|замени}}.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ðе Ñте въвели низ за Ñ‚ÑŠÑ€Ñене.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'ВъведениÑÑ‚ от Ð²Ð°Ñ Ñ€ÐµÐ³ÑƒÐ»Ñрен израз е невалиден: $1',
+ 'wikieditor-toolbar-section-characters' => 'Специални Ñимволи',
+ 'wikieditor-toolbar-characters-page-latin' => 'Латиница',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Латиница – разширена',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Символи',
+ 'wikieditor-toolbar-characters-page-greek' => 'Гръцки',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Кирилица',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ÐрабÑки',
+ 'wikieditor-toolbar-characters-page-persian' => 'перÑийÑки',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Иврит',
+ 'wikieditor-toolbar-characters-page-bangla' => 'БенгалÑки',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Телугу',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'СинхалÑки',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Гуджарати',
+ 'wikieditor-toolbar-characters-page-thai' => 'тайландÑки',
+ 'wikieditor-toolbar-characters-page-khmer' => 'кхмерÑки',
+ 'wikieditor-toolbar-section-help' => 'Помощ',
+ 'wikieditor-toolbar-help-heading-description' => 'ОпиÑание',
+ 'wikieditor-toolbar-help-heading-syntax' => 'В режим на редактиране',
+ 'wikieditor-toolbar-help-heading-result' => 'В режим на четене',
+ 'wikieditor-toolbar-help-page-format' => 'Форматиране',
+ 'wikieditor-toolbar-help-page-link' => 'Препратки',
+ 'wikieditor-toolbar-help-page-heading' => 'ЗаглавиÑ',
+ 'wikieditor-toolbar-help-page-list' => 'СпиÑъци',
+ 'wikieditor-toolbar-help-page-file' => 'Файлове',
+ 'wikieditor-toolbar-help-page-reference' => 'Източници',
+ 'wikieditor-toolbar-help-page-discussion' => 'БеÑеда',
+ 'wikieditor-toolbar-help-content-italic-description' => 'КурÑив',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''КурÑивен текÑÑ‚''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>КурÑивен текÑÑ‚</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Получер',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Получер текÑÑ‚'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Получер текÑÑ‚</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Получер курÑив',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Получер курÑив'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Получер курÑив</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Вътрешна препратка',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Заглавие на Ñтраницата|ТекÑÑ‚ на препратката]]<br />[[Заглавие на Ñтраницата]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>ТекÑÑ‚ на препратката</a><br /><a href='#'>Заглавие на Ñтраницата</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Външна препратка',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org ТекÑÑ‚ на препратката]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>ТекÑÑ‚ на препратката</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Заглавие от второ ниво',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== ТекÑÑ‚ на заглавието ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>ТекÑÑ‚ на заглавието</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Заглавие от трето ниво',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== ТекÑÑ‚ на заглавието ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>ТекÑÑ‚ на заглавието</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Заглавие от четвърто ниво',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== ТекÑÑ‚ на заглавието ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>ТекÑÑ‚ на заглавието</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Заглавие от пето ниво',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== ТекÑÑ‚ на заглавието =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>ТекÑÑ‚ на заглавието</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Точкуван ÑпиÑък',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Елемент от ÑпиÑъка<br />* Елемент от ÑпиÑъка',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Елемент от ÑпиÑъка</li><li>Елемент от ÑпиÑъка</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Ðомериран ÑпиÑък',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Елемент от ÑпиÑъка<br /># Елемент от ÑпиÑъка',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Елемент от ÑпиÑъка</li><li>Елемент от ÑпиÑъка</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Вграден файл',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|ТекÑÑ‚ под картинката]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='ТекÑÑ‚ под картинката' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='УголемÑване' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>ТекÑÑ‚ под картинката</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Източник',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'ТекÑÑ‚ на Ñтраницата.&lt;ref name="test"&gt;[http://www.example.org ТекÑÑ‚ на външната препратка], допълнителен текÑÑ‚.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "ТекÑÑ‚ на Ñтраницата.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'МножеÑтвена употреба на един и Ñъщ източник',
+ 'wikieditor-toolbar-help-content-rereference-result' => "ТекÑÑ‚ на Ñтраницата.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Извеждане на източниците',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>ТекÑÑ‚ на външната препратка</a>, допълнителен текÑÑ‚.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ÐŸÐ¾Ð´Ð¿Ð¸Ñ Ñ Ð´Ð°Ñ‚Ð° и чаÑ',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>ПотребителÑко име</a> (<a href='#' title='{{#special:mytalk}}'>беÑеда</a>) 15:54, 10 юни 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ПодпиÑ',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>ПотребителÑко име</a> (<a href='#' title='{{#special:mytalk}}'>беÑеда</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'ОтÑтъп',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'ТекÑÑ‚ без отÑтъп<br />:ТекÑÑ‚ Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ‡ÐµÐ½ отÑтъп<br />::ТекÑÑ‚ Ñ Ð´Ð²Ð¾ÐµÐ½ отÑтъп',
+ 'wikieditor-toolbar-help-content-indent-result' => 'ТекÑÑ‚ без отÑтъп<dl><dd>ТекÑÑ‚ Ñ ÐµÐ´Ð¸Ð½Ð¸Ñ‡ÐµÐ½ отÑтъп<dl><dd>ТекÑÑ‚ Ñ Ð´Ð²Ð¾ÐµÐ½ отÑтъп</dd></dl></dd></dl>',
+);
+
+/** Bahasa Banjar (Bahasa Banjar)
+ * @author Ezagren
+ * @author J Subhi
+ */
+$messages['bjn'] = array(
+ 'wikieditor-wikitext-tab' => 'NaskahWiki',
+ 'wikieditor-loading' => 'Mamuat',
+ 'wikieditor-preview-tab' => 'Tilik',
+ 'wikieditor-preview-changes-tab' => 'Parubahan',
+ 'wikieditor-preview-loading' => "Ma'unggah...",
+ 'wikieditor-previewDialog-tab' => 'Tilik',
+ 'wikieditor-publish-button-cancel' => 'Walangi',
+ 'wikieditor-publish-dialog-minor' => 'Babakan sapalih',
+ 'wikieditor-publish-dialog-watch' => 'Itihi tungkaran ini',
+ 'wikieditor-publish-dialog-goback' => 'Bulik',
+ 'wikieditor-template-editor-preference' => 'Aktipakan pambabakan babasis form matan citakan wiki',
+ 'wikieditor-template-editor-dialog-title' => 'Babak citakan',
+ 'wikieditor-template-editor-dialog-submit' => 'Hanyarakan',
+ 'wikieditor-template-editor-dialog-cancel' => 'Walangi',
+ 'wikieditor-templates-preference' => 'Aktipakan gawian manuhup citakan',
+ 'wikieditor-toc-preference' => 'Daptar isi nang hingkat dinapigasi',
+ 'wikieditor-toc-show' => 'Tampaiakan isi',
+ 'wikieditor-toc-hide' => 'Sungkupakan isi',
+ 'wikieditor-toolbar' => 'Kukuar pakakas mambabak',
+ 'wikieditor-toolbar-tool-bold' => 'Kandal',
+ 'wikieditor-toolbar-tool-bold-example' => 'Naskah kandal',
+ 'wikieditor-toolbar-tool-italic' => 'Hiring',
+ 'wikieditor-toolbar-tool-italic-example' => 'Naskah hiring',
+ 'wikieditor-toolbar-tool-ilink' => 'Tautan dalam',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Judul tautan',
+ 'wikieditor-toolbar-tool-xlink' => 'Tautan luar (Ingatakan bamula wan http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.cuntuh.com judul tautan',
+ 'wikieditor-toolbar-tool-link' => 'Tautan',
+ 'wikieditor-toolbar-tool-link-title' => 'Buati tautan',
+ 'wikieditor-toolbar-tool-link-int' => 'Ka sabuah tungkaran wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Tungkaran nang dituju atawa URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Judul tungkaran atawa URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Naskah gasan tampilan:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Naskah gasan ditampilakan',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ka sabuah tungkaran web luar',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL tautan:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Naskah tautan:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Buati tautan',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Walangi',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Tungkaran sudah ada',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Tungkaran kadada',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Judul kada sah',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Tautan luar',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Tukui adakah tungkaran...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Judul nang Pian bari kada sah.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL nang Pian bariakan tampaknya marupakan tautan ka tungkaran wiki lain.
+Apakah Pian handak maulahnya manjadi tautan internal?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Tautan dalam',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Tautan luar',
+ 'wikieditor-toolbar-tool-link-empty' => 'Pian kada mambuati apa pun ka tautan.',
+ 'wikieditor-toolbar-tool-file' => 'Maktub-akan barakas',
+ 'wikieditor-toolbar-tool-file-example' => 'Cuntuh.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Rujukan',
+ 'wikieditor-toolbar-tool-reference-example' => 'Buati naskah catatan batis di sia',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Walangi',
+ 'wikieditor-toolbar-tool-reference-title' => 'Masukakan rujukan',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Masukakan',
+ 'wikieditor-toolbar-tool-reference-text' => 'Naskah rujukan',
+ 'wikieditor-toolbar-tool-signature' => 'Tandatangan wan waktu',
+ 'wikieditor-toolbar-section-advanced' => 'Lanjutan',
+ 'wikieditor-toolbar-tool-heading' => 'Judul',
+ 'wikieditor-toolbar-tool-heading-1' => 'Tingkat 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Tingkat 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Tingkat 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Tingkat 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Tingkat 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Naskah judul',
+ 'wikieditor-toolbar-group-format' => 'Bantuk',
+ 'wikieditor-toolbar-tool-ulist' => 'Daptar bapiluru',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Baris isi',
+ 'wikieditor-toolbar-tool-olist' => 'Daptar banumur',
+ 'wikieditor-toolbar-tool-olist-example' => 'Baris isi',
+ 'wikieditor-toolbar-tool-indent' => 'Pilukan',
+ 'wikieditor-toolbar-tool-indent-example' => 'Baris tapiluk',
+ 'wikieditor-toolbar-tool-nowiki' => 'Kadada pambantukan wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Masukakan naskah kada babantuk di sia',
+ 'wikieditor-toolbar-tool-redirect' => 'Paugahan',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ngaran tungkaran tujuan',
+ 'wikieditor-toolbar-tool-big' => 'Ganal',
+ 'wikieditor-toolbar-tool-big-example' => 'Naskah ganal',
+ 'wikieditor-toolbar-tool-small' => 'Halus',
+ 'wikieditor-toolbar-tool-small-example' => 'Naskah halus',
+ 'wikieditor-toolbar-tool-superscript' => 'Superscript',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Naskah superscript',
+ 'wikieditor-toolbar-tool-subscript' => 'Subscript',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Naskah subscript',
+ 'wikieditor-toolbar-group-insert' => 'Masukakan',
+ 'wikieditor-toolbar-tool-gallery' => 'Ruang gambar',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Cuntuh.jpg|Judul1
+$1:Cuntuh.jpg|Judul2',
+ 'wikieditor-toolbar-tool-newline' => 'Baris hanyar',
+ 'wikieditor-toolbar-tool-table' => 'Tabel',
+ 'wikieditor-toolbar-tool-table-example-old' => ' -
+! judul hapat 1
+! judul hapat 2
+! judul hapat 3
+|-
+| baris 1, sel 1
+| baris 1, sel 2
+| baris 1, sel 3
+|-
+| baris 2, sel 1
+| baris 2, sel 2
+| baris 2, sel 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Naskah sel',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Naskah judul',
+ 'wikieditor-toolbar-tool-table-title' => 'Buati tabel',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Baris',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolom',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Tambahakan baris',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Gaya awan babatasan',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Ulah tabel baurutan',
+ 'wikieditor-toolbar-tool-table-example' => 'Cuntuh',
+ 'wikieditor-toolbar-tool-table-preview' => 'Tilik',
+ 'wikieditor-toolbar-tool-table-insert' => 'Masukakan',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Walangi',
+ 'wikieditor-toolbar-tool-replace' => 'Gagai wan gantiakan',
+ 'wikieditor-toolbar-tool-replace-title' => 'Gagai wan gantiakan',
+ 'wikieditor-toolbar-tool-replace-search' => 'Gagai:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Ganti lawan:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Rasukakan abjad ganal/halus',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Gagai dudinya',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Ganti dudinya',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Ganti samunyaan',
+ 'wikieditor-toolbar-tool-replace-close' => 'Tuhup',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Panggagaian Pian kadada ruhuinya.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Pian kada mambuatakan apa pun gasan di panggagaian',
+ 'wikieditor-toolbar-section-characters' => 'Karakter istimiwa',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simbul',
+ 'wikieditor-toolbar-characters-page-greek' => 'Yunani',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Sirilik',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arab',
+ 'wikieditor-toolbar-characters-page-persian' => 'Parsia',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ibrani',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Patulung',
+ 'wikieditor-toolbar-help-heading-description' => 'Katarangan',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Apa nang Pian katik',
+ 'wikieditor-toolbar-help-heading-result' => 'Apa nang Pian kulihi',
+ 'wikieditor-toolbar-help-page-format' => 'Pambantukan',
+ 'wikieditor-toolbar-help-page-link' => 'Tautan',
+ 'wikieditor-toolbar-help-page-heading' => 'Judul',
+ 'wikieditor-toolbar-help-page-list' => 'Daptar',
+ 'wikieditor-toolbar-help-page-file' => 'Barakas',
+ 'wikieditor-toolbar-help-page-reference' => 'Rujukan',
+ 'wikieditor-toolbar-help-page-discussion' => 'Pamandiran',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Hiring',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Naskah hiring''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Naskah hiring</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Kandal',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Naskah kandal'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Naskah kandal</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Kandal &amp; hiring',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Naskah kandal &amp; hiring'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Naskah kandal &amp; hiring</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Tautan dalam',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Judul tungkaran|Judul tautan]]<br />[[Judul tungkaran]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Label tautan</a><br /><a href='#'>Judul tungkaran</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Tautan luar',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.cuntuh.org Label tautan]<br />[http://www.cuntuh.org]<br />http://www.cuntuh.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Label pranala</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.cuntuh.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Judul tingkatan kadua',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '==Naskah judul==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Naskah judul</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Judul tingkatan katalu',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '===Naskah judul===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Naskah judul</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Judul tingkatan kaampat',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Naskah judul ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Naskah judul</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Judul tingkatan kalima',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Naskah judul =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Naskah judul</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Daptar bapiluru',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Isi daptar<br />* Isi daptar',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Isi daptar</li><li>Isi daptar</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Daptar banumur',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Isi daptar<br /># Isi daptar',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Isi daptar</li><li>Isi daptar</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Maktub-akan barakas',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Cuntuh.png|thumb|Naskah judul gambar]]',
+ 'wikieditor-toolbar-help-content-reference-description' => 'Rujukan',
+ 'wikieditor-toolbar-help-content-reference-result' => "Naskah tungkaran.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-result' => "Naskah tungkaran.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Manampaiakan rujukan',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Tandatangan lawan waktu',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Ngaran pamuruk</a> (<a href='#' title='{{#special:mytalk}}'>pandir</a>) 15:54, 10 Juni 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Tandatangan',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Ngaran pamuruk</a> (<a href='#' title='{{#special:mytalk}}'>pandir</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Inden',
+);
+
+/** Bengali (বাংলা)
+ * @author Bellayet
+ * @author Wikitanvir
+ */
+$messages['bn'] = array(
+ 'wikieditor' => 'উনà§à¦¨à¦¤ উইকিটেকà§à¦¸à¦Ÿ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸',
+ 'wikieditor-wikitext-tab' => 'উইকিটেকà§à¦¸à¦Ÿ',
+ 'wikieditor-loading' => 'আনা হচà§à¦›à§‡',
+ 'wikieditor-preview-preference' => 'পাশাপাশি পà§à¦°à¦¾à¦•à¦¦à¦°à§à¦¶à¦¨ সকà§à¦°à¦¿à¦¯à¦¼ করো',
+ 'wikieditor-preview-tab' => 'পà§à¦°à¦¾à¦•à¦¦à¦°à§à¦¶à¦¨',
+ 'wikieditor-preview-changes-tab' => 'পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ',
+ 'wikieditor-preview-loading' => 'লোডিং...',
+ 'wikieditor-previewDialog-tab' => 'পà§à¦°à¦¾à¦•à¦¦à¦°à§à¦¶à¦¨',
+ 'wikieditor-previewDialog-loading' => 'লোডিং...',
+ 'wikieditor-publish-preference' => 'ধাপে ধাপে পà§à¦°à¦•à¦¾à¦¶ করা সকà§à¦°à¦¿à¦¯à¦¼ করো',
+ 'wikieditor-publish-button-publish' => 'পà§à¦°à¦•à¦¾à¦¶ করো',
+ 'wikieditor-publish-button-cancel' => 'বাতিল',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}} ঠপà§à¦°à¦•à¦¾à¦¶ করো',
+ 'wikieditor-publish-dialog-summary' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ সারাংশ (আপনি কি পরিবরà§à¦¤à¦¨ করেছেন তা অলà§à¦ª কথায় লিখà§à¦¨):',
+ 'wikieditor-publish-dialog-minor' => 'অনà§à¦²à§à¦²à§‡à¦–à§à¦¯ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾',
+ 'wikieditor-publish-dialog-watch' => 'à¦à¦‡ পাতাটি নজরে রাখà§à¦¨',
+ 'wikieditor-publish-dialog-publish' => 'পà§à¦°à¦•à¦¾à¦¶ করো',
+ 'wikieditor-publish-dialog-goback' => 'ফিরে যাও',
+ 'wikieditor-template-editor-preference' => 'উইকি টেমà§à¦ªà¦²à§‡à¦Ÿà§‡à¦° ফরম ভিতà§à¦¤à¦¿à¦• সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ সকà§à¦°à¦¿à¦¯à¦¼ করো',
+ 'wikieditor-template-editor-dialog-title' => 'টেমà§à¦ªà¦²à§‡à¦Ÿ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾',
+ 'wikieditor-template-editor-dialog-submit' => 'হালনাগাদ',
+ 'wikieditor-template-editor-dialog-cancel' => 'বাতিল',
+ 'wikieditor-templates-preference' => 'টেমà§à¦ªà¦²à§‡à¦Ÿ ভাà¦à¦œ হওয়া সকà§à¦°à¦¿à¦¯à¦¼',
+ 'wikieditor-toc-preference' => 'দিকদরà§à¦¶à§€ সূচী সকà§à¦°à¦¿à¦¯à¦¼ করো',
+ 'wikieditor-toc-show' => 'বিষয়বসà§à¦¤à§ দেখাও',
+ 'wikieditor-toc-hide' => 'বিষয়বসà§à¦¤à§ আড়াল করো',
+ 'wikieditor-toolbar' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ টà§à¦²à¦¬à¦¾à¦°',
+ 'wikieditor-toolbar-desc' => 'বেশি বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦¯à§‹à¦—à§à¦¯ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ পাতার টà§à¦²à¦¬à¦¾à¦°',
+ 'wikieditor-toolbar-preference' => 'শকà§à¦¤à¦¿à¦¶à¦¾à¦²à§€ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ টà§à¦²à¦¬à¦¾à¦° সকà§à¦°à¦¿à¦¯à¦¼ করো',
+ 'wikieditor-toolbar-dialogs-preference' => 'যোগকৃত লিংক, ছক à¦à¦¬à¦‚ আরও কিছà§à¦° জনà§à¦¯ ডায়লগ সকà§à¦°à¦¿à¦¯à¦¼ করো',
+ 'wikieditor-toolbar-loading' => 'লোডিং…',
+ 'wikieditor-toolbar-tool-bold' => 'গাঢ়',
+ 'wikieditor-toolbar-tool-bold-example' => 'গাঢ় লেখা',
+ 'wikieditor-toolbar-tool-italic' => 'ইটালিক',
+ 'wikieditor-toolbar-tool-italic-example' => 'ইটালিক লেখা',
+ 'wikieditor-toolbar-tool-ilink' => 'আভà§à¦¯à¦¨à§à¦¤à¦°à§€à¦£ সংযোগ',
+ 'wikieditor-toolbar-tool-ilink-example' => 'সংযোগের শিরোনাম',
+ 'wikieditor-toolbar-tool-xlink' => 'বহিঃসংযোগ (মনে রাখবেন http:// উপসরà§à¦— থাকবে)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com সংযোগের শিরোনাম',
+ 'wikieditor-toolbar-tool-link' => 'লিংক',
+ 'wikieditor-toolbar-tool-link-title' => 'লিংক যোগ করো',
+ 'wikieditor-toolbar-tool-link-int' => 'কোনো উইকি পাতায়',
+ 'wikieditor-toolbar-tool-link-int-target' => 'পাতার শিরোনাম:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'পাতার শিরোনাম অথবা ইউআরà¦à¦²',
+ 'wikieditor-toolbar-tool-link-int-text' => 'লিংক লেখা:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'যে লেখা দৃশà§à¦¯à¦®à¦¾à¦¨ হবে',
+ 'wikieditor-toolbar-tool-link-ext' => 'বহিঃসà§à¦¥ কোনো ওয়েব পেইজে',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'লিংক ইউআরà¦à¦²:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'সংযোগ লেখ:',
+ 'wikieditor-toolbar-tool-link-insert' => 'লিংক যোগ করো',
+ 'wikieditor-toolbar-tool-link-cancel' => 'বাতিল',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'পাতা রয়েছে',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'কোনো পাতা নাই',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ভà§à¦² শিরোনাম',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'বহিঃসংযোগ',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'পাতার উপসà§à¦¥à¦¿à¦¤à¦¿ যাচাই...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'আপনার শিরোনামটি ঠিক নয়।',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'যে ইউআরà¦à¦²à¦Ÿà¦¿à¦•à§‡ আপনি নিরà§à¦¦à§‡à¦¶ করেছেন, তা অনà§à¦¯ à¦à¦•à¦Ÿà¦¿ উইকির পাতাকে নিরà§à¦¦à§‡à¦¶ করছে। আপনি কী à¦à¦Ÿà¦¿à¦•à§‡ à¦à¦•à¦Ÿà¦¿ আনà§à¦¤à¦¸à¦‚যোগে পরিবরà§à¦¤à¦¿à¦¤ করতে চান?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'আনà§à¦¤à¦ƒà¦¸à¦‚যোগ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'বহিঃসংযোগ',
+ 'wikieditor-toolbar-tool-link-empty' => 'লিঙà§à¦• করা জনà§à¦¯ আপনি কোনো কিছৠটাইপ করেননি।',
+ 'wikieditor-toolbar-tool-file' => 'à¦à¦®à§à¦¬à§‡à¦¡à§‡à¦¡ ফাইল',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'তথà§à¦¯à¦¸à§‚তà§à¦°',
+ 'wikieditor-toolbar-tool-reference-example' => 'পাদটীকার লেখা à¦à¦–ানে যোগ করো',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'বাতিল',
+ 'wikieditor-toolbar-tool-reference-title' => 'তথà§à¦¯à¦¸à§‚তà§à¦° যোগ',
+ 'wikieditor-toolbar-tool-reference-insert' => 'যোগ করো',
+ 'wikieditor-toolbar-tool-reference-text' => 'তথà§à¦¯à¦¸à§‚তà§à¦° লেখা',
+ 'wikieditor-toolbar-tool-signature' => 'সà§à¦¬à¦¾à¦•à§à¦·à¦° à¦à¦¬à¦‚ সময়',
+ 'wikieditor-toolbar-section-advanced' => 'উচà§à¦šà¦ªà¦°à§à¦¯à¦¾à¦¯à¦¼à§‡à¦° টà§à¦²',
+ 'wikieditor-toolbar-tool-heading' => 'শিরোনাম',
+ 'wikieditor-toolbar-tool-heading-1' => 'শিরোনাম ১',
+ 'wikieditor-toolbar-tool-heading-2' => 'শিরোনাম ২',
+ 'wikieditor-toolbar-tool-heading-3' => 'শিরোনাম ৩',
+ 'wikieditor-toolbar-tool-heading-4' => 'শিরোনাম ৪',
+ 'wikieditor-toolbar-tool-heading-5' => 'শিরোনাম ৫',
+ 'wikieditor-toolbar-tool-heading-example' => 'শিরোনাম লেখ',
+ 'wikieditor-toolbar-group-format' => 'তালিকা',
+ 'wikieditor-toolbar-tool-ulist' => 'বà§à¦²à§‡à¦Ÿà¦•à§ƒà¦¤ তালিকা',
+ 'wikieditor-toolbar-tool-ulist-example' => 'বà§à¦²à§‡à¦Ÿà¦•à§ƒà¦¤ তালিকা আইটেম',
+ 'wikieditor-toolbar-tool-olist' => 'সংখà§à¦¯à¦¾à¦¯à¦¼à¦¿à¦¤ তালিকা',
+ 'wikieditor-toolbar-tool-olist-example' => 'সংখà§à¦¯à¦¾à¦¯à¦¼à¦¿à¦¤ তালিকা আইটেম',
+ 'wikieditor-toolbar-tool-indent' => 'পà§à¦°à¦¾à¦¨à§à¦¤à¦¿à¦•à¦•à¦°à¦£',
+ 'wikieditor-toolbar-tool-indent-example' => 'পà§à¦°à¦¾à¦¨à§à¦¤à¦¿à¦•à¦•à§ƒà¦¤ লাইন',
+ 'wikieditor-toolbar-tool-nowiki' => 'উইকি ফরমà§à¦¯à¦¾à¦Ÿà¦¿à¦‚ উপেকà§à¦·à¦¾ করা হোক',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'অ-ফরমà§à¦¯à¦¾à¦Ÿà¦•à§ƒà¦¤ টেকà§à¦¸à¦Ÿ à¦à¦–ানে লিখà§à¦¨',
+ 'wikieditor-toolbar-tool-redirect' => 'পà§à¦¨à¦ƒà¦¨à¦¿à¦°à§à¦¦à§‡à¦¶',
+ 'wikieditor-toolbar-tool-redirect-example' => 'লকà§à¦· পাতার নাম',
+ 'wikieditor-toolbar-tool-big' => 'বড়',
+ 'wikieditor-toolbar-tool-big-example' => 'বড় লেখা',
+ 'wikieditor-toolbar-tool-small' => 'ছোট',
+ 'wikieditor-toolbar-tool-small-example' => 'ছোট লেখা',
+ 'wikieditor-toolbar-tool-superscript' => 'সà§à¦ªà¦¾à¦°à¦¸à§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ',
+ 'wikieditor-toolbar-tool-superscript-example' => 'সà§à¦ªà¦¾à¦°à¦¸à§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ লেখা',
+ 'wikieditor-toolbar-tool-subscript' => 'সাবসà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ',
+ 'wikieditor-toolbar-tool-subscript-example' => 'সাবসà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ লেখা',
+ 'wikieditor-toolbar-group-insert' => 'যোগ করো',
+ 'wikieditor-toolbar-tool-gallery' => 'ছবির গà§à¦¯à¦¾à¦²à¦¾à¦°à§€',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|কà§à¦¯à¦¾à¦ªà¦¶à¦¨à§§
+$1:Example.jpg|কà§à¦¯à¦¾à¦ªà¦¶à¦¨à§¨',
+ 'wikieditor-toolbar-tool-newline' => 'নতà§à¦¨ লাইন',
+ 'wikieditor-toolbar-tool-table' => 'ছক',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! শিরোনাম ১
+! শিরোনাম ২
+! শিরোনাম ৩
+|-
+| সারি ১, ঘর ১
+| সারি ১, ঘর ২
+| সারি ১, ঘর ৩
+|-
+| সারি ২, ঘর ১
+| সারি ২, ঘর ২
+| সারি ২, ঘর ৩',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ঘরের লেখ',
+ 'wikieditor-toolbar-tool-table-example-header' => 'শিরোনামের লেখ',
+ 'wikieditor-toolbar-tool-table-title' => 'ছক যোগ করো',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'সারি',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'কলাম',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'শিরোনাম সারি অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤ করো',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'সীমানà§à¦¤ শৈলী',
+ 'wikieditor-toolbar-tool-table-sortable' => 'ছক কà§à¦°à¦®à¦¾à¦¯à¦¼à¦¨ করো',
+ 'wikieditor-toolbar-tool-table-example' => 'ঘরের লেখ',
+ 'wikieditor-toolbar-tool-table-preview' => 'পà§à¦°à¦¾à¦•à¦¦à¦°à§à¦¶à¦¨',
+ 'wikieditor-toolbar-tool-table-insert' => 'যোগ করো',
+ 'wikieditor-toolbar-tool-table-cancel' => 'বাতিল',
+ 'wikieditor-toolbar-tool-table-toomany' => 'à¦à¦‡ ডায়লগ দà§à¦¬à¦¾à¦°à¦¾ $1 ঘরের বেশি ছক যোগ করা সমà§à¦­à¦¬ নয়।',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'আপনি সারি à¦à¦¬à¦‚ কলামের জনà§à¦¯ ভà§à¦² সংখà§à¦¯à¦¾ টাইপ করেছেন।',
+ 'wikieditor-toolbar-tool-table-zero' => 'আপনি ছকের সারি à¦à¦¬à¦‚ কলামের সংখà§à¦¯à¦¾ শূনà§à¦¯ দিতে পারবেন না।',
+ 'wikieditor-toolbar-tool-replace' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ à¦à¦¬à¦‚ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨',
+ 'wikieditor-toolbar-tool-replace-title' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ ও পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨',
+ 'wikieditor-toolbar-tool-replace-search' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'যা দিয়ে পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¿à¦¤ হবে:',
+ 'wikieditor-toolbar-tool-replace-case' => 'অকà§à¦·à¦°à§‡à¦° ছাà¦à¦¦ মেলানো',
+ 'wikieditor-toolbar-tool-replace-regex' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ বাকà§à¦¯à¦•à§‡ রেগà§à¦²à¦¾à¦° à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨ হিসেবে গনà§à¦¯ করো',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'পরবরà§à¦¤à§€ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'পরবরà§à¦¤à§€ পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'সব পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨',
+ 'wikieditor-toolbar-tool-replace-close' => 'বাতিল',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'আপনার অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ কোনো কিছà§à¦° সাথে মিলেনি।',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 টি পà§à¦°à¦¤à¦¿à¦¸à§à¦¥à¦¾à¦ªà¦¨ সমà§à¦ªà¦¨à§à¦¨ হয়েছে।',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'আপনি অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨à§‡à¦° জনà§à¦¯ কোনো কিছৠদেননি।',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'আপনার দেওয়া রেগà§à¦²à¦¾à¦° à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨à¦Ÿà¦¿ ঠিক নয়: $1',
+ 'wikieditor-toolbar-section-characters' => 'বিশেষ বরà§à¦£à¦¸à¦®à§‚হ',
+ 'wikieditor-toolbar-characters-page-latin' => 'লাতিন',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¿à¦¤ লাতিন',
+ 'wikieditor-toolbar-characters-page-ipa' => 'আইপিঠ(IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'চিহà§à¦¨à¦¸à¦®à§‚হ',
+ 'wikieditor-toolbar-characters-page-greek' => 'গà§à¦°à¦¿à¦•',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'সিরিলিক',
+ 'wikieditor-toolbar-characters-page-arabic' => 'আরবীয়',
+ 'wikieditor-toolbar-characters-page-persian' => 'ফারসি',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'হিবà§à¦°à§',
+ 'wikieditor-toolbar-characters-page-bangla' => 'বাংলা',
+ 'wikieditor-toolbar-characters-page-telugu' => 'তেলেগà§',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'শিংহলী',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'গà§à¦œà¦°à¦¾à¦¤à¦¿',
+ 'wikieditor-toolbar-characters-page-thai' => 'থাই',
+ 'wikieditor-toolbar-characters-page-lao' => 'লাও',
+ 'wikieditor-toolbar-characters-page-khmer' => 'খেমার',
+ 'wikieditor-toolbar-section-help' => 'সহায়িকা',
+ 'wikieditor-toolbar-help-heading-description' => 'বরà§à¦£à¦¨à¦¾',
+ 'wikieditor-toolbar-help-heading-syntax' => 'আপনি যা টাইপ করেছেন',
+ 'wikieditor-toolbar-help-heading-result' => 'আপনি যা দেখতে পাচà§à¦›à§‡à¦¨',
+ 'wikieditor-toolbar-help-page-format' => 'বিনà§à¦¯à¦¾à¦¸à¦¨',
+ 'wikieditor-toolbar-help-page-link' => 'সংযোগসমূহ',
+ 'wikieditor-toolbar-help-page-heading' => 'শিরোনামসমূহ',
+ 'wikieditor-toolbar-help-page-list' => 'তালিকাসমূহ',
+ 'wikieditor-toolbar-help-page-file' => 'ফাইলসমূহ',
+ 'wikieditor-toolbar-help-page-reference' => 'তথà§à¦¯à¦¸à§‚তà§à¦°',
+ 'wikieditor-toolbar-help-page-discussion' => 'আলোচনা',
+ 'wikieditor-toolbar-help-content-italic-description' => 'ইটালিক',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''ইটালিক লেখা''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>ইটালিক লেখা</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'গাঢ়',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''গাঢ় লেখা'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>গাঢ় লেখা</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'গাঢ় &amp; ইটালিক',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''গাঢ় &amp; ইটালিক লেখা'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>গাঢ় &amp; ইটালিক লেখা</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'আভà§à¦¯à¦¨à§à¦¤à¦°à§€à¦£ সংযোগ',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[পাতার শিরোনাম|সংযোগ লেবেল]]<br />[[পাতার শিরোনাম]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>সংযোগ লেবেল</a><br /><a href='#'>পাতার শিরোনাম</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'বহিঃসংযোগ',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org সংযোগ লেবেল]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>সংযোগ লেবেল</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '২য় পরà§à¦¯à¦¾à¦¯à¦¼à§‡à¦° শিরোনাম',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== শিরোনাম লেখ ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2> শিরোনাম লেখ </h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '৩য় পরà§à¦¯à¦¾à¦¯à¦¼à§‡à¦° শিরোনাম',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== শিরোনাম লেখ ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3> শিরোনাম লেখ </h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '৪থ পরà§à¦¯à¦¾à¦¯à¦¼à§‡à¦° শিরোনাম',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== শিরোনাম লেখ ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4> শিরোনাম লেখ </h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '৫ম পরà§à¦¯à¦¾à¦¯à¦¼à§‡à¦° শিরোনাম',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== শিরোনাম লেখ =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5> শিরোনাম লেখ </h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'বà§à¦²à§‡à¦Ÿà¦•à§ƒà¦¤ তালিকা',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* তালিকা আইটেম<br />* তালিকা আইটেম',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>তালিকা আইটেম</li><li>তালিকা আইটেম</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'সংখà§à¦¯à¦¾à¦¯à¦¼à¦¿à¦¤ তালিকা',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# তালিকা আইটেম <br /># তালিকা আইটেম',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>তালিকা আইটেম</li><li>তালিকা আইটেম</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'à¦à¦®à§à¦¬à§‡à¦¡à§‡à¦¡ ফাইল',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|কà§à¦¯à¦¾à¦ªà¦¶à¦¨ লেখ]]',
+ 'wikieditor-toolbar-help-content-reference-description' => 'তথà§à¦¯à¦¸à§‚তà§à¦°',
+ 'wikieditor-toolbar-help-content-reference-result' => "পাতার লেখা।<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'à¦à¦•à¦‡ তথà§à¦¯à¦¸à§‚তà§à¦°à§‡à¦° à¦à¦•à¦¾à¦§à¦¿à¦• বà§à¦¯à¦¬à¦¹à¦¾à¦°',
+ 'wikieditor-toolbar-help-content-rereference-result' => "পাতার লেখ।<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'তথà§à¦¯à¦¸à§‚তà§à¦° পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করো',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>সংযোগ লেখ</a>, বাড়তি লেখ।</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'সময় সহ সà§à¦¬à¦¾à¦•à§à¦·à¦°',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€</a> (<a href='#' title='{{#special:mytalk}}'>আলাপ</a>) ১৫:৫৪, ১০ জà§à¦¨ ২০০৯ (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'সà§à¦¬à¦¾à¦•à§à¦·à¦°',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€</a> (<a href='#' title='{{#special:mytalk}}'>আলাপ</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'পà§à¦°à¦¾à¦¨à§à¦¤à¦¿à¦•à¦•à¦°à¦£',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'সাধারণ লেখ<br />:পà§à¦°à¦¾à¦¨à§à¦¤à¦¿à¦•à¦•à§ƒà¦¤ লেখ<br />::পà§à¦°à¦¾à¦¨à§à¦¤à¦¿à¦•à¦•à§ƒà¦¤ লেখ',
+ 'wikieditor-toolbar-help-content-indent-result' => 'সাধারণ লেখ<dl><dd>পà§à¦°à¦¾à¦¨à§à¦¤à¦¿à¦•à¦•à§ƒà¦¤ লেখ<dl><dd>পà§à¦°à¦¾à¦¨à§à¦¤à¦¿à¦•à¦•à§ƒà¦¤ লেখ</dd></dl></dd></dl>',
+);
+
+/** Tibetan (བོད་ཡིག)
+ * @author Freeyak
+ */
+$messages['bo'] = array(
+ 'wikieditor-loading' => 'འདྲེན་པà¼',
+ 'wikieditor-preview-tab' => 'སྔ་མà¼',
+ 'wikieditor-publish-button-cancel' => 'རྩིས་མེདà¼',
+ 'wikieditor-toolbar-tool-replace-close' => 'སྒོ་རྒྱག་པà¼',
+ 'wikieditor-toolbar-help-page-list' => 'རེའུ་མིག',
+);
+
+/** Bishnupria Manipuri (ইমার ঠার/বিষà§à¦£à§à¦ªà§à¦°à¦¿à¦¯à¦¼à¦¾ মণিপà§à¦°à§€)
+ * @author Usingha
+ */
+$messages['bpy'] = array(
+ 'wikieditor' => 'উচ উইকিটেকà§à¦¸à¦Ÿ পাতানির ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸à¦¹à¦¾à¦¨',
+ 'wikieditor-desc' => 'উইকি-টেকà§à¦Ÿ পতানির কা সালকরানি à¦à¦•à¦°à¦¬ অসারে ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸ বারো আরাকউ ফিচার দিতই মডিউল',
+ 'wikieditor-wikitext-tab' => 'উইকিটেকà§à¦¸à¦Ÿ',
+ 'wikieditor-loading' => 'আনরাঙ',
+ 'wikieditor-preview-preference' => 'কাদাহাত আকচা দেখাদে',
+ 'wikieditor-preview-tab' => 'আগচা',
+ 'wikieditor-preview-changes-tab' => 'বদালাসিতা',
+ 'wikieditor-preview-loading' => 'লোডিং…',
+ 'wikieditor-publish-preference' => 'কাকেয়ে-কাকেয়ে ফঙকরানিহান থা কর',
+ 'wikieditor-publish-button-publish' => 'ফঙকর',
+ 'wikieditor-publish-button-cancel' => 'বাতিল করেদে',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}} হাত ফঙকর',
+ 'wikieditor-publish-dialog-summary' => 'পতানির বারে (তি কিহান পতাসতà§à¦¤à¦¾ অহানর বারে বাটà§à¦Ÿà¦¿ করে মাতেদে):',
+ 'wikieditor-publish-dialog-minor' => 'হà§à¦°à§-মà§à¦°à§ পতানিহান',
+ 'wikieditor-publish-dialog-watch' => 'পাতাà¦à¦¹à¦¾à¦¨ খিয়ালে থ',
+ 'wikieditor-publish-dialog-publish' => 'ফঙকর',
+ 'wikieditor-publish-dialog-goback' => 'আলথকে যাগা',
+ 'wikieditor-template-editor-preference' => 'উইকি টেমà§à¦ªà¦²à§‡à¦Ÿà§‡à¦° ফরমহানি পতানি থা কর',
+ 'wikieditor-template-editor-dialog-title' => 'টেমà§à¦ªà¦²à§‡à¦Ÿ পতা',
+ 'wikieditor-template-editor-dialog-submit' => 'আপডেট কর',
+ 'wikieditor-template-editor-dialog-cancel' => 'বাতিল করেদে',
+ 'wikieditor-templates-preference' => 'টেমà§à¦ªà¦²à§‡à¦Ÿ থিপ করানি থা কর',
+ 'wikieditor-toc-preference' => 'দিশাধরà§à¦¨à¦¿ সূচী ফঙকর',
+ 'wikieditor-toc-show' => 'বিষয়বসà§à¦¤à§ দেখাদে',
+ 'wikieditor-toc-hide' => 'বিষয়বসà§à¦¤à§ আরà§à¦® কর',
+ 'wikieditor-toolbar' => 'পতানির টà§à¦²à¦¬à¦¾à¦°',
+ 'wikieditor-toolbar-desc' => 'বপ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦…র পতানির পাতা অতার টà§à¦²à¦¬à¦¾à¦°',
+ 'wikieditor-toolbar-preference' => 'লিঙপা পতার টà§à¦²à¦¬à¦¾à¦° ফঙে থ',
+ 'wikieditor-toolbar-dialogs-preference' => 'তিলকরিসি লিংক, ছক বারো আরতার ডায়ালগ ফঙে থ',
+ 'wikieditor-toolbar-loading' => 'লোডিং…',
+ 'wikieditor-toolbar-tool-bold' => 'গাঢ়পা',
+ 'wikieditor-toolbar-tool-bold-example' => 'গাঢ়পা ইকা',
+ 'wikieditor-toolbar-tool-italic' => 'ইটালিক',
+ 'wikieditor-toolbar-tool-italic-example' => 'ইটালিক মেয়েক',
+ 'wikieditor-toolbar-tool-ilink' => 'ভিতরর মিলাপ',
+ 'wikieditor-toolbar-tool-ilink-example' => 'চিঙনাঙ মিলাপ',
+ 'wikieditor-toolbar-tool-xlink' => 'বারেদের মিলাপ (মà§à¦™à§‡ http:// বারনি না পাহà§à¦°à¦¿à¦¸)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com চিঙনাঙ মিলাপ',
+ 'wikieditor-toolbar-tool-link' => 'লিংক',
+ 'wikieditor-toolbar-tool-link-title' => 'লিংক বরা',
+ 'wikieditor-toolbar-tool-link-int' => 'উইকি পাতা আহাত',
+ 'wikieditor-toolbar-tool-link-int-target' => 'পাতার চিঙনাঙ নাইলে URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'পাতার চিঙনাঙ নাইলে ইউআরà¦à¦²',
+ 'wikieditor-toolbar-tool-link-int-text' => 'মà§à¦™à§‡ থাকরানির মেয়েক:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'মà§à¦™à§‡ থাকরানির মেয়েক:',
+ 'wikieditor-toolbar-tool-link-ext' => 'বারেদের ওয়েব পেইজহান',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'লিংক ইউআরà¦à¦²:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'মিলপার ইকা:',
+ 'wikieditor-toolbar-tool-link-insert' => 'লিংক বরা',
+ 'wikieditor-toolbar-tool-link-cancel' => 'বাতিল করেদে',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'পাতা আসে',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'পাতাহান নেই',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'চিঙনাঙে লালà§à¦‡à¦¸à§‡',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'বারেদের লগে মিলাপ',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'পাতাহান চারাঙ',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'তর চিঙনাঙহান চà§à¦® নাইসে',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'যে ইউআরà¦à¦²à¦¹à¦¾à¦¨ মাতানি অর অর আরাক উইকির পাতাহানরে বà§à¦à¦¾à¦°à¥¤ ভিতরর মিরাপ সিলকরানি মনারাইথাঙ?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'ভিতরর মিলাপ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'বারেদের লগে মিলাপ',
+ 'wikieditor-toolbar-tool-link-empty' => 'মিলাপ কারানির কা কিতà§à¦¤à¦¾à¦‰ না ইকরলে।',
+ 'wikieditor-toolbar-tool-file' => 'à¦à¦®à§à¦¬à§‡à¦¡à§‡à¦¡ ফাইলগ',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'রেফারেনà§à¦¸à¦¹à¦¾à¦¨à¦¿',
+ 'wikieditor-toolbar-tool-reference-example' => 'পাদটীকারকা ইকা à¦à¦¹à¦¾à¦¤ বরা',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'বাতিল করেদে',
+ 'wikieditor-toolbar-tool-reference-title' => 'তথà§à¦¯à¦¸à§‚তà§à¦° বরা',
+ 'wikieditor-toolbar-tool-reference-insert' => 'বরা',
+ 'wikieditor-toolbar-tool-reference-text' => 'তথà§à¦¯à¦¸à§‚তà§à¦°à¦° ইকা',
+ 'wikieditor-toolbar-tool-signature' => 'সà§à¦¬à¦¾à¦•à§à¦·à¦° বারো কà§à¦·à§‡à¦¨à§à¦¤à¦¾à¦®',
+ 'wikieditor-toolbar-section-advanced' => 'উচà§à¦šà¦¤à¦°',
+ 'wikieditor-toolbar-tool-heading' => 'চিঙনাঙ',
+ 'wikieditor-toolbar-tool-heading-1' => 'থাক ১',
+ 'wikieditor-toolbar-tool-heading-2' => 'থাক ২',
+ 'wikieditor-toolbar-tool-heading-3' => 'থাক ৩',
+ 'wikieditor-toolbar-tool-heading-4' => 'থাক ৪',
+ 'wikieditor-toolbar-tool-heading-5' => 'থাক ৫',
+ 'wikieditor-toolbar-tool-heading-example' => 'চিঙনাঙর খনà§à¦¤à¦¾à¦¹à¦¾à¦¨à¦¿',
+ 'wikieditor-toolbar-group-format' => 'ফরমেট',
+ 'wikieditor-toolbar-tool-ulist' => 'বà§à¦²à§‡à¦Ÿ করিসি পারেঙহানি',
+ 'wikieditor-toolbar-tool-ulist-example' => 'বà§à¦²à§‡à¦Ÿ করিসি মাথেলহানি',
+ 'wikieditor-toolbar-tool-olist' => 'সংখà§à¦¯à¦¾à¦² ইকিসি পারেঙহানি',
+ 'wikieditor-toolbar-tool-olist-example' => 'বà§à¦²à§‡à¦Ÿ করিসি মাথেলহানি',
+ 'wikieditor-toolbar-tool-indent' => 'কাসাদেনা',
+ 'wikieditor-toolbar-tool-indent-example' => 'কাসা দিয়াসি পারেঙহানি',
+ 'wikieditor-toolbar-tool-nowiki' => 'উইকির পাজালানিহান লালà§à¦¯à¦¼à¦¾ যাগা',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'ফরমেট নাকরিসি মেয়েক বরা',
+ 'wikieditor-toolbar-tool-redirect' => 'কà§à¦‡à¦•à¦°',
+ 'wikieditor-toolbar-tool-redirect-example' => 'সই করিসি পাতার নাঙ',
+ 'wikieditor-toolbar-tool-big' => 'ডাঙর',
+ 'wikieditor-toolbar-tool-big-example' => 'ডাঙর মেয়েক',
+ 'wikieditor-toolbar-tool-small' => 'হà§à¦°à§',
+ 'wikieditor-toolbar-tool-small-example' => 'হà§à¦°à§ মেয়েক',
+ 'wikieditor-toolbar-tool-superscript' => 'সà§à¦ªà¦¾à¦°à¦¸à§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ',
+ 'wikieditor-toolbar-tool-superscript-example' => 'সà§à¦ªà¦¾à¦°à¦¸à§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ মেয়েক',
+ 'wikieditor-toolbar-tool-subscript' => 'সাবসà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ',
+ 'wikieditor-toolbar-tool-subscript-example' => 'সাবসà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ মেয়েক',
+ 'wikieditor-toolbar-group-insert' => 'বরা',
+ 'wikieditor-toolbar-tool-gallery' => 'ফটকর গà§à¦¯à¦¾à¦²à¦¾à¦°à§€',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|কà§à¦¯à¦¾à¦ªà¦¶à¦¨à§§
+$1:Example.jpg|কà§à¦¯à¦¾à¦ªà¦¶à¦¨à§¨',
+ 'wikieditor-toolbar-tool-newline' => 'নà§à§±à¦¾ পারেঙ',
+ 'wikieditor-toolbar-tool-table' => 'ছক',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! চিঙনাঙ ১
+! চিঙনাঙ ২
+! চিঙনাঙ ৩
+|-
+| পারেঙ ১, সাঙ ১
+| পারেঙ ১, সাঙ ২
+| পারেঙ ১, সাঙ ৩
+|-
+| পারেঙ ২, সাঙ ১
+| পারেঙ ২, সাঙ ২
+| পারেঙ ২, সাঙ ৩',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'সাঙর মেয়েক',
+ 'wikieditor-toolbar-tool-table-example-header' => 'চিঙনাঙর খনà§à¦¤à¦¾à¦¹à¦¾à¦¨à¦¿',
+ 'wikieditor-toolbar-tool-table-title' => 'ছক বরা',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'পারেঙ',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'দà§à¦°à¦—ি',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'চিঙনাঙর পারেঙ বরা',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'বদান হাজা',
+ 'wikieditor-toolbar-tool-table-sortable' => 'ছক পাজালা',
+ 'wikieditor-toolbar-tool-table-example' => 'উদাহরন',
+ 'wikieditor-toolbar-tool-table-preview' => 'আগচা',
+ 'wikieditor-toolbar-tool-table-insert' => 'বরা',
+ 'wikieditor-toolbar-tool-table-cancel' => 'বাতিল করেদে',
+ 'wikieditor-toolbar-tool-table-toomany' => 'à¦à¦°à§‡ ডায়লগ à¦à¦¹à¦¾à¦¨à§à¦¨ $1 র বপ ছক বরানি নাকরব।',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'তা পারেঙ বারো দà§à¦°à¦°à¦•à¦¾ দিয়াসত নমà§à¦¬à¦° চà§à¦® নাইসে।',
+ 'wikieditor-toolbar-tool-table-zero' => 'তি পারেঙ বারো দà§à¦°à¦° কা শà§à¦¨à§à¦¯ দেনা নà§à§±à¦¾à¦°à¦¬à§‡à¥¤',
+ 'wikieditor-toolbar-tool-replace' => 'বিসারা বারো সিলকর',
+ 'wikieditor-toolbar-tool-replace-title' => 'বিসারা বারো সিলকর',
+ 'wikieditor-toolbar-tool-replace-search' => 'বিসারা:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'যেহানà§à¦¨ সিলকরানি ইতই:',
+ 'wikieditor-toolbar-tool-replace-case' => 'মেয়েকর অংতা মিলা',
+ 'wikieditor-toolbar-tool-replace-regex' => 'বিসারতেই খনà§à¦¤à¦¾à¦¹à¦¾à¦¨à¦°à§‡ রেগà§à¦²à¦¾à¦° à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨à¦¹à¦¾à¦¨ বà§à¦²à¦¿à¦¯à¦¼à¦¾ দর',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'থাঙনাত বিসারা',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'থাঙনাত সিলকর',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'হাবি বদালা',
+ 'wikieditor-toolbar-tool-replace-close' => 'à¦à¦¿à¦ªà¦¾',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'তি যেহান বিসারার অহান কিতà§à¦¤à¦¾à¦° লগেউ না মিলের',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 হান সিলকরানি ইল।',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'মিলাপ কারানির কা কিতà§à¦¤à¦¾à¦‰ না ইকরলে।',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'তি দিয়াসত রেগà§à¦²à¦¾à¦° à¦à¦•à§à¦¸à¦ªà§à¦°à§‡à¦¶à¦¨à¦¹à¦¾à¦¨ চà§à¦® নাইসে: $1',
+ 'wikieditor-toolbar-section-characters' => 'বিশেষ আখরগি',
+ 'wikieditor-toolbar-characters-page-latin' => 'লাতিন',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'সালকরিসি লাতিন',
+ 'wikieditor-toolbar-characters-page-ipa' => 'আইপিঠ(IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'চিনà§à¦¨à¦¤à¦¹à¦¾à¦¨à¦¿',
+ 'wikieditor-toolbar-characters-page-greek' => 'গà§à¦°à¦¿à¦•',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'সিরিলিক',
+ 'wikieditor-toolbar-characters-page-arabic' => 'আরবীয়',
+ 'wikieditor-toolbar-characters-page-persian' => 'ফারসি',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'হিবà§à¦°à§',
+ 'wikieditor-toolbar-characters-page-bangla' => 'বাংলা',
+ 'wikieditor-toolbar-characters-page-telugu' => 'তেলেগà§',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'শিংহলী',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'গà§à¦œà¦°à¦¾à¦¤à¦¿',
+ 'wikieditor-toolbar-characters-page-thai' => 'থাই',
+ 'wikieditor-toolbar-characters-page-lao' => 'লাও',
+ 'wikieditor-toolbar-characters-page-khmer' => 'খেমার',
+ 'wikieditor-toolbar-section-help' => 'পাংলাক',
+ 'wikieditor-toolbar-help-heading-description' => 'বরà§à¦£à¦¨à¦¾',
+ 'wikieditor-toolbar-help-heading-syntax' => 'তি যেহান টাইপ করিসত',
+ 'wikieditor-toolbar-help-heading-result' => 'তà§à¦®à¦¿ যেহান দেখরাই',
+ 'wikieditor-toolbar-help-page-format' => 'পাজালানি',
+ 'wikieditor-toolbar-help-page-link' => 'লিংকহানি',
+ 'wikieditor-toolbar-help-page-heading' => 'চিঙনাঙহানি',
+ 'wikieditor-toolbar-help-page-list' => 'লাতঙগি',
+ 'wikieditor-toolbar-help-page-file' => 'ফাইলগি',
+ 'wikieditor-toolbar-help-page-reference' => 'রেফারেনà§à¦¸à¦¹à¦¾à¦¨à¦¿',
+ 'wikieditor-toolbar-help-page-discussion' => 'ৱারি',
+ 'wikieditor-toolbar-help-content-italic-description' => 'ইটালিক',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''ইটালিক মেয়েক\"",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>ইটালিক মেয়েক</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'গাঢ়পা',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''গাঢ়পা মেয়েক'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>গাঢ়পা মেয়েক</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'গাঢ়পা &amp; ইটালিক',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''গাঢ়পা &amp; ইটালিক মেয়েক'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>গাঢ়পা &amp; ইটালিক মেয়েক</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'ভিতরর মিলাপ',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[পাতার চিঙনাঙ|মিলাপর লেবেল]]<br />[[পাতার চিঙনাঙ]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>মিলাপ লেবেল</a><br /><a href='#'>পাতার চিঙনাঙ</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'বারেদের লগে মিলাপ',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org মিরাপ লেবেল]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>মিলাপ লেবেল</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '২য় থাকর চিঙনাঙ',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== চিঙনাঙর মেয়েক ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2> চিঙনাঙর মেয়েক </h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '৩য় থাকর চিঙনাঙ',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '== চিঙনাঙর মেয়েক ==',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3> চিঙনাঙর মেয়েক </h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '৪রà§à¦¥ থাকর চিঙনাঙ',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '== চিঙনাঙর মেয়েক ==',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4> চিঙনাঙর মেয়েক </h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '৫ম থাকর চিঙনাঙ',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== চিঙনাঙর মেয়েক =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5> চিঙনাঙর মেয়েক </h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'বà§à¦²à§‡à¦Ÿ করিসি পারেঙহানি',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* পারেঙর মেথেল<br />* পারেঙর মেথেল',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>পারেঙর মেথেল</li><li>পারেঙর মেথেল</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'সংখà§à¦¯à¦¾à¦² ইকিসি পারেঙহানি',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# পারেঙর মেথেল<br /># পারেঙর মেথেল',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>পারেঙর মেথেল</li><li>পারেঙর মেথেল</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'à¦à¦®à§à¦¬à§‡à¦¡à§‡à¦¡ ফাইলগ',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|কà§à¦¯à¦¾à¦ªà¦¶à¦¨à¦° মেয়ক]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='কà§à¦¯à¦¾à¦ªà¦¶à¦° মেয়েক' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='ডাঙরকর' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>কà§à¦¯à¦¾à¦ªà¦¶à¦° মেয়েক</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'রেফারেনà§à¦¸à¦¹à¦¾à¦¨à¦¿',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'পাতার ইকাহানি।&lt;ref name="test"&gt;[http://www.example.org মিলাপর মেয়েকগি], আরতাউ মেয়েক।&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "পাতার ইকা।<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'তথà§à¦¯à¦¸à§‚তà§à¦° আকহানর কতà§à¦¤à¦®à¦¾à¦‰ বà§à¦¯à¦¬à¦¹à¦¾à¦°',
+ 'wikieditor-toolbar-help-content-rereference-result' => "পাতার ইকা।<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'তথà§à¦¯à¦¸à§‚তà§à¦° দেহাদে',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>মিলাপর মেয়েকগি</a>, হেলপা মেয়েকগি।</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'সà§à¦¬à¦¾à¦•à§à¦·à¦°à¦¹à¦¾à¦¨ লগে খেনà§à¦¤à¦¾à¦® বরিয়া',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>আতাকà§à¦°à¦¾</a> (<a href='#' title='{{#special:mytalk}}'>য়à§à¦¯à¦¾à¦°à§€</a>) ১৫:৫৪, ১০ আগষà§à¦Ÿ ২০১০(UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'সà§à¦¬à¦¾à¦•à§à¦·à¦°',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>আতাকà§à¦°à¦¾</a> (<a href='#' title='{{#special:mytalk}}'>য়à§à¦¯à¦¾à¦°à§€</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'কাসাদেনা',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'চà§à¦®à¦•à¦¾à¦° ইকা<br />:কাসাদিয়াসি ইকা<br />::কাসাদিয়াসি ইকা',
+ 'wikieditor-toolbar-help-content-indent-result' => 'চà§à¦®à¦•à¦¾à¦° ইকা<dl><dd>কাসাদিয়াসি ইকা<dl><dd>কাসাদিয়াসি ইকা</dd></dl></dd></dl>',
+);
+
+/** Breton (Brezhoneg)
+ * @author Fohanno
+ * @author Fulup
+ * @author Gwendal
+ * @author Y-M D
+ */
+$messages['br'] = array(
+ 'wikieditor' => 'Etrefas kemmañ wikitestenn klokaet',
+ 'wikieditor-desc' => "Poruchas a ra un etrefas kemmañ wikitestenn astennidik ha meur a arc'hwel all.",
+ 'wikieditor-wikitext-tab' => 'Wikitestenn',
+ 'wikieditor-loading' => 'O kargañ',
+ 'wikieditor-preview-preference' => 'Gweredekaat ar rakweled skoaz-ouzh-skoaz',
+ 'wikieditor-preview-tab' => 'Rakwelet',
+ 'wikieditor-preview-changes-tab' => 'Kemmoù',
+ 'wikieditor-preview-loading' => 'O kargañ...',
+ 'wikieditor-previewDialog-preference' => 'Gweredekaat prenestr kendivizout ar rakweled',
+ 'wikieditor-previewDialog-tab' => 'Rakwelet',
+ 'wikieditor-previewDialog-loading' => 'O kargañ...',
+ 'wikieditor-publish-preference' => 'Gweredekaat an embann pazenn-ha-pazenn',
+ 'wikieditor-publish-button-publish' => 'Embann',
+ 'wikieditor-publish-button-cancel' => 'Nullañ',
+ 'wikieditor-publish-dialog-title' => 'Embann war {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => "Aozañ an diverrañ (deskrivañ berr-ha-berr ar c'hemmoù degaset ganeoc'h) :",
+ 'wikieditor-publish-dialog-minor' => 'Kemmig dister',
+ 'wikieditor-publish-dialog-watch' => 'Evezhiañ ar bajenn-mañ',
+ 'wikieditor-publish-dialog-publish' => 'Embann',
+ 'wikieditor-publish-dialog-goback' => 'Distreiñ',
+ 'wikieditor-template-editor-preference' => "Gweredekaat ar c'hemmañ partromoù wiki diwar furmskridoù",
+ 'wikieditor-template-editor-dialog-title' => 'Kemmañ ar patrom',
+ 'wikieditor-template-editor-dialog-submit' => 'Hizivaat',
+ 'wikieditor-template-editor-dialog-cancel' => 'Nullañ',
+ 'wikieditor-templates-preference' => "Gweredekaat ar c'huzhat patromoù",
+ 'wikieditor-toc-preference' => 'Gweredekaat an daolenn verdeüs',
+ 'wikieditor-toc-show' => 'Diskouez an danvez',
+ 'wikieditor-toc-hide' => 'Kuzhat an danvez',
+ 'wikieditor-toolbar' => 'Barrenn ostilhoù kemmañ',
+ 'wikieditor-toolbar-desc' => "Barrenn ostilhoù kemmañ aesoc'h da implijout",
+ 'wikieditor-toolbar-preference' => 'Gweredekaat ar varrenn ostilhoù kemmañ gwellaet',
+ 'wikieditor-toolbar-dialogs-preference' => 'Gweredekaat ar boestoù divizout evit ouzhpennañ liammoù, taolennoù ha traoù all',
+ 'wikieditor-toolbar-hidesig' => 'Kuzhat ar bouton sinañ er pajennoù zo en esaouenn anv pennañ',
+ 'wikieditor-toolbar-loading' => 'O kargañ...',
+ 'wikieditor-toolbar-tool-bold' => 'Tev',
+ 'wikieditor-toolbar-tool-bold-example' => 'Testenn dev',
+ 'wikieditor-toolbar-tool-italic' => 'Italek',
+ 'wikieditor-toolbar-tool-italic-example' => 'Testenn italek',
+ 'wikieditor-toolbar-tool-ilink' => 'Liamm diabarzh',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Anv al liamm',
+ 'wikieditor-toolbar-tool-xlink' => 'Liamm diavaez (arabat disoñjal ar rakger http:// )',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com anv al liamm',
+ 'wikieditor-toolbar-tool-link' => 'Liamm',
+ 'wikieditor-toolbar-tool-link-title' => "Ensoc'hañ ul liamm",
+ 'wikieditor-toolbar-tool-link-int' => 'war-du ur bajenn wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Anv ar bajenn :',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titl pe URL ar bajenn',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Testenn al liamm :',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Ebarzhit an destenn da vezañ diskwelet',
+ 'wikieditor-toolbar-tool-link-ext' => 'War-du ur bajenn web diavaez',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL al liamm :',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Testenn al liamm :',
+ 'wikieditor-toolbar-tool-link-insert' => "Ensoc'hañ al liamm",
+ 'wikieditor-toolbar-tool-link-cancel' => 'Nullañ',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => "Bez' ez eus eus ar bajenn-mañ",
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => "Ar bajenn-mañ n'eus ket anezhi",
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Titl direizh',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Liamm diavaez',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'O wiriañ hag-eñ ez eus eus ar bajenn...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => "Kamm eo an titl hoc'h eus merket.",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "Seblantout kas ul liamm davet ur bajenn all eus ar wiki a ra an URL lakaet ganeoc'h.
+Hag ul liamm diabarzh eo a fell deoc'h lakaat?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Liamm diabarzh',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Liamm diavaez',
+ 'wikieditor-toolbar-tool-link-empty' => "N'hoc'h eus merket netra a c'haller sevel liammoù outañ.",
+ 'wikieditor-toolbar-tool-file' => 'Restr enframmet',
+ 'wikieditor-toolbar-tool-file-example' => 'Skouer.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Daveenn',
+ 'wikieditor-toolbar-tool-reference-example' => "Ensoc'hañ amañ testenn notenn traoñ pajenn",
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Nullañ',
+ 'wikieditor-toolbar-tool-reference-title' => "Ensoc'hañ un daveenn",
+ 'wikieditor-toolbar-tool-reference-insert' => "Ensoc'hañ",
+ 'wikieditor-toolbar-tool-reference-text' => 'Testenn an daveenn',
+ 'wikieditor-toolbar-tool-signature' => 'Sinadur ha deiziad',
+ 'wikieditor-toolbar-section-advanced' => 'Araokaet',
+ 'wikieditor-toolbar-tool-heading' => 'Titl',
+ 'wikieditor-toolbar-tool-heading-1' => 'Live 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Live 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Live 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Live 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Live 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Testenn an titl',
+ 'wikieditor-toolbar-group-format' => 'Furmad',
+ 'wikieditor-toolbar-tool-ulist' => 'Roll padelliget',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Elfenn eus ar roll padelliget',
+ 'wikieditor-toolbar-tool-olist' => 'Roll niverennet',
+ 'wikieditor-toolbar-tool-olist-example' => 'Elfenn eus ar roll niverennet',
+ 'wikieditor-toolbar-tool-indent' => 'Endantadur',
+ 'wikieditor-toolbar-tool-indent-example' => 'Linenn endantet',
+ 'wikieditor-toolbar-tool-nowiki' => 'Hep ereadur wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => "Ensoc'hañ amañ un destenn difurmad",
+ 'wikieditor-toolbar-tool-redirect' => 'Adkas',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Anv ar bajenn bal',
+ 'wikieditor-toolbar-tool-big' => 'Bras',
+ 'wikieditor-toolbar-tool-big-example' => 'Mell testenn',
+ 'wikieditor-toolbar-tool-small' => 'Bihan',
+ 'wikieditor-toolbar-tool-small-example' => 'Testennig',
+ 'wikieditor-toolbar-tool-superscript' => 'Gallouter',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Testenn e gallouter',
+ 'wikieditor-toolbar-tool-subscript' => 'Feur',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Testenn e feur',
+ 'wikieditor-toolbar-group-insert' => "Ensoc'hañ",
+ 'wikieditor-toolbar-tool-gallery' => 'Skeudennaoueg',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Skouer.jpg|Deskrivadur1
+$1:Skouer.jpg|Deskrivadur2',
+ 'wikieditor-toolbar-tool-newline' => 'Linenn nevez',
+ 'wikieditor-toolbar-tool-table' => 'Taolenn',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! talbenn 1
+! talbenn 2
+! talbenn 3
+|-
+| linenn 1, kellig 1
+| linenn 1, kellig 2
+| linenn 1, kellig 3
+|-
+| linenn 2, kellig 1
+| linenn 2, kellig 2
+| linenn 2, kellig 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Tenstenn er gellig',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Testenn an talbenn',
+ 'wikieditor-toolbar-tool-table-title' => "Ensoc'hañ un daolenn",
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Linennoù',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Bannoù',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Lakaat al linenn dalbenn e-barzh',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stil gant bevennoù',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Kinnig urzhiañ roadennoù an daolenn',
+ 'wikieditor-toolbar-tool-table-example' => 'Testenn er gellig',
+ 'wikieditor-toolbar-tool-table-preview' => 'Rakwelet',
+ 'wikieditor-toolbar-tool-table-insert' => "Ensoc'hañ",
+ 'wikieditor-toolbar-tool-table-cancel' => 'Nullañ',
+ 'wikieditor-toolbar-tool-table-toomany' => "N'haller ket ensoc'hañ un daolenn enni muioc'h eget $1 kellig gant an ostilh-mañ.",
+ 'wikieditor-toolbar-tool-table-invalidnumber' => "Merket hoc'h eus un niver a linennoù pe a vannoù direizh.",
+ 'wikieditor-toolbar-tool-table-zero' => "N'hallit ket ensoc'hañ un daolenn hep bann na linenn.",
+ 'wikieditor-toolbar-tool-replace' => "Klask hag erlec'hiañ",
+ 'wikieditor-toolbar-tool-replace-title' => "Klask hag erlec'hiañ",
+ 'wikieditor-toolbar-tool-replace-search' => 'Klask :',
+ 'wikieditor-toolbar-tool-replace-replace' => "Erlec'hiañ gant :",
+ 'wikieditor-toolbar-tool-replace-case' => "Diforc'hañ Pennlizherennoù/Lizherennoù bihan",
+ 'wikieditor-toolbar-tool-replace-regex' => 'Sellet ouzh ar chadennad klask evel ouzh ur jedad reoliek',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Kavout an hini da-heul',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => "Erlec'hiañ an hini da-heul",
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => "Erlec'hiañ pep tra",
+ 'wikieditor-toolbar-tool-replace-close' => 'Serriñ',
+ 'wikieditor-toolbar-tool-replace-nomatch' => "N'eus bet kavet netra o klotañ gant ar pezh a glaskit.",
+ 'wikieditor-toolbar-tool-replace-success' => "$1 erlec'hiadenn graet",
+ 'wikieditor-toolbar-tool-replace-emptysearch' => "N'hoc'h eus ebarzhet netra da glask.",
+ 'wikieditor-toolbar-tool-replace-invalidregex' => "Direizh eo ar jedad reoliek hoc'h eus lakaet : $1",
+ 'wikieditor-toolbar-section-characters' => 'Arouezennoù dibar',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin astennet',
+ 'wikieditor-toolbar-characters-page-ipa' => 'LFE (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Arouezennoù',
+ 'wikieditor-toolbar-characters-page-greek' => 'Gresianek',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kirillek',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabek',
+ 'wikieditor-toolbar-characters-page-persian' => 'Perseg',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebraek',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Banglaek',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telougou',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laoseg',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Skoazell',
+ 'wikieditor-toolbar-help-heading-description' => 'Deskrivadur',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Ar pezh a skrivit',
+ 'wikieditor-toolbar-help-heading-result' => "An disoc'h war-lerc'h",
+ 'wikieditor-toolbar-help-page-format' => 'Furmadiñ',
+ 'wikieditor-toolbar-help-page-link' => 'Liammoù',
+ 'wikieditor-toolbar-help-page-heading' => 'Titloù',
+ 'wikieditor-toolbar-help-page-list' => 'Rolloù',
+ 'wikieditor-toolbar-help-page-file' => 'Restroù',
+ 'wikieditor-toolbar-help-page-reference' => 'Daveennoù',
+ 'wikieditor-toolbar-help-page-discussion' => 'Kaozeadenn',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Italek',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Testenn italek''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Testenn italek</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Tev',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Testenn dev'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Testenn dev</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Tev &amp; italek',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Testenn dev hag italek'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Testenn dev &amp; italek</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Liamm diabarzh',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Titl ar bajenn|Testenn al liamm]]<br />[[Titl ar bajenn]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Testenn al liamm</a><br /><a href='#'>Titl ar bajenn</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Liamm diavaez',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Testenn al liamm]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Testenn al liamm</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Titl a eil live',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Testenn an titl ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Testenn an titl</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Titl a drede live',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Testenn an titl ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Testenn an titl</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Titl a bevare live',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Testenn an titl ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Testenn an titl</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Titl a bempvet live',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Testenn an titl =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Testenn an titl</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Roll padelliget',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Elfenn eus ar roll<br />* Elfenn eus ar roll',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Elfenn eus ar roll</li><li>Elfenn eus ar roll</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Roll niverennet',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Elfenn eus ar roll<br /># Elfenn eus ar roll',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Elfenn eus ar roll</li><li>Elfenn eus ar roll</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Restr enframmet',
+ 'wikieditor-toolbar-help-content-file-syntax' => "[[$1:Example.png|thumb|Alc'hwez ar skeudenn]]",
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Testenn an alc'hwez' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Brasaat' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Testenn an alc'hwez</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Daveenn',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Testenn ar bajenn.&lt;ref name="test"&gt;[http://www.example.org testenn al liamm], testenn ouzhpenn.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Testenn ar bajenn.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Adimplij eus an hevelep daveenn',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Testenn ar bajenn.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Dispakañ an daveennoù',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Anv al liamm</a>, testenn ouzhpenn.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Sinadur gant an deiziad',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Anv implijer</a> (<a href='#' title='{{#special:mytalk}}'>kaozeal</a>) 15:54, 10 Mezheven 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Sinadur',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Anv implijer</a> (<a href='#' title='{{#special:mytalk}}'>kaozeal</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Endantadur',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Testenn normal<br />:Testenn endantet<br />::Testenn endantet',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Testenn normal<dl><dd>Testenn endantet<dl><dd>Testenn endantet</dd></dl></dd></dl>',
+);
+
+/** Bosnian (Bosanski)
+ * @author CERminator
+ * @author Palapa
+ */
+$messages['bs'] = array(
+ 'wikieditor' => 'Napredni interfejs za uređivanje wikiteksta',
+ 'wikieditor-desc' => 'Omogućava proširivi interfejs za uređivanje wikiteksta i mnoge module sa brojnim mogućnostima',
+ 'wikieditor-wikitext-tab' => 'Wikitekst',
+ 'wikieditor-loading' => 'UÄitavanje',
+ 'wikieditor-preview-preference' => 'Omogući pretpregled s obje strane',
+ 'wikieditor-preview-tab' => 'Pregled',
+ 'wikieditor-preview-changes-tab' => 'Promjene',
+ 'wikieditor-preview-loading' => 'UÄitavam...',
+ 'wikieditor-previewDialog-preference' => 'Omogući dijalog pretpregleda',
+ 'wikieditor-previewDialog-tab' => 'Pregled',
+ 'wikieditor-previewDialog-loading' => 'UÄitavam...',
+ 'wikieditor-publish-preference' => 'Omogući objavljivanje u koracima',
+ 'wikieditor-publish-button-publish' => 'Objavi',
+ 'wikieditor-publish-button-cancel' => 'Odustani',
+ 'wikieditor-publish-dialog-title' => 'Objavi na {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Uredi sažetak (kratko opiÅ¡i izmjene koje ste naÄinili):',
+ 'wikieditor-publish-dialog-minor' => 'mala izmjena',
+ 'wikieditor-publish-dialog-watch' => 'Prati ovu stranicu',
+ 'wikieditor-publish-dialog-publish' => 'Objavi',
+ 'wikieditor-publish-dialog-goback' => 'Vrati se nazad',
+ 'wikieditor-template-editor-preference' => 'Omogućava uređivanje wiki šablon putem obrazaca',
+ 'wikieditor-template-editor-dialog-title' => 'Uredi Å¡ablon',
+ 'wikieditor-template-editor-dialog-submit' => 'Ažuriraj',
+ 'wikieditor-template-editor-dialog-cancel' => 'Odustani',
+ 'wikieditor-templates-preference' => 'Omogući sakrivanje sadržaja šablona',
+ 'wikieditor-toc-preference' => 'Omogući navigacijski sadržaj',
+ 'wikieditor-toc-show' => 'Pokaži sadržaj',
+ 'wikieditor-toc-hide' => 'Sakrij sadržaj',
+ 'wikieditor-toolbar' => 'Uređivanje alatne trake',
+ 'wikieditor-toolbar-desc' => 'Alatna traka stranice za uređivanje sa poboljšanom upotrebljivošću',
+ 'wikieditor-toolbar-preference' => 'Omogući naprednu traku za uređivanje',
+ 'wikieditor-toolbar-dialogs-preference' => 'Omogući dijaloge za dodavanje linkova, tabela i više',
+ 'wikieditor-toolbar-hidesig' => 'Sakrij dugme potpisa sa stranica u glavnom imenskom prostoru',
+ 'wikieditor-toolbar-loading' => 'Punjenje...',
+ 'wikieditor-toolbar-tool-bold' => 'Podebljano',
+ 'wikieditor-toolbar-tool-bold-example' => 'Podebljan tekst',
+ 'wikieditor-toolbar-tool-italic' => 'Ukošeno',
+ 'wikieditor-toolbar-tool-italic-example' => 'Ukošeni tekst',
+ 'wikieditor-toolbar-tool-ilink' => 'Unutrašnji link',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Naslov linka',
+ 'wikieditor-toolbar-tool-xlink' => 'Vanjski link (zapamtite prefiks http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com naslov linka',
+ 'wikieditor-toolbar-tool-link' => 'Link',
+ 'wikieditor-toolbar-tool-link-title' => 'Ubaci link',
+ 'wikieditor-toolbar-tool-link-int' => 'Na wiki stranicu',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Naslov stranice:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Naslov stranice ili URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Tekst linka:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Unesite tekst koji bi trebao biti prikazan',
+ 'wikieditor-toolbar-tool-link-ext' => 'Na vanjsku web stranicu',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL linka:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Tekst linka:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Ubaci link',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Odustani',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Stranica postoji',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Stranica ne postoji',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Nevaljan naslov',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Vanjski link',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Provjeravam postojanje stranice...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Naslov koji ste unijeli je nevaljan.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL koji ste naveli izgleda da je prepoznat kao link na drugu wiki stranicu.
+Da li želite napraviti interni link?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Unutrašnji link',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Vanjski link',
+ 'wikieditor-toolbar-tool-link-empty' => 'Niste unijeli ništa za linkovanje.',
+ 'wikieditor-toolbar-tool-file' => 'Uklopljena datoteka',
+ 'wikieditor-toolbar-tool-file-example' => 'Primjer.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Reference',
+ 'wikieditor-toolbar-tool-reference-example' => 'Ubaci tekst fusnote ovdje',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Odustani',
+ 'wikieditor-toolbar-tool-reference-title' => 'Unesi referencu',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Unesi',
+ 'wikieditor-toolbar-tool-reference-text' => 'Tekst reference',
+ 'wikieditor-toolbar-tool-signature' => 'Potpis i vrijeme',
+ 'wikieditor-toolbar-section-advanced' => 'Napredno',
+ 'wikieditor-toolbar-tool-heading' => 'Naslov',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivo 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivo 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivo 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivo 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivo 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Tekst naslova',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Uređeni spisak',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Stavka uređenog spiska',
+ 'wikieditor-toolbar-tool-olist' => 'Numerisani spisak',
+ 'wikieditor-toolbar-tool-olist-example' => 'Stavka numerisanog spiska',
+ 'wikieditor-toolbar-tool-indent' => 'Uvlaka',
+ 'wikieditor-toolbar-tool-indent-example' => 'Linija uvlake',
+ 'wikieditor-toolbar-tool-nowiki' => 'Nema wiki formatiranja',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Unesi neformatirani tekst ovdje',
+ 'wikieditor-toolbar-tool-redirect' => 'Preusmjeri',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ime ciljne stranice',
+ 'wikieditor-toolbar-tool-big' => 'Veliko',
+ 'wikieditor-toolbar-tool-big-example' => 'Povećan tekst',
+ 'wikieditor-toolbar-tool-small' => 'Smanjeno',
+ 'wikieditor-toolbar-tool-small-example' => 'Smanjen tekst',
+ 'wikieditor-toolbar-tool-superscript' => 'Eksponent',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Tekst eksponenta',
+ 'wikieditor-toolbar-tool-subscript' => 'Indeks',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Tekst indeksa',
+ 'wikieditor-toolbar-group-insert' => 'Ubaci',
+ 'wikieditor-toolbar-tool-gallery' => 'Galerija slika',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Opis1
+$1:Example.jpg|Opis2',
+ 'wikieditor-toolbar-tool-newline' => 'Nova linija',
+ 'wikieditor-toolbar-tool-table' => 'Tabela',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! naslov 1
+! naslov 2
+! naslov 3
+|-
+| red 1, ćelija 1
+| red 1, ćelija 2
+| red 1, ćelija 3
+|-
+| red 2, ćelija 1
+| red 2, ćelija 2
+| red 2, ćelija 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Tekst ćelije',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Tekst zaglavlja',
+ 'wikieditor-toolbar-tool-table-title' => 'Ubaci tabelu',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Redovi',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolone',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'UkljuÄi red zaglavlja',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stil sa okvirima',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Napravi sortirajuću tabelu',
+ 'wikieditor-toolbar-tool-table-example' => 'Tekst ćelije',
+ 'wikieditor-toolbar-tool-table-preview' => 'Pregled',
+ 'wikieditor-toolbar-tool-table-insert' => 'Ubaci',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Odustani',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Ubacivanje tabele sa više od $1 ćelija nije moguće putem ovog dijaloga.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Niste unijeli valjan broj redova ili kolona.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ne možete unijeti tabelu bez redova ili kolona.',
+ 'wikieditor-toolbar-tool-replace' => 'Pronađi i zamijeni',
+ 'wikieditor-toolbar-tool-replace-title' => 'Nađi i zamijeni',
+ 'wikieditor-toolbar-tool-replace-search' => 'Pretraži:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Zamijeni sa:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Razlikuj velika i mala slova',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Smatraj traženi pojam kao regularni izraz',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Nađi slijedeći',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Zamijeni slijedeći',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Zamijeni sve',
+ 'wikieditor-toolbar-tool-replace-close' => 'Zatvori',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Vaša pretraga nije dala nijedan rezultat.',
+ 'wikieditor-toolbar-tool-replace-success' => 'NaÄinjeno $1 izmjena.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Niste unijeli ništa za pretragu.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Regularni izraz koji ste unijeli nije valjan: $1',
+ 'wikieditor-toolbar-section-characters' => 'Posebni znakovi',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latinica',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Prošireni latinski',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simboli',
+ 'wikieditor-toolbar-characters-page-greek' => 'GrÄki',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Ćirilica',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arapski',
+ 'wikieditor-toolbar-characters-page-persian' => 'Perzijski',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebrejski',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangladeški',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tajlandski',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laoški',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Kmerski',
+ 'wikieditor-toolbar-section-help' => 'Pomoć',
+ 'wikieditor-toolbar-help-heading-description' => 'Opis',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Å ta upisujete',
+ 'wikieditor-toolbar-help-heading-result' => 'Å ta dobijate',
+ 'wikieditor-toolbar-help-page-format' => 'Formatiranje',
+ 'wikieditor-toolbar-help-page-link' => 'Linkovi',
+ 'wikieditor-toolbar-help-page-heading' => 'Naslovi',
+ 'wikieditor-toolbar-help-page-list' => 'Spiskovi',
+ 'wikieditor-toolbar-help-page-file' => 'Datoteke',
+ 'wikieditor-toolbar-help-page-reference' => 'Reference',
+ 'wikieditor-toolbar-help-page-discussion' => 'Razgovor',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kurziv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Ukošen tekst''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Ukošen tekst</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Podebljano',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Podebljan tekst'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Podebljan tekst</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Podebljano &amp; ukošeno',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Podebljan &amp; ukošen tekst'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Podebljan &amp; ukošen tekst</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Unutrašnji link',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Naslov stranice|Naslov linka]]<br />[[Naslov stranice]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Naslov linka</a><br /><a href='#'>Naslov stranice</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Vanjski link',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Naslov linka]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Naslov linka</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Naslov 2. nivoa',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Tekst naslova ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Tekst naslova</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Naslov 3. nivoa',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Tekst naslova ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Tekst naslova</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Naslov 4. nivoa',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Tekst naslova ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Tekst naslova</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Naslov 5. nivoa',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Tekst naslova =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Tekst naslova</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Uređeni spisak',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Stavka spiska<br />* Stavka spiska',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Stavka spiska</li><li>Stavka spiska</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Numerisani spisak',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Stavka spiska<br /># Stavka spiska',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Stavka spiska</li><li>Stavka spiska</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Uklopljena datoteka',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Opis slike]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Opis slike' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Uvećajte' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Opis slike</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Reference',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Tekst stranice.&lt;ref name="test"&gt;[http://www.example.org Tekst linka], dodatni tekst.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Tekst stranice.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Dodatna upotreba istog izvora',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Tekst stranice.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Prikaži izvore',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Tekst linka</a>, dodatni tekst.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Potpis s trenutnim vremenom',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>KorisniÄko ime</a> (<a href='#' title='{{#special:mytalk}}'>Razgovor</a>) 15:54, 10. juni 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Potpis',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>KorisniÄko ime</a> (<a href='#' title='{{#special:mytalk}}'>razgovor</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'UvuÄeno',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'ObiÄni tekst<br />:UvuÄeni tekst<br />::UvuÄeni tekst',
+ 'wikieditor-toolbar-help-content-indent-result' => 'ObiÄni tekst<dl><dd>UvuÄeni tekst<dl><dd>UvuÄeni tekst</dd></dl></dd></dl>',
+);
+
+/** Catalan (Català)
+ * @author Martorell
+ * @author Paucabot
+ * @author SMP
+ * @author Solde
+ * @author Vriullop
+ */
+$messages['ca'] = array(
+ 'wikieditor' => 'Interfície avançada de modificació de wikitext',
+ 'wikieditor-desc' => 'Proporciona una interfície extensible de modificació de wikitext i diversos mòduls de funcionalitats',
+ 'wikieditor-wikitext-tab' => 'Wikitext',
+ 'wikieditor-loading' => 'Carregant',
+ 'wikieditor-preview-preference' => 'Habilita la previsualització costat per costat',
+ 'wikieditor-preview-tab' => 'Previsualització',
+ 'wikieditor-preview-changes-tab' => 'Canvis',
+ 'wikieditor-preview-loading' => 'Carregant ...',
+ 'wikieditor-previewDialog-preference' => 'Activa el diàleg de vista prèvia',
+ 'wikieditor-previewDialog-tab' => 'Previsualització',
+ 'wikieditor-previewDialog-loading' => 'Carregant ...',
+ 'wikieditor-publish-preference' => 'Habilita la publicació pas a pas',
+ 'wikieditor-publish-button-publish' => 'Publica',
+ 'wikieditor-publish-button-cancel' => 'Anuŀla',
+ 'wikieditor-publish-dialog-title' => 'Publicar a {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => "Resum d'edició (descriviu breument els canvis realitzats):",
+ 'wikieditor-publish-dialog-minor' => 'Modificació menor',
+ 'wikieditor-publish-dialog-watch' => 'Vigila aquesta pàgina',
+ 'wikieditor-publish-dialog-publish' => 'Publica',
+ 'wikieditor-publish-dialog-goback' => 'Torna',
+ 'wikieditor-template-editor-preference' => "Permetre l'edició basada en formularis de plantilles",
+ 'wikieditor-template-editor-dialog-title' => 'Modifica la plantilla',
+ 'wikieditor-template-editor-dialog-submit' => 'Actualitza',
+ 'wikieditor-template-editor-dialog-cancel' => 'Anuŀla',
+ 'wikieditor-templates-preference' => 'Habilita el replegament de plantilles',
+ 'wikieditor-toc-preference' => 'Habilita la taula de continguts navegable',
+ 'wikieditor-toc-show' => 'Mostra el contingut',
+ 'wikieditor-toc-hide' => 'Amaga el contingut',
+ 'wikieditor-toolbar' => "Editant la barra d'eines",
+ 'wikieditor-toolbar-desc' => "Barra d'eines d'edició amb usabilitat millorada",
+ 'wikieditor-toolbar-preference' => "Habilita la barra d'eines millorada",
+ 'wikieditor-toolbar-dialogs-preference' => 'Habilita caixes de diàleg per inserir enllaços, taules i altres',
+ 'wikieditor-toolbar-loading' => 'Carregant...',
+ 'wikieditor-toolbar-tool-bold' => 'Negreta',
+ 'wikieditor-toolbar-tool-bold-example' => 'Text en negreta',
+ 'wikieditor-toolbar-tool-italic' => 'Cursiva',
+ 'wikieditor-toolbar-tool-italic-example' => 'Text en cursiva',
+ 'wikieditor-toolbar-tool-ilink' => 'Enllaç intern',
+ 'wikieditor-toolbar-tool-ilink-example' => "Títol de l'enllaç",
+ 'wikieditor-toolbar-tool-xlink' => 'Enllaç extern (recordeu el prefix http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => "http://www.example.org títol de l'enllaç",
+ 'wikieditor-toolbar-tool-link' => 'Enllaç',
+ 'wikieditor-toolbar-tool-link-title' => 'Insereix un enllaç',
+ 'wikieditor-toolbar-tool-link-int' => 'A una pàgina del wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => "Nom de l'article:",
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Títol de la pàgina o URL',
+ 'wikieditor-toolbar-tool-link-int-text' => "Text de l'enllaç:",
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Text a mostrar',
+ 'wikieditor-toolbar-tool-link-ext' => 'A una pàgina web externa',
+ 'wikieditor-toolbar-tool-link-ext-target' => "URL de l'enllaç",
+ 'wikieditor-toolbar-tool-link-ext-text' => "Text de l'enllaç:",
+ 'wikieditor-toolbar-tool-link-insert' => 'Insereix un enllaç',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Canceŀla',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'La pàgina existeix',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'La pàgina no existeix',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Títol no vàlid',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Enllaç extern',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "Comprovació de l'existència de la pàgina ...",
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'El títol que heu especificat no és vàlid.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "L'URL que heu especificat sembla que enllaça a una altra pàgina del wiki.
+Voleu convertir-lo en un enllaç intern?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Enllaç intern',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Enllaç extern',
+ 'wikieditor-toolbar-tool-link-empty' => 'No heu entrat res per enllaçar.',
+ 'wikieditor-toolbar-tool-file' => 'Fitxer incrustat',
+ 'wikieditor-toolbar-tool-file-example' => 'Exemple.png',
+ 'wikieditor-toolbar-tool-reference' => 'Referència',
+ 'wikieditor-toolbar-tool-reference-example' => 'Inseriu la nota al peu aquí',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Cancel·la',
+ 'wikieditor-toolbar-tool-reference-title' => 'Inserir una referència',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Insereix',
+ 'wikieditor-toolbar-tool-reference-text' => 'Text de la referència',
+ 'wikieditor-toolbar-tool-signature' => 'Signatura, data i hora',
+ 'wikieditor-toolbar-section-advanced' => 'Avançat',
+ 'wikieditor-toolbar-tool-heading' => 'Encapçalament',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivell 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivell 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivell 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivell 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivell 5',
+ 'wikieditor-toolbar-tool-heading-example' => "Text d'encapçalament",
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Llista puntejada',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Element de la llista puntejada',
+ 'wikieditor-toolbar-tool-olist' => 'Llista numerada',
+ 'wikieditor-toolbar-tool-olist-example' => 'Element de la llista numerada',
+ 'wikieditor-toolbar-tool-indent' => 'Sagnat',
+ 'wikieditor-toolbar-tool-indent-example' => 'Línia sagnada',
+ 'wikieditor-toolbar-tool-nowiki' => 'Sense format wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Inseriu aquí un text sense format',
+ 'wikieditor-toolbar-tool-redirect' => 'Redirecció',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nom de la pàgina destinació',
+ 'wikieditor-toolbar-tool-big' => 'Gran',
+ 'wikieditor-toolbar-tool-big-example' => 'Text gran',
+ 'wikieditor-toolbar-tool-small' => 'Petit',
+ 'wikieditor-toolbar-tool-small-example' => 'Text petit',
+ 'wikieditor-toolbar-tool-superscript' => 'Superíndex',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Text en superíndex',
+ 'wikieditor-toolbar-tool-subscript' => 'Subíndex',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Text en subíndex',
+ 'wikieditor-toolbar-group-insert' => 'Insereix',
+ 'wikieditor-toolbar-tool-gallery' => "Galeria d'imatges",
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Peu1
+$1:Example.jpg|Peu2',
+ 'wikieditor-toolbar-tool-newline' => 'Nova línia',
+ 'wikieditor-toolbar-tool-table' => 'Taula',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! capçalera 1
+! capçalera 2
+! capçalera 3
+|-
+| fila 1, cel·la 1
+| fila 1, cel·la 2
+| fila 1, cel·la 3
+|-
+| fila 2, cel·la 1
+| fila 2, cel·la 2
+| fila 2, cel·la 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Text de cel·la',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Text de capçalera',
+ 'wikieditor-toolbar-tool-table-title' => 'Insereix una taula',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Files',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Columnes',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => "Amb una fila d'encapçalament",
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Estil amb vores',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Taula ordenable',
+ 'wikieditor-toolbar-tool-table-example' => 'Text de cel·la',
+ 'wikieditor-toolbar-tool-table-preview' => 'Previsualització',
+ 'wikieditor-toolbar-tool-table-insert' => 'Insereix',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Anuŀla',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Amb aquesta caixa de diàleg no és possible inserir una taula amb més de $1 ceŀles.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'No heu introduït un nombre vàlid de files o columnes.',
+ 'wikieditor-toolbar-tool-table-zero' => 'No podeu inserir una taula amb zero files o columnes.',
+ 'wikieditor-toolbar-tool-replace' => 'Cerca i reemplaça',
+ 'wikieditor-toolbar-tool-replace-title' => 'Cerca i reemplaça',
+ 'wikieditor-toolbar-tool-replace-search' => 'Cerca:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Reemplaça per:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Distingeix majúscules/minúscules',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Tracta la cadena de cerca com una expressió regular',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Cerca següent',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Substitueix següent',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Substitueix-ho tot',
+ 'wikieditor-toolbar-tool-replace-close' => 'Tanca',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'La vostra cerca no ha trobat cap coincidència.',
+ 'wikieditor-toolbar-tool-replace-success' => "S'han fet $1 substitucions.",
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'No heu introduït res per a cercar.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => "L'expressió regular que heu introduït no és vàlida: $1",
+ 'wikieditor-toolbar-section-characters' => 'Caràcters especials',
+ 'wikieditor-toolbar-characters-page-latin' => 'Llatí',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Llatí ampliat',
+ 'wikieditor-toolbar-characters-page-ipa' => 'AFI',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Símbols',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grec',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Ciríŀlic',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Aràbic',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persa',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebreu',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalí',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tailandès',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laosià',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Ajuda',
+ 'wikieditor-toolbar-help-heading-description' => 'Descripció',
+ 'wikieditor-toolbar-help-heading-syntax' => 'El que teclegeu',
+ 'wikieditor-toolbar-help-heading-result' => 'El que obteniu',
+ 'wikieditor-toolbar-help-page-format' => 'Format',
+ 'wikieditor-toolbar-help-page-link' => 'Enllaços',
+ 'wikieditor-toolbar-help-page-heading' => 'Encapçalaments',
+ 'wikieditor-toolbar-help-page-list' => 'Llistes',
+ 'wikieditor-toolbar-help-page-file' => 'Fitxers',
+ 'wikieditor-toolbar-help-page-reference' => 'Referències',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discussió',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Cursiva',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Text en cursiva''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Text en cursiva</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Negreta',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Text en negreta'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Text en negreta</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Negreta i cursiva',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Text en negreta i cursiva'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Text en negreta i cursiva</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Enllaç intern',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => "[[Nom de la pàgina|Nom de l'enllaç]]<br />[[Nom de la pàgina]]",
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Nom de l'enllaç</a><br /><a href='#'>Nom de la pàgina</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Enllaç extern',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => "[http://www.example.org Nom de l'enllaç]<br />[http://www.example.org]<br />http://www.example.org",
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Títol de l'enllaç</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Encapçalament de 2n nivell',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => "==Text de l'encapçalament==",
+ 'wikieditor-toolbar-help-content-heading2-result' => "<h2>Text de l'encapçalament</h2>",
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Encapçalament de 3r nivell',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => "===Text de l'encapçalament===",
+ 'wikieditor-toolbar-help-content-heading3-result' => "<h3>Text de l'encapçalament</h3>",
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Encapçalament de 4t nivell',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => "====Text de l'encapçalament====",
+ 'wikieditor-toolbar-help-content-heading4-result' => "<h4>Text de l'encapçalament</h4>",
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Encapçalament de 5è nivell',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => "=====Text de l'encapçalament=====",
+ 'wikieditor-toolbar-help-content-heading5-result' => "<h5>Text de l'encapçalament</h5>",
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Llista puntejada',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Element de la llista<br />* Element de la llista',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Element de la llista</li><li>Element de la llista</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Llista numerada',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Element de la llista<br /># Element de la llista',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Element de la llista</li><li>Element de la llista</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Fitxer incrustat',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Text descriptiu de la imatge]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Llegenda</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referències',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Text de la pàgina.&lt;ref name="test"&gt;[http://www.exemple.cat Nom de l\'enllaç], text addicional.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Text de la pàgina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Ús addicional de la mateixa referència',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Text de la pàgina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Mostra les referències',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.exemple.cat' class='external text' href='#'>Nom de l'enllaç</a>, text addicional.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Signatura, data i hora',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nom d'usuari</a> (<a href='#' title='{{#special:mytalk}}'>discussió</a>) 15:54, 10 de juny de 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signatura',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nom d'usuari</a> (<a href='#' title='{{#special:mytalk}}'>discussió</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Sagnat',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Text normal<br />:Text sagnat<br />::Text sagnat',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Text normal<dl><dd>Text sagnat<dl><dd>Text sagnat</dd></dl></dd></dl>',
+);
+
+/** Chechen (Ðохчийн)
+ * @author Sasan700
+ */
+$messages['ce'] = array(
+ 'wikieditor' => 'Викийозан рéдоккхучечохь аллÑам чулоцург',
+ 'wikieditor-desc' => 'Ðьтто бо Ñ‚lе хуттучо, викийозан аъ ишта кхечу харжамна рéдоккхучечохь аллÑам чулоцучо',
+ 'wikieditor-wikitext-tab' => 'Викийоза',
+ 'wikieditor-loading' => 'Чуйолуш',
+ 'wikieditor-preview-preference' => 'Латайé хьалха муха ю хьажар дуьхь дуьхьал',
+ 'wikieditor-preview-tab' => 'Хьалха муха ю хьажа',
+ 'wikieditor-preview-changes-tab' => 'Хийцамаш',
+ 'wikieditor-preview-loading' => 'Чуйолуш…',
+ 'wikieditor-previewDialog-preference' => 'Латайé йоза хьалха муха ду хьажар',
+ 'wikieditor-previewDialog-tab' => 'Хьалха муха ю хьажа',
+ 'wikieditor-previewDialog-loading' => 'Чуйолуш…',
+ 'wikieditor-publish-preference' => 'Латайé цхьац ког бокхуш чутохар',
+ 'wikieditor-publish-button-publish' => 'Ðахангайта',
+ 'wikieditor-publish-button-cancel' => 'Цаоьшу',
+ 'wikieditor-publish-dialog-title' => 'Ðахангайта оцу кхолламехь {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Хийцамах лаьцна (доц Ñзде Ñ…lу хийцам бина ахьа):',
+ 'wikieditor-publish-dialog-minor' => 'Жим хийцам',
+ 'wikieditor-publish-dialog-watch' => 'Тергам бé хlокху агlон',
+ 'wikieditor-publish-dialog-publish' => 'Ðахангайта',
+ 'wikieditor-publish-dialog-goback' => 'Юхьа',
+ 'wikieditor-template-editor-preference' => 'Латайé куцкепа рéдаккхар бáраман гlонца',
+ 'wikieditor-template-editor-dialog-title' => 'Куцкеп хийцам',
+ 'wikieditor-template-editor-dialog-submit' => 'КарлаÑккха',
+ 'wikieditor-template-editor-dialog-cancel' => 'Цаоьшу',
+ 'wikieditor-templates-preference' => 'Латедé куцкеп хьарчар',
+ 'wikieditor-toc-preference' => 'Латедé коьрта дерг шавигарна аттонца',
+ 'wikieditor-toc-show' => 'Гайта коьртехь дерг',
+ 'wikieditor-toc-hide' => 'Къайлахьо коьртехь дерг',
+ 'wikieditor-toolbar' => 'Рéдоккху меттиг',
+ 'wikieditor-toolbar-desc' => 'Рéдоккху меттиг гlоле лелорца',
+ 'wikieditor-toolbar-preference' => 'Латайé гlоле йолу рéдоккхург',
+ 'wikieditor-toolbar-dialogs-preference' => 'Латайé йозан хьажориг йуьллург, таблийцан аъ кхин хlумнашна',
+ 'wikieditor-toolbar-loading' => 'Чуйолуш…',
+ 'wikieditor-toolbar-tool-bold' => 'ДерÑтино',
+ 'wikieditor-toolbar-tool-bold-example' => 'ДерÑтино до йоза',
+ 'wikieditor-toolbar-tool-italic' => 'КурÑетта',
+ 'wikieditor-toolbar-tool-italic-example' => 'КурÑеттан до йоза',
+ 'wikieditor-toolbar-tool-ilink' => 'Чоьхьа хьажориг',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Хьажориган коьрта могlа',
+ 'wikieditor-toolbar-tool-xlink' => 'Ðрахьа хьажориг (йиц ма йе Ñ…lотталушерг http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com хьажориг корта',
+ 'wikieditor-toolbar-tool-link' => 'Хьажориг',
+ 'wikieditor-toolbar-tool-link-title' => 'Чуйилла хьажориг',
+ 'wikieditor-toolbar-tool-link-int' => 'Оцу вики агlон',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Хьажийна агlо йа URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Ðгlон цlе йа URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Гойтуш долу йоза:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Чудилла Ñхьагайта дезаш долу йоза',
+ 'wikieditor-toolbar-tool-link-ext' => 'Хьалхара агlон чохь',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL хьажоригаш:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Хьажориган йоза:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Чуйилла хьажориг',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Цаоьшу',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Ишта агlо йолш ю',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Ишта агlо Ñц',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Ца магайо цlе',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ðрахьа хьажориг',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Ðгlо ÑŽ Ñц хьоьжуш…',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Гойтуш йолу цlе ца магайо.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Ðхьа хоттийна URL кхечу вики-агlонан хьажоригах тера ÑŽ. Хьо лууш ву и хьажориг чоьхьарчех йа?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Чоьхьа хьажориг',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ðрахьа хьажориг',
+ 'wikieditor-toolbar-tool-link-empty' => 'Ðхьа ца гайтин мичхьа хьажойеза хьажориг.',
+ 'wikieditor-toolbar-tool-file' => 'Чохь йолу хlум',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Такхо',
+ 'wikieditor-toolbar-tool-reference-example' => 'Чудилла кхузе такхо деза йоза',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Цаоьшу',
+ 'wikieditor-toolbar-tool-reference-title' => 'Чудилла такхо',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Чудилла',
+ 'wikieditor-toolbar-tool-reference-text' => 'Такхо деза йоза',
+ 'wikieditor-toolbar-tool-signature' => 'Куьгтаlор хан хlоттош',
+ 'wikieditor-toolbar-section-advanced' => 'Кхин тlе дукха',
+ 'wikieditor-toolbar-tool-heading' => 'Корта',
+ 'wikieditor-toolbar-tool-heading-1' => 'Локхалла 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Локхалла 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Локхалла 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Локхалла 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Локхалла 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Коьрта йоза',
+ 'wikieditor-toolbar-group-format' => 'Бáрам',
+ 'wikieditor-toolbar-tool-ulist' => 'КъаÑтам бина могlам',
+ 'wikieditor-toolbar-tool-ulist-example' => 'КъаÑтам бина могlаман Ñ…lум',
+ 'wikieditor-toolbar-tool-olist' => 'Терахьца болу могlам',
+ 'wikieditor-toolbar-tool-olist-example' => 'Терахьца болу могlаман хlум',
+ 'wikieditor-toolbar-tool-indent' => 'Дlахило',
+ 'wikieditor-toolbar-tool-indent-example' => 'Могlа дlахилабо',
+ 'wikieditor-toolbar-tool-nowiki' => 'Тергал ца бо вики-бáрамхlоттор',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Чудилла кхузе йоза, бáрам хlотто ца оьшуш дерг',
+ 'wikieditor-toolbar-tool-redirect' => 'ДlаÑахьажор',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Хьжочу агlонан цlе',
+ 'wikieditor-toolbar-tool-big' => 'Доккха',
+ 'wikieditor-toolbar-tool-big-example' => 'Доккха йоза',
+ 'wikieditor-toolbar-tool-small' => 'Жима',
+ 'wikieditor-toolbar-tool-small-example' => 'Жима йоза',
+ 'wikieditor-toolbar-tool-superscript' => 'Могlан лакха',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Могlан лакхар йоза',
+ 'wikieditor-toolbar-tool-subscript' => 'Могlан буха',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Могlан бухар йоза',
+ 'wikieditor-toolbar-group-insert' => 'Диллар',
+ 'wikieditor-toolbar-tool-gallery' => 'Дуккха Ñуьрташ',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Цуьнах лаце1
+$1:Example.jpg|Цуьнах лаце2',
+ 'wikieditor-toolbar-tool-newline' => 'Керла могlа',
+ 'wikieditor-toolbar-tool-table' => 'Таблийца',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! коьрта могlа 1
+! коьрта могlа 2
+! коьрта могlа 3
+|-
+| могlа 1, чоь 1
+| могlа 1, чоь 2
+| могlа 1, чоь 3
+|-
+| могlа 2, чоь 1
+| могlа 2, чоь 2
+| могlа 2, чоь 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Чоьнан йоза',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Коьрта йоза',
+ 'wikieditor-toolbar-tool-table-title' => 'Чуйилла таблийца',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Могlнаш',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Бlогlамаш',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Тlетоха коьрта могlан могlа',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Кечйеш дозанашца',
+ 'wikieditor-toolbar-tool-table-sortable' => 'ЛиÑталуш йе таблийца',
+ 'wikieditor-toolbar-tool-table-example' => 'Чоьнан йоза',
+ 'wikieditor-toolbar-tool-table-preview' => 'Хьалха муха ю хьажа',
+ 'wikieditor-toolbar-tool-table-insert' => 'Чуйилла',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Цаоьшу',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Оцул чоьнаш йа аьтту ца болу, таблийцан чоьнашна бáрам $1 хоттало.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Ðхьа нийÑа ца хоттийн цхьатерра могlанаш ле бlогlамаш.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Хьога йиллалур Ñц таблийца йоцургца могlанаш ле бlогlамаш долуш.',
+ 'wikieditor-toolbar-tool-replace' => 'Лаха хийца аъ хуьйцуш',
+ 'wikieditor-toolbar-tool-replace-title' => 'Лаха хийца аъ хуьйцуш',
+ 'wikieditor-toolbar-tool-replace-search' => 'Лаха:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Хийца оцуьнца:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Яздар тидаме оьцуш',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Хилийта могlа юх-юха лохуш долу дош',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Караде тlаьхьадогlург',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Тlаьхьадогlург хийца',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Деригге хийца',
+ 'wikieditor-toolbar-tool-replace-close' => 'Дlачlагlа',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Хьан дехарца хlумма ца карийна.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Балийна хийцам: $1.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ðхьа ца гайтна Ñ…lу лаха деза.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Ðхьа Ñзйина цlе ÑŽÑ…-юха нийÑа Ñц: $1',
+ 'wikieditor-toolbar-section-characters' => 'Саболу куьцаш',
+ 'wikieditor-toolbar-characters-page-latin' => 'Латинхойн',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Латинхойн аллÑам',
+ 'wikieditor-toolbar-characters-page-ipa' => 'ДÐЭ (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Саболурш',
+ 'wikieditor-toolbar-characters-page-greek' => 'Гlайрхойн',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Кирилан',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Iарбойн',
+ 'wikieditor-toolbar-characters-page-persian' => 'ПхьарÑхойн',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Жуьгтийн',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Бангалойн',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Телугойн',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Синхалойн',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Гужаратойн',
+ 'wikieditor-toolbar-characters-page-thai' => 'Тайхойн',
+ 'wikieditor-toolbar-characters-page-lao' => 'Лаохойн',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Кхимерхойн',
+ 'wikieditor-toolbar-section-help' => 'ÐиÑвохаам',
+ 'wikieditor-toolbar-help-heading-description' => 'Цуьнах лаьцна',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Хlу йуьллу ахьа',
+ 'wikieditor-toolbar-help-heading-result' => 'Хlу хуьлу хьуна',
+ 'wikieditor-toolbar-help-page-format' => 'Бáрамхlоттор',
+ 'wikieditor-toolbar-help-page-link' => 'Хьажоригаш',
+ 'wikieditor-toolbar-help-page-heading' => 'Коьрта могlнаш',
+ 'wikieditor-toolbar-help-page-list' => 'Могlамаш',
+ 'wikieditor-toolbar-help-page-file' => 'Хlумнаш',
+ 'wikieditor-toolbar-help-page-reference' => 'Билгалдаккхар',
+ 'wikieditor-toolbar-help-page-discussion' => 'Дийцаре',
+ 'wikieditor-toolbar-help-content-italic-description' => 'КурÑетта',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''КурÑеттан до йоза''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>КурÑеттан до йоза</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'ДерÑтино',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''ДерÑтино до йоза'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>ДерÑтино до йоза</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'ДерÑтино курÑеттан',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''ДерÑтино курÑеттан'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<em><strong>ДерÑтино курÑеттан</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Чоьхьа хьажориг',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Ðгlонан коьрта могlа|Хьажориган йоза]]<br />[[Ðгlонан коьрта могlа]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Хьажориган йоза</a><br /><a href='#'>Ðгlонан коьрта могlа</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ðрахьа хьажориг',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Хьажориган йоза]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Хьажориган йоза</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Коьрта могlа 2-гlа локхалла',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Коьрта могlан йоза ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Коьрта могlан йоза</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Коьрта могlа 3-гlа локхалла',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Коьрта могlан йоза ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Коьрта могlан йоза</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Коьрта могlа 4-гlа локхалла',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Коьрта могlан йоза ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Коьрта могlан йоза</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Коьрта могlа 5-гlа локхалла',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Коьрта могlан йоза =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Коьрта могlан йоза</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'КъаÑтам бина могlам',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Могlаман хlум<br />* Могlаман хlум',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Могlаман хlум</li><li>Могlаман хlум</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Терахьца болу могlам',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Могlаман хlум<br /># Могlаман хlум',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Могlаман хlум</li><li>Могlаман хlум</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Чохь йолу хlум',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Оцуьнах лаьцна йоза]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='
+Оцуьнах лаьцна йоза' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Доккха дан' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>
+Оцуьнах лаьцна йоза</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Билгалдаккхар',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Ðгlонан йоза.&lt;ref name="test"&gt;[http://www.example.org Хьажориган йоза], кхин Ñ‚lе дузуш йоза.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Ðгlонан йоза.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Кхин тlе лело изза хьажориг',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Ðгlонан йоза<sup><a href='#'>[1]</a></sup>.",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Гайта билгалдаккхар',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Хьажориган йоза</a>, кхин тlе дузуш йоза.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Куьгтаlор хан хlоттош',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Декъашхон цlе</a> (<a href='#' title='{{#special:mytalk}}'>дийцаре</a>) 15:54, 10 Мангал бутт 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Куьгтаlор',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Декъашхон цlе</a> (<a href='#' title='{{#special:mytalk}}'>дийцаре</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Дlахило',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Гуттарлера йоза<br />:Дlахилийна йоза<br />::Дlахилийна йоза',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Гуттарлера йоза<dl><dd>Дlахилийна йоза<dl><dd>Дlахилийна йоза</dd></dl></dd></dl>',
+);
+
+/** Sorani (کوردی)
+ * @author Asoxor
+ * @author Marmzok
+ * @author McDutchie
+ */
+$messages['ckb'] = array(
+ 'wikieditor' => 'ڕووکاری پێشکەوتووی دەستکاریکردنی ویکیدەق',
+ 'wikieditor-wikitext-tab' => 'ویکیدەق',
+ 'wikieditor-loading' => 'بارکردن',
+ 'wikieditor-preview-preference' => 'ڕێگەپێدان بە پێشبینینی شانبەشان',
+ 'wikieditor-preview-tab' => 'پێشبینین',
+ 'wikieditor-preview-changes-tab' => 'گۆڕانکارییەکان',
+ 'wikieditor-preview-loading' => 'باركردن‌ ...',
+ 'wikieditor-previewDialog-preference' => 'ڕێگە بدە بە پەنجەرەی پێشبینین',
+ 'wikieditor-previewDialog-tab' => 'پێشبینین',
+ 'wikieditor-previewDialog-loading' => 'باركردن‌ ...',
+ 'wikieditor-publish-preference' => 'ڕێگە بدە بە بڵاوکردنەوەی ھەنگاوبەھەنگاو',
+ 'wikieditor-publish-button-publish' => 'بڵاوی بکەوە',
+ 'wikieditor-publish-button-cancel' => 'ھەڵوەشاندنەوە',
+ 'wikieditor-publish-dialog-title' => 'لە {{SITENAME}} بڵاوی بکەوە',
+ 'wikieditor-publish-dialog-summary' => 'پوختەی دەستکاری (بە کورتی ئەی گۆڕانکارییانەی کردووتە ئاشکرا دەکاتەوە):',
+ 'wikieditor-publish-dialog-minor' => 'دەستکاریی بچووک',
+ 'wikieditor-publish-dialog-watch' => 'چاودێڕیی ئەم پەڕە بکە',
+ 'wikieditor-publish-dialog-publish' => 'بڵاوی بکەوە',
+ 'wikieditor-publish-dialog-goback' => 'بگەڕێوە',
+ 'wikieditor-template-editor-preference' => 'Ú•ÛŽÚ¯Û• بدە بە دەستکاریکردنی ÙˆÛ•Ú© Ùۆرم بۆ داڕێژەکانی ویکی',
+ 'wikieditor-template-editor-dialog-title' => 'دەستکاریکردنی دارێژە',
+ 'wikieditor-template-editor-dialog-submit' => 'نوێ کردنەوە',
+ 'wikieditor-template-editor-dialog-cancel' => 'ھەڵوەشاندنەوە',
+ 'wikieditor-templates-preference' => 'مۆڵەتدانی کۆکردنەوەی داڕێژە',
+ 'wikieditor-toc-preference' => 'خستنەکاری خشتە ڕێدۆزەکانی ناوەڕۆک',
+ 'wikieditor-toc-show' => 'نیشاندانی ناوەڕۆک',
+ 'wikieditor-toc-hide' => 'شاردنەوەی ناوەڕۆک',
+ 'wikieditor-toolbar' => 'شریتامرازی دەستکاریکردن',
+ 'wikieditor-toolbar-desc' => 'شریتامرازی پەڕەی دەستکاریکردن بە کارەمەیی پەرەپێدراو',
+ 'wikieditor-toolbar-preference' => 'ڕێگە بدە بە شریتامرازی پەرەسندووی دەستکاری کردن',
+ 'wikieditor-toolbar-dialogs-preference' => 'ڕێگە بدە بە پەنجەرە وتووێژییەکان بۆ تێخستنی بەستەرەکان، خشتەکان و ھتد.',
+ 'wikieditor-toolbar-loading' => 'خەریکی بارکردن...',
+ 'wikieditor-toolbar-tool-bold' => 'تۆخ',
+ 'wikieditor-toolbar-tool-bold-example' => 'دەقی تۆخ',
+ 'wikieditor-toolbar-tool-italic' => 'لار',
+ 'wikieditor-toolbar-tool-italic-example' => 'دەقی لار',
+ 'wikieditor-toolbar-tool-ilink' => 'بەستەری ناوەکی',
+ 'wikieditor-toolbar-tool-ilink-example' => 'سەردێڕی بەستەر',
+ 'wikieditor-toolbar-tool-xlink' => 'بەستەری دەرەکی (پێشگری http:// لەبیرنەکەی)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com سەردێڕی بەستەر',
+ 'wikieditor-toolbar-tool-link' => 'بەستەر',
+ 'wikieditor-toolbar-tool-link-title' => 'دانانی بەستەر',
+ 'wikieditor-toolbar-tool-link-int' => 'بە پەڕەیەکی ویکی',
+ 'wikieditor-toolbar-tool-link-int-target' => 'پەڕەی مەبەست یان URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'ناونیشانی پەڕە یان URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'دەق بۆ نیشاندان:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'دقێک کە نیشان ئەدرێت',
+ 'wikieditor-toolbar-tool-link-ext' => 'بۆ وێب‌پەڕەیەکی دەرەکی',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'بەستەری URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'دەقی بەستەر:',
+ 'wikieditor-toolbar-tool-link-insert' => 'دانانی بەستەر',
+ 'wikieditor-toolbar-tool-link-cancel' => 'ھەڵوەشاندنەوە',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'پەڕەکە ھەیە',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'پەڕە بوونی نییە',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ناونیشان ھەڵە',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'بەستەری دەرەکی',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'پشکنینی ھەبوونی پەڕە ...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'ئەو ناونیشانە دەستنیشانت کردووە نادروستە',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'ئەو ناونیشانەی ڕەچاوت کردووە لەوەدەچێ بەستەرێک بێت بۆ پەڕەیەکی ویکی دیکە. ئایا دەتەوێ بیکەی بە بەستەرێکی ناوەکی؟',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'بەستەری ناوخۆ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'بەستەری دەرەکی',
+ 'wikieditor-toolbar-tool-link-empty' => 'ھیچێک بۆ بەستەر بۆ کردن نەخستە ناوی',
+ 'wikieditor-toolbar-tool-file' => 'پەڕگەی نێودەق',
+ 'wikieditor-toolbar-tool-file-example' => 'نموونە.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'سەرچاوە',
+ 'wikieditor-toolbar-tool-reference-example' => 'دەقی پانووس بخەرە ئێرە',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'ھەڵوەشاندنەوە',
+ 'wikieditor-toolbar-tool-reference-title' => 'زۆرکردنی سەرچاوە',
+ 'wikieditor-toolbar-tool-reference-insert' => 'تێخستن',
+ 'wikieditor-toolbar-tool-reference-text' => 'دەقی سەرچاوە',
+ 'wikieditor-toolbar-tool-signature' => 'واژۆ و ڕێکەوت',
+ 'wikieditor-toolbar-section-advanced' => 'پەرەسەندوو',
+ 'wikieditor-toolbar-tool-heading' => 'سەردێڕ',
+ 'wikieditor-toolbar-tool-heading-1' => 'ئاستی ١',
+ 'wikieditor-toolbar-tool-heading-2' => 'ئاستی ٢',
+ 'wikieditor-toolbar-tool-heading-3' => 'ئاستی ٣',
+ 'wikieditor-toolbar-tool-heading-4' => 'ئاستی ٤',
+ 'wikieditor-toolbar-tool-heading-5' => 'ئاستی ٥',
+ 'wikieditor-toolbar-tool-heading-example' => 'دەقی سەردێڕ',
+ 'wikieditor-toolbar-group-format' => 'داڕشتن',
+ 'wikieditor-toolbar-tool-ulist' => 'لیستی خاڵبەندکراو',
+ 'wikieditor-toolbar-tool-ulist-example' => 'ئەندامی لیستی خاڵبەندکراو',
+ 'wikieditor-toolbar-tool-olist' => 'لیستی ژمارەکراو',
+ 'wikieditor-toolbar-tool-olist-example' => 'ئەندامی لیستی ژمارەکراو',
+ 'wikieditor-toolbar-tool-indent' => 'پێشبردن',
+ 'wikieditor-toolbar-tool-indent-example' => 'ھێڵی پێشبراو',
+ 'wikieditor-toolbar-tool-nowiki' => 'بەکارنەھێنانی Ùۆڕماتەکانی ویکی',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'ئەو دەقەی دەتەوێ بێ Ùۆڕمات بێت لێرە دابنە',
+ 'wikieditor-toolbar-tool-redirect' => 'ڕەوانەکردن',
+ 'wikieditor-toolbar-tool-redirect-example' => 'ناوی پەڕەی مەبەست',
+ 'wikieditor-toolbar-tool-big' => 'گەورە',
+ 'wikieditor-toolbar-tool-big-example' => 'دەقی گەورە',
+ 'wikieditor-toolbar-tool-small' => 'بچوک',
+ 'wikieditor-toolbar-tool-small-example' => 'دەقی بچکوک',
+ 'wikieditor-toolbar-tool-superscript' => 'سەرنووس',
+ 'wikieditor-toolbar-tool-superscript-example' => 'دەقی سەرنووس',
+ 'wikieditor-toolbar-tool-subscript' => 'ژێرنووس',
+ 'wikieditor-toolbar-tool-subscript-example' => 'دەقی ژێرنووس',
+ 'wikieditor-toolbar-group-insert' => 'تێخستن',
+ 'wikieditor-toolbar-tool-gallery' => 'گالێری وێنە',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:نموونە.jpg|شرۆڤەی ١
+$1:نموونە.jpg|شرۆڤەی ٢',
+ 'wikieditor-toolbar-tool-newline' => 'ھێڵی نوێ',
+ 'wikieditor-toolbar-tool-table' => 'خشتە',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! سەردێڕی ١
+! سەردێڕی ٢
+! سەردێڕی ٣
+|-
+| ڕیزی ١، خانەی ١
+| ڕیزی ١، خانەی ٢
+| ڕیزی ١، خانەی ٣
+|-
+| ڕیزی ٢، خانەی ١
+| ڕیزی ٢، خانەی ٢
+| ڕیزی ٢، خانەی ٣',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'دەقی خانە',
+ 'wikieditor-toolbar-tool-table-example-header' => 'دەقی سەردێڕ',
+ 'wikieditor-toolbar-tool-table-title' => 'دانانی خشتە',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'ڕیزەکان',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'ستوونەکان',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'زیادکردنی ڕیزی سەردێڕ',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'شێوازی بەقەراغ',
+ 'wikieditor-toolbar-tool-table-sortable' => 'با خشتەکە بە ڕیز بکرێت',
+ 'wikieditor-toolbar-tool-table-example' => 'نموونە',
+ 'wikieditor-toolbar-tool-table-preview' => 'پێشبینین',
+ 'wikieditor-toolbar-tool-table-insert' => 'تێخستن',
+ 'wikieditor-toolbar-tool-table-cancel' => 'ھەڵوەشاندنەوە',
+ 'wikieditor-toolbar-tool-table-toomany' => 'تێخستنی خشتەیەک بە زۆرتر لە $1 خانەوە بەم ئامرازەوە ناکرێ.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'ژمارەیەکی دروستت بۆ ڕیزەکان یان ستوونەکان نەداوە.',
+ 'wikieditor-toolbar-tool-table-zero' => 'ناتوانی خشتەیەک بێ ھیچ ڕیز یان ستوونێک تێبخەی',
+ 'wikieditor-toolbar-tool-replace' => 'دۆزینەوە و لەجێدانان',
+ 'wikieditor-toolbar-tool-replace-title' => 'بیدۆزەوە و لەجێیدانە',
+ 'wikieditor-toolbar-tool-replace-search' => 'بگەڕێ بۆ:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'جێبەجێی بکە لەگەڵ:',
+ 'wikieditor-toolbar-tool-replace-case' => 'کوت و مت وەک خۆی',
+ 'wikieditor-toolbar-tool-replace-regex' => 'لەگەڵ نووسەی گەڕانەکە وەک دەقی ڕێک ھەڵسوکەوت بکە',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'دوای ئەمە بدۆزەوە',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'ئەوەی دواتر جێگۆڕکە',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'ھەموویان جێگیر بکە',
+ 'wikieditor-toolbar-tool-replace-close' => 'دایخە',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'گەڕانەکەت لەگەڵ ھیچ شتێک نەگونجا.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 جێگرتنەوە ئەنجامدرا.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'ھیچ شتێکت بۆ گەڕان ڕەچاو نەکردوو.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'ئەو regular expression کە نووسیوتە گونجاو نییە: $1',
+ 'wikieditor-toolbar-section-characters' => 'نووسە تایبەتەکان',
+ 'wikieditor-toolbar-characters-page-latin' => 'لاتینی',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'لاتینیی پەرەپێدراو',
+ 'wikieditor-toolbar-characters-page-ipa' => 'ئای پی ئەی',
+ 'wikieditor-toolbar-characters-page-symbols' => 'ھێماکان',
+ 'wikieditor-toolbar-characters-page-greek' => 'یۆنانی',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'سیریلیک',
+ 'wikieditor-toolbar-characters-page-arabic' => 'عەرەبی',
+ 'wikieditor-toolbar-characters-page-persian' => 'Ùارسی',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'عیبری',
+ 'wikieditor-toolbar-characters-page-bangla' => 'بەنگالی',
+ 'wikieditor-toolbar-characters-page-telugu' => 'تێلوگو',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'سینھالا',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'گوجەراتی',
+ 'wikieditor-toolbar-section-help' => 'یارمەتی',
+ 'wikieditor-toolbar-help-heading-description' => 'وەسÙ',
+ 'wikieditor-toolbar-help-heading-syntax' => 'ئەوی تایپی دەکەی',
+ 'wikieditor-toolbar-help-heading-result' => 'ئەوەی بەدەستی دێنی',
+ 'wikieditor-toolbar-help-page-format' => 'ڕازاندنەوە',
+ 'wikieditor-toolbar-help-page-link' => 'بەستەرەکان',
+ 'wikieditor-toolbar-help-page-heading' => 'سەردێڕەکان',
+ 'wikieditor-toolbar-help-page-list' => 'لیستەکان',
+ 'wikieditor-toolbar-help-page-file' => 'پەڕگەکان',
+ 'wikieditor-toolbar-help-page-reference' => 'سەرچاوەکان',
+ 'wikieditor-toolbar-help-page-discussion' => 'وتووێژ',
+ 'wikieditor-toolbar-help-content-italic-description' => 'لار',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''دەقی لار''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>دەقی لار</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'تۆخ',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''دەقی تۆخ'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>دەقی تۆخ</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'تۆخ و لار',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''دەقی تۆخ و لار'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>دەقی تۆخ و لار</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'بەستەری ناوەکی',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[ناونیشانی پەڕە|نازناوی بەستەر]]<br />[[ناونیشانی پەڕە]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>نازناوی بەستەر</a><br /><a href='#'>ناونیشانی پەڕە</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'بەستەری دەرەکی',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org سەردێڕی بەستەر]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>سەردێڕی بەستەر</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'سەردێڕی ئاستی دووهەم',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== دەقی سەردێڕ ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>دەقی سەردێڕ</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'سەردێڕی ئاستی سێهەم',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== دەقی سەردێڕ ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>دەقی سەردێڕ</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'سەردێڕی ئاستی چوارەم',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== دەقی سەردێڕ ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>دەقی سەردێڕ</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'سەردێڕی ئاستی پەنجەم',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== دەقی سەردێڕ =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>دەقی سەردێڕ</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'لیستی خاڵبەندکراو',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* ئەندامی لیست<br />* ئەندامی لیست',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>ئەندامی لیست</li><li>ئەندامی لیست</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'لیستی ژمارەکراو',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# ئەندامی لیست<br /># ئەندامی لیست',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>ئەندامی لیست</li><li>ئەندامی لیست</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'پەڕگەی نێودەق',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|دەقی شرۆڤە]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='دەقی شرۆڤە' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='گەورەکردنەوە' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>دەقی شرۆڤە</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'سەرچاوە',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'دەقی پەڕە.&lt;ref name="test"&gt;[http://www.example.org دەقی بەستەر], دەقی زیادی.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "دەقی پەڕە.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'بەکارھێنانی دیکەی ئەو سەرچاوەیە',
+ 'wikieditor-toolbar-help-content-rereference-result' => "دەقی پەڕە.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'نیشان‌دانی سەرچاوەکان',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>دەقی بەستەر</a>, دەقی زیادی.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'واژۆ لەگەڵ ڕێکەوتدا',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>ناوی بەکارھێنەر</a> (<a href='#' title='{{#special:mytalk}}'>لێدوان</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'واژۆ',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>ناوی بەکارھێنەر</a> (<a href='#' title='{{#special:mytalk}}'>لێدوان</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'پێشبردن',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'دەقی ئاسایی<br />:دەقی پێشچوو<br />::دەقی پێشچوو',
+ 'wikieditor-toolbar-help-content-indent-result' => 'دەقی ئاسایی<dl><dd>دەقی پێشچوو<dl><dd>دەقی پێشچوو</dd></dl></dd></dl>',
+);
+
+/** Corsican (Corsu) */
+$messages['co'] = array(
+ 'wikieditor-toolbar-tool-heading-1' => 'Livellu 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Livellu 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Livellu 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Livellu 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Livellu 5',
+);
+
+/** Czech (ÄŒesky)
+ * @author Kuvaly
+ * @author Mormegil
+ */
+$messages['cs'] = array(
+ 'wikieditor' => 'Vylepšené rozhraní pro editaci wikitextu',
+ 'wikieditor-desc' => 'Poskytuje rozÅ¡iÅ™itelné editaÄní rozhraní a mnoho modulů s novými funkcemi',
+ 'wikieditor-wikitext-tab' => 'Wikitext',
+ 'wikieditor-loading' => 'NaÄítá se',
+ 'wikieditor-preview-preference' => 'Zapnout náhledy v panelu',
+ 'wikieditor-preview-tab' => 'Náhled',
+ 'wikieditor-preview-changes-tab' => 'Změny',
+ 'wikieditor-preview-loading' => 'NaÄítá se…',
+ 'wikieditor-previewDialog-preference' => 'Používat dialog pro náhled',
+ 'wikieditor-previewDialog-tab' => 'Náhled',
+ 'wikieditor-previewDialog-loading' => 'NaÄítá se…',
+ 'wikieditor-publish-preference' => 'Zapnout průvodce publikováním',
+ 'wikieditor-publish-button-publish' => 'Publikovat',
+ 'wikieditor-publish-button-cancel' => 'Storno',
+ 'wikieditor-publish-dialog-title' => 'Publikovat do {{grammar:2sg|{{SITENAME}}}}',
+ 'wikieditor-publish-dialog-summary' => 'Shrnutí editace (struÄnÄ› popiÅ¡te provedené zmÄ›ny):',
+ 'wikieditor-publish-dialog-minor' => 'Malá editace',
+ 'wikieditor-publish-dialog-watch' => 'Sledovat tuto stránku',
+ 'wikieditor-publish-dialog-publish' => 'Publikovat',
+ 'wikieditor-publish-dialog-goback' => 'Zpět',
+ 'wikieditor-template-editor-preference' => 'Zapnout formulářovou editaci šablon wiki',
+ 'wikieditor-template-editor-dialog-title' => 'Upravit Å¡ablonu',
+ 'wikieditor-template-editor-dialog-submit' => 'Aktualizovat',
+ 'wikieditor-template-editor-dialog-cancel' => 'Storno',
+ 'wikieditor-templates-preference' => 'Zapnout sbalování šablon',
+ 'wikieditor-toc-preference' => 'Zapnout navigovatelný obsah',
+ 'wikieditor-toc-show' => 'Zobrazit obsah',
+ 'wikieditor-toc-hide' => 'Skrýt obsah',
+ 'wikieditor-toolbar' => 'EditaÄní panel nástrojů',
+ 'wikieditor-toolbar-desc' => 'EditaÄní panel nástrojů s vylepÅ¡enou použitelností',
+ 'wikieditor-toolbar-preference' => 'Zapnout vylepšený panel nástrojů',
+ 'wikieditor-toolbar-dialogs-preference' => 'Používat dialogy pro vkládání odkazů, tabulek atd.',
+ 'wikieditor-toolbar-hidesig' => 'Skrýt tlaÄítko podpisu na stránkách v hlavním jmenném prostoru',
+ 'wikieditor-toolbar-loading' => 'NaÄítá se…',
+ 'wikieditor-toolbar-tool-bold' => 'TuÄnÄ›',
+ 'wikieditor-toolbar-tool-bold-example' => 'TuÄný text',
+ 'wikieditor-toolbar-tool-italic' => 'Kurzíva',
+ 'wikieditor-toolbar-tool-italic-example' => 'Text kurzívou',
+ 'wikieditor-toolbar-tool-ilink' => 'Vnitřní odkaz',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Název odkazu',
+ 'wikieditor-toolbar-tool-xlink' => 'Externí odkaz (nezapomeňte na předponu http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com Titulek odkazu',
+ 'wikieditor-toolbar-tool-link' => 'Odkaz',
+ 'wikieditor-toolbar-tool-link-title' => 'Vložit odkaz',
+ 'wikieditor-toolbar-tool-link-int' => 'Na wiki stránku',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Název stránky:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Název stránky nebo URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Text odkazu:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Text, který se má zobrazit',
+ 'wikieditor-toolbar-tool-link-ext' => 'Na externí webovou stránku',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Cíl odkazu:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Text odkazu:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Vložit odkaz',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Storno',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Stránka existuje',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Stránka neexistuje',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Neplatný název',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Externí odkaz',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Zjišťování existence stránky…',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Vámi zadaný název je neplatný.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Uvedené URL vypadá jako odkaz na jinou stránku této wiki.
+Chcete z něj tedy udělat vnitřní odkaz?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Vnitřní odkaz',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Externí odkaz',
+ 'wikieditor-toolbar-tool-link-empty' => 'Musíte uvést cíl odkazu.',
+ 'wikieditor-toolbar-tool-file' => 'Vložený soubor',
+ 'wikieditor-toolbar-tool-file-example' => 'Příklad.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Poznámky',
+ 'wikieditor-toolbar-tool-reference-example' => 'Sem uveÄte text poznámky',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Storno',
+ 'wikieditor-toolbar-tool-reference-title' => 'Vložit referenci',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Vložit',
+ 'wikieditor-toolbar-tool-reference-text' => 'Text reference',
+ 'wikieditor-toolbar-tool-signature' => 'Podpis a datum',
+ 'wikieditor-toolbar-section-advanced' => 'Další',
+ 'wikieditor-toolbar-tool-heading' => 'Nadpis',
+ 'wikieditor-toolbar-tool-heading-1' => 'Úroveň 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Úroveň 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Úroveň 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Úroveň 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Úroveň 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Text nadpisu',
+ 'wikieditor-toolbar-group-format' => 'Formát',
+ 'wikieditor-toolbar-tool-ulist' => 'Seznam s odrážkami',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Položka odrážkového seznamu',
+ 'wikieditor-toolbar-tool-olist' => 'Číslovaný seznam',
+ 'wikieditor-toolbar-tool-olist-example' => 'Položka Äíslovaného seznamu',
+ 'wikieditor-toolbar-tool-indent' => 'Odsazení',
+ 'wikieditor-toolbar-tool-indent-example' => 'Odsazená řádka',
+ 'wikieditor-toolbar-tool-nowiki' => 'Bez formátování wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Sem vložte neformátovaný text',
+ 'wikieditor-toolbar-tool-redirect' => 'Přesměrování',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Název cílové stránky',
+ 'wikieditor-toolbar-tool-big' => 'Větší',
+ 'wikieditor-toolbar-tool-big-example' => 'Zvětšený text',
+ 'wikieditor-toolbar-tool-small' => 'Menší',
+ 'wikieditor-toolbar-tool-small-example' => 'Zmenšený text',
+ 'wikieditor-toolbar-tool-superscript' => 'Horní index',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Text v horním indexu',
+ 'wikieditor-toolbar-tool-subscript' => 'Dolní index',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Text v dolním indexu',
+ 'wikieditor-toolbar-group-insert' => 'Vložit',
+ 'wikieditor-toolbar-tool-gallery' => 'Galerie obrázků',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Příklad.jpg|Titulek 1
+$1:Příklad.jpg|Titulek 2',
+ 'wikieditor-toolbar-tool-newline' => 'Nový řádek',
+ 'wikieditor-toolbar-tool-table' => 'Tabulka',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! hlaviÄka 1
+! hlaviÄka 2
+! hlaviÄka 3
+|-
+| řádek 1, buňka 1
+| řádek 1, buňka 2
+| řádek 1, buňka 3
+|-
+| řádek 2, buňka 1
+| řádek 2, buňka 2
+| řádek 2, buňka 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Text buňky',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Text záhlaví',
+ 'wikieditor-toolbar-tool-table-title' => 'Vložení tabulky',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Řádků',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Sloupců',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'PÅ™idat řádek s hlaviÄkou',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Styl s okraji',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Umožnit řazení tabulky',
+ 'wikieditor-toolbar-tool-table-example' => 'Text buňky',
+ 'wikieditor-toolbar-tool-table-preview' => 'Náhled',
+ 'wikieditor-toolbar-tool-table-insert' => 'Vložit',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Storno',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Pomocí tohoto dialogu nelze vložit tabulku s více než $1 buňkami.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Musíte zadat platný poÄet řádků nebo sloupců.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Nemůžete vložit tabulku s nulovým poÄet řádků nebo sloupců.',
+ 'wikieditor-toolbar-tool-replace' => 'Najít a nahradit',
+ 'wikieditor-toolbar-tool-replace-title' => 'Najít a nahradit',
+ 'wikieditor-toolbar-tool-replace-search' => 'Najít:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Nahradit za:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Rozlišovat velikost písmen',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Hledat pomocí regulárního výrazu',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Najít další',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Nahradit další',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Nahradit vše',
+ 'wikieditor-toolbar-tool-replace-close' => 'Zavřít',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Zadanému hledání nic neodpovídá.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Nahrazeno $1krát.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Musíte uvést, co se má hledat.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Zadaný regulární výraz je neplatný: $1',
+ 'wikieditor-toolbar-section-characters' => 'Zvláštní znaky',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latinka',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Rozšíření latinky',
+ 'wikieditor-toolbar-characters-page-ipa' => 'Mezinárodní fonetická abeceda (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symboly',
+ 'wikieditor-toolbar-characters-page-greek' => 'Řecká abeceda',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cyrilice',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabské písmo',
+ 'wikieditor-toolbar-characters-page-persian' => 'Perština',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebrejské písmo',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengálské písmo',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugské písmo',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhálské písmo',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gudžarátské písmo',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thajština',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laoština',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmerština',
+ 'wikieditor-toolbar-section-help' => 'Nápověda',
+ 'wikieditor-toolbar-help-heading-description' => 'Popis',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Napíšete',
+ 'wikieditor-toolbar-help-heading-result' => 'Výsledek',
+ 'wikieditor-toolbar-help-page-format' => 'Formátování',
+ 'wikieditor-toolbar-help-page-link' => 'Odkazy',
+ 'wikieditor-toolbar-help-page-heading' => 'Nadpisy',
+ 'wikieditor-toolbar-help-page-list' => 'Seznamy',
+ 'wikieditor-toolbar-help-page-file' => 'Soubory',
+ 'wikieditor-toolbar-help-page-reference' => 'Poznámky',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskuse',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kurzíva',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Text kurzívou''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Text kurzívou</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'TuÄné písmo',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''TuÄný text'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>TuÄný text</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'TuÄná kurzíva',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Text tuÄnou kurzívou'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Text tuÄnou kurzívou</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Vnitřní odkaz',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Název stránky|Text odkazu]]<br />[[Název stránky]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Text odkazu</a><br /><a href='#'>Název stránky</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Externí odkaz',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Text odkazu]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Text odkazu</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Nadpis 2. úrovně',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Text nadpisu ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Text nadpisu</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Nadpis 3. úrovně',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Text nadpisu ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Text nadpisu</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Nadpis 4. úrovně',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Text nadpisu ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Text nadpisu</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Nadpis 5. úrovně',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Text nadpisu =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Text nadpisu</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Seznam s odrážkami',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Položka seznamu<br />* Položka seznamu',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Položka seznamu</li><li>Položka seznamu</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Číslovaný seznam',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Položka seznamu<br /># Položka seznamu',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Položka seznamu</li><li>Položka seznamu</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Vložení souboru',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Příklad.png|thumb|Text titulku]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Text titulku' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Zvětšit' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Text titulku</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Poznámka',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Text stránky.&lt;ref name="test"&gt;[http://www.example.org Text odkazu], další text.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Text stránky.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Další odkaz na stejnou poznámku',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Text stránky.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Zobrazení poznámek',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Text odkazu</a>, další text.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Podpis a datum',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{ns:User}}:Uživatelské jméno'>Uživatelské jméno</a> 23. 6. 2009, 10:43 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Podpis',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{ns:User}}:Uživatelské jméno'>Uživatelské jméno</a>",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Odsazení',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Základní text<br />:Odsazený text<br />::Odsazený text',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Základní text<dl><dd>Odsazený text<dl><dd>Odsazený text</dd></dl></dd></dl>',
+);
+
+/** Kashubian (Kaszëbsczi)
+ * @author Kuvaly
+ */
+$messages['csb'] = array(
+ 'wikieditor-preview-loading' => 'Ladowanié...',
+ 'wikieditor-previewDialog-loading' => 'Ladowanié...',
+ 'wikieditor-template-editor-dialog-submit' => 'Aktualizacëjô',
+ 'wikieditor-template-editor-dialog-cancel' => 'Anulujë',
+ 'wikieditor-toolbar-loading' => 'Ladowanié...',
+ 'wikieditor-toolbar-tool-bold' => 'Grëbi',
+ 'wikieditor-toolbar-tool-bold-example' => 'Wëtłëszczony drëk',
+ 'wikieditor-toolbar-tool-italic' => 'Kùrsywa',
+ 'wikieditor-toolbar-tool-italic-example' => 'Ùchëłi tekst',
+ 'wikieditor-toolbar-tool-ilink' => 'Bënowi lënk',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titel lënka',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com titel lënka',
+ 'wikieditor-toolbar-tool-link' => 'Lënka',
+ 'wikieditor-toolbar-tool-link-title' => 'Wstôwi lënka',
+ 'wikieditor-toolbar-tool-link-insert' => 'Wstôwi lënka',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Anulujë',
+ 'wikieditor-toolbar-tool-file-example' => 'Przëmiôr.jpg',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Anulujë',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Wstôwi',
+ 'wikieditor-toolbar-section-advanced' => 'Awansowóné',
+ 'wikieditor-toolbar-tool-heading-1' => 'Równiô 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Równiô 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Równiô 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Równiô 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Równiô 5',
+ 'wikieditor-toolbar-tool-redirect' => 'Przeczerowani',
+ 'wikieditor-toolbar-group-insert' => 'Wstôwi',
+ 'wikieditor-toolbar-tool-table' => 'Tabela',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Régów',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kòlumnów',
+ 'wikieditor-toolbar-tool-table-example' => 'Przëmiôr',
+ 'wikieditor-toolbar-tool-table-preview' => 'Pòdzérk',
+ 'wikieditor-toolbar-tool-table-insert' => 'Wstôwi',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Anulujë',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Nalezë pòstãpné',
+ 'wikieditor-toolbar-tool-replace-close' => 'Anulujë',
+ 'wikieditor-toolbar-section-characters' => 'Specjalnë céchów',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Céchë',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grecczi',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cërylica',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabsczi',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebrajsczi',
+ 'wikieditor-toolbar-section-help' => 'Pòmòc',
+ 'wikieditor-toolbar-help-heading-description' => 'Ã’pis',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kùrsywa',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kùrsywa''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kùrsywa</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Grëbi',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Bënowi lënk',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Bùtnowé lënczi',
+);
+
+/** Church Slavic (СловѣÌньÑкъ / ⰔⰎⰑⰂⰡâ°â° â°”â°â°Ÿ)
+ * @author ОйЛ
+ */
+$messages['cu'] = array(
+ 'wikieditor-preview-changes-tab' => 'мѣнꙑ',
+ 'wikieditor-publish-button-publish' => 'Ñъхранѥниѥ',
+ 'wikieditor-publish-dialog-minor' => 'малаꙗ мѣна',
+ 'wikieditor-publish-dialog-watch' => 'Ñи Ñтраницѧ блюдєниѥ',
+ 'wikieditor-publish-dialog-publish' => 'Ñъхранѥниѥ',
+ 'wikieditor-template-editor-dialog-title' => 'обраê™ÑŒÑ†Ð° иÑправлѥниѥ',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Ñъвѧê™Ð¸ имѧ',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com Ñъвѧê™Ð¸ имѧ',
+ 'wikieditor-toolbar-tool-link' => 'Ñъвѧê™ÑŒ',
+ 'wikieditor-toolbar-tool-link-title' => 'Ñъвѧê™Ð¸ приложєниѥ',
+ 'wikieditor-toolbar-tool-link-insert' => 'Ñъвѧê™Ð¸ приложєниѥ',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Ñтраницѧ нѣÑÑ‚ÑŠ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'вънѣщьнꙗ Ñъвѧê™ÑŒ',
+ 'wikieditor-toolbar-tool-file-example' => 'Прикладъ.jpg',
+ 'wikieditor-toolbar-tool-signature' => 'аѵтографъ и нꙑнѣшьна врѣмѧ и дьнь',
+ 'wikieditor-toolbar-tool-redirect' => 'прѣнаправлѥниѥ',
+ 'wikieditor-toolbar-tool-big' => 'вєликъ',
+ 'wikieditor-toolbar-tool-small' => 'малъ',
+ 'wikieditor-toolbar-tool-newline' => 'новъ рѧдъ',
+ 'wikieditor-toolbar-tool-table' => 'таÌвлїѥ',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'рѧдꙑ',
+ 'wikieditor-toolbar-tool-table-example' => 'прикладъ',
+ 'wikieditor-toolbar-section-characters' => 'допльнитєл҄ьнꙑ Ñѷмволи',
+ 'wikieditor-toolbar-characters-page-latin' => 'латиньÑка аê™ÑŠÐ±Ð¾ÑƒÐºê™‘',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'латиньÑкꙑ аê™ÑŠÐ±Ð¾ÑƒÐºÑŒÐ²Ñ” доложєниѥ',
+ 'wikieditor-toolbar-characters-page-ipa' => 'М҃ФÐ',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Ñѷмволи',
+ 'wikieditor-toolbar-characters-page-greek' => 'грьчьÑка аê™ÑŠÐ±Ð¾ÑƒÐºê™‘',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'климєнтовица / гражданьÑка аê™ÑŠÐ±Ð¾ÑƒÐºê™‘',
+ 'wikieditor-toolbar-characters-page-arabic' => 'аравьÑка аê™ÑŠÐ±Ð¾ÑƒÐºê™‘',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'єврєиÑка аê™ÑŠÐ±Ð¾ÑƒÐºê™‘',
+ 'wikieditor-toolbar-characters-page-bangla' => 'бангальÑка аê™ÑŠÐ±Ð¾ÑƒÐºê™‘',
+ 'wikieditor-toolbar-characters-page-telugu' => 'тєлоужьÑка аê™ÑŠÐ±Ð¾ÑƒÐºê™‘',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'ÑинхальÑка аê™ÑŠÐ±Ð¾ÑƒÐºê™‘',
+ 'wikieditor-toolbar-section-help' => 'помощь',
+ 'wikieditor-toolbar-help-page-link' => 'Ñъвѧê™Ð¸',
+ 'wikieditor-toolbar-help-page-file' => 'дѣла',
+ 'wikieditor-toolbar-help-page-discussion' => 'бєÑѣда',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'аѵтографъ и нꙑнѣшьна врѣмѧ и дьнь',
+ 'wikieditor-toolbar-help-content-signature-description' => 'аѵтографъ',
+);
+
+/** Welsh (Cymraeg)
+ * @author Lloffiwr
+ */
+$messages['cy'] = array(
+ 'wikieditor' => 'Rhyngwyneb golygu testun wici uwch',
+ 'wikieditor-desc' => 'Yn darparu rhyngwyneb estynadwy ar gyfer golygu testun wici a llawer o fodiwlau o nodweddion arbennig',
+ 'wikieditor-wikitext-tab' => 'Testun wici',
+ 'wikieditor-loading' => "Wrthi'n llwytho",
+ 'wikieditor-preview-preference' => 'Galluogi rhagolwg ochr-yn-ochr',
+ 'wikieditor-preview-tab' => 'Rhagolwg',
+ 'wikieditor-preview-changes-tab' => 'Newidiadau',
+ 'wikieditor-preview-loading' => "Wrthi'n llwytho...",
+ 'wikieditor-previewDialog-preference' => 'Galluogi blwch deialog rhagolygon',
+ 'wikieditor-previewDialog-tab' => 'Rhagolwg',
+ 'wikieditor-previewDialog-loading' => "Wrthi'n llwytho...",
+ 'wikieditor-publish-preference' => 'Galluogi cyhoeddi cam-wrth-gam',
+ 'wikieditor-publish-button-publish' => 'Cyhoeddi',
+ 'wikieditor-publish-button-cancel' => 'Diddymu',
+ 'wikieditor-publish-dialog-title' => 'Cyhoeddi ar {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => "Crynodeb golygu (rhowch ddisgrifiad byr o'ch newididau):",
+ 'wikieditor-publish-dialog-minor' => 'Golygiad bychan',
+ 'wikieditor-publish-dialog-watch' => 'Dilyn hynt y dudalen hon',
+ 'wikieditor-publish-dialog-publish' => 'Cyhoedder',
+ 'wikieditor-publish-dialog-goback' => 'Yn ôl',
+ 'wikieditor-template-editor-preference' => 'Galluogi golygu nodynnau wici drwy ffurflen',
+ 'wikieditor-template-editor-dialog-title' => "Golygu'r nodyn",
+ 'wikieditor-template-editor-dialog-submit' => 'Diweddarer',
+ 'wikieditor-template-editor-dialog-cancel' => 'Diddymer',
+ 'wikieditor-templates-preference' => 'Galluogi crebachu nodyn',
+ 'wikieditor-toc-preference' => 'Galluogi rhestr gynnwys mordwyol',
+ 'wikieditor-toc-show' => "Dangos 'Cynnwys'",
+ 'wikieditor-toc-hide' => "Cuddio 'Cynnwys'",
+ 'wikieditor-toolbar' => 'Bar offer golygu',
+ 'wikieditor-toolbar-desc' => 'Bar offer y dudalen olygu gyda gwelliannau defnyddioldeb',
+ 'wikieditor-toolbar-preference' => "Defnyddio'r bar offer golygu estynedig",
+ 'wikieditor-toolbar-dialogs-preference' => 'Galluoger y blychau yn y rhyngwyneb ar gyfer mewnosod cysylltiadau, tablau ag ati',
+ 'wikieditor-toolbar-hidesig' => "Cuddio'r botwm llofnodi rhag y tudalennau yn y prif barth",
+ 'wikieditor-toolbar-loading' => "Wrthi'n llwytho...",
+ 'wikieditor-toolbar-tool-bold' => 'Praff',
+ 'wikieditor-toolbar-tool-bold-example' => 'Testun praff',
+ 'wikieditor-toolbar-tool-italic' => 'Italig',
+ 'wikieditor-toolbar-tool-italic-example' => 'Testun italig',
+ 'wikieditor-toolbar-tool-ilink' => 'Cyswllt mewnol',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Teitl y cyswllt',
+ 'wikieditor-toolbar-tool-xlink' => 'Cyswllt allanol (cofiwch rhagddodi http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com teitl y cyswllt',
+ 'wikieditor-toolbar-tool-link' => 'Cyswllt',
+ 'wikieditor-toolbar-tool-link-title' => 'Mewnosod cyswllt',
+ 'wikieditor-toolbar-tool-link-int' => 'At dudalen wici',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Teitl y dudalen:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Teitl y dudalen neu ei URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Testun y cyswllt:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => "Gosodwch yr ysgrifen a fydd i'w weld",
+ 'wikieditor-toolbar-tool-link-ext' => 'At dudalen we allanol',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL y cyswllt:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Ysgrifen y cyswllt:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Mewnosod cyswllt',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Diddymu',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Y dudalen ar gael',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => "Nid yw'r dudalen ar gael",
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Teitl annilys',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Cyswllt allanol',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "Wrthi'n gwirio a yw'r dudalen ar gael...",
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Ysgrifennwyd teitl annilys.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "Mae'n ymddangos bod yr URL a osodwyd yn arwain at dudalen arall yn y wici.
+Ydych chi am ei osod ar ffurf cyswllt mewnol?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Cyswllt mewnol',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Cyswllt allanol',
+ 'wikieditor-toolbar-tool-link-empty' => "Nid ydych wedi ysgrifennu nod i'r cyswllt fynd ato.",
+ 'wikieditor-toolbar-tool-file' => 'Ffeil mewnosodol',
+ 'wikieditor-toolbar-tool-file-example' => 'Enghraifft.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Troednodyn',
+ 'wikieditor-toolbar-tool-reference-example' => 'Ysgrifennwch droednodyn fan hyn',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Diddymu',
+ 'wikieditor-toolbar-tool-reference-title' => 'Mewnosod cyfeirnod',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Mewnosod',
+ 'wikieditor-toolbar-tool-reference-text' => 'Testun y cyfeirnod',
+ 'wikieditor-toolbar-tool-signature' => 'Llofnod a stamp amser',
+ 'wikieditor-toolbar-section-advanced' => 'Uwch',
+ 'wikieditor-toolbar-tool-heading' => 'Pennawd',
+ 'wikieditor-toolbar-tool-heading-1' => 'Lefel 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Lefel 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Lefel 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Lefel 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Lefel 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Ysgrifennwch y pennawd fan hyn',
+ 'wikieditor-toolbar-group-format' => 'Fformat:',
+ 'wikieditor-toolbar-tool-ulist' => 'Rhestr gyda bwledi',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Eitem ar restr gyda bwledi',
+ 'wikieditor-toolbar-tool-olist' => "Rhestr wedi'i rhifo",
+ 'wikieditor-toolbar-tool-olist-example' => "Eitem ar restr wedi'i rhifo",
+ 'wikieditor-toolbar-tool-indent' => 'Mewnoliad',
+ 'wikieditor-toolbar-tool-indent-example' => "Llinell wedi'i mewnoli",
+ 'wikieditor-toolbar-tool-nowiki' => 'Dim cystrawen wici',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Rhowch destun heb ei fformatio yma',
+ 'wikieditor-toolbar-tool-redirect' => 'Ailgyfeiriad',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Enw tudalen y pen draw',
+ 'wikieditor-toolbar-tool-big' => 'Mawr',
+ 'wikieditor-toolbar-tool-big-example' => 'Llythrennau mawr',
+ 'wikieditor-toolbar-tool-small' => 'Bach',
+ 'wikieditor-toolbar-tool-small-example' => 'Ysgrifen bach',
+ 'wikieditor-toolbar-tool-superscript' => 'Uwchysgrif',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Ysgrifennwch uwchysgrif fan hyn',
+ 'wikieditor-toolbar-tool-subscript' => 'Isysgrif',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Ysgrifennwch isysgrif fan hyn',
+ 'wikieditor-toolbar-group-insert' => 'Mewnosod',
+ 'wikieditor-toolbar-tool-gallery' => 'Oriel lluniau',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Enghraifft.jpg|Disgrifiad1
+$1:Enghraifft.jpg|Disgrifiad2',
+ 'wikieditor-toolbar-tool-newline' => 'Llinell newydd',
+ 'wikieditor-toolbar-tool-table' => 'Tabl',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! pennawd 1
+! pennawd 2
+! pennawd 3
+|-
+| rhes 1, cell 1
+| rhes 1, cell 2
+| rhes 1, cell 3
+|-
+| rhes 2, cell 1
+| rhes 2, cell 2
+| rhes 2, cell 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Testun y gell',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Testun y pennawd',
+ 'wikieditor-toolbar-tool-table-title' => 'Mewnosod tabl',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rhesi',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Colofnau',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Cynhwysir rhes y penawdau',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Dangos borderi',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Gosod tabl y gellir ei drefnu',
+ 'wikieditor-toolbar-tool-table-example' => 'Testun y gell',
+ 'wikieditor-toolbar-tool-table-preview' => 'Rhagolwg',
+ 'wikieditor-toolbar-tool-table-insert' => 'Mewnosod',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Diddymu',
+ 'wikieditor-toolbar-tool-table-toomany' => "Nid yw'n bosib gosod tabl ag iddo mwy na $1 o gelloedd trwy ddefnyddio'r deialog hwn.",
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Nid ydych wedi gosod nifer (dilys) o resi neu o golofnau.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ni allwch osod tabl heb unrhyw resi neu golofnau iddo.',
+ 'wikieditor-toolbar-tool-replace' => 'Canfod a disodli',
+ 'wikieditor-toolbar-tool-replace-title' => 'Canfod a disodli',
+ 'wikieditor-toolbar-tool-replace-search' => 'Chwilier am:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Gosoder yn ei le:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Trin llythrennau mawr a bach fel llythrennau gwahanol',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Trin y llinyn chwilio fel ymadrodd rheolaidd',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Chwilio am y nesaf',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => "Disodli'r nesaf",
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => "Disodli'r cwbwl",
+ 'wikieditor-toolbar-tool-replace-close' => 'Cau',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Ni chanfyddwyd yr hyn a chwiliwyd amdano.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Gwnaethpwyd $1 amnewidiad.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ni osodwyd unrhywbeth yn y blwch chwilio.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => "Nid yw'r ymadrodd rheolaidd a ysgrifennwyd gennych yn ddilys: $1",
+ 'wikieditor-toolbar-section-characters' => 'Nodau arbennig',
+ 'wikieditor-toolbar-characters-page-latin' => 'Lladin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Lladin estynedig',
+ 'wikieditor-toolbar-characters-page-ipa' => 'Yr wyddor phonetig rhyngwladol (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbolau',
+ 'wikieditor-toolbar-characters-page-greek' => 'Groeg',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cyrilig',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabeg',
+ 'wikieditor-toolbar-characters-page-persian' => 'Perseg',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebraeg',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gwjarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laoseg',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Chmereg',
+ 'wikieditor-toolbar-section-help' => 'Cymorth',
+ 'wikieditor-toolbar-help-heading-description' => 'Disgrifiad',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Pan deipiwch hyn',
+ 'wikieditor-toolbar-help-heading-result' => 'fe gewch',
+ 'wikieditor-toolbar-help-page-format' => 'Fformatio',
+ 'wikieditor-toolbar-help-page-link' => 'Cysylltau',
+ 'wikieditor-toolbar-help-page-heading' => 'Penawdau',
+ 'wikieditor-toolbar-help-page-list' => 'Rhestri',
+ 'wikieditor-toolbar-help-page-file' => 'Ffeiliau',
+ 'wikieditor-toolbar-help-page-reference' => 'Troednodion',
+ 'wikieditor-toolbar-help-page-discussion' => 'Sgwrs',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Italig',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Ysgrifen italig''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Ysgrifen italig</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Praff',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Testun praff'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Testun praff</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Praff &amp; italig',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Ysgrifen praff &amp; italig'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Ysgrifen praff &amp; italig</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Cyswllt mewnol',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Page title|Label y cyswllt]]<br />[[Teitl y dudalen]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Label y cyswllt</a><br /><a href='#'>Teitl y dudalen</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Cyswllt allanol',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.enghraifft.org Label y cyswllt]<br />[http://www.enghraifft.org]<br />http://www.enghraifft.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Label y cyswllt</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'pennawd ar lefel 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Y pennawd ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Y pennawd</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'pennawd ar lefel 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Y pennawd ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Y pennawd</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'pennawd ar lefel 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Y pennawd ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Y pennawd</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'pennawd ar lefel 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Y pennawd =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Y pennawd</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Rhestr gyda bwledi',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Eitem ar y rhestr<br />* Eitem ar y rhestr',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Eitem ar y rhestr</li><li>Eitem ar y rhestr</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => "Rhestr wedi'i rhifo",
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Eitem ar y rhestr<br /># Eitem ar y rhestr',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Eitem ar y rhestr</li><li>Eitem ar y rhestr</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Ffeil mewnosodol',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Disgrifiad]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Egluryn' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Chwyddo' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Egluryn</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Troednodyn',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Testun y dudalen.&lt;ref name="test"&gt;[http://www.enghraifft.org ysgrifen y cyswllt], ysgrifen ychwanegol.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => 'Testun y dudalen.',
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Ail-ddefnyddio troednodyn',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Testun y dudalen.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Dangos y troednodion',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Ysgrifen y cyswllt</a>, ysgrifen arall.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Llofnod gyda stamp amser',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Enw defnyddiwr</a> (<a href='#' title='{{#special:mytalk}}'>sgwrs</a>) 15:54, 10 Mehefin 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Llofnod',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Enw defnyddiwr</a> (<a href='#' title='{{#special:mytalk}}'>sgwrs</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Mewnoli',
+ 'wikieditor-toolbar-help-content-indent-syntax' => "Ysgrifen rheolaidd<br />:Ysgrifen wedi'i mewnoli<br />::Ysgrifen wedi'i mewnoli",
+ 'wikieditor-toolbar-help-content-indent-result' => "Ysgrifen rheolaidd<dl><dd>Ysgrifen wedi'i mewnoli<dl><dd>Ysgrifen wedi'i mewnoli</dd></dl></dd></dl>",
+);
+
+/** Danish (Dansk)
+ * @author Christian List
+ * @author F. Cosoleto
+ * @author Froztbyte
+ * @author Peter Alberti
+ * @author Sarrus
+ * @author Sir48
+ */
+$messages['da'] = array(
+ 'wikieditor' => 'Avanceret interface til redigering af wikitekst',
+ 'wikieditor-desc' => 'Giver et udvidet interface til redigering af wikitekst og mange moduler med hjælpefunktioner',
+ 'wikieditor-wikitext-tab' => 'wikitekst',
+ 'wikieditor-loading' => 'Indlæser',
+ 'wikieditor-preview-preference' => 'Aktiver forhåndsvisning side-om-side',
+ 'wikieditor-preview-tab' => 'Forhåndsvisning',
+ 'wikieditor-preview-changes-tab' => 'Ændringer',
+ 'wikieditor-preview-loading' => 'Indlæser...',
+ 'wikieditor-previewDialog-preference' => 'Aktiver forhåndsvisningsdialog',
+ 'wikieditor-previewDialog-tab' => 'Forhåndsvisning',
+ 'wikieditor-previewDialog-loading' => 'Indlæser…',
+ 'wikieditor-publish-preference' => 'Aktiver skridt-for-skridt udgivelse',
+ 'wikieditor-publish-button-publish' => 'Udgiv',
+ 'wikieditor-publish-button-cancel' => 'Afbryd',
+ 'wikieditor-publish-dialog-title' => 'Udgiv som {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Redigeringsbeskrivelse (beskriv kort de ændringer, du har gjort)',
+ 'wikieditor-publish-dialog-minor' => 'Mindre ændring',
+ 'wikieditor-publish-dialog-watch' => 'Overvåg denne side',
+ 'wikieditor-publish-dialog-publish' => 'Udgiv',
+ 'wikieditor-publish-dialog-goback' => 'GÃ¥ tilbage',
+ 'wikieditor-template-editor-preference' => 'Aktiver formbaseret redigering af wikiskabeloner',
+ 'wikieditor-template-editor-dialog-title' => 'Rediger skabelon',
+ 'wikieditor-template-editor-dialog-submit' => 'Opdater',
+ 'wikieditor-template-editor-dialog-cancel' => 'Afbryd',
+ 'wikieditor-templates-preference' => 'Aktiver sammenklappelige skabeloner',
+ 'wikieditor-toc-preference' => 'Aktiver navigerbar indholdsfortegnelse',
+ 'wikieditor-toc-show' => 'Vis indhold',
+ 'wikieditor-toc-hide' => 'Skjul indhold',
+ 'wikieditor-toolbar' => 'Værktøjslinje til redigering',
+ 'wikieditor-toolbar-desc' => 'Værktøjslinje til redigering med udvidet brugervenlighed',
+ 'wikieditor-toolbar-preference' => 'Aktiver forbedret værktøjslinje til redigering',
+ 'wikieditor-toolbar-dialogs-preference' => 'Aktiver dialoger til indsættelse af links, tabeller og mere.',
+ 'wikieditor-toolbar-hidesig' => 'Skjul signaturknappen på sider i hovednavnerummet',
+ 'wikieditor-toolbar-loading' => 'Indlæser ...',
+ 'wikieditor-toolbar-tool-bold' => 'Fed',
+ 'wikieditor-toolbar-tool-bold-example' => 'Fed tekst',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kursiv tekst',
+ 'wikieditor-toolbar-tool-ilink' => 'Intern henvisning',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Henvisningstekst',
+ 'wikieditor-toolbar-tool-xlink' => 'Ekstern henvisning (husk http:// først)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com henvisningstekst',
+ 'wikieditor-toolbar-tool-link' => 'Henvisning',
+ 'wikieditor-toolbar-tool-link-title' => 'Indsæt henvisning',
+ 'wikieditor-toolbar-tool-link-int' => 'Til en wikiartikel/-side',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Artikeltitel:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Sidetitel eller internetadresse',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Henvisningstekst:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Tekst, der skal vises',
+ 'wikieditor-toolbar-tool-link-ext' => 'Til en ekstern webside',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Henvisnings-URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Henvisningstekst:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Indsæt henvisning',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Annuller',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Siden findes',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Siden findes ikke',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Ugyldig titel',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ekstern henvisning',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Kontrollerer om siden findes ...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Titlen du gav, er ugyldig.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "URL'en, du har angivet, ser ud til at være tiltænkt som en henvisning til en anden wikiside.
+Ønsker du at gøre den til en intern henvisning.",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Intern henvisning',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ekstern henvisning',
+ 'wikieditor-toolbar-tool-link-empty' => 'Du har ikke angivet noget at linke til.',
+ 'wikieditor-toolbar-tool-file' => 'Indlejret fil',
+ 'wikieditor-toolbar-tool-file-example' => 'Eksempel.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Fodnote',
+ 'wikieditor-toolbar-tool-reference-example' => 'Indsæt fodnotetekst her',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Annullér',
+ 'wikieditor-toolbar-tool-reference-title' => 'Indsæt reference',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Indsæt',
+ 'wikieditor-toolbar-tool-reference-text' => 'Referencetekst',
+ 'wikieditor-toolbar-tool-signature' => 'Signatur og tidsstempel',
+ 'wikieditor-toolbar-section-advanced' => 'Avanceret',
+ 'wikieditor-toolbar-tool-heading' => 'Overskrift',
+ 'wikieditor-toolbar-tool-heading-1' => 'Niveau 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Niveau 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Niveau 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Niveau 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Niveau 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Overskriftstekst',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Punktliste',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Element i punktliste',
+ 'wikieditor-toolbar-tool-olist' => 'Nummereret liste',
+ 'wikieditor-toolbar-tool-olist-example' => 'Element i nummereret liste',
+ 'wikieditor-toolbar-tool-indent' => 'Indrykning',
+ 'wikieditor-toolbar-tool-indent-example' => 'Indrykket linje',
+ 'wikieditor-toolbar-tool-nowiki' => 'Ingen wikiformatering',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Indsæt uformateret tekst her',
+ 'wikieditor-toolbar-tool-redirect' => 'Omdirigering',
+ 'wikieditor-toolbar-tool-redirect-example' => 'MÃ¥lsidens navn',
+ 'wikieditor-toolbar-tool-big' => 'Stor',
+ 'wikieditor-toolbar-tool-big-example' => 'Stor tekst',
+ 'wikieditor-toolbar-tool-small' => 'Lille',
+ 'wikieditor-toolbar-tool-small-example' => 'Lille tekst',
+ 'wikieditor-toolbar-tool-superscript' => 'Hævet skrift',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Hævet tekst',
+ 'wikieditor-toolbar-tool-subscript' => 'Sænket skrift',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Sænket skrift',
+ 'wikieditor-toolbar-group-insert' => 'Indsæt',
+ 'wikieditor-toolbar-tool-gallery' => 'Billedgalleri',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Eksempel.jpg|Billedtekst1
+$1:Eksempel.jpg|Billedtekst2',
+ 'wikieditor-toolbar-tool-newline' => 'Ny linje',
+ 'wikieditor-toolbar-tool-table' => 'Tabel',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! overskrift 1
+! overskrift 2
+! overskrift 3
+|-
+| række 1, celle 1
+| række 1, celle 2
+| række 1, celle 3
+|-
+| række 2, celle 1
+| række 2, celle 2
+| række 2, celle 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Række $1, celle $2',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Overskriftstekst',
+ 'wikieditor-toolbar-tool-table-title' => 'Indsæt tabel',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rækker',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolonner',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Tilføj række til kolonneoverskrifter',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stil med kanter',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Gør tabel sorterbar',
+ 'wikieditor-toolbar-tool-table-example' => 'Celletekst',
+ 'wikieditor-toolbar-tool-table-preview' => 'Forhåndsvisning',
+ 'wikieditor-toolbar-tool-table-insert' => 'Indsæt',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Annullér',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Det er ikke muligt at indsætte en tabel med mere end $1 celler med denne dialogboks',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Du har ikke angivet et gyldigt antal rækker eller kolonner.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Du kan ikke indsætte en tabel med nul rækker eller kolonner',
+ 'wikieditor-toolbar-tool-replace' => 'Søg og erstat',
+ 'wikieditor-toolbar-tool-replace-title' => 'Søg og erstat',
+ 'wikieditor-toolbar-tool-replace-search' => 'Søg efter:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Erstat med:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Skeln mellem store og små bogstaver',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Behandl søgestrengen som et regulært udtryk',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Find næste',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Erstat alle',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Erstat alle',
+ 'wikieditor-toolbar-tool-replace-close' => 'Luk',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Din søgning gav ingen resultater',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 udskiftning(er) foretaget.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Du skrev ikke noget at søge efter',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Det regulære udtryk du skrev er ugyldigt: $1',
+ 'wikieditor-toolbar-section-characters' => 'Specialtegn',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Udvidet latin',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symboler',
+ 'wikieditor-toolbar-characters-page-greek' => 'Græsk',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kyrillisk',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabisk',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persisk',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebraisk',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengali',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singalesisk',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laotisk',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Hjælp',
+ 'wikieditor-toolbar-help-heading-description' => 'Beskrivelse',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Hvad du skriver',
+ 'wikieditor-toolbar-help-heading-result' => 'Hvad du får',
+ 'wikieditor-toolbar-help-page-format' => 'Formatering',
+ 'wikieditor-toolbar-help-page-link' => 'Henvisninger',
+ 'wikieditor-toolbar-help-page-heading' => 'Overskrifter',
+ 'wikieditor-toolbar-help-page-list' => 'Lister',
+ 'wikieditor-toolbar-help-page-file' => 'Filer',
+ 'wikieditor-toolbar-help-page-reference' => 'Fodnoter',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskussion',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursiv tekst''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursiv tekst</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Fed',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Fed tekst'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Fed tekst</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Fed &amp; kursiv',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Fed &amp; kursiv tekst'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Fed &amp; kursiv tekst</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Intern henvisning',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Sidetitel|Henvisningstekst]]<br />[[Sidetitel]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Henvisningstekst</a><br /><a href='#'>Sidetitel</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ekstern henvisning',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Henvisningstekst]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Henvisningstekst</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Overskrift på niveau 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Overskriftstekst ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Overskriftstekst</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Overskrift på niveau 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Overskriftstekst ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Overskriftstekst</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Overskrift på niveau 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Overskriftstekst ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Overskriftstekst</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Overskrift på niveau 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Overskriftstekst =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Overskriftstekst</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Punktliste',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Listeelement<br />* Listeelement',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Listeelement</li><li>Listeelement</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Nummereret liste',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Listeelement<br /># Listeelement',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Listeelement</li><li>Listeelement</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Indlejret fil',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Billedtekst]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Billedtekst' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Forstør' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Billedtekst</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Fodnote',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Sidetekst.&lt;ref name="test"&gt;[http://www.example.org Henvisningstekst], yderligere tekst.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Sidetekst.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Yderligere henvisninger til samme fodnote',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Sidetekst.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Vis fodnoter',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Henvisningstekst</a>, yderligere tekst.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Signatur og tidsstempel',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Brugernavn</a> (<a href='#' title='{{#special:mytalk}}'>diskussion</a>) 10. juni 2009, 15:54 (CEST)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signatur',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Brugernavn</a> (<a href='#' title='{{#special:mytalk}}'>diskussion</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indrykning',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normal tekst<br />:Indrykket tekst<br />::Indrykket tekst',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normal tekst<dl><dd>Indrykket tekst<dl><dd>Indrykket tekst</dd></dl></dd></dl>',
+);
+
+/** German (Deutsch)
+ * @author Als-Holder
+ * @author Church of emacs
+ * @author DaSch
+ * @author Kghbln
+ * @author MF-Warburg
+ * @author Metalhead64
+ * @author Mikullovci11
+ * @author Umherirrender
+ * @author Ziko
+ * @author ✓
+ */
+$messages['de'] = array(
+ 'wikieditor' => 'Fortgeschrittener Wikitext-Editor',
+ 'wikieditor-desc' => 'Ermöglicht eine erweiterbare Oberfläche zur Wikitext-Bearbeitung sowie viele weitere neue Funktionen',
+ 'wikieditor-wikitext-tab' => 'Wikitext',
+ 'wikieditor-loading' => 'Lade',
+ 'wikieditor-preview-preference' => 'Gegenüberstellungs-Vorschau ermöglichen',
+ 'wikieditor-preview-tab' => 'Vorschau',
+ 'wikieditor-preview-changes-tab' => 'Änderungen',
+ 'wikieditor-preview-loading' => 'lädt …',
+ 'wikieditor-previewDialog-preference' => 'Aktiviere die Abfrage zur Vorschau',
+ 'wikieditor-previewDialog-tab' => 'Vorschau',
+ 'wikieditor-previewDialog-loading' => 'lädt …',
+ 'wikieditor-publish-preference' => 'Schritt-für-Schritt-Veröffentlichung ermöglichen',
+ 'wikieditor-publish-button-publish' => 'Veröffentlichen',
+ 'wikieditor-publish-button-cancel' => 'Abbrechen',
+ 'wikieditor-publish-dialog-title' => 'Auf {{SITENAME}} veröffentlichen',
+ 'wikieditor-publish-dialog-summary' => 'Zusammenfassung (kurze Beschreibung der von dir vorgenommenen Änderungen):',
+ 'wikieditor-publish-dialog-minor' => 'Nur Kleinigkeiten wurden verändert',
+ 'wikieditor-publish-dialog-watch' => 'Diese Seite beobachten',
+ 'wikieditor-publish-dialog-publish' => 'Veröffentlichen',
+ 'wikieditor-publish-dialog-goback' => 'Zurück',
+ 'wikieditor-template-editor-preference' => 'Formularbasiertes Bearbeiten von Wiki-Vorlagen aktivieren',
+ 'wikieditor-template-editor-dialog-title' => 'Vorlage bearbeiten',
+ 'wikieditor-template-editor-dialog-submit' => 'Aktualisieren',
+ 'wikieditor-template-editor-dialog-cancel' => 'Abbrechen',
+ 'wikieditor-templates-preference' => 'Aktivierung des Ein- und Ausblendens von Vorlagen',
+ 'wikieditor-toc-preference' => 'Inhaltsverzeichnis im Bearbeiten-Fenster aktivieren',
+ 'wikieditor-toc-show' => 'Inhaltsverzeichnis einblenden',
+ 'wikieditor-toc-hide' => 'Inhaltsverzeichnis ausblenden',
+ 'wikieditor-toolbar' => 'Bearbeiten-Werkzeugleiste',
+ 'wikieditor-toolbar-desc' => 'Bearbeiten-Werkzeugleiste mit erweiterter Benutzerfreundlichkeit',
+ 'wikieditor-toolbar-preference' => 'Erweiterte Bearbeiten-Werkzeugleiste aktivieren',
+ 'wikieditor-toolbar-dialogs-preference' => 'Dialoge für das Einfügen von Links, Tabellen usw. aktivieren',
+ 'wikieditor-toolbar-hidesig' => 'Den Unterschriftsbutton bei Seiten im Artikelnamensraum ausblenden',
+ 'wikieditor-toolbar-loading' => 'Laden …',
+ 'wikieditor-toolbar-tool-bold' => 'Fett',
+ 'wikieditor-toolbar-tool-bold-example' => 'Fetter Text',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kursiver Text',
+ 'wikieditor-toolbar-tool-ilink' => 'Interner Link',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Linktitel',
+ 'wikieditor-toolbar-tool-xlink' => 'Externer Link (http:// beachten)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com Link-Text',
+ 'wikieditor-toolbar-tool-link' => 'Link',
+ 'wikieditor-toolbar-tool-link-title' => 'Link einfügen',
+ 'wikieditor-toolbar-tool-link-int' => 'Zu einer Wiki-Seite',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Seitentitel:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titel der Seite oder URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Anzeige im Text:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Text eingeben, der angezeigt werden soll',
+ 'wikieditor-toolbar-tool-link-ext' => 'Zu einer externen Internetseite',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL des Links:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Linkbezeichnung:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Link einfügen',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Abbrechen',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Seite bereits vorhanden',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Seite existiert nicht',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Ungültiger Titel',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Externer Link',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Prüfe, ob Seite existiert …',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Der von dir angegebene Seitenname ist ungültig.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Die angegebene URL sieht so aus, als ob sie auf eine andere Wikiseite verlinken würde.
+Möchtest du daraus einen internen Link machen?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Interner Link',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Externer Link',
+ 'wikieditor-toolbar-tool-link-empty' => 'Du hast nichts zum Verlinken angegeben.',
+ 'wikieditor-toolbar-tool-file' => 'Eingebettete Datei',
+ 'wikieditor-toolbar-tool-file-example' => 'Beispiel.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Beleg',
+ 'wikieditor-toolbar-tool-reference-example' => 'Fußnotentext hier einfügen',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Abbrechen',
+ 'wikieditor-toolbar-tool-reference-title' => 'Einzelnachweis einfügen',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Einfügen',
+ 'wikieditor-toolbar-tool-reference-text' => 'Text des Einzelnachweises',
+ 'wikieditor-toolbar-tool-signature' => 'Signatur und Zeitstempel',
+ 'wikieditor-toolbar-section-advanced' => 'Erweitert',
+ 'wikieditor-toolbar-tool-heading' => 'Ãœberschrift',
+ 'wikieditor-toolbar-tool-heading-1' => 'Ebene 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Ebene 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Ebene 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Ebene 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Ebene 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Kopfzeile',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Aufgezählte Liste',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Aufgezählter Listeneintrag',
+ 'wikieditor-toolbar-tool-olist' => 'Nummerierte Liste',
+ 'wikieditor-toolbar-tool-olist-example' => 'Nummerierter Listeneintrag',
+ 'wikieditor-toolbar-tool-indent' => 'Einrückung',
+ 'wikieditor-toolbar-tool-indent-example' => 'Eingerückte Zeile',
+ 'wikieditor-toolbar-tool-nowiki' => 'Keine Wiki-Formatierung',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Hier unformatierten Text eingeben',
+ 'wikieditor-toolbar-tool-redirect' => 'Weiterleitung',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Zielseitenname',
+ 'wikieditor-toolbar-tool-big' => 'Groß',
+ 'wikieditor-toolbar-tool-big-example' => 'Großer Text',
+ 'wikieditor-toolbar-tool-small' => 'Klein',
+ 'wikieditor-toolbar-tool-small-example' => 'Kleiner Text',
+ 'wikieditor-toolbar-tool-superscript' => 'Hochgestellt',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Hochgestellter Text',
+ 'wikieditor-toolbar-tool-subscript' => 'Tiefgestellt',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Tiefgestellter Text',
+ 'wikieditor-toolbar-group-insert' => 'Einfügen',
+ 'wikieditor-toolbar-tool-gallery' => 'Bildergalerie',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Beispiel.jpg|Beschreibung1
+$1:Beispiel.jpg|Beschreibung2',
+ 'wikieditor-toolbar-tool-newline' => 'Zeilenumbruch erzwingen (nicht im Fließtext verwenden)',
+ 'wikieditor-toolbar-tool-table' => 'Tabelle',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! Ãœberschrift 1
+! Ãœberschrift 2
+! Ãœberschrift 3
+|-
+| Zeile 1, Zelle 1
+| Zeile 1, Zelle 2
+| Zeile 1, Zelle 3
+|-
+| Zeile 2, Zelle 1
+| Zeile 2, Zelle 2
+| Zeile 2, Zelle 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Zellentext',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Ãœberschrift',
+ 'wikieditor-toolbar-tool-table-title' => 'Tabelle einfügen',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Zeilen',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Spalten',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'mit Kopfzeile',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'mit Rahmen',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tabelle sortierbar machen',
+ 'wikieditor-toolbar-tool-table-example' => 'Beispiel',
+ 'wikieditor-toolbar-tool-table-preview' => 'Vorschau',
+ 'wikieditor-toolbar-tool-table-insert' => 'Einfügen',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Abbrechen',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Das Einfügen einer Tabelle mit mehr als $1 Zellen ist mit diesem Dialog nicht möglich.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Du hast keine gültige Anzahl von Zeilen oder Spalten angegeben.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Du kannst keine Tabelle mit null Zeilen oder Spalten einfügen.',
+ 'wikieditor-toolbar-tool-replace' => 'Suchen und Ersetzen',
+ 'wikieditor-toolbar-tool-replace-title' => 'Suchen und Ersetzen',
+ 'wikieditor-toolbar-tool-replace-search' => 'Suche nach:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Ersetze durch:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Groß- und Kleinschreibung beachten',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Suchzeichenkette als regulären Ausdruck behandeln',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Nächste finden',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Nächste ersetzen',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Alle ersetzen',
+ 'wikieditor-toolbar-tool-replace-close' => 'Schließen',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Deine Suche hat keine Ergebnisse erbracht.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 Ersetzung(en) durchgeführt.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Du hast nichts zum Suchen eingegeben.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Der eingegebene reguläre Ausdruck ist ungültig: $1',
+ 'wikieditor-toolbar-section-characters' => 'Sonderzeichen',
+ 'wikieditor-toolbar-characters-page-latin' => 'Lateinisch',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Lateinisch, erweitert',
+ 'wikieditor-toolbar-characters-page-ipa' => 'Internationales Phonetisches Alphabet (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbole',
+ 'wikieditor-toolbar-characters-page-greek' => 'Griechisch',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kyrillisch',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabisch',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persisch',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebräisch',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalisch',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singhalesisch',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laotisch',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Hilfe',
+ 'wikieditor-toolbar-help-heading-description' => 'Beschreibung',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Was du eingibst',
+ 'wikieditor-toolbar-help-heading-result' => 'Wie es aussieht',
+ 'wikieditor-toolbar-help-page-format' => 'Formatierung',
+ 'wikieditor-toolbar-help-page-link' => 'Links',
+ 'wikieditor-toolbar-help-page-heading' => 'Ãœberschriften',
+ 'wikieditor-toolbar-help-page-list' => 'Listen',
+ 'wikieditor-toolbar-help-page-file' => 'Dateien',
+ 'wikieditor-toolbar-help-page-reference' => 'Quellennachweise',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskussion',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursiver Text''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursiver Text</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Fett',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Fetter Text'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Fetter Text</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Fett &amp; kursiv',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Fetter &amp; kursiver Text'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Fetter &amp; kursiver Text</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Interner Link',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Seitentitel|Linktext]]<br />[[Seitentitel]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Linktext</a><br /><a href='#'>Seitentitel</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Externer Link',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.beispiel.org Linktext]<br />[http://www.beispiel.org]<br />http://www.beispiel.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Linktext</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.beispiel.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Kopfzeile Ebene 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Ãœberschrift ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Ãœberschrift</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Kopfzeile Ebene 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Ãœberschrift ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Ãœberschrift</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Kopfzeile Ebene 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Ãœberschrift ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Ãœberschrift</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Kopfzeile Ebene 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Ãœberschrift =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Ãœberschrift</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Aufgezählte Liste',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Listeneintrag<br />* Listeneintrag',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Listeneintrag</li><li>Listeneintrag</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Nummerierte Liste',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Listeneintrag<br /># Listeneintrag',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Listeneintrag</li><li>Listeneintrag</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Eingebettete Datei',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Beispiel.png|thumb|Beschreibung]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Beschreibung' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Vergrößern' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Beschreibung</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Beleg',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Seitentext.&lt;ref name="test"&gt;[http://www.beispiel.org Linktext], zusätzlicher Text.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Seitentext.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Den gleichen Beleg erneut verwenden',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Seitentext.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Belege anzeigen',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.beispiel.org' class='external text' href='#'>Linktext</a>, zusätzlicher Text.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Signatur mit Zeitstempel',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Benutzername</a> (<a href='#' title='{{#special:mytalk}}'>Diskussion</a>) 15:54, 10. Jun. 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signatur',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Benutzername</a> (<a href='#' title='{{#special:mytalk}}'>Diskussion</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Einrücken',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normaler Text<br />:Eingerückter Text<br />::Eingerückter Text',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normaler Text<dl><dd>Eingerückter Text<dl><dd>Eingerückter Text</dd></dl></dd></dl>',
+);
+
+/** German (formal address) (‪Deutsch (Sie-Form)‬)
+ * @author Imre
+ */
+$messages['de-formal'] = array(
+ 'wikieditor-publish-dialog-summary' => 'Zusammenfassung (kurze Beschreibung der von Ihnen vorgenommenen Änderungen):',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Der von Ihnen angegebene Titel ist ungültig.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Die angegebene URL sieht so aus, als ob sie auf eine andere Wikiseite verlinken würde.
+Möchten Sie daraus einen internen Link machen?',
+ 'wikieditor-toolbar-tool-link-empty' => 'Sie haben nichts zum Verlinken angegeben.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Sie haben keine gültige Anzahl von Zeilen oder Spalten angegeben.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Sie können keine Tabelle mit null Zeilen oder Spalten einfügen.',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Ihre Suche hat keine Ergebnisse erzielt.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Sie haben nichts zum Suchen eingegeben.',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Was Sie eingeben',
+);
+
+/** Zazaki (Zazaki)
+ * @author Mirzali
+ * @author Xoser
+ */
+$messages['diq'] = array(
+ 'wikieditor' => 'Interfaceye wikitext ke raver siyayo',
+ 'wikieditor-desc' => 'Yew pedê nuştişiyê girdi u moduleyanê binan dano',
+ 'wikieditor-wikitext-tab' => 'Wikimeqale',
+ 'wikieditor-loading' => 'Bar keno',
+ 'wikieditor-preview-preference' => 'verqeyde miqeyese a bike',
+ 'wikieditor-preview-tab' => 'Verqeyd',
+ 'wikieditor-preview-changes-tab' => 'Vurnayışi',
+ 'wikieditor-preview-loading' => 'Ho bar keno...',
+ 'wikieditor-previewDialog-tab' => 'Verqeyd',
+ 'wikieditor-previewDialog-loading' => 'Ho bar keno...',
+ 'wikieditor-publish-preference' => 'Game be game çap kerdişi a bike',
+ 'wikieditor-publish-button-publish' => 'Çap ke',
+ 'wikieditor-publish-button-cancel' => 'Iptal bike',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}} rê çap ke',
+ 'wikieditor-publish-dialog-summary' => 'Xulasayê vurnayişi (ser vurnayişê xo xulasa binuse):',
+ 'wikieditor-publish-dialog-minor' => 'VurnayiÅŸo qickek',
+ 'wikieditor-publish-dialog-watch' => 'Ena pele seyr bike',
+ 'wikieditor-publish-dialog-publish' => 'Çap ke',
+ 'wikieditor-publish-dialog-goback' => 'Reyna ÅŸi',
+ 'wikieditor-template-editor-preference' => 'Vurnayışê form-bıngeyınê şablonanê wikiy feal ke',
+ 'wikieditor-template-editor-dialog-title' => 'Template bivurne',
+ 'wikieditor-template-editor-dialog-submit' => 'Rocaniye',
+ 'wikieditor-template-editor-dialog-cancel' => 'Bıtexelne',
+ 'wikieditor-templates-preference' => 'Qic kerdisê sabloni a bike',
+ 'wikieditor-toc-preference' => 'Tabloyo tedeesteyi ke navigasyon keno ay a bike',
+ 'wikieditor-toc-show' => 'Tedeesteyi bimocne',
+ 'wikieditor-toc-hide' => 'Tedeesteyi binumne',
+ 'wikieditor-toolbar' => 'nizamkerdışê çuyaya haceti',
+ 'wikieditor-toolbar-desc' => 'Xacetê çuveyî pê enhanced usability bivurne',
+ 'wikieditor-toolbar-preference' => 'çuyaya haceti yo dewlemendbiyayeyi aktif ker',
+ 'wikieditor-toolbar-dialogs-preference' => "qey têare kerdışê gıre, tablo usb'ani mesajan aktif bıker",
+ 'wikieditor-toolbar-loading' => 'bar beno...',
+ 'wikieditor-toolbar-tool-bold' => 'qalın',
+ 'wikieditor-toolbar-tool-bold-example' => 'metno qalın',
+ 'wikieditor-toolbar-tool-italic' => 'Ä°talik',
+ 'wikieditor-toolbar-tool-italic-example' => 'metno italik',
+ 'wikieditor-toolbar-tool-ilink' => 'sernameyê zerreyi',
+ 'wikieditor-toolbar-tool-ilink-example' => 'sernameyê gıreyi',
+ 'wikieditor-toolbar-tool-xlink' => 'gıreyê teberi (http:// prefixi xo vir ra mekerê)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.misal.com sernameyê gıreyi',
+ 'wikieditor-toolbar-tool-link' => 'gıre',
+ 'wikieditor-toolbar-tool-link-title' => 'gıre bıerz',
+ 'wikieditor-toolbar-tool-link-int' => 'yew pelê wiki re',
+ 'wikieditor-toolbar-tool-link-int-target' => 'sernameyê peli',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Sernamey ya zi URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'metnê gıreyi',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Nuştewo ke gani bımocniyo ey bınuse',
+ 'wikieditor-toolbar-tool-link-ext' => 'yew keyepelê teberi re',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URLyê gıreyi',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'metnê gıreyi',
+ 'wikieditor-toolbar-tool-link-insert' => 'gıre bıerz',
+ 'wikieditor-toolbar-tool-link-cancel' => 'ibtal',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'pel esto',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'pel çino',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'sername meqbul niyo',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Gırêy teberi',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'mewcudiyetê peli konrol beno',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'sername yo ke şıma nişan kerdo meqbul niyo',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URLyo ke şıma nişan kerdo, pelê yewna wikiyi re gıre biyo aseno.
+şıma wazeni no gıre yew gıreyo daxili bıbo?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'gıreyo zerreyi',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'gıreyo teberi',
+ 'wikieditor-toolbar-tool-link-empty' => 'Gırey to be thebay çıniyo.',
+ 'wikieditor-toolbar-tool-file' => 'dosyaya wedarteyi/weradaye',
+ 'wikieditor-toolbar-tool-file-example' => 'misal.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'çıme',
+ 'wikieditor-toolbar-tool-reference-example' => 'metnê notê bınini tiya kerê',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Bıtexelne',
+ 'wikieditor-toolbar-tool-reference-title' => 'Referance de bike',
+ 'wikieditor-toolbar-tool-reference-insert' => 'de bike',
+ 'wikieditor-toolbar-tool-reference-text' => 'Nusteyê Referansi',
+ 'wikieditor-toolbar-tool-signature' => 'tamğayê imza ve zamani',
+ 'wikieditor-toolbar-section-advanced' => 'Raver',
+ 'wikieditor-toolbar-tool-heading' => 'sername',
+ 'wikieditor-toolbar-tool-heading-1' => 'seviyeya 1.',
+ 'wikieditor-toolbar-tool-heading-2' => 'seviyeya 2.',
+ 'wikieditor-toolbar-tool-heading-3' => 'seviyeya 3.',
+ 'wikieditor-toolbar-tool-heading-4' => 'seviyeya 4.',
+ 'wikieditor-toolbar-tool-heading-5' => 'seviyeya 5.',
+ 'wikieditor-toolbar-tool-heading-example' => 'metnê sernameyi',
+ 'wikieditor-toolbar-group-format' => 'liste',
+ 'wikieditor-toolbar-tool-ulist' => 'listeya maddeya işaretıni',
+ 'wikieditor-toolbar-tool-ulist-example' => 'unsuro listeya maddeya işaretıni',
+ 'wikieditor-toolbar-tool-olist' => 'listeya numreyıni',
+ 'wikieditor-toolbar-tool-olist-example' => 'unsuro listeya numreyıni',
+ 'wikieditor-toolbar-tool-indent' => 'Paragraf',
+ 'wikieditor-toolbar-tool-indent-example' => 'Rêza paragrafi',
+ 'wikieditor-toolbar-tool-nowiki' => 'Formetê wikiyi cini yo',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Ne-format nuşte itiya ra bıerz',
+ 'wikieditor-toolbar-tool-redirect' => 'Reyna ber',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nameyê pele ke hedef biyo',
+ 'wikieditor-toolbar-tool-big' => 'gırd',
+ 'wikieditor-toolbar-tool-big-example' => 'metno gırd',
+ 'wikieditor-toolbar-tool-small' => 'qıc',
+ 'wikieditor-toolbar-tool-small-example' => 'metno qıc',
+ 'wikieditor-toolbar-tool-superscript' => 'simgeya serıni',
+ 'wikieditor-toolbar-tool-superscript-example' => 'metnê simgeya serıni',
+ 'wikieditor-toolbar-tool-subscript' => 'simgeya cêrıni',
+ 'wikieditor-toolbar-tool-subscript-example' => 'metnê simgeya cêrıni',
+ 'wikieditor-toolbar-group-insert' => 'têare ker',
+ 'wikieditor-toolbar-tool-gallery' => 'galeriya resmi',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:misal.jpg|nuşteyê resmi1
+$1:misal.jpg|nuşteyê resmi2',
+ 'wikieditor-toolbar-tool-newline' => 'satıro newe',
+ 'wikieditor-toolbar-tool-table' => 'Tablo',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! sername 1
+! sername 2
+! sername 3
+|-
+| satır 1, hucre 1
+| satır 1, hucre 2
+| satır 1, hucre 3
+|-
+| satır 2, hucre 1
+| satır 2, hucre 2
+| satır 2, hucre 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Metnê hucra',
+ 'wikieditor-toolbar-tool-table-example-header' => 'metnê sernameyi',
+ 'wikieditor-toolbar-tool-table-title' => 'tablo bıerz',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'satıri/rêzi',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'estuni',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'satırê sername zi bıger',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'sinorê stili',
+ 'wikieditor-toolbar-tool-table-sortable' => 'make table rêz bena',
+ 'wikieditor-toolbar-tool-table-example' => 'metnê hucreyi',
+ 'wikieditor-toolbar-tool-table-preview' => 'seyrkerdışo ewwil',
+ 'wikieditor-toolbar-tool-table-insert' => 'têare ker',
+ 'wikieditor-toolbar-tool-table-cancel' => 'ibtal',
+ 'wikieditor-toolbar-tool-table-toomany' => '$1 hucreyın ra ziyed tablo eştış pê no mesaj mumkin niyo',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'şıma pê yew amaro meqbul o satır u estun cı nêkewti',
+ 'wikieditor-toolbar-tool-table-zero' => 'tablo ya ke tede satır u estun çinibo şıma nêşkeni têare bıkeri',
+ 'wikieditor-toolbar-tool-replace' => 'bıgêr u bıvurn',
+ 'wikieditor-toolbar-tool-replace-title' => 'bıgêr u bıvurn',
+ 'wikieditor-toolbar-tool-replace-search' => 'qey ıney bıgêr',
+ 'wikieditor-toolbar-tool-replace-replace' => 'pê ıney bıvurn',
+ 'wikieditor-toolbar-tool-replace-case' => 'harfa gırd u qıci re hessas o',
+ 'wikieditor-toolbar-tool-replace-regex' => 'qutiya cıgerayişi de yew muameleya ifade bıker.',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'dıma ke yeno bıvin',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'o bin bıvurn',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'pêroyin bıvurn',
+ 'wikieditor-toolbar-tool-replace-close' => 'Bıqefelne',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'çi yo ke şıma gêrenê cı çin o.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 vurnayiş vıraziya.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'şıma qey cıgêrayiş taway/çiyek nênuşt',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'ifadeya normal a ke şıma kwene cı meqbul niya: $1',
+ 'wikieditor-toolbar-section-characters' => 'karakterê xususiyî',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'latinkiya hêrabiyaye',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Semboli',
+ 'wikieditor-toolbar-characters-page-greek' => 'Yunan',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kiril',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Erebki',
+ 'wikieditor-toolbar-characters-page-persian' => 'Fariski',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ä°braniki',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhalaki',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujaratki',
+ 'wikieditor-toolbar-section-help' => 'yardim',
+ 'wikieditor-toolbar-help-heading-description' => 'Beyan kerdış',
+ 'wikieditor-toolbar-help-heading-syntax' => 'o yo ke şıma nuşt',
+ 'wikieditor-toolbar-help-heading-result' => 'o yo ke şıma gırewt',
+ 'wikieditor-toolbar-help-page-format' => 'fesal dayiÅŸ/format',
+ 'wikieditor-toolbar-help-page-link' => 'gıreyi',
+ 'wikieditor-toolbar-help-page-heading' => 'sernameyi',
+ 'wikieditor-toolbar-help-page-list' => 'listeyi',
+ 'wikieditor-toolbar-help-page-file' => 'dosyayi',
+ 'wikieditor-toolbar-help-page-reference' => 'çımeyi/referansi',
+ 'wikieditor-toolbar-help-page-discussion' => 'werê-ameyiş/munaqeşa',
+ 'wikieditor-toolbar-help-content-italic-description' => 'italik',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''metno italik''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>metno italik</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'qalın',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''metno qalın'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>metno qalın</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'qalın &amp; italik',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''qalın &amp; metno italik'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>qalın &amp; metno italik</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'gıreyê zerreyi',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[sernameyê peli|sernameyê gıreyi]]<br />[[sernameyê peli]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>sernameyê gıreyi</a><br /><a href='#'>sernameyê peli</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'gıreyê teberi',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.misal.org sernamyê gıreyi]<br />[http://www.misal.org]<br />http://www.misal.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>sernameyê gıreyi</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.misal.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'sernameyê seviyeya 2.',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== sernameyê metni ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>sernameyê metni</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'sernameyê seviyeya 3.',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== sernameyê metni ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>sernameyê seviyeya 3.</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'sernameyê seviyeya 4.',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '== sernameyê metni ==',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>sernameyê seviyeya 4.</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'sernameyê seviyeya 5.',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== sernameyê metni =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>sernameyê seviyeya 5.</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'listeya işareti ya maddeyın',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* unsurê listeyi<br />* unsurê listeyi',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>unsurê listeyi</li><li>unsurê listeyi</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'listeya numreyın',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# unsurê listeyi<br /># unsurê listeyi',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>unsurê listeyi</li><li>unsurê listeyi</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'dosyaya weradaye/nımıte',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Nuşteyê resîmî]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>metnê resmi</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'çıme/referans',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'metnê peli.&lt;ref name="tesel kerdış/cerebnayiş"&gt;[http://www.misal.org metnê gıreyi], zeylê metni.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "metnê peli.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'şuxulnayişê zeylê o çımeyi',
+ 'wikieditor-toolbar-help-content-rereference-result' => "metnê peli.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'çımeyi ramocın',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.misal.org' class='external text' href='#'>metnê gıreyi</a>, zeylê metni.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'pê tamğayê zemani imza eştış',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>nameyê karberi</a> (<a href='#' title='{{#special:mytalk}}'>mesaj</a>) 15:54, 10 Heziran 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'imza',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>nameyê karberi</a> (<a href='#' title='{{#special:mytalk}}'>mesaj</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indent',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'metno normal<br />:metno indent<br />::metno indent',
+ 'wikieditor-toolbar-help-content-indent-result' => 'metno normal<dl><dd>metno indent<dl><dd>metno indent</dd></dl></dd></dl>',
+);
+
+/** Lower Sorbian (Dolnoserbski)
+ * @author Michawiki
+ */
+$messages['dsb'] = array(
+ 'wikieditor' => 'Rozšyrjony pówjerch za wobźěkowabnje wikiteksta',
+ 'wikieditor-desc' => 'Stoj rozšyrjobny pówjerch za wobźěłowanje wikiteksta a wjele modulow k dispoziciji',
+ 'wikieditor-wikitext-tab' => 'WikiTekst',
+ 'wikieditor-loading' => 'Zacytujo se',
+ 'wikieditor-preview-preference' => 'Pśeglěd bok pó boku zmóžniś',
+ 'wikieditor-preview-tab' => 'Pśeglěd',
+ 'wikieditor-preview-changes-tab' => 'Změny',
+ 'wikieditor-preview-loading' => 'Zacytujo se...',
+ 'wikieditor-previewDialog-preference' => 'Pśeglědowy dialog zmóžniś',
+ 'wikieditor-previewDialog-tab' => 'Pśeglěd',
+ 'wikieditor-previewDialog-loading' => 'Zacytujo se...',
+ 'wikieditor-publish-preference' => 'Publicěrowanje kšać pó kšacu zmóžniś',
+ 'wikieditor-publish-button-publish' => 'Wózjawiś',
+ 'wikieditor-publish-button-cancel' => 'Pśetergnuś',
+ 'wikieditor-publish-dialog-title' => 'Do {{GRAMMAR:genitiw|{{SITENAME}}}} wózjawiś',
+ 'wikieditor-publish-dialog-summary' => 'Zespominanje změnow (wópisaj krotko změny, kótareř sy cynił):',
+ 'wikieditor-publish-dialog-minor' => 'Snadna změna',
+ 'wikieditor-publish-dialog-watch' => 'Toś ten bok wobglědowaś',
+ 'wikieditor-publish-dialog-publish' => 'Wózjawiś',
+ 'wikieditor-publish-dialog-goback' => 'Slědk',
+ 'wikieditor-template-editor-preference' => 'Wobźěłowanje wikipśedłogow na zakłaźe formularow zmóžniś',
+ 'wikieditor-template-editor-dialog-title' => 'Pśedłogu wobźěłaś',
+ 'wikieditor-template-editor-dialog-submit' => 'Aktualizěrowaś',
+ 'wikieditor-template-editor-dialog-cancel' => 'Pśetergnuś',
+ 'wikieditor-templates-preference' => 'Fałdowanje pśedłogow zmóžniś',
+ 'wikieditor-toc-preference' => 'Nawigěrujobny zapis wopśimjeśa zmóžniś',
+ 'wikieditor-toc-show' => 'Wopśimjeśe pokazaś',
+ 'wikieditor-toc-hide' => 'Wopśimjeśe schowaś',
+ 'wikieditor-toolbar' => 'Wobźěłowańska rědowa kšoma',
+ 'wikieditor-toolbar-desc' => 'Rědowa kšoma za wobźěłowanje bokow z pólěpšoneju wužywajobnosću',
+ 'wikieditor-toolbar-preference' => 'Pólěpšonu wobźěłowańsku rědowu kšomu aktiwěrowaś',
+ 'wikieditor-toolbar-dialogs-preference' => 'Dialogi za zasajźenje wótkazow, tabelow a hynakšego zmóžniś',
+ 'wikieditor-toolbar-loading' => 'Zacytujo se...',
+ 'wikieditor-toolbar-tool-bold' => 'Tucny',
+ 'wikieditor-toolbar-tool-bold-example' => 'Tucny tekst',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiwny',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kursiwny tekst',
+ 'wikieditor-toolbar-tool-ilink' => 'Interny wótkaz',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titel wótkaza',
+ 'wikieditor-toolbar-tool-xlink' => 'Eksterny wótkaz (njezabydni prefiks http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.pśikład.de titel wótkaza',
+ 'wikieditor-toolbar-tool-link' => 'Wótkaz',
+ 'wikieditor-toolbar-tool-link-title' => 'Wótkaz zasunuś',
+ 'wikieditor-toolbar-tool-link-int' => 'K wikijowemu nastawkoju/bokoju',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Titel nastawka:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titel boka abo URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Wótkazowy tekst:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Tekst zapódaś, kótaryž ma se pokazaś',
+ 'wikieditor-toolbar-tool-link-ext' => 'K eksternemu webbokoju',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL wótkaza:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Tekst wótkaza:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Wótkaz zasunuś',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Pśetergnuś',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Bok eksistěrujo',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Bok njeeksistěrujo',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Njepłaśiwy titel',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Eksterny wótkaz',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Eksistenca boka se pśekontrolěrujo...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Titel, kótaryž sy pódał, jo njepłaśiwy.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL, kótaryž sy pódał, wuglěda, ako by był za wótkaz k drugemu wikibokoju.
+Coš jen do internego wótkaza psétwóriś?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Interny wótkaz',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Eksterny wótkaz',
+ 'wikieditor-toolbar-tool-link-empty' => 'Njejsy nic za wótkazowanje pódał.',
+ 'wikieditor-toolbar-tool-file' => 'Zasajźona dataja',
+ 'wikieditor-toolbar-tool-file-example' => 'Psikład.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referenca',
+ 'wikieditor-toolbar-tool-reference-example' => 'Nožku how zasajźiś',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Pśetergnuś',
+ 'wikieditor-toolbar-tool-reference-title' => 'Referencu zasunuÅ›',
+ 'wikieditor-toolbar-tool-reference-insert' => 'ZasunuÅ›',
+ 'wikieditor-toolbar-tool-reference-text' => 'Tekst reference',
+ 'wikieditor-toolbar-tool-signature' => 'Signatura a casowy kołk',
+ 'wikieditor-toolbar-section-advanced' => 'Rozšyrjony',
+ 'wikieditor-toolbar-tool-heading' => 'Nadpismo',
+ 'wikieditor-toolbar-tool-heading-1' => 'Rownina 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Rownina 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Rownina 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Rownina 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Rownina 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Nadpismowy tekst',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Naliceńska lisćina',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Zapisk naliceńskeje lisćiny',
+ 'wikieditor-toolbar-tool-olist' => 'Numerěrowana lisćina',
+ 'wikieditor-toolbar-tool-olist-example' => 'Zapisk numerěrowaneje lisćiny',
+ 'wikieditor-toolbar-tool-indent' => 'Zasunjenje',
+ 'wikieditor-toolbar-tool-indent-example' => 'Zasunjona smužka',
+ 'wikieditor-toolbar-tool-nowiki' => 'Žedno wikiformatěrowanje',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Njeformatěrowany tekst how zasunuś',
+ 'wikieditor-toolbar-tool-redirect' => 'Dalejpósrědnjenje',
+ 'wikieditor-toolbar-tool-redirect-example' => 'MÄ› celowego boka',
+ 'wikieditor-toolbar-tool-big' => 'Wjeliki',
+ 'wikieditor-toolbar-tool-big-example' => 'Wjeliki tekst',
+ 'wikieditor-toolbar-tool-small' => 'Mały',
+ 'wikieditor-toolbar-tool-small-example' => 'Mały tekst',
+ 'wikieditor-toolbar-tool-superscript' => 'Wusoko stajony',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Wusoko stajony tekst',
+ 'wikieditor-toolbar-tool-subscript' => 'DÅ‚ymoko stajony',
+ 'wikieditor-toolbar-tool-subscript-example' => 'DÅ‚ymoko stajony tekst',
+ 'wikieditor-toolbar-group-insert' => 'ZasunuÅ›',
+ 'wikieditor-toolbar-tool-gallery' => 'Wobrazowa galerija',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Pśikład.jpg|Pópisanje1
+$1:Pśikład.jpg|Pópisanje2',
+ 'wikieditor-toolbar-tool-newline' => 'Nowa smužka',
+ 'wikieditor-toolbar-tool-table' => 'Tabela',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! głowa 1
+! głowa 2
+! głowa 3
+|-
+| smužka 1, cela 1
+| smužka 1, cela 2
+| smužka 1, cela 3
+|-
+| smužka 2, cela 1
+| smužka 2, cela 2
+| smužka 2, cela 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Celowy tekst',
+ 'wikieditor-toolbar-tool-table-example-header' => 'GÅ‚owowy tekst',
+ 'wikieditor-toolbar-tool-table-title' => 'Tabelu zasunuÅ›',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Smužki',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'SÅ‚upy',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Smužku głowy zapśěgnuś',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stil z ramikami',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Sortěrujobna tabela',
+ 'wikieditor-toolbar-tool-table-example' => 'Celowy tekst',
+ 'wikieditor-toolbar-tool-table-preview' => 'Pśeglěd',
+ 'wikieditor-toolbar-tool-table-insert' => 'ZasunuÅ›',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Pśetergnuś',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Zasajźenje tabele z wěcej ako $1 {{PLURAL:$1|celu|celoma|celami|celami}} njejo móžno z toś tym dialogom.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Njejsy płaśiwu licbu smužkow abo słupow zapódał.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Njamóžoš tabelu bźez smužkow abo słupow zasunuś.',
+ 'wikieditor-toolbar-tool-replace' => 'Pytaś a wuměniś',
+ 'wikieditor-toolbar-tool-replace-title' => 'Pytaś a wuměniś',
+ 'wikieditor-toolbar-tool-replace-search' => 'PytaÅ› za:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Wuměniś pśez:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Wótpowědnik',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Z pytańskim teksto ako z regularnym wurazom wobchadaś',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Dalej pytaÅ›',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Dalej wuměniś',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Wšykne wuměniś',
+ 'wikieditor-toolbar-tool-replace-close' => 'ZacyniÅ›',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Twójo pytanje njejo žedno wustupowanje namakało.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 {{PLURAL:$1|wuměnjenje pśewjeźone|wuměnjeni pśewjeźonej|wuměnjenja pśewjeźone|wuměnjenjow pśewjeźonych}}.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Njejsy žeden pytański wuraz zapódał.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Regularny wuraz, kótaryž sy zapódał, jo njepłaśiwy: $1',
+ 'wikieditor-toolbar-section-characters' => 'Specialne znamješka',
+ 'wikieditor-toolbar-characters-page-latin' => 'ÅatyÅ„ske',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'ÅatyÅ„ske rozÅ¡yrjone',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbole',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grichiske',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kyriliske',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabiske',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persiske',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebrejske',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalšćina',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singalezišćina',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Guźarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'thailandšćina',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laošćina',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmeršćina',
+ 'wikieditor-toolbar-section-help' => 'Pomoc',
+ 'wikieditor-toolbar-help-heading-description' => 'Wopisanje',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Což zapisujoš',
+ 'wikieditor-toolbar-help-heading-result' => 'Což dostanjoš',
+ 'wikieditor-toolbar-help-page-format' => 'Formatěrowanje',
+ 'wikieditor-toolbar-help-page-link' => 'Wótkaze',
+ 'wikieditor-toolbar-help-page-heading' => 'Nadpisma',
+ 'wikieditor-toolbar-help-page-list' => 'Lisćiny',
+ 'wikieditor-toolbar-help-page-file' => 'Dataje',
+ 'wikieditor-toolbar-help-page-reference' => 'Reference',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskusija',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiwny',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursiwny tekst''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursiwny tekst</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Tucny',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Tucny tekst'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Tucny tekst</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Tucny &amp; kursiwny',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Tucny &amp; kursiwny tekst'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Tucny &amp; kursiwny tekst</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Interny wótkaz',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Page title|Tekst wótkaza]]<br />[[Page title]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Tekst wótkaza</a><br /><a href='#'>Titel boka</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Eksterny wótkaz',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Tekst wótkaza]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Tekst wótkaza</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Nadpismo 2. rowniny',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Nadpismowy tekst ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Nadpismowy tekst</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Nadpismo 3. rowniny',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Nadpismowy tekst ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Nadpismowy tekst</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Nadpismo 4. rowniny',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Nadpismowy tekst ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Nadpismowy tekst</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Nadpismo 5. rowniny',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Nadpismowy tekst =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Nadpismowy tekst</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Naliceńska lisćina',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Lisćinowy zapisk<br />* Lisćinowy zapisk',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Lisćinowy zapisk</li><li>Lisćinowy zapisk</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Numerěrowana lisćina',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Lisćinowy zapisk<br /># Lisćinowy zapisk',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Lisćinowy zapisk</li><li>Lisćinowy zapisk</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Zasajźona dataja',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Wobrazowe pópisanje]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Wobrazowe pópisanje' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Powětšyś' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Wobrazowe pópisanje</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referenca',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Tekst boka.&lt;ref name="test"&gt;[http://www.example.org Tekst wótkaza], pśidatny tekst.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Tekst boka.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Pśidatne wužywanje samskeje reference',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Tekst boka.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Reference zwobrazniÅ›',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Tekst wótkaza</a>, pśidanty tekst.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Signatura z casowym kołkom',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Wužywarske mě</a> (<a href='#' title='{{#special:mytalk}}'>diskusija</a>) 15:54, 10. junija 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signatura',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Wužywarske mě</a> (<a href='#' title='{{#special:mytalk}}'>diskusija</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Zasunjenje',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normalny tekst<br />:Zasunjony tekst<br />::Zasunjony tekst',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normalny tekst<dl><dd>Zasunjony tekst<dl><dd>Zasunjony tekst</dd></dl></dd></dl>',
+);
+
+/** Greek (Ελληνικά)
+ * @author Dead3y3
+ * @author Flyax
+ * @author Geraki
+ * @author Lou
+ * @author ZaDiak
+ * @author ΑπεÏγός
+ * @author ΠεÏίεÏγος
+ */
+$messages['el'] = array(
+ 'wikieditor' => 'ΠÏοχωÏημένη διεπαφή επεξεÏγασίας κειμένου wiki',
+ 'wikieditor-desc' => 'ΠαÏέχει μία επεκτάσιμη διεπαφή επεξεÏγασίας κειμένου wiki και πολλές μονάδες παÏοχής χαÏακτηÏιστικών',
+ 'wikieditor-wikitext-tab' => 'Κείμενο wiki',
+ 'wikieditor-loading' => 'ΦόÏτωση',
+ 'wikieditor-preview-preference' => 'ΕνεÏγοποίηση Ï€Ïοεπισκόπησης δίπλα-δίπλα',
+ 'wikieditor-preview-tab' => 'ΠÏοεπισκόπηση',
+ 'wikieditor-preview-changes-tab' => 'Αλλαγές',
+ 'wikieditor-preview-loading' => 'ΦόÏτωση...',
+ 'wikieditor-previewDialog-preference' => 'ΕνεÏγοποίηση διαλόγου Ï€Ïοεπισκόπησης',
+ 'wikieditor-previewDialog-tab' => 'ΠÏοεπισκόπηση',
+ 'wikieditor-previewDialog-loading' => 'ΦόÏτωση...',
+ 'wikieditor-publish-preference' => 'ΕνεÏγοποίηση δημοσίευσης βήμα Ï€Ïος βήμα',
+ 'wikieditor-publish-button-publish' => 'Δημοσίευση',
+ 'wikieditor-publish-button-cancel' => 'ΆκυÏο',
+ 'wikieditor-publish-dialog-title' => 'Δημοσίευση στο {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'ΣÏνοψη επεξεÏγασίας (πεÏιγÏάψτε συντόμως τις αλλαγές που έχετε κάνει):',
+ 'wikieditor-publish-dialog-minor' => '"ΜικÏή" επεξεÏγασία',
+ 'wikieditor-publish-dialog-watch' => 'ΠαÏακολοÏθηση αυτής της σελίδας',
+ 'wikieditor-publish-dialog-publish' => 'Δημοσίευση',
+ 'wikieditor-publish-dialog-goback' => 'Πήγαινε πίσω',
+ 'wikieditor-template-editor-preference' => 'ΕνεÏγοποίηση επεξεÏγασίας των Ï€ÏοτÏπων wiki χάÏη σε μια φόÏμα',
+ 'wikieditor-template-editor-dialog-title' => 'ΕπεξεÏγασία Ï€ÏοτÏπου',
+ 'wikieditor-template-editor-dialog-submit' => 'ΕνημέÏωση',
+ 'wikieditor-template-editor-dialog-cancel' => 'ΑκÏÏωση',
+ 'wikieditor-templates-preference' => 'ΕνεÏγοποίηση της απόκÏυψης Ï€ÏοτÏπων',
+ 'wikieditor-toc-preference' => 'ΕνεÏγοποιήστε πλοηγήσιμο πίνακα πεÏιεχομένων',
+ 'wikieditor-toc-show' => 'Εμφάνιση πεÏιεχομένων',
+ 'wikieditor-toc-hide' => 'ΑπόκÏυψη πεÏιεχομένων',
+ 'wikieditor-toolbar' => 'ΕπεξεÏγασία εÏγαλειοθήκης',
+ 'wikieditor-toolbar-desc' => 'ΜπάÏα εÏγαλείων επεξεÏγασίας σελίδων με πεÏισσότεÏες δυνατότητες χÏήσης',
+ 'wikieditor-toolbar-preference' => 'ΕνεÏγοποιήστε την μπάÏα εÏγαλείων με τις πεÏισσότεÏες δυνατότητες επεξεÏγασίας',
+ 'wikieditor-toolbar-dialogs-preference' => 'ΕνεÏγοποιήστε παÏάθυÏα διαλόγων για την εισαγωγή συνδέσμων, πινάκων και άλλων',
+ 'wikieditor-toolbar-loading' => 'ΦόÏτωση...',
+ 'wikieditor-toolbar-tool-bold' => 'Έντονα',
+ 'wikieditor-toolbar-tool-bold-example' => 'Έντονο κείμενο',
+ 'wikieditor-toolbar-tool-italic' => 'Πλάγια',
+ 'wikieditor-toolbar-tool-italic-example' => 'Κείμενο με πλάγιους χαÏακτήÏες',
+ 'wikieditor-toolbar-tool-ilink' => 'ΕσωτεÏικός σÏνδεσμος',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Τίτλος συνδέσμου',
+ 'wikieditor-toolbar-tool-xlink' => 'ΕξωτεÏικός σÏνδεσμος (μην ξεχάστε το Ï€Ïόθεμα http:// )',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com τίτλος συνδέσμου',
+ 'wikieditor-toolbar-tool-link' => 'ΣÏνδεσμος',
+ 'wikieditor-toolbar-tool-link-title' => 'Εισαγωγή συνδέσμου',
+ 'wikieditor-toolbar-tool-link-int' => 'Σε μία σελίδα wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Τίτλος άÏθÏου:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Τίτλος ή URL της σελίδας',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Κείμενο συνδέσμου:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Κείμενο Ï€Ïος εμφάνιση',
+ 'wikieditor-toolbar-tool-link-ext' => 'Σε μία εξωτεÏική ιστοσελίδα',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'ΣÏνδεσμος URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Κείμενο συνδέσμου:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Εισαγωγή συνδέσμου',
+ 'wikieditor-toolbar-tool-link-cancel' => 'ΑκÏÏωση',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Η σελίδα υπάÏχει',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Η σελίδα δεν υπάÏχει',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ΆκυÏος τίτλος',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'ΕξωτεÏικός σÏνδεσμος',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Έλεγχος ÏπαÏξης σελίδας...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Ο τίτλος που καθοÏίσατε δεν είναι έγκυÏος.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Η διεÏθυνση URL που οÏίσατε φαίνεται πως Ï€ÏοοÏίζεται για σÏνδεσμο σε σελίδα σε άλλο βίκι.
+Θέλετε να τη μετατÏέψετε σε εσωτεÏικό σÏνδεσμο;',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'ΕσωτεÏικός σÏνδεσμος',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'ΕξωτεÏικός σÏνδεσμος',
+ 'wikieditor-toolbar-tool-link-empty' => 'Δεν εισάγατε τίποτα για σÏνδεση σε αυτό.',
+ 'wikieditor-toolbar-tool-file' => 'Ενσωματωμένο αÏχείο',
+ 'wikieditor-toolbar-tool-file-example' => 'Paradeigma.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'ΠαÏαπομπή',
+ 'wikieditor-toolbar-tool-reference-example' => 'Εισάγετε εδώ το κείμενο της παÏαπομπής.',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'ΑκÏÏωση',
+ 'wikieditor-toolbar-tool-reference-title' => 'Εισαγωγή παÏαπομπής',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Εισαγωγή',
+ 'wikieditor-toolbar-tool-reference-text' => 'Κείμενο παÏαπομπής',
+ 'wikieditor-toolbar-tool-signature' => 'ΥπογÏαφή και σφÏαγίδα χÏόνου',
+ 'wikieditor-toolbar-section-advanced' => 'ΠÏοχωÏημένο',
+ 'wikieditor-toolbar-tool-heading' => 'Επικεφαλίδα',
+ 'wikieditor-toolbar-tool-heading-1' => 'Επίπεδο 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Επίπεδο 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Επίπεδο 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Επίπεδο 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Επίπεδο 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Κείμενο τίτλου',
+ 'wikieditor-toolbar-group-format' => 'ΜοÏφή',
+ 'wikieditor-toolbar-tool-ulist' => 'Λίστα με τελείες',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Αντικείμενο λίστας με τελείες',
+ 'wikieditor-toolbar-tool-olist' => 'ΑÏιθμημένη λίστα',
+ 'wikieditor-toolbar-tool-olist-example' => 'Αντικείμενο αÏιθμημένης λίστας',
+ 'wikieditor-toolbar-tool-indent' => 'Εσοχή',
+ 'wikieditor-toolbar-tool-indent-example' => 'ΓÏαμμή με εσοχή',
+ 'wikieditor-toolbar-tool-nowiki' => 'ΧωÏίς μοÏφοποίηση Wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Εισάγετε εδώ το μη μοÏφοποιημένο κείμενο',
+ 'wikieditor-toolbar-tool-redirect' => 'ΑνακατεÏθυνση',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Όνομα της σελίδας στόχου',
+ 'wikieditor-toolbar-tool-big' => 'Μεγάλα',
+ 'wikieditor-toolbar-tool-big-example' => 'Κείμενο με μεγάλους χαÏακτήÏες',
+ 'wikieditor-toolbar-tool-small' => 'ΜικÏά',
+ 'wikieditor-toolbar-tool-small-example' => 'Κείμενο με μικÏοÏÏ‚ χαÏακτήÏες',
+ 'wikieditor-toolbar-tool-superscript' => 'Εκθέτης',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Κείμενο-εκθέτης',
+ 'wikieditor-toolbar-tool-subscript' => 'Δείκτης',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Κείμενο-δείκτης',
+ 'wikieditor-toolbar-group-insert' => 'Εισαγωγή',
+ 'wikieditor-toolbar-tool-gallery' => 'Συλλογή εικόνων',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Λεζάντα1
+$1:Example.jpg|Λεζάντα2',
+ 'wikieditor-toolbar-tool-newline' => 'Îέα γÏαμμή',
+ 'wikieditor-toolbar-tool-table' => 'Πίνακας',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! κεφαλίδα 1
+! κεφαλίδα 2
+! κεφαλίδα 3
+|-
+| γÏαμμή 1, κελί 1
+| γÏαμμή 1, κελί 2
+| γÏαμμή 1, κελί 3
+|-
+| γÏαμμή 2, κελί 1
+| γÏαμμή 2, κελί 2
+| γÏαμμή 2, κελί 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Κείμενο κελιοÏ',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Κείμενο κεφαλίδας',
+ 'wikieditor-toolbar-tool-table-title' => 'Εισαγωγή πίνακα',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'ΣειÏές',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Στήλες',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'ΠÏοσθήκη σειÏάς κεφαλίδων',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Διακόσμηση με πεÏιγÏάμματα',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Δυνατότητα ταξινόμησης',
+ 'wikieditor-toolbar-tool-table-example' => 'Κείμενο κελιοÏ',
+ 'wikieditor-toolbar-tool-table-preview' => 'ΠÏοεπισκόπηση',
+ 'wikieditor-toolbar-tool-table-insert' => 'Εισαγωγή',
+ 'wikieditor-toolbar-tool-table-cancel' => 'ΆκυÏο',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Η εισαγωγή ενός πίνακα με πεÏισσότεÏα από $1 κελιά δεν είναι δυνατή με αυτό το πλαίσιο διαλόγου.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Δεν έχετε εισαγάγει έναν έγκυÏο αÏιθμό των γÏαμμών ή στηλών.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Δεν μποÏείτε να εισαγάγετε έναν πίνακα χωÏίς γÏαμμές ή στήλες.',
+ 'wikieditor-toolbar-tool-replace' => 'Αναζήτηση και αντικατάσταση',
+ 'wikieditor-toolbar-tool-replace-title' => 'Αναζήτηση και αντικατάσταση',
+ 'wikieditor-toolbar-tool-replace-search' => 'Αναζήτηση για:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Αντικατάσταση από:',
+ 'wikieditor-toolbar-tool-replace-case' => 'ΤαίÏιασμα πεζών-κεφαλαίων',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Το αναζητοÏμενο κείμενο είναι κανονική έκφÏαση',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'ΕÏÏεση επόμενου',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Αντικατάσταση επομένου',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Αντικατάσταση όλων',
+ 'wikieditor-toolbar-tool-replace-close' => 'Κλείσιμο',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Η αναζήτηση δεν ταίÏιαξε με κάτι.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Έγιναν $1 αντικαταστάσεις.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Δεν εισάγατε τίποτα Ï€Ïος αναζήτηση.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Η κανονική έκφÏαση που δώσατε είναι άκυÏη: $1',
+ 'wikieditor-toolbar-section-characters' => 'Ειδικοί χαÏακτήÏες',
+ 'wikieditor-toolbar-characters-page-latin' => 'Λατινικό',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'ΠÏοέκταση του λατινικοÏ',
+ 'wikieditor-toolbar-characters-page-ipa' => 'ΔΦΑ',
+ 'wikieditor-toolbar-characters-page-symbols' => 'ΣÏμβολα',
+ 'wikieditor-toolbar-characters-page-greek' => 'Ελληνικό',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'ΚυÏιλλικό',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ΑÏαβικό',
+ 'wikieditor-toolbar-characters-page-persian' => 'ΠεÏσικό',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'ΕβÏαϊκό',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Μπενγκάλι',
+ 'wikieditor-toolbar-characters-page-telugu' => 'ΤελοÏγκου',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Σινχάλα',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'ΓκουχαÏάτι',
+ 'wikieditor-toolbar-characters-page-thai' => 'ταϊλανδικά',
+ 'wikieditor-toolbar-characters-page-lao' => 'λαοτινά',
+ 'wikieditor-toolbar-characters-page-khmer' => 'καμποτζιανά',
+ 'wikieditor-toolbar-section-help' => 'Βοήθεια',
+ 'wikieditor-toolbar-help-heading-description' => 'ΠεÏιγÏαφή',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Τι πληκτÏολογείς',
+ 'wikieditor-toolbar-help-heading-result' => 'Τι αποτέλεσμα λαμβάνεις',
+ 'wikieditor-toolbar-help-page-format' => 'ΜοÏφοποίηση',
+ 'wikieditor-toolbar-help-page-link' => 'ΣÏνδεσμοι',
+ 'wikieditor-toolbar-help-page-heading' => 'Τίτλοι',
+ 'wikieditor-toolbar-help-page-list' => 'Λίστες',
+ 'wikieditor-toolbar-help-page-file' => 'ΑÏχεία',
+ 'wikieditor-toolbar-help-page-reference' => 'ΠαÏαπομπές',
+ 'wikieditor-toolbar-help-page-discussion' => 'Συζήτηση',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Πλάγια',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Κείμενο με πλάγιους χαÏακτήÏες''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Κείμενο με πλάγιους χαÏακτήÏες</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Έντονα',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Έντονο κείμενο'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Έντονο κείμενο</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Έντονα &amp; πλάγια',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Έντονο &amp; πλάγιο κείμενο'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Έντονο &amp; πλάγιο κείμενο</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'ΕσωτεÏικός σÏνδεσμος',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Τίτλος σελίδας|Ταμπέλα συνδέσμου]]<br />[[Τίτλος σελίδας]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Τίτλος συνδέσμου</a><br /><a href='#'>Τίτλος σελίδας</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'ΕξωτεÏικοί σÏνδεσμοι',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Ταμπέλα συνδέσμου]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Ταμπέλα συνδέσμου</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Επικεφαλίδα 2ου επιπέδου',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Κείμενο επικεφαλίδας ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Κείμενο επικεφαλίδας</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Επικεφαλίδα 3ου επιπέδου',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Κείμενο επικεφαλίδας ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Κείμενο επικεφαλίδας</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Επικεφαλίδα 4ου επιπέδου',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Κείμενο επικεφαλίδας ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Κείμενο επικεφαλίδας</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Επικεφαλίδα 5ου επιπέδου',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Κείμενο επικεφαλίδας =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Κείμενο επικεφαλίδας</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Λίστα με τελείες',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Στοιχείο της λίστας<br />* Στοιχείο της λίστας',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Στοιχείο λίστας</li><li>Στοιχείο λίστας</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'ΑÏιθμημένη λίστα',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Αντικείμενο της λίστας<br /># Αντικείμενο της λίστας',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Στοιχείο λίστας</li><li>Στοιχείο λίστας</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Ενσωματωμένο αÏχείο',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Κείμενο πεÏιγÏαφής]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Κείμενο τίτλων' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Κείμενο τίτλων</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'ΠαÏαπομπή',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Κείμενο σελίδας.&lt;ref name="test"&gt;[http://www.example.org Κείμενο συνδέσμου], επιπλέον κείμενο.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Κείμενο σελίδας.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'ΠÏόσθετη χÏήση της ίδιας παÏαπομπής',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Κείμενο σελίδας.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Εμφάνιση παÏαπομπών',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Κείμενο συνδέσμου</a>, επιπλέον κείμενο.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ΥπογÏαφή με σφÏαγίδα χÏόνου',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Όνομα χÏήστη</a> (<a href='#' title='{{#special:mytalk}}'>συζήτηση</a>) 10 Ιουνίου 2009 15:54 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ΥπογÏαφή',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Όνομα χÏήστη</a> (<a href='#' title='{{#special:mytalk}}'>συζήτηση</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Οδόντωση',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Κανονικό κείμενο<br />:ΠαÏαγÏαφοποιημένο κείμενο<br />::ΠαÏαγÏαφοποιημένο κείμενο',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Κανονικό κείμενο<dl><dd>ΠαÏαγÏαφοποιημένο κείμενο<dl><dd>ΠαÏαγÏαφοποιημένο κείμενο</dd></dl></dd></dl>',
+);
+
+/** Esperanto (Esperanto)
+ * @author ArnoLagrange
+ * @author Lucas
+ * @author Marcos
+ * @author Michawiki
+ * @author Yekrats
+ * @author Ziko
+ */
+$messages['eo'] = array(
+ 'wikieditor' => 'Progresa redaktilo por vikiteksto',
+ 'wikieditor-desc' => 'Ebligas redaktan interfacon por etendebla vikiteksto kaj multaj utilaj moduloj',
+ 'wikieditor-wikitext-tab' => 'Vikiteksto',
+ 'wikieditor-loading' => 'Åœargante',
+ 'wikieditor-preview-preference' => 'EnÅaltu antaÅ­vidon apud la redaktofenestro',
+ 'wikieditor-preview-tab' => 'AntaÅ­vido',
+ 'wikieditor-preview-changes-tab' => 'ÅœanÄoj',
+ 'wikieditor-preview-loading' => 'Åœargante...',
+ 'wikieditor-previewDialog-preference' => 'Ebligi antaÅ­prezentan dialogon',
+ 'wikieditor-previewDialog-tab' => 'AntaÅ­vido',
+ 'wikieditor-previewDialog-loading' => 'Åœargante...',
+ 'wikieditor-publish-preference' => 'Åœalti po-paÅan eldonadon',
+ 'wikieditor-publish-button-publish' => 'Konservi',
+ 'wikieditor-publish-button-cancel' => 'Nuligi',
+ 'wikieditor-publish-dialog-title' => 'Konservi al {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Resumo (mallonge priskribu la ÅanÄoj faritaj):',
+ 'wikieditor-publish-dialog-minor' => 'Eta redakto',
+ 'wikieditor-publish-dialog-watch' => 'Atenti ĉi tiun paÄon',
+ 'wikieditor-publish-dialog-publish' => 'Eldoni',
+ 'wikieditor-publish-dialog-goback' => 'Reen',
+ 'wikieditor-template-editor-preference' => 'Åœalti formularan redaktadon de vikiaj Åablonoj',
+ 'wikieditor-template-editor-dialog-title' => 'Redakti Åablonon',
+ 'wikieditor-template-editor-dialog-submit' => 'Äœisdatigi',
+ 'wikieditor-template-editor-dialog-cancel' => 'Nuligi',
+ 'wikieditor-templates-preference' => 'Åœalti Åablonan kaÅadon',
+ 'wikieditor-toc-preference' => 'Åœalti navigeblan tabelon de enhavo',
+ 'wikieditor-toc-show' => 'Montri enhavon',
+ 'wikieditor-toc-hide' => 'KaÅi enhavon',
+ 'wikieditor-toolbar' => 'Ilobreto por redaktoj',
+ 'wikieditor-toolbar-desc' => 'Ilobreto por redaktoj, kun plibonigita uzebleco',
+ 'wikieditor-toolbar-preference' => 'EnÅalti plibonigitan ilobreton por redaktoj',
+ 'wikieditor-toolbar-dialogs-preference' => 'EnÅalti dialogujojn por aldoni ligilojn, tabelojn kaj pli',
+ 'wikieditor-toolbar-hidesig' => 'KaÅi la subskribo-butonon de paÄoj en la ĉefa nomspaco',
+ 'wikieditor-toolbar-loading' => 'ÅœarÄante...',
+ 'wikieditor-toolbar-tool-bold' => 'Diklitera',
+ 'wikieditor-toolbar-tool-bold-example' => 'Diklitera teksto',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiva',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kursiva teksto',
+ 'wikieditor-toolbar-tool-ilink' => 'Interna ligilo',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titolo de ligilo',
+ 'wikieditor-toolbar-tool-xlink' => 'Ekstera ligilo (memoru prefikson http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.ekzemplo.com titolo de ligilo',
+ 'wikieditor-toolbar-tool-link' => 'Ligilo',
+ 'wikieditor-toolbar-tool-link-title' => 'Enmeti ligilon',
+ 'wikieditor-toolbar-tool-link-int' => 'Al paÄo de vikio',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Titolo de paÄo aÅ­ retadreso (URL):',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titolo de paÄo aÅ­ URL-o',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Teksto por la ligilo:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Enigi la tekston montrotan',
+ 'wikieditor-toolbar-tool-link-ext' => 'Al paÄo ekster la vikio',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Retadreso (URL) de la ligilo:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Teksto de ligilo:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Enmeti ligilon',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Nuligi',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'PaÄo ekzistas',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'PaÄo ne ekzistas',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Nepermesita titolo',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ligilo al ekstero',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Kontrolante ekziston de paÄo...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'La titolo kiun vi enmetis estas nepermesita.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'La retadreso (URL), kiun vi indikis, aspektas kvazaÅ­ Äi estas ligilo al paÄo de alia vikio.
+Ĉu vi volas ÅanÄi Äin al interna ligilo?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Interna ligilo',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ligilo al ekstero',
+ 'wikieditor-toolbar-tool-link-empty' => 'Vi ne enigis ion ajn por alligi',
+ 'wikieditor-toolbar-tool-file' => 'Enmetita dosiero',
+ 'wikieditor-toolbar-tool-file-example' => 'Ekzemplo.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Piednoto',
+ 'wikieditor-toolbar-tool-reference-example' => 'Enmetu tekston de piednoto ĉi tien',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Nuligi',
+ 'wikieditor-toolbar-tool-reference-title' => 'Enmeti piednoton',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Enmeti',
+ 'wikieditor-toolbar-tool-reference-text' => 'Teksto de piednoto',
+ 'wikieditor-toolbar-tool-signature' => 'Subskribo kaj tempindiko',
+ 'wikieditor-toolbar-section-advanced' => 'Pliaj iloj',
+ 'wikieditor-toolbar-tool-heading' => 'Titolo',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivelo 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivelo 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivelo 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivelo 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivelo 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Titola teksto',
+ 'wikieditor-toolbar-group-format' => 'Formato',
+ 'wikieditor-toolbar-tool-ulist' => 'Sennumera listigo',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Listigo kun numeroj',
+ 'wikieditor-toolbar-tool-olist' => 'Listigo kun numeroj',
+ 'wikieditor-toolbar-tool-olist-example' => 'Ero en listigo kun numeroj',
+ 'wikieditor-toolbar-tool-indent' => 'KrommarÄeno',
+ 'wikieditor-toolbar-tool-indent-example' => 'KrommarÄena linio',
+ 'wikieditor-toolbar-tool-nowiki' => 'Sen vikia formatado',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Enmetu tekston sen formato ĉi tie',
+ 'wikieditor-toolbar-tool-redirect' => 'Alidirektilo',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nomo de la paÄo, kiun vi celas',
+ 'wikieditor-toolbar-tool-big' => 'Granda',
+ 'wikieditor-toolbar-tool-big-example' => 'Granda teksto',
+ 'wikieditor-toolbar-tool-small' => 'Malgranda',
+ 'wikieditor-toolbar-tool-small-example' => 'Malgranda teksto',
+ 'wikieditor-toolbar-tool-superscript' => 'Alta skribo',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Alta skribo',
+ 'wikieditor-toolbar-tool-subscript' => 'Malalta skribo',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Malalta skribo',
+ 'wikieditor-toolbar-group-insert' => 'Enmeti',
+ 'wikieditor-toolbar-tool-gallery' => 'Bilda galerio',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Ekzemplo.jpg|Teksto1 pri dosiero
+$1:Ekzemplo.jpg|Teksto2 pri dosiero',
+ 'wikieditor-toolbar-tool-newline' => 'Nova linio',
+ 'wikieditor-toolbar-tool-table' => 'Tabelo',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! titolo 1
+! titolo 2
+! titolo 3
+|-
+| linio 1, ĉelo 1
+| linio 1, ĉelo 2
+| linio 1, ĉelo 3
+|-
+| linio 2, ĉelo 1
+| linio 2, ĉelo 2
+| linio 2, ĉelo 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Teksto de ĉelo',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Teksto de titolo',
+ 'wikieditor-toolbar-tool-table-title' => 'Enmeti tabelon',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Linioj',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolumnoj',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Aldonu titolan linion',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Akdonu bordojn',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Fari tabelon ordigebla',
+ 'wikieditor-toolbar-tool-table-example' => 'Teksto de ĉelo',
+ 'wikieditor-toolbar-tool-table-preview' => 'AntaÅ­vido',
+ 'wikieditor-toolbar-tool-table-insert' => 'Enmeti',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Nuligi',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Enmeti tabelon kun pli ol $1 ĉeloj ne eblas per ĉi tiu dialogujo.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Vi ne enigis permesitan nombron de linioj aÅ­ kolumnoj.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Vi ne povas enigi tabelon kun nul linioj aÅ­ kolumnoj.',
+ 'wikieditor-toolbar-tool-replace' => 'Serĉi kaj anstataŭigi',
+ 'wikieditor-toolbar-tool-replace-title' => 'Serĉi kaj anstataŭigi',
+ 'wikieditor-toolbar-tool-replace-search' => 'Serĉi:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'AnstataÅ­igi per:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Gravas ĉu majusklo / minusklo',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Trakti signoĉenon kiel regularan esprimon',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Trovi sekvan',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'AnstataÅ­igi sekvan',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Anstataŭigi ĉiujn',
+ 'wikieditor-toolbar-tool-replace-close' => 'Fermi',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Via serĉo trafis nenion.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 anstataÅ­igoj okazis.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Vi ne enigis ion ajn por serĉi.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'La regula esprimo kiun vi enigis estas nepermesita: $1',
+ 'wikieditor-toolbar-section-characters' => 'Specialaj signoj',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latina',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latina etendita',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simboloj',
+ 'wikieditor-toolbar-characters-page-greek' => 'Greka',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirila',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Araba',
+ 'wikieditor-toolbar-characters-page-persian' => 'persa',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebrea',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengala',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telegua',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'GuÄarata',
+ 'wikieditor-toolbar-characters-page-thai' => 'Taja',
+ 'wikieditor-toolbar-characters-page-lao' => 'laÅ­a',
+ 'wikieditor-toolbar-characters-page-khmer' => 'kmera',
+ 'wikieditor-toolbar-section-help' => 'Helpo',
+ 'wikieditor-toolbar-help-heading-description' => 'Priskribo',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Kion vi tajpas',
+ 'wikieditor-toolbar-help-heading-result' => 'Tion vi vidos',
+ 'wikieditor-toolbar-help-page-format' => 'Formatado',
+ 'wikieditor-toolbar-help-page-link' => 'Ligiloj',
+ 'wikieditor-toolbar-help-page-heading' => 'Titoloj',
+ 'wikieditor-toolbar-help-page-list' => 'Listoj',
+ 'wikieditor-toolbar-help-page-file' => 'Dosieroj',
+ 'wikieditor-toolbar-help-page-reference' => 'Referencoj',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskuto',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiva',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursiva teksto''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursiva teksto</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Diklitera',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Diklitera teksto'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Diklitera teksto</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Diklitera &amp; kursiva',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Diklitera &amp; kursiva teksto'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Diklitera &amp; kursiva teksto</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Interna ligilo',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[PaÄa titolo|Ligila etikedo]]<br />[[PaÄa titolo]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Ligila etikedo</a><br /><a href='#'>PaÄa titolo</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ekstera ligilo',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.ekzemplo.org Ligila etikedo]<br />[http://www.ekzemplo.org]<br />http://www.ekzemplo.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Ligila etikedo</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.ekzemplo.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2-a nivela titolo',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Titola teksto ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Titola teksto</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3-a nivela titolo',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Titola teksto ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Titola teksto</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4-a nivela titolo',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Titola teksto ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Titola teksto</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5-a nivela titolo',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Titola teksto =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Titola teksto</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Sennumera listigo',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Listero<br />* Listero',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Listero</li><li>Listero</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Nombrita listo',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Listero<br /># Listero',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Listero</li><li>Listero</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Enmetita dosiero',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Teksto pri dosiero]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Pligrandigi' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Teksto pri dosiero</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Piednoto',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'PaÄa teksto.&lt;ref name="test"&gt;[http://www.ekzemplo.org Ligila teksto], aldona teksto.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "PaÄa teksto.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Reuzo de la sama piednoto.',
+ 'wikieditor-toolbar-help-content-rereference-result' => "PaÄa teksto.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Montri piednotojn',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.ekzemplo.org' class='external text' href='#'>Ligila teksto</a>, aldona teksto.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Subskribo kun tempindiko',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Salutnomo</a> (<a href='#' title='{{#special:mytalk}}'>diskuto</a>) 15:54, 10 junio 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Subskribo',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Salutnomo</a> (<a href='#' title='{{#special:mytalk}}'>diskuto</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'KrommarÄeno',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Norma teksto<br />:KrommarÄena teksto<br />::KrommarÄena teksto',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Norma teksto<dl><dd>KrommarÄena teksto<dl><dd>KrommarÄena teksto</dd></dl><dd></dl>',
+);
+
+/** Spanish (Español)
+ * @author AlimanRuna
+ * @author Crazymadlover
+ * @author Imre
+ * @author Locos epraix
+ * @author McDutchie
+ * @author PerroVerd
+ * @author Pertile
+ * @author Peter17
+ * @author Platonides
+ * @author Translationista
+ */
+$messages['es'] = array(
+ 'wikieditor' => 'Interfaz avanzada de edición de wikitexto',
+ 'wikieditor-desc' => 'Provee de una interfaz extensible de edición de wikitexto y varios módulos que ofrecen características',
+ 'wikieditor-wikitext-tab' => 'Wikitexto',
+ 'wikieditor-loading' => 'Cargando',
+ 'wikieditor-preview-preference' => 'Habilitar previsualización comparativa',
+ 'wikieditor-preview-tab' => 'Previsualizar',
+ 'wikieditor-preview-changes-tab' => 'Cambios',
+ 'wikieditor-preview-loading' => 'Cargando...',
+ 'wikieditor-previewDialog-preference' => 'Habilitar diálogo de vista previa',
+ 'wikieditor-previewDialog-tab' => 'Previsualizar',
+ 'wikieditor-previewDialog-loading' => 'Cargando...',
+ 'wikieditor-publish-preference' => 'Habilitar publicación paso a paso',
+ 'wikieditor-publish-button-publish' => 'Publicar',
+ 'wikieditor-publish-button-cancel' => 'Cancelar',
+ 'wikieditor-publish-dialog-title' => 'Publicar en {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Resumen de edición (describe brevemente los cambios que has realizado):',
+ 'wikieditor-publish-dialog-minor' => 'Edición menor',
+ 'wikieditor-publish-dialog-watch' => 'Vigilar esta página',
+ 'wikieditor-publish-dialog-publish' => 'Publicar',
+ 'wikieditor-publish-dialog-goback' => 'Regresar',
+ 'wikieditor-template-editor-preference' => 'Habilitar la edición plantillas usando formularios',
+ 'wikieditor-template-editor-dialog-title' => 'Editar plantilla',
+ 'wikieditor-template-editor-dialog-submit' => 'Actualizar',
+ 'wikieditor-template-editor-dialog-cancel' => 'Cancelar',
+ 'wikieditor-templates-preference' => 'Habilitar colapso de plantilla',
+ 'wikieditor-toc-preference' => 'Habilitar tabla de contenidos navegable',
+ 'wikieditor-toc-show' => 'Mostrar el contenido',
+ 'wikieditor-toc-hide' => 'Ocultar el contenido',
+ 'wikieditor-toolbar' => 'Barra de herramientas de edición',
+ 'wikieditor-toolbar-desc' => 'Barra de herramientas de la página de edición con usabilidad mejorada',
+ 'wikieditor-toolbar-preference' => 'Habilitar la barra de herramientas de edición mejorada',
+ 'wikieditor-toolbar-dialogs-preference' => 'Habilitar diálogos para insertar enlaces, tablas y más',
+ 'wikieditor-toolbar-loading' => 'Cargando...',
+ 'wikieditor-toolbar-tool-bold' => 'Negrita',
+ 'wikieditor-toolbar-tool-bold-example' => 'Texto en negrita',
+ 'wikieditor-toolbar-tool-italic' => 'Cursiva',
+ 'wikieditor-toolbar-tool-italic-example' => 'Texto en cursiva',
+ 'wikieditor-toolbar-tool-ilink' => 'Vínculo interno',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Título del enlace',
+ 'wikieditor-toolbar-tool-xlink' => 'Enlace externo (recordar prefijo http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com título del enlace',
+ 'wikieditor-toolbar-tool-link' => 'Enlace',
+ 'wikieditor-toolbar-tool-link-title' => 'Insertar enlace',
+ 'wikieditor-toolbar-tool-link-int' => 'A una página wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Título de página:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Título de la página o URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Título del enlace',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Introducir el texto para mostrar',
+ 'wikieditor-toolbar-tool-link-ext' => 'A una página web externa',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL del enlace:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Título del enlace:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Insertar enlace',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'La página existe',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'No existe la página',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Título inválido',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Enlace externo',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Revisando existencia de la página...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'El título que ha especificado no es válido.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'EL URL que has especificado parece que tenia como finalidad ser un vínculo para otra página wiki.
+¿Deseas hacerlo un vínculo interno?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Enlace interno',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Enlace externo',
+ 'wikieditor-toolbar-tool-link-empty' => 'No has escrito nada a qué vincular.',
+ 'wikieditor-toolbar-tool-file' => 'Archivo empotrado',
+ 'wikieditor-toolbar-tool-file-example' => 'Ejemplo.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referencia',
+ 'wikieditor-toolbar-tool-reference-example' => 'Insertar nota a pie de página aquí',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-reference-title' => 'Insertar una referencia',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Insertar',
+ 'wikieditor-toolbar-tool-reference-text' => 'Texto de referencia',
+ 'wikieditor-toolbar-tool-signature' => 'Firma y fecha',
+ 'wikieditor-toolbar-section-advanced' => 'Avanzado',
+ 'wikieditor-toolbar-tool-heading' => 'Encabezado',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivel 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivel 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivel 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivel 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivel 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Texto de encabezado',
+ 'wikieditor-toolbar-group-format' => 'Formato',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista viñeteada',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Ãtem de lista viñeteada',
+ 'wikieditor-toolbar-tool-olist' => 'Lista numerada',
+ 'wikieditor-toolbar-tool-olist-example' => 'Item de lista numerada',
+ 'wikieditor-toolbar-tool-indent' => 'Indentación',
+ 'wikieditor-toolbar-tool-indent-example' => 'Línea indentada',
+ 'wikieditor-toolbar-tool-nowiki' => 'Sin formato wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Introduzca texto sin formato aquí',
+ 'wikieditor-toolbar-tool-redirect' => 'Redirección',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nombre de la página destino',
+ 'wikieditor-toolbar-tool-big' => 'Grande',
+ 'wikieditor-toolbar-tool-big-example' => 'Texto grande',
+ 'wikieditor-toolbar-tool-small' => 'Pequeño',
+ 'wikieditor-toolbar-tool-small-example' => 'Texto pequeño',
+ 'wikieditor-toolbar-tool-superscript' => 'Superescrito',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Texto superescrito',
+ 'wikieditor-toolbar-tool-subscript' => 'Suscribir',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Texto suscrito',
+ 'wikieditor-toolbar-group-insert' => 'Insertar',
+ 'wikieditor-toolbar-tool-gallery' => 'Galería de fotos',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Ejemplo.jpg|Descripción1
+$1:Ejemplo.jpg|Descripción2',
+ 'wikieditor-toolbar-tool-newline' => 'Nueva línea',
+ 'wikieditor-toolbar-tool-table' => 'Tabla',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! encabezado 1
+! encabezado 2
+! encabezado 3
+|-
+| fila 1, celda 1
+| fila 1, celda 2
+| fila 1, celda 3
+|-
+| fila 2, celda 1
+| fila 2, celda 2
+| fila 2, celda 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Texto de celda',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Texto de encabezado',
+ 'wikieditor-toolbar-tool-table-title' => 'Inserte tabla',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Filas',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Columnas',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Incluir encabezado de fila',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Estilo con bordes',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Hacer la tabla organizable',
+ 'wikieditor-toolbar-tool-table-example' => 'Texto de celda',
+ 'wikieditor-toolbar-tool-table-preview' => 'Previsualización',
+ 'wikieditor-toolbar-tool-table-insert' => 'Insertar',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Insertar una tabla con más de $1 celdas no es posible con este cuadro de diálogo.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'No se ha introducido un número válido de filas o columnas.',
+ 'wikieditor-toolbar-tool-table-zero' => 'No se puede insertar una tabla con cero filas o columnas.',
+ 'wikieditor-toolbar-tool-replace' => 'Buscar y reemplazar',
+ 'wikieditor-toolbar-tool-replace-title' => 'Buscar y reemplazar',
+ 'wikieditor-toolbar-tool-replace-search' => 'Buscar:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Reemplazar por:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Considerar mayúsculas',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Tratar la cadena de búsqueda como expresión regular',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Buscar siguiente',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Reemplazar siguiente',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Reemplazar todo',
+ 'wikieditor-toolbar-tool-replace-close' => 'Cerrar',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Su búsqueda no halló resultados.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 reemplazos hechos',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'No ingresó nada para buscar.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'La expresión regular que ha introducido es inválida: $1',
+ 'wikieditor-toolbar-section-characters' => 'Caracteres especiales',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latín',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latín extendido',
+ 'wikieditor-toolbar-characters-page-ipa' => 'AFI',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Símbolos',
+ 'wikieditor-toolbar-characters-page-greek' => 'Griego',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirílico',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Ãrabe',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persa',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebreo',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalí',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugú',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Ayuda',
+ 'wikieditor-toolbar-help-heading-description' => 'Descripción',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Lo que escribe',
+ 'wikieditor-toolbar-help-heading-result' => 'Lo que obtiene',
+ 'wikieditor-toolbar-help-page-format' => 'Formateando',
+ 'wikieditor-toolbar-help-page-link' => 'Vínculos',
+ 'wikieditor-toolbar-help-page-heading' => 'Encabezados',
+ 'wikieditor-toolbar-help-page-list' => 'Listas',
+ 'wikieditor-toolbar-help-page-file' => 'Archivos',
+ 'wikieditor-toolbar-help-page-reference' => 'Referencias',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discusión',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Itálica',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Texto en cursiva''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Texto en cursiva</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Negrita',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Texto en negrita'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Texto en negrita</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Negrita &amp; cursiva',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Texto en negrita y cursiva'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Texto en negrita &amp; cursiva</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Enlace interno',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Page title|Etiqueta de vínculo]]<br />[[Título de página]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Etiqueta de vínculo</a><br /><a href='#'>Título de página</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Enlace externo',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Etiqueta del enlace]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Etiqueta del enlace</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Encabezado de 2º nivel',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Texto de encabezado ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Texto de encabezado</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Encabezado de 3º nivel',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Texto de encabezado ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Texto de encabezado</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Encabezado de 4º nivel',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Texto de encabezado ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Texto de encabezado</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Encabezado de 5º nivel',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Texto de encabezado =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Texto de encabezado</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista viñeteada',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Listar item<br />* Listar item',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Listar item</li><li>Listar item</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista numerada',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Listar item<br /># Listar item',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Listar item</li><li>Listar item</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Archivo empotrado',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Ejemplo.png|thumb|Texto de la leyenda]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Texto leyenda</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referencia',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Texto de página.&lt;ref name="test"&gt;[http://www.example.org Texto de vínculo], texto adicional.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Texto de página.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Uso adicional de la misma referencia',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Texto de página.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Mostrar referencias',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Texto de vínculo</a>, texto adicional.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Fecha y firma',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nombre de usuario</a> (<a href='#' title='{{#special:mytalk}}'>discusión</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Firma',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nombre de usuario</a> (<a href='#' title='{{#special:mytalk}}'>discusión</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indentado',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Texto normal<br />:Texto indentado<br />::Texto indentado',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Texto normal<dl><dd>Texto indentado<dl><dd>Texto indentado</dd></dl></dd></dl>',
+);
+
+/** Estonian (Eesti)
+ * @author Avjoska
+ * @author Kyng
+ * @author Pikne
+ * @author WikedKentaur
+ */
+$messages['et'] = array(
+ 'wikieditor-wikitext-tab' => 'Vikitekst',
+ 'wikieditor-loading' => 'Laadimine',
+ 'wikieditor-preview-tab' => 'Eelvaade',
+ 'wikieditor-preview-changes-tab' => 'Muudatused',
+ 'wikieditor-preview-loading' => 'Laadimine...',
+ 'wikieditor-previewDialog-tab' => 'Eelvaade',
+ 'wikieditor-previewDialog-loading' => 'Laadimine...',
+ 'wikieditor-publish-preference' => 'Kasuta astmelist avaldamist',
+ 'wikieditor-publish-button-publish' => 'Avalda',
+ 'wikieditor-publish-button-cancel' => 'Loobu',
+ 'wikieditor-publish-dialog-title' => '{{GRAMMAR:inessive|{{SITENAME}}}} avaldamine',
+ 'wikieditor-publish-dialog-summary' => 'Redaktsiooni kokkuvõte (kirjelda lühidalt tehtud muudatusi):',
+ 'wikieditor-publish-dialog-minor' => 'Pisimuudatus',
+ 'wikieditor-publish-dialog-watch' => 'Jälgi seda lehekülge',
+ 'wikieditor-publish-dialog-publish' => 'Avalda',
+ 'wikieditor-publish-dialog-goback' => 'Tagasi',
+ 'wikieditor-template-editor-preference' => 'Luba vormipõhine viki mallide toimetamine',
+ 'wikieditor-template-editor-dialog-title' => 'Muuda malli',
+ 'wikieditor-template-editor-dialog-submit' => 'Uuendus',
+ 'wikieditor-template-editor-dialog-cancel' => 'Loobu',
+ 'wikieditor-toc-preference' => 'Kasuta navigeerimist võimaldavat sisukorda',
+ 'wikieditor-toc-show' => 'Näita sisu',
+ 'wikieditor-toc-hide' => 'Peida sisu',
+ 'wikieditor-toolbar' => 'Toimetamise tööriistariba',
+ 'wikieditor-toolbar-desc' => 'Täiustatud kasutushõlpsusega redigeerimislehekülje tööriistariba',
+ 'wikieditor-toolbar-preference' => 'Kasuta laiendatud redigeerimisriba',
+ 'wikieditor-toolbar-dialogs-preference' => 'Kasuta tabelite ja muu lisamiseks dialoogikaste',
+ 'wikieditor-toolbar-loading' => 'Laadimine...',
+ 'wikieditor-toolbar-tool-bold' => 'Rasvane',
+ 'wikieditor-toolbar-tool-bold-example' => 'Rasvane kiri',
+ 'wikieditor-toolbar-tool-italic' => 'Kaldkiri',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kaldkiri',
+ 'wikieditor-toolbar-tool-ilink' => 'Siselink',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Lingi pealkiri',
+ 'wikieditor-toolbar-tool-xlink' => 'Välislink (ära unusta eesliidet http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.näide.ee lingi pealkiri',
+ 'wikieditor-toolbar-tool-link' => 'Link',
+ 'wikieditor-toolbar-tool-link-title' => 'Lingi lisamine',
+ 'wikieditor-toolbar-tool-link-int' => 'Vikileheküljele',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Lehekülje pealkiri:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Lehekülje pealkiri või internetiaadress',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Lingi tekst:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Kuvatav tekst',
+ 'wikieditor-toolbar-tool-link-ext' => 'Välisele võrguleheküljele',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Lingi aadress:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Lingi tekst:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Lisa link',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Loobu',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Lehekülg on olemas',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Lehekülge pole',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Vigane pealkiri',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Välislink',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Lehekülje olemasolu kindlakstegemine...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Määratud pealkiri on vigane.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Paistab, et sisestatud internetiaadress viitab teisele vikileheküljele.
+Kas soovid sellest siselingi teha?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Siselink',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Välislink',
+ 'wikieditor-toolbar-tool-link-empty' => 'Sa ei sisestanud midagi, millele linkida.',
+ 'wikieditor-toolbar-tool-file' => 'Manusfail',
+ 'wikieditor-toolbar-tool-file-example' => 'Näide.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Viide',
+ 'wikieditor-toolbar-tool-reference-example' => 'Lisa siia allmärkuse tekst',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Loobu',
+ 'wikieditor-toolbar-tool-reference-title' => 'Viite lisamine',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Lisa',
+ 'wikieditor-toolbar-tool-reference-text' => 'Viite tekst',
+ 'wikieditor-toolbar-tool-signature' => 'Allkiri ja ajatempel',
+ 'wikieditor-toolbar-section-advanced' => 'Laiendatud',
+ 'wikieditor-toolbar-tool-heading' => 'Pealkiri',
+ 'wikieditor-toolbar-tool-heading-1' => 'Pealkiri 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Pealkiri 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Pealkiri 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Pealkiri 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Pealkiri 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Pealkirja tekst',
+ 'wikieditor-toolbar-group-format' => 'Vorming',
+ 'wikieditor-toolbar-tool-ulist' => 'Täpploend',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Täpploendi liige',
+ 'wikieditor-toolbar-tool-olist' => 'Numberloend',
+ 'wikieditor-toolbar-tool-olist-example' => 'Numberloendi liige',
+ 'wikieditor-toolbar-tool-indent' => 'Taane',
+ 'wikieditor-toolbar-tool-indent-example' => 'Taandrida',
+ 'wikieditor-toolbar-tool-nowiki' => 'Vikivorminduseta',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Lisa siia mittevormindatav tekst',
+ 'wikieditor-toolbar-tool-redirect' => 'Ãœmbersuunamine',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Sihtlehekülje pealkiri',
+ 'wikieditor-toolbar-tool-big' => 'Suur',
+ 'wikieditor-toolbar-tool-big-example' => 'Suur tekst',
+ 'wikieditor-toolbar-tool-small' => 'Väike',
+ 'wikieditor-toolbar-tool-small-example' => 'Väike tekst',
+ 'wikieditor-toolbar-tool-superscript' => 'Ãœlaindeks',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Tekst ülaindeksina',
+ 'wikieditor-toolbar-tool-subscript' => 'Allindeks',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Tekst allindeksina',
+ 'wikieditor-toolbar-group-insert' => 'Lisa',
+ 'wikieditor-toolbar-tool-gallery' => 'Pildigalerii',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Näide.jpg|Pildiallkiri1
+$1:Näide.jpg|Pildiallkiri2',
+ 'wikieditor-toolbar-tool-newline' => 'Uus rida',
+ 'wikieditor-toolbar-tool-table' => 'Tabel',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! päis 1
+! päis 2
+! päis 3
+|-
+| 1. rida, 1. lahter
+| 1. rida, 2. lahter
+| 1. rida, 3. lahter
+|-
+| 2. rida, 1. lahter
+| 2. rida, 2. lahter
+| 2. rida, 3. lahter',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Lahtri tekst',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Päise tekst',
+ 'wikieditor-toolbar-tool-table-title' => 'Tabeli lisamine',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Ridu',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Veerge',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Lisa päiserida',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stiliseeritud äärised',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tee tabel sorditavaks',
+ 'wikieditor-toolbar-tool-table-example' => 'Näide',
+ 'wikieditor-toolbar-tool-table-preview' => 'Eelvaade',
+ 'wikieditor-toolbar-tool-table-insert' => 'Lisa',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Loobu',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Selle dialoogiaknaga ei saa lisada tabelit, millel on rohkem kui $1 lahter.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Sa pole sisestanud sobivat ridade ega veergude määra.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ãœhegi rea ega veeruta tabelit ei saa lisada',
+ 'wikieditor-toolbar-tool-replace' => 'Otsi ja asenda',
+ 'wikieditor-toolbar-tool-replace-title' => 'Otsimine ja asendus',
+ 'wikieditor-toolbar-tool-replace-search' => 'Otsitav:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Asendaja:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Tõstutundlik',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Otsi järgmine',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Asenda järgmine',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Asenda kõik',
+ 'wikieditor-toolbar-tool-replace-close' => 'Sulge',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Ãœhtegi otsitavat ei leitud.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 asendus(t) tehtud.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Otsitav on sisestamata.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Sisestatud regulaaravaldis on vigane: $1',
+ 'wikieditor-toolbar-section-characters' => 'Erimärgid',
+ 'wikieditor-toolbar-characters-page-latin' => 'Ladina',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Ladina (laiendatud)',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA-laiendid',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Sümbolid',
+ 'wikieditor-toolbar-characters-page-greek' => 'Kreeka',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kirillitsa',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Araabia',
+ 'wikieditor-toolbar-characters-page-persian' => 'Pärsia',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Heebrea',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengali',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singali',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gudžarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tai',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmeeri',
+ 'wikieditor-toolbar-section-help' => 'Abi',
+ 'wikieditor-toolbar-help-heading-description' => 'Kirjeldus',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Trükitu',
+ 'wikieditor-toolbar-help-heading-result' => 'Tulemus',
+ 'wikieditor-toolbar-help-page-format' => 'Vorming',
+ 'wikieditor-toolbar-help-page-link' => 'Lingid',
+ 'wikieditor-toolbar-help-page-heading' => 'Pealkirjad',
+ 'wikieditor-toolbar-help-page-list' => 'Loendid',
+ 'wikieditor-toolbar-help-page-file' => 'Failid',
+ 'wikieditor-toolbar-help-page-reference' => 'Viited',
+ 'wikieditor-toolbar-help-page-discussion' => 'Arutelu',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kaldkiri',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kaldkirjas tekst''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kaldkirjas tekst</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Rasvane',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Rasvane tekst'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Rasvane tekst</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Rasvane kaldkiri',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Rasvane kaldkirjas tekst'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Rasvane kaldkirjas tekst</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Siselink',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Lehekülje pealkiri|Lingi silt]]<br />[[Lehekülje pealkiri]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Lingi silt</a><br /><a href='#'>Lehekülje pealkiri</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Välislink',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.näide.ee Lingi silt]<br />[http://www.näide.ee]<br />http://www.näide.ee',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Lingi silt</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.näide.ee</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2. taseme pealkiri',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '==Pealkirjatekst==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Pealkirjatekst</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3. taseme pealkiri',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '===Pealkirjatekst===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Pealkirjatekst</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4. taseme pealkiri',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Pealkirjatekst ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Pealkirjatekst</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5. taseme pealkiri',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Pealkirjatekst =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Pealkirjatekst</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Täpploend',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Loendi liige<br />* Loendi liige',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Loendi liige</li><li>Loendi liige</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Numberloend',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Loendi liige<br /># Loendi liige',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Loendi liige</li><li>Loendi liige</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Manusfail',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Näide.png|thumb|Pildiallkiri.]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Pildiallkiri' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Suurenda' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Pildiallkiri</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Viide',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Lehekülje tekst.&lt;ref name="test"&gt;[http://www.näide.ee Lingi tekst], täiendav tekst.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Lehekülje tekst.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Sama viite mitmekordne kasutamine',
+ 'wikieditor-toolbar-help-content-rereference-syntax' => 'Lehekülje tekst.&lt;ref name="test" /&gt;',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Lehekülje tekst.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Viidete kuvamine',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.näide.ee' class='external text' href='#'>Lingi tekst</a>, täiendav tekst.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Allkiri ja ajatempel',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Kasutajanimi</a> 10. juuni 2009, kell 15:54 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Allkiri',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Kasutajanimi</a>",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Taane',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Harilik tekst<br />:Taandega tekst<br />::Taandega tekst',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Harilik tekst<dl><dd>Taandega tekst<dl><dd>Taandega tekst</dd></dl></dd></dl>',
+);
+
+/** Basque (Euskara)
+ * @author An13sa
+ * @author Inorbez
+ * @author Joxemai
+ */
+$messages['eu'] = array(
+ 'wikieditor' => 'Wikitestu edizio-interfaze aurreratua',
+ 'wikieditor-desc' => 'Wikitestua editatzeko interfazea eta ezaugarri berriak ematen ditu',
+ 'wikieditor-wikitext-tab' => 'Wikitestua',
+ 'wikieditor-loading' => 'Kargatzen',
+ 'wikieditor-preview-preference' => 'Aldetik aldeko aurrikuspena gaitu',
+ 'wikieditor-preview-tab' => 'Aurreikuspena',
+ 'wikieditor-preview-changes-tab' => 'Aldaketak',
+ 'wikieditor-preview-loading' => 'Kargatzen...',
+ 'wikieditor-previewDialog-preference' => 'Aurrikuspen kutxa gaitu',
+ 'wikieditor-previewDialog-tab' => 'Aurreikuspena',
+ 'wikieditor-previewDialog-loading' => 'Kargatzen...',
+ 'wikieditor-publish-preference' => 'Pausoz pausoko argitarapena ahalbideratu',
+ 'wikieditor-publish-button-publish' => 'Argitaratu',
+ 'wikieditor-publish-button-cancel' => 'Utzi',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}}era argitaratu',
+ 'wikieditor-publish-dialog-summary' => 'Laburpena (Egindako aldaketak laburki azaldu):',
+ 'wikieditor-publish-dialog-minor' => 'Aldaketa txikia',
+ 'wikieditor-publish-dialog-watch' => 'Orrialde hau jarraitu',
+ 'wikieditor-publish-dialog-publish' => 'Argitaratu',
+ 'wikieditor-publish-dialog-goback' => 'Atzera joan',
+ 'wikieditor-template-editor-preference' => 'Forman oinarritutako wiki txantiloien edizioa gaitu',
+ 'wikieditor-template-editor-dialog-title' => 'Txantiloia aldatu',
+ 'wikieditor-template-editor-dialog-submit' => 'Eguneratu',
+ 'wikieditor-template-editor-dialog-cancel' => 'Utzi',
+ 'wikieditor-templates-preference' => 'Txantiloien ixtea eta irekitzea gaitu',
+ 'wikieditor-toc-preference' => 'Eduki-taula nabigagarria gaitu',
+ 'wikieditor-toc-show' => 'Edukiak erakutsi',
+ 'wikieditor-toc-hide' => 'Edukiak ezkutatu',
+ 'wikieditor-toolbar' => 'Tresna-barra aldatzen',
+ 'wikieditor-toolbar-desc' => 'Orrialdeko editatzeko barra aldatu era erabilgarritasun hobetuarekin',
+ 'wikieditor-toolbar-preference' => 'Editatzeko tresna barra hobetua gaitu',
+ 'wikieditor-toolbar-dialogs-preference' => 'Elkarrizketa kutxak gaitu loturak, taula eta bestelakoak sartzeko',
+ 'wikieditor-toolbar-loading' => 'Kargatzen...',
+ 'wikieditor-toolbar-tool-bold' => 'Beltza',
+ 'wikieditor-toolbar-tool-bold-example' => 'Testu beltza',
+ 'wikieditor-toolbar-tool-italic' => 'Etzana',
+ 'wikieditor-toolbar-tool-italic-example' => 'Testu etzana',
+ 'wikieditor-toolbar-tool-ilink' => 'Barne lotura',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Loturaren izenburua',
+ 'wikieditor-toolbar-tool-xlink' => 'Kanpo lotura (gogoratu http:// aurrizkia)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.adibidea.com loturaren izenburua',
+ 'wikieditor-toolbar-tool-link' => 'Lotura',
+ 'wikieditor-toolbar-tool-link-title' => 'Sartu lotura',
+ 'wikieditor-toolbar-tool-link-int' => 'Wiki orrialde batera',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Orrialdearen izenburua:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Orriaren izenburua edo URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Lotutako testua:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Idatzi erakutsi beharreko testua',
+ 'wikieditor-toolbar-tool-link-ext' => 'Kanpoko orrialde batera',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Lotura URLa:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Lotura testua:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Lotura txertatu',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Utzi',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Orrialdea existitzen da',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Orrialdea ez da existitzen',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Balio gabeko izenburua',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Kanpo lotura',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Orriaren existentzia egiaztatzen...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Zehaztutako izenburua ez dago zuzen.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Adierazi duzun URL beste wiki orri batera lotzen duela dirudi.
+Barne lotura bezala sortu nahi duzu?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Barne lotura',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Kanpo lotura',
+ 'wikieditor-toolbar-tool-link-empty' => 'Ez duzu bilatu beharreko ezer adierazi.',
+ 'wikieditor-toolbar-tool-file' => 'Fitxategia txertatu',
+ 'wikieditor-toolbar-tool-file-example' => 'Adibidea.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Erreferentzia',
+ 'wikieditor-toolbar-tool-reference-example' => 'Txertatu testu oina hemen',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Utzi',
+ 'wikieditor-toolbar-tool-reference-title' => 'Txertatu erreferentzia',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Txertatu',
+ 'wikieditor-toolbar-tool-reference-text' => 'Erreferentzia-testua',
+ 'wikieditor-toolbar-tool-signature' => 'Sinadura data eta orduarekin',
+ 'wikieditor-toolbar-section-advanced' => 'Aurreratua',
+ 'wikieditor-toolbar-tool-heading' => 'Izenburua',
+ 'wikieditor-toolbar-tool-heading-1' => '1. maila',
+ 'wikieditor-toolbar-tool-heading-2' => '2. maila',
+ 'wikieditor-toolbar-tool-heading-3' => '3. maila',
+ 'wikieditor-toolbar-tool-heading-4' => '4. maila',
+ 'wikieditor-toolbar-tool-heading-5' => '5. maila',
+ 'wikieditor-toolbar-tool-heading-example' => '&#32;Izenburuaren testua&#32;',
+ 'wikieditor-toolbar-group-format' => 'Formatua',
+ 'wikieditor-toolbar-tool-ulist' => 'Puntudun zerrenda',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Puntudun zerrendako elementua',
+ 'wikieditor-toolbar-tool-olist' => 'Zenbakidun zerrenda',
+ 'wikieditor-toolbar-tool-olist-example' => 'Zenbakidun zerrendako elementua',
+ 'wikieditor-toolbar-tool-indent' => 'Koska',
+ 'wikieditor-toolbar-tool-indent-example' => 'Koskadun lerroa',
+ 'wikieditor-toolbar-tool-nowiki' => 'Ez egin jaramonik wiki formatuari',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Formatu gabeko testua hemen idatzi',
+ 'wikieditor-toolbar-tool-redirect' => 'Birzuzenketa',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Bilatzen den orriaren izena',
+ 'wikieditor-toolbar-tool-big' => 'Handia',
+ 'wikieditor-toolbar-tool-big-example' => 'Testu handia',
+ 'wikieditor-toolbar-tool-small' => 'Txikia',
+ 'wikieditor-toolbar-tool-small-example' => 'Testu txikia',
+ 'wikieditor-toolbar-tool-superscript' => 'Goi-indizea',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Goi-indizearen testua',
+ 'wikieditor-toolbar-tool-subscript' => 'Azpiindizea',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Azpiindizearen testua',
+ 'wikieditor-toolbar-group-insert' => 'Txertatu',
+ 'wikieditor-toolbar-tool-gallery' => 'Irudi galeria',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Adibidea.jpg|Oina1
+$1:Adibidea.jpg|Oina2',
+ 'wikieditor-toolbar-tool-newline' => 'Lerro berria',
+ 'wikieditor-toolbar-tool-table' => 'Taula',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! goiburua 1
+! goiburua 2
+! goiburua 3
+|-
+| errenkada 1, gela 1
+| errenkada 1, gela 2
+| errenkada 1, gela 3
+|-
+| errenkada 2, gela 1
+| errenkada 2, gela 2
+| errenkada 2, gela 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Gelatxo testua',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Goiburu testua',
+ 'wikieditor-toolbar-tool-table-title' => 'Taula txertatu',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Errenkadak',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Zutabeak',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Goiburu errendaka txertatu',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Estiloa ertzekin',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Egin taula sailkagarri',
+ 'wikieditor-toolbar-tool-table-example' => 'Gelatxo testua',
+ 'wikieditor-toolbar-tool-table-preview' => 'Aurreikuspena',
+ 'wikieditor-toolbar-tool-table-insert' => 'Txertatu',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Utzi',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Elkarrizketa-kutxa honekin ezinezkoa da $1 zutabe baino gehiago dituen taula txertatzea',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Ez duzu idatzi errenkada edo zutabe-kopuru zuzen bat.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ezin duzu 0 errenkada edo zutabe duen taularik txertatu.',
+ 'wikieditor-toolbar-tool-replace' => 'Bilatu eta ordezkatu',
+ 'wikieditor-toolbar-tool-replace-title' => 'Bilatu eta aldatu',
+ 'wikieditor-toolbar-tool-replace-search' => 'Honakoa bilatu:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Honegatik aldatu:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Bilaketa zehatza',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Bilaketa hitzak espresio erregular gisa tratatu',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Hurrengoa bilatu',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Hurrengoa ordezkatu',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Denak ordezkatu',
+ 'wikieditor-toolbar-tool-replace-close' => 'Itxi',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Ez dago bilaketarekin bat egiten duten emaitzarik.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 ordezkapen eginda.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ez duzu bilatu beharreko ezer adierazi.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Txertatu duzun adierazpen erregularra ez da zzuena: $1',
+ 'wikieditor-toolbar-section-characters' => 'Karaktere bereziak',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latina',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin hedatua',
+ 'wikieditor-toolbar-characters-page-ipa' => 'NAF',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Ikurrak',
+ 'wikieditor-toolbar-characters-page-greek' => 'Greziera',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Zirilikoa',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabiera',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persiera',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebreera',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Guajarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thaiera',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laosera',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmerrera',
+ 'wikieditor-toolbar-section-help' => 'Laguntza',
+ 'wikieditor-toolbar-help-heading-description' => 'Deskribapena',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Idazten duzuna',
+ 'wikieditor-toolbar-help-heading-result' => 'Lortzen duzuna',
+ 'wikieditor-toolbar-help-page-format' => 'Formatua ematen',
+ 'wikieditor-toolbar-help-page-link' => 'Loturak',
+ 'wikieditor-toolbar-help-page-heading' => 'Goiburuak',
+ 'wikieditor-toolbar-help-page-list' => 'Zerrendak',
+ 'wikieditor-toolbar-help-page-file' => 'Fitxategiak',
+ 'wikieditor-toolbar-help-page-reference' => 'Erreferentziak',
+ 'wikieditor-toolbar-help-page-discussion' => 'Eztabaida',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Etzana',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Testu etzana''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Testu etzana</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Beltza',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Testu beltza'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Testu beltza</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Beltza eta etzana',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Testu beltza eta etzana'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Testu beltza eta etzana</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Barne lotura',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Orriaren titulua|Loturaren izena]]<br />[[Orriaren titulua]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Loturaren izena</a><br /><a href='#'>Orriaren titulua</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Kanpo lotura',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.adibidea.org Loturaren izena]<br />[http://www.adibidea.org]<br />http://www.adibidea.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Loturaren izena</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.adibidea.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2. mailako goiburua',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Izenburuaren testua ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Izenburuaren testua</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3. mailako izenburua',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Izenburuaren testua ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Izenburuaren testua</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4. mailako izenburua',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Izenburuaren testua ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Izenburuaren testua</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5. mailako izenburua',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Izenburuaren testua =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Izenburuaren testua</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Puntudun zerrenda',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Zerrendako elementua<br />* Zerrendako elementua',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Zerrendako elementua</li><li>Zerrendako elementua</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Zenbakidun zerrenda',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Zerrendako elementua<br /># Zerrendako elementua',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Zerrendako elementua</li><li>Zerrendako elementua</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Fitxategia txertatu',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Adibidea.png|thumb|Irudi oina]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Irudiaren testua' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Handitu' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Irudi oina</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Erreferentzia',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Orrialdearen testua.&lt;ref name="proba"&gt;[http://www.adibidea.org Loturaren testua], testu gehigarria.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Orrialdearen testua.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Erreferentzia beraren erabilera gehiago',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Orrialdearen testua.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Erreferentziak erakutsi',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.adibidea.org' class='external text' href='#'>Loturaren testua</a>, testu gehigarria.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Sindaura data eta orduarekin',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Lankide izena</a> (<a href='#' title='{{#special:mytalk}}'>eztabaida</a>) 15:54, 10 Ekaina 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Sinadura',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Lankide izena</a> (<a href='#' title='{{#special:mytalk}}'>eztabaida</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Koska',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Testu normala<br />: Koskatutako testua<br />:: Koskatutako testua',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Testu arrunta<dl><dd>Koskatutako testua<dl><dd>Koskatutako testua</dd></dl></dd></dl>',
+);
+
+/** Persian (Ùارسی)
+ * @author Ebraminio
+ * @author Huji
+ * @author Ladsgroup
+ * @author Wayiran
+ */
+$messages['fa'] = array(
+ 'wikieditor' => 'رابط ویرایش پیشرÙته ویکی‌متن',
+ 'wikieditor-desc' => 'یک رابط ویرایش پیشرÙته ویکی‌متن Ùˆ چندین پودمان دارای قابلیت Ùراهم می‌کند',
+ 'wikieditor-wikitext-tab' => 'ویکی‌متن',
+ 'wikieditor-loading' => 'در حال بارگیری',
+ 'wikieditor-preview-preference' => 'Ùعال‌سازی پیش‌نمایش کنار یک دیگر',
+ 'wikieditor-preview-tab' => 'پیش‌نمایش',
+ 'wikieditor-preview-changes-tab' => 'تغییرها',
+ 'wikieditor-preview-loading' => 'در حال بارگذاری...',
+ 'wikieditor-previewDialog-preference' => 'Ùعال کردن پنجره‌های تعاملی پیش‌نمایش',
+ 'wikieditor-previewDialog-tab' => 'پیش‌نمایش',
+ 'wikieditor-previewDialog-loading' => 'در حال بارگذاری...',
+ 'wikieditor-publish-preference' => 'Ùعال‌سازی انتشار قدم به قدم',
+ 'wikieditor-publish-button-publish' => 'انتشار',
+ 'wikieditor-publish-button-cancel' => 'لغو',
+ 'wikieditor-publish-dialog-title' => 'انتشار در {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'خلاصه ویرایش (توضیح مختصر در مورد تغییری که دادید):',
+ 'wikieditor-publish-dialog-minor' => 'ویرایش جزئی',
+ 'wikieditor-publish-dialog-watch' => 'پی‌گیری این صÙحه',
+ 'wikieditor-publish-dialog-publish' => 'انتشار',
+ 'wikieditor-publish-dialog-goback' => 'بازگشت به عقب',
+ 'wikieditor-template-editor-preference' => 'Ùعال‌سازی ویرایش مبتنی بر Ùرم الگوهای ویکی',
+ 'wikieditor-template-editor-dialog-title' => 'ویرایش الگو',
+ 'wikieditor-template-editor-dialog-submit' => 'به روز رسانی',
+ 'wikieditor-template-editor-dialog-cancel' => 'لغو',
+ 'wikieditor-templates-preference' => 'Ùعال‌سازی نهÙتن الگوها',
+ 'wikieditor-toc-preference' => 'Ùعال‌سازی Ùهرست مطالب قابل پیمایش',
+ 'wikieditor-toc-show' => 'نمایش محتوا',
+ 'wikieditor-toc-hide' => 'نهÙتن محتوا',
+ 'wikieditor-toolbar' => 'نوار ابزار ویرایش',
+ 'wikieditor-toolbar-desc' => 'نوار ابزار ویرایش صÙحه با استÙاده‌پذیری بالاتر',
+ 'wikieditor-toolbar-preference' => 'Ùعال‌کردن نوارابزار ویرایش پیشرÙته',
+ 'wikieditor-toolbar-dialogs-preference' => 'Ùعال‌سازی پنجره‌های تعاملی برای وارد کردن پیوندها، جدول‌ها Ùˆ غیره',
+ 'wikieditor-toolbar-hidesig' => 'نهÙتن دکمهٔ امضا از صÙحات در Ùضای نام اصلی',
+ 'wikieditor-toolbar-loading' => 'در حال بارگذاری...',
+ 'wikieditor-toolbar-tool-bold' => 'ضخیم',
+ 'wikieditor-toolbar-tool-bold-example' => 'متن ضخیم',
+ 'wikieditor-toolbar-tool-italic' => 'مورب',
+ 'wikieditor-toolbar-tool-italic-example' => 'متن مورب',
+ 'wikieditor-toolbar-tool-ilink' => 'پیوند داخلی',
+ 'wikieditor-toolbar-tool-ilink-example' => 'عنوان پیوند',
+ 'wikieditor-toolbar-tool-xlink' => 'پیوند به بیرون (پیشوند http:// Ùراموش نشود)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com عنوان پیوند',
+ 'wikieditor-toolbar-tool-link' => 'پیوند',
+ 'wikieditor-toolbar-tool-link-title' => 'اÙزودن پیوند',
+ 'wikieditor-toolbar-tool-link-int' => 'به یک صÙحهٔ ویکی',
+ 'wikieditor-toolbar-tool-link-int-target' => 'صÙحهٔ هد٠یا نشانی اینترنتی:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'عنوان صÙغحه یا نشانی اینترنتی',
+ 'wikieditor-toolbar-tool-link-int-text' => 'متن برای نمایش:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'متنی که نمایش می‌یابد',
+ 'wikieditor-toolbar-tool-link-ext' => 'به یک صÙحه وب خارج از ویکی',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'نشانی اینترنتی پیوند:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'متن پیوند:',
+ 'wikieditor-toolbar-tool-link-insert' => 'اÙزودن پیوند',
+ 'wikieditor-toolbar-tool-link-cancel' => 'لغو',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'صÙحه وجود دارد',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'صÙحه وجود ندارد',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'عنوان نادرست',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'پیوند به بیرون',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'بررسی وجود داشتن صÙحه...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'عنوان تعیین‌شده نامعتبر است.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'نشانی اینترنتی Ú©Ù‡ وارد کردید به Ø´Ú©Ù„ÛŒ است Ú©Ù‡ نمایانگر یک پیوند به صÙحه‌ای داخل ویکی است. آیا می‌خواهید آن را به یک پیوند داخلی تبدیل کنید؟',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'پیوند داخلی',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'پیوند به بیرون',
+ 'wikieditor-toolbar-tool-link-empty' => 'شما چیزی برای پیوند کردن وارد نکردید.',
+ 'wikieditor-toolbar-tool-file' => 'پروندهٔ جاسازی‌شده',
+ 'wikieditor-toolbar-tool-file-example' => 'مثال.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'منبع',
+ 'wikieditor-toolbar-tool-reference-example' => 'متن زیرنویس را اینجا اضاÙÙ‡ کنید',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'لغو',
+ 'wikieditor-toolbar-tool-reference-title' => 'اضاÙÙ‡ کردن منبع',
+ 'wikieditor-toolbar-tool-reference-insert' => 'اضاÙÙ‡ کردن',
+ 'wikieditor-toolbar-tool-reference-text' => 'متن منبع',
+ 'wikieditor-toolbar-tool-signature' => 'امضا و برچسب زمان',
+ 'wikieditor-toolbar-section-advanced' => 'پیشرÙته',
+ 'wikieditor-toolbar-tool-heading' => 'عنوان',
+ 'wikieditor-toolbar-tool-heading-1' => 'سطح ۱',
+ 'wikieditor-toolbar-tool-heading-2' => 'سطح ۲',
+ 'wikieditor-toolbar-tool-heading-3' => 'سطح ۳',
+ 'wikieditor-toolbar-tool-heading-4' => 'سطح ۴',
+ 'wikieditor-toolbar-tool-heading-5' => 'سطح ۵',
+ 'wikieditor-toolbar-tool-heading-example' => 'متن عنوان',
+ 'wikieditor-toolbar-group-format' => 'قالب',
+ 'wikieditor-toolbar-tool-ulist' => 'Ùهرست گلوله‌ای',
+ 'wikieditor-toolbar-tool-ulist-example' => 'مورد Ùهرست گلوله‌ای',
+ 'wikieditor-toolbar-tool-olist' => 'Ùهرست شماره‌ای',
+ 'wikieditor-toolbar-tool-olist-example' => 'مورد Ùهرست شماره‌ای',
+ 'wikieditor-toolbar-tool-indent' => 'تو رÙتگی',
+ 'wikieditor-toolbar-tool-indent-example' => 'خط تو رÙته',
+ 'wikieditor-toolbar-tool-nowiki' => 'نادیده‌گرÙتن قالب‌بندی ویکی',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'اینجا متن قالب‌بندی‌نشده وارد شود',
+ 'wikieditor-toolbar-tool-redirect' => 'تغییر مسیر',
+ 'wikieditor-toolbar-tool-redirect-example' => 'نام صÙحه مقصد',
+ 'wikieditor-toolbar-tool-big' => 'بزرگ',
+ 'wikieditor-toolbar-tool-big-example' => 'متن بزرگ',
+ 'wikieditor-toolbar-tool-small' => 'Ú©ÙˆÚ†Ú©',
+ 'wikieditor-toolbar-tool-small-example' => 'متن کوچک',
+ 'wikieditor-toolbar-tool-superscript' => 'بالانویس',
+ 'wikieditor-toolbar-tool-superscript-example' => 'متن بالانویس',
+ 'wikieditor-toolbar-tool-subscript' => 'زیرنویس',
+ 'wikieditor-toolbar-tool-subscript-example' => 'متن زیرنویس',
+ 'wikieditor-toolbar-group-insert' => 'اضاÙÙ‡ کردن',
+ 'wikieditor-toolbar-tool-gallery' => 'نگارخانهٔ تصویر',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:مثال.jpg|عنوان ۱
+$1:مثال.jpg|عنوان ۲',
+ 'wikieditor-toolbar-tool-newline' => 'خط جدید',
+ 'wikieditor-toolbar-tool-table' => 'جدول',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! عنوان ۱
+! عنوان ۲
+! عنوان ۳
+|-
+| ردی٠۱، خانه ۱
+| ردی٠۱، خانه ۲
+| ردی٠۱، خانه ۳
+|-
+| ردی٠۲، خانه ۱
+| ردی٠۲، خانه ۲
+| ردی٠۲، خانه ۳',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'متن خانه',
+ 'wikieditor-toolbar-tool-table-example-header' => 'متن عنوان',
+ 'wikieditor-toolbar-tool-table-title' => 'اضاÙÙ‡ کردن جدول',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'ردیÙ‌ها',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'ستون‌ها',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'اÙزودن ردی٠سرتیتر',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'سبک با لبه',
+ 'wikieditor-toolbar-tool-table-sortable' => 'ساختن جدول قابل مرتب‌سازی',
+ 'wikieditor-toolbar-tool-table-example' => 'مثال',
+ 'wikieditor-toolbar-tool-table-preview' => 'پیش‌نمایش',
+ 'wikieditor-toolbar-tool-table-insert' => 'اضاÙÙ‡ کردن',
+ 'wikieditor-toolbar-tool-table-cancel' => 'لغو',
+ 'wikieditor-toolbar-tool-table-toomany' => 'اضاÙÙ‡ کردن جدولی با بیش از $1 خانه توسط این ابزار ممکن نیست.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'شما عدد درستی برای تعداد ردیÙ‌ها Ùˆ ستون‌ها وارد نکرده‌اید.',
+ 'wikieditor-toolbar-tool-table-zero' => 'شما نمی‌توانید جدولی با صÙر ردی٠یا ستون اضاÙÙ‡ کنید.',
+ 'wikieditor-toolbar-tool-replace' => 'یاÙتن Ùˆ جایگزین کردن',
+ 'wikieditor-toolbar-tool-replace-title' => 'جستجو و جایگزین کردن',
+ 'wikieditor-toolbar-tool-replace-search' => 'جستجو برای:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'جایگزین کردن با:',
+ 'wikieditor-toolbar-tool-replace-case' => 'تطبیق بزرگی Ùˆ Ú©ÙˆÚ†Ú©ÛŒ حروÙ',
+ 'wikieditor-toolbar-tool-replace-regex' => 'به‌کارگیری عبارت جستجو به عنوان یک عبارت باقاعده',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'یاÙتن بعدی',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'جایگزین کردن بعدی',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'جایگزین کردن همه موارد',
+ 'wikieditor-toolbar-tool-replace-close' => 'بستن',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'جستجوی شما با هیچ موردی مطابقت نداشت.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 جایگزینی انجام شد.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'شما چیزی برای جستجو وارد نکردید.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'عبارت باقاعده‌ای که وارد کردید مجاز نیست: $1',
+ 'wikieditor-toolbar-section-characters' => 'نویسه‌های ویژه',
+ 'wikieditor-toolbar-characters-page-latin' => 'لاتین',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'لاتین گسترش‌یاÙته',
+ 'wikieditor-toolbar-characters-page-ipa' => 'آوانگاری بین‌المللی',
+ 'wikieditor-toolbar-characters-page-symbols' => 'نمادها',
+ 'wikieditor-toolbar-characters-page-greek' => 'یونانی',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'سیریلیک',
+ 'wikieditor-toolbar-characters-page-arabic' => 'عربی',
+ 'wikieditor-toolbar-characters-page-persian' => 'Ùارسی',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'عبری',
+ 'wikieditor-toolbar-characters-page-bangla' => 'بنگالی',
+ 'wikieditor-toolbar-characters-page-telugu' => 'تالوگو',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'سینهالی',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'گجراتی',
+ 'wikieditor-toolbar-characters-page-thai' => 'تایلندی',
+ 'wikieditor-toolbar-characters-page-lao' => 'لائو',
+ 'wikieditor-toolbar-characters-page-khmer' => 'خمر',
+ 'wikieditor-toolbar-section-help' => 'راهنما',
+ 'wikieditor-toolbar-help-heading-description' => 'توضیح',
+ 'wikieditor-toolbar-help-heading-syntax' => 'آن چه می‌نویسید',
+ 'wikieditor-toolbar-help-heading-result' => 'آن چه به دست می‌آورید',
+ 'wikieditor-toolbar-help-page-format' => 'قالب‌بندی',
+ 'wikieditor-toolbar-help-page-link' => 'پیوندها',
+ 'wikieditor-toolbar-help-page-heading' => 'عنوان‌ها',
+ 'wikieditor-toolbar-help-page-list' => 'Ùهرست‌ها',
+ 'wikieditor-toolbar-help-page-file' => 'پرونده‌ها',
+ 'wikieditor-toolbar-help-page-reference' => 'منابع',
+ 'wikieditor-toolbar-help-page-discussion' => 'بحث',
+ 'wikieditor-toolbar-help-content-italic-description' => 'مورب',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''متن مورب''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>متن مورب</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'ضخیم',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''متن ضخیم'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>متن ضخیم</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'ضخیم و مورب',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''متن ضخیم و مورب'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>متن ضخیم و مورب</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'پیوند داخلی',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[عنوان صÙحه|عنوان پیوند]]<br />[[عنوان صÙحه]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>عنوان پیوند</a><br /><a href='#'>عنوان صÙحه</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'پیوند به بیرون',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org عنوان پیوند]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>عنوان پیوند</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'عنوان سطح دوم',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== متن عنوان ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>متن عنوان</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'عنوان سطح سوم',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== متن عنوان ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>متن عنوان</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'عنوان سطح چهارم',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== متن عنوان ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>متن عنوان</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'عنوان سطح پنجم',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== متن عنوان =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>متن عنوان</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Ùهرست گلوله‌ای',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* مورد Ùهرست<br />* مورد Ùهرست',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>مورد Ùهرست</li><li>مورد Ùهرست</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Ùهرست شماره‌ای',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# مورد Ùهرست<br /># مورد Ùهرست',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>مورد Ùهرست</li><li>مورد Ùهرست</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'پرونده جاسازی‌شده',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:مثال.png|thumb|متن عنوان]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='متن عنوان' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='بزرگ‌نمایی' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>متن عنوان</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'منبع',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'متن صÙحه.&lt;ref name="test"&gt;[http://www.example.org متن پیوند]ØŒ متن اضاÙÛŒ.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "متن صÙحه.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'استÙاده بیشتر از همین منبع',
+ 'wikieditor-toolbar-help-content-rereference-result' => "متن صÙحه.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'نمایش منابع',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>متن پیوند</a>ØŒ متن اضاÙÛŒ.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'امضا به همراه برچسب زمان',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>نام کاربری</a> (<a href='#' title='{{#special:mytalk}}'>بحث</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'امضا',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>نام کاربری</a> (<a href='#' title='{{#special:mytalk}}'>بحث</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'تو رÙتگی',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'متن عادی<br />:متن تو رÙته<br />::متن تو رÙته',
+ 'wikieditor-toolbar-help-content-indent-result' => 'متن عادی<dl><dd>متن تو رÙته<dl><dd>متن تو رÙته</dd></dl></dd></dl>',
+);
+
+/** Finnish (Suomi)
+ * @author Crt
+ * @author Nike
+ * @author Silvonen
+ * @author Str4nd
+ * @author ZeiP
+ */
+$messages['fi'] = array(
+ 'wikieditor' => 'Edistynyt wikitext-muokkauskäyttöliittymä',
+ 'wikieditor-desc' => 'Tarjoaa laajennettavan wikitext-muokkauskäyttöliittymän ja monia toimintoja tarjoavia laajennuksia.',
+ 'wikieditor-wikitext-tab' => 'Wikiteksti',
+ 'wikieditor-loading' => 'Ladataan',
+ 'wikieditor-preview-preference' => 'Ota käyttöön vierekkäinen esikatselu',
+ 'wikieditor-preview-tab' => 'Esikatselu',
+ 'wikieditor-preview-changes-tab' => 'Muutokset',
+ 'wikieditor-preview-loading' => 'Ladataan…',
+ 'wikieditor-previewDialog-preference' => 'Ota esikatseluikkuna käyttöön',
+ 'wikieditor-previewDialog-tab' => 'Esikatselu',
+ 'wikieditor-previewDialog-loading' => 'Ladataan…',
+ 'wikieditor-publish-preference' => 'Ota käyttöön vaiheittainen julkaisu',
+ 'wikieditor-publish-button-publish' => 'Julkaise',
+ 'wikieditor-publish-button-cancel' => 'Peruuta',
+ 'wikieditor-publish-dialog-title' => 'Julkaise {{GRAMMAR:inessive|{{SITENAME}}}}',
+ 'wikieditor-publish-dialog-summary' => 'Muokkausyhteenveto (kuvaa lyhyesti tekemiäsi muutoksia):',
+ 'wikieditor-publish-dialog-minor' => 'Pieni muutos',
+ 'wikieditor-publish-dialog-watch' => 'Tarkkaile tätä sivua',
+ 'wikieditor-publish-dialog-publish' => 'Julkaise',
+ 'wikieditor-publish-dialog-goback' => 'Palaa takaisin',
+ 'wikieditor-template-editor-preference' => 'Ota käyttöön wikimallineiden lomakepohjainen muokkaus',
+ 'wikieditor-template-editor-dialog-title' => 'Muokkaa mallinetta',
+ 'wikieditor-template-editor-dialog-submit' => 'Päivitä',
+ 'wikieditor-template-editor-dialog-cancel' => 'Peruuta',
+ 'wikieditor-templates-preference' => 'Ota mallineiden piilotus käyttöön',
+ 'wikieditor-toc-preference' => 'Ota käyttöön navigoitava sisällysluettelo',
+ 'wikieditor-toc-show' => 'Näytä sisältö',
+ 'wikieditor-toc-hide' => 'Piilota sisältö',
+ 'wikieditor-toolbar' => 'Työkalupalkki muokkaukseen',
+ 'wikieditor-toolbar-desc' => 'Muokkaussivun työkalupalkki paremmalla käytettävyydellä.',
+ 'wikieditor-toolbar-preference' => 'Ota käyttöön parannettu työkalupalkki muokkauksissa',
+ 'wikieditor-toolbar-dialogs-preference' => 'Ota käyttöön valintatoiminto, jonka avulla voit lisätä linkkejä, taulukoita ja muuta',
+ 'wikieditor-toolbar-loading' => 'Ladataan…',
+ 'wikieditor-toolbar-tool-bold' => 'Lihavointi',
+ 'wikieditor-toolbar-tool-bold-example' => 'Lihavoitu teksti',
+ 'wikieditor-toolbar-tool-italic' => 'Kursivointi',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kursivoitu teksti',
+ 'wikieditor-toolbar-tool-ilink' => 'Sisäinen linkki',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Linkin otsikko',
+ 'wikieditor-toolbar-tool-xlink' => 'Ulkoinen linkki (muista http://-etuliite)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com linkin otsikko',
+ 'wikieditor-toolbar-tool-link' => 'Linkki',
+ 'wikieditor-toolbar-tool-link-title' => 'Lisää linkki',
+ 'wikieditor-toolbar-tool-link-int' => 'Wikisivuun',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Kohdesivu tai URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Sivun otsikko tai URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Näytettävä teksti:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Teksti, joka näytetään',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ulkoiseen sivustoon',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Linkin URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Linkin teksti:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Lisää linkki',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Peruuta',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Sivu on olemassa',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Sivua ei ole olemassa',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Virheellinen otsikko',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ulkoinen linkki',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Tarkastetaan sivun olemassaolo…',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Antamasi otsikko on virheellinen.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL-osoite, jonka annoit näyttää siltä kuin se olisi linkki toiselle wikisivulle.
+Haluatko tehdä siitä sisäisen linkin?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Sisäinen linkki',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ulkoinen linkki',
+ 'wikieditor-toolbar-tool-link-empty' => 'Et antanut mitään linkitettävää.',
+ 'wikieditor-toolbar-tool-file' => 'Tallennettu tiedosto',
+ 'wikieditor-toolbar-tool-file-example' => 'Esimerkki.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Viite',
+ 'wikieditor-toolbar-tool-reference-example' => 'Lisää alahuomautusteksti tähän',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Peruuta',
+ 'wikieditor-toolbar-tool-reference-title' => 'Lisää viite',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Lisää',
+ 'wikieditor-toolbar-tool-reference-text' => 'Viiteteksti',
+ 'wikieditor-toolbar-tool-signature' => 'Allekirjoitus ja aikaleima',
+ 'wikieditor-toolbar-section-advanced' => 'Laajennettu',
+ 'wikieditor-toolbar-tool-heading' => 'Otsikko',
+ 'wikieditor-toolbar-tool-heading-1' => 'Taso 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Taso 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Taso 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Taso 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Taso 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Otsikkoteksti',
+ 'wikieditor-toolbar-group-format' => 'Muoto',
+ 'wikieditor-toolbar-tool-ulist' => 'Luettelo',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Luettelon kohta',
+ 'wikieditor-toolbar-tool-olist' => 'Numeroitu luettelo',
+ 'wikieditor-toolbar-tool-olist-example' => 'Numeroidun luettelon kohta',
+ 'wikieditor-toolbar-tool-indent' => 'Sisennys',
+ 'wikieditor-toolbar-tool-indent-example' => 'Sisennetty rivi',
+ 'wikieditor-toolbar-tool-nowiki' => 'Tekstiä, jota wiki ei muotoile',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Lisää muotoilematon teksti tähän',
+ 'wikieditor-toolbar-tool-redirect' => 'Ohjaus',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Kohdesivun nimi',
+ 'wikieditor-toolbar-tool-big' => 'Suuri',
+ 'wikieditor-toolbar-tool-big-example' => 'Suuri teksti',
+ 'wikieditor-toolbar-tool-small' => 'Pieni',
+ 'wikieditor-toolbar-tool-small-example' => 'Pieni teksti',
+ 'wikieditor-toolbar-tool-superscript' => 'Yläindeksi',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Yläindeksin teksti',
+ 'wikieditor-toolbar-tool-subscript' => 'Alaindeksi',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Alaindeksin teksti',
+ 'wikieditor-toolbar-group-insert' => 'Lisää',
+ 'wikieditor-toolbar-tool-gallery' => 'Kuvagalleria',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Esimerkki.jpg|Kuvateksti1
+$1:Esimerkki.jpg|Kuvateksti2',
+ 'wikieditor-toolbar-tool-newline' => 'Uusi rivi',
+ 'wikieditor-toolbar-tool-table' => 'Taulukko',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! otsikko 1
+! otsikko 2
+! otsikko 3
+|-
+| rivi 1, solu 1
+| rivi 1, solu 2
+| rivi 1, solu 3
+|-
+| rivi 2, solu 1
+| rivi 2, solu 2
+| rivi 2, solu 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Solun teksti',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Otsikkoteksti',
+ 'wikieditor-toolbar-tool-table-title' => 'Lisää taulukko',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rivit',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Sarakkeet',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Lisää otsikkorivi',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Tyylitellyt reunat',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tee taulukosta lajiteltava',
+ 'wikieditor-toolbar-tool-table-example' => 'Esimerkki',
+ 'wikieditor-toolbar-tool-table-preview' => 'Esikatselu',
+ 'wikieditor-toolbar-tool-table-insert' => 'Lisää',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Peruuta',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Tällä toiminnolla ei voi tehdä taulukkoa, jossa on yli $1 solua.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Et syöttänyt kelvollista rivi- tai sarakemäärää.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Et voi lisätä taulukkoa, jossa ei ole yhtään riviä tai saraketta.',
+ 'wikieditor-toolbar-tool-replace' => 'Etsi ja korvaa',
+ 'wikieditor-toolbar-tool-replace-title' => 'Etsi ja korvaa',
+ 'wikieditor-toolbar-tool-replace-search' => 'Etsi seuraavaa:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Korvaa seuraavalla:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Huomio kirjainkoko',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Kohtele hakuarvoa säännöllisenä lausekkeena',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Etsi seuraava',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Korvaa seuraava',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Korvaa kaikki',
+ 'wikieditor-toolbar-tool-replace-close' => 'Sulje',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Hakusi ei tuottanut osumia.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 korvausta tehty.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Et antanut mitään haettavaa.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Syöttämäsi säännöllinen lauseke ei ole kelvollinen: $1',
+ 'wikieditor-toolbar-section-characters' => 'Erikoismerkit',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latina',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Laajennettu latina',
+ 'wikieditor-toolbar-characters-page-ipa' => 'Kansainvälinen foneettinen kirjaimisto (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbolit',
+ 'wikieditor-toolbar-characters-page-greek' => 'Kreikka',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kyrillinen',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabia',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persia',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Heprea',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengali',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhali',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gudžarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Ohje',
+ 'wikieditor-toolbar-help-heading-description' => 'Kuvaus',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Mitä kirjoitat',
+ 'wikieditor-toolbar-help-heading-result' => 'Mitä saat',
+ 'wikieditor-toolbar-help-page-format' => 'Muotoilu',
+ 'wikieditor-toolbar-help-page-link' => 'Linkit',
+ 'wikieditor-toolbar-help-page-heading' => 'Otsikot',
+ 'wikieditor-toolbar-help-page-list' => 'Luettelot',
+ 'wikieditor-toolbar-help-page-file' => 'Tiedostot',
+ 'wikieditor-toolbar-help-page-reference' => 'Viitteet',
+ 'wikieditor-toolbar-help-page-discussion' => 'Keskustelu',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursivointi',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursivoitu teksti''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursivoitu teksti</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Lihavointi',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Lihavoitu teksti'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Lihavoitu teksti</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Lihavointi ja kursivointi',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Lihavoitu ja kursivoitu teksti'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Lihavoitu ja kursivoitu teksti</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Sisäinen linkki',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Sivun nimi|Linkin nimi]]<br />[[Sivun nimi]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Linkin nimi</a><br /><a href='#'>Sivun nimi</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ulkoinen linkki',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Linkin nimi]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Linkin nimi</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2. tason otsikko',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Otsikkoteksti ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Otsikkoteksti</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3. tason otsikko',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Otsikkoteksti ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Otsikkoteksti</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4. tason otsikko',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Otsikkoteksti ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Otsikkoteksti</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5. tason otsikko',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Otsikkoteksti =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Otsikkoteksti</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Luettelo',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Luettelon kohta<br />* Luettelon kohta',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Luettelon kohta</li><li>Luettelon kohta</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Numeroitu luettelo',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Luettelon kohta<br /># Luettelon kohta',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Luettelon kohta</li><li>Luettelon kohta</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Tallennettu tiedosto',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Esimerkki.png|thumb|Kuvateksti]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Kuvateksti' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Suurenna' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Kuvateksti</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Viite',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Sivun teksti.&lt;ref name="testi"&gt;[http://www.example.org Linkin teksti], lisäteksti.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Sivun teksti.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Saman viitteen lisäkäyttö',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Sivun teksti.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Näytä viitteet',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Linkin teksti</a>, lisäteksti.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Allekirjoitus aikaleimalla',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Käyttäjätunnus</a> (<a href='#' title='{{#special:mytalk}}'>keskustelu</a>) 10. kesäkuuta 2009 kello 15.54 (EEST)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Allekirjoitus',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Käyttäjätunnus</a> (<a href='#' title='{{#special:mytalk}}'>keskustelu</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Sisennys',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normaali teksti<br />:Sisennetty teksti<br />::Sisennetty teksti',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normaali teksti<dl><dd>Sisennetty teksti<dl><dd>Sisennetty teksti</dd></dl></dd></dl>',
+);
+
+/** French (Français)
+ * @author Crochet.david
+ * @author IAlex
+ * @author Jean-Frédéric
+ * @author McDutchie
+ * @author Peter17
+ * @author PieRRoMaN
+ * @author Urhixidur
+ * @author Verdy p
+ * @author Zetud
+ */
+$messages['fr'] = array(
+ 'wikieditor' => 'Interface avancée de modification de wikitexte',
+ 'wikieditor-desc' => 'Fournit un interface de modification de wikitexte extensible et plusieurs fonctionnalités.',
+ 'wikieditor-wikitext-tab' => 'WikiTexte',
+ 'wikieditor-loading' => 'Chargement',
+ 'wikieditor-preview-preference' => 'Activer la prévisualisation côte à côte',
+ 'wikieditor-preview-tab' => 'Prévisualisation',
+ 'wikieditor-preview-changes-tab' => 'Changements',
+ 'wikieditor-preview-loading' => 'Chargement...',
+ 'wikieditor-previewDialog-preference' => 'Activer la boîte de dialogue d’aperçu',
+ 'wikieditor-previewDialog-tab' => 'Prévisualisation',
+ 'wikieditor-previewDialog-loading' => 'Chargement...',
+ 'wikieditor-publish-preference' => 'Activer la publication étape par étape',
+ 'wikieditor-publish-button-publish' => 'Publier',
+ 'wikieditor-publish-button-cancel' => 'Annuler',
+ 'wikieditor-publish-dialog-title' => 'Publier sur {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Résumé de modification (décrivez brièvement les changements que vous avez apportés) :',
+ 'wikieditor-publish-dialog-minor' => 'Modification mineure',
+ 'wikieditor-publish-dialog-watch' => 'Suivre cette page',
+ 'wikieditor-publish-dialog-publish' => 'Publier',
+ 'wikieditor-publish-dialog-goback' => 'Retour',
+ 'wikieditor-template-editor-preference' => 'Activer la modification à base de formulaires des modèles wiki',
+ 'wikieditor-template-editor-dialog-title' => 'Modifier le modèle',
+ 'wikieditor-template-editor-dialog-submit' => 'Mettre à jour',
+ 'wikieditor-template-editor-dialog-cancel' => 'Annuler',
+ 'wikieditor-templates-preference' => 'Activer le repliement des modèles',
+ 'wikieditor-toc-preference' => 'Activer la table des matières navigable',
+ 'wikieditor-toc-show' => 'Afficher le contenu',
+ 'wikieditor-toc-hide' => 'Masquer le contenu',
+ 'wikieditor-toolbar' => 'Barre d’outils de modification',
+ 'wikieditor-toolbar-desc' => 'Barre d’outils de modification avec l’utilisabilité améliorée',
+ 'wikieditor-toolbar-preference' => 'Activer la barre d’outils améliorée',
+ 'wikieditor-toolbar-dialogs-preference' => 'Activer les boîtes de dialogue pour ajouter des liens, des tableaux et plus',
+ 'wikieditor-toolbar-hidesig' => "Masquer le bouton de signature dans les pages de l'espace de noms principal",
+ 'wikieditor-toolbar-loading' => 'Chargement...',
+ 'wikieditor-toolbar-tool-bold' => 'Gras',
+ 'wikieditor-toolbar-tool-bold-example' => 'Texte en gras',
+ 'wikieditor-toolbar-tool-italic' => 'Italique',
+ 'wikieditor-toolbar-tool-italic-example' => 'Texte en italique',
+ 'wikieditor-toolbar-tool-ilink' => 'Lien interne',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titre du lien',
+ 'wikieditor-toolbar-tool-xlink' => 'Lien externe (n’oubliez pas le préfixe http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com titre du lien',
+ 'wikieditor-toolbar-tool-link' => 'Lien',
+ 'wikieditor-toolbar-tool-link-title' => 'Insérer un lien',
+ 'wikieditor-toolbar-tool-link-int' => 'Vers un article / une page wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Titre de la page :',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titre de la page ou URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Texte du lien :',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Entrez le texte qui devrait être affiché',
+ 'wikieditor-toolbar-tool-link-ext' => 'Vers une page web externe',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL cible du lien :',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Texte du lien :',
+ 'wikieditor-toolbar-tool-link-insert' => 'Insérer le lien',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Annuler',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'La page existe',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'La page n’existe pas',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Titre invalide',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Lien externe',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Vérification de l’existence de la page...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Le titre que vous avez spécifié est incorrect.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'L’URL que vous avez spécifiée semble mener à une autre page du wiki.
+Voulez-vous utiliser un lien interne à la place ?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Lien interne',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Lien externe',
+ 'wikieditor-toolbar-tool-link-empty' => 'Vous n’avez rien entré qui puisse être lié.',
+ 'wikieditor-toolbar-tool-file' => 'Fichier inséré',
+ 'wikieditor-toolbar-tool-file-example' => 'Exemple.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Référence',
+ 'wikieditor-toolbar-tool-reference-example' => 'Insérer le texte de la note en bas de page ici',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Annuler',
+ 'wikieditor-toolbar-tool-reference-title' => 'Insérer une référence',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Insérer',
+ 'wikieditor-toolbar-tool-reference-text' => 'Texte de la référence',
+ 'wikieditor-toolbar-tool-signature' => 'Signature et date',
+ 'wikieditor-toolbar-section-advanced' => 'Avancé',
+ 'wikieditor-toolbar-tool-heading' => 'Titre',
+ 'wikieditor-toolbar-tool-heading-1' => 'Niveau 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Niveau 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Niveau 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Niveau 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Niveau 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Texte du titre',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Liste à puces',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Élément de la liste à puces',
+ 'wikieditor-toolbar-tool-olist' => 'Liste numérotée',
+ 'wikieditor-toolbar-tool-olist-example' => 'Élément de la liste numérotée',
+ 'wikieditor-toolbar-tool-indent' => 'Indentation',
+ 'wikieditor-toolbar-tool-indent-example' => 'Ligne indentée',
+ 'wikieditor-toolbar-tool-nowiki' => 'Pas de formatage wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Insérer ici un texte non formaté',
+ 'wikieditor-toolbar-tool-redirect' => 'Redirection',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nom de la page de destination',
+ 'wikieditor-toolbar-tool-big' => 'Grand',
+ 'wikieditor-toolbar-tool-big-example' => 'Grand texte',
+ 'wikieditor-toolbar-tool-small' => 'Petit',
+ 'wikieditor-toolbar-tool-small-example' => 'Petit texte',
+ 'wikieditor-toolbar-tool-superscript' => 'Exposant',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Texte en exposant',
+ 'wikieditor-toolbar-tool-subscript' => 'Indice',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Texte en indice',
+ 'wikieditor-toolbar-group-insert' => 'Insérer',
+ 'wikieditor-toolbar-tool-gallery' => 'Galerie de fichiers',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Exemple.jpg|Description 1
+$1:Exemple.jpg|Description 2',
+ 'wikieditor-toolbar-tool-newline' => 'Saut de ligne',
+ 'wikieditor-toolbar-tool-table' => 'Tableau',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! en-tête 1
+! en-tête 2
+! en-tête 3
+|-
+| ligne 1, case 1
+| ligne 1, case 2
+| ligne 1, case 3
+|-
+| ligne 2, case 1
+| ligne 2, case 2
+| ligne 2, case 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Texte de la cellule',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Texte de l’en-tête',
+ 'wikieditor-toolbar-tool-table-title' => 'Insérer un tableau',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Lignes',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Colonnes',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Inclure la ligne d’en-tête',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Style avec bordures',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Rendre le tableau triable',
+ 'wikieditor-toolbar-tool-table-example' => 'Texte de la cellule',
+ 'wikieditor-toolbar-tool-table-preview' => 'Prévisualisation',
+ 'wikieditor-toolbar-tool-table-insert' => 'Insérer',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Annuler',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Il n’est pas possible d’insérer un tableau de plus de $1 cellules avec cet outil.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Vous n’avez pas entré un nombre de lignes ou de colonnes valide.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Vous ne pouvez pas insérer un tableau sans ligne ou sans colonne.',
+ 'wikieditor-toolbar-tool-replace' => 'Rechercher et remplacer',
+ 'wikieditor-toolbar-tool-replace-title' => 'Rechercher et remplacer',
+ 'wikieditor-toolbar-tool-replace-search' => 'Rechercher :',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Remplacer par :',
+ 'wikieditor-toolbar-tool-replace-case' => 'Faire correspondre la casse',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Traiter la chaîne de recherche comme une expression rationnelle',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Rechercher le suivant',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Remplacer le suivant',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Remplacer tout',
+ 'wikieditor-toolbar-tool-replace-close' => 'Fermer',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Votre recherche n’a abouti à aucune correspondance.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 remplacements faits.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Vous n’avez pas indiqué de texte à rechercher.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'L’expression rationnelle entrée est invalide : $1',
+ 'wikieditor-toolbar-section-characters' => 'Caractères spéciaux',
+ 'wikieditor-toolbar-characters-page-latin' => 'latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'latin étendu',
+ 'wikieditor-toolbar-characters-page-ipa' => 'API',
+ 'wikieditor-toolbar-characters-page-symbols' => 'symboles',
+ 'wikieditor-toolbar-characters-page-greek' => 'grec',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'cyrillique',
+ 'wikieditor-toolbar-characters-page-arabic' => 'arabe',
+ 'wikieditor-toolbar-characters-page-persian' => 'persan',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'hébreu',
+ 'wikieditor-toolbar-characters-page-bangla' => 'bengalî',
+ 'wikieditor-toolbar-characters-page-telugu' => 'télougou',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'cingalais',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'gujarâtî',
+ 'wikieditor-toolbar-characters-page-thai' => 'thaï',
+ 'wikieditor-toolbar-characters-page-lao' => 'laotien',
+ 'wikieditor-toolbar-characters-page-khmer' => 'khmer',
+ 'wikieditor-toolbar-section-help' => 'Aide',
+ 'wikieditor-toolbar-help-heading-description' => 'Description',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Ce que vous tapez',
+ 'wikieditor-toolbar-help-heading-result' => 'Ce que vous obtenez',
+ 'wikieditor-toolbar-help-page-format' => 'Formatage',
+ 'wikieditor-toolbar-help-page-link' => 'Liens',
+ 'wikieditor-toolbar-help-page-heading' => 'Titres',
+ 'wikieditor-toolbar-help-page-list' => 'Listes',
+ 'wikieditor-toolbar-help-page-file' => 'Fichiers',
+ 'wikieditor-toolbar-help-page-reference' => 'Références',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discussion',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Italique',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Texte italique''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Texte italique</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Gras',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Texte gras'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Texte gras</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Gras &amp; italique',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Texte gras &amp; italique'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Texte gras &amp; italique</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Lien interne',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Titre de la page|Texte du lien]]<br />[[Titre de la page]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Texte du lien</a><br /><a href='#'>Titre de la page</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Lien externe',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Texte du lien]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Texte du lien</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Titre de deuxième niveau',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Texte du titre ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Texte du titre</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Titre de troisième niveau',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Texte du titre ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Texte du titre</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Titre de quatrième niveau',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Texte du titre ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Texte du titre</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Titre de cinquième niveau',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Texte du titre =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Texte du titre</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Liste à puces',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Élément de la liste<br />* Élément de la liste',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Élément de la liste</li><li>Élément de la liste</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Liste numérotée',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Élément de la liste<br /># Élément de la liste',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Élément de la liste</li><li>Élément de la liste</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Fichier inséré',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Exemple.png|thumb|Texte affiché]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Texte affiché' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Texte affiché</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Référence',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Texte de la page&lt;ref name="test"&gt;[http://www.example.org texte du lien], texte additionnel.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Texte de la page <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Utilisation additionnelle de la même référence',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Texte de la page <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Afficher les références',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Texte du lien</a>, texte additionnel.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Signature avec date',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nom d’utilisateur</a> (<a href='#' title='{{#special:mytalk}}'>discuter</a>) 10 Juin 2009 à 15:54 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signature',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nom d’utilisateur</a> (<a href='#' title='{{#special:mytalk}}'>discuter</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indentation',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Texte normal<br />:Texte indenté<br />::Texte indenté',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Texte normal<dl><dd>Texte indenté<dl><dd>Texte indenté</dd></dl></dd></dl>',
+);
+
+/** Franco-Provençal (Arpetan)
+ * @author ChrisPtDe
+ */
+$messages['frp'] = array(
+ 'wikieditor' => 'Entèrface avanciê de changement de vouiquitèxto',
+ 'wikieditor-desc' => 'Balye una entèrface de changement de vouiquitèxto èxtensibla et un mouél de fonccionalitâts.',
+ 'wikieditor-wikitext-tab' => 'Vouiquitèxto',
+ 'wikieditor-loading' => 'Chargement',
+ 'wikieditor-preview-preference' => 'Activar la prèvisualisacion a châ couta',
+ 'wikieditor-preview-tab' => 'Prèvisualisacion',
+ 'wikieditor-preview-changes-tab' => 'Changements',
+ 'wikieditor-preview-loading' => 'Chargement...',
+ 'wikieditor-previewDialog-preference' => 'Activar la bouèta de dialogo d’apèrçu',
+ 'wikieditor-previewDialog-tab' => 'Prèvisualisacion',
+ 'wikieditor-previewDialog-loading' => 'Chargement...',
+ 'wikieditor-publish-preference' => 'Activar la publecacion a châ ètapa',
+ 'wikieditor-publish-button-publish' => 'Publeyér',
+ 'wikieditor-publish-button-cancel' => 'Anular',
+ 'wikieditor-publish-dialog-title' => 'Publeyér dessus {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Rèsumâ de changement (dècrîde en grôs los changements que vos éd fêts) :',
+ 'wikieditor-publish-dialog-minor' => 'Petiôt changement',
+ 'wikieditor-publish-dialog-watch' => 'Siuvre ceta pâge',
+ 'wikieditor-publish-dialog-publish' => 'Publeyér',
+ 'wikieditor-publish-dialog-goback' => 'Retôrn',
+ 'wikieditor-template-editor-preference' => 'Activar lo changement a bâsa de formulèros des modèlos vouiqui',
+ 'wikieditor-template-editor-dialog-title' => 'Changiér lo modèlo',
+ 'wikieditor-template-editor-dialog-submit' => 'Betar a jorn',
+ 'wikieditor-template-editor-dialog-cancel' => 'Anular',
+ 'wikieditor-templates-preference' => 'Activar lo retrèt des modèlos',
+ 'wikieditor-toc-preference' => 'Activar la trâbla de les matiéres navigâbla',
+ 'wikieditor-toc-show' => 'Fâre vêre lo contegnu',
+ 'wikieditor-toc-hide' => 'Cachiér lo contegnu',
+ 'wikieditor-toolbar' => 'Bârra d’outils d’èdicion',
+ 'wikieditor-toolbar-desc' => 'Bârra d’outils d’èdicion avouéc l’utilisabilitât mèlyorâ',
+ 'wikieditor-toolbar-preference' => 'Activar la bârra d’outils d’èdicion mèlyorâ',
+ 'wikieditor-toolbar-dialogs-preference' => 'Activar les bouètes de dialogo por apondre des lims, des tablôs et ples',
+ 'wikieditor-toolbar-loading' => 'Chargement...',
+ 'wikieditor-toolbar-tool-bold' => 'Grâs',
+ 'wikieditor-toolbar-tool-bold-example' => 'Tèxto en grâs',
+ 'wikieditor-toolbar-tool-italic' => 'Étalico',
+ 'wikieditor-toolbar-tool-italic-example' => 'Tèxto en étalico',
+ 'wikieditor-toolbar-tool-ilink' => 'Lim de dedens',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titro du lim',
+ 'wikieditor-toolbar-tool-xlink' => 'Lim de defôr (oubliâd pas lo prèfixo http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com titro du lim',
+ 'wikieditor-toolbar-tool-link' => 'Lim',
+ 'wikieditor-toolbar-tool-link-title' => 'Entrebetar un lim',
+ 'wikieditor-toolbar-tool-link-int' => 'De vers una pâge vouiqui',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Titro de la pâge ou ben URL :',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titro de la pâge ou ben URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Tèxto du lim :',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Buchiéd lo tèxto que devrêt étre montrâ',
+ 'wikieditor-toolbar-tool-link-ext' => 'De vers una pâge vouèbe de defôr',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL ciba du lim :',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Tèxto du lim :',
+ 'wikieditor-toolbar-tool-link-insert' => 'Entrebetar lo lim',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Anular',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'La pâge ègziste',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'La pâge ègziste pas',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Titro envalido',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Lim de defôr',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Contrôlo de l’ègzistence de la pâge...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Lo titro que vos éd spècefiâ est fôx.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'L’URL que vos éd spècefiâ semble liyér vers una ôtra pâge du vouiqui.
+Voléd-vos utilisar un lim de dedens a la place ?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Lim de dedens',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Lim de defôr',
+ 'wikieditor-toolbar-tool-link-empty' => 'Vos éd ren buchiê que pouesse étre liyê.',
+ 'wikieditor-toolbar-tool-file' => 'Fichiér entrebetâ',
+ 'wikieditor-toolbar-tool-file-example' => 'Ègzemplo.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Refèrence',
+ 'wikieditor-toolbar-tool-reference-example' => 'Buchiéd lo tèxto de la nota d’avâl la pâge ique',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Anular',
+ 'wikieditor-toolbar-tool-reference-title' => 'Entrebetar una refèrence',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Entrebetar',
+ 'wikieditor-toolbar-tool-reference-text' => 'Tèxto de la refèrence',
+ 'wikieditor-toolbar-tool-signature' => 'Signatura et dâta',
+ 'wikieditor-toolbar-section-advanced' => 'Avanciê',
+ 'wikieditor-toolbar-tool-heading' => 'Titro',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivél 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivél 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivél 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivél 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivél 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Tèxto du titro',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista de puges',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Èlèment de la lista de puges',
+ 'wikieditor-toolbar-tool-olist' => 'Lista numerotâ',
+ 'wikieditor-toolbar-tool-olist-example' => 'Èlèment de la lista numerotâ',
+ 'wikieditor-toolbar-tool-indent' => 'Endentacion',
+ 'wikieditor-toolbar-tool-indent-example' => 'Legne endentâ',
+ 'wikieditor-toolbar-tool-nowiki' => 'Gins de formatâjo vouiqui',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Buchiéd lo tèxto pas formatâ ique',
+ 'wikieditor-toolbar-tool-redirect' => 'Redirèccion',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nom de la pâge de dèstinacion',
+ 'wikieditor-toolbar-tool-big' => 'Grôs',
+ 'wikieditor-toolbar-tool-big-example' => 'Grôs tèxto',
+ 'wikieditor-toolbar-tool-small' => 'Petiôt',
+ 'wikieditor-toolbar-tool-small-example' => 'Petiôt tèxto',
+ 'wikieditor-toolbar-tool-superscript' => 'Èxposent',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Tèxto en èxposent',
+ 'wikieditor-toolbar-tool-subscript' => 'Segno',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Tèxto en segno',
+ 'wikieditor-toolbar-group-insert' => 'Entrebetar',
+ 'wikieditor-toolbar-tool-gallery' => 'Galerie d’émâges',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Ègzemplo.jpg|Dèscripcion 1
+$1:Ègzemplo.jpg|Dèscripcion 2',
+ 'wikieditor-toolbar-tool-newline' => 'Sôt de legne',
+ 'wikieditor-toolbar-tool-table' => 'Tablô',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! en-téta 1
+! en-téta 2
+! en-téta 3
+|-
+| legne 1, câsa 1
+| legne 1, câsa 2
+| legne 1, câsa 3
+|-
+| legne 2, câsa 1
+| legne 2, câsa 2
+| legne 2, câsa 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Tèxto de la cèlula',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Tèxto de l’en-téta',
+ 'wikieditor-toolbar-tool-table-title' => 'Entrebetar un tablô',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Legnes',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Colones',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Encllure la legne d’en-téta',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stilo avouéc bordures',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Rendre lo tablô triâblo',
+ 'wikieditor-toolbar-tool-table-example' => 'Ègzemplo',
+ 'wikieditor-toolbar-tool-table-preview' => 'Prèvisualisacion',
+ 'wikieditor-toolbar-tool-table-insert' => 'Entrebetar',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Anular',
+ 'wikieditor-toolbar-tool-table-toomany' => 'O est pas possiblo d’entrebetar un tablô de més de $1 cèlules avouéc cél outil.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Vos éd pas buchiê un nombro de legnes ou ben de colones valido.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Vos pouede pas entrebetar un tablô sen legne ou ben sen colona.',
+ 'wikieditor-toolbar-tool-replace' => 'Rechèrchiér et pués remplaciér',
+ 'wikieditor-toolbar-tool-replace-title' => 'Rechèrchiér et pués remplaciér',
+ 'wikieditor-toolbar-tool-replace-search' => 'Rechèrchiér :',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Remplaciér avouéc :',
+ 'wikieditor-toolbar-tool-replace-case' => 'Fâre corrèspondre la câssa',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Trètar la chêna de rechèrche coment una èxprèssion racionèla',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Rechèrchiér celi d’aprés',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Remplaciér celi d’aprés',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Remplaciér tot',
+ 'wikieditor-toolbar-tool-replace-close' => 'Cllôre',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Voutra rechèrche at trovâ gins de corrèspondance.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 remplacements fêts.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Vos éd buchiê gins de tèxto a rechèrchiér.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'L’èxprèssion racionèla buchiê est envalida : $1',
+ 'wikieditor-toolbar-section-characters' => 'Caractèros spèciâls',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin ètendu',
+ 'wikieditor-toolbar-characters-page-ipa' => 'AFE (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simbolos',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grèco',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirilico',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabo',
+ 'wikieditor-toolbar-characters-page-persian' => 'Pèrsan',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hèbrèo',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengali',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Tèlougou',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Cingalês',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Goudjarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tayi',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'C’mère',
+ 'wikieditor-toolbar-section-help' => 'Éde',
+ 'wikieditor-toolbar-help-heading-description' => 'Dèscripcion',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Cen que vos buchiéd',
+ 'wikieditor-toolbar-help-heading-result' => 'Cen que vos avéd',
+ 'wikieditor-toolbar-help-page-format' => 'Formatâjo',
+ 'wikieditor-toolbar-help-page-link' => 'Lims',
+ 'wikieditor-toolbar-help-page-heading' => 'Titros',
+ 'wikieditor-toolbar-help-page-list' => 'Listes',
+ 'wikieditor-toolbar-help-page-file' => 'Fichiérs',
+ 'wikieditor-toolbar-help-page-reference' => 'Refèrences',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discussion',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Étalico',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Tèxto en étalico''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Tèxto en étalico</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Grâs',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Tèxto en grâs'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Tèxto en grâs</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Grâs &amp; étalico',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Tèxto en grâs &amp; en étalico'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Tèxto en grâs &amp; en étalico</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Lim de dedens',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Titro de la pâge|Tèxto du lim]]<br />[[Titro de la pâge]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Tèxto du lim</a><br /><a href='#'>Titro de la pâge</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Lim de defôr',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Tèxto du lim]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Tèxto du lim</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Titro de 2<sup>nd</sup> nivél',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Tèxto du titro ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Tèxto du titro</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Titro de 3<sup>émo</sup> nivél',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Tèxto du titro ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Tèxto du titro</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Titro de 4<sup>émo</sup> nivél',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Tèxto du titro ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Tèxto du titro</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Titro de 5<sup>émo</sup> nivél',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Tèxto du titro =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Tèxto du titro</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista de puges',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Èlèment de la lista<br />* Èlèment de la lista',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Èlèment de la lista</li><li>Èlèment de la lista</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista numerotâ',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Èlèment de la lista<br /># Èlèment de la lista',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Èlèment de la lista</li><li>Èlèment de la lista</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Fichiér entrebetâ',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Ègzemplo.png|thumb|Tèxto montrâ]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Tèxto montrâ' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Agrantir' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Tèxto montrâ</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Refèrence',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Tèxto de la pâge.&lt;ref name="test"&gt;[http://www.example.org tèxto du lim], tèxto de ples.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Tèxto de la pâge.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Usâjo de ples de la méma refèrence',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Tèxto de la pâge.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Fâre vêre les refèrences',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Tèxto du lim</a>, tèxto de ples.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Signatura avouéc dâta',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nom d’utilisator</a> (<a href='#' title='{{#special:mytalk}}'>discutar</a>) 10 de jouen 2009 a 15:54 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signatura',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nom d’utilisator</a> (<a href='#' title='{{#special:mytalk}}'>discutar</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Endentacion',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Tèxto normal<br />:Tèxto endentâ<br />::Tèxto endentâ',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Tèxto normal<dl><dd>Tèxto endentâ<dl><dd>Tèxto endentâ</dd></dl></dd></dl>',
+);
+
+/** Friulian (Furlan)
+ * @author Klenje
+ */
+$messages['fur'] = array(
+ 'wikieditor-preview-tab' => 'Anteprime',
+ 'wikieditor-preview-changes-tab' => 'Cambiaments',
+ 'wikieditor-preview-loading' => 'Daûr a cjamâ…',
+ 'wikieditor-previewDialog-tab' => 'Anteprime',
+ 'wikieditor-previewDialog-loading' => 'Daûr a cjamâ…',
+ 'wikieditor-toolbar-loading' => 'Daûr a cjamâ…',
+ 'wikieditor-toolbar-tool-bold' => 'Gruessut',
+ 'wikieditor-toolbar-tool-bold-example' => 'Test in gruessut',
+ 'wikieditor-toolbar-tool-italic' => 'Corsîf',
+ 'wikieditor-toolbar-tool-italic-example' => 'Test in corsîf',
+ 'wikieditor-toolbar-tool-ilink' => 'Leam interni',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titul dal leam',
+ 'wikieditor-toolbar-tool-link' => 'Leam',
+ 'wikieditor-toolbar-tool-table-preview' => 'Anteprime',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simbols',
+ 'wikieditor-toolbar-section-help' => 'Jutori',
+);
+
+/** Western Frisian (Frysk) */
+$messages['fy'] = array(
+ 'wikieditor-toolbar-tool-link-cancel' => 'Ofbrekke',
+);
+
+/** Scottish Gaelic (Gàidhlig)
+ * @author Akerbeltz
+ */
+$messages['gd'] = array(
+ 'wikieditor' => 'Eadar-aghaidh deasachadh wikitext adhartach',
+ 'wikieditor-desc' => 'Bheir seo dhut eadar-aghaidh deasachadh wikitext adhartach agus iomadh mòideal a bheir dhut feartan',
+ 'wikieditor-wikitext-tab' => 'Wikitext',
+ 'wikieditor-loading' => "'Ga luchdadh",
+ 'wikieditor-preview-preference' => 'Cuir an comas ro-shealladh taobh ri taobh',
+ 'wikieditor-preview-tab' => 'Ro-shealladh',
+ 'wikieditor-preview-changes-tab' => 'Mùthaidhean',
+ 'wikieditor-preview-loading' => "'Ga luchdadh...",
+ 'wikieditor-previewDialog-preference' => 'Cuir an comas còmhradh an ro-sheallaidh',
+ 'wikieditor-previewDialog-tab' => 'Ro-shealladh',
+ 'wikieditor-previewDialog-loading' => "'Ga luchdadh...",
+ 'wikieditor-publish-preference' => 'Cuir an comas foillseachadh ceum air cheum',
+ 'wikieditor-publish-button-publish' => 'Foillisch',
+ 'wikieditor-publish-button-cancel' => 'Sguir dheth',
+ 'wikieditor-publish-dialog-title' => 'Foillsich gu {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Gearr-chunntas an deasachaidh (mìnich na rinn thu gu goirid):',
+ 'wikieditor-publish-dialog-minor' => 'Mùthadh beag',
+ 'wikieditor-publish-dialog-watch' => 'Cum sùil air an duilleag seo',
+ 'wikieditor-publish-dialog-publish' => 'Foillisch',
+ 'wikieditor-publish-dialog-goback' => 'Air ais',
+ 'wikieditor-template-editor-preference' => 'Cuir an comas deasachadh de theamplaidean wiki stèidhichte air foirmean',
+ 'wikieditor-template-editor-dialog-title' => 'Deasaich an teamplaid',
+ 'wikieditor-template-editor-dialog-submit' => 'Ùraich',
+ 'wikieditor-template-editor-dialog-cancel' => 'Sguir dheth',
+ 'wikieditor-templates-preference' => 'Cuir an comas dùmhlachadh theamplaidean',
+ 'wikieditor-toc-preference' => 'Cuir clàr-innse an comas a ghabhas a sheòladh',
+ 'wikieditor-toc-show' => 'Seall an clàr-innse',
+ 'wikieditor-toc-hide' => 'Cuir am falach an clàr-innse',
+ 'wikieditor-toolbar' => 'Am bàr-inneil deasachaidh',
+ 'wikieditor-toolbar-desc' => 'Am bàr-inneil deasachaidh le comasan a bharrachd',
+ 'wikieditor-toolbar-preference' => 'Cuir am bàr-inneil le comasan a bharrachd an comas',
+ 'wikieditor-toolbar-dialogs-preference' => 'Cuir an comas na còmhraidhean airson ceanglaichean, clàir is rudan eile a chur a-steach',
+ 'wikieditor-toolbar-loading' => "'Ga luchdadh...",
+ 'wikieditor-toolbar-tool-bold' => 'Trom',
+ 'wikieditor-toolbar-tool-bold-example' => 'Teacs trom',
+ 'wikieditor-toolbar-tool-italic' => 'Clò Eadailteach',
+ 'wikieditor-toolbar-tool-italic-example' => 'Teacsa Eadailteach',
+ 'wikieditor-toolbar-tool-ilink' => 'Ceangal am broinn na làraich',
+ 'wikieditor-toolbar-tool-ilink-example' => "Tiotal a' cheangail",
+ 'wikieditor-toolbar-tool-xlink' => 'Ceangal dhan taobh a-muigh (cuimhnich an ro-leasachan http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => "http://www.example.com tiotal a' cheangail",
+ 'wikieditor-toolbar-tool-link' => 'Ceangail',
+ 'wikieditor-toolbar-tool-link-title' => 'Cuir a-steach ceangal',
+ 'wikieditor-toolbar-tool-link-int' => 'Ri duilleag wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Duilleag amais no URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Tiotal duilleige no URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Teacsa ri shealltainn:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Teacsa ri shealltainn:',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ri duilleag-lìn air an taobh a-muigh',
+ 'wikieditor-toolbar-tool-link-ext-target' => "URL a' cheangail:",
+ 'wikieditor-toolbar-tool-link-ext-text' => "Teacsa a' cheangail:",
+ 'wikieditor-toolbar-tool-link-insert' => 'Cuir a-steach ceangal',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Cancel',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Duilleag ann mu thràth',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Chan eil an duilleag ann',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Tiotal mì-dhligheach',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ceangal dhan taobh a-muigh',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "A' toirt sùil ach a bheil an duilleag ann mu thràth...",
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Tha an tiotal a shònraich thu mì-dhligheach.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Tha coltas aig an URL a shònraich thu gun robh dùil agad ceangal a dhèanamh ri duilleag wiki eile.
+A bheil thu airson ceangal am broinn na làraich a dhèanamh dheth?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Ceangal am broinn na làraich',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ceangal dhan taobh a-muigh',
+ 'wikieditor-toolbar-tool-link-empty' => 'Cha do chuir thu càil a-steach as urrainnear ceangal a dhèanamh ris.',
+ 'wikieditor-toolbar-tool-file' => 'Faidhle air a leabachadh',
+ 'wikieditor-toolbar-tool-file-example' => 'Ball-sampaill.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Iomradh',
+ 'wikieditor-toolbar-tool-reference-example' => "Cuir teacsa a' bhun-nòta an-seo",
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Sguir dheth',
+ 'wikieditor-toolbar-tool-reference-title' => 'Cuir a-steach iomradh',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Cuir a-steach',
+ 'wikieditor-toolbar-tool-reference-text' => 'Teacsa an iomraidh',
+ 'wikieditor-toolbar-tool-signature' => 'Ainm sgrìobhte is stampa-ama',
+ 'wikieditor-toolbar-section-advanced' => 'Adhartach',
+ 'wikieditor-toolbar-tool-heading' => 'Ceann-sgrìobhaidh',
+ 'wikieditor-toolbar-tool-heading-1' => 'Leibheil 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Leibheil 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Leibheil 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Leibheil 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Leibheil 5',
+ 'wikieditor-toolbar-tool-heading-example' => "Teacsa a' chinn-loidhne",
+ 'wikieditor-toolbar-group-format' => 'Fòrmat',
+ 'wikieditor-toolbar-tool-ulist' => 'Liosta pheilearaichte',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Ball de liosta pheilearaichte',
+ 'wikieditor-toolbar-tool-olist' => 'Liosta àireamhaichte',
+ 'wikieditor-toolbar-tool-olist-example' => 'Ball de liosta àireamhaichte',
+ 'wikieditor-toolbar-tool-indent' => 'Eagadh',
+ 'wikieditor-toolbar-tool-indent-example' => 'Loidhne eagaichte',
+ 'wikieditor-toolbar-tool-nowiki' => 'Gun fhòrmatadh wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Cuir a-steach teacsa gun fhòrmatadh an-seo',
+ 'wikieditor-toolbar-tool-redirect' => 'Ath-sheòl',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ainm na duilleige-amais',
+ 'wikieditor-toolbar-tool-big' => 'Mòr',
+ 'wikieditor-toolbar-tool-big-example' => 'Teacsa mòr',
+ 'wikieditor-toolbar-tool-small' => 'Beag',
+ 'wikieditor-toolbar-tool-small-example' => 'Teacsa beag',
+ 'wikieditor-toolbar-tool-superscript' => 'Os-sgrìobhte',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Teacsa os-sgrìobhte',
+ 'wikieditor-toolbar-tool-subscript' => 'Fo-sgrìobhte',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Teacsa fo-sgrìobhte',
+ 'wikieditor-toolbar-group-insert' => 'Cuir a-steach',
+ 'wikieditor-toolbar-tool-gallery' => 'Gailearaidh nan dealbh',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Ballsampaill.jpg|Mìneachadh an deilbh1
+$1:Ballsampaill.jpg|Mìneachadh an deilbh2',
+ 'wikieditor-toolbar-tool-newline' => 'Loidhne ùr',
+ 'wikieditor-toolbar-tool-table' => 'Clàr',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! bann-cinn 1
+! bann-cinn 2
+! bann-cinn 3
+|-
+| sreath 1, cealla 1
+| sreath 1, cealla 2
+| sreath 1, cealla 3
+|-
+| sreath 2, cealla 1
+| sreath 2, cealla 2
+| sreath 2, cealla 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Teacsa na cealla',
+ 'wikieditor-toolbar-tool-table-example-header' => "Teacsa a' bhanna-chinn",
+ 'wikieditor-toolbar-tool-table-title' => 'Cuir a-steach clàr',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Sreathan',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Colbhan',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Cuir ris sreath-cinn',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stoidhle le iomallan',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Dèan clàr dheth a ghabhas a sheòrsachadh',
+ 'wikieditor-toolbar-tool-table-example' => 'Ball-sampaill',
+ 'wikieditor-toolbar-tool-table-preview' => 'Ro-shealladh',
+ 'wikieditor-toolbar-tool-table-insert' => 'Cuir a-steach',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Sguir dheth',
+ 'wikieditor-toolbar-tool-table-toomany' => "Chan urrainn dhut clàr le barrachd air $1 ceallan a chur a-steach leis a' chòmhradh seo.",
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Cha do chuir thu a-steach àireamh cheadaichte de shreathan is de cholbhan.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Chan urrainn dhut clàr a chur a-steach aig nach eil sreath no colbh.',
+ 'wikieditor-toolbar-tool-replace' => "Lorg is cuir 'na àite",
+ 'wikieditor-toolbar-tool-replace-title' => "Lorg is cuir 'na àite",
+ 'wikieditor-toolbar-tool-replace-search' => 'Lorg na leanas:',
+ 'wikieditor-toolbar-tool-replace-replace' => "Cuir na leanas 'na àite:",
+ 'wikieditor-toolbar-tool-replace-case' => 'Maids an ceas',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Dèilig ris an t-sreath luirg mar regular expression',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Lorg an ath-fhear',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Cuir an àite an ath-fhir',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Cuir an àite gach aon dhiubh',
+ 'wikieditor-toolbar-tool-replace-close' => 'Dùin',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Cha do fhreagair an lorg agad ri rud sam bith.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Chaidh rud ùr a chur an àite $1 dhiubh.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Cha do chuir thu càil a-steach as urrainnear lorg.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Tha an regular expression a chuir thu a-steach mì-dhligheach: $1',
+ 'wikieditor-toolbar-section-characters' => 'Caractairean sònraichte',
+ 'wikieditor-toolbar-characters-page-latin' => 'Laideann',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Laideann leudaichte',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Siombalan',
+ 'wikieditor-toolbar-characters-page-greek' => 'Greugais',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirilis',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabais',
+ 'wikieditor-toolbar-characters-page-persian' => 'Farsaidh',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Eabhra',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-section-help' => 'Help',
+ 'wikieditor-toolbar-help-heading-description' => 'Tuairisgeul',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Na chuireas tu a-steach',
+ 'wikieditor-toolbar-help-heading-result' => 'Na gheibh thu',
+ 'wikieditor-toolbar-help-page-format' => 'Fòrmatadh',
+ 'wikieditor-toolbar-help-page-link' => 'Ceanglaichean',
+ 'wikieditor-toolbar-help-page-heading' => 'Ceann-sgrìobhaidhean',
+ 'wikieditor-toolbar-help-page-list' => 'Liostaichean',
+ 'wikieditor-toolbar-help-page-file' => 'Faidhlichean',
+ 'wikieditor-toolbar-help-page-reference' => 'Iomraidhean',
+ 'wikieditor-toolbar-help-page-discussion' => 'Deasbaireachd',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Eadailteach',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Teacsa Eadailteach''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Teacsa Eadailteach</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Trom',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Teacsa trom'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Teacsa trom</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Trom â” Eadailteach',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Teacsa trom â” Eadailteach'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Teacsa trom â” Eadailteach</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Ceangal am broinn na làraich',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => "[[Tiotal na duilleige|Leubail a' cheangail]]<br />[[Tiotal na duilleige]]",
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Leubail a' cheangail</a><br /><a href='#'>Tiotal na duillege</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ceangal dhan taobh a-muigh',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => "[http://www.ballsampaill.org Leubail a' cheangail]<br />[http://www.ballsampaill.org]<br />http://www.ballsampaill.org",
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Leubail a' cheangail</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.ballsampaill.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Ceann-sgrìobhaidh dhen 2na ìre',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => "== Teacsa a' chinn-sgrìobhaidh ==",
+ 'wikieditor-toolbar-help-content-heading2-result' => "<h2>Teacsa a' chinn-sgrìobhaidh</h2>",
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Ceann-sgrìobhaidh dhen 3s ìre',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => "=== Teacsa a' chinn-sgrìobhaidh ===",
+ 'wikieditor-toolbar-help-content-heading3-result' => "<h3>Teacsa a' chinn-sgrìobhaidh</h3>",
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Ceann-sgrìobhaidh dhen 4mh ìre',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => "==== Teacsa a' chinn-sgrìobhaidh ====",
+ 'wikieditor-toolbar-help-content-heading4-result' => "<h4>Teacsa a' chinn-sgrìobhaidh</h4>",
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Ceann-sgrìobhaidh dhen 5mh ìre',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => "===== Teacsa a' chinn-sgrìobhaidh =====",
+ 'wikieditor-toolbar-help-content-heading5-result' => "<h5>Teacsa a' chinn-sgrìobhaidh</h5>",
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Liosta pheilearaichte',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Ball na liosta<br />* Ball na liosta',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Ball na liosta</li><li>Ball na liosta</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Liosta àireamhaichte',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '* Ball na liosta<br />* Ball na liosta',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Ball na liosta</li><li>Ball na liosta</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Embedded file',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Ballsampaill.png|thumb|Mìneachadh an deilbh]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Mìneachadh an deilbht' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Meudaich' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Mìneachadh an deilbh</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Iomradh',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Teacsa na duilleige.&lt;ref name="test"&gt;[http://www.ballsampaill.org Teacsa a\' cheangail], teacsa eile.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Teacsa na duilleige.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Cleachdadh eile an dearbh iomraidh',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Teacsa na duilleige.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Seall na h-iomraidhean',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='iomraidhean'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.ballsampaill.org' class='external text' href='#'>Teacsa a' cheangail</a>, teacsa eile.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Ainm sgrìobhte le stampa-ama',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Ainm-cleachdaiche</a> (<a href='#' title='{{#special:mytalk}}'>conaltradh</a>) 15:54, 10 dhen Ã’gmhios 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Ainm-sgrìobhte',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Ainm-cleachdaiche</a> (<a href='#' title='{{#special:mytalk}}'>conaltradh</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Eagaich a-steach',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Teacsa àbhaisteach<br />:Teacsa air eagachadh a-steach<br />::Teacsa air eagachadh a-steach',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Teacsa àbhaisteach<dl><dd>Teacsa air eagachadh a-steach<dl><dd>Teacsa air eagachadh a-steach</dd></dl></dd></dl>',
+);
+
+/** Galician (Galego)
+ * @author Toliño
+ */
+$messages['gl'] = array(
+ 'wikieditor' => 'Interface avanzada de edición de texto wiki',
+ 'wikieditor-desc' => 'Proporciona unha interface extensible de edición de texto wiki e moitas funcionalidades de módulos',
+ 'wikieditor-wikitext-tab' => 'Texto wiki',
+ 'wikieditor-loading' => 'Cargando',
+ 'wikieditor-preview-preference' => 'Activar a vista previa comparativa',
+ 'wikieditor-preview-tab' => 'Vista previa',
+ 'wikieditor-preview-changes-tab' => 'Cambios',
+ 'wikieditor-preview-loading' => 'Cargando...',
+ 'wikieditor-previewDialog-preference' => 'Activar o diálogo de vista previa',
+ 'wikieditor-previewDialog-tab' => 'Vista previa',
+ 'wikieditor-previewDialog-loading' => 'Cargando...',
+ 'wikieditor-publish-preference' => 'Activar a publicación paso a paso',
+ 'wikieditor-publish-button-publish' => 'Publicar',
+ 'wikieditor-publish-button-cancel' => 'Cancelar',
+ 'wikieditor-publish-dialog-title' => 'Publicar en {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Resumo de edición (describa brevemente os cambios que fixo):',
+ 'wikieditor-publish-dialog-minor' => 'Edición pequena',
+ 'wikieditor-publish-dialog-watch' => 'Vixiar esta páxina',
+ 'wikieditor-publish-dialog-publish' => 'Publicar',
+ 'wikieditor-publish-dialog-goback' => 'Volver',
+ 'wikieditor-template-editor-preference' => 'Activar a edición de modelos wiki baseada en formularios',
+ 'wikieditor-template-editor-dialog-title' => 'Editar o modelo',
+ 'wikieditor-template-editor-dialog-submit' => 'Actualizar',
+ 'wikieditor-template-editor-dialog-cancel' => 'Cancelar',
+ 'wikieditor-templates-preference' => 'Activar o enrolamento de modelos',
+ 'wikieditor-toc-preference' => 'Activar a táboa de contidos navegable',
+ 'wikieditor-toc-show' => 'Mostrar o contido',
+ 'wikieditor-toc-hide' => 'Agochar o contido',
+ 'wikieditor-toolbar' => 'Barra de ferramentas de edición',
+ 'wikieditor-toolbar-desc' => 'Editar a páxina da barra de ferramentas cunha mellor usabilidade',
+ 'wikieditor-toolbar-preference' => 'Activar a barra de ferramentas de edición mellorada',
+ 'wikieditor-toolbar-dialogs-preference' => 'Activar os diálogos para engadir ligazóns, táboas e máis',
+ 'wikieditor-toolbar-hidesig' => 'Agochar o botón de sinatura nas páxinas do espazo de nomes principal',
+ 'wikieditor-toolbar-loading' => 'Cargando...',
+ 'wikieditor-toolbar-tool-bold' => 'Negra',
+ 'wikieditor-toolbar-tool-bold-example' => 'Texto en negra',
+ 'wikieditor-toolbar-tool-italic' => 'Cursiva',
+ 'wikieditor-toolbar-tool-italic-example' => 'Texto en cursiva',
+ 'wikieditor-toolbar-tool-ilink' => 'Ligazón interna',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Título de ligazón',
+ 'wikieditor-toolbar-tool-xlink' => 'Ligazón externa (lembre o prefixo http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com título de ligazón',
+ 'wikieditor-toolbar-tool-link' => 'Ligazón',
+ 'wikieditor-toolbar-tool-link-title' => 'Inserir unha ligazón',
+ 'wikieditor-toolbar-tool-link-int' => 'Cara a unha páxina wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Título da páxina:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Título da páxina ou URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Texto da ligazón:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Insira o texto que se mostrará',
+ 'wikieditor-toolbar-tool-link-ext' => 'Cara a unha páxina web externa',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL da ligazón:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Texto da ligazón:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Inserir a ligazón',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'A páxina existe',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'A páxina non existe',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Título non válido',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ligazón externa',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Comprobando a existencia da páxina...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'O título que especificou non é válido.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'O enderezo URL que especificou semella ser unha ligazón cara a outra páxina do wiki.
+Quere converter ese enderezo nunha ligazón interna?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Ligazón interna',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ligazón externa',
+ 'wikieditor-toolbar-tool-link-empty' => 'Non inseriu nada co que ligar.',
+ 'wikieditor-toolbar-tool-file' => 'Ficheiro embelecido',
+ 'wikieditor-toolbar-tool-file-example' => 'Exemplo.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referencia',
+ 'wikieditor-toolbar-tool-reference-example' => 'Insira unha nota aquí',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-reference-title' => 'Inserir unha referencia',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Inserir',
+ 'wikieditor-toolbar-tool-reference-text' => 'Texto da referencia',
+ 'wikieditor-toolbar-tool-signature' => 'Sinatura con data e hora',
+ 'wikieditor-toolbar-section-advanced' => 'Avanzado',
+ 'wikieditor-toolbar-tool-heading' => 'Cabeceira',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivel 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivel 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivel 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivel 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivel 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Texto de cabeceira',
+ 'wikieditor-toolbar-group-format' => 'Formato',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista con asteriscos',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Elemento da lista con asteriscos',
+ 'wikieditor-toolbar-tool-olist' => 'Lista numerada',
+ 'wikieditor-toolbar-tool-olist-example' => 'Elemento da lista numerada',
+ 'wikieditor-toolbar-tool-indent' => 'Sangría',
+ 'wikieditor-toolbar-tool-indent-example' => 'Liña con sangría',
+ 'wikieditor-toolbar-tool-nowiki' => 'Sen formato wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Insira aquí un texto sen formato',
+ 'wikieditor-toolbar-tool-redirect' => 'Redirección',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nome da páxina de destino',
+ 'wikieditor-toolbar-tool-big' => 'Grande',
+ 'wikieditor-toolbar-tool-big-example' => 'Texto grande',
+ 'wikieditor-toolbar-tool-small' => 'Pequeno',
+ 'wikieditor-toolbar-tool-small-example' => 'Texto pequeno',
+ 'wikieditor-toolbar-tool-superscript' => 'Superíndice',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Texto de superíndice',
+ 'wikieditor-toolbar-tool-subscript' => 'Subíndice',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Texto de subíndice',
+ 'wikieditor-toolbar-group-insert' => 'Inserir',
+ 'wikieditor-toolbar-tool-gallery' => 'Galería de imaxes',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Pé_de_foto_1
+$1:Example.jpg|Pé_de_foto_2',
+ 'wikieditor-toolbar-tool-newline' => 'Nova liña',
+ 'wikieditor-toolbar-tool-table' => 'Táboa',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! cabeceira 1
+! cabeceira 2
+! cabeceira 3
+|-
+| liña 1, cela 1
+| liña 1, cela 2
+| liña 1, cela 3
+|-
+| liña 2, cela 1
+| liña 2, cela 2
+| liña 2, cela 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Texto da cela',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Texto da cabeceira',
+ 'wikieditor-toolbar-tool-table-title' => 'Inserir unha táboa',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Liñas',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Columnas',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Incluír a liña de cabeceira',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Estilo con bordos',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Facer que a táboa se poida ordenar',
+ 'wikieditor-toolbar-tool-table-example' => 'Texto da cela',
+ 'wikieditor-toolbar-tool-table-preview' => 'Vista previa',
+ 'wikieditor-toolbar-tool-table-insert' => 'Inserir',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Non é posible inserir unha táboa con máis de $1 celas con este diálogo.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Non inseriu un número válido de fileiras ou columnas.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Non pode inserir unha táboa con cero fileiras ou columnas.',
+ 'wikieditor-toolbar-tool-replace' => 'Buscar e substituír',
+ 'wikieditor-toolbar-tool-replace-title' => 'Buscar e substituír',
+ 'wikieditor-toolbar-tool-replace-search' => 'Buscar:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Substituír por:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Facer coincidir as maiúsculas e as minúsculas',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Tratar a secuencia de busca como unha expresión regular',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Atopar o seguinte',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Substituír o seguinte',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Substituír todos',
+ 'wikieditor-toolbar-tool-replace-close' => 'Pechar',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'A súa busca non atopou nada.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Fixéronse $1 substitucións.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Non inseriu nada que procurar.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'A expresión regular que inseriu non é válida: $1',
+ 'wikieditor-toolbar-section-characters' => 'Caracteres especiais',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latín',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latín estendido',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Símbolos',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grego',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirílico',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Ãrabe',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persa',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebreo',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalí',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugú',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Cingalés',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tailandés',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laosiano',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Camboxano',
+ 'wikieditor-toolbar-section-help' => 'Axuda',
+ 'wikieditor-toolbar-help-heading-description' => 'Descrición',
+ 'wikieditor-toolbar-help-heading-syntax' => 'O que escribe',
+ 'wikieditor-toolbar-help-heading-result' => 'O que obtén',
+ 'wikieditor-toolbar-help-page-format' => 'Dando formato',
+ 'wikieditor-toolbar-help-page-link' => 'Ligazóns',
+ 'wikieditor-toolbar-help-page-heading' => 'Cabeceiras',
+ 'wikieditor-toolbar-help-page-list' => 'Listas',
+ 'wikieditor-toolbar-help-page-file' => 'Ficheiros',
+ 'wikieditor-toolbar-help-page-reference' => 'Referencias',
+ 'wikieditor-toolbar-help-page-discussion' => 'Conversa',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Cursiva',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Texto en cursiva''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Texto en cursiva</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Negra',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Texto en negra'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Texto en negra</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Negra e cursiva',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Texto en negra e cursiva'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Texto en negra e cursiva</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Ligazón interna',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Título da páxina|Texto da ligazón]]<br />[[Título da páxina]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Texto da ligazón</a><br /><a href='#'>Título da páxina</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ligazón externa',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Texto da ligazón]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Texto da ligazón</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Cabeceira de 2º nivel',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Texto de cabeceira ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Texto de cabeceira</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Cabeceira de 3º nivel',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Texto de cabeceira ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Texto de cabeceira</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Cabeceira de 4º nivel',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Texto de cabeceira ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Texto de cabeceira</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Cabeceira de 5º nivel',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Texto de cabeceira =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Texto de cabeceira</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista de asteriscos',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Elemento da lista<br />* Elemento da lista',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Elemento da lista</li><li>Elemento da lista</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista numerada',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Elemento da lista<br /># Elemento da lista',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Elemento da lista</li><li>Elemento da lista</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Ficheiro embelecido',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Pé de foto.]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Pé de foto' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Ampliar' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Pé de foto.</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referencia',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Texto da páxina&lt;ref name="test"&gt;[http://www.example.org Texto da ligazón], texto adicional.&lt;/ref&gt;.',
+ 'wikieditor-toolbar-help-content-reference-result' => "Texto da páxina<sup><a href='#'>[1]</a></sup>.",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Uso adicional da mesma referencia',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Texto da páxina<sup><a href='#'>[1]</a></sup>.",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Mostrar as referencias',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Texto da ligazón</a>, texto adicional.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Sinatura con data e hora',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nome de usuario</a> (<a href='#' title='{{#special:mytalk}}'>conversa</a>) 15:54, 10 xuño 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Sinatura',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nome de usuario</a> (<a href='#' title='{{#special:mytalk}}'>conversa</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Sangría',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Texto normal<br />:Texto con sangría<br />::Texto con máis sangría',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Texto normal<dl><dd>Texto con sangría<dl><dd>Texto con máis sangría</dd></dl></dd></dl>',
+);
+
+/** Ancient Greek (ἈÏχαία ἑλληνικὴ) */
+$messages['grc'] = array(
+ 'wikieditor-publish-button-cancel' => 'ἈκυÏοῦν',
+ 'wikieditor-toolbar' => 'ἘÏγαλειοθήκη μεταγÏαφῆς',
+ 'wikieditor-toolbar-loading' => 'ΦοÏτίζειν…',
+ 'wikieditor-toolbar-tool-bold' => 'ἔντονον',
+ 'wikieditor-toolbar-tool-bold-example' => 'ΓÏάμματα παχέα',
+ 'wikieditor-toolbar-tool-italic' => 'πλάγιον',
+ 'wikieditor-toolbar-tool-italic-example' => 'ΓÏάμματα πλάγια',
+ 'wikieditor-toolbar-tool-ilink' => 'ἘσωτεÏικὸς σÏνδεσμος',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Συνδέσμου ὄνομα',
+ 'wikieditor-toolbar-tool-xlink' => 'ἘξώτεÏος σÏνδεσμος (μέμνησο τοῦ Ï€Ïοθέματος http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com ὄνομα συνδέσμου',
+ 'wikieditor-toolbar-tool-link-cancel' => 'ἈκυÏοῦν',
+ 'wikieditor-toolbar-tool-file' => 'Ἐμβεβαπτισμένον á¼€Ïχεῖον',
+ 'wikieditor-toolbar-tool-reference' => 'ἈναφοÏά',
+ 'wikieditor-toolbar-tool-reference-example' => 'Εἰσάγειν κείμενον παÏαπομπῆς ὧδε',
+ 'wikieditor-toolbar-tool-signature' => 'ὙπογÏαφή σου μετὰ χÏονοσφÏαγίδος',
+ 'wikieditor-toolbar-section-advanced' => 'ΠÏοεωσμένον',
+ 'wikieditor-toolbar-tool-heading' => 'Ἐπικεφαλίς',
+ 'wikieditor-toolbar-tool-heading-1' => 'Ἐπίπεδον 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Ἐπίπεδον 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Ἐπίπεδον 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Ἐπίπεδον 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Ἐπίπεδον 5',
+ 'wikieditor-toolbar-group-format' => 'Κατάλογος',
+ 'wikieditor-toolbar-tool-big' => 'Μέγα',
+ 'wikieditor-toolbar-tool-big-example' => 'Μέγα κείμενον',
+ 'wikieditor-toolbar-tool-small' => 'ΣμικÏόν',
+ 'wikieditor-toolbar-tool-small-example' => 'ΣμικÏόν κείμενον',
+ 'wikieditor-toolbar-group-insert' => 'Εἰσάγειν',
+ 'wikieditor-toolbar-tool-gallery' => 'Πινακοθήκη',
+ 'wikieditor-toolbar-tool-newline' => 'Îέα γÏαμμή',
+ 'wikieditor-toolbar-tool-table' => 'Πίναξ',
+ 'wikieditor-toolbar-tool-table-cancel' => 'ἈκυÏοῦν',
+ 'wikieditor-toolbar-tool-replace' => 'Ζητεῖν καὶ ὑποκαθιστάναι',
+ 'wikieditor-toolbar-tool-replace-title' => 'Ζητεῖν καὶ ὑποκαθιστάναι',
+ 'wikieditor-toolbar-tool-replace-search' => 'Zήτησις πεÏί:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Ὑποκατάστασις ὑπό:',
+ 'wikieditor-toolbar-tool-replace-close' => 'Κλῄειν',
+ 'wikieditor-toolbar-section-characters' => 'Εἰδικοὶ χαÏακτῆÏες',
+ 'wikieditor-toolbar-characters-page-latin' => 'Λατινικόν',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Λατινικὸν Ï€Ïοεκτεταμένον',
+ 'wikieditor-toolbar-characters-page-ipa' => 'ΔΦΑ',
+ 'wikieditor-toolbar-characters-page-symbols' => 'ΣÏμβολα',
+ 'wikieditor-toolbar-characters-page-greek' => 'Ἑλληνικόν',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'ΚυÏιλλικόν',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ἈÏαβικόν',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'ἙβÏαϊκόν',
+ 'wikieditor-toolbar-characters-page-telugu' => 'ΤελουγοÏϊον',
+ 'wikieditor-toolbar-section-help' => 'Βοήθεια',
+ 'wikieditor-toolbar-help-heading-description' => 'ΠεÏιγÏαφή',
+ 'wikieditor-toolbar-help-page-format' => 'ΜοÏφοποίησις',
+ 'wikieditor-toolbar-help-page-link' => 'σÏνδεσμοι',
+ 'wikieditor-toolbar-help-page-heading' => 'Ἐπικεφαλίδες',
+ 'wikieditor-toolbar-help-page-list' => 'Κατάλογοι',
+ 'wikieditor-toolbar-help-page-file' => 'ἈÏχεῖα',
+ 'wikieditor-toolbar-help-page-reference' => 'ἈναφοÏαί',
+ 'wikieditor-toolbar-help-page-discussion' => 'Διάλεξις',
+ 'wikieditor-toolbar-help-content-italic-description' => 'πλάγιον',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''ΓÏάμματα πλάγια''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>ΓÏάμματα πλάγια</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'ἔντονον',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''ΓÏάμματα παχέα'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>ΓÏάμματα παχέα</strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'ἘσωτεÏικὸς σÏνδεσμος',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'ἘξωτεÏικὸς σÏνδεσμος',
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Ἐπικεφαλὶς 2ου á¼Ï€Î¹Ï€Î­Î´Î¿Ï…',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Κείμενον á¼Ï€Î¹ÎºÎµÏ†Î±Î»Î¯Î´Î¿Ï‚ ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Κείμενον á¼Ï€Î¹ÎºÎµÏ†Î±Î»Î¯Î´Î¿Ï‚</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Ἐπικεφαλὶς 3ου á¼Ï€Î¹Ï€Î­Î´Î¿Ï…',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Κείμενον á¼Ï€Î¹ÎºÎµÏ†Î±Î»Î¯Î´Î¿Ï‚ ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Κείμενον á¼Ï€Î¹ÎºÎµÏ†Î±Î»Î¯Î´Î¿Ï‚</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Ἐπικεφαλὶς 4ου á¼Ï€Î¹Ï€Î­Î´Î¿Ï…',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Κείμενον á¼Ï€Î¹ÎºÎµÏ†Î±Î»Î¯Î´Î¿Ï‚ ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Κείμενον á¼Ï€Î¹ÎºÎµÏ†Î±Î»Î¯Î´Î¿Ï‚</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Ἐπικεφαλὶς 5ου á¼Ï€Î¹Ï€Î­Î´Î¿Ï…',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Κείμενον á¼Ï€Î¹ÎºÎµÏ†Î±Î»Î¯Î´Î¿Ï‚ =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Κείμενον á¼Ï€Î¹ÎºÎµÏ†Î±Î»Î¯Î´Î¿Ï‚</h5>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'ἨÏιθμημένη διαλογή',
+ 'wikieditor-toolbar-help-content-file-description' => 'Ἐμβεβαπτισμένον á¼€Ïχεῖον',
+ 'wikieditor-toolbar-help-content-reference-description' => 'ἈναφοÏά',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Κείμενον δέλτου.&lt;ref name="test"&gt;[http://www.example.org Κείμενον συνδέσμου], á¼Ï€Î¹Ï€Ïόσθετον κείμενον.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'ΔεικνÏειν ἀναφοÏάς',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ὙπογÏαφὴ μετὰ χÏονοσφÏαγίδος',
+ 'wikieditor-toolbar-help-content-signature-description' => 'ὙπογÏαφή',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Ὄνομα χÏωμένου</a> (<a href='#' title='{{#special:mytalk}}'>διάλεξις</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'ΠαÏαγÏαφοποίησις',
+);
+
+/** Swiss German (Alemannisch)
+ * @author Als-Holder
+ * @author Kghbln
+ */
+$messages['gsw'] = array(
+ 'wikieditor' => 'Oberflechi fir s fortgschritte Wikitext-Bearbeite',
+ 'wikieditor-desc' => 'Stellt e uusklappbari Wikitext-Bearbeitigsoberflechi z Verfiegig un vili Modul mit extra Megligkeite',
+ 'wikieditor-wikitext-tab' => 'WikiText',
+ 'wikieditor-loading' => 'Am Lade',
+ 'wikieditor-preview-preference' => 'Gegeiniberstelligs-Vorschau meglig mache',
+ 'wikieditor-preview-tab' => 'Vorschau',
+ 'wikieditor-preview-changes-tab' => 'Änderige',
+ 'wikieditor-preview-loading' => 'Am Lade ...',
+ 'wikieditor-previewDialog-preference' => 'D Abfrog zue dr Vorschau aaschalte',
+ 'wikieditor-previewDialog-tab' => 'Vorschau',
+ 'wikieditor-previewDialog-loading' => 'Am Lade ...',
+ 'wikieditor-publish-preference' => 'Schritt-fir-Schritt-Vereffentlichung meglig mache',
+ 'wikieditor-publish-button-publish' => 'Publiziere',
+ 'wikieditor-publish-button-cancel' => 'Abbräche',
+ 'wikieditor-publish-dialog-title' => 'Uf {{SITENAME}} publiziere',
+ 'wikieditor-publish-dialog-summary' => 'Zämmefassig (churzi Bschryybig vu dr Änderige, wu du gmacht hesch):',
+ 'wikieditor-publish-dialog-minor' => 'Chleinigkeite sin gänderet wore',
+ 'wikieditor-publish-dialog-watch' => 'Die Syte beobachte',
+ 'wikieditor-publish-dialog-publish' => 'Publiziere',
+ 'wikieditor-publish-dialog-goback' => 'Zruck',
+ 'wikieditor-template-editor-preference' => 'Formatbasiert Bearbeite vu Wikivorlage meglig mache',
+ 'wikieditor-template-editor-dialog-title' => 'Vorlag bearbeite',
+ 'wikieditor-template-editor-dialog-submit' => 'Aktualisiere',
+ 'wikieditor-template-editor-dialog-cancel' => 'Abbräche',
+ 'wikieditor-templates-preference' => 'Aktivierig vum Yy- un Uusblände vu Vorlage',
+ 'wikieditor-toc-preference' => 'Navigierbari Inhaltstabälle megli mache',
+ 'wikieditor-toc-show' => 'Inhalt zeige',
+ 'wikieditor-toc-hide' => 'Inhalt uusblände',
+ 'wikieditor-toolbar' => 'Wärchzygchäschtli bearbeite',
+ 'wikieditor-toolbar-desc' => 'Wärchzygchäschtli mit ere verbesserete Benutzerfrejndligkeit bearbeite',
+ 'wikieditor-toolbar-preference' => 'Verbesseret Bearbeitigs-Wärchzygchäschtli meglig mache',
+ 'wikieditor-toolbar-dialogs-preference' => 'Dialog aktiviere zum Links, Tabälle usw. yysetze',
+ 'wikieditor-toolbar-hidesig' => 'Dr Unterschriftebutton bi Syte im Artikelnamensruum uusblände',
+ 'wikieditor-toolbar-loading' => 'Am Lade ...',
+ 'wikieditor-toolbar-tool-bold' => 'Fätt',
+ 'wikieditor-toolbar-tool-bold-example' => 'Tekscht fätt',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Tekscht kursiv',
+ 'wikieditor-toolbar-tool-ilink' => 'Intärn Gleich (Link)',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Gleichtitel',
+ 'wikieditor-toolbar-tool-xlink' => 'Extärn Gleich (Link) (dänk an s Präfix http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.byschpil.com Gleichtitel',
+ 'wikieditor-toolbar-tool-link' => 'Gleich',
+ 'wikieditor-toolbar-tool-link-title' => 'Gleich yysetze',
+ 'wikieditor-toolbar-tool-link-int' => 'Zuen eme Wikiartikel/ere Wikisyte',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Artikeltitel:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Sytename oder URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Gleichtext:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Text yygee, wu soll aazeigt wäre',
+ 'wikieditor-toolbar-tool-link-ext' => 'Zuen ere extärne Netzsyte',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Gleich-URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Gleichtext:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Gleich yysetze',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Abbräche',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Syte git s scho',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Syte git s nit',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Nit giltige Titel',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Extärne Link',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Am Priefe, eb s Syte git ...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Dr Titel, wu Du aagee hesch, isch nit giltig.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'D URL, wu Du yygee hesch, siht uus wie ne Gleich zuen ere andre Wikisyte.
+Wettsch e intärn Gleich setze?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Intärn Gleich (Link)',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Extärn Gleich (Link)',
+ 'wikieditor-toolbar-tool-link-empty' => 'Du hesch nyt yygee, wu druf cha verwise wäre.',
+ 'wikieditor-toolbar-tool-file' => 'Yygfiegti Datei',
+ 'wikieditor-toolbar-tool-file-example' => 'Byschpil.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Quälle',
+ 'wikieditor-toolbar-tool-reference-example' => 'Do Fuessnotetekscht yyfiege',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Abbräche',
+ 'wikieditor-toolbar-tool-reference-title' => 'Referänz yyfiege',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Yyfiege',
+ 'wikieditor-toolbar-tool-reference-text' => 'Referänztext',
+ 'wikieditor-toolbar-tool-signature' => 'Unterschrift un Zytstämpfel',
+ 'wikieditor-toolbar-section-advanced' => 'Erwyteret',
+ 'wikieditor-toolbar-tool-heading' => 'Iberschrift',
+ 'wikieditor-toolbar-tool-heading-1' => 'Ebeni 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Ebeni 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Ebeni 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Ebeni 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Ebeni 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Iberschriftetekscht',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Nummerierti Lischt',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Ufzelligslischtepunkt',
+ 'wikieditor-toolbar-tool-olist' => 'Nummerierti Lischt',
+ 'wikieditor-toolbar-tool-olist-example' => 'Nummerierti Lischte-Punkt',
+ 'wikieditor-toolbar-tool-indent' => 'Yygruckt',
+ 'wikieditor-toolbar-tool-indent-example' => 'Yygruckti Zyyle',
+ 'wikieditor-toolbar-tool-nowiki' => 'Kei Wiki-Formatierig',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Do nit-formatierte Text yygee',
+ 'wikieditor-toolbar-tool-redirect' => 'Wyterleitig',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ziilsytename',
+ 'wikieditor-toolbar-tool-big' => 'Groß',
+ 'wikieditor-toolbar-tool-big-example' => 'Grossgschribene Tekscht',
+ 'wikieditor-toolbar-tool-small' => 'Chlei',
+ 'wikieditor-toolbar-tool-small-example' => 'Chleigschribene Tekscht',
+ 'wikieditor-toolbar-tool-superscript' => 'Hochgsetzt',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Hochgsetzte Tekscht',
+ 'wikieditor-toolbar-tool-subscript' => 'Untergsetzt',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Untergsetzte Tekscht',
+ 'wikieditor-toolbar-group-insert' => 'Yyfiege',
+ 'wikieditor-toolbar-tool-gallery' => 'Bildergallerii',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Byschpil.jpg|Bschriftig1
+$1:Byschpil.jpg|Bschriftig2',
+ 'wikieditor-toolbar-tool-newline' => 'Neji Zeile',
+ 'wikieditor-toolbar-tool-table' => 'Tabälle',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! Chopf 1
+! Chopf 2
+! Chopf 3
+|-
+| Zyylete 1, Zälle 1
+| Zyylete 1, Zälle 2
+| Zyylete 1, Zälle 3
+|-
+| Zyylete 2, Zälle 1
+| Zyylete 2, Zälle 2
+| Zyylete 2, Zälle 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Zälletext',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Iberschrift',
+ 'wikieditor-toolbar-tool-table-title' => 'Tabälle yyfiege',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Zyle',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Spalte',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Iberschrift yyfiege',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Style mit Ramme',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tabälle sortierbar mache',
+ 'wikieditor-toolbar-tool-table-example' => 'Zälletext',
+ 'wikieditor-toolbar-tool-table-preview' => 'Vorschau',
+ 'wikieditor-toolbar-tool-table-insert' => 'Yyfiege',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Abbräche',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Yyfiege vun ere Tabälle mit meh wie $1 Zälle isch nit megli in däm Dialogfänschter.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Du hesch kei giltigi Zahl vu Zyyle oder Spalte yygee.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Du chasch kei Tabälle yyfiege ohni Zyyle oder Spalte.',
+ 'wikieditor-toolbar-tool-replace' => 'Suechen un ersetze',
+ 'wikieditor-toolbar-tool-replace-title' => 'Sueche un ersetze',
+ 'wikieditor-toolbar-tool-replace-search' => 'Sueche no:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Ersetze dur:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Groß- un Chleibuechstabe unterscheide',
+ 'wikieditor-toolbar-tool-replace-regex' => 'D Zeichechette wu gsuecht soll wäre as reguläre Uusdruck versueche',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Negschti sueche',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Negschti ersetze',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Alli ersetze',
+ 'wikieditor-toolbar-tool-replace-close' => 'Zuemache',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Zue Dyyre Suech git s kei Träffer.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 Ersetzige durgfiert.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Du hesch nyt yygee zum Sueche.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Dää regulär Uusdruck, wu Du yygee hesch, isch nit giltig: $1',
+ 'wikieditor-toolbar-section-characters' => 'Sunderzeiche',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latynisch',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin Extended',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbol',
+ 'wikieditor-toolbar-characters-page-greek' => 'Griechisch',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kyrillisch',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabisch',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persisch',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebräisch',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalisch',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singhalesisch',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Hilf',
+ 'wikieditor-toolbar-help-heading-description' => 'Bschrybig',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Was Du schrybsch',
+ 'wikieditor-toolbar-help-heading-result' => 'Was Du derby kriegsch',
+ 'wikieditor-toolbar-help-page-format' => 'Formatiere',
+ 'wikieditor-toolbar-help-page-link' => 'Gleicher (Links)',
+ 'wikieditor-toolbar-help-page-heading' => 'Iberschrifte',
+ 'wikieditor-toolbar-help-page-list' => 'Lischte',
+ 'wikieditor-toolbar-help-page-file' => 'Dateie',
+ 'wikieditor-toolbar-help-page-reference' => 'Quälle',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskussion',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursive Tekscht''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursive Tekscht</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Fett',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Fette Tekscht'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Fette Tekscht</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Fett &amp; kursiv',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Fette &amp; kursive Tekscht'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Fette &amp; kursive Tekscht</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Intärn Gleich (Link)',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Page title|Gleichname]]<br />[[Page title]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Gleichname</a><br /><a href='#'>Sytetitel</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Extärn Gleich (Link)',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.byschpil.org Gleichname]<br />[http://www.byschpil.org]<br />http://www.byschpil.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Gleichname</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.byschpil.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Iberschrift 2. Ebeni',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Iberschriftetekscht ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Iberschriftetekscht</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Iberschrift 3. Ebeni',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Iberschriftetekscht ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Iberschriftetekscht</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Iberschrift 4. Ebeni',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Iberschriftetekscht ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Iberschriftetekscht</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Iberschrift 5. Ebeni',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Iberschriftetekscht =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Iberschriftetekscht</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lischt mit Ufzellig',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Lischtepunkt<br />* Lischtepunkt',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Lischtepunkt</li><li>Lischtepunkt</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Nummerierti Lischt',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Lischtepunkt<br /># Lischtepunkt',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Lischtepunkt</li><li>Lischtepunkt</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Yygfiegti Datei',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Bildbschriftig]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Bildbschriftig' class='image' href='/wiki/Datei:Wiki.png'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='Bschriftig'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Bildbschriftig</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Quälle',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Sytetekscht.&lt;ref name="test"&gt;[http://www.byschpil.org Gleichtekscht], zuesätzlige Tekscht.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Sytetekscht.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Zuesätzlige Verwändig vu dr glyche Quälle',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Sytetekscht.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Quälle aazeige',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.byschpil.org' class='Extärne Tekscht' href='#'>Linktekscht</a>, zuesätzlige Tekscht.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Unterschrift mit Zytaagab',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Benutzername</a> (<a href='#' title='{{#special:mytalk}}'>talk</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Unterschrift',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Benutzername</a> (<a href='#' title='{{#special:mytalk}}'>talk</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Zeileyyzug',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normale Tekscht<br />:Yygruckte Tekscht<br />::Yygruckte Tekscht',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normale Tekscht<dl><dd>Yygruckte Tekscht<dl><dd>Yygruckte Tekscht</dd></dl></dd></dl>',
+);
+
+/** Manx (Gaelg)
+ * @author MacTire02
+ * @author Shimmin Beg
+ */
+$messages['gv'] = array(
+ 'wikieditor-wikitext-tab' => 'Teks wiki',
+ 'wikieditor-loading' => 'Laadey',
+ 'wikieditor-preview-preference' => 'Lhiggey da roie-haishbynys çheu-ry-heu',
+ 'wikieditor-preview-tab' => 'Roie-haishbynys',
+ 'wikieditor-preview-changes-tab' => 'Caghlaaghyn',
+ 'wikieditor-preview-loading' => 'Laadey...',
+ 'wikieditor-publish-preference' => 'Lhiggey da soilshaghey magh beggan er veggan',
+ 'wikieditor-publish-button-publish' => 'Soilshaghey magh',
+ 'wikieditor-publish-button-cancel' => 'Dolley magh',
+ 'wikieditor-publish-dialog-title' => 'Soilshaghey magh myr {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Giare-choontey (insh dooin dy giare ny ren uss caghlaa):',
+ 'wikieditor-publish-dialog-minor' => 'Myn-arraghey',
+ 'wikieditor-publish-dialog-watch' => 'Freill arrey er y duillag shoh',
+ 'wikieditor-publish-dialog-publish' => 'Soilshaghey magh',
+ 'wikieditor-publish-dialog-goback' => 'Erash',
+ 'wikieditor-template-editor-preference' => 'Lhiggey dhyt reaghey clowanyn liorish formyn',
+ 'wikieditor-template-editor-dialog-title' => 'Reaghey clowan',
+ 'wikieditor-template-editor-dialog-submit' => 'Jannoo ass y noa',
+ 'wikieditor-template-editor-dialog-cancel' => 'Dolley magh',
+ 'wikieditor-templates-preference' => 'Lhiggey da clowanyn filley',
+ 'wikieditor-toc-preference' => 'Lhiggey da claare chooid yn-stiurey',
+ 'wikieditor-toc-show' => 'Taishbyney',
+ 'wikieditor-toc-hide' => 'Follaghey',
+ 'wikieditor-toolbar' => 'Barr greieyn reaghey',
+ 'wikieditor-toolbar-desc' => 'Barr greieyn reaghey tooilley yn-ymmydey',
+ 'wikieditor-toolbar-preference' => 'Lhiggey da barr greieyn reaghey tooilley yn-ymmydey',
+ 'wikieditor-toolbar-dialogs-preference' => 'Lhiggey da kishtaghyn cooney dys cur stiagh kianglaghyn, taabylyn as reddyn elley',
+ 'wikieditor-toolbar-loading' => 'Laadey...',
+ 'wikieditor-toolbar-tool-bold' => 'Trome',
+ 'wikieditor-toolbar-tool-bold-example' => 'Teks trome',
+ 'wikieditor-toolbar-tool-italic' => 'Iddaalagh',
+ 'wikieditor-toolbar-tool-italic-example' => 'Teks iddaalagh',
+ 'wikieditor-toolbar-tool-ilink' => 'Kiangley sthie',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Ennym y chiangley',
+ 'wikieditor-toolbar-tool-xlink' => 'Kiangley mooie (chooinee y meer roish http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.sampleyr.com ennym kiangley',
+ 'wikieditor-toolbar-tool-link' => 'Kiangley',
+ 'wikieditor-toolbar-tool-link-title' => 'Cur stiagh kiangley',
+ 'wikieditor-toolbar-tool-link-int' => 'Da duillag wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Duillag ny kiangley er laccal',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Ennym ny kiangley y duillag',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Teks y chiangley',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Teks y hoilshaghey',
+ 'wikieditor-toolbar-tool-link-ext' => 'Da ynnyd-eggey çheumooie',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL y chiangley',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Teks y chiangley',
+ 'wikieditor-toolbar-tool-link-insert' => 'Cur stiagh kiangley',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Dolley magh',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => "Ta'n duillag ayn",
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Cha nel y duillag ayn',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Ennym gyn vree',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Kiangley çheumooie',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "Firrinaghey my ta'n duillag ayn...",
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Hug oo stiagh ennym gyn vree.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "Rere y chiangley hug oo stiagh, t'eh jeeaghyn dy row eh foyd kiangley rish duillag wiki elley.
+By vie lhiat jannoo kiangley çheusthie jeh?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Kiangley sthie',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Kiangley mooie',
+ 'wikieditor-toolbar-tool-link-empty' => 'Cha dug oo stiagh red erbee dy chiangley rish.',
+ 'wikieditor-toolbar-tool-file' => 'Coadan jingit',
+ 'wikieditor-toolbar-tool-file-example' => 'Sampleyr.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Imraa',
+ 'wikieditor-toolbar-tool-reference-example' => 'Cur stiagh teks fo-screeuyn ayns shoh',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Dolley magh',
+ 'wikieditor-toolbar-tool-reference-title' => 'Cur imraa stiagh',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Cur stiagh',
+ 'wikieditor-toolbar-tool-reference-text' => 'Teks yn imraa',
+ 'wikieditor-toolbar-tool-signature' => 'Ennym screeuit as stampey traa',
+ 'wikieditor-toolbar-section-advanced' => 'Cast',
+ 'wikieditor-toolbar-tool-heading' => 'Kione-linney',
+ 'wikieditor-toolbar-tool-heading-1' => 'Keim 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Keim 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Keim 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Keim 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Keim 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Teks y chione-linney',
+ 'wikieditor-toolbar-group-format' => 'Cummey',
+ 'wikieditor-toolbar-tool-ulist' => 'Rolley bulladit',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Meer rolley bulladit',
+ 'wikieditor-toolbar-tool-olist' => 'Rolley earrit',
+ 'wikieditor-toolbar-tool-olist-example' => 'Meer rolley earrit',
+ 'wikieditor-toolbar-tool-indent' => 'Jingey',
+ 'wikieditor-toolbar-tool-indent-example' => 'Linney er ny jinney',
+ 'wikieditor-toolbar-tool-nowiki' => 'Ny chur tastey da cummey wikiagh',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Cur stiagh teks gyn cummey ayns shoh',
+ 'wikieditor-toolbar-tool-redirect' => 'Aa-enmys',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ennym duillag er laccal',
+ 'wikieditor-toolbar-tool-big' => 'Mooar',
+ 'wikieditor-toolbar-tool-big-example' => 'Teks mooar',
+ 'wikieditor-toolbar-tool-small' => 'Beg',
+ 'wikieditor-toolbar-tool-small-example' => 'Teks beg',
+ 'wikieditor-toolbar-tool-superscript' => 'Erskyn-screeuit',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Teks erskyn-screeuit',
+ 'wikieditor-toolbar-tool-subscript' => 'Fo-screeuit',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Teks fo-screeuit',
+ 'wikieditor-toolbar-group-insert' => 'Cur stiagh',
+ 'wikieditor-toolbar-tool-gallery' => 'Galleree jallooyn',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Fo-heidyl1
+$1:Example.jpg|Fo-heidyl2',
+ 'wikieditor-toolbar-tool-newline' => 'Linney noa',
+ 'wikieditor-toolbar-tool-table' => 'Taabyl',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! kione-linney 1
+! kione-linney 2
+! kione-linney 3
+|-
+| roa 1, killag 1
+| roa 1, killag 2
+| roa 1, killag 3
+|-
+| roa 2, killag 1
+| roa 2, killag 2
+| roa 2, killag 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Teks ny killag',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Teks ny kione-linney',
+ 'wikieditor-toolbar-tool-table-title' => 'Cur taabyl stiagh',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Roaghyn',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Collooghyn',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Cur stiagh roa kione-linney',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Cur creeaghyn er',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Jean eh yn-sorçhal',
+ 'wikieditor-toolbar-tool-table-example' => 'Sampleyr',
+ 'wikieditor-toolbar-tool-table-preview' => 'Roie-haishbynys',
+ 'wikieditor-toolbar-tool-table-insert' => 'Cur stiagh',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Dolley magh',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Cha nod oo cur stiagh taabyl as ny smoo na $1 killag echey liorish y chishtey cooney shoh.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Cha dug oo stiagh earroo cooie dy roaghyn ny collooghyn.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Cha nod oo cur stiagh taabyl gyn roaghyn ny collooghyn.',
+ 'wikieditor-toolbar-tool-replace' => 'Ronsaghey as coonrey',
+ 'wikieditor-toolbar-tool-replace-title' => 'Ronsaghey as coonrey',
+ 'wikieditor-toolbar-tool-replace-search' => 'Ronsaghey er son:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Caghlaa dys:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Cur tastey da case',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Gra dy nee slonn reiltagh eh y raa ry-hirrey',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => "Feddyn y nah 'er",
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => "Caghlaa y nah 'er",
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Caghlaa dagh fer',
+ 'wikieditor-toolbar-tool-replace-close' => 'Dooney',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Cha row y raa ry-hirrey ayd ry-akin.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 c(h)aghlaa(ghyn) jeant.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Cha dug oo stiagh red erbee dy hirrey.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Hug oo stiagh slonn reiltagh gyn vree: $1',
+ 'wikieditor-toolbar-section-characters' => 'Cowraghyn er lheh',
+ 'wikieditor-toolbar-characters-page-latin' => 'Romanagh',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Romanagh sheeynt',
+ 'wikieditor-toolbar-characters-page-ipa' => 'ASE',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Cowraghyn',
+ 'wikieditor-toolbar-characters-page-greek' => 'Greagagh',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kyrillagh',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabagh',
+ 'wikieditor-toolbar-characters-page-persian' => 'Pershish',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ewagh',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengaalish',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugish',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhalish',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujaratish',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thaish',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laosish',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmerish',
+ 'wikieditor-toolbar-section-help' => 'Cooney',
+ 'wikieditor-toolbar-help-heading-description' => 'Coontey',
+ 'wikieditor-toolbar-help-heading-syntax' => "Ny t'ou uss screeu",
+ 'wikieditor-toolbar-help-heading-result' => 'Ny vaikys oo',
+ 'wikieditor-toolbar-help-page-format' => 'Cummey',
+ 'wikieditor-toolbar-help-page-link' => 'Kianglaghyn',
+ 'wikieditor-toolbar-help-page-heading' => 'Kione-linnaghyn',
+ 'wikieditor-toolbar-help-page-list' => 'Rollaghyn',
+ 'wikieditor-toolbar-help-page-file' => 'Coadanyn',
+ 'wikieditor-toolbar-help-page-reference' => 'Imraaghyn',
+ 'wikieditor-toolbar-help-page-discussion' => 'Resoonaght',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Iddaalagh',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Clou iddaalagh''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Teks iddaalagh</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Trome',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Clou trome'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Teks trome</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Trome &amp; iddaalagh',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Teks trome &amp; iddaalagh'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Teks trome &amp; iddaalagh</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Kiangley yn-veanagh',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Ennym duillag|Teks kiangley]]<br />[[Ennym duillag]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Teks kiangley</a><br /><a href='#'>Ennym duillag</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Kiangley mooie',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Teks kiangley]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Teks kiangley</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Kione-linney y nah cheim',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Kione-linney ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Kione-linney</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Kione-linney y treeoo cheim',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Kione-linney ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Kione-linney</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Kione-linney y chiarroo cheim',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Kione-linney ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Kione-linney</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Kione-linney y wheiggoo cheim',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Kione-linney =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Kione-linney</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Rolley bulladagh',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Meer rolley<br />* Meer rolley',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Meer rolley</li><li>Meer rolley</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Rolley earrit',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Meer rolley<br /># Meer rolley',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Meer rolley</li><li>Meer rolley</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Coadan jingit',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Teks fo-heidyl]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Teks fo-heidyl' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Mooadaghey' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Teks fo-heidyl</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Imraa',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Teks duillag.&lt;ref name="test"&gt;[http://www.example.org Teks kiangley], tooilley teks.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Teks duillag.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => "Tooilley ymmyd jeh'n imraa cheddin",
+ 'wikieditor-toolbar-help-content-rereference-result' => "Teks duillag.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Soilshaghey imraaghyn',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Teks kiangley</a>, tooilley teks.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Ennym screeuit as stampey traa',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Ymmydeyr</a> (<a href='#' title='{{#special:mytalk}}'>resoonaght</a>) 15:54, 10 Mean Souree 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Ennym screeuit',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Ymmydeyr</a> (<a href='#' title='{{#special:mytalk}}'>resoonaght</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Jingey',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Teks cadjin<br />:Teks jingit<br />::Teks jingit',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Teks cadjin<dl><dd>Teks jingit<dl><dd>Teks jingit</dd></dl></dd></dl>',
+);
+
+/** Hausa (Ù‡ÙŽÙˆÙسَ) */
+$messages['ha'] = array(
+ 'wikieditor-template-editor-dialog-cancel' => 'Soke',
+ 'wikieditor-toolbar-tool-bold-example' => 'Rubutu mai gwaɓi',
+ 'wikieditor-toolbar-tool-italic-example' => 'Rubutun tsutsa',
+ 'wikieditor-toolbar-tool-ilink' => 'MahaÉ—in ciki',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Sunan mahaÉ—i',
+ 'wikieditor-toolbar-tool-xlink' => 'MahaÉ—i mai zuwa waje (a tuna da zagin http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com sunan mahaÉ—i',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Soke',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Soke',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Soke',
+);
+
+/** Hebrew (עברית)
+ * @author Amire80
+ * @author Rotemliss
+ * @author YaronSh
+ * @author Yonidebest
+ */
+$messages['he'] = array(
+ 'wikieditor' => 'ממשק ×ž×ª×§×“× ×œ×¢×¨×™×›×ª טקסט ויקי',
+ 'wikieditor-desc' => 'מספקת מנשק עריכת ויקיטקסט הניתן להרחבה ×•×ž×•×“×•×œ×™× ×”×ž××¤×©×¨×™× ×œ×”×•×¡×™×£ יכולות',
+ 'wikieditor-wikitext-tab' => 'קוד ויקי',
+ 'wikieditor-loading' => 'בטעינה',
+ 'wikieditor-preview-preference' => 'הפעלת תצוגה מקבילה',
+ 'wikieditor-preview-tab' => 'תצוגה מקדימה',
+ 'wikieditor-preview-changes-tab' => 'שינויי×',
+ 'wikieditor-preview-loading' => 'נטען...',
+ 'wikieditor-previewDialog-preference' => 'הפעלת תיבת דו־שיח התצוגה המקדימה',
+ 'wikieditor-previewDialog-tab' => 'תצוגה מקדימה',
+ 'wikieditor-previewDialog-loading' => 'נטען...',
+ 'wikieditor-publish-preference' => 'הפעלת ×¤×¨×¡×•× "צעד־×חר־צעד"',
+ 'wikieditor-publish-button-publish' => 'פרסו×',
+ 'wikieditor-publish-button-cancel' => 'ביטול',
+ 'wikieditor-publish-dialog-title' => '×¤×¨×¡×•× ×ל {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'תקציר העריכה (תי×ור קצר של ×”×©×™× ×•×™×™× ×©×¢×©×™×ª×):',
+ 'wikieditor-publish-dialog-minor' => 'עריכה משנית',
+ 'wikieditor-publish-dialog-watch' => 'מעקב ×חר דף ×–×”',
+ 'wikieditor-publish-dialog-publish' => 'פרסו×',
+ 'wikieditor-publish-dialog-goback' => 'חזרה ×חורה',
+ 'wikieditor-template-editor-preference' => 'הפעלת עריכה מבוססת טופס של תבניות ויקי',
+ 'wikieditor-template-editor-dialog-title' => 'עריכת התבנית',
+ 'wikieditor-template-editor-dialog-submit' => 'עדכון',
+ 'wikieditor-template-editor-dialog-cancel' => 'ביטול',
+ 'wikieditor-templates-preference' => 'הפעלת קיפול תבניות',
+ 'wikieditor-toc-preference' => 'הפעלת תוכן ×¢× ×™×™× ×™× ×¢× ×פשרות ניווט',
+ 'wikieditor-toc-show' => 'הצגת התכני×',
+ 'wikieditor-toc-hide' => 'הסתרת התכני×',
+ 'wikieditor-toolbar' => 'סרגל עריכה',
+ 'wikieditor-toolbar-desc' => 'הרחבת השמישות של סרגל עריכת הדף',
+ 'wikieditor-toolbar-preference' => 'הפעלת סרגל עריכה משופר',
+ 'wikieditor-toolbar-dialogs-preference' => 'הפעלת תיבות דו־שיח להוספת קישורי×, טבל×ות ועוד',
+ 'wikieditor-toolbar-hidesig' => '×œ×”×—×‘×™× ×ת כפתור החתימה ×ž×”×“×¤×™× ×‘×ž×¨×—×‘ הר×שי',
+ 'wikieditor-toolbar-loading' => 'בטעינה...',
+ 'wikieditor-toolbar-tool-bold' => 'הדגשה',
+ 'wikieditor-toolbar-tool-bold-example' => 'טקסט מודגש',
+ 'wikieditor-toolbar-tool-italic' => 'הטיה',
+ 'wikieditor-toolbar-tool-italic-example' => 'טקסט נטוי',
+ 'wikieditor-toolbar-tool-ilink' => 'קישור פנימי',
+ 'wikieditor-toolbar-tool-ilink-example' => 'כותרת הקישור',
+ 'wikieditor-toolbar-tool-xlink' => 'קישור חיצוני (זכרו להוסיף ×ת הקידומת http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com כותרת הקישור',
+ 'wikieditor-toolbar-tool-link' => 'קישור',
+ 'wikieditor-toolbar-tool-link-title' => 'הוספת קישור',
+ 'wikieditor-toolbar-tool-link-int' => 'לדף ויקי',
+ 'wikieditor-toolbar-tool-link-int-target' => 'כותרת הדף:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'כותרת הדף ×ו כתובת URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'טקסט הקישור:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'הזינו ×ת הטקסט המיועד לתצוגה',
+ 'wikieditor-toolbar-tool-link-ext' => 'לדף ×ינטרנט חיצוני',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'כתובת הקישור:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'טקסט הקישור:',
+ 'wikieditor-toolbar-tool-link-insert' => 'הוספת הקישור',
+ 'wikieditor-toolbar-tool-link-cancel' => 'ביטול',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'הדף קיי×',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'הדף ×ינו קיי×',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'כותרת בלתי תקינה',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'קישור חיצוני',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'בדיקה ×”×× ×”×“×£ קיי×...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'הכותרת שצוינה ××™× ×” תקינה.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'הכתובת ×©×¦×™×™× ×ª× × ×¨×ית ×›×ילו ×”×™× ×ž×™×•×¢×“×ª לקשר לדף ×חר בוויקי. ×”×× ×‘×¨×¦×•× ×›× ×œ×”×¤×•×š ×–×ת לקישור פנימי?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'קישור פנימי',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'קישור חיצוני',
+ 'wikieditor-toolbar-tool-link-empty' => '×œ× ×”×–× ×ª× ×©×•× ×“×‘×¨ לקשר ×ליו.',
+ 'wikieditor-toolbar-tool-file' => 'קובץ המוצג בדף',
+ 'wikieditor-toolbar-tool-file-example' => 'דוגמה.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'הערת שוליי×',
+ 'wikieditor-toolbar-tool-reference-example' => 'כתבו ×ת טקסט הערת ×”×©×•×œ×™×™× ×›×ן',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'ביטול',
+ 'wikieditor-toolbar-tool-reference-title' => 'הוספת הערת שוליי×',
+ 'wikieditor-toolbar-tool-reference-insert' => 'הוספה',
+ 'wikieditor-toolbar-tool-reference-text' => 'תוכן ההערה',
+ 'wikieditor-toolbar-tool-signature' => 'חתימה ות×ריך ושעה',
+ 'wikieditor-toolbar-section-advanced' => 'מתקד×',
+ 'wikieditor-toolbar-tool-heading' => 'כותרת',
+ 'wikieditor-toolbar-tool-heading-1' => 'רמה 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'רמה 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'רמה 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'רמה 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'רמה 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'טקסט הכותרת',
+ 'wikieditor-toolbar-group-format' => 'מבנה:',
+ 'wikieditor-toolbar-tool-ulist' => 'רשימה ×¢× ×ª×‘×œ×™×˜×™×',
+ 'wikieditor-toolbar-tool-ulist-example' => 'פריט רשימה ×¢× ×ª×‘×œ×™×˜×™×',
+ 'wikieditor-toolbar-tool-olist' => 'רשימה ממוספרת',
+ 'wikieditor-toolbar-tool-olist-example' => 'פריט רשימה ממוספרת',
+ 'wikieditor-toolbar-tool-indent' => '×”×–×—×”',
+ 'wikieditor-toolbar-tool-indent-example' => 'שורה מוזחת',
+ 'wikieditor-toolbar-tool-nowiki' => '×œ×œ× ×¢×™×¦×•×‘ ויקי',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'טקסט ×œ× ×ž×¢×•×¦×‘',
+ 'wikieditor-toolbar-tool-redirect' => 'הפניה',
+ 'wikieditor-toolbar-tool-redirect-example' => '×©× ×“×£ היעד',
+ 'wikieditor-toolbar-tool-big' => 'גדול',
+ 'wikieditor-toolbar-tool-big-example' => 'טקסט מוגדל',
+ 'wikieditor-toolbar-tool-small' => 'קטן',
+ 'wikieditor-toolbar-tool-small-example' => 'טקסט מוקטן',
+ 'wikieditor-toolbar-tool-superscript' => 'הגבהה',
+ 'wikieditor-toolbar-tool-superscript-example' => 'טקסט מוגבה',
+ 'wikieditor-toolbar-tool-subscript' => 'הנמכה',
+ 'wikieditor-toolbar-tool-subscript-example' => 'טקסט מונמך',
+ 'wikieditor-toolbar-group-insert' => 'הוספה',
+ 'wikieditor-toolbar-tool-gallery' => 'גלריית תמונות',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:דוגמה.jpg|כותרת 1
+$1:דוגמה.jpg|כותרת 2',
+ 'wikieditor-toolbar-tool-newline' => 'שורה חדשה',
+ 'wikieditor-toolbar-tool-table' => 'טבלה',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! כותרת 1
+! כותרת 2
+! כותרת 3
+|-
+| שורה 1, ×ª× 1
+| שורה 1, ×ª× 2
+| שורה 1, ×ª× 3
+|-
+| שורה 2, ×ª× 1
+| שורה 2, ×ª× 2
+| שורה 2, ×ª× 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'טקסט הת×',
+ 'wikieditor-toolbar-tool-table-example-header' => 'טקסט הכותרת',
+ 'wikieditor-toolbar-tool-table-title' => 'הוספת טבלה',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'שורות',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'עמודות',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'כולל שורת הכותרת',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'סגנון ×¢× ×ž×¡×’×¨×•×ª',
+ 'wikieditor-toolbar-tool-table-sortable' => 'הפיכת הטבלה לניתנת למיון',
+ 'wikieditor-toolbar-tool-table-example' => 'טקסט הת×',
+ 'wikieditor-toolbar-tool-table-preview' => 'תצוגה מקדימה',
+ 'wikieditor-toolbar-tool-table-insert' => 'הוספה',
+ 'wikieditor-toolbar-tool-table-cancel' => 'ביטול',
+ 'wikieditor-toolbar-tool-table-toomany' => 'הוספת טבלה בת יותר מ־$1 ת××™× ××™× ×” ×פשרית בתיבת הדו־שיח הזו.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'מספר השורות ×ו העמודות שהוזן ×ינו תקין.',
+ 'wikieditor-toolbar-tool-table-zero' => '×œ× × ×™×ª×Ÿ להוסיף טבלה בעלת ×פס שורות ×ו עמודות.',
+ 'wikieditor-toolbar-tool-replace' => 'חיפוש והחלפה',
+ 'wikieditor-toolbar-tool-replace-title' => 'חיפוש והחלפה',
+ 'wikieditor-toolbar-tool-replace-search' => 'חיפוש של:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'החלפה ב:',
+ 'wikieditor-toolbar-tool-replace-case' => 'הת×מת רישיות',
+ 'wikieditor-toolbar-tool-replace-regex' => 'בדיקת מחרוזת החיפוש כביטוי רגולרי',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'חיפוש הב×',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'החלפה וחיפוש הב×',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'החלפת הכול',
+ 'wikieditor-toolbar-tool-replace-close' => 'סגירה',
+ 'wikieditor-toolbar-tool-replace-nomatch' => '×œ× ×”×ª×§×‘×œ×• הת×מות לחיפושכ×.',
+ 'wikieditor-toolbar-tool-replace-success' => 'בוצעו $1 החלפות.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => '×œ× ×›×ª×‘×ª× ×˜×§×¡×˜ לחיפוש.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'הביטוי הרגולרי שהוכנס ×ינו תקין: $1',
+ 'wikieditor-toolbar-section-characters' => '×ª×•×•×™× ×ž×™×•×—×“×™×',
+ 'wikieditor-toolbar-characters-page-latin' => 'לטיני',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'לטיני מורחב',
+ 'wikieditor-toolbar-characters-page-ipa' => '×לפבית פונטי בינל×ומי (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'סימני×',
+ 'wikieditor-toolbar-characters-page-greek' => 'יווני',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'קירילי',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ערבי',
+ 'wikieditor-toolbar-characters-page-persian' => 'פרסית',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'עברי',
+ 'wikieditor-toolbar-characters-page-bangla' => 'בנגלית',
+ 'wikieditor-toolbar-characters-page-telugu' => 'טלוגו',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'סינהלה',
+ 'wikieditor-toolbar-characters-page-gujarati' => "גוג'רטית",
+ 'wikieditor-toolbar-characters-page-thai' => 'ת×ית',
+ 'wikieditor-toolbar-characters-page-lao' => 'ל×ו',
+ 'wikieditor-toolbar-characters-page-khmer' => 'קמר',
+ 'wikieditor-toolbar-section-help' => 'עזרה',
+ 'wikieditor-toolbar-help-heading-description' => 'תי×ור',
+ 'wikieditor-toolbar-help-heading-syntax' => 'מה יש להקליד',
+ 'wikieditor-toolbar-help-heading-result' => 'מה מתקבל',
+ 'wikieditor-toolbar-help-page-format' => 'עיצוב',
+ 'wikieditor-toolbar-help-page-link' => 'קישורי×',
+ 'wikieditor-toolbar-help-page-heading' => 'כותרות',
+ 'wikieditor-toolbar-help-page-list' => 'רשימות',
+ 'wikieditor-toolbar-help-page-file' => 'קבצי×',
+ 'wikieditor-toolbar-help-page-reference' => 'הערות שוליי×',
+ 'wikieditor-toolbar-help-page-discussion' => 'דפי שיחה',
+ 'wikieditor-toolbar-help-content-italic-description' => 'הטיה',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''טקסט נטוי''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>טקסט נטוי</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'הדגשה',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''טקסט מודגש'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>טקסט מודגש</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'הדגשה והטיה',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''טקסט מודגש ונטוי'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>טקסט מודגש ונטוי</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'קישור פנימי',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[כותרת הדף|כותרת הקישור]]<br />[[כותרת הדף]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>כותרת הקישור</a><br /><a href='#'>כותרת הדף</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'קישור חיצוני',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org כותרת הקישור]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>כותרת הקישור</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'רמת כותרת שנייה',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== טקסט הכותרת ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>טקסט הכותרת</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'רמת כותרת שלישית',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== טקסט הכותרת ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>טקסט הכותרת</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'רמת כותרת רביעית',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== טקסט הכותרת ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>טקסט הכותרת</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'רמת כותרת חמישית',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== טקסט הכותרת =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>טקסט הכותרת</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'רשימה ×¢× ×ª×‘×œ×™×˜×™×',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* פריט רשימה<br />* פריט רשימה',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>פריט רשימה</li><li>פריט רשימה</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'רשימה ממוספרת',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# פריט רשימה<br /># פריט רשימה',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>פריט רשימה</li><li>פריט רשימה</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'קובץ המוצג בדף',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|טקסט הכותרת]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='טקסט הכותרת' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>טקסט הכותרת</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'הערת שוליי×',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'טקסט הדף.&lt;ref name="test"&gt;[http://www.example.org טקסט הקישור], טקסט נוסף.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "טקסט הדף.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'שימוש נוסף ב×ותה הערת שוליי×',
+ 'wikieditor-toolbar-help-content-rereference-result' => "טקסט הדף.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'הצגת הערות שוליי×',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>טקסט הקישור</a>, טקסט נוסף.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'חתימה ×¢× ×ª×ריך ושעה',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>×©× ×”×ž×©×ª×ž×©</a> (<a href='#' title='{{#special:mytalk}}'>שיחה</a>) 15:54, 10 ביוני 2009 (IDT)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'חתימה',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>×©× ×”×ž×©×ª×ž×©</a> (<a href='#' title='{{#special:mytalk}}'>שיחה</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => '×”×–×—×”',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'טקסט רגיל<br />:טקסט מוזח<br />::טקסט מוזח',
+ 'wikieditor-toolbar-help-content-indent-result' => 'טקסט רגיל<dl><dd>טקסט מוזח<dl><dd>טקסט מוזח</dd></dl></dd></dl>',
+);
+
+/** Fiji Hindi (Latin) (Fiji Hindi (Latin)) */
+$messages['hif-latn'] = array(
+ 'wikieditor-toolbar-tool-bold' => 'Mota',
+ 'wikieditor-toolbar-tool-bold-example' => 'Mota akchhar',
+ 'wikieditor-toolbar-tool-italic' => 'Tirchha',
+);
+
+/** Croatian (Hrvatski)
+ * @author Ex13
+ * @author Excaliboor
+ * @author SpeedyGonsales
+ */
+$messages['hr'] = array(
+ 'wikieditor' => 'Napredno suÄelje ureÄ‘ivanja wikiteksta',
+ 'wikieditor-desc' => 'Pruža proÅ¡irivo suÄelje za ureÄ‘ivanje wikiteksta i viÅ¡e modula s raznim dodacima',
+ 'wikieditor-wikitext-tab' => 'Wikitekst',
+ 'wikieditor-loading' => 'UÄitavanje',
+ 'wikieditor-preview-preference' => 'Omogući usporedni pregled',
+ 'wikieditor-preview-tab' => 'Pregled',
+ 'wikieditor-preview-changes-tab' => 'Promjene',
+ 'wikieditor-preview-loading' => 'UÄitavam…',
+ 'wikieditor-previewDialog-preference' => 'Omogući dijalog za pregled',
+ 'wikieditor-previewDialog-tab' => 'Pregled kako će stranica izgledati',
+ 'wikieditor-previewDialog-loading' => 'UÄitavam…',
+ 'wikieditor-publish-preference' => 'Omogućiti korak-po-korak izdavanje',
+ 'wikieditor-publish-button-publish' => 'Objaviti',
+ 'wikieditor-publish-button-cancel' => 'Odustani',
+ 'wikieditor-publish-dialog-title' => 'Objavi na {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Uredi sažetak (kratko opiÅ¡ite promjene koje ste uÄinili):',
+ 'wikieditor-publish-dialog-minor' => 'Manja promjena',
+ 'wikieditor-publish-dialog-watch' => 'Prati ovu stranicu',
+ 'wikieditor-publish-dialog-publish' => 'Objaviti',
+ 'wikieditor-publish-dialog-goback' => 'Idi natrag',
+ 'wikieditor-template-editor-preference' => 'Omogući uređivanje wiki predložaka po upitniku',
+ 'wikieditor-template-editor-dialog-title' => 'Uredi predložak',
+ 'wikieditor-template-editor-dialog-submit' => 'Osvježi',
+ 'wikieditor-template-editor-dialog-cancel' => 'Odustani',
+ 'wikieditor-templates-preference' => 'Omogući skrivanje predložaka',
+ 'wikieditor-toc-preference' => 'Omogući navigaciju sadržaja',
+ 'wikieditor-toc-show' => 'Prikaži sadržaj',
+ 'wikieditor-toc-hide' => 'Sakrij sadržaj',
+ 'wikieditor-toolbar' => 'Alatna traka',
+ 'wikieditor-toolbar-desc' => 'Alatna traka za uređivanje s poboljšanom uporabljivošću',
+ 'wikieditor-toolbar-preference' => 'Omogući poboljšanu alatnu traku',
+ 'wikieditor-toolbar-dialogs-preference' => 'Dopusti upitnike za unos veza, tablica i ostalog',
+ 'wikieditor-toolbar-hidesig' => 'Sakrij gumb potpisa sa stranica u glavnom imenskom prostoru',
+ 'wikieditor-toolbar-loading' => 'UÄitavam...',
+ 'wikieditor-toolbar-tool-bold' => 'Podebljano',
+ 'wikieditor-toolbar-tool-bold-example' => 'Podebljani tekst',
+ 'wikieditor-toolbar-tool-italic' => 'Kurziv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kurzivni tekst',
+ 'wikieditor-toolbar-tool-ilink' => 'Unutarnja poveznica',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Naziv poveznice',
+ 'wikieditor-toolbar-tool-xlink' => 'Vanjska poveznica (nužan je prefiks http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.primjer.com naziv poveznice',
+ 'wikieditor-toolbar-tool-link' => 'Poveznica',
+ 'wikieditor-toolbar-tool-link-title' => 'Umetni poveznicu',
+ 'wikieditor-toolbar-tool-link-int' => 'U wiki stranicu',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Naslov stranice:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Naslov ili URL stranice',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Tekst poveznice',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Tekst za prikaz',
+ 'wikieditor-toolbar-tool-link-ext' => 'Za vanjske web stranice',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL poveznice:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Tekst poveznice:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Umetni poveznicu',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Odustani',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Stranica postoji',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Stranica ne postoji',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Nevaljani naslov',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Vanjska poveznica',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Provjera postoji li stranica...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Naslov koji ste naveli je nevažeći.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL koji ste predali Äini se namijenjen kao poveznica na drugu wiki stranicu.
+Želite li napraviti unutrašnju poveznicu?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Unutarnja poveznica',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Vanjska poveznica',
+ 'wikieditor-toolbar-tool-link-empty' => 'Niste unijeli ništa za povezivanje.',
+ 'wikieditor-toolbar-tool-file' => 'Uložena datoteka',
+ 'wikieditor-toolbar-tool-file-example' => 'Primjer.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Bilješke',
+ 'wikieditor-toolbar-tool-reference-example' => 'Umetni tekst fusnote ovdje',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Odustani',
+ 'wikieditor-toolbar-tool-reference-title' => 'Umetni poveznicu',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Umetni',
+ 'wikieditor-toolbar-tool-reference-text' => 'Referentni tekst',
+ 'wikieditor-toolbar-tool-signature' => 'Potpis i datum',
+ 'wikieditor-toolbar-section-advanced' => 'Napredno',
+ 'wikieditor-toolbar-tool-heading' => 'Podnaslov',
+ 'wikieditor-toolbar-tool-heading-1' => 'Razina 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Razina 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Razina 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Razina 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Razina 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Tekst podnaslova',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Popis s grafiÄkim oznakama',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Stavka popisa s grafiÄkim oznakama',
+ 'wikieditor-toolbar-tool-olist' => 'Numerirani popis',
+ 'wikieditor-toolbar-tool-olist-example' => 'Stavka numeriranog popisa',
+ 'wikieditor-toolbar-tool-indent' => 'UvlaÄenje',
+ 'wikieditor-toolbar-tool-indent-example' => 'UvuÄeni red',
+ 'wikieditor-toolbar-tool-nowiki' => 'Nema wiki oblikovanja',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Ovdje unesite neoblikovani tekst',
+ 'wikieditor-toolbar-tool-redirect' => 'Preusmjeravanje',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ime ciljne stranice',
+ 'wikieditor-toolbar-tool-big' => 'Velika slova',
+ 'wikieditor-toolbar-tool-big-example' => 'Tekst velikim slovima',
+ 'wikieditor-toolbar-tool-small' => 'Malim slovima',
+ 'wikieditor-toolbar-tool-small-example' => 'Tekst malim slovima',
+ 'wikieditor-toolbar-tool-superscript' => 'Eksponent',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Tekst eksponenta',
+ 'wikieditor-toolbar-tool-subscript' => 'Indeks',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Tekst indeksa',
+ 'wikieditor-toolbar-group-insert' => 'Uloži',
+ 'wikieditor-toolbar-tool-gallery' => 'Galerija slika',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Primjer.jpg|Opis1
+$1:Primjer.jpg|Opis2',
+ 'wikieditor-toolbar-tool-newline' => 'Novi redak',
+ 'wikieditor-toolbar-tool-table' => 'Tablica',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! naslov 1
+! naslov 2
+! naslov 3
+|-
+| red 1, ćelija 1
+| red 1, ćelija 2
+| red 1, ćelija 3
+|-
+| red 2, ćelija 1
+| red 2, ćelija 2
+| red 2, ćelija 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Redak $1, ćelija $2',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Tekst zaglavlja',
+ 'wikieditor-toolbar-tool-table-title' => 'Umetni tablicu',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Retci',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Stupci',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Dodavanje zaglavlja redaka',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stil s granicama',
+ 'wikieditor-toolbar-tool-table-sortable' => 'UÄini tablicu sortabilnom',
+ 'wikieditor-toolbar-tool-table-example' => 'Primjer',
+ 'wikieditor-toolbar-tool-table-preview' => 'Pregled',
+ 'wikieditor-toolbar-tool-table-insert' => 'Umetni',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Odustani',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Umetanje tablice s više od $1 polja nije moguće s ovim dijalogu.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Niste unijeli valjani broj redaka ili stupaca.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ne možete umetnuti tablicu sa nula redaka ili stupaca.',
+ 'wikieditor-toolbar-tool-replace' => 'Zamijeni',
+ 'wikieditor-toolbar-tool-replace-title' => 'Traži i zamijeni',
+ 'wikieditor-toolbar-tool-replace-search' => 'Traži:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Zamijeni s:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Pazi na velika slova',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Postupaj s traženim nizom kao regularnim izrazom',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Nađi sljedeću',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Zamijenite sljedeći',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Zamijeni sve',
+ 'wikieditor-toolbar-tool-replace-close' => 'Zatvori',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Pretraživanje nije pronašlo ništa.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 zamjena naÄinjeno.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Niste unijeli ništa za pretragu.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Izraz koji ste unijeli nije ispravan: $1',
+ 'wikieditor-toolbar-section-characters' => 'Posebni znakovi',
+ 'wikieditor-toolbar-characters-page-latin' => 'latinica',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'proširena latinica',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'simboli',
+ 'wikieditor-toolbar-characters-page-greek' => 'grÄki',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'ćirilica',
+ 'wikieditor-toolbar-characters-page-arabic' => 'arapski',
+ 'wikieditor-toolbar-characters-page-persian' => 'Perzijski',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'hebrejski',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla znakovi',
+ 'wikieditor-toolbar-characters-page-telugu' => 'telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhaleški znakovi',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gudžarati znakovi',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tajlandski',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laoški znakovi',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Kmerskim',
+ 'wikieditor-toolbar-section-help' => 'Pomoć',
+ 'wikieditor-toolbar-help-heading-description' => 'Opis',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Å to upisujete',
+ 'wikieditor-toolbar-help-heading-result' => 'Å to dobivate',
+ 'wikieditor-toolbar-help-page-format' => 'Formatiranje',
+ 'wikieditor-toolbar-help-page-link' => 'Poveznice',
+ 'wikieditor-toolbar-help-page-heading' => 'Podnaslovi',
+ 'wikieditor-toolbar-help-page-list' => 'Popisi',
+ 'wikieditor-toolbar-help-page-file' => 'Datoteke',
+ 'wikieditor-toolbar-help-page-reference' => 'Bilješke',
+ 'wikieditor-toolbar-help-page-discussion' => 'Razgovor',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kurziv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kurzivni tekst''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kurzivni tekst</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Podebljano',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Podebljani tekst'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Podebljani tekst</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Podebljano i kurziv',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Podebljani i kurzivni tekst'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Podebljani i kurzivni tekst</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Unutarnja poveznica',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Naslov stranice|Oznaka poveznice]]<br />[[Naslov stranice]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Oznaka poveznice</a><br /><a href='#'>Naslov stranice</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Vanjska poveznica',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.primjer.org Oznaka poveznice]<br />[http://www.primjer.org]<br />http://www.primjer.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Oznaka poveznice</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.primjer.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Podnaslov 2. razine',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Tekst podnaslova ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2> Tekst podnaslova </h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Podnaslov 3. razine',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Tekst podnaslova ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3> Tekst podnaslova </h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Podnaslov 4. razine',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Tekst podnaslova ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4> Tekst podnaslova </h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Podnaslov 5. razine',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Tekst podnaslova =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5> Tekst podnaslova </h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Popis s grafiÄkim oznakama',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* stavka popisa<br />* stavka popisa',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>stavka popisa</li><li>stavka popisa</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Numerirani popis',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# stavka popisa<br /># stavka popisa',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>stavka popisa</li><li>stavka popisa</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Uložena datoteka',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Tekst opisa]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Tekst opisa' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Povećaj' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Tekst opisa'</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Bilješke',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Tekst stranice.&lt;ref name="test"&gt;[http://www.primjer.org Tekst poveznice], dodatni tekst.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Tekst stranice.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Dodatno korištenje iste bilješke',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Tekst stranice.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Prikazivanje bilješki',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.primjer.org' class='vanjski tekst' href='#'>Teks poveznice</a>, dodatni tekst.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Potpis s datumom',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>SuradniÄko ime</a> (<a href='#' title='{{#special:mytalk}}'>razgovor</a>) 15:54, 10. lipnja 2009. (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Potpis',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>SuradniÄko ime</a> (<a href='#' title='{{#special:mytalk}}'>razgovor</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Uvlaka',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normalni tekst<br />:UvuÄeni tekst <br />::UvuÄeni tekst',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normalni tekst<dl><dd>UvuÄeni tekst<dl><dd>UvuÄeni tekst</dd></dl></dd></dl>',
+);
+
+/** Upper Sorbian (Hornjoserbsce)
+ * @author Michawiki
+ */
+$messages['hsb'] = array(
+ 'wikieditor' => 'Rozšěrjeny powjerch za wobdźěłowanje wikiteksta',
+ 'wikieditor-desc' => 'Steji rozšěrjujomny powjerch za wobdźěłowanje wikiteksta a wjele modulow k dispoziciji.',
+ 'wikieditor-wikitext-tab' => 'WikiTekst',
+ 'wikieditor-loading' => 'ZaÄituje so',
+ 'wikieditor-preview-preference' => 'Přehlad bok po boku zmóžnić',
+ 'wikieditor-preview-tab' => 'Přehlad',
+ 'wikieditor-preview-changes-tab' => 'Změny',
+ 'wikieditor-preview-loading' => 'ZaÄituje so...',
+ 'wikieditor-previewDialog-preference' => 'Dialog za přehlad zmóžnić',
+ 'wikieditor-previewDialog-tab' => 'Přehlad',
+ 'wikieditor-previewDialog-loading' => 'ZaÄituje so...',
+ 'wikieditor-publish-preference' => 'Publikowanje krok po kroku zmóžnić',
+ 'wikieditor-publish-button-publish' => 'Wozjewić',
+ 'wikieditor-publish-button-cancel' => 'Přetorhnyć',
+ 'wikieditor-publish-dialog-title' => 'Do {{GRAMMAR:genitiw|{{SITENAME}}}} wozjewić',
+ 'wikieditor-publish-dialog-summary' => 'Zjeće zmÄ›now (wopisaj krótko zmÄ›ny, kotrež sy ÄiniÅ‚):',
+ 'wikieditor-publish-dialog-minor' => 'Snadna změna',
+ 'wikieditor-publish-dialog-watch' => 'Tutu stronu wobkedźbować',
+ 'wikieditor-publish-dialog-publish' => 'Wozjewić',
+ 'wikieditor-publish-dialog-goback' => 'Wróćo',
+ 'wikieditor-template-editor-preference' => 'Wobdźěłowanje wikipředłohow na zakładźe formularow zmóžnić',
+ 'wikieditor-template-editor-dialog-title' => 'Předłohu wobdźěłać',
+ 'wikieditor-template-editor-dialog-submit' => 'Aktualizować',
+ 'wikieditor-template-editor-dialog-cancel' => 'Přetorhnyć',
+ 'wikieditor-templates-preference' => 'Fałdowanje předłohow zmóžnić',
+ 'wikieditor-toc-preference' => 'Nawigěrujomny zapis wobsaha zmóžnić',
+ 'wikieditor-toc-show' => 'Wobsah pokazać',
+ 'wikieditor-toc-hide' => 'Wobsah schować',
+ 'wikieditor-toolbar' => 'Gratowa lajsta za wobdźěłowanje',
+ 'wikieditor-toolbar-desc' => 'Gratowa lajsta za wobdźěłowanje stronow z polěpšenej wužiwajomnosću',
+ 'wikieditor-toolbar-preference' => 'Polěpšenu gratowu lajstu za wobdźěłowanje aktiwizować',
+ 'wikieditor-toolbar-dialogs-preference' => 'Dialogi za zasunjenje wotkazow, tabelow a hinašeho zmóžnić',
+ 'wikieditor-toolbar-loading' => 'ÄŒita so...',
+ 'wikieditor-toolbar-tool-bold' => 'TuÄny',
+ 'wikieditor-toolbar-tool-bold-example' => 'TuÄny tekst',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiwny',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kursiwny tekst',
+ 'wikieditor-toolbar-tool-ilink' => 'Interny wotkaz',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titul wotkaza',
+ 'wikieditor-toolbar-tool-xlink' => 'Eksterny wotkaz (njezabudź na prefiks http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'titul wotkaza http://www.přikład.de',
+ 'wikieditor-toolbar-tool-link' => 'Wotkaz',
+ 'wikieditor-toolbar-tool-link-title' => 'Wotkaz zasunyć',
+ 'wikieditor-toolbar-tool-link-int' => 'K wikinastawkej/stronje',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Titul nastawka:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titul strony abo URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Tekst wotkaza:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Tekst, kotryž ma so pokazać, zapodać',
+ 'wikieditor-toolbar-tool-link-ext' => 'K eksternej webstronje',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL wotkaza:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Tekst wotkaza:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Wotkaz zasunyć',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Přetorhnyć',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Strona eksistuje',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Strona njeeksistuje',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Njepłaćiwy titul',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Eksterny wotkaz',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Eksistenca strony so přepruwuje...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Titul, kotryž sy podał, je njepłaćiwy.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL, kotryž sy podał, wupada kaž by jako wotkaz k druhej wikistronje měrjeny był.
+Chceš jón do interneho wotkaza přetworić?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Interny wotkaz',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Eksterny wotkaz',
+ 'wikieditor-toolbar-tool-link-empty' => 'Njejsy niÄo zapodaÅ‚, na kotrež ma so wotkazować.',
+ 'wikieditor-toolbar-tool-file' => 'Zasadźena dataja',
+ 'wikieditor-toolbar-tool-file-example' => 'Přikład.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referenca',
+ 'wikieditor-toolbar-tool-reference-example' => 'Tekst nóžki tu zasunyć',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Přetorhnyć',
+ 'wikieditor-toolbar-tool-reference-title' => 'Referencu zasunyć',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Zasunyć',
+ 'wikieditor-toolbar-tool-reference-text' => 'Tekst referency',
+ 'wikieditor-toolbar-tool-signature' => 'Signatura a Äasowy koÅ‚k',
+ 'wikieditor-toolbar-section-advanced' => 'Rozšěrjeny',
+ 'wikieditor-toolbar-tool-heading' => 'Nadpis',
+ 'wikieditor-toolbar-tool-heading-1' => 'Runina 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Runina 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Runina 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Runina 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Runina 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Tekst nadpisa',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'NaliÄenska lisćina',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Zapisk naliÄenskeje lisćiny',
+ 'wikieditor-toolbar-tool-olist' => 'Čisłowana lisćina',
+ 'wikieditor-toolbar-tool-olist-example' => 'Zapisk ÄisÅ‚owaneje lisćiny',
+ 'wikieditor-toolbar-tool-indent' => 'Zasunjenje',
+ 'wikieditor-toolbar-tool-indent-example' => 'Zasunjena linka',
+ 'wikieditor-toolbar-tool-nowiki' => 'Žane wikiformatowanje',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Njeformatowany tekst tu zasunyć',
+ 'wikieditor-toolbar-tool-redirect' => 'Dalesposrědkowanje',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Mjeno ciloweje strony',
+ 'wikieditor-toolbar-tool-big' => 'Wulki',
+ 'wikieditor-toolbar-tool-big-example' => 'Wulki tekst',
+ 'wikieditor-toolbar-tool-small' => 'Mały',
+ 'wikieditor-toolbar-tool-small-example' => 'Mały tekst',
+ 'wikieditor-toolbar-tool-superscript' => 'Wysoko stajeny',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Wysoko stajeny tekst',
+ 'wikieditor-toolbar-tool-subscript' => 'HÅ‚uboko stajeny',
+ 'wikieditor-toolbar-tool-subscript-example' => 'HÅ‚uboko stajeny tekst',
+ 'wikieditor-toolbar-group-insert' => 'Zasunyć',
+ 'wikieditor-toolbar-tool-gallery' => 'Wobrazowa galerija',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Popis1
+$1:Example.jpg|Popis2',
+ 'wikieditor-toolbar-tool-newline' => 'Nowa linka',
+ 'wikieditor-toolbar-tool-table' => 'Tabela',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! hłowa 1
+! hłowa 2
+! hłowa 3
+|-
+| rjadka 1, cela 1
+| rjadka 1, cela 2
+| rjadka 1, cela 3
+|-
+| rjadka 2, cela 1
+| rjadka 2, cela 2
+| rjadka 2, cela 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Celowy tekst',
+ 'wikieditor-toolbar-tool-table-example-header' => 'HÅ‚owowy tekst',
+ 'wikieditor-toolbar-tool-table-title' => 'Tabelu zasunyć',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rjadki',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Å palty',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Rjadku hłowy zapřijeć',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stil z ramikami',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Sortěrujomna tabela',
+ 'wikieditor-toolbar-tool-table-example' => 'Celowy tekst',
+ 'wikieditor-toolbar-tool-table-preview' => 'Přehlad',
+ 'wikieditor-toolbar-tool-table-insert' => 'Zasunyć',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Přetorhnyć',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Zasuwanje tabele z přez $1 {{PLURAL:$1|celu|celomaj|celemi|celemi}} z tutym dialogom móžno njeje.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Njejsy pÅ‚aćiwu liÄbu rjadkow abo Å¡paltow zapodaÅ‚.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Njemóžeš tabelu bjez rjadkow abo špaltow zasunyć.',
+ 'wikieditor-toolbar-tool-replace' => 'Pytać a narunać',
+ 'wikieditor-toolbar-tool-replace-title' => 'Pytać a narunać',
+ 'wikieditor-toolbar-tool-replace-search' => 'Pytać za:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Narunać přez:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Wotpowědowanje',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Z pytanskim tekstom kaž z regularnym wurazom wobchadźeć',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Dale pytać',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Dale narunać',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Wšě narunać',
+ 'wikieditor-toolbar-tool-replace-close' => 'ZaÄinić',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Twoje pytanje njeje wotpowědnik namakał.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 {{PLURAL:$1|narunanje přewjedźene|narunani přewjedźenej|narunanja přewjedźene|narunanjow přewjedźenych}}.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Njejsy žadyn pytanski wuraz zapodał.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Regularny wuraz, kotryž sy zapodał, je njepłaćiwy: $1',
+ 'wikieditor-toolbar-section-characters' => 'Specialne znamješka',
+ 'wikieditor-toolbar-characters-page-latin' => 'Åaćonske',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Åaćonske rozÅ¡Ä›rjene',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbole',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grjekske',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kyriliske',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabske',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persiske',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebrejske',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalšćina',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singalezišćina',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gudźarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thailandšćina',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laošćina',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmeršćina',
+ 'wikieditor-toolbar-section-help' => 'Pomoc',
+ 'wikieditor-toolbar-help-heading-description' => 'Wopisanje',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Štož zapisuješ',
+ 'wikieditor-toolbar-help-heading-result' => 'Štož dóstanješ',
+ 'wikieditor-toolbar-help-page-format' => 'Formatowanje',
+ 'wikieditor-toolbar-help-page-link' => 'Wotkazy',
+ 'wikieditor-toolbar-help-page-heading' => 'Nadpisy',
+ 'wikieditor-toolbar-help-page-list' => 'Lisćiny',
+ 'wikieditor-toolbar-help-page-file' => 'Dataje',
+ 'wikieditor-toolbar-help-page-reference' => 'Referency',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskusija',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiwny',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursiwny tekst''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursiwny tekst</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'TuÄny',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''TuÄny tekst'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>TuÄny tekst</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'TuÄny &amp; kursiwny',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''TuÄny &amp; kursiwny tekst'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>TuÄny &amp; kursiwny tekst</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Interny wotkaz',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Page title|Popis wotkaza]]<br />[[Page title]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Popis wotkaza</a><br /><a href='#'>Titul wotkaza</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Eksterny wotkaz',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Popis wotkaza]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Popis wotkaza</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'nadpis 2. runiny',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Nadpisowy tekst ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Nadpisowy tekst</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Nadpis 3. runiny',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Nadpisowy tekst ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Nadpisowy tekst</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Nadpis 4. runiny',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Nadpisowy tekst ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Nadpisowy tekst</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Nadpis 5. runiny',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Nadpisowy tekst =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Nadpisowy tekst</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'NaliÄenska lisćina',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Lisćinowy zapisk<br />* Lisćinowy zapisk',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Lisćinowy zapisk</li><li>Lisćinowy zapisk</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Čisłowana lisćina',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Lisćinowy zapisk<br /># Lisćinowy zapisk',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Lisćinowy zapisk</li><li>Lisćinowy zapisk</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Zasadźena dataja',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Tekst wobrazoweho popisa]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Tekst wobrazeho popisa' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Powjetšić' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Tekst wobrazoweho popisa</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referenca',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Tekst strony.&lt;ref name="test"&gt;[http://www.example.org tekst wotkaza], přidatny tekst.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Tekst strony.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Přidatne wužiwanje samsneje referency',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Tekst strony.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Referency zwobraznić',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Tekst wotkaza</a>, přidatny tekst.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Signatura z Äasowym koÅ‚kom',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Wužiwarske mjeno</a> (<a href='#' title='{{#special:mytalk}}'>diskusija</a>) 15:54, 10. junija 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signatura',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Wužiwarske mjeno</a> (<a href='#' title='{{#special:mytalk}}'>diskusija</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Zasunjenje',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normalny tekst<br />:Zasunjeny tekst<br />::Zasunjeny tekst',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normalny tekst<dl><dd>Zasunjeny tekst<dl><dd>Zasunjeny tekst</dd></dl></dd></dl>',
+);
+
+/** Hungarian (Magyar)
+ * @author Bdamokos
+ * @author Dani
+ * @author Glanthor Reviol
+ * @author Hunyadym
+ * @author McDutchie
+ * @author Misibacsi
+ */
+$messages['hu'] = array(
+ 'wikieditor' => 'Fejlett szerkesztőfelület wikiszöveghez',
+ 'wikieditor-desc' => 'Bővíthető szerkesztőfelület wikiszöveghez és több, új funkciókat kínáló modul',
+ 'wikieditor-wikitext-tab' => 'Wikiszöveg',
+ 'wikieditor-loading' => 'Betöltés…',
+ 'wikieditor-preview-preference' => 'Előnézet egymás mellett engedélyezése',
+ 'wikieditor-preview-tab' => 'Előnézet',
+ 'wikieditor-preview-changes-tab' => 'Változtatások',
+ 'wikieditor-preview-loading' => 'Betöltés…',
+ 'wikieditor-previewDialog-preference' => 'Előnézet párbeszédablak bekapcsolása',
+ 'wikieditor-previewDialog-tab' => 'Előnézet',
+ 'wikieditor-previewDialog-loading' => 'Betöltés…',
+ 'wikieditor-publish-preference' => 'Lépésről-lépésre közzététel engedélyezése',
+ 'wikieditor-publish-button-publish' => 'Közzététel',
+ 'wikieditor-publish-button-cancel' => 'Mégse',
+ 'wikieditor-publish-dialog-title' => 'Közzététel a(z) {{SITENAME}} wikin',
+ 'wikieditor-publish-dialog-summary' => 'Szerkesztési összefoglaló (pontosan írd le az általad végzett változtatásokat):',
+ 'wikieditor-publish-dialog-minor' => 'Apró szerkesztés',
+ 'wikieditor-publish-dialog-watch' => 'Lap figyelése',
+ 'wikieditor-publish-dialog-publish' => 'Közzététel',
+ 'wikieditor-publish-dialog-goback' => 'Vissza',
+ 'wikieditor-template-editor-preference' => 'Wiki sablonok űrlap alapú szerkesztésének engedélyezése',
+ 'wikieditor-template-editor-dialog-title' => 'Sablon szerkesztése',
+ 'wikieditor-template-editor-dialog-submit' => 'Frissítés',
+ 'wikieditor-template-editor-dialog-cancel' => 'Mégse',
+ 'wikieditor-templates-preference' => 'Sablonok összecsukásának engedélyezése',
+ 'wikieditor-toc-preference' => 'Tartalomjegyzék megjelenítése szerkesztéskor',
+ 'wikieditor-toc-show' => 'Tartalomjegyzék megjelenítése',
+ 'wikieditor-toc-hide' => 'Tartalomjegyzék elrejtése',
+ 'wikieditor-toolbar' => 'Szerkesztő-eszköztár',
+ 'wikieditor-toolbar-desc' => 'Használhatóbb szerkesztő eszköztár',
+ 'wikieditor-toolbar-preference' => 'Fejlettebb szerkesztő-eszköztár használata',
+ 'wikieditor-toolbar-dialogs-preference' => 'Párbeszédablakok engedélyezése hivatkozások, táblázatok és egyebek beillesztéséhez',
+ 'wikieditor-toolbar-hidesig' => 'Aláírás gomb elrejtése a szócikknévtérben',
+ 'wikieditor-toolbar-loading' => 'Betöltés…',
+ 'wikieditor-toolbar-tool-bold' => 'Félkövér',
+ 'wikieditor-toolbar-tool-bold-example' => 'Félkövér szöveg',
+ 'wikieditor-toolbar-tool-italic' => 'DÅ‘lt',
+ 'wikieditor-toolbar-tool-italic-example' => 'Dőlt szöveg',
+ 'wikieditor-toolbar-tool-ilink' => 'Belső hivatkozás',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Hivatkozás címe',
+ 'wikieditor-toolbar-tool-xlink' => 'Külső hivatkozás (ne felejtkezz el a http:// előtagról)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.peldaoldal.hu hivatkozás címe',
+ 'wikieditor-toolbar-tool-link' => 'Hivatkozás',
+ 'wikieditor-toolbar-tool-link-title' => 'Hivatkozás beszúrása',
+ 'wikieditor-toolbar-tool-link-int' => 'A wiki egy lapjára',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Lap címe:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Lapcím vagy URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'A hivatkozás szövege:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Add meg a megjelenítendő szöveget',
+ 'wikieditor-toolbar-tool-link-ext' => 'Egy külső weboldalra',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL-cím:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'A hivatkozás szövege:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Hivatkozás beszúrása',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Mégse',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'A lap létezik',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'A lap nem létezik',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Érvénytelen cím',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Külső hivatkozás',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Ellenőrzöm, hogy létezik-e a lap…',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'A megadott cím érvénytelen',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Úgy tűnik, hogy a megadott URL másik wiki lapra mutató hivatkozás akart lenni.
+Szeretnéd belső hivatkozássá alakítani?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Belső hivatkozás',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Külső hivatkozás',
+ 'wikieditor-toolbar-tool-link-empty' => 'Nem adtad meg, hogy hová szeretnél hivatkozást készíteni.',
+ 'wikieditor-toolbar-tool-file' => 'Fájl beszúrása',
+ 'wikieditor-toolbar-tool-file-example' => 'Egyszerikép.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Forráshivatkozás',
+ 'wikieditor-toolbar-tool-reference-example' => 'Ide írd a lábjegyzet szövegét',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Mégse',
+ 'wikieditor-toolbar-tool-reference-title' => 'Forráshivatkozás beszúrása',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Beszúrás',
+ 'wikieditor-toolbar-tool-reference-text' => 'Forráshivatkozás szövege',
+ 'wikieditor-toolbar-tool-signature' => 'Aláírás és időbélyeg',
+ 'wikieditor-toolbar-section-advanced' => 'Haladó',
+ 'wikieditor-toolbar-tool-heading' => 'Címsor',
+ 'wikieditor-toolbar-tool-heading-1' => '1. szintű',
+ 'wikieditor-toolbar-tool-heading-2' => '2. szintű',
+ 'wikieditor-toolbar-tool-heading-3' => '3. szintű',
+ 'wikieditor-toolbar-tool-heading-4' => '4. szintű',
+ 'wikieditor-toolbar-tool-heading-5' => '5. szintű',
+ 'wikieditor-toolbar-tool-heading-example' => 'Címsor szövege',
+ 'wikieditor-toolbar-group-format' => 'Formázás',
+ 'wikieditor-toolbar-tool-ulist' => 'Felsorolásjeles lista',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Listaelem',
+ 'wikieditor-toolbar-tool-olist' => 'Számozott lista',
+ 'wikieditor-toolbar-tool-olist-example' => 'Listaelem',
+ 'wikieditor-toolbar-tool-indent' => 'Behúzás',
+ 'wikieditor-toolbar-tool-indent-example' => 'Behúzott sor',
+ 'wikieditor-toolbar-tool-nowiki' => 'wikiformázás kikapcsolása',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'ide írd a formázatlan szöveget',
+ 'wikieditor-toolbar-tool-redirect' => 'Ãtirányítás',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Céllap neve',
+ 'wikieditor-toolbar-tool-big' => 'Nagy',
+ 'wikieditor-toolbar-tool-big-example' => 'Nagy szöveg',
+ 'wikieditor-toolbar-tool-small' => 'Kicsi',
+ 'wikieditor-toolbar-tool-small-example' => 'Kicsi szöveg',
+ 'wikieditor-toolbar-tool-superscript' => 'Felső index',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Felső index szövege',
+ 'wikieditor-toolbar-tool-subscript' => 'Alsó index',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Alsó index szövege',
+ 'wikieditor-toolbar-group-insert' => 'Beszúrás',
+ 'wikieditor-toolbar-tool-gallery' => 'Képgaléria',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Példa.jpg|képaláírás1
+$1:Példa.jpg|képaláírás2',
+ 'wikieditor-toolbar-tool-newline' => 'Új sor',
+ 'wikieditor-toolbar-tool-table' => 'Táblázat',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! 1. fejléc
+! 2. fejléc
+! 3. fejléc
+|-
+| 1. sor, 1. cella
+| 1. sor, 2. cella
+| 1. sor, 3. cella
+|-
+| 2. sor, 1. cella
+| 2. sor, 2. cella
+| 2. sor, 3. cella',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Cella szövege',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Fejléc szövege',
+ 'wikieditor-toolbar-tool-table-title' => 'Tábla beszúrása',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Sorok száma',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Oszlopok száma',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'A fejlécet is beleértve',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stílus szegélyekkel',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Legyen a táblázat rendezhető',
+ 'wikieditor-toolbar-tool-table-example' => 'Cella szövege',
+ 'wikieditor-toolbar-tool-table-preview' => 'Előnézet',
+ 'wikieditor-toolbar-tool-table-insert' => 'Beszúrás',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Mégse',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Több mint $1 cellát tartalmazó táblázat beillesztése nem lehetséges ezzel a párbeszédablakkal.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Nem megfelelő számú sort vagy oszlopot adtál meg.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Nem szúrhatsz be nulla sort vagy oszlopot tartalmazó táblázatot.',
+ 'wikieditor-toolbar-tool-replace' => 'Keresés és csere',
+ 'wikieditor-toolbar-tool-replace-title' => 'Keresés és csere',
+ 'wikieditor-toolbar-tool-replace-search' => 'Keresendő szöveg:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Csere:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Kis- és nagybetű-érzékenység',
+ 'wikieditor-toolbar-tool-replace-regex' => 'A beírt szöveg egy reguláris kifejezés',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Következő keresése',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Következő cseréje',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Összes cseréje',
+ 'wikieditor-toolbar-tool-replace-close' => 'Bezárás',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Nincs egyetlen találat sem.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 csere történt.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Nem adtad meg, hogy mit akarsz keresni.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'A megadott reguláris kifejezés érvénytelen: $1',
+ 'wikieditor-toolbar-section-characters' => 'Különleges karakterek',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Bővített latin',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Szimbólumok',
+ 'wikieditor-toolbar-characters-page-greek' => 'Görög',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirill',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arab',
+ 'wikieditor-toolbar-characters-page-persian' => 'Perzsa',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Héber',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengáli',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Szingaléz',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gudzsaráti',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Segítség',
+ 'wikieditor-toolbar-help-heading-description' => 'Leírás',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Amit be kell írnod',
+ 'wikieditor-toolbar-help-heading-result' => 'Az eredmény',
+ 'wikieditor-toolbar-help-page-format' => 'Formázás',
+ 'wikieditor-toolbar-help-page-link' => 'Hivatkozások',
+ 'wikieditor-toolbar-help-page-heading' => 'Címsorok',
+ 'wikieditor-toolbar-help-page-list' => 'Listák',
+ 'wikieditor-toolbar-help-page-file' => 'Fájlok',
+ 'wikieditor-toolbar-help-page-reference' => 'Forráshivatkozások',
+ 'wikieditor-toolbar-help-page-discussion' => 'Megbeszélés',
+ 'wikieditor-toolbar-help-content-italic-description' => 'DÅ‘lt',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Dőlt szöveg''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Dőlt szöveg</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Félkövér',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Félkövér szöveg'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Félkövér szöveg</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Félkövér és dőlt',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Félkövér és dőlt szöveg'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Félkövér és dőlt szöveg</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Belső hivatkozás',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Lap címe|Hivatkozás szövege]]<br />[[Lap címe]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Hivatkozás szövege</a><br /><a href='#'>Lap címe</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Külső hivatkozás',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.peldaoldal.hu Hivatkozás szövege]<br />[http://www.peldaoldal.hu]<br />http://www.peldaoldal.hu',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Hivatkozás szövege</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.peldaoldal.hu</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Második szintű címsor',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Címsor szövege ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Címsor szövege</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Harmadik szintű címsor',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Címsor szövege ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Címsor szövege</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Negyedik szintű címsor',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Címsor szövege ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Címsor szövege</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Ötödik szintű címsor',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Címsor szövege =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Címsor szövege</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Felsorolásjeles lista',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Listaelem<br />* Listaelem',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Listaelem</li><li>Listaelem</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Számozott lista',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Listaelem<br /># Listaelem',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Listaelem</li><li>Listaelem</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Beszúrt fájl',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Képaláírás]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='A kép nagyítása' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Képaláírás</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Forráshivatkozás',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Lap szövege.&lt;ref name="test"&gt;[http://www.példaoldal.hu Hivatkozás szövege], további szöveg.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Lap szövege.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Ugyanazon forráshivatkozás későbbi használata',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Lap szövege.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Forráshivatkozások listázása',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.peldaoldal.hu' class='external text' href='#'>Hivatkozás szövege</a>, további szöveg.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Aláírás időbélyeggel',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Szerkesztőnév</a> (<a href='#' title='{{#special:mytalk}}'>vita</a>) 2009. június 10., 15:54 (CEST)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Aláírás',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Szerkesztőnév</a> (<a href='#' title='{{#special:mytalk}}'>vita</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Behúzás',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Sima szöveg<br />:Behúzott szöveg<br />::Behúzott szöveg',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Sima szöveg<dl><dd>Behúzott szöveg<dl><dd>Behúzott szöveg</dd></dl></dd></dl>',
+);
+
+/** Armenian (Õ€Õ¡ÕµÕ¥Ö€Õ¥Õ¶)
+ * @author Chaojoker
+ * @author Xelgen
+ */
+$messages['hy'] = array(
+ 'wikieditor-preview-preference' => 'Ô±Õ¯Õ¿Õ«Õ¾Õ¡ÖÕ¶Õ¥Õ¬ կողք–կողքի Õ¶Õ¡Õ­Õ¡Õ¤Õ«Õ¿Õ¸Ö‚Õ´Õ¨',
+ 'wikieditor-preview-tab' => 'Õ†Õ¡Õ­Õ¡Õ¤Õ«Õ¿Õ¥Õ¬',
+ 'wikieditor-preview-loading' => 'Բեռնում…',
+ 'wikieditor-previewDialog-tab' => 'Õ†Õ¡Õ­Õ¡Õ¤Õ«Õ¿Õ¥Õ¬',
+ 'wikieditor-previewDialog-loading' => 'Բեռնում…',
+ 'wikieditor-publish-button-publish' => 'Õ€Ö€Õ¡Õ¿Õ¡Ö€Õ¡Õ¯Õ¥Õ¬',
+ 'wikieditor-publish-button-cancel' => 'Ô²Õ¥Õ¯Õ¡Õ¶Õ¥Õ¬',
+ 'wikieditor-publish-dialog-title' => 'Õ€Ö€Õ¡Õ¿Õ¡Ö€Õ¡Õ¯Õ¥Õ¬ {{SITENAME}} Õ¶Õ¡Õ­Õ¡Õ£Õ®Õ¸Ö‚Õ´',
+ 'wikieditor-publish-dialog-summary' => 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ´Õ¡Õ¶ Õ¡Õ´ÖƒÕ¸ÖƒÕ¸Ö‚Õ´ (Õ°Õ¡Õ¯Õ«Ö€Õ³ Õ¶Õ¯Õ¡Ö€Õ¡Õ£Ö€Õ¥Ö„ Õ±Õ¥Ö€ Õ¯Õ¡Õ¿Õ¡Ö€Õ¡Õ® ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨)',
+ 'wikieditor-publish-dialog-minor' => 'Õ‰Õ¶Õ¹Õ«Õ¶ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´',
+ 'wikieditor-publish-dialog-watch' => 'Õ€Õ½Õ¯Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ¨',
+ 'wikieditor-publish-dialog-publish' => 'Õ€Ö€Õ¡Õ¿Õ¡Ö€Õ¡Õ¯Õ¥Õ¬',
+ 'wikieditor-publish-dialog-goback' => 'Õ€Õ¥Õ¿ Õ£Õ¶Õ¡Õ¬',
+ 'wikieditor-toc-preference' => 'Ô±Õ¯Õ¿Õ«Õ¾Õ¡ÖÕ¶Õ¥Õ¬ Õ¶Õ¡Õ¾Õ¡Ö€Õ¯Õ¥Õ¬Õ« Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¡Õ¶ ÖÕ¡Õ¶Õ¯',
+ 'wikieditor-toc-show' => 'Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨',
+ 'wikieditor-toc-hide' => 'Ô¹Õ¡Ö„ÖÕ¶Õ¥Õ¬ Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨',
+ 'wikieditor-toolbar' => 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ´Õ¡Õ¶ Õ¾Õ¡Õ°Õ¡Õ¶Õ¡Õ¯',
+ 'wikieditor-toolbar-desc' => 'Ô²Õ¡Ö€Õ±Ö€Õ¡ÖÖ€Õ¡Õ® Õ°Õ¡Ö€Õ´Õ¡Ö€Õ¡Õ¾Õ¥Õ¿Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ´Õ¡Õ¶ Õ¾Õ¡Õ°Õ¡Õ¶Õ¡Õ¯',
+ 'wikieditor-toolbar-preference' => 'Ô±Õ¯Õ¿Õ«Õ¾Õ¡ÖÕ¶Õ¥Õ¬ Õ¢Õ¡Ö€Õ¥Õ¬Õ¡Õ¾Õ¾Õ¡Õ® Õ­Õ´Õ¢Õ¡Õ£Ö€Õ´Õ¡Õ¶ Õ¾Õ¡Õ°Õ¡Õ¶Õ¡Õ¯Õ¨',
+ 'wikieditor-toolbar-dialogs-preference' => 'Ô±Õ¯Õ¿Õ«Õ¾Õ¡ÖÕ¶Õ¥Õ¬ Õ¥Ö€Õ¯Õ­Õ¸Õ½Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ°Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ«, Õ¡Õ²ÕµÕ¸Ö‚Õ½Õ¡Õ¯Õ¶Õ¥Ö€Õ« Ö‡ Õ¡ÕµÕ¬Õ¶Õ« Õ°Õ¡Õ´Õ¡Ö€',
+ 'wikieditor-toolbar-loading' => 'Բեռնում…',
+ 'wikieditor-toolbar-tool-bold' => 'Ô¹Õ¡Õ¾Õ¡Õ¿Õ¡Õ¼',
+ 'wikieditor-toolbar-tool-bold-example' => 'Ô¹Õ¡Õ¾Õ¡Õ¿Õ¡Õ¼ Õ¿Õ¥Ö„Õ½Õ¿',
+ 'wikieditor-toolbar-tool-italic' => 'Õ‡Õ¥Õ²Õ¡Õ¿Õ¡Õ¼',
+ 'wikieditor-toolbar-tool-italic-example' => 'Õ‡Õ¥Õ²Õ¡Õ¿Õ¡Õ¼ Õ¿Õ¥Ö„Õ½Õ¿',
+ 'wikieditor-toolbar-tool-ilink' => 'Õ†Õ¥Ö€Ö„Õ«Õ¶ Õ°Õ²Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Õ€Õ²Õ´Õ¡Õ¶ Õ¾Õ¥Ö€Õ¶Õ¡Õ£Õ«Ö€',
+ 'wikieditor-toolbar-tool-xlink' => 'Ô±Ö€Õ¿Õ¡Ö„Õ«Õ¶ Õ°Õ²Õ¸Ö‚Õ´ (Õ°Õ«Õ·Õ¥Ö„ Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ http:// Õ¶Õ¡Õ­Õ¡Õ®Õ¡Õ¶ÖÕ¨)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com Õ°Õ²Õ´Õ¡Õ¶ Õ¾Õ¥Ö€Õ¶Õ¡Õ£Õ«Ö€Õ¨',
+ 'wikieditor-toolbar-tool-link' => 'Õ€Õ²Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-tool-link-title' => 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ°Õ²Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-tool-link-int' => 'ÕŽÕ«Ö„Õ«Õ« Õ§Õ»Õ«Õ¶',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Էջի վերնագիր․',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Ô·Õ»Õ« Õ¾Õ¥Ö€Õ¶Õ¡Õ£Õ«Ö€ Õ¯Õ¡Õ´ URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Հղման տեսքստ․',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Õ†Õ¥Ö€Õ´Õ¸Ö‚Õ®Õ¥Ö„ Õ¿Õ¥Ö„Õ½Õ¿Õ¨, Õ¸Ö€ ÕºÕ¥Õ¿Ö„ Õ§ ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¾Õ«',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ô±Ö€Õ¿Õ¡Ö„Õ«Õ¶ Õ¾Õ¥Õ¢ Õ§Õ»Õ«Õ¶',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Հղման URL․',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Հղման տեքստ․',
+ 'wikieditor-toolbar-tool-link-insert' => 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ°Õ²Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Ô²Õ¥Õ¯Õ¡Õ¶Õ¥Õ¬',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Ô·Õ»Õ¨ Õ£Õ¸ÕµÕ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¸Ö‚Õ¶Õ«',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Ô·Õ»Õ¨ Õ£Õ¸ÕµÕ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¹Õ¸Ö‚Õ¶Õ«',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ÕÕ­Õ¡Õ¬ Õ¾Õ¥Ö€Õ¶Õ¡Õ£Õ«Ö€',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ô±Ö€Õ¿Õ¡Ö„Õ«Õ¶ Õ°Õ²Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Էջի գոյության ստուգում…',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'ÕÕ¥Ö€ Õ¶Õ·Õ¡Õ® Õ¾Õ¥Ö€Õ¶Õ¡Õ£Õ«Ö€Õ¨ Õ¡Õ¶Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¥Õ¬Õ« Õ§Ö‰',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'ÕÕ¥Ö€ Õ¶Õ·Õ¡Õ® URL-Õ¨ Õ¶Õ´Õ¡Õ¶ Õ§ Õ¾Õ«Ö„Õ«Õ« Õ¡ÕµÕ¬ Õ§Õ»Õ«Õ¶ Õ°Õ²Õ´Õ¡Õ¶Õ¨Ö‰
+Ô´Õ¸Ö‚Ö„ Õ¸Ö‚Õ¦Õ¸ÕžÖ‚Õ´ Õ¥Ö„ Õ¡ÕµÕ½ Õ°Õ²Õ¸Ö‚Õ´Õ¨ Õ½Õ¡Ö€Ö„Õ¥Õ¬ Õ¶Õ¥Ö€Ö„Õ«Õ¶Ö‰',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Õ†Õ¥Ö€Ö„Õ«Õ¶ Õ°Õ²Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ô±Ö€Õ¿Õ¡Ö„Õ«Õ¶ Õ°Õ²Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-tool-link-empty' => 'Ô´Õ¸Ö‚Ö„ Õ°Õ²Õ¾Õ¥Õ¬Õ¸Ö‚ Õ¸Ö€Ö‡Õ§ Õ¢Õ¡Õ¶ Õ¹Õ¥Ö„ Õ¶Õ·Õ¥Õ¬Ö‰',
+ 'wikieditor-toolbar-tool-file' => 'Õ†Õ¥Ö€Õ¯Õ¡Õ¼Õ¸Ö‚ÖÕ¾Õ¡Õ® Õ¶Õ«Õ·Ö„',
+ 'wikieditor-toolbar-tool-file-example' => 'Õ•Ö€Õ«Õ¶Õ¡Õ¯.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Ô¾Õ¡Õ¶Õ¸Õ©Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶',
+ 'wikieditor-toolbar-tool-reference-example' => 'Ô³Ö€Õ¥Ö„ Õ¡ÕµÕ½Õ¿Õ¥Õ² Õ®Õ¡Õ¶Õ¸Õ©Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¿Õ¥Ö„Õ½Õ¿Õ¨',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Ô²Õ¥Õ¯Õ¡Õ¶Õ¥Õ¬',
+ 'wikieditor-toolbar-tool-reference-title' => 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ®Õ¡Õ¶Õ¸Õ©Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬',
+ 'wikieditor-toolbar-tool-reference-text' => 'Ô¾Õ¡Õ¶Õ¸Õ©Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¿Õ¥Ö„Õ½Õ¿Õ¨',
+ 'wikieditor-toolbar-tool-signature' => 'ÕÕ¿Õ¸Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¡Õ´Õ½Õ¡Õ©Õ¾Õ¸Õ¾',
+ 'wikieditor-toolbar-section-advanced' => 'Ô¸Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¾Õ¡Õ®',
+ 'wikieditor-toolbar-tool-heading' => 'ÕŽÕ¥Ö€Õ¶Õ¡Õ£Õ«Ö€',
+ 'wikieditor-toolbar-tool-heading-1' => '1-Õ«Õ¶ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ«',
+ 'wikieditor-toolbar-tool-heading-2' => '2-Ö€Õ¤ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ«',
+ 'wikieditor-toolbar-tool-heading-3' => '3-Ö€Õ¤ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ«',
+ 'wikieditor-toolbar-tool-heading-4' => '4-Ö€Õ¤ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ«',
+ 'wikieditor-toolbar-tool-heading-5' => '5-Ö€Õ¤ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ«',
+ 'wikieditor-toolbar-tool-heading-example' => 'ÕŽÕ¥Ö€Õ¶Õ¡Õ£Ö€Õ« Õ¿Õ¥Ö„Õ½Õ¿',
+ 'wikieditor-toolbar-group-format' => 'ÕÖ‡Õ¡Õ¾Õ¸Ö€Õ¥Õ¬',
+ 'wikieditor-toolbar-tool-ulist' => 'Õ‰Õ°Õ¡Õ´Õ¡Ö€Õ¡Õ¯Õ¡Õ¬Õ¡Õ® ÖÕ¡Õ¶Õ¯',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Õ‰Õ°Õ¡Õ´Õ¡Ö€Õ¡Õ¯Õ¡Õ¬Õ¡Õ® ÖÕ¡Õ¶Õ¯Õ« Õ¿Õ¡Ö€Ö€',
+ 'wikieditor-toolbar-tool-olist' => 'Õ€Õ¡Õ´Õ¡Ö€Õ¡Õ¯Õ¡Õ¬Õ¡Õ® ÖÕ¡Õ¶Õ¯',
+ 'wikieditor-toolbar-tool-olist-example' => 'Õ€Õ¡Õ´Õ¡Ö€Õ¡Õ¯Õ¡Õ¬Õ¡Õ® ÖÕ¡Õ¶Õ¯Õ« Õ¿Õ¡Ö€Ö€',
+ 'wikieditor-toolbar-tool-indent' => 'Ô½Õ¸Ö€Ö„Õ«Ö',
+ 'wikieditor-toolbar-tool-indent-example' => 'Ô½Õ¸Ö€Ö„Õ«Ö Õ£Ö€Õ¾Õ¡Õ® Õ¿Õ¸Õ²',
+ 'wikieditor-toolbar-tool-nowiki' => 'Ô±Õ¶Õ¿Õ¥Õ½Õ¥Õ¬ Õ¾Õ«Ö„Õ« Õ±Ö‡Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¨',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Õ„Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Ö„ Õ¹Õ±Ö‡Õ¡Õ¾Õ¸Ö€Õ¾Õ¡Õ® Õ¿Õ¥Ö„Õ½Õ¿Õ¨ Õ¡ÕµÕ½Õ¿Õ¥Õ²',
+ 'wikieditor-toolbar-tool-redirect' => 'ÕŽÕ¥Ö€Õ¡Õ°Õ²Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ¸Õ¾ Õ§Õ»Õ«Õ¶',
+ 'wikieditor-toolbar-tool-big' => 'Ô½Õ¸Õ·Õ¸Ö€',
+ 'wikieditor-toolbar-tool-big-example' => 'Ô½Õ¸Õ·Õ¸Ö€ Õ¿Õ¥Ö„Õ½Õ¿',
+ 'wikieditor-toolbar-tool-small' => 'Õ„Õ¡Õ¶Ö€',
+ 'wikieditor-toolbar-tool-small-example' => 'Õ„Õ¡Õ¶Ö€ Õ¿Õ¥Ö„Õ½Õ¿',
+ 'wikieditor-toolbar-tool-superscript' => 'ÕŽÕ¥Ö€Õ¿Õ¸Õ²Õ¡ÕµÕ«Õ¶',
+ 'wikieditor-toolbar-tool-superscript-example' => 'ÕŽÕ¥Ö€Õ¿Õ¸Õ²Õ¡ÕµÕ«Õ¶ Õ¿Õ¥Ö„Õ½Õ¿',
+ 'wikieditor-toolbar-tool-subscript' => 'ÔµÕ¶Õ©Õ¡Õ¿Õ¸Õ²Õ¡ÕµÕ«Õ¶',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ÔµÕ¶Õ©Õ¡Õ¿Õ¸Õ²Õ¡ÕµÕ«Õ¶ Õ¿Õ¥Ö„Õ½Õ¿',
+ 'wikieditor-toolbar-group-insert' => 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬',
+ 'wikieditor-toolbar-tool-gallery' => 'ÕŠÕ¡Õ¿Õ¯Õ¥Ö€Õ¡Õ½Ö€Õ¡Õ°',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Õ†Õ¯Õ¡Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶1
+$1:Example.jpg|Õ†Õ¯Õ¡Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶2',
+ 'wikieditor-toolbar-tool-newline' => 'Õ†Õ¸Ö€ Õ¿Õ¸Õ²',
+ 'wikieditor-toolbar-tool-table' => 'Ô±Õ²ÕµÕ¸Ö‚Õ½Õ¡Õ¯',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! Õ¾Õ¥Ö€Õ¶Õ¡Õ£Õ«Ö€ 1
+! Õ¾Õ¥Ö€Õ¶Õ¡Õ£Õ«Ö€ 2
+! Õ¾Õ¥Ö€Õ¶Õ¡Õ£Õ«Ö€ 3
+|-
+| Õ¿Õ¸Õ² 1, Õ½ÕµÕ¸Ö‚Õ¶Õ¡Õ¯ 1
+| Õ¿Õ¸Õ² 1, Õ½ÕµÕ¸Ö‚Õ¶Õ¡Õ¯ 2
+| Õ¿Õ¸Õ² 1, Õ½ÕµÕ¸Ö‚Õ¶Õ¡Õ¯ 3
+|-
+| Õ¿Õ¸Õ² 2, Õ½ÕµÕ¸Ö‚Õ¶Õ¡Õ¯ 1
+| Õ¿Õ¸Õ² 2, Õ½ÕµÕ¸Ö‚Õ¶Õ¡Õ¯ 2
+| Õ¿Õ¸Õ² 2, Õ½ÕµÕ¸Ö‚Õ¶Õ¡Õ¯ 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ÕŽÕ¡Õ¶Õ¤Õ¡Õ¯Õ« Õ¿Õ¥Ö„Õ½Õ¿',
+ 'wikieditor-toolbar-tool-table-example-header' => 'ÕŽÕ¥Ö€Õ¶Õ¡Õ£Ö€Õ« Õ¿Õ¥Ö„Õ½Õ¿',
+ 'wikieditor-toolbar-tool-table-title' => 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ¡Õ²ÕµÕ¸Ö‚Õ½Õ¡Õ¯',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'ÕÕ¸Õ²Õ¥Ö€',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'ÕÕµÕ¸Ö‚Õ¶Õ¡Õ¯Õ¶Õ¥Ö€',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ¾Õ¥Ö€Õ¶Õ¡Õ£Ö€Õ¥Ö€Õ« Õ¿Õ¸Õ²',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'ÔµÕ¦Ö€Õ¡Õ¦Õ¡Ö€Õ¤Õ¥Õ¬ Õ¡Õ²ÕµÕ¸Ö‚Õ½Õ¡Õ¯Õ¨',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Ô±Õ²ÕµÕ¸Ö‚Õ½Õ¡Õ¯Õ¨ Õ¤Õ¡Õ½Õ¡Õ¾Õ¸Ö€Õ¾Õ¸Õ² Õ¡Õ¶Õ¥Õ¬',
+ 'wikieditor-toolbar-tool-table-example' => 'ÕŽÕ¡Õ¶Õ¤Õ¡Õ¯Õ« Õ¿Õ¥Ö„Õ½Õ¿',
+ 'wikieditor-toolbar-tool-table-preview' => 'Õ†Õ¡Õ­Õ¡Õ¤Õ«Õ¿Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-tool-table-insert' => 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Ô²Õ¥Õ¯Õ¡Õ¶Õ¥Õ¬',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Ô±ÕµÕ½ Õ¥Ö€Õ¯Õ­Õ¸Õ½Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ´Õ«Õ»Õ¸ÖÕ¸Õ¾ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ¹Õ§ $1 Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ«Ö Õ¡Õ¾Õ¥Õ¬ Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯ Õ¸Ö‚Õ¶Õ¥ÖÕ¸Õ² Õ¡Õ²ÕµÕ¸Ö‚Õ½Õ¡Õ¯ Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬Ö‰',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Ô´Õ¸Ö‚Ö„ Õ¹Õ¥Ö„ Õ¶Õ·Õ¥Õ¬ Õ¿Õ¸Õ²Õ¥Ö€Õ« Õ¯Õ¡Õ´ Õ½ÕµÕ¸Ö‚Õ¶Õ¡Õ¯Õ¶Õ¥Ö€Õ« Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¥Õ¬Õ« Ö„Õ¡Õ¶Õ¡Õ¯Ö‰',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ô´Õ¸Ö‚Ö„ Õ¹Õ¥Ö„ Õ¯Õ¡Ö€Õ¸Õ² Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ¿Õ¸Õ²Õ¥Ö€Õ« Õ¯Õ¡Õ´ Õ½ÕµÕ¸Ö‚Õ¶Õ¡Õ¯Õ¶Õ¥Ö€Õ« Õ¦Ö€Õ¸ÕµÕ¡Õ¯Õ¡Õ¶ Ö„Õ¡Õ¶Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ¡Õ²ÕµÕ¸Ö‚Õ½Õ¡Õ¯Ö‰',
+ 'wikieditor-toolbar-tool-replace' => 'ÕˆÖ€Õ¸Õ¶Õ¸Ö‚Õ´ Ö‡ ÖƒÕ¸Õ­Õ¡Ö€Õ«Õ¶Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-tool-replace-title' => 'ÕˆÖ€Õ¸Õ¶Õ¸Ö‚Õ´ Ö‡ ÖƒÕ¸Õ­Õ¡Ö€Õ«Õ¶Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-tool-replace-search' => 'Որոնել․',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Եվ փոխարինել․',
+ 'wikieditor-toolbar-tool-replace-case' => 'Õ€Õ¡Õ´Õ¨Õ¶Õ¯Õ¸Ö‚Õ´ Õ¨Õ½Õ¿ Õ¿Õ¡Õ¼Õ¡Õ·Õ¡Ö€Õ« (Õ´Õ¥Õ®Õ¡Õ¿Õ¡Õ¼/ÖƒÕ¸Ö„Ö€Õ¡Õ¿Õ¡Õ¼)',
+ 'wikieditor-toolbar-tool-replace-regex' => 'ÕˆÖ€Õ¸Õ¶Õ´Õ¡Õ¶ Õ¿Õ¸Õ²Õ¨ Õ¨Õ¶Õ¯Õ¡Õ¬Õ¥Õ¬ Õ¸Ö€ÕºÕ¥Õ½ regular expression',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Ô³Õ¿Õ¶Õ¥Õ¬ Õ°Õ¡Õ»Õ¸Ö€Õ¤Õ¨',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Õ“Õ¸Õ­Õ¡Ö€Õ«Õ¶Õ¥Õ¬ Õ°Õ¡Õ»Õ¸Ö€Õ¤Õ¨',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Õ“Õ¸Õ­Õ¡Ö€Õ«Õ¶Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨',
+ 'wikieditor-toolbar-tool-replace-close' => 'Ô²Õ¥Õ¯Õ¡Õ¶Õ¥Õ¬',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'ÕÕ¥Ö€ Õ¸Ö€Õ¸Õ¶Õ´Õ¡Õ¶Õ¨ Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¸Õ² Õ¡Ö€Õ¤ÕµÕ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€ Õ¹Õ¥Õ¶ Õ£Õ¿Õ¶Õ¾Õ¥Õ¬Ö‰',
+ 'wikieditor-toolbar-tool-replace-success' => 'Ô¿Õ¡Õ¿Õ¡Ö€Õ¾Õ¥Õ¬ Õ§ $1 ÖƒÕ¸Õ­Õ¡Ö€Õ«Õ¶Õ¸Ö‚Õ´Ö‰',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ô´Õ¸Ö‚Ö„ Õ¸Ö€Õ¸Õ¶Õ¥Õ¬Õ¸Ö‚ Õ¸Ö€Ö‡Õ§ Õ¢Õ¡Õ¶ Õ¹Õ¥Ö„ Õ¶Õ·Õ¥Õ¬Ö‰',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'ÕÕ¥Ö€ Õ¶Õ·Õ¡Õ® regular expression-Õ¨ Õ½Õ­Õ¡Õ¬ է․ $1',
+ 'wikieditor-toolbar-section-characters' => 'Õ€Õ¡Õ¿Õ¸Ö‚Õ¯ Õ¶Õ·Õ¡Õ¶Õ¶Õ¥Ö€',
+ 'wikieditor-toolbar-characters-page-latin' => 'Ô¼Õ¡Õ¿Õ«Õ¶Õ¥Ö€Õ¥Õ¶',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Ô¼Õ¡Õ¿Õ«Õ¶Õ¥Ö€Õ¥Õ¶ Õ¨Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¾Õ¡Õ®',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'ÕÕ«Õ´Õ¾Õ¸Õ¬Õ¶Õ¥Ö€',
+ 'wikieditor-toolbar-characters-page-greek' => 'Õ€Õ¸Ö‚Õ¶Õ¥Ö€Õ¥Õ¶',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Ô¿Õ«Ö€Õ«Õ¬Õ«ÖÕ¡',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Ô±Ö€Õ¡Õ¢Õ¥Ö€Õ¥Õ¶',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'ÔµÕ¢Ö€Õ¡ÕµÕ¥Ö€Õ¥Õ¶',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Ô²Õ¥Õ¶Õ£Õ¡Õ¬Õ¥Ö€Õ¥Õ¶',
+ 'wikieditor-toolbar-characters-page-telugu' => 'ÕÕ¥Õ¬Õ¸Ö‚Õ£Õ¸Ö‚',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'ÕÕ«Õ¶Õ°Õ¡Õ¬Õ¥Ö€Õ¥Õ¶',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Ô³Õ¸Ö‚Õ»Õ¡Ö€Õ¡Õ¿Õ«',
+ 'wikieditor-toolbar-section-help' => 'Õ•Õ£Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶',
+ 'wikieditor-toolbar-help-heading-description' => 'Õ†Õ¯Õ¡Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Ô»Õ¶Õ¹ Õ¥Ö„ Õ°Õ¡Õ¾Õ¡Ö„Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-help-heading-result' => 'Ô»Õ¶Õ¹ Õ¥Ö„ Õ½Õ¿Õ¡Õ¶Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-help-page-format' => 'ÕÖ‡Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-help-page-link' => 'Õ€Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€',
+ 'wikieditor-toolbar-help-page-heading' => 'ÕŽÕ¥Ö€Õ¶Õ¡Õ£Ö€Õ¥Ö€',
+ 'wikieditor-toolbar-help-page-list' => 'Õ‘Õ¡Õ¶Õ¯Õ¥Ö€',
+ 'wikieditor-toolbar-help-page-file' => 'Õ†Õ«Õ·Ö„Õ¥Ö€',
+ 'wikieditor-toolbar-help-page-reference' => 'Ô¾Õ¡Õ¶Õ¸Õ©Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€',
+ 'wikieditor-toolbar-help-page-discussion' => 'Õ”Õ¶Õ¶Õ¡Ö€Õ¯Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Õ‡Õ¥Õ²Õ¡Õ¿Õ¡Õ¼',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Õ‡Õ¥Õ²Õ¡Õ¿Õ¡Õ¼ Õ¿Õ¥Ö„Õ½Õ¿''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Õ‡Õ¥Õ²Õ¡Õ¿Õ¡Õ¼ Õ¿Õ¥Ö„Õ½Õ¿</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Ô¹Õ¡Õ¾Õ¡Õ¿Õ¡Õ¼',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Ô¹Õ¡Õ¾Õ¡Õ¿Õ¡Õ¼ Õ¿Õ¥Ö„Õ½Õ¿'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Ô¹Õ¡Õ¾Õ¡Õ¿Õ¡Õ¼ Õ¿Õ¥Ö„Õ½Õ¿</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Ô¹Õ¡Õ¾Õ¡Õ¿Õ¡Õ¼ Ö‡ Õ·Õ¥Õ²Õ¡Õ¿Õ¡Õ¼',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Ô¹Õ¡Õ¾Õ¡Õ¿Õ¡Õ¼ Ö‡ Õ·Õ¥Õ²Õ¡Õ¿Õ¡Õ¼ Õ¿Õ¥Ö„Õ½Õ¿'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Ô¹Õ¡Õ¾Õ¡Õ¿Õ¡Õ¼ Ö‡ Õ·Õ¥Õ²Õ¡Õ¿Õ¡Õ¼ Õ¿Õ¥Ö„Õ½Õ¿</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Õ†Õ¥Ö€Ö„Õ«Õ¶ Õ°Õ²Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Ô·Õ»Õ« Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´|Õ°Õ²Õ´Õ¡Õ¶ Õ¿Õ¥Ö„Õ½Õ¿]]<br />[[Ô·Õ»Õ« Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Õ°Õ²Õ´Õ¡Õ¶ Õ¿Õ¥Ö„Õ½Õ¿</a><br /><a href='#'>Ô·Õ»Õ« Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ô±Ö€Õ¿Õ¡Ö„Õ«Õ¶ Õ°Õ²Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Õ€Õ²Õ´Õ¡Õ¶ Õ¿Õ¥Ö„Õ½Õ¿]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Õ€Õ²Õ´Õ¡Õ¶ Õ¿Õ¥Ö„Õ½Õ¿</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2-Ö€Õ¤ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ« Õ¾Õ¥Ö€Õ¶Õ¡Õ£Õ«Ö€',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== ÕŽÕ¥Ö€Õ¶Õ¡Õ£Ö€Õ« Õ¿Õ¥Ö„Õ½Õ¿ ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>ÕŽÕ¥Ö€Õ¶Õ¡Õ£Ö€Õ« Õ¿Õ¥Ö„Õ½Õ¿</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3-Ö€Õ¤ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ« Õ¾Õ¥Ö€Õ¶Õ¡Õ£Õ«Ö€',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== ÕŽÕ¥Ö€Õ¶Õ¡Õ£Ö€Õ« Õ¿Õ¥Ö„Õ½Õ¿ ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>ÕŽÕ¥Ö€Õ¶Õ¡Õ£Ö€Õ« Õ¿Õ¥Ö„Õ½Õ¿</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4-Ö€Õ¤ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ« Õ¾Õ¥Ö€Õ¶Õ¡Õ£Õ«Ö€',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== ÕŽÕ¥Ö€Õ¶Õ¡Õ£Ö€Õ« Õ¿Õ¥Ö„Õ½Õ¿ ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>ÕŽÕ¥Ö€Õ¶Õ¡Õ£Ö€Õ« Õ¿Õ¥Ö„Õ½Õ¿</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5-Ö€Õ¤ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ« Õ¾Õ¥Ö€Õ¶Õ¡Õ£Õ«Ö€',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== ÕŽÕ¥Ö€Õ¶Õ¡Õ£Ö€Õ« Õ¿Õ¥Ö„Õ½Õ¿ =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>ÕŽÕ¥Ö€Õ¶Õ¡Õ£Ö€Õ« Õ¿Õ¥Ö„Õ½Õ¿</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Õ‰Õ°Õ¡Õ´Õ¡Ö€Õ¡Õ¯Õ¡Õ¬Õ¡Õ® ÖÕ¡Õ¶Õ¯',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Õ‘Õ¡Õ¶Õ¯Õ« Õ¿Õ¡Ö€Ö€<br />* Õ‘Õ¡Õ¶Õ¯Õ« Õ¿Õ¡Ö€Ö€',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Õ‘Õ¡Õ¶Õ¯Õ« Õ¿Õ¡Ö€Ö€</li><li>Õ‘Õ¡Õ¶Õ¯Õ« Õ¿Õ¡Ö€Ö€</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Õ€Õ¡Õ´Õ¡Ö€Õ¡Õ¯Õ¡Õ¬Õ¡Õ® ÖÕ¡Õ¶Õ¯',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Õ‘Õ¡Õ¶Õ¯Õ« Õ¿Õ¡Ö€Ö€<br /># Õ‘Õ¡Õ¶Õ¯Õ« Õ¿Õ¡Ö€Ö€',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Õ‘Õ¡Õ¶Õ¯Õ« Õ¿Õ¡Ö€Ö€</li><li>Õ‘Õ¡Õ¶Õ¯Õ« Õ¿Õ¡Ö€Ö€</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Õ†Õ¥Ö€Õ¯Õ¡Õ¼Õ¸Ö‚ÖÕ¾Õ¡Õ® Õ¶Õ«Õ·Ö„',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Õ†Õ¯Õ¡Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Õ†Õ¯Õ¡Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Ô¸Õ¶Õ¤Õ¡Ö€Õ±Õ¡Õ¯Õ¥Õ¬' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Õ†Õ¯Õ¡Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Ô¾Õ¡Õ¶Õ¸Õ©Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'ÕÕ¥Ö„Õ½Õ¿ Õ§Õ»Õ¸Ö‚Õ´&lt;ref name="test"&gt;[http://www.example.org Õ€Õ²Õ´Õ¡Õ¶ Õ¿Õ¥Ö„Õ½Õ¿], Õ°Õ¡Õ¾Õ¥Õ¬ÕµÕ¡Õ¬ Õ¿Õ¥Ö„Õ½Õ¿Ö‰&lt;/ref&gt;Ö‰',
+ 'wikieditor-toolbar-help-content-reference-result' => "ÕÕ¥Ö„Õ½Õ¿ Õ§Õ»Õ¸Ö‚Õ´<sup><a href='#'>[1]</a></sup>Ö‰",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Õ†Õ¸Ö‚ÕµÕ¶ Õ®Õ¡Õ¶Õ¸Õ©Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¯Ö€Õ¯Õ¶Õ¡Õ¯Õ« Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¸Ö‚Õ´',
+ 'wikieditor-toolbar-help-content-rereference-result' => "ÕÕ¥Ö„Õ½Õ¿ Õ§Õ»Õ¸Ö‚Õ´<sup><a href='#'>[1]</a></sup>Ö‰",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ®Õ¡Õ¶Õ¸Õ©Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Õ€Õ²Õ´Õ¡Õ¶ Õ¿Õ¥Ö„Õ½Õ¿</a>, Õ°Õ¡Õ¾Õ¥Õ¬ÕµÕ¡Õ¬ Õ¿Õ¥Ö„Õ½Õ¿Ö‰</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ÕÕ¿Õ¸Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¡Õ´Õ½Õ¡Õ©Õ¾Õ¸Õ¾',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Õ„Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Ô±Õ¶Õ¸Ö‚Õ¶</a> (<a href='#' title='{{#special:mytalk}}'>Ö„Õ¶Õ¶Õ¡Ö€Õ¯Õ¸Ö‚Õ´</a>) 15:54, 29 Õ°Õ¸Ö‚Õ¶Õ«Õ½ 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ÕÕ¿Õ¸Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Õ„Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Ô±Õ¶Õ¸Ö‚Õ¶</a> (<a href='#' title='{{#special:mytalk}}'>Ö„Õ¶Õ¶Õ¡Ö€Õ¯Õ¸Ö‚Õ´</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Ô½Õ¸Ö€Ö„Õ«Ö',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'ÕÕ¸Õ¾Õ¸Ö€Õ¡Õ¯Õ¡Õ¶ Õ¿Õ¥Ö„Õ½Õ¿<br />:Ô½Õ¸Ö€Ö„Õ«Ö Õ£Ö€Õ¾Õ¡Õ® Õ¿Õ¥Ö„Õ½Õ¿<br />::Ô½Õ¸Ö€Ö„Õ«Ö Õ£Ö€Õ¾Õ¡Õ® Õ¿Õ¥Ö„Õ½Õ¿',
+ 'wikieditor-toolbar-help-content-indent-result' => 'ÕÕ¸Õ¾Õ¸Ö€Õ¡Õ¯Õ¡Õ¶ Õ¿Õ¥Ö„Õ½Õ¿<dl><dd>Ô½Õ¸Ö€Ö„Õ«Ö Õ£Ö€Õ¾Õ¡Õ® Õ¿Õ¥Ö„Õ½Õ¿<dl><dd>Ô½Õ¸Ö€Ö„Õ«Ö Õ£Ö€Õ¾Õ¡Õ® Õ¿Õ¥Ö„Õ½Õ¿</dd></dl></dd></dl>',
+);
+
+/** Interlingua (Interlingua)
+ * @author McDutchie
+ */
+$messages['ia'] = array(
+ 'wikieditor' => 'Interfacie avantiate de modification de wikitexto',
+ 'wikieditor-desc' => 'Forni un interfacie de modification de wikitexto extensibile con multe modulos a functiones additional',
+ 'wikieditor-wikitext-tab' => 'Wikitexto',
+ 'wikieditor-loading' => 'Carga…',
+ 'wikieditor-preview-preference' => 'Activar le previsualisation latere a latere',
+ 'wikieditor-preview-tab' => 'Previsualisation',
+ 'wikieditor-preview-changes-tab' => 'Modificationes',
+ 'wikieditor-preview-loading' => 'Cargamento...',
+ 'wikieditor-previewDialog-preference' => 'Activar le dialogo de previsualisation',
+ 'wikieditor-previewDialog-tab' => 'Previsualisation',
+ 'wikieditor-previewDialog-loading' => 'Cargamento...',
+ 'wikieditor-publish-preference' => 'Activar publication passo a passo',
+ 'wikieditor-publish-button-publish' => 'Publicar',
+ 'wikieditor-publish-button-cancel' => 'Cancellar',
+ 'wikieditor-publish-dialog-title' => 'Publicar in {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Summario del modification (describe brevemente le cambios que tu ha facite):',
+ 'wikieditor-publish-dialog-minor' => 'Modification minor',
+ 'wikieditor-publish-dialog-watch' => 'Observar iste pagina',
+ 'wikieditor-publish-dialog-publish' => 'Publicar',
+ 'wikieditor-publish-dialog-goback' => 'Retornar',
+ 'wikieditor-template-editor-preference' => 'Permitter le modification de patronos wiki con formularios',
+ 'wikieditor-template-editor-dialog-title' => 'Modificar patrono',
+ 'wikieditor-template-editor-dialog-submit' => 'Actualisar',
+ 'wikieditor-template-editor-dialog-cancel' => 'Cancellar',
+ 'wikieditor-templates-preference' => 'Activar patronos plicabile',
+ 'wikieditor-toc-preference' => 'Activar le tabula de contento navigabile',
+ 'wikieditor-toc-show' => 'Revelar contento',
+ 'wikieditor-toc-hide' => 'Celar contento',
+ 'wikieditor-toolbar' => 'Instrumentario de modification',
+ 'wikieditor-toolbar-desc' => 'Barra con instrumentos de modification con augmento de usabilitate',
+ 'wikieditor-toolbar-preference' => 'Activar le instrumentario de modification meliorate',
+ 'wikieditor-toolbar-dialogs-preference' => 'Activar dialogos pro inserer ligamines, tabulas e plus',
+ 'wikieditor-toolbar-hidesig' => 'Celar le button de signatura in paginas in le spatio de nomines principal',
+ 'wikieditor-toolbar-loading' => 'Cargamento in curso…',
+ 'wikieditor-toolbar-tool-bold' => 'Grasse',
+ 'wikieditor-toolbar-tool-bold-example' => 'Texto grasse',
+ 'wikieditor-toolbar-tool-italic' => 'Italic',
+ 'wikieditor-toolbar-tool-italic-example' => 'Texto italic',
+ 'wikieditor-toolbar-tool-ilink' => 'Ligamine interne',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titulo del ligamine',
+ 'wikieditor-toolbar-tool-xlink' => 'Ligamine externe (non oblida le prefixo http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com titulo del ligamine',
+ 'wikieditor-toolbar-tool-link' => 'Ligamine',
+ 'wikieditor-toolbar-tool-link-title' => 'Inserer ligamine',
+ 'wikieditor-toolbar-tool-link-int' => 'A un pagina wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Titulo del pagina:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titulo o URL del pagina',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Texto del ligamine:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Entra le texto que debe esser monstrate',
+ 'wikieditor-toolbar-tool-link-ext' => 'A un pagina web externe',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL del ligamine:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Texto del ligamine:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Inserer ligamine',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Cancellar',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Pagina existente',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Pagina non existente',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Titulo invalide',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ligamine externe',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Verifica existentia del pagina...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Le titulo que tu specificava es invalide.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Le URL que tu specificava pare esser intendite como ligamine a un altere pagina wiki.
+Vole tu facer lo un ligamine interne?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Ligamine interne',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ligamine externe',
+ 'wikieditor-toolbar-tool-link-empty' => 'Tu ha entrate nihil a que ligar.',
+ 'wikieditor-toolbar-tool-file' => 'File incastrate',
+ 'wikieditor-toolbar-tool-file-example' => 'Exemplo.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referentia',
+ 'wikieditor-toolbar-tool-reference-example' => 'Inserer hic le texto del nota',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Cancellar',
+ 'wikieditor-toolbar-tool-reference-title' => 'Inserer un referentia',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Inserer',
+ 'wikieditor-toolbar-tool-reference-text' => 'Texto del referentia',
+ 'wikieditor-toolbar-tool-signature' => 'Signatura con data e hora',
+ 'wikieditor-toolbar-section-advanced' => 'Avantiate',
+ 'wikieditor-toolbar-tool-heading' => 'Titulo',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivello 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivello 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivello 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivello 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivello 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Texto del titulo',
+ 'wikieditor-toolbar-group-format' => 'Formato',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista a punctos',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Elemento de lista a punctos',
+ 'wikieditor-toolbar-tool-olist' => 'Lista numerate',
+ 'wikieditor-toolbar-tool-olist-example' => 'Elemento de lista numerate',
+ 'wikieditor-toolbar-tool-indent' => 'Indentation',
+ 'wikieditor-toolbar-tool-indent-example' => 'Linea indentate',
+ 'wikieditor-toolbar-tool-nowiki' => 'Nulle formatation wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Insere texto non formatate hic',
+ 'wikieditor-toolbar-tool-redirect' => 'Redirection',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nomine del pagina de destination',
+ 'wikieditor-toolbar-tool-big' => 'Grande',
+ 'wikieditor-toolbar-tool-big-example' => 'Texto grande',
+ 'wikieditor-toolbar-tool-small' => 'Micre',
+ 'wikieditor-toolbar-tool-small-example' => 'Texto micre',
+ 'wikieditor-toolbar-tool-superscript' => 'Superscripto',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Texto in superscripto',
+ 'wikieditor-toolbar-tool-subscript' => 'Subscripto',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Texto in subscripto',
+ 'wikieditor-toolbar-group-insert' => 'Inserer',
+ 'wikieditor-toolbar-tool-gallery' => 'Galeria de imagines',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Exemplo.jpg|Legenda1
+$1:Exemplo.jpg|Legenda2',
+ 'wikieditor-toolbar-tool-newline' => 'Nove linea',
+ 'wikieditor-toolbar-tool-table' => 'Tabella',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! capite 1
+! capite 2
+! capite 3
+|-
+| linea 1, cellula 1
+| linea 1, cellula 2
+| linea 1, cellula 3
+|-
+| linea 2, cellula 1
+| linea 2, cellula 2
+| linea 2, cellula 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Texto del cellula',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Texto del capite',
+ 'wikieditor-toolbar-tool-table-title' => 'Inserer tabella',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Lineas',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Columnas',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Includer linea de capite',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stilo con bordos',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Render tabella assortibile',
+ 'wikieditor-toolbar-tool-table-example' => 'Texto del cellula',
+ 'wikieditor-toolbar-tool-table-preview' => 'Previsualisation',
+ 'wikieditor-toolbar-tool-table-insert' => 'Inserer',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Cancellar',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Inserer un tabula con plus de $1 cellulas non es possibile con iste dialogo.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Tu non ha entrate un numero valide de lineas o columnas.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Tu non pote inserer un tabula con zero lineas o columnas.',
+ 'wikieditor-toolbar-tool-replace' => 'Cercar e reimplaciar',
+ 'wikieditor-toolbar-tool-replace-title' => 'Cercar e reimplaciar',
+ 'wikieditor-toolbar-tool-replace-search' => 'Cercar:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Reimplaciar per:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Distinguer inter majusculas e minusculas',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Tractar le catena de recerca como un expression regular',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Cercar sequente',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Reimplaciar sequente',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Reimplaciar toto',
+ 'wikieditor-toolbar-tool-replace-close' => 'Clauder',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Tu recerca non ha producite resultatos.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 reimplaciamentos facite.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Tu non entrava texto a cercar.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Le expression regular que tu entrava es invalide: $1',
+ 'wikieditor-toolbar-section-characters' => 'Characteres special',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin extendite',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbolos',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grec',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cyrillic',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabe',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persiano',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebree',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengali',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thailandese',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laotiano',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Cambodgiano',
+ 'wikieditor-toolbar-section-help' => 'Adjuta',
+ 'wikieditor-toolbar-help-heading-description' => 'Description',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Entrata',
+ 'wikieditor-toolbar-help-heading-result' => 'Resultato',
+ 'wikieditor-toolbar-help-page-format' => 'Formatation',
+ 'wikieditor-toolbar-help-page-link' => 'Ligamines',
+ 'wikieditor-toolbar-help-page-heading' => 'Titulos',
+ 'wikieditor-toolbar-help-page-list' => 'Listas',
+ 'wikieditor-toolbar-help-page-file' => 'Files',
+ 'wikieditor-toolbar-help-page-reference' => 'Referentias',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discussion',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Italic',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Texto italic''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Texto italic</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Grasse',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Texto grasse'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Texto grasse</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Grasse &amp; italic',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Texto grasse &amp; italic'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Texto grasse &amp; italic</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Ligamine interne',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Titulo del pagina|Texto del ligamine]]<br />[[Titulo del pagina]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Texto del ligamine</a><br /><a href='#'>Titulo del pagina</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ligamine externe',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Texto del ligamine]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Texto del ligamine</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Titulo del secunde nivello',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Texto del titulo ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Texto del titulo</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Titulo del tertie nivello',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Texto del titulo ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Texto del titulo</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Titulo del quarte nivello',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Texto del titulo ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Texto del titulo</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Titulo del quinte nivello',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Texto del titulo =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Texto del titulo</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista a punctos',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Elemento del lista<br />* Elemento del lista',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Elemento del lista</li><li>Elemento del lista</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista numerate',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Elemento del lista<br /># Elemento del lista',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Elemento del lista</li><li>Elemento del lista</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'File incastrate',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Exemplo.png|thumb|Texto del legenda]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Texto del legenda' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Texto del legenda</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referentia',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Texto del pagina.&lt;ref name="test"&gt;[http://www.example.org Texto del ligamine], texto additional.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Texto del pagina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Uso additional del mesme referentia',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Texto del pagina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Monstrar referentias',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Texto del ligamine</a>, texto additional.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Signatura con data e hora',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nomine de usator</a> (<a href='#' title='{{#special:mytalk}}'>discussion</a>) 15:54, 10 junio 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signatura',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nomine de usator</a> (<a href='#' title='{{#special:mytalk}}'>discussion</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indentation',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Texto normal<br />:Texto indentate<br />::Texto indentate',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Texto normal<dl><dd>Texto indentate<dl><dd>Texto indentate</dd></dl></dd></dl>',
+);
+
+/** Indonesian (Bahasa Indonesia)
+ * @author Bennylin
+ * @author Farras
+ * @author Irwangatot
+ * @author IvanLanin
+ * @author Kenrick95
+ */
+$messages['id'] = array(
+ 'wikieditor' => 'Antarmuka penyuntingan teks wiki canggih',
+ 'wikieditor-desc' => 'Menyediakan antarmuka penyuntingan teks wiki yang lebih berkembang dan banyak modul penyedia fitur',
+ 'wikieditor-wikitext-tab' => 'TeksWiki',
+ 'wikieditor-loading' => 'Pembebanan',
+ 'wikieditor-preview-preference' => 'Aktifkan pratayang bersisian',
+ 'wikieditor-preview-tab' => 'Pratayang',
+ 'wikieditor-preview-changes-tab' => 'Perubahan',
+ 'wikieditor-preview-loading' => 'Mengunggah...',
+ 'wikieditor-previewDialog-preference' => 'Izinkan kotak pratayang',
+ 'wikieditor-previewDialog-tab' => 'Pratayang',
+ 'wikieditor-previewDialog-loading' => 'Mengunggah...',
+ 'wikieditor-publish-preference' => 'Aktifkan penerbitan langkah demi langkah',
+ 'wikieditor-publish-button-publish' => 'Terbitkan',
+ 'wikieditor-publish-button-cancel' => 'Batalkan',
+ 'wikieditor-publish-dialog-title' => 'Terbitkan ke',
+ 'wikieditor-publish-dialog-summary' => 'Ringkasan suntingan (jelaskan dengan ringkas perubahan yang Anda buat):',
+ 'wikieditor-publish-dialog-minor' => 'Suntingan kecil',
+ 'wikieditor-publish-dialog-watch' => 'Pantau halaman ini',
+ 'wikieditor-publish-dialog-publish' => 'Terbitkan',
+ 'wikieditor-publish-dialog-goback' => 'Kembali',
+ 'wikieditor-template-editor-preference' => 'Aktifkan penyuntingan berbasis form dari templat wiki',
+ 'wikieditor-template-editor-dialog-title' => 'Sunting templat',
+ 'wikieditor-template-editor-dialog-submit' => 'Perbarui',
+ 'wikieditor-template-editor-dialog-cancel' => 'Batalkan',
+ 'wikieditor-templates-preference' => 'Aktifkan fungsi menutup templat',
+ 'wikieditor-toc-preference' => 'Daftar isi yang dapat dinavigasi',
+ 'wikieditor-toc-show' => 'Tampilkan isi',
+ 'wikieditor-toc-hide' => 'Sembunyikan isi',
+ 'wikieditor-toolbar' => 'Bilah alat penyuntingan',
+ 'wikieditor-toolbar-desc' => 'Bilah alat penyuntingan dengan kebergunaan yang ditingkatkan',
+ 'wikieditor-toolbar-preference' => 'Aktifkan bilah alat penyuntingan yang telah ditingkatkan',
+ 'wikieditor-toolbar-dialogs-preference' => 'Aktifkan bantuan untuk menambahkan pranala, tabel dan lainnya',
+ 'wikieditor-toolbar-hidesig' => 'Sembunyikan tombol tanda tangan dari halaman pada ruang nama utama',
+ 'wikieditor-toolbar-loading' => 'Mengunggah...',
+ 'wikieditor-toolbar-tool-bold' => 'Tebal',
+ 'wikieditor-toolbar-tool-bold-example' => 'Teks tebal',
+ 'wikieditor-toolbar-tool-italic' => 'Miring',
+ 'wikieditor-toolbar-tool-italic-example' => 'Teks miring',
+ 'wikieditor-toolbar-tool-ilink' => 'Pranala internal',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Judul pranala',
+ 'wikieditor-toolbar-tool-xlink' => 'Pranala luar (ingat prefiks http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.contoh.com judul pranala',
+ 'wikieditor-toolbar-tool-link' => 'Pranala',
+ 'wikieditor-toolbar-tool-link-title' => 'Masukkan pranala',
+ 'wikieditor-toolbar-tool-link-int' => 'Ke halaman wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Judul pranala:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Masukkan judul atau URL halaman',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Teks pranala:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Masukkan teks yang harus ditampilkan',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ke halaman web eksternal',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL pranala:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Teks pranala',
+ 'wikieditor-toolbar-tool-link-insert' => 'Masukkan pranala',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Batalkan',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Halaman sudah ada',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Halaman tidak ada',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Judul tidak sah',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Pranala luar',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Memeriksa keberadaan halaman...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Judul yang Anda berikan tidak sah.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL yang Anda berikan tampaknya merupakan pranala ke halaman wiki lain.
+Apakah Anda ingin membuatnya menjadi pranala internal?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Pranala internal',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Pranala luar',
+ 'wikieditor-toolbar-tool-link-empty' => 'Anda tidak memasukkan apa pun untuk ditautkan.',
+ 'wikieditor-toolbar-tool-file' => 'Sisipkan berkas',
+ 'wikieditor-toolbar-tool-file-example' => 'Contoh.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referensi',
+ 'wikieditor-toolbar-tool-reference-example' => 'Sisipkan teks catatan kaki di sini',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Batalkan',
+ 'wikieditor-toolbar-tool-reference-title' => 'Masukkan referensi',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Masukkan',
+ 'wikieditor-toolbar-tool-reference-text' => 'Teks referensi',
+ 'wikieditor-toolbar-tool-signature' => 'Tanda tangan dan waktu',
+ 'wikieditor-toolbar-section-advanced' => 'Lanjutan',
+ 'wikieditor-toolbar-tool-heading' => 'Judul',
+ 'wikieditor-toolbar-tool-heading-1' => 'Tingkat 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Tingkat 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Tingkat 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Tingkat 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Tingkat 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Teks judul',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Daftar dengan poin',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Baris isi',
+ 'wikieditor-toolbar-tool-olist' => 'Daftar bernomor',
+ 'wikieditor-toolbar-tool-olist-example' => 'Baris isi',
+ 'wikieditor-toolbar-tool-indent' => 'Lekukan',
+ 'wikieditor-toolbar-tool-indent-example' => 'Baris terlekuk',
+ 'wikieditor-toolbar-tool-nowiki' => 'Tidak ada pemformatan wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Masukkan teks yang tidak akan diformat di sini',
+ 'wikieditor-toolbar-tool-redirect' => 'Pengalihan',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nama halaman tujuan',
+ 'wikieditor-toolbar-tool-big' => 'Besar',
+ 'wikieditor-toolbar-tool-big-example' => 'Teks besar',
+ 'wikieditor-toolbar-tool-small' => 'Kecil',
+ 'wikieditor-toolbar-tool-small-example' => 'Teks kecil',
+ 'wikieditor-toolbar-tool-superscript' => 'Superscript',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Teks superscript',
+ 'wikieditor-toolbar-tool-subscript' => 'Subscript',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Teks subscript',
+ 'wikieditor-toolbar-group-insert' => 'Masukkan',
+ 'wikieditor-toolbar-tool-gallery' => 'Galeri gambar',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Contoh.jpg|Judul1
+$1:Contoh.jpg|Judul2',
+ 'wikieditor-toolbar-tool-newline' => 'Baris baru',
+ 'wikieditor-toolbar-tool-table' => 'Tabel',
+ 'wikieditor-toolbar-tool-table-example-old' => ' -
+! judul bagian 1
+! judul bagian 2
+! judul bagian 3
+|-
+| baris 1, sel 1
+| baris 1, sel 2
+| baris 1, sel 3
+|-
+| baris 2, sel 1
+| baris 2, sel 2
+| baris 2, sel 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Teks sel',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Teks judul',
+ 'wikieditor-toolbar-tool-table-title' => 'Masukkan tabel',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Baris',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolom',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Sertakan baris',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Gaya dengan bingkai',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Buat tabel dapat diurutkan',
+ 'wikieditor-toolbar-tool-table-example' => 'Teks sel',
+ 'wikieditor-toolbar-tool-table-preview' => 'Pratayang',
+ 'wikieditor-toolbar-tool-table-insert' => 'Masukkan',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Batalkan',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Anda tidak dapat membuat tabel dengan jumlah sel yang lebih dari $1',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Anda tidak memasukkan jumlah kolom atau baris yang sah',
+ 'wikieditor-toolbar-tool-table-zero' => 'Anda tidak dapat memasukkan tabel dengan jumlah baris atau kolom nol.',
+ 'wikieditor-toolbar-tool-replace' => 'Cari dan gantikan',
+ 'wikieditor-toolbar-tool-replace-title' => 'Cari dan ganti',
+ 'wikieditor-toolbar-tool-replace-search' => 'Cari:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Ganti dengan:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Cocokkan huruf besar/kecil',
+ 'wikieditor-toolbar-tool-replace-regex' => "Perlakukan string pencarian sebagai ''regular expression (regex)''",
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Cari berikutnya',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Ganti berikutnya',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Ganti semua',
+ 'wikieditor-toolbar-tool-replace-close' => 'Tutup',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Pencarian Anda tidak membuahkan hasil.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Terjadi $1 penggantian.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Anda tidak memasukan apa pun untuk di pencarian.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Kalimat biasa yang Anda masukkan tidak sah: $1',
+ 'wikieditor-toolbar-section-characters' => 'Karakter spesial',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Ekstensi Latin',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simbol',
+ 'wikieditor-toolbar-characters-page-greek' => 'Yunani',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Sirilik',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arab',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persia',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ibrani',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Bantuan',
+ 'wikieditor-toolbar-help-heading-description' => 'Keterangan',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Yang Anda ketikkan',
+ 'wikieditor-toolbar-help-heading-result' => 'Hasil tampilan',
+ 'wikieditor-toolbar-help-page-format' => 'Pemformatan',
+ 'wikieditor-toolbar-help-page-link' => 'Pranala',
+ 'wikieditor-toolbar-help-page-heading' => 'Judul',
+ 'wikieditor-toolbar-help-page-list' => 'Daftar',
+ 'wikieditor-toolbar-help-page-file' => 'Berkas',
+ 'wikieditor-toolbar-help-page-reference' => 'Referensi',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskusi',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Cetak miring',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Teks miring''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Teks miring</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Tebal',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Teks tebal'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Teks tebal</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Tebal &amp; miring',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Teks tebal &amp; miring'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Teks tebal &amp; miring</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Pranala internal',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Judul halaman|Judul pranala]]<br />[[Judul halaman]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Label pranala</a><br /><a href='#'>Judul halaman</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Pranala luar',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.contoh.org Label pranala]<br />[http://www.contoh.org]<br />http://www.contoh.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Label pranala</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.contoh.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Judul bagian tingkat kedua',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Teks judul ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Teks judul</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Judul bagian tingkat ketiga',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Teks judul ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Teks judul</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Judul bagian tingkat keempat',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Teks judul ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Teks judul</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Judul bagian tingkat kelima',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Teks judul =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Teks judul</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Daftar berpoin',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Isi daftar<br />* Isi daftar',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Isi daftar</li><li>Isi daftar</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Daftar bernomor',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Isi daftar<br /># Isi daftar',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Isi daftar</li><li>Isi daftar</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Menyisipkan berkas',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Contoh.png|thumb|Teks judul gambar]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Teks judul gambar' class='image' href='/wiki/Berkas:Wiki.png'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Perbesar' class='internal' href='/wiki/Berkas:Wiki.png'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Teks judul gambar</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referensi',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Teks halaman.&lt;ref name="test"&gt;[http://www.contoh.org Teks pranala], teks tambahan.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Teks halaman.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Penggunaan kembali referensi yang sama',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Teks halaman.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Menampilkan referensi',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.contoh.org' class='external text' href='#'>Teks pranala</a>, teks tambahan.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Tanda tangan dengan waktu',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Name pengguna</a> (<a href='#' title='{{#special:mytalk}}'>bicara</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Tanda tangan',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nama pengguna</a> (<a href='#' title='{{#special:mytalk}}'>bicara</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Inden',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Teks biasa<br />:Teks inden<br />::Teks inden',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Teks normal<dl><dd>Teks inden<dl><dd>Teks inden</dd></dl></dd></dl>',
+);
+
+/** Igbo (Igbo)
+ * @author Ukabia
+ */
+$messages['ig'] = array(
+ 'wikieditor-loading' => 'Ọ na biá',
+ 'wikieditor-preview-changes-tab' => 'Ihe gbanwere',
+ 'wikieditor-preview-loading' => 'Ọ biágó...',
+ 'wikieditor-previewDialog-tab' => 'Lètú',
+ 'wikieditor-publish-button-publish' => 'Bìpụta',
+ 'wikieditor-publish-button-cancel' => 'Kàchá',
+ 'wikieditor-publish-dialog-minor' => 'Orü ntà',
+ 'wikieditor-publish-dialog-publish' => 'Bìpụta',
+ 'wikieditor-publish-dialog-goback' => 'Gá na àzú',
+ 'wikieditor-template-editor-dialog-title' => 'Rüwa àtụ',
+ 'wikieditor-template-editor-dialog-submit' => 'Dịnwanye mmÄ',
+ 'wikieditor-template-editor-dialog-cancel' => 'Kàchá',
+ 'wikieditor-toc-show' => 'Zí ihe di ímé',
+ 'wikieditor-toc-hide' => 'Zonari ihe di ímé',
+ 'wikieditor-toolbar-loading' => 'Ọ biágó...',
+ 'wikieditor-toolbar-tool-bold' => 'Shí íke',
+ 'wikieditor-toolbar-tool-bold-example' => 'Mkpúrù èdè íke',
+ 'wikieditor-toolbar-tool-italic' => 'Édémédé nsem',
+ 'wikieditor-toolbar-tool-italic-example' => 'Mkpurụ okwu sélénsé',
+ 'wikieditor-toolbar-tool-ilink' => 'Jikodo nke ímé',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Ishi edemede nke jikodo',
+ 'wikieditor-toolbar-tool-link' => 'Jikodo',
+ 'wikieditor-toolbar-tool-link-title' => 'Tìnyé jikodo',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Jikodo URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Jikodo mkpúrù èdè:',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Kàchá',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Ihü dị',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Jikodo di èzí',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Kàchá',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Tìnyé',
+ 'wikieditor-toolbar-tool-heading-1' => 'Ọtú 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Ọtú 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Ọtú 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Ọtú 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Ọtú 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Mkpụrụ édé íshí',
+ 'wikieditor-toolbar-tool-big' => 'Ukwu',
+ 'wikieditor-toolbar-tool-big-example' => 'Mkpụrụ okwu nke ukwu',
+ 'wikieditor-toolbar-tool-small' => 'Ntàkiri',
+ 'wikieditor-toolbar-tool-small-example' => 'Mkpụrụ okwu nke ntàkịrị',
+ 'wikieditor-toolbar-tool-newline' => 'Ãhịrị ohürù',
+ 'wikieditor-toolbar-tool-table' => 'Agada',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Ǹdịlị',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Ogìdì',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Kàchá',
+ 'wikieditor-toolbar-tool-replace-search' => 'Chöwá màkà:',
+ 'wikieditor-toolbar-tool-replace-close' => 'Mèchié',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin dá»rá»',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Nkárí',
+ 'wikieditor-toolbar-characters-page-greek' => 'Greek',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cyrillic',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabiki',
+ 'wikieditor-toolbar-characters-page-persian' => 'Asụsụ Persia',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Asụsụ Hebrew',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Asụsụ Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Asụsụ Laos',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Nkwádo',
+ 'wikieditor-toolbar-help-heading-description' => 'Nkówká ihe ȯ bụ',
+ 'wikieditor-toolbar-help-page-link' => 'Jikodo',
+ 'wikieditor-toolbar-help-page-heading' => 'Ãshí édé',
+ 'wikieditor-toolbar-help-page-list' => 'Ndetu',
+ 'wikieditor-toolbar-help-page-file' => 'Fail',
+ 'wikieditor-toolbar-help-page-discussion' => 'Ãkíkó',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Édémédé nsem',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Shí íke',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Édémédé shírí íké'''",
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Jikodo nke ímé',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Jikodo di èzí',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Édémédé íshí ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Ãshí edemede</h2>',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Édémédé íshí ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Ãshí edemede</h3>',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Édémédé íshí ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Ãshí edemede</h4>',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Édémédé íshí =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Ãshí edemede</h5>',
+ 'wikieditor-toolbar-help-content-signature-description' => 'Ãhà gi',
+ 'wikieditor-toolbar-help-content-indent-description' => 'Tụ atụ',
+);
+
+/** Ingush (ГІалгІай Ğalğaj)
+ * @author Amire80
+ * @author Sapral Mikail
+ */
+$messages['inh'] = array(
+ 'wikieditor-toolbar-characters-page-latin' => 'Лаьтмий',
+ 'wikieditor-toolbar-characters-page-greek' => 'Джелтий',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Цырилиций',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Ӏарбий',
+ 'wikieditor-toolbar-characters-page-persian' => 'Фаьранзий',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Жугтий',
+);
+
+/** Ido (Ido)
+ * @author Malafaya
+ */
+$messages['io'] = array(
+ 'wikieditor-preview-changes-tab' => 'Chanji',
+ 'wikieditor-publish-button-cancel' => 'Anular',
+ 'wikieditor-publish-dialog-minor' => 'Mikra chanjo',
+ 'wikieditor-publish-dialog-watch' => 'Surveyar ca pagino',
+ 'wikieditor-publish-dialog-goback' => 'Retroirar',
+ 'wikieditor-template-editor-dialog-submit' => 'Aktualigar',
+ 'wikieditor-template-editor-dialog-cancel' => 'Anular',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiva',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kursiva texto',
+ 'wikieditor-toolbar-tool-ilink' => 'Interna ligilo',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titulo dil ligilo',
+ 'wikieditor-toolbar-tool-xlink' => 'Extera ligilo (memorez la http://-prefixo)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com titulo dil ligilo',
+ 'wikieditor-toolbar-tool-link' => 'Ligilo',
+ 'wikieditor-toolbar-tool-link-title' => 'Adjuntar ligilo',
+ 'wikieditor-toolbar-tool-link-int' => 'A wiki-pagino',
+ 'wikieditor-toolbar-tool-link-insert' => 'Adjuntar ligilo',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Anular',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'La pagino existas',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'La pagino ne existas',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Ne-valida titulo',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Interna ligilo',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Extera ligilo',
+ 'wikieditor-toolbar-tool-file-example' => 'Exemplo.jpg',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Adjuntar',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivelo 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivelo 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivelo 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivelo 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivelo 5',
+ 'wikieditor-toolbar-group-format' => 'Listo',
+ 'wikieditor-toolbar-tool-big' => 'Granda',
+ 'wikieditor-toolbar-tool-big-example' => 'Granda texto',
+ 'wikieditor-toolbar-tool-small' => 'Mikra',
+ 'wikieditor-toolbar-tool-small-example' => 'Mikra texto',
+ 'wikieditor-toolbar-tool-newline' => 'Nova lineo',
+ 'wikieditor-toolbar-tool-table' => 'Tabelo',
+ 'wikieditor-toolbar-tool-table-title' => 'Adjuntar tabelo',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Linei',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolumni',
+ 'wikieditor-toolbar-tool-table-example' => 'Exemplo',
+ 'wikieditor-toolbar-tool-table-preview' => 'Previdar',
+ 'wikieditor-toolbar-tool-table-insert' => 'Adjuntar',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Anular',
+ 'wikieditor-toolbar-tool-replace-search' => 'Serchar:',
+ 'wikieditor-toolbar-tool-replace-close' => 'Klozar',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 remplasigo(i) facita.',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latina',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latina extensita',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simboli',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grekiana',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kirila',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabiana',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persiana',
+ 'wikieditor-toolbar-section-help' => 'Helpo',
+ 'wikieditor-toolbar-help-page-link' => 'Ligili',
+ 'wikieditor-toolbar-help-page-list' => 'Listi',
+ 'wikieditor-toolbar-help-page-file' => 'Arkivi',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Interna ligilo',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Extera ligilo',
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signaturo',
+);
+
+/** Icelandic (Ãslenska)
+ * @author Krun
+ */
+$messages['is'] = array(
+ 'wikieditor-wikitext-tab' => 'Wiki-texti',
+ 'wikieditor-preview-tab' => 'Forskoða',
+ 'wikieditor-preview-changes-tab' => 'Breytingar',
+ 'wikieditor-publish-button-cancel' => 'Hætta við',
+ 'wikieditor-template-editor-dialog-cancel' => 'Hætta við',
+ 'wikieditor-toolbar-tool-bold' => 'Feitletrað',
+ 'wikieditor-toolbar-tool-bold-example' => 'Feitletraður texti',
+ 'wikieditor-toolbar-tool-italic' => 'Skáletrað',
+ 'wikieditor-toolbar-tool-italic-example' => 'Skáletraður texti',
+ 'wikieditor-toolbar-tool-ilink' => 'Innri tengill',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titill tengils',
+ 'wikieditor-toolbar-tool-xlink' => 'Ytri tengill (munið að setja http:// á undan)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com titill tengils',
+ 'wikieditor-toolbar-tool-link' => 'Tengill',
+ 'wikieditor-toolbar-tool-link-title' => 'Setja inn tengil',
+ 'wikieditor-toolbar-tool-link-int' => 'à wiki-síðu',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Síða sem tengja á í, eða vefslóð',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titill síðu eða vefslóð',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Texti til birtingar:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Texti sem á að birta',
+ 'wikieditor-toolbar-tool-link-ext' => 'à ytri vefsíðu',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Hætta við',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Síða er til',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Síðan er ekki til',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Ógildur titill',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Titillinn sem þú gafst upp er ógildur.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Slóðin sem þú gafst upp lítur út eins og hún hafi verið ætluð til að tengja í aðra wiki-síðu.
+Viltu gera hana að innri tengli?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Innri tengill',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ytri tengill',
+ 'wikieditor-toolbar-tool-link-empty' => 'Þú slóst ekki inn neitt til að tengja í.',
+ 'wikieditor-toolbar-tool-file-example' => 'Sýnishorn.jpg',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Hætta við',
+ 'wikieditor-toolbar-tool-newline' => 'Ný lína',
+ 'wikieditor-toolbar-tool-table' => 'Tafla',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! titill 1
+! titill 2
+! titill 3
+|-
+| röð 1, reitur 1
+| röð 1, reitur 2
+| röð 1, reitur 3
+| -
+| röð 2, reitur 1
+| röð 2, reitur 2
+| röð 2, reitur 3',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Raðir',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Dálkar',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Bæta titilröð við',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Hætta við',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Þú slóst ekki inn neitt til að leita að.',
+ 'wikieditor-toolbar-section-characters' => 'Sérstafir',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latneskt',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Aukið latneskt',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Tákn',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grískt',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kýrillískt',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabískt',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persneskt',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebreskt',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalskt',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telúgú',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhalskt',
+ 'wikieditor-toolbar-characters-page-thai' => 'Taílenskt',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laoskt',
+ 'wikieditor-toolbar-section-help' => 'Hjálp',
+ 'wikieditor-toolbar-help-heading-description' => 'Lýsing',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Það sem þú skrifar',
+ 'wikieditor-toolbar-help-heading-result' => 'Það sem kemur út',
+ 'wikieditor-toolbar-help-page-link' => 'Tenglar',
+ 'wikieditor-toolbar-help-page-heading' => 'Fyrirsagnir',
+ 'wikieditor-toolbar-help-page-list' => 'Listar',
+ 'wikieditor-toolbar-help-page-file' => 'Skrár',
+ 'wikieditor-toolbar-help-page-discussion' => 'Umræða',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Skáletrað',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Skáletraður texti''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Skáletraður texti</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Feitletrað',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Feitletraður texti'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Feitletraður texti</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Feit- og skáletrað',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Feit- og skáletraður texti'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<em><strong>Feit- og skáletraður texti</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Innri tengill',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Síðuheiti|Tengiltexti]] <br /> [[Síðuheiti]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Tengiltexti</a> <br /> <a href='#'>Síðuheiti</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ytri tengill',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Tengiltexti]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Tengiltexti</a> <br /> <a href='#' class='external autonumber'>[1]</a> <br /> <a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2. stigs fyrirsögn',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Fyrirsögn ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Fyrirsögn</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3. stigs fyrirsögn',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Fyrirsögn ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Fyrirsögn</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4. stigs fyrirsögn',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Fyrirsögn ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Fyrirsögn</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5. stigs fyrirsögn',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Fyrirsögn =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Fyrirsögn</h5>',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Undirskrift þín auk tímasetningar',
+ 'wikieditor-toolbar-help-content-signature-description' => 'Undirskrift',
+);
+
+/** Italian (Italiano)
+ * @author Aushulz
+ * @author Beta16
+ * @author F. Cosoleto
+ * @author Gianfranco
+ * @author Gliu
+ * @author McDutchie
+ * @author Nemo bis
+ * @author PaoloRomano
+ * @author Una giornata uggiosa '94
+ * @author Vituzzu
+ */
+$messages['it'] = array(
+ 'wikieditor' => 'Interfaccia avanzata di modifica del wikitesto',
+ 'wikieditor-desc' => "Fornisce un'interfaccia di modifica del wikitesto estensibile e molti moduli che forniscono altre funzionalità",
+ 'wikieditor-wikitext-tab' => 'Wikitesto',
+ 'wikieditor-loading' => 'Caricamento',
+ 'wikieditor-preview-preference' => 'Abilita anteprima laterale',
+ 'wikieditor-preview-tab' => 'Anteprima',
+ 'wikieditor-preview-changes-tab' => 'Modifiche',
+ 'wikieditor-preview-loading' => 'Caricamento...',
+ 'wikieditor-previewDialog-preference' => 'Abilita la finestra di dialogo di anteprima',
+ 'wikieditor-previewDialog-tab' => 'Anteprima',
+ 'wikieditor-previewDialog-loading' => 'Caricamento...',
+ 'wikieditor-publish-preference' => 'Abilita pubblicazione passo dopo passo',
+ 'wikieditor-publish-button-publish' => 'Pubblica',
+ 'wikieditor-publish-button-cancel' => 'Annulla',
+ 'wikieditor-publish-dialog-title' => 'Pubblica su {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Oggetto (descrivi brevemente le modifiche che hai fatto):',
+ 'wikieditor-publish-dialog-minor' => 'Modifica di minore importanza',
+ 'wikieditor-publish-dialog-watch' => 'Osserva questa pagina',
+ 'wikieditor-publish-dialog-publish' => 'Pubblica',
+ 'wikieditor-publish-dialog-goback' => 'Indietro',
+ 'wikieditor-template-editor-preference' => 'Abilita la modifica dei template attraverso moduli',
+ 'wikieditor-template-editor-dialog-title' => 'Modifica template',
+ 'wikieditor-template-editor-dialog-submit' => 'Aggiorna',
+ 'wikieditor-template-editor-dialog-cancel' => 'Annulla',
+ 'wikieditor-templates-preference' => 'Abilita la funzione per nascondere i template',
+ 'wikieditor-toc-preference' => 'Abilita indice navigabile',
+ 'wikieditor-toc-show' => 'Mostra i contenuti',
+ 'wikieditor-toc-hide' => 'Nascondi i contenuti',
+ 'wikieditor-toolbar' => 'Barra degli strumenti di modifica',
+ 'wikieditor-toolbar-desc' => 'Barra degli strumenti di modifica della pagina con migliorata usabilità',
+ 'wikieditor-toolbar-preference' => 'Abilita barra degli strumenti di modifica avanzata',
+ 'wikieditor-toolbar-dialogs-preference' => "Abilita le finestre per l'inserimento di link, tabelle ed altro",
+ 'wikieditor-toolbar-hidesig' => 'Nasconde il pulsante della firma dalle pagine nel namespace principale',
+ 'wikieditor-toolbar-loading' => 'Caricamento in corso...',
+ 'wikieditor-toolbar-tool-bold' => 'Grassetto',
+ 'wikieditor-toolbar-tool-bold-example' => 'Testo in grassetto',
+ 'wikieditor-toolbar-tool-italic' => 'Corsivo',
+ 'wikieditor-toolbar-tool-italic-example' => 'Testo in corsivo',
+ 'wikieditor-toolbar-tool-ilink' => 'Collegamento interno',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titolo del collegamento',
+ 'wikieditor-toolbar-tool-xlink' => 'Collegamento esterno (ricorda il prefisso http:// )',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com titolo del collegamento',
+ 'wikieditor-toolbar-tool-link' => 'Collegamento',
+ 'wikieditor-toolbar-tool-link-title' => 'Inserisci link',
+ 'wikieditor-toolbar-tool-link-int' => 'A una pagina wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Titolo della pagina:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titolo della pagina o URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Testo del link:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Inserisci il testo da visualizzare',
+ 'wikieditor-toolbar-tool-link-ext' => 'A una pagina di un sito web esterno',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL del link:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Testo del link:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Inserisci link',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Annulla',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Pagina esistente',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Pagina inesistente',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Titolo non valido',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Collegamento esterno',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "Controllo dell'esistenza della pagina in corso....",
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Il titolo che hai specificato non è valido.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "La URL che hai indicato sembra un link verso un'altra pagina wiki.
+Vuoi che sia un link interno?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Link interno',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Collegamento esterno',
+ 'wikieditor-toolbar-tool-link-empty' => 'Non hai indicato la destinazione del collegamento.',
+ 'wikieditor-toolbar-tool-file' => 'File incorporato',
+ 'wikieditor-toolbar-tool-file-example' => 'Esempio.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Nota',
+ 'wikieditor-toolbar-tool-reference-example' => 'Inserire qui il testo della nota',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Annulla',
+ 'wikieditor-toolbar-tool-reference-title' => 'Inserisci nota',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Inserisci',
+ 'wikieditor-toolbar-tool-reference-text' => 'Testo della nota',
+ 'wikieditor-toolbar-tool-signature' => 'Firma e data',
+ 'wikieditor-toolbar-section-advanced' => 'Avanzate',
+ 'wikieditor-toolbar-tool-heading' => 'Intestazione',
+ 'wikieditor-toolbar-tool-heading-1' => 'Livello 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Livello 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Livello 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Livello 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Livello 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Titolo sezione',
+ 'wikieditor-toolbar-group-format' => 'Formato',
+ 'wikieditor-toolbar-tool-ulist' => 'Elenco puntato',
+ 'wikieditor-toolbar-tool-ulist-example' => "Elemento dell'elenco puntato",
+ 'wikieditor-toolbar-tool-olist' => 'Elenco numerato',
+ 'wikieditor-toolbar-tool-olist-example' => "Elemento dell'elenco numerato",
+ 'wikieditor-toolbar-tool-indent' => 'Indentazione',
+ 'wikieditor-toolbar-tool-indent-example' => "Linea d'indentazione",
+ 'wikieditor-toolbar-tool-nowiki' => 'Ignora formattazione wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Inserisci il testo da non formattare',
+ 'wikieditor-toolbar-tool-redirect' => "Rinvia a un'altra pagina",
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nome della pagina di destinazione',
+ 'wikieditor-toolbar-tool-big' => 'Grande',
+ 'wikieditor-toolbar-tool-big-example' => 'Testo grande',
+ 'wikieditor-toolbar-tool-small' => 'Piccolo',
+ 'wikieditor-toolbar-tool-small-example' => 'Testo piccolo',
+ 'wikieditor-toolbar-tool-superscript' => 'Apice',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Testo in apice',
+ 'wikieditor-toolbar-tool-subscript' => 'Pedice',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Testo in pedice',
+ 'wikieditor-toolbar-group-insert' => 'Inserisci',
+ 'wikieditor-toolbar-tool-gallery' => 'Galleria di immagini',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Esempio.jpg|Didascalia1
+$1:Esempio.jpg|Didascalia2',
+ 'wikieditor-toolbar-tool-newline' => 'Nuova riga',
+ 'wikieditor-toolbar-tool-table' => 'Tabella',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! titolo 1
+! titolo 2
+! titolo 3
+|-
+| riga 1, cella 1
+| riga 1, cella 2
+| riga 1, cella 3
+|-
+| riga 2, cella 1
+| riga 2, cella 2
+| riga 2, cella 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Testo della cella',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Testo del titolo',
+ 'wikieditor-toolbar-tool-table-title' => 'Inserisci tabella',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Righe',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Colonne',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Includi una riga per i titoli',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stile con bordi',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Rendi la tabella ordinabile',
+ 'wikieditor-toolbar-tool-table-example' => 'Testo della cella',
+ 'wikieditor-toolbar-tool-table-preview' => 'Anteprima',
+ 'wikieditor-toolbar-tool-table-insert' => 'Inserisci',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Annulla',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Con questo strumento non è possibile inserire una tabella che abbia più di $1 celle.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Non hai indicato un numero valido di righe o di colonne.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Non puoi inserire una tabella senza righe e/o senza colonne.',
+ 'wikieditor-toolbar-tool-replace' => 'Cerca e sostituisci',
+ 'wikieditor-toolbar-tool-replace-title' => 'Cerca e sostituisci',
+ 'wikieditor-toolbar-tool-replace-search' => 'Cerca:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Sostituisci con:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Maiuscole/minuscole',
+ 'wikieditor-toolbar-tool-replace-regex' => "Usa la stringa di ricerca come un'espressione regolare",
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Trova successivi',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Sostituisci successivi',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Sostituisci tutto',
+ 'wikieditor-toolbar-tool-replace-close' => 'Chiudi',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'La tua ricerca non ha prodotto risultati.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 sostituzione/i effettuata/e.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Non hai indicato cosa cercare.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => "L'espressione regolare immessa non è valida: $1",
+ 'wikieditor-toolbar-section-characters' => 'Caratteri speciali',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latino',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latino esteso',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simboli',
+ 'wikieditor-toolbar-characters-page-greek' => 'Greco',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirillico',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabo',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persiano',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ebraico',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalese',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singalese',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thailandese',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Aiuto',
+ 'wikieditor-toolbar-help-heading-description' => 'Descrizione',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Cosa si digita',
+ 'wikieditor-toolbar-help-heading-result' => 'Cosa si ottiene',
+ 'wikieditor-toolbar-help-page-format' => 'Formattazione',
+ 'wikieditor-toolbar-help-page-link' => 'Collegamenti',
+ 'wikieditor-toolbar-help-page-heading' => 'Intestazioni',
+ 'wikieditor-toolbar-help-page-list' => 'Elenchi',
+ 'wikieditor-toolbar-help-page-file' => 'File',
+ 'wikieditor-toolbar-help-page-reference' => 'Note',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discussione',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Corsivo',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Testo in corsivo''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Testo in corsivo</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Grassetto',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Testo in grassetto'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Testo in grassetto</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Grassetto e corsivo',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Testo in grassetto e corsivo'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Testo in grassetto e corsivo</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Collegamento interno',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Titolo pagina|Etichetta collegamento]]<br />[[Titolo pagina]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Etichetta collegamento</a><br /><a href='#'>Titolo pagina</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Collegamento esterno',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Etichetta collegamento]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Etichetta collegamento</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2° livello di intestazione',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Titolo sezione ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Titolo sezione</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3° livello di intestazione',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Titolo sezione ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Titolo sezione</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4° livello di intestazione',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Titolo sezione ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Titolo sezione</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5° livello di intestazione',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Titolo sezione =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Titolo sezione</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Elenco puntato',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => "* Elemento dell'elenco<br />* Elemento dell'elenco",
+ 'wikieditor-toolbar-help-content-ulist-result' => "<ul><li>Elemento dell'elenco</li><li>Elemento dell'elenco</li></ul>",
+ 'wikieditor-toolbar-help-content-olist-description' => 'Elenco numerato',
+ 'wikieditor-toolbar-help-content-olist-syntax' => "# Elemento dell'elenco<br /># Elemento dell'elenco",
+ 'wikieditor-toolbar-help-content-olist-result' => "<ol><li>Elemento dell'elenco</li><li>Elemento dell'elenco</li></ol>",
+ 'wikieditor-toolbar-help-content-file-description' => 'File incorporato',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Esempio.png|thumb|Testo della didascalia]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Testo della didascalia</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Nota',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Testo della pagina.&lt;ref name="test"&gt;[http://www.example.org Testo del collegamento], testo aggiuntivo.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Testo della pagina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Ulteriore uso della stessa nota',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Testo della pagina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Mostra note',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Testo del collegamento</a>, testo aggiuntivo.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Firma con data e ora',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nome utente</a> (<a href='#' title='{{#special:mytalk}}'>discussione</a>) 15:54, 10 giu 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Firma',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nome utente</a> (<a href='#' title='{{#special:mytalk}}'>discussione</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indentazione',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Testo normale<br />:Testo indentato<br />::Testo indentato',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Testo normale<dl><dd>Testo indentato<dl><dd>Testo indentato</dd></dl></dd></dl>',
+);
+
+/** Japanese (日本語)
+ * @author Aotake
+ * @author Fryed-peach
+ * @author Hosiryuhosi
+ * @author Ohgi
+ * @author é’å­å®ˆæ­Œ
+ */
+$messages['ja'] = array(
+ 'wikieditor' => '高度ãªã‚¦ã‚£ã‚­ãƒ†ã‚­ã‚¹ãƒˆç·¨é›†ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹',
+ 'wikieditor-desc' => 'æ‹¡å¼µå¯èƒ½ãªã‚¦ã‚£ã‚­ãƒ†ã‚­ã‚¹ãƒˆç·¨é›†ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ã‚¤ã‚¹ã¨å¤šæ•°ã®æ©Ÿèƒ½ãƒ¢ã‚¸ãƒ¥ãƒ¼ãƒ«ã‚’æä¾›ã™ã‚‹',
+ 'wikieditor-wikitext-tab' => 'ウィキテキスト',
+ 'wikieditor-loading' => '読ã¿è¾¼ã¿ä¸­',
+ 'wikieditor-preview-preference' => '比較プレビューを有効化ã™ã‚‹',
+ 'wikieditor-preview-tab' => 'プレビュー',
+ 'wikieditor-preview-changes-tab' => '変更',
+ 'wikieditor-preview-loading' => '読ã¿è¾¼ã¿ä¸­â€¦',
+ 'wikieditor-previewDialog-preference' => 'プレビュー・ダイアログを有効化ã™ã‚‹',
+ 'wikieditor-previewDialog-tab' => 'プレビュー',
+ 'wikieditor-previewDialog-loading' => '読ã¿è¾¼ã¿ä¸­â€¦',
+ 'wikieditor-publish-preference' => '段階的投稿を有効化ã™ã‚‹',
+ 'wikieditor-publish-button-publish' => '投稿',
+ 'wikieditor-publish-button-cancel' => '中止',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}} ã¸ã®æŠ•ç¨¿',
+ 'wikieditor-publish-dialog-summary' => '編集内容ã®è¦ç´„ (ã‚ãªãŸãŒç‚ºã—ãŸå¤‰æ›´ã‚’ç°¡æ½”ã«èª¬æ˜Žã—ã¦ãã ã•ã„):',
+ 'wikieditor-publish-dialog-minor' => '細部ã®ç·¨é›†',
+ 'wikieditor-publish-dialog-watch' => 'ã“ã®ãƒšãƒ¼ã‚¸ã‚’ウォッãƒã™ã‚‹',
+ 'wikieditor-publish-dialog-publish' => '投稿',
+ 'wikieditor-publish-dialog-goback' => '戻る',
+ 'wikieditor-template-editor-preference' => 'フォームを利用ã—ãŸãƒ†ãƒ³ãƒ—レートã®ç·¨é›†ã‚’有効化ã™ã‚‹',
+ 'wikieditor-template-editor-dialog-title' => 'テンプレートを編集ã™ã‚‹',
+ 'wikieditor-template-editor-dialog-submit' => 'æ›´æ–°',
+ 'wikieditor-template-editor-dialog-cancel' => '中止',
+ 'wikieditor-templates-preference' => 'テンプレート折り畳ã¿ã‚’有効ã«ã™ã‚‹',
+ 'wikieditor-toc-preference' => '編集用目次を有効化ã™ã‚‹',
+ 'wikieditor-toc-show' => '目次を表示',
+ 'wikieditor-toc-hide' => '目次をéžè¡¨ç¤º',
+ 'wikieditor-toolbar' => '編集ツールãƒãƒ¼',
+ 'wikieditor-toolbar-desc' => '使ã„ã‚„ã™ã•ã®å‘上ã—ãŸãƒšãƒ¼ã‚¸ç·¨é›†ãƒ„ールãƒãƒ¼',
+ 'wikieditor-toolbar-preference' => '改良型編集ツールãƒãƒ¼ã‚’有効ã«ã™ã‚‹',
+ 'wikieditor-toolbar-dialogs-preference' => 'リンクや表ãªã©ã®æŒ¿å…¥ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã‚’有効化ã™ã‚‹',
+ 'wikieditor-toolbar-hidesig' => '標準åå‰ç©ºé–“ã§ç½²åボタンをéžè¡¨ç¤ºã«ã™ã‚‹',
+ 'wikieditor-toolbar-loading' => '読ã¿è¾¼ã¿ä¸­â€¦',
+ 'wikieditor-toolbar-tool-bold' => '太字',
+ 'wikieditor-toolbar-tool-bold-example' => '太字文',
+ 'wikieditor-toolbar-tool-italic' => '斜体',
+ 'wikieditor-toolbar-tool-italic-example' => '斜体文',
+ 'wikieditor-toolbar-tool-ilink' => '内部リンク',
+ 'wikieditor-toolbar-tool-ilink-example' => 'リンクタイトル',
+ 'wikieditor-toolbar-tool-xlink' => '外部リンク (接頭辞 http:// を忘れãšã«)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com リンクタイトル',
+ 'wikieditor-toolbar-tool-link' => 'リンク',
+ 'wikieditor-toolbar-tool-link-title' => 'リンクã®æŒ¿å…¥',
+ 'wikieditor-toolbar-tool-link-int' => 'ウィキページã¸',
+ 'wikieditor-toolbar-tool-link-int-target' => 'ページå:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'ページåã‹ URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'リンク文:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => '表示ã™ã‚‹æ–‡å­—列を入力ã—ã¦ãã ã•ã„',
+ 'wikieditor-toolbar-tool-link-ext' => '外部ã®ã‚¦ã‚§ãƒ–ページã¸',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'リンクURL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'リンク文:',
+ 'wikieditor-toolbar-tool-link-insert' => 'リンク挿入',
+ 'wikieditor-toolbar-tool-link-cancel' => '中止',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'ページã¯å­˜åœ¨ã—ã¾ã™',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'ページã¯å­˜åœ¨ã—ã¾ã›ã‚“',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ページåã¨ã—ã¦ç„¡åŠ¹ã§ã™',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => '外部リンク',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'ページã®å­˜åœ¨ã‚’確èªä¸­â€¦',
+ 'wikieditor-toolbar-tool-link-int-invalid' => '指定ã—ãŸãƒšãƒ¼ã‚¸åã¯ç„¡åŠ¹ã§ã™ã€‚',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => '指定ã•ã‚ŒãŸ URL ã¯åˆ¥ã®ã‚¦ã‚£ã‚­ãƒšãƒ¼ã‚¸ã¸ã®ãƒªãƒ³ã‚¯ã®ã‚ˆã†ã§ã™ã€‚
+ã“れを内部リンクã«ã—ã¾ã™ã‹ï¼Ÿ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => '内部リンク',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => '外部リンク',
+ 'wikieditor-toolbar-tool-link-empty' => 'リンクã™ã¹ã入力ãŒä¸Žãˆã‚‰ã‚Œã¦ã„ã¾ã›ã‚“。',
+ 'wikieditor-toolbar-tool-file' => '埋ã‚è¾¼ã¿ãƒ•ã‚¡ã‚¤ãƒ«',
+ 'wikieditor-toolbar-tool-file-example' => '例.jpg',
+ 'wikieditor-toolbar-tool-reference' => '注釈',
+ 'wikieditor-toolbar-tool-reference-example' => '注釈文をã“ã“ã«å…¥åŠ›ã—ã¦ãã ã•ã„',
+ 'wikieditor-toolbar-tool-reference-cancel' => '中止',
+ 'wikieditor-toolbar-tool-reference-title' => '出典を挿入',
+ 'wikieditor-toolbar-tool-reference-insert' => '挿入',
+ 'wikieditor-toolbar-tool-reference-text' => '出典情報',
+ 'wikieditor-toolbar-tool-signature' => '時刻付ãç½²å',
+ 'wikieditor-toolbar-section-advanced' => '上級',
+ 'wikieditor-toolbar-tool-heading' => '見出ã—',
+ 'wikieditor-toolbar-tool-heading-1' => 'レベル1',
+ 'wikieditor-toolbar-tool-heading-2' => 'レベル2',
+ 'wikieditor-toolbar-tool-heading-3' => 'レベル3',
+ 'wikieditor-toolbar-tool-heading-4' => 'レベル4',
+ 'wikieditor-toolbar-tool-heading-5' => 'レベル5',
+ 'wikieditor-toolbar-tool-heading-example' => '見出ã—タイトル',
+ 'wikieditor-toolbar-group-format' => 'å½¢å¼',
+ 'wikieditor-toolbar-tool-ulist' => '番å·ãªã—箇æ¡æ›¸ã',
+ 'wikieditor-toolbar-tool-ulist-example' => '番å·ãªã—箇æ¡æ›¸ãã®é …ç›®',
+ 'wikieditor-toolbar-tool-olist' => '番å·ä»˜ã箇æ¡æ›¸ã',
+ 'wikieditor-toolbar-tool-olist-example' => '番å·ä»˜ã箇æ¡æ›¸ãã®é …ç›®',
+ 'wikieditor-toolbar-tool-indent' => '字下ã’',
+ 'wikieditor-toolbar-tool-indent-example' => '字下ã’ã•ã‚ŒãŸè¡Œ',
+ 'wikieditor-toolbar-tool-nowiki' => 'ウィキ書å¼ãªã—',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'ã“ã“ã«ãƒžãƒ¼ã‚¯ã‚¢ãƒƒãƒ—を無効ã«ã™ã‚‹ãƒ†ã‚­ã‚¹ãƒˆã‚’入力ã—ã¾ã™',
+ 'wikieditor-toolbar-tool-redirect' => 'リダイレクト',
+ 'wikieditor-toolbar-tool-redirect-example' => '転é€å…ˆã®ãƒšãƒ¼ã‚¸å',
+ 'wikieditor-toolbar-tool-big' => '大',
+ 'wikieditor-toolbar-tool-big-example' => '大ããªãƒ†ã‚­ã‚¹ãƒˆ',
+ 'wikieditor-toolbar-tool-small' => 'å°',
+ 'wikieditor-toolbar-tool-small-example' => 'å°ã•ãªãƒ†ã‚­ã‚¹ãƒˆ',
+ 'wikieditor-toolbar-tool-superscript' => '上付ã文字',
+ 'wikieditor-toolbar-tool-superscript-example' => '上付ã文字',
+ 'wikieditor-toolbar-tool-subscript' => '下付ã文字',
+ 'wikieditor-toolbar-tool-subscript-example' => '下付ã文字',
+ 'wikieditor-toolbar-group-insert' => '挿入',
+ 'wikieditor-toolbar-tool-gallery' => 'ç”»åƒã‚®ãƒ£ãƒ©ãƒªãƒ¼',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|キャプション1
+$1:Example.jpg|キャプション2',
+ 'wikieditor-toolbar-tool-newline' => '改行',
+ 'wikieditor-toolbar-tool-table' => '表',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! 見出㗠1
+! 見出㗠2
+! 見出㗠3
+|-
+| è¡Œ 1ã€ã‚»ãƒ« 1
+| è¡Œ 1ã€ã‚»ãƒ« 2
+| è¡Œ 1ã€ã‚»ãƒ« 3
+|-
+| è¡Œ 2ã€ã‚»ãƒ« 1
+| è¡Œ 2ã€ã‚»ãƒ« 2
+| è¡Œ 2ã€ã‚»ãƒ« 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'セル内ã®ãƒ†ã‚­ã‚¹ãƒˆ',
+ 'wikieditor-toolbar-tool-table-example-header' => '見出ã—テキスト',
+ 'wikieditor-toolbar-tool-table-title' => '表を挿入',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => '行数',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => '列数',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'ヘッダ列をå«ã‚ã‚‹',
+ 'wikieditor-toolbar-tool-table-wikitable' => '罫線ã®ã‚るスタイル',
+ 'wikieditor-toolbar-tool-table-sortable' => '表を並ã³æ›¿ãˆã§ãるよã†ã«ã™ã‚‹',
+ 'wikieditor-toolbar-tool-table-example' => 'セル内ã®ãƒ†ã‚­ã‚¹ãƒˆ',
+ 'wikieditor-toolbar-tool-table-preview' => 'プレビュー',
+ 'wikieditor-toolbar-tool-table-insert' => '挿入',
+ 'wikieditor-toolbar-tool-table-cancel' => '中止',
+ 'wikieditor-toolbar-tool-table-toomany' => 'ã“ã®ãƒ€ã‚¤ã‚¢ãƒ­ã‚°ã§ã¯$1個を超ãˆã‚‹ã‚»ãƒ«ã‚’ã‚‚ã¤è¡¨ã‚’挿入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'è¡Œã‚ã‚‹ã„ã¯åˆ—ã®æ•°ã¨ã—ã¦æœ‰åŠ¹ãªå€¤ãŒå…¥åŠ›ã•ã‚Œã¦ã„ã¾ã›ã‚“。',
+ 'wikieditor-toolbar-tool-table-zero' => 'è¡Œã‚ã‚‹ã„ã¯åˆ—ãŒã‚¼ãƒ­å€‹ã®è¡¨ã‚’挿入ã™ã‚‹ã“ã¨ã¯ã§ãã¾ã›ã‚“。',
+ 'wikieditor-toolbar-tool-replace' => '検索ã¨ç½®æ›',
+ 'wikieditor-toolbar-tool-replace-title' => '検索ã¨ç½®æ›',
+ 'wikieditor-toolbar-tool-replace-search' => '検索ã™ã‚‹æ–‡å­—列:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'ç½®æ›å¾Œã®æ–‡å­—列:',
+ 'wikieditor-toolbar-tool-replace-case' => '大文字・å°æ–‡å­—を区別ã™ã‚‹',
+ 'wikieditor-toolbar-tool-replace-regex' => 'æ­£è¦è¡¨ç¾ã§æ¤œç´¢ã™ã‚‹',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => '次を検索',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => '次を置æ›',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'ã™ã¹ã¦ç½®æ›',
+ 'wikieditor-toolbar-tool-replace-close' => 'é–‰ã˜ã‚‹',
+ 'wikieditor-toolbar-tool-replace-nomatch' => '検索文字列ã«ä¸€è‡´ã™ã‚‹ã‚‚ã®ã¯ã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚',
+ 'wikieditor-toolbar-tool-replace-success' => '$1回ã®ç½®æ›ãŒè¡Œã‚ã‚Œã¾ã—ãŸã€‚',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => '検索ã™ã‚‹ã‚‚ã®ãŒä½•ã‚‚入力ã•ã‚Œã¦ã„ã¾ã›ã‚“。',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => '入力ã•ã‚ŒãŸæ­£è¦è¡¨ç¾ã«èª¤ã‚ŠãŒã‚ã‚Šã¾ã™: $1',
+ 'wikieditor-toolbar-section-characters' => '特殊文字',
+ 'wikieditor-toolbar-characters-page-latin' => 'ラテン文字',
+ 'wikieditor-toolbar-characters-page-latinextended' => '拡張ラテン文字',
+ 'wikieditor-toolbar-characters-page-ipa' => '国際音声記å·',
+ 'wikieditor-toolbar-characters-page-symbols' => '記å·',
+ 'wikieditor-toolbar-characters-page-greek' => 'ギリシャ文字',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'キリル文字',
+ 'wikieditor-toolbar-characters-page-arabic' => 'アラビア文字',
+ 'wikieditor-toolbar-characters-page-persian' => 'ペルシア語',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'ヘブライ文字',
+ 'wikieditor-toolbar-characters-page-bangla' => 'ベンガル文字',
+ 'wikieditor-toolbar-characters-page-telugu' => 'テルグ文字',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'シンãƒãƒ©æ–‡å­—',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'グジャラーティー文字',
+ 'wikieditor-toolbar-characters-page-thai' => 'タイ文字',
+ 'wikieditor-toolbar-characters-page-lao' => 'ラーオ文字',
+ 'wikieditor-toolbar-characters-page-khmer' => 'クメール文字',
+ 'wikieditor-toolbar-section-help' => 'ヘルプ',
+ 'wikieditor-toolbar-help-heading-description' => '解説',
+ 'wikieditor-toolbar-help-heading-syntax' => '入力内容',
+ 'wikieditor-toolbar-help-heading-result' => '出力çµæžœ',
+ 'wikieditor-toolbar-help-page-format' => '書å¼è¨­å®š',
+ 'wikieditor-toolbar-help-page-link' => 'リンク',
+ 'wikieditor-toolbar-help-page-heading' => '見出ã—',
+ 'wikieditor-toolbar-help-page-list' => '箇æ¡æ›¸ã',
+ 'wikieditor-toolbar-help-page-file' => 'ファイル',
+ 'wikieditor-toolbar-help-page-reference' => '注釈',
+ 'wikieditor-toolbar-help-page-discussion' => 'è­°è«–',
+ 'wikieditor-toolbar-help-content-italic-description' => '斜体',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''斜体テキスト''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>斜体テキスト</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => '太字',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''太字テキスト'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>太字テキスト</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => '太字ã‹ã¤æ–œä½“',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''太字ã‹ã¤æ–œä½“'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>太字ã‹ã¤æ–œä½“</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => '内部リンク',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[ページå|リンクラベル]]<br />[[ページå]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>リンクラベル</a><br /><a href='#'>ページå</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => '外部リンク',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org リンクラベル]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>リンクラベル</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '見出ã—レベル2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== 見出㗠==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>見出ã—</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '見出ã—レベル3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== 見出㗠===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>見出ã—</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '見出ã—レベル4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== 見出㗠====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>見出ã—</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '見出ã—レベル5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== 見出㗠=====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>見出ã—</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => '番å·ãªã—箇æ¡æ›¸ã',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* 箇æ¡æ›¸ãé …ç›®<br />* 箇æ¡æ›¸ãé …ç›®',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>箇æ¡æ›¸ãé …ç›®</li><li>箇æ¡æ›¸ãé …ç›®</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => '番å·ä»˜ã箇æ¡æ›¸ã',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# 箇æ¡æ›¸ãé …ç›®<br /># 箇æ¡æ›¸ãé …ç›®',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>箇æ¡æ›¸ãé …ç›®</li><li>箇æ¡æ›¸ãé …ç›®</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => '埋ã‚è¾¼ã¿ãƒ•ã‚¡ã‚¤ãƒ«',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|キャプション]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='キャプション' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>キャプション</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => '注釈',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'ページ本文&lt;ref name="test"&gt;[http://www.example.org リンクタイトル]ã€è¿½åŠ ãƒ†ã‚­ã‚¹ãƒˆ&lt;/ref&gt;。',
+ 'wikieditor-toolbar-help-content-reference-result' => "ページ本文<sup><a href='#'>[1]</a></sup>。",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'åŒã˜æ³¨é‡ˆã®è¿½åŠ åˆ©ç”¨',
+ 'wikieditor-toolbar-help-content-rereference-result' => "ページ本文<sup><a href='#'>[1]</a></sup>。",
+ 'wikieditor-toolbar-help-content-showreferences-description' => '脚注ã®è¡¨ç¤º',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>リンクタイトル</a>ã€è¿½åŠ ãƒ†ã‚­ã‚¹ãƒˆ</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => '時刻付ãç½²å',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>利用者å</a> (<a href='#' title='{{#special:mytalk}}'>トーク</a>) 2009å¹´6月10æ—¥ (æ°´) 15:54 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ç½²å',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>利用者å</a> (<a href='#' title='{{#special:mytalk}}'>トーク</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'インデント',
+ 'wikieditor-toolbar-help-content-indent-syntax' => '通常ã®æ–‡ç« <br />:インデントã•ã‚ŒãŸæ–‡ç« <br />::インデントã•ã‚ŒãŸæ–‡ç« ',
+ 'wikieditor-toolbar-help-content-indent-result' => '通常ã®æ–‡ç« <dl><dd>インデントã•ã‚ŒãŸæ–‡ç« <dl><dd>インデントã•ã‚ŒãŸæ–‡ç« </dd></dl></dd></dl>',
+);
+
+/** Lojban (Lojban)
+ * @author Ruzihm
+ */
+$messages['jbo'] = array(
+ 'wikieditor-toolbar' => 'stika samtcikajna',
+ 'wikieditor-toolbar-desc' => "samtcikajna pe lo stika mutpapri zi'e poi filmau selpli",
+ 'wikieditor-toolbar-loading' => 'ca puvbre',
+ 'wikieditor-toolbar-tool-bold' => 'plana',
+);
+
+/** Javanese (Basa Jawa)
+ * @author Meursault2004
+ */
+$messages['jv'] = array(
+ 'wikieditor-publish-button-cancel' => 'Batalna',
+);
+
+/** Georgian (ქáƒáƒ áƒ—ული)
+ * @author BRUTE
+ * @author David1010
+ * @author Dawid Deutschland
+ * @author გიáƒáƒ áƒ’იმელáƒ
+ */
+$messages['ka'] = array(
+ 'wikieditor' => 'ვიკიტექსტის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბული ინტერფეისი',
+ 'wikieditor-desc' => 'ვიკიტექსტის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბული ინტერფეისისრდრსხვრფუნქციებს უზრუნველყáƒáƒ¤áƒ¡',
+ 'wikieditor-wikitext-tab' => 'ვიკიტექსტი',
+ 'wikieditor-loading' => 'იტვირთებáƒ',
+ 'wikieditor-preview-preference' => 'ჩáƒáƒ áƒ—ეთ გვერდითი გáƒáƒ“áƒáƒ®áƒ”დვáƒ',
+ 'wikieditor-preview-tab' => 'წინáƒáƒ¡áƒ¬áƒáƒ ',
+ 'wikieditor-preview-changes-tab' => 'ცვლილებები',
+ 'wikieditor-preview-loading' => 'იტვირთებáƒ...',
+ 'wikieditor-previewDialog-preference' => 'წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ გáƒáƒ“áƒáƒ®áƒ”დვის დიáƒáƒšáƒáƒ’ის ჩáƒáƒ áƒ—ვáƒ',
+ 'wikieditor-previewDialog-tab' => 'წინáƒáƒ¡áƒ¬áƒáƒ ',
+ 'wikieditor-previewDialog-loading' => 'იტვირთებáƒ...',
+ 'wikieditor-publish-preference' => 'ჩáƒáƒ áƒ—ეთ ნáƒáƒ‘იჯ-ნáƒáƒ‘იჯი პუბლიკáƒáƒªáƒ˜áƒ',
+ 'wikieditor-publish-button-publish' => 'გáƒáƒ›áƒáƒ¥áƒ•áƒ”ყნებáƒ',
+ 'wikieditor-publish-button-cancel' => 'გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ',
+ 'wikieditor-publish-dialog-title' => 'გáƒáƒ›áƒáƒ¥áƒ•áƒ”ყნებრ{{SITENAME}}-ში.',
+ 'wikieditor-publish-dialog-summary' => 'ცვლილების მáƒáƒ™áƒšáƒ” áƒáƒ¦áƒ¬áƒ”რრ(წერილáƒáƒ‘ით áƒáƒ¦áƒ¬áƒ”რეთ, თუ რრცვლილებრშეიტáƒáƒœáƒ”თ):',
+ 'wikieditor-publish-dialog-minor' => 'მცირე შესწáƒáƒ áƒ”ბáƒ',
+ 'wikieditor-publish-dialog-watch' => 'áƒáƒ› გვერდის თვáƒáƒšáƒ—ვáƒáƒšáƒ˜',
+ 'wikieditor-publish-dialog-publish' => 'გáƒáƒ›áƒáƒ¥áƒ•áƒ”ყნებáƒ',
+ 'wikieditor-publish-dialog-goback' => 'უკáƒáƒœ',
+ 'wikieditor-template-editor-preference' => 'თáƒáƒ áƒ’ების რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრფáƒáƒ áƒ›áƒ”ბის მეშვეáƒáƒ‘ით - ჩáƒáƒ áƒ—ვáƒ',
+ 'wikieditor-template-editor-dialog-title' => 'თáƒáƒ áƒ’ის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ',
+ 'wikieditor-template-editor-dialog-submit' => 'გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ',
+ 'wikieditor-template-editor-dialog-cancel' => 'გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ',
+ 'wikieditor-templates-preference' => 'ჩáƒáƒ™áƒ”ცილი თáƒáƒ áƒ’ის ჩáƒáƒ áƒ—ვáƒ',
+ 'wikieditor-toc-preference' => 'ჩáƒáƒ áƒ—ეთ სáƒáƒ áƒ©áƒ”ვი ნáƒáƒ•áƒ˜áƒ’áƒáƒªáƒ˜áƒ˜áƒ¡ შესáƒáƒ«áƒšáƒ”ბლáƒáƒ‘ით',
+ 'wikieditor-toc-show' => 'áƒáƒ©áƒ•áƒ”ნეთ სáƒáƒ áƒ©áƒ”ვი',
+ 'wikieditor-toc-hide' => 'სáƒáƒ áƒ©áƒ”ვის დáƒáƒ›áƒáƒšáƒ•áƒ',
+ 'wikieditor-toolbar' => 'რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის პáƒáƒœáƒ”ლი',
+ 'wikieditor-toolbar-desc' => 'რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის პáƒáƒœáƒ”ლი გáƒáƒ£áƒ›áƒ¯áƒáƒ‘ესებული იუზáƒáƒ‘ილითით',
+ 'wikieditor-toolbar-preference' => 'ჩáƒáƒ áƒ—ეთ რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის გáƒáƒ£áƒ›áƒ¯áƒáƒ‘ესებული პáƒáƒœáƒ”ლი',
+ 'wikieditor-toolbar-dialogs-preference' => 'ჩáƒáƒ áƒ—ეთ დიáƒáƒšáƒáƒ’ები ბმულების, ტáƒáƒ‘ულებისრდრსხვრáƒáƒ‘იექტების ჩáƒáƒ¡áƒáƒ¡áƒ›áƒ”ლáƒáƒ“',
+ 'wikieditor-toolbar-loading' => 'იტვირთებáƒâ€¦',
+ 'wikieditor-toolbar-tool-bold' => 'მუქი',
+ 'wikieditor-toolbar-tool-bold-example' => 'მუქი ტექსტი',
+ 'wikieditor-toolbar-tool-italic' => 'კურსივი',
+ 'wikieditor-toolbar-tool-italic-example' => 'კურსივის ტექსტი',
+ 'wikieditor-toolbar-tool-ilink' => 'შიდრბმული',
+ 'wikieditor-toolbar-tool-ilink-example' => 'ბმულის სáƒáƒ—áƒáƒ£áƒ áƒ˜',
+ 'wikieditor-toolbar-tool-xlink' => 'გáƒáƒ áƒ” ბმული (გáƒáƒ®áƒ¡áƒáƒ•áƒ“ეთ http:// პრეფიქსი)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com ბმულის სáƒáƒ—áƒáƒ£áƒ áƒ˜',
+ 'wikieditor-toolbar-tool-link' => 'ბმული',
+ 'wikieditor-toolbar-tool-link-title' => 'ბმულის ჩáƒáƒ¡áƒ›áƒ',
+ 'wikieditor-toolbar-tool-link-int' => 'ვიკი გვერდზე',
+ 'wikieditor-toolbar-tool-link-int-target' => 'გვერდის სáƒáƒ—áƒáƒ£áƒ áƒ˜:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'გვერდის სáƒáƒ®áƒ”ლი áƒáƒœ URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'ჩვენებული ტექსტი:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'სáƒáƒ©áƒ•áƒ”ნებელი ტექსტი',
+ 'wikieditor-toolbar-tool-link-ext' => 'გáƒáƒ áƒ” ვებ-გვერდზე',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL ბმული:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'ბმულის ტექსტი:',
+ 'wikieditor-toolbar-tool-link-insert' => 'ბმულის ჩáƒáƒ¡áƒ›áƒ',
+ 'wikieditor-toolbar-tool-link-cancel' => 'გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'გვერდი áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'გვერდი áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ დáƒáƒ¡áƒáƒ®áƒ”ლებáƒ',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'გáƒáƒ áƒ” ბმული',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'áƒáƒ áƒ¡áƒ”ბული გვერდების შემáƒáƒ¬áƒ›áƒ”ბáƒ...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'მითითებული დáƒáƒ¡áƒáƒ®áƒ”ლებრáƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'თქვენ მიერ მითითებული URL, რáƒáƒ’áƒáƒ áƒª ჩáƒáƒœáƒ¡ მითითებულირსხვრვიკი-გვერდზე. გინდáƒáƒ— იყáƒáƒ¡ ის შიდრბმული?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'შიდრბმული',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'გáƒáƒ áƒ” ბმული',
+ 'wikieditor-toolbar-tool-link-empty' => 'თქვენ áƒáƒ  მიუთითეთ ბმული.',
+ 'wikieditor-toolbar-tool-file' => 'ჩáƒáƒ¡áƒ›áƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ˜',
+ 'wikieditor-toolbar-tool-file-example' => 'მáƒáƒ’áƒáƒšáƒ˜áƒ—ი.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'მინიშნებები',
+ 'wikieditor-toolbar-tool-reference-example' => 'ჩáƒáƒ¡áƒ•áƒ˜áƒ— მინიშნებების ტექსტი áƒáƒ¥',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ',
+ 'wikieditor-toolbar-tool-reference-title' => 'სქáƒáƒšáƒ˜áƒáƒ¡ ჩáƒáƒ¡áƒ›áƒ',
+ 'wikieditor-toolbar-tool-reference-insert' => 'ჩáƒáƒ¡áƒ›áƒ',
+ 'wikieditor-toolbar-tool-reference-text' => 'სქáƒáƒšáƒ˜áƒáƒ¡ ტექსტი',
+ 'wikieditor-toolbar-tool-signature' => 'ხელმáƒáƒ¬áƒ”რრდრდრáƒ',
+ 'wikieditor-toolbar-section-advanced' => 'დáƒáƒ›áƒáƒ¢áƒ”ბით',
+ 'wikieditor-toolbar-tool-heading' => 'სáƒáƒ—áƒáƒ£áƒ áƒ˜',
+ 'wikieditor-toolbar-tool-heading-1' => 'დáƒáƒœáƒ” 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'დáƒáƒœáƒ” 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'დáƒáƒœáƒ” 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'დáƒáƒœáƒ”4',
+ 'wikieditor-toolbar-tool-heading-5' => 'დáƒáƒœáƒ” 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'სáƒáƒ—áƒáƒ£áƒ áƒ˜áƒ¡ ტექსტი',
+ 'wikieditor-toolbar-group-format' => 'ფáƒáƒ áƒ›áƒáƒ¢áƒ˜',
+ 'wikieditor-toolbar-tool-ulist' => 'მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ სიáƒ',
+ 'wikieditor-toolbar-tool-ulist-example' => 'მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ სიის ელემენტი',
+ 'wikieditor-toolbar-tool-olist' => 'დáƒáƒ—ვლáƒáƒ“ი სიáƒ',
+ 'wikieditor-toolbar-tool-olist-example' => 'დáƒáƒ—ვლáƒáƒ“ი სიის ელემენტი',
+ 'wikieditor-toolbar-tool-indent' => 'გáƒáƒ“áƒáƒ®áƒ áƒ',
+ 'wikieditor-toolbar-tool-indent-example' => 'ხáƒáƒ–ი გáƒáƒ“áƒáƒ®áƒ áƒ˜áƒ—',
+ 'wikieditor-toolbar-tool-nowiki' => 'ვიკის ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ áƒ”ბის იგნáƒáƒ áƒ˜áƒ áƒ”ბáƒ',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'ჩáƒáƒ¡áƒ•áƒ˜áƒ— დáƒáƒ£áƒ¤áƒáƒ áƒ›áƒáƒ¢áƒ”ბელი ტექსტი áƒáƒ¥',
+ 'wikieditor-toolbar-tool-redirect' => 'გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებáƒ',
+ 'wikieditor-toolbar-tool-redirect-example' => 'გვერდის სáƒáƒ›áƒ˜áƒ–ნრსáƒáƒ®áƒ”ლი',
+ 'wikieditor-toolbar-tool-big' => 'დიდი',
+ 'wikieditor-toolbar-tool-big-example' => 'დიდი ტექსტი',
+ 'wikieditor-toolbar-tool-small' => 'მცირე',
+ 'wikieditor-toolbar-tool-small-example' => 'მცირე ტექსტი',
+ 'wikieditor-toolbar-tool-superscript' => 'ზეხáƒáƒ–ური',
+ 'wikieditor-toolbar-tool-superscript-example' => 'ზეხáƒáƒ–ური ტექსტი',
+ 'wikieditor-toolbar-tool-subscript' => 'ქვეხáƒáƒ–ური',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ქვეხáƒáƒ–ური ტექსტი',
+ 'wikieditor-toolbar-group-insert' => 'ჩáƒáƒ¡áƒ›áƒ',
+ 'wikieditor-toolbar-tool-gallery' => 'გáƒáƒ›áƒáƒ¡áƒáƒ®áƒ£áƒšáƒ”ბáƒáƒ—რგáƒáƒšáƒ”რეáƒ',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|áƒáƒ¦áƒ¬áƒ”რáƒ1
+$1:Example.jpg|áƒáƒ¦áƒ¬áƒ”რáƒ2',
+ 'wikieditor-toolbar-tool-newline' => 'áƒáƒ®áƒáƒšáƒ˜ ხáƒáƒ–ი',
+ 'wikieditor-toolbar-tool-table' => 'ტáƒáƒ‘ულáƒ',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! სáƒáƒ®áƒ”ლი 1
+! სáƒáƒ®áƒ”ლი 2
+! სáƒáƒ®áƒ”ლი 3
+|-
+| ხáƒáƒ–ი 1, უჯრედი 1
+| ხáƒáƒ–ი 1, უჯრედი 2
+| ხáƒáƒ–ი 1, უჯრედი 3
+|-
+| ხáƒáƒ–ი 2, უჯრედი 1
+| ხáƒáƒ–ი 2, უჯრედი 2
+| ხáƒáƒ–ი 2, უჯრედი 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'უჯრედის ტექსტი',
+ 'wikieditor-toolbar-tool-table-example-header' => 'სáƒáƒ—áƒáƒ£áƒ áƒ˜áƒ¡ ტექსტი',
+ 'wikieditor-toolbar-tool-table-title' => 'ტáƒáƒ‘ულის ჩáƒáƒ¡áƒ›áƒ',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'რიგიები',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'სვეტები',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'ჩáƒáƒ¡áƒ•áƒáƒ— სáƒáƒ—áƒáƒ£áƒ áƒ˜áƒ¡ ხáƒáƒ–ი',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'გáƒáƒ¤áƒáƒ áƒ›áƒ”ბრსáƒáƒ–ღვრებით',
+ 'wikieditor-toolbar-tool-table-sortable' => 'სáƒáƒ áƒ¢áƒ˜áƒ áƒ”ბული ცხრილის შექმნáƒ',
+ 'wikieditor-toolbar-tool-table-example' => 'მáƒáƒ’áƒáƒšáƒ˜áƒ—ი',
+ 'wikieditor-toolbar-tool-table-preview' => 'წინáƒáƒ¡áƒ¬áƒáƒ ',
+ 'wikieditor-toolbar-tool-table-insert' => 'ჩáƒáƒ¡áƒ›áƒ',
+ 'wikieditor-toolbar-tool-table-cancel' => 'გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ',
+ 'wikieditor-toolbar-tool-table-toomany' => 'ეს დიáƒáƒšáƒáƒ’ი ვერ შექმნის $1 უჯრედზე მეტი უჯრედის შემცვლელ ტáƒáƒ‘ულáƒáƒ¡',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'თქვენ áƒáƒ  მიგითითებიáƒáƒ— ხáƒáƒ–ების áƒáƒœ სვეტების რáƒáƒáƒ“ენáƒáƒ‘áƒ',
+ 'wikieditor-toolbar-tool-table-zero' => 'თქვენ ვერ ჩáƒáƒ¡áƒ•áƒáƒ•áƒ— ხáƒáƒ–ების áƒáƒœ სვეტების ნულáƒáƒ•áƒáƒœ რáƒáƒáƒ“ენáƒáƒ‘áƒáƒ¡',
+ 'wikieditor-toolbar-tool-replace' => 'ძებნრდრშეცვლáƒ',
+ 'wikieditor-toolbar-tool-replace-title' => 'ძებნრდრშეცვლáƒ',
+ 'wikieditor-toolbar-tool-replace-search' => 'ძიებáƒ:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'შეცვლáƒ:',
+ 'wikieditor-toolbar-tool-replace-case' => 'რეგისტრის გáƒáƒ—ვáƒáƒšáƒ˜áƒ¡áƒ¬áƒ˜áƒœáƒ”ბáƒ',
+ 'wikieditor-toolbar-tool-replace-regex' => 'ჩáƒáƒ—ვáƒáƒšáƒ”თ ძიების ხáƒáƒ–ი რეგულáƒáƒ áƒ£áƒš გáƒáƒ›áƒáƒ¡áƒáƒ®áƒ£áƒšáƒ”ბáƒáƒ“',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'შემდეგის მáƒáƒ«áƒ˜áƒ”ბáƒ',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'შემდეგის ჩáƒáƒœáƒáƒªáƒ•áƒšáƒ”ბáƒ',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'შეცვáƒáƒšáƒ”თ ყველáƒáƒ¤áƒ”რი',
+ 'wikieditor-toolbar-tool-replace-close' => 'დáƒáƒ®áƒ£áƒ áƒ•áƒ',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'თქვენი მáƒáƒ—ხáƒáƒ•áƒœáƒ˜áƒ¡ შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒ˜ áƒáƒ áƒáƒ¤áƒ”რირნáƒáƒžáƒáƒ•áƒœáƒ˜',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 შეცვლრგáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლდáƒ.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'თქვენ áƒáƒ  მიუთითეთ სáƒáƒ«áƒ˜áƒ”ბელი.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'თქვენს მიერ შეტáƒáƒœáƒ˜áƒšáƒ˜ რეგულáƒáƒ áƒ£áƒšáƒ˜ გáƒáƒ›áƒáƒ¡áƒáƒ®áƒ£áƒšáƒ”ბრáƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ: $1',
+ 'wikieditor-toolbar-section-characters' => 'სპეციáƒáƒšáƒ£áƒ áƒ˜ სიმბáƒáƒšáƒáƒ”ბი',
+ 'wikieditor-toolbar-characters-page-latin' => 'ლáƒáƒ—ინური',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'ლáƒáƒ—ინური გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბáƒ',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'სიმბáƒáƒšáƒáƒ”ბი',
+ 'wikieditor-toolbar-characters-page-greek' => 'ბერძნული',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'კირილიცáƒ',
+ 'wikieditor-toolbar-characters-page-arabic' => 'áƒáƒ áƒáƒ‘ული',
+ 'wikieditor-toolbar-characters-page-persian' => 'სპáƒáƒ áƒ¡áƒ£áƒšáƒ˜',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'ებრáƒáƒ£áƒšáƒ˜',
+ 'wikieditor-toolbar-characters-page-bangla' => 'ბენგáƒáƒšáƒ£áƒ áƒ˜',
+ 'wikieditor-toolbar-characters-page-telugu' => 'ტელუგუ',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'სინგáƒáƒšáƒ£áƒ áƒ˜',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'გუჯáƒáƒ áƒáƒ—ი',
+ 'wikieditor-toolbar-characters-page-thai' => 'ტáƒáƒ˜áƒšáƒáƒœáƒ“ური',
+ 'wikieditor-toolbar-characters-page-lao' => 'ლáƒáƒáƒ¡áƒ£áƒ áƒ˜',
+ 'wikieditor-toolbar-characters-page-khmer' => 'ქჰმერული',
+ 'wikieditor-toolbar-section-help' => 'დáƒáƒ®áƒ›áƒáƒ áƒ”ბáƒ',
+ 'wikieditor-toolbar-help-heading-description' => 'áƒáƒ¦áƒ¬áƒ”რáƒ',
+ 'wikieditor-toolbar-help-heading-syntax' => 'რáƒáƒ¡ ბეჭდáƒáƒ•áƒ—',
+ 'wikieditor-toolbar-help-heading-result' => 'რáƒáƒ¡ მიიღებთ',
+ 'wikieditor-toolbar-help-page-format' => 'ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ áƒ”ბáƒ',
+ 'wikieditor-toolbar-help-page-link' => 'ბმულები',
+ 'wikieditor-toolbar-help-page-heading' => 'სáƒáƒ—áƒáƒ£áƒ áƒ”ბი',
+ 'wikieditor-toolbar-help-page-list' => 'სიები',
+ 'wikieditor-toolbar-help-page-file' => 'ფáƒáƒ˜áƒšáƒ”ბი',
+ 'wikieditor-toolbar-help-page-reference' => 'მინიშნებები',
+ 'wikieditor-toolbar-help-page-discussion' => 'გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ',
+ 'wikieditor-toolbar-help-content-italic-description' => 'კურსივი',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''დáƒáƒ®áƒ áƒ˜áƒšáƒ˜ ტექსტი''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>დáƒáƒ®áƒ áƒ˜áƒšáƒ˜ ტექსტი</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'სქელი',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''სქელი ტექსტი'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>სქელი ტექსტი</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'სქელი დáƒáƒ®áƒ áƒ˜áƒšáƒ˜',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''სქელი დáƒáƒ®áƒ áƒ˜áƒšáƒ˜ ტექსტი'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<em><strong>სქელი დáƒáƒ®áƒ áƒ˜áƒšáƒ˜ ტექსტი</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'შიდრბმული',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[გვერდის სáƒáƒ—áƒáƒ£áƒ áƒ˜|ბმულის წáƒáƒ áƒ¬áƒ”რáƒ]]<br />[[გვერდის სáƒáƒ—áƒáƒ£áƒ áƒ˜]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>ბმულის ტექსტი</a><br /><a href='#'>გვერდის სáƒáƒ—áƒáƒ£áƒ áƒ˜</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'გáƒáƒ áƒ” ბმული',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org ბმულის წáƒáƒ áƒ¬áƒ”რáƒ]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>ბმულის წáƒáƒ áƒ¬áƒ”რáƒ</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'მე-2&nbsp;დáƒáƒœáƒ˜áƒ¡ სáƒáƒ—áƒáƒ£áƒ áƒ˜',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== სáƒáƒ—áƒáƒ£áƒ áƒ˜áƒ¡ ტექსტი ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>სáƒáƒ—áƒáƒ£áƒ áƒ˜áƒ¡ ტექსტი</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'მე-3&nbsp;დáƒáƒœáƒ˜áƒ¡ სáƒáƒáƒ—áƒáƒ£áƒ áƒ˜',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== სáƒáƒ—áƒáƒ£áƒ áƒ˜áƒ¡ ტექსტი ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>სáƒáƒ—áƒáƒ£áƒ áƒ˜áƒ¡ ტექსტი</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'მე-4&nbsp; დáƒáƒœáƒ˜áƒ¡ სáƒáƒ—áƒáƒ£áƒ áƒ˜',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== სáƒáƒ—áƒáƒ£áƒ áƒ˜áƒ¡ ტექსტი ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>სáƒáƒ—áƒáƒ£áƒ áƒ˜áƒ¡ ტექსტი</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'მე-5&nbsp; დáƒáƒœáƒ˜áƒ¡ სáƒáƒ—áƒáƒ£áƒ áƒ˜',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== სáƒáƒ—áƒáƒ£áƒ áƒ˜áƒ¡ ტექსტი =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>სáƒáƒ—áƒáƒ£áƒ áƒ˜áƒ¡ ტექსტი</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'მáƒáƒ áƒ™áƒ˜áƒ áƒ”ბული სიáƒ',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* სიის ელემენტი<br />* სიის ელემენტი',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>სიის ელემენტი</li><li>სიის ელემენტი</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'დáƒáƒœáƒáƒ›áƒ áƒ˜áƒšáƒ˜ სიáƒ',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '#სიის ელემენტი<br /># სიის ელემენტი',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>სიის ელემენტი</li><li>სიის ელემენტი</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'ჩáƒáƒ¡áƒ›áƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ˜',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|წáƒáƒ áƒ¬áƒ”რის ტექსტი]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='წáƒáƒ áƒ¬áƒ”რის ტექსტი' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>წáƒáƒ áƒ¬áƒ”რის ტექსტი</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'მინიშნებáƒ',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'გვერდის ტექსტი&lt;ref name="test"&gt;[http://www.example.org ბმულის ტექსტი], დáƒáƒ›áƒáƒ¢áƒ”ბითი ტექსტი.&lt;/ref&gt;.',
+ 'wikieditor-toolbar-help-content-reference-result' => "გვერდის ტექსტი<sup><a href='#'>[1]</a></sup>.",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'იგივე მინიშნების დáƒáƒ›áƒáƒ¢áƒ”ბითი გáƒáƒ›áƒáƒ§áƒ”ნებáƒ',
+ 'wikieditor-toolbar-help-content-rereference-result' => "გვერდის ტექსტი<sup><a href='#'>[1]</a></sup>.",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'სქáƒáƒšáƒ˜áƒáƒ¡ ჩვენებáƒ',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>ბმულის ტექსტი</a>, დáƒáƒ›áƒáƒ¢áƒ”ბითი ტექსტი.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ხელმáƒáƒ¬áƒ”რრდრáƒáƒ˜áƒ¡ მითითებით',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი</a> (<a href='#' title='{{#special:mytalk}}'>გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ</a>) 15:54, 10 ივნისი 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ხელმáƒáƒ¬áƒ”რáƒ',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი</a> (<a href='#' title='{{#special:mytalk}}'>გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'შეწევáƒ',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'ჩვეულებრივი ტექსტი<br />:შეწეული ტექსტი<br />::შეწეული ტექსტი',
+ 'wikieditor-toolbar-help-content-indent-result' => 'ჩვეულებრივი ტექსტი<dl><dd>შეწეული ტექსტი<dl><dd>შეწეული ტექსტი</dd></dl></dd></dl>',
+);
+
+/** Kabardian (Cyrillic) (КъÑбÑÑ€Ð´ÐµÐ¸Ð±Ð·Ñ / QabardjajÉ™bza (Cyrillic))
+ * @author Bogups
+ */
+$messages['kbd-cyrl'] = array(
+ 'wikieditor-toolbar-tool-reference' => 'ЩӀÑупӀщӀÑгъуÑ',
+ 'wikieditor-toolbar-section-advanced' => 'ÐÑхъыбу',
+ 'wikieditor-toolbar-section-characters' => 'ДÑÐ¼Ñ‹Ð³ÑŠÑ ÑпециалхÑÑ€',
+);
+
+/** Kirmanjki (Kırmancki)
+ * @author Mirzali
+ */
+$messages['kiu'] = array(
+ 'wikieditor-toolbar-tool-link' => 'Girê',
+);
+
+/** Khmer (ភាសាážáŸ’មែរ)
+ * @author គីមស៊្រុន
+ */
+$messages['km'] = array(
+ 'wikieditor-loading' => 'កំពុងផ្ទុក',
+ 'wikieditor-publish-button-publish' => 'បោះផ្សាយ',
+ 'wikieditor-publish-button-cancel' => 'បោះបង់',
+ 'wikieditor-publish-dialog-title' => 'បោះផ្សាយក្នុង{{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'ចំណារពន្យល់ (រៀបរាប់ដោយសង្ážáŸáž”ពីកំណែប្រែដែលអ្នកបានធ្វើឡើង)៖',
+ 'wikieditor-publish-dialog-minor' => 'កំណែប្រែážáž·áž…ážáž½áž…',
+ 'wikieditor-publish-dialog-watch' => 'ážáž¶áž˜ážŠáž¶áž“​ទំពáŸážšáž“áŸáŸ‡',
+ 'wikieditor-publish-dialog-publish' => 'បោះផ្សាយ',
+ 'wikieditor-publish-dialog-goback' => 'ážáŸ’រឡប់​ក្រោយ',
+ 'wikieditor-template-editor-dialog-submit' => 'ធ្វើឱ្យទាន់សមáŸáž™',
+ 'wikieditor-template-editor-dialog-cancel' => 'បោះបង់',
+ 'wikieditor-toc-show' => 'បង្ហាញážáŸ’លឺមសារ',
+ 'wikieditor-toc-hide' => 'លាក់ážáŸ’លឹមសារ',
+ 'wikieditor-toolbar' => 'របារឧបករណáŸáž€áŸ‚ប្រែ',
+ 'wikieditor-toolbar-loading' => 'កំពុងផ្ទុក…',
+ 'wikieditor-toolbar-tool-bold' => 'អក្សរដិáž',
+ 'wikieditor-toolbar-tool-bold-example' => 'អážáŸ’ážáž”ទជាអក្សរដិáž',
+ 'wikieditor-toolbar-tool-italic' => 'អក្សរទ្រáŸáž',
+ 'wikieditor-toolbar-tool-italic-example' => 'អážáŸ’ážáž”ទជាអក្សរទ្រáŸáž',
+ 'wikieditor-toolbar-tool-ilink' => 'ážáŸ†ážŽáž—្ជាប់​ážáž¶áž„ក្នុង',
+ 'wikieditor-toolbar-tool-ilink-example' => 'ចំណងជើង​ážáŸ†ážŽáž—្ជាប់',
+ 'wikieditor-toolbar-tool-xlink' => 'ážáŸ†ážŽáž—្ជាប់​ážáž¶áž„ក្រៅ (កុំភ្លáŸáž…​ដាក់ http:// នៅពីមុáž)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com ចំណងជើង​ážáŸ†ážŽáž—្ជាប់',
+ 'wikieditor-toolbar-tool-link' => 'ážáŸ†ážŽâ€‹áž—្ជាប់',
+ 'wikieditor-toolbar-tool-link-title' => 'បញ្ចូលážáŸ†ážŽáž—្ជាប់',
+ 'wikieditor-toolbar-tool-link-int' => 'ទៅកាន់ទំពáŸážšáž€áŸ’នុងវិគី',
+ 'wikieditor-toolbar-tool-link-int-target' => 'ទំពáŸážšáž‚ោលដៅឬURL៖',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'ចំណងជើងទំពáŸážšáž«URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'ពាក្យដែលážáŸ’រូវបង្ហាញ៖',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'ពាក្យដែលážáŸ’រូវបង្ហាញ',
+ 'wikieditor-toolbar-tool-link-ext' => 'ទៅកាន់ទំពáŸážšážœáž·áž”សាយážáž¶áž„ក្រៅ',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'ážáŸ†ážŽáž—្ជាប់URL',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'ពាក្យážáŸ’រូវដាក់ážáŸ†ážŽáž—្ជាប់៖',
+ 'wikieditor-toolbar-tool-link-insert' => 'បញ្ចូលážáŸ†ážŽáž—្ជាប់',
+ 'wikieditor-toolbar-tool-link-cancel' => 'បោះបង់​',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'ទំពáŸážšâ€‹áž˜áž¶áž“រួចហើយ',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'ទំពáŸážšáž˜áž·áž“ទាន់មាន',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ចំណងជើងមិនážáŸ’រឹមážáŸ’រូវ',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'ážáŸ†ážŽáž—្ជាប់​ážáž¶áž„ក្រៅ',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'កំពុងពិនិážáŸ’áž™ážáž¶ážáž¾áž‘ំពáŸážšáž˜áž¶áž“ហើយឫនៅ...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'ចំណងជើងដែលអ្នកបានផ្ដល់អោយមិនážáŸ’រឹមážáŸ’រូវទáŸ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URLដែលអ្នកបានផ្ដល់អោយ ទំនងជាážáŸ†ážŽáž—្ជាប់ទៅកាន់ទំពáŸážšáž˜áž½áž™áž‘ៀážáž€áŸ’នុងវិគី។
+
+ážáž¾áž¢áŸ’នកចង់ប្ដូរវាជាážáŸ†ážŽáž—្ជាប់ážáž¶áž„ក្នុងវិញទáŸ?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'ážáŸ†ážŽáž—្ជាប់​ážáž¶áž„ក្នុង',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'ážáŸ†ážŽáž—្ជាប់​ážáž¶áž„ក្រៅ',
+ 'wikieditor-toolbar-tool-link-empty' => 'អ្នកមិនបានវាយបញ្ចូលពាក្យសំរាប់ដាក់ážáŸ†ážŽáž—្ជាប់ទáŸáŸ”',
+ 'wikieditor-toolbar-tool-file' => 'រូបភាពបង្កប់',
+ 'wikieditor-toolbar-tool-file-example' => 'ឧទាហរណáŸ.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'ឯកសារយោង',
+ 'wikieditor-toolbar-tool-reference-example' => 'បញ្ចូលអážáŸ’ážáž”ទយោងនៅទីនáŸáŸ‡',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'បោះបង់',
+ 'wikieditor-toolbar-tool-reference-title' => 'បញ្ចូលឯកសារយោង',
+ 'wikieditor-toolbar-tool-reference-insert' => 'បញ្ចូល',
+ 'wikieditor-toolbar-tool-reference-text' => 'អážáŸ’ážáž”ទយោង',
+ 'wikieditor-toolbar-tool-signature' => 'áž ážáŸ’ážáž›áŸážáž¶â€‹áž“ិងកាលបរិច្ឆáŸáž‘',
+ 'wikieditor-toolbar-section-advanced' => 'ážáŸ’នាក់ážáŸ’ពស់',
+ 'wikieditor-toolbar-tool-heading' => 'កូនចំណងជើង',
+ 'wikieditor-toolbar-tool-heading-1' => 'កំរិážáŸ¡',
+ 'wikieditor-toolbar-tool-heading-2' => 'កំរិážáŸ¢',
+ 'wikieditor-toolbar-tool-heading-3' => 'កំរិážáŸ£',
+ 'wikieditor-toolbar-tool-heading-4' => 'កំរិážáŸ¤',
+ 'wikieditor-toolbar-tool-heading-5' => 'កំរិážáŸ¥',
+ 'wikieditor-toolbar-tool-heading-example' => 'អážáŸ’ážáž”ទកូនចំណងជើង',
+ 'wikieditor-toolbar-group-format' => 'ទំរង់',
+ 'wikieditor-toolbar-tool-ulist' => 'បញ្ជីផ្ដើមដោយážáŸ’ážšáŸ',
+ 'wikieditor-toolbar-tool-ulist-example' => 'ធាážáž»ážšáž”ស់បញ្ជីផ្ដើមដោយážáŸ’ážšáŸ',
+ 'wikieditor-toolbar-tool-olist' => 'បញ្ជីផ្ដើមដោយលáŸážážšáŸ€áž„',
+ 'wikieditor-toolbar-tool-olist-example' => 'ធាážáž»ážšáž”ស់បញ្ជីផ្ដើមដោយលáŸážážšáŸ€áž„',
+ 'wikieditor-toolbar-tool-indent' => 'ចូលបន្ទាážáŸ‹',
+ 'wikieditor-toolbar-tool-indent-example' => 'ជួរចូលបន្ទាážáŸ‹',
+ 'wikieditor-toolbar-tool-nowiki' => 'មិនមានទំរង់វិគី',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'បញ្ចូល​អážáŸ’ážáž”ទគ្មានទម្រង់​នៅទីនáŸáŸ‡',
+ 'wikieditor-toolbar-tool-redirect' => 'បញ្ជូនបន្áž',
+ 'wikieditor-toolbar-tool-redirect-example' => 'ទំពáŸážšáž‚ោលដៅ',
+ 'wikieditor-toolbar-tool-big' => 'ធំ',
+ 'wikieditor-toolbar-tool-big-example' => 'អážáŸ’ážáž”ទធំ',
+ 'wikieditor-toolbar-tool-small' => 'ážáž¼áž…',
+ 'wikieditor-toolbar-tool-small-example' => 'អážáŸ’ážáž”áž‘ážáž¼áž…',
+ 'wikieditor-toolbar-tool-superscript' => 'និទស្សន្ážáž“áŸ',
+ 'wikieditor-toolbar-tool-superscript-example' => 'ឃ្លាជានិទស្សន្ážáž“áŸ',
+ 'wikieditor-toolbar-tool-subscript' => 'សន្ទស្សនáŸ',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ឃ្លាជាសន្ទស្សនáŸ',
+ 'wikieditor-toolbar-group-insert' => 'បញ្ជូល',
+ 'wikieditor-toolbar-tool-gallery' => 'វិចិážáŸ’រសាលរូបភាព',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:ឧទាហរណáŸ.jpg|ចំនងជើងក្រោមរូបភាព១
+
+$1:ឧទាហរណáŸ.jpg|ចំនងជើងក្រោមរូបភាព២',
+ 'wikieditor-toolbar-tool-newline' => 'ចុះបន្ទាážáŸ‹',
+ 'wikieditor-toolbar-tool-table' => 'ážáž¶ážšáž¶áž„',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! ឈ្មោះជួរឈរ 1
+! ឈ្មោះជួរឈរ 2
+! ឈ្មោះជួរឈរ 3
+|-
+| ជួរដáŸáž€ 1, ប្រអប់ 1
+| ជួរដáŸáž€ 1, ប្រអប់ 2
+| ជួរដáŸáž€ 1, ប្រអប់ 3
+|-
+| ជួរដáŸáž€ 2, ប្រអប់ 1
+| ជួរដáŸáž€ 2, ប្រអប់ 2
+| ជួរដáŸáž€ 2, ប្រអប់ 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'អážáŸ’ážáž”ទក្នុងប្រអប់',
+ 'wikieditor-toolbar-tool-table-example-header' => 'ឈ្មោះជួរឈរ',
+ 'wikieditor-toolbar-tool-table-title' => 'បញ្ចូលážáž¶ážšáž¶áž„',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'ជួរដáŸáž€',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'ជួរឈរ',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'បន្ážáŸ‚មជáŸážšážŠáŸáž€ážˆáŸ’មោះជួរឈរ',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'រចនាបážáž˜áž¶áž“ស៊ុមពáŸáž‘្ធជុំវិញ',
+ 'wikieditor-toolbar-tool-table-sortable' => 'ធ្វើážáž¶ážšáž¶áž„ដែលអាចធ្វើការážáŸ†ážšáŸ€áž”ážáž¶áž˜áž¢áž€áŸ’ážážšáž€áŸ’រមបាន',
+ 'wikieditor-toolbar-tool-table-example' => 'ឧទាហរណáŸ',
+ 'wikieditor-toolbar-tool-table-preview' => 'មើលជាមុន',
+ 'wikieditor-toolbar-tool-table-insert' => 'បញ្ចូល',
+ 'wikieditor-toolbar-tool-table-cancel' => 'បោះបង់​',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'អ្នកមិនបានបញ្ចូលចំនួនជួរដáŸáž€áž“ិងជួរឈរបានážáŸ’រឹមážáŸ’រូវទáŸáŸ”',
+ 'wikieditor-toolbar-tool-table-zero' => 'អ្នកមិនអាចបញ្ចូលážáž¶ážšáž¶áž„ដែលមានជួរដáŸáž€áž¬áž‡áž½ážšážˆážšáž…ំនួនសូន្យបានទáŸáŸ”',
+ 'wikieditor-toolbar-tool-replace' => 'ស្វែងរកនិងជំនួស',
+ 'wikieditor-toolbar-tool-replace-title' => 'ស្វែងរកនិងជំនួស',
+ 'wikieditor-toolbar-tool-replace-search' => 'ស្វែងរក៖',
+ 'wikieditor-toolbar-tool-replace-replace' => 'ជំនួសដោយ៖',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'រុករក​បន្ទាប់​',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'ជំនួសអážáŸ’ážáž”áž‘',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'ជំនួសទាំងអស់',
+ 'wikieditor-toolbar-tool-replace-close' => 'បិទ',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'រកមិនឃើញអ្វីដែលអ្នកចង់រកទáŸáŸ”',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'អ្នកមិនបានវាយបញ្ចូលពាក្យសំរាប់ស្វែងរកទáŸáŸ”',
+ 'wikieditor-toolbar-section-characters' => 'ážáž½áž¢áž€áŸ’សរពិសáŸážŸáŸ—',
+ 'wikieditor-toolbar-characters-page-latin' => 'អក្សរឡាážáž¶áŸ†áž„',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'អក្សរឡាážáž¶áŸ†áž„ផ្សáŸáž„ទៀáž',
+ 'wikieditor-toolbar-characters-page-ipa' => 'អក្ážážšáž€áŸ’រមសំលáŸáž„អន្ážážšáž‡áž¶ážáž·',
+ 'wikieditor-toolbar-characters-page-symbols' => 'សញ្ញា',
+ 'wikieditor-toolbar-characters-page-greek' => 'អក្សរក្រិច',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'អក្សរស៊ីរីល',
+ 'wikieditor-toolbar-characters-page-arabic' => 'អក្សរអារ៉ាប់',
+ 'wikieditor-toolbar-characters-page-persian' => 'អក្សរពែក្ស',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'អក្សរហáŸáž”៊្រូ',
+ 'wikieditor-toolbar-characters-page-bangla' => 'អក្សរបáŸáž„ក្លា',
+ 'wikieditor-toolbar-characters-page-telugu' => 'អក្សរážáž·áž›áž‚្គ',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'អក្សរស៊ិនហាឡា',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'អក្សរគុចរទី',
+ 'wikieditor-toolbar-characters-page-thai' => 'អក្សរážáŸƒ',
+ 'wikieditor-toolbar-characters-page-lao' => 'អក្សរឡាវ',
+ 'wikieditor-toolbar-characters-page-khmer' => 'អក្សរážáŸ’មែរ',
+ 'wikieditor-toolbar-section-help' => 'ជំនួយ',
+ 'wikieditor-toolbar-help-heading-description' => 'ការពិពណ៌នា',
+ 'wikieditor-toolbar-help-heading-syntax' => 'អ្វីដែលអ្នកវាយបញ្ចូល',
+ 'wikieditor-toolbar-help-heading-result' => 'អ្វីដែលអ្នកបាន',
+ 'wikieditor-toolbar-help-page-format' => 'ទំរង់ទ្រង់ទ្រាយ',
+ 'wikieditor-toolbar-help-page-link' => 'ážáŸ†ážŽáž—្ជាប់',
+ 'wikieditor-toolbar-help-page-heading' => 'កូនចំនងជើង',
+ 'wikieditor-toolbar-help-page-list' => 'បញ្ជី',
+ 'wikieditor-toolbar-help-page-file' => 'ឯកសារ',
+ 'wikieditor-toolbar-help-page-reference' => 'ឯកសារយោង',
+ 'wikieditor-toolbar-help-page-discussion' => 'ការពិភាក្សា',
+ 'wikieditor-toolbar-help-content-italic-description' => 'អក្សរទ្រáŸáž',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''អážáŸ’ážáž”ទជាអក្សរទ្រáŸáž''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>អážáŸ’ážáž”ទជាអក្សរទ្រáŸáž</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'អក្សរដិáž',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''អážáŸ’ážáž”ទជាអក្សរដិáž'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>អážáŸ’ážáž”ទជាអក្សរដិáž</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'អក្សរដិហ&amp; ទ្រáŸáž',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''អážáŸ’ážáž”ទជាអក្សរដិហ&amp; ទ្រáŸáž'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>អážáŸ’ážáž”ទជាអក្សរដិហ&amp; ទ្រáŸáž</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'ážáŸ†ážŽáž—្ជាប់​ážáž¶áž„ក្នុង',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[ចំនងជើងទំពáŸážš|ប្លាកសំគាល់ážáŸ†áž“ភ្ជាប់]]<br />[[ចំនងជើងទំពáŸážš]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>ប្លាកសំគាល់ážáŸ†áž“ភ្ជាប់</a><br /><a href='#'>ចំនងជើងទំពáŸážš</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'ážáŸ†ážŽáž—្ជាប់​ážáž¶áž„ក្រៅ',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.ឧទាហរណáŸ.org ប្លាកសំគាល់ážáŸ†áž“ភ្ជាប់]<br />[http://www.ឧទាហរណáŸ.org]<br />http://www.ឧទាហរណáŸ.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>ប្លាកសំគាល់ážáŸ†áž“ភ្ជាប់</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.ឧទាហរណáŸ.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'កូនចំនងជើងកំរិážáŸ¢',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== កូនចំនងជើង ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>កូនចំនងជើង</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'កូនចំនងជើងកំរិážáŸ£',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== កូនចំនងជើង ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>កូនចំនងជើង</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'កូនចំនងជើងកំរិážáŸ¤',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== កូនចំនងជើង ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>កូនចំនងជើង</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'កូនចំនងជើងកំរិážáŸ¥',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== កូនចំនងជើង =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>កូនចំនងជើង</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'បញ្ជីផ្ដើមដោយážáŸ’ážšáŸ',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* ធាážáž»ážšáž”ស់បញ្ជី<br />* ធាážáž»ážšáž”ស់បញ្ជី',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>ធាážáž»ážšáž”ស់បញ្ជី</li><li>ធាážáž»ážšáž”ស់បញ្ជី</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'បញ្ជីផ្ដើមដោយលáŸáž',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# ធាážáž»ážšáž”ស់បញ្ជី<br /># ធាážáž»ážšáž”ស់បញ្ចី',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>ធាážáž»ážšáž”ស់បញ្ជី</li><li>ធាážáž»ážšáž”ស់បញ្ជី</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'រូបភាពបង្កប់',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:ឧទាហរណáŸ.png|thumb|កូនចំនងជើងក្រោមរូបភាព]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='ចំណងជើងក្រោមរូបភាព' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='ពង្រីក' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>ចំណងជើងក្រោមរូបភាព</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'ឯកសារ​យោង​',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'អážáŸ’ážáž”ទ​ទំពáŸážšâ€‹.&lt;ref name="test"&gt;[http://www.example.org ážáŸ†ážŽâ€‹áž—្ជាប់], អក្សរ​បន្ážáŸ‚ម​.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "អážáŸ’ážáž”ទ​ទំពáŸážšâ€‹.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'ការប្រើប្រាស់​បន្ážáŸ‚ម​នៃ​ឯកសារ​យោង​ដូចគ្នា​',
+ 'wikieditor-toolbar-help-content-rereference-result' => "អážáŸ’ážáž”ទ​ទំពáŸážšâ€‹.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'បង្ហាញ​ឯកសារ​យោង​',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>អážáŸ’ážáž”áž‘ážáŸ†ážŽáž—្ជាប់/a>, អážáŸ’ážáž”ទបន្ážáŸ‚ម។</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'áž ážáŸ’ážáž›áŸážáž¶â€‹ ជាមួយនឹង​ážáŸ’រាពáŸáž›ážœáŸáž›áž¶â€‹',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>អážáŸ’ážáž“ាម</a> (<a href='#' title='{{#special:mytalk}}'>ការពិភាក្សា</a>) ១៥:៥៤, ១០ មិážáž»áž“ា ២០០៩ (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'áž ážáŸ’ážáž›áŸážáž¶â€‹',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>អážáŸ’ážáž“ាម</a> (<a href='#' title='{{#special:mytalk}}'>ការពិភាក្សា</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'ážáž·ážáž…ូល (Indent)',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'អក្សរ​ធម្មážáž¶â€‹<br />:អក្សរ​ážáž·ážáž…ូល​<br />::អក្សរ​ážáž·ážáž…ូល​',
+ 'wikieditor-toolbar-help-content-indent-result' => 'អក្សរ​ធម្មážáž¶â€‹â€‹<dl><dd>អក្សរ​ážáž·ážáž…ូល​<dl><dd>អក្សរ​ážáž·ážáž…ូល​</dd></dl></dd></dl>',
+);
+
+/** Kannada (ಕನà³à²¨à²¡)
+ * @author Nayvik
+ */
+$messages['kn'] = array(
+ 'wikieditor-preview-tab' => 'ಮà³à²¨à³à²¨à³‹à²Ÿ',
+ 'wikieditor-previewDialog-tab' => 'ಮà³à²¨à³à²¨à³‹à²Ÿ',
+ 'wikieditor-template-editor-dialog-cancel' => 'ರದà³à²¦à³ ಮಾಡà³',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'ರದà³à²¦à³ ಮಾಡà³',
+ 'wikieditor-toolbar-tool-heading-1' => 'ದರà³à²œà³† ೧',
+ 'wikieditor-toolbar-tool-heading-2' => 'ದರà³à²œà³† ೨',
+ 'wikieditor-toolbar-tool-heading-3' => 'ದರà³à²œà³† ೩',
+ 'wikieditor-toolbar-tool-heading-4' => 'ದರà³à²œà³† ೪',
+ 'wikieditor-toolbar-tool-heading-5' => 'ದರà³à²œà³† ೫',
+ 'wikieditor-toolbar-group-format' => 'ಪಟà³à²Ÿà²¿',
+ 'wikieditor-toolbar-tool-table' => 'ಪಟà³à²Ÿà²¿',
+ 'wikieditor-toolbar-tool-table-example' => 'ಉದಾಹರಣೆ',
+ 'wikieditor-toolbar-tool-table-preview' => 'ಮà³à²¨à³à²¨à³‹à²Ÿ',
+ 'wikieditor-toolbar-characters-page-latin' => 'ಲà³à²¯à²¾à²Ÿà²¿à²¨',
+ 'wikieditor-toolbar-characters-page-greek' => 'ಗà³à²°à³€à²•à³',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ಅರೇಬಿಕà³',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'ಹೀಬà³à²°à³‚',
+ 'wikieditor-toolbar-characters-page-telugu' => 'ತೆಲà³à²—à³',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'ಗà³à²œà²°à²¾à²¤à²¿',
+ 'wikieditor-toolbar-help-page-list' => 'ಪಟà³à²Ÿà²¿à²—ಳà³',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== ಶೀರà³à²·à²¿à²•à³† ಪಠà³à²¯ ==',
+ 'wikieditor-toolbar-help-content-signature-description' => 'ಸಹಿ',
+);
+
+/** Korean (한국어)
+ * @author Devunt
+ * @author IRTC1015
+ * @author Klutzy
+ * @author Kwj2772
+ */
+$messages['ko'] = array(
+ 'wikieditor' => 'í™•ìž¥ëœ ìœ„í‚¤í…스트 편집 ì¸í„°íŽ˜ì´ìŠ¤',
+ 'wikieditor-desc' => 'í™•ìž¥ëœ ìœ„í‚¤ 문법 편집 ì¸í„°íŽ˜ì´ìŠ¤ì™€ 다양한 ê¸°ëŠ¥ì„ ì œê³µí•˜ëŠ” ëª¨ë“ˆì„ ì œê³µ',
+ 'wikieditor-wikitext-tab' => '위키í…스트',
+ 'wikieditor-loading' => '로딩중',
+ 'wikieditor-preview-preference' => '미리 보기 ë¹„êµ í™œì„±í™”',
+ 'wikieditor-preview-tab' => '미리 보기',
+ 'wikieditor-preview-changes-tab' => 'ì°¨ì´',
+ 'wikieditor-preview-loading' => '불러오는 중...',
+ 'wikieditor-previewDialog-preference' => '미리보기 대화 ìƒìž 사용하기',
+ 'wikieditor-previewDialog-tab' => '미리 보기',
+ 'wikieditor-previewDialog-loading' => '불러오는 중...',
+ 'wikieditor-publish-preference' => '한 단계씩 게시 활성화',
+ 'wikieditor-publish-button-publish' => '게시',
+ 'wikieditor-publish-button-cancel' => '취소',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}}ì— ê²Œì‹œ',
+ 'wikieditor-publish-dialog-summary' => '편집 요약 (ë¬´ì—‡ì„ íŽ¸ì§‘í–ˆëŠ”ì§€ 간략하게 설명합니다):',
+ 'wikieditor-publish-dialog-minor' => '사소한 편집',
+ 'wikieditor-publish-dialog-watch' => 'ì´ ë¬¸ì„œ 주시하기',
+ 'wikieditor-publish-dialog-publish' => '게시',
+ 'wikieditor-publish-dialog-goback' => 'ëŒì•„가기',
+ 'wikieditor-template-editor-preference' => '위키 í‹€ì˜ í¼ ê¸°ë°˜ íŽ¸ì§‘ì„ í™œì„±í™”í•˜ê¸°',
+ 'wikieditor-template-editor-dialog-title' => '틀 편집하기',
+ 'wikieditor-template-editor-dialog-submit' => 'ì—…ë°ì´íŠ¸',
+ 'wikieditor-template-editor-dialog-cancel' => '취소',
+ 'wikieditor-templates-preference' => '틀 접기 활성화하기',
+ 'wikieditor-toc-preference' => '편집용 목차를 활성화',
+ 'wikieditor-toc-show' => '내용 보기',
+ 'wikieditor-toc-hide' => '내용 숨김',
+ 'wikieditor-toolbar' => '편집 툴바',
+ 'wikieditor-toolbar-desc' => 'ì‚¬ìš©ì„±ì´ í–¥ìƒëœ 편집 툴바',
+ 'wikieditor-toolbar-preference' => 'ê¸°ëŠ¥ì´ í–¥ìƒëœ 편집 툴바 사용하기',
+ 'wikieditor-toolbar-dialogs-preference' => 'ë§í¬ì™€ í‘œ ë“±ì„ ì‚½ìž…í•  ë•Œ 대화 ìƒìž 사용하기',
+ 'wikieditor-toolbar-hidesig' => 'ì¼ë°˜ 문서 ì´ë¦„공간ì—ì„œ 서명 단추를 숨기기',
+ 'wikieditor-toolbar-loading' => '불러오는 중…',
+ 'wikieditor-toolbar-tool-bold' => 'êµµì€ ê¸€ì”¨',
+ 'wikieditor-toolbar-tool-bold-example' => 'êµµì€ ê¸€ì”¨',
+ 'wikieditor-toolbar-tool-italic' => 'ê¸°ìš¸ì¸ ê¸€ì”¨',
+ 'wikieditor-toolbar-tool-italic-example' => 'ê¸°ìš¸ì¸ ê¸€ì”¨',
+ 'wikieditor-toolbar-tool-ilink' => '내부 ë§í¬',
+ 'wikieditor-toolbar-tool-ilink-example' => '문서 제목',
+ 'wikieditor-toolbar-tool-xlink' => '외부 사ì´íŠ¸ ë§í¬ (주소 ì•žì— http://ê°€ 있어야 합니다.)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com ë§í¬ ì´ë¦„',
+ 'wikieditor-toolbar-tool-link' => 'ë§í¬',
+ 'wikieditor-toolbar-tool-link-title' => 'ë§í¬ 추가',
+ 'wikieditor-toolbar-tool-link-int' => '위키 문서로 연결',
+ 'wikieditor-toolbar-tool-link-int-target' => '문서 제목:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => '문서 제목 ë˜ëŠ” URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'ë§í¬ í…스트:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'ë¬¸ì„œì— í‘œì‹œë˜ëŠ” 문장',
+ 'wikieditor-toolbar-tool-link-ext' => '외부 웹 페ì´ì§€ë¡œ ì—°ê²°',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'ë§í¬ URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'ë§í¬ í…스트:',
+ 'wikieditor-toolbar-tool-link-insert' => 'ë§í¬ 추가하기',
+ 'wikieditor-toolbar-tool-link-cancel' => '취소',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => '문서가 존재합니다.',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => '문서가 존재하지 않습니다.',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ì œëª©ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤.',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => '외부 ë§í¬',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => '문서가 존재하는 지 í™•ì¸ ì¤‘â€¦',
+ 'wikieditor-toolbar-tool-link-int-invalid' => '입력한 ì œëª©ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'ë‹¹ì‹ ì´ ìž…ë ¥í•œ URLì€ ë‹¤ë¥¸ 내부 ë¬¸ì„œì¼ ìˆ˜ 있습니다. 내부 ë§í¬ë¡œ 바꾸시겠습니까?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => '내부 ë§í¬',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => '외부 ë§í¬',
+ 'wikieditor-toolbar-tool-link-empty' => 'ë§í¬í•  대ìƒì„ 입력하지 않았습니다.',
+ 'wikieditor-toolbar-tool-file' => 'íŒŒì¼ ë„£ê¸°',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => '출처',
+ 'wikieditor-toolbar-tool-reference-example' => 'ì—¬ê¸°ì— ì¶œì²˜ ë‚´ìš©ì„ ì ì–´ 주세요',
+ 'wikieditor-toolbar-tool-reference-cancel' => '취소',
+ 'wikieditor-toolbar-tool-reference-title' => 'ì£¼ì„ ì¶”ê°€',
+ 'wikieditor-toolbar-tool-reference-insert' => '추가',
+ 'wikieditor-toolbar-tool-reference-text' => '참조 í…스트',
+ 'wikieditor-toolbar-tool-signature' => '서명 ë° ì‹œê°',
+ 'wikieditor-toolbar-section-advanced' => '고급 기능',
+ 'wikieditor-toolbar-tool-heading' => '문단 제목',
+ 'wikieditor-toolbar-tool-heading-1' => '1단계',
+ 'wikieditor-toolbar-tool-heading-2' => '2단계',
+ 'wikieditor-toolbar-tool-heading-3' => '3단계',
+ 'wikieditor-toolbar-tool-heading-4' => '4단계',
+ 'wikieditor-toolbar-tool-heading-5' => '5단계',
+ 'wikieditor-toolbar-tool-heading-example' => '제목',
+ 'wikieditor-toolbar-group-format' => '기능',
+ 'wikieditor-toolbar-tool-ulist' => '순서 없는 목ë¡',
+ 'wikieditor-toolbar-tool-ulist-example' => '항목',
+ 'wikieditor-toolbar-tool-olist' => '순서 있는 목ë¡',
+ 'wikieditor-toolbar-tool-olist-example' => '항목',
+ 'wikieditor-toolbar-tool-indent' => '들여쓰기',
+ 'wikieditor-toolbar-tool-indent-example' => '들여쓰기',
+ 'wikieditor-toolbar-tool-nowiki' => '위키 문법 사용하지 않기',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'ì—¬ê¸°ì— ìœ„í‚¤ ë¬¸ë²•ì„ ì‚¬ìš©í•˜ì§€ ì•Šì„ ê¸€ì„ ì ì–´ 주세요',
+ 'wikieditor-toolbar-tool-redirect' => '넘겨주기',
+ 'wikieditor-toolbar-tool-redirect-example' => 'ëŒ€ìƒ ë¬¸ì„œ ì´ë¦„',
+ 'wikieditor-toolbar-tool-big' => 'í¬ê²Œ',
+ 'wikieditor-toolbar-tool-big-example' => 'í° ê¸€ìž',
+ 'wikieditor-toolbar-tool-small' => '작게',
+ 'wikieditor-toolbar-tool-small-example' => 'ìž‘ì€ ê¸€ìž',
+ 'wikieditor-toolbar-tool-superscript' => '위 첨ìž',
+ 'wikieditor-toolbar-tool-superscript-example' => '위 첨ìž',
+ 'wikieditor-toolbar-tool-subscript' => '아래 첨ìž',
+ 'wikieditor-toolbar-tool-subscript-example' => '아래 첨ìž',
+ 'wikieditor-toolbar-group-insert' => '추가',
+ 'wikieditor-toolbar-tool-gallery' => '화랑',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|설명1
+$1:Example.jpg|설명2',
+ 'wikieditor-toolbar-tool-newline' => '새 줄',
+ 'wikieditor-toolbar-tool-table' => '표',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! 제목 1
+! 제목 2
+! 제목 3
+|-
+| 1í–‰ 1ì—´
+| 1í–‰ 2ì—´
+| 1í–‰ 3ì—´
+|-
+| 2í–‰ 1ì—´
+| 2í–‰ 2ì—´
+| 2í–‰ 3ì—´',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ì…€ ë‚´ìš©',
+ 'wikieditor-toolbar-tool-table-example-header' => '표 제목',
+ 'wikieditor-toolbar-tool-table-title' => '표 추가하기',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'í–‰',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'ì—´',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'í‘œ ì œëª©ëž€ì„ í¬í•¨ì‹œí‚¤ê¸°',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'ì…€ ê²½ê³„ì„ ì´ ìžˆëŠ” 스타ì¼',
+ 'wikieditor-toolbar-tool-table-sortable' => '표를 정렬 가능하게 만들기',
+ 'wikieditor-toolbar-tool-table-example' => 'ì…€ ë‚´ìš©',
+ 'wikieditor-toolbar-tool-table-preview' => '미리 보기',
+ 'wikieditor-toolbar-tool-table-insert' => '추가',
+ 'wikieditor-toolbar-tool-table-cancel' => '취소',
+ 'wikieditor-toolbar-tool-table-toomany' => 'ì´ ê¸°ëŠ¥ì„ í†µí•´ì„œëŠ” $1ê°œ ì´ìƒì˜ ì…€ì„ ê°€ì§„ í‹€ì„ ì¶”ê°€í•  수 없습니다.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'ë‹¹ì‹ ì€ í–‰ì´ë‚˜ ì—´ì˜ ê°œìˆ˜ë¥¼ 잘못 입력하였습니다.',
+ 'wikieditor-toolbar-tool-table-zero' => 'í–‰ì´ë‚˜ ì—´ì˜ ê°œìˆ˜ê°€ 0ì¸ í‘œë¥¼ 추가할 수 없습니다.',
+ 'wikieditor-toolbar-tool-replace' => '찾아 바꾸기',
+ 'wikieditor-toolbar-tool-replace-title' => '찾아 바꾸기',
+ 'wikieditor-toolbar-tool-replace-search' => '찾기:',
+ 'wikieditor-toolbar-tool-replace-replace' => '바꾸기:',
+ 'wikieditor-toolbar-tool-replace-case' => '대소문ìžë¥¼ 구별',
+ 'wikieditor-toolbar-tool-replace-regex' => 'ì°¾ì„ ë¬¸ìžì—´ì— ì •ê·œ 표현ì‹ì„ ì ìš©',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'ë‹¤ìŒ ì°¾ê¸°',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'ë‹¤ìŒ ë°”ê¾¸ê¸°',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'ëª¨ë‘ ë°”ê¾¸ê¸°',
+ 'wikieditor-toolbar-tool-replace-close' => '닫기',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'ì¼ì¹˜í•˜ëŠ” 문ìžì—´ì„ 찾지 못했습니다.',
+ 'wikieditor-toolbar-tool-replace-success' => '문ìžì—´ì„ $1회 치환하였습니다.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'ì°¾ì„ ë¬¸ìžì—´ì„ 입력하지 않았습니다.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'ë‹¹ì‹ ì´ ìž…ë ¥í•œ ì •ê·œ 표현ì‹ì´ 잘못ë˜ì—ˆìŠµë‹ˆë‹¤: $1',
+ 'wikieditor-toolbar-section-characters' => '특수문ìž',
+ 'wikieditor-toolbar-characters-page-latin' => 'ë¼í‹´ 문ìž',
+ 'wikieditor-toolbar-characters-page-latinextended' => '확장 ë¼í‹´ 문ìž',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA 문ìž',
+ 'wikieditor-toolbar-characters-page-symbols' => '기호',
+ 'wikieditor-toolbar-characters-page-greek' => '그리스 문ìž',
+ 'wikieditor-toolbar-characters-page-cyrillic' => '키릴 문ìž',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ì•„ëž ë¬¸ìž',
+ 'wikieditor-toolbar-characters-page-persian' => '페르시아어',
+ 'wikieditor-toolbar-characters-page-hebrew' => '히브리 문ìž',
+ 'wikieditor-toolbar-characters-page-bangla' => '뱅골어',
+ 'wikieditor-toolbar-characters-page-telugu' => '텔루구어 문ìž',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'ì‹±í• ë¼ ë¬¸ìž',
+ 'wikieditor-toolbar-characters-page-gujarati' => '구ìžë¼íŠ¸ 문ìž',
+ 'wikieditor-toolbar-characters-page-thai' => '타ì´ì–´',
+ 'wikieditor-toolbar-characters-page-lao' => 'ë¼ì˜¤ì–´',
+ 'wikieditor-toolbar-characters-page-khmer' => 'í¬ë©”르어',
+ 'wikieditor-toolbar-section-help' => 'ë„움ë§',
+ 'wikieditor-toolbar-help-heading-description' => '설명',
+ 'wikieditor-toolbar-help-heading-syntax' => '입력하는 내용',
+ 'wikieditor-toolbar-help-heading-result' => 'ë¬¸ì„œì— ë‚˜ì˜¤ëŠ” ê²°ê³¼',
+ 'wikieditor-toolbar-help-page-format' => 'ê¸€ìž ëª¨ì–‘',
+ 'wikieditor-toolbar-help-page-link' => 'ë§í¬',
+ 'wikieditor-toolbar-help-page-heading' => '문단 제목',
+ 'wikieditor-toolbar-help-page-list' => '목ë¡',
+ 'wikieditor-toolbar-help-page-file' => '파ì¼',
+ 'wikieditor-toolbar-help-page-reference' => '출처',
+ 'wikieditor-toolbar-help-page-discussion' => '토론',
+ 'wikieditor-toolbar-help-content-italic-description' => 'ê¸°ìš¸ì¸ ê¸€ì”¨',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''ê¸°ìš¸ì¸ ê¸€ì”¨''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>ê¸°ìš¸ì¸ ê¸€ì”¨</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'êµµì€ ê¸€ì”¨',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''êµµì€ ê¸€ì”¨'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>êµµì€ ê¸€ì”¨</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => '굵고 ê¸°ìš¸ì¸ ê¸€ì”¨',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''굵고 ê¸°ìš¸ì¸ ê¸€ì”¨'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>굵고 ê¸°ìš¸ì¸ ê¸€ì”¨</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => '내부 ë§í¬',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[문서 ì´ë¦„|다른 ì´ë¦„]]<br />
+[[문서 ì´ë¦„]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>다른 ì´ë¦„</a><br /><a href='#'>문서 ì´ë¦„</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => '외부 ë§í¬',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org ë§í¬ ì´ë¦„]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>ë§í¬ ì´ë¦„</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2단계 제목',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== 제목 ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>제목</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3단계 제목',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== 제목 ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>제목</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4단계 제목',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== 제목 ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>제목</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5단계 제목',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== 제목 =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>제목</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => '순서 없는 목ë¡',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* ëª©ë¡ í•­ëª©<br />* ëª©ë¡ í•­ëª©',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>ëª©ë¡ í•­ëª©</li><li>ëª©ë¡ í•­ëª©</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => '순서 있는 목ë¡',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# ëª©ë¡ í•­ëª©<br /># ëª©ë¡ í•­ëª©',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>ëª©ë¡ í•­ëª©</li><li>ëª©ë¡ í•­ëª©</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'íŒŒì¼ ë„£ê¸°',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|그림 설명]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='실제 í¬ê¸°ë¡œ' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>그림 설명</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => '출처',
+ 'wikieditor-toolbar-help-content-reference-syntax' => '문서 ë‚´ìš©.&lt;ref name="test"&gt;[http://www.example.org ë§í¬ 제목], 기타 설명.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "문서 내용.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'ê¸°ì¡´ì— ë¶™ì¸ ì¶œì²˜ 재사용하기',
+ 'wikieditor-toolbar-help-content-rereference-result' => "문서 내용.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => '출처 표시하기',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>ë§í¬ 제목</a>, 기타 설명.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => '서명 ë° ì‹œê°',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>ì‚¬ìš©ìž ì´ë¦„</a> (<a href='#' title='{{#special:mytalk}}'>토론</a>) 2009ë…„ 6ì›” 10ì¼ (수) 15:54 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => '서명',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>ì‚¬ìš©ìž ì´ë¦„</a> (<a href='#' title='{{#special:mytalk}}'>토론</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => '들여쓰기',
+ 'wikieditor-toolbar-help-content-indent-syntax' => '보통 글<br />:ë“¤ì—¬ì“°ê¸°ëœ ê¸€<br />::ë“¤ì—¬ì“°ê¸°ëœ ê¸€',
+ 'wikieditor-toolbar-help-content-indent-result' => '보통 글<dl><dd>ë“¤ì—¬ì“°ê¸°ëœ ê¸€<dl><dd>ë“¤ì—¬ì“°ê¸°ëœ ê¸€</dd></dl></dd></dl>',
+);
+
+/** Karachay-Balkar (Къарачай-Малкъар)
+ * @author Iltever
+ * @author Къарачайлы
+ */
+$messages['krc'] = array(
+ 'wikieditor' => 'ВикитекÑÑ‚ редакторлауну кенгертилген интерфейÑи',
+ 'wikieditor-desc' => 'ВикитекÑÑ‚ редакторлауну кенгертилген интерфейÑин Ñмда модулла берген кёб башха функциÑны джетиштиреди.',
+ 'wikieditor-wikitext-tab' => 'ВикитекÑÑ‚',
+ 'wikieditor-loading' => 'Джюклеу',
+ 'wikieditor-preview-preference' => 'Бир бири къатында ал къарауну джандыр',
+ 'wikieditor-preview-tab' => 'Ðл къарау',
+ 'wikieditor-preview-changes-tab' => 'Тюрлениуле',
+ 'wikieditor-preview-loading' => 'Джюклениу...',
+ 'wikieditor-publish-preference' => 'Ðтлам-атлам чыгъарыуну джандыр',
+ 'wikieditor-publish-button-publish' => 'Чыгъар',
+ 'wikieditor-publish-button-cancel' => 'Ызына алыу',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}} проектде чыгъар',
+ 'wikieditor-publish-dialog-summary' => 'Тюрлениулени ачыкълау (къаллай тюрлениулени Ñтилгенин къыÑхаÑÑ‹ бла белгилегиз):',
+ 'wikieditor-publish-dialog-minor' => 'Гитче тюрлендириу',
+ 'wikieditor-publish-dialog-watch' => 'Бу бетни Ñынчыкъла',
+ 'wikieditor-publish-dialog-publish' => 'Чыгъар',
+ 'wikieditor-publish-dialog-goback' => 'Ðртха',
+ 'wikieditor-template-editor-preference' => 'Шаблонланы формала бла тюрлендириу амалны джандыр',
+ 'wikieditor-template-editor-dialog-title' => 'Шаблонну тюрлендириу',
+ 'wikieditor-template-editor-dialog-submit' => 'Джангырт',
+ 'wikieditor-template-editor-dialog-cancel' => 'Ызына алыу',
+ 'wikieditor-templates-preference' => 'Шаблонланы джашырыу амалны джандыр',
+ 'wikieditor-toc-preference' => 'ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð°Ð¼Ð°Ð»Ñ‹ бла ичиндегилени таблицаÑын джандыр',
+ 'wikieditor-toc-show' => 'Башларын кёргюз',
+ 'wikieditor-toc-hide' => 'Башларын джашыр',
+ 'wikieditor-toolbar' => 'Тюзетиулени панели',
+ 'wikieditor-toolbar-desc' => 'Хайырланыр мадары игиленнген тюрлендириу панель',
+ 'wikieditor-toolbar-preference' => 'Игиленнген тюрлендириу панелни джандыр',
+ 'wikieditor-toolbar-dialogs-preference' => 'Джибериулени, таблицаланы Ñмда андан башханы къошар ючюн диалогланы джандыр',
+ 'wikieditor-toolbar-loading' => 'Джюклениу...',
+ 'wikieditor-toolbar-tool-bold' => 'Къалын',
+ 'wikieditor-toolbar-tool-bold-example' => 'Къалын джазыу',
+ 'wikieditor-toolbar-tool-italic' => 'КурÑив',
+ 'wikieditor-toolbar-tool-italic-example' => 'КурÑив джазыу',
+ 'wikieditor-toolbar-tool-ilink' => 'Ич джибериу',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Джибериуню башлыгъы',
+ 'wikieditor-toolbar-tool-xlink' => 'Тыш джибериу (http:// префикÑни унутмагъыз)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com линкни ачыкълауу',
+ 'wikieditor-toolbar-tool-link' => 'Джибериу',
+ 'wikieditor-toolbar-tool-link-title' => 'Джибериуню Ñал',
+ 'wikieditor-toolbar-tool-link-int' => 'Вики-бетге',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Ðюзюр Ñтилген бет неда URL',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Бетни башлыгъы неда URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Кёргюзюлген текÑÑ‚',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Кёргюзюлюрге керек текÑтни Ñалыгъыз',
+ 'wikieditor-toolbar-tool-link-ext' => 'Тыш веб-бетге',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Джибериуню URL-и:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Джибериуню текÑти',
+ 'wikieditor-toolbar-tool-link-insert' => 'Джибериуню Ñал',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Ызына алыу',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Бет барды',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Быллай бет джокъду',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ДжарауÑуз ат',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Тыш джибериу',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Бетни бар болууу Ñыналады...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Белгиленнген ат джарауÑузду',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Кёргюзген URL, башха вики бетге джибериу Ñтилирге изленнгеннге ушайды. Ðннга къарамай ич джибериу Ñтерге излеймиÑиз?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Ич джибериу',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Тыш джибериу',
+ 'wikieditor-toolbar-tool-link-empty' => 'Джибериу Ñтилирча джукъ белгилемегенÑиз',
+ 'wikieditor-toolbar-tool-file' => 'Эндирилген файл',
+ 'wikieditor-toolbar-tool-file-example' => 'Юлгю.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Белги',
+ 'wikieditor-toolbar-tool-reference-example' => 'Белгини текÑтин былайгъа Ñалыгъыз',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Ызына алыу',
+ 'wikieditor-toolbar-tool-reference-title' => 'Билгини Ñал',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Сал',
+ 'wikieditor-toolbar-tool-reference-text' => 'Белгини текÑти',
+ 'wikieditor-toolbar-tool-signature' => 'Къол Ñалыннган бла заман белгиÑи',
+ 'wikieditor-toolbar-section-advanced' => 'Къошакъ',
+ 'wikieditor-toolbar-tool-heading' => 'Башлыкъ',
+ 'wikieditor-toolbar-tool-heading-1' => '1-чи дараджа',
+ 'wikieditor-toolbar-tool-heading-2' => '2-чи дараджа',
+ 'wikieditor-toolbar-tool-heading-3' => '3-чю дараджа',
+ 'wikieditor-toolbar-tool-heading-4' => '4-чю дараджа',
+ 'wikieditor-toolbar-tool-heading-5' => '5-чи дараджа',
+ 'wikieditor-toolbar-tool-heading-example' => 'Башлыкъны текÑти',
+ 'wikieditor-toolbar-group-format' => 'Формат',
+ 'wikieditor-toolbar-tool-ulist' => 'Ышанлы ÑпиÑок',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Ышанлы ÑпиÑокну Ñлементи',
+ 'wikieditor-toolbar-tool-olist' => 'Ðомерленнген ÑпиÑок',
+ 'wikieditor-toolbar-tool-olist-example' => 'Ðомерли ÑпиÑокну Ñлементи',
+ 'wikieditor-toolbar-tool-indent' => 'Ðбзац',
+ 'wikieditor-toolbar-tool-indent-example' => 'Ðбзацлы тизгин',
+ 'wikieditor-toolbar-tool-nowiki' => 'Вики-формат Ñтиуню игнор ÑÑ‚',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Формат Ñтилинмеген текÑтни бери Ñалыгъыз',
+ 'wikieditor-toolbar-tool-redirect' => 'Джангыдан джибериу',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ðюзюр бетни аты',
+ 'wikieditor-toolbar-tool-big' => 'Уллу',
+ 'wikieditor-toolbar-tool-big-example' => 'Уллу текÑÑ‚',
+ 'wikieditor-toolbar-tool-small' => 'Гитче',
+ 'wikieditor-toolbar-tool-small-example' => 'Гитче текÑÑ‚',
+ 'wikieditor-toolbar-tool-superscript' => 'Тизгин башы',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Тизгин башы текÑÑ‚',
+ 'wikieditor-toolbar-tool-subscript' => 'Тизгин тюбю',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Тизгин тюбю текÑÑ‚',
+ 'wikieditor-toolbar-group-insert' => 'Къош',
+ 'wikieditor-toolbar-tool-gallery' => 'Суратланы галереÑÑÑ‹',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Юлгю.jpg|Ðнгылатыу1
+$1:Юлгю.jpg|Ðнгылатыу2',
+ 'wikieditor-toolbar-tool-newline' => 'Джангы тизгин',
+ 'wikieditor-toolbar-tool-table' => 'Таблица',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! башлыкъ 1
+! башлыкъ 2
+! башлыкъ 3
+|-
+| тизгин 1, кюбюр 1
+| тизгин 1, кюбюр 2
+| тизгин 1, кюбюр 3
+|-
+| тизгин 2, кюбюр 1
+| тизгин 2, кюбюр 2
+| тизгин 2, кюбюр 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Кюбюрдеги текÑÑ‚',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Башлыкъны текÑти',
+ 'wikieditor-toolbar-tool-table-title' => 'Таблица Ñал',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Тизгинле',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Ðре тизгинле',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Башлыкъ тизгин къош',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Чекле бла Ñтиу',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Таблицаны тизиучю ÑÑ‚',
+ 'wikieditor-toolbar-tool-table-example' => 'Кюбюрню текÑти',
+ 'wikieditor-toolbar-tool-table-preview' => 'Ðл къарау',
+ 'wikieditor-toolbar-tool-table-insert' => 'Сал',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Ызына алыу',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Бу диалог $1 кюбюрден кёб таблица Ñалыргъа къоймайды.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Тизгинлеем неда ёре тизгинлени Ñанларын тюз джазмагъанÑыз.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Тизгинлерини неда ёре тизгинлерини Ñаны нуль болгъан таблица Ñалынмайды.',
+ 'wikieditor-toolbar-tool-replace' => 'Излеу бла алмашдырыу',
+ 'wikieditor-toolbar-tool-replace-title' => 'Излеу бла алмашдырыу',
+ 'wikieditor-toolbar-tool-replace-search' => 'Изле:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Мунга алмашдыр:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Уллу-гитче харифлени айыр',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Излеу тизгинни регулÑÑ€ выражениеге Ñана',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Эндигини таб',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Эндигини ауушдур',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Барын да ауушдур',
+ 'wikieditor-toolbar-tool-replace-close' => 'Джаб',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Сорууугъуз бла келишген ÑÑеб джокъду.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 ауушдуруу Ñтилгенди.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ðени излерге керек болгъанын белгилемегенÑиз.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Сиз джазгъан регулÑÑ€ выражение терÑди: $1',
+ 'wikieditor-toolbar-section-characters' => 'Энчи Ñимволла',
+ 'wikieditor-toolbar-characters-page-latin' => 'Латинча',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Кенгертилген латинча',
+ 'wikieditor-toolbar-characters-page-ipa' => 'Ð¥ÐФР(IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Символла',
+ 'wikieditor-toolbar-characters-page-greek' => 'Грекча',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Кириллица',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Ðрабча',
+ 'wikieditor-toolbar-characters-page-persian' => 'Къаджарча',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Иврит',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Бенгалча',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Телугу',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Сингалча',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Гуджарати',
+ 'wikieditor-toolbar-characters-page-thai' => 'Тай',
+ 'wikieditor-toolbar-characters-page-lao' => 'ЛаоÑ',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Кхмер',
+ 'wikieditor-toolbar-section-help' => 'Ðнгылатыу',
+ 'wikieditor-toolbar-help-heading-description' => 'Ðчыкълау',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Джазгъаныгъыз',
+ 'wikieditor-toolbar-help-heading-result' => 'Ðлгъаныгъыз',
+ 'wikieditor-toolbar-help-page-format' => 'Бичимлендириу',
+ 'wikieditor-toolbar-help-page-link' => 'Джибериуле',
+ 'wikieditor-toolbar-help-page-heading' => 'Башлыкъла',
+ 'wikieditor-toolbar-help-page-list' => 'СпиÑокла',
+ 'wikieditor-toolbar-help-page-file' => 'Файлла',
+ 'wikieditor-toolbar-help-page-reference' => 'Белгиле',
+ 'wikieditor-toolbar-help-page-discussion' => 'Сюзюу',
+ 'wikieditor-toolbar-help-content-italic-description' => 'КурÑив',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''КурÑив джазыу''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>КурÑив джазыу</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Къалын',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Къалын джазыу'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Къалын джазыу</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Къалын курÑив',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Къалын курÑив'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<em><strong>Къалын курÑив</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Ич джибериу',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Бетни башлыгъы|Джибериуню текÑти]]<br />[[Бетни башлыгъы]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Джибериуню текÑти</a><br /><a href='#'>Бетни башлыгъы</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Тыш джибериу',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Джибериуню текÑти]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Джибериуню текÑти</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2-чи дараджа башлыкъ',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Башлыкъны текÑти ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Башлыкъны текÑти</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3-чю дараджа башлыкъ',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Башлыкъны текÑти ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Башлыкъны текÑти</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4-чю дараджа башлыкъ',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Башлыкъны текÑти ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Башлыкъны текÑти</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5-чи дараджа башлыкъ',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Башлыкъны текÑти =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Башлыкъны текÑти</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Ышанлы ÑпиÑок',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* СпиÑокну Ñлементи<br />* СпиÑокну Ñлементи',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>СпиÑокну Ñлементи</li><li>СпиÑокну Ñлементи</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Ðомерленнген ÑпиÑок',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# СпиÑокну Ñлементи<br /># СпиÑокну Ñлементи',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>СпиÑокну Ñлементи</li><li>СпиÑокну Ñлементи</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Эндирилген файл',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Ðчыкълау текÑÑ‚]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='
+Ðчыкълау текÑÑ‚' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Уллайт' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>
+Ðчыкълау текÑÑ‚</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Белги',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Бетни текÑти.&lt;ref name="test"&gt;[http://www.example.org Джибериуню текÑти], къошакъ текÑÑ‚.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Бетни текÑти.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Бир белгини джангыдан хайырланыу',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Бетни текÑти.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Белгилени кёргюз',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Джибериуню текÑти</a>, къошакъ текÑÑ‚.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Къол Ñалыннган бла заман белгиÑи',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Къошлуучуну аты</a> (<a href='#' title='{{#special:mytalk}}'>Ñюзюу</a>) 15:54, 10 июнь 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Къол',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Къошлуучуну аты</a> (<a href='#' title='{{#special:mytalk}}'>Ñюзюу</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Бош атлам',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Ðормал текÑÑ‚<br />:Бош атламы бла текÑÑ‚<br />::Бош атламы бла текÑÑ‚',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Ðормал текÑÑ‚<dl><dd>Бош атламы бла текÑÑ‚<dl><dd>Бош атламы бла текÑÑ‚</dd></dl></dd></dl>',
+);
+
+/** Colognian (Ripoarisch)
+ * @author Purodha
+ */
+$messages['ksh'] = array(
+ 'wikieditor' => 'Fottjeschredde Eddiror för de WikiTäx',
+ 'wikieditor-desc' => 'Brängk en Müjjeleschkeit för Wikitäx enzejävve un ze ändere en et Wiki, di mer ußboue kann, un noch allerhand Kröhmsches met dobei hät.',
+ 'wikieditor-wikitext-tab' => 'Wikitäx',
+ 'wikieditor-loading' => 'Am Lade',
+ 'wikieditor-preview-preference' => "Donn de {{int:preview}} nevve'eneijn zohlohße",
+ 'wikieditor-preview-tab' => '{{int:preview}}',
+ 'wikieditor-preview-changes-tab' => 'Änderunge',
+ 'wikieditor-preview-loading' => 'Ben aam Laade{{int:ellipsis}}',
+ 'wikieditor-previewDialog-preference' => 'Donn de Frooch noh ene Aansish vöraf aanschallde',
+ 'wikieditor-previewDialog-tab' => '{{int:preview}}',
+ 'wikieditor-previewDialog-loading' => 'Ben aam Laade{{int:ellipsis}}',
+ 'wikieditor-publish-preference' => 'Et Schrett för Schrett öffentlesch Maache zohlohße',
+ 'wikieditor-publish-button-publish' => 'Öffentlesch maache!',
+ 'wikieditor-publish-button-cancel' => '{{int:cancel}}',
+ 'wikieditor-publish-dialog-title' => 'En dä {{SITENAME}} öffentlesch maache',
+ 'wikieditor-publish-dialog-summary' => 'Koot Zosammejefass (Wat De verändert häs, en koot):',
+ 'wikieditor-publish-dialog-minor' => '{{int:minoredit}}',
+ 'wikieditor-publish-dialog-watch' => '{{int:watchthis}}',
+ 'wikieditor-publish-dialog-publish' => '{{int:wikieditor-publish-button-publish}}',
+ 'wikieditor-publish-dialog-goback' => 'Jangk Retuur!',
+ 'wikieditor-template-editor-preference' => 'Schablone em Wiki övver Fommulaare ändere',
+ 'wikieditor-template-editor-dialog-title' => 'Schablon beärbeide',
+ 'wikieditor-template-editor-dialog-submit' => 'Lohß Jonn!',
+ 'wikieditor-template-editor-dialog-cancel' => 'Ophüre',
+ 'wikieditor-templates-preference' => 'Donn et Schablone-Zosammefallde zohlohße',
+ 'wikieditor-toc-preference' => 'Schalld e Enhaltsverzeischnes aan, woh mer dren eröm wandere kann',
+ 'wikieditor-toc-show' => 'Enhalld aanzeije',
+ 'wikieditor-toc-hide' => 'Enhalld verschteische',
+ 'wikieditor-toolbar' => 'Werkzüsh för et Ändere',
+ 'wikieditor-toolbar-desc' => 'Verbesserte Werkzüsh för et Ändere',
+ 'wikieditor-toolbar-preference' => 'Donn et ußföerlesh Werkzüsh för et Ändere aanzeije (bruch Java_Skripp)',
+ 'wikieditor-toolbar-dialogs-preference' => 'Donn de Lengks aanzeije för Lengks, Tabälle, un mieh en Sigge em Wiki ennzefööje',
+ 'wikieditor-toolbar-hidesig' => 'Donn dä Knopp för de „Ongerschreff“ nit aanzeije för nomaale Sigge vum Wiki singem Enhalld.',
+ 'wikieditor-toolbar-loading' => 'Am Laade{{int:ellipsis}}',
+ 'wikieditor-toolbar-tool-bold' => 'Fätte Schreff',
+ 'wikieditor-toolbar-tool-bold-example' => 'Fätte Schreff',
+ 'wikieditor-toolbar-tool-italic' => 'Scheive Schreff',
+ 'wikieditor-toolbar-tool-italic-example' => 'Scheive Schreff',
+ 'wikieditor-toolbar-tool-ilink' => 'Lenk en et Wiki',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Dä Tittel vun dä Sigk, woh dä Lengk drop jonn sull',
+ 'wikieditor-toolbar-tool-xlink' => 'Lengk noh Ußerhallf vum Wiki',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com Täx för Aanzezeije, för däm Lengk singe Anker',
+ 'wikieditor-toolbar-tool-link' => 'Lenk',
+ 'wikieditor-toolbar-tool-link-title' => 'Donn ene Lengk dobei',
+ 'wikieditor-toolbar-tool-link-int' => 'Op en Sigg em Wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Dä Sigg iere Tittel:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Jif dä Sigg iere Tittel udder ene <i lang="en">URL</i> en',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Dat Woot udder de Wööter zom Aanklecke:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Jif dä Täx en, dä aanjezeijsch wääde sullt',
+ 'wikieditor-toolbar-tool-link-ext' => 'Op en Websigg ußerhallef',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Dä <i lang="en">URL</i> för dä Lengk:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'De Wööt zem Aanklecke:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Lohß Jonn!',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Ophüre!',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Di Sigg jidd_et alld',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Di Sigg jidd_et nit',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Dat es ene onjöltijje Tittel för en Sigg',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ene Lengk noh ußerhallef vum Wiki',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Ben aam Prööfe, ov et di Sigg jitt{{int:ellipsis}}',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Dä aanjejovve Tittel för en Sigg en onjöltesch.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Ding <i lang="en">URL</i> schingk obb en Sigg em Wiki sellver ze jon. Wells De ene ääschte Lengk en et Wiki druß maache?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Ene Lengk en et Wiki',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ene Lengk uß em Wiki moh ußerhallef',
+ 'wikieditor-toolbar-tool-link-empty' => 'Mer han nix faßjehallde för ne Lingk drop ze maache.',
+ 'wikieditor-toolbar-tool-file' => 'Enjefösh Dattei',
+ 'wikieditor-toolbar-tool-file-example' => 'Beld_Beishpöll.jpeg',
+ 'wikieditor-toolbar-tool-reference' => 'Fohßnoht',
+ 'wikieditor-toolbar-tool-reference-example' => 'Donn hef dä Täx es för en Fohßnoht enjävve',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Ophüre',
+ 'wikieditor-toolbar-tool-reference-title' => 'Ene einzelne Verwieß enfööje',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Lohß Jonn!',
+ 'wikieditor-toolbar-tool-reference-text' => 'Dä Täx vun däm Verwieß',
+ 'wikieditor-toolbar-tool-signature' => '„Ongerschreff“ met Dattum un Uhrzick',
+ 'wikieditor-toolbar-section-advanced' => 'Fottjeschredde',
+ 'wikieditor-toolbar-tool-heading' => 'Övverschreff',
+ 'wikieditor-toolbar-tool-heading-1' => 'Om bövverschte Nivvoh',
+ 'wikieditor-toolbar-tool-heading-2' => 'Om zwette Nivvoh',
+ 'wikieditor-toolbar-tool-heading-3' => 'Om dette Nivvoh',
+ 'wikieditor-toolbar-tool-heading-4' => 'Om veete Nivvoh',
+ 'wikieditor-toolbar-tool-heading-5' => 'Om fönnefte Nivvoh',
+ 'wikieditor-toolbar-tool-heading-example' => 'Dä Övverschreff iere Tex',
+ 'wikieditor-toolbar-group-format' => 'Fommaat:',
+ 'wikieditor-toolbar-tool-ulist' => 'En Leß met Knöpp',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Ene Enndraach en dä Leß',
+ 'wikieditor-toolbar-tool-olist' => 'En Leß met Nummere',
+ 'wikieditor-toolbar-tool-olist-example' => 'Ene Enndraach en dä Leß',
+ 'wikieditor-toolbar-tool-indent' => 'Enjeröck',
+ 'wikieditor-toolbar-tool-indent-example' => 'Enjeröck Reih',
+ 'wikieditor-toolbar-tool-nowiki' => 'Der Wiki-Code för et Fommatteere üvverjonn',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Jif dä Tex en, dä vun de Wiki-Soffwär nit bearbeid, un en Rauh jelooße wääde soll',
+ 'wikieditor-toolbar-tool-redirect' => 'En Ömleidung',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Dä Tittel vun dä Sigg, wo et hen jonn sull',
+ 'wikieditor-toolbar-tool-big' => 'Met en jröößer Schreff jeschrevve',
+ 'wikieditor-toolbar-tool-big-example' => 'Met en jröößer Schreff jeschrevve',
+ 'wikieditor-toolbar-tool-small' => 'Met en kleiner Schreff jeschrevve',
+ 'wikieditor-toolbar-tool-small-example' => 'Met en kleiner Schreff jeschrevve',
+ 'wikieditor-toolbar-tool-superscript' => 'Huh jeschtallt',
+ 'wikieditor-toolbar-tool-superscript-example' => 'En noh bovve, huh jeschtallte Schreff jeschrevve',
+ 'wikieditor-toolbar-tool-subscript' => 'Deef jeschtallt',
+ 'wikieditor-toolbar-tool-subscript-example' => 'En deef, noh unge, jeschtallte Schreff jeschrevve',
+ 'wikieditor-toolbar-group-insert' => 'Erin donn:',
+ 'wikieditor-toolbar-tool-gallery' => 'Jallerih met Belldscher',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Beishpell.jpg|eezte Beld-Täx
+$1:Beishpell.jpg|zweijte Beld-Täx',
+ 'wikieditor-toolbar-tool-newline' => 'Neu Reih',
+ 'wikieditor-toolbar-tool-table' => 'Tabäll',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! 1. Shpalldekopp
+! 2. Shpalldekopp
+! 3. Shpalldekopp
+|-
+| 1. Reij, 1. Shpalldt
+| 1. Reij, 2. Shpalldt
+| 1. Reij, 3. Shpalldt
+|-
+| 2. Reij, 1. Shpalldt
+| 2. Reij, 2. Shpalldt
+| 2. Reij, 3. Shpalldt',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Täx en enem Feld en dä Tabäll',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Kopp-Täx',
+ 'wikieditor-toolbar-tool-table-title' => 'Tabäll ennfööje',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Zeile ov Reije',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Schpallde ov Kolommne',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Donn de Övverscherff jäz dobei',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Maach Linnije öm di Tabäll un zwesche de Felder',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Maach, dat mer di Tabäll zoteere kan',
+ 'wikieditor-toolbar-tool-table-example' => 'Täx en enem Feld en dä Tabäll',
+ 'wikieditor-toolbar-tool-table-preview' => '{{int:preview}}',
+ 'wikieditor-toolbar-tool-table-insert' => 'Lohß Jonn!',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Schloß! Ophüüre!',
+ 'wikieditor-toolbar-tool-table-toomany' => 'En Tabäll met mieh wi $1 Pläz kann heh dat Projramm nit en dä Täx enboue.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Do häs kein jöltije Zahl för de Reije udder de Schpallde enjejovve.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Do kanns kein Tabäll ennfööje, woh kein Schpallde udder kein Reije dren sin.',
+ 'wikieditor-toolbar-tool-replace' => 'Söhke un Tuusche',
+ 'wikieditor-toolbar-tool-replace-title' => 'Söhke un Ußtuusche',
+ 'wikieditor-toolbar-tool-replace-search' => 'Söhk noh:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Tuusch dat uß jähje:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Jruß un klein Boochstaave ongerscheide',
+ 'wikieditor-toolbar-tool-replace-regex' => '„{{int:Edittoolbar-tool-replace-search}}“ es en <i lang="en">regular expression</i>',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Dä näxte fenge',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Tuusche, un noh_m näxte jonn',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Alle ußtuusche',
+ 'wikieditor-toolbar-tool-replace-close' => 'Zohmaache',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Doh ham_mer nix jefonge.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 Mohl jet <!--{{PLURAL:$1|Eijmol|$1 Mohl jet|Nix}}--> jetuusch.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Do häs nix aanjejovve, för donoh ze söhke.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Do häs en onjöltijje <i lang="en">regular expression</i> aanjejovve: $1',
+ 'wikieditor-toolbar-section-characters' => 'Sönderzeijsche',
+ 'wikieditor-toolbar-characters-page-latin' => 'Lateinesch',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Lateinesch met Extras',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA, et engernazjonal foneetesch Alfabeet',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbole',
+ 'wikieditor-toolbar-characters-page-greek' => 'Jriischesch',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kyrillesch',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabesch',
+ 'wikieditor-toolbar-characters-page-persian' => 'Pärsesch',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebräjesch',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Benjaalesch',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Teluuju',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singhaleesesch',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Jujaraatesch',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thailändesch',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laotesch',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer-Kambodschaanesch',
+ 'wikieditor-toolbar-section-help' => 'Hölp',
+ 'wikieditor-toolbar-help-heading-description' => 'Beschrevve',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Wat De schriifs',
+ 'wikieditor-toolbar-help-heading-result' => 'Wat De kriß',
+ 'wikieditor-toolbar-help-page-format' => 'Fommaat',
+ 'wikieditor-toolbar-help-page-link' => 'Lengks',
+ 'wikieditor-toolbar-help-page-heading' => 'Övverschreffte',
+ 'wikieditor-toolbar-help-page-list' => 'Leßte',
+ 'wikieditor-toolbar-help-page-file' => 'Datteije',
+ 'wikieditor-toolbar-help-page-reference' => 'Fohßnuhte',
+ 'wikieditor-toolbar-help-page-discussion' => 'Klaaf',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Scheive Schreff',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Scheive Schreff''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Scheive Schreff</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Fätte Schreff',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Fätte Schreff'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Fätte Schreff</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Fätt un scheive Schreff',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Fätt un scheive Schreff'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Fätt un scheive Schreff</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Lengk en et Wiki',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Sigge_Tittel|Täx för dä Lengk]]<br />[[Sigge_Tittel]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => '<a href="#">Täx för dä Lengk</a><br /><a href="#">Sigge_Tittel</a>',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Lengk noh ußerhallf vum Wiki',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Täx för dä Lengk]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => '<a href="#" class="external">Täx för dä Lengk</a><br /><a href="#" class="external autonumber">[1]</a><br /><a href="#" class="external">http://www.example.org</a>',
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Övverschreff om zwette Nivvoh',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Övverschreff om zwette Nivvoh ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Övverschreff om zwette Nivvoh</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Övverschreff om drette Nivvoh',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Övverschreff om drette Nivvoh ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Övverschreff om drette Nivvoh</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '<h4>Övverschreff om veete Nivvoh</h4>',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Övverschreff om veete Nivvoh ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Övverschreff om veete Nivvoh</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '<h5>Övverschreff om fönnefte Nivvoh</h5>',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Övverschreff om fönnefte Nivvoh =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Övverschreff om fönnefte Nivvoh</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Leß met Knöpp',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Enndraach en de Leß<br />* Enndraach en de Leß',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Enndraach en de Leß</li><li>Enndraach en de Leß</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Leß met Nummere',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Enndraach en de Leß<br /># Enndraach en de Leß',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Enndraach en de Leß</li><li>Enndraach en de Leß</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Enjeföösch Dattei',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Beld_Ungerschreff]]',
+ 'wikieditor-toolbar-help-content-file-result' => '<div style="width:104px;" class="thumbinner"><a title="Schreff unger dä Beld" class="image" href="/wiki/File:Wiki.png"><img height="50" width="100" border="0" class="thumbimage" src="extensions/WikiEditor/modules/images/toolbar/example-image.png" alt=""/></a><div class="thumbcaption"><div class="magnify"><a title="Enlarge" class="internal" href="/wiki/File:Wiki.png"><img height="11" width="15" alt="" src="$1/common/images/magnify-clip.png"/></a></div>Schreff unger dä Beld</div></div>',
+ 'wikieditor-toolbar-help-content-reference-description' => 'Fohßnoht',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Tex en dä Sigg. &lt;ref name="versoht"&gt;[http://www.example.org Täx för dä Lengk], un noch jät mieh Täx.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => 'Tex en dä Sigg. <sup><a href="#">[1]</a></sup>',
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Noch ens desellve Fohßnoht bruche',
+ 'wikieditor-toolbar-help-content-rereference-result' => 'Tex en dä Sigg. <sup><a href="#">[1]</a></sup>',
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Fohßnuuhte aanzeije',
+ 'wikieditor-toolbar-help-content-showreferences-result' => '<ol class="references"><li id="cite_note-test-0"><b><a title="" href="#">^</a></b> <a rel="nofollow" title="http://www.example.org" class="external text" href="#">Täx för dä Lengk</a>, un noch jät mieh Täx.</li></ol>',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => '„Ongerschreff“ met Dattum un Uhrzick',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => '<a href="#" title="{{#special:mypage}}">Metmaacher_Name</a> (<a href="#" title="{{#special:mytalk}}">Klaaf</a>) 15:54, 10. Juni 2009 (CET)',
+ 'wikieditor-toolbar-help-content-signature-description' => '„Ongerschreff“',
+ 'wikieditor-toolbar-help-content-signature-result' => '<a href="#" title="{{#special:mypage}}">Metmaacher_Name</a> (<a href="#" title="{{#special:mytalk}}">Klaaf</a>)',
+ 'wikieditor-toolbar-help-content-indent-description' => 'Enjerök',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Nommaale Täx<br />:Enjerök<br />::Un norrens enjerök',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Nommaale Täx<dl><dd>Enjerök<dl><dd>Un norrens enjerök</dd></dl></dd></dl>',
+);
+
+/** Kurdish (Latin) (Kurdî (Latin))
+ * @author Erdal Ronahi
+ * @author George Animal
+ */
+$messages['ku-latn'] = array(
+ 'wikieditor-loading' => 'Bar dibe',
+ 'wikieditor-preview-tab' => 'Pêşdîtin',
+ 'wikieditor-preview-changes-tab' => 'Guhartin',
+ 'wikieditor-preview-loading' => 'Bar dibe…',
+ 'wikieditor-previewDialog-tab' => 'Pêşdîtin',
+ 'wikieditor-publish-button-publish' => 'WeÅŸandin',
+ 'wikieditor-publish-button-cancel' => 'Betal',
+ 'wikieditor-publish-dialog-minor' => 'Guhertina biçûk',
+ 'wikieditor-publish-dialog-watch' => 'Vê rûpelê bişopîne',
+ 'wikieditor-publish-dialog-publish' => 'WeÅŸandin',
+ 'wikieditor-publish-dialog-goback' => 'Vegere',
+ 'wikieditor-template-editor-dialog-title' => 'Şablonê biguherîne',
+ 'wikieditor-template-editor-dialog-submit' => 'Rojanekirin',
+ 'wikieditor-template-editor-dialog-cancel' => 'Betal',
+ 'wikieditor-toc-show' => 'Naverrokan nîşan bide',
+ 'wikieditor-toc-hide' => 'Naverokan veşêre',
+ 'wikieditor-toolbar-loading' => 'Bar dibe…',
+ 'wikieditor-toolbar-tool-bold' => 'Qalind',
+ 'wikieditor-toolbar-tool-bold-example' => 'Nivîsa qalind',
+ 'wikieditor-toolbar-tool-italic' => 'Xwar',
+ 'wikieditor-toolbar-tool-italic-example' => 'Nivîsa xwar',
+ 'wikieditor-toolbar-tool-ilink' => 'Lînka hundirî',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Sernavê lînkê',
+ 'wikieditor-toolbar-tool-xlink' => 'Lînka derveyî (pêşeka http:// ji bîr neke)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.minak.com sernavê lînkê',
+ 'wikieditor-toolbar-tool-link' => 'Lînk',
+ 'wikieditor-toolbar-tool-link-title' => 'Lînkê têxe',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Betal',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Rûpel heye',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Rûpel tune',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Lînka derve',
+ 'wikieditor-toolbar-tool-file-example' => 'Mînak.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referans',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Betal',
+ 'wikieditor-toolbar-tool-reference-title' => 'Referans têxe',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Têxistin',
+ 'wikieditor-toolbar-tool-reference-text' => 'Teksta referansê',
+ 'wikieditor-toolbar-tool-signature' => 'Destnîşan û demxeya demê',
+ 'wikieditor-toolbar-section-advanced' => 'Pêşketî',
+ 'wikieditor-toolbar-tool-heading' => 'Sernivîs',
+ 'wikieditor-toolbar-tool-heading-1' => 'Asta 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Asta 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Asta 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Asta 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Asta 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Teksta sernivîsê',
+ 'wikieditor-toolbar-group-format' => 'TeÅŸe',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Nivîs ku nebe formatkirin li vir têxe',
+ 'wikieditor-toolbar-tool-redirect' => 'Redirect',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Navê rûpela hedef',
+ 'wikieditor-toolbar-tool-big' => 'Mezin',
+ 'wikieditor-toolbar-tool-small' => 'Biçûk',
+ 'wikieditor-toolbar-tool-newline' => 'Rêzika nû',
+ 'wikieditor-toolbar-tool-table' => 'Tablo',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rêzik',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Sitûn',
+ 'wikieditor-toolbar-tool-table-example' => 'Mînak',
+ 'wikieditor-toolbar-tool-table-preview' => 'Pêşdîtin',
+ 'wikieditor-toolbar-tool-table-insert' => 'Têxistin',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Betal',
+ 'wikieditor-toolbar-tool-replace-close' => 'Girtin',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latinî',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latinî berfirehkirî',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Sembol',
+ 'wikieditor-toolbar-characters-page-greek' => 'Yewnanî',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kirîlî',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Erebî',
+ 'wikieditor-toolbar-characters-page-persian' => 'Farsî',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Îbranî',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telûgû',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gucaratî',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tay',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Xmer',
+ 'wikieditor-toolbar-section-help' => 'Alîkarî',
+ 'wikieditor-toolbar-help-heading-description' => 'Rave',
+ 'wikieditor-toolbar-help-page-format' => 'TeÅŸekirin',
+ 'wikieditor-toolbar-help-page-link' => 'Lînk',
+ 'wikieditor-toolbar-help-page-heading' => 'Sernivîs',
+ 'wikieditor-toolbar-help-page-list' => 'Lîste',
+ 'wikieditor-toolbar-help-page-file' => 'Pel',
+ 'wikieditor-toolbar-help-page-reference' => 'Referans',
+ 'wikieditor-toolbar-help-page-discussion' => 'Guftûgo',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Îtalîk',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Nivîşa îtalîk''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Nivîsa îtalîk</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Qalind',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Nivîsa qalind'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Nivîsa qalind</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Qalind û îtalîk',
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Nivîsa qalind û îtalîk</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Lînka hundirî',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Lînka derve',
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referans',
+ 'wikieditor-toolbar-help-content-signature-description' => 'ÃŽmze',
+);
+
+/** Cornish (Kernowek)
+ * @author Kw-Moon
+ */
+$messages['kw'] = array(
+ 'wikieditor-wikitext-tab' => 'Wikitext',
+ 'wikieditor-loading' => 'Ow carga',
+ 'wikieditor-preview-tab' => 'Ragweles',
+ 'wikieditor-preview-changes-tab' => 'Chanjyow',
+ 'wikieditor-preview-loading' => 'Ow carga...',
+ 'wikieditor-previewDialog-tab' => 'Ragwel',
+ 'wikieditor-previewDialog-loading' => 'Ow carga...',
+ 'wikieditor-publish-button-publish' => 'Dyllo',
+ 'wikieditor-publish-button-cancel' => 'Hedhy',
+ 'wikieditor-publish-dialog-title' => 'Dyllo war {{SITENAME}}',
+ 'wikieditor-publish-dialog-minor' => 'Chanj bian',
+ 'wikieditor-publish-dialog-watch' => 'Golyas an folen-ma',
+ 'wikieditor-publish-dialog-publish' => 'Dyllo',
+ 'wikieditor-template-editor-dialog-submit' => 'Nowedha',
+ 'wikieditor-template-editor-dialog-cancel' => 'Hedhy',
+ 'wikieditor-toolbar' => 'Toulvar chanjya',
+ 'wikieditor-toolbar-desc' => 'Bar toulys folen chanjya gen devnydh gwellhes',
+ 'wikieditor-toolbar-preference' => 'Galosegy bar toulys chanjya gwellhes',
+ 'wikieditor-toolbar-loading' => 'Ow carga...',
+ 'wikieditor-toolbar-tool-bold' => 'Tew',
+ 'wikieditor-toolbar-tool-bold-example' => 'Text tew',
+ 'wikieditor-toolbar-tool-italic' => 'Italek',
+ 'wikieditor-toolbar-tool-italic-example' => 'Text italek',
+ 'wikieditor-toolbar-tool-ilink' => 'Kevren bervedhel',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titel an gevren',
+ 'wikieditor-toolbar-tool-xlink' => 'Kevren a-mes (na nakevowgh an rager http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com titel an gevren',
+ 'wikieditor-toolbar-tool-link' => 'Kevren',
+ 'wikieditor-toolbar-tool-link-title' => 'Keworra kevren',
+ 'wikieditor-toolbar-tool-link-int' => 'War-tu folen wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Folen po URL costen:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titel po URL an folen:',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Text rag disqwedhes:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Text dhe vos disqwedhys',
+ 'wikieditor-toolbar-tool-link-ext' => 'War-tu folen wias a-mes',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL an gevren:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Text an gevren:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Keworra kevren',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Hedhy',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Titel drog',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Kevren a-mes',
+ 'wikieditor-toolbar-tool-link-int-invalid' => "Drog ew an titel a wrugo'whi ri.",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "Ma'n URL a wrugo'whi ri ow kevredna dhe folen wiki aral. A vedno'whi y dreylya dhe gevren bervedhel?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Kevren bervedhel',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Kevren a-mes',
+ 'wikieditor-toolbar-tool-link-empty' => "Na wrugo'whi entra tra vedh dhe gevredna dhodho.",
+ 'wikieditor-toolbar-tool-file' => 'Restren neythys',
+ 'wikieditor-toolbar-tool-file-example' => 'Ensampel.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Devyn',
+ 'wikieditor-toolbar-tool-reference-example' => 'Entrowgh text an drosnoten obma',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Hedhy',
+ 'wikieditor-toolbar-tool-reference-title' => 'Keworra devyn',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Keworra',
+ 'wikieditor-toolbar-tool-reference-text' => 'Text an devyn',
+ 'wikieditor-toolbar-tool-signature' => 'Sinans ha dedhyans',
+ 'wikieditor-toolbar-section-advanced' => 'Avoncys',
+ 'wikieditor-toolbar-tool-heading' => 'Titel',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivel 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivel 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivel 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivel 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivel 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Text an titel',
+ 'wikieditor-toolbar-group-format' => 'Furvyans',
+ 'wikieditor-toolbar-tool-ulist' => 'Rol bulettys',
+ 'wikieditor-toolbar-tool-ulist-example' => "Elven a'n rol bulettys",
+ 'wikieditor-toolbar-tool-olist' => 'Rol niverys',
+ 'wikieditor-toolbar-tool-olist-example' => "Elven a'n rol niverys",
+ 'wikieditor-toolbar-tool-indent' => 'Crybans',
+ 'wikieditor-toolbar-tool-indent-example' => 'Linen grybys',
+ 'wikieditor-toolbar-tool-nowiki' => 'Heb furvyans wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Keworrowgh text heb furvyans obma',
+ 'wikieditor-toolbar-tool-redirect' => 'Daswedyans',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Hanow an folen gosten',
+ 'wikieditor-toolbar-tool-big' => 'Broas',
+ 'wikieditor-toolbar-tool-big-example' => 'Text bras',
+ 'wikieditor-toolbar-tool-small' => 'Bian',
+ 'wikieditor-toolbar-tool-small-example' => 'Tekst bian',
+ 'wikieditor-toolbar-tool-superscript' => 'Gorscrif',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Text gorscrif',
+ 'wikieditor-toolbar-tool-subscript' => 'Isscrif',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Tekst isskrif',
+ 'wikieditor-toolbar-group-insert' => 'Keworra',
+ 'wikieditor-toolbar-tool-gallery' => 'Mirva imajys',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Ensampel.jpg|Descrifans1
+$1:Ensampel.jpg|Descrifans2',
+ 'wikieditor-toolbar-tool-newline' => 'Linen noweth',
+ 'wikieditor-toolbar-tool-table' => 'Tabel',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! pednlinen 1
+! pednlinen 2
+! pednlinen 3
+|-
+| rew 1, kellik 1
+| rew 1, kellik 2
+| rew 1, kellik 3
+|-
+| rew 2, kellik 1
+| rew 2, kellik 2
+| rew 2, kellik 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Text an kellik',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Text an bednlinen',
+ 'wikieditor-toolbar-tool-table-title' => 'Gorra tabel a-bervedh',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rewyow',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Colovednow',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Keworra rew pednlinen',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Keworra emlow',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Gwul sortyadow an tabel',
+ 'wikieditor-toolbar-tool-table-example' => 'Ensampel',
+ 'wikieditor-toolbar-tool-table-preview' => 'Ragwel',
+ 'wikieditor-toolbar-tool-table-insert' => 'Keworra',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Hedhy',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Nag eus entrys genowgh niver da a rewyow po colovednow.',
+ 'wikieditor-toolbar-tool-table-zero' => "Nag ello'whi gorra a-bervedh tabel heb rew po coloven.",
+ 'wikieditor-toolbar-tool-replace' => 'Whilas ha kemeres le',
+ 'wikieditor-toolbar-tool-replace-title' => 'Whilas ha kemeres le',
+ 'wikieditor-toolbar-tool-replace-search' => 'Whila:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Kemeres le a:',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Cavos an nessa',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Kemeres le an nessa',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Kemeres le pubtra',
+ 'wikieditor-toolbar-tool-replace-close' => 'Degea',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Na wrug agas whilans machya tra veth.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => "Na wrugo'whi entra tra veth dhe whilas.",
+ 'wikieditor-toolbar-section-characters' => 'Nosow arbednek',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin ystydnys',
+ 'wikieditor-toolbar-characters-page-ipa' => 'LFK (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Arwodhyow',
+ 'wikieditor-toolbar-characters-page-greek' => 'Greca',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabek',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persek',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ebrow',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalek',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tay',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laosek',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Gweres',
+ 'wikieditor-toolbar-help-heading-description' => 'Descrifans',
+ 'wikieditor-toolbar-help-heading-syntax' => 'An peth a scrifowgh',
+ 'wikieditor-toolbar-help-heading-result' => 'An sewyans',
+ 'wikieditor-toolbar-help-page-format' => 'Furvyans',
+ 'wikieditor-toolbar-help-page-link' => 'Kevrednow',
+ 'wikieditor-toolbar-help-page-heading' => 'Titlys',
+ 'wikieditor-toolbar-help-page-list' => 'Rolyow',
+ 'wikieditor-toolbar-help-page-file' => 'Restrednow',
+ 'wikieditor-toolbar-help-page-reference' => 'Devydnow',
+ 'wikieditor-toolbar-help-page-discussion' => 'Kescows',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Italek',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Text italek''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Text italek</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Tew',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Text tew'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Text tew</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Tew &amp; italek',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Text tew &amp; italek'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Text tew &amp; italek</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Kevren bervedhel',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Titel an folen|Text an gevren]]<br />[[Titel an folen]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Text an gevren</a><br /><a href='#'>Titel an folen</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Kevren bervedhel',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.ensampel.org Text an gevren]<br />[http://www.ensampel.org]<br />http://www.ensampel.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Text an gevren</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.ensampel.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Titel nivel 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Text an titel ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Text an titel</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Titel nivel 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Text an titel ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Text an titel</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Titel nivel 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Text an titel ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Text an titel</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Titel nivel 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Text an titel =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Text an titel</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Rol bulettys',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => "* Elven a'n rol<br />* Elven a'n rol",
+ 'wikieditor-toolbar-help-content-ulist-result' => "<ul><li>Elven a'n rol</li><li>Elven a'n rol</li></ul>",
+ 'wikieditor-toolbar-help-content-olist-description' => 'Rol niverys',
+ 'wikieditor-toolbar-help-content-olist-syntax' => "# Elven a'n rol<br /># Elven a'n rol",
+ 'wikieditor-toolbar-help-content-olist-result' => "<ol><li>Elven a'n rol</li><li>Elven a'n rol</li></ol>",
+ 'wikieditor-toolbar-help-content-file-description' => 'Restren neythys',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Ensampel.png|thumb|Text an descrifans]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Text an descrifans' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Brashe' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Text an descrifans</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Devyn',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Text an folen.&lt;ref name="test"&gt;[http://www.ensampel.org Text an gevren], text keworansel.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Text an folen.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => "Devnydh keworansel a'n keth devyn",
+ 'wikieditor-toolbar-help-content-rereference-result' => "Text an folen.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Disqwedhes devydnow',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.ensampel.org' class='external text' href='#'>Text an gevren</a>, text keworansel.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Sinans gen an dedhyans',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Hanow-usyer</a> (<a href='#' title='{{#special:mytalk}}'>kescows</a>) 15:54, 10 Metheven 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Sinans',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Hanow-usyer</a> (<a href='#' title='{{#special:mytalk}}'>kescows</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Cryba',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Text usadow<br />:Text crybys<br />::Text crybys',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Text usadow<dl><dd>Text crybys<dl><dd>Text crybys</dd></dl></dd></dl>',
+);
+
+/** Latin (Latina)
+ * @author OrbiliusMagister
+ * @author UV
+ */
+$messages['la'] = array(
+ 'wikieditor-preview-tab' => 'Praevisum',
+ 'wikieditor-preview-changes-tab' => 'Mutata',
+ 'wikieditor-preview-loading' => 'Depromens...',
+ 'wikieditor-previewDialog-tab' => 'Praevisum',
+ 'wikieditor-previewDialog-loading' => 'Depromens...',
+ 'wikieditor-toolbar-loading' => 'Depromens…',
+ 'wikieditor-toolbar-tool-bold' => 'Litterae pingues',
+ 'wikieditor-toolbar-tool-bold-example' => 'Textus litteris pinguibus scriptus',
+ 'wikieditor-toolbar-tool-italic' => 'Litterae italicae',
+ 'wikieditor-toolbar-tool-italic-example' => 'Textus litteris Italicis scriptus',
+ 'wikieditor-toolbar-tool-ilink' => 'Nexus internus',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titulus nexus',
+ 'wikieditor-toolbar-tool-xlink' => 'Nexus externus (memento praefixi http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com titulus nexus externi',
+ 'wikieditor-toolbar-tool-link' => 'Nexus',
+ 'wikieditor-toolbar-tool-link-title' => 'Nexum addere',
+ 'wikieditor-toolbar-tool-link-int' => 'Ad paginam vici',
+ 'wikieditor-toolbar-tool-link-insert' => 'Nexum addere',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Pagina iam est',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Pagina non est',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Nexus externus',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Nexus internus',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Nexus externus',
+ 'wikieditor-toolbar-tool-file' => 'Fasciculus in pagina impositus',
+ 'wikieditor-toolbar-tool-file-example' => 'Exemplum.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referentia bibliographica',
+ 'wikieditor-toolbar-tool-reference-title' => 'Referentiam bibliographicam addere',
+ 'wikieditor-toolbar-tool-signature' => 'Subscriptio tua cum indicatione temporis',
+ 'wikieditor-toolbar-tool-heading-1' => 'Planities 1',
+ 'wikieditor-toolbar-tool-big' => 'Magna',
+ 'wikieditor-toolbar-tool-big-example' => 'Textus magnus',
+ 'wikieditor-toolbar-tool-small' => 'Parva',
+ 'wikieditor-toolbar-tool-small-example' => 'Textus parvus',
+ 'wikieditor-toolbar-tool-superscript' => 'Superscriptum',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Textus superscriptus',
+ 'wikieditor-toolbar-tool-subscript' => 'Subscriptum',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Textus subscriptus',
+ 'wikieditor-toolbar-group-insert' => 'Inserere',
+ 'wikieditor-toolbar-tool-gallery' => 'Pinacotheca',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Exemplum.jpg|Descriptio 1
+$1:Exemplum.jpg|Descriptio 2',
+ 'wikieditor-toolbar-tool-newline' => 'Nova linea',
+ 'wikieditor-toolbar-tool-table' => 'Tabula',
+ 'wikieditor-toolbar-section-characters' => 'Characteres speciales',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latinum',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latinum extensum',
+ 'wikieditor-toolbar-characters-page-ipa' => 'API',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbola',
+ 'wikieditor-toolbar-characters-page-greek' => 'Graecum',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cyrillicum',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabicum',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebraicum',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-section-help' => 'Adiutatum',
+ 'wikieditor-toolbar-help-heading-description' => 'Descriptio',
+ 'wikieditor-toolbar-help-page-format' => 'Formatio',
+ 'wikieditor-toolbar-help-page-link' => 'Nexus',
+ 'wikieditor-toolbar-help-page-file' => 'Fasciculi',
+ 'wikieditor-toolbar-help-page-reference' => 'Referentiae bibliographicae',
+ 'wikieditor-toolbar-help-page-discussion' => 'Disputatio',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Litterae italicae',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Textus litteris Italicis scriptus''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Textus litteris Italicis scriptus</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Litterae pingues',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Textus litteris pinguibus scriptus'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Textus litteris pinguibus scriptus</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Pingues &amp; Italicae',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Textus litteris pinguibus &amp; italicis scriptus'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Textus litteris pinguibus &amp; italicis scriptus</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Nexus internus',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Titulus paginae|Titulus nexus]]<br />[[Titulus paginae]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Titulus nexus</a><br /><a href='#'>Titulus paginae</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Nexus externus',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Titulus nexus]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Titulus nexus</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-file-description' => 'Fasciculus in pagina impositus',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Exemplum.png|thumb|Descriptio fasciculi]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Descriptio fasciculi' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Augere' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Descriptio fasciculi</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referentia bibliographica',
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Referentias bibliographicas monstrare',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Subscriptio tua cum indicatione temporis',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nomen usoris</a> (<a href='#' title='{{#special:mytalk}}'>disputatio</a>) 15:54, 10 Iunii 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Subscriptio',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nomen usoris</a> (<a href='#' title='{{#special:mytalk}}'>disputatio</a>)",
+);
+
+/** Luxembourgish (Lëtzebuergesch)
+ * @author Robby
+ */
+$messages['lb'] = array(
+ 'wikieditor' => "Erweiderten Interface fir d'Änner vu Wikitext",
+ 'wikieditor-desc' => "Liwwert en erweiderbaren Interface fir d'Ännere vu Wikitext a vill Module mat Fonctiounen",
+ 'wikieditor-wikitext-tab' => 'WikiText',
+ 'wikieditor-loading' => 'Lueden',
+ 'wikieditor-preview-preference' => 'side-by-side kucken ouni ze späicheren aschalten',
+ 'wikieditor-preview-tab' => 'Kucken ouni ze späicheren',
+ 'wikieditor-preview-changes-tab' => 'Ännerungen',
+ 'wikieditor-preview-loading' => 'Lueden...',
+ 'wikieditor-previewDialog-preference' => 'Preview-Dialog aschalten',
+ 'wikieditor-previewDialog-tab' => 'Kucken ouni ze späicheren',
+ 'wikieditor-previewDialog-loading' => 'Lueden...',
+ 'wikieditor-publish-preference' => 'Schrëtt-fir-Schrëtt Publikatioun aschalten',
+ 'wikieditor-publish-button-publish' => 'Verëffentlechen',
+ 'wikieditor-publish-button-cancel' => 'Ofbriechen',
+ 'wikieditor-publish-dialog-title' => 'Op {{SITENAME}} verëffentlechen',
+ 'wikieditor-publish-dialog-summary' => "Resumé vun der Ännerung (beschreift kuerz d'Ännerungen déi Dir gemaach hutt):",
+ 'wikieditor-publish-dialog-minor' => 'Kleng Ännerung',
+ 'wikieditor-publish-dialog-watch' => 'Dës Säit iwwerwaachen',
+ 'wikieditor-publish-dialog-publish' => 'Verëffentlechen',
+ 'wikieditor-publish-dialog-goback' => 'Zréck goen',
+ 'wikieditor-template-editor-preference' => "D'Ännere vu Wiki-Schablounen op der Basis vu Formulairen aschalten",
+ 'wikieditor-template-editor-dialog-title' => 'Schabloun änneren',
+ 'wikieditor-template-editor-dialog-submit' => 'Aktualiséieren',
+ 'wikieditor-template-editor-dialog-cancel' => 'Annulléieren',
+ 'wikieditor-templates-preference' => 'Zesummeklappe vu Schablounen aschalten',
+ 'wikieditor-toc-preference' => 'Inhaltsverzeechnes fir ze navigéieren aschalten',
+ 'wikieditor-toc-show' => 'Inhalt weisen',
+ 'wikieditor-toc-hide' => 'Inhalt verstoppen',
+ 'wikieditor-toolbar' => 'Toolbar änneren',
+ 'wikieditor-toolbar-desc' => 'Toolbar vun de Säitenännerunge mat erweiderter Benotzerfrëndlechkeet',
+ 'wikieditor-toolbar-preference' => 'Déi erweidert Ännerungs-Toolbar aktivéieren',
+ 'wikieditor-toolbar-dialogs-preference' => "Dialoge fir d'Drasetze vu Linken, Tabellen a méi aschalten",
+ 'wikieditor-toolbar-hidesig' => 'Den Ënnerschrëftsknäppchen op Säiten am Haaptnummraum verstoppen',
+ 'wikieditor-toolbar-loading' => 'Lueden...',
+ 'wikieditor-toolbar-tool-bold' => 'Fettgedréckt',
+ 'wikieditor-toolbar-tool-bold-example' => 'Fettgedréckten Text',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kursiven Text',
+ 'wikieditor-toolbar-tool-ilink' => 'Interne Link',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titel vum Link',
+ 'wikieditor-toolbar-tool-xlink' => 'Externe Link (denkt un de Prefix http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com Titel vum Link',
+ 'wikieditor-toolbar-tool-link' => 'Link',
+ 'wikieditor-toolbar-tool-link-title' => 'Link drasetzen',
+ 'wikieditor-toolbar-tool-link-int' => 'Op e Wikiartikel/eng Wikisäit',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Titel vum Artikel:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titel vun der Säit oder URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Linkt-Text:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Gitt den Text an dee soll ugewise ginn',
+ 'wikieditor-toolbar-tool-link-ext' => 'Op eng extern Websäit',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL vum Link:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Link-Text:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Link drasetzen',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Ofbriechen',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Säit gëtt et',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Säit gëtt et net',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Net valabelen Titel',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Externe Link',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "Et gëtt nogekuckt ob et d'Säit gëtt...",
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Den Titel deen Dir uginn hutt ass net valabel.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Déi URL déi dir uginn hutt gesäit aus wéi e Link op eng aner Wikisäit. Wëllt dir doraus en interne Link maachen?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Interne Link',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Externe Link',
+ 'wikieditor-toolbar-tool-link-empty' => 'Dir hutt näischt aginn op dat verlinkt soll ginn.',
+ 'wikieditor-toolbar-tool-file' => 'Agebonnene Fichier',
+ 'wikieditor-toolbar-tool-file-example' => 'Beispill.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referenz',
+ 'wikieditor-toolbar-tool-reference-example' => 'Setzt den Text vun der Foussnote hei ann',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Annulléieren',
+ 'wikieditor-toolbar-tool-reference-title' => 'Referenz drasetzen',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Drasetzen',
+ 'wikieditor-toolbar-tool-reference-text' => 'Referenztext',
+ 'wikieditor-toolbar-tool-signature' => 'Ënnerschrëft an Zäitstempel',
+ 'wikieditor-toolbar-section-advanced' => 'Erweidert',
+ 'wikieditor-toolbar-tool-heading' => 'Iwwerschrëft',
+ 'wikieditor-toolbar-tool-heading-1' => 'Niveau 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Niveau 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Niveau 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Niveau 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Niveau 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Text vum Titel',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Lëscht mat Punkten',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Element vun der Lëscht mat Punkten',
+ 'wikieditor-toolbar-tool-olist' => 'Numeréiert Lëscht',
+ 'wikieditor-toolbar-tool-olist-example' => 'Element vun der numeréieter Lëscht',
+ 'wikieditor-toolbar-tool-indent' => 'Indentatioun',
+ 'wikieditor-toolbar-tool-indent-example' => 'Erageréckelt Linn',
+ 'wikieditor-toolbar-tool-nowiki' => 'Keng Wiki-Formatéierung',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Net-formatéierten Text hei drasetzen',
+ 'wikieditor-toolbar-tool-redirect' => 'Viruleeden',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Zilsäitennumm',
+ 'wikieditor-toolbar-tool-big' => 'Grouss',
+ 'wikieditor-toolbar-tool-big-example' => 'Groussen Text',
+ 'wikieditor-toolbar-tool-small' => 'Kleng',
+ 'wikieditor-toolbar-tool-small-example' => 'Klengen Text',
+ 'wikieditor-toolbar-tool-superscript' => 'Exposant',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Text den am exposant steet',
+ 'wikieditor-toolbar-tool-subscript' => 'Indice',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Text den am Indice steet',
+ 'wikieditor-toolbar-group-insert' => 'Drasetzen',
+ 'wikieditor-toolbar-tool-gallery' => 'Billergallerie',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Beschreiwung1
+$1:Example.jpg|Beschreiwung2',
+ 'wikieditor-toolbar-tool-newline' => 'Nei Linn',
+ 'wikieditor-toolbar-tool-table' => 'Tabell',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! Iwwerschrëft 1
+! Iwwerschrëft 2
+! Iwwerschrëft 3
+|-
+| Rei 1, Zell 1
+| Rei 1, Zell 2
+| Rei 1, Zell 3
+|-
+| Rei 2, Zell 1
+| Rei 2, Zell 2
+| Rei 2, Zell 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Text an der Zell',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Text vun der Iwwerschrëft',
+ 'wikieditor-toolbar-tool-table-title' => 'Tabell drasetzen',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Reien',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Colonnen',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => "D'Rei vun der Iwwerschrëft matabezéien",
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Styl mat Ränner',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tabell zortéierbar maachen',
+ 'wikieditor-toolbar-tool-table-example' => 'Text an der Zell',
+ 'wikieditor-toolbar-tool-table-preview' => 'Kucken ouni ze späicheren',
+ 'wikieditor-toolbar-tool-table-insert' => 'Drasetzen',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Ofbriechen',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Et ass net méiglech méi wéi $1 Zelle mat dësem Dialog dranzesetzen',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Dir hutt keng valabel Zuel vu Reien oder Kolonnen aginn.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Dir kënnt Tabell mat null Reien a Kolonnen drasetzen.',
+ 'wikieditor-toolbar-tool-replace' => 'Sichen an ersetzen',
+ 'wikieditor-toolbar-tool-replace-title' => 'Sichen an ersetzen',
+ 'wikieditor-toolbar-tool-replace-search' => 'Sichen no:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Ersetzen duerch:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Op grouss a kleng Schreiwen oppassen',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Dat no deem Dir sicht als regulären Ausdrock behandelen',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Den nächste fannen',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Den nächsten ersetzen',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Alles ersetzen',
+ 'wikieditor-toolbar-tool-replace-close' => 'Zoumaachen',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Beim Siche gouf näischt fonnt.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 mol ersat.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Dir hutt näisch aginn nodeem Dir siche wëllt.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'De regulären Ausdrock deen Dir aginn hutt ass net valabel: $1',
+ 'wikieditor-toolbar-section-characters' => 'Spezialzeechen',
+ 'wikieditor-toolbar-characters-page-latin' => 'Laténgesch',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Laténgesch, erweidert',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symboler',
+ 'wikieditor-toolbar-characters-page-greek' => 'Griichesch',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kyrillisch',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabesch',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persesch',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebräisch',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangalesch',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Hëllef',
+ 'wikieditor-toolbar-help-heading-description' => 'Beschreiwung',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Wat Dir antippt',
+ 'wikieditor-toolbar-help-heading-result' => 'Wat Dir kritt',
+ 'wikieditor-toolbar-help-page-format' => 'Formatéierung',
+ 'wikieditor-toolbar-help-page-link' => 'Linken',
+ 'wikieditor-toolbar-help-page-heading' => 'Iwwerschrëften',
+ 'wikieditor-toolbar-help-page-list' => 'Lëschten',
+ 'wikieditor-toolbar-help-page-file' => 'Fichieren',
+ 'wikieditor-toolbar-help-page-reference' => 'Referenzen',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskussioun',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursiven Text''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursiven Text</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Fett',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Fetten Text'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Fetten Text</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Fett &amp; kursiv',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Fetten &amp; kursiven Text'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Fetten &amp; kursiven Text</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Interne Link',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Page title|Text vum Link]]<br />[[Page title]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Text vum Link</a><br /><a href='#'>Titel vun der Säit</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Externe Link',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Text vum Link]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "a href='#' class='external'>Text vum Link</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Iwwerschrëft vum 2. Niveau',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Text vum Titel ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Text vum Titel</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Iwwerschrëft vum 3. Niveau',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Text vum Titel ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Text vum Titel</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Iwwerschrëft vum 4. Niveau',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Text vum Titel ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Text vum Titel</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Iwwerschrëft vum 5. Niveau',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Text vum Titel =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Text vum Titel</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lëscht mat Punkten',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Element vun der Lëscht<br />
+* Element vun der Lëscht',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul>
+ <li>Element vun der Lëscht</li>
+ <li>Element vun der Lëscht</li>
+</ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Numeréiert Lëscht',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Element vun der Lëscht<br />
+# Element vun der Lëscht',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol>
+ <li>Element vun der Lëscht</li>
+ <li>Element vun der Lëscht</li>
+</ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Agebonnene Fichier',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Ugewisenen Text]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Ugewisenen Texte' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Ugewisenen Text</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referenz',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Text vun der Säit.&lt;ref name="test"&gt;[http://www.example.org Text vum Link], zousätzlechen Text.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Text vun der Säit <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Zousätzleche Gebrauch vun derselwëschter Referenz',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Text vun der Säit. <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Referenze weisen',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'>
+ <li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Text vum Link</a>, zousätzlechen Text.</li>
+</ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Ënnerschrëft mat Datum an Auerzäit',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Benotzernumm</a> (<a href='#' title='{{#special:mytalk}}'>Diskussioun</a>) 10 Juni 2009 àëm 15:54 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Ënnerschrëft',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Benotzernumm</a> (<a href='#' title='{{#special:mytalk}}'>talk</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Erasetzen',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normalen Text<br />
+:Erageréckelten Text<br />
+::Erageréckelten Text',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normalen Text
+<dl>
+ <dd>Erageréckelten Text
+ <dl>
+ <dd>Erageréckelten Text</dd>
+ </dl>
+ </dd>
+</dl>',
+);
+
+/** Limburgish (Limburgs)
+ * @author Ooswesthoesbes
+ * @author Pahles
+ */
+$messages['li'] = array(
+ 'wikieditor' => 'Oetgebreijde teksverwèrker veur wikiteks',
+ 'wikieditor-desc' => "Voeg 'nen oetbreidbare teksverwerker veur wikiteks toe en modules mit extra meugelikheje",
+ 'wikieditor-wikitext-tab' => 'Wikiteks',
+ 'wikieditor-loading' => 'Laje',
+ 'wikieditor-preview-preference' => 'Bewirke en betrachte naevenein',
+ 'wikieditor-preview-tab' => 'Veurbesjouwing',
+ 'wikieditor-preview-changes-tab' => 'Verangeringe',
+ 'wikieditor-preview-loading' => 'Laje...',
+ 'wikieditor-previewDialog-preference' => "Zèt 't betrachtingsvinster aan",
+ 'wikieditor-previewDialog-tab' => 'Veurbesjouwing',
+ 'wikieditor-previewDialog-loading' => 'Laje…',
+ 'wikieditor-publish-preference' => 'Zèt oetbringe ein veur ein aan',
+ 'wikieditor-publish-button-publish' => 'Bring oet',
+ 'wikieditor-publish-button-cancel' => 'Braek aaf',
+ 'wikieditor-publish-dialog-title' => 'Bring oet nao {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Bewerkingssamevatting (besjrief kórt de gemaakdje verangeringe):',
+ 'wikieditor-publish-dialog-minor' => 'Klein bewèrking',
+ 'wikieditor-publish-dialog-watch' => 'Volg dees pazjena',
+ 'wikieditor-publish-dialog-publish' => 'Bring oet',
+ 'wikieditor-publish-dialog-goback' => 'Trök',
+ 'wikieditor-template-editor-preference' => 'Zèt formeleergebaseerdj bewèrke van wikisjablone aan',
+ 'wikieditor-template-editor-dialog-title' => 'Bewèrk veurlaag',
+ 'wikieditor-template-editor-dialog-submit' => 'Wèrk bie',
+ 'wikieditor-template-editor-dialog-cancel' => 'Braek aaf',
+ 'wikieditor-templates-preference' => 'Zèt inklapbaar sjablone aan',
+ 'wikieditor-toc-preference' => 'Zèt navigeerbaar inhaudsopgaaf aan',
+ 'wikieditor-toc-show' => 'Tuun inhawd',
+ 'wikieditor-toc-hide' => 'Verbegr inhawd',
+ 'wikieditor-toolbar' => 'Bewèrkingswèrkbalk',
+ 'wikieditor-toolbar-desc' => 'Nuje bewèrkingsbalk',
+ 'wikieditor-toolbar-preference' => 'Gebroek de nuje bewèrkingsbalk',
+ 'wikieditor-toolbar-dialogs-preference' => 'Zèt inveurvensters aan',
+ 'wikieditor-toolbar-loading' => 'Laje…',
+ 'wikieditor-toolbar-tool-bold' => 'Vèt',
+ 'wikieditor-toolbar-tool-bold-example' => 'Vètten teks',
+ 'wikieditor-toolbar-tool-italic' => 'Sjuuns',
+ 'wikieditor-toolbar-tool-italic-example' => 'Sjuunsen tèks',
+ 'wikieditor-toolbar-tool-ilink' => 'Interne link',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Link titel',
+ 'wikieditor-toolbar-tool-xlink' => 'Extern link (mit de http:// prefix)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com link titel',
+ 'wikieditor-toolbar-tool-link' => 'Link',
+ 'wikieditor-toolbar-tool-link-title' => 'Voog link in',
+ 'wikieditor-toolbar-tool-link-int' => 'Naoë wikipaasj',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Paasjnaam:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Paasjnaam of URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Waer te gaeve teks:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Waer te gaeve teks',
+ 'wikieditor-toolbar-tool-link-ext' => "Nao 'n extern webpaasj",
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Linkteks:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Voog link in',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Aafbraeke',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Paasj besteit',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'pazjena besteit neet',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Óngeljige titel',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Extern verwiezinge',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Kiek t paasjbestaon nao...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'De opgegaeve pazjenanaam is óngeljig.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "De URL dae se haes ópgegaeve liek gemèndj te zeen es 'n verwiezing nao 'n anger wikipagina.
+Wils se d'r 'n intern verwiezing van make?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Interne link',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Extern verwiezinge',
+ 'wikieditor-toolbar-tool-link-empty' => 'Doe höbs nieks ópgegaeven om te linke.',
+ 'wikieditor-toolbar-tool-file' => 'Mediabesjtandj',
+ 'wikieditor-toolbar-tool-file-example' => 'Veurbeildj.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Verwiezing',
+ 'wikieditor-toolbar-tool-reference-example' => 'Voog hie de vootnoot in',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Braek aaf',
+ 'wikieditor-toolbar-tool-reference-title' => 'Voog verwiezing in',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Voog in',
+ 'wikieditor-toolbar-tool-reference-text' => 'Referensjeteks',
+ 'wikieditor-toolbar-tool-signature' => 'Handjteikening en tied',
+ 'wikieditor-toolbar-section-advanced' => 'Oetgebreid',
+ 'wikieditor-toolbar-tool-heading' => 'Subkop',
+ 'wikieditor-toolbar-tool-heading-1' => 'Huuegdje 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Huuegdje 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Huuegdje 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Huuegdje 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Huuegdje 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Kopteks',
+ 'wikieditor-toolbar-group-format' => 'Ópmaak',
+ 'wikieditor-toolbar-tool-ulist' => 'Óngenómmerdje lies',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Regel in óngenómmerdje lies',
+ 'wikieditor-toolbar-tool-olist' => 'Genómmerdje lies',
+ 'wikieditor-toolbar-tool-olist-example' => 'Regel in genómmerdje lies',
+ 'wikieditor-toolbar-tool-indent' => 'Spring in',
+ 'wikieditor-toolbar-tool-indent-example' => 'Ingesprónge regel',
+ 'wikieditor-toolbar-tool-nowiki' => 'Verloup wiki-opmaak',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Veur hiej de neet op te make teks in',
+ 'wikieditor-toolbar-tool-redirect' => 'Dórchverwiezing',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Doelpagina',
+ 'wikieditor-toolbar-tool-big' => 'Groeat',
+ 'wikieditor-toolbar-tool-big-example' => 'Groeate teks',
+ 'wikieditor-toolbar-tool-small' => 'Klein',
+ 'wikieditor-toolbar-tool-small-example' => 'Klein teks',
+ 'wikieditor-toolbar-tool-superscript' => 'Euversjrif',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Euversjrifteks',
+ 'wikieditor-toolbar-tool-subscript' => 'Óngersjrif',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Óngersjrifteks',
+ 'wikieditor-toolbar-group-insert' => 'Voog in',
+ 'wikieditor-toolbar-tool-gallery' => 'Beeljegalerie',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Veurbeildj1|Biesjrif1
+$1:Veurbeildj2|Biesjrif2',
+ 'wikieditor-toolbar-tool-newline' => 'Nuuje regel',
+ 'wikieditor-toolbar-tool-table' => 'Tabel',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! kóp 1
+! kóp 2
+! kóp 3
+|-
+| rie 1, cel 1
+| rie 1, cel 2
+| rie 1, cel 3
+|-
+| rie 2, cel 1
+| rie 2, cel 2
+| rie 2, cel 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Celteks',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Kopteks',
+ 'wikieditor-toolbar-tool-table-title' => 'Voog tabel in',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rieje',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolomme',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Voog koprie toe',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Voog celrenj toe',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Maak tabel sorteerbaar',
+ 'wikieditor-toolbar-tool-table-example' => 'Veurbeildj',
+ 'wikieditor-toolbar-tool-table-preview' => 'Betrach',
+ 'wikieditor-toolbar-tool-table-insert' => 'Voog in',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Braek aaf',
+ 'wikieditor-toolbar-tool-table-toomany' => "'t Invoge van 'n tabel mit mieër es $1 celle kèn neet via dit venster.",
+ 'wikieditor-toolbar-tool-table-invalidnumber' => "Doe höbs 'n óngeljig aantal regels of kolomme ópgegaeve.",
+ 'wikieditor-toolbar-tool-table-zero' => 'Doe kins gein tabel invoge zónger regels of kolomme.',
+ 'wikieditor-toolbar-tool-replace' => 'Zeuk en vervang',
+ 'wikieditor-toolbar-tool-replace-title' => 'Zeuk en vervang',
+ 'wikieditor-toolbar-tool-replace-search' => 'Zeuk nao:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Vervang door:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Houflettergeveulig',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Behanjel de zeukreiks es regulier oetdrukking',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Zeuk de volgende',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Vervang de volgende',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Vervang alles',
+ 'wikieditor-toolbar-tool-replace-close' => 'Sloet',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Dien zeukopdrach haet gein rizzeltaote gegaeve.',
+ 'wikieditor-toolbar-tool-replace-success' => "d'r Zeen $1 deil vervange.",
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Doe höbs gein zeukterme opgegaeve.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'De door dich ingegaeve regulier oetdrokkig is valsj: $1',
+ 'wikieditor-toolbar-section-characters' => 'Speciaal teikes',
+ 'wikieditor-toolbar-characters-page-latin' => 'Letien',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Oetgebreid letien',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbole',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grieks',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cyrillisch',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabisch',
+ 'wikieditor-toolbar-characters-page-persian' => 'Perzisch',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebreeuws',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengaals',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Teloegoe',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Goedzjarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Cambodzjaans',
+ 'wikieditor-toolbar-section-help' => 'Hölp',
+ 'wikieditor-toolbar-help-heading-description' => 'Besjrieving',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Det se tieps',
+ 'wikieditor-toolbar-help-heading-result' => 'Dat dich weurt getuind',
+ 'wikieditor-toolbar-help-page-format' => 'Ópmaak',
+ 'wikieditor-toolbar-help-page-link' => 'Link',
+ 'wikieditor-toolbar-help-page-heading' => 'Subkoppe',
+ 'wikieditor-toolbar-help-page-list' => 'Lieste',
+ 'wikieditor-toolbar-help-page-file' => 'Bestenj',
+ 'wikieditor-toolbar-help-page-reference' => 'Verwiezinge',
+ 'wikieditor-toolbar-help-page-discussion' => 'Euverlègk',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Sjuuns',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Sjuunse teks''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Sjuunse teks</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Vèt',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Dieken teks'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Dieken teks</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Vèt en sjuuns',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Vèt en sjuunse teks'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Vèt en sjunse teks</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Interne link',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Paginanaam|Verwiezingslabel]]<br />[[Paginanaam]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Verwiezingslabel</a><br /><a href='#'>Paginanaam</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Extern verwiezinge',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Verwiezingslabel]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Verwiezingslabel</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Tweede kóp',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '==Kópteks==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Kópteks</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Dèrde kóp',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '===Kópteks===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Kópteks</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Veerde kóp',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '====Kópteks====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Kópteks</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Viefde kóp',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '=====Kópteks=====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Kópteks</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Óngenómmerdje lies',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Regel in óngenummerde lies<br />* Regel in óngenummerde lies',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Regel in óngenummerde lies</li><li>Regel in óngenummerde lies</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Genómmerdje lies',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Regel in genummerde lies<br /># Regel in genummerde lies',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Regel in genummerde lies</li><li>Regel in genummerde lies</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Mediabesjtandj',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Biesjrif]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Biesjrif' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Vergroeat' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Biesjrif</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Verwiezing',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Paginateks.&lt;ref name="test"&gt;[http://www.example.org Verwiezingsteks], biekómmendje teks.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Paginateks. <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Hergebroek van dezelfdje referentie',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Paginateks. <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Toean verwiezinge',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Verwiezingsteks</a>, biekómstige teks.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Handjteikening en tied',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Gebroekersnaam</a> (<a href='#' title='{{#special:mytalk}}'>euverlègk</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Handjteikening',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Gebroekersnaam</a> (<a href='#' title='{{#special:mytalk}}'>euverlègk</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Spring in',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normaal teks<br />:Ingesprónge teks<br />::Ingesprónge teks',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normaal teks<dl><dd>Ingesprónge teks<dl><dd>Ingesprónge teks</dd></dl></dd></dl>',
+);
+
+/** Lithuanian (Lietuvių)
+ * @author Garas
+ * @author Hugo.arg
+ * @author Matasg
+ * @author Vpovilaitis
+ */
+$messages['lt'] = array(
+ 'wikieditor' => 'IÅ¡plÄ—stinÄ— wikiteksto redagavimo sÄ…saja',
+ 'wikieditor-desc' => 'Prideda iÅ¡pleÄiamÄ… wikiteksto redagavimo sÄ…sajÄ… ir daug funkcijų turinÄius modulius',
+ 'wikieditor-wikitext-tab' => 'Wikitekstas',
+ 'wikieditor-loading' => 'Įkeliama',
+ 'wikieditor-preview-preference' => "Įjungti ''side-by-side'' peržiūrą",
+ 'wikieditor-preview-tab' => 'Peržiūra',
+ 'wikieditor-preview-changes-tab' => 'PokyÄiai',
+ 'wikieditor-preview-loading' => 'Kraunama...',
+ 'wikieditor-previewDialog-tab' => 'Peržiūra',
+ 'wikieditor-previewDialog-loading' => 'Įkeliama…',
+ 'wikieditor-publish-preference' => 'Įjungti žingsnis po žingsnio publikavimą',
+ 'wikieditor-publish-button-publish' => 'Publikuoti',
+ 'wikieditor-publish-button-cancel' => 'Atšaukti',
+ 'wikieditor-publish-dialog-title' => 'Publikuoti į {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Redagavimo komentaras (trumpai aprašykite, kokius pakeitimus padarėte):',
+ 'wikieditor-publish-dialog-minor' => 'Smulkus keitimas',
+ 'wikieditor-publish-dialog-watch' => 'Stebėti šį puslapį',
+ 'wikieditor-publish-dialog-publish' => 'Publikuoti',
+ 'wikieditor-publish-dialog-goback' => 'Grįžti',
+ 'wikieditor-template-editor-preference' => 'Įjungti formos pagrindu sukurtą wiki šablonų redagavimą',
+ 'wikieditor-template-editor-dialog-title' => 'Redaguoti Å¡ablonÄ…',
+ 'wikieditor-template-editor-dialog-submit' => 'Pakeisti',
+ 'wikieditor-template-editor-dialog-cancel' => 'Atšaukti',
+ 'wikieditor-templates-preference' => 'Įgalinti šablonų sutraukimą',
+ 'wikieditor-toc-preference' => 'Įjungti naršomą turinį',
+ 'wikieditor-toc-show' => 'Rodyti turinį',
+ 'wikieditor-toc-hide' => 'Slėpti turinį',
+ 'wikieditor-toolbar' => 'Redagavimo įrankių juosta',
+ 'wikieditor-toolbar-desc' => 'Redaguoti įrankių juostą, siekiant didesnio praktiškumo',
+ 'wikieditor-toolbar-preference' => 'Įjungti naudingesnę įrankių juostą',
+ 'wikieditor-toolbar-dialogs-preference' => 'Įjungti dialogus įterpti nuorodas, lenteles ir daugiau',
+ 'wikieditor-toolbar-loading' => 'Kraunama...',
+ 'wikieditor-toolbar-tool-bold' => 'Paryškinti',
+ 'wikieditor-toolbar-tool-bold-example' => 'Paryškinti tekstą',
+ 'wikieditor-toolbar-tool-italic' => 'Kursyvas',
+ 'wikieditor-toolbar-tool-italic-example' => 'Tekstas kursyvu',
+ 'wikieditor-toolbar-tool-ilink' => 'VidinÄ— nuoroda',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Nuorodos pavadinimas',
+ 'wikieditor-toolbar-tool-xlink' => 'Išorinė nuoroda (nepamirškite http:// priedėlio)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com nuorodos pavadinimas',
+ 'wikieditor-toolbar-tool-link' => 'Nuoroda',
+ 'wikieditor-toolbar-tool-link-title' => 'Įterpti nuorodą',
+ 'wikieditor-toolbar-tool-link-int' => 'Į wiki puslapį',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Paskirties puslapis arba URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Puslapio pavadinimas arba URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Rodomas tekstas:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Tekstas, kuris bus rodomas',
+ 'wikieditor-toolbar-tool-link-ext' => 'Į išorinį tinklalapį',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Nuoroda:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Nuorodos tekstas:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Įterpti nuorodą',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Atšaukti',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Puslapis yra',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Puslapis neegzistuoja',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Neleistinas pavadinimas',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'IÅ¡orinÄ— nuoroda',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Tikrinama, ar puslapis egzistuoja...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Nurodytas pavadinimas yra neleistinas',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Adresas, kurį nurodėte, atrodo, turėjo yra nuoroda į kitą wiki puslapį. Ar norite paversti nuorodą vidine?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'VidinÄ— nuoroda',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'IÅ¡orinÄ— nuoroda',
+ 'wikieditor-toolbar-tool-link-empty' => 'Jūs neįvedėte nieko, į ką nurodyti.',
+ 'wikieditor-toolbar-tool-file' => 'Įdėti failą',
+ 'wikieditor-toolbar-tool-file-example' => 'Pavyzdys.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Išnaša',
+ 'wikieditor-toolbar-tool-reference-example' => 'Čia įterpkite teksto išnašą',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Atšaukti',
+ 'wikieditor-toolbar-tool-reference-title' => 'Įtraukti nuorodą',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Įtraukti',
+ 'wikieditor-toolbar-tool-reference-text' => 'Nuorodos tekstas',
+ 'wikieditor-toolbar-tool-signature' => 'Jūsų parašas bei laikas',
+ 'wikieditor-toolbar-section-advanced' => 'IÅ¡plÄ—stinis',
+ 'wikieditor-toolbar-tool-heading' => 'Antraštė',
+ 'wikieditor-toolbar-tool-heading-1' => 'Pirmo lygio',
+ 'wikieditor-toolbar-tool-heading-2' => 'Antro lygio',
+ 'wikieditor-toolbar-tool-heading-3' => 'TreÄio lygio',
+ 'wikieditor-toolbar-tool-heading-4' => 'Ketvirto lygio',
+ 'wikieditor-toolbar-tool-heading-5' => 'Penkto lygio',
+ 'wikieditor-toolbar-tool-heading-example' => 'Antraštinis tekstas',
+ 'wikieditor-toolbar-group-format' => 'Formatas',
+ 'wikieditor-toolbar-tool-ulist' => 'Punktuotas sąrašas',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Punktuoto sąrašo elementas',
+ 'wikieditor-toolbar-tool-olist' => 'Numeruotas sąrašas',
+ 'wikieditor-toolbar-tool-olist-example' => 'Numeruoto sąrašo elementas',
+ 'wikieditor-toolbar-tool-indent' => 'Įtrauka',
+ 'wikieditor-toolbar-tool-indent-example' => 'Įtraukta eilutė',
+ 'wikieditor-toolbar-tool-nowiki' => 'Ignoruoti wiki formatÄ…',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Čia įterpkite neformuotą tekstą',
+ 'wikieditor-toolbar-tool-redirect' => 'nukreipimÄ…',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Tikslinio puslapio pavadinimas',
+ 'wikieditor-toolbar-tool-big' => 'Didelis',
+ 'wikieditor-toolbar-tool-big-example' => 'Didelis tekstas',
+ 'wikieditor-toolbar-tool-small' => 'Mažas',
+ 'wikieditor-toolbar-tool-small-example' => 'Mažas tekstas',
+ 'wikieditor-toolbar-tool-superscript' => 'Viršuje',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Tekstas viršuje',
+ 'wikieditor-toolbar-tool-subscript' => 'ApaÄioje',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Tekstas apaÄioje',
+ 'wikieditor-toolbar-group-insert' => 'Įterpti',
+ 'wikieditor-toolbar-tool-gallery' => 'Paveikslėlių galerija',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Pavyzdys.jpg|Aprašymas1
+$1:Pavyzdys.jpg|Aprašymas2',
+ 'wikieditor-toolbar-tool-newline' => 'Nauja linija',
+ 'wikieditor-toolbar-tool-table' => 'LentelÄ—',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! antraštė 1
+! antraštė 2
+! antraštė 3
+|-
+| eilutÄ— 1, langelis 1
+| eilutÄ— 1, langelis 2
+| eilutÄ— 1, langelis 3
+|-
+| eilutÄ— 2, langelis 1
+| eilutÄ— 2, langelis 2
+| eilutÄ— 2, langelis 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Langelio tekstas',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Antraštės tekstas',
+ 'wikieditor-toolbar-tool-table-title' => 'Įterpti lentelę',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'EilutÄ—s',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Stulpeliai',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Pridėti antraštinę eilutę',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stilius su rÄ—meliais',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Padaryti lentelÄ™ rikiuojamÄ…',
+ 'wikieditor-toolbar-tool-table-example' => 'Pavyzdys',
+ 'wikieditor-toolbar-tool-table-preview' => 'Peržiūra',
+ 'wikieditor-toolbar-tool-table-insert' => 'Įterpti',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Atšaukti',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Įterpti lentelę su daugiau nei $1 langelių šiame lange negalima.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'JÅ«s neįvedÄ—te leistino skaiÄiaus eiluÄių ar stulpelių.',
+ 'wikieditor-toolbar-tool-table-zero' => 'JÅ«s negalite įterpti lentelÄ—s su nuliu eiluÄių ar stulpelių.',
+ 'wikieditor-toolbar-tool-replace' => 'Ieškoti ir pakeisti',
+ 'wikieditor-toolbar-tool-replace-title' => 'Ieškoti ir pakeisti',
+ 'wikieditor-toolbar-tool-replace-search' => 'Ieškoti:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Pakeisti su:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Skirti didžiąsias ir mažąsias raides',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Laikyti paieškos eilutę kaip reguliariąją išraišką',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Rasti kitÄ…',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Pakeisti kitÄ…',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Pakeisti visus',
+ 'wikieditor-toolbar-tool-replace-close' => 'Uždaryti',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Jūsų paieška nieko nerado.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Atlikta $1 pakeitimas (-ų).',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Jūs neįvedėte nieko ieškoti.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Reguliarioji išraiška, kurią įvedėte, yra neleistina: $1',
+ 'wikieditor-toolbar-section-characters' => 'Specialieji simboliai',
+ 'wikieditor-toolbar-characters-page-latin' => 'Lotynų',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Lotynų išplėstoji',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simboliai',
+ 'wikieditor-toolbar-characters-page-greek' => 'Graikų',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kirilica',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabų',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persų',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebrajų',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalų',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugų',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhalų',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gudžaratų',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tajų',
+ 'wikieditor-toolbar-characters-page-lao' => 'LaosieÄių',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmerų',
+ 'wikieditor-toolbar-section-help' => 'Pagalba',
+ 'wikieditor-toolbar-help-heading-description' => 'Aprašymas',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Ką rašote',
+ 'wikieditor-toolbar-help-heading-result' => 'KÄ… gaunate',
+ 'wikieditor-toolbar-help-page-format' => 'Formatavimas',
+ 'wikieditor-toolbar-help-page-link' => 'Nuorodos',
+ 'wikieditor-toolbar-help-page-heading' => 'Antraštės',
+ 'wikieditor-toolbar-help-page-list' => 'Sąrašai',
+ 'wikieditor-toolbar-help-page-file' => 'Failai',
+ 'wikieditor-toolbar-help-page-reference' => 'Išnašos',
+ 'wikieditor-toolbar-help-page-discussion' => 'Aptarimas',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursyvas',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Tekstas kursyvu''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Tekstas kursyvu</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Paryškintas',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Paryškintas tekstas'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Paryškintas tekstas</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Paryškintas ir kursyvas',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Paryškintas tekstas kursyvu'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<em><strong>Paryškintas tekstas kursyvu</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'VidinÄ— nuoroda',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Puslapio pavadinimas|Pavadinimas]]<br />[[Puslapio pavadinimas]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Nuorodos pavadinimas</a><br /><a href='#'>Puslapio pavadinimas</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'IÅ¡orinÄ— nuoroda',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Nuorodos pavadinimas]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Nuorodos pavadinimas</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2-ojo lygio antraštė',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Antraštės tekstas ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Antraštės tekstas</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3-ojo lygio antraštė',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Antraštės tekstas ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Antraštės tekstas</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4-ojo lygio antraštė',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Antraštės tekstas ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Antraštės tekstas</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5-ojo lygio antraštė',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Antraštės tekstas =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Antraštės tekstas</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Punktuotas sąrašas',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Sąrašo elementas<br />* Sąrašo elementas',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Sąrašo elementas</li><li>Sąrašo elementas</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Numeruotas sąrašas',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Sąrašo elementas<br /># Sąrašo elementas',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Sąrašo elementas</li><li>Sąrašo elementas</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Įterpti failą',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Aprašymas]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Aprašymas</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Išnaša',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Puslapio tekstas.&lt;ref name="test"&gt;[http://www.example.org Nuorodos tekstas], papildomas tekstas.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Puslapio tekstas.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Papildomas tos paÄios iÅ¡naÅ¡os naudojimas',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Puslapio tekstas.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Rodyti išnašas',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Nuorodos tekstas</a>, papildomas tekstas.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Parašas bei laikas',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Naudotojo vardas</a> (<a href='#' title='{{#special:mytalk}}'>aptarimas</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Parašas',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Naudotojo vardas</a> (<a href='#' title='{{#special:mytalk}}'>aptarimas</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Įtrauka',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normalus tekstas<br />:Įtrauktas tekstas<br />::Įtrauktas tekstas',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normalus tekstas<dl><dd>Įtrauktas tekstas<dl><dd>Įtrauktas tekstas</dd></dl></dd></dl>',
+);
+
+/** Latgalian (Latgaļu)
+ * @author Dark Eagle
+ */
+$messages['ltg'] = array(
+ 'wikieditor-template-editor-dialog-submit' => 'Atjaunynuot',
+);
+
+/** Latvian (Latviešu)
+ * @author Marozols
+ * @author Papuass
+ * @author Xil
+ */
+$messages['lv'] = array(
+ 'wikieditor-wikitext-tab' => 'Vikiteksts',
+ 'wikieditor-preview-preference' => "Ieslēgt ''side-by-side'' priekšskatu",
+ 'wikieditor-preview-tab' => 'Pirmskats',
+ 'wikieditor-preview-changes-tab' => 'Izmaiņas',
+ 'wikieditor-preview-loading' => 'IelÄdē…',
+ 'wikieditor-previewDialog-preference' => 'Atļaut priekšskates dialogu',
+ 'wikieditor-previewDialog-tab' => 'Pirmskats',
+ 'wikieditor-previewDialog-loading' => 'IelÄdē…',
+ 'wikieditor-publish-button-publish' => 'Publicēt',
+ 'wikieditor-publish-button-cancel' => 'Atcelt',
+ 'wikieditor-publish-dialog-minor' => 'Maznozīmīgs labojums',
+ 'wikieditor-publish-dialog-watch' => 'Uzraudzīt šo lapu',
+ 'wikieditor-publish-dialog-publish' => 'Publicēt',
+ 'wikieditor-template-editor-dialog-title' => 'Rediģēt veidni',
+ 'wikieditor-template-editor-dialog-cancel' => 'Atcelt',
+ 'wikieditor-toc-preference' => 'IeslÄ“gt satura rÄdÄ«tÄju ar navigÄcijas iespÄ“jÄm',
+ 'wikieditor-toc-show' => 'ParÄdÄ«t satura rÄdÄ«tÄju',
+ 'wikieditor-toc-hide' => 'PaslÄ“pt satura rÄdÄ«tÄju',
+ 'wikieditor-toolbar' => 'Rediģēšanas rīku josla',
+ 'wikieditor-toolbar-desc' => 'Rediģēšanas rīku josla ar uzlabotu lietojamību',
+ 'wikieditor-toolbar-preference' => 'Izmantot paplaÅ¡inÄto rediģēšanas rÄ«kjoslu',
+ 'wikieditor-toolbar-dialogs-preference' => 'Izmantot dialoga logus saišu, tabulu u.c. ievietošanai',
+ 'wikieditor-toolbar-loading' => 'IelÄdē…',
+ 'wikieditor-toolbar-tool-bold' => 'Pustrekns',
+ 'wikieditor-toolbar-tool-bold-example' => 'Pustrekns teksts',
+ 'wikieditor-toolbar-tool-italic' => 'KursÄ«vÄ',
+ 'wikieditor-toolbar-tool-italic-example' => 'Teksts kursÄ«vÄ',
+ 'wikieditor-toolbar-tool-ilink' => 'IekÅ¡Ä“jÄ saite',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Saites teksts',
+ 'wikieditor-toolbar-tool-xlink' => 'Ä€rÄ“jÄ saite (neaizmirsti adresi sÄkt ar "http://")',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com saites teksts',
+ 'wikieditor-toolbar-tool-link' => 'Saite',
+ 'wikieditor-toolbar-tool-link-title' => 'Ievietot saiti',
+ 'wikieditor-toolbar-tool-link-int' => 'Iekšēja saite',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Lapas nosaukums:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Lapas nosaukums vai URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Saites teksts:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Attēlojamais teksts',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ārēja saite',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Saites URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Saites teksts:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Ievietot saiti',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Atcelt',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Lapa eksistē',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Lapa neeksistē',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Nekorekts nosaukums',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ä€rÄ“jÄ saite',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Tiek pÄrbaudÄ«ts vai lapa eksistÄ“...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'NorÄdÄ«tais nosaukums nav korekts.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'NorÄdÄ«tais URL izskatÄs pÄ“c saites uz viki lapu. Vai vÄ“laties to pÄrveidot par iekÅ¡Ä“ju saiti?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'IekÅ¡Ä“jÄ saite',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ä€rÄ“jÄ saite',
+ 'wikieditor-toolbar-tool-link-empty' => 'JÅ«s nenorÄdÄ«jÄt lapu, uz kuru jÄizveido saite.',
+ 'wikieditor-toolbar-tool-file' => 'Iekļaut failu',
+ 'wikieditor-toolbar-tool-file-example' => 'Piemērs.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Atsauce',
+ 'wikieditor-toolbar-tool-reference-example' => 'Ievadi zemsvītras atsauces tekstu šeit',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Atcelt',
+ 'wikieditor-toolbar-tool-reference-title' => 'Ievietot atsauci',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Ievietot',
+ 'wikieditor-toolbar-tool-reference-text' => 'Atsauces teksts',
+ 'wikieditor-toolbar-tool-signature' => 'Paraksts un parakstÄ«Å¡anÄs laiks',
+ 'wikieditor-toolbar-section-advanced' => 'Papildus iespējas',
+ 'wikieditor-toolbar-tool-heading' => 'Virsraksts',
+ 'wikieditor-toolbar-tool-heading-1' => '1. līmeņa',
+ 'wikieditor-toolbar-tool-heading-2' => '2. līmeņa',
+ 'wikieditor-toolbar-tool-heading-3' => '3. līmeņa',
+ 'wikieditor-toolbar-tool-heading-4' => '4. līmeņa',
+ 'wikieditor-toolbar-tool-heading-5' => '5. līmeņa',
+ 'wikieditor-toolbar-tool-heading-example' => 'Virsraksta teksts',
+ 'wikieditor-toolbar-group-format' => 'FormÄts',
+ 'wikieditor-toolbar-tool-ulist' => 'Nenumurēts saraksts',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Nenumurēta saraksta elements',
+ 'wikieditor-toolbar-tool-olist' => 'Numurēts saraksts',
+ 'wikieditor-toolbar-tool-olist-example' => 'Numurēta saraksta elements',
+ 'wikieditor-toolbar-tool-indent' => 'AtkÄpes',
+ 'wikieditor-toolbar-tool-indent-example' => 'Rindiņa ar atkÄpi',
+ 'wikieditor-toolbar-tool-nowiki' => 'Ignorēt wiki formatējumu',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Ievietojiet tekstu, ko nevajag formatēt, šeit',
+ 'wikieditor-toolbar-tool-redirect' => 'PÄradresÄcija',
+ 'wikieditor-toolbar-tool-redirect-example' => 'MÄ“rÄ·a lapas nosaukums',
+ 'wikieditor-toolbar-tool-big' => 'Liels',
+ 'wikieditor-toolbar-tool-big-example' => 'Liels teksts',
+ 'wikieditor-toolbar-tool-small' => 'Mazs',
+ 'wikieditor-toolbar-tool-small-example' => 'Mazs teksts',
+ 'wikieditor-toolbar-tool-superscript' => 'Augšējais indekss',
+ 'wikieditor-toolbar-tool-superscript-example' => 'AugÅ¡Ä“jÄ indeksa teksts',
+ 'wikieditor-toolbar-tool-subscript' => 'Apakšējais indekss',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ApakÅ¡Ä“jÄ indeksa teksts',
+ 'wikieditor-toolbar-group-insert' => 'Ievietot',
+ 'wikieditor-toolbar-tool-gallery' => 'Attēlu galerija',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Apraksts1
+$1:Example.jpg|Apraksts2',
+ 'wikieditor-toolbar-tool-newline' => 'Jauna rinda',
+ 'wikieditor-toolbar-tool-table' => 'Tabula',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! 1. virsraksts
+! 2. virsraksts
+! 3. virsraksts
+|-
+| 1. rinda, 1. Å¡Å«na
+| 1. rinda, 2. Å¡Å«na
+| 1. rinda, 3. Å¡Å«na
+|-
+| 2. rinda, 1. Å¡Å«na
+| 2. rinda, 2. Å¡Å«na
+| 2. rinda, 3. Å¡Å«na',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Rinda $1, Å¡Å«na $2',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Virsraksta teksts',
+ 'wikieditor-toolbar-tool-table-title' => 'Ievietot tabulu',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rindas',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolonnas',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Ievietot rindu ar kolonnu virsrakstiem',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Noformēt apmales',
+ 'wikieditor-toolbar-tool-table-sortable' => 'PadarÄ«t tabulu kÄrtojamu',
+ 'wikieditor-toolbar-tool-table-example' => 'Piemērs',
+ 'wikieditor-toolbar-tool-table-preview' => 'Pirmskats',
+ 'wikieditor-toolbar-tool-table-insert' => 'Ievietot',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Atcelt',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Ar Å¡Ä« dialoga loga palÄ«dzÄ«bu nav iespÄ“jams ievietot tabulu, kas satur vairÄk nekÄ $1 Å¡Å«nas.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Ievadītais rindu vai kolonnu skaits nav korekts.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Nav iespējams ievietot tabulu, kas nesatur nevienu rindu vai kolonnu.',
+ 'wikieditor-toolbar-tool-replace' => 'MeklÄ“t un aizstÄt',
+ 'wikieditor-toolbar-tool-replace-title' => 'MeklÄ“t un aizstÄt',
+ 'wikieditor-toolbar-tool-replace-search' => 'Meklēt:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'AizstÄt ar:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Å…emt vÄ“rÄ lielos un mazos burtus',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Uztvert meklÄ“jamo virkni kÄ regulÄru izteiksmi',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'MeklÄ“t nÄkamo',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Aizvietot nÄkamo',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Aizvietot visus',
+ 'wikieditor-toolbar-tool-replace-close' => 'Aizvērt',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Nekas netika atrasts.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Aizvietots $1 vietÄ(s).',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Nav norÄdÄ«ta meklÄ“jamÄ simbolu virkne.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Å Ä« ievadÄ«tÄ regulÄrÄ izteiksme nav korekta: $1',
+ 'wikieditor-toolbar-section-characters' => 'Īpašie simboli',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latīņu',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latīņu (papildus)',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simboli',
+ 'wikieditor-toolbar-characters-page-greek' => 'GrieÄ·u',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kirilica',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ArÄbu',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persiešu',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ebreju',
+ 'wikieditor-toolbar-characters-page-bangla' => 'BengÄļu',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'SingÄļu',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gudžarati',
+ 'wikieditor-toolbar-section-help' => 'Palīdzība',
+ 'wikieditor-toolbar-help-heading-description' => 'Paskaidrojums',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Ko tu raksti',
+ 'wikieditor-toolbar-help-heading-result' => 'Ko tu dabū',
+ 'wikieditor-toolbar-help-page-format' => 'Formatējums',
+ 'wikieditor-toolbar-help-page-link' => 'Saites',
+ 'wikieditor-toolbar-help-page-heading' => 'Virsraksti',
+ 'wikieditor-toolbar-help-page-list' => 'Saraksti',
+ 'wikieditor-toolbar-help-page-file' => 'Faili',
+ 'wikieditor-toolbar-help-page-reference' => 'Atsauces',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskusija',
+ 'wikieditor-toolbar-help-content-italic-description' => 'KursÄ«vÄ',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Teksts kursÄ«vÄ''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Teksts kursÄ«vÄ</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Pustrekns',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Pustrekns teksts'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Pustrekns teksts</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Pustrekns un kursÄ«vÄ',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Pustrekns teksts kursÄ«vÄ'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Pustrekns teksts kursÄ«vÄ</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'IekÅ¡Ä“jÄ saite',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Lapas nosaukums|Saites teksts]]<br />[[Lapas nosaukums]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Saites teksts</a><br /><a href='#'>Lapas nosaukums</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ä€rÄ“jÄ saite',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Saites teksts]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Saites teksts</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2. līmeņa virsraksts',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Virsraksta teksts ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Virsraksta teksts</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3. līmeņa virsraksts',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Virsraksta teksts ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Virsraksta teksts</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4. līmeņa virsraksts',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Virsraksta teksts ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Virsraksta teksts</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5. līmeņa virsraksts',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Virsraksta teksts =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Virsraksta teksts</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Nenumurēts saraksts',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Saraksta elements<br />* Saraksta elements',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Saraksta elements</li><li>Saraksta elements</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Numurēts saraksts',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Saraksta elements<br /># Saraksta elements',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Saraksta elements</li><li>Saraksta elements</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Iekļauts fails',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Apraksts]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Apraksts' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='PalielinÄt' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Apraksts</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Atsauce',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Lapas teksts.&lt;ref name="test"&gt;[http://www.example.org Saites teksts], papildus teksts.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Lapas teksts.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'AtkÄrtota jau esoÅ¡as atsauces izmantoÅ¡ana',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Lapas teksts.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'ParÄdÄ«t atsauces',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Saites teksts</a>, papildus teksts.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Paraksts un parakstÄ«Å¡anÄs laiks',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>LietotÄja vÄrds</a> (<a href='#' title='{{#special:mytalk}}'>diskusija</a>) 15:54, 10 jÅ«nijÄ, 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Tikai paraksts',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>LietotÄja vÄrds</a> (<a href='#' title='{{#special:mytalk}}'>diskusija</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'AtkÄpe',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Teksts bez atkÄpes<br />:Teksts ar atkÄpi<br />::Teksts ar atkÄpi',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Teksts bez atkÄpes<dl><dd>Teksts ar atkÄpi<dl><dd>Teksts ar atkÄpi</dd></dl></dd></dl>',
+);
+
+/** Lazuri (Lazuri)
+ * @author Bombola
+ */
+$messages['lzz'] = array(
+ 'wikieditor-toolbar-tool-small' => "Ç'ut'a",
+ 'wikieditor-toolbar-tool-gallery' => "Suret'iÅŸ Galeri",
+ 'wikieditor-toolbar-characters-page-latin' => "Lat'ini",
+ 'wikieditor-toolbar-characters-page-greek' => 'Xorumi',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabuli',
+);
+
+/** Minangkabau (Baso Minangkabau)
+ * @author VoteITP
+ */
+$messages['min'] = array(
+ 'wikieditor' => 'Suntingan antarmuka teks wiki lanjut',
+ 'wikieditor-desc' => 'Menyediakan suntingan antarmuka teks wiki dan babarapo ruang penyedia corak',
+ 'wikieditor-wikitext-tab' => 'Teks wiki',
+ 'wikieditor-loading' => 'Maunggah',
+ 'wikieditor-preview-preference' => 'Aktifkan pratonton basisian',
+ 'wikieditor-preview-tab' => 'Pratonton',
+ 'wikieditor-preview-changes-tab' => 'Parubahan',
+ 'wikieditor-preview-loading' => 'Maunggah...',
+ 'wikieditor-publish-preference' => 'Aktifkan penerbitan batahap',
+ 'wikieditor-publish-button-publish' => 'Terbitkan',
+ 'wikieditor-publish-button-cancel' => 'Batalkan',
+ 'wikieditor-publish-dialog-title' => 'Mencetak {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Ringkasan suntingan (jelaskan dengan ringkas parubahan yang awak buek):',
+ 'wikieditor-publish-dialog-minor' => 'Suntingan ketek',
+ 'wikieditor-publish-dialog-watch' => 'Pantau laman ko',
+ 'wikieditor-publish-dialog-publish' => 'Terbitkan',
+ 'wikieditor-publish-dialog-goback' => 'Baliak',
+ 'wikieditor-template-editor-preference' => 'Aktifkan formulir suntingan templat wiki',
+ 'wikieditor-template-editor-dialog-title' => 'Suntiang templat',
+ 'wikieditor-template-editor-dialog-submit' => 'Perbarui',
+ 'wikieditor-template-editor-dialog-cancel' => 'Batalkan',
+ 'wikieditor-templates-preference' => 'Aktifkan fungsi tutup templat',
+ 'wikieditor-toc-preference' => 'Senarai kandungan dapek dilayari',
+ 'wikieditor-toc-show' => 'Tampilkan kandungan',
+ 'wikieditor-toc-hide' => 'Suruakkan kandungan',
+ 'wikieditor-toolbar' => 'Bilah suntiang',
+ 'wikieditor-toolbar-desc' => 'Laman bilah suntiang jo kagunoan lanjut',
+ 'wikieditor-toolbar-preference' => 'Bilah suntiang lanjut lah aktif',
+ 'wikieditor-toolbar-dialogs-preference' => 'Aktifkan bantuan untuak manambah tautan, tabel dan lainnyo',
+ 'wikieditor-toolbar-loading' => 'Maunggah...',
+ 'wikieditor-toolbar-tool-bold' => 'Taba',
+ 'wikieditor-toolbar-tool-bold-example' => 'Teks dicetak taba',
+ 'wikieditor-toolbar-tool-italic' => 'Miriang',
+ 'wikieditor-toolbar-tool-italic-example' => 'Teks dicetak miriang',
+ 'wikieditor-toolbar-tool-ilink' => 'Pranala dalam',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Judul pranala',
+ 'wikieditor-toolbar-tool-xlink' => 'Pranala lua (ingek awalannyo http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com judul pranala',
+ 'wikieditor-toolbar-tool-link' => 'Tautan',
+ 'wikieditor-toolbar-tool-link-title' => 'Masuakkan tautan',
+ 'wikieditor-toolbar-tool-link-int' => 'Ka laman wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Laman sasaran atau URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Judul laman atau URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Tampilan teks:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Teks yang ka ditampilkan',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ka laman web lua',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Tautan URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Tautan teks:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Masuakkan tautan',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Batalkan',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Laman yang lah ado',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Laman alun tasadio',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Judul indak sah',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Pranala lua',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Memeriksa keadaan laman...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Judul yang awak berikan indak sah',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL yang awak berikan tampaknyo marupokan tautan ka laman wiki lain.
+Apo awak ingin mambueknyo jadi pranala dalam?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Pranala dalam',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Pranala lua',
+ 'wikieditor-toolbar-tool-link-empty' => 'Awak indak mamasuakkan apo pun untuak ditautkan',
+ 'wikieditor-toolbar-tool-file' => 'Cantumkan berkas',
+ 'wikieditor-toolbar-tool-file-example' => 'Contoh.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Rujukan',
+ 'wikieditor-toolbar-tool-reference-example' => 'Sisipkan teks catatan kaki di siko',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Batalkan',
+ 'wikieditor-toolbar-tool-reference-title' => 'Masuakkan rujukan',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Masuakkan',
+ 'wikieditor-toolbar-tool-reference-text' => 'Teks rujukan',
+ 'wikieditor-toolbar-tool-signature' => 'Tandotangan dan tandomaso',
+ 'wikieditor-toolbar-section-advanced' => 'Lanjutan',
+ 'wikieditor-toolbar-tool-heading' => 'Judul',
+ 'wikieditor-toolbar-tool-heading-1' => 'Tingkek 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Tingkek 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Tingkek 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Tingkek 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Tingkek 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Teks tajuk',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Senarai babantuak peluru',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Hal senarai babantuak peluru',
+ 'wikieditor-toolbar-tool-olist' => 'Senarai babantuak nomor',
+ 'wikieditor-toolbar-tool-olist-example' => 'Hal senarai babantuak nomor',
+ 'wikieditor-toolbar-tool-indent' => 'Lekukan',
+ 'wikieditor-toolbar-tool-indent-example' => 'Barih lekuk',
+ 'wikieditor-toolbar-tool-nowiki' => 'Indak ado pemformatan wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Masuakkan disiko teks yang indak diformat',
+ 'wikieditor-toolbar-tool-redirect' => 'Pengalihan',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Namo laman sasaran',
+ 'wikieditor-toolbar-tool-big' => 'Gadang',
+ 'wikieditor-toolbar-tool-big-example' => 'Teks gadang',
+ 'wikieditor-toolbar-tool-small' => 'Ketek',
+ 'wikieditor-toolbar-tool-small-example' => 'Teks ketek',
+ 'wikieditor-toolbar-tool-superscript' => 'Ditulis di atas',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Teks ditulis di atas',
+ 'wikieditor-toolbar-tool-subscript' => 'Ditulis di bawah',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Teks ditulis di bawah',
+ 'wikieditor-toolbar-group-insert' => 'Masuakkan',
+ 'wikieditor-toolbar-tool-gallery' => 'Galeri gambar',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Contoh.jpg|Judul1
+$1:Contoh.jpg|Judul2',
+ 'wikieditor-toolbar-tool-newline' => 'Barih baru',
+ 'wikieditor-toolbar-tool-table' => 'Tabel',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! kapalo judul 1
+! kapalo judul 2
+! kapalo judul 3
+|-
+| barih 1, sel 1
+| barih 1, sel 2
+| barih 1, sel 3
+|-
+| barih 2, sel 1
+| barih 2, sel 2
+| barih 2, sel 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Teks sel',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Teks tajuk',
+ 'wikieditor-toolbar-tool-table-title' => 'Masuakkan tabel',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Barih',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolom',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Tambahkan kapalo barih',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Gaya pakai bingkai',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Buek tabel yang baurutan',
+ 'wikieditor-toolbar-tool-table-example' => 'Contoh',
+ 'wikieditor-toolbar-tool-table-preview' => 'Pratonton',
+ 'wikieditor-toolbar-tool-table-insert' => 'Masuakkan',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Batalkan',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Disiko indak mungkin mambuek tabel dengan jumlah selnyo malebihi $1.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Awak indak mamasuakkan jumlah sah dari barih atau kolom.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Awak indak boleh mamasuakkan tabel dengan jumlah kosong pado barih atau kolom',
+ 'wikieditor-toolbar-tool-replace' => 'Cari dan ganti',
+ 'wikieditor-toolbar-tool-replace-title' => 'Cari dan ganti',
+ 'wikieditor-toolbar-tool-replace-search' => 'Cari:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Ganti jo:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Keadaan cocok',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Perlakukan string cari sebagai "regular expression"',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Cari berikutnyo',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Ganti berikutnyo',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Ganti semua',
+ 'wikieditor-toolbar-tool-replace-close' => 'Tutup',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Pencarian awak indak berhasil',
+ 'wikieditor-toolbar-tool-replace-success' => 'Tajadi $1 penggantian',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Awak indak mamasuakkan apo pun untuak dicari.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Ekspresi biaso yang awak masuakkan indak sah: $1',
+ 'wikieditor-toolbar-section-characters' => 'Karakter istimewa',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin diperluas',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simbol',
+ 'wikieditor-toolbar-characters-page-greek' => 'Yunani',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Sirilik',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arab',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persia',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ibrani',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarat',
+ 'wikieditor-toolbar-characters-page-thai' => 'Siam',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Bantuan',
+ 'wikieditor-toolbar-help-heading-description' => 'Keterangan',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Apo yang awak ketik',
+ 'wikieditor-toolbar-help-heading-result' => 'Apo yang awak dapek',
+ 'wikieditor-toolbar-help-page-format' => 'Pemformatan',
+ 'wikieditor-toolbar-help-page-link' => 'Tautan',
+ 'wikieditor-toolbar-help-page-heading' => 'Judul',
+ 'wikieditor-toolbar-help-page-list' => 'Senarai',
+ 'wikieditor-toolbar-help-page-file' => 'Berkas',
+ 'wikieditor-toolbar-help-page-reference' => 'Rujukan',
+ 'wikieditor-toolbar-help-page-discussion' => 'Pembicaraan',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Miriang',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Teks miriang''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Teks miriang</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Taba',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Teks taba'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Teks taba</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Taba &amp; miriang',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Teks taba &amp; teks miriang'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Teks taba &amp; teks miriang</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Pranala dalam',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Judul laman|Label tautan]]<br />[[Judul laman]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Label tautan</a><br /><a href='#'>Judul laman</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Pranala lua',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Label tautan]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Label tautan</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Judul tingkek 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Teks judul ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Teks judul</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Judul tingkek 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Teks judul ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Teks judul</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Judul tingkek 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Teks judul ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Teks judul</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Judul tingkek 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Teks judul =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Teks judul</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Senarai babantuak peluru',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Senarai hal<br />* Senarai hal',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Senarai hal</li><li>Senarai hal</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Senarai babantuak nomor',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Senarai hal<br /># Senarai hal',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Senarai hal</li><li>Senarai hal</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Cantumkan berkas',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Contoh.png|thumb|Teks gambar]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Teks gambar' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Pagadang' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Teks gambar</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Rujukan',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Teks laman.&lt;ref name="test"&gt;[http://www.example.org Teks tautan], teks tambahan.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Teks laman.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Rujukan samo digunoan ulang',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Teks laman.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Tampilkan rujukan',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Link text</a>, Teks tambahan.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Tandotangan dan tandomaso',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Namo pangguno</a> (<a href='#' title='{{#special:mytalk}}'>bincang</a>) 15:54, 10 Juni 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Tandotangan',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Namo pangguno</a> (<a href='#' title='{{#special:mytalk}}'>bincang</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Melekuk',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Teks normal<br />:Teks lekuk<br />::Teks lekuk',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Teks normal<dl><dd>Teks lekuk<dl><dd>Teks lekuk</dd></dl></dd></dl>',
+);
+
+/** Macedonian (МакедонÑки)
+ * @author Bjankuloski06
+ * @author Brest
+ */
+$messages['mk'] = array(
+ 'wikieditor' => 'ПоÑредник за напредно уредување Ñо викитекÑÑ‚',
+ 'wikieditor-desc' => 'Дава проширлив поÑредник за уредување Ñо викитекÑÑ‚ и многу модули за разни други алатки',
+ 'wikieditor-wikitext-tab' => 'ВикиТекÑÑ‚',
+ 'wikieditor-loading' => 'Вчитувам',
+ 'wikieditor-preview-preference' => 'Овозможи преглед „рамо до рамо“',
+ 'wikieditor-preview-tab' => 'Преглед',
+ 'wikieditor-preview-changes-tab' => 'Промени',
+ 'wikieditor-preview-loading' => 'Вчитувам...',
+ 'wikieditor-previewDialog-preference' => 'Овозможи дијалог за преглед',
+ 'wikieditor-previewDialog-tab' => 'Преглед',
+ 'wikieditor-previewDialog-loading' => 'Вчитувам...',
+ 'wikieditor-publish-preference' => 'Овозможи објавување „чекор по чекор“',
+ 'wikieditor-publish-button-publish' => 'Објави',
+ 'wikieditor-publish-button-cancel' => 'Откажи',
+ 'wikieditor-publish-dialog-title' => 'Објави на {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'ÐžÐ¿Ð¸Ñ Ð½Ð° уредувањето (накратко опишете ги промените кои ги направивте):',
+ 'wikieditor-publish-dialog-minor' => 'Ситно уредување',
+ 'wikieditor-publish-dialog-watch' => 'Ðабљудувај ја оваа Ñтраница',
+ 'wikieditor-publish-dialog-publish' => 'Објави',
+ 'wikieditor-publish-dialog-goback' => 'Ðазад',
+ 'wikieditor-template-editor-preference' => 'Овозможи уредување на вики-шаблони преку образец',
+ 'wikieditor-template-editor-dialog-title' => 'Уреди шаблон',
+ 'wikieditor-template-editor-dialog-submit' => 'Поднови',
+ 'wikieditor-template-editor-dialog-cancel' => 'Откажи',
+ 'wikieditor-templates-preference' => 'Овозможи раÑклопување на шаблоните',
+ 'wikieditor-toc-preference' => 'Овозможи навигабилна табела и Ñодржина',
+ 'wikieditor-toc-show' => 'Прикажи Ñодржина',
+ 'wikieditor-toc-hide' => 'Скриј Ñодржина',
+ 'wikieditor-toolbar' => 'Ðлатник за уредување',
+ 'wikieditor-toolbar-desc' => 'Ðлатник за уредување Ñо подобрена употребливоÑÑ‚',
+ 'wikieditor-toolbar-preference' => 'Овозможи подобрен алатник за уредување',
+ 'wikieditor-toolbar-dialogs-preference' => 'Овозможи дијалози за вметнување врÑки, табели и повеќе',
+ 'wikieditor-toolbar-hidesig' => 'Скриј го копчето за Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ Ð½Ð° Ñтраниците во главниот именÑки проÑтор',
+ 'wikieditor-toolbar-loading' => 'Вчитувам...',
+ 'wikieditor-toolbar-tool-bold' => 'Задебелено',
+ 'wikieditor-toolbar-tool-bold-example' => 'Задебелен текÑÑ‚',
+ 'wikieditor-toolbar-tool-italic' => 'КоÑо',
+ 'wikieditor-toolbar-tool-italic-example' => 'ЗакоÑен текÑÑ‚',
+ 'wikieditor-toolbar-tool-ilink' => 'Внатрешна врÑка',
+ 'wikieditor-toolbar-tool-ilink-example' => 'ÐаÑлов на врÑката',
+ 'wikieditor-toolbar-tool-xlink' => 'Ðадворешна врÑка (бара Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.пример.com наÑлов на врÑката',
+ 'wikieditor-toolbar-tool-link' => 'Ð’Ñ€Ñка',
+ 'wikieditor-toolbar-tool-link-title' => 'Вметни врÑка',
+ 'wikieditor-toolbar-tool-link-int' => 'Кон вики-Ñтраница',
+ 'wikieditor-toolbar-tool-link-int-target' => 'ÐаÑлов на Ñтраницата:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'ÐаÑлов на Ñтраницата или URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'ТекÑÑ‚ на врÑката:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'ВнеÑете текÑÑ‚ за прикажување',
+ 'wikieditor-toolbar-tool-link-ext' => 'Кон надворешна Ñтраница',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL на врÑката:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'ТекÑÑ‚ на врÑката:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Вметни врÑка',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Откажи',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Страницата поÑтои',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Страницата не поÑтои',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Погрешен наÑлов',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ðадворешна врÑка',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Проверувам дали поÑтои Ñтраницата...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'ÐаÑловот којшто го назначивте е погрешен.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL адреÑата која ја назначивте изгледа како врÑка до друга вики-Ñтраница. Сакате ова да биде внатрешна врÑка?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Внатрешна врÑка',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ðадворешна врÑка',
+ 'wikieditor-toolbar-tool-link-empty' => 'Ðе внеÑовте одредница за врÑката.',
+ 'wikieditor-toolbar-tool-file' => 'Вметната податотека',
+ 'wikieditor-toolbar-tool-file-example' => 'Пример.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Ðавод',
+ 'wikieditor-toolbar-tool-reference-example' => 'Тука внеÑете текÑÑ‚ на фуÑнотата',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Откажи',
+ 'wikieditor-toolbar-tool-reference-title' => 'Вметни навод',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Вметни',
+ 'wikieditor-toolbar-tool-reference-text' => 'ТекÑÑ‚ на наводот',
+ 'wikieditor-toolbar-tool-signature' => 'Вашиот Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ Ñо време',
+ 'wikieditor-toolbar-section-advanced' => 'Ðапредно',
+ 'wikieditor-toolbar-tool-heading' => 'ÐаÑлов',
+ 'wikieditor-toolbar-tool-heading-1' => 'Ðиво 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Ðиво 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Ðиво 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Ðиво 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Ðиво 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'ÐаÑлов',
+ 'wikieditor-toolbar-group-format' => 'Формат',
+ 'wikieditor-toolbar-tool-ulist' => 'СпиÑок Ñо потточки',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Потточка во ÑпиÑокот',
+ 'wikieditor-toolbar-tool-olist' => 'СпиÑок Ñо редни броеви',
+ 'wikieditor-toolbar-tool-olist-example' => 'Реден број во ÑпиÑок',
+ 'wikieditor-toolbar-tool-indent' => 'Вовлечeно',
+ 'wikieditor-toolbar-tool-indent-example' => 'Вовлечен ред',
+ 'wikieditor-toolbar-tool-nowiki' => 'Без викиформатирање',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Тука вметнете неформатиран текÑÑ‚',
+ 'wikieditor-toolbar-tool-redirect' => 'ПренаÑочи',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Име на целната Ñтраница',
+ 'wikieditor-toolbar-tool-big' => 'Голем',
+ 'wikieditor-toolbar-tool-big-example' => 'Голем текÑÑ‚',
+ 'wikieditor-toolbar-tool-small' => 'Мал',
+ 'wikieditor-toolbar-tool-small-example' => 'Мал текÑÑ‚',
+ 'wikieditor-toolbar-tool-superscript' => 'Горен индекÑ',
+ 'wikieditor-toolbar-tool-superscript-example' => 'ТекÑÑ‚ на горниот индекÑ',
+ 'wikieditor-toolbar-tool-subscript' => 'Долен индекÑ',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ТекÑÑ‚ на долниот индекÑ',
+ 'wikieditor-toolbar-group-insert' => 'Вметни',
+ 'wikieditor-toolbar-tool-gallery' => 'Галерија',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Пример.jpg|ОпиÑ1
+$1:Пример.jpg|ОпиÑ2',
+ 'wikieditor-toolbar-tool-newline' => 'Ðов ред',
+ 'wikieditor-toolbar-tool-table' => 'Табела',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! наÑлов 1
+! наÑлов 2
+! наÑлов 3
+|-
+| ред 1, поле 1
+| ред 1, поле 2
+| ред 1, поле 3
+|-
+| ред 2, поле 1
+| ред 2, поле 2
+| ред 2, поле 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ТекÑÑ‚ во полето',
+ 'wikieditor-toolbar-tool-table-example-header' => 'ТекÑÑ‚ на наÑлов',
+ 'wikieditor-toolbar-tool-table-title' => 'Вметни табела',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Редови',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Колони',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Вклучи наÑловен ред',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Стил Ñо граници',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Подредлива табела',
+ 'wikieditor-toolbar-tool-table-example' => 'Пример',
+ 'wikieditor-toolbar-tool-table-preview' => 'Преглед',
+ 'wikieditor-toolbar-tool-table-insert' => 'Вметни',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Откажи',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Ðе можете да вметнувате табела Ñо повеќе од $1 ќелии Ñо овој дијалог.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Ðе внеÑовте важечки број на редови или колони.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ðе можете да вметнувате табела Ñо нула редови или колони.',
+ 'wikieditor-toolbar-tool-replace' => 'Ðајди и замени',
+ 'wikieditor-toolbar-tool-replace-title' => 'Ðајди и замени',
+ 'wikieditor-toolbar-tool-replace-search' => 'Барај:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Замени Ñо:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Прави разлика помеѓу големи и мали букви',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Третирај ја низата за пребарување како регуларен израз',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Пронајди Ñледно',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Замени Ñледно',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Замени Ñè',
+ 'wikieditor-toolbar-tool-replace-close' => 'Затвори',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Ðишто не Ñе Ñовпадна Ñо бараното.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Ðаправени Ñе $1 замени.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ðе внеÑовте зборови за пребарување.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Регуларниот израз кој го внеÑовте е неважечки: $1',
+ 'wikieditor-toolbar-section-characters' => 'Специјални знаци',
+ 'wikieditor-toolbar-characters-page-latin' => 'Латиница',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Латиница-проширено',
+ 'wikieditor-toolbar-characters-page-ipa' => 'МФÐ',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Симболи',
+ 'wikieditor-toolbar-characters-page-greek' => 'Грчки',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Кирилица',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ÐрапÑки',
+ 'wikieditor-toolbar-characters-page-persian' => 'перÑиÑки',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'ХебрејÑки',
+ 'wikieditor-toolbar-characters-page-bangla' => 'БенгалÑки',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Телугу',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'СинхалÑки',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Гуџарати',
+ 'wikieditor-toolbar-characters-page-thai' => 'ТајландÑки',
+ 'wikieditor-toolbar-characters-page-lao' => 'Лаошки',
+ 'wikieditor-toolbar-characters-page-khmer' => 'КмерÑки',
+ 'wikieditor-toolbar-section-help' => 'Помош',
+ 'wikieditor-toolbar-help-heading-description' => 'ОпиÑ',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Што пишувате',
+ 'wikieditor-toolbar-help-heading-result' => 'Што излегува',
+ 'wikieditor-toolbar-help-page-format' => 'Форматирање',
+ 'wikieditor-toolbar-help-page-link' => 'Ð’Ñ€Ñки',
+ 'wikieditor-toolbar-help-page-heading' => 'ÐаÑлови',
+ 'wikieditor-toolbar-help-page-list' => 'СпиÑоци',
+ 'wikieditor-toolbar-help-page-file' => 'Податотеки',
+ 'wikieditor-toolbar-help-page-reference' => 'Ðаводи',
+ 'wikieditor-toolbar-help-page-discussion' => 'Разговор',
+ 'wikieditor-toolbar-help-content-italic-description' => 'ЗакоÑено',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''ЗакоÑен текÑÑ‚''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>ЗакоÑен текÑÑ‚</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Задебелено',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Задебелен текÑÑ‚'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Задебелен текÑÑ‚</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Задебелено + закоÑено',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Задебелен + закоÑен текÑÑ‚'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Задебелен и закоÑен текÑÑ‚</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Внатрешна врÑка',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[ÐаÑлов на Ñтраницата|ÐаÑлов на врÑката]]<br />[[ÐаÑлов на Ñтраницата]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>ÐаÑлов на врÑката</a><br /><a href='#'>ÐаÑлов на Ñтраницата</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ðадворешна врÑка',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.пример.org ÐаÑлов на врÑката]<br />[http://www.пример.org]<br />http://www.пример.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>ÐаÑлов на врÑката</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.пример.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2 ниво наÑлов',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== ÐаÑлов ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>ÐаÑлов</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3 ниво наÑлов',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== ÐаÑлов ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>ÐаÑлов</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4 ниво наÑлов',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== ÐаÑлов ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>ÐаÑлов</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5 ниво наÑлов',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== ÐаÑлов =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>ÐаÑлов</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'СпиÑок Ñо потточки',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Ставка<br />* Ставка',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Ставка</li><li>Ставка</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'СпиÑок Ñо редни броеви',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Ставка<br /># Ставка',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Ставка</li><li>Ставка</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Вметната податотека',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|ОпиÑен текÑÑ‚]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='ОпиÑ' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Зголеми' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>ОпиÑ</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Ðавод',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'ТекÑÑ‚ во Ñтраницата.&lt;ref name="test"&gt;[http://www.пример.org ТекÑÑ‚ на врÑката], дополнителен текÑÑ‚.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "ТекÑÑ‚ во Ñтраницата.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Понатамошна употреба на иÑтиот навод',
+ 'wikieditor-toolbar-help-content-rereference-syntax' => '&lt;ref name="проба" /&gt;',
+ 'wikieditor-toolbar-help-content-rereference-result' => "ТекÑÑ‚ во Ñтраницата.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Прикажи наводи',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.пример.org' class='external text' href='#'>ТекÑÑ‚ на врÑката</a>, дополнителен текÑÑ‚.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Вашиот Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ Ñо време',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>КориÑничко име</a> (<a href='#' title='{{#special:mytalk}}'>разговор</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ПотпиÑ',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>КориÑничко име</a> (<a href='#' title='{{#special:mytalk}}'>разговор</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Вовлекување',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Ðормален текÑÑ‚<br />:Вовлечен текÑÑ‚<br />::Вовлечен текÑÑ‚',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Ðормален текÑÑ‚<dl><dd>Вовлечен текÑÑ‚<dl><dd>Вовлечен текÑÑ‚</dd></dl></dd></dl>',
+);
+
+/** Malayalam (മലയാളം)
+ * @author McDutchie
+ * @author Praveenp
+ */
+$messages['ml'] = array(
+ 'wikieditor' => 'വികàµà´•à´¿à´Žà´´àµà´¤àµà´¤àµà´•àµ¾ തിരàµà´¤àµà´¤àµà´µà´¾à´¨àµà´³àµà´³ നൂതന സമàµà´ªàµ¼à´•àµà´•à´®àµà´–à´‚',
+ 'wikieditor-desc' => 'വികസിപàµà´ªà´¿à´•àµà´•à´¾à´µàµà´¨àµà´¨ വിധതàµà´¤à´¿à´²àµà´³àµà´³ വികàµà´•à´¿à´Žà´´àµà´¤àµà´¤àµ തിരàµà´¤àµà´¤àµ½ സമàµà´ªàµ¼à´•àµà´•à´®àµà´–à´µàµà´‚ മറàµà´±àµ സവിശേഷ ഘടകങàµà´™à´³àµà´‚ നൽകàµà´¨àµà´¨àµ',
+ 'wikieditor-wikitext-tab' => 'വികàµà´•à´¿à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-loading' => 'ശേഖരികàµà´•àµà´¨àµà´¨àµ',
+ 'wikieditor-preview-preference' => 'അരികിലായàµà´³àµà´³ à´ªàµà´°à´¿à´µàµà´¯àµ‚ സജàµà´œà´®à´¾à´•àµà´•àµà´•',
+ 'wikieditor-preview-tab' => 'à´Žà´™àµà´™à´¨àµ†à´¯àµà´£àµà´Ÿàµ†à´¨àµà´¨àµ കാണàµà´•',
+ 'wikieditor-preview-changes-tab' => 'മാറàµà´±à´™àµà´™àµ¾',
+ 'wikieditor-preview-loading' => 'ശേഖരികàµà´•àµà´¨àµà´¨àµ...',
+ 'wikieditor-previewDialog-preference' => 'à´Žà´™àµà´™à´¨àµ†à´¯àµà´£àµà´Ÿàµ†à´¨àµà´¨àµ കാണൽ സൗകരàµà´¯à´‚ സജàµà´œà´®à´¾à´•àµà´•àµà´•',
+ 'wikieditor-previewDialog-tab' => 'à´Žà´™àµà´™à´¨àµ†à´¯àµà´£àµà´Ÿàµ†à´¨àµà´¨àµ കാണàµà´•',
+ 'wikieditor-previewDialog-loading' => 'ശേഖരികàµà´•àµà´¨àµà´¨àµ...',
+ 'wikieditor-publish-preference' => 'ഘടàµà´Ÿà´‚ ഘടàµà´Ÿà´®à´¾à´¯àµà´³àµà´³ à´ªàµà´°à´¸à´¿à´¦àµà´§à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµ½ സജàµà´œà´®à´¾à´•àµà´•àµà´•',
+ 'wikieditor-publish-button-publish' => 'à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´¿à´•àµà´•àµà´•',
+ 'wikieditor-publish-button-cancel' => 'റദàµà´¦à´¾à´•àµà´•àµà´•',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}} സംരംഭതàµà´¤à´¿àµ½ à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´¿à´•àµà´•àµà´•',
+ 'wikieditor-publish-dialog-summary' => 'തിരàµà´¤àµà´¤à´²à´¿à´¨àµà´±àµ† à´šàµà´°àµà´•àµà´•à´‚ (താങàµà´•àµ¾ വരàµà´¤àµà´¤à´¿à´¯ മാറàµà´±à´™àµà´™àµ¾ ലഘàµà´µà´¾à´¯à´¿ വിശദീകരികàµà´•àµà´•):',
+ 'wikieditor-publish-dialog-minor' => 'ചെറൠതിരàµà´¤àµà´¤àµ½',
+ 'wikieditor-publish-dialog-watch' => 'à´ˆ താൾ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´•',
+ 'wikieditor-publish-dialog-publish' => 'à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´¿à´•àµà´•àµà´•',
+ 'wikieditor-publish-dialog-goback' => 'പഴയ താളിലേയàµà´•àµà´•àµ മടങàµà´™àµà´•',
+ 'wikieditor-template-editor-preference' => 'വികàµà´•à´¿ ഫലകങàµà´™à´³à´¿àµ½ തിരàµà´¤àµà´¤àµà´µà´¾àµ» ഫോം ഉപയോഗികàµà´•àµ½ സജàµà´œà´®à´¾à´•àµà´•àµà´•',
+ 'wikieditor-template-editor-dialog-title' => 'ഫലകം തിരàµà´¤àµà´¤àµà´•',
+ 'wikieditor-template-editor-dialog-submit' => 'à´ªàµà´¤àµà´•àµà´•àµà´•',
+ 'wikieditor-template-editor-dialog-cancel' => 'റദàµà´¦à´¾à´•àµà´•àµà´•',
+ 'wikieditor-templates-preference' => 'ഫലകം à´šàµà´°àµà´•àµà´•àµ½ സജàµà´œà´®à´¾à´•àµà´•àµà´•',
+ 'wikieditor-toc-preference' => 'താളിനàµà´±àµ† ഉളàµà´³à´Ÿà´•àµà´• പടàµà´Ÿà´¿à´• വഴികാടàµà´Ÿà´¿à´¯à´¾à´¯à´¿ ഉപയോഗികàµà´•àµà´•',
+ 'wikieditor-toc-show' => 'ഉളàµà´³à´Ÿà´•àµà´•à´‚ à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´•',
+ 'wikieditor-toc-hide' => 'ഉളàµà´³à´Ÿà´•àµà´•à´‚ മറയàµà´•àµà´•àµà´•',
+ 'wikieditor-toolbar' => 'തിരàµà´¤àµà´¤àµ½ പണിപàµà´ªàµ†à´Ÿàµà´Ÿà´¿',
+ 'wikieditor-toolbar-desc' => 'തിരàµà´¤àµà´¤à´¾à´¨àµà´³àµà´³ താളിൽ മെചàµà´šà´ªàµà´ªàµ†à´Ÿàµà´Ÿ ഉപയോഗതàµà´¤à´¿à´¨à´¾à´¯àµà´³àµà´³ പണിപàµà´ªàµ†à´Ÿàµà´Ÿà´¿',
+ 'wikieditor-toolbar-preference' => 'തിരàµà´¤àµà´¤àµà´µà´¾à´¨àµà´³àµà´³ വിശദ പണിപàµà´ªàµ†à´Ÿàµà´Ÿà´¿ ഉപയോഗപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
+ 'wikieditor-toolbar-dialogs-preference' => 'à´•à´£àµà´£à´¿à´•àµ¾, പടàµà´Ÿà´¿à´•à´•àµ¾ à´¤àµà´Ÿà´™àµà´™à´¿à´¯à´µ ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¾à´¨àµà´³àµà´³ സൗകരàµà´¯à´‚ സജàµà´œà´®à´¾à´•àµà´•àµà´•',
+ 'wikieditor-toolbar-hidesig' => 'à´ªàµà´°à´§à´¾à´¨ നാമമേഖലയിലàµà´³àµà´³ താളàµà´•à´³à´¿àµ½ à´’à´ªàµà´ªà´¿à´Ÿà´¾à´¨àµà´³àµà´³ ബടàµà´Ÿàµº മറയàµà´•àµà´•àµà´•',
+ 'wikieditor-toolbar-loading' => 'ശേഖരികàµà´•àµà´¨àµà´¨àµ...',
+ 'wikieditor-toolbar-tool-bold' => 'à´•à´Ÿàµà´ªàµà´ªà´¿à´•àµà´•àµà´•',
+ 'wikieditor-toolbar-tool-bold-example' => 'à´•à´Ÿàµà´Ÿà´¿à´•àµ‚à´Ÿàµà´Ÿà´¿à´¯ à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-tool-italic' => 'ചെരിചàµà´šàµ',
+ 'wikieditor-toolbar-tool-italic-example' => 'ചെരിചàµà´šàµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-tool-ilink' => 'ആനàµà´¤à´°à´¿à´• à´•à´£àµà´£à´¿',
+ 'wikieditor-toolbar-tool-ilink-example' => 'à´•à´£àµà´£à´¿à´¯àµà´Ÿàµ† തലകàµà´•àµ†à´Ÿàµà´Ÿàµ',
+ 'wikieditor-toolbar-tool-xlink' => 'à´ªàµà´±à´¤àµà´¤àµ‡à´¯àµà´•àµà´•àµà´³àµà´³ à´•à´£àµà´£à´¿ (ആദàµà´¯à´‚ http:// കൊടàµà´•àµà´•à´¾àµ» ഓർകàµà´•àµà´•)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com à´•à´£àµà´£à´¿ തലകàµà´•àµ†à´Ÿàµà´Ÿàµ',
+ 'wikieditor-toolbar-tool-link' => 'à´•à´£àµà´£à´¿',
+ 'wikieditor-toolbar-tool-link-title' => 'à´•à´£àµà´£à´¿ ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
+ 'wikieditor-toolbar-tool-link-int' => 'ഒരൠവികàµà´•à´¿ താളിലേയàµà´•àµà´•àµ',
+ 'wikieditor-toolbar-tool-link-int-target' => 'താളിനàµà´±àµ† തലകàµà´•àµ†à´Ÿàµà´Ÿàµ',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'താളിനàµà´±àµ† തലകàµà´•àµ†à´Ÿàµà´Ÿàµ അഥവാ യൂ.ആർ.എൽ.',
+ 'wikieditor-toolbar-tool-link-int-text' => 'à´•à´£àµà´£à´¿à´¯à´¾à´µàµ‡à´£àµà´Ÿ à´Žà´´àµà´¤àµà´¤àµ:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´•àµà´•àµ‡à´£àµà´Ÿ à´Žà´´àµà´¤àµà´¤àµ നൽകàµà´•',
+ 'wikieditor-toolbar-tool-link-ext' => 'à´ªàµà´±à´¤àµà´¤àµà´³àµà´³ വെബൠതാളിലേയàµà´•àµà´•àµ',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'à´•à´£àµà´£à´¿à´¯àµà´Ÿàµ† യൂആർഎൽ',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'à´•à´£àµà´£à´¿à´¯à´¾à´•àµ‡à´£àµà´Ÿ à´Žà´´àµà´¤àµà´¤àµ:',
+ 'wikieditor-toolbar-tool-link-insert' => 'à´•à´£àµà´£à´¿ ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
+ 'wikieditor-toolbar-tool-link-cancel' => 'റദàµà´¦à´¾à´•àµà´•àµà´•',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'താൾ നിലവിലàµà´£àµà´Ÿàµ',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'താൾ നിലവിലിലàµà´²',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'അസാധàµà´µà´¾à´¯ തലകàµà´•àµ†à´Ÿàµà´Ÿàµ',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'à´ªàµà´±à´¤àµà´¤àµ‡à´¯àµà´•àµà´•àµà´³àµà´³ à´•à´£àµà´£à´¿',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'താൾ നിലനിൽകàµà´•àµà´¨àµà´¨àµà´£àµà´Ÿàµ‹ à´Žà´¨àµà´¨àµ പരിശോധികàµà´•àµà´¨àµà´¨àµ...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'താങàµà´•àµ¾ നൽകിയ തലകàµà´•àµ†à´Ÿàµà´Ÿàµ അസാധàµà´µà´¾à´£àµ.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'താങàµà´•àµ¾ à´µàµà´¯à´•àµà´¤à´®à´¾à´•àµà´•à´¿à´¯ യൂ.ആർ.എൽ. à´•à´£àµà´Ÿà´¿à´Ÿàµà´Ÿàµ മറàµà´±àµŠà´°àµ വികàµà´•à´¿ താളിലേയàµà´•àµà´•àµà´³àµà´³à´¤à´¾à´£àµ†à´¨àµà´¨àµ തോനàµà´¨àµà´¨àµà´¨àµ. ഇതൊരൠആഭàµà´¯à´¨àµà´¤à´° à´•à´£àµà´£à´¿ ആകàµà´•à´£àµ‹?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'ആഭàµà´¯à´¨àµà´¤à´° à´•à´£àµà´£à´¿',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'à´ªàµà´±à´¤àµà´¤àµ‡à´¯àµà´•àµà´•àµà´³àµà´³ à´•à´£àµà´£à´¿',
+ 'wikieditor-toolbar-tool-link-empty' => 'à´•à´£àµà´£à´¿à´µà´¤àµà´•à´°à´¿à´•àµà´•àµ‡à´£àµà´Ÿ à´’à´¨àµà´¨àµà´‚ താങàµà´•àµ¾ നൽകിയിടàµà´Ÿà´¿à´²àµà´².',
+ 'wikieditor-toolbar-tool-file' => 'à´ªàµà´°à´®à´¾à´£à´‚ ചേർകàµà´•àµ½',
+ 'wikieditor-toolbar-tool-file-example' => 'ഉദാഹരണം.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'അവലംബം',
+ 'wikieditor-toolbar-tool-reference-example' => 'à´…à´Ÿà´¿à´•àµà´•àµà´±à´¿à´ªàµà´ªà´¿à´¨àµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ ഇവിടെ ചേർകàµà´•àµà´•',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'റദàµà´¦à´¾à´•àµà´•àµà´•',
+ 'wikieditor-toolbar-tool-reference-title' => 'അവലംബം ചേർകàµà´•àµà´•',
+ 'wikieditor-toolbar-tool-reference-insert' => 'ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
+ 'wikieditor-toolbar-tool-reference-text' => 'അവലംബ à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-tool-signature' => 'à´’à´ªàµà´ªàµà´‚ സമയമàµà´¦àµà´°à´¯àµà´‚',
+ 'wikieditor-toolbar-section-advanced' => 'വിപàµà´²à´‚',
+ 'wikieditor-toolbar-tool-heading' => 'തലകàµà´•àµ†à´Ÿàµà´Ÿàµ',
+ 'wikieditor-toolbar-tool-heading-1' => 'തലം 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'തലം 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'തലം 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'തലം 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'തലം 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'തലകàµà´•àµ†à´Ÿàµà´Ÿà´¾à´•à´¾à´¨àµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-group-format' => 'വിനàµà´¯à´¾à´¸à´‚',
+ 'wikieditor-toolbar-tool-ulist' => 'à´Žà´£àµà´£à´®à´¿à´Ÿà´¾à´¤àµà´¤ ലിസàµà´±àµà´±àµ',
+ 'wikieditor-toolbar-tool-ulist-example' => 'à´Žà´£àµà´£à´®à´¿à´Ÿà´¾à´¤àµà´¤ ലിസàµà´±àµà´±à´¿à´¨àµà´±àµ† ഉളàµà´³à´¿à´²àµ† പദങàµà´™àµ¾',
+ 'wikieditor-toolbar-tool-olist' => 'à´Žà´£àµà´£à´®à´¿à´Ÿàµà´Ÿ ലിസàµà´±àµà´±àµ',
+ 'wikieditor-toolbar-tool-olist-example' => 'à´Žà´£àµà´£à´®à´¿à´Ÿàµà´Ÿ ലിസàµà´±àµà´±à´¿à´²àµ† à´…à´‚à´—à´‚',
+ 'wikieditor-toolbar-tool-indent' => 'ഇടയിടàµà´Ÿàµ à´•àµà´°à´®àµ€à´•à´°à´¿à´•àµà´•àµ½',
+ 'wikieditor-toolbar-tool-indent-example' => 'ഇടയിടàµà´Ÿàµ à´•àµà´°à´®àµ€à´•à´°à´¿à´šàµà´š വരി',
+ 'wikieditor-toolbar-tool-nowiki' => 'വികàµà´•à´¿ à´Žà´´àµà´¤àµà´¤àµà´°àµ€à´¤à´¿ ഉപയോഗികàµà´•àµ‡à´£àµà´Ÿ',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'വികàµà´•à´¿à´°àµ€à´¤à´¿à´¯à´¿à´²à´²àµà´²à´¾à´¤àµà´¤ à´Žà´´àµà´¤àµà´¤àµ ഇവിടെ ചേർകàµà´•àµà´•',
+ 'wikieditor-toolbar-tool-redirect' => 'തിരിചàµà´šàµà´µà´¿à´Ÿàµ½',
+ 'wikieditor-toolbar-tool-redirect-example' => 'ലകàµà´·àµà´¯à´¤à´¾à´³à´¿à´¨àµà´±àµ† പേരàµ',
+ 'wikieditor-toolbar-tool-big' => 'വലàµà´¤àµ',
+ 'wikieditor-toolbar-tool-big-example' => 'വലിയ à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-tool-small' => 'ചെറàµà´¤àµ',
+ 'wikieditor-toolbar-tool-small-example' => 'ചെറിയ à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-tool-superscript' => 'à´®àµà´•à´³à´¿à´²à´¾à´¯àµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-tool-superscript-example' => 'സൂപàµà´ªàµ¼à´¸àµà´•àµà´°à´¿à´ªàµà´±àµà´±àµ à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-tool-subscript' => 'താഴെയായàµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-tool-subscript-example' => 'സബàµà´¸àµà´•àµà´°à´¿à´ªàµà´±àµà´±àµ à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-group-insert' => 'ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
+ 'wikieditor-toolbar-tool-gallery' => 'à´šà´¿à´¤àµà´°à´¶à´¾à´²',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|à´•àµà´±à´¿à´ªàµà´ªàµ1
+$1:Example.jpg|à´•àµà´±à´¿à´ªàµà´ªàµ2',
+ 'wikieditor-toolbar-tool-newline' => 'à´ªàµà´¤à´¿à´¯ വരി',
+ 'wikieditor-toolbar-tool-table' => 'പടàµà´Ÿà´¿à´•',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! തലകàµà´•àµà´±à´¿ 1
+! തലകàµà´•àµà´±à´¿ 2
+! തലകàµà´•àµà´±à´¿ 3
+|-
+| വരി 1, കളം 1
+| വരി 1, കളം 2
+| വരി 1, കളം 3
+|-
+| വരി 2, കളം 1
+| വരി 2, കളം 2
+| വരി 2, കളം 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'കളതàµà´¤à´¿à´²àµ† à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-tool-table-example-header' => 'തലകàµà´•àµà´±à´¿ à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-tool-table-title' => 'പടàµà´Ÿà´¿à´• ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'വരികൾ',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'നിരകൾ',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'തലകàµà´•àµà´±à´¿à´¯àµà´•àµà´•àµà´³àµà´³ വരി ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'അതിർവരയോടൠകൂടിയ രീതി',
+ 'wikieditor-toolbar-tool-table-sortable' => 'പടàµà´Ÿà´¿à´• à´•àµà´°à´®à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¾à´µàµà´¨àµà´¨à´¤à´¾à´•àµà´•àµà´•',
+ 'wikieditor-toolbar-tool-table-example' => 'കളതàµà´¤à´¿à´²àµ† à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-tool-table-preview' => 'à´Žà´™àµà´™à´¨àµ†à´¯àµà´£àµà´Ÿàµ†à´¨àµà´¨àµ കാണàµà´•',
+ 'wikieditor-toolbar-tool-table-insert' => 'ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
+ 'wikieditor-toolbar-tool-table-cancel' => 'റദàµà´¦à´¾à´•àµà´•àµà´•',
+ 'wikieditor-toolbar-tool-table-toomany' => 'ഇതàµà´ªà´¯àµ‹à´—à´¿à´šàµà´šàµ $1 കളങàµà´™à´³à´¿àµ½ അധികമàµà´³àµà´³ പടàµà´Ÿà´¿à´• ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´• സാദàµà´§àµà´¯à´®à´²àµà´².',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'വരികൾകàµà´•àµà´‚ നിരകൾകàµà´•àµà´‚ സാധàµà´µà´¾à´¯ à´Žà´£àµà´£à´‚ താങàµà´•àµ¾ നൽകിയിടàµà´Ÿà´¿à´²àµà´².',
+ 'wikieditor-toolbar-tool-table-zero' => 'പൂജàµà´¯à´‚ വരികളോ നിരകളോ ഉളàµà´³ പടàµà´Ÿà´¿à´• ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¾àµ» താങàµà´•àµ¾à´•àµà´•àµ കഴിയിലàµà´².',
+ 'wikieditor-toolbar-tool-replace' => 'à´•à´£àµà´Ÿàµ†à´¤àµà´¤àµà´• മാറàµà´±àµà´•',
+ 'wikieditor-toolbar-tool-replace-title' => 'à´•à´£àµà´Ÿàµ†à´¤àµà´¤àµà´• മാറàµà´±àµà´•',
+ 'wikieditor-toolbar-tool-replace-search' => 'ഇതൠകണàµà´Ÿàµ†à´¤àµà´¤àµà´•:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'ഇതàµà´•àµŠà´£àµà´Ÿàµ മാറàµà´±àµà´•:',
+ 'wikieditor-toolbar-tool-replace-case' => 'à´…à´•àµà´·à´°à´®à´¾à´²à´¾ തരവàµà´‚ (case) à´’à´¤àµà´¤àµà´¨àµ‹à´•àµà´•àµà´•',
+ 'wikieditor-toolbar-tool-replace-regex' => 'à´…à´¨àµà´µàµ‡à´·à´¿à´•àµà´•àµà´¨àµà´¨ പദതàµà´¤àµ† റെഗàµà´²àµ¼ à´Žà´•àµà´¸àµà´ªàµà´°à´·à´¨à´¾à´¯à´¿ കണകàµà´•à´¾à´•àµà´•àµà´•',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'à´…à´Ÿàµà´¤àµà´¤à´¤àµ à´•à´£àµà´Ÿàµ†à´¤àµà´¤àµà´•',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'à´…à´Ÿàµà´¤àµà´¤à´¤àµ മാറàµà´±à´¿à´šàµà´šàµ‡àµ¼à´•àµà´•àµà´•',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'à´Žà´²àµà´²à´¾à´‚ മാറàµà´±à´¿à´šàµà´šàµ‡àµ¼à´•àµà´•àµà´•',
+ 'wikieditor-toolbar-tool-replace-close' => 'à´…à´Ÿà´¯àµà´•àµà´•àµà´•',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'താങàµà´•à´³àµà´Ÿàµ† തിരചàµà´šà´¿à´²àµà´®à´¾à´¯à´¿ à´’à´¨àµà´¨àµà´‚ à´’à´¤àµà´¤àµà´ªàµ‹à´•àµà´¨àµà´¨à´¿à´²àµà´².',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 മാറàµà´±à´¿à´µàµ†à´¯àµà´•àµà´•àµ½(കൾ) നടതàµà´¤à´¿.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'തിരയാനായി താങàµà´•àµ¾ à´’à´¨àµà´¨àµà´‚ നൽകിയിടàµà´Ÿà´¿à´²àµà´².',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'താങàµà´•àµ¾ നൽകിയ റെഗàµà´²àµ¼ à´Žà´•àµà´¸àµà´ªàµà´°à´·àµ» അസാധàµà´µà´¾à´£àµâ€Œ: $1',
+ 'wikieditor-toolbar-section-characters' => 'à´ªàµà´°à´¤àµà´¯àµ‡à´• ലിപികൾ',
+ 'wikieditor-toolbar-characters-page-latin' => 'ലാറàµà´±à´¿àµ»',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'ലാറàµà´±à´¿àµ» വിപàµà´²à´‚',
+ 'wikieditor-toolbar-characters-page-ipa' => 'à´.പി.à´Ž.',
+ 'wikieditor-toolbar-characters-page-symbols' => 'à´šà´¿à´¹àµà´¨à´™àµà´™àµ¾',
+ 'wikieditor-toolbar-characters-page-greek' => 'à´—àµà´°àµ€à´•àµà´•àµ',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'സിറിലികàµ',
+ 'wikieditor-toolbar-characters-page-arabic' => 'അറബികàµ',
+ 'wikieditor-toolbar-characters-page-persian' => 'പേർഷàµà´¯àµ»',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'ഹീബàµà´°àµ',
+ 'wikieditor-toolbar-characters-page-bangla' => 'ബംഗàµà´²à´¾',
+ 'wikieditor-toolbar-characters-page-telugu' => 'തെലàµà´™àµà´•àµ',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'സിംഹള',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'à´—àµà´œà´±à´¾à´¤àµà´¤à´¿',
+ 'wikieditor-toolbar-characters-page-thai' => 'തായàµ',
+ 'wikieditor-toolbar-characters-page-lao' => 'ലാവോ',
+ 'wikieditor-toolbar-characters-page-khmer' => 'ഖെമർ',
+ 'wikieditor-toolbar-section-help' => 'സഹായം',
+ 'wikieditor-toolbar-help-heading-description' => 'വിവരണം',
+ 'wikieditor-toolbar-help-heading-syntax' => 'താങàµà´•àµ¾ ടൈപàµà´ªàµ ചെയàµà´¯àµà´¨àµà´¨à´¤àµ',
+ 'wikieditor-toolbar-help-heading-result' => 'താങàµà´•àµ¾à´•àµà´•àµ ലഭികàµà´•àµà´¨àµà´¨à´¤àµ',
+ 'wikieditor-toolbar-help-page-format' => 'വിനàµà´¯à´¾à´¸à´‚',
+ 'wikieditor-toolbar-help-page-link' => 'à´•à´£àµà´£à´¿à´•àµ¾',
+ 'wikieditor-toolbar-help-page-heading' => 'തലകàµà´•àµ†à´Ÿàµà´Ÿàµà´•àµ¾',
+ 'wikieditor-toolbar-help-page-list' => 'ലിസàµà´±àµà´±àµà´•àµ¾',
+ 'wikieditor-toolbar-help-page-file' => 'à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾',
+ 'wikieditor-toolbar-help-page-reference' => 'അവലംബങàµà´™àµ¾',
+ 'wikieditor-toolbar-help-page-discussion' => 'സംവാദം',
+ 'wikieditor-toolbar-help-content-italic-description' => 'ചെരിചàµà´šàµà´³àµà´³à´¤àµ',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''ചെരിചàµà´šàµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>ചെരിചàµà´šàµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'à´•à´Ÿàµà´Ÿà´¿à´•àµ‚à´Ÿàµà´Ÿà´¿à´¯àµà´³àµà´³',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''à´•à´Ÿàµà´Ÿà´¿à´•àµ‚à´Ÿàµà´Ÿà´¿à´¯ à´Žà´´àµà´¤àµà´¤àµ'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>à´•à´Ÿàµà´Ÿà´¿à´•àµ‚à´Ÿàµà´Ÿà´¿à´¯ à´Žà´´àµà´¤àµà´¤àµ</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'à´•à´Ÿàµà´Ÿà´¿à´•àµ‚à´Ÿàµà´Ÿà´¿ ചെരിചàµà´šàµà´³àµà´³à´¤àµ',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''à´•à´Ÿàµà´Ÿà´¿à´•àµ‚à´Ÿàµà´Ÿà´¿ ചെരിചàµà´šàµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>à´•à´Ÿàµà´Ÿà´¿à´•àµ‚à´Ÿàµà´Ÿà´¿ ചെരിചàµà´šàµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'ആനàµà´¤à´°à´¿à´• à´•à´£àµà´£à´¿',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[താളിനàµà´±àµ† തലകàµà´•àµ†à´Ÿàµà´Ÿàµ|à´•à´£àµà´£à´¿à´¯àµà´Ÿàµ† നാമം]]<br />[[താളിനàµà´±àµ† തലകàµà´•àµ†à´Ÿàµà´Ÿàµ]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>à´•à´£àµà´£à´¿à´¯àµà´Ÿàµ† നാമം</a><br /><a href='#'>താളിനàµà´±àµ† തലകàµà´•àµ†à´Ÿàµà´Ÿàµ</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'à´ªàµà´±à´¤àµà´¤àµ‡à´¯àµà´•àµà´•àµà´³àµà´³ à´•à´£àµà´£à´¿',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org à´•à´£àµà´£à´¿à´¯àµà´Ÿàµ† പേരàµ]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>à´•à´£àµà´£à´¿à´¯àµà´Ÿàµ† പേരàµ</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'à´¦àµà´µà´¿à´¤àµ€à´¯ തല തലകàµà´•àµ†à´Ÿàµà´Ÿàµ',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== തലകàµà´•àµ†à´Ÿàµà´Ÿàµ à´Žà´´àµà´¤àµà´¤àµ ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>തലകàµà´•àµ†à´Ÿàµà´Ÿàµ à´Žà´´àµà´¤àµà´¤àµ</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'തൃതീയ തല തലകàµà´•àµ†à´Ÿàµà´Ÿàµ',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== തലകàµà´•àµ†à´Ÿàµà´Ÿàµ à´Žà´´àµà´¤àµà´¤àµ ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3> തലകàµà´•àµ†à´Ÿàµà´Ÿàµ à´Žà´´àµà´¤àµà´¤àµ </h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'നാലാം തല തലകàµà´•àµ†à´Ÿàµà´Ÿàµ',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== തലകàµà´•àµ†à´Ÿàµà´Ÿàµ à´Žà´´àµà´¤àµà´¤àµ ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>തലകàµà´•àµ†à´Ÿàµà´Ÿàµ à´Žà´´àµà´¤àµà´¤àµ</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'à´…à´žàµà´šà´¾à´‚ തല തലകàµà´•àµ†à´Ÿàµà´Ÿàµ',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== തലകàµà´•àµ†à´Ÿàµà´Ÿàµ à´Žà´´àµà´¤àµà´¤àµ =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>തലകàµà´•àµ†à´Ÿàµà´Ÿàµ à´Žà´´àµà´¤àµà´¤àµ</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'à´Žà´£àµà´£à´®à´¿à´Ÿà´¾à´¤àµà´¤ ലിസàµà´±àµà´±àµ',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '*ലിസàµà´±àµà´±à´¿à´²àµ† à´…à´‚à´—à´‚<br />*ലിസàµà´±àµà´±à´¿à´²àµ† à´…à´‚à´—à´‚',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>ലിസàµà´±àµà´±à´¿à´²àµ† à´…à´‚à´—à´‚</li><li>ലിസàµà´±àµà´±à´¿à´²àµ† à´…à´‚à´—à´‚</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'à´Žà´£àµà´£à´®à´¿à´Ÿàµà´Ÿ ലിസàµà´±àµà´±àµ',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '#ലിസàµà´±àµà´±à´¿à´²àµ† à´…à´‚à´—à´‚<br />#ലിസàµà´±àµà´±à´¿à´²àµ† à´…à´‚à´—à´‚',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>ലിസàµà´±àµà´±à´¿à´²àµ† à´…à´‚à´—à´‚</li><li>ലിസàµà´±àµà´±à´¿à´²àµ† à´…à´‚à´—à´‚</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'à´ªàµà´°à´®à´¾à´£à´‚ ചേർകàµà´•àµ½',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|വിവരണ à´•àµà´±à´¿à´ªàµà´ªàµ]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='à´•àµà´±à´¿à´ªàµà´ªà´¾à´¯àµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt='ലഘàµà´šà´¿à´¤àµà´°à´‚'/></a><div class='thumbcaption'><div class='magnify'><a title='വലàµà´¤à´¾à´•àµà´•àµà´•' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>à´•àµà´±à´¿à´ªàµà´ªà´¾à´¯àµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'അവലംബം',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'താളിലെ à´Žà´´àµà´¤àµà´¤àµ.&lt;ref name="test"&gt;[http://www.example.org à´•à´£àµà´£à´¿à´¯à´¾à´¯àµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ], കൂടàµà´¤àµ½ à´Žà´´àµà´¤àµà´¤àµ.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "താളിലെ à´Žà´´àµà´¤àµà´¤àµ.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'അതേ അവലംബതàµà´¤à´¿à´¨àµà´±àµ† കൂടàµà´¤àµ½ ഉപയോഗം',
+ 'wikieditor-toolbar-help-content-rereference-result' => "താളിലെ à´Žà´´àµà´¤àµà´¤àµ.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'അവലംബങàµà´™àµ¾ à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´•',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>à´•à´£àµà´£à´¿à´¯à´¾à´¯àµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ</a>, കൂടàµà´¤àµ½ à´Žà´´àµà´¤àµà´¤àµ.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'സമയമàµà´¦àµà´°à´¯àµ‹à´Ÿàµà´•àµ‚à´Ÿà´¿à´¯ à´’à´ªàµà´ªàµ',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚</a> (<a href='#' title='{{#special:mytalk}}'>സംവാദം</a>) 15:54, 10 ജൂൺ 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'à´’à´ªàµà´ªàµ',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚</a> (<a href='#' title='{{#special:mytalk}}'>സംവാദം</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'നീകàµà´•à´¿à´¯àµ†à´´àµà´¤àµà´•',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'സാധാരണ à´Žà´´àµà´¤àµà´¤àµ<br />:നീകàµà´•à´¿à´¯àµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ<br />::നീകàµà´•à´¿à´¯àµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ',
+ 'wikieditor-toolbar-help-content-indent-result' => 'സാധാരണ à´Žà´´àµà´¤àµà´¤àµ<dl><dd>നീകàµà´•à´¿à´¯àµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ<dl><dd>നീകàµà´•à´¿à´¯àµà´³àµà´³ à´Žà´´àµà´¤àµà´¤àµ</dd></dl></dd></dl>',
+);
+
+/** Mongolian (Монгол)
+ * @author Chinneeb
+ */
+$messages['mn'] = array(
+ 'wikieditor-template-editor-dialog-cancel' => 'Цуцлах',
+ 'wikieditor-toolbar-loading' => 'Уншиж байна...',
+ 'wikieditor-toolbar-tool-italic' => 'Ðалуу',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Цуцлах',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Ðалуу бичиг',
+);
+
+/** Marathi (मराठी)
+ * @author Htt
+ * @author Mahitgar
+ * @author McDutchie
+ * @author V.narsikar
+ * @author अभय नातू
+ */
+$messages['mr'] = array(
+ 'wikieditor' => 'विकिमजकूर संपादनाची विकसित सà¥à¤µà¤¿à¤§à¤¾',
+ 'wikieditor-desc' => 'विसà¥à¤¤à¤¾à¤°à¤£à¥€à¤¯ विकिमजकà¥à¤° संपादन आंतरपृषà¥à¤  (इंटरफेस) आणि बरà¥â€à¤¯à¤¾à¤š वैशिषà¥à¤Ÿà¥à¤¯à¤ªà¥‚रà¥à¤£ निशà¥à¤šà¤¯à¤¿à¤•à¤¾ (मॊडà¥à¤¯à¥‚लà¥à¤¸) पà¥à¤°à¤µà¤¤à¥‡',
+ 'wikieditor-wikitext-tab' => 'विकिमजकूर',
+ 'wikieditor-loading' => 'चढवत आहे…',
+ 'wikieditor-preview-preference' => 'सोबतच आजà¥-बाजूस दिसणारी à¤à¤²à¤• शकà¥à¤¯ करा.',
+ 'wikieditor-preview-tab' => 'à¤à¤²à¤•',
+ 'wikieditor-preview-changes-tab' => 'बदल',
+ 'wikieditor-preview-loading' => 'चढवत आहे…',
+ 'wikieditor-previewDialog-preference' => '"à¤à¤²à¤• पहा" चौकट सकà¥à¤·à¤® करा',
+ 'wikieditor-previewDialog-tab' => 'à¤à¤²à¤• पहा',
+ 'wikieditor-previewDialog-loading' => 'चढवत आहे…',
+ 'wikieditor-publish-preference' => 'टपà¥à¤ªà¥à¤¯à¤¾-टपà¥à¤ªà¥à¤¯à¤¾à¤¨à¥‡ पà¥à¤°à¤•à¤¾à¤¶à¤¨ शकà¥à¤¯ करा',
+ 'wikieditor-publish-button-publish' => 'पà¥à¤°à¤•à¤¾à¤¶à¤¿à¤¤ करा
+दाखवा',
+ 'wikieditor-publish-button-cancel' => 'रदà¥à¤¦ करा',
+ 'wikieditor-publish-dialog-title' => '{{संकेतसà¥à¤¥à¤³à¤¨à¤¾à¤µ}} येथे पà¥à¤°à¤¦à¤°à¥à¤¶à¤¿à¤¤ करा',
+ 'wikieditor-publish-dialog-summary' => 'बदलांचा आढावा :(आपण केलेलà¥à¤¯à¤¾ बदलांचे थोडकà¥à¤¯à¤¾à¤¤ वरà¥à¤£à¤¨ करा.)',
+ 'wikieditor-publish-dialog-minor' => 'छोटा बदल',
+ 'wikieditor-publish-dialog-watch' => 'या पानावर बदलांसाठी लकà¥à¤· ठेवा',
+ 'wikieditor-publish-dialog-publish' => 'पà¥à¤°à¤•à¤¾à¤¶à¤¿à¤¤ करा',
+ 'wikieditor-publish-dialog-goback' => 'मागे जा',
+ 'wikieditor-template-editor-preference' => 'विकि साचà¥à¤¯à¤¾à¤‚ची नमà¥à¤¨à¤¾ संपादन सकà¥à¤·à¤® करा',
+ 'wikieditor-template-editor-dialog-title' => 'साचà¥à¤¯à¤¾à¤šà¥‡ संपादन करा',
+ 'wikieditor-template-editor-dialog-submit' => 'अदà¥à¤¯à¤¯à¤¾à¤µà¤¤ करा',
+ 'wikieditor-template-editor-dialog-cancel' => 'रदà¥à¤¦ करा',
+ 'wikieditor-templates-preference' => 'साचà¥à¤¯à¤¾à¤‚ची घडीकà¥à¤·à¤®à¤¤à¤¾ सकà¥à¤·à¤® करा',
+ 'wikieditor-toc-preference' => 'सà¥à¤šà¤¾à¤²à¤¨à¤¯à¥‹à¤—à¥à¤¯ अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ सकà¥à¤·à¤® करा',
+ 'wikieditor-toc-show' => 'अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ दाखवा
+यात काय आहे ते दाखवा',
+ 'wikieditor-toc-hide' => 'अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾ लपवा',
+ 'wikieditor-toolbar' => 'संपादन साधनपटà¥à¤Ÿà¥€',
+ 'wikieditor-toolbar-desc' => 'सà¥à¤²à¤­à¥€à¤•à¤°à¤£à¤¾à¤¨à¥‡ वरà¥à¤§à¤¿à¤¤ संपादनपान साधनपटà¥à¤Ÿà¥€',
+ 'wikieditor-toolbar-preference' => 'वरà¥à¤§à¤¿à¤¤ संपादन साधनपटà¥à¤Ÿà¥€ सकà¥à¤·à¤® करा',
+ 'wikieditor-toolbar-dialogs-preference' => 'दà¥à¤µà¥‡, सारणà¥à¤¯à¤¾ (टेबल) आणि इतर भरणà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾ dialogs सकà¥à¤·à¤® करा',
+ 'wikieditor-toolbar-hidesig' => 'मà¥à¤–à¥à¤¯ नामविशà¥à¤µà¤¾à¤¤à¥€à¤² पानांपासून सà¥à¤µà¤¾à¤•à¥à¤·à¤°à¥€à¤šà¥€ कळ लपवा',
+ 'wikieditor-toolbar-loading' => 'चढवत आहे…',
+ 'wikieditor-toolbar-tool-bold' => 'ठळक',
+ 'wikieditor-toolbar-tool-bold-example' => 'ठळक मजकूर',
+ 'wikieditor-toolbar-tool-italic' => 'तिरपी मà¥à¤¦à¥à¤°à¤¾à¤•à¥à¤·à¤°à¥‡',
+ 'wikieditor-toolbar-tool-italic-example' => 'तिरपी मà¥à¤¦à¥à¤°à¤¾à¤•à¥à¤·à¤°à¥‡',
+ 'wikieditor-toolbar-tool-ilink' => 'अंतरà¥à¤—त दà¥à¤µà¤¾',
+ 'wikieditor-toolbar-tool-ilink-example' => 'शीरà¥à¤·à¤•à¤¾à¤¸ दà¥à¤µà¤¾ दà¥à¤¯à¤¾',
+ 'wikieditor-toolbar-tool-xlink' => 'बाहà¥à¤¯ दà¥à¤µà¥à¤¯à¤¾à¤¤ (http:// हा उपसरà¥à¤— विसरू नका)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com दà¥à¤µà¥à¤¯à¤¾à¤šà¥‡ शीरà¥à¤·à¤•',
+ 'wikieditor-toolbar-tool-link' => 'दà¥à¤µà¤¾',
+ 'wikieditor-toolbar-tool-link-title' => 'दà¥à¤µà¤¾ जोडा',
+ 'wikieditor-toolbar-tool-link-int' => 'à¤à¤•à¤¾ विकि पानास',
+ 'wikieditor-toolbar-tool-link-int-target' => 'लकà¥à¤·à¥à¤¯à¤ªà¤¾à¤¨ अथवा URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'पान शीरà¥à¤·à¤• अथवा URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'दरà¥à¤¶à¤¨à¥€à¤¯ मजकूर',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'दरà¥à¤¶à¤µà¤²à¤¾ जाणारा मजकूर',
+ 'wikieditor-toolbar-tool-link-ext' => 'à¤à¤•à¤¾ बाहà¥à¤¯ संकेतसà¥à¤¥à¤³à¤¾à¤•à¤¡à¥‡',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL दà¥à¤µà¤¾:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'मजकूर जोडा:',
+ 'wikieditor-toolbar-tool-link-insert' => 'दà¥à¤µà¤¾ जोडा',
+ 'wikieditor-toolbar-tool-link-cancel' => 'रदà¥à¤¦ करा',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'पान असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ आहे',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'पान असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ नाही',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'अगà¥à¤°à¤¾à¤¹à¥à¤¯ शीरà¥à¤·à¤•',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'बाहà¥à¤¯ दà¥à¤µà¤¾',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'पानाचे असà¥à¤¤à¥€à¤¤à¥à¤µ तपासत आहे...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'तà¥à¤®à¥à¤¹à¥€ नमà¥à¤¦ केलेले शीरà¥à¤·à¤• अगà¥à¤°à¤¾à¤¹à¥à¤¯ आहे.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'तà¥à¤®à¥à¤¹à¥€ नमà¥à¤¦ केलेली यूआरà¤à¤² इतर विकिपानास जोडावयाची आहे असे दिसते. तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ अंतरà¥à¤—त दà¥à¤µà¤¾ बनवायचा आहे काय ?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'अंतरà¥à¤—त दà¥à¤µà¤¾',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'बाहà¥à¤¯ दà¥à¤µà¤¾',
+ 'wikieditor-toolbar-tool-link-empty' => 'तà¥à¤®à¥à¤¹à¥€ दà¥à¤µà¤¾ देणà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾ काही भरलेले नाही.',
+ 'wikieditor-toolbar-tool-file' => 'संलगà¥à¤¨ संचिका',
+ 'wikieditor-toolbar-tool-file-example' => 'उदाहरण.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'संदरà¥à¤­',
+ 'wikieditor-toolbar-tool-reference-example' => 'तळटीप मजकूर येथे भरा',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'रदà¥à¤¦ करा',
+ 'wikieditor-toolbar-tool-reference-title' => 'संदरà¥à¤­ भरा',
+ 'wikieditor-toolbar-tool-reference-insert' => 'समाविषà¥à¤Ÿà¤•à¤°à¤¾',
+ 'wikieditor-toolbar-tool-reference-text' => 'संदरà¥à¤­ मजकूर',
+ 'wikieditor-toolbar-tool-signature' => 'सही आणि वेळठसा',
+ 'wikieditor-toolbar-section-advanced' => 'पà¥à¤°à¤—त',
+ 'wikieditor-toolbar-tool-heading' => 'मथळा',
+ 'wikieditor-toolbar-tool-heading-1' => 'सà¥à¤¤à¤° १',
+ 'wikieditor-toolbar-tool-heading-2' => 'सà¥à¤¤à¤° २',
+ 'wikieditor-toolbar-tool-heading-3' => 'सà¥à¤¤à¤° ३',
+ 'wikieditor-toolbar-tool-heading-4' => 'सà¥à¤¤à¤° ४',
+ 'wikieditor-toolbar-tool-heading-5' => 'सà¥à¤¤à¤° ५',
+ 'wikieditor-toolbar-tool-heading-example' => 'अगà¥à¤°à¤¶à¥€à¤°à¥à¤· मजकूर',
+ 'wikieditor-toolbar-group-format' => 'आराखडा',
+ 'wikieditor-toolbar-tool-ulist' => 'बिंदी कà¥à¤°à¤®à¤¾à¤‚कन',
+ 'wikieditor-toolbar-tool-ulist-example' => 'बिंदी कà¥à¤°à¤®à¤¾à¤‚कन घटक',
+ 'wikieditor-toolbar-tool-olist' => 'अनà¥à¤•à¥à¤°à¤® यादी',
+ 'wikieditor-toolbar-tool-olist-example' => 'अनà¥à¤•à¥à¤°à¤® यादी घटक',
+ 'wikieditor-toolbar-tool-indent' => 'समासांतर',
+ 'wikieditor-toolbar-tool-indent-example' => 'समासांतर ओळ',
+ 'wikieditor-toolbar-tool-nowiki' => 'विकि सà¥à¤µà¤°à¥‚पण नको',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'असà¥à¤µà¤°à¥‚पित मजकूर येथे भरा',
+ 'wikieditor-toolbar-tool-redirect' => 'पà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨',
+ 'wikieditor-toolbar-tool-redirect-example' => 'लकà¥à¤·à¥à¤¯à¤ªà¤¾à¤¨ नाव',
+ 'wikieditor-toolbar-tool-big' => 'मोठे',
+ 'wikieditor-toolbar-tool-big-example' => 'मोठा मजकूर',
+ 'wikieditor-toolbar-tool-small' => 'छोटा',
+ 'wikieditor-toolbar-tool-small-example' => 'छोटा मजकूर',
+ 'wikieditor-toolbar-tool-superscript' => 'शीरà¥à¤·à¤²à¥‡à¤–न',
+ 'wikieditor-toolbar-tool-superscript-example' => 'शीरà¥à¤·à¤²à¥‡à¤–न मजकूर',
+ 'wikieditor-toolbar-tool-subscript' => 'अधोलेखन',
+ 'wikieditor-toolbar-tool-subscript-example' => 'अधोलेखन मजकूर',
+ 'wikieditor-toolbar-group-insert' => 'समाविषà¥à¤Ÿà¤•à¤°à¤¾',
+ 'wikieditor-toolbar-tool-gallery' => 'चितà¥à¤°à¤¦à¤¿à¤°à¥à¤˜à¤¾',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|चितà¥à¤°à¤ªà¤°à¤¿à¤šà¤¯ १
+$1:Example.jpg|चितà¥à¤°à¤ªà¤°à¤¿à¤šà¤¯ २',
+ 'wikieditor-toolbar-tool-newline' => 'नवी ओळ',
+ 'wikieditor-toolbar-tool-table' => 'सारणी',
+ 'wikieditor-toolbar-tool-table-example-old' => '! मथळा १
+! मथळा २
+! मथळा ३
+|-
+| ओळ १, कपà¥à¤ªà¤¾ १
+| ओळ १, कपà¥à¤ªà¤¾ २
+| ओळ १, कपà¥à¤ªà¤¾ ३
+|-
+| ओळ २, कपà¥à¤ªà¤¾ १
+| ओळ २, कपà¥à¤ªà¤¾ २
+| ओळ २, कपà¥à¤ªà¤¾ ३',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'कपà¥à¤ªà¥à¤¯à¤¾à¤¤à¥€à¤² मजकूर',
+ 'wikieditor-toolbar-tool-table-example-header' => 'मथळा मजकूर',
+ 'wikieditor-toolbar-tool-table-title' => 'सारणी समाविषà¥à¤Ÿ करा',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'ओळी',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'रकाना',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'मथळा ओळ जोडा',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'काठासहीत शैली',
+ 'wikieditor-toolbar-tool-table-sortable' => 'सारणी कà¥à¤°à¤®à¤¾à¤¨à¥à¤¸à¤¾à¤°à¥€ करणà¥à¤¯à¤¾à¤œà¥‹à¤—ी करा',
+ 'wikieditor-toolbar-tool-table-example' => 'उदाहरण',
+ 'wikieditor-toolbar-tool-table-preview' => 'à¤à¤²à¤•',
+ 'wikieditor-toolbar-tool-table-insert' => 'समाविषà¥à¤Ÿà¤•à¤°à¤¾',
+ 'wikieditor-toolbar-tool-table-cancel' => 'रदà¥à¤¦ करा',
+ 'wikieditor-toolbar-tool-table-toomany' => '$1 कपà¥à¤¯à¤¾à¤ªà¥‡à¤•à¥à¤·à¤¾ जासà¥à¤¤ कपà¥à¤ªà¥‡ असलेली सारणी (टेबल) या संवादगवाकà¥à¤·à¤¾à¤¤à¥‚न शकà¥à¤¯ नाही.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'आपण रकाने(कॉलम) किंवा ओळींचा (रो) गà¥à¤°à¤¾à¤¹à¥à¤¯ आकडा टाकला नाही.',
+ 'wikieditor-toolbar-tool-table-zero' => 'आपण शूनà¥à¤¯ रकाने किंवा ओळींची सारणी टाकू शकत नाही.',
+ 'wikieditor-toolbar-tool-replace' => 'शोधा व तà¥à¤¯à¤¾à¤œà¤¾à¤—ी बदला.',
+ 'wikieditor-toolbar-tool-replace-title' => 'शोधा व तà¥à¤¯à¤¾à¤œà¤¾à¤—ी बदला.',
+ 'wikieditor-toolbar-tool-replace-search' => 'यासाठी शोधा:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'टाकà¥à¤¨ बदला:',
+ 'wikieditor-toolbar-tool-replace-case' => '’केस’जà¥à¤³à¤µà¤¾',
+ 'wikieditor-toolbar-tool-replace-regex' => 'शोध सूतà¥à¤°à¤¾à¤¸(सà¥à¤Ÿà¥à¤°à¤¿à¤‚ग) नियमीत पदावली(à¤à¤•à¥à¤¸à¤ªà¥à¤°à¥‡à¤¶à¤¨) पà¥à¤°à¤®à¤¾à¤£à¥‡ गृहीत धरा.',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'पà¥à¤¢à¥€à¤² शोधा:',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'पà¥à¤¢à¥€à¤² मजकà¥à¤°à¤¾à¤µà¤° पà¥à¤¨à¤°à¥à¤²à¥‡à¤–न करा:',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'सरà¥à¤µ बदली करा.',
+ 'wikieditor-toolbar-tool-replace-close' => 'बंद करा.',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'आपला शोध कशाशीच जà¥à¤³à¤¤ नाही.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 बदलविलेत.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'आपण शोधणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ काहीही भरले नाही.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'या तà¥à¤®à¥à¤¹à¥€ टाकलेलेली नेहमीची पदावली अगà¥à¤°à¤¾à¤¹à¥à¤¯ आहे:$1',
+ 'wikieditor-toolbar-section-characters' => 'विशेष वरà¥à¤£',
+ 'wikieditor-toolbar-characters-page-latin' => 'लॅटीन',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'विसà¥à¤¤à¤¾à¤°à¥€à¤¤ लॅटीन भाषा',
+ 'wikieditor-toolbar-characters-page-ipa' => 'आंतरराषà¥à¤Ÿà¥à¤°à¥€à¤¯ उचà¥à¤šà¤¾à¤°à¤¾à¤¨à¥à¤°à¥‚प अकà¥à¤·à¤°à¤ªà¤¦à¥à¤§à¤¤à¥€',
+ 'wikieditor-toolbar-characters-page-symbols' => 'चिनà¥à¤¹',
+ 'wikieditor-toolbar-characters-page-greek' => 'गà¥à¤°à¥€à¤• भाषा',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'सिरिलीक',
+ 'wikieditor-toolbar-characters-page-arabic' => 'अरेबिक भाषा',
+ 'wikieditor-toolbar-characters-page-persian' => 'फारà¥à¤¸à¥€',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'हिबà¥à¤°à¥‚ भाषा',
+ 'wikieditor-toolbar-characters-page-bangla' => 'बंगाली भाषा',
+ 'wikieditor-toolbar-characters-page-telugu' => 'तेलगॠभाषा',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'सिंहला',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'गà¥à¤œà¤°à¤¾à¤¤à¥€ भाषा',
+ 'wikieditor-toolbar-characters-page-thai' => 'थाई भाषा',
+ 'wikieditor-toolbar-characters-page-lao' => 'लाऒ भाषा',
+ 'wikieditor-toolbar-characters-page-khmer' => 'खमेर',
+ 'wikieditor-toolbar-section-help' => 'सहायà¥à¤¯',
+ 'wikieditor-toolbar-help-heading-description' => 'वरà¥à¤£à¤¨',
+ 'wikieditor-toolbar-help-heading-syntax' => 'जे तà¥à¤®à¥à¤¹à¥€ टंकीत(टाईप) कराल',
+ 'wikieditor-toolbar-help-heading-result' => 'तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ मिळेल',
+ 'wikieditor-toolbar-help-page-format' => 'सà¥à¤µà¤°à¥‚पण',
+ 'wikieditor-toolbar-help-page-link' => 'दà¥à¤µà¥‡',
+ 'wikieditor-toolbar-help-page-heading' => 'मथळे',
+ 'wikieditor-toolbar-help-page-list' => 'यादी',
+ 'wikieditor-toolbar-help-page-file' => 'संचिका',
+ 'wikieditor-toolbar-help-page-reference' => 'संदरà¥à¤­',
+ 'wikieditor-toolbar-help-page-discussion' => 'चरà¥à¤šà¤¾',
+ 'wikieditor-toolbar-help-content-italic-description' => 'तिरपी मà¥à¤¦à¥à¤°à¤¾à¤•à¥à¤·à¤°à¥‡',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''तीरका मजकूर''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>तीरका मजकूर</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'ठळक',
+ 'wikieditor-toolbar-help-content-bold-syntax' => '’’’ठळक मजकूर’’’',
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>ठळक मजकूर</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'ठळक &amp; तीरकी',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''ठळक &amp; तीरका मजकूर'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>ठळक आणि तीरका मजकूर</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'अंतरà¥à¤—त दà¥à¤µà¤¾',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[लेख शीरà¥à¤·à¤•|दृशà¥à¤¯ शबà¥à¤¦à¤²à¥‡à¤–न]]<br />[[लेख शीरà¥à¤·à¤•]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>दृशà¥à¤¯ शबà¥à¤¦à¤²à¥‡à¤–न</a><br /><a href='#'>पानाचे नाव</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'बाहà¥à¤¯ दà¥à¤µà¤¾',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org दृशà¥à¤¯ शबà¥à¤¦à¤²à¥‡à¤–न]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>दà¥à¤µà¤¾ नाव</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'दà¥à¤µà¤¿à¤¤à¥€à¤¯ सà¥à¤¤à¤°à¤¾à¤šà¤¾ मथळा',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '==अगà¥à¤°à¤¶à¥€à¤°à¥à¤· मजकà¥à¤°==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>मथळà¥à¤¯à¤¾à¤šà¤¾ मजकूर</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'तृतीय सà¥à¤¤à¤°à¤¾à¤šà¤¾ मथळा',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '===दà¥à¤¯à¥à¤¯à¤® शीरà¥à¤·à¤•===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>मथळà¥à¤¯à¤¾à¤šà¤¾ मजकूर</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'चतà¥à¤°à¥à¤¥à¤¸à¥à¤¤à¤° अगà¥à¤°à¤¶à¥€à¤°à¥à¤· मजकà¥à¤°',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== मथळा मजकà¥à¤°====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>मथळà¥à¤¯à¤¾à¤šà¤¾ मजकूर</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '५वा सà¥à¤¤à¤° मथळा',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '=====मथळा मजकूर=====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>मथळà¥à¤¯à¤¾à¤šà¤¾ मजकूर</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'बिंदीकà¥à¤°à¤®à¤¾à¤‚कीत यादी',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* यादी कलम<br />* यादी कलम',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>यादी घटक</li><li>यादी घटक</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'अनà¥à¤•à¥à¤°à¤® यादी',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# यादी घटक<br /># यादी घटक',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>यादी घटक</li><li>यादी घटक</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'संलगà¥à¤¨ संचिका',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|मथळा मजकूर]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='मथळा मजकूर' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Caption text</div></div>
+<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Caption text</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'संदरà¥à¤­',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Page text.&lt;ref name="test"&gt;[http://www.example.org Link text], additional text.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Page text.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'याच संदरà¥à¤­à¤¾à¤šà¤¾ अतिरीकà¥à¤¤ वापर',
+ 'wikieditor-toolbar-help-content-rereference-result' => "पान मजकूर.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'संदरà¥à¤­ दरà¥à¤¶à¤µà¤¾',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Link text</a>, additional text.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'वेळेसह तà¥à¤®à¤šà¥€ सही
+तà¥à¤®à¤šà¥€ सही व वेळ',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>सदसà¥à¤¯à¤¨à¤¾à¤µ</a> (<a href='#' title='{{#special:mytalk}}'>चरà¥à¤šà¤¾</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'सही',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#विशेष:माà¤à¥‡à¤¸à¤¦à¤¸à¥à¤¯à¤ªà¤¾à¤¨}}'>सदसà¥à¤¯à¤¨à¤¾à¤µ</a> (<a href='#' title='{{#विशेष:माà¤à¥à¤¯à¤¾à¤šà¤°à¥à¤šà¤¾}}'>चरà¥à¤šà¤¾</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'समासांतर',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'सामानà¥à¤¯ मजकूर<br />:समासीत मजकूर<br />::समासीत मजकूर',
+ 'wikieditor-toolbar-help-content-indent-result' => 'सामानà¥à¤¯ मजकूर<dl><dd>समासीत मजकूर<dl><dd>समासीत मजकूर</dd></dl></dd></dl>',
+);
+
+/** Malay (Bahasa Melayu)
+ * @author Anakmalaysia
+ * @author Aurora
+ * @author Aviator
+ * @author CoolCityCat
+ * @author Diagramma Della Verita
+ * @author Yosri
+ */
+$messages['ms'] = array(
+ 'wikieditor' => 'Wikiteks keutamaan halaman suntingan',
+ 'wikieditor-desc' => 'Menyediakan halaman wikitext suntingan dan ciri modul lain',
+ 'wikieditor-wikitext-tab' => 'Wikiteks',
+ 'wikieditor-loading' => 'Editor sedang dimuatkan',
+ 'wikieditor-preview-preference' => 'Aktifkan pratonton sisi',
+ 'wikieditor-preview-tab' => 'Pratonton',
+ 'wikieditor-preview-changes-tab' => 'Perubahan',
+ 'wikieditor-preview-loading' => 'Memuatkan...',
+ 'wikieditor-previewDialog-preference' => 'Aktifkan dialog pratonton',
+ 'wikieditor-previewDialog-tab' => 'Pratonton',
+ 'wikieditor-previewDialog-loading' => 'Memuatkan...',
+ 'wikieditor-publish-preference' => 'Aktifkan tutorial penerbitan',
+ 'wikieditor-publish-button-publish' => 'Terbitkan',
+ 'wikieditor-publish-button-cancel' => 'Batalkan',
+ 'wikieditor-publish-dialog-title' => 'Paparkan pada laman ((sitename))',
+ 'wikieditor-publish-dialog-summary' => 'Sunting ringkasan (jelaskan perubahan yang disertakan secara ringkas)',
+ 'wikieditor-publish-dialog-minor' => 'Suntingan kecil',
+ 'wikieditor-publish-dialog-watch' => 'Pantau laman ini',
+ 'wikieditor-publish-dialog-publish' => 'Terbitkan',
+ 'wikieditor-publish-dialog-goback' => 'Kembali',
+ 'wikieditor-template-editor-preference' => 'Aktifkan borang penyuntingan wiki templat',
+ 'wikieditor-template-editor-dialog-title' => 'Sunting templat',
+ 'wikieditor-template-editor-dialog-submit' => 'Mengemas kini',
+ 'wikieditor-template-editor-dialog-cancel' => 'Batalkan',
+ 'wikieditor-templates-preference' => 'Aktifkan templat',
+ 'wikieditor-toc-preference' => 'Aktifkan navigasi senarai kandungan',
+ 'wikieditor-toc-show' => 'Tampilkan kandungan',
+ 'wikieditor-toc-hide' => 'Sembunyikan kandungan',
+ 'wikieditor-toolbar' => 'Bar alatan penyuntingan',
+ 'wikieditor-toolbar-desc' => 'Bar alatan penyuntingan maju',
+ 'wikieditor-toolbar-preference' => 'Bolehkan alatan penyuntingan maju',
+ 'wikieditor-toolbar-dialogs-preference' => 'Aktifkan dialog untuk menyelitkan pautan, jadual dan lain-lain',
+ 'wikieditor-toolbar-hidesig' => 'Sorokkan butang tandatangan daripada laman-laman dalam ruang nama utama',
+ 'wikieditor-toolbar-loading' => 'Memuatkan...',
+ 'wikieditor-toolbar-tool-bold' => 'Teks tebal',
+ 'wikieditor-toolbar-tool-bold-example' => 'Teks tebal',
+ 'wikieditor-toolbar-tool-italic' => 'Teks condong',
+ 'wikieditor-toolbar-tool-italic-example' => 'Teks condong',
+ 'wikieditor-toolbar-tool-ilink' => 'Pautan dalaman',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Tajuk pautan',
+ 'wikieditor-toolbar-tool-xlink' => 'Pautan luar (jangan lupa awalan http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com tajuk pautan',
+ 'wikieditor-toolbar-tool-link' => 'Pautan',
+ 'wikieditor-toolbar-tool-link-title' => 'Sisip pautan',
+ 'wikieditor-toolbar-tool-link-int' => 'Ke laman wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Tajuk laman:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Tajuk laman dan URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Teks pautan:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Teks untuk dipaparkan',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ke pautan luar',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Pautan URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Teks pautan:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Sisip pautan',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Batalkan',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Laman wujud',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Laman tidak wujud',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Tajuk tidak sah',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Pautan luar',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Memeriksa kewujudan laman...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Tajuk yang anda nyatakan tidak sah.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL yang diselitkan merupakan halaman wiki? Adakah anda ingin menyelitkan pautan dalaman?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Pautan dalaman',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Pautan luar',
+ 'wikieditor-toolbar-tool-link-empty' => 'Anda tidak memasukkan apa-apa untuk dipautkan.',
+ 'wikieditor-toolbar-tool-file' => 'Fail terbenam',
+ 'wikieditor-toolbar-tool-file-example' => 'Contoh.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Rujukan',
+ 'wikieditor-toolbar-tool-reference-example' => 'Sisip nota kaki di sini',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Batalkan',
+ 'wikieditor-toolbar-tool-reference-title' => 'Sisip rujukan',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Sisip',
+ 'wikieditor-toolbar-tool-reference-text' => 'Teks rujukan',
+ 'wikieditor-toolbar-tool-signature' => 'Tandatangan dan cap waktu',
+ 'wikieditor-toolbar-section-advanced' => 'Maju',
+ 'wikieditor-toolbar-tool-heading' => 'Judul',
+ 'wikieditor-toolbar-tool-heading-1' => 'Aras 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Aras 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Aras 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Aras 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Aras 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Teks judul',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Senarai berbutir',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Perkara senarai berbutir',
+ 'wikieditor-toolbar-tool-olist' => 'Senarai bernombor',
+ 'wikieditor-toolbar-tool-olist-example' => 'Perkara senarai bernombor',
+ 'wikieditor-toolbar-tool-indent' => 'Inden',
+ 'wikieditor-toolbar-tool-indent-example' => 'Baris terinden',
+ 'wikieditor-toolbar-tool-nowiki' => 'Tiada pemformatan wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Sisip teks tak berformat di sini',
+ 'wikieditor-toolbar-tool-redirect' => 'Pindah',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Tajuk laman',
+ 'wikieditor-toolbar-tool-big' => 'Besar',
+ 'wikieditor-toolbar-tool-big-example' => 'Teks besar',
+ 'wikieditor-toolbar-tool-small' => 'Kecil',
+ 'wikieditor-toolbar-tool-small-example' => 'Teks kecil',
+ 'wikieditor-toolbar-tool-superscript' => 'Superskrip',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Teks superskrip',
+ 'wikieditor-toolbar-tool-subscript' => 'Subskrip',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Teks subskrip',
+ 'wikieditor-toolbar-group-insert' => 'Sisip',
+ 'wikieditor-toolbar-tool-gallery' => 'Galeri gambar',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Contoh.jpg|Sari kata 1
+$1:Contoh.jpg|Sari kata 2',
+ 'wikieditor-toolbar-tool-newline' => 'Baris baru',
+ 'wikieditor-toolbar-tool-table' => 'Jadual',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! pengepala 1
+! pengepala 2
+! pengepala 3
+|-
+| baris 1, sel 1
+| baris 1, sel 2
+| baris 1, sel 3
+|-
+| baris 2, sel 1
+| baris 2, sel 2
+| baris 2, sel 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Teks sel',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Teks pengepala',
+ 'wikieditor-toolbar-tool-table-title' => 'Sisipkan jadual',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Baris',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Lajur',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Sertakan baris pengepala',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Gaya dengan bingkai',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Jadikan jadual boleh disusun',
+ 'wikieditor-toolbar-tool-table-example' => 'Teks sel',
+ 'wikieditor-toolbar-tool-table-preview' => 'Pralihat',
+ 'wikieditor-toolbar-tool-table-insert' => 'Sisip',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Batalkan',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Memasukkan jadual dengan lebih $1 sel tidak dibenarkan dengan dialog ini.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Anda tidak menyertakan nombor yang sah untuk bilangan baris dan lajur.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Anda tidak boleh menyisipkan jadual dengan baris atau lajur sifar.',
+ 'wikieditor-toolbar-tool-replace' => 'Ganti',
+ 'wikieditor-toolbar-tool-replace-title' => 'Cari dan ganti',
+ 'wikieditor-toolbar-tool-replace-search' => 'Carikan:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Ganti dengan:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Padankan atur huruf',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Anggap rentetan carian sebagai ungkapan nalar',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Carian berikutnya',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Ganti berikutnya',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Tukar semua',
+ 'wikieditor-toolbar-tool-replace-close' => 'Tutup',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Tiada padanan ditemui untuk carian anda.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 gantian dilakukan.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Anda tidak memasukkan apa-apa untuk dicari.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Ungkapan yang anda masukkan tidak sah: $1',
+ 'wikieditor-toolbar-section-characters' => 'Aksara khas',
+ 'wikieditor-toolbar-characters-page-latin' => 'Rumi',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Rumi lanjut',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simbol',
+ 'wikieditor-toolbar-characters-page-greek' => 'Yunani',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cyril',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arab',
+ 'wikieditor-toolbar-characters-page-persian' => 'Parsi',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ibrani',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Bantuan',
+ 'wikieditor-toolbar-help-heading-description' => 'Keterangan',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Yang ditaip',
+ 'wikieditor-toolbar-help-heading-result' => 'Yang anda dapat',
+ 'wikieditor-toolbar-help-page-format' => 'Memformat',
+ 'wikieditor-toolbar-help-page-link' => 'Pautan',
+ 'wikieditor-toolbar-help-page-heading' => 'Penjudulan',
+ 'wikieditor-toolbar-help-page-list' => 'Senarai',
+ 'wikieditor-toolbar-help-page-file' => 'Fail',
+ 'wikieditor-toolbar-help-page-reference' => 'Rujukan',
+ 'wikieditor-toolbar-help-page-discussion' => 'Perbincangan',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Teks condong',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Teks condong''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Teks condong</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Teks tebal',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Teks tebal'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Teks tebal </strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Tebal &amp; condong',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Teks tebal &amp; condong'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Teks tebal &amp; condong</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Pautan dalaman',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Tajuk laman|Label pautan]]<br />[[Tajuk laman]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Label pautan</a><br /><a href='#'>Tajuk laman</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Pautan luar',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.contoh.org Label pautan]<br />[http://www.contoh.org]<br />http://www.contoh.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Label pautan</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.contoh.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Penjudulan tingkat 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Teks judul ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Teks judul</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Penjudulan tingkat 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Teks judul ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Teks judul</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Penjudulan tingkat 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Teks judul ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Teks judul</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Penjudulan tingkat 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Teks judul =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Teks judul</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Senarai berbutir',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Perkara senarai<br />
+* Perkara senarai',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Perkara senarai</li><li>Perkara senarai</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Senarai bernombor',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Perkara senarai<br />
+# Perkara senarai',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Perkara senarai</li><li>Perkara senarai</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Fail terbenam',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Contoh.png|thumb|Teks kapsyen]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Teks kapsyen' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Besarkan' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Teks kapsyen</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Rujukan',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Teks laman.&lt;ref nama="cubaan"&gt;[http://www.contoh.org Teks pautan], teks tambahan.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Teks laman.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Penggunaan rujukan sama',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Teks laman.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Paparkan senarai rujukan',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.contoh.org' class='external text' href='#'>Teks pautan</a>, teks tambahan.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Tandatangan dengan waktu',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nama pengguna</a> (<a href='#' title='{{#special:mytalk}}'>bual</a>) 15:54, 10 Jun 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Tandatangan',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nama pengguna</a> (<a href='#' title='{{#special:mytalk}}'>bual</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Inden',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Teks normal<br />:Teks terinden<br />::Teks terinden',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Teks normal<dl><dd>Teks terinden<dl><dd>Teks terinden</dd></dl></dd></dl>',
+);
+
+/** Maltese (Malti)
+ * @author Chrisportelli
+ */
+$messages['mt'] = array(
+ 'wikieditor' => "Interfaċċa avvanzata ta' modifika tat-test tal-wiki",
+ 'wikieditor-desc' => "Tipprovdi interfaċċa ta' modifika tat-test tal-wiki estendibbli u ħafna moduli li jipprovdu aktar funzjonalitajiet",
+ 'wikieditor-wikitext-tab' => 'Test tal-wiki',
+ 'wikieditor-loading' => "Tiela'",
+ 'wikieditor-preview-preference' => 'Ippermetti dehra proviżorja fil-ġenb',
+ 'wikieditor-preview-tab' => 'Dehra proviżorja',
+ 'wikieditor-preview-changes-tab' => 'Tibdil',
+ 'wikieditor-preview-loading' => "Tiela'...",
+ 'wikieditor-previewDialog-tab' => 'Dehra proviżorja',
+ 'wikieditor-previewDialog-loading' => "Tiela'...",
+ 'wikieditor-publish-preference' => 'Ippermetti pubblikazzjoni pass pass',
+ 'wikieditor-publish-button-publish' => 'Ippubblika',
+ 'wikieditor-publish-button-cancel' => 'Annulla',
+ 'wikieditor-publish-dialog-title' => 'Ippubblika fuq {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Taqsira (iddeskrivi fil-qasir it-tibdil li għamilt):',
+ 'wikieditor-publish-dialog-minor' => 'Modifika minuri',
+ 'wikieditor-publish-dialog-watch' => 'Segwi din il-paġna',
+ 'wikieditor-publish-dialog-publish' => 'Ippubblika',
+ 'wikieditor-publish-dialog-goback' => 'Mur lura',
+ 'wikieditor-template-editor-preference' => "Ippermetti l-modifika tal-mudelli permezz ta' moduli",
+ 'wikieditor-template-editor-dialog-title' => 'Immodifika l-mudell',
+ 'wikieditor-template-editor-dialog-submit' => 'AÄ¡Ä¡orna',
+ 'wikieditor-template-editor-dialog-cancel' => 'Annulla',
+ 'wikieditor-templates-preference' => 'Ippermetti l-funzjoni li taħbi l-mudelli',
+ 'wikieditor-toc-preference' => 'Ippermetti werrej navigabbli',
+ 'wikieditor-toc-show' => 'Uri l-kontenut',
+ 'wikieditor-toc-hide' => 'Aħbi l-kontenut',
+ 'wikieditor-toolbar' => 'Kaxxa tal-għodda għall-immodifikar',
+ 'wikieditor-toolbar-desc' => "Immodifika l-kaxxa tal-għodda b'akbar użabilità",
+ 'wikieditor-toolbar-preference' => 'Awtorizza l-użu tal-kaxxa tal-għodda estiża',
+ 'wikieditor-toolbar-dialogs-preference' => "Awtorizza l-għajnuna għaż-żieda ta' test wiki avvanzat",
+ 'wikieditor-toolbar-loading' => "Tiela'...",
+ 'wikieditor-toolbar-tool-bold' => 'Tipa ħoxna',
+ 'wikieditor-toolbar-tool-bold-example' => 'Tipa ħoxna',
+ 'wikieditor-toolbar-tool-italic' => 'Tipa korsiva',
+ 'wikieditor-toolbar-tool-italic-example' => 'Tipa korsiva',
+ 'wikieditor-toolbar-tool-ilink' => 'Ħolqa interna',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titlu tal-ħolqa',
+ 'wikieditor-toolbar-tool-xlink' => 'Ħolqa esterna (ftakar il-prefiss http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com titlu tal-ħolqa',
+ 'wikieditor-toolbar-tool-link' => 'Ħolqa',
+ 'wikieditor-toolbar-tool-link-title' => 'Daħħal ħolqa',
+ 'wikieditor-toolbar-tool-link-int' => 'Lejn paġna wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Titlu tal-paġna:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titlu tal-paġna jew URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Test tal-ħolqa:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Daħħal it-test li jrid jidher',
+ 'wikieditor-toolbar-tool-link-ext' => "Lejn paġna ta' sit elettroniku estern",
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL tal-ħolqa:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Test tal-ħolqa:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Daħħal ħolqa',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Annulla',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Il-paġna teżisti',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Il-paġna ma teżistix',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Titlu invalidu',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ħolqa esterna',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Qiegħdha tiġi ċċekkjata l-eżistenza tal-paġna...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'It-titlu li speċifikjat huwa invalidu.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Il-URL li indikajt jidher li ħolqa lejn paġna wiki oħra. Trid li tagħmilha ħolqa interna?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Ħolqa interna',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ħolqa esterna',
+ 'wikieditor-toolbar-tool-link-empty' => 'Ma daħħalt xejn lejn fejn se torbot.',
+ 'wikieditor-toolbar-tool-file' => 'Fajl inkorporat',
+ 'wikieditor-toolbar-tool-file-example' => 'Eżempju.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Nota',
+ 'wikieditor-toolbar-tool-reference-example' => 'Daħħal hawnhekk it-test tan-nota',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Annulla',
+ 'wikieditor-toolbar-tool-reference-title' => 'Daħħal nota',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Daħħal',
+ 'wikieditor-toolbar-tool-reference-text' => 'Test tan-nota',
+ 'wikieditor-toolbar-tool-signature' => 'Firma u data',
+ 'wikieditor-toolbar-section-advanced' => 'Avvanzati',
+ 'wikieditor-toolbar-tool-heading' => 'Isem tas-sezzjoni',
+ 'wikieditor-toolbar-tool-heading-1' => 'Livell 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Livell 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Livell 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Livell 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Livell 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Titlu tas-sezzjoni',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista puntata',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Element tal-lista puntata',
+ 'wikieditor-toolbar-tool-olist' => 'Lista numerata',
+ 'wikieditor-toolbar-tool-olist-example' => 'Element tal-lista numerata',
+ 'wikieditor-toolbar-tool-indent' => 'Indentazzjoni',
+ 'wikieditor-toolbar-tool-indent-example' => 'Linja indentata',
+ 'wikieditor-toolbar-tool-nowiki' => 'Injora l-ifformattjar wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Daħħal it-test li mhux se tifformattja hawnhekk',
+ 'wikieditor-toolbar-tool-redirect' => 'Rindirizz',
+ 'wikieditor-toolbar-tool-redirect-example' => "Isem tal-paġna ta' destinazzjoni",
+ 'wikieditor-toolbar-tool-big' => 'Kbir',
+ 'wikieditor-toolbar-tool-big-example' => 'Test kbir',
+ 'wikieditor-toolbar-tool-small' => 'Żgħir',
+ 'wikieditor-toolbar-tool-small-example' => 'Test żgħir',
+ 'wikieditor-toolbar-tool-superscript' => "Indiċi ta' fuq",
+ 'wikieditor-toolbar-tool-superscript-example' => "Test ta' indiċi ta' fuq",
+ 'wikieditor-toolbar-tool-subscript' => "Indiċi ta' taħt",
+ 'wikieditor-toolbar-tool-subscript-example' => "Test ta' indiċi ta' taħt",
+ 'wikieditor-toolbar-group-insert' => 'Daħħal',
+ 'wikieditor-toolbar-tool-gallery' => 'Gallerija tal-istampi',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Eżempju.jpg|Deskrizzjoni1
+$1:Eżempju.jpg|Deskrizzjoni2',
+ 'wikieditor-toolbar-tool-newline' => 'Linja Ä¡dida',
+ 'wikieditor-toolbar-tool-table' => 'Tabella',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! ras 1
+! ras 2
+! ras 3
+|-
+| filliera 1, Ä‹ellola 1
+| filliera 1, Ä‹ellola 2
+| filliera 1, Ä‹ellola 3
+|-
+| filliera 2, Ä‹ellola 1
+| filliera 2, Ä‹ellola 2
+| filliera 2, Ä‹ellola 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Test taċ-ċellola',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Test tar-ras',
+ 'wikieditor-toolbar-tool-table-title' => 'Daħħal tabella',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Fillieri',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolonni',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => "Inkludi l-filliera ta' fuq",
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stil bil-burduri',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Agħmel it-tabella bl-ordni',
+ 'wikieditor-toolbar-tool-table-example' => 'Test taċ-ċellola',
+ 'wikieditor-toolbar-tool-table-preview' => 'Dehra proviżorja',
+ 'wikieditor-toolbar-tool-table-insert' => 'Daħħal',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Annulla',
+ 'wikieditor-toolbar-tool-table-toomany' => "B'dan l-istrument mhuwiex possibbli li ddaħħal tabella li għandha aktar minn $1 ċellola",
+ 'wikieditor-toolbar-tool-table-invalidnumber' => "Ma daħħaltx numru validu ta' fillieri jew kolonni.",
+ 'wikieditor-toolbar-tool-table-zero' => "Ma tistax iddaħħal tabella b'ebda filliera jew kolonna.",
+ 'wikieditor-toolbar-tool-replace' => 'Fittex u biddel',
+ 'wikieditor-toolbar-tool-replace-title' => 'Fittex u biddel',
+ 'wikieditor-toolbar-tool-replace-search' => 'Fittex għal:',
+ 'wikieditor-toolbar-tool-replace-replace' => "Biddel ma':",
+ 'wikieditor-toolbar-tool-replace-case' => 'Ittra kapitali/żgħira',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Tratta t-test tat-tfittxija bħala espressjoni regolari',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Sib li jmiss',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Biddel li jmiss',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Biddel kollox',
+ 'wikieditor-toolbar-tool-replace-close' => 'Agħlaq',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'It-tfittxija ma tat l-ebda riżultat.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Saret/u $1 tibdila/iet.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ma indikajt xejn xi trid tfittex.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'L-espressjonali regolari li daħħalt hi invalida: $1',
+ 'wikieditor-toolbar-section-characters' => 'Karattri speċjali',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin estiż',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simboli',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grieg',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'ÄŠirilliku',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Għarbi',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persjan',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ebrajk',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengali',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinħaliż',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-section-help' => 'Għajnuna',
+ 'wikieditor-toolbar-help-heading-description' => 'Deskrizzjoni',
+ 'wikieditor-toolbar-help-heading-syntax' => "X'tikteb",
+ 'wikieditor-toolbar-help-heading-result' => "X'tikseb",
+ 'wikieditor-toolbar-help-page-format' => 'Ifformattjar',
+ 'wikieditor-toolbar-help-page-link' => 'Ħoloq',
+ 'wikieditor-toolbar-help-page-heading' => 'Sezzjonijiet',
+ 'wikieditor-toolbar-help-page-list' => 'Elenki',
+ 'wikieditor-toolbar-help-page-file' => 'Fajls',
+ 'wikieditor-toolbar-help-page-reference' => 'Referenzi',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskussjoni',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Tipa korsiva',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Tipa korsiva''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Tipa korsiva</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Tipa ħoxna',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Tipa ħoxna'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Tipa ħoxna</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Tipa ħoxna u korsiva',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Tipa ħoxna u korsiva'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Tipa ħoxna u korsiva</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Ħolqa interna',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Titlu tal-paġna|Tikketta tal-ħolqa]]<br />[[Titlu tal-paġna]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Tikketta tal-ħolqa</a><br /><a href='#'>Titlu tal-paġna</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ħolqa esterna',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Tikketta tal-ħolqa]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Tikketta tal-ħolqa</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Sezzjoni tat-2 livell',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Titlu tas-sezzjoni ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Titlu tas-sezzjoni</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Sezzjoni tat-3 livell',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Titlu tas-sezzjoni ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Titlu tas-sezzjoni</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Sezzjoni tar-4 livell',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Titlu tas-sezzjoni ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Titlu tas-sezzjoni</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Sezzjoni tal-5 livell',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Titlu tas-sezzjoni =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Titlu tas-sezzjoni</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista puntata',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Element tal-lista<br />* Element tal-lista',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Element tal-lista</li><li>Element tal-lista</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista numerata',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Element tal-lista<br /># Element tal-lista',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Element tal-lista</li><li>Element tal-lista</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Fajl inkorporat',
+ 'wikieditor-toolbar-help-content-file-syntax' => "[[$1:Eżempju.png|thumb|Test ta' deskrizzjoni]]",
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Test tad-deskrizzjoni' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Kabbar' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Test tad-deskrizzjoni</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referenza',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Test tal-paġna.&lt;ref name="test"&gt;[http://www.example.org Test tal-ħolqa], test addizzjonali.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Test tal-paġna.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Użu addizzjonali tal-istess referenza',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Test tal-paġna.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Viżwal tar-referenzi',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Test tal-ħolqa</a>, test addizzjonali.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Firma bid-data u l-ħin',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Isem tal-utent</a> (<a href='#' title='{{#special:mytalk}}'>diskussjoni</a>) 15:54, 10 Ä unju 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Firma',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Isem tal-utent</a> (<a href='#' title='{{#special:mytalk}}'>diskussjoni</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indentazzjoni',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Test normali<br />:Test indentat<br />::Test indentat',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Test normali<dl><dd>Test indentat<dl><dd>Test indentat</dd></dl></dd></dl>',
+);
+
+/** Erzya (ЭрзÑнь)
+ * @author Botuzhaleny-sodamo
+ */
+$messages['myv'] = array(
+ 'wikieditor-toolbar-tool-bold' => 'ЭчкÑÑ‚Ñ',
+ 'wikieditor-toolbar-tool-bold-example' => 'ЭчкÑÑ‚Ñ Ñ‚ÐµÐºÑÑ‚',
+ 'wikieditor-toolbar-tool-italic' => 'Комавтонь текÑÑ‚',
+ 'wikieditor-toolbar-tool-italic-example' => 'Комавтонь текÑÑ‚',
+ 'wikieditor-toolbar-tool-link' => 'Сюлмавома пене',
+ 'wikieditor-toolbar-tool-heading' => 'КонÑкÑозо',
+ 'wikieditor-toolbar-tool-superscript' => 'Кепедень текÑÑ‚',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Кепедень текÑÑ‚',
+ 'wikieditor-toolbar-tool-subscript' => 'ВалгÑтонь текÑÑ‚',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ВалгÑтонь текÑÑ‚',
+ 'wikieditor-toolbar-characters-page-latin' => 'Латиница',
+ 'wikieditor-toolbar-characters-page-symbols' => 'ТешкÑÑ‚Ñ‚',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Кириллица',
+ 'wikieditor-toolbar-help-page-link' => 'Сюлмавома пенеть',
+ 'wikieditor-toolbar-help-page-heading' => 'КонÑкÑÑ‚',
+ 'wikieditor-toolbar-help-page-file' => 'Файлат',
+ 'wikieditor-toolbar-help-content-signature-description' => 'Кедень путома',
+);
+
+/** Nahuatl (NÄhuatl)
+ * @author Ricardo gs
+ * @author Teòtlalili
+ */
+$messages['nah'] = array(
+ 'wikieditor' => 'Wel senka yankuik netzòwilìxtlâtli in tlenìk moyêyèktlàlia in wikitlâkuilòlmantli',
+ 'wikieditor-desc' => 'Tèwàlmàktia sè mìxmankànetzòwilìxtlâtli kàmpa wìtz in wikitlâkuilòlmantli tlèn moyêyèktlàlis ìwàn kèski ìyànalòwan kàmpa mowàlnèxtia in ìntlâtlamảtilis',
+ 'wikieditor-wikitext-tab' => 'Wikitlâkuilòlmantli',
+ 'wikieditor-loading' => 'Motlamàmaltîtỉka',
+ 'wikieditor-preview-preference' => 'Motekitìltìs in tlanênektikàyö achtá»paỉtalistli',
+ 'wikieditor-preview-tab' => 'Achtá»paỉtalistli',
+ 'wikieditor-preview-changes-tab' => 'Tlapảtlalistli',
+ 'wikieditor-preview-loading' => 'Motlamàmaltîtỉka....',
+ 'wikieditor-previewDialog-preference' => 'Motekitìltìs ìyachtá»paỉtalis in nenônòtzalistli',
+ 'wikieditor-previewDialog-tab' => 'Tlachtá»paỉtalòs',
+ 'wikieditor-previewDialog-loading' => 'Tlamàmâtỉka...',
+ 'wikieditor-publish-preference' => 'Motekitìltìs tlasêsêsèntèìxmảchìltìstli',
+ 'wikieditor-publish-button-publish' => 'Motèìxmảchìltìs',
+ 'wikieditor-publish-button-cancel' => 'Moxỉtìnìs',
+ 'wikieditor-publish-dialog-title' => 'Motèìxmảchìltìs ìpan {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Ìpòpòwilis tlayèktlàlilòtl (xikỉto ìka kèski tlatòlli in tlapảtlalistli tlèn òtikchìuh):',
+ 'wikieditor-publish-dialog-minor' => 'Tepỉtzìn tlayèktlàlilòtl',
+ 'wikieditor-publish-dialog-watch' => 'Mopanỉtas inìn tlaìxtlapalli',
+ 'wikieditor-publish-dialog-publish' => 'Motèìxmảchìltìs',
+ 'wikieditor-publish-dialog-goback' => 'Ximokuẻpa',
+ 'wikieditor-template-editor-preference' => 'Motekitìltìs in ìntlayêyèktlàlilis wikinemachiòmë ìka tlaìyá»kàyêkàyẻyàntli',
+ 'wikieditor-template-editor-dialog-title' => 'Xitlanemachiòyèktlàli',
+ 'wikieditor-template-editor-dialog-submit' => 'Tlayankuilỉlòs',
+ 'wikieditor-template-editor-dialog-cancel' => 'Moxỉtìnìs',
+ 'wikieditor-templates-preference' => 'Motekitìltìs nemachiòxitìnalli',
+ 'wikieditor-toc-preference' => 'Motekitìltìs nènemòni tlapialpalli',
+ 'wikieditor-toc-show' => 'Monèxtìs in tlapialli',
+ 'wikieditor-toc-hide' => 'Motlàtìs in tlapialli',
+ 'wikieditor-toolbar' => 'Tlayêyèktlàlilòkàtekitiâpalli',
+ 'wikieditor-toolbar-desc' => 'Ìtekitiâpal in tlayêyèktlàlilòkàtlaìxtlapalli ìwàn okảchi kuâkualli tlamantli tlatekitiliskàyòtl',
+ 'wikieditor-toolbar-preference' => 'Motekitìltìs in okảchi kualli tekitiâpalli tlèn ìka tlayêyèktlàlilo',
+ 'wikieditor-toolbar-dialogs-preference' => 'Motekitìltìs tlanônòtzaliskàyòtl tlèn ìnka tlatzòtzòwìltlàlilòs, tlatlapaltlàlilòs wàn oksẻki îtlàtlèn monẻkis motlàlìs',
+ 'wikieditor-toolbar-hidesig' => 'Motlàtìs in machiòpàchitl ìwikpa ìtlaìxtlapalwàn in achkàuhtòkâyẻyàntli',
+ 'wikieditor-toolbar-loading' => 'Motlamàmaltîtỉka....',
+ 'wikieditor-toolbar-tool-bold' => 'Tlìltik',
+ 'wikieditor-toolbar-tool-bold-example' => 'Tlìltik tlâkuilòlmantli',
+ 'wikieditor-toolbar-tool-italic' => 'Ìxtèktli',
+ 'wikieditor-toolbar-tool-italic-example' => 'Ìxtèktli tlâkuilòlmantli',
+ 'wikieditor-toolbar-tool-ilink' => 'Tlâtektzòwistli',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Tzòwistòkâtli',
+ 'wikieditor-toolbar-tool-xlink' => 'Panitzòwistli (mà molnàmiki in tlaìxpantlâkuilòlli http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com tzòwistòkâtli',
+ 'wikieditor-toolbar-tool-link' => 'Tzòwistli',
+ 'wikieditor-toolbar-tool-link-title' => 'Motzòwilyòtìs',
+ 'wikieditor-toolbar-tool-link-int' => 'Ìpan sè wikitlaìxtlapalli',
+ 'wikieditor-toolbar-tool-link-int-target' => 'In tlaìxtlapalli tlèn motèmowa noso in URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Tlaìxtlapaltòkâtli noso URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Ìtòka in tzòwistli',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'In tlâkuilòlmantli tlèn monèxtìs',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ìpan sè panika tlàltikpaktzànìllaìxtlapalli',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'ÌyURL in tzòwistli:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Tzòwistòkâtli',
+ 'wikieditor-toolbar-tool-link-insert' => 'Motzòwilyòtìs',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Moxỉtìnìs',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Ka in tlaìxtlapalli',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Ayàk in tlaìxtlapalli',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Âmò kualli tòkâtli',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Panikàtzòwistli',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Motztỉka intlà kox kä in tlaìxtlapalli',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Âmò kualli in tòkâtli tlèn òtimîkuilwili.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'In URL tlèn timonekiltia mîtòs kineki mochìwas ìtzòwilòka oksè wikitlaìxtlapalli.
+¿Timonekiltia mà mokuẻpa sè tlatlâtek tzòwìlli?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Tlâtektzòwistli',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Panikàtzòwistli',
+ 'wikieditor-toolbar-tool-link-empty' => 'Âmò tikîkuilôtika in tlèn kàmpa tlatzòwilòs.',
+ 'wikieditor-toolbar-tool-file' => 'Tlatlatzèkòltìlèwálli',
+ 'wikieditor-toolbar-tool-file-example' => 'Neìxkuitìlli.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Ànálòtl',
+ 'wikieditor-toolbar-tool-reference-example' => 'Mà motlàli nikàn in tlakxỉpanáwatilòtl',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Moxỉtìnìs',
+ 'wikieditor-toolbar-tool-reference-title' => 'Motlalìs sè ànálòtl',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Motlàlìs',
+ 'wikieditor-toolbar-tool-reference-text' => 'Tlâkuilòlmanànálòtl',
+ 'wikieditor-toolbar-tool-signature' => 'Netèìxmachìtìlmachiòtl wàn tlapảnolpòwálli',
+ 'wikieditor-toolbar-section-advanced' => 'Tlèkànki',
+ 'wikieditor-toolbar-tool-heading' => 'Tòkâtlàlistli',
+ 'wikieditor-toolbar-tool-heading-1' => 'Tlàlilòkâtli 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Tlàlilòkâtli 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Tlàlilòkâtli 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Tlàlilòkâtli 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Tlàlilòkâtli 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Tòkâtlàlistlâkuilòlmantli',
+ 'wikieditor-toolbar-group-format' => 'Chîchìwilòkâtli',
+ 'wikieditor-toolbar-tool-nowiki' => 'Âmò tlawikichîchìwilòkàyö',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Xikmotlàlili nikàn in âmò tlachîchìuhtli tlâkuilòlmantli',
+ 'wikieditor-toolbar-tool-redirect' => 'Tlaôwitilistli',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ìtòka in tlâsiànkôyàntlaìxpalli',
+ 'wikieditor-toolbar-tool-big' => 'Wèyi',
+ 'wikieditor-toolbar-tool-big-example' => 'Wèyi tlâkuilòlmantli',
+ 'wikieditor-toolbar-tool-small' => 'Tepỉtòn',
+ 'wikieditor-toolbar-tool-small-example' => 'Tepỉtòn tlâkuilòlmantli',
+ 'wikieditor-toolbar-tool-superscript' => 'Tlapanîkuilòlli',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Tlapanîkuilòlyo tlâkuilòlmantli',
+ 'wikieditor-toolbar-tool-subscript' => 'TlanitlahcuilÅlli',
+ 'wikieditor-toolbar-tool-subscript-example' => 'TlanitlahcuilÅliztli',
+ 'wikieditor-toolbar-tool-gallery' => 'ĪxiptlahtÄ“cpÄntiliztli',
+ 'wikieditor-toolbar-tool-newline' => 'YancuÄ«c pÄntli',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! cuÄitl 1
+! cuÄitl 2
+! cuÄitl 3
+|-
+| pÄntli 1, cochiyÄntli 1
+| pÄntli 1, cochiyÄntli 2
+| pÄntli 1, cochiyÄntli 3
+|-
+| pÄntli 2, cochiyÄntli 1
+| pÄntli 2, cochiyÄntli 2
+| pÄntli 2, cochiyÄntli 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'CochiyÄntlahcuilÅliztli',
+ 'wikieditor-toolbar-tool-table-example-header' => 'CÄitl tlahcuilÅliztli',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'PÄntli',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Tlaquetzalli',
+ 'wikieditor-toolbar-tool-table-example' => 'MachiyÅtl',
+ 'wikieditor-toolbar-tool-table-cancel' => 'TiccuepÄz',
+ 'wikieditor-toolbar-tool-replace' => 'TictÄ“mÅz Ä«huÄn ticpatlÄz',
+ 'wikieditor-toolbar-tool-replace-title' => 'TictÄ“mÅz Ä«huÄn ticpatlÄz',
+ 'wikieditor-toolbar-tool-replace-search' => 'TictÄ“mÅz:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'TicpatlÄz ic:',
+ 'wikieditor-toolbar-tool-replace-regex' => 'TicnÅtzÄz in tlatÄ“molizmecatl iuhquin nÄhuatÄ«lmatillahtÅliztli',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'TicpatlÄz mochi',
+ 'wikieditor-toolbar-tool-replace-close' => 'TiquitzacuÄz',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Âmò tlèn òkâsik in motlatemòlistzìn',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'In nÄhuatÄ«lmatillahtÅliztli tlein Åtitlahcuiloh ahtlaceliÄni ca: $1',
+ 'wikieditor-toolbar-characters-page-latin' => 'LatintlahcuilÅlli',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Mantoc latintlahcuilÅlli',
+ 'wikieditor-toolbar-characters-page-greek' => 'GreciatlahcuilÅlli',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'CirilotlahcuilÅlli',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ArabiatlahcuilÅlli',
+ 'wikieditor-toolbar-characters-page-persian' => 'PersiatlahcuilÅlli',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'HebreotlahcuilÅlli',
+ 'wikieditor-toolbar-characters-page-bangla' => 'BanglatlahcuilÅlli',
+ 'wikieditor-toolbar-characters-page-telugu' => 'TelugutlahcuilÅlli',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'CingalatlahcuilÅlli',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'GuyaratitlahcuilÅlli',
+ 'wikieditor-toolbar-characters-page-thai' => 'TaitlahcuilÅlli',
+ 'wikieditor-toolbar-characters-page-lao' => 'LaotlahcuilÅlli',
+ 'wikieditor-toolbar-characters-page-khmer' => 'JemertlahcuilÅlli',
+ 'wikieditor-toolbar-section-help' => 'Tēpalēhuiliztli',
+ 'wikieditor-toolbar-help-page-link' => 'Tzòtzòwistìn',
+ 'wikieditor-toolbar-help-page-heading' => 'Tòkâtlàlistìn',
+ 'wikieditor-toolbar-help-page-file' => 'Èwáltìn',
+ 'wikieditor-toolbar-help-page-reference' => 'Ànálòmë',
+ 'wikieditor-toolbar-help-page-discussion' => 'TÄ“ixnÄmiquiliztli',
+ 'wikieditor-toolbar-help-content-italic-description' => 'CÅliuhqui',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''CÅliuhqui tlahcuilÅliztli''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>CÅliuhqui tlahcuilÅliztli</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Tlīltic',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''TlÄ«ltic tlahcuilÅliztli'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>TlÄ«ltic tlahcuilÅliztli</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'TlÄ«ltic &amp; cÅliuhqui',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''TlÄ«ltic &amp; cÅliuhqui tlahcuilÅliztli'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>TlÄ«ltic &amp; cÅliuhqui tlahcuilÅliztli</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Tlâtek tzòwistli',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'CalÄn tzonhuiliztli',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Ejemplo.png|thumb|Tlatòkâyòtilisyòtl]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Tlatòkâyòtilisyòtl</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Tlànalòyàntli',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Tlaìxtlapallâkuilòlmantli.&lt;ref name="test"&gt;[http://www.example.org Tzòwistlâkuilòlmantli], tlâxitìllâkuilòlmantli.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Tlaìxtlapallâkuilòlmantli.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Ìtlâtlatekitìltilis in yi yë tlànalòyàntli',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Tlaìxtlapallâkuilòlmantli.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Monèxtis tlànalòyàntli',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Tzòwistlâkuilòlmantli</a>, tlâxitìllâkuilòlmantli.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Netèìxmachìtìlmachiòtl wàn tlapảnolpòwálli',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Tekitkàtòkâtli</a> (<a href='#' title='{{#special:mytalk}}'>nenônòtzalistli</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Netèìxmachìtìlmachiòtl',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Tekitkàtòkâtli</a> (<a href='#' title='{{#special:mytalk}}'>nenônòtzalistli</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Tlâtlapouhki',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Sâsanỉman tlâkuilòlmantli<br />:Tlâtlapouhki tlakuilòlmantli<br />::Tlâtlapouhki tlâkuilòlmantli',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Sâsanỉman tlâkuilòlmantli<dl><dd>Tlâtlapouhki tlakuilòlmantli<dl><dd>Tlâtlapouhki tlâkuilòlmantli</dd></dl></dd></dl>',
+);
+
+/** Nedersaksisch (Nedersaksisch)
+ * @author Servien
+ */
+$messages['nds-nl'] = array(
+ 'wikieditor' => 'Uut-ebreien teksverwarker veur wikitekse',
+ 'wikieditor-desc' => 'Hierdeur krie-j een teksverwarker veur wikitekse dee-j uut kunnen breien en modules mit extra functies',
+ 'wikieditor-wikitext-tab' => 'Wikitekse',
+ 'wikieditor-loading' => "An 't laojen",
+ 'wikieditor-preview-preference' => 'Bewarken en naokieken naos mekaar',
+ 'wikieditor-preview-tab' => 'Naokieken',
+ 'wikieditor-preview-changes-tab' => 'Wiezigingen',
+ 'wikieditor-preview-loading' => "An 't laojen...",
+ 'wikieditor-publish-preference' => 'Stap veur stap publiceren inschakelen',
+ 'wikieditor-publish-button-publish' => 'Publiceren',
+ 'wikieditor-publish-button-cancel' => 'Ofbreken',
+ 'wikieditor-publish-dialog-title' => 'Publiceren naor {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => "Bewarkingssamenvatting (beschrief de wijzingen in 't kort):",
+ 'wikieditor-publish-dialog-minor' => 'Kleine bewarking',
+ 'wikieditor-publish-dialog-watch' => 'Volg disse pagina',
+ 'wikieditor-publish-dialog-publish' => 'Publiceren',
+ 'wikieditor-publish-dialog-goback' => 'Weerumme',
+ 'wikieditor-template-editor-preference' => 'Formelier-ebaseerd bewarken van wikimallen inschakelen',
+ 'wikieditor-template-editor-dialog-title' => 'Mallen bewarken',
+ 'wikieditor-template-editor-dialog-submit' => 'Biewarken',
+ 'wikieditor-template-editor-dialog-cancel' => 'Ofbreken',
+ 'wikieditor-templates-preference' => 'Inklapbaore mallen',
+ 'wikieditor-toc-preference' => 'Navigeerbaore onderwarplieste inschakelen',
+ 'wikieditor-toc-show' => 'Onderwarpen laoten zien',
+ 'wikieditor-toc-hide' => 'Onderwarpen verbargen',
+ 'wikieditor-toolbar' => 'Bewarkingswarkbalke',
+ 'wikieditor-toolbar-desc' => 'Bewarkingsbalke dee gebruuksvriendelijker is',
+ 'wikieditor-toolbar-preference' => 'De uut-ebreien bewarkingsbalke anzetten',
+ 'wikieditor-toolbar-dialogs-preference' => "Dialogen veur 't toevoegen van verwiezingen, tebellen en meer inschakelen",
+ 'wikieditor-toolbar-loading' => 'Bezig mit laojen...',
+ 'wikieditor-toolbar-tool-bold' => 'Vet',
+ 'wikieditor-toolbar-tool-bold-example' => 'Vet-edrokken tekse',
+ 'wikieditor-toolbar-tool-italic' => 'Schunedrok',
+ 'wikieditor-toolbar-tool-italic-example' => 'Schunedrokken tekse',
+ 'wikieditor-toolbar-tool-ilink' => 'Interne verwiezing',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Verwiezingsbeschrieving',
+ 'wikieditor-toolbar-tool-xlink' => "Uutgaonde verwiezing (vergeet 't veurvoegsel http:// neet)",
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com beschrieving',
+ 'wikieditor-toolbar-tool-link' => 'Verwiezing',
+ 'wikieditor-toolbar-tool-link-title' => 'Verwiezing derbie doon',
+ 'wikieditor-toolbar-tool-link-int' => 'Naor een wikipagina',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Paginanaam:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Paginanaam of webadres',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Beschrieving:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Zet hier de tekse in dee te zien mut ween',
+ 'wikieditor-toolbar-tool-link-ext' => 'Naor een uutgaonde webpagina',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Webadres:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Beschrieving:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Verwiezing derbie doon',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Ofbreken',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'De pagina besteet al',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'De pagina besteet neet',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Ongeldige paginanaam',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Uutgaonde verwiezing',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "Is an 't kieken of disse pagina al besteet...",
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'De op-egeven pagina is ongeldig.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "'t Lik as of 't webadres da-j op-egeven hemmen een verwiezing naor een aandere wikipagina mut ween.
+Wi-j der een interne verwiezing van maken?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Interne verwiezing',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Uutgaonde verwiezing',
+ 'wikieditor-toolbar-tool-link-empty' => 'Je hemmen niks op-egeven um naor te verwiezen.',
+ 'wikieditor-toolbar-tool-file' => 'Bestaand derbie doon',
+ 'wikieditor-toolbar-tool-file-example' => 'Veurbeeld.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Rifferentie',
+ 'wikieditor-toolbar-tool-reference-example' => 'Plaos hier tekse veur de vootnote',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Ofbreken',
+ 'wikieditor-toolbar-tool-reference-title' => 'Rifferentie derbie doon',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Invoegen',
+ 'wikieditor-toolbar-tool-reference-text' => 'Rifferentietekse',
+ 'wikieditor-toolbar-tool-signature' => 'Ondertekening en tiedstempel',
+ 'wikieditor-toolbar-section-advanced' => 'Meer functies',
+ 'wikieditor-toolbar-tool-heading' => 'Kopjen',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivo 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivo 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivo 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivo 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivo 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Koptekse',
+ 'wikieditor-toolbar-group-format' => 'Opmaak',
+ 'wikieditor-toolbar-tool-ulist' => 'Lieste zonder nummers',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Regel in een lieste zonder nummers',
+ 'wikieditor-toolbar-tool-olist' => 'Lieste mit nummers',
+ 'wikieditor-toolbar-tool-olist-example' => 'Regel in een lieste mit nummers',
+ 'wikieditor-toolbar-tool-indent' => 'Inspringen',
+ 'wikieditor-toolbar-tool-indent-example' => 'In-esprungen regel',
+ 'wikieditor-toolbar-tool-nowiki' => 'Gien wiki-opmaak',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Tekse zonder opmaak hier invoegen',
+ 'wikieditor-toolbar-tool-redirect' => 'Deurverwiezing',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Doelpagina',
+ 'wikieditor-toolbar-tool-big' => 'Groot',
+ 'wikieditor-toolbar-tool-big-example' => 'Groot edrokken tekse',
+ 'wikieditor-toolbar-tool-small' => 'Klein',
+ 'wikieditor-toolbar-tool-small-example' => 'Klein edrokken tekse',
+ 'wikieditor-toolbar-tool-superscript' => 'Superscript',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Tekse in superscript',
+ 'wikieditor-toolbar-tool-subscript' => 'Subscript',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Subscript tekse',
+ 'wikieditor-toolbar-group-insert' => 'Derbie doon',
+ 'wikieditor-toolbar-tool-gallery' => 'Foto-uutstalling',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Veurbeeld1|Bieschrifte1
+$1:Veurbeeld2|Bieschrifte2',
+ 'wikieditor-toolbar-tool-newline' => 'Nieje regel',
+ 'wikieditor-toolbar-tool-table' => 'Tebel',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! kop 1
+! kop 2
+! kop 3
+|-
+| rie 1, cel 1
+| rie 1, cel 2
+| rie 1, cel 3
+|-
+| rie 2, cel 1
+| rie 2, cel 2
+| rie 2, cel 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Celtekse',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Koptekse',
+ 'wikieditor-toolbar-tool-table-title' => 'Tebel derbie doon',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Riejen',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kelommen',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Koptekse derbie doon',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Laot de celranen zien',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tebel sorteerbaor maken',
+ 'wikieditor-toolbar-tool-table-example' => 'Veurbeeld',
+ 'wikieditor-toolbar-tool-table-preview' => 'Naokieken',
+ 'wikieditor-toolbar-tool-table-insert' => 'Invoegen',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Ofbreken',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Je kunnen via dit dialoogvienster gien tebel derbie doon mit meer as $1 cellen.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Je hemmen nog gien geldig antal regels of kelommen op-egeven.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Je kunnen gien tebel derbie doon zonder regels of kelommen.',
+ 'wikieditor-toolbar-tool-replace' => 'Zeuken en vervangen',
+ 'wikieditor-toolbar-tool-replace-title' => 'Zeuken en vervangen',
+ 'wikieditor-toolbar-tool-replace-search' => 'Zeuken naor:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Vervangen deur:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Heuflettergeveulig',
+ 'wikieditor-toolbar-tool-replace-regex' => 'De zeukreeks as regeliere expressie behaandelen',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Volgende zeuken',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Volgende vervangen',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Alles vervangen',
+ 'wikieditor-toolbar-tool-replace-close' => 'Sluten',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Joew zeukopdrach hef niks op-eleverd.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Der bin $1 vervangingen edaon.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Je hemmen gien zeukterm op-egeven.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'De regeliere dee-j op-egeven hemmen is ongeldig: $1',
+ 'wikieditor-toolbar-section-characters' => 'Speciale tekens',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latien',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latien uut-ebreid',
+ 'wikieditor-toolbar-characters-page-ipa' => 'Internasionaal Klankeschrif',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbolen',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grieks',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cyrillisch',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabisch',
+ 'wikieditor-toolbar-characters-page-persian' => 'Perzisch',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebreeuws',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengaals',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singalees',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-section-help' => 'Hulpe',
+ 'wikieditor-toolbar-help-heading-description' => 'Beschrieving',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Wa-j tikken',
+ 'wikieditor-toolbar-help-heading-result' => 'Wa-j kriegen',
+ 'wikieditor-toolbar-help-page-format' => 'Opmaak',
+ 'wikieditor-toolbar-help-page-link' => 'Verwiezingen',
+ 'wikieditor-toolbar-help-page-heading' => 'Kopjes',
+ 'wikieditor-toolbar-help-page-list' => 'Liesten',
+ 'wikieditor-toolbar-help-page-file' => 'Bestanen',
+ 'wikieditor-toolbar-help-page-reference' => 'Rifferenties',
+ 'wikieditor-toolbar-help-page-discussion' => 'Overleg',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Schunedrok',
+ 'wikieditor-toolbar-help-content-italic-syntax' => 'Schunedrokken tekse',
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Schunedrokken tekse</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Vet-edrok',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Vet-edrokken tekse'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Vet-edrokken tekse</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Vet- en schunedrok',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Vet- en schunedrokken tekse'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<em><strong>Vet- en schunedrokken tekse</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Interne verwiezing',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Paginanaam|Beschrieving]]<br />[[Paginanaam]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Beschrieving</a><br /><a href='#'>Paginanaam</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Uutgaonde verwiezing',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Beschrieving]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Beschrieving</a><br /><a href='#' class='external autonummering'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Kopjen nivo 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Koptekse ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Koptekse</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Kopjen nivo 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Koptekse ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Koptekse</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Kopjen nivo 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Koptekse ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Koptekse</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Kopjen nivo 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Koptekse =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Koptekse</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lieste zonder nummers',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Regel in een lieste zonder nummers<br />* Regel in een lieste zonder nummers',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Regel in een lieste zonder nummers</li><li>Regel in een lieste zonder nummers</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lieste mit nummers',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Regel in een lieste mit nummers<br /># Regel in een lieste mit nummers',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Regel in een lieste mit nummers</li><li>Regel in een lieste mit nummers</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Bestaand derbie doon',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Veurbeeld.png|thumb|Beschrieving]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Bieschrifte' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Vergroten' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Bieschrifte</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Rifferentie',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Paginatekse.&lt;ref name="test"&gt;[http://www.example.org Beschrieving], eventuele tekse.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Paginatekse <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Hergebruuk van dezelfde rifferentie',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Paginatekse <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Rifferenties weergeven',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Beschrieving</a>, eventuele tekse.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Ondertekening mit tiedstempel',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Gebrukersnaam</a> (<a href='#' title='{{#special:mytalk}}'>overleg</a>) 15:54, 10 juni 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Ondertekening',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Gebrukersnaam</a> (<a href='#' title='{{#special:mytalk}}'>overleg</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Inspringen',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normale tekse<br />: In-esprungen tekse<br />::In-esprungen tekse',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normale tekse<dl><dd>In-esprungen tekse<dl><dd>In-esprungen tekse</dd></dl></dd></dl>',
+);
+
+/** Nepali (नेपाली)
+ * @author Bhawani Gautam
+ */
+$messages['ne'] = array(
+ 'wikieditor-toolbar-section-advanced' => 'उनà¥à¤¨à¤¤',
+ 'wikieditor-toolbar-tool-heading' => 'शीरà¥à¤·à¤•',
+ 'wikieditor-toolbar-tool-heading-2' => 'शीरà¥à¤·à¤• 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'शीरà¥à¤·à¤• 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'शीरà¥à¤·à¤• 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'शीरà¥à¤·à¤• 5',
+ 'wikieditor-toolbar-section-characters' => 'विशेष वरà¥à¤£à¤¹à¤°à¥',
+);
+
+/** Dutch (Nederlands)
+ * @author Hamaryns
+ * @author McDutchie
+ * @author Siebrand
+ * @author Tvdm
+ */
+$messages['nl'] = array(
+ 'wikieditor' => 'Uitgebreide tekstverwerker voor wikitekst',
+ 'wikieditor-desc' => 'Voegt een uitbreidbare tekstverwerker voor wikitekst toe en modules met extra mogelijkheden',
+ 'wikieditor-wikitext-tab' => 'Wikitekst',
+ 'wikieditor-loading' => 'Bezig met laden',
+ 'wikieditor-preview-preference' => 'Bewerken en voorvertoning naast elkaar',
+ 'wikieditor-preview-tab' => 'Voorvertoning',
+ 'wikieditor-preview-changes-tab' => 'Wijzigingen',
+ 'wikieditor-preview-loading' => 'Bezig met laden...',
+ 'wikieditor-previewDialog-preference' => 'Voorvertoningsdialoogvenster inschakelen',
+ 'wikieditor-previewDialog-tab' => 'Voorvertoning',
+ 'wikieditor-previewDialog-loading' => 'Bezig met laden...',
+ 'wikieditor-publish-preference' => 'Stap voor stap publiceren inschakelen',
+ 'wikieditor-publish-button-publish' => 'Publiceren',
+ 'wikieditor-publish-button-cancel' => 'Annuleren',
+ 'wikieditor-publish-dialog-title' => 'Publiceren naar {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Bewerkingssamenvatting (beschrijf kort de gemaakte wijzingen):',
+ 'wikieditor-publish-dialog-minor' => 'Kleine bewerking',
+ 'wikieditor-publish-dialog-watch' => 'Deze pagina volgen',
+ 'wikieditor-publish-dialog-publish' => 'Publiceren',
+ 'wikieditor-publish-dialog-goback' => 'Terug',
+ 'wikieditor-template-editor-preference' => 'Formuliergebaseerd bewerken van wikisjablonen inschakelen',
+ 'wikieditor-template-editor-dialog-title' => 'Sjabloon bewerken',
+ 'wikieditor-template-editor-dialog-submit' => 'Bijwerken',
+ 'wikieditor-template-editor-dialog-cancel' => 'Annuleren',
+ 'wikieditor-templates-preference' => 'Inklapbare sjablonen inschakelen',
+ 'wikieditor-toc-preference' => 'Navigeerbare inhoudsopgave inschakelen',
+ 'wikieditor-toc-show' => 'Inhoud weergeven',
+ 'wikieditor-toc-hide' => 'Inhoud verbergen',
+ 'wikieditor-toolbar' => 'Bewerkingswerkbalk',
+ 'wikieditor-toolbar-desc' => 'Bewerkingsbalk die eenvoudiger te gebruiken is',
+ 'wikieditor-toolbar-preference' => 'Uitgebreide bewerkingsbalk inschakelen',
+ 'wikieditor-toolbar-dialogs-preference' => 'Dialogen voor het toevoegen van verwijzingen, tabellen en meer inschakelen',
+ 'wikieditor-toolbar-hidesig' => 'De knop voor ondertekenen in deze naamruimte verbergen',
+ 'wikieditor-toolbar-loading' => 'Bezig met laden…',
+ 'wikieditor-toolbar-tool-bold' => 'Vet',
+ 'wikieditor-toolbar-tool-bold-example' => 'Vetgedrukte tekst',
+ 'wikieditor-toolbar-tool-italic' => 'Cursief',
+ 'wikieditor-toolbar-tool-italic-example' => 'Cursief gedrukte tekst',
+ 'wikieditor-toolbar-tool-ilink' => 'Interne verwijzing',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Verwijzingsbeschrijving',
+ 'wikieditor-toolbar-tool-xlink' => 'Externe verwijzing (vergeet het voorvoegsel http:// niet)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com verwijzingsbeschrijving',
+ 'wikieditor-toolbar-tool-link' => 'Verwijzing',
+ 'wikieditor-toolbar-tool-link-title' => 'Verwijzing invoegen',
+ 'wikieditor-toolbar-tool-link-int' => 'Naar een wikipagina',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Doelpagina of URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Paginanaam of URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Weer te geven tekst:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Weer te geven tekst',
+ 'wikieditor-toolbar-tool-link-ext' => 'Naar een externe webpagina',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Verwijzingstekst:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Verwijzing invoegen',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Annuleren',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'De pagina bestaat al',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'De pagina bestaat niet',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Ongeldige paginanaam',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Externe verwijzing',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Bezig met controleren of de pagina al bestaat...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'De opgegeven pagina is ongeldig.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'De URL die u hebt opgegeven lijkt bedoeld te zijn als verwijzing naar een andere wikipagina.
+Wilt u er een interne verwijzing van maken?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Interne verwijzing',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Externe verwijzing',
+ 'wikieditor-toolbar-tool-link-empty' => 'U hebt niets opgegeven om naar te verwijzen.',
+ 'wikieditor-toolbar-tool-file' => 'Ingebed bestand',
+ 'wikieditor-toolbar-tool-file-example' => 'Voorbeeld.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referentie',
+ 'wikieditor-toolbar-tool-reference-example' => 'Plaats hier tekst voor de voetnoot',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Annuleren',
+ 'wikieditor-toolbar-tool-reference-title' => 'Referentie invoegen',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Invoegen',
+ 'wikieditor-toolbar-tool-reference-text' => 'Referentietekst',
+ 'wikieditor-toolbar-tool-signature' => 'Ondertekening en tijdstempel',
+ 'wikieditor-toolbar-section-advanced' => 'Gevorderde functies',
+ 'wikieditor-toolbar-tool-heading' => 'Kopje',
+ 'wikieditor-toolbar-tool-heading-1' => 'Niveau 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Niveau 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Niveau 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Niveau 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Niveau 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Koptekst',
+ 'wikieditor-toolbar-group-format' => 'Opmaak',
+ 'wikieditor-toolbar-tool-ulist' => 'Ongenummerde lijst',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Regel in ongenummerde lijst',
+ 'wikieditor-toolbar-tool-olist' => 'Genummerde lijst',
+ 'wikieditor-toolbar-tool-olist-example' => 'Regel in genummerde lijst',
+ 'wikieditor-toolbar-tool-indent' => 'Inspringen',
+ 'wikieditor-toolbar-tool-indent-example' => 'Ingesprongen regel',
+ 'wikieditor-toolbar-tool-nowiki' => 'Geen wikiopmaak',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Hier tekst zonder opmaak invoegen',
+ 'wikieditor-toolbar-tool-redirect' => 'Doorverwijzing',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Doelpagina',
+ 'wikieditor-toolbar-tool-big' => 'Groot',
+ 'wikieditor-toolbar-tool-big-example' => 'Groot gedrukte tekst',
+ 'wikieditor-toolbar-tool-small' => 'Klein',
+ 'wikieditor-toolbar-tool-small-example' => 'Klein gedrukte tekst',
+ 'wikieditor-toolbar-tool-superscript' => 'Superscript',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Tekst in superscript',
+ 'wikieditor-toolbar-tool-subscript' => 'Subscript',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Tekst in subscript',
+ 'wikieditor-toolbar-group-insert' => 'Invoegen',
+ 'wikieditor-toolbar-tool-gallery' => 'Beeldengalerij',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Voorbeeld.jpg|Bijschrift1
+$1:Voorbeeld.jpg|Bijschrift2',
+ 'wikieditor-toolbar-tool-newline' => 'Nieuwe regel',
+ 'wikieditor-toolbar-tool-table' => 'Tabel',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! kop 1
+! kop 2
+! kop 3
+|-
+| rij 1, cel 1
+| rij 1, cel 2
+| rij 1, cel 3
+|-
+| rij 2, cel 1
+| rij 2, cel 2
+| rij 2, cel 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Celtekst',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Koptekst',
+ 'wikieditor-toolbar-tool-table-title' => 'Tabel invoegen',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rijen',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolommen',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Koprij toevoegen',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Celranden toevoegen',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tabel sorteerbaar maken',
+ 'wikieditor-toolbar-tool-table-example' => 'Voorbeeld',
+ 'wikieditor-toolbar-tool-table-preview' => 'Voorvertoning',
+ 'wikieditor-toolbar-tool-table-insert' => 'Invoegen',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Annuleren',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Het invoegen van een tabel met meer dan $1 cellen is niet mogelijk via dit dialoogvenster.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'U hebt een ongeldig aantal regels of kolommen opgegeven.',
+ 'wikieditor-toolbar-tool-table-zero' => 'U kunt geen tabel invoegen zonder regels of kolommen.',
+ 'wikieditor-toolbar-tool-replace' => 'Zoeken en vervangen',
+ 'wikieditor-toolbar-tool-replace-title' => 'Zoeken en vervangen',
+ 'wikieditor-toolbar-tool-replace-search' => 'Zoeken naar:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Vervangen door:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Hoofdlettergevoelig',
+ 'wikieditor-toolbar-tool-replace-regex' => 'De zoekreeks als reguliere expressie behandelen',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Volgende zoeken',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Volgende vervangen',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Alles vervangen',
+ 'wikieditor-toolbar-tool-replace-close' => 'Sluiten',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Uw zoekopdracht heeft geen resultaten opgeleverd.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Er zijn $1 items vervangen.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'U hebt geen zoekterm opgegeven.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'De door u ingegeven reguliere expressie is ongeldig: $1',
+ 'wikieditor-toolbar-section-characters' => 'Speciale tekens',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latijn',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latijn uitgebreid',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbolen',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grieks',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cyrillisch',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabisch',
+ 'wikieditor-toolbar-characters-page-persian' => 'Farsi',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebreeuws',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengaals',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singalees',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laotiaans',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Hulp',
+ 'wikieditor-toolbar-help-heading-description' => 'Beschrijving',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Wat u typt',
+ 'wikieditor-toolbar-help-heading-result' => 'Wat u te zien krijgt',
+ 'wikieditor-toolbar-help-page-format' => 'Opmaak',
+ 'wikieditor-toolbar-help-page-link' => 'Verwijzingen',
+ 'wikieditor-toolbar-help-page-heading' => 'Kopjes',
+ 'wikieditor-toolbar-help-page-list' => 'Lijsten',
+ 'wikieditor-toolbar-help-page-file' => 'Bestanden',
+ 'wikieditor-toolbar-help-page-reference' => 'Referenties',
+ 'wikieditor-toolbar-help-page-discussion' => 'Overleg',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Cursief',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Cursieve tekst''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Cursief gedrukte tekst</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Vet',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Vetgedrukte tekst'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Vetgedrukte tekst</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Vet en cursief',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Vet- en cursief gedrukte tekst'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<em><strong>Vet- en cursief gedrukte tekst</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Interne verwijzing',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Paginanaam|Verwijzingslabel]]<br />[[Paginanaam]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Verwijzingslabel</a><br /><a href='#'>Paginanaam</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Externe verwijzing',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Verwijzingslabel]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Verwijzingslabel</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Kopje tweede niveau',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '==Koptekst==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Koptekst</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Kopje derde niveau',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '===Koptekst===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Koptekst</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Kopje vierde niveau',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '====Koptekst====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Koptekst</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Kopje vijfde niveau',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '=====Koptekst=====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Koptekst</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Ongenummerde lijst',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Regel in ongenummerde lijst<br />* Regel in ongenummerde lijst',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Regel in ongenummerde lijst</li><li>Regel in ongenummerde lijst</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Genummerde lijst',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Regel in genummerde lijst<br /># Regel in genummerde lijst',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Regel in genummerde lijst</li><li>Regel in genummerde lijst</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Ingebed bestand',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Voorbeeld.png|thumb|Bijschrift]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Bijschrift' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Vergroten' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Bijschrift</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referentie',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Paginatekst.&lt;ref name="test"&gt;[http://www.example.org Verwijzingstekst], bijkomende tekst.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Paginatekst. <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Hergebruik van dezelfde referentie',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Paginatekst. <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Referenties weergeven',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Verwijzingstekst</a>, additionele tekst.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Ondertekening met tijdstempel',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Gebruikersnaam</a> (<a href='#' title='{{#special:mytalk}}'>overleg</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Ondertekening',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Gebruikersnaam</a> (<a href='#' title='{{#special:mytalk}}'>overleg</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Inspringen',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normale tekst<br />:Ingesprongen tekst<br />::Ingesprongen tekst',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normale tekst<dl><dd>Ingesprongen tekst<dl><dd>Ingesprongen tekst</dd></dl></dd></dl>',
+);
+
+/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+ * @author Eirik
+ * @author Gunnernett
+ * @author Harald Khan
+ * @author Nghtwlkr
+ */
+$messages['nn'] = array(
+ 'wikieditor' => 'Avansert grensesnitt for endring av wikitekst',
+ 'wikieditor-wikitext-tab' => 'Wikitekst',
+ 'wikieditor-loading' => 'Lastar',
+ 'wikieditor-preview-preference' => 'Ta i bruk førehandsvising side-om-side',
+ 'wikieditor-preview-tab' => 'Førehandsvising',
+ 'wikieditor-preview-changes-tab' => 'Endringar',
+ 'wikieditor-preview-loading' => 'Lastar…',
+ 'wikieditor-previewDialog-tab' => 'Førehandsvising',
+ 'wikieditor-previewDialog-loading' => 'Lastar…',
+ 'wikieditor-publish-preference' => 'Ta i bruk steg for steg-publisering',
+ 'wikieditor-publish-button-publish' => 'Publiser',
+ 'wikieditor-publish-button-cancel' => 'Avbryt',
+ 'wikieditor-publish-dialog-title' => 'Publiser på {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Endringssamandrag (oppsummering av kva for endringar du har gjort):',
+ 'wikieditor-publish-dialog-minor' => 'Småplukk',
+ 'wikieditor-publish-dialog-watch' => 'Overvak denne sida',
+ 'wikieditor-publish-dialog-publish' => 'Publiser',
+ 'wikieditor-publish-dialog-goback' => 'GÃ¥ tilbake',
+ 'wikieditor-template-editor-preference' => 'Ta i bruk skjemabasert redigering av wikimalar',
+ 'wikieditor-template-editor-dialog-title' => 'Endre mal',
+ 'wikieditor-template-editor-dialog-submit' => 'Oppdater',
+ 'wikieditor-template-editor-dialog-cancel' => 'Avbryt',
+ 'wikieditor-templates-preference' => 'Ta i bruk samanslåing av malar',
+ 'wikieditor-toc-preference' => 'Ta i bruk navigerbar innhaldsliste',
+ 'wikieditor-toc-show' => 'Vis innhald',
+ 'wikieditor-toc-hide' => 'Gøym innhald',
+ 'wikieditor-toolbar' => 'Verktøyline for redigering',
+ 'wikieditor-toolbar-desc' => 'Ei meir brukarvenleg verktøylinje for redigering',
+ 'wikieditor-toolbar-preference' => 'Ta i bruk utvida verktøylinje for redigering',
+ 'wikieditor-toolbar-dialogs-preference' => 'Aktiver dialogar for insetjing av lenkjer, tabellar og meir',
+ 'wikieditor-toolbar-loading' => 'Lastar …',
+ 'wikieditor-toolbar-tool-bold' => 'Feit',
+ 'wikieditor-toolbar-tool-bold-example' => 'Feit tekst',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kursiv tekst',
+ 'wikieditor-toolbar-tool-ilink' => 'Intern lenkja',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Lenkjetittel',
+ 'wikieditor-toolbar-tool-xlink' => 'Ekstern lenkja (hugs http:// -forstavinga)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com lenkjetittel',
+ 'wikieditor-toolbar-tool-link' => 'Lenkja',
+ 'wikieditor-toolbar-tool-link-title' => 'Set inn lenkja',
+ 'wikieditor-toolbar-tool-link-int' => 'Til ei wikisida',
+ 'wikieditor-toolbar-tool-link-int-target' => 'MÃ¥ltittel eller -internettadressa',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Sidetittel eller -internettadressa',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Lenkjetekst:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Skriv inn teksten som skal visa',
+ 'wikieditor-toolbar-tool-link-ext' => 'Til ei ekstern nettsida',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Adressa:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Lenkjetekst:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Set inn lenkja',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Avbryt',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Sida finst',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Sida finst ikkje',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Ugyldig tittel',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ekstern lenkja',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Kontrollerer om sida finnst...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Tittelen du oppgav er ikkje gyldig.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Lenkja du oppgav ser ut til å vera meint som ei lenkja til ei anna wikisida. Ynskjer du å gjera ho til ei intern lenkja?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Intern lenkja',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ekstern lenkja',
+ 'wikieditor-toolbar-tool-link-empty' => 'Du skreiv ikkje inn noko å lenkja til.',
+ 'wikieditor-toolbar-tool-file' => 'Fil',
+ 'wikieditor-toolbar-tool-file-example' => 'Døme.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referanse',
+ 'wikieditor-toolbar-tool-reference-example' => 'Set inn referansetekst her',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Avbryt',
+ 'wikieditor-toolbar-tool-reference-title' => 'Set inn referanse',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Set inn',
+ 'wikieditor-toolbar-tool-reference-text' => 'Referansetekst',
+ 'wikieditor-toolbar-tool-signature' => 'Signatur med tidsstempel',
+ 'wikieditor-toolbar-section-advanced' => 'Avansert',
+ 'wikieditor-toolbar-tool-heading' => 'Overskrift',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivå 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivå 1',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivå 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivå 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivå 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Overskriftstekst',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Punktlista',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Punktlisteelement',
+ 'wikieditor-toolbar-tool-olist' => 'Nummerert lista',
+ 'wikieditor-toolbar-tool-olist-example' => 'Nummerert listeelement',
+ 'wikieditor-toolbar-tool-indent' => 'Innrykk',
+ 'wikieditor-toolbar-tool-indent-example' => 'Innrykt lina',
+ 'wikieditor-toolbar-tool-nowiki' => 'Inga wikiformatering',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Set inn uformatert tekst her',
+ 'wikieditor-toolbar-tool-redirect' => 'Omdirigering',
+ 'wikieditor-toolbar-tool-redirect-example' => 'MÃ¥lsidenamn',
+ 'wikieditor-toolbar-tool-big' => 'Stor',
+ 'wikieditor-toolbar-tool-big-example' => 'Stor tekst',
+ 'wikieditor-toolbar-tool-small' => 'Liten',
+ 'wikieditor-toolbar-tool-small-example' => 'Liten tekst',
+ 'wikieditor-toolbar-tool-superscript' => 'Heva skrift',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Opphøgd tekst',
+ 'wikieditor-toolbar-tool-subscript' => 'Senka skrift',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Senka skrift',
+ 'wikieditor-toolbar-group-insert' => 'Set inn',
+ 'wikieditor-toolbar-tool-gallery' => 'Biletgalleri',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Døme.jpg|Bilettekst1
+$1:Døme.jpg|Bilettekst2',
+ 'wikieditor-toolbar-tool-newline' => 'Ny lina',
+ 'wikieditor-toolbar-tool-table' => 'Tabell',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! overskrift 1
+! overskrift 2
+! overskrift 3
+|-
+| rad 1, selle 1
+| rad 1, selle 2
+| rad 1, selle 3
+|-
+| rad 2, selle 1
+| rad 2, selle 2
+| rad 2, selle 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Selletekst',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Overskriftstekst',
+ 'wikieditor-toolbar-tool-table-title' => 'Set inn tabell',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rader',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolonner',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Legg til overskriftsrad',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stil med kantar',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Gjer tabellen sorterbar',
+ 'wikieditor-toolbar-tool-table-example' => 'Døme',
+ 'wikieditor-toolbar-tool-table-preview' => 'Førehandsvising',
+ 'wikieditor-toolbar-tool-table-insert' => 'Set inn',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Avbryt',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Det er ikkje mogleg å setja inn meir enn $1 seller med denne dialogen.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Du har ikkje skrive inn eit gyldig tal på rader eller kolonner.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ein kan ikkje setja inn ein tabell med null rader eller kolonner.',
+ 'wikieditor-toolbar-tool-replace' => 'Søk og erstatt',
+ 'wikieditor-toolbar-tool-replace-title' => 'Søk og erstatt',
+ 'wikieditor-toolbar-tool-replace-search' => 'Søk etter:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Erstatt med:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Skil mellom små og store bokstavar',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Handsam søkjestrengen som eit regulæruttrykk',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Finn neste',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Erstatt neste',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Erstatt alle',
+ 'wikieditor-toolbar-tool-replace-close' => 'Lukk',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Søket gav ingen resultat.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Gjorde $1 erstatting(ar).',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Du skreiv ikkje inn noko å søkja etter.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Regulæruttrykket du skreiv inn er ugyldig: $1',
+ 'wikieditor-toolbar-section-characters' => 'Spesialteikn',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Utvida latin',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbol',
+ 'wikieditor-toolbar-characters-page-greek' => 'Gresk',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kyrillisk',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabisk',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebraisk',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengali',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singalesisk',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-section-help' => 'Hjelp',
+ 'wikieditor-toolbar-help-heading-description' => 'Skildring',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Kva du skriv inn',
+ 'wikieditor-toolbar-help-heading-result' => 'Kva du får',
+ 'wikieditor-toolbar-help-page-format' => 'Formatering',
+ 'wikieditor-toolbar-help-page-link' => 'Lenkjer',
+ 'wikieditor-toolbar-help-page-heading' => 'Overskrifter',
+ 'wikieditor-toolbar-help-page-list' => 'Lister',
+ 'wikieditor-toolbar-help-page-file' => 'Filer',
+ 'wikieditor-toolbar-help-page-reference' => 'Referansar',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskusjon',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursiv tekst''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursiv tekst</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Feit',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Feit tekst'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Feit tekst</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Feit og kursiv',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Feit og kursiv tekst'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Feit og kursiv tekst</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Intern lenkja',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[sidetittel|lenkjenamn]]<br />[[sidetittel]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>lenkjenamn</a><br /><a href='#'>sidetittel</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ekstern lenkja',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.døme.org Lenkjenamn]<br />[http://www.døme.org]<br />http://www.døme.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Lenkjetekst</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.døme.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Overskrift på andre nivå',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Overskriftstekst ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Overskriftstekst</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Overskrift på tredje nivå',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Overskriftstekst ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Overskriftstekst</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Overskrift på fjerde nivå',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Overskriftstekst ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Overskriftstekst</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Overskrift på femte nivå',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Overskriftstekst =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Overskriftstekst</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Punktlista',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Listeelement<br />* Listeelement',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Listeelement</li><li>Listeelement</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Nummerert lista',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Listeelement<br /># Listeelement',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Listeelement</li><li>Listeelement</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Fil',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Bilettekst]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Bilettekst'class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Forstørr' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Bilettekst</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referanse',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Sidetekst.&lt;ref name="test"&gt;[http://www.døme.org Lenkjetekst], ekstra lenkjetekst.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Sidetekst.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Ytterlegare bruk av same referanse',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Sidetekst.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Vis referansar',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.døme.org' class='external text' href='#'>Lenkjetekst</a>, ekstra tekst.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Signatur med tidsstempel',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Brukarnamn</a> (<a href='#' title='{{#special:mytalk}}'>diskusjon</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signatur',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Brukarnamn</a> (<a href='#' title='{{#special:mytalk}}'>diskusjon</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Innrykk',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normal tekst<br />:Tekst med innrykk<br />::Tekst med innrykk',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normal tekst<dl><dd>Tekst med innrykk<dl><dd>Tekst med innrykk</dd></dl></dd></dl>',
+);
+
+/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+ * @author Jon Harald Søby
+ * @author Laaknor
+ * @author Nghtwlkr
+ */
+$messages['no'] = array(
+ 'wikieditor' => 'Avansert grensesnitt for redigering av wikitekst',
+ 'wikieditor-desc' => 'Gir et utvidbart tekstredigeringsgrensesnitt og mange utvidelsesmoduler',
+ 'wikieditor-wikitext-tab' => 'Wikitekst',
+ 'wikieditor-loading' => 'Laster',
+ 'wikieditor-preview-preference' => 'Aktiver forhåndsvisning side-ved-side',
+ 'wikieditor-preview-tab' => 'Forhåndsvisning',
+ 'wikieditor-preview-changes-tab' => 'Endringer',
+ 'wikieditor-preview-loading' => 'Laster...',
+ 'wikieditor-previewDialog-preference' => 'Aktiver forhåndsvisningsdialog',
+ 'wikieditor-previewDialog-tab' => 'Forhåndsvisning',
+ 'wikieditor-previewDialog-loading' => 'Laster...',
+ 'wikieditor-publish-preference' => 'Aktiver steg-for-steg publisering',
+ 'wikieditor-publish-button-publish' => 'Publiser',
+ 'wikieditor-publish-button-cancel' => 'Avbryt',
+ 'wikieditor-publish-dialog-title' => 'Publiser til {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Redigeringssammendrag (oppsummering av hvilke endringer du har gjort)',
+ 'wikieditor-publish-dialog-minor' => 'Mindre endring',
+ 'wikieditor-publish-dialog-watch' => 'Overvåk denne siden',
+ 'wikieditor-publish-dialog-publish' => 'Publiser',
+ 'wikieditor-publish-dialog-goback' => 'GÃ¥ tilbake',
+ 'wikieditor-template-editor-preference' => 'Aktiver skjemabasert redigering av wikimaler',
+ 'wikieditor-template-editor-dialog-title' => 'Rediger mal',
+ 'wikieditor-template-editor-dialog-submit' => 'Oppdater',
+ 'wikieditor-template-editor-dialog-cancel' => 'Avbryt',
+ 'wikieditor-templates-preference' => 'Aktiver sammenleggbare maler',
+ 'wikieditor-toc-preference' => 'Aktiver navigerbar innholdsfortegnelse',
+ 'wikieditor-toc-show' => 'Vis innhold',
+ 'wikieditor-toc-hide' => 'Skjul innhold',
+ 'wikieditor-toolbar' => 'Verktøylinje for redigering',
+ 'wikieditor-toolbar-desc' => 'Verktøylinje for redigering med utvidet brukervennlighet',
+ 'wikieditor-toolbar-preference' => 'Aktiver utvidet verktøylinje for redigering',
+ 'wikieditor-toolbar-dialogs-preference' => 'Slå på dialoger for innsetting av lenker, tabeller og mer',
+ 'wikieditor-toolbar-hidesig' => 'Skjul signaturknappen fra sider i hovednavnerommet',
+ 'wikieditor-toolbar-loading' => 'Laster...',
+ 'wikieditor-toolbar-tool-bold' => 'Fet',
+ 'wikieditor-toolbar-tool-bold-example' => 'Fet tekst',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kursiv tekst',
+ 'wikieditor-toolbar-tool-ilink' => 'Intern lenke',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Lenketittel',
+ 'wikieditor-toolbar-tool-xlink' => 'Ekstern lenke (husk http:// først)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com lenketittel',
+ 'wikieditor-toolbar-tool-link' => 'Lenke',
+ 'wikieditor-toolbar-tool-link-title' => 'Sett inn lenke',
+ 'wikieditor-toolbar-tool-link-int' => 'Til en wikiartikkel/-side',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Sidetittel/artikkeltittel:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Sidetittel eller internettadresse',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Lenketekst:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Legg inn teksten som skal vises',
+ 'wikieditor-toolbar-tool-link-ext' => 'Til en ekstern webside',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Adresse:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Lenketekst:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Sett inn lenke',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Avbryt',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Siden finnes',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Siden finnes ikke',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Ugyldig tittel',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ekstern lenke',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Kontrollerer om siden finnes...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Tittelen du gav er ugyldig',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URLen du la inn ser ut som en lenke til en annen wikiside. Vil du gjøre den til en internlenke?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Intern lenke',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ekstern lenke',
+ 'wikieditor-toolbar-tool-link-empty' => 'Du skrev ikke inn noe å lenke til',
+ 'wikieditor-toolbar-tool-file' => 'Fil',
+ 'wikieditor-toolbar-tool-file-example' => 'Eksempel.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referanse',
+ 'wikieditor-toolbar-tool-reference-example' => 'Sett inn fotnotetekst her',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Avbryt',
+ 'wikieditor-toolbar-tool-reference-title' => 'Sett inn referanse',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Sett inn',
+ 'wikieditor-toolbar-tool-reference-text' => 'Referansetekst',
+ 'wikieditor-toolbar-tool-signature' => 'Din signatur med dato',
+ 'wikieditor-toolbar-section-advanced' => 'Avansert',
+ 'wikieditor-toolbar-tool-heading' => 'Overskrift',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivå 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivå 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivå 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivå 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivå 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Overskriftstekst',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Punktliste',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Punktlisteelement',
+ 'wikieditor-toolbar-tool-olist' => 'Nummerert liste',
+ 'wikieditor-toolbar-tool-olist-example' => 'Nummerert liste-element',
+ 'wikieditor-toolbar-tool-indent' => 'Indentering',
+ 'wikieditor-toolbar-tool-indent-example' => 'Indentert linje',
+ 'wikieditor-toolbar-tool-nowiki' => 'Ingen wikiformatering',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Sett inn uformatert tekst her',
+ 'wikieditor-toolbar-tool-redirect' => 'Omdiriger',
+ 'wikieditor-toolbar-tool-redirect-example' => 'MÃ¥lsidenavn',
+ 'wikieditor-toolbar-tool-big' => 'Stor',
+ 'wikieditor-toolbar-tool-big-example' => 'Stor tekst',
+ 'wikieditor-toolbar-tool-small' => 'Liten',
+ 'wikieditor-toolbar-tool-small-example' => 'Liten tekst',
+ 'wikieditor-toolbar-tool-superscript' => 'Hevet',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Hevet tekst',
+ 'wikieditor-toolbar-tool-subscript' => 'Senket',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Senket tekst',
+ 'wikieditor-toolbar-group-insert' => 'Sett inn',
+ 'wikieditor-toolbar-tool-gallery' => 'Bildegalleri',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Bildetekst1
+$1:Example.jpg|Bildetekst2',
+ 'wikieditor-toolbar-tool-newline' => 'Linjeskift',
+ 'wikieditor-toolbar-tool-table' => 'Tabell',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! overskrift 1
+! overskrift 2
+! overskrift 3
+|-
+| rad 1, celle 1
+| rad 1, celle 2
+| rad 1, celle 3
+|-
+| rad 2, celle 1
+| rad 2, celle 2
+| rad 2, celle 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Celletekst',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Overskriftstekst',
+ 'wikieditor-toolbar-tool-table-title' => 'Sett inn tabell',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rader',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolonner',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Inkluder overskriftsrad',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stil med kanter',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Gjør tabellen sorterbar',
+ 'wikieditor-toolbar-tool-table-example' => 'Celletekst',
+ 'wikieditor-toolbar-tool-table-preview' => 'Forhåndsvisning',
+ 'wikieditor-toolbar-tool-table-insert' => 'Sett inn',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Avbryt',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Det er ikke mulig å sette inn mer enn $1 celler med denne boksen.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Du har ikke skrevet inn et gyldig antall rader eller kolonner.',
+ 'wikieditor-toolbar-tool-table-zero' => 'De kan ikke sette inn en tabell med null rader eller kolonner.',
+ 'wikieditor-toolbar-tool-replace' => 'Søk og erstatt',
+ 'wikieditor-toolbar-tool-replace-title' => 'Søk og erstatt',
+ 'wikieditor-toolbar-tool-replace-search' => 'Søk etter:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Erstatt med:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Skill mellom store/små bokstaver',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Bruk søkestrengen som et regulært uttrykk',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Finn neste',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Erstatt neste',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Erstatt alle',
+ 'wikieditor-toolbar-tool-replace-close' => 'Lukk',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Søket ga ingen resultater.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Gjorde $1 erstating(er).',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Du skrev ikke inn noe å søke etter.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Det regulære uttrykket du skrev inn er ugyldig: $1',
+ 'wikieditor-toolbar-section-characters' => 'Spesialtegn',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Utvidet Latin',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symboler',
+ 'wikieditor-toolbar-characters-page-greek' => 'Gresk',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kyrillisk',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabisk',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persisk',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebraisk',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singalesisk',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laotisk',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Hjelp',
+ 'wikieditor-toolbar-help-heading-description' => 'Beskrivelse',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Hva du skriver',
+ 'wikieditor-toolbar-help-heading-result' => 'Hva du får',
+ 'wikieditor-toolbar-help-page-format' => 'Formatering',
+ 'wikieditor-toolbar-help-page-link' => 'Lenker',
+ 'wikieditor-toolbar-help-page-heading' => 'Overskrifter',
+ 'wikieditor-toolbar-help-page-list' => 'Lister',
+ 'wikieditor-toolbar-help-page-file' => 'Filer',
+ 'wikieditor-toolbar-help-page-reference' => 'Referanser',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskusjon',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursiv tekst''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursiv tekst</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Fet',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Fet tekst'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Fet tekst</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Fet &amp; kursiv',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Fet &amp; kursiv tekst'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Fet &amp; kursiv tekst</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Intern lenke',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Sidetittel|Lenkenavn]]<br />[[Sidetittel]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Lenkenavn</a><br /><a href='#'>Sidetittel</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ekstern lenke',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Lenkenavn]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Lenkenavn</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2. nivå overskrift',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Overskrift ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Overskrift</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3. nivå overskrift',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Overskrift ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Overskrift</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4. nivå overskrift',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Overskrift ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Overskrift</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5. nivå overskrift',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Overskrift =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Overskrift</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Punktliste',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Listeelement<br />
+* Listeelement',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Listeelement</li><li>Listeelement</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Nummerert liste',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Listeelement<br />
+# Listeelement',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Listeelement</li><li>Listeelement</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Fil',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Bildetekst]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Bildetekst' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Forstørr' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Bildetekst</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referanse',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Tekst.&lt;ref name="test"&gt;[http://www.example.org Lenketekst], ytterligere tekst.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Tekst.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Ytterligere bruk av samme referanse',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Tekst.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Vis referanser',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Lenketekst</a>, ytterligere tekst.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Signatur med tidsangivelse',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Brukernavn</a> (<a href='#' title='{{#special:mytalk}}'>diskusjon</a>) 10. juni 2009, 15:54 (CEST)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signatur',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Brukernavn</a> (<a href='#' title='{{#special:mytalk}}'>diskusjon</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Innrykk',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normal tekst<br />:Innrykket tekst<br />::Innrykket tekst',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normal tekst<dl><dd>Innrykket tekst<dl><dd>Innrykket tekst</dd></dl></dd></dl>',
+);
+
+/** Northern Sotho (Sesotho sa Leboa)
+ * @author Mohau
+ */
+$messages['nso'] = array(
+ 'wikieditor-loading' => 'Laiša',
+ 'wikieditor-preview-changes-tab' => 'Diphetogo',
+ 'wikieditor-preview-loading' => 'Laiša...',
+ 'wikieditor-publish-button-cancel' => 'Khansela',
+ 'wikieditor-publish-dialog-goback' => 'Boela morago',
+ 'wikieditor-template-editor-dialog-cancel' => 'Khansela',
+ 'wikieditor-toolbar-loading' => 'Laiša...',
+ 'wikieditor-toolbar-tool-xlink' => 'Hlomaganyo ya kantle (gopola go thoma ka http://)',
+ 'wikieditor-toolbar-tool-link' => 'Hlomaganyo',
+ 'wikieditor-toolbar-tool-link-title' => 'Lokela hlomaganyo',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Khansela',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Letlakala le gona',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Letlakala ga le hwetšagale',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Hlogo gaya dumelwa',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Hhlomaganyo ya kantle',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Hhlomaganyo ya kantle',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Khansela',
+ 'wikieditor-toolbar-tool-heading' => 'Hlogo-taba',
+ 'wikieditor-toolbar-tool-table-example' => 'Mohlala',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Khansela',
+ 'wikieditor-toolbar-help-page-link' => 'Dihlomaganyo',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Hhlomaganyo ya kantle',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Ditlhaka tša hlogo-taba ==',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '== Ditlhaka tša hlogo-taba ==',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '== Ditlhaka tša hlogo-taba ==',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '== Ditlhaka tša hlogo-taba ==',
+);
+
+/** Occitan (Occitan)
+ * @author Cedric31
+ * @author Jfblanc
+ * @author McDutchie
+ */
+$messages['oc'] = array(
+ 'wikieditor' => 'Interfàcia avançada de modificacion de wikitèxte',
+ 'wikieditor-desc' => 'Provesís una interfàcia de modificacion de wikitèxte extensible e mantuna foncionalitats.',
+ 'wikieditor-wikitext-tab' => 'Wikitèxte',
+ 'wikieditor-loading' => 'Cargament',
+ 'wikieditor-preview-preference' => 'Activar la previsualizacion còsta a còsta',
+ 'wikieditor-preview-tab' => 'Previsualizacion',
+ 'wikieditor-preview-changes-tab' => 'Cambiaments',
+ 'wikieditor-preview-loading' => 'Cargament...',
+ 'wikieditor-previewDialog-tab' => 'Previsualizacion',
+ 'wikieditor-previewDialog-loading' => 'Cargament...',
+ 'wikieditor-publish-preference' => 'Activar la publicacion etapa per etapa',
+ 'wikieditor-publish-button-publish' => 'Publicar',
+ 'wikieditor-publish-button-cancel' => 'Anullar',
+ 'wikieditor-publish-dialog-title' => 'Publicar sus {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => "Resumit de modificacion (descrivètz brèvament los cambiaments qu'avètz aportats) :",
+ 'wikieditor-publish-dialog-minor' => 'Modificacion menora',
+ 'wikieditor-publish-dialog-watch' => 'Seguir aquesta pagina',
+ 'wikieditor-publish-dialog-publish' => 'Publicar',
+ 'wikieditor-publish-dialog-goback' => 'Retorn',
+ 'wikieditor-template-editor-preference' => 'Activar la modificacion a basa de formularis dels modèls wiki',
+ 'wikieditor-template-editor-dialog-title' => 'Modificar lo modèl',
+ 'wikieditor-template-editor-dialog-submit' => 'Metre a jorn',
+ 'wikieditor-template-editor-dialog-cancel' => 'Anullar',
+ 'wikieditor-templates-preference' => 'Activar lo replegament dels modèls',
+ 'wikieditor-toc-preference' => "Activar l'ensenhador navigable",
+ 'wikieditor-toc-show' => 'Afichar lo contengut',
+ 'wikieditor-toc-hide' => 'Amagar lo contengut',
+ 'wikieditor-toolbar' => 'Modificacion de la barra d’espleches',
+ 'wikieditor-toolbar-desc' => "Modificacion de la barra d'espleches amb l'utilizabilitat melhorada",
+ 'wikieditor-toolbar-preference' => "Activar la barra d'espleches melhorada",
+ 'wikieditor-toolbar-dialogs-preference' => 'Activar las bóstias de dialòg per apondre de ligams, de tablèus e mai encara',
+ 'wikieditor-toolbar-loading' => 'Cargament ...',
+ 'wikieditor-toolbar-tool-bold' => 'Gras',
+ 'wikieditor-toolbar-tool-bold-example' => 'Tèxte en gras',
+ 'wikieditor-toolbar-tool-italic' => 'Italica',
+ 'wikieditor-toolbar-tool-italic-example' => 'Tèxte en italica',
+ 'wikieditor-toolbar-tool-ilink' => 'Ligam intèrne',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Títol del ligam',
+ 'wikieditor-toolbar-tool-xlink' => 'Ligam extèrne ( doblidetz pas lo prefix http:// )',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com títol del ligam',
+ 'wikieditor-toolbar-tool-link' => 'Ligam',
+ 'wikieditor-toolbar-tool-link-title' => 'Inserir un ligam',
+ 'wikieditor-toolbar-tool-link-int' => 'Cap a un article / una pagina wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Títol de l’article :',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Títol de la pagina o URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Tèxte del ligam :',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Entratz lo tèxte que deuriá èsser afichat',
+ 'wikieditor-toolbar-tool-link-ext' => 'Cap a una pagina web extèrna',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL cibla del ligam :',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Tèxte del ligam :',
+ 'wikieditor-toolbar-tool-link-insert' => 'Inserir lo ligam',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Abandonar',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'La pagina existís',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'La pagina existís pas',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Títol invalid',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ligam extèrne',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "Verificacion de l'existéncia de la pagina...",
+ 'wikieditor-toolbar-tool-link-int-invalid' => "Lo títol qu'avètz especificat es incorrècte.",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "L'URL qu'avètz especificada sembla ligar cap a una autra pagina del wiki. Volètz utilizar un ligam intèrne a la plaça ?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Ligam intèrne',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ligam extèrne',
+ 'wikieditor-toolbar-tool-link-empty' => 'Avètz pas entrat res que pòsca èsser ligat.',
+ 'wikieditor-toolbar-tool-file' => 'Fichièr inserit',
+ 'wikieditor-toolbar-tool-file-example' => 'Exemple.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referéncia',
+ 'wikieditor-toolbar-tool-reference-example' => 'Inserir lo tèxte de la nòta en bas de pagina aicí',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Anullar',
+ 'wikieditor-toolbar-tool-signature' => 'Signatura e data',
+ 'wikieditor-toolbar-section-advanced' => 'Avançat',
+ 'wikieditor-toolbar-tool-heading' => 'Títol',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivèl 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivèl 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivèl 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivèl 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivèl 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Tèxte del títol',
+ 'wikieditor-toolbar-group-format' => 'Lista',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista amb de piuses',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Element de la lista amb de piuses',
+ 'wikieditor-toolbar-tool-olist' => 'Lista numerotada',
+ 'wikieditor-toolbar-tool-olist-example' => 'Element de la lista numerotada',
+ 'wikieditor-toolbar-tool-indent' => 'Indentacion',
+ 'wikieditor-toolbar-tool-indent-example' => 'Linha indentada',
+ 'wikieditor-toolbar-tool-big' => 'Grand',
+ 'wikieditor-toolbar-tool-big-example' => 'Tèxte grand',
+ 'wikieditor-toolbar-tool-small' => 'Pichon',
+ 'wikieditor-toolbar-tool-small-example' => 'Tèxte pichon',
+ 'wikieditor-toolbar-tool-superscript' => 'Exponent',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Tèxte en exponent',
+ 'wikieditor-toolbar-tool-subscript' => 'Indici',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Tèxte en indici',
+ 'wikieditor-toolbar-group-insert' => 'Inserir',
+ 'wikieditor-toolbar-tool-gallery' => 'Galariá de fichièrs',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Exemple.jpg|Descripcion 1
+$1:Exemple.jpg|Descripcion 2',
+ 'wikieditor-toolbar-tool-newline' => 'Saut de linha',
+ 'wikieditor-toolbar-tool-table' => 'Tablèu',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! entèsta 1
+! entèsta 2
+! entèsta 3
+|-
+| linha 1, casa 1
+| linha 1, casa 2
+| linha 1, casa 3
+|-
+| linha 2, casa 1
+| linha 2, casa 2
+| linha 2, casa 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Tèxte de la cellula',
+ 'wikieditor-toolbar-tool-table-example-header' => "Tèxte de l'entèsta",
+ 'wikieditor-toolbar-tool-table-title' => 'Inserir un tablèu',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Linhas',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Colomnas',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => "Inclure la linha d'entèsta",
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Estil amb bordaduras',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Far lo tablèu triable',
+ 'wikieditor-toolbar-tool-table-example' => 'Tèxte de la cellula',
+ 'wikieditor-toolbar-tool-table-preview' => 'Previsualizacion',
+ 'wikieditor-toolbar-tool-table-insert' => 'Inserir',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Anullar',
+ 'wikieditor-toolbar-tool-table-toomany' => "Es pas possible d'inserir un tablèu de mai de $1 cellulas amb aquesta aisina.",
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Avètz pas entrat un nombre de linhas o de colomnas valid.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Podètz pas inserir un tablèu sens linha o sens colomna.',
+ 'wikieditor-toolbar-tool-replace' => 'Recercar & remplaçar',
+ 'wikieditor-toolbar-tool-replace-title' => 'Recercar e remplaçar',
+ 'wikieditor-toolbar-tool-replace-search' => 'Recercar :',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Remplaçar amb :',
+ 'wikieditor-toolbar-tool-replace-case' => 'Far correspondre la cassa',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Tractar la cadena de recèrca coma una expression regulara',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Recercar lo seguent',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Remplaçar lo seguent',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Remplaçar tot',
+ 'wikieditor-toolbar-tool-replace-close' => 'Tampar',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Vòstra recèrca a pas trobat cap de correspondéncia.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 remplaçaments faches.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Avètz pas indicat de tèxte de recercar.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => "L'expression racionala entrada es invalida : $1",
+ 'wikieditor-toolbar-section-characters' => 'Caractèrs especials',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin espandit',
+ 'wikieditor-toolbar-characters-page-ipa' => 'API',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simbòls',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grèc',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirillic',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabi',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ebrieu',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telogó',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Cingalés',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-section-help' => 'Ajuda',
+ 'wikieditor-toolbar-help-heading-description' => 'Descripcion',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Çò que picatz',
+ 'wikieditor-toolbar-help-heading-result' => "Çò qu'obtenètz",
+ 'wikieditor-toolbar-help-page-format' => 'Formatatge',
+ 'wikieditor-toolbar-help-page-link' => 'Ligams',
+ 'wikieditor-toolbar-help-page-heading' => 'Títols',
+ 'wikieditor-toolbar-help-page-list' => 'Listas',
+ 'wikieditor-toolbar-help-page-file' => 'Fichièrs',
+ 'wikieditor-toolbar-help-page-reference' => 'Referéncias',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discussion',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Italica',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Tèxte en italica''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Tèxte en italica</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Gras',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Tèxte en gras'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Tèxte en gras</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Gras &amp; italica',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Tèxte en gras &amp; en italica'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Tèxte en gras &amp; en italica</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Ligam intèrne',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Títol de la pagina|Tèxte del ligam]]<br />[[Títol de la pagina]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Tèxte del ligam</a><br /><a href='#'>Títol de la pagina</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ligam extèrne',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.exemple.org Tèxte del ligam]<br />[http://www.exemple.org]<br />http://www.exemple.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Tèxte del ligam</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.exemple.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Títol de segond nivèl',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Tèxte del títol ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Tèxte del títol</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Títol de tresen nivèl',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Tèxte del títol ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Tèxte del títol</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Títol de quatren nivèl',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Tèxte del títol ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Tèxte del títol</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Títol de cinquen nivèl',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Tèxte del títol =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Tèxte del títol</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista amb de piuses',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Element de la lista<br />* Element de la lista',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Element de la lista</li><li>Element de la lista</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista numerotada',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Element de la lista<br /># Element de la lista',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Element de la lista</li><li>Element de la lista</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Fichièr inserit',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Tèxte afichat]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Tèxte afichat' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Tèxte afichat</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referéncia',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Tèxte de la pagina.&lt;ref name="test"&gt;[http://www.example.org tèxte del ligam], tèxte adicional.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Tèxte de la pagina <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Utilizacion adicionala de la meteissa referéncia',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Tèxte de la pagina <sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Afichar las referéncias',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Tèxte del ligam</a>, tèxte adicional.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Signatura amb data',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nom d'utilizaire</a> (<a href='#' title='{{#special:mytalk}}'>discutir</a>) 10 de junh de 2009 a 15:54 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signatura',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nom d'utilizaire</a> (<a href='#' title='{{#special:mytalk}}'>discutir</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Identacion',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Tèxte normal<br />:Tèxte indentat<br />::Tèxte indentat',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Tèxte normal<dl><dd>Tèxte indentat<dl><dd>Tèxte indentat</dd></dl></dd></dl>',
+);
+
+/** Oriya (ଓଡ଼ିଆ)
+ * @author Odisha1
+ * @author Psubhashish
+ */
+$messages['or'] = array(
+ 'wikieditor-toolbar-help-content-signature-description' => 'ପରିଚାୟକ',
+);
+
+/** Deitsch (Deitsch)
+ * @author Xqt
+ */
+$messages['pdc'] = array(
+ 'wikieditor-wikitext-tab' => 'Wikitext',
+ 'wikieditor-loading' => 'Laade',
+ 'wikieditor-preview-tab' => 'Aagucke',
+ 'wikieditor-preview-changes-tab' => 'Enneringe',
+ 'wikieditor-preview-loading' => 'am laade…',
+ 'wikieditor-previewDialog-tab' => 'Aasicht',
+ 'wikieditor-previewDialog-loading' => 'am laade…',
+ 'wikieditor-publish-dialog-minor' => 'Nur Gleenigkeete sinn gennert',
+ 'wikieditor-publish-dialog-watch' => 'Des Blatt watsche',
+ 'wikieditor-publish-dialog-goback' => 'Zerrick',
+ 'wikieditor-toolbar' => 'Gscharr fer Enneringe',
+ 'wikieditor-toolbar-loading' => 'Laade…',
+ 'wikieditor-toolbar-tool-bold' => 'Fett',
+ 'wikieditor-toolbar-tool-bold-example' => 'Wadde fett gmarrickt',
+ 'wikieditor-toolbar-tool-ilink' => 'Gleecher',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Gleecher-Titel',
+ 'wikieditor-toolbar-tool-xlink' => 'Gewebbgleecher (acht uff http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com Gleecher-Text',
+ 'wikieditor-toolbar-tool-link' => 'Gleecher',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Gleecher-Adress:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Neier Gleecher',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Letzer Titel',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Gewebbgleecher',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Seller Naame vun dem Blatt iss letz.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Gewebbgleecher',
+ 'wikieditor-toolbar-tool-file-example' => 'Beeschpiel.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Beweisung',
+ 'wikieditor-toolbar-tool-heading' => 'Iwwerschrift',
+ 'wikieditor-toolbar-tool-heading-example' => 'Iwwerschrift',
+ 'wikieditor-toolbar-group-format' => 'Lischt',
+ 'wikieditor-toolbar-tool-redirect' => 'Weiderleiding',
+ 'wikieditor-toolbar-tool-big' => 'Gross',
+ 'wikieditor-toolbar-tool-small' => 'Glee',
+ 'wikieditor-toolbar-tool-small-example' => 'Glee Text',
+ 'wikieditor-toolbar-group-insert' => 'Dezu duh',
+ 'wikieditor-toolbar-tool-table' => 'Tabell',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Iwwerschrift',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kallems',
+ 'wikieditor-toolbar-tool-table-example' => 'Beischpiel',
+ 'wikieditor-toolbar-tool-table-preview' => 'Aagucke',
+ 'wikieditor-toolbar-tool-replace-search' => 'Uffgucke nooch:',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Neegschte finne',
+ 'wikieditor-toolbar-tool-replace-close' => 'Zumache',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-section-help' => 'Hilf',
+ 'wikieditor-toolbar-help-page-link' => 'Gleecher',
+ 'wikieditor-toolbar-help-page-heading' => 'Iwwerschrifte',
+ 'wikieditor-toolbar-help-page-list' => 'Lischte',
+ 'wikieditor-toolbar-help-page-file' => 'Feils',
+ 'wikieditor-toolbar-help-page-reference' => 'Beweisunge',
+ 'wikieditor-toolbar-help-page-discussion' => 'Dischbedutt',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Fett',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Gleecher',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Gewebbgleecher',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Iwwerschrift ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Iwwerschrift</h2>',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Iwwerschrift ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Iwwerschrift</h3>',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Iwwerschrift ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Iwwerschrift</h4>',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Iwwerschrift =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Iwwerschrift</h5>',
+ 'wikieditor-toolbar-help-content-reference-description' => 'Beweisung',
+ 'wikieditor-toolbar-help-content-signature-description' => 'Unnerschrift',
+);
+
+/** Polish (Polski)
+ * @author Leinad
+ * @author Marcin Åukasz Kiejzik
+ * @author Nux
+ * @author Sp5uhe
+ * @author ToSter
+ * @author Wpedzich
+ */
+$messages['pl'] = array(
+ 'wikieditor' => 'Zaawansowany interfejs edycji wikitekstu',
+ 'wikieditor-desc' => 'Dostarcza rozszerzalny interfejs edycji wikitekstu oraz wiele funkcji oferowane przez moduły',
+ 'wikieditor-wikitext-tab' => 'Wikikod',
+ 'wikieditor-loading' => 'Åadowanie',
+ 'wikieditor-preview-preference' => 'WÅ‚Ä…cz sÄ…siadujÄ…cy podglÄ…d',
+ 'wikieditor-preview-tab' => 'PodglÄ…d',
+ 'wikieditor-preview-changes-tab' => 'Zmiany',
+ 'wikieditor-preview-loading' => 'Wczytywanie...',
+ 'wikieditor-previewDialog-preference' => 'WÅ‚Ä…cz okno podglÄ…du',
+ 'wikieditor-previewDialog-tab' => 'PodglÄ…d',
+ 'wikieditor-previewDialog-loading' => 'Wczytywanie...',
+ 'wikieditor-publish-preference' => 'Wspomaga publikację materiału krok po kroku',
+ 'wikieditor-publish-button-publish' => 'Opublikuj',
+ 'wikieditor-publish-button-cancel' => 'Anuluj',
+ 'wikieditor-publish-dialog-title' => 'Opublikuj w {{GRAMMAR:MS.lp|{{SITENAME}}}}',
+ 'wikieditor-publish-dialog-summary' => 'Zmiany (krótki opis wykonanych zmian)',
+ 'wikieditor-publish-dialog-minor' => 'Drobna zmiana',
+ 'wikieditor-publish-dialog-watch' => 'Obserwuj tÄ™ stronÄ™',
+ 'wikieditor-publish-dialog-publish' => 'Publikowanie',
+ 'wikieditor-publish-dialog-goback' => 'Wróć',
+ 'wikieditor-template-editor-preference' => 'Umożliwia edycję szablonów wiki za pomocą formularzy',
+ 'wikieditor-template-editor-dialog-title' => 'Edytuj szablon',
+ 'wikieditor-template-editor-dialog-submit' => 'Uaktualnij',
+ 'wikieditor-template-editor-dialog-cancel' => 'Anuluj',
+ 'wikieditor-templates-preference' => 'Włącz zwijanie szablonów',
+ 'wikieditor-toc-preference' => 'Włącz umożliwiający nawigację spis treści',
+ 'wikieditor-toc-show' => 'Pokaż zawartość',
+ 'wikieditor-toc-hide' => 'Ukryj zawartość',
+ 'wikieditor-toolbar' => 'Pasek narzędzi edycyjnych',
+ 'wikieditor-toolbar-desc' => 'Ułatwiający pracę pasek narzędzi edycyjnych',
+ 'wikieditor-toolbar-preference' => 'Włącz rozszerzony pasek narzędzi edycyjnych',
+ 'wikieditor-toolbar-dialogs-preference' => 'Włącz okienka dodawania linków, tabel itp.',
+ 'wikieditor-toolbar-hidesig' => 'Ukryj przycisk podpisu na stronach głównej przestrzeni nazw',
+ 'wikieditor-toolbar-loading' => 'Åadowanie...',
+ 'wikieditor-toolbar-tool-bold' => 'Wytłuszczenie',
+ 'wikieditor-toolbar-tool-bold-example' => 'Tekst tłustą czcionką',
+ 'wikieditor-toolbar-tool-italic' => 'Pochyły',
+ 'wikieditor-toolbar-tool-italic-example' => 'Tekst pochyłą czcionką',
+ 'wikieditor-toolbar-tool-ilink' => 'Link wewnętrzny',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Tytuł linku',
+ 'wikieditor-toolbar-tool-xlink' => 'Link zewnętrzny (pamiętaj o przedrostku http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.przyklad.com opis linku',
+ 'wikieditor-toolbar-tool-link' => 'Link',
+ 'wikieditor-toolbar-tool-link-title' => 'Wstaw link',
+ 'wikieditor-toolbar-tool-link-int' => 'Do strony wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Strona docelowa lub pełny link',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Tytuł lub adres URL strony',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Tekst do wyświetlenia',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Wprowadź tekst, który powinien być wyświetlany',
+ 'wikieditor-toolbar-tool-link-ext' => 'Do zewnętrznej strony internetowej',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Adres URL linku',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Tekst',
+ 'wikieditor-toolbar-tool-link-insert' => 'Wstaw link',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Zrezygnuj',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Strona istnieje',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Strona nie istnieje',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Nieprawidłowy tytuł',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Link zewnętrzny',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Sprawdzanie czy strona istnieje…',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Wprowadzony tytuł jest nieprawidłowy.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Podany URL wygląda jak link do innej strony wiki. Czy chcesz, aby był to link wewnętrzny?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Link wewnętrzny',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Link zewnętrzny',
+ 'wikieditor-toolbar-tool-link-empty' => 'Nie podałeś adresu do którego ma prowadzić link.',
+ 'wikieditor-toolbar-tool-file' => 'Plik osadzony',
+ 'wikieditor-toolbar-tool-file-example' => 'Przykład.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Przypis',
+ 'wikieditor-toolbar-tool-reference-example' => 'Wstaw tekst przypisu',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Anuluj',
+ 'wikieditor-toolbar-tool-reference-title' => 'Wstaw przypis',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Wstaw',
+ 'wikieditor-toolbar-tool-reference-text' => 'Treść przypisu',
+ 'wikieditor-toolbar-tool-signature' => 'Podpis oraz aktualna data i czas',
+ 'wikieditor-toolbar-section-advanced' => 'Zaawansowane',
+ 'wikieditor-toolbar-tool-heading' => 'Nagłówek',
+ 'wikieditor-toolbar-tool-heading-1' => 'Poziom 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Poziom 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Poziom 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Poziom 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Poziom 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Tekst nagłówka',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista punktowana',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Pozycja na liście punktowanej',
+ 'wikieditor-toolbar-tool-olist' => 'Lista numerowana',
+ 'wikieditor-toolbar-tool-olist-example' => 'Pozycja na liście numerowanej',
+ 'wikieditor-toolbar-tool-indent' => 'Wcięcia',
+ 'wikieditor-toolbar-tool-indent-example' => 'Wcięcie wiersza',
+ 'wikieditor-toolbar-tool-nowiki' => 'Zignoruj formatowanie wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Wprowadź tutaj tekst niesformatowany',
+ 'wikieditor-toolbar-tool-redirect' => 'Przekierowanie',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nazwa strony docelowej',
+ 'wikieditor-toolbar-tool-big' => 'Powiększony',
+ 'wikieditor-toolbar-tool-big-example' => 'Powiększony tekst',
+ 'wikieditor-toolbar-tool-small' => 'Pomniejszony',
+ 'wikieditor-toolbar-tool-small-example' => 'Pomniejszony tekst',
+ 'wikieditor-toolbar-tool-superscript' => 'Indeks górny',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Tekst indeksu górnego',
+ 'wikieditor-toolbar-tool-subscript' => 'Indeks dolny',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Tekst indeksu dolnego',
+ 'wikieditor-toolbar-group-insert' => 'Wstaw',
+ 'wikieditor-toolbar-tool-gallery' => 'Galeria obrazków',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Podpis1
+$1:Example.jpg|Podpis2',
+ 'wikieditor-toolbar-tool-newline' => 'Nowy wiersz',
+ 'wikieditor-toolbar-tool-table' => 'Tabela',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! nagłówek 1
+! nagłówek 2
+! nagłówek 3
+| -
+| wiersz 1, komórka 1
+| wiersz 1, komórka 2
+| wiersz 1, komórka 3
+| -
+| wiersz 2, komórka 1
+| wiersz 2, komórka 2
+| wiersz 2, komórka 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Treść komórki',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Tekst nagłówka',
+ 'wikieditor-toolbar-tool-table-title' => 'Wstaw tabelÄ™',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Wiersze',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolumny',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Dołącz wiersz nagłówka',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Styl z krawędziami',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Dodaj do tabeli możliwość sortowania',
+ 'wikieditor-toolbar-tool-table-example' => 'Treść komórki',
+ 'wikieditor-toolbar-tool-table-preview' => 'PodglÄ…d',
+ 'wikieditor-toolbar-tool-table-insert' => 'Wstaw',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Anuluj',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Wstawianie tabeli o większej liczbie kolumn niż $1 nie jest możliwe z użyciem tego okna.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Nie wprowadziłeś poprawnej liczby wierszy i kolumn.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Nie można wstawić tabeli z zerową liczbą wierszy lub kolumn.',
+ 'wikieditor-toolbar-tool-replace' => 'Wyszukaj i zastÄ…p',
+ 'wikieditor-toolbar-tool-replace-title' => 'Wyszukaj i zamień',
+ 'wikieditor-toolbar-tool-replace-search' => 'Szukaj',
+ 'wikieditor-toolbar-tool-replace-replace' => 'ZastÄ…p przez',
+ 'wikieditor-toolbar-tool-replace-case' => 'Uwzględnij wielkość znaków',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Traktuj wyszukiwany ciąg jako wyrażenie regularne',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Znajdź następne',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Zastąp następne',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'ZastÄ…p wszystkie',
+ 'wikieditor-toolbar-tool-replace-close' => 'Zamknij',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Wyszukiwanego wzorca nie odnaleziono.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Wykonano $1 zamian.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Nie określiłeś niczego do wyszukania.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Wyrażenie regularne jest nieprawidłowe – $1',
+ 'wikieditor-toolbar-section-characters' => 'Znaki specjalne',
+ 'wikieditor-toolbar-characters-page-latin' => 'ÅaciÅ„skie',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'ÅaciÅ„skie – rozszerzony',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symbole',
+ 'wikieditor-toolbar-characters-page-greek' => 'Greckie',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cyrylica',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabskie',
+ 'wikieditor-toolbar-characters-page-persian' => 'Perskie',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebrajskie',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalski',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Syngaleskie',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gudźarackie',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tajskie',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laotańskie',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmerskie',
+ 'wikieditor-toolbar-section-help' => 'Pomoc',
+ 'wikieditor-toolbar-help-heading-description' => 'Opis',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Należy wpisać',
+ 'wikieditor-toolbar-help-heading-result' => 'Aby uzyskać',
+ 'wikieditor-toolbar-help-page-format' => 'Formatowanie',
+ 'wikieditor-toolbar-help-page-link' => 'Linki',
+ 'wikieditor-toolbar-help-page-heading' => 'Nagłówki',
+ 'wikieditor-toolbar-help-page-list' => 'Listy',
+ 'wikieditor-toolbar-help-page-file' => 'Pliki',
+ 'wikieditor-toolbar-help-page-reference' => 'Przypisy',
+ 'wikieditor-toolbar-help-page-discussion' => 'Dyskusja',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Pochyły',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Tekst pochyłą czcionką''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Tekst pochyłą czcionką</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Wytłuszczenie',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Tekst tłustą czcionką'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Tekst tłustą czcionką</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Wytłuszczenie i pochylenie',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Tekst tłustą pochyłą czcionką'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Tekst tłustą pochyłą czcionką</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Link wewnętrzny',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Tytuł strony|Opis linku]]<br />[[Tytuł strony]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Opis linku</a><br /><a href='#'>Tytuł strony</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Link zewnętrzny',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.przyklad.org Opis linku]<br />[http://www.przyklad.org]<br />http://www.przyklad.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Opis linku</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.przyklad.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Nagłówek drugiego poziomu',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Treść nagłówka ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Treść nagłówka</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Nagłówek trzeciego poziomu',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Treść nagłówka ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Treść nagłówka</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Nagłówek czwartego poziomu',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Treść nagłówka ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Treść nagłówka</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Nagłówek piątego poziomu',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Treść nagłówka =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Treść nagłówka</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista punktowana',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Pozycja listy<br />* Pozycja listy',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Pozycja listy</li><li>Pozycja listy</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista numerowana',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Pozycja listy<br /># Pozycja listy',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Pozycja listy</li><li>Pozycja listy</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Plik osadzony',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Przykład.png|thumb|Tekst podpisu]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Tekst podpisu</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Przypis',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Treść strony&lt;ref name="test"&gt; [http://www.przyklad.org Opis linku], dodatkowy tekst. &lt;/ref&gt;.',
+ 'wikieditor-toolbar-help-content-reference-result' => "Treść strony<sup><a href='#'>[1]</a></sup>.",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Kolejne użycie nazwanego przypisu',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Treść strony<sup><a href='#'>[1]</a></sup>.",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Wyświetl przypisy',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.przyklad.org' class='external text' href='#'>Opis linku</a>, dodatkowy tekst.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Podpis wraz z datÄ… i czasem',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nazwa użytkownika</a> (<a href='#' title='{{#special:mytalk}}'>dyskusja</a>) 15:54, 10 czerwca 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Podpis',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nazwa użytkownika</a> (<a href='#' title='{{#special:mytalk}}'>dyskusja</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Wcięcie',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Zwykły tekst<br />:Tekst wcięty<br />::Tekst wcięty',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Zwykły tekst<dl><dd>Tekst wcięty<dl><dd>Tekst wcięty</dd></dl></dd></dl>',
+);
+
+/** Piedmontese (Piemontèis)
+ * @author Borichèt
+ * @author Dragonòt
+ */
+$messages['pms'] = array(
+ 'wikieditor' => 'Antërfacia ëd modìfica avansà ëd wikitext',
+ 'wikieditor-desc' => "A dà n'antërfacia ëd modìfica estendìbil ëd wikitext e motobin ëd modoj ch'a dan ëd fonsionalità",
+ 'wikieditor-wikitext-tab' => 'Test Wiki',
+ 'wikieditor-loading' => 'Cariament',
+ 'wikieditor-preview-preference' => 'Abìlita la previsualisassion da part a part',
+ 'wikieditor-preview-tab' => 'Previsualisassion',
+ 'wikieditor-preview-changes-tab' => 'Cangiament',
+ 'wikieditor-preview-loading' => 'A caria ...',
+ 'wikieditor-previewDialog-preference' => 'Abilité le conversassion ëd preuva',
+ 'wikieditor-previewDialog-tab' => 'Previsualisassion',
+ 'wikieditor-previewDialog-loading' => 'A caria ...',
+ 'wikieditor-publish-preference' => 'Abìlita publicassion pass për pass',
+ 'wikieditor-publish-button-publish' => 'Pùblica',
+ 'wikieditor-publish-button-cancel' => 'Scancela',
+ 'wikieditor-publish-dialog-title' => 'Pùblica dzora {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => "Modìfica resumé (descriv curtament ij cambi ch'it l'has fàit)",
+ 'wikieditor-publish-dialog-minor' => 'Modìfiche pì cite',
+ 'wikieditor-publish-dialog-watch' => "Ten d'euj sta pàgina-sì",
+ 'wikieditor-publish-dialog-publish' => 'Pùblica',
+ 'wikieditor-publish-dialog-goback' => 'Torna andré',
+ 'wikieditor-template-editor-preference' => 'Abìlita le modìfiche basà su forma djë stamp wiki',
+ 'wikieditor-template-editor-dialog-title' => 'Modifiché lë stamp',
+ 'wikieditor-template-editor-dialog-submit' => 'Agiorné',
+ 'wikieditor-template-editor-dialog-cancel' => 'Scancela',
+ 'wikieditor-templates-preference' => 'Abilité lë sgnacament ëd jë stamp',
+ 'wikieditor-toc-preference' => 'Abìlita a scanucié la tàula dij contnù',
+ 'wikieditor-toc-show' => 'Mosta contnù',
+ 'wikieditor-toc-hide' => 'Stërma contnù',
+ 'wikieditor-toolbar' => "Bara d'utiss ëd modìfica",
+ 'wikieditor-toolbar-desc' => "Bara d'utiss ëd modìfica con dovrabilità ameliorà",
+ 'wikieditor-toolbar-preference' => "Ativé la bara d'utiss ameliorà",
+ 'wikieditor-toolbar-dialogs-preference' => "Ativé ij quàder ëd diàlogh për anserì anliure, tàule e d'àutr",
+ 'wikieditor-toolbar-hidesig' => 'Stërmé ël boton ëd firma ant le pàgine ëd lë spassi nominal prinsipal',
+ 'wikieditor-toolbar-loading' => 'Cariament...',
+ 'wikieditor-toolbar-tool-bold' => 'Grassèt',
+ 'wikieditor-toolbar-tool-bold-example' => 'Test an grassèt',
+ 'wikieditor-toolbar-tool-italic' => 'Corsiv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Test an corsiv',
+ 'wikieditor-toolbar-tool-ilink' => 'Anliura anterna',
+ 'wikieditor-toolbar-tool-ilink-example' => "Tìtol dl'anliura",
+ 'wikieditor-toolbar-tool-xlink' => 'Anliura esterna (dësmentié nen ël prefiss http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => "http://www.example.com tìtol dl'anliura",
+ 'wikieditor-toolbar-tool-link' => 'Anliura',
+ 'wikieditor-toolbar-tool-link-title' => "Anseriss n'anliura",
+ 'wikieditor-toolbar-tool-link-int' => 'A na pàgina wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Tìtol dla pàgina',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => "Tìtol dla pàgina o adrëssa dl'aragnà",
+ 'wikieditor-toolbar-tool-link-int-text' => "Test ëd l'anliura:",
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => "Ch'a buta ël test ch'a dovrìa esse mostrà",
+ 'wikieditor-toolbar-tool-link-ext' => "A na pàgina an sl'aragnà esterna",
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Anliura URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => "Test ëd l'anliura:",
+ 'wikieditor-toolbar-tool-link-insert' => "Anserì l'anliura",
+ 'wikieditor-toolbar-tool-link-cancel' => 'Scancelé',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'La pàgina a esist',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'La pàgina a esist pa',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Tìtol nen vàlid',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Anliura esterna',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "Verìfica ëd l'esistensa dla pàgina...",
+ 'wikieditor-toolbar-tool-link-int-invalid' => "Ël tìtol ch'a l'ha spessificà a va pa bin.",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "L'URL ch'a l'ha spessificà a smijërìa n'anliura a n'àutra pàgina wiki. Veul-lo fene n'anliura anterna?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Anliura anterna',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Anliura esterna',
+ 'wikieditor-toolbar-tool-link-empty' => "A l'ha anserì gnente al qual a-i peula esse n'anliura.",
+ 'wikieditor-toolbar-tool-file' => 'Archivi anserì',
+ 'wikieditor-toolbar-tool-file-example' => 'Esempi.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Arferiment',
+ 'wikieditor-toolbar-tool-reference-example' => 'Anserì ël test ëd la nòta an bass dla pàgina ambelessì',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Scancela',
+ 'wikieditor-toolbar-tool-reference-title' => "Anserì n'arferiment",
+ 'wikieditor-toolbar-tool-reference-insert' => 'Anserì',
+ 'wikieditor-toolbar-tool-reference-text' => "Test d'arferiment",
+ 'wikieditor-toolbar-tool-signature' => 'Signatura e dàita',
+ 'wikieditor-toolbar-section-advanced' => 'Avansà',
+ 'wikieditor-toolbar-tool-heading' => 'Antestassion',
+ 'wikieditor-toolbar-tool-heading-1' => 'Livel 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Livel 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Livel 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Livel 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Livel 5',
+ 'wikieditor-toolbar-tool-heading-example' => "Test ëd l'antestassion",
+ 'wikieditor-toolbar-group-format' => 'Formà',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista pontà',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Element ëd la lista pontà',
+ 'wikieditor-toolbar-tool-olist' => 'Lista numerà',
+ 'wikieditor-toolbar-tool-olist-example' => 'Element ëd la lista numerà',
+ 'wikieditor-toolbar-tool-indent' => 'Andentassion',
+ 'wikieditor-toolbar-tool-indent-example' => 'Linia andentà',
+ 'wikieditor-toolbar-tool-nowiki' => 'Pa gnun-e formatassion wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Anseriss ël test pa formatà ambelessì',
+ 'wikieditor-toolbar-tool-redirect' => 'Ridiression',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nòm ëd la pàgina ëd destinassion',
+ 'wikieditor-toolbar-tool-big' => 'Grand',
+ 'wikieditor-toolbar-tool-big-example' => 'Test grand',
+ 'wikieditor-toolbar-tool-small' => 'Cit',
+ 'wikieditor-toolbar-tool-small-example' => 'Test cit',
+ 'wikieditor-toolbar-tool-superscript' => 'Ìndes an àut',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Test butà an ìndes an àut',
+ 'wikieditor-toolbar-tool-subscript' => 'ÃŒndes an bass',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Test a ìndes an bass',
+ 'wikieditor-toolbar-group-insert' => 'Anserì',
+ 'wikieditor-toolbar-tool-gallery' => 'Galarìa ëd plance',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Esempi.jpg|Descrission1
+$1:Esempi.jpg|Descrission2',
+ 'wikieditor-toolbar-tool-newline' => 'A cap',
+ 'wikieditor-toolbar-tool-table' => 'Tàula',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! antestassion 1
+! antestassion 2
+! antestassion 3
+|-
+| linia 1, casela 1
+| linia 1, casela 2
+| linia 1, casela 3
+|-
+| linia 2, casela 1
+| linia 2, casela 2
+| linia 2, casela 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Test ëd la casela',
+ 'wikieditor-toolbar-tool-table-example-header' => "Test ëd l'antestassion",
+ 'wikieditor-toolbar-tool-table-title' => 'Anserì na tàula',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Linie',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Colòne',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => "Comprende la linia d'antestassion",
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stil con bordure',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Rende la tàula selessionàbil',
+ 'wikieditor-toolbar-tool-table-example' => 'Test ëd la casela',
+ 'wikieditor-toolbar-tool-table-preview' => 'Previsualisassion',
+ 'wikieditor-toolbar-tool-table-insert' => 'Anserì',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Scancelé',
+ 'wikieditor-toolbar-tool-table-toomany' => "Anserì na tàula con pì che $1 casele a l'é nen possìbil con cost utiss.",
+ 'wikieditor-toolbar-tool-table-invalidnumber' => "A l'ha butà un nùmer ëd linie o colòne nen bon.",
+ 'wikieditor-toolbar-tool-table-zero' => 'A peul pa anserì na tàula sensa gnun-a linia o colòna',
+ 'wikieditor-toolbar-tool-replace' => 'Sërché e rampiassé',
+ 'wikieditor-toolbar-tool-replace-title' => 'Sërché e rampiassé',
+ 'wikieditor-toolbar-tool-replace-search' => 'Sërché:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Rampiassé con:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Fé corësponde majùscole e minùscole',
+ 'wikieditor-toolbar-tool-replace-regex' => "Traté la sequensa d'arserca 'me n'espression regolar",
+ 'wikieditor-toolbar-tool-replace-button-findnext' => "Trové col ch'a-i ven dòp",
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => "Rampiassé col ch'a-i ven dòp",
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Rampiassé tut',
+ 'wikieditor-toolbar-tool-replace-close' => 'Sara',
+ 'wikieditor-toolbar-tool-replace-nomatch' => "Soa arserca a l'ha nen trovà 'd corëspondense.",
+ 'wikieditor-toolbar-tool-replace-success' => '$1 sostitussion fàite.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => "A l'ha butà gnun test da arserché.",
+ 'wikieditor-toolbar-tool-replace-invalidregex' => "L'espression regolar ch'a l'ha anserì a l'é nen bon-a: $1",
+ 'wikieditor-toolbar-section-characters' => 'Caràter speciaj',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin ëspantià',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Sìmboj',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grech',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Sirìlich',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Àrabo',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persian',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ebréo',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singalèis',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Agiut',
+ 'wikieditor-toolbar-help-heading-description' => 'Descrission',
+ 'wikieditor-toolbar-help-heading-syntax' => "Lòn ch'a bat",
+ 'wikieditor-toolbar-help-heading-result' => "Lòn ch'a oten",
+ 'wikieditor-toolbar-help-page-format' => 'Modlage',
+ 'wikieditor-toolbar-help-page-link' => 'Anliure',
+ 'wikieditor-toolbar-help-page-heading' => 'Antestassion',
+ 'wikieditor-toolbar-help-page-list' => 'Liste',
+ 'wikieditor-toolbar-help-page-file' => 'Archivi',
+ 'wikieditor-toolbar-help-page-reference' => 'Arferiment',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discussion',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Corsiv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Test corsiv''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Test corsiv</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Grassèt',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Test an grassèt'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Test an grassèt</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Grassèt &amp; corsiv',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Test an grassèt &amp; corsiv'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Test an grassèt &amp; corsiv</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Anliura interna',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => "[[Tìtol dla pàgina|Test ëd l'anliura]]<br />[[Tìtol dla pàgina]]",
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Test ëd l'anliura</a><br /><a href='#'>Tìtol dla pàgina</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Anliura esterna',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => "[http://www.example.org Test ëd l'anliura]<br />[http://www.example.org]<br />http://www.example.org",
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Test ëd l'anliura</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Antestassion ëd 2<sup>nd</sup> livel',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => "== Test ëd l'antestassion ==",
+ 'wikieditor-toolbar-help-content-heading2-result' => "<h2>Test ëd l'antestassion</h2>",
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Antestassion ëd 3<sup>rs</sup> livel',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => "=== Test ëd l'antestassion ===",
+ 'wikieditor-toolbar-help-content-heading3-result' => "<h3>Test ëd l'antestassion</h3>",
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Antestassion ëd 4<sup>rt</sup> livel',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => "==== Test ëd l'antestassion ====",
+ 'wikieditor-toolbar-help-content-heading4-result' => "<h4>Test ëd l'antestassion</h4>",
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Antestassion ëd 5<sup>nt</sup> livel',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => "===== Test ëd l'antestassion =====",
+ 'wikieditor-toolbar-help-content-heading5-result' => "<h5>Test ëd l'antestassion</h5>",
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista pontà',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Element ëd la lista<br />* Element ëd la lista',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Element ëd la lista</li><li>Element ëd la lista</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista numerà',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Element ëd la lista<br /># Element ëd la lista',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Element ëd la lista</li><li>Element ëd la lista</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Archivi anserì',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Test dël tìtol]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Test mostrà' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Test mostrà</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Arferiment',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Test ëd dla pàgina.&lt;ref name="test"&gt;[http://www.example.org Test dël colegament], test adissional.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Test ëd la pàgina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Usagi adissional dël midem arferiment',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Test ëd la pàgina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Visualisa arferiment',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Test dël colegament</a>, test adissional.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Firma con timestamp',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nòm utent</a> (<a href='#' title='{{#special:mytalk}}'>discussion</a>) 15:54, 10 giugn 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Firma',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nòm utent</a> (<a href='#' title='{{#special:mytalk}}'>discussion</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indenta',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Test normal<br />:Test indentà<br />::Test indentà',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Test normal<dl><dd>Test indentà<dl><dd>Test indentà</dd></dl></dd></dl>',
+);
+
+/** Pontic (Ποντιακά) */
+$messages['pnt'] = array(
+ 'wikieditor-toolbar-loading' => "ΦοÏτών'...",
+ 'wikieditor-toolbar-tool-big-example' => 'ΤÏανόν κείμενον',
+ 'wikieditor-toolbar-characters-page-ipa' => 'ΔΦΑ',
+ 'wikieditor-toolbar-characters-page-telugu' => 'ΤελοÏγκου',
+ 'wikieditor-toolbar-help-content-signature-description' => 'ΥπογÏαφή',
+);
+
+/** Pashto (پښتو)
+ * @author Ahmed-Najib-Biabani-Ibrahimkhel
+ */
+$messages['ps'] = array(
+ 'wikieditor' => 'د پرمختللی ويکي متن د سمون ليدنمخ',
+ 'wikieditor-wikitext-tab' => 'ويکي متن',
+ 'wikieditor-loading' => 'د برسÛرÛدو په حال Ú©Û',
+ 'wikieditor-preview-preference' => 'څنګ په څنګ مخليدنه چارنده کول',
+ 'wikieditor-preview-tab' => 'مخليدنه',
+ 'wikieditor-preview-changes-tab' => 'بدلونونه',
+ 'wikieditor-preview-loading' => 'د برسÛرÛدلو په حال Ú©Û...',
+ 'wikieditor-previewDialog-tab' => 'مخليدنه',
+ 'wikieditor-previewDialog-loading' => 'د برسÛرÛدلو په حال Ú©Û...',
+ 'wikieditor-publish-preference' => 'ګام په ګام خپرÛدنه چارنده کول',
+ 'wikieditor-publish-button-publish' => 'خپرول',
+ 'wikieditor-publish-button-cancel' => 'ناګارل',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}} Ú©Û Ø®Ù¾Ø±ÙˆÙ„',
+ 'wikieditor-publish-dialog-summary' => 'د سمون لنډيز (په لنډه توګه د خپلو بدلونونو څرګندونه ÙˆÚ©Ú“Û):',
+ 'wikieditor-publish-dialog-minor' => 'وړوکی سمون',
+ 'wikieditor-publish-dialog-watch' => 'همدا مخ کتل',
+ 'wikieditor-publish-dialog-publish' => 'خپرول',
+ 'wikieditor-publish-dialog-goback' => 'پر شا تلل',
+ 'wikieditor-template-editor-dialog-title' => 'Ú©ÙŠÙ†Ú‰Û Ø³Ù…ÙˆÙ„',
+ 'wikieditor-template-editor-dialog-submit' => 'اوسمهالول',
+ 'wikieditor-template-editor-dialog-cancel' => 'ناګارل',
+ 'wikieditor-templates-preference' => 'Ú©ÙŠÙ†Ú‰Û ØºÚول چارنده کول',
+ 'wikieditor-toc-show' => 'Ù…ÛÙ†Úپانګه ښکاره کول',
+ 'wikieditor-toc-hide' => 'Ù…ÛÙ†Úپانګه پټول',
+ 'wikieditor-toolbar' => 'د سمون توکپټه',
+ 'wikieditor-toolbar-loading' => 'د برسÛرÛدلو په حال Ú©Û...',
+ 'wikieditor-toolbar-tool-bold' => 'زغرد',
+ 'wikieditor-toolbar-tool-bold-example' => 'زغرد متن',
+ 'wikieditor-toolbar-tool-italic' => 'رÛوند',
+ 'wikieditor-toolbar-tool-italic-example' => 'د رÛوندليک متن',
+ 'wikieditor-toolbar-tool-ilink' => 'Ú©ÙˆØ±Ù†Û ØªÚ“Ù†Ù‡',
+ 'wikieditor-toolbar-tool-ilink-example' => 'د ØªÚ“Ù†Û Ø³Ø±Ù„ÙŠÚ©',
+ 'wikieditor-toolbar-tool-xlink' => 'Ø¨Ø§Ù†Ø¯Ù†Û ØªÚ“Ù†Ù‡ (د http:// مختاړی مه Ù‡Ûروی)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com د ØªÚ“Ù†Û Ø³Ø±Ù„ÙŠÚ©',
+ 'wikieditor-toolbar-tool-link' => 'تړنه',
+ 'wikieditor-toolbar-tool-link-title' => 'تړنه ورټومبل',
+ 'wikieditor-toolbar-tool-link-int' => 'د ويکي يو مخ ته',
+ 'wikieditor-toolbar-tool-link-int-target' => 'د Ù…ÙˆØ®Û Ù…Ø® يا انټرنټي پته:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'د مخ سرليک يا URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'د ښکارÛدلو متن:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'د ښکارÛدلو متن',
+ 'wikieditor-toolbar-tool-link-ext' => 'د جال يوه باندني مخ ته',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'د ØªÚ“Ù†Û URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'د ØªÚ“Ù†Û Ù…ØªÙ†:',
+ 'wikieditor-toolbar-tool-link-insert' => 'تړنه ورټومبل',
+ 'wikieditor-toolbar-tool-link-cancel' => 'ناګارل',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Ù¾Ø¯Û Ù†ÙˆÙ… مخ شته',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Ù¾Ø¯Û Ù†ÙˆÙ… مخ نشته',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ناسم سرليک',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ø¨Ø§Ù†Ø¯Ù†Û ØªÚ“Ù†Ù‡',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'د مخ د شتون څارنه...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Ø³ØªØ§Ø³Û Úانګړی شوی سرليک سم نه وو.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Ú©ÙˆØ±Ù†Û ØªÚ“Ù†Ù‡',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ø¨Ø§Ù†Ø¯Ù†Û ØªÚ“Ù†Ù‡',
+ 'wikieditor-toolbar-tool-file' => 'خښه Ø´ÙˆÛ Ø¯ÙˆØªÙ†Ù‡',
+ 'wikieditor-toolbar-tool-reference' => 'سرچينه',
+ 'wikieditor-toolbar-tool-reference-example' => 'د پايڅوړ متن دلته وليکÛ',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'ناګارل',
+ 'wikieditor-toolbar-tool-reference-title' => 'سرچينه ورګډول',
+ 'wikieditor-toolbar-tool-reference-insert' => 'ورټومبل',
+ 'wikieditor-toolbar-tool-reference-text' => 'د Ø³Ø±Ú†ÙŠÙ†Û Ù…ØªÙ†',
+ 'wikieditor-toolbar-tool-signature' => 'لاسليک او د وخت ټاپه',
+ 'wikieditor-toolbar-section-advanced' => 'پرمختللی',
+ 'wikieditor-toolbar-tool-heading' => 'سرليک',
+ 'wikieditor-toolbar-tool-heading-1' => 'Û± Ú©Ú†Ù‡',
+ 'wikieditor-toolbar-tool-heading-2' => 'Û² Ú©Ú†Ù‡',
+ 'wikieditor-toolbar-tool-heading-3' => 'Û³ Ú©Ú†Ù‡',
+ 'wikieditor-toolbar-tool-heading-4' => 'Û´ Ú©Ú†Ù‡',
+ 'wikieditor-toolbar-tool-heading-5' => 'Ûµ Ú©Ú†Ù‡',
+ 'wikieditor-toolbar-tool-heading-example' => 'د سرليک متن',
+ 'wikieditor-toolbar-group-format' => 'بڼه',
+ 'wikieditor-toolbar-tool-ulist' => 'Ú«ÙˆÙ„Û Ø¯Ø§Ø±Ù‡ لړليک',
+ 'wikieditor-toolbar-tool-ulist-example' => 'د Ú«ÙˆÙ„Û Ø¯Ø§Ø±Ù‡ لړليک توکی',
+ 'wikieditor-toolbar-tool-olist' => 'شمÛر لرونکی لړليک',
+ 'wikieditor-toolbar-tool-redirect-example' => 'د هدÙÙŠ مخ نوم',
+ 'wikieditor-toolbar-tool-big' => 'لوی',
+ 'wikieditor-toolbar-tool-big-example' => 'لوی متن',
+ 'wikieditor-toolbar-tool-small' => 'وړوکی',
+ 'wikieditor-toolbar-tool-small-example' => 'وړوکی متن',
+ 'wikieditor-toolbar-tool-superscript' => 'جګليک',
+ 'wikieditor-toolbar-tool-superscript-example' => 'د جګليک متن',
+ 'wikieditor-toolbar-tool-subscript' => 'ټيټليک',
+ 'wikieditor-toolbar-tool-subscript-example' => 'د ټيټليک متن',
+ 'wikieditor-toolbar-group-insert' => 'ورټومبل',
+ 'wikieditor-toolbar-tool-gallery' => 'د انÚورونو انÚورتون',
+ 'wikieditor-toolbar-tool-newline' => 'Ù†ÙˆÛ Ú©Ø±ÚšÙ‡',
+ 'wikieditor-toolbar-tool-table' => 'لښتيال',
+ 'wikieditor-toolbar-tool-table-example-header' => 'د سرليک متن',
+ 'wikieditor-toolbar-tool-table-title' => 'لښتيال ورټومبل',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'ليکÛ',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'ستنÛ',
+ 'wikieditor-toolbar-tool-table-sortable' => 'لښتيال د اوډون ÙˆÚ“ ګرÚول',
+ 'wikieditor-toolbar-tool-table-example' => 'بÛÙ„Ú«Ù‡',
+ 'wikieditor-toolbar-tool-table-preview' => 'مخليدنه',
+ 'wikieditor-toolbar-tool-table-insert' => 'ورټومبل',
+ 'wikieditor-toolbar-tool-table-cancel' => 'ناګارل',
+ 'wikieditor-toolbar-tool-replace' => 'پلټل او Úايناستول',
+ 'wikieditor-toolbar-tool-replace-title' => 'پلټل او Úايناستول',
+ 'wikieditor-toolbar-tool-replace-search' => 'پلټنه د:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Úايناستول سره د:',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'بل موندل',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'راتلونکی Úايناستول',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'ټول Úايناستول',
+ 'wikieditor-toolbar-tool-replace-close' => 'تړل',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Ø³ØªØ§Ø³Û Ù¾Ù„Ù¼Ù†Ù‡ د Ù‡ÛÚ… کوم شي سره اړونده نه وه.',
+ 'wikieditor-toolbar-section-characters' => 'Úانګړي توري',
+ 'wikieditor-toolbar-characters-page-latin' => 'لاتين',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'غÚÛدلی لاتين',
+ 'wikieditor-toolbar-characters-page-ipa' => 'ن.غ.ا',
+ 'wikieditor-toolbar-characters-page-symbols' => 'سمبولونه',
+ 'wikieditor-toolbar-characters-page-greek' => 'يوناني',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'سرÛليک',
+ 'wikieditor-toolbar-characters-page-arabic' => 'عربي',
+ 'wikieditor-toolbar-characters-page-persian' => 'پارسي',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'عبراني',
+ 'wikieditor-toolbar-characters-page-bangla' => 'بنګالي',
+ 'wikieditor-toolbar-characters-page-telugu' => 'تÛلوګو',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'سÛنهالي',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'ګجراتي',
+ 'wikieditor-toolbar-characters-page-thai' => 'تايلنډي',
+ 'wikieditor-toolbar-characters-page-lao' => 'لاوي',
+ 'wikieditor-toolbar-characters-page-khmer' => 'خمري',
+ 'wikieditor-toolbar-section-help' => 'لارښود',
+ 'wikieditor-toolbar-help-heading-description' => 'څرګندونه',
+ 'wikieditor-toolbar-help-heading-syntax' => 'هغه Ú…Ù‡ Ú†Û Ù„ÙŠÚ©Û',
+ 'wikieditor-toolbar-help-heading-result' => 'هغه Ú…Ù‡ Ú†Û Ù„Ø§Ø³ ته راوړÛ',
+ 'wikieditor-toolbar-help-page-link' => 'تړنÛ',
+ 'wikieditor-toolbar-help-page-heading' => 'سرليکونه',
+ 'wikieditor-toolbar-help-page-list' => 'لړليکونه',
+ 'wikieditor-toolbar-help-page-file' => 'دوتنÛ',
+ 'wikieditor-toolbar-help-page-reference' => 'سرچينÛ',
+ 'wikieditor-toolbar-help-page-discussion' => 'Ø®Ø¨Ø±Û Ø§ØªØ±Û',
+ 'wikieditor-toolbar-help-content-italic-description' => 'رÛوند',
+ 'wikieditor-toolbar-help-content-italic-syntax' => 'د رÛوندليک متن',
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>رÛوند متن</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'زغرد',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''زغرد متن'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>زغرد متن</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'زغرد او رÛوندليک',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''زغرد او رÛوند متن'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>زغرد او رÛوند متن</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Ú©ÙˆØ±Ù†Û ØªÚ“Ù†Ù‡',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[د مخ سرليک|د ØªÚ“Ù†Û Ù†ÙˆÙ…]]<br />[[د مخ سرليک]]',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ø¨Ø§Ù†Ø¯Ù†Û ØªÚ“Ù†Ù‡',
+ 'wikieditor-toolbar-help-content-heading2-description' => 'د Ø¯ÙˆÙŠÙ…Û Ú©Ú†Û Ø³Ø±Ù„ÙŠÚ©',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== د سرليک متن ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>د سرليک متن</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'د Ø¯Ø±ÙŠÙ…Û Ú©Ú†Û Ø³Ø±Ù„ÙŠÚ©',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== د سرليک متن ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>د سرليک متن</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'د Ú…Ù„ÙˆØ±Ù…Û Ú©Ú†Û Ø³Ø±Ù„ÙŠÚ©',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== د سرليک متن ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>د سرليک متن</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'د پينÚÙ…Û Ú©Ú†Û Ø³Ø±Ù„ÙŠÚ©',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== د سرليک متن =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>د سرليک متن</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Ú«ÙˆÙ„Û Ø¯Ø§Ø±Ù‡ لړليک',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* د لړليک توکی<br />* د لړليک توکی',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>د لړليک توکی</li><li>د لړليک توکی</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'شمÛر لرونکی لړليک',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# د لړليک توکی<br /># د لړليک توکی',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>د لړليک توکی</li><li>د لړليک توکی</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'خښه Ø´ÙˆÛ Ø¯ÙˆØªÙ†Ù‡',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|د څرګندولو متن]]',
+ 'wikieditor-toolbar-help-content-reference-description' => 'سرچينه',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'د مخ متن.&lt;ref name="test"&gt;[http://www.example.org د ØªÚ“Ù†Û Ù…ØªÙ†], اضاÙÙŠ متن.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "د مخ متن.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'د سرچينو اضاÙÙŠ کارÛدنه',
+ 'wikieditor-toolbar-help-content-rereference-result' => "د مخ متن.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Ø³Ø±Ú†ÙŠÙ†Û ÚšÚ©Ø§Ø±Ù‡ کول',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>د ØªÚ“Ù†Û Ù…ØªÙ†</a>, اضاÙÙŠ متن.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'لاسليک د وخت د Ù¼Ø§Ù¾Û Ø³Ø±Ù‡',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>کارن نوم</a> (<a href='#' title='{{#special:mytalk}}'>Ø®Ø¨Ø±Û Ø§ØªØ±Û</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'لاسليک',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>کارن نوم</a> (<a href='#' title='{{#special:mytalk}}'>Ø®Ø¨Ø±Û Ø§ØªØ±Û</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'سرتشه',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'عادي متن<br />:سرتشÛدلی متن<br />::سرتشÛدلی متن',
+ 'wikieditor-toolbar-help-content-indent-result' => 'عادي متن<dl><dd>سرتشÛدلی متن<dl><dd>سرتشÛدلی متن</dd></dl></dd></dl>',
+);
+
+/** Portuguese (Português)
+ * @author 555
+ * @author Giro720
+ * @author Hamilton Abreu
+ * @author Luckas Blade
+ * @author Malafaya
+ */
+$messages['pt'] = array(
+ 'wikieditor' => 'Interface avançada de edição de texto wiki',
+ 'wikieditor-desc' => 'Fornece uma interface extensível de edição de texto wiki e vários módulos funcionais',
+ 'wikieditor-wikitext-tab' => 'Texto Wiki',
+ 'wikieditor-loading' => 'A carregar',
+ 'wikieditor-preview-preference' => 'Possibilitar antevisão lado a lado',
+ 'wikieditor-preview-tab' => 'Antevisão',
+ 'wikieditor-preview-changes-tab' => 'Alterações',
+ 'wikieditor-preview-loading' => 'A carregar...',
+ 'wikieditor-previewDialog-preference' => 'Activar o diálogo de antevisão',
+ 'wikieditor-previewDialog-tab' => 'Antevisão',
+ 'wikieditor-previewDialog-loading' => 'A carregar...',
+ 'wikieditor-publish-preference' => 'Possibilitar publicação passo a passo',
+ 'wikieditor-publish-button-publish' => 'Publicar',
+ 'wikieditor-publish-button-cancel' => 'Cancelar',
+ 'wikieditor-publish-dialog-title' => 'Publicar na {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Resumo de edição (breve descrição das suas alterações):',
+ 'wikieditor-publish-dialog-minor' => 'Edição menor',
+ 'wikieditor-publish-dialog-watch' => 'Vigiar esta página',
+ 'wikieditor-publish-dialog-publish' => 'Publicar',
+ 'wikieditor-publish-dialog-goback' => 'Voltar',
+ 'wikieditor-template-editor-preference' => 'Possibilitar edição de predefinições com base em formulários',
+ 'wikieditor-template-editor-dialog-title' => 'Editar predefinição',
+ 'wikieditor-template-editor-dialog-submit' => 'Actualizar',
+ 'wikieditor-template-editor-dialog-cancel' => 'Cancelar',
+ 'wikieditor-templates-preference' => 'Possibilitar a recolha e expansão de predefinições',
+ 'wikieditor-toc-preference' => 'Possibilitar tabela de conteúdo navegável',
+ 'wikieditor-toc-show' => 'Mostrar conteúdo',
+ 'wikieditor-toc-hide' => 'Esconder conteúdo',
+ 'wikieditor-toolbar' => 'Barra de ferramentas de edição',
+ 'wikieditor-toolbar-desc' => 'Barra de ferramentas de edição com usabilidade melhorada',
+ 'wikieditor-toolbar-preference' => 'Activar a barra de ferramentas de edição melhorada',
+ 'wikieditor-toolbar-dialogs-preference' => 'Possibilitar diálogos de inserção de links, tabelas e outros',
+ 'wikieditor-toolbar-hidesig' => 'Esconder o botão da assinatura nas páginas do espaço nominal principal',
+ 'wikieditor-toolbar-loading' => 'A carregar...',
+ 'wikieditor-toolbar-tool-bold' => 'Negrito',
+ 'wikieditor-toolbar-tool-bold-example' => 'Texto a negrito',
+ 'wikieditor-toolbar-tool-italic' => 'Itálico',
+ 'wikieditor-toolbar-tool-italic-example' => 'Texto em itálico',
+ 'wikieditor-toolbar-tool-ilink' => 'Link interno',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Título do link',
+ 'wikieditor-toolbar-tool-xlink' => 'Link externo (lembre-se do prefixo http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com título do link',
+ 'wikieditor-toolbar-tool-link' => 'Link',
+ 'wikieditor-toolbar-tool-link-title' => 'Inserir um link',
+ 'wikieditor-toolbar-tool-link-int' => 'Para uma página wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Página ou URL de destino:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Título ou URL da página',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Texto a apresentar:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Introduza o texto a apresentar',
+ 'wikieditor-toolbar-tool-link-ext' => 'Para uma página externa na internet',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL do link:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Texto do link:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Inserir link',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'A página existe',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'A página não existe',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Título inválido',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Link externo',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'A verificar se a página existe...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'O título que especificou é inválido.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'A URL que especificou parece ser um link para outra página da wiki. Deseja torná-la num link interno?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Link interno',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Link externo',
+ 'wikieditor-toolbar-tool-link-empty' => 'Não introduziu o destino do link.',
+ 'wikieditor-toolbar-tool-file' => 'Ficheiro incorporado',
+ 'wikieditor-toolbar-tool-file-example' => 'Exemplo.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referência',
+ 'wikieditor-toolbar-tool-reference-example' => 'Inserir texto da referência aqui',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-reference-title' => 'Inserir referência',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Inserir',
+ 'wikieditor-toolbar-tool-reference-text' => 'Texto da referência',
+ 'wikieditor-toolbar-tool-signature' => 'Assinatura, hora e data',
+ 'wikieditor-toolbar-section-advanced' => 'Edição avançada',
+ 'wikieditor-toolbar-tool-heading' => 'Cabeçalho',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nível 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nível 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nível 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nível 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nível 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Texto de cabeçalho',
+ 'wikieditor-toolbar-group-format' => 'Formatar',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista com marcadores',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Elemento de lista com marcas',
+ 'wikieditor-toolbar-tool-olist' => 'Lista numerada',
+ 'wikieditor-toolbar-tool-olist-example' => 'Elemento de lista numerada',
+ 'wikieditor-toolbar-tool-indent' => 'Indentação',
+ 'wikieditor-toolbar-tool-indent-example' => 'Linha indentada',
+ 'wikieditor-toolbar-tool-nowiki' => 'Sem formatação wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Inserir aqui texto sem formatação',
+ 'wikieditor-toolbar-tool-redirect' => 'Redireccionamento',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nome da página de destino',
+ 'wikieditor-toolbar-tool-big' => 'Grande',
+ 'wikieditor-toolbar-tool-big-example' => 'Texto grande',
+ 'wikieditor-toolbar-tool-small' => 'Pequeno',
+ 'wikieditor-toolbar-tool-small-example' => 'Texto pequeno',
+ 'wikieditor-toolbar-tool-superscript' => 'Sobrescrito',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Texto em sobrescrito',
+ 'wikieditor-toolbar-tool-subscript' => 'Subscrito',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Texto em subscrito',
+ 'wikieditor-toolbar-group-insert' => 'Inserir',
+ 'wikieditor-toolbar-tool-gallery' => 'Galeria de imagens',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Exemplo1.jpg|Legenda1
+$1:Exemplo2.jpg|Legenda2',
+ 'wikieditor-toolbar-tool-newline' => 'Nova linha',
+ 'wikieditor-toolbar-tool-table' => 'Tabela',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! cabeçalho 1
+! cabeçalho 2
+! cabeçalho 3
+|-
+| linha 1, coluna 1
+| linha 1, coluna 2
+| linha 1, coluna 3
+|-
+| linha 2, coluna 1
+| linha 2, coluna 2
+| linha 2, coluna 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Texto da célula',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Texto do cabeçalho',
+ 'wikieditor-toolbar-tool-table-title' => 'Inserir tabela',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Linhas',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Colunas',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Adicionar linha de cabeçalho',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Estilo com margens',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tornar a tabela ordenável',
+ 'wikieditor-toolbar-tool-table-example' => 'Exemplo',
+ 'wikieditor-toolbar-tool-table-preview' => 'Antevisão',
+ 'wikieditor-toolbar-tool-table-insert' => 'Inserir',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Neste diálogo não é possível inserir uma tabela com mais de $1 colunas.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Não introduziu um número válido de linhas ou colunas.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Não pode inserir uma tabela com zero linhas ou colunas',
+ 'wikieditor-toolbar-tool-replace' => 'Pesquisar e substituir',
+ 'wikieditor-toolbar-tool-replace-title' => 'Pesquisar e substituir',
+ 'wikieditor-toolbar-tool-replace-search' => 'Pesquisar:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Substituir por:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Distinguir maiúsculas de minúsculas',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Tratar texto de busca como uma expressão regular',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Procurar próximo',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Substituir próximo',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Substituir todos',
+ 'wikieditor-toolbar-tool-replace-close' => 'Fechar',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'A sua pesquisa não produziu resultados.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Substituições realizadas: $1.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Não introduziu nada para pesquisar.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => "A expressão regular ''(regex)'' que introduziu é inválida: $1",
+ 'wikieditor-toolbar-section-characters' => 'Caracteres especiais',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latim',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latim expandido',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Símbolos',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grego',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirílico',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Ãrabe',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persa',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebraico',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugo',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Cingalês',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Guzerate',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tailandês',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laociano',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Cambojano',
+ 'wikieditor-toolbar-section-help' => 'Ajuda',
+ 'wikieditor-toolbar-help-heading-description' => 'Descrição',
+ 'wikieditor-toolbar-help-heading-syntax' => 'O que escreve',
+ 'wikieditor-toolbar-help-heading-result' => 'Resultado',
+ 'wikieditor-toolbar-help-page-format' => 'Formatação',
+ 'wikieditor-toolbar-help-page-link' => 'Links',
+ 'wikieditor-toolbar-help-page-heading' => 'Títulos de secções',
+ 'wikieditor-toolbar-help-page-list' => 'Listas',
+ 'wikieditor-toolbar-help-page-file' => 'Ficheiros',
+ 'wikieditor-toolbar-help-page-reference' => 'Referências',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discussão',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Itálico',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Texto em itálico''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Texto em itálico</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Negrito',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Texto a negrito'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Texto a negrito</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Negrito e itálico',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Texto em negrito e itálico'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Texto em negrito e itálico</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Link interno',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Título da página|texto do link]]<br />[[Título da página]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Texto do link</a><br /><a href='#'>Título da página</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Link externo',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.exemplo.org Texto do link]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Texto do link</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Subtítulo de nível 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Subtítulo ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Subtítulo</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Subtítulo de nível 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Subtítulo ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Subtítulo</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Subtítulo de nível 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Subtítulo ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Subtítulo</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Subtítulo de nível 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Subtítulo =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Subtítulo</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista com marcadores',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Elemento de lista<br />* Elemento de lista',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Elemento de lista</li><li>Elemento de lista</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista numerada',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Elemento de lista<br /># Elemento de lista',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Elemento de lista</li><li>Elemento de lista</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Ficheiro incorporado',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Exemplo.png|thumb|Texto da legenda]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Legenda' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Aumentar' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Legenda</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referência',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Texto da página.&lt;ref name="teste"&gt;[http://www.exemplo.org Texto do link], texto adicional.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Texto da página.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Reutilização da mesma referência',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Texto da página.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Mostrar referências',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><a title='' href='#'><b>^</b></a> <a rel='nofollow' title=\"http://www.exemplo.org\" class='external text' href='#'>Texto do link</a>, texto adicional.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Assinatura com data e hora',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nome de utilizador</a> (<a href='#' title='{{#special:mytalk}}'>discussão</a>) 15h54min de 10 de junho de 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Assinatura',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nome de utilizador</a> (<a href='#' title='{{#special:mytalk}}'>discussão</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indentação',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Texto normal<br />:Texto indentado<br />::Texto indentado',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Texto normal<dl><dd>Texto indentado<dl><dd>Texto indentado</dd></dl></dd></dl>',
+);
+
+/** Brazilian Portuguese (Português do Brasil)
+ * @author 555
+ * @author Daemorris
+ * @author Everton137
+ * @author Giro720
+ * @author Hamilton Abreu
+ * @author Helder.wiki
+ * @author Heldergeovane
+ * @author Lijealso
+ * @author Luckas Blade
+ */
+$messages['pt-br'] = array(
+ 'wikieditor' => 'Interface avançada de edição de wikitexto',
+ 'wikieditor-desc' => 'Fornece uma interface extensível de edição de textowiki e vários módulos funcionais',
+ 'wikieditor-wikitext-tab' => 'Wikitexto',
+ 'wikieditor-loading' => 'Carregando',
+ 'wikieditor-preview-preference' => 'Habilitar a previsão lado-a-lado',
+ 'wikieditor-preview-tab' => 'Pré-visualização',
+ 'wikieditor-preview-changes-tab' => 'Alterações',
+ 'wikieditor-preview-loading' => 'Carregando...',
+ 'wikieditor-previewDialog-preference' => 'Ativar o diálogo de previsão',
+ 'wikieditor-previewDialog-tab' => 'Pré-visualização',
+ 'wikieditor-previewDialog-loading' => 'Carregando...',
+ 'wikieditor-publish-preference' => 'Ativar publicação passo-a-passo',
+ 'wikieditor-publish-button-publish' => 'Publicar',
+ 'wikieditor-publish-button-cancel' => 'Cancelar',
+ 'wikieditor-publish-dialog-title' => 'Publicar na {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Sumário de edição (breve descrição das suas alterações):',
+ 'wikieditor-publish-dialog-minor' => 'Edição menor',
+ 'wikieditor-publish-dialog-watch' => 'Vigiar esta página',
+ 'wikieditor-publish-dialog-publish' => 'Publicar',
+ 'wikieditor-publish-dialog-goback' => 'Voltar',
+ 'wikieditor-template-editor-preference' => 'Possibilitar edição de predefinições com base em formulários',
+ 'wikieditor-template-editor-dialog-title' => 'Editar predefinição',
+ 'wikieditor-template-editor-dialog-submit' => 'Atualizar',
+ 'wikieditor-template-editor-dialog-cancel' => 'Cancelar',
+ 'wikieditor-templates-preference' => 'Habilitar predefinições colapsáveis',
+ 'wikieditor-toc-preference' => 'Habilita tabela de conteúdo navegável',
+ 'wikieditor-toc-show' => 'Mostrar conteúdo',
+ 'wikieditor-toc-hide' => 'Esconder conteúdo',
+ 'wikieditor-toolbar' => 'Barra de ferramentas de edição',
+ 'wikieditor-toolbar-desc' => 'Barra de ferramentas de edição com usabilidade melhorada',
+ 'wikieditor-toolbar-preference' => 'Ativar a barra de ferramentas de edição melhorada',
+ 'wikieditor-toolbar-dialogs-preference' => 'Possibilitar diálogos de inserção de ligações, tabelas e outros',
+ 'wikieditor-toolbar-hidesig' => 'Esconder o botão da assinatura nas páginas do espaço nominal principal',
+ 'wikieditor-toolbar-loading' => 'Carregando...',
+ 'wikieditor-toolbar-tool-bold' => 'Negrito',
+ 'wikieditor-toolbar-tool-bold-example' => 'Texto em negrito',
+ 'wikieditor-toolbar-tool-italic' => 'Itálico',
+ 'wikieditor-toolbar-tool-italic-example' => 'Texto em itálico',
+ 'wikieditor-toolbar-tool-ilink' => 'Link interno',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Título do link',
+ 'wikieditor-toolbar-tool-xlink' => 'Link externo (lembre-se do prefixo http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com título do link',
+ 'wikieditor-toolbar-tool-link' => 'Link',
+ 'wikieditor-toolbar-tool-link-title' => 'Inserir link',
+ 'wikieditor-toolbar-tool-link-int' => 'Para uma página wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Página ou URL de destino:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Título ou URL da página',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Texto de exibição:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Insira o texto a ser exibido',
+ 'wikieditor-toolbar-tool-link-ext' => 'À uma página web externa',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL do link:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Título do link:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Inserir link',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'A página existe',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'A página não existe',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Título inválido',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Link externo',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Verificando existência da página...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'O título que você especificou é inválido.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'A URL que você especificou parece ser um link para outra página do wiki. Você deseja usar como link interno?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Link interno',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Link externo',
+ 'wikieditor-toolbar-tool-link-empty' => 'Você não inseriu um link de destino.',
+ 'wikieditor-toolbar-tool-file' => 'Arquivo embutido',
+ 'wikieditor-toolbar-tool-file-example' => 'Exemplo.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referência',
+ 'wikieditor-toolbar-tool-reference-example' => 'Insira o texto da referência aqui',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-reference-title' => 'Inserir referência',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Inserir',
+ 'wikieditor-toolbar-tool-reference-text' => 'Texto da referência',
+ 'wikieditor-toolbar-tool-signature' => 'Assinatura, hora e data',
+ 'wikieditor-toolbar-section-advanced' => 'Edição avançada',
+ 'wikieditor-toolbar-tool-heading' => 'Cabeçalho',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nível 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nível 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nível 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nível 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nível 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Texto de cabeçalho',
+ 'wikieditor-toolbar-group-format' => 'Formato',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista com marcadores',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Item de lista com marcadores',
+ 'wikieditor-toolbar-tool-olist' => 'Lista numerada',
+ 'wikieditor-toolbar-tool-olist-example' => 'Item de lista numerada',
+ 'wikieditor-toolbar-tool-indent' => 'Indentação',
+ 'wikieditor-toolbar-tool-indent-example' => 'Linha indentada',
+ 'wikieditor-toolbar-tool-nowiki' => 'Sem formatação wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Inserir aqui texto sem formatação',
+ 'wikieditor-toolbar-tool-redirect' => 'Redirecionamento',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nome da página de destino',
+ 'wikieditor-toolbar-tool-big' => 'Grande',
+ 'wikieditor-toolbar-tool-big-example' => 'Texto grande',
+ 'wikieditor-toolbar-tool-small' => 'Pequeno',
+ 'wikieditor-toolbar-tool-small-example' => 'Texto pequeno',
+ 'wikieditor-toolbar-tool-superscript' => 'Sobrescrito',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Texto em sobrescrito',
+ 'wikieditor-toolbar-tool-subscript' => 'Subscrito',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Texto em subscrito',
+ 'wikieditor-toolbar-group-insert' => 'Inserir',
+ 'wikieditor-toolbar-tool-gallery' => 'Galeria de imagens',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Exemplo.jpg|Legenda1
+$1:Exemplo.jpg|Legenda2',
+ 'wikieditor-toolbar-tool-newline' => 'Nova linha',
+ 'wikieditor-toolbar-tool-table' => 'Tabela',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! cabeçalho 1
+! cabeçalho 2
+! cabeçalho 3
+|-
+| linha 1, célula 1
+| linha 1, célula 2
+| linha 1, célula 3
+|-
+| linha 2, célula 1
+| linha 2, célula 2
+| linha 2, célula 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Texto da célula',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Texto do cabeçalho',
+ 'wikieditor-toolbar-tool-table-title' => 'Inserir tabela',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Linhas',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Colunas',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Inclui linha de cabeçalho',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Estilo com bordas',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tornar a tabela ordenável',
+ 'wikieditor-toolbar-tool-table-example' => 'Exemplo',
+ 'wikieditor-toolbar-tool-table-preview' => 'Pré-visualização',
+ 'wikieditor-toolbar-tool-table-insert' => 'Inserir',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Cancelar',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Não é possível inserir uma tabela com mais de $1 colunas com esta interface.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Você não introduziu um número válido de linhas ou colunas.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Você não pode inserir uma tabela com zero linhas ou colunas.',
+ 'wikieditor-toolbar-tool-replace' => 'Localizar e substituir',
+ 'wikieditor-toolbar-tool-replace-title' => 'Localizar e substituir',
+ 'wikieditor-toolbar-tool-replace-search' => 'Localizar:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Substituir por:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Coincidir maiúsculas e minúsculas',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Tratar texto da pesquisa como uma expressão regular',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Procurar próximo',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Substituir próximo',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Substituir todos',
+ 'wikieditor-toolbar-tool-replace-close' => 'Fechar',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Não houve coincidências para a sua pesquisa.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Substituições realizadas: $1.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Você não introduziu nada para buscar.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => "A expressão regular ''(regex)'' que você introduziu é inválida: $1",
+ 'wikieditor-toolbar-section-characters' => 'Caracteres especiais',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latino',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latino estendido',
+ 'wikieditor-toolbar-characters-page-ipa' => 'AFI (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Símbolos',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grego',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirílico',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Ãrabe',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persa',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebraico',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengali',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Cingalês',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Guzerate',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tailandês',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laociano',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Cambojano',
+ 'wikieditor-toolbar-section-help' => 'Ajuda',
+ 'wikieditor-toolbar-help-heading-description' => 'Descrição',
+ 'wikieditor-toolbar-help-heading-syntax' => 'O que você digita',
+ 'wikieditor-toolbar-help-heading-result' => 'O que você obtém',
+ 'wikieditor-toolbar-help-page-format' => 'Formatação',
+ 'wikieditor-toolbar-help-page-link' => 'Links',
+ 'wikieditor-toolbar-help-page-heading' => 'Títulos de seções',
+ 'wikieditor-toolbar-help-page-list' => 'Listas',
+ 'wikieditor-toolbar-help-page-file' => 'Arquivos',
+ 'wikieditor-toolbar-help-page-reference' => 'Referências',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discussão',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Itálico',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Texto em itálico''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Texto em itálico</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Negrito',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Texto em negrito'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Texto em negrito</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Negrito &amp; itálico',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Texto em negrito &amp; itálico'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Texto em negrito &amp; itálico</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Link interno',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Título da página|texto do link]]<br />[[Título da página]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Título do link</a><br /><a href='#'>Título da página</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Link externo',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.exemplo.org Título do link]<br />[http://www.exemplo.org]<br />http://www.exemplo.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Texto da ligação</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.exemplo.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Subtítulo de nível 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Subtítulo ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Subtítulo</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Subtítulo de nível 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Subtítulo ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Subtítulo</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Subtítulo de nível 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Subtítulo ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Subtítulo</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Subtítulo de nível 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Subtítulo =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Subtítulo</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista com marcadores',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Item de lista<br />* Item de lista',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Item de lista</li><li>Item de lista</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista numerada',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Item de lista<br /># Item de lista',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Item de lista</li><li>Item de lista</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Arquivo embutido',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Exemplo.png|thumb|Legenda]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Legenda' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Aumentar' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Legenda</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referência',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Texto da página.&lt;ref name="teste"&gt;[http://www.exemplo.org Texto do link], texto adicional.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Texto da página.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Reutilização da mesma referência',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Texto da página.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Mostrar referências',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><a title='' href='#'><b>^</b></a> <a rel='nofollow' title=\"http://www.exemplo.org\" class='external text' href='#'>Texto do link</a>, texto adicional.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Assinatura com hora e data',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nome de usuário</a> (<a href='#' title='{{#special:mytalk}}'>discussão</a>) 15h54min de 10 de junho de 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Assinatura',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nome de usuário</a> (<a href='#' title='{{#special:mytalk}}'>discussão</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indentação',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Texto normal<br />:Texto indentado<br />::Texto indentado',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Texto normal<dl><dd>Texto indentado<dl><dd>Texto indentado</dd></dl></dd></dl>',
+);
+
+/** Quechua (Runa Simi)
+ * @author AlimanRuna
+ */
+$messages['qu'] = array(
+ 'wikieditor' => "Ñawparikusqa wiki qillqa llamk'apuna uyapura",
+ 'wikieditor-desc' => "Mast'arinalla wiki qillqa llamk'apuna uyapurata achka yanapaykuq llamk'anachakunatapas haywan",
+ 'wikieditor-wikitext-tab' => 'Wiki qillqa',
+ 'wikieditor-loading' => 'Chaqnamuspa',
+ 'wikieditor-preview-preference' => 'Chiqa-chiqallan ñawpaq qhawayta atichiy',
+ 'wikieditor-preview-tab' => 'Ñawpaqta qhawallay',
+ 'wikieditor-preview-changes-tab' => 'Hukchasqakuna',
+ 'wikieditor-preview-loading' => 'Chaqnamuspa…',
+ 'wikieditor-previewDialog-preference' => 'Ñawpaq qhawana willanakuyta atichiy',
+ 'wikieditor-previewDialog-tab' => 'Ñawpaqta qhawallay',
+ 'wikieditor-previewDialog-loading' => 'Chaqnamuspa…',
+ 'wikieditor-publish-preference' => 'Thatki-thatkilla uyaychayta atichiy',
+ 'wikieditor-publish-button-publish' => 'Uyaychay',
+ 'wikieditor-publish-button-cancel' => 'Ama niy',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}} nisqapi uyaychay',
+ 'wikieditor-publish-dialog-summary' => "Llamk'apuypa pisichaynin (rurasqayki hukchasqakunata pisilla rimakunawan ch'uyanchay):",
+ 'wikieditor-publish-dialog-minor' => 'Aslla hukchay',
+ 'wikieditor-publish-dialog-watch' => "Kay p'anqata watiqay",
+ 'wikieditor-publish-dialog-publish' => 'Uyaychay',
+ 'wikieditor-publish-dialog-goback' => 'Kutimuy',
+ 'wikieditor-template-editor-preference' => "Hunt'ana p'anqawan plantilla llamk'apuyta atichiy",
+ 'wikieditor-template-editor-dialog-title' => "Plantillata llamk'apuy",
+ 'wikieditor-template-editor-dialog-submit' => 'Musuqchay',
+ 'wikieditor-template-editor-dialog-cancel' => 'Ama niy',
+ 'wikieditor-templates-preference' => 'Plantilla thuñiyta atichiy',
+ 'wikieditor-toc-preference' => "Wamp'unalla samiq wachuchasqata atichiy",
+ 'wikieditor-toc-show' => 'Samiqninta rikuchiy',
+ 'wikieditor-toc-hide' => 'Samiqninta pakay',
+ 'wikieditor-toolbar' => "Llamk'apunapaq butunnintin uma siq'i",
+ 'wikieditor-toolbar-desc' => "Kallpachasqa llamk'apunapaq butunnintin uma siq'i",
+ 'wikieditor-toolbar-preference' => "Kallpachasqa llamk'apunapaq butunnintin uma siq'ita atichiy",
+ 'wikieditor-toolbar-dialogs-preference' => "T'inkikunapaq, wachuchasqakunapaq, aswanpaqpas willanakuykunata atichiy",
+ 'wikieditor-toolbar-hidesig' => "Uma suti k'iti p'anqakunamanta silq'uy butunta pakay",
+ 'wikieditor-toolbar-loading' => 'Chaqnamuspa…',
+ 'wikieditor-toolbar-tool-bold' => 'Yanasapa',
+ 'wikieditor-toolbar-tool-bold-example' => 'Yanasapa qillqa',
+ 'wikieditor-toolbar-tool-italic' => 'Wiksu',
+ 'wikieditor-toolbar-tool-italic-example' => 'Wiksu qillqa',
+ 'wikieditor-toolbar-tool-ilink' => "Ukhu t'inki",
+ 'wikieditor-toolbar-tool-ilink-example' => "T'inkip sutin",
+ 'wikieditor-toolbar-tool-xlink' => "Hawa t'inki (ñawpaqta http:// nisqata yapariy)",
+ 'wikieditor-toolbar-tool-xlink-example' => "http://www.example.com t'inkip umallin",
+ 'wikieditor-toolbar-tool-link' => "T'inki",
+ 'wikieditor-toolbar-tool-link-title' => "T'inkita sat'iy",
+ 'wikieditor-toolbar-tool-link-int' => "Wiki p'anqaman",
+ 'wikieditor-toolbar-tool-link-int-target' => "Taripana p'anqap sutin icha URL:",
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => "P'anqap sutin icha URL",
+ 'wikieditor-toolbar-tool-link-int-text' => 'Qhawana qillqa:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Qhawanapaq qillqa',
+ 'wikieditor-toolbar-tool-link-ext' => "Hawa t'inki tiyayman",
+ 'wikieditor-toolbar-tool-link-ext-target' => "T'inki URL:",
+ 'wikieditor-toolbar-tool-link-ext-text' => "T'inki qillqa:",
+ 'wikieditor-toolbar-tool-link-insert' => "T'inkita sat'iy",
+ 'wikieditor-toolbar-tool-link-cancel' => 'Ama niy',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => "P'anqaqa kachkanñam.",
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => "P'anqaqa manaraqmi kachkanchu.",
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => "P'anqap sutinqa manam allinchu",
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => "Hawa t'inki",
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "P'anqa kachkayta llanchichkaspa...",
+ 'wikieditor-toolbar-tool-link-int-invalid' => "Qusqayki p'anqap sutinqa manam allinchu.",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "Qusqayki URL nisqaqa huk wiki p'anqaman t'inkimuqmanmi rik'chakun. Ukhu t'inkiri kachunchu?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => "Ukhu t'inki",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => "Hawa t'inki",
+ 'wikieditor-toolbar-tool-link-empty' => "Manam ima t'inkimunatapas yaykuchirqunkichu.",
+ 'wikieditor-toolbar-tool-file' => "Ch'aqtasqa rikcha",
+ 'wikieditor-toolbar-tool-file-example' => 'Qhawarichiy.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Pukyumanta willay',
+ 'wikieditor-toolbar-tool-reference-example' => "Kayman siki willapuy qillqata sat'iy",
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Ama niy',
+ 'wikieditor-toolbar-tool-reference-title' => "Pukyumanta willayta sat'iy",
+ 'wikieditor-toolbar-tool-reference-insert' => "Sat'iy",
+ 'wikieditor-toolbar-tool-reference-text' => 'Pukyumanta willanapaq qillqa',
+ 'wikieditor-toolbar-tool-signature' => "Silq'uy pachawan",
+ 'wikieditor-toolbar-section-advanced' => 'Ñawparikusqa',
+ 'wikieditor-toolbar-tool-heading' => "Uma siq'i",
+ 'wikieditor-toolbar-tool-heading-1' => 'Hatun kay 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Hatun kay 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Hatun kay 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Hatun kay 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Hatun kay 5',
+ 'wikieditor-toolbar-tool-heading-example' => "Uma siq'i qillqa",
+ 'wikieditor-toolbar-group-format' => "Rikch'akuy",
+ 'wikieditor-toolbar-tool-ulist' => 'Muruchayuq sutisuyu',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Muruchayuq sutisuyup qallawan',
+ 'wikieditor-toolbar-tool-olist' => 'Yupayniyuq sutisuyu',
+ 'wikieditor-toolbar-tool-olist-example' => 'Yupayniyuq sutisuyup qallawan',
+ 'wikieditor-toolbar-tool-indent' => 'Anchhuchisqa',
+ 'wikieditor-toolbar-tool-indent-example' => "Anchhuchisqa siq'i",
+ 'wikieditor-toolbar-tool-nowiki' => "Wiki rikch'akuy ama kachunchu",
+ 'wikieditor-toolbar-tool-nowiki-example' => "Kayman mana wiki rikch'akuyniyuq qillqata yapamuy",
+ 'wikieditor-toolbar-tool-redirect' => 'Pusapuna',
+ 'wikieditor-toolbar-tool-redirect-example' => "Taripana p'anqap sutin",
+ 'wikieditor-toolbar-tool-big' => 'Hatunyasqa',
+ 'wikieditor-toolbar-tool-big-example' => 'Hatunyasqa qillqa',
+ 'wikieditor-toolbar-tool-small' => 'Uchuyllayasqa',
+ 'wikieditor-toolbar-tool-small-example' => 'Uchuyllayasqa qillqa',
+ 'wikieditor-toolbar-tool-superscript' => 'Huqarisqa',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Huqarisqa qillqa',
+ 'wikieditor-toolbar-tool-subscript' => 'Uraychasqa',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Uraychasqa qillqa',
+ 'wikieditor-toolbar-group-insert' => "Sat'iy",
+ 'wikieditor-toolbar-tool-gallery' => 'Suyu-suyu',
+ 'wikieditor-toolbar-tool-gallery-example' => "$1:Qhawarichiy.jpg|Ch'uyanchay1
+$1:Qhawarichiy.jpg|Ch'uyanchay2",
+ 'wikieditor-toolbar-tool-newline' => "Musuq siq'i",
+ 'wikieditor-toolbar-tool-table' => 'Wachuchasqa',
+ 'wikieditor-toolbar-tool-table-example-old' => "-
+! uma siq'i 1
+! uma siq'i 2
+! uma siq'i 3
+|-
+| sinru 1, wachu ukhu 1
+| sinru 1, wachu ukhu 2
+| sinru 1, wachu ukhu 3
+|-
+| sinru 2, wachu ukhu 1
+| sinru 2, wachu ukhu 2
+| sinru 2, wachu ukhu 3",
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Wachu ukhu qillqa',
+ 'wikieditor-toolbar-tool-table-example-header' => "Uma siq'i qillqa",
+ 'wikieditor-toolbar-tool-table-title' => "Wachuchasqata sat'iy",
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Sinrukuna',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Wachukuna',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Uma sinruta yapay',
+ 'wikieditor-toolbar-tool-table-wikitable' => "Saywakunayuq rikch'akuy",
+ 'wikieditor-toolbar-tool-table-sortable' => 'Wachuchasqata allinchana kachiy',
+ 'wikieditor-toolbar-tool-table-example' => 'Qhawachina',
+ 'wikieditor-toolbar-tool-table-preview' => 'Ñawpaqta qhawallay',
+ 'wikieditor-toolbar-tool-table-insert' => "Sat'iy",
+ 'wikieditor-toolbar-tool-table-cancel' => 'Ama niy',
+ 'wikieditor-toolbar-tool-table-toomany' => "Kay willanakuypiqa manam $1-manta aswan wachu ukhukunata sat'iyta atinkichu.",
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Sinrukunapaq icha wachukunapaq allin yupayta manam yaykuchirqunkichu.',
+ 'wikieditor-toolbar-tool-table-zero' => "Sinrunnaq (0 sinruyuq) icha wachunnaq (0 wachuyuq) wachuchasqata manam sat'iyta atinkichu.",
+ 'wikieditor-toolbar-tool-replace' => 'Maskaspa huknachay',
+ 'wikieditor-toolbar-tool-replace-title' => 'Maskaspa huknachay',
+ 'wikieditor-toolbar-tool-replace-search' => 'Kayta maskay:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Kaywan huknachay:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Hatunpas uchuypas sanampata qhawaykuy',
+ 'wikieditor-toolbar-tool-replace-regex' => "Taripana qillqata allinlla nisqata hina hat'alliy",
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Qatiqta maskay',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Qatiqta huknachay',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Tukuykunata huknachay',
+ 'wikieditor-toolbar-tool-replace-close' => "Wichq'ay",
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Maskayniykiwan manam imatapas taripankichu.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 kuti huknachasqam.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Manam ima maskanatapas yaykuchirqunkichu.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Qusqayki patanchay qillqananchaqa manam allinchu: $1',
+ 'wikieditor-toolbar-section-characters' => 'Sapaq sanampakuna',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => "Latin mast'arisqa",
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Sananchakuna',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grigu',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kirilitsa',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabya',
+ 'wikieditor-toolbar-characters-page-persian' => 'Pharsi',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Iwriyu',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Banla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Guyarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thay',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Yanapa',
+ 'wikieditor-toolbar-help-heading-description' => "T'iktuna",
+ 'wikieditor-toolbar-help-heading-syntax' => 'Qillqasqayki kaq',
+ 'wikieditor-toolbar-help-heading-result' => 'Chaskisqayki kaq',
+ 'wikieditor-toolbar-help-page-format' => "Rikch'akuychaspa",
+ 'wikieditor-toolbar-help-page-link' => "T'inkikuna",
+ 'wikieditor-toolbar-help-page-heading' => "Uma siq'ikuna",
+ 'wikieditor-toolbar-help-page-list' => 'Sutisuyukuna',
+ 'wikieditor-toolbar-help-page-file' => 'Willañiqikuna',
+ 'wikieditor-toolbar-help-page-reference' => 'Pukyumanta willaykuna',
+ 'wikieditor-toolbar-help-page-discussion' => 'Rimanakuy',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Wiksu',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Wiksu qillqa''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Wiksu qillqa</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Yanasapa',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Yanasapa qillqa'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Yanasapa qillqa</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Yanasapa wiksu',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Yanasapa wiksu qillqa'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Yanasapa wiksu qillqa</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => "Ukhu t'inki",
+ 'wikieditor-toolbar-help-content-ilink-syntax' => "[[P'anqap sutin|T'inki qillqa]]<br />[[P'anqap sutin]]",
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>T'inki qillqa</a><br /><a href='#'>P'anqap sutin</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => "Hawa t'inki",
+ 'wikieditor-toolbar-help-content-xlink-syntax' => "[http://www.example.org T'inki qillqa]<br />[http://www.example.org]<br />http://www.example.org",
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>T'inki qillqa</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => "2 ñiqin hatun kayniyuq uma siq'i",
+ 'wikieditor-toolbar-help-content-heading2-syntax' => "== Uma siq'i qillqa ==",
+ 'wikieditor-toolbar-help-content-heading2-result' => "<h2>Uma siq'i qillqa</h2>",
+ 'wikieditor-toolbar-help-content-heading3-description' => "3 ñiqin hatun kayniyuq uma siq'i",
+ 'wikieditor-toolbar-help-content-heading3-syntax' => "=== Uma siq'i qillqa ===",
+ 'wikieditor-toolbar-help-content-heading3-result' => "<h3>Uma siq'i qillqa</h3>",
+ 'wikieditor-toolbar-help-content-heading4-description' => "4 ñiqin hatun kayniyuq uma siq'i",
+ 'wikieditor-toolbar-help-content-heading4-syntax' => "==== Uma siq'i qillqa ====",
+ 'wikieditor-toolbar-help-content-heading4-result' => "<h4>Uma siq'i qillqa</h4>",
+ 'wikieditor-toolbar-help-content-heading5-description' => "5 ñiqin hatun kayniyuq uma siq'i",
+ 'wikieditor-toolbar-help-content-heading5-syntax' => "===== Uma siq'i qillqa =====",
+ 'wikieditor-toolbar-help-content-heading5-result' => "<h5>Uma siq'i qillqa</h5>",
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Muruchayuq sutisuyu',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Sutisuyup qallawan<br />* Sutisuyup qallawan',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Sutisuyup qallawan</li><li>Sutisuyup qallawan</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Yupayniyuq sutisuyu',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Sutisuyup qallawan<br /># Sutisuyup qallawan',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Sutisuyup qallawan</li><li>Sutisuyup qallawan</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => "Ch'aqtasqa rikcha",
+ 'wikieditor-toolbar-help-content-file-syntax' => "[[$1:Qhawarichiy.png|thumb|Ch'uyanchay qillqa]]",
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Ch'uyanchay qillqa' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Hatunchay' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Ch'uyanchay qillqa</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Pukyumanta willay',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'P\'anqa qillqa.&lt;ref name="test"&gt;[http://www.example.org T\'inki qillqa], yapasqa qillqa.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "P'anqa qillqa.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => "Kay pukyumanta willayta yapalla llamk'achiy",
+ 'wikieditor-toolbar-help-content-rereference-result' => "P'anqa qillqa.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Pukyukunamanta willaykunata rikuchiy',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='hawa qillqa' href='#'>T'inki qillqa</a>, yapasqa qillqa.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => "Silq'uy pachawan",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Ruraqpa sutin</a> (<a href='#' title='{{#special:mytalk}}'>rimanakuy</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => "Silq'uy",
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Ruraqpa sutin</a> (<a href='#' title='{{#special:mytalk}}'>rimanakuy</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Anchhuchisqa',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Sapsi qillqa<br />:Anchhuchisqa qillqa<br />::Anchhuchisqa qillqa',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Sapsi qillqa<dl><dd>Anchhuchisqa qillqa<dl><dd>Anchhuchisqa qillqa</dd></dl></dd></dl>',
+);
+
+/** Romanian (Română)
+ * @author AdiJapan
+ * @author Cin
+ * @author Firilacroco
+ * @author Minisarm
+ */
+$messages['ro'] = array(
+ 'wikieditor' => 'Interfață de modificare wikitext avansată',
+ 'wikieditor-desc' => 'Afișează o interfață de modificare a wikitextului ce se poate extinde cu multe funcționalități',
+ 'wikieditor-wikitext-tab' => 'Wikitext',
+ 'wikieditor-loading' => 'Încărcare',
+ 'wikieditor-preview-preference' => 'Activează previzualizarea unul-lângă-altul',
+ 'wikieditor-preview-tab' => 'Previzualizare',
+ 'wikieditor-preview-changes-tab' => 'Modificări',
+ 'wikieditor-preview-loading' => 'Încărcare...',
+ 'wikieditor-previewDialog-preference' => 'Activează caseta de dialog pentru previzualizare',
+ 'wikieditor-previewDialog-tab' => 'Previzualizare',
+ 'wikieditor-previewDialog-loading' => 'Se încarcă...',
+ 'wikieditor-publish-preference' => 'Activează publicarea pas cu pas',
+ 'wikieditor-publish-button-publish' => 'Salvează pagina',
+ 'wikieditor-publish-button-cancel' => 'Renunță',
+ 'wikieditor-publish-dialog-title' => 'Publică pe {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Descrierea modificărilor (descrieți pe scurt modificările făcute):',
+ 'wikieditor-publish-dialog-minor' => 'Modificare minoră',
+ 'wikieditor-publish-dialog-watch' => 'Monitorizează această pagină',
+ 'wikieditor-publish-dialog-publish' => 'Salvează pagina',
+ 'wikieditor-publish-dialog-goback' => 'ÃŽnapoi',
+ 'wikieditor-template-editor-preference' => 'Activează modificarea formatelor wiki prin formulare',
+ 'wikieditor-template-editor-dialog-title' => 'Modificare format',
+ 'wikieditor-template-editor-dialog-submit' => 'Actualizare',
+ 'wikieditor-template-editor-dialog-cancel' => 'Revocare',
+ 'wikieditor-templates-preference' => 'Activează ascunderea formatului',
+ 'wikieditor-toc-preference' => 'Activează cuprins navigabil',
+ 'wikieditor-toc-show' => 'Arată',
+ 'wikieditor-toc-hide' => 'Ascunde',
+ 'wikieditor-toolbar' => 'Modificarea barei de instrumente',
+ 'wikieditor-toolbar-desc' => 'Modificarea barei de instrumente cu utilizare ridicată',
+ 'wikieditor-toolbar-preference' => 'Activează varianta îmbunătățită a barei de unelte',
+ 'wikieditor-toolbar-dialogs-preference' => 'Activează casetele de dialog pentru inserarea legăturilor, tabelelor și a altor funcționalități',
+ 'wikieditor-toolbar-hidesig' => 'Ascunde butonul de semnătură în cazul paginilor din spațiul de nume principal',
+ 'wikieditor-toolbar-loading' => 'Se încarcă...',
+ 'wikieditor-toolbar-tool-bold' => 'Aldin',
+ 'wikieditor-toolbar-tool-bold-example' => 'Text aldin',
+ 'wikieditor-toolbar-tool-italic' => 'Cursiv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Text cursiv',
+ 'wikieditor-toolbar-tool-ilink' => 'Legătură internă',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titlul legăturii',
+ 'wikieditor-toolbar-tool-xlink' => 'Legătură externă (cu prefixul http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.exemplu.com titlul legăturii',
+ 'wikieditor-toolbar-tool-link' => 'Legătură',
+ 'wikieditor-toolbar-tool-link-title' => 'Inserare legătură',
+ 'wikieditor-toolbar-tool-link-int' => 'Către o pagină wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Pagină țintă sau URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titlul paginii sau adresa URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Text de afișat:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Introduceți textul care ar trebui afișat',
+ 'wikieditor-toolbar-tool-link-ext' => 'Către o pagină web externă',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Legătură URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Textul legăturii:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Introdu legătura',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Revocare',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Pagina există',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Pagina nu există',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Titlu incorect',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Legătură externă',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Verific existența paginii...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Titlul specificat nu este corect.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL-ul specificat pare a fi o legătură către o altă pagină wiki. Doriți să o transformați într-o legătură internă?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Legătură internă',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Legătură externă',
+ 'wikieditor-toolbar-tool-link-empty' => 'Nu ați introdus nimic către care să stabilesc o legătură.',
+ 'wikieditor-toolbar-tool-file' => 'Fișier inserat',
+ 'wikieditor-toolbar-tool-file-example' => 'Exemplu.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referință',
+ 'wikieditor-toolbar-tool-reference-example' => 'Introduceți textul notei de subsol aici.',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Revocare',
+ 'wikieditor-toolbar-tool-reference-title' => 'Inserare referință',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Inserează',
+ 'wikieditor-toolbar-tool-reference-text' => 'Conținutul referinței',
+ 'wikieditor-toolbar-tool-signature' => 'Semnătură datată',
+ 'wikieditor-toolbar-section-advanced' => 'Avansat',
+ 'wikieditor-toolbar-tool-heading' => 'Titlu',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivelul 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivelul 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivelul 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivelul 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivelul 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Textul din titlu',
+ 'wikieditor-toolbar-group-format' => 'Formatare',
+ 'wikieditor-toolbar-tool-ulist' => 'Listă cu puncte',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Element în listă cu puncte',
+ 'wikieditor-toolbar-tool-olist' => 'Listă numerotată',
+ 'wikieditor-toolbar-tool-olist-example' => 'Element în listă numerotată',
+ 'wikieditor-toolbar-tool-indent' => 'Alineat',
+ 'wikieditor-toolbar-tool-indent-example' => 'Linie cu alineat',
+ 'wikieditor-toolbar-tool-nowiki' => 'Fără formatare wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Inserați textul neformatat aici',
+ 'wikieditor-toolbar-tool-redirect' => 'Redirecționare',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Numele paginii țintă',
+ 'wikieditor-toolbar-tool-big' => 'Mare',
+ 'wikieditor-toolbar-tool-big-example' => 'Text mare',
+ 'wikieditor-toolbar-tool-small' => 'Mic',
+ 'wikieditor-toolbar-tool-small-example' => 'Text mic',
+ 'wikieditor-toolbar-tool-superscript' => 'Exponent',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Text la exponent',
+ 'wikieditor-toolbar-tool-subscript' => 'Indice',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Text la indice',
+ 'wikieditor-toolbar-group-insert' => 'Inserare',
+ 'wikieditor-toolbar-tool-gallery' => 'Galerie de imagini',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Exemplu.jpg|Descriere 1
+$1:Exemplu.jpg|Descriere 2',
+ 'wikieditor-toolbar-tool-newline' => 'Linie nouă',
+ 'wikieditor-toolbar-tool-table' => 'Tabel',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! titlu coloană 1
+! titlu coloană 2
+! titlu coloană 3
+|-
+| rând 1, celula 1
+| rând 1, celula 2
+| rând 1, celula 3
+|-
+| rând 2, celula 1
+| rând 2, celula 2
+| rând 2, celula 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Textul celulei',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Textul titlului coloanei',
+ 'wikieditor-toolbar-tool-table-title' => 'Inserare tabel',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Linii',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Coloane',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Adăugare rând pentru titlu de coloană',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stil cu contur',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Transformă în tabel sortabil',
+ 'wikieditor-toolbar-tool-table-example' => 'Exemplu',
+ 'wikieditor-toolbar-tool-table-preview' => 'Previzualizare',
+ 'wikieditor-toolbar-tool-table-insert' => 'Inserează',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Revocare',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Inserarea unui tabel cu mai mult de $1 celule nu este posibilă cu această unealtă.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Nu ați introdus un număr valabil de rânduri sau coloane.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Nu puteți introduce un tabel cu zero rânduri sau coloane.',
+ 'wikieditor-toolbar-tool-replace' => 'Căutare și înlocuire',
+ 'wikieditor-toolbar-tool-replace-title' => 'Căutare și înlocuire',
+ 'wikieditor-toolbar-tool-replace-search' => 'De căutat:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'ÃŽnlocuire cu:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Înlocuiește doar dacă este identic',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Tratează sintagma ca o expresie regulată',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Găsește următorul',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Înlocuiește următorul',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Înlocuiește toate',
+ 'wikieditor-toolbar-tool-replace-close' => 'ÃŽnchide',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Căutarea dumneavoastră nu a generat niciun rezultat.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 înlocuire(i) efectuată(e).',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Nu ați introdus niciun cuvânt după care să căutați',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Expresia regulată introdusă nu este corectă: $1',
+ 'wikieditor-toolbar-section-characters' => 'Caractere speciale',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latină',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latină extinsă',
+ 'wikieditor-toolbar-characters-page-ipa' => 'AFI',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simboluri',
+ 'wikieditor-toolbar-characters-page-greek' => 'Greacă',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Chirilică',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabă',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persană',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ebraică',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengaleză',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thailandeză',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laoțiană',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmeră',
+ 'wikieditor-toolbar-section-help' => 'Ajutor',
+ 'wikieditor-toolbar-help-heading-description' => 'Descriere',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Ceea ce scrieți',
+ 'wikieditor-toolbar-help-heading-result' => 'Ceea ce obțineți',
+ 'wikieditor-toolbar-help-page-format' => 'Formatare',
+ 'wikieditor-toolbar-help-page-link' => 'Legături',
+ 'wikieditor-toolbar-help-page-heading' => 'Titluri',
+ 'wikieditor-toolbar-help-page-list' => 'Liste',
+ 'wikieditor-toolbar-help-page-file' => 'Fișiere',
+ 'wikieditor-toolbar-help-page-reference' => 'Referințe',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discuție',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Cursiv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Text cursiv''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Text cursiv</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Aldin',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Text aldin'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Text aldin</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Aldin și cursiv',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Text aldin și cursiv'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Text aldin și cursiv</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Legătură internă',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Titlul paginii|Titlul legăturii]]<br />[[Titlul paginii]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Titlul legăturii</a><br /><a href='#'>Titlul paginii</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Legătură externă',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.exemplu.org Titlul legăturii]<br />[http://www.exemplu.org]<br />http://www.exemplu.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Titlul legăturii</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.exemplu.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Titlu de nivelul 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Titlu ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Titlu</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Titlu de nivelul 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Titlu ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Titlu</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Titlu de nivelul 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Titlu ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Titlu</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Titlu de nivelul 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Titlu =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Titlu</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Listă cu puncte',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Element<br />* Element',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Element</li><li>Element</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Listă numerotată',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Element<br /># Element',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Element</li><li>Element</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Fișier inserat',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Exemplu.png|thumb|Descrierea imaginii]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Descrierea imaginii' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Mărește' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Descrierea imaginii</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referință',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Textul paginii.&lt;ref name="test"&gt;[http://www.exemplu.org Textul legăturii], text suplimentar.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Textul paginii.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Utilizare suplimentară a aceleiași referințe',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Textul paginii.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Afișare referințe',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Textul legăturii</a>, text adițional.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Semnătură datată',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nume de utilizator</a> (<a href='#' title='{{#special:mytalk}}'>discuție</a>) 15:54, 10 iunie 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Semnătură',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nume de utilizator</a> (<a href='#' title='{{#special:mytalk}}'>discuție</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indentare',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Text normal<br />:Text indentat<br />::Text indentat',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Text normal<dl><dd>Text indentat<dl><dd>Text indentat</dd></dl></dd></dl>',
+);
+
+/** Tarandíne (Tarandíne)
+ * @author Joetaras
+ * @author Reder
+ */
+$messages['roa-tara'] = array(
+ 'wikieditor' => "Wikitext avanzate pe le cangiaminde de l'inderfacce",
+ 'wikieditor-desc' => "Dè 'nu wikitext estendibbele pe le cangiaminde de l'inderfacce e 'nu sbuenne de funzionalità de cchiù previste sus a le module",
+ 'wikieditor-wikitext-tab' => 'Uicchiteste',
+ 'wikieditor-loading' => 'Stoche a careche',
+ 'wikieditor-preview-preference' => "Abbilite l'andeprime da na vanne a l'otre",
+ 'wikieditor-preview-tab' => 'Andeprime',
+ 'wikieditor-preview-changes-tab' => 'Cangiaminde',
+ 'wikieditor-preview-loading' => 'Carecamende...',
+ 'wikieditor-previewDialog-preference' => "Abbilete 'u dialoghe de l'andeprime",
+ 'wikieditor-previewDialog-tab' => 'Andeprime',
+ 'wikieditor-previewDialog-loading' => 'Carecamende...',
+ 'wikieditor-publish-preference' => "Abbilete 'a pubblecazione passe pe passe",
+ 'wikieditor-publish-button-publish' => 'Pubbleche',
+ 'wikieditor-publish-button-cancel' => 'Annulle',
+ 'wikieditor-publish-dialog-title' => 'Pubbleche sus a {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Riepileghe de le cangiaminde (veloce veloce descrive le cangiaminde ca tu è fatte):',
+ 'wikieditor-publish-dialog-minor' => 'Cangiamende stuèdeche',
+ 'wikieditor-publish-dialog-watch' => 'Condrolle sta pàgene',
+ 'wikieditor-publish-dialog-publish' => 'Pubbleche',
+ 'wikieditor-publish-dialog-goback' => 'Tuèrne rrete',
+ 'wikieditor-template-editor-preference' => 'Abbilete le cangiaminde basate sus a le module de le template de uicchi',
+ 'wikieditor-template-editor-dialog-title' => "Cange 'u template",
+ 'wikieditor-template-editor-dialog-submit' => 'Aggiorne',
+ 'wikieditor-template-editor-dialog-cancel' => 'Scangille',
+ 'wikieditor-templates-preference' => "Abbilete 'a chiusure de le template",
+ 'wikieditor-toc-preference' => 'Abbilite le tabbele navigabbele de condenute',
+ 'wikieditor-toc-show' => 'Fà vedè le condenute',
+ 'wikieditor-toc-hide' => 'Scunne le condenute',
+ 'wikieditor-toolbar' => 'Barre de le cangiaminde',
+ 'wikieditor-toolbar-desc' => "Cange 'a pàgene d'a barre de le struminde cu l'usabbilità avanzate",
+ 'wikieditor-toolbar-preference' => "Abbilite 'a barre de le struminde pe le cangiaminde avanzate",
+ 'wikieditor-toolbar-dialogs-preference' => "Abbilite le dialoghe pe l'inzerimende de collegaminde, tabbelle e otre cose",
+ 'wikieditor-toolbar-hidesig' => "Scunne 'u buttone d'a firme da le pàggene jndr'à 'u namespace prengepàle",
+ 'wikieditor-toolbar-loading' => 'Stoche a careche…',
+ 'wikieditor-toolbar-tool-bold' => 'Grascette',
+ 'wikieditor-toolbar-tool-bold-example' => 'Teste grascette',
+ 'wikieditor-toolbar-tool-italic' => 'Corsive',
+ 'wikieditor-toolbar-tool-italic-example' => 'Teste corsive',
+ 'wikieditor-toolbar-tool-ilink' => "Collegamende jndr'à Uicchipèdie",
+ 'wikieditor-toolbar-tool-ilink-example' => "Titele d'u collegamende",
+ 'wikieditor-toolbar-tool-xlink' => "Collegamende fore a Uicchipèdie (arrecuerdete 'u prefisse http://)",
+ 'wikieditor-toolbar-tool-xlink-example' => "http://www.example.com titele d'u collegamende",
+ 'wikieditor-toolbar-tool-link' => 'Collegamende',
+ 'wikieditor-toolbar-tool-link-title' => "'Nzerisce 'nu collegamende",
+ 'wikieditor-toolbar-tool-link-int' => "A 'na vôsce/pàgene de Uicchi",
+ 'wikieditor-toolbar-tool-link-int-target' => "Titele d'a vôsce:",
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => "Titele d'a pàgene o URL",
+ 'wikieditor-toolbar-tool-link-int-text' => "Teste d'u collegamende:",
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => "Mitte 'u teste ca avessa essere fatte vedè",
+ 'wikieditor-toolbar-tool-link-ext' => "A 'na pàgena web fore da Uicchipèdie",
+ 'wikieditor-toolbar-tool-link-ext-target' => "Colleghe 'n'URL:",
+ 'wikieditor-toolbar-tool-link-ext-text' => "Teste d'u collegamende:",
+ 'wikieditor-toolbar-tool-link-insert' => "'Nzerisce 'nu collegamende",
+ 'wikieditor-toolbar-tool-link-cancel' => 'Scangille',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => "'A pàgene esiste",
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => "'A pàgene non g'esiste",
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Titele invalide',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Collegaminde fore a Uicchipèdie',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "Stoche a verifiche l'esistenze d'a pàgene...",
+ 'wikieditor-toolbar-tool-link-int-invalid' => "'U titele ca è specificate jè invalide.",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "'A URL ca tu è specificate pare manghe ca vò ccù punde a 'n'otra pàgene de Uicchi. Ce vuè ccù face 'nu collegamende inderne?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => "Collegamende jndr'à Uicchipèdie",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Collegamende fore a Uicchipèdie',
+ 'wikieditor-toolbar-tool-link-empty' => 'Tu non ge inzeriste ninde ca se collegave.',
+ 'wikieditor-toolbar-tool-file' => 'Fiel ingapsulate',
+ 'wikieditor-toolbar-tool-file-example' => 'Esembie.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Riferimende',
+ 'wikieditor-toolbar-tool-reference-example' => "Mitte 'u teste le note de sotte aqquà",
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Annulle',
+ 'wikieditor-toolbar-tool-reference-title' => "'Nzerisce referenze",
+ 'wikieditor-toolbar-tool-reference-insert' => "'Nzerisce",
+ 'wikieditor-toolbar-tool-reference-text' => 'Teste de referenze',
+ 'wikieditor-toolbar-tool-signature' => 'Firme e orarie',
+ 'wikieditor-toolbar-section-advanced' => 'Avanzate',
+ 'wikieditor-toolbar-tool-heading' => 'Testate',
+ 'wikieditor-toolbar-tool-heading-1' => 'Levèlle 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Levèlle 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Levèlle 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Levèlle 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Levèlle 5',
+ 'wikieditor-toolbar-tool-heading-example' => "Teste d'a testate",
+ 'wikieditor-toolbar-group-format' => 'Formate',
+ 'wikieditor-toolbar-tool-ulist' => 'Elenghe pundate',
+ 'wikieditor-toolbar-tool-ulist-example' => "Elemende de l'elenghe pundate",
+ 'wikieditor-toolbar-tool-olist' => 'Elenghe numerate',
+ 'wikieditor-toolbar-tool-olist-example' => "Elemende de l'elenghe numerate",
+ 'wikieditor-toolbar-tool-indent' => 'Idendazione',
+ 'wikieditor-toolbar-tool-indent-example' => 'Linèe idendate',
+ 'wikieditor-toolbar-tool-nowiki' => "No scè penzanne 'a formattazione de Uicchi",
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Sckaffe teste non formattate aqquà',
+ 'wikieditor-toolbar-tool-redirect' => 'Redirezione',
+ 'wikieditor-toolbar-tool-redirect-example' => "Nome d'a pàgene de destinazione",
+ 'wikieditor-toolbar-tool-big' => 'Granne',
+ 'wikieditor-toolbar-tool-big-example' => 'Teste granne',
+ 'wikieditor-toolbar-tool-small' => 'Piccinne',
+ 'wikieditor-toolbar-tool-small-example' => 'Teste piccinne',
+ 'wikieditor-toolbar-tool-superscript' => 'Sovrascritte',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Teste sovrascritte',
+ 'wikieditor-toolbar-tool-subscript' => 'Sottoscrive',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Teste sottoscritte',
+ 'wikieditor-toolbar-group-insert' => "'Nzerisce",
+ 'wikieditor-toolbar-tool-gallery' => 'Gallerìe fotografeche',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Titele1
+$1:Example.jpg|Titele2',
+ 'wikieditor-toolbar-tool-newline' => 'Linèa nove',
+ 'wikieditor-toolbar-tool-table' => 'Tabbelle',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! testate 1
+! testate 2
+! testate 3
+|-
+| righe 1, celle 1
+| righe 1, celle 2
+| righe 1, celle 3
+|-
+| righe 2, celle 1
+| righe 2, celle 2
+| righe 2, celle 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => "Teste d'a celle",
+ 'wikieditor-toolbar-tool-table-example-header' => "Teste d'a testate",
+ 'wikieditor-toolbar-tool-table-title' => "'Nzerisce 'na tabbelle",
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Righe',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Culonne',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Aggiunge righe de testate',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stile cu le borde',
+ 'wikieditor-toolbar-tool-table-sortable' => "Fà 'a tabbelle ordenabbele",
+ 'wikieditor-toolbar-tool-table-example' => "Teste d'a celle",
+ 'wikieditor-toolbar-tool-table-preview' => 'Andeprime',
+ 'wikieditor-toolbar-tool-table-insert' => 'Inzerisce',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Annulle',
+ 'wikieditor-toolbar-tool-table-toomany' => "Inzerimende de 'na tabbelle cu cchiù de $1 celle non g'è possibbele cu stu dialoghe",
+ 'wikieditor-toolbar-tool-table-invalidnumber' => "Tu non g'è mise 'nu numere valide de righe o culonne.",
+ 'wikieditor-toolbar-tool-table-zero' => "Tu non ge puè inzerì 'na tabbelle cù zero righe o culonne.",
+ 'wikieditor-toolbar-tool-replace' => 'Cirche e sostituisce',
+ 'wikieditor-toolbar-tool-replace-title' => 'Cirche e sostituisce',
+ 'wikieditor-toolbar-tool-replace-search' => 'Cirche pe:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Sostituisce cu:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Combronde maiuscole e minuscole',
+ 'wikieditor-toolbar-tool-replace-regex' => "Tratte 'a stringhe de ricerche cumme a 'n'espressione regolare",
+ 'wikieditor-toolbar-tool-replace-button-findnext' => "Cirche 'u prosseme",
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => "Sostituisce 'u teste",
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Sostituisce tutte',
+ 'wikieditor-toolbar-tool-replace-close' => 'Chiude',
+ 'wikieditor-toolbar-tool-replace-nomatch' => "'A ricerca toje non g'à acchiate ninde.",
+ 'wikieditor-toolbar-tool-replace-success' => '$1 sostituzione (sostituziune) fatte.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => "Tu non g'è mise ninde pe fà 'a ricerche.",
+ 'wikieditor-toolbar-tool-replace-invalidregex' => "L'espressione regolare ca tu è 'nzerite jè invalide: $1",
+ 'wikieditor-toolbar-section-characters' => 'Carattere speciale',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latine',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latine estese',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simbole',
+ 'wikieditor-toolbar-characters-page-greek' => 'Greche',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirilliche',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabe',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persiane',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ebbrèe',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangladesciane',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Ajiute',
+ 'wikieditor-toolbar-help-heading-description' => 'Descrizione',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Cè è scritte',
+ 'wikieditor-toolbar-help-heading-result' => 'Cè vuè',
+ 'wikieditor-toolbar-help-page-format' => 'Formattanne',
+ 'wikieditor-toolbar-help-page-link' => 'Collegaminde',
+ 'wikieditor-toolbar-help-page-heading' => 'Testate',
+ 'wikieditor-toolbar-help-page-list' => 'Liste',
+ 'wikieditor-toolbar-help-page-file' => 'File',
+ 'wikieditor-toolbar-help-page-reference' => 'Rifereminde',
+ 'wikieditor-toolbar-help-page-discussion' => "'Ngazzaminde",
+ 'wikieditor-toolbar-help-content-italic-description' => 'Corsive',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Teste Corsive''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Teste Corsive</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Grascette',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Teste Grascette'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Teste Grascette</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Grascette &amp; corsive',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Grascette &amp; corsive'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Teste grascette &amp; corsive</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Collegamende inderne',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => "[[Titele d'a pàgene|etichette de collegamende]]<br />[[Titele d'a pàgene]]",
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Etichette de collegamende</a><br /><a href='#'>Titele d'a pàgene</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Collegamende fore a Uicchipèdie',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.esembie.org etichette de collegamende]<bt />[http://www.esembie.org]<br />http://www.esembie.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Etichette de collegamende</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.esembie.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2° levèlle de testate',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => "== Teste d'a testate ==",
+ 'wikieditor-toolbar-help-content-heading2-result' => "<h2>Teste d'a testate</h2>",
+ 'wikieditor-toolbar-help-content-heading3-description' => '3° levèlle de testate',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => "=== Teste d'a testate ===",
+ 'wikieditor-toolbar-help-content-heading3-result' => "<h3>Teste d'a testate</h3>",
+ 'wikieditor-toolbar-help-content-heading4-description' => '4° levèlle de testate',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => "==== Teste d'a testate ====",
+ 'wikieditor-toolbar-help-content-heading4-result' => "<h4>Teste d'a testate</h4>",
+ 'wikieditor-toolbar-help-content-heading5-description' => '5° levèlle de testate',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => "===== Teste d'a testate =====",
+ 'wikieditor-toolbar-help-content-heading5-result' => "<h5>Teste d'a testate</h5>",
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Elenghe pundate',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => "* elemende de l'elenghe<br />*Elemende de l'elenghe",
+ 'wikieditor-toolbar-help-content-ulist-result' => "<ul><li>Elemende de l'elenghe</li><li>Elemende de l'elenghe</li></ul>",
+ 'wikieditor-toolbar-help-content-olist-description' => 'Elenghe numerate',
+ 'wikieditor-toolbar-help-content-olist-syntax' => "# Elemende de l'elenghe numerate<br /># Elemende de l'elenghe numerate",
+ 'wikieditor-toolbar-help-content-olist-result' => "<ol><li>Elemende de l'elenghe</li><li>Elemende de l'elenghe</li></ol>",
+ 'wikieditor-toolbar-help-content-file-description' => "File 'ngorporate",
+ 'wikieditor-toolbar-help-content-file-syntax' => "[[$1:Example.png|thumb|Teste d'u titele]]",
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Teste d'u titele' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Allarie' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Teste d'u titele</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Riferimende',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Teste d\'a pàgene.&lt;ref name="test"&gt;[http://www.example.org Teste d\'u collegamende], teste addizionale.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Teste d'a pàgene.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => "Ause addizionale d'u stesse riferimende",
+ 'wikieditor-toolbar-help-content-rereference-result' => "Teste d'a pàgene.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Fà vedè le rifereminde',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Teste d'u collegamende</a>, teste addizionale.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => "firme cu l'orarie",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nome utende</a> (<a href='#' title='{{#special:mytalk}}'>'ngazzaminde</a>) 15:54, 10 Giugne 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Firme',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nome utende</a> (<a href='#' title='{{#special:mytalk}}'>'ngazzaminde</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Idente',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Teste normale<br />:Teste idendate<br />::Teste idendate',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Teste normale<dl><dd>Teste idendate<dl><dd>Teste idendate</dd></dl></dd></dl>',
+);
+
+/** Russian (РуÑÑкий)
+ * @author Claymore
+ * @author Eleferen
+ * @author G0rn
+ * @author Lockal
+ * @author Temuri rajavi
+ * @author ÐлекÑандр Сигачёв
+ */
+$messages['ru'] = array(
+ 'wikieditor' => 'РаÑширенный Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð¸ÐºÐ¸Ñ‚ÐµÐºÑта',
+ 'wikieditor-desc' => 'ОбеÑпечивает раÑширÑемый Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð²Ð¸ÐºÐ¸Ñ‚ÐµÐºÑта и многие функции, предоÑтавлÑемые модулÑми',
+ 'wikieditor-wikitext-tab' => 'ВикитекÑÑ‚',
+ 'wikieditor-loading' => 'Загрузка',
+ 'wikieditor-preview-preference' => 'Включить предпроÑмотр бок о бок',
+ 'wikieditor-preview-tab' => 'ПредпроÑмотр',
+ 'wikieditor-preview-changes-tab' => 'ИзменениÑ',
+ 'wikieditor-preview-loading' => 'Загрузка…',
+ 'wikieditor-previewDialog-preference' => 'Включить диалог предпроÑмотра',
+ 'wikieditor-previewDialog-tab' => 'ПредпроÑмотр',
+ 'wikieditor-previewDialog-loading' => 'Загрузка…',
+ 'wikieditor-publish-preference' => 'Включить пошаговую публикацию',
+ 'wikieditor-publish-button-publish' => 'Опубликовать',
+ 'wikieditor-publish-button-cancel' => 'Отмена',
+ 'wikieditor-publish-dialog-title' => 'Опубликование в проекте {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'ОпиÑание изменений (кратко укажите какие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð¸ произведены):',
+ 'wikieditor-publish-dialog-minor' => 'Малое изменение',
+ 'wikieditor-publish-dialog-watch' => 'Ðаблюдать за Ñтой Ñтраницей',
+ 'wikieditor-publish-dialog-publish' => 'Опубликовать',
+ 'wikieditor-publish-dialog-goback' => 'Ðазад',
+ 'wikieditor-template-editor-preference' => 'Включить редактирование шаблонов Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ форм',
+ 'wikieditor-template-editor-dialog-title' => 'Изменение шаблона',
+ 'wikieditor-template-editor-dialog-submit' => 'Обновить',
+ 'wikieditor-template-editor-dialog-cancel' => 'Отмена',
+ 'wikieditor-templates-preference' => 'Включить Ñворачивание шаблонов',
+ 'wikieditor-toc-preference' => 'Включить оглавление Ñ Ð²Ð¾Ð·Ð¼Ð¾Ð¶Ð½Ð¾Ñтью навигации',
+ 'wikieditor-toc-show' => 'Показать оглавление',
+ 'wikieditor-toc-hide' => 'Скрыть оглавление',
+ 'wikieditor-toolbar' => 'Панель редактированиÑ',
+ 'wikieditor-toolbar-desc' => 'Панель Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ ÑƒÐ»ÑƒÑ‡ÑˆÐµÐ½Ð½Ñ‹Ð¼ юзабилити',
+ 'wikieditor-toolbar-preference' => 'Включить улучшенную панель редактированиÑ',
+ 'wikieditor-toolbar-dialogs-preference' => 'Включить диалоги Ð´Ð»Ñ Ð²Ñтавки ÑÑылок, таблиц и других объектов',
+ 'wikieditor-toolbar-hidesig' => 'Скрыть кнопку подпиÑи на Ñтраницах оÑновного проÑтранÑтва имён',
+ 'wikieditor-toolbar-loading' => 'Загрузка…',
+ 'wikieditor-toolbar-tool-bold' => 'Полужирный',
+ 'wikieditor-toolbar-tool-bold-example' => 'Полужирное начертание',
+ 'wikieditor-toolbar-tool-italic' => 'КурÑив',
+ 'wikieditor-toolbar-tool-italic-example' => 'КурÑивное начертание',
+ 'wikieditor-toolbar-tool-ilink' => 'ВнутреннÑÑ ÑÑылка',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Заголовок ÑÑылки',
+ 'wikieditor-toolbar-tool-xlink' => 'ВнешнÑÑ ÑÑылка (не забудьте о префикÑе http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com заголовок ÑÑылки',
+ 'wikieditor-toolbar-tool-link' => 'СÑылка',
+ 'wikieditor-toolbar-tool-link-title' => 'Ð’Ñтавка ÑÑылки',
+ 'wikieditor-toolbar-tool-link-int' => 'Ðа вики-Ñтраницу',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Ð¦ÐµÐ»ÐµÐ²Ð°Ñ Ñтраница или URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Ðазвание Ñтраницы или URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Показываемый текÑÑ‚:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Введите текÑÑ‚, который должен отображатьÑÑ',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ðа внешнюю веб-Ñтраницу',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL ÑÑылки:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'ТекÑÑ‚ ÑÑылки:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Ð’Ñтавить ÑÑылку',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Отмена',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Страница ÑущеÑтвует',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Страницы не ÑущеÑтвует',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ÐедопуÑтимое название',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'ВнешнÑÑ ÑÑылка',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Проверка ÑущеÑÑ‚Ð²Ð¾Ð²Ð°Ð½Ð¸Ñ Ñтраницы…',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Указанное название недопуÑтимо.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Указанный вами URL похож на ÑÑылку на другую вики-Ñтраницу. Ð’Ñ‹ хотите Ñделать данную ÑÑылку внутренней?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'ВнутреннÑÑ ÑÑылка',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'ВнешнÑÑ ÑÑылка',
+ 'wikieditor-toolbar-tool-link-empty' => 'Ð’Ñ‹ не указали на что ÑÑылатьÑÑ.',
+ 'wikieditor-toolbar-tool-file' => 'Ð’Ñтроенный файл',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'СноÑка',
+ 'wikieditor-toolbar-tool-reference-example' => 'Ð’Ñтавьте Ñюда текÑÑ‚ ÑноÑки',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Отмена',
+ 'wikieditor-toolbar-tool-reference-title' => 'Ð’Ñтавка ÑноÑки',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Ð’Ñтавить',
+ 'wikieditor-toolbar-tool-reference-text' => 'ТекÑÑ‚ ÑноÑки',
+ 'wikieditor-toolbar-tool-signature' => 'ПодпиÑÑŒ Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¾Ð¹ времени',
+ 'wikieditor-toolbar-section-advanced' => 'Дополнительно',
+ 'wikieditor-toolbar-tool-heading' => 'Заголовок',
+ 'wikieditor-toolbar-tool-heading-1' => 'Уровень 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Уровень 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Уровень 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Уровень 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Уровень 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'ТекÑÑ‚ заголовка',
+ 'wikieditor-toolbar-group-format' => 'Формат',
+ 'wikieditor-toolbar-tool-ulist' => 'Маркированный ÑпиÑок',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Элемент маркированного ÑпиÑка',
+ 'wikieditor-toolbar-tool-olist' => 'Ðумерованный ÑпиÑок',
+ 'wikieditor-toolbar-tool-olist-example' => 'Элемент нумерованного ÑпиÑка',
+ 'wikieditor-toolbar-tool-indent' => 'ОтÑтуп',
+ 'wikieditor-toolbar-tool-indent-example' => 'Строка Ñ Ð¾Ñ‚Ñтупом',
+ 'wikieditor-toolbar-tool-nowiki' => 'Игнорировать вики-форматирование',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Ð’Ñтавьте Ñюда текÑÑ‚, который не нужно форматировать',
+ 'wikieditor-toolbar-tool-redirect' => 'Перенаправление',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ðазвание целевой Ñтраницы',
+ 'wikieditor-toolbar-tool-big' => 'Крупный',
+ 'wikieditor-toolbar-tool-big-example' => 'Крупный текÑÑ‚',
+ 'wikieditor-toolbar-tool-small' => 'Мелкий',
+ 'wikieditor-toolbar-tool-small-example' => 'Мелкий текÑÑ‚',
+ 'wikieditor-toolbar-tool-superscript' => 'ÐадÑтрочный',
+ 'wikieditor-toolbar-tool-superscript-example' => 'ÐадÑтрочный текÑÑ‚',
+ 'wikieditor-toolbar-tool-subscript' => 'ПодÑтрочный',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ПодÑтрочный текÑÑ‚',
+ 'wikieditor-toolbar-group-insert' => 'Ð’Ñтавка',
+ 'wikieditor-toolbar-tool-gallery' => 'Ð“Ð°Ð»ÐµÑ€ÐµÑ ÐºÐ°Ñ€Ñ‚Ð¸Ð½Ð¾Ðº',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|ОпиÑание1
+$1:Example.jpg|ОпиÑание2',
+ 'wikieditor-toolbar-tool-newline' => 'ÐÐ¾Ð²Ð°Ñ Ñтрока',
+ 'wikieditor-toolbar-tool-table' => 'Таблица',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! заголовок 1
+! заголовок 2
+! заголовок 3
+|-
+| Ñтрока 1, Ñчейка 1
+| Ñтрока 1, Ñчейка 2
+| Ñтрока 1, Ñчейка 3
+|-
+| Ñтрока 2, Ñчейка 1
+| Ñтрока 2, Ñчейка 2
+| Ñтрока 2, Ñчейка 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ТекÑÑ‚ Ñчейки',
+ 'wikieditor-toolbar-tool-table-example-header' => 'ТекÑÑ‚ заголовка',
+ 'wikieditor-toolbar-tool-table-title' => 'Ð’Ñтавить таблицу',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Строк',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Столбцов',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Добавить заголовочную Ñтроку',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Оформление Ñ Ð³Ñ€Ð°Ð½Ð¸Ñ†Ð°Ð¼Ð¸',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Сделать таблицу Ñортируемой',
+ 'wikieditor-toolbar-tool-table-example' => 'ТекÑÑ‚ Ñчейки',
+ 'wikieditor-toolbar-tool-table-preview' => 'ПредпроÑмотр',
+ 'wikieditor-toolbar-tool-table-insert' => 'Ð’Ñтавить',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Отмена',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Этот диалог не позволÑет вÑтавить таблицу размером более $1 Ñчеек.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Ð’Ñ‹ не указали корректное количеÑтво Ñтрок или Ñтолбцов.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ð’Ñ‹ не можете вÑтавить таблицу Ñ Ð½ÑƒÐ»ÐµÐ²Ñ‹Ð¼ количеÑтвом Ñтрок или Ñтолбцов.',
+ 'wikieditor-toolbar-tool-replace' => 'ПоиÑк и замена',
+ 'wikieditor-toolbar-tool-replace-title' => 'ПоиÑк и замена',
+ 'wikieditor-toolbar-tool-replace-search' => 'Ðайти:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Заменить на:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Учитывать региÑÑ‚Ñ€',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Считать Ñтроку поиÑка регулÑрным выражением',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Ðайти Ñледующее',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Заменить Ñледующее',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Заменить вÑе',
+ 'wikieditor-toolbar-tool-replace-close' => 'Закрыть',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'По вашему запроÑу ничего не найдено.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Произведено замен: $1.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ð’Ñ‹ не указали что Ñледует иÑкать.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Введённое вами регулÑрное выражение ошибочно: $1',
+ 'wikieditor-toolbar-section-characters' => 'СпецÑимволы',
+ 'wikieditor-toolbar-characters-page-latin' => 'ЛатинÑкие',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'ЛатинÑкие раÑширенные',
+ 'wikieditor-toolbar-characters-page-ipa' => 'МФР(IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Символы',
+ 'wikieditor-toolbar-characters-page-greek' => 'ГречеÑкие',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Кириллица',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ÐрабÑкие',
+ 'wikieditor-toolbar-characters-page-persian' => 'ПерÑидÑкие',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Иврит',
+ 'wikieditor-toolbar-characters-page-bangla' => 'БенгальÑкие',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Телугу',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'СингальÑкие',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Гуджарати',
+ 'wikieditor-toolbar-characters-page-thai' => 'ТайÑкие',
+ 'wikieditor-toolbar-characters-page-lao' => 'ЛаоÑÑкие',
+ 'wikieditor-toolbar-characters-page-khmer' => 'КхмерÑкие',
+ 'wikieditor-toolbar-section-help' => 'Справка',
+ 'wikieditor-toolbar-help-heading-description' => 'ОпиÑание',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Что вы вводите',
+ 'wikieditor-toolbar-help-heading-result' => 'Что вы получаете',
+ 'wikieditor-toolbar-help-page-format' => 'Форматирование',
+ 'wikieditor-toolbar-help-page-link' => 'СÑылки',
+ 'wikieditor-toolbar-help-page-heading' => 'Заголовки',
+ 'wikieditor-toolbar-help-page-list' => 'СпиÑки',
+ 'wikieditor-toolbar-help-page-file' => 'Файлы',
+ 'wikieditor-toolbar-help-page-reference' => 'ПримечаниÑ',
+ 'wikieditor-toolbar-help-page-discussion' => 'ОбÑуждение',
+ 'wikieditor-toolbar-help-content-italic-description' => 'КурÑив',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''КурÑивное начертание''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>КурÑивное начертание</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Полужирный',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Полужирное начертание'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Полужирное начертание</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Полужирный курÑив',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Полужирный курÑив'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<em><strong>Полужирный курÑив</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'ВнутреннÑÑ ÑÑылка',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Заголовок Ñтраницы|ТекÑÑ‚ ÑÑылки]]<br />[[Заголовок Ñтраницы]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>ТекÑÑ‚ ÑÑылки</a><br /><a href='#'>Заголовок Ñтраницы</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'ВнешнÑÑ ÑÑылка',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org ТекÑÑ‚ ÑÑылки]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>ТекÑÑ‚ ÑÑылки</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Заголовок 2&nbsp;уровнÑ',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== ТекÑÑ‚ заголовка ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>ТекÑÑ‚ заголовка</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Заголовок 3&nbsp;уровнÑ',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== ТекÑÑ‚ заголовка ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>ТекÑÑ‚ заголовка</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Заголовок 4&nbsp;уровнÑ',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== ТекÑÑ‚ заголовка ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>ТекÑÑ‚ заголовка</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Заголовок 5&nbsp;уровнÑ',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== ТекÑÑ‚ заголовка =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>ТекÑÑ‚ заголовка</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Маркированный ÑпиÑок',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Элемент ÑпиÑка<br />* Элемент ÑпиÑка',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Элемент ÑпиÑка</li><li>Элемент ÑпиÑка</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Ðумерованный ÑпиÑок',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Элемент ÑпиÑка<br /># Элемент ÑпиÑка',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Элемент ÑпиÑка</li><li>Элемент ÑпиÑка</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Ð’Ñтроенный файл',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|ПоÑÑнительный текÑÑ‚]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='
+ПоÑÑнительный текÑÑ‚' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Увеличить' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>
+ПоÑÑнительный текÑÑ‚</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Примечание',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'ТекÑÑ‚ Ñтраницы.&lt;ref name="test"&gt;[http://www.example.org ТекÑÑ‚ ÑÑылки], дополнительный текÑÑ‚.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "ТекÑÑ‚ Ñтраницы.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Дополнительное иÑпользование той же ÑÑылки',
+ 'wikieditor-toolbar-help-content-rereference-result' => "ТекÑÑ‚ Ñтраницы<sup><a href='#'>[1]</a></sup>.",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Показывать примечаниÑ',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>ТекÑÑ‚ ÑÑылки</a>, дополнительный текÑÑ‚.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ПодпиÑÑŒ Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÐºÐ¾Ð¹ времени',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Ð˜Ð¼Ñ ÑƒÑ‡Ð°Ñтника</a> (<a href='#' title='{{#special:mytalk}}'>обÑуждение</a>) 15:54, 10 Ð¸ÑŽÐ½Ñ 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ПодпиÑÑŒ',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Ð˜Ð¼Ñ ÑƒÑ‡Ð°Ñтника</a> (<a href='#' title='{{#special:mytalk}}'>обÑуждение</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'ОтÑтуп',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Обычный текÑÑ‚<br />:ТекÑÑ‚ Ñ Ð¾Ñ‚Ñтупом<br />::ТекÑÑ‚ Ñ Ð¾Ñ‚Ñтупом',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Обычный текÑÑ‚<dl><dd>ТекÑÑ‚ Ñ Ð¾Ñ‚Ñтупом<dl><dd>ТекÑÑ‚ Ñ Ð¾Ñ‚Ñтупом</dd></dl></dd></dl>',
+);
+
+/** Rusyn (РуÑиньÑкый)
+ * @author Gazeb
+ */
+$messages['rue'] = array(
+ 'wikieditor' => 'РоÑшыреный Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÐµÐ´Ñ–Ñ‚Ð¾Ð²Ð°Ð½Ñ Ð²Ñ–ÐºÑ–Ñ‚ÐµÐºÑту',
+ 'wikieditor-desc' => 'Забезпечує роÑшырительный Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÐµÐ´Ñ–Ñ‚Ð¾Ð²Ð°Ð½Ñ Ð²Ñ–ÐºÑ–Ñ‚ÐµÐºÑту з богато функціоналныма модулами',
+ 'wikieditor-wikitext-tab' => 'ВікітекÑÑ‚',
+ 'wikieditor-loading' => 'Ðаграває ÑÑ',
+ 'wikieditor-preview-preference' => 'Запнути наглÑды в панелї',
+ 'wikieditor-preview-tab' => 'ÐаглÑд',
+ 'wikieditor-preview-changes-tab' => 'Зміны',
+ 'wikieditor-preview-loading' => 'ÐаграванÑ...',
+ 'wikieditor-previewDialog-preference' => 'ХоÑновати діалоґ про наглÑд',
+ 'wikieditor-previewDialog-tab' => 'ÐаглÑд',
+ 'wikieditor-previewDialog-loading' => 'ÐаграванÑ...',
+ 'wikieditor-publish-preference' => 'Запнути кроковане публікованÑ',
+ 'wikieditor-publish-button-publish' => 'Публіковати',
+ 'wikieditor-publish-button-cancel' => 'Сторно',
+ 'wikieditor-publish-dialog-title' => 'Публіковати на {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'ÐžÐ¿Ð¸Ñ ÐµÐ´Ñ–Ñ‚Ð¾Ð²Ð°Ð½Ñ (короткый Ð¾Ð¿Ð¸Ñ Ð·Ð¼Ñ–Ð½, зробленых вами):',
+ 'wikieditor-publish-dialog-minor' => 'Мала едітаціÑ',
+ 'wikieditor-publish-dialog-watch' => 'Слїдовати тоту Ñторінку',
+ 'wikieditor-publish-dialog-publish' => 'Публіковати',
+ 'wikieditor-publish-dialog-goback' => 'Ðазад',
+ 'wikieditor-template-editor-preference' => 'Запнути формуларову едітацію шаблон вікі',
+ 'wikieditor-template-editor-dialog-title' => 'Едітовати шаблону',
+ 'wikieditor-template-editor-dialog-submit' => 'Обновити',
+ 'wikieditor-template-editor-dialog-cancel' => 'Сторно',
+ 'wikieditor-templates-preference' => 'Запнути Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½',
+ 'wikieditor-toc-preference' => 'Запнути навіґовательный обÑÑг',
+ 'wikieditor-toc-show' => 'Вказати обÑÑг',
+ 'wikieditor-toc-hide' => 'Сховати обÑÑг',
+ 'wikieditor-toolbar' => 'Едітачный панел інштрументів',
+ 'wikieditor-toolbar-desc' => 'Едітачный панел інштрументів з вылїпшенов хоÑновательноÑтёв',
+ 'wikieditor-toolbar-preference' => 'Запнути вылїпшеный панел інштрументів',
+ 'wikieditor-toolbar-dialogs-preference' => 'Поволити діалоґы про Ð²ÐºÐ»Ð°Ð´Ð°Ð½Ñ Ð¾Ð´ÐºÐ°Ð·Ñ–Ð², таблиць ітд.',
+ 'wikieditor-toolbar-loading' => 'ÐаграванÑ...',
+ 'wikieditor-toolbar-tool-bold' => 'Тучне',
+ 'wikieditor-toolbar-tool-bold-example' => 'Тучный текÑÑ‚',
+ 'wikieditor-toolbar-tool-italic' => 'Курзіва',
+ 'wikieditor-toolbar-tool-italic-example' => 'ТекÑÑ‚ курзівов',
+ 'wikieditor-toolbar-tool-ilink' => 'Інтерный одказ',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Ðазва одказу',
+ 'wikieditor-toolbar-tool-xlink' => 'ЕкÑтерный одказ (не забудьте http:// prefix)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com назва одказу',
+ 'wikieditor-toolbar-tool-link' => 'Одказ',
+ 'wikieditor-toolbar-tool-link-title' => 'Вложыти одказ',
+ 'wikieditor-toolbar-tool-link-int' => 'Ðа вікі-Ñторінку',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Цілёва Ñторінка або URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Ðазва Ñторінкы або URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'ТекÑÑ‚ на вказанÑ:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'ТекÑÑ‚, котрый ÑÑ Ð¼Ð°Ñ” зобразити',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ðа екÑтерну вебову Ñторінку',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Ціль одказу:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'ТекÑÑ‚ одказу:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Вложыти одказ',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Сторно',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Сторінка екзіÑтує',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Сторінка не екзіÑтує',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ÐеприпуÑтна назва',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'ЕкÑтерный одказ',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Перевірка екзіÑтенції Ñторінкы...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Вами задана назва Ñ” неприпуÑтна.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL котре Ñьте задали вызерать Ñк одказ на іншу Ñторінку той вікі. Хочете з нєй зробити інтерный одказ?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Інтерный одказ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'ЕкÑтерный одказ',
+ 'wikieditor-toolbar-tool-link-empty' => 'МуÑите увеÑти ціль одказу.',
+ 'wikieditor-toolbar-tool-file' => 'Вложеный файл',
+ 'wikieditor-toolbar-tool-file-example' => 'Приклад.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Позначкы',
+ 'wikieditor-toolbar-tool-reference-example' => 'Ту вложте текÑÑ‚ позначкы',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Сторно',
+ 'wikieditor-toolbar-tool-reference-title' => 'Вложыти референцію',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Вложыти',
+ 'wikieditor-toolbar-tool-reference-text' => 'ТекÑÑ‚ референції',
+ 'wikieditor-toolbar-tool-signature' => 'ÐŸÑ–Ð´Ð¿Ð¸Ñ Ñ– датум',
+ 'wikieditor-toolbar-section-advanced' => 'Додатково',
+ 'wikieditor-toolbar-tool-heading' => 'ÐадпиÑ',
+ 'wikieditor-toolbar-tool-heading-1' => '1 рівень',
+ 'wikieditor-toolbar-tool-heading-2' => '2 рівень',
+ 'wikieditor-toolbar-tool-heading-3' => '3 рівень',
+ 'wikieditor-toolbar-tool-heading-4' => '4 рівень',
+ 'wikieditor-toolbar-tool-heading-5' => '5 рівень',
+ 'wikieditor-toolbar-tool-heading-example' => 'ТекÑÑ‚ надпиÑу',
+ 'wikieditor-toolbar-group-format' => 'Формат',
+ 'wikieditor-toolbar-tool-ulist' => 'Маркованый ÑпиÑок',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Елемент маркованого ÑпиÑку',
+ 'wikieditor-toolbar-tool-olist' => 'ЧіÑлованый ÑпиÑок',
+ 'wikieditor-toolbar-tool-olist-example' => 'Елемент чіÑлованого ÑпиÑку',
+ 'wikieditor-toolbar-tool-indent' => 'ОдÑек',
+ 'wikieditor-toolbar-tool-indent-example' => 'ОдÑадженый Ñ€Ñдок',
+ 'wikieditor-toolbar-tool-nowiki' => 'Іґноровати вікі-форматованÑ',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Вложте ту неформатованый текÑÑ‚',
+ 'wikieditor-toolbar-tool-redirect' => 'ПеренапрÑмлїнÑ',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ðазва цілёвой Ñторінкы',
+ 'wikieditor-toolbar-tool-big' => 'Великый',
+ 'wikieditor-toolbar-tool-big-example' => 'Великый текÑÑ‚',
+ 'wikieditor-toolbar-tool-small' => 'Маленькый',
+ 'wikieditor-toolbar-tool-small-example' => 'Малый текÑÑ‚',
+ 'wikieditor-toolbar-tool-superscript' => 'ÐадрÑдковый',
+ 'wikieditor-toolbar-tool-superscript-example' => 'ÐадрÑдковый текÑÑ‚',
+ 'wikieditor-toolbar-tool-subscript' => 'ПідрÑдковый',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ПідрÑдковый текÑÑ‚',
+ 'wikieditor-toolbar-group-insert' => 'Вложыти',
+ 'wikieditor-toolbar-tool-gallery' => 'ÒалеріÑ',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|ОпиÑ1
+$1:Example.jpg|ОпиÑ2',
+ 'wikieditor-toolbar-tool-newline' => 'Ðовый Ñ€Ñдок',
+ 'wikieditor-toolbar-tool-table' => 'ТаблицÑ',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! Ð½Ð°Ð´Ð¿Ð¸Ñ 1
+! Ð½Ð°Ð´Ð¿Ð¸Ñ 2
+! Ð½Ð°Ð´Ð¿Ð¸Ñ 3
+|-
+| Ñ€Ñдок 1, коморка 1
+| Ñ€Ñдок 1, коморка 2
+| Ñ€Ñдок 1, коморка 3
+|-
+| Ñ€Ñдок 2, коморка 1
+| Ñ€Ñдок 2, коморка 2
+| Ñ€Ñдок 2, коморка 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ТекÑÑ‚ коморкы',
+ 'wikieditor-toolbar-tool-table-example-header' => 'ТекÑÑ‚ надпиÑу',
+ 'wikieditor-toolbar-tool-table-title' => 'Вложыти таблицю',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'РÑдків',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Стовпців',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Придати Ñ€Ñдок надпиÑу',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Штіл з окраÑми',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Придати до таблицї можноÑÑ‚ÑŒ ÑортованÑ',
+ 'wikieditor-toolbar-tool-table-example' => 'Приклад',
+ 'wikieditor-toolbar-tool-table-preview' => 'ÐаглÑд',
+ 'wikieditor-toolbar-tool-table-insert' => 'Вложыти',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Сторно',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Тот діалоґ не доволює вложыти таблицю з веце Ñк $1 коморками.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'МуÑите задати платне чіÑло Ñ€Ñдків або Ñтовпців.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ðе можете вложыти таблицю з нуловым почтом Ñ€Ñдків або Ñтовпців.',
+ 'wikieditor-toolbar-tool-replace' => 'Ðайти Ñ– нагородити',
+ 'wikieditor-toolbar-tool-replace-title' => 'Ðайти Ñ– нагородити',
+ 'wikieditor-toolbar-tool-replace-search' => 'Ðайти:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Замінити на:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Розлишыти великоÑÑ‚ÑŒ пиÑмен',
+ 'wikieditor-toolbar-tool-replace-regex' => 'ГлÑдати помочов реґуларного выразу',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Ðайти далшый',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Замінити далшый',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Замінити вшытко',
+ 'wikieditor-toolbar-tool-replace-close' => 'Заперти',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Заданому глÑданю ніч не одповідать.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Зроблено замін: $1.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'МуÑите увеÑти што ÑÑ Ð¼Ð°Ñ” глÑдати.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Заданый реґуларный выраз не є платный: $1',
+ 'wikieditor-toolbar-section-characters' => 'Шпеціалны Ñімболы',
+ 'wikieditor-toolbar-characters-page-latin' => 'ЛатиньÑкы',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'РоÑшырена латинка',
+ 'wikieditor-toolbar-characters-page-ipa' => 'МФР(IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Сімболы',
+ 'wikieditor-toolbar-characters-page-greek' => 'Òрецькы',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'КірíліцÑ',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ÐрабÑькы',
+ 'wikieditor-toolbar-characters-page-persian' => 'ПерÑькы',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'ГебрейÑкы',
+ 'wikieditor-toolbar-characters-page-bangla' => 'БенгалÑкы',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Телуґу',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'СінгалÑкы',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Òуджараті',
+ 'wikieditor-toolbar-characters-page-thai' => 'ТайÑькы',
+ 'wikieditor-toolbar-characters-page-lao' => 'ЛаоÑькы',
+ 'wikieditor-toolbar-characters-page-khmer' => 'КгмерÑькы',
+ 'wikieditor-toolbar-section-help' => 'Поміч',
+ 'wikieditor-toolbar-help-heading-description' => 'ПопиÑ',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Што пишете',
+ 'wikieditor-toolbar-help-heading-result' => 'Што вы обтримете',
+ 'wikieditor-toolbar-help-page-format' => 'ФорматованÑ',
+ 'wikieditor-toolbar-help-page-link' => 'Одказы',
+ 'wikieditor-toolbar-help-page-heading' => 'ÐадпиÑÑ‹',
+ 'wikieditor-toolbar-help-page-list' => 'СпиÑкы',
+ 'wikieditor-toolbar-help-page-file' => 'Файлы',
+ 'wikieditor-toolbar-help-page-reference' => 'Референції',
+ 'wikieditor-toolbar-help-page-discussion' => 'ДіÑкузіÑ',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Курзіва',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''ТекÑÑ‚ курзівов''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>ТекÑÑ‚ курзівов</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Тучне',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Тучный текÑÑ‚'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Тучный текÑÑ‚</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Тучна курзіва',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''ТекÑÑ‚ тучнов курзівов'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>ТекÑÑ‚ тучнов курзівов</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Інтерный одказ',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Ðазва Ñторінкы|ТекÑÑ‚ одказу]]<br />[[Ðазва Ñторінкы]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>ТекÑÑ‚ одказу</a><br /><a href='#'>Ðазва Ñторінкы</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'ЕкÑтерный одказ',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org ТекÑÑ‚ одказу]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>ТекÑÑ‚ одказу</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'ÐÐ°Ð´Ð¿Ð¸Ñ 2<sup>го</sup> рівнÑ',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== ТекÑÑ‚ надпиÑу ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>ТекÑÑ‚ надпиÑу</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'ÐÐ°Ð´Ð¿Ð¸Ñ 3<sup>го</sup> рівнÑ',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== ТекÑÑ‚ надпиÑу ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>ТекÑÑ‚ надпиÑу</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'ÐÐ°Ð´Ð¿Ð¸Ñ 4<sup>го</sup> рівнÑ',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== ТекÑÑ‚ надпиÑу ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>ТекÑÑ‚ надпиÑу</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'ÐÐ°Ð´Ð¿Ð¸Ñ 5<sup>го</sup> рівнÑ',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== ТекÑÑ‚ надпиÑу =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>ТекÑÑ‚ надпиÑу</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Маркованый ÑпиÑок',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Положка ÑпиÑку<br />* Положка ÑпиÑку',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Положка ÑпиÑку</li><li>Положка ÑпиÑку</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'ЧіÑлованый ÑпиÑок',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Положка ÑпиÑку<br /># Положка ÑпиÑку',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Положка ÑпиÑку</li><li>Положка ÑпиÑку</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Ð’Ð»Ð¾Ð¶Ñ–Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|ПоÑÑнюючій текÑÑ‚]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='ПоÑÑнюючій текÑÑ‚' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Звекшыти' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>ПоÑÑнюючій текÑÑ‚</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Позначка',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'ТекÑÑ‚ Ñторінкы&lt;ref name="test"&gt;[http://www.example.org ТекÑÑ‚ одказу], додатковый текÑÑ‚.&lt;/ref&gt;.',
+ 'wikieditor-toolbar-help-content-reference-result' => "ТекÑÑ‚ Ñторінкы.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Далшый одказ на тоту Ñаму позначку',
+ 'wikieditor-toolbar-help-content-rereference-result' => "ТекÑÑ‚ Ñторінкы.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Вказати позначкы',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>ТекÑÑ‚ одказу</a>, додатковый текÑÑ‚.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ÐŸÑ–Ð´Ð¿Ð¸Ñ Ñ– датум',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Мено хоÑнователÑ</a> (<a href='#' title='{{#special:mytalk}}'>діÑкузії</a>) 15:54, 10 юна 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ПідпиÑ',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Мено хоÑнователÑ</a> (<a href='#' title='{{#special:mytalk}}'>діÑкузії</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'ОдÑтуп',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Звычайный текÑÑ‚<br />:ТекÑÑ‚ з одÑтупом<br />::ТекÑÑ‚ з одÑтупом',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Звычайный текÑÑ‚<dl><dd>ТекÑÑ‚ з одÑтупом<dl><dd>ТекÑÑ‚ з одÑтупом</dd></dl></dd></dl>',
+);
+
+/** Sanskrit (संसà¥à¤•à¥ƒà¤¤)
+ * @author Bhawani Gautam
+ */
+$messages['sa'] = array(
+ 'wikieditor-toolbar-section-advanced' => 'उनà¥à¤¨à¤¤à¤®à¥',
+ 'wikieditor-toolbar-tool-heading-2' => 'शीरà¥à¤·à¤•à¤®à¥ 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'शीरà¥à¤·à¤•à¤®à¥',
+ 'wikieditor-toolbar-tool-heading-4' => 'शीरà¥à¤·à¤•à¤®à¥ 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'शीरà¥à¤·à¤•à¤®à¥',
+ 'wikieditor-toolbar-section-characters' => 'विशेष-वरà¥à¤£à¤¾à¤¨à¤¿',
+);
+
+/** Yakut (Саха тыла)
+ * @author HalanTul
+ */
+$messages['sah'] = array(
+ 'wikieditor' => 'Биики тиÑкиһи ÑÑ€ÑдÑÑкÑийÑлиир кÑÒ¥Ñтиллибит интерфейÑ',
+ 'wikieditor-desc' => 'Биики тиÑÐºÐ¸Ñ ÐºÑÒ¥ÑтиллÑÑ€ интерфейÑын уонна модуллар көмөлөрүнÑн атын кыахтары хааччыйар',
+ 'wikieditor-wikitext-tab' => 'Биики тиÑкиÑ',
+ 'wikieditor-loading' => 'Хачайдааһын',
+ 'wikieditor-preview-preference' => 'Инники көрүүнү ÑÑргÑÑÑ‚ÑһиннÑÑ€Ñ ÐºÓ©Ñ€Ð´Ó©Ñ€',
+ 'wikieditor-preview-tab' => 'Инники көрүү',
+ 'wikieditor-preview-changes-tab' => 'Уларыйыылар',
+ 'wikieditor-preview-loading' => 'Хачайдана турар...',
+ 'wikieditor-previewDialog-preference' => 'Ð­Ñ€Ð´Ñ ÐºÓ©Ñ€Ò¯Ò¯ диалогын холбуурга',
+ 'wikieditor-previewDialog-tab' => 'Инники көрүү',
+ 'wikieditor-previewDialog-loading' => 'Хачайдана турар...',
+ 'wikieditor-publish-preference' => 'Биирдии хаамыынан бÑчÑÑÐºÐºÑ Ñ‚Ð°Ò»Ð°Ð°Ñ€Ñ‹Ñ‹Ð½Ñ‹ холбоо',
+ 'wikieditor-publish-button-publish' => 'БÑчÑÑÐºÐºÑ Ñ‚Ð°Ò»Ð°Ð°Ñ€Ð°Ñ€Ð³Ð°',
+ 'wikieditor-publish-button-cancel' => 'Төнүн',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}} бырайыакка бÑчÑÑÑ‚Ñ‚Ñммит',
+ 'wikieditor-publish-dialog-summary' => 'Уларытыы туһунан (тугу уларыппыккын кылгаÑтык кÑпÑÑÑ):',
+ 'wikieditor-publish-dialog-minor' => 'Кыра Ñуолталаах уларытыы',
+ 'wikieditor-publish-dialog-watch' => 'Бу ÑирÑйи кÑтииргÑ',
+ 'wikieditor-publish-dialog-publish' => 'БÑчÑÑттииргÑ',
+ 'wikieditor-publish-dialog-goback' => 'Төнүн',
+ 'wikieditor-template-editor-preference' => 'Халыыптары форма көмөтүнÑн уларытары холбоо',
+ 'wikieditor-template-editor-dialog-title' => 'Халыыбы уларытыы',
+ 'wikieditor-template-editor-dialog-submit' => 'Саҥардан биÑÑ€',
+ 'wikieditor-template-editor-dialog-cancel' => 'Тохтот',
+ 'wikieditor-templates-preference' => 'Халыыптары Ñабыыны холбоо',
+ 'wikieditor-toc-preference' => 'ÐавигациÑлаах иһинÑÑҕини холбуурга',
+ 'wikieditor-toc-show' => 'ИһинÑÑҕитÑ',
+ 'wikieditor-toc-hide' => 'ИһинÑÑҕитин киÑÑ‚ÑÑ',
+ 'wikieditor-toolbar' => 'Көннөрүү хаптаһына (панель)',
+ 'wikieditor-toolbar-desc' => 'ТупÑарыллыбыт уларытыы хаптаһына',
+ 'wikieditor-toolbar-preference' => 'ТупÑарыллыбыт уларытыы хаптаһынын холбуурга',
+ 'wikieditor-toolbar-dialogs-preference' => 'СигÑлÑри, таабыллары уонна атын объектары киллÑÑ€ÑÑ€ Ñамалыктары холбуурга',
+ 'wikieditor-toolbar-loading' => 'КиллÑрии...',
+ 'wikieditor-toolbar-tool-bold' => 'Модьу',
+ 'wikieditor-toolbar-tool-bold-example' => 'Модьу бичик',
+ 'wikieditor-toolbar-tool-italic' => 'ИҥнÑри',
+ 'wikieditor-toolbar-tool-italic-example' => 'ИҥнÑри бичик',
+ 'wikieditor-toolbar-tool-ilink' => 'Ð˜Ñ ÑигÑ',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Ð¡Ð¸Ð³Ñ Ð±Ð°Ò»Ð°',
+ 'wikieditor-toolbar-tool-xlink' => 'Ð¢Ð°Ñ ÑÐ¸Ð³Ñ (http:// диÑни умнума)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com ÑÐ¸Ð³Ñ Ð±Ñ‹Ò»Ð°Ð°Ñ€Ñ‹Ñ‹Ñ‚Ð°',
+ 'wikieditor-toolbar-tool-link' => 'СигÑ',
+ 'wikieditor-toolbar-tool-link-title' => 'СигÑни туруоруу',
+ 'wikieditor-toolbar-tool-link-int' => 'Биики ÑирÑйгÑ',
+ 'wikieditor-toolbar-tool-link-int-target' => 'СирÑй баһа:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'СирÑй аата ÑбÑÑ‚ÑÑ€ URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Ð¡Ð¸Ð³Ñ Ñ‚Ð¸ÑкÑÑ:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'КөÑÑ‚Ò¯Ó©Ñ…Ñ‚ÑÑÑ… тиÑкиһи Ñуруй',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ð¢Ð°Ñ Ð²ÐµÐ±-ÑирÑйгÑ',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Ð¡Ð¸Ð³Ñ URL-а:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Ð¡Ð¸Ð³Ñ Ñ‚Ð¸ÑкÑÑ:',
+ 'wikieditor-toolbar-tool-link-insert' => 'СигÑни угуу',
+ 'wikieditor-toolbar-tool-link-cancel' => 'БигÑргÑтимÑ',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'СирÑй баар',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'СирÑй Ñуох',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Сатаммат баÑ',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ð¢Ð°Ñ ÑигÑ',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'СирÑй баарын тургутуу...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Суруллубут аат туттуллара Ñатаммат.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'КиллÑрбит URL-аадырыһыҥ атын биики ÑирÑÐ¹Ð³Ñ ÑигÑнÑÑ€. Ð˜Ñ ÑÐ¸Ð³Ñ Ð¾Ò¥Ð¾Ñ€Ð¾Ñ€Ð¾Ð¾Ñ€Ñƒ гынаҕын дуо?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Ð˜Ñ ÑигÑ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ð¢Ð°Ñ ÑигÑ',
+ 'wikieditor-toolbar-tool-link-empty' => 'СигÑтин ыйбатаххын.',
+ 'wikieditor-toolbar-tool-file' => 'ИһинÑÑҕи билÑ',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Быһаарыы',
+ 'wikieditor-toolbar-tool-reference-example' => 'Манна быһаарыы тиÑкиһин киллÑÑ€',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Тохтот',
+ 'wikieditor-toolbar-tool-reference-title' => 'СноÑканы угуу',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Угуу',
+ 'wikieditor-toolbar-tool-reference-text' => 'СноÑка тиÑкиһÑ',
+ 'wikieditor-toolbar-tool-signature' => 'Илии баттааһын уонна кÑмÑ',
+ 'wikieditor-toolbar-section-advanced' => 'Дириҥник',
+ 'wikieditor-toolbar-tool-heading' => 'БаÑтарын тиһигÑ',
+ 'wikieditor-toolbar-tool-heading-1' => '1 таһым',
+ 'wikieditor-toolbar-tool-heading-2' => '2 таһым',
+ 'wikieditor-toolbar-tool-heading-3' => '3 таһым',
+ 'wikieditor-toolbar-tool-heading-4' => '4 таһым',
+ 'wikieditor-toolbar-tool-heading-5' => '5 таһым',
+ 'wikieditor-toolbar-tool-heading-example' => 'Ð‘Ð°Ñ Ñ‚Ð¸ÑкиһÑ',
+ 'wikieditor-toolbar-group-format' => 'Формаата:',
+ 'wikieditor-toolbar-tool-ulist' => 'БÑлиÑлÑÑÑ… тиһик',
+ 'wikieditor-toolbar-tool-ulist-example' => 'БÑлиÑлÑÑÑ… тиһик бÑлиÑÑ‚Ñ',
+ 'wikieditor-toolbar-tool-olist' => 'ÐÑ…Ñааннаах тиһик',
+ 'wikieditor-toolbar-tool-olist-example' => 'ÐÑ…Ñааннаах тиһик бÑлиÑÑ‚Ñ',
+ 'wikieditor-toolbar-tool-indent' => 'Кыһыл Ñтрока',
+ 'wikieditor-toolbar-tool-indent-example' => 'Кыһыл Ñтрока',
+ 'wikieditor-toolbar-tool-nowiki' => 'Биики формааттааһынын билинимÑ',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Формааттаныа Ñуохтаах тиÑкиһи манна киллÑÑ€',
+ 'wikieditor-toolbar-tool-redirect' => 'Утаарыы',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Сорук-ÑирÑй аата',
+ 'wikieditor-toolbar-tool-big' => 'Бөдөҥ',
+ 'wikieditor-toolbar-tool-big-example' => 'Бөдөҥ бичик',
+ 'wikieditor-toolbar-tool-small' => 'Кыра',
+ 'wikieditor-toolbar-tool-small-example' => 'Хоччоххой бичик',
+ 'wikieditor-toolbar-tool-superscript' => 'УÑтуруока үрдүнÑÑҕи',
+ 'wikieditor-toolbar-tool-superscript-example' => 'УÑтуруока үрдүнÑÑҕи бичик',
+ 'wikieditor-toolbar-tool-subscript' => 'УÑтуруока аннынааҕы',
+ 'wikieditor-toolbar-tool-subscript-example' => 'УÑтуруока аннынааҕы бичик',
+ 'wikieditor-toolbar-group-insert' => 'Угуу',
+ 'wikieditor-toolbar-tool-gallery' => 'Ойуулар галереÑлара',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Сурук1
+$1:Example.jpg|Сурук2',
+ 'wikieditor-toolbar-tool-newline' => 'Кыһыл уÑтуруока',
+ 'wikieditor-toolbar-tool-table' => 'Таабыл',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! баһа 1
+! баһа 2
+! баһа 3
+|-
+| Ñтрока 1, Ñчейка 1
+| Ñтрока 1, Ñчейка 2
+| Ñтрока 1, Ñчейка 3
+|-
+| Ñтрока 2, Ñчейка 1
+| Ñтрока 2, Ñчейка 2
+| Ñтрока 2, Ñчейка 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ТиÑÐºÐ¸Ñ Ñ…Ð°Ñ€Ð°Ò•Ð°',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Баһын аата',
+ 'wikieditor-toolbar-tool-table-title' => 'ТабылыыÑÑаны угуу',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'УÑтуруоката',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Колуонката',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Ð‘Ð°Ñ ÑƒÑтуруоканы Ñбии',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Хаймыылаах иÑтиил',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Таабылы наарданар гын',
+ 'wikieditor-toolbar-tool-table-example' => 'ТиÑÐºÐ¸Ñ Ñ…Ð°Ñ€Ð°Ò•Ð°',
+ 'wikieditor-toolbar-tool-table-preview' => 'Ð­Ñ€Ð´Ñ ÐºÓ©Ñ€Ò¯Ò¯',
+ 'wikieditor-toolbar-tool-table-insert' => 'КиллÑÑ€ÑргÑ',
+ 'wikieditor-toolbar-tool-table-cancel' => 'БигÑргÑтимÑ',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Бу диалог $1 килиÑккÑÑ‚Ñ‚Ñн ордугу угары көҥүллÑÑбÑÑ‚.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'УÑтуруока уонна холуоҥка көҥүллÑнÑÑ€ ахÑаанын туруорбатаххын.',
+ 'wikieditor-toolbar-tool-table-zero' => 'УÑтуруоката ÑбÑÑ‚ÑÑ€ холуоҥката нуулга Ñ‚ÑҥнÑÒ»ÑÑ€ таабылы угар кыаҕын Ñуох.',
+ 'wikieditor-toolbar-tool-replace' => 'Көрдөөһүн уонна уларытыы',
+ 'wikieditor-toolbar-tool-replace-title' => 'Бул уонна уларыт',
+ 'wikieditor-toolbar-tool-replace-search' => 'Көрдөөһүн:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Манан уларыт:',
+ 'wikieditor-toolbar-tool-replace-case' => 'РегиÑтрын учуоттуурга',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Көрдөөһүн уÑтуруокатын регулÑрнай выражение курдук көрөргө',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'ÐныгыÑкыны көрдөө',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'ÐныгыÑкыны уларыт',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Барытын уларыт',
+ 'wikieditor-toolbar-tool-replace-close' => 'Сап',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Эн көрдөбүлгүнÑн туох да көÑтүбÑÑ‚Ñ.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Бачча уларытыы оҥоһулунна: $1.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Тугу көрдүүргүн ÑппÑÑ‚Ñххин.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Суруйбут Ñтииҥ Ñыыһалаах: $1',
+ 'wikieditor-toolbar-section-characters' => 'Ðнал бÑлиÑлÑÑ€',
+ 'wikieditor-toolbar-characters-page-latin' => 'Латыынныы',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Латыынныы кÑтирÑтиллибиттÑÑ€',
+ 'wikieditor-toolbar-characters-page-ipa' => 'МФР(IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'БÑлиÑлÑÑ€',
+ 'wikieditor-toolbar-characters-page-greek' => 'ГириÑктии',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Кириллица',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Ðраабтыы',
+ 'wikieditor-toolbar-characters-page-persian' => 'ПерÑиÑ',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Иврит',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Бенгаал',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Телугу',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Сингаал',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Гудьараат',
+ 'wikieditor-toolbar-characters-page-thai' => 'Таай',
+ 'wikieditor-toolbar-characters-page-lao' => 'ЛаоÑ',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Кхмер',
+ 'wikieditor-toolbar-section-help' => 'Көмө',
+ 'wikieditor-toolbar-help-heading-description' => 'Быһаарыыта',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Тугу киллÑÑ€Ñҕин',
+ 'wikieditor-toolbar-help-heading-result' => 'Туох тахÑара',
+ 'wikieditor-toolbar-help-page-format' => 'Формааттааһын',
+ 'wikieditor-toolbar-help-page-link' => 'СигÑлÑÑ€',
+ 'wikieditor-toolbar-help-page-heading' => 'БаÑтара',
+ 'wikieditor-toolbar-help-page-list' => 'ТиһиктÑÑ€',
+ 'wikieditor-toolbar-help-page-file' => 'БилÑлÑÑ€',
+ 'wikieditor-toolbar-help-page-reference' => 'Быһаарыылар',
+ 'wikieditor-toolbar-help-page-discussion' => 'Ырытыы',
+ 'wikieditor-toolbar-help-content-italic-description' => 'ИҥнÑри',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''ИҥнÑри бичик''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>ИҥнÑри бичик</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Модьу',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Модьу бичик'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Модьу бичик</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Модьу &amp; иҥнÑри',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Модьу &amp; иҥнÑри'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Модьу &amp; иҥнÑри бичик</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Ð˜Ñ ÑигÑ',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[СирÑй баһын аата|Ð¡Ð¸Ð³Ñ Ñуруга]]<br />[[СирÑй баһын аата]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Ð¡Ð¸Ð³Ñ Ñуруга</a><br /><a href='#'>СирÑй баһын аата</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ð¢Ð°Ñ ÑигÑ',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Ð¡Ð¸Ð³Ñ Ñуруга]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Ð¡Ð¸Ð³Ñ Ð±Ñ‹Ò»Ð°Ð°Ñ€Ñ‹Ñ‹Ñ‚Ð°</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Ðат 2-Ñ Ñ‚Ð°Ò»Ñ‹Ð¼Ð°',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Ð‘Ð°Ñ Ð°Ð°Ñ‚Ð° ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Ð‘Ð°Ñ Ð°Ð°Ñ‚Ð°</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Ðат 3-Ñ Ñ‚Ð°Ò»Ñ‹Ð¼Ð°',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Ð‘Ð°Ñ Ð°Ð°Ñ‚Ð° ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Ð‘Ð°Ñ Ð°Ð°Ñ‚Ð°</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Ðат 4-Ñ Ñ‚Ð°Ò»Ñ‹Ð¼Ð°',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Ð‘Ð°Ñ Ð°Ð°Ñ‚Ð° ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Ð‘Ð°Ñ Ð°Ð°Ñ‚Ð°</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Ðат 5-Ñ Ñ‚Ð°Ò»Ñ‹Ð¼Ð°',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Ð‘Ð°Ñ Ð°Ð°Ñ‚Ð° =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Ð‘Ð°Ñ Ð°Ð°Ñ‚Ð°</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'БÑлиÑлÑÑÑ… тиһик',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Тиһик бÑлиÑÑ‚Ñ<br />* Тиһик бÑлиÑÑ‚Ñ',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Тиһик бÑлиÑÑ‚Ñ</li><li>Тиһик бÑлиÑÑ‚Ñ</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'ÐÑ…Ñааннаах тиһик',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Тиһик бÑлиÑÑ‚Ñ<br /># Тиһик бÑлиÑÑ‚Ñ',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Тиһик бÑлиÑÑ‚Ñ</li><li>Тиһик бÑлиÑÑ‚Ñ</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'ИһинÑÑҕи билÑ',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Быһаарыыта]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='
+Быһаарыы Ñурук' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>
+Быһаарыы Ñурук</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Быһаарыы',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'СирÑй тиÑкиһÑ.&lt;ref name="test"&gt;[http://www.example.org Ð¡Ð¸Ð³Ñ Ð±Ñ‹Ò»Ð°Ð°Ñ€Ñ‹Ñ‹Ñ‚Ð°], Ñбии быһаарыы.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "СирÑй тиÑкиһÑ.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Ити ÑигÑни Ñбии туттуу',
+ 'wikieditor-toolbar-help-content-rereference-result' => "СирÑй тиÑкиһÑ.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Быһаарыылары көрдөрүү',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Ð¡Ð¸Ð³Ñ Ð±Ñ‹Ò»Ð°Ð°Ñ€Ñ‹Ñ‹Ñ‚Ð°</a>, Ñбии быһаарыы.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Илии батааһын кÑмин кытта',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Кытааччы аата</a> (<a href='#' title='{{#special:mytalk}}'>ырытыы</a>) 15:54, БÑÑ Ñ‹Ð¹Ñ‹Ð½ 10, 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Илии баттааһын',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Кыттааччы аата</a> (<a href='#' title='{{#special:mytalk}}'>ырытыы</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'ОтÑтуп',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Судургу тиÑкиÑ<br />:ОтÑтуптаах тиÑкиÑ<br />::ОтÑтуптаах тиÑкиÑ',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Судургу тиÑкиÑ<dl><dd>ОтÑтуптаах тиÑкиÑ<dl><dd>ОтÑтуптаах тиÑкиÑ</dd></dl></dd></dl>',
+);
+
+/** Sardinian (Sardu)
+ * @author Andria
+ */
+$messages['sc'] = array(
+ 'wikieditor-loading' => 'Carrigamentu',
+ 'wikieditor-preview-preference' => "Abilita s'antiprima cumparativa",
+ 'wikieditor-preview-tab' => 'Antiprima',
+ 'wikieditor-preview-changes-tab' => 'Mudàntzias',
+ 'wikieditor-preview-loading' => 'Carrigamentu...',
+ 'wikieditor-previewDialog-tab' => 'Antiprima',
+ 'wikieditor-previewDialog-loading' => 'Carrigamentu...',
+ 'wikieditor-publish-button-publish' => 'Pùblica',
+ 'wikieditor-publish-dialog-minor' => 'Acontzu minore',
+ 'wikieditor-publish-dialog-watch' => 'Pone custa pàgina in sa watchlist mea',
+ 'wikieditor-toolbar' => "Barra de is ainas pro s'acontzu",
+ 'wikieditor-toolbar-desc' => "Barra de is ainas pro s'acontzu megiorada",
+ 'wikieditor-toolbar-preference' => 'Abilita sa barra de is ainas megiorada',
+ 'wikieditor-toolbar-dialogs-preference' => 'Abilita is bentanas pro insertare ligàmines, tabellas e àteru',
+ 'wikieditor-toolbar-loading' => 'Carrigamentu...',
+ 'wikieditor-toolbar-tool-bold' => 'Grassu',
+ 'wikieditor-toolbar-tool-bold-example' => 'Testu grassu',
+ 'wikieditor-toolbar-tool-italic' => 'Corsivu',
+ 'wikieditor-toolbar-tool-italic-example' => 'Testu corsivu',
+ 'wikieditor-toolbar-tool-ilink' => 'Ligàmine a intro',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Tìtulu de su ligàmine',
+ 'wikieditor-toolbar-tool-xlink' => 'Ligàmine a foras (ammenta su prefissu http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com tìtulu de su ligàmine',
+ 'wikieditor-toolbar-tool-link' => 'Ligàmine',
+ 'wikieditor-toolbar-tool-link-title' => 'Inserta su ligàmine',
+ 'wikieditor-toolbar-tool-link-int' => 'A una pàgina wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Tìtulu de sa pàgina:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Tìtulu de sa pàgina o URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Testu de ammustrare:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Inserta su testu de ammustrare',
+ 'wikieditor-toolbar-tool-link-ext' => 'A una pàgina web esterna',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL de su ligàmine:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Testu de su ligàmine:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Inserta su ligàmine',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Annudda',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Sa pàgina esistit',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Sa pàgina no esistit',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Tìtulu non bàlidu',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Ligàmine a foras',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "Cumproende s'esistèntzia de sa pàgina...",
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Su tìtulu ki as spetzificadu no est bàlidu.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "Su URL ki as spetzificadu paret essere unu ligàmine a un'àtera pàgina wiki. Boles a ddu mudare a ligàmine internu?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Ligàmine a intro',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Ligàmine a foras',
+ 'wikieditor-toolbar-tool-link-empty' => 'No as insertadu nudda a su cale ligare.',
+ 'wikieditor-toolbar-tool-file' => 'File incorporadu',
+ 'wikieditor-toolbar-tool-file-example' => 'Esèmpiu.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referèntzia',
+ 'wikieditor-toolbar-tool-reference-example' => 'Inserta inoghe su testu de sa nota',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Annudda',
+ 'wikieditor-toolbar-tool-reference-title' => 'Inserta sa nota',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Inserta',
+ 'wikieditor-toolbar-tool-reference-text' => 'Testu de sa nota',
+ 'wikieditor-toolbar-tool-signature' => 'Firma e data',
+ 'wikieditor-toolbar-section-advanced' => 'Avantzadu',
+ 'wikieditor-toolbar-tool-heading' => 'Intestada',
+ 'wikieditor-toolbar-tool-heading-1' => 'Livellu 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Livellu 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Livellu 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Livellu 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Livellu 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Testu de su tìtulu',
+ 'wikieditor-toolbar-group-format' => 'Formadu',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista puntegiada',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Elementu de sa lista puntegiada',
+ 'wikieditor-toolbar-tool-olist' => 'Lista numerada',
+ 'wikieditor-toolbar-tool-olist-example' => 'Elementu de sa lista numerada',
+ 'wikieditor-toolbar-tool-indent' => 'Indentatzione',
+ 'wikieditor-toolbar-tool-indent-example' => 'Lìnia indentada',
+ 'wikieditor-toolbar-tool-nowiki' => 'Sena formadu wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Inserta su testu non-formatadu inoghe',
+ 'wikieditor-toolbar-tool-redirect' => 'Re-indiritzu',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nùmene de sa pàgina de destinatzione',
+ 'wikieditor-toolbar-tool-big' => 'Mannu',
+ 'wikieditor-toolbar-tool-big-example' => 'Testu mannu',
+ 'wikieditor-toolbar-tool-small' => 'Piticu',
+ 'wikieditor-toolbar-tool-small-example' => 'Testu piticu',
+ 'wikieditor-toolbar-tool-superscript' => 'Superscritu',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Testu superscritu',
+ 'wikieditor-toolbar-tool-subscript' => 'Subscritu',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Testu subscritu',
+ 'wikieditor-toolbar-group-insert' => 'Inserta',
+ 'wikieditor-toolbar-tool-gallery' => 'Galleria de immàgines',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Esèmpiu.jpg|Didascalia1
+$1:Esèmpiu.jpg|Didascalia2',
+ 'wikieditor-toolbar-tool-newline' => 'Lìnia noa',
+ 'wikieditor-toolbar-tool-table' => 'Tabella',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! tìtulu 1
+! tìtulu 2
+! tìtulu 3
+|-
+| lìnia 1, tzella 1
+| lìnia 1, tzella 2
+| lìnia 1, tzella 3
+|-
+| lìnia 2, tzella 1
+| lìnia 2, tzella 2
+| lìnia 2, tzella 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Testu de sa tzella',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Testu de su tìtulu',
+ 'wikieditor-toolbar-tool-table-title' => 'Inserta una tabella',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Lìnias',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Colunnas',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Include una lìnia pro is tìtulos',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stile cun òrulos',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tabella ki si podet ordinare',
+ 'wikieditor-toolbar-tool-table-example' => 'Testu de sa tzella',
+ 'wikieditor-toolbar-tool-table-preview' => 'Antiprima',
+ 'wikieditor-toolbar-tool-table-insert' => 'Inserta',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Annudda',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Cun custu cuadru de allega no est possìbile insertare una tabella cun prus de $1 tzellas.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'No as insertadu unu nùmeru vàlidu de lìnias o colunnas.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Non podes insertare una tabella cun zeru lìnias o colunnas.',
+ 'wikieditor-toolbar-tool-replace' => 'Chirca e rimpiatza',
+ 'wikieditor-toolbar-tool-replace-title' => 'Chirca e rimpiatza',
+ 'wikieditor-toolbar-tool-replace-search' => 'Chirca:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Rimpiatza cun:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Distinghe lìteras mannas/minores',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Trata sa cadena de chirca comente una espressione regulare',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Agata imbenientes',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Rimpiatza imbenientes',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Rimpiatza totu',
+ 'wikieditor-toolbar-tool-replace-close' => 'Serra',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Sa chirca tua no at agatadu cointzidèntzias.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 rimpiatzadu/os.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'No as indicadu ite chircare.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => "S'espressione regulare insertada no est vàlida: $1",
+ 'wikieditor-toolbar-section-characters' => 'Caràteres spetziales',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latinu',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latinu disterradu',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Sìmbulos',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grecu',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirìllicu',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Aràbicu',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persianu',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ebreu',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalesu',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singalesu',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Agiudu',
+ 'wikieditor-toolbar-help-heading-description' => 'Descritzione',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Ite scries',
+ 'wikieditor-toolbar-help-heading-result' => 'Ite nde otènnes',
+ 'wikieditor-toolbar-help-page-format' => 'Formatatzione',
+ 'wikieditor-toolbar-help-page-link' => 'Ligàmines',
+ 'wikieditor-toolbar-help-page-heading' => 'Intestaduras',
+ 'wikieditor-toolbar-help-page-list' => 'Listas',
+ 'wikieditor-toolbar-help-page-file' => 'Files',
+ 'wikieditor-toolbar-help-page-reference' => 'Referèntzias',
+ 'wikieditor-toolbar-help-page-discussion' => 'Cuntierra',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Corsivu',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Testu in corsivu''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Testu in corsivu</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Grassu',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Testu grassu'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Testu grassu</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Grassu &amp; corsivu',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Testu grassu e corsivu'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Testu grassu e corsivu</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Ligàmine a intro',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Tìtulu de sa pàgina|Eticheta de su ligàmine]]<br />[[Tìtulu de sa pàgina]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Eticheta de su ligàmine</a><br /><a href='#'>Tìtulu de sa pàgina</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Ligàmine a foras',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Eticheta de su ligàmine]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Eticheta de su ligàmine</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Su de 2 livellu de intestada',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Tìtulu de sa setzione ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Tìtulu de sa setzione</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Su de 3 livellu de intestada',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Tìtulu de sa setzione ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Tìtulu de sa setzione</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Su de 4 livellu de intestada',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Tìtulu de sa setzione ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Tìtulu de sa setzione</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Su de 5 livellu de intestada',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Tìtulu de sa setzione =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Tìtulu de sa setzione</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista puntegiada',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Elementu de sa lista<br />* Elementu de sa lista',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Elementu de sa lista</li><li>Elementu de sa lista</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista numerada',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Elementu de sa lista<br /># Elementu de sa lista',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Elementu de sa lista</li><li>Elementu de sa lista</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'File incorporadu',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Esempru.png|thumb|Testu de sa didascalia]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Testu de sa didascalia' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Amannia' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Testu de sa didascalia</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referèntzia',
+ 'wikieditor-toolbar-help-content-reference-result' => "Testu de sa pàgina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-result' => "Testu de sa pàgina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Ammustra referèntzias',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Firma cun data e ora',
+ 'wikieditor-toolbar-help-content-signature-description' => 'Firma',
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indentatzione',
+);
+
+/** Sicilian (Sicilianu)
+ * @author Gmelfi
+ */
+$messages['scn'] = array(
+ 'wikieditor' => 'Ntirfazza avanzata di canci di testu wiki',
+ 'wikieditor-desc' => 'Duna na ntirfazza di canci dû testu wiki ca si pò stènniri e assai àutri môduli ca dùnanu àutri funziunalità',
+ 'wikieditor-wikitext-tab' => 'testu wiki',
+ 'wikieditor-loading' => 'Caricamentu',
+ 'wikieditor-preview-preference' => 'Abbilita antiprima latirali',
+ 'wikieditor-preview-tab' => 'Antiprima',
+ 'wikieditor-preview-changes-tab' => 'Canci',
+ 'wikieditor-preview-loading' => 'Caricamentu...',
+ 'wikieditor-previewDialog-preference' => 'Abbilita la finestra di diàlucu di antiprima',
+ 'wikieditor-previewDialog-tab' => 'Antiprima',
+ 'wikieditor-previewDialog-loading' => "Carricamentu 'n cursu...",
+ 'wikieditor-publish-preference' => 'Abbilita pubblicazzioni passu doppu passu',
+ 'wikieditor-publish-button-publish' => 'Pubblica',
+ 'wikieditor-publish-button-cancel' => 'Annulla',
+ 'wikieditor-publish-dialog-title' => 'Pubblica supra {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Riassuntu dî canci (scrivi chiddu ca fa facisti)',
+ 'wikieditor-publish-dialog-minor' => 'Canci di mpurtanza nica',
+ 'wikieditor-publish-dialog-watch' => 'Talìa sta pàggina',
+ 'wikieditor-publish-dialog-publish' => 'Pubblica',
+ 'wikieditor-publish-dialog-goback' => 'Narreri',
+ 'wikieditor-template-editor-preference' => "Abbilita li canci dî ''template'' chê moduli",
+ 'wikieditor-template-editor-dialog-title' => 'Cancia template',
+ 'wikieditor-template-editor-dialog-submit' => 'Agghiurna',
+ 'wikieditor-template-editor-dialog-cancel' => 'Annulla',
+ 'wikieditor-templates-preference' => 'Abbilita la funzioni pi ammucciari li template',
+ 'wikieditor-toc-preference' => 'Abbilita lu sommariu navigabbili',
+ 'wikieditor-toc-show' => 'Ammuscia li cuntinuti',
+ 'wikieditor-toc-hide' => 'Ammuccia li cuntinuti',
+ 'wikieditor-toolbar' => 'Barra dî strummenta di canci',
+ 'wikieditor-toolbar-desc' => 'Barra dî strummenta di canci dâ pàggina cu na megghiu usabbilità',
+ 'wikieditor-toolbar-preference' => 'Abbilita la barra avanzata dî strummenta di canci',
+ 'wikieditor-toolbar-dialogs-preference' => 'Abbilita li finestri di dialugu pi nsirìri liami, tabbelli e àutri cosi',
+ 'wikieditor-toolbar-loading' => 'Caricamentu in corsu...',
+ 'wikieditor-toolbar-tool-bold' => 'Grassettu',
+ 'wikieditor-toolbar-tool-bold-example' => 'Testu in grassettu',
+ 'wikieditor-toolbar-tool-italic' => 'Cursivu',
+ 'wikieditor-toolbar-tool-italic-example' => 'Testu n cursivu',
+ 'wikieditor-toolbar-tool-ilink' => 'Liami nternu',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Tîtulu dû liami',
+ 'wikieditor-toolbar-tool-xlink' => 'Liami di fora (nutati lu prifissu http:// )',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com tìtulu dû liami',
+ 'wikieditor-toolbar-tool-link' => 'Liami',
+ 'wikieditor-toolbar-tool-link-title' => 'Nsirìsci liami',
+ 'wikieditor-toolbar-tool-link-int' => 'A na pàggina wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Tìtulu dâ pàggina',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titulu dâ pàggina o URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Testu dû liami',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => "Nsirisci lu testu ca s'havi a visualizzari",
+ 'wikieditor-toolbar-tool-link-ext' => 'A na pàggina di nu situ web di fora',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL dû liami',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Testu dû liami',
+ 'wikieditor-toolbar-tool-link-insert' => 'Nsirìsci liami',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Annulla',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Pàggina esistenti',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Pâggina ca nun esisti',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Tîtulu nun vàliddu',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Liami di fora',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "Controllu di l'esistenza dâ pâggina n cursu",
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Lu tìtulu ca spicificasti nun è vàliddu',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "La URL ca nnicasti pari nu liami versu n'àutra pàggina wiki.
+Vuoi ca forra nu liami nternu ?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Liami nternu',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Liami di fora',
+ 'wikieditor-toolbar-tool-link-empty' => 'Nun annicasti nenti versu cui mettiri lu liami',
+ 'wikieditor-toolbar-tool-file' => 'File ncurpuratu',
+ 'wikieditor-toolbar-tool-file-example' => 'Asempiu.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Rifirenza',
+ 'wikieditor-toolbar-tool-reference-example' => 'Nsirisci ccà lu testu dâ nota',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Annulla',
+ 'wikieditor-toolbar-tool-reference-title' => 'Nsirisci la rifirenza',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Nsirìsci',
+ 'wikieditor-toolbar-tool-reference-text' => 'Testu dâ rifirenza',
+ 'wikieditor-toolbar-tool-signature' => 'Firma e data',
+ 'wikieditor-toolbar-section-advanced' => 'Avanzati',
+ 'wikieditor-toolbar-tool-heading' => 'Ntistazzioni',
+ 'wikieditor-toolbar-tool-heading-1' => 'Liveddu 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Liveddu 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Liveddu 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Liveddu 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Liveddu 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Titulu dâ sizzioni',
+ 'wikieditor-toolbar-group-format' => 'Furmatu',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista appuntata',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Elementu dâ lista appuntata',
+ 'wikieditor-toolbar-tool-olist' => 'Lista nummurata',
+ 'wikieditor-toolbar-tool-olist-example' => 'Elementu dâ lista nummurata',
+ 'wikieditor-toolbar-tool-indent' => 'Ndintazzioni',
+ 'wikieditor-toolbar-tool-indent-example' => 'Ligna di ndintazzioni',
+ 'wikieditor-toolbar-tool-nowiki' => 'Nun dunari cuntu â furmattazzioni wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Nzirisci ccà lu testu nun furmattatu',
+ 'wikieditor-toolbar-tool-redirect' => 'Rinnirizza',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nomu dâ pàggina di distinazzioni',
+ 'wikieditor-toolbar-tool-big' => 'Granni',
+ 'wikieditor-toolbar-tool-big-example' => 'Testu granni',
+ 'wikieditor-toolbar-tool-small' => 'Nicu',
+ 'wikieditor-toolbar-tool-small-example' => 'Testu nicu',
+ 'wikieditor-toolbar-tool-superscript' => 'Àpici',
+ 'wikieditor-toolbar-tool-superscript-example' => 'testu n àpici',
+ 'wikieditor-toolbar-tool-subscript' => 'Pèdici',
+ 'wikieditor-toolbar-tool-subscript-example' => 'testu n pèdici',
+ 'wikieditor-toolbar-group-insert' => 'Nsirìsci',
+ 'wikieditor-toolbar-tool-gallery' => 'Gallirìa di mmàggini',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Didascalia1
+$1:Example.jpg|Didascalia2',
+ 'wikieditor-toolbar-tool-newline' => 'Ligna nova',
+ 'wikieditor-toolbar-tool-table' => 'Tabbella',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! titulu 1
+! titulu 2
+! titulu 3
+|-
+| ligna 1, cella 1
+| ligna 1, cella 2
+| ligna 1, cella 3
+|-
+| ligna 2, cella 1
+| ligna 2, cella 2
+| ligna 2, cella 3
+-
+! titulu 1
+! titulu 2
+! titulu 3
+|-
+| ligna 1, cella 1
+| ligna 1, cella 2
+| ligna 1, cella 3
+|-
+| ligna 2, cella 1
+| ligna 2, cella 2
+| ligna 2, cella 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Testu dâ cella',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Testz dû titulu',
+ 'wikieditor-toolbar-tool-table-title' => 'Nsirisci tabbella',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Lìgni',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Culonni',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Metti na ligna pî tìtula',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stili chê bordi',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Renni la tebbella urdinàbbili',
+ 'wikieditor-toolbar-tool-table-example' => 'Testu dâ cella',
+ 'wikieditor-toolbar-tool-table-preview' => 'Antiprima',
+ 'wikieditor-toolbar-tool-table-insert' => 'Nsirìsci',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Annulla',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Cu stu strummentu nun è pussìbbili nsirìri na tabbella cu cchiossai di $1 celli',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Nun andicasti nu nùmmuru vâliddu di ligni o di culonni',
+ 'wikieditor-toolbar-tool-table-zero' => 'Nun puoi nsiriri na tabbella senza ligni e/o senza culonni',
+ 'wikieditor-toolbar-tool-replace' => 'Cerca e sustituisci',
+ 'wikieditor-toolbar-tool-replace-title' => 'Cerca e sustituisci',
+ 'wikieditor-toolbar-tool-replace-search' => 'Cerca:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Sustituisci cu:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Maiùsculi/minùsculi',
+ 'wikieditor-toolbar-tool-replace-regex' => "Tratta la stringa comu n'esprissioni rigulari",
+ 'wikieditor-toolbar-tool-replace-button-findnext' => "Trova l'àutri",
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => "Sustituisci l'àutri",
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Sustituisci tutticosi',
+ 'wikieditor-toolbar-tool-replace-close' => 'Chiudi',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'La tò ricerca nun prudicìu risurtati',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 sustituzzioni fatta/fatti',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => "Nun annicasti chidda ca s'havi a circari",
+ 'wikieditor-toolbar-tool-replace-invalidregex' => "L'esprissioni rigulari misa nun è vàlidda: $1",
+ 'wikieditor-toolbar-section-characters' => 'Carattiri spiciali',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latinu',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latinu estinnutu',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Sìmmuli',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grecu',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirillicu',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Àrabbu',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persianu',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ebbreu',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalisi',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singalisi',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tailannisi',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Aiutu',
+ 'wikieditor-toolbar-help-heading-description' => 'Discrizzioni',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Chiddu ca scriviti',
+ 'wikieditor-toolbar-help-heading-result' => 'Chiddu ca uttiniti',
+ 'wikieditor-toolbar-help-page-format' => 'Furmattazzioni',
+ 'wikieditor-toolbar-help-page-link' => 'Culligamenti',
+ 'wikieditor-toolbar-help-page-heading' => 'Ntistazzioni',
+ 'wikieditor-toolbar-help-page-list' => 'Listi',
+ 'wikieditor-toolbar-help-page-file' => 'File',
+ 'wikieditor-toolbar-help-page-reference' => 'Rifirenzi',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discussioni',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Cursivu',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Testu n cursivu''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>testu n cursivu</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Grassettu',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Testu n grassettu'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Testu n grassettu</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Grassettu e cursivu',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Testu n grassettu e cursivu'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Testuo n grassettu e cursivu</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Liami nternu',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Titulu pàggina|Etichetta di culligamentu]]<br />[[Titulu pàggina]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Etichetta di culligamentu</a><br /><a href='#'>Tìtulu dâ pàggina</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Lijami di fora',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Etichetta dû liami]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Etichetta dû liami</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>
+<a href='#' class='external'>Etichetta dû liami</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2° liveddu di ntistazzioni',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '==Titulu dâ sizzioni ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Titulu dâ sizzioni</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3° liveddu di ntistazzioni',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '===Titulu dâ sizzioni===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Titulu dâ sizzioni<h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4° liveddu di ntistazzioni',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '====Titulu dâ sizzioni====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Titulu dâ sizzioni<h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5° liveddu di ntistazzioni',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '=====Titulu dâ sizzioni=====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Titulu dâ sizzioni<h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista appuntata',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => "* Elementu di l'elencu<br />* Elementu di l'elencu",
+ 'wikieditor-toolbar-help-content-ulist-result' => "<ul><li>Elementu di l'elencu</li><li>Elementu di l'elencu</li></ul>",
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista nummurata',
+ 'wikieditor-toolbar-help-content-olist-syntax' => "* Elementu di l'elencu<br />* Elementu di l'elencu",
+ 'wikieditor-toolbar-help-content-olist-result' => "<ol><li>Elementu di l'elencu</li><li>Elementu di l'elencu</li></ol>",
+ 'wikieditor-toolbar-help-content-file-description' => 'File ncurpuratu',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Testu dâ didascalia]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Testu dâ didascalia' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Ngrannisci' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Testu dâ didascalia</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Rifirenza',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Testu dâ pàggina.&lt;ref name="test"&gt;[http://www.example.org Testu dû culligamentu], testu ca si pò junciri.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Testu dâ pàggina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Usu dâ stissa nota cchiù tardu',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Testu dâ pàggina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Ammuscia li rifirenzi',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Link text</a>, additional text.</li></ol>
+<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Testu dû culligamentu</a>, testu ca si pò junciri.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Firma cu data e ura',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nomu di l'utenti</a> (<a href='#' title='{{#special:mytalk}}'>discussioni</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Firma',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nomu di l'utenti</a> (<a href='#' title='{{#special:mytalk}}'>discussioni</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Ndintazzioni',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Testu nurmali<br />:Testu ndintatu<br />::Testu ndintatu',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Testu nurmali<dl><dd>Testu ndintatu<dl><dd>Testu ndintatu</dd></dl></dd></dl>',
+);
+
+/** Scots (Scots) */
+$messages['sco'] = array(
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+);
+
+/** Sinhala (සිංහල)
+ * @author Budhajeewa
+ * @author Calcey
+ * @author Pasanbhathiya2
+ * @author චතුනි අලහප්පෙරුම
+ * @author තඹරු විජේසේකර
+ * @author බිඟුවà·
+ */
+$messages['si'] = array(
+ 'wikieditor' => 'දියුණු කළ විකි පෙළ සංස්කරණය කිරීමේ අතුරු මුහුණත',
+ 'wikieditor-desc' => 'විස්තීරණය කළ à·„à·à¶šà·’ විකිපෙළ සංස්කරණය කිරීමේ අතුරු මුහුණතක් හ෠බොහ෠විà·à·šà·‚à·à¶‚ග-ලබà·à¶¯à·™à¶± මොඩියුල සපයයි',
+ 'wikieditor-wikitext-tab' => 'විකි පෙළ',
+ 'wikieditor-loading' => 'ප්â€à¶»à·€à·šà·à¶±à¶º වෙමින් පවතී',
+ 'wikieditor-preview-preference' => 'දෙපසින්වූ පූර්ව දර්à·à¶±à¶º සක්â€à¶»à·“ය කරයි',
+ 'wikieditor-preview-tab' => 'පෙර දසුන',
+ 'wikieditor-preview-changes-tab' => 'වෙනස් කිරීම්',
+ 'wikieditor-preview-loading' => 'ප්â€à¶»à·€à·šà·à¶±à¶º වෙමින් පවතී...',
+ 'wikieditor-previewDialog-preference' => 'පෙර-දà·à¶šà·”ම් කවුළුව බලගන්වන්න.',
+ 'wikieditor-previewDialog-tab' => 'පෙර දසුන',
+ 'wikieditor-previewDialog-loading' => 'ප්â€à¶»à·€à·šà·à¶±à¶º වෙමින් පවතී...',
+ 'wikieditor-publish-preference' => 'පියවරෙන්-පියවර ප්â€à¶»à¶šà·à·à¶±à¶º කළ à·„à·à¶šà·’යි',
+ 'wikieditor-publish-button-publish' => 'ප්â€à¶»à¶šà·à·à¶ºà¶§ පත්කරන්න',
+ 'wikieditor-publish-button-cancel' => 'අත් හරින්න',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}} ට ප්â€à¶»à¶šà·à·à¶±à¶º කරන්න',
+ 'wikieditor-publish-dialog-summary' => 'à·ƒà·à¶»à·à¶‚à·à¶º සංස්කරණය කරන්න (ඔබ සිදු කළ වෙනස්කම් කෙටියෙන් විස්තර කරන්න):',
+ 'wikieditor-publish-dialog-minor' => 'සුළු සංස්කරණය',
+ 'wikieditor-publish-dialog-watch' => 'මෙම පිටුව මුර කරන්න',
+ 'wikieditor-publish-dialog-publish' => 'ප්â€à¶»à¶šà·à·à¶ºà¶§ පත්කරන්න',
+ 'wikieditor-publish-dialog-goback' => 'ආපසු යන්න',
+ 'wikieditor-template-editor-preference' => 'විකි අච්චුවල පà·à¶»à¶¸-මූලික සංස්කරණය සක්â€à¶»à·“ය කරන්න',
+ 'wikieditor-template-editor-dialog-title' => 'à·ƒà·à¶šà·’ල්ල සංස්කරණය කරන්න',
+ 'wikieditor-template-editor-dialog-submit' => 'යà·à·€à¶­à·Šà¶šà·à¶½à·“න කළ',
+ 'wikieditor-template-editor-dialog-cancel' => 'අත් හරින්න',
+ 'wikieditor-templates-preference' => 'ටෙම්ප්ලේට à·„à·à¶šà·’ළුම සක්â€à¶»à·“ය කරන්න',
+ 'wikieditor-toc-preference' => 'සංචලනය කළ à·„à·à¶šà·’ පටුන සක්â€à¶»à·“ය කරන්න',
+ 'wikieditor-toc-show' => 'අන්තර්ගතය පෙන්වන්න',
+ 'wikieditor-toc-hide' => 'අන්තර්ගතය සඟවන්න',
+ 'wikieditor-toolbar' => 'සංස්කරණ මෙවලම් තීරුව',
+ 'wikieditor-toolbar-desc' => 'වර්ධිත පරිà·à·“ලන à·„à·à¶šà·’යà·à·€ සහිත සංස්කරණ පිටු මෙවලම් තීරුව',
+ 'wikieditor-toolbar-preference' => 'වර්ධිත මෙවලම් තීරුව සක්â€à¶»à·“ය කරන්න',
+ 'wikieditor-toolbar-dialogs-preference' => 'දියුණු කළ විකි පෙළක් ඇතුල් කිරීම à·ƒâ€à¶³à·„෠උදව් සක්â€à¶»à·“ය කරන්න',
+ 'wikieditor-toolbar-loading' => 'ප්â€à¶»à·€à·šà·à¶±à¶º වෙමින් පවතී...',
+ 'wikieditor-toolbar-tool-bold' => 'තද පà·à·„෠අකුරු',
+ 'wikieditor-toolbar-tool-bold-example' => 'තද පà·à·„à·à¶­à·’ අකුරු පෙළ',
+ 'wikieditor-toolbar-tool-italic' => 'ඇළ අකුරු',
+ 'wikieditor-toolbar-tool-italic-example' => 'ඇළ අකුරු පෙළ',
+ 'wikieditor-toolbar-tool-ilink' => 'අභ්â€à¶ºà¶±à·Šà¶­à¶» සබà·à¶³à·”ම',
+ 'wikieditor-toolbar-tool-ilink-example' => 'සබà·à¶³à·”ම් මà·à¶­à·˜à¶šà·à·€',
+ 'wikieditor-toolbar-tool-xlink' => 'භà·à·„ිර සබà·à¶³à·”ම(http:// මුල් ඈඳුම මතක තබ෠ගන්න.)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com සබà·à¶³à·”ම් මà·à¶­à·˜à¶šà·à·€',
+ 'wikieditor-toolbar-tool-link' => 'සබà·à¶³à·”ම',
+ 'wikieditor-toolbar-tool-link-title' => 'සබà·à¶³à·”මක් ඇතුල් කිරීම',
+ 'wikieditor-toolbar-tool-link-int' => 'විකි පිටුවක් වෙත',
+ 'wikieditor-toolbar-tool-link-int-target' => 'පිටු මà·à¶­à·˜à¶šà·à·€:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'පිටු මà·à¶­à·˜à¶šà·à·€ හ෠අන්තර්ජà·à¶½ ලිපිනය',
+ 'wikieditor-toolbar-tool-link-int-text' => 'සබà·à¶³à·”ම් පෙළ:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'ප්â€à¶»à¶¯à¶»à·Šà·à¶±à¶º කල යුතු පෙළ',
+ 'wikieditor-toolbar-tool-link-ext' => 'බà·à·„ිර වෙබ් පිටුවක් වෙත',
+ 'wikieditor-toolbar-tool-link-ext-target' => ' URL සබà·à¶³à·”ම:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'සබà·à¶³à·”ම් පෙළ:',
+ 'wikieditor-toolbar-tool-link-insert' => 'සබà·à¶³à·”මක් ඇතුල් කරන්න',
+ 'wikieditor-toolbar-tool-link-cancel' => 'අත් හරින්න',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'පිටුව පවතී',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'පිටුව නොපවතී',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'වලංගු මà·à¶­à·˜à¶šà·à·€à¶šà·Š නොවේ',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'භà·à·„ිර සබà·à¶³à·”ම',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'පිටුවේ පà·à·€à·à¶­à·Šà¶¸ පරීක්ෂ෠කරමින් පවතී...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'ඔබ සඳහන් කළ මà·à¶­à·˜à¶šà·à·€ වලංගු නොවේ.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'ඔබ සඳහන් කළ URL තවත් විකි පිටුවක සබà·à¶³à·”මක් කිරීමට අදහස් කරන බව පෙනේ. ඔබට එය අභ්â€à¶ºà¶±à·Šà¶­à¶» සබà·à¶³à·”මක් කිරීමට අවà·à¶ºà¶¯?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'අභ්â€à¶ºà¶±à·Šà¶­à¶» සබà·à¶³à·”ම',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'භà·à·„ිර සබà·à¶³à·”ම',
+ 'wikieditor-toolbar-tool-link-empty' => 'ඔබ සබà·à¶³à·”මකට කිසිවක් ඇතුළු කර නොමà·à¶­.',
+ 'wikieditor-toolbar-tool-file' => 'ක෠වà·à¶¯à·Šà¶¯à·– ගොනුව',
+ 'wikieditor-toolbar-tool-file-example' => 'උදà·à·„රණ.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'යොමුව',
+ 'wikieditor-toolbar-tool-reference-example' => 'මෙහි පà·à¶¯ සටහන් පෙළක් ඇතුල් කරන්න',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'අත් හරින්න',
+ 'wikieditor-toolbar-tool-reference-title' => 'යොමුවක්(Reference) ඇතුලුකරන්න',
+ 'wikieditor-toolbar-tool-reference-insert' => 'ඇතුල් කරන්න',
+ 'wikieditor-toolbar-tool-reference-text' => 'මූලà·à·à·Šâ€à¶» පෙළ',
+ 'wikieditor-toolbar-tool-signature' => 'අත්සන හ෠කà·à¶½ මුද්â€à¶»à·à·€',
+ 'wikieditor-toolbar-section-advanced' => 'දියුණු කළ',
+ 'wikieditor-toolbar-tool-heading' => 'à·à·“ර්ෂය',
+ 'wikieditor-toolbar-tool-heading-1' => '1 වෙනි මට්ටම',
+ 'wikieditor-toolbar-tool-heading-2' => '2 වෙනි මට්ටම',
+ 'wikieditor-toolbar-tool-heading-3' => '3 වෙනි මට්ටම',
+ 'wikieditor-toolbar-tool-heading-4' => '4 වෙනි මට්ටම',
+ 'wikieditor-toolbar-tool-heading-5' => '5 වෙනි මට්ටම',
+ 'wikieditor-toolbar-tool-heading-example' => 'à·à·“ර්ෂ පෙළ',
+ 'wikieditor-toolbar-group-format' => 'ආකෘතිය',
+ 'wikieditor-toolbar-tool-ulist' => 'රට෠යෙදූ ලà·à¶ºà·’ස්තුව',
+ 'wikieditor-toolbar-tool-ulist-example' => 'රට෠යෙදූ ලà·à¶ºà·’ස්තු අයිතමය',
+ 'wikieditor-toolbar-tool-olist' => 'අංකිත ලà·à¶ºà·’ස්තුව',
+ 'wikieditor-toolbar-tool-olist-example' => 'අංකිත ලà·à¶ºà·’ස්තු අයිතමය',
+ 'wikieditor-toolbar-tool-indent' => 'ඉන්ඩෙන්ට් කිරීම',
+ 'wikieditor-toolbar-tool-indent-example' => 'ඉන්ඩෙන්ට් කළ රේඛà·à·€',
+ 'wikieditor-toolbar-tool-nowiki' => 'විකි ආකෘතිකරණය නොසලකà·à·„රින්න',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'ආකෘතිකරණය-නොකල පෙළ මෙහි රුවන්න',
+ 'wikieditor-toolbar-tool-redirect' => 'යළියොමුව',
+ 'wikieditor-toolbar-tool-redirect-example' => 'ඉලක්ක පිටු නම',
+ 'wikieditor-toolbar-tool-big' => 'විà·à·à¶½',
+ 'wikieditor-toolbar-tool-big-example' => 'විà·à·à¶½ පෙළ',
+ 'wikieditor-toolbar-tool-small' => 'කුඩà·',
+ 'wikieditor-toolbar-tool-small-example' => 'කුඩ෠පෙළ',
+ 'wikieditor-toolbar-tool-superscript' => 'උඩු ලකුණු',
+ 'wikieditor-toolbar-tool-superscript-example' => 'උඩු ලකුණු පෙළ',
+ 'wikieditor-toolbar-tool-subscript' => 'යටි ලකුණු',
+ 'wikieditor-toolbar-tool-subscript-example' => 'යටි ලකුණු පෙළ',
+ 'wikieditor-toolbar-group-insert' => 'ඇතුල් කරන්න',
+ 'wikieditor-toolbar-tool-gallery' => 'පිංතූර ගà·à¶½à¶»à·’ය',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:උදà·à·„රණ.jpg| 1 යටි ලියමන
+$1:උදà·à·„රණ.jpg| 2 යටි ලියමන',
+ 'wikieditor-toolbar-tool-newline' => 'නව පේළිය',
+ 'wikieditor-toolbar-tool-table' => 'වගුව',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! 1 à·à·“ර්ෂකය
+! 2 à·à·“ර්ෂකය
+! 3 à·à·“ර්ෂකය
+|-
+| 1 පේළිය,1 කොටුව
+| 1 පේළිය,2 කොටුව
+| 1 පේළිය,3 කොටුව
+|-
+| 2 පේළිය,1 කොටුව
+| 2 පේළිය,2 කොටුව
+| 2 පේළිය,3 කොටුව',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'කොටුවේ පෙළ',
+ 'wikieditor-toolbar-tool-table-example-header' => 'à·à·“ර්ෂක පෙළ',
+ 'wikieditor-toolbar-tool-table-title' => 'වගුවක් ඇතුල් කිරීම',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'පේළි',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'තීරු',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'à·à·“ර්ෂ පේළියක් ඇතුල් කරන්න',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'දà·à¶» සහිත විලà·à·ƒà¶º',
+ 'wikieditor-toolbar-tool-table-sortable' => 'වර්ග කිරීමේ à·„à·à¶šà·’යà·à·€ ඇති වගුවක් කරන්න',
+ 'wikieditor-toolbar-tool-table-example' => 'කොටුවේ පෙළ',
+ 'wikieditor-toolbar-tool-table-preview' => 'පූර්ව දර්à·à¶±à¶º',
+ 'wikieditor-toolbar-tool-table-insert' => 'ඇතුල් කරන්න',
+ 'wikieditor-toolbar-tool-table-cancel' => 'අත් හරින්න',
+ 'wikieditor-toolbar-tool-table-toomany' => 'මෙහිදී $1 කොටුවකට වඩ෠ඇති වගුවක් ඇතුල් කිරීම කළ නොහà·à¶šà·’ය.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'ඔබ පේළි හ෠තීරු ගණන සඳහ෠වලංගු අගයක් ඇතුළත් කර නà·à¶­.',
+ 'wikieditor-toolbar-tool-table-zero' => 'ඔබට පේළි හ෠තීරු à·à·”න්â€à¶º වන වගුවක් ඇතුල් කළ නොහà·à¶š.',
+ 'wikieditor-toolbar-tool-replace' => 'සෙවීම හ෠ප්â€à¶»à¶­à·’ස්ථà·à¶´à¶±à¶º',
+ 'wikieditor-toolbar-tool-replace-title' => 'සෙවීම හ෠ප්â€à¶»à¶­à·’ස්ථà·à¶´à¶±à¶º',
+ 'wikieditor-toolbar-tool-replace-search' => 'සොයන්නේ:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'කුමක් සමඟ ද ප්â€à¶»à¶­à·’ස්ථà·à¶´à¶±à¶º කරනු ලබන්නේ:',
+ 'wikieditor-toolbar-tool-replace-case' => 'අවස්ථà·à·€ ගළපන්න',
+ 'wikieditor-toolbar-tool-replace-regex' => 'සොයන පදය නියත ප්â€à¶»à¶šà·à·à¶±à¶ºà¶šà·Š ලෙස සලකන්න',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'මීළඟ එක සොයන්න',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'මීළඟ එක ප්â€à¶»à¶­à·’ස්ථà·à¶´à¶±à¶º කරන්න',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'සියල්ලම ප්â€à¶»à¶­à·’ස්ථà·à¶´à¶±à¶º කරන්න',
+ 'wikieditor-toolbar-tool-replace-close' => 'වසන්න',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'ඔබේ සෙවීම කිසිදු පදයක් හ෠නොගà·à·…පේ.',
+ 'wikieditor-toolbar-tool-replace-success' => ' ප්â€à¶»à¶­à·’ස්ථà·à¶´à¶± $1ක් සිදු කරන ලදී.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'ඔබ සෙවීම සඳහ෠කිසිවක් ඇතුල් කර නà·à¶­.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'ඔබ ඇතුළත් කළ නිත්â€à¶º ප්â€à¶»à¶šà·à·à¶±à¶º වලංගු නොවේ:$1',
+ 'wikieditor-toolbar-section-characters' => 'විà·à·šà·‚ අනු ලකුණු',
+ 'wikieditor-toolbar-characters-page-latin' => 'ලතින් අක්ෂර',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'දීර්චකළ ලතින් අක්ෂර',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA(ජà·à¶­à·Šâ€à¶ºà¶±à·Šà¶­à¶» à·€à·à¶œà·Šà·€à·’ෂයක à·„à·à¶©à·’ය)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'සංකේත',
+ 'wikieditor-toolbar-characters-page-greek' => 'ග්â€à¶»à·“ක අක්ෂර',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'සිරිලික් අක්ෂර',
+ 'wikieditor-toolbar-characters-page-arabic' => 'අරà·à¶¶à·’ අක්ෂර',
+ 'wikieditor-toolbar-characters-page-persian' => 'පර්සියà·à¶±à·”',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'හෙබ්â€à¶»à·™à·€à·Š අක්ෂර',
+ 'wikieditor-toolbar-characters-page-bangla' => 'බංග්ලà·',
+ 'wikieditor-toolbar-characters-page-telugu' => 'තෙලිඟු අක්ෂර',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'සිංහල',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'ගුජරà·à¶§à·’',
+ 'wikieditor-toolbar-characters-page-thai' => 'තà·à¶ºà·’',
+ 'wikieditor-toolbar-characters-page-lao' => 'ලà·à¶•',
+ 'wikieditor-toolbar-characters-page-khmer' => 'ඛෙමර්',
+ 'wikieditor-toolbar-section-help' => 'උදව්',
+ 'wikieditor-toolbar-help-heading-description' => 'විස්තරය',
+ 'wikieditor-toolbar-help-heading-syntax' => 'ඔබ යතුරු ලියනය කරන දෙය',
+ 'wikieditor-toolbar-help-heading-result' => 'ඔබට ලà·à¶¶à·™à¶± ආකà·à¶»à¶º',
+ 'wikieditor-toolbar-help-page-format' => 'à·„à·à¶©à¶šà¶»à¶«à¶º',
+ 'wikieditor-toolbar-help-page-link' => 'සබà·à¶³à·”ම්',
+ 'wikieditor-toolbar-help-page-heading' => 'à·à·“ර්ෂ',
+ 'wikieditor-toolbar-help-page-list' => 'ලà·à¶ºà·’ස්තු',
+ 'wikieditor-toolbar-help-page-file' => 'ගොනු',
+ 'wikieditor-toolbar-help-page-reference' => 'යොමුවන්',
+ 'wikieditor-toolbar-help-page-discussion' => 'à·ƒà·à¶šà¶ à·Šà¶¡à·à·€',
+ 'wikieditor-toolbar-help-content-italic-description' => 'ඇළ අකුරු',
+ 'wikieditor-toolbar-help-content-italic-syntax' => '"ඇළ අකුරු පෙළ"',
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>ඇළ අකුරු පෙළ</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'තද පà·à·„෠අකුරු',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''තද පà·à·„෠අකුරු\"'",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>තද පà·à·„à·à¶­à·’ අකුරු පෙළ</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'තද පà·à·„෠අකුරු&amp; ඇළ අකුරු',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''තද පà·à·„෠අකුරු &amp; ඇළ අකුරු පෙළ'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>තද පà·à·„෠අකුරු &amp;ඇළ අකුරු පෙළ</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => ' අභ්â€à¶ºà¶±à·Šà¶­à¶» සබà·à¶³à·”ම',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[පිටු මà·à¶­à·˜à¶šà·à·€|සබà·à¶³à·”ම් ලේබලය]]<br />[[පිටු මà·à¶­à·˜à¶šà·à·€]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>සබà·à¶³à·”ම් ලේබලය</a><br /><a href='#'>පිටු මà·à¶šà·˜à¶šà·à·€</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'භà·à·„ිර සබà·à¶³à·”ම',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org සබà·à¶³à·”ම් ලේබලය]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='භà·à·„ිර'>සබà·à¶³à·”ම් ලේබලය</a><br /><a href='#' class='භà·à·„ිර ස්වයංක්â€à¶»à·“ය අංකය'>[1]</a><br /><a href='#' class='භà·à·„ිර'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2 වෙනි මට්ටමේ à·à·“ර්ෂය',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '==à·à·“ර්ෂ පෙළ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>à·à·“ර්ෂ පෙළ</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3 වෙනි මට්ටමේ à·à·“ර්ෂය',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '===à·à·“ර්ෂ පෙළ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>à·à·“ර්ෂ පෙළ</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4 වෙන් මට්ටමේ à·à·“ර්ෂය',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '====à·à·“ර්ෂ පෙළ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>à·à·“ර්ෂ පෙළ</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5 වෙනි මට්ටමේ à·à·“ර්ෂය',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '=====à·à·“ර්ෂ පෙළ=====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>à·à·“ර්ෂ පෙළ</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'රට෠යෙදූ ලà·à¶ºà·’ස්තුව',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* ලà·à¶ºà·’ස්තු අයිතමය<br />* ලà·à¶ºà·’ස්තු අයිතමය',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>ලà·à¶ºà·’ස්තු අයිතමය</li><li>ලà·à¶ºà·’ස්තු අයිතමය</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'අංකිත ලà·à¶ºà·’ස්තුව',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# ලà·à¶ºà·’ස්තු අයිතමය<br /># ලà·à¶ºà·’ස්තු අයිතමය',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>ලà·à¶ºà·’ස්තු අයිතමය</li><li>ලà·à¶ºà·’ස්තු අයිතමය</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'ක෠වà·à¶¯à·Šà¶¯à·– ගොනුව',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|යටි ලියමන් පෙළ]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='යටි ලියමන් පෙළ' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='විà·à·à¶½à¶±à¶º කිරීම' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>යටි ලියමන් පෙළ</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'යොමුව',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'පිටු පෙළ.&lt;ref name="test"&gt;[http://www.example.org සබà·à¶³à·”ම් පෙළ], අමතර පෙළ.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "පිටු පෙළ.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'එකම â€à¶ºà·œà¶¸à·”à·€ අමතර භà·à·€à·’තය',
+ 'wikieditor-toolbar-help-content-rereference-result' => "පිටු පෙළ.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'යොමුවන් පෙන්වන්න',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='යොමුවන්'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='භà·à·„ිර පෙළ' href='#'>සබà·à¶³à·”ම් පෙළ</a>, අමතර පෙළ.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'කà·à¶½ මුද්â€à¶»à·à·€ සමඟ අත්සන',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:මගේ පිටුව}}'>පරිà·à·’ලක නà·à¶¸à¶º</a> (<a href='#' title='{{#special:මගේ කතà·à·€}}'>කතà·à·€</a>) 15:54, 10 ජූනි 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'අත්සන',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:මගේ පිටුව}}'>පරිà·à·“ලක නà·à¶¸à¶º</a> (<a href='#' title='{{#special:මගේ කතà·à·€}}'>කතà·à·€</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'ඉන්ඩෙන්ට් කිරිම',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'à·ƒà·à¶¸à·à¶±à·Šâ€à¶º පෙළ<br />:ඉන්ඩෙන්ට් කළ පෙළ<br />::ඉන්ඩෙන්ට් කළ පෙළ',
+ 'wikieditor-toolbar-help-content-indent-result' => 'à·ƒà·à¶¸à·à¶±à·Šâ€à¶º පෙළ<dl><dd>ඉන්ඩෙන්ට් කළ පෙළ<dl><dd>ඉන්ඩෙන්ට් කළ පෙළ</dd></dl></dd></dl>',
+);
+
+/** Slovak (SlovenÄina)
+ * @author Helix84
+ * @author Jkjk
+ * @author McDutchie
+ */
+$messages['sk'] = array(
+ 'wikieditor' => 'PokroÄilé rozhranie na úpravu wikitextu',
+ 'wikieditor-desc' => 'Poskytuje rozšíriteľné rozhranie na úpravu wikitextu a mnohé moduly poskytujúce funkcionalitu',
+ 'wikieditor-wikitext-tab' => 'Wikitext',
+ 'wikieditor-loading' => 'NaÄítava sa',
+ 'wikieditor-preview-preference' => 'Zapnúť náhľad vedľa úprav',
+ 'wikieditor-preview-tab' => 'Náhľad',
+ 'wikieditor-preview-changes-tab' => 'Zmeny',
+ 'wikieditor-preview-loading' => 'NaÄítava sa...',
+ 'wikieditor-previewDialog-preference' => 'Zapnúť dialóg s náhľadom',
+ 'wikieditor-previewDialog-tab' => 'Náhľad',
+ 'wikieditor-previewDialog-loading' => 'NaÄítava sa...',
+ 'wikieditor-publish-preference' => 'Zapnúť publikovanie krok za krokom',
+ 'wikieditor-publish-button-publish' => 'Publikovať',
+ 'wikieditor-publish-button-cancel' => 'Zrušiť',
+ 'wikieditor-publish-dialog-title' => 'Publikovať na {{GRAMMAR:lokál|{{SITENAME}}}}',
+ 'wikieditor-publish-dialog-summary' => 'Zhrnutie úprav (struÄný popis zmien, ktoré ste vykonali):',
+ 'wikieditor-publish-dialog-minor' => 'Drobná úprava',
+ 'wikieditor-publish-dialog-watch' => 'Sledovať túto stránku',
+ 'wikieditor-publish-dialog-publish' => 'Zverejniť',
+ 'wikieditor-publish-dialog-goback' => 'Prejsť späť',
+ 'wikieditor-template-editor-preference' => 'Povoliť úpravu šablón wiki prostredníctvom formulárov',
+ 'wikieditor-template-editor-dialog-title' => 'Upraviť šablónu',
+ 'wikieditor-template-editor-dialog-submit' => 'Aktualizovať',
+ 'wikieditor-template-editor-dialog-cancel' => 'Zrušiť',
+ 'wikieditor-templates-preference' => 'Zapnúť zbaľovanie šablón',
+ 'wikieditor-toc-preference' => 'PovoliÅ¥ obsah s odkazmi na Äasti',
+ 'wikieditor-toc-show' => 'Zobraziť obsah',
+ 'wikieditor-toc-hide' => 'Skryť obsah',
+ 'wikieditor-toolbar' => 'Panel nástrojov na úpravy',
+ 'wikieditor-toolbar-desc' => 'Panel nástrojov na úpravy stránky s rozšírenou použiteľnosťou',
+ 'wikieditor-toolbar-preference' => 'Zapnúť rozšírený panel nástrojov na úpravy',
+ 'wikieditor-toolbar-dialogs-preference' => 'PovoliÅ¥ dialógy na vkladanie odkazov, tabuliek atÄ.',
+ 'wikieditor-toolbar-hidesig' => 'SkryÅ¥ tlaÄidlo podpis zo stránok v hlavnom mennom priestore',
+ 'wikieditor-toolbar-loading' => 'NaÄítava sa...',
+ 'wikieditor-toolbar-tool-bold' => 'Hrubý',
+ 'wikieditor-toolbar-tool-bold-example' => 'Hrubý text',
+ 'wikieditor-toolbar-tool-italic' => 'Kurzíva',
+ 'wikieditor-toolbar-tool-italic-example' => 'Text kurzívou',
+ 'wikieditor-toolbar-tool-ilink' => 'Interný odkaz',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Názov odkazu',
+ 'wikieditor-toolbar-tool-xlink' => 'Externý odkaz (pamätajte na predponu http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com názov odkazu',
+ 'wikieditor-toolbar-tool-link' => 'Odkaz',
+ 'wikieditor-toolbar-tool-link-title' => 'Vložiť odkaz',
+ 'wikieditor-toolbar-tool-link-int' => 'Na wiki stránku',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Názov stránky:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Názov stránky alebo URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Text odkazu:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Zadajte text, ktorý sa má zobraziť',
+ 'wikieditor-toolbar-tool-link-ext' => 'Na externú webstránku',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL odkazu:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Text odkazu:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Vložiť odkaz',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Zrušiť',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Stránka existuje',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Stránka neexistuje',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Neplatný názov',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Externý odkaz',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Kontroluje sa existencia stránky...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Názov, ktorý ste zadali nie je platný.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL, ktorý ste zadali vyzerá ako odkaz na inú stránku wiki. Chcete z neho spraviť interný odkaz?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Interný odkaz',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Externý odkaz',
+ 'wikieditor-toolbar-tool-link-empty' => 'Nezadali ste na Äo má odkaz odkazovaÅ¥.',
+ 'wikieditor-toolbar-tool-file' => 'Vložený súbor',
+ 'wikieditor-toolbar-tool-file-example' => 'Príklad.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referencia',
+ 'wikieditor-toolbar-tool-reference-example' => 'Sem vložte text poznámky pod Äiarou',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Zrušiť',
+ 'wikieditor-toolbar-tool-reference-title' => 'Vložiť referenciu',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Vložiť',
+ 'wikieditor-toolbar-tool-reference-text' => 'ReferenÄný text',
+ 'wikieditor-toolbar-tool-signature' => 'Podpis a Äas',
+ 'wikieditor-toolbar-section-advanced' => 'PokroÄilé',
+ 'wikieditor-toolbar-tool-heading' => 'Nadpis',
+ 'wikieditor-toolbar-tool-heading-1' => '1. úroveň',
+ 'wikieditor-toolbar-tool-heading-2' => '2. úroveň',
+ 'wikieditor-toolbar-tool-heading-3' => '3. úroveň',
+ 'wikieditor-toolbar-tool-heading-4' => '4. úroveň',
+ 'wikieditor-toolbar-tool-heading-5' => '5. úroveň',
+ 'wikieditor-toolbar-tool-heading-example' => 'Text nadpisu',
+ 'wikieditor-toolbar-group-format' => 'Formát',
+ 'wikieditor-toolbar-tool-ulist' => 'Zoznam s odrážkami',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Položka zoznamu s odrážkami',
+ 'wikieditor-toolbar-tool-olist' => 'Číslovaný zoznam',
+ 'wikieditor-toolbar-tool-olist-example' => 'Položka Äíslovaného zoznamu',
+ 'wikieditor-toolbar-tool-indent' => 'Odsadenie',
+ 'wikieditor-toolbar-tool-indent-example' => 'Odsadený riadok',
+ 'wikieditor-toolbar-tool-nowiki' => 'Ignorovať wiki formátovanie',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Sem vložte neformátovaný text',
+ 'wikieditor-toolbar-tool-redirect' => 'Presmerovanie',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Cieľový názov stránky',
+ 'wikieditor-toolbar-tool-big' => 'Veľká',
+ 'wikieditor-toolbar-tool-big-example' => 'Veľký text',
+ 'wikieditor-toolbar-tool-small' => 'Malá',
+ 'wikieditor-toolbar-tool-small-example' => 'Malý text',
+ 'wikieditor-toolbar-tool-superscript' => 'Horný index',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Horný index',
+ 'wikieditor-toolbar-tool-subscript' => 'Dolný index',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Dolný index',
+ 'wikieditor-toolbar-group-insert' => 'Vložiť',
+ 'wikieditor-toolbar-tool-gallery' => 'Galéria obrázkov',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Príklad.jpg|Popis1
+$1:Príklad.jpg|Popis2',
+ 'wikieditor-toolbar-tool-newline' => 'Nový riadok',
+ 'wikieditor-toolbar-tool-table' => 'Tabuľka',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! hlaviÄka 1
+! hlaviÄka 2
+! hlaviÄka 3
+|-
+| riadok 1, bunka 1
+| riadok 1, bunka 2
+| riadok 1, bunka 3
+|-
+| riadok 2, bunka 1
+| riadok 2, bunka 2
+| riadok 2, bunka 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Text bunky',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Text hlaviÄky',
+ 'wikieditor-toolbar-tool-table-title' => 'Vložiť tabuľku',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Riadkov',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Stĺpcov',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Vrátane hlaviÄkového riadka',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Štýl s okrajmi',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tabuľka so zoraditeľnými hodnotami',
+ 'wikieditor-toolbar-tool-table-example' => 'Text bunky',
+ 'wikieditor-toolbar-tool-table-preview' => 'Náhľad',
+ 'wikieditor-toolbar-tool-table-insert' => 'Vložiť',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Zrušiť',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Vloženie tabuľky s viac ako $1 bunkami nie je možné pomocou tohto dialógu.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Nezadali ste platný poÄet riadkov alebo stĺpcov.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Nemôžete vložiÅ¥ tabuľku s nulovým poÄtom riadkov Äi stĺpcov.',
+ 'wikieditor-toolbar-tool-replace' => 'Hľadať a nahradiť',
+ 'wikieditor-toolbar-tool-replace-title' => 'Hľadať a nahradiť',
+ 'wikieditor-toolbar-tool-replace-search' => 'Hľadať:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'NahradiÅ¥ Äím:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Na veľkosti písmen záleží',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Vyhľadávací reťazec je regulárny výraz',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'NájsÅ¥ Äalší',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'NahradiÅ¥ Äalší',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Nahradiť všetky',
+ 'wikieditor-toolbar-tool-replace-close' => 'Zatvoriť',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Vyhľadávanie nenašlo vyhovujúce položky.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Nahradilo sa $1 výskytov.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Nezadali ste, Äo sa má hľadaÅ¥.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Regulárny výraz, ktorý ste zadali je neplatný: $1',
+ 'wikieditor-toolbar-section-characters' => 'Špeciálne znaky',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latinka',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latina rozšírené',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symboly',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grécke',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Azbuka',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabské',
+ 'wikieditor-toolbar-characters-page-persian' => 'Perzský',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebrejské',
+ 'wikieditor-toolbar-characters-page-bangla' => 'BengálÄina',
+ 'wikieditor-toolbar-characters-page-telugu' => 'TelugÄina',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'sinhalÄina',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'gudžarátÄina',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thajské',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laoské',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Pomocník',
+ 'wikieditor-toolbar-help-heading-description' => 'Popis',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Čo napíšete',
+ 'wikieditor-toolbar-help-heading-result' => 'ÄŒo dostanete',
+ 'wikieditor-toolbar-help-page-format' => 'Formátovanie',
+ 'wikieditor-toolbar-help-page-link' => 'Odkazy',
+ 'wikieditor-toolbar-help-page-heading' => 'Nadpisy',
+ 'wikieditor-toolbar-help-page-list' => 'Zoznamy',
+ 'wikieditor-toolbar-help-page-file' => 'Súbory',
+ 'wikieditor-toolbar-help-page-reference' => 'Referencie',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskusia',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kurzíva',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Text kurzívou''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Text kurzívou</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Hrubý',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Hrubý text'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Hrubý text</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Hrubý &amp; kurzíva',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Hrubý text &amp; kurzíva'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Hrubý text &amp; kurzíva</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Interný odkaz',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Názov stránky|OznaÄenie odkazu]]<br />[[Názov stránky]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>OznaÄenie odkazu</a><br /><a href='#'>Názov stránky</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Externý odkaz',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org OznaÄenie odkazu]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>OznaÄenie odkazu</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Nadpis 2. úrovne',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Text nadpisu ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Text nadpisu</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Nadpis 3. úrovne',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Text nadpisu ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Text nadpisu</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Nadpis 4. úrovne',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Text nadpisu ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Text nadpisu</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Nadpis 5. úrovne',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Text nadpisu =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Text nadpisu</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Zoznam s odrážkami',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Položka zoznamu<br />* Položka zoznamu',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Položka zoznamu</li><li>Položka zoznamu</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Číslovaný zoznam',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Položka zoznamu<br /># Položka zoznamu',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Položka zoznamu</li><li>Položka zoznamu</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Vložený súbor',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Príklad.png|thumb|Text nadpisu]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Text nadpisu' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='ZväÄÅ¡iÅ¥' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Text nadpisu</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referencie',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Text stránky.&lt;ref name="test"&gt;[http://www.example.org Text odkazu], Äalší text.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Text stránky.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Ďalšie použitie rovnakej referencie',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Text stránky.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Zobraziť referencie',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Text odkazu</a>, Äalší text.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Podpis s Äasom',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Používateľské meno</a> (<a href='#' title='{{#special:mytalk}}'>talk</a>) 15:54, 10. jún 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Podpis',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Používateľské meno</a> (<a href='#' title='{{#special:mytalk}}'>diskusia</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Odsadenie',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Bežný text<br />:Odsadený text<br />::Odsadený text',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Bežný text<dl><dd>Odsadený text<dl><dd>Odsadený text</dd></dl></dd></dl>',
+);
+
+/** Slovenian (SlovenÅ¡Äina)
+ * @author Dbc334
+ */
+$messages['sl'] = array(
+ 'wikieditor' => 'Napredni vmesnik za urejanje wikibesedila',
+ 'wikieditor-desc' => 'Nudi razširjen vmesnik za urejanje wikibesedila in mnogo modulov z dodatnimi funkcijami',
+ 'wikieditor-wikitext-tab' => 'Wikibesedilo',
+ 'wikieditor-loading' => 'Nalaganje',
+ 'wikieditor-preview-preference' => 'OmogoÄi vzporedni predogled',
+ 'wikieditor-preview-tab' => 'Predogled',
+ 'wikieditor-preview-changes-tab' => 'Spremembe',
+ 'wikieditor-preview-loading' => 'Nalaganje ...',
+ 'wikieditor-previewDialog-preference' => 'OmogoÄi predogledno pogovorno okno',
+ 'wikieditor-previewDialog-tab' => 'Predogled',
+ 'wikieditor-previewDialog-loading' => 'Nalaganje ...',
+ 'wikieditor-publish-preference' => 'OmogoÄi objavljanje korak-po-koraku',
+ 'wikieditor-publish-button-publish' => 'Objavi',
+ 'wikieditor-publish-button-cancel' => 'PrekliÄi',
+ 'wikieditor-publish-dialog-title' => 'Objavi na {{GRAMMAR:dajalnik|{{SITENAME}}}}',
+ 'wikieditor-publish-dialog-summary' => 'Povzetek urejanja (na kratko opišite narejene spremembe):',
+ 'wikieditor-publish-dialog-minor' => 'Manjše urejanje',
+ 'wikieditor-publish-dialog-watch' => 'Opazuj stran',
+ 'wikieditor-publish-dialog-publish' => 'Objavi',
+ 'wikieditor-publish-dialog-goback' => 'Pojdi nazaj',
+ 'wikieditor-template-editor-preference' => 'OmogoÄi urejanje wikipredlog s pomoÄjo obrazca',
+ 'wikieditor-template-editor-dialog-title' => 'Uredi predlogo',
+ 'wikieditor-template-editor-dialog-submit' => 'Posodobi',
+ 'wikieditor-template-editor-dialog-cancel' => 'PrekliÄi',
+ 'wikieditor-templates-preference' => 'OmogoÄi združevanje predlog',
+ 'wikieditor-toc-preference' => 'OmogoÄi plovno kazalo vsebine',
+ 'wikieditor-toc-show' => 'Prikaži vsebino',
+ 'wikieditor-toc-hide' => 'Skrij vsebino',
+ 'wikieditor-toolbar' => 'Urejevalna orodna vrstica',
+ 'wikieditor-toolbar-desc' => 'Urejevalna orodna vrstica z veÄjo uporabnostjo',
+ 'wikieditor-toolbar-preference' => 'OmogoÄi izboljÅ¡ano urejevalno vrstico',
+ 'wikieditor-toolbar-dialogs-preference' => 'OmogoÄi pogovorna okna za vstavljanje povezav, tabel itn.',
+ 'wikieditor-toolbar-hidesig' => 'Skrij gumb za podpis s strani v glavnem imenskem prostoru',
+ 'wikieditor-toolbar-loading' => 'Nalaganje ...',
+ 'wikieditor-toolbar-tool-bold' => 'Krepko',
+ 'wikieditor-toolbar-tool-bold-example' => 'Krepko besedilo',
+ 'wikieditor-toolbar-tool-italic' => 'LežeÄe',
+ 'wikieditor-toolbar-tool-italic-example' => 'LežeÄe besedilo',
+ 'wikieditor-toolbar-tool-ilink' => 'Notranja povezava',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Naslov povezave',
+ 'wikieditor-toolbar-tool-xlink' => 'Zunanja povezava (ne pozabite na predpono http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com naslov povezave',
+ 'wikieditor-toolbar-tool-link' => 'Povezava',
+ 'wikieditor-toolbar-tool-link-title' => 'Vstavi povezavo',
+ 'wikieditor-toolbar-tool-link-int' => 'Na wiki stran',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Naslov strani:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Naslov strani ali URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Oznaka povezave:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Besedilo za prikaz',
+ 'wikieditor-toolbar-tool-link-ext' => 'Na zunanjo spletno stran',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL povezave:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Oznaka povezave:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Vstavi povezavo',
+ 'wikieditor-toolbar-tool-link-cancel' => 'PrekliÄi',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Stran obstaja',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Stran ne obstaja',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Neveljaven naslov',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Zunanja povezava',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Preverjanje obstoja strani ...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Naslov, ki ste ga navedli ni veljaven.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Navedeni URL izgleda kot povezava na drugo wikistran. Ali jo želite narediti notranjo povezavo?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Notranja povezava',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Zunanja povezava',
+ 'wikieditor-toolbar-tool-link-empty' => 'Niste vnesli niÄesar, na kar bi se lahko povezovalo.',
+ 'wikieditor-toolbar-tool-file' => 'Vgradi datoteko',
+ 'wikieditor-toolbar-tool-file-example' => 'Zgled.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Reference',
+ 'wikieditor-toolbar-tool-reference-example' => 'Tukaj vstavite besedilo opombe',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'PrekliÄi',
+ 'wikieditor-toolbar-tool-reference-title' => 'Vstavi navedbo',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Vstavi',
+ 'wikieditor-toolbar-tool-reference-text' => 'Besedilo navedbe',
+ 'wikieditor-toolbar-tool-signature' => 'Vaš podpis z datumom',
+ 'wikieditor-toolbar-section-advanced' => 'Napredno',
+ 'wikieditor-toolbar-tool-heading' => 'Poglavje',
+ 'wikieditor-toolbar-tool-heading-1' => 'Raven 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Raven 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Raven 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Raven 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Raven 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Naslov poglavja',
+ 'wikieditor-toolbar-group-format' => 'Oblika',
+ 'wikieditor-toolbar-tool-ulist' => 'OznaÄen seznam',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Vnos v oznaÄenem seznamu',
+ 'wikieditor-toolbar-tool-olist' => 'OÅ¡tevilÄen seznam',
+ 'wikieditor-toolbar-tool-olist-example' => 'Vnos v oÅ¡tevilÄenem seznamu',
+ 'wikieditor-toolbar-tool-indent' => 'Zamik',
+ 'wikieditor-toolbar-tool-indent-example' => 'Zamaknjena vrstica',
+ 'wikieditor-toolbar-tool-nowiki' => 'Brez wikioblikovanja',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Tukaj vstavite neoblikovano besedilo',
+ 'wikieditor-toolbar-tool-redirect' => 'Preusmeritev',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ime ciljne strani',
+ 'wikieditor-toolbar-tool-big' => 'Veliko',
+ 'wikieditor-toolbar-tool-big-example' => 'Veliko besedilo',
+ 'wikieditor-toolbar-tool-small' => 'Majhno',
+ 'wikieditor-toolbar-tool-small-example' => 'Majhno besedilo',
+ 'wikieditor-toolbar-tool-superscript' => 'Nadpisano',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Nadpisano besedilo',
+ 'wikieditor-toolbar-tool-subscript' => 'Podpisano',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Podpisano besedilo',
+ 'wikieditor-toolbar-group-insert' => 'Vstavi',
+ 'wikieditor-toolbar-tool-gallery' => 'Galerija slik',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Primer 1.jpg|Napis 1
+$1:Primer 2.jpg|Napis 2',
+ 'wikieditor-toolbar-tool-newline' => 'Nova vrstica',
+ 'wikieditor-toolbar-tool-table' => 'Tabela',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! glava 1
+! glava 2
+! glava 3
+|-
+| vrstica 1, celica 1
+| vrstica 1, celica 2
+| vrstica 1, celica 3
+|-
+| vrstica 2, celica 1
+| vrstica 2, celica 2
+| vrstica 2, celica 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Besedilo celice',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Besedilo glave',
+ 'wikieditor-toolbar-tool-table-title' => 'Vstavi tabelo',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Vrstice',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Stolpci',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Dodaj vrstico glave',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Oblikuj z obrobami',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Naredi tabelo razvrstljivo',
+ 'wikieditor-toolbar-tool-table-example' => 'Besedilo celice',
+ 'wikieditor-toolbar-tool-table-preview' => 'Predogled',
+ 'wikieditor-toolbar-tool-table-insert' => 'Vstavi',
+ 'wikieditor-toolbar-tool-table-cancel' => 'PrekliÄi',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Vstavljanje tabele z veÄ kot $1 celicami s tem obrazcem ni mogoÄe.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Niste vnesli veljavnega Å¡tevila vrstic ali stolpcev.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ne morete vstaviti tabele z niÄ vrsticami ali stolpci.',
+ 'wikieditor-toolbar-tool-replace' => 'Zamenjaj',
+ 'wikieditor-toolbar-tool-replace-title' => 'PoiÅ¡Äi in zamenjaj',
+ 'wikieditor-toolbar-tool-replace-search' => 'IÅ¡Äi za:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Zamenjaj z:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Ujemanje velikosti Ärk',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Obravnavaj iskalni niz kot regularni izraz',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Najdi naslednje',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Zamenjaj naslednje',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Zamenjaj vse',
+ 'wikieditor-toolbar-tool-replace-close' => 'Zapri',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'VaÅ¡e iskanje s ne ujema z niÄemur.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Narejenih $1 zamenjav.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Niste vnesli niÄesar za iskanje.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'ObiÄajni izraz, ki ste ga vnesli, je neveljaven: $1',
+ 'wikieditor-toolbar-section-characters' => 'Posebni znaki',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latinica',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Razširjena latinica',
+ 'wikieditor-toolbar-characters-page-ipa' => 'Mednarodna fonetiÄna abeceda (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simboli',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grški',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirilica',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabski',
+ 'wikieditor-toolbar-characters-page-persian' => 'Perzijski',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebrejski',
+ 'wikieditor-toolbar-characters-page-bangla' => 'BengalÅ¡Äina',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugijski',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'SingalÅ¡Äina',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gudžarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tajski',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laoški',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Kmerski',
+ 'wikieditor-toolbar-section-help' => 'PomoÄ',
+ 'wikieditor-toolbar-help-heading-description' => 'Opis',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Kaj vtipkaš',
+ 'wikieditor-toolbar-help-heading-result' => 'Kaj dobiš',
+ 'wikieditor-toolbar-help-page-format' => 'Skladnja',
+ 'wikieditor-toolbar-help-page-link' => 'Povezave',
+ 'wikieditor-toolbar-help-page-heading' => 'Poglavja',
+ 'wikieditor-toolbar-help-page-list' => 'Seznami',
+ 'wikieditor-toolbar-help-page-file' => 'Datoteke',
+ 'wikieditor-toolbar-help-page-reference' => 'Reference',
+ 'wikieditor-toolbar-help-page-discussion' => 'Pogovor',
+ 'wikieditor-toolbar-help-content-italic-description' => 'LežeÄe',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''LežeÄe besedilo''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>LežeÄe besedilo</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Krepko',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Krepko besedilo'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Krepko besedilo</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Krepko in ležeÄe',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Krepko in ležeÄe besedilo'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<em><strong>Krepko in ležeÄe besedilo</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Notranja povezava',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Naslov strani|Oznaka strani]]<br />[[Naslov strani]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Oznaka strani</a> <br /> <a href='#'>Naslov strani</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Zunanja povezava',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Oznaka povezave] <br /> [http://www.example.org] <br /> http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Oznaka povezave</a> <br /> <a href='#' class='external autonumber'>[1]</a> <br /> <a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Drugostopenjsko poglavje (priporoÄeno)',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Besedilo naslovne vrstice ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Besedilo naslovne vrstice</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Tretjestopenjsko poglavje',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Besedilo naslovne vrstice ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Besedilo naslovne vrstice</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'ÄŒetrtostopenjsko poglavje',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Besedilo naslovne vrstice ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Besedilo naslovne vrstice</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Petostopenjsko poglavje',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Besedilo naslovne vrstice =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Besedilo naslovne vrstice</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'OznaÄen seznam',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Vnos a<br />* Vnos b',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li> Vnos a </li><li> Vnos b </li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'OÅ¡tevilÄen seznam',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Vnos a <br /> # Vnos b',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li> Vnos a </li><li> Vnos b </li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Vgradnja slike',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Primer.png|thumb|Napis pod sliko]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'> <a title=\"Napis pod sliko\" class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a> <div class='thumbcaption'><div class='magnify'> <a title=\"PoveÄaj\" class='internal' href='#'><img height='11' width='15' alt='' src='\$1/common/images/magnify-clip.png'/></a> </div> Napis pod sliko </div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Sprotna opomba',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Besedilo strani. &lt;ref name=&quot;test&quot;&gt; [http://www.example.org Oznaka povezave], dodatno besedilo. &lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Besedilo strani. <a href='#'><sup>[1]</sup></a>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Ponovna uporaba iste sprotne opombe',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Besedilo strani. <a href='#'><sup>[1]</sup></a>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Prikaži sprotne opombe',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'> <a title='' href='#'><b>^</b></a> <a rel='nofollow' title=\"http://www.example.org\" class='external text' href='#'>Oznaka povezave</a>, dodatno besedilo.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Podpis z datumom',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Uporabniško ime</a> (<a href='#' title='{{#special:mytalk}}'>pogovor</a>) 15:54, 10. junij 2009 (CEST)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Podpis',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Uporabniško ime</a> (<a href='#' title='{{#special:mytalk}}'>pogovor</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Zamik',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Navadno besedilo<br />:Zamaknjeno besedilo<br />::Å e bolj zamaknjeno besedilo',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Navadno besedilo <dl><dd> Zamaknjeno besedilo <dl><dd> Å e bolj zamaknjeno besedilo </dd></dl></dd></dl>',
+);
+
+/** Albanian (Shqip)
+ * @author Mikullovci11
+ * @author Olsi
+ */
+$messages['sq'] = array(
+ 'wikieditor' => 'Editori i përparuar',
+ 'wikieditor-desc' => 'Siguron një redaktimi të vazhdueshëm wikitekst dhe shumë sigurime metrazhi',
+ 'wikieditor-wikitext-tab' => 'Tekstwiki',
+ 'wikieditor-loading' => 'Duke u ngarkuar',
+ 'wikieditor-preview-preference' => 'Aktivizoni parapamjen krah-për-krah',
+ 'wikieditor-preview-tab' => 'Parapamje',
+ 'wikieditor-preview-changes-tab' => 'Ndryshimet',
+ 'wikieditor-preview-loading' => 'Duke u ngarkuar...',
+ 'wikieditor-previewDialog-preference' => 'Aktivizoni parapamjen e një dialogu',
+ 'wikieditor-previewDialog-tab' => 'Parapamje',
+ 'wikieditor-previewDialog-loading' => 'Duke u ngarkuar...',
+ 'wikieditor-publish-preference' => 'Aktivizoni publikimin hap-pas-hapi',
+ 'wikieditor-publish-button-publish' => 'Publikuar',
+ 'wikieditor-publish-button-cancel' => 'Anulo',
+ 'wikieditor-publish-dialog-title' => 'Publikimi për {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Përmbledhje (përshkrim të shkurtër e ndryshimeve që e keni bërë):',
+ 'wikieditor-publish-dialog-minor' => 'Ky është një redaktim i vogël',
+ 'wikieditor-publish-dialog-watch' => 'Mbikqyre këtë faqe',
+ 'wikieditor-publish-dialog-publish' => 'Publikuar',
+ 'wikieditor-publish-dialog-goback' => 'Kthehu',
+ 'wikieditor-template-editor-preference' => 'Aktivizoni redaktimin form-based të stampave wiki',
+ 'wikieditor-template-editor-dialog-title' => 'Redaktoni stampën',
+ 'wikieditor-template-editor-dialog-submit' => 'Përmirësojeni',
+ 'wikieditor-template-editor-dialog-cancel' => 'Anulo',
+ 'wikieditor-templates-preference' => 'Aktivizoni mbylljen e stampës',
+ 'wikieditor-toc-preference' => 'Aktivizoni navigimin e tabelës së përmbajtjeve',
+ 'wikieditor-toc-show' => 'Shih tabelën e përmbajtjeve',
+ 'wikieditor-toc-hide' => 'Fshih tabelën e përmbajtjeve',
+ 'wikieditor-toolbar' => 'Redaktoni trat me vegla',
+ 'wikieditor-toolbar-desc' => 'Redaktoni shiritin e veglave të faqes me përdorshmëri të zgjeruar',
+ 'wikieditor-toolbar-preference' => 'Aktizoni redaktimin e zgjeruar të shiritit të mjeteve',
+ 'wikieditor-toolbar-dialogs-preference' => 'Aktivizoni dialogun për të futur lidhjet, tabelët etj.',
+ 'wikieditor-toolbar-loading' => 'Duke punuar...',
+ 'wikieditor-toolbar-tool-bold' => 'Trashë',
+ 'wikieditor-toolbar-tool-bold-example' => 'Tekst i trashë',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Tekst i theksuar',
+ 'wikieditor-toolbar-tool-ilink' => 'Lidhje të brëndshme',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titulli i lidhjes',
+ 'wikieditor-toolbar-tool-xlink' => 'Lidhje e jashtme (most harro prefiksin http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com Titulli i lidhjes',
+ 'wikieditor-toolbar-tool-link' => 'Lidhje',
+ 'wikieditor-toolbar-tool-link-title' => 'Shto lidhje',
+ 'wikieditor-toolbar-tool-link-int' => 'Tek një faqe wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Titulli i faqes:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titulli i faqes apo URL-n',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Tekst për të shfaqur:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Shkruani tekstin që do të shfaqet',
+ 'wikieditor-toolbar-tool-link-ext' => 'Për një faqe të jashtme te internetit',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Adresa e lidhjes:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Titulli e lidhjes:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Shto lidhje',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Anulo',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Faqja ekziston',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Faqja nuk ekziston',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Titulli i pavlefshëm',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Lidhje të jashtme',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Kontrolloni a ekziston kjo faqe...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Titulli i cila ju e keni specifikuar është i pavlefshëm.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL-n që të specifikuar është menduar si një lidhje në faqe të tjera wiki. A doni ta bëni këtë një lidhje të brendshme?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Lidhje të brëndshme',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Lidhje të jashtme',
+ 'wikieditor-toolbar-tool-link-empty' => 'Ju nuk keni nuk keni futur asgjë për të lidhur.',
+ 'wikieditor-toolbar-tool-file' => 'Skeda e ngulituar',
+ 'wikieditor-toolbar-tool-file-example' => 'Shembull.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Burimi',
+ 'wikieditor-toolbar-tool-reference-example' => 'Vendosni Tekst poshtëshënim këtu',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Anulo',
+ 'wikieditor-toolbar-tool-reference-title' => 'Shto burimin',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Shto',
+ 'wikieditor-toolbar-tool-reference-text' => 'Burim i tekstit',
+ 'wikieditor-toolbar-tool-signature' => 'Nënshkrimi dhe vula e kohës',
+ 'wikieditor-toolbar-section-advanced' => 'Avancuar',
+ 'wikieditor-toolbar-tool-heading' => 'Mbishkrimi',
+ 'wikieditor-toolbar-tool-heading-1' => 'Niveli 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Niveli 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Niveli 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Niveli 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Niveli 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Titulli',
+ 'wikieditor-toolbar-group-format' => 'Formati',
+ 'wikieditor-toolbar-tool-ulist' => 'Lista e numëruar',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Bulleted list item',
+ 'wikieditor-toolbar-tool-olist' => 'Lista e numëruar',
+ 'wikieditor-toolbar-tool-olist-example' => 'Numbered list item',
+ 'wikieditor-toolbar-tool-indent' => 'Kryeradhë',
+ 'wikieditor-toolbar-tool-indent-example' => 'Rresht me kryeradhë',
+ 'wikieditor-toolbar-tool-nowiki' => 'Pa formatim wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Vendosni këtu tekstin pa formatim',
+ 'wikieditor-toolbar-tool-redirect' => 'Përcjellë',
+ 'wikieditor-toolbar-tool-redirect-example' => 'emri i faqes së destinuar',
+ 'wikieditor-toolbar-tool-big' => 'Të madh',
+ 'wikieditor-toolbar-tool-big-example' => 'Tekst të madhe',
+ 'wikieditor-toolbar-tool-small' => 'Të vogël',
+ 'wikieditor-toolbar-tool-small-example' => 'Tekst të vogël',
+ 'wikieditor-toolbar-tool-superscript' => 'Indeks i sipërm',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Tekst superscript',
+ 'wikieditor-toolbar-tool-subscript' => 'Subscript',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Tekst subscript',
+ 'wikieditor-toolbar-group-insert' => 'Shto',
+ 'wikieditor-toolbar-tool-gallery' => 'Galeria i piktureve',
+ 'wikieditor-toolbar-tool-gallery-example' => '((Ns: file)): Shembull.jpg | Përshkrim1
+((Ns: file)): Shembull.jpg | Përshkrim2',
+ 'wikieditor-toolbar-tool-newline' => 'Linjë te re',
+ 'wikieditor-toolbar-tool-table' => 'Tabel',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+ ! titulli 1
+ ! titulli 2
+ ! titulli 3
+ | -
+ | linjë 1, qeliza 1
+ | linjë 1, qeliza 2
+ | linjë 1, qeliza 3
+ | -
+ | linjë 2, qeliza 1
+ | linjë 2, qeliza 2
+ | linjë 2, qeliza 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Teksti e qelizës',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Titulli',
+ 'wikieditor-toolbar-tool-table-title' => 'Shto tabelë',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rreshta',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => ' Kollona',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Shtoni Kryeradhen',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Me kufi',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Bëni tabelë të rënditshme',
+ 'wikieditor-toolbar-tool-table-example' => 'Shembull',
+ 'wikieditor-toolbar-tool-table-preview' => 'Parapamje',
+ 'wikieditor-toolbar-tool-table-insert' => 'Shto',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Anulo',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Futja e një tabelë më shumë se $1 qeliza nuk është, në këtë dialog, e mundur.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Ju nuk keni dhënë numër të vlefshme e rreshtave apo kollonave.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ju nuk mund të fusni një tabelë me zero rreshta apo kollona.',
+ 'wikieditor-toolbar-tool-replace' => 'Kërkoni dhe zhvendosni',
+ 'wikieditor-toolbar-tool-replace-title' => 'Kërkoni dhe zhvendosni',
+ 'wikieditor-toolbar-tool-replace-search' => 'Kërko për:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'zhvendosni me:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Vërejë shkronjat e mëdha dhe të vogëla',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Trajtoni vargun e kërkimit si një shprehje të rregullt',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Kërko tjëter',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Zëvendëse tjëter',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Zëvendësojnë të gjitha',
+ 'wikieditor-toolbar-tool-replace-close' => 'Mbylle',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Nuk ka rezultate që përputhen me kërkesën.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 Zëvendësimi(et) duke u zbatuar.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ju nuk keni futur asgjë për të kërkuar.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Shprehja që e keni futur është i pavlefshëm: $1',
+ 'wikieditor-toolbar-section-characters' => 'Karaktere të veçanta',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latinisht',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latanisht, zgjeruar',
+ 'wikieditor-toolbar-characters-page-ipa' => 'Alfabeti Fonetik Ndërkombëtar (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simbolet',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grezisht',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirilik',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabisht',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persisht',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebraisht',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalisht',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singhalisht',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Guxharati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Ndihmë',
+ 'wikieditor-toolbar-help-heading-description' => 'Përshkrimi',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Çfarë ju shkruajti',
+ 'wikieditor-toolbar-help-heading-result' => 'Si duket',
+ 'wikieditor-toolbar-help-page-format' => 'Formatimi',
+ 'wikieditor-toolbar-help-page-link' => 'Lidhjet',
+ 'wikieditor-toolbar-help-page-heading' => 'Mbishkrimet',
+ 'wikieditor-toolbar-help-page-list' => 'Listat',
+ 'wikieditor-toolbar-help-page-file' => 'Figura',
+ 'wikieditor-toolbar-help-page-reference' => 'Burimet',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskutimet',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Tekst i pjerrët''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Tekst i pjerrët</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Trashë',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Tekst i trashë'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Tekst i trashë</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Trashë &amp; Kursiv',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Tekst i pjerrët &amp; i trashë'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<em><strong>Tekst i pjerrët &amp; i trashë</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Lidhje të brëndshme',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Titulli i Faqës|Emëri i lidhjes]]<br />[[Titulli i Faqës]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Emri i lidhjes</a><br /><a href='#'>Titulli i Faqës</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Lidhje të jashtme',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.shembull.org Emri i lidhjes]<br />[http://www.shembull.org]<br />http://www.shembull.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Emri i lidhjes</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.shembull.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Kryeradhe niveli 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Mbishkrimi ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Mbishkrimi</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Kryeradhe niveli 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Mbishkrimi ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Mbishkrimi</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Kryeradhe niveli 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Mbishkrimi ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Mbishkrimi</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Kryeradhe niveli 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Mbishkrimi =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Mbishkrimi</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Lista e numruar',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Lista e artikujve<br />*Lista e artikujve',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Lista e artikujve</li><li>Lista e artikujve</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Lista e numëruar',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Listo artikullin<br /># Listo artikullin',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Listo artikullin</li><li>Listo artikullin</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Vendos një figurë',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Caption text]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Përshkrimi' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Zmadhoe' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Përshkrimi</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Burimi',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Teksti i Faqës.&lt;ref name="test"&gt;[http://www.shembull.org Teksti i lidhjes], Tekst shtues.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Teksti i Faqës.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Përdorim shtesë i së njëjtës referencë',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Teksti i Faqës.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Burim tregues',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Link text</a>, additional text.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Nënshkrimi dhe vula e kohës',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Emri i përdoruesit</a> (<a href='#' title='{{#special:mytalk}}'>diskuto</a>) 15:54, 10 Qershor 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Firma',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Emri i përdoruesit</a> (<a href='#' title='{{#special:mytalk}}'>diskuto</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Largoj nga ana e faqes',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Tekst normal<br />:Tekst me kryeradhë<br />::Tekst me kryeradhë',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Tekst normal<dl><dd>Tekst me kryeradhë<dl><dd>Tekst me kryeradhë</dd></dl></dd></dl>',
+);
+
+/** Serbian Cyrillic ekavian (‪СрпÑки (ћирилица)‬)
+ * @author Charmed94
+ * @author Helios13
+ * @author McDutchie
+ * @author Rancher
+ * @author Sasa Stefanovic
+ * @author Жељко Тодоровић
+ * @author Михајло Ðнђелковић
+ */
+$messages['sr-ec'] = array(
+ 'wikieditor' => 'Ðапредно Ñучеље уређивања викитекÑта',
+ 'wikieditor-wikitext-tab' => 'ВикитекÑÑ‚',
+ 'wikieditor-loading' => 'Учитавање',
+ 'wikieditor-preview-tab' => 'Претпреглед',
+ 'wikieditor-preview-changes-tab' => 'Измене',
+ 'wikieditor-preview-loading' => 'Учитавам…',
+ 'wikieditor-previewDialog-tab' => 'Претпреглед',
+ 'wikieditor-previewDialog-loading' => 'Учитавам…',
+ 'wikieditor-publish-preference' => 'Омогући поÑтепено објављивање',
+ 'wikieditor-publish-button-publish' => 'Објави',
+ 'wikieditor-publish-button-cancel' => 'Откажи',
+ 'wikieditor-publish-dialog-title' => 'Објави на {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'ÐžÐ¿Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½Ðµ (укратко опишите шта Ñте изменили):',
+ 'wikieditor-publish-dialog-minor' => 'Мала измена',
+ 'wikieditor-publish-dialog-watch' => 'Ðадгледај ову Ñтраницу',
+ 'wikieditor-publish-dialog-publish' => 'Објави',
+ 'wikieditor-publish-dialog-goback' => 'Врати Ñе',
+ 'wikieditor-template-editor-dialog-title' => 'Измени шаблон',
+ 'wikieditor-template-editor-dialog-submit' => 'Ðжурирај',
+ 'wikieditor-template-editor-dialog-cancel' => 'Откажи',
+ 'wikieditor-templates-preference' => 'Омогућава размотавање шаблона',
+ 'wikieditor-toc-preference' => 'Омогући навигациону табелу Ñадржаја',
+ 'wikieditor-toc-show' => 'Покажи Ñадржај',
+ 'wikieditor-toc-hide' => 'Сакриј Ñадржај',
+ 'wikieditor-toolbar' => 'Уређивање алатнице',
+ 'wikieditor-toolbar-preference' => 'Омогући проширено уређивање алатнице',
+ 'wikieditor-toolbar-loading' => 'Учитавам…',
+ 'wikieditor-toolbar-tool-bold' => 'Подебљан',
+ 'wikieditor-toolbar-tool-bold-example' => 'Подебљан текÑÑ‚',
+ 'wikieditor-toolbar-tool-italic' => 'Курзив',
+ 'wikieditor-toolbar-tool-italic-example' => 'Курзив',
+ 'wikieditor-toolbar-tool-ilink' => 'Унутрашња веза',
+ 'wikieditor-toolbar-tool-ilink-example' => 'ÐаÑлов везе',
+ 'wikieditor-toolbar-tool-xlink' => 'Спољашња веза (не заборавите http:// префикÑ)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com наÑлов везе',
+ 'wikieditor-toolbar-tool-link' => 'Веза',
+ 'wikieditor-toolbar-tool-link-title' => 'Убаци везу',
+ 'wikieditor-toolbar-tool-link-int' => 'Према вики Ñтраници',
+ 'wikieditor-toolbar-tool-link-int-target' => 'ÐаÑлов Ñтране:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'ÐаÑлов Ñтранице или URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'ТекÑÑ‚ везе:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'ТекÑÑ‚ за приказ',
+ 'wikieditor-toolbar-tool-link-ext' => 'Према Ñпољашњој интернет Ñтраници',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'ÐдреÑа везе:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'ТекÑÑ‚ везе:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Убаци везу',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Откажи',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Страница поÑтоји',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Страница не поÑтоји',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ÐеиÑправан наÑлов',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Спољашња веза',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Провера поÑтојања Ñтранице...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'ÐаÑлов који Ñте изабрали није валидан',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Спољашња веза коју Ñте унели изгледа као веза према другој вики Ñтраници. Да ли желите да је промените у унутрашњу везу?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Унутрашња веза',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Спољашња веза',
+ 'wikieditor-toolbar-tool-link-empty' => 'ÐиÑта унели ништа за повезивање.',
+ 'wikieditor-toolbar-tool-file' => 'Слика',
+ 'wikieditor-toolbar-tool-file-example' => 'Пример.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Референца',
+ 'wikieditor-toolbar-tool-reference-example' => 'УнеÑите текÑÑ‚ фуÑноте овде',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Откажи',
+ 'wikieditor-toolbar-tool-reference-title' => 'Убаци референцу',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Убаци',
+ 'wikieditor-toolbar-tool-reference-text' => 'Референца',
+ 'wikieditor-toolbar-tool-signature' => 'ÐŸÐ¾Ñ‚Ð¿Ð¸Ñ Ñа тренутним временом',
+ 'wikieditor-toolbar-section-advanced' => 'Ðапредно',
+ 'wikieditor-toolbar-tool-heading' => 'Одељак',
+ 'wikieditor-toolbar-tool-heading-1' => 'Ðиво 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Ðиво 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Ðиво 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Ðиво 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Ðиво 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'ТекÑÑ‚ одељка',
+ 'wikieditor-toolbar-group-format' => 'Формат',
+ 'wikieditor-toolbar-tool-ulist' => 'ÐŸÐ¾Ð¿Ð¸Ñ Ñ Ð¾Ð·Ð½Ð°ÐºÐ°Ð¼Ð°',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Ставка попиÑа Ñ Ð¾Ð·Ð½Ð°ÐºÐ°Ð¼Ð°',
+ 'wikieditor-toolbar-tool-olist' => 'ÐумериÑана лиÑта',
+ 'wikieditor-toolbar-tool-olist-example' => 'Ставка нумериÑаног попиÑа',
+ 'wikieditor-toolbar-tool-indent' => 'Увучени ред',
+ 'wikieditor-toolbar-tool-indent-example' => 'Увучена линија',
+ 'wikieditor-toolbar-tool-nowiki' => 'Без вики обликовања',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Убаците необликован текÑÑ‚ овде',
+ 'wikieditor-toolbar-tool-redirect' => 'ПреуÑмерење',
+ 'wikieditor-toolbar-tool-big' => 'Велик',
+ 'wikieditor-toolbar-tool-big-example' => 'Велик текÑÑ‚',
+ 'wikieditor-toolbar-tool-small' => 'Мали',
+ 'wikieditor-toolbar-tool-small-example' => 'Мали текÑÑ‚',
+ 'wikieditor-toolbar-tool-superscript' => 'ÐатпиÑ',
+ 'wikieditor-toolbar-tool-superscript-example' => 'ТекÑÑ‚ натпиÑа',
+ 'wikieditor-toolbar-tool-subscript' => 'ÐатпиÑ',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ТекÑÑ‚ натпиÑа',
+ 'wikieditor-toolbar-group-insert' => 'Убаци',
+ 'wikieditor-toolbar-tool-gallery' => 'Галерија Ñлика',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:пример1.jpg|ÐаÑлов1
+$1:пример2.jpg|ÐаÑлов2',
+ 'wikieditor-toolbar-tool-newline' => 'Ðова линија',
+ 'wikieditor-toolbar-tool-table' => 'Табела',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! наÑлов 1
+! наÑлов 2
+! наÑлов 3
+|-
+| ред 1, ћелија 1
+| ред 1, ћелија 2
+| ред 1, ћелија 3
+|-
+| ред 2, ћелија 1
+| ред 2, ћелија 2
+| ред 2, ћелија 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Ред $1, ћелија $2',
+ 'wikieditor-toolbar-tool-table-example-header' => 'ТекÑÑ‚ одељка',
+ 'wikieditor-toolbar-tool-table-title' => 'Убаци табелу',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Редови',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Колона',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Додај ред заглавља',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Стил Ñа оквирима',
+ 'wikieditor-toolbar-tool-table-sortable' => 'МогућноÑÑ‚ Ñортирања табеле',
+ 'wikieditor-toolbar-tool-table-example' => 'Пример',
+ 'wikieditor-toolbar-tool-table-preview' => 'Преглед',
+ 'wikieditor-toolbar-tool-table-insert' => 'Убаци',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Откажи',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'ÐиÑте унели валидан број редова и колона',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ðе можете да унеÑете табелу Ñа 0 редова или колона.',
+ 'wikieditor-toolbar-tool-replace' => 'Тражи и замени',
+ 'wikieditor-toolbar-tool-replace-title' => 'Тражи и замени',
+ 'wikieditor-toolbar-tool-replace-search' => 'Тражи:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Замени Ñа:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Пази на величину Ñлова',
+ 'wikieditor-toolbar-tool-replace-regex' => 'ПоÑтупи Ñ Ð½Ð¸Ñ‚Ð¸Ð¼Ð° за претрагу као Ñ Ð¾Ð±Ð¸Ñ‡Ð½Ð¸Ð¼ изразима',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Ðађи Ñледеће',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Замени Ñледеће',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Замени Ñве',
+ 'wikieditor-toolbar-tool-replace-close' => 'Затвори',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Претрага није пронашла резултате.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Ðаправљених замена: $1.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'ÐиÑте унели ништа за претрагу.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Израз који Ñте унели није иÑправан: $1',
+ 'wikieditor-toolbar-section-characters' => 'ПоÑебни знакови',
+ 'wikieditor-toolbar-characters-page-latin' => 'латиница',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'проширена латиница',
+ 'wikieditor-toolbar-characters-page-ipa' => 'ИПÐ',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Симболи',
+ 'wikieditor-toolbar-characters-page-greek' => 'грчки',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'ћирилица',
+ 'wikieditor-toolbar-characters-page-arabic' => 'арапÑки',
+ 'wikieditor-toolbar-characters-page-persian' => 'ПерÑијÑки',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'јеврејÑко',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Бангла',
+ 'wikieditor-toolbar-characters-page-telugu' => 'телугу',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Синхала',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Гуџарати',
+ 'wikieditor-toolbar-characters-page-thai' => 'ТајландÑки',
+ 'wikieditor-toolbar-characters-page-lao' => 'ЛаоÑки',
+ 'wikieditor-toolbar-characters-page-khmer' => 'КмерÑки',
+ 'wikieditor-toolbar-section-help' => 'Помоћ',
+ 'wikieditor-toolbar-help-heading-description' => 'ОпиÑ',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Шта куцате',
+ 'wikieditor-toolbar-help-heading-result' => 'Шта добијете',
+ 'wikieditor-toolbar-help-page-format' => 'Обликовање',
+ 'wikieditor-toolbar-help-page-link' => 'Везе',
+ 'wikieditor-toolbar-help-page-heading' => 'ÐаÑлови',
+ 'wikieditor-toolbar-help-page-list' => 'СпиÑкови',
+ 'wikieditor-toolbar-help-page-file' => 'Датотеке',
+ 'wikieditor-toolbar-help-page-reference' => 'Референце',
+ 'wikieditor-toolbar-help-page-discussion' => 'Разговор',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Курзив',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Курзиван текÑÑ‚''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>ТекÑÑ‚ у курзиву</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Подебљано',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Подебљани текÑÑ‚'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Подебљан текÑÑ‚</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Подебљано &amp; иÑкошено',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Подебљани &amp; иÑкошени текÑÑ‚'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Подебљан &amp; иÑкошен текÑÑ‚</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Унутрашња веза',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Ознака везе</a><br /><a href='#'>ÐаÑлов Ñтранице</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Спољашња веза',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.пример.org ÐаÑлов везе]<br />[http://www.пример.org]<br />http://www.пример.org',
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Одељак другог нивоа',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== ÐаÑлов одељка ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>ÐаÑлов одељка</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Одељак трећег нивоа',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== ÐаÑлов одељка ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>ÐаÑлов одељка</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Одељак четвртог нивоа',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== ÐаÑлов одељка ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>ÐаÑлов одељка</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Одељак петог нивоа',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== ÐаÑлов одељка =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>ÐаÑлов одељка</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'ÐŸÐ¾Ð¿Ð¸Ñ Ñ Ð¾Ð·Ð½Ð°ÐºÐ°Ð¼Ð°',
+ 'wikieditor-toolbar-help-content-olist-description' => 'ÐумериÑана лиÑта',
+ 'wikieditor-toolbar-help-content-file-description' => 'Слика',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Примјер.png|thumb|Ðазив Ñлике]]',
+ 'wikieditor-toolbar-help-content-reference-description' => 'Референце',
+ 'wikieditor-toolbar-help-content-reference-result' => "ТекÑÑ‚ Ñтранице.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Додатна употреба иÑте референце',
+ 'wikieditor-toolbar-help-content-rereference-result' => "ТекÑÑ‚ Ñтранице.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Прикажи референце',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ÐŸÐ¾Ñ‚Ð¿Ð¸Ñ Ñ Ñ‚Ñ€ÐµÐ½ÑƒÑ‚Ð½Ð¸Ð¼ временом',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>КориÑник</a> (<a href='#' title='{{#special:mytalk}}'>разговор</a>) 15:54, 10. јун 2009. (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ПотпиÑ',
+ 'wikieditor-toolbar-help-content-indent-description' => 'Урез',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Ðормалан текÑÑ‚<br />:Увучен текÑÑ‚<br />::Увучен текÑÑ‚',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Обичан текÑÑ‚<dl><dd>Увучени текÑÑ‚<dl><dd>Увучени текÑÑ‚</dd></dl></dd></dl>',
+);
+
+/** Serbian Latin ekavian (‪Srpski (latinica)‬)
+ * @author Liangent
+ * @author McDutchie
+ * @author Rancher
+ * @author Жељко Тодоровић
+ */
+$messages['sr-el'] = array(
+ 'wikieditor-wikitext-tab' => 'Vikitekst',
+ 'wikieditor-loading' => 'UÄitavanje',
+ 'wikieditor-preview-tab' => 'Pretpregled',
+ 'wikieditor-preview-loading' => 'UÄitavanje...',
+ 'wikieditor-previewDialog-loading' => 'UÄitavanje...',
+ 'wikieditor-publish-button-publish' => 'Objavi',
+ 'wikieditor-publish-button-cancel' => 'Otkaži',
+ 'wikieditor-publish-dialog-summary' => 'Opis izmene (ukratko opišite šta ste izmenili):',
+ 'wikieditor-publish-dialog-minor' => 'Mala izmena',
+ 'wikieditor-publish-dialog-publish' => 'Objavi',
+ 'wikieditor-publish-dialog-goback' => 'Vrati se',
+ 'wikieditor-template-editor-dialog-title' => 'Izmeni Å¡ablon',
+ 'wikieditor-template-editor-dialog-submit' => 'Ažuriraj',
+ 'wikieditor-template-editor-dialog-cancel' => 'Otkaži',
+ 'wikieditor-templates-preference' => 'Omogućava razmotavanje šablona',
+ 'wikieditor-toc-preference' => 'Omogući navigacionu tabelu sadržaja',
+ 'wikieditor-toc-show' => 'Pokaži sadržaj',
+ 'wikieditor-toc-hide' => 'Sakrij sadržaj',
+ 'wikieditor-toolbar-loading' => 'UÄitavanje...',
+ 'wikieditor-toolbar-tool-bold' => 'Podebljan',
+ 'wikieditor-toolbar-tool-bold-example' => 'Podebljan tekst',
+ 'wikieditor-toolbar-tool-italic' => 'Korziv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kurzivan tekst',
+ 'wikieditor-toolbar-tool-ilink' => 'Unutrašnja veza',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Naslov veze',
+ 'wikieditor-toolbar-tool-xlink' => 'Spoljašnja veza (ne zaboravite <a href="http://">http://</a> prefiks)',
+ 'wikieditor-toolbar-tool-xlink-example' => '<a href="http://www.example.com">http://www.example.com</a> naslov veze',
+ 'wikieditor-toolbar-tool-link' => 'Veza',
+ 'wikieditor-toolbar-tool-link-title' => 'Ubaci vezu',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Naslov strane:',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Tekst veze:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Tekst za prikaz',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Putanja veze (URL):',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Tekst veze:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Ubaci vezu',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Otkaži',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Stranica postoji',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Stranica ne postoji',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Pogrešan naslov',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Spoljašnja veza',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Provera postojanja stranice...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Naslov koji ste izabrali nije validan',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Spoljašnja veza koju ste uneli izgleda kao veza prema drugoj viki stranici. Da li želite da je promenite u unutrašnju vezu?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Unutrašnja veza',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Spoljašnja veza',
+ 'wikieditor-toolbar-tool-file-example' => 'Primer.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referenca',
+ 'wikieditor-toolbar-tool-reference-example' => 'Unesite tekst fusnote ovde',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Otkaži',
+ 'wikieditor-toolbar-tool-reference-title' => 'Ubaci referencu',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Ubaci',
+ 'wikieditor-toolbar-tool-signature' => 'Potpis sa trenutnim vremenom',
+ 'wikieditor-toolbar-section-advanced' => 'Napredno',
+ 'wikieditor-toolbar-tool-heading' => 'Odeljak',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivo 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivo 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivo 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivo 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivo 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Tekst odeljka',
+ 'wikieditor-toolbar-group-format' => 'Spisak',
+ 'wikieditor-toolbar-tool-redirect' => 'Preusmerenje',
+ 'wikieditor-toolbar-tool-big' => 'Velik',
+ 'wikieditor-toolbar-tool-big-example' => 'Velik tekst',
+ 'wikieditor-toolbar-tool-small' => 'Mali',
+ 'wikieditor-toolbar-tool-small-example' => 'Mali tekst',
+ 'wikieditor-toolbar-group-insert' => 'Ubaci',
+ 'wikieditor-toolbar-tool-gallery' => 'Galerija slika',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:primer1.jpg|Naslov1
+$1:primer2.jpg|Naslov2',
+ 'wikieditor-toolbar-tool-newline' => 'Nova linija',
+ 'wikieditor-toolbar-tool-table' => 'Tabela',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! naslov 1
+! naslov 2
+! naslov 3
+|-
+| red 1, ćelija 1
+| red 1, ćelija 2
+| red 1, ćelija 3
+|-
+| red 2, ćelija 1
+| red 2, ćelija 2
+| red 2, ćelija 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Red $1, ćelija $2',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Red $1, ćelija $2 (naslov)',
+ 'wikieditor-toolbar-tool-table-title' => 'Ubaci tabelu',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Redovi',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolona',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stil sa okvirima',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Mogućnost sortiranja tabele',
+ 'wikieditor-toolbar-tool-table-example' => 'Red $1, ćelija $2',
+ 'wikieditor-toolbar-tool-table-preview' => 'Pregled',
+ 'wikieditor-toolbar-tool-table-insert' => 'Ubaci',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Otkaži',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Niste uneli validan broj redova i kolona',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ne možete da unesete tabelu sa 0 redova ili kolona.',
+ 'wikieditor-toolbar-tool-replace' => 'Traži i zameni',
+ 'wikieditor-toolbar-tool-replace-title' => 'Traži i zameni',
+ 'wikieditor-toolbar-tool-replace-search' => 'Traži:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Zameni sa:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Pazi na veliÄinu slova',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Nađi sledeće',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Zameni sledeće',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Zameni sve',
+ 'wikieditor-toolbar-tool-replace-close' => 'Zatvori',
+ 'wikieditor-toolbar-tool-replace-success' => 'Napravljenih zamena: $1.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Niste uneli ništa za pretragu.',
+ 'wikieditor-toolbar-section-characters' => 'Posebni znakovi',
+ 'wikieditor-toolbar-characters-page-latin' => 'latinica',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'proširena latinica',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simboli',
+ 'wikieditor-toolbar-characters-page-greek' => 'grÄki',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'ćirilica',
+ 'wikieditor-toolbar-characters-page-arabic' => 'arapski',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'jevrejsko',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'telugu',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gudžarati',
+ 'wikieditor-toolbar-section-help' => 'Pomoć',
+ 'wikieditor-toolbar-help-heading-description' => 'Opis',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Å ta kucate',
+ 'wikieditor-toolbar-help-heading-result' => 'Å ta dobijete',
+ 'wikieditor-toolbar-help-page-format' => 'Formatiranje',
+ 'wikieditor-toolbar-help-page-link' => 'Veze',
+ 'wikieditor-toolbar-help-page-heading' => 'Naslovi',
+ 'wikieditor-toolbar-help-page-list' => 'Spiskovi',
+ 'wikieditor-toolbar-help-page-file' => 'Datoteke',
+ 'wikieditor-toolbar-help-page-reference' => 'Reference',
+ 'wikieditor-toolbar-help-page-discussion' => 'Razgovor',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kurziv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kurzivan tekst''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Tekst u kurzivu</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Podebljano',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Podebljani tekst'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Podebljan tekst</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Podebljano &amp; iskošeno',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Podebljani &amp; iskošeni tekst'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Podebljan &amp; iskošen tekst</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Unutrašnja veza',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Spoljašnja veza',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.primer.org Naslov veze]<br />[http://www.primer.org]<br />http://www.primer.org',
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Odeljak drugog nivoa',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Naslov odeljka ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Naslov odeljka</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Odeljak trećeg nivoa',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Naslov odeljka ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Naslov odeljka</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Odeljak Äetvrtog nivoa',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Naslov odeljka ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Naslov odeljka</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Odeljak petog nivoa',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Naslov odeljka =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Naslov odeljka</h5>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Numerisana lista',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Primjer.png|thumb|Naziv slike]]',
+ 'wikieditor-toolbar-help-content-reference-description' => 'Reference',
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Prikaži reference',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Korisnik</a> (<a href='#' title='{{#special:mytalk}}'>razgovor</a>) 15:54, 10. jun 2009. (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Potpis',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normalan tekst<br />:UvuÄen tekst<br />::UvuÄen tekst',
+);
+
+/** Seeltersk (Seeltersk) */
+$messages['stq'] = array(
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Fatten &amp; kursiven Text</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Internen Link',
+);
+
+/** Sundanese (Basa Sunda)
+ * @author Kandar
+ */
+$messages['su'] = array(
+ 'wikieditor-wikitext-tab' => 'Wikitext',
+ 'wikieditor-loading' => 'Ngamuat',
+ 'wikieditor-preview-tab' => 'Pramidang',
+ 'wikieditor-preview-changes-tab' => 'Parobahan',
+ 'wikieditor-preview-loading' => 'Ngamuat…',
+ 'wikieditor-publish-button-publish' => 'Terbitkeun',
+ 'wikieditor-publish-button-cancel' => 'Bolay',
+ 'wikieditor-publish-dialog-title' => 'Terbitkeun di {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Ringkesna (parobahan naon anu dijieun):',
+ 'wikieditor-publish-dialog-minor' => 'Éditan minor',
+ 'wikieditor-publish-dialog-watch' => 'Awaskeun ieu kaca',
+ 'wikieditor-publish-dialog-publish' => 'Terbitkeun',
+ 'wikieditor-publish-dialog-goback' => 'Balik deui',
+ 'wikieditor-template-editor-preference' => 'Citakan wiki kudu bisa diédit maké bentuk formulir',
+ 'wikieditor-template-editor-dialog-title' => 'Édit citakan',
+ 'wikieditor-template-editor-dialog-submit' => 'Anyarkeun',
+ 'wikieditor-template-editor-dialog-cancel' => 'Bolay',
+ 'wikieditor-templates-preference' => 'Citakanana kudu bisa ditilepkeun',
+ 'wikieditor-toc-show' => 'Témbongkeun eusi',
+ 'wikieditor-toc-hide' => 'Sumputkeun eusi',
+ 'wikieditor-toolbar' => 'Tulbar paranti ngédit',
+ 'wikieditor-toolbar-loading' => 'Ngamuat…',
+ 'wikieditor-toolbar-tool-bold' => 'Kandel',
+ 'wikieditor-toolbar-tool-bold-example' => 'Tulisan kandel',
+ 'wikieditor-toolbar-tool-italic' => 'Déngdék',
+ 'wikieditor-toolbar-tool-italic-example' => 'Tulisan déngdék',
+ 'wikieditor-toolbar-tool-ilink' => 'Tutumbu internal',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Judul tutumbu',
+ 'wikieditor-toolbar-tool-xlink' => 'Tutumbu kaluar (inget awalan http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com judul tutumbu',
+ 'wikieditor-toolbar-tool-link' => 'Tutumbu',
+ 'wikieditor-toolbar-tool-link-title' => 'Asupkeun tutumbu',
+ 'wikieditor-toolbar-tool-link-int' => 'Ka kaca wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Tujul kaca atawa URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Judul kaca atawa URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Téks témbongkeuneun:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Téks témbongkeuneun:',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ka kaca ramat éksternal',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL tutumbu:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Téks tutumbu:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Asupkeun tutumbu',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Bolay...',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Kaca aya',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Kacana euweuh',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Judul teu bener',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Tutumbu kaluar',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Mariksa aya/henteuna kaca...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Judul anu dipénta teu bener.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL anu diasupkeun sigana tutumbu ka kaca wiki lianna. Badé didamel tutumbu internal?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Tutumbu internal',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Tutumbu éksternal',
+ 'wikieditor-toolbar-tool-link-empty' => 'Anjeun teu ngasupkeun nanaon pikeun tutumbu.',
+ 'wikieditor-toolbar-tool-file-example' => 'Conto.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Rujukan',
+ 'wikieditor-toolbar-tool-reference-example' => 'Asupkeun catetan susuku di dieu',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Bolay',
+ 'wikieditor-toolbar-tool-reference-title' => 'Asupkeun rujukan',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Asupkeun',
+ 'wikieditor-toolbar-tool-reference-text' => 'Téks rujukan',
+ 'wikieditor-toolbar-tool-signature' => 'Tandatangan jeung titimangsa',
+ 'wikieditor-toolbar-tool-heading' => 'Lulugu',
+ 'wikieditor-toolbar-tool-heading-1' => 'Tingkat 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Tingkat 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Tingkat 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Tingkat 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Tingkat 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Téks subjudul',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Béréndélan pélor',
+ 'wikieditor-toolbar-tool-olist' => 'Béréndélan nomer',
+ 'wikieditor-toolbar-tool-indent-example' => 'Baris ngelok',
+ 'wikieditor-toolbar-tool-nowiki' => 'Tanpa format wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Asupkeun téks tanpa format di dieu',
+ 'wikieditor-toolbar-tool-redirect' => 'Pindah',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ngaran tujul kaca',
+ 'wikieditor-toolbar-tool-big' => 'Badag',
+ 'wikieditor-toolbar-tool-big-example' => 'Téks badag',
+ 'wikieditor-toolbar-tool-small' => 'Leutik',
+ 'wikieditor-toolbar-tool-small-example' => 'Téks leutik',
+ 'wikieditor-toolbar-tool-superscript' => 'Superskrip',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Téks superskrip',
+ 'wikieditor-toolbar-tool-subscript' => 'Subskrip',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Téks subskrip',
+ 'wikieditor-toolbar-group-insert' => 'Asupkeun',
+ 'wikieditor-toolbar-tool-gallery' => 'Galeri gambar',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Conto.jpg|Pedaran1
+$1:Conto.jpg|Pedaran2',
+ 'wikieditor-toolbar-tool-newline' => 'Baris anyar',
+ 'wikieditor-toolbar-tool-table' => 'Tabél',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! huhulu 1
+! huhulu 2
+! huhulu 3
+|-
+| baris 1, sél 1
+| baris 1, sél 2
+| baris 1, sél 3
+|-
+| baris 2, sél 1
+| baris 2, sél 2
+| baris 2, sél 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Téks sél',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Téks huhulu',
+ 'wikieditor-toolbar-tool-table-title' => 'Asupkeun tabél',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Baris',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolom',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Tambahan baris huhulu',
+ 'wikieditor-toolbar-tool-table-example' => 'Conto',
+ 'wikieditor-toolbar-tool-table-preview' => 'Pramidang',
+ 'wikieditor-toolbar-tool-table-insert' => 'Asupkeun',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Bolay',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Dialog ieu teu bisa dipaké pikeun nyieun tabél anu sélna leuwih ti $1.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Jumlah baris atawa kolom nu diasupkeun teu bener.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Anjeun teu bisa nyieun tabél nu baris jeung kolomna enol.',
+ 'wikieditor-toolbar-tool-replace' => 'Téang jeung ganti',
+ 'wikieditor-toolbar-tool-replace-title' => 'Téang jeung ganti',
+ 'wikieditor-toolbar-tool-replace-search' => 'Téangan:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Ganti ku:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Ciples gedé/leutikna',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Téangan salajengna',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Ganti salajengna',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Ganti sadayana',
+ 'wikieditor-toolbar-tool-replace-close' => 'Tutup',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Taya nu cocog jeung nu ditéang.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 geus diganti.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Anjeun teu ngasupkeun naon anu kudu disungsi.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Éksprési régulér anu diasupkeun teu bener: $1',
+ 'wikieditor-toolbar-section-characters' => 'Karakter husus',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Lambang',
+ 'wikieditor-toolbar-characters-page-greek' => 'Yunani',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Sirilik',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arab',
+ 'wikieditor-toolbar-characters-page-persian' => 'Parsi',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ibrani',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Pitulung',
+ 'wikieditor-toolbar-help-heading-description' => 'Pedaran',
+ 'wikieditor-toolbar-help-heading-syntax' => 'NU diketikkeun',
+ 'wikieditor-toolbar-help-heading-result' => 'Nu katémbong',
+ 'wikieditor-toolbar-help-page-link' => 'Tutumbu',
+ 'wikieditor-toolbar-help-page-heading' => 'Subjudul',
+ 'wikieditor-toolbar-help-page-list' => 'Béréndélan',
+ 'wikieditor-toolbar-help-page-file' => 'Berkas',
+ 'wikieditor-toolbar-help-page-reference' => 'Rujukan',
+ 'wikieditor-toolbar-help-page-discussion' => 'Sawala',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Déngdék',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Téks déngdék''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Téks déngdék</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Kandel',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Téks kandel'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Téks kandel</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Kandel &amp; déngdék',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Téks kandel &amp; déngdék'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Téks kandel &amp; déngdék</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Tutumbu internal',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Judul kaca|Labél tutumbu]]<br />[[Judul kaca]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Labél tutumbu</a><br /><a href='#'>Judul kaca</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Tutumbu kaluar',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.conto.org Labél tutumbu]<br />[http://www.conto.org]<br />http://www.conto.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Labél tutumbu</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.conto.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Subjudul tingkat ka-2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Téks lulugu ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Téks subjudul</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Subjudul tingkat ka-3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Téks subjudul ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Téks subjudul</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Subjudul tingkat ka-4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Téks subjudul ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Téks subjudul</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Subjudul tingkat ka-5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Téks subjudul =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Téks subjudul</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Béréndélan pélor',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Béréndélan nomer',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Conto.png|thumb|Téks gambar]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Téks pedaran' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Gedéan' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Téks pedaran</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Rujukan',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Téks kaca.&lt;ref name="test"&gt;[http://www.conto.org Téks tutumbu], téks panambih.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Téks kaca.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-result' => "Téks kaca.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Témbongkeun rujukan',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.conto.org' class='téks éksternal' href='#'>Téks tutumbu</a>, téks panambih.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Tandatangan jeung titimangsa',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Sandiasma</a> (<a href='#' title='{{#special:mytalk}}'>obrolan</a>) 15:54, 10 Juni 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Tandatangan',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Sandiasma</a> (<a href='#' title='{{#special:mytalk}}'>obrolan</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Ngelok',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Téks normal<br />:Téks ngelok<br />::Téks ngelok',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Téks normal<dl><dd>Téks ngelok<dl><dd>Téks ngelok</dd></dl></dd></dl>',
+);
+
+/** Swedish (Svenska)
+ * @author Ainali
+ * @author Boivie
+ * @author Cohan
+ * @author Dafer45
+ * @author Hannibal
+ * @author McDutchie
+ * @author Sertion
+ */
+$messages['sv'] = array(
+ 'wikieditor' => 'Avancerat gränssnitt för redigering av wikitext',
+ 'wikieditor-desc' => 'Tillhandahåller ett utökat gränssnitt för redigering av wikitext och många moduler som tillhandahåller funktioner',
+ 'wikieditor-wikitext-tab' => 'Wikitext',
+ 'wikieditor-loading' => 'Laddar',
+ 'wikieditor-preview-preference' => 'Aktivera förhandsgranskning sida-vid-sida',
+ 'wikieditor-preview-tab' => 'Förhandsgranska',
+ 'wikieditor-preview-changes-tab' => 'Ändringar',
+ 'wikieditor-preview-loading' => 'Laddar...',
+ 'wikieditor-previewDialog-preference' => 'Aktivera förhandsgranska',
+ 'wikieditor-previewDialog-tab' => 'Förhandsgranska',
+ 'wikieditor-previewDialog-loading' => 'Laddar...',
+ 'wikieditor-publish-preference' => 'Aktivera steg-efter-steg-publicering',
+ 'wikieditor-publish-button-publish' => 'Publicera',
+ 'wikieditor-publish-button-cancel' => 'Avbryt',
+ 'wikieditor-publish-dialog-title' => 'Publicera i {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Redigeringssammanfattning (beskriv överskådligt de förändringar du har gjort):',
+ 'wikieditor-publish-dialog-minor' => 'Mindre ändring',
+ 'wikieditor-publish-dialog-watch' => 'Bevaka denna sida',
+ 'wikieditor-publish-dialog-publish' => 'Publicera',
+ 'wikieditor-publish-dialog-goback' => 'GÃ¥ tillbaka',
+ 'wikieditor-template-editor-preference' => 'Aktivera form-baserad redigering av wikimallar',
+ 'wikieditor-template-editor-dialog-title' => 'Redigera mall',
+ 'wikieditor-template-editor-dialog-submit' => 'Uppdatera',
+ 'wikieditor-template-editor-dialog-cancel' => 'Avbryt',
+ 'wikieditor-templates-preference' => 'Aktivera ihopfällbara mallar',
+ 'wikieditor-toc-preference' => 'Aktivera navigerbar innehållsförteckning',
+ 'wikieditor-toc-show' => 'Visa innehåll',
+ 'wikieditor-toc-hide' => 'Göm innehåll',
+ 'wikieditor-toolbar' => 'Redigeringsverktygsrad',
+ 'wikieditor-toolbar-desc' => 'Redigeringsverktygsrad med utökad användbarhet',
+ 'wikieditor-toolbar-preference' => 'Aktivera utökad redigeringsverktygsrad',
+ 'wikieditor-toolbar-dialogs-preference' => 'Aktivera dialoger för inläggning av länkar, tabeller och annat',
+ 'wikieditor-toolbar-hidesig' => 'Dölj knappen signatur på sidor i huvudnamnrymden',
+ 'wikieditor-toolbar-loading' => 'Laddar...',
+ 'wikieditor-toolbar-tool-bold' => 'Fet',
+ 'wikieditor-toolbar-tool-bold-example' => 'Fet text',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiv',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kursiv text',
+ 'wikieditor-toolbar-tool-ilink' => 'Intern länk',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Länktitel',
+ 'wikieditor-toolbar-tool-xlink' => 'Extern länk (kom ihåg http:// -prefixet)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.exempel.com länktitel',
+ 'wikieditor-toolbar-tool-link' => 'Länk',
+ 'wikieditor-toolbar-tool-link-title' => 'Lägg till länk',
+ 'wikieditor-toolbar-tool-link-int' => 'Till en wikisida',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Sidtitel:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Sidtitel eller URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Länktext:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Ange texten som skulle visas',
+ 'wikieditor-toolbar-tool-link-ext' => 'Till extern webbsida',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Länkadress:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Länktext:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Lägg till länk',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Avbryt',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Sidan existerar',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Sidan existerar inte',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Ogiltig titel',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Extern länk',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Kontrollerar om sidan existerar...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Titeln du angav är ogiltig.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL:et du specificerade ser ut att vara avsett som en länk till en annan wikisida. Vill du göra det till en intern länk?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Intern länk',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Extern länk',
+ 'wikieditor-toolbar-tool-link-empty' => 'Du skrev inget att länka till.',
+ 'wikieditor-toolbar-tool-file' => 'Inbäddad fil',
+ 'wikieditor-toolbar-tool-file-example' => 'Exempel.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Referens',
+ 'wikieditor-toolbar-tool-reference-example' => 'Sätt in fotnotstexten här',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Avbryt',
+ 'wikieditor-toolbar-tool-reference-title' => 'Lägg till referens',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Infoga',
+ 'wikieditor-toolbar-tool-reference-text' => 'Referenstext',
+ 'wikieditor-toolbar-tool-signature' => 'Signatur och tidsstämpel',
+ 'wikieditor-toolbar-section-advanced' => 'Avancerad',
+ 'wikieditor-toolbar-tool-heading' => 'Rubrik',
+ 'wikieditor-toolbar-tool-heading-1' => 'Nivå 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Nivå 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Nivå 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Nivå 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Nivå 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Rubriktext',
+ 'wikieditor-toolbar-group-format' => 'Format',
+ 'wikieditor-toolbar-tool-ulist' => 'Punktlista',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Punktlistelement',
+ 'wikieditor-toolbar-tool-olist' => 'Numrerad lista',
+ 'wikieditor-toolbar-tool-olist-example' => 'Numrerad listelement',
+ 'wikieditor-toolbar-tool-indent' => 'Indentering',
+ 'wikieditor-toolbar-tool-indent-example' => 'Indenterad rad',
+ 'wikieditor-toolbar-tool-nowiki' => 'Ingen wikiformatering',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Lägg till icke-formaterad text här',
+ 'wikieditor-toolbar-tool-redirect' => 'Omdirigera',
+ 'wikieditor-toolbar-tool-redirect-example' => 'MÃ¥lsidans namn',
+ 'wikieditor-toolbar-tool-big' => 'Stor',
+ 'wikieditor-toolbar-tool-big-example' => 'Stor text',
+ 'wikieditor-toolbar-tool-small' => 'Liten',
+ 'wikieditor-toolbar-tool-small-example' => 'Liten text',
+ 'wikieditor-toolbar-tool-superscript' => 'Upphöjd',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Upphöjd text',
+ 'wikieditor-toolbar-tool-subscript' => 'Nedsänkt',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Nedsänkt text',
+ 'wikieditor-toolbar-group-insert' => 'Sätt in',
+ 'wikieditor-toolbar-tool-gallery' => 'Bildgalleri',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Exempel.jpg|Bildtext1
+$1:Exempel.jpg|Bildtext2',
+ 'wikieditor-toolbar-tool-newline' => 'Ny rad',
+ 'wikieditor-toolbar-tool-table' => 'Tabell',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! överskrift 1
+! överskrift 2
+! överskrift 3
+|-
+| rad 1, cell 1
+| rad 1, cell 2
+| rad 1, cell 3
+|-
+| rad 2, cell 1
+| rad 2, cell 2
+| rad 2, cell 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Celltext',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Överskriftstext',
+ 'wikieditor-toolbar-tool-table-title' => 'Sätt in tabell',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rader',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Kolumner',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Inkludera överskriftsrad',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stil med kanter',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Gör tabell sorterbar',
+ 'wikieditor-toolbar-tool-table-example' => 'Celltext',
+ 'wikieditor-toolbar-tool-table-preview' => 'Förhandsgranska',
+ 'wikieditor-toolbar-tool-table-insert' => 'Sätt in',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Avbryt',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Att sätta in en tabell med fler än $1 celler är inte möjligt med denna dialog.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Du har inte angett ett giltigt antal rader eller kolumner.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Du kan inte sätta in en tabell med noll rader eller kolumner.',
+ 'wikieditor-toolbar-tool-replace' => 'Sök och ersätt',
+ 'wikieditor-toolbar-tool-replace-title' => 'Sök och ersätt',
+ 'wikieditor-toolbar-tool-replace-search' => 'Sök efter:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Ersätt med:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Skilj mellan små/stora bokstäver',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Behandla söksträngen som ett reguljärt uttryck',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Hitta nästa',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Ersätt nästa',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Ersätt alla',
+ 'wikieditor-toolbar-tool-replace-close' => 'Stäng',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Sökningen gav inget resultat.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 ersättning(ar) gjorda.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Du matade inte in något att söka efter.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Det reguljära uttryck du angav är ogiltigt: $1',
+ 'wikieditor-toolbar-section-characters' => 'Specialtecken',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Utökad latin',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Symboler',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grekiska',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kyrilliskt',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabiska',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persiska',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebreiska',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengali',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singalesiska',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laotisk',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Hjälp',
+ 'wikieditor-toolbar-help-heading-description' => 'Beskrivning',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Vad du skriver',
+ 'wikieditor-toolbar-help-heading-result' => 'Vad du får',
+ 'wikieditor-toolbar-help-page-format' => 'Formatering',
+ 'wikieditor-toolbar-help-page-link' => 'Länkar',
+ 'wikieditor-toolbar-help-page-heading' => 'Rubriker',
+ 'wikieditor-toolbar-help-page-list' => 'Listor',
+ 'wikieditor-toolbar-help-page-file' => 'Filer',
+ 'wikieditor-toolbar-help-page-reference' => 'Referenser',
+ 'wikieditor-toolbar-help-page-discussion' => 'Diskussion',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiv',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursiv text''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursiv text</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Fet',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Fet text'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Fet text</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Fet &amp; kursiv',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Fet &amp; kursiv text'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Fet &amp; kursiv text</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Intern länk',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Sidtitel|Länktext]]<br />[[Sidtitel]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Länktext</a><br /><a href='#'>Sidtitel</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Extern länk',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.exeample.org Länktext]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Länktext</a><br /><a href=\"'#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Rubriknivå 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Rubriktext ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Rubriktext</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Rubriknivå 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Rubriktext ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Rubriktext</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Rubriknivå 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Rubriktext ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Rubriktext</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Rubriknivå 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Rubriktext =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Rubriktext</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Punktlista',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Listelement<br />*Listelement',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Listelement</li><li>Listelement</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Numrerad lista',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Listelement<br /># Listelement',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Listelement</li><li>Listelement</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Inbäddad fil',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Exempel.png|thumb|Bildtext]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Bildtext' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Förstora' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Bildtext</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Referens',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Brödtext.&lt;ref name="test"&gt;[http://www.example.org Länktext], ytterligare text.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Brödtext.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Ytterligare användning av samma referens',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Brödtext.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Visa referenser',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Länktext</a>, ytterligare text.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Din signatur med tidsstämpel',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Användarnamn</a> (<a href='#' title='{{#special:mytalk}}'>diskussion</a>) 10 juni 2009 kl. 15:54 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Signatur',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Användarnamn</a> (<a href='#' title='{{#special:mytalk}}'>diskussion</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Indrag',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normal text<br />:indragen text<br />::indragen text',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normal text<dl><dd>indragen text<dl><dd>indragen text</dd></dl></dd></dl>',
+);
+
+/** Swahili (Kiswahili)
+ * @author Lloffiwr
+ * @author Muddyb Blast Producer
+ */
+$messages['sw'] = array(
+ 'wikieditor' => 'Kusano ya juu ya kuandika kiwiki',
+ 'wikieditor-wikitext-tab' => 'Maandishi ya kiwiki',
+ 'wikieditor-loading' => 'Inapakizwa',
+ 'wikieditor-preview-preference' => 'Kuona hakikisho ya mabadiliko na ukurasa ulivyo sasa kwa pamoja.',
+ 'wikieditor-preview-tab' => 'Hakiki',
+ 'wikieditor-preview-changes-tab' => 'Mabadiliko',
+ 'wikieditor-preview-loading' => 'Inapakiwa...',
+ 'wikieditor-previewDialog-preference' => 'Wezesha kisanduku cha kudhibiti hakikisho',
+ 'wikieditor-previewDialog-tab' => 'Hakiki',
+ 'wikieditor-previewDialog-loading' => 'Inapakiwa...',
+ 'wikieditor-publish-preference' => 'Kuwezesha kutoa mabadiliko hatua kwa hatua',
+ 'wikieditor-publish-button-publish' => 'Toa',
+ 'wikieditor-publish-button-cancel' => 'Batilisha',
+ 'wikieditor-publish-dialog-title' => 'Kutoa kwenye {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Muhtasari ya kuhariri (ueleze kifupi mabadiliko ulioyafanya):',
+ 'wikieditor-publish-dialog-minor' => 'Badiliko dogo',
+ 'wikieditor-publish-dialog-watch' => 'Fuatilia ukurasa huu',
+ 'wikieditor-publish-dialog-publish' => 'Chapisha',
+ 'wikieditor-publish-dialog-goback' => 'Rudi',
+ 'wikieditor-template-editor-preference' => 'Wezesha fomu inayo-hariri vigezo vya wiki',
+ 'wikieditor-template-editor-dialog-title' => 'Kuhariri kigezo',
+ 'wikieditor-template-editor-dialog-submit' => 'Sasisha',
+ 'wikieditor-template-editor-dialog-cancel' => 'Batilisha',
+ 'wikieditor-templates-preference' => 'Wezesha kigezo kijikunje',
+ 'wikieditor-toc-preference' => 'Iwezeshwe orodha ya yaliyomo inayoweza kurambazwa',
+ 'wikieditor-toc-show' => 'Fichua yaliyomo',
+ 'wikieditor-toc-hide' => 'Ficha yaliyomo',
+ 'wikieditor-toolbar' => 'Mwambaa zana wa kuhariri',
+ 'wikieditor-toolbar-desc' => 'Mwambaa zana wa kuhariri uliozidishwa',
+ 'wikieditor-toolbar-preference' => 'Tumia mwambaa zana wa kuhariri uliozidishwa',
+ 'wikieditor-toolbar-dialogs-preference' => 'Kuwezesha visanduku vya zana za kuingiza viungo, jedwali na mengineyo',
+ 'wikieditor-toolbar-loading' => 'Inapakizwa...',
+ 'wikieditor-toolbar-tool-bold' => 'Koze',
+ 'wikieditor-toolbar-tool-bold-example' => 'Maandishi ya kooze',
+ 'wikieditor-toolbar-tool-italic' => 'Italiki',
+ 'wikieditor-toolbar-tool-italic-example' => 'Maandishi ya italiki',
+ 'wikieditor-toolbar-tool-ilink' => 'Kiungo cha ndani',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Jina la kiungo',
+ 'wikieditor-toolbar-tool-xlink' => 'Kiungo cha nje (kumbuka kuanza na http:// )',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com jina la kiungo',
+ 'wikieditor-toolbar-tool-link' => 'Kiungo',
+ 'wikieditor-toolbar-tool-link-title' => 'Kuweka kiungo',
+ 'wikieditor-toolbar-tool-link-int' => 'Kwa ukurasa mwingine wa wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Jina la ukurasa:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Andika jina la ukurasa au URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Maandishi ya kiungo:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Andika maandishi yatakayoonekana',
+ 'wikieditor-toolbar-tool-link-ext' => 'Kwa gombo wavu la nje',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'KISARA ya kiungo:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Maandishi ya kiungo:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Weka kiungo',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Batilisha',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Ukurasa unapatikana',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Ukurasa haupatikani',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Jina batili',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Kiungo cha nje',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Inahakikishwa kwamba ukurasa inapatikana...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Jina la ukurasa uliloliandika ni batili.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Inaonekana kwamba KISARA (URL) ulioingiza inaelekea ukurasa mwingine wa wiki hii. Je, unataka kutengeneza kiungo cha ndani?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Kiungo cha ndani',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Kiungo cha nje',
+ 'wikieditor-toolbar-tool-link-empty' => 'Hukuandika kitu cha kuunganisha naye.',
+ 'wikieditor-toolbar-tool-file' => 'Faili futike',
+ 'wikieditor-toolbar-tool-file-example' => 'Mfano.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Tiniwayo',
+ 'wikieditor-toolbar-tool-reference-example' => 'Weka maneno ya tiniwayo hapa',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Batilisha',
+ 'wikieditor-toolbar-tool-reference-title' => 'Ingiza marejeo',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Ingiza',
+ 'wikieditor-toolbar-tool-reference-text' => 'Maandishi ya marejeo',
+ 'wikieditor-toolbar-tool-signature' => 'Sahihi na stempu ya saa',
+ 'wikieditor-toolbar-section-advanced' => 'Hali ya juu',
+ 'wikieditor-toolbar-tool-heading' => 'Kichwa',
+ 'wikieditor-toolbar-tool-heading-1' => 'Kiwango cha 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Kiwango cha 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Kiwango cha 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Kiwango cha 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Kiwango cha 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Maandishi ya kichwa',
+ 'wikieditor-toolbar-group-format' => 'Fomati',
+ 'wikieditor-toolbar-tool-ulist' => 'Orodha zenye alama',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Aya ya orodha zenye alama',
+ 'wikieditor-toolbar-tool-olist' => 'Orodha zenye namba',
+ 'wikieditor-toolbar-tool-olist-example' => 'Aya ya orodha zenye namba',
+ 'wikieditor-toolbar-tool-indent' => 'Kijongezo',
+ 'wikieditor-toolbar-tool-indent-example' => 'Mstari uliojongezwa ndani',
+ 'wikieditor-toolbar-tool-nowiki' => 'Bila fomati ya wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Weka maandishi bila fomati hapa',
+ 'wikieditor-toolbar-tool-redirect' => 'Elekezo',
+ 'wikieditor-toolbar-tool-redirect-example' => 'jina la ukurasa la kikomo',
+ 'wikieditor-toolbar-tool-big' => 'Kubwa',
+ 'wikieditor-toolbar-tool-big-example' => 'Maandishi makubwa',
+ 'wikieditor-toolbar-tool-small' => 'Ndogo',
+ 'wikieditor-toolbar-tool-small-example' => 'Maandishi madogo',
+ 'wikieditor-toolbar-tool-superscript' => 'Herufi za juu',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Maandishi ya juu',
+ 'wikieditor-toolbar-tool-subscript' => 'Herufi za chini',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Maandishi ya chini',
+ 'wikieditor-toolbar-group-insert' => 'Kuweka',
+ 'wikieditor-toolbar-tool-gallery' => 'Mkusanyiko wa picha',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Maelezo mafupi 1
+$1:Example.jpg|Maelezo mafupi 2',
+ 'wikieditor-toolbar-tool-newline' => 'Mstari mpya',
+ 'wikieditor-toolbar-tool-table' => 'Jedwali',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! kichwa 1
+! kichwa 2
+! kichwa 3
+|-
+| mstari 1, kisanduku 1
+| mstari 1, kisanduku 2
+| mstari 1, kisanduku 3
+|-
+| mstari 2, kisanduku 1
+| mstari 2, kisanduku 2
+| mstari 2, kisanduku 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Maandishi ya kisanduku jedwali',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Maandiko ya kichwa',
+ 'wikieditor-toolbar-tool-table-title' => 'Weka jedwali',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Mistari',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Safu',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Weka mstari wa vichwa',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Mtindo wenye mipaka',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tengeneza jedwali linalopangika',
+ 'wikieditor-toolbar-tool-table-example' => 'Mfano',
+ 'wikieditor-toolbar-tool-table-preview' => 'Hakiki',
+ 'wikieditor-toolbar-tool-table-insert' => 'Weka',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Batilisha',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Huwezi kutengeneza jedwali yenye visanduku zaidi na $1 kwa kutumia zana hii.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'You have not entered a valid number of rows or columns.
+Idadi ya mistari au ya safu si halali.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Huwezi kuweka jedwali ambalo halina mistari wala safu zozote.',
+ 'wikieditor-toolbar-tool-replace' => 'Kutafuta na kubadilisha maandishi',
+ 'wikieditor-toolbar-tool-replace-title' => 'Kutafuta na kubadilisha maandishi',
+ 'wikieditor-toolbar-tool-replace-search' => 'Tafuta:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Maandishi mapya:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Oanisha herufi kwa ukubwa wake',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Fanya mtindo wa tafuta kama uonyesho wa kawaida',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Tafuta maandishi yajayo',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Badilisha maandishi yajayo',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Badilisha yote',
+ 'wikieditor-toolbar-tool-replace-close' => 'Funga',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Maandishi ulioyatafuta hayakupatikana.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Yalifanyiwa (ma)badiliko $1.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Hukuweka maandishi ya kutafutwa.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Uonyesho wa kawaida ulichoingiza ni batili: $1',
+ 'wikieditor-toolbar-section-characters' => 'Herufi maalum',
+ 'wikieditor-toolbar-characters-page-latin' => 'Kilatini',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Kilatini kilichoongezwa',
+ 'wikieditor-toolbar-characters-page-ipa' => 'Herufi za Fonetiki za Kimataifa (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Alama',
+ 'wikieditor-toolbar-characters-page-greek' => 'Kigiriki',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kikyrili',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Kiarabu',
+ 'wikieditor-toolbar-characters-page-persian' => 'Kiajemi',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Kiyahudi',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Kibangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Kitelugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Kisinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Kigujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Kitai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Kilao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Kikhmeri',
+ 'wikieditor-toolbar-section-help' => 'Msaada',
+ 'wikieditor-toolbar-help-heading-description' => 'Elezo',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Ukiandika haya',
+ 'wikieditor-toolbar-help-heading-result' => 'Utapata huu',
+ 'wikieditor-toolbar-help-page-format' => 'Kufomati',
+ 'wikieditor-toolbar-help-page-link' => 'Viungo',
+ 'wikieditor-toolbar-help-page-heading' => 'Vichwa',
+ 'wikieditor-toolbar-help-page-list' => 'Orodha',
+ 'wikieditor-toolbar-help-page-file' => 'Mafaili',
+ 'wikieditor-toolbar-help-page-reference' => 'Tiniwayo',
+ 'wikieditor-toolbar-help-page-discussion' => 'Majadiliano',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Italiki',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Maandishi ya italiki''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Maandishi ya italiki</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Koze',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Maandishi ya kooze'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Maandishi ya kooze</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Koze na italiki',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Maandishi ya koze na italiki'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Maandishi ya koze na italiki</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Kiungo cha ndani ya wiki',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Jina la ukurasa|Maandishi ya kiungo]]<br />[[Jina la ukurasa]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Maandishi ya kiungo</a><br /><a href='#'>Jina la ukurasa</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Kiungo cha nje',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Maandishi ya kiungo]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Maandishi ya kiungo</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Kichwa cha kiwango cha 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Kichwa cha habari ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Kichwa cha habari</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Kichwa cha kiwango cha 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Kichwa cha habari ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Kichwa cha habari</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Kichwa cha kiwango cha 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Kichwa cha habari ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Kichwa cha habari</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Kichwa cha kiwango cha 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Kichwa cha habari =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Kichwa cha habari</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Orodha zenye alama',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Aya<br />* Aya',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Aya</li><li>Aya</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Orodha zenye namba',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Aya<br /># Aya',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Aya</li><li>Aya</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Faili futike',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Maelezo mafupi]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Maelezo mafupi' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Kuza' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Maelezo mafupi</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Tiniwayo',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Maandishi ya ukurasa.&lt;ref name="mfano"&gt;[http://www.example.org Maandishi ya kiungo], maandishi mengine.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Maandiko.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Kutumia tiniwayo fulani kwa mara nyingine',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Maandiko.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Onyesha tiniwayo',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Maandishi ya kiungo</a>, maandishi mengine.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Sahihi pamoja na stempu ya saa',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Jina la mtumiaji</a> (<a href='#' title='{{#special:mytalk}}'>majadiliano</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Sahihi',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Jina la mtumiaji</a> (<a href='#' title='{{#special:mytalk}}'>majadiliano</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Jongeza ndani',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Maandiko ya kawaida<br />:Yaliyojongezwa ndani<br />::Yaliyojongezwa ndani',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Maandiko ya kawaida<dl><dd>Yaliyojongezwa ndani<dl><dd>Yaliyojongezwa ndani</dd></dl></dd></dl>',
+);
+
+/** Tamil (தமிழà¯)
+ * @author Surya Prakash.S.A.
+ * @author TRYPPN
+ * @author செலà¯à®µà®¾
+ */
+$messages['ta'] = array(
+ 'wikieditor' => 'மேமà¯à®ªà®Ÿà¯à®Ÿ விகà¯à®•à®¿à®¯à¯à®°à¯ˆà®¤à¯ தொகà¯à®ªà¯à®ªà¯ இடைமà¯à®•à®®à¯',
+ 'wikieditor-desc' => 'நீடà¯à®Ÿà®¿à®•à¯à®•à®¤à¯à®¤à®•à¯ விகà¯à®•à®¿à®‰à®°à¯ˆ இடைமà¯à®•à®¤à¯à®¤à¯ˆà®¯à¯à®®à¯ மேலà¯à®®à¯ பல à®…à®®à¯à®šà®™à¯à®•à®³à¯ˆà®¯à¯à®®à¯ தரà¯à®•à®¿à®±à®¤à¯',
+ 'wikieditor-wikitext-tab' => 'விகà¯à®•à®¿à®‰à®°à¯ˆ',
+ 'wikieditor-loading' => 'à®à®±à¯à®±à®ªà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯',
+ 'wikieditor-preview-preference' => 'பகà¯à®•à®®à¯ பகà¯à®•à®®à®¾à®• à®®à¯à®©à¯à®©à¯‹à®Ÿà¯à®Ÿà®®à¯ பாரà¯à®¤à¯à®¤à®²à¯ˆà®šà¯ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•',
+ 'wikieditor-preview-tab' => 'à®®à¯à®©à¯à®¤à¯‹à®±à¯à®±à®®à¯',
+ 'wikieditor-preview-changes-tab' => 'மாறà¯à®±à®™à¯à®•à®³à¯',
+ 'wikieditor-preview-loading' => 'à®à®±à¯à®±à®ªà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯...',
+ 'wikieditor-previewDialog-preference' => 'à®®à¯à®©à¯à®©à¯‹à®Ÿà¯à®Ÿ உரையாடலைச௠செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•',
+ 'wikieditor-previewDialog-tab' => 'à®®à¯à®©à¯à®¤à¯‹à®±à¯à®±à®®à¯',
+ 'wikieditor-previewDialog-loading' => 'à®à®±à¯à®±à®ªà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯...',
+ 'wikieditor-publish-preference' => 'படிபà¯à®ªà®Ÿà®¿à®¯à®¾à®• வெளியிடலைச௠செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•',
+ 'wikieditor-publish-button-publish' => 'வெளியிடà¯',
+ 'wikieditor-publish-button-cancel' => 'விடà¯à®Ÿà¯à®µà®¿à®Ÿà¯',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}} எனà¯à®ªà®¤à®±à¯à®•à¯ வெளியிடà¯',
+ 'wikieditor-publish-dialog-summary' => 'தொகà¯à®ªà¯à®ªà¯à®šà¯ சà¯à®°à¯à®•à¯à®•à®®à¯ (நீஙà¯à®•à®³à¯ செயà¯à®¤ மாறà¯à®±à®™à¯à®•à®³à¯ˆà®šà¯ சà¯à®°à¯à®•à¯à®•à®®à®¾à®•à®•à¯ கூறவà¯à®®à¯):',
+ 'wikieditor-publish-dialog-minor' => 'சிற௠தொகà¯à®ªà¯à®ªà¯',
+ 'wikieditor-publish-dialog-watch' => 'இநà¯à®¤à®ªà¯ பகà¯à®•à®¤à¯à®¤à¯ˆà®•à¯ கவனிகà¯à®•à®µà¯à®®à¯',
+ 'wikieditor-publish-dialog-publish' => 'வெளியிடà¯',
+ 'wikieditor-publish-dialog-goback' => 'பின௠செலà¯à®²à®µà¯à®®à¯',
+ 'wikieditor-template-editor-preference' => 'விகà¯à®•à®¿ வாரà¯à®ªà¯à®ªà¯à®°à¯à®•à¯à®•à®³à®¿à®©à¯ படிவ-அடிபà¯à®ªà®Ÿà¯ˆà®¯à®¿à®²à®¾à®© தொகà¯à®¤à¯à®¤à®²à¯ˆà®šà¯ செயலà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•',
+ 'wikieditor-template-editor-dialog-title' => 'வாரà¯à®ªà¯à®ªà¯à®°à¯à®µà¯ˆ தொகà¯à®¤à¯à®¤à®²à¯',
+ 'wikieditor-template-editor-dialog-submit' => 'பà¯à®¤à¯à®ªà¯à®ªà®¿',
+ 'wikieditor-template-editor-dialog-cancel' => 'விடà¯à®Ÿà¯à®µà®¿à®Ÿà¯',
+ 'wikieditor-toc-show' => 'உளà¯à®³à®Ÿà®•à¯à®•à®™à¯à®•à®³à¯ˆ காடà¯à®Ÿà¯',
+ 'wikieditor-toc-hide' => 'உளà¯à®³à®Ÿà®•à¯à®•à®™à¯à®•à®³à¯ˆ மறை',
+ 'wikieditor-toolbar' => 'தொகà¯à®ªà¯à®ªà¯à®•à¯ கரà¯à®µà®¿à®ªà¯à®ªà®Ÿà¯à®Ÿà¯ˆ',
+ 'wikieditor-toolbar-desc' => 'பகà¯à®•à®•à¯ கரà¯à®µà®¿à®ªà¯à®ªà®Ÿà¯à®Ÿà¯ˆà®¯à¯ˆ மேமà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà¯à®Ÿà®©à¯ தொகà¯à®•à¯à®•à®µà¯à®®à¯',
+ 'wikieditor-toolbar-preference' => 'மேமà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ தொகà¯à®¤à¯à®¤à®²à¯ கரà¯à®µà®¿à®ªà¯à®ªà®Ÿà¯à®Ÿà¯ˆà®¯à¯ˆà®šà¯ செயறà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯',
+ 'wikieditor-toolbar-hidesig' => 'à®®à¯à®¤à®©à¯à®®à¯ˆà®ªà¯ பெயரà¯à®µà¯†à®³à®¿à®¯à®¿à®²à®¿à®°à¯à®•à¯à®•à¯à®®à¯ பகà¯à®•à®™à¯à®•à®³à®¿à®²à¯ கையொபà¯à®ªà®ªà¯ பொதà¯à®¤à®¾à®©à¯ˆ மறைகà¯à®•à®µà¯à®®à¯',
+ 'wikieditor-toolbar-loading' => 'à®à®±à¯à®±à®ªà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯...',
+ 'wikieditor-toolbar-tool-bold' => 'தடிதà¯à®¤',
+ 'wikieditor-toolbar-tool-bold-example' => 'தடிதà¯à®¤ எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯',
+ 'wikieditor-toolbar-tool-italic' => 'சாயà¯à®¨à¯à®¤',
+ 'wikieditor-toolbar-tool-italic-example' => 'சாயà¯à®¨à¯à®¤ எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯',
+ 'wikieditor-toolbar-tool-ilink' => 'உளà¯à®³à®¿à®£à¯ˆà®ªà¯à®ªà¯',
+ 'wikieditor-toolbar-tool-ilink-example' => '# இணைபà¯à®ªà¯à®¤à¯ தலைபà¯à®ªà¯
+# தலைபà¯à®ªà¯ˆ இணை',
+ 'wikieditor-toolbar-tool-xlink' => 'வெளியிணைபà¯à®ªà¯ (http:// à®®à¯à®©à¯à®©à®¿à®£à¯ˆà®ªà¯à®ªà¯ˆ மறகà¯à®•à®¾à®¤à¯€à®°à¯)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com இணைபà¯à®ªà¯à®¤à¯ தலைபà¯à®ªà¯',
+ 'wikieditor-toolbar-tool-link' => 'இணைபà¯à®ªà¯',
+ 'wikieditor-toolbar-tool-link-title' => 'இணைபà¯à®ªà¯ˆà®¯à®¿à®Ÿà¯',
+ 'wikieditor-toolbar-tool-link-int' => 'ஒர௠விகà¯à®•à®¿à®¯à®¿à®©à¯ பகà¯à®•à®¤à¯à®¤à®¿à®±à¯à®•à¯',
+ 'wikieditor-toolbar-tool-link-int-target' => 'இலகà¯à®•à¯à®ªà¯ பகà¯à®•à®®à¯ அலà¯à®²à®¤à¯ உரலி:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'பகà¯à®•à®¤à¯ தலைபà¯à®ªà¯ அலà¯à®²à®¤à¯ உரலி',
+ 'wikieditor-toolbar-tool-link-int-text' => 'காடà¯à®Ÿ வேணà¯à®Ÿà®¿à®¯ சொறà¯à®±à¯Šà®Ÿà®°à¯',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'கடà¯à®Ÿà®¾à®¯à®®à®¾à®•à®•à¯ காடà¯à®Ÿà®ªà¯à®ªà®Ÿ வேணà¯à®Ÿà®¿à®¯ சொறà¯à®±à¯Šà®Ÿà®°à¯',
+ 'wikieditor-toolbar-tool-link-ext' => 'ஒர௠வெளி இணையப௠பகà¯à®•à®¤à¯à®¤à®¿à®±à¯à®•à¯',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'இணைபà¯à®ªà¯ உரலி:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'இணைபà¯à®ªà¯à®šà¯ சொறà¯à®±à¯Šà®Ÿà®°à¯:',
+ 'wikieditor-toolbar-tool-link-insert' => 'இணைபà¯à®ªà¯ˆà®¯à®¿à®Ÿà¯',
+ 'wikieditor-toolbar-tool-link-cancel' => 'விடà¯à®Ÿà¯à®µà®¿à®Ÿà¯',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'இபà¯à®ªà®•à¯à®•à®®à¯ உளà¯à®³à®¤à¯',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'இபà¯à®ªà®•à¯à®•à®®à¯ இனà¯à®©à¯à®®à¯ உரà¯à®µà®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'தவறான தலைபà¯à®ªà¯',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'வெளி இணைபà¯à®ªà¯',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'பகà¯à®•à®®à¯ உளà¯à®³à®¤à®¾ எனà¯à®±à¯ சோதனை செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ தலைபà¯à®ªà¯ செலà¯à®²à®¾à®¤à®¤à¯.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'நீஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ உரலி ஒர௠விகà¯à®•à®¿à®ªà¯à®ªà®•à¯à®•à®¤à¯à®¤à®¿à®©à¯ இணைபà¯à®ªà¯ˆà®ªà¯ போல௠தோனà¯à®±à¯à®•à®¿à®±à®¤à¯. நீஙà¯à®•à®³à¯ அதனை ஒர௠அக இணைபà¯à®ªà®¾à®• ஆகà¯à®•à¯à®•à®¿à®±à¯€à®°à¯à®•à®³à®¾?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'உளà¯à®³à®¿à®£à¯ˆà®ªà¯à®ªà¯',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'வெளி இணைபà¯à®ªà¯',
+ 'wikieditor-toolbar-tool-link-empty' => 'நீஙà¯à®•à®³à¯ இணைபà¯à®ªà®¤à®±à¯à®•à¯ எதையà¯à®®à¯‡ உளà¯à®³à®¿à®Ÿà®µà®¿à®²à¯à®²à¯ˆ.',
+ 'wikieditor-toolbar-tool-file' => 'பொதிநà¯à®¤à¯à®³à¯à®³ படிமமà¯',
+ 'wikieditor-toolbar-tool-file-example' => 'மாதிரிபà¯à®ªà®Ÿà®®à¯',
+ 'wikieditor-toolbar-tool-reference' => '# மேறà¯à®•à¯‹à®³à¯
+# à®®à¯à®©à¯à®®à®¾à®¤à®¿à®°à®¿',
+ 'wikieditor-toolbar-tool-reference-example' => 'அடிகà¯à®•à¯à®±à®¿à®ªà¯à®ªà¯ˆ இஙà¯à®•à¯‡ எழà¯à®¤à®µà¯à®®à¯',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'விடà¯à®Ÿà¯à®µà®¿à®Ÿà¯',
+ 'wikieditor-toolbar-tool-reference-title' => 'மேறà¯à®•à¯‹à®³à¯ˆ உளà¯à®³à®¿à®Ÿà¯',
+ 'wikieditor-toolbar-tool-reference-insert' => 'உளà¯à®³à®¿à®Ÿà¯',
+ 'wikieditor-toolbar-tool-reference-text' => 'மேறà¯à®•à¯‹à®³à¯',
+ 'wikieditor-toolbar-tool-signature' => 'நேர à®®à¯à®¤à¯à®¤à®¿à®°à¯ˆà®¯à¯à®Ÿà®©à¯ கையொபà¯à®ªà®®à¯',
+ 'wikieditor-toolbar-section-advanced' => 'மேமà¯à®ªà®Ÿà¯à®Ÿ',
+ 'wikieditor-toolbar-tool-heading' => 'தலைபà¯à®ªà¯',
+ 'wikieditor-toolbar-tool-heading-1' => '# à®®à¯à®¤à®±à¯ கடà¯à®Ÿà®®à¯
+# நிலை ஒனà¯à®±à¯',
+ 'wikieditor-toolbar-tool-heading-2' => '# இரணà¯à®Ÿà®¾à®®à¯ கடà¯à®Ÿà®®à¯
+# நிலை இரணà¯à®Ÿà¯',
+ 'wikieditor-toolbar-tool-heading-3' => '# மூனà¯à®±à®¾à®®à¯ கடà¯à®Ÿà®®à¯
+# நிலை மூனà¯à®±à¯',
+ 'wikieditor-toolbar-tool-heading-4' => '# நானà¯à®•à®¾à®®à¯ கடà¯à®Ÿà®®à¯
+# நிலை நானà¯à®•à¯',
+ 'wikieditor-toolbar-tool-heading-5' => '# à®à®¨à¯à®¤à®¾à®®à¯ கடà¯à®Ÿà®®à¯
+# நிலை à®à®¨à¯à®¤à¯',
+ 'wikieditor-toolbar-tool-heading-example' => '# தலைபà¯à®ªà¯
+# தலைபà¯à®ªà¯ எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯',
+ 'wikieditor-toolbar-group-format' => 'வடிவமைபà¯à®ªà¯',
+ 'wikieditor-toolbar-tool-ulist' => 'கà¯à®£à¯à®Ÿà¯à®•à¯à®•à¯à®±à®¿à®¯à®¿à®Ÿà¯à®Ÿ வரிசை',
+ 'wikieditor-toolbar-tool-ulist-example' => 'கà¯à®£à¯à®Ÿà¯à®•à¯à®•à¯à®±à®¿à®¯à®¿à®Ÿà¯à®Ÿ வரிசையின௠உறà¯à®ªà¯à®ªà®¿à®©à®°à¯',
+ 'wikieditor-toolbar-tool-olist' => 'எணà¯à®•à®³à¯à®Ÿà®©à¯ வரிசை',
+ 'wikieditor-toolbar-tool-olist-example' => 'எணà¯à®•à®³à¯à®Ÿà®©à¯ கூடிய வரிசை உறà¯à®ªà¯à®ªà®¿à®©à®°à¯',
+ 'wikieditor-toolbar-tool-indent' => 'சிற௠தளà¯à®³à®¿à®µà¯ˆà®ªà¯à®ªà¯',
+ 'wikieditor-toolbar-tool-indent-example' => 'சிறித௠தளà¯à®³à®¿à®µà¯ˆà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ வரி',
+ 'wikieditor-toolbar-tool-nowiki' => 'விகà¯à®•à®¿à®¯à®¿à®©à¯ வடிவமைபà¯à®ªà®¿à®²à¯ இலà¯à®²à¯ˆ',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'வடிவமைகà¯à®•à®ªà¯à®ªà®Ÿà®¾à®¤ உரையை இஙà¯à®•à¯ உளà¯à®³à®¿à®Ÿà¯à®•',
+ 'wikieditor-toolbar-tool-redirect' => 'திரà¯à®ªà¯à®ªà®¿à®µà®¿à®Ÿà¯',
+ 'wikieditor-toolbar-tool-redirect-example' => 'கà¯à®±à®¿à®¤à¯à®¤ பகà¯à®•à®®à¯',
+ 'wikieditor-toolbar-tool-big' => 'பெரிய',
+ 'wikieditor-toolbar-tool-big-example' => 'பெரிய எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯',
+ 'wikieditor-toolbar-tool-small' => 'சிறிய',
+ 'wikieditor-toolbar-tool-small-example' => 'சிறிய எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯',
+ 'wikieditor-toolbar-tool-superscript' => 'மேலொடà¯à®Ÿà¯',
+ 'wikieditor-toolbar-tool-superscript-example' => 'மேலொடà¯à®Ÿà¯ உரை',
+ 'wikieditor-toolbar-tool-subscript' => 'கீழொடà¯à®Ÿà¯',
+ 'wikieditor-toolbar-tool-subscript-example' => 'கீழொடà¯à®Ÿà¯ உரை',
+ 'wikieditor-toolbar-group-insert' => 'உளà¯à®³à®¿à®Ÿà¯',
+ 'wikieditor-toolbar-tool-gallery' => 'படக௠காடà¯à®šà®¿à®¯à®•à®®à¯',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:எடà¯à®¤à¯à®¤à¯à®•à¯à®•à®¾à®Ÿà¯à®Ÿà¯.jpg|படவிளகà¯à®•à®®à¯1
+$1:எடà¯à®¤à¯à®¤à¯à®•à¯à®•à®¾à®Ÿà¯à®Ÿà¯.jpg|படவிளகà¯à®•à®®à¯2',
+ 'wikieditor-toolbar-tool-newline' => 'பà¯à®¤à®¿à®¯ வரி',
+ 'wikieditor-toolbar-tool-table' => 'படà¯à®Ÿà®¿à®¯à®²à¯',
+ 'wikieditor-toolbar-tool-table-example-old' => ';-
+;! கà¯à®±à¯à®¨à¯à®¤à®²à¯ˆà®ªà¯à®ªà¯ 1
+;! கà¯à®±à¯à®¨à¯à®¤à®²à¯ˆà®ªà¯à®ªà¯ 2
+;! கà¯à®±à¯à®¨à¯à®¤à®²à¯ˆà®ªà¯à®ªà¯ 3
+;|-
+;| கிடைவரிசை 1, செஙà¯à®•à¯à®¤à¯à®¤à¯ வரிசை 1
+;| கிடைவரிசை 1, செஙà¯à®•à¯à®¤à¯à®¤à¯ வரிசை 2
+;| கிடைவரிசை 1, செஙà¯à®•à¯à®¤à¯à®¤à¯ வரிசை 3
+;|-
+;| கிடைவரிசை 2, செஙà¯à®•à¯à®¤à¯à®¤à¯ வரிசை 1
+;| கிடைவரிசை 2, செஙà¯à®•à¯à®¤à¯à®¤à¯ வரிசை 2
+;| கிடைவரிசை 2, செஙà¯à®•à¯à®¤à¯à®¤à¯ வரிசை 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'சிற௠கடà¯à®Ÿà®¤à¯à®¤à®¿à®²à¯ உளà¯à®³ சொறà¯à®•à®³à¯',
+ 'wikieditor-toolbar-tool-table-example-header' => 'தலைபà¯à®ªà¯ எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯',
+ 'wikieditor-toolbar-tool-table-title' => 'படà¯à®Ÿà®¿à®¯à®²à¯ˆ உளà¯à®³à®¿à®Ÿà¯',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'கிடை வரிசைகளà¯',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'செஙà¯à®•à¯à®¤à¯à®¤à¯ வரிசைகளà¯',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'பà¯à®¤à®¿à®¯ தலைபà¯à®ªà¯à®•à¯ கிடை வரிசையை உரà¯à®µà®¾à®•à¯à®•à®µà¯à®®à¯',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'கடà¯à®Ÿà®®à¯ போடà¯à®Ÿà¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆ உரà¯à®µà®¾à®•à¯à®•à®µà¯à®®à¯',
+ 'wikieditor-toolbar-tool-table-sortable' => 'வரிசைபடà¯à®¤à¯à®¤à¯à®®à¯ விததà¯à®¤à®¿à®²à¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆ அமைகà¯à®•à®µà¯à®®à¯',
+ 'wikieditor-toolbar-tool-table-example' => 'எடà¯à®¤à¯à®¤à¯à®•à¯à®•à®¾à®Ÿà¯à®Ÿà¯',
+ 'wikieditor-toolbar-tool-table-preview' => 'à®®à¯à®©à¯à®¤à¯‹à®±à¯à®±à®®à¯',
+ 'wikieditor-toolbar-tool-table-insert' => 'உளà¯à®³à®¿à®Ÿà¯',
+ 'wikieditor-toolbar-tool-table-cancel' => 'விடà¯à®Ÿà¯à®µà®¿à®Ÿà¯',
+ 'wikieditor-toolbar-tool-table-toomany' => 'இவà¯à®µà¯à®°à¯ˆà®¯à®¾à®Ÿà®²à¯ பெடà¯à®Ÿà®¿à®¯à¯à®Ÿà®©à¯ $1 -஠விட மேறà¯à®ªà®Ÿà¯à®Ÿ நà¯à®£à¯à®£à®±à¯ˆà®•à®³à¯ˆà®•à¯ கொணà¯à®Ÿ ஓர௠அடà¯à®Ÿà®µà®£à¯ˆà®¯à¯ˆ நà¯à®´à¯ˆà®•à¯à®• இயலாதà¯.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'தாஙà¯à®•à®³à¯, கிடைவரிசை (அலà¯à®²à®¤à¯) செஙà¯à®•à¯à®¤à¯à®¤à¯ வரிசைகà¯à®•à®¾à®© சரியான எணà¯à®£à¯ˆà®•à¯ கொடà¯à®•à¯à®•à®µà®¿à®²à¯à®²à¯ˆ',
+ 'wikieditor-toolbar-tool-table-zero' => 'தாஙà¯à®•à®³à¯, கிடைவரிசை (அலà¯à®²à®¤à¯) செஙà¯à®•à¯à®¤à¯à®¤à¯ வரிசைகà¯à®•à®¾à®© எணà¯à®£à¯ˆ பூசà¯à®šà®¿à®¯à®®à¯ ( 0 ) எனà¯à®±à¯ கொடà¯à®¤à¯à®¤à¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆ உரà¯à®µà®¾à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯',
+ 'wikieditor-toolbar-tool-replace' => 'தேடிகà¯à®•à®£à¯à®Ÿà¯à®ªà®¿à®Ÿà®¿à®¤à¯à®¤à¯ மாறà¯à®±à®µà¯à®®à¯',
+ 'wikieditor-toolbar-tool-replace-title' => 'தேடிகà¯à®•à®£à¯à®Ÿà¯à®ªà®¿à®Ÿà®¿à®¤à¯à®¤à¯ மாறà¯à®±à®µà¯à®®à¯',
+ 'wikieditor-toolbar-tool-replace-search' => 'தேடவà¯à®®à¯:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'மாறà¯à®±à®µà¯à®®à¯:',
+ 'wikieditor-toolbar-tool-replace-case' => 'பெரிய / சிறிய எழà¯à®¤à¯à®¤à¯à®ªà¯ பொரà¯à®¤à¯à®¤à®®à¯',
+ 'wikieditor-toolbar-tool-replace-regex' => 'தேடபà¯à®ªà®Ÿà¯à®®à¯ சொறà¯à®±à¯Šà®Ÿà®°à¯ˆ வழகà¯à®•à®®à®¾à®©à®¤à®¾à®• எடà¯à®¤à¯à®¤à¯à®•à¯à®•à¯Šà®³à¯à®³à®µà¯à®®à¯',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'அடà¯à®¤à¯à®¤à®¤à¯ˆ கணà¯à®Ÿà¯à®ªà®¿à®Ÿà®¿',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'அடà¯à®¤à¯à®¤à®¤à¯ˆ மாறà¯à®±à®µà¯à®®à¯',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'எலà¯à®²à®¾à®µà®±à¯à®±à¯ˆà®¯à¯à®®à¯ மாறà¯à®±à®µà¯à®®à¯',
+ 'wikieditor-toolbar-tool-replace-close' => 'மூடà¯à®•',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'தஙà¯à®•à®³à®¤à¯ தேடலà¯à®•à¯à®•à®¾à®© à®®à¯à®Ÿà®¿à®µà¯ எஙà¯à®•à¯à®®à¯ ஒதà¯à®¤à¯à®µà®°à®µà®¿à®²à¯à®²à¯ˆ.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 மாறà¯à®±à®®à¯(களà¯) மேறà¯à®•à¯Šà®³à¯à®³à®ªà¯à®ªà®Ÿà¯à®Ÿà®©.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'எதனைதà¯à®¤à¯‡à®Ÿà¯à®µà®¤à¯ எனà¯à®±à¯ தாஙà¯à®•à®³à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®µà®¿à®²à¯à®²à¯ˆ.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'நீஙà¯à®•à®³à¯ உளà¯à®³à®¿à®Ÿà¯à®Ÿ வழகà¯à®•à®®à®¾à®© தொடர௠செலà¯à®²à®¾à®¤à¯: $1',
+ 'wikieditor-toolbar-section-characters' => 'சிறபà¯à®ªà¯ எழà¯à®¤à¯à®¤à¯à®°à¯à®•à¯à®•à®³à¯',
+ 'wikieditor-toolbar-characters-page-latin' => 'இலதà¯à®¤à¯€à®©à¯',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'இலதà¯à®¤à¯€à®©à¯ விரிவà¯',
+ 'wikieditor-toolbar-characters-page-ipa' => 'பனà¯à®©à®¾à®Ÿà¯à®Ÿà¯ ஒலிபà¯à®ªà¯ அரிசà¯à®šà¯à®µà®Ÿà®¿',
+ 'wikieditor-toolbar-characters-page-symbols' => 'கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®•à®³à¯',
+ 'wikieditor-toolbar-characters-page-greek' => 'கிரேகà¯à®•à®®à¯',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'சைரிலிக௠(Cyrillic)',
+ 'wikieditor-toolbar-characters-page-arabic' => 'அரபà¯',
+ 'wikieditor-toolbar-characters-page-persian' => 'பாரசீகமà¯',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'எபிரேயம௠(ஈபà¯à®°à¯)',
+ 'wikieditor-toolbar-characters-page-bangla' => 'வஙà¯à®•à®¾à®³à®®à¯',
+ 'wikieditor-toolbar-characters-page-telugu' => 'தெலà¯à®™à¯à®•à¯',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'சிஙà¯à®•à®³à®®à¯',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'கà¯à®šà®°à®¾à®¤à¯à®¤à®¿',
+ 'wikieditor-toolbar-characters-page-thai' => 'தாயà¯',
+ 'wikieditor-toolbar-characters-page-lao' => 'இலாவோ',
+ 'wikieditor-toolbar-characters-page-khmer' => 'கெமெரà¯',
+ 'wikieditor-toolbar-section-help' => 'உதவி',
+ 'wikieditor-toolbar-help-heading-description' => 'விளகà¯à®•à®®à¯',
+ 'wikieditor-toolbar-help-heading-syntax' => 'தாஙà¯à®•à®³à¯ தடà¯à®Ÿà®šà¯à®šà¯ செயà¯à®¤à®¤à¯',
+ 'wikieditor-toolbar-help-heading-result' => 'தஙà¯à®•à®³à¯à®•à¯à®•à¯à®•à¯ கிடைபà¯à®ªà®¤à¯',
+ 'wikieditor-toolbar-help-page-format' => 'உரà¯à®µà®®à¯ˆà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®•à®¿à®±à®¤à¯',
+ 'wikieditor-toolbar-help-page-link' => 'இணைபà¯à®ªà¯à®•à¯à®•à®³à¯',
+ 'wikieditor-toolbar-help-page-heading' => 'தலைபà¯à®ªà¯à®•à¯à®•à®³à¯',
+ 'wikieditor-toolbar-help-page-list' => 'படà¯à®Ÿà®¿à®¯à®²à¯à®•à®³à¯',
+ 'wikieditor-toolbar-help-page-file' => 'கோபà¯à®ªà¯à®•à¯à®•à®³à¯',
+ 'wikieditor-toolbar-help-page-reference' => 'மேறà¯à®•à¯‹à®³à¯à®•à®³à¯',
+ 'wikieditor-toolbar-help-page-discussion' => 'உரையாடலà¯',
+ 'wikieditor-toolbar-help-content-italic-description' => 'சாயà¯à®¨à¯à®¤',
+ 'wikieditor-toolbar-help-content-italic-syntax' => '"சாயà¯à®¨à¯à®¤ எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯"',
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>சாயà¯à®¨à¯à®¤ எழà¯à®¤à¯à®¤à¯à®°à¯ˆ</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'தடிதà¯à®¤',
+ 'wikieditor-toolbar-help-content-bold-syntax' => '"தடிதà¯à®¤ எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯"',
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>தடிதà¯à®¤ உரை</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'தடிதà¯à®¤ & சாயà¯à®¨à¯à®¤',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''தடிதà¯à®¤ & சாயà¯à®¨à¯à®¤ சொறà¯à®±à¯Šà®Ÿà®°à¯'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>தடிதà¯à®¤ &amp; சாயà¯à®µà¯†à®´à¯à®¤à¯à®¤à¯ உரை</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'உளà¯à®³à®¿à®£à¯ˆà®ªà¯à®ªà¯',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[பகà¯à®•à®¤à¯ தலைபà¯à®ªà¯|இணைபà¯à®ªà¯à®šà¯ சொலà¯]]<br />[[பகà¯à®•à®¤à¯ தலைபà¯à®ªà¯]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>இணைபà¯à®ªà¯à®šà¯ சொலà¯</a><br /><a href='#'>பகà¯à®•à®¤à¯ தலைபà¯à®ªà¯</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'வெளி இணைபà¯à®ªà¯',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org இணைபà¯à®ªà¯à®šà¯ சொலà¯]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>இணைபà¯à®ªà¯à®šà¯ சொலà¯</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'இரணà¯à®Ÿà®¾à®®à¯ நிலைத௠தலைபà¯à®ªà¯',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => ' == தலைபà¯à®ªà¯ ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>இரணà¯à®Ÿà®¾à®®à¯ நிலைத௠தலைபà¯à®ªà¯</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'மூனà¯à®±à®¾à®®à¯ நிலைத௠தலைபà¯à®ªà¯',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => ' === தலைபà¯à®ªà¯ ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>மூனà¯à®±à®¾à®®à¯ நிலைத௠தலைபà¯à®ªà¯</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'நானà¯à®•à®¾à®®à¯ நிலைத௠தலைபà¯à®ªà¯',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => ' ==== தலைபà¯à®ªà¯ ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>நானà¯à®•à®¾à®®à¯ நிலைத௠தலைபà¯à®ªà¯</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'à®à®¨à¯à®¤à®¾à®®à¯ நிலைத௠தலைபà¯à®ªà¯',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => ' ===== தலைபà¯à®ªà¯ =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>à®à®¨à¯à®¤à®¾à®®à¯ நிலைத௠தலைபà¯à®ªà¯</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'கà¯à®£à¯à®Ÿà¯à®•à¯à®•à¯à®±à®¿à®¯à®¿à®Ÿà¯à®Ÿ வரிசை',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* வரிசையில௠உளà¯à®³ உறà¯à®ªà¯à®ªà®¿à®©à®°à¯ <br />* வரிசையில௠உளà¯à®³ உறà¯à®ªà¯à®ªà®¿à®©à®°à¯',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>படà¯à®Ÿà®¿à®¯à®²à¯ உரà¯à®ªà¯à®ªà®Ÿà®¿</li><li>படà¯à®Ÿà®¿à®¯à®²à¯ உரà¯à®ªà¯à®ªà®Ÿà®¿</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'எணà¯à®•à®³à¯à®Ÿà®©à¯ வரிசை',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# வரிசையில௠உளà¯à®³ உறà¯à®ªà¯à®ªà®¿à®©à®°à¯ <br /># வரிசையில௠உளà¯à®³ உறà¯à®ªà¯à®ªà®¿à®©à®°à¯',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>படà¯à®Ÿà®¿à®¯à®²à¯ உரà¯à®ªà¯à®ªà®Ÿà®¿</li><li>படà¯à®Ÿà®¿à®¯à®²à¯ உரà¯à®ªà¯à®ªà®Ÿà®¿</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'பொதிநà¯à®¤à¯à®³à¯à®³ படிமமà¯',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:எடà¯à®¤à¯à®¤à¯à®•à¯à®•à®¾à®Ÿà¯à®Ÿà¯.png|விரலளவà¯à®ªà¯à®ªà®Ÿà®®à¯|படவிளகà¯à®•à®µà¯à®°à¯ˆ]]',
+ 'wikieditor-toolbar-help-content-reference-description' => '# மேறà¯à®•à¯‹à®³à¯
+# à®®à¯à®©à¯à®®à®¾à®¤à®¿à®°à®¿',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'பகà¯à®• உரை.&lt;ref name="சோதனை"&gt;[http://www.example.org இணைபà¯à®ªà¯ உரை], கூடà¯à®¤à®²à¯ உரை.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "பகà¯à®• உரை.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'அதே மேறà¯à®•à¯‹à®³à®¿à®©à¯ கூடà¯à®¤à®²à¯ பயனà¯à®ªà®¾à®Ÿà¯',
+ 'wikieditor-toolbar-help-content-rereference-result' => "பகà¯à®• உரை.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => '# மேறà¯à®•à¯‹à®³à¯à®•à®³à¯ˆà®•à¯ காடà¯à®Ÿà¯
+# à®®à¯à®©à¯à®®à®¾à®¤à®¿à®°à®¿à®•à®³à¯ˆà®•à¯ காடà¯à®Ÿà¯',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'நேர à®®à¯à®¤à¯à®¤à®¿à®°à¯ˆà®¯à¯à®Ÿà®©à¯ கையொபà¯à®ªà®®à¯',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>பயனர௠பெயரà¯</a> (<a href='#' title='{{#special:mytalk}}'>பேசà¯à®šà¯</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => '# கையெழà¯à®¤à¯à®¤à¯
+# கையொபà¯à®ªà®®à¯',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>பயனர௠பெயரà¯</a> (<a href='#' title='{{#special:mytalk}}'>பேசà¯à®šà¯</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'சிறித௠தளà¯à®³à®¿à®µà¯ˆ',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'சாதாரண உரைt<br />:வெளிதளà¯à®³à®¿à®¯ உரை<br />::வெளிதளà¯à®³à®¿à®¯ உரை',
+ 'wikieditor-toolbar-help-content-indent-result' => 'சாதாரண உரை<dl><dd>உளà¯à®¤à®³à¯à®³à®¿à®¯ உரை<dl><dd>உளà¯à®¤à®³à¯à®³à®¿à®¯ உரை</dd></dl></dd></dl>',
+);
+
+/** Telugu (తెలà±à°—à±)
+ * @author Veeven
+ */
+$messages['te'] = array(
+ 'wikieditor' => 'ఉనà±à°¨à°¤ వికీపాఠà±à°¯ దిదà±à°¦à±à°¬à°¾à°Ÿà± à°®à±à°–ాంతరం',
+ 'wikieditor-wikitext-tab' => 'వికీపాఠà±à°¯à°‚',
+ 'wikieditor-loading' => 'లోడవà±à°¤à±‚ంది',
+ 'wikieditor-preview-preference' => 'మారà±à°šà±‡à°ªà±†à°Ÿà±à°Ÿà±† పకà±à°• à°®à±à°¨à±à°œà±‚à°ªà±à°¨à°¿ చేతనంచేయి',
+ 'wikieditor-preview-tab' => 'à°®à±à°¨à±à°œà±‚à°ªà±',
+ 'wikieditor-preview-changes-tab' => 'మారà±à°ªà±à°²à±',
+ 'wikieditor-preview-loading' => 'లోడవà±à°¤à±‹à°‚ది...',
+ 'wikieditor-previewDialog-preference' => 'à°®à±à°¨à±à°œà±‚పౠపేటికని చేతనం చేయి',
+ 'wikieditor-previewDialog-tab' => 'à°®à±à°¨à±à°œà±‚à°ªà±',
+ 'wikieditor-previewDialog-loading' => 'లోడవà±à°¤à±‹à°‚ది...',
+ 'wikieditor-publish-button-publish' => 'à°ªà±à°°à°šà±à°°à°¿à°‚à°šà±',
+ 'wikieditor-publish-button-cancel' => 'à°°à°¦à±à°¦à±à°šà±‡à°¯à°¿',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}}లో à°ªà±à°°à°šà±à°°à°¿à°‚à°šà±',
+ 'wikieditor-publish-dialog-summary' => 'మారà±à°ªà± సంగà±à°°à°¹à°‚ (మీరౠచేసిన మారà±à°ªà±à°²à°¨à°¿ à°•à±à°²à±à°ªà±à°¤à°‚à°—à°¾ వివరించండి):',
+ 'wikieditor-publish-dialog-minor' => 'à°šà°¿à°¨à±à°¨ మారà±à°ªà±',
+ 'wikieditor-publish-dialog-watch' => 'à°ˆ పేజీ మీద à°•à°¨à±à°¨à±‡à°¸à°¿ ఉంచà±',
+ 'wikieditor-publish-dialog-publish' => 'à°ªà±à°°à°šà±à°°à°¿à°‚à°šà±',
+ 'wikieditor-publish-dialog-goback' => 'వెనకà±à°•à°¿ వెళà±à°³à±',
+ 'wikieditor-template-editor-preference' => 'వికీ మూసలని ఫారం à°¦à±à°µà°¾à°°à°¾ మారà±à°šà°¡à°¾à°¨à°¿ చేతనంచేయి',
+ 'wikieditor-template-editor-dialog-title' => 'మూసని మారà±à°šà±',
+ 'wikieditor-template-editor-dialog-submit' => 'తాజాకరించà±',
+ 'wikieditor-template-editor-dialog-cancel' => 'à°°à°¦à±à°¦à±à°šà±‡à°¯à°¿',
+ 'wikieditor-toc-show' => 'విషయసూచికని చూపించà±',
+ 'wikieditor-toc-hide' => 'విషయసూచికని దాచà±',
+ 'wikieditor-toolbar' => 'ఎడిటింగౠటూలà±â€Œà°¬à°¾à°°à±',
+ 'wikieditor-toolbar-desc' => 'మెరà±à°—ైన ఉపయోగశీలతో దిదà±à°¦à±à°¬à°¾à°Ÿà± పేజీ పనిమà±à°Ÿà±à°²à°ªà°Ÿà±à°Ÿà±€',
+ 'wikieditor-toolbar-dialogs-preference' => 'లంకెలà±, పటà±à°Ÿà°¿à°•à°²à± మరియౠమరెనà±à°¨à°¿à°‚టినే చేరà±à°šà°¡à°¾à°¨à°¿à°•à°¿ సంవాదపేటికలనౠచేతనంచేయి',
+ 'wikieditor-toolbar-loading' => 'లోడవà±à°¤à±‹à°‚ది...',
+ 'wikieditor-toolbar-tool-bold' => 'బొదà±à°¦à±',
+ 'wikieditor-toolbar-tool-bold-example' => 'బొదà±à°¦à± పాఠà±à°¯à°‚',
+ 'wikieditor-toolbar-tool-italic' => 'వాలà±',
+ 'wikieditor-toolbar-tool-italic-example' => 'వాలౠపాఠà±à°¯à°‚',
+ 'wikieditor-toolbar-tool-ilink' => 'అంతరà±à°—à°¤ లింకà±',
+ 'wikieditor-toolbar-tool-ilink-example' => 'లంకె లంకెపేరà±',
+ 'wikieditor-toolbar-tool-xlink' => 'బయటి లింకౠ(http:// ఉపసరà±à°—ని మరిచిపోకండి)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com లంకె లంకెపేరà±',
+ 'wikieditor-toolbar-tool-link' => 'లంకె',
+ 'wikieditor-toolbar-tool-link-title' => 'లంకె à°•à°²à±à°ªà±',
+ 'wikieditor-toolbar-tool-link-int' => 'ఒక వికీ పేజీకి',
+ 'wikieditor-toolbar-tool-link-int-target' => 'పేజీ శీరà±à°·à°¿à°•:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'పేజీ శీరà±à°·à°¿à°• లేదా à°šà°¿à°°à±à°¨à°¾à°®à°¾',
+ 'wikieditor-toolbar-tool-link-int-text' => 'లంకె పాఠà±à°¯à°‚:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'చూపించాలà±à°¸à°¿à°¨ పాఠà±à°¯à°¾à°¨à±à°¨à°¿ ఇవà±à°µà°‚à°¡à°¿',
+ 'wikieditor-toolbar-tool-link-ext' => 'బయటి వెబౠపేజీకి',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'లంకె URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'లంకె పాఠà±à°¯à°‚:',
+ 'wikieditor-toolbar-tool-link-insert' => 'లంకె à°•à°²à±à°ªà±',
+ 'wikieditor-toolbar-tool-link-cancel' => 'à°°à°¦à±à°¦à±',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'పేజీ ఉంది',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'పేజీ ఉనికిలో లేదà±',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'తపà±à°ªà±à°¡à± శీరà±à°·à°¿à°•',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'బయటి లింకà±',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'పేజీ ఉనికిని సరిచూసà±à°¤à±à°¨à±à°¨à°¾à°‚...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'మీరౠఇచà±à°šà°¿à°¨ శీరà±à°·à°¿à°• సరైనది కాదà±.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'మీరౠఇచà±à°šà°¿à°¨ à°šà°¿à°°à±à°¨à°¾à°®à°¾à°¨à°¿ బటà±à°Ÿà°¿ మీరౠమరో వికీ పేజీకి లంకె చేరà±à°šà°¾à°²à°¨à°¿ ఉదà±à°¦à±‡à°¶à°¿à°‚చినటà±à°Ÿà±à°‚ది. దానà±à°¨à°¿ అంతరà±à°—à°¤ లంకెగా మారà±à°šà°¾à°²à°¨à±à°•à±à°‚à°Ÿà±à°¨à±à°¨à°¾à°°à°¾?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'అంతరà±à°—à°¤ లంకె',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'బయటి లంకె',
+ 'wikieditor-toolbar-tool-link-empty' => 'మీరౠదేనికి లంకె వెయà±à°¯à°¾à°²à±‹ పేరà±à°•à±Šà°¨à°²à±‡à°¦à±.',
+ 'wikieditor-toolbar-tool-file' => 'పొదిగిన ఫైలà±',
+ 'wikieditor-toolbar-tool-reference' => 'సాకà±à°·à±à°¯à°¾à°²à±',
+ 'wikieditor-toolbar-tool-reference-example' => 'పాదసూచిక పాఠà±à°¯à°¾à°¨à±à°¨à°¿ ఇకà±à°•à°¡ చేరà±à°šà°‚à°¡à°¿',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'à°°à°¦à±à°¦à±à°šà±‡à°¯à°¿',
+ 'wikieditor-toolbar-tool-signature' => 'టైంసà±à°Ÿà°¾à°‚à°ªà±à°¤à±‹ సహా మీ సంతకం',
+ 'wikieditor-toolbar-section-advanced' => 'ఉనà±à°¨à°¤',
+ 'wikieditor-toolbar-tool-heading' => 'శీరà±à°·à°¿à°•',
+ 'wikieditor-toolbar-tool-heading-1' => '1à°µ à°¸à±à°¥à°¾à°¯à°¿',
+ 'wikieditor-toolbar-tool-heading-2' => '2à°µ à°¸à±à°¥à°¾à°¯à°¿',
+ 'wikieditor-toolbar-tool-heading-3' => '3à°µ à°¸à±à°¥à°¾à°¯à°¿',
+ 'wikieditor-toolbar-tool-heading-4' => '4à°µ à°¸à±à°¥à°¾à°¯à°¿',
+ 'wikieditor-toolbar-tool-heading-5' => '5à°µ à°¸à±à°¥à°¾à°¯à°¿',
+ 'wikieditor-toolbar-tool-heading-example' => 'శీరà±à°·à°¿à°• పాఠà±à°¯à°‚',
+ 'wikieditor-toolbar-group-format' => 'ఫారà±à°®à°¾à°Ÿà±',
+ 'wikieditor-toolbar-tool-ulist' => 'బిందౠజాబితా',
+ 'wikieditor-toolbar-tool-ulist-example' => 'బిందౠజాబితా అంశం',
+ 'wikieditor-toolbar-tool-olist' => 'సంఖà±à°¯à°¾ జాబితా',
+ 'wikieditor-toolbar-tool-olist-example' => 'సంఖà±à°¯à°¾ జాబితా అంశం',
+ 'wikieditor-toolbar-tool-redirect' => 'దారిమారà±à°ªà±',
+ 'wikieditor-toolbar-tool-redirect-example' => 'లకà±à°·à±à°¯à°¿à°¤ à°ªà±à°Ÿ పేరà±',
+ 'wikieditor-toolbar-tool-big' => 'పెదà±à°¦',
+ 'wikieditor-toolbar-tool-big-example' => 'బొదà±à°¦à± పాఠà±à°¯à°‚',
+ 'wikieditor-toolbar-tool-small' => 'à°šà°¿à°¨à±à°¨',
+ 'wikieditor-toolbar-tool-small-example' => 'వాలౠపాఠà±à°¯à°‚',
+ 'wikieditor-toolbar-tool-superscript' => 'శీరà±à°·à°¾à°•à±à°·à°°à°¾à°²à±',
+ 'wikieditor-toolbar-tool-superscript-example' => 'శీరà±à°·à°¾à°•à±à°·à°° పాఠà±à°¯à°‚',
+ 'wikieditor-toolbar-tool-subscript' => 'పాదాకà±à°·à°°à°¾à°²à±',
+ 'wikieditor-toolbar-tool-subscript-example' => 'పాదాకà±à°·à°° పాఠà±à°¯à°‚',
+ 'wikieditor-toolbar-group-insert' => 'చేరà±à°šà±',
+ 'wikieditor-toolbar-tool-gallery' => 'à°šà°¿à°¤à±à°°à°®à°¾à°²à°¿à°•',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|ఉపశీరà±à°·à°¿à°•1
+$1:Example.jpg|ఉపశీరà±à°·à°¿à°•2',
+ 'wikieditor-toolbar-tool-newline' => 'కొతà±à°¤ లైనà±',
+ 'wikieditor-toolbar-tool-table' => 'పటà±à°Ÿà°¿à°•',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! శీరà±à°·à°¿à°• 1
+! శీరà±à°·à°¿à°• 2
+! శీరà±à°·à°¿à°• 3
+|-
+| à°…à°¡à±à°¡à±à°µà°°à±à°¸ 1, à°—à°¡à°¿ 1
+| à°…à°¡à±à°¡à±à°µà°°à±à°¸ 1, à°—à°¡à°¿ 2
+| à°…à°¡à±à°¡à±à°µà°°à±à°¸ 1, à°—à°¡à°¿ 3
+|-
+| à°…à°¡à±à°¡à±à°µà°°à±à°¸ 2, à°—à°¡à°¿ 1
+| à°…à°¡à±à°¡à±à°µà°°à±à°¸ 2, à°—à°¡à°¿ 2
+| à°…à°¡à±à°¡à±à°µà°°à±à°¸ 2, à°—à°¡à°¿ 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'à°—à°¡à°¿ పాఠà±à°¯à°‚',
+ 'wikieditor-toolbar-tool-table-example-header' => 'శీరà±à°·à°¿à°• పాఠà±à°¯à°‚',
+ 'wikieditor-toolbar-tool-table-title' => 'పటà±à°Ÿà°¿à°•à°¨à°¿ చేరà±à°šà°‚à°¡à°¿',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'à°…à°¡à±à°¡à±à°µà°°à±à°¸à°²à±',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'నిలà±à°µà±à°µà°°à±à°¸à°²à±',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'శీరà±à°·à°¿à°• వరà±à°¸à°¨à°¿ చేరà±à°šà±',
+ 'wikieditor-toolbar-tool-table-example' => 'à°—à°¡à°¿ పాఠà±à°¯à°‚',
+ 'wikieditor-toolbar-tool-table-preview' => 'à°®à±à°¨à±à°œà±‚à°ªà±',
+ 'wikieditor-toolbar-tool-table-insert' => 'చేరà±à°šà±',
+ 'wikieditor-toolbar-tool-table-cancel' => 'à°°à°¦à±à°¦à±',
+ 'wikieditor-toolbar-tool-table-toomany' => '$1 కంటే à°Žà°•à±à°•à±à°µ à°—à°³à±à°³à±à°¨à±à°¨ పటà±à°Ÿà°¿à°•à°¨à°¨à°¿ చేరà±à°šà°¡à°‚ à°ˆ సంవాదపేటిక à°¦à±à°µà°¾à°°à°¾ సాధà±à°¯à°‚ కాదà±.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'మీరౠసరైన à°…à°¡à±à°¡à± లేదా నిలà±à°µà± వరà±à°¸à°² సంఖà±à°¯à°¨à°¿ ఇవà±à°µà°²à±‡à°¦à±.',
+ 'wikieditor-toolbar-tool-table-zero' => 'à°¸à±à°¨à±à°¨à°¾ à°…à°¡à±à°¡à± లేదా నిలà±à°µà± వరà±à°¸à°²à°¤à±‹ మీరౠపటà±à°Ÿà°¿à°•à°¨à°¿ చేరà±à°šà°²à±‡à°°à±.',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'à°…à°¨à±à°¨à°¿à°‚టినీ మారà±à°šà±',
+ 'wikieditor-toolbar-tool-replace-close' => 'మూసివేయి',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'మీ à°…à°¨à±à°µà±‡à°·à°£ దేనికీ సరిపోలలేదà±.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 మారà±à°ªà°¿à°¡à°¿(à°²à±) చేసాం.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'వెతకడానికి à°à°®à±€ ఇవà±à°µà°²à±‡à°¦à±.',
+ 'wikieditor-toolbar-section-characters' => 'à°ªà±à°°à°¤à±à°¯à±‡à°• à°…à°•à±à°·à°°à°¾à°²à±',
+ 'wikieditor-toolbar-characters-page-latin' => 'లాటినà±',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'విసà±à°¤à°°à°¿à°¤ లాటినà±',
+ 'wikieditor-toolbar-characters-page-ipa' => 'à°à°ªà°¿à°Ž',
+ 'wikieditor-toolbar-characters-page-symbols' => 'à°—à±à°°à±à°¤à±à°²à±',
+ 'wikieditor-toolbar-characters-page-greek' => 'à°—à±à°°à±€à°•à±',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'సిరిలికà±',
+ 'wikieditor-toolbar-characters-page-arabic' => 'అరబికà±',
+ 'wikieditor-toolbar-characters-page-persian' => 'పరà±à°·à°¿à°¯à°¨à±',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'హిబà±à°°à±‚',
+ 'wikieditor-toolbar-characters-page-bangla' => 'బంగà±à°²à°¾',
+ 'wikieditor-toolbar-characters-page-telugu' => 'తెలà±à°—à±',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'సింహళ',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'à°—à±à°œà°°à°¾à°¤à±€',
+ 'wikieditor-toolbar-characters-page-thai' => 'థాయి',
+ 'wikieditor-toolbar-characters-page-lao' => 'లావో',
+ 'wikieditor-toolbar-characters-page-khmer' => 'à°–à±à°®à±†à°°à±',
+ 'wikieditor-toolbar-section-help' => 'సహాయం',
+ 'wikieditor-toolbar-help-heading-description' => 'వివరణ',
+ 'wikieditor-toolbar-help-heading-syntax' => 'మీరౠటైపౠచేసేది',
+ 'wikieditor-toolbar-help-heading-result' => 'మీరౠà°à°‚ పొందà±à°¤à°¾à°°à±',
+ 'wikieditor-toolbar-help-page-link' => 'లంకెలà±',
+ 'wikieditor-toolbar-help-page-heading' => 'శీరà±à°·à°¿à°•à°²à±',
+ 'wikieditor-toolbar-help-page-list' => 'జాబితాలà±',
+ 'wikieditor-toolbar-help-page-file' => 'ఫైళà±à°³à±',
+ 'wikieditor-toolbar-help-page-reference' => 'మూలాలà±',
+ 'wikieditor-toolbar-help-page-discussion' => 'à°šà°°à±à°š',
+ 'wikieditor-toolbar-help-content-italic-description' => 'వాలà±',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''వాలౠపాఠà±à°¯à°‚''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>వాలౠపాఠà±à°¯à°‚</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'బొదà±à°¦à±',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''బొదà±à°¦à± పాఠà±à°¯à°‚'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>బొదà±à°¦à± పాఠà±à°¯à°‚</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'బొదà±à°¦à± &amp; వాలà±',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''బొదà±à°¦à± &amp; వాలౠపాఠà±à°¯à°‚'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>బొదà±à°¦à± &amp; వాలౠపాఠà±à°¯à°‚</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'అంతరà±à°—à°¤ లింకà±',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[పేజీ శీరà±à°·à°¿à°•|లింకౠపాఠà±à°¯à°‚]]<br />[[పేజీ శీరà±à°·à°¿à°•]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>లింకౠపాఠà±à°¯à°‚</a><br /><a href='#'>పేజీ శీరà±à°·à°¿à°•</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'బయటి లింకà±',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org లింకà±à°ªà°¾à° à±à°¯à°‚]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>లంకె పాఠà±à°¯à°‚</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2à°µ à°¸à±à°¥à°¾à°¯à°¿ శీరà±à°·à°¿à°•',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== శీరà±à°·à°¿à°• పాఠà±à°¯à°‚ ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>శీరà±à°·à°¿à°• పాఠà±à°¯à°‚</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3à°µ à°¸à±à°¥à°¾à°¯à°¿ శీరà±à°·à°¿à°•',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== శీరà±à°·à°¿à°• పాఠà±à°¯à°‚ ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>శీరà±à°·à°¿à°• పాఠà±à°¯à°‚</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4à°µ à°¸à±à°¥à°¾à°¯à°¿ శీరà±à°·à°¿à°•',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== శీరà±à°·à°¿à°• పాఠà±à°¯à°‚ ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>శీరà±à°·à°¿à°• పాఠà±à°¯à°‚</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5à°µ à°¸à±à°¥à°¾à°¯à°¿ శీరà±à°·à°¿à°•',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== శీరà±à°·à°¿à°• పాఠà±à°¯à°‚ =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>శీరà±à°·à°¿à°• పాఠà±à°¯à°‚</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'బిందౠజాబితా',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* జాబితా అంశం<br />* జాబితా అంశం',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>జాబితా అంశం</li><li>జాబితా అంశం</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'సంఖà±à°¯à°¾à°¨à±à°—à±à°£ జాబితా',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# జాబితా అంశం<br /># జాబితా అంశం',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>జాబితా అంశం</li><li>జాబితా అంశం</li></ol>',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|వివరణ పాఠà±à°¯à°‚]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>వివరణ పాఠà±à°¯à°‚</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'సాకà±à°·à±à°¯à°¾à°²à±',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'పేజీ పాఠà±à°¯à°‚.&lt;ref name="test"&gt;[http://www.example.org లింకౠపాఠà±à°¯à°‚], అదనపౠపాఠà±à°¯à°‚.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "పేజీ పాఠà±à°¯à°‚.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-result' => "పేజీ పాఠà±à°¯à°‚.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>లంకె పాఠà±à°¯à°‚</a>, అదనపౠపాఠà±à°¯à°‚.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'సమయమà±à°¦à±à°°à°¤à±‹ సంతకం',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>వాడà±à°•à°°à°¿à°ªà±‡à°°à±</a> (<a href='#' title='{{#special:mytalk}}'>à°šà°°à±à°š</a>) 15:54, 10 జూనౠ2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'సంతకం',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>వాడà±à°•à°°à°¿à°ªà±‡à°°à±</a> (<a href='#' title='{{#special:mytalk}}'>à°šà°°à±à°š</a>)",
+);
+
+/** Tajik (Cyrillic) (Тоҷикӣ (Cyrillic)) */
+$messages['tg-cyrl'] = array(
+ 'wikieditor-toolbar-tool-link' => 'Пайванд',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Лағв',
+);
+
+/** Tajik (Latin) (Тоҷикӣ (Latin))
+ * @author Liangent
+ */
+$messages['tg-latn'] = array(
+ 'wikieditor-toolbar-tool-link' => 'Pajvand',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Laƣv',
+);
+
+/** Thai (ไทย)
+ * @author Horus
+ * @author Korrawit
+ * @author Octahedron80
+ * @author Woraponboonkerd
+ */
+$messages['th'] = array(
+ 'wikieditor-wikitext-tab' => 'ข้อความวิà¸à¸´',
+ 'wikieditor-loading' => 'à¸à¸³à¸¥à¸±à¸‡à¹‚หลด',
+ 'wikieditor-preview-preference' => 'เปิดใช้งานà¸à¸²à¸£à¹à¸ªà¸”งตัวอย่างà¹à¸šà¸šà¹€à¸„ียงข้าง',
+ 'wikieditor-preview-tab' => 'à¹à¸ªà¸”งตัวอย่าง',
+ 'wikieditor-preview-changes-tab' => 'ความเปลี่ยนà¹à¸›à¸¥à¸‡',
+ 'wikieditor-preview-loading' => 'à¸à¸³à¸¥à¸±à¸‡à¹‚หลด...',
+ 'wikieditor-previewDialog-tab' => 'à¹à¸ªà¸”งตัวอย่าง',
+ 'wikieditor-previewDialog-loading' => 'à¸à¸³à¸¥à¸±à¸‡à¹‚หลด...',
+ 'wikieditor-publish-preference' => 'เปิดใช้งานà¸à¸²à¸£à¹€à¸œà¸¢à¹à¸žà¸£à¹ˆà¸—ีละขั้นตอน',
+ 'wikieditor-publish-button-publish' => 'เผยà¹à¸žà¸£à¹ˆ',
+ 'wikieditor-publish-button-cancel' => 'ยà¸à¹€à¸¥à¸´à¸',
+ 'wikieditor-publish-dialog-title' => 'เผยà¹à¸žà¸£à¹ˆà¹„ปยัง {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'สรุปà¸à¸²à¸£à¹à¸à¹‰à¹„ข (อธิบายย่อๆ ถึงà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸—ี่คุณà¸à¸£à¸°à¸—ำ):',
+ 'wikieditor-publish-dialog-minor' => 'เป็นà¸à¸²à¸£à¹à¸à¹‰à¹„ขเล็à¸à¸™à¹‰à¸­à¸¢',
+ 'wikieditor-publish-dialog-watch' => 'เà¸à¹‰à¸²à¸”ูหน้านี้',
+ 'wikieditor-publish-dialog-publish' => 'เผยà¹à¸žà¸£à¹ˆ',
+ 'wikieditor-publish-dialog-goback' => 'à¸à¸¥à¸±à¸šà¹„ป',
+ 'wikieditor-template-editor-preference' => 'เปิดใช้งานà¸à¸²à¸£à¹à¸à¹‰à¹„ขà¹à¸šà¸šà¸Ÿà¸­à¸£à¹Œà¸¡à¸‚องà¹à¸¡à¹ˆà¹à¸šà¸šà¸§à¸´à¸à¸´',
+ 'wikieditor-template-editor-dialog-title' => 'à¹à¸à¹‰à¹„ขà¹à¸¡à¹ˆà¹à¸šà¸š',
+ 'wikieditor-template-editor-dialog-submit' => 'อัปเดต',
+ 'wikieditor-template-editor-dialog-cancel' => 'ยà¸à¹€à¸¥à¸´à¸',
+ 'wikieditor-templates-preference' => 'เปิดใช้งานà¸à¸²à¸£à¸¢à¸¸à¸šà¹à¸¡à¹ˆà¹à¸šà¸š',
+ 'wikieditor-toc-preference' => 'ให้สารบัà¸à¸™à¸³à¸—างได้',
+ 'wikieditor-toc-show' => 'à¹à¸ªà¸”งเนื้อหา',
+ 'wikieditor-toc-hide' => 'ซ่อนเนื้อหา',
+ 'wikieditor-toolbar' => 'à¹à¸–บเครื่องมือสำหรับà¸à¸²à¸£à¹à¸à¹‰à¹„ข',
+ 'wikieditor-toolbar-desc' => 'à¹à¸–บเครื่องมือเสริมความสามารถà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¹ƒà¸™à¸à¸²à¸£à¹à¸à¹‰à¹„ขหน้า',
+ 'wikieditor-toolbar-preference' => 'เปิดใช้à¹à¸–บเครื่องมือเสริมความสามารถà¸à¸²à¸£à¹à¸à¹‰à¹„ข',
+ 'wikieditor-toolbar-dialogs-preference' => 'เปิดà¸à¸¥à¹ˆà¸­à¸‡à¹‚ต้ตอบสำหรับà¸à¸²à¸£à¹à¸—รà¸à¸¥à¸´à¸‡à¸à¹Œ ตาราง à¹à¸¥à¸°à¸­à¸·à¹ˆà¸™à¹†',
+ 'wikieditor-toolbar-loading' => 'à¸à¸³à¸¥à¸±à¸‡à¸”ึงข้อมูล...',
+ 'wikieditor-toolbar-tool-bold' => 'ตัวหนา',
+ 'wikieditor-toolbar-tool-bold-example' => 'ข้อความตัวหนา',
+ 'wikieditor-toolbar-tool-italic' => 'ตัวเอน',
+ 'wikieditor-toolbar-tool-italic-example' => 'ข้อความตัวเอน',
+ 'wikieditor-toolbar-tool-ilink' => 'ลิงà¸à¹Œà¸ à¸²à¸¢à¹ƒà¸™',
+ 'wikieditor-toolbar-tool-ilink-example' => 'หัวเรื่องลิงà¸à¹Œ',
+ 'wikieditor-toolbar-tool-xlink' => 'ลิงà¸à¹Œà¸ à¸²à¸¢à¸™à¸­à¸ (อย่าลืมขึ้นต้นด้วย http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com หัวเรื่องลิงà¸à¹Œ',
+ 'wikieditor-toolbar-tool-link' => 'ลิงà¸à¹Œ',
+ 'wikieditor-toolbar-tool-link-title' => 'ใส่ลิงà¸à¹Œ',
+ 'wikieditor-toolbar-tool-link-int' => 'ไปยังหน้าวิà¸à¸´',
+ 'wikieditor-toolbar-tool-link-int-target' => 'หน้าที่เชื่อมโยงไปหรือ URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'หัวเรื่องของหน้าหรือ URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'à¹à¸ªà¸”งตัวอัà¸à¸©à¸£:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'ข้อความที่จะà¹à¸ªà¸”ง',
+ 'wikieditor-toolbar-tool-link-ext' => 'ไปยังเว็บภายนอà¸',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL ของลิงà¸à¹Œ:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'ตัวอัà¸à¸©à¸£à¸‚องลิงà¸à¹Œ:',
+ 'wikieditor-toolbar-tool-link-insert' => 'ใส่ลิงà¸à¹Œ',
+ 'wikieditor-toolbar-tool-link-cancel' => 'ยà¸à¹€à¸¥à¸´à¸',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'มีหน้านี้',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'ไม่มีหน้านี้',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'หัวเรื่องไม่ถูà¸à¸•à¹‰à¸­à¸‡',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'ลิงà¸à¹Œà¸ à¸²à¸¢à¸™à¸­à¸',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'à¸à¸³à¸¥à¸±à¸‡à¸•à¸£à¸§à¸ˆà¸ªà¸­à¸šà¸à¸²à¸£à¸¡à¸µà¸­à¸¢à¸¹à¹ˆà¹€à¸”ิมของหน้าดังà¸à¸¥à¹ˆà¸²à¸§...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'ชื่อเรื่องที่คุณà¸à¸³à¸«à¸™à¸”ไม่ถูà¸à¸•à¹‰à¸­à¸‡',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL ที่คุณระบุ ดูเหมือนว่ามีเจตนาเพื่อเป็นลิงà¸à¹Œà¹„ปยังหน้าวิà¸à¸´à¸­à¸·à¹ˆà¸™ คุณต้องà¸à¸²à¸£à¸—ำให้มันเป็นลิงà¸à¹Œà¸ à¸²à¸¢à¹ƒà¸™à¸«à¸£à¸·à¸­à¹„ม่',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'ลิงà¸à¹Œà¸ à¸²à¸¢à¹ƒà¸™',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'ลิงà¸à¹Œà¸ à¸²à¸¢à¸™à¸­à¸',
+ 'wikieditor-toolbar-tool-link-empty' => 'คุณไม่ได้ใส่ใดๆ เลยที่จะเชื่อมโยงไป',
+ 'wikieditor-toolbar-tool-file' => 'à¹à¸—รà¸à¹„ฟล์',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'อ้างอิง',
+ 'wikieditor-toolbar-tool-reference-example' => 'ใส่หมายเหตุลงท้ายที่นี่',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'ยà¸à¹€à¸¥à¸´à¸',
+ 'wikieditor-toolbar-tool-reference-title' => 'à¹à¸—รà¸à¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡',
+ 'wikieditor-toolbar-tool-reference-insert' => 'à¹à¸—รà¸',
+ 'wikieditor-toolbar-tool-reference-text' => 'ข้อความอ้างอิง',
+ 'wikieditor-toolbar-tool-signature' => 'ลายเซ็นà¹à¸¥à¸°à¹€à¸§à¸¥à¸²',
+ 'wikieditor-toolbar-section-advanced' => 'ขั้นสูง',
+ 'wikieditor-toolbar-tool-heading' => 'หัวเรื่องหลัà¸',
+ 'wikieditor-toolbar-tool-heading-1' => 'ลำดับที่ 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'ลำดับที่ 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'ลำดับที่ 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'ลำดับที่ 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'ลำดับที่ 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'ตัวอัà¸à¸©à¸£à¸«à¸±à¸§à¹€à¸£à¸·à¹ˆà¸­à¸‡',
+ 'wikieditor-toolbar-group-format' => 'รูปà¹à¸šà¸š',
+ 'wikieditor-toolbar-tool-ulist' => 'รายà¸à¸²à¸£à¸ªà¸±à¸à¸¥à¸±à¸à¸©à¸“์',
+ 'wikieditor-toolbar-tool-ulist-example' => 'เนื้อหารายà¸à¸²à¸£à¸ªà¸±à¸à¸¥à¸±à¸à¸©à¸“์',
+ 'wikieditor-toolbar-tool-olist' => 'รายà¸à¸²à¸£à¸¥à¸³à¸”ับเลข',
+ 'wikieditor-toolbar-tool-olist-example' => 'เนื้อหารายà¸à¸²à¸£à¸¥à¸³à¸”ับเลข',
+ 'wikieditor-toolbar-tool-indent' => 'à¸à¸²à¸£à¸¢à¹ˆà¸­à¸«à¸™à¹‰à¸²',
+ 'wikieditor-toolbar-tool-indent-example' => 'บรรทัดที่ย่อหน้า',
+ 'wikieditor-toolbar-tool-nowiki' => 'ไม่มีà¸à¸²à¸£à¸ˆà¸±à¸”รูปà¹à¸šà¸š wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'à¹à¸—รà¸à¸‚้อความที่ไม่จัดรูปà¹à¸šà¸šà¸—ี่นี่',
+ 'wikieditor-toolbar-tool-redirect' => 'เปลี่ยนทาง',
+ 'wikieditor-toolbar-tool-redirect-example' => 'ชื่อหน้าเป้าหมาย',
+ 'wikieditor-toolbar-tool-big' => 'ใหà¸à¹ˆ',
+ 'wikieditor-toolbar-tool-big-example' => 'ข้อความขนาดอัà¸à¸©à¸£à¹ƒà¸«à¸à¹ˆ',
+ 'wikieditor-toolbar-tool-small' => 'เล็à¸',
+ 'wikieditor-toolbar-tool-small-example' => 'ข้อความขนาดอัà¸à¸©à¸£à¹€à¸¥à¹‡à¸',
+ 'wikieditor-toolbar-tool-superscript' => 'ตัวยà¸',
+ 'wikieditor-toolbar-tool-superscript-example' => 'ตัวหนังสือที่เป็นตัวยà¸',
+ 'wikieditor-toolbar-tool-subscript' => 'ตัวห้อย',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ตัวหนังสือที่เป็นตัวห้อย',
+ 'wikieditor-toolbar-group-insert' => 'à¹à¸—รà¸',
+ 'wikieditor-toolbar-tool-gallery' => 'จัดà¹à¸ªà¸”งภาพ',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|คำอธิบายภาพ1
+$1:Example.jpg|คำอธิบายภาพ2',
+ 'wikieditor-toolbar-tool-newline' => 'ขึ้นบรรทัดใหม่',
+ 'wikieditor-toolbar-tool-table' => 'ตาราง',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! ชื่อเรื่อง 1
+! ชื่อเรื่อง 2
+! ชื่อเรื่อง 3
+|-
+| à¹à¸–ว 1, ช่อง 1
+| à¹à¸–ว 1, ช่อง 2
+| à¹à¸–ว 1, ช่อง 3
+|-
+| à¹à¸–ว 2, ช่อง 1
+| à¹à¸–ว 2, ช่อง 2
+| à¹à¸–ว 2, ช่อง 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ใส่อัà¸à¸©à¸£',
+ 'wikieditor-toolbar-tool-table-example-header' => 'ใส่หัวตาราง',
+ 'wikieditor-toolbar-tool-table-title' => 'à¹à¸—รà¸à¸•à¸²à¸£à¸²à¸‡',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'à¹à¸–ว',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'คอลัมน์',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'ใส่à¹à¸–วเน้นหัวตาราง',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'ใส่รูปà¹à¸šà¸šà¸žà¸´à¹€à¸¨à¸©à¸žà¸£à¹‰à¸­à¸¡à¹€à¸ªà¹‰à¸™à¸‚อบ',
+ 'wikieditor-toolbar-tool-table-sortable' => 'à¸à¸³à¸«à¸™à¸”ให้ตารางเรียงข้อมูลได้',
+ 'wikieditor-toolbar-tool-table-example' => 'ตัวอย่าง',
+ 'wikieditor-toolbar-tool-table-preview' => 'ภาพตัวอย่างตาราง',
+ 'wikieditor-toolbar-tool-table-insert' => 'à¹à¸—รà¸',
+ 'wikieditor-toolbar-tool-table-cancel' => 'ยà¸à¹€à¸¥à¸´à¸',
+ 'wikieditor-toolbar-tool-table-toomany' => 'ไม่สามารถใส่ตารางที่มีคอลัมน์มาà¸à¸à¸§à¹ˆà¸² $1 คอลัมน์ได้ในที่นี้',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'คุณไม่ได้ใส่ค่าจำนวนของà¹à¸–วหรือคอลัมน์ที่ถูà¸à¸•à¹‰à¸­à¸‡',
+ 'wikieditor-toolbar-tool-table-zero' => 'ไม่สามารถใส่ตารางที่มีจำนวนà¹à¸–วหรือคอลัมน์เท่าà¸à¸±à¸šà¸¨à¸¹à¸™à¸¢à¹Œ',
+ 'wikieditor-toolbar-tool-replace' => 'ค้นหาà¹à¸¥à¸°à¹à¸—นที่',
+ 'wikieditor-toolbar-tool-replace-title' => 'ค้นหาà¹à¸¥à¸°à¹à¸—นที่',
+ 'wikieditor-toolbar-tool-replace-search' => 'ค้นหาข้อความ:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'à¹à¸—นที่ด้วย:',
+ 'wikieditor-toolbar-tool-replace-case' => 'ค้นหาโดยคำนึงถึงตัวพิมพ์เล็à¸-ใหà¸à¹ˆ',
+ 'wikieditor-toolbar-tool-replace-regex' => 'ให้วลีค้นหาเป็นคำอธิบายทั่วไป',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'ค้นหาตัวต่อไป',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'à¹à¸—นที่ตัวต่อไป',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'à¹à¸—นที่ทั้งหมด',
+ 'wikieditor-toolbar-tool-replace-close' => 'ปิด',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'สิ่งที่คุณค้นหาไม่ตรงà¸à¸±à¸šà¸ªà¸´à¹ˆà¸‡à¹ƒà¸”เลย',
+ 'wikieditor-toolbar-tool-replace-success' => 'มีเปลี่ยนà¹à¸›à¸¥à¸‡ $1 สิ่ง',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'คุณไม่ได้ใส่คำที่จะค้นหา',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'นิพจน์ปรà¸à¸•à¸´à¸—ี่คุณป้อนไม่ถูà¸à¸•à¹‰à¸­à¸‡: $1',
+ 'wikieditor-toolbar-section-characters' => 'ตัวอัà¸à¸©à¸£à¸žà¸´à¹€à¸¨à¸©',
+ 'wikieditor-toolbar-characters-page-latin' => 'ละติน',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'ละตินส่วนขยาย',
+ 'wikieditor-toolbar-characters-page-ipa' => 'สัทอัà¸à¸©à¸£à¸ªà¸²à¸à¸¥',
+ 'wikieditor-toolbar-characters-page-symbols' => 'สัà¸à¸¥à¸±à¸à¸©à¸“์',
+ 'wikieditor-toolbar-characters-page-greek' => 'à¸à¸£à¸µà¸',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'ซีริลลิà¸',
+ 'wikieditor-toolbar-characters-page-arabic' => 'อาหรับ',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'ฮีบรู',
+ 'wikieditor-toolbar-characters-page-bangla' => 'บังคลา',
+ 'wikieditor-toolbar-characters-page-telugu' => 'เตลูà¸à¸¹',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'สิงหล',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'คุชราต',
+ 'wikieditor-toolbar-section-help' => 'วิธีใช้',
+ 'wikieditor-toolbar-help-heading-description' => 'คำอธิบาย',
+ 'wikieditor-toolbar-help-heading-syntax' => 'สิ่งที่คุณพิมพ์',
+ 'wikieditor-toolbar-help-heading-result' => 'ผลที่ได้',
+ 'wikieditor-toolbar-help-page-format' => 'à¸à¸²à¸£à¸ˆà¸±à¸”รูปà¹à¸šà¸š',
+ 'wikieditor-toolbar-help-page-link' => 'ลิงà¸à¹Œ',
+ 'wikieditor-toolbar-help-page-heading' => 'หัวเรื่อง',
+ 'wikieditor-toolbar-help-page-list' => 'รายà¸à¸²à¸£',
+ 'wikieditor-toolbar-help-page-file' => 'ไฟล์',
+ 'wikieditor-toolbar-help-page-reference' => 'ส่วนอ้างอิง',
+ 'wikieditor-toolbar-help-page-discussion' => 'พูดคุย',
+ 'wikieditor-toolbar-help-content-italic-description' => 'ตัวเอน',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''ตัวหนังสือที่เป็นตัวเอน''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>ตัวหนังสือที่เป็นตัวเอน</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'ตัวหนา',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''ตัวหนังสือที่เป็นตัวหนา'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>ตัวหนังสือที่เป็นตัวหนา</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'ตัวหนาที่เป็นตัวเอน',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''ตัวหนังสือตัวหนาที่เป็นตัวเอน'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>ตัวหนังสือตัวหนาที่เป็นตัวเอน</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'ลิงà¸à¹Œà¸ à¸²à¸¢à¹ƒà¸™',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[ชื่อของหน้า|ชื่อลิงà¸à¹Œ]]<br />[[ชื่อของหน้า]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>ชื่อของลิงà¸à¹Œ</a><br /><a href='#'>ชื่อของหน้า</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'ลิงà¸à¹Œà¸ à¸²à¸¢à¸™à¸­à¸',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org ชื่อลิงà¸à¹Œ]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>ชื่อลิงà¸à¹Œ</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'หัวเรื่องลำดับที่ 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== หัวเรื่องลำดับที่ 2 ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>หัวเรื่องลำดับที่ 2</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'หัวเรื่องลำดับที่ 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== หัวเรื่องลำดับที่ 3 ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>หัวเรื่องลำดับที่ 3</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'หัวเรื่องลำดับที่ 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== หัวเรื่องลำดับที่ 4 ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>หัวเรื่องลำดับที่ 4</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'หัวเรื่องลำดับที่ 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== หัวเรื่องลำดับที่ 5 =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>หัวเรื่องลำดับที่ 5</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'รายà¸à¸²à¸£à¸ªà¸±à¸à¸¥à¸±à¸à¸©à¸“์',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* เนื้อหารายà¸à¸²à¸£<br />* เนื้อหารายà¸à¸²à¸£',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>เนื้อหารายà¸à¸²à¸£</li><li>เนื้อหารายà¸à¸²à¸£</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'รายà¸à¸²à¸£à¸¥à¸³à¸”ับเลข',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# เนื้อหารายà¸à¸²à¸£<br /># เนื้อหารายà¸à¸²à¸£',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>เนื้อหารายà¸à¸²à¸£</li><li>เนื้อหารายà¸à¸²à¸£</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'à¹à¸—รà¸à¹„ฟล์',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|คำอธิบายภาพ]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='คำอธิบาย' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='ขยายใหà¸à¹ˆ' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>คำอธิบาย</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'อ้างอิง',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'ชื่อหน้า.&lt;ref name="test"&gt;[http://www.example.org ชื่อลิงà¸à¹Œ], คำอธิบายเพิ่มเติม.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "ข้อความในหน้า<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡à¹€à¸”ียวà¸à¸±à¸™à¹€à¸žà¸´à¹ˆà¸¡à¹€à¸•à¸´à¸¡',
+ 'wikieditor-toolbar-help-content-rereference-result' => "ข้อความในหน้า<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'à¹à¸ªà¸”งà¹à¸«à¸¥à¹ˆà¸‡à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ลายเซ็นพร้อมลงเวลา',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>ชื่อผู้ใช้</a> (<a href='#' title='{{#special:mytalk}}'>พูดคุย</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ลายเซ็น',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>ชื่อผู้ใช้</a> (<a href='#' title='{{#special:mytalk}}'>พูดคุย</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'ย่อหน้า',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'บรรทัดปà¸à¸•à¸´<br />:บรรทัดย่อหน้า<br />::บรรทัดย่อหน้า',
+ 'wikieditor-toolbar-help-content-indent-result' => 'บรรทัดปà¸à¸•à¸´<dl><dd>บรรทัดย่อหน้า<dl><dd>บรรทัดย่อหน้า</dd></dl></dd></dl>',
+);
+
+/** Turkmen (Türkmençe)
+ * @author Hanberke
+ */
+$messages['tk'] = array(
+ 'wikieditor' => 'Giňeldilen wikitekst redaktirleme interfeýsi',
+ 'wikieditor-desc' => 'Giňeldilýän wikitekst redkatirleme interfeýsini we köp aýratynlykly modullary üpjün edýär',
+ 'wikieditor-wikitext-tab' => 'Wikitekst',
+ 'wikieditor-loading' => 'Ãüklenilýär',
+ 'wikieditor-preview-preference' => 'Egin-egne deslapky syny aç',
+ 'wikieditor-preview-tab' => 'Deslapky syn',
+ 'wikieditor-preview-changes-tab' => 'Üýtgeşmeler',
+ 'wikieditor-preview-loading' => 'Ãüklenilýär...',
+ 'wikieditor-previewDialog-preference' => 'Deslapky syn dialogyny aç',
+ 'wikieditor-previewDialog-tab' => 'Deslapky syn',
+ 'wikieditor-previewDialog-loading' => 'Ãüklenilýär...',
+ 'wikieditor-publish-preference' => 'Ädimme-ädim neşir etmekligi aç',
+ 'wikieditor-publish-button-publish' => 'NeÅŸir et',
+ 'wikieditor-publish-button-cancel' => 'Goýbolsun et',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}} taslamasynda neÅŸir et',
+ 'wikieditor-publish-dialog-summary' => 'Özgerdiş düşündirişi (eden üýtgeşmeleriňizi gysgaça düşündiriň):',
+ 'wikieditor-publish-dialog-minor' => 'Ujypsyzja özgerdiş',
+ 'wikieditor-publish-dialog-watch' => 'Sahypany gözegçilige al',
+ 'wikieditor-publish-dialog-publish' => 'NeÅŸir et',
+ 'wikieditor-publish-dialog-goback' => 'Yza gaýt',
+ 'wikieditor-template-editor-preference' => 'Wiki şablonlarynyň form arkaly redaktirlenmegini aç',
+ 'wikieditor-template-editor-dialog-title' => 'Åžablony redaktirle',
+ 'wikieditor-template-editor-dialog-submit' => 'Täzele',
+ 'wikieditor-template-editor-dialog-cancel' => 'Goýbolsun et',
+ 'wikieditor-templates-preference' => 'Şablon düýrlemekligi aç',
+ 'wikieditor-toc-preference' => 'Nawigasiýaly mazmun tablisasyny aç',
+ 'wikieditor-toc-show' => 'Mazmuny görkez',
+ 'wikieditor-toc-hide' => 'Mazmuny gizle',
+ 'wikieditor-toolbar' => 'Redaktirleme gural paneli',
+ 'wikieditor-toolbar-desc' => 'Güýçlendirilen oňaýlylyk bilen sahypa gural panelini redaktirle',
+ 'wikieditor-toolbar-preference' => 'Güýçlendirilen redaktirleme gural panelini aç',
+ 'wikieditor-toolbar-dialogs-preference' => 'Çykgytlary, tablisalary we ýenekileri girizmek üçin dialoglary aç',
+ 'wikieditor-toolbar-loading' => 'Yüklenýär...',
+ 'wikieditor-toolbar-tool-bold' => 'Goýy',
+ 'wikieditor-toolbar-tool-bold-example' => 'Goýy tekst',
+ 'wikieditor-toolbar-tool-italic' => 'Kursiw',
+ 'wikieditor-toolbar-tool-italic-example' => 'Kursiw tekst',
+ 'wikieditor-toolbar-tool-ilink' => 'Içerki çykgyt',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Çykgyt ady',
+ 'wikieditor-toolbar-tool-xlink' => 'Daşarky çykgyt (http:// prefiksini ýatdan çykarmaň)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com çykgyt ady',
+ 'wikieditor-toolbar-tool-link' => 'Çykgyt',
+ 'wikieditor-toolbar-tool-link-title' => 'Çykgyt giriz',
+ 'wikieditor-toolbar-tool-link-int' => 'Bir wiki sahypasyna',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Sahypa ady:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Sahypan ady ýa-da URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Çykgyt teksti:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Görkezilmeli teksti ýazyň',
+ 'wikieditor-toolbar-tool-link-ext' => 'Bir daÅŸarky web sahypasyna',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Çykgyt URL-si:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Çykgyt teksti:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Çykgyt giriz',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Goýbolsun et',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Sahypa bar',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Sahypa ýok',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Nädogry at',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Daşarky çykgyt',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Sahypanyň barlygy barlanylýar...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Görkezen adyňyz nädogry.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Görkezen URL-ňiz başga bir wiki sahypasyna çykgyt hökmünde niýetlenilen ýaly-la. Ony içerki çykgyda öwüresiňiz gelýärmi?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Içerki çykgyt',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Daşarky çykgyt',
+ 'wikieditor-toolbar-tool-link-empty' => 'Çykgyt berer ýaly hiç zat ýazmadyňyz.',
+ 'wikieditor-toolbar-tool-file' => 'Salnan faýl',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Salgylanma',
+ 'wikieditor-toolbar-tool-reference-example' => 'Footnote tekstini şu ýere giriziň',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Goýbolsun et',
+ 'wikieditor-toolbar-tool-reference-title' => 'Salgylanma sal',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Giriz',
+ 'wikieditor-toolbar-tool-reference-text' => 'Salgylanma teksti',
+ 'wikieditor-toolbar-tool-signature' => 'Gol we wagt belgisi',
+ 'wikieditor-toolbar-section-advanced' => 'Giňeldilen',
+ 'wikieditor-toolbar-tool-heading' => 'At',
+ 'wikieditor-toolbar-tool-heading-1' => 'Dereje 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Dereje 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Dereje 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Dereje 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Dereje 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Adyň teksti',
+ 'wikieditor-toolbar-group-format' => 'Sanaw',
+ 'wikieditor-toolbar-tool-ulist' => 'Markirlenen sanaw',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Markirlenen sanaw elementi',
+ 'wikieditor-toolbar-tool-olist' => 'Belgili sanaw',
+ 'wikieditor-toolbar-tool-olist-example' => 'Belgili sanaw elementi',
+ 'wikieditor-toolbar-tool-indent' => 'Boş ýer',
+ 'wikieditor-toolbar-tool-indent-example' => 'Boş ýerli setir',
+ 'wikieditor-toolbar-tool-nowiki' => 'Wiki formatirlemesi ýok',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Formatirlenmedik teksti şu ýere salyň',
+ 'wikieditor-toolbar-tool-redirect' => 'Gönükdirme',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Niýetlenilýän sahypa ady',
+ 'wikieditor-toolbar-tool-big' => 'Uly',
+ 'wikieditor-toolbar-tool-big-example' => 'Uly tekst',
+ 'wikieditor-toolbar-tool-small' => 'Kiçi',
+ 'wikieditor-toolbar-tool-small-example' => 'Kiçi tekst',
+ 'wikieditor-toolbar-tool-superscript' => 'Setirüsti',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Setirüsti tekst',
+ 'wikieditor-toolbar-tool-subscript' => 'Setirasty',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Setirasty tekst',
+ 'wikieditor-toolbar-group-insert' => 'Giriz',
+ 'wikieditor-toolbar-tool-gallery' => 'Surat galereýasy',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Titr1
+$1:Example.jpg|Titr2',
+ 'wikieditor-toolbar-tool-newline' => 'Täze setir',
+ 'wikieditor-toolbar-tool-table' => 'Tablisa',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! at 1
+! at 2
+! at 3
+|-
+| hatar 1, öýjük 1
+| hatar 1, öýjük 2
+| hatar 1, öýjük 3
+|-
+| hatar 2, öýjük 1
+| hatar 2, öýjük 2
+| hatar 2, öýjük 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Öýjük teksti',
+ 'wikieditor-toolbar-tool-table-example-header' => 'At teksti',
+ 'wikieditor-toolbar-tool-table-title' => 'Tablisa giriz',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Hatarlar',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Sütünler',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'At hataryny giriz',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Çäkli stil',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tablisany sortirlenýän et',
+ 'wikieditor-toolbar-tool-table-example' => 'Öýjük teksti',
+ 'wikieditor-toolbar-tool-table-preview' => 'Deslapky syn',
+ 'wikieditor-toolbar-tool-table-insert' => 'Giriz',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Goýbolsun et',
+ 'wikieditor-toolbar-tool-table-toomany' => '$1 öýjükden artykmaç öýjükli tablisa girizmek bu dialog bilen mümkin däl.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Dogry bir hatar ýa-da sütün sanyny ýazmansyňyz.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Hiç hili hatarsyz ýa-da sütünsiz tablisa girizip bilmeýärsiňiz.',
+ 'wikieditor-toolbar-tool-replace' => 'Gözle we çalşyr',
+ 'wikieditor-toolbar-tool-replace-title' => 'Gözle we çalşyr',
+ 'wikieditor-toolbar-tool-replace-search' => 'Şuny gözle:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Şunuň bilen çalşyr:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Baş-setir harpa duýgur',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Gözleg setirine adaty aňlatma hökmünde çemeleş',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Indikini tap',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Indikini çalşyr',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Ählisini çalşyr',
+ 'wikieditor-toolbar-tool-replace-close' => 'Ãap',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Gözlegiňiz hiçbir zada duşmady.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 sany çalşyrma geçirildi.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Gözlär ýaly hiçbir zat ýazmadyňyz.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Ãazan adaty aňlatmaňyz nädogry: $1',
+ 'wikieditor-toolbar-section-characters' => 'Ãörite simwollar',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latyn',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Giňeldilen latyn',
+ 'wikieditor-toolbar-characters-page-ipa' => 'HFE (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simwollar',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grek',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kirillisa',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arap',
+ 'wikieditor-toolbar-characters-page-persian' => 'Parsça',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Iwrit',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalça',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singal',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Güjerat',
+ 'wikieditor-toolbar-characters-page-thai' => 'Taýlandça',
+ 'wikieditor-toolbar-characters-page-lao' => 'Laosça',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmerçe',
+ 'wikieditor-toolbar-section-help' => 'Ãardam',
+ 'wikieditor-toolbar-help-heading-description' => 'Düşündiriş',
+ 'wikieditor-toolbar-help-heading-syntax' => 'ÃazylyÅŸy',
+ 'wikieditor-toolbar-help-heading-result' => 'Görünişi',
+ 'wikieditor-toolbar-help-page-format' => 'Formatirleme',
+ 'wikieditor-toolbar-help-page-link' => 'Çykgytlar',
+ 'wikieditor-toolbar-help-page-heading' => 'Atlar',
+ 'wikieditor-toolbar-help-page-list' => 'Sanawlar',
+ 'wikieditor-toolbar-help-page-file' => 'Faýllar',
+ 'wikieditor-toolbar-help-page-reference' => 'Salgylanmalar',
+ 'wikieditor-toolbar-help-page-discussion' => 'Çekişme',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Kursiw',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Kursiw tekst''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Kursiw tekst</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Goýy',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Goýy tekst'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Goýy tekst</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Goýy &amp; kursiw',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Goýy &amp; kursiw tekst'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Goýy &amp; kursiw tekst</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Içerki çykgyt',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Sahypa ady|Çykgydyň teksti]]<br />[[Sahypa ady]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Çykgydyň teksti</a><br /><a href='#'>Sahypa ady</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Daşarky çykgyt',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Çykgydyň teksti]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Çykgydyň teksti</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2-nji derejeli at',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Adyň teksti ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Adyň teksti</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3-nji derejeli at',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Adyň teksti ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Adyň teksti</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4-nji derejeli at',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Adyň teksti ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Adyň teksti</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5-nji derejeli at',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Adyň teksti =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Adyň teksti</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Markirlenen sanaw',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Sanaw elementi<br />* Sanaw elementi',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Sanaw elementi</li><li>Sanaw elementi</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Belgili sanaw',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Sanaw elementi<br /># Sanaw elementi',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Sanaw elementi</li><li>Sanaw elementi</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Salnan faýl',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Titriň teksti]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Titriň teksti' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Ulalt' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Titriň teksti</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Salgylanma',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Sahypanyň teksti.&lt;ref name="test"&gt;[http://www.example.org Çykgydyň teksti], goşmaça tekst.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Sahypa teksti.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Şol bir salgylanmanyň goşmaça ulanylyşy',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Sahypa teksti.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Salgylanmalary görkez',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Çykgydyň teksti</a>, goşmaça tekst.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Wagt belgili gol',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Ulanyjy ady</a> (<a href='#' title='{{#special:mytalk}}'>çekişme</a>) 15:54, 10 iýun 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Gol',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Ulanyjy ady</a> (<a href='#' title='{{#special:mytalk}}'>çekişme</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Boş ýer',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Adaty tekst<br />:Boş ýerli tekst<br />::Boş ýerli tekst',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Adaty tekst<dl><dd>Boş ýerli tekst<dl><dd>Boş ýerli tekst</dd></dl></dd></dl>',
+);
+
+/** Tagalog (Tagalog)
+ * @author AnakngAraw
+ * @author McDutchie
+ */
+$messages['tl'] = array(
+ 'wikieditor' => 'Mas masulong na dugtungang-mukha na pambago ng wikiteksto',
+ 'wikieditor-desc' => 'Nagbibigay ng maidurugtong na dugtungang-mukha na pambago ng wikiteksto at maraming mga modulong nagbibigay ng katangiang-kasangkapan',
+ 'wikieditor-wikitext-tab' => 'Wikiteksto',
+ 'wikieditor-loading' => 'Ikinakarga',
+ 'wikieditor-preview-preference' => 'Paganahin ang magkatabing paunang-tingin',
+ 'wikieditor-preview-tab' => 'Paunang tanaw',
+ 'wikieditor-preview-changes-tab' => 'Mga pagbabago',
+ 'wikieditor-preview-loading' => 'Ikinakarga...',
+ 'wikieditor-previewDialog-preference' => 'Paganahin ang diyalogo ng paunang pagpapatanaw',
+ 'wikieditor-previewDialog-tab' => 'Paunang tanaw',
+ 'wikieditor-previewDialog-loading' => 'Ikinakarga...',
+ 'wikieditor-publish-preference' => 'Paganahin ang hakbang-hakbang na paglalathala',
+ 'wikieditor-publish-button-publish' => 'Ilathala',
+ 'wikieditor-publish-button-cancel' => 'Huwag ituloy',
+ 'wikieditor-publish-dialog-title' => 'Ilathala sa {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Buod ng pagbabago (maikling ilarawan ang mga pagbabagong ginawa mo):',
+ 'wikieditor-publish-dialog-minor' => 'Maliit na pagbabago',
+ 'wikieditor-publish-dialog-watch' => 'Bantayan ang pahinang ito',
+ 'wikieditor-publish-dialog-publish' => 'Ilathala',
+ 'wikieditor-publish-dialog-goback' => 'Bumalik',
+ 'wikieditor-template-editor-preference' => 'Paganahin ang pagpapatnugot ng mga suleras na pangwiki na nakasalalay sa pormularyo',
+ 'wikieditor-template-editor-dialog-title' => 'Baguhin ang suleras',
+ 'wikieditor-template-editor-dialog-submit' => 'Isapanahon',
+ 'wikieditor-template-editor-dialog-cancel' => 'Huwag ituloy',
+ 'wikieditor-templates-preference' => 'Paganahin ang bumabagsak na suleras',
+ 'wikieditor-toc-preference' => 'Paganahin ang malilibot na tabla ng mga nilalaman',
+ 'wikieditor-toc-show' => 'Ipakita ang mga nilalaman',
+ 'wikieditor-toc-hide' => 'Itago ang mga nilalaman',
+ 'wikieditor-toolbar' => 'Kahong kasangkapan na pamatnugot',
+ 'wikieditor-toolbar-desc' => 'Kahong kasangkapan na pamatnugot na may pinainam na pagkanagagamit',
+ 'wikieditor-toolbar-preference' => 'Paganahin ang pinainam na kahong kasangkapang pamatnugot',
+ 'wikieditor-toolbar-dialogs-preference' => 'Paganahin ang mga salitaan para sa pagsisingit ng mga kawing, mga tabla at marami pa',
+ 'wikieditor-toolbar-hidesig' => 'Itago ang pindutan ng lagda magmula sa mga pahina sa loob ng pangunahing puwang ng pangalan',
+ 'wikieditor-toolbar-loading' => 'Ikinakarga...',
+ 'wikieditor-toolbar-tool-bold' => 'Makapal',
+ 'wikieditor-toolbar-tool-bold-example' => 'Makapal na panitik',
+ 'wikieditor-toolbar-tool-italic' => 'Nakapahilis',
+ 'wikieditor-toolbar-tool-italic-example' => 'Nakapahilis na panitik',
+ 'wikieditor-toolbar-tool-ilink' => 'Panloob na kawing',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Pamagat ng kawing',
+ 'wikieditor-toolbar-tool-xlink' => 'Panlabas na kawing (tandaan ang unlaping http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'pamagat ng kawing na http://www.halimbawa.com',
+ 'wikieditor-toolbar-tool-link' => 'Kawing',
+ 'wikieditor-toolbar-tool-link-title' => 'Magsingit ng kawing',
+ 'wikieditor-toolbar-tool-link-int' => 'Papunta sa isang pahina ng wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Puntiryang pahina o URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Pamagat ng pahina o URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Ipapakitang teksto:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Ipapakitang teksto',
+ 'wikieditor-toolbar-tool-link-ext' => 'Papunta sa isang panlabas na pahina ng web',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Kawing ng URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Kawing ng teksto:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Isingit ang kawing',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Huwag ituloy',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Umiiral na ang pahina',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Hindi pa umiiral ang pahina',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Hindi tanggap na pamagat',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Kawing panlabas',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Sinusuri ang pag-iral ng pahina...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Hindi tanggap ang tinukoy mong pamagat.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Tila inilaan ang tinukoy mong URL bilang isang kawing sa ibang pahina ng wiki. Nais mo bang gawin itong isang kawing na panloob?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Kawing panloob',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Kawing panlabas',
+ 'wikieditor-toolbar-tool-link-empty' => 'Hindi ka naglagay ng anumang kakawingan.',
+ 'wikieditor-toolbar-tool-file' => 'Talaksang nakabaon',
+ 'wikieditor-toolbar-tool-file-example' => 'Halimbawa.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Sanggunian',
+ 'wikieditor-toolbar-tool-reference-example' => 'Isingit dito ang teksto ng talababa',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Huwag ituloy',
+ 'wikieditor-toolbar-tool-reference-title' => 'Isingit ang sanggunian',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Isingit',
+ 'wikieditor-toolbar-tool-reference-text' => 'Teksto ng sanggunian',
+ 'wikieditor-toolbar-tool-signature' => 'Lagda at tatak ng oras',
+ 'wikieditor-toolbar-section-advanced' => 'Mas masulong',
+ 'wikieditor-toolbar-tool-heading' => 'Paulo',
+ 'wikieditor-toolbar-tool-heading-1' => 'Antas 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Antas 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Antas 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Antas 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Antas 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Teksto ng paulo',
+ 'wikieditor-toolbar-group-format' => 'Anyo',
+ 'wikieditor-toolbar-tool-ulist' => 'Talaang nakapunglo',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Bagay sa talaang nakapunglo',
+ 'wikieditor-toolbar-tool-olist' => 'Talaang may bilang',
+ 'wikieditor-toolbar-tool-olist-example' => 'Binilangang bagay sa talaan',
+ 'wikieditor-toolbar-tool-indent' => 'Kupi',
+ 'wikieditor-toolbar-tool-indent-example' => 'Guhit na inurong',
+ 'wikieditor-toolbar-tool-nowiki' => 'Walang ayos na pangwiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Isingit dito ang tekstong hindi nakaayos',
+ 'wikieditor-toolbar-tool-redirect' => 'Palitan ang pupuntahan',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Pangalan ng puntiryang pahina',
+ 'wikieditor-toolbar-tool-big' => 'Malaki',
+ 'wikieditor-toolbar-tool-big-example' => 'Malaking teksto',
+ 'wikieditor-toolbar-tool-small' => 'Maliit',
+ 'wikieditor-toolbar-tool-small-example' => 'Maliit na teksto',
+ 'wikieditor-toolbar-tool-superscript' => 'Nakataas na panitik',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Teksto ng nakataas na panitik',
+ 'wikieditor-toolbar-tool-subscript' => 'Nakababang panitik',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Teksto ng nakababang panitik',
+ 'wikieditor-toolbar-group-insert' => 'Isingit',
+ 'wikieditor-toolbar-tool-gallery' => 'Tipunan ng larawan',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Halimbawa.jpg|Kapsyon1
+$1:Halimbawa.jpg|Kapsyon2',
+ 'wikieditor-toolbar-tool-newline' => 'Bagong guhit',
+ 'wikieditor-toolbar-tool-table' => 'Talahanayan',
+ 'wikieditor-toolbar-tool-table-example-old' => '
+! paulo 1
+! paulo 2
+! paulo 3
+|-
+| pahalang na hanay 1, sihay 1
+| pahalang na hanay 1, sihay 2
+| pahalang na hanay 1, sihay 3
+|-
+| pahalang na hanay 2, sihay 1
+| pahalang na hanay 2, sihay 2
+| pahalang na hanay 2, sihay 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Teskto ng sihay',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Teksto ng paulo',
+ 'wikieditor-toolbar-tool-table-title' => 'Isingit ang talahanayan',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Pahalang na mga hanay',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Pababang mga hanay',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Idagdag ang pahalang na hanay ng paulo',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Estilong may mga hangganan',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Gawing mapagpipilian ang talahanayan',
+ 'wikieditor-toolbar-tool-table-example' => 'Halimbawa',
+ 'wikieditor-toolbar-tool-table-preview' => 'Paunang tingin',
+ 'wikieditor-toolbar-tool-table-insert' => 'Isingit',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Huwag ituloy',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Hindi maaari sa salitaang ganito ang pagsisingit ng isang talahanayang may mahigit sa $1 na mga sihay.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Hindi ka nagpasok ng isang tanggap na bilang ng mga hanay na pahalang o pababa.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Hindi ka makapagsisingit ng isang talahanayang walang mga hanay na pahalang o pababa.',
+ 'wikieditor-toolbar-tool-replace' => 'Maghanap at palitan',
+ 'wikieditor-toolbar-tool-replace-title' => 'Maghanap at palitan',
+ 'wikieditor-toolbar-tool-replace-search' => 'Hanapin ang:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Palitan ng:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Itugma sa uri ng sukat ng titik',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Ituring ang bagting ng paghahanap bilang isang pangkaraniwang pananalita',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Susunod na hahanapin',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Susunod na papalitan',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Palitang lahat',
+ 'wikieditor-toolbar-tool-replace-close' => 'Isara',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Hindi tumugma sa anuman ang paghahanap mo.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 nagawang (mga) pagpapalit.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Hindi ka naglagay ng anumang hahanapin.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Hindi tanggap ang inilagay mong pangkaraniwang pananalita: $1',
+ 'wikieditor-toolbar-section-characters' => 'Natatanging mga panitik',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Pinalawig na Latin',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Mga sagisag',
+ 'wikieditor-toolbar-characters-page-greek' => 'Griyego',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Siriliko',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabe',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persyano',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hebreo',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Guharati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Tulong',
+ 'wikieditor-toolbar-help-heading-description' => 'Paglalarawan',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Kung ano ang iminakinilya mo',
+ 'wikieditor-toolbar-help-heading-result' => 'Kung ano ang nakuha mo',
+ 'wikieditor-toolbar-help-page-format' => 'Pagkakaayos',
+ 'wikieditor-toolbar-help-page-link' => 'Mga kawing',
+ 'wikieditor-toolbar-help-page-heading' => 'Mga paulo',
+ 'wikieditor-toolbar-help-page-list' => 'Mga talaan',
+ 'wikieditor-toolbar-help-page-file' => 'Mga talaksan',
+ 'wikieditor-toolbar-help-page-reference' => 'Mga sanggunian',
+ 'wikieditor-toolbar-help-page-discussion' => 'Mga talakayan',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Nakapahilis',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Tekstong nakapahilis''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Tekstong nakapahilis</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Makapal',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Tekstong makapal'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Tekstong makapal</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Makapal &amp; nakapahilis',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Tekstong makapal &amp; nakapahilis'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => 'strong><em>Tekstong makapal &amp; nakapahilis</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Kawing panloob',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Page title|Tatak ng kawing]]<br />[[Pamagat ng pahina]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Tatak ng kawing</a><br /><a href='#'>Pamagat ng pahina</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Kawing panlabas',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.halimbawa.org Link label]<br />[http://www.halimbawa.org]<br />http://www.halimbawa.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Tatak ng kawing</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.halimbawa.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Paulo ng pangalawang antas',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Teksto ng paulo ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Teksto ng paulo</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Antas ng pangatlong antas',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Teksto ng paulo ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Teksto ng paulo</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Paulo ng pang-apat na antas',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Teksto ng paulo ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4> Teksto ng paulo </h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Paulo ng panlimang antas',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Teksto ng paulo =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Teksto ng paulo</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Talaang napungluan',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Bagay sa talaan<br />* Bagay sa talaan',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Bagay sa talaan</li><li>Bagay sa talaan</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Nabilangang talaan',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Bagay sa talaan<br /># Bagay sa talaan',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Bagay sa talaan</li><li>Bagay sa talaan</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Talaksang nakabaon',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Halimbawa.png|thumb|Teksto ng kapsyon]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Tekstong nagpapaliwanag</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Sanggunian',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Taksto ng pahina.&lt;ref name="test"&gt;[http://www.halimbawa.org Teksto ng kawing], karagdagang teksto.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Teksto ng pahina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Karagdagang paggamit na gayun ding sanggunian',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Teksto ng pahina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Ipakita ang mga sanggunian',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.halimbawa.org' class='external text' href='#'>Teksto ng kawing</a>, karagdagang teksto.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Lagdang may tatak ng oras',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Pangalan ng tagagamit</a> (<a href='#' title='{{#special:mytalk}}'>talk</a>) 15:54, 10 Hunyo 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Lagda',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Pangalan ng tagagamit</a> (<a href='#' title='{{#special:mytalk}}'>usapan</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Iurong',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Karaniwang teksto<br />:Tekstong nakaurong<br />::Tekstong nakaurong',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Karaniwang teksto<dl><dd>Tekstong nakaurong<dl><dd>Tekstong nakaurong</dd></dl></dd></dl>',
+);
+
+/** Tok Pisin (Tok Pisin)
+ * @author Iketsi
+ */
+$messages['tpi'] = array(
+ 'wikieditor-toolbar-help-page-file' => 'Ol fail',
+);
+
+/** Turkish (Türkçe)
+ * @author Joseph
+ * @author Manco Capac
+ * @author Srhat
+ * @author Vito Genovese
+ */
+$messages['tr'] = array(
+ 'wikieditor' => 'Gelişmiş viki metni düzenleme arayüzü',
+ 'wikieditor-desc' => 'Genişletilebilir bir viki metni düzenleme arayüzü ve birçok özellik sağlayan modüller sağlar',
+ 'wikieditor-wikitext-tab' => 'Vikimetin',
+ 'wikieditor-loading' => 'Yükleniyor',
+ 'wikieditor-preview-preference' => 'Yan-yana önizlemeyi etkinleştir',
+ 'wikieditor-preview-tab' => 'Önizleme',
+ 'wikieditor-preview-changes-tab' => 'DeÄŸiÅŸiklikler',
+ 'wikieditor-preview-loading' => 'Yükleniyor...',
+ 'wikieditor-previewDialog-preference' => 'Önizleme iletisini etkinleştir',
+ 'wikieditor-previewDialog-tab' => 'Önizleme',
+ 'wikieditor-previewDialog-loading' => 'Yükleniyor...',
+ 'wikieditor-publish-preference' => 'Adım-adım yayınlamayı etkinleştir',
+ 'wikieditor-publish-button-publish' => 'Yayınla',
+ 'wikieditor-publish-button-cancel' => 'Ä°ptal',
+ 'wikieditor-publish-dialog-title' => '{{SITENAME}} bünyesinde yayınla',
+ 'wikieditor-publish-dialog-summary' => 'Değişiklik özeti (yaptığınız değişiklikleri kısaca açıklayın):',
+ 'wikieditor-publish-dialog-minor' => 'Küçük değişiklik',
+ 'wikieditor-publish-dialog-watch' => 'Bu sayfayı izle',
+ 'wikieditor-publish-dialog-publish' => 'Yayınla',
+ 'wikieditor-publish-dialog-goback' => 'Geri git',
+ 'wikieditor-template-editor-preference' => 'Viki şablonlarının form-bazlı değiştirilmesini etkinleştir',
+ 'wikieditor-template-editor-dialog-title' => 'Åžablonu deÄŸiÅŸtir',
+ 'wikieditor-template-editor-dialog-submit' => 'Güncelle',
+ 'wikieditor-template-editor-dialog-cancel' => 'Ä°ptal',
+ 'wikieditor-templates-preference' => 'Şablon daraltmayı etkinleştir',
+ 'wikieditor-toc-preference' => 'Gezintiye uygun içindekiler tablosunu etkinleştir',
+ 'wikieditor-toc-show' => 'İçindekileri göster',
+ 'wikieditor-toc-hide' => 'İçindekileri gizle',
+ 'wikieditor-toolbar' => 'Araç çubuğu düzenleme',
+ 'wikieditor-toolbar-desc' => 'Gelişmiş kullanılabilirlik ile sayfa araç çubuğunu değiştir',
+ 'wikieditor-toolbar-preference' => 'Gelişmiş düzenleme araç çubuğunu etkinleştir',
+ 'wikieditor-toolbar-dialogs-preference' => 'Bağlantılar, tablolar ve daha fazlasını eklemek için iletileri etkinleştir',
+ 'wikieditor-toolbar-loading' => 'Yükleniyor...',
+ 'wikieditor-toolbar-tool-bold' => 'Kalın',
+ 'wikieditor-toolbar-tool-bold-example' => 'Kalın yazı',
+ 'wikieditor-toolbar-tool-italic' => 'EÄŸik',
+ 'wikieditor-toolbar-tool-italic-example' => 'Eğik yazı',
+ 'wikieditor-toolbar-tool-ilink' => 'İç bağlantı',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Bağlantı başlığı',
+ 'wikieditor-toolbar-tool-xlink' => 'Dış bağlantı (http:// önekini unutmayın)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.ornek.com bağlantı başlığı',
+ 'wikieditor-toolbar-tool-link' => 'Bağlantı',
+ 'wikieditor-toolbar-tool-link-title' => 'Bağlantı ekle',
+ 'wikieditor-toolbar-tool-link-int' => 'Bir viki sayfasına',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Sayfa başlığı:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Sayfa başlığı ya da URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Bağlantı metni:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Görüntülenecek metni girin',
+ 'wikieditor-toolbar-tool-link-ext' => 'Harici bir web sayfasına',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Bağlantı URLsi:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Bağlantı metni:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Bağlantı ekle',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Ä°ptal',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Sayfa mevcut',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Sayfa mevcut deÄŸil',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Geçersiz başlık',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Dış bağlantı',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Sayfanın mevcudiyeti kontrol ediliyor...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Belirttiğiniz başlık geçersiz.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Belirttiğiniz URL, başka bir viki sayfasına bir bağlantı yapılmak istenmiş gibi görünüyor. Bunu dahili bir bağlantı yapmak ister misiniz?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Dahili bağlantı',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Harici bağlantı',
+ 'wikieditor-toolbar-tool-link-empty' => 'Bağlantı verecek bir şey girmediniz.',
+ 'wikieditor-toolbar-tool-file' => 'Gömülü dosya',
+ 'wikieditor-toolbar-tool-file-example' => 'Örnek.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Kaynakça',
+ 'wikieditor-toolbar-tool-reference-example' => 'Dipnot metnini buraya ekleyin',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Ä°ptal',
+ 'wikieditor-toolbar-tool-reference-title' => 'Referans ekle',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Ekle',
+ 'wikieditor-toolbar-tool-reference-text' => 'Referans metin',
+ 'wikieditor-toolbar-tool-signature' => 'İmza ve zaman damgası',
+ 'wikieditor-toolbar-section-advanced' => 'GeliÅŸmiÅŸ',
+ 'wikieditor-toolbar-tool-heading' => 'Başlık',
+ 'wikieditor-toolbar-tool-heading-1' => '1. seviye',
+ 'wikieditor-toolbar-tool-heading-2' => '2. seviye',
+ 'wikieditor-toolbar-tool-heading-3' => '3. seviye',
+ 'wikieditor-toolbar-tool-heading-4' => '4. seviye',
+ 'wikieditor-toolbar-tool-heading-5' => '5. seviye',
+ 'wikieditor-toolbar-tool-heading-example' => 'Başlık metni',
+ 'wikieditor-toolbar-group-format' => 'Düzenle',
+ 'wikieditor-toolbar-tool-ulist' => 'Madde iÅŸaretli liste',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Madde işaretli liste ögesi',
+ 'wikieditor-toolbar-tool-olist' => 'Numaralı liste',
+ 'wikieditor-toolbar-tool-olist-example' => 'Numaralı liste ögesi',
+ 'wikieditor-toolbar-tool-indent' => 'Girinti',
+ 'wikieditor-toolbar-tool-indent-example' => 'Girintili satır',
+ 'wikieditor-toolbar-tool-nowiki' => 'Viki biçimlendirmesi yok',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Buraya biçimlendirilmemiş metin ekleyin',
+ 'wikieditor-toolbar-tool-redirect' => 'Yönlendirme',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Hedef sayfa adı',
+ 'wikieditor-toolbar-tool-big' => 'Büyük',
+ 'wikieditor-toolbar-tool-big-example' => 'Büyük metin',
+ 'wikieditor-toolbar-tool-small' => 'Küçük',
+ 'wikieditor-toolbar-tool-small-example' => 'Küçük metin',
+ 'wikieditor-toolbar-tool-superscript' => 'Ãœst simge',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Ãœst simge metni',
+ 'wikieditor-toolbar-tool-subscript' => 'Alt simge',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Alt simge metni',
+ 'wikieditor-toolbar-group-insert' => 'Ekle',
+ 'wikieditor-toolbar-tool-gallery' => 'Resim galerisi',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Örnek.jpg|Resimyazısı1
+$1:Örnek.jpg|Resimyazısı2',
+ 'wikieditor-toolbar-tool-newline' => 'Yeni satır',
+ 'wikieditor-toolbar-tool-table' => 'Tablo',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! başlık 1
+! başlık 2
+! başlık 3
+|-
+| satır 1, hücre 1
+| satır 1, hücre 2
+| satır 1, hücre 3
+|-
+| satır 2, hücre 1
+| satır 2, hücre 2
+| satır 2, hücre 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Hücre metni',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Başlık metni',
+ 'wikieditor-toolbar-tool-table-title' => 'Tablo ekle',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Satırlar',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Sütunlar',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Başlık satırını içer',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Kenarlık ekle',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tabloyu sıralanabilir yap',
+ 'wikieditor-toolbar-tool-table-example' => 'Hücre metni',
+ 'wikieditor-toolbar-tool-table-preview' => 'Önizleme',
+ 'wikieditor-toolbar-tool-table-insert' => 'Ekle',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Ä°ptal',
+ 'wikieditor-toolbar-tool-table-toomany' => '$1 hücreliden fazla bir tablo eklemek bu ileti ile mümkün değildir.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Geçerli bir satır ve sütun sayısı girmediniz.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Sıfır satır veya sütuna sahip bir tablo ekleyemezsiniz.',
+ 'wikieditor-toolbar-tool-replace' => 'Ara ve deÄŸiÅŸtir',
+ 'wikieditor-toolbar-tool-replace-title' => 'Ara ve deÄŸiÅŸtir',
+ 'wikieditor-toolbar-tool-replace-search' => 'Şunun için ara:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Åžununla deÄŸiÅŸtir:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Büyük-küçük harf duyarlı',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Arama dizesine bir düzenli ifade muamelesi yap',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Sonrakini bul',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Sonrakini deÄŸiÅŸtir',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Tümünü değiştir',
+ 'wikieditor-toolbar-tool-replace-close' => 'Kapat',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Aramanız hiçbir şeyle uyuşmuyor.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 değiştirme yapıldı.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Aramak için herhangi birşey girmediniz.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Girdiğiniz düzenli ifade geçersiz: $1',
+ 'wikieditor-toolbar-section-characters' => 'Özel karakter',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latin',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'GeniÅŸletilmiÅŸ Latince',
+ 'wikieditor-toolbar-characters-page-ipa' => 'UFA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Semboller',
+ 'wikieditor-toolbar-characters-page-greek' => 'Yunan',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kiril',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arapça',
+ 'wikieditor-toolbar-characters-page-persian' => 'Farsça',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ä°branice',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengalce',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Tay',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-section-help' => 'Yardım',
+ 'wikieditor-toolbar-help-heading-description' => 'Açıklama',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Yazdığınız',
+ 'wikieditor-toolbar-help-heading-result' => 'Aldığınız',
+ 'wikieditor-toolbar-help-page-format' => 'Biçimlendirme',
+ 'wikieditor-toolbar-help-page-link' => 'Bağlantılar',
+ 'wikieditor-toolbar-help-page-heading' => 'Başlıklar',
+ 'wikieditor-toolbar-help-page-list' => 'Listeler',
+ 'wikieditor-toolbar-help-page-file' => 'Dosyalar',
+ 'wikieditor-toolbar-help-page-reference' => 'Kaynakça',
+ 'wikieditor-toolbar-help-page-discussion' => 'Tartışma',
+ 'wikieditor-toolbar-help-content-italic-description' => 'EÄŸik',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Eğik yazı''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Eğik yazı</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Kalın',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Kalın yazı'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Kalın yazı</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Kalın &amp; eğik',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Kalın &amp; eğik yazı'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Kalın &amp; eğik yazı</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'İç bağlantı',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Sayfa başlığı|Bağlantı başlığı]]<br />[[Sayfa başlığı]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Bağlantı etiketi</a><br /><a href='#'>Sayfa başlığı</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Dış bağlantı',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.ornek.org Bağlantı etiketi]<br />[http://www.ornek.org]<br />http://www.ornek.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Bağlantı etiketi</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.ornek.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2. seviye başlık',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Başlık metni ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Başlık metni</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3. seviye başlık',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Başlık metni ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Başlık metni</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4. seviye başlık',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Başlık metni ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Başlık metni</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5. seviye başlık',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Başlık metni =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Başlık metni</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Madde iÅŸaretli liste',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Liste öğesi<br />* Liste öğesi',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Liste öğesi</li><li>Liste öğesi</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Numaralı liste',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Liste öğesi<br /># Liste öğesi',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Liste öğesi</li><li>Liste öğesi</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Gömülü dosya',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Örnek.png|thumb|Başlık metni]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Resim yazısı</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Kaynak',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Sayfa metni.&lt;ref name="deneme"&gt;[http://www.ornek.org Bağlanı metni], ek metin.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Sayfa metni.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Aynı kaynağın ek kullanımı',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Sayfa metni.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Kaynakçayı görüntüle',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.ornek.org' class='external text' href='#'>Bağlantı metni</a>, ek metin.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Zaman damgası ile imza',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Kullanıcı adı</a> (<a href='#' title='{{#special:mytalk}}'>mesaj</a>) 15:54, 10 Haziran 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Ä°mza',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Kullanıcı adı</a> (<a href='#' title='{{#special:mytalk}}'>mesaj</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Girinti',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Normal metin<br />:Girintili metin<br />::Girintili metin',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Normal metin<dl><dd>Girintili metin<dl><dd>Girintili metin</dd></dl></dd></dl>',
+);
+
+/** Tatar (Cyrillic) (Татарча/Tatarça (Cyrillic))
+ * @author Bulatbulat
+ * @author Zahidulla
+ * @author Ильнар
+ * @author Рашат Якупов
+ */
+$messages['tt-cyrl'] = array(
+ 'wikieditor' => 'ВикитекÑтны үзгәртү буенча киңәйтелгән интерфейÑ',
+ 'wikieditor-desc' => 'ВикитекÑтны үзгәртү буенча киңәйтелгән Ð¸Ð½Ñ‚ÐµÑ„ÐµÐ¹Ñ (модуллÑÑ€ тарафынна бирелә)',
+ 'wikieditor-wikitext-tab' => 'ВикитекÑÑ‚',
+ 'wikieditor-loading' => 'Йөкләү',
+ 'wikieditor-preview-preference' => 'Ðлдан карауны ачу',
+ 'wikieditor-preview-tab' => 'Ðлдан карау',
+ 'wikieditor-preview-changes-tab' => 'Үзгәртүләр',
+ 'wikieditor-preview-loading' => 'Йөкләү...',
+ 'wikieditor-previewDialog-preference' => 'Ðлдан карау диалогын ачу',
+ 'wikieditor-previewDialog-tab' => 'Ðлдан карау',
+ 'wikieditor-previewDialog-loading' => 'Йөкләү...',
+ 'wikieditor-publish-preference' => 'БаÑкычлы куюны ачу',
+ 'wikieditor-publish-button-publish' => 'Чыгарырга',
+ 'wikieditor-publish-button-cancel' => 'Кире кагу',
+ 'wikieditor-publish-dialog-title' => ' {{SITENAME}} проектына кертергә',
+ 'wikieditor-publish-dialog-summary' => 'Үзгәртүләр таÑвирламаÑÑ‹ (барлык үзгәртүләрне кыÑка гына иттереп Ñзыгыз):',
+ 'wikieditor-publish-dialog-minor' => 'Кече үзгәртү',
+ 'wikieditor-publish-dialog-watch' => 'Бу битне күзәтү',
+ 'wikieditor-publish-dialog-publish' => 'Чыгарырга',
+ 'wikieditor-publish-dialog-goback' => 'Ðртка',
+ 'wikieditor-template-editor-preference' => 'Үрнәкләрне үзгәртү мөмкинчелеген ачу',
+ 'wikieditor-template-editor-dialog-title' => 'Үрнәкне үзгәртү',
+ 'wikieditor-template-editor-dialog-submit' => 'Яңарту',
+ 'wikieditor-template-editor-dialog-cancel' => 'Кире кагу',
+ 'wikieditor-templates-preference' => 'Үрнәкләрнең Ñшерергә',
+ 'wikieditor-toc-preference' => 'Башлыкны үзгәртү мөмкинлеген ачу',
+ 'wikieditor-toc-show' => 'Башлыкны күрÑәтү',
+ 'wikieditor-toc-hide' => 'Башлыкны Ñшерү',
+ 'wikieditor-toolbar' => 'Төзәтү панеле',
+ 'wikieditor-toolbar-desc' => 'Яңартылган үзгәртү панеле',
+ 'wikieditor-toolbar-preference' => 'Яңа үзгәртү панелен куллана башлау',
+ 'wikieditor-toolbar-dialogs-preference' => 'Сылтамалар, табыннар һәм башка җиÑемнәрне кую',
+ 'wikieditor-toolbar-loading' => 'Йөкләү...',
+ 'wikieditor-toolbar-tool-bold' => 'Куе Ñ‚Ó©Ñ',
+ 'wikieditor-toolbar-tool-bold-example' => 'Калын Ñзылыш',
+ 'wikieditor-toolbar-tool-italic' => 'Ðвышлы',
+ 'wikieditor-toolbar-tool-italic-example' => 'КурÑив Ñзылыш',
+ 'wikieditor-toolbar-tool-ilink' => 'Эчке Ñылтама',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Сылтама иÑеме',
+ 'wikieditor-toolbar-tool-xlink' => 'Тышкы Ñылтама (http:// алкушымчаÑÑ‹ турында онытмагыз)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com Ñылтама иÑеме',
+ 'wikieditor-toolbar-tool-link' => 'Сылтама',
+ 'wikieditor-toolbar-tool-link-title' => 'Сылтама Ó©ÑÑ‚Ó™Ò¯',
+ 'wikieditor-toolbar-tool-link-int' => 'Викибиткә күчү',
+ 'wikieditor-toolbar-tool-link-int-target' => ' URL-бит:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Битнең иÑеме Ñки URL-бит',
+ 'wikieditor-toolbar-tool-link-int-text' => 'КүрÑәтелүче текÑÑ‚',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'КүрÑәтелүче текÑтны Ó©Ñтәгез',
+ 'wikieditor-toolbar-tool-link-ext' => 'Тышкы веб-Ñәхифәгә',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Сылтамагның URL-бите:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Сылтаманың текÑÑ‚Ñ‹:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Сылтама Ó©ÑÑ‚Ó™Ò¯',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Кире кагу',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Мондый бит бар',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Мондый бит юк',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Мөмкин булмаган иÑем',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Тышкы Ñылтама',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Битнең барлыгын тикшерү...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Бирелгән иÑем мөмкин түгел.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Сезнең тарафтан күрÑәтелгән URL-бит вики-Ñәхифәнең ÑылтамаÑына ошаган. Сез аны Ñчке Ñылтама итәргә ризамы?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Эчке Ñылтама',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Тышкы Ñылтама',
+ 'wikieditor-toolbar-tool-link-empty' => 'Сез нәрÑәгә Ñылтама ÑÑарга кирәк икәнлеген күрÑәтмәдегез.',
+ 'wikieditor-toolbar-tool-file' => 'Куелган файл',
+ 'wikieditor-toolbar-tool-file-example' => 'МиÑал.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'ИÑкәрмә',
+ 'wikieditor-toolbar-tool-reference-example' => 'ИÑкәрмәнең текÑтын монда куегыз',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Кире кагу',
+ 'wikieditor-toolbar-tool-reference-title' => 'ИÑкәрмәне Ó©ÑÑ‚Ó™Ò¯',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Ó¨ÑÑ‚Ó™Ò¯',
+ 'wikieditor-toolbar-tool-reference-text' => 'ИÑкәрмәнең текÑÑ‚Ñ‹',
+ 'wikieditor-toolbar-tool-signature' => 'Имза һәм ул куелган вакыт',
+ 'wikieditor-toolbar-section-advanced' => 'Киңәйтелгән',
+ 'wikieditor-toolbar-tool-heading' => 'Башлык',
+ 'wikieditor-toolbar-tool-heading-1' => '1 дәрәҗә',
+ 'wikieditor-toolbar-tool-heading-2' => '2 дәрәҗә',
+ 'wikieditor-toolbar-tool-heading-3' => '3 дәрәҗә',
+ 'wikieditor-toolbar-tool-heading-4' => '4 дәрәҗә',
+ 'wikieditor-toolbar-tool-heading-5' => '5 дәрәҗә',
+ 'wikieditor-toolbar-tool-heading-example' => 'Башлыкның иÑеме',
+ 'wikieditor-toolbar-group-format' => 'Форматы',
+ 'wikieditor-toolbar-tool-ulist' => 'Тамгалы иÑемлек',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Тамгалы иÑемлекнең Ñлементы',
+ 'wikieditor-toolbar-tool-olist' => 'Санлы иÑемлек',
+ 'wikieditor-toolbar-tool-olist-example' => 'Санлы иÑемлекнең Ñлементы',
+ 'wikieditor-toolbar-tool-indent' => 'Чикләнеш',
+ 'wikieditor-toolbar-tool-indent-example' => 'Чикләнешле рәт',
+ 'wikieditor-toolbar-tool-nowiki' => 'Вики-форматлауны иÑәпкә алмаÑка',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Форматланмаган текÑтны монда Ó©Ñтәгез',
+ 'wikieditor-toolbar-tool-redirect' => 'Күчерү',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Битнең иÑеме',
+ 'wikieditor-toolbar-tool-big' => 'Зур',
+ 'wikieditor-toolbar-tool-big-example' => 'Зур текÑÑ‚',
+ 'wikieditor-toolbar-tool-small' => 'Кечкенә',
+ 'wikieditor-toolbar-tool-small-example' => 'Кечкенә текÑÑ‚',
+ 'wikieditor-toolbar-tool-superscript' => 'Дәрәҗәле юл',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Дәрәҗәле юл текÑÑ‚Ñ‹',
+ 'wikieditor-toolbar-tool-subscript' => 'ИндекÑлы юл',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ИндекÑлы юл текÑÑ‚Ñ‹',
+ 'wikieditor-toolbar-group-insert' => 'Ó¨ÑÑ‚Ó™Ò¯',
+ 'wikieditor-toolbar-tool-gallery' => 'РәÑемнәр җыентыгы',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:МиÑал.jpg|ТаÑвирлама1
+$1:МиÑал.jpg|ТаÑвирлама2',
+ 'wikieditor-toolbar-tool-newline' => 'Яңа юл',
+ 'wikieditor-toolbar-tool-table' => 'Табын',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! башлык 1
+! башлык 2
+! башлык 3
+|-
+| юл 1, күзәнәк 1
+| юл 1, күзәнәк 2
+| юл 1, күзәнәк 3
+|-
+| юл 2, күзәнәк 1
+| юл 2, күзәнәк 2
+| юл 2, күзәнәк 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Күзәнәкнең текÑÑ‚Ñ‹',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Башлыкның иÑеме',
+ 'wikieditor-toolbar-tool-table-title' => 'Табынны Ó©ÑÑ‚Ó™Ò¯',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Юллар',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Баганалар',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Башлык юлын Ó©ÑÑ‚Ó™Ò¯',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Чикләр белән ÑÑау',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Эшкәртелүче табын иттереп ÑÑау',
+ 'wikieditor-toolbar-tool-table-example' => 'Күзәнәкнең текÑÑ‚Ñ‹',
+ 'wikieditor-toolbar-tool-table-preview' => 'Ðлдан карау',
+ 'wikieditor-toolbar-tool-table-insert' => 'Ó¨ÑÑ‚Ó™Ò¯',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Кире кагу',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Бу диалог табынга $1 күзәнәктән дә артык Ó©Ñтәүне чикли',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Сез Ð´Ó©Ñ€ÐµÑ ÐºÒ¯Ð»Ó™Ð¼Ð´Ó™ баганаларны һәм юлларны күрÑәтмәгәнÑез.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Сез буш табын ÐºÑƒÑ Ð°Ð»Ð¼Ñ‹Ð¹Ñыз.',
+ 'wikieditor-toolbar-tool-replace' => 'Эзләү һәм алмаштыру',
+ 'wikieditor-toolbar-tool-replace-title' => 'Эзләү һәм алмаштыру',
+ 'wikieditor-toolbar-tool-replace-search' => 'Эзләү:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Ðлмаштыру:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Зурлыкны иÑәпләү',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Эзләү таÑмаÑын гади иттереп билгеләргә',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Бирелгәнне Ñзләү',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Бирелгәнне алмаштыру',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'БарыÑында алмаштыру',
+ 'wikieditor-toolbar-tool-replace-close' => 'Ябу',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Сезнең Ñоравыгыз буенча берни дә табылмады.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 алмаштыру үткәрелде.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Сез нәрÑÓ™ Ñзләргә икәнлеген күрÑәтмәдегез.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Сезнең тарафтан кертелгән $1 аңлатмаÑÑ‹ Ð´Ó©Ñ€ÐµÑ Ñ‚Ò¯Ð³ÐµÐ».',
+ 'wikieditor-toolbar-section-characters' => 'МахÑÑƒÑ Ñ‚Ð°Ð¼Ð³Ð°Ð»Ð°Ñ€',
+ 'wikieditor-toolbar-characters-page-latin' => 'Латин',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Латин (киңәйтелгән)',
+ 'wikieditor-toolbar-characters-page-ipa' => 'ХФӘ (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Тамгалар',
+ 'wikieditor-toolbar-characters-page-greek' => 'Грек',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Кирилл',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Гарәп',
+ 'wikieditor-toolbar-characters-page-persian' => 'ФарÑÑ‹',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Яхүд',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Бенгаль',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Телугу',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Сингаль',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Гуҗарати',
+ 'wikieditor-toolbar-characters-page-thai' => 'Таиланд',
+ 'wikieditor-toolbar-characters-page-lao' => 'ЛаоÑ',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Кһмер',
+ 'wikieditor-toolbar-section-help' => 'Ярдәм',
+ 'wikieditor-toolbar-help-heading-description' => 'ТаÑвир',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Кертелгән',
+ 'wikieditor-toolbar-help-heading-result' => 'Килеп чыккан',
+ 'wikieditor-toolbar-help-page-format' => 'Форматлаштыру',
+ 'wikieditor-toolbar-help-page-link' => 'Сылтамалар',
+ 'wikieditor-toolbar-help-page-heading' => 'Башлыклар',
+ 'wikieditor-toolbar-help-page-list' => 'ИÑемлекләр',
+ 'wikieditor-toolbar-help-page-file' => 'Файллар',
+ 'wikieditor-toolbar-help-page-reference' => 'ИÑкәрмә',
+ 'wikieditor-toolbar-help-page-discussion' => 'БәхәÑ',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Ðвышлы',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Ðвышлы кулъÑзма''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Ðвышлы кулъÑзма</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Куе Ñ‚Ó©Ñ',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Куе Ñ‚Ó©Ñтәге кулъÑзма'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Куе Ñ‚Ó©Ñтәге кулъÑзма</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Ðвышлы куе Ñ‚Ó©Ñтәге кулъÑзма',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Ðвышлы куе Ñ‚Ó©Ñтәге кулъÑзма'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<em><strong>Ðвышлы куе Ñ‚Ó©Ñтәге кулъÑзма</strong></em>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Эчке Ñылтама',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Битнең башлыгы|Сылтама текÑÑ‚Ñ‹]]<br />[[Битнең башлыгы]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Сылтаманың текÑÑ‚Ñ‹</a><br /><a href='#'>Битнең башлыгы</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Тышкы Ñылтама',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Сылтаманың текÑÑ‚Ñ‹]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Сылтаманың текÑÑ‚Ñ‹</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2 баÑкыч башлыгы',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Башлыкның текÑÑ‚Ñ‹ ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Башлыкның текÑÑ‚Ñ‹</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3 баÑкыч башлыгы',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Башлыкның текÑÑ‚Ñ‹ ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Башлыкның текÑÑ‚Ñ‹</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4 баÑкыч башлыгы',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Башлыкның текÑÑ‚Ñ‹ ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Башлыкның текÑÑ‚Ñ‹</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5 баÑкыч башлыгы',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Башлыкның текÑÑ‚Ñ‹ =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Башлыкның текÑÑ‚Ñ‹</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Тамгалы иÑемлек',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* ИÑемлекнең тәртибе<br />* ИÑемлекнең тәртибе',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>ИÑемлекнең тәртибе</li><li>ИÑемлекнең тәртибе</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Санлы иÑемлек',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# ИÑемлекнең тәртибе<br /># ИÑемлекнең тәртибе',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>ИÑемлекнең тәртибе</li><li>ИÑемлекнең тәртибе</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Куелган файл',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Ðңлатмалы текÑÑ‚]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='
+Ðңлатмалы текÑÑ‚' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Зурайтырга' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>
+Ðңлатмалы текÑÑ‚</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'ИÑкәрмә',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Битнең текÑÑ‚Ñ‹.&lt;ref name="test"&gt;[http://www.example.org Сылтаманың текÑÑ‚Ñ‹], Ó©Ñтәмә текÑÑ‚.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Битнең текÑÑ‚Ñ‹.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Бирелгән Ñылтаманы Ó©Ñтәмә куллану',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Битнең текÑÑ‚Ñ‹.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'ИÑкәрмәне күрÑәтү',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Сылтаманың текÑÑ‚Ñ‹</a>, Ó©Ñтәмә текÑÑ‚.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Имза (куелган вакыт белән)',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Кулланучы иÑеме</a> (<a href='#' title='{{#special:mytalk}}'>бәхәÑ</a>) 15:54, 10 июнь 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Имза',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Кулланучы иÑеме</a> (<a href='#' title='{{#special:mytalk}}'>бәхәÑ</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Чигенеш',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Гади текÑÑ‚<br />:Чигенешле текÑÑ‚<br />::Чигенешле текÑÑ‚',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Гади текÑÑ‚<dl><dd>Чигенешле текÑÑ‚<dl><dd>Чигенешле текÑÑ‚</dd></dl></dd></dl>',
+);
+
+/** Ukrainian (УкраїнÑька)
+ * @author AS
+ * @author Ahonc
+ * @author Olvin
+ * @author Prima klasy4na
+ * @author ТеÑÑ‚
+ */
+$messages['uk'] = array(
+ 'wikieditor' => 'Розширений Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–ÐºÑ–Ñ‚ÐµÐºÑту',
+ 'wikieditor-desc' => 'Забезпечує розширюваний Ñ–Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–ÐºÑ–Ñ‚ÐµÐºÑту Ñ– багато функціональних модулів',
+ 'wikieditor-wikitext-tab' => 'ВікітекÑÑ‚',
+ 'wikieditor-loading' => 'ЗавантаженнÑ',
+ 'wikieditor-preview-preference' => 'Увімкнути додаткову панель швидкого перемиканнÑ: "Редагувати" — "Попередній переглÑд"',
+ 'wikieditor-preview-tab' => 'Попередній переглÑд',
+ 'wikieditor-preview-changes-tab' => 'Зміни',
+ 'wikieditor-preview-loading' => 'ЗавантаженнÑ...',
+ 'wikieditor-previewDialog-preference' => 'Увімкнути діалог попереднього переглÑду',
+ 'wikieditor-previewDialog-tab' => 'Попередній переглÑд',
+ 'wikieditor-previewDialog-loading' => 'ЗавантаженнÑ...',
+ 'wikieditor-publish-preference' => 'Увімкнути публікацію крок за кроком',
+ 'wikieditor-publish-button-publish' => 'Опублікувати',
+ 'wikieditor-publish-button-cancel' => 'СкаÑувати',
+ 'wikieditor-publish-dialog-title' => 'Опублікувати на {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'ÐžÐ¿Ð¸Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ (короткий Ð¾Ð¿Ð¸Ñ Ð·Ð¼Ñ–Ð½, зроблених вами):',
+ 'wikieditor-publish-dialog-minor' => 'Ðезначне редагуваннÑ',
+ 'wikieditor-publish-dialog-watch' => 'СпоÑтерігати за цією Ñторінкою',
+ 'wikieditor-publish-dialog-publish' => 'Опублікувати',
+ 'wikieditor-publish-dialog-goback' => 'Ðазад',
+ 'wikieditor-template-editor-preference' => 'Увімкнути Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð² за допомогою форм',
+ 'wikieditor-template-editor-dialog-title' => 'Редагувати шаблон',
+ 'wikieditor-template-editor-dialog-submit' => 'Оновити',
+ 'wikieditor-template-editor-dialog-cancel' => 'СкаÑувати',
+ 'wikieditor-templates-preference' => 'Увімкнути Ð·Ð³Ð¾Ñ€Ñ‚Ð°Ð½Ð½Ñ ÑˆÐ°Ð±Ð»Ð¾Ð½Ñ–Ð²',
+ 'wikieditor-toc-preference' => 'Увімкнути додаткову панель зміÑту з можливіÑÑ‚ÑŽ навігації',
+ 'wikieditor-toc-show' => 'Показати зміÑÑ‚',
+ 'wikieditor-toc-hide' => 'Сховати зміÑÑ‚',
+ 'wikieditor-toolbar' => 'Панель заÑобів редагуваннÑ',
+ 'wikieditor-toolbar-desc' => 'Панель заÑобів Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð· покращеною ужитковіÑÑ‚ÑŽ',
+ 'wikieditor-toolbar-preference' => 'Увімкнути покращену панель заÑобів редагуваннÑ',
+ 'wikieditor-toolbar-dialogs-preference' => 'Увімкнути діалоги Ð´Ð»Ñ Ð´Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð¿Ð¾Ñилань, таблиць та іншого',
+ 'wikieditor-toolbar-hidesig' => 'Приховати кнопку підпиÑу зі Ñторінок в оÑновному проÑторі назв',
+ 'wikieditor-toolbar-loading' => 'ЗавантаженнÑ…',
+ 'wikieditor-toolbar-tool-bold' => 'Жирний',
+ 'wikieditor-toolbar-tool-bold-example' => 'Жирний текÑÑ‚',
+ 'wikieditor-toolbar-tool-italic' => 'КурÑив',
+ 'wikieditor-toolbar-tool-italic-example' => 'КурÑивний текÑÑ‚',
+ 'wikieditor-toolbar-tool-ilink' => 'Внутрішнє поÑиланнÑ',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Заголовок поÑиланнÑ',
+ 'wikieditor-toolbar-tool-xlink' => "Зовнішнє поÑÐ¸Ð»Ð°Ð½Ð½Ñ (пам'Ñтайте про Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ http://)",
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com заголовок поÑиланнÑ',
+ 'wikieditor-toolbar-tool-link' => 'ПоÑиланнÑ',
+ 'wikieditor-toolbar-tool-link-title' => 'Ð’Ñтавити поÑиланнÑ',
+ 'wikieditor-toolbar-tool-link-int' => 'Ðа вікі-Ñторінку',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Заголовок Ñторінки:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Ðазва Ñторінки або URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'ТекÑÑ‚ поÑиланнÑ:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Введіть текÑÑ‚, Ñкий має відображатиÑÑ',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ðа зовнішню веб-Ñторінку',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL-адреÑа поÑиланнÑ:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'ТекÑÑ‚ поÑиланнÑ:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Ð’Ñтавити поÑиланнÑ',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Відміна',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Сторінка Ñ–Ñнує',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Сторінки не Ñ–Ñнує',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'ÐеприпуÑтима назва',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Зовнішнє поÑиланнÑ',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Перевірка наÑвноÑÑ‚Ñ– Ñторінки...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Зазначена назва неприпуÑтима.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Зазначений вами URL виглÑдає Ñк поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° іншу вікі-Ñторінку. Ви хочете зробити його внутрішнім поÑиланнÑм?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Внутрішнє поÑиланнÑ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Зовнішнє поÑиланнÑ',
+ 'wikieditor-toolbar-tool-link-empty' => 'Ви не зазначили, на що Ñтворити поÑиланнÑ.',
+ 'wikieditor-toolbar-tool-file' => 'Вкладений файл',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'ВиноÑка',
+ 'wikieditor-toolbar-tool-reference-example' => 'Ð’Ñтавте Ñюди текÑÑ‚ виноÑки',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'СкаÑувати',
+ 'wikieditor-toolbar-tool-reference-title' => 'Ð’Ñтавити примітку',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Ð’Ñтавити',
+ 'wikieditor-toolbar-tool-reference-text' => 'ТекÑÑ‚ примітки',
+ 'wikieditor-toolbar-tool-signature' => 'ÐŸÑ–Ð´Ð¿Ð¸Ñ Ð· чаÑовою міткою',
+ 'wikieditor-toolbar-section-advanced' => 'Додатково',
+ 'wikieditor-toolbar-tool-heading' => 'Заголовки',
+ 'wikieditor-toolbar-tool-heading-1' => '1 рівень',
+ 'wikieditor-toolbar-tool-heading-2' => '2 рівень',
+ 'wikieditor-toolbar-tool-heading-3' => '3 рівень',
+ 'wikieditor-toolbar-tool-heading-4' => '4 рівень',
+ 'wikieditor-toolbar-tool-heading-5' => '5 рівень',
+ 'wikieditor-toolbar-tool-heading-example' => 'ТекÑÑ‚ заголовка',
+ 'wikieditor-toolbar-group-format' => 'Формат',
+ 'wikieditor-toolbar-tool-ulist' => 'Маркований ÑпиÑок',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Елемент маркованого ÑпиÑку',
+ 'wikieditor-toolbar-tool-olist' => 'Ðумерований ÑпиÑок',
+ 'wikieditor-toolbar-tool-olist-example' => 'Елемент нумерованого ÑпиÑку',
+ 'wikieditor-toolbar-tool-indent' => 'Ðбзац',
+ 'wikieditor-toolbar-tool-indent-example' => 'РÑдок з абзацу',
+ 'wikieditor-toolbar-tool-nowiki' => 'Ігнорувати вікі-форматуваннÑ',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Ð’Ñтавте тут невідформатований текÑÑ‚',
+ 'wikieditor-toolbar-tool-redirect' => 'ПеренаправленнÑ',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Ðазва цільової Ñторінки',
+ 'wikieditor-toolbar-tool-big' => 'Великий',
+ 'wikieditor-toolbar-tool-big-example' => 'Великий текÑÑ‚',
+ 'wikieditor-toolbar-tool-small' => 'Малий',
+ 'wikieditor-toolbar-tool-small-example' => 'Малий текÑÑ‚',
+ 'wikieditor-toolbar-tool-superscript' => 'Верхній індекÑ',
+ 'wikieditor-toolbar-tool-superscript-example' => 'ТекÑÑ‚ у верхньому індекÑÑ–',
+ 'wikieditor-toolbar-tool-subscript' => 'Ðижній індекÑ',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ТекÑÑ‚ нижнього індекÑу',
+ 'wikieditor-toolbar-group-insert' => 'Ð’Ñтавити',
+ 'wikieditor-toolbar-tool-gallery' => 'ГалереÑ',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|ОпиÑ1
+$1:Example.jpg|ОпиÑ2',
+ 'wikieditor-toolbar-tool-newline' => 'Ðовий Ñ€Ñдок',
+ 'wikieditor-toolbar-tool-table' => 'ТаблицÑ',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! заголовок 1
+! заголовок 2
+! заголовок 3
+|-
+| Ñ€Ñдок 1, комірка 1
+| Ñ€Ñдок 1, комірка 2
+| Ñ€Ñдок 1, комірка 3
+|-
+| Ñ€Ñдок 2, комірка 1
+| Ñ€Ñдок 2, комірка 2
+| Ñ€Ñдок 2, комірка 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ТекÑÑ‚ комірки',
+ 'wikieditor-toolbar-tool-table-example-header' => 'ТекÑÑ‚ заголовка',
+ 'wikieditor-toolbar-tool-table-title' => 'Ð’Ñтавити таблицю',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'РÑдків',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Стовпців',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Додати Ñ€Ñдок заголовка',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'ÐžÑ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Ð· рамками',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Додати до таблиці можливіÑÑ‚ÑŒ ÑортуваннÑ',
+ 'wikieditor-toolbar-tool-table-example' => 'Приклад',
+ 'wikieditor-toolbar-tool-table-preview' => 'Попередній переглÑд',
+ 'wikieditor-toolbar-tool-table-insert' => 'Ð’Ñтавити',
+ 'wikieditor-toolbar-tool-table-cancel' => 'СкаÑувати',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Цей діалог не дозволÑÑ” вÑтавити таблицю з більш ніж $1 комірок.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Ви не вказали необхідного чиÑла Ñ€Ñдків Ñ– Ñтовпців.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ви не можете вÑтавити таблицю з нульовою кількіÑÑ‚ÑŽ Ñ€Ñдків або Ñтовпців.',
+ 'wikieditor-toolbar-tool-replace' => 'Пошук і заміна',
+ 'wikieditor-toolbar-tool-replace-title' => 'Пошук і заміна',
+ 'wikieditor-toolbar-tool-replace-search' => 'Шукати:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Замінити на:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Враховувати регіÑÑ‚Ñ€',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Вважати Ñ€Ñдок пошуку регулÑрним виразом',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Знайти наÑтупний',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Замінити наÑтупний',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Замінити вÑÑ–',
+ 'wikieditor-toolbar-tool-replace-close' => 'Закрити',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'За Вашим запитом нічого не знайдено.',
+ 'wikieditor-toolbar-tool-replace-success' => 'Зроблено замін: $1.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ви не зазначили, що треба шукати.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Введений вами регулÑрний вираз помилковий: $1',
+ 'wikieditor-toolbar-section-characters' => 'Спеціальні Ñимволи',
+ 'wikieditor-toolbar-characters-page-latin' => 'ЛатинÑькі',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Розширена латинÑька',
+ 'wikieditor-toolbar-characters-page-ipa' => 'МФР(IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Символи',
+ 'wikieditor-toolbar-characters-page-greek' => 'Грецькі',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'КирилицÑ',
+ 'wikieditor-toolbar-characters-page-arabic' => 'ÐрабÑькі',
+ 'wikieditor-toolbar-characters-page-persian' => 'ПерÑькі',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Іврит',
+ 'wikieditor-toolbar-characters-page-bangla' => 'БенгальÑькі',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Телугу',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'СингальÑька',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Гуджараті',
+ 'wikieditor-toolbar-characters-page-thai' => 'ТайÑькі',
+ 'wikieditor-toolbar-characters-page-lao' => 'ЛаоÑькі',
+ 'wikieditor-toolbar-characters-page-khmer' => 'КхмерÑькі',
+ 'wikieditor-toolbar-section-help' => 'Довідка',
+ 'wikieditor-toolbar-help-heading-description' => 'ОпиÑ',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Що ви вводите',
+ 'wikieditor-toolbar-help-heading-result' => 'Що ви отримуєте',
+ 'wikieditor-toolbar-help-page-format' => 'ФорматуваннÑ',
+ 'wikieditor-toolbar-help-page-link' => 'ПоÑиланнÑ',
+ 'wikieditor-toolbar-help-page-heading' => 'Заголовки',
+ 'wikieditor-toolbar-help-page-list' => 'СпиÑки',
+ 'wikieditor-toolbar-help-page-file' => 'Файли',
+ 'wikieditor-toolbar-help-page-reference' => 'ВиноÑки',
+ 'wikieditor-toolbar-help-page-discussion' => 'ОбговореннÑ',
+ 'wikieditor-toolbar-help-content-italic-description' => 'КурÑив',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''КурÑив''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>КурÑив</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Жирний',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Жирний текÑÑ‚'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Жирний текÑÑ‚</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Жирний курÑив',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Жирний курÑивний текÑÑ‚'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Жирний курÑивний текÑÑ‚</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Внутрішнє поÑиланнÑ',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Заголовок Ñторінки|ТекÑÑ‚ поÑиланнÑ]]<br />[[Заголовок Ñторінки]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>ТекÑÑ‚ поÑиланнÑ</a><br /><a href='#'>Заголовок Ñторінки</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Зовнішнє поÑиланнÑ',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org ТекÑÑ‚ поÑиланнÑ]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>ТекÑÑ‚ поÑиланнÑ</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Заголовок 2<sup>го</sup> рівнÑ',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== ТекÑÑ‚ заголовка ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>ТекÑÑ‚ заголовка</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Заголовок 3<sup>го</sup> рівнÑ',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== ТекÑÑ‚ заголовка ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>ТекÑÑ‚ заголовка</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Заголовок 4<sup>го</sup> рівнÑ',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== ТекÑÑ‚ заголовка ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>ТекÑÑ‚ заголовка</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Заголовок 5<sup>го</sup> рівнÑ',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== ТекÑÑ‚ заголовка =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>ТекÑÑ‚ заголовка</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Маркований ÑпиÑок',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Елемент ÑпиÑку<br />* Елемент ÑпиÑку',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Елемент ÑпиÑку</li><li>Елемент ÑпиÑку</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Ðумерований ÑпиÑок',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Елемент ÑпиÑку<br /># Елемент ÑпиÑку',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Елемент ÑпиÑку</li><li>Елемент ÑпиÑку</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Вбудований файл',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|ПоÑÑнювальний текÑÑ‚]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='ПоÑÑнювальний текÑÑ‚' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Збільшити' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>ПоÑÑнювальний текÑÑ‚</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'ВиноÑка',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'ТекÑÑ‚ Ñторінки&lt;ref name="test"&gt;[http://www.example.org ТекÑÑ‚ поÑиланнÑ], додатковий текÑÑ‚.&lt;/ref&gt;.',
+ 'wikieditor-toolbar-help-content-reference-result' => "ТекÑÑ‚ Ñторінки.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Додаткове викориÑÑ‚Ð°Ð½Ð½Ñ Ñ‚Ñ–Ñ”Ñ— ж виноÑки',
+ 'wikieditor-toolbar-help-content-rereference-result' => "ТекÑÑ‚ Ñторінки.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Показати виноÑки',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>ТекÑÑ‚ поÑиланнÑ</a>, додатковий текÑÑ‚.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ÐŸÑ–Ð´Ð¿Ð¸Ñ Ð· чаÑовою міткою',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача</a> (<a href='#' title='{{#special:mytalk}}'>обговореннÑ</a>) 15:54, 10 Ñ‡ÐµÑ€Ð²Ð½Ñ 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ПідпиÑ',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача</a> (<a href='#' title='{{#special:mytalk}}'>обговореннÑ</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'ВідÑтуп',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Звичайний текÑÑ‚<br />:ТекÑÑ‚ з відÑтупом<br />::ТекÑÑ‚ з відÑтупом',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Звичайний текÑÑ‚<dl><dd>ТекÑÑ‚ з відÑтупом<dl><dd>ТекÑÑ‚ з відÑтупом</dd></dl></dd></dl>',
+);
+
+/** Urdu (اردو) */
+$messages['ur'] = array(
+ 'wikieditor-template-editor-dialog-cancel' => 'منسوخ',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'منسوخ',
+);
+
+/** Vèneto (Vèneto)
+ * @author Candalua
+ * @author Vajotwo
+ */
+$messages['vec'] = array(
+ 'wikieditor' => 'Interfacia avansada de modifica testo wiki',
+ 'wikieditor-desc' => 'Fornisse na interfacia avansada de modifica testo wiki e vari moduli funsionali',
+ 'wikieditor-wikitext-tab' => 'Testo wiki',
+ 'wikieditor-loading' => 'Drio cargar...',
+ 'wikieditor-preview-preference' => "Ativa l'anteprima parte par parte",
+ 'wikieditor-preview-tab' => 'Anteprima',
+ 'wikieditor-preview-changes-tab' => 'Canbiamenti',
+ 'wikieditor-preview-loading' => "So' drio cargar...",
+ 'wikieditor-previewDialog-preference' => 'Abilita la finestra de dialogo de anteprima',
+ 'wikieditor-previewDialog-tab' => 'Anteprima',
+ 'wikieditor-previewDialog-loading' => "So' drio cargar...",
+ 'wikieditor-publish-preference' => 'Intaca la publicassion un toco a la olta',
+ 'wikieditor-publish-button-publish' => 'Pùblica',
+ 'wikieditor-publish-button-cancel' => 'Anula',
+ 'wikieditor-publish-dialog-title' => 'Pùblica su {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Somario de la modifica (descrivi brevemente i canbiamenti che te ghè fato):',
+ 'wikieditor-publish-dialog-minor' => 'Modifica picenina',
+ 'wikieditor-publish-dialog-watch' => "Tien d'ocio sta pagina",
+ 'wikieditor-publish-dialog-publish' => 'Pùblica',
+ 'wikieditor-publish-dialog-goback' => 'Torna indrìo',
+ 'wikieditor-template-editor-preference' => 'Intaca par i modèi wiki la modifica basà sui mòduli',
+ 'wikieditor-template-editor-dialog-title' => 'Modifega modeło',
+ 'wikieditor-template-editor-dialog-submit' => 'Ajorna',
+ 'wikieditor-template-editor-dialog-cancel' => 'Anuła',
+ 'wikieditor-templates-preference' => 'Abiłita ła funsion par nascondere i modełi',
+ 'wikieditor-toc-preference' => "Ativa l'indice navigabile",
+ 'wikieditor-toc-show' => 'Fà védar el contenuto',
+ 'wikieditor-toc-hide' => 'Scondi el contenuto',
+ 'wikieditor-toolbar' => 'Bara dei strumenti de modifica',
+ 'wikieditor-toolbar-desc' => 'Modifica bara dei strumenti de la pagina co na magiore usabilità',
+ 'wikieditor-toolbar-preference' => 'Abilita bara dei strumenti de modifica avansada',
+ 'wikieditor-toolbar-dialogs-preference' => 'Intacar i ajuti par zontar colegamenti, tabèle e altro',
+ 'wikieditor-toolbar-loading' => "So' drio cargar...",
+ 'wikieditor-toolbar-tool-bold' => 'Grasseto',
+ 'wikieditor-toolbar-tool-bold-example' => 'Testo in grasseto',
+ 'wikieditor-toolbar-tool-italic' => 'Corsivo',
+ 'wikieditor-toolbar-tool-italic-example' => 'Testo in corsivo',
+ 'wikieditor-toolbar-tool-ilink' => 'Colegamento interno',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Titolo del colegamento',
+ 'wikieditor-toolbar-tool-xlink' => 'Colegamento esterno (ricòrdete el prefisso http:// )',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.esenpio.com titolo del colegamento',
+ 'wikieditor-toolbar-tool-link' => 'Colegamento',
+ 'wikieditor-toolbar-tool-link-title' => 'Inserissi colegamento',
+ 'wikieditor-toolbar-tool-link-int' => 'a na pagina wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'titolo de la pagina:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Titolo de la pagina o URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Testo del colegamento:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Inserissi el testo che te vol che se veda',
+ 'wikieditor-toolbar-tool-link-ext' => 'a na pagina web esterna',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Indirisso del colegamento:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Testo del colegamento:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Inserissi colegamento',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Anula',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'La pagina la esiste zà',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'La pagina no la esiste',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Titolo mia valido',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Colegamento par fora',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => "So' drio controlar se la pagina la esiste o no...",
+ 'wikieditor-toolbar-tool-link-int-invalid' => "El titolo che te ghè indicà no'l xe mia valido.",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => "L'URL che te ghè inserìo pararìa che el ponta verso de na pagina wiki difarente. Vuto farlo deventar un colegamento interno?",
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Colegamento interno',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Colegamento esterno',
+ 'wikieditor-toolbar-tool-link-empty' => 'No te ghè messo gnente a cui pontar.',
+ 'wikieditor-toolbar-tool-file' => 'File incorporado',
+ 'wikieditor-toolbar-tool-file-example' => 'Esenpio.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Nota',
+ 'wikieditor-toolbar-tool-reference-example' => 'Inserissi qua el testo de la nota',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Anuła',
+ 'wikieditor-toolbar-tool-reference-title' => 'Inserissi nota',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Inserissi',
+ 'wikieditor-toolbar-tool-reference-text' => 'Testo de Å‚a nota',
+ 'wikieditor-toolbar-tool-signature' => 'Firma e data',
+ 'wikieditor-toolbar-section-advanced' => 'Avansada',
+ 'wikieditor-toolbar-tool-heading' => 'Intestassion',
+ 'wikieditor-toolbar-tool-heading-1' => 'Livèl 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Livèl 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Livèl 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Livèl 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Livèl 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Titolo sezion',
+ 'wikieditor-toolbar-group-format' => 'Formato',
+ 'wikieditor-toolbar-tool-ulist' => 'Elenco puntà',
+ 'wikieditor-toolbar-tool-ulist-example' => "Elemento de l'elenco puntà",
+ 'wikieditor-toolbar-tool-olist' => 'Elenco numarà',
+ 'wikieditor-toolbar-tool-olist-example' => "Elemento de l'elenco numarà",
+ 'wikieditor-toolbar-tool-indent' => 'Rientro',
+ 'wikieditor-toolbar-tool-indent-example' => 'Riga rientrà',
+ 'wikieditor-toolbar-tool-nowiki' => 'Ignora formataxion wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Inserissi el testo da no formatare',
+ 'wikieditor-toolbar-tool-redirect' => "Rinvia a n'altra pajina",
+ 'wikieditor-toolbar-tool-redirect-example' => 'Nome de Å‚a pajina de destinaxion',
+ 'wikieditor-toolbar-tool-big' => 'Grando',
+ 'wikieditor-toolbar-tool-big-example' => 'Testo grando',
+ 'wikieditor-toolbar-tool-small' => 'Picenin',
+ 'wikieditor-toolbar-tool-small-example' => 'Testo picenin',
+ 'wikieditor-toolbar-tool-superscript' => 'Àpice',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Testo in àpice',
+ 'wikieditor-toolbar-tool-subscript' => 'Pèdice',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Testo in pèdice',
+ 'wikieditor-toolbar-group-insert' => 'Inserissi',
+ 'wikieditor-toolbar-tool-gallery' => 'Galerìa fotografica',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Esenpio.jpg|Didascalia1
+$1:Esenpio.jpg|Didascalia2',
+ 'wikieditor-toolbar-tool-newline' => 'Riga nova',
+ 'wikieditor-toolbar-tool-table' => 'Tabèla',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! intestassion 1
+! intestassion 2
+! intestassion 3
+|-
+| riga 1, casèla 1
+| riga 1, casèla 2
+| riga 1, casèla 3
+|-
+| riga 2, casèla 1
+| riga 2, casèla 2
+| riga 2, casèla 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Testo de la casèla',
+ 'wikieditor-toolbar-tool-table-example-header' => "Testo de l'intestassion",
+ 'wikieditor-toolbar-tool-table-title' => 'Inserissi na tabèla',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Lìnie',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Colone',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Includi la riga de intestassion',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Stile coi bordi',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Tabèla ordinabile',
+ 'wikieditor-toolbar-tool-table-example' => 'Testo de la casèla',
+ 'wikieditor-toolbar-tool-table-preview' => 'Anteprima',
+ 'wikieditor-toolbar-tool-table-insert' => 'Inserissi',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Anùla',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Co sto comando no se pole inserir na tabèla con piassè de $1 casèle.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'No te ghè inserìo un nùmaro valido de righe o colòne.',
+ 'wikieditor-toolbar-tool-table-zero' => 'No te poli inserir na tabèla con zero righe o colòne.',
+ 'wikieditor-toolbar-tool-replace' => 'Serca e sostituìssi',
+ 'wikieditor-toolbar-tool-replace-title' => 'Serca e sostituìssi',
+ 'wikieditor-toolbar-tool-replace-search' => 'Serca:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Sostituìssi con:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Corispondensa maiuscolo/minuscolo',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Testo de la riserca come espression regolare',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Cata el pròssimo',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Sostituìssi el pròssimo',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Sostituìssi tuto',
+ 'wikieditor-toolbar-tool-replace-close' => 'Sara',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'No gavemo catà gnente che corisponde a quel che te serchi.',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 sostitussion fate.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'No te ghè inserìo gnente da sercar.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => "L'espression regolare che te ghè inserìo no la xe mia valida: $1",
+ 'wikieditor-toolbar-section-characters' => 'Caràteri speciali',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latìn',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latìn esteso',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Sìnboli',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grego',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Cirìlico',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Àrabo',
+ 'wikieditor-toolbar-characters-page-persian' => 'Persian',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Ebràico',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bengałexe',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Singalese',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thaiłandexe',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'Ajuto',
+ 'wikieditor-toolbar-help-heading-description' => 'Descrission',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Quel che te scrivi',
+ 'wikieditor-toolbar-help-heading-result' => 'Quel che te otien',
+ 'wikieditor-toolbar-help-page-format' => 'Formatassion',
+ 'wikieditor-toolbar-help-page-link' => 'Colegamenti',
+ 'wikieditor-toolbar-help-page-heading' => 'Intestassion',
+ 'wikieditor-toolbar-help-page-list' => 'Liste',
+ 'wikieditor-toolbar-help-page-file' => 'File',
+ 'wikieditor-toolbar-help-page-reference' => 'Note',
+ 'wikieditor-toolbar-help-page-discussion' => 'Discussion',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Corsivo',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Testo in corsivo''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Testo in corsivo</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Grasseto',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Testo in grasseto'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Testo in grasseto</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Grasseto e corsivo',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Testo in grasseto e corsivo'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Testo in grasseto e corsivo</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Colegamento interno',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Page title|Eticheta colegamento]]<br />[[Page title]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Eticheta colegamento</a><br /><a href='#'>Titolo pagina</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Colegamento esterno',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.esenpio.org Eticheta colegamento]<br />[http://www.esenpio.org]<br />http://www.esenpio.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Eticheta colegamento</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.esenpio.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Intestassion de secondo livèl',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Titolo de la sezion ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Titolo de la sezion</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Intestassion de terso livèl',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Titolo de la sezion ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Titolo de la sezion</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Intestassion de quarto livèl',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Titolo de la sezion ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Titolo de la sezion</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Intestassion de quinto livèl',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Titolo de la sezion =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>Titolo de la sezion</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Elenco pontà',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => "* Elemento de l'elenco<br />* Elemento de l'elenco",
+ 'wikieditor-toolbar-help-content-ulist-result' => "<ul><li>Elemento de l'elenco</li><li>Elemento de l'elenco</li></ul>",
+ 'wikieditor-toolbar-help-content-olist-description' => 'Elenco numarà',
+ 'wikieditor-toolbar-help-content-olist-syntax' => "# Elemento de l'elenco<br /># Elemento de l'elenco",
+ 'wikieditor-toolbar-help-content-olist-result' => "<ol><li>Elemento de l'elenco</li><li>Elemento de l'elenco</li></ol>",
+ 'wikieditor-toolbar-help-content-file-description' => 'File incorporado',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Testo de la didascalia]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Caption text' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Testo de la didascalia</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Nota',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Testo de la pagina.&lt;ref name="test"&gt;[http://www.esenpio.org Testo del colegamento], altro testo in più.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "Testo de la pagina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Doparar ancora la stessa nota',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Testo de la pagina.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Mostra le note',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.esenpio.org' class='external text' href='#'>Testo del colegamento</a>, altro testo in più.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Firma con data e ora',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Nome utente</a> (<a href='#' title='{{#special:mytalk}}'>discussion</a>) 15:54, 10 giu 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Firma',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Nome utente</a> (<a href='#' title='{{#special:mytalk}}'>discussion</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Rientro',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Testo normal<br />:Testo rientrà<br />::Testo rientra',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Testo normal<dl><dd>Testo rientrà<dl><dd>Testo rientrà</dd></dl></dd></dl>',
+);
+
+/** Veps (Vepsan kel') */
+$messages['vep'] = array(
+ 'wikieditor-toolbar-tool-bold' => 'Lihavoitud',
+ 'wikieditor-toolbar-tool-bold-example' => 'Lihavoitud tekst',
+ 'wikieditor-toolbar-tool-link' => 'Kosketuz',
+ 'wikieditor-toolbar-tool-link-title' => 'Ližada kosketuz',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Kosketusen URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Kosketusen tekst:',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Heitta',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Vär nimi',
+ 'wikieditor-toolbar-tool-file' => 'Mülütadud fail',
+ 'wikieditor-toolbar-group-format' => 'Nimikirjutez',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Markiruidud nimikirjutez',
+ 'wikieditor-toolbar-tool-olist' => 'Nomeroitud nimikirjutez',
+ 'wikieditor-toolbar-tool-big' => "Sur'",
+ 'wikieditor-toolbar-tool-big-example' => 'Järed tekst',
+ 'wikieditor-toolbar-tool-small' => "Pen'",
+ 'wikieditor-toolbar-tool-small-example' => "Pen' tekst",
+ 'wikieditor-toolbar-group-insert' => 'Ližata',
+ 'wikieditor-toolbar-tool-gallery' => 'Kuviden gallerei',
+ 'wikieditor-toolbar-tool-newline' => "Uz' rivi",
+ 'wikieditor-toolbar-tool-table-title' => 'Ližada tablut',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rivid',
+ 'wikieditor-toolbar-tool-table-insert' => 'Ližata',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Heitta',
+ 'wikieditor-toolbar-tool-replace-close' => 'Saubata',
+ 'wikieditor-toolbar-characters-page-latin' => 'Latinalaine',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Levitadud latinalaine',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Simvolad',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grekalaine',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kirilline',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Arabine',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Evrejine',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-section-help' => 'Abu',
+ 'wikieditor-toolbar-help-page-link' => 'Kosketused',
+ 'wikieditor-toolbar-help-page-list' => 'Nimikirjutesed',
+ 'wikieditor-toolbar-help-page-file' => 'Failad',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Lihavoitud',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Lihavoitud tekst'''",
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Südäikosketuz',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Irdkosketuz',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Pälkirjutesen tekst ==',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Pälkirjutesen tekst ===',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Pälkirjutesen tekst ====',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Pälkirjutesen tekst =====',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Markiruidud nimikirjutez',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Nomeroitud nimikirjutez',
+ 'wikieditor-toolbar-help-content-file-description' => 'Mülütadud fail',
+ 'wikieditor-toolbar-help-content-signature-description' => 'Allekirjutez',
+);
+
+/** Vietnamese (Tiếng Việt)
+ * @author Minh Nguyen
+ * @author Vinhtantran
+ */
+$messages['vi'] = array(
+ 'wikieditor' => 'Giao diện sửa đổi văn bản wiki nâng cao',
+ 'wikieditor-desc' => 'Cung cấp giao diện sá»­a đổi văn bản wiki có thể mở rá»™ng, cÅ©ng nhÆ° nhiá»u tính năng khác',
+ 'wikieditor-wikitext-tab' => 'Mã wiki',
+ 'wikieditor-loading' => 'Äang tải',
+ 'wikieditor-preview-preference' => 'Cho phép so sánh cạnh nhau',
+ 'wikieditor-preview-tab' => 'Xem trÆ°á»›c',
+ 'wikieditor-preview-changes-tab' => 'Các thay đổi',
+ 'wikieditor-preview-loading' => 'Äang tải…',
+ 'wikieditor-previewDialog-preference' => 'Mở hộp thoại để xem trước',
+ 'wikieditor-previewDialog-tab' => 'Xem trÆ°á»›c',
+ 'wikieditor-previewDialog-loading' => 'Äang tải…',
+ 'wikieditor-publish-preference' => 'Xuất bản từng bước một',
+ 'wikieditor-publish-button-publish' => 'Xuất bản',
+ 'wikieditor-publish-button-cancel' => 'Hủy bá»',
+ 'wikieditor-publish-dialog-title' => 'Xuất bản tới {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Tóm lược sá»­a đổi (miêu tả ngắn gá»n các thay đổi của bạn):',
+ 'wikieditor-publish-dialog-minor' => 'Sá»­a đổi nhá»',
+ 'wikieditor-publish-dialog-watch' => 'Theo dõi trang này',
+ 'wikieditor-publish-dialog-publish' => 'Xuất bản',
+ 'wikieditor-publish-dialog-goback' => 'Trở lại',
+ 'wikieditor-template-editor-preference' => 'Sửa đổi bản mẫu wiki trong biểu mẫu',
+ 'wikieditor-template-editor-dialog-title' => 'Sửa đổi bản mẫu',
+ 'wikieditor-template-editor-dialog-submit' => 'Cập nhật',
+ 'wikieditor-template-editor-dialog-cancel' => 'Hủy bá»',
+ 'wikieditor-templates-preference' => 'Cho phép làm xẹp các bản mẫu',
+ 'wikieditor-toc-preference' => 'Sử dụng mục lục dễ duyệt tìm',
+ 'wikieditor-toc-show' => 'Hiện mục lục',
+ 'wikieditor-toc-hide' => 'Ẩn mục lục',
+ 'wikieditor-toolbar' => 'Thanh công cụ sửa đổi',
+ 'wikieditor-toolbar-desc' => 'Thanh công cụ ở trang sửa đổi được cải tiến để dễ sử dụng hơn',
+ 'wikieditor-toolbar-preference' => 'Sử dụng thanh công cụ sửa đổi nâng cao',
+ 'wikieditor-toolbar-dialogs-preference' => 'Mở hộp thoại để chèn liên kết, bảng, v.v.',
+ 'wikieditor-toolbar-hidesig' => 'Ẩn nút ký tên từ các trang trong không gian tên chính',
+ 'wikieditor-toolbar-loading' => 'Äang tải…',
+ 'wikieditor-toolbar-tool-bold' => 'Äậm',
+ 'wikieditor-toolbar-tool-bold-example' => 'Chữ đậm',
+ 'wikieditor-toolbar-tool-italic' => 'Xiên',
+ 'wikieditor-toolbar-tool-italic-example' => 'Chữ xiên',
+ 'wikieditor-toolbar-tool-ilink' => 'Liên kết trong',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Tựa đỠliên kết',
+ 'wikieditor-toolbar-tool-xlink' => 'Liên kết ngoài (nhớ ghi http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.vidu.com tựa đỠliên kết',
+ 'wikieditor-toolbar-tool-link' => 'Liên kết',
+ 'wikieditor-toolbar-tool-link-title' => 'Chèn liên kết',
+ 'wikieditor-toolbar-tool-link-int' => 'Äến má»™t trang wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Tá»±a trang:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Tên trang hoặc URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Văn bản liên kết:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'Hãy nhập văn bản để hiển thị',
+ 'wikieditor-toolbar-tool-link-ext' => 'Ra trang web bên ngoài',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'Liên kết URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Văn bản liên kết:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Chèn liên kết',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Hủy bá»',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Trang tồn tại',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Trang không tồn tại',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Tá»±a sai',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'Liên kết ngoài',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Kiểm tra trang đã tồn tại chưa...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Tựa trang chỉ định không hợp lệ.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'Hình nhÆ° bạn đã chá»n URL chỉ đến trang wiki khác. Bạn có muốn biến nó thành liên kết ná»™i bá»™ không?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Liên kết nội bộ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Liên kết ngoài',
+ 'wikieditor-toolbar-tool-link-empty' => 'Bạn chưa nhập nơi nào để cho liên kết dẫn tới.',
+ 'wikieditor-toolbar-tool-file' => 'Chèn tập tin',
+ 'wikieditor-toolbar-tool-file-example' => 'Ví dụ.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Chú thích tham khảo',
+ 'wikieditor-toolbar-tool-reference-example' => 'Ghi chú tại đây',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Hủy bá»',
+ 'wikieditor-toolbar-tool-reference-title' => 'Ghi chú',
+ 'wikieditor-toolbar-tool-reference-insert' => 'Chèn',
+ 'wikieditor-toolbar-tool-reference-text' => 'Lá»i chú thích',
+ 'wikieditor-toolbar-tool-signature' => 'Chữ ký có ngày',
+ 'wikieditor-toolbar-section-advanced' => 'Nâng cao',
+ 'wikieditor-toolbar-tool-heading' => 'Äá» mục',
+ 'wikieditor-toolbar-tool-heading-1' => 'Cấp 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Cấp 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Cấp 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Cấp 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Cấp 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Câu đỠmục',
+ 'wikieditor-toolbar-group-format' => 'Äịnh dạng',
+ 'wikieditor-toolbar-tool-ulist' => 'Danh sách không đánh số',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Mục danh sách',
+ 'wikieditor-toolbar-tool-olist' => 'Danh sách đánh số',
+ 'wikieditor-toolbar-tool-olist-example' => 'Mục danh sách số',
+ 'wikieditor-toolbar-tool-indent' => 'Tăng lá»',
+ 'wikieditor-toolbar-tool-indent-example' => 'Dòng được tăng lá»',
+ 'wikieditor-toolbar-tool-nowiki' => 'Tắt định dạng wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'Chèn văn bản thuần tại đây',
+ 'wikieditor-toolbar-tool-redirect' => 'Äổi hÆ°á»›ng',
+ 'wikieditor-toolbar-tool-redirect-example' => 'Tên của trang đổi hướng tới',
+ 'wikieditor-toolbar-tool-big' => 'Lá»›n',
+ 'wikieditor-toolbar-tool-big-example' => 'Văn bản lớn',
+ 'wikieditor-toolbar-tool-small' => 'Nhá»',
+ 'wikieditor-toolbar-tool-small-example' => 'Văn bản nhá»',
+ 'wikieditor-toolbar-tool-superscript' => 'Viết lên trên',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Chữ được viết lên trên',
+ 'wikieditor-toolbar-tool-subscript' => 'Viết xuống dưới',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Chữ được viết xuống dưới',
+ 'wikieditor-toolbar-group-insert' => 'Chèn',
+ 'wikieditor-toolbar-tool-gallery' => 'Album hình ảnh',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Ví dụ.jpg|Chú thích 1
+$1:Ví dụ.jpg|Chú thích 2',
+ 'wikieditor-toolbar-tool-newline' => 'Dòng mới',
+ 'wikieditor-toolbar-tool-table' => 'Bảng',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! tiêu đỠ1
+! tiêu đỠ2
+! tiêu đỠ3
+|-
+| hàng 1, cột 1
+| hàng 1, cột 2
+| hàng 1, cột 3
+|-
+| hàng 2, cột 1
+| hàng 2, cột 2
+| hàng 2, cột 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Văn bản ô',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Văn bản tiêu Ä‘á»',
+ 'wikieditor-toolbar-tool-table-title' => 'Chèn bảng',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Hàng',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Cá»™t',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Có hàng tiêu Ä‘á»',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Vẽ khung',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Cho phép tự động xếp bảng',
+ 'wikieditor-toolbar-tool-table-example' => 'Văn bản ô',
+ 'wikieditor-toolbar-tool-table-preview' => 'Xem trÆ°á»›c',
+ 'wikieditor-toolbar-tool-table-insert' => 'Chèn',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Hủy bá»',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Không thể dùng hộp thoại này để chèn bảng có hơn $1 ô.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Bạn đã nhập số hàng hay cột không hợp lệ.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Không thể chèn bảng không có hàng hay cột nào.',
+ 'wikieditor-toolbar-tool-replace' => 'Tìm và thay thế',
+ 'wikieditor-toolbar-tool-replace-title' => 'Tìm và thay thế',
+ 'wikieditor-toolbar-tool-replace-search' => 'Tìm kiếm:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Thay thế bằng:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Phân biệt hoa thÆ°á»ng',
+ 'wikieditor-toolbar-tool-replace-regex' => 'Xem chuỗi tìm kiếm là biểu thức chính quy',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Tìm tiếp',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Thay tiếp',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Thay tất cả',
+ 'wikieditor-toolbar-tool-replace-close' => 'Äóng',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Không tìm thấy',
+ 'wikieditor-toolbar-tool-replace-success' => 'Äã thá»±c hiện $1 thay thế.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Bạn chưa nhập gì để tìm kiếm.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'Biểu thức chính quy do bạn nhập vào không hợp lệ: $1',
+ 'wikieditor-toolbar-section-characters' => 'Ký tự đặc biệt',
+ 'wikieditor-toolbar-characters-page-latin' => 'La tinh',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'La tinh mở rộng',
+ 'wikieditor-toolbar-characters-page-ipa' => 'Phiên âm quốc tế',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Ký hiệu',
+ 'wikieditor-toolbar-characters-page-greek' => 'Hy Lạp',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kirin',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Ả Rập',
+ 'wikieditor-toolbar-characters-page-persian' => 'Ba TÆ°',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hê-brơ',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarat',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thái',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lào',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khơ-me',
+ 'wikieditor-toolbar-section-help' => 'Trợ giúp',
+ 'wikieditor-toolbar-help-heading-description' => 'Miêu tả',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Bạn nhập',
+ 'wikieditor-toolbar-help-heading-result' => 'Nhận được',
+ 'wikieditor-toolbar-help-page-format' => 'Äịnh dạng',
+ 'wikieditor-toolbar-help-page-link' => 'Liên kết',
+ 'wikieditor-toolbar-help-page-heading' => 'Äá» mục',
+ 'wikieditor-toolbar-help-page-list' => 'Danh sách',
+ 'wikieditor-toolbar-help-page-file' => 'Tập tin',
+ 'wikieditor-toolbar-help-page-reference' => 'Tham khảo',
+ 'wikieditor-toolbar-help-page-discussion' => 'Thảo luận',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Xiên',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''Chữ xiên''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>Chữ xiên</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Äậm',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''Chữ đậm'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>Chữ đậm</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Äậm &amp; xiên',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''Văn bản đậm &amp; xiên'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>Văn bản đậm &amp; xiên</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'Liên kết trong',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Tên trang|Văn bản liên kết]]<br />[[Tên trang]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Văn bản liên kết</a><br /><a href='#'>Tên trang</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Liên kết ngoài',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Văn bản liên kết]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Văn bản liên kết</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'Äá» mục cấp 2',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== Câu đỠmục ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>Câu đỠmục</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'Äá» mục cấp 3',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== Câu đỠmục ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>Câu đỠmục</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'Äá» mục cấp 4',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== Câu đỠmục ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>Câu đỠmục</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'Äá» mục cấp 5',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== Câu đỠmục =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h3>Câu đỠmục</h3>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'Danh sách không đánh số',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Mục danh sách<br />* Mục danh sách',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Mục danh sách</li><li>Mục danh sách</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Danh sách đánh số',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Mục danh sách<br /># Mục danh sách',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Mục danh sách</li><li>Mục danh sách</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Chèn tập tin',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Ví dụ.png|thumb|Văn bản chú thích]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='Văn bản chú thích' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Phóng lớn' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>Văn bản chú thích</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'Tham khảo',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Nội dung trang&lt;ref name="thử"&gt;[http://www.example.org Văn bản liên kết], văn bản bổ sung.&lt;/ref&gt;.',
+ 'wikieditor-toolbar-help-content-reference-result' => "Ná»™i dung trang<sup><a href='#'>[1]</a></sup>.",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Sử dụng lại cùng chú thích',
+ 'wikieditor-toolbar-help-content-rereference-result' => "Ná»™i dung trang<sup><a href='#'>[1]</a></sup>.",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'Liệt kê các chú thích',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-th.E1.BB.AD-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>Văn bản liên kết</a>, văn bản bổ sung.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'Chữ ký có ngày',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Tên đăng ký</a> (<a href='#' title='{{#special:mytalk}}'>thảo luận</a>) 15:54, ngày 10 tháng 6 năm 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'Chữ ký',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Tên đăng ký</a> (<a href='#' title='{{#special:mytalk}}'>thảo luận</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Tăng lá»',
+ 'wikieditor-toolbar-help-content-indent-syntax' => 'Văn bản thÆ°á»ng<br />:Văn bản được tăng lá»<br />::Văn bản được tăng lá»',
+ 'wikieditor-toolbar-help-content-indent-result' => 'Văn bản thÆ°á»ng<dl><dd>Văn bản được tăng lá»<dl><dd>Văn bản được tăng lá»</dd></dl></dd></dl>',
+);
+
+/** Volapük (Volapük)
+ * @author Malafaya
+ */
+$messages['vo'] = array(
+ 'wikieditor-preview-changes-tab' => 'Votükams',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Yümatiäd',
+ 'wikieditor-toolbar-tool-link' => 'Yüm',
+ 'wikieditor-toolbar-tool-link-title' => 'Läükön yümi',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Tiäd pada:',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Vödem yüma',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Nosükön',
+ 'wikieditor-toolbar-group-format' => 'Lised',
+ 'wikieditor-toolbar-tool-big' => 'Gretik',
+ 'wikieditor-toolbar-tool-big-example' => 'Vödem gretik',
+ 'wikieditor-toolbar-tool-table' => 'Taib',
+ 'wikieditor-toolbar-tool-replace-close' => 'Färmükön',
+ 'wikieditor-toolbar-characters-page-ipa' => 'LFB',
+ 'wikieditor-toolbar-characters-page-greek' => 'Grikänapük',
+ 'wikieditor-toolbar-section-help' => 'Yuf',
+ 'wikieditor-toolbar-help-page-link' => 'Yüms',
+ 'wikieditor-toolbar-help-page-list' => 'Liseds',
+ 'wikieditor-toolbar-help-page-file' => 'Ragivs',
+ 'wikieditor-toolbar-help-content-xlink-description' => 'Yüm plödik',
+ 'wikieditor-toolbar-help-content-signature-description' => 'Dispenäd',
+);
+
+/** Wolof (Wolof)
+ * @author Ibou
+ */
+$messages['wo'] = array(
+ 'wikieditor-toolbar' => 'Banqaasu jumtukaayu coppite',
+ 'wikieditor-toolbar-desc' => 'Banqaasu jumtukaayu coppite bees gënal ag jëfandikoom',
+ 'wikieditor-toolbar-preference' => 'Doxal banqaasu jumtukaayu coppite bees gënal bi',
+ 'wikieditor-toolbar-dialogs-preference' => 'Doxal palanteeri duggaluwaayu lëkkalekaay, xaatim ak yeneen',
+ 'wikieditor-toolbar-loading' => 'Ci yoonu yeb...',
+ 'wikieditor-toolbar-tool-bold' => 'Duuf',
+ 'wikieditor-toolbar-tool-bold-example' => 'Mbind mu duuf',
+ 'wikieditor-toolbar-tool-italic' => 'Weng',
+ 'wikieditor-toolbar-tool-italic-example' => 'Mbind mu weng',
+ 'wikieditor-toolbar-tool-ilink' => 'Lëkkalekaay bu biir',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Koju lëkkalekaay bi',
+ 'wikieditor-toolbar-tool-xlink' => 'Lëkkalekaay bu biti (fattalikul http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com koju lëkkalekaay bi',
+ 'wikieditor-toolbar-tool-link' => 'Lëkkalekaay',
+ 'wikieditor-toolbar-tool-link-title' => 'Duggal lëkkalekaay',
+ 'wikieditor-toolbar-tool-link-int' => 'Jëme ciw xëtu wiki',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Koju xët wi',
+ 'wikieditor-toolbar-tool-link-int-text' => 'Mbindu lëkkalekaay bi',
+ 'wikieditor-toolbar-tool-link-ext' => 'Jëme ciw xëtu web wu biti',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'URL bu lëkkalekaay bi:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'Mbindu lëkkalekaay bi:',
+ 'wikieditor-toolbar-tool-link-insert' => 'Duggal ab lëkkalekaay',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Neenal',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Xët wu am',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Xët wi amul',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Koj bu baaxul',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Caytug amug xët wi...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'koj bi nga joxe baaxul.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL bi nga joxe dafa nirook lëkkalekaay buy jëme ci beneen wiki. Danga koo namm a def lëkkalekaay bu biir?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'Lëkkalekaay bu biir',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'Lëkkalekaay bu biti',
+ 'wikieditor-toolbar-tool-link-empty' => 'Duggaloo dara lees man a lëkkale',
+ 'wikieditor-toolbar-tool-file' => 'Dencukaay bees roofaale',
+ 'wikieditor-toolbar-tool-file-example' => 'Misaal.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'Delluwaay',
+ 'wikieditor-toolbar-tool-reference-example' => 'Duggalal fii mbindu karmat gi',
+ 'wikieditor-toolbar-tool-signature' => 'Xaatim ak taariix',
+ 'wikieditor-toolbar-section-advanced' => 'Xóot',
+ 'wikieditor-toolbar-tool-heading' => 'Koj',
+ 'wikieditor-toolbar-tool-heading-1' => 'Tolluwaay 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'Tolluwaay 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'Tolluwaay 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'Tolluwaay 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'Tolluwaay 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'Mbindu koj bi',
+ 'wikieditor-toolbar-group-format' => 'Lim',
+ 'wikieditor-toolbar-tool-ulist' => 'Lim bees tombal',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Cëri lim bees tombal',
+ 'wikieditor-toolbar-tool-olist' => 'Lim bees nimerool',
+ 'wikieditor-toolbar-tool-olist-example' => 'Cëri lim bees nimerool',
+ 'wikieditor-toolbar-tool-indent' => 'Xise',
+ 'wikieditor-toolbar-tool-big' => 'Rëy',
+ 'wikieditor-toolbar-tool-big-example' => 'Mbind mu rëy',
+ 'wikieditor-toolbar-tool-small' => 'Tuuti',
+ 'wikieditor-toolbar-tool-small-example' => 'Mbind mu tuuti',
+ 'wikieditor-toolbar-tool-superscript' => 'Tiimaan',
+ 'wikieditor-toolbar-tool-superscript-example' => 'Mbind ci tiimaan',
+ 'wikieditor-toolbar-tool-subscript' => 'Suufaan',
+ 'wikieditor-toolbar-tool-subscript-example' => 'Mbind ci suufaan',
+ 'wikieditor-toolbar-group-insert' => 'Roof',
+ 'wikieditor-toolbar-tool-gallery' => 'Gaaraluwaayu nataal',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Misaal.jpg|Faramfacce1
+$1:Misaal.jpg|Faramfacce2',
+ 'wikieditor-toolbar-tool-newline' => 'Rëdd wu bees',
+ 'wikieditor-toolbar-tool-table' => 'Xaatim',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! koj 1
+! koj 2
+! koj 3
+|-
+| rëdd 1, keno 1
+| rëdd 1, keno 2
+| rëdd 1, keno 3
+|-
+| rëdd 2, keno 1
+| rëdd 2, keno 2
+| rëdd 2, keno 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'Mbindum kër gi',
+ 'wikieditor-toolbar-tool-table-example-header' => 'Mbindum koj bi',
+ 'wikieditor-toolbar-tool-table-title' => 'Roof ab xaatim',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Rëdd',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Keno',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Duggalaale rëdduw kaw-xët',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Meliin ak wet yi',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Def xaatim bi nosuwu',
+ 'wikieditor-toolbar-tool-table-example' => 'Mbindum kër gi',
+ 'wikieditor-toolbar-tool-table-preview' => 'Wonendi',
+ 'wikieditor-toolbar-tool-table-insert' => 'Roof',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Neenal',
+ 'wikieditor-toolbar-tool-table-toomany' => 'Maneesula roofub xaatim bu weesu $1 kër ak bii jumtukaay.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Duggaloo limub rëdd walla keno bu baax.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Manoo roofub xaatim bu amul rëdd walla keno',
+ 'wikieditor-toolbar-tool-replace' => 'Seet te wuutu',
+ 'wikieditor-toolbar-tool-replace-title' => 'Seet te wuutal',
+ 'wikieditor-toolbar-tool-replace-search' => 'Seet:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Wuutal ak:',
+ 'wikieditor-toolbar-tool-replace-case' => 'Tollale dayoo',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Gis bi toftal',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Wuutal bi toftal',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'Wuutal yépp',
+ 'wikieditor-toolbar-tool-replace-close' => 'Neenal',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Sa ceet gi jurul dara',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 wuutu lees def',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Waxoo looy seet.',
+);
+
+/** Wu (å´è¯­) */
+$messages['wuu'] = array(
+ 'wikieditor-template-editor-dialog-cancel' => 'å–消',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'å–消',
+);
+
+/** Mingrelian (მáƒáƒ áƒ’áƒáƒšáƒ£áƒ áƒ˜) */
+$messages['xmf'] = array(
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+);
+
+/** Yiddish (ייִדיש)
+ * @author פוילישער
+ */
+$messages['yi'] = array(
+ 'wikieditor' => 'פֿ×רטגעשריטענע וויקיטעקסט רעד×ַקטירונג',
+ 'wikieditor-desc' => 'פֿ×ַרברייטב×ַרער וויקיטעקס רעד×ַקטירונג ×ויבערפֿל×ך מיט × ×¡×š מ×דולן וו×ָס פֿ×ַרז×רגן נײַע פֿונקצי×נען',
+ 'wikieditor-wikitext-tab' => 'וויקיטעקסט',
+ 'wikieditor-loading' => 'ל×ָדנדיק',
+ 'wikieditor-preview-preference' => 'דערמעגלעכן זייַט-×ויף-זייַט פֿ×ָרויסיקע ווייַזונג',
+ 'wikieditor-preview-tab' => 'פֿ×ר×ויסשטעלונג',
+ 'wikieditor-preview-changes-tab' => 'ענדערונגען',
+ 'wikieditor-preview-loading' => 'ל×ָדט…',
+ 'wikieditor-previewDialog-tab' => 'פֿ×ר×ויסשטעלונג',
+ 'wikieditor-previewDialog-loading' => 'ל×ָדט…',
+ 'wikieditor-publish-button-publish' => 'פֿ×ַרעפֿנטלעכן',
+ 'wikieditor-publish-button-cancel' => '×ַנולירן',
+ 'wikieditor-publish-dialog-minor' => 'מינערדיקער רעד×ַקטירונג',
+ 'wikieditor-publish-dialog-watch' => '×ויפֿפ×ַסן ×ויף ×“×¢× ×‘×œ×ַט',
+ 'wikieditor-publish-dialog-publish' => 'פֿ×ַרעפֿנטלעכן',
+ 'wikieditor-publish-dialog-goback' => 'צוריקגיין',
+ 'wikieditor-template-editor-dialog-title' => 'רעד×ַקטירן מוסטער',
+ 'wikieditor-template-editor-dialog-submit' => 'דערהײַנטיקן',
+ 'wikieditor-template-editor-dialog-cancel' => '×ַנולירן',
+ 'wikieditor-toc-show' => 'ווײַזן ××™× ×”×ַלט',
+ 'wikieditor-toc-hide' => 'ב×Ö·×”×ַלטן ××™× ×”×ַלט',
+ 'wikieditor-toolbar' => 'רעד×קטירונג געצייג־פ×ס',
+ 'wikieditor-toolbar-desc' => 'רעד×ַקטירן בל×ַט געצייגפ×ַס מיט פֿ×ַרברייטערטער ניצלעכקייט',
+ 'wikieditor-toolbar-preference' => '×ַקטיווירן פֿ×ַרברייטערטן רעד×ַקטירונג פ×ַס',
+ 'wikieditor-toolbar-dialogs-preference' => 'דערמעגלעכן די×ָל××’ קעסטלעך פֿ×ַר ×ַרײַנלייגן לינקען, ט×ַבעלעס ×ון × ×ך',
+ 'wikieditor-toolbar-loading' => '×ָנל×ָדן...',
+ 'wikieditor-toolbar-tool-bold' => 'דיק',
+ 'wikieditor-toolbar-tool-bold-example' => 'דיקער טעקסט',
+ 'wikieditor-toolbar-tool-italic' => 'קורסיוו',
+ 'wikieditor-toolbar-tool-italic-example' => 'קורסיווער טעקסט',
+ 'wikieditor-toolbar-tool-ilink' => '×ינערער לינק',
+ 'wikieditor-toolbar-tool-ilink-example' => 'לינק טיטל',
+ 'wikieditor-toolbar-tool-xlink' => 'דרויסנדיקער לינק (געדענקט ×“×¢× http:// פרעפֿיקס)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com לינק טיטל',
+ 'wikieditor-toolbar-tool-link' => 'לינק',
+ 'wikieditor-toolbar-tool-link-title' => '×ַרײַנשטעלן לינק',
+ 'wikieditor-toolbar-tool-link-int' => 'צו × ×•×•×™×§×™ בל×ט',
+ 'wikieditor-toolbar-tool-link-int-target' => 'בל×ט טיטל:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'בל×ַט טיטל ×ָדער URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'טעקסט צו ווייַזן:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'טעקסט צו ווערן געוויזן',
+ 'wikieditor-toolbar-tool-link-ext' => 'צו ×Ö· דרויסנדיקן וועב בל×ַט',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'לינק ×ַדרעס:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'לינק טעקסט:',
+ 'wikieditor-toolbar-tool-link-insert' => '×ַרײַנשטעלן לינק',
+ 'wikieditor-toolbar-tool-link-cancel' => '×נולירן',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'בל×ט עקזיסטירט',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'בל×ט עקזיסטירט נישט',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => '×ומגילטיקער טיטל',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'דרויסנדיקער לינק',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'ק×ָנטר×ָלירן צי בל×ַט עקזיסטירט ...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => '×“×¢× ×˜×™×˜×œ ×יר ×”×ט ספעציפֿירט ××™×– ×ומגילטיק.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => '×“×¢× URL ×יר ×”×ט ספעציפֿירט זעט ×ויס ווי × ×œ×™× ×§ צו ×ַן ×ַנדער וויקי בל×ַט. צי ווילט ×יר מ×ַכן ד×ָס ×ַן ×ינערלעכן לינק?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => '×ינערלעכער לינק',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'דרויסנדיקער לינק',
+ 'wikieditor-toolbar-tool-link-empty' => '×יר ×”×ט ×’×ָרנישט ×רײַנגעגעבן ×¦×•× ×¤Ö¿×ַרבינדן.',
+ 'wikieditor-toolbar-tool-file' => '×ײַנגעבעטעטע טעקע',
+ 'wikieditor-toolbar-tool-file-example' => 'בײַשפיל.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'רעפערענץ',
+ 'wikieditor-toolbar-tool-reference-example' => '×ַרײַנשטעלן פֿיסל טעקסט ד×',
+ 'wikieditor-toolbar-tool-reference-cancel' => '×ַנולירן',
+ 'wikieditor-toolbar-tool-reference-title' => '×רײַנגעבן רעפֿערענץ',
+ 'wikieditor-toolbar-tool-reference-insert' => 'צולייגן',
+ 'wikieditor-toolbar-tool-reference-text' => 'רעפֿערענץ טעקסט',
+ 'wikieditor-toolbar-tool-signature' => 'חתימה ×ון צײַטשטעמפל',
+ 'wikieditor-toolbar-section-advanced' => 'פֿ×רגעשריטן',
+ 'wikieditor-toolbar-tool-heading' => 'קעפל',
+ 'wikieditor-toolbar-tool-heading-1' => 'ניוו×Ö¸ 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'ניוו×Ö¸ 2',
+ 'wikieditor-toolbar-tool-heading-3' => '× ×™×•×•× 3',
+ 'wikieditor-toolbar-tool-heading-4' => '× ×™×•×•× 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'ניוו×Ö¸ 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'קעפל טעקסט',
+ 'wikieditor-toolbar-group-format' => 'פֿ×ָרמ×ַט',
+ 'wikieditor-toolbar-tool-ulist' => 'רשימה מיט בולעטן',
+ 'wikieditor-toolbar-tool-ulist-example' => 'רשימה מיט בולעטן ×יינס',
+ 'wikieditor-toolbar-tool-olist' => 'נומערירטע רשימה',
+ 'wikieditor-toolbar-tool-olist-example' => 'נומערירטע רשימה ×יינס',
+ 'wikieditor-toolbar-tool-indent' => '×ָפרוקונג',
+ 'wikieditor-toolbar-tool-indent-example' => '×ָפגערוקטע שורה',
+ 'wikieditor-toolbar-tool-nowiki' => 'נישט קיין וויקי פ×ָרמ×ַטירונג',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'נישט פֿ×רמ×ַטירטער טעקסט',
+ 'wikieditor-toolbar-tool-redirect' => 'ווענדונג',
+ 'wikieditor-toolbar-tool-redirect-example' => 'ציל בל×ַט × ×ָמען',
+ 'wikieditor-toolbar-tool-big' => 'גרויס',
+ 'wikieditor-toolbar-tool-big-example' => 'גרויסער טעקסט',
+ 'wikieditor-toolbar-tool-small' => 'קליין',
+ 'wikieditor-toolbar-tool-small-example' => 'קליינער טעקסט',
+ 'wikieditor-toolbar-tool-superscript' => 'הייבונג',
+ 'wikieditor-toolbar-tool-superscript-example' => 'געהויבענער טעקסט',
+ 'wikieditor-toolbar-tool-subscript' => 'נידעריקונג',
+ 'wikieditor-toolbar-tool-subscript-example' => 'גענידערטער טעקסט',
+ 'wikieditor-toolbar-group-insert' => 'צולייגן',
+ 'wikieditor-toolbar-tool-gallery' => 'בילדער ×’×ַלעריע',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:בײַשפיל.jpg|קעפל1
+$1:בײַשפיל.jpg|קעפל2',
+ 'wikieditor-toolbar-tool-newline' => 'נײַע שורה',
+ 'wikieditor-toolbar-tool-table' => 'ט×ַבעלע',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! קעפל 1
+! קעפל 2
+! קעפל 3
+|-
+| ריי 1, צעל 1
+| ריי 1, צעל 2
+| ריי 1, צעל 3
+|-
+| ריי 2, צעל 1
+| ריי 2, צעל 2
+| ריי 2, צעל 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'צעל טעקסט',
+ 'wikieditor-toolbar-tool-table-example-header' => 'קעפל טעקסט',
+ 'wikieditor-toolbar-tool-table-title' => 'צולייגן ט×ַבעלע',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'שורות',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'עמודי×',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'צולייגן קעפל שורה',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'סטיל מיט ר×מען',
+ 'wikieditor-toolbar-tool-table-sortable' => 'מ×ַכן ט×ַבעלע ס×רטירב×ַר',
+ 'wikieditor-toolbar-tool-table-example' => 'צעל טעקסט',
+ 'wikieditor-toolbar-tool-table-preview' => 'פֿ×ר×ויסשטעלונג',
+ 'wikieditor-toolbar-tool-table-insert' => 'צולייגן',
+ 'wikieditor-toolbar-tool-table-cancel' => '×נולירן',
+ 'wikieditor-toolbar-tool-table-toomany' => 'מיט ×“×¢× ×“×™×ַל××’ ××™×– נישט מעגלעך ×ַרײַנשטעלן × ×˜×ַבעלע מיט מער ווי $1 צעלן',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => '×יר ×”×ָט נישט ×רײַנגעגעבן ×Ö· גילטיקן נומער פון שורות ×ָדער זיילן.',
+ 'wikieditor-toolbar-tool-table-zero' => '×יר קענט נישט ×ַרײַנשטעלן × ×˜×ַבעלע מיט נול שורות ×דער זיילן.',
+ 'wikieditor-toolbar-tool-replace' => 'זוכן ×ון בײַטן',
+ 'wikieditor-toolbar-tool-replace-title' => 'זוכן ×ון בײַטן',
+ 'wikieditor-toolbar-tool-replace-search' => 'זוכן פֿ×ַר:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'פֿ×ַרבייטן מיט:',
+ 'wikieditor-toolbar-tool-replace-case' => 'צופ×ַסן גרויסע ×ון קליינע ×ותיות',
+ 'wikieditor-toolbar-tool-replace-regex' => 'ב×Ö·×”×ַנדלען זוכקייטל ווי × ×¨×¢×’×•×œ×¢×¨×Ÿ ×ויסדרוק',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'זוכן נעקסטע',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => '×ויסטוישן נעקסטע',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => '×ויסטוישן ×לץ',
+ 'wikieditor-toolbar-tool-replace-close' => 'שליסן',
+ 'wikieditor-toolbar-tool-replace-nomatch' => '×ײַער זוך ×”×ט ×’×ָרנישט צוגעפ×ַסט',
+ 'wikieditor-toolbar-tool-replace-success' => '$1 ×ויסבײַט(ן) ×ַדורכגעפֿירט.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => '×יר ×”×ט ×’×ָרנישט ×רײַנגעגעבן ×¦×•× ×–×•×›×Ÿ.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'דער רעגולערער ×ויסדרוק וו×ָס ×יר ×”×ט ×ַרײַנגעגעבן ××™×– ×ומגילטיק: $1',
+ 'wikieditor-toolbar-section-characters' => 'ספעציעלע צייכנס',
+ 'wikieditor-toolbar-characters-page-latin' => 'ל×ַטייניש',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'ל×ַטייַן פֿ×ַרברייטערט',
+ 'wikieditor-toolbar-characters-page-ipa' => '×ינטערנ×ַצי×× ×לער פֿ×נעטישער ×לפֿ×בעט (IPA)',
+ 'wikieditor-toolbar-characters-page-symbols' => 'סימב×לן',
+ 'wikieditor-toolbar-characters-page-greek' => 'גריכיש',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'ציריליש',
+ 'wikieditor-toolbar-characters-page-arabic' => '×ר×ביש',
+ 'wikieditor-toolbar-characters-page-persian' => 'פּערסיש',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'העברעיש',
+ 'wikieditor-toolbar-characters-page-bangla' => 'בענג×ַליש',
+ 'wikieditor-toolbar-characters-page-telugu' => 'טעלוגו',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'סינה×ַל×Ö·',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'גודזש×ַר×ַטי',
+ 'wikieditor-toolbar-section-help' => 'הילף',
+ 'wikieditor-toolbar-help-heading-description' => 'ב×ַשרײַבונג',
+ 'wikieditor-toolbar-help-heading-syntax' => 'וו×ָס ×יר קל×ַפט ×ַרײַן',
+ 'wikieditor-toolbar-help-heading-result' => 'ווי עס זעט ×ויס',
+ 'wikieditor-toolbar-help-page-format' => 'פֿ×ָרמ×ַטירונג',
+ 'wikieditor-toolbar-help-page-link' => 'לינקען',
+ 'wikieditor-toolbar-help-page-heading' => 'קעפלעך',
+ 'wikieditor-toolbar-help-page-list' => 'ליסטעס',
+ 'wikieditor-toolbar-help-page-file' => 'טעקעס',
+ 'wikieditor-toolbar-help-page-reference' => 'רעפערענצן',
+ 'wikieditor-toolbar-help-page-discussion' => 'שמועס',
+ 'wikieditor-toolbar-help-content-italic-description' => 'קורסיוו',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''קורסיווער טעקסט''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>קורסיווער טעקסט</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'דיק',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''דיקער טעקסט'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>דיקער טעקסט</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'דיק &amp; שיף',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''דיקער &amp; קורסיווער טעקסט'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>דיקער &amp; קורסיווער טעקסט</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => '×ינערלעכער לינק',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[בל×ַט קעפל|לינק טעקסט]] <br /> [[בל×ַט קעפל]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>לינק טעקסט</a> <br /> <a href='#'>בל×ַט קעפל</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'דרויסנדיקער לינק',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org לינק טעקסט] <br /> [http://www.example.org] <br /> http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>לינק טעקסט</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'צווייטער × ×™×•×•× ×§×¢×¤×œ',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== קעפל טעקסט ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>קעפל טעקסט</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'דריטער × ×™×•×•× ×§×¢×¤×œ',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== קעפל טעקסט ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>קעפל טעקסט</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'פֿערטער × ×™×•×•× ×§×¢×¤×œ',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== קעפל טעקסט ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>קעפל טעקסט</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'פֿיפֿטער × ×™×•×•× ×§×¢×¤×œ',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== קעפל טעקסט =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>קעפל טעקסט</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'רשימה מיט בולעטן',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* ליסטע ×יינצל<br />* ליסטע ×יינצל',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>ליסטע ×יינצל</li><li>ליסטע ×יינצל</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'נומערירטע ליסטע',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# ליסטע ×יינצל<br /># ליסטע ×יינצל',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>ליסטע ×יינצל</li><li>ליסטע ×יינצל</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => '×ײַנגעבעטעטע טעקע',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|ב×שרייבונג]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='קעפל טעקסט' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='פ×רגרעסערן' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>ב×ַשרײַבונג</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'רעפערענץ',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'בל×ַט טעקסט.&lt;ref name="test"&gt;[http://www.example.org לינק טעקסט], צוגעגעבענער טעקסט.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "בל×ַט טעקסט. <a href='#'><sup>[1]</sup></a>",
+ 'wikieditor-toolbar-help-content-rereference-result' => "בל×ַט טעקסט. <a href='#'><sup>[1]</sup></a>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'ווייַזן רעפֿערענצן',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>לינק טעקסט</a>, × ×ך טעקסט.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => '×ונטערשריפֿט מיט צײַטסטעמפּל.',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>ב×ַניצער × ×ָמען</a> (<a href='#' title='{{#special:mytalk}}'>שמועס</a>) 15:54, 10 טן יוני 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'חתימה',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>ב×ַניצער × ×ָמען</a> (<a href='#' title='{{#special:mytalk}}'>שמועס</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => '×ָפרוקן',
+ 'wikieditor-toolbar-help-content-indent-syntax' => '× ×רמ×ַלער טעקסט<br />:×ָפגערוקטער טעקסט<br />::×ָפגערוקטער טעקסט',
+ 'wikieditor-toolbar-help-content-indent-result' => '× ×רמ×ַלער טעקסט<dl><dd>×ָפגערוקטער טעקסט<dl><dd>×ָפגערוקטער טעקסט</dd></dl></dd></dl>',
+);
+
+/** Yoruba (Yorùbá)
+ * @author Demmy
+ */
+$messages['yo'] = array(
+ 'wikieditor-wikitext-tab' => 'ÃŒká» wiki',
+ 'wikieditor-loading' => 'Úngbéyá»',
+ 'wikieditor-preview-preference' => 'ÃŒgbàláyè àyẹ̀wò lẹÌgbáº¹Ì€áº¹Ì ara wá»n',
+ 'wikieditor-preview-tab' => 'Àyẹ̀wò',
+ 'wikieditor-preview-changes-tab' => 'Àwá»n àtúná¹£e',
+ 'wikieditor-preview-loading' => 'Únrùjáde...',
+ 'wikieditor-previewDialog-preference' => 'Ìgbàláyè pátákó àkíyèsí fún àyẹ̀wò',
+ 'wikieditor-previewDialog-tab' => 'Àyẹ̀wò',
+ 'wikieditor-previewDialog-loading' => 'Únrùjáde...',
+ 'wikieditor-publish-preference' => 'ÃŒgbàláyè ìtẹ̀jáde lẹÌsẹ-sẹ',
+ 'wikieditor-publish-button-publish' => 'Ìtẹ̀jáde',
+ 'wikieditor-publish-button-cancel' => 'Fagilé',
+ 'wikieditor-publish-dialog-title' => 'Ìtẹ̀jáde sí {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'Àkótán àtúnṣe (àlàyé ní sókí àtúnṣe tí ẹ ṣe):',
+ 'wikieditor-publish-dialog-minor' => 'Àtúnṣe kékeré',
+ 'wikieditor-publish-dialog-watch' => "M'ójútó ojúewé yìí",
+ 'wikieditor-publish-dialog-publish' => 'Ìtẹ̀jáde',
+ 'wikieditor-publish-dialog-goback' => 'Padà sẹÌyìn',
+ 'wikieditor-template-editor-preference' => 'ÃŒgbàláyè àtúná¹£e onífá»Ìá»Ìmù àwá»n àdàká» wiki',
+ 'wikieditor-template-editor-dialog-title' => 'Àtúná¹£e àdàká»',
+ 'wikieditor-template-editor-dialog-submit' => 'Ìtúnṣe',
+ 'wikieditor-template-editor-dialog-cancel' => 'Fagilé',
+ 'wikieditor-templates-preference' => 'ÃŒgbàláyè ìbòmá»Ìlẹ̀ àdàká»',
+ 'wikieditor-toc-preference' => 'ÃŒgbàláyè pátákó àwá»n àkóónú atá»Ìka',
+ 'wikieditor-toc-show' => 'ÃŒfihàn àwá»n àkóónú',
+ 'wikieditor-toc-hide' => 'ÃŒbòmá»Ìlẹ̀ àkóónú',
+ 'wikieditor-toolbar' => 'Àtúná¹£e sí pẹpẹ irinṣẹÌ',
+ 'wikieditor-toolbar-desc' => 'Àtúná¹£e ojúewé pẹpẹ iriná¹£áº¹Ì pẹ̀lú ìṣeémúlò amúdára',
+ 'wikieditor-toolbar-preference' => 'ÃŒgbàláyè pẹpẹ iriná¹£áº¹Ì Ã túná¹£e mímúdára',
+ 'wikieditor-toolbar-dialogs-preference' => 'ÃŒgbàláyè àwá»n pátákó àkíyèsí fún ìkìbá»Ì€ ìjápá»Ì€, tábìlì àti bẹÌẹ̀bẹÌẹ̀ lá»',
+ 'wikieditor-toolbar-loading' => 'Únrùjáde...',
+ 'wikieditor-toolbar-tool-bold' => 'Kedere',
+ 'wikieditor-toolbar-tool-bold-example' => 'ÃŒká» kedere',
+ 'wikieditor-toolbar-tool-italic' => 'Awá»ÌlẹÌẹ̀gbẹÌ',
+ 'wikieditor-toolbar-tool-italic-example' => 'ÃŒká» awá»ÌlẹÌẹ̀gbẹÌ',
+ 'wikieditor-toolbar-tool-ilink' => 'ÃŒjápá»Ì€ inú',
+ 'wikieditor-toolbar-tool-ilink-example' => 'Àká»lé ìjápá»Ì€',
+ 'wikieditor-toolbar-tool-xlink' => 'ÃŒjápá»Ì€ lóde (ẹ má»Ì gbàgbé àlẹ̀má»Ìwájú http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com àká»lé ìjápá»Ì€',
+ 'wikieditor-toolbar-tool-link' => 'ÃŒjápá»Ì€',
+ 'wikieditor-toolbar-tool-link-title' => 'ÃŒkìbá»Ì€ ìjápá»Ì€',
+ 'wikieditor-toolbar-tool-link-int' => 'Sí ojúewé wiki kan',
+ 'wikieditor-toolbar-tool-link-int-target' => 'Àká»lè ojúewé tàbí URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'Àká»lé ojúewé tàbí URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'ÌkỠláti fihàn:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'ÃŒká» láti jáº¹Ì fífihàn',
+ 'wikieditor-toolbar-tool-link-ext' => 'Sí ojúewé ìtakùn lóde',
+ 'wikieditor-toolbar-tool-link-ext-target' => 'ÃŒjápá»Ì€ URL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => 'ÃŒkỠìjápá»Ì€:',
+ 'wikieditor-toolbar-tool-link-insert' => 'ÃŒkìbá»Ì€ ìjápá»Ì€',
+ 'wikieditor-toolbar-tool-link-cancel' => 'Fagilé',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'Ojúewé wà',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'Kò sí ojúewé',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => 'Àká»lé tíkòyẹ',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => 'ÃŒjápá»Ì€ lóde',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => 'Únyẹ̀wò bóyá ojúewé wà...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => 'Àká»lè tí ẹ nàkasí kò yẹ.',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'URL tí ẹ nàkasí dàbí pé ó jáº¹Ì Ã¬jápá»Ì€ sí ojúewé wiki mìràn. Ṣé ẹ fáº¹Ì sá»á»Ì di ìjápá»Ì€ inú?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => 'ÃŒjápá»Ì€ inú',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => 'ÃŒjápá»Ì€ lóde',
+ 'wikieditor-toolbar-tool-link-empty' => 'Ẹ kò kỠùnkankan láti jápá»Ì€ má»Ì.',
+ 'wikieditor-toolbar-tool-file' => 'Fáìlì alákòósínú',
+ 'wikieditor-toolbar-tool-file-example' => 'Àpẹrẹ.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'ÃŒtá»Ìkasí',
+ 'wikieditor-toolbar-tool-reference-example' => 'ÌkìbỠìkỠìkíyésí níbí',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'Fagilé',
+ 'wikieditor-toolbar-tool-reference-title' => 'ÃŒkìbá»Ì€ ìtá»Ìkasí',
+ 'wikieditor-toolbar-tool-reference-insert' => 'ÃŒkìbá»Ì€',
+ 'wikieditor-toolbar-tool-reference-text' => 'ÃŒkỠìtá»Ìkasí',
+ 'wikieditor-toolbar-tool-signature' => 'ÃŒtá»wá»Ìbá»Ì€wé àti èdìdí àkókò',
+ 'wikieditor-toolbar-section-advanced' => 'Gíga',
+ 'wikieditor-toolbar-tool-heading' => 'Àká»lé',
+ 'wikieditor-toolbar-tool-heading-1' => 'ÃŒpele 1',
+ 'wikieditor-toolbar-tool-heading-2' => 'ÃŒpele 2',
+ 'wikieditor-toolbar-tool-heading-3' => 'ÃŒpele 3',
+ 'wikieditor-toolbar-tool-heading-4' => 'ÃŒpele 4',
+ 'wikieditor-toolbar-tool-heading-5' => 'ÃŒpele 5',
+ 'wikieditor-toolbar-tool-heading-example' => 'ÃŒkỠàká»lé',
+ 'wikieditor-toolbar-group-format' => 'Ìdá',
+ 'wikieditor-toolbar-tool-ulist' => 'ÀkójỠoníàmì',
+ 'wikieditor-toolbar-tool-ulist-example' => 'Ohun àkójỠoníàmì',
+ 'wikieditor-toolbar-tool-olist' => 'Àkójá» oníná»Ìmbà',
+ 'wikieditor-toolbar-tool-olist-example' => 'Ohun àkójá» oníná»Ìmbà',
+ 'wikieditor-toolbar-tool-indent' => 'ÃŒwá»Ì',
+ 'wikieditor-toolbar-tool-indent-example' => 'ÃŒlà wíwá»Ì',
+ 'wikieditor-toolbar-tool-nowiki' => 'BẹÌẹ̀ká»Ì sí ìsédá wiki',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'ÃŒkìbá»Ì€ ìkỠàìjáº¹Ì síṣèdá síbí',
+ 'wikieditor-toolbar-tool-redirect' => 'Àtúnjúwe',
+ 'wikieditor-toolbar-tool-redirect-example' => 'OrúkỠojúewé',
+ 'wikieditor-toolbar-tool-big' => 'Gbàngbà',
+ 'wikieditor-toolbar-tool-big-example' => 'ÌkỠgbàngbà',
+ 'wikieditor-toolbar-tool-small' => 'Kónkóló',
+ 'wikieditor-toolbar-tool-small-example' => 'ÌkỠkónkóló',
+ 'wikieditor-toolbar-tool-superscript' => 'Àfiká»á¹£Ã³rí',
+ 'wikieditor-toolbar-tool-superscript-example' => 'ÃŒkỠàfìká»á¹£Ã³rí',
+ 'wikieditor-toolbar-tool-subscript' => 'Àfìká»á¹£Ã¡bẹÌ',
+ 'wikieditor-toolbar-tool-subscript-example' => 'ÃŒkỠàfìká»á¹£Ã¡bẹÌ',
+ 'wikieditor-toolbar-group-insert' => 'ÃŒkìbá»Ì€',
+ 'wikieditor-toolbar-tool-gallery' => 'ÌkójỠàwòrán',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|Àká»lé1
+$1:Example.jpg|Àká»lé2',
+ 'wikieditor-toolbar-tool-newline' => 'Ìlà tuntun',
+ 'wikieditor-toolbar-tool-table' => 'Tábìlì',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! orí á»Ì€rá»Ì€ 1
+! orí á»Ì€rá»Ì€ 2
+! orí á»Ì€rá»Ì€ 3
+|-
+| orí ìlà 1, ìhámá»Ì 1
+| orí ìlà 1, ìhámá»Ì 2
+| orí ìlà 1, ìhámá»Ì 3
+|-
+| orí ìlà 2, ìhámá»Ì 1
+| orí ìlà 2, ìhámá»Ì 2
+| orí ìlà 2, ìhámá»Ì 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'ÃŒká» inú ìhámá»Ì',
+ 'wikieditor-toolbar-tool-table-example-header' => 'ÃŒká» orí á»Ì€rá»Ì€',
+ 'wikieditor-toolbar-tool-table-title' => 'ÌkìbỠtábìlì',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => 'Àwá»n orí ìlà',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => 'Àwá»n orí òpó',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => 'Àfikún àká»lé orí ìlà',
+ 'wikieditor-toolbar-tool-table-wikitable' => 'Ṣe é pẹ̀lú bodè',
+ 'wikieditor-toolbar-tool-table-sortable' => 'Kó le ṣe é túntò',
+ 'wikieditor-toolbar-tool-table-example' => 'Àpẹrẹ',
+ 'wikieditor-toolbar-tool-table-preview' => 'Àyẹ̀wò',
+ 'wikieditor-toolbar-tool-table-insert' => 'ÃŒkìbá»Ì€',
+ 'wikieditor-toolbar-tool-table-cancel' => 'Fagilé',
+ 'wikieditor-toolbar-tool-table-toomany' => 'ÃŒkìbá»Ì€ tábìlì pẹ̀lú ìhámá»Ì tóju $1 lá» kò ṣẹ é á¹£e pẹ̀lú pátákó àkíyèsí yìí.',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => 'Ẹ kò ì tíì ki iye àwá»n orí ìlà àti orí òpó tó yẹ bá»lé.',
+ 'wikieditor-toolbar-tool-table-zero' => 'Ẹ kò le á¹£e ìkìbá»Ì€ tábìlì tó ní òdo orí ìlà àti òdo orí òpó.',
+ 'wikieditor-toolbar-tool-replace' => 'Àwárí láti rá»Ìpò',
+ 'wikieditor-toolbar-tool-replace-title' => 'Àwárí láti rá»Ìpò',
+ 'wikieditor-toolbar-tool-replace-search' => 'Àwárí fún:',
+ 'wikieditor-toolbar-tool-replace-replace' => 'Rá»Ìpò pẹ̀lú:',
+ 'wikieditor-toolbar-tool-replace-case' => 'ÃŒbámu lẹÌtà kúkúrú-nínlá',
+ 'wikieditor-toolbar-tool-replace-regex' => 'á¹¢e ìká»-á»Ì€rá»Ì€ àwárí bíi ìṣá»Ì€rá»Ì€ dédé',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => 'Wá omíràn',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'Rá»Ìpò omíràn',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'ÃŒrá»Ìpò gbogbo wá»n',
+ 'wikieditor-toolbar-tool-replace-close' => 'Padé',
+ 'wikieditor-toolbar-tool-replace-nomatch' => 'Àwárí yín kò bá ohun kankan mu.',
+ 'wikieditor-toolbar-tool-replace-success' => 'ÃŒrá»Ìpò $1 wáyé.',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => 'Ẹ kò kỠohun kankan láti wárí.',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => 'ÃŒgbékalẹ̀á»Ì€rá»Ì€ dédé tí ẹ ká» kò yẹ: $1',
+ 'wikieditor-toolbar-section-characters' => 'Àwá»n lẹÌtà pàtàkì',
+ 'wikieditor-toolbar-characters-page-latin' => 'Látìnì',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Látìnì títóbi',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => 'Àwá»n àmì ìdámá»Ì€',
+ 'wikieditor-toolbar-characters-page-greek' => 'Gíríkì',
+ 'wikieditor-toolbar-characters-page-cyrillic' => 'Kíúrílíkì',
+ 'wikieditor-toolbar-characters-page-arabic' => 'Lárúbáwá',
+ 'wikieditor-toolbar-characters-page-persian' => 'Èdè Pẹrsíà',
+ 'wikieditor-toolbar-characters-page-hebrew' => 'Hébérù',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bánglà',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Tèlúgù',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-characters-page-thai' => 'Thai',
+ 'wikieditor-toolbar-characters-page-lao' => 'Lao',
+ 'wikieditor-toolbar-characters-page-khmer' => 'Khmer',
+ 'wikieditor-toolbar-section-help' => 'ÃŒrànwá»Ì',
+ 'wikieditor-toolbar-help-heading-description' => 'Ìjúwe',
+ 'wikieditor-toolbar-help-heading-syntax' => 'Ohun tí ẹ tẹ̀',
+ 'wikieditor-toolbar-help-heading-result' => 'Ohun tí ẹ ó ò rí',
+ 'wikieditor-toolbar-help-page-format' => 'Ìṣèdá',
+ 'wikieditor-toolbar-help-page-link' => 'Àwá»n ìjápá»Ì€',
+ 'wikieditor-toolbar-help-page-heading' => 'Àwá»n àká»lé',
+ 'wikieditor-toolbar-help-page-list' => 'Àwá»n àkójá»',
+ 'wikieditor-toolbar-help-page-file' => 'Àwá»n fáìlì',
+ 'wikieditor-toolbar-help-page-reference' => 'Àwá»n ìtá»Ìkasí',
+ 'wikieditor-toolbar-help-page-discussion' => 'ÃŒfá»Ì€rá»Ì€wérá»Ì€',
+ 'wikieditor-toolbar-help-content-italic-description' => 'Awá»ÌlẹÌẹ̀gbẹÌ',
+ 'wikieditor-toolbar-help-content-italic-syntax' => 'ÃŒká» awá»ÌlẹÌẹ̀gbẹÌ',
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>ÃŒkỠàwá»ÌlẹÌẹ̀gbẹÌ</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'Kedere',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''ÃŒká» kedere'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>ÃŒká» kedere</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => 'Kedere &amp; àwá»ÌlẹÌẹ̀gbẹÌ',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''ÃŒká» kedere &amp; àwá»ÌlẹÌẹ̀gbẹÌ'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>ÃŒká» kedere &amp; àwá»ÌlẹÌẹ̀gbẹÌ</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => 'ÃŒjápá»Ì€ inú',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[Àká»lé ojúewé|Àlẹ̀má»Ì ìjápá»Ì€]]<br />[[Àká»lé ojúewé]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>Àlẹ̀má»Ì ìjápá»Ì€</a><br /><a href='#'>Àká»lé ojúewé</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => 'ÃŒjápá»Ì€ lóde',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org Àlẹ̀má»Ì ìjápá»Ì€]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>Àlẹ̀má»Ì ìjápá»Ì€</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => 'ÃŒpele ìṣorí á»Ì€rá»Ì€ 2ji',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== ÃŒká» orí á»Ì€rá»Ì€ ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>ÃŒká» orí á»Ì€rá»Ì€</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => 'ÃŒpele ìṣorí á»Ì€rá»Ì€ 3ta',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== ÃŒká» orí á»Ì€rá»Ì€ ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>ÃŒká» orí á»Ì€rá»Ì€</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => 'ÃŒpele ìṣorí á»Ì€rá»Ì€ 4rin',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== ÃŒká» orí á»Ì€rá»Ì€ ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>ÃŒká» orí á»Ì€rá»Ì€</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => 'ÃŒpele ìṣorí á»Ì€rá»Ì€ 5run',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== ÃŒká» orí á»Ì€rá»Ì€ =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>ÃŒká» orí á»Ì€rá»Ì€</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'ÀkójỠoníàmì',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* Ohun àkójá»<br />* Ohun àkójá»',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>Ohun àkójá»</li><li>Ohun àkójá»</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => 'Àkójá» oníná»Ìmbà',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# Ohun àkójá»<br /># Ohun àkójá»',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>Ohun àkójá»</li><li>Ohun àkójá»</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'Fáìlì alákòósínú',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|Àká»lé]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='ÃŒkỠàká»lé' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='Enlarge' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>ÃŒkỠàká»lé</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'ÃŒtá»Ìkasí',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'Ãká» ojúewé.&lt;ref name="test"&gt;[http://www.example.org ÃŒkỠìjápá»Ì€], ìká» mìràn.&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "ÌkỠojúewé.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'Ọ̀nà ílò míràn ìtá»Ìkasí kannáà',
+ 'wikieditor-toolbar-help-content-rereference-result' => "ÌkỠojúewé.<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => 'ÃŒfihàn àwá»n ìtá»Ìkasí',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>ÃŒkỠìjápá»Ì€</a>, ìká» mìràn.</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ÃŒtá»wá»Ìbá»Ì€wé pẹ̀lú èdìdí àkókò',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>Orúká» oníṣe</a> (<a href='#' title='{{#special:mytalk}}'>á»Ì€rá»Ì€</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ÃŒtá»wá»Ìbá»Ì€wé',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>Orúká» oníṣe</a> (<a href='#' title='{{#special:mytalk}}'>á»Ì€rá»Ì€</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => 'Awá»Ì',
+);
+
+/** Cantonese (粵語)
+ * @author Horacewai2
+ * @author Waihorace
+ */
+$messages['yue'] = array(
+ 'wikieditor' => '進階維基文字編輯界é¢',
+ 'wikieditor-desc' => 'æ供一個å¯ä»¥å±•é–‹å˜…維基文字編輯界é¢åŒåŸ‹å¥½å¤šå…¶ä»–特色嘅模組',
+ 'wikieditor-wikitext-tab' => '維基文字',
+ 'wikieditor-loading' => '載入緊',
+ 'wikieditor-preview-preference' => '用side-by-sideé è¦½åŠŸèƒ½',
+ 'wikieditor-preview-tab' => 'é è¦½',
+ 'wikieditor-preview-changes-tab' => '改動',
+ 'wikieditor-preview-loading' => '載入緊…',
+ 'wikieditor-previewDialog-tab' => 'é è¦½',
+ 'wikieditor-previewDialog-loading' => '載入緊…',
+ 'wikieditor-publish-preference' => '啟用一步還一步嘅發佈功能',
+ 'wikieditor-publish-button-publish' => '發佈',
+ 'wikieditor-publish-button-cancel' => 'å–消',
+ 'wikieditor-publish-dialog-title' => '發佈去{{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => 'æ‘˜è¦ (簡單講下你改左咩)',
+ 'wikieditor-publish-dialog-minor' => 'å°ç·¨è¼¯',
+ 'wikieditor-publish-dialog-watch' => 'ç‡å¯¦å‘¢ä¸€é ',
+ 'wikieditor-publish-dialog-publish' => '發佈',
+ 'wikieditor-publish-dialog-goback' => '番去',
+ 'wikieditor-template-editor-preference' => '啟用模æ¿form-based編輯功能',
+ 'wikieditor-template-editor-dialog-title' => '改模æ¿',
+ 'wikieditor-template-editor-dialog-submit' => 'æ›´æ–°',
+ 'wikieditor-template-editor-dialog-cancel' => 'å–消',
+ 'wikieditor-templates-preference' => '啟用å¯éš±è—模æ¿',
+ 'wikieditor-toc-preference' => '啟用內客嘅導航表格',
+ 'wikieditor-toc-show' => '顯示內容',
+ 'wikieditor-toc-hide' => '收埋內容',
+ 'wikieditor-toolbar' => '編輯工具列',
+ 'wikieditor-toolbar-desc' => '加強å¯ç”¨æ€§å˜…編輯版工具',
+ 'wikieditor-toolbar-preference' => 'é–‹ç€åŠ å¼·ç·¨è¼¯å·¥å…·åˆ—',
+ 'wikieditor-toolbar-dialogs-preference' => '啟用信æ¯æ¡†åŽ»æä¾›æ’入連çµåŒè¡¨æ ¼ç­‰å˜…幫助',
+ 'wikieditor-toolbar-loading' => '載入緊...',
+ 'wikieditor-toolbar-tool-bold' => 'ç²—é«”',
+ 'wikieditor-toolbar-tool-bold-example' => '粗體字',
+ 'wikieditor-toolbar-tool-italic' => '斜體',
+ 'wikieditor-toolbar-tool-italic-example' => '斜體字',
+ 'wikieditor-toolbar-tool-ilink' => '內連',
+ 'wikieditor-toolbar-tool-ilink-example' => '拎題',
+ 'wikieditor-toolbar-tool-xlink' => 'å¤–é€£ï¼ˆè¨˜ä½ http:// 字頭)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com 連çµæ¨™é¡Œ',
+ 'wikieditor-toolbar-tool-link' => '連çµ',
+ 'wikieditor-toolbar-tool-link-title' => 'æ’入連çµ',
+ 'wikieditor-toolbar-tool-link-int' => '去一個維基é é¢',
+ 'wikieditor-toolbar-tool-link-int-target' => '目標é é¢æˆ–者URL:',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'é é¢æ¨™é¡Œæˆ–者URL',
+ 'wikieditor-toolbar-tool-link-int-text' => 'è¦é¡¯ç¤ºå˜…文字:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => 'è¦é¡¯ç¤ºå˜…文字',
+ 'wikieditor-toolbar-tool-link-ext' => '連出去',
+ 'wikieditor-toolbar-tool-link-ext-target' => '連çµURL:',
+ 'wikieditor-toolbar-tool-link-ext-text' => '連çµæ–‡å­—:',
+ 'wikieditor-toolbar-tool-link-insert' => 'æ’入連çµ',
+ 'wikieditor-toolbar-tool-link-cancel' => 'å–消',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'é é¢å­˜åœ¨',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'é å””存在',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => '唔正確嘅標題',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => '外部連çµ',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => '檢查果版係唔係到...',
+ 'wikieditor-toolbar-tool-link-int-invalid' => '你打嘅標題係錯嘅',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => 'æ¢URL應該係連去其他Wikié é¢å˜…,你打唔打算åšä¸€å€‹å…§éƒ¨é€£çµï¼Ÿ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => '內部連çµ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => '外部連çµ',
+ 'wikieditor-toolbar-tool-link-empty' => '你係連去邊個格到唔記得打野。',
+ 'wikieditor-toolbar-tool-file' => 'çµåˆæ¨™é¡Œ',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'åƒè€ƒ',
+ 'wikieditor-toolbar-tool-reference-example' => '響呢度æ’入底文字',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'å–消',
+ 'wikieditor-toolbar-tool-reference-title' => 'æ’入註解',
+ 'wikieditor-toolbar-tool-reference-insert' => 'æ’å…¥',
+ 'wikieditor-toolbar-tool-reference-text' => 'åƒè€ƒæ–‡å­—',
+ 'wikieditor-toolbar-tool-signature' => 'ç°½å加時間å°',
+ 'wikieditor-toolbar-section-advanced' => '進階',
+ 'wikieditor-toolbar-tool-heading' => '標題',
+ 'wikieditor-toolbar-tool-heading-1' => '1ç´š',
+ 'wikieditor-toolbar-tool-heading-2' => '2ç´š',
+ 'wikieditor-toolbar-tool-heading-3' => '3ç´š',
+ 'wikieditor-toolbar-tool-heading-4' => '4ç´š',
+ 'wikieditor-toolbar-tool-heading-5' => '5ç´š',
+ 'wikieditor-toolbar-tool-heading-example' => '標題字',
+ 'wikieditor-toolbar-group-format' => '一覽',
+ 'wikieditor-toolbar-tool-ulist' => '點列一覽',
+ 'wikieditor-toolbar-tool-ulist-example' => '點列一覽項目',
+ 'wikieditor-toolbar-tool-olist' => '數字一覽',
+ 'wikieditor-toolbar-tool-olist-example' => '數字一覽項目',
+ 'wikieditor-toolbar-tool-indent' => '首行縮排',
+ 'wikieditor-toolbar-tool-indent-example' => '首行縮排嘅行',
+ 'wikieditor-toolbar-tool-nowiki' => 'å””ç† wiki æ ¼å¼',
+ 'wikieditor-toolbar-tool-nowiki-example' => '喺呢度æ’å…¥éžæ ¼å¼æ–‡å­—',
+ 'wikieditor-toolbar-tool-redirect' => 'é‡å®šå‘',
+ 'wikieditor-toolbar-tool-redirect-example' => '目標é é¢å',
+ 'wikieditor-toolbar-tool-big' => '大',
+ 'wikieditor-toolbar-tool-big-example' => '大字',
+ 'wikieditor-toolbar-tool-small' => 'ç´°',
+ 'wikieditor-toolbar-tool-small-example' => 'ç´°å­—',
+ 'wikieditor-toolbar-tool-superscript' => '上標',
+ 'wikieditor-toolbar-tool-superscript-example' => '上標字',
+ 'wikieditor-toolbar-tool-subscript' => '下標',
+ 'wikieditor-toolbar-tool-subscript-example' => '下標字',
+ 'wikieditor-toolbar-group-insert' => 'æ’å…¥',
+ 'wikieditor-toolbar-tool-gallery' => '畫廊',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|標題1
+$1:Example.jpg|標題2',
+ 'wikieditor-toolbar-tool-newline' => '新行',
+ 'wikieditor-toolbar-tool-table' => '表',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! 表頭 1
+! 表頭 2
+! 表頭 3
+|-
+| 行 1, 格 1
+| 行 1, 格 2
+| 行 1, 格 3
+|-
+| 行 2, 格 1
+| 行 2, 格 2
+| 行 2, 格 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => '-
+! 表頭 1
+! 表頭 2
+! 表頭 3
+|-
+| 行 1, 格 1
+| 行 1, 格 2
+| 行 1, 格 3
+|-
+| 行 2, 格 1
+| 行 2, 格 2
+| 行 2, 格 3',
+ 'wikieditor-toolbar-tool-table-example-header' => '標題',
+ 'wikieditor-toolbar-tool-table-title' => 'æ’入表格',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => '列',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => '行',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => '新增標題行',
+ 'wikieditor-toolbar-tool-table-wikitable' => '連埋外框åŒæ ¼å¼',
+ 'wikieditor-toolbar-tool-table-sortable' => '整一個å¯ä»¥æŽ’åºå˜…表格',
+ 'wikieditor-toolbar-tool-table-example' => '-
+! 表頭 1
+! 表頭 2
+! 表頭 3
+|-
+| 行 1, 格 1
+| 行 1, 格 2
+| 行 1, 格 3
+|-
+| 行 2, 格 1
+| 行 2, 格 2
+| 行 2, 格 3',
+ 'wikieditor-toolbar-tool-table-preview' => 'é è¦½',
+ 'wikieditor-toolbar-tool-table-insert' => 'æ’å…¥',
+ 'wikieditor-toolbar-tool-table-cancel' => 'å–消',
+ 'wikieditor-toolbar-tool-table-toomany' => 'æ’入一個多個$1格嘅表格用呢個信æ¯æ¡†ä¿‚å””å¯èƒ½å˜…',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => '你係行或者列輸入左一個唔正確嘅數字',
+ 'wikieditor-toolbar-tool-table-zero' => 'ä½ å””å¯ä»¥æ’入一個有0行或者列嘅表格',
+ 'wikieditor-toolbar-tool-replace' => 'æœç´¢åŒé‡æ–°æ”¾ä½',
+ 'wikieditor-toolbar-tool-replace-title' => 'æœç´¢åŒé‡æ–°æ”¾ä½',
+ 'wikieditor-toolbar-tool-replace-search' => 'æµ:',
+ 'wikieditor-toolbar-tool-replace-replace' => '放D咩?放:',
+ 'wikieditor-toolbar-tool-replace-case' => 'åˆä¹Žæ¡ˆä»¶',
+ 'wikieditor-toolbar-tool-replace-regex' => 'æœç´¢æ–‡å­—åšä¸€å€‹åŸºæœ¬é‹ç®—',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => '下一個',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => 'å–代下一個',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => 'å–代全部',
+ 'wikieditor-toolbar-tool-replace-close' => '關閉',
+ 'wikieditor-toolbar-tool-replace-nomatch' => '你嘅æœå°‹å””é…åˆä»»ä½•é‡Žã€‚',
+ 'wikieditor-toolbar-tool-replace-success' => 'å·²å–代$1個。',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => '你無打è¦æµå•²å’©ã€‚',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => '你打入嘅é‹ç®—係錯嘅:$1',
+ 'wikieditor-toolbar-section-characters' => '特別字元',
+ 'wikieditor-toolbar-characters-page-latin' => '拉ä¸æ–‡',
+ 'wikieditor-toolbar-characters-page-latinextended' => 'Latin擴展左',
+ 'wikieditor-toolbar-characters-page-ipa' => 'IPA',
+ 'wikieditor-toolbar-characters-page-symbols' => '符號',
+ 'wikieditor-toolbar-characters-page-greek' => '希臘文',
+ 'wikieditor-toolbar-characters-page-cyrillic' => '西里爾文',
+ 'wikieditor-toolbar-characters-page-arabic' => '阿拉伯文',
+ 'wikieditor-toolbar-characters-page-hebrew' => '希伯來文',
+ 'wikieditor-toolbar-characters-page-bangla' => 'Bangla
+Bangla',
+ 'wikieditor-toolbar-characters-page-telugu' => 'Telugu',
+ 'wikieditor-toolbar-characters-page-sinhala' => 'Sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'Gujarati',
+ 'wikieditor-toolbar-section-help' => '幫手',
+ 'wikieditor-toolbar-help-heading-description' => 'æè¿°',
+ 'wikieditor-toolbar-help-heading-syntax' => '你輸入啲乜',
+ 'wikieditor-toolbar-help-heading-result' => '你拎到啲乜',
+ 'wikieditor-toolbar-help-page-format' => 'æ ¼å¼',
+ 'wikieditor-toolbar-help-page-link' => '連çµ',
+ 'wikieditor-toolbar-help-page-heading' => '標題',
+ 'wikieditor-toolbar-help-page-list' => '一覽',
+ 'wikieditor-toolbar-help-page-file' => '檔案',
+ 'wikieditor-toolbar-help-page-reference' => 'åƒè€ƒ',
+ 'wikieditor-toolbar-help-page-discussion' => '討論',
+ 'wikieditor-toolbar-help-content-italic-description' => '斜體',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''斜字''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>斜字</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'ç²—é«”',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''ç²—å­—'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>ç²—å­—</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => '粗斜體',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''粗斜字'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>粗斜字</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => '內連',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[é é¡Œ|連çµæ¨™ç±¤]]<br />[[é é¡Œ]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>連çµæ¨™ç±¤</a><br /><a href='#'>é é¡Œ</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => '外連',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org 連çµæ¨™ç±¤]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>連çµæ¨™ç±¤</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '第2級標題',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== 標題字 ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>標題字</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '第3級標題',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== 標題字 ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>標題字</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '第4級標題',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== 標題字 ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>標題字</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '第5級標題',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== 標題字 =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>標題字</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => '點列一覽',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* 一覽項目<br />* 一覽項目',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>一覽項目</li><li>一覽項目</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => '數字一覽',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# 一覽項目<br /># 一覽項目',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>一覽項目</li><li>一覽項目</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'çµåˆæª”',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|標題字]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='標題字' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='放大' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>標題字</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'åƒè€ƒ',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'é å­—。&lt;ref name="test"&gt;[http://www.example.org 連字],附加字。&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "é å­—。<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'åŒåƒè€ƒé™„加用途',
+ 'wikieditor-toolbar-help-content-rereference-result' => "é å­—。<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => '顯示喜好',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>拎字</a>,附加字。</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ç°½å加埋時間å°',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>用戶å</a> (<a href='#' title='{{#special:mytalk}}'>討論</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ç°½å',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>用戶å</a> (<a href='#' title='{{#special:mytalk}}'>討論</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => '縮排',
+ 'wikieditor-toolbar-help-content-indent-syntax' => '標準字<br />:縮排字<br />::縮排字',
+ 'wikieditor-toolbar-help-content-indent-result' => '標準字<dl><dd>縮排字<dl><dd>縮排字</dd></dl></dd></dl>',
+);
+
+/** Simplified Chinese (‪中文(简体)‬)
+ * @author Bencmq
+ * @author Fantasticfears
+ * @author Gaoxuewei
+ * @author Hydra
+ * @author Liangent
+ * @author Onecountry
+ * @author PhiLiP
+ * @author Shizhao
+ * @author Xiaomingyan
+ */
+$messages['zh-hans'] = array(
+ 'wikieditor' => '高级维基文本编辑界é¢',
+ 'wikieditor-desc' => 'æä¾›å¯æ‰©å……的维基文本编辑界é¢åŠåŠŸèƒ½ç»„件',
+ 'wikieditor-wikitext-tab' => '维基文本',
+ 'wikieditor-loading' => '载入中',
+ 'wikieditor-preview-preference' => 'å¯ç”¨åŒåˆ—对比预览',
+ 'wikieditor-preview-tab' => '预览',
+ 'wikieditor-preview-changes-tab' => '修订',
+ 'wikieditor-preview-loading' => '载入中……',
+ 'wikieditor-previewDialog-preference' => 'å¯ç”¨é¢„览对è¯æ¡†çš„',
+ 'wikieditor-previewDialog-tab' => '预览',
+ 'wikieditor-previewDialog-loading' => '载入中……',
+ 'wikieditor-publish-preference' => 'å¯ç”¨é€æ­¥å‘表功能',
+ 'wikieditor-publish-button-publish' => 'å‘表',
+ 'wikieditor-publish-button-cancel' => 'å–消',
+ 'wikieditor-publish-dialog-title' => 'å‘表到{{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => '编辑摘è¦ï¼ˆç®€è¦æ述您作出的编辑):',
+ 'wikieditor-publish-dialog-minor' => 'å°ä¿®æ”¹',
+ 'wikieditor-publish-dialog-watch' => '监视本页',
+ 'wikieditor-publish-dialog-publish' => 'å‘表',
+ 'wikieditor-publish-dialog-goback' => 'åŽé€€',
+ 'wikieditor-template-editor-preference' => 'å¯ç”¨wiki模æ¿çš„表å•å¼ç¼–辑',
+ 'wikieditor-template-editor-dialog-title' => '编辑模æ¿',
+ 'wikieditor-template-editor-dialog-submit' => 'æ›´æ–°',
+ 'wikieditor-template-editor-dialog-cancel' => 'å–消',
+ 'wikieditor-templates-preference' => 'å¯ç”¨æŠ˜å æ¨¡æ¿åŠŸèƒ½',
+ 'wikieditor-toc-preference' => 'å¯ç”¨å¯¼èˆªç›®å½•',
+ 'wikieditor-toc-show' => '显示内容',
+ 'wikieditor-toc-hide' => 'éšè—内容',
+ 'wikieditor-toolbar' => '编辑工具æ ',
+ 'wikieditor-toolbar-desc' => '具有增强å¯ç”¨æ€§çš„页é¢ç¼–辑工具',
+ 'wikieditor-toolbar-preference' => 'å¯ç”¨å¢žå¼ºç¼–辑工具æ ',
+ 'wikieditor-toolbar-dialogs-preference' => 'å¯ç”¨å¯¹è¯æ¡†æ’入链接ã€è¡¨æ ¼ç­‰',
+ 'wikieditor-toolbar-hidesig' => 'éšè—从网页的主è¦å‘½å空间中的签å按钮',
+ 'wikieditor-toolbar-loading' => '正在载入',
+ 'wikieditor-toolbar-tool-bold' => '粗体',
+ 'wikieditor-toolbar-tool-bold-example' => '粗体文字',
+ 'wikieditor-toolbar-tool-italic' => '斜体',
+ 'wikieditor-toolbar-tool-italic-example' => '斜体文字',
+ 'wikieditor-toolbar-tool-ilink' => '内部链接',
+ 'wikieditor-toolbar-tool-ilink-example' => '链接标题',
+ 'wikieditor-toolbar-tool-xlink' => '外部链接(注æ„加å‰ç¼€http://)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com 链接标题',
+ 'wikieditor-toolbar-tool-link' => '链接',
+ 'wikieditor-toolbar-tool-link-title' => 'æ’入链接',
+ 'wikieditor-toolbar-tool-link-int' => '链往wiki页é¢',
+ 'wikieditor-toolbar-tool-link-int-target' => '目标页é¢æˆ–网å€ï¼š',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => '页é¢æ ‡é¢˜æˆ–URL',
+ 'wikieditor-toolbar-tool-link-int-text' => '显示文字:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => '显示文字',
+ 'wikieditor-toolbar-tool-link-ext' => '链往外部网页',
+ 'wikieditor-toolbar-tool-link-ext-target' => '链接网å€ï¼š',
+ 'wikieditor-toolbar-tool-link-ext-text' => '链接文字:',
+ 'wikieditor-toolbar-tool-link-insert' => 'æ’入链接',
+ 'wikieditor-toolbar-tool-link-cancel' => 'å–消',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => '页é¢å­˜åœ¨',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => '该页é¢ä¸å­˜åœ¨',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => '无效标题',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => '外部链接',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => '检查页é¢æ˜¯å¦å­˜åœ¨â€¦â€¦',
+ 'wikieditor-toolbar-tool-link-int-invalid' => '您所指定的标题无效。',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => '您输入的网å€ä¼¼ä¹ŽæŒ‡å‘å¦ä¸€ä¸ªwiki页é¢ï¼Œæ˜¯å¦å¸Œæœ›å°†å…¶æ”¹ä¸ºå†…部链接?',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => '内部链接',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => '外部链接',
+ 'wikieditor-toolbar-tool-link-empty' => '您没有输入链接内容。',
+ 'wikieditor-toolbar-tool-file' => '嵌入文件',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => '注释',
+ 'wikieditor-toolbar-tool-reference-example' => '在此处æ’入注释文字',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'å–消',
+ 'wikieditor-toolbar-tool-reference-title' => 'æ’入注释内容',
+ 'wikieditor-toolbar-tool-reference-insert' => 'æ’å…¥',
+ 'wikieditor-toolbar-tool-reference-text' => '注释文字',
+ 'wikieditor-toolbar-tool-signature' => 'ç­¾å和时间戳',
+ 'wikieditor-toolbar-section-advanced' => '高级',
+ 'wikieditor-toolbar-tool-heading' => '标题',
+ 'wikieditor-toolbar-tool-heading-1' => '1级',
+ 'wikieditor-toolbar-tool-heading-2' => '2级',
+ 'wikieditor-toolbar-tool-heading-3' => '3级',
+ 'wikieditor-toolbar-tool-heading-4' => '4级',
+ 'wikieditor-toolbar-tool-heading-5' => '5级',
+ 'wikieditor-toolbar-tool-heading-example' => '标题文字',
+ 'wikieditor-toolbar-group-format' => 'æ ¼å¼',
+ 'wikieditor-toolbar-tool-ulist' => 'æ— åºåˆ—表',
+ 'wikieditor-toolbar-tool-ulist-example' => 'æ— åºåˆ—表项',
+ 'wikieditor-toolbar-tool-olist' => '有åºåˆ—表',
+ 'wikieditor-toolbar-tool-olist-example' => '有åºåˆ—表项',
+ 'wikieditor-toolbar-tool-indent' => '缩进',
+ 'wikieditor-toolbar-tool-indent-example' => '已缩进行',
+ 'wikieditor-toolbar-tool-nowiki' => 'éžç»´åŸºæ ¼å¼æ–‡å­—',
+ 'wikieditor-toolbar-tool-nowiki-example' => '在此处æ’å…¥éžç»´åŸºæ ¼å¼æ–‡å­—',
+ 'wikieditor-toolbar-tool-redirect' => 'é‡å®šå‘',
+ 'wikieditor-toolbar-tool-redirect-example' => '目标页å称',
+ 'wikieditor-toolbar-tool-big' => '大',
+ 'wikieditor-toolbar-tool-big-example' => '大å·å­—',
+ 'wikieditor-toolbar-tool-small' => 'å°',
+ 'wikieditor-toolbar-tool-small-example' => 'å°å·å­—',
+ 'wikieditor-toolbar-tool-superscript' => '上标',
+ 'wikieditor-toolbar-tool-superscript-example' => '上标文字',
+ 'wikieditor-toolbar-tool-subscript' => '下标',
+ 'wikieditor-toolbar-tool-subscript-example' => '下标文字',
+ 'wikieditor-toolbar-group-insert' => 'æ’å…¥',
+ 'wikieditor-toolbar-tool-gallery' => '图库',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|标题1
+$1:Example.jpg|标题2',
+ 'wikieditor-toolbar-tool-newline' => 'æ¢è¡Œ',
+ 'wikieditor-toolbar-tool-table' => '表格',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! 标题1
+! 标题2
+! 标题3
+|-
+| 第一行第一个å•å…ƒæ ¼
+| 第一行第二个å•å…ƒæ ¼
+| 第一行第三个å•å…ƒæ ¼
+|-
+| 第二行第一个å•å…ƒæ ¼
+| 第二行第二个å•å…ƒæ ¼
+| 第二行第三个å•å…ƒæ ¼',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => 'å•å…ƒæ ¼æ–‡å­—',
+ 'wikieditor-toolbar-tool-table-example-header' => '标题文字',
+ 'wikieditor-toolbar-tool-table-title' => 'æ’入表格',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => '行',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => '列',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => '添加标题行',
+ 'wikieditor-toolbar-tool-table-wikitable' => '显示边框',
+ 'wikieditor-toolbar-tool-table-sortable' => '使表格内容å¯æŽ’åº',
+ 'wikieditor-toolbar-tool-table-example' => '示例',
+ 'wikieditor-toolbar-tool-table-preview' => '预览',
+ 'wikieditor-toolbar-tool-table-insert' => 'æ’å…¥',
+ 'wikieditor-toolbar-tool-table-cancel' => 'å–消',
+ 'wikieditor-toolbar-tool-table-toomany' => '在这个对è¯æ¡†ä¸­æ— æ³•æ’入超过$1个å•å…ƒæ ¼çš„表格。',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => '您输入的行数或列数无效。',
+ 'wikieditor-toolbar-tool-table-zero' => '您ä¸èƒ½æ’入一个零行或零列的表格。',
+ 'wikieditor-toolbar-tool-replace' => '查找和替æ¢',
+ 'wikieditor-toolbar-tool-replace-title' => '查找和替æ¢',
+ 'wikieditor-toolbar-tool-replace-search' => '查找:',
+ 'wikieditor-toolbar-tool-replace-replace' => '替æ¢ä¸ºï¼š',
+ 'wikieditor-toolbar-tool-replace-case' => '区分大å°å†™',
+ 'wikieditor-toolbar-tool-replace-regex' => '使用正则表达å¼',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => '查找下一个',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => '替æ¢ä¸‹ä¸€ä¸ª',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => '替æ¢æ‰€æœ‰',
+ 'wikieditor-toolbar-tool-replace-close' => '关闭',
+ 'wikieditor-toolbar-tool-replace-nomatch' => '没有找到任何匹é…项。',
+ 'wikieditor-toolbar-tool-replace-success' => '完æˆ$1次替æ¢ã€‚',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => '您没有输入查找内容。',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => '您输入的正则表达å¼æ— æ•ˆï¼š$1',
+ 'wikieditor-toolbar-section-characters' => '特殊文字',
+ 'wikieditor-toolbar-characters-page-latin' => '拉ä¸å­—æ¯',
+ 'wikieditor-toolbar-characters-page-latinextended' => '扩展拉ä¸å­—æ¯',
+ 'wikieditor-toolbar-characters-page-ipa' => '国际音标',
+ 'wikieditor-toolbar-characters-page-symbols' => '符å·',
+ 'wikieditor-toolbar-characters-page-greek' => '希腊字æ¯',
+ 'wikieditor-toolbar-characters-page-cyrillic' => '西里尔字æ¯',
+ 'wikieditor-toolbar-characters-page-arabic' => '阿拉伯字æ¯',
+ 'wikieditor-toolbar-characters-page-persian' => '波斯语',
+ 'wikieditor-toolbar-characters-page-hebrew' => '希伯æ¥å­—æ¯',
+ 'wikieditor-toolbar-characters-page-bangla' => '孟加拉',
+ 'wikieditor-toolbar-characters-page-telugu' => 'æ³°å¢å›ºå­—æ¯',
+ 'wikieditor-toolbar-characters-page-sinhala' => '僧伽罗字æ¯',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'å¤å‰æ‹‰ç‰¹å­—æ¯',
+ 'wikieditor-toolbar-characters-page-thai' => '泰语',
+ 'wikieditor-toolbar-characters-page-lao' => 'è€æŒè¯­',
+ 'wikieditor-toolbar-characters-page-khmer' => '高棉语',
+ 'wikieditor-toolbar-section-help' => '帮助',
+ 'wikieditor-toolbar-help-heading-description' => '说明',
+ 'wikieditor-toolbar-help-heading-syntax' => '输入内容',
+ 'wikieditor-toolbar-help-heading-result' => '输出结果',
+ 'wikieditor-toolbar-help-page-format' => 'æ ¼å¼',
+ 'wikieditor-toolbar-help-page-link' => '链接',
+ 'wikieditor-toolbar-help-page-heading' => '标题',
+ 'wikieditor-toolbar-help-page-list' => '列表',
+ 'wikieditor-toolbar-help-page-file' => '文件',
+ 'wikieditor-toolbar-help-page-reference' => 'å‚考',
+ 'wikieditor-toolbar-help-page-discussion' => '讨论',
+ 'wikieditor-toolbar-help-content-italic-description' => '斜体',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''斜体文字''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>斜体文字</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => '粗体',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''粗体文字'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>粗体文字</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => '斜粗体',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''斜粗体文字'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>粗斜体文本</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => '内部链接',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[页é¢æ ‡é¢˜|链接标签]]<br />[[页é¢æ ‡é¢˜]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>链接标签</a><br /><a href='#'>页é¢æ ‡é¢˜</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => '外部链接',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org 链接标签]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>链接标签</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '2级标题',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== 标题文本 ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>标题文本</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '3级标题',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== 标题文本 ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>标题文本</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '4级标题',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== 标题文本 ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>标题文本</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '5级标题',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== 标题文本 =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>标题文本</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => 'æ— åºåˆ—表',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* 列表项<br />* 列表项',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>列表项</li><li>列表项</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => '有åºåˆ—表',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# 列表项<br /># 列表项',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>列表项</li><li>列表项</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => '嵌入文件',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|标题文本]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='标题文本' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='放大' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>标题文本</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => '注释',
+ 'wikieditor-toolbar-help-content-reference-syntax' => '页é¢æ–‡æœ¬ã€‚&lt;ref name="测试"&gt;[http://www.example.org 链接文本],附加文本。&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "页é¢æ–‡æœ¬ã€‚<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'å¤ç”¨æ³¨é‡Š',
+ 'wikieditor-toolbar-help-content-rereference-syntax' => '&lt;ref name="test" /&gt;',
+ 'wikieditor-toolbar-help-content-rereference-result' => "页é¢æ–‡æœ¬ã€‚<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => '显示å‚考文献',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>链接文本</a>,附加文本。</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => '带时间戳的签å',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>用户å</a> (<a href='#' title='{{#special:mytalk}}'>讨论</a>) 2009å¹´6月10æ—¥ (三) 15:54 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ç­¾å',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>用户å</a> (<a href='#' title='{{#special:mytalk}}'>讨论</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => '缩进',
+ 'wikieditor-toolbar-help-content-indent-syntax' => '标准文本<br />:缩进文本<br />::缩进文本',
+ 'wikieditor-toolbar-help-content-indent-result' => '标准文本<dl><dd>缩进文本<dl><dd>缩进文本</dd></dl></dd></dl>',
+);
+
+/** Traditional Chinese (‪中文(ç¹é«”)‬)
+ * @author Frankou
+ * @author Gaoxuewei
+ * @author Horacewai2
+ * @author KaiesTse
+ * @author Liangent
+ * @author Mark85296341
+ * @author PhiLiP
+ * @author Waihorace
+ * @author Wong128hk
+ * @author Wrightbus
+ */
+$messages['zh-hant'] = array(
+ 'wikieditor' => '進階維基文字編輯介é¢',
+ 'wikieditor-desc' => 'æä¾›å¯æ“´å……的維基文字編輯介é¢åŠåŠŸèƒ½çµ„件',
+ 'wikieditor-wikitext-tab' => '維基文字',
+ 'wikieditor-loading' => '載入中',
+ 'wikieditor-preview-preference' => '啟用雙列å°æ¯”é è¦½',
+ 'wikieditor-preview-tab' => 'é è¦½',
+ 'wikieditor-preview-changes-tab' => '修訂',
+ 'wikieditor-preview-loading' => '載入中...',
+ 'wikieditor-previewDialog-preference' => '啟用é è¦½å°è©±æ¡†',
+ 'wikieditor-previewDialog-tab' => 'é è¦½',
+ 'wikieditor-previewDialog-loading' => '載入中...',
+ 'wikieditor-publish-preference' => '啟用é€æ­¥ç™¼è¡¨åŠŸèƒ½',
+ 'wikieditor-publish-button-publish' => '發表',
+ 'wikieditor-publish-button-cancel' => 'å–消',
+ 'wikieditor-publish-dialog-title' => '發表到 {{SITENAME}}',
+ 'wikieditor-publish-dialog-summary' => '編輯摘è¦ï¼ˆç°¡è¦æ述您åšå‡ºçš„編輯):',
+ 'wikieditor-publish-dialog-minor' => 'å°ä¿®æ”¹',
+ 'wikieditor-publish-dialog-watch' => '監視本é ',
+ 'wikieditor-publish-dialog-publish' => '發表',
+ 'wikieditor-publish-dialog-goback' => '返回',
+ 'wikieditor-template-editor-preference' => '啟用 wiki 模æ¿çš„表單å¼ç·¨è¼¯',
+ 'wikieditor-template-editor-dialog-title' => '編輯模æ¿',
+ 'wikieditor-template-editor-dialog-submit' => 'æ›´æ–°',
+ 'wikieditor-template-editor-dialog-cancel' => 'å–消',
+ 'wikieditor-templates-preference' => '使模æ¿å€’å¡Œ',
+ 'wikieditor-toc-preference' => '啟用å¯å°Žè¦½ç›®éŒ„',
+ 'wikieditor-toc-show' => '顯示內容',
+ 'wikieditor-toc-hide' => 'éš±è—內容',
+ 'wikieditor-toolbar' => '編輯工具列',
+ 'wikieditor-toolbar-desc' => 'å¯ç”¨æ€§æ›´ä½³ä¹‹ç·¨è¼¯å·¥å…·',
+ 'wikieditor-toolbar-preference' => '啟用加強編輯工具列',
+ 'wikieditor-toolbar-dialogs-preference' => '使用å°è©±æ¡†æ’入連çµã€è¡¨æ ¼ç­‰',
+ 'wikieditor-toolbar-hidesig' => '從主å字空間的é é¢ä¸­éš±è—ç°½å按鈕',
+ 'wikieditor-toolbar-loading' => '載入中...',
+ 'wikieditor-toolbar-tool-bold' => 'ç²—é«”',
+ 'wikieditor-toolbar-tool-bold-example' => '粗體文字',
+ 'wikieditor-toolbar-tool-italic' => '斜體',
+ 'wikieditor-toolbar-tool-italic-example' => '斜體文字',
+ 'wikieditor-toolbar-tool-ilink' => '內部連çµ',
+ 'wikieditor-toolbar-tool-ilink-example' => '連çµæ¨™é¡Œ',
+ 'wikieditor-toolbar-tool-xlink' => '外部連çµï¼ˆè¨˜ä½ä»¥ http:// 文字開頭)',
+ 'wikieditor-toolbar-tool-xlink-example' => 'http://www.example.com 連çµæ¨™é¡Œ',
+ 'wikieditor-toolbar-tool-link' => '連çµ',
+ 'wikieditor-toolbar-tool-link-title' => 'æ’入連çµ',
+ 'wikieditor-toolbar-tool-link-int' => '連往 wiki é é¢',
+ 'wikieditor-toolbar-tool-link-int-target' => '目標é é¢æˆ–網å€ï¼š',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip' => 'é é¢æ¨™é¡Œæˆ– URL',
+ 'wikieditor-toolbar-tool-link-int-text' => '顯示文字:',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip' => '輸入須展示文字',
+ 'wikieditor-toolbar-tool-link-ext' => '連往外部網é ',
+ 'wikieditor-toolbar-tool-link-ext-target' => '連çµç¶²å€ï¼š',
+ 'wikieditor-toolbar-tool-link-ext-text' => '連çµæ述文字:',
+ 'wikieditor-toolbar-tool-link-insert' => 'æ’入連çµ',
+ 'wikieditor-toolbar-tool-link-cancel' => 'å–消',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists' => 'é é¢å·²å­˜åœ¨',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists' => 'é é¢æœªå­˜åœ¨',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid' => '無效標題',
+ 'wikieditor-toolbar-tool-link-int-target-status-external' => '外部連çµ',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading' => '正檢查é é¢æ˜¯å¦å­˜åœ¨â€¦â€¦',
+ 'wikieditor-toolbar-tool-link-int-invalid' => '所指定標題無效。',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal' => '閣下所輸入 URL 似乎指å‘å¦ä¸€å€‹ wiki é é¢ï¼Œè«‹å•é ˆå¦è½‰ç‚ºå…§éƒ¨é€£çµï¼Ÿ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int' => '內部連çµ',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' => '外部連çµ',
+ 'wikieditor-toolbar-tool-link-empty' => '閣下並未輸入連çµã€‚',
+ 'wikieditor-toolbar-tool-file' => 'çµåˆæ¨™é¡Œ',
+ 'wikieditor-toolbar-tool-file-example' => 'Example.jpg',
+ 'wikieditor-toolbar-tool-reference' => 'åƒè€ƒ',
+ 'wikieditor-toolbar-tool-reference-example' => 'æ’入腳註文字於此',
+ 'wikieditor-toolbar-tool-reference-cancel' => 'å–消',
+ 'wikieditor-toolbar-tool-reference-title' => 'æ’å…¥åƒè€ƒä¾†æº',
+ 'wikieditor-toolbar-tool-reference-insert' => 'æ’å…¥',
+ 'wikieditor-toolbar-tool-reference-text' => 'åƒè€ƒæ–‡æœ¬',
+ 'wikieditor-toolbar-tool-signature' => 'ç°½å加時間',
+ 'wikieditor-toolbar-section-advanced' => '進階',
+ 'wikieditor-toolbar-tool-heading' => '標題',
+ 'wikieditor-toolbar-tool-heading-1' => '1ç´š',
+ 'wikieditor-toolbar-tool-heading-2' => '2ç´š',
+ 'wikieditor-toolbar-tool-heading-3' => '3ç´š',
+ 'wikieditor-toolbar-tool-heading-4' => '4ç´š',
+ 'wikieditor-toolbar-tool-heading-5' => '5ç´š',
+ 'wikieditor-toolbar-tool-heading-example' => '標題文字',
+ 'wikieditor-toolbar-group-format' => 'æ ¼å¼',
+ 'wikieditor-toolbar-tool-ulist' => '點列',
+ 'wikieditor-toolbar-tool-ulist-example' => '點列項目',
+ 'wikieditor-toolbar-tool-olist' => 'åºåˆ—',
+ 'wikieditor-toolbar-tool-olist-example' => 'åºåˆ—é …ç›®',
+ 'wikieditor-toolbar-tool-indent' => '縮排',
+ 'wikieditor-toolbar-tool-indent-example' => '已增縮排',
+ 'wikieditor-toolbar-tool-nowiki' => '入去格å¼æ–‡å­—',
+ 'wikieditor-toolbar-tool-nowiki-example' => 'æ’入去格å¼æ–‡å­—於此',
+ 'wikieditor-toolbar-tool-redirect' => 'é‡å®šå‘',
+ 'wikieditor-toolbar-tool-redirect-example' => '目標é å稱',
+ 'wikieditor-toolbar-tool-big' => '大',
+ 'wikieditor-toolbar-tool-big-example' => '大',
+ 'wikieditor-toolbar-tool-small' => 'å°',
+ 'wikieditor-toolbar-tool-small-example' => 'å°',
+ 'wikieditor-toolbar-tool-superscript' => '上標',
+ 'wikieditor-toolbar-tool-superscript-example' => '上標文字',
+ 'wikieditor-toolbar-tool-subscript' => '下標',
+ 'wikieditor-toolbar-tool-subscript-example' => '下標文字',
+ 'wikieditor-toolbar-group-insert' => 'æ’å…¥',
+ 'wikieditor-toolbar-tool-gallery' => '畫廊',
+ 'wikieditor-toolbar-tool-gallery-example' => '$1:Example.jpg|標題1
+$1:Example.jpg|標題2',
+ 'wikieditor-toolbar-tool-newline' => 'æ›è¡Œ',
+ 'wikieditor-toolbar-tool-table' => '表格',
+ 'wikieditor-toolbar-tool-table-example-old' => '-
+! 表頭 1
+! 表頭 2
+! 表頭 3
+|-
+| 行 1, 格 1
+| 行 1, 格 2
+| 行 1, 格 3
+|-
+| 行 2, 格 1
+| 行 2, 格 2
+| 行 2, 格 3',
+ 'wikieditor-toolbar-tool-table-example-cell-text' => '-
+! 表頭 1
+! 表頭 2
+! 表頭 3
+|-
+| 行 1, 格 1
+| 行 1, 格 2
+| 行 1, 格 3
+|-
+| 行 2, 格 1
+| 行 2, 格 2
+| 行 2, 格 3',
+ 'wikieditor-toolbar-tool-table-example-header' => '標題',
+ 'wikieditor-toolbar-tool-table-title' => 'æ’入表格',
+ 'wikieditor-toolbar-tool-table-dimensions-rows' => '行',
+ 'wikieditor-toolbar-tool-table-dimensions-columns' => '列',
+ 'wikieditor-toolbar-tool-table-dimensions-header' => '新增標題行',
+ 'wikieditor-toolbar-tool-table-wikitable' => '設定邊框格å¼',
+ 'wikieditor-toolbar-tool-table-sortable' => '使表格內容å¯æŽ’åº',
+ 'wikieditor-toolbar-tool-table-example' => '-
+! 表頭 1
+! 表頭 2
+! 表頭 3
+|-
+| 行 1, 格 1
+| 行 1, 格 2
+| 行 1, 格 3
+|-
+| 行 2, 格 1
+| 行 2, 格 2
+| 行 2, 格 3',
+ 'wikieditor-toolbar-tool-table-preview' => 'é è¦½',
+ 'wikieditor-toolbar-tool-table-insert' => 'æ’å…¥',
+ 'wikieditor-toolbar-tool-table-cancel' => 'å–消',
+ 'wikieditor-toolbar-tool-table-toomany' => '在這個å°è©±æ¡†ä¸­ç„¡æ³•æ’å…¥è¶…éŽ $1 個單元格的表格。',
+ 'wikieditor-toolbar-tool-table-invalidnumber' => '您輸入的行數或列數無效。',
+ 'wikieditor-toolbar-tool-table-zero' => '您ä¸èƒ½æ’入一個零行或零列的表格。',
+ 'wikieditor-toolbar-tool-replace' => '尋找和替æ›',
+ 'wikieditor-toolbar-tool-replace-title' => '尋找和替æ›',
+ 'wikieditor-toolbar-tool-replace-search' => '尋找:',
+ 'wikieditor-toolbar-tool-replace-replace' => '替æ›ç‚ºï¼š',
+ 'wikieditor-toolbar-tool-replace-case' => 'å€åˆ†å¤§å°å¯«',
+ 'wikieditor-toolbar-tool-replace-regex' => '使用正則表é”å¼',
+ 'wikieditor-toolbar-tool-replace-button-findnext' => '尋找下一個',
+ 'wikieditor-toolbar-tool-replace-button-replacenext' => '替æ›ä¸‹ä¸€å€‹',
+ 'wikieditor-toolbar-tool-replace-button-replaceall' => '替æ›æ‰€æœ‰',
+ 'wikieditor-toolbar-tool-replace-close' => '關閉',
+ 'wikieditor-toolbar-tool-replace-nomatch' => '沒有找到任何符åˆé …目。',
+ 'wikieditor-toolbar-tool-replace-success' => 'å®Œæˆ $1 次替æ›ã€‚',
+ 'wikieditor-toolbar-tool-replace-emptysearch' => '您沒有輸入尋找內容。',
+ 'wikieditor-toolbar-tool-replace-invalidregex' => '您輸入的正則表é”å¼ç„¡æ•ˆï¼š$1',
+ 'wikieditor-toolbar-section-characters' => '特殊文字',
+ 'wikieditor-toolbar-characters-page-latin' => '拉ä¸å­—æ¯',
+ 'wikieditor-toolbar-characters-page-latinextended' => '擴展拉ä¸å­—æ¯',
+ 'wikieditor-toolbar-characters-page-ipa' => '國際音標',
+ 'wikieditor-toolbar-characters-page-symbols' => '符號',
+ 'wikieditor-toolbar-characters-page-greek' => '希臘字æ¯',
+ 'wikieditor-toolbar-characters-page-cyrillic' => '西里爾字æ¯',
+ 'wikieditor-toolbar-characters-page-arabic' => '阿拉伯字æ¯',
+ 'wikieditor-toolbar-characters-page-persian' => '波斯語',
+ 'wikieditor-toolbar-characters-page-hebrew' => '希伯來字æ¯',
+ 'wikieditor-toolbar-characters-page-bangla' => '孟加拉',
+ 'wikieditor-toolbar-characters-page-telugu' => '泰盧固語',
+ 'wikieditor-toolbar-characters-page-sinhala' => '僧伽羅文',
+ 'wikieditor-toolbar-characters-page-gujarati' => 'å¤å‰æ‹‰ç‰¹èªž',
+ 'wikieditor-toolbar-characters-page-thai' => '泰語',
+ 'wikieditor-toolbar-characters-page-lao' => '寮語',
+ 'wikieditor-toolbar-characters-page-khmer' => '高棉語',
+ 'wikieditor-toolbar-section-help' => '幫助',
+ 'wikieditor-toolbar-help-heading-description' => 'æè¿°',
+ 'wikieditor-toolbar-help-heading-syntax' => '您輸入什麼',
+ 'wikieditor-toolbar-help-heading-result' => '您得到什麼',
+ 'wikieditor-toolbar-help-page-format' => 'æ ¼å¼',
+ 'wikieditor-toolbar-help-page-link' => '連çµ',
+ 'wikieditor-toolbar-help-page-heading' => '標題',
+ 'wikieditor-toolbar-help-page-list' => '列表',
+ 'wikieditor-toolbar-help-page-file' => '檔案',
+ 'wikieditor-toolbar-help-page-reference' => 'åƒè€ƒ',
+ 'wikieditor-toolbar-help-page-discussion' => '討論',
+ 'wikieditor-toolbar-help-content-italic-description' => '斜體',
+ 'wikieditor-toolbar-help-content-italic-syntax' => "''斜體文字''",
+ 'wikieditor-toolbar-help-content-italic-result' => '<em>斜體文字</em>',
+ 'wikieditor-toolbar-help-content-bold-description' => 'ç²—é«”',
+ 'wikieditor-toolbar-help-content-bold-syntax' => "'''粗體文字'''",
+ 'wikieditor-toolbar-help-content-bold-result' => '<strong>粗體文字</strong>',
+ 'wikieditor-toolbar-help-content-bolditalic-description' => '粗斜體',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax' => "'''''粗斜體文字'''''",
+ 'wikieditor-toolbar-help-content-bolditalic-result' => '<strong><em>粗斜體文字</em></strong>',
+ 'wikieditor-toolbar-help-content-ilink-description' => '內部連çµ',
+ 'wikieditor-toolbar-help-content-ilink-syntax' => '[[é é¢æ¨™é¡Œ|連çµæ¨™ç±¤]]<br />[[é é¢æ¨™é¡Œ]]',
+ 'wikieditor-toolbar-help-content-ilink-result' => "<a href='#'>連çµæ¨™ç±¤</a><br /><a href='#'>é é¢æ¨™é¡Œ</a>",
+ 'wikieditor-toolbar-help-content-xlink-description' => '外部連çµ',
+ 'wikieditor-toolbar-help-content-xlink-syntax' => '[http://www.example.org 連çµæ¨™ç±¤]<br />[http://www.example.org]<br />http://www.example.org',
+ 'wikieditor-toolbar-help-content-xlink-result' => "<a href='#' class='external'>連çµæ¨™ç±¤</a><br /><a href='#' class='external autonumber'>[1]</a><br /><a href='#' class='external'>http://www.example.org</a>",
+ 'wikieditor-toolbar-help-content-heading2-description' => '第2級標題',
+ 'wikieditor-toolbar-help-content-heading2-syntax' => '== 標題文字 ==',
+ 'wikieditor-toolbar-help-content-heading2-result' => '<h2>標題文字</h2>',
+ 'wikieditor-toolbar-help-content-heading3-description' => '第3級標題',
+ 'wikieditor-toolbar-help-content-heading3-syntax' => '=== 標題文字 ===',
+ 'wikieditor-toolbar-help-content-heading3-result' => '<h3>標題文字</h3>',
+ 'wikieditor-toolbar-help-content-heading4-description' => '第4級標題',
+ 'wikieditor-toolbar-help-content-heading4-syntax' => '==== 標題文字 ====',
+ 'wikieditor-toolbar-help-content-heading4-result' => '<h4>標題文字</h4>',
+ 'wikieditor-toolbar-help-content-heading5-description' => '第5級標題',
+ 'wikieditor-toolbar-help-content-heading5-syntax' => '===== 標題文字 =====',
+ 'wikieditor-toolbar-help-content-heading5-result' => '<h5>標題文字</h5>',
+ 'wikieditor-toolbar-help-content-ulist-description' => '點列列表',
+ 'wikieditor-toolbar-help-content-ulist-syntax' => '* 列表項目<br />* 列表項目',
+ 'wikieditor-toolbar-help-content-ulist-result' => '<ul><li>列表項目</li><li>列表項目</li></ul>',
+ 'wikieditor-toolbar-help-content-olist-description' => '數字列表',
+ 'wikieditor-toolbar-help-content-olist-syntax' => '# 列表項目<br /># 列表項目',
+ 'wikieditor-toolbar-help-content-olist-result' => '<ol><li>列表項目</li><li>列表項目</li></ol>',
+ 'wikieditor-toolbar-help-content-file-description' => 'çµåˆæª”',
+ 'wikieditor-toolbar-help-content-file-syntax' => '[[$1:Example.png|thumb|標題文字]]',
+ 'wikieditor-toolbar-help-content-file-result' => "<div style='width:104px;' class='thumbinner'><a title='標題文字' class='image' href='#'><img height='50' width='100' border='0' class='thumbimage' src='extensions/WikiEditor/modules/images/toolbar/example-image.png' alt=''/></a><div class='thumbcaption'><div class='magnify'><a title='放大' class='internal' href='#'><img height='11' width='15' alt='' src='$1/common/images/magnify-clip.png'/></a></div>標題文字</div></div>",
+ 'wikieditor-toolbar-help-content-reference-description' => 'åƒè€ƒ',
+ 'wikieditor-toolbar-help-content-reference-syntax' => 'é é¢æ–‡å­—。&lt;ref name="測試"&gt;[http://www.example.org 連çµæ–‡å­—],附加文字。&lt;/ref&gt;',
+ 'wikieditor-toolbar-help-content-reference-result' => "é é¢æ–‡å­—。<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-rereference-description' => 'åŒåƒè€ƒé™„加用途',
+ 'wikieditor-toolbar-help-content-rereference-syntax' => '&lt;ref name="測試" /&gt;',
+ 'wikieditor-toolbar-help-content-rereference-result' => "é é¢æ–‡å­—。<sup><a href='#'>[1]</a></sup>",
+ 'wikieditor-toolbar-help-content-showreferences-description' => '顯示å好',
+ 'wikieditor-toolbar-help-content-showreferences-result' => "<ol class='references'><li id='cite_note-test-0'><b><a title='' href='#'>^</a></b> <a rel='nofollow' title='http://www.example.org' class='external text' href='#'>拎文字</a>,附加文字。</li></ol>",
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description' => 'ç°½å加上時間截記',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result' => "<a href='#' title='{{#special:mypage}}'>用戶å</a> (<a href='#' title='{{#special:mytalk}}'>討論</a>) 15:54, 10 June 2009 (UTC)",
+ 'wikieditor-toolbar-help-content-signature-description' => 'ç°½å',
+ 'wikieditor-toolbar-help-content-signature-result' => "<a href='#' title='{{#special:mypage}}'>用戶å</a> (<a href='#' title='{{#special:mytalk}}'>討論</a>)",
+ 'wikieditor-toolbar-help-content-indent-description' => '縮排',
+ 'wikieditor-toolbar-help-content-indent-syntax' => '標準文字<br />:縮排文字<br />::縮排文字',
+ 'wikieditor-toolbar-help-content-indent-result' => '標準文字<dl><dd>縮排文字<dl><dd>縮排文字</dd></dl></dd></dl>',
+);
+
+/** Zulu (isiZulu)
+ * @author Kuvaly
+ */
+$messages['zu'] = array(
+ 'wikieditor-toolbar-tool-table-preview' => 'Isibonakalo',
+);
+
diff --git a/extensions/WikiEditor/WikiEditor.php b/extensions/WikiEditor/WikiEditor.php
new file mode 100644
index 00000000..5fd7778d
--- /dev/null
+++ b/extensions/WikiEditor/WikiEditor.php
@@ -0,0 +1,508 @@
+<?php
+/**
+ * WikiEditor extension
+ *
+ * @file
+ * @ingroup Extensions
+ *
+ * @author Trevor Parscal <trevor@wikimedia.org>
+ * @author Roan Kattouw <roan.kattouw@gmail.com>
+ * @author Nimish Gautam <nimish@wikimedia.org>
+ * @author Adam Miller <amiller@wikimedia.org>
+ * @license GPL v2 or later
+ * @version 0.3.0
+ */
+
+/* Configuration */
+
+// Each module may be configured individually to be globally on/off or user preference based
+$wgWikiEditorFeatures = array(
+
+ /* Textarea / i-frame compatible (OK to deploy) */
+
+ 'toolbar' => array( 'global' => false, 'user' => true ),
+ // Provides interactive tools
+ 'dialogs' => array( 'global' => false, 'user' => true ),
+ // Hide signature button from main namespace
+ 'hidesig' => array( 'global' => true, 'user' => false ),
+
+ /* Textarea / i-frame compatible, but still experimental and unstable (do not deploy!) */
+
+ // Adds a tab for previewing in-line
+ 'preview' => array( 'global' => false, 'user' => true ),
+ // Adds a button for previewing in a dialog
+ 'previewDialog' => array( 'global' => false, 'user' => false ),
+ // Adds a button and dialog for step-by-step publishing
+ 'publish' => array( 'global' => false, 'user' => true ),
+
+ /* I-frame dependent (do not deploy!) */
+
+ // Failry stable table of contents
+ 'toc' => array( 'global' => false, 'user' => true ),
+ // Pretty broken template collapsing/editing
+ 'templateEditor' => array( 'global' => false, 'user' => false ),
+ // Bare-bones (probably broken) template collapsing
+ 'templates' => array( 'global' => false, 'user' => false ),
+
+);
+
+/* Setup */
+
+$wgExtensionCredits['other'][] = array(
+ 'path' => __FILE__,
+ 'name' => 'WikiEditor',
+ 'author' => array( 'Trevor Parscal', 'Roan Kattouw', 'Nimish Gautam', 'Adam Miller' ),
+ 'version' => '0.3.0',
+ 'url' => 'http://www.mediawiki.org/wiki/Extension:WikiEditor',
+ 'descriptionmsg' => 'wikieditor-desc',
+);
+$wgAutoloadClasses['WikiEditorHooks'] = dirname( __FILE__ ) . '/WikiEditor.hooks.php';
+$wgExtensionMessagesFiles['WikiEditor'] = dirname( __FILE__ ) . '/WikiEditor.i18n.php';
+$wgHooks['EditPage::showEditForm:initial'][] = 'WikiEditorHooks::editPageShowEditFormInitial';
+$wgHooks['GetPreferences'][] = 'WikiEditorHooks::getPreferences';
+$wgHooks['ResourceLoaderGetConfigVars'][] = 'WikiEditorHooks::resourceLoaderGetConfigVars';
+$wgHooks['MakeGlobalVariablesScript'][] = 'WikiEditorHooks::makeGlobalVariablesScript';
+
+$wikiEditorTpl = array(
+ 'localBasePath' => dirname( __FILE__ ) . '/modules',
+ 'remoteExtPath' => 'WikiEditor/modules',
+ 'group' => 'ext.wikiEditor',
+);
+
+$wgResourceModules += array(
+ /* Third-party modules */
+
+ 'contentCollector' => $wikiEditorTpl + array(
+ 'scripts' => 'contentCollector.js',
+ ),
+
+ /* WikiEditor jQuery plugin Resources */
+
+ 'jquery.wikiEditor' => $wikiEditorTpl + array(
+ 'scripts' => 'jquery.wikiEditor.js',
+ 'styles' => 'jquery.wikiEditor.css',
+ 'dependencies' => array(
+ 'jquery.client',
+ 'jquery.textSelection',
+ 'jquery.delayedBind',
+ ),
+ 'messages' => array(
+ 'wikieditor-wikitext-tab',
+ 'wikieditor-loading',
+ ),
+ ),
+ 'jquery.wikiEditor.iframe' => $wikiEditorTpl + array(
+ 'scripts' => 'jquery.wikiEditor.iframe.js',
+ 'dependencies' => array(
+ 'jquery.wikiEditor',
+ 'contentCollector',
+ ),
+ ),
+ 'jquery.wikiEditor.dialogs' => $wikiEditorTpl + array(
+ 'scripts' => 'jquery.wikiEditor.dialogs.js',
+ 'styles' => 'jquery.wikiEditor.dialogs.css',
+ 'dependencies' => array(
+ 'jquery.wikiEditor',
+ 'jquery.wikiEditor.toolbar',
+ 'jquery.ui.dialog',
+ 'jquery.ui.button',
+ 'jquery.ui.draggable',
+ 'jquery.ui.resizable',
+ 'jquery.tabIndex',
+ ),
+ ),
+ 'jquery.wikiEditor.dialogs.config' => $wikiEditorTpl + array(
+ 'scripts' => 'jquery.wikiEditor.dialogs.config.js',
+ 'styles' => 'jquery.wikiEditor.dialogs.config.css',
+ 'dependencies' => array(
+ 'jquery.wikiEditor',
+ 'jquery.wikiEditor.dialogs',
+ 'jquery.wikiEditor.toolbar.i18n',
+ 'jquery.suggestions',
+ ),
+ ),
+ 'jquery.wikiEditor.highlight' => $wikiEditorTpl + array(
+ 'scripts' => 'jquery.wikiEditor.highlight.js',
+ 'dependencies' => array(
+ 'jquery.wikiEditor',
+ 'jquery.wikiEditor.iframe',
+ ),
+ ),
+ 'jquery.wikiEditor.preview' => $wikiEditorTpl + array(
+ 'scripts' => 'jquery.wikiEditor.preview.js',
+ 'styles' => 'jquery.wikiEditor.preview.css',
+ 'dependencies' => 'jquery.wikiEditor',
+ ),
+ 'jquery.wikiEditor.previewDialog' => $wikiEditorTpl + array(
+ 'scripts' => 'jquery.wikiEditor.previewDialog.js',
+ 'styles' => 'jquery.wikiEditor.previewDialog.css',
+ 'dependencies' => array(
+ 'jquery.wikiEditor',
+ 'jquery.wikiEditor.dialogs',
+ ),
+ ),
+ 'jquery.wikiEditor.publish' => $wikiEditorTpl + array(
+ 'scripts' => 'jquery.wikiEditor.publish.js',
+ 'dependencies' => array(
+ 'jquery.wikiEditor',
+ 'jquery.wikiEditor.dialogs',
+ ),
+ ),
+ 'jquery.wikiEditor.templateEditor' => $wikiEditorTpl + array(
+ 'scripts' => 'jquery.wikiEditor.templateEditor.js',
+ 'dependencies' => array(
+ 'jquery.wikiEditor',
+ 'jquery.wikiEditor.iframe',
+ 'jquery.wikiEditor.dialogs',
+ ),
+ ),
+ 'jquery.wikiEditor.templates' => $wikiEditorTpl + array(
+ 'scripts' => 'jquery.wikiEditor.templates.js',
+ 'dependencies' => array(
+ 'jquery.wikiEditor',
+ 'jquery.wikiEditor.iframe',
+ ),
+ ),
+ 'jquery.wikiEditor.toc' => $wikiEditorTpl + array(
+ 'scripts' => 'jquery.wikiEditor.toc.js',
+ 'styles' => 'jquery.wikiEditor.toc.css',
+ 'dependencies' => array(
+ 'jquery.wikiEditor',
+ 'jquery.wikiEditor.iframe',
+ 'jquery.ui.draggable',
+ 'jquery.ui.resizable',
+ 'jquery.autoEllipsis',
+ 'jquery.color',
+ ),
+ ),
+ 'jquery.wikiEditor.toolbar' => $wikiEditorTpl + array(
+ 'scripts' => 'jquery.wikiEditor.toolbar.js',
+ 'styles' => 'jquery.wikiEditor.toolbar.css',
+ 'dependencies' => array(
+ 'jquery.wikiEditor',
+ 'jquery.wikiEditor.toolbar.i18n',
+ ),
+ ),
+ 'jquery.wikiEditor.toolbar.config' => $wikiEditorTpl + array(
+ 'scripts' => 'jquery.wikiEditor.toolbar.config.js',
+ 'dependencies' => array(
+ 'jquery.wikiEditor',
+ 'jquery.wikiEditor.toolbar.i18n',
+ 'jquery.wikiEditor.toolbar',
+ 'jquery.cookie',
+ 'jquery.async',
+ )
+ ),
+ 'jquery.wikiEditor.toolbar.i18n' => $wikiEditorTpl + array(
+ 'messages' => array(
+ // This is a mixed bunch that needs to be separated between dialog and toolbar messages,
+ // but since both the dialog and toolbar config have this as dependency, it's not urgent
+ 'wikieditor-toolbar-loading',
+ /* Main Section */
+ 'wikieditor-toolbar-tool-bold',
+ 'wikieditor-toolbar-tool-bold-example',
+ 'wikieditor-toolbar-tool-italic',
+ 'wikieditor-toolbar-tool-italic-example',
+ 'wikieditor-toolbar-tool-ilink',
+ 'wikieditor-toolbar-tool-ilink-example',
+ 'wikieditor-toolbar-tool-xlink',
+ 'wikieditor-toolbar-tool-xlink-example',
+ 'wikieditor-toolbar-tool-link',
+ 'wikieditor-toolbar-tool-link-title',
+ 'wikieditor-toolbar-tool-link-int',
+ 'wikieditor-toolbar-tool-link-int-target',
+ 'wikieditor-toolbar-tool-link-int-target-tooltip',
+ 'wikieditor-toolbar-tool-link-int-text',
+ 'wikieditor-toolbar-tool-link-int-text-tooltip',
+ 'wikieditor-toolbar-tool-link-ext',
+ 'wikieditor-toolbar-tool-link-ext-target',
+ 'wikieditor-toolbar-tool-link-ext-text',
+ 'wikieditor-toolbar-tool-link-insert',
+ 'wikieditor-toolbar-tool-link-cancel',
+ 'wikieditor-toolbar-tool-link-int-target-status-exists',
+ 'wikieditor-toolbar-tool-link-int-target-status-notexists',
+ 'wikieditor-toolbar-tool-link-int-target-status-invalid',
+ 'wikieditor-toolbar-tool-link-int-target-status-external',
+ 'wikieditor-toolbar-tool-link-int-target-status-loading',
+ 'wikieditor-toolbar-tool-link-int-invalid',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-int',
+ 'wikieditor-toolbar-tool-link-lookslikeinternal-ext',
+ 'wikieditor-toolbar-tool-link-empty',
+ 'wikieditor-toolbar-tool-file',
+ 'wikieditor-toolbar-tool-file-example',
+ 'wikieditor-toolbar-tool-file-pre',
+ 'wikieditor-toolbar-tool-reference',
+ 'wikieditor-toolbar-tool-reference-title',
+ 'wikieditor-toolbar-tool-reference-cancel',
+ 'wikieditor-toolbar-tool-reference-text',
+ 'wikieditor-toolbar-tool-reference-insert',
+ 'wikieditor-toolbar-tool-reference-example',
+ 'wikieditor-toolbar-tool-signature',
+ /* Formatting Section */
+ 'wikieditor-toolbar-section-advanced',
+ 'wikieditor-toolbar-tool-heading',
+ 'wikieditor-toolbar-tool-heading-1',
+ 'wikieditor-toolbar-tool-heading-2',
+ 'wikieditor-toolbar-tool-heading-3',
+ 'wikieditor-toolbar-tool-heading-4',
+ 'wikieditor-toolbar-tool-heading-5',
+ 'wikieditor-toolbar-tool-heading-example',
+ 'wikieditor-toolbar-group-format',
+ 'wikieditor-toolbar-tool-ulist',
+ 'wikieditor-toolbar-tool-ulist-example',
+ 'wikieditor-toolbar-tool-olist',
+ 'wikieditor-toolbar-tool-olist-example',
+ 'wikieditor-toolbar-tool-indent',
+ 'wikieditor-toolbar-tool-indent-example',
+ 'wikieditor-toolbar-tool-nowiki',
+ 'wikieditor-toolbar-tool-nowiki-example',
+ 'wikieditor-toolbar-tool-redirect',
+ 'wikieditor-toolbar-tool-redirect-example',
+ 'wikieditor-toolbar-tool-big',
+ 'wikieditor-toolbar-tool-big-example',
+ 'wikieditor-toolbar-tool-small',
+ 'wikieditor-toolbar-tool-small-example',
+ 'wikieditor-toolbar-tool-superscript',
+ 'wikieditor-toolbar-tool-superscript-example',
+ 'wikieditor-toolbar-tool-subscript',
+ 'wikieditor-toolbar-tool-subscript-example',
+ 'wikieditor-toolbar-group-insert',
+ 'wikieditor-toolbar-tool-gallery',
+ 'wikieditor-toolbar-tool-gallery-example',
+ 'wikieditor-toolbar-tool-newline',
+ 'wikieditor-toolbar-tool-table',
+ 'wikieditor-toolbar-tool-table-example-old',
+ 'wikieditor-toolbar-tool-table-example-cell-text',
+ 'wikieditor-toolbar-tool-table-example',
+ 'wikieditor-toolbar-tool-table-example-header',
+ 'wikieditor-toolbar-tool-table-title',
+ 'wikieditor-toolbar-tool-table-dimensions-rows',
+ 'wikieditor-toolbar-tool-table-dimensions-columns',
+ 'wikieditor-toolbar-tool-table-dimensions-header',
+ 'wikieditor-toolbar-tool-table-wikitable',
+ 'wikieditor-toolbar-tool-table-sortable',
+ 'wikieditor-toolbar-tool-table-insert',
+ 'wikieditor-toolbar-tool-table-cancel',
+ 'wikieditor-toolbar-tool-table-example-text',
+ 'wikieditor-toolbar-tool-table-toomany',
+ 'wikieditor-toolbar-tool-table-invalidnumber',
+ 'wikieditor-toolbar-tool-table-zero',
+ 'wikieditor-toolbar-tool-replace',
+ 'wikieditor-toolbar-tool-replace-title',
+ 'wikieditor-toolbar-tool-replace-search',
+ 'wikieditor-toolbar-tool-replace-replace',
+ 'wikieditor-toolbar-tool-replace-case',
+ 'wikieditor-toolbar-tool-replace-regex',
+ 'wikieditor-toolbar-tool-replace-button-findnext',
+ 'wikieditor-toolbar-tool-replace-button-replacenext',
+ 'wikieditor-toolbar-tool-replace-button-replaceall',
+ 'wikieditor-toolbar-tool-replace-close',
+ 'wikieditor-toolbar-tool-replace-nomatch',
+ 'wikieditor-toolbar-tool-replace-success',
+ 'wikieditor-toolbar-tool-replace-emptysearch',
+ 'wikieditor-toolbar-tool-replace-invalidregex',
+ /* Special Characters Section */
+ 'wikieditor-toolbar-section-characters',
+ 'wikieditor-toolbar-characters-page-latin',
+ 'wikieditor-toolbar-characters-page-latinextended',
+ 'wikieditor-toolbar-characters-page-ipa',
+ 'wikieditor-toolbar-characters-page-symbols',
+ 'wikieditor-toolbar-characters-page-greek',
+ 'wikieditor-toolbar-characters-page-cyrillic',
+ 'wikieditor-toolbar-characters-page-arabic',
+ 'wikieditor-toolbar-characters-page-arabicextended',
+ 'wikieditor-toolbar-characters-page-persian',
+ 'wikieditor-toolbar-characters-page-hebrew',
+ 'wikieditor-toolbar-characters-page-bangla',
+ 'wikieditor-toolbar-characters-page-telugu',
+ 'wikieditor-toolbar-characters-page-sinhala',
+ 'wikieditor-toolbar-characters-page-gujarati',
+ 'wikieditor-toolbar-characters-page-thai',
+ 'wikieditor-toolbar-characters-page-lao',
+ 'wikieditor-toolbar-characters-page-khmer',
+ /* Help Section */
+ 'wikieditor-toolbar-section-help',
+ 'wikieditor-toolbar-help-heading-description',
+ 'wikieditor-toolbar-help-heading-syntax',
+ 'wikieditor-toolbar-help-heading-result',
+ 'wikieditor-toolbar-help-page-format',
+ 'wikieditor-toolbar-help-page-link',
+ 'wikieditor-toolbar-help-page-heading',
+ 'wikieditor-toolbar-help-page-list',
+ 'wikieditor-toolbar-help-page-file',
+ 'wikieditor-toolbar-help-page-reference',
+ 'wikieditor-toolbar-help-page-discussion',
+ 'wikieditor-toolbar-help-content-bold-description',
+ 'wikieditor-toolbar-help-content-bold-syntax',
+ 'wikieditor-toolbar-help-content-bold-result',
+ 'wikieditor-toolbar-help-content-italic-description',
+ 'wikieditor-toolbar-help-content-italic-syntax',
+ 'wikieditor-toolbar-help-content-italic-result',
+ 'wikieditor-toolbar-help-content-bolditalic-description',
+ 'wikieditor-toolbar-help-content-bolditalic-syntax',
+ 'wikieditor-toolbar-help-content-bolditalic-result',
+ 'wikieditor-toolbar-help-content-ilink-description',
+ 'wikieditor-toolbar-help-content-ilink-syntax',
+ 'wikieditor-toolbar-help-content-ilink-result',
+ 'wikieditor-toolbar-help-content-xlink-description',
+ 'wikieditor-toolbar-help-content-xlink-syntax',
+ 'wikieditor-toolbar-help-content-xlink-result',
+ 'wikieditor-toolbar-help-content-heading1-description',
+ 'wikieditor-toolbar-help-content-heading1-syntax',
+ 'wikieditor-toolbar-help-content-heading1-result',
+ 'wikieditor-toolbar-help-content-heading2-description',
+ 'wikieditor-toolbar-help-content-heading2-syntax',
+ 'wikieditor-toolbar-help-content-heading2-result',
+ 'wikieditor-toolbar-help-content-heading3-description',
+ 'wikieditor-toolbar-help-content-heading3-syntax',
+ 'wikieditor-toolbar-help-content-heading3-result',
+ 'wikieditor-toolbar-help-content-heading4-description',
+ 'wikieditor-toolbar-help-content-heading4-syntax',
+ 'wikieditor-toolbar-help-content-heading4-result',
+ 'wikieditor-toolbar-help-content-heading5-description',
+ 'wikieditor-toolbar-help-content-heading5-syntax',
+ 'wikieditor-toolbar-help-content-heading5-result',
+ 'wikieditor-toolbar-help-content-ulist-description',
+ 'wikieditor-toolbar-help-content-ulist-syntax',
+ 'wikieditor-toolbar-help-content-ulist-result',
+ 'wikieditor-toolbar-help-content-olist-description',
+ 'wikieditor-toolbar-help-content-olist-syntax',
+ 'wikieditor-toolbar-help-content-olist-result',
+ 'wikieditor-toolbar-help-content-file-description',
+ 'wikieditor-toolbar-help-content-file-syntax',
+ 'wikieditor-toolbar-help-content-file-result',
+ 'wikieditor-toolbar-help-content-reference-description',
+ 'wikieditor-toolbar-help-content-reference-syntax',
+ 'wikieditor-toolbar-help-content-reference-result',
+ 'wikieditor-toolbar-help-content-rereference-description',
+ 'wikieditor-toolbar-help-content-rereference-syntax',
+ 'wikieditor-toolbar-help-content-rereference-result',
+ 'wikieditor-toolbar-help-content-showreferences-description',
+ 'wikieditor-toolbar-help-content-showreferences-syntax',
+ 'wikieditor-toolbar-help-content-showreferences-result',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-description',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-syntax',
+ 'wikieditor-toolbar-help-content-signaturetimestamp-result',
+ 'wikieditor-toolbar-help-content-signature-description',
+ 'wikieditor-toolbar-help-content-signature-syntax',
+ 'wikieditor-toolbar-help-content-signature-result',
+ 'wikieditor-toolbar-help-content-indent-description',
+ 'wikieditor-toolbar-help-content-indent-syntax',
+ 'wikieditor-toolbar-help-content-indent-result',
+ ),
+ ),
+
+ /* WikiEditor Resources */
+
+ 'ext.wikiEditor' => $wikiEditorTpl + array(
+ 'scripts' => 'ext.wikiEditor.js',
+ 'styles' => 'ext.wikiEditor.css',
+ 'dependencies' => 'jquery.wikiEditor',
+ ),
+ 'ext.wikiEditor.dialogs' => $wikiEditorTpl + array(
+ 'scripts' => 'ext.wikiEditor.dialogs.js',
+ 'dependencies' => array(
+ 'ext.wikiEditor',
+ 'ext.wikiEditor.toolbar',
+ 'jquery.wikiEditor.dialogs',
+ 'jquery.wikiEditor.dialogs.config',
+ ),
+ ),
+ 'ext.wikiEditor.highlight' => $wikiEditorTpl + array(
+ 'scripts' => 'ext.wikiEditor.highlight.js',
+ 'dependencies' => array(
+ 'ext.wikiEditor',
+ 'jquery.wikiEditor.highlight',
+ ),
+ ),
+ 'ext.wikiEditor.preview' => $wikiEditorTpl + array(
+ 'scripts' => 'ext.wikiEditor.preview.js',
+ 'dependencies' => array(
+ 'ext.wikiEditor',
+ 'jquery.wikiEditor.preview',
+ ),
+ 'messages' => array(
+ 'wikieditor-preview-tab',
+ 'wikieditor-preview-changes-tab',
+ 'wikieditor-preview-loading',
+ ),
+ ),
+ 'ext.wikiEditor.previewDialog' => $wikiEditorTpl + array(
+ 'scripts' => 'ext.wikiEditor.previewDialog.js',
+ 'dependencies' => array(
+ 'ext.wikiEditor',
+ 'jquery.wikiEditor.previewDialog',
+ ),
+ 'messages' => array(
+ 'wikieditor-previewDialog-preference',
+ 'wikieditor-previewDialog-tab',
+ 'wikieditor-previewDialog-loading',
+ ),
+ ),
+ 'ext.wikiEditor.publish' => $wikiEditorTpl + array(
+ 'scripts' => 'ext.wikiEditor.publish.js',
+ 'dependencies' => array(
+ 'ext.wikiEditor',
+ 'jquery.wikiEditor.publish',
+ ),
+ 'messages' => array(
+ 'wikieditor-publish-button-publish',
+ 'wikieditor-publish-button-cancel',
+ 'wikieditor-publish-dialog-title',
+ 'wikieditor-publish-dialog-summary',
+ 'wikieditor-publish-dialog-minor',
+ 'wikieditor-publish-dialog-watch',
+ 'wikieditor-publish-dialog-publish',
+ 'wikieditor-publish-dialog-goback',
+ ),
+ ),
+ 'ext.wikiEditor.templateEditor' => $wikiEditorTpl + array(
+ 'scripts' => 'ext.wikiEditor.templateEditor.js',
+ 'dependencies' => array(
+ 'ext.wikiEditor',
+ 'ext.wikiEditor.highlight',
+ 'jquery.wikiEditor.templateEditor',
+ ),
+ 'messages' => array(
+ 'wikieditor-template-editor-dialog-title',
+ 'wikieditor-template-editor-dialog-submit',
+ 'wikieditor-template-editor-dialog-cancel',
+ ),
+ ),
+ 'ext.wikiEditor.templates' => $wikiEditorTpl + array(
+ 'scripts' => 'ext.wikiEditor.templates.js',
+ 'dependencies' => array(
+ 'ext.wikiEditor',
+ 'ext.wikiEditor.highlight',
+ 'jquery.wikiEditor.templates',
+ ),
+ ),
+ 'ext.wikiEditor.toc' => $wikiEditorTpl + array(
+ 'scripts' => 'ext.wikiEditor.toc.js',
+ 'dependencies' => array(
+ 'ext.wikiEditor',
+ 'ext.wikiEditor.highlight',
+ 'jquery.wikiEditor.toc',
+ ),
+ 'messages' => array(
+ 'wikieditor-toc-show',
+ 'wikieditor-toc-hide',
+ ),
+ ),
+ 'ext.wikiEditor.tests.toolbar' => $wikiEditorTpl + array(
+ 'scripts' => 'ext.wikiEditor.tests.toolbar.js',
+ 'dependencies' => 'ext.wikiEditor.toolbar',
+ ),
+ 'ext.wikiEditor.toolbar' => $wikiEditorTpl + array(
+ 'scripts' => 'ext.wikiEditor.toolbar.js',
+ 'dependencies' => array(
+ 'ext.wikiEditor',
+ 'jquery.wikiEditor.toolbar',
+ 'jquery.wikiEditor.toolbar.config',
+ )
+ ),
+ 'ext.wikiEditor.toolbar.hideSig' => $wikiEditorTpl + array(
+ 'scripts' => 'ext.wikiEditor.toolbar.hideSig.js',
+ ),
+);
diff --git a/extensions/WikiEditor/modules/contentCollector.js b/extensions/WikiEditor/modules/contentCollector.js
new file mode 100644
index 00000000..af8d796a
--- /dev/null
+++ b/extensions/WikiEditor/modules/contentCollector.js
@@ -0,0 +1,439 @@
+// THIS FILE HAS BEEN MODIFIED for use with the mediawiki wikiEditor
+// It no longer requires etherpad.collab.ace.easysync2.Changeset
+// THIS FILE WAS ORIGINALLY AN APPJET MODULE: etherpad.collab.ace.contentcollector
+
+/**
+ * Copyright 2009 Google Inc.
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License"); you may not
+ * use this file except in compliance with the License. You may obtain a copy of
+ * the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS-IS" BASIS, WITHOUT
+ * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
+ * License for the specific language governing permissions and limitations under
+ * the License.
+ */
+
+var _MAX_LIST_LEVEL = 8;
+
+function sanitizeUnicode(s) {
+ return s.replace(/[\uffff\ufffe\ufeff\ufdd0-\ufdef\ud800-\udfff]/g, '?');
+}
+
+function makeContentCollector( browser, domInterface ) {
+ browser = browser || {};
+
+ var dom = domInterface || {
+ isNodeText : function(n) {
+ return (n.nodeType == 3);
+ },
+ nodeTagName : function(n) {
+ return n.tagName;
+ },
+ nodeValue : function(n) {
+ try {
+ return n.nodeValue;
+ } catch ( err ) {
+ return '';
+ }
+ },
+ nodeName : function(n) {
+ return n.nodeName;
+ },
+ nodeNumChildren : function(n) {
+ return n.childNodes.length;
+ },
+ nodeChild : function(n, i) {
+ return n.childNodes.item(i);
+ },
+ nodeProp : function(n, p) {
+ return n[p];
+ },
+ nodeAttr : function(n, a) {
+ return n.getAttribute(a);
+ },
+ optNodeInnerHTML : function(n) {
+ return n.innerHTML;
+ }
+ };
+
+ var _blockElems = {
+ "div" : 1,
+ "p" : 1,
+ "pre" : 1,
+ "li" : 1
+ };
+ function isBlockElement(n) {
+ return !!_blockElems[(dom.nodeTagName(n) || "").toLowerCase()];
+ }
+ function textify(str) {
+ return sanitizeUnicode(str.replace(/[\n\r ]/g, ' ').replace(/\xa0/g,
+ ' ').replace(/\t/g, ' '));
+ }
+ function getAssoc(node, name) {
+ return dom.nodeProp(node, "_magicdom_" + name);
+ }
+
+ var lines = (function() {
+ var textArray = [];
+ var self = {
+ length : function() {
+ return textArray.length;
+ },
+ atColumnZero : function() {
+ return textArray[textArray.length - 1] === "";
+ },
+ startNew : function() {
+ textArray.push("");
+ self.flush(true);
+ },
+ textOfLine : function(i) {
+ return textArray[i];
+ },
+ appendText : function(txt, attrString) {
+ textArray[textArray.length - 1] += txt;
+ // dmesg(txt+" / "+attrString);
+ },
+ textLines : function() {
+ return textArray.slice();
+ },
+ // call flush only when you're done
+ flush : function(withNewline) {
+
+ }
+ };
+ self.startNew();
+ return self;
+ }());
+ var cc = {};
+ function _ensureColumnZero(state) {
+ if (!lines.atColumnZero()) {
+ _startNewLine(state);
+ }
+ }
+ var selection, startPoint, endPoint;
+ var selStart = [ -1, -1 ], selEnd = [ -1, -1 ];
+ var blockElems = {
+ "div" : 1,
+ "p" : 1,
+ "pre" : 1
+ };
+ function _isEmpty(node, state) {
+ // consider clean blank lines pasted in IE to be empty
+ if (dom.nodeNumChildren(node) == 0)
+ return true;
+ if (dom.nodeNumChildren(node) == 1 && getAssoc(node, "shouldBeEmpty")
+ && dom.optNodeInnerHTML(node) == "&nbsp;"
+ && !getAssoc(node, "unpasted")) {
+ if (state) {
+ var child = dom.nodeChild(node, 0);
+ _reachPoint(child, 0, state);
+ _reachPoint(child, 1, state);
+ }
+ return true;
+ }
+ return false;
+ }
+ function _pointHere(charsAfter, state) {
+ var ln = lines.length() - 1;
+ var chr = lines.textOfLine(ln).length;
+ if (chr == 0 && state.listType && state.listType != 'none') {
+ chr += 1; // listMarker
+ }
+ chr += charsAfter;
+ return [ ln, chr ];
+ }
+ function _reachBlockPoint(nd, idx, state) {
+ if (!dom.isNodeText(nd))
+ _reachPoint(nd, idx, state);
+ }
+ function _reachPoint(nd, idx, state) {
+ if (startPoint && nd == startPoint.node && startPoint.index == idx) {
+ selStart = _pointHere(0, state);
+ }
+ if (endPoint && nd == endPoint.node && endPoint.index == idx) {
+ selEnd = _pointHere(0, state);
+ }
+ }
+ function _incrementFlag(state, flagName) {
+ state.flags[flagName] = (state.flags[flagName] || 0) + 1;
+ }
+ function _decrementFlag(state, flagName) {
+ state.flags[flagName]--;
+ }
+ function _enterList(state, listType) {
+ var oldListType = state.listType;
+ state.listLevel = (state.listLevel || 0) + 1;
+ if (listType != 'none') {
+ state.listNesting = (state.listNesting || 0) + 1;
+ }
+ state.listType = listType;
+ return oldListType;
+ }
+ function _exitList(state, oldListType) {
+ state.listLevel--;
+ if (state.listType != 'none') {
+ state.listNesting--;
+ }
+ state.listType = oldListType;
+ }
+ function _produceListMarker(state) {
+
+ }
+ function _startNewLine(state) {
+ if (state) {
+ var atBeginningOfLine = lines.textOfLine(lines.length() - 1).length == 0;
+ if (atBeginningOfLine && state.listType && state.listType != 'none') {
+ _produceListMarker(state);
+ }
+ }
+ lines.startNew();
+ }
+ cc.notifySelection = function(sel) {
+ if (sel) {
+ selection = sel;
+ startPoint = selection.startPoint;
+ endPoint = selection.endPoint;
+ }
+ };
+ cc.collectContent = function(node, state) {
+ if (!state) {
+ state = {
+ flags : {/* name -> nesting counter */}
+ };
+ }
+ var isBlock = isBlockElement(node);
+ var isEmpty = _isEmpty(node, state);
+ if (isBlock)
+ _ensureColumnZero(state);
+ var startLine = lines.length() - 1;
+ _reachBlockPoint(node, 0, state);
+ if (dom.isNodeText(node)) {
+ var txt = dom.nodeValue(node);
+ var rest = '';
+ var x = 0; // offset into original text
+ if (txt.length == 0) {
+ if (startPoint && node == startPoint.node) {
+ selStart = _pointHere(0, state);
+ }
+ if (endPoint && node == endPoint.node) {
+ selEnd = _pointHere(0, state);
+ }
+ }
+ while (txt.length > 0) {
+ var consumed = 0;
+ if (!browser.firefox || state.flags.preMode) {
+ var firstLine = txt.split('\n', 1)[0];
+ consumed = firstLine.length + 1;
+ rest = txt.substring(consumed);
+ txt = firstLine;
+ } else { /* will only run this loop body once */
+ }
+ if (startPoint && node == startPoint.node
+ && startPoint.index - x <= txt.length) {
+ selStart = _pointHere(startPoint.index - x, state);
+ }
+ if (endPoint && node == endPoint.node
+ && endPoint.index - x <= txt.length) {
+ selEnd = _pointHere(endPoint.index - x, state);
+ }
+ var txt2 = txt;
+ if ((!state.flags.preMode) && /^[\r\n]*$/.exec(txt)) {
+ // prevents textnodes containing just "\n" from being
+ // significant
+ // in safari when pasting text, now that we convert them to
+ // spaces instead of removing them, because in other cases
+ // removing "\n" from pasted HTML will collapse words
+ // together.
+ txt2 = "";
+ }
+ var atBeginningOfLine = lines.textOfLine(lines.length() - 1).length == 0;
+ if (atBeginningOfLine) {
+ // newlines in the source mustn't become spaces at beginning
+ // of line box
+ txt2 = txt2.replace(/^\n*/, '');
+ }
+ if (atBeginningOfLine && state.listType
+ && state.listType != 'none') {
+ _produceListMarker(state);
+ }
+ lines.appendText(textify(txt2));
+
+ x += consumed;
+ txt = rest;
+ if (txt.length > 0) {
+ _startNewLine(state);
+ }
+ }
+
+ } else {
+ var cls = dom.nodeProp(node, "className");
+ var tname = (dom.nodeTagName(node) || "").toLowerCase();
+ if (tname == "br") {
+ _startNewLine(state);
+ } else if (tname == "script" || tname == "style") {
+ // ignore
+ } else if (!isEmpty) {
+ var styl = dom.nodeAttr(node, "style");
+
+ var isPre = (tname == "pre");
+ if ((!isPre) && browser.safari) {
+ isPre = (styl && /\bwhite-space:\s*pre\b/i.exec(styl));
+ }
+ if (isPre)
+ _incrementFlag(state, 'preMode');
+ var oldListTypeOrNull = null;
+
+ var nc = dom.nodeNumChildren(node);
+ for ( var i = 0; i < nc; i++) {
+ var c = dom.nodeChild(node, i);
+ //very specific IE case where it inserts <span lang="en"> which we want to ginore.
+ //to reproduce copy content from wordpad andpaste into the middle of a line in IE
+ if ( browser.msie && cls.indexOf('wikiEditor') >= 0 && dom.nodeName(c) == 'SPAN' && dom.nodeAttr(c, 'lang') == "" ) {
+ continue;
+ }
+ cc.collectContent(c, state);
+ }
+
+ if (isPre)
+ _decrementFlag(state, 'preMode');
+
+ if (oldListTypeOrNull) {
+ _exitList(state, oldListTypeOrNull);
+ }
+ }
+ }
+ if (!browser.msie) {
+ _reachBlockPoint(node, 1, state);
+ }
+ if (isBlock) {
+ if (lines.length() - 1 == startLine) {
+ _startNewLine(state);
+ } else {
+ _ensureColumnZero(state);
+ }
+ }
+
+ if (browser.msie) {
+ // in IE, a point immediately after a DIV appears on the next line
+ //_reachBlockPoint(node, 1, state);
+ }
+ };
+ // can pass a falsy value for end of doc
+ cc.notifyNextNode = function(node) {
+ // an "empty block" won't end a line; this addresses an issue in IE with
+ // typing into a blank line at the end of the document. typed text
+ // goes into the body, and the empty line div still looks clean.
+ // it is incorporated as dirty by the rule that a dirty region has
+ // to end a line.
+ if ((!node) || (isBlockElement(node) && !_isEmpty(node))) {
+ _ensureColumnZero(null);
+ }
+ };
+ // each returns [line, char] or [-1,-1]
+ var getSelectionStart = function() {
+ return selStart;
+ };
+ var getSelectionEnd = function() {
+ return selEnd;
+ };
+
+ // returns array of strings for lines found, last entry will be "" if
+ // last line is complete (i.e. if a following span should be on a new line).
+ // can be called at any point
+ cc.getLines = function() {
+ return lines.textLines();
+ };
+
+ // cc.applyHints = function(hints) {
+ // if (hints.pastedLines) {
+ //
+ // }
+ // }
+
+ cc.finish = function() {
+ lines.flush();
+ var lineStrings = cc.getLines();
+
+ if ( lineStrings.length > 0 && !lineStrings[lineStrings.length - 1] ) {
+ lineStrings.length--;
+ }
+
+ var ss = getSelectionStart();
+ var se = getSelectionEnd();
+
+ function fixLongLines() {
+ // design mode does not deal with with really long lines!
+ var lineLimit = 2000; // chars
+ var buffer = 10; // chars allowed over before wrapping
+ var linesWrapped = 0;
+ var numLinesAfter = 0;
+ for ( var i = lineStrings.length - 1; i >= 0; i--) {
+ var oldString = lineStrings[i];
+ if (oldString.length > lineLimit + buffer) {
+ var newStrings = [];
+ while (oldString.length > lineLimit) {
+ // var semiloc = oldString.lastIndexOf(';',
+ // lineLimit-1);
+ // var lengthToTake = (semiloc >= 0 ? (semiloc+1) :
+ // lineLimit);
+ lengthToTake = lineLimit;
+ newStrings.push(oldString.substring(0, lengthToTake));
+ oldString = oldString.substring(lengthToTake);
+
+ }
+ if (oldString.length > 0) {
+ newStrings.push(oldString);
+ }
+ function fixLineNumber(lineChar) {
+ if (lineChar[0] < 0)
+ return;
+ var n = lineChar[0];
+ var c = lineChar[1];
+ if (n > i) {
+ n += (newStrings.length - 1);
+ } else if (n == i) {
+ var a = 0;
+ while (c > newStrings[a].length) {
+ c -= newStrings[a].length;
+ a++;
+ }
+ n += a;
+ }
+ lineChar[0] = n;
+ lineChar[1] = c;
+ }
+ fixLineNumber(ss);
+ fixLineNumber(se);
+ linesWrapped++;
+ numLinesAfter += newStrings.length;
+
+ newStrings.unshift(i, 1);
+ lineStrings.splice.apply(lineStrings, newStrings);
+
+ }
+ }
+ return {
+ linesWrapped : linesWrapped,
+ numLinesAfter : numLinesAfter
+ };
+ }
+ var wrapData = fixLongLines();
+
+ return {
+ selStart : ss,
+ selEnd : se,
+ linesWrapped : wrapData.linesWrapped,
+ numLinesAfter : wrapData.numLinesAfter,
+ lines : lineStrings
+ };
+ };
+
+ return cc;
+}
+
+
diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.css b/extensions/WikiEditor/modules/ext.wikiEditor.css
new file mode 100644
index 00000000..42de5368
--- /dev/null
+++ b/extensions/WikiEditor/modules/ext.wikiEditor.css
@@ -0,0 +1,23 @@
+/*
+ * CSS for WikiEditor
+ */
+
+/* This ID (#editform) could change in MediaWiki */
+form#editform {
+ margin: 0;
+ padding: 0;
+}
+/* These IDs (#wpSummaryLabel and #wpSummary) could change in MediaWiki */
+#wpSummary, #wpSummaryLabel {
+ margin-bottom: 1em;
+}
+/* This ID (#wpTextbox1) could change in MediaWiki */
+.wikiEditor-ui textarea#wpTextbox1 {
+ border: none;
+ padding: 0;
+ margin: -1px;
+ line-height: 1.5em;
+}
+.wikiEditor-ui .wikiEditor-ui-text > textarea#wpTextbox1 {
+ margin: 0;
+}
diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.dialogs.js b/extensions/WikiEditor/modules/ext.wikiEditor.dialogs.js
new file mode 100644
index 00000000..45a19593
--- /dev/null
+++ b/extensions/WikiEditor/modules/ext.wikiEditor.dialogs.js
@@ -0,0 +1,15 @@
+/*
+ * JavaScript for WikiEditor Dialogs
+ */
+
+$( document ).ready( function() {
+ if ( !$.wikiEditor.isSupported( $.wikiEditor.modules.dialogs ) ) {
+ return;
+ }
+
+ // Replace icons
+ $.wikiEditor.modules.dialogs.config.replaceIcons( $( '#wpTextbox1' ) );
+
+ // Add dialogs module
+ $( '#wpTextbox1' ).wikiEditor( 'addModule', $.wikiEditor.modules.dialogs.config.getDefaultConfig() );
+} ); \ No newline at end of file
diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.highlight.js b/extensions/WikiEditor/modules/ext.wikiEditor.highlight.js
new file mode 100644
index 00000000..a6b43851
--- /dev/null
+++ b/extensions/WikiEditor/modules/ext.wikiEditor.highlight.js
@@ -0,0 +1,8 @@
+/*
+ * JavaScript for WikiEditor Highlighting
+ */
+
+$( document ).ready( function() {
+ // Add highlight module
+ $( '#wpTextbox1' ).wikiEditor( 'addModule', 'highlight' );
+} );
diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.js b/extensions/WikiEditor/modules/ext.wikiEditor.js
new file mode 100644
index 00000000..6056e63b
--- /dev/null
+++ b/extensions/WikiEditor/modules/ext.wikiEditor.js
@@ -0,0 +1,8 @@
+/*
+ * JavaScript for WikiEditor
+ */
+
+$( document ).ready( function() {
+ // Initialize wikiEditor
+ $( '#wpTextbox1' ).wikiEditor();
+} );
diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.preview.js b/extensions/WikiEditor/modules/ext.wikiEditor.preview.js
new file mode 100644
index 00000000..3fbca82d
--- /dev/null
+++ b/extensions/WikiEditor/modules/ext.wikiEditor.preview.js
@@ -0,0 +1,8 @@
+/*
+ * JavaScript for WikiEditor Preview module
+ */
+
+$( document ).ready( function() {
+ // Add preview module
+ $( 'textarea#wpTextbox1' ).wikiEditor( 'addModule', 'preview' );
+} );
diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.previewDialog.js b/extensions/WikiEditor/modules/ext.wikiEditor.previewDialog.js
new file mode 100644
index 00000000..67f97e00
--- /dev/null
+++ b/extensions/WikiEditor/modules/ext.wikiEditor.previewDialog.js
@@ -0,0 +1,8 @@
+/*
+ * JavaScript for WikiEditor Preview Dialog
+ */
+
+$( document ).ready( function() {
+ // Add preview module
+ $( 'textarea#wpTextbox1' ).wikiEditor( 'addModule', 'previewDialog' );
+} );
diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.publish.js b/extensions/WikiEditor/modules/ext.wikiEditor.publish.js
new file mode 100644
index 00000000..d874478c
--- /dev/null
+++ b/extensions/WikiEditor/modules/ext.wikiEditor.publish.js
@@ -0,0 +1,8 @@
+/*
+ * JavaScript for WikiEditor Publish module
+ */
+
+$( document ).ready( function() {
+ // Add publish module
+ $( '#wpTextbox1' ).wikiEditor( 'addModule', 'publish' );
+} );
diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.templateEditor.js b/extensions/WikiEditor/modules/ext.wikiEditor.templateEditor.js
new file mode 100644
index 00000000..650910d2
--- /dev/null
+++ b/extensions/WikiEditor/modules/ext.wikiEditor.templateEditor.js
@@ -0,0 +1,12 @@
+/*
+ * JavaScript for WikiEditor Template Editor
+ */
+
+$( document ).ready( function() {
+ // Disable in template namespace
+ if ( mw.config.get( 'wgNamespaceNumber' ) == 10 ) {
+ return true;
+ }
+ // Add template editor module
+ $( 'textarea#wpTextbox1' ).wikiEditor( 'addModule', 'templateEditor' );
+});
diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.templates.js b/extensions/WikiEditor/modules/ext.wikiEditor.templates.js
new file mode 100644
index 00000000..4ac09b54
--- /dev/null
+++ b/extensions/WikiEditor/modules/ext.wikiEditor.templates.js
@@ -0,0 +1,12 @@
+/*
+ * JavaScript for WikiEditor Templates
+ */
+
+$( document ).ready( function() {
+ // Disable for template namespace
+ if ( mw.config.get( 'wgNamespaceNumber' ) == 10 ) {
+ return true;
+ }
+ // Add templates module
+ $( '#wpTextbox1' ).wikiEditor( 'addModule', 'templates' );
+} ); \ No newline at end of file
diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.tests.toolbar.js b/extensions/WikiEditor/modules/ext.wikiEditor.tests.toolbar.js
new file mode 100644
index 00000000..de01f34f
--- /dev/null
+++ b/extensions/WikiEditor/modules/ext.wikiEditor.tests.toolbar.js
@@ -0,0 +1,246 @@
+/**
+ * Test set for the edit toolbar
+ */
+var textareaId = '#wpTextbox1';
+var wikiEditorTests = {
+ // Add emoticons section
+ 'add_sections_toolbar': {
+ 'call': 'addToToolbar',
+ 'data': {
+ 'sections': {
+ 'emoticons': {
+ 'type': 'toolbar',
+ 'label': 'Emoticons'
+ }
+ }
+ },
+ 'test': '*[rel=emoticons].section',
+ 'pre': 0,
+ 'post': 1
+ },
+ // Add faces group to emoticons section
+ 'add_groups': {
+ 'call': 'addToToolbar',
+ 'data': {
+ 'section': 'emoticons',
+ 'groups': {
+ 'faces': {
+ 'label': 'Faces'
+ }
+ }
+ },
+ 'test': '*[rel=emoticons].section *[rel=faces].group',
+ 'pre': 0,
+ 'post': 1
+ },
+ // Add smile tool to faces group of emoticons section
+ 'add_tools': {
+ 'call': 'addToToolbar',
+ 'data': {
+ 'section': 'emoticons',
+ 'group': 'faces',
+ 'tools': {
+ 'smile': {
+ label: 'Smile!',
+ type: 'button',
+ icon: 'http://upload.wikimedia.org/wikipedia/commons/thumb/a/a4/Gnome-face-smile.svg/22px-Gnome-face-smile.svg.png',
+ action: {
+ type: 'encapsulate',
+ options: {
+ pre: ":)"
+ }
+ }
+ }
+ }
+ },
+ 'test': '*[rel=emoticons].section *[rel=faces].group *[rel=smile].tool',
+ 'pre': 0,
+ 'post': 1
+ },
+ // Add info section
+ 'add_sections_booklet': {
+ 'call': 'addToToolbar',
+ 'data': {
+ 'sections': {
+ 'info': {
+ 'type': 'booklet',
+ 'label': 'Info'
+ }
+ }
+ },
+ 'test': '*[rel=info].section',
+ 'pre': 0,
+ 'post': 1
+ },
+ // Add info section
+ 'add_pages_table': {
+ 'call': 'addToToolbar',
+ 'data': {
+ 'section': 'info',
+ 'pages': {
+ 'colors': {
+ 'layout': 'table',
+ 'label': 'Colors',
+ 'headings': [
+ { text: 'Name' },
+ { text: 'Temperature' },
+ { text: 'Swatch' }
+ ]
+ }
+ }
+ },
+ 'test': '*[rel=info].section *[rel=colors].page',
+ 'pre': 0,
+ 'post': 1
+ },
+ // Add colors rows
+ 'add_rows': {
+ 'call': 'addToToolbar',
+ 'data': {
+ 'section': 'info',
+ 'page': 'colors',
+ 'rows': [
+ {
+ 'name': { text: 'Red' },
+ 'temp': { text: 'Warm' },
+ 'swatch': { html: '<div style="width:10px;height:10px;background-color:red;">' }
+ },
+ {
+ 'name': { text: 'Blue' },
+ 'temp': { text: 'Cold' },
+ 'swatch': { html: '<div style="width:10px;height:10px;background-color:blue;">' }
+ },
+ {
+ 'name': { text: 'Silver' },
+ 'temp': { text: 'Neutral' },
+ 'swatch': { html: '<div style="width:10px;height:10px;background-color:silver;">' }
+ }
+ ]
+ },
+ 'test': '*[rel=info].section *[rel=colors].page tr td',
+ 'pre': 0,
+ 'post': 9
+ },
+ // Add
+ 'add_pages_characters': {
+ 'call': 'addToToolbar',
+ 'data': {
+ 'section': 'info',
+ 'pages': {
+ 'emoticons': {
+ 'layout': 'characters',
+ 'label': 'Emoticons'
+ },
+ 'removeme': {
+ 'layout': 'characters',
+ 'label': 'Remove Me!'
+ }
+ }
+ },
+ 'test': '*[rel=info].section *[rel=emoticons].page',
+ 'pre': 0,
+ 'post': 1
+ },
+ // Add
+ 'add_characters': {
+ 'call': 'addToToolbar',
+ 'data': {
+ 'section': 'info',
+ 'page': 'emoticons',
+ 'characters': [ ':)', ':))', ':(', '<3', ';)' ]
+ },
+ 'test': '*[rel=info].section *[rel=emoticons].page *[rel=":)"]',
+ 'pre': 0,
+ 'post': 1
+ },
+ // Remove page
+ 'remove_page': {
+ 'call': 'removeFromToolbar',
+ 'data': {
+ 'section': 'info',
+ 'page': 'removeme'
+ },
+ 'test': '*[rel=info].section *[rel=removeme].page',
+ 'pre': 1,
+ 'post': 0
+ },
+ // Remove :)) from emoticon characters
+ 'remove_character': {
+ 'call': 'removeFromToolbar',
+ 'data': {
+ 'section': 'info',
+ 'page': 'emoticons',
+ 'character': ':))'
+ },
+ 'test': '*[rel=info].section *[rel=emoticons].page *[rel=":))"]',
+ 'pre': 1,
+ 'post': 0
+ },
+ // Remove row from colors table of info section
+ 'remove_row': {
+ 'call': 'removeFromToolbar',
+ 'data': {
+ 'section': 'info',
+ 'page': 'colors',
+ 'row': 0
+ },
+ 'test': '*[rel=info].section *[rel=colors].page tr td',
+ 'pre': 9,
+ 'post': 6
+ }
+};
+$(document).ready( function() {
+ var button = $( '<button>Run wikiEditor Tests!</button>' )
+ .css( {
+ 'position': 'fixed',
+ 'bottom': 0,
+ 'right': 0,
+ 'width': '100%',
+ 'backgroundColor': '#333333',
+ 'opacity': 0.75,
+ 'color': '#DDDDDD',
+ 'padding': '0.5em',
+ 'border': 'none',
+ 'display': 'none'
+ } )
+ .click( function() {
+ if ( $(this).attr( 'enabled' ) == 'false' ) {
+ $(this).slideUp( 'fast' );
+ return false;
+ }
+ var messages = [ 'Running tests for wikiEditor API' ];
+ var $target = $( textareaId );
+ var $ui = $target.data( 'wikiEditor-context' ).$ui;
+ var passes = 0;
+ var tests = 0;
+ for ( var test in wikiEditorTests ) {
+ var pre = $ui.find( wikiEditorTests[test].test ).size() ==
+ wikiEditorTests[test].pre;
+ messages.push ( test + '-pre: ' + ( pre ? 'PASS' : 'FAIL' ) );
+ $target.wikiEditor(
+ wikiEditorTests[test].call,
+ wikiEditorTests[test].data
+ );
+ var post = $ui.find( wikiEditorTests[test].test ).size() ==
+ wikiEditorTests[test].post;
+ messages.push ( test + '-post: ' + ( post ? 'PASS' : 'FAIL' ) );
+ if ( pre && post ) {
+ passes++;
+ }
+ tests++;
+ }
+ if ( window.console !== undefined ) {
+ for ( var i = 0; i < messages.length; i++ ) {
+ console.log( messages[i] );
+ }
+ }
+ $(this)
+ .attr( 'title', messages.join( " | " ) )
+ .text( passes + ' / ' + tests + ' were successful' )
+ .css( 'backgroundColor', passes < tests ? 'red' : 'green' )
+ .attr( 'enabled', 'false' )
+ .blur();
+ } )
+ .appendTo( $( 'body' ) );
+ setTimeout( function() { button.slideDown( 'fast' ) }, 2000 );
+} );
diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.toc.js b/extensions/WikiEditor/modules/ext.wikiEditor.toc.js
new file mode 100644
index 00000000..264e9f86
--- /dev/null
+++ b/extensions/WikiEditor/modules/ext.wikiEditor.toc.js
@@ -0,0 +1,8 @@
+/*
+ * JavaScript for WikiEditor Table of Contents
+ */
+
+$( document ).ready( function() {
+ // Add table of contents module
+ $( '#wpTextbox1' ).wikiEditor( 'addModule', 'toc' );
+} );
diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.toolbar.hideSig.js b/extensions/WikiEditor/modules/ext.wikiEditor.toolbar.hideSig.js
new file mode 100644
index 00000000..3bc0f0b4
--- /dev/null
+++ b/extensions/WikiEditor/modules/ext.wikiEditor.toolbar.hideSig.js
@@ -0,0 +1,14 @@
+/*
+ * Remove the signature button if the main namespace is edited.
+ */
+$( document ).ready( function() {
+ // This module is designed not to depend on ext.wikiEditor or jquery.wikiEditor.
+ // Removing this dependency fixed various bugs, but it does mean that we have to
+ // account for the situation where $.wikiEditor is not present
+ if ( !$.wikiEditor || !$.wikiEditor.isSupported( $.wikiEditor.modules.toolbar ) ) {
+ return;
+ }
+ if ( $( 'body' ).hasClass( 'ns-0' ) ) {
+ $( '#wpTextbox1' ).wikiEditor( 'removeFromToolbar', { 'section': 'main', 'group': 'insert', 'tool': 'signature' } );
+ }
+});
diff --git a/extensions/WikiEditor/modules/ext.wikiEditor.toolbar.js b/extensions/WikiEditor/modules/ext.wikiEditor.toolbar.js
new file mode 100644
index 00000000..53199375
--- /dev/null
+++ b/extensions/WikiEditor/modules/ext.wikiEditor.toolbar.js
@@ -0,0 +1,14 @@
+/*
+ * JavaScript for WikiEditor Toolbar
+ */
+
+$( document ).ready( function() {
+ if ( !$.wikiEditor.isSupported( $.wikiEditor.modules.toolbar ) ) {
+ return;
+ }
+ // The old toolbar is still in place and needs to be removed so there aren't two toolbars
+ $( '#toolbar' ).remove();
+ // Add toolbar module
+ // TODO: Implement .wikiEditor( 'remove' )
+ $( '#wpTextbox1' ).wikiEditor( 'addModule', $.wikiEditor.modules.toolbar.config.getDefaultConfig() );
+} );
diff --git a/extensions/WikiEditor/modules/images/dialogs/insert-link-error.png b/extensions/WikiEditor/modules/images/dialogs/insert-link-error.png
new file mode 100644
index 00000000..a7def768
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/dialogs/insert-link-error.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/dialogs/insert-link-exists.png b/extensions/WikiEditor/modules/images/dialogs/insert-link-exists.png
new file mode 100644
index 00000000..76abbba5
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/dialogs/insert-link-exists.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/dialogs/insert-link-external-rtl.png b/extensions/WikiEditor/modules/images/dialogs/insert-link-external-rtl.png
new file mode 100644
index 00000000..74fc1ada
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/dialogs/insert-link-external-rtl.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/dialogs/insert-link-external.png b/extensions/WikiEditor/modules/images/dialogs/insert-link-external.png
new file mode 100644
index 00000000..04a5aa17
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/dialogs/insert-link-external.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/dialogs/insert-link-invalid.png b/extensions/WikiEditor/modules/images/dialogs/insert-link-invalid.png
new file mode 100644
index 00000000..b5521b9d
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/dialogs/insert-link-invalid.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/dialogs/insert-link-notexists.png b/extensions/WikiEditor/modules/images/dialogs/insert-link-notexists.png
new file mode 100644
index 00000000..84eb9d68
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/dialogs/insert-link-notexists.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/dialogs/loading-small.gif b/extensions/WikiEditor/modules/images/dialogs/loading-small.gif
new file mode 100644
index 00000000..a8e536b0
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/dialogs/loading-small.gif
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/dialogs/loading.gif b/extensions/WikiEditor/modules/images/dialogs/loading.gif
new file mode 100644
index 00000000..52f78205
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/dialogs/loading.gif
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/templateEditor/collapse.png b/extensions/WikiEditor/modules/images/templateEditor/collapse.png
new file mode 100644
index 00000000..acb42b91
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/templateEditor/collapse.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/templateEditor/dialog-collapsed.png b/extensions/WikiEditor/modules/images/templateEditor/dialog-collapsed.png
new file mode 100644
index 00000000..ce703020
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/templateEditor/dialog-collapsed.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/templateEditor/dialog-expanded.png b/extensions/WikiEditor/modules/images/templateEditor/dialog-expanded.png
new file mode 100644
index 00000000..73832e97
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/templateEditor/dialog-expanded.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/templateEditor/expand.png b/extensions/WikiEditor/modules/images/templateEditor/expand.png
new file mode 100644
index 00000000..4c96ffd3
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/templateEditor/expand.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/templateEditor/name-base.png b/extensions/WikiEditor/modules/images/templateEditor/name-base.png
new file mode 100644
index 00000000..4b103085
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/templateEditor/name-base.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/templateEditor/text-base.png b/extensions/WikiEditor/modules/images/templateEditor/text-base.png
new file mode 100644
index 00000000..9cb0c74d
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/templateEditor/text-base.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/templateEditor/wiki-text.png b/extensions/WikiEditor/modules/images/templateEditor/wiki-text.png
new file mode 100644
index 00000000..ea37e731
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/templateEditor/wiki-text.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toc/close.png b/extensions/WikiEditor/modules/images/toc/close.png
new file mode 100644
index 00000000..511fc4ff
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toc/close.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toc/grab.png b/extensions/WikiEditor/modules/images/toc/grab.png
new file mode 100644
index 00000000..a0d5d7ba
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toc/grab.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toc/grip.png b/extensions/WikiEditor/modules/images/toc/grip.png
new file mode 100644
index 00000000..05203f38
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toc/grip.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toc/open.png b/extensions/WikiEditor/modules/images/toc/open.png
new file mode 100644
index 00000000..459aa39b
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toc/open.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/arrow-down.png b/extensions/WikiEditor/modules/images/toolbar/arrow-down.png
new file mode 100644
index 00000000..bf2d4fb4
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/arrow-down.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/arrow-ltr.png b/extensions/WikiEditor/modules/images/toolbar/arrow-ltr.png
new file mode 100644
index 00000000..c27c9636
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/arrow-ltr.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/arrow-rtl.png b/extensions/WikiEditor/modules/images/toolbar/arrow-rtl.png
new file mode 100644
index 00000000..12ca1837
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/arrow-rtl.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/base.png b/extensions/WikiEditor/modules/images/toolbar/base.png
new file mode 100644
index 00000000..b55ed07b
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/base.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/button-sprite.png b/extensions/WikiEditor/modules/images/toolbar/button-sprite.png
new file mode 100644
index 00000000..bd8989ff
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/button-sprite.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/example-image.png b/extensions/WikiEditor/modules/images/toolbar/example-image.png
new file mode 100644
index 00000000..a3853683
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/example-image.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-big.png b/extensions/WikiEditor/modules/images/toolbar/format-big.png
new file mode 100644
index 00000000..175ea19d
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-big.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-bold-A.png b/extensions/WikiEditor/modules/images/toolbar/format-bold-A.png
new file mode 100644
index 00000000..22849e62
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-bold-A.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-bold-B.png b/extensions/WikiEditor/modules/images/toolbar/format-bold-B.png
new file mode 100644
index 00000000..45be1de6
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-bold-B.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-bold-F.png b/extensions/WikiEditor/modules/images/toolbar/format-bold-F.png
new file mode 100644
index 00000000..e3264767
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-bold-F.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-bold-G.png b/extensions/WikiEditor/modules/images/toolbar/format-bold-G.png
new file mode 100644
index 00000000..39989b42
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-bold-G.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-bold-N.png b/extensions/WikiEditor/modules/images/toolbar/format-bold-N.png
new file mode 100644
index 00000000..4d34a5c9
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-bold-N.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-bold-P.png b/extensions/WikiEditor/modules/images/toolbar/format-bold-P.png
new file mode 100644
index 00000000..e245e71a
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-bold-P.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-bold-V.png b/extensions/WikiEditor/modules/images/toolbar/format-bold-V.png
new file mode 100644
index 00000000..9dfe649b
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-bold-V.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-bold-ka.png b/extensions/WikiEditor/modules/images/toolbar/format-bold-ka.png
new file mode 100644
index 00000000..7e37b40f
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-bold-ka.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-bold-ru.png b/extensions/WikiEditor/modules/images/toolbar/format-bold-ru.png
new file mode 100644
index 00000000..e24afd88
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-bold-ru.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-bold.png b/extensions/WikiEditor/modules/images/toolbar/format-bold.png
new file mode 100644
index 00000000..bd8e294c
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-bold.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-indent-rtl.png b/extensions/WikiEditor/modules/images/toolbar/format-indent-rtl.png
new file mode 100644
index 00000000..3cc6c945
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-indent-rtl.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-indent.png b/extensions/WikiEditor/modules/images/toolbar/format-indent.png
new file mode 100644
index 00000000..cb864df2
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-indent.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-italic-A.png b/extensions/WikiEditor/modules/images/toolbar/format-italic-A.png
new file mode 100644
index 00000000..9010c6b1
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-italic-A.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-italic-C.png b/extensions/WikiEditor/modules/images/toolbar/format-italic-C.png
new file mode 100644
index 00000000..cf191fad
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-italic-C.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-italic-D.png b/extensions/WikiEditor/modules/images/toolbar/format-italic-D.png
new file mode 100644
index 00000000..9120da78
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-italic-D.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-italic-I.png b/extensions/WikiEditor/modules/images/toolbar/format-italic-I.png
new file mode 100644
index 00000000..af5bf947
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-italic-I.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-italic-K.png b/extensions/WikiEditor/modules/images/toolbar/format-italic-K.png
new file mode 100644
index 00000000..d8fd479d
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-italic-K.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-italic-ka.png b/extensions/WikiEditor/modules/images/toolbar/format-italic-ka.png
new file mode 100644
index 00000000..2ca7a136
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-italic-ka.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-italic.png b/extensions/WikiEditor/modules/images/toolbar/format-italic.png
new file mode 100644
index 00000000..1b47eeed
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-italic.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-olist-rtl.png b/extensions/WikiEditor/modules/images/toolbar/format-olist-rtl.png
new file mode 100644
index 00000000..1f065399
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-olist-rtl.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-olist.png b/extensions/WikiEditor/modules/images/toolbar/format-olist.png
new file mode 100644
index 00000000..abaeae5f
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-olist.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-small.png b/extensions/WikiEditor/modules/images/toolbar/format-small.png
new file mode 100644
index 00000000..9f031e8c
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-small.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-subscript.png b/extensions/WikiEditor/modules/images/toolbar/format-subscript.png
new file mode 100644
index 00000000..b676d89d
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-subscript.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-superscript.png b/extensions/WikiEditor/modules/images/toolbar/format-superscript.png
new file mode 100644
index 00000000..7220b3c8
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-superscript.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-ulist-rtl.png b/extensions/WikiEditor/modules/images/toolbar/format-ulist-rtl.png
new file mode 100644
index 00000000..51510157
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-ulist-rtl.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/format-ulist.png b/extensions/WikiEditor/modules/images/toolbar/format-ulist.png
new file mode 100644
index 00000000..3172d4d3
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/format-ulist.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/insert-file.png b/extensions/WikiEditor/modules/images/toolbar/insert-file.png
new file mode 100644
index 00000000..1e5419ad
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/insert-file.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/insert-gallery.png b/extensions/WikiEditor/modules/images/toolbar/insert-gallery.png
new file mode 100644
index 00000000..46a9acc5
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/insert-gallery.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/insert-ilink.png b/extensions/WikiEditor/modules/images/toolbar/insert-ilink.png
new file mode 100644
index 00000000..c4010cfe
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/insert-ilink.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/insert-link.png b/extensions/WikiEditor/modules/images/toolbar/insert-link.png
new file mode 100644
index 00000000..a8d2f2f3
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/insert-link.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/insert-newline.png b/extensions/WikiEditor/modules/images/toolbar/insert-newline.png
new file mode 100644
index 00000000..67a517b4
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/insert-newline.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/insert-nowiki.png b/extensions/WikiEditor/modules/images/toolbar/insert-nowiki.png
new file mode 100644
index 00000000..80889f4d
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/insert-nowiki.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/insert-redirect-rtl.png b/extensions/WikiEditor/modules/images/toolbar/insert-redirect-rtl.png
new file mode 100644
index 00000000..d0200f6e
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/insert-redirect-rtl.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/insert-redirect.png b/extensions/WikiEditor/modules/images/toolbar/insert-redirect.png
new file mode 100644
index 00000000..52931264
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/insert-redirect.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/insert-reference.png b/extensions/WikiEditor/modules/images/toolbar/insert-reference.png
new file mode 100644
index 00000000..8c2c4aa7
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/insert-reference.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/insert-signature.png b/extensions/WikiEditor/modules/images/toolbar/insert-signature.png
new file mode 100644
index 00000000..49cdc957
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/insert-signature.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/insert-table.png b/extensions/WikiEditor/modules/images/toolbar/insert-table.png
new file mode 100644
index 00000000..7897e78d
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/insert-table.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/insert-xlink.png b/extensions/WikiEditor/modules/images/toolbar/insert-xlink.png
new file mode 100644
index 00000000..7bf24c46
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/insert-xlink.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/loading-small.gif b/extensions/WikiEditor/modules/images/toolbar/loading-small.gif
new file mode 100644
index 00000000..ff0688b9
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/loading-small.gif
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/loading.gif b/extensions/WikiEditor/modules/images/toolbar/loading.gif
new file mode 100644
index 00000000..fab1bb9d
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/loading.gif
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/magnify-clip.png b/extensions/WikiEditor/modules/images/toolbar/magnify-clip.png
new file mode 100644
index 00000000..00a9cee1
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/magnify-clip.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/arrow-down.png b/extensions/WikiEditor/modules/images/toolbar/png24/arrow-down.png
new file mode 100644
index 00000000..6fd2d63a
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/arrow-down.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/arrow-left.png b/extensions/WikiEditor/modules/images/toolbar/png24/arrow-left.png
new file mode 100644
index 00000000..adcba5bd
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/arrow-left.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/arrow-right.png b/extensions/WikiEditor/modules/images/toolbar/png24/arrow-right.png
new file mode 100644
index 00000000..52d04e6a
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/arrow-right.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-big.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-big.png
new file mode 100644
index 00000000..5e60a178
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-big.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-A.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-A.png
new file mode 100644
index 00000000..429bff1d
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-A.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-B.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-B.png
new file mode 100644
index 00000000..cd4a9993
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-B.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-F.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-F.png
new file mode 100644
index 00000000..9f50b490
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-F.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-G.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-G.png
new file mode 100644
index 00000000..4584a8b2
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-G.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-N.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-N.png
new file mode 100644
index 00000000..7c14e28e
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-N.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-P.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-P.png
new file mode 100644
index 00000000..906ee670
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-P.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-V.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-V.png
new file mode 100644
index 00000000..13b258d7
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold-V.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-bold.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold.png
new file mode 100644
index 00000000..429bff1d
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-bold.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-italic-A.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-italic-A.png
new file mode 100644
index 00000000..ee834ca6
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-italic-A.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-italic-C.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-italic-C.png
new file mode 100644
index 00000000..d2a9182b
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-italic-C.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-italic-I.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-italic-I.png
new file mode 100644
index 00000000..a74215d6
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-italic-I.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-italic-K.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-italic-K.png
new file mode 100644
index 00000000..4e91bcc8
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-italic-K.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-italic.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-italic.png
new file mode 100644
index 00000000..ee834ca6
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-italic.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-olist.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-olist.png
new file mode 100644
index 00000000..69a3186d
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-olist.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-small.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-small.png
new file mode 100644
index 00000000..1b6e22d1
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-small.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-subscript.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-subscript.png
new file mode 100644
index 00000000..3fc0dce5
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-subscript.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-superscript.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-superscript.png
new file mode 100644
index 00000000..d5e2d90c
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-superscript.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/format-ulist.png b/extensions/WikiEditor/modules/images/toolbar/png24/format-ulist.png
new file mode 100644
index 00000000..3ddd46cc
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/format-ulist.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/generate.sh b/extensions/WikiEditor/modules/images/toolbar/png24/generate.sh
new file mode 100644
index 00000000..ca14ee68
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/generate.sh
@@ -0,0 +1,12 @@
+#! /bin/bash
+
+# Compresses all PNGs in the current directory and puts the compressed
+# version in the parent directory
+#
+# Requires pngcrush
+
+for f in *.png
+do
+ pngcrush $f ../$f
+done
+
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/insert-file.png b/extensions/WikiEditor/modules/images/toolbar/png24/insert-file.png
new file mode 100644
index 00000000..cabc613a
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/insert-file.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/insert-gallery.png b/extensions/WikiEditor/modules/images/toolbar/png24/insert-gallery.png
new file mode 100644
index 00000000..661689ae
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/insert-gallery.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/insert-link.png b/extensions/WikiEditor/modules/images/toolbar/png24/insert-link.png
new file mode 100644
index 00000000..b16eeaba
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/insert-link.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/insert-newline.png b/extensions/WikiEditor/modules/images/toolbar/png24/insert-newline.png
new file mode 100644
index 00000000..d5ec80b6
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/insert-newline.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/insert-nowiki.png b/extensions/WikiEditor/modules/images/toolbar/png24/insert-nowiki.png
new file mode 100644
index 00000000..f872244e
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/insert-nowiki.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/insert-redirect.png b/extensions/WikiEditor/modules/images/toolbar/png24/insert-redirect.png
new file mode 100644
index 00000000..288aa516
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/insert-redirect.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/insert-reference.png b/extensions/WikiEditor/modules/images/toolbar/png24/insert-reference.png
new file mode 100644
index 00000000..9988dbcc
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/insert-reference.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/insert-signature.png b/extensions/WikiEditor/modules/images/toolbar/png24/insert-signature.png
new file mode 100644
index 00000000..0b003916
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/insert-signature.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/insert-table.png b/extensions/WikiEditor/modules/images/toolbar/png24/insert-table.png
new file mode 100644
index 00000000..e506b928
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/insert-table.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/png24/search-replace.png b/extensions/WikiEditor/modules/images/toolbar/png24/search-replace.png
new file mode 100644
index 00000000..de3a75f8
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/png24/search-replace.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/images/toolbar/search-replace.png b/extensions/WikiEditor/modules/images/toolbar/search-replace.png
new file mode 100644
index 00000000..cb70b929
--- /dev/null
+++ b/extensions/WikiEditor/modules/images/toolbar/search-replace.png
Binary files differ
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.css b/extensions/WikiEditor/modules/jquery.wikiEditor.css
new file mode 100644
index 00000000..6df44565
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.css
@@ -0,0 +1,112 @@
+/*
+ * CSS for WikiEditor jQuery plugin
+ */
+
+.wikiEditor-ui {
+ float: left;
+ position: relative;
+ clear: both;
+ width: 100%;
+ background-color: #E0EEf7;
+ border: solid silver 1px;
+}
+.wikiEditor-ui textarea:focus {
+ outline: none;
+}
+.wikiEditor-ui .wikiEditor-ui-bottom {
+
+}
+.wikiEditor-ui .wikiEditor-ui-text {
+ line-height: 0;
+}
+.wikiEditor-ui .wikiEditor-ui-top {
+ position: relative;
+ border-bottom: solid silver 1px;
+}
+.wikiEditor-ui .wikiEditor-ui-left {
+ float: left;
+ width: 100%;
+}
+.wikiEditor-ui .wikiEditor-ui-right {
+ float: right;
+ background: #F3F3F3;
+ overflow: hidden;
+}
+.wikiEditor-wikitext {
+ float: left;
+ width: 100%;
+}
+.wikiEditor-ui-controls {
+ float: left;
+ width: 100%;
+ background-color: white;
+ margin-top: -1px;
+ border-bottom: solid 1px silver;
+}
+.wikiEditor-ui-tabs {
+ float: left;
+ height: 2.5em;
+ margin-left: -1px;
+ background-color: white;
+ border-left: solid 1px silver;
+ border-top: solid 1px silver;
+}
+.wikiEditor-ui-buttons {
+ float: right;
+ height: 2.5em;
+ margin-right: -1px;
+ background-color: white;
+ padding-left: 1em;
+ border-top: solid 1px white;
+}
+.wikiEditor-ui-buttons button {
+ margin-left: 0.5em;
+}
+.wikiEditor-ui-tabs div {
+ float: left;
+ height: 2.5em;
+ background-color: #f3f3f3;
+ border-right: solid 1px silver;
+ border-bottom: solid 1px silver;
+}
+.wikiEditor-ui-tabs div.current {
+ border-bottom: solid 1px white;
+ background-color: white;
+}
+.wikiEditor-ui-tabs div a {
+ display: inline-block;
+ padding: 0 0.75em;
+ line-height: 2.5em;
+ color: #0645AD;
+}
+.wikiEditor-ui-tabs div.current a {
+ color: #333333;
+}
+.wikiEditor-ui-tabs div.current a:hover {
+ text-decoration: none;
+}
+
+.wikiEditor-view-wikitext {
+ line-height: 1em;
+}
+.wikiEditor-ui-loading {
+ background: #f3f3f3;
+ z-index: 10;
+ position: absolute;
+ top: 0;
+ left: 0;
+ text-align: center;
+ height: 100%;
+ width: 100%;
+ border: 1px solid silver;
+ margin: -1px;
+}
+.wikiEditor-ui-loading span {
+ display: block;
+ height: 24px;
+ width: 24px;
+ /* @embed */
+ background: url(images/toolbar/loading.gif) 0 0 no-repeat;
+ text-indent: -9999px;
+ margin: 0 auto;
+} \ No newline at end of file
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.config.css b/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.config.css
new file mode 100644
index 00000000..13302ac3
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.config.css
@@ -0,0 +1,204 @@
+/*
+ * CSS for WikiEditor Dialogs
+ */
+
+/* Table Dialog */
+#wikieditor-toolbar-table-dialog fieldset {
+ width: 218px;
+ padding: 0;
+ float: left;
+}
+body.rtl #wikieditor-toolbar-table-dialog fieldset {
+ float: right;
+}
+#wikieditor-toolbar-table-dialog .wikieditor-toolbar-table-preview-wrapper {
+ width: 330px;
+ padding: 0;
+ float: right;
+}
+body.rtl #wikieditor-toolbar-table-dialog .wikieditor-toolbar-table-preview-wrapper {
+ float: left;
+}
+body.rtl .wikiEditor-toolbar-dialog .wikieditor-toolbar-table-preview-wrapper table {
+ margin-left: 1em;
+ margin-right: 0;
+}
+.wikieditor-toolbar-table-preview-content * {
+ cursor: default;
+}
+.wikiEditor-toolbar-dialog .wikieditor-toolbar-table-preview-wrapper table {
+ width: 100% !important;
+}
+.wikiEditor-toolbar-dialog .wikieditor-toolbar-table-preview-content table td {
+ padding: 10px 4px !important;
+ height: auto !important;
+}
+.wikiEditor-toolbar-dialog .wikieditor-toolbar-table-preview-content table th {
+ padding: 7px 3px !important;
+}
+.wikieditor-toolbar-table-dimension-fields .wikieditor-toolbar-field-wrapper {
+ float: left;
+ margin-right: 20px;
+ vertical-align: bottom;
+}
+body.rtl .wikieditor-toolbar-table-dimension-fields .wikieditor-toolbar-field-wrapper {
+ float: right;
+ margin-right: 0px;
+ margin-left: 20px;
+}
+.wikiEditor-toolbar-dialog .ui-dialog-content {
+ padding: 30px 20px 0 !important;
+}
+.wikieditor-toolbar-dialog-wrapper {
+ width: 100%;
+}
+/* Insert Link Dialog */
+#wikieditor-toolbar-link-int-target-status {
+ float: right;
+}
+#wikieditor-toolbar-link-int-target,
+#wikieditor-toolbar-link-int-text {
+ width: 100%;
+}
+#wikieditor-toolbar-tool-link-int-target-label {
+ float: left;
+ line-height: 1.7em;
+}
+#wikieditor-toolbar-link-int-target-status-exists,
+#wikieditor-toolbar-link-int-target-status-notexists,
+#wikieditor-toolbar-link-int-target-status-invalid,
+#wikieditor-toolbar-link-int-target-status-external {
+ padding-left: 30px;
+ background-position: 0 50%;
+ background-repeat: no-repeat;
+}
+#wikieditor-toolbar-link-int-target-status-exists {
+ /* @embed */
+ background-image: url(images/dialogs/insert-link-exists.png);
+}
+#wikieditor-toolbar-link-int-target-status-notexists {
+ /* @embed */
+ background-image: url(images/dialogs/insert-link-notexists.png);
+}
+#wikieditor-toolbar-link-int-target-status-invalid {
+ /* @embed */
+ background-image: url(images/dialogs/insert-link-invalid.png);
+}
+#wikieditor-toolbar-link-int-target-status-external {
+ /* @embed */
+ background-image: url(images/dialogs/insert-link-external.png);
+}
+/* Reference Dialog */
+#wikieditor-toolbar-reference-dialog label {
+ float: left;
+ line-height: 1.7em;
+}
+#wikieditor-toolbar-reference-text {
+ width: 100%;
+}
+/* RTL Changes */
+body.rtl .wikiEditor-toolbar-dialog .ui-dialog-buttonpane button {
+ float: left;
+ margin: 0.5em 0.4em 0.5em 0 !important;
+}
+body.rtl .wikiEditor-toolbar-dialog .ui-dialog-titlebar-close {
+ left: 0.9em;
+ right: auto;
+}
+body.rtl .wikiEditor-toolbar-dialog .ui-dialog-title {
+ float:right;
+}
+body.rtl #wikieditor-toolbar-link-int-target-status {
+ float: left;
+}
+body.rtl #wikieditor-toolbar-tool-link-int-target-label {
+ float: right;
+}
+body.rtl .wikieditor-toolbar-floated-field-wrapper {
+ float: right;
+ margin-right: 0;
+ margin-left: 2em;
+}
+body.rtl #wikieditor-toolbar-link-int-target-status-exists,
+body.rtl #wikieditor-toolbar-link-int-target-status-notexists,
+body.rtl #wikieditor-toolbar-link-int-target-status-invalid,
+body.rtl #wikieditor-toolbar-link-int-target-status-external {
+ padding-left: 0;
+ padding-right: 30px;
+ background-position: 100% 50%;
+}
+body.rtl #wikieditor-toolbar-link-int-target-status-external {
+ /* @embed */
+ background-image: url(images/dialogs/insert-link-external-rtl.png);
+}
+body.rtl #wikieditor-toolbar-reference-dialog label {
+ float: right;
+}
+/* Template Editor Dialogs */
+.wikiEditor-template-dialog-fields label {
+ text-transform: capitalize;
+ float: left;
+ width: 25%;
+ line-height: 2.25em;
+}
+.wikiEditor-template-dialog-fields textarea {
+ float: right;
+ width: 70%;
+ line-height: 1.5em;
+ height: 1.5em;
+}
+.wikiEditor-template-dialog-fields .wikiEditor-template-dialog-field-wrapper {
+ padding: 0.75em 0.33em;
+ border-bottom: dashed 1px silver;
+ clear: both;
+}
+.wikiEditor-template-dialog-fields .wikiEditor-template-dialog-field-wrapper:first-child {
+ padding-top: 0;
+}
+.wikiEditor-template-dialog-fields .wikiEditor-template-dialog-field-wrapper:last-child {
+ border-bottom: none;
+}
+/* Self Clearing Floats */
+.wikieditor-toolbar-table-dimension-fields:after,
+.wikieditor-toolbar-dialog-wrapper:after {
+ visibility: hidden;
+ display: block;
+ font-size: 0;
+ content: " ";
+ clear: both;
+ height: 0;
+}
+.wikieditor-toolbar-table-dimension-fields,
+.wikieditor-toolbar-dialog-wrapper {
+ display: inline-table;
+}
+/* Hides from IE-mac \*/
+* html .wikieditor-toolbar-table-dimension-fields,
+* html .wikieditor-toolbar-dialog-wrapper {
+ height: 1%;
+}
+.wikieditor-toolbar-table-dimension-fields,
+.wikieditor-toolbar-dialog-wrapper {
+ display: block;
+}
+/* End hide from IE-mac */
+.wikiEditor-toolbar-dialog .ui-dialog-buttonpane {
+ border-top: 1px solid #cccccc !important;
+}
+.wikiEditor-toolbar-dialog .ui-dialog-content {
+ padding-bottom: 1em !important;
+}
+/* Edit dialog */
+.wikiEditor-dialog-editoptions {
+ margin-top: 15px;
+}
+/* Publish dialog */
+.wikiEditor-publish-dialog-copywarn {
+ margin-top: 0.5em;
+}
+.wikiEditor-publish-dialog-summary {
+ margin-top: 1.5em;
+}
+.wikiEditor-publish-dialog-options {
+ margin-top: 1.5em;
+}
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.config.js b/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.config.js
new file mode 100644
index 00000000..4ab6ce46
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.config.js
@@ -0,0 +1,1150 @@
+/**
+ * Configuration of Dialog module for wikiEditor
+ */
+( function( $ ) { $.wikiEditor.modules.dialogs.config = {
+
+replaceIcons: function( $textarea ) {
+ $textarea
+ .wikiEditor( 'removeFromToolbar', { 'section': 'main', 'group': 'insert', 'tool': 'xlink' } )
+ .wikiEditor( 'removeFromToolbar', { 'section': 'main', 'group': 'insert', 'tool': 'ilink' } )
+ .wikiEditor( 'removeFromToolbar', { 'section': 'main', 'group': 'insert', 'tool': 'reference' } )
+ .wikiEditor( 'removeFromToolbar', { 'section': 'advanced', 'group': 'insert', 'tool': 'table' } )
+ .wikiEditor( 'addToToolbar', {
+ 'section': 'main',
+ 'group': 'insert',
+ 'tools': {
+ 'link': {
+ 'labelMsg': 'wikieditor-toolbar-tool-link',
+ 'type': 'button',
+ 'icon': 'insert-link.png',
+ 'offset': [2, -1654],
+ 'action': {
+ 'type': 'dialog',
+ 'module': 'insert-link'
+ }
+ },
+ 'reference': {
+ 'labelMsg': 'wikieditor-toolbar-tool-reference',
+ 'filters': [ 'body.ns-subject' ],
+ 'type': 'button',
+ 'icon': 'insert-reference.png',
+ 'offset': [2, -1798],
+ 'action': {
+ 'type': 'dialog',
+ 'module': 'insert-reference'
+ }
+ }
+ }
+ } )
+ .wikiEditor( 'addToToolbar', {
+ 'section': 'advanced',
+ 'group': 'insert',
+ 'tools': {
+ 'table': {
+ 'labelMsg': 'wikieditor-toolbar-tool-table',
+ 'type': 'button',
+ 'icon': 'insert-table.png',
+ 'offset': [2, -1942],
+ 'action': {
+ 'type': 'dialog',
+ 'module': 'insert-table'
+ }
+ }
+ }
+ } )
+ .wikiEditor( 'addToToolbar', {
+ 'section': 'advanced',
+ 'groups': {
+ 'search': {
+ 'tools': {
+ 'replace': {
+ 'labelMsg': 'wikieditor-toolbar-tool-replace',
+ 'type': 'button',
+ 'icon': 'search-replace.png',
+ 'offset': [-70, -214],
+ 'action': {
+ 'type': 'dialog',
+ 'module': 'search-and-replace'
+ }
+ }
+ }
+ }
+ }
+ } );
+},
+
+getDefaultConfig: function () {
+ return { 'dialogs': {
+ 'insert-link': {
+ titleMsg: 'wikieditor-toolbar-tool-link-title',
+ id: 'wikieditor-toolbar-link-dialog',
+ html: '\
+ <fieldset>\
+ <div class="wikieditor-toolbar-field-wrapper">\
+ <label for="wikieditor-toolbar-link-int-target" rel="wikieditor-toolbar-tool-link-int-target" id="wikieditor-toolbar-tool-link-int-target-label"></label>\
+ <div id="wikieditor-toolbar-link-int-target-status"></div>\
+ <input type="text" id="wikieditor-toolbar-link-int-target" />\
+ </div>\
+ <div class="wikieditor-toolbar-field-wrapper">\
+ <label for="wikieditor-toolbar-link-int-text" rel="wikieditor-toolbar-tool-link-int-text"></label>\
+ <input type="text" id="wikieditor-toolbar-link-int-text" />\
+ </div>\
+ <div class="wikieditor-toolbar-field-wrapper">\
+ <div class="wikieditor-toolbar-floated-field-wrapper">\
+ <input type="radio" id="wikieditor-toolbar-link-type-int" name="wikieditor-toolbar-link-type" selected />\
+ <label for="wikieditor-toolbar-link-type-int" rel="wikieditor-toolbar-tool-link-int"></label>\
+ </div>\
+ <div class="wikieditor-toolbar-floated-field-wrapper">\
+ <input type="radio" id="wikieditor-toolbar-link-type-ext" name="wikieditor-toolbar-link-type" />\
+ <label for="wikieditor-toolbar-link-type-ext" rel="wikieditor-toolbar-tool-link-ext"></label>\
+ </div>\
+ </div>\
+ </fieldset>',
+ init: function() {
+ function isExternalLink( s ) {
+ // The following things are considered to be external links:
+ // * Starts a URL protocol
+ // * Starts with www.
+ // All of these are potentially valid titles, and the latter two categories match about 6300
+ // titles in enwiki's ns0. Out of 6.9M titles, that's 0.09%
+ if ( typeof arguments.callee.regex == 'undefined' ) {
+ // Cache the regex
+ arguments.callee.regex =
+ new RegExp( "^(" + mw.config.get( 'wgUrlProtocols' ) + "|www\\.)", 'i');
+ }
+ return s.match( arguments.callee.regex );
+ }
+ // Updates the status indicator above the target link
+ function updateWidget( status ) {
+ $( '#wikieditor-toolbar-link-int-target-status' ).children().hide();
+ $( '#wikieditor-toolbar-link-int-target' ).parent()
+ .removeClass(
+ 'status-invalid status-external status-notexists status-exists status-loading'
+ );
+ if ( status ) {
+ $( '#wikieditor-toolbar-link-int-target-status-' + status ).show();
+ $( '#wikieditor-toolbar-link-int-target' ).parent().addClass( 'status-' + status );
+ }
+ if ( status == 'invalid' ) {
+ $( '.ui-dialog:visible .ui-dialog-buttonpane button:first' )
+ .attr( 'disabled', true )
+ .addClass( 'disabled' );
+ } else {
+ $( '.ui-dialog:visible .ui-dialog-buttonpane button:first' )
+ .removeAttr('disabled')
+ .removeClass('disabled');
+ }
+ }
+ // Updates the UI to show if the page title being inputed by the user exists or not
+ // accepts parameter internal for bypassing external link detection
+ function updateExistence( internal ) {
+ // ensure the internal parameter is a boolean
+ if ( internal != true ) internal = false;
+ // Abort previous request
+ var request = $( '#wikieditor-toolbar-link-int-target-status' ).data( 'request' );
+ if ( request ) {
+ request.abort();
+ }
+ var target = $( '#wikieditor-toolbar-link-int-target' ).val();
+ var cache = $( '#wikieditor-toolbar-link-int-target-status' ).data( 'existencecache' );
+ if ( cache[target] ) {
+ updateWidget( cache[target] );
+ return;
+ }
+ if ( target.replace( /^\s+$/,'' ) == '' ) {
+ // Hide the widget when the textbox is empty
+ updateWidget( false );
+ return;
+ }
+ // If the forced internal paremter was not true, check if the target is an external link
+ if ( !internal && isExternalLink( target ) ) {
+ updateWidget( 'external' );
+ return;
+ }
+ if ( target.indexOf( '|' ) != -1 ) {
+ // Title contains | , which means it's invalid
+ // but confuses the API. Show invalid and bypass API
+ updateWidget( 'invalid' );
+ return;
+ }
+ // Show loading spinner while waiting for the API to respond
+ updateWidget( 'loading' );
+ // Call the API to check page status, saving the request object so it can be aborted if
+ // necessary
+ $( '#wikieditor-toolbar-link-int-target-status' ).data(
+ 'request',
+ $.ajax( {
+ url: mw.util.wikiScript( 'api' ),
+ dataType: 'json',
+ data: {
+ 'action': 'query',
+ 'indexpageids': '',
+ 'titles': target,
+ 'converttitles': '',
+ 'format': 'json'
+ },
+ success: function( data ) {
+ var status;
+ if ( !data || typeof data.query == 'undefined' ) {
+ // This happens in some weird cases
+ status = false;
+ } else {
+ var page = data.query.pages[data.query.pageids[0]];
+ status = 'exists';
+ if ( typeof page.missing != 'undefined' )
+ status = 'notexists';
+ else if ( typeof page.invalid != 'undefined' )
+ status = 'invalid';
+ }
+ // Cache the status of the link target if the force internal parameter was not
+ // passed
+ if ( !internal ) cache[target] = status;
+ updateWidget( status );
+ }
+ } )
+ );
+ }
+ $( '#wikieditor-toolbar-link-type-int, #wikieditor-toolbar-link-type-ext' ).click( function() {
+ if( $( '#wikieditor-toolbar-link-type-ext' ).is( ':checked' ) ) {
+ // Abort previous request
+ var request = $( '#wikieditor-toolbar-link-int-target-status' ).data( 'request' );
+ if ( request ) {
+ request.abort();
+ }
+ updateWidget( 'external' );
+ }
+ if( $( '#wikieditor-toolbar-link-type-int' ).is( ':checked' ) )
+ updateExistence( true );
+ });
+ // Set labels of tabs based on rel values
+ $(this).find( '[rel]' ).each( function() {
+ $(this).text( mediaWiki.msg( $(this).attr( 'rel' ) ) );
+ });
+ // Set tabindexes on form fields
+ $.wikiEditor.modules.dialogs.fn.setTabindexes( $(this).find( 'input' ).not( '[tabindex]' ) );
+ // Setup the tooltips in the textboxes
+ $( '#wikieditor-toolbar-link-int-target' )
+ .data( 'tooltip', mediaWiki.msg( 'wikieditor-toolbar-tool-link-int-target-tooltip' ) );
+ $( '#wikieditor-toolbar-link-int-text' )
+ .data( 'tooltip', mediaWiki.msg( 'wikieditor-toolbar-tool-link-int-text-tooltip' ) );
+ $( '#wikieditor-toolbar-link-int-target, #wikieditor-toolbar-link-int-text' )
+ .each( function() {
+ var tooltip = mediaWiki.msg( $( this ).attr( 'id' ) + '-tooltip' );
+ if ( $( this ).val() == '' )
+ $( this )
+ .addClass( 'wikieditor-toolbar-dialog-hint' )
+ .val( $( this ).data( 'tooltip' ) )
+ .data( 'tooltip-mode', true );
+ } )
+ .focus( function() {
+ if( $( this ).val() == $( this ).data( 'tooltip' ) ) {
+ $( this )
+ .val( '' )
+ .removeClass( 'wikieditor-toolbar-dialog-hint' )
+ .data( 'tooltip-mode', false );
+ }
+ })
+ .bind( 'change', function() {
+ if ( $( this ).val() != $( this ).data( 'tooltip' ) ) {
+ $( this )
+ .removeClass( 'wikieditor-toolbar-dialog-hint' )
+ .data( 'tooltip-mode', false );
+ }
+ })
+ .bind( 'blur', function() {
+ if ( $( this ).val() == '' ) {
+ $( this )
+ .addClass( 'wikieditor-toolbar-dialog-hint' )
+ .val( $( this ).data( 'tooltip' ) )
+ .data( 'tooltip-mode', true );
+ }
+ });
+
+ // Automatically copy the value of the internal link page title field to the link text field unless the
+ // user has changed the link text field - this is a convenience thing since most link texts are going to
+ // be the the same as the page title - Also change the internal/external radio button accordingly
+ $( '#wikieditor-toolbar-link-int-target' ).bind( 'change keydown paste cut', function() {
+ // $(this).val() is the old value, before the keypress - Defer this until $(this).val() has
+ // been updated
+ setTimeout( function() {
+ if ( isExternalLink( $( '#wikieditor-toolbar-link-int-target' ).val() ) ) {
+ $( '#wikieditor-toolbar-link-type-ext' ).attr( 'checked', 'checked' );
+ updateWidget( 'external' );
+ } else {
+ $( '#wikieditor-toolbar-link-type-int' ).attr( 'checked', 'checked' );
+ updateExistence();
+ }
+ if ( $( '#wikieditor-toolbar-link-int-text' ).data( 'untouched' ) )
+ if ( $( '#wikieditor-toolbar-link-int-target' ).val() ==
+ $( '#wikieditor-toolbar-link-int-target' ).data( 'tooltip' ) ) {
+ $( '#wikieditor-toolbar-link-int-text' )
+ .addClass( 'wikieditor-toolbar-dialog-hint' )
+ .val( $( '#wikieditor-toolbar-link-int-text' ).data( 'tooltip' ) )
+ .change();
+ } else {
+ $( '#wikieditor-toolbar-link-int-text' )
+ .val( $( '#wikieditor-toolbar-link-int-target' ).val() )
+ .change();
+ }
+ }, 0 );
+ });
+ $( '#wikieditor-toolbar-link-int-text' ).bind( 'change keydown paste cut', function() {
+ var oldVal = $(this).val();
+ var that = this;
+ setTimeout( function() {
+ if ( $(that).val() != oldVal )
+ $(that).data( 'untouched', false );
+ }, 0 );
+ });
+ // Add images to the page existence widget, which will be shown mutually exclusively to communicate if
+ // the page exists, does not exist or the title is invalid (like if it contains a | character)
+ var existsMsg = mediaWiki.msg( 'wikieditor-toolbar-tool-link-int-target-status-exists' );
+ var notexistsMsg = mediaWiki.msg( 'wikieditor-toolbar-tool-link-int-target-status-notexists' );
+ var invalidMsg = mediaWiki.msg( 'wikieditor-toolbar-tool-link-int-target-status-invalid' );
+ var externalMsg = mediaWiki.msg( 'wikieditor-toolbar-tool-link-int-target-status-external' );
+ var loadingMsg = mediaWiki.msg( 'wikieditor-toolbar-tool-link-int-target-status-loading' );
+ $( '#wikieditor-toolbar-link-int-target-status' )
+ .append( $( '<div />' )
+ .attr( 'id', 'wikieditor-toolbar-link-int-target-status-exists' )
+ .append( existsMsg )
+ )
+ .append( $( '<div />' )
+ .attr( 'id', 'wikieditor-toolbar-link-int-target-status-notexists' )
+ .append( notexistsMsg )
+ )
+ .append( $( '<div />' )
+ .attr( 'id', 'wikieditor-toolbar-link-int-target-status-invalid' )
+ .append( invalidMsg )
+ )
+ .append( $( '<div />' )
+ .attr( 'id', 'wikieditor-toolbar-link-int-target-status-external' )
+ .append( externalMsg )
+ )
+ .append( $( '<div />' )
+ .attr( 'id', 'wikieditor-toolbar-link-int-target-status-loading' )
+ .append( $( '<img />' ).attr( {
+ 'src': $.wikiEditor.imgPath + 'dialogs/' + 'loading-small.gif',
+ 'alt': loadingMsg,
+ 'title': loadingMsg
+ } ) )
+ )
+ .data( 'existencecache', {} )
+ .children().hide();
+
+ $( '#wikieditor-toolbar-link-int-target' )
+ .bind( 'keyup paste cut', function() {
+ // Cancel the running timer if applicable
+ if ( typeof $(this).data( 'timerID' ) != 'undefined' ) {
+ clearTimeout( $(this).data( 'timerID' ) );
+ }
+ // Delay fetch for a while
+ // FIXME: Make 120 configurable elsewhere
+ var timerID = setTimeout( updateExistence, 120 );
+ $(this).data( 'timerID', timerID );
+ } )
+ .change( function() {
+ // Cancel the running timer if applicable
+ if ( typeof $(this).data( 'timerID' ) != 'undefined' ) {
+ clearTimeout( $(this).data( 'timerID' ) );
+ }
+ // Fetch right now
+ updateExistence();
+ } );
+
+ // Title suggestions
+ $( '#wikieditor-toolbar-link-int-target' ).data( 'suggcache', {} ).suggestions( {
+ fetch: function( query ) {
+ var that = this;
+ var title = $(this).val();
+
+ if ( isExternalLink( title ) || title.indexOf( '|' ) != -1 || title == '') {
+ $(this).suggestions( 'suggestions', [] );
+ return;
+ }
+
+ var cache = $(this).data( 'suggcache' );
+ if ( typeof cache[title] != 'undefined' ) {
+ $(this).suggestions( 'suggestions', cache[title] );
+ return;
+ }
+
+ var request = $.ajax( {
+ url: mw.util.wikiScript( 'api' ),
+ data: {
+ 'action': 'opensearch',
+ 'search': title,
+ 'namespace': 0,
+ 'suggest': '',
+ 'format': 'json'
+ },
+ dataType: 'json',
+ success: function( data ) {
+ cache[title] = data[1];
+ $(that).suggestions( 'suggestions', data[1] );
+ }
+ });
+ $(this).data( 'request', request );
+ },
+ cancel: function() {
+ var request = $(this).data( 'request' );
+ if ( request )
+ request.abort();
+ }
+ });
+ },
+ dialog: {
+ width: 500,
+ dialogClass: 'wikiEditor-toolbar-dialog',
+ buttons: {
+ 'wikieditor-toolbar-tool-link-insert': function() {
+ function escapeInternalText( s ) {
+ // FIXME: Should this escape [[ too? Seems to work without that
+ return s.replace( /(]{2,})/g, '<nowiki>$1</nowiki>' );
+ }
+ function escapeExternalTarget( s ) {
+ return s.replace( / /g, '%20' )
+ .replace( /\[/g, '%5B' )
+ .replace( /]/g, '%5D' );
+ }
+ function escapeExternalText( s ) {
+ // FIXME: Should this escape [ too? Seems to work without that
+ return s.replace( /(]+)/g, '<nowiki>$1</nowiki>' );
+ }
+ var insertText = '';
+ var whitespace = $( '#wikieditor-toolbar-link-dialog' ).data( 'whitespace' );
+ var target = $( '#wikieditor-toolbar-link-int-target' ).val();
+ var text = $( '#wikieditor-toolbar-link-int-text' ).val();
+ // check if the tooltips were passed as target or text
+ if ( $( '#wikieditor-toolbar-link-int-target' ).data( 'tooltip-mode' ) )
+ target = "";
+ if ( $( '#wikieditor-toolbar-link-int-text' ).data( 'tooltip-mode' ) )
+ text = "";
+ if ( target == '' ) {
+ alert( mediaWiki.msg( 'wikieditor-toolbar-tool-link-empty' ) );
+ return;
+ }
+ if ( $.trim( text ) == '' ) {
+ // [[Foo| ]] creates an invisible link
+ // Instead, generate [[Foo|]]
+ text = '';
+ }
+ if ( $( '#wikieditor-toolbar-link-type-int' ).is( ':checked' ) ) {
+ // FIXME: Exactly how fragile is this?
+ if ( $( '#wikieditor-toolbar-link-int-target-status-invalid' ).is( ':visible' ) ) {
+ // Refuse to add links to invalid titles
+ alert( mediaWiki.msg( 'wikieditor-toolbar-tool-link-int-invalid' ) );
+ return;
+ }
+
+ if ( target == text || !text.length )
+ insertText = '[[' + target + ']]';
+ else
+ insertText = '[[' + target + '|' + escapeInternalText( text ) + ']]';
+ } else {
+ // Prepend http:// if there is no protocol
+ if ( !target.match( /^[a-z]+:\/\/./ ) )
+ target = 'http://' + target;
+
+ // Detect if this is really an internal link in disguise
+ var match = target.match( $(this).data( 'articlePathRegex' ) );
+ if ( match && !$(this).data( 'ignoreLooksInternal' ) ) {
+ var buttons = { };
+ var that = this;
+ buttons[ mediaWiki.msg( 'wikieditor-toolbar-tool-link-lookslikeinternal-int' ) ] =
+ function() {
+ $( '#wikieditor-toolbar-link-int-target' ).val( match[1] ).change();
+ $(this).dialog( 'close' );
+ };
+ buttons[ mediaWiki.msg( 'wikieditor-toolbar-tool-link-lookslikeinternal-ext' ) ] =
+ function() {
+ $(that).data( 'ignoreLooksInternal', true );
+ $(that).closest( '.ui-dialog' ).find( 'button:first' ).click();
+ $(that).data( 'ignoreLooksInternal', false );
+ $(this).dialog( 'close' );
+ };
+ $.wikiEditor.modules.dialogs.quickDialog(
+ mediaWiki.msg( 'wikieditor-toolbar-tool-link-lookslikeinternal', match[1] ),
+ { buttons: buttons }
+ );
+ return;
+ }
+
+ var escTarget = escapeExternalTarget( target );
+ var escText = escapeExternalText( text );
+
+ if ( escTarget == escText )
+ insertText = escTarget;
+ else if ( text == '' )
+ insertText = '[' + escTarget + ']';
+ else
+ insertText = '[' + escTarget + ' ' + escText + ']';
+ }
+ // Preserve whitespace in selection when replacing
+ if ( whitespace ) insertText = whitespace[0] + insertText + whitespace[1];
+ $(this).dialog( 'close' );
+ $.wikiEditor.modules.toolbar.fn.doAction( $(this).data( 'context' ), {
+ type: 'replace',
+ options: {
+ pre: insertText
+ }
+ }, $(this) );
+
+ // Blank form
+ $( '#wikieditor-toolbar-link-int-target, #wikieditor-toolbar-link-int-text' ).val( '' );
+ $( '#wikieditor-toolbar-link-type-int, #wikieditor-toolbar-link-type-ext' )
+ .attr( 'checked', '' );
+ },
+ 'wikieditor-toolbar-tool-link-cancel': function() {
+ // Clear any saved selection state
+ var context = $(this).data( 'context' );
+ context.fn.restoreCursorAndScrollTop();
+ $(this).dialog( 'close' );
+ }
+ },
+ open: function() {
+ // Obtain the server name without the protocol. wgServer may be protocol-relative
+ var serverName = mw.config.get( 'wgServer' ).replace( /^(https?:)?\/\//, '' );
+ // Cache the articlepath regex
+ $(this).data( 'articlePathRegex', new RegExp(
+ '^https?://' + $.escapeRE( serverName + mw.config.get( 'wgArticlePath' ) )
+ .replace( /\\\$1/g, '(.*)' ) + '$'
+ ) );
+ // Pre-fill the text fields based on the current selection
+ var context = $(this).data( 'context' );
+ // Restore and immediately save selection state, needed for inserting stuff later
+ context.fn.restoreCursorAndScrollTop();
+ context.fn.saveCursorAndScrollTop();
+ var selection = context.$textarea.textSelection( 'getSelection' );
+ $( '#wikieditor-toolbar-link-int-target' ).focus();
+ // Trigger the change event, so the link status indicator is up to date
+ $( '#wikieditor-toolbar-link-int-target' ).change();
+ $( '#wikieditor-toolbar-link-dialog' ).data( 'whitespace', [ '', '' ] );
+ if ( selection != '' ) {
+ var target, text, type;
+ var matches;
+ if ( ( matches = selection.match( /^(\s*)\[\[([^\]\|]+)(\|([^\]\|]*))?\]\](\s*)$/ ) ) ) {
+ // [[foo|bar]] or [[foo]]
+ target = matches[2];
+ text = ( matches[4] ? matches[4] : matches[2] );
+ type = 'int';
+ // Preserve whitespace when replacing
+ $( '#wikieditor-toolbar-link-dialog' ).data( 'whitespace', [ matches[1], matches[5] ] );
+ } else if ( ( matches = selection.match( /^(\s*)\[([^\] ]+)( ([^\]]+))?\](\s*)$/ ) ) ) {
+ // [http://www.example.com foo] or [http://www.example.com]
+ target = matches[2];
+ text = ( matches[4] ? matches[4] : '' );
+ type = 'ext';
+ // Preserve whitespace when replacing
+ $( '#wikieditor-toolbar-link-dialog' ).data( 'whitespace', [ matches[1], matches[5] ] );
+ } else {
+ // Trim any leading and trailing whitespace from the selection,
+ // but preserve it when replacing
+ target = text = $.trim( selection );
+ if ( target.length < selection.length ) {
+ $( '#wikieditor-toolbar-link-dialog' ).data( 'whitespace', [
+ selection.substr( 0, selection.indexOf( target.charAt( 0 ) ) ),
+ selection.substr(
+ selection.lastIndexOf( target.charAt( target.length - 1 ) ) + 1
+ ) ]
+ );
+ }
+ }
+
+ // Change the value by calling val() doesn't trigger the change event, so let's do that
+ // ourselves
+ if ( typeof text != 'undefined' )
+ $( '#wikieditor-toolbar-link-int-text' ).val( text ).change();
+ if ( typeof target != 'undefined' )
+ $( '#wikieditor-toolbar-link-int-target' ).val( target ).change();
+ if ( typeof type != 'undefined' )
+ $( '#wikieditor-toolbar-link-' + type ).attr( 'checked', 'checked' );
+ }
+ $( '#wikieditor-toolbar-link-int-text' ).data( 'untouched',
+ $( '#wikieditor-toolbar-link-int-text' ).val() ==
+ $( '#wikieditor-toolbar-link-int-target' ).val() ||
+ $( '#wikieditor-toolbar-link-int-text' ).hasClass( 'wikieditor-toolbar-dialog-hint' )
+ );
+ $( '#wikieditor-toolbar-link-int-target' ).suggestions();
+
+ //don't overwrite user's text
+ if( selection != '' ){
+ $( '#wikieditor-toolbar-link-int-text' ).data( 'untouched', false );
+ }
+
+ $( '#wikieditor-toolbar-link-int-text, #wikiedit-toolbar-link-int-target' )
+ .each( function() {
+ if ( $(this).val() == '' )
+ $(this).parent().find( 'label' ).show();
+ });
+
+ if ( !( $(this).data( 'dialogkeypressset' ) ) ) {
+ $(this).data( 'dialogkeypressset', true );
+ // Execute the action associated with the first button
+ // when the user presses Enter
+ $(this).closest( '.ui-dialog' ).keypress( function( e ) {
+ if ( ( e.keyCode || e.which ) == 13 ) {
+ var button = $(this).data( 'dialogaction' ) || $(this).find( 'button:first' );
+ button.click();
+ e.preventDefault();
+ }
+ });
+
+ // Make tabbing to a button and pressing
+ // Enter do what people expect
+ $(this).closest( '.ui-dialog' ).find( 'button' ).focus( function() {
+ $(this).closest( '.ui-dialog' ).data( 'dialogaction', this );
+ });
+ }
+ }
+ }
+ },
+ 'insert-reference': {
+ titleMsg: 'wikieditor-toolbar-tool-reference-title',
+ id: 'wikieditor-toolbar-reference-dialog',
+ html: '\
+ <div class="wikieditor-toolbar-dialog-wrapper">\
+ <fieldset><div class="wikieditor-toolbar-table-form">\
+ <div class="wikieditor-toolbar-field-wrapper">\
+ <label for="wikieditor-toolbar-reference-text"\
+ rel="wikieditor-toolbar-tool-reference-text"></label>\
+ <input type="text" id="wikieditor-toolbar-reference-text" />\
+ </div>\
+ </div></fieldset>\
+ </div>',
+ init: function() {
+ // Insert translated strings into labels
+ $( this ).find( '[rel]' ).each( function() {
+ $( this ).text( mediaWiki.msg( $( this ).attr( 'rel' ) ) );
+ } );
+
+ },
+ dialog: {
+ dialogClass: 'wikiEditor-toolbar-dialog',
+ width: 590,
+ buttons: {
+ 'wikieditor-toolbar-tool-reference-insert': function() {
+ var insertText = $( '#wikieditor-toolbar-reference-text' ).val();
+ var whitespace = $( '#wikieditor-toolbar-reference-dialog' ).data( 'whitespace' );
+ var attributes = $( '#wikieditor-toolbar-reference-dialog' ).data( 'attributes' );
+ // Close the dialog
+ $( this ).dialog( 'close' );
+ $.wikiEditor.modules.toolbar.fn.doAction(
+ $( this ).data( 'context' ),
+ {
+ type: 'replace',
+ options: {
+ pre: whitespace[0] + '<ref' + attributes + '>',
+ peri: insertText,
+ post: '</ref>' + whitespace[1]
+ }
+ },
+ $( this )
+ );
+ // Restore form state
+ $( '#wikieditor-toolbar-reference-text' ).val( "" );
+ },
+ 'wikieditor-toolbar-tool-reference-cancel': function() {
+ // Clear any saved selection state
+ var context = $( this ).data( 'context' );
+ context.fn.restoreCursorAndScrollTop();
+ $( this ).dialog( 'close' );
+ }
+ },
+ open: function() {
+ // Pre-fill the text fields based on the current selection
+ var context = $(this).data( 'context' );
+ // Restore and immediately save selection state, needed for inserting stuff later
+ context.fn.restoreCursorAndScrollTop();
+ context.fn.saveCursorAndScrollTop();
+ var selection = context.$textarea.textSelection( 'getSelection' );
+ // set focus
+ $( '#wikieditor-toolbar-reference-text' ).focus();
+ $( '#wikieditor-toolbar-reference-dialog' )
+ .data( 'whitespace', [ '', '' ] )
+ .data( 'attributes', '' );
+ if ( selection != '' ) {
+ var matches, text;
+ if ( ( matches = selection.match( /^(\s*)<ref([^\>]*)>([^\<]*)<\/ref\>(\s*)$/ ) ) ) {
+ text = matches[3];
+ // Preserve whitespace when replacing
+ $( '#wikieditor-toolbar-reference-dialog' )
+ .data( 'whitespace', [ matches[1], matches[4] ] );
+ $( '#wikieditor-toolbar-reference-dialog' ).data( 'attributes', matches[2] );
+ } else {
+ text = selection;
+ }
+ $( '#wikieditor-toolbar-reference-text' ).val( text );
+ }
+ if ( !( $( this ).data( 'dialogkeypressset' ) ) ) {
+ $( this ).data( 'dialogkeypressset', true );
+ // Execute the action associated with the first button
+ // when the user presses Enter
+ $( this ).closest( '.ui-dialog' ).keypress( function( e ) {
+ if ( ( e.keyCode || e.which ) == 13 ) {
+ var button = $( this ).data( 'dialogaction' ) || $( this ).find( 'button:first' );
+ button.click();
+ e.preventDefault();
+ }
+ } );
+ // Make tabbing to a button and pressing
+ // Enter do what people expect
+ $( this ).closest( '.ui-dialog' ).find( 'button' ).focus( function() {
+ $( this ).closest( '.ui-dialog' ).data( 'dialogaction', this );
+ } );
+ }
+ }
+ }
+ },
+ 'insert-table': {
+ titleMsg: 'wikieditor-toolbar-tool-table-title',
+ id: 'wikieditor-toolbar-table-dialog',
+ // FIXME: Localize 'x'?
+ html: '\
+ <div class="wikieditor-toolbar-dialog-wrapper">\
+ <fieldset><div class="wikieditor-toolbar-table-form">\
+ <div class="wikieditor-toolbar-field-wrapper">\
+ <input type="checkbox" id="wikieditor-toolbar-table-dimensions-header" checked />\
+ <label for="wikieditor-toolbar-table-dimensions-header"\
+ rel="wikieditor-toolbar-tool-table-dimensions-header"></label>\
+ </div>\
+ <div class="wikieditor-toolbar-field-wrapper">\
+ <input type="checkbox" id="wikieditor-toolbar-table-wikitable" checked />\
+ <label for="wikieditor-toolbar-table-wikitable" rel="wikieditor-toolbar-tool-table-wikitable"></label>\
+ </div>\
+ <div class="wikieditor-toolbar-field-wrapper">\
+ <input type="checkbox" id="wikieditor-toolbar-table-sortable" />\
+ <label for="wikieditor-toolbar-table-sortable" rel="wikieditor-toolbar-tool-table-sortable"></label>\
+ </div>\
+ <div class="wikieditor-toolbar-table-dimension-fields">\
+ <div class="wikieditor-toolbar-field-wrapper">\
+ <label for="wikieditor-toolbar-table-dimensions-rows"\
+ rel="wikieditor-toolbar-tool-table-dimensions-rows"></label><br />\
+ <input type="text" id="wikieditor-toolbar-table-dimensions-rows" size="4" />\
+ </div>\
+ <div class="wikieditor-toolbar-field-wrapper">\
+ <label for="wikieditor-toolbar-table-dimensions-columns"\
+ rel="wikieditor-toolbar-tool-table-dimensions-columns"></label><br />\
+ <input type="text" id="wikieditor-toolbar-table-dimensions-columns" size="4" />\
+ </div>\
+ </div>\
+ </div></fieldset>\
+ <div class="wikieditor-toolbar-table-preview-wrapper" >\
+ <span rel="wikieditor-toolbar-tool-table-example"></span>\
+ <div class="wikieditor-toolbar-table-preview-content">\
+ <table id="wikieditor-toolbar-table-preview" class="wikieditor-toolbar-table-preview wikitable">\
+ <thead>\
+ <tr class="wikieditor-toolbar-table-preview-header">\
+ <th rel="wikieditor-toolbar-tool-table-example-header"></th>\
+ <th rel="wikieditor-toolbar-tool-table-example-header"></th>\
+ <th rel="wikieditor-toolbar-tool-table-example-header"></th>\
+ </tr>\
+ </thead><tbody>\
+ <tr class="wikieditor-toolbar-table-preview-hidden" style="display: none;">\
+ <td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
+ <td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
+ <td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
+ </tr><tr>\
+ <td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
+ <td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
+ <td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
+ </tr><tr>\
+ <td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
+ <td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
+ <td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
+ </tr><tr>\
+ <td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
+ <td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
+ <td rel="wikieditor-toolbar-tool-table-example-cell-text"></td>\
+ </tr>\
+ </tbody>\
+ </table>\
+ </div>\
+ </div></div>',
+ init: function() {
+ $(this).find( '[rel]' ).each( function() {
+ $(this).text( mediaWiki.msg( $(this).attr( 'rel' ) ) );
+ });
+ // Set tabindexes on form fields
+ $.wikiEditor.modules.dialogs.fn.setTabindexes( $(this).find( 'input' ).not( '[tabindex]' ) );
+
+ $( '#wikieditor-toolbar-table-dimensions-rows' ).val( 3 );
+ $( '#wikieditor-toolbar-table-dimensions-columns' ).val( 3 );
+ $( '#wikieditor-toolbar-table-wikitable' ).click( function() {
+ $( '.wikieditor-toolbar-table-preview' ).toggleClass( 'wikitable' );
+ });
+
+ // Hack for sortable preview: dynamically adding
+ // sortable class doesn't work, so we use a clone
+ $( '#wikieditor-toolbar-table-preview' )
+ .clone()
+ .attr( 'id', 'wikieditor-toolbar-table-preview2' )
+ .addClass( 'sortable' )
+ .insertAfter( $( '#wikieditor-toolbar-table-preview' ) )
+ .hide();
+
+ mw.loader.using( 'jquery.tablesorter', function() {
+ $( '#wikieditor-toolbar-table-preview2' ).tablesorter();
+ });
+
+ $( '#wikieditor-toolbar-table-sortable' ).click( function() {
+ // Swap the currently shown one clone with the other one
+ $( '#wikieditor-toolbar-table-preview' )
+ .hide()
+ .attr( 'id', 'wikieditor-toolbar-table-preview3' );
+ $( '#wikieditor-toolbar-table-preview2' )
+ .attr( 'id', 'wikieditor-toolbar-table-preview' )
+ .show();
+ $( '#wikieditor-toolbar-table-preview3' ).attr( 'id', 'wikieditor-toolbar-table-preview2' );
+ });
+
+ $( '#wikieditor-toolbar-table-dimensions-header' ).click( function() {
+ // Instead of show/hiding, switch the HTML around
+ // We do this because the sortable tables script styles the first row,
+ // visible or not
+ var headerHTML = $( '.wikieditor-toolbar-table-preview-header' ).html();
+ var hiddenHTML = $( '.wikieditor-toolbar-table-preview-hidden' ).html();
+ $( '.wikieditor-toolbar-table-preview-header' ).html( hiddenHTML );
+ $( '.wikieditor-toolbar-table-preview-hidden' ).html( headerHTML );
+ if ( typeof jQuery.fn.tablesorter == 'function' ) {
+ $( '#wikieditor-toolbar-table-preview, #wikieditor-toolbar-table-preview2' )
+ .filter( '.sortable' )
+ .tablesorter();
+ }
+ });
+ },
+ dialog: {
+ resizable: false,
+ dialogClass: 'wikiEditor-toolbar-dialog',
+ width: 590,
+ buttons: {
+ 'wikieditor-toolbar-tool-table-insert': function() {
+ var rowsVal = $( '#wikieditor-toolbar-table-dimensions-rows' ).val();
+ var colsVal = $( '#wikieditor-toolbar-table-dimensions-columns' ).val();
+ var rows = parseInt( rowsVal, 10 );
+ var cols = parseInt( colsVal, 10 );
+ var header = $( '#wikieditor-toolbar-table-dimensions-header' ).is( ':checked' ) ? 1 : 0;
+ if ( isNaN( rows ) || isNaN( cols ) || rows != rowsVal || cols != colsVal ) {
+ alert( mediaWiki.msg( 'wikieditor-toolbar-tool-table-invalidnumber' ) );
+ return;
+ }
+ if ( rows + header == 0 || cols == 0 ) {
+ alert( mediaWiki.msg( 'wikieditor-toolbar-tool-table-zero' ) );
+ return;
+ }
+ if ( rows * cols > 1000 ) {
+ alert( mediaWiki.msg( 'wikieditor-toolbar-tool-table-toomany', 1000 ) );
+ return;
+ }
+ var headerText = mediaWiki.msg( 'wikieditor-toolbar-tool-table-example-header' );
+ var normalText = mediaWiki.msg( 'wikieditor-toolbar-tool-table-example' );
+ var table = "";
+ for ( var r = 0; r < rows + header; r++ ) {
+ table += "|-\n";
+ for ( var c = 0; c < cols; c++ ) {
+ var isHeader = ( header && r == 0 );
+ var delim = isHeader ? '!' : '|';
+ if ( c > 0 ) {
+ delim += delim;
+ }
+ table += delim + ' ' + ( isHeader ? headerText : normalText ) + ' ';
+ }
+ // Replace trailing space by newline
+ // table[table.length - 1] is read-only
+ table = table.substr( 0, table.length - 1 ) + "\n";
+ }
+ var classes = [];
+ if ( $( '#wikieditor-toolbar-table-wikitable' ).is( ':checked' ) )
+ classes.push( 'wikitable' );
+ if ( $( '#wikieditor-toolbar-table-sortable' ).is( ':checked' ) )
+ classes.push( 'sortable' );
+ var classStr = classes.length > 0 ? ' class="' + classes.join( ' ' ) + '"' : '';
+ $(this).dialog( 'close' );
+ $.wikiEditor.modules.toolbar.fn.doAction(
+ $(this).data( 'context' ),
+ {
+ type: 'replace',
+ options: {
+ pre: '{|' + classStr + "\n",
+ peri: table,
+ post: '|}',
+ ownline: true
+ }
+ },
+ $(this)
+ );
+
+ // Restore form state
+ $( '#wikieditor-toolbar-table-dimensions-rows' ).val( 3 );
+ $( '#wikieditor-toolbar-table-dimensions-columns' ).val( 3 );
+ // Simulate clicks instead of setting values, so the according
+ // actions are performed
+ if ( !$( '#wikieditor-toolbar-table-dimensions-header' ).is( ':checked' ) )
+ $( '#wikieditor-toolbar-table-dimensions-header' ).click();
+ if ( !$( '#wikieditor-toolbar-table-wikitable' ).is( ':checked' ) )
+ $( '#wikieditor-toolbar-table-wikitable' ).click();
+ if ( $( '#wikieditor-toolbar-table-sortable' ).is( ':checked' ) )
+ $( '#wikieditor-toolbar-table-sortable' ).click();
+ },
+ 'wikieditor-toolbar-tool-table-cancel': function() {
+ $(this).dialog( 'close' );
+ }
+ },
+ open: function() {
+ $( '#wikieditor-toolbar-table-dimensions-rows' ).focus();
+ if ( !( $(this).data( 'dialogkeypressset' ) ) ) {
+ $(this).data( 'dialogkeypressset', true );
+ // Execute the action associated with the first button
+ // when the user presses Enter
+ $(this).closest( '.ui-dialog' ).keypress( function( e ) {
+ if ( ( e.keyCode || e.which ) == 13 ) {
+ var button = $(this).data( 'dialogaction' ) || $(this).find( 'button:first' );
+ button.click();
+ e.preventDefault();
+ }
+ });
+
+ // Make tabbing to a button and pressing
+ // Enter do what people expect
+ $(this).closest( '.ui-dialog' ).find( 'button' ).focus( function() {
+ $(this).closest( '.ui-dialog' ).data( 'dialogaction', this );
+ });
+ }
+ }
+ }
+ },
+ 'search-and-replace': {
+ 'browsers': {
+ // Left-to-right languages
+ 'ltr': {
+ 'msie': false,
+ 'firefox': [['>=', 2]],
+ 'opera': false,
+ 'safari': [['>=', 3]],
+ 'chrome': [['>=', 3]]
+ },
+ // Right-to-left languages
+ 'rtl': {
+ 'msie': false,
+ 'firefox': [['>=', 2]],
+ 'opera': false,
+ 'safari': [['>=', 3]],
+ 'chrome': [['>=', 3]]
+ }
+ },
+ titleMsg: 'wikieditor-toolbar-tool-replace-title',
+ id: 'wikieditor-toolbar-replace-dialog',
+ html: '\
+ <div id="wikieditor-toolbar-replace-message">\
+ <div id="wikieditor-toolbar-replace-nomatch" rel="wikieditor-toolbar-tool-replace-nomatch"></div>\
+ <div id="wikieditor-toolbar-replace-success"></div>\
+ <div id="wikieditor-toolbar-replace-emptysearch" rel="wikieditor-toolbar-tool-replace-emptysearch"></div>\
+ <div id="wikieditor-toolbar-replace-invalidregex"></div>\
+ </div>\
+ <fieldset>\
+ <div class="wikieditor-toolbar-field-wrapper">\
+ <label for="wikieditor-toolbar-replace-search" rel="wikieditor-toolbar-tool-replace-search"></label>\
+ <input type="text" id="wikieditor-toolbar-replace-search" style="width: 100%;" />\
+ </div>\
+ <div class="wikieditor-toolbar-field-wrapper">\
+ <label for="wikieditor-toolbar-replace-replace" rel="wikieditor-toolbar-tool-replace-replace"></label>\
+ <input type="text" id="wikieditor-toolbar-replace-replace" style="width: 100%;" />\
+ </div>\
+ <div class="wikieditor-toolbar-field-wrapper">\
+ <input type="checkbox" id="wikieditor-toolbar-replace-case" />\
+ <label for="wikieditor-toolbar-replace-case" rel="wikieditor-toolbar-tool-replace-case"></label>\
+ </div>\
+ <div class="wikieditor-toolbar-field-wrapper">\
+ <input type="checkbox" id="wikieditor-toolbar-replace-regex" />\
+ <label for="wikieditor-toolbar-replace-regex" rel="wikieditor-toolbar-tool-replace-regex"></label>\
+ </div>\
+ </fieldset>',
+ init: function() {
+ $(this).find( '[rel]' ).each( function() {
+ $(this).text( mediaWiki.msg( $(this).attr( 'rel' ) ) );
+ });
+ // Set tabindexes on form fields
+ $.wikiEditor.modules.dialogs.fn.setTabindexes( $(this).find( 'input' ).not( '[tabindex]' ) );
+
+ // TODO: Find a cleaner way to share this function
+ $(this).data( 'replaceCallback', function( mode ) {
+ $( '#wikieditor-toolbar-replace-nomatch, #wikieditor-toolbar-replace-success, #wikieditor-toolbar-replace-emptysearch, #wikieditor-toolbar-replace-invalidregex' ).hide();
+ var searchStr = $( '#wikieditor-toolbar-replace-search' ).val();
+ if ( searchStr == '' ) {
+ $( '#wikieditor-toolbar-replace-emptysearch' ).show();
+ return;
+ }
+ var replaceStr = $( '#wikieditor-toolbar-replace-replace' ).val();
+ var flags = 'm';
+ var matchCase = $( '#wikieditor-toolbar-replace-case' ).is( ':checked' );
+ var isRegex = $( '#wikieditor-toolbar-replace-regex' ).is( ':checked' );
+ if ( !matchCase ) {
+ flags += 'i';
+ }
+ if ( mode == 'replaceAll' ) {
+ flags += 'g';
+ }
+ if ( !isRegex ) {
+ searchStr = $.escapeRE( searchStr );
+ }
+ try {
+ var regex = new RegExp( searchStr, flags );
+ } catch( e ) {
+ $( '#wikieditor-toolbar-replace-invalidregex' )
+ .text( mediaWiki.msg( 'wikieditor-toolbar-tool-replace-invalidregex',
+ e.message ) )
+ .show();
+ return;
+ }
+ var $textarea = $(this).data( 'context' ).$textarea;
+ var text = $textarea.textSelection( 'getContents' );
+ var match = false;
+ var offset, s;
+ if ( mode != 'replaceAll' ) {
+ offset = $(this).data( 'offset' );
+ s = text.substr( offset );
+ match = s.match( regex );
+ }
+ if ( !match ) {
+ // Search hit BOTTOM, continuing at TOP
+ offset = 0;
+ s = text;
+ match = s.match( regex );
+ }
+
+ if ( !match ) {
+ $( '#wikieditor-toolbar-replace-nomatch' ).show();
+ } else if ( mode == 'replaceAll' ) {
+ // Instead of using repetitive .match() calls, we use one .match() call with /g
+ // and indexOf() followed by substr() to find the offsets. This is actually
+ // faster because our indexOf+substr loop is faster than a match loop, and the
+ // /g match is so ridiculously fast that it's negligible.
+ // FIXME: Repetitively calling encapsulateSelection() is probably the best strategy
+ // in Firefox/Webkit, but in IE replacing the entire content once is better.
+ var index;
+ for ( var i = 0; i < match.length; i++ ) {
+ index = s.indexOf( match[i] );
+ if ( index == -1 ) {
+ // This shouldn't happen
+ break;
+ }
+ var matchedText = s.substr( index, match[i].length );
+ s = s.substr( index + match[i].length );
+
+ var start = index + offset;
+ var end = start + match[i].length;
+ // Make regex placeholder substitution ($1) work
+ var replace = isRegex ? matchedText.replace( regex, replaceStr ) : replaceStr;
+ var newEnd = start + replace.length;
+ $textarea
+ .textSelection( 'setSelection', { 'start': start, 'end': end } )
+ .textSelection( 'encapsulateSelection', {
+ 'peri': replace,
+ 'replace': true } )
+ .textSelection( 'setSelection', { 'start': start, 'end': newEnd } );
+ offset = newEnd;
+ }
+ $( '#wikieditor-toolbar-replace-success' )
+ .text( mediaWiki.msg( 'wikieditor-toolbar-tool-replace-success', match.length ) )
+ .show();
+ $(this).data( 'offset', 0 );
+ } else {
+ // Make regex placeholder substitution ($1) work
+ var replace = isRegex ? match[0].replace( regex, replaceStr ): replaceStr;
+ var start = match.index + offset;
+ var end = start + match[0].length;
+ var newEnd = start + replace.length;
+ var context = $( this ).data( 'context' );
+ $textarea.textSelection( 'setSelection', { 'start': start,
+ 'end': end } );
+ if ( mode == 'replace' ) {
+ $textarea
+ .textSelection( 'encapsulateSelection', {
+ 'peri': replace,
+ 'replace': true } )
+ .textSelection( 'setSelection', {
+ 'start': start,
+ 'end': newEnd } );
+ }
+ $textarea.textSelection( 'scrollToCaretPosition' );
+ $textarea.textSelection( 'setSelection', { 'start': start,
+ 'end': mode == 'replace' ? newEnd : end } );
+ $( this ).data( 'offset', mode == 'replace' ? newEnd : end );
+ var textbox = typeof context.$iframe != 'undefined' ?
+ context.$iframe[0].contentWindow : $textarea[0];
+ textbox.focus();
+ }
+ });
+ },
+ dialog: {
+ width: 500,
+ dialogClass: 'wikiEditor-toolbar-dialog',
+ buttons: {
+ 'wikieditor-toolbar-tool-replace-button-findnext': function( e ) {
+ $(this).closest( '.ui-dialog' ).data( 'dialogaction', e.target );
+ $(this).data( 'replaceCallback' ).call( this, 'find' );
+ },
+ 'wikieditor-toolbar-tool-replace-button-replacenext': function( e ) {
+ $(this).closest( '.ui-dialog' ).data( 'dialogaction', e.target );
+ $(this).data( 'replaceCallback' ).call( this, 'replace' );
+ },
+ 'wikieditor-toolbar-tool-replace-button-replaceall': function( e ) {
+ $(this).closest( '.ui-dialog' ).data( 'dialogaction', e.target );
+ $(this).data( 'replaceCallback' ).call( this, 'replaceAll' );
+ },
+ 'wikieditor-toolbar-tool-replace-close': function() {
+ $(this).dialog( 'close' );
+ }
+ },
+ open: function() {
+ $(this).data( 'offset', 0 );
+ $( '#wikieditor-toolbar-replace-search' ).focus();
+ $( '#wikieditor-toolbar-replace-nomatch, #wikieditor-toolbar-replace-success, #wikieditor-toolbar-replace-emptysearch, #wikieditor-toolbar-replace-invalidregex' ).hide();
+ if ( !( $(this).data( 'onetimeonlystuff' ) ) ) {
+ $(this).data( 'onetimeonlystuff', true );
+ // Execute the action associated with the first button
+ // when the user presses Enter
+ $(this).closest( '.ui-dialog' ).keypress( function( e ) {
+ if ( ( e.keyCode || e.which ) == 13 ) {
+ var button = $(this).data( 'dialogaction' ) || $(this).find( 'button:first' );
+ button.click();
+ e.preventDefault();
+ }
+ });
+ // Make tabbing to a button and pressing
+ // Enter do what people expect
+ $(this).closest( '.ui-dialog' ).find( 'button' ).focus( function() {
+ $(this).closest( '.ui-dialog' ).data( 'dialogaction', this );
+ });
+ }
+ var dialog = $(this).closest( '.ui-dialog' );
+ var that = this;
+ var context = $(this).data( 'context' );
+ var textbox = typeof context.$iframe != 'undefined' ?
+ context.$iframe[0].contentWindow.document : context.$textarea;
+
+ $( textbox )
+ .bind( 'keypress.srdialog', function( e ) {
+ if ( ( e.keyCode || e.which ) == 13 ) {
+ // Enter
+ var button = dialog.data( 'dialogaction' ) || dialog.find( 'button:first' );
+ button.click();
+ e.preventDefault();
+ } else if ( ( e.keyCode || e.which ) == 27 ) {
+ // Escape
+ $(that).dialog( 'close' );
+ }
+ });
+ },
+ close: function() {
+ var context = $(this).data( 'context' );
+ var textbox = typeof context.$iframe != 'undefined' ?
+ context.$iframe[0].contentWindow.document : context.$textarea;
+ $( textbox ).unbind( 'keypress.srdialog' );
+ $(this).closest( '.ui-dialog' ).data( 'dialogaction', false );
+ }
+ }
+ }
+ } };
+}
+
+}; } ) ( jQuery );
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.css b/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.css
new file mode 100644
index 00000000..d1b68ab3
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.css
@@ -0,0 +1,56 @@
+/*
+ * CSS for WikiEditor Dialogs jQuery plugin
+ */
+
+.wikiEditor-toolbar-dialog table {
+ margin-top: 0.75em;
+}
+.wikiEditor-toolbar-dialog table td {
+ padding: 0.5em;
+ height: 3em;
+ overflow: visible;
+}
+/* Put suggestions (default z-index 99) on top of dialogs (z-index 1002) */
+div.suggestions {
+ z-index: 1099;
+}
+.wikiEditor-toolbar-dialog table td {
+ padding: 0 !important;
+}
+.wikiEditor-toolbar-dialog .ui-dialog-content fieldset {
+ border: none !important;
+ margin: 0 !important;
+ padding: 0 !important;
+}
+.wikiEditor-toolbar-dialog .ui-widget-header {
+ border-bottom:1px solid #6bc8f3 !important;
+}
+.wikiEditor-toolbar-dialog .ui-dialog-content input[type=text] {
+ -moz-box-sizing: border-box;
+ -ms-box-sizing: border-box;
+ -webkit-box-sizing: border-box;
+ -khtml-box-sizing: border-box;
+}
+.wikiEditor-toolbar-dialog .ui-dialog-content input[type="radio"],
+.wikiEditor-toolbar-dialog .ui-dialog-content input[type="checkbox"] {
+ margin-left: 0;
+}
+.wikiEditor-toolbar-dialog .ui-dialog-titlebar-close {
+ padding: 0;
+}
+body.ltr .wikiEditor-toolbar-dialog .ui-dialog-titlebar-close {
+ right: 0.9em;
+}
+.wikieditor-toolbar-field-wrapper {
+ padding: 0 0 25px 0;
+}
+.wikieditor-toolbar-floated-field-wrapper {
+ float: left;
+ margin-right: 2em;
+}
+.wikieditor-toolbar-dialog-hint {
+ color: #999999;
+}
+.wikiEditor-toolbar-dialog {
+ border: none;
+} \ No newline at end of file
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.js b/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.js
new file mode 100644
index 00000000..9b291466
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.dialogs.js
@@ -0,0 +1,217 @@
+/**
+ * Dialog Module for wikiEditor
+ */
+( function( $ ) { $.wikiEditor.modules.dialogs = {
+
+/**
+ * Compatability map
+ */
+'browsers': {
+ // Left-to-right languages
+ 'ltr': {
+ 'msie': [['>=', 7]],
+ // jQuery UI appears to be broken in FF 2.0 - 2.0.0.4
+ 'firefox': [
+ ['>=', 2], ['!=', '2.0'], ['!=', '2.0.0.1'], ['!=', '2.0.0.2'], ['!=', '2.0.0.3'], ['!=', '2.0.0.4']
+ ],
+ 'opera': [['>=', 9.6]],
+ 'safari': [['>=', 3]],
+ 'chrome': [['>=', 3]]
+ },
+ // Right-to-left languages
+ 'rtl': {
+ 'msie': [['>=', 7]],
+ // jQuery UI appears to be broken in FF 2.0 - 2.0.0.4
+ 'firefox': [
+ ['>=', 2], ['!=', '2.0'], ['!=', '2.0.0.1'], ['!=', '2.0.0.2'], ['!=', '2.0.0.3'], ['!=', '2.0.0.4']
+ ],
+ 'opera': [['>=', 9.6]],
+ 'safari': [['>=', 3]],
+ 'chrome': [['>=', 3]]
+ }
+},
+/**
+ * API accessible functions
+ */
+api: {
+ addDialog: function( context, data ) {
+ $.wikiEditor.modules.dialogs.fn.create( context, data )
+ },
+ openDialog: function( context, module ) {
+ if ( module in $.wikiEditor.modules.dialogs.modules ) {
+ var mod = $.wikiEditor.modules.dialogs.modules[module];
+ var $dialog = $( '#' + mod.id );
+ if ( $dialog.length == 0 ) {
+ $.wikiEditor.modules.dialogs.fn.reallyCreate( context, mod, module );
+ $dialog = $( '#' + mod.id );
+ }
+
+ // Workaround for bug in jQuery UI: close button in top right retains focus
+ $dialog.closest( '.ui-dialog' )
+ .find( '.ui-dialog-titlebar-close' )
+ .removeClass( 'ui-state-focus' );
+
+ $dialog.dialog( 'open' );
+ }
+ },
+ closeDialog: function( context, module ) {
+ if ( module in $.wikiEditor.modules.dialogs.modules ) {
+ $( '#' + $.wikiEditor.modules.dialogs.modules[module].id ).dialog( 'close' );
+ }
+ }
+},
+/**
+ * Internally used functions
+ */
+fn: {
+ /**
+ * Creates a dialog module within a wikiEditor
+ *
+ * @param {Object} context Context object of editor to create module in
+ * @param {Object} config Configuration object to create module from
+ */
+ create: function( context, config ) {
+ // Defer building of modules, but do check whether they need the iframe rightaway
+ for ( var mod in config ) {
+ var module = config[mod];
+ // Only create the dialog if it's supported, isn't filtered and doesn't exist yet
+ var filtered = false;
+ if ( typeof module.filters != 'undefined' ) {
+ for ( var i = 0; i < module.filters.length; i++ ) {
+ if ( $( module.filters[i] ).length == 0 ) {
+ filtered = true;
+ break;
+ }
+ }
+ }
+ // If the dialog already exists, but for another textarea, simply remove it
+ var $existingDialog = $( '#' + module.id );
+ if ( $existingDialog.length > 0 && $existingDialog.data( 'context' ).$textarea != context.$textarea ) {
+ $existingDialog.remove();
+ }
+ // Re-select from the DOM, we might have removed the dialog just now
+ $existingDialog = $( '#' + module.id );
+ if ( !filtered && $.wikiEditor.isSupported( module ) && $existingDialog.size() === 0 ) {
+ $.wikiEditor.modules.dialogs.modules[mod] = module;
+ // If this dialog requires the iframe, set it up
+ if ( typeof context.$iframe == 'undefined' && $.wikiEditor.isRequired( module, 'iframe' ) ) {
+ context.fn.setupIframe();
+ }
+ context.$textarea.trigger( 'wikiEditor-dialogs-setup-' + mod );
+ // If this dialog requires immediate creation, create it now
+ if ( typeof module.immediateCreate !== 'undefined' && module.immediateCreate ) {
+ $.wikiEditor.modules.dialogs.fn.reallyCreate( context, module, mod );
+ }
+ }
+ }
+ },
+ /**
+ * Build the actual dialog. This done on-demand rather than in create()
+ * @param {Object} context Context object of editor dialog belongs to
+ * @param {Object} module Dialog module object
+ * @param {String} name Dialog name (key in $.wikiEditor.modules.dialogs.modules)
+ */
+ reallyCreate: function( context, module, name ) {
+ var configuration = module.dialog;
+ // Add some stuff to configuration
+ configuration.bgiframe = true;
+ configuration.autoOpen = false;
+ configuration.modal = true;
+ configuration.title = $.wikiEditor.autoMsg( module, 'title' );
+ // Transform messages in keys
+ // Stupid JS won't let us do stuff like
+ // foo = { mediaWiki.msg( 'bar' ): baz }
+ configuration.newButtons = {};
+ for ( var msg in configuration.buttons )
+ configuration.newButtons[mediaWiki.msg( msg )] = configuration.buttons[msg];
+ configuration.buttons = configuration.newButtons;
+ // Create the dialog <div>
+ var dialogDiv = $( '<div />' )
+ .attr( 'id', module.id )
+ .html( module.html )
+ .data( 'context', context )
+ .appendTo( $( 'body' ) )
+ .each( module.init )
+ .dialog( configuration );
+ // Set tabindexes on buttons added by .dialog()
+ $.wikiEditor.modules.dialogs.fn.setTabindexes( dialogDiv.closest( '.ui-dialog' )
+ .find( 'button' ).not( '[tabindex]' ) );
+ if ( !( 'resizeme' in module ) || module.resizeme ) {
+ dialogDiv
+ .bind( 'dialogopen', $.wikiEditor.modules.dialogs.fn.resize )
+ .find( '.ui-tabs' ).bind( 'tabsshow', function() {
+ $(this).closest( '.ui-dialog-content' ).each(
+ $.wikiEditor.modules.dialogs.fn.resize );
+ });
+ }
+ dialogDiv.bind( 'dialogclose', function() {
+ context.fn.restoreSelection();
+ } );
+
+ // Let the outside world know we set up this dialog
+ context.$textarea.trigger( 'wikiEditor-dialogs-loaded-' + name );
+ },
+ /**
+ * Resize a dialog so its contents fit
+ *
+ * Usage: dialog.each( resize ); or dialog.bind( 'blah', resize );
+ * NOTE: This function assumes $.ui.dialog has already been loaded
+ */
+ resize: function() {
+ var wrapper = $(this).closest( '.ui-dialog' );
+ var oldWidth = wrapper.width();
+ // Make sure elements don't wrapped so we get an accurate idea of whether they really fit. Also temporarily show
+ // hidden elements. Work around jQuery bug where <div style="display:inline;" /> inside a dialog is both
+ // :visible and :hidden
+ var oldHidden = $(this).find( '*' ).not( ':visible' );
+ // Save the style attributes of the hidden elements to restore them later. Calling hide() after show() messes up
+ // for elements hidden with a class
+ oldHidden.each( function() {
+ $(this).data( 'oldstyle', $(this).attr( 'style' ) );
+ });
+ oldHidden.show();
+ var oldWS = $(this).css( 'white-space' );
+ $(this).css( 'white-space', 'nowrap' );
+ if ( wrapper.width() <= $(this).get(0).scrollWidth ) {
+ var thisWidth = $(this).data( 'thisWidth' ) ? $(this).data( 'thisWidth' ) : 0;
+ thisWidth = Math.max( $(this).get(0).width, thisWidth );
+ $(this).width( thisWidth );
+ $(this).data( 'thisWidth', thisWidth );
+ var wrapperWidth = $(this).data( 'wrapperWidth' ) ? $(this).data( 'wrapperWidth' ) : 0;
+ wrapperWidth = Math.max( wrapper.get(0).scrollWidth, wrapperWidth );
+ wrapper.width( wrapperWidth );
+ $(this).data( 'wrapperWidth', wrapperWidth );
+ $(this).dialog( { 'width': wrapper.width() } );
+ wrapper.css( 'left', parseInt( wrapper.css( 'left' ) ) - ( wrapper.width() - oldWidth ) / 2 );
+ }
+ $(this).css( 'white-space', oldWS );
+ oldHidden.each( function() {
+ $(this).attr( 'style', $(this).data( 'oldstyle' ) );
+ });
+ },
+ /**
+ * Set the right tabindexes on elements in a dialog
+ * @param $elements Elements to set tabindexes on. If they already have tabindexes, this function can behave a bit weird
+ */
+ setTabindexes: function( $elements ) {
+ // Get the highest tab index
+ var tabIndex = $( document ).lastTabIndex() + 1;
+ $elements.each( function() {
+ $(this).attr( 'tabindex', tabIndex++ );
+ } );
+ }
+},
+// This stuff is just hanging here, perhaps we could come up with a better home for this stuff
+modules: {},
+quickDialog: function( body, settings ) {
+ $( '<div />' )
+ .text( body )
+ .appendTo( $( 'body' ) )
+ .dialog( $.extend( {
+ bgiframe: true,
+ modal: true
+ }, settings ) )
+ .dialog( 'open' );
+}
+
+}; } ) ( jQuery );
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.highlight.js b/extensions/WikiEditor/modules/jquery.wikiEditor.highlight.js
new file mode 100644
index 00000000..c804b3aa
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.highlight.js
@@ -0,0 +1,357 @@
+/* Highlight module for wikiEditor */
+
+( function( $ ) { $.wikiEditor.modules.highlight = {
+
+/**
+ * Core Requirements
+ */
+'req': [ 'iframe' ],
+/**
+ * Configuration
+ */
+'cfg': {
+ 'styleVersion': 3
+},
+/**
+ * Internally used event handlers
+ */
+'evt': {
+ 'delayedChange': function( context, event ) {
+ if ( event.data.scope == 'realchange' ) {
+ $.wikiEditor.modules.highlight.fn.scan( context );
+ $.wikiEditor.modules.highlight.fn.mark( context, event.data.scope );
+ }
+ },
+ 'ready': function( context, event ) {
+ $.wikiEditor.modules.highlight.fn.scan( context );
+ $.wikiEditor.modules.highlight.fn.mark( context, 'ready' );
+ }
+},
+/**
+ * Internally used functions
+ */
+'fn': {
+ /**
+ * Creates a highlight module within a wikiEditor
+ *
+ * @param config Configuration object to create module from
+ */
+ 'create': function( context, config ) {
+ context.modules.highlight.markersStr = '';
+ },
+ /**
+ * Scans text division for tokens
+ *
+ * @param division
+ */
+ 'scan': function( context, division ) {
+ // Remove all existing tokens
+ var tokenArray = context.modules.highlight.tokenArray = [];
+ // Scan text for new tokens
+ var text = context.fn.getContents();
+ // Perform a scan for each module which provides any expressions to scan for
+ // FIXME: This traverses the entire string once for every regex. Investigate
+ // whether |-concatenating regexes then traversing once is faster.
+ for ( var module in context.modules ) {
+ if ( module in $.wikiEditor.modules && 'exp' in $.wikiEditor.modules[module] ) {
+ for ( var exp in $.wikiEditor.modules[module].exp ) {
+ // Prepare configuration
+ var regex = $.wikiEditor.modules[module].exp[exp].regex;
+ var label = $.wikiEditor.modules[module].exp[exp].label;
+ var markAfter = $.wikiEditor.modules[module].exp[exp].markAfter || false;
+ // Search for tokens
+ var offset = 0, left, right, match;
+ while ( ( match = text.substr( offset ).match( regex ) ) != null ) {
+ right = ( left = offset + match.index ) + match[0].length;
+ tokenArray[tokenArray.length] = {
+ 'offset': markAfter ? right : left,
+ 'label': label,
+ 'tokenStart': left,
+ 'match': match
+ };
+ // Move to the right of this match
+ offset = right;
+ }
+ }
+ }
+ }
+ // Sort by start
+ tokenArray.sort( function( a, b ) { return a.tokenStart - b.tokenStart; } );
+ // Let the world know, a scan just happened!
+ context.fn.trigger( 'scan' );
+ },
+ /**
+ * Marks up text with HTML
+ *
+ * @param division
+ * @param tokens
+ */
+ // FIXME: What do division and tokens do?
+ // TODO: Document the scan() and mark() APIs somewhere
+ 'mark': function( context, division, tokens ) {
+ // Reset markers
+ var markers = [];
+
+ // Recycle markers that will be skipped in this run
+ if ( context.modules.highlight.markers && division != '' ) {
+ for ( var i = 0; i < context.modules.highlight.markers.length; i++ ) {
+ if ( context.modules.highlight.markers[i].skipDivision == division ) {
+ markers.push( context.modules.highlight.markers[i] );
+ }
+ }
+ }
+ context.modules.highlight.markers = markers;
+
+ // Get all markers
+ context.fn.trigger( 'mark' );
+ markers.sort( function( a, b ) { return a.start - b.start || a.end - b.end; } );
+
+ // Serialize the markers array to a string and compare it with the one stored in the previous run - if they're
+ // equal, there's no markers to change
+ var markersStr = '';
+ for ( var i = 0; i < markers.length; i++ ) {
+ markersStr += markers[i].start + ',' + markers[i].end + ',' + markers[i].type + ',';
+ }
+ if ( context.modules.highlight.markersStr == markersStr ) {
+ // No change, bail out
+ return;
+ }
+ context.modules.highlight.markersStr = markersStr;
+
+ // Traverse the iframe DOM, inserting markers where they're needed - store visited markers here so we know which
+ // markers should be removed
+ var visited = [], v = 0;
+ for ( var i = 0; i < markers.length; i++ ) {
+ if ( typeof markers[i].skipDivision !== 'undefined' && ( division == markers[i].skipDivision ) ) {
+ continue;
+ }
+
+ // We want to isolate each marker, so we may need to split textNodes if a marker starts or ends halfway one.
+ var start = markers[i].start;
+ var s = context.fn.getOffset( start );
+ if ( !s ) {
+ // This shouldn't happen
+ continue;
+ }
+ var startNode = s.node;
+
+ // Don't wrap leading BRs, produces undesirable results
+ // FIXME: It's also possible that the offset is a bit high because getOffset() has incremented .length to
+ // fake the newline caused by startNode being in a P. In this case, prevent the textnode splitting below
+ // from making startNode an empty textnode, IE barfs on that
+ while ( startNode.nodeName == 'BR' || s.offset == startNode.nodeValue.length ) {
+ start++;
+ s = context.fn.getOffset( start );
+ startNode = s.node;
+ }
+
+ // The next marker starts somewhere in this textNode or at this BR
+ if ( s.offset > 0 && s.node.nodeName == '#text' ) {
+ // Split off the prefix - this leaves the prefix in the current node and puts the rest in a new node
+ // which is our start node
+ var newStartNode = startNode.splitText( s.offset < s.node.nodeValue.length ?
+ s.offset : s.node.nodeValue.length - 1
+ );
+ var oldStartNode = startNode;
+ startNode = newStartNode;
+ // Update offset objects. We don't need purgeOffsets(), simply manipulating the existing offset objects
+ // will suffice
+ // FIXME: This manipulates context.offsets directly, which is ugly, but the performance improvement vs.
+ // purgeOffsets() is worth it - this code doesn't set lastTextNode to newStartNode for offset objects
+ // with lastTextNode == oldStartNode, but that doesn't really matter
+ var subtracted = s.offset;
+ var oldLength = s.length;
+
+ var j, o;
+ // Update offset objects referring to oldStartNode
+ for ( j = start - subtracted; j < start; j++ ) {
+ if ( j in context.offsets ) {
+ o = context.offsets[j];
+ o.node = oldStartNode;
+ o.length = subtracted;
+ }
+ }
+ // Update offset objects referring to newStartNode
+ for ( j = start; j < start - subtracted + oldLength; j++ ) {
+ if ( j in context.offsets ) {
+ o = context.offsets[j];
+ o.node = newStartNode;
+ o.offset -= subtracted;
+ o.length -= subtracted;
+ o.lastTextNode = oldStartNode;
+ }
+ }
+ }
+ var end = markers[i].end;
+ // To avoid ending up at the first char of the next node, we grab the offset for end - 1 and add one to the
+ // offset
+ var e = context.fn.getOffset( end - 1 );
+ if ( !e ) {
+ // This shouldn't happen
+ continue;
+ }
+ var endNode = e.node;
+ if ( e.offset + 1 < e.length - 1 && endNode.nodeName == '#text' ) {
+ // Split off the suffix. This puts the suffix in a new node and leaves the rest in endNode
+ var oldEndNode = endNode;
+ var newEndNode = endNode.splitText( e.offset + 1 );
+ // Update offset objects
+ var subtracted = e.offset + 1;
+ var oldLength = e.length;
+ var j, o;
+ // Update offset objects referring to oldEndNode
+ for ( j = end - subtracted; j < end; j++ ) {
+ if ( j in context.offsets ) {
+ o = context.offsets[j];
+ o.node = oldEndNode;
+ o.length = subtracted;
+ }
+ }
+ // We have to insert this one, as it might not exist: we didn't call getOffset( end )
+ context.offsets[end] = {
+ 'node': newEndNode,
+ 'offset': 0,
+ 'length': oldLength - subtracted,
+ 'lastTextNode': oldEndNode
+ };
+ // Update offset objects referring to newEndNode
+ for ( j = end + 1; j < end - subtracted + oldLength; j++ ) {
+ if ( j in context.offsets ) {
+ o = context.offsets[j];
+ o.node = newEndNode;
+ o.offset -= subtracted;
+ o.length -= subtracted;
+ o.lastTextNode = oldEndNode;
+ }
+ }
+ }
+ // Don't wrap trailing BRs, doing that causes weird issues
+ if ( endNode.nodeName == 'BR' ) {
+ endNode = e.lastTextNode;
+ }
+ // If startNode and endNode have different parents, we need to pull endNode and all textnodes in between
+ // into startNode's parent and replace </p><p> with <br>
+ if ( startNode.parentNode != endNode.parentNode ) {
+ var startP = $( startNode ).closest( 'p' ).get( 0 );
+ var t = new context.fn.rawTraverser( startNode, startP, context.$content.get( 0 ), false );
+ var afterStart = startNode.nextSibling;
+ var lastP = startP;
+ var nextT = t.next();
+ while ( nextT && t.node != endNode ) {
+ t = nextT;
+ nextT = t.next();
+ // If t.node has a different parent, merge t.node.parentNode with startNode.parentNode
+ if ( t.node.parentNode != startNode.parentNode ) {
+ var oldParent = t.node.parentNode;
+ if ( afterStart ) {
+ if ( lastP != t.inP ) {
+ // We're entering a new <p>, insert a <br>
+ startNode.parentNode.insertBefore(
+ startNode.ownerDocument.createElement( 'br' ),
+ afterStart
+ );
+ }
+ // A <p> with just a <br> in it is an empty line, so let's not bother with unwrapping it
+ if ( !( oldParent.childNodes.length == 1 && oldParent.firstChild.nodeName == 'BR' ) ) {
+ // Move all children of oldParent into startNode's parent
+ while ( oldParent.firstChild ) {
+ startNode.parentNode.insertBefore( oldParent.firstChild, afterStart );
+ }
+ }
+ } else {
+ if ( lastP != t.inP ) {
+ // We're entering a new <p>, insert a <br>
+ startNode.parentNode.appendChild(
+ startNode.ownerDocument.createElement( 'br' )
+ );
+ }
+ // A <p> with just a <br> in it is an empty line, so let's not bother with unwrapping it
+ if ( !( oldParent.childNodes.length == 1 && oldParent.firstChild.nodeName == 'BR' ) ) {
+ // Move all children of oldParent into startNode's parent
+ while ( oldParent.firstChild ) {
+ startNode.parentNode.appendChild( oldParent.firstChild );
+ }
+ }
+ }
+ // Remove oldParent, which is now empty
+ oldParent.parentNode.removeChild( oldParent );
+ }
+ lastP = t.inP;
+ }
+ // Moving nodes around like this invalidates offset objects
+ // TODO: Update offset objects ourselves for performance. Requires rewriting this code block to be
+ // offset-based rather than traverser-based
+ }
+ // Now wrap everything between startNode and endNode (may be equal).
+ var ca1 = startNode, ca2 = endNode;
+ if ( ca1 && ca2 && ca1.parentNode ) {
+ var anchor = markers[i].getAnchor( ca1, ca2 );
+ if ( !anchor ) {
+ var commonAncestor = ca1.parentNode;
+ if ( markers[i].anchor == 'wrap') {
+ // We have to store things like .parentNode and .nextSibling because appendChild() changes these
+ var newNode = ca1.ownerDocument.createElement( 'span' );
+ var nextNode = ca2.nextSibling;
+ // Append all nodes between ca1 and ca2 (inclusive) to newNode
+ var n = ca1;
+ while ( n != nextNode ) {
+ var ns = n.nextSibling;
+ newNode.appendChild( n );
+ n = ns;
+ }
+ // Insert newNode in the right place
+ if ( nextNode ) {
+ commonAncestor.insertBefore( newNode, nextNode );
+ } else {
+ commonAncestor.appendChild( newNode );
+ }
+ anchor = newNode;
+ } else if ( markers[i].anchor == 'tag' ) {
+ anchor = commonAncestor;
+ }
+ $( anchor ).data( 'marker', markers[i] ).addClass( 'wikiEditor-highlight' );
+ // Allow the module adding this marker to manipulate it
+ markers[i].afterWrap( anchor, markers[i] );
+
+ } else {
+ // Update the marker object
+ $( anchor ).data( 'marker', markers[i] );
+ if ( typeof markers[i].onSkip == 'function' ) {
+ markers[i].onSkip( anchor );
+ }
+ }
+ visited[v++] = anchor;
+ }
+ }
+ // Remove markers that were previously inserted but weren't passed to this function - visited[] contains the
+ // visited elements in order and find() and each() preserve order
+ var j = 0;
+ context.$content.find( '.wikiEditor-highlight' ).each( function() {
+ if ( visited[j] == this ) {
+ // This marker is legit, leave it in
+ j++;
+ return true;
+ }
+ // Remove this marker
+ var marker = $(this).data( 'marker' );
+ if ( marker && typeof marker.skipDivision != 'undefined' && ( division == marker.skipDivision ) ) {
+ // Don't remove these either
+ return true;
+ }
+ if ( marker && typeof marker.beforeUnwrap == 'function' )
+ marker.beforeUnwrap( this );
+ if ( ( marker && marker.anchor == 'tag' ) || $(this).is( 'p' ) ) {
+ // Remove all classes
+ $(this).removeAttr( 'class' );
+ } else {
+ // Assume anchor == 'wrap'
+ $(this).replaceWith( this.childNodes );
+ }
+ context.fn.purgeOffsets();
+ });
+
+ }
+}
+
+}; })( jQuery );
+
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.html b/extensions/WikiEditor/modules/jquery.wikiEditor.html
new file mode 100644
index 00000000..f11521a3
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.html
@@ -0,0 +1,135 @@
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
+<html>
+<head>
+ <title>WikiEditor</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
+ <!--[if gte IE 8]>
+ <style>
+ /* IE8 ONLY - This is how we are fixing the double-height of BR tags when they are alone in a P tag */
+ p > br {
+ display: none;
+ }
+ p > br + br {
+ display: block;
+ }
+ </style>
+ <![endif]-->
+ <style>
+ body {
+ margin: 0;
+ padding: 0;
+ width: 100%;
+ height: 100%;
+ font-family: monospace;
+ font-size: 9.5pt;
+ line-height: 1.5em;
+ overflow-x: auto; /* Use horizontal scroller if needed; for Firefox 2, not needed in Firefox 3 */
+ white-space: pre-wrap; /* css-3 */
+ white-space: -moz-pre-wrap !important; /* Mozilla, since 1999 */
+ white-space: -pre-wrap; /* Opera 4-6 */
+ white-space: -o-pre-wrap; /* Opera 7 */
+ word-wrap: break-word; /* Internet Explorer 5.5+ */
+ }
+ body.pasting {
+ white-space: normal;
+ }
+ p {
+ margin: 0;
+ padding: 0;
+ }
+ /* General WikiEditor stuff */
+ .wikiEditor-nodisplay {
+ display: none !important;
+ }
+ .wikiEditor-tab {
+ padding-left: 4em;
+ }
+ /* WikiEditor Templates */
+ .wikiEditor-templates .wikiEditor-template {
+ color: silver;
+ }
+ /* WikiEditor TemplateEditor */
+ .wikiEditor-templateEditor .wikiEditor-template-text-shrunken{
+ height: 1px !important;
+ width: 1px !important;
+ overflow: hidden;
+ float: right;
+ }
+ .wikiEditor-templateEditor .wikiEditor-template-text-visible{
+ padding: 0.5em 4px;
+ padding-top: 1.25em;
+ margin-top: -0.95em;
+ background: #F3F3F3 url(images/templateEditor/text-base.png) repeat-x scroll center top;
+ display: block;
+ width: 100%;
+ border-bottom: solid 1px #cccccc;
+ }
+ .wikiEditor-templateEditor .wikiEditor-template {
+ display: inline-block;
+ font-size: 12px;
+ }
+ .wikiEditor-templateEditor .wikiEditor-template-name {
+ cursor: pointer;
+ vertical-align: -2px;
+ display: inline-block;
+ height: 16px;
+ margin-bottom: -1px;
+ margin-right: 2px;
+ overflow: hidden;
+ background: url(images/templateEditor/name-base.png) 0 0 repeat-x #e8e8e8;
+ color: #000000;
+ font-family: monospace;
+ text-decoration: none;
+ padding-left: 0.33em;
+ line-height: 16px;
+ }
+ .wikiEditor-templateEditor .wikiEditor-template-expand {
+ cursor: pointer;
+ vertical-align: -2px;
+ display: inline-block;
+ margin-left: 2px;
+ height: 16px;
+ margin-bottom: -1px;
+ line-height: 16px;
+ overflow: hidden;
+ width: 13px;
+ background-position: 50%;
+ }
+ .wikiEditor-templateEditor .wikiEditor-template-dialog {
+ cursor: pointer;
+ vertical-align: -18%;
+ display: inline-block;
+ height: 16px;
+ overflow: hidden;
+ width: 22px;
+ background-position: 50%;
+ }
+ .wikiEditor-templateEditor .wikiEditor-template-name:hover {
+ text-decoration: underline;
+ }
+ .wikiEditor-templateEditor .wikiEditor-template-expanded .wikiEditor-template-expand {
+ background-image: url(images/templateEditor/collapse.png);
+ }
+ .wikiEditor-templateEditor .wikiEditor-template-expanded .wikiEditor-template-dialog {
+ background-image: url(images/templateEditor/dialog-expanded.png);
+ }
+ .wikiEditor-templateEditor .wikiEditor-template-collapsed .wikiEditor-template-expand {
+ background-image: url(images/templateEditor/expand.png);
+ }
+ .wikiEditor-templateEditor .wikiEditor-template-collapsed .wikiEditor-template-dialog {
+ background-image: url(images/templateEditor/dialog-collapsed.png);
+ }
+ .wikiEditor-templateEditor .wikiEditor-template-expanded {
+ display: block;
+ }
+ .wikiEditor-templateEditor .wikiEditor-template .wikiEditor-template-text {
+
+ }
+ .wikiEditor-templateEditor .wikiEditor-template-end, .wikiEditor-template-start {
+ color: blue;
+ cursor: pointer;
+ }
+ </style>
+</head>
+<body></body>
+</html>
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.iframe.js b/extensions/WikiEditor/modules/jquery.wikiEditor.iframe.js
new file mode 100644
index 00000000..5a0cc153
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.iframe.js
@@ -0,0 +1,1387 @@
+/* IFrame extension for wikiEditor */
+
+( function( $ ) { $.wikiEditor.extensions.iframe = function( context ) {
+
+/*
+ * Event Handlers
+ *
+ * These act as filters returning false if the event should be ignored or returning true if it should be passed
+ * on to all modules. This is also where we can attach some extra information to the events.
+ */
+context.evt = $.extend( context.evt, {
+ /**
+ * Filters change events, which occur when the user interacts with the contents of the iframe. The goal of this
+ * function is to both classify the scope of changes as 'division' or 'character' and to prevent further
+ * processing of events which did not actually change the content of the iframe.
+ */
+ 'keydown': function( event ) {
+ switch ( event.which ) {
+ case 90: // z
+ case 89: // y
+ if ( event.which == 89 && !$.browser.msie ) {
+ // only handle y events for IE
+ return true;
+ } else if ( ( event.ctrlKey || event.metaKey ) && context.history.length ) {
+ // HistoryPosition is a negative number between -1 and -context.history.length, in other words
+ // it's the number of steps backwards from the latest state.
+ var newPosition;
+ if ( event.shiftKey || event.which == 89 ) {
+ // Redo
+ newPosition = context.historyPosition + 1;
+ } else {
+ // Undo
+ newPosition = context.historyPosition - 1;
+ }
+ // Only act if we are switching to a valid state
+ if ( newPosition >= ( context.history.length * -1 ) && newPosition < 0 ) {
+ // Make sure we run the history storing code before we make this change
+ context.fn.updateHistory( context.oldDelayedHTML != context.$content.html() );
+ context.oldDelayedHistoryPosition = context.historyPosition;
+ context.historyPosition = newPosition;
+ // Change state
+ // FIXME: Destroys event handlers, will be a problem with template folding
+ context.$content.html(
+ context.history[context.history.length + context.historyPosition].html
+ );
+ context.fn.purgeOffsets();
+ if( context.history[context.history.length + context.historyPosition].sel ) {
+ context.fn.setSelection( {
+ start: context.history[context.history.length + context.historyPosition].sel[0],
+ end: context.history[context.history.length + context.historyPosition].sel[1]
+ } );
+ }
+ }
+ // Prevent the browser from jumping in and doing its stuff
+ return false;
+ }
+ break;
+ // Intercept all tab events to provide consisten behavior across browsers
+ // Webkit browsers insert tab characters by default into the iframe rather than changing input focus
+ case 9: //tab
+ // if any modifier keys are pressed, allow the browser to do it's thing
+ if ( event.ctrlKey || event.altKey || event.shiftKey ) {
+ return true;
+ } else {
+ var $tabindexList = $( '[tabindex]:visible' ).sort( function( a, b ) {
+ return a.tabIndex - b.tabIndex;
+ } );
+ for( var i=0; i < $tabindexList.length; i++ ) {
+ if( $tabindexList.eq( i ).attr( 'id' ) == context.$iframe.attr( 'id' ) ) {
+ $tabindexList.get( i + 1 ).focus();
+ break;
+ }
+ }
+ return false;
+ }
+ break;
+ case 86: //v
+ if ( event.ctrlKey && $.browser.msie && 'paste' in context.evt ) {
+ //paste, intercepted for IE
+ context.evt.paste( event );
+ }
+ break;
+ }
+ return true;
+ },
+ 'change': function( event ) {
+ event.data.scope = 'division';
+ var newHTML = context.$content.html();
+ if ( context.oldHTML != newHTML ) {
+ context.fn.purgeOffsets();
+ context.oldHTML = newHTML;
+ event.data.scope = 'realchange';
+ }
+ // Never let the body be totally empty
+ if ( context.$content.children().length == 0 ) {
+ context.$content.append( '<p></p>' );
+ }
+ return true;
+ },
+ 'delayedChange': function( event ) {
+ event.data.scope = 'division';
+ var newHTML = context.$content.html();
+ if ( context.oldDelayedHTML != newHTML ) {
+ context.oldDelayedHTML = newHTML;
+ event.data.scope = 'realchange';
+ // Surround by <p> if it does not already have it
+ var cursorPos = context.fn.getCaretPosition();
+ var t = context.fn.getOffset( cursorPos[0] );
+ if ( ! $.browser.msie && t && t.node.nodeName == '#text' && t.node.parentNode.nodeName.toLowerCase() == 'body' ) {
+ $( t.node ).wrap( "<p></p>" );
+ context.fn.purgeOffsets();
+ context.fn.setSelection( { start: cursorPos[0], end: cursorPos[1] } );
+ }
+ }
+ context.fn.updateHistory( event.data.scope == 'realchange' );
+ return true;
+ },
+ 'cut': function( event ) {
+ setTimeout( function() {
+ context.$content.find( 'br' ).each( function() {
+ if ( $(this).parent().is( 'body' ) ) {
+ $(this).wrap( $( '<p></p>' ) );
+ }
+ } );
+ }, 100 );
+ return true;
+ },
+ 'paste': function( event ) {
+ // Save the cursor position to restore it after all this voodoo
+ var cursorPos = context.fn.getCaretPosition();
+ var oldLength = context.fn.getContents().length;
+ var positionFromEnd = oldLength - cursorPos[1];
+
+ //give everything the wikiEditor class so that we can easily pick out things without that class as pasted
+ context.$content.find( '*' ).addClass( 'wikiEditor' );
+ if ( $.layout.name !== 'webkit' ) {
+ context.$content.addClass( 'pasting' );
+ }
+
+ setTimeout( function() {
+ // Kill stuff we know we don't want
+ context.$content.find( 'script,style,img,input,select,textarea,hr,button,link,meta' ).remove();
+ var nodeToDelete = [];
+ var pastedContent = [];
+ var firstDirtyNode;
+ var $lastDirtyNode;
+ var elementAtCursor;
+ if ( $.browser.msie && !context.offsets ) {
+ elementAtCursor = null;
+ } else {
+ elementAtCursor = context.fn.getOffset( cursorPos[0] );
+ }
+ if ( elementAtCursor == null || elementAtCursor.node == null ) {
+ context.$content.prepend( '<p class = wikiEditor></p>' );
+ firstDirtyNode = context.$content.children()[0];
+ } else {
+ firstDirtyNode = elementAtCursor.node;
+ }
+
+ //this is ugly but seems like the best way to handle the case where we select and replace all editor contents
+ try {
+ firstDirtyNode.parentNode;
+ } catch ( err ) {
+ context.$content.prepend( '<p class = wikiEditor></p>' );
+ firstDirtyNode = context.$content.children()[0];
+ }
+
+ while ( firstDirtyNode != null ) {
+ //we're going to replace the contents of the entire parent node.
+ while ( firstDirtyNode.parentNode && firstDirtyNode.parentNode.nodeName != 'BODY'
+ && ! $( firstDirtyNode ).hasClass( 'wikiEditor' )
+ ) {
+ firstDirtyNode = firstDirtyNode.parentNode;
+ }
+ //go back till we find the first pasted node
+ while ( firstDirtyNode.previousSibling != null
+ && ! $( firstDirtyNode.previousSibling ).hasClass( 'wikiEditor' )
+ ) {
+
+ if ( $( firstDirtyNode.previousSibling ).hasClass( '#comment' ) ) {
+ $( firstDirtyNode ).remove();
+ } else {
+ firstDirtyNode = firstDirtyNode.previousSibling;
+ }
+ }
+
+ if ( firstDirtyNode.previousSibling != null ) {
+ $lastDirtyNode = $( firstDirtyNode.previousSibling );
+ } else {
+ $lastDirtyNode = $( firstDirtyNode );
+ }
+
+ var cc = makeContentCollector( $.browser, null );
+ while ( firstDirtyNode != null ) {
+ cc.collectContent(firstDirtyNode);
+ cc.notifyNextNode(firstDirtyNode.nextSibling);
+
+ nodeToDelete.push( firstDirtyNode );
+
+ firstDirtyNode = firstDirtyNode.nextSibling;
+ if ( $( firstDirtyNode ).hasClass( 'wikiEditor' ) ) {
+ break;
+ }
+ }
+
+ var ccData = cc.finish();
+ pastedContent = ccData.lines;
+ var pastedPretty = '';
+ for ( var i = 0; i < pastedContent.length; i++ ) {
+ //escape html
+ pastedPretty = pastedContent[i].replace(/&/g, '&amp;').replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/\r?\n/g, '\\n');
+ //replace leading white spaces with &nbsp;
+ match = pastedContent[i].match(/^[\s]+[^\s]/);
+ if ( match != null && match.length > 0 ) {
+ index = match[0].length;
+ leadingSpace = match[0].replace(/[\s]/g, '&nbsp;');
+ pastedPretty = leadingSpace + pastedPretty.substring(index, pastedPretty.length);
+ }
+
+
+ if( !pastedPretty && $.browser.msie && i == 0 ) {
+ continue;
+ }
+ $newElement = $( '<p class="wikiEditor pasted" ></p>' );
+ if ( pastedPretty ) {
+ $newElement.html( pastedPretty );
+ } else {
+ $newElement.html( '<br class="wikiEditor">' );
+ }
+ $newElement.insertAfter( $lastDirtyNode );
+
+ $lastDirtyNode = $newElement;
+
+ }
+
+ //now delete all the original nodes that we prettified already
+ while ( nodeToDelete.length > 0 ) {
+ $deleteNode = $( nodeToDelete.pop() );
+ $deleteNode.remove();
+ }
+
+ //anything without wikiEditor class was pasted.
+ $selection = context.$content.find( ':not(.wikiEditor)' );
+ if ( $selection.length == 0 ) {
+ break;
+ } else {
+ firstDirtyNode = $selection.eq( 0 )[0];
+ }
+ }
+ context.$content.find( '.wikiEditor' ).removeClass( 'wikiEditor' );
+
+ //now place the cursor at the end of pasted content
+ var newLength = context.fn.getContents().length;
+ var newPos = newLength - positionFromEnd;
+
+ context.fn.purgeOffsets();
+ context.fn.setSelection( { start: newPos, end: newPos } );
+
+ context.fn.scrollToCaretPosition();
+ }, 0 );
+ return true;
+ },
+ 'ready': function( event ) {
+ // Initialize our history queue
+ if ( context.$content ) {
+ context.history.push( { 'html': context.$content.html(), 'sel': context.fn.getCaretPosition() } );
+ } else {
+ context.history.push( { 'html': '', 'sel': context.fn.getCaretPosition() } );
+ }
+ return true;
+ }
+} );
+
+/**
+ * Internally used functions
+ */
+context.fn = $.extend( context.fn, {
+ 'highlightLine': function( $element, mode ) {
+ if ( !$element.is( 'p' ) ) {
+ $element = $element.closest( 'p' );
+ }
+ $element.css( 'backgroundColor', '#AACCFF' );
+ setTimeout( function() { $element.animate( { 'backgroundColor': 'white' }, 'slow' ); }, 100 );
+ setTimeout( function() { $element.css( 'backgroundColor', 'white' ); }, 1000 );
+ },
+ 'htmlToText': function( html ) {
+ // This function is slow for large inputs, so aggressively cache input/output pairs
+ if ( html in context.htmlToTextMap ) {
+ return context.htmlToTextMap[html];
+ }
+ var origHTML = html;
+
+ // We use this elaborate trickery for cross-browser compatibility
+ // IE does overzealous whitespace collapsing for $( '<pre />' ).html( html );
+ // We also do <br> and easy cases for <p> conversion here, complicated cases are handled later
+ html = html
+ .replace( /\r?\n/g, "" ) // IE7 inserts newlines before block elements
+ .replace( /&nbsp;/g, " " ) // We inserted these to prevent IE from collapsing spaces
+ .replace( /\<br[^\>]*\>\<\/p\>/gi, '</p>' ) // Remove trailing <br> from <p>
+ .replace( /\<\/p\>\s*\<p[^\>]*\>/gi, "\n" ) // Easy case for <p> conversion
+ .replace( /\<br[^\>]*\>/gi, "\n" ) // <br> conversion
+ .replace( /\<\/p\>(\n*)\<p[^\>]*\>/gi, "$1\n" )
+ // Un-nest <p> tags
+ .replace( /\<p[^\>]*\><p[^\>]*\>/gi, '<p>' )
+ .replace( /\<\/p\><\/p\>/gi, '</p>' );
+ // Save leading and trailing whitespace now and restore it later. IE eats it all, and even Firefox
+ // won't leave everything alone
+ var leading = html.match( /^\s*/ )[0];
+ var trailing = html.match( /\s*$/ )[0];
+ html = html.substr( leading.length, html.length - leading.length - trailing.length );
+ var $pre = $( '<pre>' + html + '</pre>' );
+ $pre.find( '.wikiEditor-noinclude' ).each( function() { $( this ).remove(); } );
+ // Convert tabs, <p>s and <br>s back
+ $pre.find( '.wikiEditor-tab' ).each( function() { $( this ).text( "\t" ); } );
+ $pre.find( 'br' ).each( function() { $( this ).replaceWith( "\n" ); } );
+ // Converting <p>s is wrong if there's nothing before them, so check that.
+ // .find( '* + p' ) isn't good enough because textnodes aren't considered
+ $pre.find( 'p' ).each( function() {
+ var text = $( this ).text();
+ // If this <p> is preceded by some text, add a \n at the beginning, and if
+ // it's followed by a textnode, add a \n at the end
+ // We need the traverser because there can be other weird stuff in between
+
+ // Check for preceding text
+ var t = new context.fn.rawTraverser( this.firstChild, this, $pre.get( 0 ), true ).prev();
+ while ( t && t.node.nodeName != '#text' && t.node.nodeName != 'BR' && t.node.nodeName != 'P' ) {
+ t = t.prev();
+ }
+ if ( t ) {
+ text = "\n" + text;
+ }
+
+ // Check for following text
+ t = new context.fn.rawTraverser( this.lastChild, this, $pre.get( 0 ), true ).next();
+ while ( t && t.node.nodeName != '#text' && t.node.nodeName != 'BR' && t.node.nodeName != 'P' ) {
+ t = t.next();
+ }
+ if ( t && !t.inP && t.node.nodeName == '#text' && t.node.nodeValue.charAt( 0 ) != '\n'
+ && t.node.nodeValue.charAt( 0 ) != '\r' ) {
+ text += "\n";
+ }
+ $( this ).text( text );
+ } );
+ var retval;
+ if ( $.browser.msie ) {
+ // IE aggressively collapses whitespace in .text() after having done DOM manipulation,
+ // but for some crazy reason this does work. Also convert \r back to \n
+ retval = $( '<pre>' + $pre.html() + '</pre>' ).text().replace( /\r/g, '\n' );
+ } else {
+ retval = $pre.text();
+ }
+ return context.htmlToTextMap[origHTML] = leading + retval + trailing;
+ },
+ /**
+ * Get the first element before the selection that's in a certain class
+ * @param classname Class to match. Defaults to '', meaning any class
+ * @param strict If true, the element the selection starts in cannot match (default: false)
+ * @return jQuery object or null if unknown
+ */
+ 'beforeSelection': function( classname, strict ) {
+ if ( typeof classname == 'undefined' ) {
+ classname = '';
+ }
+ var e = null, offset = null;
+ if ( $.browser.msie && !context.$iframe[0].contentWindow.document.body ) {
+ return null;
+ }
+ if ( context.$iframe[0].contentWindow.getSelection ) {
+ // Firefox and Opera
+ var selection = context.$iframe[0].contentWindow.getSelection();
+ // On load, webkit seems to not have a valid selection
+ if ( selection.baseNode !== null ) {
+ // Start at the selection's start and traverse the DOM backwards
+ // This is done by traversing an element's children first, then the element itself, then its parent
+ e = selection.getRangeAt( 0 ).startContainer;
+ offset = selection.getRangeAt( 0 ).startOffset;
+ } else {
+ return null;
+ }
+
+ // When the cursor is on an empty line, Opera gives us a bogus range object with
+ // startContainer=endContainer=body and startOffset=endOffset=1
+ var body = context.$iframe[0].contentWindow.document.body;
+ if ( $.browser.opera && e == body && offset == 1 ) {
+ return null;
+ }
+ }
+ if ( !e && context.$iframe[0].contentWindow.document.selection ) {
+ // IE
+ // Because there's nothing like range.startContainer in IE, we need to do a DOM traversal
+ // to find the element the start of the selection is in
+ var range = context.$iframe[0].contentWindow.document.selection.createRange();
+ // Set range2 to the text before the selection
+ var range2 = context.$iframe[0].contentWindow.document.body.createTextRange();
+ // For some reason this call throws errors in certain cases, e.g. when the selection is
+ // not in the iframe
+ try {
+ range2.setEndPoint( 'EndToStart', range );
+ } catch ( ex ) {
+ return null;
+ }
+ var seekPos = context.fn.htmlToText( range2.htmlText ).length;
+ var offset = context.fn.getOffset( seekPos );
+ e = offset ? offset.node : null;
+ offset = offset ? offset.offset : null;
+ if ( !e ) {
+ return null;
+ }
+ }
+ if ( e.nodeName != '#text' ) {
+ // The selection is not in a textnode, but between two non-text nodes
+ // (usually inside the <body> between two <br>s). Go to the rightmost
+ // child of the node just before the selection
+ var newE = e.firstChild;
+ for ( var i = 0; i < offset - 1 && newE; i++ ) {
+ newE = newE.nextSibling;
+ }
+ while ( newE && newE.lastChild ) {
+ newE = newE.lastChild;
+ }
+ e = newE || e;
+ }
+
+ // We'd normally use if( $( e ).hasClass( class ) in the while loop, but running the jQuery
+ // constructor thousands of times is very inefficient
+ var classStr = ' ' + classname + ' ';
+ while ( e ) {
+ if ( !strict && ( !classname || ( ' ' + e.className + ' ' ).indexOf( classStr ) != -1 ) ) {
+ return $( e );
+ }
+ var next = e.previousSibling;
+ while ( next && next.lastChild ) {
+ next = next.lastChild;
+ }
+ e = next || e.parentNode;
+ strict = false;
+ }
+ return $( [] );
+ },
+ /**
+ * Object used by traverser(). Don't use this unless you know what you're doing
+ */
+ 'rawTraverser': function( node, inP, ancestor, skipNoinclude ) {
+ this.node = node;
+ this.inP = inP;
+ this.ancestor = ancestor;
+ this.skipNoinclude = skipNoinclude;
+ this.next = function() {
+ var p = this.node;
+ var nextInP = this.inP;
+ while ( p && !p.nextSibling ) {
+ p = p.parentNode;
+ if ( p == this.ancestor ) {
+ // We're back at the ancestor, stop here
+ p = null;
+ }
+ if ( p && p.nodeName == "P" ) {
+ nextInP = null;
+ }
+ }
+ p = p ? p.nextSibling : null;
+ if ( p && p.nodeName == "P" ) {
+ nextInP = p;
+ }
+ do {
+ // Filter nodes with the wikiEditor-noinclude class
+ // Don't use $( p ).hasClass( 'wikiEditor-noinclude' ) because
+ // $() is slow in a tight loop
+ if ( this.skipNoinclude ) {
+ while ( p && ( ' ' + p.className + ' ' ).indexOf( ' wikiEditor-noinclude ' ) != -1 ) {
+ p = p.nextSibling;
+ }
+ }
+ if ( p && p.firstChild ) {
+ p = p.firstChild;
+ if ( p.nodeName == "P" ) {
+ nextInP = p;
+ }
+ }
+ } while ( p && p.firstChild );
+ // Instead of calling the rawTraverser constructor, inline it. This avoids function call overhead
+ return p ? { 'node': p, 'inP': nextInP, 'ancestor': this.ancestor,
+ 'skipNoinclude': this.skipNoinclude, 'next': this.next, 'prev': this.prev } : null;
+ };
+ this.prev = function() {
+ var p = this.node;
+ var prevInP = this.inP;
+ while ( p && !p.previousSibling ) {
+ p = p.parentNode;
+ if ( p == this.ancestor ) {
+ // We're back at the ancestor, stop here
+ p = null;
+ }
+ if ( p && p.nodeName == "P" ) {
+ prevInP = null;
+ }
+ }
+ p = p ? p.previousSibling : null;
+ if ( p && p.nodeName == "P" ) {
+ prevInP = p;
+ }
+ do {
+ // Filter nodes with the wikiEditor-noinclude class
+ // Don't use $( p ).hasClass( 'wikiEditor-noinclude' ) because
+ // $() is slow in a tight loop
+ if ( this.skipNoinclude ) {
+ while ( p && ( ' ' + p.className + ' ' ).indexOf( ' wikiEditor-noinclude ' ) != -1 ) {
+ p = p.previousSibling;
+ }
+ }
+ if ( p && p.lastChild ) {
+ p = p.lastChild;
+ if ( p.nodeName == "P" ) {
+ prevInP = p;
+ }
+ }
+ } while ( p && p.lastChild );
+ // Instead of calling the rawTraverser constructor, inline it. This avoids function call overhead
+ return p ? { 'node': p, 'inP': prevInP, 'ancestor': this.ancestor,
+ 'skipNoinclude': this.skipNoinclude, 'next': this.next, 'prev': this.prev } : null;
+ };
+ },
+ /**
+ * Get an object used to traverse the leaf nodes in the iframe DOM. This traversal skips leaf nodes
+ * inside an element with the wikiEditor-noinclude class. This basically wraps rawTraverser
+ *
+ * @param start Node to start at
+ * @return Traverser object, use .next() or .prev() to get a traverser object referring to the
+ * previous/next node
+ */
+ 'traverser': function( start ) {
+ // Find the leftmost leaf node in the tree
+ var startNode = start.jquery ? start.get( 0 ) : start;
+ var node = startNode;
+ var inP = node.nodeName == "P" ? node : null;
+ do {
+ // Filter nodes with the wikiEditor-noinclude class
+ // Don't use $( p ).hasClass( 'wikiEditor-noinclude' ) because
+ // $() is slow in a tight loop
+ while ( node && ( ' ' + node.className + ' ' ).indexOf( ' wikiEditor-noinclude ' ) != -1 ) {
+ node = node.nextSibling;
+ }
+ if ( node && node.firstChild ) {
+ node = node.firstChild;
+ if ( node.nodeName == "P" ) {
+ inP = node;
+ }
+ }
+ } while ( node && node.firstChild );
+ return new context.fn.rawTraverser( node, inP, startNode, true );
+ },
+ 'getOffset': function( offset ) {
+ if ( !context.offsets ) {
+ context.fn.refreshOffsets();
+ }
+ if ( offset in context.offsets ) {
+ return context.offsets[offset];
+ }
+ // Our offset is not pre-cached. Find the highest offset below it and interpolate
+ // We need to traverse the entire object because for() doesn't traverse in order
+ // We don't do in-order traversal because the object is sparse
+ var lowerBound = -1;
+ for ( var o in context.offsets ) {
+ var realO = parseInt( o );
+ if ( realO < offset && realO > lowerBound) {
+ lowerBound = realO;
+ }
+ }
+ if ( !( lowerBound in context.offsets ) ) {
+ // Weird edge case: either offset is too large or the document is empty
+ return null;
+ }
+ var base = context.offsets[lowerBound];
+ return context.offsets[offset] = {
+ 'node': base.node,
+ 'offset': base.offset + offset - lowerBound,
+ 'length': base.length,
+ 'lastTextNode': base.lastTextNode
+ };
+ },
+ 'purgeOffsets': function() {
+ context.offsets = null;
+ },
+ 'refreshOffsets': function() {
+ context.offsets = [ ];
+ var t = context.fn.traverser( context.$content );
+ var pos = 0, lastTextNode = null;
+ while ( t ) {
+ if ( t.node.nodeName != '#text' && t.node.nodeName != 'BR' ) {
+ t = t.next();
+ continue;
+ }
+ var nextPos = t.node.nodeName == '#text' ? pos + t.node.nodeValue.length : pos + 1;
+ var nextT = t.next();
+ var leavingP = t.node.nodeName == '#text' && t.inP && nextT && ( !nextT.inP || nextT.inP != t.inP );
+ context.offsets[pos] = {
+ 'node': t.node,
+ 'offset': 0,
+ 'length': nextPos - pos + ( leavingP ? 1 : 0 ),
+ 'lastTextNode': lastTextNode
+ };
+ if ( leavingP ) {
+ // <p>Foo</p> looks like "Foo\n", make it quack like it too
+ // Basically we're faking the \n character much like we're treating <br>s
+ context.offsets[nextPos] = {
+ 'node': t.node,
+ 'offset': nextPos - pos,
+ 'length': nextPos - pos + 1,
+ 'lastTextNode': lastTextNode
+ };
+ }
+ pos = nextPos + ( leavingP ? 1 : 0 );
+ if ( t.node.nodeName == '#text' ) {
+ lastTextNode = t.node;
+ }
+ t = nextT;
+ }
+ },
+ 'saveCursorAndScrollTop': function() {
+ // Stub out textarea behavior
+ return;
+ },
+ 'restoreCursorAndScrollTop': function() {
+ // Stub out textarea behavior
+ return;
+ },
+ 'saveSelection': function() {
+ if ( $.client.profile().name === 'msie' ) {
+ context.$iframe[0].contentWindow.focus();
+ context.savedSelection = context.$iframe[0].contentWindow.document.selection.createRange();
+ }
+ },
+ 'restoreSelection': function() {
+ if ( $.client.profile().name === 'msie' && context.savedSelection !== null ) {
+ context.$iframe[0].contentWindow.focus();
+ context.savedSelection.select();
+ context.savedSelection = null;
+ }
+ },
+ /**
+ * Update the history queue
+ *
+ * @param htmlChange pass true or false to inidicate if there was a text change that should potentially
+ * be given a new history state.
+ */
+ 'updateHistory': function( htmlChange ) {
+ var newHTML = context.$content.html();
+ var newSel = context.fn.getCaretPosition();
+ // Was text changed? Was it because of a REDO or UNDO action?
+ if (
+ context.history.length == 0 ||
+ ( htmlChange && context.oldDelayedHistoryPosition == context.historyPosition )
+ ) {
+ context.oldDelayedSel = newSel;
+ // Do we need to trim extras from our history?
+ // FIXME: this should really be happing on change, not on the delay
+ if ( context.historyPosition < -1 ) {
+ //clear out the extras
+ context.history.splice( context.history.length + context.historyPosition + 1 );
+ context.historyPosition = -1;
+ }
+ context.history.push( { 'html': newHTML, 'sel': newSel } );
+ // If the history has grown longer than 10 items, remove the earliest one
+ while ( context.history.length > 10 ) {
+ context.history.shift();
+ }
+ } else if ( context.oldDelayedSel != newSel ) {
+ // If only the selection was changed, update it
+ context.oldDelayedSel = newSel;
+ context.history[context.history.length + context.historyPosition].sel = newSel;
+ }
+ // synch our old delayed history position until the next undo/redo action
+ context.oldDelayedHistoryPosition = context.historyPosition;
+ },
+ /**
+ * Sets up the iframe in place of the textarea to allow more advanced operations
+ */
+ 'setupIframe': function() {
+ context.$iframe = $( '<iframe></iframe>' )
+ .attr( {
+ 'frameBorder': 0,
+ 'border': 0,
+ 'tabindex': 1,
+ 'src': mw.config.get( 'wgExtensionAssetsPath' ) + '/WikiEditor/modules/jquery.wikiEditor.html?' +
+ 'instance=' + context.instance + '&ts=' + ( new Date() ).getTime() + '&is=content',
+ 'id': 'wikiEditor-iframe-' + context.instance
+ } )
+ .css( {
+ 'backgroundColor': 'white',
+ 'width': '100%',
+ 'height': context.$textarea.height(),
+ 'display': 'none',
+ 'overflow-y': 'scroll',
+ 'overflow-x': 'hidden'
+ } )
+ .insertAfter( context.$textarea )
+ .load( function() {
+ // Internet Explorer will reload the iframe once we turn on design mode, so we need to only turn it
+ // on during the first run, and then bail
+ if ( !this.isSecondRun ) {
+ // Turn the document's design mode on
+ context.$iframe[0].contentWindow.document.designMode = 'on';
+ // Let the rest of this function happen next time around
+ if ( $.browser.msie ) {
+ this.isSecondRun = true;
+ return;
+ }
+ }
+ // Get a reference to the content area of the iframe
+ context.$content = $( context.$iframe[0].contentWindow.document.body );
+ // Add classes to the body to influence the styles based on what's enabled
+ for ( module in context.modules ) {
+ context.$content.addClass( 'wikiEditor-' + module );
+ }
+ // If we just do "context.$content.text( context.$textarea.val() )", Internet Explorer will strip
+ // out the whitespace charcters, specifically "\n" - so we must manually encode text and append it
+ // TODO: Refactor this into a textToHtml() function
+ var html = context.$textarea.val()
+ // We're gonna use &esc; as an escape sequence
+ .replace( /&esc;/g, '&esc;esc;' )
+ // Escape existing uses of <p>, </p>, &nbsp; and <span class="wikiEditor-tab"></span>
+ .replace( /\<p\>/g, '&esc;&lt;p&gt;' )
+ .replace( /\<\/p\>/g, '&esc;&lt;/p&gt;' )
+ .replace(
+ /\<span class="wikiEditor-tab"\>\<\/span\>/g,
+ '&esc;&lt;span&nbsp;class=&quot;wikiEditor-tab&quot;&gt;&lt;/span&gt;'
+ )
+ .replace( /&nbsp;/g, '&esc;&amp;nbsp;' );
+ // We must do some extra processing on IE to avoid dirty diffs, specifically IE will collapse
+ // leading spaces - browser sniffing is not ideal, but executing this code on a non-broken browser
+ // doesn't cause harm
+ if ( $.browser.msie ) {
+ html = html.replace( /\t/g, '<span class="wikiEditor-tab"></span>' );
+ if ( $.browser.versionNumber <= 7 ) {
+ // Replace all spaces matching &nbsp; - IE <= 7 needs this because of its overzealous
+ // whitespace collapsing
+ html = html.replace( / /g, "&nbsp;" );
+ } else {
+ // IE8 is happy if we just convert the first leading space to &nbsp;
+ html = html.replace( /(^|\n) /g, "$1&nbsp;" );
+ }
+ }
+ // Use a dummy div to escape all entities
+ // This'll also escape <br>, <span> and &nbsp; , so we unescape those after
+ // We also need to unescape the doubly-escaped things mentioned above
+ html = $( '<div />' ).text( '<p>' + html.replace( /\r?\n/g, '</p><p>' ) + '</p>' ).html()
+ .replace( /&amp;nbsp;/g, '&nbsp;' )
+ // Allow <p> tags to survive encoding
+ .replace( /&lt;p&gt;/g, '<p>' )
+ .replace( /&lt;\/p&gt;/g, '</p>' )
+ // And <span class="wikiEditor-tab"></span> too
+ .replace(
+ /&lt;span( |&nbsp;)class=("|&quot;)wikiEditor-tab("|&quot;)&gt;&lt;\/span&gt;/g,
+ '<span class="wikiEditor-tab"></span>'
+ )
+ // Empty <p> tags need <br> tags in them
+ .replace( /<p><\/p>/g, '<p><br></p>' )
+ // Unescape &esc; stuff
+ .replace( /&amp;esc;&amp;amp;nbsp;/g, '&amp;nbsp;' )
+ .replace( /&amp;esc;&amp;lt;p&amp;gt;/g, '&lt;p&gt;' )
+ .replace( /&amp;esc;&amp;lt;\/p&amp;gt;/g, '&lt;/p&gt;' )
+ .replace(
+ /&amp;esc;&amp;lt;span&amp;nbsp;class=&amp;quot;wikiEditor-tab&amp;quot;&amp;gt;&amp;lt;\/span&amp;gt;/g,
+ '&lt;span class="wikiEditor-tab"&gt;&lt;\/span&gt;'
+ )
+ .replace( /&amp;esc;esc;/g, '&amp;esc;' );
+ context.$content.html( html );
+
+ // Reflect direction of parent frame into child
+ if ( $( 'body' ).is( '.rtl' ) ) {
+ context.$content.addClass( 'rtl' ).attr( 'dir', 'rtl' );
+ }
+ // Activate the iframe, encoding the content of the textarea and copying it to the content of iframe
+ context.$textarea.attr( 'disabled', true );
+ context.$textarea.hide();
+ context.$iframe.show();
+ // Let modules know we're ready to start working with the content
+ context.fn.trigger( 'ready' );
+ // Only save HTML now: ready handlers may have modified it
+ context.oldHTML = context.oldDelayedHTML = context.$content.html();
+ //remove our temporary loading
+ /* Disaling our loading div for now
+ $( '.wikiEditor-ui-loading' ).fadeOut( 'fast', function() {
+ $( this ).remove();
+ } );
+ */
+ // Setup event handling on the iframe
+ $( context.$iframe[0].contentWindow.document )
+ .bind( 'keydown', function( event ) {
+ event.jQueryNode = context.fn.getElementAtCursor();
+ return context.fn.trigger( 'keydown', event );
+
+ } )
+ .bind( 'keyup', function( event ) {
+ event.jQueryNode = context.fn.getElementAtCursor();
+ return context.fn.trigger( 'keyup', event );
+ } )
+ .bind( 'keypress', function( event ) {
+ event.jQueryNode = context.fn.getElementAtCursor();
+ return context.fn.trigger( 'keypress', event );
+ } )
+ .bind( 'paste', function( event ) {
+ return context.fn.trigger( 'paste', event );
+ } )
+ .bind( 'cut', function( event ) {
+ return context.fn.trigger( 'cut', event );
+ } )
+ .bind( 'keyup paste mouseup cut encapsulateSelection', function( event ) {
+ return context.fn.trigger( 'change', event );
+ } )
+ .delayedBind( 250, 'keyup paste mouseup cut encapsulateSelection', function( event ) {
+ context.fn.trigger( 'delayedChange', event );
+ } );
+ } );
+ // Attach a submit handler to the form so that when the form is submitted the content of the iframe gets
+ // decoded and copied over to the textarea
+ context.$textarea.closest( 'form' ).submit( function() {
+ context.$textarea.attr( 'disabled', false );
+ context.$textarea.val( context.$textarea.textSelection( 'getContents' ) );
+ } );
+ /* FIXME: This was taken from EditWarning.js - maybe we could do a jquery plugin for this? */
+ // Attach our own handler for onbeforeunload which respects the current one
+ context.fallbackWindowOnBeforeUnload = window.onbeforeunload;
+ window.onbeforeunload = function() {
+ context.$textarea.val( context.$textarea.textSelection( 'getContents' ) );
+ if ( context.fallbackWindowOnBeforeUnload ) {
+ return context.fallbackWindowOnBeforeUnload();
+ }
+ };
+ },
+
+ /*
+ * Compatibility with the $.textSelection jQuery plug-in. When the iframe is in use, these functions provide
+ * equivilant functionality to the otherwise textarea-based functionality.
+ */
+
+ 'getElementAtCursor': function() {
+ if ( context.$iframe[0].contentWindow.getSelection ) {
+ // Firefox and Opera
+ var selection = context.$iframe[0].contentWindow.getSelection();
+ if ( selection.rangeCount == 0 ) {
+ // We don't know where the cursor is
+ return $( [] );
+ }
+ var sc = selection.getRangeAt( 0 ).startContainer;
+ if ( sc.nodeName == "#text" ) sc = sc.parentNode;
+ return $( sc );
+ } else if ( context.$iframe[0].contentWindow.document.selection ) { // should come last; Opera!
+ // IE
+ var selection = context.$iframe[0].contentWindow.document.selection.createRange();
+ return $( selection.parentElement() );
+ }
+ },
+
+ /**
+ * Gets the complete contents of the iframe (in plain text, not HTML)
+ */
+ 'getContents': function() {
+ // For <p></p>, .html() returns <p>&nbsp;</p> in IE
+ // This seems to convince IE while not affecting display
+ if ( !context.$content ) {
+ return '';
+ }
+ var html;
+ if ( $.browser.msie ) {
+ // Don't manipulate the iframe DOM itself, causes cursor jumping issues
+ var $c = $( context.$content.get( 0 ).cloneNode( true ) );
+ $c.find( 'p' ).each( function() {
+ if ( $(this).html() == '' ) {
+ $(this).replaceWith( '<p></p>' );
+ }
+ } );
+ html = $c.html();
+ } else {
+ html = context.$content.html();
+ }
+ return context.fn.htmlToText( html );
+ },
+ /**
+ * Gets the currently selected text in the content
+ * DO NOT CALL THIS DIRECTLY, use $.textSelection( 'functionname', options ) instead
+ */
+ 'getSelection': function() {
+ var retval;
+ if ( context.$iframe[0].contentWindow.getSelection ) {
+ // Firefox and Opera
+ retval = context.$iframe[0].contentWindow.getSelection();
+ if ( $.browser.opera ) {
+ // Opera strips newlines in getSelection(), so we need something more sophisticated
+ if ( retval.rangeCount > 0 ) {
+ retval = context.fn.htmlToText( $( '<pre />' )
+ .append( retval.getRangeAt( 0 ).cloneContents() )
+ .html()
+ );
+ } else {
+ retval = '';
+ }
+ }
+ } else if ( context.$iframe[0].contentWindow.document.selection ) { // should come last; Opera!
+ // IE
+ retval = context.$iframe[0].contentWindow.document.selection.createRange();
+ }
+ if ( typeof retval.text != 'undefined' ) {
+ // In IE8, retval.text is stripped of newlines, so we need to process retval.htmlText
+ // to get a reliable answer. IE7 does get this right though
+ // Run this fix for all IE versions anyway, it doesn't hurt
+ retval = context.fn.htmlToText( retval.htmlText );
+ } else if ( typeof retval.toString != 'undefined' ) {
+ retval = retval.toString();
+ }
+ return retval;
+ },
+ /**
+ * Inserts text at the begining and end of a text selection, optionally inserting text at the caret when
+ * selection is empty.
+ * DO NOT CALL THIS DIRECTLY, use $.textSelection( 'functionname', options ) instead
+ */
+ 'encapsulateSelection': function( options ) {
+ var selText = $(this).textSelection( 'getSelection' );
+ var selTextArr;
+ var collapseToEnd = false;
+ var selectAfter = false;
+ var setSelectionTo = null;
+ var pre = options.pre, post = options.post;
+ if ( !selText ) {
+ selText = options.peri;
+ selectAfter = true;
+ } else if ( options.peri == selText.replace( /\s+$/, '' ) ) {
+ // Probably a successive button press
+ // strip any extra white space from selText
+ selText = selText.replace( /\s+$/, '' );
+ // set the collapseToEnd flag to ensure our selection is collapsed to the end before any insertion is done
+ collapseToEnd = true;
+ // set selectAfter to true since we know we'll be populating with our default text
+ selectAfter = true;
+ } else if ( options.replace ) {
+ selText = options.peri;
+ } else if ( selText.charAt( selText.length - 1 ) == ' ' ) {
+ // Exclude ending space char
+ // FIXME: Why?
+ selText = selText.substring( 0, selText.length - 1 );
+ post += ' ';
+ }
+ if ( options.splitlines ) {
+ selTextArr = selText.split( /\n/ );
+ }
+
+ if ( context.$iframe[0].contentWindow.getSelection ) {
+ // Firefox and Opera
+ var range = context.$iframe[0].contentWindow.getSelection().getRangeAt( 0 );
+ // if our test above indicated that this was a sucessive button press, we need to collapse the
+ // selection to the end to avoid replacing text
+ if ( collapseToEnd ) {
+ // Make sure we're not collapsing ourselves into a BR tag
+ if ( range.endContainer.nodeName == 'BR' ) {
+ range.setEndBefore( range.endContainer );
+ }
+ range.collapse( false );
+ }
+ if ( options.ownline ) {
+ // We need to figure out if the cursor is at the start or end of a line
+ var atStart = false, atEnd = false;
+ var body = context.$content.get( 0 );
+ if ( range.startOffset == 0 ) {
+ // Start of a line
+ // FIXME: Not necessarily the case with syntax highlighting or
+ // template collapsing
+ atStart = true;
+ } else if ( range.startContainer == body ) {
+ // Look up the node just before the start of the selection
+ // If it's a <BR>, we're at the start of a line that starts with a
+ // block element; if not, we're at the end of a line
+ var n = body.firstChild;
+ for ( var i = 0; i < range.startOffset - 1 && n; i++ ) {
+ n = n.nextSibling;
+ }
+ if ( n && n.nodeName == 'BR' ) {
+ atStart = true;
+ } else {
+ atEnd = true;
+ }
+ }
+ if ( ( range.endOffset == 0 && range.endContainer.nodeValue == null ) ||
+ ( range.endContainer.nodeName == '#text' &&
+ range.endOffset == range.endContainer.nodeValue.length ) ||
+ ( range.endContainer.nodeName == 'P' && range.endContainer.nodeValue == null ) ) {
+ atEnd = true;
+ }
+ if ( !atStart ) {
+ pre = "\n" + options.pre;
+ }
+ if ( !atEnd ) {
+ post += "\n";
+ }
+ }
+ var insertText = "";
+ if ( options.splitlines ) {
+ for( var j = 0; j < selTextArr.length; j++ ) {
+ insertText = insertText + pre + selTextArr[j] + post;
+ if( j != selTextArr.length - 1 ) {
+ insertText += "\n";
+ }
+ }
+ } else {
+ insertText = pre + selText + post;
+ }
+ var insertLines = insertText.split( "\n" );
+ range.extractContents();
+ // Insert the contents one line at a time - insertNode() inserts at the beginning, so this has to happen
+ // in reverse order
+ // Track the first and last inserted node, and if we need to also track where the text we need to select
+ // afterwards starts and ends
+ var firstNode = null, lastNode = null;
+ var selSC = null, selEC = null, selSO = null, selEO = null, offset = 0;
+ for ( var i = insertLines.length - 1; i >= 0; i-- ) {
+ firstNode = context.$iframe[0].contentWindow.document.createTextNode( insertLines[i] );
+ range.insertNode( firstNode );
+ lastNode = lastNode || firstNode;
+ var newOffset = offset + insertLines[i].length;
+ if ( !selEC && post.length <= newOffset ) {
+ selEC = firstNode;
+ selEO = selEC.nodeValue.length - ( post.length - offset );
+ }
+ if ( selEC && !selSC && pre.length >= insertText.length - newOffset ) {
+ selSC = firstNode;
+ selSO = pre.length - ( insertText.length - newOffset );
+ }
+ offset = newOffset;
+ if ( i > 0 ) {
+ firstNode = context.$iframe[0].contentWindow.document.createElement( 'br' );
+ range.insertNode( firstNode );
+ newOffset = offset + 1;
+ if ( !selEC && post.length <= newOffset ) {
+ selEC = firstNode;
+ selEO = 1 - ( post.length - offset );
+ }
+ if ( selEC && !selSC && pre.length >= insertText.length - newOffset ) {
+ selSC = firstNode;
+ selSO = pre.length - ( insertText.length - newOffset );
+ }
+ offset = newOffset;
+ }
+ }
+ if ( firstNode ) {
+ context.fn.scrollToTop( $( firstNode.parentNode ) );
+ }
+ if ( selectAfter ) {
+ setSelectionTo = {
+ startContainer: selSC,
+ endContainer: selEC,
+ start: selSO,
+ end: selEO
+ };
+ } else if ( lastNode ) {
+ setSelectionTo = {
+ startContainer: lastNode,
+ endContainer: lastNode,
+ start: lastNode.nodeValue.length,
+ end: lastNode.nodeValue.length
+ };
+ }
+ } else if ( context.$iframe[0].contentWindow.document.selection ) {
+ // IE
+ context.$iframe[0].contentWindow.focus();
+ var range = context.$iframe[0].contentWindow.document.selection.createRange();
+ if ( options.ownline && range.moveStart ) {
+ // Check if we're at the start of a line
+ // If not, prepend a newline
+ var range2 = context.$iframe[0].contentWindow.document.selection.createRange();
+ range2.collapse();
+ range2.moveStart( 'character', -1 );
+ // FIXME: Which check is correct?
+ if ( range2.text != "\r" && range2.text != "\n" && range2.text != "" ) {
+ pre = "\n" + pre;
+ }
+
+ // Check if we're at the end of a line
+ // If not, append a newline
+ var range3 = context.$iframe[0].contentWindow.document.selection.createRange();
+ range3.collapse( false );
+ range3.moveEnd( 'character', 1 );
+ if ( range3.text != "\r" && range3.text != "\n" && range3.text != "" ) {
+ post += "\n";
+ }
+ }
+ // if our test above indicated that this was a sucessive button press, we need to collapse the
+ // selection to the end to avoid replacing text
+ if ( collapseToEnd ) {
+ range.collapse( false );
+ }
+ // TODO: Clean this up. Duplicate code due to the pre-existing browser specific structure of this
+ // function
+ var insertText = "";
+ if ( options.splitlines ) {
+ for( var j = 0; j < selTextArr.length; j++ ) {
+ insertText = insertText + pre + selTextArr[j] + post;
+ if( j != selTextArr.length - 1 ) {
+ insertText += "\n";
+ }
+ }
+ } else {
+ insertText = pre + selText + post;
+ }
+ // TODO: Maybe find a more elegant way of doing this like the Firefox code above?
+ range.pasteHTML( insertText
+ .replace( /\</g, '&lt;' )
+ .replace( />/g, '&gt;' )
+ .replace( /\r?\n/g, '<br />' )
+ );
+ if ( selectAfter ) {
+ range.moveStart( 'character', -post.length - selText.length );
+ range.moveEnd( 'character', -post.length );
+ range.select();
+ }
+ }
+
+ if ( setSelectionTo ) {
+ context.fn.setSelection( setSelectionTo );
+ }
+ // Trigger the encapsulateSelection event (this might need to get named something else/done differently)
+ $( context.$iframe[0].contentWindow.document ).trigger(
+ 'encapsulateSelection', [ pre, options.peri, post, options.ownline, options.replace ]
+ );
+ return context.$textarea;
+ },
+ /**
+ * Gets the position (in resolution of bytes not nessecarily characters) in a textarea
+ * DO NOT CALL THIS DIRECTLY, use $.textSelection( 'functionname', options ) instead
+ */
+ 'getCaretPosition': function( options ) {
+ var startPos = null, endPos = null;
+ if ( context.$iframe[0].contentWindow.getSelection ) {
+ var selection = context.$iframe[0].contentWindow.getSelection();
+ if ( selection.rangeCount == 0 ) {
+ // We don't know where the cursor is
+ return [ 0, 0 ];
+ }
+ var sc = selection.getRangeAt( 0 ).startContainer, ec = selection.getRangeAt( 0 ).endContainer;
+ var so = selection.getRangeAt( 0 ).startOffset, eo = selection.getRangeAt( 0 ).endOffset;
+ if ( sc.nodeName == 'BODY' ) {
+ // Grab the node just before the start of the selection
+ var n = sc.firstChild;
+ for ( var i = 0; i < so - 1 && n; i++ ) {
+ n = n.nextSibling;
+ }
+ sc = n;
+ so = 0;
+ }
+ if ( ec.nodeName == 'BODY' ) {
+ var n = ec.firstChild;
+ for ( var i = 0; i < eo - 1 && n; i++ ) {
+ n = n.nextSibling;
+ }
+ ec = n;
+ eo = 0;
+ }
+
+ // Make sure sc and ec are leaf nodes
+ while ( sc.firstChild ) {
+ sc = sc.firstChild;
+ }
+ while ( ec.firstChild ) {
+ ec = ec.firstChild;
+ }
+ // Make sure the offsets are regenerated if necessary
+ context.fn.getOffset( 0 );
+ var o;
+ for ( o in context.offsets ) {
+ if ( startPos === null && context.offsets[o].node == sc ) {
+ // For some wicked reason o is a string, even though
+ // we put it in as an integer. Use ~~ to coerce it too an int
+ startPos = ~~o + so - context.offsets[o].offset;
+ }
+ if ( startPos !== null && context.offsets[o].node == ec ) {
+ endPos = ~~o + eo - context.offsets[o].offset;
+ break;
+ }
+ }
+ } else if ( context.$iframe[0].contentWindow.document.selection ) {
+ // IE
+ // FIXME: This is mostly copypasted from the textSelection plugin
+ var d = context.$iframe[0].contentWindow.document;
+ var postFinished = false;
+ var periFinished = false;
+ var postFinished = false;
+ var preText, rawPreText, periText;
+ var rawPeriText, postText, rawPostText;
+ // Depending on the document state, and if the cursor has ever been manually placed within the document
+ // the following call such as setEndPoint can result in nasty errors. These cases are always cases
+ // in which the start and end points can safely be assumed to be 0, so we will just try our best to do
+ // the full process but fall back to 0.
+ try {
+ // Create range containing text in the selection
+ var periRange = d.selection.createRange().duplicate();
+ // Create range containing text before the selection
+ var preRange = d.body.createTextRange();
+ // Move the end where we need it
+ preRange.setEndPoint( "EndToStart", periRange );
+ // Create range containing text after the selection
+ var postRange = d.body.createTextRange();
+ // Move the start where we need it
+ postRange.setEndPoint( "StartToEnd", periRange );
+ // Load the text values we need to compare
+ preText = rawPreText = preRange.text;
+ periText = rawPeriText = periRange.text;
+ postText = rawPostText = postRange.text;
+ /*
+ * Check each range for trimmed newlines by shrinking the range by 1
+ * character and seeing if the text property has changed. If it has
+ * not changed then we know that IE has trimmed a \r\n from the end.
+ */
+ do {
+ if ( !postFinished ) {
+ if ( preRange.compareEndPoints( "StartToEnd", preRange ) == 0 ) {
+ postFinished = true;
+ } else {
+ preRange.moveEnd( "character", -1 );
+ if ( preRange.text == preText ) {
+ rawPreText += "\r\n";
+ } else {
+ postFinished = true;
+ }
+ }
+ }
+ if ( !periFinished ) {
+ if ( periRange.compareEndPoints( "StartToEnd", periRange ) == 0 ) {
+ periFinished = true;
+ } else {
+ periRange.moveEnd( "character", -1 );
+ if ( periRange.text == periText ) {
+ rawPeriText += "\r\n";
+ } else {
+ periFinished = true;
+ }
+ }
+ }
+ if ( !postFinished ) {
+ if ( postRange.compareEndPoints("StartToEnd", postRange) == 0 ) {
+ postFinished = true;
+ } else {
+ postRange.moveEnd( "character", -1 );
+ if ( postRange.text == postText ) {
+ rawPostText += "\r\n";
+ } else {
+ postFinished = true;
+ }
+ }
+ }
+ } while ( ( !postFinished || !periFinished || !postFinished ) );
+ startPos = rawPreText.replace( /\r\n/g, "\n" ).length;
+ endPos = startPos + rawPeriText.replace( /\r\n/g, "\n" ).length;
+ } catch( e ) {
+ startPos = endPos = 0;
+ }
+ }
+ return [ startPos, endPos ];
+ },
+ /**
+ * Sets the selection of the content
+ * DO NOT CALL THIS DIRECTLY, use $.textSelection( 'functionname', options ) instead
+ *
+ * @param start Character offset of selection start
+ * @param end Character offset of selection end
+ * @param startContainer Element in iframe to start selection in. If not set, start is a character offset
+ * @param endContainer Element in iframe to end selection in. If not set, end is a character offset
+ */
+ 'setSelection': function( options ) {
+ var sc = options.startContainer, ec = options.endContainer;
+ sc = sc && sc.jquery ? sc[0] : sc;
+ ec = ec && ec.jquery ? ec[0] : ec;
+ if ( context.$iframe[0].contentWindow.getSelection ) {
+ // Firefox and Opera
+ var start = options.start, end = options.end;
+ if ( !sc || !ec ) {
+ var s = context.fn.getOffset( start );
+ var e = context.fn.getOffset( end );
+ sc = s ? s.node : null;
+ ec = e ? e.node : null;
+ start = s ? s.offset : null;
+ end = e ? e.offset : null;
+ // Don't try to set the selection past the end of a node, causes errors
+ // Just put the selection at the end of the node in this case
+ if ( sc != null && sc.nodeName == '#text' && start > sc.nodeValue.length ) {
+ start = sc.nodeValue.length - 1;
+ }
+ if ( ec != null && ec.nodeName == '#text' && end > ec.nodeValue.length ) {
+ end = ec.nodeValue.length - 1;
+ }
+ }
+ if ( !sc || !ec ) {
+ // The requested offset isn't in the offsets array
+ // Give up
+ return context.$textarea;
+ }
+
+ var sel = context.$iframe[0].contentWindow.getSelection();
+ while ( sc.firstChild && sc.nodeName != '#text' ) {
+ sc = sc.firstChild;
+ }
+ while ( ec.firstChild && ec.nodeName != '#text' ) {
+ ec = ec.firstChild;
+ }
+ var range = context.$iframe[0].contentWindow.document.createRange();
+ range.setStart( sc, start );
+ range.setEnd( ec, end );
+ sel.removeAllRanges();
+ sel.addRange( range );
+ context.$iframe[0].contentWindow.focus();
+ } else if ( context.$iframe[0].contentWindow.document.body.createTextRange ) {
+ // IE
+ var range = context.$iframe[0].contentWindow.document.body.createTextRange();
+ if ( sc ) {
+ range.moveToElementText( sc );
+ }
+ range.collapse();
+ range.moveEnd( 'character', options.start );
+
+ var range2 = context.$iframe[0].contentWindow.document.body.createTextRange();
+ if ( ec ) {
+ range2.moveToElementText( ec );
+ }
+ range2.collapse();
+ range2.moveEnd( 'character', options.end );
+
+ // IE does newline emulation for <p>s: <p>foo</p><p>bar</p> becomes foo\nbar just fine
+ // but <p>foo</p><br><br><p>bar</p> becomes foo\n\n\n\nbar , one \n too many
+ // Correct for this
+ var matches, counted = 0;
+ // while ( matches = range.htmlText.match( regex ) && matches.length <= counted ) doesn't work
+ // because the assignment side effect hasn't happened yet when the second term is evaluated
+ while ( matches = range.htmlText.match( /\<\/p\>(\<br[^\>]*\>)+\<p\>/gi ) ) {
+ if ( matches.length <= counted )
+ break;
+ range.moveEnd( 'character', matches.length );
+ counted += matches.length;
+ }
+ range2.moveEnd( 'character', counted );
+ while ( matches = range2.htmlText.match( /\<\/p\>(\<br[^\>]*\>)+\<p\>/gi ) ) {
+ if ( matches.length <= counted )
+ break;
+ range2.moveEnd( 'character', matches.length );
+ counted += matches.length;
+ }
+
+ range2.setEndPoint( 'StartToEnd', range );
+ range2.select();
+ }
+ return context.$textarea;
+ },
+ /**
+ * Scroll a textarea to the current cursor position. You can set the cursor position with setSelection()
+ * DO NOT CALL THIS DIRECTLY, use $.textSelection( 'functionname', options ) instead
+ */
+ 'scrollToCaretPosition': function( options ) {
+ context.fn.scrollToTop( context.fn.getElementAtCursor(), true );
+ },
+ /**
+ * Scroll an element to the top of the iframe
+ * DO NOT CALL THIS DIRECTLY, use $.textSelection( 'functionname', options ) instead
+ *
+ * @param $element jQuery object containing an element in the iframe
+ * @param force If true, scroll the element even if it's already visible
+ */
+ 'scrollToTop': function( $element, force ) {
+ var html = context.$content.closest( 'html' ),
+ body = context.$content.closest( 'body' ),
+ parentHtml = $( 'html' ),
+ parentBody = $( 'body' );
+ var y = $element.offset().top;
+ if ( !$.browser.msie && ! $element.is( 'body' ) ) {
+ y = parentHtml.scrollTop() > 0 ? y + html.scrollTop() - parentHtml.scrollTop() : y;
+ y = parentBody.scrollTop() > 0 ? y + body.scrollTop() - parentBody.scrollTop() : y;
+ }
+ var topBound = html.scrollTop() > body.scrollTop() ? html.scrollTop() : body.scrollTop(),
+ bottomBound = topBound + context.$iframe.height();
+ if ( force || y < topBound || y > bottomBound ) {
+ html.scrollTop( y );
+ body.scrollTop( y );
+ }
+ $element.trigger( 'scrollToTop' );
+ }
+} );
+
+/* Setup the IFrame */
+context.fn.setupIframe();
+
+} } )( jQuery );
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.js b/extensions/WikiEditor/modules/jquery.wikiEditor.js
new file mode 100644
index 00000000..1f3d1fa5
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.js
@@ -0,0 +1,559 @@
+/**
+ * This plugin provides a way to build a wiki-text editing user interface around a textarea.
+ *
+ * @example To intialize without any modules:
+ * $( 'div#edittoolbar' ).wikiEditor();
+ *
+ * @example To initialize with one or more modules, or to add modules after it's already been initialized:
+ * $( 'textarea#wpTextbox1' ).wikiEditor( 'addModule', 'toolbar', { ... config ... } );
+ *
+ */
+( function( $ ) {
+
+/**
+ * Global static object for wikiEditor that provides generally useful functionality to all modules and contexts.
+ */
+$.wikiEditor = {
+ /**
+ * For each module that is loaded, static code shared by all instances is loaded into this object organized by
+ * module name. The existance of a module in this object only indicates the module is available. To check if a
+ * module is in use by a specific context check the context.modules object.
+ */
+ 'modules': {},
+ /**
+ * A context can be extended, such as adding iframe support, on a per-wikiEditor instance basis.
+ */
+ 'extensions': {},
+ /**
+ * In some cases like with the iframe's HTML file, it's convienent to have a lookup table of all instances of the
+ * WikiEditor. Each context contains an instance field which contains a key that corrosponds to a reference to the
+ * textarea which the WikiEditor was build around. This way, by passing a simple integer you can provide a way back
+ * to a specific context.
+ */
+ 'instances': [],
+ /**
+ * For each browser name, an array of conditions that must be met are supplied in [operaton, value]-form where
+ * operation is a string containing a JavaScript compatible binary operator and value is either a number to be
+ * compared with $.browser.versionNumber or a string to be compared with $.browser.version. If a browser is not
+ * specifically mentioned, we just assume things will work.
+ */
+ 'browsers': {
+ // Left-to-right languages
+ 'ltr': {
+ // The toolbar layout is broken in IE6
+ 'msie': [['>=', 7]],
+ // Layout issues in FF < 2
+ 'firefox': [['>=', 2]],
+ // Text selection bugs galore - this may be a different situation with the new iframe-based solution
+ 'opera': [['>=', 9.6]],
+ // jQuery minimums
+ 'safari': [['>=', 3]],
+ 'chrome': [['>=', 3]],
+ 'netscape': [['>=', 9]],
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false
+ },
+ // Right-to-left languages
+ 'rtl': {
+ // The toolbar layout is broken in IE 7 in RTL mode, and IE6 in any mode
+ 'msie': [['>=', 8]],
+ // Layout issues in FF < 2
+ 'firefox': [['>=', 2]],
+ // Text selection bugs galore - this may be a different situation with the new iframe-based solution
+ 'opera': [['>=', 9.6]],
+ // jQuery minimums
+ 'safari': [['>=', 3]],
+ 'chrome': [['>=', 3]],
+ 'netscape': [['>=', 9]],
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false
+ }
+ },
+ /**
+ * Path to images - this is a bit messy, and it would need to change if this code (and images) gets moved into the
+ * core - or anywhere for that matter...
+ */
+ 'imgPath' : mw.config.get( 'wgExtensionAssetsPath' ) + '/WikiEditor/modules/images/',
+ /**
+ * Checks the current browser against the browsers object to determine if the browser has been black-listed or not.
+ * Because these rules are often very complex, the object contains configurable operators and can check against
+ * either the browser version number or string. This process also involves checking if the current browser is amung
+ * those which we have configured as compatible or not. If the browser was not configured as comptible we just go on
+ * assuming things will work - the argument here is to prevent the need to update the code when a new browser comes
+ * to market. The assumption here is that any new browser will be built on an existing engine or be otherwise so
+ * similar to another existing browser that things actually do work as expected. The merrits of this argument, which
+ * is essentially to blacklist rather than whitelist are debateable, but at this point we've decided it's the more
+ * "open-web" way to go.
+ * @param module Module object, defaults to $.wikiEditor
+ */
+ 'isSupported': function( module ) {
+ // Fallback to the wikiEditor browser map if no special map is provided in the module
+ var mod = module && 'browsers' in module ? module : $.wikiEditor;
+ // Check for and make use of cached value and early opportunities to bail
+ if ( typeof mod.supported !== 'undefined' ) {
+ // Cache hit
+ return mod.supported;
+ }
+ // Run a browser support test and then cache and return the result
+ return mod.supported = $.client.test( mod.browsers );
+ },
+ /**
+ * Checks if a module has a specific requirement
+ * @param module Module object
+ * @param requirement String identifying requirement
+ */
+ 'isRequired': function( module, requirement ) {
+ if ( typeof module['req'] !== 'undefined' ) {
+ for ( var req in module['req'] ) {
+ if ( module['req'][req] == requirement ) {
+ return true;
+ }
+ }
+ }
+ return false;
+ },
+ /**
+ * Provides a way to extract messages from objects. Wraps the mediaWiki.msg() function, which
+ * may eventually become a wrapper for some kind of core MW functionality.
+ *
+ * @param object Object to extract messages from
+ * @param property String of name of property which contains the message. This should be the base name of the
+ * property, which means that in the case of the object { this: 'that', fooMsg: 'bar' }, passing property as 'this'
+ * would return the raw text 'that', while passing property as 'foo' would return the internationalized message
+ * with the key 'bar'.
+ */
+ 'autoMsg': function( object, property ) {
+ // Accept array of possible properties, of which the first one found will be used
+ if ( typeof property == 'object' ) {
+ for ( var i in property ) {
+ if ( property[i] in object || property[i] + 'Msg' in object ) {
+ property = property[i];
+ break;
+ }
+ }
+ }
+ if ( property in object ) {
+ return object[property];
+ } else if ( property + 'Msg' in object ) {
+ var p = object[property + 'Msg'];
+ if ( $.isArray( p ) && p.length >= 2 ) {
+ return mediaWiki.msg.apply( mediaWiki.msg, p );
+ } else {
+ return mediaWiki.msg( p );
+ }
+ } else {
+ return '';
+ }
+ },
+ /**
+ * Provides a way to extract a property of an object in a certain language, falling back on the property keyed as
+ * 'default' or 'default-rtl'. If such key doesn't exist, the object itself is considered the actual value, which
+ * should ideally be the case so that you may use a string or object of any number of strings keyed by language
+ * with a default.
+ *
+ * @param object Object to extract property from
+ * @param lang Language code, defaults to wgUserLanguage
+ */
+ 'autoLang': function( object, lang ) {
+ var defaultKey = $( 'body' ).hasClass( 'rtl' ) ? 'default-rtl' : 'default';
+ return object[lang || mw.config.get( 'wgUserLanguage' )] || object[defaultKey] || object['default'] || object;
+ },
+ /**
+ * Provides a way to extract the path of an icon in a certain language, automatically appending a version number for
+ * caching purposes and prepending an image path when icon paths are relative.
+ *
+ * @param icon Icon object from e.g. toolbar config
+ * @param path Default icon path, defaults to $.wikiEditor.imgPath
+ * @param lang Language code, defaults to wgUserLanguage
+ */
+ 'autoIcon': function( icon, path, lang ) {
+ var src = $.wikiEditor.autoLang( icon, lang );
+ path = path || $.wikiEditor.imgPath;
+ // Prepend path if src is not absolute
+ if ( src.substr( 0, 7 ) != 'http://' && src.substr( 0, 8 ) != 'https://' && src[0] != '/' ) {
+ src = path + src;
+ }
+ return src + '?' + mw.loader.version( 'jquery.wikiEditor' );
+ },
+ /**
+ * Get the sprite offset for a language if available, icon for a language if available, or the default offset or icon,
+ * in that order of preference.
+ * @param icon Icon object, see autoIcon()
+ * @param offset Offset object
+ * @param path Icon path, see autoIcon()
+ * @param lang Language code, defaults to wgUserLanguage
+ */
+ 'autoIconOrOffset': function( icon, offset, path, lang ) {
+ lang = lang || mw.config.get( 'wgUserLanguage' );
+ if ( typeof offset == 'object' && lang in offset ) {
+ return offset[lang];
+ } else if ( typeof icon == 'object' && lang in icon ) {
+ return $.wikiEditor.autoIcon( icon, undefined, lang );
+ } else {
+ return $.wikiEditor.autoLang( offset, lang );
+ }
+ }
+};
+
+/**
+ * jQuery plugin that provides a way to initialize a wikiEditor instance on a textarea.
+ */
+$.fn.wikiEditor = function() {
+
+// Skip any further work when running in browsers that are unsupported
+if ( !$.wikiEditor.isSupported() ) {
+ return $(this);
+}
+
+/* Initialization */
+
+// The wikiEditor context is stored in the element's data, so when this function gets called again we can pick up right
+// where we left off
+var context = $(this).data( 'wikiEditor-context' );
+// On first call, we need to set things up, but on all following calls we can skip right to the API handling
+if ( !context || typeof context == 'undefined' ) {
+
+ // Star filling the context with useful data - any jQuery selections, as usual should be named with a preceding $
+ context = {
+ // Reference to the textarea element which the wikiEditor is being built around
+ '$textarea': $(this),
+ // Container for any number of mutually exclusive views that are accessible by tabs
+ 'views': {},
+ // Container for any number of module-specific data - only including data for modules in use on this context
+ 'modules': {},
+ // General place to shouve bits of data into
+ 'data': {},
+ // Unique numeric ID of this instance used both for looking up and differentiating instances of wikiEditor
+ 'instance': $.wikiEditor.instances.push( $(this) ) - 1,
+ // Array mapping elements in the textarea to character offsets
+ 'offsets': null,
+ // Cache for context.fn.htmlToText()
+ 'htmlToTextMap': {},
+ // The previous HTML of the iframe, stored to detect whether something really changed.
+ 'oldHTML': null,
+ // Same for delayedChange()
+ 'oldDelayedHTML': null,
+ // The previous selection of the iframe, stored to detect whether the selection has changed
+ 'oldDelayedSel': null,
+ // Saved selection state for IE
+ 'savedSelection': null,
+ // Stack of states in { html: [string] } form
+ 'history': [],
+ // Current history state position - this is number of steps backwards, so it's always -1 or less
+ 'historyPosition': -1,
+ /// The previous historyPosition, stored to detect if change events were due to an undo or redo action
+ 'oldDelayedHistoryPosition': -1,
+ // List of extensions active on this context
+ 'extensions': []
+ };
+
+ /*
+ * Externally Accessible API
+ *
+ * These are available using calls to $(selection).wikiEditor( call, data ) where selection is a jQuery selection
+ * of the textarea that the wikiEditor instance was built around.
+ */
+
+ context.api = {
+ /**
+ * Activates a module on a specific context with optional configuration data.
+ *
+ * @param data Either a string of the name of a module to add without any additional configuration parameters,
+ * or an object with members keyed with module names and valued with configuration objects.
+ */
+ 'addModule': function( context, data ) {
+ var modules = {};
+ if ( typeof data == 'string' ) {
+ modules[data] = {};
+ } else if ( typeof data == 'object' ) {
+ modules = data;
+ }
+ for ( var module in modules ) {
+ // Check for the existance of an available / supported module with a matching name and a create function
+ if ( typeof module == 'string' && typeof $.wikiEditor.modules[module] !== 'undefined' &&
+ $.wikiEditor.isSupported( $.wikiEditor.modules[module] ) )
+ {
+ // Extend the context's core API with this module's own API calls
+ if ( 'api' in $.wikiEditor.modules[module] ) {
+ for ( var call in $.wikiEditor.modules[module].api ) {
+ // Modules may not overwrite existing API functions - first come, first serve
+ if ( !( call in context.api ) ) {
+ context.api[call] = $.wikiEditor.modules[module].api[call];
+ }
+ }
+ }
+ // Activate the module on this context
+ if ( 'fn' in $.wikiEditor.modules[module] && 'create' in $.wikiEditor.modules[module].fn ) {
+ // Add a place for the module to put it's own stuff
+ context.modules[module] = {};
+ // Tell the module to create itself on the context
+ $.wikiEditor.modules[module].fn.create( context, modules[module] );
+ }
+ }
+ }
+ }
+ };
+
+ /*
+ * Event Handlers
+ *
+ * These act as filters returning false if the event should be ignored or returning true if it should be passed
+ * on to all modules. This is also where we can attach some extra information to the events.
+ */
+
+ context.evt = {
+ /* Empty until extensions add some; see jquery.wikiEditor.iframe.js for examples. */
+ };
+
+ /* Internal Functions */
+
+ context.fn = {
+ /**
+ * Executes core event filters as well as event handlers provided by modules.
+ */
+ 'trigger': function( name, event ) {
+ // Event is an optional argument, but from here on out, at least the type field should be dependable
+ if ( typeof event == 'undefined' ) {
+ event = { 'type': 'custom' };
+ }
+ // Ensure there's a place for extra information to live
+ if ( typeof event.data == 'undefined' ) {
+ event.data = {};
+ }
+
+ // Allow filtering to occur
+ if ( name in context.evt ) {
+ if ( !context.evt[name]( event ) ) {
+ return false;
+ }
+ }
+ var returnFromModules = null; //they return null by default
+ // Pass the event around to all modules activated on this context
+
+ for ( var module in context.modules ) {
+ if (
+ module in $.wikiEditor.modules &&
+ 'evt' in $.wikiEditor.modules[module] &&
+ name in $.wikiEditor.modules[module].evt
+ ) {
+ var ret = $.wikiEditor.modules[module].evt[name]( context, event );
+ if (ret != null) {
+ //if 1 returns false, the end result is false
+ if( returnFromModules == null ) {
+ returnFromModules = ret;
+ } else {
+ returnFromModules = returnFromModules && ret;
+ }
+ }
+ }
+ }
+ if ( returnFromModules != null ) {
+ return returnFromModules;
+ } else {
+ return true;
+ }
+ },
+ /**
+ * Adds a button to the UI
+ */
+ 'addButton': function( options ) {
+ // Ensure that buttons and tabs are visible
+ context.$controls.show();
+ context.$buttons.show();
+ return $( '<button />' )
+ .text( $.wikiEditor.autoMsg( options, 'caption' ) )
+ .click( options.action )
+ .appendTo( context.$buttons );
+ },
+ /**
+ * Adds a view to the UI, which is accessed using a set of tabs. Views are mutually exclusive and by default a
+ * wikitext view will be present. Only when more than one view exists will the tabs will be visible.
+ */
+ 'addView': function( options ) {
+ // Adds a tab
+ function addTab( options ) {
+ // Ensure that buttons and tabs are visible
+ context.$controls.show();
+ context.$tabs.show();
+ // Return the newly appended tab
+ return $( '<div></div>' )
+ .attr( 'rel', 'wikiEditor-ui-view-' + options.name )
+ .addClass( context.view == options.name ? 'current' : null )
+ .append( $( '<a></a>' )
+ .attr( 'href', '#' )
+ .mousedown( function() {
+ // No dragging!
+ return false;
+ } )
+ .click( function( event ) {
+ context.$ui.find( '.wikiEditor-ui-view' ).hide();
+ context.$ui.find( '.' + $(this).parent().attr( 'rel' ) ).show();
+ context.$tabs.find( 'div' ).removeClass( 'current' );
+ $(this).parent().addClass( 'current' );
+ $(this).blur();
+ if ( 'init' in options && typeof options.init == 'function' ) {
+ options.init( context );
+ }
+ event.preventDefault();
+ return false;
+ } )
+ .text( $.wikiEditor.autoMsg( options, 'title' ) )
+ )
+ .appendTo( context.$tabs );
+ }
+ // Automatically add the previously not-needed wikitext tab
+ if ( !context.$tabs.children().size() ) {
+ addTab( { 'name': 'wikitext', 'titleMsg': 'wikieditor-wikitext-tab' } );
+ }
+ // Add the tab for the view we were actually asked to add
+ addTab( options );
+ // Return newly appended view
+ return $( '<div></div>' )
+ .addClass( 'wikiEditor-ui-view wikiEditor-ui-view-' + options.name )
+ .hide()
+ .appendTo( context.$ui );
+ },
+ /**
+ * Save scrollTop and cursor position for IE
+ */
+ 'saveCursorAndScrollTop': function() {
+ if ( $.client.profile().name === 'msie' ) {
+ var IHateIE = {
+ 'scrollTop' : context.$textarea.scrollTop(),
+ 'pos': context.$textarea.textSelection( 'getCaretPosition', { startAndEnd: true } )
+ };
+ context.$textarea.data( 'IHateIE', IHateIE );
+ }
+ },
+ /**
+ * Restore scrollTo and cursor position for IE
+ */
+ 'restoreCursorAndScrollTop': function() {
+ if ( $.client.profile().name === 'msie' ) {
+ var IHateIE = context.$textarea.data( 'IHateIE' );
+ if ( IHateIE ) {
+ context.$textarea.scrollTop( IHateIE.scrollTop );
+ context.$textarea.textSelection( 'setSelection', { start: IHateIE.pos[0], end: IHateIE.pos[1] } );
+ context.$textarea.data( 'IHateIE', null );
+ }
+ }
+ },
+ /**
+ * Save text selection for IE
+ */
+ 'saveSelection': function() {
+ if ( $.client.profile().name === 'msie' ) {
+ context.$textarea.focus();
+ context.savedSelection = document.selection.createRange();
+ }
+ },
+ /**
+ * Restore text selection for IE
+ */
+ 'restoreSelection': function() {
+ if ( $.client.profile().name === 'msie' && context.savedSelection !== null ) {
+ context.$textarea.focus();
+ context.savedSelection.select();
+ context.savedSelection = null;
+ }
+ }
+ };
+
+ /*
+ * Base UI Construction
+ *
+ * The UI is built from several containers, the outer-most being a div classed as "wikiEditor-ui". These containers
+ * provide a certain amount of "free" layout, but in some situations procedural layout is needed, which is performed
+ * as a response to the "resize" event.
+ */
+
+ // Assemble a temporary div to place over the wikiEditor while it's being constructed
+ /* Disabling our loading div for now
+ var $loader = $( '<div></div>' )
+ .addClass( 'wikiEditor-ui-loading' )
+ .append( $( '<span>' + mediaWiki.msg( 'wikieditor-loading' ) + '</span>' )
+ .css( 'marginTop', context.$textarea.height() / 2 ) );
+ */
+ // Encapsulate the textarea with some containers for layout
+ context.$textarea
+ /* Disabling our loading div for now
+ .after( $loader )
+ .add( $loader )
+ */
+ .wrapAll( $( '<div></div>' ).addClass( 'wikiEditor-ui' ) )
+ .wrapAll( $( '<div></div>' ).addClass( 'wikiEditor-ui-view wikiEditor-ui-view-wikitext' ) )
+ .wrapAll( $( '<div></div>' ).addClass( 'wikiEditor-ui-left' ) )
+ .wrapAll( $( '<div></div>' ).addClass( 'wikiEditor-ui-bottom' ) )
+ .wrapAll( $( '<div></div>' ).addClass( 'wikiEditor-ui-text' ) );
+ // Get references to some of the newly created containers
+ context.$ui = context.$textarea.parent().parent().parent().parent().parent();
+ context.$wikitext = context.$textarea.parent().parent().parent().parent();
+ // Add in tab and button containers
+ context.$wikitext
+ .before(
+ $( '<div></div>' ).addClass( 'wikiEditor-ui-controls' )
+ .append( $( '<div></div>' ).addClass( 'wikiEditor-ui-tabs' ).hide() )
+ .append( $( '<div></div>' ).addClass( 'wikiEditor-ui-buttons' ) )
+ )
+ .before( $( '<div style="clear:both;"></div>' ) );
+ // Get references to some of the newly created containers
+ context.$controls = context.$ui.find( '.wikiEditor-ui-buttons' ).hide();
+ context.$buttons = context.$ui.find( '.wikiEditor-ui-buttons' );
+ context.$tabs = context.$ui.find( '.wikiEditor-ui-tabs' );
+ // Clear all floating after the UI
+ context.$ui.after( $( '<div style="clear:both;"></div>' ) );
+ // Attach a right container
+ context.$wikitext.append( $( '<div></div>' ).addClass( 'wikiEditor-ui-right' ) );
+ // Attach a top container to the left pane
+ context.$wikitext.find( '.wikiEditor-ui-left' ).prepend( $( '<div></div>' ).addClass( 'wikiEditor-ui-top' ) );
+ // Setup the intial view
+ context.view = 'wikitext';
+ // Trigger the "resize" event anytime the window is resized
+ $( window ).resize( function( event ) { context.fn.trigger( 'resize', event ); } );
+}
+
+/* API Execution */
+
+// Since javascript gives arguments as an object, we need to convert them so they can be used more easily
+var args = $.makeArray( arguments );
+
+// Dynamically setup core extensions for modules that are required
+if ( args[0] == 'addModule' && typeof args[1] != 'undefined' ) {
+ var modules = args[1];
+ if ( typeof modules != "object" ) {
+ modules = {};
+ modules[args[1]] = '';
+ }
+ for ( var module in modules ) {
+ // Only allow modules which are supported (and thus actually being turned on) affect the decision to extend
+ if ( module in $.wikiEditor.modules && $.wikiEditor.isSupported( $.wikiEditor.modules[module] ) ) {
+ // Activate all required core extensions on context
+ for ( var e in $.wikiEditor.extensions ) {
+ if (
+ $.wikiEditor.isRequired( $.wikiEditor.modules[module], e ) &&
+ $.inArray( e, context.extensions ) === -1
+ ) {
+ context.extensions[context.extensions.length] = e;
+ $.wikiEditor.extensions[e]( context );
+ }
+ }
+ break;
+ }
+ }
+}
+
+// There would need to be some arguments if the API is being called
+if ( args.length > 0 ) {
+ // Handle API calls
+ var call = args.shift();
+ if ( call in context.api ) {
+ context.api[call]( context, typeof args[0] == 'undefined' ? {} : args[0] );
+ }
+}
+
+// Store the context for next time, and support chaining
+return $(this).data( 'wikiEditor-context', context );
+
+}; } )( jQuery );
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.preview.css b/extensions/WikiEditor/modules/jquery.wikiEditor.preview.css
new file mode 100644
index 00000000..7eb455b5
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.preview.css
@@ -0,0 +1,26 @@
+/*
+ * CSS for WikiEditor Preview jQuery plugin
+ */
+
+.wikiEditor-preview-loading {
+ padding: 1em;
+ background-color: white;
+}
+.wikiEditor-preview-loading span {
+ color: #666666;
+}
+.wikiEditor-preview-spinner {
+ padding-right: 1em;
+}
+.wikiEditor-preview-contents {
+ padding: 1em;
+ background-color: white;
+}
+/* FIXME: This only works for the first wikiEditor on the page! */
+#wikiEditor-0-preview-dialog .wikiEditor-ui-loading {
+ overflow: hidden;
+ border: none;
+}
+.ui-dialog .ui-dialog-buttonpane {
+ margin: 0 !important;
+} \ No newline at end of file
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.preview.js b/extensions/WikiEditor/modules/jquery.wikiEditor.preview.js
new file mode 100644
index 00000000..634672a8
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.preview.js
@@ -0,0 +1,164 @@
+/* Preview module for wikiEditor */
+( function( $ ) { $.wikiEditor.modules.preview = {
+
+/**
+ * Compatability map
+ */
+'browsers': {
+ // Left-to-right languages
+ 'ltr': {
+ 'msie': [['>=', 7]],
+ 'firefox': [['>=', 3]],
+ 'opera': [['>=', 9.6]],
+ 'safari': [['>=', 4]]
+ },
+ // Right-to-left languages
+ 'rtl': {
+ 'msie': [['>=', 8]],
+ 'firefox': [['>=', 3]],
+ 'opera': [['>=', 9.6]],
+ 'safari': [['>=', 4]]
+ }
+},
+/**
+ * Internally used functions
+ */
+fn: {
+ /**
+ * Creates a preview module within a wikiEditor
+ * @param context Context object of editor to create module in
+ * @param config Configuration object to create module from
+ */
+ create: function( context, config ) {
+ if ( 'initialized' in context.modules.preview ) {
+ return;
+ }
+ context.modules.preview = {
+ 'initialized': true,
+ 'previewText': null,
+ 'changesText': null
+ };
+ context.modules.preview.$preview = context.fn.addView( {
+ 'name': 'preview',
+ 'titleMsg': 'wikieditor-preview-tab',
+ 'init': function( context ) {
+ // Gets the latest copy of the wikitext
+ var wikitext = context.$textarea.textSelection( 'getContents' );
+ // Aborts when nothing has changed since the last preview
+ if ( context.modules.preview.previewText == wikitext ) {
+ return;
+ }
+ context.modules.preview.$preview.find( '.wikiEditor-preview-contents' ).empty();
+ context.modules.preview.$preview.find( '.wikiEditor-preview-loading' ).show();
+ $.post(
+ mw.util.wikiScript( 'api' ),
+ {
+ 'action': 'parse',
+ 'title': mw.config.get( 'wgPageName' ),
+ 'text': wikitext,
+ 'prop': 'text',
+ 'pst': '',
+ 'format': 'json'
+ },
+ function( data ) {
+ if (
+ typeof data.parse == 'undefined' ||
+ typeof data.parse.text == 'undefined' ||
+ typeof data.parse.text['*'] == 'undefined'
+ ) {
+ return;
+ }
+ context.modules.preview.previewText = wikitext;
+ context.modules.preview.$preview.find( '.wikiEditor-preview-loading' ).hide();
+ context.modules.preview.$preview.find( '.wikiEditor-preview-contents' )
+ .html( data.parse.text['*'] )
+ .find( 'a:not([href^=#])' ).click( function() { return false; } );
+ },
+ 'json'
+ );
+ }
+ } );
+
+ context.$changesTab = context.fn.addView( {
+ 'name': 'changes',
+ 'titleMsg': 'wikieditor-preview-changes-tab',
+ 'init': function( context ) {
+ // Gets the latest copy of the wikitext
+ var wikitext = context.$textarea.textSelection( 'getContents' );
+ // Aborts when nothing has changed since the last time
+ if ( context.modules.preview.changesText == wikitext ) {
+ return;
+ }
+ context.$changesTab.find( 'table.diff tbody' ).empty();
+ context.$changesTab.find( '.wikiEditor-preview-loading' ).show();
+
+ // Call the API. First PST the input, then diff it
+ var postdata = {
+ 'action': 'parse',
+ 'onlypst': '',
+ 'text': wikitext,
+ 'format': 'json'
+ };
+
+ $.post( mw.util.wikiScript( 'api' ), postdata, function( data ) {
+ try {
+ var postdata2 = {
+ 'action': 'query',
+ 'indexpageids': '',
+ 'prop': 'revisions',
+ 'titles': mw.config.get( 'wgPageName' ),
+ 'rvdifftotext': data.parse.text['*'],
+ 'rvprop': '',
+ 'format': 'json'
+ };
+ var section = $( '[name=wpSection]' ).val();
+ if ( section != '' )
+ postdata2['rvsection'] = section;
+
+ $.post( mw.util.wikiScript( 'api' ), postdata2, function( data ) {
+ // Add diff CSS
+ mw.loader.load( 'mediawiki.action.history.diff' );
+ try {
+ var diff = data.query.pages[data.query.pageids[0]]
+ .revisions[0].diff['*'];
+ context.$changesTab.find( 'table.diff tbody' )
+ .html( diff );
+ context.$changesTab
+ .find( '.wikiEditor-preview-loading' ).hide();
+ context.modules.preview.changesText = wikitext;
+ } catch ( e ) { } // "blah is undefined" error, ignore
+ }, 'json'
+ );
+ } catch( e ) { } // "blah is undefined" error, ignore
+ }, 'json' );
+ }
+ } );
+
+ var loadingMsg = mediaWiki.msg( 'wikieditor-preview-loading' );
+ context.modules.preview.$preview
+ .add( context.$changesTab )
+ .append( $( '<div />' )
+ .addClass( 'wikiEditor-preview-loading' )
+ .append( $( '<img />' )
+ .addClass( 'wikiEditor-preview-spinner' )
+ .attr( {
+ 'src': $.wikiEditor.imgPath + 'dialogs/loading.gif',
+ 'valign': 'absmiddle',
+ 'alt': loadingMsg,
+ 'title': loadingMsg
+ } )
+ )
+ .append(
+ $( '<span></span>' ).text( loadingMsg )
+ )
+ )
+ .append( $( '<div />' )
+ .addClass( 'wikiEditor-preview-contents' )
+ );
+ context.$changesTab.find( '.wikiEditor-preview-contents' )
+ .html( '<table class="diff"><col class="diff-marker" /><col class="diff-content" />' +
+ '<col class="diff-marker" /><col class="diff-content" /><tbody /></table>' );
+ }
+}
+
+}; } )( jQuery );
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.previewDialog.css b/extensions/WikiEditor/modules/jquery.wikiEditor.previewDialog.css
new file mode 100644
index 00000000..7a27f594
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.previewDialog.css
@@ -0,0 +1,35 @@
+/*
+ * CSS for WikiEditor Preview Dialog jQuery plugin
+ */
+
+/* FIXME: This only works for the first wikiEditor on the page! */
+#wikiEditor-0-preview-dialog .wikiEditor-ui-loading {
+ background: #f3f3f3;
+ z-index: 10;
+ position: absolute;
+ left: 0;
+ text-align: center;
+ height: 100%;
+ width: 100%;
+ overflow: hidden;
+ border: none;
+}
+/* FIXME: This only works for the first wikiEditor on the page! */
+#wikiEditor-0-preview-dialog .wikiEditor-ui-loading span {
+ display: block;
+ height: 24px;
+ width: 24px;
+ /* @embed */
+ background: url(images/toolbar/loading.gif) 0 0 no-repeat;
+ text-indent: -9999px;
+ margin: 50px auto;
+}
+.ui-dialog .ui-dialog-buttonpane {
+ margin: 0 !important;
+}
+.wikiEditor-preview-dialog-contents {
+ font-size: 0.9em !important;
+}
+.wikiEditor-preview-dialog-contents #firstHeading {
+ font-size: 2.1em;
+} \ No newline at end of file
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.previewDialog.js b/extensions/WikiEditor/modules/jquery.wikiEditor.previewDialog.js
new file mode 100644
index 00000000..72003055
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.previewDialog.js
@@ -0,0 +1,131 @@
+/* Publish module for wikiEditor */
+( function( $ ) { $.wikiEditor.modules.previewDialog = {
+
+/**
+ * Compatability map
+ */
+'browsers': {
+ // Left-to-right languages
+ 'ltr': {
+ 'msie': [['>=', 7]],
+ 'firefox': [['>=', 3]],
+ 'opera': [['>=', 9.6]],
+ 'safari': [['>=', 4]]
+ },
+ // Right-to-left languages
+ 'rtl': {
+ 'msie': [['>=', 8]],
+ 'firefox': [['>=', 3]],
+ 'opera': [['>=', 9.6]],
+ 'safari': [['>=', 4]]
+ }
+},
+/**
+ * Internally used functions
+ */
+fn: {
+ /**
+ * Creates a publish module within a wikiEditor
+ * @param context Context object of editor to create module in
+ * @param config Configuration object to create module from
+ */
+ create: function( context, config ) {
+ // Build the dialog behind the Publish button
+ var dialogID = 'wikiEditor-' + context.instance + '-preview-dialog';
+ $.wikiEditor.modules.dialogs.fn.create(
+ context,
+ {
+ preview: {
+ id: dialogID,
+ titleMsg: 'wikieditor-preview-tab',
+ html: '\
+ <div class="wikiEditor-ui-loading"><span></span></div>\
+ <div class="wikiEditor-preview-dialog-contents"></div>\
+ ',
+ init: function() {
+ },
+ dialog: {
+ buttons: {
+ 'wikieditor-publish-dialog-publish': function() {
+ var minorChecked = $( '#wikiEditor-' + context.instance +
+ '-dialog-minor' ).is( ':checked' ) ?
+ 'checked' : '';
+ var watchChecked = $( '#wikiEditor-' + context.instance +
+ '-dialog-watch' ).is( ':checked' ) ?
+ 'checked' : '';
+ $( '#wpMinoredit' ).attr( 'checked', minorChecked );
+ $( '#wpWatchthis' ).attr( 'checked', watchChecked );
+ $( '#wpSummary' ).val( $( '#wikiEditor-' + context.instance +
+ '-dialog-summary' ).val() );
+ $( '#editform' ).submit();
+ },
+ 'wikieditor-publish-dialog-goback': function() {
+ $(this).dialog( 'close' );
+ }
+ },
+ resizable: false,
+ height: $( 'body' ).height() - 100,
+ width: $( 'body' ).width() - 300,
+ position: ['center', 'top'],
+ open: function() {
+ // Gets the latest copy of the wikitext
+ var wikitext = context.fn.getContents();
+ var $dialog = $( '#' + dialogID );
+ $dialog
+ .css( 'position', 'relative' )
+ .css( 'height', $( 'body' ).height() - 200 )
+ .parent()
+ .css( 'top', '25px' );
+ // $dialog.dialog( 'option', 'width', $( 'body' ).width() - 300 );
+ // Aborts when nothing has changed since the last preview
+ if ( context.modules.preview.previewText == wikitext ) {
+ return;
+ }
+
+ $dialog.find( '.wikiEditor-preview-dialog-contents' ).empty();
+ $dialog.find( '.wikiEditor-ui-loading' ).show();
+ $.post(
+ mw.util.wikiScript( 'api' ),
+ {
+ 'action': 'parse',
+ 'title': mw.config.get( 'wgPageName' ),
+ 'text': wikitext,
+ 'prop': 'text',
+ 'pst': '',
+ 'format': 'json'
+ },
+ function( data ) {
+ if (
+ typeof data.parse == 'undefined' ||
+ typeof data.parse.text == 'undefined' ||
+ typeof data.parse.text['*'] == 'undefined'
+ ) {
+ return;
+ }
+ context.modules.preview.previewText = wikitext;
+ $dialog.find( '.wikiEditor-ui-loading' ).hide();
+ $dialog.find( '.wikiEditor-preview-dialog-contents' )
+ .html( '<h1 class="firstHeading" id="firstHeading">' +
+ mw.config.get( 'wgTitle' ) + '</h1>' +
+ data.parse.text['*'] )
+ .find( 'a:not([href^=#])' ).click( function() { return false; } );
+ },
+ 'json'
+ );
+ }
+ },
+ resizeme: false
+ }
+ }
+ );
+ context.fn.addButton( {
+ 'captionMsg': 'wikieditor-preview-tab',
+ 'action': function() {
+ context.$textarea.wikiEditor( 'openDialog', 'preview');
+ return false;
+ }
+ } );
+ }
+}
+
+}; } )( jQuery );
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js b/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js
new file mode 100644
index 00000000..5a758e43
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.publish.js
@@ -0,0 +1,146 @@
+/* Publish module for wikiEditor */
+( function( $ ) { $.wikiEditor.modules.publish = {
+
+/**
+ * Compatability map
+ */
+'browsers': {
+ // Left-to-right languages
+ 'ltr': {
+ 'msie': [['>=', 7]],
+ 'firefox': [['>=', 3]],
+ 'opera': [['>=', 9.6]],
+ 'safari': [['>=', 4]]
+ },
+ // Right-to-left languages
+ 'rtl': {
+ 'msie': [['>=', 8]],
+ 'firefox': [['>=', 3]],
+ 'opera': [['>=', 9.6]],
+ 'safari': [['>=', 4]]
+ }
+},
+/**
+ * Internally used functions
+ */
+fn: {
+ /**
+ * Creates a publish module within a wikiEditor
+ * @param context Context object of editor to create module in
+ * @param config Configuration object to create module from
+ */
+ create: function( context, config ) {
+ // Build the dialog behind the Publish button
+ var dialogID = 'wikiEditor-' + context.instance + '-dialog';
+ $.wikiEditor.modules.dialogs.fn.create(
+ context,
+ {
+ previewsave: {
+ id: dialogID,
+ titleMsg: 'wikieditor-publish-dialog-title',
+ html: '\
+ <div class="wikiEditor-publish-dialog-copywarn"></div>\
+ <div class="wikiEditor-publish-dialog-editoptions">\
+ <form id="wikieditor-' + context.instance + '-publish-dialog-form">\
+ <div class="wikiEditor-publish-dialog-summary">\
+ <label for="wikiEditor-' + context.instance + '-dialog-summary"\
+ rel="wikieditor-publish-dialog-summary"></label>\
+ <br />\
+ <input type="text" id="wikiEditor-' + context.instance + '-dialog-summary"\
+ style="width: 100%;" />\
+ </div>\
+ <div class="wikiEditor-publish-dialog-options">\
+ <input type="checkbox"\
+ id="wikiEditor-' + context.instance + '-dialog-minor" />\
+ <label for="wikiEditor-' + context.instance + '-dialog-minor"\
+ rel="wikieditor-publish-dialog-minor"></label>\
+ <input type="checkbox"\
+ id="wikiEditor-' + context.instance + '-dialog-watch" />\
+ <label for="wikiEditor-' + context.instance + '-dialog-watch"\
+ rel="wikieditor-publish-dialog-watch"></label>\
+ </div>\
+ </form>\
+ </div>',
+ init: function() {
+ $(this).find( '[rel]' ).each( function() {
+ $(this).text( mediaWiki.msg( $(this).attr( 'rel' ) ) );
+ });
+
+ /* REALLY DIRTY HACK! */
+ // Reformat the copyright warning stuff
+ var copyWarnHTML = $( '#editpage-copywarn p' ).html();
+ // TODO: internationalize by splitting on other characters that end statements
+ var copyWarnStatements = copyWarnHTML.split( '. ' );
+ var newCopyWarnHTML = '<ul>';
+ for ( var i = 0; i < copyWarnStatements.length; i++ ) {
+ if ( copyWarnStatements[i] != '' ) {
+ var copyWarnStatement = $.trim( copyWarnStatements[i] ).replace( /\.*$/, '' );
+ newCopyWarnHTML += '<li>' + copyWarnStatement + '.</li>';
+ }
+ }
+ newCopyWarnHTML += '</ul>';
+ // No list if there's only one element
+ $(this).find( '.wikiEditor-publish-dialog-copywarn' ).html(
+ copyWarnStatements.length > 1 ? newCopyWarnHTML : copyWarnHTML
+ );
+ /* END OF REALLY DIRTY HACK */
+
+ if ( $( '#wpMinoredit' ).size() == 0 )
+ $( '#wikiEditor-' + context.instance + '-dialog-minor' ).hide();
+ else if ( $( '#wpMinoredit' ).is( ':checked' ) )
+ $( '#wikiEditor-' + context.instance + '-dialog-minor' )
+ .attr( 'checked', 'checked' );
+ if ( $( '#wpWatchthis' ).size() == 0 )
+ $( '#wikiEditor-' + context.instance + '-dialog-watch' ).hide();
+ else if ( $( '#wpWatchthis' ).is( ':checked' ) )
+ $( '#wikiEditor-' + context.instance + '-dialog-watch' )
+ .attr( 'checked', 'checked' );
+
+ $(this).find( 'form' ).submit( function( e ) {
+ $(this).closest( '.ui-dialog' ).find( 'button:first' ).click();
+ e.preventDefault();
+ });
+ },
+ dialog: {
+ buttons: {
+ 'wikieditor-publish-dialog-publish': function() {
+ var minorChecked = $( '#wikiEditor-' + context.instance +
+ '-dialog-minor' ).is( ':checked' ) ?
+ 'checked' : '';
+ var watchChecked = $( '#wikiEditor-' + context.instance +
+ '-dialog-watch' ).is( ':checked' ) ?
+ 'checked' : '';
+ $( '#wpMinoredit' ).attr( 'checked', minorChecked );
+ $( '#wpWatchthis' ).attr( 'checked', watchChecked );
+ $( '#wpSummary' ).val( $( '#wikiEditor-' + context.instance +
+ '-dialog-summary' ).val() );
+ $( '#editform' ).submit();
+ },
+ 'wikieditor-publish-dialog-goback': function() {
+ $(this).dialog( 'close' );
+ }
+ },
+ open: function() {
+ $( '#wikiEditor-' + context.instance + '-dialog-summary' ).focus();
+ },
+ width: 500
+ },
+ resizeme: false
+ }
+ }
+ );
+ context.fn.addButton( {
+ 'captionMsg': 'wikieditor-publish-button-publish',
+ 'action': function() {
+ $( '#' + dialogID ).dialog( 'open' );
+ return false;
+ }
+ } );
+ context.fn.addButton( {
+ 'captionMsg': 'wikieditor-publish-button-cancel',
+ 'action': function() { }
+ } );
+ }
+}
+
+}; } )( jQuery );
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js b/extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js
new file mode 100644
index 00000000..794bddc7
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.templateEditor.js
@@ -0,0 +1,865 @@
+/* TemplateEditor module for wikiEditor */
+( function( $ ) { $.wikiEditor.modules.templateEditor = {
+/**
+ * Name mappings, dirty hack which will be removed once "TemplateInfo" extension is more fully supported
+ */
+'nameMappings': { //keep these all lowercase to navigate web of redirects
+ "infobox skyscraper": "building_name",
+ "infobox settlement": "official_name"
+},
+
+
+/**
+ * Compatability map
+ */
+'browsers': {
+ // Left-to-right languages
+ 'ltr': {
+ 'msie': [['>=', 8]],
+ 'firefox': [['>=', 3]],
+ 'opera': [['>=', 10]],
+ 'safari': [['>=', 4]]
+ },
+ // Right-to-left languages
+ 'rtl': {
+ 'msie': false,
+ 'firefox': [['>=', 3]],
+ 'opera': [['>=', 10]],
+ 'safari': [['>=', 4]]
+ }
+},
+/**
+ * Core Requirements
+ */
+'req': [ 'iframe' ],
+/**
+ * Event handlers
+ */
+evt: {
+
+ mark: function( context, event ) {
+ // The markers returned by this function are skipped on realchange, so don't regenerate them in that case
+ if ( context.modules.highlight.currentScope == 'realchange' ) {
+ return;
+ }
+
+ // Get references to the markers and tokens from the current context
+ var markers = context.modules.highlight.markers;
+ var tokenArray = context.modules.highlight.tokenArray;
+ // Collect matching level 0 template call boundaries from the tokenArray
+ var level = 0;
+ var tokenIndex = 0;
+ while ( tokenIndex < tokenArray.length ){
+ while ( tokenIndex < tokenArray.length && tokenArray[tokenIndex].label != 'TEMPLATE_BEGIN' ) {
+ tokenIndex++;
+ }
+ //open template
+ if ( tokenIndex < tokenArray.length ) {
+ var beginIndex = tokenIndex;
+ var endIndex = -1; //no match found
+ var openTemplates = 1;
+ var templatesMatched = false;
+ while ( tokenIndex < tokenArray.length - 1 && endIndex == -1 ) {
+ tokenIndex++;
+ if ( tokenArray[tokenIndex].label == 'TEMPLATE_BEGIN' ) {
+ openTemplates++;
+ } else if ( tokenArray[tokenIndex].label == 'TEMPLATE_END' ) {
+ openTemplates--;
+ if ( openTemplates == 0 ) {
+ endIndex = tokenIndex;
+ } //we can stop looping
+ }
+ }//while finding template ending
+ if ( endIndex != -1 ) {
+ markers.push( {
+ start: tokenArray[beginIndex].offset,
+ end: tokenArray[endIndex].offset,
+ type: 'template',
+ anchor: 'wrap',
+ afterWrap: function( node ) {
+ // Generate model
+ var model = $.wikiEditor.modules.templateEditor.fn.updateModel( $( node ) );
+ if ( model.isCollapsible() ) {
+ $.wikiEditor.modules.templateEditor.fn.wrapTemplate( $( node ) );
+ $.wikiEditor.modules.templateEditor.fn.bindTemplateEvents( $( node ) );
+ } else {
+ $( node ).addClass( 'wikiEditor-template-text' );
+ }
+ },
+ beforeUnwrap: function( node ) {
+ if ( $( node ).parent().hasClass( 'wikiEditor-template' ) ) {
+ $.wikiEditor.modules.templateEditor.fn.unwrapTemplate( $( node ) );
+ }
+ },
+ onSkip: function( node ) {
+ if ( $( node ).html() == $( node ).data( 'oldHTML' ) ) {
+ // No change
+ return;
+ }
+
+ // Text changed, regenerate model
+ var model = $.wikiEditor.modules.templateEditor.fn.updateModel( $( node ) );
+
+ // Update template name if needed
+ if ( $( node ).parent().hasClass( 'wikiEditor-template' ) ) {
+ var $label = $( node ).parent().find( '.wikiEditor-template-label' );
+ var displayName = $.wikiEditor.modules.templateEditor.fn.getTemplateDisplayName( model );
+ if ( $label.text() != displayName ) {
+ $label.text( displayName );
+ }
+ }
+
+ // Wrap or unwrap the template if needed
+ if ( $( node ).parent().hasClass( 'wikiEditor-template' ) &&
+ !model.isCollapsible() ) {
+ $.wikiEditor.modules.templateEditor.fn.unwrapTemplate( $( node ) );
+ } else if ( !$( node ).parent().hasClass( 'wikiEditor-template' ) &&
+ model.isCollapsible() ) {
+ $.wikiEditor.modules.templateEditor.fn.wrapTemplate( $( node ) );
+ $.wikiEditor.modules.templateEditor.fn.bindTemplateEvents( $( node ) );
+ }
+ },
+ getAnchor: function( ca1, ca2 ) {
+ return $( ca1.parentNode ).is( 'span.wikiEditor-template-text' ) ?
+ ca1.parentNode : null;
+ },
+ context: context,
+ skipDivision: 'realchange'
+ } );
+ } else { //else this was an unmatched opening
+ tokenArray[beginIndex].label = 'TEMPLATE_FALSE_BEGIN';
+ tokenIndex = beginIndex;
+ }
+ }//if opentemplates
+ }
+ }, //mark
+
+ keydown: function( context, event ) {
+ // Reset our ignoreKeypress variable if it's set to true
+ if ( context.$iframe.data( 'ignoreKeypress' ) ) {
+ context.$iframe.data( 'ignoreKeypress', false );
+ }
+ var $evtElem = event.jQueryNode;
+ if ( $evtElem.hasClass( 'wikiEditor-template-label' ) ) {
+ // Allow anything if the command or control key are depressed
+ if ( event.ctrlKey || event.metaKey ) return true;
+ switch ( event.which ) {
+ case 13: // Enter
+ $evtElem.click();
+ event.preventDefault();
+ return false;
+ case 32: // Space
+ $evtElem.parent().siblings( '.wikiEditor-template-expand' ).click();
+ event.preventDefault();
+ return false;
+ case 37:// Left
+ case 38:// Up
+ case 39:// Right
+ case 40: //Down
+ return true;
+ default:
+ // Set the ignroreKeypress variable so we don't allow typing if the key is held
+ context.$iframe.data( 'ignoreKeypress', true );
+ // Can't type in a template name
+ event.preventDefault();
+ return false;
+ }
+ } else if ( $evtElem.hasClass( 'wikiEditor-template-text' ) ) {
+ switch ( event.which ) {
+ case 13: // Enter
+ // Ensure that the user can't break this by holding in the enter key
+ context.$iframe.data( 'ignoreKeypress', true );
+ // FIXME: May be a more elegant way to do this, but this works too
+ context.fn.encapsulateSelection( { 'pre': '\n', 'peri': '', 'post': '' } );
+ event.preventDefault();
+ return false;
+ default: return true;
+ }
+ }
+ },
+ keyup: function( context, event ) {
+ // Rest our ignoreKeypress variable if it's set to true
+ if ( context.$iframe.data( 'ignoreKeypress' ) ) {
+ context.$iframe.data( 'ignoreKeypress', false );
+ }
+ return true;
+ },
+ keypress: function( context, event ) {
+ // If this event is from a keydown event which we want to block, ignore it
+ return ( context.$iframe.data( 'ignoreKeypress' ) ? false : true );
+ }
+},
+/**
+ * Regular expressions that produce tokens
+ */
+exp: [
+ { 'regex': /{{/, 'label': "TEMPLATE_BEGIN" },
+ { 'regex': /}}/, 'label': "TEMPLATE_END", 'markAfter': true }
+],
+/**
+ * Configuration
+ */
+cfg: {
+},
+/**
+ * Internally used functions
+ */
+fn: {
+ /**
+ * Creates template form module within wikieditor
+ * @param context Context object of editor to create module in
+ * @param config Configuration object to create module from
+ */
+ create: function( context, config ) {
+ // Initialize module within the context
+ context.modules.templateEditor = {};
+ },
+ /**
+ * Turns a simple template wrapper (really just a <span>) into a complex one
+ * @param $wrapper Wrapping <span>
+ */
+ wrapTemplate: function( $wrapper ) {
+ var model = $wrapper.data( 'model' );
+ var context = $wrapper.data( 'marker' ).context;
+ var $template = $wrapper
+ .wrap( '<span class="wikiEditor-template"></span>' )
+ .addClass( 'wikiEditor-template-text wikiEditor-template-text-shrunken' )
+ .parent()
+ .addClass( 'wikiEditor-template-collapsed' )
+ .prepend(
+ '<span class="wikiEditor-template-expand wikiEditor-noinclude"></span>' +
+ '<span class="wikiEditor-template-name wikiEditor-noinclude">' +
+ '<span class="wikiEditor-template-label wikiEditor-noinclude">' +
+ $.wikiEditor.modules.templateEditor.fn.getTemplateDisplayName( model ) + '</span>' +
+ '<span class="wikiEditor-template-dialog wikiEditor-noinclude"></span>' +
+ '</span>'
+ );
+ },
+ /**
+ * Turn a complex template wrapper back into a simple one
+ * @param $wrapper Wrapping <span>
+ */
+ unwrapTemplate: function( $wrapper ) {
+ $wrapper.parent().replaceWith( $wrapper );
+ },
+ /**
+ * Bind events to a template
+ * @param $wrapper Original wrapper for the template to bind events to
+ */
+ bindTemplateEvents: function( $wrapper ) {
+ var $template = $wrapper.parent( '.wikiEditor-template' );
+
+ if ( typeof ( opera ) == "undefined" ) {
+ $template.parent().attr('contentEditable', 'false');
+ }
+
+ $template.click( function(event) {event.preventDefault(); return false;} );
+
+ $template.find( '.wikiEditor-template-name' )
+ .click( function( event ) {
+ $.wikiEditor.modules.templateEditor.fn.createDialog( $wrapper );
+ event.stopPropagation();
+ return false;
+ } )
+ .mousedown( function( event ) { event.stopPropagation(); return false; } );
+ $template.find( '.wikiEditor-template-expand' )
+ .click( function( event ) {
+ $.wikiEditor.modules.templateEditor.fn.toggleWikiTextEditor( $wrapper );
+ event.stopPropagation();
+ return false;
+ } )
+ .mousedown( function( event ) { event.stopPropagation(); return false; } );
+ },
+ /**
+ * Toggle the visisbilty of the wikitext for a given template
+ * @param $wrapper The origianl wrapper we want expand/collapse
+ */
+ toggleWikiTextEditor: function( $wrapper ) {
+ var context = $wrapper.data( 'marker' ).context;
+ var $template = $wrapper.parent( '.wikiEditor-template' );
+ context.fn.purgeOffsets();
+ $template
+ .toggleClass( 'wikiEditor-template-expanded' )
+ .toggleClass( 'wikiEditor-template-collapsed' ) ;
+
+ var $templateText = $template.find( '.wikiEditor-template-text' );
+ $templateText.toggleClass( 'wikiEditor-template-text-shrunken' );
+ $templateText.toggleClass( 'wikiEditor-template-text-visible' );
+ if( $templateText.hasClass('wikiEditor-template-text-shrunken') ){
+ //we just closed the template
+
+ // Update the model if we need to
+ if ( $templateText.html() != $templateText.data( 'oldHTML' ) ) {
+ var templateModel = $.wikiEditor.modules.templateEditor.fn.updateModel( $templateText );
+
+ //this is the only place the template name can be changed; keep the template name in sync
+ var $tLabel = $template.find( '.wikiEditor-template-label' );
+ $tLabel.text( $.wikiEditor.modules.templateEditor.fn.getTemplateDisplayName( templateModel ) );
+ }
+
+ }
+ },
+ /**
+ * Create a dialog for editing a given template and open it
+ * @param $wrapper The origianl wrapper for which to create the dialog
+ */
+ createDialog: function( $wrapper ) {
+ var context = $wrapper.data( 'marker' ).context;
+ var $template = $wrapper.parent( '.wikiEditor-template' );
+ var dialog = {
+ 'titleMsg': 'wikieditor-template-editor-dialog-title',
+ 'id': 'wikiEditor-template-dialog',
+ 'html': '\
+ <fieldset>\
+ <div class="wikiEditor-template-dialog-title" />\
+ <div class="wikiEditor-template-dialog-fields" />\
+ </fieldset>',
+ init: function() {
+ $(this).find( '[rel]' ).each( function() {
+ $(this).text( mediaWiki.msg( $(this).attr( 'rel' ) ) );
+ } );
+ },
+ immediateCreate: true,
+ dialog: {
+ width: 600,
+ height: 400,
+ dialogClass: 'wikiEditor-toolbar-dialog',
+ buttons: {
+ 'wikieditor-template-editor-dialog-submit': function() {
+ // More user feedback
+ var $templateDiv = $( this ).data( 'templateDiv' );
+ context.fn.highlightLine( $templateDiv );
+
+ var $templateText = $templateDiv.children( '.wikiEditor-template-text' );
+ var templateModel = $templateText.data( 'model' );
+ $( this ).find( '.wikiEditor-template-dialog-field-wrapper textarea' ).each( function() {
+ // Update the value
+ templateModel.setValue( $( this ).data( 'name' ), $( this ).val() );
+ });
+ //keep text consistent
+ $.wikiEditor.modules.templateEditor.fn.updateModel( $templateText, templateModel );
+
+ $( this ).dialog( 'close' );
+ },
+ 'wikieditor-template-editor-dialog-cancel': function() {
+ $(this).dialog( 'close' );
+ }
+ },
+ open: function() {
+ var $templateDiv = $( this ).data( 'templateDiv' );
+ var $templateText = $templateDiv.children( '.wikiEditor-template-text' );
+ var templateModel = $templateText.data( 'model' );
+ // Update the model if we need to
+ if ( $templateText.html() != $templateText.data( 'oldHTML' ) ) {
+ templateModel = $.wikiEditor.modules.templateEditor.fn.updateModel( $templateText );
+ }
+
+ // Build the table
+ // TODO: Be smart and recycle existing table
+ var params = templateModel.getAllInitialParams();
+ var $fields = $( this ).find( '.wikiEditor-template-dialog-fields' );
+ // Do some bookkeeping so we can recycle existing rows
+ var $rows = $fields.find( '.wikiEditor-template-dialog-field-wrapper' );
+ for ( var paramIndex in params ) {
+ var param = params[paramIndex];
+ if ( typeof param.name == 'undefined' ) {
+ // param is the template name, skip it
+ continue;
+ }
+ var paramText = typeof param == 'string' ?
+ param.name.replace( /[\_\-]/g, ' ' ) :
+ param.name;
+ var paramVal = templateModel.getValue( param.name );
+ if ( $rows.length > 0 ) {
+ // We have another row to recycle
+ var $row = $rows.eq( 0 );
+ $row.children( 'label' ).text( paramText );
+ $row.children( 'textarea' )
+ .data( 'name', param.name )
+ .val( paramVal )
+ .each( function() {
+ $(this).css( 'height', $(this).val().length > 24 ? '4.5em' : '1.5em' );
+ } );
+ $rows = $rows.not( $row );
+ } else {
+ // Create a new row
+ var $paramRow = $( '<div />' )
+ .addClass( 'wikiEditor-template-dialog-field-wrapper' );
+ $( '<label />' )
+ .text( paramText )
+ .appendTo( $paramRow );
+ $( '<textarea />' )
+ .data( 'name', param.name )
+ .val( paramVal )
+ .each( function() {
+ $(this).css( 'height', $(this).val().length > 24 ? '4.5em' : '1.5em' );
+ } )
+ .data( 'expanded', false )
+ .bind( 'cut paste keypress click change', function( e ) {
+ // If this was fired by a tab keypress, let it go
+ if ( e.keyCode == '9' ) return true;
+ var $this = $( this );
+ setTimeout( function() {
+ var expanded = $this.data( 'expanded' );
+ if ( $this.val().indexOf( '\n' ) != -1 || $this.val().length > 24 ) {
+ if ( !expanded ) {
+ $this.animate( { 'height': '4.5em' }, 'fast' );
+ $this.data( 'expanded', true );
+ }
+ } else {
+ if ( expanded ) {
+ $this.animate( { 'height': '1.5em' }, 'fast' );
+ $this.data( 'expanded', false );
+ }
+ }
+ }, 0 );
+ } )
+ .appendTo( $paramRow );
+ $paramRow
+ .append( '<div style="clear:both"></div>' )
+ .appendTo( $fields );
+ }
+ }
+
+ // Remove any leftover rows
+ $rows.remove();
+ $fields.find( 'label' ).autoEllipsis();
+ // Ensure our close button doesn't recieve the ui-state-focus class
+ $( this ).parent( '.ui-dialog' ).find( '.ui-dialog-titlebar-close' )
+ .removeClass( 'ui-state-focus' );
+
+ // Set tabindexes on form fields if needed
+ // First unset the tabindexes on the buttons and existing form fields
+ // so the order doesn't get messed up
+ var $needTabindex = $( this ).closest( '.ui-dialog' ).find( 'button, textarea' );
+ if ( $needTabindex.not( '[tabindex]' ).length ) {
+ // Only do this if there actually are elements missing a tabindex
+ $needTabindex.removeAttr( 'tabindex' );
+ $.wikiEditor.modules.dialogs.fn.setTabindexes( $needTabindex );
+ }
+ }
+ }
+ };
+ // Lazy-create the dialog at this time
+ context.$textarea.wikiEditor( 'addDialog', { 'templateEditor': dialog } );
+ $( '#' + dialog.id )
+ .data( 'templateDiv', $template )
+ .dialog( 'open' );
+ },
+ /**
+ * Update a template's model and HTML
+ * @param $templateText Wrapper <span> containing the template text
+ * @param model Template model to use, will be generated if not set
+ * @return model object
+ */
+ updateModel: function( $templateText, model ) {
+ var context = $templateText.data( 'marker' ).context;
+ var text;
+ if ( typeof model == 'undefined' ) {
+ text = context.fn.htmlToText( $templateText.html() );
+ } else {
+ text = model.getText();
+ }
+ // To keep stuff simple but not break it, we need to do encode newlines as <br>s
+ $templateText.text( text );
+ $templateText.html( $templateText.html().replace( /\n/g, '<br />' ) );
+ $templateText.data( 'oldHTML', $templateText.html() );
+ if ( typeof model == 'undefined' ) {
+ model = new $.wikiEditor.modules.templateEditor.fn.model( text );
+ $templateText.data( 'model', model );
+ }
+ return model;
+ },
+
+ /**
+ * Gets template display name
+ */
+ getTemplateDisplayName: function ( model ) {
+ var tName = model.getName();
+ if( model.getValue( 'name' ) != '' ) {
+ return tName + ': ' + model.getValue( 'name' );
+ } else if( model.getValue( 'Name' ) != '' ) {
+ return tName + ': ' + model.getValue( 'Name' );
+ } else if( tName.toLowerCase() in $.wikiEditor.modules.templateEditor.nameMappings ) {
+ return tName + ': ' + model.getValue( $.wikiEditor.modules.templateEditor.nameMappings[tName.toLowerCase()] );
+ }
+ return tName;
+ },
+
+ /**
+ * Builds a template model from given wikitext representation, allowing object-oriented manipulation of the contents
+ * of the template while preserving whitespace and formatting.
+ *
+ * @param wikitext String of wikitext content
+ */
+ model: function( wikitext ) {
+
+ /* Private members */
+
+ var collapsible = true;
+
+ /* Private Functions */
+
+ /**
+ * Builds a Param object.
+ *
+ * @param name
+ * @param value
+ * @param number
+ * @param nameIndex
+ * @param equalsIndex
+ * @param valueIndex
+ */
+ function Param( name, value, number, nameIndex, equalsIndex, valueIndex ) {
+ this.name = name;
+ this.value = value;
+ this.number = number;
+ this.nameIndex = nameIndex;
+ this.equalsIndex = equalsIndex;
+ this.valueIndex = valueIndex;
+ }
+ /**
+ * Builds a Range object.
+ *
+ * @param begin
+ * @param end
+ */
+ function Range( begin, end ) {
+ this.begin = begin;
+ this.end = end;
+ }
+ /**
+ * Set 'original' to true if you want the original value irrespective of whether the model's been changed
+ *
+ * @param name
+ * @param value
+ * @param original
+ */
+ function getSetValue( name, value, original ) {
+ var valueRange;
+ var rangeIndex;
+ var retVal;
+ if ( isNaN( name ) ) {
+ // It's a string!
+ if ( typeof paramsByName[name] == 'undefined' ) {
+ // Does not exist
+ return "";
+ }
+ rangeIndex = paramsByName[name];
+ } else {
+ // It's a number!
+ rangeIndex = parseInt( name );
+ }
+ if ( typeof params[rangeIndex] == 'undefined' ) {
+ // Does not exist
+ return "";
+ }
+ valueRange = ranges[params[rangeIndex].valueIndex];
+ if ( typeof valueRange.newVal == 'undefined' || original ) {
+ // Value unchanged, return original wikitext
+ retVal = wikitext.substring( valueRange.begin, valueRange.end );
+ } else {
+ // New value exists, return new value
+ retVal = valueRange.newVal;
+ }
+ if ( value != null ) {
+ ranges[params[rangeIndex].valueIndex].newVal = value;
+ }
+ return retVal;
+ };
+
+ /* Public Functions */
+
+ /**
+ * Get template name
+ */
+ this.getName = function() {
+ if( typeof ranges[templateNameIndex].newVal == 'undefined' ) {
+ return wikitext.substring( ranges[templateNameIndex].begin, ranges[templateNameIndex].end );
+ } else {
+ return ranges[templateNameIndex].newVal;
+ }
+ };
+ /**
+ * Set template name (if we want to support this)
+ *
+ * @param name
+ */
+ this.setName = function( name ) {
+ ranges[templateNameIndex].newVal = name;
+ };
+ /**
+ * Set value for a given param name / number
+ *
+ * @param name
+ * @param value
+ */
+ this.setValue = function( name, value ) {
+ return getSetValue( name, value, false );
+ };
+ /**
+ * Get value for a given param name / number
+ *
+ * @param name
+ */
+ this.getValue = function( name ) {
+ return getSetValue( name, null, false );
+ };
+ /**
+ * Get original value of a param
+ *
+ * @param name
+ */
+ this.getOriginalValue = function( name ) {
+ return getSetValue( name, null, true );
+ };
+ /**
+ * Get a list of all param names (numbers for the anonymous ones)
+ */
+ this.getAllParamNames = function() {
+ return paramsByName;
+ };
+ /**
+ * Get the initial params
+ */
+ this.getAllInitialParams = function(){
+ return params;
+ };
+ /**
+ * Get original template text
+ */
+ this.getOriginalText = function() {
+ return wikitext;
+ };
+ /**
+ * Get modified template text
+ */
+ this.getText = function() {
+ newText = "";
+ for ( i = 0 ; i < ranges.length; i++ ) {
+ if( typeof ranges[i].newVal == 'undefined' ) {
+ newText += wikitext.substring( ranges[i].begin, ranges[i].end );
+ } else {
+ newText += ranges[i].newVal;
+ }
+ }
+ return newText;
+ };
+
+ this.isCollapsible = function() {
+ return collapsible;
+ };
+
+ /**
+ * Update ranges if there's been a change in one or more 'segments' of the template.
+ * Removes adjustment function so adjustment is only made once ever.
+ */
+
+ this.updateRanges = function() {
+ var adjustment = 0;
+ for (var i = 0 ; i < ranges.length; i++ ) {
+ ranges[i].begin += adjustment;
+ if( typeof ranges[i].adjust != 'undefined' ) {
+ adjustment += ranges[i].adjust();
+ // NOTE: adjust should be a function that has the information necessary to calculate the length of
+ // this 'segment'
+ delete ranges[i].adjust;
+ }
+ ranges[i].end += adjustment;
+ }
+ };
+
+ // Whitespace* {{ whitespace* nonwhitespace:
+ if ( wikitext.match( /\s*{{\s*[^\s|]*:/ ) ) {
+ collapsible = false; // is a parser function
+ }
+ /*
+ * Take all template-specific characters that are not particular to the template we're looking at, namely {|=},
+ * and convert them into something harmless, in this case 'X'
+ */
+ // Get rid of first {{ with whitespace
+ var sanatizedStr = wikitext.replace( /{{/, " " );
+ // Replace end
+ endBraces = sanatizedStr.match( /}}\s*$/ );
+ if ( endBraces ) {
+ sanatizedStr = sanatizedStr.substring( 0, endBraces.index ) + " " +
+ sanatizedStr.substring( endBraces.index + 2 );
+ }
+
+
+ //treat HTML comments like whitespace
+ while ( sanatizedStr.indexOf( '<!' ) != -1 ) {
+ startIndex = sanatizedStr.indexOf( '<!' );
+ endIndex = sanatizedStr.indexOf('-->') + 3;
+ if( endIndex < 3 ){
+ break;
+ }
+ sanatizedSegment = sanatizedStr.substring( startIndex,endIndex ).replace( /\S/g , ' ' );
+ sanatizedStr =
+ sanatizedStr.substring( 0, startIndex ) + sanatizedSegment + sanatizedStr.substring( endIndex );
+ }
+
+ // Match the open braces we just found with equivalent closing braces note, works for any level of braces
+ while ( sanatizedStr.indexOf( '{{' ) != -1 ) {
+ startIndex = sanatizedStr.indexOf( '{{' ) + 1;
+ openBraces = 2;
+ endIndex = startIndex;
+ while ( (openBraces > 0) && (endIndex < sanatizedStr.length) ) {
+ var brace = sanatizedStr[++endIndex];
+ openBraces += brace == '}' ? -1 : brace == '{' ? 1 : 0;
+ }
+ sanatizedSegment = sanatizedStr.substring( startIndex,endIndex ).replace( /[{}|=]/g , 'X' );
+ sanatizedStr =
+ sanatizedStr.substring( 0, startIndex ) + sanatizedSegment + sanatizedStr.substring( endIndex );
+ }
+ //links, images, etc, which also can nest
+ while ( sanatizedStr.indexOf( '[[' ) != -1 ) {
+ startIndex = sanatizedStr.indexOf( '[[' ) + 1;
+ openBraces = 2;
+ endIndex = startIndex;
+ while ( (openBraces > 0) && (endIndex < sanatizedStr.length) ) {
+ var brace = sanatizedStr[++endIndex];
+ openBraces += brace == ']' ? -1 : brace == '[' ? 1 : 0;
+ }
+ sanatizedSegment = sanatizedStr.substring( startIndex,endIndex ).replace( /[\[\]|=]/g , 'X' );
+ sanatizedStr =
+ sanatizedStr.substring( 0, startIndex ) + sanatizedSegment + sanatizedStr.substring( endIndex );
+ }
+
+ /*
+ * Parse 1 param at a time
+ */
+ var ranges = [];
+ var params = [];
+ var templateNameIndex = 0;
+ var doneParsing = false;
+ oldDivider = 0;
+ divider = sanatizedStr.indexOf( '|', oldDivider );
+ if ( divider == -1 ) {
+ divider = sanatizedStr.length;
+ doneParsing = true;
+ collapsible = false; //zero params
+ }
+ nameMatch = sanatizedStr.substring( 0, divider ).match( /[^\s]/ );
+ if ( nameMatch != null ) {
+ ranges.push( new Range( 0 ,nameMatch.index ) ); //whitespace and squiggles upto the name
+ nameEndMatch = sanatizedStr.substring( 0 , divider ).match( /[^\s]\s*$/ ); //last nonwhitespace character
+ templateNameIndex = ranges.push( new Range( nameMatch.index,
+ nameEndMatch.index + 1 ) );
+ templateNameIndex--; //push returns 1 less than the array
+ ranges[templateNameIndex].old = wikitext.substring( ranges[templateNameIndex].begin,
+ ranges[templateNameIndex].end );
+ } else {
+ ranges.push(new Range(0,0));
+ ranges[templateNameIndex].old = "";
+ }
+ params.push( ranges[templateNameIndex].old ); //put something in params (0)
+ /*
+ * Start looping over params
+ */
+ var currentParamNumber = 0;
+ var valueEndIndex = ranges[templateNameIndex].end;
+ var paramsByName = [];
+ while ( !doneParsing ) {
+ currentParamNumber++;
+ oldDivider = divider;
+ divider = sanatizedStr.indexOf( '|', oldDivider + 1 );
+ if ( divider == -1 ) {
+ divider = sanatizedStr.length;
+ doneParsing = true;
+ }
+ currentField = sanatizedStr.substring( oldDivider+1, divider );
+ if ( currentField.indexOf( '=' ) == -1 ) {
+ // anonymous field, gets a number
+
+ //default values, since we'll allow empty values
+ valueBeginIndex = oldDivider + 1;
+ valueEndIndex = oldDivider + 1;
+
+ valueBegin = currentField.match( /\S+/ ); //first nonwhitespace character
+ if( valueBegin != null ){
+ valueBeginIndex = valueBegin.index + oldDivider+1;
+ valueEnd = currentField.match( /[^\s]\s*$/ ); //last nonwhitespace character
+ if( valueEnd == null ){ //ie
+ continue;
+ }
+ valueEndIndex = valueEnd.index + oldDivider + 2;
+ }
+ ranges.push( new Range( ranges[ranges.length-1].end,
+ valueBeginIndex ) ); //all the chars upto now
+ nameIndex = ranges.push( new Range( valueBeginIndex, valueBeginIndex ) ) - 1;
+ equalsIndex = ranges.push( new Range( valueBeginIndex, valueBeginIndex ) ) - 1;
+ valueIndex = ranges.push( new Range( valueBeginIndex, valueEndIndex ) ) - 1;
+ params.push( new Param(
+ currentParamNumber,
+ wikitext.substring( ranges[valueIndex].begin, ranges[valueIndex].end ),
+ currentParamNumber,
+ nameIndex,
+ equalsIndex,
+ valueIndex
+ ) );
+ paramsByName[currentParamNumber] = currentParamNumber;
+ } else {
+ // There's an equals, could be comment or a value pair
+ currentName = currentField.substring( 0, currentField.indexOf( '=' ) );
+ // Still offset by oldDivider - first nonwhitespace character
+ nameBegin = currentName.match( /\S+/ );
+ if ( nameBegin == null ) {
+ // This is a comment inside a template call / parser abuse. let's not encourage it
+ currentParamNumber--;
+ continue;
+ }
+ nameBeginIndex = nameBegin.index + oldDivider + 1;
+ // Last nonwhitespace and non } character
+ nameEnd = currentName.match( /[^\s]\s*$/ );
+ if( nameEnd == null ){ //ie
+ continue;
+ }
+ nameEndIndex = nameEnd.index + oldDivider + 2;
+ // All the chars upto now
+ ranges.push( new Range( ranges[ranges.length-1].end, nameBeginIndex ) );
+ nameIndex = ranges.push( new Range( nameBeginIndex, nameEndIndex ) ) - 1;
+ currentValue = currentField.substring( currentField.indexOf( '=' ) + 1);
+ oldDivider += currentField.indexOf( '=' ) + 1;
+
+ //default values, since we'll allow empty values
+ valueBeginIndex = oldDivider + 1;
+ valueEndIndex = oldDivider + 1;
+
+ // First nonwhitespace character
+ valueBegin = currentValue.match( /\S+/ );
+ if( valueBegin != null ){
+ valueBeginIndex = valueBegin.index + oldDivider + 1;
+ // Last nonwhitespace and non } character
+ valueEnd = currentValue.match( /[^\s]\s*$/ );
+ if( valueEnd == null ){ //ie
+ continue;
+ }
+ valueEndIndex = valueEnd.index + oldDivider + 2;
+ }
+ // All the chars upto now
+ equalsIndex = ranges.push( new Range( ranges[ranges.length-1].end, valueBeginIndex) ) - 1;
+ valueIndex = ranges.push( new Range( valueBeginIndex, valueEndIndex ) ) - 1;
+ params.push( new Param(
+ wikitext.substring( nameBeginIndex, nameEndIndex ),
+ wikitext.substring( valueBeginIndex, valueEndIndex ),
+ currentParamNumber,
+ nameIndex,
+ equalsIndex,
+ valueIndex
+ ) );
+ paramsByName[wikitext.substring( nameBeginIndex, nameEndIndex )] = currentParamNumber;
+ }
+ }
+ // The rest of the string
+ ranges.push( new Range( valueEndIndex, wikitext.length ) );
+
+ // Save vars
+ this.ranges = ranges;
+ this.wikitext = wikitext;
+ this.params = params;
+ this.paramsByName = paramsByName;
+ this.templateNameIndex = templateNameIndex;
+ } //model
+}
+}; } )( jQuery );
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.templates.js b/extensions/WikiEditor/modules/jquery.wikiEditor.templates.js
new file mode 100644
index 00000000..b303e3fa
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.templates.js
@@ -0,0 +1,69 @@
+/* Templates Module for wikiEditor */
+( function( $ ) { $.wikiEditor.modules.templates = {
+
+/**
+ * Core Requirements
+ */
+'req': [ 'iframe' ],
+/**
+ * Object Templates
+ */
+'tpl': {
+ 'marker': {
+ 'type': 'template',
+ 'anchor': 'wrap',
+ 'skipDivision': 'realchange',
+ 'afterWrap': function( node ) {
+ $( node ).addClass( 'wikiEditor-template' );
+ },
+ 'getAnchor': function( ca1, ca2 ) {
+ return $( ca1.parentNode ).is( '.wikiEditor-template' ) ? ca1.parentNode : null;
+ }
+ }
+},
+/**
+ * Event handlers
+ */
+'evt': {
+ 'mark': function( context, event ) {
+ // The markers returned by this function are skipped on realchange, so don't regenerate them in that case
+ if ( context.modules.highlight.currentScope == 'realchange' ) {
+ return;
+ }
+ // Get references to the markers and tokens from the current context
+ var markers = context.modules.highlight.markers;
+ var tokens = context.modules.highlight.tokenArray;
+ // Use depth-tracking to extract top-level templates from tokens
+ var depth = 0, bias, start;
+ for ( var i in tokens ) {
+ depth += ( bias = tokens[i].label == 'TEMPLATE_BEGIN' ? 1 : ( tokens[i].label == 'TEMPLATE_END' ? -1 : 0 ) );
+ if ( bias > 0 && depth == 1 ) {
+ // Top-level opening - use offset as start
+ start = tokens[i].offset;
+ } else if ( bias < 0 && depth == 0 ) {
+ // Top-level closing - use offset as end
+ markers[markers.length] = $.extend(
+ { 'context': context, 'start': start, 'end': tokens[i].offset },
+ $.wikiEditor.modules.templates.tpl.marker
+ );
+ }
+ if ( depth < 0 ) {
+ depth = 0;
+ }
+ }
+ }
+},
+'exp': [
+ { 'regex': /{{/, 'label': "TEMPLATE_BEGIN" },
+ { 'regex': /}}/, 'label': "TEMPLATE_END", 'markAfter': true }
+],
+/**
+ * Internally used functions
+ */
+'fn': {
+ 'create': function( context, config ) {
+ // Do some stuff here...
+ }
+}
+
+}; } ) ( jQuery );
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.toc.css b/extensions/WikiEditor/modules/jquery.wikiEditor.toc.css
new file mode 100644
index 00000000..bb1e8775
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.toc.css
@@ -0,0 +1,177 @@
+/*
+ * CSS for WikiEditor Table of Contents jQuery plugin
+ */
+
+.wikiEditor-ui-toc {
+ /* height and width are set dynamically */
+ /*float: right;*/
+ padding: 0;
+ overflow: auto;
+ overflow-x: hidden;
+}
+.wikiEditor-ui-toc {
+ border-left: solid silver 1px;
+}
+.wikiEditor-ui-toc ul {
+ padding: 0;
+ margin: 0;
+ list-style: none;
+ /* IE needs to be told in great detail how to act, or it misbehaves */
+ list-style-image: none;
+ list-style-position: outside;
+ list-style-type: none;
+ width: 100%;
+}
+.tab-toc {
+ /* Should match the toolbar */
+ /* @embed */
+ background-image: url(images/toolbar/base.png);
+ background-position: left top;
+ background-repeat: repeat-x;
+ height: 26px;
+ padding: 3px 0;
+ line-height: 26px;
+ padding-left: 1em;
+ border-bottom: solid 1px silver;
+ white-space: nowrap;
+ overflow: hidden;
+}
+.tab-toc a {
+ outline: none;
+}
+.wikiEditor-ui-toc li {
+ padding: 0;
+ margin: 0;
+}
+.wikiEditor-ui-toc ul ul {
+ padding: 0;
+ margin: 0;
+ margin-bottom: 0 !important;
+ margin-top: 0 !important;
+ list-style: none;
+ background-image: none;
+}
+.wikiEditor-ui-toc ul li div {
+ display: block;
+ font-size: 0.9em;
+ cursor: pointer;
+ color: #0645ad;
+}
+.wikiEditor-ui-toc ul li div {
+ padding: 0.125em;
+ padding-left: 1em;
+}
+.wikiEditor-ui-toc ul ul li div {
+ padding-left: 2em;
+}
+.wikiEditor-ui-toc ul ul ul li div {
+ padding-left: 3em;
+}
+.wikiEditor-ui-toc ul ul ul ul li div {
+ padding-left: 4em;
+}
+.wikiEditor-ui-toc ul ul ul ul ul li div {
+ padding-left: 5em;
+}
+.wikiEditor-ui-toc ul ul ul ul ul ul li div {
+ padding-left: 6em;
+}
+.wikiEditor-ui-toc ul li div.current {
+ background-color: #FAFAFA;
+ color: #333333;
+}
+.wikiEditor-ui-toc ul li div.section-0 {
+ font-size: 1em;
+ padding-top: 0.5em;
+ padding-bottom: 0.5em;
+ border-bottom: solid 1px #DDDDDD;
+}
+/* Collapsing changes */
+.wikiEditor-ui-toc {
+ overflow-y: hidden;
+ position: relative;
+}
+.wikiEditor-ui-toc ul {
+ overflow-y: auto;
+ overflow-x: hidden;
+ height: 100%;
+ margin-bottom: 0 !important;
+
+}
+.wikiEditor-ui-toc ul ul {
+ float: none;
+ height: auto;
+}
+#wikiEditor-ui-toc-collapse {
+ height: 100%;
+ width: 18px;
+ position: absolute;
+ top: 0;
+ left: 0;
+}
+.wikiEditor-ui-toc-collapse-open {
+ /* @embed */
+ background: #f3f3f3 url(images/toc/close.png) 4px 50% no-repeat;
+ border-left: 1px solid #DDDDDD;
+}
+.wikiEditor-ui-toc-collapse-closed {
+ /* @embed */
+ background: #f3f3f3 url(images/toc/open.png) 4px 50% no-repeat;
+}
+/* Resizing Changes */
+.wikiEditor-ui-toc-resize-vertical,
+.ui-resizable-w {
+ width: 4px;
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+ cursor: ew-resize;
+}
+.wikiEditor-ui .wikiEditor-ui-right {
+ overflow: visible;
+}
+.wikiEditor-ui-right .ui-resizable-w {
+ left: 0px !important;
+ z-index: 0;
+}
+.wikiEditor-ui-right .wikiEditor-ui-toc-resize-grip {
+ width: 5px;
+ height: 12px;
+ padding: 3px;
+ position: absolute;
+ top: 7px;
+ left: -12px !important;
+ cursor: ew-resize;
+ /* @embed */
+ background: url(images/toc/grip.png) 50% 50% no-repeat;
+ z-index: 0;
+}
+.wikiEditor-ui-toolbar .tab-toc {
+ float: right;
+ margin: 3px 16px 3px 3px;
+ line-height: 26px;
+}
+.wikiEditor-ui-toc-expandControl {
+ position: absolute;
+ z-index: 2;
+ top: 0px;
+ right: 10px;
+ height: 26px;
+ padding: 3px 0;
+ line-height: 26px;
+ padding-right: 1em;
+ white-space: nowrap;
+ overflow: hidden;
+}
+.wikiEditor-ui-text textarea {
+ resize: none;
+}
+.wikiEditor-ui-text textarea:focus {
+ outline: none;
+}
+/* Self Clearing for the wikiText view */
+.wikiEditor-ui-view-wikiText {
+ overflow: auto;
+ width: 100%;
+} \ No newline at end of file
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.toc.js b/extensions/WikiEditor/modules/jquery.wikiEditor.toc.js
new file mode 100644
index 00000000..a01335e2
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.toc.js
@@ -0,0 +1,667 @@
+/* TOC Module for wikiEditor */
+( function( $ ) { $.wikiEditor.modules.toc = {
+
+/**
+ * Compatability map
+ */
+'browsers': {
+ // Left-to-right languages
+ 'ltr': {
+ 'msie': [['>=', 7]],
+ 'firefox': [['>=', 3]],
+ 'opera': [['>=', 10]],
+ 'safari': [['>=', 4]],
+ 'chrome': [['>=', 4]]
+ },
+ // Right-to-left languages
+ 'rtl': {
+ 'msie': [['>=', 8]],
+ 'firefox': [['>=', 3]],
+ 'opera': [['>=', 10]],
+ 'safari': [['>=', 4]],
+ 'chrome': [['>=', 4]]
+ }
+},
+/**
+ * Core Requirements
+ */
+'req': [ 'iframe' ],
+/**
+ * Configuration
+ */
+cfg: {
+ // Default width of table of contents
+ defaultWidth: '166px',
+ // Minimum width to allow resizing to before collapsing the table of contents - used when resizing and collapsing
+ minimumWidth: '70px',
+ // Minimum width of the wikiText area
+ textMinimumWidth: '450px',
+ // The style property to be used for positioning the flexible module in regular mode
+ flexProperty: 'marginRight',
+ // Boolean var indicating text direction
+ rtl: false
+},
+/**
+ * API accessible functions
+ */
+api: {
+ //
+},
+/**
+ * Event handlers
+ */
+evt: {
+ change: function( context, event ) {
+ $.wikiEditor.modules.toc.fn.update( context );
+ },
+ ready: function( context, event ) {
+ // Add the TOC to the document
+ $.wikiEditor.modules.toc.fn.build( context );
+ if ( !context.$content ) {
+ return;
+ }
+ context.$content.parent()
+ .blur( function() {
+ var context = event.data.context;
+ $.wikiEditor.modules.toc.fn.unhighlight( context );
+ });
+ $.wikiEditor.modules.toc.fn.improveUI();
+ $.wikiEditor.modules.toc.evt.resize( context );
+ },
+ resize: function( context, event ) {
+ var availableWidth = context.$wikitext.width() - parseFloat( $.wikiEditor.modules.toc.cfg.textMinimumWidth ),
+ totalMinWidth = parseFloat( $.wikiEditor.modules.toc.cfg.minimumWidth ) +
+ parseFloat( $.wikiEditor.modules.toc.cfg.textMinimumWidth );
+ context.$ui.find( '.wikiEditor-ui-right' )
+ .resizable( 'option', 'maxWidth', availableWidth );
+ if ( context.modules.toc.$toc.data( 'positionMode' ) != 'disabled' &&
+ context.$wikitext.width() < totalMinWidth ) {
+ $.wikiEditor.modules.toc.fn.disable( context );
+ } else if ( context.modules.toc.$toc.data( 'positionMode' ) == 'disabled' &&
+ context.$wikitext.width() > totalMinWidth ) {
+ $.wikiEditor.modules.toc.fn.enable( context );
+ } else if ( context.modules.toc.$toc.data( 'positionMode' ) == 'regular' &&
+ context.$ui.find( '.wikiEditor-ui-right' ).width() > availableWidth ) {
+ //switch mode
+ $.wikiEditor.modules.toc.fn.switchLayout( context );
+ } else if ( context.modules.toc.$toc.data( 'positionMode' ) == 'goofy' &&
+ context.modules.toc.$toc.data( 'previousWidth' ) < context.$wikitext.width() ) {
+ //switch mode
+ $.wikiEditor.modules.toc.fn.switchLayout( context );
+ }
+ if ( context.modules.toc.$toc.data( 'positionMode' ) == 'goofy' ) {
+ context.modules.toc.$toc.find( 'div' ).autoEllipsis(
+ { 'position': 'right', 'tooltip': true, 'restoreText': true }
+ );
+ }
+ // reset the height of the TOC
+ if ( !context.modules.toc.$toc.data( 'collapsed' ) ){
+ context.modules.toc.$toc.height(
+ context.$ui.find( '.wikiEditor-ui-left' ).height() -
+ context.$ui.find( '.tab-toc' ).outerHeight()
+ );
+ }
+
+ // store the width of the view for comparison on next resize
+ context.modules.toc.$toc.data( 'previousWidth', context.$wikitext.width() );
+ },
+ mark: function( context, event ) {
+ var hash = '';
+ var markers = context.modules.highlight.markers;
+ var tokenArray = context.modules.highlight.tokenArray;
+ var outline = context.data.outline = [];
+ var h = 0;
+ for ( var i = 0; i < tokenArray.length; i++ ) {
+ if ( tokenArray[i].label != 'TOC_HEADER' ) {
+ continue;
+ }
+ h++;
+ markers.push( {
+ index: h,
+ start: tokenArray[i].tokenStart,
+ end: tokenArray[i].offset,
+ type: 'toc',
+ anchor: 'tag',
+ afterWrap: function( node ) {
+ var marker = $( node ).data( 'marker' );
+ $( node ).addClass( 'wikiEditor-toc-header' )
+ .addClass( 'wikiEditor-toc-section-' + marker.index )
+ .data( 'section', marker.index );
+ },
+ beforeUnwrap: function( node ) {
+ $( node ).removeClass( 'wikiEditor-toc-header' )
+ .removeClass( 'wikiEditor-toc-section-' + $( node ).data( 'section' ) );
+ },
+ onSkip: function( node ) {
+ var marker = $( node ).data( 'marker' );
+ if ( $( node ).data( 'section' ) != marker.index ) {
+ $( node )
+ .removeClass( 'wikiEditor-toc-section-' + $( node ).data( 'section' ) )
+ .addClass( 'wikiEditor-toc-section-' + marker.index )
+ .data( 'section', marker.index );
+ }
+ },
+ getAnchor: function( ca1, ca2 ) {
+ return $( ca1.parentNode ).is( '.wikiEditor-toc-header' ) ?
+ ca1.parentNode : null;
+ }
+ } );
+ hash += tokenArray[i].match[2] + '\n';
+ outline.push ( {
+ 'text': tokenArray[i].match[2],
+ 'level': tokenArray[i].match[1].length,
+ 'index': h
+ } );
+ }
+ // Only update the TOC if it's been changed - we do this by comparing a hash of the headings this time to last
+ if ( typeof context.modules.toc.lastHash == 'undefined' || context.modules.toc.lastHash !== hash ) {
+ $.wikiEditor.modules.toc.fn.build( context );
+ $.wikiEditor.modules.toc.fn.update( context );
+ // Remember the changed version
+ context.modules.toc.lastHash = hash;
+ }
+ }
+},
+exp: [
+ { 'regex': /^(={1,6})([^\r\n]+?)\1\s*$/m, 'label': 'TOC_HEADER', 'markAfter': true }
+],
+/**
+ * Internally used functions
+ */
+fn: {
+ /**
+ * Creates a table of contents module within a wikiEditor
+ *
+ * @param {Object} context Context object of editor to create module in
+ * @param {Object} config Configuration object to create module from
+ */
+ create: function( context, config ) {
+ if ( '$toc' in context.modules.toc ) {
+ return;
+ }
+ $.wikiEditor.modules.toc.cfg.rtl = $( 'body' ).is( '.rtl' );
+ $.wikiEditor.modules.toc.cfg.flexProperty = $.wikiEditor.modules.toc.cfg.rtl ? 'marginLeft' : 'marginRight';
+ var height = context.$ui.find( '.wikiEditor-ui-left' ).height();
+ context.modules.toc.$toc = $( '<div />' )
+ .addClass( 'wikiEditor-ui-toc' )
+ .data( 'context', context )
+ .data( 'positionMode', 'regular' )
+ .data( 'collapsed', false );
+ context.$ui.find( '.wikiEditor-ui-right' )
+ .append( context.modules.toc.$toc );
+ context.modules.toc.$toc.height(
+ context.$ui.find( '.wikiEditor-ui-left' ).height()
+ );
+ $.wikiEditor.modules.toc.fn.redraw( context, $.wikiEditor.modules.toc.cfg.defaultWidth );
+ },
+ redraw: function( context, fixedWidth ) {
+ var fixedWidth = parseFloat( fixedWidth );
+ if( context.modules.toc.$toc.data( 'positionMode' ) == 'regular' ) {
+ context.$ui.find( '.wikiEditor-ui-right' )
+ .css( 'width', fixedWidth + 'px' );
+ context.$ui.find( '.wikiEditor-ui-left' )
+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, ( -1 * fixedWidth ) + 'px' )
+ .children()
+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, fixedWidth + 'px' );
+ } else if( context.modules.toc.$toc.data( 'positionMode' ) == 'goofy' ) {
+ context.$ui.find( '.wikiEditor-ui-left' )
+ .css( 'width', fixedWidth );
+ context.$ui.find( '.wikiEditor-ui-right' )
+ .css( $.wikiEditor.modules.toc.cfg.rtl ? 'right': 'left', fixedWidth );
+ context.$wikitext.css( 'height', context.$ui.find( '.wikiEditor-ui-right' ).height() );
+ }
+ },
+ switchLayout: function( context ) {
+ var width,
+ height = context.$ui.find( '.wikiEditor-ui-right' ).height();
+ if( context.modules.toc.$toc.data( 'positionMode' ) == 'regular'
+ && !context.modules.toc.$toc.data( 'collapsed' ) ) {
+ // store position mode
+ context.modules.toc.$toc.data( 'positionMode', 'goofy' );
+ // store the width of the TOC, to ensure we dont allow it to be larger than this when switching back
+ context.modules.toc.$toc.data( 'positionModeChangeAt',
+ context.$ui.find( '.wikiEditor-ui-right' ).width() );
+ width = $.wikiEditor.modules.toc.cfg.textMinimumWidth;
+ // set our styles for goofy mode
+ context.$ui.find( '.wikiEditor-ui-left' )
+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '')
+ .css( { 'position': 'absolute', 'float': 'none',
+ 'left': $.wikiEditor.modules.toc.cfg.rtl ? 'auto': 0,
+ 'right' : $.wikiEditor.modules.toc.cfg.rtl ? 0 : 'auto' } )
+ .children()
+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '' );
+ context.$ui.find( '.wikiEditor-ui-right' )
+ .css( { 'width': 'auto', 'position': 'absolute', 'float': 'none',
+ 'right': $.wikiEditor.modules.toc.cfg.rtl ? 'auto': 0,
+ 'left' : $.wikiEditor.modules.toc.cfg.rtl ? 0 : 'auto' } );
+ context.$wikitext
+ .css( 'position', 'relative' );
+ } else if ( context.modules.toc.$toc.data( 'positionMode' ) == 'goofy' ) {
+ // store position mode
+ context.modules.toc.$toc.data( 'positionMode', 'regular' );
+ // set width
+ width = context.$wikitext.width() - context.$ui.find( '.wikiEditor-ui-left' ).width();
+ if ( width > context.modules.toc.$toc.data( 'positionModeChangeAt' ) ) {
+ width = context.modules.toc.$toc.data( 'positionModeChangeAt' );
+ }
+ // set our styles for regular mode
+ context.$wikitext
+ .css( { 'position': '', 'height': '' } );
+ context.$ui.find( '.wikiEditor-ui-right' )
+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '' )
+ .css( { 'position': '', 'left': '', 'right': '', 'float': '', 'top': '', 'height': '' } );
+ context.$ui.find( '.wikiEditor-ui-left' )
+ .css( { 'width': '', 'position': '', 'left': '', 'float': '', 'right': '' } );
+ }
+ $.wikiEditor.modules.toc.fn.redraw( context, width );
+ },
+ disable: function( context ) {
+ if ( context.modules.toc.$toc.data( 'collapsed' ) ) {
+ context.$ui.find( '.wikiEditor-ui-toc-expandControl' ).hide();
+ } else {
+ if( context.modules.toc.$toc.data( 'positionMode' ) == 'goofy' ) {
+ $.wikiEditor.modules.toc.fn.switchLayout( context );
+ }
+ context.$ui.find( '.wikiEditor-ui-right' ).hide();
+ context.$ui.find( '.wikiEditor-ui-left' )
+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '' )
+ .children()
+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, '' );
+ }
+ context.modules.toc.$toc.data( 'positionMode', 'disabled' );
+ },
+ enable: function( context ) {
+ context.modules.toc.$toc.data( 'positionMode', 'regular' );
+ if ( context.modules.toc.$toc.data( 'collapsed' ) ) {
+ context.$ui.find( '.wikiEditor-ui-toc-expandControl' ).show();
+ } else {
+ context.$ui.find( '.wikiEditor-ui-right' ).show();
+ $.wikiEditor.modules.toc.fn.redraw( context, $.wikiEditor.modules.toc.cfg.minimumWidth );
+ context.modules.toc.$toc.find( 'div' ).autoEllipsis(
+ { 'position': 'right', 'tooltip': true, 'restoreText': true }
+ );
+ }
+ },
+ unhighlight: function( context ) {
+ // FIXME: For some reason, IE calls this function twice, the first time with context undefined
+ // Investigate this when you have time please! In the meantime, the user interaction is working just
+ // fine because the second call is valid
+ if ( context ) {
+ context.modules.toc.$toc.find( 'div' ).removeClass( 'current' );
+ }
+ },
+ /**
+ * Highlight the section the cursor is currently within
+ *
+ * @param {Object} context
+ */
+ update: function( context ) {
+ //temporarily commenting this out because it is causing all kinds of cursor
+ //and text jumping issues in IE. WIll get back to this --pdhanda
+ /*
+ var div = context.fn.beforeSelection( 'wikiEditor-toc-header' );
+ if ( div === null ) {
+ // beforeSelection couldn't figure it out, keep the old highlight state
+ return;
+ }
+
+ $.wikiEditor.modules.toc.fn.unhighlight( context );
+ var section = div.data( 'section' ) || 0;
+ if ( context.data.outline.length > 0 ) {
+ var sectionLink = context.modules.toc.$toc.find( 'div.section-' + section );
+ sectionLink.addClass( 'current' );
+
+ // Scroll the highlighted link into view if necessary
+ var relTop = sectionLink.offset().top - context.modules.toc.$toc.offset().top;
+
+ var scrollTop = context.modules.toc.$toc.scrollTop();
+ var divHeight = context.modules.toc.$toc.height();
+ var sectionHeight = sectionLink.height();
+ if ( relTop < 0 )
+ // Scroll up
+ context.modules.toc.$toc.scrollTop( scrollTop + relTop );
+ else if ( relTop + sectionHeight > divHeight )
+ // Scroll down
+ context.modules.toc.$toc.scrollTop( scrollTop + relTop + sectionHeight - divHeight );
+ }
+ */
+ },
+
+ /**
+ * Collapse the contents module
+ *
+ * @param {Object} event Event object with context as data
+ */
+ collapse: function( event ) {
+ var $this = $( this ),
+ context = $this.data( 'context' );
+ if( context.modules.toc.$toc.data( 'positionMode' ) == 'goofy' ) {
+ $.wikiEditor.modules.toc.fn.switchLayout( context );
+ }
+ var pT = $this.parent().position().top - 1;
+ context.modules.toc.$toc.data( 'collapsed', true );
+ var leftParam = {}, leftChildParam = {};
+ leftParam[ $.wikiEditor.modules.toc.cfg.flexProperty ] = '-1px';
+ leftChildParam[ $.wikiEditor.modules.toc.cfg.flexProperty ] = '1px';
+ context.$ui.find( '.wikiEditor-ui-left' )
+ .animate( leftParam, 'fast', function() {
+ $( this ).css( $.wikiEditor.modules.toc.cfg.flexProperty, 0 );
+ } )
+ .children()
+ .animate( leftChildParam, 'fast', function() {
+ $( this ).css( $.wikiEditor.modules.toc.cfg.flexProperty, 0 );
+ } );
+ context.$ui.find( '.wikiEditor-ui-right' )
+ .css( {
+ 'marginTop' : '1px',
+ 'position' : 'absolute',
+ 'left' : $.wikiEditor.modules.toc.cfg.rtl ? 0 : 'auto',
+ 'right' : $.wikiEditor.modules.toc.cfg.rtl ? 'auto' : 0,
+ 'top' : pT } )
+ .fadeOut( 'fast', function() {
+ $( this ).hide()
+ .css( { 'marginTop': '0', 'width': '1px' } );
+ context.$ui.find( '.wikiEditor-ui-toc-expandControl' ).fadeIn( 'fast' );
+ // Let the UI know things have moved around
+ context.fn.trigger( 'tocCollapse' );
+ context.fn.trigger( 'resize' );
+ } );
+
+ $.cookie( 'wikiEditor-' + context.instance + '-toc-width', 0 );
+ return false;
+ },
+
+ /**
+ * Expand the contents module
+ *
+ * @param {Object} event Event object with context as data
+ */
+ expand: function( event ) {
+ var $this = $( this ),
+ context = $this.data( 'context' ),
+ openWidth = parseFloat( context.modules.toc.$toc.data( 'openWidth' ) ),
+ availableSpace = context.$wikitext.width() - parseFloat( $.wikiEditor.modules.toc.cfg.textMinimumWidth );
+ if ( availableSpace < $.wikiEditor.modules.toc.cfg.textMinmumWidth ) return false;
+ context.modules.toc.$toc.data( 'collapsed', false );
+ // check if we've got enough room to open to our stored width
+ if ( availableSpace < openWidth ) openWidth = availableSpace;
+ context.$ui.find( '.wikiEditor-ui-toc-expandControl' ).hide();
+ var leftParam = {}, leftChildParam = {};
+ leftParam[ $.wikiEditor.modules.toc.cfg.flexProperty ] = parseFloat( openWidth ) * -1;
+ leftChildParam[ $.wikiEditor.modules.toc.cfg.flexProperty ] = openWidth;
+ context.$ui.find( '.wikiEditor-ui-left' )
+ .animate( leftParam, 'fast' )
+ .children()
+ .animate( leftChildParam, 'fast' );
+ context.$ui.find( '.wikiEditor-ui-right' )
+ .show()
+ .css( 'marginTop', '1px' )
+ .animate( { 'width' : openWidth }, 'fast', function() {
+ context.$content.trigger( 'mouseup' );
+ $( this ).css( {
+ 'marginTop' : '0',
+ 'position' : 'relative',
+ 'right' : 'auto',
+ 'left' : 'auto',
+ 'top': 'auto' } );
+ context.fn.trigger( 'tocExpand' );
+ context.fn.trigger( 'resize' );
+ } );
+ $.cookie( 'wikiEditor-' + context.instance + '-toc-width',
+ context.modules.toc.$toc.data( 'openWidth' ) );
+ return false;
+ },
+ /**
+ * Builds table of contents
+ *
+ * @param {Object} context
+ */
+ build: function( context ) {
+ /**
+ * Builds a structured outline from flat outline
+ *
+ * @param {Object} outline Array of objects with level fields
+ */
+ function buildStructure( outline, offset, level ) {
+ if ( offset == undefined ) offset = 0;
+ if ( level == undefined ) level = 1;
+ var sections = [];
+ for ( var i = offset; i < outline.length; i++ ) {
+ if ( outline[i].nLevel == level ) {
+ var sub = buildStructure( outline, i + 1, level + 1 );
+ if ( sub.length ) {
+ outline[i].sections = sub;
+ }
+ sections[sections.length] = outline[i];
+ } else if ( outline[i].nLevel < level ) {
+ break;
+ }
+ }
+ return sections;
+ }
+ /**
+ * Builds unordered list HTML object from structured outline
+ *
+ * @param {Object} structure Structured outline
+ */
+ function buildList( structure ) {
+ var list = $( '<ul />' );
+ for ( var i = 0; i < structure.length; i++ ) {
+ var div = $( '<div />' )
+ .addClass( 'section-' + structure[i].index )
+ .data( 'index', structure[i].index )
+ .mousedown( function() {
+ // No dragging!
+ return false;
+ } )
+ .click( function( event ) {
+ var wrapper = context.$content.find(
+ '.wikiEditor-toc-section-' + $( this ).data( 'index' ) );
+ if ( wrapper.size() == 0 )
+ wrapper = context.$content;
+ context.fn.scrollToTop( wrapper, true );
+ context.$textarea.textSelection( 'setSelection', {
+ 'start': 0,
+ 'startContainer': wrapper
+ } );
+ // Bring user's eyes to the point we've now jumped to
+ context.fn.highlightLine( $( wrapper ) );
+ // Highlight the clicked link
+ //remove highlighting of toc after a second. Temporary hack till the highlight works --pdhanda
+ //$.wikiEditor.modules.toc.fn.unhighlight( context );
+ $( this ).addClass( 'current' );
+ //$( this ).removeClass( 'current' );
+ setTimeout( function() { $.wikiEditor.modules.toc.fn.unhighlight( context ) }, 1000 );
+
+ if ( typeof $.trackAction != 'undefined' )
+ $.trackAction( 'ntoc.heading' );
+ event.preventDefault();
+ } )
+ .text( structure[i].text );
+ if ( structure[i].text == '' )
+ div.html( '&nbsp;' );
+ var item = $( '<li />' ).append( div );
+ if ( structure[i].sections !== undefined ) {
+ item.append( buildList( structure[i].sections ) );
+ }
+ list.append( item );
+ }
+ return list;
+ }
+ /**
+ * Builds controls for collapsing and expanding the TOC
+ *
+ */
+ function buildCollapseControls( ) {
+ var $collapseControl = $( '<div />' ), $expandControl = $( '<div />' );
+ $collapseControl
+ .addClass( 'tab' )
+ .addClass( 'tab-toc' )
+ .append( '<a href="#" />' )
+ .mousedown( function( e ) {
+ // No dragging!
+ e.preventDefault();
+ return false;
+ } )
+ .bind( 'click.wikiEditor-toc', function( e ) {
+ context.modules.toc.$toc.trigger( 'collapse.wikiEditor-toc' );
+ // No dragging!
+ e.preventDefault();
+ return false;
+ } )
+ .find( 'a' )
+ .text( mediaWiki.msg( 'wikieditor-toc-hide' ) );
+ $expandControl
+ .addClass( 'wikiEditor-ui-toc-expandControl' )
+ .append( '<a href="#" />' )
+ .mousedown( function( e ) {
+ // No dragging!
+ e.preventDefault();
+ return false;
+ } )
+ .bind( 'click.wikiEditor-toc', function( e ) {
+ context.modules.toc.$toc.trigger( 'expand.wikiEditor-toc' );
+ // No dragging!
+ e.preventDefault();
+ return false;
+ } )
+ .hide()
+ .find( 'a' )
+ .text( mediaWiki.msg( 'wikieditor-toc-show' ) );
+ $collapseControl.insertBefore( context.modules.toc.$toc );
+ context.$ui.find( '.wikiEditor-ui-left .wikiEditor-ui-top' ).append( $expandControl );
+ }
+ /**
+ * Initializes resizing controls on the TOC and sets the width of
+ * the TOC based on it's previous state
+ *
+ */
+ function buildResizeControls( ) {
+ context.$ui
+ .data( 'resizableDone', true )
+ .find( '.wikiEditor-ui-right' )
+ .data( 'wikiEditor-ui-left', context.$ui.find( '.wikiEditor-ui-left' ) )
+ .resizable( { handles: 'w,e', preventPositionLeftChange: true,
+ minWidth: parseFloat( $.wikiEditor.modules.toc.cfg.minimumWidth ),
+ start: function( e, ui ) {
+ var $this = $( this );
+ // Toss a transparent cover over our iframe
+ $( '<div />' )
+ .addClass( 'wikiEditor-ui-resize-mask' )
+ .css( {
+ 'position': 'absolute',
+ 'z-index': 2,
+ 'left': 0,
+ 'top': 0,
+ 'bottom': 0,
+ 'right': 0
+ } )
+ .appendTo( context.$ui.find( '.wikiEditor-ui-left' ) );
+ $this.resizable( 'option', 'maxWidth', $this.parent().width() -
+ parseFloat( $.wikiEditor.modules.toc.cfg.textMinimumWidth ) );
+ if(context.modules.toc.$toc.data( 'positionMode' ) == 'goofy' ) {
+ $.wikiEditor.modules.toc.fn.switchLayout( context );
+ }
+ },
+ resize: function( e, ui ) {
+ // for some odd reason, ui.size.width seems a step ahead of what the *actual* width of
+ // the resizable is
+ $( this ).css( { 'width': ui.size.width, 'top': 'auto', 'height': 'auto' } )
+ .data( 'wikiEditor-ui-left' )
+ .css( $.wikiEditor.modules.toc.cfg.flexProperty, ( -1 * ui.size.width ) )
+ .children().css( $.wikiEditor.modules.toc.cfg.flexProperty, ui.size.width );
+ // Let the UI know things have moved around
+ context.fn.trigger( 'resize' );
+ },
+ stop: function ( e, ui ) {
+ context.$ui.find( '.wikiEditor-ui-resize-mask' ).remove();
+ context.$content.trigger( 'mouseup' );
+ if( ui.size.width <= parseFloat( $.wikiEditor.modules.toc.cfg.minimumWidth ) ) {
+ context.modules.toc.$toc.trigger( 'collapse.wikiEditor-toc' );
+ } else {
+ context.modules.toc.$toc.find( 'div' ).autoEllipsis(
+ { 'position': 'right', 'tooltip': true, 'restoreText': true }
+ );
+ context.modules.toc.$toc.data( 'openWidth', ui.size.width );
+ $.cookie( 'wikiEditor-' + context.instance + '-toc-width', ui.size.width );
+ }
+ // Let the UI know things have moved around
+ context.fn.trigger( 'resize' );
+ }
+ });
+ // Convert our east resize handle into a secondary west resize handle
+ var handle = $.wikiEditor.modules.toc.cfg.rtl ? 'w' : 'e';
+ context.$ui.find( '.ui-resizable-' + handle )
+ .removeClass( 'ui-resizable-' + handle )
+ .addClass( 'ui-resizable-' + ( handle == 'w' ? 'e' : 'w' ) )
+ .addClass( 'wikiEditor-ui-toc-resize-grip' );
+ // Bind collapse and expand event handlers to the TOC
+ context.modules.toc.$toc
+ .bind( 'collapse.wikiEditor-toc', $.wikiEditor.modules.toc.fn.collapse )
+ .bind( 'expand.wikiEditor-toc', $.wikiEditor.modules.toc.fn.expand );
+ context.modules.toc.$toc.data( 'openWidth', $.wikiEditor.modules.toc.cfg.defaultWidth );
+ // If the toc-width cookie is set, reset the widths based upon that
+ if ( $.cookie( 'wikiEditor-' + context.instance + '-toc-width' ) == 0 ) {
+ context.modules.toc.$toc.trigger( 'collapse.wikiEditor-toc', { data: context } );
+ } else if ( $.cookie( 'wikiEditor-' + context.instance + '-toc-width' ) > 0 ) {
+ var initialWidth = $.cookie( 'wikiEditor-' + context.instance + '-toc-width' );
+ if( initialWidth < parseFloat( $.wikiEditor.modules.toc.cfg.minimumWidth ) )
+ initialWidth = parseFloat( $.wikiEditor.modules.toc.cfg.minimumWidth ) + 1;
+ context.modules.toc.$toc.data( 'openWidth', initialWidth + 'px' );
+ $.wikiEditor.modules.toc.fn.redraw( context, initialWidth );
+ }
+ }
+
+ // Normalize heading levels for list creation
+ // This is based on Linker::generateTOC(), so it should behave like the
+ // TOC on rendered articles does - which is considdered to be correct
+ // at this point in time.
+ if ( context.data.outline ) {
+ var outline = context.data.outline;
+ var lastLevel = 0;
+ var nLevel = 0;
+ for ( var i = 0; i < outline.length; i++ ) {
+ if ( outline[i].level > lastLevel ) {
+ nLevel++;
+ }
+ else if ( outline[i].level < lastLevel ) {
+ nLevel -= Math.max( 1, lastLevel - outline[i].level );
+ }
+ if ( nLevel <= 0 ) {
+ nLevel = 1;
+ }
+ outline[i].nLevel = nLevel;
+ lastLevel = outline[i].level;
+ }
+ // Recursively build the structure and add special item for
+ // section 0, if needed
+ var structure = buildStructure( outline );
+ if ( $( 'input[name=wpSection]' ).val() == '' ) {
+ structure.unshift( { 'text': mw.config.get( 'wgPageName' ).replace( /_/g, ' ' ), 'level': 1, 'index': 0 } );
+ }
+ context.modules.toc.$toc.html( buildList( structure ) );
+
+ if ( !context.$ui.data( 'resizableDone' ) ) {
+ buildResizeControls();
+ buildCollapseControls();
+ }
+ context.modules.toc.$toc.find( 'div' ).autoEllipsis(
+ { 'position': 'right', 'tooltip': true, 'restoreText': true }
+ );
+ }
+ },
+ improveUI: function() {
+ /*
+ * Extending resizable to allow west resizing without altering the left position attribute
+ */
+ $.ui.plugin.add( "resizable", "preventPositionLeftChange", {
+ resize: function( event, ui ) {
+ $( this ).data( "resizable" ).position.left = 0;
+ }
+ } );
+ }
+}
+
+};
+
+} ) ( jQuery );
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js b/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js
new file mode 100644
index 00000000..ab92d173
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.config.js
@@ -0,0 +1,1091 @@
+/**
+ * Configuration of Toolbar module for wikiEditor
+ */
+( function( $ ) { $.wikiEditor.modules.toolbar.config = {
+
+getDefaultConfig: function() {
+ var fileNamespace = mw.config.get( 'wgFormattedNamespaces' )[6];
+ return { 'toolbar': {
+ // Main section
+ 'main': {
+ 'type': 'toolbar',
+ 'groups': {
+ 'format': {
+ 'tools': {
+ 'bold': {
+ 'labelMsg': 'wikieditor-toolbar-tool-bold',
+ 'type': 'button',
+ 'offset': {
+ 'default': [2, -574],
+ 'en': [2, -142],
+ 'cs': [2, -142],
+ 'de': [2, -214],
+ 'fr': [2, -286],
+ 'es': [2, -358],
+ 'he': [2, -142],
+ 'hu': [2, -214],
+ 'it': [2, -286],
+ 'nl': [2, -502],
+ 'pt': [2, -358],
+ 'pt-br': [2, -358],
+ 'pl': [2, -142],
+ 'ml': [2, -142]
+ },
+ 'icon': {
+ 'default': 'format-bold.png',
+ 'en': 'format-bold-B.png',
+ 'cs': 'format-bold-B.png',
+ 'de': 'format-bold-F.png',
+ 'fr': 'format-bold-G.png',
+ 'es': 'format-bold-N.png',
+ 'he': 'format-bold-B.png',
+ 'hu': 'format-bold-F.png',
+ 'it': 'format-bold-G.png',
+ 'ka': 'format-bold-ka.png',
+ 'nl': 'format-bold-V.png',
+ 'pt': 'format-bold-N.png',
+ 'pt-br': 'format-bold-N.png',
+ 'pl': 'format-bold-B.png',
+ 'ru': 'format-bold-ru.png',
+ 'ml': 'format-bold-B.png'
+ },
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "'''",
+ 'periMsg': 'wikieditor-toolbar-tool-bold-example',
+ 'post': "'''"
+ }
+ }
+ },
+ 'italic': {
+ 'section': 'main',
+ 'group': 'format',
+ 'id': 'italic',
+ 'labelMsg': 'wikieditor-toolbar-tool-italic',
+ 'type': 'button',
+ 'offset': {
+ 'default': [2, -718],
+ 'en': [2, -862],
+ 'cs': [2, -862],
+ 'de': [2, -934],
+ 'fr': [2, -862],
+ 'es': [2, -790],
+ 'he': [2, -862],
+ 'it': [2, -790],
+ 'nl': [2, -790],
+ 'pt': [2, -862],
+ 'pt-br': [2, -862],
+ 'pl': [2, -862],
+ 'ru': [2, -934],
+ 'ml': [2, -862]
+ },
+ 'icon': {
+ 'default': 'format-italic.png',
+ 'en': 'format-italic-I.png',
+ 'cs': 'format-italic-I.png',
+ 'de': 'format-italic-K.png',
+ 'fr': 'format-italic-I.png',
+ 'es': 'format-italic-C.png',
+ 'he': 'format-italic-I.png',
+ 'hu': 'format-italic-D.png',
+ 'it': 'format-italic-C.png',
+ 'ka': 'format-italic-ka.png',
+ 'nl': 'format-italic-C.png',
+ 'pt': 'format-italic-I.png',
+ 'pt-br': 'format-italic-I.png',
+ 'pl': 'format-italic-I.png',
+ 'ru': 'format-italic-K.png',
+ 'ml': 'format-italic-I.png'
+ },
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "''",
+ 'periMsg': 'wikieditor-toolbar-tool-italic-example',
+ 'post': "''"
+ }
+ }
+ }
+ }
+ },
+ 'insert': {
+ 'tools': {
+ 'xlink': {
+ 'labelMsg': 'wikieditor-toolbar-tool-xlink',
+ 'type': 'button',
+ 'icon': 'insert-xlink.png',
+ 'offset': [-70, 2],
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "[",
+ 'periMsg': 'wikieditor-toolbar-tool-xlink-example',
+ 'post': "]"
+ }
+ }
+ },
+ 'ilink': {
+ 'labelMsg': 'wikieditor-toolbar-tool-ilink',
+ 'type': 'button',
+ 'icon': 'insert-ilink.png',
+ 'offset': [2, -1582],
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "[[",
+ 'periMsg': 'wikieditor-toolbar-tool-ilink-example',
+ 'post': "]]"
+ }
+ }
+ },
+ 'file': {
+ 'labelMsg': 'wikieditor-toolbar-tool-file',
+ 'type': 'button',
+ 'icon': 'insert-file.png',
+ 'offset': [2, -1438],
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': '[[' + fileNamespace + ':',
+ 'periMsg': 'wikieditor-toolbar-tool-file-example',
+ 'post': "]]"
+ }
+ }
+ },
+ 'reference': {
+ 'labelMsg': 'wikieditor-toolbar-tool-reference',
+ 'filters': [ 'body.ns-subject' ],
+ 'type': 'button',
+ 'offset': [2, -1798],
+ 'icon': 'insert-reference.png',
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "<ref>",
+ 'periMsg': 'wikieditor-toolbar-tool-reference-example',
+ 'post': "</ref>"
+ }
+ }
+ },
+ 'signature': {
+ 'labelMsg': 'wikieditor-toolbar-tool-signature',
+ 'type': 'button',
+ 'offset': [2, -1872],
+ 'icon': 'insert-signature.png',
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "--~~~~"
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ // Format section
+ 'advanced': {
+ 'labelMsg': 'wikieditor-toolbar-section-advanced',
+ 'type': 'toolbar',
+ 'groups': {
+ 'heading': {
+ 'tools': {
+ 'heading': {
+ 'labelMsg': 'wikieditor-toolbar-tool-heading',
+ 'type': 'select',
+ 'list': {
+ 'heading-2' : {
+ 'labelMsg': 'wikieditor-toolbar-tool-heading-2',
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': '== ',
+ 'periMsg': 'wikieditor-toolbar-tool-heading-example',
+ 'post': ' ==',
+ 'regex': /^(\s*)(={1,6})(.*?)\2(\s*)$/,
+ 'regexReplace': "\$1==\$3==\$4",
+ 'ownline': true
+ }
+ }
+ },
+ 'heading-3' : {
+ 'labelMsg': 'wikieditor-toolbar-tool-heading-3',
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': '=== ',
+ 'periMsg': 'wikieditor-toolbar-tool-heading-example',
+ 'post': ' ===',
+ 'regex': /^(\s*)(={1,6})(.*?)\2(\s*)$/,
+ 'regexReplace': "\$1===\$3===\$4",
+ 'ownline': true
+ }
+ }
+ },
+ 'heading-4' : {
+ 'labelMsg': 'wikieditor-toolbar-tool-heading-4',
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': '==== ',
+ 'periMsg': 'wikieditor-toolbar-tool-heading-example',
+ 'post': ' ====',
+ 'regex': /^(\s*)(={1,6})(.*?)\2(\s*)$/,
+ 'regexReplace': "\$1====\$3====\$4",
+ 'ownline': true
+ }
+ }
+ },
+ 'heading-5' : {
+ 'labelMsg': 'wikieditor-toolbar-tool-heading-5',
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': '===== ',
+ 'periMsg': 'wikieditor-toolbar-tool-heading-example',
+ 'post': ' =====',
+ 'regex': /^(\s*)(={1,6})(.*?)\2(\s*)$/,
+ 'regexReplace': "\$1=====\$3=====\$4",
+ 'ownline': true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ 'format': {
+ 'labelMsg': 'wikieditor-toolbar-group-format',
+ 'tools': {
+ 'ulist': {
+ 'labelMsg': 'wikieditor-toolbar-tool-ulist',
+ 'type': 'button',
+ 'icon': {
+ 'default': 'format-ulist.png',
+ 'default-rtl': 'format-ulist-rtl.png'
+ },
+ 'offset': {
+ 'default': [2, -1366],
+ 'default-rtl': [-70, -286]
+ },
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "* ",
+ 'periMsg': 'wikieditor-toolbar-tool-ulist-example',
+ 'post': "",
+ 'ownline': true,
+ 'splitlines': true
+ }
+ }
+ },
+ 'olist': {
+ 'labelMsg': 'wikieditor-toolbar-tool-olist',
+ 'type': 'button',
+ 'icon': {
+ 'default': 'format-olist.png',
+ 'default-rtl': 'format-olist-rtl.png'
+ },
+ 'offset': {
+ 'default': [2, -1078],
+ 'default-rtl': [-70, -358]
+ },
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "# ",
+ 'periMsg': 'wikieditor-toolbar-tool-olist-example',
+ 'post': "",
+ 'ownline': true,
+ 'splitlines': true
+ }
+ }
+ },
+ 'indent': {
+ 'labelMsg': 'wikieditor-toolbar-tool-indent',
+ 'type': 'button',
+ 'icon': {
+ 'default': 'format-indent.png',
+ 'default-rtl': 'format-indent-rtl.png'
+ },
+ 'offset': {
+ 'default': [2, -646],
+ 'default-rtl': [-70, -430]
+ },
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': ":",
+ 'periMsg': 'wikieditor-toolbar-tool-indent-example',
+ 'post': "",
+ 'ownline': true,
+ 'splitlines': true
+ }
+ }
+ },
+ 'nowiki': {
+ 'labelMsg': 'wikieditor-toolbar-tool-nowiki',
+ 'type': 'button',
+ 'icon': 'insert-nowiki.png',
+ 'offset': [-70, -70],
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "<nowiki>",
+ 'periMsg': 'wikieditor-toolbar-tool-nowiki-example',
+ 'post': "</nowiki>"
+ }
+ }
+ },
+ 'newline': {
+ 'labelMsg': 'wikieditor-toolbar-tool-newline',
+ 'type': 'button',
+ 'icon': 'insert-newline.png',
+ 'offset': [2, -1726],
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "<br />\n"
+ }
+ }
+ }
+ }
+ },
+ 'size': {
+ 'tools': {
+ 'big': {
+ 'labelMsg': 'wikieditor-toolbar-tool-big',
+ 'type': 'button',
+ 'icon': 'format-big.png',
+ 'offset': [2, 2],
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "<big>",
+ 'periMsg': 'wikieditor-toolbar-tool-big-example',
+ 'post': "</big>"
+ }
+ }
+ },
+ 'small': {
+ 'labelMsg': 'wikieditor-toolbar-tool-small',
+ 'type': 'button',
+ 'icon': 'format-small.png',
+ 'offset': [2, -1150],
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "<small>",
+ 'periMsg': 'wikieditor-toolbar-tool-small-example',
+ 'post': "</small>"
+ }
+ }
+ },
+ 'superscript': {
+ 'labelMsg': 'wikieditor-toolbar-tool-superscript',
+ 'type': 'button',
+ 'icon': 'format-superscript.png',
+ 'offset': [2, -1294],
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "<sup>",
+ 'periMsg': 'wikieditor-toolbar-tool-superscript-example',
+ 'post': "</sup>"
+ }
+ }
+ },
+ 'subscript': {
+ 'labelMsg': 'wikieditor-toolbar-tool-subscript',
+ 'type': 'button',
+ 'icon': 'format-subscript.png',
+ 'offset': [2, -1222],
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "<sub>",
+ 'periMsg': 'wikieditor-toolbar-tool-subscript-example',
+ 'post': "</sub>"
+ }
+ }
+ }
+ }
+ },
+ 'insert': {
+ 'labelMsg': 'wikieditor-toolbar-group-insert',
+ 'tools': {
+ 'gallery': {
+ 'labelMsg': 'wikieditor-toolbar-tool-gallery',
+ 'type': 'button',
+ 'icon': 'insert-gallery.png',
+ 'offset': [2, -1510],
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "<gallery>\n",
+ 'periMsg': [
+ 'wikieditor-toolbar-tool-gallery-example', fileNamespace
+ ],
+ 'post': "\n</gallery>",
+ 'ownline': true
+ }
+ }
+ },
+ 'table': {
+ 'labelMsg': 'wikieditor-toolbar-tool-table',
+ 'type': 'button',
+ 'icon': 'insert-table.png',
+ 'offset': [2, -1942],
+ 'filters': [ '#wpTextbox1:not(.toolbar-dialogs)' ],
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "{| class=\"wikitable\" border=\"1\"\n|",
+ 'periMsg': 'wikieditor-toolbar-tool-table-example-old',
+ 'post': "\n|}",
+ 'ownline': true
+ }
+ }
+ },
+ 'redirect': {
+ 'labelMsg': 'wikieditor-toolbar-tool-redirect',
+ 'type': 'button',
+ 'icon': {
+ 'default': 'insert-redirect.png',
+ 'default-rtl': 'insert-redirect-rtl.png'
+ },
+ 'offset': {
+ 'default': [-70, -142],
+ 'default-rtl': [-70, -502]
+ },
+ 'action': {
+ 'type': 'encapsulate',
+ 'options': {
+ 'pre': "#REDIRECT [[",
+ 'periMsg': 'wikieditor-toolbar-tool-redirect-example',
+ 'post': "]]",
+ 'ownline': true
+ }
+ }
+ }
+ }
+ }
+ }
+ },
+ 'characters': {
+ 'labelMsg': 'wikieditor-toolbar-section-characters',
+ 'type': 'booklet',
+ 'deferLoad': true,
+ 'pages': {
+ 'latin': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-latin',
+ 'layout': 'characters',
+ 'characters': [
+ "\u00c1", "\u00e1", "\u00c0", "\u00e0", "\u00c2", "\u00e2", "\u00c4", "\u00e4", "\u00c3",
+ "\u00e3", "\u01cd", "\u01ce", "\u0100", "\u0101", "\u0102", "\u0103", "\u0104", "\u0105",
+ "\u00c5", "\u00e5", "\u0106", "\u0107", "\u0108", "\u0109", "\u00c7", "\u00e7", "\u010c",
+ "\u010d", "\u010a", "\u010b", "\u0110", "\u0111", "\u010e", "\u010f", "\u00c9", "\u00e9",
+ "\u00c8", "\u00e8", "\u00ca", "\u00ea", "\u00cb", "\u00eb", "\u011a", "\u011b", "\u0112",
+ "\u0113", "\u0114", "\u0115", "\u0116", "\u0117", "\u0118", "\u0119", "\u011c", "\u011d",
+ "\u0122", "\u0123", "\u011e", "\u011f", "\u0120", "\u0121", "\u0124", "\u0125", "\u0126",
+ "\u0127", "\u00cd", "\u00ed", "\u00cc", "\u00ec", "\u00ce", "\u00ee", "\u00cf", "\u00ef",
+ "\u0128", "\u0129", "\u01cf", "\u01d0", "\u012a", "\u012b", "\u012c", "\u012d", "\u0130",
+ "\u0131", "\u012e", "\u012f", "\u0134", "\u0135", "\u0136", "\u0137", "\u0139", "\u013a",
+ "\u013b", "\u013c", "\u013d", "\u013e", "\u0141", "\u0142", "\u013f", "\u0140", "\u0143",
+ "\u0144", "\u00d1", "\u00f1", "\u0145", "\u0146", "\u0147", "\u0148", "\u00d3", "\u00f3",
+ "\u00d2", "\u00f2", "\u00d4", "\u00f4", "\u00d6", "\u00f6", "\u00d5", "\u00f5", "\u01d1",
+ "\u01d2", "\u014c", "\u014d", "\u014e", "\u014f", "\u01ea", "\u01eb", "\u0150", "\u0151",
+ "\u0154", "\u0155", "\u0156", "\u0157", "\u0158", "\u0159", "\u015a", "\u015b", "\u015c",
+ "\u015d", "\u015e", "\u015f", "\u0160", "\u0161", "\u0162", "\u0163", "\u0164", "\u0165",
+ "\u00da", "\u00fa", "\u00d9", "\u00f9", "\u00db", "\u00fb", "\u00dc", "\u00fc", "\u0168",
+ "\u0169", "\u016e", "\u016f", "\u01d3", "\u01d4", "\u016a", "\u016b", "\u01d6", "\u01d8",
+ "\u01da", "\u01dc", "\u016c", "\u016d", "\u0172", "\u0173", "\u0170", "\u0171", "\u0174",
+ "\u0175", "\u00dd", "\u00fd", "\u0176", "\u0177", "\u0178", "\u00ff", "\u0232", "\u0233",
+ "\u0179", "\u017a", "\u017d", "\u017e", "\u017b", "\u017c", "\u00c6", "\u00e6", "\u01e2",
+ "\u01e3", "\u00d8", "\u00f8", "\u0152", "\u0153", "\u00df", "\u00f0", "\u00de", "\u00fe",
+ "\u018f", "\u0259"
+ ]
+ },
+ 'latinextended': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-latinextended',
+ 'layout': 'characters',
+ 'characters': [
+ "\u1e00", "\u1e01", "\u1e9a", "\u1ea0", "\u1ea1", "\u1ea2", "\u1ea3", "\u1ea4", "\u1ea5",
+ "\u1ea6", "\u1ea7", "\u1ea8", "\u1ea9", "\u1eaa", "\u1eab", "\u1eac", "\u1ead", "\u1eae",
+ "\u1eaf", "\u1eb0", "\u1eb1", "\u1eb2", "\u1eb3", "\u1eb4", "\u1eb5", "\u1eb6", "\u1eb7",
+ "\u1e02", "\u1e03", "\u1e04", "\u1e05", "\u1e06", "\u1e07", "\u1e08", "\u1e09", "\u1e0a",
+ "\u1e0b", "\u1e0c", "\u1e0d", "\u1e0e", "\u1e0f", "\u1e10", "\u1e11", "\u1e12", "\u1e13",
+ "\u1e14", "\u1e15", "\u1e16", "\u1e17", "\u1e18", "\u1e19", "\u1e1a", "\u1e1b", "\u1e1c",
+ "\u1e1d", "\u1eb8", "\u1eb9", "\u1eba", "\u1ebb", "\u1ebc", "\u1ebd", "\u1ebe", "\u1ebf",
+ "\u1ec0", "\u1ec1", "\u1ec2", "\u1ec3", "\u1ec4", "\u1ec5", "\u1ec6", "\u1ec7", "\u1e1e",
+ "\u1e1f", "\u1e20", "\u1e21", "\u1e22", "\u1e23", "\u1e24", "\u1e25", "\u1e26", "\u1e27",
+ "\u1e28", "\u1e29", "\u1e2a", "\u1e2b", "\u1e96", "\u1e2c", "\u1e2d", "\u1e2e", "\u1e2f",
+ "\u1ec8", "\u1ec9", "\u1eca", "\u1ecb", "\u1e30", "\u1e31", "\u1e32", "\u1e33", "\u1e34",
+ "\u1e35", "\u1e36", "\u1e37", "\u1e38", "\u1e39", "\u1e3a", "\u1e3b", "\u1e3c", "\u1e3d",
+ "\u1efa", "\u1efb", "\u1e3e", "\u1e3f", "\u1e40", "\u1e41", "\u1e42", "\u1e43", "\u1e44",
+ "\u1e45", "\u1e46", "\u1e47", "\u1e48", "\u1e49", "\u1e4a", "\u1e4b", "\u1e4c", "\u1e4d",
+ "\u1e4e", "\u1e4f", "\u1e50", "\u1e51", "\u1e52", "\u1e53", "\u1ecc", "\u1ecd", "\u1ece",
+ "\u1ecf", "\u1ed0", "\u1ed1", "\u1ed2", "\u1ed3", "\u1ed4", "\u1ed5", "\u1ed6", "\u1ed7",
+ "\u1ed8", "\u1ed9", "\u1eda", "\u1edb", "\u1edc", "\u1edd", "\u1ede", "\u1edf", "\u1ee0",
+ "\u1ee1", "\u1ee2", "\u1ee3", "\u1e54", "\u1e55", "\u1e56", "\u1e57", "\u1e58", "\u1e59",
+ "\u1e5a", "\u1e5b", "\u1e5c", "\u1e5d", "\u1e5e", "\u1e5f", "\u1e60", "\u1e61", "\u1e9b",
+ "\u1e62", "\u1e63", "\u1e64", "\u1e65", "\u1e66", "\u1e67", "\u1e68", "\u1e69", "\u1e9c",
+ "\u1e9d", "\u1e6a", "\u1e6b", "\u1e6c", "\u1e6d", "\u1e6e", "\u1e6f", "\u1e70", "\u1e71",
+ "\u1e97", "\u1e72", "\u1e73", "\u1e74", "\u1e75", "\u1e76", "\u1e77", "\u1e78", "\u1e79",
+ "\u1e7a", "\u1e7b", "\u1ee4", "\u1ee5", "\u1ee6", "\u1ee7", "\u1ee8", "\u1ee9", "\u1eea",
+ "\u1eeb", "\u1eec", "\u1eed", "\u1eee", "\u1eef", "\u1ef0", "\u1ef1", "\u1e7c", "\u1e7d",
+ "\u1e7e", "\u1e7f", "\u1efc", "\u1efd", "\u1e80", "\u1e81", "\u1e82", "\u1e83", "\u1e84",
+ "\u1e85", "\u1e86", "\u1e87", "\u1e88", "\u1e89", "\u1e98", "\u1e8a", "\u1e8b", "\u1e8c",
+ "\u1e8d", "\u1e8e", "\u1e8f", "\u1e99", "\u1ef2", "\u1ef3", "\u1ef4", "\u1ef5", "\u1ef6",
+ "\u1ef7", "\u1ef8", "\u1ef9", "\u1efe", "\u1eff", "\u1e90", "\u1e91", "\u1e92", "\u1e93",
+ "\u1e94", "\u1e95", "\u1e9e", "\u1e9f"
+ ]
+ },
+ 'ipa': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-ipa',
+ 'layout': 'characters',
+ 'characters': [
+ "p", "t\u032a", "t", "\u0288", "c", "k", "q", "\u02a1", "\u0294", "b","d\u032a", "d", "\u0256",
+ "\u025f", "\u0261", "\u0262", "\u0253", "\u0257", "\u0284", "\u0260", "\u029b", "t\u0361s",
+ "t\u0361\u0283", "t\u0361\u0255", "d\u0361z", "d\u0361\u0292", "d\u0361\u0291", "\u0278", "f",
+ "\u03b8", "s", "\u0283", "\u0285", "\u0286", "\u0282", "\u0255", "\u00e7", "\u0267", "x",
+ "\u03c7", "\u0127", "\u029c", "h", "\u03b2", "v", "\u028d", "\u00f0", "z", "\u0292", "\u0293",
+ "\u0290", "\u0291", "\u029d", "\u0263", "\u0281", "\u0295", "\u0296", "\u02a2", "\u0266",
+ "\u026c", "\u026e", "m", "m\u0329", "\u0271", "\u0271\u0329", "\u0271\u030d", "n\u032a",
+ "n\u032a\u030d", "n", "n\u0329", "\u0273", "\u0273\u0329", "\u0272", "\u0272\u0329", "\u014b",
+ "\u014b\u030d", "\u014b\u0329", "\u0274", "\u0274\u0329", "\u0299", "\u0299\u0329", "r",
+ "r\u0329", "\u0280", "\u0280\u0329", "\u027e", "\u027d", "\u027f", "\u027a", "l\u032a",
+ "l\u032a\u0329", "l", "l\u0329", "\u026b", "\u026b\u0329", "\u026d", "\u026d\u0329", "\u028e",
+ "\u028e\u0329", "\u029f", "\u029f\u0329", "w", "\u0265", "\u028b", "\u0279", "\u027b", "j",
+ "\u0270", "\u0298", "\u01c2", "\u01c0", "!", "\u01c1", "\u02b0", "\u02b1", "\u02b7", "\u02b8",
+ "\u02b2", "\u02b3", "\u207f", "\u02e1", "\u02b4", "\u02b5", "\u02e2", "\u02e3", "\u02e0",
+ "\u02b6", "\u02e4", "\u02c1", "\u02c0", "\u02bc", "i", "i\u032f", "\u0129", "y", "y\u032f",
+ "\u1ef9", "\u026a", "\u026a\u032f", "\u026a\u0303", "\u028f", "\u028f\u032f", "\u028f\u0303",
+ "\u0268", "\u0268\u032f", "\u0268\u0303", "\u0289", "\u0289\u032f", "\u0289\u0303", "\u026f",
+ "\u026f\u032f", "\u026f\u0303", "u", "u\u032f", "\u0169", "\u028a", "\u028a\u032f",
+ "\u028a\u0303", "e", "e\u032f", "\u1ebd", "\u00f8", "\u00f8\u032f", "\u00f8\u0303", "\u0258",
+ "\u0258\u032f", "\u0258\u0303", "\u0275", "\u0275\u032f", "\u0275\u0303", "\u0264",
+ "\u0264\u032f", "\u0264\u0303", "o", "o\u032f", "\u00f5", "\u025b", "\u025b\u032f",
+ "\u025b\u0303", "\u0153", "\u0153\u032f", "\u0153\u0303", "\u025c", "\u025c\u032f",
+ "\u025c\u0303", "\u0259", "\u0259\u032f", "\u0259\u0303", "\u025e", "\u025e\u032f",
+ "\u025e\u0303", "\u028c", "\u028c\u032f", "\u028c\u0303", "\u0254", "\u0254\u032f",
+ "\u0254\u0303", "\u00e6", "\u00e6\u032f", "\u00e6\u0303", "\u0276", "\u0276\u032f",
+ "\u0276\u0303", "a", "a\u032f", "\u00e3", "\u0250", "\u0250\u032f", "\u0250\u0303", "\u0251",
+ "\u0251\u032f", "\u0251\u0303", "\u0252", "\u0252\u032f", "\u0252\u0303", "\u02c8", "\u02cc",
+ "\u02d0", "\u02d1", "\u02d8", ".", "\u203f", "|", "\u2016"
+ ]
+ },
+ 'symbols': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-symbols',
+ 'layout': 'characters',
+ 'characters': [
+ "~", "|", "\u00a1", "\u00bf", "\u2020", "\u2021", "\u2194", "\u2191", "\u2193", "\u2022",
+ "\u00b6", "#", "\u00bd", "\u2153", "\u2154", "\u00bc", "\u00be", "\u215b", "\u215c", "\u215d",
+ "\u215e", "\u221e", "\u2018", "\u2019",
+ {
+ 'label': "\u201c\u201d",
+ 'action': {
+ 'type': 'encapsulate', 'options': { 'pre': "\u201c", 'post': "\u201d" }
+ }
+ },
+ {
+ 'label': "\u201e\u201c",
+ 'action': {
+ 'type': 'encapsulate', 'options': { 'pre': "\u201e", 'post': "\u201c" }
+ }
+ },
+ {
+ 'label': "\u201e\u201d",
+ 'action': {
+ 'type': 'encapsulate', 'options': { 'pre': "\u201e", 'post': "\u201d" }
+ }
+ },
+ {
+ 'label': "\u00ab\u00bb",
+ 'action': {
+ 'type': 'encapsulate', 'options': { 'pre': "\u00ab", 'post': "\u00bb" }
+ }
+ },
+ "\u00a4", "\u20b3", "\u0e3f", "\u20b5", "\u00a2", "\u20a1", "\u20a2", "$", "\u20ab", "\u20af",
+ "\u20ac", "\u20a0", "\u20a3", "\u0192", "\u20b4", "\u20ad", "\u20a4", "\u2133", "\u20a5",
+ "\u20a6", "\u2116", "\u20a7", "\u20b0", "\u00a3", "\u17db", "\u20a8", "\u20aa", "\u09f3",
+ "\u20ae", "\u20a9", "\u00a5", "\u2660", "\u2663", "\u2665", "\u2666", "m\u00b2", "m\u00b3",
+ "\u2013", "\u2014", "\u2026", "\u2018", "\u2019", "\u201c", "\u201d", "\u00b0", "\u2032",
+ "\u2033", "\u2248", "\u2260", "\u2264", "\u2265", "\u00b1", "\u2212", "\u00d7", "\u00f7",
+ "\u2190", "\u2192", "\u00b7", "\u00a7"
+ ]
+ },
+ 'greek': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-greek',
+ 'layout': 'characters',
+ 'language': 'hl',
+ 'characters': [
+ "\u0391", "\u0386", "\u03b1", "\u03ac", "\u0392", "\u03b2", "\u0393", "\u03b3", "\u0394",
+ "\u03b4", "\u0395", "\u0388", "\u03b5", "\u03ad", "\u0396", "\u03b6", "\u0397", "\u0389",
+ "\u03b7", "\u03ae", "\u0398", "\u03b8", "\u0399", "\u038a", "\u03b9", "\u03af", "\u039a",
+ "\u03ba", "\u039b", "\u03bb", "\u039c", "\u03bc", "\u039d", "\u03bd", "\u039e", "\u03be",
+ "\u039f", "\u038c", "\u03bf", "\u03cc", "\u03a0", "\u03c0", "\u03a1", "\u03c1", "\u03a3",
+ "\u03c3", "\u03c2", "\u03a4", "\u03c4", "\u03a5", "\u038e", "\u03c5", "\u03cd", "\u03a6",
+ "\u03c6", "\u03a7", "\u03c7", "\u03a8", "\u03c8", "\u03a9", "\u038f", "\u03c9", "\u03ce"
+ ]
+ },
+ 'cyrillic': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-cyrillic',
+ 'layout': 'characters',
+ 'characters': [
+ "\u0410", "\u0430", "\u04d8", "\u04d9", "\u0411", "\u0431", "\u0412", "\u0432", "\u0413",
+ "\u0433", "\u0490", "\u0491", "\u0403", "\u0453", "\u0492", "\u0493", "\u0414", "\u0434",
+ "\u0402", "\u0452", "\u0415", "\u0435", "\u0404", "\u0454", "\u0401", "\u0451", "\u0416",
+ "\u0436", "\u0417", "\u0437", "\u0405", "\u0455", "\u0418", "\u0438", "\u0406", "\u0456",
+ "\u0407", "\u0457", "\u04c0", "\u0419", "\u0439", "\u04e2", "\u04e3", "\u0408", "\u0458",
+ "\u041a", "\u043a", "\u040c", "\u045c", "\u049a", "\u049b", "\u041b", "\u043b", "\u0409",
+ "\u0459", "\u041c", "\u043c", "\u041d", "\u043d", "\u040a", "\u045a", "\u04a2", "\u04a3",
+ "\u041e", "\u043e", "\u04e8", "\u04e9", "\u041f", "\u043f", "\u0420", "\u0440", "\u0421",
+ "\u0441", "\u0422", "\u0442", "\u040b", "\u045b", "\u0423", "\u0443", "\u040e", "\u045e",
+ "\u04ee", "\u04ef", "\u04b0", "\u04b1", "\u04ae", "\u04af", "\u0424", "\u0444", "\u0425",
+ "\u0445", "\u04b2", "\u04b3", "\u04ba", "\u04bb", "\u0426", "\u0446", "\u0427", "\u0447",
+ "\u04b6", "\u04b7", "\u040f", "\u045f", "\u0428", "\u0448", "\u0429", "\u0449", "\u042a",
+ "\u044a", "\u042b", "\u044b", "\u042c", "\u044c", "\u042d", "\u044d", "\u042e", "\u044e",
+ "\u042f", "\u044f"
+ ]
+ },
+ // The core 28-letter alphabet, special letters for the Arabic language,
+ // vowels, punctuation, digits.
+ // Names of letters are written as in the Unicode charts.
+ 'arabic': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-arabic',
+ 'layout': 'characters',
+ 'language': 'ar',
+ 'direction': 'rtl',
+ 'characters': [
+ // core alphabet
+ "\u0627", "\u0628", "\u062a", "\u062b", "\u062c", "\u062d", "\u062e", "\u062f",
+ "\u0630", "\u0631", "\u0632", "\u0633", "\u0634", "\u0635", "\u0636", "\u0637",
+ "\u0638", "\u0639", "\u063a", "\u0641", "\u0642", "\u0643", "\u0644", "\u0645",
+ "\u0646", "\u0647", "\u0648", "\u064a",
+ // special letters for the Arabic language
+ "\u0621", // Hamza
+ "\u0622", "\u0623", "\u0625", "\u0671", // Alef
+ "\u0624", // Waw hamza
+ "\u0626", // Yeh hamza
+ "\u0649", // Alef maksura
+ "\u0629", // Teh marbuta
+ // vowels
+ "\u064E", "\u064F", "\u0650", "\u064B", "\u064C", "\u064D", "\u0651", "\u0652",
+ "\u0670",
+ // punctuation
+ "\u060c", "\u061b", "\u061f", "\u0640",
+ // digits
+ "\u0660", "\u0661", "\u0662", "\u0663", "\u0664", "\u0665", "\u0666", "\u0667",
+ "\u0668", "\u0669", "\u066A", "\u066B", "\u066C", "\u066D"
+ ]
+ },
+ // Characters for languages other than Arabic.
+ 'arabicextended': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-arabicextended',
+ 'layout': 'characters',
+ 'language': 'ar',
+ 'direction': 'rtl',
+ 'characters': [
+ // Alef
+ "\u0672", "\u0673", "\u0674", "\u0675", "\u0773", "\u0774",
+ // Beh
+ "\u066E", "\u067B", "\u067E", "\u0680", "\u0750", "\u0751", "\u0752", "\u0753",
+ "\u0754", "\u0755", "\u0756",
+ // Teh
+ "\u0679", "\u067A", "\u067C", "\u067D", "\u067F",
+ // Jeem
+ "\u0681", "\u0682", "\u0683", "\u0684", "\u0685", "\u0686", "\u0687", "\u06BF",
+ // Hah
+ "\u0757", "\u0758", "\u076E", "\u076F", "\u0772", "\u077C",
+ // Dal
+ "\u0688", "\u0689", "\u068A", "\u068B", "\u068C", "\u068D", "\u068E", "\u068F",
+ "\u0690", "\u06EE", "\u0759", "\u075A",
+ // Reh
+ "\u0691", "\u0692", "\u0693", "\u0694", "\u0695", "\u0696", "\u0697", "\u0698",
+ "\u0699", "\u06EF", "\u075B", "\u076B", "\u076C", "\u0771",
+ // Seen
+ "\u069A", "\u069B", "\u069C", "\u077D",
+ // Sheen
+ "\u06FA", "\u075C", "\u076D", "\u0770", "\u077E",
+ // Sad
+ "\u069D", "\u069E",
+ // Dad
+ "\u06FB",
+ // Tah
+ "\u069F",
+ // Ain
+ "\u06A0", "\u075D", "\u075E", "\u075F",
+ // Ghain
+ "\u06FC",
+ // Feh
+ "\u06A1", "\u06A2", "\u06A3", "\u06A4", "\u06A5", "\u06A6", "\u0760", "\u0761",
+ // Qaf
+ "\u066F", "\u06A7", "\u06A8",
+ // Kaf
+ "\u063B", "\u063C", "\u06A9", "\u06AA", "\u06AB", "\u06AC", "\u06AD", "\u06AE",
+ "\u06AF", "\u06B0", "\u06B1", "\u06B2", "\u06B3", "\u06B4", "\u0762", "\u0763",
+ "\u0764", "\u077F",
+ // Lam
+ "\u06B5", "\u06B6", "\u06B7", "\u06B8", "\u076A",
+ // Meem
+ "\u0765", "\u0766",
+ // Noon
+ "\u06B9", "\u06BA", "\u06BB", "\u06BC", "\u06BD", "\u0767", "\u0768", "\u0769",
+ // Heh
+ "\u06BE", "\u06C0", "\u06C1", "\u06C2", "\u06C3", "\u06D5", "\u06FF",
+ // Waw
+ "\u0676", "\u0677", "\u06C4", "\u06C5", "\u06C6", "\u06C7", "\u06C8", "\u06C9",
+ "\u06CA", "\u06CB", "\u06CF", "\u0778", "\u0779",
+ // Yeh
+ "\u0620", "\u063D", "\u063E", "\u063F", "\u0678", "\u06CC", "\u06CD", "\u06CE",
+ "\u06D0", "\u06D1", "\u06D2", "\u06D3", "\u0775", "\u0776", "\u0777", "\u077A",
+ "\u077B",
+ // diacritics
+ "\u0656", "\u0657", "\u0658", "\u0659", "\u065A", "\u065B", "\u065C", "\u065D",
+ "\u065E", "\u065F",
+ // special punctuation
+ "\u06D4", "\u06FD", "\u06FE",
+ // special digits
+ "\u06F0", "\u06F1", "\u06F2", "\u06F3", "\u06F4", "\u06F5", "\u06F6", "\u06F7",
+ "\u06F8", "\u06F9",
+ ]
+ },
+ 'hebrew': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-hebrew',
+ 'layout': 'characters',
+ 'direction': 'rtl',
+ 'characters': [
+ "\u05d0", "\u05d1", "\u05d2", "\u05d3", "\u05d4", "\u05d5", "\u05d6", "\u05d7", "\u05d8",
+ "\u05d9", "\u05db", "\u05da", "\u05dc", "\u05de", "\u05dd", "\u05e0", "\u05df", "\u05e1",
+ "\u05e2", "\u05e4", "\u05e3", "\u05e6", "\u05e5", "\u05e7", "\u05e8", "\u05e9", "\u05ea",
+ "\u05f3", "\u05f4", "\u05f0", "\u05f1", "\u05f2", "\u05be",
+ [ "\u05b0\u25cc", "\u05b0" ], [ "\u05b1\u25cc", "\u05b1" ], [ "\u05b2\u25cc", "\u05b2" ],
+ [ "\u05b3\u25cc", "\u05b3" ], [ "\u05b4\u25cc", "\u05b4" ], [ "\u05b5\u25cc", "\u05b5" ],
+ [ "\u05b6\u25cc", "\u05b6" ], [ "\u05b7\u25cc", "\u05b7" ], [ "\u05b8\u25cc", "\u05b8" ],
+ [ "\u05b9\u25cc", "\u05b9" ], [ "\u05bb\u25cc", "\u05bb" ], [ "\u05bc\u25cc", "\u05bc" ],
+ [ "\u05c1\u25cc", "\u05c1" ], [ "\u05c2\u25cc", "\u05c2" ], [ "\u05c7\u25cc", "\u05c7" ],
+ [ "\u0591\u25cc", "\u0591" ], [ "\u0592\u25cc", "\u0592" ], [ "\u0593\u25cc", "\u0593" ],
+ [ "\u0594\u25cc", "\u0594" ], [ "\u0595\u25cc", "\u0595" ], [ "\u0596\u25cc", "\u0596" ],
+ [ "\u0597\u25cc", "\u0597" ], [ "\u0598\u25cc", "\u0598" ], [ "\u0599\u25cc", "\u0599" ],
+ [ "\u059a\u25cc", "\u059a" ], [ "\u059b\u25cc", "\u059b" ], [ "\u059c\u25cc", "\u059c" ],
+ [ "\u059d\u25cc", "\u059d" ], [ "\u059e\u25cc", "\u059e" ], [ "\u059f\u25cc", "\u059f" ],
+ [ "\u05a0\u25cc", "\u05a0" ], [ "\u05a1\u25cc", "\u05a1" ], [ "\u05a2\u25cc", "\u05a2" ],
+ [ "\u05a3\u25cc", "\u05a3" ], [ "\u05a4\u25cc", "\u05a4" ], [ "\u05a5\u25cc", "\u05a5" ],
+ [ "\u05a6\u25cc", "\u05a6" ], [ "\u05a7\u25cc", "\u05a7" ], [ "\u05a8\u25cc", "\u05a8" ],
+ [ "\u05a9\u25cc", "\u05a9" ], [ "\u05aa\u25cc", "\u05aa" ], [ "\u05ab\u25cc", "\u05ab" ],
+ [ "\u05ac\u25cc", "\u05ac" ], [ "\u05ad\u25cc", "\u05ad" ], [ "\u05ae\u25cc", "\u05ae" ],
+ [ "\u05af\u25cc", "\u05af" ], [ "\u05bf\u25cc", "\u05bf" ], [ "\u05c0\u25cc", "\u05c0" ],
+ [ "\u05c3\u25cc", "\u05c3" ]
+ ]
+ },
+ 'bangla': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-bangla',
+ 'language': 'bn',
+ 'layout': 'characters',
+ 'characters': [
+ "\u0985", "\u0986", "\u0987", "\u0988", "\u0989", "\u098a", "\u098b", "\u098f", "\u0990",
+ "\u0993", "\u0994", "\u09be", "\u09bf", "\u09c0", "\u09c1", "\u09c2", "\u09c3", "\u09c7",
+ "\u09c8", "\u09cb", "\u09cc", "\u0995", "\u0996", "\u0997", "\u0998", "\u0999", "\u099a",
+ "\u099b", "\u099c", "\u099d", "\u099e", "\u099f", "\u09a0", "\u09a1", "\u09a2", "\u09a3",
+ "\u09a4", "\u09a5", "\u09a6", "\u09a7", "\u09a8", "\u09aa", "\u09ab", "\u09ac", "\u09ad",
+ "\u09ae", "\u09af", "\u09b0", "\u09b2", "\u09b6", "\u09b7", "\u09b8", "\u09b9", "\u09a1\u09bc",
+ "\u09a2\u09bc", "\u09af\u09bc", "\u09ce", "\u0982", "\u0983", "\u0981", "\u09cd", "\u09e7",
+ "\u09e8", "\u09e9", "\u09ea", "\u09eb", "\u09ec", "\u09ed", "\u09ee", "\u09ef", "\u09e6"
+ ]
+ },
+ 'telugu': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-telugu',
+ 'language': 'te',
+ 'layout': 'characters',
+ 'characters': [
+ "\u0c01", "\u0c02", "\u0c03", "\u0c05", "\u0c06", "\u0c07", "\u0c08", "\u0c09", "\u0c0a",
+ "\u0c0b", "\u0c60", "\u0c0c", "\u0c61", "\u0c0e", "\u0c0f", "\u0c10", "\u0c12", "\u0c13",
+ "\u0c14", "\u0c15", "\u0c16", "\u0c17", "\u0c18", "\u0c19", "\u0c1a", "\u0c1b", "\u0c1c",
+ "\u0c1d", "\u0c1e", "\u0c1f", "\u0c20", "\u0c21", "\u0c22", "\u0c23", "\u0c24", "\u0c25",
+ "\u0c26", "\u0c27", "\u0c28", "\u0c2a", "\u0c2b", "\u0c2c", "\u0c2d", "\u0c2e", "\u0c2f",
+ "\u0c30", "\u0c31", "\u0c32", "\u0c33", "\u0c35", "\u0c36", "\u0c37", "\u0c38", "\u0c39",
+ "\u0c3e", "\u0c3f", "\u0c40", "\u0c41", "\u0c42", "\u0c43", "\u0c44", "\u0c46", "\u0c47",
+ "\u0c48", "\u0c4a", "\u0c4b", "\u0c4c", "\u0c4d", "\u0c62", "\u0c63", "\u0c58", "\u0c59",
+ "\u0c66", "\u0c67", "\u0c68", "\u0c69", "\u0c6a", "\u0c6b", "\u0c6c", "\u0c6d", "\u0c6e",
+ "\u0c6f", "\u0c3d", "\u0c78", "\u0c79", "\u0c7a", "\u0c7b", "\u0c7c", "\u0c7d", "\u0c7e",
+ "\u0c7f"
+ ]
+ },
+ 'sinhala': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-sinhala',
+ 'language': 'si',
+ 'layout': 'characters',
+ 'characters': [
+ "\u0d85", "\u0d86", "\u0d87", "\u0d88", "\u0d89", "\u0d8a", "\u0d8b", "\u0d8c", "\u0d8d",
+ "\u0d8e", "\u0d8f", "\u0d90", "\u0d91", "\u0d92", "\u0d93", "\u0d94", "\u0d95", "\u0d96",
+ "\u0d9a", "\u0d9b", "\u0d9c", "\u0d9d", "\u0d9e", "\u0d9f", "\u0da0", "\u0da1", "\u0da2",
+ "\u0da3", "\u0da4", "\u0da5", "\u0da6", "\u0da7", "\u0da8", "\u0da9", "\u0daa", "\u0dab",
+ "\u0dac", "\u0dad", "\u0dae", "\u0daf", "\u0db0", "\u0db1", "\u0db3", "\u0db4", "\u0db5",
+ "\u0db6", "\u0db7", "\u0db8", "\u0db9", "\u0dba", "\u0dbb", "\u0dbd", "\u0dc0", "\u0dc1",
+ "\u0dc2", "\u0dc3", "\u0dc4", "\u0dc5", "\u0dc6",
+ [ "\u25cc\u0dcf", "\u0dcf" ], [ "\u25cc\u0dd0", "\u0dd0" ], [ "\u25cc\u0dd1", "\u0dd1" ],
+ [ "\u25cc\u0dd2", "\u0dd2" ], [ "\u25cc\u0dd3", "\u0dd3" ], [ "\u25cc\u0dd4", "\u0dd4" ],
+ [ "\u25cc\u0dd6", "\u0dd6" ], [ "\u25cc\u0dd8", "\u0dd8" ], [ "\u25cc\u0df2", "\u0df2" ],
+ [ "\u25cc\u0ddf", "\u0ddf" ], [ "\u25cc\u0df3", "\u0df3" ], [ "\u25cc\u0dd9", "\u0dd9" ],
+ [ "\u25cc\u0dda", "\u0dda" ], [ "\u25cc\u0ddc", "\u0ddc" ], [ "\u25cc\u0ddd", "\u0ddd" ],
+ [ "\u25cc\u0dde", "\u0dde" ], [ "\u25cc\u0dca", "\u0dca" ]
+ ]
+ },
+ 'gujarati': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-gujarati',
+ 'language': 'gu',
+ 'layout': 'characters',
+ 'characters': [
+ "\u0ad0", "\u0a85", "\u0a86", "\u0a87", "\u0a88", "\u0a89", "\u0a8a", "\u0a8b", "\u0ae0",
+ "\u0a8c", "\u0ae1", "\u0a8d", "\u0a8f", "\u0a90", "\u0a91", "\u0a93", "\u0a94", "\u0a95",
+ "\u0a96", "\u0a97", "\u0a98", "\u0a99", "\u0a9a", "\u0a9b", "\u0a9c", "\u0a9d", "\u0a9e",
+ "\u0a9f", "\u0aa0", "\u0aa1", "\u0aa2", "\u0aa3", "\u0aa4", "\u0aa5", "\u0aa6", "\u0aa7",
+ "\u0aa8", "\u0aaa", "\u0aab", "\u0aac", "\u0aad", "\u0aae", "\u0aaf", "\u0ab0", "\u0ab2",
+ "\u0ab5", "\u0ab6", "\u0ab7", "\u0ab8", "\u0ab9", "\u0ab3", "\u0abd",
+ [ "\u25cc\u0abe", "\u0abe" ], [ "\u25cc\u0abf", "\u0abf" ], [ "\u25cc\u0ac0", "\u0ac0" ],
+ [ "\u25cc\u0ac1", "\u0ac1" ], [ "\u25cc\u0ac2", "\u0ac2" ], [ "\u25cc\u0ac3", "\u0ac3" ],
+ [ "\u25cc\u0ac4", "\u0ac4" ], [ "\u25cc\u0ae2", "\u0ae2" ], [ "\u25cc\u0ae3", "\u0ae3" ],
+ [ "\u25cc\u0ac5", "\u0ac5" ], [ "\u25cc\u0ac7", "\u0ac7" ], [ "\u25cc\u0ac8", "\u0ac8" ],
+ [ "\u25cc\u0ac9", "\u0ac9" ], [ "\u25cc\u0acb", "\u0acb" ], [ "\u25cc\u0acc", "\u0acc" ],
+ [ "\u25cc\u0acd", "\u0acd" ]
+ ]
+ },
+ 'thai': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-thai',
+ 'language': 'th',
+ 'layout': 'characters',
+ 'characters': [
+ "\u0e01", "\u0e02", "\u0e03", "\u0e04", "\u0e05", "\u0e06", "\u0e07", "\u0e08", "\u0e09",
+ "\u0e0a", "\u0e0b", "\u0e0c", "\u0e0d", "\u0e0e", "\u0e0f", "\u0e10", "\u0e11", "\u0e12",
+ "\u0e13", "\u0e14", "\u0e15", "\u0e16", "\u0e17", "\u0e18", "\u0e19", "\u0e1a", "\u0e1b",
+ "\u0e1c", "\u0e1d", "\u0e1e", "\u0e1f", "\u0e20", "\u0e21", "\u0e22", "\u0e23", "\u0e24",
+ "\u0e25", "\u0e26", "\u0e27", "\u0e28", "\u0e29", "\u0e2a", "\u0e2b", "\u0e2c", "\u0e2d",
+ "\u0e2e", "\u0e30", "\u0e31", "\u0e32", "\u0e45", "\u0e33", "\u0e34", "\u0e35", "\u0e36",
+ "\u0e37", "\u0e38", "\u0e39", "\u0e40", "\u0e41", "\u0e42", "\u0e43", "\u0e44", "\u0e47",
+ "\u0e48", "\u0e49", "\u0e4a", "\u0e4b", "\u0e4c", "\u0e4d", "\u0e3a", "\u0e4e", "\u0e50",
+ "\u0e51", "\u0e52", "\u0e53", "\u0e54", "\u0e55", "\u0e56", "\u0e57", "\u0e58", "\u0e59",
+ "\u0e3f", "\u0e46", "\u0e2f", "\u0e5a", "\u0e4f", "\u0e5b"
+ ]
+ },
+ 'lao': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-lao',
+ 'language': 'lo',
+ 'layout': 'characters',
+ 'characters': [
+ "\u0e81", "\u0e82", "\u0e84", "\u0e87", "\u0e88", "\u0eaa", "\u0e8a", "\u0e8d", "\u0e94",
+ "\u0e95", "\u0e96", "\u0e97", "\u0e99", "\u0e9a", "\u0e9b", "\u0e9c", "\u0e9d", "\u0e9e",
+ "\u0e9f", "\u0ea1", "\u0ea2", "\u0ea5", "\u0ea7", "\u0eab", "\u0ead", "\u0eae", "\u0ea3",
+ "\u0edc", "\u0edd", "\u0ebc", "\u0ebd", "\u0eb0", "\u0eb1", "\u0eb2", "\u0eb3", "\u0eb4",
+ "\u0eb5", "\u0eb6", "\u0eb7", "\u0eb8", "\u0eb9", "\u0ebb", "\u0ec0", "\u0ec1", "\u0ec2",
+ "\u0ec3", "\u0ec4", "\u0ec8", "\u0ec9", "\u0eca", "\u0ecb", "\u0ecc", "\u0ecd", "\u0ed0",
+ "\u0ed1", "\u0ed2", "\u0ed3", "\u0ed4", "\u0ed5", "\u0ed6", "\u0ed7", "\u0ed8", "\u0ed9",
+ "\u20ad", "\u0ec6", "\u0eaf"
+ ]
+ },
+ 'khmer': {
+ 'labelMsg': 'wikieditor-toolbar-characters-page-khmer',
+ 'language': 'km',
+ 'layout': 'characters',
+ 'characters': [
+ "\u1780", "\u1781", "\u1782", "\u1783", "\u1784", "\u1785", "\u1786", "\u1787", "\u1788",
+ "\u1789", "\u178a", "\u178b", "\u178c", "\u178d", "\u178e", "\u178f", "\u1790", "\u1791",
+ "\u1792", "\u1793", "\u1794", "\u1795", "\u1796", "\u1797", "\u1798", "\u1799", "\u179a",
+ "\u179b", "\u179c", "\u179f", "\u17a0", "\u17a1", "\u17a2", "\u17a3", "\u17a4", "\u17a5",
+ "\u17a6", "\u17a7", "\u17a8", "\u17a9", "\u17aa", "\u17ab", "\u17ac", "\u17ad", "\u17ae",
+ "\u17af", "\u17b0", "\u17b1", "\u17b2", "\u17b3", "\u17d2", "\u17b4", "\u17b5", "\u17b6",
+ "\u17b7", "\u17b8", "\u17b9", "\u17ba", "\u17bb", "\u17bc", "\u17bd", "\u17be", "\u17bf",
+ "\u17c0", "\u17c1", "\u17c2", "\u17c3", "\u17c4", "\u17c5", "\u17c6", "\u17c7", "\u17c8",
+ "\u17c9", "\u17ca", "\u17cb", "\u17cc", "\u17cd", "\u17ce", "\u17cf", "\u17d0", "\u17d1",
+ "\u17d3", "\u17dd", "\u17dc", "\u17e0", "\u17e1", "\u17e2", "\u17e3", "\u17e4", "\u17e5",
+ "\u17e6", "\u17e7", "\u17e8", "\u17e9", "\u17db", "\u17d4", "\u17d5", "\u17d6", "\u17d7",
+ "\u17d8", "\u17d9", "\u17da", "\u17f0", "\u17f1", "\u17f2", "\u17f3", "\u17f4", "\u17f5",
+ "\u17f6", "\u17f7", "\u17f8", "\u17f9", "\u19e0", "\u19e1", "\u19e2", "\u19e3", "\u19e4",
+ "\u19e5", "\u19e6", "\u19e7", "\u19e8", "\u19e9", "\u19ea", "\u19eb", "\u19ec", "\u19ed",
+ "\u19ee", "\u19ef", "\u19f0", "\u19f1", "\u19f2", "\u19f3", "\u19f4", "\u19f5", "\u19f6",
+ "\u19f7", "\u19f8", "\u19f9", "\u19fa", "\u19fb", "\u19fc", "\u19fd", "\u19fe", "\u19ff"
+ ]
+ }
+ }
+ },
+ 'help': {
+ 'labelMsg': 'wikieditor-toolbar-section-help',
+ 'type': 'booklet',
+ 'deferLoad': true,
+ 'pages': {
+ 'format': {
+ 'labelMsg': 'wikieditor-toolbar-help-page-format',
+ 'layout': 'table',
+ 'headings': [
+ { 'textMsg': 'wikieditor-toolbar-help-heading-description' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-syntax' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-result' }
+ ],
+ 'rows': [
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-italic-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-italic-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-italic-result' }
+ },
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-bold-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-bold-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-bold-result' }
+ },
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-bolditalic-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-bolditalic-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-bolditalic-result' }
+ }
+ ]
+ },
+ 'link': {
+ 'labelMsg': 'wikieditor-toolbar-help-page-link',
+ 'layout': 'table',
+ 'headings': [
+ { 'textMsg': 'wikieditor-toolbar-help-heading-description' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-syntax' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-result' }
+ ],
+ 'rows': [
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-ilink-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-ilink-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-ilink-result' }
+ },
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-xlink-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-xlink-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-xlink-result' }
+ }
+ ]
+ },
+ 'heading': {
+ 'labelMsg': 'wikieditor-toolbar-help-page-heading',
+ 'layout': 'table',
+ 'headings': [
+ { 'textMsg': 'wikieditor-toolbar-help-heading-description' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-syntax' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-result' }
+ ],
+ 'rows': [
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-heading2-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-heading2-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-heading2-result' }
+ },
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-heading3-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-heading3-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-heading3-result' }
+ },
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-heading4-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-heading4-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-heading4-result' }
+ },
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-heading5-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-heading5-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-heading5-result' }
+ }
+ ]
+ },
+ 'list': {
+ 'labelMsg': 'wikieditor-toolbar-help-page-list',
+ 'layout': 'table',
+ 'headings': [
+ { 'textMsg': 'wikieditor-toolbar-help-heading-description' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-syntax' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-result' }
+ ],
+ 'rows': [
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-ulist-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-ulist-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-ulist-result' }
+ },
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-olist-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-olist-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-olist-result' }
+ }
+ ]
+ },
+ 'file': {
+ 'labelMsg': 'wikieditor-toolbar-help-page-file',
+ 'layout': 'table',
+ 'headings': [
+ { 'textMsg': 'wikieditor-toolbar-help-heading-description' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-syntax' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-result' }
+ ],
+ 'rows': [
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-file-description' },
+ 'syntax': { 'htmlMsg': [ 'wikieditor-toolbar-help-content-file-syntax', fileNamespace ] },
+ 'result': { 'htmlMsg': [ 'wikieditor-toolbar-help-content-file-result', mw.config.get( 'stylepath' ) ] }
+ }
+ ]
+ },
+ 'reference': {
+ 'labelMsg': 'wikieditor-toolbar-help-page-reference',
+ 'layout': 'table',
+ 'headings': [
+ { 'textMsg': 'wikieditor-toolbar-help-heading-description' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-syntax' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-result' }
+ ],
+ 'rows': [
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-reference-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-reference-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-reference-result' }
+ },
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-rereference-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-rereference-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-rereference-result' }
+ },
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-showreferences-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-showreferences-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-showreferences-result' }
+ }
+ ]
+ },
+ 'discussion': {
+ 'labelMsg': 'wikieditor-toolbar-help-page-discussion',
+ 'layout': 'table',
+ 'headings': [
+ { 'textMsg': 'wikieditor-toolbar-help-heading-description' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-syntax' },
+ { 'textMsg': 'wikieditor-toolbar-help-heading-result' }
+ ],
+ 'rows': [
+ {
+ 'description': {
+ 'htmlMsg': 'wikieditor-toolbar-help-content-signaturetimestamp-description'
+ },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-signaturetimestamp-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-signaturetimestamp-result' }
+ },
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-signature-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-signature-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-signature-result' }
+ },
+ {
+ 'description': { 'htmlMsg': 'wikieditor-toolbar-help-content-indent-description' },
+ 'syntax': { 'htmlMsg': 'wikieditor-toolbar-help-content-indent-syntax' },
+ 'result': { 'htmlMsg': 'wikieditor-toolbar-help-content-indent-result' }
+ }
+ ]
+ }
+ }
+ }
+ } };
+}
+
+}; } ) ( jQuery ); \ No newline at end of file
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.css b/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.css
new file mode 100644
index 00000000..aab08ca8
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.css
@@ -0,0 +1,303 @@
+/*
+ * CSS for WikiEditor Toolbar jQuery plugin
+ */
+
+.wikiEditor-ui-toolbar {
+ position: relative;
+ width: 100%;
+}
+/* Expandable Sections */
+.wikiEditor-ui-toolbar .sections {
+ float: left;
+ width: 100%;
+ clear: both;
+ height: 0;
+}
+.wikiEditor-ui-toolbar .sections .section {
+ display: none;
+ float: left;
+ width: 100%;
+ border-top: solid 1px #DDDDDD;
+ background-color: #E0EEf7;
+}
+.wikiEditor-ui-toolbar {
+ /* @embed */
+ background-image: url(images/toolbar/base.png);
+ background-position: left top;
+ background-repeat: repeat-x;
+}
+/* Gets overridden when the section div is in class loading - see below */
+.wikiEditor-ui-toolbar .sections div .spinner {
+ display: none;
+}
+.wikiEditor-ui-toolbar .sections .loading .spinner {
+ display: block;
+ float: left;
+ /* @embed */
+ background-image: url(images/toolbar/loading.gif);
+ background-position: left center;
+ background-repeat: no-repeat;
+ padding-left: 32px;
+ margin-left: 0.5em;
+ height: 32px;
+ color: #666666;
+}
+/* Top Level Containers */
+.wikiEditor-ui-toolbar .tabs,
+.wikiEditor-ui-toolbar .section-main {
+ position: relative;
+ float: left;
+ height: 26px;
+}
+/* Groups */
+.wikiEditor-ui-toolbar .group {
+ float: left;
+ height: 26px;
+ padding-right: 6px;
+ border-right: solid 1px #DDDDDD;
+ margin: 3px;
+}
+.wikiEditor-ui-toolbar .group-search {
+ float: right;
+ padding: 0 0 0 6px;
+ border-right: none;
+ border-left: 1px solid #DDDDDD;
+}
+.wikiEditor-ui-toolbar .group-insert {
+ border-right: none;
+}
+/* Sprited Buttons */
+.wikiEditor-toolbar-spritedButton {
+ /* @embed */
+ background: url(images/toolbar/button-sprite.png) 0 0 no-repeat;
+ display: block;
+ float: left;
+ height: 22px;
+ text-indent: -9999px;
+ width: 22px;
+ padding: 2px;
+ cursor: pointer;
+ overflow: hidden;
+}
+/* Tabs */
+.wikiEditor-ui-toolbar .tabs {
+ list-style: none;
+ margin: 3px;
+}
+.wikiEditor-ui-toolbar .tabs span.tab {
+ display: block;
+ float: left;
+ line-height: 26px;
+}
+.wikiEditor-ui-toolbar .tabs span.tab a,
+.wikiEditor-ui-toolbar .tabs span.tab a:visited {
+ display: inline-block;
+ float: left;
+ padding-left: 18px;
+ padding-right: 12px;
+ height: 26px;
+ cursor: pointer;
+ color: #0645ad;
+ /* @embed */
+ background-image: url(images/toolbar/arrow-ltr.png);
+ background-position: left center;
+ background-repeat: no-repeat;
+}
+.wikiEditor-ui-toolbar .tabs span.tab a.current,
+.wikiEditor-ui-toolbar .tabs span.tab a.current:visited {
+ color: #333333;
+ /* @embed */
+ background-image: url(images/toolbar/arrow-down.png);
+}
+.wikiEditor-ui-toolbar .tabs span.tab a.current:hover {
+ text-decoration: none;
+}
+.wikiEditor-ui-toolbar .tabs span.tab a.loading {
+ /* @embed */
+ background-image: url(images/toolbar/loading-small.gif);
+}
+/* Toolbar */
+.wikiEditor-ui-toolbar .group .label {
+ float: left;
+ border: 0px;
+ height: 22px;
+ line-height: 22px;
+ margin: 2px;
+ margin-left: 5px;
+ margin-right: 8px;
+ color: #777777;
+ cursor: default;
+}
+.wikiEditor-ui-toolbar .group img.tool {
+ float: left;
+ border: 0px;
+ height: 22px;
+ width: 22px;
+ padding: 2px;
+ cursor: pointer;
+}
+.wikiEditor-ui-toolbar .group .tool-select {
+ float: left;
+ margin: 2px;
+ height: 22px;
+ cursor: pointer;
+ border: solid 1px silver;
+ padding: 0;
+ margin-right: 0;
+ cursor: pointer;
+ background-color: #ffffff;
+}
+.wikiEditor-ui-toolbar .group .tool-select .label {
+ /* @embed */
+ background-image: url(images/toolbar/arrow-down.png);
+ background-position: center right;
+ background-repeat: no-repeat;
+ padding: 0;
+ margin: 0;
+ padding-left: 4px;
+ padding-right: 22px;
+ margin-right: 4px;
+ cursor: pointer;
+ text-decoration: none;
+ color: #333333;
+}
+.wikiEditor-ui-toolbar .group .tool-select .menu .options {
+ position: absolute;
+ display: none;
+ margin-left: -1px;
+ margin-top: 22px;
+ border: solid 1px silver;
+ background-color: #ffffff;
+}
+.wikiEditor-ui-toolbar .group .tool-select .options .option {
+ display: block;
+ padding: 0.5em;
+ text-decoration: none;
+ color: black;
+ white-space: nowrap;
+}
+.wikiEditor-ui-toolbar .group .tool-select .options .option:hover {
+ background-color: #E0EEf7;
+}
+.wikiEditor-ui-toolbar .group .tool-select .options .option[rel=heading-2] {
+ font-size: 150%;
+ font-weight: normal;
+}
+.wikiEditor-ui-toolbar .group .tool-select .options .option[rel=heading-3] {
+ font-size: 132%;
+ font-weight: normal;
+}
+.wikiEditor-ui-toolbar .group .tool-select .options .option[rel=heading-4] {
+ font-size: 116%;
+ font-weight: normal;
+}
+.wikiEditor-ui-toolbar .group .tool-select .options .option[rel=heading-5] {
+ font-size: 100%;
+ font-weight: bold;
+}
+/* Booklet */
+.wikiEditor-ui-toolbar .booklet .index {
+ float: left;
+ width: 20%;
+ height: 125px;
+ overflow: auto;
+}
+.wikiEditor-ui-toolbar .booklet .index div {
+ padding: 4px;
+ padding-left: 6px;
+ cursor: pointer;
+ color: #0645ad;
+}
+.wikiEditor-ui-toolbar .booklet .index .current {
+ background-color: #FAFAFA;
+ color: #333333;
+ cursor: default;
+}
+.wikiEditor-ui-toolbar .booklet .pages {
+ float: right;
+ width: 80%;
+ height: 125px;
+ overflow: auto;
+ background-color: #FAFAFA;
+}
+/* Help Pages */
+.wikiEditor-ui-toolbar .page-table table {
+ padding-left: 5px;
+ padding-right: 5px;
+ background: none;
+}
+.wikiEditor-ui-toolbar .page-table th {
+ color: #999999;
+}
+.wikiEditor-ui-toolbar .page-table td {
+ color: black;
+ border-top: solid 1px #EEEEEE;
+}
+.wikiEditor-ui-toolbar .page-table th,
+.wikiEditor-ui-toolbar .page-table td {
+ text-align: left;
+ padding: 5px;
+ margin: 0px;
+}
+.wikiEditor-ui-toolbar .section-help .page-table td.cell-syntax,
+.wikiEditor-ui-toolbar .section-help .page-table td.syntax {
+ font-family: monospace, "Courier New";
+}
+.wikiEditor-ui-toolbar .section-help .page-table td.syntax,
+.wikiEditor-ui-toolbar .section-help .page-table td.cell-syntax,
+.wikiEditor-ui-toolbar .section-help .page-table td.cell-result,
+.wikiEditor-ui-toolbar .section-help .page-table td.result {
+ width: 40%;
+}
+.wikiEditor-ui-toolbar .section-help .page-table td.description,
+.wikiEditor-ui-toolbar .section-help .page-table td.description {
+ width: 20%;
+}
+/* Characters Pages */
+.wikiEditor-ui-toolbar .page-characters div span {
+ border: solid 1px #DDDDDD;
+ padding: 5px;
+ padding-left: 8px;
+ padding-right: 8px;
+ margin-left: 5px;
+ margin-top: 5px;
+ height: 1em;
+ float: left;
+ display: block;
+ color: black;
+ text-decoration: none;
+ cursor: pointer;
+ font-family: monospace, "Courier New";
+ font-size: 1.25em;
+}
+.wikiEditor-ui-toolbar .page-characters div[dir=rtl] span {
+ direction: rtl;
+}
+.wikiEditor-ui-toolbar .page-characters div span:hover {
+ background-color: white;
+ text-decoration: none;
+ border-color: #a8d7f9;
+}
+.ui-widget table td.wikieditor-toolbar-table-preview-wrapper span {
+ padding: 4px 6px 0px;
+ display: block;
+}
+.ui-widget table .wikieditor-toolbar-table-preview-frame {
+ width: 340px;
+ background: #fff;
+ padding: 10px;
+ overflow: hidden;
+ display: block;
+ position: relative;
+}
+.ui-widget table .wikieditor-toolbar-table-preview-content {
+ width: 375px;
+ display: block;
+}
+.ui-widget table .wikieditor-toolbar-table-preview {
+ width: 340px;
+}
+.ui-widget table td.wikieditor-toolbar-table-preview-wrapper {
+ background: #e5e5e5;
+ padding: 10px;
+}
diff --git a/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.js b/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.js
new file mode 100644
index 00000000..7a72c923
--- /dev/null
+++ b/extensions/WikiEditor/modules/jquery.wikiEditor.toolbar.js
@@ -0,0 +1,775 @@
+/**
+ * Toolbar module for wikiEditor
+ */
+( function( $ ) { $.wikiEditor.modules.toolbar = {
+
+/**
+ * API accessible functions
+ */
+api : {
+ addToToolbar : function( context, data ) {
+
+ var smooth = true, type, i;
+
+ for ( type in data ) {
+ switch ( type ) {
+ case 'sections':
+ var $sections = context.modules.toolbar.$toolbar.find( 'div.sections' ),
+ $tabs = context.modules.toolbar.$toolbar.find( 'div.tabs' );
+ for ( var section in data[type] ) {
+ if ( section == 'main' ) {
+ // Section
+ context.modules.toolbar.$toolbar.prepend(
+ $.wikiEditor.modules.toolbar.fn.buildSection(
+ context, section, data[type][section]
+ )
+ );
+ continue;
+ }
+ // Section
+ $sections.append(
+ $.wikiEditor.modules.toolbar.fn.buildSection( context, section, data[type][section] )
+ );
+ // Tab
+ $tabs.append(
+ $.wikiEditor.modules.toolbar.fn.buildTab( context, section, data[type][section] )
+ );
+ }
+ break;
+ case 'groups':
+ if ( ! ( 'section' in data ) ) {
+ continue;
+ }
+ var $section = context.modules.toolbar.$toolbar.find( 'div[rel="' + data.section + '"].section' );
+ for ( var group in data[type] ) {
+ // Group
+ $section.append(
+ $.wikiEditor.modules.toolbar.fn.buildGroup( context, group, data[type][group] )
+ );
+ }
+ smooth = false;
+ break;
+ case 'tools':
+ if ( ! ( 'section' in data && 'group' in data ) ) {
+ continue;
+ }
+ var $group = context.modules.toolbar.$toolbar.find(
+ 'div[rel="' + data.section + '"].section ' + 'div[rel="' + data.group + '"].group'
+ );
+ for ( var tool in data[type] ) {
+ // Tool
+ $group.append( $.wikiEditor.modules.toolbar.fn.buildTool( context, tool, data[type][tool] ) );
+ }
+ if ( $group.children().length ) {
+ $group.show();
+ }
+ smooth = false;
+ break;
+ case 'pages':
+ if ( ! ( 'section' in data ) ) {
+ continue;
+ }
+ var $pages = context.modules.toolbar.$toolbar.find(
+ 'div[rel="' + data.section + '"].section .pages'
+ );
+ var $index = context.modules.toolbar.$toolbar.find(
+ 'div[rel="' + data.section + '"].section .index'
+ );
+ for ( var page in data[type] ) {
+ // Page
+ $pages.append( $.wikiEditor.modules.toolbar.fn.buildPage( context, page, data[type][page] ) );
+ // Index
+ $index.append(
+ $.wikiEditor.modules.toolbar.fn.buildBookmark( context, page, data[type][page] )
+ );
+ }
+ $.wikiEditor.modules.toolbar.fn.updateBookletSelection( context, page, $pages, $index );
+ smooth = false;
+ break;
+ case 'rows':
+ if ( ! ( 'section' in data && 'page' in data ) ) {
+ continue;
+ }
+ var $table = context.modules.toolbar.$toolbar.find(
+ 'div[rel="' + data.section + '"].section ' + 'div[rel="' + data.page + '"].page table'
+ );
+ for ( i = 0; i < data.rows.length; i++ ) {
+ // Row
+ $table.append( $.wikiEditor.modules.toolbar.fn.buildRow( context, data.rows[i] ) );
+ }
+ smooth = false;
+ break;
+ case 'characters':
+ if ( ! ( 'section' in data && 'page' in data ) ) {
+ continue;
+ }
+ var $characters = context.modules.toolbar.$toolbar.find(
+ 'div[rel="' + data.section + '"].section ' + 'div[rel="' + data.page + '"].page div'
+ );
+ var actions = $characters.data( 'actions' );
+ for ( i = 0; i < data.characters.length; i++ ) {
+ // Character
+ $characters
+ .append(
+ $( $.wikiEditor.modules.toolbar.fn.buildCharacter( data.characters[i], actions ) )
+ .mousedown( function( e ) {
+ context.fn.saveCursorAndScrollTop();
+ // No dragging!
+ e.preventDefault();
+ return false;
+ } )
+ .click( function( e ) {
+ $.wikiEditor.modules.toolbar.fn.doAction( $(this).parent().data( 'context' ),
+ $(this).parent().data( 'actions' )[$(this).attr( 'rel' )] );
+ e.preventDefault();
+ return false;
+ } )
+ );
+ }
+ smooth = false;
+ break;
+ default: break;
+ }
+ }
+
+ // Fix div.section size after adding things; if smooth is true uses a smooth
+ // animation, otherwise just change height (breaking any ongoing animation)
+ var $divSections = context.modules.toolbar.$toolbar.find( 'div.sections' );
+ var $visibleSection = $divSections.find( '.section:visible' );
+ if ( $visibleSection.size() ) {
+ if ( smooth ) {
+ $divSections.animate( { 'height': $visibleSection.outerHeight() }, 'fast' );
+ } else {
+ $divSections.height( $visibleSection.outerHeight() );
+ }
+ }
+ },
+ removeFromToolbar : function( context, data ) {
+ if ( typeof data.section == 'string' ) {
+ // Section
+ var tab = 'div.tabs span[rel="' + data.section + '"].tab';
+ var target = 'div[rel="' + data.section + '"].section';
+ var group = null;
+ if ( typeof data.group == 'string' ) {
+ // Toolbar group
+ target += ' div[rel="' + data.group + '"].group';
+ if ( typeof data.tool == 'string' ) {
+ // Save for later checking if empty
+ group = target;
+ // Tool
+ target += ' span[rel="' + data.tool + '"].tool';
+ }
+ } else if ( typeof data.page == 'string' ) {
+ // Booklet page
+ var index = target + ' div.index div[rel="' + data.page + '"]';
+ target += ' div.pages div[rel="' + data.page + '"].page';
+ if ( typeof data.character == 'string' ) {
+ // Character
+ target += ' span[rel="' + data.character + '"]';
+ } else if ( typeof data.row == 'number' ) {
+ // Table row
+ target += ' table tr:not(:has(th)):eq(' + data.row + ')';
+ } else {
+ // Just a page, remove the index too!
+ context.modules.toolbar.$toolbar.find( index ).remove();
+ $.wikiEditor.modules.toolbar.fn.updateBookletSelection(
+ context,
+ null,
+ context.modules.toolbar.$toolbar.find( target ),
+ context.modules.toolbar.$toolbar.find( index )
+ );
+ }
+ } else {
+ // Just a section, remove the tab too!
+ context.modules.toolbar.$toolbar.find( tab ).remove();
+ }
+ context.modules.toolbar.$toolbar.find( target ).remove();
+ // Hide empty groups
+ if ( group ) {
+ var $group = context.modules.toolbar.$toolbar.find( group );
+ if ( $group.children().length === 0 ) {
+ $group.hide();
+ }
+ }
+ }
+ }
+},
+/**
+ * Event handlers
+ */
+evt: {
+ resize: function( context, event ) {
+ context.$ui.find( '.sections' ).height( context.$ui.find( '.sections .section-visible' ).outerHeight() );
+ },
+ tocCollapse: function( context, event ) {
+ $.wikiEditor.modules.toolbar.evt.resize( context, event );
+ },
+ tocExpand: function( context, event ) {
+ $.wikiEditor.modules.toolbar.evt.resize( context, event );
+ }
+},
+/**
+ * Internally used functions
+ */
+fn: {
+ /**
+ * Creates a toolbar module within a wikiEditor
+ *
+ * @param {Object} context Context object of editor to create module in
+ * @param {Object} config Configuration object to create module from
+ */
+ create : function( context, config ) {
+ if ( '$toolbar' in context.modules.toolbar ) {
+ return;
+ }
+ context.modules.toolbar.$toolbar = $( '<div/>' )
+ .addClass( 'wikiEditor-ui-toolbar' )
+ .attr( 'id', 'wikiEditor-ui-toolbar' );
+ $.wikiEditor.modules.toolbar.fn.build( context, config );
+ context.$ui.find( '.wikiEditor-ui-top' ).append( context.modules.toolbar.$toolbar );
+ },
+ /**
+ * Performs an operation based on parameters
+ *
+ * @param {Object} context
+ * @param {Object} action
+ * @param {Object} source
+ */
+ doAction : function( context, action, source ) {
+ // Verify that this has been called from a source that's within the toolbar
+ // 'trackAction' defined in click tracking
+ if ( $.trackAction !== undefined && source.closest( '.wikiEditor-ui-toolbar' ).size() ) {
+ // Build a unique id for this action by tracking the parent rel attributes up to the toolbar level
+ var rels = [];
+ var step = source;
+ var i = 0;
+ while ( !step.hasClass( 'wikiEditor-ui-toolbar' ) ) {
+ if ( i > 25 ) {
+ break;
+ }
+ i++;
+ var rel = step.attr( 'rel' );
+ if ( rel ) {
+ rels.push( step.attr( 'rel' ) );
+ }
+ step = step.parent();
+ }
+ rels.reverse();
+ var id = rels.join( '.' );
+ $.trackAction( id );
+ }
+ switch ( action.type ) {
+ case 'replace':
+ case 'encapsulate':
+ var parts = {
+ 'pre' : $.wikiEditor.autoMsg( action.options, 'pre' ),
+ 'peri' : $.wikiEditor.autoMsg( action.options, 'peri' ),
+ 'post' : $.wikiEditor.autoMsg( action.options, 'post' )
+ };
+ var replace = action.type == 'replace';
+ if ( 'regex' in action.options && 'regexReplace' in action.options ) {
+ var selection = context.$textarea.textSelection( 'getSelection' );
+ if ( selection !== '' && selection.match( action.options.regex ) ) {
+ parts.peri = selection.replace( action.options.regex,
+ action.options.regexReplace );
+ parts.pre = parts.post = '';
+ replace = true;
+ }
+ }
+ context.$textarea.textSelection(
+ 'encapsulateSelection',
+ $.extend( {}, action.options, parts, { 'replace': replace } )
+ );
+ if ( context.$iframe !== undefined ) {
+ context.$iframe[0].contentWindow.focus();
+ }
+ break;
+ case 'callback':
+ if ( typeof action.execute == 'function' ) {
+ action.execute( context );
+ }
+ break;
+ case 'dialog':
+ context.fn.saveSelection();
+ context.$textarea.wikiEditor( 'openDialog', action.module );
+ break;
+ default: break;
+ }
+ },
+ buildGroup : function( context, id, group ) {
+ var $group = $( '<div/>' ).attr( { 'class' : 'group group-' + id, 'rel' : id } );
+ var label = $.wikiEditor.autoMsg( group, 'label' );
+ if ( label ) {
+ $group.append( '<div class="label">' + label + '</div>' );
+ }
+ var empty = true;
+ if ( 'tools' in group ) {
+ for ( var tool in group.tools ) {
+ tool = $.wikiEditor.modules.toolbar.fn.buildTool( context, tool, group.tools[tool] );
+ if ( tool ) {
+ // Consider a group with only hidden tools empty as well
+ // .is( ':visible' ) always returns false because tool is not attached to the DOM yet
+ empty = empty && tool.css( 'display' ) == 'none';
+ $group.append( tool );
+ }
+ }
+ }
+ if ( empty ) {
+ $group.hide();
+ }
+ return $group;
+ },
+ buildTool : function( context, id, tool ) {
+ if ( 'filters' in tool ) {
+ for ( var i = 0; i < tool.filters.length; i++ ) {
+ if ( $( tool.filters[i] ).size() === 0 ) {
+ return null;
+ }
+ }
+ }
+ var label = $.wikiEditor.autoMsg( tool, 'label' );
+ switch ( tool.type ) {
+ case 'button':
+ var src = $.wikiEditor.autoIcon( tool.icon, $.wikiEditor.imgPath + 'toolbar/' );
+ var $button = null;
+ if ( 'offset' in tool ) {
+ var offsetOrIcon = $.wikiEditor.autoIconOrOffset( tool.icon, tool.offset,
+ $.wikiEditor.imgPath + 'toolbar/'
+ );
+ if ( typeof offsetOrIcon == 'object' ) {
+ $button = $( '<span/>' )
+ .attr( {
+ 'alt' : label,
+ 'title' : label,
+ 'rel' : id,
+ 'class' : 'tool tool-button wikiEditor-toolbar-spritedButton'
+ } )
+ .text( label )
+ .css( 'backgroundPosition', offsetOrIcon[0] + 'px ' + offsetOrIcon[1] + 'px' );
+ }
+ }
+ if ( !$button ) {
+ $button = $( '<img/>' )
+ .attr( {
+ 'src' : src,
+ 'width' : 22,
+ 'height' : 22,
+ 'alt' : label,
+ 'title' : label,
+ 'rel' : id,
+ 'class' : 'tool tool-button'
+ } );
+ }
+ if ( 'action' in tool ) {
+ $button
+ .data( 'action', tool.action )
+ .data( 'context', context )
+ .mousedown( function( e ) {
+ context.fn.saveCursorAndScrollTop();
+ // No dragging!
+ e.preventDefault();
+ return false;
+ } )
+ .click( function( e ) {
+ $.wikiEditor.modules.toolbar.fn.doAction(
+ $(this).data( 'context' ), $(this).data( 'action' ), $(this)
+ );
+ e.preventDefault();
+ return false;
+ } );
+ }
+ return $button;
+ case 'select':
+ var $select = $( '<div/>' )
+ .attr( { 'rel' : id, 'class' : 'tool tool-select' } );
+ var $options = $( '<div/>' ).addClass( 'options' );
+ if ( 'list' in tool ) {
+ for ( var option in tool.list ) {
+ var optionLabel = $.wikiEditor.autoMsg( tool.list[option], 'label' );
+ $options.append(
+ $( '<a/>' )
+ .data( 'action', tool.list[option].action )
+ .data( 'context', context )
+ .mousedown( function( e ) {
+ context.fn.saveCursorAndScrollTop();
+ // No dragging!
+ e.preventDefault();
+ return false;
+ } )
+ .click( function( e ) {
+ $.wikiEditor.modules.toolbar.fn.doAction(
+ $(this).data( 'context' ), $(this).data( 'action' ), $(this)
+ );
+ // Hide the dropdown
+ // Sanity check: if this somehow gets called while the dropdown
+ // is hidden, don't show it
+ if ( $(this).parent().is( ':visible' ) ) {
+ $(this).parent().animate( { 'opacity': 'toggle' }, 'fast' );
+ }
+ e.preventDefault();
+ return false;
+ } )
+ .text( optionLabel )
+ .addClass( 'option' )
+ .attr( { 'rel': option, 'href': '#' } )
+ );
+ }
+ }
+ $select.append( $( '<div/>' ).addClass( 'menu' ).append( $options ) );
+ $select.append( $( '<a/>' )
+ .addClass( 'label' )
+ .text( label )
+ .data( 'options', $options )
+ .attr( 'href', '#' )
+ .mousedown( function( e ) {
+ // No dragging!
+ e.preventDefault();
+ return false;
+ } )
+ .click( function( e ) {
+ $(this).data( 'options' ).animate( { 'opacity': 'toggle' }, 'fast' );
+ e.preventDefault();
+ return false;
+ } )
+ );
+ return $select;
+ default:
+ return null;
+ }
+ },
+ buildBookmark : function( context, id, page ) {
+ var label = $.wikiEditor.autoMsg( page,
+ 'label' );
+ return $( '<div/>' )
+ .text( label )
+ .attr( 'rel', id )
+ .data( 'context', context )
+ .mousedown( function( e ) {
+ // No dragging!
+ e.preventDefault();
+ return false;
+ } )
+ .click( function( event ) {
+ $(this).parent().parent().find( '.page' ).hide();
+ $(this).parent().parent().find( '.page-' + $(this).attr( 'rel' ) ).show();
+ $(this).siblings().removeClass( 'current' );
+ $(this).addClass( 'current' );
+ var section = $(this).parent().parent().attr( 'rel' );
+ $.cookie(
+ 'wikiEditor-' + $(this).data( 'context' ).instance + '-booklet-' + section + '-page',
+ $(this).attr( 'rel' ),
+ { expires: 30, path: '/' }
+ );
+ // Click tracking
+ if ( $.trackAction !== undefined){
+ $.trackAction(section + '.' + $(this).attr('rel'));
+ }
+ // No dragging!
+ event.preventDefault();
+ return false;
+ } );
+ },
+ buildPage : function( context, id, page ) {
+ var html;
+ var $page = $( '<div/>' ).attr( {
+ 'class' : 'page page-' + id,
+ 'rel' : id
+ } );
+ switch ( page.layout ) {
+ case 'table':
+ $page.addClass( 'page-table' );
+ html =
+ '<table cellpadding=0 cellspacing=0 ' + 'border=0 width="100%" class="table table-' + id + '">';
+ if ( 'headings' in page ) {
+ html += $.wikiEditor.modules.toolbar.fn.buildHeading( context, page.headings );
+ }
+ if ( 'rows' in page ) {
+ for ( var i = 0; i < page.rows.length; i++ ) {
+ html += $.wikiEditor.modules.toolbar.fn.buildRow( context, page.rows[i] );
+ }
+ }
+ $page.html( html );
+ break;
+ case 'characters':
+ $page.addClass( 'page-characters' );
+ var $characters = $( '<div/>' ).data( 'context', context ).data( 'actions', {} );
+ var actions = $characters.data( 'actions' );
+ if ( 'language' in page ) {
+ $characters.attr( 'lang', page.language );
+ }
+ if ( 'direction' in page ) {
+ $characters.attr( 'dir', page.direction );
+ }
+ if ( 'characters' in page ) {
+ html = '';
+ for ( var i = 0; i < page.characters.length; i++ ) {
+ html += $.wikiEditor.modules.toolbar.fn.buildCharacter( page.characters[i], actions );
+ }
+ $characters
+ .html( html )
+ .children()
+ .mousedown( function( e ) {
+ context.fn.saveCursorAndScrollTop();
+ // No dragging!
+ e.preventDefault();
+ return false;
+ } )
+ .click( function( e ) {
+ $.wikiEditor.modules.toolbar.fn.doAction(
+ $(this).parent().data( 'context' ),
+ $(this).parent().data( 'actions' )[$(this).attr( 'rel' )],
+ $(this)
+ );
+ e.preventDefault();
+ return false;
+ } );
+ }
+ $page.append( $characters );
+ break;
+ }
+ return $page;
+ },
+ buildHeading : function( context, headings ) {
+ var html = '<tr>';
+ for ( var i = 0; i< headings.length; i++ ) {
+ html += '<th>' + $.wikiEditor.autoMsg( headings[i], ['html', 'text'] ) + '</th>';
+ }
+ return html;
+ },
+ buildRow : function( context, row ) {
+ var html = '<tr>';
+ for ( var cell in row ) {
+ html += '<td class="cell cell-' + cell + '" valign="top"><span>' +
+ $.wikiEditor.autoMsg( row[cell], ['html', 'text'] ) + '</span></td>';
+ }
+ html += '</tr>';
+ return html;
+ },
+ buildCharacter : function( character, actions ) {
+ if ( typeof character == 'string' ) {
+ character = {
+ 'label' : character,
+ 'action' : {
+ 'type' : 'replace',
+ 'options' : {
+ 'peri' : character,
+ 'selectPeri': false
+ }
+ }
+ };
+ } else if ( 0 in character && 1 in character ) {
+ character = {
+ 'label' : character[0],
+ 'action' : {
+ 'type' : 'replace',
+ 'options' : {
+ 'peri' : character[1],
+ 'selectPeri': false
+ }
+ }
+ };
+ }
+ if ( 'action' in character && 'label' in character ) {
+ actions[character.label] = character.action;
+ return '<span rel="' + character.label + '">' + character.label + '</span>';
+ }
+ },
+ buildTab : function( context, id, section ) {
+ var selected = $.cookie( 'wikiEditor-' + context.instance + '-toolbar-section' );
+ // Re-save cookie
+ if ( selected !== null ) {
+ $.cookie( 'wikiEditor-' + context.instance + '-toolbar-section', selected, { expires: 30, path: '/' } );
+ }
+ var $link =
+ $( '<a/>' )
+ .addClass( selected == id ? 'current' : null )
+ .attr( 'href', '#' )
+ .text( $.wikiEditor.autoMsg( section, 'label' ) )
+ .data( 'context', context )
+ .mouseup( function( e ) {
+ $(this).blur();
+ } )
+ .mousedown( function( e ) {
+ // No dragging!
+ e.preventDefault();
+ return false;
+ } )
+ .click( function( e ) {
+ var $sections = $(this).data( 'context' ).$ui.find( '.sections' );
+ var $section =
+ $(this).data( 'context' ).$ui.find( '.section-' + $(this).parent().attr( 'rel' ) );
+ var show = $section.css( 'display' ) == 'none';
+ var $previousSections = $section.parent().find( '.section-visible' );
+ $previousSections.css( 'position', 'absolute' );
+ $previousSections.removeClass( 'section-visible' );
+ $previousSections.fadeOut( 'fast', function() { $(this).css( 'position', 'static' ); } );
+ $(this).parent().parent().find( 'a' ).removeClass( 'current' );
+ $sections.css( 'overflow', 'hidden' );
+ var animate = function( $that ) {
+ $sections
+ .css( 'display', 'block' )
+ .animate( { 'height': $section.outerHeight() }, $section.outerHeight() * 2, function() {
+ $that.css( 'overflow', 'visible' ).css( 'height', 'auto' );
+ context.fn.trigger( 'resize' );
+ } );
+ };
+ if ( show ) {
+ $section.addClass( 'section-visible' );
+ $section.fadeIn( 'fast' );
+ if ( $section.hasClass( 'loading' ) ) {
+ // Loading of this section was deferred, load it now
+ var $that = $(this);
+ $that.addClass( 'current loading' );
+ setTimeout( function() {
+ $section.trigger( 'loadSection' );
+ animate( $that );
+ $that.removeClass( 'loading' );
+ }, 1000 );
+ } else {
+ animate( $(this) );
+ $(this).addClass( 'current' );
+ }
+ } else {
+ $sections
+ .css( 'height', $section.outerHeight() )
+ .animate( { 'height': 'hide' }, $section.outerHeight() * 2, function() {
+ $(this).css( { 'overflow': 'visible', 'height': 0 } );
+ context.fn.trigger( 'resize' );
+ } );
+ }
+ // Click tracking
+ if ( $.trackAction !== undefined ) {
+ $.trackAction( $section.attr('rel') + '.' + ( show ? 'show': 'hide' ) );
+ }
+ // Save the currently visible section
+ $.cookie(
+ 'wikiEditor-' + $(this).data( 'context' ).instance + '-toolbar-section',
+ show ? $section.attr( 'rel' ) : null,
+ { expires: 30, path: '/' }
+ );
+ e.preventDefault();
+ return false;
+ });
+ return $( '<span/>' )
+ .attr({
+ 'class' : 'tab tab-' + id,
+ 'rel' : id
+ })
+ .append( $link );
+ },
+ buildSection: function( context, id, section ) {
+ var $section = $( '<div/>' ).attr( { 'class': section.type + ' section section-' + id, 'rel': id } );
+ var selected = $.cookie( 'wikiEditor-' + context.instance + '-toolbar-section' );
+ var show = selected == id;
+
+ if ( section.deferLoad !== undefined && section.deferLoad && id !== 'main' && !show ) {
+ // This class shows the spinner and serves as a marker for the click handler in buildTab()
+ $section.addClass( 'loading' ).append( $( '<div/>' ).addClass( 'spinner' ) );
+ $section.bind( 'loadSection', function() {
+ $.wikiEditor.modules.toolbar.fn.reallyBuildSection( context, id, section, $section );
+ $section.removeClass( 'loading' );
+ } );
+ } else {
+ $.wikiEditor.modules.toolbar.fn.reallyBuildSection( context, id, section, $section );
+ }
+
+ // Show or hide section
+ if ( id !== 'main' ) {
+ $section.css( 'display', show ? 'block' : 'none' );
+ if ( show ) {
+ $section.addClass( 'section-visible' );
+ }
+ }
+ return $section;
+ },
+ reallyBuildSection: function( context, id, section, $section ) {
+ context.$textarea.trigger( 'wikiEditor-toolbar-buildSection-' + $section.attr( 'rel' ), [section] );
+ switch ( section.type ) {
+ case 'toolbar':
+ if ( 'groups' in section ) {
+ for ( var group in section.groups ) {
+ $section.append(
+ $.wikiEditor.modules.toolbar.fn.buildGroup( context, group, section.groups[group] )
+ );
+ }
+ }
+ break;
+ case 'booklet':
+ var $pages = $( '<div/>' ).addClass( 'pages' );
+ var $index = $( '<div/>' ).addClass( 'index' );
+ if ( 'pages' in section ) {
+ for ( var page in section.pages ) {
+ $pages.append(
+ $.wikiEditor.modules.toolbar.fn.buildPage( context, page, section.pages[page] )
+ );
+ $index.append(
+ $.wikiEditor.modules.toolbar.fn.buildBookmark( context, page, section.pages[page] )
+ );
+ }
+ }
+ $section.append( $index ).append( $pages );
+ $.wikiEditor.modules.toolbar.fn.updateBookletSelection( context, id, $pages, $index );
+ break;
+ }
+ },
+ updateBookletSelection : function( context, id, $pages, $index ) {
+ var cookie = 'wikiEditor-' + context.instance + '-booklet-' + id + '-page';
+ var selected = $.cookie( cookie );
+ // Re-save cookie
+ if ( selected != null ) {
+ $.cookie( cookie, selected, { expires: 30, path: '/' } );
+ }
+ var $selectedIndex = $index.find( '*[rel="' + selected + '"]' );
+ if ( $selectedIndex.size() === 0 ) {
+ $selectedIndex = $index.children().eq( 0 );
+ selected = $selectedIndex.attr( 'rel' );
+ $.cookie( cookie, selected, { expires: 30, path: '/' } );
+ }
+ $pages.children().hide();
+ $pages.find( '*[rel="' + selected + '"]' ).show();
+ $index.children().removeClass( 'current' );
+ $selectedIndex.addClass( 'current' );
+ },
+ build : function( context, config ) {
+ var $tabs = $( '<div/>' ).addClass( 'tabs' ).appendTo( context.modules.toolbar.$toolbar );
+ var $sections = $( '<div/>' ).addClass( 'sections' ).appendTo( context.modules.toolbar.$toolbar );
+ context.modules.toolbar.$toolbar.append( $( '<div/>' ).css( 'clear', 'both' ) );
+ var sectionQueue = [];
+ for ( var section in config ) {
+ if ( section == 'main' ) {
+ context.modules.toolbar.$toolbar.prepend(
+ $.wikiEditor.modules.toolbar.fn.buildSection( context, section, config[section] )
+ );
+ } else {
+ sectionQueue.push( {
+ '$sections' : $sections,
+ 'context' : context,
+ 'id' : section,
+ 'config' : config[section]
+ } );
+ $tabs.append( $.wikiEditor.modules.toolbar.fn.buildTab( context, section, config[section] ) );
+ }
+ }
+ $.eachAsync( sectionQueue, {
+ 'bulk' : 0,
+ 'end' : function() {
+ // HACK: Opera doesn't seem to want to redraw after these bits
+ // are added to the DOM, so we can just FORCE it!
+ var oldValue = $( 'body' ).css( 'position' );
+ $( 'body' ).css( 'position', 'static' );
+ $( 'body' ).css( 'position', oldValue );
+ },
+ 'loop' : function( i, s ) {
+ s.$sections.append( $.wikiEditor.modules.toolbar.fn.buildSection( s.context, s.id, s.config ) );
+ var $section = s.$sections.find( '.section:visible' );
+ if ( $section.size() ) {
+ $sections.animate( { 'height': $section.outerHeight() }, $section.outerHeight() * 2, function( ) {
+ context.fn.trigger( 'resize' );
+ } );
+ }
+ }
+ } );
+ }
+}
+
+}; } )( jQuery );
diff --git a/extensions/WikiEditor/tests/selenium/WikiDialogs_Links.php b/extensions/WikiEditor/tests/selenium/WikiDialogs_Links.php
new file mode 100644
index 00000000..07f1b41b
--- /dev/null
+++ b/extensions/WikiEditor/tests/selenium/WikiDialogs_Links.php
@@ -0,0 +1,68 @@
+<?php
+require_once 'WikiDialogs_Links_Setup.php';
+/**
+ * Description of WikiNewPageDialogs
+ *
+ * @author bhagyag, pdhanda
+ *
+ * This test case is part of the WikiEditorTestSuite.
+ * Configuration for these tests are dosumented as part of extensions/WikiEditor/tests/selenium/WikiEditorTestSuite.php
+ *
+ */
+class WikiDialogs_Links extends WikiDialogs_Links_Setup {
+ // Set up the testing environment
+ function setup() {
+ parent::setUp();
+ parent::doCreateInternalTestPageIfMissing();
+ }
+
+ function tearDown() {
+ parent::doLogout();
+ parent::tearDown();
+ }
+
+ //Create a new page temporary
+ function createNewPage() {
+ parent::doOpenLink();
+ parent::login();
+ parent::doCreateNewPageTemporary();
+ }
+
+ // Add a internal link and verify
+ function testInternalLink() {
+ $this->createNewPage();
+ parent::verifyInternalLink();
+ }
+
+ // Add a internal link with different display text and verify
+ function testInternalLinkWithDisplayText() {
+ $this->createNewPage();
+ parent::verifyInternalLinkWithDisplayText();
+ }
+
+ // Add a internal link with blank display text and verify
+ function testInternalLinkWithBlankDisplayText() {
+ $this->createNewPage();
+ parent::verifyInternalLinkWithBlankDisplayText();
+ }
+
+ // Add external link and verify
+ function testExternalLink() {
+ $this->createNewPage();
+ parent::verifyExternalLink();
+ }
+
+ // Add external link with different display text and verify
+ function testExternalLinkWithDisplayText( ) {
+ $this->createNewPage();
+ parent::verifyExternalLinkWithDisplayText();
+ }
+
+ // Add external link with Blank display text and verify
+ function testExternalLinkWithBlankDisplayText() {
+ $this->createNewPage();
+ parent::verifyExternalLinkWithBlankDisplayText();
+ }
+
+}
+?>
diff --git a/extensions/WikiEditor/tests/selenium/WikiDialogs_Links_Setup.php b/extensions/WikiEditor/tests/selenium/WikiDialogs_Links_Setup.php
new file mode 100644
index 00000000..7e399a03
--- /dev/null
+++ b/extensions/WikiEditor/tests/selenium/WikiDialogs_Links_Setup.php
@@ -0,0 +1,296 @@
+<?php
+include("WikiEditorConstants.php");
+/**
+ * This test case will be handling the Wiki Tool bar Dialog functions
+ * Date : Apr - 2010
+ * @author : BhagyaG - Calcey
+ */
+class WikiDialogs_Links_Setup extends SeleniumTestCase {
+
+ // Open the page.
+ function doOpenLink() {
+ $this->open( $this->getUrl() . '/index.php' );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ }
+
+ //Expand advance tool bar section if its not
+ function doExpandAdvanceSection() {
+ if ( !$this->isTextPresent( TEXT_HEADING ) ){
+ $this->click( LINK_ADVANCED );
+ }
+ }
+
+ // Log out from the application
+ function doLogout() {
+ $this->open( $this->getUrl() . '/index.php' );
+ if ($this->isTextPresent( TEXT_LOGOUT ) ) {
+ $this->click( LINK_LOGOUT );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertEquals(TEXT_LOGOUT_CONFIRM, $this->getText( LINK_LOGIN ));
+ $this->open( $this->getUrl() . '/index.php' );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ }
+ }
+
+ //Create a temporary fixture page
+ function doCreateInternalTestPageIfMissing() {
+ $this->type( INPUT_SEARCH_BOX, WIKI_INTERNAL_LINK );
+ $this->click( BUTTON_SEARCH );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->click( LINK_START . WIKI_INTERNAL_LINK );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $location = $this->getLocation() . "\n";
+ if ( strpos( $location, '&redlink=1') !== false ) {
+ $this->type( TEXT_EDITOR, "Test fixture page. No real content here" );
+ $this->click( BUTTON_SAVE_WATCH );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertTrue( $this->isTextPresent( WIKI_INTERNAL_LINK ),
+ $this->getText( TEXT_PAGE_HEADING ) );
+ }
+ }
+
+ //Create a temporary new page
+ function doCreateNewPageTemporary() {
+ $this->type( INPUT_SEARCH_BOX, WIKI_TEMP_NEWPAGE );
+ $this->click( BUTTON_SEARCH );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->click( LINK_START . WIKI_TEMP_NEWPAGE );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ }
+
+ // Add a internal link and verify
+ function verifyInternalLink(){
+ $this->type( TEXT_EDITOR, "" );
+ $this->click( LINK_ADDLINK );
+ $this->waitForPopup( 'addLink', WIKI_TEST_WAIT_TIME );
+ $this->type( TEXT_LINKNAME, ( WIKI_INTERNAL_LINK ) );
+ $this->assertTrue( $this->isElementPresent( ICON_PAGEEXISTS ), 'Element ' . ICON_PAGEEXISTS . 'Not found' );
+ $this->assertEquals( "on", $this->getValue( OPT_INTERNAL ) );
+ $this->click( BUTTON_INSERTLINK );
+ $this->click( LINK_PREVIEW );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( ( WIKI_INTERNAL_LINK ), $this->getText( LINK_START . WIKI_INTERNAL_LINK ) );
+ $this->click( LINK_START. WIKI_INTERNAL_LINK );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertTrue( $this->isTextPresent( WIKI_INTERNAL_LINK ), $this->getText(TEXT_PAGE_HEADING ) );
+ }
+
+ // Add a internal link with different display text and verify
+ function verifyInternalLinkWithDisplayText(){
+ $this->type( TEXT_EDITOR, "" );
+ $this->click( LINK_ADDLINK );
+ $this->waitForPopup('addLink', WIKI_TEST_WAIT_TIME);
+ $this->type( TEXT_LINKNAME, WIKI_INTERNAL_LINK );
+ $this->type ( TEXT_LINKDISPLAYNAME, WIKI_INTERNAL_LINK . TEXT_LINKDISPLAYNAME_APPENDTEXT );
+ $this->assertTrue( $this->isElementPresent( ICON_PAGEEXISTS ) );
+ $this->assertEquals( "on", $this->getValue( OPT_INTERNAL ) );
+ $this->click( BUTTON_INSERTLINK );
+ $this->click( LINK_PREVIEW );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( WIKI_INTERNAL_LINK . TEXT_LINKDISPLAYNAME_APPENDTEXT,
+ $this->getText( LINK_START . WIKI_INTERNAL_LINK . TEXT_LINKDISPLAYNAME_APPENDTEXT ) );
+ $this->click( LINK_START . WIKI_INTERNAL_LINK . TEXT_LINKDISPLAYNAME_APPENDTEXT );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertTrue( $this->isTextPresent( WIKI_INTERNAL_LINK ), $this->getText( TEXT_PAGE_HEADING ) );
+
+ }
+
+ // Add a internal link with blank display text and verify
+ function verifyInternalLinkWithBlankDisplayText(){
+ $this->type( TEXT_EDITOR, "" );
+ $this->click( LINK_ADDLINK );
+ $this->waitForPopup( 'addLink', WIKI_TEST_WAIT_TIME );
+ $this->type( TEXT_LINKNAME, WIKI_INTERNAL_LINK );
+ $this->type( TEXT_LINKDISPLAYNAME, "" );
+ $this->assertTrue( $this->isElementPresent( ICON_PAGEEXISTS ) );
+ $this->assertEquals("on", $this->getValue(OPT_INTERNAL));
+ $this->click( BUTTON_INSERTLINK );
+ $this->click( LINK_PREVIEW );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( WIKI_INTERNAL_LINK, $this->getText( LINK_START. WIKI_INTERNAL_LINK ) );
+ $this->click( LINK_START . WIKI_INTERNAL_LINK );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( WIKI_INTERNAL_LINK, $this->getText( TEXT_PAGE_HEADING ) );
+
+ }
+
+ // Add external link and verify
+ function verifyExternalLink(){
+ $this->type( LINK_PREVIEW, "" );
+ $this->click( LINK_ADDLINK );
+ $this->type( TEXT_LINKNAME, WIKI_EXTERNAL_LINK );
+ $this->assertTrue( $this->isElementPresent( ICON_PAGEEXTERNAL ) );
+ $this->assertEquals( "on", $this->getValue( OPT_EXTERNAL ) );
+ $this->click( BUTTON_INSERTLINK );
+ $this->click( LINK_PREVIEW );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( WIKI_EXTERNAL_LINK, $this->getText( LINK_START . WIKI_EXTERNAL_LINK ) );
+
+ $this->click( LINK_START . WIKI_EXTERNAL_LINK );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( WIKI_EXTERNAL_LINK_TITLE, $this->getTitle() );
+ }
+
+ // Add external link with different display text and verify
+ function verifyExternalLinkWithDisplayText(){
+ $this->type( TEXT_EDITOR, "" );
+ $this->click( LINK_ADDLINK );
+ $this->type( TEXT_LINKNAME, WIKI_EXTERNAL_LINK );
+ $this->type( TEXT_LINKDISPLAYNAME, WIKI_EXTERNAL_LINK_TITLE );
+ $this->assertTrue( $this->isElementPresent( ICON_PAGEEXTERNAL ) );
+ $this->assertEquals( "on", $this->getValue( OPT_EXTERNAL ) );
+ $this->click( BUTTON_INSERTLINK );
+ $this->click( LINK_PREVIEW );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( WIKI_EXTERNAL_LINK_TITLE, $this->getText( LINK_START . WIKI_EXTERNAL_LINK_TITLE ) );
+ $this->click(LINK_START.(WIKI_EXTERNAL_LINK_TITLE));
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( WIKI_EXTERNAL_LINK_TITLE , $this->getTitle() );
+ }
+
+ // Add external link with Blank display text and verify
+ function verifyExternalLinkWithBlankDisplayText(){
+ $this->type( TEXT_EDITOR, "" );
+ $this->click( LINK_ADDLINK );
+ $this->type( TEXT_LINKNAME, WIKI_EXTERNAL_LINK );
+ $this->type( TEXT_LINKDISPLAYNAME, "" );
+ $this->assertTrue( $this->isElementPresent( ICON_PAGEEXTERNAL ) );
+ $this->assertEquals( "on", $this->getValue( OPT_EXTERNAL ) );
+ $this->click( BUTTON_INSERTLINK );
+ $this->click( LINK_PREVIEW );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( "[1]", $this->getText(LINK_START . "[1]" ) );
+ $this->click( LINK_START . "[1]" );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertEquals( WIKI_EXTERNAL_LINK_TITLE, $this->getTitle() );
+ }
+
+ // Add a table and verify
+ function verifyCreateTable(){
+ $WIKI_TABLE_ROW = 2;
+ $WIKI_TABLE_COL = "5";
+ $this->doExpandAdvanceSection();
+ $this->type( TEXT_EDITOR, "" );
+ $this->click( LINK_ADDTABLE );
+ $this->click( CHK_SORT );
+ $this->type( TEXT_ROW, $WIKI_TABLE_ROW );
+ $this->type( TEXT_COL, $WIKI_TABLE_COL );
+ $this->click( BUTTON_INSERTABLE );
+ $this->click( CHK_SORT );
+ $this->click( LINK_PREVIEW );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $WIKI_TABLE_ROW = $WIKI_TABLE_ROW + 1;
+ $this->assertTrue( $this->isElementPresent( TEXT_TABLEID_OTHER .
+ TEXT_VALIDATE_TABLE_PART1 . $WIKI_TABLE_ROW .
+ TEXT_VALIDATE_TABLE_PART2 . $WIKI_TABLE_COL .
+ TEXT_VALIDATE_TABLE_PART3 ) );
+ }
+
+ // Add a table and verify only with head row
+ function verifyCreateTableWithHeadRow(){
+ $WIKI_TABLE_ROW = 3;
+ $WIKI_TABLE_COL = "4";
+ $this->doExpandAdvanceSection();
+ $this->type( TEXT_EDITOR, "" );
+ $this->click( LINK_ADDTABLE );
+ $this->click( CHK_BOARDER);
+ $this->type( TEXT_ROW, $WIKI_TABLE_ROW );
+ $this->type( TEXT_COL, $WIKI_TABLE_COL );
+ $this->click( BUTTON_INSERTABLE );
+ $this->click( LINK_PREVIEW );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $WIKI_TABLE_ROW = $WIKI_TABLE_ROW+1;
+ $this->assertTrue( $this->isElementPresent( TEXT_TABLEID_OTHER .
+ TEXT_VALIDATE_TABLE_PART1 . $WIKI_TABLE_ROW .
+ TEXT_VALIDATE_TABLE_PART2 . $WIKI_TABLE_COL .
+ TEXT_VALIDATE_TABLE_PART3 ) );
+ }
+
+ // Add a table and verify only with borders
+ function verifyCreateTableWithBorders(){
+ $WIKI_TABLE_ROW = "4";
+ $WIKI_TABLE_COL = "6";
+ $this->type( TEXT_EDITOR, "" );
+ $this->click( LINK_ADDTABLE );
+ $this->click( CHK_HEADER );
+ $this->type( TEXT_ROW, $WIKI_TABLE_ROW );
+ $this->type( TEXT_COL, $WIKI_TABLE_COL );
+ $this->click( BUTTON_INSERTABLE );
+ $this->click( CHK_HEADER );
+ $this->click( LINK_PREVIEW );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertTrue( $this->isElementPresent( TEXT_TABLEID_OTHER .
+ TEXT_VALIDATE_TABLE_PART1 . $WIKI_TABLE_ROW .
+ TEXT_VALIDATE_TABLE_PART2 . $WIKI_TABLE_COL .
+ TEXT_VALIDATE_TABLE_PART3 ) );
+ }
+
+ // Add a table and verify only with sort row
+ function verifyCreateTableWithSortRow(){
+ $WIKI_TABLE_ROW = "2";
+ $WIKI_TABLE_COL = "5";
+ $this->type( TEXT_EDITOR, "" );
+ $this->click( LINK_ADDTABLE );
+ $this->click( CHK_HEADER );
+ $this->click( CHK_BOARDER );
+ $this->click( CHK_SORT );
+ $this->type( TEXT_ROW, $WIKI_TABLE_ROW );
+ $this->type( TEXT_COL, $WIKI_TABLE_COL );
+ $this->click( BUTTON_INSERTABLE );
+ $this->click( CHK_HEADER );
+ $this->click( CHK_BOARDER );
+ $this->click( CHK_SORT );
+ $this->click( LINK_PREVIEW );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertTrue( $this->isElementPresent(TEXT_TABLEID_WITHALLFEATURES .
+ TEXT_VALIDATE_TABLE_PART1 . $WIKI_TABLE_ROW .
+ TEXT_VALIDATE_TABLE_PART2 . $WIKI_TABLE_COL .
+ TEXT_VALIDATE_TABLE_PART3 ) );
+ }
+
+ // Add a table without headers,borders and sort rows
+ function verifyCreateTableWithNoSpecialEffects(){
+ $WIKI_TABLE_ROW = "6";
+ $WIKI_TABLE_COL = "2";
+ $this->
+ $this->doExpandAdvanceSection();
+ $this->type( TEXT_EDITOR, "" );
+ $this->click( LINK_ADDTABLE );
+ $this->click( CHK_BOARDER );
+ $this->click( CHK_HEADER );
+ $this->type( TEXT_ROW, $WIKI_TABLE_ROW );
+ $this->type( TEXT_COL, $WIKI_TABLE_COL );
+ $this->click( BUTTON_INSERTABLE );
+ $this->click( CHK_BOARDER );
+ $this->click( CHK_HEADER );
+ $this->click( INK_PREVIEW );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $this->assertTrue( $this->isElementPresent( TEXT_TABLEID_OTHER .
+ TEXT_VALIDATE_TABLE_PART1 . $WIKI_TABLE_ROW .
+ TEXT_VALIDATE_TABLE_PART2 . $WIKI_TABLE_COL .
+ TEXT_VALIDATE_TABLE_PART3 ) );
+ }
+
+ // Add a table with headers,borders and sort rows
+ function verifyCreateTableWithAllSpecialEffects(){
+ $WIKI_TABLE_ROW = 6;
+ $WIKI_TABLE_COL = "2";
+ $this->doExpandAdvanceSection();
+ $this->type( TEXT_EDITOR, "" );
+ $this->click( LINK_ADDTABLE );
+ $this->click( CHK_SORT );
+ $this->type( TEXT_ROW, $WIKI_TABLE_ROW );
+ $this->type( TEXT_COL, $WIKI_TABLE_COL );
+ $this->click( BUTTON_INSERTABLE );
+ $this->click( CHK_SORT );
+ $this->click( LINK_PREVIEW );
+ $this->waitForPageToLoad( WIKI_TEST_WAIT_TIME );
+ $WIKI_TABLE_ROW = $WIKI_TABLE_ROW+1;
+ $this->assertTrue( $this->isElementPresent(TEXT_TABLEID_WITHALLFEATURES .
+ TEXT_VALIDATE_TABLE_PART1 . $WIKI_TABLE_ROW .
+ TEXT_VALIDATE_TABLE_PART2 . $WIKI_TABLE_COL .
+ TEXT_VALIDATE_TABLE_PART3));
+ }
+
+}
+?> \ No newline at end of file
diff --git a/extensions/WikiEditor/tests/selenium/WikiEditorConstants.php b/extensions/WikiEditor/tests/selenium/WikiEditorConstants.php
new file mode 100644
index 00000000..11eeb01e
--- /dev/null
+++ b/extensions/WikiEditor/tests/selenium/WikiEditorConstants.php
@@ -0,0 +1,84 @@
+<?php
+define ('WIKI_TEST_WAIT_TIME', "3000"); // Waiting time
+
+// tool bar, buttons , links
+// commonly using links
+define ('LINK_MAIN_PAGE',"link=Main page");
+define ('LINK_RANDOM_PAGE',"link=Random article");
+define ('TEXT_PAGE_HEADING',"firstHeading");
+define ('LINK_START',"link=");
+define ('LINK_EDITPAGE',"//li[@id='ca-edit']/a/span");
+define ('TEXT_EDITOR',"wpTextbox1");
+define ('LINK_PREVIEW',"wpPreview");
+
+define ('WIKI_SEARCH_PAGE',"Hair (musical)"); // Page name to search
+define ('WIKI_TEXT_SEARCH',"TV"); // Text to search
+define ('WIKI_INTERNAL_LINK',"Wikieditor-Fixture-Page"); // Exisiting page name to add as an internal tag
+define ('WIKI_EXTERNAL_LINK',"www.google.com"); // External web site name
+define ('WIKI_EXTERNAL_LINK_TITLE',"Google"); // Page title of the external web site name
+define ('WIKI_CODE_PATH',getcwd()); // get the current path of the program
+define ('WIKI_SCREENSHOTS_PATH',"screenshots"); // the folder the error screen shots will be saved
+define ('WIKI_SCREENSHOTS_TYPE',"png"); // screen print type
+define ('WIKI_TEMP_NEWPAGE',"TestWikiPage"); // temporary creating new page name
+// for WikiCommonFunction_TC
+
+// for WikiSearch_TC
+define ('INPUT_SEARCH_BOX', "searchInput");
+define ('BUTTON_SEARCH',"mw-searchButton");
+define ('TEXT_SEARCH_RESULT_HEADING'," - Search results - Wikipedia, the free encyclopedia");
+
+// for WikiWatchUnWatch_TC
+define ('LINK_WATCH_PAGE',"link=Watch");
+define ('LINK_WATCH_LIST',"link=My watchlist");
+define ('LINK_WATCH_EDIT',"link=View and edit watchlist");
+define ('LINK_UNWATCH',"link=Unwatch");
+define ('BUTTON_WATCH',"wpWatchthis");
+define ('BUTTON_SAVE_WATCH',"wpSave");
+define ('TEXT_WATCH',"Watch");
+define ('TEXT_UNWATCH',"Unwatch");
+
+// for WikiCommonFunction_TC
+define ('TEXT_LOGOUT',"Log out");
+define ('LINK_LOGOUT',"link=Log out");
+define ('LINK_LOGIN',"link=Log in / create account");
+define ('TEXT_LOGOUT_CONFIRM',"Log in / create account");
+define ('INPUT_USER_NAME', "wpName1");
+define ('INPUT_PASSWD', "wpPassword1");
+define ('BUTTON_LOGIN',"wpLoginAttempt");
+define ('TEXT_HEADING',"Heading");
+define ('LINK_ADVANCED',"link=Advanced");
+
+// for WikiDialogs_TC
+define ('LINK_ADDLINK',"//div[@id='wikiEditor-ui-toolbar']/div[1]/div[2]/span[2 ]");
+define ('TEXT_LINKNAME',"wikieditor-toolbar-link-int-target");
+define ('TEXT_LINKDISPLAYNAME',"wikieditor-toolbar-link-int-text");
+define ('TEXT_LINKDISPLAYNAME_APPENDTEXT'," Test");
+define ('ICON_PAGEEXISTS',"wikieditor-toolbar-link-int-target-status-exists");
+define ('ICON_PAGEEXTERNAL',"wikieditor-toolbar-link-int-target-status-external");
+define ('OPT_INTERNAL',"wikieditor-toolbar-link-type-int");
+define ('OPT_EXTERNAL',"wikieditor-toolbar-link-type-ext");
+define ('BUTTON_INSERTLINK',"//div[10]/div[11]/button[1]");
+define ('LINK_ADDTABLE',"//div[@id='wikiEditor-ui-toolbar']/div[3]/div[1]/div[4]/span[2]");
+define ('CHK_HEADER',"wikieditor-toolbar-table-dimensions-header");
+define ('CHK_BOARDER',"wikieditor-toolbar-table-wikitable");
+define ('CHK_SORT',"wikieditor-toolbar-table-sortable");
+define ('TEXT_ROW',"wikieditor-toolbar-table-dimensions-rows");
+define ('TEXT_COL',"wikieditor-toolbar-table-dimensions-columns");
+define ('BUTTON_INSERTABLE',"//div[3]/button[1]");
+define ('TEXT_HEADTABLE_TEXT',"Header text");
+define ('TEXT_TABLEID_WITHALLFEATURES', "//table[@id='sortable_table_id_0']/tbody/" );
+define ('TEXT_TABLEID_OTHER', "//div[@id='wikiPreview']/table/tbody/" );
+define ('TEXT_VALIDATE_TABLE_PART1', "tr[");
+define ('TEXT_VALIDATE_TABLE_PART2',"]/td[");
+define ('TEXT_VALIDATE_TABLE_PART3',"]");
+define ('LINK_SEARCH',"//div[@id='wikiEditor-ui-toolbar']/div[3]/div[1]/div[5]/span");
+define ('INPUT_SEARCH',"wikieditor-toolbar-replace-search");
+define ('INPUT_REPLACE',"wikieditor-toolbar-replace-replace");
+define ('BUTTON_REPLACEALL',"//button[3]");
+define ('BUTTON_REPLACENEXT',"//button[2]");
+define ('BUTTON_CANCEL',"//button[4]");
+define ('TEXT_PREVIEW_TEXT1',"//div[@id='wikiPreview']/p[1]");
+define ('TEXT_PREVIEW_TEXT2',"//div[@id='wikiPreview']/p[2]");
+define ('TEXT_PREVIEW_TEXT3',"//div[@id='wikiPreview']/p[3]");
+
+
diff --git a/extensions/WikiEditor/tests/selenium/WikiEditorSeleniumConfig.php b/extensions/WikiEditor/tests/selenium/WikiEditorSeleniumConfig.php
new file mode 100644
index 00000000..534d1351
--- /dev/null
+++ b/extensions/WikiEditor/tests/selenium/WikiEditorSeleniumConfig.php
@@ -0,0 +1,27 @@
+<?php
+
+class WikiEditorSeleniumConfig {
+
+ public static function getSettings(&$includeFiles, &$globalConfigs) {
+ $includes = array(
+ 'extensions/Vector/Vector.php',
+ 'extensions/WikiEditor/WikiEditor.php'
+ );
+ $configs = array(
+ 'wgDefaultSkin' => 'vector',
+ 'wgWikiEditorFeatures' => array(
+ 'toolbar' => array( 'global' => true, 'user' => true ),
+ 'toc' => array( 'global' => false, 'user' => false ),
+ 'highlight' => array( 'global' => false, 'user' => false ),
+ 'templateEditor' => array( 'global' => false, 'user' => false ),
+ 'dialogs' => array( 'global' => true, 'user' => true )
+ ),
+ 'wgVectorFeatures' => array(
+ 'editwarning' => array( 'global' => false, 'user' => false )
+ )
+ );
+ $includeFiles = array_merge( $includeFiles, $includes );
+ $globalConfigs = array_merge( $globalConfigs, $configs);
+ return true;
+ }
+} \ No newline at end of file
diff --git a/extensions/WikiEditor/tests/selenium/WikiEditorTestSuite.php b/extensions/WikiEditor/tests/selenium/WikiEditorTestSuite.php
new file mode 100644
index 00000000..90537654
--- /dev/null
+++ b/extensions/WikiEditor/tests/selenium/WikiEditorTestSuite.php
@@ -0,0 +1,35 @@
+<?php
+
+/*
+ * To configure MW for these tests
+ * 1) If you are running multiple test suites, add the following in LocalSettings.php
+ * require_once("extensions/WikiEditor/tests/selenium/WikiEditorSeleniumConfig.php");
+ * $wgSeleniumTestConfigs['WikiEditorTestSuite'] = 'WikiEditorSeleniumConfig::getSettings';
+ * OR
+ * 2) Add the following to your Localsettings.php
+ * require_once( "$IP/extensions/Vector/Vector.php" );
+ * require_once( "$IP/extensions/WikiEditor/WikiEditor.php" );
+ * $wgDefaultSkin = 'vector';
+ * $wgVectorFeatures['editwarning'] = array( 'global' => false, 'user' => false );
+ * $wgWikiEditorFeatures['templateEditor'] = array( 'global' => false, 'user' => false );
+ * $wgWikiEditorFeatures['toolbar'] = array( 'global' => true, 'user' => true );
+ * $wgWikiEditorFeatures['toc'] = array( 'global' => false, 'user' => false );
+ * $wgWikiEditorFeatures['highlight'] = array( 'global' => false, 'user' => false );
+ * $wgWikiEditorFeatures['dialogs'] = array( 'global' => true, 'user' => true );
+ *
+ */
+class WikiEditorTestSuite extends SeleniumTestSuite
+{
+ public function setUp() {
+ $this->setLoginBeforeTests( false );
+ parent::setUp();
+ }
+ public function addTests() {
+ $testFiles = array(
+ 'extensions/WikiEditor/tests/selenium/WikiDialogs_Links.php'
+ );
+ parent::addTestFiles( $testFiles );
+ }
+
+
+}
diff --git a/img_auth.php b/img_auth.php
index 4fa301b6..ed4c6be4 100644
--- a/img_auth.php
+++ b/img_auth.php
@@ -10,7 +10,7 @@
*
* Optional Parameters
*
- * - Set $wgImgAuthDetails = true if you want the reason the access was denied messages to be displayed
+ * - Set $wgImgAuthDetails = true if you want the reason the access was denied messages to be displayed
* instead of just the 403 error (doesn't work on IE anyway), otherwise will only appear in error logs
* - Set $wgImgAuthPublicTest false if you don't want to just check and see if all are public
* must be set to false if using specific restrictions such as LockDown or NSFileRepo
@@ -26,27 +26,24 @@
**/
define( 'MW_NO_OUTPUT_COMPRESSION', 1 );
-require_once( dirname( __FILE__ ) . '/includes/WebStart.php' );
+if ( isset( $_SERVER['MW_COMPILED'] ) ) {
+ require ( 'phase3/includes/WebStart.php' );
+} else {
+ require ( dirname( __FILE__ ) . '/includes/WebStart.php' );
+}
wfProfileIn( 'img_auth.php' );
require_once( dirname( __FILE__ ) . '/includes/StreamFile.php' );
+$wgActionPaths[] = $_SERVER['SCRIPT_NAME'];
// See if this is a public Wiki (no protections)
-if ( $wgImgAuthPublicTest
+if ( $wgImgAuthPublicTest
&& in_array( 'read', User::getGroupPermissions( array( '*' ) ), true ) )
{
wfForbidden('img-auth-accessdenied','img-auth-public');
}
-// Extract path and image information
-if( !isset( $_SERVER['PATH_INFO'] ) ) {
- $path = $wgRequest->getText( 'path' );
- if( !$path ) {
- wfForbidden( 'img-auth-accessdenied', 'img-auth-nopathinfo' );
- }
- $path = "/$path";
-} else {
- $path = $_SERVER['PATH_INFO'];
-}
+$matches = WebRequest::getPathInfo();
+$path = $matches['title'];
// Check for bug 28235: QUERY_STRING overriding the correct extension
$dotPos = strrpos( $path, '.' );
@@ -84,16 +81,16 @@ if( is_dir( $filename ) )
$title = Title::makeTitleSafe( NS_FILE, $name );
// See if could create the title object
-if( !$title instanceof Title )
+if( !$title instanceof Title )
wfForbidden('img-auth-accessdenied','img-auth-badtitle',$name);
// Run hook
if (!wfRunHooks( 'ImgAuthBeforeStream', array( &$title, &$path, &$name, &$result ) ) )
wfForbidden($result[0],$result[1],array_slice($result,2));
-
+
// Check user authorization for this title
// UserCanRead Checks Whitelist too
-if( !$title->userCanRead() )
+if( !$title->userCanRead() )
wfForbidden('img-auth-accessdenied','img-auth-noread',$name);
// Stream the requested file
@@ -104,7 +101,7 @@ wfLogProfilingData();
/**
* Issue a standard HTTP 403 Forbidden header ($msg1-a message index, not a message) and an
* error message ($msg2, also a message index), (both required) then end the script
- * subsequent arguments to $msg2 will be passed as parameters only for replacing in $msg2
+ * subsequent arguments to $msg2 will be passed as parameters only for replacing in $msg2
*/
function wfForbidden($msg1,$msg2) {
global $wgImgAuthDetails;
diff --git a/includes/Action.php b/includes/Action.php
new file mode 100644
index 00000000..d5432b23
--- /dev/null
+++ b/includes/Action.php
@@ -0,0 +1,467 @@
+<?php
+/**
+ * Actions are things which can be done to pages (edit, delete, rollback, etc). They
+ * are distinct from Special Pages because an action must apply to exactly one page.
+ *
+ * To add an action in an extension, create a subclass of Action, and add the key to
+ * $wgActions. There is also the deprecated UnknownAction hook
+ *
+ *
+ * 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
+ *
+ * @file
+ */
+abstract class Action {
+
+ /**
+ * Page on which we're performing the action
+ * @var Article
+ */
+ protected $page;
+
+ /**
+ * IContextSource if specified; otherwise we'll use the Context from the Page
+ * @var IContextSource
+ */
+ protected $context;
+
+ /**
+ * The fields used to create the HTMLForm
+ * @var Array
+ */
+ protected $fields;
+
+ /**
+ * Get the Action subclass which should be used to handle this action, false if
+ * the action is disabled, or null if it's not recognised
+ * @param $action String
+ * @param $overrides Array
+ * @return bool|null|string
+ */
+ private final static function getClass( $action, array $overrides ) {
+ global $wgActions;
+ $action = strtolower( $action );
+
+ if ( !isset( $wgActions[$action] ) ) {
+ return null;
+ }
+
+ if ( $wgActions[$action] === false ) {
+ return false;
+ } elseif ( $wgActions[$action] === true && isset( $overrides[$action] ) ) {
+ return $overrides[$action];
+ } elseif ( $wgActions[$action] === true ) {
+ return ucfirst( $action ) . 'Action';
+ } else {
+ return $wgActions[$action];
+ }
+ }
+
+ /**
+ * Get an appropriate Action subclass for the given action
+ * @param $action String
+ * @param $page Article
+ * @return Action|false|null false if the action is disabled, null
+ * if it is not recognised
+ */
+ public final static function factory( $action, Page $page ) {
+ $class = self::getClass( $action, $page->getActionOverrides() );
+ if ( $class ) {
+ $obj = new $class( $page );
+ return $obj;
+ }
+ return $class;
+ }
+
+ /**
+ * Check if a given action is recognised, even if it's disabled
+ *
+ * @param $name String: name of an action
+ * @return Bool
+ */
+ public final static function exists( $name ) {
+ return self::getClass( $name ) !== null;
+ }
+
+ /**
+ * Get the IContextSource in use here
+ * @return IContextSource
+ */
+ protected final function getContext() {
+ if ( $this->context instanceof IContextSource ) {
+ return $this->context;
+ }
+ return $this->page->getContext();
+ }
+
+ /**
+ * Get the WebRequest being used for this instance
+ *
+ * @return WebRequest
+ */
+ protected final function getRequest() {
+ return $this->getContext()->getRequest();
+ }
+
+ /**
+ * Get the OutputPage being used for this instance
+ *
+ * @return OutputPage
+ */
+ protected final function getOutput() {
+ return $this->getContext()->getOutput();
+ }
+
+ /**
+ * Shortcut to get the User being used for this instance
+ *
+ * @return User
+ */
+ protected final function getUser() {
+ return $this->getContext()->getUser();
+ }
+
+ /**
+ * Shortcut to get the Skin being used for this instance
+ *
+ * @return Skin
+ */
+ protected final function getSkin() {
+ return $this->getContext()->getSkin();
+ }
+
+ /**
+ * Shortcut to get the user Language being used for this instance
+ *
+ * @return Skin
+ */
+ protected final function getLang() {
+ return $this->getContext()->getLang();
+ }
+
+ /**
+ * Shortcut to get the Title object from the page
+ * @return Title
+ */
+ protected final function getTitle() {
+ return $this->page->getTitle();
+ }
+
+ /**
+ * Protected constructor: use Action::factory( $action, $page ) to actually build
+ * these things in the real world
+ * @param Page $page
+ */
+ protected function __construct( Page $page ) {
+ $this->page = $page;
+ }
+
+ /**
+ * Return the name of the action this object responds to
+ * @return String lowercase
+ */
+ public abstract function getName();
+
+ /**
+ * Get the permission required to perform this action. Often, but not always,
+ * the same as the action name
+ */
+ public abstract function getRestriction();
+
+ /**
+ * Checks if the given user (identified by an object) can perform this action. Can be
+ * overridden by sub-classes with more complicated permissions schemes. Failures here
+ * must throw subclasses of ErrorPageError
+ *
+ * @param $user User: the user to check, or null to use the context user
+ * @throws ErrorPageError
+ */
+ protected function checkCanExecute( User $user ) {
+ if ( $this->requiresWrite() && wfReadOnly() ) {
+ throw new ReadOnlyError();
+ }
+
+ if ( $this->getRestriction() !== null && !$user->isAllowed( $this->getRestriction() ) ) {
+ throw new PermissionsError( $this->getRestriction() );
+ }
+
+ if ( $this->requiresUnblock() && $user->isBlocked() ) {
+ $block = $user->mBlock;
+ throw new UserBlockedError( $block );
+ }
+ }
+
+ /**
+ * Whether this action requires the wiki not to be locked
+ * @return Bool
+ */
+ public function requiresWrite() {
+ return true;
+ }
+
+ /**
+ * Whether this action can still be executed by a blocked user
+ * @return Bool
+ */
+ public function requiresUnblock() {
+ return true;
+ }
+
+ /**
+ * Set output headers for noindexing etc. This function will not be called through
+ * the execute() entry point, so only put UI-related stuff in here.
+ */
+ protected function setHeaders() {
+ $out = $this->getOutput();
+ $out->setRobotPolicy( "noindex,nofollow" );
+ $out->setPageTitle( $this->getPageTitle() );
+ $this->getOutput()->setSubtitle( $this->getDescription() );
+ $out->setArticleRelated( true );
+ }
+
+ /**
+ * Returns the name that goes in the \<h1\> page title
+ *
+ * @return String
+ */
+ protected function getPageTitle() {
+ return $this->getTitle()->getPrefixedText();
+ }
+
+ /**
+ * Returns the description that goes below the \<h1\> tag
+ *
+ * @return String
+ */
+ protected function getDescription() {
+ return wfMsg( strtolower( $this->getName() ) );
+ }
+
+ /**
+ * The main action entry point. Do all output for display and send it to the context
+ * output. Do not use globals $wgOut, $wgRequest, etc, in implementations; use
+ * $this->getOutput(), etc.
+ * @throws ErrorPageError
+ */
+ public abstract function show();
+
+ /**
+ * Execute the action in a silent fashion: do not display anything or release any errors.
+ * @param $data Array values that would normally be in the POST request
+ * @param $captureErrors Bool whether to catch exceptions and just return false
+ * @return Bool whether execution was successful
+ */
+ public abstract function execute();
+}
+
+abstract class FormAction extends Action {
+
+ /**
+ * Get an HTMLForm descriptor array
+ * @return Array
+ */
+ protected abstract function getFormFields();
+
+ /**
+ * Add pre- or post-text to the form
+ * @return String HTML which will be sent to $form->addPreText()
+ */
+ protected function preText() { return ''; }
+ protected function postText() { return ''; }
+
+ /**
+ * Play with the HTMLForm if you need to more substantially
+ * @param $form HTMLForm
+ */
+ protected function alterForm( HTMLForm $form ) {}
+
+ /**
+ * Get the HTMLForm to control behaviour
+ * @return HTMLForm|null
+ */
+ protected function getForm() {
+ $this->fields = $this->getFormFields();
+
+ // Give hooks a chance to alter the form, adding extra fields or text etc
+ wfRunHooks( 'ActionModifyFormFields', array( $this->getName(), &$this->fields, $this->page ) );
+
+ $form = new HTMLForm( $this->fields, $this->getContext() );
+ $form->setSubmitCallback( array( $this, 'onSubmit' ) );
+
+ // Retain query parameters (uselang etc)
+ $form->addHiddenField( 'action', $this->getName() ); // Might not be the same as the query string
+ $params = array_diff_key(
+ $this->getRequest()->getQueryValues(),
+ array( 'action' => null, 'title' => null )
+ );
+ $form->addHiddenField( 'redirectparams', wfArrayToCGI( $params ) );
+
+ $form->addPreText( $this->preText() );
+ $form->addPostText( $this->postText() );
+ $this->alterForm( $form );
+
+ // Give hooks a chance to alter the form, adding extra fields or text etc
+ wfRunHooks( 'ActionBeforeFormDisplay', array( $this->getName(), &$form, $this->page ) );
+
+ return $form;
+ }
+
+ /**
+ * Process the form on POST submission. If you return false from getFormFields(),
+ * this will obviously never be reached. If you don't want to do anything with the
+ * form, just return false here
+ * @param $data Array
+ * @return Bool|Array true for success, false for didn't-try, array of errors on failure
+ */
+ public abstract function onSubmit( $data );
+
+ /**
+ * Do something exciting on successful processing of the form. This might be to show
+ * a confirmation message (watch, rollback, etc) or to redirect somewhere else (edit,
+ * protect, etc).
+ */
+ public abstract function onSuccess();
+
+ /**
+ * The basic pattern for actions is to display some sort of HTMLForm UI, maybe with
+ * some stuff underneath (history etc); to do some processing on submission of that
+ * form (delete, protect, etc) and to do something exciting on 'success', be that
+ * display something new or redirect to somewhere. Some actions have more exotic
+ * behaviour, but that's what subclassing is for :D
+ */
+ public function show() {
+ $this->setHeaders();
+
+ // This will throw exceptions if there's a problem
+ $this->checkCanExecute( $this->getUser() );
+
+ $form = $this->getForm();
+ if ( $form->show() ) {
+ $this->onSuccess();
+ }
+ }
+
+ /**
+ * @see Action::execute()
+ * @throws ErrorPageError
+ * @param array|null $data
+ * @param bool $captureErrors
+ * @return bool
+ */
+ public function execute( array $data = null, $captureErrors = true ) {
+ try {
+ // Set a new context so output doesn't leak.
+ $this->context = clone $this->page->getContext();
+
+ // This will throw exceptions if there's a problem
+ $this->checkCanExecute( $this->getUser() );
+
+ $fields = array();
+ foreach ( $this->fields as $key => $params ) {
+ if ( isset( $data[$key] ) ) {
+ $fields[$key] = $data[$key];
+ } elseif ( isset( $params['default'] ) ) {
+ $fields[$key] = $params['default'];
+ } else {
+ $fields[$key] = null;
+ }
+ }
+ $status = $this->onSubmit( $fields );
+ if ( $status === true ) {
+ // This might do permanent stuff
+ $this->onSuccess();
+ return true;
+ } else {
+ return false;
+ }
+ }
+ catch ( ErrorPageError $e ) {
+ if ( $captureErrors ) {
+ return false;
+ } else {
+ throw $e;
+ }
+ }
+ }
+}
+
+/**
+ * Actions generally fall into two groups: the show-a-form-then-do-something-with-the-input
+ * format (protect, delete, move, etc), and the just-do-something format (watch, rollback,
+ * patrol, etc).
+ */
+abstract class FormlessAction extends Action {
+
+ /**
+ * Show something on GET request.
+ * @return String|null will be added to the HTMLForm if present, or just added to the
+ * output if not. Return null to not add anything
+ */
+ public abstract function onView();
+
+ /**
+ * We don't want an HTMLForm
+ */
+ protected function getFormFields() {
+ return false;
+ }
+
+ public function onSubmit( $data ) {
+ return false;
+ }
+
+ public function onSuccess() {
+ return false;
+ }
+
+ public function show() {
+ $this->setHeaders();
+
+ // This will throw exceptions if there's a problem
+ $this->checkCanExecute( $this->getUser() );
+
+ $this->getOutput()->addHTML( $this->onView() );
+ }
+
+ /**
+ * Execute the action silently, not giving any output. Since these actions don't have
+ * forms, they probably won't have any data, but some (eg rollback) may do
+ * @param $data Array values that would normally be in the GET request
+ * @param $captureErrors Bool whether to catch exceptions and just return false
+ * @return Bool whether execution was successful
+ */
+ public function execute( array $data = null, $captureErrors = true ) {
+ try {
+ // Set a new context so output doesn't leak.
+ $this->context = clone $this->page->getContext();
+ if ( is_array( $data ) ) {
+ $this->context->setRequest( new FauxRequest( $data, false ) );
+ }
+
+ // This will throw exceptions if there's a problem
+ $this->checkCanExecute( $this->getUser() );
+
+ $this->onView();
+ return true;
+ }
+ catch ( ErrorPageError $e ) {
+ if ( $captureErrors ) {
+ return false;
+ } else {
+ throw $e;
+ }
+ }
+ }
+}
diff --git a/includes/AjaxDispatcher.php b/includes/AjaxDispatcher.php
index f7583188..17b154d6 100644
--- a/includes/AjaxDispatcher.php
+++ b/includes/AjaxDispatcher.php
@@ -7,12 +7,6 @@
* Handle ajax requests and send them to the proper handler.
*/
-if ( !( defined( 'MEDIAWIKI' ) && $wgUseAjax ) ) {
- die( 1 );
-}
-
-require_once( 'AjaxFunctions.php' );
-
/**
* Object-Oriented Ajax functions.
* @ingroup Ajax
@@ -74,7 +68,7 @@ class AjaxDispatcher {
* request.
*/
function performAction() {
- global $wgAjaxExportList, $wgOut, $wgUser;
+ global $wgAjaxExportList, $wgOut;
if ( empty( $this->mode ) ) {
return;
@@ -90,13 +84,6 @@ class AjaxDispatcher {
'Bad Request',
"unknown function " . (string) $this->func_name
);
- } elseif ( !in_array( 'read', User::getGroupPermissions( array( '*' ) ), true )
- && !$wgUser->isAllowed( 'read' ) )
- {
- wfHttpError(
- 403,
- 'Forbidden',
- 'You must log in to view pages.' );
} else {
wfDebug( __METHOD__ . ' dispatching ' . $this->func_name . "\n" );
diff --git a/includes/AjaxFunctions.php b/includes/AjaxFunctions.php
deleted file mode 100644
index 8e5de31b..00000000
--- a/includes/AjaxFunctions.php
+++ /dev/null
@@ -1,101 +0,0 @@
-<?php
-/**
- * Handler functions for Ajax requests
- *
- * @file
- * @ingroup Ajax
- */
-
-if ( !defined( 'MEDIAWIKI' ) ) {
- die( 1 );
-}
-
-/**
- * Function converts an Javascript escaped string back into a string with
- * specified charset (default is UTF-8).
- * Modified function from http://pure-essence.net/stuff/code/utf8RawUrlDecode.phps
- *
- * @param $source String escaped with Javascript's escape() function
- * @param $iconv_to String destination character set will be used as second parameter
- * in the iconv function. Default is UTF-8.
- * @return string
- */
-function js_unescape( $source, $iconv_to = 'UTF-8' ) {
- $decodedStr = '';
- $pos = 0;
- $len = strlen ( $source );
-
- while ( $pos < $len ) {
- $charAt = substr ( $source, $pos, 1 );
- if ( $charAt == '%' ) {
- $pos++;
- $charAt = substr ( $source, $pos, 1 );
-
- if ( $charAt == 'u' ) {
- // we got a unicode character
- $pos++;
- $unicodeHexVal = substr ( $source, $pos, 4 );
- $unicode = hexdec ( $unicodeHexVal );
- $decodedStr .= code2utf( $unicode );
- $pos += 4;
- } else {
- // we have an escaped ascii character
- $hexVal = substr ( $source, $pos, 2 );
- $decodedStr .= chr ( hexdec ( $hexVal ) );
- $pos += 2;
- }
- } else {
- $decodedStr .= $charAt;
- $pos++;
- }
- }
-
- if ( $iconv_to != "UTF-8" ) {
- $decodedStr = iconv( "utf-8", $iconv_to, $decodedStr );
- }
-
- return $decodedStr;
-}
-
-/**
- * Function coverts number of utf char into that character.
- * Function taken from: http://www.php.net/manual/en/function.utf8-encode.php#49336
- *
- * @param $num Integer
- * @return utf8char
- */
-function code2utf( $num ) {
- if ( $num < 128 ) {
- return chr( $num );
- }
-
- if ( $num < 2048 ) {
- return chr( ( $num >> 6 ) + 192 ) . chr( ( $num&63 ) + 128 );
- }
-
- if ( $num < 65536 ) {
- return chr( ( $num >> 12 ) + 224 ) . chr( ( ( $num >> 6 )&63 ) + 128 ) . chr( ( $num&63 ) + 128 );
- }
-
- if ( $num < 2097152 ) {
- return chr( ( $num >> 18 ) + 240 ) . chr( ( ( $num >> 12 )&63 ) + 128 ) . chr( ( ( $num >> 6 )&63 ) + 128 ) . chr( ( $num&63 ) + 128 );
- }
-
- return '';
-}
-
-/**
- * Called in some places (currently just extensions)
- * to get the URL for a given file.
- */
-function wfAjaxGetFileUrl( $file ) {
- $file = wfFindFile( $file );
-
- if ( !$file || !$file->exists() ) {
- return null;
- }
-
- $url = $file->getUrl();
-
- return $url;
-}
diff --git a/includes/AjaxResponse.php b/includes/AjaxResponse.php
index 014798f8..b9f80855 100644
--- a/includes/AjaxResponse.php
+++ b/includes/AjaxResponse.php
@@ -6,10 +6,6 @@
* @ingroup Ajax
*/
-if ( !defined( 'MEDIAWIKI' ) ) {
- die( 1 );
-}
-
/**
* Handle responses for Ajax requests (send headers, print
* content, that sort of thing)
diff --git a/includes/Article.php b/includes/Article.php
index 3e8cfd5e..a0cc6a95 100644
--- a/includes/Article.php
+++ b/includes/Article.php
@@ -5,7 +5,11 @@
*/
/**
- * Class representing a MediaWiki article and history.
+ * Class for viewing MediaWiki article and history.
+ *
+ * This maintains WikiPage functions for backwards compatibility.
+ *
+ * @TODO: move and rewrite code to an Action class
*
* See design.txt for an overview.
* Note: edit user interface and cache support functions have been
@@ -13,198 +17,125 @@
*
* @internal documentation reviewed 15 Mar 2010
*/
-class Article {
+class Article extends Page {
/**@{{
* @private
*/
- var $mComment = ''; // !<
+
+ /**
+ * @var IContextSource
+ */
+ protected $mContext;
+
+ /**
+ * @var WikiPage
+ */
+ protected $mPage;
+
var $mContent; // !<
var $mContentLoaded = false; // !<
- var $mCounter = -1; // !< Not loaded
- var $mCurID = -1; // !< Not loaded
- var $mDataLoaded = false; // !<
- var $mForUpdate = false; // !<
- var $mGoodAdjustment = 0; // !<
- var $mIsRedirect = false; // !<
- var $mLatest = false; // !<
- var $mMinorEdit; // !<
var $mOldId; // !<
- var $mPreparedEdit = false; // !< Title object if set
- var $mRedirectedFrom = null; // !< Title object if set
- var $mRedirectTarget = null; // !< Title object if set
+
+ /**
+ * @var Title
+ */
+ var $mRedirectedFrom = null;
+
+ /**
+ * @var mixed: boolean false or URL string
+ */
var $mRedirectUrl = false; // !<
var $mRevIdFetched = 0; // !<
- var $mRevision; // !< Revision object if set
- var $mTimestamp = ''; // !<
- var $mTitle; // !< Title object
- var $mTotalAdjustment = 0; // !<
- var $mTouched = '19700101000000'; // !<
- var $mUser = -1; // !< Not loaded
- var $mUserText = ''; // !< username from Revision if set
- var $mParserOptions; // !< ParserOptions object
- var $mParserOutput; // !< ParserCache object if set
+
+ /**
+ * @var Revision
+ */
+ var $mRevision = null;
+
+ /**
+ * @var ParserOutput
+ */
+ var $mParserOutput;
+
/**@}}*/
/**
* Constructor and clear the article
- * @param $title Reference to a Title object.
+ * @param $title Title Reference to a Title object.
* @param $oldId Integer revision ID, null to fetch from request, zero for current
*/
public function __construct( Title $title, $oldId = null ) {
- // FIXME: does the reference play any role here?
- $this->mTitle =& $title;
$this->mOldId = $oldId;
+ $this->mPage = $this->newPage( $title );
+ }
+
+ protected function newPage( Title $title ) {
+ return new WikiPage( $title );
}
/**
- * Constructor from an page id
- * @param $id The article ID to load
+ * Constructor from a page id
+ * @param $id Int article ID to load
*/
public static function newFromID( $id ) {
$t = Title::newFromID( $id );
- # FIXME: doesn't inherit right
+ # @todo FIXME: Doesn't inherit right
return $t == null ? null : new self( $t );
# return $t == null ? null : new static( $t ); // PHP 5.3
}
/**
- * Tell the page view functions that this view was redirected
- * from another page on the wiki.
- * @param $from Title object.
- */
- public function setRedirectedFrom( Title $from ) {
- $this->mRedirectedFrom = $from;
- }
-
- /**
- * If this page is a redirect, get its target
+ * Create an Article object of the appropriate class for the given page.
*
- * The target will be fetched from the redirect table if possible.
- * If this page doesn't have an entry there, call insertRedirect()
- * @return mixed Title object, or null if this page is not a redirect
+ * @param $title Title
+ * @param $context IContextSource
+ * @return Article object
*/
- public function getRedirectTarget() {
- if ( !$this->mTitle->isRedirect() ) {
- return null;
+ public static function newFromTitle( $title, IContextSource $context ) {
+ if ( NS_MEDIA == $title->getNamespace() ) {
+ // FIXME: where should this go?
+ $title = Title::makeTitle( NS_FILE, $title->getDBkey() );
}
- if ( $this->mRedirectTarget !== null ) {
- return $this->mRedirectTarget;
- }
-
- # Query the redirect table
- $dbr = wfGetDB( DB_SLAVE );
- $row = $dbr->selectRow( 'redirect',
- array( 'rd_namespace', 'rd_title', 'rd_fragment', 'rd_interwiki' ),
- array( 'rd_from' => $this->getID() ),
- __METHOD__
- );
-
- // rd_fragment and rd_interwiki were added later, populate them if empty
- if ( $row && !is_null( $row->rd_fragment ) && !is_null( $row->rd_interwiki ) ) {
- return $this->mRedirectTarget = Title::makeTitle(
- $row->rd_namespace, $row->rd_title,
- $row->rd_fragment, $row->rd_interwiki );
+ $page = null;
+ wfRunHooks( 'ArticleFromTitle', array( &$title, &$page ) );
+ if ( !$page ) {
+ switch( $title->getNamespace() ) {
+ case NS_FILE:
+ $page = new ImagePage( $title );
+ break;
+ case NS_CATEGORY:
+ $page = new CategoryPage( $title );
+ break;
+ default:
+ $page = new Article( $title );
+ }
}
+ $page->setContext( $context );
- # This page doesn't have an entry in the redirect table
- return $this->mRedirectTarget = $this->insertRedirect();
+ return $page;
}
/**
- * Insert an entry for this page into the redirect table.
+ * Create an Article object of the appropriate class for the given page.
*
- * Don't call this function directly unless you know what you're doing.
- * @return Title object or null if not a redirect
+ * @param $page WikiPage
+ * @param $context IContextSource
+ * @return Article object
*/
- public function insertRedirect() {
- // recurse through to only get the final target
- $retval = Title::newFromRedirectRecurse( $this->getContent() );
- if ( !$retval ) {
- return null;
- }
- $this->insertRedirectEntry( $retval );
- return $retval;
- }
-
- /**
- * Insert or update the redirect table entry for this page to indicate
- * it redirects to $rt .
- * @param $rt Title redirect target
- */
- public function insertRedirectEntry( $rt ) {
- $dbw = wfGetDB( DB_MASTER );
- $dbw->replace( 'redirect', array( 'rd_from' ),
- array(
- 'rd_from' => $this->getID(),
- 'rd_namespace' => $rt->getNamespace(),
- 'rd_title' => $rt->getDBkey(),
- 'rd_fragment' => $rt->getFragment(),
- 'rd_interwiki' => $rt->getInterwiki(),
- ),
- __METHOD__
- );
+ public static function newFromWikiPage( WikiPage $page, IContextSource $context ) {
+ $article = self::newFromTitle( $page->getTitle(), $context );
+ $article->mPage = $page; // override to keep process cached vars
+ return $article;
}
/**
- * Get the Title object or URL this page redirects to
- *
- * @return mixed false, Title of in-wiki target, or string with URL
- */
- public function followRedirect() {
- return $this->getRedirectURL( $this->getRedirectTarget() );
- }
-
- /**
- * Get the Title object this text redirects to
- *
- * @param $text string article content containing redirect info
- * @return mixed false, Title of in-wiki target, or string with URL
- * @deprecated
- */
- public function followRedirectText( $text ) {
- // recurse through to only get the final target
- return $this->getRedirectURL( Title::newFromRedirectRecurse( $text ) );
- }
-
- /**
- * Get the Title object or URL to use for a redirect. We use Title
- * objects for same-wiki, non-special redirects and URLs for everything
- * else.
- * @param $rt Title Redirect target
- * @return mixed false, Title object of local target, or string with URL
+ * Tell the page view functions that this view was redirected
+ * from another page on the wiki.
+ * @param $from Title object.
*/
- public function getRedirectURL( $rt ) {
- if ( $rt ) {
- if ( $rt->getInterwiki() != '' ) {
- if ( $rt->isLocal() ) {
- // Offsite wikis need an HTTP redirect.
- //
- // This can be hard to reverse and may produce loops,
- // so they may be disabled in the site configuration.
- $source = $this->mTitle->getFullURL( 'redirect=no' );
- return $rt->getFullURL( 'rdfrom=' . urlencode( $source ) );
- }
- } else {
- if ( $rt->getNamespace() == NS_SPECIAL ) {
- // Gotta handle redirects to special pages differently:
- // Fill the HTTP response "Location" header and ignore
- // the rest of the page we're on.
- //
- // This can be hard to reverse, so they may be disabled.
- if ( $rt->isSpecial( 'Userlogout' ) ) {
- // rolleyes
- } else {
- return $rt->getFullURL();
- }
- }
-
- return $rt;
- }
- }
-
- // No or invalid redirect
- return false;
+ public function setRedirectedFrom( Title $from ) {
+ $this->mRedirectedFrom = $from;
}
/**
@@ -212,31 +143,22 @@ class Article {
* @return Title object of this page
*/
public function getTitle() {
- return $this->mTitle;
+ return $this->mPage->getTitle();
}
/**
* Clear the object
- * FIXME: shouldn't this be public?
+ * @todo FIXME: Shouldn't this be public?
* @private
*/
public function clear() {
- $this->mDataLoaded = false;
$this->mContentLoaded = false;
- $this->mCurID = $this->mUser = $this->mCounter = -1; # Not loaded
$this->mRedirectedFrom = null; # Title object if set
- $this->mRedirectTarget = null; # Title object if set
- $this->mUserText =
- $this->mTimestamp = $this->mComment = '';
- $this->mGoodAdjustment = $this->mTotalAdjustment = 0;
- $this->mTouched = '19700101000000';
- $this->mForUpdate = false;
- $this->mIsRedirect = false;
$this->mRevIdFetched = 0;
$this->mRedirectUrl = false;
- $this->mLatest = false;
- $this->mPreparedEdit = false;
+
+ $this->mPage->clear();
}
/**
@@ -250,20 +172,18 @@ class Article {
* @return Return the text of this revision
*/
public function getContent() {
- global $wgUser, $wgContLang, $wgMessageCache;
+ global $wgUser;
wfProfileIn( __METHOD__ );
- if ( $this->getID() === 0 ) {
+ if ( $this->mPage->getID() === 0 ) {
# If this is a MediaWiki:x message, then load the messages
# and return the message value for x.
- if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
- # If this is a system message, get the default text.
- list( $message, $lang ) = $wgMessageCache->figureMessage( $wgContLang->lcfirst( $this->mTitle->getText() ) );
- $text = wfMsgGetKey( $message, false, $lang, false );
-
- if ( wfEmptyMsg( $message, $text ) )
+ if ( $this->getTitle()->getNamespace() == NS_MEDIAWIKI ) {
+ $text = $this->getTitle()->getDefaultMessageText();
+ if ( $text === false ) {
$text = '';
+ }
} else {
$text = wfMsgExt( $wgUser->isLoggedIn() ? 'noarticletext' : 'noarticletextanon', 'parsemag' );
}
@@ -279,71 +199,6 @@ class Article {
}
/**
- * Get the text of the current revision. No side-effects...
- *
- * @return Return the text of the current revision
- */
- public function getRawText() {
- // Check process cache for current revision
- if ( $this->mContentLoaded && $this->mOldId == 0 ) {
- return $this->mContent;
- }
-
- $rev = Revision::newFromTitle( $this->mTitle );
- $text = $rev ? $rev->getRawText() : false;
-
- return $text;
- }
-
- /**
- * This function returns the text of a section, specified by a number ($section).
- * A section is text under a heading like == Heading == or \<h1\>Heading\</h1\>, or
- * the first section before any such heading (section 0).
- *
- * If a section contains subsections, these are also returned.
- *
- * @param $text String: text to look in
- * @param $section Integer: section number
- * @return string text of the requested section
- * @deprecated
- */
- public function getSection( $text, $section ) {
- global $wgParser;
- return $wgParser->getSection( $text, $section );
- }
-
- /**
- * Get the text that needs to be saved in order to undo all revisions
- * between $undo and $undoafter. Revisions must belong to the same page,
- * must exist and must not be deleted
- * @param $undo Revision
- * @param $undoafter Revision Must be an earlier revision than $undo
- * @return mixed string on success, false on failure
- */
- public function getUndoText( Revision $undo, Revision $undoafter = null ) {
- $currentRev = Revision::newFromTitle( $this->mTitle );
- if ( !$currentRev ) {
- return false; // no page
- }
- $undo_text = $undo->getText();
- $undoafter_text = $undoafter->getText();
- $cur_text = $currentRev->getText();
-
- if ( $cur_text == $undo_text ) {
- # No use doing a merge if it's just a straight revert.
- return $undoafter_text;
- }
-
- $undone_text = '';
-
- if ( !wfMerge( $undo_text, $undoafter_text, $cur_text, $undone_text ) ) {
- return false;
- }
-
- return $undone_text;
- }
-
- /**
* @return int The oldid of the article that is to be shown, 0 for the
* current revision
*/
@@ -370,14 +225,14 @@ class Article {
if ( isset( $oldid ) ) {
$oldid = intval( $oldid );
if ( $wgRequest->getVal( 'direction' ) == 'next' ) {
- $nextid = $this->mTitle->getNextRevisionID( $oldid );
+ $nextid = $this->getTitle()->getNextRevisionID( $oldid );
if ( $nextid ) {
$oldid = $nextid;
} else {
- $this->mRedirectUrl = $this->mTitle->getFullURL( 'redirect=no' );
+ $this->mRedirectUrl = $this->getTitle()->getFullURL( 'redirect=no' );
}
} elseif ( $wgRequest->getVal( 'direction' ) == 'prev' ) {
- $previd = $this->mTitle->getPreviousRevisionID( $oldid );
+ $previd = $this->getTitle()->getPreviousRevisionID( $oldid );
if ( $previd ) {
$oldid = $previd;
}
@@ -401,102 +256,12 @@ class Article {
wfProfileIn( __METHOD__ );
- $oldid = $this->getOldID();
- $this->mOldId = $oldid;
- $this->fetchContent( $oldid );
+ $this->fetchContent( $this->getOldID() );
wfProfileOut( __METHOD__ );
}
/**
- * Fetch a page record with the given conditions
- * @param $dbr Database object
- * @param $conditions Array
- * @return mixed Database result resource, or false on failure
- */
- protected function pageData( $dbr, $conditions ) {
- $fields = array(
- 'page_id',
- 'page_namespace',
- 'page_title',
- 'page_restrictions',
- 'page_counter',
- 'page_is_redirect',
- 'page_is_new',
- 'page_random',
- 'page_touched',
- 'page_latest',
- 'page_len',
- );
-
- wfRunHooks( 'ArticlePageDataBefore', array( &$this, &$fields ) );
-
- $row = $dbr->selectRow( 'page', $fields, $conditions, __METHOD__ );
-
- wfRunHooks( 'ArticlePageDataAfter', array( &$this, &$row ) );
-
- return $row;
- }
-
- /**
- * Fetch a page record matching the Title object's namespace and title
- * using a sanitized title string
- *
- * @param $dbr Database object
- * @param $title Title object
- * @return mixed Database result resource, or false on failure
- */
- public function pageDataFromTitle( $dbr, $title ) {
- return $this->pageData( $dbr, array(
- 'page_namespace' => $title->getNamespace(),
- 'page_title' => $title->getDBkey() ) );
- }
-
- /**
- * Fetch a page record matching the requested ID
- *
- * @param $dbr Database
- * @param $id Integer
- */
- protected function pageDataFromId( $dbr, $id ) {
- return $this->pageData( $dbr, array( 'page_id' => $id ) );
- }
-
- /**
- * Set the general counter, title etc data loaded from
- * some source.
- *
- * @param $data Database row object or "fromdb"
- */
- public function loadPageData( $data = 'fromdb' ) {
- if ( $data === 'fromdb' ) {
- $dbr = wfGetDB( DB_MASTER );
- $data = $this->pageDataFromId( $dbr, $this->getId() );
- }
-
- $lc = LinkCache::singleton();
-
- if ( $data ) {
- $lc->addGoodLinkObj( $data->page_id, $this->mTitle, $data->page_len, $data->page_is_redirect, $data->page_latest );
-
- $this->mTitle->mArticleID = intval( $data->page_id );
-
- # Old-fashioned restrictions
- $this->mTitle->loadRestrictions( $data->page_restrictions );
-
- $this->mCounter = intval( $data->page_counter );
- $this->mTouched = wfTimestamp( TS_MW, $data->page_touched );
- $this->mIsRedirect = intval( $data->page_is_redirect );
- $this->mLatest = intval( $data->page_latest );
- } else {
- $lc->addBadLinkObj( $this->mTitle );
- $this->mTitle->mArticleID = 0;
- }
-
- $this->mDataLoaded = true;
- }
-
- /**
* Get text of an article from database
* Does *NOT* follow redirects.
*
@@ -508,57 +273,44 @@ class Article {
return $this->mContent;
}
- $dbr = wfGetDB( DB_MASTER );
-
# Pre-fill content with error message so that if something
# fails we'll have something telling us what we intended.
- $t = $this->mTitle->getPrefixedText();
+ $t = $this->getTitle()->getPrefixedText();
$d = $oldid ? wfMsgExt( 'missingarticle-rev', array( 'escape' ), $oldid ) : '';
$this->mContent = wfMsgNoTrans( 'missing-article', $t, $d ) ;
if ( $oldid ) {
$revision = Revision::newFromId( $oldid );
- if ( $revision === null ) {
+ if ( !$revision ) {
wfDebug( __METHOD__ . " failed to retrieve specified revision, id $oldid\n" );
return false;
}
-
- $data = $this->pageDataFromId( $dbr, $revision->getPage() );
-
- if ( !$data ) {
- wfDebug( __METHOD__ . " failed to get page data linked to revision id $oldid\n" );
- return false;
- }
-
- $this->mTitle = Title::makeTitle( $data->page_namespace, $data->page_title );
- $this->loadPageData( $data );
- } else {
- if ( !$this->mDataLoaded ) {
- $data = $this->pageDataFromTitle( $dbr, $this->mTitle );
-
- if ( !$data ) {
- wfDebug( __METHOD__ . " failed to find page data for title " . $this->mTitle->getPrefixedText() . "\n" );
+ // Revision title doesn't match the page title given?
+ if ( $this->mPage->getID() != $revision->getPage() ) {
+ $function = array( get_class( $this->mPage ), 'newFromID' );
+ $this->mPage = call_user_func( $function, $revision->getPage() );
+ if ( !$this->mPage->getId() ) {
+ wfDebug( __METHOD__ . " failed to get page data linked to revision id $oldid\n" );
return false;
}
-
- $this->loadPageData( $data );
}
- $revision = Revision::newFromId( $this->mLatest );
- if ( $revision === null ) {
- wfDebug( __METHOD__ . " failed to retrieve current page, rev_id {$this->mLatest}\n" );
+ } else {
+ if ( !$this->mPage->getLatest() ) {
+ wfDebug( __METHOD__ . " failed to find page data for title " . $this->getTitle()->getPrefixedText() . "\n" );
+ return false;
+ }
+
+ $revision = $this->mPage->getRevision();
+ if ( !$revision ) {
+ wfDebug( __METHOD__ . " failed to retrieve current page, rev_id " . $this->mPage->getLatest() . "\n" );
return false;
}
}
- // FIXME: Horrible, horrible! This content-loading interface just plain sucks.
+ // @todo FIXME: Horrible, horrible! This content-loading interface just plain sucks.
// We should instead work with the Revision object when we need it...
$this->mContent = $revision->getText( Revision::FOR_THIS_USER ); // Loads if user is allowed
- $this->mUser = $revision->getUser();
- $this->mUserText = $revision->getUserText();
- $this->mComment = $revision->getComment();
- $this->mTimestamp = wfTimestamp( TS_MW, $revision->getTimestamp() );
-
$this->mRevIdFetched = $revision->getId();
$this->mContentLoaded = true;
$this->mRevision =& $revision;
@@ -569,118 +321,11 @@ class Article {
}
/**
- * Read/write accessor to select FOR UPDATE
- *
- * @param $x Mixed: FIXME
- * @return mixed value of $x, or value stored in Article::mForUpdate
- */
- public function forUpdate( $x = null ) {
- return wfSetVar( $this->mForUpdate, $x );
- }
-
- /**
- * Get options for all SELECT statements
- *
- * @param $options Array: an optional options array which'll be appended to
- * the default
- * @return Array: options
- */
- protected function getSelectOptions( $options = '' ) {
- if ( $this->mForUpdate ) {
- if ( is_array( $options ) ) {
- $options[] = 'FOR UPDATE';
- } else {
- $options = 'FOR UPDATE';
- }
- }
-
- return $options;
- }
-
- /**
- * @return int Page ID
- */
- public function getID() {
- return $this->mTitle->getArticleID();
- }
-
- /**
- * @return bool Whether or not the page exists in the database
+ * No-op
+ * @deprecated since 1.18
*/
- public function exists() {
- return $this->getId() > 0;
- }
-
- /**
- * Check if this page is something we're going to be showing
- * some sort of sensible content for. If we return false, page
- * views (plain action=view) will return an HTTP 404 response,
- * so spiders and robots can know they're following a bad link.
- *
- * @return bool
- */
- public function hasViewableContent() {
- return $this->exists() || $this->mTitle->isAlwaysKnown();
- }
-
- /**
- * @return int The view count for the page
- */
- public function getCount() {
- if ( -1 == $this->mCounter ) {
- $id = $this->getID();
-
- if ( $id == 0 ) {
- $this->mCounter = 0;
- } else {
- $dbr = wfGetDB( DB_SLAVE );
- $this->mCounter = $dbr->selectField( 'page',
- 'page_counter',
- array( 'page_id' => $id ),
- __METHOD__,
- $this->getSelectOptions()
- );
- }
- }
-
- return $this->mCounter;
- }
-
- /**
- * Determine whether a page would be suitable for being counted as an
- * article in the site_stats table based on the title & its content
- *
- * @param $text String: text to analyze
- * @return bool
- */
- public function isCountable( $text ) {
- global $wgUseCommaCount;
-
- $token = $wgUseCommaCount ? ',' : '[[';
-
- return $this->mTitle->isContentPage() && !$this->isRedirect( $text ) && in_string( $token, $text );
- }
-
- /**
- * Tests if the article text represents a redirect
- *
- * @param $text mixed string containing article contents, or boolean
- * @return bool
- */
- public function isRedirect( $text = false ) {
- if ( $text === false ) {
- if ( $this->mDataLoaded ) {
- return $this->mIsRedirect;
- }
-
- // Apparently loadPageData was never called
- $this->loadContent();
- $titleObj = Title::newFromRedirectRecurse( $this->fetchContent() );
- } else {
- $titleObj = Title::newFromRedirect( $text );
- }
-
- return $titleObj !== null;
+ public function forUpdate() {
+ wfDeprecated( __METHOD__ );
}
/**
@@ -694,80 +339,7 @@ class Article {
return true;
}
- return $this->exists() && isset( $this->mRevision ) && $this->mRevision->isCurrent();
- }
-
- /**
- * Loads everything except the text
- * This isn't necessary for all uses, so it's only done if needed.
- */
- protected function loadLastEdit() {
- if ( -1 != $this->mUser ) {
- return;
- }
-
- # New or non-existent articles have no user information
- $id = $this->getID();
- if ( 0 == $id ) {
- return;
- }
-
- $this->mLastRevision = Revision::loadFromPageId( wfGetDB( DB_MASTER ), $id );
- if ( !is_null( $this->mLastRevision ) ) {
- $this->mUser = $this->mLastRevision->getUser();
- $this->mUserText = $this->mLastRevision->getUserText();
- $this->mTimestamp = $this->mLastRevision->getTimestamp();
- $this->mComment = $this->mLastRevision->getComment();
- $this->mMinorEdit = $this->mLastRevision->isMinor();
- $this->mRevIdFetched = $this->mLastRevision->getId();
- }
- }
-
- /**
- * @return string GMT timestamp of last article revision
- **/
-
- public function getTimestamp() {
- // Check if the field has been filled by ParserCache::get()
- if ( !$this->mTimestamp ) {
- $this->loadLastEdit();
- }
-
- return wfTimestamp( TS_MW, $this->mTimestamp );
- }
-
- /**
- * @return int user ID for the user that made the last article revision
- */
- public function getUser() {
- $this->loadLastEdit();
- return $this->mUser;
- }
-
- /**
- * @return string username of the user that made the last article revision
- */
- public function getUserText() {
- $this->loadLastEdit();
- return $this->mUserText;
- }
-
- /**
- * @return string Comment stored for the last article revision
- */
- public function getComment() {
- $this->loadLastEdit();
- return $this->mComment;
- }
-
- /**
- * Returns true if last revision was marked as "minor edit"
- *
- * @return boolean Minor edit indicator for the last article revision.
- */
- public function getMinorEdit() {
- $this->loadLastEdit();
- return $this->mMinorEdit;
+ return $this->mPage->exists() && $this->mRevision && $this->mRevision->isCurrent();
}
/**
@@ -776,52 +348,11 @@ class Article {
* @return int revision ID of last article revision
*/
public function getRevIdFetched() {
- $this->loadLastEdit();
- return $this->mRevIdFetched;
- }
-
- /**
- * FIXME: this does what?
- * @param $limit Integer: default 0.
- * @param $offset Integer: default 0.
- * @return UserArrayFromResult object with User objects of article contributors for requested range
- */
- public function getContributors( $limit = 0, $offset = 0 ) {
- # FIXME: this is expensive; cache this info somewhere.
-
- $dbr = wfGetDB( DB_SLAVE );
- $revTable = $dbr->tableName( 'revision' );
- $userTable = $dbr->tableName( 'user' );
-
- $pageId = $this->getId();
-
- $user = $this->getUser();
-
- if ( $user ) {
- $excludeCond = "AND rev_user != $user";
+ if ( $this->mRevIdFetched ) {
+ return $this->mRevIdFetched;
} else {
- $userText = $dbr->addQuotes( $this->getUserText() );
- $excludeCond = "AND rev_user_text != $userText";
+ return $this->mPage->getLatest();
}
-
- $deletedBit = $dbr->bitAnd( 'rev_deleted', Revision::DELETED_USER ); // username hidden?
-
- $sql = "SELECT {$userTable}.*, rev_user_text as user_name, MAX(rev_timestamp) as timestamp
- FROM $revTable LEFT JOIN $userTable ON rev_user = user_id
- WHERE rev_page = $pageId
- $excludeCond
- AND $deletedBit = 0
- GROUP BY rev_user, rev_user_text
- ORDER BY timestamp DESC";
-
- if ( $limit > 0 ) {
- $sql = $dbr->limitResult( $sql, $limit, $offset );
- }
-
- $sql .= ' ' . $this->getSelectOptions();
- $res = $dbr->query( $sql, __METHOD__ );
-
- return new UserArrayFromResult( $res );
}
/**
@@ -836,67 +367,68 @@ class Article {
# Get variables from query string
$oldid = $this->getOldID();
+
+ # getOldID may want us to redirect somewhere else
+ if ( $this->mRedirectUrl ) {
+ $wgOut->redirect( $this->mRedirectUrl );
+ wfDebug( __METHOD__ . ": redirecting due to oldid\n" );
+ wfProfileOut( __METHOD__ );
+
+ return;
+ }
+
+ $wgOut->setArticleFlag( true );
+ # Set page title (may be overridden by DISPLAYTITLE)
+ $wgOut->setPageTitle( $this->getTitle()->getPrefixedText() );
+
+ # If we got diff in the query, we want to see a diff page instead of the article.
+ if ( $wgRequest->getCheck( 'diff' ) ) {
+ wfDebug( __METHOD__ . ": showing diff page\n" );
+ $this->showDiffPage();
+ wfProfileOut( __METHOD__ );
+
+ return;
+ }
+
+ # Allow frames by default
+ $wgOut->allowClickjacking();
+
$parserCache = ParserCache::singleton();
- $parserOptions = $this->getParserOptions();
+ $parserOptions = $this->mPage->getParserOptions();
# Render printable version, use printable version cache
if ( $wgOut->isPrintable() ) {
$parserOptions->setIsPrintable( true );
$parserOptions->setEditSection( false );
- } else if ( $wgUseETag && !$this->mTitle->quickUserCan( 'edit' ) ) {
+ } elseif ( $wgUseETag && !$this->getTitle()->quickUserCan( 'edit' ) ) {
$parserOptions->setEditSection( false );
}
# Try client and file cache
- if ( $oldid === 0 && $this->checkTouched() ) {
+ if ( $oldid === 0 && $this->mPage->checkTouched() ) {
if ( $wgUseETag ) {
$wgOut->setETag( $parserCache->getETag( $this, $parserOptions ) );
}
# Is it client cached?
- if ( $wgOut->checkLastModified( $this->getTouched() ) ) {
+ if ( $wgOut->checkLastModified( $this->mPage->getTouched() ) ) {
wfDebug( __METHOD__ . ": done 304\n" );
wfProfileOut( __METHOD__ );
return;
# Try file cache
- } else if ( $wgUseFileCache && $this->tryFileCache() ) {
+ } elseif ( $wgUseFileCache && $this->tryFileCache() ) {
wfDebug( __METHOD__ . ": done file cache\n" );
# tell wgOut that output is taken care of
$wgOut->disable();
- $this->viewUpdates();
+ $this->mPage->viewUpdates();
wfProfileOut( __METHOD__ );
return;
}
}
- # getOldID may want us to redirect somewhere else
- if ( $this->mRedirectUrl ) {
- $wgOut->redirect( $this->mRedirectUrl );
- wfDebug( __METHOD__ . ": redirecting due to oldid\n" );
- wfProfileOut( __METHOD__ );
-
- return;
- }
-
- $wgOut->setArticleFlag( true );
- # Set page title (may be overridden by DISPLAYTITLE)
- $wgOut->setPageTitle( $this->mTitle->getPrefixedText() );
-
- # If we got diff in the query, we want to see a diff page instead of the article.
- if ( $wgRequest->getCheck( 'diff' ) ) {
- wfDebug( __METHOD__ . ": showing diff page\n" );
- $this->showDiffPage();
- wfProfileOut( __METHOD__ );
-
- return;
- }
-
- # Allow frames by default
- $wgOut->allowClickjacking();
-
- if ( !$wgUseETag && !$this->mTitle->quickUserCan( 'edit' ) ) {
+ if ( !$wgUseETag && !$this->getTitle()->quickUserCan( 'edit' ) ) {
$parserOptions->setEditSection( false );
}
@@ -931,14 +463,18 @@ class Article {
$wgOut->addParserOutput( $this->mParserOutput );
# Ensure that UI elements requiring revision ID have
# the correct version information.
- $wgOut->setRevisionId( $this->mLatest );
+ $wgOut->setRevisionId( $this->mPage->getLatest() );
$outputDone = true;
+ # Preload timestamp to avoid a DB hit
+ if ( isset( $this->mParserOutput->mTimestamp ) ) {
+ $this->mPage->setTimestamp( $this->mParserOutput->mTimestamp );
+ }
}
}
break;
case 3:
$text = $this->getContent();
- if ( $text === false || $this->getID() == 0 ) {
+ if ( $text === false || $this->mPage->getID() == 0 ) {
wfDebug( __METHOD__ . ": showing missing article\n" );
$this->showMissingArticle();
wfProfileOut( __METHOD__ );
@@ -946,7 +482,7 @@ class Article {
}
# Another whitelist check in case oldid is altering the title
- if ( !$this->mTitle->userCanRead() ) {
+ if ( !$this->getTitle()->userCanRead() ) {
wfDebug( __METHOD__ . ": denied on secondary read check\n" );
$wgOut->loginToUse();
$wgOut->output();
@@ -966,14 +502,14 @@ class Article {
}
# If this "old" version is the current, then try the parser cache...
- if ( $oldid === $this->getLatest() && $this->useParserCache( false ) ) {
+ if ( $oldid === $this->mPage->getLatest() && $this->useParserCache( false ) ) {
$this->mParserOutput = $parserCache->get( $this, $parserOptions );
if ( $this->mParserOutput ) {
- wfDebug( __METHOD__ . ": showing parser cache for current rev permalink\n" );
+ wfDebug( __METHOD__ . ": showing parser cache for current rev permalink\n" );
$wgOut->addParserOutput( $this->mParserOutput );
- $wgOut->setRevisionId( $this->mLatest );
+ $wgOut->setRevisionId( $this->mPage->getLatest() );
$outputDone = true;
- break;
+ break;
}
}
}
@@ -983,7 +519,7 @@ class Article {
$wgOut->setRevisionId( $this->getRevIdFetched() );
# Pages containing custom CSS or JavaScript get special treatment
- if ( $this->mTitle->isCssOrJsPage() || $this->mTitle->isCssJsSubpage() ) {
+ if ( $this->getTitle()->isCssOrJsPage() || $this->getTitle()->isCssJsSubpage() ) {
wfDebug( __METHOD__ . ": showing CSS/JS source\n" );
$this->showCssOrJsPage();
$outputDone = true;
@@ -995,7 +531,7 @@ class Article {
# Don't append the subtitle if this was an old revision
$wgOut->addHTML( $this->viewRedirect( $rt, !$wasRedirected && $this->isCurrent() ) );
# Parse just to get categories, displaytitle, etc.
- $this->mParserOutput = $wgParser->parse( $text, $this->mTitle, $parserOptions );
+ $this->mParserOutput = $wgParser->parse( $text, $this->getTitle(), $parserOptions );
$wgOut->addParserOutputNoText( $this->mParserOutput );
$outputDone = true;
}
@@ -1007,7 +543,7 @@ class Article {
$key = $parserCache->getKey( $this, $parserOptions );
$poolArticleView = new PoolWorkArticleView( $this, $key, $useParserCache, $parserOptions );
-
+
if ( !$poolArticleView->execute() ) {
# Connection or timeout error
wfProfileOut( __METHOD__ );
@@ -1035,10 +571,11 @@ class Article {
# tents of 'pagetitle-view-mainpage' instead of the default (if
# that's not empty).
# This message always exists because it is in the i18n files
- if ( $this->mTitle->equals( Title::newMainPage() )
- && ( $m = wfMsgForContent( 'pagetitle-view-mainpage' ) ) !== '' )
- {
- $wgOut->setHTMLTitle( $m );
+ if ( $this->getTitle()->equals( Title::newMainPage() ) ) {
+ $msg = wfMessage( 'pagetitle-view-mainpage' )->inContentLanguage();
+ if ( !$msg->isDisabled() ) {
+ $wgOut->setHTMLTitle( $msg->title( $this->getTitle() )->text() );
+ }
}
# Now that we've filled $this->mParserOutput, we know whether
@@ -1048,7 +585,7 @@ class Article {
$wgOut->setFollowPolicy( $policy['follow'] );
$this->showViewFooter();
- $this->viewUpdates();
+ $this->mPage->viewUpdates();
wfProfileOut( __METHOD__ );
}
@@ -1066,16 +603,14 @@ class Article {
$unhide = $wgRequest->getInt( 'unhide' ) == 1;
$oldid = $this->getOldID();
- $de = new DifferenceEngine( $this->mTitle, $oldid, $diff, $rcid, $purge, $unhide );
+ $de = new DifferenceEngine( $this->getTitle(), $oldid, $diff, $rcid, $purge, $unhide );
// DifferenceEngine directly fetched the revision:
$this->mRevIdFetched = $de->mNewid;
$de->showDiffPage( $diffOnly );
- // Needed to get the page's current revision
- $this->loadPageData();
- if ( $diff == 0 || $diff == $this->mLatest ) {
+ if ( $diff == 0 || $diff == $this->mPage->getLatest() ) {
# Run view updates for current revision only
- $this->viewUpdates();
+ $this->mPage->viewUpdates();
}
}
@@ -1087,15 +622,19 @@ class Article {
* page views.
*/
protected function showCssOrJsPage() {
- global $wgOut;
+ global $wgOut, $wgLang;
+
+ $dir = $wgLang->getDir();
+ $lang = $wgLang->getCode();
- $wgOut->wrapWikiMsg( "<div id='mw-clearyourcache'>\n$1\n</div>", 'clearyourcache' );
+ $wgOut->wrapWikiMsg( "<div id='mw-clearyourcache' lang='$lang' dir='$dir' class='mw-content-$dir'>\n$1\n</div>",
+ 'clearyourcache' );
// Give hooks a chance to customise the output
- if ( wfRunHooks( 'ShowRawCssJs', array( $this->mContent, $this->mTitle, $wgOut ) ) ) {
+ if ( wfRunHooks( 'ShowRawCssJs', array( $this->mContent, $this->getTitle(), $wgOut ) ) ) {
// Wrap the whole lot in a <pre> and don't parse
$m = array();
- preg_match( '!\.(css|js)$!u', $this->mTitle->getText(), $m );
+ preg_match( '!\.(css|js)$!u', $this->getTitle()->getText(), $m );
$wgOut->addHTML( "<pre class=\"mw-code mw-{$m[1]}\" dir=\"ltr\">\n" );
$wgOut->addHTML( htmlspecialchars( $this->mContent ) );
$wgOut->addHTML( "\n</pre>\n" );
@@ -1112,13 +651,12 @@ class Article {
global $wgOut, $wgArticleRobotPolicies, $wgNamespaceRobotPolicies;
global $wgDefaultRobotPolicy, $wgRequest;
- $ns = $this->mTitle->getNamespace();
+ $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->mTitle->isSubpage() ) {
- $block = new Block();
- if ( $block->load( $this->mTitle->getText() ) ) {
+ if ( !$this->getTitle()->isSubpage() ) {
+ if ( Block::newFromTarget( null, $this->getTitle()->getText() ) instanceof Block ) {
return array(
'index' => 'noindex',
'follow' => 'nofollow'
@@ -1127,7 +665,7 @@ class Article {
}
}
- if ( $this->getID() === 0 || $this->getOldID() ) {
+ if ( $this->mPage->getID() === 0 || $this->getOldID() ) {
# Non-articles (special pages etc), and old revisions
return array(
'index' => 'noindex',
@@ -1157,7 +695,7 @@ class Article {
self::formatRobotPolicy( $wgNamespaceRobotPolicies[$ns] )
);
}
- if ( $this->mTitle->canUseNoindex() && is_object( $this->mParserOutput ) && $this->mParserOutput->getIndexPolicy() ) {
+ if ( $this->getTitle()->canUseNoindex() && is_object( $this->mParserOutput ) && $this->mParserOutput->getIndexPolicy() ) {
# __INDEX__ and __NOINDEX__ magic words, if allowed. Incorporates
# a final sanity check that we have really got the parser output.
$policy = array_merge(
@@ -1166,11 +704,11 @@ class Article {
);
}
- if ( isset( $wgArticleRobotPolicies[$this->mTitle->getPrefixedText()] ) ) {
+ if ( isset( $wgArticleRobotPolicies[$this->getTitle()->getPrefixedText()] ) ) {
# (bug 14900) site config can override user-defined __INDEX__ or __NOINDEX__
$policy = array_merge(
$policy,
- self::formatRobotPolicy( $wgArticleRobotPolicies[$this->mTitle->getPrefixedText()] )
+ self::formatRobotPolicy( $wgArticleRobotPolicies[$this->getTitle()->getPrefixedText()] )
);
}
@@ -1182,7 +720,7 @@ class Article {
* merging of several policies using array_merge().
* @param $policy Mixed, returns empty array on null/false/'', transparent
* to already-converted arrays, converts String.
- * @return associative Array: 'index' => <indexpolicy>, 'follow' => <followpolicy>
+ * @return Array: 'index' => <indexpolicy>, 'follow' => <followpolicy>
*/
public static function formatRobotPolicy( $policy ) {
if ( is_array( $policy ) ) {
@@ -1214,16 +752,15 @@ class Article {
* @return boolean
*/
public function showRedirectedFromHeader() {
- global $wgOut, $wgUser, $wgRequest, $wgRedirectSources;
+ global $wgOut, $wgRequest, $wgRedirectSources;
$rdfrom = $wgRequest->getVal( 'rdfrom' );
- $sk = $wgUser->getSkin();
if ( isset( $this->mRedirectedFrom ) ) {
// This is an internally redirected page view.
// We'll need a backlink to the source page for navigation.
if ( wfRunHooks( 'ArticleViewRedirect', array( &$this ) ) ) {
- $redir = $sk->link(
+ $redir = Linker::link(
$this->mRedirectedFrom,
null,
array(),
@@ -1235,14 +772,14 @@ class Article {
$wgOut->setSubtitle( $s );
// Set the fragment if one was specified in the redirect
- if ( strval( $this->mTitle->getFragment() ) != '' ) {
- $fragment = Xml::escapeJsString( $this->mTitle->getFragmentForURL() );
+ if ( strval( $this->getTitle()->getFragment() ) != '' ) {
+ $fragment = Xml::escapeJsString( $this->getTitle()->getFragmentForURL() );
$wgOut->addInlineScript( "redirectToFragment(\"$fragment\");" );
}
// Add a <link rel="canonical"> tag
$wgOut->addLink( array( 'rel' => 'canonical',
- 'href' => $this->mTitle->getLocalURL() )
+ 'href' => $this->getTitle()->getLocalURL() )
);
return true;
@@ -1251,7 +788,7 @@ class Article {
// This is an externally redirected view, from some other wiki.
// If it was reported from a trusted site, supply a backlink.
if ( $wgRedirectSources && preg_match( $wgRedirectSources, $rdfrom ) ) {
- $redir = $sk->makeExternalLink( $rdfrom, $rdfrom );
+ $redir = Linker::makeExternalLink( $rdfrom, $rdfrom );
$s = wfMsgExt( 'redirectedfrom', array( 'parseinline', 'replaceafter' ), $redir );
$wgOut->setSubtitle( $s );
@@ -1269,9 +806,8 @@ class Article {
public function showNamespaceHeader() {
global $wgOut;
- if ( $this->mTitle->isTalkPage() ) {
- $msg = wfMsgNoTrans( 'talkpageheader' );
- if ( $msg !== '-' && !wfEmptyMsg( 'talkpageheader', $msg ) ) {
+ if ( $this->getTitle()->isTalkPage() ) {
+ if ( !wfMessage( 'talkpageheader' )->isDisabled() ) {
$wgOut->wrapWikiMsg( "<div class=\"mw-talkpageheader\">\n$1\n</div>", array( 'talkpageheader' ) );
}
}
@@ -1284,7 +820,7 @@ class Article {
global $wgOut, $wgUseTrackbacks;
# check if we're displaying a [[User talk:x.x.x.x]] anonymous talk page
- if ( $this->mTitle->getNamespace() == NS_USER_TALK && IP::isValid( $this->mTitle->getText() ) ) {
+ if ( $this->getTitle()->getNamespace() == NS_USER_TALK && IP::isValid( $this->getTitle()->getText() ) ) {
$wgOut->addWikiMsg( 'anontalkpagetext' );
}
@@ -1296,6 +832,9 @@ class Article {
if ( $wgUseTrackbacks ) {
$this->addTrackbacks();
}
+
+ wfRunHooks( 'ArticleViewFooter', array( $this ) );
+
}
/**
@@ -1308,11 +847,10 @@ class Article {
$rcid = $wgRequest->getVal( 'rcid' );
- if ( !$rcid || !$this->mTitle->quickUserCan( 'patrol' ) ) {
+ if ( !$rcid || !$this->getTitle()->quickUserCan( 'patrol' ) ) {
return;
}
- $sk = $wgUser->getSkin();
$token = $wgUser->editToken( $rcid );
$wgOut->preventClickjacking();
@@ -1320,8 +858,8 @@ class Article {
"<div class='patrollink'>" .
wfMsgHtml(
'markaspatrolledlink',
- $sk->link(
- $this->mTitle,
+ Linker::link(
+ $this->getTitle(),
wfMsgHtml( 'markaspatrolledtext' ),
array(),
array(
@@ -1344,16 +882,16 @@ class Article {
global $wgOut, $wgRequest, $wgUser;
# Show info in user (talk) namespace. Does the user exist? Is he blocked?
- if ( $this->mTitle->getNamespace() == NS_USER || $this->mTitle->getNamespace() == NS_USER_TALK ) {
- $parts = explode( '/', $this->mTitle->getText() );
+ if ( $this->getTitle()->getNamespace() == NS_USER || $this->getTitle()->getNamespace() == NS_USER_TALK ) {
+ $parts = explode( '/', $this->getTitle()->getText() );
$rootPart = $parts[0];
$user = User::newFromName( $rootPart, false /* allow IP users*/ );
$ip = User::isIP( $rootPart );
if ( !$user->isLoggedIn() && !$ip ) { # User does not exist
$wgOut->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n\$1\n</div>",
- array( 'userpage-userdoesnotexist-view', $rootPart ) );
- } else if ( $user->isBlocked() ) { # Show log extract if the user is currently blocked
+ array( 'userpage-userdoesnotexist-view', wfEscapeWikiText( $rootPart ) ) );
+ } elseif ( $user->isBlocked() ) { # Show log extract if the user is currently blocked
LogEventsList::showLogExtract(
$wgOut,
'block',
@@ -1374,7 +912,7 @@ class Article {
wfRunHooks( 'ShowMissingArticle', array( $this ) );
# Show delete and move logs
- LogEventsList::showLogExtract( $wgOut, array( 'delete', 'move' ), $this->mTitle->getPrefixedText(), '',
+ LogEventsList::showLogExtract( $wgOut, array( 'delete', 'move' ), $this->getTitle()->getPrefixedText(), '',
array( 'lim' => 10,
'conds' => array( "log_action != 'revision'" ),
'showIfEmpty' => false,
@@ -1385,14 +923,14 @@ class Article {
$oldid = $this->getOldID();
if ( $oldid ) {
$text = wfMsgNoTrans( 'missing-article',
- $this->mTitle->getPrefixedText(),
+ $this->getTitle()->getPrefixedText(),
wfMsgNoTrans( 'missingarticle-rev', $oldid ) );
- } elseif ( $this->mTitle->getNamespace() === NS_MEDIAWIKI ) {
+ } elseif ( $this->getTitle()->getNamespace() === NS_MEDIAWIKI ) {
// Use the default message text
- $text = $this->getContent();
+ $text = $this->getTitle()->getDefaultMessageText();
} else {
- $createErrors = $this->mTitle->getUserPermissionsErrors( 'create', $wgUser );
- $editErrors = $this->mTitle->getUserPermissionsErrors( 'edit', $wgUser );
+ $createErrors = $this->getTitle()->getUserPermissionsErrors( 'create', $wgUser );
+ $editErrors = $this->getTitle()->getUserPermissionsErrors( 'edit', $wgUser );
$errors = array_merge( $createErrors, $editErrors );
if ( !count( $errors ) ) {
@@ -1403,7 +941,7 @@ class Article {
}
$text = "<div class='noarticletext'>\n$text\n</div>";
- if ( !$this->hasViewableContent() ) {
+ if ( !$this->mPage->hasViewableContent() ) {
// If there's no backing content, send a 404 Not Found
// for better machine handling of broken links.
$wgRequest->response()->header( "HTTP/1.1 404 Not Found" );
@@ -1433,10 +971,10 @@ class Article {
return false;
// If the user needs to confirm that they want to see it...
- } else if ( $wgRequest->getInt( 'unhide' ) != 1 ) {
+ } elseif ( $wgRequest->getInt( 'unhide' ) != 1 ) {
# Give explanation and add a link to view the revision...
$oldid = intval( $this->getOldID() );
- $link = $this->mTitle->getFullUrl( "oldid={$oldid}&unhide=1" );
+ $link = $this->getTitle()->getFullUrl( "oldid={$oldid}&unhide=1" );
$msg = $this->mRevision->isDeleted( Revision::DELETED_RESTRICTED ) ?
'rev-suppressed-text-unhide' : 'rev-deleted-text-unhide';
$wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n",
@@ -1454,41 +992,25 @@ class Article {
}
/**
- * Should the parser cache be used?
- *
- * @return boolean
- */
- public function useParserCache( $oldid ) {
- global $wgUser, $wgEnableParserCache;
-
- return $wgEnableParserCache
- && $wgUser->getStubThreshold() == 0
- && $this->exists()
- && empty( $oldid )
- && !$this->mTitle->isCssOrJsPage()
- && !$this->mTitle->isCssJsSubpage();
- }
-
- /**
* Execute the uncached parse for action=view
*/
public function doViewParse() {
global $wgOut;
$oldid = $this->getOldID();
- $parserOptions = $this->getParserOptions();
+ $parserOptions = $this->mPage->getParserOptions();
# Render printable version, use printable version cache
$parserOptions->setIsPrintable( $wgOut->isPrintable() );
# Don't show section-edit links on old revisions... this way lies madness.
- if ( !$this->isCurrent() || $wgOut->isPrintable() || !$this->mTitle->quickUserCan( 'edit' ) ) {
+ if ( !$this->isCurrent() || $wgOut->isPrintable() || !$this->getTitle()->quickUserCan( 'edit' ) ) {
$parserOptions->setEditSection( false );
}
-
+
$useParserCache = $this->useParserCache( $oldid );
$this->outputWikiText( $this->getContent(), $useParserCache, $parserOptions );
-
+
return true;
}
@@ -1503,13 +1025,13 @@ class Article {
public function tryDirtyCache() {
global $wgOut;
$parserCache = ParserCache::singleton();
- $options = $this->getParserOptions();
-
+ $options = $this->mPage->getParserOptions();
+
if ( $wgOut->isPrintable() ) {
$options->setIsPrintable( true );
$options->setEditSection( false );
}
-
+
$output = $parserCache->getDirty( $this, $options );
if ( $output ) {
@@ -1532,48 +1054,46 @@ class Article {
/**
* View redirect
*
- * @param $target Title object or Array of destination(s) to redirect
+ * @param $target Title|Array of destination(s) to redirect
* @param $appendSubtitle Boolean [optional]
* @param $forceKnown Boolean: should the image be shown as a bluelink regardless of existence?
* @return string containing HMTL with redirect link
*/
public function viewRedirect( $target, $appendSubtitle = true, $forceKnown = false ) {
- global $wgOut, $wgContLang, $wgStylePath, $wgUser;
+ global $wgOut, $wgLang, $wgStylePath;
if ( !is_array( $target ) ) {
$target = array( $target );
}
- $imageDir = $wgContLang->getDir();
+ $imageDir = $wgLang->getDir();
if ( $appendSubtitle ) {
$wgOut->appendSubtitle( wfMsgHtml( 'redirectpagesub' ) );
}
- $sk = $wgUser->getSkin();
// the loop prepends the arrow image before the link, so the first case needs to be outside
$title = array_shift( $target );
if ( $forceKnown ) {
- $link = $sk->linkKnown( $title, htmlspecialchars( $title->getFullText() ) );
+ $link = Linker::linkKnown( $title, htmlspecialchars( $title->getFullText() ) );
} else {
- $link = $sk->link( $title, htmlspecialchars( $title->getFullText() ) );
+ $link = Linker::link( $title, htmlspecialchars( $title->getFullText() ) );
}
$nextRedirect = $wgStylePath . '/common/images/nextredirect' . $imageDir . '.png';
- $alt = $wgContLang->isRTL() ? 'â†' : '→';
+ $alt = $wgLang->isRTL() ? 'â†' : '→';
// Automatically append redirect=no to each link, since most of them are redirect pages themselves.
- // FIXME: where this happens?
foreach ( $target as $rt ) {
$link .= Html::element( 'img', array( 'src' => $nextRedirect, 'alt' => $alt ) );
if ( $forceKnown ) {
- $link .= $sk->linkKnown( $rt, htmlspecialchars( $rt->getFullText() ) );
+ $link .= Linker::linkKnown( $rt, htmlspecialchars( $rt->getFullText(), array(), array( 'redirect' => 'no' ) ) );
} else {
- $link .= $sk->link( $rt, htmlspecialchars( $rt->getFullText() ) );
+ $link .= Linker::link( $rt, htmlspecialchars( $rt->getFullText() ), array(), array( 'redirect' => 'no' ) );
}
}
- $imageUrl = $wgStylePath . '/common/images/redirect' . $imageDir . '.png';
+ $imageUrl = $wgStylePath . '/common/images/redirect' . $imageDir . '.png';
return '<div class="redirectMsg">' .
Html::element( 'img', array( 'src' => $imageUrl, 'alt' => '#REDIRECT' ) ) .
'<span class="redirectText">' . $link . '</span></div>';
@@ -1583,12 +1103,12 @@ class Article {
* Builds trackback links for article display if $wgUseTrackbacks is set to true
*/
public function addTrackbacks() {
- global $wgOut, $wgUser;
+ global $wgOut;
$dbr = wfGetDB( DB_SLAVE );
$tbs = $dbr->select( 'trackbacks',
array( 'tb_id', 'tb_title', 'tb_url', 'tb_ex', 'tb_name' ),
- array( 'tb_page' => $this->getID() )
+ array( 'tb_page' => $this->mPage->getID() )
);
if ( !$dbr->numRows( $tbs ) ) {
@@ -1601,9 +1121,9 @@ class Article {
foreach ( $tbs as $o ) {
$rmvtxt = "";
- if ( $wgUser->isAllowed( 'trackback' ) ) {
- $delurl = $this->mTitle->getFullURL( "action=deletetrackback&tbid=" .
- $o->tb_id . "&token=" . urlencode( $wgUser->editToken() ) );
+ if ( $this->getContext()->getUser()->isAllowed( 'trackback' ) ) {
+ $delurl = $this->getTitle()->getFullURL( "action=deletetrackback&tbid=" .
+ $o->tb_id . "&token=" . urlencode( $this->getContext()->getUser()->editToken() ) );
$rmvtxt = wfMsg( 'trackbackremove', htmlspecialchars( $delurl ) );
}
@@ -1621,29 +1141,10 @@ class Article {
/**
* Removes trackback record for current article from trackbacks table
+ * @deprecated since 1.18
*/
public function deletetrackback() {
- global $wgUser, $wgRequest, $wgOut;
-
- if ( !$wgUser->matchEditToken( $wgRequest->getVal( 'token' ) ) ) {
- $wgOut->addWikiMsg( 'sessionfailure' );
-
- return;
- }
-
- $permission_errors = $this->mTitle->getUserPermissionsErrors( 'delete', $wgUser );
-
- if ( count( $permission_errors ) ) {
- $wgOut->showPermissionsErrorPage( $permission_errors );
-
- return;
- }
-
- $db = wfGetDB( DB_MASTER );
- $db->delete( 'trackbacks', array( 'tb_id' => $wgRequest->getInt( 'tbid' ) ) );
-
- $wgOut->addWikiMsg( 'trackbackdeleteok' );
- $this->mTitle->invalidateCache();
+ return Action::factory( 'deletetrackback', $this )->show();
}
/**
@@ -1661,766 +1162,24 @@ class Article {
* Handle action=purge
*/
public function purge() {
- global $wgUser, $wgRequest, $wgOut;
-
- if ( $wgUser->isAllowed( 'purge' ) || $wgRequest->wasPosted() ) {
- //FIXME: shouldn't this be in doPurge()?
- if ( wfRunHooks( 'ArticlePurge', array( &$this ) ) ) {
- $this->doPurge();
- $this->view();
- }
- } else {
- $formParams = array(
- 'method' => 'post',
- 'action' => $wgRequest->getRequestURL(),
- );
-
- $wgOut->addWikiMsg( 'confirm-purge-top' );
-
- $form = Html::openElement( 'form', $formParams );
- $form .= Xml::submitButton( wfMsg( 'confirm_purge_button' ) );
- $form .= Html::closeElement( 'form' );
-
- $wgOut->addHTML( $form );
- $wgOut->addWikiMsg( 'confirm-purge-bottom' );
-
- $wgOut->setPageTitle( $this->mTitle->getPrefixedText() );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- }
- }
-
- /**
- * Perform the actions of a page purging
- */
- public function doPurge() {
- global $wgUseSquid;
-
- // Invalidate the cache
- $this->mTitle->invalidateCache();
-
- if ( $wgUseSquid ) {
- // Commit the transaction before the purge is sent
- $dbw = wfGetDB( DB_MASTER );
- $dbw->commit();
-
- // Send purge
- $update = SquidUpdate::newSimplePurge( $this->mTitle );
- $update->doUpdate();
- }
-
- if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
- global $wgMessageCache;
-
- if ( $this->getID() == 0 ) {
- $text = false;
- } else {
- $text = $this->getRawText();
- }
-
- $wgMessageCache->replace( $this->mTitle->getDBkey(), $text );
- }
- }
-
- /**
- * Insert a new empty page record for this article.
- * This *must* be followed up by creating a revision
- * and running $this->updateRevisionOn( ... );
- * or else the record will be left in a funky state.
- * Best if all done inside a transaction.
- *
- * @param $dbw Database
- * @return int The newly created page_id key, or false if the title already existed
- * @private
- */
- public function insertOn( $dbw ) {
- wfProfileIn( __METHOD__ );
-
- $page_id = $dbw->nextSequenceValue( 'page_page_id_seq' );
- $dbw->insert( 'page', array(
- 'page_id' => $page_id,
- 'page_namespace' => $this->mTitle->getNamespace(),
- 'page_title' => $this->mTitle->getDBkey(),
- 'page_counter' => 0,
- 'page_restrictions' => '',
- '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...
- ), __METHOD__, 'IGNORE' );
-
- $affected = $dbw->affectedRows();
-
- if ( $affected ) {
- $newid = $dbw->insertId();
- $this->mTitle->resetArticleId( $newid );
- }
- wfProfileOut( __METHOD__ );
-
- return $affected ? $newid : false;
- }
-
- /**
- * Update the page record to point to a newly saved revision.
- *
- * @param $dbw DatabaseBase: object
- * @param $revision Revision: For ID number, and text used to set
- length and redirect status fields
- * @param $lastRevision Integer: if given, will not overwrite the page field
- * when different from the currently set value.
- * Giving 0 indicates the new page flag should be set
- * on.
- * @param $lastRevIsRedirect Boolean: if given, will optimize adding and
- * removing rows in redirect table.
- * @return bool true on success, false on failure
- * @private
- */
- public function updateRevisionOn( &$dbw, $revision, $lastRevision = null, $lastRevIsRedirect = null ) {
- wfProfileIn( __METHOD__ );
-
- $text = $revision->getText();
- $rt = Title::newFromRedirectRecurse( $text );
-
- $conditions = array( 'page_id' => $this->getId() );
-
- if ( !is_null( $lastRevision ) ) {
- # An extra check against threads stepping on each other
- $conditions['page_latest'] = $lastRevision;
- }
-
- $dbw->update( 'page',
- array( /* SET */
- 'page_latest' => $revision->getId(),
- 'page_touched' => $dbw->timestamp(),
- 'page_is_new' => ( $lastRevision === 0 ) ? 1 : 0,
- 'page_is_redirect' => $rt !== null ? 1 : 0,
- 'page_len' => strlen( $text ),
- ),
- $conditions,
- __METHOD__ );
-
- $result = $dbw->affectedRows() != 0;
- if ( $result ) {
- $this->updateRedirectOn( $dbw, $rt, $lastRevIsRedirect );
- }
-
- wfProfileOut( __METHOD__ );
- return $result;
- }
-
- /**
- * Add row to the redirect table if this is a redirect, remove otherwise.
- *
- * @param $dbw Database
- * @param $redirectTitle a title object pointing to the redirect target,
- * or NULL if this is not a redirect
- * @param $lastRevIsRedirect If given, will optimize adding and
- * removing rows in redirect table.
- * @return bool true on success, false on failure
- * @private
- */
- public function updateRedirectOn( &$dbw, $redirectTitle, $lastRevIsRedirect = null ) {
- // Always update redirects (target link might have changed)
- // Update/Insert if we don't know if the last revision was a redirect or not
- // Delete if changing from redirect to non-redirect
- $isRedirect = !is_null( $redirectTitle );
-
- if ( $isRedirect || is_null( $lastRevIsRedirect ) || $lastRevIsRedirect !== $isRedirect ) {
- wfProfileIn( __METHOD__ );
- if ( $isRedirect ) {
- $this->insertRedirectEntry( $redirectTitle );
- } else {
- // This is not a redirect, remove row from redirect table
- $where = array( 'rd_from' => $this->getId() );
- $dbw->delete( 'redirect', $where, __METHOD__ );
- }
-
- if ( $this->getTitle()->getNamespace() == NS_FILE ) {
- RepoGroup::singleton()->getLocalRepo()->invalidateImageRedirect( $this->getTitle() );
- }
- wfProfileOut( __METHOD__ );
-
- return ( $dbw->affectedRows() != 0 );
- }
-
- return true;
- }
-
- /**
- * If the given revision is newer than the currently set page_latest,
- * update the page record. Otherwise, do nothing.
- *
- * @param $dbw Database object
- * @param $revision Revision object
- * @return mixed
- */
- public function updateIfNewerOn( &$dbw, $revision ) {
- wfProfileIn( __METHOD__ );
-
- $row = $dbw->selectRow(
- array( 'revision', 'page' ),
- array( 'rev_id', 'rev_timestamp', 'page_is_redirect' ),
- array(
- 'page_id' => $this->getId(),
- 'page_latest=rev_id' ),
- __METHOD__ );
-
- if ( $row ) {
- if ( wfTimestamp( TS_MW, $row->rev_timestamp ) >= $revision->getTimestamp() ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
- $prev = $row->rev_id;
- $lastRevIsRedirect = (bool)$row->page_is_redirect;
- } else {
- # No or missing previous revision; mark the page as new
- $prev = 0;
- $lastRevIsRedirect = null;
- }
-
- $ret = $this->updateRevisionOn( $dbw, $revision, $prev, $lastRevIsRedirect );
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- /**
- * @param $section empty/null/false or a section number (0, 1, 2, T1, T2...)
- * @param $text String: new text of the section
- * @param $summary String: new section's subject, only if $section is 'new'
- * @param $edittime String: revision timestamp or null to use the current revision
- * @return string Complete article text, or null if error
- */
- public function replaceSection( $section, $text, $summary = '', $edittime = null ) {
- wfProfileIn( __METHOD__ );
-
- if ( strval( $section ) == '' ) {
- // Whole-page edit; let the whole text through
- } else {
- if ( is_null( $edittime ) ) {
- $rev = Revision::newFromTitle( $this->mTitle );
- } else {
- $dbw = wfGetDB( DB_MASTER );
- $rev = Revision::loadFromTimestamp( $dbw, $this->mTitle, $edittime );
- }
-
- if ( !$rev ) {
- wfDebug( "Article::replaceSection asked for bogus section (page: " .
- $this->getId() . "; section: $section; edittime: $edittime)\n" );
- wfProfileOut( __METHOD__ );
- return null;
- }
-
- $oldtext = $rev->getText();
-
- if ( $section == 'new' ) {
- # Inserting a new section
- $subject = $summary ? wfMsgForContent( 'newsectionheaderdefaultlevel', $summary ) . "\n\n" : '';
- $text = strlen( trim( $oldtext ) ) > 0
- ? "{$oldtext}\n\n{$subject}{$text}"
- : "{$subject}{$text}";
- } else {
- # Replacing an existing section; roll out the big guns
- global $wgParser;
-
- $text = $wgParser->replaceSection( $oldtext, $section, $text );
- }
- }
-
- wfProfileOut( __METHOD__ );
- return $text;
- }
-
- /**
- * This function is not deprecated until somebody fixes the core not to use
- * it. Nevertheless, use Article::doEdit() instead.
- */
- function insertNewArticle( $text, $summary, $isminor, $watchthis, $suppressRC = false, $comment = false, $bot = false ) {
- $flags = EDIT_NEW | EDIT_DEFER_UPDATES | EDIT_AUTOSUMMARY |
- ( $isminor ? EDIT_MINOR : 0 ) |
- ( $suppressRC ? EDIT_SUPPRESS_RC : 0 ) |
- ( $bot ? EDIT_FORCE_BOT : 0 );
-
- # If this is a comment, add the summary as headline
- if ( $comment && $summary != "" ) {
- $text = wfMsgForContent( 'newsectionheaderdefaultlevel', $summary ) . "\n\n" . $text;
- }
- $this->doEdit( $text, $summary, $flags );
-
- $dbw = wfGetDB( DB_MASTER );
- if ( $watchthis ) {
- if ( !$this->mTitle->userIsWatching() ) {
- $dbw->begin();
- $this->doWatch();
- $dbw->commit();
- }
- } else {
- if ( $this->mTitle->userIsWatching() ) {
- $dbw->begin();
- $this->doUnwatch();
- $dbw->commit();
- }
- }
- $this->doRedirect( $this->isRedirect( $text ) );
- }
-
- /**
- * @deprecated use Article::doEdit()
- */
- function updateArticle( $text, $summary, $minor, $watchthis, $forceBot = false, $sectionanchor = '' ) {
- $flags = EDIT_UPDATE | EDIT_DEFER_UPDATES | EDIT_AUTOSUMMARY |
- ( $minor ? EDIT_MINOR : 0 ) |
- ( $forceBot ? EDIT_FORCE_BOT : 0 );
-
- $status = $this->doEdit( $text, $summary, $flags );
-
- if ( !$status->isOK() ) {
- return false;
- }
-
- $dbw = wfGetDB( DB_MASTER );
- if ( $watchthis ) {
- if ( !$this->mTitle->userIsWatching() ) {
- $dbw->begin();
- $this->doWatch();
- $dbw->commit();
- }
- } else {
- if ( $this->mTitle->userIsWatching() ) {
- $dbw->begin();
- $this->doUnwatch();
- $dbw->commit();
- }
- }
-
- $extraQuery = ''; // Give extensions a chance to modify URL query on update
- wfRunHooks( 'ArticleUpdateBeforeRedirect', array( $this, &$sectionanchor, &$extraQuery ) );
-
- $this->doRedirect( $this->isRedirect( $text ), $sectionanchor, $extraQuery );
- return true;
- }
-
- /**
- * Check flags and add EDIT_NEW or EDIT_UPDATE to them as needed.
- * @param $flags Int
- * @return Int updated $flags
- */
- function checkFlags( $flags ) {
- if ( !( $flags & EDIT_NEW ) && !( $flags & EDIT_UPDATE ) ) {
- if ( $this->mTitle->getArticleID() ) {
- $flags |= EDIT_UPDATE;
- } else {
- $flags |= EDIT_NEW;
- }
- }
-
- return $flags;
- }
-
- /**
- * Article::doEdit()
- *
- * Change an existing article or create a new article. Updates RC and all necessary caches,
- * optionally via the deferred update array.
- *
- * $wgUser must be set before calling this function.
- *
- * @param $text String: new text
- * @param $summary String: edit summary
- * @param $flags Integer bitfield:
- * EDIT_NEW
- * Article is known or assumed to be non-existent, create a new one
- * EDIT_UPDATE
- * Article is known or assumed to be pre-existing, update it
- * EDIT_MINOR
- * Mark this edit minor, if the user is allowed to do so
- * EDIT_SUPPRESS_RC
- * Do not log the change in recentchanges
- * EDIT_FORCE_BOT
- * Mark the edit a "bot" edit regardless of user rights
- * EDIT_DEFER_UPDATES
- * Defer some of the updates until the end of index.php
- * EDIT_AUTOSUMMARY
- * Fill in blank summaries with generated text where possible
- *
- * If neither EDIT_NEW nor EDIT_UPDATE is specified, the status of the article will be detected.
- * If EDIT_UPDATE is specified and the article doesn't exist, the function will an
- * edit-gone-missing error. If EDIT_NEW is specified and the article does exist, an
- * edit-already-exists error will be returned. These two conditions are also possible with
- * auto-detection due to MediaWiki's performance-optimised locking strategy.
- *
- * @param $baseRevId the revision ID this edit was based off, if any
- * @param $user Optional user object, $wgUser will be used if not passed
- *
- * @return Status object. Possible errors:
- * edit-hook-aborted: The ArticleSave hook aborted the edit but didn't set the fatal flag of $status
- * edit-gone-missing: In update mode, but the article didn't exist
- * edit-conflict: In update mode, the article changed unexpectedly
- * edit-no-change: Warning that the text was the same as before
- * edit-already-exists: In creation mode, but the article already exists
- *
- * Extensions may define additional errors.
- *
- * $return->value will contain an associative array with members as follows:
- * new: Boolean indicating if the function attempted to create a new article
- * revision: The revision object for the inserted revision, or null
- *
- * Compatibility note: this function previously returned a boolean value indicating success/failure
- */
- public function doEdit( $text, $summary, $flags = 0, $baseRevId = false, $user = null ) {
- global $wgUser, $wgDBtransactions, $wgUseAutomaticEditSummaries;
-
- # Low-level sanity check
- if ( $this->mTitle->getText() === '' ) {
- throw new MWException( 'Something is trying to edit an article with an empty title' );
- }
-
- wfProfileIn( __METHOD__ );
-
- $user = is_null( $user ) ? $wgUser : $user;
- $status = Status::newGood( array() );
-
- # Load $this->mTitle->getArticleID() and $this->mLatest if it's not already
- $this->loadPageData();
-
- $flags = $this->checkFlags( $flags );
-
- if ( !wfRunHooks( 'ArticleSave', array( &$this, &$user, &$text, &$summary,
- $flags & EDIT_MINOR, null, null, &$flags, &$status ) ) )
- {
- wfDebug( __METHOD__ . ": ArticleSave hook aborted save!\n" );
-
- if ( $status->isOK() ) {
- $status->fatal( 'edit-hook-aborted' );
- }
-
- wfProfileOut( __METHOD__ );
- return $status;
- }
-
- # Silently ignore EDIT_MINOR if not allowed
- $isminor = ( $flags & EDIT_MINOR ) && $user->isAllowed( 'minoredit' );
- $bot = $flags & EDIT_FORCE_BOT;
-
- $oldtext = $this->getRawText(); // current revision
- $oldsize = strlen( $oldtext );
-
- # Provide autosummaries if one is not provided and autosummaries are enabled.
- if ( $wgUseAutomaticEditSummaries && $flags & EDIT_AUTOSUMMARY && $summary == '' ) {
- $summary = $this->getAutosummary( $oldtext, $text, $flags );
- }
-
- $editInfo = $this->prepareTextForEdit( $text );
- $text = $editInfo->pst;
- $newsize = strlen( $text );
-
- $dbw = wfGetDB( DB_MASTER );
- $now = wfTimestampNow();
- $this->mTimestamp = $now;
-
- if ( $flags & EDIT_UPDATE ) {
- # Update article, but only if changed.
- $status->value['new'] = false;
-
- # Make sure the revision is either completely inserted or not inserted at all
- if ( !$wgDBtransactions ) {
- $userAbort = ignore_user_abort( true );
- }
-
- $changed = ( strcmp( $text, $oldtext ) != 0 );
-
- if ( $changed ) {
- $this->mGoodAdjustment = (int)$this->isCountable( $text )
- - (int)$this->isCountable( $oldtext );
- $this->mTotalAdjustment = 0;
-
- if ( !$this->mLatest ) {
- # Article gone missing
- wfDebug( __METHOD__ . ": EDIT_UPDATE specified but article doesn't exist\n" );
- $status->fatal( 'edit-gone-missing' );
-
- wfProfileOut( __METHOD__ );
- return $status;
- }
-
- $revision = new Revision( array(
- 'page' => $this->getId(),
- 'comment' => $summary,
- 'minor_edit' => $isminor,
- 'text' => $text,
- 'parent_id' => $this->mLatest,
- 'user' => $user->getId(),
- 'user_text' => $user->getName(),
- ) );
-
- $dbw->begin();
- $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.
- $ok = $this->updateRevisionOn( $dbw, $revision, $this->mLatest );
-
- if ( !$ok ) {
- /* Belated edit conflict! Run away!! */
- $status->fatal( 'edit-conflict' );
-
- # Delete the invalid revision if the DB is not transactional
- if ( !$wgDBtransactions ) {
- $dbw->delete( 'revision', array( 'rev_id' => $revisionId ), __METHOD__ );
- }
-
- $revisionId = 0;
- $dbw->rollback();
- } else {
- global $wgUseRCPatrol;
- wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, $baseRevId, $user ) );
- # Update recentchanges
- if ( !( $flags & EDIT_SUPPRESS_RC ) ) {
- # Mark as patrolled if the user can do so
- $patrolled = $wgUseRCPatrol && $this->mTitle->userCan( 'autopatrol' );
- # Add RC row to the DB
- $rc = RecentChange::notifyEdit( $now, $this->mTitle, $isminor, $user, $summary,
- $this->mLatest, $this->getTimestamp(), $bot, '', $oldsize, $newsize,
- $revisionId, $patrolled
- );
-
- # Log auto-patrolled edits
- if ( $patrolled ) {
- PatrolLog::record( $rc, true );
- }
- }
- $user->incEditCount();
- $dbw->commit();
- }
- } else {
- $status->warning( 'edit-no-change' );
- $revision = null;
- // Keep the same revision ID, but do some updates on it
- $revisionId = $this->getRevIdFetched();
- // Update page_touched, this is usually implicit in the page update
- // Other cache updates are done in onArticleEdit()
- $this->mTitle->invalidateCache();
- }
-
- if ( !$wgDBtransactions ) {
- ignore_user_abort( $userAbort );
- }
-
- // Now that ignore_user_abort is restored, we can respond to fatal errors
- if ( !$status->isOK() ) {
- wfProfileOut( __METHOD__ );
- return $status;
- }
-
- # Invalidate cache of this article and all pages using this article
- # as a template. Partly deferred.
- Article::onArticleEdit( $this->mTitle );
- # Update links tables, site stats, etc.
- $this->editUpdates( $text, $summary, $isminor, $now, $revisionId, $changed );
- } else {
- # Create new article
- $status->value['new'] = true;
-
- # Set statistics members
- # We work out if it's countable after PST to avoid counter drift
- # when articles are created with {{subst:}}
- $this->mGoodAdjustment = (int)$this->isCountable( $text );
- $this->mTotalAdjustment = 1;
-
- $dbw->begin();
-
- # 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 ) {
- $dbw->rollback();
- $status->fatal( 'edit-already-exists' );
-
- wfProfileOut( __METHOD__ );
- return $status;
- }
-
- # Save the revision text...
- $revision = new Revision( array(
- 'page' => $newid,
- 'comment' => $summary,
- 'minor_edit' => $isminor,
- 'text' => $text,
- 'user' => $user->getId(),
- 'user_text' => $user->getName(),
- ) );
- $revisionId = $revision->insertOn( $dbw );
-
- $this->mTitle->resetArticleID( $newid );
-
- # Update the page record with revision data
- $this->updateRevisionOn( $dbw, $revision, 0 );
-
- wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, false, $user ) );
-
- # Update recentchanges
- if ( !( $flags & EDIT_SUPPRESS_RC ) ) {
- global $wgUseRCPatrol, $wgUseNPPatrol;
-
- # Mark as patrolled if the user can do so
- $patrolled = ( $wgUseRCPatrol || $wgUseNPPatrol ) && $this->mTitle->userCan( 'autopatrol' );
- # Add RC row to the DB
- $rc = RecentChange::notifyNew( $now, $this->mTitle, $isminor, $user, $summary, $bot,
- '', strlen( $text ), $revisionId, $patrolled );
-
- # Log auto-patrolled edits
- if ( $patrolled ) {
- PatrolLog::record( $rc, true );
- }
- }
- $user->incEditCount();
- $dbw->commit();
-
- # Update links, etc.
- $this->editUpdates( $text, $summary, $isminor, $now, $revisionId, true );
-
- # Clear caches
- Article::onArticleCreate( $this->mTitle );
-
- wfRunHooks( 'ArticleInsertComplete', array( &$this, &$user, $text, $summary,
- $flags & EDIT_MINOR, null, null, &$flags, $revision ) );
- }
-
- # Do updates right now unless deferral was requested
- if ( !( $flags & EDIT_DEFER_UPDATES ) ) {
- wfDoUpdates();
- }
-
- // Return the new revision (or null) to the caller
- $status->value['revision'] = $revision;
-
- wfRunHooks( 'ArticleSaveComplete', array( &$this, &$user, $text, $summary,
- $flags & EDIT_MINOR, null, null, &$flags, $revision, &$status, $baseRevId ) );
-
- wfProfileOut( __METHOD__ );
- return $status;
- }
-
- /**
- * @deprecated wrapper for doRedirect
- */
- public function showArticle( $text, $subtitle , $sectionanchor = '', $me2, $now, $summary, $oldid ) {
- wfDeprecated( __METHOD__ );
- $this->doRedirect( $this->isRedirect( $text ), $sectionanchor );
- }
-
- /**
- * Output a redirect back to the article.
- * This is typically used after an edit.
- *
- * @param $noRedir Boolean: add redirect=no
- * @param $sectionAnchor String: section to redirect to, including "#"
- * @param $extraQuery String: extra query params
- */
- public function doRedirect( $noRedir = false, $sectionAnchor = '', $extraQuery = '' ) {
- global $wgOut;
-
- if ( $noRedir ) {
- $query = 'redirect=no';
- if ( $extraQuery )
- $query .= "&$extraQuery";
- } else {
- $query = $extraQuery;
- }
-
- $wgOut->redirect( $this->mTitle->getFullURL( $query ) . $sectionAnchor );
+ return Action::factory( 'purge', $this )->show();
}
/**
* Mark this particular edit/page as patrolled
+ * @deprecated since 1.18
*/
public function markpatrolled() {
- global $wgOut, $wgUser, $wgRequest;
-
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
-
- # If we haven't been given an rc_id value, we can't do anything
- $rcid = (int) $wgRequest->getVal( 'rcid' );
-
- if ( !$wgUser->matchEditToken( $wgRequest->getVal( 'token' ), $rcid ) ) {
- $wgOut->showErrorPage( 'sessionfailure-title', 'sessionfailure' );
- return;
- }
-
- $rc = RecentChange::newFromId( $rcid );
-
- if ( is_null( $rc ) ) {
- $wgOut->showErrorPage( 'markedaspatrollederror', 'markedaspatrollederrortext' );
- return;
- }
-
- # It would be nice to see where the user had actually come from, but for now just guess
- $returnto = $rc->getAttribute( 'rc_type' ) == RC_NEW ? 'Newpages' : 'Recentchanges';
- $return = SpecialPage::getTitleFor( $returnto );
-
- $errors = $rc->doMarkPatrolled();
-
- if ( in_array( array( 'rcpatroldisabled' ), $errors ) ) {
- $wgOut->showErrorPage( 'rcpatroldisabled', 'rcpatroldisabledtext' );
-
- return;
- }
-
- if ( in_array( array( 'hookaborted' ), $errors ) ) {
- // The hook itself has handled any output
- return;
- }
-
- if ( in_array( array( 'markedaspatrollederror-noautopatrol' ), $errors ) ) {
- $wgOut->setPageTitle( wfMsg( 'markedaspatrollederror' ) );
- $wgOut->addWikiMsg( 'markedaspatrollederror-noautopatrol' );
- $wgOut->returnToMain( false, $return );
-
- return;
- }
-
- if ( !empty( $errors ) ) {
- $wgOut->showPermissionsErrorPage( $errors );
-
- return;
- }
-
- # Inform the user
- $wgOut->setPageTitle( wfMsg( 'markedaspatrolled' ) );
- $wgOut->addWikiMsg( 'markedaspatrolledtext', $rc->getTitle()->getPrefixedText() );
- $wgOut->returnToMain( false, $return );
+ Action::factory( 'markpatrolled', $this )->show();
}
/**
- * User-interface handler for the "watch" action
+ * User-interface handler for the "watch" action.
+ * Requires Request to pass a token as of 1.18.
+ * @deprecated since 1.18
*/
public function watch() {
- global $wgUser, $wgOut;
-
- if ( $wgUser->isAnon() ) {
- $wgOut->showErrorPage( 'watchnologin', 'watchnologintext' );
- return;
- }
-
- if ( wfReadOnly() ) {
- $wgOut->readOnlyPage();
- return;
- }
-
- if ( $this->doWatch() ) {
- $wgOut->setPagetitle( wfMsg( 'addedwatch' ) );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->addWikiMsg( 'addedwatchtext', $this->mTitle->getPrefixedText() );
- }
-
- $wgOut->returnToMain( true, $this->mTitle->getPrefixedText() );
+ Action::factory( 'watch', $this )->show();
}
/**
@@ -2429,64 +1188,30 @@ class Article {
* This is safe to be called multiple times
*
* @return bool true on successful watch operation
+ * @deprecated since 1.18
*/
public function doWatch() {
global $wgUser;
-
- if ( $wgUser->isAnon() ) {
- return false;
- }
-
- if ( wfRunHooks( 'WatchArticle', array( &$wgUser, &$this ) ) ) {
- $wgUser->addWatch( $this->mTitle );
- return wfRunHooks( 'WatchArticleComplete', array( &$wgUser, &$this ) );
- }
-
- return false;
+ return WatchAction::doWatch( $this->getTitle(), $wgUser );
}
/**
* User interface handler for the "unwatch" action.
+ * Requires Request to pass a token as of 1.18.
+ * @deprecated since 1.18
*/
public function unwatch() {
- global $wgUser, $wgOut;
-
- if ( $wgUser->isAnon() ) {
- $wgOut->showErrorPage( 'watchnologin', 'watchnologintext' );
- return;
- }
-
- if ( wfReadOnly() ) {
- $wgOut->readOnlyPage();
- return;
- }
-
- if ( $this->doUnwatch() ) {
- $wgOut->setPagetitle( wfMsg( 'removedwatch' ) );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->addWikiMsg( 'removedwatchtext', $this->mTitle->getPrefixedText() );
- }
-
- $wgOut->returnToMain( true, $this->mTitle->getPrefixedText() );
+ Action::factory( 'unwatch', $this )->show();
}
/**
* Stop watching a page
* @return bool true on successful unwatch
+ * @deprecated since 1.18
*/
public function doUnwatch() {
global $wgUser;
-
- if ( $wgUser->isAnon() ) {
- return false;
- }
-
- if ( wfRunHooks( 'UnwatchArticle', array( &$wgUser, &$this ) ) ) {
- $wgUser->removeWatch( $this->mTitle );
- return wfRunHooks( 'UnwatchArticleComplete', array( &$wgUser, &$this ) );
- }
-
- return false;
+ return WatchAction::doUnwatch( $this->getTitle(), $wgUser );
}
/**
@@ -2505,316 +1230,60 @@ class Article {
}
/**
- * Update the article's restriction field, and leave a log entry.
- *
- * @param $limit Array: set of restriction keys
- * @param $reason String
- * @param &$cascade Integer. Set to false if cascading protection isn't allowed.
- * @param $expiry Array: per restriction type expiration
- * @return bool true on success
+ * Info about this page
+ * Called for ?action=info when $wgAllowPageInfo is on.
*/
- public function updateRestrictions( $limit = array(), $reason = '', &$cascade = 0, $expiry = array() ) {
- global $wgUser, $wgContLang;
-
- $restrictionTypes = $this->mTitle->getRestrictionTypes();
-
- $id = $this->mTitle->getArticleID();
-
- if ( $id <= 0 ) {
- wfDebug( "updateRestrictions failed: article id $id <= 0\n" );
- return false;
- }
-
- if ( wfReadOnly() ) {
- wfDebug( "updateRestrictions failed: read-only\n" );
- return false;
- }
-
- if ( !$this->mTitle->userCan( 'protect' ) ) {
- wfDebug( "updateRestrictions failed: insufficient permissions\n" );
- return false;
- }
-
- if ( !$cascade ) {
- $cascade = false;
- }
-
- // Take this opportunity to purge out expired restrictions
- Title::purgeExpiredRestrictions();
-
- # FIXME: Same limitations as described in ProtectionForm.php (line 37);
- # we expect a single selection, but the schema allows otherwise.
- $current = array();
- $updated = Article::flattenRestrictions( $limit );
- $changed = false;
-
- foreach ( $restrictionTypes as $action ) {
- if ( isset( $expiry[$action] ) ) {
- # Get current restrictions on $action
- $aLimits = $this->mTitle->getRestrictions( $action );
- $current[$action] = implode( '', $aLimits );
- # Are any actual restrictions being dealt with here?
- $aRChanged = count( $aLimits ) || !empty( $limit[$action] );
-
- # If something changed, we need to log it. Checking $aRChanged
- # assures that "unprotecting" a page that is not protected does
- # not log just because the expiry was "changed".
- if ( $aRChanged && $this->mTitle->mRestrictionsExpiry[$action] != $expiry[$action] ) {
- $changed = true;
- }
- }
- }
-
- $current = Article::flattenRestrictions( $current );
-
- $changed = ( $changed || $current != $updated );
- $changed = $changed || ( $updated && $this->mTitle->areRestrictionsCascading() != $cascade );
- $protect = ( $updated != '' );
-
- # If nothing's changed, do nothing
- if ( $changed ) {
- if ( wfRunHooks( 'ArticleProtect', array( &$this, &$wgUser, $limit, $reason ) ) ) {
- $dbw = wfGetDB( DB_MASTER );
-
- # Prepare a null revision to be added to the history
- $modified = $current != '' && $protect;
-
- if ( $protect ) {
- $comment_type = $modified ? 'modifiedarticleprotection' : 'protectedarticle';
- } else {
- $comment_type = 'unprotectedarticle';
- }
-
- $comment = $wgContLang->ucfirst( wfMsgForContent( $comment_type, $this->mTitle->getPrefixedText() ) );
-
- # 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
- if ( !in_array( 'protect', $editrestriction ) && !in_array( 'sysop', $editrestriction ) ) {
- $cascade = false;
- }
-
- $cascade_description = '';
-
- if ( $cascade ) {
- $cascade_description = ' [' . wfMsgForContent( 'protect-summary-cascade' ) . ']';
- }
-
- if ( $reason ) {
- $comment .= ": $reason";
- }
-
- $editComment = $comment;
- $encodedExpiry = array();
- $protect_description = '';
- foreach ( $limit as $action => $restrictions ) {
- if ( !isset( $expiry[$action] ) )
- $expiry[$action] = Block::infinity();
-
- $encodedExpiry[$action] = Block::encodeExpiry( $expiry[$action], $dbw );
- if ( $restrictions != '' ) {
- $protect_description .= "[$action=$restrictions] (";
- if ( $encodedExpiry[$action] != 'infinity' ) {
- $protect_description .= wfMsgForContent( 'protect-expiring',
- $wgContLang->timeanddate( $expiry[$action], false, false ) ,
- $wgContLang->date( $expiry[$action], false, false ) ,
- $wgContLang->time( $expiry[$action], false, false ) );
- } else {
- $protect_description .= wfMsgForContent( 'protect-expiry-indefinite' );
- }
-
- $protect_description .= ') ';
- }
- }
- $protect_description = trim( $protect_description );
-
- if ( $protect_description && $protect ) {
- $editComment .= " ($protect_description)";
- }
-
- if ( $cascade ) {
- $editComment .= "$cascade_description";
- }
-
- # Update restrictions table
- foreach ( $limit as $action => $restrictions ) {
- if ( $restrictions != '' ) {
- $dbw->replace( 'page_restrictions', array( array( 'pr_page', 'pr_type' ) ),
- array( 'pr_page' => $id,
- 'pr_type' => $action,
- 'pr_level' => $restrictions,
- 'pr_cascade' => ( $cascade && $action == 'edit' ) ? 1 : 0,
- 'pr_expiry' => $encodedExpiry[$action]
- ),
- __METHOD__
- );
- } else {
- $dbw->delete( 'page_restrictions', array( 'pr_page' => $id,
- 'pr_type' => $action ), __METHOD__ );
- }
- }
-
- # Insert a null revision
- $nullRevision = Revision::newNullRevision( $dbw, $id, $editComment, true );
- $nullRevId = $nullRevision->insertOn( $dbw );
-
- $latest = $this->getLatest();
- # Update page record
- $dbw->update( 'page',
- array( /* SET */
- 'page_touched' => $dbw->timestamp(),
- 'page_restrictions' => '',
- 'page_latest' => $nullRevId
- ), array( /* WHERE */
- 'page_id' => $id
- ), 'Article::protect'
- );
-
- wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $nullRevision, $latest, $wgUser ) );
- wfRunHooks( 'ArticleProtectComplete', array( &$this, &$wgUser, $limit, $reason ) );
-
- # Update the protection log
- $log = new LogPage( 'protect' );
- if ( $protect ) {
- $params = array( $protect_description, $cascade ? 'cascade' : '' );
- $log->addEntry( $modified ? 'modify' : 'protect', $this->mTitle, trim( $reason ), $params );
- } else {
- $log->addEntry( 'unprotect', $this->mTitle, $reason );
- }
- } # End hook
- } # End "changed" check
-
- return true;
+ public function info() {
+ Action::factory( 'info', $this )->show();
}
/**
- * Take an array of page restrictions and flatten it to a string
- * suitable for insertion into the page_restrictions field.
- * @param $limit Array
- * @return String
+ * Overriden by ImagePage class, only present here to avoid a fatal error
+ * Called for ?action=revert
*/
- protected static function flattenRestrictions( $limit ) {
- if ( !is_array( $limit ) ) {
- throw new MWException( 'Article::flattenRestrictions given non-array restriction set' );
- }
-
- $bits = array();
- ksort( $limit );
-
- foreach ( $limit as $action => $restrictions ) {
- if ( $restrictions != '' ) {
- $bits[] = "$action=$restrictions";
- }
- }
+ public function revert() {
+ Action::factory( 'revert', $this )->show();
+ }
- return implode( ':', $bits );
+ /**
+ * User interface for rollback operations
+ */
+ public function rollback() {
+ Action::factory( 'rollback', $this )->show();
}
/**
- * Auto-generates a deletion reason
+ * Output a redirect back to the article.
+ * This is typically used after an edit.
*
- * @param &$hasHistory Boolean: whether the page has a history
- * @return mixed String containing deletion reason or empty string, or boolean false
- * if no revision occurred
+ * @deprecated in 1.18; call $wgOut->redirect() directly
+ * @param $noRedir Boolean: add redirect=no
+ * @param $sectionAnchor String: section to redirect to, including "#"
+ * @param $extraQuery String: extra query params
*/
- public function generateReason( &$hasHistory ) {
- global $wgContLang;
-
- $dbw = wfGetDB( DB_MASTER );
- // Get the last revision
- $rev = Revision::newFromTitle( $this->mTitle );
-
- if ( is_null( $rev ) ) {
- return false;
- }
-
- // Get the article's contents
- $contents = $rev->getText();
- $blank = false;
-
- // If the page is blank, use the text from the previous revision,
- // which can only be blank if there's a move/import/protect dummy revision involved
- if ( $contents == '' ) {
- $prev = $rev->getPrevious();
-
- if ( $prev ) {
- $contents = $prev->getText();
- $blank = true;
- }
- }
-
- // Find out if there was only one contributor
- // Only scan the last 20 revisions
- $res = $dbw->select( 'revision', 'rev_user_text',
- array( 'rev_page' => $this->getID(), $dbw->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' ),
- __METHOD__,
- array( 'LIMIT' => 20 )
- );
-
- if ( $res === false ) {
- // This page has no revisions, which is very weird
- return false;
- }
-
- $hasHistory = ( $res->numRows() > 1 );
- $row = $dbw->fetchObject( $res );
-
- if ( $row ) { // $row is false if the only contributor is hidden
- $onlyAuthor = $row->rev_user_text;
- // Try to find a second contributor
- foreach ( $res as $row ) {
- if ( $row->rev_user_text != $onlyAuthor ) { // Bug 22999
- $onlyAuthor = false;
- break;
- }
- }
- } else {
- $onlyAuthor = false;
- }
+ public function doRedirect( $noRedir = false, $sectionAnchor = '', $extraQuery = '' ) {
+ wfDeprecated( __METHOD__ );
+ global $wgOut;
- // Generate the summary with a '$1' placeholder
- if ( $blank ) {
- // The current revision is blank and the one before is also
- // blank. It's just not our lucky day
- $reason = wfMsgForContent( 'exbeforeblank', '$1' );
+ if ( $noRedir ) {
+ $query = 'redirect=no';
+ if ( $extraQuery )
+ $query .= "&$extraQuery";
} else {
- if ( $onlyAuthor ) {
- $reason = wfMsgForContent( 'excontentauthor', '$1', $onlyAuthor );
- } else {
- $reason = wfMsgForContent( 'excontent', '$1' );
- }
- }
-
- if ( $reason == '-' ) {
- // Allow these UI messages to be blanked out cleanly
- return '';
+ $query = $extraQuery;
}
- // Replace newlines with spaces to prevent uglyness
- $contents = preg_replace( "/[\n\r]/", ' ', $contents );
- // Calculate the maximum amount of chars to get
- // Max content length = max comment length - length of the comment (excl. $1) - '...'
- $maxLength = 255 - ( strlen( $reason ) - 2 ) - 3;
- $contents = $wgContLang->truncate( $contents, $maxLength );
- // Remove possible unfinished links
- $contents = preg_replace( '/\[\[([^\]]*)\]?$/', '$1', $contents );
- // Now replace the '$1' placeholder
- $reason = str_replace( '$1', $contents, $reason );
-
- return $reason;
+ $wgOut->redirect( $this->getTitle()->getFullURL( $query ) . $sectionAnchor );
}
-
- /*
+ /**
* UI entry point for page deletion
*/
public function delete() {
- global $wgUser, $wgOut, $wgRequest;
+ global $wgOut, $wgRequest;
$confirm = $wgRequest->wasPosted() &&
- $wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) );
+ $this->getContext()->getUser()->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) );
$this->DeleteReasonList = $wgRequest->getText( 'wpDeleteReasonList', 'other' );
$this->DeleteReason = $wgRequest->getText( 'wpReason' );
@@ -2829,7 +1298,7 @@ class Article {
}
# Flag to hide all contents of the archived revisions
- $suppress = $wgRequest->getVal( 'wpSuppress' ) && $wgUser->isAllowed( 'suppressrevision' );
+ $suppress = $wgRequest->getVal( 'wpSuppress' ) && $this->getContext()->getUser()->isAllowed( 'suppressrevision' );
# This code desperately needs to be totally rewritten
@@ -2841,7 +1310,7 @@ class Article {
}
# Check permissions
- $permission_errors = $this->mTitle->getUserPermissionsErrors( 'delete', $wgUser );
+ $permission_errors = $this->getTitle()->getUserPermissionsErrors( 'delete', $this->getContext()->getUser() );
if ( count( $permission_errors ) > 0 ) {
$wgOut->showPermissionsErrorPage( $permission_errors );
@@ -2849,33 +1318,34 @@ class Article {
return;
}
- $wgOut->setPagetitle( wfMsg( 'delete-confirm', $this->mTitle->getPrefixedText() ) );
+ $wgOut->setPagetitle( wfMsg( 'delete-confirm', $this->getTitle()->getPrefixedText() ) );
# Better double-check that it hasn't been deleted yet!
$dbw = wfGetDB( DB_MASTER );
- $conds = $this->mTitle->pageCond();
+ $conds = $this->getTitle()->pageCond();
$latest = $dbw->selectField( 'page', 'page_latest', $conds, __METHOD__ );
if ( $latest === false ) {
$wgOut->showFatalError(
Html::rawElement(
'div',
array( 'class' => 'error mw-error-cannotdelete' ),
- wfMsgExt( 'cannotdelete', array( 'parse' ), $this->mTitle->getPrefixedText() )
+ wfMsgExt( 'cannotdelete', array( 'parse' ),
+ wfEscapeWikiText( $this->getTitle()->getPrefixedText() ) )
)
);
$wgOut->addHTML( Xml::element( 'h2', null, LogPage::logName( 'delete' ) ) );
LogEventsList::showLogExtract(
$wgOut,
'delete',
- $this->mTitle->getPrefixedText()
+ $this->getTitle()->getPrefixedText()
);
return;
}
# Hack for big sites
- $bigHistory = $this->isBigDeletion();
- if ( $bigHistory && !$this->mTitle->userCan( 'bigdelete' ) ) {
+ $bigHistory = $this->mPage->isBigDeletion();
+ if ( $bigHistory && !$this->getTitle()->userCan( 'bigdelete' ) ) {
global $wgLang, $wgDeleteRevisionsLimit;
$wgOut->wrapWikiMsg( "<div class='error'>\n$1\n</div>\n",
@@ -2887,9 +1357,9 @@ class Article {
if ( $confirm ) {
$this->doDelete( $reason, $suppress );
- if ( $wgRequest->getCheck( 'wpWatch' ) && $wgUser->isLoggedIn() ) {
+ if ( $wgRequest->getCheck( 'wpWatch' ) && $this->getContext()->getUser()->isLoggedIn() ) {
$this->doWatch();
- } elseif ( $this->mTitle->userIsWatching() ) {
+ } elseif ( $this->getTitle()->userIsWatching() ) {
$this->doUnwatch();
}
@@ -2906,12 +1376,14 @@ class Article {
if ( $hasHistory && !$confirm ) {
global $wgLang;
- $skin = $wgUser->getSkin();
- $revisions = $this->estimateRevisionCount();
- //FIXME: lego
+ $revisions = $this->mPage->estimateRevisionCount();
+ // @todo FIXME: i18n issue/patchwork message
$wgOut->addHTML( '<strong class="mw-delete-warning-revisions">' .
wfMsgExt( 'historywarning', array( 'parseinline' ), $wgLang->formatNum( $revisions ) ) .
- wfMsgHtml( 'word-separator' ) . $skin->historyLink() .
+ wfMsgHtml( 'word-separator' ) . Linker::link( $this->getTitle(),
+ wfMsgHtml( 'history' ),
+ array( 'rel' => 'archives' ),
+ array( 'action' => 'history' ) ) .
'</strong>'
);
@@ -2926,103 +1398,24 @@ class Article {
}
/**
- * @return bool whether or not the page surpasses $wgDeleteRevisionsLimit revisions
- */
- public function isBigDeletion() {
- global $wgDeleteRevisionsLimit;
-
- if ( $wgDeleteRevisionsLimit ) {
- $revCount = $this->estimateRevisionCount();
-
- return $revCount > $wgDeleteRevisionsLimit;
- }
-
- return false;
- }
-
- /**
- * @return int approximate revision count
- */
- public function estimateRevisionCount() {
- $dbr = wfGetDB( DB_SLAVE );
-
- // For an exact count...
- // return $dbr->selectField( 'revision', 'COUNT(*)',
- // array( 'rev_page' => $this->getId() ), __METHOD__ );
- return $dbr->estimateRowCount( 'revision', '*',
- array( 'rev_page' => $this->getId() ), __METHOD__ );
- }
-
- /**
- * Get the last N authors
- * @param $num Integer: number of revisions to get
- * @param $revLatest String: the latest rev_id, selected from the master (optional)
- * @return array Array of authors, duplicates not removed
- */
- public function getLastNAuthors( $num, $revLatest = 0 ) {
- wfProfileIn( __METHOD__ );
- // First try the slave
- // If that doesn't have the latest revision, try the master
- $continue = 2;
- $db = wfGetDB( DB_SLAVE );
-
- do {
- $res = $db->select( array( 'page', 'revision' ),
- array( 'rev_id', 'rev_user_text' ),
- array(
- 'page_namespace' => $this->mTitle->getNamespace(),
- 'page_title' => $this->mTitle->getDBkey(),
- 'rev_page = page_id'
- ), __METHOD__, $this->getSelectOptions( array(
- 'ORDER BY' => 'rev_timestamp DESC',
- 'LIMIT' => $num
- ) )
- );
-
- if ( !$res ) {
- wfProfileOut( __METHOD__ );
- return array();
- }
-
- $row = $db->fetchObject( $res );
-
- if ( $continue == 2 && $revLatest && $row->rev_id != $revLatest ) {
- $db = wfGetDB( DB_MASTER );
- $continue--;
- } else {
- $continue = 0;
- }
- } while ( $continue );
-
- $authors = array( $row->rev_user_text );
-
- foreach ( $res as $row ) {
- $authors[] = $row->rev_user_text;
- }
-
- wfProfileOut( __METHOD__ );
- return $authors;
- }
-
- /**
* Output deletion confirmation dialog
- * FIXME: Move to another file?
+ * @todo FIXME: Move to another file?
* @param $reason String: prefilled reason
*/
public function confirmDelete( $reason ) {
- global $wgOut, $wgUser;
+ global $wgOut;
wfDebug( "Article::confirmDelete\n" );
- $deleteBackLink = $wgUser->getSkin()->linkKnown( $this->mTitle );
+ $deleteBackLink = Linker::linkKnown( $this->getTitle() );
$wgOut->setSubtitle( wfMsgHtml( 'delete-backlink', $deleteBackLink ) );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
$wgOut->addWikiMsg( 'confirmdeletetext' );
wfRunHooks( 'ArticleConfirmDelete', array( $this, $wgOut, &$reason ) );
- if ( $wgUser->isAllowed( 'suppressrevision' ) ) {
- $suppress = "<tr id=\"wpDeleteSuppressRow\" name=\"wpDeleteSuppressRow\">
+ if ( $this->getContext()->getUser()->isAllowed( 'suppressrevision' ) ) {
+ $suppress = "<tr id=\"wpDeleteSuppressRow\">
<td></td>
<td class='mw-input'><strong>" .
Xml::checkLabel( wfMsg( 'revdelete-suppress' ),
@@ -3032,10 +1425,10 @@ class Article {
} else {
$suppress = '';
}
- $checkWatch = $wgUser->getBoolOption( 'watchdeletion' ) || $this->mTitle->userIsWatching();
+ $checkWatch = $this->getContext()->getUser()->getBoolOption( 'watchdeletion' ) || $this->getTitle()->userIsWatching();
$form = Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $this->mTitle->getLocalURL( 'action=delete' ), 'id' => 'deleteconfirm' ) ) .
+ 'action' => $this->getTitle()->getLocalURL( 'action=delete' ), 'id' => 'deleteconfirm' ) ) .
Xml::openElement( 'fieldset', array( 'id' => 'mw-delete-table' ) ) .
Xml::tags( 'legend', null, wfMsgExt( 'delete-legend', array( 'parsemag', 'escapenoentities' ) ) ) .
Xml::openElement( 'table', array( 'id' => 'mw-deleteconfirm-table' ) ) .
@@ -3065,7 +1458,7 @@ class Article {
</tr>";
# Disallow watching if user is not logged in
- if ( $wgUser->isLoggedIn() ) {
+ if ( $this->getContext()->getUser()->isLoggedIn() ) {
$form .= "
<tr>
<td></td>
@@ -3087,13 +1480,12 @@ class Article {
</tr>" .
Xml::closeElement( 'table' ) .
Xml::closeElement( 'fieldset' ) .
- Html::hidden( 'wpEditToken', $wgUser->editToken() ) .
+ Html::hidden( 'wpEditToken', $this->getContext()->getUser()->editToken() ) .
Xml::closeElement( 'form' );
- if ( $wgUser->isAllowed( 'editinterface' ) ) {
- $skin = $wgUser->getSkin();
+ if ( $this->getContext()->getUser()->isAllowed( 'editinterface' ) ) {
$title = Title::makeTitle( NS_MEDIAWIKI, 'Deletereason-dropdown' );
- $link = $skin->link(
+ $link = Linker::link(
$title,
wfMsgHtml( 'delete-edit-reasonlist' ),
array(),
@@ -3105,7 +1497,7 @@ class Article {
$wgOut->addHTML( $form );
$wgOut->addHTML( Xml::element( 'h2', null, LogPage::logName( 'delete' ) ) );
LogEventsList::showLogExtract( $wgOut, 'delete',
- $this->mTitle->getPrefixedText()
+ $this->getTitle()->getPrefixedText()
);
}
@@ -3113,31 +1505,29 @@ class Article {
* Perform a deletion and output success or failure messages
*/
public function doDelete( $reason, $suppress = false ) {
- global $wgOut, $wgUser;
+ global $wgOut;
- $id = $this->mTitle->getArticleID( Title::GAID_FOR_UPDATE );
+ $id = $this->getTitle()->getArticleID( Title::GAID_FOR_UPDATE );
$error = '';
- if ( wfRunHooks( 'ArticleDelete', array( &$this, &$wgUser, &$reason, &$error ) ) ) {
- if ( $this->doDeleteArticle( $reason, $suppress, $id ) ) {
- $deleted = $this->mTitle->getPrefixedText();
+ if ( $this->mPage->doDeleteArticle( $reason, $suppress, $id, $error ) ) {
+ $deleted = $this->getTitle()->getPrefixedText();
- $wgOut->setPagetitle( wfMsg( 'actioncomplete' ) );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
+ $wgOut->setPagetitle( wfMsg( 'actioncomplete' ) );
+ $wgOut->setRobotPolicy( 'noindex,nofollow' );
- $loglink = '[[Special:Log/delete|' . wfMsgNoTrans( 'deletionlog' ) . ']]';
+ $loglink = '[[Special:Log/delete|' . wfMsgNoTrans( 'deletionlog' ) . ']]';
- $wgOut->addWikiMsg( 'deletedtext', $deleted, $loglink );
- $wgOut->returnToMain( false );
- wfRunHooks( 'ArticleDeleteComplete', array( &$this, &$wgUser, $reason, $id ) );
- }
+ $wgOut->addWikiMsg( 'deletedtext', wfEscapeWikiText( $deleted ), $loglink );
+ $wgOut->returnToMain( false );
} else {
if ( $error == '' ) {
$wgOut->showFatalError(
Html::rawElement(
'div',
array( 'class' => 'error mw-error-cannotdelete' ),
- wfMsgExt( 'cannotdelete', array( 'parse' ), $this->mTitle->getPrefixedText() )
+ wfMsgExt( 'cannotdelete', array( 'parse' ),
+ wfEscapeWikiText( $this->getTitle()->getPrefixedText() ) )
)
);
@@ -3146,7 +1536,7 @@ class Article {
LogEventsList::showLogExtract(
$wgOut,
'delete',
- $this->mTitle->getPrefixedText()
+ $this->getTitle()->getPrefixedText()
);
} else {
$wgOut->showFatalError( $error );
@@ -3155,574 +1545,6 @@ class Article {
}
/**
- * Back-end article deletion
- * Deletes the article with database consistency, writes logs, purges caches
- *
- * @param $reason string delete reason for deletion log
- * @param suppress bitfield
- * Revision::DELETED_TEXT
- * Revision::DELETED_COMMENT
- * Revision::DELETED_USER
- * Revision::DELETED_RESTRICTED
- * @param $id int article ID
- * @param $commit boolean defaults to true, triggers transaction end
- * @return boolean true if successful
- */
- public function doDeleteArticle( $reason, $suppress = false, $id = 0, $commit = true ) {
- global $wgDeferredUpdateList, $wgUseTrackbacks;
-
- wfDebug( __METHOD__ . "\n" );
-
- $dbw = wfGetDB( DB_MASTER );
- $t = $this->mTitle->getDBkey();
- $id = $id ? $id : $this->mTitle->getArticleID( Title::GAID_FOR_UPDATE );
-
- if ( $t === '' || $id == 0 ) {
- return false;
- }
-
- $u = new SiteStatsUpdate( 0, 1, - (int)$this->isCountable( $this->getRawText() ), -1 );
- array_push( $wgDeferredUpdateList, $u );
-
- // Bitfields to further suppress the content
- if ( $suppress ) {
- $bitfield = 0;
- // This should be 15...
- $bitfield |= Revision::DELETED_TEXT;
- $bitfield |= Revision::DELETED_COMMENT;
- $bitfield |= Revision::DELETED_USER;
- $bitfield |= Revision::DELETED_RESTRICTED;
- } else {
- $bitfield = 'rev_deleted';
- }
-
- $dbw->begin();
- // For now, shunt the revision data into the archive table.
- // Text is *not* removed from the text table; bulk storage
- // is left intact to avoid breaking block-compression or
- // immutable storage schemes.
- //
- // For backwards compatibility, note that some older archive
- // table entries will have ar_text and ar_flags fields still.
- //
- // In the future, we may keep revisions and mark them with
- // the rev_deleted field, which is reserved for this purpose.
- $dbw->insertSelect( 'archive', array( 'page', 'revision' ),
- array(
- 'ar_namespace' => 'page_namespace',
- 'ar_title' => 'page_title',
- 'ar_comment' => 'rev_comment',
- 'ar_user' => 'rev_user',
- 'ar_user_text' => 'rev_user_text',
- 'ar_timestamp' => 'rev_timestamp',
- 'ar_minor_edit' => 'rev_minor_edit',
- 'ar_rev_id' => 'rev_id',
- 'ar_text_id' => 'rev_text_id',
- 'ar_text' => '\'\'', // Be explicit to appease
- 'ar_flags' => '\'\'', // MySQL's "strict mode"...
- 'ar_len' => 'rev_len',
- 'ar_page_id' => 'page_id',
- 'ar_deleted' => $bitfield
- ), array(
- 'page_id' => $id,
- 'page_id = rev_page'
- ), __METHOD__
- );
-
- # Delete restrictions for it
- $dbw->delete( 'page_restrictions', array ( 'pr_page' => $id ), __METHOD__ );
-
- # 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
-
- if ( !$ok ) {
- $dbw->rollback();
- return false;
- }
-
- # Fix category table counts
- $cats = array();
- $res = $dbw->select( 'categorylinks', 'cl_to', array( 'cl_from' => $id ), __METHOD__ );
-
- foreach ( $res as $row ) {
- $cats [] = $row->cl_to;
- }
-
- $this->updateCategoryCounts( array(), $cats );
-
- # If using cascading deletes, we can skip some explicit deletes
- if ( !$dbw->cascadingDeletes() ) {
- $dbw->delete( 'revision', array( 'rev_page' => $id ), __METHOD__ );
-
- if ( $wgUseTrackbacks )
- $dbw->delete( 'trackbacks', array( 'tb_page' => $id ), __METHOD__ );
-
- # Delete outgoing links
- $dbw->delete( 'pagelinks', array( 'pl_from' => $id ) );
- $dbw->delete( 'imagelinks', array( 'il_from' => $id ) );
- $dbw->delete( 'categorylinks', array( 'cl_from' => $id ) );
- $dbw->delete( 'templatelinks', array( 'tl_from' => $id ) );
- $dbw->delete( 'externallinks', array( 'el_from' => $id ) );
- $dbw->delete( 'langlinks', array( 'll_from' => $id ) );
- $dbw->delete( 'iwlinks', array( 'iwl_from' => $id ) );
- $dbw->delete( 'redirect', array( 'rd_from' => $id ) );
- }
-
- # If using cleanup triggers, we can skip some manual deletes
- if ( !$dbw->cleanupTriggers() ) {
- # Clean up recentchanges entries...
- $dbw->delete( 'recentchanges',
- array( 'rc_type != ' . RC_LOG,
- 'rc_namespace' => $this->mTitle->getNamespace(),
- 'rc_title' => $this->mTitle->getDBkey() ),
- __METHOD__ );
- $dbw->delete( 'recentchanges',
- array( 'rc_type != ' . RC_LOG, 'rc_cur_id' => $id ),
- __METHOD__ );
- }
-
- # Clear caches
- Article::onArticleDelete( $this->mTitle );
-
- # Clear the cached article id so the interface doesn't act like we exist
- $this->mTitle->resetArticleID( 0 );
-
- # Log the deletion, if the page was suppressed, log it at Oversight instead
- $logtype = $suppress ? 'suppress' : 'delete';
- $log = new LogPage( $logtype );
-
- # Make sure logging got through
- $log->addEntry( 'delete', $this->mTitle, $reason, array() );
-
- if ( $commit ) {
- $dbw->commit();
- }
-
- return true;
- }
-
- /**
- * Roll back the most recent consecutive set of edits to a page
- * from the same user; fails if there are no eligible edits to
- * roll back to, e.g. user is the sole contributor. This function
- * performs permissions checks on $wgUser, then calls commitRollback()
- * to do the dirty work
- *
- * @param $fromP String: Name of the user whose edits to rollback.
- * @param $summary String: Custom summary. Set to default summary if empty.
- * @param $token String: Rollback token.
- * @param $bot Boolean: If true, mark all reverted edits as bot.
- *
- * @param $resultDetails Array: contains result-specific array of additional values
- * 'alreadyrolled' : 'current' (rev)
- * success : 'summary' (str), 'current' (rev), 'target' (rev)
- *
- * @return array of errors, each error formatted as
- * array(messagekey, param1, param2, ...).
- * On success, the array is empty. This array can also be passed to
- * OutputPage::showPermissionsErrorPage().
- */
- public function doRollback( $fromP, $summary, $token, $bot, &$resultDetails ) {
- global $wgUser;
-
- $resultDetails = null;
-
- # Check permissions
- $editErrors = $this->mTitle->getUserPermissionsErrors( 'edit', $wgUser );
- $rollbackErrors = $this->mTitle->getUserPermissionsErrors( 'rollback', $wgUser );
- $errors = array_merge( $editErrors, wfArrayDiff2( $rollbackErrors, $editErrors ) );
-
- if ( !$wgUser->matchEditToken( $token, array( $this->mTitle->getPrefixedText(), $fromP ) ) ) {
- $errors[] = array( 'sessionfailure' );
- }
-
- if ( $wgUser->pingLimiter( 'rollback' ) || $wgUser->pingLimiter() ) {
- $errors[] = array( 'actionthrottledtext' );
- }
-
- # If there were errors, bail out now
- if ( !empty( $errors ) ) {
- return $errors;
- }
-
- return $this->commitRollback( $fromP, $summary, $bot, $resultDetails );
- }
-
- /**
- * Backend implementation of doRollback(), please refer there for parameter
- * and return value documentation
- *
- * NOTE: This function does NOT check ANY permissions, it just commits the
- * rollback to the DB Therefore, you should only call this function direct-
- * ly if you want to use custom permissions checks. If you don't, use
- * doRollback() instead.
- */
- public function commitRollback( $fromP, $summary, $bot, &$resultDetails ) {
- global $wgUseRCPatrol, $wgUser, $wgLang;
-
- $dbw = wfGetDB( DB_MASTER );
-
- if ( wfReadOnly() ) {
- return array( array( 'readonlytext' ) );
- }
-
- # Get the last editor
- $current = Revision::newFromTitle( $this->mTitle );
- if ( is_null( $current ) ) {
- # 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.
- if ( $from != $current->getUserText() ) {
- $resultDetails = array( 'current' => $current );
- return array( array( 'alreadyrolled',
- htmlspecialchars( $this->mTitle->getPrefixedText() ),
- htmlspecialchars( $fromP ),
- htmlspecialchars( $current->getUserText() )
- ) );
- }
-
- # 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',
- array( 'rev_id', 'rev_timestamp', 'rev_deleted' ),
- array( 'rev_page' => $current->getPage(),
- "rev_user != {$user} OR rev_user_text != {$user_text}"
- ), __METHOD__,
- array( 'USE INDEX' => 'page_timestamp',
- 'ORDER BY' => 'rev_timestamp DESC' )
- );
- if ( $s === false ) {
- # No one else ever edited this page
- return array( array( 'cantrollback' ) );
- } else if ( $s->rev_deleted & Revision::DELETED_TEXT || $s->rev_deleted & Revision::DELETED_USER ) {
- # Only admins can see this text
- return array( array( 'notvisiblerev' ) );
- }
-
- $set = array();
- if ( $bot && $wgUser->isAllowed( 'markbotedits' ) ) {
- # Mark all reverted edits as bot
- $set['rc_bot'] = 1;
- }
-
- if ( $wgUseRCPatrol ) {
- # Mark all reverted edits as patrolled
- $set['rc_patrolled'] = 1;
- }
-
- if ( count( $set ) ) {
- $dbw->update( 'recentchanges', $set,
- array( /* WHERE */
- 'rc_cur_id' => $current->getPage(),
- 'rc_user_text' => $current->getUserText(),
- "rc_timestamp > '{$s->rev_timestamp}'",
- ), __METHOD__
- );
- }
-
- # Generate the edit summary if necessary
- $target = Revision::newFromId( $s->rev_id );
- if ( empty( $summary ) ) {
- if ( $from == '' ) { // no public user name
- $summary = wfMsgForContent( 'revertpage-nouser' );
- } else {
- $summary = wfMsgForContent( 'revertpage' );
- }
- }
-
- # Allow the custom summary to use the same args as the default message
- $args = array(
- $target->getUserText(), $from, $s->rev_id,
- $wgLang->timeanddate( wfTimestamp( TS_MW, $s->rev_timestamp ), true ),
- $current->getId(), $wgLang->timeanddate( $current->getTimestamp() )
- );
- $summary = wfMsgReplaceArgs( $summary, $args );
-
- # Save
- $flags = EDIT_UPDATE;
-
- if ( $wgUser->isAllowed( 'minoredit' ) ) {
- $flags |= EDIT_MINOR;
- }
-
- if ( $bot && ( $wgUser->isAllowed( 'markbotedits' ) || $wgUser->isAllowed( 'bot' ) ) ) {
- $flags |= EDIT_FORCE_BOT;
- }
-
- # Actually store the edit
- $status = $this->doEdit( $target->getText(), $summary, $flags, $target->getId() );
- if ( !empty( $status->value['revision'] ) ) {
- $revId = $status->value['revision']->getId();
- } else {
- $revId = false;
- }
-
- wfRunHooks( 'ArticleRollbackComplete', array( $this, $wgUser, $target, $current ) );
-
- $resultDetails = array(
- 'summary' => $summary,
- 'current' => $current,
- 'target' => $target,
- 'newid' => $revId
- );
-
- return array();
- }
-
- /**
- * User interface for rollback operations
- */
- public function rollback() {
- global $wgUser, $wgOut, $wgRequest;
-
- $details = null;
-
- $result = $this->doRollback(
- $wgRequest->getVal( 'from' ),
- $wgRequest->getText( 'summary' ),
- $wgRequest->getVal( 'token' ),
- $wgRequest->getBool( 'bot' ),
- $details
- );
-
- if ( in_array( array( 'actionthrottledtext' ), $result ) ) {
- $wgOut->rateLimited();
- return;
- }
-
- if ( isset( $result[0][0] ) && ( $result[0][0] == 'alreadyrolled' || $result[0][0] == 'cantrollback' ) ) {
- $wgOut->setPageTitle( wfMsg( 'rollbackfailed' ) );
- $errArray = $result[0];
- $errMsg = array_shift( $errArray );
- $wgOut->addWikiMsgArray( $errMsg, $errArray );
-
- if ( isset( $details['current'] ) ) {
- $current = $details['current'];
-
- if ( $current->getComment() != '' ) {
- $wgOut->addWikiMsgArray( 'editcomment', array(
- $wgUser->getSkin()->formatComment( $current->getComment() ) ), array( 'replaceafter' ) );
- }
- }
-
- return;
- }
-
- # Display permissions errors before read-only message -- there's no
- # point in misleading the user into thinking the inability to rollback
- # is only temporary.
- if ( !empty( $result ) && $result !== array( array( 'readonlytext' ) ) ) {
- # array_diff is completely broken for arrays of arrays, sigh.
- # Remove any 'readonlytext' error manually.
- $out = array();
- foreach ( $result as $error ) {
- if ( $error != array( 'readonlytext' ) ) {
- $out [] = $error;
- }
- }
- $wgOut->showPermissionsErrorPage( $out );
-
- return;
- }
-
- if ( $result == array( array( 'readonlytext' ) ) ) {
- $wgOut->readOnlyPage();
-
- return;
- }
-
- $current = $details['current'];
- $target = $details['target'];
- $newId = $details['newid'];
- $wgOut->setPageTitle( wfMsg( 'actioncomplete' ) );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
-
- if ( $current->getUserText() === '' ) {
- $old = wfMsg( 'rev-deleted-user' );
- } else {
- $old = $wgUser->getSkin()->userLink( $current->getUser(), $current->getUserText() )
- . $wgUser->getSkin()->userToolLinks( $current->getUser(), $current->getUserText() );
- }
-
- $new = $wgUser->getSkin()->userLink( $target->getUser(), $target->getUserText() )
- . $wgUser->getSkin()->userToolLinks( $target->getUser(), $target->getUserText() );
- $wgOut->addHTML( wfMsgExt( 'rollback-success', array( 'parse', 'replaceafter' ), $old, $new ) );
- $wgOut->returnToMain( false, $this->mTitle );
-
- if ( !$wgRequest->getBool( 'hidediff', false ) && !$wgUser->getBoolOption( 'norollbackdiff', false ) ) {
- $de = new DifferenceEngine( $this->mTitle, $current->getId(), $newId, false, true );
- $de->showDiff( '', '' );
- }
- }
-
- /**
- * Do standard deferred updates after page view
- */
- public function viewUpdates() {
- global $wgDeferredUpdateList, $wgDisableCounters, $wgUser;
- if ( wfReadOnly() ) {
- return;
- }
-
- # Don't update page view counters on views from bot users (bug 14044)
- if ( !$wgDisableCounters && !$wgUser->isAllowed( 'bot' ) && $this->getID() ) {
- Article::incViewCount( $this->getID() );
- $u = new SiteStatsUpdate( 1, 0, 0 );
- array_push( $wgDeferredUpdateList, $u );
- }
-
- # Update newtalk / watchlist notification status
- $wgUser->clearNotification( $this->mTitle );
- }
-
- /**
- * Prepare text which is about to be saved.
- * Returns a stdclass with source, pst and output members
- */
- public function prepareTextForEdit( $text, $revid = null ) {
- if ( $this->mPreparedEdit && $this->mPreparedEdit->newText == $text && $this->mPreparedEdit->revid == $revid ) {
- // Already prepared
- return $this->mPreparedEdit;
- }
-
- global $wgParser;
-
- $edit = (object)array();
- $edit->revid = $revid;
- $edit->newText = $text;
- $edit->pst = $this->preSaveTransform( $text );
- $edit->popts = $this->getParserOptions();
- $edit->output = $wgParser->parse( $edit->pst, $this->mTitle, $edit->popts, true, true, $revid );
- $edit->oldText = $this->getContent();
-
- $this->mPreparedEdit = $edit;
-
- return $edit;
- }
-
- /**
- * Do standard deferred updates after page edit.
- * Update links tables, site stats, search index and message cache.
- * Purges pages that include this page if the text was changed here.
- * Every 100th edit, prune the recent changes table.
- *
- * @private
- * @param $text String: New text of the article
- * @param $summary String: Edit summary
- * @param $minoredit Boolean: Minor edit
- * @param $timestamp_of_pagechange Timestamp associated with the page change
- * @param $newid Integer: rev_id value of the new revision
- * @param $changed Boolean: Whether or not the content actually changed
- */
- public function editUpdates( $text, $summary, $minoredit, $timestamp_of_pagechange, $newid, $changed = true ) {
- global $wgDeferredUpdateList, $wgMessageCache, $wgUser, $wgEnableParserCache;
-
- wfProfileIn( __METHOD__ );
-
- # 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->prepareTextForEdit( $text, $newid );
- } else {
- wfDebug( __METHOD__ . ": No vary-revision, using prepared edit...\n" );
- $editInfo = $this->mPreparedEdit;
- }
-
- # Save it to the parser cache
- if ( $wgEnableParserCache ) {
- $parserCache = ParserCache::singleton();
- $parserCache->save( $editInfo->output, $this, $editInfo->popts );
- }
-
- # Update the links tables
- $u = new LinksUpdate( $this->mTitle, $editInfo->output );
- $u->doUpdate();
-
- wfRunHooks( 'ArticleEditUpdates', array( &$this, &$editInfo, $changed ) );
-
- if ( wfRunHooks( 'ArticleEditUpdatesDeleteFromRecentchanges', array( &$this ) ) ) {
- if ( 0 == mt_rand( 0, 99 ) ) {
- // Flush old entries from the `recentchanges` table; we do this on
- // random requests so as to avoid an increase in writes for no good reason
- global $wgRCMaxAge;
-
- $dbw = wfGetDB( DB_MASTER );
- $cutoff = $dbw->timestamp( time() - $wgRCMaxAge );
- $recentchanges = $dbw->tableName( 'recentchanges' );
- $sql = "DELETE FROM $recentchanges WHERE rc_timestamp < '{$cutoff}'";
-
- $dbw->query( $sql );
- }
- }
-
- $id = $this->getID();
- $title = $this->mTitle->getPrefixedDBkey();
- $shortTitle = $this->mTitle->getDBkey();
-
- if ( 0 == $id ) {
- wfProfileOut( __METHOD__ );
- return;
- }
-
- $u = new SiteStatsUpdate( 0, 1, $this->mGoodAdjustment, $this->mTotalAdjustment );
- array_push( $wgDeferredUpdateList, $u );
- $u = new SearchUpdate( $id, $title, $text );
- array_push( $wgDeferredUpdateList, $u );
-
- # If this is another user's talk page, update newtalk
- # Don't do this if $changed = false otherwise some idiot can null-edit a
- # load of user talk pages and piss people off, nor if it's a minor edit
- # by a properly-flagged bot.
- if ( $this->mTitle->getNamespace() == NS_USER_TALK && $shortTitle != $wgUser->getTitleKey() && $changed
- && !( $minoredit && $wgUser->isAllowed( 'nominornewtalk' ) )
- ) {
- if ( wfRunHooks( 'ArticleEditUpdateNewTalk', array( &$this ) ) ) {
- $other = User::newFromName( $shortTitle, false );
- if ( !$other ) {
- wfDebug( __METHOD__ . ": invalid username\n" );
- } elseif ( User::isIP( $shortTitle ) ) {
- // An anonymous user
- $other->setNewtalk( true );
- } elseif ( $other->isLoggedIn() ) {
- $other->setNewtalk( true );
- } else {
- wfDebug( __METHOD__ . ": don't need to notify a nonexistent user\n" );
- }
- }
- }
-
- if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
- $wgMessageCache->replace( $shortTitle, $text );
- }
-
- wfProfileOut( __METHOD__ );
- }
-
- /**
- * Perform article updates on a special page creation.
- *
- * @param $rev Revision object
- *
- * @todo This is a shitty interface function. Kill it and replace the
- * other shitty functions like editUpdates and such so it's not needed
- * anymore.
- */
- public function createUpdates( $rev ) {
- $this->mGoodAdjustment = $this->isCountable( $rev->getText() );
- $this->mTotalAdjustment = 1;
- $this->editUpdates( $rev->getText(), $rev->getComment(),
- $rev->isMinor(), wfTimestamp(), $rev->getId(), true );
- }
-
- /**
* Generate the navigation links when browsing through an article revisions
* It shows the information as:
* Revision as of \<date\>; view current revision
@@ -3746,16 +1568,17 @@ class Article {
}
$revision = Revision::newFromId( $oldid );
+ $timestamp = $revision->getTimestamp();
+
+ $current = ( $oldid == $this->mPage->getLatest() );
+ $td = $wgLang->timeanddate( $timestamp, true );
+ $tddate = $wgLang->date( $timestamp, true );
+ $tdtime = $wgLang->time( $timestamp, true );
- $current = ( $oldid == $this->mLatest );
- $td = $wgLang->timeanddate( $this->mTimestamp, true );
- $tddate = $wgLang->date( $this->mTimestamp, true );
- $tdtime = $wgLang->time( $this->mTimestamp, true );
- $sk = $wgUser->getSkin();
$lnk = $current
? wfMsgHtml( 'currentrevisionlink' )
- : $sk->link(
- $this->mTitle,
+ : Linker::link(
+ $this->getTitle(),
wfMsgHtml( 'currentrevisionlink' ),
array(),
$extraParams,
@@ -3763,8 +1586,8 @@ class Article {
);
$curdiff = $current
? wfMsgHtml( 'diff' )
- : $sk->link(
- $this->mTitle,
+ : Linker::link(
+ $this->getTitle(),
wfMsgHtml( 'diff' ),
array(),
array(
@@ -3773,10 +1596,10 @@ class Article {
) + $extraParams,
array( 'known', 'noclasses' )
);
- $prev = $this->mTitle->getPreviousRevisionID( $oldid ) ;
+ $prev = $this->getTitle()->getPreviousRevisionID( $oldid ) ;
$prevlink = $prev
- ? $sk->link(
- $this->mTitle,
+ ? Linker::link(
+ $this->getTitle(),
wfMsgHtml( 'previousrevision' ),
array(),
array(
@@ -3787,8 +1610,8 @@ class Article {
)
: wfMsgHtml( 'previousrevision' );
$prevdiff = $prev
- ? $sk->link(
- $this->mTitle,
+ ? Linker::link(
+ $this->getTitle(),
wfMsgHtml( 'diff' ),
array(),
array(
@@ -3800,8 +1623,8 @@ class Article {
: wfMsgHtml( 'diff' );
$nextlink = $current
? wfMsgHtml( 'nextrevision' )
- : $sk->link(
- $this->mTitle,
+ : Linker::link(
+ $this->getTitle(),
wfMsgHtml( 'nextrevision' ),
array(),
array(
@@ -3812,8 +1635,8 @@ class Article {
);
$nextdiff = $current
? wfMsgHtml( 'diff' )
- : $sk->link(
- $this->mTitle,
+ : Linker::link(
+ $this->getTitle(),
wfMsgHtml( 'diff' ),
array(),
array(
@@ -3829,23 +1652,22 @@ class Article {
$canHide = $wgUser->isAllowed( 'deleterevision' );
if ( $canHide || ( $revision->getVisibility() && $wgUser->isAllowed( 'deletedhistory' ) ) ) {
if ( !$revision->userCan( Revision::DELETED_RESTRICTED ) ) {
- $cdel = $sk->revDeleteLinkDisabled( $canHide ); // rev was hidden from Sysops
+ $cdel = Linker::revDeleteLinkDisabled( $canHide ); // rev was hidden from Sysops
} else {
$query = array(
'type' => 'revision',
- 'target' => $this->mTitle->getPrefixedDbkey(),
+ 'target' => $this->getTitle()->getPrefixedDbkey(),
'ids' => $oldid
);
- $cdel = $sk->revDeleteLink( $query, $revision->isDeleted( File::DELETED_RESTRICTED ), $canHide );
+ $cdel = Linker::revDeleteLink( $query, $revision->isDeleted( File::DELETED_RESTRICTED ), $canHide );
}
$cdel .= ' ';
}
# Show user links if allowed to see them. If hidden, then show them only if requested...
- $userlinks = $sk->revUserTools( $revision, !$unhide );
+ $userlinks = Linker::revUserTools( $revision, !$unhide );
- $m = wfMsg( 'revision-info-current' );
- $infomsg = $current && !wfEmptyMsg( 'revision-info-current', $m ) && $m != '-'
+ $infomsg = $current && !wfMessage( 'revision-info-current' )->isDisabled()
? 'revision-info-current'
: 'revision-info';
@@ -3867,20 +1689,6 @@ class Article {
$wgOut->setSubtitle( $r );
}
- /**
- * This function is called right before saving the wikitext,
- * so we can do things like signatures and links-in-context.
- *
- * @param $text String article contents
- * @return string article contents with altered wikitext markup (signatures
- * converted, {{subst:}}, templates, etc.)
- */
- public function preSaveTransform( $text ) {
- global $wgParser, $wgUser;
-
- return $wgParser->preSaveTransform( $text, $this->mTitle, $wgUser, ParserOptions::newFromUser( $wgUser ) );
- }
-
/* Caching functions */
/**
@@ -3900,8 +1708,8 @@ class Article {
$called = true;
if ( $this->isFileCacheable() ) {
- $cache = new HTMLFileCache( $this->mTitle );
- if ( $cache->isFileCacheGood( $this->mTouched ) ) {
+ $cache = new HTMLFileCache( $this->getTitle() );
+ if ( $cache->isFileCacheGood( $this->mPage->getTouched() ) ) {
wfDebug( "Article::tryFileCache(): about to load file\n" );
$cache->loadFromFileCache();
return true;
@@ -3924,7 +1732,7 @@ class Article {
$cacheable = false;
if ( HTMLFileCache::useFileCache() ) {
- $cacheable = $this->getID() && !$this->mRedirectedFrom && !$this->mTitle->isRedirect();
+ $cacheable = $this->mPage->getID() && !$this->mRedirectedFrom && !$this->getTitle()->isRedirect();
// Extension may have reason to disable file caching on some pages.
if ( $cacheable ) {
$cacheable = wfRunHooks( 'IsFileCacheable', array( &$this ) );
@@ -3934,462 +1742,77 @@ class Article {
return $cacheable;
}
- /**
- * Loads page_touched and returns a value indicating if it should be used
- * @return boolean true if not a redirect
- */
- public function checkTouched() {
- if ( !$this->mDataLoaded ) {
- $this->loadPageData();
- }
-
- return !$this->mIsRedirect;
- }
-
- /**
- * Get the page_touched field
- * @return string containing GMT timestamp
- */
- public function getTouched() {
- if ( !$this->mDataLoaded ) {
- $this->loadPageData();
- }
-
- return $this->mTouched;
- }
-
- /**
- * Get the page_latest field
- * @return integer rev_id of current revision
- */
- public function getLatest() {
- if ( !$this->mDataLoaded ) {
- $this->loadPageData();
- }
-
- return (int)$this->mLatest;
- }
-
- /**
- * Edit an article without doing all that other stuff
- * The article must already exist; link tables etc
- * are not updated, caches are not flushed.
- *
- * @param $text String: text submitted
- * @param $comment String: comment submitted
- * @param $minor Boolean: whereas it's a minor modification
- */
- public function quickEdit( $text, $comment = '', $minor = 0 ) {
- wfProfileIn( __METHOD__ );
-
- $dbw = wfGetDB( DB_MASTER );
- $revision = new Revision( array(
- 'page' => $this->getId(),
- 'text' => $text,
- 'comment' => $comment,
- 'minor_edit' => $minor ? 1 : 0,
- ) );
- $revision->insertOn( $dbw );
- $this->updateRevisionOn( $dbw, $revision );
-
- global $wgUser;
- wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, false, $wgUser ) );
-
- wfProfileOut( __METHOD__ );
- }
-
- /**
- * Used to increment the view counter
- *
- * @param $id Integer: article id
- */
- public static function incViewCount( $id ) {
- $id = intval( $id );
-
- global $wgHitcounterUpdateFreq;
-
- $dbw = wfGetDB( DB_MASTER );
- $pageTable = $dbw->tableName( 'page' );
- $hitcounterTable = $dbw->tableName( 'hitcounter' );
- $acchitsTable = $dbw->tableName( 'acchits' );
- $dbType = $dbw->getType();
-
- if ( $wgHitcounterUpdateFreq <= 1 || $dbType == 'sqlite' ) {
- $dbw->query( "UPDATE $pageTable SET page_counter = page_counter + 1 WHERE page_id = $id" );
-
- return;
- }
-
- # Not important enough to warrant an error page in case of failure
- $oldignore = $dbw->ignoreErrors( true );
-
- $dbw->query( "INSERT INTO $hitcounterTable (hc_id) VALUES ({$id})" );
-
- $checkfreq = intval( $wgHitcounterUpdateFreq / 25 + 1 );
- if ( ( rand() % $checkfreq != 0 ) or ( $dbw->lastErrno() != 0 ) ) {
- # Most of the time (or on SQL errors), skip row count check
- $dbw->ignoreErrors( $oldignore );
-
- return;
- }
-
- $res = $dbw->query( "SELECT COUNT(*) as n FROM $hitcounterTable" );
- $row = $dbw->fetchObject( $res );
- $rown = intval( $row->n );
-
- if ( $rown >= $wgHitcounterUpdateFreq ) {
- wfProfileIn( 'Article::incViewCount-collect' );
- $old_user_abort = ignore_user_abort( true );
-
- $dbw->lockTables( array(), array( 'hitcounter' ), __METHOD__, false );
- $tabletype = $dbType == 'mysql' ? "ENGINE=HEAP " : '';
- $dbw->query( "CREATE TEMPORARY TABLE $acchitsTable $tabletype AS " .
- "SELECT hc_id,COUNT(*) AS hc_n FROM $hitcounterTable " .
- 'GROUP BY hc_id', __METHOD__ );
- $dbw->delete( 'hitcounter', '*', __METHOD__ );
- $dbw->unlockTables( __METHOD__ );
-
- if ( $dbType == 'mysql' ) {
- $dbw->query( "UPDATE $pageTable,$acchitsTable SET page_counter=page_counter + hc_n " .
- 'WHERE page_id = hc_id', __METHOD__ );
- } else {
- $dbw->query( "UPDATE $pageTable SET page_counter=page_counter + hc_n " .
- "FROM $acchitsTable WHERE page_id = hc_id", __METHOD__ );
- }
- $dbw->query( "DROP TABLE $acchitsTable", __METHOD__ );
-
- ignore_user_abort( $old_user_abort );
- wfProfileOut( 'Article::incViewCount-collect' );
- }
-
- $dbw->ignoreErrors( $oldignore );
- }
-
- /**#@+
- * The onArticle*() functions are supposed to be a kind of hooks
- * which should be called whenever any of the specified actions
- * are done.
- *
- * This is a good place to put code to clear caches, for instance.
- *
- * This is called on page move and undelete, as well as edit
- *
- * @param $title a title object
- */
- public static function onArticleCreate( $title ) {
- # Update existence markers on article/talk tabs...
- if ( $title->isTalkPage() ) {
- $other = $title->getSubjectPage();
- } else {
- $other = $title->getTalkPage();
- }
-
- $other->invalidateCache();
- $other->purgeSquid();
-
- $title->touchLinks();
- $title->purgeSquid();
- $title->deleteTitleProtection();
- }
-
- /**
- * Clears caches when article is deleted
- */
- public static function onArticleDelete( $title ) {
- global $wgMessageCache;
-
- # Update existence markers on article/talk tabs...
- if ( $title->isTalkPage() ) {
- $other = $title->getSubjectPage();
- } else {
- $other = $title->getTalkPage();
- }
-
- $other->invalidateCache();
- $other->purgeSquid();
-
- $title->touchLinks();
- $title->purgeSquid();
-
- # File cache
- HTMLFileCache::clearFileCache( $title );
-
- # Messages
- if ( $title->getNamespace() == NS_MEDIAWIKI ) {
- $wgMessageCache->replace( $title->getDBkey(), false );
- }
-
- # Images
- if ( $title->getNamespace() == NS_FILE ) {
- $update = new HTMLCacheUpdate( $title, 'imagelinks' );
- $update->doUpdate();
- }
-
- # User talk pages
- if ( $title->getNamespace() == NS_USER_TALK ) {
- $user = User::newFromName( $title->getText(), false );
- $user->setNewtalk( false );
- }
-
- # Image redirects
- RepoGroup::singleton()->getLocalRepo()->invalidateImageRedirect( $title );
- }
-
- /**
- * Purge caches on page update etc
- *
- * @param $title Title object
- * @todo: verify that $title is always a Title object (and never false or null), add Title hint to parameter $title
- */
- public static function onArticleEdit( $title ) {
- global $wgDeferredUpdateList;
-
- // Invalidate caches of articles which include this page
- $wgDeferredUpdateList[] = new HTMLCacheUpdate( $title, 'templatelinks' );
-
- // Invalidate the caches of all pages which redirect here
- $wgDeferredUpdateList[] = new HTMLCacheUpdate( $title, 'redirect' );
-
- # Purge squid for this page only
- $title->purgeSquid();
-
- # Clear file cache for this page only
- HTMLFileCache::clearFileCache( $title );
- }
-
/**#@-*/
/**
- * Overriden by ImagePage class, only present here to avoid a fatal error
- * Called for ?action=revert
+ * Add the primary page-view wikitext to the output buffer
+ * Saves the text into the parser cache if possible.
+ * Updates templatelinks if it is out of date.
+ *
+ * @param $text String
+ * @param $cache Boolean
+ * @param $parserOptions mixed ParserOptions object, or boolean false
*/
- public function revert() {
+ public function outputWikiText( $text, $cache = true, $parserOptions = false ) {
global $wgOut;
- $wgOut->showErrorPage( 'nosuchaction', 'nosuchactiontext' );
- }
-
- /**
- * Info about this page
- * Called for ?action=info when $wgAllowPageInfo is on.
- */
- public function info() {
- global $wgLang, $wgOut, $wgAllowPageInfo, $wgUser;
-
- if ( !$wgAllowPageInfo ) {
- $wgOut->showErrorPage( 'nosuchaction', 'nosuchactiontext' );
- return;
- }
-
- $page = $this->mTitle->getSubjectPage();
-
- $wgOut->setPagetitle( $page->getPrefixedText() );
- $wgOut->setPageTitleActionText( wfMsg( 'info_short' ) );
- $wgOut->setSubtitle( wfMsgHtml( 'infosubtitle' ) );
-
- if ( !$this->mTitle->exists() ) {
- $wgOut->addHTML( '<div class="noarticletext">' );
- if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
- // This doesn't quite make sense; the user is asking for
- // information about the _page_, not the message... -- RC
- $wgOut->addHTML( htmlspecialchars( wfMsgWeirdKey( $this->mTitle->getText() ) ) );
- } else {
- $msg = $wgUser->isLoggedIn()
- ? 'noarticletext'
- : 'noarticletextanon';
- $wgOut->addHTML( wfMsgExt( $msg, 'parse' ) );
- }
- $wgOut->addHTML( '</div>' );
- } else {
- $dbr = wfGetDB( DB_SLAVE );
- $wl_clause = array(
- 'wl_title' => $page->getDBkey(),
- 'wl_namespace' => $page->getNamespace() );
- $numwatchers = $dbr->selectField(
- 'watchlist',
- 'COUNT(*)',
- $wl_clause,
- __METHOD__,
- $this->getSelectOptions() );
-
- $pageInfo = $this->pageCountInfo( $page );
- $talkInfo = $this->pageCountInfo( $page->getTalkPage() );
-
-
- //FIXME: unescaped messages
- $wgOut->addHTML( "<ul><li>" . wfMsg( "numwatchers", $wgLang->formatNum( $numwatchers ) ) . '</li>' );
- $wgOut->addHTML( "<li>" . wfMsg( 'numedits', $wgLang->formatNum( $pageInfo['edits'] ) ) . '</li>' );
-
- if ( $talkInfo ) {
- $wgOut->addHTML( '<li>' . wfMsg( "numtalkedits", $wgLang->formatNum( $talkInfo['edits'] ) ) . '</li>' );
- }
-
- $wgOut->addHTML( '<li>' . wfMsg( "numauthors", $wgLang->formatNum( $pageInfo['authors'] ) ) . '</li>' );
+ $this->mParserOutput = $this->getOutputFromWikitext( $text, $cache, $parserOptions );
- if ( $talkInfo ) {
- $wgOut->addHTML( '<li>' . wfMsg( 'numtalkauthors', $wgLang->formatNum( $talkInfo['authors'] ) ) . '</li>' );
- }
+ $this->doCascadeProtectionUpdates( $this->mParserOutput );
- $wgOut->addHTML( '</ul>' );
- }
+ $wgOut->addParserOutput( $this->mParserOutput );
}
/**
- * Return the total number of edits and number of unique editors
- * on a given page. If page does not exist, returns false.
+ * Lightweight method to get the parser output for a page, checking the parser cache
+ * and so on. Doesn't consider most of the stuff that WikiPage::view is forced to
+ * consider, so it's not appropriate to use there.
*
- * @param $title Title object
- * @return mixed array or boolean false
- */
- public function pageCountInfo( $title ) {
- $id = $title->getArticleId();
-
- if ( $id == 0 ) {
- return false;
- }
-
- $dbr = wfGetDB( DB_SLAVE );
- $rev_clause = array( 'rev_page' => $id );
- $edits = $dbr->selectField(
- 'revision',
- 'COUNT(rev_page)',
- $rev_clause,
- __METHOD__,
- $this->getSelectOptions()
- );
- $authors = $dbr->selectField(
- 'revision',
- 'COUNT(DISTINCT rev_user_text)',
- $rev_clause,
- __METHOD__,
- $this->getSelectOptions()
- );
-
- return array( 'edits' => $edits, 'authors' => $authors );
- }
-
- /**
- * Return a list of templates used by this article.
- * Uses the templatelinks table
+ * @since 1.16 (r52326) for LiquidThreads
*
- * @return Array of Title objects
+ * @param $oldid mixed integer Revision ID or null
+ * @param $user User The relevant user
+ * @return ParserOutput or false if the given revsion ID is not found
*/
- public function getUsedTemplates() {
- $result = array();
- $id = $this->mTitle->getArticleID();
-
- if ( $id == 0 ) {
- return array();
- }
-
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select( array( 'templatelinks' ),
- array( 'tl_namespace', 'tl_title' ),
- array( 'tl_from' => $id ),
- __METHOD__ );
-
- if ( $res !== false ) {
- foreach ( $res as $row ) {
- $result[] = Title::makeTitle( $row->tl_namespace, $row->tl_title );
- }
- }
+ public function getParserOutput( $oldid = null, User $user = null ) {
+ global $wgEnableParserCache, $wgUser;
+ $user = is_null( $user ) ? $wgUser : $user;
- return $result;
- }
+ wfProfileIn( __METHOD__ );
+ // Should the parser cache be used?
+ $useParserCache = $wgEnableParserCache &&
+ $user->getStubThreshold() == 0 &&
+ $this->mPage->exists() &&
+ $oldid === null;
- /**
- * Returns a list of hidden categories this page is a member of.
- * Uses the page_props and categorylinks tables.
- *
- * @return Array of Title objects
- */
- public function getHiddenCategories() {
- $result = array();
- $id = $this->mTitle->getArticleID();
+ wfDebug( __METHOD__ . ': using parser cache: ' . ( $useParserCache ? 'yes' : 'no' ) . "\n" );
- if ( $id == 0 ) {
- return array();
+ if ( $user->getStubThreshold() ) {
+ wfIncrStats( 'pcache_miss_stub' );
}
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select( array( 'categorylinks', 'page_props', 'page' ),
- array( 'cl_to' ),
- array( 'cl_from' => $id, 'pp_page=page_id', 'pp_propname' => 'hiddencat',
- 'page_namespace' => NS_CATEGORY, 'page_title=cl_to' ),
- __METHOD__ );
-
- if ( $res !== false ) {
- foreach ( $res as $row ) {
- $result[] = Title::makeTitle( NS_CATEGORY, $row->cl_to );
+ if ( $useParserCache ) {
+ $parserOutput = ParserCache::singleton()->get( $this, $this->mPage->getParserOptions() );
+ if ( $parserOutput !== false ) {
+ wfProfileOut( __METHOD__ );
+ return $parserOutput;
}
}
- return $result;
- }
-
- /**
- * Return an applicable autosummary if one exists for the given edit.
- * @param $oldtext String: the previous text of the page.
- * @param $newtext String: The submitted text of the page.
- * @param $flags Bitmask: a bitmask of flags submitted for the edit.
- * @return string An appropriate autosummary, or an empty string.
- */
- public static function getAutosummary( $oldtext, $newtext, $flags ) {
- global $wgContLang;
-
- # Decide what kind of autosummary is needed.
-
- # Redirect autosummaries
- $ot = Title::newFromRedirect( $oldtext );
- $rt = Title::newFromRedirect( $newtext );
-
- if ( is_object( $rt ) && ( !is_object( $ot ) || !$rt->equals( $ot ) || $ot->getFragment() != $rt->getFragment() ) ) {
- return wfMsgForContent( 'autoredircomment', $rt->getFullText() );
- }
-
- # New page autosummaries
- if ( $flags & EDIT_NEW && strlen( $newtext ) ) {
- # If they're making a new article, give its text, truncated, in the summary.
-
- $truncatedtext = $wgContLang->truncate(
- str_replace( "\n", ' ', $newtext ),
- max( 0, 200 - strlen( wfMsgForContent( 'autosumm-new' ) ) ) );
-
- return wfMsgForContent( 'autosumm-new', $truncatedtext );
- }
-
- # Blanking autosummaries
- if ( $oldtext != '' && $newtext == '' ) {
- return wfMsgForContent( 'autosumm-blank' );
- } elseif ( strlen( $oldtext ) > 10 * strlen( $newtext ) && strlen( $newtext ) < 500 ) {
- # Removing more than 90% of the article
-
- $truncatedtext = $wgContLang->truncate(
- $newtext,
- max( 0, 200 - strlen( wfMsgForContent( 'autosumm-replace' ) ) ) );
-
- return wfMsgForContent( 'autosumm-replace', $truncatedtext );
+ // Cache miss; parse and output it.
+ if ( $oldid === null ) {
+ $text = $this->mPage->getRawText();
+ } else {
+ $rev = Revision::newFromTitle( $this->getTitle(), $oldid );
+ if ( $rev === null ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+ $text = $rev->getText();
}
- # If we reach this point, there's no applicable autosummary for our case, so our
- # autosummary is empty.
- return '';
- }
-
- /**
- * Add the primary page-view wikitext to the output buffer
- * Saves the text into the parser cache if possible.
- * Updates templatelinks if it is out of date.
- *
- * @param $text String
- * @param $cache Boolean
- * @param $parserOptions mixed ParserOptions object, or boolean false
- */
- public function outputWikiText( $text, $cache = true, $parserOptions = false ) {
- global $wgOut;
-
- $this->mParserOutput = $this->getOutputFromWikitext( $text, $cache, $parserOptions );
- $wgOut->addParserOutput( $this->mParserOutput );
+ wfProfileOut( __METHOD__ );
+ return $this->getOutputFromWikitext( $text, $useParserCache );
}
/**
@@ -4400,24 +1823,24 @@ class Article {
* @param $text string
* @param $cache boolean
* @param $parserOptions parsing options, defaults to false
- * @return string containing parsed output
+ * @return ParserOutput
*/
public function getOutputFromWikitext( $text, $cache = true, $parserOptions = false ) {
global $wgParser, $wgEnableParserCache, $wgUseFileCache;
if ( !$parserOptions ) {
- $parserOptions = $this->getParserOptions();
+ $parserOptions = $this->mPage->getParserOptions();
}
$time = - wfTime();
- $this->mParserOutput = $wgParser->parse( $text, $this->mTitle,
+ $this->mParserOutput = $wgParser->parse( $text, $this->getTitle(),
$parserOptions, true, true, $this->getRevIdFetched() );
$time += wfTime();
# Timing hack
if ( $time > 3 ) {
wfDebugLog( 'slow-parse', sprintf( "%-5.2f %s", $time,
- $this->mTitle->getPrefixedDBkey() ) );
+ $this->getTitle()->getPrefixedDBkey() ) );
}
if ( $wgEnableParserCache && $cache && $this->mParserOutput->isCacheable() ) {
@@ -4432,213 +1855,156 @@ class Article {
$wgUseFileCache = false;
}
- $this->doCascadeProtectionUpdates( $this->mParserOutput );
+ if ( $this->isCurrent() ) {
+ $this->mPage->doCascadeProtectionUpdates( $this->mParserOutput );
+ }
return $this->mParserOutput;
}
/**
- * Get parser options suitable for rendering the primary article wikitext
- * @return mixed ParserOptions object or boolean false
+ * Sets the context this Article is executed in
+ *
+ * @param $context IContextSource
+ * @since 1.18
*/
- public function getParserOptions() {
- global $wgUser;
-
- if ( !$this->mParserOptions ) {
- $this->mParserOptions = new ParserOptions( $wgUser );
- $this->mParserOptions->setTidy( true );
- $this->mParserOptions->enableLimitReport();
- }
-
- // Clone to allow modifications of the return value without affecting
- // the cache
- return clone $this->mParserOptions;
+ public function setContext( $context ) {
+ $this->mContext = $context;
}
/**
- * Updates cascading protections
+ * Gets the context this Article is executed in
*
- * @param $parserOutput mixed ParserOptions object, or boolean false
- **/
- protected function doCascadeProtectionUpdates( $parserOutput ) {
- if ( !$this->isCurrent() || wfReadOnly() || !$this->mTitle->areRestrictionsCascading() ) {
- return;
- }
-
- // templatelinks table may have become out of sync,
- // especially if using variable-based transclusions.
- // For paranoia, check if things have changed and if
- // so apply updates to the database. This will ensure
- // that cascaded protections apply as soon as the changes
- // are visible.
-
- # Get templates from templatelinks
- $id = $this->mTitle->getArticleID();
-
- $tlTemplates = array();
-
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select( array( 'templatelinks' ),
- array( 'tl_namespace', 'tl_title' ),
- array( 'tl_from' => $id ),
- __METHOD__
- );
-
- foreach ( $res as $row ) {
- $tlTemplates["{$row->tl_namespace}:{$row->tl_title}"] = true;
- }
-
- # Get templates from parser output.
- $poTemplates = array();
- foreach ( $parserOutput->getTemplates() as $ns => $templates ) {
- foreach ( $templates as $dbk => $id ) {
- $poTemplates["$ns:$dbk"] = true;
- }
- }
-
- # Get the diff
- $templates_diff = array_diff_key( $poTemplates, $tlTemplates );
-
- if ( count( $templates_diff ) > 0 ) {
- # Whee, link updates time.
- $u = new LinksUpdate( $this->mTitle, $parserOutput, false );
- $u->doUpdate();
+ * @return IContextSource
+ * @since 1.18
+ */
+ public function getContext() {
+ if ( $this->mContext instanceof IContextSource ) {
+ return $this->mContext;
+ } else {
+ wfDebug( __METHOD__ . " called and \$mContext is null. Return RequestContext::getMain(); for sanity\n" );
+ return RequestContext::getMain();
}
}
/**
- * Update all the appropriate counts in the category table, given that
- * we've added the categories $added and deleted the categories $deleted.
+ * Use PHP's magic __get handler to handle accessing of
+ * raw WikiPage fields for backwards compatibility.
*
- * @param $added array The names of categories that were added
- * @param $deleted array The names of categories that were deleted
+ * @param $fname String Field name
*/
- public function updateCategoryCounts( $added, $deleted ) {
- $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.
- $insertCats = array_merge( $added, $deleted );
- if ( !$insertCats ) {
- # Okay, nothing to do
- return;
- }
-
- $insertRows = array();
-
- foreach ( $insertCats as $cat ) {
- $insertRows[] = array(
- 'cat_id' => $dbw->nextSequenceValue( 'category_cat_id_seq' ),
- 'cat_title' => $cat
- );
- }
- $dbw->insert( 'category', $insertRows, __METHOD__, 'IGNORE' );
-
- $addFields = array( 'cat_pages = cat_pages + 1' );
- $removeFields = array( 'cat_pages = cat_pages - 1' );
-
- if ( $ns == NS_CATEGORY ) {
- $addFields[] = 'cat_subcats = cat_subcats + 1';
- $removeFields[] = 'cat_subcats = cat_subcats - 1';
- } elseif ( $ns == NS_FILE ) {
- $addFields[] = 'cat_files = cat_files + 1';
- $removeFields[] = 'cat_files = cat_files - 1';
- }
-
- if ( $added ) {
- $dbw->update(
- 'category',
- $addFields,
- array( 'cat_title' => $added ),
- __METHOD__
- );
+ public function __get( $fname ) {
+ if ( property_exists( $this->mPage, $fname ) ) {
+ #wfWarn( "Access to raw $fname field " . __CLASS__ );
+ return $this->mPage->$fname;
}
+ trigger_error( 'Inaccessible property via __get(): ' . $fname, E_USER_NOTICE );
+ }
- if ( $deleted ) {
- $dbw->update(
- 'category',
- $removeFields,
- array( 'cat_title' => $deleted ),
- __METHOD__
- );
+ /**
+ * Use PHP's magic __set handler to handle setting of
+ * raw WikiPage fields for backwards compatibility.
+ *
+ * @param $fname String Field name
+ * @param $fvalue mixed New value
+ * @param $args Array Arguments to the method
+ */
+ public function __set( $fname, $fvalue ) {
+ if ( property_exists( $this->mPage, $fname ) ) {
+ #wfWarn( "Access to raw $fname field of " . __CLASS__ );
+ $this->mPage->$fname = $fvalue;
+ // Note: extensions may want to toss on new fields
+ } elseif ( !in_array( $fname, array( 'mContext', 'mPage' ) ) ) {
+ $this->mPage->$fname = $fvalue;
+ } else {
+ trigger_error( 'Inaccessible property via __get(): ' . $fname, E_USER_NOTICE );
}
}
/**
- * Lightweight method to get the parser output for a page, checking the parser cache
- * and so on. Doesn't consider most of the stuff that Article::view is forced to
- * consider, so it's not appropriate to use there.
+ * Use PHP's magic __call handler to transform instance calls to
+ * WikiPage functions for backwards compatibility.
*
- * @since 1.16 (r52326) for LiquidThreads
- *
- * @param $oldid mixed integer Revision ID or null
+ * @param $fname String Name of called method
+ * @param $args Array Arguments to the method
*/
- public function getParserOutput( $oldid = null ) {
- global $wgEnableParserCache, $wgUser;
+ public function __call( $fname, $args ) {
+ if ( is_callable( array( $this->mPage, $fname ) ) ) {
+ #wfWarn( "Call to " . __CLASS__ . "::$fname; please use WikiPage instead" );
+ return call_user_func_array( array( $this->mPage, $fname ), $args );
+ }
+ trigger_error( 'Inaccessible function via __call(): ' . $fname, E_USER_ERROR );
+ }
- // Should the parser cache be used?
- $useParserCache = $wgEnableParserCache &&
- $wgUser->getStubThreshold() == 0 &&
- $this->exists() &&
- $oldid === null;
+ // ****** B/C functions to work-around PHP silliness with __call and references ****** //
+ public function updateRestrictions( $limit = array(), $reason = '', &$cascade = 0, $expiry = array() ) {
+ return $this->mPage->updateRestrictions( $limit, $reason, $cascade, $expiry );
+ }
- wfDebug( __METHOD__ . ': using parser cache: ' . ( $useParserCache ? 'yes' : 'no' ) . "\n" );
+ public function doDeleteArticle( $reason, $suppress = false, $id = 0, $commit = true, &$error = '' ) {
+ return $this->mPage->doDeleteArticle( $reason, $suppress, $id, $commit, $error );
+ }
- if ( $wgUser->getStubThreshold() ) {
- wfIncrStats( 'pcache_miss_stub' );
- }
+ public function doRollback( $fromP, $summary, $token, $bot, &$resultDetails, User $user = null ) {
+ global $wgUser;
+ $user = is_null( $user ) ? $wgUser : $user;
+ return $this->mPage->doRollback( $fromP, $summary, $token, $bot, $resultDetails, $user );
+ }
- $parserOutput = false;
- if ( $useParserCache ) {
- $parserOutput = ParserCache::singleton()->get( $this, $this->getParserOptions() );
- }
+ public function commitRollback( $fromP, $summary, $bot, &$resultDetails, User $guser = null ) {
+ global $wgUser;
+ $guser = is_null( $guser ) ? $wgUser : $guser;
+ return $this->mPage->commitRollback( $fromP, $summary, $bot, $resultDetails, $guser );
+ }
- if ( $parserOutput === false ) {
- // Cache miss; parse and output it.
- $rev = Revision::newFromTitle( $this->getTitle(), $oldid );
+ public function generateReason( &$hasHistory ) {
+ return $this->mPage->getAutoDeleteReason( $hasHistory );
+ }
- return $this->getOutputFromWikitext( $rev->getText(), $useParserCache );
- } else {
- return $parserOutput;
- }
+ // ****** B/C functions for static methods ( __callStatic is PHP>=5.3 ) ****** //
+ public static function selectFields() {
+ return WikiPage::selectFields();
}
- // Deprecated methods
- /**
- * Get the database which should be used for reads
- *
- * @return Database
- * @deprecated - just call wfGetDB( DB_MASTER ) instead
- */
- function getDB() {
- wfDeprecated( __METHOD__ );
- return wfGetDB( DB_MASTER );
+ public static function onArticleCreate( $title ) {
+ return WikiPage::onArticleCreate( $title );
+ }
+
+ public static function onArticleDelete( $title ) {
+ return WikiPage::onArticleDelete( $title );
+ }
+
+ public static function onArticleEdit( $title ) {
+ return WikiPage::onArticleEdit( $title );
}
+ public static function getAutosummary( $oldtext, $newtext, $flags ) {
+ return WikiPage::getAutosummary( $oldtext, $newtext, $flags );
+ }
+ // ******
}
class PoolWorkArticleView extends PoolCounterWork {
+
+ /**
+ * @var Article
+ */
private $mArticle;
-
+
function __construct( $article, $key, $useParserCache, $parserOptions ) {
parent::__construct( 'ArticleView', $key );
$this->mArticle = $article;
$this->cacheable = $useParserCache;
$this->parserOptions = $parserOptions;
}
-
+
function doWork() {
return $this->mArticle->doViewParse();
}
-
+
function getCachedWork() {
global $wgOut;
-
+
$parserCache = ParserCache::singleton();
$this->mArticle->mParserOutput = $parserCache->get( $this->mArticle, $this->parserOptions );
@@ -4652,21 +2018,24 @@ class PoolWorkArticleView extends PoolCounterWork {
}
return false;
}
-
+
function fallback() {
return $this->mArticle->tryDirtyCache();
}
-
+
+ /**
+ * @param $status Status
+ */
function error( $status ) {
global $wgOut;
$wgOut->clearHTML(); // for release() errors
$wgOut->enableClientCache( false );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
-
+
$errortext = $status->getWikiText( false, 'view-pool-error' );
$wgOut->addWikiText( '<div class="errorbox">' . $errortext . '</div>' );
-
+
return false;
}
}
diff --git a/includes/AuthPlugin.php b/includes/AuthPlugin.php
index 7dc99259..eebb52d6 100644
--- a/includes/AuthPlugin.php
+++ b/includes/AuthPlugin.php
@@ -131,6 +131,8 @@ class AuthPlugin {
* and use the same keys. 'Realname' 'Emailaddress' and 'Nickname'
* all reference this.
*
+ * @param $prop string
+ *
* @return Boolean
*/
public function allowPropChange( $prop = '' ) {
@@ -254,10 +256,21 @@ class AuthPlugin {
* Get an instance of a User object
*
* @param $user User
+ *
+ * @return AuthPluginUser
*/
public function getUserInstance( User &$user ) {
return new AuthPluginUser( $user );
}
+
+ /**
+ * Get a list of domains (in HTMLForm options format) used.
+ *
+ * @return array
+ */
+ public function domainList() {
+ return array();
+ }
}
class AuthPluginUser {
diff --git a/includes/AutoLoader.php b/includes/AutoLoader.php
index 347ed694..134e53ea 100644
--- a/includes/AutoLoader.php
+++ b/includes/AutoLoader.php
@@ -14,20 +14,18 @@ global $wgAutoloadLocalClasses;
$wgAutoloadLocalClasses = array(
# Includes
+ 'Action' => 'includes/Action.php',
'AjaxDispatcher' => 'includes/AjaxDispatcher.php',
'AjaxResponse' => 'includes/AjaxResponse.php',
'AlphabeticPager' => 'includes/Pager.php',
- 'APCBagOStuff' => 'includes/BagOStuff.php',
'Article' => 'includes/Article.php',
'AtomFeed' => 'includes/Feed.php',
'AuthPlugin' => 'includes/AuthPlugin.php',
'AuthPluginUser' => 'includes/AuthPlugin.php',
'Autopromote' => 'includes/Autopromote.php',
'BacklinkCache' => 'includes/BacklinkCache.php',
- 'BagOStuff' => 'includes/BagOStuff.php',
+ 'BaseTemplate' => 'includes/SkinTemplate.php',
'Block' => 'includes/Block.php',
- 'CacheDependency' => 'includes/CacheDependency.php',
- 'CacheTime' => 'includes/parser/ParserOutput.php',
'Category' => 'includes/Category.php',
'Categoryfinder' => 'includes/Categoryfinder.php',
'CategoryPage' => 'includes/CategoryPage.php',
@@ -39,28 +37,22 @@ $wgAutoloadLocalClasses = array(
'CdbWriter' => 'includes/Cdb.php',
'CdbWriter_DBA' => 'includes/Cdb.php',
'CdbWriter_PHP' => 'includes/Cdb_PHP.php',
- 'ChangesList' => 'includes/ChangesList.php',
'ChangesFeed' => 'includes/ChangesFeed.php',
+ 'ChangesList' => 'includes/ChangesList.php',
'ChangeTags' => 'includes/ChangeTags.php',
'ChannelFeed' => 'includes/Feed.php',
'Collation' => 'includes/Collation.php',
- 'Cookie' => 'includes/HttpFunctions.php',
- 'CookieJar' => 'includes/HttpFunctions.php',
'ConcatenatedGzipHistoryBlob' => 'includes/HistoryBlob.php',
'ConfEditor' => 'includes/ConfEditor.php',
'ConfEditorParseError' => 'includes/ConfEditor.php',
'ConfEditorToken' => 'includes/ConfEditor.php',
- 'ConstantDependency' => 'includes/CacheDependency.php',
- 'CreativeCommonsRdf' => 'includes/Metadata.php',
- 'Credits' => 'includes/Credits.php',
- 'CSSJanus' => 'includes/libs/CSSJanus.php',
- 'CSSMin' => 'includes/libs/CSSMin.php',
- 'DBABagOStuff' => 'includes/BagOStuff.php',
- 'DependencyWrapper' => 'includes/CacheDependency.php',
+ 'ContextSource' => 'includes/RequestContext.php',
+ 'Cookie' => 'includes/Cookie.php',
+ 'CookieJar' => 'includes/Cookie.php',
'DiffHistoryBlob' => 'includes/HistoryBlob.php',
'DjVuImage' => 'includes/DjVuImage.php',
'DoubleReplacer' => 'includes/StringUtils.php',
- 'DublinCoreRdf' => 'includes/Metadata.php',
+ 'DummyLinker' => 'includes/Linker.php',
'Dump7ZipOutput' => 'includes/Export.php',
'DumpBZip2Output' => 'includes/Export.php',
'DumpFileOutput' => 'includes/Export.php',
@@ -72,145 +64,133 @@ $wgAutoloadLocalClasses = array(
'DumpNotalkFilter' => 'includes/Export.php',
'DumpOutput' => 'includes/Export.php',
'DumpPipeOutput' => 'includes/Export.php',
- 'eAccelBagOStuff' => 'includes/BagOStuff.php',
'EditPage' => 'includes/EditPage.php',
'EmailNotification' => 'includes/UserMailer.php',
'EnhancedChangesList' => 'includes/ChangesList.php',
'ErrorPageError' => 'includes/Exception.php',
- 'Exif' => 'includes/Exif.php',
'ExplodeIterator' => 'includes/StringUtils.php',
'ExternalEdit' => 'includes/ExternalEdit.php',
+ 'ExternalStore' => 'includes/ExternalStore.php',
'ExternalStoreDB' => 'includes/ExternalStoreDB.php',
'ExternalStoreHttp' => 'includes/ExternalStoreHttp.php',
- 'ExternalStore' => 'includes/ExternalStore.php',
'ExternalUser' => 'includes/ExternalUser.php',
- 'FatalError' => 'includes/Exception.php',
'FakeTitle' => 'includes/FakeTitle.php',
- 'FakeMemCachedClient' => 'includes/ObjectCache.php',
+ 'Fallback' => 'includes/Fallback.php',
+ 'FatalError' => 'includes/Exception.php',
'FauxRequest' => 'includes/WebRequest.php',
'FauxResponse' => 'includes/WebResponse.php',
'FeedItem' => 'includes/Feed.php',
'FeedUtils' => 'includes/FeedUtils.php',
'FileDeleteForm' => 'includes/FileDeleteForm.php',
- 'FileDependency' => 'includes/CacheDependency.php',
- 'FileRevertForm' => 'includes/FileRevertForm.php',
'ForkController' => 'includes/ForkController.php',
- 'FormatExif' => 'includes/Exif.php',
+ 'FormlessAction' => 'includes/Action.php',
+ 'FormAction' => 'includes/Action.php',
'FormOptions' => 'includes/FormOptions.php',
- 'GlobalDependency' => 'includes/CacheDependency.php',
- 'HashBagOStuff' => 'includes/BagOStuff.php',
+ 'FormSpecialPage' => 'includes/SpecialPage.php',
+ 'GenderCache' => 'includes/GenderCache.php',
'HashtableReplacer' => 'includes/StringUtils.php',
- 'HistoryBlobCurStub' => 'includes/HistoryBlob.php',
'HistoryBlob' => 'includes/HistoryBlob.php',
+ 'HistoryBlobCurStub' => 'includes/HistoryBlob.php',
'HistoryBlobStub' => 'includes/HistoryBlob.php',
'HistoryPage' => 'includes/HistoryPage.php',
'HistoryPager' => 'includes/HistoryPage.php',
+ 'Hooks' => 'includes/Hooks.php',
'Html' => 'includes/Html.php',
- 'HTMLCacheUpdate' => 'includes/HTMLCacheUpdate.php',
- 'HTMLCacheUpdateJob' => 'includes/HTMLCacheUpdate.php',
- 'HTMLFileCache' => 'includes/HTMLFileCache.php',
+ 'HTMLCheckField' => 'includes/HTMLForm.php',
+ 'HTMLEditTools' => 'includes/HTMLForm.php',
+ 'HTMLFloatField' => 'includes/HTMLForm.php',
'HTMLForm' => 'includes/HTMLForm.php',
'HTMLFormField' => 'includes/HTMLForm.php',
- 'HTMLTextField' => 'includes/HTMLForm.php',
- 'HTMLIntField' => 'includes/HTMLForm.php',
- 'HTMLTextAreaField' => 'includes/HTMLForm.php',
- 'HTMLFloatField' => 'includes/HTMLForm.php',
'HTMLHiddenField' => 'includes/HTMLForm.php',
- 'HTMLSubmitField' => 'includes/HTMLForm.php',
- 'HTMLEditTools' => 'includes/HTMLForm.php',
- 'HTMLCheckField' => 'includes/HTMLForm.php',
- 'HTMLSelectField' => 'includes/HTMLForm.php',
- 'HTMLSelectOrOtherField' => 'includes/HTMLForm.php',
+ 'HTMLInfoField' => 'includes/HTMLForm.php',
+ 'HTMLIntField' => 'includes/HTMLForm.php',
'HTMLMultiSelectField' => 'includes/HTMLForm.php',
'HTMLRadioField' => 'includes/HTMLForm.php',
- 'HTMLInfoField' => 'includes/HTMLForm.php',
+ 'HTMLSelectAndOtherField' => 'includes/HTMLForm.php',
+ 'HTMLSelectField' => 'includes/HTMLForm.php',
+ 'HTMLSelectOrOtherField' => 'includes/HTMLForm.php',
+ 'HTMLSubmitField' => 'includes/HTMLForm.php',
+ 'HTMLTextAreaField' => 'includes/HTMLForm.php',
+ 'HTMLTextField' => 'includes/HTMLForm.php',
'Http' => 'includes/HttpFunctions.php',
'HttpRequest' => 'includes/HttpFunctions.old.php',
+ 'IContextSource' => 'includes/RequestContext.php',
'IcuCollation' => 'includes/Collation.php',
+ 'IdentityCollation' => 'includes/Collation.php',
'ImageGallery' => 'includes/ImageGallery.php',
'ImageHistoryList' => 'includes/ImagePage.php',
'ImageHistoryPseudoPager' => 'includes/ImagePage.php',
'ImagePage' => 'includes/ImagePage.php',
'ImageQueryPage' => 'includes/ImageQueryPage.php',
+ 'ImportStreamSource' => 'includes/Import.php',
+ 'ImportStringSource' => 'includes/Import.php',
'IncludableSpecialPage' => 'includes/SpecialPage.php',
'IndexPager' => 'includes/Pager.php',
- 'Interwiki' => 'includes/Interwiki.php',
+ 'Interwiki' => 'includes/interwiki/Interwiki.php',
'IP' => 'includes/IP.php',
- 'JavaScriptMinifier' => 'includes/libs/JavaScriptMinifier.php',
- 'LCStore_DB' => 'includes/LocalisationCache.php',
'LCStore_CDB' => 'includes/LocalisationCache.php',
+ 'LCStore_DB' => 'includes/LocalisationCache.php',
'LCStore_Null' => 'includes/LocalisationCache.php',
+ 'LegacyTemplate' => 'includes/SkinLegacy.php',
'License' => 'includes/Licenses.php',
'Licenses' => 'includes/Licenses.php',
- 'LinkBatch' => 'includes/LinkBatch.php',
- 'LinkCache' => 'includes/LinkCache.php',
'Linker' => 'includes/Linker.php',
'LinkFilter' => 'includes/LinkFilter.php',
'LinksUpdate' => 'includes/LinksUpdate.php',
'LocalisationCache' => 'includes/LocalisationCache.php',
'LocalisationCache_BulkLoad' => 'includes/LocalisationCache.php',
+ 'LogEventsList' => 'includes/LogEventsList.php',
'LogPage' => 'includes/LogPage.php',
'LogPager' => 'includes/LogEventsList.php',
- 'LogEventsList' => 'includes/LogEventsList.php',
- 'LogReader' => 'includes/LogEventsList.php',
- 'LogViewer' => 'includes/LogEventsList.php',
- 'MacBinary' => 'includes/MacBinary.php',
- 'MagicWordArray' => 'includes/MagicWord.php',
'MagicWord' => 'includes/MagicWord.php',
+ 'MagicWordArray' => 'includes/MagicWord.php',
'MailAddress' => 'includes/UserMailer.php',
- 'MathRenderer' => 'includes/Math.php',
- 'MediaWikiBagOStuff' => 'includes/BagOStuff.php',
- 'MediaWiki_I18N' => 'includes/SkinTemplate.php',
'MediaWiki' => 'includes/Wiki.php',
- 'MemCachedClientforWiki' => 'includes/memcached-client.php',
+ 'MediaWiki_I18N' => 'includes/SkinTemplate.php',
'Message' => 'includes/Message.php',
'MessageBlobStore' => 'includes/MessageBlobStore.php',
- 'MessageCache' => 'includes/MessageCache.php',
'MimeMagic' => 'includes/MimeMagic.php',
'MWException' => 'includes/Exception.php',
+ 'MWExceptionHandler' => 'includes/Exception.php',
+ 'MWFunction' => 'includes/MWFunction.php',
'MWHttpRequest' => 'includes/HttpFunctions.php',
- 'MWMemcached' => 'includes/memcached-client.php',
+ 'MWInit' => 'includes/Init.php',
'MWNamespace' => 'includes/Namespace.php',
'OldChangesList' => 'includes/ChangesList.php',
'OutputPage' => 'includes/OutputPage.php',
- 'PageQueryPage' => 'includes/PageQueryPage.php',
+ 'Page' => 'includes/WikiPage.php',
'PageHistory' => 'includes/HistoryPage.php',
'PageHistoryPager' => 'includes/HistoryPage.php',
+ 'PageQueryPage' => 'includes/PageQueryPage.php',
'Pager' => 'includes/Pager.php',
'PasswordError' => 'includes/User.php',
'PatrolLog' => 'includes/PatrolLog.php',
+ 'PermissionsError' => 'includes/Exception.php',
'PhpHttpRequest' => 'includes/HttpFunctions.php',
'PoolCounter' => 'includes/PoolCounter.php',
'PoolCounter_Stub' => 'includes/PoolCounter.php',
'PoolCounterWork' => 'includes/PoolCounter.php',
'Preferences' => 'includes/Preferences.php',
+ 'PreferencesForm' => 'includes/Preferences.php',
'PrefixSearch' => 'includes/PrefixSearch.php',
- 'Profiler' => 'includes/Profiler.php',
- 'ProfilerSimple' => 'includes/ProfilerSimple.php',
- 'ProfilerSimpleText' => 'includes/ProfilerSimpleText.php',
- 'ProfilerSimpleUDP' => 'includes/ProfilerSimpleUDP.php',
'ProtectionForm' => 'includes/ProtectionForm.php',
'QueryPage' => 'includes/QueryPage.php',
'QuickTemplate' => 'includes/SkinTemplate.php',
'RawPage' => 'includes/RawPage.php',
'RCCacheEntry' => 'includes/ChangesList.php',
'RdfMetaData' => 'includes/Metadata.php',
+ 'ReadOnlyError' => 'includes/Exception.php',
'RecentChange' => 'includes/RecentChange.php',
+ 'RedirectSpecialPage' => 'includes/SpecialPage.php',
'RegexlikeReplacer' => 'includes/StringUtils.php',
'ReplacementArray' => 'includes/StringUtils.php',
'Replacer' => 'includes/StringUtils.php',
- 'ResourceLoader' => 'includes/resourceloader/ResourceLoader.php',
- 'ResourceLoaderContext' => 'includes/resourceloader/ResourceLoaderContext.php',
- 'ResourceLoaderModule' => 'includes/resourceloader/ResourceLoaderModule.php',
- 'ResourceLoaderWikiModule' => 'includes/resourceloader/ResourceLoaderWikiModule.php',
- 'ResourceLoaderFileModule' => 'includes/resourceloader/ResourceLoaderFileModule.php',
- 'ResourceLoaderSiteModule' => 'includes/resourceloader/ResourceLoaderSiteModule.php',
- 'ResourceLoaderUserModule' => 'includes/resourceloader/ResourceLoaderUserModule.php',
- 'ResourceLoaderUserOptionsModule' => 'includes/resourceloader/ResourceLoaderUserOptionsModule.php',
- 'ResourceLoaderStartUpModule' => 'includes/resourceloader/ResourceLoaderStartUpModule.php',
+ 'RequestContext' => 'includes/RequestContext.php',
'ReverseChronologicalPager' => 'includes/Pager.php',
+ 'Rev_Item' => 'includes/RevisionList.php',
+ 'Rev_List' => 'includes/RevisionList.php',
'Revision' => 'includes/Revision.php',
- 'RevisionDelete' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevisionList' => 'includes/RevisionList.php',
'RSSFeed' => 'includes/Feed.php',
'Sanitizer' => 'includes/Sanitizer.php',
'SiteConfiguration' => 'includes/SiteConfiguration.php',
@@ -218,64 +198,88 @@ $wgAutoloadLocalClasses = array(
'SiteStatsInit' => 'includes/SiteStats.php',
'SiteStatsUpdate' => 'includes/SiteStats.php',
'Skin' => 'includes/Skin.php',
+ 'SkinLegacy' => 'includes/SkinLegacy.php',
'SkinTemplate' => 'includes/SkinTemplate.php',
+ 'SpecialCreateAccount' => 'includes/SpecialPage.php',
+ 'SpecialListAdmins' => 'includes/SpecialPage.php',
+ 'SpecialListBots' => 'includes/SpecialPage.php',
'SpecialMycontributions' => 'includes/SpecialPage.php',
'SpecialMypage' => 'includes/SpecialPage.php',
'SpecialMytalk' => 'includes/SpecialPage.php',
+ 'SpecialMyuploads' => 'includes/SpecialPage.php',
'SpecialPage' => 'includes/SpecialPage.php',
+ 'SpecialPageFactory' => 'includes/SpecialPageFactory.php',
'SpecialRedirectToSpecial' => 'includes/SpecialPage.php',
- 'SqlBagOStuff' => 'includes/BagOStuff.php',
- 'SquidUpdate' => 'includes/SquidUpdate.php',
'SquidPurgeClient' => 'includes/SquidPurgeClient.php',
'SquidPurgeClientPool' => 'includes/SquidPurgeClient.php',
'Status' => 'includes/Status.php',
+ 'StringUtils' => 'includes/StringUtils.php',
'StubContLang' => 'includes/StubObject.php',
- 'StubUserLang' => 'includes/StubObject.php',
'StubObject' => 'includes/StubObject.php',
- 'StringUtils' => 'includes/StringUtils.php',
+ 'StubUserLang' => 'includes/StubObject.php',
'TablePager' => 'includes/Pager.php',
- 'TitleDependency' => 'includes/CacheDependency.php',
'Title' => 'includes/Title.php',
'TitleArray' => 'includes/TitleArray.php',
'TitleArrayFromResult' => 'includes/TitleArray.php',
- 'TitleListDependency' => 'includes/CacheDependency.php',
+ 'ThrottledError' => 'includes/Exception.php',
'UnlistedSpecialPage' => 'includes/SpecialPage.php',
'UppercaseCollation' => 'includes/Collation.php',
'User' => 'includes/User.php',
'UserArray' => 'includes/UserArray.php',
'UserArrayFromResult' => 'includes/UserArray.php',
+ 'UserBlockedError' => 'includes/Exception.php',
'UserMailer' => 'includes/UserMailer.php',
'UserRightsProxy' => 'includes/UserRightsProxy.php',
+ 'ViewCountUpdate' => 'includes/ViewCountUpdate.php',
'WantedQueryPage' => 'includes/QueryPage.php',
'WatchedItem' => 'includes/WatchedItem.php',
- 'WatchlistEditor' => 'includes/WatchlistEditor.php',
'WebRequest' => 'includes/WebRequest.php',
'WebRequestUpload' => 'includes/WebRequest.php',
'WebResponse' => 'includes/WebResponse.php',
+ 'WikiCategoryPage' => 'includes/WikiCategoryPage.php',
'WikiError' => 'includes/WikiError.php',
'WikiErrorMsg' => 'includes/WikiError.php',
'WikiExporter' => 'includes/Export.php',
+ 'WikiFilePage' => 'includes/WikiFilePage.php',
+ 'WikiImporter' => 'includes/Import.php',
+ 'WikiPage' => 'includes/WikiPage.php',
+ 'WikiRevision' => 'includes/Import.php',
'WikiMap' => 'includes/WikiMap.php',
'WikiReference' => 'includes/WikiMap.php',
'WikiXmlError' => 'includes/WikiError.php',
- 'WinCacheBagOStuff' => 'includes/BagOStuff.php',
- 'XCacheBagOStuff' => 'includes/BagOStuff.php',
- 'XmlDumpWriter' => 'includes/Export.php',
'Xml' => 'includes/Xml.php',
+ 'XmlDumpWriter' => 'includes/Export.php',
'XmlJsCode' => 'includes/Xml.php',
'XmlSelect' => 'includes/Xml.php',
'XmlTypeCheck' => 'includes/XmlTypeCheck.php',
'ZhClient' => 'includes/ZhClient.php',
+ 'ZipDirectoryReader' => 'includes/ZipDirectoryReader.php',
+
+ # includes/actions
+ 'CreditsAction' => 'includes/actions/CreditsAction.php',
+ 'DeletetrackbackAction' => 'includes/actions/DeletetrackbackAction.php',
+ 'InfoAction' => 'includes/actions/InfoAction.php',
+ 'MarkpatrolledAction' => 'includes/actions/MarkpatrolledAction.php',
+ 'PurgeAction' => 'includes/actions/PurgeAction.php',
+ 'RevertAction' => 'includes/actions/RevertAction.php',
+ 'RevertFileAction' => 'includes/actions/RevertAction.php',
+ 'RevisiondeleteAction' => 'includes/actions/RevisiondeleteAction.php',
+ 'RollbackAction' => 'includes/actions/RollbackAction.php',
+ 'UnwatchAction' => 'includes/actions/WatchAction.php',
+ 'WatchAction' => 'includes/actions/WatchAction.php',
# includes/api
'ApiBase' => 'includes/api/ApiBase.php',
'ApiBlock' => 'includes/api/ApiBlock.php',
+ 'ApiComparePages' => 'includes/api/ApiComparePages.php',
'ApiDelete' => 'includes/api/ApiDelete.php',
'ApiDisabled' => 'includes/api/ApiDisabled.php',
'ApiEditPage' => 'includes/api/ApiEditPage.php',
'ApiEmailUser' => 'includes/api/ApiEmailUser.php',
'ApiExpandTemplates' => 'includes/api/ApiExpandTemplates.php',
+ 'ApiFeedContributions' => 'includes/api/ApiFeedContributions.php',
'ApiFeedWatchlist' => 'includes/api/ApiFeedWatchlist.php',
+ 'ApiFileRevert' => 'includes/api/ApiFileRevert.php',
'ApiFormatBase' => 'includes/api/ApiFormatBase.php',
'ApiFormatDbg' => 'includes/api/ApiFormatDbg.php',
'ApiFormatDump' => 'includes/api/ApiFormatDump.php',
@@ -286,6 +290,7 @@ $wgAutoloadLocalClasses = array(
'ApiFormatTxt' => 'includes/api/ApiFormatTxt.php',
'ApiFormatWddx' => 'includes/api/ApiFormatWddx.php',
'ApiFormatXml' => 'includes/api/ApiFormatXml.php',
+ 'ApiFormatXmlRsd' => 'includes/api/ApiRsd.php',
'ApiFormatYaml' => 'includes/api/ApiFormatYaml.php',
'ApiHelp' => 'includes/api/ApiHelp.php',
'ApiImport' => 'includes/api/ApiImport.php',
@@ -301,14 +306,13 @@ $wgAutoloadLocalClasses = array(
'ApiPatrol' => 'includes/api/ApiPatrol.php',
'ApiProtect' => 'includes/api/ApiProtect.php',
'ApiPurge' => 'includes/api/ApiPurge.php',
- 'ApiRsd' => 'includes/api/ApiRsd.php',
'ApiQuery' => 'includes/api/ApiQuery.php',
'ApiQueryAllCategories' => 'includes/api/ApiQueryAllCategories.php',
'ApiQueryAllimages' => 'includes/api/ApiQueryAllimages.php',
'ApiQueryAllLinks' => 'includes/api/ApiQueryAllLinks.php',
- 'ApiQueryAllUsers' => 'includes/api/ApiQueryAllUsers.php',
'ApiQueryAllmessages' => 'includes/api/ApiQueryAllmessages.php',
'ApiQueryAllpages' => 'includes/api/ApiQueryAllpages.php',
+ 'ApiQueryAllUsers' => 'includes/api/ApiQueryAllUsers.php',
'ApiQueryBacklinks' => 'includes/api/ApiQueryBacklinks.php',
'ApiQueryBase' => 'includes/api/ApiQueryBase.php',
'ApiQueryBlocks' => 'includes/api/ApiQueryBlocks.php',
@@ -319,20 +323,22 @@ $wgAutoloadLocalClasses = array(
'ApiQueryDeletedrevs' => 'includes/api/ApiQueryDeletedrevs.php',
'ApiQueryDisabled' => 'includes/api/ApiQueryDisabled.php',
'ApiQueryDuplicateFiles' => 'includes/api/ApiQueryDuplicateFiles.php',
+ 'ApiQueryExternalLinks' => 'includes/api/ApiQueryExternalLinks.php',
'ApiQueryExtLinksUsage' => 'includes/api/ApiQueryExtLinksUsage.php',
'ApiQueryFilearchive' => 'includes/api/ApiQueryFilearchive.php',
- 'ApiQueryExternalLinks' => 'includes/api/ApiQueryExternalLinks.php',
'ApiQueryGeneratorBase' => 'includes/api/ApiQueryBase.php',
'ApiQueryImageInfo' => 'includes/api/ApiQueryImageInfo.php',
'ApiQueryImages' => 'includes/api/ApiQueryImages.php',
'ApiQueryInfo' => 'includes/api/ApiQueryInfo.php',
- 'ApiQueryIWLinks' => 'includes/api/ApiQueryIWLinks.php',
'ApiQueryIWBacklinks' => 'includes/api/ApiQueryIWBacklinks.php',
+ 'ApiQueryIWLinks' => 'includes/api/ApiQueryIWLinks.php',
+ 'ApiQueryLangBacklinks' => 'includes/api/ApiQueryLangBacklinks.php',
'ApiQueryLangLinks' => 'includes/api/ApiQueryLangLinks.php',
'ApiQueryLinks' => 'includes/api/ApiQueryLinks.php',
'ApiQueryLogEvents' => 'includes/api/ApiQueryLogEvents.php',
'ApiQueryPageProps' => 'includes/api/ApiQueryPageProps.php',
'ApiQueryProtectedTitles' => 'includes/api/ApiQueryProtectedTitles.php',
+ 'ApiQueryQueryPage' => 'includes/api/ApiQueryQueryPage.php',
'ApiQueryRandom' => 'includes/api/ApiQueryRandom.php',
'ApiQueryRecentChanges' => 'includes/api/ApiQueryRecentChanges.php',
'ApiQueryRevisions' => 'includes/api/ApiQueryRevisions.php',
@@ -346,29 +352,37 @@ $wgAutoloadLocalClasses = array(
'ApiQueryWatchlistRaw' => 'includes/api/ApiQueryWatchlistRaw.php',
'ApiResult' => 'includes/api/ApiResult.php',
'ApiRollback' => 'includes/api/ApiRollback.php',
+ 'ApiRsd' => 'includes/api/ApiRsd.php',
'ApiUnblock' => 'includes/api/ApiUnblock.php',
'ApiUndelete' => 'includes/api/ApiUndelete.php',
- 'ApiUserrights' => 'includes/api/ApiUserrights.php',
'ApiUpload' => 'includes/api/ApiUpload.php',
+ 'ApiUserrights' => 'includes/api/ApiUserrights.php',
'ApiWatch' => 'includes/api/ApiWatch.php',
-
'UsageException' => 'includes/api/ApiMain.php',
- # includes/extauth
- 'ExternalUser_Hardcoded' => 'includes/extauth/Hardcoded.php',
- 'ExternalUser_MediaWiki' => 'includes/extauth/MediaWiki.php',
- 'ExternalUser_vB' => 'includes/extauth/vB.php',
-
- # includes/json
- 'Services_JSON' => 'includes/json/Services_JSON.php',
- 'Services_JSON_Error' => 'includes/json/Services_JSON.php',
- 'FormatJson' => 'includes/json/FormatJson.php',
+ # includes/cache
+ 'CacheDependency' => 'includes/cache/CacheDependency.php',
+ 'ConstantDependency' => 'includes/cache/CacheDependency.php',
+ 'DependencyWrapper' => 'includes/cache/CacheDependency.php',
+ 'FileDependency' => 'includes/cache/CacheDependency.php',
+ 'GlobalDependency' => 'includes/cache/CacheDependency.php',
+ 'HTMLCacheUpdate' => 'includes/cache/HTMLCacheUpdate.php',
+ 'HTMLCacheUpdateJob' => 'includes/cache/HTMLCacheUpdate.php',
+ 'HTMLFileCache' => 'includes/cache/HTMLFileCache.php',
+ 'LinkBatch' => 'includes/cache/LinkBatch.php',
+ 'LinkCache' => 'includes/cache/LinkCache.php',
+ 'MessageCache' => 'includes/cache/MessageCache.php',
+ 'SquidUpdate' => 'includes/cache/SquidUpdate.php',
+ 'TitleDependency' => 'includes/cache/CacheDependency.php',
+ 'TitleListDependency' => 'includes/cache/CacheDependency.php',
# includes/db
- 'Blob' => 'includes/db/Database.php',
+ 'Blob' => 'includes/db/DatabaseUtility.php',
'ChronologyProtector' => 'includes/db/LBFactory.php',
+ 'CloneDatabase' => 'includes/db/CloneDatabase.php',
'Database' => 'includes/db/DatabaseMysql.php',
'DatabaseBase' => 'includes/db/Database.php',
+ 'DatabaseIbm_db2' => 'includes/db/DatabaseIbm_db2.php',
'DatabaseMssql' => 'includes/db/DatabaseMssql.php',
'DatabaseMysql' => 'includes/db/DatabaseMysql.php',
'DatabaseOracle' => 'includes/db/DatabaseOracle.php',
@@ -376,51 +390,57 @@ $wgAutoloadLocalClasses = array(
'DatabaseSqlite' => 'includes/db/DatabaseSqlite.php',
'DatabaseSqliteStandalone' => 'includes/db/DatabaseSqlite.php',
'DatabaseType' => 'includes/db/Database.php',
- 'DBConnectionError' => 'includes/db/Database.php',
- 'DBError' => 'includes/db/Database.php',
- 'DBObject' => 'includes/db/Database.php',
- 'DBQueryError' => 'includes/db/Database.php',
- 'DBUnexpectedError' => 'includes/db/Database.php',
- 'FakeResultWrapper' => 'includes/db/Database.php',
- 'Field' => 'includes/db/Database.php',
+ 'DBConnectionError' => 'includes/db/DatabaseError.php',
+ 'DBError' => 'includes/db/DatabaseError.php',
+ 'DBObject' => 'includes/db/DatabaseUtility.php',
+ 'DBMasterPos' => 'includes/db/DatabaseUtility.php',
+ 'DBQueryError' => 'includes/db/DatabaseError.php',
+ 'DBUnexpectedError' => 'includes/db/DatabaseError.php',
+ 'FakeResultWrapper' => 'includes/db/DatabaseUtility.php',
+ 'Field' => 'includes/db/DatabaseUtility.php',
'IBM_DB2Blob' => 'includes/db/DatabaseIbm_db2.php',
+ 'IBM_DB2Field' => 'includes/db/DatabaseIbm_db2.php',
'LBFactory' => 'includes/db/LBFactory.php',
'LBFactory_Multi' => 'includes/db/LBFactory_Multi.php',
'LBFactory_Simple' => 'includes/db/LBFactory.php',
'LBFactory_Single' => 'includes/db/LBFactory_Single.php',
- 'LikeMatch' => 'includes/db/Database.php',
+ 'LikeMatch' => 'includes/db/DatabaseUtility.php',
'LoadBalancer' => 'includes/db/LoadBalancer.php',
'LoadBalancer_Single' => 'includes/db/LBFactory_Single.php',
'LoadMonitor' => 'includes/db/LoadMonitor.php',
'LoadMonitor_MySQL' => 'includes/db/LoadMonitor.php',
+ 'LoadMonitor_Null' => 'includes/db/LoadMonitor.php',
'MySQLField' => 'includes/db/DatabaseMysql.php',
'MySQLMasterPos' => 'includes/db/DatabaseMysql.php',
'ORAField' => 'includes/db/DatabaseOracle.php',
'ORAResult' => 'includes/db/DatabaseOracle.php',
'PostgresField' => 'includes/db/DatabasePostgres.php',
- 'ResultWrapper' => 'includes/db/Database.php',
+ 'ResultWrapper' => 'includes/db/DatabaseUtility.php',
'SQLiteField' => 'includes/db/DatabaseSqlite.php',
- 'DatabaseIbm_db2' => 'includes/db/DatabaseIbm_db2.php',
- 'IBM_DB2Field' => 'includes/db/DatabaseIbm_db2.php',
# includes/diff
- 'ArrayDiffFormatter' => 'includes/diff/WikiDiff.php',
- '_DiffEngine' => 'includes/diff/WikiDiff.php',
+ '_DiffEngine' => 'includes/diff/DairikiDiff.php',
+ '_DiffOp' => 'includes/diff/DairikiDiff.php',
+ '_DiffOp_Add' => 'includes/diff/DairikiDiff.php',
+ '_DiffOp_Change' => 'includes/diff/DairikiDiff.php',
+ '_DiffOp_Copy' => 'includes/diff/DairikiDiff.php',
+ '_DiffOp_Delete' => 'includes/diff/DairikiDiff.php',
+ '_HWLDF_WordAccumulator' => 'includes/diff/DairikiDiff.php',
+ 'ArrayDiffFormatter' => 'includes/diff/DairikiDiff.php',
+ 'Diff' => 'includes/diff/DairikiDiff.php',
'DifferenceEngine' => 'includes/diff/DifferenceEngine.php',
- 'DiffFormatter' => 'includes/diff/WikiDiff.php',
- 'Diff' => 'includes/diff/WikiDiff.php',
- '_DiffOp_Add' => 'includes/diff/WikiDiff.php',
- '_DiffOp_Change' => 'includes/diff/WikiDiff.php',
- '_DiffOp_Copy' => 'includes/diff/WikiDiff.php',
- '_DiffOp_Delete' => 'includes/diff/WikiDiff.php',
- '_DiffOp' => 'includes/diff/WikiDiff.php',
- '_HWLDF_WordAccumulator' => 'includes/diff/WikiDiff.php',
- 'MappedDiff' => 'includes/diff/WikiDiff.php',
+ 'DiffFormatter' => 'includes/diff/DairikiDiff.php',
+ 'MappedDiff' => 'includes/diff/DairikiDiff.php',
'RangeDifference' => 'includes/diff/WikiDiff3.php',
- 'TableDiffFormatter' => 'includes/diff/WikiDiff.php',
- 'UnifiedDiffFormatter' => 'includes/diff/WikiDiff.php',
+ 'TableDiffFormatter' => 'includes/diff/DairikiDiff.php',
+ 'UnifiedDiffFormatter' => 'includes/diff/DairikiDiff.php',
'WikiDiff3' => 'includes/diff/WikiDiff3.php',
- 'WordLevelDiff' => 'includes/diff/WikiDiff.php',
+ 'WordLevelDiff' => 'includes/diff/DairikiDiff.php',
+
+ # includes/extauth
+ 'ExternalUser_Hardcoded' => 'includes/extauth/Hardcoded.php',
+ 'ExternalUser_MediaWiki' => 'includes/extauth/MediaWiki.php',
+ 'ExternalUser_vB' => 'includes/extauth/vB.php',
# includes/filerepo
'ArchivedFile' => 'includes/filerepo/ArchivedFile.php',
@@ -433,7 +453,6 @@ $wgAutoloadLocalClasses = array(
'ForeignDBRepo' => 'includes/filerepo/ForeignDBRepo.php',
'ForeignDBViaLBRepo' => 'includes/filerepo/ForeignDBViaLBRepo.php',
'FSRepo' => 'includes/filerepo/FSRepo.php',
- 'Image' => 'includes/filerepo/Image.php',
'LocalFile' => 'includes/filerepo/LocalFile.php',
'LocalFileDeleteBatch' => 'includes/filerepo/LocalFile.php',
'LocalFileMoveBatch' => 'includes/filerepo/LocalFile.php',
@@ -445,24 +464,43 @@ $wgAutoloadLocalClasses = array(
# includes/installer
'CliInstaller' => 'includes/installer/CliInstaller.php',
- 'Installer' => 'includes/installer/Installer.php',
'DatabaseInstaller' => 'includes/installer/DatabaseInstaller.php',
'DatabaseUpdater' => 'includes/installer/DatabaseUpdater.php',
+ 'Ibm_db2Installer' => 'includes/installer/Ibm_db2Installer.php',
+ 'Ibm_db2Updater' => 'includes/installer/Ibm_db2Updater.php',
+ 'InstallDocFormatter' => 'includes/installer/InstallDocFormatter.php',
+ 'Installer' => 'includes/installer/Installer.php',
'LBFactory_InstallerFake' => 'includes/installer/Installer.php',
'LocalSettingsGenerator' => 'includes/installer/LocalSettingsGenerator.php',
- 'WebInstaller' => 'includes/installer/WebInstaller.php',
- 'WebInstallerPage' => 'includes/installer/WebInstallerPage.php',
- 'WebInstallerOutput' => 'includes/installer/WebInstallerOutput.php',
'MysqlInstaller' => 'includes/installer/MysqlInstaller.php',
'MysqlUpdater' => 'includes/installer/MysqlUpdater.php',
- 'PhpXmlBugTester' => 'includes/installer/PhpBugTests.php',
+ 'OracleInstaller' => 'includes/installer/OracleInstaller.php',
+ 'OracleUpdater' => 'includes/installer/OracleUpdater.php',
'PhpRefCallBugTester' => 'includes/installer/PhpBugTests.php',
+ 'PhpXmlBugTester' => 'includes/installer/PhpBugTests.php',
'PostgresInstaller' => 'includes/installer/PostgresInstaller.php',
'PostgresUpdater' => 'includes/installer/PostgresUpdater.php',
'SqliteInstaller' => 'includes/installer/SqliteInstaller.php',
'SqliteUpdater' => 'includes/installer/SqliteUpdater.php',
- 'OracleInstaller' => 'includes/installer/OracleInstaller.php',
- 'OracleUpdater' => 'includes/installer/OracleUpdater.php',
+ 'WebInstaller' => 'includes/installer/WebInstaller.php',
+ 'WebInstaller_Complete' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_Copying' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_DBConnect' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_DBSettings' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_Document' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_ExistingWiki' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_Install' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_Language' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_Name' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_Options' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_Readme' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_ReleaseNotes' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_Restart' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_Upgrade' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_UpgradeDoc' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstaller_Welcome' => 'includes/installer/WebInstallerPage.php',
+ 'WebInstallerOutput' => 'includes/installer/WebInstallerOutput.php',
+ 'WebInstallerPage' => 'includes/installer/WebInstallerPage.php',
# includes/job
'DoubleRedirectJob' => 'includes/job/DoubleRedirectJob.php',
@@ -473,19 +511,37 @@ $wgAutoloadLocalClasses = array(
'RefreshLinksJob2' => 'includes/job/RefreshLinksJob.php',
'UploadFromUrlJob' => 'includes/job/UploadFromUrlJob.php',
+ # includes/json
+ 'FormatJson' => 'includes/json/FormatJson.php',
+ 'Services_JSON' => 'includes/json/Services_JSON.php',
+ 'Services_JSON_Error' => 'includes/json/Services_JSON.php',
+
# includes/libs
+ 'CSSJanus' => 'includes/libs/CSSJanus.php',
+ 'CSSMin' => 'includes/libs/CSSMin.php',
+ 'HttpStatus' => 'includes/libs/HttpStatus.php',
'IEContentAnalyzer' => 'includes/libs/IEContentAnalyzer.php',
'IEUrlExtension' => 'includes/libs/IEUrlExtension.php',
- 'Spyc' => 'includes/libs/spyc.php',
+ 'JavaScriptMinifier' => 'includes/libs/JavaScriptMinifier.php',
+ 'JSMinPlus' => 'includes/libs/jsminplus.php',
+ 'JSParser' => 'includes/libs/jsminplus.php',
# includes/media
'BitmapHandler' => 'includes/media/Bitmap.php',
'BitmapHandler_ClientOnly' => 'includes/media/Bitmap_ClientOnly.php',
+ 'BitmapMetadataHandler' => 'includes/media/BitmapMetadataHandler.php',
'BmpHandler' => 'includes/media/BMP.php',
'DjVuHandler' => 'includes/media/DjVu.php',
+ 'Exif' => 'includes/media/Exif.php',
+ 'FormatExif' => 'includes/media/FormatMetadata.php',
+ 'FormatMetadata' => 'includes/media/FormatMetadata.php',
'GIFHandler' => 'includes/media/GIF.php',
'GIFMetadataExtractor' => 'includes/media/GIFMetadataExtractor.php',
'ImageHandler' => 'includes/media/Generic.php',
+ 'IPTC' => 'includes/media/IPTC.php',
+ 'JpegHandler' => 'includes/media/Jpeg.php',
+ 'JpegMetadataExtractor' => 'includes/media/JpegMetadataExtractor.php',
+ 'ExifBitmapHandler' => 'includes/media/ExifBitmap.php',
'MediaHandler' => 'includes/media/Generic.php',
'MediaTransformError' => 'includes/media/MediaTransformOutput.php',
'MediaTransformOutput' => 'includes/media/MediaTransformOutput.php',
@@ -496,38 +552,72 @@ $wgAutoloadLocalClasses = array(
'ThumbnailImage' => 'includes/media/MediaTransformOutput.php',
'TiffHandler' => 'includes/media/Tiff.php',
'TransformParameterError' => 'includes/media/MediaTransformOutput.php',
+ 'XMPInfo' => 'includes/media/XMPInfo.php',
+ 'XMPReader' => 'includes/media/XMP.php',
+ 'XMPValidate' => 'includes/media/XMPValidate.php',
# includes/normal
'UtfNormal' => 'includes/normal/UtfNormal.php',
+ # includes/objectcache
+ 'APCBagOStuff' => 'includes/objectcache/APCBagOStuff.php',
+ 'BagOStuff' => 'includes/objectcache/BagOStuff.php',
+ 'DBABagOStuff' => 'includes/objectcache/DBABagOStuff.php',
+ 'eAccelBagOStuff' => 'includes/objectcache/eAccelBagOStuff.php',
+ 'EhcacheBagOStuff' => 'includes/objectcache/EhcacheBagOStuff.php',
+ 'EmptyBagOStuff' => 'includes/objectcache/EmptyBagOStuff.php',
+ 'FakeMemCachedClient' => 'includes/objectcache/EmptyBagOStuff.php',
+ 'HashBagOStuff' => 'includes/objectcache/HashBagOStuff.php',
+ 'MediaWikiBagOStuff' => 'includes/objectcache/SqlBagOStuff.php',
+ 'MemCachedClientforWiki' => 'includes/objectcache/MemcachedClient.php',
+ 'MemcachedPhpBagOStuff' => 'includes/objectcache/MemcachedPhpBagOStuff.php',
+ 'MultiWriteBagOStuff' => 'includes/objectcache/MultiWriteBagOStuff.php',
+ 'MWMemcached' => 'includes/objectcache/MemcachedClient.php',
+ 'ObjectCache' => 'includes/objectcache/ObjectCache.php',
+ 'SqlBagOStuff' => 'includes/objectcache/SqlBagOStuff.php',
+ 'WinCacheBagOStuff' => 'includes/objectcache/WinCacheBagOStuff.php',
+ 'XCacheBagOStuff' => 'includes/objectcache/XCacheBagOStuff.php',
+
# includes/parser
+ 'CacheTime' => 'includes/parser/ParserOutput.php',
'CoreLinkFunctions' => 'includes/parser/CoreLinkFunctions.php',
'CoreParserFunctions' => 'includes/parser/CoreParserFunctions.php',
'CoreTagHooks' => 'includes/parser/CoreTagHooks.php',
'DateFormatter' => 'includes/parser/DateFormatter.php',
'LinkHolderArray' => 'includes/parser/LinkHolderArray.php',
'LinkMarkerReplacer' => 'includes/parser/Parser_LinkHooks.php',
- 'OnlyIncludeReplacer' => 'includes/parser/Parser.php',
- 'PPCustomFrame_Hash' => 'includes/parser/Preprocessor_Hash.php',
+ 'MWTidy' => 'includes/parser/Tidy.php',
'PPCustomFrame_DOM' => 'includes/parser/Preprocessor_DOM.php',
+ 'PPCustomFrame_Hash' => 'includes/parser/Preprocessor_Hash.php',
+ 'PPCustomFrame_HipHop' => 'includes/parser/Preprocessor_HipHop.hphp',
'PPDAccum_Hash' => 'includes/parser/Preprocessor_Hash.php',
+ 'PPDAccum_HipHop' => 'includes/parser/Preprocessor_HipHop.hphp',
'PPDPart' => 'includes/parser/Preprocessor_DOM.php',
'PPDPart_Hash' => 'includes/parser/Preprocessor_Hash.php',
+ 'PPDPart_HipHop' => 'includes/parser/Preprocessor_HipHop.hphp',
'PPDStack' => 'includes/parser/Preprocessor_DOM.php',
'PPDStackElement' => 'includes/parser/Preprocessor_DOM.php',
'PPDStackElement_Hash' => 'includes/parser/Preprocessor_Hash.php',
+ 'PPDStackElement_HipHop' => 'includes/parser/Preprocessor_HipHop.hphp',
'PPDStack_Hash' => 'includes/parser/Preprocessor_Hash.php',
+ 'PPDStack_HipHop' => 'includes/parser/Preprocessor_HipHop.hphp',
'PPFrame' => 'includes/parser/Preprocessor.php',
'PPFrame_DOM' => 'includes/parser/Preprocessor_DOM.php',
'PPFrame_Hash' => 'includes/parser/Preprocessor_Hash.php',
+ 'PPFrame_HipHop' => 'includes/parser/Preprocessor_HipHop.hphp',
'PPNode' => 'includes/parser/Preprocessor.php',
'PPNode_DOM' => 'includes/parser/Preprocessor_DOM.php',
'PPNode_Hash_Array' => 'includes/parser/Preprocessor_Hash.php',
'PPNode_Hash_Attr' => 'includes/parser/Preprocessor_Hash.php',
'PPNode_Hash_Text' => 'includes/parser/Preprocessor_Hash.php',
'PPNode_Hash_Tree' => 'includes/parser/Preprocessor_Hash.php',
+ 'PPNode_HipHop_Array' => 'includes/parser/Preprocessor_HipHop.hphp',
+ 'PPNode_HipHop_Attr' => 'includes/parser/Preprocessor_HipHop.hphp',
+ 'PPNode_HipHop_Text' => 'includes/parser/Preprocessor_HipHop.hphp',
+ 'PPNode_HipHop_Tree' => 'includes/parser/Preprocessor_HipHop.hphp',
'PPTemplateFrame_DOM' => 'includes/parser/Preprocessor_DOM.php',
'PPTemplateFrame_Hash' => 'includes/parser/Preprocessor_Hash.php',
+ 'PPTemplateFrame_HipHop' => 'includes/parser/Preprocessor_HipHop.hphp',
'Parser' => 'includes/parser/Parser.php',
'ParserCache' => 'includes/parser/ParserCache.php',
'ParserOptions' => 'includes/parser/ParserOptions.php',
@@ -537,15 +627,55 @@ $wgAutoloadLocalClasses = array(
'Preprocessor' => 'includes/parser/Preprocessor.php',
'Preprocessor_DOM' => 'includes/parser/Preprocessor_DOM.php',
'Preprocessor_Hash' => 'includes/parser/Preprocessor_Hash.php',
- 'StripState' => 'includes/parser/Parser.php',
- 'MWTidy' => 'includes/parser/Tidy.php',
+ 'Preprocessor_HipHop' => 'includes/parser/Preprocessor_HipHop.hphp',
+ 'StripState' => 'includes/parser/StripState.php',
+
+ # includes/profiler
+ 'Profiler' => 'includes/profiler/Profiler.php',
+ 'ProfilerSimple' => 'includes/profiler/ProfilerSimple.php',
+ 'ProfilerSimpleText' => 'includes/profiler/ProfilerSimpleText.php',
+ 'ProfilerSimpleTrace' => 'includes/profiler/ProfilerSimpleTrace.php',
+ 'ProfilerSimpleUDP' => 'includes/profiler/ProfilerSimpleUDP.php',
+ 'ProfilerStub' => 'includes/profiler/ProfilerStub.php',
+
+ # includes/resourceloader
+ 'ResourceLoader' => 'includes/resourceloader/ResourceLoader.php',
+ 'ResourceLoaderContext' => 'includes/resourceloader/ResourceLoaderContext.php',
+ 'ResourceLoaderFileModule' => 'includes/resourceloader/ResourceLoaderFileModule.php',
+ 'ResourceLoaderFilePageModule' => 'includes/resourceloader/ResourceLoaderFilePageModule.php',
+ 'ResourceLoaderModule' => 'includes/resourceloader/ResourceLoaderModule.php',
+ 'ResourceLoaderNoscriptModule' => 'includes/resourceloader/ResourceLoaderNoscriptModule.php',
+ 'ResourceLoaderSiteModule' => 'includes/resourceloader/ResourceLoaderSiteModule.php',
+ 'ResourceLoaderStartUpModule' => 'includes/resourceloader/ResourceLoaderStartUpModule.php',
+ 'ResourceLoaderUserGroupsModule' => 'includes/resourceloader/ResourceLoaderUserGroupsModule.php',
+ 'ResourceLoaderUserModule' => 'includes/resourceloader/ResourceLoaderUserModule.php',
+ 'ResourceLoaderUserOptionsModule' => 'includes/resourceloader/ResourceLoaderUserOptionsModule.php',
+ 'ResourceLoaderUserTokensModule' => 'includes/resourceloader/ResourceLoaderUserTokensModule.php',
+ 'ResourceLoaderWikiModule' => 'includes/resourceloader/ResourceLoaderWikiModule.php',
+
+ # includes/revisiondelete
+ 'RevDel_ArchivedFileItem' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevDel_ArchivedFileList' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevDel_ArchiveItem' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevDel_ArchiveList' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevDel_FileItem' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevDel_FileList' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevDel_Item' => 'includes/revisiondelete/RevisionDeleteAbstracts.php',
+ 'RevDel_List' => 'includes/revisiondelete/RevisionDeleteAbstracts.php',
+ 'RevDel_LogItem' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevDel_LogList' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevDel_RevisionItem' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevDel_RevisionList' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevisionDelete' => 'includes/revisiondelete/RevisionDelete.php',
+ 'RevisionDeleter' => 'includes/revisiondelete/RevisionDeleter.php',
+ 'RevisionDeleteUser' => 'includes/revisiondelete/RevisionDeleteUser.php',
# includes/search
'MySQLSearchResultSet' => 'includes/search/SearchMySQL.php',
'PostgresSearchResult' => 'includes/search/SearchPostgres.php',
'PostgresSearchResultSet' => 'includes/search/SearchPostgres.php',
- 'SearchEngineDummy' => 'includes/search/SearchEngine.php',
'SearchEngine' => 'includes/search/SearchEngine.php',
+ 'SearchEngineDummy' => 'includes/search/SearchEngine.php',
'SearchHighlighter' => 'includes/search/SearchEngine.php',
'SearchIBM_DB2' => 'includes/search/SearchIBM_DB2.php',
'SearchMssql' => 'includes/search/SearchMssql.php',
@@ -562,30 +692,26 @@ $wgAutoloadLocalClasses = array(
'SqlSearchResultSet' => 'includes/search/SearchEngine.php',
# includes/specials
- 'SpecialAllmessages' => 'includes/specials/SpecialAllmessages.php',
'ActiveUsersPager' => 'includes/specials/SpecialActiveusers.php',
'AllmessagesTablePager' => 'includes/specials/SpecialAllmessages.php',
'AncientPagesPage' => 'includes/specials/SpecialAncientpages.php',
+ 'BlockListPager' => 'includes/specials/SpecialBlockList.php',
'BrokenRedirectsPage' => 'includes/specials/SpecialBrokenRedirects.php',
'ContribsPager' => 'includes/specials/SpecialContributions.php',
'DBLockForm' => 'includes/specials/SpecialLockdb.php',
'DBUnlockForm' => 'includes/specials/SpecialUnlockdb.php',
'DeadendPagesPage' => 'includes/specials/SpecialDeadendpages.php',
- 'DeletedContributionsPage' => 'includes/specials/SpecialDeletedContributions.php',
'DeletedContribsPager' => 'includes/specials/SpecialDeletedContributions.php',
+ 'DeletedContributionsPage' => 'includes/specials/SpecialDeletedContributions.php',
'DisambiguationsPage' => 'includes/specials/SpecialDisambiguations.php',
'DoubleRedirectsPage' => 'includes/specials/SpecialDoubleRedirects.php',
'EmailConfirmation' => 'includes/specials/SpecialConfirmemail.php',
'EmailInvalidation' => 'includes/specials/SpecialConfirmemail.php',
- 'SpecialEmailUser' => 'includes/specials/SpecialEmailuser.php',
'FewestrevisionsPage' => 'includes/specials/SpecialFewestrevisions.php',
'FileDuplicateSearchPage' => 'includes/specials/SpecialFileDuplicateSearch.php',
- 'IPBlockForm' => 'includes/specials/SpecialBlockip.php',
- 'IPBlocklistPager' => 'includes/specials/SpecialIpblocklist.php',
- 'IPUnblockForm' => 'includes/specials/SpecialIpblocklist.php',
+ 'HTMLBlockedUsersItemSelect' => 'includes/specials/SpecialBlockList.php',
'ImportReporter' => 'includes/specials/SpecialImport.php',
- 'ImportStreamSource' => 'includes/Import.php',
- 'ImportStringSource' => 'includes/Import.php',
+ 'IPBlockForm' => 'includes/specials/SpecialBlock.php',
'LinkSearchPage' => 'includes/specials/SpecialLinkSearch.php',
'ListredirectsPage' => 'includes/specials/SpecialListredirects.php',
'LoginForm' => 'includes/specials/SpecialUserlogin.php',
@@ -596,46 +722,42 @@ $wgAutoloadLocalClasses = array(
'MostimagesPage' => 'includes/specials/SpecialMostimages.php',
'MostlinkedCategoriesPage' => 'includes/specials/SpecialMostlinkedcategories.php',
'MostlinkedPage' => 'includes/specials/SpecialMostlinked.php',
+ 'MostlinkedTemplatesPage' => 'includes/specials/SpecialMostlinkedtemplates.php',
'MostrevisionsPage' => 'includes/specials/SpecialMostrevisions.php',
'MovePageForm' => 'includes/specials/SpecialMovepage.php',
- 'SpecialNewpages' => 'includes/specials/SpecialNewpages.php',
- 'SpecialContributions' => 'includes/specials/SpecialContributions.php',
'NewPagesPager' => 'includes/specials/SpecialNewpages.php',
'PageArchive' => 'includes/specials/SpecialUndelete.php',
- 'SpecialResetpass' => 'includes/specials/SpecialResetpass.php',
'PopularPagesPage' => 'includes/specials/SpecialPopularpages.php',
- 'PreferencesForm' => 'includes/Preferences.php',
'RandomPage' => 'includes/specials/SpecialRandompage.php',
- 'SpecialRevisionDelete' => 'includes/specials/SpecialRevisiondelete.php',
- 'RevisionDeleter' => 'includes/revisiondelete/RevisionDeleter.php',
- 'RevDel_List' => 'includes/revisiondelete/RevisionDeleteAbstracts.php',
- 'RevDel_Item' => 'includes/revisiondelete/RevisionDeleteAbstracts.php',
- 'RevDel_RevisionList' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDel_RevisionItem' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDel_ArchiveList' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDel_ArchiveItem' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDel_FileList' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDel_FileItem' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDel_ArchivedFileList' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDel_ArchivedFileItem' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDel_LogList' => 'includes/revisiondelete/RevisionDelete.php',
- 'RevDel_LogItem' => 'includes/revisiondelete/RevisionDelete.php',
'ShortPagesPage' => 'includes/specials/SpecialShortpages.php',
'SpecialActiveUsers' => 'includes/specials/SpecialActiveusers.php',
+ 'SpecialAllmessages' => 'includes/specials/SpecialAllmessages.php',
'SpecialAllpages' => 'includes/specials/SpecialAllpages.php',
'SpecialBlankpage' => 'includes/specials/SpecialBlankpage.php',
+ 'SpecialBlock' => 'includes/specials/SpecialBlock.php',
+ 'SpecialBlockList' => 'includes/specials/SpecialBlockList.php',
'SpecialBlockme' => 'includes/specials/SpecialBlockme.php',
'SpecialBookSources' => 'includes/specials/SpecialBooksources.php',
'SpecialCategories' => 'includes/specials/SpecialCategories.php',
+ 'SpecialChangePassword' => 'includes/specials/SpecialChangePassword.php',
'SpecialComparePages' => 'includes/specials/SpecialComparePages.php',
+ 'SpecialContributions' => 'includes/specials/SpecialContributions.php',
+ 'SpecialEditWatchlist' => 'includes/specials/SpecialEditWatchlist.php',
+ 'SpecialEmailUser' => 'includes/specials/SpecialEmailuser.php',
'SpecialExport' => 'includes/specials/SpecialExport.php',
'SpecialFilepath' => 'includes/specials/SpecialFilepath.php',
'SpecialImport' => 'includes/specials/SpecialImport.php',
+ 'SpecialListFiles' => 'includes/specials/SpecialListfiles.php',
'SpecialListGroupRights' => 'includes/specials/SpecialListgrouprights.php',
+ 'SpecialListUsers' => 'includes/specials/SpecialListusers.php',
'SpecialLockdb' => 'includes/specials/SpecialLockdb.php',
'SpecialLog' => 'includes/specials/SpecialLog.php',
'SpecialMergeHistory' => 'includes/specials/SpecialMergeHistory.php',
'SpecialMostlinkedtemplates' => 'includes/specials/SpecialMostlinkedtemplates.php',
+ 'SpecialNewFiles' => 'includes/specials/SpecialNewimages.php',
+ 'SpecialNewpages' => 'includes/specials/SpecialNewpages.php',
+ 'SpecialPasswordReset' => 'includes/specials/SpecialPasswordReset.php',
+ 'SpecialPermanentLink' => 'includes/SpecialPage.php',
'SpecialPreferences' => 'includes/specials/SpecialPreferences.php',
'SpecialPrefixindex' => 'includes/specials/SpecialPrefixindex.php',
'SpecialProtectedpages' => 'includes/specials/SpecialProtectedpages.php',
@@ -643,21 +765,24 @@ $wgAutoloadLocalClasses = array(
'SpecialRandomredirect' => 'includes/specials/SpecialRandomredirect.php',
'SpecialRecentChanges' => 'includes/specials/SpecialRecentchanges.php',
'SpecialRecentchangeslinked' => 'includes/specials/SpecialRecentchangeslinked.php',
+ 'SpecialRevisionDelete' => 'includes/specials/SpecialRevisiondelete.php',
'SpecialSearch' => 'includes/specials/SpecialSearch.php',
- 'SpecialUploadStash' => 'includes/specials/SpecialUploadStash.php',
'SpecialSpecialpages' => 'includes/specials/SpecialSpecialpages.php',
'SpecialStatistics' => 'includes/specials/SpecialStatistics.php',
'SpecialTags' => 'includes/specials/SpecialTags.php',
+ 'SpecialUnblock' => 'includes/specials/SpecialUnblock.php',
+ 'SpecialUndelete' => 'includes/specials/SpecialUndelete.php',
'SpecialUnlockdb' => 'includes/specials/SpecialUnlockdb.php',
'SpecialUpload' => 'includes/specials/SpecialUpload.php',
+ 'SpecialUploadStash' => 'includes/specials/SpecialUploadStash.php',
'SpecialUserlogout' => 'includes/specials/SpecialUserlogout.php',
'SpecialVersion' => 'includes/specials/SpecialVersion.php',
+ 'SpecialWatchlist' => 'includes/specials/SpecialWatchlist.php',
'SpecialWhatlinkshere' => 'includes/specials/SpecialWhatlinkshere.php',
- 'SpecialWhatLinksHere' => 'includes/specials/SpecialWhatlinkshere.php',
'UncategorizedCategoriesPage' => 'includes/specials/SpecialUncategorizedcategories.php',
+ 'UncategorizedImagesPage' => 'includes/specials/SpecialUncategorizedimages.php',
'UncategorizedPagesPage' => 'includes/specials/SpecialUncategorizedpages.php',
'UncategorizedTemplatesPage' => 'includes/specials/SpecialUncategorizedtemplates.php',
- 'UndeleteForm' => 'includes/specials/SpecialUndelete.php',
'UnusedCategoriesPage' => 'includes/specials/SpecialUnusedcategories.php',
'UnusedimagesPage' => 'includes/specials/SpecialUnusedimages.php',
'UnusedtemplatesPage' => 'includes/specials/SpecialUnusedtemplates.php',
@@ -670,9 +795,7 @@ $wgAutoloadLocalClasses = array(
'WantedFilesPage' => 'includes/specials/SpecialWantedfiles.php',
'WantedPagesPage' => 'includes/specials/SpecialWantedpages.php',
'WantedTemplatesPage' => 'includes/specials/SpecialWantedtemplates.php',
- 'WhatLinksHerePage' => 'includes/specials/SpecialWhatlinkshere.php',
- 'WikiImporter' => 'includes/Import.php',
- 'WikiRevision' => 'includes/Import.php',
+ 'WatchlistEditor' => 'includes/specials/SpecialEditWatchlist.php',
'WithoutInterwikiPage' => 'includes/specials/SpecialWithoutinterwiki.php',
# includes/templates
@@ -681,66 +804,71 @@ $wgAutoloadLocalClasses = array(
# includes/upload
'UploadBase' => 'includes/upload/UploadBase.php',
- 'UploadFromStash' => 'includes/upload/UploadFromStash.php',
'UploadFromFile' => 'includes/upload/UploadFromFile.php',
+ 'UploadFromStash' => 'includes/upload/UploadFromStash.php',
'UploadFromUrl' => 'includes/upload/UploadFromUrl.php',
'UploadStash' => 'includes/upload/UploadStash.php',
- 'UploadStashFile' => 'includes/upload/UploadStash.php',
- 'UploadStashNotAvailableException' => 'includes/upload/UploadStash.php',
- 'UploadStashFileNotFoundException' => 'includes/upload/UploadStash.php',
'UploadStashBadPathException' => 'includes/upload/UploadStash.php',
'UploadStashBadVersionException' => 'includes/upload/UploadStash.php',
+ 'UploadStashFile' => 'includes/upload/UploadStash.php',
'UploadStashFileException' => 'includes/upload/UploadStash.php',
+ 'UploadStashFileNotFoundException' => 'includes/upload/UploadStash.php',
+ 'UploadStashNotAvailableException' => 'includes/upload/UploadStash.php',
'UploadStashZeroLengthFileException' => 'includes/upload/UploadStash.php',
# languages
- 'Language' => 'languages/Language.php',
'FakeConverter' => 'languages/Language.php',
+ 'Language' => 'languages/Language.php',
'LanguageConverter' => 'languages/LanguageConverter.php',
# maintenance
- 'AnsiTermColorer' => 'maintenance/tests/testHelpers.inc',
'ConvertLinks' => 'maintenance/convertLinks.php',
- 'DbTestPreviewer' => 'maintenance/tests/testHelpers.inc',
- 'DbTestRecorder' => 'maintenance/tests/testHelpers.inc',
'DeleteArchivedFilesImplementation' => 'maintenance/deleteArchivedFiles.inc',
'DeleteArchivedRevisionsImplementation' => 'maintenance/deleteArchivedRevisions.inc',
'DeleteDefaultMessages' => 'maintenance/deleteDefaultMessages.php',
- 'DummyTermColorer' => 'maintenance/tests/testHelpers.inc',
'FakeMaintenance' => 'maintenance/Maintenance.php',
+ 'LoggedUpdateMaintenance' => 'maintenance/Maintenance.php',
'Maintenance' => 'maintenance/Maintenance.php',
- 'ParserTest' => 'maintenance/tests/parser/parserTest.inc',
- 'ParserTestParserHook' => 'maintenance/tests/parser/parserTestsParserHook.php',
- 'ParserTestStaticParserHook' => 'maintenance/tests/parser/parserTestsStaticParserHook.php',
+ 'FixExtLinksProtocolRelative' => 'maintenance/fixExtLinksProtocolRelative.php',
'PopulateCategory' => 'maintenance/populateCategory.php',
'PopulateLogSearch' => 'maintenance/populateLogSearch.php',
'PopulateLogUsertext' => 'maintenance/populateLogUsertext.php',
'PopulateParentId' => 'maintenance/populateParentId.php',
'PopulateRevisionLength' => 'maintenance/populateRevisionLength.php',
- 'RemoteTestRecorder' => 'maintenance/tests/testHelpers.inc',
'SevenZipStream' => 'maintenance/7zip.inc',
'Sqlite' => 'maintenance/sqlite.inc',
- 'TestFileIterator' => 'maintenance/tests/testHelpers.inc',
- 'TestRecorder' => 'maintenance/tests/testHelpers.inc',
'UpdateCollation' => 'maintenance/updateCollation.php',
'UpdateRestrictions' => 'maintenance/updateRestrictions.php',
'UserDupes' => 'maintenance/userDupes.inc',
- # maintenance/tests/selenium
- 'Selenium' => 'maintenance/tests/selenium/Selenium.php',
- 'SeleniumLoader' => 'maintenance/tests/selenium/SeleniumLoader.php',
- 'SeleniumTestCase' => 'maintenance/tests/selenium/SeleniumTestCase.php',
- 'SeleniumTestConsoleLogger' => 'maintenance/tests/selenium/SeleniumTestConsoleLogger.php',
- 'SeleniumTestHTMLLogger' => 'maintenance/tests/selenium/SeleniumTestHTMLLogger.php',
- 'SeleniumTestListener' => 'maintenance/tests/selenium/SeleniumTestListener.php',
- 'SeleniumTestSuite' => 'maintenance/tests/selenium/SeleniumTestSuite.php',
- 'SeleniumConfig' => 'maintenance/tests/selenium/SeleniumConfig.php',
-
# maintenance/language
'csvStatsOutput' => 'maintenance/language/StatOutputs.php',
'statsOutput' => 'maintenance/language/StatOutputs.php',
'textStatsOutput' => 'maintenance/language/StatOutputs.php',
'wikiStatsOutput' => 'maintenance/language/StatOutputs.php',
+
+ # tests
+ 'AnsiTermColorer' => 'tests/testHelpers.inc',
+ 'DbTestPreviewer' => 'tests/testHelpers.inc',
+ 'DbTestRecorder' => 'tests/testHelpers.inc',
+ 'DummyTermColorer' => 'tests/testHelpers.inc',
+ 'TestFileIterator' => 'tests/testHelpers.inc',
+ 'TestRecorder' => 'tests/testHelpers.inc',
+
+ # tests/parser
+ 'ParserTest' => 'tests/parser/parserTest.inc',
+ 'ParserTestParserHook' => 'tests/parser/parserTestsParserHook.php',
+ 'ParserTestStaticParserHook' => 'tests/parser/parserTestsStaticParserHook.php',
+
+ # tests/selenium
+ 'Selenium' => 'tests/selenium/Selenium.php',
+ 'SeleniumLoader' => 'tests/selenium/SeleniumLoader.php',
+ 'SeleniumTestCase' => 'tests/selenium/SeleniumTestCase.php',
+ 'SeleniumTestConsoleLogger' => 'tests/selenium/SeleniumTestConsoleLogger.php',
+ 'SeleniumTestHTMLLogger' => 'tests/selenium/SeleniumTestHTMLLogger.php',
+ 'SeleniumTestListener' => 'tests/selenium/SeleniumTestListener.php',
+ 'SeleniumTestSuite' => 'tests/selenium/SeleniumTestSuite.php',
+ 'SeleniumConfig' => 'tests/selenium/SeleniumConfig.php',
);
class AutoLoader {
@@ -792,16 +920,6 @@ class AutoLoader {
return true;
}
- static function loadAllExtensions() {
- global $wgAutoloadClasses;
-
- foreach ( $wgAutoloadClasses as $class => $file ) {
- if ( !( class_exists( $class, false ) || interface_exists( $class, false ) ) ) {
- require( $file );
- }
- }
- }
-
/**
* Force a class to be run through the autoloader, helpful for things like
* Sanitizer that have define()s outside of their class definition. Of course
diff --git a/includes/Autopromote.php b/includes/Autopromote.php
index b4d89b24..83f3c20b 100644
--- a/includes/Autopromote.php
+++ b/includes/Autopromote.php
@@ -8,7 +8,7 @@ class Autopromote {
/**
* Get the groups for the given user based on $wgAutopromote.
*
- * @param $user The user to get the groups for
+ * @param $user User The user to get the groups for
* @return array Array of groups to promote to.
*/
public static function getAutopromoteGroups( User $user ) {
@@ -28,8 +28,47 @@ class Autopromote {
}
/**
+ * Get the groups for the given user based on the given criteria.
+ *
+ * Does not return groups the user already belongs to or has once belonged.
+ *
+ * @param $user The user to get the groups for
+ * @param $event String key in $wgAutopromoteOnce (each one has groups/criteria)
+ *
+ * @return array Groups the user should be promoted to.
+ *
+ * @see $wgAutopromoteOnce
+ */
+ public static function getAutopromoteOnceGroups( User $user, $event ) {
+ global $wgAutopromoteOnce;
+
+ $promote = array();
+
+ if ( isset( $wgAutopromoteOnce[$event] ) && count( $wgAutopromoteOnce[$event] ) ) {
+ $currentGroups = $user->getGroups();
+ $formerGroups = $user->getFormerGroups();
+ foreach ( $wgAutopromoteOnce[$event] as $group => $cond ) {
+ // Do not check if the user's already a member
+ if ( in_array( $group, $currentGroups ) ) {
+ continue;
+ }
+ // Do not autopromote if the user has belonged to the group
+ if ( in_array( $group, $formerGroups ) ) {
+ continue;
+ }
+ // Finally - check the conditions
+ if ( self::recCheckCondition( $cond, $user ) ) {
+ $promote[] = $group;
+ }
+ }
+ }
+
+ return $promote;
+ }
+
+ /**
* Recursively check a condition. Conditions are in the form
- * array( '&' or '|' or '^', cond1, cond2, ... )
+ * array( '&' or '|' or '^' or '!', cond1, cond2, ... )
* where cond1, cond2, ... are themselves conditions; *OR*
* APCOND_EMAILCONFIRMED, *OR*
* array( APCOND_EMAILCONFIRMED ), *OR*
@@ -40,7 +79,7 @@ class Autopromote {
* self::checkCondition for evaluation of the latter type.
*
* @param $cond Mixed: a condition, possibly containing other conditions
- * @param $user The user to check the conditions against
+ * @param $user User The user to check the conditions against
* @return bool Whether the condition is true
*/
private static function recCheckCondition( $cond, User $user ) {
@@ -48,7 +87,7 @@ class Autopromote {
if ( is_array( $cond ) && count( $cond ) >= 2 && in_array( $cond[0], $validOps ) ) {
# Recursive condition
- if ( $cond[0] == '&' ) {
+ if ( $cond[0] == '&' ) { // AND (all conds pass)
foreach ( array_slice( $cond, 1 ) as $subcond ) {
if ( !self::recCheckCondition( $subcond, $user ) ) {
return false;
@@ -56,7 +95,7 @@ class Autopromote {
}
return true;
- } elseif ( $cond[0] == '|' ) {
+ } elseif ( $cond[0] == '|' ) { // OR (at least one cond passes)
foreach ( array_slice( $cond, 1 ) as $subcond ) {
if ( self::recCheckCondition( $subcond, $user ) ) {
return true;
@@ -64,18 +103,13 @@ class Autopromote {
}
return false;
- } elseif ( $cond[0] == '^' ) {
- $res = null;
- foreach ( array_slice( $cond, 1 ) as $subcond ) {
- if ( is_null( $res ) ) {
- $res = self::recCheckCondition( $subcond, $user );
- } else {
- $res = ( $res xor self::recCheckCondition( $subcond, $user ) );
- }
+ } elseif ( $cond[0] == '^' ) { // XOR (exactly one cond passes)
+ if ( count( $cond ) > 3 ) {
+ wfWarn( 'recCheckCondition() given XOR ("^") condition on three or more conditions. Check your $wgAutopromote and $wgAutopromoteOnce settings.' );
}
-
- return $res;
- } elseif ( $cond[0] == '!' ) {
+ return self::recCheckCondition( $cond[1], $user )
+ xor self::recCheckCondition( $cond[2], $user );
+ } elseif ( $cond[0] == '!' ) { // NOT (no conds pass)
foreach ( array_slice( $cond, 1 ) as $subcond ) {
if ( self::recCheckCondition( $subcond, $user ) ) {
return false;
@@ -101,7 +135,7 @@ class Autopromote {
* ates them.
*
* @param $cond Array: A condition, which must not contain other conditions
- * @param $user The user to check the condition against
+ * @param $user User The user to check the condition against
* @return bool Whether the condition is true for the user
*/
private static function checkCondition( $cond, User $user ) {
@@ -112,7 +146,7 @@ class Autopromote {
switch( $cond[0] ) {
case APCOND_EMAILCONFIRMED:
- if ( User::isValidEmailAddr( $user->getEmail() ) ) {
+ if ( Sanitizer::validateEmail( $user->getEmail() ) ) {
if ( $wgEmailAuthentication ) {
return (bool)$user->getEmailAuthenticationTimestamp();
} else {
@@ -137,6 +171,8 @@ class Autopromote {
return IP::isInRange( wfGetIP(), $cond[1] );
case APCOND_BLOCKED:
return $user->isBlocked();
+ case APCOND_ISBOT:
+ return in_array( 'bot', User::getGroupPermissions( $user->getGroups() ) );
default:
$result = null;
wfRunHooks( 'AutopromoteCondition', array( $cond[0], array_slice( $cond, 1 ), $user, &$result ) );
diff --git a/includes/BacklinkCache.php b/includes/BacklinkCache.php
index 02b0f170..8d1571ec 100644
--- a/includes/BacklinkCache.php
+++ b/includes/BacklinkCache.php
@@ -1,21 +1,71 @@
<?php
/**
- * Class for fetching backlink lists, approximate backlink counts and partitions.
- * Instances of this class should typically be fetched with $title->getBacklinkCache().
+ * File for BacklinkCache class
+ * @file
+ */
+
+/**
+ * Class for fetching backlink lists, approximate backlink counts and
+ * partitions. This is a shared cache.
+ *
+ * Instances of this class should typically be fetched with the method
+ * $title->getBacklinkCache().
+ *
+ * Ideally you should only get your backlinks from here when you think
+ * there is some advantage in caching them. Otherwise it's just a waste
+ * of memory.
*
- * Ideally you should only get your backlinks from here when you think there is some
- * advantage in caching them. Otherwise it's just a waste of memory.
+ * Introduced by r47317
+ *
+ * @internal documentation reviewed on 18 Mar 2011 by hashar
+ *
+ * @author Tim Starling
+ * @copyright © 2009, Tim Starling, Domas Mituzas
+ * @copyright © 2010, Max Sem
+ * @copyright © 2011, Ashar Voultoiz
*/
class BacklinkCache {
- var $partitionCache = array();
- var $fullResultCache = array();
- var $title;
- var $db;
+
+ /**
+ * Multi dimensions array representing batches. Keys are:
+ * > (string) links table name
+ * > 'numRows' : Number of rows for this link table
+ * > 'batches' : array( $start, $end )
+ *
+ * @see BacklinkCache::partitionResult()
+ *
+ * Cleared with BacklinkCache::clear()
+ */
+ protected $partitionCache = array();
+
+ /**
+ * Contains the whole links from a database result.
+ * This is raw data that will be partitioned in $partitionCache
+ *
+ * Initialized with BacklinkCache::getLinks()
+ * Cleared with BacklinkCache::clear()
+ */
+ protected $fullResultCache = array();
+
+ /**
+ * Local copy of a database object.
+ *
+ * Accessor: BacklinkCache::getDB()
+ * Mutator : BacklinkCache::setDB()
+ * Cleared with BacklinkCache::clear()
+ */
+ protected $db;
+
+ /**
+ * Local copy of a Title object
+ */
+ protected $title;
const CACHE_EXPIRY = 3600;
/**
* Create a new BacklinkCache
+ * @param Title $title : Title object to create a backlink cache for.
*/
function __construct( $title ) {
$this->title = $title;
@@ -23,16 +73,17 @@ class BacklinkCache {
/**
* Serialization handler, diasallows to serialize the database to prevent
- * failures after this class is deserialized from cache with dead DB connection.
+ * failures after this class is deserialized from cache with dead DB
+ * connection.
*/
function __sleep() {
return array( 'partitionCache', 'fullResultCache', 'title' );
}
/**
- * Clear locally stored data
+ * Clear locally stored data and database object.
*/
- function clear() {
+ public function clear() {
$this->partitionCache = array();
$this->fullResultCache = array();
unset( $this->db );
@@ -40,11 +91,18 @@ class BacklinkCache {
/**
* Set the Database object to use
+ *
+ * @param $db DatabaseBase
*/
public function setDB( $db ) {
$this->db = $db;
}
+ /**
+ * Get the slave connection to the database
+ * When non existing, will initialize the connection.
+ * @return Database object
+ */
protected function getDB() {
if ( !isset( $this->db ) ) {
$this->db = wfGetDB( DB_SLAVE );
@@ -58,7 +116,7 @@ class BacklinkCache {
* @param $table String
* @param $startId Integer or false
* @param $endId Integer or false
- * @return TitleArray
+ * @return TitleArrayFromResult
*/
public function getLinks( $table, $startId = false, $endId = false ) {
wfProfileIn( __METHOD__ );
@@ -95,6 +153,7 @@ class BacklinkCache {
return $ta;
}
+ // @todo FIXME: Make this a function?
if ( !isset( $this->fullResultCache[$table] ) ) {
wfDebug( __METHOD__ . ": from DB\n" );
$res = $this->getDB()->select(
@@ -117,14 +176,15 @@ class BacklinkCache {
/**
* Get the field name prefix for a given table
+ * @param $table String
*/
protected function getPrefix( $table ) {
static $prefixes = array(
- 'pagelinks' => 'pl',
- 'imagelinks' => 'il',
+ 'pagelinks' => 'pl',
+ 'imagelinks' => 'il',
'categorylinks' => 'cl',
'templatelinks' => 'tl',
- 'redirect' => 'rd',
+ 'redirect' => 'rd',
);
if ( isset( $prefixes[$table] ) ) {
@@ -135,18 +195,32 @@ class BacklinkCache {
}
/**
- * Get the SQL condition array for selecting backlinks, with a join on the page table
+ * Get the SQL condition array for selecting backlinks, with a join
+ * on the page table.
+ * @param $table String
*/
protected function getConditions( $table ) {
$prefix = $this->getPrefix( $table );
+ // @todo FIXME: imagelinks and categorylinks do not rely on getNamespace,
+ // they could be moved up for nicer case statements
switch ( $table ) {
case 'pagelinks':
case 'templatelinks':
+ $conds = array(
+ "{$prefix}_namespace" => $this->title->getNamespace(),
+ "{$prefix}_title" => $this->title->getDBkey(),
+ "page_id={$prefix}_from"
+ );
+ break;
case 'redirect':
$conds = array(
"{$prefix}_namespace" => $this->title->getNamespace(),
- "{$prefix}_title" => $this->title->getDBkey(),
+ "{$prefix}_title" => $this->title->getDBkey(),
+ $this->getDb()->makeList( array(
+ "{$prefix}_interwiki = ''",
+ "{$prefix}_interwiki is null",
+ ), LIST_OR ),
"page_id={$prefix}_from"
);
break;
@@ -171,6 +245,8 @@ class BacklinkCache {
/**
* Get the approximate number of backlinks
+ * @param $table String
+ * @return integer
*/
public function getNumLinks( $table ) {
if ( isset( $this->fullResultCache[$table] ) ) {
@@ -189,15 +265,17 @@ class BacklinkCache {
/**
* Partition the backlinks into batches.
- * Returns an array giving the start and end of each range. The first batch has
- * a start of false, and the last batch has an end of false.
+ * Returns an array giving the start and end of each range. The first
+ * batch has a start of false, and the last batch has an end of false.
*
* @param $table String: the links table name
* @param $batchSize Integer
* @return Array
*/
public function partition( $table, $batchSize ) {
- // Try cache
+
+ // 1) try partition cache ...
+
if ( isset( $this->partitionCache[$table][$batchSize] ) ) {
wfDebug( __METHOD__ . ": got from partition cache\n" );
return $this->partitionCache[$table][$batchSize]['batches'];
@@ -206,7 +284,8 @@ class BacklinkCache {
$this->partitionCache[$table][$batchSize] = false;
$cacheEntry =& $this->partitionCache[$table][$batchSize];
- // Try full result cache
+ // 2) ... then try full result cache ...
+
if ( isset( $this->fullResultCache[$table] ) ) {
$cacheEntry = $this->partitionResult( $this->fullResultCache[$table], $batchSize );
wfDebug( __METHOD__ . ": got from full result cache\n" );
@@ -214,7 +293,8 @@ class BacklinkCache {
return $cacheEntry['batches'];
}
- // Try memcached
+ // 3) ... fallback to memcached ...
+
global $wgMemc;
$memcKey = wfMemcKey(
@@ -233,7 +313,9 @@ class BacklinkCache {
return $cacheEntry['batches'];
}
- // Fetch from database
+
+ // 4) ... finally fetch from the slow database :(
+
$this->getLinks( $table );
$cacheEntry = $this->partitionResult( $this->fullResultCache[$table], $batchSize );
// Save to memcached
@@ -245,6 +327,9 @@ class BacklinkCache {
/**
* Partition a DB result with backlinks in it into batches
+ * @param $res ResultWrapper database result
+ * @param $batchSize integer
+ * @return array @see
*/
protected function partitionResult( $res, $batchSize ) {
$batches = array();
diff --git a/includes/BagOStuff.php b/includes/BagOStuff.php
deleted file mode 100644
index 63c96de7..00000000
--- a/includes/BagOStuff.php
+++ /dev/null
@@ -1,906 +0,0 @@
-<?php
-/**
- * Classes to cache objects in PHP accelerators, SQL database or DBA files
- *
- * Copyright © 2003-2004 Brion Vibber <brion@pobox.com>
- * http://www.mediawiki.org/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @file
- * @ingroup Cache
- */
-
-/**
- * @defgroup Cache Cache
- */
-
-/**
- * interface is intended to be more or less compatible with
- * the PHP memcached client.
- *
- * backends for local hash array and SQL table included:
- * <code>
- * $bag = new HashBagOStuff();
- * $bag = new SqlBagOStuff(); # connect to db first
- * </code>
- *
- * @ingroup Cache
- */
-abstract class BagOStuff {
- var $debugMode = false;
-
- public function set_debug( $bool ) {
- $this->debugMode = $bool;
- }
-
- /* *** THE GUTS OF THE OPERATION *** */
- /* Override these with functional things in subclasses */
-
- /**
- * Get an item with the given key. Returns false if it does not exist.
- * @param $key string
- */
- abstract public function get( $key );
-
- /**
- * Set an item.
- * @param $key string
- * @param $value mixed
- * @param $exptime int Either an interval in seconds or a unix timestamp for expiry
- */
- abstract public function set( $key, $value, $exptime = 0 );
-
- /*
- * Delete an item.
- * @param $key string
- * @param $time int Amount of time to delay the operation (mostly memcached-specific)
- */
- abstract public function delete( $key, $time = 0 );
-
- public function lock( $key, $timeout = 0 ) {
- /* stub */
- return true;
- }
-
- public function unlock( $key ) {
- /* stub */
- return true;
- }
-
- public function keys() {
- /* stub */
- return array();
- }
-
- /* *** Emulated functions *** */
- /* Better performance can likely be got with custom written versions */
- public function get_multi( $keys ) {
- $out = array();
-
- foreach ( $keys as $key ) {
- $out[$key] = $this->get( $key );
- }
-
- return $out;
- }
-
- public function set_multi( $hash, $exptime = 0 ) {
- foreach ( $hash as $key => $value ) {
- $this->set( $key, $value, $exptime );
- }
- }
-
- public function add( $key, $value, $exptime = 0 ) {
- if ( !$this->get( $key ) ) {
- $this->set( $key, $value, $exptime );
-
- return true;
- }
- }
-
- public function add_multi( $hash, $exptime = 0 ) {
- foreach ( $hash as $key => $value ) {
- $this->add( $key, $value, $exptime );
- }
- }
-
- public function delete_multi( $keys, $time = 0 ) {
- foreach ( $keys as $key ) {
- $this->delete( $key, $time );
- }
- }
-
- public function replace( $key, $value, $exptime = 0 ) {
- if ( $this->get( $key ) !== false ) {
- $this->set( $key, $value, $exptime );
- }
- }
-
- /**
- * @param $key String: Key to increase
- * @param $value Integer: Value to add to $key (Default 1)
- * @return null if lock is not possible else $key value increased by $value
- */
- public function incr( $key, $value = 1 ) {
- if ( !$this->lock( $key ) ) {
- return null;
- }
-
- $value = intval( $value );
-
- if ( ( $n = $this->get( $key ) ) !== false ) {
- $n += $value;
- $this->set( $key, $n ); // exptime?
- }
- $this->unlock( $key );
-
- return $n;
- }
-
- public function decr( $key, $value = 1 ) {
- return $this->incr( $key, - $value );
- }
-
- public function debug( $text ) {
- if ( $this->debugMode ) {
- wfDebug( "BagOStuff debug: $text\n" );
- }
- }
-
- /**
- * Convert an optionally relative time to an absolute time
- */
- protected function convertExpiry( $exptime ) {
- if ( ( $exptime != 0 ) && ( $exptime < 86400 * 3650 /* 10 years */ ) ) {
- return time() + $exptime;
- } else {
- return $exptime;
- }
- }
-}
-
-/**
- * Functional versions!
- * This is a test of the interface, mainly. It stores things in an associative
- * array, which is not going to persist between program runs.
- *
- * @ingroup Cache
- */
-class HashBagOStuff extends BagOStuff {
- var $bag;
-
- function __construct() {
- $this->bag = array();
- }
-
- protected function expire( $key ) {
- $et = $this->bag[$key][1];
-
- if ( ( $et == 0 ) || ( $et > time() ) ) {
- return false;
- }
-
- $this->delete( $key );
-
- return true;
- }
-
- function get( $key ) {
- if ( !isset( $this->bag[$key] ) ) {
- return false;
- }
-
- if ( $this->expire( $key ) ) {
- return false;
- }
-
- return $this->bag[$key][0];
- }
-
- function set( $key, $value, $exptime = 0 ) {
- $this->bag[$key] = array( $value, $this->convertExpiry( $exptime ) );
- }
-
- function delete( $key, $time = 0 ) {
- if ( !isset( $this->bag[$key] ) ) {
- return false;
- }
-
- unset( $this->bag[$key] );
-
- return true;
- }
-
- function keys() {
- return array_keys( $this->bag );
- }
-}
-
-/**
- * Class to store objects in the database
- *
- * @ingroup Cache
- */
-class SqlBagOStuff extends BagOStuff {
- var $lb, $db;
- var $lastExpireAll = 0;
-
- protected function getDB() {
- global $wgDBtype;
-
- if ( !isset( $this->db ) ) {
- /* We must keep a separate connection to MySQL in order to avoid deadlocks
- * However, SQLite has an opposite behaviour.
- * @todo Investigate behaviour for other databases
- */
- if ( $wgDBtype == 'sqlite' ) {
- $this->db = wfGetDB( DB_MASTER );
- } else {
- $this->lb = wfGetLBFactory()->newMainLB();
- $this->db = $this->lb->getConnection( DB_MASTER );
- $this->db->clearFlag( DBO_TRX );
- }
- }
-
- return $this->db;
- }
-
- public function get( $key ) {
- # expire old entries if any
- $this->garbageCollect();
- $db = $this->getDB();
- $row = $db->selectRow( 'objectcache', array( 'value', 'exptime' ),
- array( 'keyname' => $key ), __METHOD__ );
-
- if ( !$row ) {
- $this->debug( 'get: no matching rows' );
- return false;
- }
-
- $this->debug( "get: retrieved data; expiry time is " . $row->exptime );
-
- if ( $this->isExpired( $row->exptime ) ) {
- $this->debug( "get: key has expired, deleting" );
- try {
- $db->begin();
- # Put the expiry time in the WHERE condition to avoid deleting a
- # newly-inserted value
- $db->delete( 'objectcache',
- array(
- 'keyname' => $key,
- 'exptime' => $row->exptime
- ), __METHOD__ );
- $db->commit();
- } catch ( DBQueryError $e ) {
- $this->handleWriteError( $e );
- }
-
- return false;
- }
-
- return $this->unserialize( $db->decodeBlob( $row->value ) );
- }
-
- public function set( $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();
- // (bug 24425) use a replace if the db supports it instead of
- // delete/insert to avoid clashes with conflicting keynames
- $db->replace( 'objectcache', array( 'keyname' ),
- array(
- 'keyname' => $key,
- 'value' => $db->encodeBlob( $this->serialize( $value ) ),
- 'exptime' => $encExpiry
- ), __METHOD__ );
- $db->commit();
- } catch ( DBQueryError $e ) {
- $this->handleWriteError( $e );
-
- return false;
- }
-
- return true;
- }
-
- public function delete( $key, $time = 0 ) {
- $db = $this->getDB();
-
- try {
- $db->begin();
- $db->delete( 'objectcache', array( 'keyname' => $key ), __METHOD__ );
- $db->commit();
- } catch ( DBQueryError $e ) {
- $this->handleWriteError( $e );
-
- return false;
- }
-
- return true;
- }
-
- public function incr( $key, $step = 1 ) {
- $db = $this->getDB();
- $step = intval( $step );
-
- try {
- $db->begin();
- $row = $db->selectRow( 'objectcache', array( 'value', 'exptime' ),
- array( 'keyname' => $key ), __METHOD__, array( 'FOR UPDATE' ) );
- if ( $row === false ) {
- // Missing
- $db->commit();
-
- return null;
- }
- $db->delete( 'objectcache', array( 'keyname' => $key ), __METHOD__ );
- if ( $this->isExpired( $row->exptime ) ) {
- // Expired, do not reinsert
- $db->commit();
-
- return null;
- }
-
- $oldValue = intval( $this->unserialize( $db->decodeBlob( $row->value ) ) );
- $newValue = $oldValue + $step;
- $db->insert( 'objectcache',
- array(
- 'keyname' => $key,
- 'value' => $db->encodeBlob( $this->serialize( $newValue ) ),
- 'exptime' => $row->exptime
- ), __METHOD__, 'IGNORE' );
-
- if ( $db->affectedRows() == 0 ) {
- // Race condition. See bug 28611
- $newValue = null;
- }
- $db->commit();
- } catch ( DBQueryError $e ) {
- $this->handleWriteError( $e );
-
- return null;
- }
-
- return $newValue;
- }
-
- public function keys() {
- $db = $this->getDB();
- $res = $db->select( 'objectcache', array( 'keyname' ), false, __METHOD__ );
- $result = array();
-
- foreach ( $res as $row ) {
- $result[] = $row->keyname;
- }
-
- return $result;
- }
-
- protected function isExpired( $exptime ) {
- return $exptime != $this->getMaxDateTime() && wfTimestamp( TS_UNIX, $exptime ) < time();
- }
-
- protected function getMaxDateTime() {
- if ( time() > 0x7fffffff ) {
- return $this->getDB()->timestamp( 1 << 62 );
- } else {
- return $this->getDB()->timestamp( 0x7fffffff );
- }
- }
-
- protected function garbageCollect() {
- /* Ignore 99% of requests */
- if ( !mt_rand( 0, 100 ) ) {
- $now = time();
- /* Avoid repeating the delete within a few seconds */
- if ( $now > ( $this->lastExpireAll + 1 ) ) {
- $this->lastExpireAll = $now;
- $this->expireAll();
- }
- }
- }
-
- public function expireAll() {
- $db = $this->getDB();
- $now = $db->timestamp();
-
- try {
- $db->begin();
- $db->delete( 'objectcache', array( 'exptime < ' . $db->addQuotes( $now ) ), __METHOD__ );
- $db->commit();
- } catch ( DBQueryError $e ) {
- $this->handleWriteError( $e );
- }
- }
-
- public function deleteAll() {
- $db = $this->getDB();
-
- try {
- $db->begin();
- $db->delete( 'objectcache', '*', __METHOD__ );
- $db->commit();
- } catch ( DBQueryError $e ) {
- $this->handleWriteError( $e );
- }
- }
-
- /**
- * Serialize an object and, if possible, compress the representation.
- * On typical message and page data, this can provide a 3X decrease
- * in storage requirements.
- *
- * @param $data mixed
- * @return string
- */
- protected function serialize( &$data ) {
- $serial = serialize( $data );
-
- if ( function_exists( 'gzdeflate' ) ) {
- return gzdeflate( $serial );
- } else {
- return $serial;
- }
- }
-
- /**
- * Unserialize and, if necessary, decompress an object.
- * @param $serial string
- * @return mixed
- */
- protected function unserialize( $serial ) {
- if ( function_exists( 'gzinflate' ) ) {
- $decomp = @gzinflate( $serial );
-
- if ( false !== $decomp ) {
- $serial = $decomp;
- }
- }
-
- $ret = unserialize( $serial );
-
- return $ret;
- }
-
- /**
- * Handle a DBQueryError which occurred during a write operation.
- * Ignore errors which are due to a read-only database, rethrow others.
- */
- protected function handleWriteError( $exception ) {
- $db = $this->getDB();
-
- if ( !$db->wasReadOnlyError() ) {
- throw $exception;
- }
-
- try {
- $db->rollback();
- } catch ( DBQueryError $e ) {
- }
-
- wfDebug( __METHOD__ . ": ignoring query error\n" );
- $db->ignoreErrors( false );
- }
-}
-
-/**
- * Backwards compatibility alias
- */
-class MediaWikiBagOStuff extends SqlBagOStuff { }
-
-/**
- * This is a wrapper for APC's shared memory functions
- *
- * @ingroup Cache
- */
-class APCBagOStuff extends BagOStuff {
- public function get( $key ) {
- $val = apc_fetch( $key );
-
- if ( is_string( $val ) ) {
- $val = unserialize( $val );
- }
-
- return $val;
- }
-
- public function set( $key, $value, $exptime = 0 ) {
- apc_store( $key, serialize( $value ), $exptime );
-
- return true;
- }
-
- public function delete( $key, $time = 0 ) {
- apc_delete( $key );
-
- return true;
- }
-
- public function keys() {
- $info = apc_cache_info( 'user' );
- $list = $info['cache_list'];
- $keys = array();
-
- foreach ( $list as $entry ) {
- $keys[] = $entry['info'];
- }
-
- return $keys;
- }
-}
-
-/**
- * This is a wrapper for eAccelerator's shared memory functions.
- *
- * This is basically identical to the deceased Turck MMCache version,
- * mostly because eAccelerator is based on Turck MMCache.
- *
- * @ingroup Cache
- */
-class eAccelBagOStuff extends BagOStuff {
- public function get( $key ) {
- $val = eaccelerator_get( $key );
-
- if ( is_string( $val ) ) {
- $val = unserialize( $val );
- }
-
- return $val;
- }
-
- public function set( $key, $value, $exptime = 0 ) {
- eaccelerator_put( $key, serialize( $value ), $exptime );
-
- return true;
- }
-
- public function delete( $key, $time = 0 ) {
- eaccelerator_rm( $key );
-
- return true;
- }
-
- public function lock( $key, $waitTimeout = 0 ) {
- eaccelerator_lock( $key );
-
- return true;
- }
-
- public function unlock( $key ) {
- eaccelerator_unlock( $key );
-
- return true;
- }
-}
-
-/**
- * Wrapper for XCache object caching functions; identical interface
- * to the APC wrapper
- *
- * @ingroup Cache
- */
-class XCacheBagOStuff extends BagOStuff {
- /**
- * Get a value from the XCache object cache
- *
- * @param $key String: cache key
- * @return mixed
- */
- public function get( $key ) {
- $val = xcache_get( $key );
-
- if ( is_string( $val ) ) {
- $val = unserialize( $val );
- }
-
- return $val;
- }
-
- /**
- * Store a value in the XCache object cache
- *
- * @param $key String: cache key
- * @param $value Mixed: object to store
- * @param $expire Int: expiration time
- * @return bool
- */
- public function set( $key, $value, $expire = 0 ) {
- xcache_set( $key, serialize( $value ), $expire );
-
- return true;
- }
-
- /**
- * Remove a value from the XCache object cache
- *
- * @param $key String: cache key
- * @param $time Int: not used in this implementation
- * @return bool
- */
- public function delete( $key, $time = 0 ) {
- xcache_unset( $key );
-
- return true;
- }
-}
-
-/**
- * Cache that uses DBA as a backend.
- * Slow due to the need to constantly open and close the file to avoid holding
- * writer locks. Intended for development use only, as a memcached workalike
- * for systems that don't have it.
- *
- * @ingroup Cache
- */
-class DBABagOStuff extends BagOStuff {
- var $mHandler, $mFile, $mReader, $mWriter, $mDisabled;
-
- public function __construct( $dir = false ) {
- global $wgDBAhandler;
-
- if ( $dir === false ) {
- global $wgTmpDirectory;
- $dir = $wgTmpDirectory;
- }
-
- $this->mFile = "$dir/mw-cache-" . wfWikiID();
- $this->mFile .= '.db';
- wfDebug( __CLASS__ . ": using cache file {$this->mFile}\n" );
- $this->mHandler = $wgDBAhandler;
- }
-
- /**
- * Encode value and expiry for storage
- */
- function encode( $value, $expiry ) {
- # Convert to absolute time
- $expiry = $this->convertExpiry( $expiry );
-
- return sprintf( '%010u', intval( $expiry ) ) . ' ' . serialize( $value );
- }
-
- /**
- * @return list containing value first and expiry second
- */
- function decode( $blob ) {
- if ( !is_string( $blob ) ) {
- return array( null, 0 );
- } else {
- return array(
- unserialize( substr( $blob, 11 ) ),
- intval( substr( $blob, 0, 10 ) )
- );
- }
- }
-
- function getReader() {
- if ( file_exists( $this->mFile ) ) {
- $handle = dba_open( $this->mFile, 'rl', $this->mHandler );
- } else {
- $handle = $this->getWriter();
- }
-
- if ( !$handle ) {
- wfDebug( "Unable to open DBA cache file {$this->mFile}\n" );
- }
-
- return $handle;
- }
-
- function getWriter() {
- $handle = dba_open( $this->mFile, 'cl', $this->mHandler );
-
- if ( !$handle ) {
- wfDebug( "Unable to open DBA cache file {$this->mFile}\n" );
- }
-
- return $handle;
- }
-
- function get( $key ) {
- wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__ . "($key)\n" );
-
- $handle = $this->getReader();
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return null;
- }
-
- $val = dba_fetch( $key, $handle );
- list( $val, $expiry ) = $this->decode( $val );
-
- # Must close ASAP because locks are held
- dba_close( $handle );
-
- if ( !is_null( $val ) && $expiry && $expiry < time() ) {
- # Key is expired, delete it
- $handle = $this->getWriter();
- dba_delete( $key, $handle );
- dba_close( $handle );
- wfDebug( __METHOD__ . ": $key expired\n" );
- $val = null;
- }
-
- wfProfileOut( __METHOD__ );
- return $val;
- }
-
- function set( $key, $value, $exptime = 0 ) {
- wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__ . "($key)\n" );
-
- $blob = $this->encode( $value, $exptime );
-
- $handle = $this->getWriter();
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $ret = dba_replace( $key, $blob, $handle );
- dba_close( $handle );
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- function delete( $key, $time = 0 ) {
- wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__ . "($key)\n" );
-
- $handle = $this->getWriter();
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $ret = dba_delete( $key, $handle );
- dba_close( $handle );
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- function add( $key, $value, $exptime = 0 ) {
- wfProfileIn( __METHOD__ );
-
- $blob = $this->encode( $value, $exptime );
-
- $handle = $this->getWriter();
-
- if ( !$handle ) {
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- $ret = dba_insert( $key, $blob, $handle );
-
- # Insert failed, check to see if it failed due to an expired key
- if ( !$ret ) {
- list( $value, $expiry ) = $this->decode( dba_fetch( $key, $handle ) );
-
- if ( $expiry < time() ) {
- # Yes expired, delete and try again
- dba_delete( $key, $handle );
- $ret = dba_insert( $key, $blob, $handle );
- # This time if it failed then it will be handled by the caller like any other race
- }
- }
-
- dba_close( $handle );
-
- wfProfileOut( __METHOD__ );
- return $ret;
- }
-
- function keys() {
- $reader = $this->getReader();
- $k1 = dba_firstkey( $reader );
-
- if ( !$k1 ) {
- return array();
- }
-
- $result[] = $k1;
-
- while ( $key = dba_nextkey( $reader ) ) {
- $result[] = $key;
- }
-
- return $result;
- }
-}
-
-/**
- * Wrapper for WinCache object caching functions; identical interface
- * to the APC wrapper
- *
- * @ingroup Cache
- */
-class WinCacheBagOStuff extends BagOStuff {
-
- /**
- * Get a value from the WinCache object cache
- *
- * @param $key String: cache key
- * @return mixed
- */
- public function get( $key ) {
- $val = wincache_ucache_get( $key );
-
- if ( is_string( $val ) ) {
- $val = unserialize( $val );
- }
-
- return $val;
- }
-
- /**
- * Store a value in the WinCache object cache
- *
- * @param $key String: cache key
- * @param $value Mixed: object to store
- * @param $expire Int: expiration time
- * @return bool
- */
- public function set( $key, $value, $expire = 0 ) {
- wincache_ucache_set( $key, serialize( $value ), $expire );
-
- return true;
- }
-
- /**
- * Remove a value from the WinCache object cache
- *
- * @param $key String: cache key
- * @param $time Int: not used in this implementation
- * @return bool
- */
- public function delete( $key, $time = 0 ) {
- wincache_ucache_delete( $key );
-
- return true;
- }
-
- public function keys() {
- $info = wincache_ucache_info();
- $list = $info['ucache_entries'];
- $keys = array();
-
- foreach ( $list as $entry ) {
- $keys[] = $entry['key_name'];
- }
-
- return $keys;
- }
-}
diff --git a/includes/Block.php b/includes/Block.php
index 7c5f0ddd..27181d86 100644
--- a/includes/Block.php
+++ b/includes/Block.php
@@ -1,53 +1,93 @@
<?php
/**
- * @file
* Blocks and bans object
- */
-
-/**
- * The block class
- * All the functions in this class assume the object is either explicitly
- * loaded or filled. It is not load-on-demand. There are no accessors.
*
- * Globals used: $wgAutoblockExpiry, $wgAntiLockFlags
+ * 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.
*
- * @todo This could be used everywhere, but it isn't.
+ * 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 Block {
- /* public*/ var $mAddress, $mUser, $mBy, $mReason, $mTimestamp, $mAuto, $mId, $mExpiry,
- $mRangeStart, $mRangeEnd, $mAnonOnly, $mEnableAutoblock, $mHideName,
- $mBlockEmail, $mByName, $mAngryAutoblock, $mAllowUsertalk;
- /* private */ var $mNetworkBits, $mIntegerAddr, $mForUpdate, $mFromMaster;
+ /* public*/ var $mReason, $mTimestamp, $mAuto, $mExpiry, $mHideName;
+
+ protected
+ $mId,
+ $mFromMaster,
- const EB_KEEP_EXPIRED = 1;
- const EB_FOR_UPDATE = 2;
- const EB_RANGE_ONLY = 4;
+ $mBlockEmail,
+ $mDisableUsertalk,
+ $mCreateAccount;
+ /// @var User|String
+ protected $target;
+
+ /// @var Block::TYPE_ constant. Can only be USER, IP or RANGE internally
+ protected $type;
+
+ /// @var User
+ protected $blocker;
+
+ /// @var Bool
+ protected $isHardblock = true;
+
+ /// @var Bool
+ protected $isAutoblocking = true;
+
+ # TYPE constants
+ const TYPE_USER = 1;
+ const TYPE_IP = 2;
+ const TYPE_RANGE = 3;
+ const TYPE_AUTO = 4;
+ const TYPE_ID = 5;
+
+ /**
+ * Constructor
+ * @todo FIXME: Don't know what the best format to have for this constructor is, but fourteen
+ * optional parameters certainly isn't it.
+ */
function __construct( $address = '', $user = 0, $by = 0, $reason = '',
$timestamp = 0, $auto = 0, $expiry = '', $anonOnly = 0, $createAccount = 0, $enableAutoblock = 0,
- $hideName = 0, $blockEmail = 0, $allowUsertalk = 0, $byName = false )
+ $hideName = 0, $blockEmail = 0, $allowUsertalk = 0 )
{
- $this->mId = 0;
- # Expand valid IPv6 addresses
- $address = IP::sanitizeIP( $address );
- $this->mAddress = $address;
- $this->mUser = $user;
- $this->mBy = $by;
+ if( $timestamp === 0 ){
+ $timestamp = wfTimestampNow();
+ }
+
+ if( count( func_get_args() ) > 0 ){
+ # Soon... :D
+ # wfDeprecated( __METHOD__ . " with arguments" );
+ }
+
+ $this->setTarget( $address );
+ $this->setBlocker( User::newFromID( $by ) );
$this->mReason = $reason;
$this->mTimestamp = wfTimestamp( TS_MW, $timestamp );
$this->mAuto = $auto;
- $this->mAnonOnly = $anonOnly;
- $this->mCreateAccount = $createAccount;
- $this->mExpiry = self::decodeExpiry( $expiry );
- $this->mEnableAutoblock = $enableAutoblock;
+ $this->isHardblock( !$anonOnly );
+ $this->prevents( 'createaccount', $createAccount );
+ if ( $expiry == 'infinity' || $expiry == Block::infinity() ) {
+ $this->mExpiry = 'infinity';
+ } else {
+ $this->mExpiry = wfTimestamp( TS_MW, $expiry );
+ }
+ $this->isAutoblocking( $enableAutoblock );
$this->mHideName = $hideName;
- $this->mBlockEmail = $blockEmail;
- $this->mAllowUsertalk = $allowUsertalk;
- $this->mForUpdate = false;
+ $this->prevents( 'sendemail', $blockEmail );
+ $this->prevents( 'editownusertalk', !$allowUsertalk );
+
$this->mFromMaster = false;
- $this->mByName = $byName;
- $this->mAngryAutoblock = false;
- $this->initialiseRange();
}
/**
@@ -57,56 +97,54 @@ class Block {
*
* @param $address String: IP address of user/anon
* @param $user Integer: user id of user
- * @param $killExpired Boolean: delete expired blocks on load
* @return Block Object
+ * @deprecated since 1.18
*/
- public static function newFromDB( $address, $user = 0, $killExpired = true ) {
- $block = new Block;
- $block->load( $address, $user, $killExpired );
-
- if ( $block->isValid() ) {
- return $block;
- } else {
- return null;
- }
+ public static function newFromDB( $address, $user = 0 ) {
+ return self::newFromTarget( User::whoIs( $user ), $address );
}
/**
* Load a blocked user from their block id.
*
* @param $id Integer: Block id to search for
- * @return Block object
+ * @return Block object or null
*/
public static function newFromID( $id ) {
$dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->resultObject( $dbr->select( 'ipblocks', '*',
- array( 'ipb_id' => $id ), __METHOD__ ) );
- $block = new Block;
-
- if ( $block->loadFromResult( $res ) ) {
- return $block;
+ $res = $dbr->selectRow(
+ 'ipblocks',
+ '*',
+ array( 'ipb_id' => $id ),
+ __METHOD__
+ );
+ if ( $res ) {
+ return Block::newFromRow( $res );
} else {
return null;
}
}
/**
- * Check if two blocks are effectively equal
+ * Check if two blocks are effectively equal. Doesn't check irrelevant things like
+ * the blocking user or the block timestamp, only things which affect the blocked user *
*
- * @return Boolean
+ * @param $block Block
+ *
+ * @return bool
*/
public function equals( Block $block ) {
return (
- $this->mAddress == $block->mAddress
- && $this->mUser == $block->mUser
+ (string)$this->target == (string)$block->target
+ && $this->type == $block->type
&& $this->mAuto == $block->mAuto
- && $this->mAnonOnly == $block->mAnonOnly
- && $this->mCreateAccount == $block->mCreateAccount
+ && $this->isHardblock() == $block->isHardblock()
+ && $this->prevents( 'createaccount' ) == $block->prevents( 'createaccount' )
&& $this->mExpiry == $block->mExpiry
- && $this->mEnableAutoblock == $block->mEnableAutoblock
+ && $this->isAutoblocking() == $block->isAutoblocking()
&& $this->mHideName == $block->mHideName
- && $this->mBlockEmail == $block->mBlockEmail
- && $this->mAllowUsertalk == $block->mAllowUsertalk
+ && $this->prevents( 'sendemail' ) == $block->prevents( 'sendemail' )
+ && $this->prevents( 'editownusertalk' ) == $block->prevents( 'editownusertalk' )
&& $this->mReason == $block->mReason
);
}
@@ -114,251 +152,232 @@ class Block {
/**
* Clear all member variables in the current object. Does not clear
* the block from the DB.
+ * @deprecated since 1.18
*/
public function clear() {
- $this->mAddress = $this->mReason = $this->mTimestamp = '';
- $this->mId = $this->mAnonOnly = $this->mCreateAccount =
- $this->mEnableAutoblock = $this->mAuto = $this->mUser =
- $this->mBy = $this->mHideName = $this->mBlockEmail = $this->mAllowUsertalk = 0;
- $this->mByName = false;
+ # Noop
}
/**
- * Get the DB object and set the reference parameter to the select options.
- * The options array will contain FOR UPDATE if appropriate.
+ * Get a block from the DB, with either the given address or the given username
*
- * @param $options Array
- * @return Database
+ * @param $address string The IP address of the user, or blank to skip IP blocks
+ * @param $user int The user ID, or zero for anonymous users
+ * @return Boolean: the user is blocked from editing
+ * @deprecated since 1.18
*/
- protected function &getDBOptions( &$options ) {
- global $wgAntiLockFlags;
+ public function load( $address = '', $user = 0 ) {
+ wfDeprecated( __METHOD__ );
+ if( $user ){
+ $username = User::whoIs( $user );
+ $block = self::newFromTarget( $username, $address );
+ } else {
+ $block = self::newFromTarget( null, $address );
+ }
- if ( $this->mForUpdate || $this->mFromMaster ) {
- $db = wfGetDB( DB_MASTER );
- if ( !$this->mForUpdate || ( $wgAntiLockFlags & ALF_NO_BLOCK_LOCK ) ) {
- $options = array();
- } else {
- $options = array( 'FOR UPDATE' );
+ if( $block instanceof Block ){
+ # This is mildly evil, but hey, it's B/C :D
+ foreach( $block as $variable => $value ){
+ $this->$variable = $value;
}
+ return true;
} else {
- $db = wfGetDB( DB_SLAVE );
- $options = array();
+ return false;
}
-
- return $db;
}
/**
- * Get a block from the DB, with either the given address or the given username
- *
- * @param $address string The IP address of the user, or blank to skip IP blocks
- * @param $user int The user ID, or zero for anonymous users
- * @param $killExpired bool Whether to delete expired rows while loading
- * @return Boolean: the user is blocked from editing
- *
+ * Load a block from the database which affects the already-set $this->target:
+ * 1) A block directly on the given user or IP
+ * 2) A rangeblock encompasing the given IP (smallest first)
+ * 3) An autoblock on the given IP
+ * @param $vagueTarget User|String also search for blocks affecting this target. Doesn't
+ * make any sense to use TYPE_AUTO / TYPE_ID here. Leave blank to skip IP lookups.
+ * @return Bool whether a relevant block was found
*/
- public function load( $address = '', $user = 0, $killExpired = true ) {
- wfDebug( "Block::load: '$address', '$user', $killExpired\n" );
+ protected function newLoad( $vagueTarget = null ) {
+ $db = wfGetDB( $this->mFromMaster ? DB_MASTER : DB_SLAVE );
- $options = array();
- $db = $this->getDBOptions( $options );
-
- if ( 0 == $user && $address === '' ) {
- # Invalid user specification, not blocked
- $this->clear();
-
- return false;
+ if( $this->type !== null ){
+ $conds = array(
+ 'ipb_address' => array( (string)$this->target ),
+ );
+ } else {
+ $conds = array( 'ipb_address' => array() );
}
- # Try user block
- if ( $user ) {
- $res = $db->resultObject( $db->select( 'ipblocks', '*', array( 'ipb_user' => $user ),
- __METHOD__, $options ) );
-
- if ( $this->loadFromResult( $res, $killExpired ) ) {
- return true;
+ # Be aware that the != '' check is explicit, since empty values will be
+ # passed by some callers (bug 29116)
+ if( $vagueTarget != ''){
+ list( $target, $type ) = self::parseTarget( $vagueTarget );
+ switch( $type ) {
+ case self::TYPE_USER:
+ # Slightly wierd, but who are we to argue?
+ $conds['ipb_address'][] = (string)$target;
+ break;
+
+ case self::TYPE_IP:
+ $conds['ipb_address'][] = (string)$target;
+ $conds[] = self::getRangeCond( IP::toHex( $target ) );
+ $conds = $db->makeList( $conds, LIST_OR );
+ break;
+
+ case self::TYPE_RANGE:
+ list( $start, $end ) = IP::parseRange( $target );
+ $conds['ipb_address'][] = (string)$target;
+ $conds[] = self::getRangeCond( $start, $end );
+ $conds = $db->makeList( $conds, LIST_OR );
+ break;
+
+ default:
+ throw new MWException( "Tried to load block with invalid type" );
}
}
- # Try IP block
- # TODO: improve performance by merging this query with the autoblock one
- # Slightly tricky while handling killExpired as well
- if ( $address !== '' ) {
- $conds = array( 'ipb_address' => $address, 'ipb_auto' => 0 );
- $res = $db->resultObject( $db->select( 'ipblocks', '*', $conds, __METHOD__, $options ) );
-
- if ( $this->loadFromResult( $res, $killExpired ) ) {
- if ( $user && $this->mAnonOnly ) {
- # Block is marked anon-only
- # Whitelist this IP address against autoblocks and range blocks
- # (but not account creation blocks -- bug 13611)
- if ( !$this->mCreateAccount ) {
- $this->clear();
- }
-
- return false;
- } else {
- return true;
- }
- }
- }
+ $res = $db->select( 'ipblocks', '*', $conds, __METHOD__ );
- # Try range block
- if ( $this->loadRange( $address, $killExpired, $user ) ) {
- if ( $user && $this->mAnonOnly ) {
- # Respect account creation blocks on logged-in users -- bug 13611
- if ( !$this->mCreateAccount ) {
- $this->clear();
- }
+ # This result could contain a block on the user, a block on the IP, and a russian-doll
+ # set of rangeblocks. We want to choose the most specific one, so keep a leader board.
+ $bestRow = null;
- return false;
- } else {
- return true;
- }
- }
+ # Lower will be better
+ $bestBlockScore = 100;
- # Try autoblock
- if ( $address ) {
- $conds = array( 'ipb_address' => $address, 'ipb_auto' => 1 );
+ # This is begging for $this = $bestBlock, but that's not allowed in PHP :(
+ $bestBlockPreventsEdit = null;
- if ( $user ) {
- $conds['ipb_anon_only'] = 0;
- }
+ foreach( $res as $row ){
+ $block = Block::newFromRow( $row );
- $res = $db->resultObject( $db->select( 'ipblocks', '*', $conds, __METHOD__, $options ) );
+ # Don't use expired blocks
+ if( $block->deleteIfExpired() ){
+ continue;
+ }
- if ( $this->loadFromResult( $res, $killExpired ) ) {
- return true;
+ # Don't use anon only blocks on users
+ if( $this->type == self::TYPE_USER && !$block->isHardblock() ){
+ continue;
}
- }
- # Give up
- $this->clear();
- return false;
- }
+ if( $block->getType() == self::TYPE_RANGE ){
+ # This is the number of bits that are allowed to vary in the block, give
+ # or take some floating point errors
+ $end = wfBaseconvert( $block->getRangeEnd(), 16, 10 );
+ $start = wfBaseconvert( $block->getRangeStart(), 16, 10 );
+ $size = log( $end - $start + 1, 2 );
+
+ # This has the nice property that a /32 block is ranked equally with a
+ # single-IP block, which is exactly what it is...
+ $score = self::TYPE_RANGE - 1 + ( $size / 128 );
- /**
- * Fill in member variables from a result wrapper
- *
- * @param $res ResultWrapper: row from the ipblocks table
- * @param $killExpired Boolean: whether to delete expired rows while loading
- * @return Boolean
- */
- protected function loadFromResult( ResultWrapper $res, $killExpired = true ) {
- $ret = false;
-
- if ( 0 != $res->numRows() ) {
- # Get first block
- $row = $res->fetchObject();
- $this->initFromRow( $row );
-
- if ( $killExpired ) {
- # If requested, delete expired rows
- do {
- $killed = $this->deleteIfExpired();
- if ( $killed ) {
- $row = $res->fetchObject();
- if ( $row ) {
- $this->initFromRow( $row );
- }
- }
- } while ( $killed && $row );
-
- # If there were any left after the killing finished, return true
- if ( $row ) {
- $ret = true;
- }
} else {
- $ret = true;
+ $score = $block->getType();
+ }
+
+ if( $score < $bestBlockScore ){
+ $bestBlockScore = $score;
+ $bestRow = $row;
+ $bestBlockPreventsEdit = $block->prevents( 'edit' );
}
}
- $res->free();
- return $ret;
+ if( $bestRow !== null ){
+ $this->initFromRow( $bestRow );
+ $this->prevents( 'edit', $bestBlockPreventsEdit );
+ return true;
+ } else {
+ return false;
+ }
}
/**
- * Search the database for any range blocks matching the given address, and
- * load the row if one is found.
- *
- * @param $address String: IP address range
- * @param $killExpired Boolean: whether to delete expired rows while loading
- * @param $user Integer: if not 0, then sets ipb_anon_only
- * @return Boolean
+ * Get a set of SQL conditions which will select rangeblocks encompasing a given range
+ * @param $start String Hexadecimal IP representation
+ * @param $end String Hexadecimal IP represenation, or null to use $start = $end
+ * @return String
*/
- public function loadRange( $address, $killExpired = true, $user = 0 ) {
- $iaddr = IP::toHex( $address );
-
- if ( $iaddr === false ) {
- # Invalid address
- return false;
+ public static function getRangeCond( $start, $end = null ) {
+ if ( $end === null ) {
+ $end = $start;
}
+ # Per bug 14634, we want to include relevant active rangeblocks; for
+ # rangeblocks, we want to include larger ranges which enclose the given
+ # range. We know that all blocks must be smaller than $wgBlockCIDRLimit,
+ # so we can improve performance by filtering on a LIKE clause
+ $chunk = self::getIpFragment( $start );
+ $dbr = wfGetDB( DB_SLAVE );
+ $like = $dbr->buildLike( $chunk, $dbr->anyString() );
- # Only scan ranges which start in this /16, this improves search speed
- # Blocks should not cross a /16 boundary.
- $range = substr( $iaddr, 0, 4 );
+ # Fairly hard to make a malicious SQL statement out of hex characters,
+ # but stranger things have happened...
+ $safeStart = $dbr->addQuotes( $start );
+ $safeEnd = $dbr->addQuotes( $end );
- $options = array();
- $db = $this->getDBOptions( $options );
- $conds = array(
- 'ipb_range_start' . $db->buildLike( $range, $db->anyString() ),
- "ipb_range_start <= '$iaddr'",
- "ipb_range_end >= '$iaddr'"
+ return $dbr->makeList(
+ array(
+ "ipb_range_start $like",
+ "ipb_range_start <= $safeStart",
+ "ipb_range_end >= $safeEnd",
+ ),
+ LIST_AND
);
+ }
- if ( $user ) {
- $conds['ipb_anon_only'] = 0;
+ /**
+ * Get the component of an IP address which is certain to be the same between an IP
+ * address and a rangeblock containing that IP address.
+ * @param $hex String Hexadecimal IP representation
+ * @return String
+ */
+ protected static function getIpFragment( $hex ) {
+ global $wgBlockCIDRLimit;
+ if ( substr( $hex, 0, 3 ) == 'v6-' ) {
+ return 'v6-' . substr( substr( $hex, 3 ), 0, floor( $wgBlockCIDRLimit['IPv6'] / 4 ) );
+ } else {
+ return substr( $hex, 0, floor( $wgBlockCIDRLimit['IPv4'] / 4 ) );
}
-
- $res = $db->resultObject( $db->select( 'ipblocks', '*', $conds, __METHOD__, $options ) );
- $success = $this->loadFromResult( $res, $killExpired );
-
- return $success;
}
/**
* Given a database row from the ipblocks table, initialize
* member variables
- *
* @param $row ResultWrapper: a row from the ipblocks table
*/
- public function initFromRow( $row ) {
- $this->mAddress = $row->ipb_address;
+ protected function initFromRow( $row ) {
+ $this->setTarget( $row->ipb_address );
+ $this->setBlocker( User::newFromId( $row->ipb_by ) );
+
$this->mReason = $row->ipb_reason;
$this->mTimestamp = wfTimestamp( TS_MW, $row->ipb_timestamp );
- $this->mUser = $row->ipb_user;
- $this->mBy = $row->ipb_by;
$this->mAuto = $row->ipb_auto;
- $this->mAnonOnly = $row->ipb_anon_only;
- $this->mCreateAccount = $row->ipb_create_account;
- $this->mEnableAutoblock = $row->ipb_enable_autoblock;
- $this->mBlockEmail = $row->ipb_block_email;
- $this->mAllowUsertalk = $row->ipb_allow_usertalk;
$this->mHideName = $row->ipb_deleted;
$this->mId = $row->ipb_id;
- $this->mExpiry = self::decodeExpiry( $row->ipb_expiry );
- if ( isset( $row->user_name ) ) {
- $this->mByName = $row->user_name;
+ // I wish I didn't have to do this
+ $db = wfGetDB( DB_SLAVE );
+ if ( $row->ipb_expiry == $db->getInfinity() ) {
+ $this->mExpiry = 'infinity';
} else {
- $this->mByName = $row->ipb_by_text;
+ $this->mExpiry = wfTimestamp( TS_MW, $row->ipb_expiry );
}
- $this->mRangeStart = $row->ipb_range_start;
- $this->mRangeEnd = $row->ipb_range_end;
+ $this->isHardblock( !$row->ipb_anon_only );
+ $this->isAutoblocking( $row->ipb_enable_autoblock );
+
+ $this->prevents( 'createaccount', $row->ipb_create_account );
+ $this->prevents( 'sendemail', $row->ipb_block_email );
+ $this->prevents( 'editownusertalk', !$row->ipb_allow_usertalk );
}
/**
- * Once $mAddress has been set, get the range they came from.
- * Wrapper for IP::parseRange
+ * Create a new Block object from a database row
+ * @param $row ResultWrapper row from the ipblocks table
+ * @return Block
*/
- protected function initialiseRange() {
- $this->mRangeStart = '';
- $this->mRangeEnd = '';
-
- if ( $this->mUser == 0 ) {
- list( $this->mRangeStart, $this->mRangeEnd ) = IP::parseRange( $this->mAddress );
- }
+ public static function newFromRow( $row ){
+ $block = new Block;
+ $block->initFromRow( $row );
+ return $block;
}
/**
@@ -371,12 +390,12 @@ class Block {
return false;
}
- if ( !$this->mId ) {
- throw new MWException( "Block::delete() now requires that the mId member be filled\n" );
+ if ( !$this->getId() ) {
+ throw new MWException( "Block::delete() requires that the mId member be filled\n" );
}
$dbw = wfGetDB( DB_MASTER );
- $dbw->delete( 'ipblocks', array( 'ipb_id' => $this->mId ), __METHOD__ );
+ $dbw->delete( 'ipblocks', array( 'ipb_id' => $this->getId() ), __METHOD__ );
return $dbw->affectedRows() > 0;
}
@@ -385,16 +404,16 @@ class Block {
* Insert a block into the block table. Will fail if there is a conflicting
* block (same name and options) already in the database.
*
- * @return Boolean: whether or not the insertion was successful.
+ * @param $dbw DatabaseBase if you have one available
+ * @return mixed: false on failure, assoc array on success:
+ * ('id' => block ID, 'autoIds' => array of autoblock IDs)
*/
public function insert( $dbw = null ) {
wfDebug( "Block::insert; timestamp {$this->mTimestamp}\n" );
- if ( $dbw === null )
+ if ( $dbw === null ) {
$dbw = wfGetDB( DB_MASTER );
-
- $this->validateBlockParams();
- $this->initialiseRange();
+ }
# Don't collide with expired blocks
Block::purgeExpired();
@@ -402,139 +421,125 @@ class Block {
$ipb_id = $dbw->nextSequenceValue( 'ipblocks_ipb_id_seq' );
$dbw->insert(
'ipblocks',
- array(
- 'ipb_id' => $ipb_id,
- 'ipb_address' => $this->mAddress,
- 'ipb_user' => $this->mUser,
- 'ipb_by' => $this->mBy,
- 'ipb_by_text' => $this->mByName,
- 'ipb_reason' => $this->mReason,
- 'ipb_timestamp' => $dbw->timestamp( $this->mTimestamp ),
- 'ipb_auto' => $this->mAuto,
- 'ipb_anon_only' => $this->mAnonOnly,
- 'ipb_create_account' => $this->mCreateAccount,
- 'ipb_enable_autoblock' => $this->mEnableAutoblock,
- 'ipb_expiry' => self::encodeExpiry( $this->mExpiry, $dbw ),
- 'ipb_range_start' => $this->mRangeStart,
- 'ipb_range_end' => $this->mRangeEnd,
- 'ipb_deleted' => intval( $this->mHideName ), // typecast required for SQLite
- 'ipb_block_email' => $this->mBlockEmail,
- 'ipb_allow_usertalk' => $this->mAllowUsertalk
- ),
- 'Block::insert',
+ $this->getDatabaseArray(),
+ __METHOD__,
array( 'IGNORE' )
);
$affected = $dbw->affectedRows();
+ $this->mId = $dbw->insertId();
- if ( $affected )
- $this->doRetroactiveAutoblock();
+ if ( $affected ) {
+ $auto_ipd_ids = $this->doRetroactiveAutoblock();
+ return array( 'id' => $this->mId, 'autoIds' => $auto_ipd_ids );
+ }
- return (bool)$affected;
+ return false;
}
/**
* Update a block in the DB with new parameters.
* The ID field needs to be loaded first.
+ *
+ * @return Int number of affected rows, which should probably be 1 or something's
+ * gone slightly awry
*/
public function update() {
wfDebug( "Block::update; timestamp {$this->mTimestamp}\n" );
$dbw = wfGetDB( DB_MASTER );
- $this->validateBlockParams();
-
$dbw->update(
'ipblocks',
- array(
- 'ipb_user' => $this->mUser,
- 'ipb_by' => $this->mBy,
- 'ipb_by_text' => $this->mByName,
- 'ipb_reason' => $this->mReason,
- 'ipb_timestamp' => $dbw->timestamp( $this->mTimestamp ),
- 'ipb_auto' => $this->mAuto,
- 'ipb_anon_only' => $this->mAnonOnly,
- 'ipb_create_account' => $this->mCreateAccount,
- 'ipb_enable_autoblock' => $this->mEnableAutoblock,
- 'ipb_expiry' => self::encodeExpiry( $this->mExpiry, $dbw ),
- 'ipb_range_start' => $this->mRangeStart,
- 'ipb_range_end' => $this->mRangeEnd,
- 'ipb_deleted' => $this->mHideName,
- 'ipb_block_email' => $this->mBlockEmail,
- 'ipb_allow_usertalk' => $this->mAllowUsertalk
- ),
- array( 'ipb_id' => $this->mId ),
- 'Block::update'
+ $this->getDatabaseArray( $dbw ),
+ array( 'ipb_id' => $this->getId() ),
+ __METHOD__
);
return $dbw->affectedRows();
}
/**
- * Make sure all the proper members are set to sane values
- * before adding/updating a block
+ * Get an array suitable for passing to $dbw->insert() or $dbw->update()
+ * @param $db DatabaseBase
+ * @return Array
*/
- protected function validateBlockParams() {
- # Unset ipb_anon_only for user blocks, makes no sense
- if ( $this->mUser ) {
- $this->mAnonOnly = 0;
+ protected function getDatabaseArray( $db = null ){
+ if( !$db ){
+ $db = wfGetDB( DB_SLAVE );
}
+ $expiry = $db->encodeExpiry( $this->mExpiry );
+
+ $a = array(
+ 'ipb_address' => (string)$this->target,
+ 'ipb_user' => $this->target instanceof User ? $this->target->getID() : 0,
+ 'ipb_by' => $this->getBlocker()->getId(),
+ 'ipb_by_text' => $this->getBlocker()->getName(),
+ 'ipb_reason' => $this->mReason,
+ 'ipb_timestamp' => $db->timestamp( $this->mTimestamp ),
+ 'ipb_auto' => $this->mAuto,
+ 'ipb_anon_only' => !$this->isHardblock(),
+ 'ipb_create_account' => $this->prevents( 'createaccount' ),
+ 'ipb_enable_autoblock' => $this->isAutoblocking(),
+ 'ipb_expiry' => $expiry,
+ 'ipb_range_start' => $this->getRangeStart(),
+ 'ipb_range_end' => $this->getRangeEnd(),
+ 'ipb_deleted' => intval( $this->mHideName ), // typecast required for SQLite
+ 'ipb_block_email' => $this->prevents( 'sendemail' ),
+ 'ipb_allow_usertalk' => !$this->prevents( 'editownusertalk' )
+ );
- # Unset ipb_enable_autoblock for IP blocks, makes no sense
- if ( !$this->mUser ) {
- $this->mEnableAutoblock = 0;
- }
+ return $a;
+ }
- # bug 18860: non-anon-only IP blocks should be allowed to block email
- if ( !$this->mUser && $this->mAnonOnly ) {
- $this->mBlockEmail = 0;
- }
+ /**
+ * Retroactively autoblocks the last IP used by the user (if it is a user)
+ * blocked by this Block.
+ *
+ * @return Array: block IDs of retroactive autoblocks made
+ */
+ protected function doRetroactiveAutoblock() {
+ $blockIds = array();
+ # If autoblock is enabled, autoblock the LAST IP(s) used
+ if ( $this->isAutoblocking() && $this->getType() == self::TYPE_USER ) {
+ wfDebug( "Doing retroactive autoblocks for " . $this->getTarget() . "\n" );
- if ( !$this->mByName ) {
- if ( $this->mBy ) {
- $this->mByName = User::whoIs( $this->mBy );
- } else {
- global $wgUser;
- $this->mByName = $wgUser->getName();
+ $continue = wfRunHooks(
+ 'PerformRetroactiveAutoblock', array( $this, &$blockIds ) );
+
+ if ( $continue ) {
+ self::defaultRetroactiveAutoblock( $this, $blockIds );
}
}
+ return $blockIds;
}
/**
* Retroactively autoblocks the last IP used by the user (if it is a user)
- * blocked by this Block.
+ * blocked by this Block. This will use the recentchanges table.
*
- * @return Boolean: whether or not a retroactive autoblock was made.
+ * @param Block $block
+ * @param Array &$blockIds
+ * @return Array: block IDs of retroactive autoblocks made
*/
- public function doRetroactiveAutoblock() {
+ protected static function defaultRetroactiveAutoblock( Block $block, array &$blockIds ) {
$dbr = wfGetDB( DB_SLAVE );
- # If autoblock is enabled, autoblock the LAST IP used
- # - stolen shamelessly from CheckUser_body.php
- if ( $this->mEnableAutoblock && $this->mUser ) {
- wfDebug( "Doing retroactive autoblocks for " . $this->mAddress . "\n" );
+ $options = array( 'ORDER BY' => 'rc_timestamp DESC' );
+ $conds = array( 'rc_user_text' => (string)$block->getTarget() );
- $options = array( 'ORDER BY' => 'rc_timestamp DESC' );
- $conds = array( 'rc_user_text' => $this->mAddress );
-
- if ( $this->mAngryAutoblock ) {
- // Block any IP used in the last 7 days. Up to five IPs.
- $conds[] = 'rc_timestamp < ' . $dbr->addQuotes( $dbr->timestamp( time() - ( 7 * 86400 ) ) );
- $options['LIMIT'] = 5;
- } else {
- // Just the last IP used.
- $options['LIMIT'] = 1;
- }
+ // Just the last IP used.
+ $options['LIMIT'] = 1;
- $res = $dbr->select( 'recentchanges', array( 'rc_ip' ), $conds,
- __METHOD__ , $options );
+ $res = $dbr->select( 'recentchanges', array( 'rc_ip' ), $conds,
+ __METHOD__ , $options );
- if ( !$dbr->numRows( $res ) ) {
- # No results, don't autoblock anything
- wfDebug( "No IP found to retroactively autoblock\n" );
- } else {
- foreach ( $res as $row ) {
- if ( $row->rc_ip ) {
- $this->doAutoblock( $row->rc_ip );
- }
+ if ( !$dbr->numRows( $res ) ) {
+ # No results, don't autoblock anything
+ wfDebug( "No IP found to retroactively autoblock\n" );
+ } else {
+ foreach ( $res as $row ) {
+ if ( $row->rc_ip ) {
+ $id = $block->doAutoblock( $row->rc_ip );
+ if ( $id ) $blockIds[] = $id;
}
}
}
@@ -542,6 +547,7 @@ class Block {
/**
* Checks whether a given IP is on the autoblock whitelist.
+ * TODO: this probably belongs somewhere else, but not sure where...
*
* @param $ip String: The IP to check
* @return Boolean
@@ -587,73 +593,70 @@ class Block {
* Autoblocks the given IP, referring to this Block.
*
* @param $autoblockIP String: the IP to autoblock.
- * @param $justInserted Boolean: the main block was just inserted
- * @return Boolean: whether or not an autoblock was inserted.
+ * @return mixed: block ID if an autoblock was inserted, false if not.
*/
- public function doAutoblock( $autoblockIP, $justInserted = false ) {
+ public function doAutoblock( $autoblockIP ) {
# If autoblocks are disabled, go away.
- if ( !$this->mEnableAutoblock ) {
- return;
+ if ( !$this->isAutoblocking() ) {
+ return false;
}
- # Check for presence on the autoblock whitelist
- if ( Block::isWhitelistedFromAutoblocks( $autoblockIP ) ) {
- return;
+ # Check for presence on the autoblock whitelist.
+ if ( self::isWhitelistedFromAutoblocks( $autoblockIP ) ) {
+ return false;
}
- # # Allow hooks to cancel the autoblock.
+ # Allow hooks to cancel the autoblock.
if ( !wfRunHooks( 'AbortAutoblock', array( $autoblockIP, &$this ) ) ) {
wfDebug( "Autoblock aborted by hook.\n" );
return false;
}
- # It's okay to autoblock. Go ahead and create/insert the block.
+ # It's okay to autoblock. Go ahead and insert/update the block...
- $ipblock = Block::newFromDB( $autoblockIP );
+ # Do not add a *new* block if the IP is already blocked.
+ $ipblock = Block::newFromTarget( $autoblockIP );
if ( $ipblock ) {
- # If the user is already blocked. Then check if the autoblock would
- # exceed the user block. If it would exceed, then do nothing, else
- # prolong block time
- if ( $this->mExpiry &&
- ( $this->mExpiry < Block::getAutoblockExpiry( $ipblock->mTimestamp ) )
+ # Check if the block is an autoblock and would exceed the user block
+ # if renewed. If so, do nothing, otherwise prolong the block time...
+ if ( $ipblock->mAuto && // @TODO: why not compare $ipblock->mExpiry?
+ $this->mExpiry > Block::getAutoblockExpiry( $ipblock->mTimestamp )
) {
- return;
- }
-
- # Just update the timestamp
- if ( !$justInserted ) {
+ # Reset block timestamp to now and its expiry to
+ # $wgAutoblockExpiry in the future
$ipblock->updateTimestamp();
}
+ return false;
+ }
- return;
- } else {
- $ipblock = new Block;
- }
-
- # Make a new block object with the desired properties
- wfDebug( "Autoblocking {$this->mAddress}@" . $autoblockIP . "\n" );
- $ipblock->mAddress = $autoblockIP;
- $ipblock->mUser = 0;
- $ipblock->mBy = $this->mBy;
- $ipblock->mByName = $this->mByName;
- $ipblock->mReason = wfMsgForContent( 'autoblocker', $this->mAddress, $this->mReason );
- $ipblock->mTimestamp = wfTimestampNow();
- $ipblock->mAuto = 1;
- $ipblock->mCreateAccount = $this->mCreateAccount;
+ # Make a new block object with the desired properties.
+ $autoblock = new Block;
+ wfDebug( "Autoblocking {$this->getTarget()}@" . $autoblockIP . "\n" );
+ $autoblock->setTarget( $autoblockIP );
+ $autoblock->setBlocker( $this->getBlocker() );
+ $autoblock->mReason = wfMsgForContent( 'autoblocker', $this->getTarget(), $this->mReason );
+ $timestamp = wfTimestampNow();
+ $autoblock->mTimestamp = $timestamp;
+ $autoblock->mAuto = 1;
+ $autoblock->prevents( 'createaccount', $this->prevents( 'createaccount' ) );
# Continue suppressing the name if needed
- $ipblock->mHideName = $this->mHideName;
- $ipblock->mAllowUsertalk = $this->mAllowUsertalk;
+ $autoblock->mHideName = $this->mHideName;
+ $autoblock->prevents( 'editownusertalk', $this->prevents( 'editownusertalk' ) );
- # If the user is already blocked with an expiry date, we don't
- # want to pile on top of that!
- if ( $this->mExpiry ) {
- $ipblock->mExpiry = min( $this->mExpiry, Block::getAutoblockExpiry( $this->mTimestamp ) );
+ if ( $this->mExpiry == 'infinity' ) {
+ # Original block was indefinite, start an autoblock now
+ $autoblock->mExpiry = Block::getAutoblockExpiry( $timestamp );
} else {
- $ipblock->mExpiry = Block::getAutoblockExpiry( $this->mTimestamp );
+ # If the user is already blocked with an expiry date, we don't
+ # want to pile on top of that.
+ $autoblock->mExpiry = min( $this->mExpiry, Block::getAutoblockExpiry( $timestamp ) );
}
- # Insert it
- return $ipblock->insert();
+ # Insert the block...
+ $status = $autoblock->insert();
+ return $status
+ ? $status['id']
+ : false;
}
/**
@@ -681,12 +684,13 @@ class Block {
* @return Boolean
*/
public function isExpired() {
- wfDebug( "Block::isExpired() checking current " . wfTimestampNow() . " vs $this->mExpiry\n" );
+ $timestamp = wfTimestampNow();
+ wfDebug( "Block::isExpired() checking current " . $timestamp . " vs $this->mExpiry\n" );
if ( !$this->mExpiry ) {
return false;
} else {
- return wfTimestampNow() > $this->mExpiry;
+ return $timestamp > $this->mExpiry;
}
}
@@ -695,7 +699,7 @@ class Block {
* @return Boolean
*/
public function isValid() {
- return $this->mAddress != '';
+ return $this->getTarget() != null;
}
/**
@@ -711,20 +715,58 @@ class Block {
array( /* SET */
'ipb_timestamp' => $dbw->timestamp( $this->mTimestamp ),
'ipb_expiry' => $dbw->timestamp( $this->mExpiry ),
- ), array( /* WHERE */
- 'ipb_address' => $this->mAddress
- ), 'Block::updateTimestamp'
+ ),
+ array( /* WHERE */
+ 'ipb_address' => (string)$this->getTarget()
+ ),
+ __METHOD__
);
}
}
/**
+ * Get the IP address at the start of the range in Hex form
+ * @return String IP in Hex form
+ */
+ public function getRangeStart() {
+ switch( $this->type ) {
+ case self::TYPE_USER:
+ return '';
+ case self::TYPE_IP:
+ return IP::toHex( $this->target );
+ case self::TYPE_RANGE:
+ list( $start, /*...*/ ) = IP::parseRange( $this->target );
+ return $start;
+ default: throw new MWException( "Block with invalid type" );
+ }
+ }
+
+ /**
+ * Get the IP address at the start of the range in Hex form
+ * @return String IP in Hex form
+ */
+ public function getRangeEnd() {
+ switch( $this->type ) {
+ case self::TYPE_USER:
+ return '';
+ case self::TYPE_IP:
+ return IP::toHex( $this->target );
+ case self::TYPE_RANGE:
+ list( /*...*/, $end ) = IP::parseRange( $this->target );
+ return $end;
+ default: throw new MWException( "Block with invalid type" );
+ }
+ }
+
+ /**
* Get the user id of the blocking sysop
*
* @return Integer
*/
public function getBy() {
- return $this->mBy;
+ return $this->getBlocker() instanceof User
+ ? $this->getBlocker()->getId()
+ : 0;
}
/**
@@ -733,32 +775,102 @@ class Block {
* @return String
*/
public function getByName() {
- return $this->mByName;
+ return $this->getBlocker() instanceof User
+ ? $this->getBlocker()->getName()
+ : null;
+ }
+
+ /**
+ * Get the block ID
+ * @return int
+ */
+ public function getId() {
+ return $this->mId;
}
/**
* Get/set the SELECT ... FOR UPDATE flag
+ * @deprecated since 1.18
+ *
+ * @param $x Bool
*/
public function forUpdate( $x = null ) {
- return wfSetVar( $this->mForUpdate, $x );
+ # noop
}
/**
* Get/set a flag determining whether the master is used for reads
+ *
+ * @param $x Bool
+ * @return Bool
*/
public function fromMaster( $x = null ) {
return wfSetVar( $this->mFromMaster, $x );
}
/**
+ * Get/set whether the Block is a hardblock (affects logged-in users on a given IP/range
+ * @param $x Bool
+ * @return Bool
+ */
+ public function isHardblock( $x = null ) {
+ wfSetVar( $this->isHardblock, $x );
+
+ # You can't *not* hardblock a user
+ return $this->getType() == self::TYPE_USER
+ ? true
+ : $this->isHardblock;
+ }
+
+ public function isAutoblocking( $x = null ) {
+ wfSetVar( $this->isAutoblocking, $x );
+
+ # You can't put an autoblock on an IP or range as we don't have any history to
+ # look over to get more IPs from
+ return $this->getType() == self::TYPE_USER
+ ? $this->isAutoblocking
+ : false;
+ }
+
+ /**
+ * Get/set whether the Block prevents a given action
+ * @param $action String
+ * @param $x Bool
+ * @return Bool
+ */
+ public function prevents( $action, $x = null ) {
+ switch( $action ) {
+ case 'edit':
+ # For now... <evil laugh>
+ return true;
+
+ case 'createaccount':
+ return wfSetVar( $this->mCreateAccount, $x );
+
+ case 'sendemail':
+ return wfSetVar( $this->mBlockEmail, $x );
+
+ case 'editownusertalk':
+ return wfSetVar( $this->mDisableUsertalk, $x );
+
+ default:
+ return null;
+ }
+ }
+
+ /**
* Get the block name, but with autoblocked IPs hidden as per standard privacy policy
- * @return String
+ * @return String, text is escaped
*/
public function getRedactedName() {
if ( $this->mAuto ) {
- return '#' . $this->mId;
+ return Html::rawElement(
+ 'span',
+ array( 'class' => 'mw-autoblockid' ),
+ wfMessage( 'autoblockid', $this->mId )
+ );
} else {
- return $this->mAddress;
+ return htmlspecialchars( $this->getTarget() );
}
}
@@ -768,33 +880,29 @@ class Block {
* @param $expiry String: timestamp for expiry, or
* @param $db Database object
* @return String
+ * @deprecated since 1.18; use $dbw->encodeExpiry() instead
*/
public static function encodeExpiry( $expiry, $db ) {
- if ( $expiry == '' || $expiry == Block::infinity() ) {
- return Block::infinity();
- } else {
- return $db->timestamp( $expiry );
- }
+ return $db->encodeExpiry( $expiry );
}
/**
* Decode expiry which has come from the DB
*
* @param $expiry String: Database expiry format
- * @param $timestampType Requested timestamp format
+ * @param $timestampType Int Requested timestamp format
* @return String
+ * @deprecated since 1.18; use $wgLang->decodeExpiry() instead
*/
public static function decodeExpiry( $expiry, $timestampType = TS_MW ) {
- if ( $expiry == '' || $expiry == Block::infinity() ) {
- return Block::infinity();
- } else {
- return wfTimestamp( $timestampType, $expiry );
- }
+ global $wgContLang;
+ return $wgContLang->formatExpiry( $expiry, $timestampType );
}
/**
* Get a timestamp of the expiry for autoblocks
*
+ * @param $timestamp String|Int
* @return String
*/
public static function getAutoblockExpiry( $timestamp ) {
@@ -808,35 +916,10 @@ class Block {
* For example, 127.111.113.151/24 -> 127.111.113.0/24
* @param $range String: IP address to normalize
* @return string
+ * @deprecated since 1.18, call IP::sanitizeRange() directly
*/
public static function normaliseRange( $range ) {
- $parts = explode( '/', $range );
- if ( count( $parts ) == 2 ) {
- // IPv6
- if ( IP::isIPv6( $range ) && $parts[1] >= 64 && $parts[1] <= 128 ) {
- $bits = $parts[1];
- $ipint = IP::toUnsigned( $parts[0] );
- # Native 32 bit functions WON'T work here!!!
- # Convert to a padded binary number
- $network = wfBaseConvert( $ipint, 10, 2, 128 );
- # Truncate the last (128-$bits) bits and replace them with zeros
- $network = str_pad( substr( $network, 0, $bits ), 128, 0, STR_PAD_RIGHT );
- # Convert back to an integer
- $network = wfBaseConvert( $network, 2, 10 );
- # Reform octet address
- $newip = IP::toOctet( $network );
- $range = "$newip/{$parts[1]}";
- } // IPv4
- elseif ( IP::isIPv4( $range ) && $parts[1] >= 16 && $parts[1] <= 32 ) {
- $shift = 32 - $parts[1];
- $ipint = IP::toUnsigned( $parts[0] );
- $ipint = $ipint >> $shift << $shift;
- $newip = long2ip( $ipint );
- $range = "$newip/{$parts[1]}";
- }
- }
-
- return $range;
+ return IP::sanitizeRange( $range );
}
/**
@@ -849,25 +932,12 @@ class Block {
/**
* Get a value to insert into expiry field of the database when infinite expiry
- * is desired. In principle this could be DBMS-dependant, but currently all
- * supported DBMS's support the string "infinity", so we just use that.
- *
+ * is desired
+ * @deprecated since 1.18, call $dbr->getInfinity() directly
* @return String
*/
public static function infinity() {
- # This is a special keyword for timestamps in PostgreSQL, and
- # works with CHAR(14) as well because "i" sorts after all numbers.
-
- # BEGIN DatabaseMssql hack
- # Since MSSQL doesn't recognize the infinity keyword, set date manually.
- # TO-DO: Refactor for better DB portability and remove magic date
- $dbr = wfGetDB( DB_SLAVE );
- if ( $dbr->getType() == 'mssql' ) {
- return '3000-01-31 00:00:00.000';
- }
- # End DatabaseMssql hack
-
- return 'infinity';
+ return wfGetDB( DB_SLAVE )->getInfinity();
}
/**
@@ -875,8 +945,10 @@ class Block {
*
* @param $encoded_expiry String: Database encoded expiry time
* @return Html-escaped String
+ * @deprecated since 1.18; use $wgLang->formatExpiry() instead
*/
public static function formatExpiry( $encoded_expiry ) {
+ global $wgContLang;
static $msg = null;
if ( is_null( $msg ) ) {
@@ -888,8 +960,8 @@ class Block {
}
}
- $expiry = Block::decodeExpiry( $encoded_expiry );
- if ( $expiry == 'infinity' ) {
+ $expiry = $wgContLang->formatExpiry( $encoded_expiry, TS_MW );
+ if ( $expiry == wfGetDB( DB_SLAVE )->getInfinity() ) {
$expirystr = $msg['infiniteblock'];
} else {
global $wgLang;
@@ -902,21 +974,179 @@ class Block {
}
/**
- * Convert a typed-in expiry time into something we can put into the database.
- * @param $expiry_input String: whatever was typed into the form
- * @return String: more database friendly
+ * Convert a submitted expiry time, which may be relative ("2 weeks", etc) or absolute
+ * ("24 May 2034"), into an absolute timestamp we can put into the database.
+ * @param $expiry String: whatever was typed into the form
+ * @return String: timestamp or "infinity" string for th DB implementation
+ * @deprecated since 1.18 moved to SpecialBlock::parseExpiryInput()
*/
- public static function parseExpiryInput( $expiry_input ) {
- if ( $expiry_input == 'infinite' || $expiry_input == 'indefinite' ) {
- $expiry = 'infinity';
+ public static function parseExpiryInput( $expiry ) {
+ wfDeprecated( __METHOD__ );
+ return SpecialBlock::parseExpiryInput( $expiry );
+ }
+
+ /**
+ * Given a target and the target's type, get an existing Block object if possible.
+ * @param $specificTarget String|User|Int a block target, which may be one of several types:
+ * * A user to block, in which case $target will be a User
+ * * An IP to block, in which case $target will be a User generated by using
+ * User::newFromName( $ip, false ) to turn off name validation
+ * * An IP range, in which case $target will be a String "123.123.123.123/18" etc
+ * * The ID of an existing block, in the format "#12345" (since pure numbers are valid
+ * usernames
+ * Calling this with a user, IP address or range will not select autoblocks, and will
+ * only select a block where the targets match exactly (so looking for blocks on
+ * 1.2.3.4 will not select 1.2.0.0/16 or even 1.2.3.4/32)
+ * @param $vagueTarget String|User|Int as above, but we will search for *any* block which
+ * affects that target (so for an IP address, get ranges containing that IP; and also
+ * get any relevant autoblocks). Leave empty or blank to skip IP-based lookups.
+ * @param $fromMaster Bool whether to use the DB_MASTER database
+ * @return Block|null (null if no relevant block could be found). The target and type
+ * of the returned Block will refer to the actual block which was found, which might
+ * not be the same as the target you gave if you used $vagueTarget!
+ */
+ public static function newFromTarget( $specificTarget, $vagueTarget = null, $fromMaster = false ) {
+
+ list( $target, $type ) = self::parseTarget( $specificTarget );
+ if( $type == Block::TYPE_ID || $type == Block::TYPE_AUTO ){
+ return Block::newFromID( $target );
+
+ } elseif( $target === null && $vagueTarget == '' ){
+ # We're not going to find anything useful here
+ # Be aware that the == '' check is explicit, since empty values will be
+ # passed by some callers (bug 29116)
+ return null;
+
+ } elseif( in_array( $type, array( Block::TYPE_USER, Block::TYPE_IP, Block::TYPE_RANGE, null ) ) ) {
+ $block = new Block();
+ $block->fromMaster( $fromMaster );
+
+ if( $type !== null ){
+ $block->setTarget( $target );
+ }
+
+ if( $block->newLoad( $vagueTarget ) ){
+ return $block;
+ } else {
+ return null;
+ }
} else {
- $expiry = strtotime( $expiry_input );
+ return null;
+ }
+ }
- if ( $expiry < 0 || $expiry === false ) {
- return false;
+ /**
+ * 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().
+ *
+ * @param $target String|Int|User
+ * @return array( User|String, Block::TYPE_ constant )
+ */
+ public static function parseTarget( $target ) {
+ $target = trim( $target );
+
+ # We may have been through this before
+ if( $target instanceof User ){
+ if( IP::isValid( $target->getName() ) ){
+ return array( $target, self::TYPE_IP );
+ } else {
+ return array( $target, self::TYPE_USER );
}
+ } elseif( $target === null ){
+ return array( null, null );
+ }
+
+ if ( IP::isValid( $target ) ) {
+ # We can still create a User if it's an IP address, but we need to turn
+ # off validation checking (which would exclude IP addresses)
+ return array(
+ User::newFromName( IP::sanitizeIP( $target ), false ),
+ Block::TYPE_IP
+ );
+
+ } elseif ( IP::isValidBlock( $target ) ) {
+ # Can't create a User from an IP range
+ return array( IP::sanitizeRange( $target ), Block::TYPE_RANGE );
}
- return $expiry;
+ # Consider the possibility that this is not a username at all
+ # but actually an old subpage (bug #29797)
+ if( strpos( $target, '/' ) !== false ){
+ # An old subpage, drill down to the user behind it
+ $parts = explode( '/', $target );
+ $target = $parts[0];
+ }
+
+ $userObj = User::newFromName( $target );
+ if ( $userObj instanceof User ) {
+ # Note that since numbers are valid usernames, a $target of "12345" will be
+ # considered a User. If you want to pass a block ID, prepend a hash "#12345",
+ # since hash characters are not valid in usernames or titles generally.
+ return array( $userObj, Block::TYPE_USER );
+
+ } elseif ( preg_match( '/^#\d+$/', $target ) ) {
+ # Autoblock reference in the form "#12345"
+ return array( substr( $target, 1 ), Block::TYPE_AUTO );
+
+ } else {
+ # WTF?
+ return array( null, null );
+ }
+ }
+
+ /**
+ * Get the type of target for this particular block
+ * @return Block::TYPE_ constant, will never be TYPE_ID
+ */
+ public function getType() {
+ return $this->mAuto
+ ? self::TYPE_AUTO
+ : $this->type;
+ }
+
+ /**
+ * Get the target and target type for this particular Block. Note that for autoblocks,
+ * this returns the unredacted name; frontend functions need to call $block->getRedactedName()
+ * in this situation.
+ * @return array( User|String, Block::TYPE_ constant )
+ * @todo FIXME: This should be an integral part of the Block member variables
+ */
+ public function getTargetAndType() {
+ return array( $this->getTarget(), $this->getType() );
+ }
+
+ /**
+ * Get the target for this particular Block. Note that for autoblocks,
+ * this returns the unredacted name; frontend functions need to call $block->getRedactedName()
+ * in this situation.
+ * @return User|String
+ */
+ public function getTarget() {
+ return $this->target;
+ }
+
+ /**
+ * Set the target for this block, and update $this->type accordingly
+ * @param $target Mixed
+ */
+ public function setTarget( $target ){
+ list( $this->target, $this->type ) = self::parseTarget( $target );
+ }
+
+ /**
+ * Get the user who implemented this block
+ * @return User
+ */
+ public function getBlocker(){
+ return $this->blocker;
+ }
+
+ /**
+ * Set the user who implemented (or will implement) this block
+ * @param $user User
+ */
+ public function setBlocker( User $user ){
+ $this->blocker = $user;
}
}
diff --git a/includes/Category.php b/includes/Category.php
index 614933ff..9d9b5a67 100644
--- a/includes/Category.php
+++ b/includes/Category.php
@@ -13,7 +13,10 @@ class Category {
/** Name of the category, normalized to DB-key form */
private $mName = null;
private $mID = null;
- /** Category page title */
+ /**
+ * Category page title
+ * @var Title
+ */
private $mTitle = null;
/** Counts of membership (cat_pages, cat_subcats, cat_files) */
private $mPages = null, $mSubcats = null, $mFiles = null;
@@ -100,7 +103,7 @@ class Category {
* Factory function.
*
* @param $title Title for the category page
- * @return Mixed: category, or false on a totally invalid name
+ * @return category|false on a totally invalid name
*/
public static function newFromTitle( $title ) {
$cat = new self();
@@ -129,7 +132,7 @@ class Category {
* @param $row result set row, must contain the cat_xxx fields. If the fields are null,
* the resulting Category object will represent an empty category if a title object
* was given. If the fields are null and no title was given, this method fails and returns false.
- * @param $title optional title object for the category represented by the given row.
+ * @param Title $title optional title object for the category represented by the given row.
* May be provided if it is already known, to avoid having to re-create a title object later.
* @return Category
*/
@@ -182,7 +185,7 @@ class Category {
public function getFileCount() { return $this->getX( 'mFiles' ); }
/**
- * @return mixed The Title for this category, or false on failure.
+ * @return Title|false Title for this category, or false on failure.
*/
public function getTitle() {
if ( $this->mTitle ) return $this->mTitle;
diff --git a/includes/CategoryPage.php b/includes/CategoryPage.php
index f990b79b..6a0f6132 100644
--- a/includes/CategoryPage.php
+++ b/includes/CategoryPage.php
@@ -1,6 +1,6 @@
<?php
/**
- * Special handling for category description pages.
+ * Class for viewing MediaWiki category description pages.
* Modelled after ImagePage.php.
*
* @file
@@ -17,6 +17,22 @@ class CategoryPage extends Article {
# Subclasses can change this to override the viewer class.
protected $mCategoryViewerClass = 'CategoryViewer';
+ protected function newPage( Title $title ) {
+ // Overload mPage with a category-specific page
+ return new WikiCategoryPage( $title );
+ }
+
+ /**
+ * Constructor from a page id
+ * @param $id Int article ID to load
+ */
+ public static function newFromID( $id ) {
+ $t = Title::newFromID( $id );
+ # @todo FIXME: Doesn't inherit right
+ return $t == null ? null : new self( $t );
+ # return $t == null ? null : new static( $t ); // PHP 5.3
+ }
+
function view() {
global $wgRequest, $wgUser;
@@ -42,27 +58,6 @@ class CategoryPage extends Article {
}
}
- /**
- * Don't return a 404 for categories in use.
- * In use defined as: either the actual page exists
- * or the category currently has members.
- */
- function hasViewableContent() {
- if ( parent::hasViewableContent() ) {
- return true;
- } else {
- $cat = Category::newFromTitle( $this->mTitle );
- // If any of these are not 0, then has members
- if ( $cat->getPageCount()
- || $cat->getSubcatCount()
- || $cat->getFileCount()
- ) {
- return true;
- }
- }
- return false;
- }
-
function openShowCategory() {
# For overloading
}
@@ -70,27 +65,77 @@ class CategoryPage extends Article {
function closeShowCategory() {
global $wgOut, $wgRequest;
+ // Use these as defaults for back compat --catrope
+ $oldFrom = $wgRequest->getVal( 'from' );
+ $oldUntil = $wgRequest->getVal( 'until' );
+
+ $reqArray = $wgRequest->getValues();
+
$from = $until = array();
foreach ( array( 'page', 'subcat', 'file' ) as $type ) {
- $from[$type] = $wgRequest->getVal( "{$type}from" );
- $until[$type] = $wgRequest->getVal( "{$type}until" );
+ $from[$type] = $wgRequest->getVal( "{$type}from", $oldFrom );
+ $until[$type] = $wgRequest->getVal( "{$type}until", $oldUntil );
+
+ // Do not want old-style from/until propagating in nav links.
+ if ( !isset( $reqArray["{$type}from"] ) && isset( $reqArray["from"] ) ) {
+ $reqArray["{$type}from"] = $reqArray["from"];
+ }
+ if ( !isset( $reqArray["{$type}to"] ) && isset( $reqArray["to"] ) ) {
+ $reqArray["{$type}to"] = $reqArray["to"];
+ }
}
- $viewer = new $this->mCategoryViewerClass( $this->mTitle, $from, $until, $wgRequest->getValues() );
+ unset( $reqArray["from"] );
+ unset( $reqArray["to"] );
+
+ $viewer = new $this->mCategoryViewerClass( $this->mTitle, $from, $until, $reqArray );
$wgOut->addHTML( $viewer->getHTML() );
}
}
class CategoryViewer {
- var $title, $limit, $from, $until,
+ var $limit, $from, $until,
$articles, $articles_start_char,
$children, $children_start_char,
- $showGallery, $gallery,
- $imgsNoGalley, $imgsNoGallery_start_char,
- $skin, $collation;
- # Category object for this page
+ $showGallery, $imgsNoGalley,
+ $imgsNoGallery_start_char,
+ $imgsNoGallery;
+
+ /**
+ * @var
+ */
+ var $nextPage;
+
+ /**
+ * @var Array
+ */
+ var $flip;
+
+ /**
+ * @var Title
+ */
+ var $title;
+
+ /**
+ * @var Collation
+ */
+ var $collation;
+
+ /**
+ * @var ImageGallery
+ */
+ var $gallery;
+
+ /**
+ * Category object for this page
+ * @var Category
+ */
private $cat;
- # The original query array, to be used in generating paging links.
+
+ /**
+ * The original query array, to be used in generating paging links.
+ * @var array
+ */
private $query;
function __construct( $title, $from = '', $until = '', $query = array() ) {
@@ -111,7 +156,7 @@ class CategoryViewer {
* @return string HTML output
*/
public function getHTML() {
- global $wgOut, $wgCategoryMagicGallery, $wgContLang;
+ global $wgOut, $wgCategoryMagicGallery, $wgLang, $wgContLang;
wfProfileIn( __METHOD__ );
$this->showGallery = $wgCategoryMagicGallery && !$wgOut->mNoGallery;
@@ -127,7 +172,7 @@ class CategoryViewer {
if ( $r == '' ) {
// If there is no category content to display, only
// show the top part of the navigation links.
- // FIXME: cannot be completely suppressed because it
+ // @todo FIXME: Cannot be completely suppressed because it
// is unknown if 'until' or 'from' makes this
// give 0 results.
$r = $r . $this->getCategoryTop();
@@ -142,6 +187,12 @@ class CategoryViewer {
$r = wfMsgExt( 'category-empty', array( 'parse' ) );
}
+ $pageLang = $this->title->getPageLanguage();
+ $langAttribs = array( 'lang' => $wgLang->getCode(), 'dir' => $wgLang->getDir() );
+ # close the previous div, show the headings in user language,
+ # then open a new div with the page content language again
+ $r = Html::openElement( 'div', $langAttribs ) . $r . '</div>';
+
wfProfileOut( __METHOD__ );
return $wgContLang->convert( $r );
}
@@ -160,14 +211,6 @@ class CategoryViewer {
}
}
- function getSkin() {
- if ( !$this->skin ) {
- global $wgUser;
- $this->skin = $wgUser->getSkin();
- }
- return $this->skin;
- }
-
/**
* Add a subcategory to the internal lists, using a Category object
*/
@@ -175,7 +218,7 @@ class CategoryViewer {
// Subcategory; strip the 'Category' namespace from the link text.
$title = $cat->getTitle();
- $link = $this->getSkin()->link( $title, $title->getText() );
+ $link = Linker::link( $title, htmlspecialchars( $title->getText() ) );
if ( $title->isRedirect() ) {
// This didn't used to add redirect-in-category, but might
// as well be consistent with the rest of the sections
@@ -190,7 +233,7 @@ class CategoryViewer {
/**
* Add a subcategory to the internal lists, using a title object
- * @deprecated kept for compatibility, please use addSubcategoryObject instead
+ * @deprecated since 1.17 kept for compatibility, please use addSubcategoryObject instead
*/
function addSubcategory( Title $title, $sortkey, $pageLength ) {
$this->addSubcategoryObject( Category::newFromTitle( $title ), $sortkey, $pageLength );
@@ -233,7 +276,7 @@ class CategoryViewer {
$this->gallery->add( $title );
}
} else {
- $link = $this->getSkin()->link( $title );
+ $link = Linker::link( $title );
if ( $isRedirect ) {
// This seems kind of pointless given 'mw-redirect' class,
// but keeping for back-compatibility with user css.
@@ -252,7 +295,7 @@ class CategoryViewer {
function addPage( $title, $sortkey, $pageLength, $isRedirect = false ) {
global $wgContLang;
- $link = $this->getSkin()->link( $title );
+ $link = Linker::link( $title );
if ( $isRedirect ) {
// This seems kind of pointless given 'mw-redirect' class,
// but keeping for back-compatiability with user css.
@@ -309,7 +352,7 @@ class CategoryViewer {
'page_is_redirect', 'cl_sortkey', 'cat_id', 'cat_title',
'cat_subcats', 'cat_pages', 'cat_files',
'cl_sortkey_prefix', 'cl_collation' ),
- array( 'cl_to' => $this->title->getDBkey() ) + $extraConds,
+ array_merge( array( 'cl_to' => $this->title->getDBkey() ), $extraConds ),
__METHOD__,
array(
'USE INDEX' => array( 'categorylinks' => 'cl_sortkey' ),
@@ -385,7 +428,7 @@ class CategoryViewer {
# Don't show articles section if there are none.
$r = '';
- # FIXME, here and in the other two sections: we don't need to bother
+ # @todo FIXME: Here and in the other two sections: we don't need to bother
# with this rigamarole if the entire category contents fit on one page
# and have already been retrieved. We can just use $rescnt in that
# case and save a query and some logic.
@@ -460,13 +503,20 @@ class CategoryViewer {
* @private
*/
function formatList( $articles, $articles_start_char, $cutoff = 6 ) {
+ $list = '';
if ( count ( $articles ) > $cutoff ) {
- return self::columnList( $articles, $articles_start_char );
+ $list = self::columnList( $articles, $articles_start_char );
} elseif ( count( $articles ) > 0 ) {
// for short lists of articles in categories.
- return self::shortList( $articles, $articles_start_char );
+ $list = self::shortList( $articles, $articles_start_char );
}
- return '';
+
+ $pageLang = $this->title->getPageLanguage();
+ $attribs = array( 'lang' => $pageLang->getCode(), 'dir' => $pageLang->getDir(),
+ 'class' => 'mw-content-'.$pageLang->getDir() );
+ $list = Html::rawElement( 'div', $attribs, $list );
+
+ return $list;
}
/**
@@ -539,10 +589,8 @@ class CategoryViewer {
static function shortList( $articles, $articles_start_char ) {
$r = '<h3>' . htmlspecialchars( $articles_start_char[0] ) . "</h3>\n";
$r .= '<ul><li>' . $articles[0] . '</li>';
- for ( $index = 1; $index < count( $articles ); $index++ )
- {
- if ( $articles_start_char[$index] != $articles_start_char[$index - 1] )
- {
+ for ( $index = 1; $index < count( $articles ); $index++ ) {
+ if ( $articles_start_char[$index] != $articles_start_char[$index - 1] ) {
$r .= "</ul><h3>" . htmlspecialchars( $articles_start_char[$index] ) . "</h3>\n<ul>";
}
@@ -563,7 +611,7 @@ class CategoryViewer {
*/
private function pagingLinks( $first, $last, $type = '' ) {
global $wgLang;
- $sk = $this->getSkin();
+
$limitText = $wgLang->formatNum( $this->limit );
$prevLink = wfMsgExt( 'prevn', array( 'escape', 'parsemag' ), $limitText );
@@ -572,8 +620,8 @@ class CategoryViewer {
$prevQuery = $this->query;
$prevQuery["{$type}until"] = $first;
unset( $prevQuery["{$type}from"] );
- $prevLink = $sk->linkKnown(
- $this->title,
+ $prevLink = Linker::linkKnown(
+ $this->addFragmentToTitle( $this->title, $type ),
$prevLink,
array(),
$prevQuery
@@ -586,8 +634,8 @@ class CategoryViewer {
$lastQuery = $this->query;
$lastQuery["{$type}from"] = $last;
unset( $lastQuery["{$type}until"] );
- $nextLink = $sk->linkKnown(
- $this->title,
+ $nextLink = Linker::linkKnown(
+ $this->addFragmentToTitle( $this->title, $type ),
$nextLink,
array(),
$lastQuery
@@ -598,8 +646,34 @@ class CategoryViewer {
}
/**
+ * Takes a title, and adds the fragment identifier that
+ * corresponds to the correct segment of the category.
+ *
+ * @param Title $title: The title (usually $this->title)
+ * @param String $section: Which section
+ */
+ private function addFragmentToTitle( $title, $section ) {
+ switch ( $section ) {
+ case 'page':
+ $fragment = 'mw-pages';
+ break;
+ case 'subcat':
+ $fragment = 'mw-subcategories';
+ break;
+ case 'file':
+ $fragment = 'mw-category-media';
+ break;
+ default:
+ throw new MWException( __METHOD__ .
+ " Invalid section $section." );
+ }
+
+ return Title::makeTitle( $title->getNamespace(),
+ $title->getDBkey(), $fragment );
+ }
+ /**
* What to do if the category table conflicts with the number of results
- * returned? This function says what. Each type is considered independantly
+ * returned? This function says what. Each type is considered independently
* of the other types.
*
* Note for grepping: uses the messages category-article-count,
@@ -640,8 +714,7 @@ class CategoryViewer {
}
if ( $dbcnt == $rescnt || ( ( $rescnt == $this->limit || $fromOrUntil )
- && $dbcnt > $rescnt ) )
- {
+ && $dbcnt > $rescnt ) ) {
# Case 1: seems sane.
$totalcnt = $dbcnt;
} elseif ( $rescnt < $this->limit && !$fromOrUntil ) {
diff --git a/includes/Categoryfinder.php b/includes/Categoryfinder.php
index 1f08b7f8..2567de0d 100644
--- a/includes/Categoryfinder.php
+++ b/includes/Categoryfinder.php
@@ -42,6 +42,7 @@ class Categoryfinder {
* @param $article_ids Array of article IDs
* @param $categories FIXME
* @param $mode String: FIXME, default 'AND'.
+ * @todo FIXME: $categories/$mode
*/
function seed( $article_ids, $categories, $mode = 'AND' ) {
$this->articles = $article_ids;
@@ -85,9 +86,9 @@ class Categoryfinder {
/**
* This functions recurses through the parent representation, trying to match the conditions
- * @param $id The article/category to check
- * @param $conds The array of categories to match
- * @param $path used to check for recursion loops
+ * @param $id int The article/category to check
+ * @param $conds array The array of categories to match
+ * @param $path array used to check for recursion loops
* @return bool Does this match the conditions?
*/
function check( $id, &$conds, $path = array() ) {
diff --git a/includes/Cdb.php b/includes/Cdb.php
index 60477485..d7a2bca5 100644
--- a/includes/Cdb.php
+++ b/includes/Cdb.php
@@ -13,6 +13,10 @@
abstract class CdbReader {
/**
* Open a file and return a subclass instance
+ *
+ * @param $fileName string
+ *
+ * @return CdbReader
*/
public static function open( $fileName ) {
if ( self::haveExtension() ) {
@@ -25,6 +29,8 @@ abstract class CdbReader {
/**
* Returns true if the native extension is available
+ *
+ * @return bool
*/
public static function haveExtension() {
if ( !function_exists( 'dba_handlers' ) ) {
@@ -49,6 +55,8 @@ abstract class CdbReader {
/**
* Get a value with a given key. Only string values are supported.
+ *
+ * @param $key string
*/
abstract public function get( $key );
}
@@ -61,6 +69,10 @@ abstract class CdbWriter {
/**
* Open a writer and return a subclass instance.
* The user must have write access to the directory, for temporary file creation.
+ *
+ * @param $fileName string
+ *
+ * @return bool
*/
public static function open( $fileName ) {
if ( CdbReader::haveExtension() ) {
diff --git a/includes/Cdb_PHP.php b/includes/Cdb_PHP.php
index 1485cc66..f4029ba5 100644
--- a/includes/Cdb_PHP.php
+++ b/includes/Cdb_PHP.php
@@ -16,6 +16,11 @@ class CdbFunctions {
/**
* Take a modulo of a signed integer as if it were an unsigned integer.
* $b must be less than 0x40000000 and greater than 0
+ *
+ * @param $a
+ * @param $b
+ *
+ * @return int
*/
public static function unsignedMod( $a, $b ) {
if ( $a & 0x80000000 ) {
@@ -25,9 +30,12 @@ class CdbFunctions {
return $a % $b;
}
}
-
+
/**
* Shift a signed integer right as if it were unsigned
+ * @param $a
+ * @param $b
+ * @return int
*/
public static function unsignedShiftRight( $a, $b ) {
if ( $b == 0 ) {
@@ -42,6 +50,10 @@ class CdbFunctions {
/**
* The CDB hash function.
+ *
+ * @param $s
+ *
+ * @return
*/
public static function hash( $s ) {
$h = 5381;
@@ -103,11 +115,16 @@ class CdbReader_PHP extends CdbReader {
}
function close() {
- if( isset($this->handle) )
+ if( isset( $this->handle ) ) {
fclose( $this->handle );
+ }
unset( $this->handle );
}
+ /**
+ * @param $key
+ * @return bool|string
+ */
public function get( $key ) {
// strval is required
if ( $this->find( strval( $key ) ) ) {
@@ -117,6 +134,11 @@ class CdbReader_PHP extends CdbReader {
}
}
+ /**
+ * @param $key
+ * @param $pos
+ * @return bool
+ */
protected function match( $key, $pos ) {
$buf = $this->read( strlen( $key ), $pos );
return $buf === $key;
@@ -126,6 +148,12 @@ class CdbReader_PHP extends CdbReader {
$this->loop = 0;
}
+ /**
+ * @throws MWException
+ * @param $length
+ * @param $pos
+ * @return string
+ */
protected function read( $length, $pos ) {
if ( fseek( $this->handle, $pos ) == -1 ) {
// This can easily happen if the internal pointers are incorrect
@@ -145,6 +173,8 @@ class CdbReader_PHP extends CdbReader {
/**
* Unpack an unsigned integer and throw an exception if it needs more than 31 bits
+ * @param $s
+ * @return
*/
protected function unpack31( $s ) {
$data = unpack( 'V', $s );
@@ -156,12 +186,18 @@ class CdbReader_PHP extends CdbReader {
/**
* Unpack a 32-bit signed integer
+ * @param $s
+ * @return int
*/
protected function unpackSigned( $s ) {
$data = unpack( 'va/vb', $s );
return $data['a'] | ( $data['b'] << 16 );
}
+ /**
+ * @param $key
+ * @return bool
+ */
protected function findNext( $key ) {
if ( !$this->loop ) {
$u = CdbFunctions::hash( $key );
@@ -204,6 +240,10 @@ class CdbReader_PHP extends CdbReader {
return false;
}
+ /**
+ * @param $key
+ * @return bool
+ */
protected function find( $key ) {
$this->findStart();
return $this->findNext( $key );
@@ -240,6 +280,11 @@ class CdbWriter_PHP extends CdbWriter {
}
}
+ /**
+ * @param $key
+ * @param $value
+ * @return
+ */
public function set( $key, $value ) {
if ( strval( $key ) === '' ) {
// DBA cross-check hack
@@ -251,10 +296,14 @@ class CdbWriter_PHP extends CdbWriter {
$this->addend( strlen( $key ), strlen( $value ), CdbFunctions::hash( $key ) );
}
+ /**
+ * @throws MWException
+ */
public function close() {
$this->finish();
- if( isset($this->handle) )
+ if( isset($this->handle) ) {
fclose( $this->handle );
+ }
if ( wfIsWindows() && file_exists($this->realFileName) ) {
unlink( $this->realFileName );
}
@@ -264,6 +313,10 @@ class CdbWriter_PHP extends CdbWriter {
unset( $this->handle );
}
+ /**
+ * @throws MWException
+ * @param $buf
+ */
protected function write( $buf ) {
$len = fwrite( $this->handle, $buf );
if ( $len !== strlen( $buf ) ) {
@@ -271,6 +324,10 @@ class CdbWriter_PHP extends CdbWriter {
}
}
+ /**
+ * @throws MWException
+ * @param $len
+ */
protected function posplus( $len ) {
$newpos = $this->pos + $len;
if ( $newpos > 0x7fffffff ) {
@@ -279,6 +336,11 @@ class CdbWriter_PHP extends CdbWriter {
$this->pos = $newpos;
}
+ /**
+ * @param $keylen
+ * @param $datalen
+ * @param $h
+ */
protected function addend( $keylen, $datalen, $h ) {
$this->hplist[] = array(
'h' => $h,
@@ -291,6 +353,11 @@ class CdbWriter_PHP extends CdbWriter {
$this->posplus( $datalen );
}
+ /**
+ * @throws MWException
+ * @param $keylen
+ * @param $datalen
+ */
protected function addbegin( $keylen, $datalen ) {
if ( $keylen > 0x7fffffff ) {
throw new MWException( __METHOD__.': key length too long' );
@@ -302,6 +369,9 @@ class CdbWriter_PHP extends CdbWriter {
$this->write( $buf );
}
+ /**
+ * @throws MWException
+ */
protected function finish() {
// Hack for DBA cross-check
$this->hplist = array_reverse( $this->hplist );
diff --git a/includes/ChangeTags.php b/includes/ChangeTags.php
index 7f0fee21..c8e522df 100644
--- a/includes/ChangeTags.php
+++ b/includes/ChangeTags.php
@@ -1,8 +1,5 @@
<?php
-if( !defined( 'MEDIAWIKI' ) )
- die;
-
class ChangeTags {
static function formatSummaryRow( $tags, $page ) {
if( !$tags )
@@ -28,11 +25,8 @@ class ChangeTags {
}
static function tagDescription( $tag ) {
- $msg = wfMsgExt( "tag-$tag", 'parseinline' );
- if ( wfEmptyMsg( "tag-$tag", $msg ) ) {
- return htmlspecialchars( $tag );
- }
- return $msg;
+ $msg = wfMessage( "tag-$tag" );
+ return $msg->exists() ? $msg->parse() : htmlspecialchars( $tag );
}
## Basic utility method to add tags to a particular change, given its rc_id, rev_id and/or log_id.
@@ -150,18 +144,26 @@ class ChangeTags {
}
/**
- * If $fullForm is set to false, then it returns an array of (label, form).
- * If $fullForm is true, it returns an entire form.
+ * Build a text box to select a change tag
+ *
+ * @param $selected String: tag to select by default
+ * @param $fullForm Boolean:
+ * - if false, then it returns an array of (label, form).
+ * - if true, it returns an entire form around the selector.
+ * @param $title Title object to send the form to.
+ * Used when, and only when $fullForm is true.
+ * @return String or array:
+ * - if $fullForm is false: Array with
+ * - if $fullForm is true: String, html fragment
*/
- static function buildTagFilterSelector( $selected='', $fullForm = false /* used to put a full form around the selector */ ) {
+ public static function buildTagFilterSelector( $selected='', $fullForm = false, Title $title = null ) {
global $wgUseTagFilter;
if ( !$wgUseTagFilter || !count( self::listDefinedTags() ) )
return $fullForm ? '' : array();
- global $wgTitle;
-
- $data = array( wfMsgExt( 'tag-filter', 'parseinline' ), Xml::input( 'tagfilter', 20, $selected ) );
+ $data = array( Html::rawElement( 'label', array( 'for' => 'tagfilter' ), wfMsgExt( 'tag-filter', 'parseinline' ) ),
+ Xml::input( 'tagfilter', 20, $selected ) );
if ( !$fullForm ) {
return $data;
@@ -175,7 +177,11 @@ class ChangeTags {
return $html;
}
- /** Basically lists defined tags which count even if they aren't applied to anything */
+ /**
+ *Basically lists defined tags which count even if they aren't applied to anything
+ *
+ * @return array
+ */
static function listDefinedTags() {
// Caching...
global $wgMemc;
diff --git a/includes/ChangesFeed.php b/includes/ChangesFeed.php
index f07b6505..c4c4a8a1 100644
--- a/includes/ChangesFeed.php
+++ b/includes/ChangesFeed.php
@@ -24,15 +24,19 @@ class ChangesFeed {
*
* @param $title String: feed's title
* @param $description String: feed's description
+ * @param $url String: url of origin page
* @return ChannelFeed subclass or false on failure
*/
- public function getFeedObject( $title, $description ) {
- global $wgSitename, $wgLanguageCode, $wgFeedClasses, $wgTitle;
- $feedTitle = "$wgSitename - {$title} [$wgLanguageCode]";
- if( !isset($wgFeedClasses[$this->format] ) )
+ public function getFeedObject( $title, $description, $url ) {
+ global $wgSitename, $wgLanguageCode, $wgFeedClasses;
+
+ if ( !isset( $wgFeedClasses[$this->format] ) ) {
return false;
+ }
+
+ $feedTitle = "$wgSitename - {$title} [$wgLanguageCode]";
return new $wgFeedClasses[$this->format](
- $feedTitle, htmlspecialchars( $description ), $wgTitle->getFullUrl() );
+ $feedTitle, htmlspecialchars( $description ), $url );
}
/**
@@ -57,11 +61,11 @@ class ChangesFeed {
FeedUtils::checkPurge( $timekey, $key );
- /*
- * Bumping around loading up diffs can be pretty slow, so where
- * possible we want to cache the feed output so the next visitor
- * gets it quick too.
- */
+ /**
+ * Bumping around loading up diffs can be pretty slow, so where
+ * possible we want to cache the feed output so the next visitor
+ * gets it quick too.
+ */
$cachedFeed = $this->loadFromCache( $lastmod, $timekey, $key );
if( is_string( $cachedFeed ) ) {
wfDebug( "RC: Outputting cached feed\n" );
@@ -106,12 +110,12 @@ class ChangesFeed {
$feedLastmod = $messageMemc->get( $timekey );
if( ( $wgFeedCacheTimeout > 0 ) && $feedLastmod ) {
- /*
- * If the cached feed was rendered very recently, we may
- * go ahead and use it even if there have been edits made
- * since it was rendered. This keeps a swarm of requests
- * from being too bad on a super-frequently edited wiki.
- */
+ /**
+ * If the cached feed was rendered very recently, we may
+ * go ahead and use it even if there have been edits made
+ * since it was rendered. This keeps a swarm of requests
+ * from being too bad on a super-frequently edited wiki.
+ */
$feedAge = time() - wfTimestamp( TS_UNIX, $feedLastmod );
$feedLastmodUnix = wfTimestamp( TS_UNIX, $feedLastmod );
@@ -145,6 +149,7 @@ class ChangesFeed {
$n = 0;
foreach( $rows as $obj ) {
if( $n > 0 &&
+ $obj->rc_type == RC_EDIT &&
$obj->rc_namespace >= 0 &&
$obj->rc_cur_id == $sorted[$n-1]->rc_cur_id &&
$obj->rc_user_text == $sorted[$n-1]->rc_user_text ) {
@@ -157,16 +162,27 @@ class ChangesFeed {
foreach( $sorted as $obj ) {
$title = Title::makeTitle( $obj->rc_namespace, $obj->rc_title );
- $talkpage = $title->getTalkPage();
+ $talkpage = MWNamespace::canTalk( $obj->rc_namespace ) ? $title->getTalkPage()->getFullUrl() : '';
// Skip items with deleted content (avoids partially complete/inconsistent output)
if( $obj->rc_deleted ) continue;
+
+ if ( $obj->rc_this_oldid ) {
+ $url = $title->getFullURL(
+ 'diff=' . $obj->rc_this_oldid .
+ '&oldid=' . $obj->rc_last_oldid
+ );
+ } else {
+ // log entry or something like that.
+ $url = $title->getFullURL();
+ }
+
$item = new FeedItem(
$title->getPrefixedText(),
FeedUtils::formatDiff( $obj ),
- $obj->rc_this_oldid ? $title->getFullURL( 'diff=' . $obj->rc_this_oldid . '&oldid=prev' ) : $title->getFullURL(),
+ $url,
$obj->rc_timestamp,
($obj->rc_deleted & Revision::DELETED_USER) ? wfMsgHtml('rev-deleted-user') : $obj->rc_user_text,
- $talkpage->getFullURL()
+ $talkpage
);
$feed->outItem( $item );
}
diff --git a/includes/ChangesList.php b/includes/ChangesList.php
index b8bc4f55..1858dc3a 100644
--- a/includes/ChangesList.php
+++ b/includes/ChangesList.php
@@ -16,6 +16,10 @@ class RCCacheEntry extends RecentChange {
var $curlink , $difflink, $lastlink, $usertalklink, $versionlink;
var $userlink, $timestamp, $watched;
+ /**
+ * @param $rc RecentChange
+ * @return RCCacheEntry
+ */
static function newFromParent( $rc ) {
$rc2 = new RCCacheEntry;
$rc2->mAttribs = $rc->mAttribs;
@@ -27,39 +31,64 @@ class RCCacheEntry extends RecentChange {
/**
* Base class for all changes lists
*/
-class ChangesList {
+class ChangesList extends ContextSource {
+
+ /**
+ * @var Skin
+ */
public $skin;
+
protected $watchlist = false;
+ protected $message;
+
/**
- * Changeslist contructor
- * @param $skin Skin
- */
- public function __construct( $skin ) {
- $this->skin = $skin;
+ * Changeslist contructor
+ *
+ * @param $obj Skin or IContextSource
+ */
+ public function __construct( $obj ) {
+ if ( $obj instanceof IContextSource ) {
+ $this->setContext( $obj );
+ $this->skin = $obj->getSkin();
+ } else {
+ $this->setContext( $obj->getContext() );
+ $this->skin = $obj;
+ }
$this->preCacheMessages();
}
/**
- * Fetch an appropriate changes list class for the specified user
- * Some users might want to use an enhanced list format, for instance
+ * Fetch an appropriate changes list class for the main context
+ * This first argument used to be an User object.
*
- * @param $user User to fetch the list class for
- * @return ChangesList derivative
+ * @deprecated in 1.18; use newFromContext() instead
+ * @param $unused Unused
+ * @return ChangesList|EnhancedChangesList|OldChangesList derivative
*/
- public static function newFromUser( &$user ) {
- global $wgRequest;
+ public static function newFromUser( $unused ) {
+ return self::newFromContext( RequestContext::getMain() );
+ }
- $sk = $user->getSkin();
+ /**
+ * Fetch an appropriate changes list class for the specified context
+ * Some users might want to use an enhanced list format, for instance
+ *
+ * @param $context IContextSource to use
+ * @return ChangesList|EnhancedChangesList|OldChangesList derivative
+ */
+ public static function newFromContext( IContextSource $context ) {
+ $user = $context->getUser();
+ $sk = $context->getSkin();
$list = null;
- if( wfRunHooks( 'FetchChangesList', array( &$user, &$sk, &$list ) ) ) {
- $new = $wgRequest->getBool( 'enhanced', $user->getOption( 'usenewrc' ) );
- return $new ? new EnhancedChangesList( $sk ) : new OldChangesList( $sk );
+ if( wfRunHooks( 'FetchChangesList', array( $user, &$sk, &$list ) ) ) {
+ $new = $context->getRequest()->getBool( 'enhanced', $user->getOption( 'usenewrc' ) );
+ return $new ? new EnhancedChangesList( $context ) : new OldChangesList( $context );
} else {
return $list;
}
}
-
+
/**
* Sets the list to use a <li class="watchlist-(namespace)-(page)"> tag
* @param $value Boolean
@@ -81,21 +110,19 @@ class ChangesList {
}
}
-
/**
* Returns the appropriate flags for new page, minor change and patrolling
- * @param $new Boolean
- * @param $minor Boolean
- * @param $patrolled Boolean
+ * @param $flags Array Associative array of 'flag' => Bool
* @param $nothing String to use for empty space
- * @param $bot Boolean
* @return String
*/
- protected function recentChangesFlags( $new, $minor, $patrolled, $nothing = '&#160;', $bot = false ) {
- $f = $new ? self::flag( 'newpage' ) : $nothing;
- $f .= $minor ? self::flag( 'minor' ) : $nothing;
- $f .= $bot ? self::flag( 'bot' ) : $nothing;
- $f .= $patrolled ? self::flag( 'unpatrolled' ) : $nothing;
+ protected function recentChangesFlags( $flags, $nothing = '&#160;' ) {
+ $f = '';
+ foreach( array( 'newpage', 'minor', 'bot', 'unpatrolled' ) as $flag ){
+ $f .= isset( $flags[$flag] ) && $flags[$flag]
+ ? self::flag( $flag )
+ : $nothing;
+ }
return $f;
}
@@ -105,28 +132,36 @@ class ChangesList {
* unpatrolled edit. By default in English it will contain "N", "m", "b",
* "!" respectively, plus it will have an appropriate title and class.
*
- * @param $key String: 'newpage', 'unpatrolled', 'minor', or 'bot'
+ * @param $flag String: 'newpage', 'unpatrolled', 'minor', or 'bot'
* @return String: Raw HTML
*/
- public static function flag( $key ) {
+ public static function flag( $flag ) {
static $messages = null;
if ( is_null( $messages ) ) {
- foreach ( explode( ' ', 'minoreditletter boteditletter newpageletter ' .
- 'unpatrolledletter recentchanges-label-minor recentchanges-label-bot ' .
- 'recentchanges-label-newpage recentchanges-label-unpatrolled' ) as $msg ) {
- $messages[$msg] = wfMsgExt( $msg, 'escapenoentities' );
+ $messages = array(
+ 'newpage' => array( 'newpageletter', 'recentchanges-label-newpage' ),
+ 'minoredit' => array( 'minoreditletter', 'recentchanges-label-minor' ),
+ 'botedit' => array( 'boteditletter', 'recentchanges-label-bot' ),
+ 'unpatrolled' => array( 'unpatrolledletter', 'recentchanges-label-unpatrolled' ),
+ );
+ foreach( $messages as &$value ) {
+ $value[0] = wfMsgExt( $value[0], 'escapenoentities' );
+ $value[1] = wfMsgExt( $value[1], 'escapenoentities' );
}
}
+
# Inconsistent naming, bleh
- if ( $key == 'newpage' || $key == 'unpatrolled' ) {
- $key2 = $key;
- } else {
- $key2 = $key . 'edit';
- }
- return "<abbr class=\"$key\" title=\""
- . $messages["recentchanges-label-$key"] . "\">"
- . $messages["${key2}letter"]
- . '</abbr>';
+ $map = array(
+ 'newpage' => 'newpage',
+ 'minor' => 'minoredit',
+ 'bot' => 'botedit',
+ 'unpatrolled' => 'unpatrolled',
+ 'minoredit' => 'minoredit',
+ 'botedit' => 'botedit',
+ );
+ $flag = $map[$flag];
+
+ return "<abbr class='$flag' title='" . $messages[$flag][1] . "'>" . $messages[$flag][0] . '</abbr>';
}
/**
@@ -141,12 +176,12 @@ class ChangesList {
$this->rclistOpen = false;
return '';
}
-
+
/**
* Show formatted char difference
* @param $old Integer: bytes
* @param $new Integer: bytes
- * @returns String
+ * @return String
*/
public static function showCharacterDifference( $old, $new ) {
global $wgRCChangedSizeThreshold, $wgLang, $wgMiserMode;
@@ -157,29 +192,29 @@ class ChangesList {
if ( !isset($fastCharDiff[$code]) ) {
$fastCharDiff[$code] = $wgMiserMode || wfMsgNoTrans( 'rc-change-size' ) === '$1';
}
-
+
$formatedSize = $wgLang->formatNum($szdiff);
if ( !$fastCharDiff[$code] ) {
$formatedSize = wfMsgExt( 'rc-change-size', array( 'parsemag', 'escape' ), $formatedSize );
}
-
+
if( abs( $szdiff ) > abs( $wgRCChangedSizeThreshold ) ) {
$tag = 'strong';
} else {
- $tag = 'span';
+ $tag = 'span';
}
if( $szdiff === 0 ) {
return "<$tag class='mw-plusminus-null'>($formatedSize)</$tag>";
} elseif( $szdiff > 0 ) {
return "<$tag class='mw-plusminus-pos'>(+$formatedSize)</$tag>";
- } else {
+ } else {
return "<$tag class='mw-plusminus-neg'>($formatedSize)</$tag>";
}
}
/**
- * Returns text for the end of RC
+ * Returns text for the end of RC
* @return String
*/
public function endRecentChangesList() {
@@ -190,42 +225,38 @@ class ChangesList {
}
}
+ /**
+ * @param $s
+ * @param $rc RecentChange
+ * @return void
+ */
public function insertMove( &$s, $rc ) {
# Diff
$s .= '(' . $this->message['diff'] . ') (';
# Hist
- $s .= $this->skin->link(
+ $s .= Linker::linkKnown(
$rc->getMovedToTitle(),
$this->message['hist'],
array(),
- array( 'action' => 'history' ),
- array( 'known', 'noclasses' )
+ array( 'action' => 'history' )
) . ') . . ';
# "[[x]] moved to [[y]]"
$msg = ( $rc->mAttribs['rc_type'] == RC_MOVE ) ? '1movedto2' : '1movedto2_redir';
- $s .= wfMsg(
+ $s .= wfMsgHtml(
$msg,
- $this->skin->link(
+ Linker::linkKnown(
$rc->getTitle(),
null,
array(),
- array( 'redirect' => 'no' ),
- array( 'known', 'noclasses' )
+ array( 'redirect' => 'no' )
),
- $this->skin->link(
- $rc->getMovedToTitle(),
- null,
- array(),
- array(),
- array( 'known', 'noclasses' )
- )
+ Linker::linkKnown( $rc->getMovedToTitle() )
);
}
public function insertDateHeader( &$s, $rc_timestamp ) {
- global $wgLang;
# Make date header if necessary
- $date = $wgLang->date( $rc_timestamp, true, true );
+ $date = $this->getLang()->date( $rc_timestamp, true, true );
if( $date != $this->lastdate ) {
if( $this->lastdate != '' ) {
$s .= "</ul>\n";
@@ -238,20 +269,20 @@ class ChangesList {
public function insertLog( &$s, $title, $logtype ) {
$logname = LogPage::logName( $logtype );
- $s .= '(' . $this->skin->link(
- $title,
- $logname,
- array(),
- array(),
- array( 'known', 'noclasses' )
- ) . ')';
+ $s .= '(' . Linker::linkKnown( $title, htmlspecialchars( $logname ) ) . ')';
}
+ /**
+ * @param $s
+ * @param $rc RecentChange
+ * @param $unpatrolled
+ * @return void
+ */
public function insertDiffHist( &$s, &$rc, $unpatrolled ) {
# Diff link
if( $rc->mAttribs['rc_type'] == RC_NEW || $rc->mAttribs['rc_type'] == RC_LOG ) {
$diffLink = $this->message['diff'];
- } else if( !self::userCan($rc,Revision::DELETED_TEXT) ) {
+ } elseif( !self::userCan($rc,Revision::DELETED_TEXT) ) {
$diffLink = $this->message['diff'];
} else {
$query = array(
@@ -264,31 +295,35 @@ class ChangesList {
$query['rcid'] = $rc->mAttribs['rc_id'];
};
- $diffLink = $this->skin->link(
+ $diffLink = Linker::linkKnown(
$rc->getTitle(),
$this->message['diff'],
array( 'tabindex' => $rc->counter ),
- $query,
- array( 'known', 'noclasses' )
+ $query
);
}
$s .= '(' . $diffLink . $this->message['pipe-separator'];
# History link
- $s .= $this->skin->link(
+ $s .= Linker::linkKnown(
$rc->getTitle(),
$this->message['hist'],
array(),
array(
'curid' => $rc->mAttribs['rc_cur_id'],
'action' => 'history'
- ),
- array( 'known', 'noclasses' )
+ )
);
$s .= ') . . ';
}
+ /**
+ * @param $s
+ * @param $rc RecentChange
+ * @param $unpatrolled
+ * @param $watched
+ * @return void
+ */
public function insertArticleLink( &$s, &$rc, $unpatrolled, $watched ) {
- global $wgContLang;
# If it's a new article, there is no diff link, but if it hasn't been
# patrolled yet, we need to give users a way to do so
$params = array();
@@ -298,21 +333,19 @@ class ChangesList {
}
if( $this->isDeleted($rc,Revision::DELETED_TEXT) ) {
- $articlelink = $this->skin->link(
+ $articlelink = Linker::linkKnown(
$rc->getTitle(),
null,
array(),
- $params,
- array( 'known', 'noclasses' )
+ $params
);
$articlelink = '<span class="history-deleted">' . $articlelink . '</span>';
} else {
- $articlelink = ' '. $this->skin->link(
+ $articlelink = ' '. Linker::linkKnown(
$rc->getTitle(),
null,
array(),
- $params,
- array( 'known', 'noclasses' )
+ $params
);
}
# Bolden pages watched by this user
@@ -320,7 +353,7 @@ class ChangesList {
$articlelink = "<strong class=\"mw-watched\">{$articlelink}</strong>";
}
# RTL/LTR marker
- $articlelink .= $wgContLang->getDirMark();
+ $articlelink .= $this->getLang()->getDirMark();
wfRunHooks( 'ChangesListInsertArticleLink',
array(&$this, &$articlelink, &$s, &$rc, $unpatrolled, $watched) );
@@ -328,41 +361,54 @@ class ChangesList {
$s .= " $articlelink";
}
+ /**
+ * @param $s
+ * @param $rc RecentChange
+ * @return void
+ */
public function insertTimestamp( &$s, $rc ) {
- global $wgLang;
- $s .= $this->message['semicolon-separator'] .
- $wgLang->time( $rc->mAttribs['rc_timestamp'], true, true ) . ' . . ';
+ $s .= $this->message['semicolon-separator'] .
+ $this->getLang()->time( $rc->mAttribs['rc_timestamp'], true, true ) . ' . . ';
}
- /** Insert links to user page, user talk page and eventually a blocking link */
+ /** Insert links to user page, user talk page and eventually a blocking link
+ *
+ * @param $rc RecentChange
+ */
public function insertUserRelatedLinks( &$s, &$rc ) {
if( $this->isDeleted( $rc, Revision::DELETED_USER ) ) {
- $s .= ' <span class="history-deleted">' . wfMsgHtml( 'rev-deleted-user' ) . '</span>';
+ $s .= ' <span class="history-deleted">' . wfMsgHtml( 'rev-deleted-user' ) . '</span>';
} else {
- $s .= $this->skin->userLink( $rc->mAttribs['rc_user'], $rc->mAttribs['rc_user_text'] );
- $s .= $this->skin->userToolLinks( $rc->mAttribs['rc_user'], $rc->mAttribs['rc_user_text'] );
+ $s .= Linker::userLink( $rc->mAttribs['rc_user'], $rc->mAttribs['rc_user_text'] );
+ $s .= Linker::userToolLinks( $rc->mAttribs['rc_user'], $rc->mAttribs['rc_user_text'] );
}
}
- /** insert a formatted action */
+ /** insert a formatted action
+ *
+ * @param $rc RecentChange
+ */
public function insertAction( &$s, &$rc ) {
if( $rc->mAttribs['rc_type'] == RC_LOG ) {
if( $this->isDeleted( $rc, LogPage::DELETED_ACTION ) ) {
$s .= ' <span class="history-deleted">' . wfMsgHtml( 'rev-deleted-event' ) . '</span>';
} else {
$s .= ' '.LogPage::actionText( $rc->mAttribs['rc_log_type'], $rc->mAttribs['rc_log_action'],
- $rc->getTitle(), $this->skin, LogPage::extractParams( $rc->mAttribs['rc_params'] ), true, true );
+ $rc->getTitle(), $this->getSkin(), LogPage::extractParams( $rc->mAttribs['rc_params'] ), true, true );
}
}
}
- /** insert a formatted comment */
+ /** insert a formatted comment
+ *
+ * @param $rc RecentChange
+ */
public function insertComment( &$s, &$rc ) {
if( $rc->mAttribs['rc_type'] != RC_MOVE && $rc->mAttribs['rc_type'] != RC_MOVE_OVER_REDIRECT ) {
if( $this->isDeleted( $rc, Revision::DELETED_COMMENT ) ) {
$s .= ' <span class="history-deleted">' . wfMsgHtml( 'rev-deleted-comment' ) . '</span>';
} else {
- $s .= $this->skin->commentBlock( $rc->mAttribs['rc_comment'], $rc->getTitle() );
+ $s .= Linker::commentBlock( $rc->mAttribs['rc_comment'], $rc->getTitle() );
}
}
}
@@ -380,12 +426,11 @@ class ChangesList {
* Returns the string which indicates the number of watching users
*/
protected function numberofWatchingusers( $count ) {
- global $wgLang;
static $cache = array();
if( $count > 0 ) {
if( !isset( $cache[$count] ) ) {
$cache[$count] = wfMsgExt( 'number_of_watching_users_RCview',
- array('parsemag', 'escape' ), $wgLang->formatNum( $count ) );
+ array('parsemag', 'escape' ), $this->getLang()->formatNum( $count ) );
}
return $cache[$count];
} else {
@@ -425,15 +470,18 @@ class ChangesList {
return '<span class="mw-rc-unwatched">' . $link . '</span>';
}
}
-
- /** Inserts a rollback link */
+
+ /** Inserts a rollback link
+ *
+ * @param $s
+ * @param $rc RecentChange
+ */
public function insertRollback( &$s, &$rc ) {
- global $wgUser;
if( !$rc->mAttribs['rc_new'] && $rc->mAttribs['rc_this_oldid'] && $rc->mAttribs['rc_cur_id'] ) {
$page = $rc->getTitle();
/** Check for rollback and edit permissions, disallow special pages, and only
* show a link on the top-most revision */
- if ($wgUser->isAllowed('rollback') && $rc->mAttribs['page_latest'] == $rc->mAttribs['rc_this_oldid'] )
+ if ( $this->getUser()->isAllowed('rollback') && $rc->mAttribs['page_latest'] == $rc->mAttribs['rc_this_oldid'] )
{
$rev = new Revision( array(
'id' => $rc->mAttribs['rc_this_oldid'],
@@ -442,15 +490,21 @@ class ChangesList {
'deleted' => $rc->mAttribs['rc_deleted']
) );
$rev->setTitle( $page );
- $s .= ' '.$this->skin->generateRollback( $rev );
+ $s .= ' '.Linker::generateRollback( $rev, $this->getContext() );
}
}
}
+ /**
+ * @param $s
+ * @param $rc RecentChange
+ * @param $classes
+ * @return
+ */
public function insertTags( &$s, &$rc, &$classes ) {
if ( empty($rc->mAttribs['ts_tags']) )
return;
-
+
list($tagSummary, $newClasses) = ChangeTags::formatSummaryRow( $rc->mAttribs['ts_tags'], 'changeslist' );
$classes = array_merge( $classes, $newClasses );
$s .= ' ' . $tagSummary;
@@ -468,12 +522,14 @@ class ChangesList {
class OldChangesList extends ChangesList {
/**
* Format a line using the old system (aka without any javascript).
+ *
+ * @param $rc RecentChange
*/
public function recentChangesLine( &$rc, $watched = false, $linenumber = null ) {
- global $wgLang, $wgRCShowChangedSize, $wgUser;
+ global $wgRCShowChangedSize;
wfProfileIn( __METHOD__ );
# Should patrol-related stuff be shown?
- $unpatrolled = $wgUser->useRCPatrol() && !$rc->mAttribs['rc_patrolled'];
+ $unpatrolled = $this->getUser()->useRCPatrol() && !$rc->mAttribs['rc_patrolled'];
$dateheader = ''; // $s now contains only <li>...</li>, for hooks' convenience.
$this->insertDateHeader( $dateheader, $rc->mAttribs['rc_timestamp'] );
@@ -499,7 +555,7 @@ class OldChangesList extends ChangesList {
$this->insertLog( $s, $logtitle, $rc->mAttribs['rc_log_type'] );
// Log entries (old format) or log targets, and special pages
} elseif( $rc->mAttribs['rc_namespace'] == NS_SPECIAL ) {
- list( $name, $subpage ) = SpecialPage::resolveAliasWithSubpage( $rc->mAttribs['rc_title'] );
+ list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $rc->mAttribs['rc_title'] );
if( $name == 'Log' ) {
$this->insertLog( $s, $rc->getTitle(), $subpage );
}
@@ -507,8 +563,15 @@ class OldChangesList extends ChangesList {
} else {
$this->insertDiffHist( $s, $rc, $unpatrolled );
# M, N, b and ! (minor, new, bot and unpatrolled)
- $s .= $this->recentChangesFlags( $rc->mAttribs['rc_new'], $rc->mAttribs['rc_minor'],
- $unpatrolled, '', $rc->mAttribs['rc_bot'] );
+ $s .= $this->recentChangesFlags(
+ array(
+ 'newpage' => $rc->mAttribs['rc_new'],
+ 'minor' => $rc->mAttribs['rc_minor'],
+ 'unpatrolled' => $unpatrolled,
+ 'bot' => $rc->mAttribs['rc_bot']
+ ),
+ ''
+ );
$this->insertArticleLink( $s, $rc, $unpatrolled, $watched );
}
# Edit/log timestamp
@@ -522,6 +585,8 @@ class OldChangesList extends ChangesList {
}
# User tool links
$this->insertUserRelatedLinks( $s, $rc );
+ # LTR/RTL direction mark
+ $s .= $this->getLang()->getDirMark();
# Log action text (if any)
$this->insertAction( $s, $rc );
# Edit or log comment
@@ -532,17 +597,17 @@ class OldChangesList extends ChangesList {
$this->insertRollback( $s, $rc );
# For subclasses
$this->insertExtra( $s, $rc, $classes );
-
+
# How many users watch this page
if( $rc->numberofWatchingusers > 0 ) {
- $s .= ' ' . wfMsgExt( 'number_of_watching_users_RCview',
- array( 'parsemag', 'escape' ), $wgLang->formatNum( $rc->numberofWatchingusers ) );
+ $s .= ' ' . wfMsgExt( 'number_of_watching_users_RCview',
+ array( 'parsemag', 'escape' ), $this->getLang()->formatNum( $rc->numberofWatchingusers ) );
}
-
+
if( $this->watchlist ) {
$classes[] = Sanitizer::escapeClass( 'watchlist-'.$rc->mAttribs['rc_namespace'].'-'.$rc->mAttribs['rc_title'] );
}
-
+
wfRunHooks( 'OldChangesListRecentChangesLine', array(&$this, &$s, $rc) );
wfProfileOut( __METHOD__ );
@@ -560,34 +625,32 @@ class EnhancedChangesList extends ChangesList {
* @return String
*/
public function beginRecentChangesList() {
- global $wgOut;
$this->rc_cache = array();
$this->rcMoveIndex = 0;
$this->rcCacheIndex = 0;
$this->lastdate = '';
$this->rclistOpen = false;
- $wgOut->addModules( 'mediawiki.legacy.enhancedchanges' );
+ $this->getOutput()->addModuleStyles( 'mediawiki.special.changeslist' );
return '';
}
/**
* Format a line for enhanced recentchange (aka with javascript and block of lines).
+ *
+ * @param $baseRC RecentChange
+ * @param $watched bool
+ *
+ * @return string
*/
public function recentChangesLine( &$baseRC, $watched = false ) {
- global $wgLang, $wgUser;
-
wfProfileIn( __METHOD__ );
# Create a specialised object
$rc = RCCacheEntry::newFromParent( $baseRC );
- # Extract fields from DB into the function scope (rc_xxxx variables)
- // FIXME: Would be good to replace this extract() call with something
- // that explicitly initializes variables.
- extract( $rc->mAttribs );
- $curIdEq = array( 'curid' => $rc_cur_id );
+ $curIdEq = array( 'curid' => $rc->mAttribs['rc_cur_id'] );
# If it's a new day, add the headline and flush the cache
- $date = $wgLang->date( $rc_timestamp, true );
+ $date = $this->getLang()->date( $rc->mAttribs['rc_timestamp'], true );
$ret = '';
if( $date != $this->lastdate ) {
# Process current cache
@@ -598,48 +661,50 @@ class EnhancedChangesList extends ChangesList {
}
# Should patrol-related stuff be shown?
- if( $wgUser->useRCPatrol() ) {
- $rc->unpatrolled = !$rc_patrolled;
+ if( $this->getUser()->useRCPatrol() ) {
+ $rc->unpatrolled = !$rc->mAttribs['rc_patrolled'];
} else {
$rc->unpatrolled = false;
}
$showdifflinks = true;
# Make article link
+ $type = $rc->mAttribs['rc_type'];
+ $logType = $rc->mAttribs['rc_log_type'];
// Page moves
- if( $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
- $msg = ( $rc_type == RC_MOVE ) ? "1movedto2" : "1movedto2_redir";
- $clink = wfMsg( $msg, $this->skin->linkKnown( $rc->getTitle(), null,
+ if( $type == RC_MOVE || $type == RC_MOVE_OVER_REDIRECT ) {
+ $msg = ( $type == RC_MOVE ) ? "1movedto2" : "1movedto2_redir";
+ $clink = wfMsg( $msg, Linker::linkKnown( $rc->getTitle(), null,
array(), array( 'redirect' => 'no' ) ),
- $this->skin->linkKnown( $rc->getMovedToTitle() ) );
+ Linker::linkKnown( $rc->getMovedToTitle() ) );
// New unpatrolled pages
- } else if( $rc->unpatrolled && $rc_type == RC_NEW ) {
- $clink = $this->skin->linkKnown( $rc->getTitle(), null, array(),
- array( 'rcid' => $rc_id ) );
+ } elseif( $rc->unpatrolled && $type == RC_NEW ) {
+ $clink = Linker::linkKnown( $rc->getTitle(), null, array(),
+ array( 'rcid' => $rc->mAttribs['rc_id'] ) );
// Log entries
- } else if( $rc_type == RC_LOG ) {
- if( $rc_log_type ) {
- $logtitle = SpecialPage::getTitleFor( 'Log', $rc_log_type );
- $clink = '(' . $this->skin->linkKnown( $logtitle,
- LogPage::logName($rc_log_type) ) . ')';
+ } elseif( $type == RC_LOG ) {
+ if( $logType ) {
+ $logtitle = SpecialPage::getTitleFor( 'Log', $logType );
+ $clink = '(' . Linker::linkKnown( $logtitle,
+ LogPage::logName( $logType ) ) . ')';
} else {
- $clink = $this->skin->link( $rc->getTitle() );
+ $clink = Linker::link( $rc->getTitle() );
}
$watched = false;
// Log entries (old format) and special pages
- } elseif( $rc_namespace == NS_SPECIAL ) {
- list( $specialName, $logtype ) = SpecialPage::resolveAliasWithSubpage( $rc_title );
+ } elseif( $rc->mAttribs['rc_namespace'] == NS_SPECIAL ) {
+ list( $specialName, $logtype ) = SpecialPageFactory::resolveAlias( $rc->mAttribs['rc_title'] );
if ( $specialName == 'Log' ) {
# Log updates, etc
$logname = LogPage::logName( $logtype );
- $clink = '(' . $this->skin->linkKnown( $rc->getTitle(), $logname ) . ')';
+ $clink = '(' . Linker::linkKnown( $rc->getTitle(), $logname ) . ')';
} else {
wfDebug( "Unexpected special page in recentchanges\n" );
$clink = '';
}
// Edits
} else {
- $clink = $this->skin->linkKnown( $rc->getTitle() );
+ $clink = Linker::linkKnown( $rc->getTitle() );
}
# Don't show unusable diff links
@@ -647,7 +712,7 @@ class EnhancedChangesList extends ChangesList {
$showdifflinks = false;
}
- $time = $wgLang->time( $rc_timestamp, true, true );
+ $time = $this->getLang()->time( $rc->mAttribs['rc_timestamp'], true, true );
$rc->watched = $watched;
$rc->link = $clink;
$rc->timestamp = $time;
@@ -655,20 +720,22 @@ class EnhancedChangesList extends ChangesList {
# Make "cur" and "diff" links. Do not use link(), it is too slow if
# called too many times (50% of CPU time on RecentChanges!).
+ $thisOldid = $rc->mAttribs['rc_this_oldid'];
+ $lastOldid = $rc->mAttribs['rc_last_oldid'];
if( $rc->unpatrolled ) {
- $rcIdQuery = array( 'rcid' => $rc_id );
+ $rcIdQuery = array( 'rcid' => $rc->mAttribs['rc_id'] );
} else {
$rcIdQuery = array();
}
- $querycur = $curIdEq + array( 'diff' => '0', 'oldid' => $rc_this_oldid );
- $querydiff = $curIdEq + array( 'diff' => $rc_this_oldid, 'oldid' =>
- $rc_last_oldid ) + $rcIdQuery;
+ $querycur = $curIdEq + array( 'diff' => '0', 'oldid' => $thisOldid );
+ $querydiff = $curIdEq + array( 'diff' => $thisOldid, 'oldid' =>
+ $lastOldid ) + $rcIdQuery;
if( !$showdifflinks ) {
$curLink = $this->message['cur'];
$diffLink = $this->message['diff'];
- } else if( in_array( $rc_type, array(RC_NEW,RC_LOG,RC_MOVE,RC_MOVE_OVER_REDIRECT) ) ) {
- if ( $rc_type != RC_NEW ) {
+ } elseif( in_array( $type, array( RC_NEW, RC_LOG, RC_MOVE, RC_MOVE_OVER_REDIRECT ) ) ) {
+ if ( $type != RC_NEW ) {
$curLink = $this->message['cur'];
} else {
$curUrl = htmlspecialchars( $rc->getTitle()->getLinkUrl( $querycur ) );
@@ -683,21 +750,21 @@ class EnhancedChangesList extends ChangesList {
}
# Make "last" link
- if( !$showdifflinks || !$rc_last_oldid ) {
+ if( !$showdifflinks || !$lastOldid ) {
$lastLink = $this->message['last'];
- } else if( $rc_type == RC_LOG || $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
+ } elseif( in_array( $type, array( RC_LOG, RC_MOVE, RC_MOVE_OVER_REDIRECT ) ) ) {
$lastLink = $this->message['last'];
} else {
- $lastLink = $this->skin->linkKnown( $rc->getTitle(), $this->message['last'],
- array(), $curIdEq + array('diff' => $rc_this_oldid, 'oldid' => $rc_last_oldid) + $rcIdQuery );
+ $lastLink = Linker::linkKnown( $rc->getTitle(), $this->message['last'],
+ array(), $curIdEq + array('diff' => $thisOldid, 'oldid' => $lastOldid) + $rcIdQuery );
}
# Make user links
- if( $this->isDeleted($rc,Revision::DELETED_USER) ) {
- $rc->userlink = ' <span class="history-deleted">' . wfMsgHtml( 'rev-deleted-user' ) . '</span>';
+ if( $this->isDeleted( $rc, Revision::DELETED_USER ) ) {
+ $rc->userlink = ' <span class="history-deleted">' . wfMsgHtml( 'rev-deleted-user' ) . '</span>';
} else {
- $rc->userlink = $this->skin->userLink( $rc_user, $rc_user_text );
- $rc->usertalklink = $this->skin->userToolLinks( $rc_user, $rc_user_text );
+ $rc->userlink = Linker::userLink( $rc->mAttribs['rc_user'], $rc->mAttribs['rc_user_text'] );
+ $rc->usertalklink = Linker::userToolLinks( $rc->mAttribs['rc_user'], $rc->mAttribs['rc_user_text'] );
}
$rc->lastlink = $lastLink;
@@ -708,13 +775,13 @@ class EnhancedChangesList extends ChangesList {
# Page moves go on their own line
$title = $rc->getTitle();
$secureName = $title->getPrefixedDBkey();
- if( $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
+ if( $type == RC_MOVE || $type == RC_MOVE_OVER_REDIRECT ) {
# Use an @ character to prevent collision with page names
$this->rc_cache['@@' . ($this->rcMoveIndex++)] = array($rc);
} else {
# Logs are grouped by type
- if( $rc_type == RC_LOG ){
- $secureName = SpecialPage::getTitleFor( 'Log', $rc_log_type )->getPrefixedDBkey();
+ if( $type == RC_LOG ){
+ $secureName = SpecialPage::getTitleFor( 'Log', $logType )->getPrefixedDBkey();
}
if( !isset( $this->rc_cache[$secureName] ) ) {
$this->rc_cache[$secureName] = array();
@@ -732,16 +799,16 @@ class EnhancedChangesList extends ChangesList {
* Enhanced RC group
*/
protected function recentChangesBlockGroup( $block ) {
- global $wgLang, $wgContLang, $wgRCShowChangedSize;
+ global $wgRCShowChangedSize;
wfProfileIn( __METHOD__ );
# Add the namespace and title of the block as part of the class
if ( $block[0]->mAttribs['rc_log_type'] ) {
# Log entry
- $classes = 'mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-log-' . $block[0]->mAttribs['rc_log_type'] . '-' . $block[0]->mAttribs['rc_title'] );
+ $classes = 'mw-collapsible mw-collapsed mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-log-' . $block[0]->mAttribs['rc_log_type'] . '-' . $block[0]->mAttribs['rc_title'] );
} else {
- $classes = 'mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-ns' . $block[0]->mAttribs['rc_namespace'] . '-' . $block[0]->mAttribs['rc_title'] );
+ $classes = 'mw-collapsible mw-collapsed mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-ns' . $block[0]->mAttribs['rc_namespace'] . '-' . $block[0]->mAttribs['rc_title'] );
}
$r = Html::openElement( 'table', array( 'class' => $classes ) ) .
Html::openElement( 'tr' );
@@ -794,51 +861,56 @@ class EnhancedChangesList extends ChangesList {
$users = array();
foreach( $userlinks as $userlink => $count) {
$text = $userlink;
- $text .= $wgContLang->getDirMark();
+ $text .= $this->getLang()->getDirMark();
if( $count > 1 ) {
- $text .= ' (' . $wgLang->formatNum( $count ) . '×)';
+ $text .= ' (' . $this->getLang()->formatNum( $count ) . '×)';
}
array_push( $users, $text );
}
- $users = ' <span class="changedby">[' .
+ $users = ' <span class="changedby">[' .
implode( $this->message['semicolon-separator'], $users ) . ']</span>';
- # ID for JS visibility toggle
- $jsid = $this->rcCacheIndex;
- # onclick handler to toggle hidden/expanded
- $toggleLink = "onclick='toggleVisibility($jsid); return false'";
# Title for <a> tags
$expandTitle = htmlspecialchars( wfMsg( 'rc-enhanced-expand' ) );
$closeTitle = htmlspecialchars( wfMsg( 'rc-enhanced-hide' ) );
- $tl = "<span id='mw-rc-openarrow-$jsid' class='mw-changeslist-expanded' style='visibility:hidden'><a href='#' $toggleLink title='$expandTitle'>" . $this->sideArrow() . "</a></span>";
- $tl .= "<span id='mw-rc-closearrow-$jsid' class='mw-changeslist-hidden' style='display:none'><a href='#' $toggleLink title='$closeTitle'>" . $this->downArrow() . "</a></span>";
- $r .= '<td class="mw-enhanced-rc">'.$tl.'&#160;';
+ $tl = "<span class='mw-collapsible-toggle'>"
+ . "<span class='mw-rc-openarrow'>"
+ . "<a href='#' title='$expandTitle'>{$this->sideArrow()}</a>"
+ . "</span><span class='mw-rc-closearrow'>"
+ . "<a href='#' title='$closeTitle'>{$this->downArrow()}</a>"
+ . "</span></span>";
+ $r .= "<td>$tl</td>";
# Main line
- $r .= $this->recentChangesFlags( $isnew, false, $unpatrolled, '&#160;', $bot );
+ $r .= '<td class="mw-enhanced-rc">' . $this->recentChangesFlags( array(
+ 'newpage' => $isnew,
+ 'minor' => false,
+ 'unpatrolled' => $unpatrolled,
+ 'bot' => $bot ,
+ ) );
# Timestamp
- $r .= '&#160;'.$block[0]->timestamp.'&#160;</td><td style="padding:0px;">';
+ $r .= '&#160;'.$block[0]->timestamp.'&#160;</td><td>';
# Article link
if( $namehidden ) {
$r .= ' <span class="history-deleted">' . wfMsgHtml( 'rev-deleted-event' ) . '</span>';
- } else if( $allLogs ) {
+ } elseif( $allLogs ) {
$r .= $this->maybeWatchedLink( $block[0]->link, $block[0]->watched );
} else {
$this->insertArticleLink( $r, $block[0], $block[0]->unpatrolled, $block[0]->watched );
}
- $r .= $wgContLang->getDirMark();
+ $r .= $this->getLang()->getDirMark();
$queryParams['curid'] = $curId;
# Changes message
$n = count($block);
static $nchanges = array();
if ( !isset( $nchanges[$n] ) ) {
- $nchanges[$n] = wfMsgExt( 'nchanges', array( 'parsemag', 'escape' ), $wgLang->formatNum( $n ) );
+ $nchanges[$n] = wfMsgExt( 'nchanges', array( 'parsemag', 'escape' ), $this->getLang()->formatNum( $n ) );
}
# Total change link
$r .= ' ';
@@ -846,14 +918,14 @@ class EnhancedChangesList extends ChangesList {
$r .= '(';
if( !ChangesList::userCan( $rcObj, Revision::DELETED_TEXT ) ) {
$r .= $nchanges[$n];
- } else if( $isnew ) {
+ } elseif( $isnew ) {
$r .= $nchanges[$n];
} else {
$params = $queryParams;
$params['diff'] = $currentRevision;
$params['oldid'] = $oldid;
-
- $r .= $this->skin->link(
+
+ $r .= Linker::link(
$block[0]->getTitle(),
$nchanges[$n],
array(),
@@ -866,19 +938,18 @@ class EnhancedChangesList extends ChangesList {
# History
if( $allLogs ) {
// don't show history link for logs
- } else if( $namehidden || !$block[0]->getTitle()->exists() ) {
+ } elseif( $namehidden || !$block[0]->getTitle()->exists() ) {
$r .= $this->message['pipe-separator'] . $this->message['hist'] . ')';
} else {
$params = $queryParams;
$params['action'] = 'history';
$r .= $this->message['pipe-separator'] .
- $this->skin->link(
+ Linker::linkKnown(
$block[0]->getTitle(),
$this->message['hist'],
array(),
- $params,
- array( 'known', 'noclasses' )
+ $params
) . ')';
}
$r .= ' . . ';
@@ -908,55 +979,51 @@ class EnhancedChangesList extends ChangesList {
$r .= $users;
$r .= $this->numberofWatchingusers($block[0]->numberofWatchingusers);
- $r .= "</td></tr></table>\n";
-
# Sub-entries
- $r .= '<div id="mw-rc-subentries-'.$jsid.'" class="mw-changeslist-hidden">';
- $r .= '<table class="mw-enhanced-rc">';
foreach( $block as $rcObj ) {
- # Extract fields from DB into the function scope (rc_xxxx variables)
- // FIXME: Would be good to replace this extract() call with something
- // that explicitly initializes variables.
# Classes to apply -- TODO implement
$classes = array();
- extract( $rcObj->mAttribs );
+ $type = $rcObj->mAttribs['rc_type'];
#$r .= '<tr><td valign="top">'.$this->spacerArrow();
- $r .= '<tr><td style="vertical-align:top;font-family:monospace; padding:0px;">';
- $r .= $this->spacerIndent() . $this->spacerIndent();
- $r .= $this->recentChangesFlags( $rc_new, $rc_minor, $rcObj->unpatrolled, '&#160;', $rc_bot );
- $r .= '&#160;</td><td style="vertical-align:top; padding:0px;"><span style="font-family:monospace">';
+ $r .= '<tr><td></td><td class="mw-enhanced-rc">';
+ $r .= $this->recentChangesFlags( array(
+ 'newpage' => $rcObj->mAttribs['rc_new'],
+ 'minor' => $rcObj->mAttribs['rc_minor'],
+ 'unpatrolled' => $rcObj->unpatrolled,
+ 'bot' => $rcObj->mAttribs['rc_bot'],
+ ) );
+ $r .= '&#160;</td><td class="mw-enhanced-rc-nested"><span class="mw-enhanced-rc-time">';
$params = $queryParams;
- if( $rc_this_oldid != 0 ) {
- $params['oldid'] = $rc_this_oldid;
+ if( $rcObj->mAttribs['rc_this_oldid'] != 0 ) {
+ $params['oldid'] = $rcObj->mAttribs['rc_this_oldid'];
}
# Log timestamp
- if( $rc_type == RC_LOG ) {
+ if( $type == RC_LOG ) {
$link = $rcObj->timestamp;
# Revision link
- } else if( !ChangesList::userCan($rcObj,Revision::DELETED_TEXT) ) {
+ } elseif( !ChangesList::userCan($rcObj,Revision::DELETED_TEXT) ) {
$link = '<span class="history-deleted">'.$rcObj->timestamp.'</span> ';
} else {
- if ( $rcObj->unpatrolled && $rc_type == RC_NEW) {
+ if ( $rcObj->unpatrolled && $type == RC_NEW) {
$params['rcid'] = $rcObj->mAttribs['rc_id'];
}
- $link = $this->skin->link(
+ $link = Linker::linkKnown(
$rcObj->getTitle(),
$rcObj->timestamp,
array(),
- $params,
- array( 'known', 'noclasses' )
+ $params
);
if( $this->isDeleted($rcObj,Revision::DELETED_TEXT) )
$link = '<span class="history-deleted">'.$link.'</span> ';
}
$r .= $link . '</span>';
- if ( !$rc_type == RC_LOG || $rc_type == RC_NEW ) {
+ if ( !$type == RC_LOG || $type == RC_NEW ) {
$r .= ' (';
$r .= $rcObj->curlink;
$r .= $this->message['pipe-separator'];
@@ -966,9 +1033,10 @@ class EnhancedChangesList extends ChangesList {
$r .= ' . . ';
# Character diff
- if( $wgRCShowChangedSize ) {
- $r .= ( $rcObj->getCharacterDifference() == '' ? '' : $rcObj->getCharacterDifference() . ' . . ' ) ;
+ if( $wgRCShowChangedSize && $rcObj->getCharacterDifference() ) {
+ $r .= $rcObj->getCharacterDifference() . ' . . ' ;
}
+
# User links
$r .= $rcObj->userlink;
$r .= $rcObj->usertalklink;
@@ -983,7 +1051,7 @@ class EnhancedChangesList extends ChangesList {
$r .= "</td></tr>\n";
}
- $r .= "</table></div>\n";
+ $r .= "</table>\n";
$this->rcCacheIndex++;
@@ -1013,8 +1081,8 @@ class EnhancedChangesList extends ChangesList {
* @return String: HTML <img> tag
*/
protected function sideArrow() {
- global $wgContLang;
- $dir = $wgContLang->isRTL() ? 'l' : 'r';
+ global $wgLang;
+ $dir = $wgLang->isRTL() ? 'l' : 'r';
return $this->arrow( $dir, '+', wfMsg( 'rc-enhanced-expand' ) );
}
@@ -1036,70 +1104,58 @@ class EnhancedChangesList extends ChangesList {
}
/**
- * Add a set of spaces
- * @return String: HTML <td> tag
- */
- protected function spacerIndent() {
- return '&#160;&#160;&#160;&#160;&#160;';
- }
-
- /**
* Enhanced RC ungrouped line.
+ *
+ * @param $rcObj RecentChange
* @return String: a HTML formated line (generated using $r)
*/
protected function recentChangesBlockLine( $rcObj ) {
global $wgRCShowChangedSize;
wfProfileIn( __METHOD__ );
+ $query['curid'] = $rcObj->mAttribs['rc_cur_id'];
- # Extract fields from DB into the function scope (rc_xxxx variables)
- // FIXME: Would be good to replace this extract() call with something
- // that explicitly initializes variables.
- // TODO implement
- extract( $rcObj->mAttribs );
- $query['curid'] = $rc_cur_id;
-
- if( $rc_log_type ) {
+ $type = $rcObj->mAttribs['rc_type'];
+ $logType = $rcObj->mAttribs['rc_log_type'];
+ if( $logType ) {
# Log entry
- $classes = 'mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-log-' . $rc_log_type . '-' . $rcObj->mAttribs['rc_title'] );
+ $classes = 'mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-log-' . $logType . '-' . $rcObj->mAttribs['rc_title'] );
} else {
$classes = 'mw-enhanced-rc ' . Sanitizer::escapeClass( 'mw-changeslist-ns' . $rcObj->mAttribs['rc_namespace'] . '-' . $rcObj->mAttribs['rc_title'] );
}
$r = Html::openElement( 'table', array( 'class' => $classes ) ) .
Html::openElement( 'tr' );
- $r .= '<td class="mw-enhanced-rc">' . $this->spacerArrow() . '&#160;';
+ $r .= '<td class="mw-enhanced-rc">' . $this->spacerArrow();
# Flag and Timestamp
- if( $rc_type == RC_MOVE || $rc_type == RC_MOVE_OVER_REDIRECT ) {
+ if( $type == RC_MOVE || $type == RC_MOVE_OVER_REDIRECT ) {
$r .= '&#160;&#160;&#160;&#160;'; // 4 flags -> 4 spaces
} else {
- $r .= $this->recentChangesFlags( $rc_type == RC_NEW, $rc_minor, $rcObj->unpatrolled, '&#160;', $rc_bot );
+ $r .= $this->recentChangesFlags( array(
+ 'newpage' => $type == RC_NEW,
+ 'minor' => $rcObj->mAttribs['rc_minor'],
+ 'unpatrolled' => $rcObj->unpatrolled,
+ 'bot' => $rcObj->mAttribs['rc_bot'],
+ ) );
}
- $r .= '&#160;'.$rcObj->timestamp.'&#160;</td><td style="padding:0px;">';
+ $r .= '&#160;'.$rcObj->timestamp.'&#160;</td><td>';
# Article or log link
- if( $rc_log_type ) {
- $logtitle = Title::newFromText( "Log/$rc_log_type", NS_SPECIAL );
- $logname = LogPage::logName( $rc_log_type );
- $r .= '(' . $this->skin->link(
- $logtitle,
- $logname,
- array(),
- array(),
- array( 'known', 'noclasses' )
- ) . ')';
+ if( $logType ) {
+ $logtitle = SpecialPage::getTitleFor( 'Log', $logType );
+ $logname = LogPage::logName( $logType );
+ $r .= '(' . Linker::linkKnown( $logtitle, htmlspecialchars( $logname ) ) . ')';
} else {
$this->insertArticleLink( $r, $rcObj, $rcObj->unpatrolled, $rcObj->watched );
}
# Diff and hist links
- if ( $rc_type != RC_LOG ) {
+ if ( $type != RC_LOG ) {
$r .= ' ('. $rcObj->difflink . $this->message['pipe-separator'];
$query['action'] = 'history';
- $r .= $this->skin->link(
+ $r .= Linker::linkKnown(
$rcObj->getTitle(),
$this->message['hist'],
array(),
- $query,
- array( 'known', 'noclasses' )
+ $query
) . ')';
}
$r .= ' . . ';
@@ -1110,12 +1166,12 @@ class EnhancedChangesList extends ChangesList {
# User/talk
$r .= ' '.$rcObj->userlink . $rcObj->usertalklink;
# Log action (if any)
- if( $rc_log_type ) {
+ if( $logType ) {
if( $this->isDeleted($rcObj,LogPage::DELETED_ACTION) ) {
$r .= ' <span class="history-deleted">' . wfMsgHtml('rev-deleted-event') . '</span>';
} else {
- $r .= ' ' . LogPage::actionText( $rc_log_type, $rc_log_action, $rcObj->getTitle(),
- $this->skin, LogPage::extractParams($rc_params), true, true );
+ $r .= ' ' . LogPage::actionText( $logType, $rcObj->mAttribs['rc_log_action'], $rcObj->getTitle(),
+ $this->getSkin(), LogPage::extractParams( $rcObj->mAttribs['rc_params'] ), true, true );
}
}
$this->insertComment( $r, $rcObj );
@@ -1136,6 +1192,8 @@ class EnhancedChangesList extends ChangesList {
/**
* If enhanced RC is in use, this function takes the previously cached
* RC lines, arranges them, and outputs the HTML
+ *
+ * @return string
*/
protected function recentChangesBlock() {
if( count ( $this->rc_cache ) == 0 ) {
@@ -1159,7 +1217,7 @@ class EnhancedChangesList extends ChangesList {
}
/**
- * Returns text for the end of RC
+ * Returns text for the end of RC
* If enhanced RC is in use, returns pretty much all the text
*/
public function endRecentChangesList() {
diff --git a/includes/Collation.php b/includes/Collation.php
index f00b568f..0c510b78 100644
--- a/includes/Collation.php
+++ b/includes/Collation.php
@@ -3,6 +3,9 @@
abstract class Collation {
static $instance;
+ /**
+ * @return Collation
+ */
static function singleton() {
if ( !self::$instance ) {
global $wgCategoryCollation;
@@ -11,13 +14,30 @@ abstract class Collation {
return self::$instance;
}
+ /**
+ * @throws MWException
+ * @param $collationName string
+ * @return Collation
+ */
static function factory( $collationName ) {
switch( $collationName ) {
case 'uppercase':
return new UppercaseCollation;
+ case 'identity':
+ return new IdentityCollation;
case 'uca-default':
return new IcuCollation( 'root' );
default:
+ # Provide a mechanism for extensions to hook in.
+
+ $collationObject = null;
+ wfRunHooks( 'Collation::factory', array( $collationName, &$collationObject ) );
+
+ if ( $collationObject instanceof Collation ) {
+ return $collationObject;
+ }
+
+ // If all else fails...
throw new MWException( __METHOD__.": unknown collation type \"$collationName\"" );
}
}
@@ -81,6 +101,30 @@ class UppercaseCollation extends Collation {
}
}
+/**
+ * Collation class that's essentially a no-op.
+ *
+ * Does sorting based on binary value of the string.
+ * Like how things were pre 1.17.
+ */
+class IdentityCollation extends Collation {
+
+ function getSortKey( $string ) {
+ return $string;
+ }
+
+ function getFirstLetter( $string ) {
+ global $wgContLang;
+ // Copied from UppercaseCollation.
+ // I'm kind of unclear on when this could happen...
+ if ( $string[0] == "\0" ) {
+ $string = substr( $string, 1 );
+ }
+ return $wgContLang->firstChar( $string );
+ }
+}
+
+
class IcuCollation extends Collation {
var $primaryCollator, $mainCollator, $locale;
var $firstLetterData;
@@ -259,13 +303,13 @@ class IcuCollation extends Collation {
* Do a binary search, and return the index of the largest item that sorts
* less than or equal to the target value.
*
- * @param $valueCallback A function to call to get the value with
+ * @param $valueCallback array A function to call to get the value with
* a given array index.
- * @param $valueCount The number of items accessible via $valueCallback,
+ * @param $valueCount int The number of items accessible via $valueCallback,
* indexed from 0 to $valueCount - 1
- * @param $comparisonCallback A callback to compare two values, returning
+ * @param $comparisonCallback array A callback to compare two values, returning
* -1, 0 or 1 in the style of strcmp().
- * @param $target The target value to find.
+ * @param $target string The target value to find.
*
* @return The item index of the lower bound, or false if the target value
* sorts before all items.
diff --git a/includes/ConfEditor.php b/includes/ConfEditor.php
index b08b77df..42a7173d 100644
--- a/includes/ConfEditor.php
+++ b/includes/ConfEditor.php
@@ -1,6 +1,6 @@
<?php
-/**
+/**
* This is a state machine style parser with two internal stacks:
* * A next state stack, which determines the state the machine will progress to next
* * A path stack, which keeps track of the logical location in the file.
@@ -40,8 +40,8 @@ class ConfEditor {
/** The previous ConfEditorToken object */
var $prevToken;
- /**
- * The state machine stack. This is an array of strings where the topmost
+ /**
+ * The state machine stack. This is an array of strings where the topmost
* element will be popped off and become the next parser state.
*/
var $stateStack;
@@ -66,7 +66,7 @@ class ConfEditor {
var $pathStack;
/**
- * The elements of the top of the pathStack for every path encountered, indexed
+ * The elements of the top of the pathStack for every path encountered, indexed
* by slash-separated path.
*/
var $pathInfo;
@@ -77,13 +77,17 @@ class ConfEditor {
var $serial;
/**
- * Editor state. This consists of the internal copy/insert operations which
+ * Editor state. This consists of the internal copy/insert operations which
* are applied to the source string to obtain the destination string.
*/
var $edits;
/**
* Simple entry point for command-line testing
+ *
+ * @param $text string
+ *
+ * @return string
*/
static function test( $text ) {
try {
@@ -103,7 +107,7 @@ class ConfEditor {
}
/**
- * Edit the text. Returns the edited text.
+ * Edit the text. Returns the edited text.
* @param $ops Array of operations.
*
* Operations are given as an associative array, with members:
@@ -114,20 +118,20 @@ class ConfEditor {
*
* delete
* Deletes an array element or statement with the specified path.
- * e.g.
+ * e.g.
* array('type' => 'delete', 'path' => '$foo/bar/baz' )
* is equivalent to the runtime PHP code:
* unset( $foo['bar']['baz'] );
*
* set
- * Sets the value of an array element. If the element doesn't exist, it
- * is appended to the array. If it does exist, the value is set, with
+ * Sets the value of an array element. If the element doesn't exist, it
+ * is appended to the array. If it does exist, the value is set, with
* comments and indenting preserved.
*
* append
* Appends a new element to the end of the array. Adds a trailing comma.
* e.g.
- * array( 'type' => 'append', 'path', '$foo/bar',
+ * array( 'type' => 'append', 'path', '$foo/bar',
* 'key' => 'baz', 'value' => "'x'" )
* is like the PHP code:
* $foo['bar']['baz'] = 'x';
@@ -187,7 +191,7 @@ class ConfEditor {
list( $indent, ) = $this->getIndent( $start );
$textToInsert = "$indent$value,";
} else {
- list( $indent, $arrowIndent ) =
+ list( $indent, $arrowIndent ) =
$this->getIndent( $start, $key, $lastEltInfo['arrowByte'] );
$textToInsert = "$indent$key$arrowIndent=> $value,";
}
@@ -210,7 +214,7 @@ class ConfEditor {
list( $indent, ) = $this->getIndent( $start );
$textToInsert = "$indent$value,";
} else {
- list( $indent, $arrowIndent ) =
+ list( $indent, $arrowIndent ) =
$this->getIndent( $start, $key, $info['arrowByte'] );
$textToInsert = "$indent$key$arrowIndent=> $value,";
}
@@ -239,13 +243,13 @@ class ConfEditor {
try {
$this->parse();
} catch ( ConfEditorParseError $e ) {
- throw new MWException(
+ throw new MWException(
"Sorry, ConfEditor broke the file during editing and it won't parse anymore: " .
$e->getMessage() );
}
return $out;
}
-
+
/**
* Get the variables defined in the text
* @return array( varname => value )
@@ -266,7 +270,7 @@ class ConfEditor {
strlen( $trimmedPath ) - strlen( $name ) );
if( substr( $parentPath, -1 ) == '/' )
$parentPath = substr( $parentPath, 0, -1 );
-
+
$value = substr( $this->text, $data['valueStartByte'],
$data['valueEndByte'] - $data['valueStartByte']
);
@@ -275,7 +279,7 @@ class ConfEditor {
}
return $vars;
}
-
+
/**
* Set a value in an array, unless it's set already. For instance,
* setVar( $arr, 'foo/bar', 'baz', 3 ); will set
@@ -298,7 +302,7 @@ class ConfEditor {
if ( !isset( $target[$key] ) )
$target[$key] = $value;
}
-
+
/**
* Parse a scalar value in PHP
* @return mixed Parsed value
@@ -306,14 +310,14 @@ class ConfEditor {
function parseScalar( $str ) {
if ( $str !== '' && $str[0] == '\'' )
// Single-quoted string
- // @todo Fixme: trim() call is due to mystery bug where whitespace gets
+ // @todo FIXME: trim() call is due to mystery bug where whitespace gets
// appended to the token; without it we ended up reading in the
// extra quote on the end!
return strtr( substr( trim( $str ), 1, -1 ),
array( '\\\'' => '\'', '\\\\' => '\\' ) );
- if ( $str !== '' && @$str[0] == '"' )
+ if ( $str !== '' && $str[0] == '"' )
// Double-quoted string
- // @todo Fixme: trim() call is due to mystery bug where whitespace gets
+ // @todo FIXME: trim() call is due to mystery bug where whitespace gets
// appended to the token; without it we ended up reading in the
// extra quote on the end!
return stripcslashes( substr( trim( $str ), 1, -1 ) );
@@ -364,8 +368,8 @@ class ConfEditor {
}
/**
- * Finds the source byte region which you would want to delete, if $pathName
- * was to be deleted. Includes the leading spaces and tabs, the trailing line
+ * Finds the source byte region which you would want to delete, if $pathName
+ * was to be deleted. Includes the leading spaces and tabs, the trailing line
* break, and any comments in between.
*/
function findDeletionRegion( $pathName ) {
@@ -419,9 +423,9 @@ class ConfEditor {
}
/**
- * Find the byte region in the source corresponding to the value part.
- * This includes the quotes, but does not include the trailing comma
- * or semicolon.
+ * Find the byte region in the source corresponding to the value part.
+ * This includes the quotes, but does not include the trailing comma
+ * or semicolon.
*
* The end position is the past-the-end (end + 1) value as per convention.
*/
@@ -472,7 +476,7 @@ class ConfEditor {
return $extraPath;
}
- /*
+ /**
* Find the path name of first element in the array.
* If the array is empty, this will return the \@extra interstitial element.
* If the specified path is not found or is not an array, it will return false.
@@ -519,7 +523,7 @@ class ConfEditor {
}
/**
- * Run the parser on the text. Throws an exception if the string does not
+ * Run the parser on the text. Throws an exception if the string does not
* match our defined subset of PHP syntax.
*/
public function parse() {
@@ -706,7 +710,7 @@ class ConfEditor {
}
/**
- * Set the parse position. Do not call this except from firstToken() and
+ * Set the parse position. Do not call this except from firstToken() and
* nextToken(), there is more to update than just the position.
*/
protected function setPos( $pos ) {
@@ -800,7 +804,7 @@ class ConfEditor {
if ( $this->currentToken && $this->currentToken->type == $type ) {
return $this->nextToken();
} else {
- $this->error( "expected " . $this->getTypeName( $type ) .
+ $this->error( "expected " . $this->getTypeName( $type ) .
", got " . $this->getTypeName( $this->currentToken->type ) );
}
}
@@ -875,7 +879,7 @@ class ConfEditor {
}
/**
- * Go to the next path on the same level. This ends the current path and
+ * Go to the next path on the same level. This ends the current path and
* starts a new one. If $path is \@next, the new path is set to the next
* numeric array element.
*/
@@ -889,7 +893,7 @@ class ConfEditor {
} else {
$this->pathStack[$i]['name'] = $path;
}
- $this->pathStack[$i] =
+ $this->pathStack[$i] =
array(
'startByte' => $this->byteNum,
'startToken' => $this->pos,
@@ -955,8 +959,8 @@ class ConfEditor {
}
/**
- * Looks ahead to see if the given type is the next token type, starting
- * from the current position plus the given offset. Skips any intervening
+ * Looks ahead to see if the given type is the next token type, starting
+ * from the current position plus the given offset. Skips any intervening
* whitespace.
*/
function isAhead( $type, $offset = 0 ) {
@@ -992,8 +996,8 @@ class ConfEditor {
$out = '';
foreach ( $this->tokens as $token ) {
$obj = $this->newTokenObj( $token );
- $out .= sprintf( "%-28s %s\n",
- $this->getTypeName( $obj->type ),
+ $out .= sprintf( "%-28s %s\n",
+ $this->getTypeName( $obj->type ),
addcslashes( $obj->text, "\0..\37" ) );
}
echo "<pre>" . htmlspecialchars( $out ) . "</pre>";
@@ -1008,7 +1012,7 @@ class ConfEditorParseError extends MWException {
function __construct( $editor, $msg ) {
$this->lineNum = $editor->lineNum;
$this->colNum = $editor->colNum;
- parent::__construct( "Parse error on line {$editor->lineNum} " .
+ parent::__construct( "Parse error on line {$editor->lineNum} " .
"col {$editor->colNum}: $msg" );
}
@@ -1028,7 +1032,7 @@ class ConfEditorParseError extends MWException {
*/
class ConfEditorToken {
var $type, $text;
-
+
static $scalarTypes = array( T_LNUMBER, T_DNUMBER, T_STRING, T_CONSTANT_ENCAPSED_STRING );
static $skipTypes = array( T_WHITESPACE, T_COMMENT, T_DOC_COMMENT );
diff --git a/includes/Cookie.php b/includes/Cookie.php
new file mode 100644
index 00000000..95a4599f
--- /dev/null
+++ b/includes/Cookie.php
@@ -0,0 +1,245 @@
+<?php
+/**
+ * @defgroup HTTP HTTP
+ */
+
+class Cookie {
+ protected $name;
+ protected $value;
+ protected $expires;
+ protected $path;
+ protected $domain;
+ protected $isSessionKey = true;
+ // TO IMPLEMENT protected $secure
+ // TO IMPLEMENT? protected $maxAge (add onto expires)
+ // TO IMPLEMENT? protected $version
+ // TO IMPLEMENT? protected $comment
+
+ function __construct( $name, $value, $attr ) {
+ $this->name = $name;
+ $this->set( $value, $attr );
+ }
+
+ /**
+ * Sets a cookie. Used before a request to set up any individual
+ * cookies. Used internally after a request to parse the
+ * Set-Cookie headers.
+ *
+ * @param $value String: the value of the cookie
+ * @param $attr Array: possible key/values:
+ * expires A date string
+ * path The path this cookie is used on
+ * domain Domain this cookie is used on
+ */
+ public function set( $value, $attr ) {
+ $this->value = $value;
+
+ if ( isset( $attr['expires'] ) ) {
+ $this->isSessionKey = false;
+ $this->expires = strtotime( $attr['expires'] );
+ }
+
+ if ( isset( $attr['path'] ) ) {
+ $this->path = $attr['path'];
+ } else {
+ $this->path = '/';
+ }
+
+ if ( isset( $attr['domain'] ) ) {
+ if ( self::validateCookieDomain( $attr['domain'] ) ) {
+ $this->domain = $attr['domain'];
+ }
+ } else {
+ throw new MWException( 'You must specify a domain.' );
+ }
+ }
+
+ /**
+ * Return the true if the cookie is valid is valid. Otherwise,
+ * false. The uses a method similar to IE cookie security
+ * described here:
+ * http://kuza55.blogspot.com/2008/02/understanding-cookie-security.html
+ * A better method might be to use a blacklist like
+ * http://publicsuffix.org/
+ *
+ * @fixme fails to detect 3-letter top-level domains
+ * @fixme fails to detect 2-letter top-level domains for single-domain use (probably not a big problem in practice, but there are test cases)
+ *
+ * @param $domain String: the domain to validate
+ * @param $originDomain String: (optional) the domain the cookie originates from
+ * @return Boolean
+ */
+ public static function validateCookieDomain( $domain, $originDomain = null ) {
+ // Don't allow a trailing dot
+ if ( substr( $domain, -1 ) == '.' ) {
+ return false;
+ }
+
+ $dc = explode( ".", $domain );
+
+ // Only allow full, valid IP addresses
+ if ( preg_match( '/^[0-9.]+$/', $domain ) ) {
+ if ( count( $dc ) != 4 ) {
+ return false;
+ }
+
+ if ( ip2long( $domain ) === false ) {
+ return false;
+ }
+
+ if ( $originDomain == null || $originDomain == $domain ) {
+ return true;
+ }
+
+ }
+
+ // Don't allow cookies for "co.uk" or "gov.uk", etc, but allow "supermarket.uk"
+ if ( strrpos( $domain, "." ) - strlen( $domain ) == -3 ) {
+ if ( ( count( $dc ) == 2 && strlen( $dc[0] ) <= 2 )
+ || ( count( $dc ) == 3 && strlen( $dc[0] ) == "" && strlen( $dc[1] ) <= 2 ) ) {
+ return false;
+ }
+ if ( ( count( $dc ) == 2 || ( count( $dc ) == 3 && $dc[0] == '' ) )
+ && preg_match( '/(com|net|org|gov|edu)\...$/', $domain ) ) {
+ return false;
+ }
+ }
+
+ if ( $originDomain != null ) {
+ if ( substr( $domain, 0, 1 ) != '.' && $domain != $originDomain ) {
+ return false;
+ }
+
+ if ( substr( $domain, 0, 1 ) == '.'
+ && substr_compare( $originDomain, $domain, -strlen( $domain ),
+ strlen( $domain ), true ) != 0 ) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ /**
+ * Serialize the cookie jar into a format useful for HTTP Request headers.
+ *
+ * @param $path String: the path that will be used. Required.
+ * @param $domain String: the domain that will be used. Required.
+ * @return String
+ */
+ public function serializeToHttpRequest( $path, $domain ) {
+ $ret = '';
+
+ if ( $this->canServeDomain( $domain )
+ && $this->canServePath( $path )
+ && $this->isUnExpired() ) {
+ $ret = $this->name . '=' . $this->value;
+ }
+
+ return $ret;
+ }
+
+ protected function canServeDomain( $domain ) {
+ if ( $domain == $this->domain
+ || ( strlen( $domain ) > strlen( $this->domain )
+ && substr( $this->domain, 0, 1 ) == '.'
+ && substr_compare( $domain, $this->domain, -strlen( $this->domain ),
+ strlen( $this->domain ), true ) == 0 ) ) {
+ return true;
+ }
+
+ return false;
+ }
+
+ protected function canServePath( $path ) {
+ if ( $this->path && substr_compare( $this->path, $path, 0, strlen( $this->path ) ) == 0 ) {
+ return true;
+ }
+
+ return false;
+ }
+
+ protected function isUnExpired() {
+ if ( $this->isSessionKey || $this->expires > time() ) {
+ return true;
+ }
+
+ return false;
+ }
+}
+
+class CookieJar {
+ private $cookie = array();
+
+ /**
+ * Set a cookie in the cookie jar. Make sure only one cookie per-name exists.
+ * @see Cookie::set()
+ */
+ public function setCookie ( $name, $value, $attr ) {
+ /* cookies: case insensitive, so this should work.
+ * We'll still send the cookies back in the same case we got them, though.
+ */
+ $index = strtoupper( $name );
+
+ if ( isset( $this->cookie[$index] ) ) {
+ $this->cookie[$index]->set( $value, $attr );
+ } else {
+ $this->cookie[$index] = new Cookie( $name, $value, $attr );
+ }
+ }
+
+ /**
+ * @see Cookie::serializeToHttpRequest
+ */
+ public function serializeToHttpRequest( $path, $domain ) {
+ $cookies = array();
+
+ foreach ( $this->cookie as $c ) {
+ $serialized = $c->serializeToHttpRequest( $path, $domain );
+
+ if ( $serialized ) {
+ $cookies[] = $serialized;
+ }
+ }
+
+ return implode( '; ', $cookies );
+ }
+
+ /**
+ * Parse the content of an Set-Cookie HTTP Response header.
+ *
+ * @param $cookie String
+ * @param $domain String: cookie's domain
+ */
+ public function parseCookieResponseHeader ( $cookie, $domain ) {
+ $len = strlen( 'Set-Cookie:' );
+
+ if ( substr_compare( 'Set-Cookie:', $cookie, 0, $len, true ) === 0 ) {
+ $cookie = substr( $cookie, $len );
+ }
+
+ $bit = array_map( 'trim', explode( ';', $cookie ) );
+
+ if ( count( $bit ) >= 1 ) {
+ list( $name, $value ) = explode( '=', array_shift( $bit ), 2 );
+ $attr = array();
+
+ foreach ( $bit as $piece ) {
+ $parts = explode( '=', $piece );
+ if ( count( $parts ) > 1 ) {
+ $attr[strtolower( $parts[0] )] = $parts[1];
+ } else {
+ $attr[strtolower( $parts[0] )] = true;
+ }
+ }
+
+ if ( !isset( $attr['domain'] ) ) {
+ $attr['domain'] = $domain;
+ } elseif ( !Cookie::validateCookieDomain( $attr['domain'], $domain ) ) {
+ return null;
+ }
+
+ $this->setCookie( $name, $value, $attr );
+ }
+ }
+}
diff --git a/includes/DefaultSettings.php b/includes/DefaultSettings.php
index 0395633d..4248add7 100644
--- a/includes/DefaultSettings.php
+++ b/includes/DefaultSettings.php
@@ -26,58 +26,43 @@ if( !defined( 'MEDIAWIKI' ) ) {
die( 1 );
}
-# Create a site configuration object. Not used for much in a default install
-if ( !defined( 'MW_PHP4' ) ) {
- require_once( "$IP/includes/SiteConfiguration.php" );
- $wgConf = new SiteConfiguration;
-}
+# Create a site configuration object. Not used for much in a default install.
+# Note: this (and other things) will break if the autoloader is not enabled.
+# Please include includes/AutoLoader.php before including this file.
+$wgConf = new SiteConfiguration;
/** @endcond */
/** MediaWiki version number */
-$wgVersion = '1.17.1';
+$wgVersion = '1.18.0';
/** Name of the site. It must be changed in LocalSettings.php */
$wgSitename = 'MediaWiki';
/**
- * URL of the server. It will be automatically built including https mode.
+ * URL of the server.
*
* Example:
* <code>
- * $wgServer = http://example.com
+ * $wgServer = 'http://example.com';
* </code>
*
* This is usually detected correctly by MediaWiki. If MediaWiki detects the
* wrong server, it will redirect incorrectly after you save a page. In that
* case, set this variable to fix it.
+ *
+ * If you want to use protocol-relative URLs on your wiki, set this to a
+ * protocol-relative URL like '//example.com' and set $wgCanonicalServer
+ * to a fully qualified URL.
*/
-$wgServer = '';
-
-/** @cond file_level_code */
-if( isset( $_SERVER['SERVER_NAME'] ) ) {
- $serverName = $_SERVER['SERVER_NAME'];
-} elseif( isset( $_SERVER['HOSTNAME'] ) ) {
- $serverName = $_SERVER['HOSTNAME'];
-} elseif( isset( $_SERVER['HTTP_HOST'] ) ) {
- $serverName = $_SERVER['HTTP_HOST'];
-} elseif( isset( $_SERVER['SERVER_ADDR'] ) ) {
- $serverName = $_SERVER['SERVER_ADDR'];
-} else {
- $serverName = 'localhost';
-}
-
-$wgProto = (isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] == 'on') ? 'https' : 'http';
+$wgServer = WebRequest::detectServer();
-$wgServer = $wgProto.'://' . $serverName;
-# If the port is a non-standard one, add it to the URL
-if( isset( $_SERVER['SERVER_PORT'] )
- && !strpos( $serverName, ':' )
- && ( ( $wgProto == 'http' && $_SERVER['SERVER_PORT'] != 80 )
- || ( $wgProto == 'https' && $_SERVER['SERVER_PORT'] != 443 ) ) ) {
-
- $wgServer .= ":" . $_SERVER['SERVER_PORT'];
-}
-/** @endcond */
+/**
+ * Canonical URL of the server, to use in IRC feeds and notification e-mails.
+ * Must be fully qualified, even if $wgServer is protocol-relative.
+ *
+ * Defaults to $wgServer, expanded to a fully qualified http:// URL if needed.
+ */
+$wgCanonicalServer = false;
/************************************************************************//**
* @name Script path settings
@@ -147,6 +132,7 @@ $wgRedirectScript = false; ///< defaults to
*/
$wgLoadScript = false;
+
/**@}*/
/************************************************************************//**
@@ -183,6 +169,7 @@ $wgLocalStylePath = false;
/**
* The URL path of the extensions directory.
* Defaults to "{$wgScriptPath}/extensions".
+ * @since 1.16
*/
$wgExtensionAssetsPath = false;
@@ -228,23 +215,6 @@ $wgFavicon = '/favicon.ico';
$wgAppleTouchIcon = false;
/**
- * The URL path of the math directory. Defaults to "{$wgUploadPath}/math".
- *
- * See http://www.mediawiki.org/wiki/Manual:Enable_TeX for details about how to
- * set up mathematical formula display.
- */
-$wgMathPath = false;
-
-/**
- * The filesystem path of the math directory.
- * Defaults to "{$wgUploadDirectory}/math".
- *
- * See http://www.mediawiki.org/wiki/Manual:Enable_TeX for details about how to
- * set up mathematical formula display.
- */
-$wgMathDirectory = false;
-
-/**
* The local filesystem path to a temporary directory. This is not required to
* be web accessible.
*
@@ -295,7 +265,7 @@ $wgAllowImageMoving = true;
$wgIllegalFileChars = ":";
/**
- * @deprecated use $wgDeletedDirectory
+ * @deprecated since 1.17 use $wgDeletedDirectory
*/
$wgFileStore = array();
@@ -327,7 +297,7 @@ $wgImgAuthPublicTest = true;
* - class The class name for the repository. May come from the core or an extension.
* The core repository classes are LocalRepo, ForeignDBRepo, FSRepo.
*
- * - name A unique name for the repository.
+ * - name A unique name for the repository (but $wgLocalFileRepo should be 'local').
*
* For most core repos:
* - url Base public URL
@@ -373,8 +343,12 @@ $wgImgAuthPublicTest = true;
* - apibase Use for the foreign API's URL
* - apiThumbCacheExpiry How long to locally cache thumbs for
*
- * The default is to initialise these arrays from the MW<1.11 backwards compatible settings:
- * $wgUploadPath, $wgThumbnailScriptPath, $wgSharedUploadDirectory, etc.
+ * If you leave $wgLocalFileRepo set to false, Setup will fill in appropriate values.
+ * Otherwise, set $wgLocalFileRepo to a repository structure as described above.
+ * If you set $wgUseInstantCommons to true, it will add an entry for Commons.
+ * If you set $wgForeignFileRepos to an array of repostory structures, those will
+ * be searched after the local file repo.
+ * Otherwise, you will only have access to local media files.
*/
$wgLocalFileRepo = false;
@@ -393,7 +367,7 @@ $wgUseInstantCommons = false;
* Requires PHP's EXIF extension: http://www.php.net/manual/en/ref.exif.php
*
* NOTE FOR WINDOWS USERS:
- * To enable EXIF functions, add the folloing lines to the
+ * To enable EXIF functions, add the following lines to the
* "Windows extensions" section of php.ini:
*
* extension=extensions/php_mbstring.dll
@@ -402,6 +376,13 @@ $wgUseInstantCommons = false;
$wgShowEXIF = function_exists( 'exif_read_data' );
/**
+ * If to automatically update the img_metadata field
+ * if the metadata field is outdated but compatible with the current version.
+ * Defaults to false.
+ */
+$wgUpdateCompatibleMetadata = false;
+
+/**
* If you operate multiple wikis, you can define a shared upload path here.
* Uploads to this wiki will NOT be put there - they will be put into
* $wgUploadDirectory.
@@ -434,12 +415,24 @@ $wgCacheSharedUploads = true;
$wgAllowCopyUploads = false;
/**
* Allow asynchronous copy uploads.
- * This feature is experimental.
+ * This feature is experimental and broken as of r81612.
*/
$wgAllowAsyncCopyUploads = false;
/**
- * Max size for uploads, in bytes. Applies to all uploads.
+ * Max size for uploads, in bytes. If not set to an array, applies to all
+ * uploads. If set to an array, per upload type maximums can be set, using the
+ * file and url keys. If the * key is set this value will be used as maximum
+ * for non-specified types.
+ *
+ * For example:
+ * $wgMaxUploadSize = array(
+ * '*' => 250 * 1024,
+ * 'url' => 500 * 1024,
+ * );
+ * Sets the maximum for all uploads to 250 kB except for upload-by-url, which
+ * will have a maximum of 500 kB.
+ *
*/
$wgMaxUploadSize = 1024*1024*100; # 100MB
@@ -536,22 +529,16 @@ $wgMimeTypeBlacklist = array(
'text/scriptlet', 'application/x-msdownload',
# Windows metafile, client-side vulnerability on some systems
'application/x-msmetafile',
- # A ZIP file may be a valid Java archive containing an applet which exploits the
- # same-origin policy to steal cookies
- 'application/zip',
-
- # MS Office OpenXML and other Open Package Conventions files are zip files
- # and thus blacklisted just as other zip files. If you remove these entries
- # from the blacklist in your local configuration, a malicious file upload
- # will be able to compromise the wiki's user accounts, and the user
- # accounts of any other website in the same cookie domain.
- 'application/x-opc+zip',
- 'application/msword',
- 'application/vnd.ms-powerpoint',
- 'application/vnd.msexcel',
);
/**
+ * Allow Java archive uploads.
+ * This is not recommended for public wikis since a maliciously-constructed
+ * applet running on the same domain as the wiki can steal the user's cookies.
+ */
+$wgAllowJavaUploads = false;
+
+/**
* This is a flag to determine whether or not to check file extensions on upload.
*
* WARNING: setting this to false is insecure for public wikis.
@@ -593,7 +580,7 @@ $wgTrustedMediaFormats = array(
* Each entry in the array maps a MIME type to a class name
*/
$wgMediaHandlers = array(
- 'image/jpeg' => 'BitmapHandler',
+ 'image/jpeg' => 'JpegHandler',
'image/png' => 'PNGHandler',
'image/gif' => 'GIFHandler',
'image/tiff' => 'TiffHandler',
@@ -645,11 +632,18 @@ $wgImageMagickTempDir = false;
$wgCustomConvertCommand = false;
/**
+ * Some tests and extensions use exiv2 to manipulate the EXIF metadata in some image formats.
+ */
+$wgExiv2Command = '/usr/bin/exiv2';
+
+/**
* Scalable Vector Graphics (SVG) may be uploaded as images.
* Since SVG support is not yet standard in browsers, it is
* necessary to rasterize SVGs to PNG as a fallback format.
*
* An external program is required to perform this conversion.
+ * If set to an array, the first item is a PHP callable and any further items
+ * are passed as parameters after $srcPath, $dstPath, $width, $height
*/
$wgSVGConverters = array(
'ImageMagick' => '$path/convert -background white -thumbnail $widthx$height\! $input PNG:$output',
@@ -658,6 +652,7 @@ $wgSVGConverters = array(
'batik' => 'java -Djava.awt.headless=true -jar $path/batik-rasterizer.jar -w $width -d $output $input',
'rsvg' => '$path/rsvg -w$width -h$height $input $output',
'imgserv' => '$path/imgserv-wrapper -i svg -o png -w$width $input $output',
+ 'ImagickExt' => array( 'SvgHandler::rasterizeImagickExt' ),
);
/** Pick a converter defined in $wgSVGConverters */
$wgSVGConverter = 'ImageMagick';
@@ -667,7 +662,7 @@ $wgSVGConverterPath = '';
$wgSVGMaxSize = 2048;
/** Don't read SVG metadata beyond this point.
* Default is 1024*256 bytes */
-$wgSVGMetadataCutoff = 262144;
+$wgSVGMetadataCutoff = 262144;
/**
* MediaWiki will reject HTMLesque tags in uploaded files due to idiotic browsers which can't
@@ -744,6 +739,12 @@ $wgShowArchiveThumbnails = true;
/** Obsolete, always true, kept for compatibility with extensions */
$wgUseImageResize = true;
+/**
+ * If set to true, images that contain certain the exif orientation tag will
+ * be rotated accordingly. If set to null, try to auto-detect whether a scaler
+ * is available that can rotate.
+ */
+$wgEnableAutoRotation = null;
/**
* Internal name of virus scanner. This servers as a key to the
@@ -907,7 +908,7 @@ $wgGalleryOptions = array (
'imagesPerRow' => 0, // Default number of images per-row in the gallery. 0 -> Adapt to screensize
'imageWidth' => 120, // Width of the cells containing images in galleries (in "px")
'imageHeight' => 120, // Height of the cells containing images in galleries (in "px")
- 'captionLength' => 20, // Length of caption to truncate (in characters)
+ 'captionLength' => 25, // Length of caption to truncate (in characters)
'showBytes' => true, // Show the filesize in bytes in categories
);
@@ -976,6 +977,8 @@ $wgDjvuOutputExtension = 'jpg';
* @{
*/
+$serverName = substr( $wgServer, strrpos( $wgServer, '/' ) + 1 );
+
/**
* Site admin email address.
*/
@@ -1037,6 +1040,11 @@ $wgPasswordReminderResendTime = 24;
$wgNewPasswordExpiry = 3600 * 24 * 7;
/**
+ * The time, in seconds, when an email confirmation email expires
+ */
+$wgUserEmailConfirmationTokenExpiry = 7 * 24 * 60 * 60;
+
+/**
* SMTP Mode
* For using a direct (authenticated) SMTP server connection.
* Default to false or fill an array :
@@ -1053,6 +1061,7 @@ $wgSMTP = false;
/**
* Additional email parameters, will be passed as the last argument to mail() call.
+ * If using safe_mode this has no effect
*/
$wgAdditionalMailParams = null;
@@ -1177,8 +1186,6 @@ $wgSQLMode = '';
/** Mediawiki schema */
$wgDBmwschema = 'mediawiki';
-/** Tsearch2 schema */
-$wgDBts2schema = 'public';
/** To override default SQLite data directory ($docroot/../data) */
$wgSQLiteDataDir = '';
@@ -1375,6 +1382,7 @@ $wgExternalServers = array();
*
* $wgDefaultExternalStore = array( 'DB://cluster1', 'DB://cluster2' );
*
+ * @var array
*/
$wgDefaultExternalStore = false;
@@ -1467,6 +1475,8 @@ $wgCacheDirectory = false;
* - CACHE_DBA: Use PHP's DBA extension to store in a DBM-style
* database. This is slow, and is not recommended for
* anything other than debugging.
+ * - (other): A string may be used which identifies a cache
+ * configuration in $wgObjectCaches.
*
* @see $wgMessageCacheType, $wgParserCacheType
*/
@@ -1489,6 +1499,37 @@ $wgMessageCacheType = CACHE_ANYTHING;
$wgParserCacheType = CACHE_ANYTHING;
/**
+ * Advanced object cache configuration.
+ *
+ * Use this to define the class names and constructor parameters which are used
+ * for the various cache types. Custom cache types may be defined here and
+ * referenced from $wgMainCacheType, $wgMessageCacheType or $wgParserCacheType.
+ *
+ * The format is an associative array where the key is a cache identifier, and
+ * the value is an associative array of parameters. The "class" parameter is the
+ * class name which will be used. Alternatively, a "factory" parameter may be
+ * given, giving a callable function which will generate a suitable cache object.
+ *
+ * The other parameters are dependent on the class used.
+ */
+$wgObjectCaches = array(
+ CACHE_NONE => array( 'class' => 'EmptyBagOStuff' ),
+ CACHE_DB => array( 'class' => 'SqlBagOStuff', 'table' => 'objectcache' ),
+ CACHE_DBA => array( 'class' => 'DBABagOStuff' ),
+
+ CACHE_ANYTHING => array( 'factory' => 'ObjectCache::newAnything' ),
+ CACHE_ACCEL => array( 'factory' => 'ObjectCache::newAccelerator' ),
+ CACHE_MEMCACHED => array( 'factory' => 'ObjectCache::newMemcached' ),
+
+ 'eaccelerator' => array( 'class' => 'eAccelBagOStuff' ),
+ 'apc' => array( 'class' => 'APCBagOStuff' ),
+ 'xcache' => array( 'class' => 'XCacheBagOStuff' ),
+ 'wincache' => array( 'class' => 'WinCacheBagOStuff' ),
+ 'memcached-php' => array( 'class' => 'MemcachedPhpBagOStuff' ),
+ 'hash' => array( 'class' => 'HashBagOStuff' ),
+);
+
+/**
* The expiry time for the parser cache, in seconds. The default is 86.4k
* seconds, otherwise known as a day.
*/
@@ -1512,7 +1553,7 @@ $wgSessionsInMemcached = false;
* 'session_mysql.' Setting to null skips setting this entirely (which might be
* useful if you're doing cross-application sessions, see bug 11381)
*/
-$wgSessionHandler = 'files';
+$wgSessionHandler = null;
/** If enabled, will send MemCached debugging information to $wgDebugLogFile */
$wgMemCachedDebug = false;
@@ -1545,6 +1586,13 @@ $wgUseLocalMessageCache = false;
$wgLocalMessageCacheSerialized = true;
/**
+ * Instead of caching everything, keep track which messages are requested and
+ * load only most used messages. This only makes sense if there is lots of
+ * interface messages customised in the wiki (like hundreds in many languages).
+ */
+$wgAdaptiveMessageCache = false;
+
+/**
* Localisation cache configuration. Associative array with keys:
* class: The class to use. May be overridden by extensions.
*
@@ -1589,7 +1637,7 @@ $wgCacheEpoch = '20030516000000';
* to ensure that client-side caches do not keep obsolete copies of global
* styles.
*/
-$wgStyleVersion = '301';
+$wgStyleVersion = '303';
/**
* This will cache static pages for non-logged-in users to reduce
@@ -1673,9 +1721,9 @@ $wgClockSkewFudge = 5;
* to setting $wgCacheEpoch to the modification time of LocalSettings.php, as
* was previously done in the default LocalSettings.php file.
*
- * On high-traffic wikis, this should be set to false, to avoid the need to
+ * On high-traffic wikis, this should be set to false, to avoid the need to
* check the file modification time, and to avoid the performance impact of
- * unnecessary cache invalidations.
+ * unnecessary cache invalidations.
*/
$wgInvalidateCacheOnLocalSettingsChange = true;
@@ -1706,13 +1754,22 @@ $wgUseESI = false;
/** Send X-Vary-Options header for better caching (requires patched Squid) */
$wgUseXVO = false;
+/** Add X-Forwarded-Proto to the Vary and X-Vary-Options headers for API
+ * requests and RSS/Atom feeds. Use this if you have an SSL termination setup
+ * and need to split the cache between HTTP and HTTPS for API requests,
+ * feed requests and HTTP redirect responses in order to prevent cache
+ * pollution. This does not affect 'normal' requests to index.php other than
+ * HTTP redirects.
+ */
+$wgVaryOnXFP = false;
+
/**
* Internal server name as known to Squid, if different. Example:
* <code>
* $wgInternalServer = 'http://yourinternal.tld:8000';
* </code>
*/
-$wgInternalServer = $wgServer;
+$wgInternalServer = false;
/**
* Cache timeout for the squid, will be sent as s-maxage (without ESI) or
@@ -1807,20 +1864,15 @@ $wgDummyLanguageCodes = array(
'als',
'bat-smg',
'be-x-old',
- 'dk',
'fiu-vro',
'iu',
'nb',
'qqq',
+ 'qqx',
+ 'roa-rup',
'simple',
- 'tp',
);
-/** @deprecated Since MediaWiki 1.5, this must always be set to UTF-8. */
-$wgInputEncoding = 'UTF-8';
-/** @deprecated Since MediaWiki 1.5, this must always be set to UTF-8. */
-$wgOutputEncoding = 'UTF-8';
-
/**
* Character set for use in the article edit box. Language-specific encodings
* may be defined.
@@ -2060,17 +2112,7 @@ $wgLocaltimezone = null;
* This setting is used for most date/time displays in the software, and is
* overrideable in user preferences. It is *not* used for signature timestamps.
*
- * You can set it to match the configured server timezone like this:
- * $wgLocalTZoffset = date("Z") / 60;
- *
- * If your server is not configured for the timezone you want, you can set
- * this in conjunction with the signature timezone and override the PHP default
- * timezone like so:
- * $wgLocaltimezone="Europe/Berlin";
- * date_default_timezone_set( $wgLocaltimezone );
- * $wgLocalTZoffset = date("Z") / 60;
- *
- * Leave at NULL to show times in universal time (UTC/GMT).
+ * By default, this will be set to match $wgLocaltimezone.
*/
$wgLocalTZoffset = null;
@@ -2084,28 +2126,49 @@ $wgLocalTZoffset = null;
/** The default Content-Type header. */
$wgMimeType = 'text/html';
-/** The content type used in script tags. */
+/**
+ * The content type used in script tags. This is mostly going to be ignored if
+ * $wgHtml5 is true, at least for actual HTML output, since HTML5 doesn't
+ * require a MIME type for JavaScript or CSS (those are the default script and
+ * style languages).
+ */
$wgJsMimeType = 'text/javascript';
-/** The HTML document type. */
+/**
+ * The HTML document type. Ignored if $wgHtml5 is true, since <!DOCTYPE html>
+ * doesn't actually have a doctype part to put this variable's contents in.
+ */
$wgDocType = '-//W3C//DTD XHTML 1.0 Transitional//EN';
-/** The URL of the document type declaration. */
+/**
+ * The URL of the document type declaration. Ignored if $wgHtml5 is true,
+ * since HTML5 has no DTD, and <!DOCTYPE html> doesn't actually have a DTD part
+ * to put this variable's contents in.
+ */
$wgDTD = 'http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd';
-/** The default xmlns attribute. */
+/**
+ * The default xmlns attribute. Ignored if $wgHtml5 is true (or it's supposed
+ * to be), since we don't currently support XHTML5, and in HTML5 (i.e., served
+ * as text/html) the attribute has no effect, so why bother?
+ */
$wgXhtmlDefaultNamespace = 'http://www.w3.org/1999/xhtml';
/**
* Should we output an HTML5 doctype? If false, use XHTML 1.0 Transitional
* instead, and disable HTML5 features. This may eventually be removed and set
- * to always true.
+ * to always true. If it's true, a number of other settings will be irrelevant
+ * and have no effect.
*/
$wgHtml5 = true;
/**
* Defines the value of the version attribute in the &lt;html&gt; tag, if any.
- * Will be initialized later if not set explicitly.
+ * This is ignored if $wgHtml5 is false. If $wgAllowRdfaAttributes and
+ * $wgHtml5 are both true, and this evaluates to boolean false (like if it's
+ * left at the default null value), it will be auto-initialized to the correct
+ * value for RDFa+HTML5. As such, you should have no reason to ever actually
+ * set this to anything.
*/
$wgHtml5Version = null;
@@ -2145,6 +2208,9 @@ $wgWellFormedXml = true;
* $wgXhtmlNamespaces['svg'] = 'http://www.w3.org/2000/svg';
* Normally we wouldn't have to define this in the root <html>
* element, but IE needs it there in some circumstances.
+ *
+ * This is ignored if $wgHtml5 is true, for the same reason as
+ * $wgXhtmlDefaultNamespace.
*/
$wgXhtmlNamespaces = array();
@@ -2188,12 +2254,6 @@ $wgValidateAllHtml = false;
$wgDefaultSkin = 'vector';
/**
-* Should we allow the user's to select their own skin that will override the default?
-* @deprecated in 1.16, use $wgHiddenPrefs[] = 'skin' to disable it
-*/
-$wgAllowUserSkin = true;
-
-/**
* Specify the name of a skin that should not be presented in the list of
* available skins. Use for blacklisting a skin which you do not want to
* remove from the .../skins/ directory
@@ -2269,7 +2329,7 @@ $wgEnableTooltipsAndAccesskeys = true;
$wgBreakFrames = false;
/**
- * The X-Frame-Options header to send on pages sensitive to clickjacking
+ * The X-Frame-Options header to send on pages sensitive to clickjacking
* attacks, such as edit pages. This prevents those pages from being displayed
* in a frame or iframe. The options are:
*
@@ -2279,9 +2339,9 @@ $wgBreakFrames = false;
* to allow framing within a trusted domain. This is insecure if there
* is a page on the same domain which allows framing of arbitrary URLs.
*
- * - false: Allow all framing. This opens up the wiki to XSS attacks and thus
- * full compromise of local user accounts. Private wikis behind a
- * corporate firewall are especially vulnerable. This is not
+ * - false: Allow all framing. This opens up the wiki to XSS attacks and thus
+ * full compromise of local user accounts. Private wikis behind a
+ * corporate firewall are especially vulnerable. This is not
* recommended.
*
* For extra safety, set $wgBreakFrames = true, to prevent framing on all pages,
@@ -2310,17 +2370,17 @@ $wgExperimentalHtmlIds = false;
* You can add new icons to the built in copyright or poweredby, or you can create
* a new block. Though note that you may need to add some custom css to get good styling
* of new blocks in monobook. vector and modern should work without any special css.
- *
+ *
* $wgFooterIcons itself is a key/value array.
- * The key is the name of a block that the icons will be wrapped in. The final id varies
- * by skin; Monobook and Vector will turn poweredby into f-poweredbyico while Modern
+ * The key is the name of a block that the icons will be wrapped in. The final id varies
+ * by skin; Monobook and Vector will turn poweredby into f-poweredbyico while Modern
* turns it into mw_poweredby.
* The value is either key/value array of icons or a string.
* In the key/value array the key may or may not be used by the skin but it can
* be used to find the icon and unset it or change the icon if needed.
* This is useful for disabling icons that are set by extensions.
- * The value should be either a string or an array. If it is a string it will be output
- * directly as html, however some skins may choose to ignore it. An array is the preferred format
+ * The value should be either a string or an array. If it is a string it will be output
+ * directly as html, however some skins may choose to ignore it. An array is the preferred format
* for the icon, the following keys are used:
* src: An absolute url to the image to use for the icon, this is recommended
* but not required, however some skins will ignore icons without an image
@@ -2346,6 +2406,13 @@ $wgFooterIcons = array(
);
/**
+ * Login / create account link behavior when it's possible for anonymous users to create an account
+ * true = use a combined login / create account link
+ * false = split login and create account into two separate links
+ */
+$wgUseCombinedLoginLink = true;
+
+/**
* Search form behavior for Vector skin only
* true = use an icon search button
* false = use Go & Search buttons
@@ -2370,9 +2437,12 @@ $wgVectorShowVariantName = false;
$wgEdititis = false;
/**
- * Experimental better directionality support.
+ * Better directionality support (bug 6100 and related).
+ * Removed in 1.18, still kept here for LiquidThreads backwards compatibility.
+ *
+ * @deprecated since 1.18
*/
-$wgBetterDirectionality = false;
+$wgBetterDirectionality = true;
/** @} */ # End of output format settings }
@@ -2397,6 +2467,12 @@ $wgBetterDirectionality = false;
*/
$wgResourceModules = array();
+/*
+ * Default 'remoteBasePath' value for resource loader modules.
+ * If not set, then $wgScriptPath will be used as a fallback.
+ */
+$wgResourceBasePath = null;
+
/**
* Maximum time in seconds to cache resources served by the resource loader
*/
@@ -2453,6 +2529,19 @@ $wgResourceLoaderMinifierMaxLineLength = 1000;
$wgIncludeLegacyJavaScript = true;
/**
+ * Whether or not to assing configuration variables to the global window object.
+ * If this is set to false, old code using deprecated variables like:
+ * " if ( window.wgRestrictionEdit ) ..."
+ * or:
+ * " if ( wgIsArticle ) ..."
+ * will no longer work and needs to use mw.config instead. For example:
+ * " if ( mw.config.exists('wgRestrictionEdit') )"
+ * or
+ * " if ( mw.config.get('wgIsArticle') )".
+ */
+$wgLegacyJavaScriptGlobals = true;
+
+/**
* If set to a positive number, ResourceLoader will not generate URLs whose
* query string is more than this many characters long, and will instead use
* multiple requests with shorter query strings. This degrades performance,
@@ -2465,6 +2554,25 @@ $wgIncludeLegacyJavaScript = true;
*/
$wgResourceLoaderMaxQueryLength = -1;
+/**
+ * If set to true, JavaScript modules loaded from wiki pages will be parsed prior
+ * to minification to validate it.
+ *
+ * Parse errors will result in a JS exception being thrown during module load,
+ * which avoids breaking other modules loaded in the same request.
+ */
+$wgResourceLoaderValidateJS = true;
+
+/**
+ * If set to true, statically-sourced (file-backed) JavaScript resources will
+ * be parsed for validity before being bundled up into ResourceLoader modules.
+ *
+ * This can be helpful for development by providing better error messages in
+ * default (non-debug) mode, but JavaScript parsing is slow and memory hungry
+ * and may fail on large pre-bundled frameworks.
+ */
+$wgResourceLoaderValidateStaticJS = false;
+
/** @} */ # End of resource loader settings }
@@ -2511,6 +2619,14 @@ $wgMetaNamespaceTalk = false;
$wgExtraNamespaces = array();
/**
+ * Same as above, but for namespaces with gender distinction.
+ * Note: the default form for the namespace should also be set
+ * using $wgExtraNamespaces for the same index.
+ * @since 1.18
+ */
+$wgExtraGenderNamespaces = array();
+
+/**
* Namespace aliases
* These are alternate names for the primary localised namespace names, which
* are defined by $wgExtraNamespaces and the language file. If a page is
@@ -2720,6 +2836,7 @@ $wgUrlProtocols = array(
'https://',
'ftp://',
'irc://',
+ 'ircs://', // @bug 28503
'gopher://',
'telnet://', // Well if we're going to support the above.. -ævar
'nntp://', // @bug 3808 RFC 1738
@@ -2729,6 +2846,7 @@ $wgUrlProtocols = array(
'svn://',
'git://',
'mms://',
+ '//', // for protocol-relative URLs
);
/**
@@ -2781,8 +2899,9 @@ $wgAllowImageTag = false;
* - $wgTidyBin should be set to the path of the binary and
* - $wgTidyConf to the path of the configuration file.
* - $wgTidyOpts can include any number of parameters.
- * - $wgTidyInternal controls the use of the PECL extension to use an in-
- * process tidy library instead of spawning a separate program.
+ * - $wgTidyInternal controls the use of the PECL extension or the
+ * libtidy (PHP >= 5) extension to use an in-process tidy library instead
+ * of spawning a separate program.
* Normally you shouldn't need to override the setting except for
* debugging. To install, use 'pear install tidy' and add a line
* 'extension=tidy.so' to php.ini.
@@ -2862,6 +2981,7 @@ $wgExpensiveParserFunctionLimit = 100;
/**
* Preprocessor caching threshold
+ * Setting it to 'false' will disable the preprocessor cache.
*/
$wgPreprocessorCacheThreshold = 1000;
@@ -2883,14 +3003,30 @@ $wgTranscludeCacheExpiry = 3600;
*/
/**
- * Under which condition should a page in the main namespace be counted
- * as a valid article? If $wgUseCommaCount is set to true, it will be
- * counted if it contains at least one comma. If it is set to false
- * (default), it will only be counted if it contains at least one [[wiki
- * link]]. See http://www.mediawiki.org/wiki/Manual:Article_count
+ * Method used to determine if a page in a content namespace should be counted
+ * as a valid article.
+ *
+ * Redirect pages will never be counted as valid articles.
*
- * Retroactively changing this variable will not affect
- * the existing count (cf. maintenance/recount.sql).
+ * This variable can have the following values:
+ * - 'any': all pages as considered as valid articles
+ * - 'comma': the page must contain a comma to be considered valid
+ * - 'link': the page must contain a [[wiki link]] to be considered valid
+ * - null: the value will be set at run time depending on $wgUseCommaCount:
+ * if $wgUseCommaCount is false, it will be 'link', if it is true
+ * it will be 'comma'
+ *
+ * See also See http://www.mediawiki.org/wiki/Manual:Article_count
+ *
+ * Retroactively changing this variable will not affect the existing count,
+ * to update it, you will need to run the maintenance/updateArticleCount.php
+ * script.
+ */
+$wgArticleCountMethod = null;
+
+/**
+ * Backward compatibility setting, will set $wgArticleCountMethod if it is null.
+ * @deprecated since 1.18; use $wgArticleCountMethod instead
*/
$wgUseCommaCount = false;
@@ -2928,6 +3064,17 @@ $wgPasswordSalt = true;
$wgMinimalPasswordLength = 1;
/**
+ * Whether to allow password resets ("enter some identifying data, and we'll send an email
+ * with a temporary password you can use to get back into the account") identified by
+ * various bits of data. Setting all of these to false (or the whole variable to false)
+ * has the effect of disabling password resets entirely
+ */
+$wgPasswordResetRoutes = array(
+ 'username' => true,
+ 'email' => false,
+);
+
+/**
* Maximum number of Unicode characters in signature
*/
$wgMaxSigChars = 255;
@@ -2962,8 +3109,6 @@ $wgReservedUsernames = array(
$wgDefaultUserOptions = array(
'ccmeonemails' => 0,
'cols' => 80,
- 'contextchars' => 50,
- 'contextlines' => 5,
'date' => 'default',
'diffonly' => 0,
'disablemail' => 0,
@@ -2996,7 +3141,7 @@ $wgDefaultUserOptions = array(
'numberheadings' => 0,
'previewonfirst' => 0,
'previewontop' => 1,
- 'quickbar' => 1,
+ 'quickbar' => 5,
'rcdays' => 7,
'rclimit' => 50,
'rememberpassword' => 0,
@@ -3029,7 +3174,7 @@ $wgDefaultUserOptions = array(
/**
* Whether or not to allow and use real name fields.
- * @deprecated in 1.16, use $wgHiddenPrefs[] = 'realname' below to disable real
+ * @deprecated since 1.16, use $wgHiddenPrefs[] = 'realname' below to disable real
* names
*/
$wgAllowRealName = true;
@@ -3128,18 +3273,6 @@ $wgSecureLogin = false;
*/
/**
- * Allow sysops to ban logged-in users
- * @deprecated since 1.17, will be made permanently true in 1.18
- */
-$wgSysopUserBans = true;
-
-/**
- * Allow sysops to ban IP ranges
- * @deprecated since 1.17; set $wgBlockCIDRLimit to array( 'IPv4' => 32, 'IPv6 => 128 ) instead.
- */
-$wgSysopRangeBans = true;
-
-/**
* Number of seconds before autoblock entries expire. Default 86400 = 1 day.
*/
$wgAutoblockExpiry = 86400;
@@ -3180,7 +3313,7 @@ $wgBlockDisablesLogin = false;
* $wgWhitelistRead = array ( "Main Page", "Wikipedia:Help");
* </code>
*
- * Special:Userlogin and Special:Resetpass are always whitelisted.
+ * Special:Userlogin and Special:ChangePassword are always whitelisted.
*
* NOTE: This will only work if $wgGroupPermissions['*']['read'] is false --
* see below. Otherwise, ALL pages are accessible, regardless of this setting.
@@ -3278,7 +3411,6 @@ $wgGroupPermissions['sysop']['autopatrol'] = true;
$wgGroupPermissions['sysop']['protect'] = true;
$wgGroupPermissions['sysop']['proxyunbannable'] = true;
$wgGroupPermissions['sysop']['rollback'] = true;
-$wgGroupPermissions['sysop']['trackback'] = true;
$wgGroupPermissions['sysop']['upload'] = true;
$wgGroupPermissions['sysop']['reupload'] = true;
$wgGroupPermissions['sysop']['reupload-shared'] = true;
@@ -3295,6 +3427,7 @@ $wgGroupPermissions['sysop']['movefile'] = true;
$wgGroupPermissions['sysop']['unblockself'] = true;
$wgGroupPermissions['sysop']['suppressredirect'] = true;
#$wgGroupPermissions['sysop']['mergehistory'] = true;
+#$wgGroupPermissions['sysop']['trackback'] = true;
// Permission to change users' group assignments
$wgGroupPermissions['bureaucrat']['userrights'] = true;
@@ -3364,7 +3497,7 @@ $wgGroupsRemoveFromSelf = array();
* Set of available actions that can be restricted via action=protect
* You probably shouldn't change this.
* Translated through restriction-* messages.
- * Title::getRestrictionTypes() will remove restrictions that are not
+ * Title::getRestrictionTypes() will remove restrictions that are not
* applicable to a specific title (create and upload)
*/
$wgRestrictionTypes = array( 'create', 'edit', 'move', 'upload' );
@@ -3429,7 +3562,7 @@ $wgAutoConfirmCount = 0;
/**
* Automatically add a usergroup to any user who matches certain conditions.
* The format is
- * array( '&' or '|' or '^', cond1, cond2, ... )
+ * array( '&' or '|' or '^' or '!', cond1, cond2, ... )
* where cond1, cond2, ... are themselves conditions; *OR*
* APCOND_EMAILCONFIRMED, *OR*
* array( APCOND_EMAILCONFIRMED ), *OR*
@@ -3440,6 +3573,7 @@ $wgAutoConfirmCount = 0;
* array( APCOND_IPINRANGE, range ), *OR*
* array( APCOND_AGE_FROM_EDIT, seconds since first edit ), *OR*
* array( APCOND_BLOCKED ), *OR*
+ * array( APCOND_ISBOT ), *OR*
* similar constructs defined by extensions.
*
* If $wgEmailAuthentication is off, APCOND_EMAILCONFIRMED will be true for any
@@ -3453,6 +3587,31 @@ $wgAutopromote = array(
);
/**
+ * Automatically add a usergroup to any user who matches certain conditions.
+ * Does not add the user to the group again if it has been removed.
+ * Also, does not remove the group if the user no longer meets the criteria.
+ *
+ * The format is
+ * array( event => criteria, ... )
+ * where event is
+ * 'onEdit' (when user edits) or 'onView' (when user views the wiki)
+ * and criteria has the same format as $wgAutopromote
+ *
+ * @see $wgAutopromote
+ * @since 1.18
+ */
+$wgAutopromoteOnce = array(
+ 'onEdit' => array(),
+ 'onView' => array()
+);
+
+/*
+ * Put user rights log entries for autopromotion in recent changes?
+ * @since 1.18
+ */
+$wgAutopromoteOnceLogInRC = true;
+
+/**
* $wgAddGroups and $wgRemoveGroups can be used to give finer control over who
* can assign which groups at Special:Userrights. Example configuration:
*
@@ -3512,7 +3671,7 @@ $wgSummarySpamRegex = array();
* - true : block it
* - false : let it through
*
- * @deprecated Use hooks. See SpamBlacklist extension.
+ * @deprecated since 1.17 Use hooks. See SpamBlacklist extension.
*/
$wgFilterCallback = false;
@@ -3523,7 +3682,7 @@ $wgFilterCallback = false;
$wgEnableDnsBlacklist = false;
/**
- * @deprecated Use $wgEnableDnsBlacklist instead, only kept for backward
+ * @deprecated since 1.17 Use $wgEnableDnsBlacklist instead, only kept for backward
* compatibility
*/
$wgEnableSorbs = false;
@@ -3535,7 +3694,7 @@ $wgEnableSorbs = false;
$wgDnsBlacklistUrls = array( 'http.dnsbl.sorbs.net.' );
/**
- * @deprecated Use $wgDnsBlacklistUrls instead, only kept for backward
+ * @deprecated since 1.17 Use $wgDnsBlacklistUrls instead, only kept for backward
* compatibility
*/
$wgSorbsUrl = array();
@@ -3583,17 +3742,6 @@ $wgRateLimits = array(
$wgRateLimitLog = null;
/**
- * Array of groups which should never trigger the rate limiter
- *
- * @deprecated as of 1.13.0, the preferred method is using
- * $wgGroupPermissions[]['noratelimit']. However, this will still
- * work if desired.
- *
- * $wgRateLimitsExcludedGroups = array( 'sysop', 'bureaucrat' );
- */
-$wgRateLimitsExcludedGroups = array();
-
-/**
* Array of IPs which should be excluded from rate limits.
* This may be useful for whitelisting NAT gateways for conferences, etc.
*/
@@ -3631,7 +3779,7 @@ $wgBlockOpenProxies = false;
/** Port we want to scan for a proxy */
$wgProxyPorts = array( 80, 81, 1080, 3128, 6588, 8000, 8080, 8888, 65506 );
/** Script used to scan */
-$wgProxyScriptPath = "$IP/includes/proxy_check.php";
+$wgProxyScriptPath = "$IP/maintenance/proxy_check.php";
/** */
$wgProxyMemcExpiry = 86400;
/** This should always be customised in LocalSettings.php */
@@ -3658,13 +3806,34 @@ $wgCookieExpiration = 30*86400;
* or ".any.subdomain.net"
*/
$wgCookieDomain = '';
+
+
+/**
+ * Set this variable if you want to restrict cookies to a certain path within
+ * the domain specified by $wgCookieDomain.
+ */
$wgCookiePath = '/';
-$wgCookieSecure = ($wgProto == 'https');
+
+/**
+ * Whether the "secure" flag should be set on the cookie. This can be:
+ * - true: Set secure flag
+ * - false: Don't set secure flag
+ * - "detect": Set the secure flag if $wgServer is set to an HTTPS URL
+ */
+$wgCookieSecure = 'detect';
+
+/**
+ * By default, MediaWiki checks if the client supports cookies during the
+ * login process, so that it can display an informative error message if
+ * cookies are disabled. Set this to true if you want to disable this cookie
+ * check.
+ */
$wgDisableCookieCheck = false;
/**
- * Set $wgCookiePrefix to use a custom one. Setting to false sets the default of
- * using the database name.
+ * Cookies generated by MediaWiki have names starting with this prefix. Set it
+ * to a string to use a custom prefix. Setting it to false causes the database
+ * name to be used as a prefix.
*/
$wgCookiePrefix = false;
@@ -3672,10 +3841,8 @@ $wgCookiePrefix = false;
* Set authentication cookies to HttpOnly to prevent access by JavaScript,
* in browsers that support this feature. This can mitigates some classes of
* XSS attack.
- *
- * Only supported on PHP 5.2 or higher.
*/
-$wgCookieHttpOnly = version_compare("5.2", PHP_VERSION, "<");
+$wgCookieHttpOnly = true;
/**
* If the requesting browser matches a regex in this blacklist, we won't
@@ -3708,28 +3875,6 @@ $wgSessionName = false;
* Please see math/README for more information.
*/
$wgUseTeX = false;
-/** Location of the texvc binary */
-$wgTexvc = $IP . '/math/texvc';
-/**
- * Texvc background color
- * use LaTeX color format as used in \special function
- * for transparent background use value 'Transparent' for alpha transparency or
- * 'transparent' for binary transparency.
- */
-$wgTexvcBackgroundColor = 'transparent';
-
-/**
- * Normally when generating math images, we double-check that the
- * directories we want to write to exist, and that files that have
- * been generated still exist when we need to bring them up again.
- *
- * This lets us give useful error messages in case of permission
- * problems, and automatically rebuild images that have been lost.
- *
- * On a big site with heavy NFS traffic this can be slow and flaky,
- * so sometimes we want to short-circuit it by setting this to false.
- */
-$wgMathCheckFiles = true;
/* @} */ # end LaTeX }
@@ -3761,7 +3906,7 @@ $wgDebugLogPrefix = '';
$wgDebugRedirects = false;
/**
- * If true, log debugging data from action=raw.
+ * If true, log debugging data from action=raw and load.php.
* This is normally false to avoid overlapping debug entries due to gen=css and
* gen=js requests.
*/
@@ -3885,7 +4030,7 @@ $wgDebugProfiling = false;
/** Output debug message on every wfProfileIn/wfProfileOut */
$wgDebugFunctionEntry = 0;
-/*
+/**
* Destination for wfIncrStats() data...
* 'cache' to go into the system cache, if enabled (memcached)
* 'udp' to be sent to the UDP profiler (see $wgUDPProfilerHost)
@@ -3893,6 +4038,14 @@ $wgDebugFunctionEntry = 0;
*/
$wgStatsMethod = 'cache';
+/**
+ * When $wgStatsMethod is 'udp', setting this to a string allows statistics to
+ * be aggregated over more than one wiki. The string will be used in place of
+ * the DB name in outgoing UDP packets. If this is set to false, the DB name
+ * will be used.
+ */
+$wgAggregateStatsID = false;
+
/** Whereas to count the number of time an article is viewed.
* Does not work if pages are cached (for example with squid).
*/
@@ -3901,6 +4054,8 @@ $wgDisableCounters = false;
/**
* Support blog-style "trackbacks" for articles. See
* http://www.sixapart.com/pronet/docs/trackback_spec for details.
+ *
+ * If enabling this, you also need to grant the 'trackback' right to a group
*/
$wgUseTrackbacks = false;
@@ -3914,8 +4069,8 @@ $wgUseTrackbacks = false;
* Use full paths.
*/
$wgParserTestFiles = array(
- "$IP/maintenance/tests/parser/parserTests.txt",
- "$IP/maintenance/tests/parser/ExtraParserTests.txt"
+ "$IP/tests/parser/parserTests.txt",
+ "$IP/tests/parser/extraParserTests.txt"
);
/**
@@ -3954,11 +4109,8 @@ $wgAdvancedSearchHighlighting = false;
/**
* Regexp to match word boundaries, defaults for non-CJK languages
* should be empty for CJK since the words are not separate
- *
- * @todo FIXME: checks for lower than required PHP version (5.1.x).
*/
-$wgSearchHighlightBoundaries = version_compare("5.1", PHP_VERSION, "<")? '[\p{Z}\p{P}\p{C}]'
- : '[ ,.;:!?~!@#$%\^&*\(\)+=\-\\|\[\]"\'<>\n\r\/{}]'; // PHP 5.0 workaround
+$wgSearchHighlightBoundaries = '[\p{Z}\p{P}\p{C}]';
/**
* Set to true to have the search engine count total
@@ -4176,12 +4328,12 @@ $wgReadOnly = null;
$wgReadOnlyFile = false;
/**
- * When you run the web-based upgrade utility, it will tell you what to set
+ * When you run the web-based upgrade utility, it will tell you what to set
* this to in order to authorize the upgrade process. It will subsequently be
* used as a password, to authorize further upgrades.
*
- * For security, do not set this to a guessable string. Use the value supplied
- * by the install/upgrade process. To cause the upgrader to generate a new key,
+ * For security, do not set this to a guessable string. Use the value supplied
+ * by the install/upgrade process. To cause the upgrader to generate a new key,
* delete the old key from LocalSettings.php.
*/
$wgUpgradeKey = false;
@@ -4289,6 +4441,16 @@ $wgFeedDiffCutoff = 32768;
$wgOverrideSiteFeed = array();
/**
+ * Available feeds objects
+ * Should probably only be defined when a page is syndicated ie when
+ * $wgOut->isSyndicated() is true
+ */
+$wgFeedClasses = array(
+ 'rss' => 'RSSFeed',
+ 'atom' => 'AtomFeed',
+);
+
+/**
* Which feed types should we provide by default? This can include 'rss',
* 'atom', neither, or both.
*/
@@ -4337,16 +4499,31 @@ $wgUseTagFilter = true;
* @{
*/
-/** RDF metadata toggles */
-$wgEnableDublinCoreRdf = false;
-$wgEnableCreativeCommonsRdf = false;
-
-/** Override for copyright metadata.
- * TODO: these options need documentation
+/**
+ * Override for copyright metadata.
+ *
+ * This is the name of the page containing information about the wiki's copyright status,
+ * which will be added as a link in the footer if it is specified. It overrides
+ * $wgRightsUrl if both are specified.
*/
$wgRightsPage = null;
+
+/**
+ * Set this to specify an external URL containing details about the content license used on your wiki.
+ * If $wgRightsPage is set then this setting is ignored.
+ */
$wgRightsUrl = null;
+
+/**
+ * If either $wgRightsUrl or $wgRightsPage is specified then this variable gives the text for the link.
+ * If using $wgRightsUrl then this value must be specified. If using $wgRightsPage then the name of the
+ * page will also be used as the link if this variable is not set.
+ */
$wgRightsText = null;
+
+/**
+ * Override for copyright metadata.
+ */
$wgRightsIcon = null;
/**
@@ -4356,17 +4533,13 @@ $wgLicenseTerms = false;
/**
* Set this to some HTML to override the rights icon with an arbitrary logo
- * @deprecated Use $wgFooterIcons['copyright']['copyright']
+ * @deprecated since 1.18 Use $wgFooterIcons['copyright']['copyright']
*/
$wgCopyrightIcon = null;
/** Set this to true if you want detailed copyright information forms on Upload. */
$wgUseCopyrightUpload = false;
-/** Set this to false if you want to disable checking that detailed copyright
- * information values are not empty. */
-$wgCheckCopyrightUpload = true;
-
/**
* Set this to the number of authors that you want to be credited below an
* article text. Set it to zero to hide the attribution block, and a negative
@@ -4456,12 +4629,6 @@ $wgExportFromNamespaces = false;
$wgExtensionFunctions = array();
/**
- * Extension functions for initialisation of skins. This is called somewhat earlier
- * than $wgExtensionFunctions.
- */
-$wgSkinExtensionFunctions = array();
-
-/**
* Extension messages files.
*
* Associative array mapping extension name to the filename where messages can be
@@ -4480,7 +4647,7 @@ $wgExtensionMessagesFiles = array();
/**
* Aliases for special pages provided by extensions.
- * @deprecated Use $specialPageAliases in a file referred to by $wgExtensionMessagesFiles
+ * @deprecated since 1.16 Use $specialPageAliases in a file referred to by $wgExtensionMessagesFiles
*/
$wgExtensionAliasesFiles = array();
@@ -4500,7 +4667,10 @@ $wgParserOutputHooks = array();
/**
* List of valid skin names.
- * The key should be the name in all lower case, the value should be a display name.
+ * The key should be the name in all lower case, the value should be a properly
+ * cased name for the skin. This value will be prefixed with "Skin" to create the
+ * class name of the skin to load, and if the skin's class cannot be found through
+ * the autoloader it will be used to load a .php file by that name in the skins directory.
* The default skins will be added later, by Skin::getSkinNames(). Use
* Skin::getSkinNames() as an accessor if you wish to have access to the full list.
*/
@@ -4542,6 +4712,7 @@ $wgExtensionCredits = array();
/**
* Authentication plugin.
+ * @var AuthPlugin
*/
$wgAuth = null;
@@ -4572,6 +4743,17 @@ $wgJobClasses = array(
);
/**
+ * Jobs that must be explicitly requested, i.e. aren't run by job runners unless special flags are set.
+ *
+ * These can be:
+ * - Very long-running jobs.
+ * - Jobs that you would never want to run as part of a page rendering request.
+ * - Jobs that you want to run on specialized machines ( like transcoding, or a particular
+ * machine on your cluster has 'outside' web access you could restrict uploadFromUrl )
+ */
+$wgJobTypesExcludedFromDefaultQueue = array();
+
+/**
* Additional functions to be performed with updateSpecialPages.
* Expensive Querypages are already updated.
*/
@@ -4624,24 +4806,29 @@ $wgCategoryMagicGallery = true;
$wgCategoryPagingLimit = 200;
/**
- * Specify how category names should be sorted, when listed on a category page.
+ * Specify how category names should be sorted, when listed on a category page.
* A sorting scheme is also known as a collation.
*
* Available values are:
*
* - uppercase: Converts the category name to upper case, and sorts by that.
*
- * - uca-default: Provides access to the Unicode Collation Algorithm with
+ * - identity: Does no conversion. Sorts by binary value of the string.
+ *
+ * - uca-default: Provides access to the Unicode Collation Algorithm with
* the default element table. This is a compromise collation which sorts
* all languages in a mediocre way. However, it is better than "uppercase".
*
- * To use the uca-default collation, you must have PHP's intl extension
- * installed. See http://php.net/manual/en/intl.setup.php . The details of the
- * resulting collation will depend on the version of ICU installed on the
+ * To use the uca-default collation, you must have PHP's intl extension
+ * installed. See http://php.net/manual/en/intl.setup.php . The details of the
+ * resulting collation will depend on the version of ICU installed on the
* server.
*
* After you change this, you must run maintenance/updateCollation.php to fix
- * the sort keys in the database.
+ * the sort keys in the database.
+ *
+ * Extensions can define there own collations by subclassing Collation
+ * and using the Collation::factory hook.
*/
$wgCategoryCollation = 'uppercase';
@@ -4753,34 +4940,34 @@ $wgLogHeaders = array(
* Extensions with custom log types may add to this array.
*/
$wgLogActions = array(
- 'block/block' => 'blocklogentry',
- 'block/unblock' => 'unblocklogentry',
- 'block/reblock' => 'reblock-logentry',
- 'protect/protect' => 'protectedarticle',
- 'protect/modify' => 'modifiedarticleprotection',
- 'protect/unprotect' => 'unprotectedarticle',
- 'protect/move_prot' => 'movedarticleprotection',
- 'rights/rights' => 'rightslogentry',
- 'rights/disable' => 'disableaccount-logentry',
- 'delete/delete' => 'deletedarticle',
- 'delete/restore' => 'undeletedarticle',
- 'delete/revision' => 'revdelete-logentry',
- 'delete/event' => 'logdelete-logentry',
- 'upload/upload' => 'uploadedimage',
- 'upload/overwrite' => 'overwroteimage',
- 'upload/revert' => 'uploadedimage',
- 'move/move' => '1movedto2',
- 'move/move_redir' => '1movedto2_redir',
- 'import/upload' => 'import-logentry-upload',
- 'import/interwiki' => 'import-logentry-interwiki',
- 'merge/merge' => 'pagemerge-logentry',
- 'suppress/revision' => 'revdelete-logentry',
- 'suppress/file' => 'revdelete-logentry',
- 'suppress/event' => 'logdelete-logentry',
- 'suppress/delete' => 'suppressedarticle',
- 'suppress/block' => 'blocklogentry',
- 'suppress/reblock' => 'reblock-logentry',
- 'patrol/patrol' => 'patrol-log-line',
+ 'block/block' => 'blocklogentry',
+ 'block/unblock' => 'unblocklogentry',
+ 'block/reblock' => 'reblock-logentry',
+ 'protect/protect' => 'protectedarticle',
+ 'protect/modify' => 'modifiedarticleprotection',
+ 'protect/unprotect' => 'unprotectedarticle',
+ 'protect/move_prot' => 'movedarticleprotection',
+ 'rights/rights' => 'rightslogentry',
+ 'rights/autopromote' => 'rightslogentry-autopromote',
+ 'delete/delete' => 'deletedarticle',
+ 'delete/restore' => 'undeletedarticle',
+ 'delete/revision' => 'revdelete-logentry',
+ 'delete/event' => 'logdelete-logentry',
+ 'upload/upload' => 'uploadedimage',
+ 'upload/overwrite' => 'overwroteimage',
+ 'upload/revert' => 'uploadedimage',
+ 'move/move' => '1movedto2',
+ 'move/move_redir' => '1movedto2_redir',
+ 'import/upload' => 'import-logentry-upload',
+ 'import/interwiki' => 'import-logentry-interwiki',
+ 'merge/merge' => 'pagemerge-logentry',
+ 'suppress/revision' => 'revdelete-logentry',
+ 'suppress/file' => 'revdelete-logentry',
+ 'suppress/event' => 'logdelete-logentry',
+ 'suppress/delete' => 'suppressedarticle',
+ 'suppress/block' => 'blocklogentry',
+ 'suppress/reblock' => 'reblock-logentry',
+ 'patrol/patrol' => 'patrol-log-line',
);
/**
@@ -4795,11 +4982,6 @@ $wgLogActionsHandlers = array();
*/
$wgNewUserLog = true;
-/**
- * Log the automatic creations of new users accounts?
- */
-$wgLogAutocreatedAccounts = false;
-
/** @} */ # end logging }
/*************************************************************************//**
@@ -4868,16 +5050,18 @@ $wgSpecialPageGroups = array(
'Listusers' => 'users',
'Activeusers' => 'users',
'Listgrouprights' => 'users',
- 'Ipblocklist' => 'users',
+ 'BlockList' => 'users',
'Contributions' => 'users',
'Emailuser' => 'users',
'Listadmins' => 'users',
'Listbots' => 'users',
'Userrights' => 'users',
- 'Blockip' => 'users',
+ 'Block' => 'users',
+ 'Unblock' => 'users',
'Preferences' => 'users',
- 'Resetpass' => 'users',
+ 'ChangePassword' => 'users',
'DeletedContributions' => 'users',
+ 'PasswordReset' => 'users',
'Mostlinked' => 'highuse',
'Mostlinkedcategories' => 'highuse',
@@ -4926,12 +5110,6 @@ $wgSpecialPageGroups = array(
$wgSortSpecialPages = true;
/**
- * Filter for Special:Randompage. Part of a WHERE clause
- * @deprecated as of 1.16, use the SpecialRandomGetRandomTitle hook
- */
-$wgExtraRandompageSQL = false;
-
-/**
* On Special:Unusedimages, consider images "used", if they are put
* into a category. Default (false) is not to count those as used.
*/
@@ -4946,6 +5124,47 @@ $wgMaxRedirectLinksRetrieved = 500;
/** @} */ # end special pages }
/*************************************************************************//**
+ * @name Actions
+ * @{
+ */
+
+/**
+ * Array of allowed values for the title=foo&action=<action> parameter. Syntax is:
+ * 'foo' => 'ClassName' Load the specified class which subclasses Action
+ * 'foo' => true Load the class FooAction which subclasses Action
+ * If something is specified in the getActionOverrides()
+ * of the relevant Page object it will be used
+ * instead of the default class.
+ * 'foo' => false The action is disabled; show an error message
+ * Unsetting core actions will probably cause things to complain loudly.
+ */
+$wgActions = array(
+ 'credits' => true,
+ 'deletetrackback' => true,
+ 'info' => true,
+ 'markpatrolled' => true,
+ 'purge' => true,
+ 'revert' => true,
+ 'revisiondelete' => true,
+ 'rollback' => true,
+ 'unwatch' => true,
+ 'watch' => true,
+);
+
+/**
+ * Array of disabled article actions, e.g. view, edit, delete, etc.
+ * @deprecated since 1.18; just set $wgActions['action'] = false instead
+ */
+$wgDisabledActions = array();
+
+/**
+ * Allow the "info" action, very inefficient at the moment
+ */
+$wgAllowPageInfo = false;
+
+/** @} */ # end actions }
+
+/*************************************************************************//**
* @name Robot (search engine crawler) policy
* See also $wgNoFollowLinks.
* @{
@@ -5060,14 +5279,7 @@ $wgAPIMaxUncachedDiffs = 1;
$wgAPIRequestLog = false;
/**
- * Cache the API help text for up to an hour. Disable this during API
- * debugging and development
- */
-$wgAPICacheHelp = true;
-
-/**
- * Set the timeout for the API help text cache. Ignored if $wgAPICacheHelp
- * is false.
+ * Set the timeout for the API help text cache. If set to 0, caching disabled
*/
$wgAPICacheHelpTimeout = 60*60;
@@ -5080,12 +5292,11 @@ $wgUseAjax = true;
* List of Ajax-callable functions.
* Extensions acting as Ajax callbacks must register here
*/
-$wgAjaxExportList = array( 'wfAjaxGetFileUrl' );
+$wgAjaxExportList = array();
/**
* Enable watching/unwatching pages using AJAX.
* Requires $wgUseAjax to be true too.
- * Causes wfAjaxWatch to be added to $wgAjaxExportList
*/
$wgAjaxWatch = true;
@@ -5214,20 +5425,62 @@ $wgUpdateRowsPerQuery = 100;
/** @} */ # End job queue }
/************************************************************************//**
- * @name Miscellaneous
+ * @name HipHop compilation
* @{
*/
-/** Allow the "info" action, very inefficient at the moment */
-$wgAllowPageInfo = false;
+/**
+ * The build directory for HipHop compilation.
+ * Defaults to $IP/maintenance/hiphop/build.
+ */
+$wgHipHopBuildDirectory = false;
-/** Name of the external diff engine to use */
-$wgExternalDiffEngine = false;
+/**
+ * The HipHop build type. Can be either "Debug" or "Release".
+ */
+$wgHipHopBuildType = 'Debug';
/**
- * Array of disabled article actions, e.g. view, edit, dublincore, delete, etc.
+ * Number of parallel processes to use during HipHop compilation, or "detect"
+ * to guess from system properties.
*/
-$wgDisabledActions = array();
+$wgHipHopCompilerProcs = 'detect';
+
+/**
+ * Filesystem extensions directory. Defaults to $IP/../extensions.
+ *
+ * To compile extensions with HipHop, set $wgExtensionsDirectory correctly,
+ * and use code like:
+ *
+ * require( MWInit::extensionSetupPath( 'Extension/Extension.php' ) );
+ *
+ * to include the extension setup file from LocalSettings.php. It is not
+ * necessary to set this variable unless you use MWInit::extensionSetupPath().
+ */
+$wgExtensionsDirectory = false;
+
+/**
+ * A list of files that should be compiled into a HipHop build, in addition to
+ * those listed in $wgAutoloadClasses. Add to this array in an extension setup
+ * file in order to add files to the build.
+ *
+ * The files listed here must either be either absolute paths under $IP or
+ * under $wgExtensionsDirectory, or paths relative to the virtual source root
+ * "$IP/..", i.e. starting with "phase3" for core files, and "extensions" for
+ * extension files.
+ */
+$wgCompiledFiles = array();
+
+/** @} */ # End of HipHop compilation }
+
+
+/************************************************************************//**
+ * @name Miscellaneous
+ * @{
+ */
+
+/** Name of the external diff engine to use */
+$wgExternalDiffEngine = false;
/**
* Disable redirects to special pages and interwiki redirects, which use a 302
@@ -5296,6 +5549,8 @@ $wgUploadMaintenance = false;
$wgEnableSelenium = false;
$wgSeleniumTestConfigs = array();
$wgSeleniumConfigFile = null;
+$wgDBtestuser = ''; //db user that has permission to create and drop the test databases only
+$wgDBtestpassword = '';
/**
* For really cool vim folding this needs to be at the end:
diff --git a/includes/Defines.php b/includes/Defines.php
index 64197d9c..ff7d7980 100644
--- a/includes/Defines.php
+++ b/includes/Defines.php
@@ -1,6 +1,11 @@
<?php
/**
- * A few constants that might be needed during LocalSettings.php
+ * A few constants that might be needed during LocalSettings.php.
+ *
+ * Note: these constants must all be resolvable at compile time by HipHop,
+ * since this file will not be executed during request startup for a compiled
+ * MediaWiki.
+ *
* @file
*/
@@ -80,27 +85,6 @@ define( 'NS_IMAGE', NS_FILE );
define( 'NS_IMAGE_TALK', NS_FILE_TALK );
/**@}*/
-/**
- * Available feeds objects
- * Should probably only be defined when a page is syndicated ie when
- * $wgOut->isSyndicated() is true
- */
-$wgFeedClasses = array(
- 'rss' => 'RSSFeed',
- 'atom' => 'AtomFeed',
-);
-
-/**@{
- * Maths constants
- */
-define( 'MW_MATH_PNG', 0 );
-define( 'MW_MATH_SIMPLE', 1 );
-define( 'MW_MATH_HTML', 2 );
-define( 'MW_MATH_SOURCE', 3 );
-define( 'MW_MATH_MODERN', 4 );
-define( 'MW_MATH_MATHML', 5 );
-/**@}*/
-
/**@{
* Cache type
*/
@@ -114,7 +98,7 @@ define( 'CACHE_DBA', 4 ); // Use PHP's DBA extension to store in a DBM-st
/**@{
* Media types.
- * This defines constants for the value returned by Image::getMediaType()
+ * This defines constants for the value returned by File::getMediaType()
*/
define( 'MEDIATYPE_UNKNOWN', 'UNKNOWN' ); // unknown format
define( 'MEDIATYPE_BITMAP', 'BITMAP' ); // some bitmap image or image source (like psd, etc). Can't scale up.
@@ -254,4 +238,15 @@ define( 'APCOND_ISIP', 5 );
define( 'APCOND_IPINRANGE', 6 );
define( 'APCOND_AGE_FROM_EDIT', 7 );
define( 'APCOND_BLOCKED', 8 );
+define( 'APCOND_ISBOT', 9 );
/**@}*/
+
+/**
+ * Protocol constants for wfExpandUrl()
+ */
+define( 'PROTO_HTTP', 'http://' );
+define( 'PROTO_HTTPS', 'https://' );
+define( 'PROTO_RELATIVE', '//' );
+define( 'PROTO_CURRENT', null );
+define( 'PROTO_CANONICAL', 1 );
+define( 'PROTO_INTERNAL', 2 );
diff --git a/includes/DjVuImage.php b/includes/DjVuImage.php
index cccb070a..80b7408c 100644
--- a/includes/DjVuImage.php
+++ b/includes/DjVuImage.php
@@ -72,7 +72,7 @@ class DjVuImage {
function dump() {
$file = fopen( $this->mFilename, 'rb' );
$header = fread( $file, 12 );
- // FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
+ // @todo FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
extract( unpack( 'a4magic/a4chunk/NchunkLength', $header ) );
echo "$chunk $chunkLength\n";
$this->dumpForm( $file, $chunkLength, 1 );
@@ -88,7 +88,7 @@ class DjVuImage {
if( $chunkHeader == '' ) {
break;
}
- // FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
+ // @todo FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
extract( unpack( 'a4chunk/NchunkLength', $chunkHeader ) );
echo str_repeat( ' ', $indent * 4 ) . "$chunk $chunkLength\n";
@@ -119,7 +119,7 @@ class DjVuImage {
if( strlen( $header ) < 16 ) {
wfDebug( __METHOD__ . ": too short file header\n" );
} else {
- // FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
+ // @todo FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
extract( unpack( 'a4magic/a4form/NformLength/a4subtype', $header ) );
if( $magic != 'AT&T' ) {
@@ -143,7 +143,7 @@ class DjVuImage {
if( strlen( $header ) < 8 ) {
return array( false, 0 );
} else {
- // FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
+ // @todo FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
extract( unpack( 'a4chunk/Nlength', $header ) );
return array( $chunk, $length );
}
@@ -202,7 +202,7 @@ class DjVuImage {
return false;
}
- // FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
+ // @todo FIXME: Would be good to replace this extract() call with something that explicitly initializes local variables.
extract( unpack(
'nwidth/' .
'nheight/' .
@@ -269,7 +269,7 @@ class DjVuImage {
EOR;
$txt = preg_replace_callback( $reg, array( $this, 'pageTextCallback' ), $txt );
$txt = "<DjVuTxt>\n<HEAD></HEAD>\n<BODY>\n" . $txt . "</BODY>\n</DjVuTxt>\n";
- $xml = preg_replace( "/<DjVuXML>/", "<mw-djvu><DjVuXML>", $xml );
+ $xml = preg_replace( "/<DjVuXML>/", "<mw-djvu><DjVuXML>", $xml, 1 );
$xml = $xml . $txt. '</mw-djvu>' ;
}
}
diff --git a/includes/EditPage.php b/includes/EditPage.php
index 3e85ad10..e6e7111d 100644
--- a/includes/EditPage.php
+++ b/includes/EditPage.php
@@ -11,7 +11,7 @@
* interfaces.
*
* EditPage cares about two distinct titles:
- * $wgTitle is the page that forms submit to, links point to,
+ * $this->mContextTitle is the page that forms submit to, links point to,
* redirects go to, etc. $this->mTitle (as well as $mArticle) is the
* page in the database that is actually being edited. These are
* usually the same, but they are now allowed to be different.
@@ -42,20 +42,31 @@ class EditPage {
const AS_IMAGE_REDIRECT_ANON = 233;
const AS_IMAGE_REDIRECT_LOGGED = 234;
+ /**
+ * @var Article
+ */
var $mArticle;
+
+ /**
+ * @var Title
+ */
var $mTitle;
+ private $mContextTitle = null;
var $action;
var $isConflict = false;
var $isCssJsSubpage = false;
var $isCssSubpage = false;
var $isJsSubpage = false;
- var $deletedSinceEdit = false;
+ var $isWrongCaseCssJsPage = false;
+ var $isNew = false; // new page or new section
+ var $deletedSinceEdit;
var $formtype;
var $firsttime;
var $lastDelete;
var $mTokenOk = false;
var $mTokenOkExceptSuffix = false;
var $mTriedSave = false;
+ var $incompleteForm = false;
var $tooBig = false;
var $kblength = false;
var $missingComment = false;
@@ -64,7 +75,12 @@ class EditPage {
var $autoSumm = '';
var $hookError = '';
#var $mPreviewTemplates;
+
+ /**
+ * @var ParserOutput
+ */
var $mParserOutput;
+
var $mBaseRevision = false;
var $mShowSummaryField = true;
@@ -85,6 +101,7 @@ class EditPage {
public $editFormTextBottom;
public $editFormTextAfterContent;
public $previewTextAfterContent;
+ public $mPreloadText;
/* $didSave should be set to true whenever an article was succesfully altered. */
public $didSave = false;
@@ -94,7 +111,7 @@ class EditPage {
/**
* @todo document
- * @param $article
+ * @param $article Article
*/
function __construct( $article ) {
$this->mArticle =& $article;
@@ -113,18 +130,47 @@ class EditPage {
$this->mPreloadText = "";
}
+ /**
+ * @return Article
+ */
function getArticle() {
return $this->mArticle;
}
+ /**
+ * Set the context Title object
+ *
+ * @param $title Title object or null
+ */
+ public function setContextTitle( $title ) {
+ $this->mContextTitle = $title;
+ }
+
+ /**
+ * Get the context title object.
+ * If not set, $wgTitle will be returned. This behavior might changed in
+ * the future to return $this->mTitle instead.
+ *
+ * @return Title object
+ */
+ public function getContextTitle() {
+ if ( is_null( $this->mContextTitle ) ) {
+ global $wgTitle;
+ return $wgTitle;
+ } else {
+ return $this->mContextTitle;
+ }
+ }
/**
* Fetch initial editing page content.
+ *
+ * @param $def_text string
* @returns mixed string on success, $def_text for invalid sections
* @private
*/
function getContent( $def_text = '' ) {
- global $wgOut, $wgRequest, $wgParser, $wgContLang, $wgMessageCache;
+ global $wgOut, $wgRequest, $wgParser;
wfProfileIn( __METHOD__ );
# Get variables from query string :P
@@ -141,10 +187,10 @@ class EditPage {
if ( !$this->mTitle->exists() ) {
if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
# If this is a system message, get the default text.
- list( $message, $lang ) = $wgMessageCache->figureMessage( $wgContLang->lcfirst( $this->mTitle->getText() ) );
- $text = wfMsgGetKey( $message, false, $lang, false );
- if( wfEmptyMsg( $message, $text ) )
+ $text = $this->mTitle->getDefaultMessageText();
+ if( $text === false ) {
$text = $this->getPreloadedText( $preload );
+ }
} else {
# If requested, preload some text.
$text = $this->getPreloadedText( $preload );
@@ -198,7 +244,7 @@ class EditPage {
// was created, or we may simply have got bogus input.
$this->editFormPageTop .= $wgOut->parse( '<div class="error mw-undo-norev">' . wfMsgNoTrans( 'undo-norev' ) . '</div>' );
}
- } else if ( $section != '' ) {
+ } elseif ( $section != '' ) {
if ( $section == 'new' ) {
$text = $this->getPreloadedText( $preload );
} else {
@@ -212,7 +258,11 @@ class EditPage {
return $text;
}
- /** Use this method before edit() to preload some text into the edit box */
+ /**
+ * Use this method before edit() to preload some text into the edit box
+ *
+ * @param $text string
+ */
public function setPreloadedText( $text ) {
$this->mPreloadText = $text;
}
@@ -253,15 +303,19 @@ class EditPage {
return '';
}
- /*
+ /**
* Check if a page was deleted while the user was editing it, before submit.
* Note that we rely on the logging table, which hasn't been always there,
* but that doesn't matter, because this only applies to brand new
* deletes.
*/
protected function wasDeletedSinceLastEdit() {
- if ( $this->deletedSinceEdit )
- return true;
+ if ( $this->deletedSinceEdit !== null ) {
+ return $this->deletedSinceEdit;
+ }
+
+ $this->deletedSinceEdit = false;
+
if ( $this->mTitle->isDeletedQuick() ) {
$this->lastDelete = $this->getLastDelete();
if ( $this->lastDelete ) {
@@ -271,12 +325,15 @@ class EditPage {
}
}
}
+
return $this->deletedSinceEdit;
}
/**
* Checks whether the user entered a skin name in uppercase,
* e.g. "User:Example/Monobook.css" instead of "monobook.css"
+ *
+ * @return bool
*/
protected function isWrongCaseCssJsPage() {
if( $this->mTitle->isCssJsSubpage() ) {
@@ -335,7 +392,7 @@ class EditPage {
$this->preview = true;
}
- $wgOut->addModules( array( 'mediawiki.legacy.edit', 'mediawiki.action.edit' ) );
+ $wgOut->addModules( array( 'mediawiki.action.edit' ) );
if ( $wgUser->getOption( 'uselivepreview', false ) ) {
$wgOut->addModules( 'mediawiki.legacy.preview' );
@@ -345,6 +402,9 @@ class EditPage {
$permErrors = $this->getEditPermissionErrors();
if ( $permErrors ) {
+ // Auto-block user's IP if the account was "hard" blocked
+ $wgUser->spreadAnyEditBlock();
+
wfDebug( __METHOD__ . ": User can't edit\n" );
$content = $this->getContent( null );
$content = $content === '' ? null : $content;
@@ -354,9 +414,9 @@ class EditPage {
} else {
if ( $this->save ) {
$this->formtype = 'save';
- } else if ( $this->preview ) {
+ } elseif ( $this->preview ) {
$this->formtype = 'preview';
- } else if ( $this->diff ) {
+ } elseif ( $this->diff ) {
$this->formtype = 'diff';
} else { # First time through
$this->firsttime = true;
@@ -377,10 +437,11 @@ class EditPage {
$this->isConflict = false;
// css / js subpages of user pages get a special treatment
- $this->isCssJsSubpage = $this->mTitle->isCssJsSubpage();
- $this->isCssSubpage = $this->mTitle->isCssSubpage();
- $this->isJsSubpage = $this->mTitle->isJsSubpage();
+ $this->isCssJsSubpage = $this->mTitle->isCssJsSubpage();
+ $this->isCssSubpage = $this->mTitle->isCssSubpage();
+ $this->isJsSubpage = $this->mTitle->isJsSubpage();
$this->isWrongCaseCssJsPage = $this->isWrongCaseCssJsPage();
+ $this->isNew = !$this->mTitle->exists() || $this->section == 'new';
# Show applicable editing introductions
if ( $this->formtype == 'initial' || $this->firsttime )
@@ -392,16 +453,18 @@ class EditPage {
# Optional notices on a per-namespace and per-page basis
$editnotice_ns = 'editnotice-'.$this->mTitle->getNamespace();
- if ( !wfEmptyMsg( $editnotice_ns, wfMsgForContent( $editnotice_ns ) ) ) {
- $wgOut->addWikiText( wfMsgForContent( $editnotice_ns ) );
+ $editnotice_ns_message = wfMessage( $editnotice_ns )->inContentLanguage();
+ if ( $editnotice_ns_message->exists() ) {
+ $wgOut->addWikiText( $editnotice_ns_message->plain() );
}
if ( MWNamespace::hasSubpages( $this->mTitle->getNamespace() ) ) {
$parts = explode( '/', $this->mTitle->getDBkey() );
$editnotice_base = $editnotice_ns;
while ( count( $parts ) > 0 ) {
$editnotice_base .= '-'.array_shift( $parts );
- if ( !wfEmptyMsg( $editnotice_base, wfMsgForContent( $editnotice_base ) ) ) {
- $wgOut->addWikiText( wfMsgForContent( $editnotice_base ) );
+ $editnotice_base_msg = wfMessage( $editnotice_base )->inContentLanguage();
+ if ( $editnotice_base_msg->exists() ) {
+ $wgOut->addWikiText( $editnotice_base_msg->plain() );
}
}
}
@@ -439,6 +502,9 @@ class EditPage {
wfProfileOut( __METHOD__ );
}
+ /**
+ * @return array
+ */
protected function getEditPermissionErrors() {
global $wgUser;
$permErrors = $this->mTitle->getUserPermissionsErrors( 'edit', $wgUser );
@@ -532,7 +598,7 @@ class EditPage {
/**
* @todo document
- * @param $request
+ * @param $request WebRequest
*/
function importFormData( &$request ) {
global $wgLang, $wgUser;
@@ -559,7 +625,7 @@ class EditPage {
}
# Truncate for whole multibyte characters. +5 bytes for ellipsis
- $this->summary = $wgLang->truncate( $request->getText( 'wpSummary' ), 250, '' );
+ $this->summary = $wgLang->truncate( $request->getText( 'wpSummary' ), 250 );
# Remove extra headings from summaries and new sections.
$this->summary = preg_replace('/^\s*=+\s*(.*?)\s*=+\s*$/', '$1', $this->summary);
@@ -569,7 +635,17 @@ class EditPage {
$this->scrolltop = $request->getIntOrNull( 'wpScrolltop' );
- if ( is_null( $this->edittime ) ) {
+ if ($this->textbox1 === '' && $request->getVal( 'wpTextbox1' ) === null) {
+ // wpTextbox1 field is missing, possibly due to being "too big"
+ // according to some filter rules such as Suhosin's setting for
+ // suhosin.request.max_value_length (d'oh)
+ $this->incompleteForm = true;
+ } else {
+ // edittime should be one of our last fields; if it's missing,
+ // the submission probably broke somewhere in the middle.
+ $this->incompleteForm = is_null( $this->edittime );
+ }
+ if ( $this->incompleteForm ) {
# If the form is incomplete, force to preview.
wfDebug( __METHOD__ . ": Form data appears to be incomplete\n" );
wfDebug( "POST DATA: " . var_export( $_POST, true ) . "\n" );
@@ -589,7 +665,7 @@ class EditPage {
# The unmarked state will be assumed to be a save,
# if the form seems otherwise complete.
wfDebug( __METHOD__ . ": Passed token check.\n" );
- } else if ( $this->diff ) {
+ } elseif ( $this->diff ) {
# Failed token check, but only requested "Show Changes".
wfDebug( __METHOD__ . ": Failed token check; Show Changes requested.\n" );
} else {
@@ -653,7 +729,7 @@ class EditPage {
$this->bot = $request->getBool( 'bot', true );
$this->nosummary = $request->getBool( 'nosummary' );
- // FIXME: unused variable?
+ // @todo FIXME: Unused variable?
$this->oldid = $request->getInt( 'oldid' );
$this->live = $request->getCheck( 'live' );
@@ -719,8 +795,8 @@ class EditPage {
$ip = User::isIP( $username );
if ( !$user->isLoggedIn() && !$ip ) { # User does not exist
$wgOut->wrapWikiMsg( "<div class=\"mw-userpage-userdoesnotexist error\">\n$1\n</div>",
- array( 'userpage-userdoesnotexist', $username ) );
- } else if ( $user->isBlocked() ) { # Show log extract if the user is currently blocked
+ array( 'userpage-userdoesnotexist', wfEscapeWikiText( $username ) ) );
+ } elseif ( $user->isBlocked() ) { # Show log extract if the user is currently blocked
LogEventsList::showLogExtract(
$wgOut,
'block',
@@ -766,8 +842,8 @@ class EditPage {
$title = Title::newFromText( $this->editintro );
if ( $title instanceof Title && $title->exists() && $title->userCanRead() ) {
global $wgOut;
- $revision = Revision::newFromTitle( $title );
- $wgOut->addWikiTextTitleTidy( $revision->getText(), $this->mTitle );
+ // Added using template syntax, to take <noinclude>'s into account.
+ $wgOut->addWikiTextTitleTidy( '{{:' . $title->getFullText() . '}}', $this->mTitle );
return true;
} else {
return false;
@@ -779,32 +855,46 @@ class EditPage {
/**
* Attempt submission (no UI)
- * @return one of the constants describing the result
+ *
+ * @param $result
+ * @param $bot bool
+ *
+ * @return Status object, possibly with a message, but always with one of the AS_* constants in $status->value,
+ *
+ * FIXME: This interface is TERRIBLE, but hard to get rid of due to various error display idiosyncrasies. There are
+ * also lots of cases where error metadata is set in the object and retrieved later instead of being returned, e.g.
+ * AS_CONTENT_TOO_BIG and AS_BLOCKED_PAGE_FOR_USER. All that stuff needs to be cleaned up some time.
*/
function internalAttemptSave( &$result, $bot = false ) {
global $wgFilterCallback, $wgUser, $wgParser;
global $wgMaxArticleSize;
+
+ $status = Status::newGood();
wfProfileIn( __METHOD__ );
wfProfileIn( __METHOD__ . '-checks' );
if ( !wfRunHooks( 'EditPage::attemptSave', array( $this ) ) ) {
wfDebug( "Hook 'EditPage::attemptSave' aborted article saving\n" );
+ $status->fatal( 'hookaborted' );
+ $status->value = self::AS_HOOK_ERROR;
wfProfileOut( __METHOD__ . '-checks' );
wfProfileOut( __METHOD__ );
- return self::AS_HOOK_ERROR;
+ return $status;
}
# Check image redirect
if ( $this->mTitle->getNamespace() == NS_FILE &&
Title::newFromRedirect( $this->textbox1 ) instanceof Title &&
!$wgUser->isAllowed( 'upload' ) ) {
- $isAnon = $wgUser->isAnon();
+ $code = $wgUser->isAnon() ? self::AS_IMAGE_REDIRECT_ANON : self::AS_IMAGE_REDIRECT_LOGGED;
+ $status->setResult( false, $code );
wfProfileOut( __METHOD__ . '-checks' );
+
wfProfileOut( __METHOD__ );
- return $isAnon ? self::AS_IMAGE_REDIRECT_ANON : self::AS_IMAGE_REDIRECT_LOGGED;
+ return $status;
}
# Check for spam
@@ -818,276 +908,350 @@ class EditPage {
$pdbk = $this->mTitle->getPrefixedDBkey();
$match = str_replace( "\n", '', $match );
wfDebugLog( 'SpamRegex', "$ip spam regex hit [[$pdbk]]: \"$match\"" );
+ $status->fatal( 'spamprotectionmatch', $match );
+ $status->value = self::AS_SPAM_ERROR;
wfProfileOut( __METHOD__ . '-checks' );
wfProfileOut( __METHOD__ );
- return self::AS_SPAM_ERROR;
+ return $status;
}
if ( $wgFilterCallback && $wgFilterCallback( $this->mTitle, $this->textbox1, $this->section, $this->hookError, $this->summary ) ) {
# Error messages or other handling should be performed by the filter function
+ $status->setResult( false, self::AS_FILTERING );
wfProfileOut( __METHOD__ . '-checks' );
wfProfileOut( __METHOD__ );
- return self::AS_FILTERING;
+ return $status;
}
if ( !wfRunHooks( 'EditFilter', array( $this, $this->textbox1, $this->section, &$this->hookError, $this->summary ) ) ) {
# Error messages etc. could be handled within the hook...
+ $status->fatal( 'hookaborted' );
+ $status->value = self::AS_HOOK_ERROR;
wfProfileOut( __METHOD__ . '-checks' );
wfProfileOut( __METHOD__ );
- return self::AS_HOOK_ERROR;
+ 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;
wfProfileOut( __METHOD__ . '-checks' );
wfProfileOut( __METHOD__ );
- return self::AS_HOOK_ERROR_EXPECTED;
+ return $status;
}
if ( $wgUser->isBlockedFrom( $this->mTitle, false ) ) {
+ // Auto-block user's IP if the account was "hard" blocked
+ $wgUser->spreadAnyEditBlock();
# Check block state against master, thus 'false'.
+ $status->setResult( false, self::AS_BLOCKED_PAGE_FOR_USER );
wfProfileOut( __METHOD__ . '-checks' );
wfProfileOut( __METHOD__ );
- return self::AS_BLOCKED_PAGE_FOR_USER;
+ return $status;
}
$this->kblength = (int)( strlen( $this->textbox1 ) / 1024 );
if ( $this->kblength > $wgMaxArticleSize ) {
// Error will be displayed by showEditForm()
$this->tooBig = true;
+ $status->setResult( false, self::AS_CONTENT_TOO_BIG );
wfProfileOut( __METHOD__ . '-checks' );
wfProfileOut( __METHOD__ );
- return self::AS_CONTENT_TOO_BIG;
+ return $status;
}
if ( !$wgUser->isAllowed( 'edit' ) ) {
if ( $wgUser->isAnon() ) {
+ $status->setResult( false, self::AS_READ_ONLY_PAGE_ANON );
wfProfileOut( __METHOD__ . '-checks' );
wfProfileOut( __METHOD__ );
- return self::AS_READ_ONLY_PAGE_ANON;
+ return $status;
} else {
+ $status->fatal( 'readonlytext' );
+ $status->value = self::AS_READ_ONLY_PAGE_LOGGED;
wfProfileOut( __METHOD__ . '-checks' );
wfProfileOut( __METHOD__ );
- return self::AS_READ_ONLY_PAGE_LOGGED;
+ return $status;
}
}
if ( wfReadOnly() ) {
+ $status->fatal( 'readonlytext' );
+ $status->value = self::AS_READ_ONLY_PAGE;
wfProfileOut( __METHOD__ . '-checks' );
wfProfileOut( __METHOD__ );
- return self::AS_READ_ONLY_PAGE;
+ return $status;
}
if ( $wgUser->pingLimiter() ) {
+ $status->fatal( 'actionthrottledtext' );
+ $status->value = self::AS_RATE_LIMITED;
wfProfileOut( __METHOD__ . '-checks' );
wfProfileOut( __METHOD__ );
- return self::AS_RATE_LIMITED;
+ return $status;
}
# If the article has been deleted while editing, don't save it without
# confirmation
if ( $this->wasDeletedSinceLastEdit() && !$this->recreate ) {
+ $status->setResult( false, self::AS_ARTICLE_WAS_DELETED );
wfProfileOut( __METHOD__ . '-checks' );
wfProfileOut( __METHOD__ );
- return self::AS_ARTICLE_WAS_DELETED;
+ return $status;
}
wfProfileOut( __METHOD__ . '-checks' );
# If article is new, insert it.
$aid = $this->mTitle->getArticleID( Title::GAID_FOR_UPDATE );
- if ( 0 == $aid ) {
+ $new = ( $aid == 0 );
+
+ if ( $new ) {
// Late check for create permission, just in case *PARANOIA*
if ( !$this->mTitle->userCan( 'create' ) ) {
+ $status->fatal( 'nocreatetext' );
+ $status->value = self::AS_NO_CREATE_PERMISSION;
wfDebug( __METHOD__ . ": no create permission\n" );
wfProfileOut( __METHOD__ );
- return self::AS_NO_CREATE_PERMISSION;
+ return $status;
}
# Don't save a new article if it's blank.
if ( $this->textbox1 == '' ) {
+ $status->setResult( false, self::AS_BLANK_ARTICLE );
wfProfileOut( __METHOD__ );
- return self::AS_BLANK_ARTICLE;
+ 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 self::AS_HOOK_ERROR;
+ 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;
wfProfileOut( __METHOD__ );
- return self::AS_HOOK_ERROR_EXPECTED;
+ return $status;
}
# Handle the user preference to force summaries here. Check if it's not a redirect.
if ( !$this->allowBlankSummary && !Title::newFromRedirect( $this->textbox1 ) ) {
if ( md5( $this->summary ) == $this->autoSumm ) {
$this->missingSummary = true;
+ $status->fatal( 'missingsummary' ); // or 'missingcommentheader' if $section == 'new'. Blegh
+ $status->value = self::AS_SUMMARY_NEEDED;
wfProfileOut( __METHOD__ );
- return self::AS_SUMMARY_NEEDED;
+ return $status;
}
}
- $isComment = ( $this->section == 'new' );
+ $text = $this->textbox1;
+ if ( $this->section == 'new' && $this->summary != '' ) {
+ $text = wfMsgForContent( 'newsectionheaderdefaultlevel', $this->summary ) . "\n\n" . $text;
+ }
- $this->mArticle->insertNewArticle( $this->textbox1, $this->summary,
- $this->minoredit, $this->watchthis, false, $isComment, $bot );
+ $status->value = self::AS_SUCCESS_NEW_ARTICLE;
- wfProfileOut( __METHOD__ );
- return self::AS_SUCCESS_NEW_ARTICLE;
- }
+ } else {
- # Article exists. Check for edit conflict.
+ # Article exists. Check for edit conflict.
- $this->mArticle->clear(); # Force reload of dates, etc.
- $this->mArticle->forUpdate( true ); # Lock the article
+ $this->mArticle->clear(); # Force reload of dates, etc.
- wfDebug( "timestamp: {$this->mArticle->getTimestamp()}, edittime: {$this->edittime}\n" );
+ wfDebug( "timestamp: {$this->mArticle->getTimestamp()}, edittime: {$this->edittime}\n" );
- if ( $this->mArticle->getTimestamp() != $this->edittime ) {
- $this->isConflict = true;
- if ( $this->section == 'new' ) {
- if ( $this->mArticle->getUserText() == $wgUser->getName() &&
- $this->mArticle->getComment() == $this->summary ) {
- // Probably a duplicate submission of a new comment.
- // This can happen when squid resends a request after
- // a timeout but the first one actually went through.
- wfDebug( __METHOD__ . ": duplicate new section submission; trigger edit conflict!\n" );
- } else {
- // New comment; suppress conflict.
- $this->isConflict = false;
- wfDebug( __METHOD__ .": conflict suppressed; new section\n" );
+ if ( $this->mArticle->getTimestamp() != $this->edittime ) {
+ $this->isConflict = true;
+ if ( $this->section == 'new' ) {
+ if ( $this->mArticle->getUserText() == $wgUser->getName() &&
+ $this->mArticle->getComment() == $this->summary ) {
+ // Probably a duplicate submission of a new comment.
+ // This can happen when squid resends a request after
+ // a timeout but the first one actually went through.
+ wfDebug( __METHOD__ . ": duplicate new section submission; trigger edit conflict!\n" );
+ } else {
+ // New comment; suppress conflict.
+ $this->isConflict = false;
+ wfDebug( __METHOD__ .": conflict suppressed; new section\n" );
+ }
}
}
- }
- $userid = $wgUser->getId();
-
- # Suppress edit conflict with self, except for section edits where merging is required.
- if ( $this->isConflict && $this->section == '' && $this->userWasLastToEdit( $userid, $this->edittime ) ) {
- wfDebug( __METHOD__ . ": Suppressing edit conflict, same user.\n" );
- $this->isConflict = false;
- }
+ $userid = $wgUser->getId();
- if ( $this->isConflict ) {
- wfDebug( __METHOD__ . ": conflict! getting section '$this->section' for time '$this->edittime' (article time '" .
- $this->mArticle->getTimestamp() . "')\n" );
- $text = $this->mArticle->replaceSection( $this->section, $this->textbox1, $this->summary, $this->edittime );
- } else {
- wfDebug( __METHOD__ . ": getting section '$this->section'\n" );
- $text = $this->mArticle->replaceSection( $this->section, $this->textbox1, $this->summary );
- }
- if ( is_null( $text ) ) {
- wfDebug( __METHOD__ . ": activating conflict; section replace failed.\n" );
- $this->isConflict = true;
- $text = $this->textbox1; // do not try to merge here!
- } else if ( $this->isConflict ) {
- # Attempt merge
- if ( $this->mergeChangesInto( $text ) ) {
- // Successful merge! Maybe we should tell the user the good news?
+ # Suppress edit conflict with self, except for section edits where merging is required.
+ if ( $this->isConflict && $this->section == '' && $this->userWasLastToEdit( $userid, $this->edittime ) ) {
+ wfDebug( __METHOD__ . ": Suppressing edit conflict, same user.\n" );
$this->isConflict = false;
- wfDebug( __METHOD__ . ": Suppressing edit conflict, successful merge.\n" );
- } else {
- $this->section = '';
- $this->textbox1 = $text;
- wfDebug( __METHOD__ . ": Keeping edit conflict, failed merge.\n" );
}
- }
- if ( $this->isConflict ) {
- wfProfileOut( __METHOD__ );
- return self::AS_CONFLICT_DETECTED;
- }
-
- $oldtext = $this->mArticle->getContent();
-
- // Run post-section-merge edit filter
- if ( !wfRunHooks( 'EditFilterMerged', array( $this, $text, &$this->hookError, $this->summary ) ) ) {
- # Error messages etc. could be handled within the hook...
- wfProfileOut( __METHOD__ );
- return self::AS_HOOK_ERROR;
- } elseif ( $this->hookError != '' ) {
- # ...or the hook could be expecting us to produce an error
- wfProfileOut( __METHOD__ );
- return self::AS_HOOK_ERROR_EXPECTED;
- }
+ if ( $this->isConflict ) {
+ wfDebug( __METHOD__ . ": conflict! getting section '$this->section' for time '$this->edittime' (article time '" .
+ $this->mArticle->getTimestamp() . "')\n" );
+ $text = $this->mArticle->replaceSection( $this->section, $this->textbox1, $this->summary, $this->edittime );
+ } else {
+ wfDebug( __METHOD__ . ": getting section '$this->section'\n" );
+ $text = $this->mArticle->replaceSection( $this->section, $this->textbox1, $this->summary );
+ }
+ if ( is_null( $text ) ) {
+ wfDebug( __METHOD__ . ": activating conflict; section replace failed.\n" );
+ $this->isConflict = true;
+ $text = $this->textbox1; // do not try to merge here!
+ } elseif ( $this->isConflict ) {
+ # Attempt merge
+ if ( $this->mergeChangesInto( $text ) ) {
+ // Successful merge! Maybe we should tell the user the good news?
+ $this->isConflict = false;
+ wfDebug( __METHOD__ . ": Suppressing edit conflict, successful merge.\n" );
+ } else {
+ $this->section = '';
+ $this->textbox1 = $text;
+ wfDebug( __METHOD__ . ": Keeping edit conflict, failed merge.\n" );
+ }
+ }
- # Handle the user preference to force summaries here, but not for null edits
- if ( $this->section != 'new' && !$this->allowBlankSummary && 0 != strcmp( $oldtext, $text )
- && !Title::newFromRedirect( $text ) ) # check if it's not a redirect
- {
- if ( md5( $this->summary ) == $this->autoSumm ) {
- $this->missingSummary = true;
+ if ( $this->isConflict ) {
+ $status->setResult( false, self::AS_CONFLICT_DETECTED );
wfProfileOut( __METHOD__ );
- return self::AS_SUMMARY_NEEDED;
+ return $status;
}
- }
- # And a similar thing for new sections
- if ( $this->section == 'new' && !$this->allowBlankSummary ) {
- if ( trim( $this->summary ) == '' ) {
- $this->missingSummary = true;
+ $oldtext = $this->mArticle->getContent();
+
+ // Run post-section-merge edit filter
+ if ( !wfRunHooks( 'EditFilterMerged', array( $this, $text, &$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;
wfProfileOut( __METHOD__ );
- return self::AS_SUMMARY_NEEDED;
+ return $status;
}
- }
- # All's well
- wfProfileIn( __METHOD__ . '-sectionanchor' );
- $sectionanchor = '';
- if ( $this->section == 'new' ) {
- if ( $this->textbox1 == '' ) {
- $this->missingComment = true;
- wfProfileOut( __METHOD__ . '-sectionanchor' );
- wfProfileOut( __METHOD__ );
- return self::AS_TEXTBOX_EMPTY;
+ # Handle the user preference to force summaries here, but not for null edits
+ if ( $this->section != 'new' && !$this->allowBlankSummary && 0 != strcmp( $oldtext, $text )
+ && !Title::newFromRedirect( $text ) ) # check if it's not a redirect
+ {
+ if ( md5( $this->summary ) == $this->autoSumm ) {
+ $this->missingSummary = true;
+ $status->fatal( 'missingsummary' );
+ $status->value = self::AS_SUMMARY_NEEDED;
+ wfProfileOut( __METHOD__ );
+ return $status;
+ }
}
- if ( $this->summary != '' ) {
- $sectionanchor = $wgParser->guessLegacySectionNameFromWikiText( $this->summary );
- # This is a new section, so create a link to the new section
- # in the revision summary.
- $cleanSummary = $wgParser->stripSectionName( $this->summary );
- $this->summary = wfMsgForContent( 'newsectionsummary', $cleanSummary );
+
+ # And a similar thing for new sections
+ if ( $this->section == 'new' && !$this->allowBlankSummary ) {
+ if ( trim( $this->summary ) == '' ) {
+ $this->missingSummary = true;
+ $status->fatal( 'missingsummary' ); // or 'missingcommentheader' if $section == 'new'. Blegh
+ $status->value = self::AS_SUMMARY_NEEDED;
+ wfProfileOut( __METHOD__ );
+ return $status;
+ }
}
- } elseif ( $this->section != '' ) {
- # Try to get a section anchor from the section source, redirect to edited section if header found
- # XXX: might be better to integrate this into Article::replaceSection
- # for duplicate heading checking and maybe parsing
- $hasmatch = preg_match( "/^ *([=]{1,6})(.*?)(\\1) *\\n/i", $this->textbox1, $matches );
- # we can't deal with anchors, includes, html etc in the header for now,
- # headline would need to be parsed to improve this
- if ( $hasmatch and strlen( $matches[2] ) > 0 ) {
- $sectionanchor = $wgParser->guessLegacySectionNameFromWikiText( $matches[2] );
+
+ # All's well
+ wfProfileIn( __METHOD__ . '-sectionanchor' );
+ $sectionanchor = '';
+ if ( $this->section == 'new' ) {
+ if ( $this->textbox1 == '' ) {
+ $this->missingComment = true;
+ $status->fatal( 'missingcommenttext' );
+ $status->value = self::AS_TEXTBOX_EMPTY;
+ wfProfileOut( __METHOD__ . '-sectionanchor' );
+ wfProfileOut( __METHOD__ );
+ return $status;
+ }
+ if ( $this->summary != '' ) {
+ $sectionanchor = $wgParser->guessLegacySectionNameFromWikiText( $this->summary );
+ # This is a new section, so create a link to the new section
+ # in the revision summary.
+ $cleanSummary = $wgParser->stripSectionName( $this->summary );
+ $this->summary = wfMsgForContent( 'newsectionsummary', $cleanSummary );
+ }
+ } elseif ( $this->section != '' ) {
+ # Try to get a section anchor from the section source, redirect to edited section if header found
+ # XXX: might be better to integrate this into Article::replaceSection
+ # for duplicate heading checking and maybe parsing
+ $hasmatch = preg_match( "/^ *([=]{1,6})(.*?)(\\1) *\\n/i", $this->textbox1, $matches );
+ # we can't deal with anchors, includes, html etc in the header for now,
+ # headline would need to be parsed to improve this
+ if ( $hasmatch && strlen( $matches[2] ) > 0 ) {
+ $sectionanchor = $wgParser->guessLegacySectionNameFromWikiText( $matches[2] );
+ }
}
- }
- wfProfileOut( __METHOD__ . '-sectionanchor' );
+ $result['sectionanchor'] = $sectionanchor;
+ wfProfileOut( __METHOD__ . '-sectionanchor' );
+
+ // Save errors may fall down to the edit form, but we've now
+ // merged the section into full text. Clear the section field
+ // so that later submission of conflict forms won't try to
+ // replace that into a duplicated mess.
+ $this->textbox1 = $text;
+ $this->section = '';
- // Save errors may fall down to the edit form, but we've now
- // merged the section into full text. Clear the section field
- // so that later submission of conflict forms won't try to
- // replace that into a duplicated mess.
- $this->textbox1 = $text;
- $this->section = '';
+ $status->value = self::AS_SUCCESS_UPDATE;
+ }
// Check for length errors again now that the section is merged in
$this->kblength = (int)( strlen( $text ) / 1024 );
if ( $this->kblength > $wgMaxArticleSize ) {
$this->tooBig = true;
+ $status->setResult( false, self::AS_MAX_ARTICLE_SIZE_EXCEEDED );
wfProfileOut( __METHOD__ );
- return self::AS_MAX_ARTICLE_SIZE_EXCEEDED;
+ return $status;
}
- # update the article here
- if ( $this->mArticle->updateArticle( $text, $this->summary, $this->minoredit,
- $this->watchthis, $bot, $sectionanchor ) )
- {
+ $flags = EDIT_DEFER_UPDATES | EDIT_AUTOSUMMARY |
+ ( $new ? EDIT_NEW : EDIT_UPDATE ) |
+ ( ( $this->minoredit && !$this->isNew ) ? EDIT_MINOR : 0 ) |
+ ( $bot ? EDIT_FORCE_BOT : 0 );
+
+ $doEditStatus = $this->mArticle->doEdit( $text, $this->summary, $flags );
+
+ if ( $doEditStatus->isOK() ) {
+ $result['redirect'] = Title::newFromRedirect( $text ) !== null;
+ $this->commitWatch();
wfProfileOut( __METHOD__ );
- return self::AS_SUCCESS_UPDATE;
+ return $status;
} else {
$this->isConflict = true;
+ $doEditStatus->value = self::AS_END; // Destroys data doEdit() put in $status->value but who cares
+ wfProfileOut( __METHOD__ );
+ return $doEditStatus;
+ }
+ }
+
+ /**
+ * Commit the change of watch status
+ */
+ protected function commitWatch() {
+ global $wgUser;
+ if ( $this->watchthis xor $this->mTitle->userIsWatching() ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
+ if ( $this->watchthis ) {
+ WatchAction::doWatch( $this->mTitle, $wgUser );
+ } else {
+ WatchAction::doUnwatch( $this->mTitle, $wgUser );
+ }
+ $dbw->commit();
}
- wfProfileOut( __METHOD__ );
- return self::AS_END;
}
/**
* Check if no edits were made by other users since
* the time a user started editing the page. Limit to
* 50 revisions for the sake of performance.
+ *
+ * @param $id int
+ * @param $edittime string
+ *
+ * @return bool
*/
protected function userWasLastToEdit( $id, $edittime ) {
if( !$id ) return false;
@@ -1110,7 +1274,10 @@ class EditPage {
/**
* Check given input text against $wgSpamRegex, and return the text of the first match.
- * @return mixed -- matching string or false
+ *
+ * @param $text string
+ *
+ * @return string|false matching string or false
*/
public static function matchSpamRegex( $text ) {
global $wgSpamRegex;
@@ -1121,7 +1288,10 @@ class EditPage {
/**
* Check given input text against $wgSpamRegex, and return the text of the first match.
- * @return mixed -- matching string or false
+ *
+ * @parma $text string
+ *
+ * @return string|false matching string or false
*/
public static function matchSummarySpamRegex( $text ) {
global $wgSummarySpamRegex;
@@ -1129,6 +1299,11 @@ class EditPage {
return self::matchSpamRegexInternal( $text, $regexes );
}
+ /**
+ * @param $text string
+ * @param $regexes array
+ * @return bool|string
+ */
protected static function matchSpamRegexInternal( $text, $regexes ) {
foreach( $regexes as $regex ) {
$matches = array();
@@ -1142,7 +1317,7 @@ class EditPage {
/**
* Initialise form fields in the object
* Called on the first invocation, e.g. when a user clicks an edit link
- * @returns bool -- if the requested section is valid
+ * @return bool -- if the requested section is valid
*/
function initialiseForm() {
global $wgUser;
@@ -1160,30 +1335,34 @@ class EditPage {
# Already watched
$this->watchthis = true;
}
- if ( $wgUser->getOption( 'minordefault' ) ) $this->minoredit = true;
- if ( $this->textbox1 === false ) return false;
+ if ( $wgUser->getOption( 'minordefault' ) && !$this->isNew ) {
+ $this->minoredit = true;
+ }
+ if ( $this->textbox1 === false ) {
+ return false;
+ }
wfProxyCheck();
return true;
}
function setHeaders() {
- global $wgOut, $wgTitle;
+ global $wgOut;
$wgOut->setRobotPolicy( 'noindex,nofollow' );
if ( $this->formtype == 'preview' ) {
$wgOut->setPageTitleActionText( wfMsg( 'preview' ) );
}
if ( $this->isConflict ) {
- $wgOut->setPageTitle( wfMsg( 'editconflict', $wgTitle->getPrefixedText() ) );
+ $wgOut->setPageTitle( wfMsg( 'editconflict', $this->getContextTitle()->getPrefixedText() ) );
} elseif ( $this->section != '' ) {
$msg = $this->section == 'new' ? 'editingcomment' : 'editingsection';
- $wgOut->setPageTitle( wfMsg( $msg, $wgTitle->getPrefixedText() ) );
+ $wgOut->setPageTitle( wfMsg( $msg, $this->getContextTitle()->getPrefixedText() ) );
} else {
# Use the title defined by DISPLAYTITLE magic word when present
if ( isset( $this->mParserOutput )
&& ( $dt = $this->mParserOutput->getDisplayTitle() ) !== false ) {
$title = $dt;
} else {
- $title = $wgTitle->getPrefixedText();
+ $title = $this->getContextTitle()->getPrefixedText();
}
$wgOut->setPageTitle( wfMsg( 'editing', $title ) );
}
@@ -1191,24 +1370,14 @@ class EditPage {
/**
* Send the edit form and related headers to $wgOut
- * @param $formCallback Optional callable that takes an OutputPage
- * parameter; will be called during form output
- * near the top, for captchas and the like.
+ * @param $formCallback Callback that takes an OutputPage parameter; will be called
+ * during form output near the top, for captchas and the like.
*/
function showEditForm( $formCallback = null ) {
- global $wgOut, $wgUser, $wgTitle;
-
- # If $wgTitle is null, that means we're in API mode.
- # Some hook probably called this function without checking
- # for is_null($wgTitle) first. Bail out right here so we don't
- # do lots of work just to discard it right after.
- if ( is_null( $wgTitle ) )
- return;
+ global $wgOut, $wgUser;
wfProfileIn( __METHOD__ );
- $sk = $wgUser->getSkin();
-
#need to parse the preview early so that we know which templates are used,
#otherwise users with "show preview after edit box" will get a blank list
#we parse this near the beginning so that setHeaders can do the title
@@ -1230,7 +1399,7 @@ class EditPage {
return;
}
- $action = htmlspecialchars( $this->getActionURL( $wgTitle ) );
+ $action = htmlspecialchars( $this->getActionURL( $this->getContextTitle() ) );
if ( $wgUser->getOption( 'showtoolbar' ) and !$this->isCssJsSubpage ) {
# prepare toolbar for edit buttons
@@ -1249,10 +1418,10 @@ class EditPage {
$wgOut->addHTML( $this->editFormTextTop );
$templates = $this->getTemplates();
- $formattedtemplates = $sk->formatTemplates( $templates, $this->preview, $this->section != '');
+ $formattedtemplates = Linker::formatTemplates( $templates, $this->preview, $this->section != '');
$hiddencats = $this->mArticle->getHiddenCategories();
- $formattedhiddencats = $sk->formatHiddenCategories( $hiddencats );
+ $formattedhiddencats = Linker::formatHiddenCategories( $hiddencats );
if ( $this->wasDeletedSinceLastEdit() && 'save' != $this->formtype ) {
$wgOut->wrapWikiMsg(
@@ -1265,7 +1434,6 @@ class EditPage {
// @todo move this to a cleaner conditional instead of blanking a variable
}
$wgOut->addHTML( <<<HTML
-{$toolbar}
<form id="editform" name="editform" method="post" action="$action" enctype="multipart/form-data">
HTML
);
@@ -1280,11 +1448,19 @@ HTML
$this->showFormBeforeText();
if ( $this->wasDeletedSinceLastEdit() && 'save' == $this->formtype ) {
+ $username = $this->lastDelete->user_name;
+ $comment = $this->lastDelete->log_comment;
+
+ // It is better to not parse the comment at all than to have templates expanded in the middle
+ // TODO: can the checkLabel be moved outside of the div so that wrapWikiMsg could be used?
+ $key = $comment === ''
+ ? 'confirmrecreate-noreason'
+ : 'confirmrecreate';
$wgOut->addHTML(
'<div class="mw-confirm-recreate">' .
- $wgOut->parse( wfMsg( 'confirmrecreate', $this->lastDelete->user_name , $this->lastDelete->log_comment ) ) .
+ wfMsgExt( $key, 'parseinline', $username, "<nowiki>$comment</nowiki>" ) .
Xml::checkLabel( wfMsg( 'recreate' ), 'wpRecreate', 'wpRecreate', false,
- array( 'title' => $sk->titleAttrib( 'recreate' ), 'tabindex' => 1, 'id' => 'wpRecreate' )
+ array( 'title' => Linker::titleAttrib( 'recreate' ), 'tabindex' => 1, 'id' => 'wpRecreate' )
) .
'</div>'
);
@@ -1312,6 +1488,8 @@ HTML
$wgOut->addHTML( $this->editFormTextBeforeContent );
+ $wgOut->addHTML( $toolbar );
+
if ( $this->isConflict ) {
// In an edit conflict bypass the overrideable content form method
// and fallback to the raw wpTextbox1 since editconflicts can't be
@@ -1359,7 +1537,7 @@ HTML
}
protected function showHeader() {
- global $wgOut, $wgUser, $wgTitle, $wgMaxArticleSize, $wgLang;
+ global $wgOut, $wgUser, $wgMaxArticleSize, $wgLang;
if ( $this->isConflict ) {
$wgOut->wrapWikiMsg( "<div class='mw-explainconflict'>\n$1\n</div>", 'explainconflict' );
$this->edittime = $this->mArticle->getTimestamp();
@@ -1410,7 +1588,7 @@ HTML
if ( !$this->mArticle->mRevision->userCan( Revision::DELETED_TEXT ) ) {
$wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-permission' );
- } else if ( $this->mArticle->mRevision->isDeleted( Revision::DELETED_TEXT ) ) {
+ } elseif ( $this->mArticle->mRevision->isDeleted( Revision::DELETED_TEXT ) ) {
$wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-view' );
}
@@ -1433,7 +1611,7 @@ HTML
if ( $this->isCssJsSubpage ) {
# Check the skin exists
if ( $this->isWrongCaseCssJsPage ) {
- $wgOut->wrapWikiMsg( "<div class='error' id='mw-userinvalidcssjstitle'>\n$1\n</div>", array( 'userinvalidcssjstitle', $wgTitle->getSkinFromCssJsSubpage() ) );
+ $wgOut->wrapWikiMsg( "<div class='error' id='mw-userinvalidcssjstitle'>\n$1\n</div>", array( 'userinvalidcssjstitle', $this->getContextTitle()->getSkinFromCssJsSubpage() ) );
}
if ( $this->formtype !== 'preview' ) {
if ( $this->isCssSubpage )
@@ -1485,9 +1663,7 @@ HTML
$wgOut->wrapWikiMsg( "<div class='error' id='mw-edit-longpageerror'>\n$1\n</div>",
array( 'longpageerror', $wgLang->formatNum( $this->kblength ), $wgLang->formatNum( $wgMaxArticleSize ) ) );
} else {
- $msg = 'longpage-hint';
- $text = wfMsg( $msg );
- if( !wfEmptyMsg( $msg, $text ) && $text !== '-' ) {
+ if( !wfMessage('longpage-hint')->isDisabled() ) {
$wgOut->wrapWikiMsg( "<div id='mw-edit-longpage-hint'>\n$1\n</div>",
array( 'longpage-hint', $wgLang->formatSize( strlen( $this->textbox1 ) ), strlen( $this->textbox1 ) )
);
@@ -1502,15 +1678,14 @@ HTML
* inferred by the id given to the input. You can remove them both by
* passing array( 'id' => false ) to $userInputAttrs.
*
- * @param $summary The value of the summary input
- * @param $labelText The html to place inside the label
- * @param $inputAttrs An array of attrs to use on the input
- * @param $spanLabelAttrs An array of attrs to use on the span inside the label
+ * @param $summary string The value of the summary input
+ * @param $labelText string The html to place inside the label
+ * @param $inputAttrs array of attrs to use on the input
+ * @param $spanLabelAttrs array of attrs to use on the span inside the label
*
* @return array An array in the format array( $label, $input )
*/
function getSummaryInput($summary = "", $labelText = null, $inputAttrs = null, $spanLabelAttrs = null) {
- global $wgUser;
//Note: the maxlength is overriden in JS to 250 and to make it use UTF-8 bytes, not characters.
$inputAttrs = ( is_array($inputAttrs) ? $inputAttrs : array() ) + array(
'id' => 'wpSummary',
@@ -1518,7 +1693,7 @@ HTML
'tabindex' => '1',
'size' => 60,
'spellcheck' => 'true',
- ) + $wgUser->getSkin()->tooltipAndAccessKeyAttribs( 'summary' );
+ ) + Linker::tooltipAndAccesskeyAttribs( 'summary' );
$spanLabelAttrs = ( is_array($spanLabelAttrs) ? $spanLabelAttrs : array() ) + array(
'class' => $this->missingSummary ? 'mw-summarymissed' : 'mw-summary',
@@ -1548,11 +1723,13 @@ HTML
# Add a class if 'missingsummary' is triggered to allow styling of the summary line
$summaryClass = $this->missingSummary ? 'mw-summarymissed' : 'mw-summary';
if ( $isSubjectPreview ) {
- if ( $this->nosummary )
+ if ( $this->nosummary ) {
return;
+ }
} else {
- if ( !$this->mShowSummaryField )
+ if ( !$this->mShowSummaryField ) {
return;
+ }
}
$summary = $wgContLang->recodeForEdit( $summary );
$labelText = wfMsgExt( $isSubjectPreview ? 'subject' : 'summary', 'parseinline' );
@@ -1571,15 +1748,14 @@ HTML
if ( !$summary || ( !$this->preview && !$this->diff ) )
return "";
- global $wgParser, $wgUser;
- $sk = $wgUser->getSkin();
+ global $wgParser;
if ( $isSubjectPreview )
$summary = wfMsgForContent( 'newsectionsummary', $wgParser->stripSectionName( $summary ) );
$message = $isSubjectPreview ? 'subject-preview' : 'summary-preview';
- $summary = wfMsgExt( $message, 'parseinline' ) . $sk->commentBlock( $summary, $this->mTitle, $isSubjectPreview );
+ $summary = wfMsgExt( $message, 'parseinline' ) . Linker::commentBlock( $summary, $this->mTitle, $isSubjectPreview );
return Xml::tags( 'div', array( 'class' => 'mw-summary-preview' ), $summary );
}
@@ -1645,6 +1821,10 @@ HTML
# Then it must be protected based on static groups (regular)
$classes[] = 'mw-textarea-protected';
}
+ # Is the title cascade-protected?
+ if ( $this->mTitle->isCascadeProtected() ) {
+ $classes[] = 'mw-textarea-cprotected';
+ }
}
$attribs = array( 'tabindex' => 1 );
if ( is_array($customAttribs) )
@@ -1662,7 +1842,7 @@ HTML
}
protected function showTextbox2() {
- $this->showTextbox( $this->textbox2, 'wpTextbox2', array( 'tabindex' => 6 ) );
+ $this->showTextbox( $this->textbox2, 'wpTextbox2', array( 'tabindex' => 6, 'readonly' ) );
}
protected function showTextbox( $content, $name, $customAttribs = array() ) {
@@ -1685,6 +1865,10 @@ HTML
'style' => '' // avoid php notices when appending preferences (appending allows customAttribs['style'] to still work
);
+ $pageLang = $this->mTitle->getPageLanguage();
+ $attribs['lang'] = $pageLang->getCode();
+ $attribs['dir'] = $pageLang->getDir();
+
$wgOut->addHTML( Html::textarea( $name, $wikitext, $attribs ) );
}
@@ -1743,20 +1927,19 @@ HTML
protected function showTosSummary() {
$msg = 'editpage-tos-summary';
wfRunHooks( 'EditPageTosSummary', array( $this->mTitle, &$msg ) );
- $text = wfMsg( $msg );
- if( !wfEmptyMsg( $msg, $text ) && $text !== '-' ) {
+ if( !wfMessage( $msg )->isDisabled() ) {
global $wgOut;
$wgOut->addHTML( '<div class="mw-tos-summary">' );
- $wgOut->addWikiMsgArray( $msg, array() );
+ $wgOut->addWikiMsg( $msg );
$wgOut->addHTML( '</div>' );
}
}
protected function showEditTools() {
global $wgOut;
- $wgOut->addHTML( '<div class="mw-editTools">' );
- $wgOut->addWikiMsgArray( 'edittools', array(), array( 'content' ) );
- $wgOut->addHTML( '</div>' );
+ $wgOut->addHTML( '<div class="mw-editTools">' .
+ wfMessage( 'edittools' )->inContentLanguage()->parse() .
+ '</div>' );
}
protected function getCopywarn() {
@@ -1772,11 +1955,12 @@ HTML
// Allow for site and per-namespace customization of contribution/copyright notice.
wfRunHooks( 'EditPageCopyrightWarning', array( $this->mTitle, &$copywarnMsg ) );
- return "<div id=\"editpage-copywarn\">\n" . call_user_func_array("wfMsgNoTrans", $copywarnMsg) . "\n</div>";
+ return "<div id=\"editpage-copywarn\">\n" .
+ call_user_func_array("wfMsgNoTrans", $copywarnMsg) . "\n</div>";
}
protected function showStandardInputs( &$tabindex = 2 ) {
- global $wgOut, $wgUser;
+ global $wgOut;
$wgOut->addHTML( "<div class='editOptions'>\n" );
if ( $this->section != 'new' ) {
@@ -1784,23 +1968,25 @@ HTML
$wgOut->addHTML( $this->getSummaryPreview( false, $this->summary ) );
}
- $checkboxes = $this->getCheckboxes( $tabindex, $wgUser->getSkin(),
+ $checkboxes = $this->getCheckboxes( $tabindex,
array( 'minor' => $this->minoredit, 'watch' => $this->watchthis ) );
$wgOut->addHTML( "<div class='editCheckboxes'>" . implode( $checkboxes, "\n" ) . "</div>\n" );
$wgOut->addHTML( "<div class='editButtons'>\n" );
$wgOut->addHTML( implode( $this->getEditButtons( $tabindex ), "\n" ) . "\n" );
$cancel = $this->getCancelLink();
- $separator = wfMsgExt( 'pipe-separator' , 'escapenoentities' );
+ if ( $cancel !== '' ) {
+ $cancel .= wfMsgExt( 'pipe-separator' , 'escapenoentities' );
+ }
$edithelpurl = Skin::makeInternalOrExternalUrl( wfMsgForContent( 'edithelppage' ) );
$edithelp = '<a target="helpwindow" href="'.$edithelpurl.'">'.
htmlspecialchars( wfMsg( 'edithelp' ) ).'</a> '.
htmlspecialchars( wfMsg( 'newwindow' ) );
- $wgOut->addHTML( " <span class='editHelp'>{$cancel}{$separator}{$edithelp}</span>\n" );
+ $wgOut->addHTML( " <span class='editHelp'>{$cancel}{$edithelp}</span>\n" );
$wgOut->addHTML( "</div><!-- editButtons -->\n</div><!-- editOptions -->\n" );
}
- /*
+ /**
* Show an edit conflict. textbox1 is already shown in showEditForm().
* If you want to use another entry point to this function, be careful.
*/
@@ -1825,20 +2011,20 @@ HTML
$data = $dbr->selectRow(
array( 'logging', 'user' ),
array( 'log_type',
- 'log_action',
- 'log_timestamp',
- 'log_user',
- 'log_namespace',
- 'log_title',
- 'log_comment',
- 'log_params',
- 'log_deleted',
- 'user_name' ),
+ 'log_action',
+ 'log_timestamp',
+ 'log_user',
+ 'log_namespace',
+ 'log_title',
+ 'log_comment',
+ 'log_params',
+ 'log_deleted',
+ 'user_name' ),
array( 'log_namespace' => $this->mTitle->getNamespace(),
- 'log_title' => $this->mTitle->getDBkey(),
- 'log_type' => 'delete',
- 'log_action' => 'delete',
- 'user_id=log_user' ),
+ 'log_title' => $this->mTitle->getDBkey(),
+ 'log_type' => 'delete',
+ 'log_action' => 'delete',
+ 'user_id=log_user' ),
__METHOD__,
array( 'LIMIT' => 1, 'ORDER BY' => 'log_timestamp DESC' )
);
@@ -1857,7 +2043,7 @@ HTML
* @return string
*/
function getPreviewText() {
- global $wgOut, $wgUser, $wgParser, $wgMessageCache;
+ global $wgOut, $wgUser, $wgParser;
wfProfileIn( __METHOD__ );
@@ -1867,6 +2053,8 @@ HTML
} else {
$note = wfMsg( 'session_fail_preview' );
}
+ } elseif ( $this->incompleteForm ) {
+ $note = wfMsg( 'edit_form_incomplete' );
} else {
$note = wfMsg( 'previewnote' );
}
@@ -1880,14 +2068,20 @@ HTML
if ( $wgRawHtml && !$this->mTokenOk ) {
// Could be an offsite preview attempt. This is very unsafe if
// HTML is enabled, as it could be an attack.
- $parsedNote = $wgOut->parse( "<div class='previewnote'>" .
- wfMsg( 'session_fail_preview_html' ) . "</div>" );
+ $parsedNote = '';
+ if ( $this->textbox1 !== '' ) {
+ // Do not put big scary notice, if previewing the empty
+ // string, which happens when you initially edit
+ // a category page, due to automatic preview-on-open.
+ $parsedNote = $wgOut->parse( "<div class='previewnote'>" .
+ wfMsg( 'session_fail_preview_html' ) . "</div>" );
+ }
wfProfileOut( __METHOD__ );
return $parsedNote;
}
# don't parse user css/js, show message about preview
- # XXX: stupid php bug won't let us use $wgTitle->isCssJsSubpage() here -- This note has been there since r3530. Sure the bug was fixed time ago?
+ # XXX: stupid php bug won't let us use $this->getContextTitle()->isCssJsSubpage() here -- This note has been there since r3530. Sure the bug was fixed time ago?
if ( $this->isCssJsSubpage || $this->mTitle->isCssOrJsPage() ) {
$level = 'user';
@@ -1926,13 +2120,6 @@ HTML
wfRunHooks( 'EditPageGetPreviewText', array( $this, &$toparse ) );
- // Parse mediawiki messages with correct target language
- if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
- list( /* $unused */, $lang ) = $wgMessageCache->figureMessage( $this->mTitle->getText() );
- $obj = wfGetLangObj( $lang );
- $parserOptions->setTargetLanguage( $obj );
- }
-
$parserOptions->setTidy( true );
$parserOptions->enableLimitReport();
$parserOutput = $wgParser->parse( $this->mArticle->preSaveTransform( $toparse ),
@@ -1958,14 +2145,24 @@ HTML
'<h2 id="mw-previewheader">' . htmlspecialchars( wfMsg( 'preview' ) ) . "</h2>" .
$wgOut->parse( $note ) . $conflict . "</div>\n";
+ $pageLang = $this->mTitle->getPageLanguage();
+ $attribs = array( 'lang' => $pageLang->getCode(), 'dir' => $pageLang->getDir(),
+ 'class' => 'mw-content-'.$pageLang->getDir() );
+ $previewHTML = Html::rawElement( 'div', $attribs, $previewHTML );
+
wfProfileOut( __METHOD__ );
return $previewhead . $previewHTML . $this->previewTextAfterContent;
}
+ /**
+ * @return Array
+ */
function getTemplates() {
if ( $this->preview || $this->section != '' ) {
$templates = array();
- if ( !isset( $this->mParserOutput ) ) return $templates;
+ if ( !isset( $this->mParserOutput ) ) {
+ return $templates;
+ }
foreach( $this->mParserOutput->getTemplates() as $ns => $template) {
foreach( array_keys( $template ) as $dbk ) {
$templates[] = Title::makeTitle($ns, $dbk);
@@ -2005,24 +2202,22 @@ HTML
* Produce the stock "please login to edit pages" page
*/
function userNotLoggedInPage() {
- global $wgUser, $wgOut, $wgTitle;
- $skin = $wgUser->getSkin();
+ global $wgOut;
$loginTitle = SpecialPage::getTitleFor( 'Userlogin' );
- $loginLink = $skin->link(
+ $loginLink = Linker::linkKnown(
$loginTitle,
wfMsgHtml( 'loginreqlink' ),
array(),
- array( 'returnto' => $wgTitle->getPrefixedText() ),
- array( 'known', 'noclasses' )
+ array( 'returnto' => $this->getContextTitle()->getPrefixedText() )
);
$wgOut->setPageTitle( wfMsg( 'whitelistedittitle' ) );
$wgOut->setRobotPolicy( 'noindex,nofollow' );
$wgOut->setArticleRelated( false );
- $wgOut->addHTML( wfMsgWikiHtml( 'whitelistedittext', $loginLink ) );
- $wgOut->returnToMain( false, $wgTitle );
+ $wgOut->addHTML( wfMessage( 'whitelistedittext' )->rawParams( $loginLink )->parse() );
+ $wgOut->returnToMain( false, $this->getContextTitle() );
}
/**
@@ -2047,7 +2242,7 @@ HTML
* Produce the stock "your edit contains spam" page
*
* @param $match Text which triggered one or more filters
- * @deprecated Use method spamPageWithContent() instead
+ * @deprecated since 1.17 Use method spamPageWithContent() instead
*/
static function spamPage( $match = false ) {
global $wgOut, $wgTitle;
@@ -2072,7 +2267,7 @@ HTML
* @param $match Text which triggered one or more filters
*/
public function spamPageWithContent( $match = false ) {
- global $wgOut, $wgTitle;
+ global $wgOut;
$this->textbox2 = $this->textbox1;
$wgOut->setPageTitle( wfMsg( 'spamprotectiontitle' ) );
@@ -2094,13 +2289,17 @@ HTML
$wgOut->wrapWikiMsg( '<h2>$1</h2>', "yourtext" );
$this->showTextbox2();
- $wgOut->addReturnTo( $wgTitle, array( 'action' => 'edit' ) );
+ $wgOut->addReturnTo( $this->getContextTitle(), array( 'action' => 'edit' ) );
}
/**
* @private
* @todo document
+ *
+ * @parma $editText string
+ *
+ * @return bool
*/
function mergeChangesInto( &$editText ){
wfProfileIn( __METHOD__ );
@@ -2157,14 +2356,6 @@ HTML
}
/**
- * @deprecated use $wgParser->stripSectionName()
- */
- function pseudoParseSectionAnchor( $text ) {
- global $wgParser;
- return $wgParser->stripSectionName( $text );
- }
-
- /**
* Format an anchor fragment as it would appear for a given section name
* @param $text String
* @return String
@@ -2189,16 +2380,19 @@ HTML
$imagesAvailable = $wgEnableUploads || count( $wgForeignFileRepos );
/**
-
- * toolarray an array of arrays which each include the filename of
- * the button image (without path), the opening tag, the closing tag,
- * and optionally a sample text that is inserted between the two when no
- * selection is highlighted.
- * The tip text is shown when the user moves the mouse over the button.
+ * $toolarray is an array of arrays each of which includes the
+ * filename of the button image (without path), the opening
+ * tag, the closing tag, optionally a sample text that is
+ * inserted between the two when no selection is highlighted
+ * and an option to select which switches the automatic
+ * selection of inserted text (default is true, see
+ * mw-editbutton-image). The tip text is shown when the user
+ * moves the mouse over the button.
*
- * Already here are accesskeys (key), which are not used yet until someone
- * can figure out a way to make them work in IE. However, we should make
- * sure these keys are not defined on the edit page.
+ * Also here: accesskeys (key), which are not used yet until
+ * someone can figure out a way to make them work in
+ * IE. However, we should make sure these keys are not defined
+ * on the edit page.
*/
$toolarray = array(
array(
@@ -2253,7 +2447,8 @@ HTML
'close' => ']]',
'sample' => wfMsg( 'image_sample' ),
'tip' => wfMsg( 'image_tip' ),
- 'key' => 'D'
+ 'key' => 'D',
+ 'select' => true
) : false,
$imagesAvailable ? array(
'image' => $wgLang->getImageFile( 'button-media' ),
@@ -2301,7 +2496,6 @@ HTML
'key' => 'R'
)
);
- $toolbar = "<div id='toolbar'>\n";
$script = '';
foreach ( $toolarray as $tool ) {
@@ -2309,6 +2503,10 @@ HTML
continue;
}
+ if( !isset( $tool['select'] ) ) {
+ $tool['select'] = true;
+ }
+
$params = array(
$image = $wgStylePath . '/common/images/' . $tool['image'],
// Note that we use the tip both for the ALT tag and the TITLE tag of the image.
@@ -2322,16 +2520,11 @@ HTML
$cssId = $tool['id'],
);
- $paramList = implode( ',',
- array_map( array( 'Xml', 'encodeJsVar' ), $params ) );
- $script .= "addButton($paramList);\n";
+ $script .= Xml::encodeJsCall( 'mw.toolbar.addButton', $params );
}
-
- $wgOut->addScript( Html::inlineScript(
- "if ( window.mediaWiki ) { $script }"
- ) );
-
- $toolbar .= "\n</div>";
+ $wgOut->addScript( Html::inlineScript( ResourceLoader::makeLoaderConditionalScript( $script ) ) );
+
+ $toolbar = '<div id="toolbar"></div>';
wfRunHooks( 'EditPageBeforeEditToolbar', array( &$toolbar ) );
@@ -2343,30 +2536,32 @@ HTML
* minor and watch
*
* @param $tabindex Current tabindex
- * @param $skin Skin object
* @param $checked Array of checkbox => bool, where bool indicates the checked
* status of the checkbox
*
* @return array
*/
- public function getCheckboxes( &$tabindex, $skin, $checked ) {
+ public function getCheckboxes( &$tabindex, $checked ) {
global $wgUser;
$checkboxes = array();
- $checkboxes['minor'] = '';
- $minorLabel = wfMsgExt( 'minoredit', array( 'parseinline' ) );
- if ( $wgUser->isAllowed( 'minoredit' ) ) {
- $attribs = array(
- 'tabindex' => ++$tabindex,
- 'accesskey' => wfMsg( 'accesskey-minoredit' ),
- 'id' => 'wpMinoredit',
- );
- $checkboxes['minor'] =
- Xml::check( 'wpMinoredit', $checked['minor'], $attribs ) .
- "&#160;<label for='wpMinoredit' id='mw-editpage-minoredit'" .
- Xml::expandAttributes( array( 'title' => $skin->titleAttrib( 'minoredit', 'withaccess' ) ) ) .
- ">{$minorLabel}</label>";
+ // don't show the minor edit checkbox if it's a new page or section
+ if ( !$this->isNew ) {
+ $checkboxes['minor'] = '';
+ $minorLabel = wfMsgExt( 'minoredit', array( 'parseinline' ) );
+ if ( $wgUser->isAllowed( 'minoredit' ) ) {
+ $attribs = array(
+ 'tabindex' => ++$tabindex,
+ 'accesskey' => wfMsg( 'accesskey-minoredit' ),
+ 'id' => 'wpMinoredit',
+ );
+ $checkboxes['minor'] =
+ Xml::check( 'wpMinoredit', $checked['minor'], $attribs ) .
+ "&#160;<label for='wpMinoredit' id='mw-editpage-minoredit'" .
+ Xml::expandAttributes( array( 'title' => Linker::titleAttrib( 'minoredit', 'withaccess' ) ) ) .
+ ">{$minorLabel}</label>";
+ }
}
$watchLabel = wfMsgExt( 'watchthis', array( 'parseinline' ) );
@@ -2380,7 +2575,7 @@ HTML
$checkboxes['watch'] =
Xml::check( 'wpWatchthis', $checked['watch'], $attribs ) .
"&#160;<label for='wpWatchthis' id='mw-editpage-watch'" .
- Xml::expandAttributes( array( 'title' => $skin->titleAttrib( 'watch', 'withaccess' ) ) ) .
+ Xml::expandAttributes( array( 'title' => Linker::titleAttrib( 'watch', 'withaccess' ) ) ) .
">{$watchLabel}</label>";
}
wfRunHooks( 'EditPageBeforeEditChecks', array( &$this, &$checkboxes, &$tabindex ) );
@@ -2467,21 +2662,20 @@ HTML
echo $s;
}
-
+ /**
+ * @return string
+ */
public function getCancelLink() {
- global $wgUser, $wgTitle;
-
$cancelParams = array();
if ( !$this->isConflict && $this->mArticle->getOldID() > 0 ) {
$cancelParams['oldid'] = $this->mArticle->getOldID();
}
- return $wgUser->getSkin()->link(
- $wgTitle,
+ return Linker::linkKnown(
+ $this->getContextTitle(),
wfMsgExt( 'cancel', array( 'parseinline' ) ),
array( 'id' => 'mw-editform-cancel' ),
- $cancelParams,
- array( 'known', 'noclasses' )
+ $cancelParams
);
}
@@ -2531,6 +2725,11 @@ HTML
: $text;
}
+ /**
+ * @param $request WebRequest
+ * @param $text string
+ * @return string
+ */
function safeUnicodeText( $request, $text ) {
$text = rtrim( $text );
return $request->getBool( 'safemode' )
@@ -2575,7 +2774,7 @@ HTML
$result = "";
$working = 0;
for( $i = 0; $i < strlen( $invalue ); $i++ ) {
- $bytevalue = ord( $invalue{$i} );
+ $bytevalue = ord( $invalue[$i] );
if ( $bytevalue <= 0x7F ) { //0xxx xxxx
$result .= chr( $bytevalue );
$bytesleft = 0;
@@ -2612,13 +2811,13 @@ HTML
function unmakesafe( $invalue ) {
$result = "";
for( $i = 0; $i < strlen( $invalue ); $i++ ) {
- if ( ( substr( $invalue, $i, 3 ) == "&#x" ) && ( $invalue{$i+3} != '0' ) ) {
+ if ( ( substr( $invalue, $i, 3 ) == "&#x" ) && ( $invalue[$i+3] != '0' ) ) {
$i += 3;
$hexstring = "";
do {
- $hexstring .= $invalue{$i};
+ $hexstring .= $invalue[$i];
$i++;
- } while( ctype_xdigit( $invalue{$i} ) && ( $i < strlen( $invalue ) ) );
+ } while( ctype_xdigit( $invalue[$i] ) && ( $i < strlen( $invalue ) ) );
// Do some sanity checks. These aren't needed for reversability,
// but should help keep the breakage down if the editor
@@ -2648,21 +2847,22 @@ HTML
* @return bool false if output is done, true if the rest of the form should be displayed
*/
function attemptSave() {
- global $wgUser, $wgOut, $wgTitle;
+ global $wgUser, $wgOut;
$resultDetails = false;
# Allow bots to exempt some edits from bot flagging
$bot = $wgUser->isAllowed( 'bot' ) && $this->bot;
- $value = $this->internalAttemptSave( $resultDetails, $bot );
+ $status = $this->internalAttemptSave( $resultDetails, $bot );
+ // FIXME: once the interface for internalAttemptSave() is made nicer, this should use the message in $status
- if ( $value == self::AS_SUCCESS_UPDATE || $value == self::AS_SUCCESS_NEW_ARTICLE ) {
+ if ( $status->value == self::AS_SUCCESS_UPDATE || $status->value == self::AS_SUCCESS_NEW_ARTICLE ) {
$this->didSave = true;
}
- switch ( $value ) {
+ switch ( $status->value ) {
case self::AS_HOOK_ERROR_EXPECTED:
case self::AS_CONTENT_TOO_BIG:
- case self::AS_ARTICLE_WAS_DELETED:
+ case self::AS_ARTICLE_WAS_DELETED:
case self::AS_CONFLICT_DETECTED:
case self::AS_SUMMARY_NEEDED:
case self::AS_TEXTBOX_EMPTY:
@@ -2672,8 +2872,28 @@ HTML
case self::AS_HOOK_ERROR:
case self::AS_FILTERING:
+ return false;
+
case self::AS_SUCCESS_NEW_ARTICLE:
+ $query = $resultDetails['redirect'] ? 'redirect=no' : '';
+ $wgOut->redirect( $this->mTitle->getFullURL( $query ) );
+ return false;
+
case self::AS_SUCCESS_UPDATE:
+ $extraQuery = '';
+ $sectionanchor = $resultDetails['sectionanchor'];
+
+ // Give extensions a chance to modify URL query on update
+ wfRunHooks( 'ArticleUpdateBeforeRedirect', array( $this->mArticle, &$sectionanchor, &$extraQuery ) );
+
+ if ( $resultDetails['redirect'] ) {
+ if ( $extraQuery == '' ) {
+ $extraQuery = 'redirect=no';
+ } else {
+ $extraQuery = 'redirect=no&' . $extraQuery;
+ }
+ }
+ $wgOut->redirect( $this->mTitle->getFullURL( $extraQuery ) . $sectionanchor );
return false;
case self::AS_SPAM_ERROR:
@@ -2692,22 +2912,22 @@ HTML
$this->userNotLoggedInPage();
return false;
- case self::AS_READ_ONLY_PAGE_LOGGED:
- case self::AS_READ_ONLY_PAGE:
- $wgOut->readOnlyPage();
- return false;
+ case self::AS_READ_ONLY_PAGE_LOGGED:
+ case self::AS_READ_ONLY_PAGE:
+ $wgOut->readOnlyPage();
+ return false;
- case self::AS_RATE_LIMITED:
- $wgOut->rateLimited();
- return false;
+ case self::AS_RATE_LIMITED:
+ $wgOut->rateLimited();
+ return false;
- case self::AS_NO_CREATE_PERMISSION:
- $this->noCreatePermission();
- return;
+ case self::AS_NO_CREATE_PERMISSION:
+ $this->noCreatePermission();
+ return false;
case self::AS_BLANK_ARTICLE:
- $wgOut->redirect( $wgTitle->getFullURL() );
- return false;
+ $wgOut->redirect( $this->getContextTitle()->getFullURL() );
+ return false;
case self::AS_IMAGE_REDIRECT_LOGGED:
$wgOut->permissionRequired( 'upload' );
@@ -2715,6 +2935,9 @@ HTML
}
}
+ /**
+ * @return Revision
+ */
function getBaseRevision() {
if ( !$this->mBaseRevision ) {
$db = wfGetDB( DB_MASTER );
diff --git a/includes/Exception.php b/includes/Exception.php
index ff5d4b19..1f599d66 100644
--- a/includes/Exception.php
+++ b/includes/Exception.php
@@ -22,7 +22,7 @@ class MWException extends Exception {
function useOutputPage() {
return $this->useMessageCache() &&
!empty( $GLOBALS['wgFullyInitialised'] ) &&
- ( !empty( $GLOBALS['wgArticle'] ) || ( !empty( $GLOBALS['wgOut'] ) && !$GLOBALS['wgOut']->isArticle() ) ) &&
+ !empty( $GLOBALS['wgOut'] ) &&
!empty( $GLOBALS['wgTitle'] );
}
@@ -39,7 +39,7 @@ class MWException extends Exception {
}
}
- return is_object( $wgLang );
+ return $wgLang instanceof Language;
}
/**
@@ -88,7 +88,7 @@ class MWException extends Exception {
$args = array_slice( func_get_args(), 2 );
if ( $this->useMessageCache() ) {
- return wfMsgReal( $key, $args );
+ return wfMsgNoTrans( $key, $args );
} else {
return wfMsgReplaceArgs( $fallback, $args );
}
@@ -133,13 +133,8 @@ class MWException extends Exception {
/* Return titles of this error page */
function getPageTitle() {
- if ( $this->useMessageCache() ) {
- return wfMsg( 'internalerror' );
- } else {
- global $wgSitename;
-
- return "$wgSitename error";
- }
+ global $wgSitename;
+ return $this->msg( 'internalerror', "$wgSitename error" );
}
/**
@@ -155,7 +150,7 @@ class MWException extends Exception {
$line = $this->getLine();
$message = $this->getMessage();
- if ( isset( $wgRequest ) ) {
+ if ( isset( $wgRequest ) && !$wgRequest instanceof FauxRequest ) {
$url = $wgRequest->getRequestURL();
if ( !$url ) {
$url = '[no URL]';
@@ -170,7 +165,6 @@ class MWException extends Exception {
/** Output the exception report using HTML */
function reportHTML() {
global $wgOut;
-
if ( $this->useOutputPage() ) {
$wgOut->setPageTitle( $this->getPageTitle() );
$wgOut->setRobotPolicy( "noindex,nofollow" );
@@ -193,13 +187,8 @@ class MWException extends Exception {
die( $hookResult );
}
- if ( defined( 'MEDIAWIKI_INSTALL' ) || $this->htmlBodyOnly() ) {
- echo $this->getHTML();
- } else {
- echo $this->htmlHeader();
- echo $this->getHTML();
- echo $this->htmlFooter();
- }
+ echo $this->getHTML();
+ die(1);
}
}
@@ -215,55 +204,14 @@ class MWException extends Exception {
}
if ( self::isCommandLine() ) {
- wfPrintError( $this->getText() );
+ MWExceptionHandler::printError( $this->getText() );
} else {
$this->reportHTML();
}
}
- /**
- * Send headers and output the beginning of the html page if not using
- * $wgOut to output the exception.
- */
- function htmlHeader() {
- global $wgLogo, $wgOutputEncoding;
-
- if ( !headers_sent() ) {
- header( 'HTTP/1.0 500 Internal Server Error' );
- header( 'Content-type: text/html; charset=' . $wgOutputEncoding );
- /* Don't cache error pages! They cause no end of trouble... */
- header( 'Cache-control: none' );
- header( 'Pragma: nocache' );
- }
-
- $logo = htmlspecialchars( $wgLogo, ENT_QUOTES );
- $title = htmlspecialchars( $this->getPageTitle() );
-
- return "<html>
- <head>
- <title>$title</title>
- </head>
- <body>
- <h1><img src='$logo' style='float:left;margin-right:1em' alt=''/>$title</h1>
- ";
- }
-
- /**
- * print the end of the html page if not using $wgOut.
- */
- function htmlFooter() {
- return "</body></html>";
- }
-
- /**
- * headers handled by subclass?
- */
- function htmlBodyOnly() {
- return false;
- }
-
static function isCommandLine() {
- return !empty( $GLOBALS['wgCommandLineMode'] ) && !defined( 'MEDIAWIKI_INSTALL' );
+ return !empty( $GLOBALS['wgCommandLineMode'] );
}
}
@@ -283,122 +231,253 @@ class FatalError extends MWException {
}
/**
+ * An error page which can definitely be safely rendered using the OutputPage
* @ingroup Exception
*/
class ErrorPageError extends MWException {
- public $title, $msg;
+ public $title, $msg, $params;
/**
* Note: these arguments are keys into wfMsg(), not text!
*/
- function __construct( $title, $msg ) {
+ function __construct( $title, $msg, $params = null ) {
$this->title = $title;
$this->msg = $msg;
- parent::__construct( wfMsg( $msg ) );
+ $this->params = $params;
+
+ if( $msg instanceof Message ){
+ parent::__construct( $msg );
+ } else {
+ parent::__construct( wfMsg( $msg ) );
+ }
}
function report() {
global $wgOut;
- $wgOut->showErrorPage( $this->title, $this->msg );
+ $wgOut->showErrorPage( $this->title, $this->msg, $this->params );
$wgOut->output();
}
}
/**
- * Install an exception handler for MediaWiki exception types.
+ * Show an error when a user tries to do something they do not have the necessary
+ * permissions for.
+ * @ingroup Exception
*/
-function wfInstallExceptionHandler() {
- set_exception_handler( 'wfExceptionHandler' );
+class PermissionsError extends ErrorPageError {
+ public $permission;
+
+ function __construct( $permission ) {
+ global $wgLang;
+
+ $this->permission = $permission;
+
+ $groups = array_map(
+ array( 'User', 'makeGroupLinkWiki' ),
+ User::getGroupsWithPermission( $this->permission )
+ );
+
+ if( $groups ) {
+ parent::__construct(
+ 'badaccess',
+ 'badaccess-groups',
+ array(
+ $wgLang->commaList( $groups ),
+ count( $groups )
+ )
+ );
+ } else {
+ parent::__construct(
+ 'badaccess',
+ 'badaccess-group0'
+ );
+ }
+ }
}
/**
- * Report an exception to the user
+ * Show an error when the wiki is locked/read-only and the user tries to do
+ * something that requires write access
+ * @ingroup Exception
*/
-function wfReportException( Exception $e ) {
- global $wgShowExceptionDetails;
+class ReadOnlyError extends ErrorPageError {
+ public function __construct(){
+ parent::__construct(
+ 'readonly',
+ 'readonlytext',
+ wfReadOnlyReason()
+ );
+ }
+}
- $cmdLine = MWException::isCommandLine();
+/**
+ * Show an error when the user hits a rate limit
+ * @ingroup Exception
+ */
+class ThrottledError extends ErrorPageError {
+ public function __construct(){
+ parent::__construct(
+ 'actionthrottled',
+ 'actionthrottledtext'
+ );
+ }
+ public function report(){
+ global $wgOut;
+ $wgOut->setStatusCode( 503 );
+ return parent::report();
+ }
+}
- if ( $e instanceof MWException ) {
- try {
- $e->report();
- } catch ( Exception $e2 ) {
- // Exception occurred from within exception handler
- // Show a simpler error message for the original exception,
- // don't try to invoke report()
- $message = "MediaWiki internal error.\n\n";
+/**
+ * Show an error when the user tries to do something whilst blocked
+ * @ingroup Exception
+ */
+class UserBlockedError extends ErrorPageError {
+ public function __construct( Block $block ){
+ global $wgLang;
- if ( $wgShowExceptionDetails ) {
- $message .= 'Original exception: ' . $e->__toString() . "\n\n" .
- 'Exception caught inside exception handler: ' . $e2->__toString();
- } else {
- $message .= "Exception caught inside exception handler.\n\n" .
- "Set \$wgShowExceptionDetails = true; at the bottom of LocalSettings.php " .
- "to show detailed debugging information.";
+ $blockerUserpage = $block->getBlocker()->getUserPage();
+ $link = "[[{$blockerUserpage->getPrefixedText()}|{$blockerUserpage->getText()}]]";
+
+ $reason = $block->mReason;
+ if( $reason == '' ) {
+ $reason = wfMsg( 'blockednoreason' );
+ }
+
+ /* $ip returns who *is* being blocked, $intended contains who was meant to be blocked.
+ * This could be a username, an IP range, or a single IP. */
+ $intended = $block->getTarget();
+
+ parent::__construct(
+ 'blockedtitle',
+ $block->mAuto ? 'autoblockedtext' : 'blockedtext',
+ array(
+ $link,
+ $reason,
+ wfGetIP(),
+ $block->getBlocker()->getName(),
+ $block->getId(),
+ $wgLang->formatExpiry( $block->mExpiry ),
+ $intended,
+ $wgLang->timeanddate( wfTimestamp( TS_MW, $block->mTimestamp ), true )
+ )
+ );
+ }
+}
+
+/**
+ * Handler class for MWExceptions
+ * @ingroup Exception
+ */
+class MWExceptionHandler {
+ /**
+ * Install an exception handler for MediaWiki exception types.
+ */
+ public static function installHandler() {
+ set_exception_handler( array( 'MWExceptionHandler', 'handle' ) );
+ }
+
+ /**
+ * Report an exception to the user
+ */
+ protected static function report( Exception $e ) {
+ global $wgShowExceptionDetails;
+
+ $cmdLine = MWException::isCommandLine();
+
+ if ( $e instanceof MWException ) {
+ try {
+ // Try and show the exception prettily, with the normal skin infrastructure
+ $e->report();
+ } catch ( Exception $e2 ) {
+ // Exception occurred from within exception handler
+ // Show a simpler error message for the original exception,
+ // don't try to invoke report()
+ $message = "MediaWiki internal error.\n\n";
+
+ if ( $wgShowExceptionDetails ) {
+ $message .= 'Original exception: ' . $e->__toString() . "\n\n" .
+ 'Exception caught inside exception handler: ' . $e2->__toString();
+ } else {
+ $message .= "Exception caught inside exception handler.\n\n" .
+ "Set \$wgShowExceptionDetails = true; at the bottom of LocalSettings.php " .
+ "to show detailed debugging information.";
+ }
+
+ $message .= "\n";
+
+ if ( $cmdLine ) {
+ self::printError( $message );
+ } else {
+ self::escapeEchoAndDie( $message );
+ }
}
+ } else {
+ $message = "Unexpected non-MediaWiki exception encountered, of type \"" . get_class( $e ) . "\"\n" .
+ $e->__toString() . "\n";
- $message .= "\n";
+ if ( $wgShowExceptionDetails ) {
+ $message .= "\n" . $e->getTraceAsString() . "\n";
+ }
if ( $cmdLine ) {
- wfPrintError( $message );
+ self::printError( $message );
} else {
- echo nl2br( htmlspecialchars( $message ) ) . "\n";
+ self::escapeEchoAndDie( $message );
}
}
- } else {
- $message = "Unexpected non-MediaWiki exception encountered, of type \"" . get_class( $e ) . "\"\n" .
- $e->__toString() . "\n";
-
- if ( $wgShowExceptionDetails ) {
- $message .= "\n" . $e->getTraceAsString() . "\n";
- }
+ }
- if ( $cmdLine ) {
- wfPrintError( $message );
+ /**
+ * Print a message, if possible to STDERR.
+ * Use this in command line mode only (see isCommandLine)
+ * @param $message String Failure text
+ */
+ public static function printError( $message ) {
+ # NOTE: STDERR may not be available, especially if php-cgi is used from the command line (bug #15602).
+ # Try to produce meaningful output anyway. Using echo may corrupt output to STDOUT though.
+ if ( defined( 'STDERR' ) ) {
+ fwrite( STDERR, $message );
} else {
- echo nl2br( htmlspecialchars( $message ) ) . "\n";
+ echo( $message );
}
}
-}
-/**
- * Print a message, if possible to STDERR.
- * Use this in command line mode only (see isCommandLine)
- */
-function wfPrintError( $message ) {
- # NOTE: STDERR may not be available, especially if php-cgi is used from the command line (bug #15602).
- # Try to produce meaningful output anyway. Using echo may corrupt output to STDOUT though.
- if ( defined( 'STDERR' ) ) {
- fwrite( STDERR, $message );
- } else {
- echo( $message );
+ /**
+ * Print a message after escaping it and converting newlines to <br>
+ * Use this for non-command line failures
+ * @param $message String Failure text
+ */
+ private static function escapeEchoAndDie( $message ) {
+ echo nl2br( htmlspecialchars( $message ) ) . "\n";
+ die(1);
}
-}
-/**
- * Exception handler which simulates the appropriate catch() handling:
- *
- * try {
- * ...
- * } catch ( MWException $e ) {
- * $e->report();
- * } catch ( Exception $e ) {
- * echo $e->__toString();
- * }
- */
-function wfExceptionHandler( $e ) {
- global $wgFullyInitialised;
+ /**
+ * Exception handler which simulates the appropriate catch() handling:
+ *
+ * try {
+ * ...
+ * } catch ( MWException $e ) {
+ * $e->report();
+ * } catch ( Exception $e ) {
+ * echo $e->__toString();
+ * }
+ */
+ public static function handle( $e ) {
+ global $wgFullyInitialised;
- wfReportException( $e );
+ self::report( $e );
- // Final cleanup
- if ( $wgFullyInitialised ) {
- try {
- wfLogProfilingData(); // uses $wgRequest, hence the $wgFullyInitialised condition
- } catch ( Exception $e ) {}
- }
+ // Final cleanup
+ if ( $wgFullyInitialised ) {
+ try {
+ wfLogProfilingData(); // uses $wgRequest, hence the $wgFullyInitialised condition
+ } catch ( Exception $e ) {}
+ }
- // Exit value should be nonzero for the benefit of shell jobs
- exit( 1 );
+ // Exit value should be nonzero for the benefit of shell jobs
+ exit( 1 );
+ }
}
diff --git a/includes/Exif.php b/includes/Exif.php
deleted file mode 100644
index 630821c3..00000000
--- a/includes/Exif.php
+++ /dev/null
@@ -1,1150 +0,0 @@
-<?php
-/**
- * Exif metadata reader
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @ingroup Media
- * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
- * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason
- * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
- * @see http://exif.org/Exif2-2.PDF The Exif 2.2 specification
- * @file
- */
-
-/**
- * @todo document (e.g. one-sentence class-overview description)
- * @ingroup Media
- */
-class Exif {
-
- const BYTE = 1; //!< An 8-bit (1-byte) unsigned integer.
- const ASCII = 2; //!< An 8-bit byte containing one 7-bit ASCII code. The final byte is terminated with NULL.
- const SHORT = 3; //!< A 16-bit (2-byte) unsigned integer.
- const LONG = 4; //!< A 32-bit (4-byte) unsigned integer.
- const RATIONAL = 5; //!< Two LONGs. The first LONG is the numerator and the second LONG expresses the denominator
- const UNDEFINED = 7; //!< An 8-bit byte that can take any value depending on the field definition
- const SLONG = 9; //!< A 32-bit (4-byte) signed integer (2's complement notation),
- const SRATIONAL = 10; //!< Two SLONGs. The first SLONG is the numerator and the second SLONG is the denominator.
-
- //@{
- /* @var array
- * @private
- */
-
- /**
- * Exif tags grouped by category, the tagname itself is the key and the type
- * is the value, in the case of more than one possible value type they are
- * separated by commas.
- */
- var $mExifTags;
-
- /**
- * A one dimentional array of all Exif tags
- */
- var $mFlatExifTags;
-
- /**
- * The raw Exif data returned by exif_read_data()
- */
- var $mRawExifData;
-
- /**
- * A Filtered version of $mRawExifData that has been pruned of invalid
- * tags and tags that contain content they shouldn't contain according
- * to the Exif specification
- */
- var $mFilteredExifData;
-
- /**
- * Filtered and formatted Exif data, see FormatExif::getFormattedData()
- */
- var $mFormattedExifData;
-
- //@}
-
- //@{
- /* @var string
- * @private
- */
-
- /**
- * The file being processed
- */
- var $file;
-
- /**
- * The basename of the file being processed
- */
- var $basename;
-
- /**
- * The private log to log to, e.g. 'exif'
- */
- var $log = false;
-
- //@}
-
- /**
- * Constructor
- *
- * @param $file String: filename.
- */
- function __construct( $file ) {
- /**
- * Page numbers here refer to pages in the EXIF 2.2 standard
- *
- * @link http://exif.org/Exif2-2.PDF The Exif 2.2 specification
- */
- $this->mExifTags = array(
- # TIFF Rev. 6.0 Attribute Information (p22)
- 'tiff' => array(
- # Tags relating to image structure
- 'structure' => array(
- 'ImageWidth' => Exif::SHORT.','.Exif::LONG, # Image width
- 'ImageLength' => Exif::SHORT.','.Exif::LONG, # Image height
- 'BitsPerSample' => Exif::SHORT, # Number of bits per component
- # "When a primary image is JPEG compressed, this designation is not"
- # "necessary and is omitted." (p23)
- 'Compression' => Exif::SHORT, # Compression scheme #p23
- 'PhotometricInterpretation' => Exif::SHORT, # Pixel composition #p23
- 'Orientation' => Exif::SHORT, # Orientation of image #p24
- 'SamplesPerPixel' => Exif::SHORT, # Number of components
- 'PlanarConfiguration' => Exif::SHORT, # Image data arrangement #p24
- 'YCbCrSubSampling' => Exif::SHORT, # Subsampling ratio of Y to C #p24
- 'YCbCrPositioning' => Exif::SHORT, # Y and C positioning #p24-25
- 'XResolution' => Exif::RATIONAL, # Image resolution in width direction
- 'YResolution' => Exif::RATIONAL, # Image resolution in height direction
- 'ResolutionUnit' => Exif::SHORT, # Unit of X and Y resolution #(p26)
- ),
-
- # Tags relating to recording offset
- 'offset' => array(
- 'StripOffsets' => Exif::SHORT.','.Exif::LONG, # Image data location
- 'RowsPerStrip' => Exif::SHORT.','.Exif::LONG, # Number of rows per strip
- 'StripByteCounts' => Exif::SHORT.','.Exif::LONG, # Bytes per compressed strip
- 'JPEGInterchangeFormat' => Exif::SHORT.','.Exif::LONG, # Offset to JPEG SOI
- 'JPEGInterchangeFormatLength' => Exif::SHORT.','.Exif::LONG, # Bytes of JPEG data
- ),
-
- # Tags relating to image data characteristics
- 'characteristics' => array(
- 'TransferFunction' => Exif::SHORT, # Transfer function
- 'WhitePoint' => Exif::RATIONAL, # White point chromaticity
- 'PrimaryChromaticities' => Exif::RATIONAL, # Chromaticities of primarities
- 'YCbCrCoefficients' => Exif::RATIONAL, # Color space transformation matrix coefficients #p27
- 'ReferenceBlackWhite' => Exif::RATIONAL # Pair of black and white reference values
- ),
-
- # Other tags
- 'other' => array(
- 'DateTime' => Exif::ASCII, # File change date and time
- 'ImageDescription' => Exif::ASCII, # Image title
- 'Make' => Exif::ASCII, # Image input equipment manufacturer
- 'Model' => Exif::ASCII, # Image input equipment model
- 'Software' => Exif::ASCII, # Software used
- 'Artist' => Exif::ASCII, # Person who created the image
- 'Copyright' => Exif::ASCII, # Copyright holder
- ),
- ),
-
- # Exif IFD Attribute Information (p30-31)
- 'exif' => array(
- # Tags relating to version
- 'version' => array(
- # TODO: NOTE: Nonexistence of this field is taken to mean nonconformance
- # to the EXIF 2.1 AND 2.2 standards
- 'ExifVersion' => Exif::UNDEFINED, # Exif version
- 'FlashpixVersion' => Exif::UNDEFINED, # Supported Flashpix version #p32
- ),
-
- # Tags relating to Image Data Characteristics
- 'characteristics' => array(
- 'ColorSpace' => Exif::SHORT, # Color space information #p32
- ),
-
- # Tags relating to image configuration
- 'configuration' => array(
- 'ComponentsConfiguration' => Exif::UNDEFINED, # Meaning of each component #p33
- 'CompressedBitsPerPixel' => Exif::RATIONAL, # Image compression mode
- 'PixelYDimension' => Exif::SHORT.','.Exif::LONG, # Valid image width
- 'PixelXDimension' => Exif::SHORT.','.Exif::LONG, # Valind image height
- ),
-
- # Tags relating to related user information
- 'user' => array(
- 'MakerNote' => Exif::UNDEFINED, # Manufacturer notes
- 'UserComment' => Exif::UNDEFINED, # User comments #p34
- ),
-
- # Tags relating to related file information
- 'related' => array(
- 'RelatedSoundFile' => Exif::ASCII, # Related audio file
- ),
-
- # Tags relating to date and time
- 'dateandtime' => array(
- 'DateTimeOriginal' => Exif::ASCII, # Date and time of original data generation #p36
- 'DateTimeDigitized' => Exif::ASCII, # Date and time of original data generation
- 'SubSecTime' => Exif::ASCII, # DateTime subseconds
- 'SubSecTimeOriginal' => Exif::ASCII, # DateTimeOriginal subseconds
- 'SubSecTimeDigitized' => Exif::ASCII, # DateTimeDigitized subseconds
- ),
-
- # Tags relating to picture-taking conditions (p31)
- 'conditions' => array(
- 'ExposureTime' => Exif::RATIONAL, # Exposure time
- 'FNumber' => Exif::RATIONAL, # F Number
- 'ExposureProgram' => Exif::SHORT, # Exposure Program #p38
- 'SpectralSensitivity' => Exif::ASCII, # Spectral sensitivity
- 'ISOSpeedRatings' => Exif::SHORT, # ISO speed rating
- 'OECF' => Exif::UNDEFINED, # Optoelectronic conversion factor
- 'ShutterSpeedValue' => Exif::SRATIONAL, # Shutter speed
- 'ApertureValue' => Exif::RATIONAL, # Aperture
- 'BrightnessValue' => Exif::SRATIONAL, # Brightness
- 'ExposureBiasValue' => Exif::SRATIONAL, # Exposure bias
- 'MaxApertureValue' => Exif::RATIONAL, # Maximum land aperture
- 'SubjectDistance' => Exif::RATIONAL, # Subject distance
- 'MeteringMode' => Exif::SHORT, # Metering mode #p40
- 'LightSource' => Exif::SHORT, # Light source #p40-41
- 'Flash' => Exif::SHORT, # Flash #p41-42
- 'FocalLength' => Exif::RATIONAL, # Lens focal length
- 'SubjectArea' => Exif::SHORT, # Subject area
- 'FlashEnergy' => Exif::RATIONAL, # Flash energy
- 'SpatialFrequencyResponse' => Exif::UNDEFINED, # Spatial frequency response
- 'FocalPlaneXResolution' => Exif::RATIONAL, # Focal plane X resolution
- 'FocalPlaneYResolution' => Exif::RATIONAL, # Focal plane Y resolution
- 'FocalPlaneResolutionUnit' => Exif::SHORT, # Focal plane resolution unit #p46
- 'SubjectLocation' => Exif::SHORT, # Subject location
- 'ExposureIndex' => Exif::RATIONAL, # Exposure index
- 'SensingMethod' => Exif::SHORT, # Sensing method #p46
- 'FileSource' => Exif::UNDEFINED, # File source #p47
- 'SceneType' => Exif::UNDEFINED, # Scene type #p47
- 'CFAPattern' => Exif::UNDEFINED, # CFA pattern
- 'CustomRendered' => Exif::SHORT, # Custom image processing #p48
- 'ExposureMode' => Exif::SHORT, # Exposure mode #p48
- 'WhiteBalance' => Exif::SHORT, # White Balance #p49
- 'DigitalZoomRatio' => Exif::RATIONAL, # Digital zoom ration
- 'FocalLengthIn35mmFilm' => Exif::SHORT, # Focal length in 35 mm film
- 'SceneCaptureType' => Exif::SHORT, # Scene capture type #p49
- 'GainControl' => Exif::RATIONAL, # Scene control #p49-50
- 'Contrast' => Exif::SHORT, # Contrast #p50
- 'Saturation' => Exif::SHORT, # Saturation #p50
- 'Sharpness' => Exif::SHORT, # Sharpness #p50
- 'DeviceSettingDescription' => Exif::UNDEFINED, # Desice settings description
- 'SubjectDistanceRange' => Exif::SHORT, # Subject distance range #p51
- ),
-
- 'other' => array(
- 'ImageUniqueID' => Exif::ASCII, # Unique image ID
- ),
- ),
-
- # GPS Attribute Information (p52)
- 'gps' => array(
- 'GPSVersionID' => Exif::BYTE, # GPS tag version
- 'GPSLatitudeRef' => Exif::ASCII, # North or South Latitude #p52-53
- 'GPSLatitude' => Exif::RATIONAL, # Latitude
- 'GPSLongitudeRef' => Exif::ASCII, # East or West Longitude #p53
- 'GPSLongitude' => Exif::RATIONAL, # Longitude
- 'GPSAltitudeRef' => Exif::BYTE, # Altitude reference
- 'GPSAltitude' => Exif::RATIONAL, # Altitude
- 'GPSTimeStamp' => Exif::RATIONAL, # GPS time (atomic clock)
- 'GPSSatellites' => Exif::ASCII, # Satellites used for measurement
- 'GPSStatus' => Exif::ASCII, # Receiver status #p54
- 'GPSMeasureMode' => Exif::ASCII, # Measurement mode #p54-55
- 'GPSDOP' => Exif::RATIONAL, # Measurement precision
- 'GPSSpeedRef' => Exif::ASCII, # Speed unit #p55
- 'GPSSpeed' => Exif::RATIONAL, # Speed of GPS receiver
- 'GPSTrackRef' => Exif::ASCII, # Reference for direction of movement #p55
- 'GPSTrack' => Exif::RATIONAL, # Direction of movement
- 'GPSImgDirectionRef' => Exif::ASCII, # Reference for direction of image #p56
- 'GPSImgDirection' => Exif::RATIONAL, # Direction of image
- 'GPSMapDatum' => Exif::ASCII, # Geodetic survey data used
- 'GPSDestLatitudeRef' => Exif::ASCII, # Reference for latitude of destination #p56
- 'GPSDestLatitude' => Exif::RATIONAL, # Latitude destination
- 'GPSDestLongitudeRef' => Exif::ASCII, # Reference for longitude of destination #p57
- 'GPSDestLongitude' => Exif::RATIONAL, # Longitude of destination
- 'GPSDestBearingRef' => Exif::ASCII, # Reference for bearing of destination #p57
- 'GPSDestBearing' => Exif::RATIONAL, # Bearing of destination
- 'GPSDestDistanceRef' => Exif::ASCII, # Reference for distance to destination #p57-58
- 'GPSDestDistance' => Exif::RATIONAL, # Distance to destination
- 'GPSProcessingMethod' => Exif::UNDEFINED, # Name of GPS processing method
- 'GPSAreaInformation' => Exif::UNDEFINED, # Name of GPS area
- 'GPSDateStamp' => Exif::ASCII, # GPS date
- 'GPSDifferential' => Exif::SHORT, # GPS differential correction
- ),
- );
-
- $this->file = $file;
- $this->basename = wfBaseName( $this->file );
-
- $this->makeFlatExifTags();
-
- $this->debugFile( $this->basename, __FUNCTION__, true );
- wfSuppressWarnings();
- $data = exif_read_data( $this->file );
- wfRestoreWarnings();
- /**
- * exif_read_data() will return false on invalid input, such as
- * when somebody uploads a file called something.jpeg
- * containing random gibberish.
- */
- $this->mRawExifData = $data ? $data : array();
-
- $this->makeFilteredData();
- $this->makeFormattedData();
-
- $this->debugFile( __FUNCTION__, false );
- }
-
- /**#@+
- * @private
- */
- /**
- * Generate a flat list of the exif tags
- */
- function makeFlatExifTags() {
- $this->extractTags( $this->mExifTags );
- }
-
- /**
- * A recursing extractor function used by makeFlatExifTags()
- *
- * Note: This used to use an array_walk function, but it made PHP5
- * segfault, see `cvs diff -u -r 1.4 -r 1.5 Exif.php`
- */
- function extractTags( &$tagset ) {
- foreach( $tagset as $key => $val ) {
- if( is_array( $val ) ) {
- $this->extractTags( $val );
- } else {
- $this->mFlatExifTags[$key] = $val;
- }
- }
- }
-
- /**
- * Make $this->mFilteredExifData
- */
- function makeFilteredData() {
- $this->mFilteredExifData = $this->mRawExifData;
-
- foreach( $this->mFilteredExifData as $k => $v ) {
- if ( !in_array( $k, array_keys( $this->mFlatExifTags ) ) ) {
- $this->debug( $v, __FUNCTION__, "'$k' is not a valid Exif tag" );
- unset( $this->mFilteredExifData[$k] );
- }
- }
-
- foreach( $this->mFilteredExifData as $k => $v ) {
- if ( !$this->validate($k, $v) ) {
- $this->debug( $v, __FUNCTION__, "'$k' contained invalid data" );
- unset( $this->mFilteredExifData[$k] );
- }
- }
- }
-
- /**
- * @todo document
- */
- function makeFormattedData( ) {
- $format = new FormatExif( $this->getFilteredData() );
- $this->mFormattedExifData = $format->getFormattedData();
- }
- /**#@-*/
-
- /**#@+
- * @return array
- */
- /**
- * Get $this->mRawExifData
- */
- function getData() {
- return $this->mRawExifData;
- }
-
- /**
- * Get $this->mFilteredExifData
- */
- function getFilteredData() {
- return $this->mFilteredExifData;
- }
-
- /**
- * Get $this->mFormattedExifData
- */
- function getFormattedData() {
- return $this->mFormattedExifData;
- }
- /**#@-*/
-
- /**
- * The version of the output format
- *
- * Before the actual metadata information is saved in the database we
- * strip some of it since we don't want to save things like thumbnails
- * which usually accompany Exif data. This value gets saved in the
- * database along with the actual Exif data, and if the version in the
- * database doesn't equal the value returned by this function the Exif
- * data is regenerated.
- *
- * @return int
- */
- public static function version() {
- return 1; // We don't need no bloddy constants!
- }
-
- /**#@+
- * Validates if a tag value is of the type it should be according to the Exif spec
- *
- * @private
- *
- * @param $in Mixed: the input value to check
- * @return bool
- */
- function isByte( $in ) {
- if ( !is_array( $in ) && sprintf('%d', $in) == $in && $in >= 0 && $in <= 255 ) {
- $this->debug( $in, __FUNCTION__, true );
- return true;
- } else {
- $this->debug( $in, __FUNCTION__, false );
- return false;
- }
- }
-
- function isASCII( $in ) {
- if ( is_array( $in ) ) {
- return false;
- }
-
- if ( preg_match( "/[^\x0a\x20-\x7e]/", $in ) ) {
- $this->debug( $in, __FUNCTION__, 'found a character not in our whitelist' );
- return false;
- }
-
- if ( preg_match( '/^\s*$/', $in ) ) {
- $this->debug( $in, __FUNCTION__, 'input consisted solely of whitespace' );
- return false;
- }
-
- return true;
- }
-
- function isShort( $in ) {
- if ( !is_array( $in ) && sprintf('%d', $in) == $in && $in >= 0 && $in <= 65536 ) {
- $this->debug( $in, __FUNCTION__, true );
- return true;
- } else {
- $this->debug( $in, __FUNCTION__, false );
- return false;
- }
- }
-
- function isLong( $in ) {
- if ( !is_array( $in ) && sprintf('%d', $in) == $in && $in >= 0 && $in <= 4294967296 ) {
- $this->debug( $in, __FUNCTION__, true );
- return true;
- } else {
- $this->debug( $in, __FUNCTION__, false );
- return false;
- }
- }
-
- function isRational( $in ) {
- $m = array();
- if ( !is_array( $in ) && @preg_match( '/^(\d+)\/(\d+[1-9]|[1-9]\d*)$/', $in, $m ) ) { # Avoid division by zero
- return $this->isLong( $m[1] ) && $this->isLong( $m[2] );
- } else {
- $this->debug( $in, __FUNCTION__, 'fed a non-fraction value' );
- return false;
- }
- }
-
- function isUndefined( $in ) {
- if ( !is_array( $in ) && preg_match( '/^\d{4}$/', $in ) ) { // Allow ExifVersion and FlashpixVersion
- $this->debug( $in, __FUNCTION__, true );
- return true;
- } else {
- $this->debug( $in, __FUNCTION__, false );
- return false;
- }
- }
-
- function isSlong( $in ) {
- if ( $this->isLong( abs( $in ) ) ) {
- $this->debug( $in, __FUNCTION__, true );
- return true;
- } else {
- $this->debug( $in, __FUNCTION__, false );
- return false;
- }
- }
-
- function isSrational( $in ) {
- $m = array();
- if ( !is_array( $in ) && preg_match( '/^(\d+)\/(\d+[1-9]|[1-9]\d*)$/', $in, $m ) ) { # Avoid division by zero
- return $this->isSlong( $m[0] ) && $this->isSlong( $m[1] );
- } else {
- $this->debug( $in, __FUNCTION__, 'fed a non-fraction value' );
- return false;
- }
- }
- /**#@-*/
-
- /**
- * Validates if a tag has a legal value according to the Exif spec
- *
- * @private
- *
- * @param $tag String: the tag to check.
- * @param $val Mixed: the value of the tag.
- * @return bool
- */
- function validate( $tag, $val ) {
- $debug = "tag is '$tag'";
- // Does not work if not typecast
- switch( (string)$this->mFlatExifTags[$tag] ) {
- case (string)Exif::BYTE:
- $this->debug( $val, __FUNCTION__, $debug );
- return $this->isByte( $val );
- case (string)Exif::ASCII:
- $this->debug( $val, __FUNCTION__, $debug );
- return $this->isASCII( $val );
- case (string)Exif::SHORT:
- $this->debug( $val, __FUNCTION__, $debug );
- return $this->isShort( $val );
- case (string)Exif::LONG:
- $this->debug( $val, __FUNCTION__, $debug );
- return $this->isLong( $val );
- case (string)Exif::RATIONAL:
- $this->debug( $val, __FUNCTION__, $debug );
- return $this->isRational( $val );
- case (string)Exif::UNDEFINED:
- $this->debug( $val, __FUNCTION__, $debug );
- return $this->isUndefined( $val );
- case (string)Exif::SLONG:
- $this->debug( $val, __FUNCTION__, $debug );
- return $this->isSlong( $val );
- case (string)Exif::SRATIONAL:
- $this->debug( $val, __FUNCTION__, $debug );
- return $this->isSrational( $val );
- case (string)Exif::SHORT.','.Exif::LONG:
- $this->debug( $val, __FUNCTION__, $debug );
- return $this->isShort( $val ) || $this->isLong( $val );
- default:
- $this->debug( $val, __FUNCTION__, "The tag '$tag' is unknown" );
- return false;
- }
- }
-
- /**
- * Convenience function for debugging output
- *
- * @private
- *
- * @param $in Mixed:
- * @param $fname String:
- * @param $action Mixed: , default NULL.
- */
- function debug( $in, $fname, $action = null ) {
- if ( !$this->log ) {
- return;
- }
- $type = gettype( $in );
- $class = ucfirst( __CLASS__ );
- if ( $type === 'array' )
- $in = print_r( $in, true );
-
- if ( $action === true )
- wfDebugLog( $this->log, "$class::$fname: accepted: '$in' (type: $type)\n");
- elseif ( $action === false )
- wfDebugLog( $this->log, "$class::$fname: rejected: '$in' (type: $type)\n");
- elseif ( $action === null )
- wfDebugLog( $this->log, "$class::$fname: input was: '$in' (type: $type)\n");
- else
- wfDebugLog( $this->log, "$class::$fname: $action (type: $type; content: '$in')\n");
- }
-
- /**
- * Convenience function for debugging output
- *
- * @private
- *
- * @param $fname String: the name of the function calling this function
- * @param $io Boolean: Specify whether we're beginning or ending
- */
- function debugFile( $fname, $io ) {
- if ( !$this->log ) {
- return;
- }
- $class = ucfirst( __CLASS__ );
- if ( $io ) {
- wfDebugLog( $this->log, "$class::$fname: begin processing: '{$this->basename}'\n" );
- } else {
- wfDebugLog( $this->log, "$class::$fname: end processing: '{$this->basename}'\n" );
- }
- }
-
-}
-
-/**
- * @todo document (e.g. one-sentence class-overview description)
- * @ingroup Media
- */
-class FormatExif {
- /**
- * The Exif data to format
- *
- * @var array
- * @private
- */
- var $mExif;
-
- /**
- * Constructor
- *
- * @param $exif Array: the Exif data to format ( as returned by
- * Exif::getFilteredData() )
- */
- function __construct( $exif ) {
- $this->mExif = $exif;
- }
-
- /**
- * Numbers given by Exif user agents are often magical, that is they
- * should be replaced by a detailed explanation depending on their
- * value which most of the time are plain integers. This function
- * formats Exif values into human readable form.
- *
- * @return array
- */
- function getFormattedData() {
- global $wgLang;
-
- $tags =& $this->mExif;
-
- $resolutionunit = !isset( $tags['ResolutionUnit'] ) || $tags['ResolutionUnit'] == 2 ? 2 : 3;
- unset( $tags['ResolutionUnit'] );
-
- foreach( $tags as $tag => $val ) {
- switch( $tag ) {
- case 'Compression':
- switch( $val ) {
- case 1: case 6:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'PhotometricInterpretation':
- switch( $val ) {
- case 2: case 6:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'Orientation':
- switch( $val ) {
- case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'PlanarConfiguration':
- switch( $val ) {
- case 1: case 2:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- // TODO: YCbCrSubSampling
- // TODO: YCbCrPositioning
-
- case 'XResolution':
- case 'YResolution':
- switch( $resolutionunit ) {
- case 2:
- $tags[$tag] = $this->msg( 'XYResolution', 'i', $this->formatNum( $val ) );
- break;
- case 3:
- $this->msg( 'XYResolution', 'c', $this->formatNum( $val ) );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- // TODO: YCbCrCoefficients #p27 (see annex E)
- case 'ExifVersion': case 'FlashpixVersion':
- $tags[$tag] = "$val"/100;
- break;
-
- case 'ColorSpace':
- switch( $val ) {
- case 1: case 'FFFF.H':
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'ComponentsConfiguration':
- switch( $val ) {
- case 0: case 1: case 2: case 3: case 4: case 5: case 6:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'DateTime':
- case 'DateTimeOriginal':
- case 'DateTimeDigitized':
- if( $val == '0000:00:00 00:00:00' ) {
- $tags[$tag] = wfMsg('exif-unknowndate');
- } elseif( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d) (?:\d\d):(?:\d\d):(?:\d\d)$/', $val ) ) {
- $tags[$tag] = $wgLang->timeanddate( wfTimestamp(TS_MW, $val) );
- }
- break;
-
- case 'ExposureProgram':
- switch( $val ) {
- case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'SubjectDistance':
- $tags[$tag] = $this->msg( $tag, '', $this->formatNum( $val ) );
- break;
-
- case 'MeteringMode':
- switch( $val ) {
- case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 255:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'LightSource':
- switch( $val ) {
- case 0: case 1: case 2: case 3: case 4: case 9: case 10: case 11:
- case 12: case 13: case 14: case 15: case 17: case 18: case 19: case 20:
- case 21: case 22: case 23: case 24: case 255:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'Flash':
- $flashDecode = array(
- 'fired' => $val & bindec( '00000001' ),
- 'return' => ($val & bindec( '00000110' )) >> 1,
- 'mode' => ($val & bindec( '00011000' )) >> 3,
- 'function' => ($val & bindec( '00100000' )) >> 5,
- 'redeye' => ($val & bindec( '01000000' )) >> 6,
-// 'reserved' => ($val & bindec( '10000000' )) >> 7,
- );
-
- # We do not need to handle unknown values since all are used.
- foreach( $flashDecode as $subTag => $subValue ) {
- # We do not need any message for zeroed values.
- if( $subTag != 'fired' && $subValue == 0) {
- continue;
- }
- $fullTag = $tag . '-' . $subTag ;
- $flashMsgs[] = $this->msg( $fullTag, $subValue );
- }
- $tags[$tag] = $wgLang->commaList( $flashMsgs );
- break;
-
- case 'FocalPlaneResolutionUnit':
- switch( $val ) {
- case 2:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'SensingMethod':
- switch( $val ) {
- case 1: case 2: case 3: case 4: case 5: case 7: case 8:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'FileSource':
- switch( $val ) {
- case 3:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'SceneType':
- switch( $val ) {
- case 1:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'CustomRendered':
- switch( $val ) {
- case 0: case 1:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'ExposureMode':
- switch( $val ) {
- case 0: case 1: case 2:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'WhiteBalance':
- switch( $val ) {
- case 0: case 1:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'SceneCaptureType':
- switch( $val ) {
- case 0: case 1: case 2: case 3:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'GainControl':
- switch( $val ) {
- case 0: case 1: case 2: case 3: case 4:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'Contrast':
- switch( $val ) {
- case 0: case 1: case 2:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'Saturation':
- switch( $val ) {
- case 0: case 1: case 2:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'Sharpness':
- switch( $val ) {
- case 0: case 1: case 2:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'SubjectDistanceRange':
- switch( $val ) {
- case 0: case 1: case 2: case 3:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'GPSLatitudeRef':
- case 'GPSDestLatitudeRef':
- switch( $val ) {
- case 'N': case 'S':
- $tags[$tag] = $this->msg( 'GPSLatitude', $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'GPSLongitudeRef':
- case 'GPSDestLongitudeRef':
- switch( $val ) {
- case 'E': case 'W':
- $tags[$tag] = $this->msg( 'GPSLongitude', $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'GPSStatus':
- switch( $val ) {
- case 'A': case 'V':
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'GPSMeasureMode':
- switch( $val ) {
- case 2: case 3:
- $tags[$tag] = $this->msg( $tag, $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'GPSSpeedRef':
- case 'GPSDestDistanceRef':
- switch( $val ) {
- case 'K': case 'M': case 'N':
- $tags[$tag] = $this->msg( 'GPSSpeed', $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'GPSTrackRef':
- case 'GPSImgDirectionRef':
- case 'GPSDestBearingRef':
- switch( $val ) {
- case 'T': case 'M':
- $tags[$tag] = $this->msg( 'GPSDirection', $val );
- break;
- default:
- $tags[$tag] = $val;
- break;
- }
- break;
-
- case 'GPSDateStamp':
- $tags[$tag] = $wgLang->date( substr( $val, 0, 4 ) . substr( $val, 5, 2 ) . substr( $val, 8, 2 ) . '000000' );
- break;
-
- // This is not in the Exif standard, just a special
- // case for our purposes which enables wikis to wikify
- // the make, model and software name to link to their articles.
- case 'Make':
- case 'Model':
- case 'Software':
- $tags[$tag] = $this->msg( $tag, '', $val );
- break;
-
- case 'ExposureTime':
- // Show the pretty fraction as well as decimal version
- $tags[$tag] = wfMsg( 'exif-exposuretime-format',
- $this->formatFraction( $val ), $this->formatNum( $val ) );
- break;
-
- case 'FNumber':
- $tags[$tag] = wfMsg( 'exif-fnumber-format',
- $this->formatNum( $val ) );
- break;
-
- case 'FocalLength':
- $tags[$tag] = wfMsg( 'exif-focallength-format',
- $this->formatNum( $val ) );
- break;
-
- // Do not transform fields with pure text.
- // For some languages the formatNum() conversion results to wrong output like
- // foo,bar@example,com or fooÙ«bar@exampleÙ«com
- case 'ImageDescription':
- case 'Artist':
- case 'Copyright':
- $tags[$tag] = htmlspecialchars( $val );
- break;
- default:
- $tags[$tag] = $this->formatNum( $val );
- break;
- }
- }
-
- return $tags;
- }
-
- /**
- * Convenience function for getFormattedData()
- *
- * @private
- *
- * @param $tag String: the tag name to pass on
- * @param $val String: the value of the tag
- * @param $arg String: an argument to pass ($1)
- * @return string A wfMsg of "exif-$tag-$val" in lower case
- */
- function msg( $tag, $val, $arg = null ) {
- global $wgContLang;
-
- if ($val === '')
- $val = 'value';
- return wfMsg( $wgContLang->lc( "exif-$tag-$val" ), $arg );
- }
-
- /**
- * Format a number, convert numbers from fractions into floating point
- * numbers
- *
- * @private
- *
- * @param $num Mixed: the value to format
- * @return mixed A floating point number or whatever we were fed
- */
- function formatNum( $num ) {
- global $wgLang;
-
- $m = array();
- if ( preg_match( '/^(\d+)\/(\d+)$/', $num, $m ) )
- return $wgLang->formatNum( $m[2] != 0 ? $m[1] / $m[2] : $num );
- else
- return $wgLang->formatNum( $num );
- }
-
- /**
- * Format a rational number, reducing fractions
- *
- * @private
- *
- * @param $num Mixed: the value to format
- * @return mixed A floating point number or whatever we were fed
- */
- function formatFraction( $num ) {
- $m = array();
- if ( preg_match( '/^(\d+)\/(\d+)$/', $num, $m ) ) {
- $numerator = intval( $m[1] );
- $denominator = intval( $m[2] );
- $gcd = $this->gcd( $numerator, $denominator );
- if( $gcd != 0 ) {
- // 0 shouldn't happen! ;)
- return $this->formatNum( $numerator / $gcd ) . '/' . $this->formatNum( $denominator / $gcd );
- }
- }
- return $this->formatNum( $num );
- }
-
- /**
- * Calculate the greatest common divisor of two integers.
- *
- * @param $a Integer: FIXME
- * @param $b Integer: FIXME
- * @return int
- * @private
- */
- function gcd( $a, $b ) {
- /*
- // http://en.wikipedia.org/wiki/Euclidean_algorithm
- // Recursive form would be:
- if( $b == 0 )
- return $a;
- else
- return gcd( $b, $a % $b );
- */
- while( $b != 0 ) {
- $remainder = $a % $b;
-
- // tail recursion...
- $a = $b;
- $b = $remainder;
- }
- return $a;
- }
-}
diff --git a/includes/Export.php b/includes/Export.php
index e7cd4d3f..87c735c1 100644
--- a/includes/Export.php
+++ b/includes/Export.php
@@ -35,11 +35,13 @@ class WikiExporter {
var $author_list = "" ;
var $dumpUploads = false;
+ var $dumpUploadFileContents = false;
const FULL = 1;
const CURRENT = 2;
const STABLE = 4; // extension defined
const LOGS = 8;
+ const RANGE = 16;
const BUFFER = 0;
const STREAM = 1;
@@ -55,7 +57,8 @@ class WikiExporter {
* main query is still running.
*
* @param $db Database
- * @param $history Mixed: one of WikiExporter::FULL or WikiExporter::CURRENT,
+ * @param $history Mixed: one of WikiExporter::FULL, WikiExporter::CURRENT,
+ * WikiExporter::RANGE or WikiExporter::STABLE,
* or an associative array:
* offset: non-inclusive offset at which to start the query
* limit: maximum number of rows to return
@@ -112,13 +115,28 @@ class WikiExporter {
*/
public function pagesByRange( $start, $end ) {
$condition = 'page_id >= ' . intval( $start );
- if( $end ) {
+ if ( $end ) {
$condition .= ' AND page_id < ' . intval( $end );
}
return $this->dumpFrom( $condition );
}
/**
+ * Dumps a series of page and revision records for those pages
+ * in the database with revisions falling within the rev_id range given.
+ * @param $start Int: inclusive lower limit (this id is included)
+ * @param $end Int: Exclusive upper limit (this id is not included)
+ * If 0, no upper limit.
+ */
+ public function revsByRange( $start, $end ) {
+ $condition = 'rev_id >= ' . intval( $start );
+ if ( $end ) {
+ $condition .= ' AND rev_id < ' . intval( $end );
+ }
+ return $this->dumpFrom( $condition );
+ }
+
+ /**
* @param $title Title
*/
public function pageByTitle( $title ) {
@@ -129,7 +147,7 @@ class WikiExporter {
public function pageByName( $name ) {
$title = Title::newFromText( $name );
- if( is_null( $title ) ) {
+ if ( is_null( $title ) ) {
throw new MWException( "Can't export invalid title" );
} else {
return $this->pageByTitle( $title );
@@ -137,7 +155,7 @@ class WikiExporter {
}
public function pagesByName( $names ) {
- foreach( $names as $name ) {
+ foreach ( $names as $name ) {
$this->pageByName( $name );
}
}
@@ -148,7 +166,7 @@ class WikiExporter {
public function logsByRange( $start, $end ) {
$condition = 'log_id >= ' . intval( $start );
- if( $end ) {
+ if ( $end ) {
$condition .= ' AND log_id < ' . intval( $end );
}
return $this->dumpFrom( $condition );
@@ -157,17 +175,23 @@ class WikiExporter {
# Generates the distinct list of authors of an article
# Not called by default (depends on $this->list_authors)
# Can be set by Special:Export when not exporting whole history
- protected function do_list_authors( $page , $revision , $cond ) {
+ protected function do_list_authors( $cond ) {
wfProfileIn( __METHOD__ );
$this->author_list = "<contributors>";
- //rev_deleted
- $nothidden = '('.$this->db->bitAnd('rev_deleted', Revision::DELETED_USER) . ') = 0';
-
- $sql = "SELECT DISTINCT rev_user_text,rev_user FROM {$page},{$revision}
- WHERE page_id=rev_page AND $nothidden AND " . $cond ;
- $result = $this->db->query( $sql, __METHOD__ );
- $resultset = $this->db->resultObject( $result );
- foreach ( $resultset as $row ) {
+ // rev_deleted
+
+ $res = $this->db->select(
+ array( 'page', 'revision' ),
+ array( 'DISTINCT rev_user_text', 'rev_user' ),
+ array(
+ $this->db->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0',
+ $cond,
+ 'page_id = rev_id',
+ ),
+ __METHOD__
+ );
+
+ foreach ( $res as $row ) {
$this->author_list .= "<contributor>" .
"<username>" .
htmlentities( $row->rev_user_text ) .
@@ -184,27 +208,27 @@ class WikiExporter {
protected function dumpFrom( $cond = '' ) {
wfProfileIn( __METHOD__ );
# For logging dumps...
- if( $this->history & self::LOGS ) {
- if( $this->buffer == WikiExporter::STREAM ) {
+ if ( $this->history & self::LOGS ) {
+ if ( $this->buffer == WikiExporter::STREAM ) {
$prev = $this->db->bufferResults( false );
}
$where = array( 'user_id = log_user' );
# Hide private logs
$hideLogs = LogEventsList::getExcludeClause( $this->db );
- if( $hideLogs ) $where[] = $hideLogs;
+ if ( $hideLogs ) $where[] = $hideLogs;
# Add on any caller specified conditions
- if( $cond ) $where[] = $cond;
+ if ( $cond ) $where[] = $cond;
# Get logging table name for logging.* clause
- $logging = $this->db->tableName('logging');
- $result = $this->db->select( array('logging','user'),
+ $logging = $this->db->tableName( 'logging' );
+ $result = $this->db->select( array( 'logging', 'user' ),
array( "{$logging}.*", 'user_name' ), // grab the user name
$where,
__METHOD__,
- array( 'ORDER BY' => 'log_id', 'USE INDEX' => array('logging' => 'PRIMARY') )
+ array( 'ORDER BY' => 'log_id', 'USE INDEX' => array( 'logging' => 'PRIMARY' ) )
);
$wrapper = $this->db->resultObject( $result );
$this->outputLogStream( $wrapper );
- if( $this->buffer == WikiExporter::STREAM ) {
+ if ( $this->buffer == WikiExporter::STREAM ) {
$this->db->bufferResults( $prev );
}
# For page dumps...
@@ -213,11 +237,11 @@ class WikiExporter {
$opts = array( 'ORDER BY' => 'page_id ASC' );
$opts['USE INDEX'] = array();
$join = array();
- if( is_array( $this->history ) ) {
+ if ( is_array( $this->history ) ) {
# Time offset/limit for all pages/history...
$revJoin = 'page_id=rev_page';
# Set time order
- if( $this->history['dir'] == 'asc' ) {
+ if ( $this->history['dir'] == 'asc' ) {
$op = '>';
$opts['ORDER BY'] = 'rev_timestamp ASC';
} else {
@@ -225,54 +249,57 @@ class WikiExporter {
$opts['ORDER BY'] = 'rev_timestamp DESC';
}
# Set offset
- if( !empty( $this->history['offset'] ) ) {
+ if ( !empty( $this->history['offset'] ) ) {
$revJoin .= " AND rev_timestamp $op " .
$this->db->addQuotes( $this->db->timestamp( $this->history['offset'] ) );
}
- $join['revision'] = array('INNER JOIN',$revJoin);
+ $join['revision'] = array( 'INNER JOIN', $revJoin );
# Set query limit
- if( !empty( $this->history['limit'] ) ) {
+ if ( !empty( $this->history['limit'] ) ) {
$opts['LIMIT'] = intval( $this->history['limit'] );
}
- } elseif( $this->history & WikiExporter::FULL ) {
+ } elseif ( $this->history & WikiExporter::FULL ) {
# Full history dumps...
- $join['revision'] = array('INNER JOIN','page_id=rev_page');
- } elseif( $this->history & WikiExporter::CURRENT ) {
+ $join['revision'] = array( 'INNER JOIN', 'page_id=rev_page' );
+ } elseif ( $this->history & WikiExporter::CURRENT ) {
# Latest revision dumps...
- if( $this->list_authors && $cond != '' ) { // List authors, if so desired
- list($page,$revision) = $this->db->tableNamesN('page','revision');
- $this->do_list_authors( $page, $revision, $cond );
+ if ( $this->list_authors && $cond != '' ) { // List authors, if so desired
+ $this->do_list_authors( $cond );
}
- $join['revision'] = array('INNER JOIN','page_id=rev_page AND page_latest=rev_id');
- } elseif( $this->history & WikiExporter::STABLE ) {
+ $join['revision'] = array( 'INNER JOIN', 'page_id=rev_page AND page_latest=rev_id' );
+ } elseif ( $this->history & WikiExporter::STABLE ) {
# "Stable" revision dumps...
# Default JOIN, to be overridden...
- $join['revision'] = array('INNER JOIN','page_id=rev_page AND page_latest=rev_id');
+ $join['revision'] = array( 'INNER JOIN', 'page_id=rev_page AND page_latest=rev_id' );
# One, and only one hook should set this, and return false
- if( wfRunHooks( 'WikiExporter::dumpStableQuery', array(&$tables,&$opts,&$join) ) ) {
+ if ( wfRunHooks( 'WikiExporter::dumpStableQuery', array( &$tables, &$opts, &$join ) ) ) {
wfProfileOut( __METHOD__ );
- throw new MWException( __METHOD__." given invalid history dump type." );
+ throw new MWException( __METHOD__ . " given invalid history dump type." );
}
+ } elseif ( $this->history & WikiExporter::RANGE ) {
+ # Dump of revisions within a specified range
+ $join['revision'] = array( 'INNER JOIN', 'page_id=rev_page' );
+ $opts['ORDER BY'] = 'rev_page ASC, rev_id ASC';
} else {
# Uknown history specification parameter?
wfProfileOut( __METHOD__ );
- throw new MWException( __METHOD__." given invalid history dump type." );
+ throw new MWException( __METHOD__ . " given invalid history dump type." );
}
# Query optimization hacks
- if( $cond == '' ) {
+ if ( $cond == '' ) {
$opts[] = 'STRAIGHT_JOIN';
$opts['USE INDEX']['page'] = 'PRIMARY';
}
# Build text join options
- if( $this->text != WikiExporter::STUB ) { // 1-pass
+ if ( $this->text != WikiExporter::STUB ) { // 1-pass
$tables[] = 'text';
- $join['text'] = array('INNER JOIN','rev_text_id=old_id');
+ $join['text'] = array( 'INNER JOIN', 'rev_text_id=old_id' );
}
- if( $this->buffer == WikiExporter::STREAM ) {
+ if ( $this->buffer == WikiExporter::STREAM ) {
$prev = $this->db->bufferResults( false );
}
-
+
wfRunHooks( 'ModifyExportQuery',
array( $this->db, &$tables, &$cond, &$opts, &$join ) );
@@ -281,11 +308,11 @@ class WikiExporter {
$wrapper = $this->db->resultObject( $result );
# Output dump results
$this->outputPageStream( $wrapper );
- if( $this->list_authors ) {
+ if ( $this->list_authors ) {
$this->outputPageStream( $wrapper );
}
- if( $this->buffer == WikiExporter::STREAM ) {
+ if ( $this->buffer == WikiExporter::STREAM ) {
$this->db->bufferResults( $prev );
}
}
@@ -307,13 +334,13 @@ class WikiExporter {
protected function outputPageStream( $resultset ) {
$last = null;
foreach ( $resultset as $row ) {
- if( is_null( $last ) ||
+ if ( is_null( $last ) ||
$last->page_namespace != $row->page_namespace ||
$last->page_title != $row->page_title ) {
- if( isset( $last ) ) {
+ if ( isset( $last ) ) {
$output = '';
- if( $this->dumpUploads ) {
- $output .= $this->writer->writeUploads( $last );
+ if ( $this->dumpUploads ) {
+ $output .= $this->writer->writeUploads( $last, $this->dumpUploadFileContents );
}
$output .= $this->writer->closePage();
$this->sink->writeClosePage( $output );
@@ -325,17 +352,17 @@ class WikiExporter {
$output = $this->writer->writeRevision( $row );
$this->sink->writeRevision( $row, $output );
}
- if( isset( $last ) ) {
+ if ( isset( $last ) ) {
$output = '';
- if( $this->dumpUploads ) {
- $output .= $this->writer->writeUploads( $last );
+ if ( $this->dumpUploads ) {
+ $output .= $this->writer->writeUploads( $last, $this->dumpUploadFileContents );
}
$output .= $this->author_list;
$output .= $this->writer->closePage();
$this->sink->writeClosePage( $output );
}
}
-
+
protected function outputLogStream( $resultset ) {
foreach ( $resultset as $row ) {
$output = $this->writer->writeLogItem( $row );
@@ -348,7 +375,6 @@ class WikiExporter {
* @ingroup Dump
*/
class XmlDumpWriter {
-
/**
* Returns the export schema version.
* @return string
@@ -405,7 +431,7 @@ class XmlDumpWriter {
}
function homelink() {
- return Xml::element( 'base', array(), Title::newMainPage()->getFullUrl() );
+ return Xml::element( 'base', array(), Title::newMainPage()->getCanonicalUrl() );
}
function caseSetting() {
@@ -418,9 +444,9 @@ class XmlDumpWriter {
function namespaces() {
global $wgContLang;
$spaces = "<namespaces>\n";
- foreach( $wgContLang->getFormattedNamespaces() as $ns => $title ) {
- $spaces .= ' ' .
- Xml::element( 'namespace',
+ foreach ( $wgContLang->getFormattedNamespaces() as $ns => $title ) {
+ $spaces .= ' ' .
+ Xml::element( 'namespace',
array( 'key' => $ns,
'case' => MWNamespace::isCapitalized( $ns ) ? 'first-letter' : 'case-sensitive',
), $title ) . "\n";
@@ -432,12 +458,13 @@ class XmlDumpWriter {
/**
* Closes the output stream with the closing root element.
* Call when finished dumping things.
+ *
+ * @return string
*/
function closeStream() {
return "</mediawiki>\n";
}
-
/**
* Opens a <page> section on the output stream, with data
* from the given database row.
@@ -449,18 +476,18 @@ class XmlDumpWriter {
function openPage( $row ) {
$out = " <page>\n";
$title = Title::makeTitle( $row->page_namespace, $row->page_title );
- $out .= ' ' . Xml::elementClean( 'title', array(), $title->getPrefixedText() ) . "\n";
+ $out .= ' ' . Xml::elementClean( 'title', array(), self::canonicalTitle( $title ) ) . "\n";
$out .= ' ' . Xml::element( 'id', array(), strval( $row->page_id ) ) . "\n";
- if( $row->page_is_redirect ) {
+ if ( $row->page_is_redirect ) {
$out .= ' ' . Xml::element( 'redirect', array() ) . "\n";
}
- if( $row->page_restrictions != '' ) {
+ if ( $row->page_restrictions != '' ) {
$out .= ' ' . Xml::element( 'restrictions', array(),
strval( $row->page_restrictions ) ) . "\n";
}
-
+
wfRunHooks( 'XmlDumpWriterOpenPage', array( $this, &$out, $row, $title ) );
-
+
return $out;
}
@@ -489,25 +516,25 @@ class XmlDumpWriter {
$out .= $this->writeTimestamp( $row->rev_timestamp );
- if( $row->rev_deleted & Revision::DELETED_USER ) {
+ if ( $row->rev_deleted & Revision::DELETED_USER ) {
$out .= " " . Xml::element( 'contributor', array( 'deleted' => 'deleted' ) ) . "\n";
} else {
$out .= $this->writeContributor( $row->rev_user, $row->rev_user_text );
}
- if( $row->rev_minor_edit ) {
+ if ( $row->rev_minor_edit ) {
$out .= " <minor/>\n";
}
- if( $row->rev_deleted & Revision::DELETED_COMMENT ) {
+ if ( $row->rev_deleted & Revision::DELETED_COMMENT ) {
$out .= " " . Xml::element( 'comment', array( 'deleted' => 'deleted' ) ) . "\n";
- } elseif( $row->rev_comment != '' ) {
+ } elseif ( $row->rev_comment != '' ) {
$out .= " " . Xml::elementClean( 'comment', null, strval( $row->rev_comment ) ) . "\n";
}
$text = '';
- if( $row->rev_deleted & Revision::DELETED_TEXT ) {
+ if ( $row->rev_deleted & Revision::DELETED_TEXT ) {
$out .= " " . Xml::element( 'text', array( 'deleted' => 'deleted' ) ) . "\n";
- } elseif( isset( $row->old_text ) ) {
+ } elseif ( isset( $row->old_text ) ) {
// Raw text from the database may have invalid chars
$text = strval( Revision::getRevisionText( $row ) );
$out .= " " . Xml::elementClean( 'text',
@@ -527,7 +554,7 @@ class XmlDumpWriter {
wfProfileOut( __METHOD__ );
return $out;
}
-
+
/**
* Dumps a <logitem> section on the output stream, with
* data filled in from the given database row.
@@ -544,26 +571,26 @@ class XmlDumpWriter {
$out .= $this->writeTimestamp( $row->log_timestamp );
- if( $row->log_deleted & LogPage::DELETED_USER ) {
+ if ( $row->log_deleted & LogPage::DELETED_USER ) {
$out .= " " . Xml::element( 'contributor', array( 'deleted' => 'deleted' ) ) . "\n";
} else {
$out .= $this->writeContributor( $row->log_user, $row->user_name );
}
- if( $row->log_deleted & LogPage::DELETED_COMMENT ) {
+ if ( $row->log_deleted & LogPage::DELETED_COMMENT ) {
$out .= " " . Xml::element( 'comment', array( 'deleted' => 'deleted' ) ) . "\n";
- } elseif( $row->log_comment != '' ) {
+ } elseif ( $row->log_comment != '' ) {
$out .= " " . Xml::elementClean( 'comment', null, strval( $row->log_comment ) ) . "\n";
}
-
+
$out .= " " . Xml::element( 'type', null, strval( $row->log_type ) ) . "\n";
$out .= " " . Xml::element( 'action', null, strval( $row->log_action ) ) . "\n";
- if( $row->log_deleted & LogPage::DELETED_ACTION ) {
+ if ( $row->log_deleted & LogPage::DELETED_ACTION ) {
$out .= " " . Xml::element( 'text', array( 'deleted' => 'deleted' ) ) . "\n";
} else {
$title = Title::makeTitle( $row->log_namespace, $row->log_title );
- $out .= " " . Xml::elementClean( 'logtitle', null, $title->getPrefixedText() ) . "\n";
+ $out .= " " . Xml::elementClean( 'logtitle', null, self::canonicalTitle( $title ) ) . "\n";
$out .= " " . Xml::elementClean( 'params',
array( 'xml:space' => 'preserve' ),
strval( $row->log_params ) ) . "\n";
@@ -582,7 +609,7 @@ class XmlDumpWriter {
function writeContributor( $id, $text ) {
$out = " <contributor>\n";
- if( $id ) {
+ if ( $id ) {
$out .= " " . Xml::elementClean( 'username', null, strval( $text ) ) . "\n";
$out .= " " . Xml::element( 'id', null, strval( $id ) ) . "\n";
} else {
@@ -595,32 +622,79 @@ class XmlDumpWriter {
/**
* Warning! This data is potentially inconsistent. :(
*/
- function writeUploads( $row ) {
- if( $row->page_namespace == NS_IMAGE ) {
- $img = wfFindFile( $row->page_title );
- if( $img ) {
+ function writeUploads( $row, $dumpContents = false ) {
+ if ( $row->page_namespace == NS_IMAGE ) {
+ $img = wfLocalFile( $row->page_title );
+ if ( $img && $img->exists() ) {
$out = '';
- foreach( array_reverse( $img->getHistory() ) as $ver ) {
- $out .= $this->writeUpload( $ver );
+ foreach ( array_reverse( $img->getHistory() ) as $ver ) {
+ $out .= $this->writeUpload( $ver, $dumpContents );
}
- $out .= $this->writeUpload( $img );
+ $out .= $this->writeUpload( $img, $dumpContents );
return $out;
}
}
return '';
}
- function writeUpload( $file ) {
+ /**
+ * @param $file File
+ * @param $dumpContents bool
+ * @return string
+ */
+ function writeUpload( $file, $dumpContents = false ) {
+ if ( $file->isOld() ) {
+ $archiveName = " " .
+ Xml::element( 'archivename', null, $file->getArchiveName() ) . "\n";
+ } else {
+ $archiveName = '';
+ }
+ if ( $dumpContents ) {
+ # Dump file as base64
+ # Uses only XML-safe characters, so does not need escaping
+ $contents = ' <contents encoding="base64">' .
+ chunk_split( base64_encode( file_get_contents( $file->getPath() ) ) ) .
+ " </contents>\n";
+ } else {
+ $contents = '';
+ }
return " <upload>\n" .
$this->writeTimestamp( $file->getTimestamp() ) .
$this->writeContributor( $file->getUser( 'id' ), $file->getUser( 'text' ) ) .
" " . Xml::elementClean( 'comment', null, $file->getDescription() ) . "\n" .
" " . Xml::element( 'filename', null, $file->getName() ) . "\n" .
- " " . Xml::element( 'src', null, $file->getFullUrl() ) . "\n" .
+ $archiveName .
+ " " . Xml::element( 'src', null, $file->getCanonicalUrl() ) . "\n" .
" " . Xml::element( 'size', null, $file->getSize() ) . "\n" .
+ " " . Xml::element( 'sha1base36', null, $file->getSha1() ) . "\n" .
+ " " . Xml::element( 'rel', null, $file->getRel() ) . "\n" .
+ $contents .
" </upload>\n";
}
+ /**
+ * Return prefixed text form of title, but using the content language's
+ * canonical namespace. This skips any special-casing such as gendered
+ * user namespaces -- which while useful, are not yet listed in the
+ * XML <siteinfo> data so are unsafe in export.
+ *
+ * @param Title $title
+ * @return string
+ */
+ public static function canonicalTitle( Title $title ) {
+ if ( $title->getInterwiki() ) {
+ return $title->getPrefixedText();
+ }
+
+ global $wgContLang;
+ $prefix = str_replace( '_', ' ', $wgContLang->getNsText( $title->getNamespace() ) );
+
+ if ($prefix !== '') {
+ $prefix .= ':';
+ }
+
+ return $prefix . $title->getText();
+ }
}
@@ -648,7 +722,7 @@ class DumpOutput {
function writeRevision( $rev, $string ) {
$this->write( $string );
}
-
+
function writeLogItem( $rev, $string ) {
$this->write( $string );
}
@@ -660,6 +734,36 @@ class DumpOutput {
function write( $string ) {
print $string;
}
+
+ /**
+ * Close the old file, move it to a specified name,
+ * and reopen new file with the old name. Use this
+ * for writing out a file in multiple pieces
+ * at specified checkpoints (e.g. every n hours).
+ * @param $newname mixed File name. May be a string or an array with one element
+ */
+ function closeRenameAndReopen( $newname ) {
+ return;
+ }
+
+ /**
+ * Close the old file, and move it to a specified name.
+ * Use this for the last piece of a file written out
+ * at specified checkpoints (e.g. every n hours).
+ * @param $newname mixed File name. May be a string or an array with one element
+ * @param $open bool If true, a new file with the old filename will be opened again for writing (default: false)
+ */
+ function closeAndRename( $newname, $open = false ) {
+ return;
+ }
+
+ /**
+ * Returns the name of the file or files which are
+ * being written to, if there are any.
+ */
+ function getFilenames() {
+ return NULL;
+ }
}
/**
@@ -667,15 +771,52 @@ class DumpOutput {
* @ingroup Dump
*/
class DumpFileOutput extends DumpOutput {
- var $handle;
+ protected $handle, $filename;
function __construct( $file ) {
$this->handle = fopen( $file, "wt" );
+ $this->filename = $file;
}
function write( $string ) {
fputs( $this->handle, $string );
}
+
+ function closeRenameAndReopen( $newname ) {
+ $this->closeAndRename( $newname, true );
+ }
+
+ function renameOrException( $newname ) {
+ if (! rename( $this->filename, $newname ) ) {
+ throw new MWException( __METHOD__ . ": rename of file {$this->filename} to $newname failed\n" );
+ }
+ }
+
+ function checkRenameArgCount( $newname ) {
+ if ( is_array( $newname ) ) {
+ if ( count( $newname ) > 1 ) {
+ throw new MWException( __METHOD__ . ": passed multiple arguments for rename of single file\n" );
+ } else {
+ $newname = $newname[0];
+ }
+ }
+ return $newname;
+ }
+
+ function closeAndRename( $newname, $open = false ) {
+ $newname = $this->checkRenameArgCount( $newname );
+ if ( $newname ) {
+ fclose( $this->handle );
+ $this->renameOrException( $newname );
+ if ( $open ) {
+ $this->handle = fopen( $this->filename, "wt" );
+ }
+ }
+ }
+
+ function getFilenames() {
+ return $this->filename;
+ }
}
/**
@@ -685,12 +826,45 @@ class DumpFileOutput extends DumpOutput {
* @ingroup Dump
*/
class DumpPipeOutput extends DumpFileOutput {
+ protected $command, $filename;
+
function __construct( $command, $file = null ) {
- if( !is_null( $file ) ) {
+ if ( !is_null( $file ) ) {
$command .= " > " . wfEscapeShellArg( $file );
}
- $this->handle = popen( $command, "w" );
+
+ $this->startCommand( $command );
+ $this->command = $command;
+ $this->filename = $file;
+ }
+
+ function startCommand( $command ) {
+ $spec = array(
+ 0 => array( "pipe", "r" ),
+ );
+ $pipes = array();
+ $this->procOpenResource = proc_open( $command, $spec, $pipes );
+ $this->handle = $pipes[0];
}
+
+ function closeRenameAndReopen( $newname ) {
+ $this->closeAndRename( $newname, true );
+ }
+
+ function closeAndRename( $newname, $open = false ) {
+ $newname = $this->checkRenameArgCount( $newname );
+ if ( $newname ) {
+ fclose( $this->handle );
+ proc_close( $this->procOpenResource );
+ $this->renameOrException( $newname );
+ if ( $open ) {
+ $command = $this->command;
+ $command .= " > " . wfEscapeShellArg( $this->filename );
+ $this->startCommand( $command );
+ }
+ }
+ }
+
}
/**
@@ -718,12 +892,37 @@ class DumpBZip2Output extends DumpPipeOutput {
* @ingroup Dump
*/
class Dump7ZipOutput extends DumpPipeOutput {
+ protected $filename;
+
function __construct( $file ) {
+ $command = $this->setup7zCommand( $file );
+ parent::__construct( $command );
+ $this->filename = $file;
+ }
+
+ function setup7zCommand( $file ) {
$command = "7za a -bd -si " . wfEscapeShellArg( $file );
// Suppress annoying useless crap from p7zip
// Unfortunately this could suppress real error messages too
$command .= ' >' . wfGetNull() . ' 2>&1';
- parent::__construct( $command );
+ return( $command );
+ }
+
+ function closeRenameAndReopen( $newname ) {
+ $this->closeAndRename( $newname, true );
+ }
+
+ function closeAndRename( $newname, $open = false ) {
+ $newname = $this->checkRenameArgCount( $newname );
+ if ( $newname ) {
+ fclose( $this->handle );
+ proc_close( $this->procOpenResource );
+ $this->renameOrException( $newname );
+ if ( $open ) {
+ $command = $this->setup7zCommand( $file );
+ $this->startCommand( $command );
+ }
+ }
}
}
@@ -750,27 +949,39 @@ class DumpFilter {
function writeOpenPage( $page, $string ) {
$this->sendingThisPage = $this->pass( $page, $string );
- if( $this->sendingThisPage ) {
+ if ( $this->sendingThisPage ) {
$this->sink->writeOpenPage( $page, $string );
}
}
function writeClosePage( $string ) {
- if( $this->sendingThisPage ) {
+ if ( $this->sendingThisPage ) {
$this->sink->writeClosePage( $string );
$this->sendingThisPage = false;
}
}
function writeRevision( $rev, $string ) {
- if( $this->sendingThisPage ) {
+ if ( $this->sendingThisPage ) {
$this->sink->writeRevision( $rev, $string );
}
}
-
+
function writeLogItem( $rev, $string ) {
$this->sink->writeRevision( $rev, $string );
- }
+ }
+
+ function closeRenameAndReopen( $newname ) {
+ $this->sink->closeRenameAndReopen( $newname );
+ }
+
+ function closeAndRename( $newname, $open = false ) {
+ $this->sink->closeAndRename( $newname, $open );
+ }
+
+ function getFilenames() {
+ return $this->sink->getFilenames();
+ }
/**
* Override for page-based filter types.
@@ -822,17 +1033,17 @@ class DumpNamespaceFilter extends DumpFilter {
"NS_CATEGORY" => NS_CATEGORY,
"NS_CATEGORY_TALK" => NS_CATEGORY_TALK );
- if( $param{0} == '!' ) {
+ if ( $param { 0 } == '!' ) {
$this->invert = true;
$param = substr( $param, 1 );
}
- foreach( explode( ',', $param ) as $key ) {
+ foreach ( explode( ',', $param ) as $key ) {
$key = trim( $key );
- if( isset( $constants[$key] ) ) {
+ if ( isset( $constants[$key] ) ) {
$ns = $constants[$key];
$this->namespaces[$ns] = true;
- } elseif( is_numeric( $key ) ) {
+ } elseif ( is_numeric( $key ) ) {
$ns = intval( $key );
$this->namespaces[$ns] = true;
} else {
@@ -861,7 +1072,7 @@ class DumpLatestFilter extends DumpFilter {
}
function writeClosePage( $string ) {
- if( $this->rev ) {
+ if ( $this->rev ) {
$this->sink->writeOpenPage( $this->page, $this->pageString );
$this->sink->writeRevision( $this->rev, $this->revString );
$this->sink->writeClosePage( $string );
@@ -873,7 +1084,7 @@ class DumpLatestFilter extends DumpFilter {
}
function writeRevision( $rev, $string ) {
- if( $rev->rev_id == $this->page->page_latest ) {
+ if ( $rev->rev_id == $this->page->page_latest ) {
$this->rev = $rev;
$this->revString = $string;
}
@@ -891,34 +1102,53 @@ class DumpMultiWriter {
}
function writeOpenStream( $string ) {
- for( $i = 0; $i < $this->count; $i++ ) {
+ for ( $i = 0; $i < $this->count; $i++ ) {
$this->sinks[$i]->writeOpenStream( $string );
}
}
function writeCloseStream( $string ) {
- for( $i = 0; $i < $this->count; $i++ ) {
+ for ( $i = 0; $i < $this->count; $i++ ) {
$this->sinks[$i]->writeCloseStream( $string );
}
}
function writeOpenPage( $page, $string ) {
- for( $i = 0; $i < $this->count; $i++ ) {
+ for ( $i = 0; $i < $this->count; $i++ ) {
$this->sinks[$i]->writeOpenPage( $page, $string );
}
}
function writeClosePage( $string ) {
- for( $i = 0; $i < $this->count; $i++ ) {
+ for ( $i = 0; $i < $this->count; $i++ ) {
$this->sinks[$i]->writeClosePage( $string );
}
}
function writeRevision( $rev, $string ) {
- for( $i = 0; $i < $this->count; $i++ ) {
+ for ( $i = 0; $i < $this->count; $i++ ) {
$this->sinks[$i]->writeRevision( $rev, $string );
}
}
+
+ function closeRenameAndReopen( $newnames ) {
+ $this->closeAndRename( $newnames, true );
+ }
+
+ function closeAndRename( $newnames, $open = false ) {
+ for ( $i = 0; $i < $this->count; $i++ ) {
+ $this->sinks[$i]->closeAndRename( $newnames[$i], $open );
+ }
+ }
+
+ function getFilenames() {
+ $filenames = array();
+ for ( $i = 0; $i < $this->count; $i++ ) {
+ $filenames[] = $this->sinks[$i]->getFilenames();
+ }
+ return $filenames;
+ }
+
}
function xmlsafe( $string ) {
diff --git a/includes/ExternalEdit.php b/includes/ExternalEdit.php
index 7109c1ac..bf97c1a5 100644
--- a/includes/ExternalEdit.php
+++ b/includes/ExternalEdit.php
@@ -19,39 +19,54 @@
*
*/
class ExternalEdit {
+ /**
+ * Title to perform the edit on
+ * @var Title
+ */
+ private $title;
- function __construct( $article, $mode ) {
- global $wgInputEncoding;
- $this->mArticle =& $article;
- $this->mTitle =& $article->mTitle;
- $this->mCharset = $wgInputEncoding;
- $this->mMode = $mode;
+ /**
+ * Mode of editing
+ * @var String
+ */
+ private $mode;
+
+ /**
+ * Constructor
+ * @param $title Title object we're performing the edit on
+ * @param $mode String What mode we're using. Only 'file' has any effect
+ */
+ public function __construct( $title, $mode ) {
+ $this->title = $title;
+ $this->mode = $mode;
}
- function edit() {
- global $wgOut, $wgScript, $wgScriptPath, $wgServer, $wgLang;
+ /**
+ * Output the information for the external editor
+ */
+ public function edit() {
+ global $wgOut, $wgScript, $wgScriptPath, $wgCanonicalServer, $wgLang;
$wgOut->disable();
- $name=$this->mTitle->getText();
- $pos=strrpos($name,".")+1;
- header ( "Content-type: application/x-external-editor; charset=".$this->mCharset );
- header( "Cache-control: no-cache" );
+ header( 'Content-type: application/x-external-editor; charset=utf-8' );
+ header( 'Cache-control: no-cache' );
# $type can be "Edit text", "Edit file" or "Diff text" at the moment
# See the protocol specifications at [[m:Help:External editors/Tech]] for
# details.
- if(!isset($this->mMode)) {
- $type="Edit text";
- $url=$this->mTitle->getFullURL("action=edit&internaledit=true");
+ if( $this->mode == "file" ) {
+ $type = "Edit file";
+ $image = wfLocalFile( $this->title );
+ $url = $image->getCanonicalURL();
+ $extension = $image->getExtension();
+ } else {
+ $type = "Edit text";
+ $url = $this->title->getCanonicalURL(
+ array( 'action' => 'edit', 'internaledit' => 'true' ) );
# *.wiki file extension is used by some editors for syntax
# highlighting, so we follow that convention
- $extension="wiki";
- } elseif($this->mMode=="file") {
- $type="Edit file";
- $image = wfLocalFile( $this->mTitle );
- $url = $image->getFullURL();
- $extension=substr($name, $pos);
+ $extension = "wiki";
}
- $special=$wgLang->getNsText(NS_SPECIAL);
+ $special = $wgLang->getNsText( NS_SPECIAL );
$control = <<<CONTROL
; You're seeing this file because you're using Mediawiki's External Editor
; feature. This is probably because you selected use external editor
@@ -61,8 +76,8 @@ class ExternalEdit {
[Process]
Type=$type
Engine=MediaWiki
-Script={$wgServer}{$wgScript}
-Server={$wgServer}
+Script={$wgCanonicalServer}{$wgScript}
+Server={$wgCanonicalServer}
Path={$wgScriptPath}
Special namespace=$special
diff --git a/includes/ExternalStore.php b/includes/ExternalStore.php
index ddb40c32..3bee6ed8 100644
--- a/includes/ExternalStore.php
+++ b/includes/ExternalStore.php
@@ -67,7 +67,7 @@ class ExternalStore {
$class = 'ExternalStore' . ucfirst( $proto );
/* Any custom modules should be added to $wgAutoLoadClasses for on-demand loading */
- if( !class_exists( $class ) ) {
+ if( !MWInit::classExists( $class ) ) {
return false;
}
@@ -78,7 +78,10 @@ class ExternalStore {
* Store a data item to an external store, identified by a partial URL
* The protocol part is used to identify the class, the rest is passed to the
* class itself as a parameter.
- * @return The URL of the stored data item, or false on error
+ * @param $url
+ * @param $data
+ * @param $params array
+ * @return string|false The URL of the stored data item, or false on error
*/
static function insert( $url, $data, $params = array() ) {
list( $proto, $params ) = explode( '://', $url, 2 );
@@ -97,7 +100,7 @@ class ExternalStore {
*
* @param $data String
* @param $storageParams Array: associative array of parameters for the ExternalStore object.
- * @return The URL of the stored data item, or false on error
+ * @return string The URL of the stored data item, or false on error
*/
public static function insertToDefault( $data, $storageParams = array() ) {
global $wgDefaultExternalStore;
@@ -136,7 +139,12 @@ class ExternalStore {
}
}
- /** Like insertToDefault, but inserts on another wiki */
+ /**
+ * @param $data
+ * @param $wiki
+ *
+ * @return string
+ */
public static function insertToForeignDefault( $data, $wiki ) {
return self::insertToDefault( $data, array( 'wiki' => $wiki ) );
}
diff --git a/includes/ExternalStoreDB.php b/includes/ExternalStoreDB.php
index 877277a2..552c3109 100644
--- a/includes/ExternalStoreDB.php
+++ b/includes/ExternalStoreDB.php
@@ -18,7 +18,7 @@ class ExternalStoreDB {
*/
function &getLoadBalancer( $cluster ) {
$wiki = isset($this->mParams['wiki']) ? $this->mParams['wiki'] : false;
-
+
return wfGetLBFactory()->getExternalLB( $cluster, $wiki );
}
@@ -29,8 +29,18 @@ class ExternalStoreDB {
* @return DatabaseBase object
*/
function &getSlave( $cluster ) {
+ global $wgDefaultExternalStore;
+
$wiki = isset($this->mParams['wiki']) ? $this->mParams['wiki'] : false;
$lb =& $this->getLoadBalancer( $cluster );
+
+ if ( !in_array( "DB://" . $cluster, $wgDefaultExternalStore ) ) {
+ wfDebug( "read only external store" );
+ $lb->allowLagged(true);
+ } else {
+ wfDebug( "writable external store" );
+ }
+
return $lb->getConnection( DB_SLAVE, array(), $wiki );
}
@@ -139,8 +149,8 @@ class ExternalStoreDB {
function store( $cluster, $data ) {
$dbw = $this->getMaster( $cluster );
$id = $dbw->nextSequenceValue( 'blob_blob_id_seq' );
- $dbw->insert( $this->getTable( $dbw ),
- array( 'blob_id' => $id, 'blob_text' => $data ),
+ $dbw->insert( $this->getTable( $dbw ),
+ array( 'blob_id' => $id, 'blob_text' => $data ),
__METHOD__ );
$id = $dbw->insertId();
if ( !$id ) {
diff --git a/includes/ExternalUser.php b/includes/ExternalUser.php
index d1eff916..37716390 100644
--- a/includes/ExternalUser.php
+++ b/includes/ExternalUser.php
@@ -98,7 +98,7 @@ abstract class ExternalUser {
* This is a wrapper around newFromId().
*
* @param $user User
- * @return mixed ExternalUser or false
+ * @return ExternalUser|false
*/
public static function newFromUser( $user ) {
global $wgExternalAuthType;
@@ -293,7 +293,7 @@ abstract class ExternalUser {
* @return Mixed User if the account is linked, Null otherwise.
*/
public final function getLocalUser(){
- $dbr = wfGetDb( DB_SLAVE );
+ $dbr = wfGetDB( DB_SLAVE );
$row = $dbr->selectRow(
'external_user',
'*',
diff --git a/includes/FakeTitle.php b/includes/FakeTitle.php
index 21b49bde..515ff387 100644
--- a/includes/FakeTitle.php
+++ b/includes/FakeTitle.php
@@ -6,10 +6,6 @@
class FakeTitle extends Title {
function error() { throw new MWException( "Attempt to call member function of FakeTitle\n" ); }
- // PHP 5.1 method overload
- function __call( $name, $args ) { $this->error(); }
-
- // PHP <5.1 compatibility
function isLocal() { $this->error(); }
function isTrans() { $this->error(); }
function getText() { $this->error(); }
@@ -33,7 +29,7 @@ class FakeTitle extends Title {
function getSubpageText() { $this->error(); }
function getSubpageUrlForm() { $this->error(); }
function getPrefixedURL() { $this->error(); }
- function getFullURL( $query = '', $variant = false ) {$this->error(); }
+ function getFullURL( $query = '', $variant = false ) { $this->error(); }
function getLocalURL( $query = '', $variant = false ) { $this->error(); }
function getLinkUrl( $query = array(), $variant = false ) { $this->error(); }
function escapeLocalURL( $query = '' ) { $this->error(); }
diff --git a/includes/Fallback.php b/includes/Fallback.php
new file mode 100644
index 00000000..2cca1e81
--- /dev/null
+++ b/includes/Fallback.php
@@ -0,0 +1,200 @@
+<?php
+
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+/**
+ * Fallback functions for PHP installed without mbstring support
+ */
+class Fallback {
+
+ public static function iconv( $from, $to, $string ) {
+ if ( substr( $to, -8 ) == '//IGNORE' ) {
+ $to = substr( $to, 0, strlen( $to ) - 8 );
+ }
+ if( strcasecmp( $from, $to ) == 0 ) {
+ return $string;
+ }
+ if( strcasecmp( $from, 'utf-8' ) == 0 ) {
+ return utf8_decode( $string );
+ }
+ if( strcasecmp( $to, 'utf-8' ) == 0 ) {
+ return utf8_encode( $string );
+ }
+ return $string;
+ }
+
+ /**
+ * Fallback implementation for mb_substr, hardcoded to UTF-8.
+ * Attempts to be at least _moderately_ efficient; best optimized
+ * for relatively small offset and count values -- about 5x slower
+ * than native mb_string in my testing.
+ *
+ * Larger offsets are still fairly efficient for Latin text, but
+ * can be up to 100x slower than native if the text is heavily
+ * multibyte and we have to slog through a few hundred kb.
+ *
+ * @param $str
+ * @param $start
+ * @param $count string
+ *
+ * @return string
+ */
+ public static function mb_substr( $str, $start, $count = 'end' ) {
+ if( $start != 0 ) {
+ $split = self::mb_substr_split_unicode( $str, intval( $start ) );
+ $str = substr( $str, $split );
+ }
+
+ if( $count !== 'end' ) {
+ $split = self::mb_substr_split_unicode( $str, intval( $count ) );
+ $str = substr( $str, 0, $split );
+ }
+
+ return $str;
+ }
+
+ public static function mb_substr_split_unicode( $str, $splitPos ) {
+ if( $splitPos == 0 ) {
+ return 0;
+ }
+
+ $byteLen = strlen( $str );
+
+ if( $splitPos > 0 ) {
+ if( $splitPos > 256 ) {
+ // Optimize large string offsets by skipping ahead N bytes.
+ // This will cut out most of our slow time on Latin-based text,
+ // and 1/2 to 1/3 on East European and Asian scripts.
+ $bytePos = $splitPos;
+ while ( $bytePos < $byteLen && $str[$bytePos] >= "\x80" && $str[$bytePos] < "\xc0" ) {
+ ++$bytePos;
+ }
+ $charPos = mb_strlen( substr( $str, 0, $bytePos ) );
+ } else {
+ $charPos = 0;
+ $bytePos = 0;
+ }
+
+ while( $charPos++ < $splitPos ) {
+ ++$bytePos;
+ // Move past any tail bytes
+ while ( $bytePos < $byteLen && $str[$bytePos] >= "\x80" && $str[$bytePos] < "\xc0" ) {
+ ++$bytePos;
+ }
+ }
+ } else {
+ $splitPosX = $splitPos + 1;
+ $charPos = 0; // relative to end of string; we don't care about the actual char position here
+ $bytePos = $byteLen;
+ while( $bytePos > 0 && $charPos-- >= $splitPosX ) {
+ --$bytePos;
+ // Move past any tail bytes
+ while ( $bytePos > 0 && $str[$bytePos] >= "\x80" && $str[$bytePos] < "\xc0" ) {
+ --$bytePos;
+ }
+ }
+ }
+
+ return $bytePos;
+ }
+
+ /**
+ * Fallback implementation of mb_strlen, hardcoded to UTF-8.
+ * @param string $str
+ * @param string $enc optional encoding; ignored
+ * @return int
+ */
+ public static function mb_strlen( $str, $enc = '' ) {
+ $counts = count_chars( $str );
+ $total = 0;
+
+ // Count ASCII bytes
+ for( $i = 0; $i < 0x80; $i++ ) {
+ $total += $counts[$i];
+ }
+
+ // Count multibyte sequence heads
+ for( $i = 0xc0; $i < 0xff; $i++ ) {
+ $total += $counts[$i];
+ }
+ return $total;
+ }
+
+
+ /**
+ * Fallback implementation of mb_strpos, hardcoded to UTF-8.
+ * @param $haystack String
+ * @param $needle String
+ * @param $offset String: optional start position
+ * @param $encoding String: optional encoding; ignored
+ * @return int
+ */
+ public static function mb_strpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
+ $needle = preg_quote( $needle, '/' );
+
+ $ar = array();
+ preg_match( '/' . $needle . '/u', $haystack, $ar, PREG_OFFSET_CAPTURE, $offset );
+
+ if( isset( $ar[0][1] ) ) {
+ return $ar[0][1];
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Fallback implementation of mb_strrpos, hardcoded to UTF-8.
+ * @param $haystack String
+ * @param $needle String
+ * @param $offset String: optional start position
+ * @param $encoding String: optional encoding; ignored
+ * @return int
+ */
+ public static function mb_strrpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
+ $needle = preg_quote( $needle, '/' );
+
+ $ar = array();
+ preg_match_all( '/' . $needle . '/u', $haystack, $ar, PREG_OFFSET_CAPTURE, $offset );
+
+ if( isset( $ar[0] ) && count( $ar[0] ) > 0 &&
+ isset( $ar[0][count( $ar[0] ) - 1][1] ) ) {
+ return $ar[0][count( $ar[0] ) - 1][1];
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Fallback implementation of stream_resolve_include_path()
+ * Native stream_resolve_include_path is available for PHP 5 >= 5.3.2
+ * @param $filename String
+ * @return String
+ */
+ public static function stream_resolve_include_path( $filename ) {
+ $pathArray = explode( PATH_SEPARATOR, get_include_path() );
+ foreach ( $pathArray as $path ) {
+ $fullFilename = $path . DIRECTORY_SEPARATOR . $filename;
+ if ( file_exists( $fullFilename ) ) {
+ return $fullFilename;
+ }
+ }
+ return false;
+ }
+
+}
diff --git a/includes/Feed.php b/includes/Feed.php
index bc20a9dc..ef33c78f 100644
--- a/includes/Feed.php
+++ b/includes/Feed.php
@@ -36,9 +36,8 @@
* @ingroup Feed
*/
class FeedItem {
- /**#@+
- * @var string
- * @private
+ /**
+ * @var Title
*/
var $Title = 'Wiki';
var $Description = '';
@@ -47,12 +46,11 @@ class FeedItem {
var $Author = '';
var $UniqueId = '';
var $RSSIsPermalink;
- /**#@-*/
/**
* Constructor
*
- * @param $Title String: Item's title
+ * @param $Title String|Title Item's title
* @param $Description String
* @param $Url String: URL uniquely designating the item.
* @param $Date String: Item's date
@@ -71,6 +69,15 @@ class FeedItem {
}
/**
+ * Get the last touched timestamp
+ *
+ * @return String last-touched timestamp
+ */
+ public function getLastMod() {
+ return $this->Title->getTouched();
+ }
+
+ /**
* Encode $string so that it can be safely embedded in a XML document
*
* @param $string String: string to encode
@@ -99,7 +106,7 @@ class FeedItem {
* @param $uniqueId String: unique id for the item
* @param $RSSisPermalink Boolean: set to true if the guid (unique id) is a permalink (RSS feeds only)
*/
- public function setUniqueId($uniqueId, $RSSisPermalink = False) {
+ public function setUniqueId($uniqueId, $RSSisPermalink = false) {
$this->UniqueId = $uniqueId;
$this->RSSIsPermalink = $RSSisPermalink;
}
@@ -114,6 +121,16 @@ class FeedItem {
}
/**
+ * Get the DB prefixed title
+ *
+ * @return String the prefixed title, with underscores and
+ * any interwiki and namespace prefixes
+ */
+ public function getDBPrefixedTitle() {
+ return $this->Title->getPrefixedDBKey();
+ }
+
+ /**
* Get the URL of this item; already xml-encoded
*
* @return String
@@ -222,12 +239,15 @@ class ChannelFeed extends FeedItem {
* but can also be called separately.
*/
public function httpHeaders() {
- global $wgOut;
+ global $wgOut, $wgVaryOnXFP;
# We take over from $wgOut, excepting its cache header info
$wgOut->disable();
$mimetype = $this->contentType();
header( "Content-type: $mimetype; charset=UTF-8" );
+ if ( $wgVaryOnXFP ) {
+ $wgOut->addVaryHeader( 'X-Forwarded-Proto' );
+ }
$wgOut->sendCacheControl();
}
@@ -256,7 +276,7 @@ class ChannelFeed extends FeedItem {
$this->httpHeaders();
echo '<?xml version="1.0"?>' . "\n";
echo '<?xml-stylesheet type="text/css" href="' .
- htmlspecialchars( wfExpandUrl( "$wgStylePath/common/feed.css?$wgStyleVersion" ) ) .
+ htmlspecialchars( wfExpandUrl( "$wgStylePath/common/feed.css?$wgStyleVersion", PROTO_CURRENT ) ) .
'"?' . ">\n";
}
}
@@ -288,7 +308,7 @@ class RSSFeed extends ChannelFeed {
?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
<title><?php print $this->getTitle() ?></title>
- <link><?php print $this->getUrl() ?></link>
+ <link><?php print wfExpandUrl( $this->getUrl(), PROTO_CURRENT ) ?></link>
<description><?php print $this->getDescription() ?></description>
<language><?php print $this->getLanguage() ?></language>
<generator>MediaWiki <?php print $wgVersion ?></generator>
@@ -304,12 +324,12 @@ class RSSFeed extends ChannelFeed {
?>
<item>
<title><?php print $item->getTitle() ?></title>
- <link><?php print $item->getUrl() ?></link>
+ <link><?php print wfExpandUrl( $item->getUrl(), PROTO_CURRENT ) ?></link>
<guid<?php if( !$item->RSSIsPermalink ) print ' isPermaLink="false"' ?>><?php print $item->getUniqueId() ?></guid>
<description><?php print $item->getDescription() ?></description>
<?php if( $item->getDate() ) { ?><pubDate><?php print $this->formatTime( $item->getDate() ) ?></pubDate><?php } ?>
<?php if( $item->getAuthor() ) { ?><dc:creator><?php print $item->getAuthor() ?></dc:creator><?php }?>
- <?php if( $item->getComments() ) { ?><comments><?php print $item->getComments() ?></comments><?php }?>
+ <?php if( $item->getComments() ) { ?><comments><?php print wfExpandUrl( $item->getComments(), PROTO_CURRENT ) ?></comments><?php }?>
</item>
<?php
}
@@ -348,8 +368,8 @@ class AtomFeed extends ChannelFeed {
?><feed xmlns="http://www.w3.org/2005/Atom" xml:lang="<?php print $this->getLanguage() ?>">
<id><?php print $this->getFeedId() ?></id>
<title><?php print $this->getTitle() ?></title>
- <link rel="self" type="application/atom+xml" href="<?php print $this->getSelfUrl() ?>"/>
- <link rel="alternate" type="text/html" href="<?php print $this->getUrl() ?>"/>
+ <link rel="self" type="application/atom+xml" href="<?php print wfExpandUrl( $this->getSelfUrl(), PROTO_CURRENT ) ?>"/>
+ <link rel="alternate" type="text/html" href="<?php print wfExpandUrl( $this->getUrl(), PROTO_CURRENT ) ?>"/>
<updated><?php print $this->formatTime( wfTimestampNow() ) ?>Z</updated>
<subtitle><?php print $this->getDescription() ?></subtitle>
<generator>MediaWiki <?php print $wgVersion ?></generator>
@@ -390,7 +410,7 @@ class AtomFeed extends ChannelFeed {
<entry>
<id><?php print $item->getUniqueId() ?></id>
<title><?php print $item->getTitle() ?></title>
- <link rel="alternate" type="<?php print $wgMimeType ?>" href="<?php print $item->getUrl() ?>"/>
+ <link rel="alternate" type="<?php print $wgMimeType ?>" href="<?php print wfExpandUrl( $item->getUrl(), PROTO_CURRENT ) ?>"/>
<?php if( $item->getDate() ) { ?>
<updated><?php print $this->formatTime( $item->getDate() ) ?>Z</updated>
<?php } ?>
@@ -399,9 +419,9 @@ class AtomFeed extends ChannelFeed {
<?php if( $item->getAuthor() ) { ?><author><name><?php print $item->getAuthor() ?></name></author><?php }?>
</entry>
-<?php /* FIXME need to add comments
+<?php /* @todo FIXME: Need to add comments
<?php if( $item->getComments() ) { ?><dc:comment><?php print $item->getComments() ?></dc:comment><?php }?>
- */
+ */
}
/**
diff --git a/includes/FeedUtils.php b/includes/FeedUtils.php
index 9daffc12..4502c3a8 100644
--- a/includes/FeedUtils.php
+++ b/includes/FeedUtils.php
@@ -112,7 +112,7 @@ class FeedUtils {
# $wgLang->date( $timestamp ),
# $wgLang->time( $timestamp ) ),
# wfMsg( 'currentrev' ) );
-
+
// Don't bother generating the diff if we won't be able to show it
if ( $wgFeedDiffCutoff > 0 ) {
$de = new DifferenceEngine( $title, $oldid, $newid );
diff --git a/includes/FileDeleteForm.php b/includes/FileDeleteForm.php
index 030330bb..515768ff 100644
--- a/includes/FileDeleteForm.php
+++ b/includes/FileDeleteForm.php
@@ -118,25 +118,21 @@ class FileDeleteForm {
} else {
$id = $title->getArticleID( Title::GAID_FOR_UPDATE );
$article = new Article( $title );
- $error = '';
$dbw = wfGetDB( DB_MASTER );
try {
- if( wfRunHooks( 'ArticleDelete', array( &$article, &$wgUser, &$reason, &$error ) ) ) {
- // delete the associated article first
- if( $article->doDeleteArticle( $reason, $suppress, $id, false ) ) {
- global $wgRequest;
- if( $wgRequest->getCheck( 'wpWatch' ) && $wgUser->isLoggedIn() ) {
- $article->doWatch();
- } elseif( $title->userIsWatching() ) {
- $article->doUnwatch();
- }
- $status = $file->delete( $reason, $suppress );
- if( $status->ok ) {
- $dbw->commit();
- wfRunHooks( 'ArticleDeleteComplete', array( &$article, &$wgUser, $reason, $id ) );
- } else {
- $dbw->rollback();
- }
+ // delete the associated article first
+ if( $article->doDeleteArticle( $reason, $suppress, $id, false ) ) {
+ global $wgRequest;
+ if ( $wgRequest->getCheck( 'wpWatch' ) && $wgUser->isLoggedIn() ) {
+ WatchAction::doWatch( $title, $wgUser );
+ } elseif ( $title->userIsWatching() ) {
+ WatchAction::doUnwatch( $title, $wgUser );
+ }
+ $status = $file->delete( $reason, $suppress );
+ if( $status->ok ) {
+ $dbw->commit();
+ } else {
+ $dbw->rollback();
}
}
} catch ( MWException $e ) {
@@ -257,15 +253,15 @@ class FileDeleteForm {
return wfMsgExt(
"{$message}-old", # To ensure grep will find them: 'filedelete-intro-old', 'filedelete-nofile-old', 'filedelete-success-old'
'parse',
- $this->title->getText(),
+ wfEscapeWikiText( $this->title->getText() ),
$wgLang->date( $this->getTimestamp(), true ),
$wgLang->time( $this->getTimestamp(), true ),
- wfExpandUrl( $this->file->getArchiveUrl( $this->oldimage ) ) );
+ wfExpandUrl( $this->file->getArchiveUrl( $this->oldimage ), PROTO_CURRENT ) );
} else {
return wfMsgExt(
$message,
'parse',
- $this->title->getText()
+ wfEscapeWikiText( $this->title->getText() )
);
}
}
diff --git a/includes/FileRevertForm.php b/includes/FileRevertForm.php
deleted file mode 100644
index 47084aad..00000000
--- a/includes/FileRevertForm.php
+++ /dev/null
@@ -1,180 +0,0 @@
-<?php
-
-/**
- * File reversion user interface
- *
- * @ingroup Media
- * @author Rob Church <robchur@gmail.com>
- */
-class FileRevertForm {
-
- protected $title = null;
- protected $file = null;
- protected $archiveName = '';
- protected $timestamp = false;
- protected $oldFile;
-
- /**
- * Constructor
- *
- * @param $file File we're reverting
- */
- public function __construct( $file ) {
- $this->title = $file->getTitle();
- $this->file = $file;
- }
-
- /**
- * Fulfil the request; shows the form or reverts the file,
- * pending authentication, confirmation, etc.
- */
- public function execute() {
- global $wgOut, $wgRequest, $wgUser, $wgLang;
- $this->setHeaders();
-
- if( wfReadOnly() ) {
- $wgOut->readOnlyPage();
- return;
- } elseif( !$wgUser->isLoggedIn() ) {
- $wgOut->showErrorPage( 'uploadnologin', 'uploadnologintext' );
- return;
- } elseif( !$this->title->userCan( 'edit' ) || !$this->title->userCan( 'upload' ) ) {
- // The standard read-only thing doesn't make a whole lot of sense
- // here; surely it should show the image or something? -- RC
- $article = new Article( $this->title );
- $wgOut->readOnlyPage( $article->getContent(), true );
- return;
- } elseif( $wgUser->isBlocked() ) {
- $wgOut->blockedPage();
- return;
- }
-
- $this->archiveName = $wgRequest->getText( 'oldimage' );
- $token = $wgRequest->getText( 'wpEditToken' );
- if( !$this->isValidOldSpec() ) {
- $wgOut->showUnexpectedValueError( 'oldimage', htmlspecialchars( $this->archiveName ) );
- return;
- }
-
- if( !$this->haveOldVersion() ) {
- $wgOut->addHTML( wfMsgExt( 'filerevert-badversion', 'parse' ) );
- $wgOut->returnToMain( false, $this->title );
- return;
- }
-
- // Perform the reversion if appropriate
- if( $wgRequest->wasPosted() && $wgUser->matchEditToken( $token, $this->archiveName ) ) {
- $source = $this->file->getArchiveVirtualUrl( $this->archiveName );
- $comment = $wgRequest->getText( 'wpComment' );
- // TODO: Preserve file properties from database instead of reloading from file
- $status = $this->file->upload( $source, $comment, $comment );
- if( $status->isGood() ) {
- $wgOut->addHTML( wfMsgExt( 'filerevert-success', 'parse', $this->title->getText(),
- $wgLang->date( $this->getTimestamp(), true ),
- $wgLang->time( $this->getTimestamp(), true ),
- wfExpandUrl( $this->file->getArchiveUrl( $this->archiveName ) ) ) );
- $wgOut->returnToMain( false, $this->title );
- } else {
- $wgOut->addWikiText( $status->getWikiText() );
- }
- return;
- }
-
- // Show the form
- $this->showForm();
- }
-
- /**
- * Show the confirmation form
- */
- protected function showForm() {
- global $wgOut, $wgUser, $wgLang, $wgContLang;
- $timestamp = $this->getTimestamp();
-
- $form = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getAction() ) );
- $form .= Html::hidden( 'wpEditToken', $wgUser->editToken( $this->archiveName ) );
- $form .= '<fieldset><legend>' . wfMsgHtml( 'filerevert-legend' ) . '</legend>';
- $form .= wfMsgExt( 'filerevert-intro', 'parse', $this->title->getText(),
- $wgLang->date( $timestamp, true ), $wgLang->time( $timestamp, true ),
- wfExpandUrl( $this->file->getArchiveUrl( $this->archiveName ) ) );
- $form .= '<p>' . Xml::inputLabel( wfMsg( 'filerevert-comment' ), 'wpComment', 'wpComment',
- 60, wfMsgForContent( 'filerevert-defaultcomment',
- $wgContLang->date( $timestamp, false, false ), $wgContLang->time( $timestamp, false, false ) ) ) . '</p>';
- $form .= '<p>' . Xml::submitButton( wfMsg( 'filerevert-submit' ) ) . '</p>';
- $form .= '</fieldset>';
- $form .= '</form>';
-
- $wgOut->addHTML( $form );
- }
-
- /**
- * Set headers, titles and other bits
- */
- protected function setHeaders() {
- global $wgOut, $wgUser;
- $wgOut->setPageTitle( wfMsg( 'filerevert', $this->title->getText() ) );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->setSubtitle( wfMsg(
- 'filerevert-backlink',
- $wgUser->getSkin()->link(
- $this->title,
- null,
- array(),
- array(),
- array( 'known', 'noclasses' )
- )
- ) );
- }
-
- /**
- * Is the provided `oldimage` value valid?
- *
- * @return bool
- */
- protected function isValidOldSpec() {
- return strlen( $this->archiveName ) >= 16
- && strpos( $this->archiveName, '/' ) === false
- && strpos( $this->archiveName, '\\' ) === false;
- }
-
- /**
- * Does the provided `oldimage` value correspond
- * to an existing, local, old version of this file?
- *
- * @return bool
- */
- protected function haveOldVersion() {
- return $this->getOldFile()->exists();
- }
-
- /**
- * Prepare the form action
- *
- * @return string
- */
- protected function getAction() {
- $q = array();
- $q[] = 'action=revert';
- $q[] = 'oldimage=' . urlencode( $this->archiveName );
- return $this->title->getLocalUrl( implode( '&', $q ) );
- }
-
- /**
- * Extract the timestamp of the old version
- *
- * @return string
- */
- protected function getTimestamp() {
- if( $this->timestamp === false ) {
- $this->timestamp = $this->getOldFile()->getTimestamp();
- }
- return $this->timestamp;
- }
-
- protected function getOldFile() {
- if ( !isset( $this->oldFile ) ) {
- $this->oldFile = RepoGroup::singleton()->getLocalRepo()->newFromArchiveName( $this->title, $this->archiveName );
- }
- return $this->oldFile;
- }
-}
diff --git a/includes/ForkController.php b/includes/ForkController.php
index e5b44c2b..d87dfb1e 100644
--- a/includes/ForkController.php
+++ b/includes/ForkController.php
@@ -115,15 +115,17 @@ class ForkController {
}
protected function prepareEnvironment() {
- global $wgCaches, $wgMemc;
+ global $wgMemc;
// Don't share DB or memcached connections
wfGetLBFactory()->destroyInstance();
- $wgCaches = array();
+ ObjectCache::clear();
unset( $wgMemc );
}
/**
* Fork a number of worker processes.
+ *
+ * return string
*/
protected function forkWorkers( $numProcs ) {
$this->prepareEnvironment();
diff --git a/includes/FormOptions.php b/includes/FormOptions.php
index 2442a330..b668ff46 100644
--- a/includes/FormOptions.php
+++ b/includes/FormOptions.php
@@ -1,19 +1,38 @@
<?php
/**
* Helper class to keep track of options when mixing links and form elements.
+ * @todo This badly need some examples and tests :-)
*
- * Copyright © 2008, Niklas Laxström
+ * Copyright © 2008, Niklas Laxstiröm
+ *
+ * Copyright © 2011, Ashar Voultoiz
*
* @author Niklas Laxström
+ * @author Ashar Voultoiz
*/
class FormOptions implements ArrayAccess {
- const AUTO = -1; // ! Automatically detects simple data types
+ /** @name Type constants
+ * Used internally to map an option value to a WebRequest accessor
+ */
+ /* @{ */
+ /** Mark value for automatic detection (for simple data types only) */
+ const AUTO = -1;
+ /** String type, maps guessType() to WebRequest::getText() */
const STRING = 0;
+ /** Integer type, maps guessType() to WebRequest::getInt() */
const INT = 1;
+ /** Boolean type, maps guessType() to WebRequest::getBool() */
const BOOL = 2;
- const INTNULL = 3; // ! Useful for namespace selector
-
+ /** Integer type or null, maps to WebRequest::getIntOrNull()
+ * This is useful for the namespace selector.
+ */
+ const INTNULL = 3;
+ /* @} */
+
+ /**
+ * @todo Document!
+ */
protected $options = array();
# Setting up
@@ -38,6 +57,16 @@ class FormOptions implements ArrayAccess {
unset( $this->options[$name] );
}
+ /**
+ * Used to find out which type the data is.
+ * All types are defined in the 'Type constants' section of this class
+ * Please note we do not support detection of INTNULL MediaWiki type
+ * which will be assumed as INT if the data is an integer.
+ *
+ * @param $data Mixed: value to guess type for
+ * @exception MWException Unsupported datatype
+ * @return Type constant
+ */
public static function guessType( $data ) {
if ( is_bool( $data ) ) {
return self::BOOL;
@@ -52,6 +81,13 @@ class FormOptions implements ArrayAccess {
# Handling values
+ /**
+ * Verify the given option name exist.
+ *
+ * @param $name String: option name
+ * @param $strict Boolean: throw an exception when the option does not exist (default false)
+ * @return Boolean: true if option exist, false otherwise
+ */
public function validateName( $name, $strict = false ) {
if ( !isset( $this->options[$name] ) ) {
if ( $strict ) {
@@ -63,6 +99,14 @@ class FormOptions implements ArrayAccess {
return true;
}
+ /**
+ * Use to set the value of an option.
+ *
+ * @param $name String: option name
+ * @param $value Mixed: value for the option
+ * @param $force Boolean: whether to set the value when it is equivalent to the default value for this option (default false).
+ * @return null
+ */
public function setValue( $name, $value, $force = false ) {
$this->validateName( $name, true );
@@ -74,12 +118,24 @@ class FormOptions implements ArrayAccess {
}
}
+ /**
+ * Get the value for the given option name.
+ * Internally use getValueReal()
+ *
+ * @param $name String: option name
+ * @return Mixed
+ */
public function getValue( $name ) {
$this->validateName( $name, true );
return $this->getValueReal( $this->options[$name] );
}
+ /**
+ * @todo Document
+ * @param $option Array: array structure describing the option
+ * @return Mixed. Value or the default value if it is null
+ */
protected function getValueReal( $option ) {
if ( $option['value'] !== null ) {
return $option['value'];
@@ -88,11 +144,22 @@ class FormOptions implements ArrayAccess {
}
}
+ /**
+ * Delete the option value.
+ * This will make future calls to getValue() return the default value.
+ * @param $name String: option name
+ * @return null
+ */
public function reset( $name ) {
$this->validateName( $name, true );
$this->options[$name]['value'] = null;
}
+ /**
+ * @todo Document
+ * @param $name String: option name
+ * @return null
+ */
public function consumeValue( $name ) {
$this->validateName( $name, true );
$this->options[$name]['consumed'] = true;
@@ -100,6 +167,11 @@ class FormOptions implements ArrayAccess {
return $this->getValueReal( $this->options[$name] );
}
+ /**
+ * @todo Document
+ * @param $names Array: array of option names
+ * @return null
+ */
public function consumeValues( /*Array*/ $names ) {
$out = array();
@@ -112,8 +184,16 @@ class FormOptions implements ArrayAccess {
return $out;
}
- # Validating values
-
+ /**
+ * Validate and set an option integer value
+ * The value will be altered to fit in the range.
+ *
+ * @param $name String: option name
+ * @param $min Int: minimum value
+ * @param $max Int: maximum value
+ * @exception MWException Option is not of type int
+ * @return null
+ */
public function validateIntBounds( $name, $min, $max ) {
$this->validateName( $name, true );
@@ -127,8 +207,11 @@ class FormOptions implements ArrayAccess {
$this->setValue( $name, $value );
}
- # Getting the data out for use
-
+ /**
+ * Getting the data out for use
+ * @param $all Boolean: whether to include unchanged options (default: false)
+ * @return Array
+ */
public function getUnconsumedValues( $all = false ) {
$values = array();
@@ -143,6 +226,10 @@ class FormOptions implements ArrayAccess {
return $values;
}
+ /**
+ * Return options modified as an array ( name => value )
+ * @return Array
+ */
public function getChangedValues() {
$values = array();
@@ -155,6 +242,10 @@ class FormOptions implements ArrayAccess {
return $values;
}
+ /**
+ * Format options to an array ( name => value)
+ * @return Array
+ */
public function getAllValues() {
$values = array();
@@ -195,20 +286,26 @@ class FormOptions implements ArrayAccess {
}
}
- /* ArrayAccess methods */
+ /** @name ArrayAccess functions
+ * Those function implements PHP ArrayAccess interface
+ * @see http://php.net/manual/en/class.arrayaccess.php
+ */
+ /* @{ */
+ /** Whether option exist*/
public function offsetExists( $name ) {
return isset( $this->options[$name] );
}
-
+ /** Retrieve an option value */
public function offsetGet( $name ) {
return $this->getValue( $name );
}
-
+ /** Set an option to given value */
public function offsetSet( $name, $value ) {
$this->setValue( $name, $value );
}
-
+ /** Delete the option */
public function offsetUnset( $name ) {
$this->delete( $name );
}
+ /* @} */
}
diff --git a/includes/GenderCache.php b/includes/GenderCache.php
new file mode 100644
index 00000000..a17ac024
--- /dev/null
+++ b/includes/GenderCache.php
@@ -0,0 +1,135 @@
+<?php
+
+/**
+ * Caches user genders when needed to use correct namespace aliases.
+ * @author Niklas Laxström
+ * @since 1.18
+ */
+class GenderCache {
+ protected $cache = array();
+ protected $default;
+ protected $misses = 0;
+ protected $missLimit = 1000;
+
+ /**
+ * @return GenderCache
+ */
+ public static function singleton() {
+ static $that = null;
+ if ( $that === null ) {
+ $that = new self();
+ }
+ return $that;
+ }
+
+ protected function __construct() {}
+
+ /**
+ * Returns the default gender option in this wiki.
+ * @return String
+ */
+ protected function getDefault() {
+ if ( $this->default === null ) {
+ $this->default = User::getDefaultOption( 'gender' );
+ }
+ return $this->default;
+ }
+
+ /**
+ * Returns the gender for given username.
+ * @param $username String: username
+ * @param $caller String: the calling method
+ * @return String
+ */
+ public function getGenderOf( $username, $caller = '' ) {
+ global $wgUser;
+
+ $username = strtr( $username, '_', ' ' );
+ if ( !isset( $this->cache[$username] ) ) {
+
+ if ( $this->misses >= $this->missLimit && $wgUser->getName() !== $username ) {
+ if( $this->misses === $this->missLimit ) {
+ $this->misses++;
+ wfDebug( __METHOD__ . ": too many misses, returning default onwards\n" );
+ }
+ return $this->getDefault();
+
+ } else {
+ $this->misses++;
+ if ( !User::isValidUserName( $username ) ) {
+ $this->cache[$username] = $this->getDefault();
+ } else {
+ $this->doQuery( $username, $caller );
+ }
+ }
+
+ }
+
+ /* Undefined if there is a valid username which for some reason doesn't
+ * exist in the database.
+ */
+ return isset( $this->cache[$username] ) ? $this->cache[$username] : $this->getDefault();
+ }
+
+ /**
+ * Wrapper for doQuery that processes raw LinkBatch data.
+ *
+ * @param $data
+ * @param $caller
+ */
+ public function doLinkBatch( $data, $caller = '' ) {
+ $users = array();
+ foreach ( $data as $ns => $pagenames ) {
+ if ( !MWNamespace::hasGenderDistinction( $ns ) ) continue;
+ foreach ( array_keys( $pagenames ) as $username ) {
+ if ( isset( $this->cache[$username] ) ) continue;
+ $users[$username] = true;
+ }
+ }
+
+ $this->doQuery( array_keys( $users ), $caller );
+ }
+
+ /**
+ * Preloads genders for given list of users.
+ * @param $users List|String: usernames
+ * @param $caller String: the calling method
+ */
+ public function doQuery( $users, $caller = '' ) {
+ $default = $this->getDefault();
+
+ foreach ( (array) $users as $index => $value ) {
+ $name = strtr( $value, '_', ' ' );
+ if ( isset( $this->cache[$name] ) ) {
+ // Skip users whose gender setting we already know
+ unset( $users[$index] );
+ } else {
+ $users[$index] = $name;
+ // For existing users, this value will be overwritten by the correct value
+ $this->cache[$name] = $default;
+ }
+ }
+
+ if ( count( $users ) === 0 ) {
+ return false;
+ }
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $table = array( 'user', 'user_properties' );
+ $fields = array( 'user_name', 'up_value' );
+ $conds = array( 'user_name' => $users );
+ $joins = array( 'user_properties' =>
+ array( 'LEFT JOIN', array( 'user_id = up_user', 'up_property' => 'gender' ) ) );
+
+ $comment = __METHOD__;
+ if ( strval( $caller ) !== '' ) {
+ $comment .= "/$caller";
+ }
+ $res = $dbr->select( $table, $fields, $conds, $comment, $joins, $joins );
+
+ foreach ( $res as $row ) {
+ $this->cache[$row->user_name] = $row->up_value ? $row->up_value : $default;
+ }
+ }
+
+}
diff --git a/includes/GlobalFunctions.php b/includes/GlobalFunctions.php
index 2c35568b..3424211f 100644
--- a/includes/GlobalFunctions.php
+++ b/includes/GlobalFunctions.php
@@ -8,188 +8,68 @@ if ( !defined( 'MEDIAWIKI' ) ) {
die( "This file is part of MediaWiki, it is not a valid entry point" );
}
-require_once dirname( __FILE__ ) . '/normal/UtfNormalUtil.php';
-
// Hide compatibility functions from Doxygen
/// @cond
/**
* Compatibility functions
*
- * We support PHP 5.1.x and up.
+ * We support PHP 5.2.3 and up.
* Re-implementations of newer functions or functions in non-standard
* PHP extensions may be included here.
*/
+
if( !function_exists( 'iconv' ) ) {
- # iconv support is not in the default configuration and so may not be present.
- # Assume will only ever use utf-8 and iso-8859-1.
- # This will *not* work in all circumstances.
+ /** @codeCoverageIgnore */
function iconv( $from, $to, $string ) {
- if ( substr( $to, -8 ) == '//IGNORE' ) {
- $to = substr( $to, 0, strlen( $to ) - 8 );
- }
- if( strcasecmp( $from, $to ) == 0 ) {
- return $string;
- }
- if( strcasecmp( $from, 'utf-8' ) == 0 ) {
- return utf8_decode( $string );
- }
- if( strcasecmp( $to, 'utf-8' ) == 0 ) {
- return utf8_encode( $string );
- }
- return $string;
+ return Fallback::iconv( $from, $to, $string );
}
}
if ( !function_exists( 'mb_substr' ) ) {
- /**
- * Fallback implementation for mb_substr, hardcoded to UTF-8.
- * Attempts to be at least _moderately_ efficient; best optimized
- * for relatively small offset and count values -- about 5x slower
- * than native mb_string in my testing.
- *
- * Larger offsets are still fairly efficient for Latin text, but
- * can be up to 100x slower than native if the text is heavily
- * multibyte and we have to slog through a few hundred kb.
- */
+ /** @codeCoverageIgnore */
function mb_substr( $str, $start, $count='end' ) {
- if( $start != 0 ) {
- $split = mb_substr_split_unicode( $str, intval( $start ) );
- $str = substr( $str, $split );
- }
-
- if( $count !== 'end' ) {
- $split = mb_substr_split_unicode( $str, intval( $count ) );
- $str = substr( $str, 0, $split );
- }
-
- return $str;
+ return Fallback::mb_substr( $str, $start, $count );
}
+ /** @codeCoverageIgnore */
function mb_substr_split_unicode( $str, $splitPos ) {
- if( $splitPos == 0 ) {
- return 0;
- }
-
- $byteLen = strlen( $str );
-
- if( $splitPos > 0 ) {
- if( $splitPos > 256 ) {
- // Optimize large string offsets by skipping ahead N bytes.
- // This will cut out most of our slow time on Latin-based text,
- // and 1/2 to 1/3 on East European and Asian scripts.
- $bytePos = $splitPos;
- while ( $bytePos < $byteLen && $str{$bytePos} >= "\x80" && $str{$bytePos} < "\xc0" ) {
- ++$bytePos;
- }
- $charPos = mb_strlen( substr( $str, 0, $bytePos ) );
- } else {
- $charPos = 0;
- $bytePos = 0;
- }
-
- while( $charPos++ < $splitPos ) {
- ++$bytePos;
- // Move past any tail bytes
- while ( $bytePos < $byteLen && $str{$bytePos} >= "\x80" && $str{$bytePos} < "\xc0" ) {
- ++$bytePos;
- }
- }
- } else {
- $splitPosX = $splitPos + 1;
- $charPos = 0; // relative to end of string; we don't care about the actual char position here
- $bytePos = $byteLen;
- while( $bytePos > 0 && $charPos-- >= $splitPosX ) {
- --$bytePos;
- // Move past any tail bytes
- while ( $bytePos > 0 && $str{$bytePos} >= "\x80" && $str{$bytePos} < "\xc0" ) {
- --$bytePos;
- }
- }
- }
-
- return $bytePos;
+ return Fallback::mb_substr_split_unicode( $str, $splitPos );
}
}
if ( !function_exists( 'mb_strlen' ) ) {
- /**
- * Fallback implementation of mb_strlen, hardcoded to UTF-8.
- * @param string $str
- * @param string $enc optional encoding; ignored
- * @return int
- */
+ /** @codeCoverageIgnore */
function mb_strlen( $str, $enc = '' ) {
- $counts = count_chars( $str );
- $total = 0;
-
- // Count ASCII bytes
- for( $i = 0; $i < 0x80; $i++ ) {
- $total += $counts[$i];
- }
-
- // Count multibyte sequence heads
- for( $i = 0xc0; $i < 0xff; $i++ ) {
- $total += $counts[$i];
- }
- return $total;
+ return Fallback::mb_strlen( $str, $enc );
}
}
-
if( !function_exists( 'mb_strpos' ) ) {
- /**
- * Fallback implementation of mb_strpos, hardcoded to UTF-8.
- * @param $haystack String
- * @param $needle String
- * @param $offset String: optional start position
- * @param $encoding String: optional encoding; ignored
- * @return int
- */
+ /** @codeCoverageIgnore */
function mb_strpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
- $needle = preg_quote( $needle, '/' );
-
- $ar = array();
- preg_match( '/' . $needle . '/u', $haystack, $ar, PREG_OFFSET_CAPTURE, $offset );
-
- if( isset( $ar[0][1] ) ) {
- return $ar[0][1];
- } else {
- return false;
- }
+ return Fallback::mb_strpos( $haystack, $needle, $offset, $encoding );
}
+
}
if( !function_exists( 'mb_strrpos' ) ) {
- /**
- * Fallback implementation of mb_strrpos, hardcoded to UTF-8.
- * @param $haystack String
- * @param $needle String
- * @param $offset String: optional start position
- * @param $encoding String: optional encoding; ignored
- * @return int
- */
+ /** @codeCoverageIgnore */
function mb_strrpos( $haystack, $needle, $offset = 0, $encoding = '' ) {
- $needle = preg_quote( $needle, '/' );
-
- $ar = array();
- preg_match_all( '/' . $needle . '/u', $haystack, $ar, PREG_OFFSET_CAPTURE, $offset );
-
- if( isset( $ar[0] ) && count( $ar[0] ) > 0 &&
- isset( $ar[0][count( $ar[0] ) - 1][1] ) ) {
- return $ar[0][count( $ar[0] ) - 1][1];
- } else {
- return false;
- }
+ return Fallback::mb_strrpos( $haystack, $needle, $offset, $encoding );
}
}
+
// Support for Wietse Venema's taint feature
if ( !function_exists( 'istainted' ) ) {
+ /** @codeCoverageIgnore */
function istainted( $var ) {
return 0;
}
+ /** @codeCoverageIgnore */
function taint( $var, $level = 0 ) {}
+ /** @codeCoverageIgnore */
function untaint( $var, $level = 0 ) {}
define( 'TC_HTML', 1 );
define( 'TC_SHELL', 1 );
@@ -197,25 +77,20 @@ if ( !function_exists( 'istainted' ) ) {
define( 'TC_PCRE', 1 );
define( 'TC_SELF', 1 );
}
-
-// array_fill_keys() was only added in 5.2, but people use it anyway
-// add a back-compat layer for 5.1. See bug 27781
-if( !function_exists( 'array_fill_keys' ) ) {
- function array_fill_keys( $keys, $value ) {
- return array_combine( $keys, array_fill( 0, count( $keys ), $value ) );
- }
-}
-
-
/// @endcond
-
/**
* Like array_diff( $a, $b ) except that it works with two-dimensional arrays.
*/
function wfArrayDiff2( $a, $b ) {
return array_udiff( $a, $b, 'wfArrayDiff2_cmp' );
}
+
+/**
+ * @param $a
+ * @param $b
+ * @return int
+ */
function wfArrayDiff2_cmp( $a, $b ) {
if ( !is_array( $a ) ) {
return strcmp( $a, $b );
@@ -235,12 +110,148 @@ function wfArrayDiff2_cmp( $a, $b ) {
}
/**
- * Seed Mersenne Twister
- * No-op for compatibility; only necessary in PHP < 4.2.0
- * @deprecated. Remove in 1.18
+ * Array lookup
+ * Returns an array where the values in the first array are replaced by the
+ * values in the second array with the corresponding keys
+ *
+ * @param $a Array
+ * @param $b Array
+ * @return array
+ */
+function wfArrayLookup( $a, $b ) {
+ return array_flip( array_intersect( array_flip( $a ), array_keys( $b ) ) );
+}
+
+/**
+ * Appends to second array if $value differs from that in $default
+ *
+ * @param $key String|Int
+ * @param $value Mixed
+ * @param $default Mixed
+ * @param $changed Array to alter
+ */
+function wfAppendToArrayIfNotDefault( $key, $value, $default, &$changed ) {
+ if ( is_null( $changed ) ) {
+ throw new MWException( 'GlobalFunctions::wfAppendToArrayIfNotDefault got null' );
+ }
+ if ( $default[$key] !== $value ) {
+ $changed[$key] = $value;
+ }
+}
+
+/**
+ * Backwards array plus for people who haven't bothered to read the PHP manual
+ * XXX: will not darn your socks for you.
+ *
+ * @param $array1 Array
+ * @param [$array2, [...]] Arrays
+ * @return Array
+ */
+function wfArrayMerge( $array1/* ... */ ) {
+ $args = func_get_args();
+ $args = array_reverse( $args, true );
+ $out = array();
+ foreach ( $args as $arg ) {
+ $out += $arg;
+ }
+ return $out;
+}
+
+/**
+ * Merge arrays in the style of getUserPermissionsErrors, with duplicate removal
+ * e.g.
+ * wfMergeErrorArrays(
+ * array( array( 'x' ) ),
+ * array( array( 'x', '2' ) ),
+ * array( array( 'x' ) ),
+ * array( array( 'y') )
+ * );
+ * returns:
+ * array(
+ * array( 'x', '2' ),
+ * array( 'x' ),
+ * array( 'y' )
+ * )
+ * @param varargs
+ * @return Array
+ */
+function wfMergeErrorArrays( /*...*/ ) {
+ $args = func_get_args();
+ $out = array();
+ foreach ( $args as $errors ) {
+ foreach ( $errors as $params ) {
+ # @todo FIXME: Sometimes get nested arrays for $params,
+ # which leads to E_NOTICEs
+ $spec = implode( "\t", $params );
+ $out[$spec] = $params;
+ }
+ }
+ return array_values( $out );
+}
+
+/**
+ * Insert array into another array after the specified *KEY*
+ *
+ * @param $array Array: The array.
+ * @param $insert Array: The array to insert.
+ * @param $after Mixed: The key to insert after
+ * @return Array
+ */
+function wfArrayInsertAfter( $array, $insert, $after ) {
+ // Find the offset of the element to insert after.
+ $keys = array_keys( $array );
+ $offsetByKey = array_flip( $keys );
+
+ $offset = $offsetByKey[$after];
+
+ // Insert at the specified offset
+ $before = array_slice( $array, 0, $offset + 1, true );
+ $after = array_slice( $array, $offset + 1, count( $array ) - $offset, true );
+
+ $output = $before + $insert + $after;
+
+ return $output;
+}
+
+/**
+ * Recursively converts the parameter (an object) to an array with the same data
+ *
+ * @param $objOrArray Object|Array
+ * @param $recursive Bool
+ * @return Array
+ */
+function wfObjectToArray( $objOrArray, $recursive = true ) {
+ $array = array();
+ if( is_object( $objOrArray ) ) {
+ $objOrArray = get_object_vars( $objOrArray );
+ }
+ foreach ( $objOrArray as $key => $value ) {
+ if ( $recursive && ( is_object( $value ) || is_array( $value ) ) ) {
+ $value = wfObjectToArray( $value );
+ }
+
+ $array[$key] = $value;
+ }
+
+ return $array;
+}
+
+/**
+ * Wrapper around array_map() which also taints variables
+ *
+ * @param $function Callback
+ * @param $input Array
+ * @return Array
*/
-function wfSeedRandom() {
- wfDeprecated(__FUNCTION__);
+function wfArrayMap( $function, $input ) {
+ $ret = array_map( $function, $input );
+ foreach ( $ret as $key => $value ) {
+ $taint = istainted( $input[$key] );
+ if ( $taint ) {
+ taint( $ret[$key], $taint );
+ }
+ }
+ return $ret;
}
/**
@@ -283,6 +294,11 @@ function wfRandom() {
*/
function wfUrlencode( $s ) {
static $needle;
+ if ( is_null( $s ) ) {
+ $needle = null;
+ return;
+ }
+
if ( is_null( $needle ) ) {
$needle = array( '%3B', '%40', '%24', '%21', '%2A', '%28', '%29', '%2C', '%2F' );
if ( !isset( $_SERVER['SERVER_SOFTWARE'] ) || ( strpos( $_SERVER['SERVER_SOFTWARE'], 'Microsoft-IIS/7' ) === false ) ) {
@@ -301,6 +317,365 @@ function wfUrlencode( $s ) {
}
/**
+ * This function takes two arrays as input, and returns a CGI-style string, e.g.
+ * "days=7&limit=100". Options in the first array override options in the second.
+ * Options set to "" will not be output.
+ *
+ * @param $array1 Array ( String|Array )
+ * @param $array2 Array ( String|Array )
+ * @param $prefix String
+ * @return String
+ */
+function wfArrayToCGI( $array1, $array2 = null, $prefix = '' ) {
+ if ( !is_null( $array2 ) ) {
+ $array1 = $array1 + $array2;
+ }
+
+ $cgi = '';
+ foreach ( $array1 as $key => $value ) {
+ if ( $value !== '' ) {
+ if ( $cgi != '' ) {
+ $cgi .= '&';
+ }
+ if ( $prefix !== '' ) {
+ $key = $prefix . "[$key]";
+ }
+ if ( is_array( $value ) ) {
+ $firstTime = true;
+ foreach ( $value as $k => $v ) {
+ $cgi .= $firstTime ? '' : '&';
+ if ( is_array( $v ) ) {
+ $cgi .= wfArrayToCGI( $v, null, $key . "[$k]" );
+ } else {
+ $cgi .= urlencode( $key . "[$k]" ) . '=' . urlencode( $v );
+ }
+ $firstTime = false;
+ }
+ } else {
+ if ( is_object( $value ) ) {
+ $value = $value->__toString();
+ }
+ $cgi .= urlencode( $key ) . '=' . urlencode( $value );
+ }
+ }
+ }
+ return $cgi;
+}
+
+/**
+ * This is the logical opposite of wfArrayToCGI(): it accepts a query string as
+ * its argument and returns the same string in array form. This allows compa-
+ * tibility with legacy functions that accept raw query strings instead of nice
+ * arrays. Of course, keys and values are urldecode()d. Don't try passing in-
+ * valid query strings, or it will explode.
+ *
+ * @param $query String: query string
+ * @return array Array version of input
+ */
+function wfCgiToArray( $query ) {
+ if ( isset( $query[0] ) && $query[0] == '?' ) {
+ $query = substr( $query, 1 );
+ }
+ $bits = explode( '&', $query );
+ $ret = array();
+ foreach ( $bits as $bit ) {
+ if ( $bit === '' ) {
+ continue;
+ }
+ list( $key, $value ) = explode( '=', $bit );
+ $key = urldecode( $key );
+ $value = urldecode( $value );
+ if ( strpos( $key, '[' ) !== false ) {
+ $keys = array_reverse( explode( '[', $key ) );
+ $key = array_pop( $keys );
+ $temp = $value;
+ foreach ( $keys as $k ) {
+ $k = substr( $k, 0, -1 );
+ $temp = array( $k => $temp );
+ }
+ if ( isset( $ret[$key] ) ) {
+ $ret[$key] = array_merge( $ret[$key], $temp );
+ } else {
+ $ret[$key] = $temp;
+ }
+ } else {
+ $ret[$key] = $value;
+ }
+ }
+ return $ret;
+}
+
+/**
+ * Append a query string to an existing URL, which may or may not already
+ * have query string parameters already. If so, they will be combined.
+ *
+ * @param $url String
+ * @param $query Mixed: string or associative array
+ * @return string
+ */
+function wfAppendQuery( $url, $query ) {
+ if ( is_array( $query ) ) {
+ $query = wfArrayToCGI( $query );
+ }
+ if( $query != '' ) {
+ if( false === strpos( $url, '?' ) ) {
+ $url .= '?';
+ } else {
+ $url .= '&';
+ }
+ $url .= $query;
+ }
+ return $url;
+}
+
+/**
+ * Expand a potentially local URL to a fully-qualified URL. Assumes $wgServer
+ * is correct.
+ *
+ * The meaning of the PROTO_* constants is as follows:
+ * PROTO_HTTP: Output a URL starting with http://
+ * PROTO_HTTPS: Output a URL starting with https://
+ * PROTO_RELATIVE: Output a URL starting with // (protocol-relative URL)
+ * PROTO_CURRENT: Output a URL starting with either http:// or https:// , depending on which protocol was used for the current incoming request
+ * PROTO_CANONICAL: For URLs without a domain, like /w/index.php , use $wgCanonicalServer. For protocol-relative URLs, use the protocol of $wgCanonicalServer
+ * PROTO_INTERNAL: Like PROTO_CANONICAL, but uses $wgInternalServer instead of $wgCanonicalServer
+ *
+ * @todo this won't work with current-path-relative URLs
+ * like "subdir/foo.html", etc.
+ *
+ * @param $url String: either fully-qualified or a local path + query
+ * @param $defaultProto Mixed: one of the PROTO_* constants. Determines the protocol to use if $url or $wgServer is protocol-relative
+ * @return string Fully-qualified URL
+ */
+function wfExpandUrl( $url, $defaultProto = PROTO_CURRENT ) {
+ global $wgServer, $wgCanonicalServer, $wgInternalServer;
+ $serverUrl = $wgServer;
+ if ( $defaultProto === PROTO_CANONICAL ) {
+ $serverUrl = $wgCanonicalServer;
+ }
+ // Make $wgInternalServer fall back to $wgServer if not set
+ if ( $defaultProto === PROTO_INTERNAL && $wgInternalServer !== false ) {
+ $serverUrl = $wgInternalServer;
+ }
+ if ( $defaultProto === PROTO_CURRENT ) {
+ $defaultProto = WebRequest::detectProtocol() . '://';
+ }
+
+ // Analyze $serverUrl to obtain its protocol
+ $bits = wfParseUrl( $serverUrl );
+ $serverHasProto = $bits && $bits['scheme'] != '';
+
+ if ( $defaultProto === PROTO_CANONICAL || $defaultProto === PROTO_INTERNAL ) {
+ if ( $serverHasProto ) {
+ $defaultProto = $bits['scheme'] . '://';
+ } else {
+ // $wgCanonicalServer or $wgInternalServer doesn't have a protocol. This really isn't supposed to happen
+ // Fall back to HTTP in this ridiculous case
+ $defaultProto = PROTO_HTTP;
+ }
+ }
+
+ $defaultProtoWithoutSlashes = substr( $defaultProto, 0, -2 );
+
+ if( substr( $url, 0, 2 ) == '//' ) {
+ return $defaultProtoWithoutSlashes . $url;
+ } elseif( substr( $url, 0, 1 ) == '/' ) {
+ // If $serverUrl is protocol-relative, prepend $defaultProtoWithoutSlashes, otherwise leave it alone
+ return ( $serverHasProto ? '' : $defaultProtoWithoutSlashes ) . $serverUrl . $url;
+ } else {
+ return $url;
+ }
+}
+
+/**
+ * Returns a regular expression of url protocols
+ *
+ * @param $includeProtocolRelative bool If false, remove '//' from the returned protocol list.
+ * DO NOT USE this directy, use wfUrlProtocolsWithoutProtRel() instead
+ * @return String
+ */
+function wfUrlProtocols( $includeProtocolRelative = true ) {
+ global $wgUrlProtocols;
+
+ // Cache return values separately based on $includeProtocolRelative
+ static $withProtRel = null, $withoutProtRel = null;
+ $cachedValue = $includeProtocolRelative ? $withProtRel : $withoutProtRel;
+ if ( !is_null( $cachedValue ) ) {
+ return $cachedValue;
+ }
+
+ // Support old-style $wgUrlProtocols strings, for backwards compatibility
+ // with LocalSettings files from 1.5
+ if ( is_array( $wgUrlProtocols ) ) {
+ $protocols = array();
+ foreach ( $wgUrlProtocols as $protocol ) {
+ // Filter out '//' if !$includeProtocolRelative
+ if ( $includeProtocolRelative || $protocol !== '//' ) {
+ $protocols[] = preg_quote( $protocol, '/' );
+ }
+ }
+
+ $retval = implode( '|', $protocols );
+ } else {
+ // Ignore $includeProtocolRelative in this case
+ // This case exists for pre-1.6 compatibility, and we can safely assume
+ // that '//' won't appear in a pre-1.6 config because protocol-relative
+ // URLs weren't supported until 1.18
+ $retval = $wgUrlProtocols;
+ }
+
+ // Cache return value
+ if ( $includeProtocolRelative ) {
+ $withProtRel = $retval;
+ } else {
+ $withoutProtRel = $retval;
+ }
+ return $retval;
+}
+
+/**
+ * Like wfUrlProtocols(), but excludes '//' from the protocol list. Use this if
+ * you need a regex that matches all URL protocols but does not match protocol-
+ * relative URLs
+ */
+function wfUrlProtocolsWithoutProtRel() {
+ return wfUrlProtocols( false );
+}
+
+/**
+ * parse_url() work-alike, but non-broken. Differences:
+ *
+ * 1) Does not raise warnings on bad URLs (just returns false)
+ * 2) Handles protocols that don't use :// (e.g., mailto: and news: , as well as protocol-relative URLs) correctly
+ * 3) Adds a "delimiter" element to the array, either '://', ':' or '//' (see (2))
+ *
+ * @param $url String: a URL to parse
+ * @return Array: bits of the URL in an associative array, per PHP docs
+ */
+function wfParseUrl( $url ) {
+ global $wgUrlProtocols; // Allow all protocols defined in DefaultSettings/LocalSettings.php
+
+ // Protocol-relative URLs are handled really badly by parse_url(). It's so bad that the easiest
+ // way to handle them is to just prepend 'http:' and strip the protocol out later
+ $wasRelative = substr( $url, 0, 2 ) == '//';
+ if ( $wasRelative ) {
+ $url = "http:$url";
+ }
+ wfSuppressWarnings();
+ $bits = parse_url( $url );
+ wfRestoreWarnings();
+ if ( !$bits ) {
+ return false;
+ }
+
+ // most of the protocols are followed by ://, but mailto: and sometimes news: not, check for it
+ if ( in_array( $bits['scheme'] . '://', $wgUrlProtocols ) ) {
+ $bits['delimiter'] = '://';
+ } elseif ( in_array( $bits['scheme'] . ':', $wgUrlProtocols ) ) {
+ $bits['delimiter'] = ':';
+ // parse_url detects for news: and mailto: the host part of an url as path
+ // We have to correct this wrong detection
+ if ( isset( $bits['path'] ) ) {
+ $bits['host'] = $bits['path'];
+ $bits['path'] = '';
+ }
+ } else {
+ return false;
+ }
+
+ /* Provide an empty host for eg. file:/// urls (see bug 28627) */
+ if ( !isset( $bits['host'] ) ) {
+ $bits['host'] = '';
+
+ /* parse_url loses the third / for file:///c:/ urls (but not on variants) */
+ if ( substr( $bits['path'], 0, 1 ) !== '/' ) {
+ $bits['path'] = '/' . $bits['path'];
+ }
+ }
+
+ // If the URL was protocol-relative, fix scheme and delimiter
+ if ( $wasRelative ) {
+ $bits['scheme'] = '';
+ $bits['delimiter'] = '//';
+ }
+ return $bits;
+}
+
+/**
+ * Make URL indexes, appropriate for the el_index field of externallinks.
+ *
+ * @param $url String
+ * @return array
+ */
+function wfMakeUrlIndexes( $url ) {
+ $bits = wfParseUrl( $url );
+
+ // Reverse the labels in the hostname, convert to lower case
+ // For emails reverse domainpart only
+ if ( $bits['scheme'] == 'mailto' ) {
+ $mailparts = explode( '@', $bits['host'], 2 );
+ if ( count( $mailparts ) === 2 ) {
+ $domainpart = strtolower( implode( '.', array_reverse( explode( '.', $mailparts[1] ) ) ) );
+ } else {
+ // No domain specified, don't mangle it
+ $domainpart = '';
+ }
+ $reversedHost = $domainpart . '@' . $mailparts[0];
+ } else {
+ $reversedHost = strtolower( implode( '.', array_reverse( explode( '.', $bits['host'] ) ) ) );
+ }
+ // Add an extra dot to the end
+ // Why? Is it in wrong place in mailto links?
+ if ( substr( $reversedHost, -1, 1 ) !== '.' ) {
+ $reversedHost .= '.';
+ }
+ // Reconstruct the pseudo-URL
+ $prot = $bits['scheme'];
+ $index = $prot . $bits['delimiter'] . $reversedHost;
+ // Leave out user and password. Add the port, path, query and fragment
+ if ( isset( $bits['port'] ) ) {
+ $index .= ':' . $bits['port'];
+ }
+ if ( isset( $bits['path'] ) ) {
+ $index .= $bits['path'];
+ } else {
+ $index .= '/';
+ }
+ if ( isset( $bits['query'] ) ) {
+ $index .= '?' . $bits['query'];
+ }
+ if ( isset( $bits['fragment'] ) ) {
+ $index .= '#' . $bits['fragment'];
+ }
+
+ if ( $prot == '' ) {
+ return array( "http:$index", "https:$index" );
+ } else {
+ return array( $index );
+ }
+}
+
+/**
+ * Check whether a given URL has a domain that occurs in a given set of domains
+ * @param $url string URL
+ * @param $domains array Array of domains (strings)
+ * @return bool True if the host part of $url ends in one of the strings in $domains
+ */
+function wfMatchesDomainList( $url, $domains ) {
+ $bits = wfParseUrl( $url );
+ if ( is_array( $bits ) && isset( $bits['host'] ) ) {
+ foreach ( (array)$domains as $domain ) {
+ // FIXME: This gives false positives. http://nds-nl.wikipedia.org will match nl.wikipedia.org
+ // We should use something that interprets dots instead
+ if ( substr( $bits['host'], -strlen( $domain ) ) === $domain ) {
+ return true;
+ }
+ }
+ }
+ return false;
+}
+
+/**
* Sends a line to the debug log if enabled or, optionally, to a comment in output.
* In normal operation this is a NOP.
*
@@ -316,44 +691,61 @@ function wfUrlencode( $s ) {
function wfDebug( $text, $logonly = false ) {
global $wgOut, $wgDebugLogFile, $wgDebugComments, $wgProfileOnly, $wgDebugRawPage;
global $wgDebugLogPrefix, $wgShowDebug;
- static $recursion = 0;
static $cache = array(); // Cache of unoutputted messages
$text = wfDebugTimer() . $text;
- # Check for raw action using $_GET not $wgRequest, since the latter might not be initialised yet
- if ( isset( $_GET['action'] ) && $_GET['action'] == 'raw' && !$wgDebugRawPage ) {
+ if ( !$wgDebugRawPage && wfIsDebugRawPage() ) {
return;
}
if ( ( $wgDebugComments || $wgShowDebug ) && !$logonly ) {
$cache[] = $text;
- if ( !isset( $wgOut ) ) {
- return;
+ if ( isset( $wgOut ) && is_object( $wgOut ) ) {
+ // add the message and any cached messages to the output
+ array_map( array( $wgOut, 'debug' ), $cache );
+ $cache = array();
}
- if ( !StubObject::isRealObject( $wgOut ) ) {
- if ( $recursion ) {
- return;
- }
- $recursion++;
- $wgOut->_unstub();
- $recursion--;
+ }
+ if ( wfRunHooks( 'Debug', array( $text, null /* no log group */ ) ) ) {
+ if ( $wgDebugLogFile != '' && !$wgProfileOnly ) {
+ # Strip unprintables; they can switch terminal modes when binary data
+ # gets dumped, which is pretty annoying.
+ $text = preg_replace( '![\x00-\x08\x0b\x0c\x0e-\x1f]!', ' ', $text );
+ $text = $wgDebugLogPrefix . $text;
+ wfErrorLog( $text, $wgDebugLogFile );
}
+ }
+}
- // add the message and possible cached ones to the output
- array_map( array( $wgOut, 'debug' ), $cache );
- $cache = array();
+/**
+ * Returns true if debug logging should be suppressed if $wgDebugRawPage = false
+ */
+function wfIsDebugRawPage() {
+ static $cache;
+ if ( $cache !== null ) {
+ return $cache;
}
- if ( $wgDebugLogFile != '' && !$wgProfileOnly ) {
- # Strip unprintables; they can switch terminal modes when binary data
- # gets dumped, which is pretty annoying.
- $text = preg_replace( '![\x00-\x08\x0b\x0c\x0e-\x1f]!', ' ', $text );
- $text = $wgDebugLogPrefix . $text;
- wfErrorLog( $text, $wgDebugLogFile );
+ # Check for raw action using $_GET not $wgRequest, since the latter might not be initialised yet
+ if ( ( isset( $_GET['action'] ) && $_GET['action'] == 'raw' )
+ || (
+ isset( $_SERVER['SCRIPT_NAME'] )
+ && substr( $_SERVER['SCRIPT_NAME'], -8 ) == 'load.php'
+ ) )
+ {
+ $cache = true;
+ } else {
+ $cache = false;
}
+ return $cache;
}
+/**
+ * Get microsecond timestamps for debug logs
+ *
+ * @return string
+ */
function wfDebugTimer() {
global $wgDebugTimestamps;
if ( !$wgDebugTimestamps ) {
@@ -373,6 +765,7 @@ function wfDebugTimer() {
/**
* Send a line giving PHP memory usage.
+ *
* @param $exact Bool: print exact values instead of kilobytes (default: false)
*/
function wfDebugMem( $exact = false ) {
@@ -405,7 +798,9 @@ function wfDebugLog( $logGroup, $text, $public = true ) {
} else {
$host = '';
}
- wfErrorLog( "$time $host $wiki: $text", $wgDebugLogGroups[$logGroup] );
+ if ( wfRunHooks( 'Debug', array( $text, $logGroup ) ) ) {
+ wfErrorLog( "$time $host $wiki: $text", $wgDebugLogGroups[$logGroup] );
+ }
} elseif ( $public === true ) {
wfDebug( $text, true );
}
@@ -413,6 +808,7 @@ function wfDebugLog( $logGroup, $text, $public = true ) {
/**
* Log for database errors
+ *
* @param $text String: database error message.
*/
function wfLogDBError( $text ) {
@@ -429,6 +825,9 @@ function wfLogDBError( $text ) {
*
* Can also log to TCP or UDP with the syntax udp://host:port/prefix. This will
* send lines to the specified port, prefixed by the specified prefix and a space.
+ *
+ * @param $text String
+ * @param $file String filename
*/
function wfErrorLog( $text, $file ) {
if ( substr( $file, 0, 4 ) == 'udp:' ) {
@@ -450,12 +849,21 @@ function wfErrorLog( $text, $file ) {
} else {
throw new MWException( __METHOD__ . ': Invalid UDP specification' );
}
+
// Clean it up for the multiplexer
if ( strval( $prefix ) !== '' ) {
$text = preg_replace( '/^/m', $prefix . ' ', $text );
+
+ // Limit to 64KB
+ if ( strlen( $text ) > 65534 ) {
+ $text = substr( $text, 0, 65534 );
+ }
+
if ( substr( $text, -1 ) != "\n" ) {
$text .= "\n";
}
+ } elseif ( strlen( $text ) > 65535 ) {
+ $text = substr( $text, 0, 65535 );
}
$sock = socket_create( $domain, SOCK_DGRAM, SOL_UDP );
@@ -469,7 +877,7 @@ function wfErrorLog( $text, $file ) {
$exists = file_exists( $file );
$size = $exists ? filesize( $file ) : false;
if ( !$exists || ( $size !== false && $size + strlen( $text ) < 0x7fffffff ) ) {
- error_log( $text, 3, $file );
+ file_put_contents( $file, $text, FILE_APPEND );
}
wfRestoreWarnings();
}
@@ -480,49 +888,60 @@ function wfErrorLog( $text, $file ) {
*/
function wfLogProfilingData() {
global $wgRequestTime, $wgDebugLogFile, $wgDebugRawPage, $wgRequest;
- global $wgProfiler, $wgProfileLimit, $wgUser;
+ global $wgProfileLimit, $wgUser;
+
+ $profiler = Profiler::instance();
+
# Profiling must actually be enabled...
- if( is_null( $wgProfiler ) ) {
+ if ( $profiler->isStub() ) {
return;
}
- # Get total page request time
+
+ // Get total page request time and only show pages that longer than
+ // $wgProfileLimit time (default is 0)
$now = wfTime();
$elapsed = $now - $wgRequestTime;
- # Only show pages that longer than $wgProfileLimit time (default is 0)
- if( $elapsed <= $wgProfileLimit ) {
+ if ( $elapsed <= $wgProfileLimit ) {
+ return;
+ }
+
+ $profiler->logData();
+
+ // Check whether this should be logged in the debug file.
+ if ( $wgDebugLogFile == '' || ( !$wgDebugRawPage && wfIsDebugRawPage() ) ) {
return;
}
- $prof = wfGetProfilingOutput( $wgRequestTime, $elapsed );
+
$forward = '';
- if( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
+ if ( !empty( $_SERVER['HTTP_X_FORWARDED_FOR'] ) ) {
$forward = ' forwarded for ' . $_SERVER['HTTP_X_FORWARDED_FOR'];
}
- if( !empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
+ if ( !empty( $_SERVER['HTTP_CLIENT_IP'] ) ) {
$forward .= ' client IP ' . $_SERVER['HTTP_CLIENT_IP'];
}
- if( !empty( $_SERVER['HTTP_FROM'] ) ) {
+ if ( !empty( $_SERVER['HTTP_FROM'] ) ) {
$forward .= ' from ' . $_SERVER['HTTP_FROM'];
}
- if( $forward ) {
+ if ( $forward ) {
$forward = "\t(proxied via {$_SERVER['REMOTE_ADDR']}{$forward})";
}
- // Don't unstub $wgUser at this late stage just for statistics purposes
- // FIXME: We can detect some anons even if it is not loaded. See User::getId()
- if( $wgUser->mDataLoaded && $wgUser->isAnon() ) {
+ // Don't load $wgUser at this late stage just for statistics purposes
+ // @todo FIXME: We can detect some anons even if it is not loaded. See User::getId()
+ if ( $wgUser->isItemLoaded( 'id' ) && $wgUser->isAnon() ) {
$forward .= ' anon';
}
$log = sprintf( "%s\t%04.3f\t%s\n",
gmdate( 'YmdHis' ), $elapsed,
urldecode( $wgRequest->getRequestURL() . $forward ) );
- if ( $wgDebugLogFile != '' && ( $wgRequest->getVal( 'action' ) != 'raw' || $wgDebugRawPage ) ) {
- wfErrorLog( $log . $prof, $wgDebugLogFile );
- }
+
+ wfErrorLog( $log . $profiler->getOutput(), $wgDebugLogFile );
}
/**
* Check if the wiki read-only lock file is present. This can be used to lock
* off editing functions, but doesn't guarantee that the database will not be
* modified.
+ *
* @return bool
*/
function wfReadOnly() {
@@ -551,6 +970,7 @@ function wfReadOnlyReason() {
/**
* Return a Language object from $langcode
+ *
* @param $langcode Mixed: either:
* - a Language object
* - code of the language to get the message for, if it is
@@ -596,15 +1016,15 @@ function wfGetLangObj( $langcode = false ) {
}
/**
- * Use this instead of $wgContLang, when working with user interface.
- * User interface is currently hard coded according to wiki content language
- * in many ways, especially regarding to text direction. There is lots stuff
- * to fix, hence this function to keep the old behaviour unless the global
- * $wgBetterDirectionality is enabled (or removed when everything works).
+ * Old function when $wgBetterDirectionality existed
+ * Removed in core, kept in extensions for backwards compat.
+ *
+ * @deprecated since 1.18
+ * @return Language
*/
function wfUILang() {
- global $wgBetterDirectionality;
- return wfGetLangObj( !$wgBetterDirectionality );
+ global $wgLang;
+ return $wgLang;
}
/**
@@ -613,7 +1033,7 @@ function wfUILang() {
* The intention is that this function replaces all old wfMsg* functions.
* @param $key \string Message key.
* Varargs: normal message parameters.
- * @return \type{Message}
+ * @return Message
* @since 1.17
*/
function wfMessage( $key /*...*/) {
@@ -626,6 +1046,19 @@ function wfMessage( $key /*...*/) {
}
/**
+ * This function accepts multiple message keys and returns a message instance
+ * for the first message which is non-empty. If all messages are empty then an
+ * instance of the first message key is returned.
+ * @param varargs: message keys
+ * @return Message
+ * @since 1.18
+ */
+function wfMessageFallback( /*...*/ ) {
+ $args = func_get_args();
+ return MWFunction::callArray( 'Message::newFallbackSequence', $args );
+}
+
+/**
* Get a message from anywhere, for the current user language.
*
* Use wfMsgForContent() instead if the message should NOT
@@ -634,18 +1067,25 @@ function wfMessage( $key /*...*/) {
* @param $key String: lookup key for the message, usually
* defined in languages/Language.php
*
- * This function also takes extra optional parameters (not
- * shown in the function definition), which can be used to
- * insert variable text into the predefined message.
+ * Parameters to the message, which can be used to insert variable text into
+ * it, can be passed to this function in the following formats:
+ * - One per argument, starting at the second parameter
+ * - As an array in the second parameter
+ * These are not shown in the function definition.
+ *
+ * @return String
*/
function wfMsg( $key ) {
$args = func_get_args();
array_shift( $args );
- return wfMsgReal( $key, $args, true );
+ return wfMsgReal( $key, $args );
}
/**
* Same as above except doesn't transform the message
+ *
+ * @param $key String
+ * @return String
*/
function wfMsgNoTrans( $key ) {
$args = func_get_args();
@@ -673,7 +1113,8 @@ function wfMsgNoTrans( $key ) {
* order to, e.g., fix a link in every possible language.
*
* @param $key String: lookup key for the message, usually
- * defined in languages/Language.php
+ * defined in languages/Language.php
+ * @return String
*/
function wfMsgForContent( $key ) {
global $wgForceUIMsgAsContentMsg;
@@ -690,6 +1131,9 @@ function wfMsgForContent( $key ) {
/**
* Same as above except doesn't transform the message
+ *
+ * @param $key String
+ * @return String
*/
function wfMsgForContentNoTrans( $key ) {
global $wgForceUIMsgAsContentMsg;
@@ -705,33 +1149,8 @@ function wfMsgForContentNoTrans( $key ) {
}
/**
- * Get a message from the language file, for the UI elements
- */
-function wfMsgNoDB( $key ) {
- $args = func_get_args();
- array_shift( $args );
- return wfMsgReal( $key, $args, false );
-}
-
-/**
- * Get a message from the language file, for the content
- */
-function wfMsgNoDBForContent( $key ) {
- global $wgForceUIMsgAsContentMsg;
- $args = func_get_args();
- array_shift( $args );
- $forcontent = true;
- if( is_array( $wgForceUIMsgAsContentMsg ) &&
- in_array( $key, $wgForceUIMsgAsContentMsg ) )
- {
- $forcontent = false;
- }
- return wfMsgReal( $key, $args, false, $forcontent );
-}
-
-
-/**
* Really get a message
+ *
* @param $key String: key to get.
* @param $args
* @param $useDB Boolean
@@ -748,20 +1167,8 @@ function wfMsgReal( $key, $args, $useDB = true, $forContent = false, $transform
}
/**
- * This function provides the message source for messages to be edited which are *not* stored in the database.
- * @param $key String:
- */
-function wfMsgWeirdKey( $key ) {
- $source = wfMsgGetKey( $key, false, true, false );
- if ( wfEmptyMsg( $key, $source ) ) {
- return '';
- } else {
- return $source;
- }
-}
-
-/**
* Fetch a message string value, but don't replace any keys yet.
+ *
* @param $key String
* @param $useDB Bool
* @param $langCode String: Code of the language to get the message for, or
@@ -769,20 +1176,15 @@ function wfMsgWeirdKey( $key ) {
* @param $transform Boolean: whether to parse magic words, etc.
* @return string
*/
-function wfMsgGetKey( $key, $useDB, $langCode = false, $transform = true ) {
- global $wgMessageCache;
-
+function wfMsgGetKey( $key, $useDB = true, $langCode = false, $transform = true ) {
wfRunHooks( 'NormalizeMessageKey', array( &$key, &$useDB, &$langCode, &$transform ) );
- if ( !is_object( $wgMessageCache ) ) {
- throw new MWException( 'Trying to get message before message cache is initialised' );
- }
-
- $message = $wgMessageCache->get( $key, $useDB, $langCode );
+ $cache = MessageCache::singleton();
+ $message = $cache->get( $key, $useDB, $langCode );
if( $message === false ) {
$message = '&lt;' . htmlspecialchars( $key ) . '&gt;';
} elseif ( $transform ) {
- $message = $wgMessageCache->transform( $message );
+ $message = $cache->transform( $message );
}
return $message;
}
@@ -829,7 +1231,7 @@ function wfMsgReplaceArgs( $message, $args ) {
function wfMsgHtml( $key ) {
$args = func_get_args();
array_shift( $args );
- return wfMsgReplaceArgs( htmlspecialchars( wfMsgGetKey( $key, true ) ), $args );
+ return wfMsgReplaceArgs( htmlspecialchars( wfMsgGetKey( $key ) ), $args );
}
/**
@@ -844,10 +1246,11 @@ function wfMsgHtml( $key ) {
* @return string
*/
function wfMsgWikiHtml( $key ) {
- global $wgOut;
$args = func_get_args();
array_shift( $args );
- return wfMsgReplaceArgs( $wgOut->parse( wfMsgGetKey( $key, true ), /* can't be set to false */ true ), $args );
+ return wfMsgReplaceArgs(
+ MessageCache::singleton()->parse( wfMsgGetKey( $key ), null, /* can't be set to false */ true )->getText(),
+ $args );
}
/**
@@ -864,13 +1267,12 @@ function wfMsgWikiHtml( $key ) {
* <i>content</i>: fetch message for content language instead of interface
* Also can accept a single associative argument, of the form 'language' => 'xx':
* <i>language</i>: Language object or language code to fetch message for
- * (overriden by <i>content</i>), its behaviour with parse, parseinline
- * and parsemag is undefined.
+ * (overriden by <i>content</i>).
* Behavior for conflicting options (e.g., parse+parseinline) is undefined.
+ *
+ * @return String
*/
function wfMsgExt( $key, $options ) {
- global $wgOut;
-
$args = func_get_args();
array_shift( $args );
array_shift( $args );
@@ -891,12 +1293,15 @@ function wfMsgExt( $key, $options ) {
if( in_array( 'content', $options, true ) ) {
$forContent = true;
$langCode = true;
+ $langCodeObj = null;
} elseif( array_key_exists( 'language', $options ) ) {
$forContent = false;
$langCode = wfGetLangObj( $options['language'] );
+ $langCodeObj = $langCode;
} else {
$forContent = false;
$langCode = false;
+ $langCodeObj = null;
}
$string = wfMsgGetKey( $key, /*DB*/true, $langCode, /*Transform*/false );
@@ -905,21 +1310,18 @@ function wfMsgExt( $key, $options ) {
$string = wfMsgReplaceArgs( $string, $args );
}
+ $messageCache = MessageCache::singleton();
if( in_array( 'parse', $options, true ) ) {
- $string = $wgOut->parse( $string, true, !$forContent );
+ $string = $messageCache->parse( $string, null, true, !$forContent, $langCodeObj )->getText();
} elseif ( in_array( 'parseinline', $options, true ) ) {
- $string = $wgOut->parse( $string, true, !$forContent );
+ $string = $messageCache->parse( $string, null, true, !$forContent, $langCodeObj )->getText();
$m = array();
if( preg_match( '/^<p>(.*)\n?<\/p>\n?$/sU', $string, $m ) ) {
$string = $m[1];
}
} elseif ( in_array( 'parsemag', $options, true ) ) {
- global $wgMessageCache;
- if ( isset( $wgMessageCache ) ) {
- $string = $wgMessageCache->transform( $string,
- !$forContent,
- is_object( $langCode ) ? $langCode : null );
- }
+ $string = $messageCache->transform( $string,
+ !$forContent, $langCodeObj );
}
if ( in_array( 'escape', $options, true ) ) {
@@ -935,58 +1337,16 @@ function wfMsgExt( $key, $options ) {
return $string;
}
-
/**
- * Just like exit() but makes a note of it.
- * Commits open transactions except if the error parameter is set
+ * Since wfMsg() and co suck, they don't return false if the message key they
+ * looked up didn't exist but a XHTML string, this function checks for the
+ * nonexistance of messages by checking the MessageCache::get() result directly.
*
- * @deprecated Please return control to the caller or throw an exception. Will
- * be removed in 1.19.
- */
-function wfAbruptExit( $error = false ) {
- static $called = false;
- if ( $called ) {
- exit( -1 );
- }
- $called = true;
-
- wfDeprecated( __FUNCTION__ );
- $bt = wfDebugBacktrace();
- if( $bt ) {
- for( $i = 0; $i < count( $bt ); $i++ ) {
- $file = isset( $bt[$i]['file'] ) ? $bt[$i]['file'] : 'unknown';
- $line = isset( $bt[$i]['line'] ) ? $bt[$i]['line'] : 'unknown';
- wfDebug( "WARNING: Abrupt exit in $file at line $line\n");
- }
- } else {
- wfDebug( "WARNING: Abrupt exit\n" );
- }
-
- wfLogProfilingData();
-
- if ( !$error ) {
- wfGetLB()->closeAll();
- }
- exit( -1 );
-}
-
-/**
- * @deprecated Please return control the caller or throw an exception. Will
- * be removed in 1.19.
- */
-function wfErrorExit() {
- wfDeprecated( __FUNCTION__ );
- wfAbruptExit( true );
-}
-
-/**
- * Print a simple message and die, returning nonzero to the shell if any.
- * Plain die() fails to return nonzero to the shell if you pass a string.
- * @param $msg String
+ * @param $key String: the message key looked up
+ * @return Boolean True if the message *doesn't* exist.
*/
-function wfDie( $msg = '' ) {
- echo $msg;
- die( 1 );
+function wfEmptyMsg( $key ) {
+ return MessageCache::singleton()->get( $key, /*useDB*/true, /*content*/false ) === false;
}
/**
@@ -1003,6 +1363,7 @@ function wfDebugDieBacktrace( $msg = '' ) {
* Fetch server name for use in error reporting etc.
* Use real server name if available, so we know which machine
* in a server farm generated the current page.
+ *
* @return string
*/
function wfHostname() {
@@ -1010,7 +1371,7 @@ function wfHostname() {
if ( is_null( $host ) ) {
if ( function_exists( 'posix_uname' ) ) {
// This function not present on Windows
- $uname = @posix_uname();
+ $uname = posix_uname();
} else {
$uname = false;
}
@@ -1030,6 +1391,7 @@ function wfHostname() {
/**
* Returns a HTML comment with the elapsed time since request.
* This method has no side effects.
+ *
* @return string
*/
function wfReportTime() {
@@ -1054,9 +1416,11 @@ function wfReportTime() {
* debug_backtrace is disabled, otherwise the output from
* debug_backtrace() (trimmed).
*
+ * @param $limit int This parameter can be used to limit the number of stack frames returned
+ *
* @return array of backtrace information
*/
-function wfDebugBacktrace() {
+function wfDebugBacktrace( $limit = 0 ) {
static $disabled = null;
if( extension_loaded( 'Zend Optimizer' ) ) {
@@ -1078,9 +1442,18 @@ function wfDebugBacktrace() {
return array();
}
- return array_slice( debug_backtrace(), 1 );
+ if ( $limit && version_compare( PHP_VERSION, '5.4.0', '>=' ) ) {
+ return array_slice( debug_backtrace( DEBUG_BACKTRACE_PROVIDE_OBJECT, $limit ), 1 );
+ } else {
+ return array_slice( debug_backtrace(), 1 );
+ }
}
+/**
+ * Get a debug backtrace as a string
+ *
+ * @return string
+ */
function wfBacktrace() {
global $wgCommandLineMode;
@@ -1108,7 +1481,7 @@ function wfBacktrace() {
$msg .= '<li>' . $file . ' line ' . $line . ' calls ';
}
if( !empty( $call['class'] ) ) {
- $msg .= $call['class'] . '::';
+ $msg .= $call['class'] . $call['type'];
}
$msg .= $call['function'] . '()';
@@ -1127,12 +1500,61 @@ function wfBacktrace() {
return $msg;
}
+/**
+ * Get the name of the function which called this function
+ *
+ * @param $level Int
+ * @return Bool|string
+ */
+function wfGetCaller( $level = 2 ) {
+ $backtrace = wfDebugBacktrace( $level );
+ if ( isset( $backtrace[$level] ) ) {
+ return wfFormatStackFrame( $backtrace[$level] );
+ } else {
+ $caller = 'unknown';
+ }
+ return $caller;
+}
+
+/**
+ * Return a string consisting of callers in the stack. Useful sometimes
+ * for profiling specific points.
+ *
+ * @param $limit The maximum depth of the stack frame to return, or false for
+ * the entire stack.
+ * @return String
+ */
+function wfGetAllCallers( $limit = 3 ) {
+ $trace = array_reverse( wfDebugBacktrace() );
+ if ( !$limit || $limit > count( $trace ) - 1 ) {
+ $limit = count( $trace ) - 1;
+ }
+ $trace = array_slice( $trace, -$limit - 1, $limit );
+ return implode( '/', array_map( 'wfFormatStackFrame', $trace ) );
+}
+
+/**
+ * Return a string representation of frame
+ *
+ * @param $frame Array
+ * @return Bool
+ */
+function wfFormatStackFrame( $frame ) {
+ return isset( $frame['class'] ) ?
+ $frame['class'] . '::' . $frame['function'] :
+ $frame['function'];
+}
+
/* Some generic result counters, pulled out of SearchEngine */
/**
* @todo document
+ *
+ * @param $offset Int
+ * @param $limit Int
+ * @return String
*/
function wfShowingResults( $offset, $limit ) {
global $wgLang;
@@ -1145,31 +1567,19 @@ function wfShowingResults( $offset, $limit ) {
}
/**
- * @todo document
- */
-function wfShowingResultsNum( $offset, $limit, $num ) {
- global $wgLang;
- return wfMsgExt(
- 'showingresultsnum',
- array( 'parseinline' ),
- $wgLang->formatNum( $limit ),
- $wgLang->formatNum( $offset + 1 ),
- $wgLang->formatNum( $num )
- );
-}
-
-/**
* Generate (prev x| next x) (20|50|100...) type links for paging
+ *
* @param $offset String
* @param $limit Integer
* @param $link String
* @param $query String: optional URL query parameter string
* @param $atend Bool: optional param for specified if this is the last page
+ * @return String
*/
function wfViewPrevNext( $offset, $limit, $link, $query = '', $atend = false ) {
global $wgLang;
$fmtLimit = $wgLang->formatNum( $limit );
- // FIXME: Why on earth this needs one message for the text and another one for tooltip??
+ // @todo FIXME: Why on earth this needs one message for the text and another one for tooltip?
# Get prev/next link display text
$prev = wfMsgExt( 'prevn', array( 'parsemag', 'escape' ), $fmtLimit );
$next = wfMsgExt( 'nextn', array( 'parsemag', 'escape' ), $fmtLimit );
@@ -1221,6 +1631,7 @@ function wfViewPrevNext( $offset, $limit, $link, $query = '', $atend = false ) {
/**
* Generate links for (20|50|100...) items-per-page links
+ *
* @param $offset String
* @param $limit Integer
* @param $title Title
@@ -1242,16 +1653,17 @@ function wfNumLink( $offset, $limit, $title, $query = '' ) {
/**
* @todo document
- * @todo FIXME: we may want to blacklist some broken browsers
+ * @todo FIXME: We may want to blacklist some broken browsers
*
+ * @param $force Bool
* @return bool Whereas client accept gzip compression
*/
-function wfClientAcceptsGzip() {
+function wfClientAcceptsGzip( $force = false ) {
static $result = null;
- if ( $result === null ) {
+ if ( $result === null || $force ) {
$result = false;
if( isset( $_SERVER['HTTP_ACCEPT_ENCODING'] ) ) {
- # FIXME: we may want to blacklist some broken browsers
+ # @todo FIXME: We may want to blacklist some broken browsers
$m = array();
if( preg_match(
'/\bgzip(?:;(q)=([0-9]+(?:\.[0-9]+)))?\b/',
@@ -1275,8 +1687,8 @@ function wfClientAcceptsGzip() {
* Obtain the offset and limit values from the request string;
* used in special pages
*
- * @param $deflimit Default limit if none supplied
- * @param $optionname Name of a user preference to check against
+ * @param $deflimit Int default limit if none supplied
+ * @param $optionname String Name of a user preference to check against
* @return array
*
*/
@@ -1289,50 +1701,26 @@ function wfCheckLimits( $deflimit = 50, $optionname = 'rclimit' ) {
* Escapes the given text so that it may be output using addWikiText()
* without any linking, formatting, etc. making its way through. This
* is achieved by substituting certain characters with HTML entities.
- * As required by the callers, <nowiki> is not used. It currently does
- * not filter out characters which have special meaning only at the
- * start of a line, such as "*".
+ * As required by the callers, <nowiki> is not used.
*
* @param $text String: text to be escaped
+ * @return String
*/
function wfEscapeWikiText( $text ) {
- $text = str_replace(
- array( '[', '|', ']', '\'', 'ISBN ',
- 'RFC ', '://', "\n=", '{{', '}}' ),
- array( '&#91;', '&#124;', '&#93;', '&#39;', 'ISBN&#32;',
- 'RFC&#32;', '&#58;//', "\n&#61;", '&#123;&#123;', '&#125;&#125;' ),
- htmlspecialchars( $text )
- );
- return $text;
-}
-
-/**
- * @todo document
- */
-function wfQuotedPrintable( $string, $charset = '' ) {
- # Probably incomplete; see RFC 2045
- if( empty( $charset ) ) {
- global $wgInputEncoding;
- $charset = $wgInputEncoding;
- }
- $charset = strtoupper( $charset );
- $charset = str_replace( 'ISO-8859', 'ISO8859', $charset ); // ?
-
- $illegal = '\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\xff=';
- $replace = $illegal . '\t ?_';
- if( !preg_match( "/[$illegal]/", $string ) ) {
- return $string;
- }
- $out = "=?$charset?Q?";
- $out .= preg_replace( "/([$replace])/e", 'sprintf("=%02X",ord("$1"))', $string );
- $out .= '?=';
- return $out;
+ $text = strtr( "\n$text", array(
+ '"' => '&#34;', '&' => '&#38;', "'" => '&#39;', '<' => '&#60;',
+ '=' => '&#61;', '>' => '&#62;', '[' => '&#91;', ']' => '&#93;',
+ '{' => '&#123;', '|' => '&#124;', '}' => '&#125;',
+ "\n#" => "\n&#35;", "\n*" => "\n&#42;",
+ "\n:" => "\n&#58;", "\n;" => "\n&#59;",
+ '://' => '&#58;//', 'ISBN ' => 'ISBN&#32;', 'RFC ' => 'RFC&#32;',
+ ) );
+ return substr( $text, 1 );
}
-
/**
- * @todo document
- * @return float
+ * Get the current unix timetstamp with microseconds. Useful for profiling
+ * @return Float
*/
function wfTime() {
return microtime( true );
@@ -1342,6 +1730,11 @@ function wfTime() {
* Sets dest to source and returns the original value of dest
* If source is NULL, it just returns the value, it doesn't set the variable
* If force is true, it will set the value even if source is NULL
+ *
+ * @param $dest Mixed
+ * @param $source Mixed
+ * @param $force Bool
+ * @return Mixed
*/
function wfSetVar( &$dest, $source, $force = false ) {
$temp = $dest;
@@ -1353,6 +1746,10 @@ function wfSetVar( &$dest, $source, $force = false ) {
/**
* As for wfSetVar except setting a bit
+ *
+ * @param $dest Int
+ * @param $bit Int
+ * @param $state Bool
*/
function wfSetBit( &$dest, $bit, $state = true ) {
$temp = (bool)( $dest & $bit );
@@ -1367,121 +1764,15 @@ function wfSetBit( &$dest, $bit, $state = true ) {
}
/**
- * This function takes two arrays as input, and returns a CGI-style string, e.g.
- * "days=7&limit=100". Options in the first array override options in the second.
- * Options set to "" will not be output.
- */
-function wfArrayToCGI( $array1, $array2 = null ) {
- if ( !is_null( $array2 ) ) {
- $array1 = $array1 + $array2;
- }
-
- $cgi = '';
- foreach ( $array1 as $key => $value ) {
- if ( $value !== '' ) {
- if ( $cgi != '' ) {
- $cgi .= '&';
- }
- if ( is_array( $value ) ) {
- $firstTime = true;
- foreach ( $value as $v ) {
- $cgi .= ( $firstTime ? '' : '&') .
- urlencode( $key . '[]' ) . '=' .
- urlencode( $v );
- $firstTime = false;
- }
- } else {
- if ( is_object( $value ) ) {
- $value = $value->__toString();
- }
- $cgi .= urlencode( $key ) . '=' .
- urlencode( $value );
- }
- }
- }
- return $cgi;
-}
-
-/**
- * This is the logical opposite of wfArrayToCGI(): it accepts a query string as
- * its argument and returns the same string in array form. This allows compa-
- * tibility with legacy functions that accept raw query strings instead of nice
- * arrays. Of course, keys and values are urldecode()d. Don't try passing in-
- * valid query strings, or it will explode.
- *
- * @param $query String: query string
- * @return array Array version of input
- */
-function wfCgiToArray( $query ) {
- if( isset( $query[0] ) && $query[0] == '?' ) {
- $query = substr( $query, 1 );
- }
- $bits = explode( '&', $query );
- $ret = array();
- foreach( $bits as $bit ) {
- if( $bit === '' ) {
- continue;
- }
- list( $key, $value ) = explode( '=', $bit );
- $key = urldecode( $key );
- $value = urldecode( $value );
- $ret[$key] = $value;
- }
- return $ret;
-}
-
-/**
- * Append a query string to an existing URL, which may or may not already
- * have query string parameters already. If so, they will be combined.
- *
- * @param $url String
- * @param $query Mixed: string or associative array
- * @return string
- */
-function wfAppendQuery( $url, $query ) {
- if ( is_array( $query ) ) {
- $query = wfArrayToCGI( $query );
- }
- if( $query != '' ) {
- if( false === strpos( $url, '?' ) ) {
- $url .= '?';
- } else {
- $url .= '&';
- }
- $url .= $query;
- }
- return $url;
-}
-
-/**
- * Expand a potentially local URL to a fully-qualified URL. Assumes $wgServer
- * and $wgProto are correct.
- *
- * @todo this won't work with current-path-relative URLs
- * like "subdir/foo.html", etc.
- *
- * @param $url String: either fully-qualified or a local path + query
- * @return string Fully-qualified URL
- */
-function wfExpandUrl( $url ) {
- if( substr( $url, 0, 2 ) == '//' ) {
- global $wgProto;
- return $wgProto . ':' . $url;
- } elseif( substr( $url, 0, 1 ) == '/' ) {
- global $wgServer;
- return $wgServer . $url;
- } else {
- return $url;
- }
-}
-
-/**
* Windows-compatible version of escapeshellarg()
* Windows doesn't recognise single-quotes in the shell, but the escapeshellarg()
* function puts single quotes in regardless of OS.
*
* Also fixes the locale problems on Linux in PHP 5.2.6+ (bug backported to
* earlier distro releases of PHP)
+ *
+ * @param varargs
+ * @return String
*/
function wfEscapeShellArg( ) {
wfInitShellLocale();
@@ -1497,8 +1788,12 @@ function wfEscapeShellArg( ) {
}
if ( wfIsWindows() ) {
- // Escaping for an MSVC-style command line parser
- // Ref: http://mailman.lyra.org/pipermail/scite-interest/2002-March/000436.html
+ // Escaping for an MSVC-style command line parser and CMD.EXE
+ // Refs:
+ // * http://web.archive.org/web/20020708081031/http://mailman.lyra.org/pipermail/scite-interest/2002-March/000436.html
+ // * http://technet.microsoft.com/en-us/library/cc723564.aspx
+ // * Bug #13518
+ // * CR r63214
// Double the backslashes before any double quotes. Escape the double quotes.
$tokens = preg_split( '/(\\\\*")/', $arg, -1, PREG_SPLIT_DELIM_CAPTURE );
$arg = '';
@@ -1535,6 +1830,12 @@ function wfEscapeShellArg( ) {
/**
* wfMerge attempts to merge differences between three texts.
* Returns true for a clean merge and false for failure or a conflict.
+ *
+ * @param $old String
+ * @param $mine String
+ * @param $yours String
+ * @param $result String
+ * @return Bool
*/
function wfMerge( $old, $mine, $yours, &$result ) {
global $wgDiff3;
@@ -1604,6 +1905,7 @@ function wfMerge( $old, $mine, $yours, &$result ) {
/**
* Returns unified plain-text diff of two texts.
* Useful for machine processing of diffs.
+ *
* @param $before String: the text before the changes.
* @param $after String: the text after the changes.
* @param $params String: command-line options for the diff command.
@@ -1681,7 +1983,7 @@ function wfDiff( $before, $after, $params = '-u' ) {
function wfVarDump( $var ) {
global $wgOut;
$s = str_replace( "\n", "<br />\n", var_export( $var, true ) . "\n" );
- if ( headers_sent() || !@is_object( $wgOut ) ) {
+ if ( headers_sent() || !isset( $wgOut ) || !is_object( $wgOut ) ) {
print $s;
} else {
$wgOut->addHTML( $s );
@@ -1690,6 +1992,10 @@ function wfVarDump( $var ) {
/**
* Provide a simple HTTP error.
+ *
+ * @param $code Int|String
+ * @param $label String
+ * @param $desc String
*/
function wfHttpError( $code, $label, $desc ) {
global $wgOut;
@@ -1783,6 +2089,10 @@ function wfClearOutputBuffers() {
/**
* Converts an Accept-* header into an array mapping string values to quality
* factors
+ *
+ * @param $accept String
+ * @param $def String default
+ * @return Array
*/
function wfAcceptToPrefs( $accept, $def = '*/*' ) {
# No arg means accept anything (per HTTP spec)
@@ -1795,13 +2105,13 @@ function wfAcceptToPrefs( $accept, $def = '*/*' ) {
$parts = explode( ',', $accept );
foreach( $parts as $part ) {
- # FIXME: doesn't deal with params like 'text/html; level=1'
- @list( $value, $qpart ) = explode( ';', trim( $part ) );
+ # @todo FIXME: Doesn't deal with params like 'text/html; level=1'
+ $values = explode( ';', trim( $part ) );
$match = array();
- if( !isset( $qpart ) ) {
- $prefs[$value] = 1.0;
- } elseif( preg_match( '/q\s*=\s*(\d*\.\d+)/', $qpart, $match ) ) {
- $prefs[$value] = floatval( $match[1] );
+ if ( count( $values ) == 1 ) {
+ $prefs[$values[0]] = 1.0;
+ } elseif ( preg_match( '/q\s*=\s*(\d*\.\d+)/', $values[1], $match ) ) {
+ $prefs[$values[0]] = floatval( $match[1] );
}
}
@@ -1845,7 +2155,7 @@ function mimeTypeMatch( $type, $avail ) {
* @param $sprefs Array: server's offered types
* @return string
*
- * @todo FIXME: doesn't handle params like 'text/plain; charset=UTF-8'
+ * @todo FIXME: Doesn't handle params like 'text/plain; charset=UTF-8'
* XXX: generalize to negotiate other stuff
*/
function wfNegotiateType( $cprefs, $sprefs ) {
@@ -1885,27 +2195,9 @@ function wfNegotiateType( $cprefs, $sprefs ) {
}
/**
- * Array lookup
- * Returns an array where the values in the first array are replaced by the
- * values in the second array with the corresponding keys
- *
- * @return array
- */
-function wfArrayLookup( $a, $b ) {
- return array_flip( array_intersect( array_flip( $a ), array_keys( $b ) ) );
-}
-
-/**
- * Convenience function; returns MediaWiki timestamp for the present time.
- * @return string
- */
-function wfTimestampNow() {
- # return NOW
- return wfTimestamp( TS_MW, time() );
-}
-
-/**
* Reference-counted warning suppression
+ *
+ * @param $end Bool
*/
function wfSuppressWarnings( $end = false ) {
static $suppressCount = 0;
@@ -1920,7 +2212,11 @@ function wfSuppressWarnings( $end = false ) {
}
} else {
if ( !$suppressCount ) {
- $originalLevel = error_reporting( E_ALL & ~( E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE ) );
+ // E_DEPRECATED is undefined in PHP 5.2
+ if( !defined( 'E_DEPRECATED' ) ){
+ define( 'E_DEPRECATED', 8192 );
+ }
+ $originalLevel = error_reporting( E_ALL & ~( E_WARNING | E_NOTICE | E_USER_WARNING | E_USER_NOTICE | E_DEPRECATED ) );
}
++$suppressCount;
}
@@ -1987,13 +2283,13 @@ define( 'TS_POSTGRES', 7 );
define( 'TS_DB2', 8 );
/**
- * ISO 8601 basic format with no timezone: 19860209T200000Z
- *
- * This is used by ResourceLoader
+ * ISO 8601 basic format with no timezone: 19860209T200000Z. This is used by ResourceLoader
*/
define( 'TS_ISO_8601_BASIC', 9 );
/**
+ * Get a timestamp string in one of various formats
+ *
* @param $outputtype Mixed: A timestamp in one of the supported formats, the
* function will autodetect which format is supplied and act
* accordingly.
@@ -2036,7 +2332,7 @@ function wfTimestamp( $outputtype = TS_UNIX, $ts = 0 ) {
'\d\d?[ \t\r\n]*[A-Z][a-z]{2}[ \t\r\n]*\d{2}(?:\d{2})?' . # dd Mon yyyy
'[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d[ \t\r\n]*:[ \t\r\n]*\d\d/S', $ts ) ) { # hh:mm:ss
# TS_RFC2822, accepting a trailing comment. See http://www.squid-cache.org/mail-archive/squid-users/200307/0122.html / r77171
- # The regex is a superset of rfc2822 for readability
+ # The regex is a superset of rfc2822 for readability
$strtime = strtok( $ts, ';' );
} elseif ( preg_match( '/^[A-Z][a-z]{5,8}, \d\d-[A-Z][a-z]{2}-\d{2} \d\d:\d\d:\d\d/', $ts ) ) {
# TS_RFC850
@@ -2046,13 +2342,11 @@ function wfTimestamp( $outputtype = TS_UNIX, $ts = 0 ) {
$strtime = $ts;
} else {
# Bogus value...
- wfDebug("wfTimestamp() fed bogus time value: $outputtype; $ts\n");
-
+ wfDebug("wfTimestamp() fed bogus time value: TYPE=$outputtype; VALUE=$ts\n");
+
return false;
}
-
-
static $formats = array(
TS_UNIX => 'U',
TS_MW => 'YmdHis',
@@ -2082,12 +2376,12 @@ function wfTimestamp( $outputtype = TS_UNIX, $ts = 0 ) {
} else {
return false;
}
-
+
if ( !$d ) {
wfDebug("wfTimestamp() fed bogus time value: $outputtype; $ts\n");
return false;
}
-
+
$output = $d->format( $formats[$outputtype] );
} else {
if ( count( $da ) ) {
@@ -2120,6 +2414,7 @@ function wfTimestamp( $outputtype = TS_UNIX, $ts = 0 ) {
/**
* Return a formatted timestamp, or null if input is null.
* For dealing with nullable timestamp columns in the database.
+ *
* @param $outputtype Integer
* @param $ts String
* @return String
@@ -2133,6 +2428,16 @@ function wfTimestampOrNull( $outputtype = TS_UNIX, $ts = null ) {
}
/**
+ * Convenience function; returns MediaWiki timestamp for the present time.
+ *
+ * @return string
+ */
+function wfTimestampNow() {
+ # return NOW
+ return wfTimestamp( TS_MW, time() );
+}
+
+/**
* Check if the operating system is Windows
*
* @return Bool: true if it's Windows, False otherwise.
@@ -2146,7 +2451,19 @@ function wfIsWindows() {
}
/**
+ * Check if we are running under HipHop
+ *
+ * @return Bool
+ */
+function wfIsHipHop() {
+ return function_exists( 'hphp_thread_set_warmup_enabled' );
+}
+
+/**
* Swap two variables
+ *
+ * @param $x Mixed
+ * @param $y Mixed
*/
function swap( &$x, &$y ) {
$z = $x;
@@ -2154,116 +2471,6 @@ function swap( &$x, &$y ) {
$y = $z;
}
-function wfGetCachedNotice( $name ) {
- global $wgOut, $wgRenderHashAppend, $parserMemc;
- $fname = 'wfGetCachedNotice';
- wfProfileIn( $fname );
-
- $needParse = false;
-
- if( $name === 'default' ) {
- // special case
- global $wgSiteNotice;
- $notice = $wgSiteNotice;
- if( empty( $notice ) ) {
- wfProfileOut( $fname );
- return false;
- }
- } else {
- $notice = wfMsgForContentNoTrans( $name );
- if( wfEmptyMsg( $name, $notice ) || $notice == '-' ) {
- wfProfileOut( $fname );
- return( false );
- }
- }
-
- // Use the extra hash appender to let eg SSL variants separately cache.
- $key = wfMemcKey( $name . $wgRenderHashAppend );
- $cachedNotice = $parserMemc->get( $key );
- if( is_array( $cachedNotice ) ) {
- if( md5( $notice ) == $cachedNotice['hash'] ) {
- $notice = $cachedNotice['html'];
- } else {
- $needParse = true;
- }
- } else {
- $needParse = true;
- }
-
- if( $needParse ) {
- if( is_object( $wgOut ) ) {
- $parsed = $wgOut->parse( $notice );
- $parserMemc->set( $key, array( 'html' => $parsed, 'hash' => md5( $notice ) ), 600 );
- $notice = $parsed;
- } else {
- wfDebug( 'wfGetCachedNotice called for ' . $name . ' with no $wgOut available' . "\n" );
- $notice = '';
- }
- }
- $notice = '<div id="localNotice">' .$notice . '</div>';
- wfProfileOut( $fname );
- return $notice;
-}
-
-function wfGetNamespaceNotice() {
- global $wgTitle;
-
- # Paranoia
- if ( !isset( $wgTitle ) || !is_object( $wgTitle ) ) {
- return '';
- }
-
- $fname = 'wfGetNamespaceNotice';
- wfProfileIn( $fname );
-
- $key = 'namespacenotice-' . $wgTitle->getNsText();
- $namespaceNotice = wfGetCachedNotice( $key );
- if ( $namespaceNotice && substr( $namespaceNotice, 0, 7 ) != '<p>&lt;' ) {
- $namespaceNotice = '<div id="namespacebanner">' . $namespaceNotice . '</div>';
- } else {
- $namespaceNotice = '';
- }
-
- wfProfileOut( $fname );
- return $namespaceNotice;
-}
-
-function wfGetSiteNotice() {
- global $wgUser;
- $fname = 'wfGetSiteNotice';
- wfProfileIn( $fname );
- $siteNotice = '';
-
- if( wfRunHooks( 'SiteNoticeBefore', array( &$siteNotice ) ) ) {
- if( is_object( $wgUser ) && $wgUser->isLoggedIn() ) {
- $siteNotice = wfGetCachedNotice( 'sitenotice' );
- } else {
- $anonNotice = wfGetCachedNotice( 'anonnotice' );
- if( !$anonNotice ) {
- $siteNotice = wfGetCachedNotice( 'sitenotice' );
- } else {
- $siteNotice = $anonNotice;
- }
- }
- if( !$siteNotice ) {
- $siteNotice = wfGetCachedNotice( 'default' );
- }
- }
-
- wfRunHooks( 'SiteNoticeAfter', array( &$siteNotice ) );
- wfProfileOut( $fname );
- return $siteNotice;
-}
-
-/**
- * BC wrapper for MimeMagic::singleton()
- * @deprecated No longer needed as of 1.17 (r68836).
- */
-function &wfGetMimeMagic() {
- wfDeprecated( __FUNCTION__ );
- return MimeMagic::singleton();
-}
-
/**
* Tries to get the system directory for temporary files. The TMPDIR, TMP, and
* TEMP environment variables are then checked in sequence, and if none are set
@@ -2329,16 +2536,24 @@ function wfMkdirParents( $dir, $mode = null, $caller = null ) {
/**
* Increment a statistics counter
+ *
+ * @param $key String
+ * @param $count Int
*/
-function wfIncrStats( $key ) {
+function wfIncrStats( $key, $count = 1 ) {
global $wgStatsMethod;
+ $count = intval( $count );
+
if( $wgStatsMethod == 'udp' ) {
- global $wgUDPProfilerHost, $wgUDPProfilerPort, $wgDBname;
+ global $wgUDPProfilerHost, $wgUDPProfilerPort, $wgDBname, $wgAggregateStatsID;
static $socket;
+
+ $id = $wgAggregateStatsID !== false ? $wgAggregateStatsID : $wgDBname;
+
if ( !$socket ) {
$socket = socket_create( AF_INET, SOCK_DGRAM, SOL_UDP );
- $statline = "stats/{$wgDBname} - 1 1 1 1 1 -total\n";
+ $statline = "stats/{$id} - {$count} 1 1 1 1 -total\n";
socket_sendto(
$socket,
$statline,
@@ -2348,7 +2563,7 @@ function wfIncrStats( $key ) {
$wgUDPProfilerPort
);
}
- $statline = "stats/{$wgDBname} - 1 1 1 1 1 {$key}\n";
+ $statline = "stats/{$id} - {$count} 1 1 1 1 {$key}\n";
wfSuppressWarnings();
socket_sendto(
$socket,
@@ -2362,8 +2577,8 @@ function wfIncrStats( $key ) {
} elseif( $wgStatsMethod == 'cache' ) {
global $wgMemc;
$key = wfMemcKey( 'stats', $key );
- if ( is_null( $wgMemc->incr( $key ) ) ) {
- $wgMemc->add( $key, 1 );
+ if ( is_null( $wgMemc->incr( $key, $count ) ) ) {
+ $wgMemc->add( $key, $count );
}
} else {
// Disabled
@@ -2382,87 +2597,35 @@ function wfPercent( $nr, $acc = 2, $round = true ) {
}
/**
- * Encrypt a username/password.
- *
- * @param $userid Integer: ID of the user
- * @param $password String: password of the user
- * @return String: hashed password
- * @deprecated Use User::crypt() or User::oldCrypt() instead
- */
-function wfEncryptPassword( $userid, $password ) {
- wfDeprecated(__FUNCTION__);
- # Just wrap around User::oldCrypt()
- return User::oldCrypt( $password, $userid );
-}
-
-/**
- * Appends to second array if $value differs from that in $default
- */
-function wfAppendToArrayIfNotDefault( $key, $value, $default, &$changed ) {
- if ( is_null( $changed ) ) {
- throw new MWException( 'GlobalFunctions::wfAppendToArrayIfNotDefault got null' );
- }
- if ( $default[$key] !== $value ) {
- $changed[$key] = $value;
- }
-}
-
-/**
- * Since wfMsg() and co suck, they don't return false if the message key they
- * looked up didn't exist but a XHTML string, this function checks for the
- * nonexistance of messages by looking at wfMsg() output
- *
- * @param $key String: the message key looked up
- * @return Boolean True if the message *doesn't* exist.
- */
-function wfEmptyMsg( $key ) {
- global $wgMessageCache;
- return $wgMessageCache->get( $key, /*useDB*/true, /*content*/false ) === false;
-}
-
-/**
* Find out whether or not a mixed variable exists in a string
*
* @param $needle String
* @param $str String
+ * @param $insensitive Boolean
* @return Boolean
*/
-function in_string( $needle, $str ) {
- return strpos( $str, $needle ) !== false;
-}
+function in_string( $needle, $str, $insensitive = false ) {
+ $func = 'strpos';
+ if( $insensitive ) $func = 'stripos';
-function wfSpecialList( $page, $details ) {
- global $wgContLang;
- $details = $details ? ' ' . $wgContLang->getDirMark() . "($details)" : '';
- return $page . $details;
+ return $func( $str, $needle ) !== false;
}
/**
- * Returns a regular expression of url protocols
+ * Make a list item, used by various special pages
*
+ * @param $page String Page link
+ * @param $details String Text between brackets
+ * @param $oppositedm Boolean Add the direction mark opposite to your
+ * language, to display text properly
* @return String
*/
-function wfUrlProtocols() {
- global $wgUrlProtocols;
-
- static $retval = null;
- if ( !is_null( $retval ) ) {
- return $retval;
- }
-
- // Support old-style $wgUrlProtocols strings, for backwards compatibility
- // with LocalSettings files from 1.5
- if ( is_array( $wgUrlProtocols ) ) {
- $protocols = array();
- foreach ( $wgUrlProtocols as $protocol ) {
- $protocols[] = preg_quote( $protocol, '/' );
- }
-
- $retval = implode( '|', $protocols );
- } else {
- $retval = $wgUrlProtocols;
- }
- return $retval;
+function wfSpecialList( $page, $details, $oppositedm = true ) {
+ global $wgLang;
+ $dirmark = ( $oppositedm ? $wgLang->getDirMark( true ) : '' ) .
+ $wgLang->getDirMark();
+ $details = $details ? $dirmark . " ($details)" : '';
+ return $page . $details;
}
/**
@@ -2503,19 +2666,30 @@ function wfIniGetBool( $setting ) {
*
* @param $extension String A PHP extension. The file suffix (.so or .dll)
* should be omitted
+ * @param $fileName String Name of the library, if not $extension.suffix
* @return Bool - Whether or not the extension is loaded
*/
-function wfDl( $extension ) {
+function wfDl( $extension, $fileName = null ) {
if( extension_loaded( $extension ) ) {
return true;
}
- $canDl = ( function_exists( 'dl' ) && is_callable( 'dl' )
+ $canDl = false;
+ $sapi = php_sapi_name();
+ if( version_compare( PHP_VERSION, '5.3.0', '<' ) ||
+ $sapi == 'cli' || $sapi == 'cgi' || $sapi == 'embed' )
+ {
+ $canDl = ( function_exists( 'dl' ) && is_callable( 'dl' )
&& wfIniGetBool( 'enable_dl' ) && !wfIniGetBool( 'safe_mode' ) );
+ }
if( $canDl ) {
+ $fileName = $fileName ? $fileName : $extension;
+ if( wfIsWindows() ) {
+ $fileName = 'php_' . $fileName;
+ }
wfSuppressWarnings();
- dl( $extension . '.' . PHP_SHLIB_SUFFIX );
+ dl( $fileName . '.' . PHP_SHLIB_SUFFIX );
wfRestoreWarnings();
}
return extension_loaded( $extension );
@@ -2744,142 +2918,12 @@ function wfRelativePath( $path, $from ) {
}
/**
- * Backwards array plus for people who haven't bothered to read the PHP manual
- * XXX: will not darn your socks for you.
- *
- * @param $array1 Array
- * @param [$array2, [...]] Arrays
- * @return Array
- */
-function wfArrayMerge( $array1/* ... */ ) {
- $args = func_get_args();
- $args = array_reverse( $args, true );
- $out = array();
- foreach ( $args as $arg ) {
- $out += $arg;
- }
- return $out;
-}
-
-/**
- * Merge arrays in the style of getUserPermissionsErrors, with duplicate removal
- * e.g.
- * wfMergeErrorArrays(
- * array( array( 'x' ) ),
- * array( array( 'x', '2' ) ),
- * array( array( 'x' ) ),
- * array( array( 'y') )
- * );
- * returns:
- * array(
- * array( 'x', '2' ),
- * array( 'x' ),
- * array( 'y' )
- * )
- */
-function wfMergeErrorArrays( /*...*/ ) {
- $args = func_get_args();
- $out = array();
- foreach ( $args as $errors ) {
- foreach ( $errors as $params ) {
- # FIXME: sometimes get nested arrays for $params,
- # which leads to E_NOTICEs
- $spec = implode( "\t", $params );
- $out[$spec] = $params;
- }
- }
- return array_values( $out );
-}
-
-/**
- * parse_url() work-alike, but non-broken. Differences:
- *
- * 1) Does not raise warnings on bad URLs (just returns false)
- * 2) Handles protocols that don't use :// (e.g., mailto: and news:) correctly
- * 3) Adds a "delimiter" element to the array, either '://' or ':' (see (2))
- *
- * @param $url String: a URL to parse
- * @return Array: bits of the URL in an associative array, per PHP docs
- */
-function wfParseUrl( $url ) {
- global $wgUrlProtocols; // Allow all protocols defined in DefaultSettings/LocalSettings.php
- wfSuppressWarnings();
- $bits = parse_url( $url );
- wfRestoreWarnings();
- if ( !$bits ) {
- return false;
- }
-
- // most of the protocols are followed by ://, but mailto: and sometimes news: not, check for it
- if ( in_array( $bits['scheme'] . '://', $wgUrlProtocols ) ) {
- $bits['delimiter'] = '://';
- } elseif ( in_array( $bits['scheme'] . ':', $wgUrlProtocols ) ) {
- $bits['delimiter'] = ':';
- // parse_url detects for news: and mailto: the host part of an url as path
- // We have to correct this wrong detection
- if ( isset( $bits['path'] ) ) {
- $bits['host'] = $bits['path'];
- $bits['path'] = '';
- }
- } else {
- return false;
- }
-
- return $bits;
-}
-
-/**
- * Make a URL index, appropriate for the el_index field of externallinks.
- */
-function wfMakeUrlIndex( $url ) {
- $bits = wfParseUrl( $url );
-
- // Reverse the labels in the hostname, convert to lower case
- // For emails reverse domainpart only
- if ( $bits['scheme'] == 'mailto' ) {
- $mailparts = explode( '@', $bits['host'], 2 );
- if ( count( $mailparts ) === 2 ) {
- $domainpart = strtolower( implode( '.', array_reverse( explode( '.', $mailparts[1] ) ) ) );
- } else {
- // No domain specified, don't mangle it
- $domainpart = '';
- }
- $reversedHost = $domainpart . '@' . $mailparts[0];
- } else {
- $reversedHost = strtolower( implode( '.', array_reverse( explode( '.', $bits['host'] ) ) ) );
- }
- // Add an extra dot to the end
- // Why? Is it in wrong place in mailto links?
- if ( substr( $reversedHost, -1, 1 ) !== '.' ) {
- $reversedHost .= '.';
- }
- // Reconstruct the pseudo-URL
- $prot = $bits['scheme'];
- $index = $prot . $bits['delimiter'] . $reversedHost;
- // Leave out user and password. Add the port, path, query and fragment
- if ( isset( $bits['port'] ) ) {
- $index .= ':' . $bits['port'];
- }
- if ( isset( $bits['path'] ) ) {
- $index .= $bits['path'];
- } else {
- $index .= '/';
- }
- if ( isset( $bits['query'] ) ) {
- $index .= '?' . $bits['query'];
- }
- if ( isset( $bits['fragment'] ) ) {
- $index .= '#' . $bits['fragment'];
- }
- return $index;
-}
-
-/**
* Do any deferred updates and clear the list
*
- * @param $commit Boolean: commit after every update to prevent lock contention
+ * @param $commit String: set to 'commit' to commit after every update to
+ * prevent lock contention
*/
-function wfDoUpdates( $commit = false ) {
+function wfDoUpdates( $commit = '' ) {
global $wgDeferredUpdateList;
wfProfileIn( __METHOD__ );
@@ -2890,14 +2934,15 @@ function wfDoUpdates( $commit = false ) {
return;
}
- if ( $commit ) {
+ $doCommit = $commit == 'commit';
+ if ( $doCommit ) {
$dbw = wfGetDB( DB_MASTER );
}
foreach ( $wgDeferredUpdateList as $update ) {
$update->doUpdate();
- if ( $commit && $dbw->trxLevel() ) {
+ if ( $doCommit && $dbw->trxLevel() ) {
$dbw->commit();
}
}
@@ -2941,7 +2986,7 @@ function wfBaseConvert( $input, $sourceBase, $destBase, $pad = 1, $lowercase = t
// Decode and validate input string
$input = strtolower( $input );
for( $i = 0; $i < strlen( $input ); $i++ ) {
- $n = strpos( $digitChars, $input{$i} );
+ $n = strpos( $digitChars, $input[$i] );
if( $n === false || $n > $sourceBase ) {
return false;
}
@@ -2995,36 +3040,18 @@ function wfBaseConvert( $input, $sourceBase, $destBase, $pad = 1, $lowercase = t
/**
* Create an object with a given name and an array of construct parameters
+ *
* @param $name String
* @param $p Array: parameters
+ * @deprecated since 1.18, warnings in 1.18, removal in 1.20
*/
function wfCreateObject( $name, $p ) {
- $p = array_values( $p );
- switch ( count( $p ) ) {
- case 0:
- return new $name;
- case 1:
- return new $name( $p[0] );
- case 2:
- return new $name( $p[0], $p[1] );
- case 3:
- return new $name( $p[0], $p[1], $p[2] );
- case 4:
- return new $name( $p[0], $p[1], $p[2], $p[3] );
- case 5:
- return new $name( $p[0], $p[1], $p[2], $p[3], $p[4] );
- case 6:
- return new $name( $p[0], $p[1], $p[2], $p[3], $p[4], $p[5] );
- default:
- throw new MWException( 'Too many arguments to construtor in wfCreateObject' );
- }
+ wfDeprecated( __FUNCTION__ );
+ return MWFunction::newObj( $name, $p );
}
function wfHttpOnlySafe() {
global $wgHttpOnlyBlacklist;
- if( !version_compare( '5.2', PHP_VERSION, '<' ) ) {
- return false;
- }
if( isset( $_SERVER['HTTP_USER_AGENT'] ) ) {
foreach( $wgHttpOnlyBlacklist as $regex ) {
@@ -3039,18 +3066,31 @@ function wfHttpOnlySafe() {
/**
* Initialise php session
+ *
+ * @param $sessionId Bool
*/
function wfSetupSession( $sessionId = false ) {
global $wgSessionsInMemcached, $wgCookiePath, $wgCookieDomain,
$wgCookieSecure, $wgCookieHttpOnly, $wgSessionHandler;
if( $wgSessionsInMemcached ) {
- require_once( 'MemcachedSessions.php' );
+ if ( !defined( 'MW_COMPILED' ) ) {
+ global $IP;
+ require_once( "$IP/includes/cache/MemcachedSessions.php" );
+ }
+ session_set_save_handler( 'memsess_open', 'memsess_close', 'memsess_read',
+ 'memsess_write', 'memsess_destroy', 'memsess_gc' );
+
+ // It's necessary to register a shutdown function to call session_write_close(),
+ // because by the time the request shutdown function for the session module is
+ // called, $wgMemc has already been destroyed. Shutdown functions registered
+ // this way are called before object destruction.
+ register_shutdown_function( 'memsess_write_close' );
} elseif( $wgSessionHandler && $wgSessionHandler != ini_get( 'session.save_handler' ) ) {
# Only set this if $wgSessionHandler isn't null and session.save_handler
# hasn't already been set to the desired value (that causes errors)
ini_set( 'session.save_handler', $wgSessionHandler );
}
- $httpOnlySafe = wfHttpOnlySafe();
+ $httpOnlySafe = wfHttpOnlySafe() && $wgCookieHttpOnly;
wfDebugLog( 'cookie',
'session_set_cookie_params: "' . implode( '", "',
array(
@@ -3058,13 +3098,8 @@ function wfSetupSession( $sessionId = false ) {
$wgCookiePath,
$wgCookieDomain,
$wgCookieSecure,
- $httpOnlySafe && $wgCookieHttpOnly ) ) . '"' );
- if( $httpOnlySafe && $wgCookieHttpOnly ) {
- session_set_cookie_params( 0, $wgCookiePath, $wgCookieDomain, $wgCookieSecure, $wgCookieHttpOnly );
- } else {
- // PHP 5.1 throws warnings if you pass the HttpOnly parameter for 5.2.
- session_set_cookie_params( 0, $wgCookiePath, $wgCookieDomain, $wgCookieSecure );
- }
+ $httpOnlySafe ) ) . '"' );
+ session_set_cookie_params( 0, $wgCookiePath, $wgCookieDomain, $wgCookieSecure, $httpOnlySafe );
session_cache_limiter( 'private, must-revalidate' );
if ( $sessionId ) {
session_id( $sessionId );
@@ -3077,6 +3112,7 @@ function wfSetupSession( $sessionId = false ) {
/**
* Get an object from the precompiled serialized directory
*
+ * @param $name String
* @return Mixed: the variable on success, false on failure
*/
function wfGetPrecompiledData( $name ) {
@@ -3092,43 +3128,11 @@ function wfGetPrecompiledData( $name ) {
return false;
}
-function wfGetCaller( $level = 2 ) {
- $backtrace = wfDebugBacktrace();
- if ( isset( $backtrace[$level] ) ) {
- return wfFormatStackFrame( $backtrace[$level] );
- } else {
- $caller = 'unknown';
- }
- return $caller;
-}
-
-/**
- * Return a string consisting of callers in the stack. Useful sometimes
- * for profiling specific points.
- *
- * @param $limit The maximum depth of the stack frame to return, or false for
- * the entire stack.
- */
-function wfGetAllCallers( $limit = 3 ) {
- $trace = array_reverse( wfDebugBacktrace() );
- if ( !$limit || $limit > count( $trace ) - 1 ) {
- $limit = count( $trace ) - 1;
- }
- $trace = array_slice( $trace, -$limit - 1, $limit );
- return implode( '/', array_map( 'wfFormatStackFrame', $trace ) );
-}
-
-/**
- * Return a string representation of frame
- */
-function wfFormatStackFrame( $frame ) {
- return isset( $frame['class'] ) ?
- $frame['class'] . '::' . $frame['function'] :
- $frame['function'];
-}
-
/**
* Get a cache key
+ *
+ * @param varargs
+ * @return String
*/
function wfMemcKey( /*... */ ) {
$args = func_get_args();
@@ -3139,6 +3143,11 @@ function wfMemcKey( /*... */ ) {
/**
* Get a cache key for a foreign DB
+ *
+ * @param $db String
+ * @param $prefix String
+ * @param varargs String
+ * @return String
*/
function wfForeignMemcKey( $db, $prefix /*, ... */ ) {
$args = array_slice( func_get_args(), 2 );
@@ -3153,6 +3162,8 @@ function wfForeignMemcKey( $db, $prefix /*, ... */ ) {
/**
* Get an ASCII string identifying this wiki
* This is used as a prefix in memcached keys
+ *
+ * @return String
*/
function wfWikiID() {
global $wgDBprefix, $wgDBname;
@@ -3165,6 +3176,9 @@ function wfWikiID() {
/**
* Split a wiki ID into DB name and table prefix
+ *
+ * @param $wiki String
+ * @param $bits String
*/
function wfSplitWikiID( $wiki ) {
$bits = explode( '-', $wiki, 2 );
@@ -3176,6 +3190,7 @@ function wfSplitWikiID( $wiki ) {
/**
* Get a Database object.
+ *
* @param $db Integer: index of the connection to get. May be DB_MASTER for the
* master (for write queries), DB_SLAVE for potentially lagged read
* queries, or an integer >= 0 for a particular server.
@@ -3190,6 +3205,9 @@ function wfSplitWikiID( $wiki ) {
* will always return the same object, unless the underlying connection or load
* balancer is manually destroyed.
*
+ * Note 2: use $this->getDB() in maintenance scripts that may be invoked by
+ * updater to ensure that a proper database is being updated.
+ *
* @return DatabaseBase
*/
function &wfGetDB( $db, $groups = array(), $wiki = false ) {
@@ -3208,6 +3226,8 @@ function wfGetLB( $wiki = false ) {
/**
* Get the load balancer factory object
+ *
+ * @return LBFactory
*/
function &wfGetLBFactory() {
return LBFactory::singleton();
@@ -3216,6 +3236,7 @@ function &wfGetLBFactory() {
/**
* Find a file.
* Shortcut for RepoGroup::singleton()->findFile()
+ *
* @param $title String or Title object
* @param $options Associative array of options:
* time: requested time for an archived image, or false for the
@@ -3239,6 +3260,7 @@ function wfFindFile( $title, $options = array() ) {
/**
* Get an object referring to a locally registered file.
* Returns a valid placeholder object if the file does not exist.
+ *
* @param $title Title or String
* @return File, or null if passed an invalid Title
*/
@@ -3250,6 +3272,7 @@ function wfLocalFile( $title ) {
* Should low-performance queries be disabled?
*
* @return Boolean
+ * @codeCoverageIgnore
*/
function wfQueriesMustScale() {
global $wgMiserMode;
@@ -3307,14 +3330,16 @@ function wfBoolToStr( $value ) {
/**
* Load an extension messages file
- * @deprecated in 1.16 (warnings in 1.18, removed in ?)
+ *
+ * @deprecated since 1.16, warnings in 1.18, remove in 1.20
+ * @codeCoverageIgnore
*/
-function wfLoadExtensionMessages( $extensionName, $langcode = false ) {
+function wfLoadExtensionMessages() {
+ wfDeprecated( __FUNCTION__ );
}
/**
- * Get a platform-independent path to the null file, e.g.
- * /dev/null
+ * Get a platform-independent path to the null file, e.g. /dev/null
*
* @return string
*/
@@ -3325,27 +3350,8 @@ function wfGetNull() {
}
/**
- * Displays a maxlag error
- *
- * @param $host String: server that lags the most
- * @param $lag Integer: maxlag (actual)
- * @param $maxLag Integer: maxlag (requested)
- */
-function wfMaxlagError( $host, $lag, $maxLag ) {
- global $wgShowHostnames;
- header( 'HTTP/1.1 503 Service Unavailable' );
- header( 'Retry-After: ' . max( intval( $maxLag ), 5 ) );
- header( 'X-Database-Lag: ' . intval( $lag ) );
- header( 'Content-Type: text/plain' );
- if( $wgShowHostnames ) {
- echo "Waiting for $host: $lag seconds lagged\n";
- } else {
- echo "Waiting for a database server: $lag seconds lagged\n";
- }
-}
-
-/**
* Throws a warning that $function is deprecated
+ *
* @param $function String
* @return null
*/
@@ -3362,32 +3368,33 @@ function wfDeprecated( $function ) {
* $wgDevelopmentWarnings
*
* @param $msg String: message to send
- * @param $callerOffset Integer: number of itmes to go back in the backtrace to
+ * @param $callerOffset Integer: number of items to go back in the backtrace to
* find the correct caller (1 = function calling wfWarn, ...)
* @param $level Integer: PHP error level; only used when $wgDevelopmentWarnings
* is true
*/
function wfWarn( $msg, $callerOffset = 1, $level = E_USER_NOTICE ) {
+ global $wgDevelopmentWarnings;
+
$callers = wfDebugBacktrace();
- if( isset( $callers[$callerOffset + 1] ) ){
+ if ( isset( $callers[$callerOffset + 1] ) ) {
$callerfunc = $callers[$callerOffset + 1];
$callerfile = $callers[$callerOffset];
- if( isset( $callerfile['file'] ) && isset( $callerfile['line'] ) ) {
+ if ( isset( $callerfile['file'] ) && isset( $callerfile['line'] ) ) {
$file = $callerfile['file'] . ' at line ' . $callerfile['line'];
} else {
$file = '(internal function)';
}
$func = '';
- if( isset( $callerfunc['class'] ) ) {
+ if ( isset( $callerfunc['class'] ) ) {
$func .= $callerfunc['class'] . '::';
}
- if( isset( $callerfunc['function'] ) ) {
+ if ( isset( $callerfunc['function'] ) ) {
$func .= $callerfunc['function'];
}
$msg .= " [Called from $func in $file]";
}
- global $wgDevelopmentWarnings;
if ( $wgDevelopmentWarnings ) {
trigger_error( $msg, $level );
} else {
@@ -3396,44 +3403,35 @@ function wfWarn( $msg, $callerOffset = 1, $level = E_USER_NOTICE ) {
}
/**
- * Sleep until the worst slave's replication lag is less than or equal to
- * $maxLag, in seconds. Use this when updating very large numbers of rows, as
+ * Modern version of wfWaitForSlaves(). Instead of looking at replication lag
+ * and waiting for it to go down, this waits for the slaves to catch up to the
+ * master position. Use this when updating very large numbers of rows, as
* in maintenance scripts, to avoid causing too much lag. Of course, this is
* a no-op if there are no slaves.
*
- * Every time the function has to wait for a slave, it will print a message to
- * that effect (and then sleep for a little while), so it's probably not best
- * to use this outside maintenance scripts in its present form.
- *
- * @param $maxLag Integer
+ * @param $maxLag Integer (deprecated)
* @param $wiki mixed Wiki identifier accepted by wfGetLB
* @return null
*/
-function wfWaitForSlaves( $maxLag, $wiki = false ) {
- if( $maxLag ) {
- $lb = wfGetLB( $wiki );
- list( $host, $lag ) = $lb->getMaxLag( $wiki );
- while( $lag > $maxLag ) {
- wfSuppressWarnings();
- $name = gethostbyaddr( $host );
- wfRestoreWarnings();
- if( $name !== false ) {
- $host = $name;
- }
- print "Waiting for $host (lagged $lag seconds)...\n";
- sleep( $maxLag );
- list( $host, $lag ) = $lb->getMaxLag();
- }
+function wfWaitForSlaves( $maxLag = false, $wiki = false ) {
+ $lb = wfGetLB( $wiki );
+ // bug 27975 - Don't try to wait for slaves if there are none
+ // Prevents permission error when getting master position
+ if ( $lb->getServerCount() > 1 ) {
+ $dbw = $lb->getConnection( DB_MASTER );
+ $pos = $dbw->getMasterPos();
+ $lb->waitForAll( $pos );
}
}
/**
* Used to be used for outputting text in the installer/updater
- * @deprecated Warnings in 1.19, removal in 1.20
+ * @deprecated since 1.18, warnings in 1.18, remove in 1.20
*/
function wfOut( $s ) {
+ wfDeprecated( __METHOD__ );
global $wgCommandLineMode;
- if ( $wgCommandLineMode && !defined( 'MEDIAWIKI_INSTALL' ) ) {
+ if ( $wgCommandLineMode ) {
echo $s;
} else {
echo htmlspecialchars( $s );
@@ -3444,6 +3442,7 @@ function wfOut( $s ) {
/**
* Count down from $n to zero on the terminal, with a one-second pause
* between showing each number. For use in command-line scripts.
+ * @codeCoverageIgnore
*/
function wfCountDown( $n ) {
for ( $i = $n; $i >= 0; $i-- ) {
@@ -3463,6 +3462,8 @@ function wfCountDown( $n ) {
* Generate a random 32-character hexadecimal token.
* @param $salt Mixed: some sort of salt, if necessary, to add to random
* characters before hashing.
+ * @return string
+ * @codeCoverageIgnore
*/
function wfGenerateToken( $salt = '' ) {
$salt = serialize( $salt );
@@ -3471,7 +3472,9 @@ function wfGenerateToken( $salt = '' ) {
/**
* Replace all invalid characters with -
+ *
* @param $name Mixed: filename to process
+ * @return String
*/
function wfStripIllegalFilenameChars( $name ) {
global $wgIllegalFileChars;
@@ -3487,46 +3490,8 @@ function wfStripIllegalFilenameChars( $name ) {
}
/**
- * Insert array into another array after the specified *KEY*
- * @param $array Array: The array.
- * @param $insert Array: The array to insert.
- * @param $after Mixed: The key to insert after
- */
-function wfArrayInsertAfter( $array, $insert, $after ) {
- // Find the offset of the element to insert after.
- $keys = array_keys( $array );
- $offsetByKey = array_flip( $keys );
-
- $offset = $offsetByKey[$after];
-
- // Insert at the specified offset
- $before = array_slice( $array, 0, $offset + 1, true );
- $after = array_slice( $array, $offset + 1, count( $array ) - $offset, true );
-
- $output = $before + $insert + $after;
-
- return $output;
-}
-
-/* Recursively converts the parameter (an object) to an array with the same data */
-function wfObjectToArray( $objOrArray, $recursive = true ) {
- $array = array();
- if( is_object( $objOrArray ) ) {
- $objOrArray = get_object_vars( $objOrArray );
- }
- foreach ( $objOrArray as $key => $value ) {
- if ( $recursive && ( is_object( $value ) || is_array( $value ) ) ) {
- $value = wfObjectToArray( $value );
- }
-
- $array[$key] = $value;
- }
-
- return $array;
-}
-
-/**
* Set PHP's memory limit to the larger of php.ini or $wgMemoryLimit;
+ *
* @return Integer value memory was set to.
*/
function wfMemoryLimit() {
@@ -3553,6 +3518,7 @@ function wfMemoryLimit() {
/**
* Converts shorthand byte notation to integer form
+ *
* @param $string String
* @return Integer
*/
@@ -3582,19 +3548,25 @@ function wfShorthandToInteger( $string = '' ) {
/**
* Get the normalised IETF language tag
+ * See unit test for examples.
+ *
* @param $code String: The language code.
* @return $langCode String: The language code which complying with BCP 47 standards.
*/
function wfBCP47( $code ) {
$codeSegment = explode( '-', $code );
+ $codeBCP = array();
foreach ( $codeSegment as $segNo => $seg ) {
if ( count( $codeSegment ) > 0 ) {
+ // when previous segment is x, it is a private segment and should be lc
+ if( $segNo > 0 && strtolower( $codeSegment[($segNo - 1)] ) == 'x') {
+ $codeBCP[$segNo] = strtolower( $seg );
// ISO 3166 country code
- if ( ( strlen( $seg ) == 2 ) && ( $segNo > 0 ) ) {
+ } elseif ( ( strlen( $seg ) == 2 ) && ( $segNo > 0 ) ) {
$codeBCP[$segNo] = strtoupper( $seg );
// ISO 15924 script code
} elseif ( ( strlen( $seg ) == 4 ) && ( $segNo > 0 ) ) {
- $codeBCP[$segNo] = ucfirst( $seg );
+ $codeBCP[$segNo] = ucfirst( strtolower( $seg ) );
// Use lowercase for other cases
} else {
$codeBCP[$segNo] = strtolower( $seg );
@@ -3608,13 +3580,89 @@ function wfBCP47( $code ) {
return $langCode;
}
-function wfArrayMap( $function, $input ) {
- $ret = array_map( $function, $input );
- foreach ( $ret as $key => $value ) {
- $taint = istainted( $input[$key] );
- if ( $taint ) {
- taint( $ret[$key], $taint );
+/**
+ * Get a cache object.
+ *
+ * @param $inputType integer Cache type, one the the CACHE_* constants.
+ * @return BagOStuff
+ */
+function wfGetCache( $inputType ) {
+ return ObjectCache::getInstance( $inputType );
+}
+
+/**
+ * Get the main cache object
+ *
+ * @return BagOStuff
+ */
+function wfGetMainCache() {
+ global $wgMainCacheType;
+ return ObjectCache::getInstance( $wgMainCacheType );
+}
+
+/**
+ * Get the cache object used by the message cache
+ *
+ * @return BagOStuff
+ */
+function wfGetMessageCacheStorage() {
+ global $wgMessageCacheType;
+ return ObjectCache::getInstance( $wgMessageCacheType );
+}
+
+/**
+ * Get the cache object used by the parser cache
+ *
+ * @return BagOStuff
+ */
+function wfGetParserCacheStorage() {
+ global $wgParserCacheType;
+ return ObjectCache::getInstance( $wgParserCacheType );
+}
+
+/**
+ * Call hook functions defined in $wgHooks
+ *
+ * @param $event String: event name
+ * @param $args Array: parameters passed to hook functions
+ * @return Boolean
+ */
+function wfRunHooks( $event, $args = array() ) {
+ return Hooks::run( $event, $args );
+}
+
+/**
+ * Wrapper around php's unpack.
+ *
+ * @param $format String: The format string (See php's docs)
+ * @param $data: A binary string of binary data
+ * @param $length integer or false: The minimun length of $data. This is to
+ * prevent reading beyond the end of $data. false to disable the check.
+ *
+ * Also be careful when using this function to read unsigned 32 bit integer
+ * because php might make it negative.
+ *
+ * @throws MWException if $data not long enough, or if unpack fails
+ * @return Associative array of the extracted data
+ */
+function wfUnpack( $format, $data, $length=false ) {
+ if ( $length !== false ) {
+ $realLen = strlen( $data );
+ if ( $realLen < $length ) {
+ throw new MWException( "Tried to use wfUnpack on a "
+ . "string of length $realLen, but needed one "
+ . "of at least length $length."
+ );
}
}
- return $ret;
+
+ wfSuppressWarnings();
+ $result = unpack( $format, $data );
+ wfRestoreWarnings();
+
+ if ( $result === false ) {
+ // If it cannot extract the packed data.
+ throw new MWException( "unpack could not unpack binary data" );
+ }
+ return $result;
}
diff --git a/includes/HTMLForm.php b/includes/HTMLForm.php
index be912daf..948de61f 100644
--- a/includes/HTMLForm.php
+++ b/includes/HTMLForm.php
@@ -33,6 +33,10 @@
* 'help-message' -- message key for a message to use as a help text.
* can be an array of msg key and then parameters to
* the message.
+ * Overwrites 'help-messages'.
+ * 'help-messages' -- array of message key. As above, each item can
+ * be an array of msg key and then parameters.
+ * Overwrites 'help-message'.
* 'required' -- passed through to the object, indicating that it
* is a required field.
* 'size' -- the length of text fields
@@ -50,7 +54,6 @@
* TODO: Document 'section' / 'subsection' stuff
*/
class HTMLForm {
- static $jsAdded = false;
# A mapping of 'type' inputs onto standard HTMLFormField subclasses
static $typeMappings = array(
@@ -65,6 +68,7 @@ class HTMLForm {
'float' => 'HTMLFloatField',
'info' => 'HTMLInfoField',
'selectorother' => 'HTMLSelectOrOtherField',
+ 'selectandother' => 'HTMLSelectAndOtherField',
'submit' => 'HTMLSubmitField',
'hidden' => 'HTMLHiddenField',
'edittools' => 'HTMLEditTools',
@@ -88,6 +92,8 @@ class HTMLForm {
protected $mPre = '';
protected $mHeader = '';
protected $mFooter = '';
+ protected $mSectionHeaders = array();
+ protected $mSectionFooters = array();
protected $mPost = '';
protected $mId;
@@ -95,6 +101,8 @@ class HTMLForm {
protected $mSubmitName;
protected $mSubmitText;
protected $mSubmitTooltip;
+
+ protected $mContext; // <! IContextSource
protected $mTitle;
protected $mMethod = 'post';
@@ -107,10 +115,22 @@ class HTMLForm {
/**
* Build a new HTMLForm from an array of field attributes
* @param $descriptor Array of Field constructs, as described above
+ * @param $context IContextSource available since 1.18, will become compulsory in 1.18.
+ * Obviates the need to call $form->setTitle()
* @param $messagePrefix String a prefix to go in front of default messages
*/
- public function __construct( $descriptor, $messagePrefix = '' ) {
- $this->mMessagePrefix = $messagePrefix;
+ public function __construct( $descriptor, /*IContextSource*/ $context = null, $messagePrefix = '' ) {
+ if( $context instanceof IContextSource ){
+ $this->mContext = $context;
+ $this->mTitle = false; // We don't need them to set a title
+ $this->mMessagePrefix = $messagePrefix;
+ } else {
+ // B/C since 1.18
+ if( is_string( $context ) && $messagePrefix === '' ){
+ // it's actually $messagePrefix
+ $this->mMessagePrefix = $context;
+ }
+ }
// Expand out into a tree.
$loadedDescriptor = array();
@@ -153,14 +173,9 @@ class HTMLForm {
/**
* Add the HTMLForm-specific JavaScript, if it hasn't been
* done already.
+ * @deprecated since 1.18 load modules with ResourceLoader instead
*/
- static function addJS() {
- if ( self::$jsAdded ) return;
-
- global $wgOut;
-
- $wgOut->addModules( 'mediawiki.legacy.htmlform' );
- }
+ static function addJS() { }
/**
* Initialise a new Object for the field
@@ -173,12 +188,14 @@ class HTMLForm {
} elseif ( isset( $descriptor['type'] ) ) {
$class = self::$typeMappings[$descriptor['type']];
$descriptor['class'] = $class;
+ } else {
+ $class = null;
}
if ( !$class ) {
throw new MWException( "Descriptor with no class: " . print_r( $descriptor, true ) );
}
-
+
$descriptor['fieldname'] = $fieldname;
$obj = new $class( $descriptor );
@@ -191,27 +208,23 @@ class HTMLForm {
*/
function prepareForm() {
# Check if we have the info we need
- if ( ! $this->mTitle ) {
+ if ( !$this->mTitle instanceof Title && $this->mTitle !== false ) {
throw new MWException( "You must call setTitle() on an HTMLForm" );
}
- // FIXME shouldn't this be closer to displayForm() ?
- self::addJS();
-
# Load data from the request.
$this->loadData();
}
/**
* Try submitting, with edit token check first
- * @return Status|boolean
+ * @return Status|boolean
*/
function tryAuthorizedSubmit() {
- global $wgUser, $wgRequest;
- $editToken = $wgRequest->getVal( 'wpEditToken' );
+ $editToken = $this->getRequest()->getVal( 'wpEditToken' );
$result = false;
- if ( $this->getMethod() != 'post' || $wgUser->matchEditToken( $editToken ) ) {
+ if ( $this->getMethod() != 'post' || $this->getUser()->matchEditToken( $editToken ) ) {
$result = $this->trySubmit();
}
return $result;
@@ -304,14 +317,34 @@ class HTMLForm {
/**
* Add header text, inside the form.
* @param $msg String complete text of message to display
+ * @param $section The section to add the header to
*/
- function addHeaderText( $msg ) { $this->mHeader .= $msg; }
+ function addHeaderText( $msg, $section = null ) {
+ if ( is_null( $section ) ) {
+ $this->mHeader .= $msg;
+ } else {
+ if ( !isset( $this->mSectionHeaders[$section] ) ) {
+ $this->mSectionHeaders[$section] = '';
+ }
+ $this->mSectionHeaders[$section] .= $msg;
+ }
+ }
/**
* Add footer text, inside the form.
* @param $msg String complete text of message to display
+ * @param $section string The section to add the footer text to
*/
- function addFooterText( $msg ) { $this->mFooter .= $msg; }
+ function addFooterText( $msg, $section = null ) {
+ if ( is_null( $section ) ) {
+ $this->mFooter .= $msg;
+ } else {
+ if ( !isset( $this->mSectionFooters[$section] ) ) {
+ $this->mSectionFooters[$section] = '';
+ }
+ $this->mSectionFooters[$section] .= $msg;
+ }
+ }
/**
* Add text to the end of the display.
@@ -340,10 +373,9 @@ class HTMLForm {
* @param $submitResult Mixed output from HTMLForm::trySubmit()
*/
function displayForm( $submitResult ) {
- global $wgOut;
-
# For good measure (it is the default)
- $wgOut->preventClickjacking();
+ $this->getOutput()->preventClickjacking();
+ $this->getOutput()->addModules( 'mediawiki.htmlform' );
$html = ''
. $this->getErrors( $submitResult )
@@ -356,7 +388,7 @@ class HTMLForm {
$html = $this->wrapForm( $html );
- $wgOut->addHTML( ''
+ $this->getOutput()->addHTML( ''
. $this->mPre
. $html
. $this->mPost
@@ -397,12 +429,15 @@ class HTMLForm {
* @return String HTML.
*/
function getHiddenFields() {
- global $wgUser;
+ global $wgUsePathInfo;
$html = '';
-
if( $this->getMethod() == 'post' ){
- $html .= Html::hidden( 'wpEditToken', $wgUser->editToken(), array( 'id' => 'wpEditToken' ) ) . "\n";
+ $html .= Html::hidden( 'wpEditToken', $this->getUser()->editToken(), array( 'id' => 'wpEditToken' ) ) . "\n";
+ $html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
+ }
+
+ if ( !$wgUsePathInfo && $this->getMethod() == 'get' ) {
$html .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) . "\n";
}
@@ -431,8 +466,7 @@ class HTMLForm {
}
if ( isset( $this->mSubmitTooltip ) ) {
- global $wgUser;
- $attribs += $wgUser->getSkin()->tooltipAndAccessKeyAttribs( $this->mSubmitTooltip );
+ $attribs += Linker::tooltipAndAccesskeyAttribs( $this->mSubmitTooltip );
}
$attribs['class'] = 'mw-htmlform-submit';
@@ -479,16 +513,15 @@ class HTMLForm {
/**
* Format and display an error message stack.
- * @param $errors Mixed String or Array of message keys
+ * @param $errors String|Array|Status
* @return String
*/
function getErrors( $errors ) {
if ( $errors instanceof Status ) {
- global $wgOut;
if ( $errors->isOK() ) {
$errorstr = '';
} else {
- $errorstr = $wgOut->parse( $errors->getWikiText() );
+ $errorstr = $this->getOutput()->parse( $errors->getWikiText() );
}
} elseif ( is_array( $errors ) ) {
$errorstr = $this->formatErrors( $errors );
@@ -506,7 +539,7 @@ class HTMLForm {
* @param $errors Array of message keys/values
* @return String HTML, a <ul> list of errors
*/
- static function formatErrors( $errors ) {
+ public static function formatErrors( $errors ) {
$errorstr = '';
foreach ( $errors as $error ) {
@@ -519,7 +552,7 @@ class HTMLForm {
$errorstr .= Html::rawElement(
'li',
- null,
+ array(),
wfMsgExt( $msg, array( 'parseinline' ), $error )
);
}
@@ -557,7 +590,8 @@ class HTMLForm {
/**
* Set the id for the submit button.
- * @param $t String. FIXME: Integrity is *not* validated
+ * @param $t String.
+ * @todo FIXME: Integrity of $t is *not* validated
*/
function setSubmitID( $t ) {
$this->mSubmitID = $t;
@@ -597,9 +631,41 @@ class HTMLForm {
* @return Title
*/
function getTitle() {
- return $this->mTitle;
+ return $this->mTitle === false
+ ? $this->getContext()->getTitle()
+ : $this->mTitle;
+ }
+
+ /**
+ * @return IContextSource
+ */
+ public function getContext(){
+ return $this->mContext instanceof IContextSource
+ ? $this->mContext
+ : RequestContext::getMain();
+ }
+
+ /**
+ * @return OutputPage
+ */
+ public function getOutput(){
+ return $this->getContext()->getOutput();
+ }
+
+ /**
+ * @return WebRequest
+ */
+ public function getRequest(){
+ return $this->getContext()->getRequest();
}
-
+
+ /**
+ * @return User
+ */
+ public function getUser(){
+ return $this->getContext()->getUser();
+ }
+
/**
* Set the method used to submit the form
* @param $method String
@@ -607,16 +673,18 @@ class HTMLForm {
public function setMethod( $method='post' ){
$this->mMethod = $method;
}
-
+
public function getMethod(){
return $this->mMethod;
}
/**
* TODO: Document
- * @param $fields
+ * @param $fields array of fields (either arrays or objects)
+ * @param $sectionName string ID attribute of the <table> tag for this section, ignored if empty
+ * @param $fieldsetIDPrefix string ID prefix for the <fieldset> tag of each subsection, ignored if empty
*/
- function displaySection( $fields, $sectionName = '' ) {
+ function displaySection( $fields, $sectionName = '', $fieldsetIDPrefix = '' ) {
$tableHtml = '';
$subsectionHtml = '';
$hasLeftColumn = false;
@@ -632,8 +700,18 @@ class HTMLForm {
$hasLeftColumn = true;
} elseif ( is_array( $value ) ) {
$section = $this->displaySection( $value, $key );
- $legend = wfMsg( "{$this->mMessagePrefix}-$key" );
- $subsectionHtml .= Xml::fieldset( $legend, $section ) . "\n";
+ $legend = $this->getLegend( $key );
+ if ( isset( $this->mSectionHeaders[$key] ) ) {
+ $section = $this->mSectionHeaders[$key] . $section;
+ }
+ if ( isset( $this->mSectionFooters[$key] ) ) {
+ $section .= $this->mSectionFooters[$key];
+ }
+ $attributes = array();
+ if ( $fieldsetIDPrefix ) {
+ $attributes['id'] = Sanitizer::escapeId( "$fieldsetIDPrefix$key" );
+ }
+ $subsectionHtml .= Xml::fieldset( $legend, $section, $attributes ) . "\n";
}
}
@@ -661,8 +739,6 @@ class HTMLForm {
* Construct the form fields from the Descriptor array
*/
function loadData() {
- global $wgRequest;
-
$fieldData = array();
foreach ( $this->mFlatFields as $fieldname => $field ) {
@@ -671,7 +747,7 @@ class HTMLForm {
} elseif ( !empty( $field->mParams['disabled'] ) ) {
$fieldData[$fieldname] = $field->getDefault();
} else {
- $fieldData[$fieldname] = $field->loadDataFromRequest( $wgRequest );
+ $fieldData[$fieldname] = $field->loadDataFromRequest( $this->getRequest() );
}
}
@@ -703,6 +779,16 @@ class HTMLForm {
function filterDataForSubmit( $data ) {
return $data;
}
+
+ /**
+ * Get a string to go in the <legend> of a section fieldset. Override this if you
+ * want something more complicated
+ * @param $key String
+ * @return String
+ */
+ public function getLegend( $key ) {
+ return wfMsg( "{$this->mMessagePrefix}-$key" );
+ }
}
/**
@@ -719,6 +805,10 @@ abstract class HTMLFormField {
protected $mID;
protected $mClass = '';
protected $mDefault;
+
+ /**
+ * @var HTMLForm
+ */
public $mParent;
/**
@@ -785,7 +875,7 @@ abstract class HTMLFormField {
/**
* Initialise the object
- * @param $params Associative Array. See HTMLForm doc for syntax.
+ * @param $params array Associative Array. See HTMLForm doc for syntax.
*/
function __construct( $params ) {
$this->mParams = $params;
@@ -810,12 +900,12 @@ abstract class HTMLFormField {
if ( isset( $params['name'] ) ) {
$this->mName = $params['name'];
}
-
+
$validName = Sanitizer::escapeId( $this->mName );
if ( $this->mName != $validName && !isset( $params['nodata'] ) ) {
throw new MWException( "Invalid name '{$this->mName}' passed to " . __METHOD__ );
}
-
+
$this->mID = "mw-input-{$this->mName}";
if ( isset( $params['default'] ) ) {
@@ -854,22 +944,23 @@ abstract class HTMLFormField {
*/
function getTableRow( $value ) {
# Check for invalid data.
- global $wgRequest;
$errors = $this->validate( $value, $this->mParent->mFieldData );
-
+
$cellAttributes = array();
$verticalLabel = false;
-
+
if ( !empty($this->mParams['vertical-label']) ) {
$cellAttributes['colspan'] = 2;
$verticalLabel = true;
}
- if ( $errors === true || ( !$wgRequest->wasPosted() && ( $this->mParent->getMethod() == 'post' ) ) ) {
+ if ( $errors === true || ( !$this->mParent->getRequest()->wasPosted() && ( $this->mParent->getMethod() == 'post' ) ) ) {
$errors = '';
+ $errorClass = '';
} else {
- $errors = Html::rawElement( 'span', array( 'class' => 'error' ), $errors );
+ $errors = self::formatErrors( $errors );
+ $errorClass = 'mw-htmlform-invalid-input';
}
$label = $this->getLabelHtml( $cellAttributes );
@@ -878,29 +969,37 @@ abstract class HTMLFormField {
array( 'class' => 'mw-input' ) + $cellAttributes,
$this->getInputHTML( $value ) . "\n$errors"
);
-
+
$fieldType = get_class( $this );
-
- if ($verticalLabel) {
+
+ if ( $verticalLabel ) {
$html = Html::rawElement( 'tr',
array( 'class' => 'mw-htmlform-vertical-label' ), $label );
$html .= Html::rawElement( 'tr',
- array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass}" ),
+ array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass} $errorClass" ),
$field );
} else {
$html = Html::rawElement( 'tr',
- array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass}" ),
+ array( 'class' => "mw-htmlform-field-$fieldType {$this->mClass} $errorClass" ),
$label . $field );
}
$helptext = null;
if ( isset( $this->mParams['help-message'] ) ) {
- $msg = $this->mParams['help-message'];
- $helptext = wfMsgExt( $msg, 'parseinline' );
- if ( wfEmptyMsg( $msg, $helptext ) ) {
- # Never mind
- $helptext = null;
+ $msg = wfMessage( $this->mParams['help-message'] );
+ if ( $msg->exists() ) {
+ $helptext = $msg->parse();
+ }
+ } elseif ( isset( $this->mParams['help-messages'] ) ) {
+ # help-message can be passed a message key (string) or an array containing
+ # a message key and additional parameters. This makes it impossible to pass
+ # an array of message key
+ foreach( $this->mParams['help-messages'] as $name ) {
+ $msg = wfMessage( $name );
+ if( $msg->exists() ) {
+ $helptext .= $msg->parse(); // append message
+ }
}
} elseif ( isset( $this->mParams['help'] ) ) {
$helptext = $this->mParams['help'];
@@ -950,10 +1049,7 @@ abstract class HTMLFormField {
if ( empty( $this->mParams['tooltip'] ) ) {
return array();
}
-
- global $wgUser;
-
- return $wgUser->getSkin()->tooltipAndAccessKeyAttribs( $this->mParams['tooltip'] );
+ return Linker::tooltipAndAccesskeyAttribs( $this->mParams['tooltip'] );
}
/**
@@ -976,6 +1072,35 @@ abstract class HTMLFormField {
return $flatOpts;
}
+
+ /**
+ * Formats one or more errors as accepted by field validation-callback.
+ * @param $errors String|Message|Array of strings or Message instances
+ * @return String html
+ * @since 1.18
+ */
+ protected static function formatErrors( $errors ) {
+ if ( is_array( $errors ) && count( $errors ) === 1 ) {
+ $errors = array_shift( $errors );
+ }
+
+ if ( is_array( $errors ) ) {
+ $lines = array();
+ foreach ( $errors as $error ) {
+ if ( $error instanceof Message ) {
+ $lines[] = Html::rawElement( 'li', array(), $error->parse() );
+ } else {
+ $lines[] = Html::rawElement( 'li', array(), $error );
+ }
+ }
+ return Html::rawElement( 'ul', array( 'class' => 'error' ), implode( "\n", $lines ) );
+ } else {
+ if ( $errors instanceof Message ) {
+ $errors = $errors->parse();
+ }
+ return Html::rawElement( 'span', array( 'class' => 'error' ), $errors );
+ }
+ }
}
class HTMLTextField extends HTMLFormField {
@@ -1098,11 +1223,11 @@ class HTMLFloatField extends HTMLTextField {
if ( $p !== true ) {
return $p;
}
-
+
$value = trim( $value );
# http://dev.w3.org/html5/spec/common-microsyntaxes.html#real-numbers
- # with the addition that a leading '+' sign is ok.
+ # with the addition that a leading '+' sign is ok.
if ( !preg_match( '/^((\+|\-)?\d+(\.\d+)?(E(\+|\-)?\d+)?)?$/i', $value ) ) {
return wfMsgExt( 'htmlform-float-invalid', 'parse' );
}
@@ -1141,8 +1266,8 @@ class HTMLIntField extends HTMLFloatField {
}
# http://dev.w3.org/html5/spec/common-microsyntaxes.html#signed-integers
- # with the addition that a leading '+' sign is ok. Note that leading zeros
- # are fine, and will be left in the input, which is useful for things like
+ # with the addition that a leading '+' sign is ok. Note that leading zeros
+ # are fine, and will be left in the input, which is useful for things like
# phone numbers when you know that they are integers (the HTML5 type=tel
# input does not require its value to be numeric). If you want a tidier
# value to, eg, save in the DB, clean it up with intval().
@@ -1183,6 +1308,10 @@ class HTMLCheckField extends HTMLFormField {
return '&#160;';
}
+ /**
+ * @param $request WebRequest
+ * @return String
+ */
function loadDataFromRequest( $request ) {
$invert = false;
if ( isset( $this->mParams['invert'] ) && $this->mParams['invert'] ) {
@@ -1190,7 +1319,10 @@ class HTMLCheckField extends HTMLFormField {
}
// GetCheck won't work like we want for checks.
- if ( $request->getCheck( 'wpEditToken' ) ) {
+ // Fetch the value in either one of the two following case:
+ // - we have a valid token (form got posted or GET forged by the user)
+ // - checkbox name has a value (false or true), ie is not null
+ if ( $request->getCheck( 'wpEditToken' ) || $request->getVal( $this->mName )!== null ) {
// XOR has the following truth table, which is what we want
// INVERT VALUE | OUTPUT
// true true | false
@@ -1227,9 +1359,9 @@ class HTMLSelectField extends HTMLFormField {
$select = new XmlSelect( $this->mName, $this->mID, strval( $value ) );
# If one of the options' 'name' is int(0), it is automatically selected.
- # because PHP sucks and things int(0) == 'some string'.
+ # because PHP sucks and thinks int(0) == 'some string'.
# Working around this by forcing all of them to strings.
- foreach( $this->mParams['options'] as $key => &$opt ){
+ foreach( $this->mParams['options'] as &$opt ){
if( is_int( $opt ) ){
$opt = strval( $opt );
}
@@ -1254,7 +1386,8 @@ class HTMLSelectOrOtherField extends HTMLTextField {
function __construct( $params ) {
if ( !in_array( 'other', $params['options'], true ) ) {
- $params['options'][wfMsg( 'htmlform-selectorother-other' )] = 'other';
+ $msg = isset( $params['other'] ) ? $params['other'] : wfMsg( 'htmlform-selectorother-other' );
+ $params['options'][$msg] = 'other';
}
parent::__construct( $params );
@@ -1310,6 +1443,10 @@ class HTMLSelectOrOtherField extends HTMLTextField {
return "$select<br />\n$textbox";
}
+ /**
+ * @param $request WebRequest
+ * @return String
+ */
function loadDataFromRequest( $request ) {
if ( $request->getCheck( $this->mName ) ) {
$val = $request->getText( $this->mName );
@@ -1329,6 +1466,14 @@ class HTMLSelectOrOtherField extends HTMLTextField {
* Multi-select field
*/
class HTMLMultiSelectField extends HTMLFormField {
+
+ public function __construct( $params ){
+ parent::__construct( $params );
+ if( isset( $params['flatlist'] ) ){
+ $this->mClass .= ' mw-htmlform-multiselect-flatlist';
+ }
+ }
+
function validate( $value, $alldata ) {
$p = parent::validate( $value, $alldata );
@@ -1374,31 +1519,41 @@ class HTMLMultiSelectField extends HTMLFormField {
} else {
$thisAttribs = array( 'id' => "{$this->mID}-$info", 'value' => $info );
- $checkbox = Xml::check(
- $this->mName . '[]',
+ $checkbox = Xml::check(
+ $this->mName . '[]',
in_array( $info, $value, true ),
$attribs + $thisAttribs );
$checkbox .= '&#160;' . Html::rawElement( 'label', array( 'for' => "{$this->mID}-$info" ), $label );
- $html .= $checkbox . '<br />';
+ $html .= ' ' . Html::rawElement( 'div', array( 'class' => 'mw-htmlform-multiselect-item' ), $checkbox );
}
}
return $html;
}
+ /**
+ * @param $request WebRequest
+ * @return String
+ */
function loadDataFromRequest( $request ) {
- # won't work with getCheck
- if ( $request->getCheck( 'wpEditToken' ) ) {
- $arr = $request->getArray( $this->mName );
-
- if ( !$arr ) {
- $arr = array();
+ if ( $this->mParent->getMethod() == 'post' ) {
+ if( $request->wasPosted() ){
+ # Checkboxes are just not added to the request arrays if they're not checked,
+ # so it's perfectly possible for there not to be an entry at all
+ return $request->getArray( $this->mName, array() );
+ } else {
+ # That's ok, the user has not yet submitted the form, so show the defaults
+ return $this->getDefault();
}
-
- return $arr;
} else {
- return $this->getDefault();
+ # This is the impossible case: if we look at $_GET and see no data for our
+ # field, is it because the user has not yet submitted the form, or that they
+ # have submitted it with all the options unchecked? We will have to assume the
+ # latter, which basically means that you can't specify 'positive' defaults
+ # for GET forms.
+ # @todo FIXME...
+ return $request->getArray( $this->mName, array() );
}
}
@@ -1416,6 +1571,161 @@ class HTMLMultiSelectField extends HTMLFormField {
}
/**
+ * Double field with a dropdown list constructed from a system message in the format
+ * * Optgroup header
+ * ** <option value>
+ * * New Optgroup header
+ * Plus a text field underneath for an additional reason. The 'value' of the field is
+ * ""<select>: <extra reason>"", or "<extra reason>" if nothing has been selected in the
+ * select dropdown.
+ * @todo FIXME: If made 'required', only the text field should be compulsory.
+ */
+class HTMLSelectAndOtherField extends HTMLSelectField {
+
+ function __construct( $params ) {
+ if ( array_key_exists( 'other', $params ) ) {
+ } elseif( array_key_exists( 'other-message', $params ) ){
+ $params['other'] = wfMessage( $params['other-message'] )->plain();
+ } else {
+ $params['other'] = null;
+ }
+
+ if ( array_key_exists( 'options', $params ) ) {
+ # Options array already specified
+ } elseif( array_key_exists( 'options-message', $params ) ){
+ # Generate options array from a system message
+ $params['options'] = self::parseMessage(
+ wfMessage( $params['options-message'] )->inContentLanguage()->plain(),
+ $params['other']
+ );
+ } else {
+ # Sulk
+ throw new MWException( 'HTMLSelectAndOtherField called without any options' );
+ }
+ $this->mFlatOptions = self::flattenOptions( $params['options'] );
+
+ parent::__construct( $params );
+ }
+
+ /**
+ * Build a drop-down box from a textual list.
+ * @param $string String message text
+ * @param $otherName String name of "other reason" option
+ * @return Array
+ * TODO: this is copied from Xml::listDropDown(), deprecate/avoid duplication?
+ */
+ public static function parseMessage( $string, $otherName=null ) {
+ if( $otherName === null ){
+ $otherName = wfMessage( 'htmlform-selectorother-other' )->plain();
+ }
+
+ $optgroup = false;
+ $options = array( $otherName => 'other' );
+
+ foreach ( explode( "\n", $string ) as $option ) {
+ $value = trim( $option );
+ if ( $value == '' ) {
+ continue;
+ } elseif ( substr( $value, 0, 1) == '*' && substr( $value, 1, 1) != '*' ) {
+ # A new group is starting...
+ $value = trim( substr( $value, 1 ) );
+ $optgroup = $value;
+ } elseif ( substr( $value, 0, 2) == '**' ) {
+ # groupmember
+ $opt = trim( substr( $value, 2 ) );
+ if( $optgroup === false ){
+ $options[$opt] = $opt;
+ } else {
+ $options[$optgroup][$opt] = $opt;
+ }
+ } else {
+ # groupless reason list
+ $optgroup = false;
+ $options[$option] = $option;
+ }
+ }
+
+ return $options;
+ }
+
+ function getInputHTML( $value ) {
+ $select = parent::getInputHTML( $value[1] );
+
+ $textAttribs = array(
+ 'id' => $this->mID . '-other',
+ 'size' => $this->getSize(),
+ );
+
+ foreach ( array( 'required', 'autofocus', 'multiple', 'disabled' ) as $param ) {
+ if ( isset( $this->mParams[$param] ) ) {
+ $textAttribs[$param] = '';
+ }
+ }
+
+ $textbox = Html::input(
+ $this->mName . '-other',
+ $value[2],
+ 'text',
+ $textAttribs
+ );
+
+ return "$select<br />\n$textbox";
+ }
+
+ /**
+ * @param $request WebRequest
+ * @return Array( <overall message>, <select value>, <text field value> )
+ */
+ function loadDataFromRequest( $request ) {
+ if ( $request->getCheck( $this->mName ) ) {
+
+ $list = $request->getText( $this->mName );
+ $text = $request->getText( $this->mName . '-other' );
+
+ if ( $list == 'other' ) {
+ $final = $text;
+ } elseif( !in_array( $list, $this->mFlatOptions ) ){
+ # User has spoofed the select form to give an option which wasn't
+ # in the original offer. Sulk...
+ $final = $text;
+ } elseif( $text == '' ) {
+ $final = $list;
+ } else {
+ $final = $list . wfMsgForContent( 'colon-separator' ) . $text;
+ }
+
+ } else {
+ $final = $this->getDefault();
+ $list = $text = '';
+ }
+ return array( $final, $list, $text );
+ }
+
+ function getSize() {
+ return isset( $this->mParams['size'] )
+ ? $this->mParams['size']
+ : 45;
+ }
+
+ function validate( $value, $alldata ) {
+ # HTMLSelectField forces $value to be one of the options in the select
+ # field, which is not useful here. But we do want the validation further up
+ # the chain
+ $p = parent::validate( $value[1], $alldata );
+
+ if ( $p !== true ) {
+ return $p;
+ }
+
+ if( isset( $this->mParams['required'] ) && $value[1] === '' ){
+ return wfMsgExt( 'htmlform-required', 'parseinline' );
+ }
+
+ return true;
+ }
+}
+
+/**
* Radio checkbox fields.
*/
class HTMLRadioField extends HTMLFormField {
@@ -1515,7 +1825,7 @@ class HTMLInfoField extends HTMLFormField {
class HTMLHiddenField extends HTMLFormField {
public function __construct( $params ) {
parent::__construct( $params );
-
+
# Per HTML5 spec, hidden fields cannot be 'required'
# http://dev.w3.org/html5/spec/states-of-the-type-attribute.html#hidden-state
unset( $this->mParams['required'] );
@@ -1564,7 +1874,7 @@ class HTMLSubmitField extends HTMLFormField {
protected function needsLabel() {
return false;
}
-
+
/**
* Button cannot be invalid
*/
@@ -1579,11 +1889,20 @@ class HTMLEditTools extends HTMLFormField {
}
public function getTableRow( $value ) {
- return "<tr><td></td><td class=\"mw-input\">"
+ if ( empty( $this->mParams['message'] ) ) {
+ $msg = wfMessage( 'edittools' );
+ } else {
+ $msg = wfMessage( $this->mParams['message'] );
+ if ( $msg->isDisabled() ) {
+ $msg = wfMessage( 'edittools' );
+ }
+ }
+ $msg->inContentLanguage();
+
+
+ return '<tr><td></td><td class="mw-input">'
. '<div class="mw-editTools">'
- . wfMsgExt( empty( $this->mParams['message'] )
- ? 'edittools' : $this->mParams['message'],
- array( 'parse', 'content' ) )
+ . $msg->parseAsBlock()
. "</div></td></tr>\n";
}
}
diff --git a/includes/HistoryBlob.php b/includes/HistoryBlob.php
index fe2b48bf..f707b3f6 100644
--- a/includes/HistoryBlob.php
+++ b/includes/HistoryBlob.php
@@ -12,16 +12,20 @@ interface HistoryBlob
* You must call setLocation() on the stub object before storing it to the
* database
*
+ * @param $text string
+ *
* @return String: the key for getItem()
*/
- public function addItem( $text );
+ function addItem( $text );
/**
* Get item by key, or false if the key is not present
*
+ * @param $key string
+ *
* @return String or false
*/
- public function getItem( $key );
+ function getItem( $key );
/**
* Set the "default text"
@@ -30,8 +34,10 @@ interface HistoryBlob
* be other revisions in the same object.
*
* Default text is not required for two-part external storage URLs.
+ *
+ * @param $text string
*/
- public function setText( $text );
+ function setText( $text );
/**
* Get default text. This is called from Revision::getRevisionText()
@@ -53,12 +59,16 @@ class ConcatenatedGzipHistoryBlob implements HistoryBlob
public $mMaxCount = 100;
/** Constructor */
- public function ConcatenatedGzipHistoryBlob() {
+ public function __construct() {
if ( !function_exists( 'gzdeflate' ) ) {
throw new MWException( "Need zlib support to read or write this kind of history object (ConcatenatedGzipHistoryBlob)\n" );
}
}
+ /**
+ * @param $text string
+ * @return string
+ */
public function addItem( $text ) {
$this->uncompress();
$hash = md5( $text );
@@ -69,6 +79,10 @@ class ConcatenatedGzipHistoryBlob implements HistoryBlob
return $hash;
}
+ /**
+ * @param $hash string
+ * @return array|bool
+ */
public function getItem( $hash ) {
$this->uncompress();
if ( array_key_exists( $hash, $this->mItems ) ) {
@@ -78,11 +92,18 @@ class ConcatenatedGzipHistoryBlob implements HistoryBlob
}
}
+ /**
+ * @param $text string
+ * @return void
+ */
public function setText( $text ) {
$this->uncompress();
$this->mDefaultHash = $this->addItem( $text );
}
+ /**
+ * @return array|bool
+ */
public function getText() {
$this->uncompress();
return $this->getItem( $this->mDefaultHash );
@@ -90,6 +111,8 @@ class ConcatenatedGzipHistoryBlob implements HistoryBlob
/**
* Remove an item
+ *
+ * @param $hash string
*/
public function removeItem( $hash ) {
$this->mSize -= strlen( $this->mItems[$hash] );
@@ -116,7 +139,9 @@ class ConcatenatedGzipHistoryBlob implements HistoryBlob
}
}
-
+ /**
+ * @return array
+ */
function __sleep() {
$this->compress();
return array( 'mVersion', 'mCompressed', 'mItems', 'mDefaultHash' );
@@ -129,6 +154,8 @@ class ConcatenatedGzipHistoryBlob implements HistoryBlob
/**
* Helper function for compression jobs
* Returns true until the object is "full" and ready to be committed
+ *
+ * @return bool
*/
public function isHappy() {
return $this->mSize < $this->mMaxSize
@@ -137,8 +164,6 @@ class ConcatenatedGzipHistoryBlob implements HistoryBlob
}
-
-
/**
* Pointer object for an item within a CGZ blob stored in the text table.
*/
@@ -183,6 +208,9 @@ class HistoryBlobStub {
return $this->mRef;
}
+ /**
+ * @return string
+ */
function getText() {
$fname = 'HistoryBlobStub::getText';
@@ -197,12 +225,12 @@ class HistoryBlobStub {
$flags = explode( ',', $row->old_flags );
if( in_array( 'external', $flags ) ) {
$url=$row->old_text;
- @list( /* $proto */ ,$path)=explode('://',$url,2);
- if ($path=="") {
+ $parts = explode( '://', $url, 2 );
+ if ( !isset( $parts[1] ) || $parts[1] == '' ) {
wfProfileOut( $fname );
return false;
}
- $row->old_text=ExternalStore::fetchFromUrl($url);
+ $row->old_text = ExternalStore::fetchFromUrl($url);
}
if( !in_array( 'object', $flags ) ) {
@@ -232,6 +260,8 @@ class HistoryBlobStub {
/**
* Get the content hash
+ *
+ * @return string
*/
function getHash() {
return $this->mHash;
@@ -260,11 +290,16 @@ class HistoryBlobCurStub {
/**
* Sets the location (cur_id) of the main object to which this object
* points
+ *
+ * @param $id int
*/
function setLocation( $id ) {
$this->mCurId = $id;
}
+ /**
+ * @return string|false
+ */
function getText() {
$dbr = wfGetDB( DB_SLAVE );
$row = $dbr->selectRow( 'cur', array( 'cur_text' ), array( 'cur_id' => $this->mCurId ) );
@@ -336,6 +371,11 @@ class DiffHistoryBlob implements HistoryBlob {
}
}
+ /**
+ * @throws MWException
+ * @param $text string
+ * @return int
+ */
function addItem( $text ) {
if ( $this->mFrozen ) {
throw new MWException( __METHOD__.": Cannot add more items after sleep/wakeup" );
@@ -347,18 +387,31 @@ class DiffHistoryBlob implements HistoryBlob {
return count( $this->mItems ) - 1;
}
+ /**
+ * @param $key string
+ * @return string
+ */
function getItem( $key ) {
return $this->mItems[$key];
}
+ /**
+ * @param $text string
+ */
function setText( $text ) {
$this->mDefaultKey = $this->addItem( $text );
}
+ /**
+ * @return string
+ */
function getText() {
return $this->getItem( $this->mDefaultKey );
}
+ /**
+ * @throws MWException
+ */
function compress() {
if ( !function_exists( 'xdiff_string_rabdiff' ) ){
throw new MWException( "Need xdiff 1.5+ support to write DiffHistoryBlob\n" );
@@ -431,6 +484,11 @@ class DiffHistoryBlob implements HistoryBlob {
}
}
+ /**
+ * @param $t1
+ * @param $t2
+ * @return string
+ */
function diff( $t1, $t2 ) {
# Need to do a null concatenation with warnings off, due to bugs in the current version of xdiff
# "String is not zero-terminated"
@@ -440,6 +498,11 @@ class DiffHistoryBlob implements HistoryBlob {
return $diff;
}
+ /**
+ * @param $base
+ * @param $diff
+ * @return bool|string
+ */
function patch( $base, $diff ) {
if ( function_exists( 'xdiff_string_bpatch' ) ) {
wfSuppressWarnings();
@@ -510,6 +573,9 @@ class DiffHistoryBlob implements HistoryBlob {
}
}
+ /**
+ * @return array
+ */
function __sleep() {
$this->compress();
if ( !count( $this->mItems ) ) {
@@ -575,6 +641,8 @@ class DiffHistoryBlob implements HistoryBlob {
/**
* Helper function for compression jobs
* Returns true until the object is "full" and ready to be committed
+ *
+ * @return bool
*/
function isHappy() {
return $this->mSize < $this->mMaxSize
diff --git a/includes/HistoryPage.php b/includes/HistoryPage.php
index b2cf044a..dd5ecd43 100644
--- a/includes/HistoryPage.php
+++ b/includes/HistoryPage.php
@@ -326,6 +326,10 @@ class HistoryPager extends ReverseChronologicalPager {
return $this->historyPage->getArticle();
}
+ function getTitle() {
+ return $this->title;
+ }
+
function getSqlComment() {
if ( $this->conds ) {
return 'history page filtered'; // potentially slow, see CR r58153
@@ -339,7 +343,7 @@ class HistoryPager extends ReverseChronologicalPager {
'tables' => array( 'revision' ),
'fields' => Revision::selectFields(),
'conds' => array_merge(
- array( 'rev_page' => $this->historyPage->getTitle()->getArticleID() ),
+ array( 'rev_page' => $this->title->getArticleID() ),
$this->conds ),
'options' => array( 'USE INDEX' => array( 'revision' => 'page_timestamp' ) ),
'join_conds' => array( 'tag_summary' => array( 'LEFT JOIN', 'ts_rev_id=rev_id' ) ),
@@ -380,7 +384,7 @@ class HistoryPager extends ReverseChronologicalPager {
* @return string HTML output
*/
function getStartBody() {
- global $wgScript, $wgUser, $wgOut, $wgContLang;
+ global $wgScript, $wgUser, $wgOut;
$this->lastRow = false;
$this->counter = 1;
$this->oldIdChecked = 0;
@@ -397,31 +401,33 @@ class HistoryPager extends ReverseChronologicalPager {
$this->buttons = '<div>';
$this->buttons .= $this->submitButton( wfMsg( 'compareselectedversions' ),
array( 'class' => 'historysubmit' )
- + $wgUser->getSkin()->tooltipAndAccessKeyAttribs( 'compareselectedversions' )
+ + Linker::tooltipAndAccesskeyAttribs( 'compareselectedversions' )
) . "\n";
if ( $wgUser->isAllowed( 'deleterevision' ) ) {
- $this->preventClickjacking();
- $float = $wgContLang->alignEnd();
- # Note bug #20966, <button> is non-standard in IE<8
- $element = Html::element( 'button',
- array(
- 'type' => 'submit',
- 'name' => 'revisiondelete',
- 'value' => '1',
- 'style' => "float: $float;",
- 'class' => 'mw-history-revisiondelete-button',
- ),
- wfMsg( 'showhideselectedversions' )
- ) . "\n";
- $s .= $element;
- $this->buttons .= $element;
+ $s .= $this->getRevisionButton( 'revisiondelete', 'showhideselectedversions' );
}
$this->buttons .= '</div>';
$s .= '</div><ul id="pagehistory">' . "\n";
return $s;
}
+ private function getRevisionButton( $name, $msg ) {
+ $this->preventClickjacking();
+ # Note bug #20966, <button> is non-standard in IE<8
+ $element = Html::element( 'button',
+ array(
+ 'type' => 'submit',
+ 'name' => $name,
+ 'value' => '1',
+ 'class' => "mw-history-$name-button",
+ ),
+ wfMsg( $msg )
+ ) . "\n";
+ $this->buttons .= $element;
+ return $element;
+ }
+
function getEndBody() {
if ( $this->lastRow ) {
$latest = $this->counter == 1 && $this->mIsFirst;
@@ -513,7 +519,7 @@ class HistoryPager extends ReverseChronologicalPager {
array( 'name' => 'ids[' . $rev->getId() . ']' ) );
}
// User can only view deleted revisions...
- } else if ( $rev->getVisibility() && $wgUser->isAllowed( 'deletedhistory' ) ) {
+ } elseif ( $rev->getVisibility() && $wgUser->isAllowed( 'deletedhistory' ) ) {
// If revision was hidden from sysops, disable the link
if ( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
$cdel = $this->getSkin()->revDeleteLinkDisabled( false );
@@ -529,9 +535,13 @@ class HistoryPager extends ReverseChronologicalPager {
$s .= " $del ";
}
+ $dirmark = $wgLang->getDirMark();
+
$s .= " $link";
+ $s .= $dirmark;
$s .= " <span class='history-user'>" .
$this->getSkin()->revUserTools( $rev, true ) . "</span>";
+ $s .= $dirmark;
if ( $rev->isMinor() ) {
$s .= ' ' . ChangesList::flag( 'minor' );
@@ -721,7 +731,7 @@ class HistoryPager extends ReverseChronologicalPager {
if ( !$rev->userCan( Revision::DELETED_TEXT ) ) {
$radio['disabled'] = 'disabled';
$checkmark = array(); // We will check the next possible one
- } else if ( !$this->oldIdChecked ) {
+ } elseif ( !$this->oldIdChecked ) {
$checkmark = array( 'checked' => 'checked' );
$this->oldIdChecked = $id;
} else {
diff --git a/includes/Hooks.php b/includes/Hooks.php
index 168f4bd9..dd08d03b 100644
--- a/includes/Hooks.php
+++ b/includes/Hooks.php
@@ -4,203 +4,271 @@
*
* Copyright 2004, 2005 Evan Prodromou <evan@wikitravel.org>.
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * This program is 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.
+ * 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
+ * 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
*
* @author Evan Prodromou <evan@wikitravel.org>
* @see hooks.txt
* @file
*/
+class MWHookException extends MWException {}
/**
- * Call hook functions defined in $wgHooks
+ * Hooks class.
*
- * Because programmers assign to $wgHooks, we need to be very
- * careful about its contents. So, there's a lot more error-checking
- * in here than would normally be necessary.
- *
- * @param $event String: event name
- * @param $args Array: parameters passed to hook functions
- * @return Boolean
+ * Used to supersede $wgHooks, because globals are EVIL.
*/
-function wfRunHooks($event, $args = array()) {
+class Hooks {
- global $wgHooks;
+ protected static $handlers = array();
- // Return quickly in the most common case
- if ( !isset( $wgHooks[$event] ) ) {
- return true;
+ /**
+ * Attach an event handler to a given hook
+ *
+ * @param $name Mixed: name of hook
+ * @param $callback Mixed: callback function to attach
+ * @return void
+ */
+ public static function register( $name, $callback ) {
+ if( !isset( self::$handlers[$name] ) ) {
+ self::$handlers[$name] = array();
+ }
+
+ self::$handlers[$name][] = $callback;
}
- if (!is_array($wgHooks)) {
- throw new MWException("Global hooks array is not an array!\n");
+ /**
+ * Returns true if a hook has a function registered to it.
+ *
+ * @param $name Mixed: name of hook
+ * @return Boolean: true if a hook has a function registered to it
+ */
+ public static function isRegistered( $name ) {
+ if( !isset( self::$handlers[$name] ) ) {
+ self::$handlers[$name] = array();
+ }
+
+ return ( count( self::$handlers[$name] ) != 0 );
}
- if (!is_array($wgHooks[$event])) {
- throw new MWException("Hooks array for event '$event' is not an array!\n");
+ /**
+ * Returns an array of all the event functions attached to a hook
+ *
+ * @param $name Mixed: name of the hook
+ * @return array
+ */
+ public static function getHandlers( $name ) {
+ if( !isset( self::$handlers[$name] ) ) {
+ return array();
+ }
+
+ return self::$handlers[$name];
}
- foreach ($wgHooks[$event] as $index => $hook) {
-
- $object = null;
- $method = null;
- $func = null;
- $data = null;
- $have_data = false;
- $closure = false;
- $badhookmsg = false;
-
- /* $hook can be: a function, an object, an array of $function and $data,
- * an array of just a function, an array of object and method, or an
- * array of object, method, and data.
- */
-
- if ( is_array( $hook ) ) {
- if ( count( $hook ) < 1 ) {
- throw new MWException("Empty array in hooks for " . $event . "\n");
- } else if ( is_object( $hook[0] ) ) {
- $object = $wgHooks[$event][$index][0];
- if ( $object instanceof Closure ) {
- $closure = true;
- if ( count( $hook ) > 1 ) {
+ /**
+ * Call hook functions defined in Hooks::register
+ *
+ * Because programmers assign to $wgHooks, we need to be very
+ * careful about its contents. So, there's a lot more error-checking
+ * in here than would normally be necessary.
+ *
+ * @param $event String: event name
+ * @param $args Array: parameters passed to hook functions
+ * @return Boolean
+ */
+ public static function run( $event, $args = array() ) {
+ global $wgHooks;
+
+ // Return quickly in the most common case
+ if ( !isset( self::$handlers[$event] ) && !isset( $wgHooks[$event] ) ) {
+ return true;
+ }
+
+ if ( !is_array( self::$handlers ) ) {
+ throw new MWException( "Local hooks array is not an array!\n" );
+ }
+
+ if ( !is_array( $wgHooks ) ) {
+ throw new MWException( "Global hooks array is not an array!\n" );
+ }
+
+ $new_handlers = (array) self::$handlers;
+ $old_handlers = (array) $wgHooks;
+
+ $hook_array = array_merge( $new_handlers, $old_handlers );
+
+ if ( !is_array( $hook_array[$event] ) ) {
+ throw new MWException( "Hooks array for event '$event' is not an array!\n" );
+ }
+
+ foreach ( $hook_array[$event] as $index => $hook ) {
+ $object = null;
+ $method = null;
+ $func = null;
+ $data = null;
+ $have_data = false;
+ $closure = false;
+ $badhookmsg = false;
+
+ /**
+ * $hook can be: a function, an object, an array of $function and
+ * $data, an array of just a function, an array of object and
+ * method, or an array of object, method, and data.
+ */
+ if ( is_array( $hook ) ) {
+ if ( count( $hook ) < 1 ) {
+ throw new MWException( 'Empty array in hooks for ' . $event . "\n" );
+ } elseif ( is_object( $hook[0] ) ) {
+ $object = $hook_array[$event][$index][0];
+ if ( $object instanceof Closure ) {
+ $closure = true;
+ if ( count( $hook ) > 1 ) {
+ $data = $hook[1];
+ $have_data = true;
+ }
+ } else {
+ if ( count( $hook ) < 2 ) {
+ $method = 'on' . $event;
+ } else {
+ $method = $hook[1];
+ if ( count( $hook ) > 2 ) {
+ $data = $hook[2];
+ $have_data = true;
+ }
+ }
+ }
+ } elseif ( is_string( $hook[0] ) ) {
+ $func = $hook[0];
+ if ( count( $hook ) > 1) {
$data = $hook[1];
$have_data = true;
}
} else {
- if ( count( $hook ) < 2 ) {
- $method = "on" . $event;
- } else {
- $method = $hook[1];
- if ( count( $hook ) > 2 ) {
- $data = $hook[2];
- $have_data = true;
- }
- }
+ throw new MWException( 'Unknown datatype in hooks for ' . $event . "\n" );
}
- } else if ( is_string( $hook[0] ) ) {
- $func = $hook[0];
- if ( count( $hook ) > 1) {
- $data = $hook[1];
- $have_data = true;
+ } elseif ( is_string( $hook ) ) { # functions look like strings, too
+ $func = $hook;
+ } elseif ( is_object( $hook ) ) {
+ $object = $hook_array[$event][$index];
+ if ( $object instanceof Closure ) {
+ $closure = true;
+ } else {
+ $method = "on" . $event;
}
} else {
- throw new MWException( "Unknown datatype in hooks for " . $event . "\n" );
+ throw new MWException( 'Unknown datatype in hooks for ' . $event . "\n" );
}
- } else if ( is_string( $hook ) ) { # functions look like strings, too
- $func = $hook;
- } else if ( is_object( $hook ) ) {
- $object = $wgHooks[$event][$index];
- if ( $object instanceof Closure ) {
- $closure = true;
+
+ /* We put the first data element on, if needed. */
+ if ( $have_data ) {
+ $hook_args = array_merge( array( $data ), $args );
} else {
- $method = "on" . $event;
+ $hook_args = $args;
}
- } else {
- throw new MWException( "Unknown datatype in hooks for " . $event . "\n" );
- }
- /* We put the first data element on, if needed. */
+ if ( $closure ) {
+ $callback = $object;
+ $func = "hook-$event-closure";
+ } elseif ( isset( $object ) ) {
+ $func = get_class( $object ) . '::' . $method;
+ $callback = array( $object, $method );
+ } else {
+ $callback = $func;
+ }
- if ( $have_data ) {
- $hook_args = array_merge(array($data), $args);
- } else {
- $hook_args = $args;
- }
+ // Run autoloader (workaround for call_user_func_array bug)
+ is_callable( $callback );
- if ( $closure ) {
- $callback = $object;
- $func = "hook-$event-closure";
- } elseif ( isset( $object ) ) {
- $func = get_class( $object ) . '::' . $method;
- $callback = array( $object, $method );
- } elseif ( false !== ( $pos = strpos( $func, '::' ) ) ) {
- $callback = array( substr( $func, 0, $pos ), substr( $func, $pos + 2 ) );
- } else {
- $callback = $func;
- }
+ /**
+ * Call the hook. The documentation of call_user_func_array clearly
+ * states that FALSE is returned on failure. However this is not
+ * case always. In some version of PHP if the function signature
+ * does not match the call signature, PHP will issue an warning:
+ * Param y in x expected to be a reference, value given.
+ *
+ * In that case the call will also return null. The following code
+ * catches that warning and provides better error message. The
+ * function documentation also says that:
+ * In other words, it does not depend on the function signature
+ * whether the parameter is passed by a value or by a reference.
+ * There is also PHP bug http://bugs.php.net/bug.php?id=47554 which
+ * is unsurprisingly marked as bogus. In short handling of failures
+ * with call_user_func_array is a failure, the documentation for that
+ * function is wrong and misleading and PHP developers don't see any
+ * problem here.
+ */
+ $retval = null;
+ set_error_handler( 'Hooks::hookErrorHandler' );
+ wfProfileIn( $func );
+ try {
+ $retval = call_user_func_array( $callback, $hook_args );
+ } catch ( MWHookException $e ) {
+ $badhookmsg = $e->getMessage();
+ }
+ wfProfileOut( $func );
+ restore_error_handler();
- // Run autoloader (workaround for call_user_func_array bug)
- is_callable( $callback );
-
- /* Call the hook. The documentation of call_user_func_array clearly
- * states that FALSE is returned on failure. However this is not
- * case always. In some version of PHP if the function signature
- * does not match the call signature, PHP will issue an warning:
- * Param y in x expected to be a reference, value given.
- *
- * In that case the call will also return null. The following code
- * catches that warning and provides better error message. The
- * function documentation also says that:
- * In other words, it does not depend on the function signature
- * whether the parameter is passed by a value or by a reference.
- * There is also PHP bug http://bugs.php.net/bug.php?id=47554 which
- * is unsurprisingly marked as bogus. In short handling of failures
- * with call_user_func_array is a failure, the documentation for that
- * function is wrong and misleading and PHP developers don't see any
- * problem here.
- */
- $retval = null;
- set_error_handler( 'hookErrorHandler' );
- wfProfileIn( $func );
- try {
- $retval = call_user_func_array( $callback, $hook_args );
- } catch ( MWHookException $e ) {
- $badhookmsg = $e->getMessage();
- }
- wfProfileOut( $func );
- restore_error_handler();
-
- /* String return is an error; false return means stop processing. */
- if ( is_string( $retval ) ) {
- global $wgOut;
- $wgOut->showFatalError( $retval );
- return false;
- } elseif( $retval === null ) {
- if ( $closure ) {
- $prettyFunc = "$event closure";
- } elseif( is_array( $callback ) ) {
- if( is_object( $callback[0] ) ) {
- $prettyClass = get_class( $callback[0] );
+ /* String return is an error; false return means stop processing. */
+ if ( is_string( $retval ) ) {
+ global $wgOut;
+ $wgOut->showFatalError( $retval );
+ return false;
+ } elseif( $retval === null ) {
+ if ( $closure ) {
+ $prettyFunc = "$event closure";
+ } elseif( is_array( $callback ) ) {
+ if( is_object( $callback[0] ) ) {
+ $prettyClass = get_class( $callback[0] );
+ } else {
+ $prettyClass = strval( $callback[0] );
+ }
+ $prettyFunc = $prettyClass . '::' . strval( $callback[1] );
} else {
- $prettyClass = strval( $callback[0] );
+ $prettyFunc = strval( $callback );
}
- $prettyFunc = $prettyClass . '::' . strval( $callback[1] );
- } else {
- $prettyFunc = strval( $callback );
- }
- if ( $badhookmsg ) {
- throw new MWException( "Detected bug in an extension! " .
- "Hook $prettyFunc has invalid call signature; " . $badhookmsg );
- } else {
- throw new MWException( "Detected bug in an extension! " .
- "Hook $prettyFunc failed to return a value; " .
- "should return true to continue hook processing or false to abort." );
+ if ( $badhookmsg ) {
+ throw new MWException(
+ 'Detected bug in an extension! ' .
+ "Hook $prettyFunc has invalid call signature; " . $badhookmsg
+ );
+ } else {
+ throw new MWException(
+ 'Detected bug in an extension! ' .
+ "Hook $prettyFunc failed to return a value; " .
+ 'should return true to continue hook processing or false to abort.'
+ );
+ }
+ } elseif ( !$retval ) {
+ return false;
}
- } else if ( !$retval ) {
- return false;
}
- }
- return true;
-}
+ return true;
+ }
-function hookErrorHandler( $errno, $errstr ) {
- if ( strpos( $errstr, 'expected to be a reference, value given' ) !== false ) {
- throw new MWHookException( $errstr );
+ /**
+ * This REALLY should be protected... but it's public for compatibility
+ *
+ * @param $errno Unused
+ * @param $errstr String: error message
+ * @return Boolean: false
+ */
+ public static function hookErrorHandler( $errno, $errstr ) {
+ if ( strpos( $errstr, 'expected to be a reference, value given' ) !== false ) {
+ throw new MWHookException( $errstr );
+ }
+ return false;
}
- return false;
}
-
-class MWHookException extends MWException {} \ No newline at end of file
diff --git a/includes/Html.php b/includes/Html.php
index 6c802ca3..be9a1e1b 100644
--- a/includes/Html.php
+++ b/includes/Html.php
@@ -107,8 +107,8 @@ class Html {
* features might be added, like allowing arrays for the values of
* attributes like class= and media=.
*
- * @param $element string The element's name, e.g., 'a'
- * @param $attribs array Associative array of attributes, e.g., array(
+ * @param $element string The element's name, e.g., 'a'
+ * @param $attribs array Associative array of attributes, e.g., array(
* 'href' => 'http://www.mediawiki.org/' ). See expandAttributes() for
* further documentation.
* @param $contents string The raw HTML contents of the element: *not*
@@ -132,6 +132,12 @@ class Html {
/**
* Identical to rawElement(), but HTML-escapes $contents (like
* Xml::element()).
+ *
+ * @param $element string
+ * @param $attribs array
+ * @param $contents string
+ *
+ * @return string
*/
public static function element( $element, $attribs = array(), $contents = '' ) {
return self::rawElement( $element, $attribs, strtr( $contents, array(
@@ -145,6 +151,11 @@ class Html {
/**
* Identical to rawElement(), but has no third parameter and omits the end
* tag (and the self-closing '/' in XML mode for empty elements).
+ *
+ * @param $element string
+ * @param $attribs array
+ *
+ * @return string
*/
public static function openElement( $element, $attribs = array() ) {
global $wgHtml5, $wgWellFormedXml;
@@ -180,15 +191,18 @@ class Html {
'button',
'search',
);
+
if ( isset( $attribs['type'] )
&& !in_array( $attribs['type'], $validTypes ) ) {
unset( $attribs['type'] );
}
+
if ( isset( $attribs['type'] ) && $attribs['type'] == 'search'
&& !$wgHtml5 ) {
unset( $attribs['type'] );
}
}
+
if ( !$wgHtml5 && $element == 'textarea' && isset( $attribs['maxlength'] ) ) {
unset( $attribs['maxlength'] );
}
@@ -201,6 +215,7 @@ class Html {
* Returns "</$element>", except if $wgWellFormedXml is off, in which case
* it returns the empty string when that's guaranteed to be safe.
*
+ * @since 1.17
* @param $element string Name of the element, e.g., 'a'
* @return string A closing tag, if required
*/
@@ -351,7 +366,7 @@ class Html {
$ret = '';
$attribs = (array)$attribs;
foreach ( $attribs as $key => $value ) {
- if ( $value === false ) {
+ if ( $value === false || is_null( $value ) ) {
continue;
}
@@ -425,7 +440,8 @@ class Html {
# Apparently we need to entity-encode \n, \r, \t, although the
# spec doesn't mention that. Since we're doing strtr() anyway,
# and we don't need <> escaped here, we may as well not call
- # htmlspecialchars(). FIXME: verify that we actually need to
+ # htmlspecialchars().
+ # @todo FIXME: Verify that we actually need to
# escape \n\r\t here, and explain why, exactly.
#
# We could call Sanitizer::encodeAttribute() for this, but we
@@ -440,8 +456,8 @@ class Html {
);
if ( $wgWellFormedXml ) {
# This is allowed per spec: <http://www.w3.org/TR/xml/#NT-AttValue>
- # But reportedly it breaks some XML tools? FIXME: is this
- # really true?
+ # But reportedly it breaks some XML tools?
+ # @todo FIXME: Is this really true?
$map['<'] = '&lt;';
}
$ret .= " $key=$quote" . strtr( $value, $map ) . $quote;
@@ -462,12 +478,15 @@ class Html {
global $wgHtml5, $wgJsMimeType, $wgWellFormedXml;
$attrs = array();
+
if ( !$wgHtml5 ) {
$attrs['type'] = $wgJsMimeType;
}
+
if ( $wgWellFormedXml && preg_match( '/[<&]/', $contents ) ) {
$contents = "/*<![CDATA[*/$contents/*]]>*/";
}
+
return self::rawElement( 'script', $attrs, $contents );
}
@@ -482,9 +501,11 @@ class Html {
global $wgHtml5, $wgJsMimeType;
$attrs = array( 'src' => $url );
+
if ( !$wgHtml5 ) {
$attrs['type'] = $wgJsMimeType;
}
+
return self::element( 'script', $attrs );
}
@@ -503,6 +524,7 @@ class Html {
if ( $wgWellFormedXml && preg_match( '/[<&]/', $contents ) ) {
$contents = "/*<![CDATA[*/$contents/*]]>*/";
}
+
return self::rawElement( 'style', array(
'type' => 'text/css',
'media' => $media,
@@ -574,16 +596,29 @@ class Html {
*/
public static function textarea( $name, $value = '', $attribs = array() ) {
global $wgHtml5;
+
$attribs['name'] = $name;
+
if ( !$wgHtml5 ) {
if ( !isset( $attribs['cols'] ) ) {
$attribs['cols'] = "";
}
+
if ( !isset( $attribs['rows'] ) ) {
$attribs['rows'] = "";
}
}
- return self::element( 'textarea', $attribs, $value );
+
+ if (substr($value, 0, 1) == "\n") {
+ // Workaround for bug 12130: browsers eat the initial newline
+ // assuming that it's just for show, but they do keep the later
+ // newlines, which we may want to preserve during editing.
+ // Prepending a single newline
+ $spacedValue = "\n" . $value;
+ } else {
+ $spacedValue = $value;
+ }
+ return self::element( 'textarea', $attribs, $spacedValue );
}
/**
@@ -597,30 +632,38 @@ class Html {
public static function htmlHeader( $attribs = array() ) {
$ret = '';
- global $wgMimeType, $wgOutputEncoding;
+ global $wgMimeType;
+
if ( self::isXmlMimeType( $wgMimeType ) ) {
- $ret .= "<?xml version=\"1.0\" encoding=\"$wgOutputEncoding\" ?" . ">\n";
+ $ret .= "<?xml version=\"1.0\" encoding=\"UTF-8\" ?" . ">\n";
}
global $wgHtml5, $wgHtml5Version, $wgDocType, $wgDTD;
global $wgXhtmlNamespaces, $wgXhtmlDefaultNamespace;
+
if ( $wgHtml5 ) {
$ret .= "<!DOCTYPE html>\n";
+
if ( $wgHtml5Version ) {
$attribs['version'] = $wgHtml5Version;
}
} else {
$ret .= "<!DOCTYPE html PUBLIC \"$wgDocType\" \"$wgDTD\">\n";
$attribs['xmlns'] = $wgXhtmlDefaultNamespace;
+
foreach ( $wgXhtmlNamespaces as $tag => $ns ) {
$attribs["xmlns:$tag"] = $ns;
}
}
+
$html = Html::openElement( 'html', $attribs );
+
if ( $html ) {
$html .= "\n";
}
+
$ret .= $html;
+
return $ret;
}
@@ -640,4 +683,45 @@ class Html {
return false;
}
}
+
+ /**
+ * Get HTML for an info box with an icon.
+ *
+ * @param $text String: wikitext, get this with wfMsgNoTrans()
+ * @param $icon String: icon name, file in skins/common/images
+ * @param $alt String: alternate text for the icon
+ * @param $class String: additional class name to add to the wrapper div
+ * @param $useStylePath
+ *
+ * @return string
+ */
+ static function infoBox( $text, $icon, $alt, $class = false, $useStylePath = true ) {
+ global $wgStylePath;
+
+ if ( $useStylePath ) {
+ $icon = $wgStylePath.'/common/images/'.$icon;
+ }
+
+ $s = Html::openElement( 'div', array( 'class' => "mw-infobox $class") );
+
+ $s .= Html::openElement( 'div', array( 'class' => 'mw-infobox-left' ) ).
+ Html::element( 'img',
+ array(
+ 'src' => $icon,
+ 'alt' => $alt,
+ )
+ ).
+ Html::closeElement( 'div' );
+
+ $s .= Html::openElement( 'div', array( 'class' => 'mw-infobox-right' ) ).
+ $text.
+ Html::closeElement( 'div' );
+ $s .= Html::element( 'div', array( 'style' => 'clear: left;' ), ' ' );
+
+ $s .= Html::closeElement( 'div' );
+
+ $s .= Html::element( 'div', array( 'style' => 'clear: left;' ), ' ' );
+
+ return $s;
+ }
}
diff --git a/includes/HttpFunctions.old.php b/includes/HttpFunctions.old.php
index 6d28abc6..ddfa608e 100644
--- a/includes/HttpFunctions.old.php
+++ b/includes/HttpFunctions.old.php
@@ -7,6 +7,7 @@
* http://www.php.net/manual/en/class.httprequest.php
*
* This is for backwards compatibility.
+ * @since 1.17
*/
class HttpRequest extends MWHttpRequest { }
diff --git a/includes/HttpFunctions.php b/includes/HttpFunctions.php
index 3d4d77a9..a80fec17 100644
--- a/includes/HttpFunctions.php
+++ b/includes/HttpFunctions.php
@@ -14,7 +14,7 @@ class Http {
* Perform an HTTP request
*
* @param $method String: HTTP method. Usually GET/POST
- * @param $url String: full URL to act on
+ * @param $url String: full URL to act on. If protocol-relative, will be expanded to an http:// URL
* @param $options Array: options to pass to MWHttpRequest object.
* Possible keys for the array:
* - timeout Timeout length in seconds
@@ -32,7 +32,6 @@ class Http {
* @return Mixed: (bool)false on failure or a string on success
*/
public static function request( $method, $url, $options = array() ) {
- $url = wfExpandUrl( $url );
wfDebug( "HTTP: $method: $url\n" );
$options['method'] = strtoupper( $method );
@@ -53,6 +52,8 @@ class Http {
/**
* Simple wrapper for Http::request( 'GET' )
* @see Http::request()
+ *
+ * @return string
*/
public static function get( $url, $timeout = 'default', $options = array() ) {
$options['timeout'] = $timeout;
@@ -62,6 +63,8 @@ class Http {
/**
* Simple wrapper for Http::request( 'POST' )
* @see Http::request()
+ *
+ * @return string
*/
public static function post( $url, $options = array() ) {
return Http::request( 'POST', $url, $options );
@@ -89,6 +92,7 @@ class Http {
// Check if this domain or any superdomain is listed in $wgConf as a local virtual host
$domainParts = array_reverse( $domainParts );
+ $domain = '';
for ( $i = 0; $i < count( $domainParts ); $i++ ) {
$domainPart = $domainParts[$i];
if ( $i == 0 ) {
@@ -137,10 +141,12 @@ class Http {
* This wrapper class will call out to curl (if available) or fallback
* to regular PHP if necessary for handling internal HTTP requests.
*
- * Renamed from HttpRequest to MWHttpRequst to avoid conflict with
- * php's HTTP extension.
+ * Renamed from HttpRequest to MWHttpRequest to avoid conflict with
+ * PHP's HTTP extension.
*/
class MWHttpRequest {
+ const SUPPORTS_FILE_POSTS = false;
+
protected $content;
protected $timeout = 'default';
protected $headersOnly = null;
@@ -158,6 +164,9 @@ class MWHttpRequest {
protected $maxRedirects = 5;
protected $followRedirects = false;
+ /**
+ * @var CookieJar
+ */
protected $cookieJar;
protected $headerList = array();
@@ -168,14 +177,14 @@ class MWHttpRequest {
public $status;
/**
- * @param $url String: url to use
+ * @param $url String: url to use. If protocol-relative, will be expanded to an http:// URL
* @param $options Array: (optional) extra params to pass (see Http::request())
*/
function __construct( $url, $options = array() ) {
global $wgHTTPTimeout;
- $this->url = $url;
- $this->parsedUrl = parse_url( $url );
+ $this->url = wfExpandUrl( $url, PROTO_HTTP );
+ $this->parsedUrl = parse_url( $this->url );
if ( !Http::isValidURI( $this->url ) ) {
$this->status = Status::newFatal( 'http-invalid-url' );
@@ -190,7 +199,7 @@ class MWHttpRequest {
}
$members = array( "postData", "proxy", "noProxy", "sslVerifyHost", "caInfo",
- "method", "followRedirects", "maxRedirects", "sslVerifyCert" );
+ "method", "followRedirects", "maxRedirects", "sslVerifyCert", "callback" );
foreach ( $members as $o ) {
if ( isset( $options[$o] ) ) {
@@ -210,6 +219,8 @@ class MWHttpRequest {
/**
* Generate a new request object
+ * @param $url String: url to use
+ * @param $options Array: (optional) extra params to pass (see Http::request())
* @see MWHttpRequest::__construct
*/
public static function factory( $url, $options = null ) {
@@ -368,12 +379,8 @@ class MWHttpRequest {
$this->headersOnly = true;
}
- if ( is_array( $this->postData ) ) {
- $this->postData = wfArrayToCGI( $this->postData );
- }
-
if ( is_object( $wgTitle ) && !isset( $this->reqHeaders['Referer'] ) ) {
- $this->setReferer( $wgTitle->getFullURL() );
+ $this->setReferer( wfExpandUrl( $wgTitle->getFullURL(), PROTO_CURRENT ) );
}
if ( !$this->noProxy ) {
@@ -582,249 +589,12 @@ class MWHttpRequest {
}
}
-
-class Cookie {
- protected $name;
- protected $value;
- protected $expires;
- protected $path;
- protected $domain;
- protected $isSessionKey = true;
- // TO IMPLEMENT protected $secure
- // TO IMPLEMENT? protected $maxAge (add onto expires)
- // TO IMPLEMENT? protected $version
- // TO IMPLEMENT? protected $comment
-
- function __construct( $name, $value, $attr ) {
- $this->name = $name;
- $this->set( $value, $attr );
- }
-
- /**
- * Sets a cookie. Used before a request to set up any individual
- * cookies. Used internally after a request to parse the
- * Set-Cookie headers.
- *
- * @param $value String: the value of the cookie
- * @param $attr Array: possible key/values:
- * expires A date string
- * path The path this cookie is used on
- * domain Domain this cookie is used on
- */
- public function set( $value, $attr ) {
- $this->value = $value;
-
- if ( isset( $attr['expires'] ) ) {
- $this->isSessionKey = false;
- $this->expires = strtotime( $attr['expires'] );
- }
-
- if ( isset( $attr['path'] ) ) {
- $this->path = $attr['path'];
- } else {
- $this->path = "/";
- }
-
- if ( isset( $attr['domain'] ) ) {
- if ( self::validateCookieDomain( $attr['domain'] ) ) {
- $this->domain = $attr['domain'];
- }
- } else {
- throw new MWException( "You must specify a domain." );
- }
- }
-
- /**
- * Return the true if the cookie is valid is valid. Otherwise,
- * false. The uses a method similar to IE cookie security
- * described here:
- * http://kuza55.blogspot.com/2008/02/understanding-cookie-security.html
- * A better method might be to use a blacklist like
- * http://publicsuffix.org/
- *
- * @param $domain String: the domain to validate
- * @param $originDomain String: (optional) the domain the cookie originates from
- * @return Boolean
- */
- public static function validateCookieDomain( $domain, $originDomain = null ) {
- // Don't allow a trailing dot
- if ( substr( $domain, -1 ) == "." ) {
- return false;
- }
-
- $dc = explode( ".", $domain );
-
- // Only allow full, valid IP addresses
- if ( preg_match( '/^[0-9.]+$/', $domain ) ) {
- if ( count( $dc ) != 4 ) {
- return false;
- }
-
- if ( ip2long( $domain ) === false ) {
- return false;
- }
-
- if ( $originDomain == null || $originDomain == $domain ) {
- return true;
- }
-
- }
-
- // Don't allow cookies for "co.uk" or "gov.uk", etc, but allow "supermarket.uk"
- if ( strrpos( $domain, "." ) - strlen( $domain ) == -3 ) {
- if ( ( count( $dc ) == 2 && strlen( $dc[0] ) <= 2 )
- || ( count( $dc ) == 3 && strlen( $dc[0] ) == "" && strlen( $dc[1] ) <= 2 ) ) {
- return false;
- }
- if ( ( count( $dc ) == 2 || ( count( $dc ) == 3 && $dc[0] == "" ) )
- && preg_match( '/(com|net|org|gov|edu)\...$/', $domain ) ) {
- return false;
- }
- }
-
- if ( $originDomain != null ) {
- if ( substr( $domain, 0, 1 ) != "." && $domain != $originDomain ) {
- return false;
- }
-
- if ( substr( $domain, 0, 1 ) == "."
- && substr_compare( $originDomain, $domain, -strlen( $domain ),
- strlen( $domain ), TRUE ) != 0 ) {
- return false;
- }
- }
-
- return true;
- }
-
- /**
- * Serialize the cookie jar into a format useful for HTTP Request headers.
- *
- * @param $path String: the path that will be used. Required.
- * @param $domain String: the domain that will be used. Required.
- * @return String
- */
- public function serializeToHttpRequest( $path, $domain ) {
- $ret = "";
-
- if ( $this->canServeDomain( $domain )
- && $this->canServePath( $path )
- && $this->isUnExpired() ) {
- $ret = $this->name . "=" . $this->value;
- }
-
- return $ret;
- }
-
- protected function canServeDomain( $domain ) {
- if ( $domain == $this->domain
- || ( strlen( $domain ) > strlen( $this->domain )
- && substr( $this->domain, 0, 1 ) == "."
- && substr_compare( $domain, $this->domain, -strlen( $this->domain ),
- strlen( $this->domain ), TRUE ) == 0 ) ) {
- return true;
- }
-
- return false;
- }
-
- protected function canServePath( $path ) {
- if ( $this->path && substr_compare( $this->path, $path, 0, strlen( $this->path ) ) == 0 ) {
- return true;
- }
-
- return false;
- }
-
- protected function isUnExpired() {
- if ( $this->isSessionKey || $this->expires > time() ) {
- return true;
- }
-
- return false;
- }
-}
-
-class CookieJar {
- private $cookie = array();
-
- /**
- * Set a cookie in the cookie jar. Make sure only one cookie per-name exists.
- * @see Cookie::set()
- */
- public function setCookie ( $name, $value, $attr ) {
- /* cookies: case insensitive, so this should work.
- * We'll still send the cookies back in the same case we got them, though.
- */
- $index = strtoupper( $name );
-
- if ( isset( $this->cookie[$index] ) ) {
- $this->cookie[$index]->set( $value, $attr );
- } else {
- $this->cookie[$index] = new Cookie( $name, $value, $attr );
- }
- }
-
- /**
- * @see Cookie::serializeToHttpRequest
- */
- public function serializeToHttpRequest( $path, $domain ) {
- $cookies = array();
-
- foreach ( $this->cookie as $c ) {
- $serialized = $c->serializeToHttpRequest( $path, $domain );
-
- if ( $serialized ) {
- $cookies[] = $serialized;
- }
- }
-
- return implode( "; ", $cookies );
- }
-
- /**
- * Parse the content of an Set-Cookie HTTP Response header.
- *
- * @param $cookie String
- * @param $domain String: cookie's domain
- */
- public function parseCookieResponseHeader ( $cookie, $domain ) {
- $len = strlen( "Set-Cookie:" );
-
- if ( substr_compare( "Set-Cookie:", $cookie, 0, $len, TRUE ) === 0 ) {
- $cookie = substr( $cookie, $len );
- }
-
- $bit = array_map( 'trim', explode( ";", $cookie ) );
-
- if ( count( $bit ) >= 1 ) {
- list( $name, $value ) = explode( "=", array_shift( $bit ), 2 );
- $attr = array();
-
- foreach ( $bit as $piece ) {
- $parts = explode( "=", $piece );
- if ( count( $parts ) > 1 ) {
- $attr[strtolower( $parts[0] )] = $parts[1];
- } else {
- $attr[strtolower( $parts[0] )] = true;
- }
- }
-
- if ( !isset( $attr['domain'] ) ) {
- $attr['domain'] = $domain;
- } elseif ( !Cookie::validateCookieDomain( $attr['domain'], $domain ) ) {
- return null;
- }
-
- $this->setCookie( $name, $value, $attr );
- }
- }
-}
-
/**
* MWHttpRequest implemented using internal curl compiled into PHP
*/
class CurlHttpRequest extends MWHttpRequest {
+ const SUPPORTS_FILE_POSTS = true;
+
static $curlMessageMap = array(
6 => 'http-host-unreachable',
28 => 'http-timed-out'
@@ -894,12 +664,14 @@ class CurlHttpRequest extends MWHttpRequest {
}
if ( $this->followRedirects && $this->canFollowRedirects() ) {
- if ( ! @curl_setopt( $curlHandle, CURLOPT_FOLLOWLOCATION, true ) ) {
+ wfSuppressWarnings();
+ if ( ! curl_setopt( $curlHandle, CURLOPT_FOLLOWLOCATION, true ) ) {
wfDebug( __METHOD__ . ": Couldn't set CURLOPT_FOLLOWLOCATION. " .
"Probably safe_mode or open_basedir is set.\n" );
// Continue the processing. If it were in curl_setopt_array,
// processing would have halted on its entry
}
+ wfRestoreWarnings();
}
if ( false === curl_exec( $curlHandle ) ) {
@@ -947,9 +719,9 @@ class PhpHttpRequest extends MWHttpRequest {
public function execute() {
parent::execute();
- // At least on Centos 4.8 with PHP 5.1.6, using max_redirects to follow redirects
- // causes a segfault
- $manuallyRedirect = version_compare( phpversion(), '5.1.7', '<' );
+ if ( is_array( $this->postData ) ) {
+ $this->postData = wfArrayToCGI( $this->postData );
+ }
if ( $this->parsedUrl['scheme'] != 'http' &&
$this->parsedUrl['scheme'] != 'https' ) {
@@ -969,7 +741,7 @@ class PhpHttpRequest extends MWHttpRequest {
$options['request_fulluri'] = true;
}
- if ( !$this->followRedirects || $manuallyRedirect ) {
+ if ( !$this->followRedirects ) {
$options['max_redirects'] = 0;
} else {
$options['max_redirects'] = $this->maxRedirects;
@@ -990,12 +762,7 @@ class PhpHttpRequest extends MWHttpRequest {
$options['content'] = $this->postData;
}
- $oldTimeout = false;
- if ( version_compare( '5.2.1', phpversion(), '>' ) ) {
- $oldTimeout = ini_set( 'default_socket_timeout', $this->timeout );
- } else {
- $options['timeout'] = $this->timeout;
- }
+ $options['timeout'] = $this->timeout;
$context = stream_context_create( array( 'http' => $options ) );
@@ -1003,6 +770,8 @@ class PhpHttpRequest extends MWHttpRequest {
$reqCount = 0;
$url = $this->url;
+ $result = array();
+
do {
$reqCount++;
wfSuppressWarnings();
@@ -1017,7 +786,7 @@ class PhpHttpRequest extends MWHttpRequest {
$this->headerList = $result['wrapper_data'];
$this->parseHeader();
- if ( !$manuallyRedirect || !$this->followRedirects ) {
+ if ( !$this->followRedirects ) {
break;
}
@@ -1034,10 +803,6 @@ class PhpHttpRequest extends MWHttpRequest {
}
} while ( true );
- if ( $oldTimeout !== false ) {
- ini_set( 'default_socket_timeout', $oldTimeout );
- }
-
$this->setStatus();
if ( $fh === false ) {
@@ -1050,7 +815,10 @@ class PhpHttpRequest extends MWHttpRequest {
return $this->status;
}
- if ( $this->status->isOK() ) {
+ // If everything went OK, or we recieved some error code
+ // get the response body content.
+ if ( $this->status->isOK()
+ || (int)$this->respStatus >= 300) {
while ( !feof( $fh ) ) {
$buf = fread( $fh, 8192 );
diff --git a/includes/IP.php b/includes/IP.php
index 50d57583..1da7cd07 100644
--- a/includes/IP.php
+++ b/includes/IP.php
@@ -186,6 +186,76 @@ class IP {
}
/**
+ * Given a host/port string, like one might find in the host part of a URL
+ * per RFC 2732, split the hostname part and the port part and return an
+ * array with an element for each. If there is no port part, the array will
+ * have false in place of the port. If the string was invalid in some way,
+ * false is returned.
+ *
+ * This was easy with IPv4 and was generally done in an ad-hoc way, but
+ * with IPv6 it's somewhat more complicated due to the need to parse the
+ * square brackets and colons.
+ *
+ * A bare IPv6 address is accepted despite the lack of square brackets.
+ *
+ * @param $both The string with the host and port
+ * @return array
+ */
+ public static function splitHostAndPort( $both ) {
+ if ( substr( $both, 0, 1 ) === '[' ) {
+ if ( preg_match( '/^\[(' . RE_IPV6_ADD . ')\](?::(?P<port>\d+))?$/', $both, $m ) ) {
+ if ( isset( $m['port'] ) ) {
+ return array( $m[1], intval( $m['port'] ) );
+ } else {
+ return array( $m[1], false );
+ }
+ } else {
+ // Square bracket found but no IPv6
+ return false;
+ }
+ }
+ $numColons = substr_count( $both, ':' );
+ if ( $numColons >= 2 ) {
+ // Is it a bare IPv6 address?
+ if ( preg_match( '/^' . RE_IPV6_ADD . '$/', $both ) ) {
+ return array( $both, false );
+ } else {
+ // Not valid IPv6, but too many colons for anything else
+ return false;
+ }
+ }
+ if ( $numColons >= 1 ) {
+ // Host:port?
+ $bits = explode( ':', $both );
+ if ( preg_match( '/^\d+/', $bits[1] ) ) {
+ return array( $bits[0], intval( $bits[1] ) );
+ } else {
+ // Not a valid port
+ return false;
+ }
+ }
+ // Plain hostname
+ return array( $both, false );
+ }
+
+ /**
+ * Given a host name and a port, combine them into host/port string like
+ * you might find in a URL. If the host contains a colon, wrap it in square
+ * brackets like in RFC 2732. If the port matches the default port, omit
+ * the port specification
+ */
+ public static function combineHostAndPort( $host, $port, $defaultPort = false ) {
+ if ( strpos( $host, ':' ) !== false ) {
+ $host = "[$host]";
+ }
+ if ( $defaultPort !== false && $port == $defaultPort ) {
+ return $host;
+ } else {
+ return "$host:$port";
+ }
+ }
+
+ /**
* Given an unsigned integer, returns an IPv6 address in octet notation
*
* @param $ip_int String: IP address.
@@ -614,4 +684,20 @@ class IP {
return null; // give up
}
+
+ /**
+ * Gets rid of uneeded numbers in quad-dotted/octet IP strings
+ * For example, 127.111.113.151/24 -> 127.111.113.0/24
+ * @param $range String: IP address to normalize
+ * @return string
+ */
+ public static function sanitizeRange( $range ) {
+ list( /*...*/, $bits ) = self::parseCIDR( $range );
+ list( $start, /*...*/ ) = self::parseRange( $range );
+ $start = self::formatHex( $start );
+ if ( $bits === false ) {
+ return $start; // wasn't actually a range
+ }
+ return "$start/$bits";
+ }
}
diff --git a/includes/ImageFunctions.php b/includes/ImageFunctions.php
index 8eaebd26..d048a9dd 100644
--- a/includes/ImageFunctions.php
+++ b/includes/ImageFunctions.php
@@ -15,7 +15,7 @@
* i.e. articles where the image may occur inline.
*
* @param $name string the image name to check
- * @param $contextTitle Title: the page on which the image occurs, if known
+ * @param $contextTitle Title|bool the page on which the image occurs, if known
* @return bool
*/
function wfIsBadImage( $name, $contextTitle = false ) {
diff --git a/includes/ImageGallery.php b/includes/ImageGallery.php
index f7020d63..4d5f067c 100644
--- a/includes/ImageGallery.php
+++ b/includes/ImageGallery.php
@@ -9,12 +9,9 @@ if ( ! defined( 'MEDIAWIKI' ) )
*
* @ingroup Media
*/
-class ImageGallery
-{
+class ImageGallery {
var $mImages, $mShowBytes, $mShowFilename;
var $mCaption = false;
- var $mSkin = false;
- var $mRevisionId = 0;
/**
* Hide blacklisted images?
@@ -23,6 +20,7 @@ class ImageGallery
/**
* Registered parser object for output callbacks
+ * @var Parser
*/
var $mParser;
@@ -39,13 +37,13 @@ class ImageGallery
*/
const THUMB_PADDING = 30;
const GB_PADDING = 5;
- //2px borders on each side + 2px implied padding on each side
+ // 2px borders on each side + 2px implied padding on each side
const GB_BORDERS = 8;
/**
* Create a new image gallery object.
*/
- function __construct( ) {
+ function __construct() {
global $wgGalleryOptions;
$this->mImages = array();
$this->mShowBytes = $wgGalleryOptions['showBytes'];
@@ -60,6 +58,8 @@ class ImageGallery
/**
* Register a parser object
+ *
+ * @param $parser Parser
*/
function setParser( $parser ) {
$this->mParser = $parser;
@@ -97,7 +97,7 @@ class ImageGallery
* invalid numbers will be rejected
*/
public function setPerRow( $num ) {
- if ($num >= 0) {
+ if ( $num >= 0 ) {
$this->mPerRow = (int)$num;
}
}
@@ -108,7 +108,7 @@ class ImageGallery
* @param $num Integer > 0; invalid numbers will be ignored
*/
public function setWidths( $num ) {
- if ($num > 0) {
+ if ( $num > 0 ) {
$this->mWidths = (int)$num;
}
}
@@ -119,7 +119,7 @@ class ImageGallery
* @param $num Integer > 0; invalid numbers will be ignored
*/
public function setHeights( $num ) {
- if ($num > 0) {
+ if ( $num > 0 ) {
$this->mHeights = (int)$num;
}
}
@@ -128,56 +128,44 @@ class ImageGallery
* Instruct the class to use a specific skin for rendering
*
* @param $skin Skin object
+ * @deprecated since 1.18 Not used anymore
*/
function useSkin( $skin ) {
- $this->mSkin = $skin;
- }
-
- /**
- * Return the skin that should be used
- *
- * @return Skin object
- */
- function getSkin() {
- if( !$this->mSkin ) {
- global $wgUser;
- $skin = $wgUser->getSkin();
- } else {
- $skin = $this->mSkin;
- }
- return $skin;
+ wfDeprecated( __METHOD__ );
+ /* no op */
}
/**
* Add an image to the gallery.
*
* @param $title Title object of the image that is added to the gallery
- * @param $html String: additional HTML text to be shown. The name and size of the image are always shown.
+ * @param $html String: Additional HTML text to be shown. The name and size of the image are always shown.
+ * @param $alt String: Alt text for the image
*/
- function add( $title, $html='' ) {
+ function add( $title, $html = '', $alt = '' ) {
if ( $title instanceof File ) {
// Old calling convention
$title = $title->getTitle();
}
- $this->mImages[] = array( $title, $html );
- wfDebug( "ImageGallery::add " . $title->getText() . "\n" );
+ $this->mImages[] = array( $title, $html, $alt );
+ wfDebug( 'ImageGallery::add ' . $title->getText() . "\n" );
}
/**
* Add an image at the beginning of the gallery.
*
* @param $title Title object of the image that is added to the gallery
- * @param $html String: Additional HTML text to be shown. The name and size of the image are always shown.
+ * @param $html String: Additional HTML text to be shown. The name and size of the image are always shown.
+ * @param $alt String: Alt text for the image
*/
- function insert( $title, $html='' ) {
+ function insert( $title, $html = '', $alt = '' ) {
if ( $title instanceof File ) {
// Old calling convention
$title = $title->getTitle();
}
- array_unshift( $this->mImages, array( &$title, $html ) );
+ array_unshift( $this->mImages, array( &$title, $html, $alt ) );
}
-
/**
* isEmpty() returns true if the gallery contains no images
*/
@@ -231,47 +219,56 @@ class ImageGallery
function toHTML() {
global $wgLang;
- $sk = $this->getSkin();
-
if ( $this->mPerRow > 0 ) {
$maxwidth = $this->mPerRow * ( $this->mWidths + self::THUMB_PADDING + self::GB_PADDING + self::GB_BORDERS );
- $oldStyle = isset( $this->mAttribs['style'] ) ? $this->mAttribs['style'] : "";
+ $oldStyle = isset( $this->mAttribs['style'] ) ? $this->mAttribs['style'] : '';
+ # _width is ignored by any sane browser. IE6 doesn't know max-width so it uses _width instead
$this->mAttribs['style'] = "max-width: {$maxwidth}px;_width: {$maxwidth}px;" . $oldStyle;
}
$attribs = Sanitizer::mergeAttributes(
- array(
- 'class' => 'gallery'),
- $this->mAttribs );
- $s = Xml::openElement( 'ul', $attribs );
+ array( 'class' => 'gallery' ), $this->mAttribs );
+
+ $output = Xml::openElement( 'ul', $attribs );
if ( $this->mCaption ) {
- $s .= "\n\t<li class='gallerycaption'>{$this->mCaption}</li>";
+ $output .= "\n\t<li class='gallerycaption'>{$this->mCaption}</li>";
}
- $params = array( 'width' => $this->mWidths, 'height' => $this->mHeights );
- $i = 0;
+ $params = array(
+ 'width' => $this->mWidths,
+ 'height' => $this->mHeights
+ );
+ # Output each image...
foreach ( $this->mImages as $pair ) {
$nt = $pair[0];
$text = $pair[1]; # "text" means "caption" here
+ $alt = $pair[2];
- # Give extensions a chance to select the file revision for us
- $time = $descQuery = false;
- wfRunHooks( 'BeforeGalleryFindFile', array( &$this, &$nt, &$time, &$descQuery ) );
-
+ $descQuery = false;
if ( $nt->getNamespace() == NS_FILE ) {
- $img = wfFindFile( $nt, array( 'time' => $time ) );
+ # Get the file...
+ if ( $this->mParser instanceof Parser ) {
+ # Give extensions a chance to select the file revision for us
+ $time = $sha1 = false;
+ wfRunHooks( 'BeforeParserFetchFileAndTitle',
+ array( $this->mParser, $nt, &$time, &$sha1, &$descQuery ) );
+ # Fetch and register the file (file title may be different via hooks)
+ list( $img, $nt ) = $this->mParser->fetchFileAndTitle( $nt, $time, $sha1 );
+ } else {
+ $img = wfFindFile( $nt );
+ }
} else {
$img = false;
}
if( !$img ) {
# We're dealing with a non-image, spit out the name and be done with it.
- $thumbhtml = "\n\t\t\t".'<div style="height: '.(self::THUMB_PADDING + $this->mHeights).'px;">'
+ $thumbhtml = "\n\t\t\t" . '<div style="height: ' . ( self::THUMB_PADDING + $this->mHeights ) . 'px;">'
. htmlspecialchars( $nt->getText() ) . '</div>';
} elseif( $this->mHideBadImages && wfIsBadImage( $nt->getDBkey(), $this->getContextTitle() ) ) {
# The image is blacklisted, just show it as a text link.
- $thumbhtml = "\n\t\t\t".'<div style="height: '.(self::THUMB_PADDING + $this->mHeights).'px;">' .
- $sk->link(
+ $thumbhtml = "\n\t\t\t" . '<div style="height: ' . ( self::THUMB_PADDING + $this->mHeights ) . 'px;">' .
+ Linker::link(
$nt,
htmlspecialchars( $nt->getText() ),
array(),
@@ -281,31 +278,28 @@ class ImageGallery
'</div>';
} elseif( !( $thumb = $img->transform( $params ) ) ) {
# Error generating thumbnail.
- $thumbhtml = "\n\t\t\t".'<div style="height: '.(self::THUMB_PADDING + $this->mHeights).'px;">'
+ $thumbhtml = "\n\t\t\t" . '<div style="height: ' . ( self::THUMB_PADDING + $this->mHeights ) . 'px;">'
. htmlspecialchars( $img->getLastError() ) . '</div>';
} else {
- //We get layout problems with the margin, if the image is smaller
- //than the line-height, so we less margin in these cases.
- $minThumbHeight = $thumb->height > 17 ? $thumb->height : 17;
- $vpad = floor(( self::THUMB_PADDING + $this->mHeights - $minThumbHeight ) /2);
-
-
+ $vpad = ( self::THUMB_PADDING + $this->mHeights - $thumb->height ) /2;
+
$imageParameters = array(
'desc-link' => true,
- 'desc-query' => $descQuery
+ 'desc-query' => $descQuery,
+ 'alt' => $alt,
);
- # In the absence of a caption, fall back on providing screen readers with the filename as alt text
- if ( $text == '' ) {
+ # In the absence of both alt text and caption, fall back on providing screen readers with the filename as alt text
+ if ( $alt == '' && $text == '' ) {
$imageParameters['alt'] = $nt->getText();
}
-
+
# Set both fixed width and min-height.
- $thumbhtml = "\n\t\t\t".
- '<div class="thumb" style="width: ' .($this->mWidths + self::THUMB_PADDING).'px;">'
+ $thumbhtml = "\n\t\t\t" .
+ '<div class="thumb" style="width: ' . ( $this->mWidths + self::THUMB_PADDING ) . 'px;">'
# Auto-margin centering for block-level elements. Needed now that we have video
# handlers since they may emit block-level elements as opposed to simple <img> tags.
# ref http://css-discuss.incutio.com/?page=CenteringBlockElement
- . '<div style="margin:'.$vpad.'px auto;">'
+ . '<div style="margin:' . $vpad . 'px auto;">'
. $thumb->toHtml( $imageParameters ) . '</div></div>';
// Call parser transform hook
@@ -316,22 +310,22 @@ class ImageGallery
//TODO
// $linkTarget = Title::newFromText( $wgContLang->getNsText( MWNamespace::getUser() ) . ":{$ut}" );
- // $ul = $sk->link( $linkTarget, $ut );
+ // $ul = Linker::link( $linkTarget, $ut );
if( $this->mShowBytes ) {
if( $img ) {
- $nb = wfMsgExt( 'nbytes', array( 'parsemag', 'escape'),
+ $fileSize = wfMsgExt( 'nbytes', array( 'parsemag', 'escape'),
$wgLang->formatNum( $img->getSize() ) );
} else {
- $nb = wfMsgHtml( 'filemissing' );
+ $fileSize = wfMsgHtml( 'filemissing' );
}
- $nb = "$nb<br />\n";
+ $fileSize = "$fileSize<br />\n";
} else {
- $nb = '';
+ $fileSize = '';
}
$textlink = $this->mShowFilename ?
- $sk->link(
+ Linker::link(
$nt,
htmlspecialchars( $wgLang->truncate( $nt->getText(), $this->mCaptionLength ) ),
array(),
@@ -344,21 +338,20 @@ class ImageGallery
# in version 4.8.6 generated crackpot html in its absence, see:
# http://bugzilla.wikimedia.org/show_bug.cgi?id=1765 -Ævar
- # Weird double wrapping in div needed due to FF2 bug
+ # Weird double wrapping (the extra div inside the li) needed due to FF2 bug
# Can be safely removed if FF2 falls completely out of existance
- $s .=
+ $output .=
"\n\t\t" . '<li class="gallerybox" style="width: ' . ( $this->mWidths + self::THUMB_PADDING + self::GB_PADDING ) . 'px">'
. '<div style="width: ' . ( $this->mWidths + self::THUMB_PADDING + self::GB_PADDING ) . 'px">'
. $thumbhtml
. "\n\t\t\t" . '<div class="gallerytext">' . "\n"
- . $textlink . $text . $nb
+ . $textlink . $text . $fileSize
. "\n\t\t\t</div>"
. "\n\t\t</div></li>";
- ++$i;
}
- $s .= "\n</ul>";
+ $output .= "\n</ul>";
- return $s;
+ return $output;
}
/**
diff --git a/includes/ImagePage.php b/includes/ImagePage.php
index c018e647..956977e0 100644
--- a/includes/ImagePage.php
+++ b/includes/ImagePage.php
@@ -1,35 +1,46 @@
<?php
-
-if ( !defined( 'MEDIAWIKI' ) )
- die( 1 );
-
/**
- * Special handling for image description pages
+ * Class for viewing MediaWiki file description pages
*
* @ingroup Media
*/
class ImagePage extends Article {
- /* private */ var $img; // Image object
- /* private */ var $displayImg;
- /* private */ var $repo;
- /* private */ var $fileLoaded;
+ /**
+ * @var File
+ */
+ private $displayImg;
+ /**
+ * @var FileRepo
+ */
+ private $repo;
+ private $fileLoaded;
+
var $mExtraDescription = false;
- var $dupes;
- function __construct( $title ) {
- parent::__construct( $title );
- $this->dupes = null;
- $this->repo = null;
+ protected function newPage( Title $title ) {
+ // Overload mPage with a file-specific page
+ return new WikiFilePage( $title );
+ }
+
+ /**
+ * Constructor from a page id
+ * @param $id Int article ID to load
+ */
+ public static function newFromID( $id ) {
+ $t = Title::newFromID( $id );
+ # @todo FIXME: Doesn't inherit right
+ return $t == null ? null : new self( $t );
+ # return $t == null ? null : new static( $t ); // PHP 5.3
}
/**
- * @param $file File:
+ * @param $file File:
* @return void
*/
public function setFile( $file ) {
+ $this->mPage->setFile( $file );
$this->displayImg = $file;
- $this->img = $file;
$this->fileLoaded = true;
}
@@ -39,18 +50,19 @@ class ImagePage extends Article {
}
$this->fileLoaded = true;
- $this->displayImg = $this->img = false;
- wfRunHooks( 'ImagePageFindFile', array( $this, &$this->img, &$this->displayImg ) );
- if ( !$this->img ) {
- $this->img = wfFindFile( $this->mTitle );
- if ( !$this->img ) {
- $this->img = wfLocalFile( $this->mTitle );
+ $this->displayImg = $img = false;
+ wfRunHooks( 'ImagePageFindFile', array( $this, &$img, &$this->displayImg ) );
+ if ( !$img ) { // not set by hook?
+ $img = wfFindFile( $this->getTitle() );
+ if ( !$img ) {
+ $img = wfLocalFile( $this->getTitle() );
}
}
- if ( !$this->displayImg ) {
- $this->displayImg = $this->img;
+ $this->mPage->setFile( $img );
+ if ( !$this->displayImg ) { // not set by hook?
+ $this->displayImg = $img;
}
- $this->repo = $this->img->getRepo();
+ $this->repo = $img->getRepo();
}
/**
@@ -69,25 +81,25 @@ class ImagePage extends Article {
$diff = $wgRequest->getVal( 'diff' );
$diffOnly = $wgRequest->getBool( 'diffonly', $wgUser->getOption( 'diffonly' ) );
- if ( $this->mTitle->getNamespace() != NS_FILE || ( isset( $diff ) && $diffOnly ) ) {
+ if ( $this->getTitle()->getNamespace() != NS_FILE || ( isset( $diff ) && $diffOnly ) ) {
return parent::view();
}
-
+
$this->loadFile();
- if ( $this->mTitle->getNamespace() == NS_FILE && $this->img->getRedirected() ) {
- if ( $this->mTitle->getDBkey() == $this->img->getName() || isset( $diff ) ) {
+ if ( $this->getTitle()->getNamespace() == NS_FILE && $this->mPage->getFile()->getRedirected() ) {
+ if ( $this->getTitle()->getDBkey() == $this->mPage->getFile()->getName() || isset( $diff ) ) {
// mTitle is the same as the redirect target so ask Article
// to perform the redirect for us.
$wgRequest->setVal( 'diffonly', 'true' );
return parent::view();
} else {
- // mTitle is not the same as the redirect target so it is
+ // mTitle is not the same as the redirect target so it is
// probably the redirect page itself. Fake the redirect symbol
- $wgOut->setPageTitle( $this->mTitle->getPrefixedText() );
- $wgOut->addHTML( $this->viewRedirect( Title::makeTitle( NS_FILE, $this->img->getName() ),
+ $wgOut->setPageTitle( $this->getTitle()->getPrefixedText() );
+ $wgOut->addHTML( $this->viewRedirect( Title::makeTitle( NS_FILE, $this->mPage->getFile()->getName() ),
/* $appendSubtitle */ true, /* $forceKnown */ true ) );
- $this->viewUpdates();
+ $this->mPage->viewUpdates();
return;
}
}
@@ -95,34 +107,43 @@ class ImagePage extends Article {
$this->showRedirectedFromHeader();
if ( $wgShowEXIF && $this->displayImg->exists() ) {
- // FIXME: bad interface, see note on MediaHandler::formatMetadata().
+ // @todo FIXME: Bad interface, see note on MediaHandler::formatMetadata().
$formattedMetadata = $this->displayImg->formatMetadata();
$showmeta = $formattedMetadata !== false;
} else {
$showmeta = false;
}
- if ( !$diff && $this->displayImg->exists() )
+ if ( !$diff && $this->displayImg->exists() ) {
$wgOut->addHTML( $this->showTOC( $showmeta ) );
+ }
- if ( !$diff )
+ if ( !$diff ) {
$this->openShowImage();
+ }
# No need to display noarticletext, we use our own message, output in openShowImage()
- if ( $this->getID() ) {
+ if ( $this->mPage->getID() ) {
+ # NS_FILE is in the user language, but this section (the actual wikitext)
+ # should be in page content language
+ $pageLang = $this->getTitle()->getPageLanguage();
+ $wgOut->addHTML( Xml::openElement( 'div', array( 'id' => 'mw-imagepage-content',
+ 'lang' => $pageLang->getCode(), 'dir' => $pageLang->getDir(),
+ 'class' => 'mw-content-'.$pageLang->getDir() ) ) );
parent::view();
+ $wgOut->addHTML( Xml::closeElement( 'div' ) );
} else {
# Just need to set the right headers
$wgOut->setArticleFlag( true );
- $wgOut->setPageTitle( $this->mTitle->getPrefixedText() );
- $this->viewUpdates();
+ $wgOut->setPageTitle( $this->getTitle()->getPrefixedText() );
+ $this->mPage->viewUpdates();
}
# Show shared description, if needed
if ( $this->mExtraDescription ) {
- $fol = wfMsgNoTrans( 'shareddescriptionfollows' );
- if ( $fol != '-' && !wfEmptyMsg( 'shareddescriptionfollows', $fol ) ) {
- $wgOut->addWikiText( $fol );
+ $fol = wfMessage( 'shareddescriptionfollows' );
+ if ( !$fol->isDisabled() ) {
+ $wgOut->addWikiText( $fol->plain() );
}
$wgOut->addHTML( '<div id="shared-image-desc">' . $this->mExtraDescription . "</div>\n" );
}
@@ -135,100 +156,38 @@ class ImagePage extends Article {
array( 'id' => 'filelinks' ),
wfMsg( 'imagelinks' ) ) . "\n" );
$this->imageDupes();
- # TODO! FIXME! For some freaky reason, we can't redirect to foreign images.
+ # @todo FIXME: For some freaky reason, we can't redirect to foreign images.
# Yet we return metadata about the target. Definitely an issue in the FileRepo
- $this->imageRedirects();
$this->imageLinks();
-
+
# Allow extensions to add something after the image links
$html = '';
wfRunHooks( 'ImagePageAfterImageLinks', array( $this, &$html ) );
- if ( $html )
+ if ( $html ) {
$wgOut->addHTML( $html );
+ }
if ( $showmeta ) {
$wgOut->addHTML( Xml::element( 'h2', array( 'id' => 'metadata' ), wfMsg( 'metadata' ) ) . "\n" );
$wgOut->addWikiText( $this->makeMetadataTable( $formattedMetadata ) );
- $wgOut->addModules( array( 'mediawiki.legacy.metadata' ) );
- }
-
- $css = $this->repo->getDescriptionStylesheetUrl();
- if ( $css ) {
- $wgOut->addStyle( $css );
- }
- }
-
- public function getRedirectTarget() {
- $this->loadFile();
- if ( $this->img->isLocal() ) {
- return parent::getRedirectTarget();
- }
- // Foreign image page
- $from = $this->img->getRedirected();
- $to = $this->img->getName();
- if ( $from == $to ) {
- return null;
+ $wgOut->addModules( array( 'mediawiki.action.view.metadata' ) );
}
- return $this->mRedirectTarget = Title::makeTitle( NS_FILE, $to );
- }
- public function followRedirect() {
- $this->loadFile();
- if ( $this->img->isLocal() ) {
- return parent::followRedirect();
- }
- $from = $this->img->getRedirected();
- $to = $this->img->getName();
- if ( $from == $to ) {
- return false;
+
+ // Add remote Filepage.css
+ if( !$this->repo->isLocal() ) {
+ $css = $this->repo->getDescriptionStylesheetUrl();
+ if ( $css ) {
+ $wgOut->addStyle( $css );
+ }
}
- return Title::makeTitle( NS_FILE, $to );
+ // always show the local local Filepage.css, bug 29277
+ $wgOut->addModuleStyles( 'filepage' );
}
- public function isRedirect( $text = false ) {
- $this->loadFile();
- if ( $this->img->isLocal() )
- return parent::isRedirect( $text );
-
- return (bool)$this->img->getRedirected();
- }
-
- public function isLocal() {
- $this->loadFile();
- return $this->img->isLocal();
- }
-
- public function getFile() {
- $this->loadFile();
- return $this->img;
- }
-
+
public function getDisplayedFile() {
$this->loadFile();
return $this->displayImg;
}
-
- public function getDuplicates() {
- $this->loadFile();
- if ( !is_null( $this->dupes ) ) {
- return $this->dupes;
- }
- if ( !( $hash = $this->img->getSha1() ) ) {
- return $this->dupes = array();
- }
- $dupes = RepoGroup::singleton()->findBySha1( $hash );
- // Remove duplicates with self and non matching file sizes
- $self = $this->img->getRepoName() . ':' . $this->img->getName();
- $size = $this->img->getSize();
- foreach ( $dupes as $index => $file ) {
- $key = $file->getRepoName() . ':' . $file->getName();
- if ( $key == $self )
- unset( $dupes[$index] );
- if ( $file->getSize() != $size )
- unset( $dupes[$index] );
- }
- return $this->dupes = $dupes;
-
- }
-
/**
* Create the TOC
@@ -238,26 +197,26 @@ class ImagePage extends Article {
*/
protected function showTOC( $metadata ) {
$r = array(
- '<li><a href="#file">' . wfMsgHtml( 'file-anchor-link' ) . '</a></li>',
- '<li><a href="#filehistory">' . wfMsgHtml( 'filehist' ) . '</a></li>',
- '<li><a href="#filelinks">' . wfMsgHtml( 'imagelinks' ) . '</a></li>',
+ '<li><a href="#file">' . wfMsgHtml( 'file-anchor-link' ) . '</a></li>',
+ '<li><a href="#filehistory">' . wfMsgHtml( 'filehist' ) . '</a></li>',
+ '<li><a href="#filelinks">' . wfMsgHtml( 'imagelinks' ) . '</a></li>',
);
if ( $metadata ) {
$r[] = '<li><a href="#metadata">' . wfMsgHtml( 'metadata' ) . '</a></li>';
}
-
+
wfRunHooks( 'ImagePageShowTOC', array( $this, &$r ) );
-
+
return '<ul id="filetoc">' . implode( "\n", $r ) . '</ul>';
}
/**
* Make a table with metadata to be shown in the output page.
*
- * FIXME: bad interface, see note on MediaHandler::formatMetadata().
+ * @todo FIXME: Bad interface, see note on MediaHandler::formatMetadata().
*
* @param $metadata Array: the array containing the EXIF data
- * @return String
+ * @return String The metadata table. This is treated as Wikitext (!)
*/
protected function makeMetadataTable( $metadata ) {
$r = "<div class=\"mw-imagepage-section-metadata\">";
@@ -265,7 +224,7 @@ class ImagePage extends Article {
$r .= "<table id=\"mw_metadata\" class=\"mw_metadata\">\n";
foreach ( $metadata as $type => $stuff ) {
foreach ( $stuff as $v ) {
- # FIXME, why is this using escapeId for a class?!
+ # @todo FIXME: Why is this using escapeId for a class?!
$class = Sanitizer::escapeId( $v['id'] );
if ( $type == 'collapsed' ) {
$class .= ' collapsable';
@@ -287,7 +246,7 @@ class ImagePage extends Article {
*/
public function getContent() {
$this->loadFile();
- if ( $this->img && !$this->img->isLocal() && 0 == $this->getID() ) {
+ if ( $this->mPage->getFile() && !$this->mPage->getFile()->isLocal() && 0 == $this->getID() ) {
return '';
}
return parent::getContent();
@@ -295,7 +254,7 @@ class ImagePage extends Article {
protected function openShowImage() {
global $wgOut, $wgUser, $wgImageLimits, $wgRequest,
- $wgLang, $wgContLang, $wgEnableUploads;
+ $wgLang, $wgEnableUploads;
$this->loadFile();
@@ -313,8 +272,7 @@ class ImagePage extends Article {
$max = $wgImageLimits[$sizeSel];
$maxWidth = $max[0];
$maxHeight = $max[1];
- $sk = $wgUser->getSkin();
- $dirmark = $wgContLang->getDirMark();
+ $dirmark = $wgLang->getDirMark();
if ( $this->displayImg->exists() ) {
# image
@@ -338,7 +296,7 @@ class ImagePage extends Article {
# image
# "Download high res version" link below the image
- # $msgsize = wfMsgHtml('file-info-size', $width_orig, $height_orig, $sk->formatSize( $this->displayImg->getSize() ), $mime );
+ # $msgsize = wfMsgHtml( 'file-info-size', $width_orig, $height_orig, Linker::formatSize( $this->displayImg->getSize() ), $mime );
# We'll show a thumbnail of this image
if ( $width > $maxWidth || $height > $maxHeight ) {
# Calculate the thumbnail size.
@@ -355,23 +313,29 @@ class ImagePage extends Article {
# because of rounding.
}
$msgbig = wfMsgHtml( 'show-big-image' );
- $msgsmall = wfMsgExt( 'show-big-image-thumb', 'parseinline',
- $wgLang->formatNum( $width ),
- $wgLang->formatNum( $height )
- );
+ $otherSizes = array();
+ foreach ( $wgImageLimits as $size ) {
+ if ( $size[0] < $width_orig && $size[1] < $height_orig &&
+ $size[0] != $width && $size[1] != $height ) {
+ $otherSizes[] = $this->makeSizeLink( $params, $size[0], $size[1] );
+ }
+ }
+ $msgsmall = wfMessage( 'show-big-image-preview' )->
+ rawParams( $this->makeSizeLink( $params, $width, $height ) )->
+ parse() . ' ' .
+ wfMessage( 'show-big-image-other' )->
+ rawParams( $wgLang->pipeList( $otherSizes ) )->parse();
} else {
# Image is small enough to show full size on image page
$msgsmall = wfMsgExt( 'file-nohires', array( 'parseinline' ) );
}
$params['width'] = $width;
+ $params['height'] = $height;
$thumbnail = $this->displayImg->transform( $params );
$showLink = true;
- $anchorclose = '';
- if ( !$this->displayImg->mustRender() ) {
- $anchorclose = "<br />" . $msgsmall;
- }
+ $anchorclose = '<br />' . $msgsmall;
$isMulti = $this->displayImg->isMultipage() && $this->displayImg->pageCount() > 1;
if ( $isMulti ) {
@@ -393,14 +357,14 @@ class ImagePage extends Article {
if ( $page > 1 ) {
$label = $wgOut->parse( wfMsg( 'imgmultipageprev' ), false );
- $link = $sk->link(
- $this->mTitle,
+ $link = Linker::link(
+ $this->getTitle(),
$label,
array(),
array( 'page' => $page - 1 ),
array( 'known', 'noclasses' )
);
- $thumb1 = $sk->makeThumbLinkObj( $this->mTitle, $this->displayImg, $link, $label, 'none',
+ $thumb1 = Linker::makeThumbLinkObj( $this->getTitle(), $this->displayImg, $link, $label, 'none',
array( 'page' => $page - 1 ) );
} else {
$thumb1 = '';
@@ -408,14 +372,14 @@ class ImagePage extends Article {
if ( $page < $count ) {
$label = wfMsg( 'imgmultipagenext' );
- $link = $sk->link(
- $this->mTitle,
+ $link = Linker::link(
+ $this->getTitle(),
$label,
array(),
array( 'page' => $page + 1 ),
array( 'known', 'noclasses' )
);
- $thumb2 = $sk->makeThumbLinkObj( $this->mTitle, $this->displayImg, $link, $label, 'none',
+ $thumb2 = Linker::makeThumbLinkObj( $this->getTitle(), $this->displayImg, $link, $label, 'none',
array( 'page' => $page + 1 ) );
} else {
$thumb2 = '';
@@ -439,7 +403,7 @@ class ImagePage extends Article {
$wgOut->addHTML(
'</td><td><div class="multipageimagenavbox">' .
Xml::openElement( 'form', $formParams ) .
- Html::hidden( 'title', $this->getTitle()->getPrefixedDbKey() ) .
+ Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
wfMsgExt( 'imgmultigoto', array( 'parseinline', 'replaceafter' ), $select ) .
Xml::submitButton( wfMsg( 'imgmultigo' ) ) .
Xml::closeElement( 'form' ) .
@@ -452,14 +416,13 @@ class ImagePage extends Article {
$icon = $this->displayImg->iconThumb();
$wgOut->addHTML( '<div class="fullImageLink" id="file">' .
- $icon->toHtml( array( 'file-link' => true ) ) .
- "</div>\n" );
+ $icon->toHtml( array( 'file-link' => true ) ) .
+ "</div>\n" );
}
$showLink = true;
}
-
if ( $showLink ) {
$filename = wfEscapeWikiText( $this->displayImg->getName() );
$linktext = $filename;
@@ -494,21 +457,45 @@ EOT
$uploadTitle = SpecialPage::getTitleFor( 'Upload' );
$nofile = array(
'filepage-nofile-link',
- $uploadTitle->getFullUrl( array( 'wpDestFile' => $this->img->getName() ) )
+ $uploadTitle->getFullURL( array( 'wpDestFile' => $this->mPage->getFile()->getName() ) )
);
- }
- else
- {
+ } else {
$nofile = 'filepage-nofile';
}
+ // Note, if there is an image description page, but
+ // no image, then this setRobotPolicy is overriden
+ // by Article::View().
$wgOut->setRobotPolicy( 'noindex,nofollow' );
$wgOut->wrapWikiMsg( "<div id='mw-imagepage-nofile' class='plainlinks'>\n$1\n</div>", $nofile );
if ( !$this->getID() ) {
// If there is no image, no shared image, and no description page,
// output a 404, to be consistent with articles.
- $wgRequest->response()->header( "HTTP/1.1 404 Not Found" );
+ $wgRequest->response()->header( 'HTTP/1.1 404 Not Found' );
}
}
+ $wgOut->setFileVersion( $this->displayImg );
+ }
+
+ /**
+ * Creates an thumbnail of specified size and returns an HTML link to it
+ * @param array $params Scaler parameters
+ * @param int $width
+ * @param int $height
+ */
+ private function makeSizeLink( $params, $width, $height ) {
+ $params['width'] = $width;
+ $params['height'] = $height;
+ $thumbnail = $this->displayImg->transform( $params );
+ if ( $thumbnail && !$thumbnail->isError() ) {
+ return Html::rawElement( 'a', array(
+ 'href' => $thumbnail->getUrl(),
+ 'class' => 'mw-thumbnail-link'
+ ), wfMessage( 'show-big-image-size' )->numParams(
+ $thumbnail->getWidth(), $thumbnail->getHeight()
+ )->parse() );
+ } else {
+ return '';
+ }
}
/**
@@ -519,16 +506,16 @@ EOT
$this->loadFile();
- $descUrl = $this->img->getDescriptionUrl();
- $descText = $this->img->getDescriptionText();
+ $descUrl = $this->mPage->getFile()->getDescriptionUrl();
+ $descText = $this->mPage->getFile()->getDescriptionText();
/* Add canonical to head if there is no local page for this shared file */
- if( $descUrl && $this->getID() == 0 ) {
+ if( $descUrl && $this->mPage->getID() == 0 ) {
$wgOut->addLink( array( 'rel' => 'canonical', 'href' => $descUrl ) );
}
$wrap = "<div class=\"sharedUploadNotice\">\n$1\n</div>\n";
- $repo = $this->img->getRepo()->getDisplayName();
+ $repo = $this->mPage->getFile()->getRepo()->getDisplayName();
if ( $descUrl && $descText && wfMsgNoTrans( 'sharedupload-desc-here' ) !== '-' ) {
$wgOut->wrapWikiMsg( $wrap, array( 'sharedupload-desc-here', $repo, $descUrl ) );
@@ -546,8 +533,8 @@ EOT
public function getUploadUrl() {
$this->loadFile();
$uploadTitle = SpecialPage::getTitleFor( 'Upload' );
- return $uploadTitle->getFullUrl( array(
- 'wpDestFile' => $this->img->getName(),
+ return $uploadTitle->getFullURL( array(
+ 'wpDestFile' => $this->mPage->getFile()->getName(),
'wpForReUpload' => 1
) );
}
@@ -559,26 +546,27 @@ EOT
protected function uploadLinksBox() {
global $wgUser, $wgOut, $wgEnableUploads, $wgUseExternalEditor;
- if ( !$wgEnableUploads ) { return; }
+ if ( !$wgEnableUploads ) {
+ return;
+ }
$this->loadFile();
- if ( !$this->img->isLocal() )
+ if ( !$this->mPage->getFile()->isLocal() ) {
return;
-
- $sk = $wgUser->getSkin();
+ }
$wgOut->addHTML( "<br /><ul>\n" );
# "Upload a new version of this file" link
- if ( UploadBase::userCanReUpload( $wgUser, $this->img->name ) ) {
- $ulink = $sk->makeExternalLink( $this->getUploadUrl(), wfMsg( 'uploadnewversion-linktext' ) );
+ if ( UploadBase::userCanReUpload( $wgUser, $this->mPage->getFile()->name ) ) {
+ $ulink = Linker::makeExternalLink( $this->getUploadUrl(), wfMsg( 'uploadnewversion-linktext' ) );
$wgOut->addHTML( "<li id=\"mw-imagepage-reupload-link\"><div class=\"plainlinks\">{$ulink}</div></li>\n" );
}
# External editing link
if ( $wgUseExternalEditor ) {
- $elink = $sk->link(
- $this->mTitle,
+ $elink = Linker::link(
+ $this->getTitle(),
wfMsgHtml( 'edit-externally' ),
array(),
array(
@@ -588,7 +576,11 @@ EOT
),
array( 'known', 'noclasses' )
);
- $wgOut->addHTML( '<li id="mw-imagepage-edit-external">' . $elink . ' <small>' . wfMsgExt( 'edit-externally-help', array( 'parseinline' ) ) . "</small></li>\n" );
+ $wgOut->addHTML(
+ '<li id="mw-imagepage-edit-external">' . $elink . ' <small>' .
+ wfMsgExt( 'edit-externally-help', array( 'parseinline' ) ) .
+ "</small></li>\n"
+ );
}
$wgOut->addHTML( "</ul>\n" );
@@ -608,69 +600,118 @@ EOT
$wgOut->addHTML( $pager->getBody() );
$wgOut->preventClickjacking( $pager->getPreventClickjacking() );
- $this->img->resetHistory(); // free db resources
+ $this->mPage->getFile()->resetHistory(); // free db resources
# Exist check because we don't want to show this on pages where an image
# doesn't exist along with the noimage message, that would suck. -ævar
- if ( $this->img->exists() ) {
+ if ( $this->mPage->getFile()->exists() ) {
$this->uploadLinksBox();
}
}
- protected function imageLinks() {
- global $wgUser, $wgOut, $wgLang;
-
- $limit = 100;
-
+ protected function queryImageLinks( $target, $limit ) {
$dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select(
+ return $dbr->select(
array( 'imagelinks', 'page' ),
- array( 'page_namespace', 'page_title' ),
- array( 'il_to' => $this->mTitle->getDBkey(), 'il_from = page_id' ),
+ array( 'page_namespace', 'page_title', 'page_is_redirect', 'il_to' ),
+ array( 'il_to' => $target, 'il_from = page_id' ),
__METHOD__,
- array( 'LIMIT' => $limit + 1 )
+ array( 'LIMIT' => $limit + 1, 'ORDER BY' => 'il_from', )
);
- $count = $dbr->numRows( $res );
+ }
+
+ protected function imageLinks() {
+ global $wgOut, $wgLang;
+
+ $limit = 100;
+
+ $res = $this->queryImageLinks( $this->getTitle()->getDbKey(), $limit + 1);
+ $rows = array();
+ $redirects = array();
+ foreach ( $res as $row ) {
+ if ( $row->page_is_redirect ) {
+ $redirects[$row->page_title] = array();
+ }
+ $rows[] = $row;
+ }
+ $count = count( $rows );
+
+ $hasMore = $count > $limit;
+ if ( !$hasMore && count( $redirects ) ) {
+ $res = $this->queryImageLinks( array_keys( $redirects ),
+ $limit - count( $rows ) + 1 );
+ foreach ( $res as $row ) {
+ $redirects[$row->il_to][] = $row;
+ $count++;
+ }
+ $hasMore = ( $res->numRows() + count( $rows ) ) > $limit;
+ }
+
if ( $count == 0 ) {
- $wgOut->wrapWikiMsg( Html::rawElement( 'div', array ( 'id' => 'mw-imagepage-nolinkstoimage' ), "\n$1\n" ), 'nolinkstoimage' );
+ $wgOut->wrapWikiMsg(
+ Html::rawElement( 'div',
+ array( 'id' => 'mw-imagepage-nolinkstoimage' ), "\n$1\n" ),
+ 'nolinkstoimage'
+ );
return;
}
-
+
$wgOut->addHTML( "<div id='mw-imagepage-section-linkstoimage'>\n" );
- if ( $count <= $limit - 1 ) {
+ if ( !$hasMore ) {
$wgOut->addWikiMsg( 'linkstoimage', $count );
} else {
// More links than the limit. Add a link to [[Special:Whatlinkshere]]
$wgOut->addWikiMsg( 'linkstoimage-more',
$wgLang->formatNum( $limit ),
- $this->mTitle->getPrefixedDBkey()
+ $this->getTitle()->getPrefixedDBkey()
);
}
- $wgOut->addHTML( Html::openElement( 'ul', array( 'class' => 'mw-imagepage-linkstoimage' ) ) . "\n" );
- $sk = $wgUser->getSkin();
+ $wgOut->addHTML(
+ Html::openElement( 'ul',
+ array( 'class' => 'mw-imagepage-linkstoimage' ) ) . "\n"
+ );
$count = 0;
- $elements = array();
- foreach ( $res as $s ) {
- $count++;
- if ( $count <= $limit ) {
- // We have not yet reached the extra one that tells us there is more to fetch
- $elements[] = $s;
- }
- }
// Sort the list by namespace:title
- usort ( $elements, array( $this, 'compare' ) );
+ usort( $rows, array( $this, 'compare' ) );
// Create links for every element
- foreach( $elements as $element ) {
- $link = $sk->linkKnown( Title::makeTitle( $element->page_namespace, $element->page_title ) );
- $wgOut->addHTML( Html::rawElement(
+ $currentCount = 0;
+ foreach( $rows as $element ) {
+ $currentCount++;
+ if ( $currentCount > $limit ) {
+ break;
+ }
+
+ $link = Linker::linkKnown( Title::makeTitle( $element->page_namespace, $element->page_title ) );
+ if ( !isset( $redirects[$element->page_title] ) ) {
+ $liContents = $link;
+ } else {
+ $ul = "<ul class='mw-imagepage-redirectstofile'>\n";
+ foreach ( $redirects[$element->page_title] as $row ) {
+ $currentCount++;
+ if ( $currentCount > $limit ) {
+ break;
+ }
+
+ $link2 = Linker::linkKnown( Title::makeTitle( $row->page_namespace, $row->page_title ) );
+ $ul .= Html::rawElement(
'li',
array( 'id' => 'mw-imagepage-linkstoimage-ns' . $element->page_namespace ),
- $link
- ) . "\n"
+ $link2
+ ) . "\n";
+ }
+ $ul .= '</ul>';
+ $liContents = wfMessage( 'linkstoimage-redirect' )->rawParams(
+ $link, $ul )->parse();
+ }
+ $wgOut->addHTML( Html::rawElement(
+ 'li',
+ array( 'id' => 'mw-imagepage-linkstoimage-ns' . $element->page_namespace ),
+ $liContents
+ ) . "\n"
);
};
@@ -679,57 +720,31 @@ EOT
// Add a links to [[Special:Whatlinkshere]]
if ( $count > $limit ) {
- $wgOut->addWikiMsg( 'morelinkstoimage', $this->mTitle->getPrefixedDBkey() );
+ $wgOut->addWikiMsg( 'morelinkstoimage', $this->getTitle()->getPrefixedDBkey() );
}
$wgOut->addHTML( Html::closeElement( 'div' ) . "\n" );
}
-
- protected function imageRedirects() {
- global $wgUser, $wgOut, $wgLang;
-
- $redirects = $this->getTitle()->getRedirectsHere( NS_FILE );
- if ( count( $redirects ) == 0 ) return;
-
- $wgOut->addHTML( "<div id='mw-imagepage-section-redirectstofile'>\n" );
- $wgOut->addWikiMsg( 'redirectstofile',
- $wgLang->formatNum( count( $redirects ) )
- );
- $wgOut->addHTML( "<ul class='mw-imagepage-redirectstofile'>\n" );
-
- $sk = $wgUser->getSkin();
- foreach ( $redirects as $title ) {
- $link = $sk->link(
- $title,
- null,
- array(),
- array( 'redirect' => 'no' ),
- array( 'known', 'noclasses' )
- );
- $wgOut->addHTML( "<li>{$link}</li>\n" );
- }
- $wgOut->addHTML( "</ul></div>\n" );
-
- }
protected function imageDupes() {
- global $wgOut, $wgUser, $wgLang;
+ global $wgOut, $wgLang;
$this->loadFile();
- $dupes = $this->getDuplicates();
- if ( count( $dupes ) == 0 ) return;
+ $dupes = $this->mPage->getDuplicates();
+ if ( count( $dupes ) == 0 ) {
+ return;
+ }
$wgOut->addHTML( "<div id='mw-imagepage-section-duplicates'>\n" );
$wgOut->addWikiMsg( 'duplicatesoffile',
- $wgLang->formatNum( count( $dupes ) ), $this->mTitle->getDBkey()
+ $wgLang->formatNum( count( $dupes ) ), $this->getTitle()->getDBkey()
);
$wgOut->addHTML( "<ul class='mw-imagepage-duplicates'>\n" );
- $sk = $wgUser->getSkin();
foreach ( $dupes as $file ) {
$fromSrc = '';
if ( $file->isLocal() ) {
- $link = $sk->link(
+ $link = Linker::link(
$file->getTitle(),
null,
array(),
@@ -737,7 +752,7 @@ EOT
array( 'known', 'noclasses' )
);
} else {
- $link = $sk->makeExternalLink( $file->getDescriptionUrl(),
+ $link = Linker::makeExternalLink( $file->getDescriptionUrl(),
$file->getTitle()->getPrefixedText() );
$fromSrc = wfMsg( 'shared-repo-from', $file->getRepo()->getDisplayName() );
}
@@ -751,68 +766,38 @@ EOT
*/
public function delete() {
global $wgUploadMaintenance;
- if ( $wgUploadMaintenance && $this->mTitle && $this->mTitle->getNamespace() == NS_FILE ) {
+ if ( $wgUploadMaintenance && $this->getTitle() && $this->getTitle()->getNamespace() == NS_FILE ) {
global $wgOut;
$wgOut->wrapWikiMsg( "<div class='error'>\n$1\n</div>\n", array( 'filedelete-maintenance' ) );
return;
}
$this->loadFile();
- if ( !$this->img->exists() || !$this->img->isLocal() || $this->img->getRedirected() ) {
+ if ( !$this->mPage->getFile()->exists() || !$this->mPage->getFile()->isLocal() || $this->mPage->getFile()->getRedirected() ) {
// Standard article deletion
parent::delete();
return;
}
- $deleter = new FileDeleteForm( $this->img );
+ $deleter = new FileDeleteForm( $this->mPage->getFile() );
$deleter->execute();
}
/**
- * Revert the file to an earlier version
- */
- public function revert() {
- $this->loadFile();
- $reverter = new FileRevertForm( $this->img );
- $reverter->execute();
- }
-
- /**
- * Override handling of action=purge
- */
- public function doPurge() {
- $this->loadFile();
- if ( $this->img->exists() ) {
- wfDebug( "ImagePage::doPurge purging " . $this->img->getName() . "\n" );
- $update = new HTMLCacheUpdate( $this->mTitle, 'imagelinks' );
- $update->doUpdate();
- $this->img->upgradeRow();
- $this->img->purgeCache();
- } else {
- wfDebug( "ImagePage::doPurge no image for " . $this->img->getName() . "; limiting purge to cache only\n" );
- // even if the file supposedly doesn't exist, force any cached information
- // to be updated (in case the cached information is wrong)
- $this->img->purgeCache();
- }
- parent::doPurge();
- }
-
- /**
* Display an error with a wikitext description
*/
function showError( $description ) {
global $wgOut;
- $wgOut->setPageTitle( wfMsg( "internalerror" ) );
- $wgOut->setRobotPolicy( "noindex,nofollow" );
+ $wgOut->setPageTitle( wfMsg( 'internalerror' ) );
+ $wgOut->setRobotPolicy( 'noindex,nofollow' );
$wgOut->setArticleRelated( false );
$wgOut->enableClientCache( false );
$wgOut->addWikiText( $description );
}
-
/**
* Callback for usort() to do link sorts by (namespace, title)
* Function copied from Title::compare()
- *
+ *
* @param $a object page to compare with
* @param $b object page to compare with
* @return Integer: result of string comparison, or namespace comparison
@@ -833,12 +818,29 @@ EOT
*/
class ImageHistoryList {
- protected $imagePage, $img, $skin, $title, $repo, $showThumb;
+ /**
+ * @var Title
+ */
+ protected $title;
+
+ /**
+ * @var File
+ */
+ protected $img;
+
+ /**
+ * @var ImagePage
+ */
+ protected $imagePage;
+
+ protected $repo, $showThumb;
protected $preventClickjacking = false;
+ /**
+ * @param ImagePage $imagePage
+ */
public function __construct( $imagePage ) {
- global $wgUser, $wgShowArchiveThumbnails;
- $this->skin = $wgUser->getSkin();
+ global $wgShowArchiveThumbnails;
$this->current = $imagePage->getFile();
$this->img = $imagePage->getDisplayedFile();
$this->title = $imagePage->getTitle();
@@ -850,10 +852,6 @@ class ImageHistoryList {
return $this->imagePage;
}
- public function getSkin() {
- return $this->skin;
- }
-
public function getFile() {
return $this->img;
}
@@ -866,7 +864,7 @@ class ImageHistoryList {
. $navLinks . "\n"
. Xml::openElement( 'table', array( 'class' => 'wikitable filehistory' ) ) . "\n"
. '<tr><td></td>'
- . ( $this->current->isLocal() && ( $wgUser->isAllowed( 'delete' ) || $wgUser->isAllowed( 'deletedhistory' ) ) ? '<td></td>' : '' )
+ . ( $this->current->isLocal() && ( $wgUser->isAllowedAny( 'delete', 'deletedhistory' ) ) ? '<td></td>' : '' )
. '<th>' . wfMsgHtml( 'filehist-datetime' ) . '</th>'
. ( $this->showThumb ? '<th>' . wfMsgHtml( 'filehist-thumb' ) . '</th>' : '' )
. '<th>' . wfMsgHtml( 'filehist-dimensions' ) . '</th>'
@@ -879,8 +877,13 @@ class ImageHistoryList {
return "</table>\n$navLinks\n</div>\n";
}
+ /**
+ * @param $iscur
+ * @param $file File
+ * @return string
+ */
public function imageHistoryLine( $iscur, $file ) {
- global $wgUser, $wgLang;
+ global $wgUser, $wgLang, $wgContLang;
$timestamp = wfTimestamp( TS_MW, $file->getTimestamp() );
$img = $iscur ? $file->getName() : $file->getArchiveName();
@@ -892,14 +895,15 @@ class ImageHistoryList {
$row = $selected = '';
// Deletion link
- if ( $local && ( $wgUser->isAllowed( 'delete' ) || $wgUser->isAllowed( 'deletedhistory' ) ) ) {
+ if ( $local && ( $wgUser->isAllowedAny( 'delete', 'deletedhistory' ) ) ) {
$row .= '<td>';
# Link to remove from history
if ( $wgUser->isAllowed( 'delete' ) ) {
$q = array( 'action' => 'delete' );
- if ( !$iscur )
+ if ( !$iscur ) {
$q['oldimage'] = $img;
- $row .= $this->skin->link(
+ }
+ $row .= Linker::link(
$this->title,
wfMsgHtml( $iscur ? 'filehist-deleteall' : 'filehist-deleteone' ),
array(), $q, array( 'known' )
@@ -913,7 +917,7 @@ class ImageHistoryList {
}
// If file is top revision or locked from this user, don't link
if ( $iscur || !$file->userCan( File::DELETED_RESTRICTED ) ) {
- $del = $this->skin->revDeleteLinkDisabled( $canHide );
+ $del = Linker::revDeleteLinkDisabled( $canHide );
} else {
list( $ts, $name ) = explode( '!', $img, 2 );
$query = array(
@@ -921,7 +925,7 @@ class ImageHistoryList {
'target' => $this->title->getPrefixedText(),
'ids' => $ts,
);
- $del = $this->skin->revDeleteLink( $query,
+ $del = Linker::revDeleteLink( $query,
$file->isDeleted( File::DELETED_RESTRICTED ), $canHide );
}
$row .= $del;
@@ -937,7 +941,7 @@ class ImageHistoryList {
if ( $file->isDeleted( File::DELETED_FILE ) ) {
$row .= wfMsgHtml( 'filehist-revert' );
} else {
- $row .= $this->skin->link(
+ $row .= Linker::link(
$this->title,
wfMsgHtml( 'filehist-revert' ),
array(),
@@ -961,20 +965,24 @@ class ImageHistoryList {
# Don't link to unviewable files
$row .= '<span class="history-deleted">' . $wgLang->timeAndDate( $timestamp, true ) . '</span>';
} elseif ( $file->isDeleted( File::DELETED_FILE ) ) {
- $this->preventClickjacking();
- $revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
- # Make a link to review the image
- $url = $this->skin->link(
- $revdel,
- $wgLang->timeAndDate( $timestamp, true ),
- array(),
- array(
- 'target' => $this->title->getPrefixedText(),
- 'file' => $img,
- 'token' => $wgUser->editToken( $img )
- ),
- array( 'known', 'noclasses' )
- );
+ if ( $local ) {
+ $this->preventClickjacking();
+ $revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
+ # Make a link to review the image
+ $url = Linker::link(
+ $revdel,
+ $wgLang->timeAndDate( $timestamp, true ),
+ array(),
+ array(
+ 'target' => $this->title->getPrefixedText(),
+ 'file' => $img,
+ 'token' => $wgUser->editToken( $img )
+ ),
+ array( 'known', 'noclasses' )
+ );
+ } else {
+ $url = $wgLang->timeAndDate( $timestamp, true );
+ }
$row .= '<span class="history-deleted">' . $url . '</span>';
} else {
$url = $iscur ? $this->current->getUrl() : $this->current->getArchiveUrl( $img );
@@ -990,7 +998,7 @@ class ImageHistoryList {
// Image dimensions + size
$row .= '<td>';
$row .= htmlspecialchars( $file->getDimensionsString() );
- $row .= " <span style='white-space: nowrap;'>(" . $this->skin->formatSize( $file->getSize() ) . ')</span>';
+ $row .= ' <span style="white-space: nowrap;">(' . Linker::formatSize( $file->getSize() ) . ')</span>';
$row .= '</td>';
// Uploading user
@@ -1000,29 +1008,32 @@ class ImageHistoryList {
$row .= '<span class="history-deleted">' . wfMsgHtml( 'rev-deleted-user' ) . '</span>';
} else {
if ( $local ) {
- $row .= $this->skin->userLink( $user, $usertext ) . ' <span style="white-space: nowrap;">' .
- $this->skin->userToolLinks( $user, $usertext ) . '</span>';
+ $row .= Linker::userLink( $user, $usertext ) . ' <span style="white-space: nowrap;">' .
+ Linker::userToolLinks( $user, $usertext ) . '</span>';
} else {
$row .= htmlspecialchars( $usertext );
}
}
- $row .= '</td><td>';
+ $row .= '</td>';
// Don't show deleted descriptions
if ( $file->isDeleted( File::DELETED_COMMENT ) ) {
- $row .= '<span class="history-deleted">' . wfMsgHtml( 'rev-deleted-comment' ) . '</span>';
+ $row .= '<td><span class="history-deleted">' . wfMsgHtml( 'rev-deleted-comment' ) . '</span></td>';
} else {
- $row .= $this->skin->commentBlock( $description, $this->title );
+ $row .= '<td dir="' . $wgContLang->getDir() . '">' . Linker::commentBlock( $description, $this->title ) . '</td>';
}
- $row .= '</td>';
$rowClass = null;
wfRunHooks( 'ImagePageFileHistoryLine', array( $this, $file, &$row, &$rowClass ) );
- $classAttr = $rowClass ? " class='$rowClass'" : "";
+ $classAttr = $rowClass ? " class='$rowClass'" : '';
return "<tr{$classAttr}>{$row}</tr>\n";
}
+ /**
+ * @param $file File
+ * @return string
+ */
protected function getThumbForLine( $file ) {
global $wgLang;
@@ -1041,8 +1052,10 @@ class ImageHistoryList {
$wgLang->time( $timestamp, true ) ),
'file-link' => true,
);
-
- if ( !$thumbnail ) return wfMsgHtml( 'filehist-nothumb' );
+
+ if ( !$thumbnail ) {
+ return wfMsgHtml( 'filehist-nothumb' );
+ }
return $thumbnail->toHtml( $options );
} else {
@@ -1062,6 +1075,19 @@ class ImageHistoryList {
class ImageHistoryPseudoPager extends ReverseChronologicalPager {
protected $preventClickjacking = false;
+ /**
+ * @var File
+ */
+ protected $mImg;
+
+ /**
+ * @var Title
+ */
+ protected $mTitle;
+
+ /**
+ * @param ImagePage $imagePage
+ */
function __construct( $imagePage ) {
parent::__construct();
$this->mImagePage = $imagePage;
@@ -1071,7 +1097,7 @@ class ImageHistoryPseudoPager extends ReverseChronologicalPager {
$this->mHist = array();
$this->mRange = array( 0, 0 ); // display range
}
-
+
function getTitle() {
return $this->mTitle;
}
@@ -1087,7 +1113,7 @@ class ImageHistoryPseudoPager extends ReverseChronologicalPager {
function formatRow( $row ) {
return '';
}
-
+
function getBody() {
$s = '';
$this->doQuery();
@@ -1111,7 +1137,9 @@ class ImageHistoryPseudoPager extends ReverseChronologicalPager {
}
function doQuery() {
- if ( $this->mQueryDone ) return;
+ if ( $this->mQueryDone ) {
+ return;
+ }
$this->mImg = $this->mImagePage->getFile(); // ensure loading
if ( !$this->mImg->exists() ) {
return;
@@ -1188,7 +1216,7 @@ class ImageHistoryPseudoPager extends ReverseChronologicalPager {
}
$this->mQueryDone = true;
}
-
+
protected function preventClickjacking( $enable = true ) {
$this->preventClickjacking = $enable;
}
diff --git a/includes/ImageQueryPage.php b/includes/ImageQueryPage.php
index 180201a2..f46974b2 100644
--- a/includes/ImageQueryPage.php
+++ b/includes/ImageQueryPage.php
@@ -7,15 +7,15 @@
* @ingroup SpecialPage
* @author Rob Church <robchur@gmail.com>
*/
-class ImageQueryPage extends QueryPage {
+abstract class ImageQueryPage extends QueryPage {
/**
* Format and output report results using the given information plus
* OutputPage
*
* @param $out OutputPage to print to
- * @param $skin Skin: user skin to use
- * @param $dbr Database (read) connection to use
+ * @param $skin Skin: user skin to use [unused]
+ * @param $dbr DatabaseBase (read) connection to use
* @param $res Integer: result pointer
* @param $num Integer: number of available result rows
* @param $offset Integer: paging offset
@@ -23,14 +23,14 @@ class ImageQueryPage extends QueryPage {
protected function outputResults( $out, $skin, $dbr, $res, $num, $offset ) {
if( $num > 0 ) {
$gallery = new ImageGallery();
- $gallery->useSkin( $skin );
# $res might contain the whole 1,000 rows, so we read up to
# $num [should update this to use a Pager]
for( $i = 0; $i < $num && $row = $dbr->fetchObject( $res ); $i++ ) {
- $image = $this->prepareImage( $row );
- if( $image ) {
- $gallery->add( $image->getTitle(), $this->getCellHtml( $row ) );
+ $namespace = isset( $row->namespace ) ? $row->namespace : NS_FILE;
+ $title = Title::makeTitleSafe( $namespace, $row->title );
+ if ( $title instanceof Title && $title->getNamespace() == NS_FILE ) {
+ $gallery->add( $title, $this->getCellHtml( $row ) );
}
}
@@ -38,19 +38,8 @@ class ImageQueryPage extends QueryPage {
}
}
- /**
- * Prepare an image object given a result row
- *
- * @param $row Object: result row
- * @return Image
- */
- private function prepareImage( $row ) {
- $namespace = isset( $row->namespace ) ? $row->namespace : NS_FILE;
- $title = Title::makeTitleSafe( $namespace, $row->title );
- return ( $title instanceof Title && $title->getNamespace() == NS_FILE )
- ? wfFindFile( $title )
- : null;
- }
+ // Gotta override this since it's abstract
+ function formatResult( $skin, $result ) { }
/**
* Get additional HTML to be shown in a results' cell
diff --git a/includes/Import.php b/includes/Import.php
index c76a6834..b874462e 100644
--- a/includes/Import.php
+++ b/includes/Import.php
@@ -35,16 +35,22 @@ class WikiImporter {
private $mLogItemCallback, $mUploadCallback, $mRevisionCallback, $mPageCallback;
private $mSiteInfoCallback, $mTargetNamespace, $mPageOutCallback;
private $mDebug;
+ private $mImportUploads, $mImageBasePath;
/**
* Creates an ImportXMLReader drawing from the source provided
- */
+ */
function __construct( $source ) {
$this->reader = new XMLReader();
stream_wrapper_register( 'uploadsource', 'UploadSourceAdapter' );
$id = UploadSourceAdapter::registerSource( $source );
- $this->reader->open( "uploadsource://$id" );
+ if (defined( 'LIBXML_PARSEHUGE' ) ) {
+ $this->reader->open( "uploadsource://$id", null, LIBXML_PARSEHUGE );
+ }
+ else {
+ $this->reader->open( "uploadsource://$id" );
+ }
// Default callbacks
$this->setRevisionCallback( array( $this, "importRevision" ) );
@@ -163,12 +169,22 @@ class WikiImporter {
// Don't override namespaces
$this->mTargetNamespace = null;
} elseif( $namespace >= 0 ) {
- // FIXME: Check for validity
+ // @todo FIXME: Check for validity
$this->mTargetNamespace = intval( $namespace );
} else {
return false;
}
}
+
+ /**
+ *
+ */
+ public function setImageBasePath( $dir ) {
+ $this->mImageBasePath = $dir;
+ }
+ public function setImportUploads( $import ) {
+ $this->mImportUploads = $import;
+ }
/**
* Default per-revision callback, performs the import.
@@ -192,9 +208,8 @@ class WikiImporter {
* Dummy for now...
*/
public function importUpload( $revision ) {
- //$dbw = wfGetDB( DB_MASTER );
- //return $dbw->deadlockLoop( array( $revision, 'importUpload' ) );
- return false;
+ $dbw = wfGetDB( DB_MASTER );
+ return $dbw->deadlockLoop( array( $revision, 'importUpload' ) );
}
/**
@@ -295,7 +310,7 @@ class WikiImporter {
return $buffer;
}
}
-
+
$this->reader->close();
return '';
}
@@ -545,18 +560,27 @@ class WikiImporter {
private function processRevision( $pageInfo, $revisionInfo ) {
$revision = new WikiRevision;
- $revision->setID( $revisionInfo['id'] );
- $revision->setText( $revisionInfo['text'] );
+ if( isset( $revisionInfo['id'] ) ) {
+ $revision->setID( $revisionInfo['id'] );
+ }
+ if ( isset( $revisionInfo['text'] ) ) {
+ $revision->setText( $revisionInfo['text'] );
+ }
$revision->setTitle( $pageInfo['_title'] );
- $revision->setTimestamp( $revisionInfo['timestamp'] );
+
+ if ( isset( $revisionInfo['timestamp'] ) ) {
+ $revision->setTimestamp( $revisionInfo['timestamp'] );
+ } else {
+ $revision->setTimestamp( wfTimestampNow() );
+ }
if ( isset( $revisionInfo['comment'] ) ) {
$revision->setComment( $revisionInfo['comment'] );
}
- if ( isset( $revisionInfo['minor'] ) )
+ if ( isset( $revisionInfo['minor'] ) ) {
$revision->setMinor( true );
-
+ }
if ( isset( $revisionInfo['contributor']['ip'] ) ) {
$revision->setUserIP( $revisionInfo['contributor']['ip'] );
}
@@ -572,7 +596,7 @@ class WikiImporter {
$uploadInfo = array();
$normalFields = array( 'timestamp', 'comment', 'filename', 'text',
- 'src', 'size' );
+ 'src', 'size', 'sha1base36', 'archivename', 'rel' );
$skip = false;
@@ -591,24 +615,59 @@ class WikiImporter {
$uploadInfo[$tag] = $this->nodeContents();
} elseif ( $tag == 'contributor' ) {
$uploadInfo['contributor'] = $this->handleContributor();
+ } elseif ( $tag == 'contents' ) {
+ $contents = $this->nodeContents();
+ $encoding = $this->reader->getAttribute( 'encoding' );
+ if ( $encoding === 'base64' ) {
+ $uploadInfo['fileSrc'] = $this->dumpTemp( base64_decode( $contents ) );
+ $uploadInfo['isTempSrc'] = true;
+ }
} elseif ( $tag != '#text' ) {
$this->warn( "Unhandled upload XML tag $tag" );
$skip = true;
}
}
+
+ if ( $this->mImageBasePath && isset( $uploadInfo['rel'] ) ) {
+ $path = "{$this->mImageBasePath}/{$uploadInfo['rel']}";
+ if ( file_exists( $path ) ) {
+ $uploadInfo['fileSrc'] = $path;
+ $uploadInfo['isTempSrc'] = false;
+ }
+ }
- return $this->processUpload( $pageInfo, $uploadInfo );
+ if ( $this->mImportUploads ) {
+ return $this->processUpload( $pageInfo, $uploadInfo );
+ }
+ }
+
+ private function dumpTemp( $contents ) {
+ $filename = tempnam( wfTempDir(), 'importupload' );
+ file_put_contents( $filename, $contents );
+ return $filename;
}
+
private function processUpload( $pageInfo, $uploadInfo ) {
$revision = new WikiRevision;
+ $text = isset( $uploadInfo['text'] ) ? $uploadInfo['text'] : '';
$revision->setTitle( $pageInfo['_title'] );
- $revision->setID( $uploadInfo['id'] );
+ $revision->setID( $pageInfo['id'] );
$revision->setTimestamp( $uploadInfo['timestamp'] );
- $revision->setText( $uploadInfo['text'] );
+ $revision->setText( $text );
$revision->setFilename( $uploadInfo['filename'] );
+ if ( isset( $uploadInfo['archivename'] ) ) {
+ $revision->setArchiveName( $uploadInfo['archivename'] );
+ }
$revision->setSrc( $uploadInfo['src'] );
+ if ( isset( $uploadInfo['fileSrc'] ) ) {
+ $revision->setFileSrc( $uploadInfo['fileSrc'],
+ !empty( $uploadInfo['isTempSrc'] ) );
+ }
+ if ( isset( $uploadInfo['sha1base36'] ) ) {
+ $revision->setSha1Base36( $uploadInfo['sha1base36'] );
+ }
$revision->setSize( intval( $uploadInfo['size'] ) );
$revision->setComment( $uploadInfo['comment'] );
@@ -619,7 +678,7 @@ class WikiImporter {
$revision->setUserName( $uploadInfo['contributor']['username'] );
}
- return $this->uploadCallback( $revision );
+ return call_user_func( $this->mUploadCallback, $revision );
}
private function handleContributor() {
@@ -778,6 +837,7 @@ class XMLReader2 extends XMLReader {
* @ingroup SpecialPage
*/
class WikiRevision {
+ var $importer = null;
var $title = null;
var $id = 0;
var $timestamp = "20010115000000";
@@ -789,6 +849,10 @@ class WikiRevision {
var $type = "";
var $action = "";
var $params = "";
+ var $fileSrc = '';
+ var $sha1base36 = false;
+ var $isTemp = false;
+ var $archiveName = '';
function setTitle( $title ) {
if( is_object( $title ) ) {
@@ -832,27 +896,40 @@ class WikiRevision {
function setSrc( $src ) {
$this->src = $src;
}
+ function setFileSrc( $src, $isTemp ) {
+ $this->fileSrc = $src;
+ $this->fileIsTemp = $isTemp;
+ }
+ function setSha1Base36( $sha1base36 ) {
+ $this->sha1base36 = $sha1base36;
+ }
function setFilename( $filename ) {
$this->filename = $filename;
}
+ function setArchiveName( $archiveName ) {
+ $this->archiveName = $archiveName;
+ }
function setSize( $size ) {
$this->size = intval( $size );
}
-
+
function setType( $type ) {
$this->type = $type;
}
-
+
function setAction( $action ) {
$this->action = $action;
}
-
+
function setParams( $params ) {
$this->params = $params;
}
+ /**
+ * @return Title
+ */
function getTitle() {
return $this->title;
}
@@ -884,23 +961,38 @@ class WikiRevision {
function getSrc() {
return $this->src;
}
+ function getSha1() {
+ if ( $this->sha1base36 ) {
+ return wfBaseConvert( $this->sha1base36, 36, 16 );
+ }
+ return false;
+ }
+ function getFileSrc() {
+ return $this->fileSrc;
+ }
+ function isTempSrc() {
+ return $this->isTemp;
+ }
function getFilename() {
return $this->filename;
}
+ function getArchiveName() {
+ return $this->archiveName;
+ }
function getSize() {
return $this->size;
}
-
+
function getType() {
return $this->type;
}
-
+
function getAction() {
return $this->action;
}
-
+
function getParams() {
return $this->params;
}
@@ -913,9 +1005,11 @@ class WikiRevision {
if( $user ) {
$userId = intval( $user->getId() );
$userText = $user->getName();
+ $userObj = $user;
} else {
$userId = 0;
$userText = $this->getUser();
+ $userObj = new User;
}
// avoid memory leak...?
@@ -928,6 +1022,7 @@ class WikiRevision {
# must create the page...
$pageId = $article->insertOn( $dbw );
$created = true;
+ $oldcountable = null;
} else {
$created = false;
@@ -939,14 +1034,15 @@ class WikiRevision {
__METHOD__
);
if( $prior ) {
- // FIXME: this could fail slightly for multiple matches :P
+ // @todo FIXME: This could fail slightly for multiple matches :P
wfDebug( __METHOD__ . ": skipping existing revision for [[" .
$this->title->getPrefixedText() . "]], timestamp " . $this->timestamp . "\n" );
return false;
}
+ $oldcountable = $article->isCountable();
}
- # FIXME: Use original rev_id optionally (better for backups)
+ # @todo FIXME: Use original rev_id optionally (better for backups)
# Insert the row
$revision = new Revision( array(
'page' => $pageId,
@@ -957,47 +1053,27 @@ class WikiRevision {
'timestamp' => $this->timestamp,
'minor_edit' => $this->minor,
) );
- $revId = $revision->insertOn( $dbw );
+ $revision->insertOn( $dbw );
$changed = $article->updateIfNewerOn( $dbw, $revision );
-
- # To be on the safe side...
- $tempTitle = $GLOBALS['wgTitle'];
- $GLOBALS['wgTitle'] = $this->title;
- if( $created ) {
- wfDebug( __METHOD__ . ": running onArticleCreate\n" );
- Article::onArticleCreate( $this->title );
-
- wfDebug( __METHOD__ . ": running create updates\n" );
- $article->createUpdates( $revision );
-
- } elseif( $changed ) {
- wfDebug( __METHOD__ . ": running onArticleEdit\n" );
- Article::onArticleEdit( $this->title );
-
- wfDebug( __METHOD__ . ": running edit updates\n" );
- $article->editUpdates(
- $this->getText(),
- $this->getComment(),
- $this->minor,
- $this->timestamp,
- $revId );
+ if ( $changed !== false ) {
+ wfDebug( __METHOD__ . ": running updates\n" );
+ $article->doEditUpdates( $revision, $userObj, array( 'created' => $created, 'oldcountable' => $oldcountable ) );
}
- $GLOBALS['wgTitle'] = $tempTitle;
return true;
}
-
+
function importLogItem() {
$dbw = wfGetDB( DB_MASTER );
- # FIXME: this will not record autoblocks
+ # @todo FIXME: This will not record autoblocks
if( !$this->getTitle() ) {
- wfDebug( __METHOD__ . ": skipping invalid {$this->type}/{$this->action} log time, timestamp " .
+ wfDebug( __METHOD__ . ": skipping invalid {$this->type}/{$this->action} log time, timestamp " .
$this->timestamp . "\n" );
return;
}
# Check if it exists already
- // FIXME: use original log ID (better for backups)
+ // @todo FIXME: Use original log ID (better for backups)
$prior = $dbw->selectField( 'logging', '1',
array( 'log_type' => $this->getType(),
'log_action' => $this->getAction(),
@@ -1009,9 +1085,9 @@ class WikiRevision {
'log_params' => $this->params ),
__METHOD__
);
- // FIXME: this could fail slightly for multiple matches :P
+ // @todo FIXME: This could fail slightly for multiple matches :P
if( $prior ) {
- wfDebug( __METHOD__ . ": skipping existing item for Log:{$this->type}/{$this->action}, timestamp " .
+ wfDebug( __METHOD__ . ": skipping existing item for Log:{$this->type}/{$this->action}, timestamp " .
$this->timestamp . "\n" );
return false;
}
@@ -1032,60 +1108,66 @@ class WikiRevision {
}
function importUpload() {
- wfDebug( __METHOD__ . ": STUB\n" );
-
- /**
- // from file revert...
- $source = $this->file->getArchiveVirtualUrl( $this->oldimage );
- $comment = $wgRequest->getText( 'wpComment' );
- // TODO: Preserve file properties from database instead of reloading from file
- $status = $this->file->upload( $source, $comment, $comment );
- if( $status->isGood() ) {
- */
-
- /**
- // from file upload...
- $this->mLocalFile = wfLocalFile( $nt );
- $this->mDestName = $this->mLocalFile->getName();
- //....
- $status = $this->mLocalFile->upload( $this->mTempPath, $this->mComment, $pageText,
- File::DELETE_SOURCE, $this->mFileProps );
- if ( !$status->isGood() ) {
- $resultDetails = array( 'internal' => $status->getWikiText() );
- */
-
- // @todo Fixme: upload() uses $wgUser, which is wrong here
- // it may also create a page without our desire, also wrong potentially.
- // and, it will record a *current* upload, but we might want an archive version here
-
- $file = wfLocalFile( $this->getTitle() );
+ # Construct a file
+ $archiveName = $this->getArchiveName();
+ if ( $archiveName ) {
+ wfDebug( __METHOD__ . "Importing archived file as $archiveName\n" );
+ $file = OldLocalFile::newFromArchiveName( $this->getTitle(),
+ RepoGroup::singleton()->getLocalRepo(), $archiveName );
+ } else {
+ $file = wfLocalFile( $this->getTitle() );
+ wfDebug( __METHOD__ . 'Importing new file as ' . $file->getName() . "\n" );
+ if ( $file->exists() && $file->getTimestamp() > $this->getTimestamp() ) {
+ $archiveName = $file->getTimestamp() . '!' . $file->getName();
+ $file = OldLocalFile::newFromArchiveName( $this->getTitle(),
+ RepoGroup::singleton()->getLocalRepo(), $archiveName );
+ wfDebug( __METHOD__ . "File already exists; importing as $archiveName\n" );
+ }
+ }
if( !$file ) {
- wfDebug( "IMPORT: Bad file. :(\n" );
+ wfDebug( __METHOD__ . ': Bad file for ' . $this->getTitle() . "\n" );
return false;
}
-
- $source = $this->downloadSource();
+
+ # Get the file source or download if necessary
+ $source = $this->getFileSrc();
+ $flags = $this->isTempSrc() ? File::DELETE_SOURCE : 0;
+ if ( !$source ) {
+ $source = $this->downloadSource();
+ $flags |= File::DELETE_SOURCE;
+ }
if( !$source ) {
- wfDebug( "IMPORT: Could not fetch remote file. :(\n" );
+ wfDebug( __METHOD__ . ": Could not fetch remote file.\n" );
+ return false;
+ }
+ $sha1 = $this->getSha1();
+ if ( $sha1 && ( $sha1 !== sha1_file( $source ) ) ) {
+ if ( $flags & File::DELETE_SOURCE ) {
+ # Broken file; delete it if it is a temporary file
+ unlink( $source );
+ }
+ wfDebug( __METHOD__ . ": Corrupt file $source.\n" );
return false;
}
- $status = $file->upload( $source,
- $this->getComment(),
- $this->getComment(), // Initial page, if none present...
- File::DELETE_SOURCE,
- false, // props...
- $this->getTimestamp() );
-
- if( $status->isGood() ) {
- // yay?
- wfDebug( "IMPORT: is ok?\n" );
+ $user = User::newFromName( $this->user_text );
+
+ # Do the actual upload
+ if ( $archiveName ) {
+ $status = $file->uploadOld( $source, $archiveName,
+ $this->getTimestamp(), $this->getComment(), $user, $flags );
+ } else {
+ $status = $file->upload( $source, $this->getComment(), $this->getComment(),
+ $flags, false, $this->getTimestamp(), $user );
+ }
+
+ if ( $status->isGood() ) {
+ wfDebug( __METHOD__ . ": Succesful\n" );
return true;
+ } else {
+ wfDebug( __METHOD__ . ': failed: ' . $status->getXml() . "\n" );
+ return false;
}
-
- wfDebug( "IMPORT: is bad? " . $status->getXml() . "\n" );
- return false;
-
}
function downloadSource() {
@@ -1101,7 +1183,7 @@ class WikiRevision {
return false;
}
- // @todo Fixme!
+ // @todo FIXME!
$src = $this->getSrc();
$data = Http::get( $src );
if( !$data ) {
@@ -1161,7 +1243,9 @@ class ImportStreamSource {
}
static function newFromFile( $filename ) {
- $file = @fopen( $filename, 'rt' );
+ wfSuppressWarnings();
+ $file = fopen( $filename, 'rt' );
+ wfRestoreWarnings();
if( !$file ) {
return Status::newFatal( "importcantopen" );
}
@@ -1202,7 +1286,7 @@ class ImportStreamSource {
# quicker and sorts out user-agent problems which might
# otherwise prevent importing from large sites, such
# as the Wikimedia cluster, etc.
- $data = Http::request( $method, $url );
+ $data = Http::request( $method, $url, array( 'followRedirects' => true ) );
if( $data !== false ) {
$file = tmpfile();
fwrite( $file, $data );
diff --git a/includes/Init.php b/includes/Init.php
new file mode 100644
index 00000000..de867282
--- /dev/null
+++ b/includes/Init.php
@@ -0,0 +1,184 @@
+<?php
+
+/**
+ * Some functions that are useful during startup.
+ */
+class MWInit {
+ static $compilerVersion;
+
+ /**
+ * Get the version of HipHop used to compile, or false if MediaWiki was not
+ * compiled. This works by having our build script insert a special function
+ * into the compiled code.
+ */
+ static function getCompilerVersion() {
+ if ( self::$compilerVersion === null ) {
+ if ( self::functionExists( 'wfHipHopCompilerVersion' ) ) {
+ self::$compilerVersion = wfHipHopCompilerVersion();
+ } else {
+ self::$compilerVersion = false;
+ }
+ }
+ return self::$compilerVersion;
+ }
+
+ /**
+ * Returns true if we are running under HipHop, whether in compiled or
+ * interpreted mode.
+ *
+ * @return bool
+ */
+ static function isHipHop() {
+ return function_exists( 'hphp_thread_set_warmup_enabled' );
+ }
+
+ /**
+ * Get a fully-qualified path for a source file relative to $IP. Including
+ * such a path under HipHop will force the file to be interpreted. This is
+ * useful for configuration files.
+ *
+ * @param $file string
+ *
+ * @return string
+ */
+ static function interpretedPath( $file ) {
+ global $IP;
+ return "$IP/$file";
+ }
+
+ /**
+ * If we are running code compiled by HipHop, this will pass through the
+ * input path, assumed to be relative to $IP. If the code is interpreted,
+ * it will converted to a fully qualified path. It is necessary to use a
+ * path which is relative to $IP in order to make HipHop use its compiled
+ * code.
+ *
+ * @param $file string
+ *
+ * @return string
+ */
+ static function compiledPath( $file ) {
+ global $IP;
+
+ if ( defined( 'MW_COMPILED' ) ) {
+ return "phase3/$file";
+ } else {
+ return "$IP/$file";
+ }
+ }
+
+ /**
+ * The equivalent of MWInit::interpretedPath() but for files relative to the
+ * extensions directory.
+ *
+ * @param $file string
+ * @return string
+ */
+ static function extInterpretedPath( $file ) {
+ return self::getExtensionsDirectory() . '/' . $file;
+ }
+
+ /**
+ * The equivalent of MWInit::compiledPath() but for files relative to the
+ * extensions directory. Any files referenced in this way must be registered
+ * for compilation by including them in $wgCompiledFiles.
+ * @param $file string
+ * @return string
+ */
+ static function extCompiledPath( $file ) {
+ if ( defined( 'MW_COMPILED' ) ) {
+ return "extensions/$file";
+ } else {
+ return self::getExtensionsDirectory() . '/' . $file;
+ }
+ }
+
+ /**
+ * Register an extension setup file and return its path for compiled
+ * inclusion. Use this function in LocalSettings.php to add extensions
+ * to the build. For example:
+ *
+ * require( MWInit::extSetupPath( 'ParserFunctions/ParserFunctions.php' ) );
+ *
+ * @param $extRel string The path relative to the extensions directory, as defined by
+ * $wgExtensionsDirectory.
+ *
+ * @return string
+ */
+ static function extSetupPath( $extRel ) {
+ $baseRel = "extensions/$extRel";
+ if ( defined( 'MW_COMPILED' ) ) {
+ return $baseRel;
+ } else {
+ global $wgCompiledFiles;
+ $wgCompiledFiles[] = $baseRel;
+ return self::getExtensionsDirectory() . '/' . $extRel;
+ }
+ }
+
+ /**
+ * @return bool|string
+ */
+ static function getExtensionsDirectory() {
+ global $wgExtensionsDirectory, $IP;
+ if ( $wgExtensionsDirectory === false ) {
+ $wgExtensionsDirectory = "$IP/../extensions";
+ }
+ return $wgExtensionsDirectory;
+ }
+
+ /**
+ * Determine whether a class exists, using a method which works under HipHop.
+ *
+ * Note that it's not possible to implement this with any variant of
+ * class_exists(), because class_exists() returns false for classes which
+ * are compiled in.
+ *
+ * Calling class_exists() on a literal string causes the class to be made
+ * "volatile", which means (as of March 2011) that the class is broken and
+ * can't be used at all. So don't do that. See
+ * https://github.com/facebook/hiphop-php/issues/314
+ *
+ * @param $class string
+ *
+ * @return bool
+ */
+ static function classExists( $class ) {
+ try {
+ $r = new ReflectionClass( $class );
+ } catch( ReflectionException $r ) {
+ $r = false;
+ }
+ return $r !== false;
+ }
+
+ /**
+ * Determine whether a function exists, using a method which works under
+ * HipHop.
+ *
+ * @param $function string
+ *
+ * @return bool
+ */
+ static function functionExists( $function ) {
+ try {
+ $r = new ReflectionFunction( $function );
+ } catch( ReflectionException $r ) {
+ $r = false;
+ }
+ return $r !== false;
+ }
+
+ /**
+ * Call a static method of a class with variable arguments without causing
+ * it to become volatile.
+ * @param $className string
+ * @param $methodName string
+ * @param $args array
+ *
+ */
+ static function callStaticMethod( $className, $methodName, $args ) {
+ $r = new ReflectionMethod( $className, $methodName );
+ return $r->invokeArgs( null, $args );
+ }
+}
diff --git a/includes/Licenses.php b/includes/Licenses.php
index 45944c73..09fa8db3 100644
--- a/includes/Licenses.php
+++ b/includes/Licenses.php
@@ -28,6 +28,8 @@ class Licenses extends HTMLFormField {
/**
* Constructor
+ *
+ * @param $params array
*/
public function __construct( $params ) {
parent::__construct( $params );
@@ -38,7 +40,7 @@ class Licenses extends HTMLFormField {
$this->makeLicenses();
}
- /**#@+
+ /**
* @private
*/
protected function makeLicenses() {
@@ -46,9 +48,9 @@ class Licenses extends HTMLFormField {
$lines = explode( "\n", $this->msg );
foreach ( $lines as $line ) {
- if ( strpos( $line, '*' ) !== 0 )
+ if ( strpos( $line, '*' ) !== 0 ) {
continue;
- else {
+ } else {
list( $level, $line ) = $this->trimStars( $line );
if ( strpos( $line, '|' ) !== false ) {
@@ -60,7 +62,7 @@ class Licenses extends HTMLFormField {
}
if ( $level == count( $levels ) ) {
$levels[$level - 1] = $line;
- } else if ( $level > count( $levels ) ) {
+ } elseif ( $level > count( $levels ) ) {
$levels[] = $line;
}
}
@@ -68,19 +70,34 @@ class Licenses extends HTMLFormField {
}
}
+ /**
+ * @param $str
+ * @return array
+ */
protected function trimStars( $str ) {
$numStars = strspn( $str, '*' );
return array( $numStars, ltrim( substr( $str, $numStars ), ' ' ) );
}
+ /**
+ * @param $list
+ * @param $path
+ * @param $item
+ */
protected function stackItem( &$list, $path, $item ) {
$position =& $list;
- if ( $path )
- foreach( $path as $key )
+ if ( $path ) {
+ foreach( $path as $key ) {
$position =& $position[$key];
+ }
+ }
$position[] = $item;
}
+ /**
+ * @param $tagset
+ * @param $depth int
+ */
protected function makeHtml( $tagset, $depth = 0 ) {
foreach ( $tagset as $key => $val )
if ( is_array( $val ) ) {
@@ -102,6 +119,13 @@ class Licenses extends HTMLFormField {
}
}
+ /**
+ * @param $text
+ * @param $value
+ * @param $attribs null
+ * @param $depth int
+ * @return string
+ */
protected function outputOption( $text, $value, $attribs = null, $depth = 0 ) {
$attribs['value'] = $value;
if ( $value === $this->selected )
@@ -111,8 +135,8 @@ class Licenses extends HTMLFormField {
}
protected function msg( $str ) {
- $out = wfMsg( $str );
- return wfEmptyMsg( $str, $out ) ? $str : $out;
+ $msg = wfMessage( $str );
+ return $msg->exists() ? $msg->text() : $str;
}
/**#@-*/
@@ -122,11 +146,15 @@ class Licenses extends HTMLFormField {
*
* @return array
*/
- public function getLicenses() { return $this->licenses; }
+ public function getLicenses() {
+ return $this->licenses;
+ }
/**
* Accessor for $this->html
*
+ * @param $value bool
+ *
* @return string
*/
public function getInputHTML( $value ) {
@@ -140,8 +168,9 @@ class Licenses extends HTMLFormField {
'name' => $this->mName,
'id' => $this->mID
);
- if ( !empty( $this->mParams['disabled'] ) )
+ if ( !empty( $this->mParams['disabled'] ) ) {
$attibs['disabled'] = 'disabled';
+ }
return Html::rawElement( 'select', $attribs, $this->html );
}
diff --git a/includes/LinkFilter.php b/includes/LinkFilter.php
index 53841df1..af7680fb 100644
--- a/includes/LinkFilter.php
+++ b/includes/LinkFilter.php
@@ -42,42 +42,6 @@ class LinkFilter {
}
/**
- * Make a string to go after an SQL LIKE, which will match the specified
- * string. There are several kinds of filter entry:
- * *.domain.com - Produces http://com.domain.%, matches domain.com
- * and www.domain.com
- * domain.com - Produces http://com.domain./%, matches domain.com
- * or domain.com/ but not www.domain.com
- * *.domain.com/x - Produces http://com.domain.%/x%, matches
- * www.domain.com/xy
- * domain.com/x - Produces http://com.domain./x%, matches
- * domain.com/xy but not www.domain.com/xy
- *
- * Asterisks in any other location are considered invalid.
- *
- * @param $filterEntry String: domainparts
- * @param $prot String: protocol
- * @return String
- * @deprecated Use makeLikeArray() and pass result to Database::buildLike() instead
- */
- public static function makeLike( $filterEntry , $prot = 'http://' ) {
- wfDeprecated( __METHOD__ );
-
- $like = self::makeLikeArray( $filterEntry , $prot );
- if ( !$like ) {
- return false;
- }
- $dbw = wfGetDB( DB_MASTER );
- $s = $dbw->buildLike( $like );
- $m = false;
- if ( preg_match( "/^ *LIKE '(.*)' *$/", $s, $m ) ) {
- return $m[1];
- } else {
- throw new MWException( __METHOD__.': this DBMS is not supported by this function.' );
- }
- }
-
- /**
* Make an array to be used for calls to DatabaseBase::buildLike(), which
* will match the specified string. There are several kinds of filter entry:
* *.domain.com - Produces http://com.domain.%, matches domain.com
diff --git a/includes/Linker.php b/includes/Linker.php
index e2193f97..e1e554c3 100644
--- a/includes/Linker.php
+++ b/includes/Linker.php
@@ -1,10 +1,8 @@
<?php
/**
- * Split off some of the internal bits from Skin.php. These functions are used
+ * Some internal bits split of from Skin.php. These functions are used
* for primarily page content: links, embedded images, table of contents. Links
- * are also used in the skin. For the moment, Skin is a descendent class of
- * Linker. In the future, it should probably be further split so that every
- * other bit of the wiki doesn't have to go loading up Skin to get at it.
+ * are also used in the skin.
*
* @ingroup Skins
*/
@@ -15,17 +13,17 @@ class Linker {
*/
const TOOL_LINKS_NOBLOCK = 1;
- function __construct() {}
-
/**
* Get the appropriate HTML attributes to add to the "a" element of an ex-
* ternal link, as created by [wikisyntax].
*
* @param $class String: the contents of the class attribute; if an empty
* string is passed, which is the default value, defaults to 'external'.
+ * @deprecated since 1.18 Just pass the external class directly to something using Html::expandAttributes
*/
- function getExternalLinkAttributes( $class = 'external' ) {
- return $this->getLinkAttributesInternal( '', $class );
+ static function getExternalLinkAttributes( $class = 'external' ) {
+ wfDeprecated( __METHOD__ );
+ return self::getLinkAttributesInternal( '', $class );
}
/**
@@ -38,16 +36,16 @@ class Linker {
* @param $class String: the contents of the class attribute; if an empty
* string is passed, which is the default value, defaults to 'external'.
*/
- function getInterwikiLinkAttributes( $title, $unused = null, $class = 'external' ) {
+ static function getInterwikiLinkAttributes( $title, $unused = null, $class = 'external' ) {
global $wgContLang;
- # FIXME: We have a whole bunch of handling here that doesn't happen in
+ # @todo FIXME: We have a whole bunch of handling here that doesn't happen in
# getExternalLinkAttributes, why?
$title = urldecode( $title );
$title = $wgContLang->checkTitleEncoding( $title );
$title = preg_replace( '/[\\x00-\\x1f]/', ' ', $title );
- return $this->getLinkAttributesInternal( $title, $class );
+ return self::getLinkAttributesInternal( $title, $class );
}
/**
@@ -59,33 +57,38 @@ class Linker {
* @param $unused String: unused
* @param $class String: the contents of the class attribute, default none
*/
- function getInternalLinkAttributes( $title, $unused = null, $class = '' ) {
+ static function getInternalLinkAttributes( $title, $unused = null, $class = '' ) {
$title = urldecode( $title );
$title = str_replace( '_', ' ', $title );
- return $this->getLinkAttributesInternal( $title, $class );
+ return self::getLinkAttributesInternal( $title, $class );
}
/**
* Get the appropriate HTML attributes to add to the "a" element of an in-
* ternal link, given the Title object for the page we want to link to.
*
- * @param $nt The Title object
+ * @param $nt Title
* @param $unused String: unused
* @param $class String: the contents of the class attribute, default none
* @param $title Mixed: optional (unescaped) string to use in the title
* attribute; if false, default to the name of the page we're linking to
*/
- function getInternalLinkAttributesObj( $nt, $unused = null, $class = '', $title = false ) {
+ static function getInternalLinkAttributesObj( $nt, $unused = null, $class = '', $title = false ) {
if ( $title === false ) {
$title = $nt->getPrefixedText();
}
- return $this->getLinkAttributesInternal( $title, $class );
+ return self::getLinkAttributesInternal( $title, $class );
}
/**
* Common code for getLinkAttributesX functions
+ *
+ * @param $title string
+ * @param $class string
+ *
+ * @return string
*/
- private function getLinkAttributesInternal( $title, $class ) {
+ private static function getLinkAttributesInternal( $title, $class ) {
$title = htmlspecialchars( $title );
$class = htmlspecialchars( $class );
$r = '';
@@ -105,7 +108,7 @@ class Linker {
* @param $threshold Integer: user defined threshold
* @return String: CSS class
*/
- function getLinkColour( $t, $threshold ) {
+ static function getLinkColour( $t, $threshold ) {
$colour = '';
if ( $t->isRedirect() ) {
# Page is a redirect
@@ -145,7 +148,7 @@ class Linker {
* @param $query array The query string to append to the URL
* you're linking to, in key => value array form. Query keys and values
* will be URL-encoded.
- * @param $options mixed String or array of strings:
+ * @param $options string|array String or array of strings:
* 'known': Page is known to exist, so don't check if it does.
* 'broken': Page is known not to exist, so don't check if it does.
* 'noclasses': Don't add any classes automatically (includes "new",
@@ -156,23 +159,27 @@ class Linker {
* Has compatibility issues on some setups, so avoid wherever possible.
* @return string HTML <a> attribute
*/
- public function link( $target, $text = null, $customAttribs = array(), $query = array(), $options = array() ) {
+ public static function link(
+ $target, $html = null, $customAttribs = array(), $query = array(), $options = array()
+ ) {
wfProfileIn( __METHOD__ );
if ( !$target instanceof Title ) {
wfProfileOut( __METHOD__ );
- return "<!-- ERROR -->$text";
+ return "<!-- ERROR -->$html";
}
$options = (array)$options;
+ $dummy = new DummyLinker; // dummy linker instance for bc on the hooks
+
$ret = null;
- if ( !wfRunHooks( 'LinkBegin', array( $this, $target, &$text,
+ if ( !wfRunHooks( 'LinkBegin', array( $dummy, $target, &$html,
&$customAttribs, &$query, &$options, &$ret ) ) ) {
wfProfileOut( __METHOD__ );
return $ret;
}
# Normalize the Title if it's a special page
- $target = $this->normaliseSpecialPage( $target );
+ $target = self::normaliseSpecialPage( $target );
# If we don't know whether the page exists, let's find out.
wfProfileIn( __METHOD__ . '-checkPageExistence' );
@@ -192,22 +199,22 @@ class Linker {
}
# Note: we want the href attribute first, for prettiness.
- $attribs = array( 'href' => $this->linkUrl( $target, $query, $options ) );
+ $attribs = array( 'href' => self::linkUrl( $target, $query, $options ) );
if ( in_array( 'forcearticlepath', $options ) && $oldquery ) {
$attribs['href'] = wfAppendQuery( $attribs['href'], wfArrayToCgi( $oldquery ) );
}
$attribs = array_merge(
$attribs,
- $this->linkAttribs( $target, $customAttribs, $options )
+ self::linkAttribs( $target, $customAttribs, $options )
);
- if ( is_null( $text ) ) {
- $text = $this->linkText( $target );
+ if ( is_null( $html ) ) {
+ $html = self::linkText( $target );
}
$ret = null;
- if ( wfRunHooks( 'LinkEnd', array( $this, $target, $options, &$text, &$attribs, &$ret ) ) ) {
- $ret = Html::rawElement( 'a', $attribs, $text );
+ if ( wfRunHooks( 'LinkEnd', array( $dummy, $target, $options, &$html, &$attribs, &$ret ) ) ) {
+ $ret = Html::rawElement( 'a', $attribs, $html );
}
wfProfileOut( __METHOD__ );
@@ -217,18 +224,23 @@ class Linker {
/**
* Identical to link(), except $options defaults to 'known'.
*/
- public function linkKnown( $target, $text = null, $customAttribs = array(), $query = array(), $options = array( 'known', 'noclasses' ) ) {
- return $this->link( $target, $text, $customAttribs, $query, $options );
+ public static function linkKnown(
+ $target, $text = null, $customAttribs = array(),
+ $query = array(), $options = array( 'known', 'noclasses' ) )
+ {
+ return self::link( $target, $text, $customAttribs, $query, $options );
}
/**
* Returns the Url used to link to a Title
+ *
+ * @param $target Title
*/
- private function linkUrl( $target, $query, $options ) {
+ private static function linkUrl( $target, $query, $options ) {
wfProfileIn( __METHOD__ );
# We don't want to include fragments for broken links, because they
# generally make no sense.
- if ( in_array( 'broken', $options ) and $target->mFragment !== '' ) {
+ if ( in_array( 'broken', $options ) && $target->mFragment !== '' ) {
$target = clone $target;
$target->mFragment = '';
}
@@ -236,8 +248,8 @@ class Linker {
# If it's a broken link, add the appropriate query pieces, unless
# there's already an action specified, or unless 'edit' makes no sense
# (i.e., for a nonexistent special page).
- if ( in_array( 'broken', $options ) and empty( $query['action'] )
- and $target->getNamespace() != NS_SPECIAL ) {
+ if ( in_array( 'broken', $options ) && empty( $query['action'] )
+ && $target->getNamespace() != NS_SPECIAL ) {
$query['action'] = 'edit';
$query['redlink'] = '1';
}
@@ -248,8 +260,14 @@ class Linker {
/**
* Returns the array of attributes used when linking to the Title $target
+ *
+ * @param $target Title
+ * @param $attribs
+ * @param $options
+ *
+ * @return array
*/
- private function linkAttribs( $target, $attribs, $options ) {
+ private static function linkAttribs( $target, $attribs, $options ) {
wfProfileIn( __METHOD__ );
global $wgUser;
$defaults = array();
@@ -268,7 +286,7 @@ class Linker {
}
if ( !in_array( 'broken', $options ) ) { # Avoid useless calls to LinkCache (see r50387)
- $colour = $this->getLinkColour( $target, $wgUser->getStubThreshold() );
+ $colour = self::getLinkColour( $target, $wgUser->getStubThreshold() );
if ( $colour !== '' ) {
$classes[] = $colour; # mw-redirect or stub
}
@@ -306,8 +324,12 @@ class Linker {
/**
* Default text of the links to the Title $target
+ *
+ * @param $target Title
+ *
+ * @return string
*/
- private function linkText( $target ) {
+ private static function linkText( $target ) {
# We might be passed a non-Title by make*LinkObj(). Fail gracefully.
if ( !$target instanceof Title ) {
return '';
@@ -315,7 +337,7 @@ class Linker {
# If the target is just a fragment, with no title, we return the frag-
# ment text. Otherwise, we return the title text itself.
- if ( $target->getPrefixedText() === '' and $target->getFragment() !== '' ) {
+ if ( $target->getPrefixedText() === '' && $target->getFragment() !== '' ) {
return htmlspecialchars( $target->getFragment() );
}
return htmlspecialchars( $target->getPrefixedText() );
@@ -332,34 +354,42 @@ class Linker {
* @param $trail String
* @param $prefix String
* @return string HTML of link
- * @deprecated
+ * @deprecated since 1.17
*/
- function makeSizeLinkObj( $size, $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
+ static function makeSizeLinkObj( $size, $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
global $wgUser;
wfDeprecated( __METHOD__ );
$threshold = $wgUser->getStubThreshold();
$colour = ( $size < $threshold ) ? 'stub' : '';
- // FIXME: replace deprecated makeColouredLinkObj by link()
- return $this->makeColouredLinkObj( $nt, $colour, $text, $query, $trail, $prefix );
+ // @todo FIXME: Replace deprecated makeColouredLinkObj by link()
+ return self::makeColouredLinkObj( $nt, $colour, $text, $query, $trail, $prefix );
}
/**
* Make appropriate markup for a link to the current article. This is currently rendered
- * as the bold link text. The calling sequence is the same as the other make*LinkObj functions,
+ * as the bold link text. The calling sequence is the same as the other make*LinkObj static functions,
* despite $query not being used.
+ *
+ * @param $nt Title
+ *
+ * @return string
*/
- function makeSelfLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
+ static function makeSelfLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
if ( $text == '' ) {
$text = htmlspecialchars( $nt->getPrefixedText() );
}
- list( $inside, $trail ) = Linker::splitTrail( $trail );
+ list( $inside, $trail ) = self::splitTrail( $trail );
return "<strong class=\"selflink\">{$prefix}{$text}{$inside}</strong>{$trail}";
}
- function normaliseSpecialPage( Title $title ) {
+ /**
+ * @param $title Title
+ * @return Title
+ */
+ static function normaliseSpecialPage( Title $title ) {
if ( $title->getNamespace() == NS_SPECIAL ) {
- list( $name, $subpage ) = SpecialPage::resolveAliasWithSubpage( $title->getDBkey() );
+ list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
if ( !$name ) {
return $title;
}
@@ -374,8 +404,12 @@ class Linker {
/**
* Returns the filename part of an url.
* Used as alternative text for external images.
+ *
+ * @param $url string
+ *
+ * @return string
*/
- function fnamePart( $url ) {
+ static function fnamePart( $url ) {
$basename = strrchr( $url, '/' );
if ( false === $basename ) {
$basename = $url;
@@ -388,10 +422,15 @@ class Linker {
/**
* Return the code for images which were added via external links,
* via Parser::maybeMakeExternalImage().
+ *
+ * @param $url
+ * @param $alt
+ *
+ * @return string
*/
- function makeExternalImage( $url, $alt = '' ) {
+ static function makeExternalImage( $url, $alt = '' ) {
if ( $alt == '' ) {
- $alt = $this->fnamePart( $url );
+ $alt = self::fnamePart( $url );
}
$img = '';
$success = wfRunHooks( 'LinkerMakeExternalImage', array( &$url, &$alt, &$img ) );
@@ -438,16 +477,19 @@ class Linker {
* @param $widthOption: Used by the parser to remember the user preference thumbnailsize
* @return String: HTML for an image, with links, wrappers, etc.
*/
- function makeImageLink2( Title $title, $file, $frameParams = array(), $handlerParams = array(), $time = false, $query = "", $widthOption = null ) {
+ static function makeImageLink2( Title $title, $file, $frameParams = array(),
+ $handlerParams = array(), $time = false, $query = "", $widthOption = null )
+ {
$res = null;
- if ( !wfRunHooks( 'ImageBeforeProduceHTML', array( &$this, &$title,
- &$file, &$frameParams, &$handlerParams, &$time, &$res ) ) ) {
+ $dummy = new DummyLinker;
+ if ( !wfRunHooks( 'ImageBeforeProduceHTML', array( &$dummy, &$title,
+ &$file, &$frameParams, &$handlerParams, &$time, &$res ) ) ) {
return $res;
}
if ( $file && !$file->allowInlineDisplay() ) {
wfDebug( __METHOD__ . ': ' . $title->getPrefixedDBkey() . " does not allow inline display\n" );
- return $this->link( $title );
+ return self::link( $title );
}
// Shortcuts
@@ -456,9 +498,15 @@ class Linker {
// Clean up parameters
$page = isset( $hp['page'] ) ? $hp['page'] : false;
- if ( !isset( $fp['align'] ) ) $fp['align'] = '';
- if ( !isset( $fp['alt'] ) ) $fp['alt'] = '';
- if ( !isset( $fp['title'] ) ) $fp['title'] = '';
+ if ( !isset( $fp['align'] ) ) {
+ $fp['align'] = '';
+ }
+ if ( !isset( $fp['alt'] ) ) {
+ $fp['alt'] = '';
+ }
+ if ( !isset( $fp['title'] ) ) {
+ $fp['title'] = '';
+ }
$prefix = $postfix = '';
@@ -468,7 +516,14 @@ class Linker {
$fp['align'] = 'none';
}
if ( $file && !isset( $hp['width'] ) ) {
- $hp['width'] = $file->getWidth( $page );
+ if ( isset( $hp['height'] ) && $file->isVectorized() ) {
+ // If its a vector image, and user only specifies height
+ // we don't want it to be limited by its "normal" width.
+ global $wgSVGMaxSize;
+ $hp['width'] = $wgSVGMaxSize;
+ } else {
+ $hp['width'] = $file->getWidth( $page );
+ }
if ( isset( $fp['thumbnail'] ) || isset( $fp['framed'] ) || isset( $fp['frameless'] ) || !$hp['width'] ) {
global $wgThumbLimits, $wgThumbUpright;
@@ -506,7 +561,7 @@ class Linker {
if ( $fp['align'] == '' ) {
$fp['align'] = $wgContLang->alignEnd();
}
- return $prefix . $this->makeThumbLink2( $title, $file, $fp, $hp, $time, $query ) . $postfix;
+ return $prefix . self::makeThumbLink2( $title, $file, $fp, $hp, $time, $query ) . $postfix;
}
if ( $file && isset( $fp['frameless'] ) ) {
@@ -526,14 +581,14 @@ class Linker {
}
if ( !$thumb ) {
- $s = $this->makeBrokenImageLinkObj( $title, $fp['title'], '', '', '', $time == true );
+ $s = self::makeBrokenImageLinkObj( $title, $fp['title'], '', '', '', $time == true );
} else {
$params = array(
'alt' => $fp['alt'],
'title' => $fp['title'],
'valign' => isset( $fp['valign'] ) ? $fp['valign'] : false ,
'img-class' => isset( $fp['border'] ) ? 'thumbborder' : false );
- $params = $this->getImageLinkMTOParams( $fp, $query ) + $params;
+ $params = self::getImageLinkMTOParams( $fp, $query ) + $params;
$s = $thumb->toHtml( $params );
}
@@ -549,7 +604,7 @@ class Linker {
* @param $frameParams The frame parameters
* @param $query An optional query string to add to description page links
*/
- function getImageLinkMTOParams( $frameParams, $query = '' ) {
+ static function getImageLinkMTOParams( $frameParams, $query = '' ) {
$mtoParams = array();
if ( isset( $frameParams['link-url'] ) && $frameParams['link-url'] !== '' ) {
$mtoParams['custom-url-link'] = $frameParams['link-url'];
@@ -557,7 +612,7 @@ class Linker {
$mtoParams['custom-target-link'] = $frameParams['link-target'];
}
} elseif ( isset( $frameParams['link-title'] ) && $frameParams['link-title'] !== '' ) {
- $mtoParams['custom-title-link'] = $this->normaliseSpecialPage( $frameParams['link-title'] );
+ $mtoParams['custom-title-link'] = self::normaliseSpecialPage( $frameParams['link-title'] );
} elseif ( !empty( $frameParams['no-link'] ) ) {
// No link
} else {
@@ -578,19 +633,36 @@ class Linker {
* @param $framed Boolean
* @param $manualthumb String
*/
- function makeThumbLinkObj( Title $title, $file, $label = '', $alt, $align = 'right', $params = array(), $framed = false , $manualthumb = "" ) {
+ static function makeThumbLinkObj( Title $title, $file, $label = '', $alt,
+ $align = 'right', $params = array(), $framed = false , $manualthumb = "" )
+ {
$frameParams = array(
'alt' => $alt,
'caption' => $label,
'align' => $align
);
- if ( $framed ) $frameParams['framed'] = true;
- if ( $manualthumb ) $frameParams['manualthumb'] = $manualthumb;
- return $this->makeThumbLink2( $title, $file, $frameParams, $params );
+ if ( $framed ) {
+ $frameParams['framed'] = true;
+ }
+ if ( $manualthumb ) {
+ $frameParams['manualthumb'] = $manualthumb;
+ }
+ return self::makeThumbLink2( $title, $file, $frameParams, $params );
}
- function makeThumbLink2( Title $title, $file, $frameParams = array(), $handlerParams = array(), $time = false, $query = "" ) {
- global $wgStylePath;
+ /**
+ * @param $title Title
+ * @param $file File
+ * @param array $frameParams
+ * @param array $handlerParams
+ * @param bool $time
+ * @param string $query
+ * @return mixed
+ */
+ static function makeThumbLink2( Title $title, $file, $frameParams = array(),
+ $handlerParams = array(), $time = false, $query = "" )
+ {
+ global $wgStylePath, $wgContLang;
$exists = $file && $file->exists();
# Shortcuts
@@ -653,7 +725,7 @@ class Linker {
$s = "<div class=\"thumb t{$fp['align']}\"><div class=\"thumbinner\" style=\"width:{$outerWidth}px;\">";
if ( !$exists ) {
- $s .= $this->makeBrokenImageLinkObj( $title, $fp['title'], '', '', '', $time == true );
+ $s .= self::makeBrokenImageLinkObj( $title, $fp['title'], '', '', '', $time == true );
$zoomIcon = '';
} elseif ( !$thumb ) {
$s .= htmlspecialchars( wfMsg( 'thumbnail_error', '' ) );
@@ -663,16 +735,21 @@ class Linker {
'alt' => $fp['alt'],
'title' => $fp['title'],
'img-class' => 'thumbimage' );
- $params = $this->getImageLinkMTOParams( $fp, $query ) + $params;
+ $params = self::getImageLinkMTOParams( $fp, $query ) + $params;
$s .= $thumb->toHtml( $params );
if ( isset( $fp['framed'] ) ) {
$zoomIcon = "";
} else {
- $zoomIcon = '<div class="magnify">' .
- '<a href="' . htmlspecialchars( $url ) . '" class="internal" ' .
- 'title="' . htmlspecialchars( wfMsg( 'thumbnail-more' ) ) . '">' .
- '<img src="' . htmlspecialchars( $wgStylePath ) . '/common/images/magnify-clip.png" ' .
- 'width="15" height="11" alt="" /></a></div>';
+ $zoomIcon = Html::rawElement( 'div', array( 'class' => 'magnify' ),
+ Html::rawElement( 'a', array(
+ 'href' => $url,
+ 'class' => 'internal',
+ 'title' => wfMsg( 'thumbnail-more' ) ),
+ Html::element( 'img', array(
+ 'src' => $wgStylePath . '/common/images/magnify-clip' . ( $wgContLang->isRTL() ? '-rtl' : '' ) . '.png',
+ 'width' => 15,
+ 'height' => 11,
+ 'alt' => "" ) ) ) );
}
}
$s .= ' <div class="thumbcaption">' . $zoomIcon . $fp['caption'] . "</div></div></div>";
@@ -683,44 +760,42 @@ class Linker {
* Make a "broken" link to an image
*
* @param $title Title object
- * @param $text String: link label
+ * @param $text String: link label in unescaped text form
* @param $query String: query string
- * @param $trail String: link trail
- * @param $prefix String: link prefix
+ * @param $trail String: link trail (HTML fragment)
+ * @param $prefix String: link prefix (HTML fragment)
* @param $time Boolean: a file of a certain timestamp was requested
* @return String
*/
- public function makeBrokenImageLinkObj( $title, $text = '', $query = '', $trail = '', $prefix = '', $time = false ) {
+ public static function makeBrokenImageLinkObj( $title, $text = '', $query = '', $trail = '', $prefix = '', $time = false ) {
global $wgEnableUploads, $wgUploadMissingFileUrl;
- if ( $title instanceof Title ) {
- wfProfileIn( __METHOD__ );
- $currentExists = $time ? ( wfFindFile( $title ) != false ) : false;
-
- list( $inside, $trail ) = self::splitTrail( $trail );
- if ( $text == '' )
- $text = htmlspecialchars( $title->getPrefixedText() );
-
- if ( ( $wgUploadMissingFileUrl || $wgEnableUploads ) && !$currentExists ) {
- $redir = RepoGroup::singleton()->getLocalRepo()->checkRedirect( $title );
+ if ( ! $title instanceof Title ) {
+ return "<!-- ERROR -->{$prefix}{$text}{$trail}";
+ }
+ wfProfileIn( __METHOD__ );
+ $currentExists = $time ? ( wfFindFile( $title ) != false ) : false;
- if ( $redir ) {
- wfProfileOut( __METHOD__ );
- return $this->linkKnown( $title, "$prefix$text$inside", array(), $query ) . $trail;
- }
+ list( $inside, $trail ) = self::splitTrail( $trail );
+ if ( $text == '' )
+ $text = htmlspecialchars( $title->getPrefixedText() );
- $href = $this->getUploadUrl( $title, $query );
+ if ( ( $wgUploadMissingFileUrl || $wgEnableUploads ) && !$currentExists ) {
+ $redir = RepoGroup::singleton()->getLocalRepo()->checkRedirect( $title );
+ if ( $redir ) {
wfProfileOut( __METHOD__ );
- return '<a href="' . htmlspecialchars( $href ) . '" class="new" title="' .
- htmlspecialchars( $title->getPrefixedText(), ENT_QUOTES ) . '">' .
- htmlspecialchars( $prefix . $text . $inside, ENT_NOQUOTES ) . '</a>' . $trail;
- } else {
- wfProfileOut( __METHOD__ );
- return $this->linkKnown( $title, "$prefix$text$inside", array(), $query ) . $trail;
+ return self::linkKnown( $title, "$prefix$text$inside", array(), $query ) . $trail;
}
+
+ $href = self::getUploadUrl( $title, $query );
+
+ wfProfileOut( __METHOD__ );
+ return '<a href="' . htmlspecialchars( $href ) . '" class="new" title="' .
+ htmlspecialchars( $title->getPrefixedText(), ENT_QUOTES ) . '">' .
+ "$prefix$text$inside</a>$trail";
} else {
wfProfileOut( __METHOD__ );
- return "<!-- ERROR -->{$prefix}{$text}{$trail}";
+ return self::linkKnown( $title, "$prefix$text$inside", array(), $query ) . $trail;
}
}
@@ -731,7 +806,7 @@ class Linker {
* @param $query String: urlencoded query string to prepend
* @return String: urlencoded URL
*/
- protected function getUploadUrl( $destFile, $query = '' ) {
+ protected static function getUploadUrl( $destFile, $query = '' ) {
global $wgUploadMissingFileUrl;
$q = 'wpDestFile=' . $destFile->getPartialUrl();
if ( $query != '' )
@@ -750,42 +825,54 @@ class Linker {
*
* @param $title Title object.
* @param $text String: pre-sanitized HTML
- * @param $time string: time image was created
+ * @param $time string: MW timestamp of file creation time
+ * @return String: HTML
+ */
+ public static function makeMediaLinkObj( $title, $text = '', $time = false ) {
+ $img = wfFindFile( $title, array( 'time' => $time ) );
+ return self::makeMediaLinkFile( $title, $img, $text );
+ }
+
+ /**
+ * Create a direct link to a given uploaded file.
+ * This will make a broken link if $file is false.
+ *
+ * @param $title Title object.
+ * @param $file File|false mixed File object or false
+ * @param $text String: pre-sanitized HTML
* @return String: HTML
*
* @todo Handle invalid or missing images better.
*/
- public function makeMediaLinkObj( $title, $text = '', $time = false ) {
- if ( is_null( $title ) ) {
- # # # HOTFIX. Instead of breaking, return empty string.
- return $text;
+ public static function makeMediaLinkFile( Title $title, $file, $text = '' ) {
+ if ( $file && $file->exists() ) {
+ $url = $file->getURL();
+ $class = 'internal';
} else {
- $img = wfFindFile( $title, array( 'time' => $time ) );
- if ( $img ) {
- $url = $img->getURL();
- $class = 'internal';
- } else {
- $url = $this->getUploadUrl( $title );
- $class = 'new';
- }
- $alt = htmlspecialchars( $title->getText(), ENT_QUOTES );
- if ( $text == '' ) {
- $text = $alt;
- }
- $u = htmlspecialchars( $url );
- return "<a href=\"{$u}\" class=\"$class\" title=\"{$alt}\">{$text}</a>";
+ $url = self::getUploadUrl( $title );
+ $class = 'new';
+ }
+ $alt = htmlspecialchars( $title->getText(), ENT_QUOTES );
+ if ( $text == '' ) {
+ $text = $alt;
}
+ $u = htmlspecialchars( $url );
+ return "<a href=\"{$u}\" class=\"$class\" title=\"{$alt}\">{$text}</a>";
}
/**
- * Make a link to a special page given its name and, optionally,
+ * Make a link to a special page given its name and, optionally,
* a message key from the link text.
* Usage example: $skin->specialLink( 'recentchanges' )
+ *
+ * @return bool
*/
- function specialLink( $name, $key = '' ) {
- if ( $key == '' ) { $key = strtolower( $name ); }
+ static function specialLink( $name, $key = '' ) {
+ if ( $key == '' ) {
+ $key = strtolower( $name );
+ }
- return $this->linkKnown( SpecialPage::getTitleFor( $name ) , wfMsg( $key ) );
+ return self::linkKnown( SpecialPage::getTitleFor( $name ) , wfMsg( $key ) );
}
/**
@@ -795,38 +882,29 @@ class Linker {
* @param $escape Boolean: do we escape the link text?
* @param $linktype String: type of external link. Gets added to the classes
* @param $attribs Array of extra attributes to <a>
- *
- * @todo FIXME: This is a really crappy implementation. $linktype and
- * 'external' are mashed into the class attrib for the link (which is made
- * into a string). Then, if we've got additional params in $attribs, we
- * add to it. People using this might want to change the classes (or other
- * default link attributes), but passing $attribsText is just messy. Would
- * make a lot more sense to make put the classes into $attribs, let the
- * hook play with them, *then* expand it all at once.
- */
- function makeExternalLink( $url, $text, $escape = true, $linktype = '', $attribs = array() ) {
- if ( isset( $attribs['class'] ) ) {
- # yet another hack :(
- $class = $attribs['class'];
- } else {
- $class = "external $linktype";
+ */
+ static function makeExternalLink( $url, $text, $escape = true, $linktype = '', $attribs = array() ) {
+ $class = "external";
+ if ( isset($linktype) && $linktype ) {
+ $class .= " $linktype";
}
+ if ( isset($attribs['class']) && $attribs['class'] ) {
+ $class .= " {$attribs['class']}";
+ }
+ $attribs['class'] = $class;
- $attribsText = $this->getExternalLinkAttributes( $class );
- $url = htmlspecialchars( $url );
if ( $escape ) {
$text = htmlspecialchars( $text );
}
$link = '';
- $success = wfRunHooks( 'LinkerMakeExternalLink', array( &$url, &$text, &$link, &$attribs, $linktype ) );
+ $success = wfRunHooks( 'LinkerMakeExternalLink',
+ array( &$url, &$text, &$link, &$attribs, $linktype ) );
if ( !$success ) {
wfDebug( "Hook LinkerMakeExternalLink changed the output of link with url {$url} and text {$text} to {$link}\n", true );
return $link;
}
- if ( $attribs ) {
- $attribsText .= Html::expandAttributes( $attribs );
- }
- return '<a href="' . $url . '"' . $attribsText . '>' . $text . '</a>';
+ $attribs['href'] = $url;
+ return Html::rawElement( 'a', $attribs, $text );
}
/**
@@ -836,13 +914,13 @@ class Linker {
* @return String: HTML fragment
* @private
*/
- function userLink( $userId, $userText ) {
+ static function userLink( $userId, $userText ) {
if ( $userId == 0 ) {
$page = SpecialPage::getTitleFor( 'Contributions', $userText );
} else {
$page = Title::makeTitle( NS_USER, $userText );
}
- return $this->link( $page, htmlspecialchars( $userText ), array( 'class' => 'mw-userlink' ) );
+ return self::link( $page, htmlspecialchars( $userText ), array( 'class' => 'mw-userlink' ) );
}
/**
@@ -852,18 +930,20 @@ class Linker {
* @param $userText String: user name or IP address
* @param $redContribsWhenNoEdits Boolean: should the contributions link be
* red if the user has no edits?
- * @param $flags Integer: customisation flags (e.g. self::TOOL_LINKS_NOBLOCK)
+ * @param $flags Integer: customisation flags (e.g. Linker::TOOL_LINKS_NOBLOCK)
* @param $edits Integer: user edit count (optional, for performance)
* @return String: HTML fragment
*/
- public function userToolLinks( $userId, $userText, $redContribsWhenNoEdits = false, $flags = 0, $edits = null ) {
- global $wgUser, $wgDisableAnonTalk, $wgSysopUserBans, $wgLang;
+ public static function userToolLinks(
+ $userId, $userText, $redContribsWhenNoEdits = false, $flags = 0, $edits = null
+ ) {
+ global $wgUser, $wgDisableAnonTalk, $wgLang;
$talkable = !( $wgDisableAnonTalk && 0 == $userId );
- $blockable = ( $wgSysopUserBans || 0 == $userId ) && !$flags & self::TOOL_LINKS_NOBLOCK;
+ $blockable = !$flags & self::TOOL_LINKS_NOBLOCK;
$items = array();
if ( $talkable ) {
- $items[] = $this->userTalkLink( $userId, $userText );
+ $items[] = self::userTalkLink( $userId, $userText );
}
if ( $userId ) {
// check if the user has an edit
@@ -876,10 +956,10 @@ class Linker {
}
$contribsPage = SpecialPage::getTitleFor( 'Contributions', $userText );
- $items[] = $this->link( $contribsPage, wfMsgHtml( 'contribslink' ), $attribs );
+ $items[] = self::link( $contribsPage, wfMsgHtml( 'contribslink' ), $attribs );
}
if ( $blockable && $wgUser->isAllowed( 'block' ) ) {
- $items[] = $this->blockLink( $userId, $userText );
+ $items[] = self::blockLink( $userId, $userText );
}
if ( $items ) {
@@ -895,8 +975,8 @@ class Linker {
* @param $userText String: user name or IP address
* @param $edits Integer: user edit count (optional, for performance)
*/
- public function userToolLinksRedContribs( $userId, $userText, $edits = null ) {
- return $this->userToolLinks( $userId, $userText, true, 0, $edits );
+ public static function userToolLinksRedContribs( $userId, $userText, $edits = null ) {
+ return self::userToolLinks( $userId, $userText, true, 0, $edits );
}
@@ -906,9 +986,9 @@ class Linker {
* @return String: HTML fragment with user talk link
* @private
*/
- function userTalkLink( $userId, $userText ) {
+ static function userTalkLink( $userId, $userText ) {
$userTalkPage = Title::makeTitle( NS_USER_TALK, $userText );
- $userTalkLink = $this->link( $userTalkPage, wfMsgHtml( 'talkpagelinktext' ) );
+ $userTalkLink = self::link( $userTalkPage, wfMsgHtml( 'talkpagelinktext' ) );
return $userTalkLink;
}
@@ -918,9 +998,9 @@ class Linker {
* @return String: HTML fragment with block link
* @private
*/
- function blockLink( $userId, $userText ) {
- $blockPage = SpecialPage::getTitleFor( 'Blockip', $userText );
- $blockLink = $this->link( $blockPage, wfMsgHtml( 'blocklink' ) );
+ static function blockLink( $userId, $userText ) {
+ $blockPage = SpecialPage::getTitleFor( 'Block', $userText );
+ $blockLink = self::link( $blockPage, wfMsgHtml( 'blocklink' ) );
return $blockLink;
}
@@ -930,11 +1010,11 @@ class Linker {
* @param $isPublic Boolean: show only if all users can see it
* @return String: HTML fragment
*/
- function revUserLink( $rev, $isPublic = false ) {
+ static function revUserLink( $rev, $isPublic = false ) {
if ( $rev->isDeleted( Revision::DELETED_USER ) && $isPublic ) {
$link = wfMsgHtml( 'rev-deleted-user' );
- } else if ( $rev->userCan( Revision::DELETED_USER ) ) {
- $link = $this->userLink( $rev->getUser( Revision::FOR_THIS_USER ),
+ } elseif ( $rev->userCan( Revision::DELETED_USER ) ) {
+ $link = self::userLink( $rev->getUser( Revision::FOR_THIS_USER ),
$rev->getUserText( Revision::FOR_THIS_USER ) );
} else {
$link = wfMsgHtml( 'rev-deleted-user' );
@@ -951,14 +1031,14 @@ class Linker {
* @param $isPublic Boolean: show only if all users can see it
* @return string HTML
*/
- function revUserTools( $rev, $isPublic = false ) {
+ static function revUserTools( $rev, $isPublic = false ) {
if ( $rev->isDeleted( Revision::DELETED_USER ) && $isPublic ) {
$link = wfMsgHtml( 'rev-deleted-user' );
- } else if ( $rev->userCan( Revision::DELETED_USER ) ) {
+ } elseif ( $rev->userCan( Revision::DELETED_USER ) ) {
$userId = $rev->getUser( Revision::FOR_THIS_USER );
$userText = $rev->getUserText( Revision::FOR_THIS_USER );
- $link = $this->userLink( $userId, $userText ) .
- ' ' . $this->userToolLinks( $userId, $userText );
+ $link = self::userLink( $userId, $userText ) .
+ ' ' . self::userToolLinks( $userId, $userText );
} else {
$link = wfMsgHtml( 'rev-deleted-user' );
}
@@ -984,7 +1064,7 @@ class Linker {
* @param $title Mixed: Title object (to generate link to the section in autocomment) or null
* @param $local Boolean: whether section links should refer to local page
*/
- function formatComment( $comment, $title = null, $local = false ) {
+ static function formatComment( $comment, $title = null, $local = false ) {
wfProfileIn( __METHOD__ );
# Sanitize text a bit:
@@ -993,14 +1073,20 @@ class Linker {
$comment = Sanitizer::escapeHtmlAllowEntities( $comment );
# Render autocomments and make links:
- $comment = $this->formatAutocomments( $comment, $title, $local );
- $comment = $this->formatLinksInComment( $comment, $title, $local );
+ $comment = self::formatAutocomments( $comment, $title, $local );
+ $comment = self::formatLinksInComment( $comment, $title, $local );
wfProfileOut( __METHOD__ );
return $comment;
}
/**
+ * @var Title
+ */
+ static $autocommentTitle;
+ static $autocommentLocal;
+
+ /**
* The pattern for autogen comments is / * foo * /, which makes for
* some nasty regex.
* We look for all comments, match any text before and after the comment,
@@ -1012,22 +1098,26 @@ class Linker {
* @param $local Boolean: whether section links should refer to local page
* @return String: formatted comment
*/
- private function formatAutocomments( $comment, $title = null, $local = false ) {
+ private static function formatAutocomments( $comment, $title = null, $local = false ) {
// Bah!
- $this->autocommentTitle = $title;
- $this->autocommentLocal = $local;
+ self::$autocommentTitle = $title;
+ self::$autocommentLocal = $local;
$comment = preg_replace_callback(
'!(.*)/\*\s*(.*?)\s*\*/(.*)!',
- array( $this, 'formatAutocommentsCallback' ),
+ array( 'Linker', 'formatAutocommentsCallback' ),
$comment );
- unset( $this->autocommentTitle );
- unset( $this->autocommentLocal );
+ self::$autocommentTitle = null;
+ self::$autocommentLocal = null;
return $comment;
}
- private function formatAutocommentsCallback( $match ) {
- $title = $this->autocommentTitle;
- $local = $this->autocommentLocal;
+ /**
+ * @param $match
+ * @return string
+ */
+ private static function formatAutocommentsCallback( $match ) {
+ $title = self::$autocommentTitle;
+ $local = self::$autocommentLocal;
$pre = $match[1];
$auto = $match[2];
@@ -1050,7 +1140,7 @@ class Linker {
$title->getDBkey(), $section );
}
if ( $sectionTitle ) {
- $link = $this->link( $sectionTitle,
+ $link = self::link( $sectionTitle,
htmlspecialchars( wfMsgForContent( 'sectionlink' ) ), array(), array(),
'noclasses' );
} else {
@@ -1072,28 +1162,38 @@ class Linker {
}
/**
+ * @var Title
+ */
+ static $commentContextTitle;
+ static $commentLocal;
+
+ /**
* Formats wiki links and media links in text; all other wiki formatting
* is ignored
*
- * @todo Fixme: doesn't handle sub-links as in image thumb texts like the main parser
+ * @todo FIXME: Doesn't handle sub-links as in image thumb texts like the main parser
* @param $comment String: text to format links in
* @param $title An optional title object used to links to sections
* @param $local Boolean: whether section links should refer to local page
* @return String
*/
- public function formatLinksInComment( $comment, $title = null, $local = false ) {
- $this->commentContextTitle = $title;
- $this->commentLocal = $local;
+ public static function formatLinksInComment( $comment, $title = null, $local = false ) {
+ self::$commentContextTitle = $title;
+ self::$commentLocal = $local;
$html = preg_replace_callback(
'/\[\[:?(.*?)(\|(.*?))*\]\]([^[]*)/',
- array( $this, 'formatLinksInCommentCallback' ),
+ array( 'Linker', 'formatLinksInCommentCallback' ),
$comment );
- unset( $this->commentContextTitle );
- unset( $this->commentLocal );
+ self::$commentContextTitle = null;
+ self::$commentLocal = null;
return $html;
}
- protected function formatLinksInCommentCallback( $match ) {
+ /**
+ * @param $match
+ * @return mixed
+ */
+ protected static function formatLinksInCommentCallback( $match ) {
global $wgContLang;
$medians = '(?:' . preg_quote( MWNamespace::getCanonicalName( NS_MEDIA ), '/' ) . '|';
@@ -1103,7 +1203,7 @@ class Linker {
# fix up urlencoded title texts (copied from Parser::replaceInternalLinks)
if ( strpos( $match[1], '%' ) !== false ) {
- $match[1] = str_replace( array( '<', '>' ), array( '&lt;', '&gt;' ), urldecode( $match[1] ) );
+ $match[1] = str_replace( array( '<', '>' ), array( '&lt;', '&gt;' ), rawurldecode( $match[1] ) );
}
# Handle link renaming [[foo|text]] will show link as "text"
@@ -1118,7 +1218,9 @@ class Linker {
# Media link; trail not supported.
$linkRegexp = '/\[\[(.*?)\]\]/';
$title = Title::makeTitleSafe( NS_FILE, $submatch[1] );
- $thelink = $this->makeMediaLinkObj( $title, $text );
+ if ( $title ) {
+ $thelink = self::makeMediaLinkObj( $title, $text );
+ }
} else {
# Other kind of link
if ( preg_match( $wgContLang->linkTrail(), $match[4], $submatch ) ) {
@@ -1129,22 +1231,22 @@ class Linker {
$linkRegexp = '/\[\[(.*?)\]\]' . preg_quote( $trail, '/' ) . '/';
if ( isset( $match[1][0] ) && $match[1][0] == ':' )
$match[1] = substr( $match[1], 1 );
- list( $inside, $trail ) = Linker::splitTrail( $trail );
+ list( $inside, $trail ) = self::splitTrail( $trail );
$linkText = $text;
- $linkTarget = Linker::normalizeSubpageLink( $this->commentContextTitle,
+ $linkTarget = self::normalizeSubpageLink( self::$commentContextTitle,
$match[1], $linkText );
$target = Title::newFromText( $linkTarget );
if ( $target ) {
if ( $target->getText() == '' && $target->getInterwiki() === ''
- && !$this->commentLocal && $this->commentContextTitle )
+ && !self::$commentLocal && self::$commentContextTitle )
{
- $newTarget = clone ( $this->commentContextTitle );
+ $newTarget = clone ( self::$commentContextTitle );
$newTarget->setFragment( '#' . $target->getFragment() );
$target = $newTarget;
}
- $thelink = $this->link(
+ $thelink = self::link(
$target,
$linkText . $inside
) . $trail;
@@ -1158,6 +1260,12 @@ class Linker {
return $comment;
}
+ /**
+ * @param $contextTitle Title
+ * @param $target
+ * @param $text
+ * @return string
+ */
static function normalizeSubpageLink( $contextTitle, $target, &$text ) {
# Valid link forms:
# Foobar -- normal
@@ -1240,14 +1348,14 @@ class Linker {
*
* @return string
*/
- function commentBlock( $comment, $title = null, $local = false ) {
+ static function commentBlock( $comment, $title = null, $local = false ) {
// '*' used to be the comment inserted by the software way back
// in antiquity in case none was provided, here for backwards
// compatability, acc. to brion -ævar
if ( $comment == '' || $comment == '*' ) {
return '';
} else {
- $formatted = $this->formatComment( $comment, $title, $local );
+ $formatted = self::formatComment( $comment, $title, $local );
return " <span class=\"comment\">($formatted)</span>";
}
}
@@ -1261,12 +1369,14 @@ class Linker {
* @param $isPublic Boolean: show only if all users can see it
* @return String: HTML fragment
*/
- function revComment( Revision $rev, $local = false, $isPublic = false ) {
- if ( $rev->getRawComment() == "" ) return "";
+ static function revComment( Revision $rev, $local = false, $isPublic = false ) {
+ if ( $rev->getRawComment() == "" ) {
+ return "";
+ }
if ( $rev->isDeleted( Revision::DELETED_COMMENT ) && $isPublic ) {
$block = " <span class=\"comment\">" . wfMsgHtml( 'rev-deleted-comment' ) . "</span>";
- } else if ( $rev->userCan( Revision::DELETED_COMMENT ) ) {
- $block = $this->commentBlock( $rev->getComment( Revision::FOR_THIS_USER ),
+ } elseif ( $rev->userCan( Revision::DELETED_COMMENT ) ) {
+ $block = self::commentBlock( $rev->getComment( Revision::FOR_THIS_USER ),
$rev->getTitle(), $local );
} else {
$block = " <span class=\"comment\">" . wfMsgHtml( 'rev-deleted-comment' ) . "</span>";
@@ -1277,7 +1387,11 @@ class Linker {
return $block;
}
- public function formatRevisionSize( $size ) {
+ /**
+ * @param $size
+ * @return string
+ */
+ public static function formatRevisionSize( $size ) {
if ( $size == 0 ) {
$stxt = wfMsgExt( 'historyempty', 'parsemag' );
} else {
@@ -1291,25 +1405,32 @@ class Linker {
/**
* Add another level to the Table of Contents
+ *
+ * @return string
*/
- function tocIndent() {
+ static function tocIndent() {
return "\n<ul>";
}
/**
* Finish one or more sublevels on the Table of Contents
+ *
+ * @return string
*/
- function tocUnindent( $level ) {
+ static function tocUnindent( $level ) {
return "</li>\n" . str_repeat( "</ul>\n</li>\n", $level > 0 ? $level : 0 );
}
/**
* parameter level defines if we are on an indentation level
+ *
+ * @return string
*/
- function tocLine( $anchor, $tocline, $tocnumber, $level, $sectionIndex = false ) {
+ static function tocLine( $anchor, $tocline, $tocnumber, $level, $sectionIndex = false ) {
$classes = "toclevel-$level";
- if ( $sectionIndex !== false )
+ if ( $sectionIndex !== false ) {
$classes .= " tocsection-$sectionIndex";
+ }
return "\n<li class=\"$classes\"><a href=\"#" .
$anchor . '"><span class="tocnumber">' .
$tocnumber . '</span> <span class="toctext">' .
@@ -1321,7 +1442,7 @@ class Linker {
* tocUnindent() will be used instead if we're ending a line below
* the new level.
*/
- function tocLineEnd() {
+ static function tocLineEnd() {
return "</li>\n";
}
@@ -1332,7 +1453,7 @@ class Linker {
* @param $lang mixed: Language code for the toc title
* @return String: full html of the TOC
*/
- function tocList( $toc, $lang = false ) {
+ static function tocList( $toc, $lang = false ) {
$title = wfMsgExt( 'toc', array( 'language' => $lang, 'escape' ) );
return
'<table id="toc" class="toc"><tr><td>'
@@ -1348,80 +1469,25 @@ class Linker {
* @param $tree Return value of ParserOutput::getSections()
* @return String: HTML fragment
*/
- public function generateTOC( $tree ) {
+ public static function generateTOC( $tree ) {
$toc = '';
$lastLevel = 0;
foreach ( $tree as $section ) {
if ( $section['toclevel'] > $lastLevel )
- $toc .= $this->tocIndent();
- else if ( $section['toclevel'] < $lastLevel )
- $toc .= $this->tocUnindent(
+ $toc .= self::tocIndent();
+ elseif ( $section['toclevel'] < $lastLevel )
+ $toc .= self::tocUnindent(
$lastLevel - $section['toclevel'] );
else
- $toc .= $this->tocLineEnd();
+ $toc .= self::tocLineEnd();
- $toc .= $this->tocLine( $section['anchor'],
+ $toc .= self::tocLine( $section['anchor'],
$section['line'], $section['number'],
$section['toclevel'], $section['index'] );
$lastLevel = $section['toclevel'];
}
- $toc .= $this->tocLineEnd();
- return $this->tocList( $toc );
- }
-
- /**
- * Create a section edit link. This supersedes editSectionLink() and
- * editSectionLinkForOther().
- *
- * @param $nt Title The title being linked to (may not be the same as
- * $wgTitle, if the section is included from a template)
- * @param $section string The designation of the section being pointed to,
- * to be included in the link, like "&section=$section"
- * @param $tooltip string The tooltip to use for the link: will be escaped
- * and wrapped in the 'editsectionhint' message
- * @param $lang string Language code
- * @return string HTML to use for edit link
- */
- public function doEditSectionLink( Title $nt, $section, $tooltip = null, $lang = false ) {
- // HTML generated here should probably have userlangattributes
- // added to it for LTR text on RTL pages
- $attribs = array();
- if ( !is_null( $tooltip ) ) {
- # Bug 25462: undo double-escaping.
- $tooltip = Sanitizer::decodeCharReferences( $tooltip );
- $attribs['title'] = wfMsgReal( 'editsectionhint', array( $tooltip ), true, $lang );
- }
- $link = $this->link( $nt, wfMsgExt( 'editsection', array( 'language' => $lang ) ),
- $attribs,
- array( 'action' => 'edit', 'section' => $section ),
- array( 'noclasses', 'known' )
- );
-
- # Run the old hook. This takes up half of the function . . . hopefully
- # we can rid of it someday.
- $attribs = '';
- if ( $tooltip ) {
- $attribs = htmlspecialchars( wfMsgReal( 'editsectionhint', array( $tooltip ), true, $lang ) );
- $attribs = " title=\"$attribs\"";
- }
- $result = null;
- wfRunHooks( 'EditSectionLink', array( &$this, $nt, $section, $attribs, $link, &$result, $lang ) );
- if ( !is_null( $result ) ) {
- # For reverse compatibility, add the brackets *after* the hook is
- # run, and even add them to hook-provided text. (This is the main
- # reason that the EditSectionLink hook is deprecated in favor of
- # DoEditSectionLink: it can't change the brackets or the span.)
- $result = wfMsgExt( 'editsection-brackets', array( 'escape', 'replaceafter', 'language' => $lang ), $result );
- return "<span class=\"editsection\">$result</span>";
- }
-
- # Add the brackets and the span, and *then* run the nice new hook, with
- # clean and non-redundant arguments.
- $result = wfMsgExt( 'editsection-brackets', array( 'escape', 'replaceafter', 'language' => $lang ), $link );
- $result = "<span class=\"editsection\">$result</span>";
-
- wfRunHooks( 'DoEditSectionLink', array( $this, $nt, $section, $tooltip, &$result, $lang ) );
- return $result;
+ $toc .= self::tocLineEnd();
+ return self::tocList( $toc );
}
/**
@@ -1439,7 +1505,7 @@ class Linker {
*
* @return String: HTML headline
*/
- public function makeHeadline( $level, $attribs, $anchor, $text, $link, $legacyAnchor = false ) {
+ public static function makeHeadline( $level, $attribs, $anchor, $text, $link, $legacyAnchor = false ) {
$ret = "<h$level$attribs"
. $link
. " <span class=\"mw-headline\" id=\"$anchor\">$text</span>"
@@ -1455,11 +1521,8 @@ class Linker {
* as a two-element array
*/
static function splitTrail( $trail ) {
- static $regex = false;
- if ( $regex === false ) {
- global $wgContLang;
- $regex = $wgContLang->linkTrail();
- }
+ global $wgContLang;
+ $regex = $wgContLang->linkTrail();
$inside = '';
if ( $trail !== '' ) {
$m = array();
@@ -1484,9 +1547,9 @@ class Linker {
*
* @param $rev Revision object
*/
- function generateRollback( $rev ) {
+ static function generateRollback( $rev ) {
return '<span class="mw-rollback-link">['
- . $this->buildRollbackLink( $rev )
+ . self::buildRollbackLink( $rev )
. ']</span>';
}
@@ -1496,22 +1559,25 @@ class Linker {
* @param $rev Revision object
* @return String: HTML fragment
*/
- public function buildRollbackLink( $rev ) {
+ public static function buildRollbackLink( $rev ) {
global $wgRequest, $wgUser;
$title = $rev->getTitle();
$query = array(
'action' => 'rollback',
- 'from' => $rev->getUserText()
+ 'from' => $rev->getUserText(),
+ 'token' => $wgUser->editToken( array( $title->getPrefixedText(), $rev->getUserText() ) ),
);
if ( $wgRequest->getBool( 'bot' ) ) {
$query['bot'] = '1';
$query['hidediff'] = '1'; // bug 15999
}
- $query['token'] = $wgUser->editToken( array( $title->getPrefixedText(),
- $rev->getUserText() ) );
- return $this->link( $title, wfMsgHtml( 'rollbacklink' ),
+ return self::link(
+ $title,
+ wfMsgHtml( 'rollbacklink' ),
array( 'title' => wfMsg( 'tooltip-rollback' ) ),
- $query, array( 'known', 'noclasses' ) );
+ $query,
+ array( 'known', 'noclasses' )
+ );
}
/**
@@ -1523,7 +1589,7 @@ class Linker {
* @param $section Boolean: whether this is for a section edit
* @return String: HTML output
*/
- public function formatTemplates( $templates, $preview = false, $section = false ) {
+ public static function formatTemplates( $templates, $preview = false, $section = false ) {
wfProfileIn( __METHOD__ );
$outText = '';
@@ -1557,21 +1623,21 @@ class Linker {
$protected = '';
}
if ( $titleObj->quickUserCan( 'edit' ) ) {
- $editLink = $this->link(
+ $editLink = self::link(
$titleObj,
wfMsg( 'editlink' ),
array(),
array( 'action' => 'edit' )
);
} else {
- $editLink = $this->link(
+ $editLink = self::link(
$titleObj,
wfMsg( 'viewsourcelink' ),
array(),
array( 'action' => 'edit' )
);
}
- $outText .= '<li>' . $this->link( $titleObj ) . ' (' . $editLink . ') ' . $protected . '</li>';
+ $outText .= '<li>' . self::link( $titleObj ) . ' (' . $editLink . ') ' . $protected . '</li>';
}
$outText .= '</ul>';
}
@@ -1586,7 +1652,7 @@ class Linker {
* or similar
* @return String: HTML output
*/
- public function formatHiddenCategories( $hiddencats ) {
+ public static function formatHiddenCategories( $hiddencats ) {
global $wgLang;
wfProfileIn( __METHOD__ );
@@ -1598,7 +1664,7 @@ class Linker {
$outText .= "</div><ul>\n";
foreach ( $hiddencats as $titleObj ) {
- $outText .= '<li>' . $this->link( $titleObj, null, array(), array(), 'known' ) . "</li>\n"; # If it's hidden, it must exist - no need to check with a LinkBatch
+ $outText .= '<li>' . self::link( $titleObj, null, array(), array(), 'known' ) . "</li>\n"; # If it's hidden, it must exist - no need to check with a LinkBatch
}
$outText .= '</ul>';
}
@@ -1613,7 +1679,7 @@ class Linker {
* @param $size Size to format
* @return String
*/
- public function formatSize( $size ) {
+ public static function formatSize( $size ) {
global $wgLang;
return htmlspecialchars( $wgLang->formatSize( $size ) );
}
@@ -1630,13 +1696,19 @@ class Linker {
* @return String: contents of the title attribute (which you must HTML-
* escape), or false for no title attribute
*/
- public function titleAttrib( $name, $options = null ) {
+ public static function titleAttrib( $name, $options = null ) {
+ global $wgEnableTooltipsAndAccesskeys;
+ if ( !$wgEnableTooltipsAndAccesskeys )
+ return false;
+
wfProfileIn( __METHOD__ );
- if ( wfEmptyMsg( "tooltip-$name" ) ) {
+ $message = wfMessage( "tooltip-$name" );
+
+ if ( !$message->exists() ) {
$tooltip = false;
} else {
- $tooltip = wfMsg( "tooltip-$name" );
+ $tooltip = $message->text();
# Compatibility: formerly some tooltips had [alt-.] hardcoded
$tooltip = preg_replace( "/ ?\[alt-.\]$/", '', $tooltip );
# Message equal to '-' means suppress it.
@@ -1646,7 +1718,7 @@ class Linker {
}
if ( $options == 'withaccess' ) {
- $accesskey = $this->accesskey( $name );
+ $accesskey = self::accesskey( $name );
if ( $accesskey !== false ) {
if ( $tooltip === false || $tooltip === '' ) {
$tooltip = "[$accesskey]";
@@ -1660,6 +1732,8 @@ class Linker {
return $tooltip;
}
+ static $accesskeycache;
+
/**
* Given the id of an interface element, constructs the appropriate
* accesskey attribute from the system messages. (Note, this is usually
@@ -1670,9 +1744,9 @@ class Linker {
* @return String: contents of the accesskey attribute (which you must HTML-
* escape), or false for no accesskey attribute
*/
- public function accesskey( $name ) {
- if ( isset( $this->accesskeycache[$name] ) ) {
- return $this->accesskeycache[$name];
+ public static function accesskey( $name ) {
+ if ( isset( self::$accesskeycache[$name] ) ) {
+ return self::$accesskeycache[$name];
}
wfProfileIn( __METHOD__ );
@@ -1683,7 +1757,7 @@ class Linker {
} else {
$accesskey = $message->plain();
if ( $accesskey === '' || $accesskey === '-' ) {
- # FIXME: Per standard MW behavior, a value of '-' means to suppress the
+ # @todo FIXME: Per standard MW behavior, a value of '-' means to suppress the
# attribute, but this is broken for accesskey: that might be a useful
# value.
$accesskey = false;
@@ -1691,7 +1765,7 @@ class Linker {
}
wfProfileOut( __METHOD__ );
- return $this->accesskeycache[$name] = $accesskey;
+ return self::$accesskeycache[$name] = $accesskey;
}
/**
@@ -1704,11 +1778,11 @@ class Linker {
* @return String: HTML <a> link to Special:Revisiondelete, wrapped in a
* span to allow for customization of appearance with CSS
*/
- public function revDeleteLink( $query = array(), $restricted = false, $delete = true ) {
+ public static function revDeleteLink( $query = array(), $restricted = false, $delete = true ) {
$sp = SpecialPage::getTitleFor( 'Revisiondelete' );
$text = $delete ? wfMsgHtml( 'rev-delundel' ) : wfMsgHtml( 'rev-showdeleted' );
$tag = $restricted ? 'strong' : 'span';
- $link = $this->link( $sp, $text, array(), $query, array( 'known', 'noclasses' ) );
+ $link = self::link( $sp, $text, array(), $query, array( 'known', 'noclasses' ) );
return Xml::tags( $tag, array( 'class' => 'mw-revdelundel-link' ), "($link)" );
}
@@ -1720,7 +1794,7 @@ class Linker {
* @return string HTML text wrapped in a span to allow for customization
* of appearance with CSS
*/
- public function revDeleteLinkDisabled( $delete = true ) {
+ public static function revDeleteLinkDisabled( $delete = true ) {
$text = $delete ? wfMsgHtml( 'rev-delundel' ) : wfMsgHtml( 'rev-showdeleted' );
return Xml::tags( 'span', array( 'class' => 'mw-revdelundel-link' ), "($text)" );
}
@@ -1728,68 +1802,7 @@ class Linker {
/* Deprecated methods */
/**
- * @deprecated
- */
- function postParseLinkColour( $s = null ) {
- wfDeprecated( __METHOD__ );
- return null;
- }
-
-
- /**
- * @deprecated Use link()
- *
- * This function is a shortcut to makeLinkObj(Title::newFromText($title),...). Do not call
- * it if you already have a title object handy. See makeLinkObj for further documentation.
- *
- * @param $title String: the text of the title
- * @param $text String: link text
- * @param $query String: optional query part
- * @param $trail String: optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- */
- function makeLink( $title, $text = '', $query = '', $trail = '' ) {
- wfProfileIn( __METHOD__ );
- $nt = Title::newFromText( $title );
- if ( $nt instanceof Title ) {
- $result = $this->makeLinkObj( $nt, $text, $query, $trail );
- } else {
- wfDebug( 'Invalid title passed to Linker::makeLink(): "' . $title . "\"\n" );
- $result = $text == "" ? $title : $text;
- }
-
- wfProfileOut( __METHOD__ );
- return $result;
- }
-
- /**
- * @deprecated Use link()
- *
- * This function is a shortcut to makeKnownLinkObj(Title::newFromText($title),...). Do not call
- * it if you already have a title object handy. See makeKnownLinkObj for further documentation.
- *
- * @param $title String: the text of the title
- * @param $text String: link text
- * @param $query String: optional query part
- * @param $trail String: optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- * @param $prefix String: Optional prefix
- * @param $aprops String: extra attributes to the a-element
- */
- function makeKnownLink( $title, $text = '', $query = '', $trail = '', $prefix = '', $aprops = '' ) {
- $nt = Title::newFromText( $title );
- if ( $nt instanceof Title ) {
- return $this->makeKnownLinkObj( $nt, $text, $query, $trail, $prefix , $aprops );
- } else {
- wfDebug( 'Invalid title passed to Linker::makeKnownLink(): "' . $title . "\"\n" );
- return $text == '' ? $title : $text;
- }
- }
-
- /**
- * @deprecated Use link()
+ * @deprecated since 1.16 Use link()
*
* This function is a shortcut to makeBrokenLinkObj(Title::newFromText($title),...). Do not call
* it if you already have a title object handy. See makeBrokenLinkObj for further documentation.
@@ -1801,42 +1814,18 @@ class Linker {
* be included in the link text. Other characters will be appended after
* the end of the link.
*/
- function makeBrokenLink( $title, $text = '', $query = '', $trail = '' ) {
+ static function makeBrokenLink( $title, $text = '', $query = '', $trail = '' ) {
$nt = Title::newFromText( $title );
if ( $nt instanceof Title ) {
- return $this->makeBrokenLinkObj( $nt, $text, $query, $trail );
+ return self::makeBrokenLinkObj( $nt, $text, $query, $trail );
} else {
- wfDebug( 'Invalid title passed to Linker::makeBrokenLink(): "' . $title . "\"\n" );
+ wfDebug( 'Invalid title passed to self::makeBrokenLink(): "' . $title . "\"\n" );
return $text == '' ? $title : $text;
}
}
/**
- * @deprecated Use link()
- *
- * This function is a shortcut to makeStubLinkObj(Title::newFromText($title),...). Do not call
- * it if you already have a title object handy. See makeStubLinkObj for further documentation.
- *
- * @param $title String: the text of the title
- * @param $text String: link text
- * @param $query String: optional query part
- * @param $trail String: optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- */
- function makeStubLink( $title, $text = '', $query = '', $trail = '' ) {
- wfDeprecated( __METHOD__ );
- $nt = Title::newFromText( $title );
- if ( $nt instanceof Title ) {
- return $this->makeStubLinkObj( $nt, $text, $query, $trail );
- } else {
- wfDebug( 'Invalid title passed to Linker::makeStubLink(): "' . $title . "\"\n" );
- return $text == '' ? $title : $text;
- }
- }
-
- /**
- * @deprecated Use link()
+ * @deprecated since 1.16 Use link()
*
* Make a link for a title which may or may not be in the database. If you need to
* call this lots of times, pre-fill the link cache with a LinkBatch, otherwise each
@@ -1851,23 +1840,22 @@ class Linker {
* the end of the link.
* @param $prefix String: optional prefix. As trail, only before instead of after.
*/
- function makeLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
+ static function makeLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
wfProfileIn( __METHOD__ );
-
$query = wfCgiToArray( $query );
- list( $inside, $trail ) = Linker::splitTrail( $trail );
+ list( $inside, $trail ) = self::splitTrail( $trail );
if ( $text === '' ) {
- $text = $this->linkText( $nt );
+ $text = self::linkText( $nt );
}
- $ret = $this->link( $nt, "$prefix$text$inside", array(), $query ) . $trail;
+ $ret = self::link( $nt, "$prefix$text$inside", array(), $query ) . $trail;
wfProfileOut( __METHOD__ );
return $ret;
}
/**
- * @deprecated Use link()
+ * @deprecated since 1.16 Use link()
*
* Make a link for a title which definitely exists. This is faster than makeLinkObj because
* it doesn't have to do a database query. It's also valid for interwiki titles and special
@@ -1882,20 +1870,22 @@ class Linker {
* @param $style String: style to apply - if empty, use getInternalLinkAttributesObj instead
* @return the a-element
*/
- function makeKnownLinkObj( $title, $text = '', $query = '', $trail = '', $prefix = '' , $aprops = '', $style = '' ) {
+ static function makeKnownLinkObj(
+ $title, $text = '', $query = '', $trail = '', $prefix = '' , $aprops = '', $style = ''
+ ) {
wfProfileIn( __METHOD__ );
if ( $text == '' ) {
- $text = $this->linkText( $title );
+ $text = self::linkText( $title );
}
$attribs = Sanitizer::mergeAttributes(
Sanitizer::decodeTagAttributes( $aprops ),
Sanitizer::decodeTagAttributes( $style )
);
$query = wfCgiToArray( $query );
- list( $inside, $trail ) = Linker::splitTrail( $trail );
+ list( $inside, $trail ) = self::splitTrail( $trail );
- $ret = $this->link( $title, "$prefix$text$inside", $attribs, $query,
+ $ret = self::link( $title, "$prefix$text$inside", $attribs, $query,
array( 'known', 'noclasses' ) ) . $trail;
wfProfileOut( __METHOD__ );
@@ -1903,7 +1893,7 @@ class Linker {
}
/**
- * @deprecated Use link()
+ * @deprecated since 1.16 Use link()
*
* Make a red link to the edit page of a given title.
*
@@ -1915,15 +1905,15 @@ class Linker {
* the end of the link.
* @param $prefix String: Optional prefix
*/
- function makeBrokenLinkObj( $title, $text = '', $query = '', $trail = '', $prefix = '' ) {
+ static function makeBrokenLinkObj( $title, $text = '', $query = '', $trail = '', $prefix = '' ) {
wfProfileIn( __METHOD__ );
- list( $inside, $trail ) = Linker::splitTrail( $trail );
+ list( $inside, $trail ) = self::splitTrail( $trail );
if ( $text === '' ) {
- $text = $this->linkText( $title );
+ $text = self::linkText( $title );
}
- $ret = $this->link( $title, "$prefix$text$inside", array(),
+ $ret = self::link( $title, "$prefix$text$inside", array(),
wfCgiToArray( $query ), 'broken' ) . $trail;
wfProfileOut( __METHOD__ );
@@ -1931,25 +1921,7 @@ class Linker {
}
/**
- * @deprecated Use link()
- *
- * Make a brown link to a short article.
- *
- * @param $nt Title object of the target page
- * @param $text String: link text
- * @param $query String: optional query part
- * @param $trail String: optional trail. Alphabetic characters at the start of this string will
- * be included in the link text. Other characters will be appended after
- * the end of the link.
- * @param $prefix String: Optional prefix
- */
- function makeStubLinkObj( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
- // wfDeprecated( __METHOD__ );
- return $this->makeColouredLinkObj( $nt, 'stub', $text, $query, $trail, $prefix );
- }
-
- /**
- * @deprecated Use link()
+ * @deprecated since 1.16 Use link()
*
* Make a coloured link.
*
@@ -1962,108 +1934,28 @@ class Linker {
* the end of the link.
* @param $prefix String: Optional prefix
*/
- function makeColouredLinkObj( $nt, $colour, $text = '', $query = '', $trail = '', $prefix = '' ) {
- // wfDeprecated( __METHOD__ );
+ static function makeColouredLinkObj( $nt, $colour, $text = '', $query = '', $trail = '', $prefix = '' ) {
if ( $colour != '' ) {
- $style = $this->getInternalLinkAttributesObj( $nt, $text, $colour );
- } else $style = '';
- return $this->makeKnownLinkObj( $nt, $text, $query, $trail, $prefix, '', $style );
- }
-
- /** Obsolete alias */
- function makeImage( $url, $alt = '' ) {
- wfDeprecated( __METHOD__ );
- return $this->makeExternalImage( $url, $alt );
- }
-
- /**
- * Creates the HTML source for images
- * @deprecated use makeImageLink2
- *
- * @param $title Title object
- * @param $label String: label text
- * @param $alt String: alt text
- * @param $align String: horizontal alignment: none, left, center, right)
- * @param $handlerParams Array: parameters to be passed to the media handler
- * @param $framed Boolean: shows image in original size in a frame
- * @param $thumb Boolean: shows image as thumbnail in a frame
- * @param $manualthumb String: image name for the manual thumbnail
- * @param $valign String: vertical alignment: baseline, sub, super, top, text-top, middle, bottom, text-bottom
- * @param $time String: timestamp of the file, set as false for current
- * @return String
- */
- function makeImageLinkObj( $title, $label, $alt, $align = '', $handlerParams = array(), $framed = false,
- $thumb = false, $manualthumb = '', $valign = '', $time = false )
- {
- $frameParams = array( 'alt' => $alt, 'caption' => $label );
- if ( $align ) {
- $frameParams['align'] = $align;
- }
- if ( $framed ) {
- $frameParams['framed'] = true;
- }
- if ( $thumb ) {
- $frameParams['thumbnail'] = true;
- }
- if ( $manualthumb ) {
- $frameParams['manualthumb'] = $manualthumb;
- }
- if ( $valign ) {
- $frameParams['valign'] = $valign;
- }
- $file = wfFindFile( $title, array( 'time' => $time ) );
- return $this->makeImageLink2( $title, $file, $frameParams, $handlerParams, $time );
- }
-
- /** @deprecated use Linker::makeMediaLinkObj() */
- function makeMediaLink( $name, $unused = '', $text = '', $time = false ) {
- $nt = Title::makeTitleSafe( NS_FILE, $name );
- return $this->makeMediaLinkObj( $nt, $text, $time );
- }
-
- /**
- * Used to generate section edit links that point to "other" pages
- * (sections that are really part of included pages).
- *
- * @deprecated use Linker::doEditSectionLink()
- * @param $title Title string.
- * @param $section Integer: section number.
- */
- public function editSectionLinkForOther( $title, $section ) {
- wfDeprecated( __METHOD__ );
- $title = Title::newFromText( $title );
- return $this->doEditSectionLink( $title, $section );
- }
-
- /**
- * @deprecated use Linker::doEditSectionLink()
- * @param $nt Title object.
- * @param $section Integer: section number.
- * @param $hint Link String: title, or default if omitted or empty
- */
- public function editSectionLink( Title $nt, $section, $hint = '' ) {
- wfDeprecated( __METHOD__ );
- if ( $hint === '' ) {
- # No way to pass an actual empty $hint here! The new interface al-
- # lows this, so we have to do this for compatibility.
- $hint = null;
+ $style = self::getInternalLinkAttributesObj( $nt, $text, $colour );
+ } else {
+ $style = '';
}
- return $this->doEditSectionLink( $nt, $section, $hint );
+ return self::makeKnownLinkObj( $nt, $text, $query, $trail, $prefix, '', $style );
}
/**
* Returns the attributes for the tooltip and access key.
*/
- public function tooltipAndAccesskeyAttribs( $name ) {
+ public static function tooltipAndAccesskeyAttribs( $name ) {
global $wgEnableTooltipsAndAccesskeys;
if ( !$wgEnableTooltipsAndAccesskeys )
return array();
- # FIXME: If Sanitizer::expandAttributes() treated "false" as "output
+ # @todo FIXME: If Sanitizer::expandAttributes() treated "false" as "output
# no attribute" instead of "output '' as value for attribute", this
# would be three lines.
$attribs = array(
- 'title' => $this->titleAttrib( $name, 'withaccess' ),
- 'accesskey' => $this->accesskey( $name )
+ 'title' => self::titleAttrib( $name, 'withaccess' ),
+ 'accesskey' => self::accesskey( $name )
);
if ( $attribs['title'] === false ) {
unset( $attribs['title'] );
@@ -2073,27 +1965,42 @@ class Linker {
}
return $attribs;
}
+
/**
- * @deprecated Returns raw bits of HTML, use titleAttrib() and accesskey()
+ * @deprecated since 1.14
+ * Returns raw bits of HTML, use titleAttrib()
*/
- public function tooltipAndAccesskey( $name ) {
- return Xml::expandAttributes( $this->tooltipAndAccesskeyAttribs( $name ) );
- }
-
- /** @deprecated Returns raw bits of HTML, use titleAttrib() */
- public function tooltip( $name, $options = null ) {
+ public static function tooltip( $name, $options = null ) {
global $wgEnableTooltipsAndAccesskeys;
if ( !$wgEnableTooltipsAndAccesskeys )
return '';
- # FIXME: If Sanitizer::expandAttributes() treated "false" as "output
+ # @todo FIXME: If Sanitizer::expandAttributes() treated "false" as "output
# no attribute" instead of "output '' as value for attribute", this
# would be two lines.
- $tooltip = $this->titleAttrib( $name, $options );
+ $tooltip = self::titleAttrib( $name, $options );
if ( $tooltip === false ) {
return '';
}
return Xml::expandAttributes( array(
- 'title' => $this->titleAttrib( $name, $options )
+ 'title' => $tooltip
) );
}
}
+
+/**
+ * @since 1.18
+ */
+class DummyLinker {
+
+ /**
+ * Use PHP's magic __call handler to transform instance calls to a dummy instance
+ * into static calls to the new Linker for backwards compatibility.
+ *
+ * @param $fname String Name of called method
+ * @param $args Array Arguments to the method
+ */
+ public function __call( $fname, $args ) {
+ return call_user_func_array( array( 'Linker', $fname ), $args );
+ }
+}
+
diff --git a/includes/LinksUpdate.php b/includes/LinksUpdate.php
index b86ea565..1fe6118a 100644
--- a/includes/LinksUpdate.php
+++ b/includes/LinksUpdate.php
@@ -2,6 +2,21 @@
/**
* See docs/deferred.txt
*
+ * 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
+ *
* @todo document (e.g. one-sentence top-level class description).
*/
class LinksUpdate {
@@ -67,7 +82,7 @@ class LinksUpdate {
$this->mInterlangs[$key] = $title;
}
- foreach ( $this->mCategories as $cat => &$sortkey ) {
+ foreach ( $this->mCategories as &$sortkey ) {
# If the sortkey is longer then 255 bytes,
# it truncated by DB, and then doesn't get
# matched when comparing existing vs current
@@ -110,7 +125,8 @@ class LinksUpdate {
$existing = $this->getExistingImages();
$imageDeletes = $this->getImageDeletions( $existing );
- $this->incrTableUpdate( 'imagelinks', 'il', $imageDeletes, $this->getImageInsertions( $existing ) );
+ $this->incrTableUpdate( 'imagelinks', 'il', $imageDeletes,
+ $this->getImageInsertions( $existing ) );
# Invalidate all image description pages which had links added or removed
$imageUpdates = $imageDeletes + array_diff_key( $this->mImages, $existing );
@@ -141,7 +157,8 @@ class LinksUpdate {
$categoryDeletes = $this->getCategoryDeletions( $existing );
- $this->incrTableUpdate( 'categorylinks', 'cl', $categoryDeletes, $this->getCategoryInsertions( $existing ) );
+ $this->incrTableUpdate( 'categorylinks', 'cl', $categoryDeletes,
+ $this->getCategoryInsertions( $existing ) );
# Invalidate all categories which were added, deleted or changed (set symmetric difference)
$categoryInserts = array_diff_assoc( $this->mCategories, $existing );
@@ -154,7 +171,8 @@ class LinksUpdate {
$propertiesDeletes = $this->getPropertyDeletions( $existing );
- $this->incrTableUpdate( 'page_props', 'pp', $propertiesDeletes, $this->getPropertyInsertions( $existing ) );
+ $this->incrTableUpdate( 'page_props', 'pp', $propertiesDeletes,
+ $this->getPropertyInsertions( $existing ) );
# Invalidate the necessary pages
$changed = $propertiesDeletes + array_diff_assoc( $this->mProperties, $existing );
@@ -362,7 +380,9 @@ class LinksUpdate {
function getLinkInsertions( $existing = array() ) {
$arr = array();
foreach( $this->mLinks as $ns => $dbkeys ) {
- $diffs = isset( $existing[$ns] ) ? array_diff_key( $dbkeys, $existing[$ns] ) : $dbkeys;
+ $diffs = isset( $existing[$ns] )
+ ? array_diff_key( $dbkeys, $existing[$ns] )
+ : $dbkeys;
foreach ( $diffs as $dbk => $id ) {
$arr[] = array(
'pl_from' => $this->mId,
@@ -418,11 +438,13 @@ class LinksUpdate {
$arr = array();
$diffs = array_diff_key( $this->mExternals, $existing );
foreach( $diffs as $url => $dummy ) {
- $arr[] = array(
- 'el_from' => $this->mId,
- 'el_to' => $url,
- 'el_index' => wfMakeUrlIndex( $url ),
- );
+ foreach( wfMakeUrlIndexes( $url ) as $index ) {
+ $arr[] = array(
+ 'el_from' => $this->mId,
+ 'el_to' => $url,
+ 'el_index' => $index,
+ );
+ }
}
return $arr;
}
@@ -749,7 +771,7 @@ class LinksUpdate {
function getTitle() {
return $this->mTitle;
}
-
+
/**
* Return the list of images used as generated by the parser
*/
diff --git a/includes/LocalisationCache.php b/includes/LocalisationCache.php
index 9ead21f1..6d5882d9 100644
--- a/includes/LocalisationCache.php
+++ b/includes/LocalisationCache.php
@@ -8,8 +8,8 @@ define( 'MW_LC_VERSION', 1 );
*
* An instance of this class is available using Language::getLocalisationCache().
*
- * The values retrieved from here are merged, containing items from extension
- * files, core messages files and the language fallback sequence (e.g. zh-cn ->
+ * The values retrieved from here are merged, containing items from extension
+ * files, core messages files and the language fallback sequence (e.g. zh-cn ->
* zh-hans -> en ). Some common errors are corrected, for example namespace
* names with spaces instead of underscores, but heavyweight processing, such
* as grammatical transformation, is done by the caller.
@@ -78,31 +78,24 @@ class LocalisationCache {
var $recachedLangs = array();
/**
- * Data added by extensions using the deprecated $wgMessageCache->addMessages()
- * interface.
- */
- var $legacyData = array();
-
- /**
* All item keys
*/
static public $allKeys = array(
- 'fallback', 'namespaceNames', 'mathNames', 'bookstoreList',
+ 'fallback', 'namespaceNames', 'bookstoreList',
'magicWords', 'messages', 'rtl', 'capitalizeAllNouns', 'digitTransformTable',
'separatorTransformTable', 'fallback8bitEncoding', 'linkPrefixExtension',
- 'defaultUserOptionOverrides', 'linkTrail', 'namespaceAliases',
+ 'linkTrail', 'namespaceAliases',
'dateFormats', 'datePreferences', 'datePreferenceMigrationMap',
'defaultDateFormat', 'extraUserToggles', 'specialPageAliases',
- 'imageFiles', 'preloadedMessages',
+ 'imageFiles', 'preloadedMessages', 'namespaceGenderAliases',
);
/**
* Keys for items which consist of associative arrays, which may be merged
* by a fallback sequence.
*/
- static public $mergeableMapKeys = array( 'messages', 'namespaceNames', 'mathNames',
- 'dateFormats', 'defaultUserOptionOverrides', 'imageFiles',
- 'preloadedMessages',
+ static public $mergeableMapKeys = array( 'messages', 'namespaceNames',
+ 'dateFormats', 'imageFiles', 'preloadedMessages',
);
/**
@@ -122,7 +115,7 @@ class LocalisationCache {
* key is removed after the first merge.
*/
static public $optionalMergeKeys = array( 'bookstoreList' );
-
+
/**
* Keys for items that are formatted like $magicWords
*/
@@ -136,13 +129,14 @@ class LocalisationCache {
/**
* Keys which are loaded automatically by initLanguage()
*/
- static public $preloadedKeys = array( 'dateFormats', 'namespaceNames',
- 'defaultUserOptionOverrides' );
+ static public $preloadedKeys = array( 'dateFormats', 'namespaceNames' );
/**
* Constructor.
- * For constructor parameters, see the documentation in DefaultSettings.php
+ * For constructor parameters, see the documentation in DefaultSettings.php
* for $wgLocalisationCacheConf.
+ *
+ * @param $conf Array
*/
function __construct( $conf ) {
global $wgCacheDirectory;
@@ -164,7 +158,7 @@ class LocalisationCache {
$storeClass = $wgCacheDirectory ? 'LCStore_CDB' : 'LCStore_DB';
break;
default:
- throw new MWException(
+ throw new MWException(
'Please set $wgLocalisationCacheConf[\'store\'] to something sensible.' );
}
}
@@ -221,11 +215,8 @@ class LocalisationCache {
* Get a subitem, for instance a single message for a given language.
*/
public function getSubitem( $code, $key, $subkey ) {
- if ( isset( $this->legacyData[$code][$key][$subkey] ) ) {
- return $this->legacyData[$code][$key][$subkey];
- }
- if ( !isset( $this->loadedSubitems[$code][$key][$subkey] )
- && !isset( $this->loadedItems[$code][$key] ) )
+ if ( !isset( $this->loadedSubitems[$code][$key][$subkey] )
+ && !isset( $this->loadedItems[$code][$key] ) )
{
wfProfileIn( __METHOD__.'-load' );
$this->loadSubitem( $code, $key, $subkey );
@@ -241,10 +232,10 @@ class LocalisationCache {
/**
* Get the list of subitem keys for a given item.
*
- * This is faster than array_keys($lc->getItem(...)) for the items listed in
+ * This is faster than array_keys($lc->getItem(...)) for the items listed in
* self::$splitKeys.
*
- * Will return null if the item is not found, or false if the item is not an
+ * Will return null if the item is not found, or false if the item is not an
* array.
*/
public function getSubitemList( $code, $key ) {
@@ -335,7 +326,7 @@ class LocalisationCache {
// anymore (e.g. uninstalled extensions)
// When this happens, always expire the cache
if ( !$dep instanceof CacheDependency || $dep->isExpired() ) {
- wfDebug( __METHOD__."($code): cache for $code expired due to " .
+ wfDebug( __METHOD__."($code): cache for $code expired due to " .
get_class( $dep ) . "\n" );
return true;
}
@@ -352,6 +343,12 @@ class LocalisationCache {
}
$this->initialisedLangs[$code] = true;
+ # If the code is of the wrong form for a Messages*.php file, do a shallow fallback
+ if ( !Language::isValidBuiltInCode( $code ) ) {
+ $this->initShallowFallback( $code, 'en' );
+ return;
+ }
+
# Recache the data if necessary
if ( !$this->manualRecache && $this->isExpired( $code ) ) {
if ( file_exists( Language::getMessagesFileName( $code ) ) ) {
@@ -370,7 +367,7 @@ class LocalisationCache {
if ( $this->manualRecache ) {
// No Messages*.php file. Do shallow fallback to en.
if ( $code === 'en' ) {
- throw new MWException( 'No localisation cache found for English. ' .
+ throw new MWException( 'No localisation cache found for English. ' .
'Please run maintenance/rebuildLocalisationCache.php.' );
}
$this->initShallowFallback( $code, 'en' );
@@ -392,7 +389,7 @@ class LocalisationCache {
}
/**
- * Create a fallback from one language to another, without creating a
+ * Create a fallback from one language to another, without creating a
* complete persistent cache.
*/
public function initShallowFallback( $primaryCode, $fallbackCode ) {
@@ -422,7 +419,7 @@ class LocalisationCache {
}
/**
- * Merge two localisation values, a primary and a fallback, overwriting the
+ * Merge two localisation values, a primary and a fallback, overwriting the
* primary value in place.
*/
protected function mergeItem( $key, &$value, $fallbackValue ) {
@@ -457,7 +454,7 @@ class LocalisationCache {
} else {
$oldSynonyms = array_slice( $fallbackInfo, 1 );
$newSynonyms = array_slice( $value[$magicName], 1 );
- $synonyms = array_values( array_unique( array_merge(
+ $synonyms = array_values( array_unique( array_merge(
$newSynonyms, $oldSynonyms ) ) );
$value[$magicName] = array_merge( array( $fallbackInfo[0] ), $synonyms );
}
@@ -469,7 +466,7 @@ class LocalisationCache {
* found in extension *.i18n.php files, iterate through a fallback sequence
* to merge the given data with an existing primary value.
*
- * Returns true if any data from the extension array was used, false
+ * Returns true if any data from the extension array was used, false
* otherwise.
*/
protected function mergeExtensionItem( $codeSequence, $key, &$value, $fallbackValue ) {
@@ -499,7 +496,7 @@ class LocalisationCache {
# Initial values
$initialData = array_combine(
- self::$allKeys,
+ self::$allKeys,
array_fill( 0, count( self::$allKeys ), null ) );
$coreData = $initialData;
$deps = array();
@@ -551,7 +548,7 @@ class LocalisationCache {
# Load the extension localisations
# This is done after the core because we know the fallback sequence now.
- # But it has a higher precedence for merging so that we can support things
+ # But it has a higher precedence for merging so that we can support things
# like site-specific message overrides.
$allData = $initialData;
foreach ( $wgExtensionMessagesFiles as $fileName ) {
@@ -602,11 +599,6 @@ class LocalisationCache {
}
# Decouple the reference to prevent accidental damage
unset($page);
-
- # Fix broken defaultUserOptionOverrides
- if ( !is_array( $allData['defaultUserOptionOverrides'] ) ) {
- $allData['defaultUserOptionOverrides'] = array();
- }
# Set the list keys
$allData['list'] = array();
@@ -617,8 +609,8 @@ class LocalisationCache {
# Run hooks
wfRunHooks( 'LocalisationCacheRecache', array( $this, $code, &$allData ) );
- if ( is_null( $allData['defaultUserOptionOverrides'] ) ) {
- throw new MWException( __METHOD__.': Localisation data failed sanity check! ' .
+ if ( is_null( $allData['namespaceNames'] ) ) {
+ throw new MWException( __METHOD__.': Localisation data failed sanity check! ' .
'Check that your languages/messages/MessagesEn.php file is intact.' );
}
@@ -643,7 +635,7 @@ class LocalisationCache {
}
}
$this->store->finishWrite();
-
+
# Clear out the MessageBlobStore
# HACK: If using a null (i.e. disabled) storage backend, we
# can't write to the MessageBlobStore either
@@ -677,7 +669,7 @@ class LocalisationCache {
}
/**
- * Unload the data for a given language from the object cache.
+ * Unload the data for a given language from the object cache.
* Reduces memory usage.
*/
public function unload( $code ) {
@@ -685,8 +677,6 @@ class LocalisationCache {
unset( $this->loadedItems[$code] );
unset( $this->loadedSubitems[$code] );
unset( $this->initialisedLangs[$code] );
- // We don't unload legacyData because there's no way to get it back
- // again, it's not really a cache
foreach ( $this->shallowFallbacks as $shallowCode => $fbCode ) {
if ( $fbCode === $code ) {
$this->unload( $shallowCode );
@@ -704,22 +694,6 @@ class LocalisationCache {
}
/**
- * Add messages to the cache, from an extension that has not yet been
- * migrated to $wgExtensionMessages or the LocalisationCacheRecache hook.
- * Called by deprecated function $wgMessageCache->addMessages().
- */
- public function addLegacyMessages( $messages ) {
- foreach ( $messages as $lang => $langMessages ) {
- if ( isset( $this->legacyData[$lang]['messages'] ) ) {
- $this->legacyData[$lang]['messages'] =
- $langMessages + $this->legacyData[$lang]['messages'];
- } else {
- $this->legacyData[$lang]['messages'] = $langMessages;
- }
- }
- }
-
- /**
* Disable the storage backend
*/
public function disableBackend() {
@@ -734,15 +708,15 @@ class LocalisationCache {
* The persistence layer is two-level hierarchical cache. The first level
* is the language, the second level is the item or subitem.
*
- * Since the data for a whole language is rebuilt in one operation, it needs
- * to have a fast and atomic method for deleting or replacing all of the
+ * Since the data for a whole language is rebuilt in one operation, it needs
+ * to have a fast and atomic method for deleting or replacing all of the
* current data for a given language. The interface reflects this bulk update
- * operation. Callers writing to the cache must first call startWrite(), then
- * will call set() a couple of thousand times, then will call finishWrite()
- * to commit the operation. When finishWrite() is called, the cache is
+ * operation. Callers writing to the cache must first call startWrite(), then
+ * will call set() a couple of thousand times, then will call finishWrite()
+ * to commit the operation. When finishWrite() is called, the cache is
* expected to delete all data previously stored for that language.
*
- * The values stored are PHP variables suitable for serialize(). Implementations
+ * The values stored are PHP variables suitable for serialize(). Implementations
* of LCStore are responsible for serializing and unserializing.
*/
interface LCStore {
@@ -751,29 +725,29 @@ interface LCStore {
* @param $code Language code
* @param $key Cache key
*/
- public function get( $code, $key );
+ function get( $code, $key );
/**
* Start a write transaction.
* @param $code Language code
*/
- public function startWrite( $code );
+ function startWrite( $code );
/**
* Finish a write transaction.
*/
- public function finishWrite();
+ function finishWrite();
/**
* Set a key to a given value. startWrite() must be called before this
* is called, and finishWrite() must be called afterwards.
*/
- public function set( $key, $value );
+ function set( $key, $value );
}
/**
- * LCStore implementation which uses the standard DB functions to store data.
+ * LCStore implementation which uses the standard DB functions to store data.
* This will work on any MediaWiki installation.
*/
class LCStore_DB implements LCStore {
@@ -859,9 +833,9 @@ class LCStore_DB implements LCStore {
* directory given by $wgCacheDirectory. If $wgCacheDirectory is not set, this
* will throw an exception.
*
- * Profiling indicates that on Linux, this implementation outperforms MySQL if
- * the directory is on a local filesystem and there is ample kernel cache
- * space. The performance advantage is greater when the DBA extension is
+ * Profiling indicates that on Linux, this implementation outperforms MySQL if
+ * the directory is on a local filesystem and there is ample kernel cache
+ * space. The performance advantage is greater when the DBA extension is
* available than it is with the PHP port.
*
* See Cdb.php and http://cr.yp.to/cdb.html
@@ -901,7 +875,7 @@ class LCStore_CDB implements LCStore {
public function startWrite( $code ) {
if ( !file_exists( $this->directory ) ) {
if ( !wfMkdirParents( $this->directory ) ) {
- throw new MWException( "Unable to create the localisation store " .
+ throw new MWException( "Unable to create the localisation store " .
"directory \"{$this->directory}\"" );
}
}
@@ -950,7 +924,7 @@ class LCStore_Null implements LCStore {
}
/**
- * A localisation cache optimised for loading large amounts of data for many
+ * A localisation cache optimised for loading large amounts of data for many
* languages. Used by rebuildLocalisationCache.php.
*/
class LocalisationCache_BulkLoad extends LocalisationCache {
@@ -962,7 +936,7 @@ class LocalisationCache_BulkLoad extends LocalisationCache {
/**
* Most recently used languages. Uses the linked-list aspect of PHP hashtables
- * to keep the most recently used language codes at the end of the array, and
+ * to keep the most recently used language codes at the end of the array, and
* the language codes that are ready to be deleted at the beginning.
*/
var $mruLangs = array();
diff --git a/includes/LogEventsList.php b/includes/LogEventsList.php
index 128500c5..744a60ce 100644
--- a/includes/LogEventsList.php
+++ b/includes/LogEventsList.php
@@ -27,10 +27,27 @@ class LogEventsList {
const NO_ACTION_LINK = 1;
const NO_EXTRA_USER_LINKS = 2;
+ /**
+ * @var Skin
+ */
private $skin;
+
+ /**
+ * @var OutputPage
+ */
private $out;
public $flags;
+ /**
+ * @var Array
+ */
+ protected $message;
+
+ /**
+ * @var Array
+ */
+ protected $mDefaultQuery;
+
public function __construct( $skin, $out, $flags = 0 ) {
$this->skin = $skin;
$this->out = $out;
@@ -81,9 +98,8 @@ class LogEventsList {
* @param $filter: array
* @param $tagFilter: array?
*/
- public function showOptions( $types=array(), $user='', $page='', $pattern='', $year='',
- $month = '', $filter = null, $tagFilter='' )
- {
+ public function showOptions( $types=array(), $user='', $page='', $pattern='', $year='',
+ $month = '', $filter = null, $tagFilter='' ) {
global $wgScript, $wgMiserMode;
$action = $wgScript;
@@ -138,7 +154,7 @@ class LogEventsList {
* @return String: Formatted HTML
*/
private function getFilterLinks( $filter ) {
- global $wgTitle, $wgLang;
+ global $wgLang;
// show/hide links
$messages = array( wfMsgHtml( 'show' ), wfMsgHtml( 'hide' ) );
// Option value -> message mapping
@@ -153,8 +169,8 @@ class LogEventsList {
$hideVal = 1 - intval($val);
$query[$queryKey] = $hideVal;
- $link = $this->skin->link(
- $wgTitle,
+ $link = Linker::link(
+ $this->getDisplayTitle(),
$messages[$hideVal],
array(),
$query,
@@ -169,8 +185,10 @@ class LogEventsList {
}
private function getDefaultQuery() {
+ global $wgRequest;
+
if ( !isset( $this->mDefaultQuery ) ) {
- $this->mDefaultQuery = $_GET;
+ $this->mDefaultQuery = $wgRequest->getQueryValues();
unset( $this->mDefaultQuery['title'] );
unset( $this->mDefaultQuery['dir'] );
unset( $this->mDefaultQuery['offset'] );
@@ -183,6 +201,16 @@ class LogEventsList {
}
/**
+ * Get the Title object of the page the links should point to.
+ * This is NOT the Title of the page the entries should be restricted to.
+ *
+ * @return Title object
+ */
+ public function getDisplayTitle() {
+ return $this->out->getTitle();
+ }
+
+ /**
* @param $queryTypes Array
* @return String: Formatted HTML
*/
@@ -312,7 +340,7 @@ class LogEventsList {
return Xml::tags( 'li', array( "class" => implode( ' ', $classes ) ),
$del . "$time $userLink $action $comment $revert $tagDisplay" ) . "\n";
}
-
+
private function logTimestamp( $row ) {
global $wgLang;
$time = $wgLang->timeanddate( wfTimestamp( TS_MW, $row->log_timestamp ), true );
@@ -324,10 +352,10 @@ class LogEventsList {
$userLinks = '<span class="history-deleted">' .
wfMsgHtml( 'rev-deleted-user' ) . '</span>';
} else {
- $userLinks = $this->skin->userLink( $row->log_user, $row->user_name );
+ $userLinks = Linker::userLink( $row->log_user, $row->user_name );
// Talk|Contribs links...
if( !( $this->flags & self::NO_EXTRA_USER_LINKS ) ) {
- $userLinks .= $this->skin->userToolLinks(
+ $userLinks .= Linker::userToolLinks(
$row->log_user, $row->user_name, true, 0, $row->user_editcount );
}
}
@@ -344,20 +372,28 @@ class LogEventsList {
}
return $action;
}
-
+
private function logComment( $row ) {
- global $wgContLang;
if( self::isDeleted( $row, LogPage::DELETED_COMMENT ) ) {
$comment = '<span class="history-deleted">' .
wfMsgHtml( 'rev-deleted-comment' ) . '</span>';
} else {
- $comment = $wgContLang->getDirMark() .
- $this->skin->commentBlock( $row->log_comment );
+ global $wgLang;
+ $comment = $wgLang->getDirMark() .
+ Linker::commentBlock( $row->log_comment );
}
return $comment;
}
- // @TODO: split up!
+ /**
+ * @TODO: split up!
+ *
+ * @param $row
+ * @param Title $title
+ * @param Array $paramArray
+ * @param $comment
+ * @return String
+ */
private function logActionLinks( $row, $title, $paramArray, &$comment ) {
global $wgUser;
if( ( $this->flags & self::NO_ACTION_LINK ) // we don't want to see the action
@@ -369,7 +405,7 @@ class LogEventsList {
if( self::typeAction( $row, 'move', 'move', 'move' ) && !empty( $paramArray[0] ) ) {
$destTitle = Title::newFromText( $paramArray[0] );
if( $destTitle ) {
- $revert = '(' . $this->skin->link(
+ $revert = '(' . Linker::link(
SpecialPage::getTitleFor( 'Movepage' ),
$this->message['revertmove'],
array(),
@@ -383,13 +419,13 @@ class LogEventsList {
) . ')';
}
// Show undelete link
- } else if( self::typeAction( $row, array( 'delete', 'suppress' ), 'delete', 'deletedhistory' ) ) {
+ } elseif( self::typeAction( $row, array( 'delete', 'suppress' ), 'delete', 'deletedhistory' ) ) {
if( !$wgUser->isAllowed( 'undelete' ) ) {
$viewdeleted = $this->message['undeleteviewlink'];
} else {
$viewdeleted = $this->message['undeletelink'];
}
- $revert = '(' . $this->skin->link(
+ $revert = '(' . Linker::link(
SpecialPage::getTitleFor( 'Undelete' ),
$viewdeleted,
array(),
@@ -397,21 +433,18 @@ class LogEventsList {
array( 'known', 'noclasses' )
) . ')';
// Show unblock/change block link
- } else if( self::typeAction( $row, array( 'block', 'suppress' ), array( 'block', 'reblock' ), 'block' ) ) {
+ } elseif( self::typeAction( $row, array( 'block', 'suppress' ), array( 'block', 'reblock' ), 'block' ) ) {
$revert = '(' .
- $this->skin->link(
- SpecialPage::getTitleFor( 'Ipblocklist' ),
+ Linker::link(
+ SpecialPage::getTitleFor( 'Unblock', $row->log_title ),
$this->message['unblocklink'],
array(),
- array(
- 'action' => 'unblock',
- 'ip' => $row->log_title
- ),
+ array(),
'known'
) .
$this->message['pipe-separator'] .
- $this->skin->link(
- SpecialPage::getTitleFor( 'Blockip', $row->log_title ),
+ Linker::link(
+ SpecialPage::getTitleFor( 'Block', $row->log_title ),
$this->message['change-blocklink'],
array(),
array(),
@@ -419,9 +452,9 @@ class LogEventsList {
) .
')';
// Show change protection link
- } else if( self::typeAction( $row, 'protect', array( 'modify', 'protect', 'unprotect' ) ) ) {
+ } elseif( self::typeAction( $row, 'protect', array( 'modify', 'protect', 'unprotect' ) ) ) {
$revert .= ' (' .
- $this->skin->link( $title,
+ Linker::link( $title,
$this->message['hist'],
array(),
array(
@@ -431,7 +464,7 @@ class LogEventsList {
);
if( $wgUser->isAllowed( 'protect' ) ) {
$revert .= $this->message['pipe-separator'] .
- $this->skin->link( $title,
+ Linker::link( $title,
$this->message['protect_change'],
array(),
array( 'action' => 'protect' ),
@@ -439,8 +472,8 @@ class LogEventsList {
}
$revert .= ')';
// Show unmerge link
- } else if( self::typeAction( $row, 'merge', 'merge', 'mergehistory' ) ) {
- $revert = '(' . $this->skin->link(
+ } elseif( self::typeAction( $row, 'merge', 'merge', 'mergehistory' ) ) {
+ $revert = '(' . Linker::link(
SpecialPage::getTitleFor( 'MergeHistory' ),
$this->message['revertmerge'],
array(),
@@ -452,19 +485,19 @@ class LogEventsList {
array( 'known', 'noclasses' )
) . ')';
// If an edit was hidden from a page give a review link to the history
- } else if( self::typeAction( $row, array( 'delete', 'suppress' ), 'revision', 'deletedhistory' ) ) {
+ } elseif( self::typeAction( $row, array( 'delete', 'suppress' ), 'revision', 'deletedhistory' ) ) {
$revert = RevisionDeleter::getLogLinks( $title, $paramArray,
$this->skin, $this->message );
// Hidden log items, give review link
- } else if( self::typeAction( $row, array( 'delete', 'suppress' ), 'event', 'deletedhistory' ) ) {
+ } elseif( self::typeAction( $row, array( 'delete', 'suppress' ), 'event', 'deletedhistory' ) ) {
if( count($paramArray) >= 1 ) {
$revdel = SpecialPage::getTitleFor( 'Revisiondelete' );
// $paramArray[1] is a CSV of the IDs
$query = $paramArray[0];
// Link to each hidden object ID, $paramArray[1] is the url param
- $revert = '(' . $this->skin->link(
+ $revert = '(' . Linker::link(
$revdel,
- $this->message['revdel-restore'],
+ $this->message['revdel-restore'],
array(),
array(
'target' => $title->getPrefixedText(),
@@ -475,12 +508,12 @@ class LogEventsList {
) . ')';
}
// Self-created users
- } else if( self::typeAction( $row, 'newusers', 'create2' ) ) {
+ } elseif( self::typeAction( $row, 'newusers', 'create2' ) ) {
if( isset( $paramArray[0] ) ) {
- $revert = $this->skin->userToolLinks( $paramArray[0], $title->getDBkey(), true );
+ $revert = Linker::userToolLinks( $paramArray[0], $title->getDBkey(), true );
} else {
# Fall back to a blue contributions link
- $revert = $this->skin->userToolLinks( 1, $title->getDBkey() );
+ $revert = Linker::userToolLinks( 1, $title->getDBkey() );
}
if( wfTimestamp( TS_MW, $row->log_timestamp ) < '20080129000000' ) {
# Suppress $comment from old entries (before 2008-01-29),
@@ -505,8 +538,7 @@ class LogEventsList {
private function getShowHideLinks( $row ) {
global $wgUser;
if( ( $this->flags & self::NO_ACTION_LINK ) // we don't want to see the links
- || $row->log_type == 'suppress' ) // no one can hide items from the suppress log
- {
+ || $row->log_type == 'suppress' ) { // no one can hide items from the suppress log
return '';
}
$del = '';
@@ -516,7 +548,7 @@ class LogEventsList {
$canHide = $wgUser->isAllowed( 'deleterevision' );
// If event was hidden from sysops
if( !self::userCan( $row, LogPage::DELETED_RESTRICTED ) ) {
- $del = $this->skin->revDeleteLinkDisabled( $canHide );
+ $del = Linker::revDeleteLinkDisabled( $canHide );
} else {
$target = SpecialPage::getTitleFor( 'Log', $row->log_type );
$query = array(
@@ -524,7 +556,7 @@ class LogEventsList {
'type' => 'logging',
'ids' => $row->log_id,
);
- $del = $this->skin->revDeleteLink( $query,
+ $del = Linker::revDeleteLink( $query,
self::isDeleted( $row, LogPage::DELETED_RESTRICTED ), $canHide );
}
}
@@ -601,7 +633,7 @@ class LogEventsList {
/**
* Show log extract. Either with text and a box (set $msgKey) or without (don't set $msgKey)
*
- * @param $out OutputPage or String-by-reference
+ * @param $out OutputPage|String-by-reference
* @param $types String or Array
* @param $page String The page title to show log entries for
* @param $user String The user who made the log entries
@@ -684,7 +716,7 @@ class LogEventsList {
# If there is exactly one log type, we can link to Special:Log?type=foo
if ( count( $types ) == 1 )
$urlParam['type'] = $types[0];
- $s .= $wgUser->getSkin()->link(
+ $s .= Linker::link(
SpecialPage::getTitleFor( 'Log' ),
wfMsgHtml( 'log-fulllog' ),
array(),
@@ -757,8 +789,7 @@ class LogPager extends ReverseChronologicalPager {
* @param $tagFilter String: tag
*/
public function __construct( $list, $types = array(), $user = '', $title = '', $pattern = '',
- $conds = array(), $year = false, $month = false, $tagFilter = '' )
- {
+ $conds = array(), $year = false, $month = false, $tagFilter = '' ) {
parent::__construct();
$this->mConds = $conds;
@@ -780,6 +811,10 @@ class LogPager extends ReverseChronologicalPager {
return $query;
}
+ function getTitle() {
+ return $this->mLogEventsList->getDisplayTitle();
+ }
+
// Call ONLY after calling $this->limitType() already!
public function getFilterParams() {
global $wgFilterLogTypes, $wgUser, $wgRequest;
@@ -858,7 +893,7 @@ class LogPager extends ReverseChronologicalPager {
// Paranoia: avoid brute force searches (bug 17342)
if( !$wgUser->isAllowed( 'deletedhistory' ) ) {
$this->mConds[] = $this->mDb->bitAnd('log_deleted', LogPage::DELETED_USER) . ' = 0';
- } else if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
+ } elseif( !$wgUser->isAllowed( 'suppressrevision' ) ) {
$this->mConds[] = $this->mDb->bitAnd('log_deleted', LogPage::SUPPRESSED_USER) .
' != ' . LogPage::SUPPRESSED_USER;
}
@@ -877,8 +912,9 @@ class LogPager extends ReverseChronologicalPager {
global $wgMiserMode, $wgUser;
$title = Title::newFromText( $page );
- if( strlen( $page ) == 0 || !$title instanceof Title )
+ if( strlen( $page ) == 0 || !$title instanceof Title ) {
return false;
+ }
$this->title = $title->getPrefixedText();
$ns = $title->getNamespace();
@@ -906,7 +942,7 @@ class LogPager extends ReverseChronologicalPager {
// Paranoia: avoid brute force searches (bug 17342)
if( !$wgUser->isAllowed( 'deletedhistory' ) ) {
$this->mConds[] = $db->bitAnd('log_deleted', LogPage::DELETED_ACTION) . ' = 0';
- } else if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
+ } elseif( !$wgUser->isAllowed( 'suppressrevision' ) ) {
$this->mConds[] = $db->bitAnd('log_deleted', LogPage::SUPPRESSED_ACTION) .
' != ' . LogPage::SUPPRESSED_ACTION;
}
@@ -917,21 +953,30 @@ class LogPager extends ReverseChronologicalPager {
$this->mConds[] = 'user_id = log_user';
$index = array();
$options = array();
- # Add log_search table if there are conditions on it
- if( array_key_exists('ls_field',$this->mConds) ) {
+ # Add log_search table if there are conditions on it.
+ # This filters the results to only include log rows that have
+ # log_search records with the specified ls_field and ls_value values.
+ if( array_key_exists( 'ls_field', $this->mConds ) ) {
$tables[] = 'log_search';
$index['log_search'] = 'ls_field_val';
$index['logging'] = 'PRIMARY';
- $options[] = 'DISTINCT';
+ if ( !$this->hasEqualsClause( 'ls_field' )
+ || !$this->hasEqualsClause( 'ls_value' ) )
+ {
+ # Since (ls_field,ls_value,ls_logid) is unique, if the condition is
+ # to match a specific (ls_field,ls_value) tuple, then there will be
+ # no duplicate log rows. Otherwise, we need to remove the duplicates.
+ $options[] = 'DISTINCT';
+ }
# Avoid usage of the wrong index by limiting
# the choices of available indexes. This mainly
# avoids site-breaking filesorts.
- } else if( $this->title || $this->pattern || $this->user ) {
+ } elseif( $this->title || $this->pattern || $this->user ) {
$index['logging'] = array( 'page_time', 'user_time' );
if( count($this->types) == 1 ) {
$index['logging'][] = 'log_user_type_time';
}
- } else if( count($this->types) == 1 ) {
+ } elseif( count($this->types) == 1 ) {
$index['logging'] = 'type_time';
} else {
$index['logging'] = 'times';
@@ -946,7 +991,7 @@ class LogPager extends ReverseChronologicalPager {
'conds' => $this->mConds,
'options' => $options,
'join_conds' => array(
- 'user' => array( 'INNER JOIN', 'user_id=log_user' ),
+ 'user' => array( 'INNER JOIN', 'user_id=log_user' ),
'log_search' => array( 'INNER JOIN', 'ls_log_id=log_id' )
)
);
@@ -956,6 +1001,14 @@ class LogPager extends ReverseChronologicalPager {
return $info;
}
+ // Checks if $this->mConds has $field matched to a *single* value
+ protected function hasEqualsClause( $field ) {
+ return (
+ array_key_exists( $field, $this->mConds ) &&
+ ( !is_array( $this->mConds[$field] ) || count( $this->mConds[$field] ) == 1 )
+ );
+ }
+
function getIndexField() {
return 'log_timestamp';
}
@@ -1017,115 +1070,3 @@ class LogPager extends ReverseChronologicalPager {
}
}
-/**
- * @deprecated
- * @ingroup SpecialPage
- */
-class LogReader {
- var $pager;
-
- /**
- * @param $request WebRequest: for internal use use a FauxRequest object to pass arbitrary parameters.
- */
- function __construct( $request ) {
- global $wgUser, $wgOut;
- wfDeprecated(__METHOD__);
- # Get parameters
- $type = $request->getVal( 'type' );
- $user = $request->getText( 'user' );
- $title = $request->getText( 'page' );
- $pattern = $request->getBool( 'pattern' );
- $year = $request->getIntOrNull( 'year' );
- $month = $request->getIntOrNull( 'month' );
- $tagFilter = $request->getVal( 'tagfilter' );
- # Don't let the user get stuck with a certain date
- $skip = $request->getText( 'offset' ) || $request->getText( 'dir' ) == 'prev';
- if( $skip ) {
- $year = '';
- $month = '';
- }
- # Use new list class to output results
- $loglist = new LogEventsList( $wgUser->getSkin(), $wgOut, 0 );
- $this->pager = new LogPager( $loglist, $type, $user, $title, $pattern, $year, $month, $tagFilter );
- }
-
- /**
- * Is there at least one row?
- * @return bool
- */
- public function hasRows() {
- return isset($this->pager) ? ($this->pager->getNumRows() > 0) : false;
- }
-}
-
-/**
- * @deprecated
- * @ingroup SpecialPage
- */
-class LogViewer {
- const NO_ACTION_LINK = 1;
-
- /**
- * LogReader object
- */
- var $reader;
-
- /**
- * @param &$reader LogReader: where to get our data from
- * @param $flags Integer: Bitwise combination of flags:
- * LogEventsList::NO_ACTION_LINK Don't show restore/unblock/block links
- */
- function __construct( &$reader, $flags = 0 ) {
- wfDeprecated(__METHOD__);
- $this->reader =& $reader;
- $this->reader->pager->mLogEventsList->flags = $flags;
- # Aliases for shorter code...
- $this->pager =& $this->reader->pager;
- $this->list =& $this->reader->pager->mLogEventsList;
- }
-
- /**
- * Take over the whole output page in $wgOut with the log display.
- */
- public function show() {
- global $wgOut;
- # Set title and add header
- $this->list->showHeader( $this->pager->getType() );
- # Show form options
- $this->list->showOptions( $this->pager->getType(), $this->pager->getUser(), $this->pager->getPage(),
- $this->pager->getPattern(), $this->pager->getYear(), $this->pager->getMonth() );
- # Insert list
- $logBody = $this->pager->getBody();
- if( $logBody ) {
- $wgOut->addHTML(
- $this->pager->getNavigationBar() .
- $this->list->beginLogEventsList() .
- $logBody .
- $this->list->endLogEventsList() .
- $this->pager->getNavigationBar()
- );
- } else {
- $wgOut->addWikiMsg( 'logempty' );
- }
- }
-
- /**
- * Output just the list of entries given by the linked LogReader,
- * with extraneous UI elements. Use for displaying log fragments in
- * another page (eg at Special:Undelete)
- *
- * @param $out OutputPage: where to send output
- */
- public function showList( &$out ) {
- $logBody = $this->pager->getBody();
- if( $logBody ) {
- $out->addHTML(
- $this->list->beginLogEventsList() .
- $logBody .
- $this->list->endLogEventsList()
- );
- } else {
- $out->addWikiMsg( 'logempty' );
- }
- }
-}
diff --git a/includes/LogPage.php b/includes/LogPage.php
index 8bd08dc4..5155d9a5 100644
--- a/includes/LogPage.php
+++ b/includes/LogPage.php
@@ -38,7 +38,18 @@ class LogPage {
const SUPPRESSED_USER = 12;
const SUPPRESSED_ACTION = 9;
/* @access private */
- var $type, $action, $comment, $params, $target, $doer;
+ var $type, $action, $comment, $params;
+
+ /**
+ * @var User
+ */
+ var $doer;
+
+ /**
+ * @var Title
+ */
+ var $target;
+
/* @acess public */
var $updateRecentChanges, $sendToUDP;
@@ -56,6 +67,9 @@ class LogPage {
$this->sendToUDP = ( $udp == 'UDP' );
}
+ /**
+ * @return bool|int|null
+ */
protected function saveContent() {
global $wgLogRestrictions;
@@ -193,26 +207,32 @@ class LogPage {
{
global $wgLang, $wgContLang, $wgLogActions;
+ if ( is_null( $skin ) ) {
+ $langObj = $wgContLang;
+ $langObjOrNull = null;
+ } else {
+ $langObj = $wgLang;
+ $langObjOrNull = $wgLang;
+ }
+
$key = "$type/$action";
# Defer patrol log to PatrolLog class
if( $key == 'patrol/patrol' ) {
- return PatrolLog::makeActionText( $title, $params, $skin );
+ return PatrolLog::makeActionText( $title, $params, $langObjOrNull );
}
if( isset( $wgLogActions[$key] ) ) {
if( is_null( $title ) ) {
- $rv = wfMsgHtml( $wgLogActions[$key] );
+ $rv = wfMsgExt( $wgLogActions[$key], array( 'parsemag', 'escape', 'language' => $langObj ) );
} else {
- $titleLink = self::getTitleLink( $type, $skin, $title, $params );
- if( $key == 'rights/rights' ) {
+ $titleLink = self::getTitleLink( $type, $langObjOrNull, $title, $params );
+ if( preg_match( '/^rights\/(rights|autopromote)/', $key ) ) {
+ $rightsnone = wfMsgExt( 'rightsnone', array( 'parsemag', 'language' => $langObj ) );
if( $skin ) {
- $rightsnone = wfMsg( 'rightsnone' );
foreach ( $params as &$param ) {
$groupArray = array_map( 'trim', explode( ',', $param ) );
$groupArray = array_map( array( 'User', 'getGroupMember' ), $groupArray );
$param = $wgLang->listToText( $groupArray );
}
- } else {
- $rightsnone = wfMsgForContent( 'rightsnone' );
}
if( !isset( $params[0] ) || trim( $params[0] ) == '' ) {
$params[0] = $rightsnone;
@@ -222,11 +242,7 @@ class LogPage {
}
}
if( count( $params ) == 0 ) {
- if ( $skin ) {
- $rv = wfMsgHtml( $wgLogActions[$key], $titleLink );
- } else {
- $rv = wfMsgExt( $wgLogActions[$key], array( 'parsemag', 'escape', 'replaceafter', 'content' ), $titleLink );
- }
+ $rv = wfMsgExt( $wgLogActions[$key], array( 'parsemag', 'escape', 'replaceafter', 'language' => $langObj ), $titleLink );
} else {
$details = '';
array_unshift( $params, $titleLink );
@@ -239,33 +255,25 @@ class LogPage {
$params[1] = $wgContLang->translateBlockExpiry( $params[1] );
}
$params[2] = isset( $params[2] ) ?
- self::formatBlockFlags( $params[2], is_null( $skin ) ) : '';
+ self::formatBlockFlags( $params[2], $langObj ) : '';
// Page protections
} elseif ( $type == 'protect' && count($params) == 3 ) {
// Restrictions and expiries
if( $skin ) {
- $details .= htmlspecialchars( " {$params[1]}" );
+ $details .= $wgLang->getDirMark() . htmlspecialchars( " {$params[1]}" );
} else {
$details .= " {$params[1]}";
}
// Cascading flag...
if( $params[2] ) {
- if ( $skin ) {
- $details .= ' [' . wfMsg( 'protect-summary-cascade' ) . ']';
- } else {
- $details .= ' [' . wfMsgForContent( 'protect-summary-cascade' ) . ']';
- }
+ $details .= ' [' . wfMsgExt( 'protect-summary-cascade', array( 'parsemag', 'language' => $langObj ) ) . ']';
}
// Page moves
} elseif ( $type == 'move' && count( $params ) == 3 ) {
if( $params[2] ) {
- if ( $skin ) {
- $details .= ' [' . wfMsg( 'move-redirect-suppressed' ) . ']';
- } else {
- $details .= ' [' . wfMsgForContent( 'move-redirect-suppressed' ) . ']';
- }
+ $details .= ' [' . wfMsgExt( 'move-redirect-suppressed', array( 'parsemag', 'language' => $langObj ) ) . ']';
}
// Revision deletion
@@ -273,21 +281,17 @@ class LogPage {
$count = substr_count( $params[2], ',' ) + 1; // revisions
$ofield = intval( substr( $params[3], 7 ) ); // <ofield=x>
$nfield = intval( substr( $params[4], 7 ) ); // <nfield=x>
- $details .= ': ' . RevisionDeleter::getLogMessage( $count, $nfield, $ofield, false, is_null( $skin ) );
+ $details .= ': ' . RevisionDeleter::getLogMessage( $count, $nfield, $ofield, $langObj, false );
// Log deletion
} elseif ( preg_match( '/^(delete|suppress)\/event$/', $key ) && count( $params ) == 4 ) {
$count = substr_count( $params[1], ',' ) + 1; // log items
$ofield = intval( substr( $params[2], 7 ) ); // <ofield=x>
$nfield = intval( substr( $params[3], 7 ) ); // <nfield=x>
- $details .= ': ' . RevisionDeleter::getLogMessage( $count, $nfield, $ofield, true, is_null( $skin ) );
+ $details .= ': ' . RevisionDeleter::getLogMessage( $count, $nfield, $ofield, $langObj, true );
}
- if ( $skin ) {
- $rv = wfMsgHtml( $wgLogActions[$key], $params ) . $details;
- } else {
- $rv = wfMsgExt( $wgLogActions[$key], array( 'parsemag', 'escape', 'replaceafter', 'content' ), $params ) . $details;
- }
+ $rv = wfMsgExt( $wgLogActions[$key], array( 'parsemag', 'escape', 'replaceafter', 'language' => $langObj ), $params ) . $details;
}
}
} else {
@@ -318,14 +322,22 @@ class LogPage {
return $rv;
}
- protected static function getTitleLink( $type, $skin, $title, &$params ) {
- global $wgLang, $wgContLang, $wgUserrightsInterwikiDelimiter;
- if( !$skin ) {
+ /**
+ * TODO document
+ * @param $type String
+ * @param $lang Language or null
+ * @param $title Title
+ * @param $params Array
+ * @return String
+ */
+ protected static function getTitleLink( $type, $lang, $title, &$params ) {
+ global $wgContLang, $wgUserrightsInterwikiDelimiter;
+ if( !$lang ) {
return $title->getPrefixedText();
}
switch( $type ) {
case 'move':
- $titleLink = $skin->link(
+ $titleLink = Linker::link(
$title,
htmlspecialchars( $title->getPrefixedText() ),
array(),
@@ -336,7 +348,7 @@ class LogPage {
# Workaround for broken database
$params[0] = htmlspecialchars( $params[0] );
} else {
- $params[0] = $skin->link(
+ $params[0] = Linker::link(
$targetTitle,
htmlspecialchars( $params[0] )
);
@@ -349,8 +361,8 @@ class LogPage {
// TODO: Store the user identifier in the parameters
// to make this faster for future log entries
$id = User::idFromName( $title->getText() );
- $titleLink = $skin->userLink( $id, $title->getText() )
- . $skin->userToolLinks( $id, $title->getText(), false, Linker::TOOL_LINKS_NOBLOCK );
+ $titleLink = Linker::userLink( $id, $title->getText() )
+ . Linker::userToolLinks( $id, $title->getText(), false, Linker::TOOL_LINKS_NOBLOCK );
}
break;
case 'rights':
@@ -363,32 +375,32 @@ class LogPage {
break;
}
}
- $titleLink = $skin->link( Title::makeTitle( NS_USER, $text ) );
+ $titleLink = Linker::link( Title::makeTitle( NS_USER, $text ) );
break;
case 'merge':
- $titleLink = $skin->link(
+ $titleLink = Linker::link(
$title,
$title->getPrefixedText(),
array(),
array( 'redirect' => 'no' )
);
- $params[0] = $skin->link(
+ $params[0] = Linker::link(
Title::newFromText( $params[0] ),
htmlspecialchars( $params[0] )
);
- $params[1] = $wgLang->timeanddate( $params[1] );
+ $params[1] = $lang->timeanddate( $params[1] );
break;
default:
if( $title->getNamespace() == NS_SPECIAL ) {
- list( $name, $par ) = SpecialPage::resolveAliasWithSubpage( $title->getDBkey() );
+ list( $name, $par ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
# Use the language name for log titles, rather than Log/X
if( $name == 'Log' ) {
- $titleLink = '(' . $skin->link( $title, LogPage::logName( $par ) ) . ')';
+ $titleLink = '(' . Linker::link( $title, LogPage::logName( $par ) ) . ')';
} else {
- $titleLink = $skin->link( $title );
+ $titleLink = Linker::link( $title );
}
} else {
- $titleLink = $skin->link( $title );
+ $titleLink = Linker::link( $title );
}
}
return $titleLink;
@@ -485,19 +497,16 @@ class LogPage {
* into a more readable (and translated) form
*
* @param $flags Flags to format
- * @param $forContent Whether to localize the message depending of the user
- * language
+ * @param $lang Language object to use
* @return String
*/
- public static function formatBlockFlags( $flags, $forContent = false ) {
- global $wgLang;
-
+ public static function formatBlockFlags( $flags, $lang ) {
$flags = explode( ',', trim( $flags ) );
if( count( $flags ) > 0 ) {
for( $i = 0; $i < count( $flags ); $i++ ) {
- $flags[$i] = self::formatBlockFlag( $flags[$i], $forContent );
+ $flags[$i] = self::formatBlockFlag( $flags[$i], $lang );
}
- return '(' . $wgLang->commaList( $flags ) . ')';
+ return '(' . $lang->commaList( $flags ) . ')';
} else {
return '';
}
@@ -506,21 +515,19 @@ class LogPage {
/**
* Translate a block log flag if possible
*
- * @param $flag Flag to translate
- * @param $forContent Whether to localize the message depending of the user
- * language
+ * @param $flag int Flag to translate
+ * @param $lang Language object to use
* @return String
*/
- public static function formatBlockFlag( $flag, $forContent = false ) {
+ public static function formatBlockFlag( $flag, $lang ) {
static $messages = array();
if( !isset( $messages[$flag] ) ) {
- $k = 'block-log-flags-' . $flag;
- if( $forContent ) {
- $msg = wfMsgForContent( $k );
- } else {
- $msg = wfMsg( $k );
+ $messages[$flag] = htmlspecialchars( $flag ); // Fallback
+
+ $msg = wfMessage( 'block-log-flags-' . $flag )->inLanguage( $lang );
+ if ( $msg->exists() ) {
+ $messages[$flag] = $msg->escaped();
}
- $messages[$flag] = htmlspecialchars( wfEmptyMsg( $k, $msg ) ? $flag : $msg );
}
return $messages[$flag];
}
diff --git a/includes/MWFunction.php b/includes/MWFunction.php
new file mode 100644
index 00000000..53ce446e
--- /dev/null
+++ b/includes/MWFunction.php
@@ -0,0 +1,64 @@
+<?php
+
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ */
+
+class MWFunction {
+
+ protected static function cleanCallback( $callback ) {
+ if( is_string( $callback ) ) {
+ if ( strpos( $callback, '::' ) !== false ) {
+ // PHP 5.1 cannot use call_user_func( 'Class::Method' )
+ // It can only handle only call_user_func( array( 'Class', 'Method' ) )
+ $callback = explode( '::', $callback, 2);
+ }
+ }
+
+ if( count( $callback ) == 2 && $callback[0] == 'self' || $callback[0] == 'parent' ) {
+ throw new MWException( 'MWFunction cannot call self::method() or parent::method()' );
+ }
+
+ // Run autoloader (workaround for call_user_func_array bug: http://bugs.php.net/bug.php?id=51329)
+ is_callable( $callback );
+
+ return $callback;
+ }
+
+ public static function call( $callback ) {
+ $callback = self::cleanCallback( $callback );
+
+ $args = func_get_args();
+
+ return call_user_func_array( 'call_user_func', $args );
+ }
+
+ public static function callArray( $callback, $argsarams ) {
+ $callback = self::cleanCallback( $callback );
+ return call_user_func_array( $callback, $argsarams );
+ }
+
+ public static function newObj( $class, $args = array() ) {
+ if( !count( $args ) ) {
+ return new $class;
+ }
+
+ $ref = new ReflectionClass( $class );
+ return $ref->newInstanceArgs( $args );
+ }
+
+}
diff --git a/includes/MacBinary.php b/includes/MacBinary.php
deleted file mode 100644
index 0c38a641..00000000
--- a/includes/MacBinary.php
+++ /dev/null
@@ -1,272 +0,0 @@
-<?php
-/**
- * MacBinary signature checker and data fork extractor, for files
- * uploaded from Internet Explorer for Mac.
- *
- * Copyright (C) 2005 Brion Vibber <brion@pobox.com>
- * Portions based on Convert::BinHex by Eryq et al
- * http://www.mediawiki.org/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @ingroup SpecialPage
- */
-
-class MacBinary {
- function __construct( $filename ) {
- $this->open( $filename );
- $this->loadHeader();
- }
-
- /**
- * The file must be seekable, such as local filesystem.
- * Remote URLs probably won't work.
- *
- * @param $filename String
- */
- function open( $filename ) {
- $this->valid = false;
- $this->version = 0;
- $this->filename = '';
- $this->dataLength = 0;
- $this->resourceLength = 0;
- $this->handle = fopen( $filename, 'rb' );
- }
-
- /**
- * Does this appear to be a valid MacBinary archive?
- *
- * @return Boolean
- */
- function isValid() {
- return $this->valid;
- }
-
- /**
- * Get length of data fork
- *
- * @return Integer
- */
- function dataForkLength() {
- return $this->dataLength;
- }
-
- /**
- * Copy the data fork to an external file or resource.
- *
- * @param $destination Ressource
- * @return Boolean
- */
- function extractData( $destination ) {
- if( !$this->isValid() ) {
- return false;
- }
-
- // Data fork appears immediately after header
- fseek( $this->handle, 128 );
- return $this->copyBytesTo( $destination, $this->dataLength );
- }
-
- /**
- *
- */
- function close() {
- fclose( $this->handle );
- }
-
- // --------------------------------------------------------------
-
- /**
- * Check if the given file appears to be MacBinary-encoded,
- * as Internet Explorer on Mac OS may provide for unknown types.
- * http://www.lazerware.com/formats/macbinary/macbinary_iii.html
- * If ok, load header data.
- *
- * @return bool
- * @access private
- */
- function loadHeader() {
- $fname = 'MacBinary::loadHeader';
-
- fseek( $this->handle, 0 );
- $head = fread( $this->handle, 128 );
- #$this->hexdump( $head );
-
- if( strlen( $head ) < 128 ) {
- wfDebug( "$fname: couldn't read full MacBinary header\n" );
- return false;
- }
-
- if( $head{0} != "\x00" || $head{74} != "\x00" ) {
- wfDebug( "$fname: header bytes 0 and 74 not null\n" );
- return false;
- }
-
- $signature = substr( $head, 102, 4 );
- $a = unpack( "ncrc", substr( $head, 124, 2 ) );
- $storedCRC = $a['crc'];
- $calculatedCRC = $this->calcCRC( substr( $head, 0, 124 ) );
- if( $storedCRC == $calculatedCRC ) {
- if( $signature == 'mBIN' ) {
- $this->version = 3;
- } else {
- $this->version = 2;
- }
- } else {
- $crc = sprintf( "%x != %x", $storedCRC, $calculatedCRC );
- if( $storedCRC == 0 && $head{82} == "\x00" &&
- substr( $head, 101, 24 ) == str_repeat( "\x00", 24 ) ) {
- wfDebug( "$fname: no CRC, looks like MacBinary I\n" );
- $this->version = 1;
- } elseif( $signature == 'mBIN' && $storedCRC == 0x185 ) {
- // Mac IE 5.0 seems to insert this value in the CRC field.
- // 5.2.3 works correctly; don't know about other versions.
- wfDebug( "$fname: CRC doesn't match ($crc), looks like Mac IE 5.0\n" );
- $this->version = 3;
- } else {
- wfDebug( "$fname: CRC doesn't match ($crc) and not MacBinary I\n" );
- return false;
- }
- }
-
- $nameLength = ord( $head{1} );
- if( $nameLength < 1 || $nameLength > 63 ) {
- wfDebug( "$fname: invalid filename size $nameLength\n" );
- return false;
- }
- $this->filename = substr( $head, 2, $nameLength );
-
- $forks = unpack( "Ndata/Nresource", substr( $head, 83, 8 ) );
- $this->dataLength = $forks['data'];
- $this->resourceLength = $forks['resource'];
- $maxForkLength = 0x7fffff;
-
- if( $this->dataLength < 0 || $this->dataLength > $maxForkLength ) {
- wfDebug( "$fname: invalid data fork length $this->dataLength\n" );
- return false;
- }
-
- if( $this->resourceLength < 0 || $this->resourceLength > $maxForkLength ) {
- wfDebug( "$fname: invalid resource fork size $this->resourceLength\n" );
- return false;
- }
-
- wfDebug( "$fname: appears to be MacBinary $this->version, data length $this->dataLength\n" );
- $this->valid = true;
- return true;
- }
-
- /**
- * Calculate a 16-bit CRC value as for MacBinary headers.
- * Adapted from perl5 Convert::BinHex by Eryq,
- * based on the mcvert utility (Doug Moore, April '87),
- * with magic array thingy by Jim Van Verth.
- * http://search.cpan.org/~eryq/Convert-BinHex-1.119/lib/Convert/BinHex.pm
- *
- * @param $data String
- * @param $seed Integer
- * @return Integer
- * @access private
- */
- function calcCRC( $data, $seed = 0 ) {
- # An array useful for CRC calculations that use 0x1021 as the "seed":
- $MAGIC = array(
- 0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50a5, 0x60c6, 0x70e7,
- 0x8108, 0x9129, 0xa14a, 0xb16b, 0xc18c, 0xd1ad, 0xe1ce, 0xf1ef,
- 0x1231, 0x0210, 0x3273, 0x2252, 0x52b5, 0x4294, 0x72f7, 0x62d6,
- 0x9339, 0x8318, 0xb37b, 0xa35a, 0xd3bd, 0xc39c, 0xf3ff, 0xe3de,
- 0x2462, 0x3443, 0x0420, 0x1401, 0x64e6, 0x74c7, 0x44a4, 0x5485,
- 0xa56a, 0xb54b, 0x8528, 0x9509, 0xe5ee, 0xf5cf, 0xc5ac, 0xd58d,
- 0x3653, 0x2672, 0x1611, 0x0630, 0x76d7, 0x66f6, 0x5695, 0x46b4,
- 0xb75b, 0xa77a, 0x9719, 0x8738, 0xf7df, 0xe7fe, 0xd79d, 0xc7bc,
- 0x48c4, 0x58e5, 0x6886, 0x78a7, 0x0840, 0x1861, 0x2802, 0x3823,
- 0xc9cc, 0xd9ed, 0xe98e, 0xf9af, 0x8948, 0x9969, 0xa90a, 0xb92b,
- 0x5af5, 0x4ad4, 0x7ab7, 0x6a96, 0x1a71, 0x0a50, 0x3a33, 0x2a12,
- 0xdbfd, 0xcbdc, 0xfbbf, 0xeb9e, 0x9b79, 0x8b58, 0xbb3b, 0xab1a,
- 0x6ca6, 0x7c87, 0x4ce4, 0x5cc5, 0x2c22, 0x3c03, 0x0c60, 0x1c41,
- 0xedae, 0xfd8f, 0xcdec, 0xddcd, 0xad2a, 0xbd0b, 0x8d68, 0x9d49,
- 0x7e97, 0x6eb6, 0x5ed5, 0x4ef4, 0x3e13, 0x2e32, 0x1e51, 0x0e70,
- 0xff9f, 0xefbe, 0xdfdd, 0xcffc, 0xbf1b, 0xaf3a, 0x9f59, 0x8f78,
- 0x9188, 0x81a9, 0xb1ca, 0xa1eb, 0xd10c, 0xc12d, 0xf14e, 0xe16f,
- 0x1080, 0x00a1, 0x30c2, 0x20e3, 0x5004, 0x4025, 0x7046, 0x6067,
- 0x83b9, 0x9398, 0xa3fb, 0xb3da, 0xc33d, 0xd31c, 0xe37f, 0xf35e,
- 0x02b1, 0x1290, 0x22f3, 0x32d2, 0x4235, 0x5214, 0x6277, 0x7256,
- 0xb5ea, 0xa5cb, 0x95a8, 0x8589, 0xf56e, 0xe54f, 0xd52c, 0xc50d,
- 0x34e2, 0x24c3, 0x14a0, 0x0481, 0x7466, 0x6447, 0x5424, 0x4405,
- 0xa7db, 0xb7fa, 0x8799, 0x97b8, 0xe75f, 0xf77e, 0xc71d, 0xd73c,
- 0x26d3, 0x36f2, 0x0691, 0x16b0, 0x6657, 0x7676, 0x4615, 0x5634,
- 0xd94c, 0xc96d, 0xf90e, 0xe92f, 0x99c8, 0x89e9, 0xb98a, 0xa9ab,
- 0x5844, 0x4865, 0x7806, 0x6827, 0x18c0, 0x08e1, 0x3882, 0x28a3,
- 0xcb7d, 0xdb5c, 0xeb3f, 0xfb1e, 0x8bf9, 0x9bd8, 0xabbb, 0xbb9a,
- 0x4a75, 0x5a54, 0x6a37, 0x7a16, 0x0af1, 0x1ad0, 0x2ab3, 0x3a92,
- 0xfd2e, 0xed0f, 0xdd6c, 0xcd4d, 0xbdaa, 0xad8b, 0x9de8, 0x8dc9,
- 0x7c26, 0x6c07, 0x5c64, 0x4c45, 0x3ca2, 0x2c83, 0x1ce0, 0x0cc1,
- 0xef1f, 0xff3e, 0xcf5d, 0xdf7c, 0xaf9b, 0xbfba, 0x8fd9, 0x9ff8,
- 0x6e17, 0x7e36, 0x4e55, 0x5e74, 0x2e93, 0x3eb2, 0x0ed1, 0x1ef0
- );
- $len = strlen( $data );
- $crc = $seed;
- for( $i = 0; $i < $len; $i++ ) {
- $crc ^= ord( $data{$i} ) << 8;
- $crc &= 0xFFFF;
- $crc = ($crc << 8) ^ $MAGIC[$crc >> 8];
- $crc &= 0xFFFF;
- }
- return $crc;
- }
-
- /**
- * @param $destination Resource
- * @param $bytesToCopy Integer
- * @return Boolean
- * @access private
- */
- function copyBytesTo( $destination, $bytesToCopy ) {
- $bufferSize = 65536;
- for( $remaining = $bytesToCopy; $remaining > 0; $remaining -= $bufferSize ) {
- $thisChunkSize = min( $remaining, $bufferSize );
- $buffer = fread( $this->handle, $thisChunkSize );
- fwrite( $destination, $buffer );
- }
- }
-
- /**
- * Hex dump of the header for debugging
- * @access private
- */
- function hexdump( $data ) {
- global $wgDebugLogFile;
- if( !$wgDebugLogFile ) return;
-
- $width = 16;
- $at = 0;
- for( $remaining = strlen( $data ); $remaining > 0; $remaining -= $width ) {
- $line = sprintf( "%04x:", $at );
- $printable = '';
- for( $i = 0; $i < $width && $remaining - $i > 0; $i++ ) {
- $byte = ord( $data{$at++} );
- $line .= sprintf( " %02x", $byte );
- $printable .= ($byte >= 32 && $byte <= 126 )
- ? chr( $byte )
- : '.';
- }
- if( $i < $width ) {
- $line .= str_repeat( ' ', $width - $i );
- }
- wfDebug( "MacBinary: $line $printable\n" );
- }
- }
-}
diff --git a/includes/MagicWord.php b/includes/MagicWord.php
index 31d83332..d1579380 100644
--- a/includes/MagicWord.php
+++ b/includes/MagicWord.php
@@ -30,9 +30,14 @@ class MagicWord {
/**#@+
* @private
*/
- var $mId, $mSynonyms, $mCaseSensitive, $mRegex;
- var $mRegexStart, $mBaseRegex, $mVariableRegex;
- var $mModified, $mFound;
+ var $mId, $mSynonyms, $mCaseSensitive;
+ var $mRegex = '';
+ var $mRegexStart = '';
+ var $mBaseRegex = '';
+ var $mVariableRegex = '';
+ var $mVariableStartToEndRegex = '';
+ var $mModified = false;
+ var $mFound = false;
static public $mVariableIDsInitialised = false;
static public $mVariableIDs = array(
@@ -182,30 +187,28 @@ class MagicWord {
$this->mId = $id;
$this->mSynonyms = (array)$syn;
$this->mCaseSensitive = $cs;
- $this->mRegex = '';
- $this->mRegexStart = '';
- $this->mVariableRegex = '';
- $this->mVariableStartToEndRegex = '';
- $this->mModified = false;
}
/**
* Factory: creates an object representing an ID
- * @static
+ *
+ * @param $id
+ *
+ * @return MagicWord
*/
static function &get( $id ) {
- wfProfileIn( __METHOD__ );
if ( !isset( self::$mObjects[$id] ) ) {
$mw = new MagicWord();
$mw->load( $id );
self::$mObjects[$id] = $mw;
}
- wfProfileOut( __METHOD__ );
return self::$mObjects[$id];
}
/**
* Get an array of parser variable IDs
+ *
+ * @return array
*/
static function getVariableIDs() {
if ( !self::$mVariableIDsInitialised ) {
@@ -230,16 +233,24 @@ class MagicWord {
return self::$mSubstIDs;
}
- /* Allow external reads of TTL array */
+ /**
+ * Allow external reads of TTL array
+ *
+ * @return array
+ */
static function getCacheTTL($id) {
- if (array_key_exists($id,self::$mCacheTTLs)) {
+ if ( array_key_exists( $id, self::$mCacheTTLs ) ) {
return self::$mCacheTTLs[$id];
} else {
return -1;
}
}
- /** Get a MagicWordArray of double-underscore entities */
+ /**
+ * Get a MagicWordArray of double-underscore entities
+ *
+ * @return MagicWordArray
+ */
static function getDoubleUnderscoreArray() {
if ( is_null( self::$mDoubleUnderscoreArray ) ) {
self::$mDoubleUnderscoreArray = new MagicWordArray( self::$mDoubleUnderscoreIDs );
@@ -255,9 +266,14 @@ class MagicWord {
self::$mObjects = array();
}
- # Initialises this object with an ID
+ /**
+ * Initialises this object with an ID
+ *
+ * @param $id
+ */
function load( $id ) {
global $wgContLang;
+ wfProfileIn( __METHOD__ );
$this->mId = $id;
$wgContLang->getMagic( $this );
if ( !$this->mSynonyms ) {
@@ -265,6 +281,7 @@ class MagicWord {
#throw new MWException( "Error: invalid magic word '$id'" );
wfDebugLog( 'exception', "Error: invalid magic word '$id'\n" );
}
+ wfProfileOut( __METHOD__ );
}
/**
@@ -295,6 +312,11 @@ class MagicWord {
* A comparison function that returns -1, 0 or 1 depending on whether the
* first string is longer, the same length or shorter than the second
* string.
+ *
+ * @param $s1 string
+ * @param $s2 string
+ *
+ * @return int
*/
function compareStringLength( $s1, $s2 ) {
$l1 = strlen( $s1 );
@@ -310,6 +332,8 @@ class MagicWord {
/**
* Gets a regex representing matching the word
+ *
+ * @return string
*/
function getRegex() {
if ($this->mRegex == '' ) {
@@ -322,6 +346,8 @@ class MagicWord {
* Gets the regexp case modifier to use, i.e. i or nothing, to be used if
* one is using MagicWord::getBaseRegex(), otherwise it'll be included in
* the complete expression
+ *
+ * @return string
*/
function getRegexCase() {
if ( $this->mRegex === '' )
@@ -332,6 +358,8 @@ class MagicWord {
/**
* Gets a regex matching the word, if it is at the string start
+ *
+ * @return string
*/
function getRegexStart() {
if ($this->mRegex == '' ) {
@@ -342,6 +370,8 @@ class MagicWord {
/**
* regex without the slashes and what not
+ *
+ * @return string
*/
function getBaseRegex() {
if ($this->mRegex == '') {
@@ -352,6 +382,9 @@ class MagicWord {
/**
* Returns true if the text contains the word
+ *
+ * @paran $text string
+ *
* @return bool
*/
function match( $text ) {
@@ -360,6 +393,9 @@ class MagicWord {
/**
* Returns true if the text starts with the word
+ *
+ * @param $text string
+ *
* @return bool
*/
function matchStart( $text ) {
@@ -371,6 +407,10 @@ class MagicWord {
* The return code is the matched string, if there's no variable
* part in the regex and the matched variable part ($1) if there
* is one.
+ *
+ * @param $text string
+ *
+ * @return string
*/
function matchVariableStartToEnd( $text ) {
$matches = array();
@@ -385,8 +425,11 @@ class MagicWord {
$matches = array_values(array_filter($matches));
- if ( count($matches) == 1 ) { return $matches[0]; }
- else { return $matches[1]; }
+ if ( count($matches) == 1 ) {
+ return $matches[0];
+ } else {
+ return $matches[1];
+ }
}
}
@@ -394,6 +437,10 @@ class MagicWord {
/**
* Returns true if the text matches the word, and alters the
* input string, removing all instances of the word
+ *
+ * @param $text string
+ *
+ * @return bool
*/
function matchAndRemove( &$text ) {
$this->mFound = false;
@@ -401,6 +448,10 @@ class MagicWord {
return $this->mFound;
}
+ /**
+ * @param $text
+ * @return bool
+ */
function matchStartAndRemove( &$text ) {
$this->mFound = false;
$text = preg_replace_callback( $this->getRegexStart(), array( &$this, 'pregRemoveAndRecord' ), $text );
@@ -409,17 +460,24 @@ class MagicWord {
/**
* Used in matchAndRemove()
- * @private
- **/
- function pregRemoveAndRecord( ) {
+ *
+ * @return string
+ */
+ function pregRemoveAndRecord() {
$this->mFound = true;
return '';
}
/**
* Replaces the word with something else
- */
- function replace( $replacement, $subject, $limit=-1 ) {
+ *
+ * @param $replacement
+ * @param $subject
+ * @param $limit int
+ *
+ * @return string
+ */
+ function replace( $replacement, $subject, $limit = -1 ) {
$res = preg_replace( $this->getRegex(), StringUtils::escapeRegexReplacement( $replacement ), $subject, $limit );
$this->mModified = !($res === $subject);
return $res;
@@ -429,6 +487,11 @@ class MagicWord {
* Variable handling: {{SUBST:xxx}} style words
* Calls back a function to determine what to replace xxx with
* Input word must contain $1
+ *
+ * @param $text string
+ * @param $callback
+ *
+ * @return string
*/
function substituteCallback( $text, $callback ) {
$res = preg_replace_callback( $this->getVariableRegex(), $callback, $text );
@@ -438,6 +501,8 @@ class MagicWord {
/**
* Matches the word, where $1 is a wildcard
+ *
+ * @return string
*/
function getVariableRegex() {
if ( $this->mVariableRegex == '' ) {
@@ -448,6 +513,8 @@ class MagicWord {
/**
* Matches the entire string, where $1 is a wildcard
+ *
+ * @return string
*/
function getVariableStartToEndRegex() {
if ( $this->mVariableStartToEndRegex == '' ) {
@@ -458,11 +525,18 @@ class MagicWord {
/**
* Accesses the synonym list directly
+ *
+ * @param $i int
+ *
+ * @return string
*/
function getSynonym( $i ) {
return $this->mSynonyms[$i];
}
+ /**
+ * @return array
+ */
function getSynonyms() {
return $this->mSynonyms;
}
@@ -470,6 +544,8 @@ class MagicWord {
/**
* Returns true if the last call to replace() or substituteCallback()
* returned a modified text, otherwise false.
+ *
+ * @return bool
*/
function getWasModified(){
return $this->mModified;
@@ -480,8 +556,14 @@ class MagicWord {
* This method uses the php feature to do several replacements at the same time,
* thereby gaining some efficiency. The result is placed in the out variable
* $result. The return value is true if something was replaced.
- * @static
- **/
+ * @todo Should this be static? It doesn't seem to be used at all
+ *
+ * @param $magicarr
+ * @param $subject
+ * @param $result
+ *
+ * @return bool
+ */
function replaceMultiple( $magicarr, $subject, &$result ){
$search = array();
$replace = array();
@@ -498,6 +580,9 @@ class MagicWord {
/**
* Adds all the synonyms of this MagicWord to an array, to allow quick
* lookup in a list of magic words
+ *
+ * @param $array
+ * @param $value
*/
function addToArray( &$array, $value ) {
global $wgContLang;
@@ -506,10 +591,16 @@ class MagicWord {
}
}
+ /**
+ * @return bool
+ */
function isCaseSensitive() {
return $this->mCaseSensitive;
}
+ /**
+ * @return int
+ */
function getId() {
return $this->mId;
}
@@ -531,6 +622,8 @@ class MagicWordArray {
/**
* Add a magic word by name
+ *
+ * @param $name string
*/
public function add( $name ) {
$this->names[] = $name;
@@ -539,6 +632,8 @@ class MagicWordArray {
/**
* Add a number of magic words by name
+ *
+ * $param $names array
*/
public function addArray( $names ) {
$this->names = array_merge( $this->names, array_values( $names ) );
@@ -607,6 +702,8 @@ class MagicWordArray {
/**
* Get a regex for matching variables with parameters
+ *
+ * @return string
*/
function getVariableRegex() {
return str_replace( "\\$1", "(.*?)", $this->getRegex() );
@@ -614,6 +711,8 @@ class MagicWordArray {
/**
* Get a regex anchored to the start of the string that does not match parameters
+ *
+ * @return string
*/
function getRegexStart() {
$base = $this->getBaseRegex();
@@ -629,6 +728,8 @@ class MagicWordArray {
/**
* Get an anchored regex for matching variables with parameters
+ *
+ * @return string
*/
function getVariableStartToEndRegex() {
$base = $this->getBaseRegex();
@@ -646,6 +747,10 @@ class MagicWordArray {
* Parse a match array from preg_match
* Returns array(magic word ID, parameter value)
* If there is no parameter value, that element will be false.
+ *
+ * @param $m arrray
+ *
+ * @return array
*/
function parseMatch( $m ) {
reset( $m );
@@ -672,6 +777,10 @@ class MagicWordArray {
* Returns an array with the magic word name in the first element and the
* parameter in the second element.
* Both elements are false if there was no match.
+ *
+ * @param $text string
+ *
+ * @return array
*/
public function matchVariableStartToEnd( $text ) {
$regexes = $this->getVariableStartToEndRegex();
@@ -689,6 +798,10 @@ class MagicWordArray {
/**
* Match some text, without parameter capture
* Returns the magic word name, or false if there was no capture
+ *
+ * @param $text string
+ *
+ * @return string|false
*/
public function matchStartToEnd( $text ) {
$hash = $this->getHash();
@@ -706,6 +819,10 @@ class MagicWordArray {
/**
* Returns an associative array, ID => param value, for all items that match
* Removes the matched items from the input string (passed by reference)
+ *
+ * @param $text string
+ *
+ * @return array
*/
public function matchAndRemove( &$text ) {
$found = array();
@@ -729,6 +846,10 @@ class MagicWordArray {
* the prefix from $text.
* Return false if no match found and $text is not modified.
* Does not match parameters.
+ *
+ * @param $text string
+ *
+ * @return int|false
*/
public function matchStartAndRemove( &$text ) {
$regexes = $this->getRegexStart();
diff --git a/includes/Math.php b/includes/Math.php
deleted file mode 100644
index 0e136d5f..00000000
--- a/includes/Math.php
+++ /dev/null
@@ -1,341 +0,0 @@
-<?php
-/**
- * Contain everything related to <math> </math> parsing
- * @file
- * @ingroup Parser
- */
-
-/**
- * Takes LaTeX fragments, sends them to a helper program (texvc) for rendering
- * to rasterized PNG and HTML and MathML approximations. An appropriate
- * rendering form is picked and returned.
- *
- * @author Tomasz Wegrzanowski, with additions by Brion Vibber (2003, 2004)
- * @ingroup Parser
- */
-class MathRenderer {
- var $mode = MW_MATH_MODERN;
- var $tex = '';
- var $inputhash = '';
- var $hash = '';
- var $html = '';
- var $mathml = '';
- var $conservativeness = 0;
-
- function __construct( $tex, $params=array() ) {
- $this->tex = $tex;
- $this->params = $params;
- }
-
- function setOutputMode( $mode ) {
- $this->mode = $mode;
- }
-
- function render() {
- global $wgTmpDirectory, $wgInputEncoding;
- global $wgTexvc, $wgMathCheckFiles, $wgTexvcBackgroundColor;
-
- if( $this->mode == MW_MATH_SOURCE ) {
- # No need to render or parse anything more!
- # New lines are replaced with spaces, which avoids confusing our parser (bugs 23190, 22818)
- return ('<span class="tex">$ ' . str_replace( "\n", " ", htmlspecialchars( $this->tex ) ) . ' $</span>');
- }
- if( $this->tex == '' ) {
- return; # bug 8372
- }
-
- if( !$this->_recall() ) {
- if( $wgMathCheckFiles ) {
- # Ensure that the temp and output directories are available before continuing...
- if( !file_exists( $wgTmpDirectory ) ) {
- if( !wfMkdirParents( $wgTmpDirectory ) ) {
- return $this->_error( 'math_bad_tmpdir' );
- }
- } elseif( !is_dir( $wgTmpDirectory ) || !is_writable( $wgTmpDirectory ) ) {
- return $this->_error( 'math_bad_tmpdir' );
- }
- }
-
- if( !is_executable( $wgTexvc ) ) {
- return $this->_error( 'math_notexvc' );
- }
- $cmd = $wgTexvc . ' ' .
- escapeshellarg( $wgTmpDirectory ).' '.
- escapeshellarg( $wgTmpDirectory ).' '.
- escapeshellarg( $this->tex ).' '.
- escapeshellarg( $wgInputEncoding ).' '.
- escapeshellarg( $wgTexvcBackgroundColor );
-
- if ( wfIsWindows() ) {
- # Invoke it within cygwin sh, because texvc expects sh features in its default shell
- $cmd = 'sh -c ' . wfEscapeShellArg( $cmd );
- }
-
- wfDebug( "TeX: $cmd\n" );
- $contents = wfShellExec( $cmd );
- wfDebug( "TeX output:\n $contents\n---\n" );
-
- if (strlen($contents) == 0) {
- return $this->_error( 'math_unknown_error' );
- }
-
- $retval = substr ($contents, 0, 1);
- $errmsg = '';
- if (($retval == 'C') || ($retval == 'M') || ($retval == 'L')) {
- if ($retval == 'C') {
- $this->conservativeness = 2;
- } else if ($retval == 'M') {
- $this->conservativeness = 1;
- } else {
- $this->conservativeness = 0;
- }
- $outdata = substr ($contents, 33);
-
- $i = strpos($outdata, "\000");
-
- $this->html = substr($outdata, 0, $i);
- $this->mathml = substr($outdata, $i+1);
- } else if (($retval == 'c') || ($retval == 'm') || ($retval == 'l')) {
- $this->html = substr ($contents, 33);
- if ($retval == 'c') {
- $this->conservativeness = 2;
- } else if ($retval == 'm') {
- $this->conservativeness = 1;
- } else {
- $this->conservativeness = 0;
- }
- $this->mathml = null;
- } else if ($retval == 'X') {
- $this->html = null;
- $this->mathml = substr ($contents, 33);
- $this->conservativeness = 0;
- } else if ($retval == '+') {
- $this->html = null;
- $this->mathml = null;
- $this->conservativeness = 0;
- } else {
- $errbit = htmlspecialchars( substr($contents, 1) );
- switch( $retval ) {
- case 'E':
- $errmsg = $this->_error( 'math_lexing_error', $errbit );
- break;
- case 'S':
- $errmsg = $this->_error( 'math_syntax_error', $errbit );
- break;
- case 'F':
- $errmsg = $this->_error( 'math_unknown_function', $errbit );
- break;
- default:
- $errmsg = $this->_error( 'math_unknown_error', $errbit );
- }
- }
-
- if ( !$errmsg ) {
- $this->hash = substr ($contents, 1, 32);
- }
-
- wfRunHooks( 'MathAfterTexvc', array( &$this, &$errmsg ) );
-
- if ( $errmsg ) {
- return $errmsg;
- }
-
- if (!preg_match("/^[a-f0-9]{32}$/", $this->hash)) {
- return $this->_error( 'math_unknown_error' );
- }
-
- if( !file_exists( "$wgTmpDirectory/{$this->hash}.png" ) ) {
- return $this->_error( 'math_image_error' );
- }
-
- if( filesize( "$wgTmpDirectory/{$this->hash}.png" ) == 0 ) {
- return $this->_error( 'math_image_error' );
- }
-
- $hashpath = $this->_getHashPath();
- if( !file_exists( $hashpath ) ) {
- wfSuppressWarnings();
- $ret = wfMkdirParents( $hashpath, 0755 );
- wfRestoreWarnings();
- if( !$ret ) {
- return $this->_error( 'math_bad_output' );
- }
- } elseif( !is_dir( $hashpath ) || !is_writable( $hashpath ) ) {
- return $this->_error( 'math_bad_output' );
- }
-
- if( !rename( "$wgTmpDirectory/{$this->hash}.png", "$hashpath/{$this->hash}.png" ) ) {
- return $this->_error( 'math_output_error' );
- }
-
- # Now save it back to the DB:
- if ( !wfReadOnly() ) {
- $outmd5_sql = pack('H32', $this->hash);
-
- $md5_sql = pack('H32', $this->md5); # Binary packed, not hex
-
- $dbw = wfGetDB( DB_MASTER );
- $dbw->replace( 'math', array( 'math_inputhash' ),
- array(
- 'math_inputhash' => $dbw->encodeBlob($md5_sql),
- 'math_outputhash' => $dbw->encodeBlob($outmd5_sql),
- 'math_html_conservativeness' => $this->conservativeness,
- 'math_html' => $this->html,
- 'math_mathml' => $this->mathml,
- ), __METHOD__
- );
- }
-
- // If we're replacing an older version of the image, make sure it's current.
- global $wgUseSquid;
- if ( $wgUseSquid ) {
- $urls = array( $this->_mathImageUrl() );
- $u = new SquidUpdate( $urls );
- $u->doUpdate();
- }
- }
-
- return $this->_doRender();
- }
-
- function _error( $msg, $append = '' ) {
- $mf = htmlspecialchars( wfMsg( 'math_failure' ) );
- $errmsg = htmlspecialchars( wfMsg( $msg ) );
- $source = htmlspecialchars( str_replace( "\n", ' ', $this->tex ) );
- return "<strong class='error'>$mf ($errmsg$append): $source</strong>\n";
- }
-
- function _recall() {
- global $wgMathDirectory, $wgMathCheckFiles;
-
- $this->md5 = md5( $this->tex );
- $dbr = wfGetDB( DB_SLAVE );
- $rpage = $dbr->selectRow( 'math',
- array( 'math_outputhash','math_html_conservativeness','math_html','math_mathml' ),
- array( 'math_inputhash' => $dbr->encodeBlob(pack("H32", $this->md5))), # Binary packed, not hex
- __METHOD__
- );
-
- if( $rpage !== false ) {
- # Tailing 0x20s can get dropped by the database, add it back on if necessary:
- $xhash = unpack( 'H32md5', $dbr->decodeBlob($rpage->math_outputhash) . " " );
- $this->hash = $xhash ['md5'];
-
- $this->conservativeness = $rpage->math_html_conservativeness;
- $this->html = $rpage->math_html;
- $this->mathml = $rpage->math_mathml;
-
- $filename = $this->_getHashPath() . "/{$this->hash}.png";
-
- if( !$wgMathCheckFiles ) {
- // Short-circuit the file existence & migration checks
- return true;
- }
-
- if( file_exists( $filename ) ) {
- if( filesize( $filename ) == 0 ) {
- // Some horrible error corrupted stuff :(
- wfSuppressWarnings();
- unlink( $filename );
- wfRestoreWarnings();
- } else {
- return true;
- }
- }
-
- if( file_exists( $wgMathDirectory . "/{$this->hash}.png" ) ) {
- $hashpath = $this->_getHashPath();
-
- if( !file_exists( $hashpath ) ) {
- wfSuppressWarnings();
- $ret = wfMkdirParents( $hashpath, 0755 );
- wfRestoreWarnings();
- if( !$ret ) {
- return false;
- }
- } elseif( !is_dir( $hashpath ) || !is_writable( $hashpath ) ) {
- return false;
- }
- if ( function_exists( "link" ) ) {
- return link ( $wgMathDirectory . "/{$this->hash}.png",
- $hashpath . "/{$this->hash}.png" );
- } else {
- return rename ( $wgMathDirectory . "/{$this->hash}.png",
- $hashpath . "/{$this->hash}.png" );
- }
- }
-
- }
-
- # Missing from the database and/or the render cache
- return false;
- }
-
- /**
- * Select among PNG, HTML, or MathML output depending on
- */
- function _doRender() {
- if( $this->mode == MW_MATH_MATHML && $this->mathml != '' ) {
- return Xml::tags( 'math',
- $this->_attribs( 'math',
- array( 'xmlns' => 'http://www.w3.org/1998/Math/MathML' ) ),
- $this->mathml );
- }
- if (($this->mode == MW_MATH_PNG) || ($this->html == '') ||
- (($this->mode == MW_MATH_SIMPLE) && ($this->conservativeness != 2)) ||
- (($this->mode == MW_MATH_MODERN || $this->mode == MW_MATH_MATHML) && ($this->conservativeness == 0))) {
- return $this->_linkToMathImage();
- } else {
- return Xml::tags( 'span',
- $this->_attribs( 'span',
- array( 'class' => 'texhtml' ) ),
- $this->html );
- }
- }
-
- function _attribs( $tag, $defaults=array(), $overrides=array() ) {
- $attribs = Sanitizer::validateTagAttributes( $this->params, $tag );
- $attribs = Sanitizer::mergeAttributes( $defaults, $attribs );
- $attribs = Sanitizer::mergeAttributes( $attribs, $overrides );
- return $attribs;
- }
-
- function _linkToMathImage() {
- $url = $this->_mathImageUrl();
-
- return Xml::element( 'img',
- $this->_attribs(
- 'img',
- array(
- 'class' => 'tex',
- 'alt' => $this->tex ),
- array(
- 'src' => $url ) ) );
- }
-
- function _mathImageUrl() {
- global $wgMathPath;
- $dir = $this->_getHashSubPath();
- return "$wgMathPath/$dir/{$this->hash}.png";
- }
-
- function _getHashPath() {
- global $wgMathDirectory;
- $path = $wgMathDirectory .'/' . $this->_getHashSubPath();
- wfDebug( "TeX: getHashPath, hash is: $this->hash, path is: $path\n" );
- return $path;
- }
-
- function _getHashSubPath() {
- return substr($this->hash, 0, 1)
- .'/'. substr($this->hash, 1, 1)
- .'/'. substr($this->hash, 2, 1);
- }
-
- public static function renderMath( $tex, $params=array(), ParserOptions $parserOptions = null ) {
- $math = new MathRenderer( $tex, $params );
- if ( $parserOptions )
- $math->setOutputMode( $parserOptions->getMath() );
- return $math->render();
- }
-}
diff --git a/includes/Message.php b/includes/Message.php
index 72232ec9..87349ff5 100644
--- a/includes/Message.php
+++ b/includes/Message.php
@@ -48,9 +48,8 @@
* $escaped = wfMessage( 'key' )->rawParams( 'apple' )->escaped();
* </pre>
*
- * TODO:
+ * @todo
* - test, can we have tests?
- * - sort out the details marked with fixme
*
* @since 1.17
* @author Niklas Laxström
@@ -65,6 +64,8 @@ class Message {
/**
* In which language to get this message. Overrides the $interface
* variable.
+ *
+ * @var Language
*/
protected $language = null;
@@ -95,8 +96,13 @@ class Message {
protected $useDatabase = true;
/**
+ * Title object to use as context
+ */
+ protected $title = null;
+
+ /**
* Constructor.
- * @param $key String: message key
+ * @param $key: message key, or array of message keys to try and use the first non-empty message for
* @param $params Array message parameters
* @return Message: $this
*/
@@ -122,12 +128,37 @@ class Message {
}
/**
+ * Factory function accepting multiple message keys and returning a message instance
+ * for the first message which is non-empty. If all messages are empty then an
+ * instance of the first message key is returned.
+ * @param Varargs: message keys
+ * @return Message: $this
+ */
+ public static function newFallbackSequence( /*...*/ ) {
+ $keys = func_get_args();
+ if ( func_num_args() == 1 ) {
+ if ( is_array($keys[0]) ) {
+ // Allow an array to be passed as the first argument instead
+ $keys = array_values($keys[0]);
+ } else {
+ // Optimize a single string to not need special fallback handling
+ $keys = $keys[0];
+ }
+ }
+ return new self( $keys );
+ }
+
+ /**
* Adds parameters to the parameter list of this message.
* @param Varargs: parameters as Strings
* @return Message: $this
*/
public function params( /*...*/ ) {
- $args_values = array_values( func_get_args() );
+ $args = func_get_args();
+ if ( isset( $args[0] ) && is_array( $args[0] ) ) {
+ $args = $args[0];
+ }
+ $args_values = array_values( $args );
$this->parameters = array_merge( $this->parameters, $args_values );
return $this;
}
@@ -142,6 +173,9 @@ class Message {
*/
public function rawParams( /*...*/ ) {
$params = func_get_args();
+ if ( isset( $params[0] ) && is_array( $params[0] ) ) {
+ $params = $params[0];
+ }
foreach( $params as $param ) {
$this->parameters[] = self::rawParam( $param );
}
@@ -149,6 +183,23 @@ class Message {
}
/**
+ * Add parameters that are numeric and will be passed through
+ * Language::formatNum before substitution
+ * @param Varargs: numeric parameters
+ * @return Message: $this
+ */
+ public function numParams( /*...*/ ) {
+ $params = func_get_args();
+ if ( isset( $params[0] ) && is_array( $params[0] ) ) {
+ $params = $params[0];
+ }
+ foreach( $params as $param ) {
+ $this->parameters[] = self::numParam( $param );
+ }
+ return $this;
+ }
+
+ /**
* Request the message in any language that is supported.
* As a side effect interface message status is unconditionally
* turned off.
@@ -156,7 +207,7 @@ class Message {
* @return Message: $this
*/
public function inLanguage( $lang ) {
- if( $lang instanceof Language ){
+ if ( $lang instanceof Language || $lang instanceof StubUserLang ) {
$this->language = $lang;
} elseif ( is_string( $lang ) ) {
if( $this->language->getCode() != $lang ) {
@@ -173,10 +224,17 @@ class Message {
}
/**
- * Request the message in the wiki's content language.
+ * Request the message in the wiki's content language,
+ * unless it is disabled for this message.
+ * @see $wgForceUIMsgAsContentMsg
* @return Message: $this
*/
public function inContentLanguage() {
+ global $wgForceUIMsgAsContentMsg;
+ if ( in_array( $this->key, (array)$wgForceUIMsgAsContentMsg ) ) {
+ return $this;
+ }
+
global $wgContLang;
$this->interface = false;
$this->language = $wgContLang;
@@ -194,13 +252,18 @@ class Message {
}
/**
+ * Set the Title object to use as context when transforming the message
+ *
+ * @param $title Title object
+ * @return Message: $this
+ */
+ public function title( $title ) {
+ $this->title = $title;
+ return $this;
+ }
+
+ /**
* Returns the message parsed from wikitext to HTML.
- * TODO: in PHP >= 5.2.0, we can make this a magic method,
- * and then we can do, eg:
- * $foo = Message::get($key);
- * $string = "<abbr>$foo</abbr>";
- * But we shouldn't implement that while MediaWiki still supports
- * PHP < 5.2; or people will start using it...
* @return String: HTML
*/
public function toString() {
@@ -221,9 +284,8 @@ class Message {
} elseif( $this->format === 'text' ){
$string = $this->transformText( $string );
} elseif( $this->format === 'escaped' ){
- # FIXME: Sanitizer method here?
$string = $this->transformText( $string );
- $string = htmlspecialchars( $string );
+ $string = htmlspecialchars( $string, ENT_QUOTES, 'UTF-8', false );
}
# Raw parameter replacement
@@ -231,6 +293,16 @@ class Message {
return $string;
}
+
+ /**
+ * Magic method implementation of the above (for PHP >= 5.2.0), so we can do, eg:
+ * $foo = Message::get($key);
+ * $string = "<abbr>$foo</abbr>";
+ * @return String
+ */
+ public function __toString() {
+ return $this->toString();
+ }
/**
* Fully parse the text from wikitext to HTML
@@ -286,23 +358,53 @@ class Message {
return $this->fetchMessage() !== false;
}
+ /**
+ * Check whether a message does not exist, or is an empty string
+ * @return Bool: true if is is and false if not
+ * @todo FIXME: Merge with isDisabled()?
+ */
+ public function isBlank() {
+ $message = $this->fetchMessage();
+ return $message === false || $message === '';
+ }
+
+ /**
+ * Check whether a message does not exist, is an empty string, or is "-"
+ * @return Bool: true if is is and false if not
+ */
+ public function isDisabled() {
+ $message = $this->fetchMessage();
+ return $message === false || $message === '' || $message === '-';
+ }
+
+ /**
+ * @param $value
+ * @return array
+ */
public static function rawParam( $value ) {
return array( 'raw' => $value );
}
/**
+ * @param $value
+ * @return array
+ */
+ public static function numParam( $value ) {
+ return array( 'num' => $value );
+ }
+
+ /**
* Substitutes any paramaters into the message text.
- * @param $message String, the message text
+ * @param $message String: the message text
* @param $type String: either before or after
* @return String
*/
protected function replaceParameters( $message, $type = 'before' ) {
$replacementKeys = array();
foreach( $this->parameters as $n => $param ) {
- if ( $type === 'before' && !is_array( $param ) ) {
- $replacementKeys['$' . ($n + 1)] = $param;
- } elseif ( $type === 'after' && isset( $param['raw'] ) ) {
- $replacementKeys['$' . ($n + 1)] = $param['raw'];
+ list( $paramType, $value ) = $this->extractParam( $param );
+ if ( $type === $paramType ) {
+ $replacementKeys['$' . ($n + 1)] = $value;
}
}
$message = strtr( $message, $replacementKeys );
@@ -310,27 +412,41 @@ class Message {
}
/**
+ * Extracts the parameter type and preprocessed the value if needed.
+ * @param $param String|Array: Parameter as defined in this class.
+ * @return Tuple(type, value)
+ * @throws MWException
+ */
+ protected function extractParam( $param ) {
+ if ( is_array( $param ) && isset( $param['raw'] ) ) {
+ return array( 'after', $param['raw'] );
+ } elseif ( is_array( $param ) && isset( $param['num'] ) ) {
+ // Replace number params always in before step for now.
+ // No support for combined raw and num params
+ return array( 'before', $this->language->formatNum( $param['num'] ) );
+ } elseif ( !is_array( $param ) ) {
+ return array( 'before', $param );
+ } else {
+ throw new MWException( "Invalid message parameter" );
+ }
+ }
+
+ /**
* Wrapper for what ever method we use to parse wikitext.
* @param $string String: Wikitext message contents
- * @return Wikitext parsed into HTML
+ * @return string Wikitext parsed into HTML
*/
protected function parseText( $string ) {
- global $wgOut, $wgLang, $wgContLang;
- if ( $this->language !== $wgLang && $this->language !== $wgContLang ) {
- # FIXME: remove this limitation
- throw new MWException( 'Can only parse in interface or content language' );
- }
- return $wgOut->parse( $string, /*linestart*/true, $this->interface );
+ return MessageCache::singleton()->parse( $string, $this->title, /*linestart*/true, $this->interface, $this->language )->getText();
}
/**
* Wrapper for what ever method we use to {{-transform wikitext.
* @param $string String: Wikitext message contents
- * @return Wikitext with {{-constructs replaced with their values.
+ * @return string Wikitext with {{-constructs replaced with their values.
*/
protected function transformText( $string ) {
- global $wgMessageCache;
- return $wgMessageCache->transform( $string, $this->interface, $this->language );
+ return MessageCache::singleton()->transform( $string, $this->interface, $this->language, $this->title );
}
/**
@@ -340,7 +456,7 @@ class Message {
protected function getMessageText() {
$message = $this->fetchMessage();
if ( $message === false ) {
- return '&lt;' . htmlspecialchars( $this->key ) . '&gt;';
+ return '&lt;' . htmlspecialchars( is_array($this->key) ? $this->key[0] : $this->key ) . '&gt;';
} else {
return $message;
}
@@ -348,13 +464,25 @@ class Message {
/**
* Wrapper for what ever method we use to get message contents
+ *
+ * @return string
*/
protected function fetchMessage() {
if ( !isset( $this->message ) ) {
- global $wgMessageCache;
- $this->message = $wgMessageCache->get( $this->key, $this->useDatabase, $this->language );
+ $cache = MessageCache::singleton();
+ if ( is_array($this->key) ) {
+ foreach ( $this->key as $key ) {
+ $message = $cache->get( $key, $this->useDatabase, $this->language );
+ if ( $message !== false && $message !== '' ) {
+ break;
+ }
+ }
+ $this->message = $message;
+ } else {
+ $this->message = $cache->get( $this->key, $this->useDatabase, $this->language );
+ }
}
return $this->message;
}
-} \ No newline at end of file
+}
diff --git a/includes/MessageBlobStore.php b/includes/MessageBlobStore.php
index 5e6c8e5e..be6b27c9 100644
--- a/includes/MessageBlobStore.php
+++ b/includes/MessageBlobStore.php
@@ -117,49 +117,37 @@ class MessageBlobStore {
}
/**
- * Update all message blobs for a given module.
+ * Update the message blob for a given module in a given language
*
* @param $name String: module name
* @param $module ResourceLoaderModule object
- * @param $lang String: language code (optional)
- * @return Mixed: if $lang is set, the new message blob for that language is
- * returned if present. Otherwise, null is returned.
+ * @param $lang String: language code
+ * @return String Regenerated message blob, or null if there was no blob for the given module/language pair
*/
- public static function updateModule( $name, ResourceLoaderModule $module, $lang = null ) {
- $retval = null;
-
- // Find all existing blobs for this module
+ public static function updateModule( $name, ResourceLoaderModule $module, $lang ) {
$dbw = wfGetDB( DB_MASTER );
- $res = $dbw->select( 'msg_resource',
- array( 'mr_lang', 'mr_blob' ),
- array( 'mr_resource' => $name ),
+ $row = $dbw->selectRow( 'msg_resource', 'mr_blob',
+ array( 'mr_resource' => $name, 'mr_lang' => $lang ),
__METHOD__
);
-
- // Build the new msg_resource rows
- $newRows = array();
- $now = $dbw->timestamp();
- // Save the last-processed old and new blobs for later
- $oldBlob = $newBlob = null;
-
- foreach ( $res as $row ) {
- $oldBlob = $row->mr_blob;
- $newBlob = self::generateMessageBlob( $module, $row->mr_lang );
-
- if ( $row->mr_lang === $lang ) {
- $retval = $newBlob;
- }
- $newRows[] = array(
- 'mr_resource' => $name,
- 'mr_lang' => $row->mr_lang,
- 'mr_blob' => $newBlob,
- 'mr_timestamp' => $now
- );
+ if ( !$row ) {
+ return null;
}
+ // Save the old and new blobs for later
+ $oldBlob = $row->mr_blob;
+ $newBlob = self::generateMessageBlob( $module, $lang );
+
+ $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' ) ),
- $newRows, __METHOD__
+ $newRow, __METHOD__
);
// Figure out which messages were added and removed
@@ -192,7 +180,7 @@ class MessageBlobStore {
);
}
- return $retval;
+ return $newBlob;
}
/**
@@ -340,7 +328,7 @@ class MessageBlobStore {
}
// Update the module's blobs if the set of messages changed or if the blob is
// older than $wgCacheEpoch
- if ( array_keys( FormatJson::decode( $row->mr_blob, true ) ) !== $module->getMessages() ||
+ if ( array_keys( FormatJson::decode( $row->mr_blob, true ) ) !== array_values( array_unique( $module->getMessages() ) ) ||
wfTimestamp( TS_MW, $row->mr_timestamp ) <= $wgCacheEpoch ) {
$retval[$row->mr_resource] = self::updateModule( $row->mr_resource, $module, $lang );
} else {
diff --git a/includes/Metadata.php b/includes/Metadata.php
index 93ce4b27..2e4ab94c 100644
--- a/includes/Metadata.php
+++ b/includes/Metadata.php
@@ -1,6 +1,5 @@
<?php
/**
- * Provides DublinCore and CreativeCommons metadata
*
* Copyright 2004, Evan Prodromou <evan@wikitravel.org>.
*
@@ -29,15 +28,12 @@ abstract class RdfMetaData {
* Constructor
* @param $article Article object
*/
- public function __construct( Article $article ) {
+ public function __construct( Page $article ) {
$this->mArticle = $article;
}
public abstract function show();
- /**
- *
- */
protected function setup() {
global $wgOut, $wgRequest;
@@ -55,9 +51,6 @@ abstract class RdfMetaData {
}
}
- /**
- *
- */
protected function reallyFullUrl() {
return $this->mArticle->getTitle()->getFullURL();
}
@@ -65,7 +58,7 @@ abstract class RdfMetaData {
protected function basics() {
global $wgLanguageCode, $wgSitename;
- $this->element( 'title', $this->mArticle->mTitle->getText() );
+ $this->element( 'title', $this->mArticle->getTitle()->getText() );
$this->pageOrString( 'publisher', wfMsg( 'aboutpage' ), $wgSitename );
$this->element( 'language', $wgLanguageCode );
$this->element( 'type', 'Text' );
@@ -95,10 +88,11 @@ abstract class RdfMetaData {
}
protected function pageOrString( $name, $page, $str ) {
- if( $page instanceof Title )
+ if( $page instanceof Title ) {
$nt = $page;
- else
+ } else {
$nt = Title::newFromText( $page );
+ }
if( !$nt || $nt->getArticleID() == 0 ){
$this->element( $name, $str );
@@ -107,6 +101,10 @@ abstract class RdfMetaData {
}
}
+ /**
+ * @param $name string
+ * @param $title Title
+ */
protected function page( $name, $title ) {
$this->url( $name, $title->getFullUrl() );
}
@@ -140,9 +138,9 @@ abstract class RdfMetaData {
if( $wgRightsPage && ( $nt = Title::newFromText( $wgRightsPage ) )
&& ($nt->getArticleID() != 0)) {
$this->page('rights', $nt);
- } else if( $wgRightsUrl ){
+ } elseif( $wgRightsUrl ){
$this->url('rights', $wgRightsUrl);
- } else if( $wgRightsText ){
+ } elseif( $wgRightsText ){
$this->element( 'rights', $wgRightsText );
}
}
@@ -198,125 +196,3 @@ abstract class RdfMetaData {
}
}
-class DublinCoreRdf extends RdfMetaData {
-
- public function show(){
- if( $this->setup() ){
- $this->prologue();
- $this->basics();
- $this->epilogue();
- }
- }
-
- /**
- * begin of the page
- */
- protected function prologue() {
- global $wgOutputEncoding;
-
- $url = htmlspecialchars( $this->reallyFullUrl() );
- print <<<PROLOGUE
-<?xml version="1.0" encoding="{$wgOutputEncoding}" ?>
-<!DOCTYPE rdf:RDF PUBLIC "-//DUBLIN CORE//DCMES DTD 2002/07/31//EN" "http://dublincore.org/documents/2002/07/31/dcmes-xml/dcmes-xml-dtd.dtd">
-<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
- xmlns:dc="http://purl.org/dc/elements/1.1/">
- <rdf:Description rdf:about="{$url}">
-
-PROLOGUE;
- }
-
- /**
- * end of the page
- */
- protected function epilogue() {
- print <<<EPILOGUE
- </rdf:Description>
-</rdf:RDF>
-EPILOGUE;
- }
-}
-
-class CreativeCommonsRdf extends RdfMetaData {
-
- public function show(){
- if( $this->setup() ){
- global $wgRightsUrl;
-
- $url = $this->reallyFullUrl();
-
- $this->prologue();
- $this->subPrologue('Work', $url);
-
- $this->basics();
- if( $wgRightsUrl ){
- $url = htmlspecialchars( $wgRightsUrl );
- print "\t\t<cc:license rdf:resource=\"$url\" />\n";
- }
-
- $this->subEpilogue('Work');
-
- if( $wgRightsUrl ){
- $terms = $this->getTerms( $wgRightsUrl );
- if( $terms ){
- $this->subPrologue( 'License', $wgRightsUrl );
- $this->license( $terms );
- $this->subEpilogue( 'License' );
- }
- }
- }
-
- $this->epilogue();
- }
-
- protected function prologue() {
- global $wgOutputEncoding;
- echo <<<PROLOGUE
-<?xml version='1.0' encoding="{$wgOutputEncoding}" ?>
-<rdf:RDF xmlns:cc="http://web.resource.org/cc/"
- xmlns:dc="http://purl.org/dc/elements/1.1/"
- xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
-
-PROLOGUE;
- }
-
- protected function subPrologue( $type, $url ){
- $url = htmlspecialchars( $url );
- echo "\t<cc:{$type} rdf:about=\"{$url}\">\n";
- }
-
- protected function subEpilogue($type) {
- echo "\t</cc:{$type}>\n";
- }
-
- protected function license($terms) {
-
- foreach( $terms as $term ){
- switch( $term ) {
- case 're':
- $this->term('permits', 'Reproduction'); break;
- case 'di':
- $this->term('permits', 'Distribution'); break;
- case 'de':
- $this->term('permits', 'DerivativeWorks'); break;
- case 'nc':
- $this->term('prohibits', 'CommercialUse'); break;
- case 'no':
- $this->term('requires', 'Notice'); break;
- case 'by':
- $this->term('requires', 'Attribution'); break;
- case 'sa':
- $this->term('requires', 'ShareAlike'); break;
- case 'sc':
- $this->term('requires', 'SourceCode'); break;
- }
- }
- }
-
- protected function term( $term, $name ){
- print "\t\t<cc:{$term} rdf:resource=\"http://web.resource.org/cc/{$name}\" />\n";
- }
-
- protected function epilogue() {
- echo "</rdf:RDF>\n";
- }
-}
diff --git a/includes/MimeMagic.php b/includes/MimeMagic.php
index 018f601d..62325238 100644
--- a/includes/MimeMagic.php
+++ b/includes/MimeMagic.php
@@ -117,14 +117,6 @@ unknown/unknown application/octet-stream application/x-empty [UNKNOWN]
END_STRING
);
-#note: because this file is possibly included by a function,
-#we need to access the global scope explicitely!
-global $wgLoadFileinfoExtension;
-
-if ($wgLoadFileinfoExtension) {
- wfDl( 'fileinfo' );
-}
-
/**
* Implements functions related to mime types such as detection and mapping to
* file extension.
@@ -138,19 +130,19 @@ class MimeMagic {
* Mapping of media types to arrays of mime types.
* This is used by findMediaType and getMediaType, respectively
*/
- var $mMediaTypes= null;
+ var $mMediaTypes = null;
/** Map of mime type aliases
*/
- var $mMimeTypeAliases= null;
+ var $mMimeTypeAliases = null;
/** map of mime types to file extensions (as a space seprarated list)
*/
- var $mMimeToExt= null;
+ var $mMimeToExt = null;
/** map of file extensions types to mime types (as a space seprarated list)
*/
- var $mExtToMime= null;
+ var $mExtToMime = null;
/** IEContentAnalyzer instance
*/
@@ -160,16 +152,20 @@ class MimeMagic {
*/
private static $instance;
+ /** True if the fileinfo extension has been loaded
+ */
+ private static $extensionLoaded = false;
+
/** Initializes the MimeMagic object. This is called by MimeMagic::singleton().
- *
- * This constructor parses the mime.types and mime.info files and build internal mappings.
- */
+ *
+ * This constructor parses the mime.types and mime.info files and build internal mappings.
+ */
function __construct() {
- /*
+ /**
* --- load mime.types ---
*/
- global $wgMimeTypeFile, $IP;
+ global $wgMimeTypeFile, $IP, $wgLoadFileinfoExtension;
$types = MM_WELL_KNOWN_MIME_TYPES;
@@ -177,6 +173,11 @@ class MimeMagic {
$wgMimeTypeFile = "$IP/$wgMimeTypeFile";
}
+ if ( $wgLoadFileinfoExtension && !self::$extensionLoaded ) {
+ self::$extensionLoaded = true;
+ wfDl( 'fileinfo' );
+ }
+
if ( $wgMimeTypeFile ) {
if ( is_file( $wgMimeTypeFile ) and is_readable( $wgMimeTypeFile ) ) {
wfDebug( __METHOD__.": loading mime types from $wgMimeTypeFile\n" );
@@ -198,20 +199,28 @@ class MimeMagic {
$lines = explode( "\n",$types );
foreach ( $lines as $s ) {
$s = trim( $s );
- if ( empty( $s ) ) continue;
- if ( strpos( $s, '#' ) === 0 ) continue;
+ if ( empty( $s ) ) {
+ continue;
+ }
+ if ( strpos( $s, '#' ) === 0 ) {
+ continue;
+ }
$s = strtolower( $s );
$i = strpos( $s, ' ' );
- if ( $i === false ) continue;
+ if ( $i === false ) {
+ continue;
+ }
#print "processing MIME line $s<br>";
$mime = substr( $s, 0, $i );
$ext = trim( substr($s, $i+1 ) );
- if ( empty( $ext ) ) continue;
+ if ( empty( $ext ) ) {
+ continue;
+ }
if ( !empty( $this->mMimeToExt[$mime] ) ) {
$this->mMimeToExt[$mime] .= ' ' . $ext;
@@ -223,7 +232,9 @@ class MimeMagic {
foreach ( $extensions as $e ) {
$e = trim( $e );
- if ( empty( $e ) ) continue;
+ if ( empty( $e ) ) {
+ continue;
+ }
if ( !empty( $this->mExtToMime[$e] ) ) {
$this->mExtToMime[$e] .= ' ' . $mime;
@@ -233,9 +244,9 @@ class MimeMagic {
}
}
- /*
- * --- load mime.info ---
- */
+ /**
+ * --- load mime.info ---
+ */
global $wgMimeInfoFile;
if ( $wgMimeInfoFile == 'includes/mime.info' ) {
@@ -265,13 +276,19 @@ class MimeMagic {
$lines = explode( "\n", $info );
foreach ( $lines as $s ) {
$s = trim( $s );
- if ( empty( $s ) ) continue;
- if ( strpos( $s, '#' ) === 0 ) continue;
+ if ( empty( $s ) ) {
+ continue;
+ }
+ if ( strpos( $s, '#' ) === 0 ) {
+ continue;
+ }
$s = strtolower( $s );
$i = strpos( $s, ' ' );
- if ( $i === false ) continue;
+ if ( $i === false ) {
+ continue;
+ }
#print "processing MIME INFO line $s<br>";
@@ -291,7 +308,9 @@ class MimeMagic {
foreach ( $m as $mime ) {
$mime = trim( $mime );
- if ( empty( $mime ) ) continue;
+ if ( empty( $mime ) ) {
+ continue;
+ }
$this->mMediaTypes[$mtype][] = $mime;
}
@@ -309,47 +328,70 @@ class MimeMagic {
/**
* Get an instance of this class
+ * @return MimeMagic
*/
- static function &singleton() {
+ public static function &singleton() {
if ( !isset( self::$instance ) ) {
self::$instance = new MimeMagic;
}
return self::$instance;
}
- /** returns a list of file extensions for a given mime type
- * as a space separated string.
- */
- function getExtensionsForType( $mime ) {
+ /**
+ * Returns a list of file extensions for a given mime type as a space
+ * separated string or null if the mime type was unrecognized. Resolves
+ * mime type aliases.
+ *
+ * @param $mime string
+ * @return string|null
+ */
+ public function getExtensionsForType( $mime ) {
$mime = strtolower( $mime );
- $r = @$this->mMimeToExt[$mime];
+ // Check the mime-to-ext map
+ if ( isset( $this->mMimeToExt[$mime] ) ) {
+ return $this->mMimeToExt[$mime];
+ }
- if ( @!$r and isset( $this->mMimeTypeAliases[$mime] ) ) {
+ // Resolve the mime type to the canonical type
+ if ( isset( $this->mMimeTypeAliases[$mime] ) ) {
$mime = $this->mMimeTypeAliases[$mime];
- $r = @$this->mMimeToExt[$mime];
+ if ( isset( $this->mMimeToExt[$mime] ) ) {
+ return $this->mMimeToExt[$mime];
+ }
}
- return $r;
+ return null;
}
- /** returns a list of mime types for a given file extension
- * as a space separated string.
- */
- function getTypesForExtension( $ext ) {
+ /**
+ * Returns a list of mime types for a given file extension as a space
+ * separated string or null if the extension was unrecognized.
+ *
+ * @param $ext string
+ * @return string|null
+ */
+ public function getTypesForExtension( $ext ) {
$ext = strtolower( $ext );
$r = isset( $this->mExtToMime[$ext] ) ? $this->mExtToMime[$ext] : null;
return $r;
}
- /** returns a single mime type for a given file extension.
- * This is always the first type from the list returned by getTypesForExtension($ext).
- */
- function guessTypesForExtension( $ext ) {
+ /**
+ * Returns a single mime type for a given file extension or null if unknown.
+ * This is always the first type from the list returned by getTypesForExtension($ext).
+ *
+ * @param $ext string
+ * @return string|null
+ */
+ public function guessTypesForExtension( $ext ) {
$m = $this->getTypesForExtension( $ext );
- if ( is_null( $m ) ) return null;
+ if ( is_null( $m ) ) {
+ return null;
+ }
+ // TODO: Check if this is needed; strtok( $m, ' ' ) should be sufficient
$m = trim( $m );
$m = preg_replace( '/\s.*$/', '', $m );
@@ -357,32 +399,38 @@ class MimeMagic {
}
- /** tests if the extension matches the given mime type.
- * returns true if a match was found, NULL if the mime type is unknown,
- * and false if the mime type is known but no matches where found.
- */
- function isMatchingExtension( $extension, $mime ) {
+ /**
+ * Tests if the extension matches the given mime type. Returns true if a
+ * match was found, null if the mime type is unknown, and false if the
+ * mime type is known but no matches where found.
+ *
+ * @param $extension string
+ * @param $mime string
+ * @return bool|null
+ */
+ public function isMatchingExtension( $extension, $mime ) {
$ext = $this->getExtensionsForType( $mime );
if ( !$ext ) {
- return null; //unknown
+ return null; // Unknown mime type
}
$ext = explode( ' ', $ext );
$extension = strtolower( $extension );
- if ( in_array( $extension, $ext ) ) {
- return true;
- }
-
- return false;
+ return in_array( $extension, $ext );
}
- /** returns true if the mime type is known to represent
- * an image format supported by the PHP GD library.
- */
- function isPHPImageType( $mime ) {
- #as defined by imagegetsize and image_type_to_mime
+ /**
+ * Returns true if the mime type is known to represent an image format
+ * supported by the PHP GD library.
+ *
+ * @param $mime string
+ *
+ * @return bool
+ */
+ public function isPHPImageType( $mime ) {
+ // As defined by imagegetsize and image_type_to_mime
static $types = array(
'image/gif', 'image/jpeg', 'image/png',
'image/x-bmp', 'image/xbm', 'image/tiff',
@@ -426,44 +474,45 @@ class MimeMagic {
return in_array( strtolower( $extension ), $types );
}
- /** improves a mime type using the file extension. Some file formats are very generic,
- * so their mime type is not very meaningful. A more useful mime type can be derived
- * by looking at the file extension. Typically, this method would be called on the
- * result of guessMimeType().
- *
- * Currently, this method does the following:
- *
- * If $mime is "unknown/unknown" and isRecognizableExtension( $ext ) returns false,
- * return the result of guessTypesForExtension($ext).
- *
- * If $mime is "application/x-opc+zip" and isMatchingExtension( $ext, $mime )
- * gives true, return the result of guessTypesForExtension($ext).
- *
- * @param $mime String: the mime type, typically guessed from a file's content.
- * @param $ext String: the file extension, as taken from the file name
- *
- * @return string the mime type
- */
- function improveTypeFromExtension( $mime, $ext ) {
- if ( $mime === "unknown/unknown" ) {
- if( $this->isRecognizableExtension( $ext ) ) {
- wfDebug( __METHOD__. ": refusing to guess mime type for .$ext file, " .
- "we should have recognized it\n" );
+ /**
+ * Improves a mime type using the file extension. Some file formats are very generic,
+ * so their mime type is not very meaningful. A more useful mime type can be derived
+ * by looking at the file extension. Typically, this method would be called on the
+ * result of guessMimeType().
+ *
+ * Currently, this method does the following:
+ *
+ * If $mime is "unknown/unknown" and isRecognizableExtension( $ext ) returns false,
+ * return the result of guessTypesForExtension($ext).
+ *
+ * If $mime is "application/x-opc+zip" and isMatchingExtension( $ext, $mime )
+ * gives true, return the result of guessTypesForExtension($ext).
+ *
+ * @param $mime String: the mime type, typically guessed from a file's content.
+ * @param $ext String: the file extension, as taken from the file name
+ *
+ * @return string the mime type
+ */
+ public function improveTypeFromExtension( $mime, $ext ) {
+ if ( $mime === 'unknown/unknown' ) {
+ if ( $this->isRecognizableExtension( $ext ) ) {
+ wfDebug( __METHOD__. ': refusing to guess mime type for .' .
+ "$ext file, we should have recognized it\n" );
} else {
- /* Not something we can detect, so simply
- * trust the file extension */
+ // Not something we can detect, so simply
+ // trust the file extension
$mime = $this->guessTypesForExtension( $ext );
}
}
- else if ( $mime === "application/x-opc+zip" ) {
+ elseif ( $mime === 'application/x-opc+zip' ) {
if ( $this->isMatchingExtension( $ext, $mime ) ) {
- /* A known file extension for an OPC file,
- * find the proper mime type for that file extension */
+ // A known file extension for an OPC file,
+ // find the proper mime type for that file extension
$mime = $this->guessTypesForExtension( $ext );
} else {
wfDebug( __METHOD__. ": refusing to guess better type for $mime file, " .
".$ext is not a known OPC extension.\n" );
- $mime = "application/zip";
+ $mime = 'application/zip';
}
}
@@ -475,20 +524,22 @@ class MimeMagic {
return $mime;
}
- /** mime type detection. This uses detectMimeType to detect the mime type of the file,
- * but applies additional checks to determine some well known file formats that may be missed
- * or misinterpreter by the default mime detection (namely XML based formats like XHTML or SVG,
- * as well as ZIP based formats like OPC/ODF files).
- *
- * @param $file String: the file to check
- * @param $ext Mixed: the file extension, or true (default) to extract it from the filename.
- * Set it to false to ignore the extension. DEPRECATED! Set to false, use
- * improveTypeFromExtension($mime, $ext) later to improve mime type.
- *
- * @return string the mime type of $file
- */
- function guessMimeType( $file, $ext = true ) {
- if( $ext ) { # TODO: make $ext default to false. Or better, remove it.
+ /**
+ * Mime type detection. This uses detectMimeType to detect the mime type
+ * of the file, but applies additional checks to determine some well known
+ * file formats that may be missed or misinterpreter by the default mime
+ * detection (namely XML based formats like XHTML or SVG, as well as ZIP
+ * based formats like OPC/ODF files).
+ *
+ * @param $file String: the file to check
+ * @param $ext Mixed: the file extension, or true (default) to extract it from the filename.
+ * Set it to false to ignore the extension. DEPRECATED! Set to false, use
+ * improveTypeFromExtension($mime, $ext) later to improve mime type.
+ *
+ * @return string the mime type of $file
+ */
+ public function guessMimeType( $file, $ext = true ) {
+ if ( $ext ) { // TODO: make $ext default to false. Or better, remove it.
wfDebug( __METHOD__.": WARNING: use of the \$ext parameter is deprecated. " .
"Use improveTypeFromExtension(\$mime, \$ext) instead.\n" );
}
@@ -508,12 +559,22 @@ class MimeMagic {
return $mime;
}
- private function doGuessMimeType( $file, $ext ) { # TODO: remove $ext param
+ /**
+ * Guess the mime type from the file contents.
+ *
+ * @param string $file
+ * @param mixed $ext
+ */
+ private function doGuessMimeType( $file, $ext ) { // TODO: remove $ext param
// Read a chunk of the file
wfSuppressWarnings();
- $f = fopen( $file, "rt" );
+ // @todo FIXME: Shouldn't this be rb?
+ $f = fopen( $file, 'rt' );
wfRestoreWarnings();
- if( !$f ) return "unknown/unknown";
+
+ if( !$f ) {
+ return 'unknown/unknown';
+ }
$head = fread( $f, 1024 );
fseek( $f, -65558, SEEK_END );
$tail = fread( $f, 65558 ); // 65558 = maximum size of a zip EOCDR
@@ -540,23 +601,23 @@ class MimeMagic {
"\x7fELF" => 'application/octet-stream', // ELF binary
);
- foreach( $headers as $magic => $candidate ) {
- if( strncmp( $head, $magic, strlen( $magic ) ) == 0 ) {
+ foreach ( $headers as $magic => $candidate ) {
+ if ( strncmp( $head, $magic, strlen( $magic ) ) == 0 ) {
wfDebug( __METHOD__ . ": magic header in $file recognized as $candidate\n" );
return $candidate;
}
}
/* Look for WebM and Matroska files */
- if( strncmp( $head, pack( "C4", 0x1a, 0x45, 0xdf, 0xa3 ), 4 ) == 0 ) {
+ if ( strncmp( $head, pack( "C4", 0x1a, 0x45, 0xdf, 0xa3 ), 4 ) == 0 ) {
$doctype = strpos( $head, "\x42\x82" );
- if( $doctype ) {
+ if ( $doctype ) {
// Next byte is datasize, then data (sizes larger than 1 byte are very stupid muxers)
$data = substr($head, $doctype+3, 8);
- if( strncmp( $data, "matroska", 8 ) == 0 ) {
+ if ( strncmp( $data, "matroska", 8 ) == 0 ) {
wfDebug( __METHOD__ . ": recognized file as video/x-matroska\n" );
return "video/x-matroska";
- } else if ( strncmp( $data, "webm", 4 ) == 0 ) {
+ } elseif ( strncmp( $data, "webm", 4 ) == 0 ) {
wfDebug( __METHOD__ . ": recognized file as video/webm\n" );
return "video/webm";
}
@@ -566,24 +627,24 @@ class MimeMagic {
}
/* Look for WebP */
- if( strncmp( $head, "RIFF", 4 ) == 0 && strncmp( substr( $head, 8, 8), "WEBPVP8 ", 8 ) == 0 ) {
+ if ( strncmp( $head, "RIFF", 4 ) == 0 && strncmp( substr( $head, 8, 8), "WEBPVP8 ", 8 ) == 0 ) {
wfDebug( __METHOD__ . ": recognized file as image/webp\n" );
return "image/webp";
}
- /*
+ /**
* Look for PHP. Check for this before HTML/XML... Warning: this is a
* heuristic, and won't match a file with a lot of non-PHP before. It
* will also match text files which could be PHP. :)
*
- * FIXME: For this reason, the check is probably useless -- an attacker
+ * @todo FIXME: For this reason, the check is probably useless -- an attacker
* could almost certainly just pad the file with a lot of nonsense to
* circumvent the check in any case where it would be a security
* problem. On the other hand, it causes harmful false positives (bug
* 16583). The heuristic has been cut down to exclude three-character
* strings like "<? ", but should it be axed completely?
*/
- if( ( strpos( $head, '<?php' ) !== false ) ||
+ if ( ( strpos( $head, '<?php' ) !== false ) ||
( strpos( $head, "<\x00?\x00p\x00h\x00p" ) !== false ) ||
( strpos( $head, "<\x00?\x00 " ) !== false ) ||
@@ -592,23 +653,23 @@ class MimeMagic {
( strpos( $head, "<\x00?\x00=" ) !== false ) ) {
wfDebug( __METHOD__ . ": recognized $file as application/x-php\n" );
- return "application/x-php";
+ return 'application/x-php';
}
- /*
+ /**
* look for XML formats (XHTML and SVG)
*/
$xml = new XmlTypeCheck( $file );
- if( $xml->wellFormed ) {
+ if ( $xml->wellFormed ) {
global $wgXMLMimeTypes;
- if( isset( $wgXMLMimeTypes[$xml->getRootElement()] ) ) {
+ if ( isset( $wgXMLMimeTypes[$xml->getRootElement()] ) ) {
return $wgXMLMimeTypes[$xml->getRootElement()];
} else {
return 'application/xml';
}
}
- /*
+ /**
* look for shell scripts
*/
$script_type = null;
@@ -718,18 +779,18 @@ class MimeMagic {
$openxmlRegex = "/^\[Content_Types\].xml/";
- if( preg_match( $opendocRegex, substr( $header, 30 ), $matches ) ) {
+ if ( preg_match( $opendocRegex, substr( $header, 30 ), $matches ) ) {
$mime = $matches[1];
wfDebug( __METHOD__.": detected $mime from ZIP archive\n" );
- } elseif( preg_match( $openxmlRegex, substr( $header, 30 ) ) ) {
+ } elseif ( preg_match( $openxmlRegex, substr( $header, 30 ) ) ) {
$mime = "application/x-opc+zip";
# TODO: remove the block below, as soon as improveTypeFromExtension is used everywhere
- if( $ext !== true && $ext !== false ) {
+ if ( $ext !== true && $ext !== false ) {
/** This is the mode used by getPropsFromPath
* These mime's are stored in the database, where we don't really want
* x-opc+zip, because we use it only for internal purposes
*/
- if( $this->isMatchingExtension( $ext, $mime) ) {
+ if ( $this->isMatchingExtension( $ext, $mime) ) {
/* A known file extension for an OPC file,
* find the proper mime type for that file extension */
$mime = $this->guessTypesForExtension( $ext );
@@ -738,10 +799,10 @@ class MimeMagic {
}
}
wfDebug( __METHOD__.": detected an Open Packaging Conventions archive: $mime\n" );
- } else if( substr( $header, 0, 8 ) == "\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1" &&
+ } elseif ( substr( $header, 0, 8 ) == "\xd0\xcf\x11\xe0\xa1\xb1\x1a\xe1" &&
($headerpos = strpos( $tail, "PK\x03\x04" ) ) !== false &&
preg_match( $openxmlRegex, substr( $tail, $headerpos + 30 ) ) ) {
- if( substr( $header, 512, 4) == "\xEC\xA5\xC1\x00" ) {
+ if ( substr( $header, 512, 4) == "\xEC\xA5\xC1\x00" ) {
$mime = "application/msword";
}
switch( substr( $header, 512, 6) ) {
@@ -773,31 +834,34 @@ class MimeMagic {
return $mime;
}
- /** Internal mime type detection, please use guessMimeType() for application code instead.
- * Detection is done using an external program, if $wgMimeDetectorCommand is set.
- * Otherwise, the fileinfo extension and mime_content_type are tried (in this order), if they are available.
- * If the dections fails and $ext is not false, the mime type is guessed from the file extension, using
- * guessTypesForExtension.
- * If the mime type is still unknown, getimagesize is used to detect the mime type if the file is an image.
- * If no mime type can be determined, this function returns "unknown/unknown".
- *
- * @param $file String: the file to check
- * @param $ext Mixed: the file extension, or true (default) to extract it from the filename.
- * Set it to false to ignore the extension. DEPRECATED! Set to false, use
- * improveTypeFromExtension($mime, $ext) later to improve mime type.
- *
- * @return string the mime type of $file
- * @access private
- */
+ /**
+ * Internal mime type detection. Detection is done using an external
+ * program, if $wgMimeDetectorCommand is set. Otherwise, the fileinfo
+ * extension and mime_content_type are tried (in this order), if they
+ * are available. If the dections fails and $ext is not false, the mime
+ * type is guessed from the file extension, using guessTypesForExtension.
+ *
+ * If the mime type is still unknown, getimagesize is used to detect the
+ * mime type if the file is an image. If no mime type can be determined,
+ * this function returns 'unknown/unknown'.
+ *
+ * @param $file String: the file to check
+ * @param $ext Mixed: the file extension, or true (default) to extract it from the filename.
+ * Set it to false to ignore the extension. DEPRECATED! Set to false, use
+ * improveTypeFromExtension($mime, $ext) later to improve mime type.
+ *
+ * @return string the mime type of $file
+ */
private function detectMimeType( $file, $ext = true ) {
global $wgMimeDetectorCommand;
- if( $ext ) { # TODO: make $ext default to false. Or better, remove it.
+ if ( $ext ) { # TODO: make $ext default to false. Or better, remove it.
wfDebug( __METHOD__.": WARNING: use of the \$ext parameter is deprecated. Use improveTypeFromExtension(\$mime, \$ext) instead.\n" );
}
$m = null;
if ( $wgMimeDetectorCommand ) {
+ // @todo FIXME: Use wfShellExec
$fn = wfEscapeShellArg( $file );
$m = `$wgMimeDetectorCommand $fn`;
} elseif ( function_exists( "finfo_open" ) && function_exists( "finfo_file" ) ) {
@@ -812,9 +876,9 @@ class MimeMagic {
# If you may need to load the fileinfo extension at runtime, set
# $wgLoadFileinfoExtension in LocalSettings.php
- $mime_magic_resource = finfo_open(FILEINFO_MIME); /* return mime type ala mimetype extension */
+ $mime_magic_resource = finfo_open( FILEINFO_MIME ); /* return mime type ala mimetype extension */
- if ($mime_magic_resource) {
+ if ( $mime_magic_resource ) {
$m = finfo_file( $mime_magic_resource, $file );
finfo_close( $mime_magic_resource );
} else {
@@ -850,7 +914,7 @@ class MimeMagic {
}
}
- # if desired, look at extension as a fallback.
+ // If desired, look at extension as a fallback.
if ( $ext === true ) {
$i = strrpos( $file, '.' );
$ext = strtolower( $i ? substr( $file, $i + 1 ) : '' );
@@ -867,36 +931,40 @@ class MimeMagic {
}
}
- #unknown type
- wfDebug( __METHOD__.": failed to guess mime type for $file!\n" );
- return "unknown/unknown";
+ // Unknown type
+ wfDebug( __METHOD__ . ": failed to guess mime type for $file!\n" );
+ return 'unknown/unknown';
}
/**
- * Determine the media type code for a file, using its mime type, name and possibly
- * its contents.
- *
- * This function relies on the findMediaType(), mapping extensions and mime
- * types to media types.
- *
- * @todo analyse file if need be
- * @todo look at multiple extension, separately and together.
- *
- * @param $path String: full path to the image file, in case we have to look at the contents
- * (if null, only the mime type is used to determine the media type code).
- * @param $mime String: mime type. If null it will be guessed using guessMimeType.
- *
- * @return (int?string?) a value to be used with the MEDIATYPE_xxx constants.
- */
+ * Determine the media type code for a file, using its mime type, name and
+ * possibly its contents.
+ *
+ * This function relies on the findMediaType(), mapping extensions and mime
+ * types to media types.
+ *
+ * @todo analyse file if need be
+ * @todo look at multiple extension, separately and together.
+ *
+ * @param $path String: full path to the image file, in case we have to look at the contents
+ * (if null, only the mime type is used to determine the media type code).
+ * @param $mime String: mime type. If null it will be guessed using guessMimeType.
+ *
+ * @return (int?string?) a value to be used with the MEDIATYPE_xxx constants.
+ */
function getMediaType( $path = null, $mime = null ) {
- if( !$mime && !$path ) return MEDIATYPE_UNKNOWN;
+ if( !$mime && !$path ) {
+ return MEDIATYPE_UNKNOWN;
+ }
- # If mime type is unknown, guess it
- if( !$mime ) $mime = $this->guessMimeType( $path, false );
+ // If mime type is unknown, guess it
+ if( !$mime ) {
+ $mime = $this->guessMimeType( $path, false );
+ }
- # Special code for ogg - detect if it's video (theora),
- # else label it as sound.
- if( $mime == "application/ogg" && file_exists( $path ) ) {
+ // Special code for ogg - detect if it's video (theora),
+ // else label it as sound.
+ if ( $mime == 'application/ogg' && file_exists( $path ) ) {
// Read a chunk of the file
$f = fopen( $path, "rt" );
@@ -906,7 +974,7 @@ class MimeMagic {
$head = strtolower( $head );
- # This is an UGLY HACK, file should be parsed correctly
+ // This is an UGLY HACK, file should be parsed correctly
if ( strpos( $head, 'theora' ) !== false ) return MEDIATYPE_VIDEO;
elseif ( strpos( $head, 'vorbis' ) !== false ) return MEDIATYPE_AUDIO;
elseif ( strpos( $head, 'flac' ) !== false ) return MEDIATYPE_AUDIO;
@@ -914,58 +982,69 @@ class MimeMagic {
else return MEDIATYPE_MULTIMEDIA;
}
- # check for entry for full mime type
+ // Check for entry for full mime type
if( $mime ) {
$type = $this->findMediaType( $mime );
- if( $type !== MEDIATYPE_UNKNOWN ) return $type;
+ if ( $type !== MEDIATYPE_UNKNOWN ) {
+ return $type;
+ }
}
- # Check for entry for file extension
+ // Check for entry for file extension
if ( $path ) {
$i = strrpos( $path, '.' );
$e = strtolower( $i ? substr( $path, $i + 1 ) : '' );
- # TODO: look at multi-extension if this fails, parse from full path
-
+ // TODO: look at multi-extension if this fails, parse from full path
$type = $this->findMediaType( '.' . $e );
- if ( $type !== MEDIATYPE_UNKNOWN ) return $type;
+ if ( $type !== MEDIATYPE_UNKNOWN ) {
+ return $type;
+ }
}
- # Check major mime type
- if( $mime ) {
+ // Check major mime type
+ if ( $mime ) {
$i = strpos( $mime, '/' );
- if( $i !== false ) {
+ if ( $i !== false ) {
$major = substr( $mime, 0, $i );
$type = $this->findMediaType( $major );
- if( $type !== MEDIATYPE_UNKNOWN ) return $type;
+ if ( $type !== MEDIATYPE_UNKNOWN ) {
+ return $type;
+ }
}
}
- if( !$type ) $type = MEDIATYPE_UNKNOWN;
+ if( !$type ) {
+ $type = MEDIATYPE_UNKNOWN;
+ }
return $type;
}
- /** returns a media code matching the given mime type or file extension.
- * File extensions are represented by a string starting with a dot (.) to
- * distinguish them from mime types.
- *
- * This funktion relies on the mapping defined by $this->mMediaTypes
- * @access private
- */
+ /**
+ * Returns a media code matching the given mime type or file extension.
+ * File extensions are represented by a string starting with a dot (.) to
+ * distinguish them from mime types.
+ *
+ * This funktion relies on the mapping defined by $this->mMediaTypes
+ * @access private
+ */
function findMediaType( $extMime ) {
- if ( strpos( $extMime, '.' ) === 0 ) { #if it's an extension, look up the mime types
+ if ( strpos( $extMime, '.' ) === 0 ) {
+ // If it's an extension, look up the mime types
$m = $this->getTypesForExtension( substr( $extMime, 1 ) );
- if ( !$m ) return MEDIATYPE_UNKNOWN;
+ if ( !$m ) {
+ return MEDIATYPE_UNKNOWN;
+ }
$m = explode( ' ', $m );
} else {
- # Normalize mime type
+ // Normalize mime type
if ( isset( $this->mMimeTypeAliases[$extMime] ) ) {
$extMime = $this->mMimeTypeAliases[$extMime];
}
- $m = array($extMime);
+ $m = array( $extMime );
}
foreach ( $m as $mime ) {
@@ -994,6 +1073,8 @@ class MimeMagic {
/**
* Get a cached instance of IEContentAnalyzer
+ *
+ * @return IEContentAnalyzer
*/
protected function getIEContentAnalyzer() {
if ( is_null( $this->mIEAnalyzer ) ) {
diff --git a/includes/Namespace.php b/includes/Namespace.php
index 47dc3c5f..95c167b2 100644
--- a/includes/Namespace.php
+++ b/includes/Namespace.php
@@ -5,35 +5,6 @@
*/
/**
- * Definitions of the NS_ constants are in Defines.php
- * @private
- */
-$wgCanonicalNamespaceNames = array(
- NS_MEDIA => 'Media',
- NS_SPECIAL => 'Special',
- NS_TALK => 'Talk',
- NS_USER => 'User',
- NS_USER_TALK => 'User_talk',
- NS_PROJECT => 'Project',
- NS_PROJECT_TALK => 'Project_talk',
- NS_FILE => 'File',
- NS_FILE_TALK => 'File_talk',
- NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
- NS_TEMPLATE => 'Template',
- NS_TEMPLATE_TALK => 'Template_talk',
- NS_HELP => 'Help',
- NS_HELP_TALK => 'Help_talk',
- NS_CATEGORY => 'Category',
- NS_CATEGORY_TALK => 'Category_talk',
-);
-
-/// @todo UGLY UGLY
-if( is_array( $wgExtraNamespaces ) ) {
- $wgCanonicalNamespaceNames = $wgCanonicalNamespaceNames + $wgExtraNamespaces;
-}
-
-/**
* This is a utility class with only static functions
* for dealing with namespaces that encodes all the
* "magic" behaviors of them based on index. The textual
@@ -54,6 +25,24 @@ class MWNamespace {
private static $alwaysCapitalizedNamespaces = array( NS_SPECIAL, NS_USER, NS_MEDIAWIKI );
/**
+ * Throw an exception when trying to get the subject or talk page
+ * for a given namespace where it does not make sense.
+ * Special namespaces are defined in includes/define.php and have
+ * a value below 0 (ex: NS_SPECIAL = -1 , NS_MEDIA = -2)
+ *
+ * @param $index
+ * @param $method
+ *
+ * @return true
+ */
+ private static function isMethodValidFor( $index, $method ) {
+ if( $index < NS_MAIN ) {
+ throw new MWException( "$method does not make any sense for given namespace $index" );
+ }
+ return true;
+ }
+
+ /**
* Can pages in the given namespace be moved?
*
* @param $index Int: namespace index
@@ -92,6 +81,7 @@ class MWNamespace {
* @return int
*/
public static function getTalk( $index ) {
+ self::isMethodValidFor( $index, __METHOD__ );
return self::isTalk( $index )
? $index
: $index + 1;
@@ -99,18 +89,48 @@ class MWNamespace {
/**
* Get the subject namespace index for a given namespace
+ * Special namespaces (NS_MEDIA, NS_SPECIAL) are always the subject.
*
* @param $index Int: Namespace index
* @return int
*/
public static function getSubject( $index ) {
+ # Handle special namespaces
+ if( $index < NS_MAIN ) {
+ return $index;
+ }
+
return self::isTalk( $index )
? $index - 1
: $index;
}
/**
+ * Get the associated namespace.
+ * For talk namespaces, returns the subject (non-talk) namespace
+ * For subject (non-talk) namespaces, returns the talk namespace
+ *
+ * @param $index Int: namespace index
+ * @return int or null if no associated namespace could be found
+ */
+ public static function getAssociated( $index ) {
+ self::isMethodValidFor( $index, __METHOD__ );
+
+ if( self::isMain( $index ) ) {
+ return self::getTalk( $index );
+ } elseif( self::isTalk( $index ) ) {
+ return self::getSubject( $index );
+ } else {
+ return null;
+ }
+ }
+
+ /**
* Returns whether the specified namespace exists
+ *
+ * @param $index
+ *
+ * @return bool
*/
public static function exists( $index ) {
$nslist = self::getCanonicalNamespaces();
@@ -237,6 +257,21 @@ class MWNamespace {
}
/**
+ * Get a list of all namespace indices which are considered to contain content
+ * @return array of namespace indices
+ */
+ public static function getContentNamespaces() {
+ global $wgContentNamespaces;
+ if( !is_array( $wgContentNamespaces ) || $wgContentNamespaces === array() ) {
+ return NS_MAIN;
+ } elseif ( !in_array( NS_MAIN, $wgContentNamespaces ) ) {
+ // always force NS_MAIN to be part of array (to match the algorithm used by isContent)
+ return array_merge( array( NS_MAIN ), $wgContentNamespaces );
+ } else {
+ return $wgContentNamespaces;
+ }
+ }
+ /**
* Is the namespace first-letter capitalized?
*
* @param $index int Index to check
@@ -261,4 +296,17 @@ class MWNamespace {
// Default to the global setting
return $wgCapitalLinks;
}
+
+ /**
+ * Does the namespace (potentially) have different aliases for different
+ * genders. Not all languages make a distinction here.
+ *
+ * @since 1.18
+ * @param $index int Index to check
+ * @return bool
+ */
+ public static function hasGenderDistinction( $index ) {
+ return $index == NS_USER || $index == NS_USER_TALK;
+ }
+
}
diff --git a/includes/ObjectCache.php b/includes/ObjectCache.php
deleted file mode 100644
index 05ae9c9c..00000000
--- a/includes/ObjectCache.php
+++ /dev/null
@@ -1,123 +0,0 @@
-<?php
-/**
- * Functions to get cache objects
- *
- * @file
- * @ingroup Cache
- */
-
-/**
- * FakeMemCachedClient imitates the API of memcached-client v. 0.1.2.
- * It acts as a memcached server with no RAM, that is, all objects are
- * cleared the moment they are set. All set operations succeed and all
- * get operations return null.
- * @ingroup Cache
- */
-class FakeMemCachedClient {
- function add ($key, $val, $exp = 0) { return true; }
- function decr ($key, $amt=1) { return null; }
- function delete ($key, $time = 0) { return false; }
- function disconnect_all () { }
- function enable_compress ($enable) { }
- function forget_dead_hosts () { }
- function get ($key) { return null; }
- function get_multi ($keys) { return array_pad(array(), count($keys), null); }
- function incr ($key, $amt=1) { return null; }
- function replace ($key, $value, $exp=0) { return false; }
- function run_command ($sock, $cmd) { return null; }
- function set ($key, $value, $exp=0){ return true; }
- function set_compress_threshold ($thresh){ }
- function set_debug ($dbg) { }
- function set_servers ($list) { }
-}
-
-global $wgCaches;
-$wgCaches = array();
-
-/**
- * Get a cache object.
- * @param $inputType Integer: cache type, one the the CACHE_* constants.
- */
-function &wfGetCache( $inputType ) {
- global $wgCaches, $wgMemCachedServers, $wgMemCachedDebug, $wgMemCachedPersistent;
- $cache = false;
-
- if ( $inputType == CACHE_ANYTHING ) {
- reset( $wgCaches );
- $type = key( $wgCaches );
- if ( $type === false || $type === CACHE_NONE ) {
- $type = CACHE_DB;
- }
- } else {
- $type = $inputType;
- }
-
- if ( $type == CACHE_MEMCACHED ) {
- if ( !array_key_exists( CACHE_MEMCACHED, $wgCaches ) ) {
- $wgCaches[CACHE_MEMCACHED] = new MemCachedClientforWiki(
- array('persistant' => $wgMemCachedPersistent, 'compress_threshold' => 1500 ) );
- $wgCaches[CACHE_MEMCACHED]->set_servers( $wgMemCachedServers );
- $wgCaches[CACHE_MEMCACHED]->set_debug( $wgMemCachedDebug );
- }
- $cache =& $wgCaches[CACHE_MEMCACHED];
- } elseif ( $type == CACHE_ACCEL ) {
- if ( !array_key_exists( CACHE_ACCEL, $wgCaches ) ) {
- if ( function_exists( 'eaccelerator_get' ) ) {
- $wgCaches[CACHE_ACCEL] = new eAccelBagOStuff;
- } elseif ( function_exists( 'apc_fetch') ) {
- $wgCaches[CACHE_ACCEL] = new APCBagOStuff;
- } elseif( function_exists( 'xcache_get' ) && wfIniGetBool( 'xcache.var_size' ) ) {
- $wgCaches[CACHE_ACCEL] = new XCacheBagOStuff();
- } elseif( function_exists( 'wincache_ucache_get' ) ) {
- $wgCaches[CACHE_ACCEL] = new WinCacheBagOStuff();
- } else {
- $wgCaches[CACHE_ACCEL] = false;
- }
- }
- if ( $wgCaches[CACHE_ACCEL] !== false ) {
- $cache =& $wgCaches[CACHE_ACCEL];
- }
- } elseif ( $type == CACHE_DBA ) {
- if ( !array_key_exists( CACHE_DBA, $wgCaches ) ) {
- $wgCaches[CACHE_DBA] = new DBABagOStuff;
- }
- $cache =& $wgCaches[CACHE_DBA];
- }
-
- if ( $type == CACHE_DB || ( $inputType == CACHE_ANYTHING && $cache === false ) ) {
- if ( !array_key_exists( CACHE_DB, $wgCaches ) ) {
- $wgCaches[CACHE_DB] = new SqlBagOStuff('objectcache');
- }
- $cache =& $wgCaches[CACHE_DB];
- }
-
- if ( $cache === false ) {
- if ( !array_key_exists( CACHE_NONE, $wgCaches ) ) {
- $wgCaches[CACHE_NONE] = new FakeMemCachedClient;
- }
- $cache =& $wgCaches[CACHE_NONE];
- }
-
- return $cache;
-}
-
-/** Get the main cache object */
-function &wfGetMainCache() {
- global $wgMainCacheType;
- $ret =& wfGetCache( $wgMainCacheType );
- return $ret;
-}
-
-/** Get the cache object used by the message cache */
-function &wfGetMessageCacheStorage() {
- global $wgMessageCacheType;
- $ret =& wfGetCache( $wgMessageCacheType );
- return $ret;
-}
-
-/** Get the cache object used by the parser cache */
-function &wfGetParserCacheStorage() {
- global $wgParserCacheType;
- $ret =& wfGetCache( $wgParserCacheType );
- return $ret;
-}
diff --git a/includes/OutputHandler.php b/includes/OutputHandler.php
index 8f310da2..4112f8a2 100644
--- a/includes/OutputHandler.php
+++ b/includes/OutputHandler.php
@@ -7,6 +7,10 @@
/**
* Standard output handler for use with ob_start
+ *
+ * @param $s string
+ *
+ * @return string
*/
function wfOutputHandler( $s ) {
global $wgDisableOutputCompression, $wgValidateAllHtml;
@@ -40,9 +44,11 @@ function wfOutputHandler( $s ) {
* the currently-requested URL.
* This isn't on WebRequest because we need it when things aren't initialized
* @private
+ *
+ * @return string
*/
function wfRequestExtension() {
- /// @todo Fixme: this sort of dupes some code in WebRequest::getRequestUrl()
+ /// @todo FIXME: this sort of dupes some code in WebRequest::getRequestUrl()
if( isset( $_SERVER['REQUEST_URI'] ) ) {
// Strip the query string...
list( $path ) = explode( '?', $_SERVER['REQUEST_URI'], 2 );
@@ -64,6 +70,10 @@ function wfRequestExtension() {
/**
* Handler that compresses data with gzip if allowed by the Accept header.
* Unlike ob_gzhandler, it works for HEAD requests too.
+ *
+ * @param $s string
+ *
+ * @return string
*/
function wfGzipHandler( $s ) {
if( !function_exists( 'gzencode' ) || headers_sent() ) {
@@ -105,6 +115,10 @@ function wfGzipHandler( $s ) {
/**
* Mangle flash policy tags which open up the site to XSS attacks.
+ *
+ * @param $s string
+ *
+ * @return string
*/
function wfMangleFlashPolicy( $s ) {
# Avoid weird excessive memory usage in PCRE on big articles
@@ -117,6 +131,8 @@ function wfMangleFlashPolicy( $s ) {
/**
* Add a Content-Length header if possible. This makes it cooperate with squid better.
+ *
+ * @param $length int
*/
function wfDoContentLength( $length ) {
if ( !headers_sent() && $_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.0' ) {
@@ -126,6 +142,10 @@ function wfDoContentLength( $length ) {
/**
* Replace the output with an error if the HTML is not valid
+ *
+ * @param $s string
+ *
+ * @return string
*/
function wfHtmlValidationHandler( $s ) {
diff --git a/includes/OutputPage.php b/includes/OutputPage.php
index 6ecc2754..419bbdf7 100644
--- a/includes/OutputPage.php
+++ b/includes/OutputPage.php
@@ -4,63 +4,211 @@ if ( !defined( 'MEDIAWIKI' ) ) {
}
/**
+ * This class should be covered by a general architecture document which does
+ * not exist as of January 2011. This is one of the Core classes and should
+ * be read at least once by any new developers.
+ *
+ * This class is used to prepare the final rendering. A skin is then
+ * applied to the output parameters (links, javascript, html, categories ...).
+ *
+ * @todo FIXME: Another class handles sending the whole page to the client.
+ *
+ * Some comments comes from a pairing session between Zak Greant and Ashar Voultoiz
+ * in November 2010.
+ *
* @todo document
*/
-class OutputPage {
- var $mMetatags = array(), $mKeywords = array(), $mLinktags = array();
+class OutputPage extends ContextSource {
+ /// Should be private. Used with addMeta() which adds <meta>
+ var $mMetatags = array();
+
+ /// <meta keyworkds="stuff"> most of the time the first 10 links to an article
+ var $mKeywords = array();
+
+ var $mLinktags = array();
+
+ /// Additional stylesheets. Looks like this is for extensions. Might be replaced by resource loader.
var $mExtStyles = array();
- var $mPagetitle = '', $mBodytext = '';
+
+ /// Should be private - has getter and setter. Contains the HTML title
+ var $mPagetitle = '';
+
+ /// Contains all of the <body> content. Should be private we got set/get accessors and the append() method.
+ var $mBodytext = '';
/**
- * Holds the debug lines that will be outputted as comments in page source if
+ * Holds the debug lines that will be output as comments in page source if
* $wgDebugComments is enabled. See also $wgShowDebug.
* TODO: make a getter method for this
*/
- public $mDebugtext = '';
+ public $mDebugtext = ''; // TODO: we might want to replace it by wfDebug() wfDebugLog()
- var $mHTMLtitle = '', $mIsarticle = true, $mPrintable = false;
- var $mSubtitle = '', $mRedirect = '', $mStatusCode;
- var $mLastModified = '', $mETag = false;
- var $mCategoryLinks = array(), $mCategories = array(), $mLanguageLinks = array();
+ /// Should be private. Stores contents of <title> tag
+ var $mHTMLtitle = '';
+
+ /// Should be private. Is the displayed content related to the source of the corresponding wiki article.
+ var $mIsarticle = true;
+
+ /**
+ * Should be private. We have to set isPrintable(). Some pages should
+ * never be printed (ex: redirections).
+ */
+ var $mPrintable = false;
+
+ /**
+ * Should be private. We have set/get/append methods.
+ *
+ * Contains the page subtitle. Special pages usually have some links here.
+ * Don't confuse with site subtitle added by skins.
+ */
+ var $mSubtitle = '';
+
+ var $mRedirect = '';
+ var $mStatusCode;
+
+ /**
+ * mLastModified and mEtag are used for sending cache control.
+ * The whole caching system should probably be moved into its own class.
+ */
+ var $mLastModified = '';
+
+ /**
+ * Should be private. No getter but used in sendCacheControl();
+ * Contains an HTTP Entity Tags (see RFC 2616 section 3.13) which is used
+ * as a unique identifier for the content. It is later used by the client
+ * to compare its cached version with the server version. Client sends
+ * headers If-Match and If-None-Match containing its locally cached ETAG value.
+ *
+ * To get more information, you will have to look at HTTP/1.1 protocol which
+ * is properly described in RFC 2616 : http://tools.ietf.org/html/rfc2616
+ */
+ var $mETag = false;
+
+ var $mCategoryLinks = array();
+ var $mCategories = array();
+
+ /// Should be private. Array of Interwiki Prefixed (non DB key) Titles (e.g. 'fr:Test page')
+ var $mLanguageLinks = array();
+
+ /**
+ * Should be private. Used for JavaScript (pre resource loader)
+ * We should split js / css.
+ * mScripts content is inserted as is in <head> by Skin. This might contains
+ * either a link to a stylesheet or inline css.
+ */
+ var $mScripts = '';
+
+ /**
+ * Inline CSS styles. Use addInlineStyle() sparsingly
+ */
+ var $mInlineStyles = '';
+
+ //
+ var $mLinkColours;
+
+ /**
+ * Used by skin template.
+ * Example: $tpl->set( 'displaytitle', $out->mPageLinkTitle );
+ */
+ var $mPageLinkTitle = '';
- var $mScripts = '', $mInlineStyles = '', $mLinkColours, $mPageLinkTitle = '', $mHeadItems = array();
+ /// Array of elements in <head>. Parser might add its own headers!
+ var $mHeadItems = array();
+
+ // @todo FIXME: Next variables probably comes from the resource loader
var $mModules = array(), $mModuleScripts = array(), $mModuleStyles = array(), $mModuleMessages = array();
var $mResourceLoader;
+ var $mJsConfigVars = array();
+
+ /** @todo FIXME: Is this still used ?*/
var $mInlineMsg = array();
var $mTemplateIds = array();
+ var $mImageTimeKeys = array();
+
+ var $mRedirectCode = '';
+
+ var $mFeedLinksAppendQuery = null;
- var $mAllowUserJs;
- var $mSuppressQuickbar = false;
+ # What level of 'untrustworthiness' is allowed in CSS/JS modules loaded on this page?
+ # @see ResourceLoaderModule::$origin
+ # ResourceLoaderModule::ORIGIN_ALL is assumed unless overridden;
+ protected $mAllowedModules = array(
+ ResourceLoaderModule::TYPE_COMBINED => ResourceLoaderModule::ORIGIN_ALL,
+ );
+
+ /**
+ * @EasterEgg I just love the name for this self documenting variable.
+ * @todo document
+ */
var $mDoNothing = false;
+
+ // Parser related.
var $mContainsOldMagic = 0, $mContainsNewMagic = 0;
+
+ /**
+ * Should be private. Has get/set methods properly documented.
+ * Stores "article flag" toggle.
+ */
var $mIsArticleRelated = true;
- protected $mParserOptions = null; // lazy initialised, use parserOptions()
+ /// lazy initialised, use parserOptions()
+ protected $mParserOptions = null;
+
+ /**
+ * Handles the atom / rss links.
+ * We probably only support atom in 2011.
+ * Looks like a private variable.
+ * @see $wgAdvertisedFeedTypes
+ */
var $mFeedLinks = array();
+ // Gwicke work on squid caching? Roughly from 2003.
var $mEnableClientCache = true;
+
+ /**
+ * Flag if output should only contain the body of the article.
+ * Should be private.
+ */
var $mArticleBodyOnly = false;
var $mNewSectionLink = false;
var $mHideNewSectionLink = false;
+
+ /**
+ * Comes from the parser. This was probably made to load CSS/JS only
+ * if we had <gallery>. Used directly in CategoryPage.php
+ * Looks like resource loader can replace this.
+ */
var $mNoGallery = false;
+
+ // should be private.
var $mPageTitleActionText = '';
var $mParseWarnings = array();
+
+ // Cache stuff. Looks like mEnableClientCache
var $mSquidMaxage = 0;
+
+ // @todo document
var $mPreventClickjacking = true;
+
+ /// should be private. To include the variable {{REVISIONID}}
var $mRevisionId = null;
- protected $mTitle = null;
+
+ var $mFileVersion = null;
/**
* An array of stylesheet filenames (relative from skins path), with options
* for CSS media, IE conditions, and RTL/LTR direction.
* For internal use; add settings in the skin via $this->addStyle()
+ *
+ * Style again! This seems like a code duplication since we already have
+ * mStyles. This is what makes OpenSource amazing.
*/
var $styles = array();
/**
- * Whether to load jQuery core.
+ * Whether jQuery is already handled.
*/
protected $mJQueryDone = false;
@@ -72,12 +220,12 @@ class OutputPage {
);
/**
- * Constructor
- * Initialise private variables
+ * Constructor for OutputPage. This should not be called directly.
+ * Instead a new RequestContext should be created and it will implicitly create
+ * a OutputPage tied to that context.
*/
- function __construct() {
- global $wgAllowUserJs;
- $this->mAllowUserJs = $wgAllowUserJs;
+ function __construct( IContextSource $context = null ) {
+ $this->setContext( $context );
}
/**
@@ -105,7 +253,6 @@ class OutputPage {
* Set the HTTP status code to send with the output.
*
* @param $statusCode Integer
- * @return nothing
*/
public function setStatusCode( $statusCode ) {
$this->mStatusCode = $statusCode;
@@ -115,8 +262,8 @@ class OutputPage {
* Add a new <meta> tag
* To add an http-equiv meta tag, precede the name with "http:"
*
- * @param $name tag name
- * @param $val tag value
+ * @param $name String tag name
+ * @param $val String tag value
*/
function addMeta( $name, $val ) {
array_push( $this->mMetatags, array( $name, $val ) );
@@ -152,11 +299,24 @@ class OutputPage {
* "rel" attribute will be automatically added
*/
function addMetadataLink( $linkarr ) {
+ $linkarr['rel'] = $this->getMetadataAttribute();
+ $this->addLink( $linkarr );
+ }
+
+ /**
+ * Get the value of the "rel" attribute for metadata links
+ *
+ * @return String
+ */
+ public function getMetadataAttribute() {
# note: buggy CC software only reads first "meta" link
static $haveMeta = false;
- $linkarr['rel'] = $haveMeta ? 'alternate meta' : 'meta';
- $this->addLink( $linkarr );
- $haveMeta = true;
+ if ( $haveMeta ) {
+ return 'alternate meta';
+ } else {
+ $haveMeta = true;
+ return 'meta';
+ }
}
/**
@@ -181,7 +341,7 @@ class OutputPage {
}
/**
- * Get all links added by extensions
+ * Get all styles added by extensions
*
* @return Array
*/
@@ -228,12 +388,41 @@ class OutputPage {
}
/**
+ * Filter an array of modules to remove insufficiently trustworthy members, and modules
+ * which are no longer registered (eg a page is cached before an extension is disabled)
+ * @param $modules Array
+ * @param $position String if not null, only return modules with this position
+ * @param $type string
+ * @return Array
+ */
+ protected function filterModules( $modules, $position = null, $type = ResourceLoaderModule::TYPE_COMBINED ){
+ $resourceLoader = $this->getResourceLoader();
+ $filteredModules = array();
+ foreach( $modules as $val ){
+ $module = $resourceLoader->getModule( $val );
+ if( $module instanceof ResourceLoaderModule
+ && $module->getOrigin() <= $this->getAllowedModules( $type )
+ && ( is_null( $position ) || $module->getPosition() == $position ) )
+ {
+ $filteredModules[] = $val;
+ }
+ }
+ return $filteredModules;
+ }
+
+ /**
* Get the list of modules to include on this page
*
+ * @param $filter Bool whether to filter out insufficiently trustworthy modules
+ * @param $position String if not null, only return modules with this position
+ * @param $param string
* @return Array of module names
*/
- public function getModules() {
- return array_values( array_unique( $this->mModules ) );
+ public function getModules( $filter = false, $position = null, $param = 'mModules' ) {
+ $modules = array_values( array_unique( $this->$param ) );
+ return $filter
+ ? $this->filterModules( $modules, $position )
+ : $modules;
}
/**
@@ -249,10 +438,14 @@ class OutputPage {
/**
* Get the list of module JS to include on this page
+ *
+ * @param $filter
+ * @param $position
+ *
* @return array of module names
*/
- public function getModuleScripts() {
- return array_values( array_unique( $this->mModuleScripts ) );
+ public function getModuleScripts( $filter = false, $position = null ) {
+ return $this->getModules( $filter, $position, 'mModuleScripts' );
}
/**
@@ -269,10 +462,13 @@ class OutputPage {
/**
* Get the list of module CSS to include on this page
*
+ * @param $filter
+ * @param $position
+ *
* @return Array of module names
*/
- public function getModuleStyles() {
- return array_values( array_unique( $this->mModuleStyles ) );
+ public function getModuleStyles( $filter = false, $position = null ) {
+ return $this->getModules( $filter, $position, 'mModuleStyles' );
}
/**
@@ -289,10 +485,13 @@ class OutputPage {
/**
* Get the list of module messages to include on this page
*
+ * @param $filter
+ * @param $position
+ *
* @return Array of module names
*/
- public function getModuleMessages() {
- return array_values( array_unique( $this->mModuleMessages ) );
+ public function getModuleMessages( $filter = false, $position = null ) {
+ return $this->getModules( $filter, $position, 'mModuleMessages' );
}
/**
@@ -375,10 +574,12 @@ class OutputPage {
*
* Side effect: sets mLastModified for Last-Modified header
*
+ * @param $timestamp string
+ *
* @return Boolean: true iff cache-ok headers was sent.
*/
public function checkLastModified( $timestamp ) {
- global $wgCachePages, $wgCacheEpoch, $wgUser, $wgRequest;
+ global $wgCachePages, $wgCacheEpoch;
if ( !$timestamp || $timestamp == '19700101000000' ) {
wfDebug( __METHOD__ . ": CACHE DISABLED, NO TIMESTAMP\n" );
@@ -388,7 +589,7 @@ class OutputPage {
wfDebug( __METHOD__ . ": CACHE DISABLED\n", false );
return false;
}
- if( $wgUser->getOption( 'nocache' ) ) {
+ if( $this->getUser()->getOption( 'nocache' ) ) {
wfDebug( __METHOD__ . ": USER DISABLED CACHE\n", false );
return false;
}
@@ -396,7 +597,7 @@ class OutputPage {
$timestamp = wfTimestamp( TS_MW, $timestamp );
$modifiedTimes = array(
'page' => $timestamp,
- 'user' => $wgUser->getTouched(),
+ 'user' => $this->getUser()->getTouched(),
'epoch' => $wgCacheEpoch
);
wfRunHooks( 'OutputPageCheckLastModified', array( &$modifiedTimes ) );
@@ -445,7 +646,7 @@ class OutputPage {
# Give a 304 response code and disable body output
wfDebug( __METHOD__ . ": NOT MODIFIED, $info\n", false );
ini_set( 'zlib.output_compression', 0 );
- $wgRequest->response()->header( "HTTP/1.1 304 Not Modified" );
+ $this->getRequest()->response()->header( "HTTP/1.1 304 Not Modified" );
$this->sendCacheControl();
$this->disable();
@@ -538,6 +739,8 @@ class OutputPage {
/**
* "HTML title" means the contents of <title>.
* It is stored as plain, unescaped text and will be run through htmlspecialchars in the skin file.
+ *
+ * @param $name string
*/
public function setHTMLTitle( $name ) {
$this->mHTMLtitle = $name;
@@ -557,6 +760,8 @@ class OutputPage {
* This function allows good tags like \<sup\> in the \<h1\> tag, but not bad tags like \<script\>.
* This function automatically sets \<title\> to the same content as \<h1\> but with all tags removed.
* Bad tags that were escaped in \<h1\> will still be escaped in \<title\>, and good tags like \<i\> will be dropped entirely.
+ *
+ * @param $name string
*/
public function setPageTitle( $name ) {
# change "<script>foo&bar</script>" to "&lt;script&gt;foo&amp;bar&lt;/script&gt;"
@@ -583,23 +788,9 @@ class OutputPage {
* @param $t Title object
*/
public function setTitle( $t ) {
- $this->mTitle = $t;
+ $this->getContext()->setTitle( $t );
}
- /**
- * Get the Title object used in this instance
- *
- * @return Title
- */
- public function getTitle() {
- if ( $this->mTitle instanceof Title ) {
- return $this->mTitle;
- } else {
- wfDebug( __METHOD__ . " called and \$mTitle is null. Return \$wgTitle for sanity\n" );
- global $wgTitle;
- return $wgTitle;
- }
- }
/**
* Replace the subtile with $str
@@ -826,7 +1017,7 @@ class OutputPage {
/**
* Get the list of language links
*
- * @return Associative array mapping language code to the page name
+ * @return Array of Interwiki Prefixed (non DB key) Titles (e.g. 'fr:Test page')
*/
public function getLanguageLinks() {
return $this->mLanguageLinks;
@@ -835,10 +1026,10 @@ class OutputPage {
/**
* Add an array of categories, with names in the keys
*
- * @param $categories Associative array mapping category name to its sort key
+ * @param $categories Array mapping category name => sort key
*/
public function addCategoryLinks( $categories ) {
- global $wgUser, $wgContLang;
+ global $wgContLang;
if ( !is_array( $categories ) || count( $categories ) == 0 ) {
return;
@@ -851,12 +1042,13 @@ class OutputPage {
# Fetch existence plus the hiddencat property
$dbr = wfGetDB( DB_SLAVE );
- $pageTable = $dbr->tableName( 'page' );
- $where = $lb->constructSet( 'page', $dbr );
- $propsTable = $dbr->tableName( 'page_props' );
- $sql = "SELECT page_id, page_namespace, page_title, page_len, page_is_redirect, page_latest, pp_value
- FROM $pageTable LEFT JOIN $propsTable ON pp_propname='hiddencat' AND pp_page=page_id WHERE $where";
- $res = $dbr->query( $sql, __METHOD__ );
+ $res = $dbr->select( array( 'page', 'page_props' ),
+ array( 'page_id', 'page_namespace', 'page_title', 'page_len', 'page_is_redirect', 'page_latest', 'pp_value' ),
+ $lb->constructSet( 'page', $dbr ),
+ __METHOD__,
+ array(),
+ array( 'page_props' => array( 'LEFT JOIN', array( 'pp_propname' => 'hiddencat', 'pp_page = page_id' ) ) )
+ );
# Add the results to the link cache
$lb->addResultToCache( LinkCache::singleton(), $res );
@@ -876,7 +1068,6 @@ class OutputPage {
# Add the remaining categories to the skin
if ( wfRunHooks( 'OutputPageMakeCategoryLinks', array( &$this, $categories, &$this->mCategoryLinks ) ) ) {
- $sk = $wgUser->getSkin();
foreach ( $categories as $category => $type ) {
$origcategory = $category;
$title = Title::makeTitleSafe( NS_CATEGORY, $category );
@@ -888,7 +1079,7 @@ class OutputPage {
}
$text = $wgContLang->convertHtml( $title->getText() );
$this->mCategories[] = $title->getText();
- $this->mCategoryLinks[$type][] = $sk->link( $title, $text );
+ $this->mCategoryLinks[$type][] = Linker::link( $title, $text );
}
}
}
@@ -896,7 +1087,7 @@ class OutputPage {
/**
* Reset the category links (but not the category list) and add $categories
*
- * @param $categories Associative array mapping category name to its sort key
+ * @param $categories Array mapping category name => sort key
*/
public function setCategoryLinks( $categories ) {
$this->mCategoryLinks = array();
@@ -925,36 +1116,58 @@ class OutputPage {
}
/**
- * Suppress the quickbar from the output, only for skin supporting
- * the quickbar
+ * Do not allow scripts which can be modified by wiki users to load on this page;
+ * only allow scripts bundled with, or generated by, the software.
*/
- public function suppressQuickbar() {
- $this->mSuppressQuickbar = true;
+ public function disallowUserJs() {
+ $this->reduceAllowedModules(
+ ResourceLoaderModule::TYPE_SCRIPTS,
+ ResourceLoaderModule::ORIGIN_CORE_INDIVIDUAL
+ );
}
/**
- * Return whether the quickbar should be suppressed from the output
- *
+ * Return whether user JavaScript is allowed for this page
+ * @deprecated since 1.18 Load modules with ResourceLoader, and origin and
+ * trustworthiness is identified and enforced automagically.
* @return Boolean
*/
- public function isQuickbarSuppressed() {
- return $this->mSuppressQuickbar;
+ public function isUserJsAllowed() {
+ return $this->getAllowedModules( ResourceLoaderModule::TYPE_SCRIPTS ) >= ResourceLoaderModule::ORIGIN_USER_INDIVIDUAL;
}
/**
- * Remove user JavaScript from scripts to load
+ * Show what level of JavaScript / CSS untrustworthiness is allowed on this page
+ * @see ResourceLoaderModule::$origin
+ * @param $type String ResourceLoaderModule TYPE_ constant
+ * @return Int ResourceLoaderModule ORIGIN_ class constant
*/
- public function disallowUserJs() {
- $this->mAllowUserJs = false;
+ public function getAllowedModules( $type ){
+ if( $type == ResourceLoaderModule::TYPE_COMBINED ){
+ return min( array_values( $this->mAllowedModules ) );
+ } else {
+ return isset( $this->mAllowedModules[$type] )
+ ? $this->mAllowedModules[$type]
+ : ResourceLoaderModule::ORIGIN_ALL;
+ }
}
/**
- * Return whether user JavaScript is allowed for this page
- *
- * @return Boolean
+ * Set the highest level of CSS/JS untrustworthiness allowed
+ * @param $type String ResourceLoaderModule TYPE_ constant
+ * @param $level Int ResourceLoaderModule class constant
*/
- public function isUserJsAllowed() {
- return $this->mAllowUserJs;
+ public function setAllowedModules( $type, $level ){
+ $this->mAllowedModules[$type] = $level;
+ }
+
+ /**
+ * As for setAllowedModules(), but don't inadvertantly make the page more accessible
+ * @param $type String
+ * @param $level Int ResourceLoaderModule class constant
+ */
+ public function reduceAllowedModules( $type, $level ){
+ $this->mAllowedModules[$type] = min( $this->getAllowedModules($type), $level );
}
/**
@@ -1001,19 +1214,11 @@ class OutputPage {
}
/**
- * @deprecated use parserOptions() instead
- */
- public function setParserOptions( $options ) {
- wfDeprecated( __METHOD__ );
- return $this->parserOptions( $options );
- }
-
- /**
* Get/set the ParserOptions object to use for wikitext parsing
*
* @param $options either the ParserOption to use or null to only get the
* current ParserOption object
- * @return current ParserOption object
+ * @return ParserOptions object
*/
public function parserOptions( $options = null ) {
if ( !$this->mParserOptions ) {
@@ -1035,7 +1240,7 @@ class OutputPage {
}
/**
- * Get the current revision ID
+ * Get the displayed revision ID
*
* @return Integer
*/
@@ -1044,6 +1249,49 @@ class OutputPage {
}
/**
+ * Set the displayed file version
+ *
+ * @param $file File|false
+ * @return Mixed: previous value
+ */
+ public function setFileVersion( $file ) {
+ $val = null;
+ if ( $file instanceof File && $file->exists() ) {
+ $val = array( 'time' => $file->getTimestamp(), 'sha1' => $file->getSha1() );
+ }
+ return wfSetVar( $this->mFileVersion, $val, true );
+ }
+
+ /**
+ * Get the displayed file version
+ *
+ * @return Array|null ('time' => MW timestamp, 'sha1' => sha1)
+ */
+ public function getFileVersion() {
+ return $this->mFileVersion;
+ }
+
+ /**
+ * Get the templates used on this page
+ *
+ * @return Array (namespace => dbKey => revId)
+ * @since 1.18
+ */
+ public function getTemplateIds() {
+ return $this->mTemplateIds;
+ }
+
+ /**
+ * Get the files used on this page
+ *
+ * @return Array (dbKey => array('time' => MW timestamp or null, 'sha1' => sha1 or ''))
+ * @since 1.18
+ */
+ public function getImageTimeKeys() {
+ return $this->mImageTimeKeys;
+ }
+
+ /**
* Convert wikitext to HTML and add it to the buffer
* Default assumes that the current page title will be used.
*
@@ -1067,7 +1315,7 @@ class OutputPage {
}
/**
- * Add wikitext with a custom Title object and
+ * Add wikitext with a custom Title object and tidy enabled.
*
* @param $text String: wikitext
* @param $title Title object
@@ -1119,43 +1367,6 @@ class OutputPage {
}
/**
- * Add wikitext to the buffer, assuming that this is the primary text for a page view
- * Saves the text into the parser cache if possible.
- *
- * @param $text String: wikitext
- * @param $article Article object
- * @param $cache Boolean
- * @deprecated Use Article::outputWikitext
- */
- public function addPrimaryWikiText( $text, $article, $cache = true ) {
- global $wgParser;
-
- wfDeprecated( __METHOD__ );
-
- $popts = $this->parserOptions();
- $popts->setTidy( true );
- $parserOutput = $wgParser->parse(
- $text, $article->mTitle,
- $popts, true, true, $this->mRevisionId
- );
- $popts->setTidy( false );
- if ( $cache && $article && $parserOutput->isCacheable() ) {
- $parserCache = ParserCache::singleton();
- $parserCache->save( $parserOutput, $article, $popts );
- }
-
- $this->addParserOutput( $parserOutput );
- }
-
- /**
- * @deprecated use addWikiTextTidy()
- */
- public function addSecondaryWikiText( $text, $linestart = true ) {
- wfDeprecated( __METHOD__ );
- $this->addWikiTextTitleTidy( $text, $this->getTitle(), $linestart );
- }
-
- /**
* Add a ParserOutput object, but without Html
*
* @param $parserOutput ParserOutput object
@@ -1173,14 +1384,22 @@ class OutputPage {
$this->mNoGallery = $parserOutput->getNoGallery();
$this->mHeadItems = array_merge( $this->mHeadItems, $parserOutput->getHeadItems() );
$this->addModules( $parserOutput->getModules() );
- // Versioning...
- foreach ( (array)$parserOutput->mTemplateIds as $ns => $dbks ) {
+ $this->addModuleScripts( $parserOutput->getModuleScripts() );
+ $this->addModuleStyles( $parserOutput->getModuleStyles() );
+ $this->addModuleMessages( $parserOutput->getModuleMessages() );
+
+ // Template versioning...
+ foreach ( (array)$parserOutput->getTemplateIds() as $ns => $dbks ) {
if ( isset( $this->mTemplateIds[$ns] ) ) {
$this->mTemplateIds[$ns] = $dbks + $this->mTemplateIds[$ns];
} else {
$this->mTemplateIds[$ns] = $dbks;
}
}
+ // File versioning...
+ foreach ( (array)$parserOutput->getImageTimeKeys() as $dbk => $data ) {
+ $this->mImageTimeKeys[$dbk] = $data;
+ }
// Hooks registered in the object
global $wgParserOutputHooks;
@@ -1227,24 +1446,37 @@ class OutputPage {
* @param $interface Boolean: use interface language ($wgLang instead of
* $wgContLang) while parsing language sensitive magic
* words like GRAMMAR and PLURAL
+ * @param $language Language object: target language object, will override
+ * $interface
* @return String: HTML
*/
- public function parse( $text, $linestart = true, $interface = false ) {
+ public function parse( $text, $linestart = true, $interface = false, $language = null ) {
global $wgParser;
+
if( is_null( $this->getTitle() ) ) {
throw new MWException( 'Empty $mTitle in ' . __METHOD__ );
}
+
$popts = $this->parserOptions();
if ( $interface ) {
$popts->setInterfaceMessage( true );
}
+ if ( $language !== null ) {
+ $oldLang = $popts->setTargetLanguage( $language );
+ }
+
$parserOutput = $wgParser->parse(
$text, $this->getTitle(), $popts,
$linestart, true, $this->mRevisionId
);
+
if ( $interface ) {
$popts->setInterfaceMessage( false );
}
+ if ( $language !== null ) {
+ $popts->setTargetLanguage( $oldLang );
+ }
+
return $parserOutput->getText();
}
@@ -1270,24 +1502,6 @@ class OutputPage {
}
/**
- * @deprecated
- *
- * @param $article Article
- * @return Boolean: true if successful, else false.
- */
- public function tryParserCache( &$article ) {
- wfDeprecated( __METHOD__ );
- $parserOutput = ParserCache::singleton()->get( $article, $article->getParserOptions() );
-
- if ( $parserOutput !== false ) {
- $this->addParserOutput( $parserOutput );
- return true;
- } else {
- return false;
- }
- }
-
- /**
* Set the value of the "s-maxage" part of the "Cache-control" HTTP header
*
* @param $maxage Integer: maximum cache time on the Squid, in seconds.
@@ -1299,7 +1513,9 @@ class OutputPage {
/**
* Use enableClientCache(false) to force it to send nocache headers
*
- * @param $state ??
+ * @param $state bool
+ *
+ * @return bool
*/
public function enableClientCache( $state ) {
return wfSetVar( $this->mEnableClientCache, $state );
@@ -1334,9 +1550,9 @@ class OutputPage {
* @return Boolean
*/
function uncacheableBecauseRequestVars() {
- global $wgRequest;
- return $wgRequest->getText( 'useskin', false ) === false
- && $wgRequest->getText( 'uselang', false ) === false;
+ $request = $this->getRequest();
+ return $request->getText( 'useskin', false ) === false
+ && $request->getText( 'uselang', false ) === false;
}
/**
@@ -1346,8 +1562,7 @@ class OutputPage {
* @return Boolean
*/
function haveCacheVaryCookies() {
- global $wgRequest;
- $cookieHeader = $wgRequest->getHeader( 'cookie' );
+ $cookieHeader = $this->getRequest()->getHeader( 'cookie' );
if ( $cookieHeader === false ) {
return false;
}
@@ -1367,8 +1582,8 @@ class OutputPage {
* Add an HTTP header that will influence on the cache
*
* @param $header String: header name
- * @param $option either an Array or null
- * @fixme Document the $option parameter; it appears to be for
+ * @param $option Array|null
+ * @todo FIXME: Document the $option parameter; it appears to be for
* X-Vary-Options but what format is acceptable?
*/
public function addVaryHeader( $header, $option = null ) {
@@ -1381,7 +1596,7 @@ class OutputPage {
$this->mVaryHeader[$header] = $option;
}
}
- $this->mVaryHeader[$header] = array_unique( $this->mVaryHeader[$header] );
+ $this->mVaryHeader[$header] = array_unique( (array)$this->mVaryHeader[$header] );
}
/**
@@ -1420,8 +1635,8 @@ class OutputPage {
* /w/index.php?title=Main_page&variant=zh-cn should never be served.
*/
function addAcceptLanguage() {
- global $wgRequest, $wgContLang;
- if( !$wgRequest->getCheck( 'variant' ) && $wgContLang->hasVariants() ) {
+ global $wgContLang;
+ if( !$this->getRequest()->getCheck( 'variant' ) && $wgContLang->hasVariants() ) {
$variants = $wgContLang->getVariants();
$aloption = array();
foreach ( $variants as $variant ) {
@@ -1429,7 +1644,7 @@ class OutputPage {
continue;
} else {
$aloption[] = 'string-contains=' . $variant;
-
+
// IE and some other browsers use another form of language code
// in their Accept-Language header, like "zh-CN" or "zh-TW".
// We should handle these too.
@@ -1446,12 +1661,14 @@ class OutputPage {
}
/**
- * Set a flag which will cause an X-Frame-Options header appropriate for
- * edit pages to be sent. The header value is controlled by
+ * Set a flag which will cause an X-Frame-Options header appropriate for
+ * edit pages to be sent. The header value is controlled by
* $wgEditPageFrameOptions.
*
- * This is the default for special pages. If you display a CSRF-protected
+ * This is the default for special pages. If you display a CSRF-protected
* form on an ordinary view page, then you need to call this function.
+ *
+ * @param $enable bool
*/
public function preventClickjacking( $enable = true ) {
$this->mPreventClickjacking = $enable;
@@ -1467,9 +1684,11 @@ class OutputPage {
}
/**
- * Get the X-Frame-Options header value (without the name part), or false
- * if there isn't one. This is used by Skin to determine whether to enable
+ * Get the X-Frame-Options header value (without the name part), or false
+ * if there isn't one. This is used by Skin to determine whether to enable
* JavaScript frame-breaking, for clients that don't support X-Frame-Options.
+ *
+ * @return string
*/
public function getFrameOptions() {
global $wgBreakFrames, $wgEditPageFrameOptions;
@@ -1484,9 +1703,9 @@ class OutputPage {
* Send cache control HTTP headers
*/
public function sendCacheControl() {
- global $wgUseSquid, $wgUseESI, $wgUseETag, $wgSquidMaxage, $wgRequest, $wgUseXVO;
+ global $wgUseSquid, $wgUseESI, $wgUseETag, $wgSquidMaxage, $wgUseXVO;
- $response = $wgRequest->response();
+ $response = $this->getRequest()->response();
if ( $wgUseETag && $this->mETag ) {
$response->header( "ETag: $this->mETag" );
}
@@ -1553,58 +1772,13 @@ class OutputPage {
*
* @param $code Integer: status code
* @return String or null: message or null if $code is not in the list of
- * messages
+ * messages
+ *
+ * @deprecated since 1.18 Use HttpStatus::getMessage() instead.
*/
public static function getStatusMessage( $code ) {
- static $statusMessage = array(
- 100 => 'Continue',
- 101 => 'Switching Protocols',
- 102 => 'Processing',
- 200 => 'OK',
- 201 => 'Created',
- 202 => 'Accepted',
- 203 => 'Non-Authoritative Information',
- 204 => 'No Content',
- 205 => 'Reset Content',
- 206 => 'Partial Content',
- 207 => 'Multi-Status',
- 300 => 'Multiple Choices',
- 301 => 'Moved Permanently',
- 302 => 'Found',
- 303 => 'See Other',
- 304 => 'Not Modified',
- 305 => 'Use Proxy',
- 307 => 'Temporary Redirect',
- 400 => 'Bad Request',
- 401 => 'Unauthorized',
- 402 => 'Payment Required',
- 403 => 'Forbidden',
- 404 => 'Not Found',
- 405 => 'Method Not Allowed',
- 406 => 'Not Acceptable',
- 407 => 'Proxy Authentication Required',
- 408 => 'Request Timeout',
- 409 => 'Conflict',
- 410 => 'Gone',
- 411 => 'Length Required',
- 412 => 'Precondition Failed',
- 413 => 'Request Entity Too Large',
- 414 => 'Request-URI Too Large',
- 415 => 'Unsupported Media Type',
- 416 => 'Request Range Not Satisfiable',
- 417 => 'Expectation Failed',
- 422 => 'Unprocessable Entity',
- 423 => 'Locked',
- 424 => 'Failed Dependency',
- 500 => 'Internal Server Error',
- 501 => 'Not Implemented',
- 502 => 'Bad Gateway',
- 503 => 'Service Unavailable',
- 504 => 'Gateway Timeout',
- 505 => 'HTTP Version Not Supported',
- 507 => 'Insufficient Storage'
- );
- return isset( $statusMessage[$code] ) ? $statusMessage[$code] : null;
+ wfDeprecated( __METHOD__ );
+ return HttpStatus::getMessage( $code );
}
/**
@@ -1612,110 +1786,68 @@ class OutputPage {
* the object, let's actually output it:
*/
public function output() {
- global $wgUser, $wgOutputEncoding, $wgRequest;
- global $wgLanguageCode, $wgDebugRedirects, $wgMimeType;
- global $wgUseAjax, $wgAjaxWatch;
- global $wgEnableMWSuggest, $wgUniversalEditButton;
- global $wgArticle;
+ global $wgLanguageCode, $wgDebugRedirects, $wgMimeType, $wgVaryOnXFP;
if( $this->mDoNothing ) {
return;
}
+
wfProfileIn( __METHOD__ );
+
+ $response = $this->getRequest()->response();
+
if ( $this->mRedirect != '' ) {
# Standards require redirect URLs to be absolute
- $this->mRedirect = wfExpandUrl( $this->mRedirect );
+ $this->mRedirect = wfExpandUrl( $this->mRedirect, PROTO_CURRENT );
if( $this->mRedirectCode == '301' || $this->mRedirectCode == '303' ) {
if( !$wgDebugRedirects ) {
- $message = self::getStatusMessage( $this->mRedirectCode );
- $wgRequest->response()->header( "HTTP/1.1 {$this->mRedirectCode} $message" );
+ $message = HttpStatus::getMessage( $this->mRedirectCode );
+ $response->header( "HTTP/1.1 {$this->mRedirectCode} $message" );
}
$this->mLastModified = wfTimestamp( TS_RFC2822 );
}
+ if ( $wgVaryOnXFP ) {
+ $this->addVaryHeader( 'X-Forwarded-Proto' );
+ }
$this->sendCacheControl();
- $wgRequest->response()->header( "Content-Type: text/html; charset=utf-8" );
+ $response->header( "Content-Type: text/html; charset=utf-8" );
if( $wgDebugRedirects ) {
$url = htmlspecialchars( $this->mRedirect );
print "<html>\n<head>\n<title>Redirect</title>\n</head>\n<body>\n";
print "<p>Location: <a href=\"$url\">$url</a></p>\n";
print "</body>\n</html>\n";
} else {
- $wgRequest->response()->header( 'Location: ' . $this->mRedirect );
+ $response->header( 'Location: ' . $this->mRedirect );
}
wfProfileOut( __METHOD__ );
return;
} elseif ( $this->mStatusCode ) {
- $message = self::getStatusMessage( $this->mStatusCode );
+ $message = HttpStatus::getMessage( $this->mStatusCode );
if ( $message ) {
- $wgRequest->response()->header( 'HTTP/1.1 ' . $this->mStatusCode . ' ' . $message );
+ $response->header( 'HTTP/1.1 ' . $this->mStatusCode . ' ' . $message );
}
}
- $sk = $wgUser->getSkin();
-
- // Add base resources
- $this->addModules( 'mediawiki.util' );
- global $wgIncludeLegacyJavaScript;
- if( $wgIncludeLegacyJavaScript ){
- $this->addModules( 'mediawiki.legacy.wikibits' );
- }
-
- // Add various resources if required
- if ( $wgUseAjax ) {
- $this->addModules( 'mediawiki.legacy.ajax' );
-
- wfRunHooks( 'AjaxAddScript', array( &$this ) );
-
- if( $wgAjaxWatch && $wgUser->isLoggedIn() ) {
- $this->addModules( 'mediawiki.legacy.ajaxwatch' );
- }
-
- if ( $wgEnableMWSuggest && !$wgUser->getOption( 'disablesuggest', false ) ) {
- $this->addModules( 'mediawiki.legacy.mwsuggest' );
- }
- }
-
- if( $wgUser->getBoolOption( 'editsectiononrightclick' ) ) {
- $this->addModules( 'mediawiki.action.view.rightClickEdit' );
- }
-
- if( $wgUniversalEditButton ) {
- if( isset( $wgArticle ) && $this->getTitle() && $this->getTitle()->quickUserCan( 'edit' )
- && ( $this->getTitle()->exists() || $this->getTitle()->quickUserCan( 'create' ) ) ) {
- // Original UniversalEditButton
- $msg = wfMsg( 'edit' );
- $this->addLink( array(
- 'rel' => 'alternate',
- 'type' => 'application/x-wiki',
- 'title' => $msg,
- 'href' => $this->getTitle()->getLocalURL( 'action=edit' )
- ) );
- // Alternate edit link
- $this->addLink( array(
- 'rel' => 'edit',
- 'title' => $msg,
- 'href' => $this->getTitle()->getLocalURL( 'action=edit' )
- ) );
- }
- }
-
-
# Buffer output; final headers may depend on later processing
ob_start();
- $wgRequest->response()->header( "Content-type: $wgMimeType; charset={$wgOutputEncoding}" );
- $wgRequest->response()->header( 'Content-language: ' . $wgLanguageCode );
+ $response->header( "Content-type: $wgMimeType; charset=UTF-8" );
+ $response->header( 'Content-language: ' . $wgLanguageCode );
// Prevent framing, if requested
$frameOptions = $this->getFrameOptions();
if ( $frameOptions ) {
- $wgRequest->response()->header( "X-Frame-Options: $frameOptions" );
+ $response->header( "X-Frame-Options: $frameOptions" );
}
if ( $this->mArticleBodyOnly ) {
$this->out( $this->mBodytext );
} else {
+ $this->addDefaultModules();
+
+ $sk = $this->getSkin();
+
// Hook that allows last minute changes to the output page, e.g.
// adding of CSS or Javascript by extensions.
wfRunHooks( 'BeforePageDisplay', array( &$this, &$sk ) );
@@ -1731,127 +1863,31 @@ class OutputPage {
}
/**
- * Actually output something with print(). Performs an iconv to the
- * output encoding, if needed.
+ * Actually output something with print().
*
* @param $ins String: the string to output
*/
public function out( $ins ) {
- global $wgInputEncoding, $wgOutputEncoding, $wgContLang;
- if ( 0 == strcmp( $wgInputEncoding, $wgOutputEncoding ) ) {
- $outs = $ins;
- } else {
- $outs = $wgContLang->iconv( $wgInputEncoding, $wgOutputEncoding, $ins );
- if ( false === $outs ) {
- $outs = $ins;
- }
- }
- print $outs;
- }
-
- /**
- * @todo document
- */
- public static function setEncodings() {
- global $wgInputEncoding, $wgOutputEncoding;
-
- $wgInputEncoding = strtolower( $wgInputEncoding );
-
- if ( empty( $_SERVER['HTTP_ACCEPT_CHARSET'] ) ) {
- $wgOutputEncoding = strtolower( $wgOutputEncoding );
- return;
- }
- $wgOutputEncoding = $wgInputEncoding;
- }
-
- /**
- * @deprecated use wfReportTime() instead.
- *
- * @return String
- */
- public function reportTime() {
- wfDeprecated( __METHOD__ );
- $time = wfReportTime();
- return $time;
+ print $ins;
}
/**
* Produce a "user is blocked" page.
- *
- * @param $return Boolean: whether to have a "return to $wgTitle" message or not.
- * @return nothing
+ * @deprecated since 1.18
*/
- function blockedPage( $return = true ) {
- global $wgUser, $wgContLang, $wgLang;
-
- $this->setPageTitle( wfMsg( 'blockedtitle' ) );
- $this->setRobotPolicy( 'noindex,nofollow' );
- $this->setArticleRelated( false );
-
- $name = User::whoIs( $wgUser->blockedBy() );
- $reason = $wgUser->blockedFor();
- if( $reason == '' ) {
- $reason = wfMsg( 'blockednoreason' );
- }
- $blockTimestamp = $wgLang->timeanddate(
- wfTimestamp( TS_MW, $wgUser->mBlock->mTimestamp ), true
- );
- $ip = wfGetIP();
-
- $link = '[[' . $wgContLang->getNsText( NS_USER ) . ":{$name}|{$name}]]";
-
- $blockid = $wgUser->mBlock->mId;
-
- $blockExpiry = $wgUser->mBlock->mExpiry;
- if ( $blockExpiry == 'infinity' ) {
- // Entry in database (table ipblocks) is 'infinity' but 'ipboptions' uses 'infinite' or 'indefinite'
- // Search for localization in 'ipboptions'
- $scBlockExpiryOptions = wfMsg( 'ipboptions' );
- foreach ( explode( ',', $scBlockExpiryOptions ) as $option ) {
- if ( strpos( $option, ':' ) === false ) {
- continue;
- }
- list( $show, $value ) = explode( ':', $option );
- if ( $value == 'infinite' || $value == 'indefinite' ) {
- $blockExpiry = $show;
- break;
- }
- }
- } else {
- $blockExpiry = $wgLang->timeanddate(
- wfTimestamp( TS_MW, $blockExpiry ),
- true
- );
- }
-
- if ( $wgUser->mBlock->mAuto ) {
- $msg = 'autoblockedtext';
- } else {
- $msg = 'blockedtext';
- }
-
- /* $ip returns who *is* being blocked, $intended contains who was meant to be blocked.
- * This could be a username, an IP range, or a single IP. */
- $intended = $wgUser->mBlock->mAddress;
-
- $this->addWikiMsg(
- $msg, $link, $reason, $ip, $name, $blockid, $blockExpiry,
- $intended, $blockTimestamp
- );
-
- # Don't auto-return to special pages
- if( $return ) {
- $return = $this->getTitle()->getNamespace() > -1 ? $this->getTitle() : null;
- $this->returnToMain( null, $return );
- }
+ function blockedPage() {
+ throw new UserBlockedError( $this->getUser()->mBlock );
}
/**
* Output a standard error page
*
+ * showErrorPage( 'titlemsg', 'pagetextmsg', array( 'param1', 'param2' ) );
+ * showErrorPage( 'titlemsg', $messageObject );
+ *
* @param $title String: message key for page title
- * @param $msg String: message key for page text
- * @param $params Array: message parameters
+ * @param $msg Mixed: message key (string) for page text, or a Message object
+ * @param $params Array: message parameters; ignored if $msg is a Message object
*/
public function showErrorPage( $title, $msg, $params = array() ) {
if ( $this->getTitle() ) {
@@ -1865,9 +1901,11 @@ class OutputPage {
$this->mRedirect = '';
$this->mBodytext = '';
- array_unshift( $params, 'parse' );
- array_unshift( $params, $msg );
- $this->addHTML( call_user_func_array( 'wfMsgExt', $params ) );
+ if ( $msg instanceof Message ){
+ $this->addHTML( $msg->parse() );
+ } else {
+ $this->addWikiMsgArray( $msg, $params );
+ }
$this->returnToMain();
}
@@ -1910,60 +1948,35 @@ class OutputPage {
/**
* Display an error page noting that a given permission bit is required.
- *
+ * @deprecated since 1.18, just throw the exception directly
* @param $permission String: key required
*/
public function permissionRequired( $permission ) {
- global $wgLang;
-
- $this->setPageTitle( wfMsg( 'badaccess' ) );
- $this->setHTMLTitle( wfMsg( 'errorpagetitle' ) );
- $this->setRobotPolicy( 'noindex,nofollow' );
- $this->setArticleRelated( false );
- $this->mBodytext = '';
-
- $groups = array_map( array( 'User', 'makeGroupLinkWiki' ),
- User::getGroupsWithPermission( $permission ) );
- if( $groups ) {
- $this->addWikiMsg(
- 'badaccess-groups',
- $wgLang->commaList( $groups ),
- count( $groups )
- );
- } else {
- $this->addWikiMsg( 'badaccess-group0' );
- }
- $this->returnToMain();
+ throw new PermissionsError( $permission );
}
/**
* Produce the stock "please login to use the wiki" page
*/
public function loginToUse() {
- global $wgUser;
-
- if( $wgUser->isLoggedIn() ) {
- $this->permissionRequired( 'read' );
- return;
+ if( $this->getUser()->isLoggedIn() ) {
+ throw new PermissionsError( 'read' );
}
- $skin = $wgUser->getSkin();
-
$this->setPageTitle( wfMsg( 'loginreqtitle' ) );
$this->setHtmlTitle( wfMsg( 'errorpagetitle' ) );
$this->setRobotPolicy( 'noindex,nofollow' );
- $this->setArticleFlag( false );
+ $this->setArticleRelated( false );
$loginTitle = SpecialPage::getTitleFor( 'Userlogin' );
- $loginLink = $skin->link(
+ $loginLink = Linker::linkKnown(
$loginTitle,
wfMsgHtml( 'loginreqlink' ),
array(),
- array( 'returnto' => $this->getTitle()->getPrefixedText() ),
- array( 'known', 'noclasses' )
+ array( 'returnto' => $this->getTitle()->getPrefixedText() )
);
- $this->addHTML( wfMsgWikiHtml( 'loginreqpagetext', $loginLink ) );
- $this->addHTML( "\n<!--" . $this->getTitle()->getPrefixedUrl() . '-->' );
+ $this->addHTML( wfMessage( 'loginreqpagetext' )->rawParams( $loginLink )->parse() .
+ "\n<!--" . $this->getTitle()->getPrefixedUrl() . '-->' );
# Don't return to the main page if the user can't read it
# otherwise we'll end up in a pointless loop
@@ -1976,7 +1989,7 @@ class OutputPage {
/**
* Format a list of error messages
*
- * @param $errors An array of arrays returned by Title::getUserPermissionsErrors
+ * @param $errors Array of arrays returned by Title::getUserPermissionsErrors
* @param $action String: action that was denied or null if unknown
* @return String: the wikitext error-messages, formatted into a list.
*/
@@ -2031,9 +2044,6 @@ class OutputPage {
* @param $action String: action that was denied or null if unknown
*/
public function readOnlyPage( $source = null, $protected = false, $reasons = array(), $action = null ) {
- global $wgUser;
- $skin = $wgUser->getSkin();
-
$this->setRobotPolicy( 'noindex,nofollow' );
$this->setArticleRelated( false );
@@ -2048,7 +2058,7 @@ class OutputPage {
if( $source ) {
$this->setPageTitle( wfMsg( 'viewsource' ) );
$this->setSubtitle(
- wfMsg( 'viewsourcefor', $skin->linkKnown( $this->getTitle() ) )
+ wfMsg( 'viewsourcefor', Linker::linkKnown( $this->getTitle() ) )
);
} else {
$this->setPageTitle( wfMsg( 'badaccess' ) );
@@ -2056,9 +2066,7 @@ class OutputPage {
$this->addWikiText( $this->formatPermissionsErrorMessage( $reasons, $action ) );
} else {
// Wiki is read only
- $this->setPageTitle( wfMsg( 'readonly' ) );
- $reason = wfReadOnlyReason();
- $this->wrapWikiMsg( "<div class='mw-readonly-error'>\n$1\n</div>", array( 'readonlytext', $reason ) );
+ throw new ReadOnlyError;
}
// Show source, if supplied
@@ -2068,17 +2076,17 @@ class OutputPage {
$params = array(
'id' => 'wpTextbox1',
'name' => 'wpTextbox1',
- 'cols' => $wgUser->getOption( 'cols' ),
- 'rows' => $wgUser->getOption( 'rows' ),
+ 'cols' => $this->getUser()->getOption( 'cols' ),
+ 'rows' => $this->getUser()->getOption( 'rows' ),
'readonly' => 'readonly'
);
$this->addHTML( Html::element( 'textarea', $params, $source ) );
// Show templates used by this article
- $skin = $wgUser->getSkin();
$article = new Article( $this->getTitle() );
+ $templates = Linker::formatTemplates( $article->getUsedTemplates() );
$this->addHTML( "<div class='templatesUsed'>
-{$skin->formatTemplates( $article->getUsedTemplates() )}
+$templates
</div>
" );
}
@@ -2091,51 +2099,32 @@ class OutputPage {
}
}
- /** @deprecated */
- public function errorpage( $title, $msg ) {
- wfDeprecated( __METHOD__ );
- throw new ErrorPageError( $title, $msg );
- }
-
- /** @deprecated */
- public function databaseError( $fname, $sql, $error, $errno ) {
- throw new MWException( "OutputPage::databaseError is obsolete\n" );
- }
-
- /** @deprecated */
- public function fatalError( $message ) {
- wfDeprecated( __METHOD__ );
- throw new FatalError( $message );
- }
-
- /** @deprecated */
- public function unexpectedValueError( $name, $val ) {
- wfDeprecated( __METHOD__ );
- throw new FatalError( wfMsg( 'unexpected', $name, $val ) );
- }
-
- /** @deprecated */
- public function fileCopyError( $old, $new ) {
- wfDeprecated( __METHOD__ );
- throw new FatalError( wfMsg( 'filecopyerror', $old, $new ) );
- }
-
- /** @deprecated */
- public function fileRenameError( $old, $new ) {
- wfDeprecated( __METHOD__ );
- throw new FatalError( wfMsg( 'filerenameerror', $old, $new ) );
- }
-
- /** @deprecated */
- public function fileDeleteError( $name ) {
- wfDeprecated( __METHOD__ );
- throw new FatalError( wfMsg( 'filedeleteerror', $name ) );
+ /**
+ * Turn off regular page output and return an error reponse
+ * for when rate limiting has triggered.
+ */
+ public function rateLimited() {
+ throw new ThrottledError;
}
- /** @deprecated */
- public function fileNotFoundError( $name ) {
- wfDeprecated( __METHOD__ );
- throw new FatalError( wfMsg( 'filenotfound', $name ) );
+ /**
+ * Show a warning about slave lag
+ *
+ * If the lag is higher than $wgSlaveLagCritical seconds,
+ * then the warning is a bit more obvious. If the lag is
+ * lower than $wgSlaveLagWarning, then no warning is shown.
+ *
+ * @param $lag Integer: slave lag
+ */
+ public function showLagWarning( $lag ) {
+ global $wgSlaveLagWarning, $wgSlaveLagCritical;
+ if( $lag >= $wgSlaveLagWarning ) {
+ $message = $lag < $wgSlaveLagCritical
+ ? 'lag-warn-normal'
+ : 'lag-warn-high';
+ $wrap = Html::rawElement( 'div', array( 'class' => "mw-{$message}" ), "\n$1\n" );
+ $this->wrapWikiMsg( "$wrap\n", array( $message, $this->getContext()->getLang()->formatNum( $lag ) ) );
+ }
}
public function showFatalError( $message ) {
@@ -2171,15 +2160,14 @@ class OutputPage {
* Add a "return to" link pointing to a specified title
*
* @param $title Title to link
- * @param $query String: query string
+ * @param $query String query string
* @param $text String text of the link (input is not escaped)
*/
public function addReturnTo( $title, $query = array(), $text = null ) {
- global $wgUser;
$this->addLink( array( 'rel' => 'next', 'href' => $title->getFullURL() ) );
$link = wfMsgHtml(
'returnto',
- $wgUser->getSkin()->link( $title, $text, array(), $query )
+ Linker::link( $title, $text, array(), $query )
);
$this->addHTML( "<p id=\"mw-returnto\">{$link}</p>\n" );
}
@@ -2193,14 +2181,12 @@ class OutputPage {
* @param $returntoquery String: query string for the return to link
*/
public function returnToMain( $unused = null, $returnto = null, $returntoquery = null ) {
- global $wgRequest;
-
if ( $returnto == null ) {
- $returnto = $wgRequest->getText( 'returnto' );
+ $returnto = $this->getRequest()->getText( 'returnto' );
}
if ( $returntoquery == null ) {
- $returntoquery = $wgRequest->getText( 'returntoquery' );
+ $returntoquery = $this->getRequest()->getText( 'returntoquery' );
}
if ( $returnto === '' ) {
@@ -2225,17 +2211,16 @@ class OutputPage {
* @return String: The doctype, opening <html>, and head element.
*/
public function headElement( Skin $sk, $includeStyle = true ) {
- global $wgOutputEncoding, $wgMimeType;
- global $wgUseTrackbacks, $wgHtml5;
- global $wgUser, $wgRequest, $wgLang;
+ global $wgContLang, $wgUseTrackbacks;
+ $userdir = $this->getLang()->getDir();
+ $sitedir = $wgContLang->getDir();
if ( $sk->commonPrintStylesheet() ) {
$this->addModuleStyles( 'mediawiki.legacy.wikiprintable' );
}
$sk->setupUserCss( $this );
- $lang = wfUILang();
- $ret = Html::htmlHeader( array( 'lang' => $lang->getCode(), 'dir' => $lang->getDir() ) );
+ $ret = Html::htmlHeader( array( 'lang' => $this->getLang()->getCode(), 'dir' => $userdir, 'class' => 'client-nojs' ) );
if ( $this->getHTMLTitle() == '' ) {
$this->setHTMLTitle( wfMsg( 'pagetitle', $this->getPageTitle() ) );
@@ -2247,19 +2232,12 @@ class OutputPage {
$ret .= "$openHead\n";
}
- if ( $wgHtml5 ) {
- # More succinct than <meta http-equiv=Content-Type>, has the
- # same effect
- $ret .= Html::element( 'meta', array( 'charset' => $wgOutputEncoding ) ) . "\n";
- } else {
- $this->addMeta( 'http:Content-Type', "$wgMimeType; charset=$wgOutputEncoding" );
- }
-
$ret .= Html::element( 'title', null, $this->getHTMLTitle() ) . "\n";
$ret .= implode( "\n", array(
- $this->getHeadLinks( $sk ),
+ $this->getHeadLinks( $sk, true ),
$this->buildCssLinks( $sk ),
+ $this->getHeadScripts( $sk ),
$this->getHeadItems()
) );
@@ -2275,12 +2253,12 @@ class OutputPage {
$bodyAttrs = array();
# Crazy edit-on-double-click stuff
- $action = $wgRequest->getVal( 'action', 'view' );
+ $action = $this->getRequest()->getVal( 'action', 'view' );
if (
$this->getTitle()->getNamespace() != NS_SPECIAL &&
- !in_array( $action, array( 'edit', 'submit' ) ) &&
- $wgUser->getOption( 'editondblclick' )
+ in_array( $action, array( 'view', 'purge' ) ) &&
+ $this->getUser()->getOption( 'editondblclick' )
)
{
$editUrl = $this->getTitle()->getLocalUrl( $sk->editUrlOptions() );
@@ -2288,24 +2266,15 @@ class OutputPage {
Xml::escapeJsString( $editUrl ) . "'";
}
- # Class bloat
- $dir = wfUILang()->getDir();
- $bodyAttrs['class'] = "mediawiki $dir";
+ # Classes for LTR/RTL directionality support
+ $bodyAttrs['class'] = "mediawiki $userdir sitedir-$sitedir";
- if ( $wgLang->capitalizeAllNouns() ) {
+ if ( $this->getContext()->getLang()->capitalizeAllNouns() ) {
# A <body> class is probably not the best way to do this . . .
$bodyAttrs['class'] .= ' capitalize-all-nouns';
}
- $bodyAttrs['class'] .= ' ns-' . $this->getTitle()->getNamespace();
- if ( $this->getTitle()->getNamespace() == NS_SPECIAL ) {
- $bodyAttrs['class'] .= ' ns-special';
- } elseif ( $this->getTitle()->isTalkPage() ) {
- $bodyAttrs['class'] .= ' ns-talk';
- } else {
- $bodyAttrs['class'] .= ' ns-subject';
- }
- $bodyAttrs['class'] .= ' ' . Sanitizer::escapeClass( 'page-' . $this->getTitle()->getPrefixedText() );
- $bodyAttrs['class'] .= ' skin-' . Sanitizer::escapeClass( $wgUser->getSkin()->getSkinName() );
+ $bodyAttrs['class'] .= ' ' . $sk->getPageClasses( $this->getTitle() );
+ $bodyAttrs['class'] .= ' skin-' . Sanitizer::escapeClass( $sk->getSkinName() );
$sk->addToBodyAttributes( $this, $bodyAttrs ); // Allow skins to add body attributes they need
wfRunHooks( 'OutputPageBodyAttributes', array( $this, $sk, &$bodyAttrs ) );
@@ -2316,52 +2285,92 @@ class OutputPage {
}
/**
+ * Add the default ResourceLoader modules to this object
+ */
+ private function addDefaultModules() {
+ global $wgIncludeLegacyJavaScript, $wgUseAjax,
+ $wgAjaxWatch, $wgEnableMWSuggest;
+
+ // Add base resources
+ $this->addModules( array(
+ 'mediawiki.user',
+ 'mediawiki.util',
+ 'mediawiki.page.startup',
+ 'mediawiki.page.ready',
+ ) );
+ if ( $wgIncludeLegacyJavaScript ){
+ $this->addModules( 'mediawiki.legacy.wikibits' );
+ }
+
+ // Add various resources if required
+ if ( $wgUseAjax ) {
+ $this->addModules( 'mediawiki.legacy.ajax' );
+
+ wfRunHooks( 'AjaxAddScript', array( &$this ) );
+
+ if( $wgAjaxWatch && $this->getUser()->isLoggedIn() ) {
+ $this->addModules( 'mediawiki.action.watch.ajax' );
+ }
+
+ if ( $wgEnableMWSuggest && !$this->getUser()->getOption( 'disablesuggest', false ) ) {
+ $this->addModules( 'mediawiki.legacy.mwsuggest' );
+ }
+ }
+
+ if ( $this->getUser()->getBoolOption( 'editsectiononrightclick' ) ) {
+ $this->addModules( 'mediawiki.action.view.rightClickEdit' );
+ }
+ }
+
+ /**
* Get a ResourceLoader object associated with this OutputPage
+ *
+ * @return ResourceLoader
*/
public function getResourceLoader() {
if ( is_null( $this->mResourceLoader ) ) {
$this->mResourceLoader = new ResourceLoader();
}
return $this->mResourceLoader;
- }
+ }
/**
* TODO: Document
* @param $skin Skin
* @param $modules Array/string with the module name
- * @param $only string May be styles, messages or scripts
+ * @param $only String ResourceLoaderModule TYPE_ class constant
* @param $useESI boolean
* @return string html <script> and <style> tags
*/
protected function makeResourceLoaderLink( Skin $skin, $modules, $only, $useESI = false ) {
- global $wgUser, $wgLang, $wgLoadScript, $wgResourceLoaderUseESI,
- $wgResourceLoaderInlinePrivateModules, $wgRequest;
+ global $wgLoadScript, $wgResourceLoaderUseESI,
+ $wgResourceLoaderInlinePrivateModules;
// Lazy-load ResourceLoader
// TODO: Should this be a static function of ResourceLoader instead?
$baseQuery = array(
- 'lang' => $wgLang->getCode(),
+ 'lang' => $this->getContext()->getLang()->getCode(),
'debug' => ResourceLoader::inDebugMode() ? 'true' : 'false',
'skin' => $skin->getSkinName(),
'only' => $only,
);
// Propagate printable and handheld parameters if present
- if ( $wgRequest->getBool( 'printable' ) ) {
+ if ( $this->isPrintable() ) {
$baseQuery['printable'] = 1;
}
- if ( $wgRequest->getBool( 'handheld' ) ) {
+ if ( $this->getRequest()->getBool( 'handheld' ) ) {
$baseQuery['handheld'] = 1;
}
-
+
if ( !count( $modules ) ) {
return '';
}
-
+
if ( count( $modules ) > 1 ) {
// Remove duplicate module requests
$modules = array_unique( (array) $modules );
// Sort module names so requests are more uniform
sort( $modules );
-
+
if ( ResourceLoader::inDebugMode() ) {
// Recursively call us for every item
$links = '';
@@ -2371,12 +2380,21 @@ class OutputPage {
return $links;
}
}
-
+
// Create keyed-by-group list of module objects from modules list
$groups = array();
$resourceLoader = $this->getResourceLoader();
foreach ( (array) $modules as $name ) {
$module = $resourceLoader->getModule( $name );
+ # Check that we're allowed to include this module on this page
+ if ( ( $module->getOrigin() > $this->getAllowedModules( ResourceLoaderModule::TYPE_SCRIPTS )
+ && $only == ResourceLoaderModule::TYPE_SCRIPTS )
+ || ( $module->getOrigin() > $this->getAllowedModules( ResourceLoaderModule::TYPE_STYLES )
+ && $only == ResourceLoaderModule::TYPE_STYLES )
+ )
+ {
+ continue;
+ }
$group = $module->getGroup();
if ( !isset( $groups[$group] ) ) {
@@ -2384,14 +2402,15 @@ class OutputPage {
}
$groups[$group][$name] = $module;
}
+
$links = '';
foreach ( $groups as $group => $modules ) {
$query = $baseQuery;
// Special handling for user-specific groups
- if ( ( $group === 'user' || $group === 'private' ) && $wgUser->isLoggedIn() ) {
- $query['user'] = $wgUser->getName();
+ if ( ( $group === 'user' || $group === 'private' ) && $this->getUser()->isLoggedIn() ) {
+ $query['user'] = $this->getUser()->getName();
}
-
+
// Create a fake request based on the one we are about to make so modules return
// correct timestamp and emptiness data
$context = new ResourceLoaderContext( $resourceLoader, new FauxRequest( $query ) );
@@ -2405,12 +2424,12 @@ class OutputPage {
if ( $modules === array() ) {
continue;
}
-
+
$query['modules'] = ResourceLoader::makePackedModulesString( array_keys( $modules ) );
-
+
// Support inlining of private modules if configured as such
if ( $group === 'private' && $wgResourceLoaderInlinePrivateModules ) {
- if ( $only == 'styles' ) {
+ if ( $only == ResourceLoaderModule::TYPE_STYLES ) {
$links .= Html::inlineStyle(
$resourceLoader->makeModuleResponse( $context, $modules )
);
@@ -2446,107 +2465,244 @@ class OutputPage {
$url .= '&*';
if ( $useESI && $wgResourceLoaderUseESI ) {
$esi = Xml::element( 'esi:include', array( 'src' => $url ) );
- if ( $only == 'styles' ) {
- $links .= Html::inlineStyle( $esi );
+ if ( $only == ResourceLoaderModule::TYPE_STYLES ) {
+ $link = Html::inlineStyle( $esi );
} else {
- $links .= Html::inlineScript( $esi );
+ $link = Html::inlineScript( $esi );
}
} else {
// Automatically select style/script elements
- if ( $only === 'styles' ) {
- $links .= Html::linkedStyle( $url ) . "\n";
+ if ( $only === ResourceLoaderModule::TYPE_STYLES ) {
+ $link = Html::linkedStyle( $url );
} else {
- $links .= Html::linkedScript( $url ) . "\n";
+ $link = Html::linkedScript( $url );
}
}
+
+ if( $group == 'noscript' ){
+ $links .= Html::rawElement( 'noscript', array(), $link ) . "\n";
+ } else {
+ $links .= $link . "\n";
+ }
}
return $links;
}
/**
- * Gets the global variables and mScripts; also adds userjs to the end if
- * enabled. Despite the name, these scripts are no longer put in the
- * <head> but at the bottom of the <body>
+ * JS stuff to put in the <head>. This is the startup module, config
+ * vars and modules marked with position 'top'
*
* @param $sk Skin object to use
* @return String: HTML fragment
*/
function getHeadScripts( Skin $sk ) {
- global $wgUser, $wgRequest, $wgUseSiteJs;
-
// Startup - this will immediately load jquery and mediawiki modules
- $scripts = $this->makeResourceLoaderLink( $sk, 'startup', 'scripts', true );
+ $scripts = $this->makeResourceLoaderLink( $sk, 'startup', ResourceLoaderModule::TYPE_SCRIPTS, true );
- // Configuration -- This could be merged together with the load and go, but
- // makeGlobalVariablesScript returns a whole script tag -- grumble grumble...
- $scripts .= Skin::makeGlobalVariablesScript( $sk->getSkinName() ) . "\n";
+ // Load config before anything else
+ $scripts .= Html::inlineScript(
+ ResourceLoader::makeLoaderConditionalScript(
+ ResourceLoader::makeConfigSetScript( $this->getJSVars() )
+ )
+ );
- // Script and Messages "only" requests
- $scripts .= $this->makeResourceLoaderLink( $sk, $this->getModuleScripts(), 'scripts' );
- $scripts .= $this->makeResourceLoaderLink( $sk, $this->getModuleMessages(), 'messages' );
+ // Script and Messages "only" requests marked for top inclusion
+ // Messages should go first
+ $scripts .= $this->makeResourceLoaderLink( $sk, $this->getModuleMessages( true, 'top' ), ResourceLoaderModule::TYPE_MESSAGES );
+ $scripts .= $this->makeResourceLoaderLink( $sk, $this->getModuleScripts( true, 'top' ), ResourceLoaderModule::TYPE_SCRIPTS );
// Modules requests - let the client calculate dependencies and batch requests as it likes
- if ( $this->getModules() ) {
+ // Only load modules that have marked themselves for loading at the top
+ $modules = $this->getModules( true, 'top' );
+ if ( $modules ) {
$scripts .= Html::inlineScript(
ResourceLoader::makeLoaderConditionalScript(
- Xml::encodeJsCall( 'mediaWiki.loader.load', array( $this->getModules() ) ) .
- Xml::encodeJsCall( 'mediaWiki.loader.go', array() )
+ Xml::encodeJsCall( 'mw.loader.load', array( $modules ) )
)
- ) . "\n";
+ );
+ }
+
+ return $scripts;
+ }
+
+ /**
+ * JS stuff to put at the bottom of the <body>: modules marked with position 'bottom',
+ * legacy scripts ($this->mScripts), user preferences, site JS and user JS
+ *
+ * @param $sk Skin
+ *
+ * @return string
+ */
+ function getBottomScripts( Skin $sk ) {
+ global $wgUseSiteJs, $wgAllowUserJs;
+
+ // Script and Messages "only" requests marked for bottom inclusion
+ // Messages should go first
+ $scripts = $this->makeResourceLoaderLink( $sk, $this->getModuleMessages( true, 'bottom' ), ResourceLoaderModule::TYPE_MESSAGES );
+ $scripts .= $this->makeResourceLoaderLink( $sk, $this->getModuleScripts( true, 'bottom' ), ResourceLoaderModule::TYPE_SCRIPTS );
+
+ // Modules requests - let the client calculate dependencies and batch requests as it likes
+ // Only load modules that have marked themselves for loading at the bottom
+ $modules = $this->getModules( true, 'bottom' );
+ if ( $modules ) {
+ $scripts .= Html::inlineScript(
+ ResourceLoader::makeLoaderConditionalScript(
+ Xml::encodeJsCall( 'mw.loader.load', array( $modules ) )
+ )
+ );
}
// Legacy Scripts
$scripts .= "\n" . $this->mScripts;
+ $userScripts = array( 'user.options', 'user.tokens' );
+
// Add site JS if enabled
if ( $wgUseSiteJs ) {
- $scripts .= $this->makeResourceLoaderLink( $sk, 'site', 'scripts' );
+ $scripts .= $this->makeResourceLoaderLink( $sk, 'site', ResourceLoaderModule::TYPE_SCRIPTS );
+ if( $this->getUser()->isLoggedIn() ){
+ $userScripts[] = 'user.groups';
+ }
}
- // Add user JS if enabled - trying to load user.options as a bundle if possible
- $userOptionsAdded = false;
- if ( $this->isUserJsAllowed() && $wgUser->isLoggedIn() ) {
- $action = $wgRequest->getVal( 'action', 'view' );
- if( $this->mTitle && $this->mTitle->isJsSubpage() && $sk->userCanPreview( $action ) ) {
+ // Add user JS if enabled
+ if ( $wgAllowUserJs && $this->getUser()->isLoggedIn() ) {
+ $action = $this->getRequest()->getVal( 'action', 'view' );
+ if( $this->getTitle() && $this->getTitle()->isJsSubpage() && $sk->userCanPreview( $action ) ) {
# XXX: additional security check/prompt?
- $scripts .= Html::inlineScript( "\n" . $wgRequest->getText( 'wpTextbox1' ) . "\n" ) . "\n";
+ $scripts .= Html::inlineScript( "\n" . $this->getRequest()->getText( 'wpTextbox1' ) . "\n" ) . "\n";
} else {
- $scripts .= $this->makeResourceLoaderLink(
- $sk, array( 'user', 'user.options' ), 'scripts'
- );
- $userOptionsAdded = true;
+ # @todo FIXME: This means that User:Me/Common.js doesn't load when previewing
+ # User:Me/Vector.js, and vice versa (bug26283)
+ $userScripts[] = 'user';
}
}
- if ( !$userOptionsAdded ) {
- $scripts .= $this->makeResourceLoaderLink( $sk, 'user.options', 'scripts' );
- }
-
+ $scripts .= $this->makeResourceLoaderLink( $sk, $userScripts, ResourceLoaderModule::TYPE_SCRIPTS );
+
return $scripts;
}
/**
- * Add default \<meta\> tags
+ * Add one or more variables to be set in mw.config in JavaScript.
+ *
+ * @param $key {String|Array} Key or array of key/value pars.
+ * @param $value {Mixed} Value of the configuration variable.
*/
- protected function addDefaultMeta() {
- global $wgVersion, $wgHtml5;
-
- static $called = false;
- if ( $called ) {
- # Don't run this twice
+ public function addJsConfigVars( $keys, $value ) {
+ if ( is_array( $keys ) ) {
+ foreach ( $keys as $key => $value ) {
+ $this->mJsConfigVars[$key] = $value;
+ }
return;
}
- $called = true;
- if ( !$wgHtml5 ) {
- $this->addMeta( 'http:Content-Style-Type', 'text/css' ); // bug 15835
+ $this->mJsConfigVars[$keys] = $value;
+ }
+
+
+ /**
+ * Get an array containing the variables to be set in mw.config in JavaScript.
+ *
+ * Do not add things here which can be evaluated in ResourceLoaderStartupScript
+ * - in other words, page-indendent/site-wide variables (without state).
+ * You will only be adding bloat to the html page and causing page caches to
+ * have to be purged on configuration changes.
+ */
+ protected function getJSVars() {
+ global $wgUseAjax, $wgEnableMWSuggest, $wgContLang;
+
+ $title = $this->getTitle();
+ $ns = $title->getNamespace();
+ $nsname = MWNamespace::exists( $ns ) ? MWNamespace::getCanonicalName( $ns ) : $title->getNsText();
+ if ( $ns == NS_SPECIAL ) {
+ list( $canonicalName, /*...*/ ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
+ } else {
+ $canonicalName = false; # bug 21115
+ }
+
+ $vars = array(
+ 'wgCanonicalNamespace' => $nsname,
+ 'wgCanonicalSpecialPageName' => $canonicalName,
+ 'wgNamespaceNumber' => $title->getNamespace(),
+ 'wgPageName' => $title->getPrefixedDBKey(),
+ 'wgTitle' => $title->getText(),
+ 'wgCurRevisionId' => $title->getLatestRevID(),
+ 'wgArticleId' => $title->getArticleId(),
+ 'wgIsArticle' => $this->isArticle(),
+ 'wgAction' => $this->getRequest()->getText( 'action', 'view' ),
+ 'wgUserName' => $this->getUser()->isAnon() ? null : $this->getUser()->getName(),
+ 'wgUserGroups' => $this->getUser()->getEffectiveGroups(),
+ 'wgCategories' => $this->getCategories(),
+ 'wgBreakFrames' => $this->getFrameOptions() == 'DENY',
+ );
+ if ( $wgContLang->hasVariants() ) {
+ $vars['wgUserVariant'] = $wgContLang->getPreferredVariant();
}
- $this->addMeta( 'generator', "MediaWiki $wgVersion" );
+ foreach ( $title->getRestrictionTypes() as $type ) {
+ $vars['wgRestriction' . ucfirst( $type )] = $title->getRestrictions( $type );
+ }
+ if ( $wgUseAjax && $wgEnableMWSuggest && !$this->getUser()->getOption( 'disablesuggest', false ) ) {
+ $vars['wgSearchNamespaces'] = SearchEngine::userNamespaces( $this->getUser() );
+ }
+ if ( $title->isMainPage() ) {
+ $vars['wgIsMainPage'] = true;
+ }
+
+ // Allow extensions to add their custom variables to the mw.config map.
+ // Use the 'ResourceLoaderGetConfigVars' hook if the variable is not
+ // page-dependant but site-wide (without state).
+ // Alternatively, you may want to use OutputPage->addJsConfigVars() instead.
+ wfRunHooks( 'MakeGlobalVariablesScript', array( &$vars ) );
+
+ // Merge in variables from addJsConfigVars last
+ return array_merge( $vars, $this->mJsConfigVars );
+ }
+
+ /**
+ * @param $sk Skin
+ * @param $addContentType bool
+ *
+ * @return string HTML tag links to be put in the header.
+ */
+ public function getHeadLinks( Skin $sk, $addContentType = false ) {
+ global $wgUniversalEditButton, $wgFavicon, $wgAppleTouchIcon, $wgEnableAPI,
+ $wgSitename, $wgVersion, $wgHtml5, $wgMimeType,
+ $wgFeed, $wgOverrideSiteFeed, $wgAdvertisedFeedTypes,
+ $wgDisableLangConversion, $wgCanonicalLanguageLinks, $wgContLang,
+ $wgRightsPage, $wgRightsUrl;
+
+ $tags = array();
+
+ if ( $addContentType ) {
+ if ( $wgHtml5 ) {
+ # More succinct than <meta http-equiv=Content-Type>, has the
+ # same effect
+ $tags[] = Html::element( 'meta', array( 'charset' => 'UTF-8' ) );
+ } else {
+ $tags[] = Html::element( 'meta', array(
+ 'http-equiv' => 'Content-Type',
+ 'content' => "$wgMimeType; charset=UTF-8"
+ ) );
+ $tags[] = Html::element( 'meta', array( // bug 15835
+ 'http-equiv' => 'Content-Style-Type',
+ 'content' => 'text/css'
+ ) );
+ }
+ }
+
+ $tags[] = Html::element( 'meta', array(
+ 'name' => 'generator',
+ 'content' => "MediaWiki $wgVersion",
+ ) );
$p = "{$this->mIndexPolicy},{$this->mFollowPolicy}";
if( $p !== 'index,follow' ) {
// http://www.robotstxt.org/wc/meta-user.html
// Only show if it's different from the default robots policy
- $this->addMeta( 'robots', $p );
+ $tags[] = Html::element( 'meta', array(
+ 'name' => 'robots',
+ 'content' => $p,
+ ) );
}
if ( count( $this->mKeywords ) > 0 ) {
@@ -2554,27 +2710,15 @@ class OutputPage {
"/<.*?" . ">/" => '',
"/_/" => ' '
);
- $this->addMeta(
- 'keywords',
- preg_replace(
+ $tags[] = Html::element( 'meta', array(
+ 'name' => 'keywords',
+ 'content' => preg_replace(
array_keys( $strip ),
array_values( $strip ),
implode( ',', $this->mKeywords )
)
- );
+ ) );
}
- }
-
- /**
- * @return string HTML tag links to be put in the header.
- */
- public function getHeadLinks( Skin $sk ) {
- global $wgFeed;
-
- // Ideally this should happen earlier, somewhere. :P
- $this->addDefaultMeta();
-
- $tags = array();
foreach ( $this->mMetatags as $tag ) {
if ( 0 == strcasecmp( 'http:', substr( $tag[0], 0, 5 ) ) ) {
@@ -2590,16 +2734,117 @@ class OutputPage {
)
);
}
+
foreach ( $this->mLinktags as $tag ) {
$tags[] = Html::element( 'link', $tag );
}
- if( $wgFeed ) {
+ # Universal edit button
+ if ( $wgUniversalEditButton ) {
+ if ( $this->isArticleRelated() && $this->getTitle() && $this->getTitle()->quickUserCan( 'edit' )
+ && ( $this->getTitle()->exists() || $this->getTitle()->quickUserCan( 'create' ) ) ) {
+ // Original UniversalEditButton
+ $msg = wfMsg( 'edit' );
+ $tags[] = Html::element( 'link', array(
+ 'rel' => 'alternate',
+ 'type' => 'application/x-wiki',
+ 'title' => $msg,
+ 'href' => $this->getTitle()->getLocalURL( 'action=edit' )
+ ) );
+ // Alternate edit link
+ $tags[] = Html::element( 'link', array(
+ 'rel' => 'edit',
+ 'title' => $msg,
+ 'href' => $this->getTitle()->getLocalURL( 'action=edit' )
+ ) );
+ }
+ }
+
+ # Generally the order of the favicon and apple-touch-icon links
+ # should not matter, but Konqueror (3.5.9 at least) incorrectly
+ # uses whichever one appears later in the HTML source. Make sure
+ # apple-touch-icon is specified first to avoid this.
+ if ( $wgAppleTouchIcon !== false ) {
+ $tags[] = Html::element( 'link', array( 'rel' => 'apple-touch-icon', 'href' => $wgAppleTouchIcon ) );
+ }
+
+ if ( $wgFavicon !== false ) {
+ $tags[] = Html::element( 'link', array( 'rel' => 'shortcut icon', 'href' => $wgFavicon ) );
+ }
+
+ # OpenSearch description link
+ $tags[] = Html::element( 'link', array(
+ 'rel' => 'search',
+ 'type' => 'application/opensearchdescription+xml',
+ 'href' => wfScript( 'opensearch_desc' ),
+ 'title' => wfMsgForContent( 'opensearch-desc' ),
+ ) );
+
+ if ( $wgEnableAPI ) {
+ # Real Simple Discovery link, provides auto-discovery information
+ # for the MediaWiki API (and potentially additional custom API
+ # support such as WordPress or Twitter-compatible APIs for a
+ # blogging extension, etc)
+ $tags[] = Html::element( 'link', array(
+ 'rel' => 'EditURI',
+ 'type' => 'application/rsd+xml',
+ // Output a protocol-relative URL here if $wgServer is protocol-relative
+ // Whether RSD accepts relative or protocol-relative URLs is completely undocumented, though
+ 'href' => wfExpandUrl( wfAppendQuery( wfScript( 'api' ), array( 'action' => 'rsd' ) ), PROTO_RELATIVE ),
+ ) );
+ }
+
+ # Language variants
+ if ( !$wgDisableLangConversion && $wgCanonicalLanguageLinks
+ && $wgContLang->hasVariants() ) {
+
+ $urlvar = $wgContLang->getURLVariant();
+
+ if ( !$urlvar ) {
+ $variants = $wgContLang->getVariants();
+ foreach ( $variants as $_v ) {
+ $tags[] = Html::element( 'link', array(
+ 'rel' => 'alternate',
+ 'hreflang' => $_v,
+ 'href' => $this->getTitle()->getLocalURL( '', $_v ) )
+ );
+ }
+ } else {
+ $tags[] = Html::element( 'link', array(
+ 'rel' => 'canonical',
+ 'href' => $this->getTitle()->getCanonicalUrl()
+ ) );
+ }
+ }
+
+ # Copyright
+ $copyright = '';
+ if ( $wgRightsPage ) {
+ $copy = Title::newFromText( $wgRightsPage );
+
+ if ( $copy ) {
+ $copyright = $copy->getLocalURL();
+ }
+ }
+
+ if ( !$copyright && $wgRightsUrl ) {
+ $copyright = $wgRightsUrl;
+ }
+
+ if ( $copyright ) {
+ $tags[] = Html::element( 'link', array(
+ 'rel' => 'copyright',
+ 'href' => $copyright )
+ );
+ }
+
+ # Feeds
+ if ( $wgFeed ) {
foreach( $this->getSyndicationLinks() as $format => $link ) {
- # Use the page name for the title (accessed through $wgTitle since
- # there's no other way). In principle, this could lead to issues
- # with having the same name for different feeds corresponding to
- # the same page, but we can't avoid that at this low a level.
+ # Use the page name for the title. In principle, this could
+ # lead to issues with having the same name for different feeds
+ # corresponding to the same page, but we can't avoid that at
+ # this low a level.
$tags[] = $this->feedLink(
$format,
@@ -2617,14 +2862,14 @@ class OutputPage {
# or "Breaking news" one). For this, we see if $wgOverrideSiteFeed is defined.
# If so, use it instead.
- global $wgOverrideSiteFeed, $wgSitename, $wgAdvertisedFeedTypes;
$rctitle = SpecialPage::getTitleFor( 'Recentchanges' );
if ( $wgOverrideSiteFeed ) {
foreach ( $wgOverrideSiteFeed as $type => $feedUrl ) {
+ // Note, this->feedLink escapes the url.
$tags[] = $this->feedLink(
$type,
- htmlspecialchars( $feedUrl ),
+ $feedUrl,
wfMsg( "site-{$type}-feed", $wgSitename )
);
}
@@ -2638,7 +2883,6 @@ class OutputPage {
}
}
}
-
return implode( "\n", $tags );
}
@@ -2687,8 +2931,13 @@ class OutputPage {
/**
* Adds inline CSS styles
* @param $style_css Mixed: inline CSS
+ * @param $flip False or String: Set to 'flip' to flip the CSS if needed
*/
- public function addInlineStyle( $style_css ){
+ public function addInlineStyle( $style_css, $flip = false ) {
+ if( $flip === 'flip' && $this->getLang()->isRTL() ) {
+ # If wanted, and the interface is right-to-left, flip the CSS
+ $style_css = CSSJanus::transform( $style_css, true, false );
+ }
$this->mInlineStyles .= Html::inlineStyle( $style_css );
}
@@ -2696,12 +2945,14 @@ class OutputPage {
* Build a set of <link>s for the stylesheets specified in the $this->styles array.
* These will be applied to various media & IE conditionals.
* @param $sk Skin object
+ *
+ * @return string
*/
public function buildCssLinks( $sk ) {
$ret = '';
// Add ResourceLoader styles
// Split the styles into four groups
- $styles = array( 'other' => array(), 'user' => array(), 'site' => array(), 'private' => array() );
+ $styles = array( 'other' => array(), 'user' => array(), 'site' => array(), 'private' => array(), 'noscript' => array() );
$resourceLoader = $this->getResourceLoader();
foreach ( $this->getModuleStyles() as $name ) {
$group = $resourceLoader->getModule( $name )->getGroup();
@@ -2714,19 +2965,19 @@ class OutputPage {
// dynamically added styles to override statically added styles from other modules. So the order
// has to be other, dynamic, site, private, user
// Add statically added styles for other modules
- $ret .= $this->makeResourceLoaderLink( $sk, $styles['other'], 'styles' );
+ $ret .= $this->makeResourceLoaderLink( $sk, $styles['other'], ResourceLoaderModule::TYPE_STYLES );
// Add normal styles added through addStyle()/addInlineStyle() here
$ret .= implode( "\n", $this->buildCssLinksArray() ) . $this->mInlineStyles;
// Add marker tag to mark the place where the client-side loader should inject dynamic styles
// We use a <meta> tag with a made-up name for this because that's valid HTML
- $ret .= Html::element( 'meta', array( 'name' => 'ResourceLoaderDynamicStyles', 'content' => '' ) );
-
+ $ret .= Html::element( 'meta', array( 'name' => 'ResourceLoaderDynamicStyles', 'content' => '' ) ) . "\n";
+
// Add site, private and user styles
// 'private' at present only contains user.options, so put that before 'user'
// Any future private modules will likely have a similar user-specific character
- foreach ( array( 'site', 'private', 'user' ) as $group ) {
- $ret .= $this->makeResourceLoaderLink(
- $sk, array_merge( $styles['site'], $styles['user'] ), 'styles'
+ foreach ( array( 'site', 'noscript', 'private', 'user' ) as $group ) {
+ $ret .= $this->makeResourceLoaderLink( $sk, $styles[$group],
+ ResourceLoaderModule::TYPE_STYLES
);
}
return $ret;
@@ -2753,8 +3004,7 @@ class OutputPage {
*/
protected function styleLink( $style, $options ) {
if( isset( $options['dir'] ) ) {
- $siteDir = wfUILang()->getDir();
- if( $siteDir != $options['dir'] ) {
+ if( $this->getLang()->getDir() != $options['dir'] ) {
return '';
}
}
@@ -2826,43 +3076,6 @@ class OutputPage {
}
/**
- * Turn off regular page output and return an error reponse
- * for when rate limiting has triggered.
- */
- public function rateLimited() {
- $this->setPageTitle( wfMsg( 'actionthrottled' ) );
- $this->setRobotPolicy( 'noindex,follow' );
- $this->setArticleRelated( false );
- $this->enableClientCache( false );
- $this->mRedirect = '';
- $this->clearHTML();
- $this->setStatusCode( 503 );
- $this->addWikiMsg( 'actionthrottledtext' );
-
- $this->returnToMain( null, $this->getTitle() );
- }
-
- /**
- * Show a warning about slave lag
- *
- * If the lag is higher than $wgSlaveLagCritical seconds,
- * then the warning is a bit more obvious. If the lag is
- * lower than $wgSlaveLagWarning, then no warning is shown.
- *
- * @param $lag Integer: slave lag
- */
- public function showLagWarning( $lag ) {
- global $wgSlaveLagWarning, $wgSlaveLagCritical, $wgLang;
- if( $lag >= $wgSlaveLagWarning ) {
- $message = $lag < $wgSlaveLagCritical
- ? 'lag-warn-normal'
- : 'lag-warn-high';
- $wrap = Html::rawElement( 'div', array( 'class' => "mw-{$message}" ), "\n$1\n" );
- $this->wrapWikiMsg( "$wrap\n", array( $message, $wgLang->formatNum( $lag ) ) );
- }
- }
-
- /**
* Add a wikitext-formatted message to the output.
* This is equivalent to:
*
@@ -2880,6 +3093,10 @@ class OutputPage {
* instead of a variable argument list.
*
* $options is passed through to wfMsgExt(), see that function for details.
+ *
+ * @param $name string
+ * @param $args array
+ * @param $options array
*/
public function addWikiMsgArray( $name, $args, $options = array() ) {
$options[] = 'parse';
@@ -2910,6 +3127,8 @@ class OutputPage {
* $wgOut->addWikiText( "<div class='error'>\n" . wfMsgNoTrans( 'some-error' ) . "\n</div>" );
*
* The newline after opening div is needed in some wikitext. See bug 19226.
+ *
+ * @param $wrap string
*/
public function wrapWikiMsg( $wrap /*, ...*/ ) {
$msgSpecs = func_get_args();
@@ -2931,7 +3150,7 @@ class OutputPage {
}
$s = str_replace( '$' . ( $n + 1 ), wfMsgExt( $name, $options, $args ), $s );
}
- $this->addHTML( $this->parse( $s, /*linestart*/true, /*uilang*/true ) );
+ $this->addWikiText( $s );
}
/**
@@ -2941,7 +3160,7 @@ class OutputPage {
* @param $modules Array: list of jQuery modules which should be loaded
* @return Array: the list of modules which were not loaded.
* @since 1.16
- * @deprecated No longer needed as of 1.17
+ * @deprecated since 1.17
*/
public function includeJQuery( $modules = array() ) {
return array();
diff --git a/includes/PHPVersionError.php b/includes/PHPVersionError.php
new file mode 100644
index 00000000..91502a4c
--- /dev/null
+++ b/includes/PHPVersionError.php
@@ -0,0 +1,91 @@
+<?php
+/**
+ * Display something vaguely comprehensible in the event of a totally unrecoverable error.
+ * Does not assume access to *anything*; no globals, no autloader, no database, no localisation.
+ * Safe for PHP4 (and putting this here means that WebStart.php and GlobalSettings.php
+ * no longer need to be).
+ *
+ * Calling this function kills execution immediately.
+ *
+ * @param $entryPoint String Which entry point we're protecting. One of:
+ * - index.php
+ * - load.php
+ * - api.php
+ * - cli
+ *
+ * @note Since we can't rely on anything, the minimum PHP versions and MW current
+ * version are hardcoded here
+ */
+function wfPHPVersionError( $type ){
+ $mwVersion = '1.18';
+ $phpVersion = PHP_VERSION;
+ $message = "MediaWiki $mwVersion requires at least PHP version 5.2.3, you are using PHP $phpVersion.";
+ if( $type == 'index.php' ) {
+ $encLogo = htmlspecialchars(
+ str_replace( '//', '/', pathinfo( $_SERVER['SCRIPT_NAME'], PATHINFO_DIRNAME ) . '/'
+ ) . 'skins/common/images/mediawiki.png'
+ );
+
+ header( $_SERVER['SERVER_PROTOCOL'] . ' 500 MediaWiki configuration Error', true, 500 );
+ header( 'Content-type: text/html; charset=UTF-8' );
+ // Don't cache error pages! They cause no end of trouble...
+ header( 'Cache-control: none' );
+ header( 'Pragma: nocache' );
+
+$finalOutput = <<<HTML
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
+<html xmlns='http://www.w3.org/1999/xhtml' lang='en'>
+ <head>
+ <title>MediaWiki {$mwVersion}</title>
+ <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
+ <style type='text/css' media='screen'>
+ body {
+ color: #000;
+ background-color: #fff;
+ font-family: sans-serif;
+ padding: 2em;
+ text-align: center;
+ }
+ p, img, h1 {
+ text-align: left;
+ margin: 0.5em 0;
+ }
+ h1 {
+ font-size: 120%;
+ }
+ </style>
+ </head>
+ <body>
+ <img src="{$encLogo}" alt='The MediaWiki logo' />
+ <h1>MediaWiki {$mwVersion} internal error</h1>
+ <div class='error'>
+ <p>
+ {$message}
+ </p>
+ <p>
+ Please consider <a href="http://www.php.net/downloads.php">upgrading your copy of PHP</a>.
+ PHP versions less than 5.3.0 are no longer supported by the PHP Group and will not receive
+ security or bugfix updates.
+ </p>
+ <p>
+ If for some reason you are unable to upgrade your PHP version, you will need to
+ <a href="http://www.mediawiki.org/wiki/Download">download</a> an older version
+ of MediaWiki from our website. See our
+ <a href="http://www.mediawiki.org/wiki/Compatibility#PHP">compatibility page</a>
+ for details of which versions are compatible with prior versions of PHP.
+ </p>
+ </div>
+ </body>
+</html>
+HTML;
+ // Handle everything that's not index.php
+ } else {
+ // So nothing thinks this is JS or CSS
+ $finalOutput = ( $type == 'load.php' ) ? "/* $message */" : $message;
+ if( $type != 'cli' ) {
+ header( $_SERVER['SERVER_PROTOCOL'] . ' 500 MediaWiki configuration Error', true, 500 );
+ }
+ }
+ echo( "$finalOutput\n" );
+ die( 1 );
+} \ No newline at end of file
diff --git a/includes/PageQueryPage.php b/includes/PageQueryPage.php
index 892ff259..8390241f 100644
--- a/includes/PageQueryPage.php
+++ b/includes/PageQueryPage.php
@@ -5,7 +5,7 @@
*
* @ingroup SpecialPage
*/
-class PageQueryPage extends QueryPage {
+abstract class PageQueryPage extends QueryPage {
/**
* Format the result as a simple link to the page
diff --git a/includes/Pager.php b/includes/Pager.php
index 19b61e8d..81d95593 100644
--- a/includes/Pager.php
+++ b/includes/Pager.php
@@ -51,7 +51,7 @@ interface Pager {
*
* Subclassing the pager to implement concrete functionality should be fairly
* simple, please see the examples in HistoryPage.php and
- * SpecialIpblocklist.php. You just need to override formatRow(),
+ * SpecialBlockList.php. You just need to override formatRow(),
* getQueryInfo() and getIndexField(). Don't forget to call the parent
* constructor if you override it.
*
@@ -93,6 +93,8 @@ abstract class IndexPager implements Pager {
/**
* Result object for the query. Warning: seek before use.
+ *
+ * @var ResultWrapper
*/
public $mResult;
@@ -140,7 +142,7 @@ abstract class IndexPager implements Pager {
* has been kept minimal to make it overridable if necessary, to allow for
* result sets formed from multiple DB queries.
*/
- function doQuery() {
+ public function doQuery() {
# Use the child class name for profiling
$fname = __METHOD__ . ' (' . get_class( $this ) . ')';
wfProfileIn( $fname );
@@ -197,7 +199,7 @@ abstract class IndexPager implements Pager {
# Remove any table prefix from index field
$parts = explode( '.', $this->mIndexField );
$indexColumn = end( $parts );
-
+
$row = $res->fetchRow();
$firstIndex = $row[$indexColumn];
@@ -415,8 +417,10 @@ abstract class IndexPager implements Pager {
* @return Associative array
*/
function getDefaultQuery() {
+ global $wgRequest;
+
if ( !isset( $this->mDefaultQuery ) ) {
- $this->mDefaultQuery = $_GET;
+ $this->mDefaultQuery = $wgRequest->getQueryValues();
unset( $this->mDefaultQuery['title'] );
unset( $this->mDefaultQuery['dir'] );
unset( $this->mDefaultQuery['offset'] );
@@ -703,7 +707,9 @@ abstract class ReverseChronologicalPager extends IndexPager {
function getNavigationBar() {
global $wgLang;
- if ( !$this->isNavigationBarShown() ) return '';
+ if ( !$this->isNavigationBarShown() ) {
+ return '';
+ }
if ( isset( $this->mNavigationBar ) ) {
return $this->mNavigationBar;
@@ -815,7 +821,7 @@ abstract class TablePager extends IndexPager {
$tableClass = htmlspecialchars( $this->getTableClass() );
$sortClass = htmlspecialchars( $this->getSortHeaderClass() );
- $s = "<table border='1' class=\"$tableClass\"><thead><tr>\n";
+ $s = "<table style='border:1;' class=\"$tableClass\"><thead><tr>\n";
$fields = $this->getFieldNames();
# Make table header
@@ -829,13 +835,13 @@ abstract class TablePager extends IndexPager {
# Prepare a link that goes in the other sort order
if ( $this->mDefaultDirection ) {
# Descending
- $image = 'Arr_u.png';
+ $image = 'Arr_d.png';
$query['asc'] = '1';
$query['desc'] = '';
$alt = htmlspecialchars( wfMsg( 'descending_abbrev' ) );
} else {
# Ascending
- $image = 'Arr_d.png';
+ $image = 'Arr_u.png';
$query['asc'] = '';
$query['desc'] = '1';
$alt = htmlspecialchars( wfMsg( 'ascending_abbrev' ) );
@@ -941,7 +947,7 @@ abstract class TablePager extends IndexPager {
* A navigation bar with images
*/
function getNavigationBar() {
- global $wgStylePath, $wgContLang;
+ global $wgStylePath, $wgLang;
if ( !$this->isNavigationBarShown() ) {
return '';
@@ -966,7 +972,7 @@ abstract class TablePager extends IndexPager {
'next' => 'arrow_disabled_right_25.png',
'last' => 'arrow_disabled_last_25.png',
);
- if( $wgContLang->isRTL() ) {
+ if( $wgLang->isRTL() ) {
$keys = array_keys( $labels );
$images = array_combine( $keys, array_reverse( $images ) );
$disabledImages = array_combine( $keys, array_reverse( $disabledImages ) );
@@ -982,10 +988,10 @@ abstract class TablePager extends IndexPager {
$links = $this->getPagingLinks( $linkTexts, $disabledTexts );
$navClass = htmlspecialchars( $this->getNavClass() );
- $s = "<table class=\"$navClass\" align=\"center\" cellpadding=\"3\"><tr>\n";
- $cellAttrs = 'valign="top" align="center" width="' . 100 / count( $links ) . '%"';
+ $s = "<table class=\"$navClass\"><tr>\n";
+ $width = 100 / count( $links ) . '%';
foreach ( $labels as $type => $label ) {
- $s .= "<td $cellAttrs>{$links[$type]}</td>\n";
+ $s .= "<td style='width:$width;'>{$links[$type]}</td>\n";
}
$s .= "</tr></table>\n";
return $s;
@@ -998,7 +1004,7 @@ abstract class TablePager extends IndexPager {
*/
function getLimitSelect() {
global $wgLang;
-
+
# Add the current limit from the query string
# to avoid that the limit is lost after clicking Go next time
if ( !in_array( $this->mLimit, $this->mLimitsShown ) ) {
@@ -1025,14 +1031,16 @@ abstract class TablePager extends IndexPager {
/**
* Get <input type="hidden"> elements for use in a method="get" form.
- * Resubmits all defined elements of the $_GET array, except for a
+ * Resubmits all defined elements of the query string, except for a
* blacklist, passed in the $blacklist parameter.
*
* @return String: HTML fragment
*/
function getHiddenFields( $blacklist = array() ) {
+ global $wgRequest;
+
$blacklist = (array)$blacklist;
- $query = $_GET;
+ $query = $wgRequest->getQueryValues();
foreach ( $blacklist as $name ) {
unset( $query[$name] );
}
diff --git a/includes/PatrolLog.php b/includes/PatrolLog.php
index 5727853e..0df48a85 100644
--- a/includes/PatrolLog.php
+++ b/includes/PatrolLog.php
@@ -35,14 +35,14 @@ class PatrolLog {
*
* @param $title Title of the page that was patrolled
* @param $params Array: log parameters (from logging.log_params)
- * @param $skin Skin to use for building links, etc.
+ * @param $lang Language object to use, or false
* @return String
*/
- public static function makeActionText( $title, $params, $skin ) {
+ public static function makeActionText( $title, $params, $lang ) {
list( $cur, /* $prev */, $auto ) = $params;
- if( is_object( $skin ) ) {
+ if( is_object( $lang ) ) {
# Standard link to the page in question
- $link = $skin->link( $title );
+ $link = Linker::link( $title );
if( $title->exists() ) {
# Generate a diff link
$query = array(
@@ -50,9 +50,9 @@ class PatrolLog {
'diff' => 'prev'
);
- $diff = $skin->link(
+ $diff = Linker::link(
$title,
- htmlspecialchars( wfMsg( 'patrol-log-diff', $cur ) ),
+ htmlspecialchars( wfMsg( 'patrol-log-diff', $lang->formatNum( $cur, true ) ) ),
array(),
$query,
array( 'known', 'noclasses' )
diff --git a/includes/PoolCounter.php b/includes/PoolCounter.php
index 3851767f..182520e1 100644
--- a/includes/PoolCounter.php
+++ b/includes/PoolCounter.php
@@ -4,9 +4,14 @@
* When you have many workers (threads/servers) giving service, and a
* cached item expensive to produce expires, you may get several workers
* doing the job at the same time.
+ *
* Given enough requests and the item expiring fast (non-cacheable,
* lots of edits...) that single work can end up unfairly using most (all)
- * of the cpu of the pool. This is also known as 'Michael Jackson effect'.
+ * of the cpu of the pool. This is also known as 'Michael Jackson effect'
+ * since this effect triggered on the english wikipedia on the day Michael
+ * Jackson died, the biographical article got hit with several edits per
+ * minutes and hundreds of read hits.
+ *
* The PoolCounter provides semaphore semantics for restricting the number
* of workers that may be concurrently performing such single task.
*
@@ -16,15 +21,15 @@
abstract class PoolCounter {
/* Return codes */
- const LOCKED = 1; /* Lock acquired */
+ const LOCKED = 1; /* Lock acquired */
const RELEASED = 2; /* Lock released */
- const DONE = 3; /* Another one did the work for you */
+ const DONE = 3; /* Another worker did the work for you */
- const ERROR = -1; /* Indeterminate error */
- const NOT_LOCKED = -2; /* Called release() with no lock held */
- const QUEUE_FULL = -3; /* There are already maxqueue workers on this lock */
- const TIMEOUT = -4; /* Timeout exceeded */
- const LOCK_HELD = -5; /* Cannot acquire another lock while you have one lock held */
+ const ERROR = -1; /* Indeterminate error */
+ const NOT_LOCKED = -2; /* Called release() with no lock held */
+ const QUEUE_FULL = -3; /* There are already maxqueue workers on this lock */
+ const TIMEOUT = -4; /* Timeout exceeded */
+ const LOCK_HELD = -5; /* Cannot acquire another lock while you have one lock held */
/**
* I want to do this task and I need to do it myself.
@@ -62,6 +67,11 @@ abstract class PoolCounter {
/**
* Create a Pool counter. This should only be called from the PoolWorks.
+ *
+ * @param $type
+ * @param $key
+ *
+ * @return PoolCounter
*/
public static function factory( $type, $key ) {
global $wgPoolCounterConf;
@@ -83,18 +93,28 @@ abstract class PoolCounter {
}
class PoolCounter_Stub extends PoolCounter {
+
+ /**
+ * @return Status
+ */
function acquireForMe() {
return Status::newGood( PoolCounter::LOCKED );
}
+ /**
+ * @return Status
+ */
function acquireForAnyone() {
return Status::newGood( PoolCounter::LOCKED );
}
+ /**
+ * @return Status
+ */
function release() {
return Status::newGood( PoolCounter::RELEASED );
}
-
+
public function __construct() {
/* No parameters needed */
}
@@ -134,6 +154,13 @@ abstract class PoolCounterWork {
function error( $status ) {
return false;
}
+
+ /**
+ * Log an error
+ */
+ function logError( $status ) {
+ wfDebugLog( 'poolcounter', $status->getWikiText() );
+ }
/**
* Get the result of the work (whatever it is), or false.
@@ -144,43 +171,47 @@ abstract class PoolCounterWork {
} else {
$status = $this->poolCounter->acquireForMe();
}
-
- if ( $status->isOK() ) {
- switch ( $status->value ) {
- case PoolCounter::LOCKED:
- $result = $this->doWork();
- $this->poolCounter->release();
- return $result;
+
+ if ( !$status->isOK() ) {
+ // Respond gracefully to complete server breakage: just log it and do the work
+ $this->logError( $status );
+ return $this->doWork();
+ }
+
+ switch ( $status->value ) {
+ case PoolCounter::LOCKED:
+ $result = $this->doWork();
+ $this->poolCounter->release();
+ return $result;
+
+ case PoolCounter::DONE:
+ $result = $this->getCachedWork();
+ if ( $result === false ) {
+ /* That someone else work didn't serve us.
+ * Acquire the lock for me
+ */
+ return $this->execute( true );
+ }
+ return $result;
+
+ case PoolCounter::QUEUE_FULL:
+ case PoolCounter::TIMEOUT:
+ $result = $this->fallback();
- case PoolCounter::DONE:
- $result = $this->getCachedWork();
- if ( $result === false ) {
- /* That someone else work didn't serve us.
- * Acquire the lock for me
- */
- return $this->execute( true );
- }
+ if ( $result !== false ) {
return $result;
-
- case PoolCounter::QUEUE_FULL:
- case PoolCounter::TIMEOUT:
- $result = $this->fallback();
-
- if ( $result !== false ) {
- return $result;
- }
- /* no break */
+ }
+ /* no break */
+
+ /* These two cases should never be hit... */
+ case PoolCounter::ERROR:
+ default:
+ $errors = array( PoolCounter::QUEUE_FULL => 'pool-queuefull', PoolCounter::TIMEOUT => 'pool-timeout' );
- /* These two cases should never be hit... */
- case PoolCounter::ERROR:
- default:
- $errors = array( PoolCounter::QUEUE_FULL => 'pool-queuefull', PoolCounter::TIMEOUT => 'pool-timeout' );
-
- $status = Status::newFatal( isset($errors[$status->value]) ? $errors[$status->value] : 'pool-errorunknown' );
- /* continue to the error */
- }
+ $status = Status::newFatal( isset($errors[$status->value]) ? $errors[$status->value] : 'pool-errorunknown' );
+ $this->logError( $status );
+ return $this->error( $status );
}
- return $this->error( $status );
}
function __construct( $type, $key ) {
diff --git a/includes/Preferences.php b/includes/Preferences.php
index c8ea2cc6..91b3326b 100644
--- a/includes/Preferences.php
+++ b/includes/Preferences.php
@@ -36,16 +36,21 @@ class Preferences {
'searchlimit' => array( 'Preferences', 'filterIntval' ),
);
+ /**
+ * @throws MWException
+ * @param $user User
+ * @return array|null
+ */
static function getPreferences( $user ) {
- if ( self::$defaultPreferences )
+ if ( self::$defaultPreferences ) {
return self::$defaultPreferences;
+ }
$defaultPreferences = array();
self::profilePreferences( $user, $defaultPreferences );
self::skinPreferences( $user, $defaultPreferences );
self::filesPreferences( $user, $defaultPreferences );
- self::mathPreferences( $user, $defaultPreferences );
self::datetimePreferences( $user, $defaultPreferences );
self::renderingPreferences( $user, $defaultPreferences );
self::editingPreferences( $user, $defaultPreferences );
@@ -92,7 +97,14 @@ class Preferences {
return $defaultPreferences;
}
- // Pull option from a user account. Handles stuff like array-type preferences.
+ /**
+ * Pull option from a user account. Handles stuff like array-type preferences.
+ *
+ * @param $name
+ * @param $info
+ * @param $user User
+ * @return array|String
+ */
static function getOptionFromUser( $name, $info, $user ) {
$val = $user->getOption( $name );
@@ -113,6 +125,11 @@ class Preferences {
return $val;
}
+ /**
+ * @param $user User
+ * @param $defaultPreferences
+ * @return void
+ */
static function profilePreferences( $user, &$defaultPreferences ) {
global $wgLang, $wgUser;
## User info #####################################
@@ -207,7 +224,7 @@ class Preferences {
);
if ( $wgAuth->allowPasswordChange() ) {
- $link = $wgUser->getSkin()->link( SpecialPage::getTitleFor( 'Resetpass' ),
+ $link = $wgUser->getSkin()->link( SpecialPage::getTitleFor( 'ChangePassword' ),
wfMsgHtml( 'prefs-resetpass' ), array(),
array( 'returnto' => SpecialPage::getTitleFor( 'Preferences' ) ) );
@@ -296,7 +313,7 @@ class Preferences {
global $wgMaxSigChars, $wgOut, $wgParser;
// show a preview of the old signature first
- $oldsigWikiText = $wgParser->preSaveTransform( "~~~", new Title , $user, new ParserOptions );
+ $oldsigWikiText = $wgParser->preSaveTransform( "~~~", new Title, $user, new ParserOptions );
$oldsigHTML = $wgOut->parseInline( $oldsigWikiText );
$defaultPreferences['oldsig'] = array(
'type' => 'info',
@@ -325,19 +342,27 @@ class Preferences {
global $wgEnableEmail;
if ( $wgEnableEmail ) {
global $wgEmailConfirmToEdit;
+ global $wgEnableUserEmail;
+
+ $helpMessages[] = $wgEmailConfirmToEdit
+ ? 'prefs-help-email-required'
+ : 'prefs-help-email' ;
+
+ if( $wgEnableUserEmail ) {
+ // additional messages when users can send email to each other
+ $helpMessages[] = 'prefs-help-email-others';
+ }
$defaultPreferences['emailaddress'] = array(
'type' => $wgAuth->allowPropChange( 'emailaddress' ) ? 'email' : 'info',
'default' => $user->getEmail(),
'section' => 'personal/email',
'label-message' => 'youremail',
- 'help-message' => $wgEmailConfirmToEdit
- ? 'prefs-help-email-required'
- : 'prefs-help-email',
+ 'help-messages' => $helpMessages,
'validation-callback' => array( 'Preferences', 'validateEmail' ),
);
- global $wgEnableUserEmail, $wgEmailAuthentication;
+ global $wgEmailAuthentication;
$disableEmailPrefs = false;
@@ -437,6 +462,11 @@ class Preferences {
}
}
+ /**
+ * @param $user User
+ * @param $defaultPreferences
+ * @return void
+ */
static function skinPreferences( $user, &$defaultPreferences ) {
## Skin #####################################
global $wgLang, $wgAllowUserCss, $wgAllowUserJs;
@@ -487,19 +517,10 @@ class Preferences {
}
}
- static function mathPreferences( $user, &$defaultPreferences ) {
- ## Math #####################################
- global $wgUseTeX, $wgLang;
- if ( $wgUseTeX ) {
- $defaultPreferences['math'] = array(
- 'type' => 'radio',
- 'options' => array_flip( array_map( 'wfMsgHtml', $wgLang->getMathNames() ) ),
- 'label' => '&#160;',
- 'section' => 'rendering/math',
- );
- }
- }
-
+ /**
+ * @param $user User
+ * @param $defaultPreferences Array
+ */
static function filesPreferences( $user, &$defaultPreferences ) {
## Files #####################################
$defaultPreferences['imagesize'] = array(
@@ -516,6 +537,11 @@ class Preferences {
);
}
+ /**
+ * @param $user User
+ * @param $defaultPreferences
+ * @return void
+ */
static function datetimePreferences( $user, &$defaultPreferences ) {
global $wgLang;
@@ -531,10 +557,11 @@ class Preferences {
}
// Info
+ $now = wfTimestampNow();
$nowlocal = Xml::element( 'span', array( 'id' => 'wpLocalTime' ),
- $wgLang->time( $now = wfTimestampNow(), true ) );
+ $wgLang->time( $now, true ) );
$nowserver = $wgLang->time( $now, false ) .
- Html::hidden( 'wpServerTime', substr( $now, 8, 2 ) * 60 + substr( $now, 10, 2 ) );
+ Html::hidden( 'wpServerTime', (int)substr( $now, 8, 2 ) * 60 + (int)substr( $now, 10, 2 ) );
$defaultPreferences['nowserver'] = array(
'type' => 'info',
@@ -572,6 +599,10 @@ class Preferences {
);
}
+ /**
+ * @param $user User
+ * @param $defaultPreferences Array
+ */
static function renderingPreferences( $user, &$defaultPreferences ) {
## Page Rendering ##############################
global $wgAllowUserCssPrefs;
@@ -645,6 +676,10 @@ class Preferences {
);
}
+ /**
+ * @param $user User
+ * @param $defaultPreferences Array
+ */
static function editingPreferences( $user, &$defaultPreferences ) {
global $wgUseExternalEditor, $wgAllowUserCssPrefs;
@@ -710,11 +745,14 @@ class Preferences {
'section' => 'editing/advancedediting',
'label-message' => 'tog-showtoolbar',
);
- $defaultPreferences['minordefault'] = array(
- 'type' => 'toggle',
- 'section' => 'editing/advancedediting',
- 'label-message' => 'tog-minordefault',
- );
+
+ if ( $user->isAllowed( 'minoredit' ) ) {
+ $defaultPreferences['minordefault'] = array(
+ 'type' => 'toggle',
+ 'section' => 'editing/advancedediting',
+ 'label-message' => 'tog-minordefault',
+ );
+ }
if ( $wgUseExternalEditor ) {
$defaultPreferences['externaleditor'] = array(
@@ -735,7 +773,7 @@ class Preferences {
'label-message' => 'tog-forceeditsummary',
);
-
+
$defaultPreferences['uselivepreview'] = array(
'type' => 'toggle',
'section' => 'editing/advancedediting',
@@ -743,8 +781,12 @@ class Preferences {
);
}
+ /**
+ * @param $user User
+ * @param $defaultPreferences Array
+ */
static function rcPreferences( $user, &$defaultPreferences ) {
- global $wgRCMaxAge, $wgUseRCPatrol, $wgLang;
+ global $wgRCMaxAge, $wgLang;
## RecentChanges #####################################
$defaultPreferences['rcdays'] = array(
@@ -776,7 +818,7 @@ class Preferences {
'section' => 'rc/advancedrc',
);
- if ( $wgUseRCPatrol ) {
+ if ( $user->useRCPatrol() ) {
$defaultPreferences['hidepatrolled'] = array(
'type' => 'toggle',
'section' => 'rc/advancedrc',
@@ -799,6 +841,10 @@ class Preferences {
}
}
+ /**
+ * @param $user User
+ * @param $defaultPreferences
+ */
static function watchlistPreferences( $user, &$defaultPreferences ) {
global $wgUseRCPatrol, $wgEnableAPI;
@@ -892,6 +938,10 @@ class Preferences {
}
}
+ /**
+ * @param $user User
+ * @param $defaultPreferences Array
+ */
static function searchPreferences( $user, &$defaultPreferences ) {
global $wgContLang;
@@ -902,18 +952,6 @@ class Preferences {
'section' => 'searchoptions/displaysearchoptions',
'min' => 0,
);
- $defaultPreferences['contextlines'] = array(
- 'type' => 'int',
- 'label-message' => 'contextlines',
- 'section' => 'searchoptions/displaysearchoptions',
- 'min' => 0,
- );
- $defaultPreferences['contextchars'] = array(
- 'type' => 'int',
- 'label-message' => 'contextchars',
- 'section' => 'searchoptions/displaysearchoptions',
- 'min' => 0,
- );
global $wgEnableMWSuggest;
if ( $wgEnableMWSuggest ) {
@@ -923,7 +961,7 @@ class Preferences {
'section' => 'searchoptions/displaysearchoptions',
);
}
-
+
global $wgVectorUseSimpleSearch;
if ( $wgVectorUseSimpleSearch ) {
$defaultPreferences['vector-simplesearch'] = array(
@@ -939,9 +977,6 @@ class Preferences {
'section' => 'searchoptions/advancedsearchoptions',
);
- // Searchable namespaces back-compat with old format
- $searchableNamespaces = SearchEngine::searchableNamespaces();
-
$nsOptions = array();
foreach ( $wgContLang->getNamespaces() as $ns => $name ) {
@@ -968,6 +1003,10 @@ class Preferences {
);
}
+ /**
+ * @param $user User
+ * @param $defaultPreferences Array
+ */
static function miscPreferences( $user, &$defaultPreferences ) {
## Misc #####################################
$defaultPreferences['diffonly'] = array(
@@ -996,7 +1035,7 @@ class Preferences {
}
/**
- * @param $user The User object
+ * @param $user User The User object
* @return Array: text/links to display as key; $skinkey as value
*/
static function generateSkinOptions( $user ) {
@@ -1013,10 +1052,9 @@ class Preferences {
# Sort by UI skin name. First though need to update validSkinNames as sometimes
# the skinkey & UI skinname differ (e.g. "standard" skinkey is "Classic" in the UI).
foreach ( $validSkinNames as $skinkey => &$skinname ) {
- $msgName = "skinname-{$skinkey}";
- $localisedSkinName = wfMsg( $msgName );
- if ( !wfEmptyMsg( $msgName, $localisedSkinName ) ) {
- $skinname = htmlspecialchars( $localisedSkinName );
+ $msg = wfMessage( "skinname-{$skinkey}" );
+ if ( $msg->exists() ) {
+ $skinname = htmlspecialchars( $msg->text() );
}
}
asort( $validSkinNames );
@@ -1052,6 +1090,9 @@ class Preferences {
return $ret;
}
+ /**
+ * @return array
+ */
static function getDateOptions() {
global $wgLang;
$dateopts = $wgLang->getDatePreferences();
@@ -1083,6 +1124,9 @@ class Preferences {
return $ret;
}
+ /**
+ * @return array
+ */
static function getImageSizes() {
global $wgImageLimits;
@@ -1096,6 +1140,9 @@ class Preferences {
return $ret;
}
+ /**
+ * @return array
+ */
static function getThumbSizes() {
global $wgThumbLimits;
@@ -1109,6 +1156,11 @@ class Preferences {
return $ret;
}
+ /**
+ * @param $signature
+ * @param $alldata
+ * @return bool|string
+ */
static function validateSignature( $signature, $alldata ) {
global $wgParser, $wgMaxSigChars, $wgLang;
if ( mb_strlen( $signature ) > $wgMaxSigChars ) {
@@ -1126,6 +1178,11 @@ class Preferences {
}
}
+ /**
+ * @param $signature string
+ * @param $alldata array
+ * @return string
+ */
static function cleanSignature( $signature, $alldata ) {
global $wgParser;
if ( isset( $alldata['fancysig'] ) && $alldata['fancysig'] ) {
@@ -1138,8 +1195,13 @@ class Preferences {
return $signature;
}
+ /**
+ * @param $email
+ * @param $alldata
+ * @return bool|String
+ */
static function validateEmail( $email, $alldata ) {
- if ( $email && !User::isValidEmailAddr( $email ) ) {
+ if ( $email && !Sanitizer::validateEmail( $email ) ) {
return wfMsgExt( 'invalidemailaddress', 'parseinline' );
}
@@ -1150,10 +1212,16 @@ class Preferences {
return true;
}
+ /**
+ * @param $user User
+ * @param $formClass string
+ * @return HtmlForm
+ */
static function getFormObject( $user, $formClass = 'PreferencesForm' ) {
$formDescriptor = Preferences::getPreferences( $user );
$htmlForm = new $formClass( $formDescriptor, 'prefs' );
+ $htmlForm->setId( 'mw-prefs-form' );
$htmlForm->setSubmitText( wfMsg( 'saveprefs' ) );
# Used message keys: 'accesskey-preferences-save', 'tooltip-preferences-save'
$htmlForm->setSubmitTooltip( 'preferences-save' );
@@ -1164,12 +1232,21 @@ class Preferences {
return $htmlForm;
}
+ /**
+ * @return array
+ */
static function getTimezoneOptions() {
$opt = array();
- global $wgLocalTZoffset;
-
- $opt[wfMsg( 'timezoneuseserverdefault' )] = "System|$wgLocalTZoffset";
+ global $wgLocalTZoffset, $wgLocaltimezone;
+ // Check that $wgLocalTZoffset is the same as $wgLocaltimezone
+ if ( $wgLocalTZoffset == date( 'Z' ) / 60 ) {
+ $server_tz_msg = wfMsg( 'timezoneuseserverdefault', $wgLocaltimezone );
+ } else {
+ $tzstring = sprintf( '%+03d:%02d', floor( $wgLocalTZoffset / 60 ), abs( $wgLocalTZoffset ) % 60 );
+ $server_tz_msg = wfMsg( 'timezoneuseserverdefault', $tzstring );
+ }
+ $opt[$server_tz_msg] = "System|$wgLocalTZoffset";
$opt[wfMsg( 'timezoneuseoffset' )] = 'other';
$opt[wfMsg( 'guesstimezone' )] = 'guess';
@@ -1219,11 +1296,21 @@ class Preferences {
}
return $opt;
}
-
+
+ /**
+ * @param $value
+ * @param $alldata
+ * @return int
+ */
static function filterIntval( $value, $alldata ){
return intval( $value );
}
+ /**
+ * @param $tz
+ * @param $alldata
+ * @return string
+ */
static function filterTimezoneInput( $tz, $alldata ) {
$data = explode( '|', $tz, 3 );
switch ( $data[0] ) {
@@ -1249,6 +1336,11 @@ class Preferences {
}
}
+ /**
+ * @param $formData
+ * @param $entryPoint string
+ * @return bool|Status|string
+ */
static function tryFormSubmit( $formData, $entryPoint = 'internal' ) {
global $wgUser, $wgEmailAuthentication, $wgEnableEmail;
@@ -1307,6 +1399,16 @@ class Preferences {
unset( $formData[$b] );
}
+ # If users have saved a value for a preference which has subsequently been disabled
+ # via $wgHiddenPrefs, we don't want to destroy that setting in case the preference
+ # is subsequently re-enabled
+ # TODO: maintenance script to actually delete these
+ foreach( $wgHiddenPrefs as $pref ){
+ # If the user has not set a non-default value here, the default will be returned
+ # and subsequently discarded
+ $formData[$pref] = $wgUser->getOption( $pref, null, true );
+ }
+
// Keeps old preferences from interfering due to back-compat
// code, etc.
$wgUser->resetOptions();
@@ -1320,6 +1422,10 @@ class Preferences {
return $result;
}
+ /**
+ * @param $formData
+ * @return Status
+ */
public static function tryUISubmit( $formData ) {
$res = self::tryFormSubmit( $formData, 'ui' );
@@ -1341,6 +1447,10 @@ class Preferences {
return Status::newGood();
}
+ /**
+ * @param $user User
+ * @return array
+ */
public static function loadOldSearchNs( $user ) {
$searchableNamespaces = SearchEngine::searchableNamespaces();
// Back compat with old format
@@ -1358,12 +1468,20 @@ class Preferences {
/** Some tweaks to allow js prefs to work */
class PreferencesForm extends HTMLForm {
+
+ /**
+ * @param $html string
+ * @return String
+ */
function wrapForm( $html ) {
$html = Xml::tags( 'div', array( 'id' => 'preferences' ), $html );
return parent::wrapForm( $html );
}
+ /**
+ * @return String
+ */
function getButtons() {
$html = parent::getButtons();
@@ -1379,6 +1497,10 @@ class PreferencesForm extends HTMLForm {
return $html;
}
+ /**
+ * @param $data array
+ * @return array
+ */
function filterDataForSubmit( $data ) {
// Support for separating MultiSelect preferences into multiple preferences
// Due to lack of array support.
@@ -1398,4 +1520,10 @@ class PreferencesForm extends HTMLForm {
return $data;
}
+ /**
+ * Get the whole body of the form.
+ */
+ function getBody() {
+ return $this->displaySection( $this->mFieldTree, '', 'mw-prefsection-' );
+ }
}
diff --git a/includes/PrefixSearch.php b/includes/PrefixSearch.php
index 236e4370..0efe1bdd 100644
--- a/includes/PrefixSearch.php
+++ b/includes/PrefixSearch.php
@@ -15,7 +15,7 @@ class PrefixSearch {
* @param $namespaces Array: used if query is not explicitely prefixed
* @return Array of strings
*/
- public static function titleSearch( $search, $limit, $namespaces=array() ) {
+ public static function titleSearch( $search, $limit, $namespaces = array() ) {
$search = trim( $search );
if( $search == '' ) {
return array(); // Return empty result
@@ -26,8 +26,9 @@ class PrefixSearch {
$title = Title::newFromText( $search );
if( $title && $title->getInterwiki() == '' ) {
$ns = array($title->getNamespace());
- if($ns[0] == NS_MAIN)
+ if( $ns[0] == NS_MAIN ) {
$ns = $namespaces; // no explicit prefix, use default namespaces
+ }
return self::searchBackend(
$ns, $title->getText(), $limit );
}
@@ -38,13 +39,12 @@ class PrefixSearch {
&& $title->getNamespace() != NS_MAIN
&& $title->getInterwiki() == '' ) {
return self::searchBackend(
- array($title->getNamespace()), '', $limit );
+ array( $title->getNamespace() ), '', $limit );
}
return self::searchBackend( $namespaces, $search, $limit );
}
-
/**
* Do a prefix search of titles and return a list of matching page names.
* @param $namespaces Array
@@ -53,10 +53,10 @@ class PrefixSearch {
* @return Array of strings
*/
protected static function searchBackend( $namespaces, $search, $limit ) {
- if( count($namespaces) == 1 ){
+ if( count( $namespaces ) == 1 ) {
$ns = $namespaces[0];
if( $ns == NS_MEDIA ) {
- $namespaces = array(NS_FILE);
+ $namespaces = array( NS_FILE );
} elseif( $ns == NS_SPECIAL ) {
return self::specialSearch( $search, $limit );
}
@@ -85,15 +85,13 @@ class PrefixSearch {
// Unlike SpecialPage itself, we want the canonical forms of both
// canonical and alias title forms...
- SpecialPage::initList();
- SpecialPage::initAliasList();
$keys = array();
- foreach( array_keys( SpecialPage::$mList ) as $page ) {
+ foreach( SpecialPageFactory::getList() as $page => $class ) {
$keys[$wgContLang->caseFold( $page )] = $page;
}
foreach( $wgContLang->getSpecialPageAliases() as $page => $aliases ) {
- if( !array_key_exists( $page, SpecialPage::$mList ) ) {# bug 20885
+ if( !array_key_exists( $page, SpecialPageFactory::getList() ) ) {# bug 20885
continue;
}
@@ -135,12 +133,13 @@ class PrefixSearch {
* @return Array of title strings
*/
protected static function defaultSearchBackend( $namespaces, $search, $limit ) {
- $ns = array_shift($namespaces); // support only one namespace
- if( in_array(NS_MAIN,$namespaces))
+ $ns = array_shift( $namespaces ); // support only one namespace
+ if( in_array( NS_MAIN, $namespaces ) ) {
$ns = NS_MAIN; // if searching on many always default to main
+ }
// Prepare nested request
- $req = new FauxRequest(array (
+ $req = new FauxRequest( array(
'action' => 'query',
'list' => 'allpages',
'apnamespace' => $ns,
@@ -149,7 +148,7 @@ class PrefixSearch {
));
// Execute
- $module = new ApiMain($req);
+ $module = new ApiMain( $req );
$module->execute();
// Get resulting data
@@ -157,7 +156,7 @@ class PrefixSearch {
// Reformat useful data for future printing by JSON engine
$srchres = array ();
- foreach ((array)$data['query']['allpages'] as $pageinfo) {
+ foreach ( (array)$data['query']['allpages'] as $pageinfo ) {
// Note: this data will no be printable by the xml engine
// because it does not support lists of unnamed items
$srchres[] = $pageinfo['title'];
@@ -172,18 +171,19 @@ class PrefixSearch {
* @param $namespaces Array
* @return Array (default: contains only NS_MAIN)
*/
- protected static function validateNamespaces($namespaces){
+ protected static function validateNamespaces( $namespaces ) {
global $wgContLang;
// We will look at each given namespace against wgContLang namespaces
$validNamespaces = $wgContLang->getNamespaces();
- if( is_array($namespaces) && count($namespaces)>0 ){
+ if( is_array( $namespaces ) && count( $namespaces ) > 0 ) {
$valid = array();
- foreach ($namespaces as $ns){
- if( is_numeric($ns) && array_key_exists($ns, $validNamespaces) )
+ foreach ( $namespaces as $ns ) {
+ if( is_numeric( $ns ) && array_key_exists( $ns, $validNamespaces ) ) {
$valid[] = $ns;
+ }
}
- if( count($valid) > 0 ) {
+ if( count( $valid ) > 0 ) {
return $valid;
}
}
diff --git a/includes/ProfilerSimpleText.php b/includes/ProfilerSimpleText.php
deleted file mode 100644
index db4b6053..00000000
--- a/includes/ProfilerSimpleText.php
+++ /dev/null
@@ -1,39 +0,0 @@
-<?php
-/**
- * @file
- * @ingroup Profiler
- */
-
-require_once( dirname( __FILE__ ) . '/ProfilerSimple.php' );
-
-/**
- * The least sophisticated profiler output class possible, view your source! :)
- *
- * Put the following 3 lines in StartProfiler.php:
- *
- * require_once( dirname( __FILE__ ) . '/includes/ProfilerSimpleText.php' );
- * $wgProfiler = new ProfilerSimpleText;
- * $wgProfiler->visible=true;
- *
- * @ingroup Profiler
- */
-class ProfilerSimpleText extends ProfilerSimple {
- public $visible=false; /* Show as <PRE> or <!-- ? */
- static private $out;
-
- function getFunctionReport() {
- if($this->mTemplated) {
- uasort($this->mCollated,array('self','sort'));
- array_walk($this->mCollated,array('self','format'));
- if ($this->visible) {
- print '<pre>'.self::$out.'</pre>';
- } else {
- print "<!--\n".self::$out."\n-->\n";
- }
- }
- }
-
- /* dense is good */
- static function sort($a,$b) { return $a['real']<$b['real']; /* sort descending by time elapsed */ }
- static function format($item,$key) { self::$out .= sprintf("%3.6f %6d - %s\n",$item['real'],$item['count'], $key); }
-}
diff --git a/includes/ProfilerStub.php b/includes/ProfilerStub.php
deleted file mode 100644
index e624e6f0..00000000
--- a/includes/ProfilerStub.php
+++ /dev/null
@@ -1,52 +0,0 @@
-<?php
-/**
- * Stub profiling functions
- * @file
- * @ingroup Profiler
- */
-
-/** backward compatibility */
-$wgProfiling = false;
-$wgProfiler = null;
-
-/** is setproctitle function available ? */
-$haveProctitle = function_exists( 'setproctitle' );
-
-/**
- * Begin profiling of a function
- * @param $fn string
- */
-function wfProfileIn( $fn = '' ) {
- global $hackwhere, $wgDBname, $haveProctitle;
- if( $haveProctitle ){
- $hackwhere[] = $fn;
- setproctitle( $fn . " [$wgDBname]" );
- }
-}
-
-/**
- * Stop profiling of a function
- * @param $fn string
- */
-function wfProfileOut( $fn = '' ) {
- global $hackwhere, $wgDBname, $haveProctitle;
- if( !$haveProctitle ) {
- return;
- }
- if( count( $hackwhere ) ) {
- array_pop( $hackwhere );
- }
- if( count( $hackwhere ) ) {
- setproctitle( $hackwhere[count( $hackwhere )-1] . " [$wgDBname]" );
- }
-}
-
-/**
- * Does nothing, just for compatibility
- */
-function wfGetProfilingOutput( $s, $e ) {}
-
-/**
- * Does nothing, just for compatibility
- */
-function wfProfileClose() {}
diff --git a/includes/ProtectionForm.php b/includes/ProtectionForm.php
index 2d95d801..71703eb2 100644
--- a/includes/ProtectionForm.php
+++ b/includes/ProtectionForm.php
@@ -57,11 +57,11 @@ class ProtectionForm {
/** Map of action to the expiry time of the existing protection */
var $mExistingExpiry = array();
- function __construct( Article $article ) {
+ function __construct( Page $article ) {
global $wgUser;
// Set instance variables.
$this->mArticle = $article;
- $this->mTitle = $article->mTitle;
+ $this->mTitle = $article->getTitle();
$this->mApplicableTypes = $this->mTitle->getRestrictionTypes();
// Check if the form should be disabled.
@@ -89,7 +89,7 @@ class ProtectionForm {
$this->mCascade = $wgRequest->getBool( 'mwProtect-cascade', $this->mCascade );
foreach( $this->mApplicableTypes as $action ) {
- // Fixme: this form currently requires individual selections,
+ // @todo FIXME: This form currently requires individual selections,
// but the db allows multiples separated by commas.
// Pull the actual restriction from the DB
@@ -133,7 +133,7 @@ class ProtectionForm {
// Prevent users from setting levels that they cannot later unset
if( $val == 'sysop' ) {
// Special case, rewrite sysop to either protect and editprotected
- if( !$wgUser->isAllowed('protect') && !$wgUser->isAllowed('editprotected') )
+ if( !$wgUser->isAllowedAny( 'protect', 'editprotected' ) )
continue;
} else {
if( !$wgUser->isAllowed($val) )
@@ -147,7 +147,9 @@ class ProtectionForm {
/**
* Get the expiry time for a given action, by combining the relevant inputs.
*
- * @return 14-char timestamp or "infinity", or false if the input was invalid
+ * @param $action string
+ *
+ * @return string 14-char timestamp or "infinity", or false if the input was invalid
*/
function getExpiry( $action ) {
if ( $this->mExpirySelection[$action] == 'existing' ) {
@@ -158,7 +160,7 @@ class ProtectionForm {
$value = $this->mExpirySelection[$action];
}
if ( $value == 'infinite' || $value == 'indefinite' || $value == 'infinity' ) {
- $time = Block::infinity();
+ $time = wfGetDB( DB_SLAVE )->getInfinity();
} else {
$unix = strtotime( $value );
@@ -166,7 +168,7 @@ class ProtectionForm {
return false;
}
- // Fixme: non-qualified absolute times are not in users specified timezone
+ // @todo FIXME: Non-qualified absolute times are not in users specified timezone
// and there isn't notice about it in the ui
$time = wfTimestamp( TS_MW, $unix );
}
@@ -232,10 +234,11 @@ class ProtectionForm {
if( wfReadOnly() ) {
$wgOut->readOnlyPage();
} elseif( $this->mPermErrors ) {
- $wgOut->addWikiText( $wgOut->formatPermissionsErrorMessage( $this->mPermErrors ) );
+ $wgOut->showPermissionsErrorPage( $this->mPermErrors );
}
} else {
- $wgOut->addWikiMsg( 'protect-text', $this->mTitle->getPrefixedText() );
+ $wgOut->addWikiMsg( 'protect-text',
+ wfEscapeWikiText( $this->mTitle->getPrefixedText() ) );
}
$wgOut->addHTML( $this->buildForm() );
@@ -316,10 +319,10 @@ class ProtectionForm {
return false;
}
- if( $wgRequest->getCheck( 'mwProtectWatch' ) && $wgUser->isLoggedIn() ) {
- $this->mArticle->doWatch();
- } elseif( $this->mTitle->userIsWatching() ) {
- $this->mArticle->doUnwatch();
+ if ( $wgRequest->getCheck( 'mwProtectWatch' ) && $wgUser->isLoggedIn() ) {
+ WatchAction::doWatch( $this->mTitle, $wgUser );
+ } elseif ( $this->mTitle->userIsWatching() ) {
+ WatchAction::doUnwatch( $this->mTitle, $wgUser );
}
return $ok;
}
@@ -351,13 +354,10 @@ class ProtectionForm {
foreach( $this->mRestrictions as $action => $selected ) {
/* Not all languages have V_x <-> N_x relation */
- $msg = wfMsg( 'restriction-' . $action );
- if( wfEmptyMsg( 'restriction-' . $action, $msg ) ) {
- $msg = $action;
- }
+ $msg = wfMessage( 'restriction-' . $action );
$out .= "<tr><td>".
Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, $msg ) .
+ Xml::element( 'legend', null, $msg->exists() ? $msg->text() : $action ) .
Xml::openElement( 'table', array( 'id' => "mw-protect-table-$action" ) ) .
"<tr><td>" . $this->buildSelector( $action, $selected ) . "</td></tr><tr><td>";
@@ -470,7 +470,10 @@ class ProtectionForm {
</td>
<td class='mw-input'>" .
Xml::input( 'mwProtect-reason', 60, $this->mReason, array( 'type' => 'text',
- 'id' => 'mwProtect-reason', 'maxlength' => 255 ) ) .
+ 'id' => 'mwProtect-reason', 'maxlength' => 180 ) ) .
+ // Limited maxlength as the database trims at 255 bytes and other texts
+ // chosen by dropdown menus on this page are also included in this database field.
+ // The byte limit of 180 bytes is enforced in javascript
"</td>
</tr>";
# Disallow watching is user is not logged in
@@ -530,7 +533,7 @@ class ProtectionForm {
//don't let them choose levels above their own (aka so they can still unprotect and edit the page). but only when the form isn't disabled
if( $key == 'sysop' ) {
//special case, rewrite sysop to protect and editprotected
- if( !$wgUser->isAllowed('protect') && !$wgUser->isAllowed('editprotected') && !$this->disabled )
+ if( !$wgUser->isAllowedAny( 'protect', 'editprotected' ) && !$this->disabled )
continue;
} else {
if( !$wgUser->isAllowed($key) && !$this->disabled )
@@ -565,34 +568,35 @@ class ProtectionForm {
if( $permission == '' ) {
return wfMsg( 'protect-default' );
} else {
- $key = "protect-level-{$permission}";
- $msg = wfMsg( $key );
- if( wfEmptyMsg( $key, $msg ) )
- $msg = wfMsg( 'protect-fallback', $permission );
- return $msg;
+ $msg = wfMessage( "protect-level-{$permission}" );
+ if( $msg->exists() ) {
+ return $msg->text();
+ }
+ return wfMsg( 'protect-fallback', $permission );
}
}
function buildCleanupScript() {
- global $wgRestrictionLevels, $wgGroupPermissions;
- $script = 'var wgCascadeableLevels=';
- $CascadeableLevels = array();
+ global $wgRestrictionLevels, $wgGroupPermissions, $wgOut;
+
+ $cascadeableLevels = array();
foreach( $wgRestrictionLevels as $key ) {
- if ( (isset($wgGroupPermissions[$key]['protect']) && $wgGroupPermissions[$key]['protect']) || $key == 'protect' ) {
- $CascadeableLevels[] = "'" . Xml::escapeJsString( $key ) . "'";
+ if ( ( isset( $wgGroupPermissions[$key]['protect'] ) && $wgGroupPermissions[$key]['protect'] )
+ || $key == 'protect'
+ ) {
+ $cascadeableLevels[] = $key;
}
}
- $script .= "[" . implode(',',$CascadeableLevels) . "];\n";
- $options = (object)array(
+ $options = array(
'tableId' => 'mwProtectSet',
- 'labelText' => wfMsg( 'protect-unchain-permissions' ),
- 'numTypes' => count($this->mApplicableTypes),
- 'existingMatch' => 1 == count( array_unique( $this->mExistingExpiry ) ),
+ 'labelText' => wfMessage( 'protect-unchain-permissions' )->plain(),
+ 'numTypes' => count( $this->mApplicableTypes ),
+ 'existingMatch' => count( array_unique( $this->mExistingExpiry ) ) === 1,
);
- $encOptions = Xml::encodeJsVar( $options );
- $script .= "ProtectionForm.init($encOptions)";
- return Html::inlineScript( "if ( window.mediaWiki ) { $script }" );
+ $wgOut->addJsConfigVars( 'wgCascadeableLevels', $cascadeableLevels );
+ $script = Xml::encodeJsCall( 'ProtectionForm.init', array( $options ) );
+ return Html::inlineScript( ResourceLoader::makeLoaderConditionalScript( $script ) );
}
/**
diff --git a/includes/ProxyTools.php b/includes/ProxyTools.php
index 13c19965..99cd65c5 100644
--- a/includes/ProxyTools.php
+++ b/includes/ProxyTools.php
@@ -12,10 +12,11 @@
* @return string
*/
function wfGetForwardedFor() {
- if( function_exists( 'apache_request_headers' ) ) {
+ $apacheHeaders = function_exists( 'apache_request_headers' ) ? apache_request_headers() : null;
+ if( is_array( $apacheHeaders ) ) {
// More reliable than $_SERVER due to case and -/_ folding
- $set = array ();
- foreach ( apache_request_headers() as $tempName => $tempValue ) {
+ $set = array();
+ foreach ( $apacheHeaders as $tempName => $tempValue ) {
$set[ strtoupper( $tempName ) ] = $tempValue;
}
$index = strtoupper ( 'X-Forwarded-For' );
@@ -30,7 +31,7 @@ function wfGetForwardedFor() {
#Try a couple of headers
if( isset( $set[$index] ) ) {
return $set[$index];
- } else if( isset( $set[$index2] ) ) {
+ } elseif( isset( $set[$index2] ) ) {
return $set[$index2];
} else {
return null;
@@ -40,12 +41,15 @@ function wfGetForwardedFor() {
/**
* Returns the browser/OS data from the request header
* Note: headers are spoofable
+ *
+ * @deprecated in 1.18; use $wgRequest->getHeader( 'User-Agent' ) instead.
* @return string
*/
function wfGetAgent() {
+ wfDeprecated( __FUNCTION__ );
if( function_exists( 'apache_request_headers' ) ) {
// More reliable than $_SERVER due to case and -/_ folding
- $set = array ();
+ $set = array();
foreach ( apache_request_headers() as $tempName => $tempValue ) {
$set[ strtoupper( $tempName ) ] = $tempValue;
}
@@ -76,8 +80,6 @@ function wfGetIP() {
return $ip;
}
- $ipchain = array();
-
/* collect the originating ips */
# Client connecting to this webserver
if ( isset( $_SERVER['REMOTE_ADDR'] ) ) {
@@ -85,30 +87,29 @@ function wfGetIP() {
} elseif( $wgCommandLineMode ) {
$ip = '127.0.0.1';
}
- if( $ip ) {
- $ipchain[] = $ip;
- }
- # Append XFF on to $ipchain
+ # Append XFF
$forwardedFor = wfGetForwardedFor();
- if ( isset( $forwardedFor ) ) {
- $xff = array_map( 'trim', explode( ',', $forwardedFor ) );
- $xff = array_reverse( $xff );
- $ipchain = array_merge( $ipchain, $xff );
- }
+ if ( $forwardedFor !== null ) {
+ $ipchain = array_map( 'trim', explode( ',', $forwardedFor ) );
+ $ipchain = array_reverse( $ipchain );
+ if ( $ip ) {
+ array_unshift( $ipchain, $ip );
+ }
- # Step through XFF list and find the last address in the list which is a trusted server
- # Set $ip to the IP address given by that trusted server, unless the address is not sensible (e.g. private)
- foreach ( $ipchain as $i => $curIP ) {
- $curIP = IP::canonicalize( $curIP );
- if ( wfIsTrustedProxy( $curIP ) ) {
- if ( isset( $ipchain[$i + 1] ) ) {
- if( $wgUsePrivateIPs || IP::isPublic( $ipchain[$i + 1 ] ) ) {
- $ip = $ipchain[$i + 1];
+ # Step through XFF list and find the last address in the list which is a trusted server
+ # Set $ip to the IP address given by that trusted server, unless the address is not sensible (e.g. private)
+ foreach ( $ipchain as $i => $curIP ) {
+ $curIP = IP::canonicalize( $curIP );
+ if ( wfIsTrustedProxy( $curIP ) ) {
+ if ( isset( $ipchain[$i + 1] ) ) {
+ if( $wgUsePrivateIPs || IP::isPublic( $ipchain[$i + 1 ] ) ) {
+ $ip = $ipchain[$i + 1];
+ }
}
+ } else {
+ break;
}
- } else {
- break;
}
}
@@ -133,13 +134,8 @@ function wfGetIP() {
function wfIsTrustedProxy( $ip ) {
global $wgSquidServers, $wgSquidServersNoPurge;
- if ( in_array( $ip, $wgSquidServers ) ||
- in_array( $ip, $wgSquidServersNoPurge )
- ) {
- $trusted = true;
- } else {
- $trusted = false;
- }
+ $trusted = in_array( $ip, $wgSquidServers ) ||
+ in_array( $ip, $wgSquidServersNoPurge );
wfRunHooks( 'IsTrustedProxy', array( &$ip, &$trusted ) );
return $trusted;
}
@@ -168,7 +164,7 @@ function wfProxyCheck() {
if ( !$skip ) {
$title = SpecialPage::getTitleFor( 'Blockme' );
$iphash = md5( $ip . $wgProxyKey );
- $url = $title->getFullURL( 'ip='.$iphash );
+ $url = wfExpandUrl( $title->getFullURL( 'ip='.$iphash ), PROTO_HTTP );
foreach ( $wgProxyPorts as $port ) {
$params = implode( ' ', array(
@@ -183,46 +179,3 @@ function wfProxyCheck() {
$wgMemc->set( $mcKey, 1, $wgProxyMemcExpiry );
}
}
-
-/**
- * Convert a network specification in CIDR notation to an integer network and a number of bits
- *
- * @deprecated Call IP::parseCIDR() directly, will be removed in 1.19
- * @return array(string, int)
- */
-function wfParseCIDR( $range ) {
- wfDeprecated( __FUNCTION__ );
- return IP::parseCIDR( $range );
-}
-
-/**
- * Check if an IP address is in the local proxy list
- * @return bool
- */
-function wfIsLocallyBlockedProxy( $ip ) {
- global $wgProxyList;
-
- if ( !$wgProxyList ) {
- return false;
- }
- wfProfileIn( __METHOD__ );
-
- if ( !is_array( $wgProxyList ) ) {
- # Load from the specified file
- $wgProxyList = array_map( 'trim', file( $wgProxyList ) );
- }
-
- if ( !is_array( $wgProxyList ) ) {
- $ret = false;
- } elseif ( array_search( $ip, $wgProxyList ) !== false ) {
- $ret = true;
- } elseif ( array_key_exists( $ip, $wgProxyList ) ) {
- # Old-style flipped proxy list
- $ret = true;
- } else {
- $ret = false;
- }
- wfProfileOut( __METHOD__ );
- return $ret;
-}
-
diff --git a/includes/QueryPage.php b/includes/QueryPage.php
index d9fb3bb2..b3bb974b 100644
--- a/includes/QueryPage.php
+++ b/includes/QueryPage.php
@@ -15,20 +15,22 @@
global $wgQueryPages; // not redundant
$wgQueryPages = array(
// QueryPage subclass Special page name Limit (false for none, none for the default)
-//----------------------------------------------------------------------------
+// ----------------------------------------------------------------------------
array( 'AncientPagesPage', 'Ancientpages' ),
array( 'BrokenRedirectsPage', 'BrokenRedirects' ),
array( 'DeadendPagesPage', 'Deadendpages' ),
array( 'DisambiguationsPage', 'Disambiguations' ),
array( 'DoubleRedirectsPage', 'DoubleRedirects' ),
+ array( 'FileDuplicateSearchPage', 'FileDuplicateSearch' ),
array( 'LinkSearchPage', 'LinkSearch' ),
array( 'ListredirectsPage', 'Listredirects' ),
array( 'LonelyPagesPage', 'Lonelypages' ),
array( 'LongPagesPage', 'Longpages' ),
+ array( 'MIMEsearchPage', 'MIMEsearch' ),
array( 'MostcategoriesPage', 'Mostcategories' ),
array( 'MostimagesPage', 'Mostimages' ),
array( 'MostlinkedCategoriesPage', 'Mostlinkedcategories' ),
- array( 'SpecialMostlinkedtemplates', 'Mostlinkedtemplates' ),
+ array( 'MostlinkedtemplatesPage', 'Mostlinkedtemplates' ),
array( 'MostlinkedPage', 'Mostlinked' ),
array( 'MostrevisionsPage', 'Mostrevisions' ),
array( 'FewestrevisionsPage', 'Fewestrevisions' ),
@@ -51,7 +53,7 @@ wfRunHooks( 'wgQueryPages', array( &$wgQueryPages ) );
global $wgDisableCounters;
if ( !$wgDisableCounters )
- $wgQueryPages[] = array( 'PopularPagesPage', 'Popularpages' );
+ $wgQueryPages[] = array( 'PopularPagesPage', 'Popularpages' );
/**
@@ -60,7 +62,7 @@ if ( !$wgDisableCounters )
* subclasses derive from it.
* @ingroup SpecialPage
*/
-class QueryPage {
+abstract class QueryPage extends SpecialPage {
/**
* Whether or not we want plain listoutput rather than an ordered list
*
@@ -77,51 +79,91 @@ class QueryPage {
var $limit = 0;
/**
- * A mutator for $this->listoutput;
- *
- * @param $bool Boolean
+ * The number of rows returned by the query. Reading this variable
+ * only makes sense in functions that are run after the query has been
+ * done, such as preprocessResults() and formatRow().
*/
- function setListoutput( $bool ) {
- $this->listoutput = $bool;
- }
+ protected $numRows;
+
+ protected $cachedTimestamp = null;
/**
- * Subclasses return their name here. Make sure the name is also
- * specified in SpecialPage.php and in Language.php as a language message
- * param.
- *
- * @return String
+ * Wheter to show prev/next links
*/
- function getName() {
- return '';
- }
+ protected $shownavigation = true;
/**
- * Return title object representing this page
+ * A mutator for $this->listoutput;
*
- * @return Title
+ * @param $bool Boolean
*/
- function getTitle() {
- return SpecialPage::getTitleFor( $this->getName() );
+ function setListoutput( $bool ) {
+ $this->listoutput = $bool;
}
/**
- * Subclasses return an SQL query here.
+ * Subclasses return an SQL query here, formatted as an array with the
+ * following keys:
+ * tables => Table(s) for passing to Database::select()
+ * fields => Field(s) for passing to Database::select(), may be *
+ * conds => WHERE conditions
+ * options => options
+ * join_conds => JOIN conditions
*
- * Note that the query itself should return the following four columns:
- * 'type' (your special page's name), 'namespace', 'title', and 'value'
- * *in that order*. 'value' is used for sorting.
+ * Note that the query itself should return the following three columns:
+ * 'namespace', 'title', and 'value'. 'value' is used for sorting.
*
* These may be stored in the querycache table for expensive queries,
* and that cached data will be returned sometimes, so the presence of
* extra fields can't be relied upon. The cached 'value' column will be
- * an integer; non-numeric values are useful only for sorting the initial
- * query.
+ * an integer; non-numeric values are useful only for sorting the
+ * initial query (except if they're timestamps, see usesTimestamps()).
*
- * Don't include an ORDER or LIMIT clause, this will be added.
+ * Don't include an ORDER or LIMIT clause, they will be added.
+ *
+ * If this function is not overridden or returns something other than
+ * an array, getSQL() will be used instead. This is for backwards
+ * compatibility only and is strongly deprecated.
+ * @return array
+ * @since 1.18
+ */
+ function getQueryInfo() {
+ return null;
+ }
+
+ /**
+ * For back-compat, subclasses may return a raw SQL query here, as a string.
+ * This is stronly deprecated; getQueryInfo() should be overridden instead.
+ * @return string
*/
function getSQL() {
- return "SELECT 'sample' as type, 0 as namespace, 'Sample result' as title, 42 as value";
+ /* Implement getQueryInfo() instead */
+ throw new MWException( "Bug in a QueryPage: doesn't implement getQueryInfo() nor getQuery() properly" );
+ }
+
+ /**
+ * Subclasses return an array of fields to order by here. Don't append
+ * DESC to the field names, that'll be done automatically if
+ * sortDescending() returns true.
+ * @return array
+ * @since 1.18
+ */
+ function getOrderFields() {
+ return array( 'value' );
+ }
+
+ /**
+ * Does this query return timestamps rather than integers in its
+ * 'value' field? If true, this class will convert 'value' to a
+ * UNIX timestamp for caching.
+ * NOTE: formatRow() may get timestamps in TS_MW (mysql), TS_DB (pgsql)
+ * or TS_UNIX (querycache) format, so be sure to always run them
+ * through wfTimestamp()
+ * @return bool
+ * @since 1.18
+ */
+ function usesTimestamps() {
+ return false;
}
/**
@@ -133,11 +175,6 @@ class QueryPage {
return true;
}
- function getOrder() {
- return ' ORDER BY value ' .
- ($this->sortDescending() ? 'DESC' : '');
- }
-
/**
* Is this query expensive (for some definition of expensive)? Then we
* don't let it run in miser mode. $wgDisableQueryPages causes all query
@@ -151,7 +188,18 @@ class QueryPage {
}
/**
- * Whether or not the output of the page in question is retrived from
+ * Is the output of this query cacheable? Non-cacheable expensive pages
+ * will be disabled in miser mode and will not have their results written
+ * to the querycache table.
+ * @return Boolean
+ * @since 1.18
+ */
+ public function isCacheable() {
+ return true;
+ }
+
+ /**
+ * Whether or not the output of the page in question is retrieved from
* the database cache.
*
* @return Boolean
@@ -175,14 +223,15 @@ class QueryPage {
* Formats the results of the query for display. The skin is the current
* skin; you can use it for making links. The result is a single row of
* result data. You should be able to grab SQL results off of it.
- * If the function return "false", the line output will be skipped.
+ * If the function returns false, the line output will be skipped.
+ * @param $skin Skin
+ * @param $result object Result row
+ * @return mixed String or false to skip
*
* @param $skin Skin object
* @param $result Object: database row
*/
- function formatResult( $skin, $result ) {
- return '';
- }
+ abstract function formatResult( $skin, $result );
/**
* The content returned by this function will be output before any result
@@ -207,8 +256,9 @@ class QueryPage {
/**
* Some special pages (for example SpecialListusers) might not return the
* current object formatted, but return the previous one instead.
- * Setting this to return true, will call one more time wfFormatResult to
- * be sure that the very last result is formatted and shown.
+ * Setting this to return true will ensure formatResult() is called
+ * one more time to make sure that the very last result is formatted
+ * as well.
*/
function tryLastResult() {
return false;
@@ -221,6 +271,10 @@ class QueryPage {
* @param $ignoreErrors Boolean: whether to ignore database errors
*/
function recache( $limit, $ignoreErrors = true ) {
+ if ( !$this->isCacheable() ) {
+ return 0;
+ }
+
$fname = get_class( $this ) . '::recache';
$dbw = wfGetDB( DB_MASTER );
$dbr = wfGetDB( DB_SLAVE, array( $this->getName(), __METHOD__, 'vslow' ) );
@@ -236,10 +290,7 @@ class QueryPage {
# Clear out any old cached data
$dbw->delete( 'querycache', array( 'qc_type' => $this->getName() ), $fname );
# Do query
- $sql = $this->getSQL() . $this->getOrder();
- if ( $limit !== false )
- $sql = $dbr->limitResult( $sql, $limit, 0 );
- $res = $dbr->query( $sql, $fname );
+ $res = $this->reallyDoQuery( $limit, false );
$num = false;
if ( $res ) {
$num = $dbr->numRows( $res );
@@ -247,22 +298,27 @@ class QueryPage {
$vals = array();
while ( $res && $row = $dbr->fetchObject( $res ) ) {
if ( isset( $row->value ) ) {
- $value = intval( $row->value ); // @bug 14414
+ if ( $this->usesTimestamps() ) {
+ $value = wfTimestamp( TS_UNIX,
+ $row->value );
+ } else {
+ $value = intval( $row->value ); // @bug 14414
+ }
} else {
$value = 0;
}
-
- $vals[] = array('qc_type' => $row->type,
+
+ $vals[] = array( 'qc_type' => $this->getName(),
'qc_namespace' => $row->namespace,
'qc_title' => $row->title,
- 'qc_value' => $value);
+ 'qc_value' => $value );
}
# Save results into the querycache table on the master
if ( count( $vals ) ) {
if ( !$dbw->insert( 'querycache', $vals, __METHOD__ ) ) {
// Set result to false to indicate error
- $res = false;
+ $num = false;
}
}
if ( $ignoreErrors ) {
@@ -279,47 +335,147 @@ class QueryPage {
}
/**
+ * Run the query and return the result
+ * @param $limit mixed Numerical limit or false for no limit
+ * @param $offset mixed Numerical offset or false for no offset
+ * @return ResultWrapper
+ * @since 1.18
+ */
+ function reallyDoQuery( $limit, $offset = false ) {
+ $fname = get_class( $this ) . "::reallyDoQuery";
+ $dbr = wfGetDB( DB_SLAVE );
+ $query = $this->getQueryInfo();
+ $order = $this->getOrderFields();
+ if ( $this->sortDescending() ) {
+ foreach ( $order as &$field ) {
+ $field .= ' DESC';
+ }
+ }
+ if ( is_array( $query ) ) {
+ $tables = isset( $query['tables'] ) ? (array)$query['tables'] : array();
+ $fields = isset( $query['fields'] ) ? (array)$query['fields'] : array();
+ $conds = isset( $query['conds'] ) ? (array)$query['conds'] : array();
+ $options = isset( $query['options'] ) ? (array)$query['options'] : array();
+ $join_conds = isset( $query['join_conds'] ) ? (array)$query['join_conds'] : array();
+ if ( count( $order ) ) {
+ $options['ORDER BY'] = implode( ', ', $order );
+ }
+ if ( $limit !== false ) {
+ $options['LIMIT'] = intval( $limit );
+ }
+ if ( $offset !== false ) {
+ $options['OFFSET'] = intval( $offset );
+ }
+
+ $res = $dbr->select( $tables, $fields, $conds, $fname,
+ $options, $join_conds
+ );
+ } else {
+ // Old-fashioned raw SQL style, deprecated
+ $sql = $this->getSQL();
+ $sql .= ' ORDER BY ' . implode( ', ', $order );
+ $sql = $dbr->limitResult( $sql, $limit, $offset );
+ $res = $dbr->query( $sql, $fname );
+ }
+ return $dbr->resultObject( $res );
+ }
+
+ /**
+ * Somewhat deprecated, you probably want to be using execute()
+ */
+ function doQuery( $offset = false, $limit = false ) {
+ if ( $this->isCached() && $this->isCacheable() ) {
+ return $this->fetchFromCache( $limit, $offset );
+ } else {
+ return $this->reallyDoQuery( $limit, $offset );
+ }
+ }
+
+ /**
+ * Fetch the query results from the query cache
+ * @param $limit mixed Numerical limit or false for no limit
+ * @param $offset mixed Numerical offset or false for no offset
+ * @return ResultWrapper
+ * @since 1.18
+ */
+ function fetchFromCache( $limit, $offset = false ) {
+ $dbr = wfGetDB( DB_SLAVE );
+ $options = array ();
+ if ( $limit !== false ) {
+ $options['LIMIT'] = intval( $limit );
+ }
+ if ( $offset !== false ) {
+ $options['OFFSET'] = intval( $offset );
+ }
+ if ( $this->sortDescending() ) {
+ $options['ORDER BY'] = 'qc_value DESC';
+ } else {
+ $options['ORDER BY'] = 'qc_value ASC';
+ }
+ $res = $dbr->select( 'querycache', array( 'qc_type',
+ 'qc_namespace AS namespace',
+ 'qc_title AS title',
+ 'qc_value AS value' ),
+ array( 'qc_type' => $this->getName() ),
+ __METHOD__, $options
+ );
+ return $dbr->resultObject( $res );
+ }
+
+ public function getCachedTimestamp() {
+ if ( is_null( $this->cachedTimestamp ) ) {
+ $dbr = wfGetDB( DB_SLAVE );
+ $fname = get_class( $this ) . '::getCachedTimestamp';
+ $this->cachedTimestamp = $dbr->selectField( 'querycache_info', 'qci_timestamp',
+ array( 'qci_type' => $this->getName() ), $fname );
+ }
+ return $this->cachedTimestamp;
+ }
+
+ /**
* This is the actual workhorse. It does everything needed to make a
* real, honest-to-gosh query page.
- *
- * @param $offset database query offset
- * @param $limit database query limit
- * @param $shownavigation show navigation like "next 200"?
*/
- function doQuery( $offset, $limit, $shownavigation=true ) {
- global $wgUser, $wgOut, $wgLang, $wgContLang;
+ function execute( $par ) {
+ global $wgUser, $wgOut, $wgLang, $wgRequest;
- $this->offset = $offset;
- $this->limit = $limit;
+ if ( !$this->userCanExecute( $wgUser ) ) {
+ $this->displayRestrictionError();
+ return;
+ }
- $sname = $this->getName();
- $fname = get_class($this) . '::doQuery';
+ if ( $this->limit == 0 && $this->offset == 0 ) {
+ list( $this->limit, $this->offset ) = $wgRequest->getLimitOffset();
+ }
$dbr = wfGetDB( DB_SLAVE );
+ $this->setHeaders();
$wgOut->setSyndicated( $this->isSyndicated() );
+ if ( $this->isCached() && !$this->isCacheable() ) {
+ $wgOut->setSyndicated( false );
+ $wgOut->addWikiMsg( 'querypage-disabled' );
+ return 0;
+ }
+
+ // TODO: Use doQuery()
+ // $res = null;
if ( !$this->isCached() ) {
- $sql = $this->getSQL();
+ $res = $this->reallyDoQuery( $this->limit, $this->offset );
} else {
# Get the cached result
- $querycache = $dbr->tableName( 'querycache' );
- $type = $dbr->strencode( $sname );
- $sql =
- "SELECT qc_type as type, qc_namespace as namespace,qc_title as title, qc_value as value
- FROM $querycache WHERE qc_type='$type'";
-
- if( !$this->listoutput ) {
+ $res = $this->fetchFromCache( $this->limit, $this->offset );
+ if ( !$this->listoutput ) {
# Fetch the timestamp of this update
- $tRes = $dbr->select( 'querycache_info', array( 'qci_timestamp' ), array( 'qci_type' => $type ), $fname );
- $tRow = $dbr->fetchObject( $tRes );
-
- if( $tRow ) {
- $updated = $wgLang->timeanddate( $tRow->qci_timestamp, true, true );
- $updateddate = $wgLang->date( $tRow->qci_timestamp, true, true );
- $updatedtime = $wgLang->time( $tRow->qci_timestamp, true, true );
- $wgOut->addMeta( 'Data-Cache-Time', $tRow->qci_timestamp );
- $wgOut->addInlineScript( "var dataCacheTime = '{$tRow->qci_timestamp}';" );
+ $ts = $this->getCachedTimestamp();
+
+ if ( $ts ) {
+ $updated = $wgLang->timeanddate( $ts, true, true );
+ $updateddate = $wgLang->date( $ts, true, true );
+ $updatedtime = $wgLang->time( $ts, true, true );
+ $wgOut->addMeta( 'Data-Cache-Time', $ts );
+ $wgOut->addInlineScript( "var dataCacheTime = '$ts';" );
$wgOut->addWikiMsg( 'perfcachedts', $updated, $updateddate, $updatedtime );
} else {
$wgOut->addWikiMsg( 'perfcached' );
@@ -328,7 +484,7 @@ class QueryPage {
# If updates on this page have been disabled, let the user know
# that the data set won't be refreshed for now
global $wgDisableQueryPageUpdate;
- if( is_array( $wgDisableQueryPageUpdate ) && in_array( $this->getName(), $wgDisableQueryPageUpdate ) ) {
+ if ( is_array( $wgDisableQueryPageUpdate ) && in_array( $this->getName(), $wgDisableQueryPageUpdate ) ) {
$wgOut->addWikiMsg( 'querypage-no-updates' );
}
@@ -336,23 +492,21 @@ class QueryPage {
}
- $sql .= $this->getOrder();
- $sql = $dbr->limitResult($sql, $limit, $offset);
- $res = $dbr->query( $sql );
- $num = $dbr->numRows($res);
+ $this->numRows = $dbr->numRows( $res );
$this->preprocessResults( $dbr, $res );
- $wgOut->addHTML( Xml::openElement( 'div', array('class' => 'mw-spcontent') ) );
+ $wgOut->addHTML( Xml::openElement( 'div', array( 'class' => 'mw-spcontent' ) ) );
# Top header and navigation
- if( $shownavigation ) {
+ if ( $this->shownavigation ) {
$wgOut->addHTML( $this->getPageHeader() );
- if( $num > 0 ) {
- $wgOut->addHTML( '<p>' . wfShowingResults( $offset, $num ) . '</p>' );
+ if ( $this->numRows > 0 ) {
+ $wgOut->addHTML( '<p>' . wfShowingResults( $this->offset, $this->numRows ) . '</p>' );
# Disable the "next" link when we reach the end
- $paging = wfViewPrevNext( $offset, $limit, $wgContLang->specialPage( $sname ),
- wfArrayToCGI( $this->linkParameters() ), ( $num < $limit ) );
+ $paging = wfViewPrevNext( $this->offset, $this->limit,
+ $this->getTitle( $par ),
+ wfArrayToCGI( $this->linkParameters() ), ( $this->numRows < $this->limit ) );
$wgOut->addHTML( '<p>' . $paging . '</p>' );
} else {
# No results to show, so don't bother with "showing X of Y" etc.
@@ -367,20 +521,20 @@ class QueryPage {
# with more than a straight list, so we hand them the info, plus
# an OutputPage, and let them get on with it
$this->outputResults( $wgOut,
- $wgUser->getSkin(),
+ $this->getSkin(),
$dbr, # Should use a ResultWrapper for this
$res,
- $dbr->numRows( $res ),
- $offset );
+ $this->numRows,
+ $this->offset );
# Repeat the paging links at the bottom
- if( $shownavigation ) {
+ if ( $this->shownavigation ) {
$wgOut->addHTML( '<p>' . $paging . '</p>' );
}
$wgOut->addHTML( Xml::closeElement( 'div' ) );
- return $num;
+ return $this->numRows;
}
/**
@@ -397,16 +551,17 @@ class QueryPage {
protected function outputResults( $out, $skin, $dbr, $res, $num, $offset ) {
global $wgContLang;
- if( $num > 0 ) {
+ if ( $num > 0 ) {
$html = array();
- if( !$this->listoutput )
+ if ( !$this->listoutput ) {
$html[] = $this->openList( $offset );
+ }
# $res might contain the whole 1,000 rows, so we read up to
# $num [should update this to use a Pager]
- for( $i = 0; $i < $num && $row = $dbr->fetchObject( $res ); $i++ ) {
+ for ( $i = 0; $i < $num && $row = $dbr->fetchObject( $res ); $i++ ) {
$line = $this->formatResult( $skin, $row );
- if( $line ) {
+ if ( $line ) {
$attr = ( isset( $row->usepatrol ) && $row->usepatrol && $row->patrolled == 0 )
? ' class="not-patrolled"'
: '';
@@ -417,10 +572,10 @@ class QueryPage {
}
# Flush the final result
- if( $this->tryLastResult() ) {
+ if ( $this->tryLastResult() ) {
$row = null;
$line = $this->formatResult( $skin, $row );
- if( $line ) {
+ if ( $line ) {
$attr = ( isset( $row->usepatrol ) && $row->usepatrol && $row->patrolled == 0 )
? ' class="not-patrolled"'
: '';
@@ -430,8 +585,9 @@ class QueryPage {
}
}
- if( !$this->listoutput )
+ if ( !$this->listoutput ) {
$html[] = $this->closeList();
+ }
$html = $this->listoutput
? $wgContLang->listToText( $html )
@@ -465,26 +621,23 @@ class QueryPage {
$wgOut->addWikiMsg( 'feed-unavailable' );
return;
}
-
+
global $wgFeedLimit;
- if( $limit > $wgFeedLimit ) {
+ if ( $limit > $wgFeedLimit ) {
$limit = $wgFeedLimit;
}
- if( isset($wgFeedClasses[$class]) ) {
+ if ( isset( $wgFeedClasses[$class] ) ) {
$feed = new $wgFeedClasses[$class](
$this->feedTitle(),
$this->feedDesc(),
$this->feedUrl() );
$feed->outHeader();
- $dbr = wfGetDB( DB_SLAVE );
- $sql = $this->getSQL() . $this->getOrder();
- $sql = $dbr->limitResult( $sql, $limit, 0 );
- $res = $dbr->query( $sql, 'QueryPage::doFeed' );
+ $res = $this->reallyDoQuery( $limit, 0 );
foreach ( $res as $obj ) {
$item = $this->feedResult( $obj );
- if( $item ) {
+ if ( $item ) {
$feed->outItem( $item );
}
}
@@ -501,14 +654,14 @@ class QueryPage {
* feedItemDesc()
*/
function feedResult( $row ) {
- if( !isset( $row->title ) ) {
+ if ( !isset( $row->title ) ) {
return null;
}
$title = Title::MakeTitle( intval( $row->namespace ), $row->title );
- if( $title ) {
+ if ( $title ) {
$date = isset( $row->timestamp ) ? $row->timestamp : '';
$comments = '';
- if( $title ) {
+ if ( $title ) {
$talkpage = $title->getTalkPage();
$comments = $talkpage->getFullURL();
}
@@ -519,7 +672,7 @@ class QueryPage {
$title->getFullURL(),
$date,
$this->feedItemAuthor( $row ),
- $comments);
+ $comments );
} else {
return null;
}
@@ -535,8 +688,7 @@ class QueryPage {
function feedTitle() {
global $wgLanguageCode, $wgSitename;
- $page = SpecialPage::getPage( $this->getName() );
- $desc = $page->getDescription();
+ $desc = $this->getDescription();
return "$wgSitename - $desc [$wgLanguageCode]";
}
@@ -545,8 +697,7 @@ class QueryPage {
}
function feedUrl() {
- $title = SpecialPage::getTitleFor( $this->getName() );
- return $title->getFullURL();
+ return $this->getTitle()->getFullURL();
}
}
@@ -579,7 +730,7 @@ abstract class WantedQueryPage extends QueryPage {
// If there are no rows we get an error seeking.
$db->dataSeek( $res, 0 );
}
-
+
/**
* Should formatResult() always check page existence, even if
* the results are fresh? This is a (hopefully temporary)
@@ -600,8 +751,8 @@ abstract class WantedQueryPage extends QueryPage {
*/
public function formatResult( $skin, $result ) {
$title = Title::makeTitleSafe( $result->namespace, $result->title );
- if( $title instanceof Title ) {
- if( $this->isCached() || $this->forceExistenceCheck() ) {
+ if ( $title instanceof Title ) {
+ if ( $this->isCached() || $this->forceExistenceCheck() ) {
$pageLink = $title->isKnown()
? '<del>' . $skin->link( $title ) . '</del>'
: $skin->link(
@@ -626,7 +777,7 @@ abstract class WantedQueryPage extends QueryPage {
return wfMsgHtml( 'wantedpages-badtitle', $tsafe );
}
}
-
+
/**
* Make a "what links here" link for a given title
*
diff --git a/includes/RawPage.php b/includes/RawPage.php
index ff935c2a..6a552a50 100644
--- a/includes/RawPage.php
+++ b/includes/RawPage.php
@@ -23,12 +23,12 @@ class RawPage {
var $mSmaxage, $mMaxage;
var $mContentType, $mExpandTemplates;
- function __construct( Article $article, $request = false ) {
- global $wgRequest, $wgInputEncoding, $wgSquidMaxage, $wgJsMimeType, $wgGroupPermissions;
+ function __construct( Page $article, $request = false ) {
+ global $wgRequest, $wgSquidMaxage, $wgJsMimeType, $wgGroupPermissions;
$allowedCTypes = array( 'text/x-wiki', $wgJsMimeType, 'text/css', 'application/x-zope-edit' );
$this->mArticle = $article;
- $this->mTitle = $article->mTitle;
+ $this->mTitle = $article->getTitle();
if( $request === false ) {
$this->mRequest = $wgRequest;
@@ -60,7 +60,7 @@ class RawPage {
if( !$oldid ) {
# get the current revision so we can get the penultimate one
$this->mArticle->getTouched();
- $oldid = $this->mArticle->mLatest;
+ $oldid = $this->mArticle->getLatest();
}
$prev = $this->mTitle->getPreviousRevisionId( $oldid );
$oldid = $prev ? $prev : -1 ;
@@ -89,7 +89,7 @@ class RawPage {
} else {
$this->mGen = false;
}
- $this->mCharset = $wgInputEncoding;
+ $this->mCharset = 'UTF-8';
# Force caching for CSS and JS raw content, default: 5 minutes
if( is_null( $smaxage ) && ( $ctype == 'text/css' || $ctype == $wgJsMimeType ) ) {
@@ -151,7 +151,7 @@ class RawPage {
}
function getRawText() {
- global $wgUser, $wgOut;
+ global $wgOut, $wgUser;
if( $this->mGen ) {
$sk = $wgUser->getSkin();
if( !StubObject::isRealObject( $wgOut ) ) {
@@ -160,7 +160,7 @@ class RawPage {
$sk->initPage( $wgOut );
if( $this->mGen == 'css' ) {
return $sk->generateUserStylesheet();
- } else if( $this->mGen == 'js' ) {
+ } elseif( $this->mGen == 'js' ) {
return $sk->generateUserJs();
}
} else {
@@ -175,11 +175,9 @@ class RawPage {
// If it's a MediaWiki message we can just hit the message cache
if( $this->mUseMessageCache && $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
$key = $this->mTitle->getDBkey();
- $text = wfMsgForContentNoTrans( $key );
+ $msg = wfMessage( $key )->inContentLanguage();
# If the message doesn't exist, return a blank
- if( wfEmptyMsg( $key, $text ) ) {
- $text = '';
- }
+ $text = !$msg->exists() ? '' : $msg->plain();
$found = true;
} else {
// Get it from the DB
@@ -208,23 +206,13 @@ class RawPage {
header( 'HTTP/1.0 404 Not Found' );
}
- // Special-case for empty CSS/JS
- //
- // Internet Explorer for Mac handles empty files badly;
- // particularly so when keep-alive is active. It can lead
- // to long timeouts as it seems to sit there waiting for
- // more data that never comes.
- //
- // Give it a comment...
- if( strlen( $text ) == 0 &&
- ( $this->mContentType == 'text/css' ||
- $this->mContentType == 'text/javascript' ) ) {
- return '/* Empty */';
- }
-
return $this->parseArticleText( $text );
}
+ /**
+ * @param $text
+ * @return string
+ */
function parseArticleText( $text ) {
if( $text === '' ) {
return '';
diff --git a/includes/RecentChange.php b/includes/RecentChange.php
index 803420f6..955986e9 100644
--- a/includes/RecentChange.php
+++ b/includes/RecentChange.php
@@ -44,7 +44,16 @@
*/
class RecentChange {
var $mAttribs = array(), $mExtra = array();
- var $mTitle = false, $mMovedToTitle = false;
+
+ /**
+ * @var Title
+ */
+ var $mTitle = false;
+
+ /**
+ * @var Title
+ */
+ var $mMovedToTitle = false;
var $numberofWatchingusers = 0 ; # Dummy to prevent error message in SpecialRecentchangeslinked
# Factory methods
@@ -66,7 +75,7 @@ class RecentChange {
/**
* Obtain the recent change with a given rc_id value
*
- * @param $rcid rc_id value to retrieve
+ * @param $rcid Int rc_id value to retrieve
* @return RecentChange
*/
public static function newFromId( $rcid ) {
@@ -192,7 +201,7 @@ class RecentChange {
$editor = ($wgUser->getName() == $this->mAttribs['rc_user_text']) ?
$wgUser : User::newFromName( $this->mAttribs['rc_user_text'], false );
}
- # FIXME: this would be better as an extension hook
+ # @todo FIXME: This would be better as an extension hook
$enotif = new EmailNotification();
$title = Title::makeTitle( $this->mAttribs['rc_namespace'], $this->mAttribs['rc_title'] );
$enotif->notifyOnPageChange( $editor, $title,
@@ -259,24 +268,28 @@ class RecentChange {
* @return Array See doMarkPatrolled(), or null if $change is not an existing rc_id
*/
public static function markPatrolled( $change, $auto = false ) {
+ global $wgUser;
+
$change = $change instanceof RecentChange
? $change
: RecentChange::newFromId($change);
+
if( !$change instanceof RecentChange ) {
return null;
}
- return $change->doMarkPatrolled( $auto );
+ return $change->doMarkPatrolled( $wgUser, $auto );
}
/**
* Mark this RecentChange as patrolled
*
* NOTE: Can also return 'rcpatroldisabled', 'hookaborted' and 'markedaspatrollederror-noautopatrol' as errors
+ * @param $user User object doing the action
* @param $auto Boolean: for automatic patrol
* @return array of permissions errors, see Title::getUserPermissionsErrors()
*/
- public function doMarkPatrolled( $auto = false ) {
- global $wgUser, $wgUseRCPatrol, $wgUseNPPatrol;
+ public function doMarkPatrolled( User $user, $auto = false ) {
+ global $wgUseRCPatrol, $wgUseNPPatrol;
$errors = array();
// If recentchanges patrol is disabled, only new pages
// can be patrolled
@@ -285,13 +298,13 @@ class RecentChange {
}
// Automatic patrol needs "autopatrol", ordinary patrol needs "patrol"
$right = $auto ? 'autopatrol' : 'patrol';
- $errors = array_merge( $errors, $this->getTitle()->getUserPermissionsErrors( $right, $wgUser ) );
- if( !wfRunHooks('MarkPatrolled', array($this->getAttribute('rc_id'), &$wgUser, false)) ) {
+ $errors = array_merge( $errors, $this->getTitle()->getUserPermissionsErrors( $right, $user ) );
+ if( !wfRunHooks('MarkPatrolled', array($this->getAttribute('rc_id'), &$user, false)) ) {
$errors[] = array('hookaborted');
}
// Users without the 'autopatrol' right can't patrol their
// own revisions
- if( $wgUser->getName() == $this->getAttribute('rc_user_text') && !$wgUser->isAllowed('autopatrol') ) {
+ if( $user->getName() == $this->getAttribute('rc_user_text') && !$user->isAllowed('autopatrol') ) {
$errors[] = array('markedaspatrollederror-noautopatrol');
}
if( $errors ) {
@@ -305,7 +318,7 @@ class RecentChange {
$this->reallyMarkPatrolled();
// Log this patrol event
PatrolLog::record( $this, $auto );
- wfRunHooks( 'MarkPatrolledComplete', array($this->getAttribute('rc_id'), &$wgUser, false) );
+ wfRunHooks( 'MarkPatrolledComplete', array($this->getAttribute('rc_id'), &$user, false) );
return array();
}
@@ -328,10 +341,26 @@ class RecentChange {
return $dbw->affectedRows();
}
- # Makes an entry in the database corresponding to an edit
+ /**
+ * Makes an entry in the database corresponding to an edit
+ *
+ * @param $timestamp
+ * @param $title Title
+ * @param $minor
+ * @param $user User
+ * @param $comment
+ * @param $oldId
+ * @param $lastTimestamp
+ * @param $bot
+ * @param $ip string
+ * @param $oldSize int
+ * @param $newSize int
+ * @param $newId int
+ * @param $patrol int
+ * @return RecentChange
+ */
public static function notifyEdit( $timestamp, &$title, $minor, &$user, $comment, $oldId,
- $lastTimestamp, $bot, $ip='', $oldSize=0, $newSize=0, $newId=0, $patrol=0 )
- {
+ $lastTimestamp, $bot, $ip='', $oldSize=0, $newSize=0, $newId=0, $patrol=0 ) {
if( !$ip ) {
$ip = wfGetIP();
if( !$ip ) $ip = '';
@@ -380,10 +409,21 @@ class RecentChange {
* Makes an entry in the database corresponding to page creation
* Note: the title object must be loaded with the new id using resetArticleID()
* @todo Document parameters and return
+ *
+ * @param $timestamp
+ * @param $title Title
+ * @param $minor
+ * @param $user User
+ * @param $comment
+ * @param $bot
+ * @param $ip string
+ * @param $size int
+ * @param $newId int
+ * @param $patrol int
+ * @return RecentChange
*/
public static function notifyNew( $timestamp, &$title, $minor, &$user, $comment, $bot,
- $ip='', $size=0, $newId=0, $patrol=0 )
- {
+ $ip='', $size=0, $newId=0, $patrol=0 ) {
if( !$ip ) {
$ip = wfGetIP();
if( !$ip ) $ip = '';
@@ -429,8 +469,19 @@ class RecentChange {
}
# Makes an entry in the database corresponding to a rename
- public static function notifyMove( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='', $overRedir = false )
- {
+
+ /**
+ * @param $timestamp
+ * @param $oldTitle Title
+ * @param $newTitle Title
+ * @param $user User
+ * @param $comment
+ * @param $ip string
+ * @param $overRedir bool
+ * @return void
+ */
+ public static function notifyMove( $timestamp, &$oldTitle, &$newTitle, &$user, $comment, $ip='',
+ $overRedir = false ) {
global $wgRequest;
if( !$ip ) {
$ip = wfGetIP();
@@ -496,13 +547,28 @@ class RecentChange {
return true;
}
+ /**
+ * @param $timestamp
+ * @param $title Title
+ * @param $user User
+ * @param $actionComment
+ * @param $ip string
+ * @param $type
+ * @param $action
+ * @param $target Title
+ * @param $logComment
+ * @param $params
+ * @param $newId int
+ * @return RecentChange
+ */
public static function newLogEntry( $timestamp, &$title, &$user, $actionComment, $ip='',
- $type, $action, $target, $logComment, $params, $newId=0 )
- {
+ $type, $action, $target, $logComment, $params, $newId=0 ) {
global $wgRequest;
if( !$ip ) {
$ip = wfGetIP();
- if( !$ip ) $ip = '';
+ if( !$ip ) {
+ $ip = '';
+ }
}
$rc = new RecentChange;
@@ -614,41 +680,36 @@ class RecentChange {
}
public function getIRCLine() {
- global $wgUseRCPatrol, $wgUseNPPatrol, $wgRC2UDPInterwikiPrefix, $wgLocalInterwiki;
-
- // FIXME: Would be good to replace these 2 extract() calls with something more explicit
- // e.g. list ($rc_type, $rc_id) = array_values ($this->mAttribs); [or something like that]
- extract($this->mAttribs);
- extract($this->mExtra);
+ global $wgUseRCPatrol, $wgUseNPPatrol, $wgRC2UDPInterwikiPrefix, $wgLocalInterwiki,
+ $wgCanonicalServer, $wgScript;
- if( $rc_type == RC_LOG ) {
- $titleObj = Title::newFromText( "Log/$rc_log_type", NS_SPECIAL );
+ if( $this->mAttribs['rc_type'] == RC_LOG ) {
+ $titleObj = Title::newFromText( 'Log/' . $this->mAttribs['rc_log_type'], NS_SPECIAL );
} else {
$titleObj =& $this->getTitle();
}
$title = $titleObj->getPrefixedText();
$title = self::cleanupForIRC( $title );
- if( $rc_type == RC_LOG ) {
+ if( $this->mAttribs['rc_type'] == RC_LOG ) {
$url = '';
} else {
- if( $rc_type == RC_NEW ) {
- $url = "oldid=$rc_this_oldid";
+ $url = $wgCanonicalServer . $wgScript;
+ if( $this->mAttribs['rc_type'] == RC_NEW ) {
+ $query = '?oldid=' . $this->mAttribs['rc_this_oldid'];
} else {
- $url = "diff=$rc_this_oldid&oldid=$rc_last_oldid";
+ $query = '?diff=' . $this->mAttribs['rc_this_oldid'] . '&oldid=' . $this->mAttribs['rc_last_oldid'];
}
- if( $wgUseRCPatrol || ($rc_type == RC_NEW && $wgUseNPPatrol) ) {
- $url .= "&rcid=$rc_id";
+ if ( $wgUseRCPatrol || ( $this->mAttribs['rc_type'] == RC_NEW && $wgUseNPPatrol ) ) {
+ $query .= '&rcid=' . $this->mAttribs['rc_id'];
}
- // XXX: *HACK* this should use getFullURL(), hacked for SSL madness --brion 2005-12-26
- // XXX: *HACK^2* the preg_replace() undoes much of what getInternalURL() does, but we
- // XXX: need to call it so that URL paths on the Wikimedia secure server can be fixed
- // XXX: by a custom GetInternalURL hook --vyznev 2008-12-10
- $url = preg_replace( '/title=[^&]*&/', '', $titleObj->getInternalURL( $url ) );
+ // HACK: We need this hook for WMF's secure server setup
+ wfRunHooks( 'IRCLineURL', array( &$url, &$query ) );
+ $url .= $query;
}
- if( isset( $oldSize ) && isset( $newSize ) ) {
- $szdiff = $newSize - $oldSize;
+ if( isset( $this->mExtra['oldSize'] ) && isset( $this->mExtra['newSize'] ) ) {
+ $szdiff = $this->mExtra['newSize'] - $this->mExtra['oldSize'];
if($szdiff < -500) {
$szdiff = "\002$szdiff\002";
} elseif($szdiff >= 0) {
@@ -659,19 +720,19 @@ class RecentChange {
$szdiff = '';
}
- $user = self::cleanupForIRC( $rc_user_text );
+ $user = self::cleanupForIRC( $this->mAttribs['rc_user_text'] );
- if( $rc_type == RC_LOG ) {
+ if ( $this->mAttribs['rc_type'] == RC_LOG ) {
$targetText = $this->getTitle()->getPrefixedText();
- $comment = self::cleanupForIRC( str_replace("[[$targetText]]","[[\00302$targetText\00310]]",$actionComment) );
- $flag = $rc_log_action;
+ $comment = self::cleanupForIRC( str_replace( "[[$targetText]]", "[[\00302$targetText\00310]]", $this->mExtra['actionComment'] ) );
+ $flag = $this->mAttribs['rc_log_action'];
} else {
- $comment = self::cleanupForIRC( $rc_comment );
+ $comment = self::cleanupForIRC( $this->mAttribs['rc_comment'] );
$flag = '';
- if( !$rc_patrolled && ($wgUseRCPatrol || $rc_new && $wgUseNPPatrol) ) {
+ if ( !$this->mAttribs['rc_patrolled'] && ( $wgUseRCPatrol || $this->mAttribs['rc_new'] && $wgUseNPPatrol ) ) {
$flag .= '!';
}
- $flag .= ($rc_new ? "N" : "") . ($rc_minor ? "M" : "") . ($rc_bot ? "B" : "");
+ $flag .= ( $this->mAttribs['rc_new'] ? "N" : "" ) . ( $this->mAttribs['rc_minor'] ? "M" : "" ) . ( $this->mAttribs['rc_bot'] ? "B" : "" );
}
if ( $wgRC2UDPInterwikiPrefix === true && $wgLocalInterwiki !== false ) {
diff --git a/includes/RequestContext.php b/includes/RequestContext.php
new file mode 100644
index 00000000..37617457
--- /dev/null
+++ b/includes/RequestContext.php
@@ -0,0 +1,399 @@
+<?php
+/**
+ * Request-dependant objects containers.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @since 1.18
+ *
+ * @author Alexandre Emsenhuber
+ * @author Daniel Friesen
+ * @file
+ */
+
+/**
+ * Interface for objects which can provide a context on request.
+ */
+interface IContextSource {
+
+ /**
+ * Get the WebRequest object
+ *
+ * @return WebRequest
+ */
+ public function getRequest();
+
+ /**
+ * Get the Title object
+ *
+ * @return Title
+ */
+ public function getTitle();
+
+ /**
+ * Get the OutputPage object
+ *
+ * @return OutputPage object
+ */
+ public function getOutput();
+
+ /**
+ * Get the User object
+ *
+ * @return User
+ */
+ public function getUser();
+
+ /**
+ * Get the Language object
+ *
+ * @return Language
+ */
+ public function getLang();
+
+ /**
+ * Get the Skin object
+ *
+ * @return Skin
+ */
+ public function getSkin();
+}
+
+/**
+ * Group all the pieces relevant to the context of a request into one instance
+ */
+class RequestContext implements IContextSource {
+
+ /**
+ * @var WebRequest
+ */
+ private $request;
+
+ /**
+ * @var Title
+ */
+ private $title;
+
+ /**
+ * @var OutputPage
+ */
+ private $output;
+
+ /**
+ * @var User
+ */
+ private $user;
+
+ /**
+ * @var Language
+ */
+ private $lang;
+
+ /**
+ * @var Skin
+ */
+ private $skin;
+
+ /**
+ * Set the WebRequest object
+ *
+ * @param $r WebRequest object
+ */
+ public function setRequest( WebRequest $r ) {
+ $this->request = $r;
+ }
+
+ /**
+ * Get the WebRequest object
+ *
+ * @return WebRequest
+ */
+ public function getRequest() {
+ if ( $this->request === null ) {
+ global $wgRequest; # fallback to $wg till we can improve this
+ $this->request = $wgRequest;
+ }
+ return $this->request;
+ }
+
+ /**
+ * Set the Title object
+ *
+ * @param $t Title object
+ */
+ public function setTitle( Title $t ) {
+ $this->title = $t;
+ }
+
+ /**
+ * Get the Title object
+ *
+ * @return Title
+ */
+ public function getTitle() {
+ if ( $this->title === null ) {
+ global $wgTitle; # fallback to $wg till we can improve this
+ $this->title = $wgTitle;
+ }
+ return $this->title;
+ }
+
+ /**
+ * @param $o OutputPage
+ */
+ public function setOutput( OutputPage $o ) {
+ $this->output = $o;
+ }
+
+ /**
+ * Get the OutputPage object
+ *
+ * @return OutputPage object
+ */
+ public function getOutput() {
+ if ( $this->output === null ) {
+ $this->output = new OutputPage( $this );
+ }
+ return $this->output;
+ }
+
+ /**
+ * Set the User object
+ *
+ * @param $u User
+ */
+ public function setUser( User $u ) {
+ $this->user = $u;
+ }
+
+ /**
+ * Get the User object
+ *
+ * @return User
+ */
+ public function getUser() {
+ if ( $this->user === null ) {
+ $this->user = User::newFromSession( $this->getRequest() );
+ }
+ return $this->user;
+ }
+
+ /**
+ * Set the Language object
+ *
+ * @param $l Language
+ */
+ public function setLang( Language $l ) {
+ $this->lang = $l;
+ }
+
+ /**
+ * Get the Language object
+ *
+ * @return Language
+ */
+ public function getLang() {
+ if ( $this->lang === null ) {
+ global $wgLanguageCode, $wgContLang;
+ $code = $this->getRequest()->getVal(
+ 'uselang',
+ $this->getUser()->getOption( 'language' )
+ );
+ // BCP 47 - letter case MUST NOT carry meaning
+ $code = strtolower( $code );
+
+ # Validate $code
+ if( empty( $code ) || !Language::isValidCode( $code ) || ( $code === 'qqq' ) ) {
+ wfDebug( "Invalid user language code\n" );
+ $code = $wgLanguageCode;
+ }
+
+ wfRunHooks( 'UserGetLanguageObject', array( $this->getUser(), &$code ) );
+
+ if( $code === $wgLanguageCode ) {
+ $this->lang = $wgContLang;
+ } else {
+ $obj = Language::factory( $code );
+ $this->lang = $obj;
+ }
+ }
+ return $this->lang;
+ }
+
+ /**
+ * Set the Skin object
+ *
+ * @param $s Skin
+ */
+ public function setSkin( Skin $s ) {
+ $this->skin = clone $s;
+ $this->skin->setContext( $this );
+ }
+
+ /**
+ * Get the Skin object
+ *
+ * @return Skin
+ */
+ public function getSkin() {
+ if ( $this->skin === null ) {
+ wfProfileIn( __METHOD__ . '-createskin' );
+
+ global $wgHiddenPrefs;
+ if( !in_array( 'skin', $wgHiddenPrefs ) ) {
+ # get the user skin
+ $userSkin = $this->getUser()->getOption( 'skin' );
+ $userSkin = $this->getRequest()->getVal( 'useskin', $userSkin );
+ } else {
+ # if we're not allowing users to override, then use the default
+ global $wgDefaultSkin;
+ $userSkin = $wgDefaultSkin;
+ }
+
+ $this->skin = Skin::newFromKey( $userSkin );
+ $this->skin->setContext( $this );
+ wfProfileOut( __METHOD__ . '-createskin' );
+ }
+ return $this->skin;
+ }
+
+ /** Helpful methods **/
+
+ /**
+ * Get a Message object with context set
+ * Parameters are the same as wfMessage()
+ *
+ * @return Message object
+ */
+ public function msg() {
+ $args = func_get_args();
+ return call_user_func_array( 'wfMessage', $args )->inLanguage( $this->getLang() )->title( $this->getTitle() );
+ }
+
+ /** Static methods **/
+
+ /**
+ * Get the RequestContext object associated with the main request
+ *
+ * @return RequestContext object
+ */
+ public static function getMain() {
+ static $instance = null;
+ if ( $instance === null ) {
+ $instance = new self;
+ }
+ return $instance;
+ }
+}
+
+/**
+ * The simplest way of implementing IContextSource is to hold a RequestContext as a
+ * member variable and provide accessors to it.
+ */
+abstract class ContextSource implements IContextSource {
+
+ /**
+ * @var IContextSource
+ */
+ private $context;
+
+ /**
+ * Get the IContextSource object
+ *
+ * @return 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" );
+ $this->context = RequestContext::getMain();
+ }
+ return $this->context;
+ }
+
+ /**
+ * Set the IContextSource object
+ *
+ * @param $context IContextSource
+ */
+ public function setContext( IContextSource $context ) {
+ $this->context = $context;
+ }
+
+ /**
+ * Get the WebRequest object
+ *
+ * @return WebRequest
+ */
+ public function getRequest() {
+ return $this->getContext()->getRequest();
+ }
+
+ /**
+ * Get the Title object
+ *
+ * @return Title
+ */
+ public function getTitle() {
+ return $this->getContext()->getTitle();
+ }
+
+ /**
+ * Get the OutputPage object
+ *
+ * @return OutputPage object
+ */
+ public function getOutput() {
+ return $this->getContext()->getOutput();
+ }
+
+ /**
+ * Get the User object
+ *
+ * @return User
+ */
+ public function getUser() {
+ return $this->getContext()->getUser();
+ }
+
+ /**
+ * Get the Language object
+ *
+ * @return Language
+ */
+ public function getLang() {
+ return $this->getContext()->getLang();
+ }
+
+ /**
+ * Get the Skin object
+ *
+ * @return Skin
+ */
+ public function getSkin() {
+ return $this->getContext()->getSkin();
+ }
+
+ /**
+ * Get a Message object with context set
+ * Parameters are the same as wfMessage()
+ *
+ * @return Message object
+ */
+ public function msg( /* $args */ ) {
+ return call_user_func_array( array( $this->getContext(), 'msg' ), func_get_args() );
+ }
+}
diff --git a/includes/Revision.php b/includes/Revision.php
index 9cc49350..b5d776bd 100644
--- a/includes/Revision.php
+++ b/includes/Revision.php
@@ -25,7 +25,7 @@ class Revision {
public static function newFromId( $id ) {
return Revision::newFromConds(
array( 'page_id=rev_page',
- 'rev_id' => intval( $id ) ) );
+ 'rev_id' => intval( $id ) ) );
}
/**
@@ -34,13 +34,13 @@ class Revision {
* to that title, will return null.
*
* @param $title Title
- * @param $id Integer
+ * @param $id Integer (optional)
* @return Revision or null
*/
public static function newFromTitle( $title, $id = 0 ) {
- $conds = array(
- 'page_namespace' => $title->getNamespace(),
- 'page_title' => $title->getDBkey()
+ $conds = array(
+ 'page_namespace' => $title->getNamespace(),
+ 'page_title' => $title->getDBkey()
);
if ( $id ) {
// Use the specified ID
@@ -50,8 +50,7 @@ class Revision {
$dbw = wfGetDB( DB_MASTER );
$latest = $dbw->selectField( 'page', 'page_latest', $conds, __METHOD__ );
if ( $latest === false ) {
- // Page does not exist
- return null;
+ return null; // page does not exist
}
$conds['rev_id'] = $latest;
} else {
@@ -63,9 +62,42 @@ class Revision {
}
/**
+ * Load either the current, or a specified, revision
+ * that's attached to a given page ID.
+ * Returns null if no such revision can be found.
+ *
+ * @param $revId Integer
+ * @param $pageId Integer (optional)
+ * @return Revision or null
+ */
+ public static function newFromPageId( $pageId, $revId = 0 ) {
+ $conds = array( 'page_id' => $pageId );
+ if ( $revId ) {
+ $conds['rev_id'] = $revId;
+ } elseif ( wfGetLB()->getServerCount() > 1 ) {
+ // Get the latest revision ID from the master
+ $dbw = wfGetDB( DB_MASTER );
+ $latest = $dbw->selectField( 'page', 'page_latest', $conds, __METHOD__ );
+ if ( $latest === false ) {
+ return null; // page does not exist
+ }
+ $conds['rev_id'] = $latest;
+ } else {
+ $conds[] = 'rev_id = page_latest';
+ }
+ $conds[] = 'page_id=rev_page';
+ return Revision::newFromConds( $conds );
+ }
+
+ /**
* Make a fake revision object from an archive table row. This is queried
* for permissions or even inserted (as in Special:Undelete)
- * @todo Fixme: should be a subclass for RevisionDelete. [TS]
+ * @todo FIXME: Should be a subclass for RevisionDelete. [TS]
+ *
+ * @param $row
+ * @param $overrides array
+ *
+ * @return Revision
*/
public static function newFromArchiveRow( $row, $overrides = array() ) {
$attribs = $overrides + array(
@@ -90,6 +122,14 @@ class Revision {
}
/**
+ * @param $row
+ * @return Revision
+ */
+ public static function newFromRow( $row ) {
+ return new self( $row );
+ }
+
+ /**
* Load a page revision from a given revision ID number.
* Returns null if no such revision can be found.
*
@@ -100,7 +140,7 @@ class Revision {
public static function loadFromId( $db, $id ) {
return Revision::loadFromConds( $db,
array( 'page_id=rev_page',
- 'rev_id' => intval( $id ) ) );
+ 'rev_id' => intval( $id ) ) );
}
/**
@@ -142,9 +182,9 @@ class Revision {
return Revision::loadFromConds(
$db,
array( "rev_id=$matchId",
- 'page_id=rev_page',
- 'page_namespace' => $title->getNamespace(),
- 'page_title' => $title->getDBkey() ) );
+ 'page_id=rev_page',
+ 'page_namespace' => $title->getNamespace(),
+ 'page_title' => $title->getDBkey() ) );
}
/**
@@ -152,7 +192,7 @@ class Revision {
* WARNING: Timestamps may in some circumstances not be unique,
* so this isn't the best key to use.
*
- * @param $db Database
+ * @param $db DatabaseBase
* @param $title Title
* @param $timestamp String
* @return Revision or null
@@ -161,9 +201,9 @@ class Revision {
return Revision::loadFromConds(
$db,
array( 'rev_timestamp' => $db->timestamp( $timestamp ),
- 'page_id=rev_page',
- 'page_namespace' => $title->getNamespace(),
- 'page_title' => $title->getDBkey() ) );
+ 'page_id=rev_page',
+ 'page_namespace' => $title->getNamespace(),
+ 'page_title' => $title->getDBkey() ) );
}
/**
@@ -186,7 +226,7 @@ class Revision {
* Given a set of conditions, fetch a revision from
* the given database connection.
*
- * @param $db Database
+ * @param $db DatabaseBase
* @param $conditions Array
* @return Revision or null
*/
@@ -216,9 +256,9 @@ class Revision {
return Revision::fetchFromConds(
wfGetDB( DB_SLAVE ),
array( 'rev_id=page_latest',
- 'page_namespace' => $title->getNamespace(),
- 'page_title' => $title->getDBkey(),
- 'page_id=rev_page' ) );
+ 'page_namespace' => $title->getNamespace(),
+ 'page_title' => $title->getDBkey(),
+ 'page_id=rev_page' ) );
}
/**
@@ -226,7 +266,7 @@ class Revision {
* which will return matching database rows with the
* fields necessary to build Revision objects.
*
- * @param $db Database
+ * @param $db DatabaseBase
* @param $conditions Array
* @return ResultWrapper
*/
@@ -235,21 +275,19 @@ class Revision {
$fields[] = 'page_namespace';
$fields[] = 'page_title';
$fields[] = 'page_latest';
- $res = $db->select(
+ return $db->select(
array( 'page', 'revision' ),
$fields,
$conditions,
__METHOD__,
array( 'LIMIT' => 1 ) );
- $ret = $db->resultObject( $res );
- return $ret;
}
/**
* Return the list of revision fields that should be selected to create
* a new revision.
*/
- static function selectFields() {
+ public static function selectFields() {
return array(
'rev_id',
'rev_page',
@@ -264,9 +302,9 @@ class Revision {
'rev_parent_id'
);
}
-
+
/**
- * Return the list of text fields that should be selected to read the
+ * Return the list of text fields that should be selected to read the
* revision text
*/
static function selectTextFields() {
@@ -412,11 +450,11 @@ class Revision {
array( 'page', 'revision' ),
array( 'page_namespace', 'page_title' ),
array( 'page_id=rev_page',
- 'rev_id' => $this->mId ),
+ 'rev_id' => $this->mId ),
'Revision::getTitle' );
if( $row ) {
$this->mTitle = Title::makeTitle( $row->page_namespace,
- $row->page_title );
+ $row->page_title );
}
return $this->mTitle;
}
@@ -441,7 +479,7 @@ class Revision {
/**
* Fetch revision's user id if it's available to the specified audience.
- * If the specified audience does not have access to it, zero will be
+ * If the specified audience does not have access to it, zero will be
* returned.
*
* @param $audience Integer: one of:
@@ -473,7 +511,7 @@ class Revision {
/**
* Fetch revision's username if it's available to the specified audience.
- * If the specified audience does not have access to the username, an
+ * If the specified audience does not have access to the username, an
* empty string will be returned.
*
* @param $audience Integer: one of:
@@ -504,7 +542,7 @@ class Revision {
/**
* Fetch revision comment if it's available to the specified audience.
- * If the specified audience does not have access to the comment, an
+ * If the specified audience does not have access to the comment, an
* empty string will be returned.
*
* @param $audience Integer: one of:
@@ -539,7 +577,7 @@ class Revision {
public function isMinor() {
return (bool)$this->mMinorEdit;
}
-
+
/**
* @return Integer rcid of the unpatrolled row, zero if there isn't one
*/
@@ -579,7 +617,7 @@ class Revision {
/**
* Fetch revision text if it's available to the specified audience.
- * If the specified audience does not have the ability to view this
+ * If the specified audience does not have the ability to view this
* revision, an empty string will be returned.
*
* @param $audience Integer: one of:
@@ -587,7 +625,6 @@ class Revision {
* Revision::FOR_THIS_USER to be displayed to $wgUser
* Revision::RAW get the text regardless of permissions
*
- *
* @return String
*/
public function getText( $audience = self::FOR_PUBLIC ) {
@@ -603,10 +640,11 @@ class Revision {
/**
* Alias for getText(Revision::FOR_THIS_USER)
*
- * @deprecated
+ * @deprecated since 1.17
* @return String
*/
public function revText() {
+ wfDeprecated( __METHOD__ );
return $this->getText( self::FOR_THIS_USER );
}
@@ -724,8 +762,8 @@ class Revision {
# Use external methods for external objects, text in table is URL-only then
if ( in_array( 'external', $flags ) ) {
$url = $text;
- @list(/* $proto */, $path ) = explode( '://', $url, 2 );
- if( $path == '' ) {
+ $parts = explode( '://', $url, 2 );
+ if( count( $parts ) == 1 || $parts[1] == '' ) {
wfProfileOut( __METHOD__ );
return false;
}
@@ -753,15 +791,15 @@ class Revision {
}
global $wgLegacyEncoding;
- if( $text !== false && $wgLegacyEncoding
- && !in_array( 'utf-8', $flags ) && !in_array( 'utf8', $flags ) )
+ if( $text !== false && $wgLegacyEncoding
+ && !in_array( 'utf-8', $flags ) && !in_array( 'utf8', $flags ) )
{
# Old revisions kept around in a legacy encoding?
# Upconvert on demand.
# ("utf8" checked for compatibility with some broken
# conversion scripts 2008-12-30)
- global $wgInputEncoding, $wgContLang;
- $text = $wgContLang->iconv( $wgLegacyEncoding, $wgInputEncoding, $text );
+ global $wgContLang;
+ $text = $wgContLang->iconv( $wgLegacyEncoding, 'UTF-8', $text );
}
}
wfProfileOut( __METHOD__ );
@@ -941,7 +979,7 @@ class Revision {
* @param $pageId Integer: ID number of the page to read from
* @param $summary String: revision's summary
* @param $minor Boolean: whether the revision should be considered as minor
- * @return Mixed: Revision, or null on error
+ * @return Revision|null on error
*/
public static function newNullRevision( $dbw, $pageId, $summary, $minor ) {
wfProfileIn( __METHOD__ );
diff --git a/includes/RevisionList.php b/includes/RevisionList.php
new file mode 100644
index 00000000..ae067ead
--- /dev/null
+++ b/includes/RevisionList.php
@@ -0,0 +1,370 @@
+<?php
+/**
+ * List for revision table items for a single page
+ */
+abstract class Rev_List {
+ /**
+ * @var Title
+ */
+ var $title;
+ /**
+ * @var IContextSource
+ */
+ var $context;
+
+ var $ids, $res, $current;
+
+ /**
+ * Construct a revision list for a given title
+ * @param $context IContextSource
+ * @param $title Title
+ */
+ function __construct( IContextSource $context, Title $title ) {
+ $this->context = $context;
+ $this->title = $title;
+ }
+
+ /**
+ * Select items only where the ID is any of the specified values
+ * @param $ids Array
+ */
+ function filterByIds( array $ids ) {
+ $this->ids = $ids;
+ }
+
+ /**
+ * Get the internal type name of this list. Equal to the table name.
+ * Override this function.
+ */
+ public function getType() {
+ return null;
+ }
+
+ /**
+ * Initialise the current iteration pointer
+ */
+ protected function initCurrent() {
+ $row = $this->res->current();
+ if ( $row ) {
+ $this->current = $this->newItem( $row );
+ } else {
+ $this->current = false;
+ }
+ }
+
+ /**
+ * Start iteration. This must be called before current() or next().
+ * @return First list item
+ */
+ public function reset() {
+ if ( !$this->res ) {
+ $this->res = $this->doQuery( wfGetDB( DB_SLAVE ) );
+ } else {
+ $this->res->rewind();
+ }
+ $this->initCurrent();
+ return $this->current;
+ }
+
+ /**
+ * Get the current list item, or false if we are at the end
+ */
+ public function current() {
+ return $this->current;
+ }
+
+ /**
+ * Move the iteration pointer to the next list item, and return it.
+ */
+ public function next() {
+ $this->res->next();
+ $this->initCurrent();
+ return $this->current;
+ }
+
+ /**
+ * Get the number of items in the list.
+ */
+ public function length() {
+ if( !$this->res ) {
+ return 0;
+ } else {
+ return $this->res->numRows();
+ }
+ }
+
+ /**
+ * Do the DB query to iterate through the objects.
+ * @param $db DatabaseBase object to use for the query
+ */
+ abstract public function doQuery( $db );
+
+ /**
+ * Create an item object from a DB result row
+ * @param $row stdclass
+ */
+ abstract public function newItem( $row );
+
+ /**
+ * Get the language of the user doing the action
+ *
+ * @return Language object
+ */
+ public function getLang() {
+ return $this->context->getLang();
+ }
+
+ /**
+ * Get the user doing the action
+ *
+ * @return User object
+ */
+ public function getUser() {
+ return $this->context->getUser();
+ }
+}
+
+/**
+ * Abstract base class for revision items
+ */
+abstract class Rev_Item {
+ /** The parent Rev_List */
+ var $list;
+
+ /** The DB result row */
+ var $row;
+
+ /**
+ * @param $list Rev_List
+ * @param $row DB result row
+ */
+ public function __construct( $list, $row ) {
+ $this->list = $list;
+ $this->row = $row;
+ }
+
+ /**
+ * Get the DB field name associated with the ID list.
+ * Override this function.
+ */
+ public function getIdField() {
+ return null;
+ }
+
+ /**
+ * Get the DB field name storing timestamps.
+ * Override this function.
+ */
+ public function getTimestampField() {
+ return false;
+ }
+
+ /**
+ * Get the DB field name storing user ids.
+ * Override this function.
+ */
+ public function getAuthorIdField() {
+ return false;
+ }
+
+ /**
+ * Get the DB field name storing user names.
+ * Override this function.
+ */
+ public function getAuthorNameField() {
+ return false;
+ }
+
+ /**
+ * Get the ID, as it would appear in the ids URL parameter
+ */
+ public function getId() {
+ $field = $this->getIdField();
+ return $this->row->$field;
+ }
+
+ /**
+ * Get the date, formatted with $wgLang
+ */
+ public function formatDate() {
+ global $wgLang;
+ return $wgLang->date( $this->getTimestamp() );
+ }
+
+ /**
+ * Get the time, formatted with $wgLang
+ */
+ public function formatTime() {
+ global $wgLang;
+ return $wgLang->time( $this->getTimestamp() );
+ }
+
+ /**
+ * Get the timestamp in MW 14-char form
+ */
+ public function getTimestamp() {
+ $field = $this->getTimestampField();
+ return wfTimestamp( TS_MW, $this->row->$field );
+ }
+
+ /**
+ * Get the author user ID
+ */
+ public function getAuthorId() {
+ $field = $this->getAuthorIdField();
+ return intval( $this->row->$field );
+ }
+
+ /**
+ * Get the author user name
+ */
+ public function getAuthorName() {
+ $field = $this->getAuthorNameField();
+ return strval( $this->row->$field );
+ }
+
+ /**
+ * Returns true if the current user can view the item
+ */
+ abstract public function canView();
+
+ /**
+ * Returns true if the current user can view the item text/file
+ */
+ abstract public function canViewContent();
+
+ /**
+ * Get the HTML of the list item. Should be include <li></li> tags.
+ * This is used to show the list in HTML form, by the special page.
+ */
+ abstract public function getHTML();
+}
+
+class RevisionList extends Rev_List {
+ public function getType() {
+ return 'revision';
+ }
+
+ /**
+ * @param $db DatabaseBase
+ * @return mixed
+ */
+ public function doQuery( $db ) {
+ $conds = array(
+ 'rev_page' => $this->title->getArticleID(),
+ 'rev_page = page_id'
+ );
+ if ( $this->ids !== null ) {
+ $conds['rev_id'] = array_map( 'intval', $this->ids );
+ }
+ return $db->select(
+ array( 'revision', 'page' ),
+ '*',
+ $conds,
+ __METHOD__,
+ array( 'ORDER BY' => 'rev_id DESC' )
+ );
+ }
+
+ public function newItem( $row ) {
+ return new RevisionItem( $this, $row );
+ }
+}
+
+/**
+ * Item class for a live revision table row
+ */
+class RevisionItem extends Rev_Item {
+ var $revision, $context;
+
+ public function __construct( $list, $row ) {
+ parent::__construct( $list, $row );
+ $this->revision = new Revision( $row );
+ $this->context = $list->context;
+ }
+
+ public function getIdField() {
+ return 'rev_id';
+ }
+
+ public function getTimestampField() {
+ return 'rev_timestamp';
+ }
+
+ public function getAuthorIdField() {
+ return 'rev_user';
+ }
+
+ public function getAuthorNameField() {
+ return 'rev_user_text';
+ }
+
+ public function canView() {
+ return $this->revision->userCan( Revision::DELETED_RESTRICTED );
+ }
+
+ public function canViewContent() {
+ return $this->revision->userCan( Revision::DELETED_TEXT );
+ }
+
+ public function isDeleted() {
+ return $this->revision->isDeleted( Revision::DELETED_TEXT );
+ }
+
+ /**
+ * Get the HTML link to the revision text.
+ * Overridden by RevDel_ArchiveItem.
+ */
+ protected function getRevisionLink() {
+ $date = $this->list->getLang()->timeanddate( $this->revision->getTimestamp(), true );
+ if ( $this->isDeleted() && !$this->canViewContent() ) {
+ return $date;
+ }
+ return Linker::link(
+ $this->list->title,
+ $date,
+ array(),
+ array(
+ 'oldid' => $this->revision->getId(),
+ 'unhide' => 1
+ )
+ );
+ }
+
+ /**
+ * Get the HTML link to the diff.
+ * Overridden by RevDel_ArchiveItem
+ */
+ protected function getDiffLink() {
+ if ( $this->isDeleted() && !$this->canViewContent() ) {
+ return wfMsgHtml('diff');
+ } else {
+ return
+ Linker::link(
+ $this->list->title,
+ wfMsgHtml('diff'),
+ array(),
+ array(
+ 'diff' => $this->revision->getId(),
+ 'oldid' => 'prev',
+ 'unhide' => 1
+ ),
+ array(
+ 'known',
+ 'noclasses'
+ )
+ );
+ }
+ }
+
+ public function getHTML() {
+ $difflink = $this->getDiffLink();
+ $revlink = $this->getRevisionLink();
+ $userlink = Linker::revUserLink( $this->revision );
+ $comment = Linker::revComment( $this->revision );
+ if ( $this->isDeleted() ) {
+ $revlink = "<span class=\"history-deleted\">$revlink</span>";
+ }
+ return "<li>($difflink) $revlink $userlink $comment</li>";
+ }
+}
diff --git a/includes/Sanitizer.php b/includes/Sanitizer.php
index a6c64264..d0e46f91 100644
--- a/includes/Sanitizer.php
+++ b/includes/Sanitizer.php
@@ -25,323 +25,325 @@
*/
/**
- * Regular expression to match various types of character references in
- * Sanitizer::normalizeCharReferences and Sanitizer::decodeCharReferences
- */
-define( 'MW_CHAR_REFS_REGEX',
- '/&([A-Za-z0-9\x80-\xff]+);
- |&\#([0-9]+);
- |&\#x([0-9A-Za-z]+);
- |&\#X([0-9A-Za-z]+);
- |(&)/x' );
-
-/**
- * Regular expression to match HTML/XML attribute pairs within a tag.
- * Allows some... latitude.
- * Used in Sanitizer::fixTagAttributes and Sanitizer::decodeTagAttributes
+ * XHTML sanitizer for MediaWiki
+ * @ingroup Parser
*/
-$attribFirst = '[:A-Z_a-z0-9]';
-$attrib = '[:A-Z_a-z-.0-9]';
-$space = '[\x09\x0a\x0d\x20]';
-define( 'MW_ATTRIBS_REGEX',
- "/(?:^|$space)({$attribFirst}{$attrib}*)
- ($space*=$space*
- (?:
- # The attribute value: quoted or alone
- \"([^<\"]*)\"
- | '([^<']*)'
- | ([a-zA-Z0-9!#$%&()*,\\-.\\/:;<>?@[\\]^_`{|}~]+)
- | (\#[0-9a-fA-F]+) # Technically wrong, but lots of
- # colors are specified like this.
- # We'll be normalizing it.
- )
- )?(?=$space|\$)/sx" );
+class Sanitizer {
+ /**
+ * Regular expression to match various types of character references in
+ * Sanitizer::normalizeCharReferences and Sanitizer::decodeCharReferences
+ */
+ const CHAR_REFS_REGEX =
+ '/&([A-Za-z0-9\x80-\xff]+);
+ |&\#([0-9]+);
+ |&\#[xX]([0-9A-Fa-f]+);
+ |(&)/x';
-/**
- * Regular expression to match URIs that could trigger script execution
- */
-define( 'MW_EVIL_URI_PATTERN', '!(^|\s|\*/\s*)(javascript|vbscript)([^\w]|$)!i' );
+ const EVIL_URI_PATTERN = '!(^|\s|\*/\s*)(javascript|vbscript)([^\w]|$)!i';
+ const XMLNS_ATTRIBUTE_PATTERN = "/^xmlns:[:A-Z_a-z-.0-9]+$/";
-/**
- * Regular expression to match namespace attributes
- */
-define( 'MW_XMLNS_ATTRIBUTE_PATTRN', "/^xmlns:$attrib+$/" );
+ /**
+ * List of all named character entities defined in HTML 4.01
+ * http://www.w3.org/TR/html4/sgml/entities.html
+ * As well as &apos; which is only defined starting in XHTML1.
+ * @private
+ */
+ static $htmlEntities = array(
+ 'Aacute' => 193,
+ 'aacute' => 225,
+ 'Acirc' => 194,
+ 'acirc' => 226,
+ 'acute' => 180,
+ 'AElig' => 198,
+ 'aelig' => 230,
+ 'Agrave' => 192,
+ 'agrave' => 224,
+ 'alefsym' => 8501,
+ 'Alpha' => 913,
+ 'alpha' => 945,
+ 'amp' => 38,
+ 'and' => 8743,
+ 'ang' => 8736,
+ 'apos' => 39, // New in XHTML & HTML 5; avoid in output for compatibility with IE.
+ 'Aring' => 197,
+ 'aring' => 229,
+ 'asymp' => 8776,
+ 'Atilde' => 195,
+ 'atilde' => 227,
+ 'Auml' => 196,
+ 'auml' => 228,
+ 'bdquo' => 8222,
+ 'Beta' => 914,
+ 'beta' => 946,
+ 'brvbar' => 166,
+ 'bull' => 8226,
+ 'cap' => 8745,
+ 'Ccedil' => 199,
+ 'ccedil' => 231,
+ 'cedil' => 184,
+ 'cent' => 162,
+ 'Chi' => 935,
+ 'chi' => 967,
+ 'circ' => 710,
+ 'clubs' => 9827,
+ 'cong' => 8773,
+ 'copy' => 169,
+ 'crarr' => 8629,
+ 'cup' => 8746,
+ 'curren' => 164,
+ 'dagger' => 8224,
+ 'Dagger' => 8225,
+ 'darr' => 8595,
+ 'dArr' => 8659,
+ 'deg' => 176,
+ 'Delta' => 916,
+ 'delta' => 948,
+ 'diams' => 9830,
+ 'divide' => 247,
+ 'Eacute' => 201,
+ 'eacute' => 233,
+ 'Ecirc' => 202,
+ 'ecirc' => 234,
+ 'Egrave' => 200,
+ 'egrave' => 232,
+ 'empty' => 8709,
+ 'emsp' => 8195,
+ 'ensp' => 8194,
+ 'Epsilon' => 917,
+ 'epsilon' => 949,
+ 'equiv' => 8801,
+ 'Eta' => 919,
+ 'eta' => 951,
+ 'ETH' => 208,
+ 'eth' => 240,
+ 'Euml' => 203,
+ 'euml' => 235,
+ 'euro' => 8364,
+ 'exist' => 8707,
+ 'fnof' => 402,
+ 'forall' => 8704,
+ 'frac12' => 189,
+ 'frac14' => 188,
+ 'frac34' => 190,
+ 'frasl' => 8260,
+ 'Gamma' => 915,
+ 'gamma' => 947,
+ 'ge' => 8805,
+ 'gt' => 62,
+ 'harr' => 8596,
+ 'hArr' => 8660,
+ 'hearts' => 9829,
+ 'hellip' => 8230,
+ 'Iacute' => 205,
+ 'iacute' => 237,
+ 'Icirc' => 206,
+ 'icirc' => 238,
+ 'iexcl' => 161,
+ 'Igrave' => 204,
+ 'igrave' => 236,
+ 'image' => 8465,
+ 'infin' => 8734,
+ 'int' => 8747,
+ 'Iota' => 921,
+ 'iota' => 953,
+ 'iquest' => 191,
+ 'isin' => 8712,
+ 'Iuml' => 207,
+ 'iuml' => 239,
+ 'Kappa' => 922,
+ 'kappa' => 954,
+ 'Lambda' => 923,
+ 'lambda' => 955,
+ 'lang' => 9001,
+ 'laquo' => 171,
+ 'larr' => 8592,
+ 'lArr' => 8656,
+ 'lceil' => 8968,
+ 'ldquo' => 8220,
+ 'le' => 8804,
+ 'lfloor' => 8970,
+ 'lowast' => 8727,
+ 'loz' => 9674,
+ 'lrm' => 8206,
+ 'lsaquo' => 8249,
+ 'lsquo' => 8216,
+ 'lt' => 60,
+ 'macr' => 175,
+ 'mdash' => 8212,
+ 'micro' => 181,
+ 'middot' => 183,
+ 'minus' => 8722,
+ 'Mu' => 924,
+ 'mu' => 956,
+ 'nabla' => 8711,
+ 'nbsp' => 160,
+ 'ndash' => 8211,
+ 'ne' => 8800,
+ 'ni' => 8715,
+ 'not' => 172,
+ 'notin' => 8713,
+ 'nsub' => 8836,
+ 'Ntilde' => 209,
+ 'ntilde' => 241,
+ 'Nu' => 925,
+ 'nu' => 957,
+ 'Oacute' => 211,
+ 'oacute' => 243,
+ 'Ocirc' => 212,
+ 'ocirc' => 244,
+ 'OElig' => 338,
+ 'oelig' => 339,
+ 'Ograve' => 210,
+ 'ograve' => 242,
+ 'oline' => 8254,
+ 'Omega' => 937,
+ 'omega' => 969,
+ 'Omicron' => 927,
+ 'omicron' => 959,
+ 'oplus' => 8853,
+ 'or' => 8744,
+ 'ordf' => 170,
+ 'ordm' => 186,
+ 'Oslash' => 216,
+ 'oslash' => 248,
+ 'Otilde' => 213,
+ 'otilde' => 245,
+ 'otimes' => 8855,
+ 'Ouml' => 214,
+ 'ouml' => 246,
+ 'para' => 182,
+ 'part' => 8706,
+ 'permil' => 8240,
+ 'perp' => 8869,
+ 'Phi' => 934,
+ 'phi' => 966,
+ 'Pi' => 928,
+ 'pi' => 960,
+ 'piv' => 982,
+ 'plusmn' => 177,
+ 'pound' => 163,
+ 'prime' => 8242,
+ 'Prime' => 8243,
+ 'prod' => 8719,
+ 'prop' => 8733,
+ 'Psi' => 936,
+ 'psi' => 968,
+ 'quot' => 34,
+ 'radic' => 8730,
+ 'rang' => 9002,
+ 'raquo' => 187,
+ 'rarr' => 8594,
+ 'rArr' => 8658,
+ 'rceil' => 8969,
+ 'rdquo' => 8221,
+ 'real' => 8476,
+ 'reg' => 174,
+ 'rfloor' => 8971,
+ 'Rho' => 929,
+ 'rho' => 961,
+ 'rlm' => 8207,
+ 'rsaquo' => 8250,
+ 'rsquo' => 8217,
+ 'sbquo' => 8218,
+ 'Scaron' => 352,
+ 'scaron' => 353,
+ 'sdot' => 8901,
+ 'sect' => 167,
+ 'shy' => 173,
+ 'Sigma' => 931,
+ 'sigma' => 963,
+ 'sigmaf' => 962,
+ 'sim' => 8764,
+ 'spades' => 9824,
+ 'sub' => 8834,
+ 'sube' => 8838,
+ 'sum' => 8721,
+ 'sup' => 8835,
+ 'sup1' => 185,
+ 'sup2' => 178,
+ 'sup3' => 179,
+ 'supe' => 8839,
+ 'szlig' => 223,
+ 'Tau' => 932,
+ 'tau' => 964,
+ 'there4' => 8756,
+ 'Theta' => 920,
+ 'theta' => 952,
+ 'thetasym' => 977,
+ 'thinsp' => 8201,
+ 'THORN' => 222,
+ 'thorn' => 254,
+ 'tilde' => 732,
+ 'times' => 215,
+ 'trade' => 8482,
+ 'Uacute' => 218,
+ 'uacute' => 250,
+ 'uarr' => 8593,
+ 'uArr' => 8657,
+ 'Ucirc' => 219,
+ 'ucirc' => 251,
+ 'Ugrave' => 217,
+ 'ugrave' => 249,
+ 'uml' => 168,
+ 'upsih' => 978,
+ 'Upsilon' => 933,
+ 'upsilon' => 965,
+ 'Uuml' => 220,
+ 'uuml' => 252,
+ 'weierp' => 8472,
+ 'Xi' => 926,
+ 'xi' => 958,
+ 'Yacute' => 221,
+ 'yacute' => 253,
+ 'yen' => 165,
+ 'Yuml' => 376,
+ 'yuml' => 255,
+ 'Zeta' => 918,
+ 'zeta' => 950,
+ 'zwj' => 8205,
+ 'zwnj' => 8204
+ );
-/**
- * List of all named character entities defined in HTML 4.01
- * http://www.w3.org/TR/html4/sgml/entities.html
- * @private
- */
-global $wgHtmlEntities;
-$wgHtmlEntities = array(
- 'Aacute' => 193,
- 'aacute' => 225,
- 'Acirc' => 194,
- 'acirc' => 226,
- 'acute' => 180,
- 'AElig' => 198,
- 'aelig' => 230,
- 'Agrave' => 192,
- 'agrave' => 224,
- 'alefsym' => 8501,
- 'Alpha' => 913,
- 'alpha' => 945,
- 'amp' => 38,
- 'and' => 8743,
- 'ang' => 8736,
- 'Aring' => 197,
- 'aring' => 229,
- 'asymp' => 8776,
- 'Atilde' => 195,
- 'atilde' => 227,
- 'Auml' => 196,
- 'auml' => 228,
- 'bdquo' => 8222,
- 'Beta' => 914,
- 'beta' => 946,
- 'brvbar' => 166,
- 'bull' => 8226,
- 'cap' => 8745,
- 'Ccedil' => 199,
- 'ccedil' => 231,
- 'cedil' => 184,
- 'cent' => 162,
- 'Chi' => 935,
- 'chi' => 967,
- 'circ' => 710,
- 'clubs' => 9827,
- 'cong' => 8773,
- 'copy' => 169,
- 'crarr' => 8629,
- 'cup' => 8746,
- 'curren' => 164,
- 'dagger' => 8224,
- 'Dagger' => 8225,
- 'darr' => 8595,
- 'dArr' => 8659,
- 'deg' => 176,
- 'Delta' => 916,
- 'delta' => 948,
- 'diams' => 9830,
- 'divide' => 247,
- 'Eacute' => 201,
- 'eacute' => 233,
- 'Ecirc' => 202,
- 'ecirc' => 234,
- 'Egrave' => 200,
- 'egrave' => 232,
- 'empty' => 8709,
- 'emsp' => 8195,
- 'ensp' => 8194,
- 'Epsilon' => 917,
- 'epsilon' => 949,
- 'equiv' => 8801,
- 'Eta' => 919,
- 'eta' => 951,
- 'ETH' => 208,
- 'eth' => 240,
- 'Euml' => 203,
- 'euml' => 235,
- 'euro' => 8364,
- 'exist' => 8707,
- 'fnof' => 402,
- 'forall' => 8704,
- 'frac12' => 189,
- 'frac14' => 188,
- 'frac34' => 190,
- 'frasl' => 8260,
- 'Gamma' => 915,
- 'gamma' => 947,
- 'ge' => 8805,
- 'gt' => 62,
- 'harr' => 8596,
- 'hArr' => 8660,
- 'hearts' => 9829,
- 'hellip' => 8230,
- 'Iacute' => 205,
- 'iacute' => 237,
- 'Icirc' => 206,
- 'icirc' => 238,
- 'iexcl' => 161,
- 'Igrave' => 204,
- 'igrave' => 236,
- 'image' => 8465,
- 'infin' => 8734,
- 'int' => 8747,
- 'Iota' => 921,
- 'iota' => 953,
- 'iquest' => 191,
- 'isin' => 8712,
- 'Iuml' => 207,
- 'iuml' => 239,
- 'Kappa' => 922,
- 'kappa' => 954,
- 'Lambda' => 923,
- 'lambda' => 955,
- 'lang' => 9001,
- 'laquo' => 171,
- 'larr' => 8592,
- 'lArr' => 8656,
- 'lceil' => 8968,
- 'ldquo' => 8220,
- 'le' => 8804,
- 'lfloor' => 8970,
- 'lowast' => 8727,
- 'loz' => 9674,
- 'lrm' => 8206,
- 'lsaquo' => 8249,
- 'lsquo' => 8216,
- 'lt' => 60,
- 'macr' => 175,
- 'mdash' => 8212,
- 'micro' => 181,
- 'middot' => 183,
- 'minus' => 8722,
- 'Mu' => 924,
- 'mu' => 956,
- 'nabla' => 8711,
- 'nbsp' => 160,
- 'ndash' => 8211,
- 'ne' => 8800,
- 'ni' => 8715,
- 'not' => 172,
- 'notin' => 8713,
- 'nsub' => 8836,
- 'Ntilde' => 209,
- 'ntilde' => 241,
- 'Nu' => 925,
- 'nu' => 957,
- 'Oacute' => 211,
- 'oacute' => 243,
- 'Ocirc' => 212,
- 'ocirc' => 244,
- 'OElig' => 338,
- 'oelig' => 339,
- 'Ograve' => 210,
- 'ograve' => 242,
- 'oline' => 8254,
- 'Omega' => 937,
- 'omega' => 969,
- 'Omicron' => 927,
- 'omicron' => 959,
- 'oplus' => 8853,
- 'or' => 8744,
- 'ordf' => 170,
- 'ordm' => 186,
- 'Oslash' => 216,
- 'oslash' => 248,
- 'Otilde' => 213,
- 'otilde' => 245,
- 'otimes' => 8855,
- 'Ouml' => 214,
- 'ouml' => 246,
- 'para' => 182,
- 'part' => 8706,
- 'permil' => 8240,
- 'perp' => 8869,
- 'Phi' => 934,
- 'phi' => 966,
- 'Pi' => 928,
- 'pi' => 960,
- 'piv' => 982,
- 'plusmn' => 177,
- 'pound' => 163,
- 'prime' => 8242,
- 'Prime' => 8243,
- 'prod' => 8719,
- 'prop' => 8733,
- 'Psi' => 936,
- 'psi' => 968,
- 'quot' => 34,
- 'radic' => 8730,
- 'rang' => 9002,
- 'raquo' => 187,
- 'rarr' => 8594,
- 'rArr' => 8658,
- 'rceil' => 8969,
- 'rdquo' => 8221,
- 'real' => 8476,
- 'reg' => 174,
- 'rfloor' => 8971,
- 'Rho' => 929,
- 'rho' => 961,
- 'rlm' => 8207,
- 'rsaquo' => 8250,
- 'rsquo' => 8217,
- 'sbquo' => 8218,
- 'Scaron' => 352,
- 'scaron' => 353,
- 'sdot' => 8901,
- 'sect' => 167,
- 'shy' => 173,
- 'Sigma' => 931,
- 'sigma' => 963,
- 'sigmaf' => 962,
- 'sim' => 8764,
- 'spades' => 9824,
- 'sub' => 8834,
- 'sube' => 8838,
- 'sum' => 8721,
- 'sup' => 8835,
- 'sup1' => 185,
- 'sup2' => 178,
- 'sup3' => 179,
- 'supe' => 8839,
- 'szlig' => 223,
- 'Tau' => 932,
- 'tau' => 964,
- 'there4' => 8756,
- 'Theta' => 920,
- 'theta' => 952,
- 'thetasym' => 977,
- 'thinsp' => 8201,
- 'THORN' => 222,
- 'thorn' => 254,
- 'tilde' => 732,
- 'times' => 215,
- 'trade' => 8482,
- 'Uacute' => 218,
- 'uacute' => 250,
- 'uarr' => 8593,
- 'uArr' => 8657,
- 'Ucirc' => 219,
- 'ucirc' => 251,
- 'Ugrave' => 217,
- 'ugrave' => 249,
- 'uml' => 168,
- 'upsih' => 978,
- 'Upsilon' => 933,
- 'upsilon' => 965,
- 'Uuml' => 220,
- 'uuml' => 252,
- 'weierp' => 8472,
- 'Xi' => 926,
- 'xi' => 958,
- 'Yacute' => 221,
- 'yacute' => 253,
- 'yen' => 165,
- 'Yuml' => 376,
- 'yuml' => 255,
- 'Zeta' => 918,
- 'zeta' => 950,
- 'zwj' => 8205,
- 'zwnj' => 8204 );
+ /**
+ * Character entity aliases accepted by MediaWiki
+ */
+ static $htmlEntityAliases = array(
+ 'רלמ' => 'rlm',
+ 'رلم' => 'rlm',
+ );
-/**
- * Character entity aliases accepted by MediaWiki
- */
-global $wgHtmlEntityAliases;
-$wgHtmlEntityAliases = array(
- 'רלמ' => 'rlm',
- 'رلم' => 'rlm',
-);
+ /**
+ * Lazy-initialised attributes regex, see getAttribsRegex()
+ */
+ static $attribsRegex;
+ /**
+ * Regular expression to match HTML/XML attribute pairs within a tag.
+ * Allows some... latitude.
+ * Used in Sanitizer::fixTagAttributes and Sanitizer::decodeTagAttributes
+ */
+ static function getAttribsRegex() {
+ if ( self::$attribsRegex === null ) {
+ $attribFirst = '[:A-Z_a-z0-9]';
+ $attrib = '[:A-Z_a-z-.0-9]';
+ $space = '[\x09\x0a\x0d\x20]';
+ self::$attribsRegex =
+ "/(?:^|$space)({$attribFirst}{$attrib}*)
+ ($space*=$space*
+ (?:
+ # The attribute value: quoted or alone
+ \"([^<\"]*)\"
+ | '([^<']*)'
+ | ([a-zA-Z0-9!#$%&()*,\\-.\\/:;<>?@[\\]^_`{|}~]+)
+ | (\#[0-9a-fA-F]+) # Technically wrong, but lots of
+ # colors are specified like this.
+ # We'll be normalizing it.
+ )
+ )?(?=$space|\$)/sx";
+ }
+ return self::$attribsRegex;
+ }
-/**
- * XHTML sanitizer for MediaWiki
- * @ingroup Parser
- */
-class Sanitizer {
/**
* Cleans up HTML, removes dangerous tags and attributes, and
* removes HTML comments
@@ -636,8 +638,8 @@ class Sanitizer {
$out = array();
foreach( $attribs as $attribute => $value ) {
#allow XML namespace declaration if RDFa is enabled
- if ( $wgAllowRdfaAttributes && preg_match( MW_XMLNS_ATTRIBUTE_PATTRN, $attribute ) ) {
- if ( !preg_match( MW_EVIL_URI_PATTERN, $value ) ) {
+ if ( $wgAllowRdfaAttributes && preg_match( self::XMLNS_ATTRIBUTE_PATTERN, $attribute ) ) {
+ if ( !preg_match( self::EVIL_URI_PATTERN, $value ) ) {
$out[$attribute] = $value;
}
@@ -667,7 +669,7 @@ class Sanitizer {
$attribute === 'itemscope' || $attribute === 'itemtype' ) { #HTML5 microdata
//Paranoia. Allow "simple" values but suppress javascript
- if ( preg_match( MW_EVIL_URI_PATTERN, $value ) ) {
+ if ( preg_match( self::EVIL_URI_PATTERN, $value ) ) {
continue;
}
}
@@ -687,19 +689,6 @@ class Sanitizer {
}
if ( $wgAllowMicrodataAttributes ) {
- # There are some complicated validity constraints we need to
- # enforce here. First of all, we don't want to allow non-standard
- # itemtypes.
- $allowedTypes = array(
- 'http://microformats.org/profile/hcard',
- 'http://microformats.org/profile/hcalendar#vevent',
- 'http://n.whatwg.org/work',
- );
- if ( isset( $out['itemtype'] ) && !in_array( $out['itemtype'],
- $allowedTypes ) ) {
- # Kill everything
- unset( $out['itemscope'] );
- }
# itemtype, itemid, itemref don't make sense without itemscope
if ( !array_key_exists( 'itemscope', $out ) ) {
unset( $out['itemtype'] );
@@ -803,6 +792,10 @@ class Sanitizer {
return $value;
}
+ /**
+ * @param $matches array
+ * @return String
+ */
static function cssDecodeCallback( $matches ) {
if ( $matches[1] !== '' ) {
// Line continuation
@@ -1037,7 +1030,7 @@ class Sanitizer {
$attribs = array();
$pairs = array();
if( !preg_match_all(
- MW_ATTRIBS_REGEX,
+ self::getAttribsRegex(),
$text,
$pairs,
PREG_SET_ORDER ) ) {
@@ -1060,7 +1053,7 @@ class Sanitizer {
/**
* Pick the appropriate attribute value from a match set from the
- * MW_ATTRIBS_REGEX matches.
+ * attribs regex matches.
*
* @param $set Array
* @return String
@@ -1104,6 +1097,10 @@ class Sanitizer {
Sanitizer::normalizeCharReferences( $text ) ) );
}
+ /**
+ * @param $text string
+ * @return mixed
+ */
private static function normalizeWhitespace( $text ) {
return preg_replace(
'/\r\n|[\x20\x0d\x0a\x09]/',
@@ -1140,7 +1137,7 @@ class Sanitizer {
*/
static function normalizeCharReferences( $text ) {
return preg_replace_callback(
- MW_CHAR_REFS_REGEX,
+ self::CHAR_REFS_REGEX,
array( 'Sanitizer', 'normalizeCharReferencesCallback' ),
$text );
}
@@ -1156,8 +1153,6 @@ class Sanitizer {
$ret = Sanitizer::decCharReference( $matches[2] );
} elseif( $matches[3] != '' ) {
$ret = Sanitizer::hexCharReference( $matches[3] );
- } elseif( $matches[4] != '' ) {
- $ret = Sanitizer::hexCharReference( $matches[4] );
}
if( is_null( $ret ) ) {
return htmlspecialchars( $matches[0] );
@@ -1177,19 +1172,22 @@ class Sanitizer {
* @return String
*/
static function normalizeEntity( $name ) {
- global $wgHtmlEntities, $wgHtmlEntityAliases;
- if ( isset( $wgHtmlEntityAliases[$name] ) ) {
- return "&{$wgHtmlEntityAliases[$name]};";
+ if ( isset( self::$htmlEntityAliases[$name] ) ) {
+ return '&' . self::$htmlEntityAliases[$name] . ';';
} elseif ( in_array( $name,
array( 'lt', 'gt', 'amp', 'quot' ) ) ) {
return "&$name;";
- } elseif ( isset( $wgHtmlEntities[$name] ) ) {
- return "&#{$wgHtmlEntities[$name]};";
+ } elseif ( isset( self::$htmlEntities[$name] ) ) {
+ return '&#' . self::$htmlEntities[$name] . ';';
} else {
return "&amp;$name;";
}
}
+ /**
+ * @param $codepoint
+ * @return null|string
+ */
static function decCharReference( $codepoint ) {
$point = intval( $codepoint );
if( Sanitizer::validateCodepoint( $point ) ) {
@@ -1199,6 +1197,10 @@ class Sanitizer {
}
}
+ /**
+ * @param $codepoint
+ * @return null|string
+ */
static function hexCharReference( $codepoint ) {
$point = hexdec( $codepoint );
if( Sanitizer::validateCodepoint( $point ) ) {
@@ -1231,7 +1233,7 @@ class Sanitizer {
*/
public static function decodeCharReferences( $text ) {
return preg_replace_callback(
- MW_CHAR_REFS_REGEX,
+ self::CHAR_REFS_REGEX,
array( 'Sanitizer', 'decodeCharReferencesCallback' ),
$text );
}
@@ -1249,7 +1251,7 @@ class Sanitizer {
public static function decodeCharReferencesAndNormalize( $text ) {
global $wgContLang;
$text = preg_replace_callback(
- MW_CHAR_REFS_REGEX,
+ self::CHAR_REFS_REGEX,
array( 'Sanitizer', 'decodeCharReferencesCallback' ),
$text, /* limit */ -1, $count );
@@ -1271,8 +1273,6 @@ class Sanitizer {
return Sanitizer::decodeChar( intval( $matches[2] ) );
} elseif( $matches[3] != '' ) {
return Sanitizer::decodeChar( hexdec( $matches[3] ) );
- } elseif( $matches[4] != '' ) {
- return Sanitizer::decodeChar( hexdec( $matches[4] ) );
}
# Last case should be an ampersand by itself
return $matches[0];
@@ -1298,16 +1298,15 @@ class Sanitizer {
* return the UTF-8 encoding of that character. Otherwise, returns
* pseudo-entity source (eg &foo;)
*
- * @param $name Strings
+ * @param $name String
* @return String
*/
static function decodeEntity( $name ) {
- global $wgHtmlEntities, $wgHtmlEntityAliases;
- if ( isset( $wgHtmlEntityAliases[$name] ) ) {
- $name = $wgHtmlEntityAliases[$name];
+ if ( isset( self::$htmlEntityAliases[$name] ) ) {
+ $name = self::$htmlEntityAliases[$name];
}
- if( isset( $wgHtmlEntities[$name] ) ) {
- return codepointToUtf8( $wgHtmlEntities[$name] );
+ if( isset( self::$htmlEntities[$name] ) ) {
+ return codepointToUtf8( self::$htmlEntities[$name] );
} else {
return "&$name;";
}
@@ -1532,22 +1531,26 @@ class Sanitizer {
* @return String
*/
static function hackDocType() {
- global $wgHtmlEntities;
$out = "<!DOCTYPE html [\n";
- foreach( $wgHtmlEntities as $entity => $codepoint ) {
+ foreach( self::$htmlEntities as $entity => $codepoint ) {
$out .= "<!ENTITY $entity \"&#$codepoint;\">";
}
$out .= "]>\n";
return $out;
}
+ /**
+ * @param $url string
+ * @return mixed|string
+ */
static function cleanUrl( $url ) {
# Normalize any HTML entities in input. They will be
# re-escaped by makeExternalLink().
$url = Sanitizer::decodeCharReferences( $url );
# Escape any control characters introduced by the above step
- $url = preg_replace( '/[\][<>"\\x00-\\x20\\x7F\|]/e', "urlencode('\\0')", $url );
+ $url = preg_replace_callback( '/[\][<>"\\x00-\\x20\\x7F\|]/',
+ array( __CLASS__, 'cleanUrlCallback' ), $url );
# Validate hostname portion
$matches = array();
@@ -1575,7 +1578,7 @@ class Sanitizer {
$host = preg_replace( $strip, '', $host );
- // @todo Fixme: validate hostnames here
+ // @todo FIXME: Validate hostnames here
return $protocol . $host . $rest;
} else {
@@ -1583,4 +1586,61 @@ class Sanitizer {
}
}
+ /**
+ * @param $matches array
+ * @return string
+ */
+ static function cleanUrlCallback( $matches ) {
+ return urlencode( $matches[0] );
+ }
+
+ /**
+ * Does a string look like an e-mail address?
+ *
+ * This validates an email address using an HTML5 specification found at:
+ * http://www.whatwg.org/specs/web-apps/current-work/multipage/states-of-the-type-attribute.html#valid-e-mail-address
+ * Which as of 2011-01-24 says:
+ *
+ * A valid e-mail address is a string that matches the ABNF production
+ * 1*( atext / "." ) "@" ldh-str *( "." ldh-str ) where atext is defined
+ * in RFC 5322 section 3.2.3, and ldh-str is defined in RFC 1034 section
+ * 3.5.
+ *
+ * This function is an implementation of the specification as requested in
+ * bug 22449.
+ *
+ * Client-side forms will use the same standard validation rules via JS or
+ * HTML 5 validation; additional restrictions can be enforced server-side
+ * by extensions via the 'isValidEmailAddr' hook.
+ *
+ * Note that this validation doesn't 100% match RFC 2822, but is believed
+ * to be liberal enough for wide use. Some invalid addresses will still
+ * pass validation here.
+ *
+ * @param $addr String E-mail address
+ * @return Bool
+ */
+ public static function validateEmail( $addr ) {
+ $result = null;
+ if( !wfRunHooks( 'isValidEmailAddr', array( $addr, &$result ) ) ) {
+ return $result;
+ }
+
+ // Please note strings below are enclosed in brackets [], this make the
+ // hyphen "-" a range indicator. Hence it is double backslashed below.
+ // See bug 26948
+ $rfc5322_atext = "a-z0-9!#$%&'*+\\-\/=?^_`{|}~" ;
+ $rfc1034_ldh_str = "a-z0-9\\-" ;
+
+ $HTML5_email_regexp = "/
+ ^ # start of string
+ [$rfc5322_atext\\.]+ # user part which is liberal :p
+ @ # 'apostrophe'
+ [$rfc1034_ldh_str]+ # First domain part
+ (\\.[$rfc1034_ldh_str]+)* # Following part prefixed with a dot
+ $ # End of string
+ /ix" ; // case Insensitive, eXtended
+
+ return (bool) preg_match( $HTML5_email_regexp, $addr );
+ }
}
diff --git a/includes/SeleniumWebSettings.php b/includes/SeleniumWebSettings.php
index 8afb26da..56afa929 100644
--- a/includes/SeleniumWebSettings.php
+++ b/includes/SeleniumWebSettings.php
@@ -1,5 +1,5 @@
<?php
-/*
+/**
* Dynamically change configuration variables based on the test suite name and a cookie value.
* For details on how to configure a wiki for a Selenium test, see:
* http://www.mediawiki.org/wiki/SeleniumFramework#Test_Wiki_configuration
@@ -8,53 +8,97 @@ if ( !defined( 'MEDIAWIKI' ) ) {
die( 1 );
}
+require_once( "$IP/includes/GlobalFunctions.php" );
+
$fname = 'SeleniumWebSettings.php';
wfProfileIn( $fname );
-$cookiePrefix = $wgSitename . "-";
-$cookieName = $cookiePrefix . "Selenium";
+$cookiePrefix = $wgSitename . '-';
+$cookieName = $cookiePrefix . 'Selenium';
-//if we find a request parameter containing the test name, set a cookie with the test name
+// this is a fallback SQL file
+$testSqlFile = false;
+$testImageZip = false;
+
+// if we find a request parameter containing the test name, set a cookie with the test name
if ( isset( $_GET['setupTestSuite'] ) ) {
$setupTestSuiteName = $_GET['setupTestSuite'];
-
- if ( preg_match( '/[^a-zA-Z0-9_-]/', $setupTestSuiteName ) || !isset( $wgSeleniumTestConfigs[$setupTestSuiteName] ) ) {
+
+ if (
+ preg_match( '/[^a-zA-Z0-9_-]/', $setupTestSuiteName ) ||
+ !isset( $wgSeleniumTestConfigs[$setupTestSuiteName] )
+ )
+ {
return;
}
- if ( strlen( $setupTestSuiteName) > 0 ) {
+ if ( strlen( $setupTestSuiteName ) > 0 ) {
$expire = time() + 600;
- setcookie( $cookieName,
+ setcookie(
+ $cookieName,
$setupTestSuiteName,
$expire,
$wgCookiePath,
$wgCookieDomain,
$wgCookieSecure,
- true );
+ true
+ );
+ }
+
+ $testIncludes = array(); // array containing all the includes needed for this test
+ $testGlobalConfigs = array(); // an array containg all the global configs needed for this test
+ $testResourceFiles = array(); // an array containing all the resource files needed for this test
+ $callback = $wgSeleniumTestConfigs[$setupTestSuiteName];
+ call_user_func_array( $callback, array( &$testIncludes, &$testGlobalConfigs, &$testResourceFiles));
+
+ if ( isset( $testResourceFiles['images'] ) ) {
+ $testImageZip = $testResourceFiles['images'];
+ }
+
+ if ( isset( $testResourceFiles['db'] ) ) {
+ $testSqlFile = $testResourceFiles['db'];
+ $testResourceName = getTestResourceNameFromTestSuiteName( $setupTestSuiteName );
+
+ switchToTestResources( $testResourceName, false ); // false means do not switch database yet
+ setupTestResources( $testResourceName, $testSqlFile, $testImageZip );
}
}
-//clear the cookie based on a request param
+
+// clear the cookie based on a request param
if ( isset( $_GET['clearTestSuite'] ) ) {
- $expire = time() - 600;
- setcookie( $cookieName,
- '',
- $expire,
- $wgCookiePath,
- $wgCookieDomain,
- $wgCookieSecure,
- true );
+ $testSuiteName = getTestSuiteNameFromCookie( $cookieName );
+
+ $expire = time() - 600;
+ setcookie(
+ $cookieName,
+ '',
+ $expire,
+ $wgCookiePath,
+ $wgCookieDomain,
+ $wgCookieSecure,
+ true
+ );
+
+ $testResourceName = getTestResourceNameFromTestSuiteName( $testSuiteName );
+ teardownTestResources( $testResourceName );
}
-//if a cookie is found, run the appropriate callback to get the config params.
+// if a cookie is found, run the appropriate callback to get the config params.
if ( isset( $_COOKIE[$cookieName] ) ) {
- $testSuiteName = $_COOKIE[$cookieName];
+ $testSuiteName = getTestSuiteNameFromCookie( $cookieName );
if ( !isset( $wgSeleniumTestConfigs[$testSuiteName] ) ) {
return;
}
- $testIncludes = array(); //array containing all the includes needed for this test
- $testGlobalConfigs = array(); //an array containg all the global configs needed for this test
+
+ $testIncludes = array(); // array containing all the includes needed for this test
+ $testGlobalConfigs = array(); // an array containg all the global configs needed for this test
+ $testResourceFiles = array(); // an array containing all the resource files needed for this test
$callback = $wgSeleniumTestConfigs[$testSuiteName];
- call_user_func_array( $callback, array( &$testIncludes, &$testGlobalConfigs));
-
+ call_user_func_array( $callback, array( &$testIncludes, &$testGlobalConfigs, &$testResourceFiles));
+
+ if ( isset( $testResourceFiles['db'] ) ) {
+ $testResourceName = getTestResourceNameFromTestSuiteName( $testSuiteName );
+ switchToTestResources( $testResourceName );
+ }
foreach ( $testIncludes as $includeFile ) {
$file = $IP . '/' . $includeFile;
require_once( $file );
@@ -70,3 +114,108 @@ if ( isset( $_COOKIE[$cookieName] ) ) {
}
wfProfileOut( $fname );
+
+function getTestSuiteNameFromCookie( $cookieName ) {
+ $testSuiteName = null;
+ if ( isset( $_COOKIE[$cookieName] ) ) {
+ $testSuiteName = $_COOKIE[$cookieName];
+ }
+ return $testSuiteName;
+}
+
+function getTestResourceNameFromTestSuiteName( $testSuiteName ) {
+ $testResourceName = null;
+ if ( isset( $testSuiteName ) ) {
+ $testResourceName = $testSuiteName;
+ }
+ return $testResourceName;
+}
+
+function getTestUploadPathFromResourceName( $testResourceName ) {
+ global $IP;
+ $testUploadPath = "$IP/images/$testResourceName";
+ return $testUploadPath;
+}
+
+function setupTestResources( $testResourceName, $testSqlFile, $testImageZip ) {
+ global $wgDBname;
+
+ // Basic security. Do not allow to drop productive database.
+ if ( $testResourceName == $wgDBname ) {
+ die( 'Cannot override productive database.' );
+ }
+ if ( $testResourceName == '' ) {
+ die( 'Cannot identify a test the resources should be installed for.' );
+ }
+
+ // create tables
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->query( 'DROP DATABASE IF EXISTS ' . $testResourceName );
+ $dbw->query( 'CREATE DATABASE ' . $testResourceName );
+
+ // do not set the new DB name before database is setup
+ $wgDBname = $testResourceName;
+ $dbw->selectDB( $testResourceName );
+ // populate from SQL file
+ if ( $testSqlFile ) {
+ $dbw->sourceFile( $testSqlFile );
+ }
+
+ // create test image dir
+ $testUploadPath = getTestUploadPathFromResourceName( $testResourceName );
+ if ( !file_exists( $testUploadPath ) ) {
+ mkdir( $testUploadPath );
+ }
+
+ if ( $testImageZip ) {
+ $zip = new ZipArchive();
+ $zip->open( $testImageZip );
+ $zip->extractTo( $testUploadPath );
+ $zip->close();
+ }
+}
+
+function teardownTestResources( $testResourceName ) {
+ // remove test database
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->query( 'DROP DATABASE IF EXISTS ' . $testResourceName );
+
+ $testUploadPath = getTestUploadPathFromResourceName( $testResourceName );
+ // remove test image dir
+ if ( file_exists( $testUploadPath ) ) {
+ wfRecursiveRemoveDir( $testUploadPath );
+ }
+}
+
+function switchToTestResources( $testResourceName, $switchDB = true ) {
+ global $wgDBuser, $wgDBpassword, $wgDBname;
+ global $wgDBtestuser, $wgDBtestpassword;
+ global $wgUploadPath;
+
+ if ( $switchDB ) {
+ $wgDBname = $testResourceName;
+ }
+ $wgDBuser = $wgDBtestuser;
+ $wgDBpassword = $wgDBtestpassword;
+
+ $testUploadPath = getTestUploadPathFromResourceName( $testResourceName );
+ $wgUploadPath = $testUploadPath;
+}
+
+function wfRecursiveRemoveDir( $dir ) {
+ // taken from http://de3.php.net/manual/en/function.rmdir.php#98622
+ if ( is_dir( $dir ) ) {
+ $objects = scandir( $dir );
+ foreach ( $objects as $object ) {
+ if ( $object != "." && $object != ".." ) {
+ if ( filetype( $dir . '/' . $object ) == "dir" ) {
+ wfRecursiveRemoveDir( $dir . '/' . $object );
+ } else {
+ unlink( $dir . '/' . $object );
+ }
+ }
+ }
+ reset( $objects );
+ rmdir( $dir );
+ }
+} \ No newline at end of file
diff --git a/includes/Setup.php b/includes/Setup.php
index 5d348885..815d24eb 100644
--- a/includes/Setup.php
+++ b/includes/Setup.php
@@ -9,7 +9,7 @@
* This file is not a valid entry point, perform no further processing unless
* MEDIAWIKI is defined
*/
-if( !defined( 'MEDIAWIKI' ) ) {
+if ( !defined( 'MEDIAWIKI' ) ) {
exit( 1 );
}
@@ -29,60 +29,72 @@ if ( !isset( $wgVersion ) ) {
}
// Set various default paths sensibly...
-if( $wgScript === false ) $wgScript = "$wgScriptPath/index$wgScriptExtension";
-if( $wgRedirectScript === false ) $wgRedirectScript = "$wgScriptPath/redirect$wgScriptExtension";
-if( $wgLoadScript === false ) $wgLoadScript = "$wgScriptPath/load$wgScriptExtension";
+if ( $wgScript === false ) $wgScript = "$wgScriptPath/index$wgScriptExtension";
+if ( $wgRedirectScript === false ) $wgRedirectScript = "$wgScriptPath/redirect$wgScriptExtension";
+if ( $wgLoadScript === false ) $wgLoadScript = "$wgScriptPath/load$wgScriptExtension";
-if( $wgArticlePath === false ) {
- if( $wgUsePathInfo ) {
+if ( $wgArticlePath === false ) {
+ if ( $wgUsePathInfo ) {
$wgArticlePath = "$wgScript/$1";
} else {
$wgArticlePath = "$wgScript?title=$1";
}
}
-if( $wgStylePath === false ) $wgStylePath = "$wgScriptPath/skins";
-if( $wgLocalStylePath === false ) $wgLocalStylePath = "$wgScriptPath/skins";
-if( $wgStyleDirectory === false) $wgStyleDirectory = "$IP/skins";
-if( $wgExtensionAssetsPath === false ) $wgExtensionAssetsPath = "$wgScriptPath/extensions";
+if ( !empty($wgActionPaths) && !isset($wgActionPaths['view']) ) {
+ # 'view' is assumed the default action path everywhere in the code
+ # but is rarely filled in $wgActionPaths
+ $wgActionPaths['view'] = $wgArticlePath;
+}
+
+if ( !empty($wgActionPaths) && !isset($wgActionPaths['view']) ) {
+ # 'view' is assumed the default action path everywhere in the code
+ # but is rarely filled in $wgActionPaths
+ $wgActionPaths['view'] = $wgArticlePath ;
+}
-if( $wgLogo === false ) $wgLogo = "$wgStylePath/common/images/wiki.png";
+if ( $wgStylePath === false ) $wgStylePath = "$wgScriptPath/skins";
+if ( $wgLocalStylePath === false ) $wgLocalStylePath = "$wgScriptPath/skins";
+if ( $wgStyleDirectory === false ) $wgStyleDirectory = "$IP/skins";
+if ( $wgExtensionAssetsPath === false ) $wgExtensionAssetsPath = "$wgScriptPath/extensions";
-if( $wgUploadPath === false ) $wgUploadPath = "$wgScriptPath/images";
-if( $wgUploadDirectory === false ) $wgUploadDirectory = "$IP/images";
+if ( $wgLogo === false ) $wgLogo = "$wgStylePath/common/images/wiki.png";
-if( $wgMathPath === false ) $wgMathPath = "{$wgUploadPath}/math";
-if( $wgMathDirectory === false ) $wgMathDirectory = "{$wgUploadDirectory}/math";
-if( $wgTmpDirectory === false ) $wgTmpDirectory = "{$wgUploadDirectory}/tmp";
+if ( $wgUploadPath === false ) $wgUploadPath = "$wgScriptPath/images";
+if ( $wgUploadDirectory === false ) $wgUploadDirectory = "$IP/images";
-if( $wgReadOnlyFile === false ) $wgReadOnlyFile = "{$wgUploadDirectory}/lock_yBgMBwiR";
-if( $wgFileCacheDirectory === false ) $wgFileCacheDirectory = "{$wgUploadDirectory}/cache";
-if( $wgDeletedDirectory === false ) $wgDeletedDirectory = "{$wgUploadDirectory}/deleted";
+if ( $wgTmpDirectory === false ) $wgTmpDirectory = "{$wgUploadDirectory}/tmp";
-if( isset( $wgFileStore['deleted']['directory'] ) ) {
+if ( $wgReadOnlyFile === false ) $wgReadOnlyFile = "{$wgUploadDirectory}/lock_yBgMBwiR";
+if ( $wgFileCacheDirectory === false ) $wgFileCacheDirectory = "{$wgUploadDirectory}/cache";
+if ( $wgDeletedDirectory === false ) $wgDeletedDirectory = "{$wgUploadDirectory}/deleted";
+
+if ( isset( $wgFileStore['deleted']['directory'] ) ) {
$wgDeletedDirectory = $wgFileStore['deleted']['directory'];
}
-if( isset($wgFooterIcons["copyright"]) &&
- isset($wgFooterIcons["copyright"]["copyright"]) &&
- $wgFooterIcons["copyright"]["copyright"] === array() ) {
+if ( isset( $wgFooterIcons['copyright'] ) &&
+ isset( $wgFooterIcons['copyright']['copyright'] ) &&
+ $wgFooterIcons['copyright']['copyright'] === array() )
+{
if ( isset( $wgCopyrightIcon ) && $wgCopyrightIcon ) {
- $wgFooterIcons["copyright"]["copyright"] = $wgCopyrightIcon;
+ $wgFooterIcons['copyright']['copyright'] = $wgCopyrightIcon;
} elseif ( $wgRightsIcon || $wgRightsText ) {
- $wgFooterIcons["copyright"]["copyright"] = array(
- "url" => $wgRightsUrl,
- "src" => $wgRightsIcon,
- "alt" => $wgRightsText,
+ $wgFooterIcons['copyright']['copyright'] = array(
+ 'url' => $wgRightsUrl,
+ 'src' => $wgRightsIcon,
+ 'alt' => $wgRightsText,
);
} else {
- unset($wgFooterIcons["copyright"]["copyright"]);
+ unset( $wgFooterIcons['copyright']['copyright'] );
}
}
-if( isset($wgFooterIcons["poweredby"]) &&
- isset($wgFooterIcons["poweredby"]["mediawiki"]) &&
- $wgFooterIcons["poweredby"]["mediawiki"]["src"] === null ) {
- $wgFooterIcons["poweredby"]["mediawiki"]["src"] = "$wgStylePath/common/images/poweredby_mediawiki_88x31.png";
+if ( isset( $wgFooterIcons['poweredby'] ) &&
+ isset( $wgFooterIcons['poweredby']['mediawiki'] ) &&
+ $wgFooterIcons['poweredby']['mediawiki']['src'] === null )
+{
+ $wgFooterIcons['poweredby']['mediawiki']['src'] = "$wgStylePath/common/images/poweredby_mediawiki_88x31.png";
}
/**
@@ -106,7 +118,7 @@ $wgNamespaceAliases['Image_talk'] = NS_FILE_TALK;
* Initialise $wgLocalFileRepo from backwards-compatible settings
*/
if ( !$wgLocalFileRepo ) {
- if( isset( $wgFileStore['deleted']['hash'] ) ) {
+ if ( isset( $wgFileStore['deleted']['hash'] ) ) {
$deletedHashLevel = $wgFileStore['deleted']['hash'];
} else {
$deletedHashLevel = $wgHashedUploadDirectory ? 3 : 0;
@@ -143,7 +155,7 @@ if ( $wgUseSharedUploads ) {
'dbUser' => $wgDBuser,
'dbPassword' => $wgDBpassword,
'dbName' => $wgSharedUploadDBname,
- 'dbFlags' => ($wgDebugDumpSql ? DBO_DEBUG : 0) | DBO_DEFAULT,
+ 'dbFlags' => ( $wgDebugDumpSql ? DBO_DEBUG : 0 ) | DBO_DEFAULT,
'tablePrefix' => $wgSharedUploadDBprefix,
'hasSharedCache' => $wgCacheSharedUploads,
'descBaseUrl' => $wgRepositoryBaseUrl,
@@ -163,7 +175,7 @@ if ( $wgUseSharedUploads ) {
);
}
}
-if( $wgUseInstantCommons ) {
+if ( $wgUseInstantCommons ) {
$wgForeignFileRepos[] = array(
'class' => 'ForeignAPIRepo',
'name' => 'wikimediacommons',
@@ -175,81 +187,19 @@ if( $wgUseInstantCommons ) {
);
}
-if ( !class_exists( 'AutoLoader' ) ) {
- require_once( "$IP/includes/AutoLoader.php" );
+if ( is_null( $wgEnableAutoRotation ) ) {
+ // Only enable auto-rotation when the bitmap handler can rotate
+ $wgEnableAutoRotation = BitmapHandler::canRotate();
}
-wfProfileIn( $fname.'-exception' );
-require_once( "$IP/includes/Exception.php" );
-wfInstallExceptionHandler();
-wfProfileOut( $fname.'-exception' );
-
-wfProfileIn( $fname.'-includes' );
-require_once( "$IP/includes/GlobalFunctions.php" );
-require_once( "$IP/includes/Hooks.php" );
-require_once( "$IP/includes/Namespace.php" );
-require_once( "$IP/includes/ProxyTools.php" );
-require_once( "$IP/includes/ObjectCache.php" );
-require_once( "$IP/includes/ImageFunctions.php" );
-wfProfileOut( $fname.'-includes' );
-wfProfileIn( $fname.'-misc1' );
-
-# Raise the memory limit if it's too low
-wfMemoryLimit();
-
-/**
- * Set up the timezone, suppressing the pseudo-security warning in PHP 5.1+
- * that happens whenever you use a date function without the timezone being
- * explicitly set. Inspired by phpMyAdmin's treatment of the problem.
- */
-wfSuppressWarnings();
-date_default_timezone_set( date_default_timezone_get() );
-wfRestoreWarnings();
-
-# Can't stub this one, it sets up $_GET and $_REQUEST in its constructor
-$wgRequest = new WebRequest;
-
-# Useful debug output
-global $wgCommandLineMode;
-if ( $wgCommandLineMode ) {
- wfDebug( "\n\nStart command line script $self\n" );
-} else {
- wfDebug( "Start request\n\n" );
- # Output the REQUEST_URI. This is not supported by IIS in rewrite mode,
- # so use an alternative
- $requestUri = isset( $_SERVER['REQUEST_URI'] ) ? $_SERVER['REQUEST_URI'] :
- ( isset( $_SERVER['HTTP_X_ORIGINAL_URL'] ) ? $_SERVER['HTTP_X_ORIGINAL_URL'] :
- $_SERVER['PHP_SELF'] );
- wfDebug( "{$_SERVER['REQUEST_METHOD']} {$requestUri}\n" );
-
- if ( $wgDebugPrintHttpHeaders ) {
- $headerOut = "HTTP HEADERS:\n";
-
- if ( function_exists( 'getallheaders' ) ) {
- $headers = getallheaders();
- foreach ( $headers as $name => $value ) {
- $headerOut .= "$name: $value\n";
- }
- } else {
- $headers = $_SERVER;
- foreach ( $headers as $name => $value ) {
- if ( substr( $name, 0, 5 ) !== 'HTTP_' ) continue;
- $name = substr( $name, 5 );
- $headerOut .= "$name: $value\n";
- }
- }
- wfDebug( "$headerOut\n" );
- }
-}
-
-if( $wgRCFilterByAge ) {
- ## Trim down $wgRCLinkDays so that it only lists links which are valid
- ## as determined by $wgRCMaxAge.
- ## Note that we allow 1 link higher than the max for things like 56 days but a 60 day link.
- sort($wgRCLinkDays);
- for( $i = 0; $i < count($wgRCLinkDays); $i++ ) {
- if( $wgRCLinkDays[$i] >= $wgRCMaxAge / ( 3600 * 24 ) ) {
- $wgRCLinkDays = array_slice( $wgRCLinkDays, 0, $i+1, false );
+if ( $wgRCFilterByAge ) {
+ # # Trim down $wgRCLinkDays so that it only lists links which are valid
+ # # as determined by $wgRCMaxAge.
+ # # Note that we allow 1 link higher than the max for things like 56 days but a 60 day link.
+ sort( $wgRCLinkDays );
+ for ( $i = 0; $i < count( $wgRCLinkDays ); $i++ ) {
+ if ( $wgRCLinkDays[$i] >= $wgRCMaxAge / ( 3600 * 24 ) ) {
+ $wgRCLinkDays = array_slice( $wgRCLinkDays, 0, $i + 1, false );
break;
}
}
@@ -259,84 +209,218 @@ if ( $wgSkipSkin ) {
$wgSkipSkins[] = $wgSkipSkin;
}
+# Set default shared prefix
+if ( $wgSharedPrefix === false ) {
+ $wgSharedPrefix = $wgDBprefix;
+}
+
+if ( !$wgCookiePrefix ) {
+ if ( $wgSharedDB && $wgSharedPrefix && in_array( 'user', $wgSharedTables ) ) {
+ $wgCookiePrefix = $wgSharedDB . '_' . $wgSharedPrefix;
+ } elseif ( $wgSharedDB && in_array( 'user', $wgSharedTables ) ) {
+ $wgCookiePrefix = $wgSharedDB;
+ } elseif ( $wgDBprefix ) {
+ $wgCookiePrefix = $wgDBname . '_' . $wgDBprefix;
+ } else {
+ $wgCookiePrefix = $wgDBname;
+ }
+}
+$wgCookiePrefix = strtr( $wgCookiePrefix, '=,; +."\'\\[', '__________' );
+
$wgUseEnotif = $wgEnotifUserTalk || $wgEnotifWatchlist;
-if($wgMetaNamespace === FALSE) {
+if ( $wgMetaNamespace === false ) {
$wgMetaNamespace = str_replace( ' ', '_', $wgSitename );
}
+/**
+ * Definitions of the NS_ constants are in Defines.php
+ * @private
+ */
+$wgCanonicalNamespaceNames = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Special',
+ NS_TALK => 'Talk',
+ NS_USER => 'User',
+ NS_USER_TALK => 'User_talk',
+ NS_PROJECT => 'Project',
+ NS_PROJECT_TALK => 'Project_talk',
+ NS_FILE => 'File',
+ NS_FILE_TALK => 'File_talk',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
+ NS_TEMPLATE => 'Template',
+ NS_TEMPLATE_TALK => 'Template_talk',
+ NS_HELP => 'Help',
+ NS_HELP_TALK => 'Help_talk',
+ NS_CATEGORY => 'Category',
+ NS_CATEGORY_TALK => 'Category_talk',
+);
+
+/// @todo UGLY UGLY
+if( is_array( $wgExtraNamespaces ) ) {
+ $wgCanonicalNamespaceNames = $wgCanonicalNamespaceNames + $wgExtraNamespaces;
+}
+
# These are now the same, always
# To determine the user language, use $wgLang->getCode()
$wgContLanguageCode = $wgLanguageCode;
# Easy to forget to falsify $wgShowIPinHeader for static caches.
# If file cache or squid cache is on, just disable this (DWIMD).
-if( $wgUseFileCache || $wgUseSquid ) $wgShowIPinHeader = false;
+if ( $wgUseFileCache || $wgUseSquid ) {
+ $wgShowIPinHeader = false;
+}
# $wgAllowRealName and $wgAllowUserSkin were removed in 1.16
# in favor of $wgHiddenPrefs, handle b/c here
-if( !$wgAllowRealName ) {
+if ( !$wgAllowRealName ) {
$wgHiddenPrefs[] = 'realname';
}
-if( !$wgAllowUserSkin ) {
- $wgHiddenPrefs[] = 'skin';
+# Doesn't make sense to have if disabled.
+if ( !$wgEnotifMinorEdits ) {
+ $wgHiddenPrefs[] = 'enotifminoredits';
+}
+
+# $wgDisabledActions is deprecated as of 1.18
+foreach( $wgDisabledActions as $action ){
+ $wgActions[$action] = false;
+}
+if( !$wgAllowPageInfo ){
+ $wgActions['info'] = false;
}
if ( !$wgHtml5Version && $wgHtml5 && $wgAllowRdfaAttributes ) {
# see http://www.w3.org/TR/rdfa-in-html/#document-conformance
- if ( $wgMimeType == 'application/xhtml+xml' ) $wgHtml5Version = 'XHTML+RDFa 1.0';
- else $wgHtml5Version = 'HTML+RDFa 1.0';
+ if ( $wgMimeType == 'application/xhtml+xml' ) {
+ $wgHtml5Version = 'XHTML+RDFa 1.0';
+ } else {
+ $wgHtml5Version = 'HTML+RDFa 1.0';
+ }
+}
+
+# Blacklisted file extensions shouldn't appear on the "allowed" list
+$wgFileExtensions = array_diff ( $wgFileExtensions, $wgFileBlacklist );
+
+if ( $wgArticleCountMethod === null ) {
+ $wgArticleCountMethod = $wgUseCommaCount ? 'comma' : 'link';
}
if ( $wgInvalidateCacheOnLocalSettingsChange ) {
$wgCacheEpoch = max( $wgCacheEpoch, gmdate( 'YmdHis', @filemtime( "$IP/LocalSettings.php" ) ) );
}
-# Blacklisted file extensions shouldn't appear on the "allowed" list
-$wgFileExtensions = array_diff ( $wgFileExtensions, $wgFileBlacklist );
+if ( $wgAjaxUploadDestCheck ) {
+ $wgAjaxExportList[] = 'SpecialUpload::ajaxGetExistsWarning';
+}
-wfProfileOut( $fname.'-misc1' );
-wfProfileIn( $fname.'-memcached' );
+if ( $wgNewUserLog ) {
+ # Add a new log type
+ $wgLogTypes[] = 'newusers';
+ $wgLogNames['newusers'] = 'newuserlogpage';
+ $wgLogHeaders['newusers'] = 'newuserlogpagetext';
+ $wgLogActions['newusers/newusers'] = 'newuserlogentry'; // For compatibility with older log entries
+ $wgLogActions['newusers/create'] = 'newuserlog-create-entry';
+ $wgLogActions['newusers/create2'] = 'newuserlog-create2-entry';
+ $wgLogActions['newusers/autocreate'] = 'newuserlog-autocreate-entry';
+}
-$wgMemc =& wfGetMainCache();
-$messageMemc =& wfGetMessageCacheStorage();
-$parserMemc =& wfGetParserCacheStorage();
+if ( $wgCookieSecure === 'detect' ) {
+ $wgCookieSecure = ( substr( $wgServer, 0, 6 ) === 'https:' );
+}
-wfDebug( 'CACHES: ' . get_class( $wgMemc ) . '[main] ' .
- get_class( $messageMemc ) . '[message] ' .
- get_class( $parserMemc ) . "[parser]\n" );
+if ( !defined( 'MW_COMPILED' ) ) {
+ if ( !MWInit::classExists( 'AutoLoader' ) ) {
+ require_once( "$IP/includes/AutoLoader.php" );
+ }
-wfProfileOut( $fname.'-memcached' );
+ wfProfileIn( $fname . '-exception' );
+ MWExceptionHandler::installHandler();
+ wfProfileOut( $fname . '-exception' );
+
+ wfProfileIn( $fname . '-includes' );
+ require_once( "$IP/includes/normal/UtfNormalUtil.php" );
+ require_once( "$IP/includes/GlobalFunctions.php" );
+ require_once( "$IP/includes/ProxyTools.php" );
+ require_once( "$IP/includes/ImageFunctions.php" );
+ require_once( "$IP/includes/normal/UtfNormalDefines.php" );
+ wfProfileOut( $fname . '-includes' );
+}
-## Most of the config is out, some might want to run hooks here.
-wfRunHooks( 'SetupAfterCache' );
+# Now that GlobalFunctions is loaded, set the default for $wgCanonicalServer
+if ( $wgCanonicalServer === false ) {
+ $wgCanonicalServer = wfExpandUrl( $wgServer, PROTO_HTTP );
+}
-wfProfileIn( $fname.'-SetupSession' );
+wfProfileIn( $fname . '-misc1' );
-# Set default shared prefix
-if( $wgSharedPrefix === false ) $wgSharedPrefix = $wgDBprefix;
+# Raise the memory limit if it's too low
+wfMemoryLimit();
-if( !$wgCookiePrefix ) {
- if ( $wgSharedDB && $wgSharedPrefix && in_array('user',$wgSharedTables) ) {
- $wgCookiePrefix = $wgSharedDB . '_' . $wgSharedPrefix;
- } elseif ( $wgSharedDB && in_array('user',$wgSharedTables) ) {
- $wgCookiePrefix = $wgSharedDB;
- } elseif ( $wgDBprefix ) {
- $wgCookiePrefix = $wgDBname . '_' . $wgDBprefix;
- } else {
- $wgCookiePrefix = $wgDBname;
+/**
+ * Set up the timezone, suppressing the pseudo-security warning in PHP 5.1+
+ * that happens whenever you use a date function without the timezone being
+ * explicitly set. Inspired by phpMyAdmin's treatment of the problem.
+ */
+if ( is_null( $wgLocaltimezone) ) {
+ wfSuppressWarnings();
+ $wgLocaltimezone = date_default_timezone_get();
+ wfRestoreWarnings();
+}
+
+date_default_timezone_set( $wgLocaltimezone );
+if( is_null( $wgLocalTZoffset ) ) {
+ $wgLocalTZoffset = date( 'Z' ) / 60;
+}
+
+# Useful debug output
+global $wgCommandLineMode;
+if ( $wgCommandLineMode ) {
+ $wgRequest = new FauxRequest( array() );
+
+ wfDebug( "\n\nStart command line script $self\n" );
+} else {
+ # Can't stub this one, it sets up $_GET and $_REQUEST in its constructor
+ $wgRequest = new WebRequest;
+
+ $debug = "Start request\n\n{$_SERVER['REQUEST_METHOD']} {$wgRequest->getRequestURL()}";
+
+ if ( $wgDebugPrintHttpHeaders ) {
+ $debug .= "\nHTTP HEADERS:\n";
+
+ foreach ( $wgRequest->getAllHeaders() as $name => $value ) {
+ $debug .= "$name: $value\n";
+ }
}
+ wfDebug( "$debug\n" );
}
-$wgCookiePrefix = strtr($wgCookiePrefix, "=,; +.\"'\\[", "__________");
+
+wfProfileOut( $fname . '-misc1' );
+wfProfileIn( $fname . '-memcached' );
+
+$wgMemc = wfGetMainCache();
+$messageMemc = wfGetMessageCacheStorage();
+$parserMemc = wfGetParserCacheStorage();
+
+wfDebug( 'CACHES: ' . get_class( $wgMemc ) . '[main] ' .
+ get_class( $messageMemc ) . '[message] ' .
+ get_class( $parserMemc ) . "[parser]\n" );
+
+wfProfileOut( $fname . '-memcached' );
+
+# # Most of the config is out, some might want to run hooks here.
+wfRunHooks( 'SetupAfterCache' );
+
+wfProfileIn( $fname . '-session' );
# If session.auto_start is there, we can't touch session name
-#
-if( !wfIniGetBool( 'session.auto_start' ) )
+if ( !wfIniGetBool( 'session.auto_start' ) ) {
session_name( $wgSessionName ? $wgSessionName : $wgCookiePrefix . '_session' );
+}
-if( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
- if( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix.'Token'] ) ) {
+if ( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
+ if ( $wgRequest->checkSessionCookie() || isset( $_COOKIE[$wgCookiePrefix . 'Token'] ) ) {
wfIncrStats( 'request_with_session' );
wfSetupSession();
$wgSessionStarted = true;
@@ -346,51 +430,50 @@ if( !defined( 'MW_NO_SESSION' ) && !$wgCommandLineMode ) {
}
}
-wfProfileOut( $fname.'-SetupSession' );
-wfProfileIn( $fname.'-globals' );
+wfProfileOut( $fname . '-session' );
+wfProfileIn( $fname . '-globals' );
-$wgContLang = new StubContLang;
+$wgContLang = Language::factory( $wgLanguageCode );
+$wgContLang->initEncoding();
+$wgContLang->initContLang();
// Now that variant lists may be available...
$wgRequest->interpolateTitle();
-$wgUser = $wgCommandLineMode ? new User : User::newFromSession();
-$wgLang = new StubUserLang;
-$wgOut = new StubObject( 'wgOut', 'OutputPage' );
-$wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
+$wgUser = RequestContext::getMain()->getUser(); # BackCompat
-$wgMessageCache = new StubObject( 'wgMessageCache', 'MessageCache',
- array( $messageMemc, $wgUseDatabaseMessages, $wgMsgCacheExpiry ) );
+/**
+ * @var Language
+ */
+$wgLang = new StubUserLang;
-wfProfileOut( $fname.'-globals' );
-wfProfileIn( $fname.'-User' );
+/**
+ * @var OutputPage
+ */
+$wgOut = RequestContext::getMain()->getOutput(); # BackCompat
-# Skin setup functions
-# Entries can be added to this variable during the inclusion
-# of the extension file. Skins can then perform any necessary initialisation.
-#
-foreach ( $wgSkinExtensionFunctions as $func ) {
- call_user_func( $func );
-}
+/**
+ * @var Parser
+ */
+$wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
-if( !is_object( $wgAuth ) ) {
+if ( !is_object( $wgAuth ) ) {
$wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' );
wfRunHooks( 'AuthPluginSetup', array( &$wgAuth ) );
}
-wfProfileOut( $fname.'-User' );
-
-wfProfileIn( $fname.'-misc2' );
+# Placeholders in case of DB error
+$wgTitle = null;
$wgDeferredUpdateList = array();
-if ( $wgAjaxUploadDestCheck ) $wgAjaxExportList[] = 'SpecialUpload::ajaxGetExistsWarning';
-
-# Placeholders in case of DB error
-$wgTitle = null;
-$wgArticle = null;
+// We need to check for safe_mode, because mail() will throw an E_NOTICE
+// on additional parameters
+if( !is_null($wgAdditionalMailParams) && wfIniGetBool('safe_mode') ) {
+ $wgAdditionalMailParams = null;
+}
-wfProfileOut( $fname.'-misc2' );
-wfProfileIn( $fname.'-extensions' );
+wfProfileOut( $fname . '-globals' );
+wfProfileIn( $fname . '-extensions' );
# Extension setup functions for extensions other than skins
# Entries should be added to this variable during the inclusion
@@ -399,14 +482,14 @@ wfProfileIn( $fname.'-extensions' );
foreach ( $wgExtensionFunctions as $func ) {
# Allow closures in PHP 5.3+
if ( is_object( $func ) && $func instanceof Closure ) {
- $profName = $fname.'-extensions-closure';
- } elseif( is_array( $func ) ) {
+ $profName = $fname . '-extensions-closure';
+ } elseif ( is_array( $func ) ) {
if ( is_object( $func[0] ) )
- $profName = $fname.'-extensions-'.get_class( $func[0] ).'::'.$func[1];
+ $profName = $fname . '-extensions-' . get_class( $func[0] ) . '::' . $func[1];
else
- $profName = $fname.'-extensions-'.implode( '::', $func );
+ $profName = $fname . '-extensions-' . implode( '::', $func );
} else {
- $profName = $fname.'-extensions-'.strval( $func );
+ $profName = $fname . '-extensions-' . strval( $func );
}
wfProfileIn( $profName );
@@ -414,24 +497,8 @@ foreach ( $wgExtensionFunctions as $func ) {
wfProfileOut( $profName );
}
-// For compatibility
-wfRunHooks( 'LogPageValidTypes', array( &$wgLogTypes ) );
-wfRunHooks( 'LogPageLogName', array( &$wgLogNames ) );
-wfRunHooks( 'LogPageLogHeader', array( &$wgLogHeaders ) );
-wfRunHooks( 'LogPageActionText', array( &$wgLogActions ) );
-
-if( !empty($wgNewUserLog) ) {
- # Add a new log type
- $wgLogTypes[] = 'newusers';
- $wgLogNames['newusers'] = 'newuserlogpage';
- $wgLogHeaders['newusers'] = 'newuserlogpagetext';
- $wgLogActions['newusers/newusers'] = 'newuserlogentry'; // For compatibility with older log entries
- $wgLogActions['newusers/create'] = 'newuserlog-create-entry';
- $wgLogActions['newusers/create2'] = 'newuserlog-create2-entry';
- $wgLogActions['newusers/autocreate'] = 'newuserlog-autocreate-entry';
-}
-
wfDebug( "Fully initialised\n" );
$wgFullyInitialised = true;
-wfProfileOut( $fname.'-extensions' );
+
+wfProfileOut( $fname . '-extensions' );
wfProfileOut( $fname );
diff --git a/includes/SiteConfiguration.php b/includes/SiteConfiguration.php
index f4a4576a..ebdb08fe 100644
--- a/includes/SiteConfiguration.php
+++ b/includes/SiteConfiguration.php
@@ -1,17 +1,4 @@
<?php
-
-/**
- * The include paths change after this file is included from commandLine.inc,
- * meaning that require_once() fails to detect that it is including the same
- * file again. We use DIY C-style protection as a workaround.
- */
-
-// Hide this pattern from Doxygen, which spazzes out at it
-/// @cond
-if( !defined( 'SITE_CONFIGURATION' ) ){
-define( 'SITE_CONFIGURATION', 1 );
-/// @endcond
-
/**
* This is a class used to hold configuration settings, particularly for multi-wiki sites.
*/
@@ -149,6 +136,11 @@ class SiteConfiguration {
/**
* Type-safe string replace; won't do replacements on non-strings
* private?
+ *
+ * @param $from
+ * @param $to
+ * @param $in
+ * @return string
*/
function doReplace( $from, $to, $in ) {
if( is_string( $in ) ) {
@@ -204,7 +196,11 @@ class SiteConfiguration {
return (bool)($this->get( $setting, $wiki, $suffix, array(), $wikiTags ) );
}
- /** Retrieves an array of local databases */
+ /**
+ * Retrieves an array of local databases
+ *
+ * @return array
+ */
function &getLocalDatabases() {
return $this->wikis;
}
@@ -242,6 +238,11 @@ class SiteConfiguration {
$this->extractGlobalSetting( $setting, $wiki, $params );
}
+ /**
+ * @param $setting string
+ * @param $wiki string
+ * @param $params array
+ */
public function extractGlobalSetting( $setting, $wiki, $params ) {
$value = $this->getSetting( $setting, $wiki, $params );
if ( !is_null( $value ) ) {
@@ -288,8 +289,9 @@ class SiteConfiguration {
'params' => array(),
);
- if( !is_callable( $this->siteParamsCallback ) )
+ if( !is_callable( $this->siteParamsCallback ) ) {
return $default;
+ }
$ret = call_user_func_array( $this->siteParamsCallback, array( $this, $wiki ) );
# Validate the returned value
@@ -339,6 +341,8 @@ class SiteConfiguration {
/**
* Work out the site and language name from a database name
* @param $db
+ *
+ * @return array
*/
public function siteFromDB( $db ) {
// Allow override
@@ -377,10 +381,14 @@ class SiteConfiguration {
* On encountering duplicate keys, merge the two, but ONLY if they're arrays.
* PHP's array_merge_recursive() merges ANY duplicate values into arrays,
* which is not fun
+ *
+ * @param $array1 array
+ *
+ * @return array
*/
static function arrayMerge( $array1/* ... */ ) {
$out = $array1;
- for( $i=1; $i < func_num_args(); $i++ ) {
+ for( $i = 1; $i < func_num_args(); $i++ ) {
foreach( func_get_arg( $i ) as $key => $value ) {
if ( isset($out[$key]) && is_array($out[$key]) && is_array($value) ) {
$out[$key] = self::arrayMerge( $out[$key], $value );
@@ -395,7 +403,7 @@ class SiteConfiguration {
return $out;
}
-
+
public function loadFullData() {
if ($this->fullLoadCallback && !$this->fullLoadDone) {
call_user_func( $this->fullLoadCallback, $this );
@@ -403,4 +411,3 @@ class SiteConfiguration {
}
}
}
-} // End of multiple inclusion guard
diff --git a/includes/SiteStats.php b/includes/SiteStats.php
index 11cef56f..d61d4fc7 100644
--- a/includes/SiteStats.php
+++ b/includes/SiteStats.php
@@ -13,6 +13,9 @@ class SiteStats {
self::load( true );
}
+ /**
+ * @param $recache bool
+ */
static function load( $recache = false ) {
if ( self::$loaded && !$recache ) {
return;
@@ -32,6 +35,9 @@ class SiteStats {
self::$loaded = true;
}
+ /**
+ * @return Bool|ResultWrapper
+ */
static function loadAndLazyInit() {
wfDebug( __METHOD__ . ": reading site_stats from slave\n" );
$row = self::doLoad( wfGetDB( DB_SLAVE ) );
@@ -49,7 +55,7 @@ class SiteStats {
// clean schema with mwdumper.
wfDebug( __METHOD__ . ": initializing damaged or missing site_stats\n" );
- SiteStatsInit::doAllAndCommit( false );
+ SiteStatsInit::doAllAndCommit( wfGetDB( DB_SLAVE ) );
$row = self::doLoad( wfGetDB( DB_MASTER ) );
}
@@ -60,54 +66,71 @@ class SiteStats {
return $row;
}
+ /**
+ * @param $db DatabaseBase
+ * @return Bool|ResultWrapper
+ */
static function doLoad( $db ) {
return $db->selectRow( 'site_stats', '*', false, __METHOD__ );
}
+ /**
+ * @return int
+ */
static function views() {
self::load();
return self::$row->ss_total_views;
}
+ /**
+ * @return int
+ */
static function edits() {
self::load();
return self::$row->ss_total_edits;
}
+ /**
+ * @return int
+ */
static function articles() {
self::load();
return self::$row->ss_good_articles;
}
+ /**
+ * @return int
+ */
static function pages() {
self::load();
return self::$row->ss_total_pages;
}
+ /**
+ * @return int
+ */
static function users() {
self::load();
return self::$row->ss_users;
}
+ /**
+ * @return int
+ */
static function activeUsers() {
self::load();
return self::$row->ss_active_users;
}
+ /**
+ * @return int
+ */
static function images() {
self::load();
return self::$row->ss_images;
}
/**
- * @deprecated Use self::numberingroup('sysop') instead
- */
- static function admins() {
- wfDeprecated(__METHOD__);
- return self::numberingroup( 'sysop' );
- }
-
- /**
* Find the number of users in a given user group.
* @param $group String: name of group
* @return Integer
@@ -132,6 +155,9 @@ class SiteStats {
return self::$groupMemberCounts[$group];
}
+ /**
+ * @return int
+ */
static function jobs() {
if ( !isset( self::$jobs ) ) {
$dbr = wfGetDB( DB_SLAVE );
@@ -144,11 +170,16 @@ class SiteStats {
return self::$jobs;
}
+ /**
+ * @param $ns int
+ *
+ * @return int
+ */
static function pagesInNs( $ns ) {
wfProfileIn( __METHOD__ );
if( !isset( self::$pageCount[$ns] ) ) {
$dbr = wfGetDB( DB_SLAVE );
- $pageCount[$ns] = (int)$dbr->selectField(
+ self::$pageCount[$ns] = (int)$dbr->selectField(
'page',
'COUNT(*)',
array( 'page_namespace' => $ns ),
@@ -156,15 +187,21 @@ class SiteStats {
);
}
wfProfileOut( __METHOD__ );
- return $pageCount[$ns];
+ return self::$pageCount[$ns];
}
- /** Is the provided row of site stats sane, or should it be regenerated? */
+ /**
+ * Is the provided row of site stats sane, or should it be regenerated?
+ *
+ * @param $row
+ *
+ * @return bool
+ */
private static function isSane( $row ) {
if(
$row === false
- or $row->ss_total_pages < $row->ss_good_articles
- or $row->ss_total_edits < $row->ss_total_pages
+ || $row->ss_total_pages < $row->ss_good_articles
+ || $row->ss_total_edits < $row->ss_total_pages
) {
return false;
}
@@ -173,7 +210,7 @@ class SiteStats {
'total_pages', 'users', 'admins', 'images' ) as $member ) {
if(
$row->{"ss_$member"} > 2000000000
- or $row->{"ss_$member"} < 0
+ || $row->{"ss_$member"} < 0
) {
return false;
}
@@ -182,7 +219,6 @@ class SiteStats {
}
}
-
/**
*
*/
@@ -198,6 +234,11 @@ class SiteStatsUpdate {
$this->mUsers = $users;
}
+ /**
+ * @param $sql
+ * @param $field
+ * @param $delta
+ */
function appendUpdate( &$sql, $field, $delta ) {
if ( $delta ) {
if ( $sql ) {
@@ -233,6 +274,10 @@ class SiteStatsUpdate {
}
}
+ /**
+ * @param $dbw DatabaseBase
+ * @return bool|mixed
+ */
public static function cacheUpdate( $dbw ) {
global $wgActiveUserDays;
$dbr = wfGetDB( DB_SLAVE, array( 'SpecialStatistics', 'vslow' ) );
@@ -272,10 +317,16 @@ class SiteStatsInit {
/**
* Constructor
- * @param $useMaster Boolean: whether to use the master DB
+ * @param $database Boolean or DatabaseBase:
+ * - Boolean: whether to use the master DB
+ * - DatabaseBase: database connection to use
*/
- public function __construct( $useMaster = false ) {
- $this->db = wfGetDB( $useMaster ? DB_MASTER : DB_SLAVE );
+ public function __construct( $database = false ) {
+ if ( $database instanceof DatabaseBase ) {
+ $this->db = $database;
+ } else {
+ $this->db = wfGetDB( $database ? DB_MASTER : DB_SLAVE );
+ }
}
/**
@@ -293,17 +344,28 @@ class SiteStatsInit {
* @return Integer
*/
public function articles() {
- global $wgContentNamespaces;
- $this->mArticles = $this->db->selectField(
- 'page',
- 'COUNT(*)',
- array(
- 'page_namespace' => $wgContentNamespaces,
- 'page_is_redirect' => 0,
- 'page_len > 0'
- ),
- __METHOD__
+ global $wgArticleCountMethod;
+
+ $tables = array( 'page' );
+ $conds = array(
+ 'page_namespace' => MWNamespace::getContentNamespaces(),
+ 'page_is_redirect' => 0,
);
+
+ if ( $wgArticleCountMethod == 'link' ) {
+ $tables[] = 'pagelinks';
+ $conds[] = 'pl_from=page_id';
+ } elseif ( $wgArticleCountMethod == 'comma' ) {
+ // To make a correct check for this, we would need, for each page,
+ // to load the text, maybe uncompress it, maybe decode it and then
+ // check if there's one comma.
+ // But one thing we are sure is that if the page is empty, it can't
+ // contain a comma :)
+ $conds[] = 'page_len > 0';
+ }
+
+ $this->mArticles = $this->db->selectField( $tables, 'COUNT(DISTINCT page_id)',
+ $conds, __METHOD__ );
return $this->mArticles;
}
@@ -315,7 +377,7 @@ class SiteStatsInit {
$this->mPages = $this->db->selectField( 'page', 'COUNT(*)', '', __METHOD__ );
return $this->mPages;
}
-
+
/**
* Count total users
* @return Integer
@@ -324,7 +386,7 @@ class SiteStatsInit {
$this->mUsers = $this->db->selectField( 'user', 'COUNT(*)', '', __METHOD__ );
return $this->mUsers;
}
-
+
/**
* Count views
* @return Integer
@@ -346,13 +408,21 @@ class SiteStatsInit {
/**
* Do all updates and commit them. More or less a replacement
* for the original initStats, but without the calls to wfOut()
- * @param $update Boolean: whether to update the current stats or write fresh
- * @param $noViews Boolean: when true, do not update the number of page views
- * @param $activeUsers Boolean: whether to update the number of active users
+ *
+ * @param $database Boolean or DatabaseBase:
+ * - Boolean: whether to use the master DB
+ * - DatabaseBase: database connection to use
+ * @param $options Array of options, may contain the following values
+ * - update Boolean: whether to update the current stats (true) or write fresh (false) (default: false)
+ * - views Boolean: when true, do not update the number of page views (default: true)
+ * - activeUsers Boolean: whether to update the number of active users (default: false)
*/
- public static function doAllAndCommit( $update, $noViews = false, $activeUsers = false ) {
+ public static function doAllAndCommit( $database, array $options = array() ) {
+ $options += array( 'update' => false, 'views' => true, 'activeUsers' => false );
+
// Grab the object and count everything
- $counter = new SiteStatsInit( false );
+ $counter = new SiteStatsInit( $database );
+
$counter->edits();
$counter->articles();
$counter->pages();
@@ -360,19 +430,19 @@ class SiteStatsInit {
$counter->files();
// Only do views if we don't want to not count them
- if( !$noViews ) {
+ if( $options['views'] ) {
$counter->views();
}
// Update/refresh
- if( $update ) {
+ if( $options['update'] ) {
$counter->update();
} else {
$counter->refresh();
}
// Count active users if need be
- if( $activeUsers ) {
+ if( $options['activeUsers'] ) {
SiteStatsUpdate::cacheUpdate( wfGetDB( DB_MASTER ) );
}
}
diff --git a/includes/Skin.php b/includes/Skin.php
index 01b3b4fe..a713660c 100644
--- a/includes/Skin.php
+++ b/includes/Skin.php
@@ -15,23 +15,10 @@ if ( !defined( 'MEDIAWIKI' ) ) {
*
* @ingroup Skins
*/
-class Skin extends Linker {
- /**#@+
- * @private
- */
- var $mWatchLinkNum = 0; // Appended to end of watch link id's
- // How many search boxes have we made? Avoid duplicate id's.
- protected $searchboxes = '';
- /**#@-*/
- protected $mRevisionId; // The revision ID we're looking at, null if not applicable.
+abstract class Skin extends ContextSource {
protected $skinname = 'standard';
- // @todo Fixme: should be protected :-\
- var $mTitle = null;
-
- /** Constructor, call parent constructor */
- function __construct() {
- parent::__construct();
- }
+ protected $mRelevantTitle = null;
+ protected $mRelevantUser = null;
/**
* Fetch the set of available skins.
@@ -41,7 +28,7 @@ class Skin extends Linker {
global $wgValidSkinNames;
static $skinsInitialised = false;
- if ( !$skinsInitialised ) {
+ if ( !$skinsInitialised || !count( $wgValidSkinNames ) ) {
# Get a list of available skins
# Build using the regular expression '^(.*).php$'
# Array keys are all lower case, array value keep the case used by filename
@@ -123,7 +110,7 @@ class Skin extends Linker {
if ( isset( $skinNames[$key] ) ) {
return $key;
- } else if ( isset( $skinNames[$wgDefaultSkin] ) ) {
+ } elseif ( isset( $skinNames[$wgDefaultSkin] ) ) {
return $wgDefaultSkin;
} else {
return 'vector';
@@ -142,27 +129,31 @@ class Skin extends Linker {
$skinNames = Skin::getSkinNames();
$skinName = $skinNames[$key];
- $className = 'Skin' . ucfirst( $key );
+ $className = "Skin{$skinName}";
# Grab the skin class and initialise it.
- if ( !class_exists( $className ) ) {
- // Preload base classes to work around APC/PHP5 bug
- $deps = "{$wgStyleDirectory}/{$skinName}.deps.php";
+ if ( !MWInit::classExists( $className ) ) {
- if ( file_exists( $deps ) ) {
- include_once( $deps );
+ if ( !defined( 'MW_COMPILED' ) ) {
+ // Preload base classes to work around APC/PHP5 bug
+ $deps = "{$wgStyleDirectory}/{$skinName}.deps.php";
+ if ( file_exists( $deps ) ) {
+ include_once( $deps );
+ }
+ require_once( "{$wgStyleDirectory}/{$skinName}.php" );
}
- require_once( "{$wgStyleDirectory}/{$skinName}.php" );
# Check if we got if not failback to default skin
- if ( !class_exists( $className ) ) {
+ if ( !MWInit::classExists( $className ) ) {
# DO NOT die if the class isn't found. This breaks maintenance
# scripts and can cause a user account to be unrecoverable
# except by SQL manipulation if a previously valid skin name
# is no longer valid.
wfDebug( "Skin class does not exist: $className\n" );
$className = 'SkinVector';
- require_once( "{$wgStyleDirectory}/Vector.php" );
+ if ( !defined( 'MW_COMPILED' ) ) {
+ require_once( "{$wgStyleDirectory}/Vector.php" );
+ }
}
}
$skin = new $className;
@@ -179,60 +170,11 @@ class Skin extends Linker {
return $this->skinname;
}
- function qbSetting() {
- global $wgOut, $wgUser;
-
- if ( $wgOut->isQuickbarSuppressed() ) {
- return 0;
- }
-
- $q = $wgUser->getOption( 'quickbar', 0 );
-
- return $q;
- }
-
function initPage( OutputPage $out ) {
- global $wgFavicon, $wgAppleTouchIcon, $wgEnableAPI;
-
wfProfileIn( __METHOD__ );
- # Generally the order of the favicon and apple-touch-icon links
- # should not matter, but Konqueror (3.5.9 at least) incorrectly
- # uses whichever one appears later in the HTML source. Make sure
- # apple-touch-icon is specified first to avoid this.
- if ( false !== $wgAppleTouchIcon ) {
- $out->addLink( array( 'rel' => 'apple-touch-icon', 'href' => $wgAppleTouchIcon ) );
- }
-
- if ( false !== $wgFavicon ) {
- $out->addLink( array( 'rel' => 'shortcut icon', 'href' => $wgFavicon ) );
- }
-
- # OpenSearch description link
- $out->addLink( array(
- 'rel' => 'search',
- 'type' => 'application/opensearchdescription+xml',
- 'href' => wfScript( 'opensearch_desc' ),
- 'title' => wfMsgForContent( 'opensearch-desc' ),
- ) );
-
- if ( $wgEnableAPI ) {
- # Real Simple Discovery link, provides auto-discovery information
- # for the MediaWiki API (and potentially additional custom API
- # support such as WordPress or Twitter-compatible APIs for a
- # blogging extension, etc)
- $out->addLink( array(
- 'rel' => 'EditURI',
- 'type' => 'application/rsd+xml',
- 'href' => wfExpandUrl( wfAppendQuery( wfScript( 'api' ), array( 'action' => 'rsd' ) ) ),
- ) );
- }
-
- $this->addMetadataLinks( $out );
-
- $this->mRevisionId = $out->mRevisionId;
-
$this->preloadExistence();
+ $this->setMembers();
wfProfileOut( __METHOD__ );
}
@@ -241,18 +183,18 @@ class Skin extends Linker {
* Preload the existence of three commonly-requested pages in a single query
*/
function preloadExistence() {
- global $wgUser;
+ $user = $this->getUser();
// User/talk link
- $titles = array( $wgUser->getUserPage(), $wgUser->getTalkPage() );
+ $titles = array( $user->getUserPage(), $user->getTalkPage() );
// Other tab link
- if ( $this->mTitle->getNamespace() == NS_SPECIAL ) {
+ if ( $this->getTitle()->getNamespace() == NS_SPECIAL ) {
// nothing
- } elseif ( $this->mTitle->isTalkPage() ) {
- $titles[] = $this->mTitle->getSubjectPage();
+ } elseif ( $this->getTitle()->isTalkPage() ) {
+ $titles[] = $this->getTitle()->getSubjectPage();
} else {
- $titles[] = $this->mTitle->getTalkPage();
+ $titles[] = $this->getTitle()->getTalkPage();
}
$lb = new LinkBatch( $titles );
@@ -261,147 +203,100 @@ class Skin extends Linker {
}
/**
- * Adds metadata links below to the HTML output.
- * <ol>
- * <li>Creative Commons
- * <br />See http://wiki.creativecommons.org/Extend_Metadata.
- * </li>
- * <li>Dublin Core</li>
- * <li>Use hreflang to specify canonical and alternate links
- * <br />See http://www.google.com/support/webmasters/bin/answer.py?answer=189077
- * </li>
- * <li>Copyright</li>
- * <ol>
- *
- * @param $out Object: instance of OutputPage
+ * Set some local variables
*/
- function addMetadataLinks( OutputPage $out ) {
- global $wgEnableDublinCoreRdf, $wgEnableCreativeCommonsRdf;
- global $wgDisableLangConversion, $wgCanonicalLanguageLinks, $wgContLang;
- global $wgRightsPage, $wgRightsUrl;
-
- if ( $out->isArticleRelated() ) {
- # note: buggy CC software only reads first "meta" link
- if ( $wgEnableCreativeCommonsRdf ) {
- $out->addMetadataLink( array(
- 'title' => 'Creative Commons',
- 'type' => 'application/rdf+xml',
- 'href' => $this->mTitle->getLocalURL( 'action=creativecommons' ) )
- );
- }
-
- if ( $wgEnableDublinCoreRdf ) {
- $out->addMetadataLink( array(
- 'title' => 'Dublin Core',
- 'type' => 'application/rdf+xml',
- 'href' => $this->mTitle->getLocalURL( 'action=dublincore' ) )
- );
- }
- }
-
- if ( !$wgDisableLangConversion && $wgCanonicalLanguageLinks
- && $wgContLang->hasVariants() ) {
-
- $urlvar = $wgContLang->getURLVariant();
-
- if ( !$urlvar ) {
- $variants = $wgContLang->getVariants();
- foreach ( $variants as $_v ) {
- $out->addLink( array(
- 'rel' => 'alternate',
- 'hreflang' => $_v,
- 'href' => $this->mTitle->getLocalURL( '', $_v ) )
- );
- }
- } else {
- $out->addLink( array(
- 'rel' => 'canonical',
- 'href' => $this->mTitle->getFullURL() )
- );
- }
- }
-
- $copyright = '';
- if ( $wgRightsPage ) {
- $copy = Title::newFromText( $wgRightsPage );
-
- if ( $copy ) {
- $copyright = $copy->getLocalURL();
- }
- }
-
- if ( !$copyright && $wgRightsUrl ) {
- $copyright = $wgRightsUrl;
- }
+ protected function setMembers() {
+ $this->userpage = $this->getUser()->getUserPage()->getPrefixedText();
+ }
- if ( $copyright ) {
- $out->addLink( array(
- 'rel' => 'copyright',
- 'href' => $copyright )
- );
- }
+ /**
+ * Get the current revision ID
+ *
+ * @return Integer
+ */
+ public function getRevisionId() {
+ return $this->getOutput()->getRevisionId();
}
/**
- * Set some local variables
+ * Whether the revision displayed is the latest revision of the page
+ *
+ * @return Boolean
*/
- protected function setMembers() {
- global $wgUser;
- $this->mUser = $wgUser;
- $this->userpage = $wgUser->getUserPage()->getPrefixedText();
- $this->usercss = false;
+ public function isRevisionCurrent() {
+ $revID = $this->getRevisionId();
+ return $revID == 0 || $revID == $this->getTitle()->getLatestRevID();
}
/**
- * Set the title
+ * Set the "relevant" title
+ * @see self::getRelevantTitle()
* @param $t Title object to use
*/
- public function setTitle( $t ) {
- $this->mTitle = $t;
+ public function setRelevantTitle( $t ) {
+ $this->mRelevantTitle = $t;
}
- /** Get the title */
- public function getTitle() {
- return $this->mTitle;
+ /**
+ * Return the "relevant" title.
+ * A "relevant" title is not necessarily the actual title of the page.
+ * Special pages like Special:MovePage use set the page they are acting on
+ * as their "relevant" title, this allows the skin system to display things
+ * such as content tabs which belong to to that page instead of displaying
+ * a basic special page tab which has almost no meaning.
+ *
+ * @return Title
+ */
+ public function getRelevantTitle() {
+ if ( isset($this->mRelevantTitle) ) {
+ return $this->mRelevantTitle;
+ }
+ return $this->getTitle();
}
/**
- * Outputs the HTML generated by other functions.
- * @param $out Object: instance of OutputPage
+ * Set the "relevant" user
+ * @see self::getRelevantUser()
+ * @param $u User object to use
*/
- function outputPage( OutputPage $out ) {
- global $wgDebugComments;
- wfProfileIn( __METHOD__ );
-
- $this->setMembers();
- $this->initPage( $out );
-
- // See self::afterContentHook() for documentation
- $afterContent = $this->afterContentHook();
-
- $out->out( $out->headElement( $this ) );
+ public function setRelevantUser( $u ) {
+ $this->mRelevantUser = $u;
+ }
- if ( $wgDebugComments ) {
- $out->out( "<!-- Wiki debugging output:\n" .
- $out->mDebugtext . "-->\n" );
+ /**
+ * Return the "relevant" user.
+ * A "relevant" user is similar to a relevant title. Special pages like
+ * Special:Contributions mark the user which they are relevant to so that
+ * things like the toolbox can display the information they usually are only
+ * able to display on a user's userpage and talkpage.
+ * @return User
+ */
+ public function getRelevantUser() {
+ if ( isset($this->mRelevantUser) ) {
+ return $this->mRelevantUser;
+ }
+ $title = $this->getRelevantTitle();
+ if( $title->getNamespace() == NS_USER || $title->getNamespace() == NS_USER_TALK ) {
+ $rootUser = strtok( $title->getText(), '/' );
+ if ( User::isIP( $rootUser ) ) {
+ $this->mRelevantUser = User::newFromName( $rootUser, false );
+ } else {
+ $user = User::newFromName( $rootUser, false );
+ if ( $user->isLoggedIn() ) {
+ $this->mRelevantUser = $user;
+ }
+ }
+ return $this->mRelevantUser;
}
-
- $out->out( $this->beforeContent() );
-
- $out->out( $out->mBodytext . "\n" );
-
- $out->out( $this->afterContent() );
-
- $out->out( $afterContent );
-
- $out->out( $this->bottomScripts( $out ) );
-
- $out->out( wfReportTime() );
-
- $out->out( "\n</body></html>" );
- wfProfileOut( __METHOD__ );
+ return null;
}
+ /**
+ * Outputs the HTML generated by other functions.
+ * @param $out OutputPage
+ */
+ abstract function outputPage( OutputPage $out );
+
static function makeVariablesScript( $data ) {
if ( $data ) {
return Html::inlineScript(
@@ -409,50 +304,7 @@ class Skin extends Linker {
);
} else {
return '';
- }
- }
-
- /**
- * Make a <script> tag containing global variables
- * @param $skinName string Name of the skin
- * The odd calling convention is for backwards compatibility
- * @todo FIXME: Make this not depend on $wgTitle!
- *
- * Do not add things here which can be evaluated in ResourceLoaderStartupScript - in other words, without state.
- * You will only be adding bloat to the page and causing page caches to have to be purged on configuration changes.
- */
- static function makeGlobalVariablesScript( $skinName ) {
- global $wgTitle, $wgUser, $wgRequest, $wgArticle, $wgOut, $wgUseAjax, $wgEnableMWSuggest;
-
- $ns = $wgTitle->getNamespace();
- $nsname = MWNamespace::exists( $ns ) ? MWNamespace::getCanonicalName( $ns ) : $wgTitle->getNsText();
- $vars = array(
- 'wgCanonicalNamespace' => $nsname,
- 'wgCanonicalSpecialPageName' => $ns == NS_SPECIAL ?
- SpecialPage::resolveAlias( $wgTitle->getDBkey() ) : false, # bug 21115
- 'wgNamespaceNumber' => $wgTitle->getNamespace(),
- 'wgPageName' => $wgTitle->getPrefixedDBKey(),
- 'wgTitle' => $wgTitle->getText(),
- 'wgAction' => $wgRequest->getText( 'action', 'view' ),
- 'wgArticleId' => $wgTitle->getArticleId(),
- 'wgIsArticle' => $wgOut->isArticle(),
- 'wgUserName' => $wgUser->isAnon() ? null : $wgUser->getName(),
- 'wgUserGroups' => $wgUser->getEffectiveGroups(),
- 'wgCurRevisionId' => isset( $wgArticle ) ? $wgArticle->getLatest() : 0,
- 'wgCategories' => $wgOut->getCategories(),
- 'wgBreakFrames' => $wgOut->getFrameOptions() == 'DENY',
- );
- foreach ( $wgTitle->getRestrictionTypes() as $type ) {
- $vars['wgRestriction' . ucfirst( $type )] = $wgTitle->getRestrictions( $type );
}
- if ( $wgUseAjax && $wgEnableMWSuggest && !$wgUser->getOption( 'disablesuggest', false ) ) {
- $vars['wgSearchNamespaces'] = SearchEngine::userNamespaces( $wgUser );
- }
-
- // Allow extensions to add their custom variables to the global JS variables
- wfRunHooks( 'MakeGlobalVariablesScript', array( &$vars ) );
-
- return self::makeVariablesScript( $vars );
}
/**
@@ -466,72 +318,54 @@ class Skin extends Linker {
* @return bool
*/
public function userCanPreview( $action ) {
- global $wgRequest, $wgUser;
-
if ( $action != 'submit' ) {
return false;
}
- if ( !$wgRequest->wasPosted() ) {
+ if ( !$this->getRequest()->wasPosted() ) {
return false;
}
- if ( !$this->mTitle->userCanEditCssSubpage() ) {
+ if ( !$this->getTitle()->userCanEditCssSubpage() ) {
return false;
}
- if ( !$this->mTitle->userCanEditJsSubpage() ) {
+ if ( !$this->getTitle()->userCanEditJsSubpage() ) {
return false;
}
- return $wgUser->matchEditToken(
- $wgRequest->getVal( 'wpEditToken' ) );
+ return $this->getUser()->matchEditToken(
+ $this->getRequest()->getVal( 'wpEditToken' ) );
}
/**
* Generated JavaScript action=raw&gen=js
- * This returns MediaWiki:Common.js and MediaWiki:[Skinname].js concate-
- * nated together. For some bizarre reason, it does *not* return any
- * custom user JS from subpages. Huh?
- *
- * There's absolutely no reason to have separate Monobook/Common JSes.
- * Any JS that cares can just check the skin variable generated at the
- * top. For now Monobook.js will be maintained, but it should be consi-
- * dered deprecated.
+ * This used to load MediaWiki:Common.js and the skin-specific style
+ * before the ResourceLoader.
*
+ * @deprecated since 1.18 Use the ResourceLoader instead. This may be removed at some
+ * point.
* @param $skinName String: If set, overrides the skin name
- * @return string
+ * @return String
*/
public function generateUserJs( $skinName = null ) {
-
- // Stub - see ResourceLoaderSiteModule, CologneBlue, Simple and Standard skins override this
-
return '';
}
/**
* Generate user stylesheet for action=raw&gen=css
+ *
+ * @deprecated since 1.18 Use the ResourceLoader instead. This may be removed at some
+ * point.
+ * @return String
*/
public function generateUserStylesheet() {
-
- // Stub - see ResourceLoaderUserModule, CologneBlue, Simple and Standard skins override this
-
- return '';
- }
-
- /**
- * Split for easier subclassing in SkinSimple, SkinStandard and SkinCologneBlue
- * Anything in here won't be generated if $wgAllowUserCssPrefs is false.
- */
- protected function reallyGenerateUserStylesheet() {
-
- // Stub - see ResourceLoaderUserModule, CologneBlue, Simple and Standard skins override this
-
return '';
}
/**
* @private
+ * @todo document
+ * @param $out OutputPage
*/
function setupUserCss( OutputPage $out ) {
- global $wgRequest;
global $wgUseSiteCss, $wgAllowUserCss, $wgAllowUserCssPrefs;
wfProfileIn( __METHOD__ );
@@ -544,14 +378,17 @@ class Skin extends Linker {
// Per-site custom styles
if ( $wgUseSiteCss ) {
- $out->addModuleStyles( 'site' );
+ $out->addModuleStyles( array( 'site', 'noscript' ) );
+ if( $this->getUser()->isLoggedIn() ){
+ $out->addModuleStyles( 'user.groups' );
+ }
}
// Per-user custom styles
if ( $wgAllowUserCss ) {
- if ( $this->mTitle->isCssSubpage() && $this->userCanPreview( $wgRequest->getVal( 'action' ) ) ) {
- // @FIXME: properly escape the cdata!
- $out->addInlineStyle( $wgRequest->getText( 'wpTextbox1' ) );
+ if ( $this->getTitle()->isCssSubpage() && $this->userCanPreview( $this->getRequest()->getVal( 'action' ) ) ) {
+ // @todo FIXME: Properly escape the cdata!
+ $out->addInlineStyle( $this->getRequest()->getText( 'wpTextbox1' ) );
} else {
$out->addModuleStyles( 'user' );
}
@@ -584,21 +421,32 @@ class Skin extends Linker {
/**
* Add skin specific stylesheets
+ * Calling this method with an $out of anything but the same OutputPage
+ * inside ->getOutput() is deprecated. The $out arg is kept
+ * for compatibility purposes with skins.
* @param $out OutputPage
+ * @delete
*/
- function setupSkinUserCss( OutputPage $out ) {
- $out->addModuleStyles( 'mediawiki.legacy.shared' );
- $out->addModuleStyles( 'mediawiki.legacy.oldshared' );
- // TODO: When converting old skins to use ResourceLoader (or removing them) the following should be reconsidered
- $out->addStyle( $this->getStylesheet() );
- $out->addStyle( 'common/common_rtl.css', '', '', 'rtl' );
- }
+ abstract function setupSkinUserCss( OutputPage $out );
+ /**
+ * TODO: document
+ * @param $title Title
+ * @return String
+ */
function getPageClasses( $title ) {
+ global $wgRequest;
$numeric = 'ns-' . $title->getNamespace();
if ( $title->getNamespace() == NS_SPECIAL ) {
$type = 'ns-special';
+ // bug 23315: provide a class based on the canonical special page name without subpages
+ list( $canonicalName ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
+ if ( $canonicalName ) {
+ $type .= ' ' . Sanitizer::escapeClass( "mw-special-$canonicalName" );
+ } else {
+ $type .= ' mw-invalidspecialpage';
+ }
} elseif ( $title->isTalkPage() ) {
$type = 'ns-talk';
} else {
@@ -606,14 +454,21 @@ class Skin extends Linker {
}
$name = Sanitizer::escapeClass( 'page-' . $title->getPrefixedText() );
-
- return "$numeric $type $name";
+
+ if ( $wgRequest->getVal('action') ) {
+ $action = 'action-' . $wgRequest->getVal('action');
+ } else {
+ $action = 'action-view';
+ }
+ return "$numeric $type $name $action";
}
/**
* This will be called by OutputPage::headElement when it is creating the
* <body> tag, skins can override it if they have a need to add in any
* body attributes or classes of their own.
+ * @param $out OutputPage
+ * @param $bodyAttrs Array
*/
function addToBodyAttributes( $out, &$bodyAttrs ) {
// does nothing by default
@@ -621,124 +476,43 @@ class Skin extends Linker {
/**
* URL to the logo
+ * @return String
*/
function getLogo() {
global $wgLogo;
return $wgLogo;
}
- /**
- * This will be called immediately after the <body> tag. Split into
- * two functions to make it easier to subclass.
- */
- function beforeContent() {
- return $this->doBeforeContent();
- }
-
- function doBeforeContent() {
- global $wgContLang;
- wfProfileIn( __METHOD__ );
-
- $s = '';
- $qb = $this->qbSetting();
-
- $langlinks = $this->otherLanguages();
- if ( $langlinks ) {
- $rows = 2;
- $borderhack = '';
- } else {
- $rows = 1;
- $langlinks = false;
- $borderhack = 'class="top"';
- }
-
- $s .= "\n<div id='content'>\n<div id='topbar'>\n" .
- "<table border='0' cellspacing='0' width='98%'>\n<tr>\n";
-
- $shove = ( $qb != 0 );
- $left = ( $qb == 1 || $qb == 3 );
-
- if ( $wgContLang->isRTL() ) {
- $left = !$left;
- }
-
- if ( !$shove ) {
- $s .= "<td class='top' align='left' valign='top' rowspan='{$rows}'>\n" .
- $this->logoText() . '</td>';
- } elseif ( $left ) {
- $s .= $this->getQuickbarCompensator( $rows );
- }
-
- $l = $wgContLang->alignStart();
- $s .= "<td {$borderhack} align='$l' valign='top'>\n";
-
- $s .= $this->topLinks();
- $s .= '<p class="subtitle">' . $this->pageTitleLinks() . "</p>\n";
-
- $r = $wgContLang->alignEnd();
- $s .= "</td>\n<td {$borderhack} valign='top' align='$r' nowrap='nowrap'>";
- $s .= $this->nameAndLogin();
- $s .= "\n<br />" . $this->searchForm() . '</td>';
-
- if ( $langlinks ) {
- $s .= "</tr>\n<tr>\n<td class='top' colspan=\"2\">$langlinks</td>\n";
- }
-
- if ( $shove && !$left ) { # Right
- $s .= $this->getQuickbarCompensator( $rows );
- }
-
- $s .= "</tr>\n</table>\n</div>\n";
- $s .= "\n<div id='article'>\n";
-
- $notice = wfGetSiteNotice();
-
- if ( $notice ) {
- $s .= "\n<div id='siteNotice'>$notice</div>\n";
- }
- $s .= $this->pageTitle();
- $s .= $this->pageSubtitle();
- $s .= $this->getCategories();
-
- wfProfileOut( __METHOD__ );
- return $s;
- }
-
function getCategoryLinks() {
- global $wgOut, $wgUseCategoryBrowser;
- global $wgContLang, $wgUser;
+ global $wgUseCategoryBrowser;
+
+ $out = $this->getOutput();
- if ( count( $wgOut->mCategoryLinks ) == 0 ) {
+ if ( count( $out->mCategoryLinks ) == 0 ) {
return '';
}
- # Separator
- $sep = wfMsgExt( 'catseparator', array( 'parsemag', 'escapenoentities' ) );
+ $embed = "<li>";
+ $pop = "</li>";
- // Use Unicode bidi embedding override characters,
- // to make sure links don't smash each other up in ugly ways.
- $dir = $wgContLang->getDir();
- $embed = "<span dir='$dir'>";
- $pop = '</span>';
-
- $allCats = $wgOut->getCategoryLinks();
+ $allCats = $out->getCategoryLinks();
$s = '';
$colon = wfMsgExt( 'colon-separator', 'escapenoentities' );
if ( !empty( $allCats['normal'] ) ) {
- $t = $embed . implode( "{$pop} {$sep} {$embed}" , $allCats['normal'] ) . $pop;
+ $t = $embed . implode( "{$pop}{$embed}" , $allCats['normal'] ) . $pop;
$msg = wfMsgExt( 'pagecategories', array( 'parsemag', 'escapenoentities' ), count( $allCats['normal'] ) );
$s .= '<div id="mw-normal-catlinks">' .
- $this->link( Title::newFromText( wfMsgForContent( 'pagecategorieslink' ) ), $msg )
- . $colon . $t . '</div>';
+ Linker::link( Title::newFromText( wfMsgForContent( 'pagecategorieslink' ) ), $msg )
+ . $colon . '<ul>' . $t . '</ul>' . '</div>';
}
# Hidden categories
if ( isset( $allCats['hidden'] ) ) {
- if ( $wgUser->getBoolOption( 'showhiddencats' ) ) {
+ if ( $this->getUser()->getBoolOption( 'showhiddencats' ) ) {
$class = 'mw-hidden-cats-user-shown';
- } elseif ( $this->mTitle->getNamespace() == NS_CATEGORY ) {
+ } elseif ( $this->getTitle()->getNamespace() == NS_CATEGORY ) {
$class = 'mw-hidden-cats-ns-shown';
} else {
$class = 'mw-hidden-cats-hidden';
@@ -746,7 +520,7 @@ class Skin extends Linker {
$s .= "<div id=\"mw-hidden-catlinks\" class=\"$class\">" .
wfMsgExt( 'hidden-categories', array( 'parsemag', 'escapenoentities' ), count( $allCats['hidden'] ) ) .
- $colon . $embed . implode( "$pop $sep $embed", $allCats['hidden'] ) . $pop .
+ $colon . '<ul>' . $embed . implode( "{$pop}{$embed}" , $allCats['hidden'] ) . $pop . '</ul>' .
'</div>';
}
@@ -756,10 +530,10 @@ class Skin extends Linker {
$s .= '<br /><hr />';
# get a big array of the parents tree
- $parenttree = $this->mTitle->getParentCategoryTree();
+ $parenttree = $this->getTitle()->getParentCategoryTree();
# Skin object passed by reference cause it can not be
# accessed under the method subfunction drawCategoryBrowser
- $tempout = explode( "\n", $this->drawCategoryBrowser( $parenttree, $this ) );
+ $tempout = explode( "\n", $this->drawCategoryBrowser( $parenttree ) );
# Clean out bogus first entry and sort them
unset( $tempout[0] );
asort( $tempout );
@@ -773,10 +547,9 @@ class Skin extends Linker {
/**
* Render the array as a serie of links.
* @param $tree Array: categories tree returned by Title::getParentCategoryTree
- * @param &skin Object: skin passed by reference
* @return String separated by &gt;, terminate with "\n"
*/
- function drawCategoryBrowser( $tree, &$skin ) {
+ function drawCategoryBrowser( $tree ) {
$return = '';
foreach ( $tree as $element => $parent ) {
@@ -785,28 +558,28 @@ class Skin extends Linker {
$return .= "\n";
} else {
# grab the others elements
- $return .= $this->drawCategoryBrowser( $parent, $skin ) . ' &gt; ';
+ $return .= $this->drawCategoryBrowser( $parent ) . ' &gt; ';
}
# add our current element to the list
$eltitle = Title::newFromText( $element );
- $return .= $skin->link( $eltitle, $eltitle->getText() );
+ $return .= Linker::link( $eltitle, $eltitle->getText() );
}
return $return;
}
function getCategories() {
+ $out = $this->getOutput();
+
$catlinks = $this->getCategoryLinks();
$classes = 'catlinks';
- global $wgOut, $wgUser;
-
// Check what we're showing
- $allCats = $wgOut->getCategoryLinks();
- $showHidden = $wgUser->getBoolOption( 'showhiddencats' ) ||
- $this->mTitle->getNamespace() == NS_CATEGORY;
+ $allCats = $out->getCategoryLinks();
+ $showHidden = $this->getUser()->getBoolOption( 'showhiddencats' ) ||
+ $this->getTitle()->getNamespace() == NS_CATEGORY;
if ( empty( $allCats['normal'] ) && !( !empty( $allCats['hidden'] ) && $showHidden ) ) {
$classes .= ' catlinks-allhidden';
@@ -815,10 +588,6 @@ class Skin extends Linker {
return "<div id='catlinks' class='$classes'>{$catlinks}</div>";
}
- function getQuickbarCompensator( $rows = 1 ) {
- return "<td width='152' rowspan='{$rows}'>&#160;</td>";
- }
-
/**
* This runs a hook to allow extensions placing their stuff after content
* and article metadata (e.g. categories).
@@ -831,7 +600,7 @@ class Skin extends Linker {
* The output of this function gets processed in SkinTemplate::outputPage() for
* the SkinTemplate based skins, all other skins should directly echo it.
*
- * Returns an empty string by default, if not changed by any hook function.
+ * @return String, empty by default, if not changed by any hook function.
*/
protected function afterContentHook() {
$data = '';
@@ -860,11 +629,11 @@ class Skin extends Linker {
* @return String HTML containing debug data, if enabled (otherwise empty).
*/
protected function generateDebugHTML() {
- global $wgShowDebug, $wgOut;
+ global $wgShowDebug;
if ( $wgShowDebug ) {
- $listInternals = $this->formatDebugHTML( $wgOut->mDebugtext );
- return "\n<hr />\n<strong>Debug data:</strong><ul style=\"font-family:monospace;\" id=\"mw-debug-html\">" .
+ $listInternals = $this->formatDebugHTML( $this->getOutput()->mDebugtext );
+ return "\n<hr />\n<strong>Debug data:</strong><ul id=\"mw-debug-html\">" .
$listInternals . "</ul>\n";
}
@@ -872,15 +641,26 @@ class Skin extends Linker {
}
private function formatDebugHTML( $debugText ) {
+ global $wgDebugTimestamps;
+
$lines = explode( "\n", $debugText );
$curIdent = 0;
$ret = '<li>';
foreach ( $lines as $line ) {
+ $pre = '';
+ if ( $wgDebugTimestamps ) {
+ $matches = array();
+ if ( preg_match( '/^(\d+\.\d+\s{2})/', $line, $matches ) ) {
+ $pre = $matches[1];
+ $line = substr( $line, strlen( $pre ) );
+ }
+ }
$display = ltrim( $line );
$ident = strlen( $line ) - strlen( $display );
$diff = $ident - $curIdent;
+ $display = $pre . $display;
if ( $display == '' ) {
$display = "\xc2\xa0";
}
@@ -900,7 +680,7 @@ class Skin extends Linker {
} else {
$ret .= str_repeat( "<ul><li>\n", $diff );
}
- $ret .= $display . "\n";
+ $ret .= "<tt>$display</tt>\n";
$curIdent = $ident;
}
@@ -912,130 +692,46 @@ class Skin extends Linker {
/**
* This gets called shortly before the </body> tag.
- * @return String HTML to be put before </body>
- */
- function afterContent() {
- $printfooter = "<div class=\"printfooter\">\n" . $this->printFooter() . "</div>\n";
- return $printfooter . $this->generateDebugHTML() . $this->doAfterContent();
- }
-
- /**
- * This gets called shortly before the </body> tag.
* @param $out OutputPage object
* @return String HTML-wrapped JS code to be put before </body>
*/
function bottomScripts( $out ) {
- $bottomScriptText = "\n" . $out->getHeadScripts( $this );
+ // TODO and the suckage continues. This function is really just a wrapper around
+ // OutputPage::getBottomScripts() which takes a Skin param. This should be cleaned
+ // up at some point
+ $bottomScriptText = $out->getBottomScripts( $this );
wfRunHooks( 'SkinAfterBottomScripts', array( $this, &$bottomScriptText ) );
return $bottomScriptText;
}
- /** @return string Retrievied from HTML text */
+ /**
+ * Text with the permalink to the source page,
+ * usually shown on the footer of a printed page
+ *
+ * @return string HTML text with an URL
+ */
function printSource() {
- $url = htmlspecialchars( $this->mTitle->getFullURL() );
- return wfMsg( 'retrievedfrom', '<a href="' . $url . '">' . $url . '</a>' );
- }
-
- function printFooter() {
- return "<p>" . $this->printSource() .
- "</p>\n\n<p>" . $this->pageStats() . "</p>\n";
- }
-
- /** overloaded by derived classes */
- function doAfterContent() {
- return '</div></div>';
- }
-
- function pageTitleLinks() {
- global $wgOut, $wgUser, $wgRequest, $wgLang;
-
- $oldid = $wgRequest->getVal( 'oldid' );
- $diff = $wgRequest->getVal( 'diff' );
- $action = $wgRequest->getText( 'action' );
-
- $s[] = $this->printableLink();
- $disclaimer = $this->disclaimerLink(); # may be empty
-
- if ( $disclaimer ) {
- $s[] = $disclaimer;
- }
-
- $privacy = $this->privacyLink(); # may be empty too
-
- if ( $privacy ) {
- $s[] = $privacy;
- }
-
- if ( $wgOut->isArticleRelated() ) {
- if ( $this->mTitle->getNamespace() == NS_FILE ) {
- $name = $this->mTitle->getDBkey();
- $image = wfFindFile( $this->mTitle );
-
- if ( $image ) {
- $link = htmlspecialchars( $image->getURL() );
- $style = $this->getInternalLinkAttributes( $link, $name );
- $s[] = "<a href=\"{$link}\"{$style}>{$name}</a>";
- }
- }
- }
-
- if ( 'history' == $action || isset( $diff ) || isset( $oldid ) ) {
- $s[] .= $this->link(
- $this->mTitle,
- wfMsg( 'currentrev' ),
- array(),
- array(),
- array( 'known', 'noclasses' )
- );
- }
-
- if ( $wgUser->getNewtalk() ) {
- # do not show "You have new messages" text when we are viewing our
- # own talk page
- if ( !$this->mTitle->equals( $wgUser->getTalkPage() ) ) {
- $tl = $this->link(
- $wgUser->getTalkPage(),
- wfMsgHtml( 'newmessageslink' ),
- array(),
- array( 'redirect' => 'no' ),
- array( 'known', 'noclasses' )
- );
-
- $dl = $this->link(
- $wgUser->getTalkPage(),
- wfMsgHtml( 'newmessagesdifflink' ),
- array(),
- array( 'diff' => 'cur' ),
- array( 'known', 'noclasses' )
- );
- $s[] = '<strong>' . wfMsg( 'youhavenewmessages', $tl, $dl ) . '</strong>';
- # disable caching
- $wgOut->setSquidMaxage( 0 );
- $wgOut->enableClientCache( false );
- }
- }
-
- $undelete = $this->getUndeleteLink();
-
- if ( !empty( $undelete ) ) {
- $s[] = $undelete;
+ $oldid = $this->getRevisionId();
+ if ( $oldid ) {
+ $url = htmlspecialchars( $this->getTitle()->getCanonicalURL( 'oldid=' . $oldid ) );
+ } else {
+ // oldid not available for non existing pages
+ $url = htmlspecialchars( $this->getTitle()->getCanonicalURL() );
}
-
- return $wgLang->pipeList( $s );
+ return wfMsg( 'retrievedfrom', '<a href="' . $url . '">' . $url . '</a>' );
}
function getUndeleteLink() {
- global $wgUser, $wgLang, $wgRequest;
+ $action = $this->getRequest()->getVal( 'action', 'view' );
- $action = $wgRequest->getVal( 'action', 'view' );
+ if ( $this->getUser()->isAllowed( 'deletedhistory' ) &&
+ ( $this->getTitle()->getArticleId() == 0 || $action == 'history' ) ) {
+ $n = $this->getTitle()->isDeleted();
- if ( $wgUser->isAllowed( 'deletedhistory' ) &&
- ( $this->mTitle->getArticleId() == 0 || $action == 'history' ) ) {
- $n = $this->mTitle->isDeleted();
if ( $n ) {
- if ( $wgUser->isAllowed( 'undelete' ) ) {
+ if ( $this->getUser()->isAllowed( 'undelete' ) ) {
$msg = 'thisisdeleted';
} else {
$msg = 'viewdeleted';
@@ -1043,9 +739,9 @@ class Skin extends Linker {
return wfMsg(
$msg,
- $this->link(
- SpecialPage::getTitleFor( 'Undelete', $this->mTitle->getPrefixedDBkey() ),
- wfMsgExt( 'restorelink', array( 'parsemag', 'escape' ), $wgLang->formatNum( $n ) ),
+ Linker::link(
+ SpecialPage::getTitleFor( 'Undelete', $this->getTitle()->getPrefixedDBkey() ),
+ wfMsgExt( 'restorelink', array( 'parsemag', 'escape' ), $this->getLang()->formatNum( $n ) ),
array(),
array(),
array( 'known', 'noclasses' )
@@ -1057,64 +753,16 @@ class Skin extends Linker {
return '';
}
- function printableLink() {
- global $wgOut, $wgFeedClasses, $wgRequest, $wgLang;
-
- $s = array();
-
- if ( !$wgOut->isPrintable() ) {
- $printurl = $wgRequest->escapeAppendQuery( 'printable=yes' );
- $s[] = "<a href=\"$printurl\" rel=\"alternate\">" . wfMsg( 'printableversion' ) . '</a>';
- }
-
- if ( $wgOut->isSyndicated() ) {
- foreach ( $wgFeedClasses as $format => $class ) {
- $feedurl = $wgRequest->escapeAppendQuery( "feed=$format" );
- $s[] = "<a href=\"$feedurl\" rel=\"alternate\" type=\"application/{$format}+xml\""
- . " class=\"feedlink\">" . wfMsgHtml( "feed-$format" ) . "</a>";
- }
- }
- return $wgLang->pipeList( $s );
- }
-
- /**
- * Gets the h1 element with the page title.
- * @return string
- */
- function pageTitle() {
- global $wgOut;
- $s = '<h1 class="pagetitle">' . $wgOut->getPageTitle() . '</h1>';
- return $s;
- }
-
- function pageSubtitle() {
- global $wgOut;
-
- $sub = $wgOut->getSubtitle();
-
- if ( $sub == '' ) {
- global $wgExtraSubtitle;
- $sub = wfMsgExt( 'tagline', 'parsemag' ) . $wgExtraSubtitle;
- }
-
- $subpages = $this->subPageSubtitle();
- $sub .= !empty( $subpages ) ? "</p><p class='subpages'>$subpages" : '';
- $s = "<p class='subtitle'>{$sub}</p>\n";
-
- return $s;
- }
-
function subPageSubtitle() {
+ $out = $this->getOutput();
$subpages = '';
- if ( !wfRunHooks( 'SkinSubPageSubtitle', array( &$subpages, $this ) ) ) {
+ if ( !wfRunHooks( 'SkinSubPageSubtitle', array( &$subpages, $this, $out ) ) ) {
return $subpages;
}
- global $wgOut;
-
- if ( $wgOut->isArticle() && MWNamespace::hasSubpages( $this->mTitle->getNamespace() ) ) {
- $ptext = $this->mTitle->getPrefixedText();
+ if ( $out->isArticle() && MWNamespace::hasSubpages( $out->getTitle()->getNamespace() ) ) {
+ $ptext = $this->getTitle()->getPrefixedText();
if ( preg_match( '/\//', $ptext ) ) {
$links = explode( '/', $ptext );
array_pop( $links );
@@ -1159,73 +807,13 @@ class Skin extends Linker {
/**
* Returns true if the IP should be shown in the header
+ * @return Bool
*/
function showIPinHeader() {
global $wgShowIPinHeader;
return $wgShowIPinHeader && session_id() != '';
}
- function nameAndLogin() {
- global $wgUser, $wgLang, $wgContLang;
-
- $logoutPage = $wgContLang->specialPage( 'Userlogout' );
-
- $ret = '';
-
- if ( $wgUser->isAnon() ) {
- if ( $this->showIPinHeader() ) {
- $name = wfGetIP();
-
- $talkLink = $this->link( $wgUser->getTalkPage(),
- $wgLang->getNsText( NS_TALK ) );
-
- $ret .= "$name ($talkLink)";
- } else {
- $ret .= wfMsg( 'notloggedin' );
- }
-
- $returnTo = $this->mTitle->getPrefixedDBkey();
- $query = array();
-
- if ( $logoutPage != $returnTo ) {
- $query['returnto'] = $returnTo;
- }
-
- $loginlink = $wgUser->isAllowed( 'createaccount' )
- ? 'nav-login-createaccount'
- : 'login';
- $ret .= "\n<br />" . $this->link(
- SpecialPage::getTitleFor( 'Userlogin' ),
- wfMsg( $loginlink ), array(), $query
- );
- } else {
- $returnTo = $this->mTitle->getPrefixedDBkey();
- $talkLink = $this->link( $wgUser->getTalkPage(),
- $wgLang->getNsText( NS_TALK ) );
-
- $ret .= $this->link( $wgUser->getUserPage(),
- htmlspecialchars( $wgUser->getName() ) );
- $ret .= " ($talkLink)<br />";
- $ret .= $wgLang->pipeList( array(
- $this->link(
- SpecialPage::getTitleFor( 'Userlogout' ), wfMsg( 'logout' ),
- array(), array( 'returnto' => $returnTo )
- ),
- $this->specialLink( 'Preferences' ),
- ) );
- }
-
- $ret = $wgLang->pipeList( array(
- $ret,
- $this->link(
- Title::newFromText( wfMsgForContent( 'helppage' ) ),
- wfMsg( 'help' )
- ),
- ) );
-
- return $ret;
- }
-
function getSearchLink() {
$searchPage = SpecialPage::getTitleFor( 'Search' );
return $searchPage->getLocalURL();
@@ -1235,246 +823,13 @@ class Skin extends Linker {
return htmlspecialchars( $this->getSearchLink() );
}
- function searchForm() {
- global $wgRequest, $wgUseTwoButtonsSearchForm;
-
- $search = $wgRequest->getText( 'search' );
-
- $s = '<form id="searchform' . $this->searchboxes . '" name="search" class="inline" method="post" action="'
- . $this->escapeSearchLink() . "\">\n"
- . '<input type="text" id="searchInput' . $this->searchboxes . '" name="search" size="19" value="'
- . htmlspecialchars( substr( $search, 0, 256 ) ) . "\" />\n"
- . '<input type="submit" name="go" value="' . wfMsg( 'searcharticle' ) . '" />';
-
- if ( $wgUseTwoButtonsSearchForm ) {
- $s .= '&#160;<input type="submit" name="fulltext" value="' . wfMsg( 'searchbutton' ) . "\" />\n";
- } else {
- $s .= ' <a href="' . $this->escapeSearchLink() . '" rel="search">' . wfMsg( 'powersearch-legend' ) . "</a>\n";
- }
-
- $s .= '</form>';
-
- // Ensure unique id's for search boxes made after the first
- $this->searchboxes = $this->searchboxes == '' ? 2 : $this->searchboxes + 1;
-
- return $s;
- }
-
- function topLinks() {
- global $wgOut;
-
- $s = array(
- $this->mainPageLink(),
- $this->specialLink( 'Recentchanges' )
- );
-
- if ( $wgOut->isArticleRelated() ) {
- $s[] = $this->editThisPage();
- $s[] = $this->historyLink();
- }
-
- # Many people don't like this dropdown box
- # $s[] = $this->specialPagesList();
-
- if ( $this->variantLinks() ) {
- $s[] = $this->variantLinks();
- }
-
- if ( $this->extensionTabLinks() ) {
- $s[] = $this->extensionTabLinks();
- }
-
- // @todo FIXME: Is using Language::pipeList impossible here? Do not quite understand the use of the newline
- return implode( $s, wfMsgExt( 'pipe-separator', 'escapenoentities' ) . "\n" );
- }
-
- /**
- * Compatibility for extensions adding functionality through tabs.
- * Eventually these old skins should be replaced with SkinTemplate-based
- * versions, sigh...
- * @return string
- */
- function extensionTabLinks() {
- $tabs = array();
- $out = '';
- $s = array();
- wfRunHooks( 'SkinTemplateTabs', array( $this, &$tabs ) );
- foreach ( $tabs as $tab ) {
- $s[] = Xml::element( 'a',
- array( 'href' => $tab['href'] ),
- $tab['text'] );
- }
-
- if ( count( $s ) ) {
- global $wgLang;
-
- $out = wfMsgExt( 'pipe-separator' , 'escapenoentities' );
- $out .= $wgLang->pipeList( $s );
- }
-
- return $out;
- }
-
- /**
- * Language/charset variant links for classic-style skins
- * @return string
- */
- function variantLinks() {
- $s = '';
-
- /* show links to different language variants */
- global $wgDisableLangConversion, $wgLang, $wgContLang;
-
- $variants = $wgContLang->getVariants();
-
- if ( !$wgDisableLangConversion && sizeof( $variants ) > 1 ) {
- foreach ( $variants as $code ) {
- $varname = $wgContLang->getVariantname( $code );
-
- if ( $varname == 'disable' ) {
- continue;
- }
- $s = $wgLang->pipeList( array(
- $s,
- '<a href="' . $this->mTitle->escapeLocalURL( 'variant=' . $code ) . '">' . htmlspecialchars( $varname ) . '</a>'
- ) );
- }
- }
-
- return $s;
- }
-
- function bottomLinks() {
- global $wgOut, $wgUser, $wgUseTrackbacks;
- $sep = wfMsgExt( 'pipe-separator', 'escapenoentities' ) . "\n";
-
- $s = '';
- if ( $wgOut->isArticleRelated() ) {
- $element[] = '<strong>' . $this->editThisPage() . '</strong>';
-
- if ( $wgUser->isLoggedIn() ) {
- $element[] = $this->watchThisPage();
- }
-
- $element[] = $this->talkLink();
- $element[] = $this->historyLink();
- $element[] = $this->whatLinksHere();
- $element[] = $this->watchPageLinksLink();
-
- if ( $wgUseTrackbacks ) {
- $element[] = $this->trackbackLink();
- }
-
- if (
- $this->mTitle->getNamespace() == NS_USER ||
- $this->mTitle->getNamespace() == NS_USER_TALK
- ) {
- $id = User::idFromName( $this->mTitle->getText() );
- $ip = User::isIP( $this->mTitle->getText() );
-
- # Both anons and non-anons have contributions list
- if ( $id || $ip ) {
- $element[] = $this->userContribsLink();
- }
-
- if ( $this->showEmailUser( $id ) ) {
- $element[] = $this->emailUserLink();
- }
- }
-
- $s = implode( $element, $sep );
-
- if ( $this->mTitle->getArticleId() ) {
- $s .= "\n<br />";
-
- // Delete/protect/move links for privileged users
- if ( $wgUser->isAllowed( 'delete' ) ) {
- $s .= $this->deleteThisPage();
- }
-
- if ( $wgUser->isAllowed( 'protect' ) ) {
- $s .= $sep . $this->protectThisPage();
- }
-
- if ( $wgUser->isAllowed( 'move' ) ) {
- $s .= $sep . $this->moveThisPage();
- }
- }
-
- $s .= "<br />\n" . $this->otherLanguages();
- }
-
- return $s;
- }
-
- function pageStats() {
- global $wgOut, $wgLang, $wgArticle, $wgRequest, $wgUser;
- global $wgDisableCounters, $wgMaxCredits, $wgShowCreditsIfMax, $wgPageShowWatchingUsers;
-
- $oldid = $wgRequest->getVal( 'oldid' );
- $diff = $wgRequest->getVal( 'diff' );
-
- if ( !$wgOut->isArticle() ) {
- return '';
- }
-
- if ( !$wgArticle instanceof Article ) {
- return '';
- }
-
- if ( isset( $oldid ) || isset( $diff ) ) {
- return '';
- }
-
- if ( 0 == $wgArticle->getID() ) {
- return '';
- }
-
- $s = '';
-
- if ( !$wgDisableCounters ) {
- $count = $wgLang->formatNum( $wgArticle->getCount() );
-
- if ( $count ) {
- $s = wfMsgExt( 'viewcount', array( 'parseinline' ), $count );
- }
- }
-
- if ( $wgMaxCredits != 0 ) {
- $s .= ' ' . Credits::getCredits( $wgArticle, $wgMaxCredits, $wgShowCreditsIfMax );
- } else {
- $s .= $this->lastModified();
- }
-
- if ( $wgPageShowWatchingUsers && $wgUser->getOption( 'shownumberswatching' ) ) {
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select(
- 'watchlist',
- array( 'COUNT(*) AS n' ),
- array(
- 'wl_title' => $dbr->strencode( $this->mTitle->getDBkey() ),
- 'wl_namespace' => $this->mTitle->getNamespace()
- ),
- __METHOD__
- );
- $x = $dbr->fetchObject( $res );
-
- $s .= ' ' . wfMsgExt( 'number_of_watching_users_pageview',
- array( 'parseinline' ), $wgLang->formatNum( $x->n )
- );
- }
-
- return $s . ' ' . $this->getCopyright();
- }
-
function getCopyright( $type = 'detect' ) {
- global $wgRightsPage, $wgRightsUrl, $wgRightsText, $wgRequest, $wgArticle;
+ global $wgRightsPage, $wgRightsUrl, $wgRightsText;
if ( $type == 'detect' ) {
- $diff = $wgRequest->getVal( 'diff' );
- $isCur = $wgArticle && $wgArticle->isCurrent();
+ $diff = $this->getRequest()->getVal( 'diff' );
- if ( is_null( $diff ) && !$isCur && wfMsgForContent( 'history_copyright' ) !== '-' ) {
+ if ( is_null( $diff ) && !$this->isRevisionCurrent() && wfMsgForContent( 'history_copyright' ) !== '-' ) {
$type = 'history';
} else {
$type = 'normal';
@@ -1491,9 +846,9 @@ class Skin extends Linker {
if ( $wgRightsPage ) {
$title = Title::newFromText( $wgRightsPage );
- $link = $this->linkKnown( $title, $wgRightsText );
+ $link = Linker::linkKnown( $title, $wgRightsText );
} elseif ( $wgRightsUrl ) {
- $link = $this->makeExternalLink( $wgRightsUrl, $wgRightsText );
+ $link = Linker::makeExternalLink( $wgRightsUrl, $wgRightsText );
} elseif ( $wgRightsText ) {
$link = $wgRightsText;
} else {
@@ -1504,9 +859,7 @@ class Skin extends Linker {
// Allow for site and per-namespace customization of copyright notice.
$forContent = true;
- if ( isset( $wgArticle ) ) {
- wfRunHooks( 'SkinCopyrightFooter', array( $wgArticle->getTitle(), $type, &$msg, &$link, &$forContent ) );
- }
+ wfRunHooks( 'SkinCopyrightFooter', array( $this->getTitle(), $type, &$msg, &$link, &$forContent ) );
if ( $forContent ) {
$out .= wfMsgForContent( $msg, $link );
@@ -1552,22 +905,26 @@ class Skin extends Linker {
$url = htmlspecialchars( "$wgStylePath/common/images/poweredby_mediawiki_88x31.png" );
$text = '<a href="http://www.mediawiki.org/"><img src="' . $url . '" height="31" width="88" alt="Powered by MediaWiki" /></a>';
- wfRunHooks( 'SkinGetPoweredBy', array( &$text, $this ) );
+ wfRunHooks( 'SkinGetPoweredBy', array( &$text, $this ) );
return $text;
}
- function lastModified() {
- global $wgLang, $wgArticle;
-
- if ( $this->mRevisionId && $this->mRevisionId != $wgArticle->getLatest() ) {
- $timestamp = Revision::getTimestampFromId( $wgArticle->getTitle(), $this->mRevisionId );
+ /**
+ * Get the timestamp of the latest revision, formatted in user language
+ *
+ * @param $article Article object. Used if we're working with the current revision
+ * @return String
+ */
+ protected function lastModified( $article ) {
+ if ( !$this->isRevisionCurrent() ) {
+ $timestamp = Revision::getTimestampFromId( $this->getTitle(), $this->getRevisionId() );
} else {
- $timestamp = $wgArticle->getTimestamp();
+ $timestamp = $article->getTimestamp();
}
if ( $timestamp ) {
- $d = $wgLang->date( $timestamp, true );
- $t = $wgLang->time( $timestamp, true );
+ $d = $this->getLang()->date( $timestamp, true );
+ $t = $this->getLang()->time( $timestamp, true );
$s = ' ' . wfMsg( 'lastmodifiedat', $d, $t );
} else {
$s = '';
@@ -1598,43 +955,10 @@ class Skin extends Linker {
}
/**
- * Show a drop-down box of special pages
- */
- function specialPagesList() {
- global $wgContLang, $wgServer, $wgRedirectScript;
-
- $pages = array_merge( SpecialPage::getRegularPages(), SpecialPage::getRestrictedPages() );
-
- foreach ( $pages as $name => $page ) {
- $pages[$name] = $page->getDescription();
- }
-
- $go = wfMsg( 'go' );
- $sp = wfMsg( 'specialpages' );
- $spp = $wgContLang->specialPage( 'Specialpages' );
-
- $s = '<form id="specialpages" method="get" ' .
- 'action="' . htmlspecialchars( "{$wgServer}{$wgRedirectScript}" ) . "\">\n";
- $s .= "<select name=\"wpDropdown\">\n";
- $s .= "<option value=\"{$spp}\">{$sp}</option>\n";
-
-
- foreach ( $pages as $name => $desc ) {
- $p = $wgContLang->specialPage( $name );
- $s .= "<option value=\"{$p}\">{$desc}</option>\n";
- }
-
- $s .= "</select>\n";
- $s .= "<input type='submit' value=\"{$go}\" name='redirect' />\n";
- $s .= "</form>\n";
-
- return $s;
- }
-
- /**
* Renders a $wgFooterIcons icon acording to the method's arguments
* @param $icon Array: The icon to build the html for, see $wgFooterIcons for the format of this array
- * @param $withImage Boolean: Whether to use the icon's image or output a text-only footericon
+ * @param $withImage Bool|String: Whether to use the icon's image or output a text-only footericon
+ * @return String HTML
*/
function makeFooterIcon( $icon, $withImage = 'withImage' ) {
if ( is_string( $icon ) ) {
@@ -1659,7 +983,7 @@ class Skin extends Linker {
* @return string
*/
function mainPageLink() {
- $s = $this->link(
+ $s = Linker::link(
Title::newMainPage(),
wfMsg( 'mainpage' ),
array(),
@@ -1681,7 +1005,7 @@ class Skin extends Linker {
// but we make the link target be the one site-wide page.
$title = Title::newFromText( wfMsgForContent( $page ) );
- return $this->linkKnown(
+ return Linker::linkKnown(
$title,
wfMsgExt( $desc, array( 'parsemag', 'escapenoentities' ) )
);
@@ -1690,6 +1014,7 @@ class Skin extends Linker {
/**
* Gets the link to the wiki's privacy policy page.
+ * @return String HTML
*/
function privacyLink() {
return $this->footerLink( 'privacy', 'privacypage' );
@@ -1697,6 +1022,7 @@ class Skin extends Linker {
/**
* Gets the link to the wiki's about page.
+ * @return String HTML
*/
function aboutLink() {
return $this->footerLink( 'aboutsite', 'aboutpage' );
@@ -1704,37 +1030,12 @@ class Skin extends Linker {
/**
* Gets the link to the wiki's general disclaimers page.
+ * @return String HTML
*/
function disclaimerLink() {
return $this->footerLink( 'disclaimers', 'disclaimerpage' );
}
- function editThisPage() {
- global $wgOut;
-
- if ( !$wgOut->isArticleRelated() ) {
- $s = wfMsg( 'protectedpage' );
- } else {
- if ( $this->mTitle->quickUserCan( 'edit' ) && $this->mTitle->exists() ) {
- $t = wfMsg( 'editthispage' );
- } elseif ( $this->mTitle->quickUserCan( 'create' ) && !$this->mTitle->exists() ) {
- $t = wfMsg( 'create-this-page' );
- } else {
- $t = wfMsg( 'viewsource' );
- }
-
- $s = $this->link(
- $this->mTitle,
- $t,
- array(),
- $this->editUrlOptions(),
- array( 'known', 'noclasses' )
- );
- }
-
- return $s;
- }
-
/**
* Return URL options for the 'edit page' link.
* This may include an 'oldid' specifier, if the current page view is such.
@@ -1743,345 +1044,43 @@ class Skin extends Linker {
* @private
*/
function editUrlOptions() {
- global $wgArticle;
-
$options = array( 'action' => 'edit' );
- if ( $this->mRevisionId && ! $wgArticle->isCurrent() ) {
- $options['oldid'] = intval( $this->mRevisionId );
+ if ( !$this->isRevisionCurrent() ) {
+ $options['oldid'] = intval( $this->getRevisionId() );
}
return $options;
}
- function deleteThisPage() {
- global $wgUser, $wgRequest;
-
- $diff = $wgRequest->getVal( 'diff' );
-
- if ( $this->mTitle->getArticleId() && ( !$diff ) && $wgUser->isAllowed( 'delete' ) ) {
- $t = wfMsg( 'deletethispage' );
-
- $s = $this->link(
- $this->mTitle,
- $t,
- array(),
- array( 'action' => 'delete' ),
- array( 'known', 'noclasses' )
- );
- } else {
- $s = '';
- }
-
- return $s;
- }
-
- function protectThisPage() {
- global $wgUser, $wgRequest;
-
- $diff = $wgRequest->getVal( 'diff' );
-
- if ( $this->mTitle->getArticleId() && ( ! $diff ) && $wgUser->isAllowed( 'protect' ) ) {
- if ( $this->mTitle->isProtected() ) {
- $text = wfMsg( 'unprotectthispage' );
- $query = array( 'action' => 'unprotect' );
- } else {
- $text = wfMsg( 'protectthispage' );
- $query = array( 'action' => 'protect' );
- }
-
- $s = $this->link(
- $this->mTitle,
- $text,
- array(),
- $query,
- array( 'known', 'noclasses' )
- );
- } else {
- $s = '';
- }
-
- return $s;
- }
-
- function watchThisPage() {
- global $wgOut;
- ++$this->mWatchLinkNum;
-
- if ( $wgOut->isArticleRelated() ) {
- if ( $this->mTitle->userIsWatching() ) {
- $text = wfMsg( 'unwatchthispage' );
- $query = array( 'action' => 'unwatch' );
- $id = 'mw-unwatch-link' . $this->mWatchLinkNum;
- } else {
- $text = wfMsg( 'watchthispage' );
- $query = array( 'action' => 'watch' );
- $id = 'mw-watch-link' . $this->mWatchLinkNum;
- }
-
- $s = $this->link(
- $this->mTitle,
- $text,
- array( 'id' => $id ),
- $query,
- array( 'known', 'noclasses' )
- );
- } else {
- $s = wfMsg( 'notanarticle' );
- }
-
- return $s;
- }
-
- function moveThisPage() {
- if ( $this->mTitle->quickUserCan( 'move' ) ) {
- return $this->link(
- SpecialPage::getTitleFor( 'Movepage' ),
- wfMsg( 'movethispage' ),
- array(),
- array( 'target' => $this->mTitle->getPrefixedDBkey() ),
- array( 'known', 'noclasses' )
- );
- } else {
- // no message if page is protected - would be redundant
- return '';
- }
- }
-
- function historyLink() {
- return $this->link(
- $this->mTitle,
- wfMsgHtml( 'history' ),
- array( 'rel' => 'archives' ),
- array( 'action' => 'history' )
- );
- }
-
- function whatLinksHere() {
- return $this->link(
- SpecialPage::getTitleFor( 'Whatlinkshere', $this->mTitle->getPrefixedDBkey() ),
- wfMsgHtml( 'whatlinkshere' ),
- array(),
- array(),
- array( 'known', 'noclasses' )
- );
- }
-
- function userContribsLink() {
- return $this->link(
- SpecialPage::getTitleFor( 'Contributions', $this->mTitle->getDBkey() ),
- wfMsgHtml( 'contributions' ),
- array(),
- array(),
- array( 'known', 'noclasses' )
- );
- }
-
function showEmailUser( $id ) {
- global $wgUser;
$targetUser = User::newFromId( $id );
- return $wgUser->canSendEmail() && # the sending user must have a confirmed email address
+ return $this->getUser()->canSendEmail() && # the sending user must have a confirmed email address
$targetUser->canReceiveEmail(); # the target user must have a confirmed email address and allow emails from users
}
- function emailUserLink() {
- return $this->link(
- SpecialPage::getTitleFor( 'Emailuser', $this->mTitle->getDBkey() ),
- wfMsg( 'emailuser' ),
- array(),
- array(),
- array( 'known', 'noclasses' )
- );
- }
-
- function watchPageLinksLink() {
- global $wgOut;
-
- if ( !$wgOut->isArticleRelated() ) {
- return '(' . wfMsg( 'notanarticle' ) . ')';
- } else {
- return $this->link(
- SpecialPage::getTitleFor( 'Recentchangeslinked', $this->mTitle->getPrefixedDBkey() ),
- wfMsg( 'recentchangeslinked-toolbox' ),
- array(),
- array(),
- array( 'known', 'noclasses' )
- );
- }
- }
-
- function trackbackLink() {
- return '<a href="' . $this->mTitle->trackbackURL() . '">'
- . wfMsg( 'trackbacklink' ) . '</a>';
- }
-
- function otherLanguages() {
- global $wgOut, $wgContLang, $wgHideInterlanguageLinks;
-
- if ( $wgHideInterlanguageLinks ) {
- return '';
- }
-
- $a = $wgOut->getLanguageLinks();
-
- if ( 0 == count( $a ) ) {
- return '';
- }
-
- $s = wfMsg( 'otherlanguages' ) . wfMsg( 'colon-separator' );
- $first = true;
-
- if ( $wgContLang->isRTL() ) {
- $s .= '<span dir="LTR">';
- }
-
- foreach ( $a as $l ) {
- if ( !$first ) {
- $s .= wfMsgExt( 'pipe-separator', 'escapenoentities' );
- }
-
- $first = false;
-
- $nt = Title::newFromText( $l );
- $url = $nt->escapeFullURL();
- $text = $wgContLang->getLanguageName( $nt->getInterwiki() );
- $title = htmlspecialchars( $nt->getText() );
-
- if ( $text == '' ) {
- $text = $l;
- }
-
- $style = $this->getExternalLinkAttributes();
- $s .= "<a href=\"{$url}\" title=\"{$title}\"{$style}>{$text}</a>";
- }
-
- if ( $wgContLang->isRTL() ) {
- $s .= '</span>';
- }
-
- return $s;
- }
-
- function talkLink() {
- if ( NS_SPECIAL == $this->mTitle->getNamespace() ) {
- # No discussion links for special pages
- return '';
- }
-
- $linkOptions = array();
-
- if ( $this->mTitle->isTalkPage() ) {
- $link = $this->mTitle->getSubjectPage();
- switch( $link->getNamespace() ) {
- case NS_MAIN:
- $text = wfMsg( 'articlepage' );
- break;
- case NS_USER:
- $text = wfMsg( 'userpage' );
- break;
- case NS_PROJECT:
- $text = wfMsg( 'projectpage' );
- break;
- case NS_FILE:
- $text = wfMsg( 'imagepage' );
- # Make link known if image exists, even if the desc. page doesn't.
- if ( wfFindFile( $link ) )
- $linkOptions[] = 'known';
- break;
- case NS_MEDIAWIKI:
- $text = wfMsg( 'mediawikipage' );
- break;
- case NS_TEMPLATE:
- $text = wfMsg( 'templatepage' );
- break;
- case NS_HELP:
- $text = wfMsg( 'viewhelppage' );
- break;
- case NS_CATEGORY:
- $text = wfMsg( 'categorypage' );
- break;
- default:
- $text = wfMsg( 'articlepage' );
- }
- } else {
- $link = $this->mTitle->getTalkPage();
- $text = wfMsg( 'talkpage' );
- }
-
- $s = $this->link( $link, $text, array(), array(), $linkOptions );
-
- return $s;
- }
-
- function commentLink() {
- global $wgOut;
-
- if ( $this->mTitle->getNamespace() == NS_SPECIAL ) {
- return '';
- }
-
- # __NEWSECTIONLINK___ changes behaviour here
- # If it is present, the link points to this page, otherwise
- # it points to the talk page
- if ( $this->mTitle->isTalkPage() ) {
- $title = $this->mTitle;
- } elseif ( $wgOut->showNewSectionLink() ) {
- $title = $this->mTitle;
- } else {
- $title = $this->mTitle->getTalkPage();
- }
-
- return $this->link(
- $title,
- wfMsg( 'postcomment' ),
- array(),
- array(
- 'action' => 'edit',
- 'section' => 'new'
- ),
- array( 'known', 'noclasses' )
- );
- }
-
- function getUploadLink() {
- global $wgUploadNavigationUrl;
-
- if ( $wgUploadNavigationUrl ) {
- # Using an empty class attribute to avoid automatic setting of "external" class
- return $this->makeExternalLink( $wgUploadNavigationUrl, wfMsgHtml( 'upload' ), false, null, array( 'class' => '' ) );
- } else {
- return $this->link(
- SpecialPage::getTitleFor( 'Upload' ),
- wfMsgHtml( 'upload' ),
- array(),
- array(),
- array( 'known', 'noclasses' )
- );
- }
- }
-
/**
* Return a fully resolved style path url to images or styles stored in the common folder.
* This method returns a url resolved using the configured skin style path
* and includes the style version inside of the url.
- * @param $name String: The name or path of the common file to return the full path for.
+ * @param $name String: The name or path of a skin resource file
* @return String The fully resolved style path url including styleversion
*/
function getCommonStylePath( $name ) {
global $wgStylePath, $wgStyleVersion;
- return "{$wgStylePath}/common/$name?{$wgStyleVersion}";
+ return "$wgStylePath/common/$name?$wgStyleVersion";
}
/**
* Return a fully resolved style path url to images or styles stored in the curent skins's folder.
* This method returns a url resolved using the configured skin style path
* and includes the style version inside of the url.
- * @param $name String: The name or path of the skin resource file to return the full path for.
+ * @param $name String: The name or path of a skin resource file
* @return String The fully resolved style path url including styleversion
*/
function getSkinStylePath( $name ) {
global $wgStylePath, $wgStyleVersion;
- return "{$wgStylePath}/{$this->stylename}/$name?{$wgStyleVersion}";
+ return "$wgStylePath/{$this->stylename}/$name?$wgStyleVersion";
}
/* these are used extensively in SkinTemplate, but also some other places */
@@ -2093,7 +1092,7 @@ class Skin extends Linker {
}
static function makeSpecialUrl( $name, $urlaction = '' ) {
- $title = SpecialPage::getTitleFor( $name );
+ $title = SpecialPage::getSafeTitleFor( $name );
return $title->getLocalURL( $urlaction );
}
@@ -2118,6 +1117,8 @@ class Skin extends Linker {
/**
* If url string starts with http, consider as external URL, else
* internal
+ * @param $name String
+ * @return String URL
*/
static function makeInternalOrExternalUrl( $name ) {
if ( preg_match( '/^(?:' . wfUrlProtocols() . ')/', $name ) ) {
@@ -2148,6 +1149,9 @@ class Skin extends Linker {
/**
* Make URL details where the article exists (or at least it's convenient to think so)
+ * @param $name String Article name
+ * @param $urlaction String
+ * @return Array
*/
static function makeKnownUrlDetails( $name, $urlaction = '' ) {
$title = Title::newFromText( $name );
@@ -2176,10 +1180,9 @@ class Skin extends Linker {
*/
function buildSidebar() {
global $parserMemc, $wgEnableSidebarCache, $wgSidebarCacheExpiry;
- global $wgLang;
wfProfileIn( __METHOD__ );
- $key = wfMemcKey( 'sidebar', $wgLang->getCode() );
+ $key = wfMemcKey( 'sidebar', $this->getLang()->getCode() );
if ( $wgEnableSidebarCache ) {
$cachedsidebar = $parserMemc->get( $key );
@@ -2210,7 +1213,7 @@ class Skin extends Linker {
* @param $message String
*/
function addToSidebar( &$bar, $message ) {
- $this->addToSidebarPlain( $bar, wfMsgForContent( $message ) );
+ $this->addToSidebarPlain( $bar, wfMsgForContentNoTrans( $message ) );
}
/**
@@ -2218,10 +1221,10 @@ class Skin extends Linker {
* @since 1.17
* @param &$bar array
* @param $text string
+ * @return Array
*/
function addToSidebarPlain( &$bar, $text ) {
$lines = explode( "\n", $text );
- $wikiBar = array(); # We need to handle the wikitext on a different variable, to avoid trying to do an array operation on text, which would be a fatal error.
$heading = '';
@@ -2239,25 +1242,40 @@ class Skin extends Linker {
$line = trim( $line, '* ' );
if ( strpos( $line, '|' ) !== false ) { // sanity check
+ $line = MessageCache::singleton()->transform( $line, false, null, $this->getTitle() );
$line = array_map( 'trim', explode( '|', $line, 2 ) );
- $link = wfMsgForContent( $line[0] );
+ $extraAttribs = array();
- if ( $link == '-' ) {
- continue;
+ $msgLink = wfMessage( $line[0] )->inContentLanguage();
+ if ( $msgLink->exists() ) {
+ $link = $msgLink->text();
+ if ( $link == '-' ) {
+ continue;
+ }
+ } else {
+ $link = $line[0];
}
- $text = wfMsgExt( $line[1], 'parsemag' );
-
- if ( wfEmptyMsg( $line[1], $text ) ) {
+ $msgText = wfMessage( $line[1] );
+ if ( $msgText->exists() ) {
+ $text = $msgText->text();
+ } else {
$text = $line[1];
}
- if ( wfEmptyMsg( $line[0], $link ) ) {
- $link = $line[0];
- }
-
if ( preg_match( '/^(?:' . wfUrlProtocols() . ')/', $link ) ) {
$href = $link;
+
+ // Parser::getExternalLinkAttribs won't work here because of the Namespace things
+ global $wgNoFollowLinks, $wgNoFollowDomainExceptions;
+ if ( $wgNoFollowLinks && !wfMatchesDomainList( $href, $wgNoFollowDomainExceptions ) ) {
+ $extraAttribs['rel'] = 'nofollow';
+ }
+
+ global $wgExternalLinkTarget;
+ if ( $wgExternalLinkTarget) {
+ $extraAttribs['target'] = $wgExternalLinkTarget;
+ }
} else {
$title = Title::newFromText( $link );
@@ -2269,31 +1287,18 @@ class Skin extends Linker {
}
}
- $bar[$heading][] = array(
+ $bar[$heading][] = array_merge( array(
'text' => $text,
'href' => $href,
- 'id' => 'n-' . strtr( $line[1], ' ', '-' ),
+ 'id' => 'n-' . Sanitizer::escapeId( strtr( $line[1], ' ', '-' ), 'noninitial' ),
'active' => false
- );
- } else if ( ( substr( $line, 0, 2 ) == '{{' ) && ( substr( $line, -2 ) == '}}' ) ) {
- global $wgParser, $wgTitle;
-
- $line = substr( $line, 2, strlen( $line ) - 4 );
-
- $options = new ParserOptions();
- $options->setEditSection( false );
- $options->setInterfaceMessage( true );
- $wikiBar[$heading] = $wgParser->parse( wfMsgForContentNoTrans( $line ) , $wgTitle, $options )->getText();
+ ), $extraAttribs );
} else {
continue;
}
}
}
- if ( count( $wikiBar ) > 0 ) {
- $bar = array_merge( $bar, $wikiBar );
- }
-
return $bar;
}
@@ -2314,16 +1319,16 @@ class Skin extends Linker {
* @return MediaWiki message or if no new talk page messages, nothing
*/
function getNewtalks() {
- global $wgUser, $wgOut;
+ $out = $this->getOutput();
- $newtalks = $wgUser->getNewMessageLinks();
+ $newtalks = $this->getUser()->getNewMessageLinks();
$ntl = '';
if ( count( $newtalks ) == 1 && $newtalks[0]['wiki'] === wfWikiID() ) {
- $userTitle = $this->mUser->getUserPage();
+ $userTitle = $this->getUser()->getUserPage();
$userTalkTitle = $userTitle->getTalkPage();
- if ( !$userTalkTitle->equals( $this->mTitle ) ) {
+ if ( !$userTalkTitle->equals( $out->getTitle() ) ) {
$newMessagesLink = $this->link(
$userTalkTitle,
wfMsgHtml( 'newmessageslink' ),
@@ -2346,7 +1351,7 @@ class Skin extends Linker {
$newMessagesDiffLink
);
# Disable Squid cache
- $wgOut->setSquidMaxage( 0 );
+ $out->setSquidMaxage( 0 );
}
} elseif ( count( $newtalks ) ) {
// _>" " for BC <= 1.16
@@ -2361,9 +1366,187 @@ class Skin extends Linker {
}
$parts = implode( $sep, $msgs );
$ntl = wfMsgHtml( 'youhavenewmessagesmulti', $parts );
- $wgOut->setSquidMaxage( 0 );
+ $out->setSquidMaxage( 0 );
}
return $ntl;
}
+
+ /**
+ * Get a cached notice
+ *
+ * @param $name String: message name, or 'default' for $wgSiteNotice
+ * @return String: HTML fragment
+ */
+ private function getCachedNotice( $name ) {
+ global $wgRenderHashAppend, $parserMemc, $wgContLang;
+
+ wfProfileIn( __METHOD__ );
+
+ $needParse = false;
+
+ if( $name === 'default' ) {
+ // special case
+ global $wgSiteNotice;
+ $notice = $wgSiteNotice;
+ if( empty( $notice ) ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+ } else {
+ $msg = wfMessage( $name )->inContentLanguage();
+ if( $msg->isDisabled() ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+ $notice = $msg->plain();
+ }
+
+ // Use the extra hash appender to let eg SSL variants separately cache.
+ $key = wfMemcKey( $name . $wgRenderHashAppend );
+ $cachedNotice = $parserMemc->get( $key );
+ if( is_array( $cachedNotice ) ) {
+ if( md5( $notice ) == $cachedNotice['hash'] ) {
+ $notice = $cachedNotice['html'];
+ } else {
+ $needParse = true;
+ }
+ } else {
+ $needParse = true;
+ }
+
+ if ( $needParse ) {
+ $parsed = $this->getOutput()->parse( $notice );
+ $parserMemc->set( $key, array( 'html' => $parsed, 'hash' => md5( $notice ) ), 600 );
+ $notice = $parsed;
+ }
+
+ $notice = Html::rawElement( 'div', array( 'id' => 'localNotice',
+ 'lang' => $wgContLang->getCode(), 'dir' => $wgContLang->getDir() ), $notice );
+ wfProfileOut( __METHOD__ );
+ return $notice;
+ }
+
+ /**
+ * Get a notice based on page's namespace
+ *
+ * @return String: HTML fragment
+ */
+ function getNamespaceNotice() {
+ wfProfileIn( __METHOD__ );
+
+ $key = 'namespacenotice-' . $this->getTitle()->getNsText();
+ $namespaceNotice = $this->getCachedNotice( $key );
+ if ( $namespaceNotice && substr( $namespaceNotice, 0, 7 ) != '<p>&lt;' ) {
+ $namespaceNotice = '<div id="namespacebanner">' . $namespaceNotice . '</div>';
+ } else {
+ $namespaceNotice = '';
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $namespaceNotice;
+ }
+
+ /**
+ * Get the site notice
+ *
+ * @return String: HTML fragment
+ */
+ function getSiteNotice() {
+ wfProfileIn( __METHOD__ );
+ $siteNotice = '';
+
+ if ( wfRunHooks( 'SiteNoticeBefore', array( &$siteNotice, $this ) ) ) {
+ if ( is_object( $this->getUser() ) && $this->getUser()->isLoggedIn() ) {
+ $siteNotice = $this->getCachedNotice( 'sitenotice' );
+ } else {
+ $anonNotice = $this->getCachedNotice( 'anonnotice' );
+ if ( !$anonNotice ) {
+ $siteNotice = $this->getCachedNotice( 'sitenotice' );
+ } else {
+ $siteNotice = $anonNotice;
+ }
+ }
+ if ( !$siteNotice ) {
+ $siteNotice = $this->getCachedNotice( 'default' );
+ }
+ }
+
+ wfRunHooks( 'SiteNoticeAfter', array( &$siteNotice, $this ) );
+ wfProfileOut( __METHOD__ );
+ return $siteNotice;
+ }
+
+ /**
+ * Create a section edit link. This supersedes editSectionLink() and
+ * editSectionLinkForOther().
+ *
+ * @param $nt Title The title being linked to (may not be the same as
+ * $wgTitle, if the section is included from a template)
+ * @param $section string The designation of the section being pointed to,
+ * to be included in the link, like "&section=$section"
+ * @param $tooltip string The tooltip to use for the link: will be escaped
+ * and wrapped in the 'editsectionhint' message
+ * @param $lang string Language code
+ * @return string HTML to use for edit link
+ */
+ public function doEditSectionLink( Title $nt, $section, $tooltip = null, $lang = false ) {
+ // HTML generated here should probably have userlangattributes
+ // added to it for LTR text on RTL pages
+ $attribs = array();
+ if ( !is_null( $tooltip ) ) {
+ # Bug 25462: undo double-escaping.
+ $tooltip = Sanitizer::decodeCharReferences( $tooltip );
+ $attribs['title'] = wfMsgExt( 'editsectionhint', array( 'language' => $lang, 'parsemag' ), $tooltip );
+ }
+ $link = Linker::link( $nt, wfMsgExt( 'editsection', array( 'language' => $lang ) ),
+ $attribs,
+ array( 'action' => 'edit', 'section' => $section ),
+ array( 'noclasses', 'known' )
+ );
+
+ # Run the old hook. This takes up half of the function . . . hopefully
+ # we can rid of it someday.
+ $attribs = '';
+ if ( $tooltip ) {
+ $attribs = wfMsgExt( 'editsectionhint', array( 'language' => $lang, 'parsemag', 'escape' ), $tooltip );
+ $attribs = " title=\"$attribs\"";
+ }
+ $result = null;
+ wfRunHooks( 'EditSectionLink', array( &$this, $nt, $section, $attribs, $link, &$result, $lang ) );
+ if ( !is_null( $result ) ) {
+ # For reverse compatibility, add the brackets *after* the hook is
+ # run, and even add them to hook-provided text. (This is the main
+ # reason that the EditSectionLink hook is deprecated in favor of
+ # DoEditSectionLink: it can't change the brackets or the span.)
+ $result = wfMsgExt( 'editsection-brackets', array( 'escape', 'replaceafter', 'language' => $lang ), $result );
+ return "<span class=\"editsection\">$result</span>";
+ }
+
+ # Add the brackets and the span, and *then* run the nice new hook, with
+ # clean and non-redundant arguments.
+ $result = wfMsgExt( 'editsection-brackets', array( 'escape', 'replaceafter', 'language' => $lang ), $link );
+ $result = "<span class=\"editsection\">$result</span>";
+
+ wfRunHooks( 'DoEditSectionLink', array( $this, $nt, $section, $tooltip, &$result, $lang ) );
+ return $result;
+ }
+
+ /**
+ * Use PHP's magic __call handler to intercept legacy calls to the linker
+ * for backwards compatibility.
+ *
+ * @param $fname String Name of called method
+ * @param $args Array Arguments to the method
+ */
+ function __call( $fname, $args ) {
+ $realFunction = array( 'Linker', $fname );
+ if ( is_callable( $realFunction ) ) {
+ return call_user_func_array( $realFunction, $args );
+ } else {
+ $className = get_class( $this );
+ throw new MWException( "Call to undefined method $className::$fname" );
+ }
+ }
+
}
diff --git a/includes/SkinLegacy.php b/includes/SkinLegacy.php
new file mode 100644
index 00000000..53ce6741
--- /dev/null
+++ b/includes/SkinLegacy.php
@@ -0,0 +1,942 @@
+<?php
+/**
+ * @defgroup Skins Skins
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ die( 1 );
+}
+
+class SkinLegacy extends SkinTemplate {
+ var $useHeadElement = true;
+ protected $mWatchLinkNum = 0; // Appended to end of watch link id's
+
+ /**
+ * Add skin specific stylesheets
+ * @param $out OutputPage
+ */
+ function setupSkinUserCss( OutputPage $out ) {
+ $out->addModuleStyles( 'mediawiki.legacy.shared' );
+ $out->addModuleStyles( 'mediawiki.legacy.oldshared' );
+ }
+
+ public function commonPrintStylesheet() {
+ return true;
+ }
+
+ /**
+ * This was for the old skins and for users with 640x480 screen.
+ * Please note old skins are still used and might prove useful for
+ * users having old computers or visually impaired.
+ */
+ var $mSuppressQuickbar = false;
+
+ /**
+ * Suppress the quickbar from the output, only for skin supporting
+ * the quickbar
+ */
+ public function suppressQuickbar() {
+ $this->mSuppressQuickbar = true;
+ }
+
+ /**
+ * Return whether the quickbar should be suppressed from the output
+ *
+ * @return Boolean
+ */
+ public function isQuickbarSuppressed() {
+ return $this->mSuppressQuickbar;
+ }
+
+ function qbSetting() {
+ global $wgUser;
+ if ( $this->isQuickbarSuppressed() ) {
+ return 0;
+ }
+ $q = $wgUser->getOption( 'quickbar', 0 );
+ if( $q == 5 ) {
+ # 5 is the default, which chooses the setting
+ # depending on the directionality of your interface language
+ global $wgLang;
+ return $wgLang->isRTL() ? 2 : 1;
+ }
+ return $q;
+ }
+
+}
+
+class LegacyTemplate extends BaseTemplate {
+
+ // How many search boxes have we made? Avoid duplicate id's.
+ protected $searchboxes = '';
+
+ function execute() {
+ $this->html( 'headelement' );
+ echo $this->beforeContent();
+ $this->html( 'bodytext' );
+ echo "\n";
+ echo $this->afterContent();
+ $this->html( 'dataAfterContent' );
+ $this->printTrail();
+ echo "\n</body></html>";
+ }
+
+ /**
+ * This will be called immediately after the <body> tag. Split into
+ * two functions to make it easier to subclass.
+ */
+ function beforeContent() {
+ return $this->doBeforeContent();
+ }
+
+ function doBeforeContent() {
+ global $wgLang;
+ wfProfileIn( __METHOD__ );
+
+ $s = '';
+
+ $langlinks = $this->otherLanguages();
+ if ( $langlinks ) {
+ $rows = 2;
+ $borderhack = '';
+ } else {
+ $rows = 1;
+ $langlinks = false;
+ $borderhack = 'class="top"';
+ }
+
+ $s .= "\n<div id='content'>\n<div id='topbar'>\n" .
+ "<table border='0' cellspacing='0' width='100%'>\n<tr>\n";
+
+ if ( $this->getSkin()->qbSetting() == 0 ) {
+ $s .= "<td class='top' align='left' valign='top' rowspan='{$rows}'>\n" .
+ $this->getSkin()->logoText( $wgLang->alignStart() ) . '</td>';
+ }
+
+ $l = $wgLang->alignStart();
+ $s .= "<td {$borderhack} align='$l' valign='top'>\n";
+
+ $s .= $this->topLinks();
+ $s .= '<p class="subtitle">' . $this->pageTitleLinks() . "</p>\n";
+
+ $r = $wgLang->alignEnd();
+ $s .= "</td>\n<td {$borderhack} valign='top' align='$r' nowrap='nowrap'>";
+ $s .= $this->nameAndLogin();
+ $s .= "\n<br />" . $this->searchForm() . '</td>';
+
+ if ( $langlinks ) {
+ $s .= "</tr>\n<tr>\n<td class='top' colspan=\"2\">$langlinks</td>\n";
+ }
+
+ $s .= "</tr>\n</table>\n</div>\n";
+ $s .= "\n<div id='article'>\n";
+
+ $notice = $this->getSkin()->getSiteNotice();
+
+ if ( $notice ) {
+ $s .= "\n<div id='siteNotice'>$notice</div>\n";
+ }
+ $s .= $this->pageTitle();
+ $s .= $this->pageSubtitle();
+ $s .= $this->getSkin()->getCategories();
+
+ wfProfileOut( __METHOD__ );
+ return $s;
+ }
+
+ /**
+ * This gets called shortly before the </body> tag.
+ * @return String HTML to be put before </body>
+ */
+ function afterContent() {
+ return $this->doAfterContent();
+ }
+
+ /** overloaded by derived classes */
+ function doAfterContent() {
+ return '</div></div>';
+ }
+
+ function searchForm() {
+ global $wgRequest, $wgUseTwoButtonsSearchForm;
+
+ $search = $wgRequest->getText( 'search' );
+
+ $s = '<form id="searchform' . $this->searchboxes . '" name="search" class="inline" method="post" action="'
+ . $this->getSkin()->escapeSearchLink() . "\">\n"
+ . '<input type="text" id="searchInput' . $this->searchboxes . '" name="search" size="19" value="'
+ . htmlspecialchars( substr( $search, 0, 256 ) ) . "\" />\n"
+ . '<input type="submit" name="go" value="' . wfMsg( 'searcharticle' ) . '" />';
+
+ if ( $wgUseTwoButtonsSearchForm ) {
+ $s .= '&#160;<input type="submit" name="fulltext" value="' . wfMsg( 'searchbutton' ) . "\" />\n";
+ } else {
+ $s .= ' <a href="' . $this->getSkin()->escapeSearchLink() . '" rel="search">' . wfMsg( 'powersearch-legend' ) . "</a>\n";
+ }
+
+ $s .= '</form>';
+
+ // Ensure unique id's for search boxes made after the first
+ $this->searchboxes = $this->searchboxes == '' ? 2 : $this->searchboxes + 1;
+
+ return $s;
+ }
+
+ function pageStats() {
+ global $wgOut, $wgLang, $wgRequest, $wgUser;
+ global $wgDisableCounters, $wgMaxCredits, $wgShowCreditsIfMax, $wgPageShowWatchingUsers;
+
+ if ( !is_null( $wgRequest->getVal( 'oldid' ) ) || !is_null( $wgRequest->getVal( 'diff' ) ) ) {
+ return '';
+ }
+
+ if ( !$wgOut->isArticle() || !$this->getSkin()->getTitle()->exists() ) {
+ return '';
+ }
+
+ $article = new Article( $this->getSkin()->getTitle(), 0 );
+
+ $s = '';
+
+ if ( !$wgDisableCounters ) {
+ $count = $wgLang->formatNum( $article->getCount() );
+
+ if ( $count ) {
+ $s = wfMsgExt( 'viewcount', array( 'parseinline' ), $count );
+ }
+ }
+
+ if ( $wgMaxCredits != 0 ) {
+ $s .= ' ' . Action::factory( 'credits', $article )->getCredits( $wgMaxCredits, $wgShowCreditsIfMax );
+ } else {
+ $s .= $this->data['lastmod'];
+ }
+
+ if ( $wgPageShowWatchingUsers && $wgUser->getOption( 'shownumberswatching' ) ) {
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select(
+ 'watchlist',
+ array( 'COUNT(*) AS n' ),
+ array(
+ 'wl_title' => $dbr->strencode( $this->getSkin()->getTitle()->getDBkey() ),
+ 'wl_namespace' => $this->getSkin()->getTitle()->getNamespace()
+ ),
+ __METHOD__
+ );
+ $x = $dbr->fetchObject( $res );
+
+ $s .= ' ' . wfMsgExt( 'number_of_watching_users_pageview',
+ array( 'parseinline' ), $wgLang->formatNum( $x->n )
+ );
+ }
+
+ return $s . ' ' . $this->getSkin()->getCopyright();
+ }
+
+ function topLinks() {
+ global $wgOut;
+
+ $s = array(
+ $this->getSkin()->mainPageLink(),
+ Linker::specialLink( 'Recentchanges' )
+ );
+
+ if ( $wgOut->isArticleRelated() ) {
+ $s[] = $this->editThisPage();
+ $s[] = $this->historyLink();
+ }
+
+ # Many people don't like this dropdown box
+ # $s[] = $this->specialPagesList();
+
+ if ( $this->variantLinks() ) {
+ $s[] = $this->variantLinks();
+ }
+
+ if ( $this->extensionTabLinks() ) {
+ $s[] = $this->extensionTabLinks();
+ }
+
+ // @todo FIXME: Is using Language::pipeList impossible here? Do not quite understand the use of the newline
+ return implode( $s, wfMsgExt( 'pipe-separator', 'escapenoentities' ) . "\n" );
+ }
+
+ /**
+ * Language/charset variant links for classic-style skins
+ * @return string
+ */
+ function variantLinks() {
+ $s = '';
+
+ /* show links to different language variants */
+ global $wgDisableLangConversion, $wgLang, $wgContLang;
+
+ $variants = $wgContLang->getVariants();
+
+ if ( !$wgDisableLangConversion && sizeof( $variants ) > 1 ) {
+ foreach ( $variants as $code ) {
+ $varname = $wgContLang->getVariantname( $code );
+
+ if ( $varname == 'disable' ) {
+ continue;
+ }
+ $s = $wgLang->pipeList( array(
+ $s,
+ '<a href="' . $this->getSkin()->getTitle()->escapeLocalURL( 'variant=' . $code ) . '">' . htmlspecialchars( $varname ) . '</a>'
+ ) );
+ }
+ }
+
+ return $s;
+ }
+
+ /**
+ * Compatibility for extensions adding functionality through tabs.
+ * Eventually these old skins should be replaced with SkinTemplate-based
+ * versions, sigh...
+ * @return string
+ * @todo Exterminate! ...that, and replace it with normal SkinTemplate stuff
+ */
+ function extensionTabLinks() {
+ $tabs = array();
+ $out = '';
+ $s = array();
+ wfRunHooks( 'SkinTemplateTabs', array( $this->getSkin(), &$tabs ) );
+ foreach ( $tabs as $tab ) {
+ $s[] = Xml::element( 'a',
+ array( 'href' => $tab['href'] ),
+ $tab['text'] );
+ }
+
+ if ( count( $s ) ) {
+ global $wgLang;
+
+ $out = wfMsgExt( 'pipe-separator' , 'escapenoentities' );
+ $out .= $wgLang->pipeList( $s );
+ }
+
+ return $out;
+ }
+
+ function bottomLinks() {
+ global $wgOut, $wgUser, $wgUseTrackbacks;
+ $sep = wfMsgExt( 'pipe-separator', 'escapenoentities' ) . "\n";
+
+ $s = '';
+ if ( $wgOut->isArticleRelated() ) {
+ $element[] = '<strong>' . $this->editThisPage() . '</strong>';
+
+ if ( $wgUser->isLoggedIn() ) {
+ $element[] = $this->watchThisPage();
+ }
+
+ $element[] = $this->talkLink();
+ $element[] = $this->historyLink();
+ $element[] = $this->whatLinksHere();
+ $element[] = $this->watchPageLinksLink();
+
+ if ( $wgUseTrackbacks ) {
+ $element[] = $this->trackbackLink();
+ }
+
+ if (
+ $this->getSkin()->getTitle()->getNamespace() == NS_USER ||
+ $this->getSkin()->getTitle()->getNamespace() == NS_USER_TALK
+ ) {
+ $id = User::idFromName( $this->getSkin()->getTitle()->getText() );
+ $ip = User::isIP( $this->getSkin()->getTitle()->getText() );
+
+ # Both anons and non-anons have contributions list
+ if ( $id || $ip ) {
+ $element[] = $this->userContribsLink();
+ }
+
+ if ( $this->getSkin()->showEmailUser( $id ) ) {
+ $element[] = $this->emailUserLink();
+ }
+ }
+
+ $s = implode( $element, $sep );
+
+ if ( $this->getSkin()->getTitle()->getArticleId() ) {
+ $s .= "\n<br />";
+
+ // Delete/protect/move links for privileged users
+ if ( $wgUser->isAllowed( 'delete' ) ) {
+ $s .= $this->deleteThisPage();
+ }
+
+ if ( $wgUser->isAllowed( 'protect' ) ) {
+ $s .= $sep . $this->protectThisPage();
+ }
+
+ if ( $wgUser->isAllowed( 'move' ) ) {
+ $s .= $sep . $this->moveThisPage();
+ }
+ }
+
+ $s .= "<br />\n" . $this->otherLanguages();
+ }
+
+ return $s;
+ }
+
+ function otherLanguages() {
+ global $wgOut, $wgContLang, $wgHideInterlanguageLinks;
+
+ if ( $wgHideInterlanguageLinks ) {
+ return '';
+ }
+
+ $a = $wgOut->getLanguageLinks();
+
+ if ( 0 == count( $a ) ) {
+ return '';
+ }
+
+ $s = wfMsg( 'otherlanguages' ) . wfMsg( 'colon-separator' );
+ $first = true;
+
+ if ( $wgContLang->isRTL() ) {
+ $s .= '<span dir="LTR">';
+ }
+
+ foreach ( $a as $l ) {
+ if ( !$first ) {
+ $s .= wfMsgExt( 'pipe-separator', 'escapenoentities' );
+ }
+
+ $first = false;
+
+ $nt = Title::newFromText( $l );
+ $text = $wgContLang->getLanguageName( $nt->getInterwiki() );
+
+ $s .= Html::element( 'a',
+ array( 'href' => $nt->getFullURL(), 'title' => $nt->getText(), 'class' => "external" ),
+ $text == '' ? $l : $text );
+ }
+
+ if ( $wgContLang->isRTL() ) {
+ $s .= '</span>';
+ }
+
+ return $s;
+ }
+
+ /**
+ * Show a drop-down box of special pages
+ */
+ function specialPagesList() {
+ global $wgContLang, $wgServer, $wgRedirectScript;
+
+ $pages = SpecialPageFactory::getUsablePages();
+
+ foreach ( $pages as $name => $page ) {
+ $pages[$name] = $page->getDescription();
+ }
+
+ $go = wfMsg( 'go' );
+ $sp = wfMsg( 'specialpages' );
+ $spp = $wgContLang->specialPage( 'Specialpages' );
+
+ $s = '<form id="specialpages" method="get" ' .
+ 'action="' . htmlspecialchars( "{$wgServer}{$wgRedirectScript}" ) . "\">\n";
+ $s .= "<select name=\"wpDropdown\">\n";
+ $s .= "<option value=\"{$spp}\">{$sp}</option>\n";
+
+
+ foreach ( $pages as $name => $desc ) {
+ $p = $wgContLang->specialPage( $name );
+ $s .= "<option value=\"{$p}\">{$desc}</option>\n";
+ }
+
+ $s .= "</select>\n";
+ $s .= "<input type='submit' value=\"{$go}\" name='redirect' />\n";
+ $s .= "</form>\n";
+
+ return $s;
+ }
+
+ function pageTitleLinks() {
+ global $wgOut, $wgUser, $wgRequest, $wgLang;
+
+ $oldid = $wgRequest->getVal( 'oldid' );
+ $diff = $wgRequest->getVal( 'diff' );
+ $action = $wgRequest->getText( 'action' );
+
+ $s[] = $this->printableLink();
+ $disclaimer = $this->getSkin()->disclaimerLink(); # may be empty
+
+ if ( $disclaimer ) {
+ $s[] = $disclaimer;
+ }
+
+ $privacy = $this->getSkin()->privacyLink(); # may be empty too
+
+ if ( $privacy ) {
+ $s[] = $privacy;
+ }
+
+ if ( $wgOut->isArticleRelated() ) {
+ if ( $this->getSkin()->getTitle()->getNamespace() == NS_FILE ) {
+ $name = $this->getSkin()->getTitle()->getDBkey();
+ $image = wfFindFile( $this->getSkin()->getTitle() );
+
+ if ( $image ) {
+ $link = htmlspecialchars( $image->getURL() );
+ $style = Linker::getInternalLinkAttributes( $link, $name );
+ $s[] = "<a href=\"{$link}\"{$style}>{$name}</a>";
+ }
+ }
+ }
+
+ if ( 'history' == $action || isset( $diff ) || isset( $oldid ) ) {
+ $s[] .= Linker::link(
+ $this->getSkin()->getTitle(),
+ wfMsg( 'currentrev' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
+ }
+
+ if ( $wgUser->getNewtalk() ) {
+ # do not show "You have new messages" text when we are viewing our
+ # own talk page
+ if ( !$this->getSkin()->getTitle()->equals( $wgUser->getTalkPage() ) ) {
+ $tl = Linker::link(
+ $wgUser->getTalkPage(),
+ wfMsgHtml( 'newmessageslink' ),
+ array(),
+ array( 'redirect' => 'no' ),
+ array( 'known', 'noclasses' )
+ );
+
+ $dl = Linker::link(
+ $wgUser->getTalkPage(),
+ wfMsgHtml( 'newmessagesdifflink' ),
+ array(),
+ array( 'diff' => 'cur' ),
+ array( 'known', 'noclasses' )
+ );
+ $s[] = '<strong>' . wfMsg( 'youhavenewmessages', $tl, $dl ) . '</strong>';
+ # disable caching
+ $wgOut->setSquidMaxage( 0 );
+ $wgOut->enableClientCache( false );
+ }
+ }
+
+ $undelete = $this->getSkin()->getUndeleteLink();
+
+ if ( !empty( $undelete ) ) {
+ $s[] = $undelete;
+ }
+
+ return $wgLang->pipeList( $s );
+ }
+
+ /**
+ * Gets the h1 element with the page title.
+ * @return string
+ */
+ function pageTitle() {
+ global $wgOut;
+ $s = '<h1 class="pagetitle">' . $wgOut->getPageTitle() . '</h1>';
+ return $s;
+ }
+
+ function pageSubtitle() {
+ global $wgOut;
+
+ $sub = $wgOut->getSubtitle();
+
+ if ( $sub == '' ) {
+ global $wgExtraSubtitle;
+ $sub = wfMsgExt( 'tagline', 'parsemag' ) . $wgExtraSubtitle;
+ }
+
+ $subpages = $this->getSkin()->subPageSubtitle();
+ $sub .= !empty( $subpages ) ? "</p><p class='subpages'>$subpages" : '';
+ $s = "<p class='subtitle'>{$sub}</p>\n";
+
+ return $s;
+ }
+
+ function printableLink() {
+ global $wgOut, $wgRequest, $wgLang;
+
+ $s = array();
+
+ if ( !$wgOut->isPrintable() ) {
+ $printurl = htmlspecialchars( $this->getSkin()->getTitle()->getLocalUrl(
+ $wgRequest->appendQueryValue( 'printable', 'yes', true ) ) );
+ $s[] = "<a href=\"$printurl\" rel=\"alternate\">" . wfMsg( 'printableversion' ) . '</a>';
+ }
+
+ if ( $wgOut->isSyndicated() ) {
+ foreach ( $wgOut->getSyndicationLinks() as $format => $link ) {
+ $feedurl = htmlspecialchars( $link );
+ $s[] = "<a href=\"$feedurl\" rel=\"alternate\" type=\"application/{$format}+xml\""
+ . " class=\"feedlink\">" . wfMsgHtml( "feed-$format" ) . "</a>";
+ }
+ }
+ return $wgLang->pipeList( $s );
+ }
+
+ /**
+ * @deprecated in 1.19
+ */
+ function getQuickbarCompensator( $rows = 1 ) {
+ return "<td width='152' rowspan='{$rows}'>&#160;</td>";
+ }
+
+ function editThisPage() {
+ global $wgOut;
+
+ if ( !$wgOut->isArticleRelated() ) {
+ $s = wfMsg( 'protectedpage' );
+ } else {
+ if ( $this->getSkin()->getTitle()->quickUserCan( 'edit' ) && $this->getSkin()->getTitle()->exists() ) {
+ $t = wfMsg( 'editthispage' );
+ } elseif ( $this->getSkin()->getTitle()->quickUserCan( 'create' ) && !$this->getSkin()->getTitle()->exists() ) {
+ $t = wfMsg( 'create-this-page' );
+ } else {
+ $t = wfMsg( 'viewsource' );
+ }
+
+ $s = Linker::link(
+ $this->getSkin()->getTitle(),
+ $t,
+ array(),
+ $this->getSkin()->editUrlOptions(),
+ array( 'known', 'noclasses' )
+ );
+ }
+
+ return $s;
+ }
+
+ function deleteThisPage() {
+ global $wgUser, $wgRequest;
+
+ $diff = $wgRequest->getVal( 'diff' );
+
+ if ( $this->getSkin()->getTitle()->getArticleId() && ( !$diff ) && $wgUser->isAllowed( 'delete' ) ) {
+ $t = wfMsg( 'deletethispage' );
+
+ $s = Linker::link(
+ $this->getSkin()->getTitle(),
+ $t,
+ array(),
+ array( 'action' => 'delete' ),
+ array( 'known', 'noclasses' )
+ );
+ } else {
+ $s = '';
+ }
+
+ return $s;
+ }
+
+ function protectThisPage() {
+ global $wgUser, $wgRequest;
+
+ $diff = $wgRequest->getVal( 'diff' );
+
+ if ( $this->getSkin()->getTitle()->getArticleId() && ( ! $diff ) && $wgUser->isAllowed( 'protect' ) ) {
+ if ( $this->getSkin()->getTitle()->isProtected() ) {
+ $text = wfMsg( 'unprotectthispage' );
+ $query = array( 'action' => 'unprotect' );
+ } else {
+ $text = wfMsg( 'protectthispage' );
+ $query = array( 'action' => 'protect' );
+ }
+
+ $s = Linker::link(
+ $this->getSkin()->getTitle(),
+ $text,
+ array(),
+ $query,
+ array( 'known', 'noclasses' )
+ );
+ } else {
+ $s = '';
+ }
+
+ return $s;
+ }
+
+ function watchThisPage() {
+ global $wgOut, $wgUser;
+ ++$this->mWatchLinkNum;
+
+ // Cache
+ $title = $this->getSkin()->getTitle();
+
+ if ( $wgOut->isArticleRelated() ) {
+ if ( $title->userIsWatching() ) {
+ $text = wfMsg( 'unwatchthispage' );
+ $query = array(
+ 'action' => 'unwatch',
+ 'token' => UnwatchAction::getUnwatchToken( $title, $wgUser ),
+ );
+ $id = 'mw-unwatch-link' . $this->mWatchLinkNum;
+ } else {
+ $text = wfMsg( 'watchthispage' );
+ $query = array(
+ 'action' => 'watch',
+ 'token' => WatchAction::getWatchToken( $title, $wgUser ),
+ );
+ $id = 'mw-watch-link' . $this->mWatchLinkNum;
+ }
+
+ $s = Linker::link(
+ $title,
+ $text,
+ array( 'id' => $id ),
+ $query,
+ array( 'known', 'noclasses' )
+ );
+ } else {
+ $s = wfMsg( 'notanarticle' );
+ }
+
+ return $s;
+ }
+
+ function moveThisPage() {
+ if ( $this->getSkin()->getTitle()->quickUserCan( 'move' ) ) {
+ return Linker::link(
+ SpecialPage::getTitleFor( 'Movepage' ),
+ wfMsg( 'movethispage' ),
+ array(),
+ array( 'target' => $this->getSkin()->getTitle()->getPrefixedDBkey() ),
+ array( 'known', 'noclasses' )
+ );
+ } else {
+ // no message if page is protected - would be redundant
+ return '';
+ }
+ }
+
+ function historyLink() {
+ return Linker::link(
+ $this->getSkin()->getTitle(),
+ wfMsgHtml( 'history' ),
+ array( 'rel' => 'archives' ),
+ array( 'action' => 'history' )
+ );
+ }
+
+ function whatLinksHere() {
+ return Linker::link(
+ SpecialPage::getTitleFor( 'Whatlinkshere', $this->getSkin()->getTitle()->getPrefixedDBkey() ),
+ wfMsgHtml( 'whatlinkshere' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
+ }
+
+ function userContribsLink() {
+ return Linker::link(
+ SpecialPage::getTitleFor( 'Contributions', $this->getSkin()->getTitle()->getDBkey() ),
+ wfMsgHtml( 'contributions' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
+ }
+
+ function emailUserLink() {
+ return Linker::link(
+ SpecialPage::getTitleFor( 'Emailuser', $this->getSkin()->getTitle()->getDBkey() ),
+ wfMsg( 'emailuser' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
+ }
+
+ function watchPageLinksLink() {
+ global $wgOut;
+
+ if ( !$wgOut->isArticleRelated() ) {
+ return '(' . wfMsg( 'notanarticle' ) . ')';
+ } else {
+ return Linker::link(
+ SpecialPage::getTitleFor( 'Recentchangeslinked', $this->getSkin()->getTitle()->getPrefixedDBkey() ),
+ wfMsg( 'recentchangeslinked-toolbox' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
+ }
+ }
+
+ function trackbackLink() {
+ return '<a href="' . $this->getSkin()->getTitle()->trackbackURL() . '">'
+ . wfMsg( 'trackbacklink' ) . '</a>';
+ }
+
+ function talkLink() {
+ if ( NS_SPECIAL == $this->getSkin()->getTitle()->getNamespace() ) {
+ # No discussion links for special pages
+ return '';
+ }
+
+ $linkOptions = array();
+
+ if ( $this->getSkin()->getTitle()->isTalkPage() ) {
+ $link = $this->getSkin()->getTitle()->getSubjectPage();
+ switch( $link->getNamespace() ) {
+ case NS_MAIN:
+ $text = wfMsg( 'articlepage' );
+ break;
+ case NS_USER:
+ $text = wfMsg( 'userpage' );
+ break;
+ case NS_PROJECT:
+ $text = wfMsg( 'projectpage' );
+ break;
+ case NS_FILE:
+ $text = wfMsg( 'imagepage' );
+ # Make link known if image exists, even if the desc. page doesn't.
+ if ( wfFindFile( $link ) )
+ $linkOptions[] = 'known';
+ break;
+ case NS_MEDIAWIKI:
+ $text = wfMsg( 'mediawikipage' );
+ break;
+ case NS_TEMPLATE:
+ $text = wfMsg( 'templatepage' );
+ break;
+ case NS_HELP:
+ $text = wfMsg( 'viewhelppage' );
+ break;
+ case NS_CATEGORY:
+ $text = wfMsg( 'categorypage' );
+ break;
+ default:
+ $text = wfMsg( 'articlepage' );
+ }
+ } else {
+ $link = $this->getSkin()->getTitle()->getTalkPage();
+ $text = wfMsg( 'talkpage' );
+ }
+
+ $s = Linker::link( $link, $text, array(), array(), $linkOptions );
+
+ return $s;
+ }
+
+ function commentLink() {
+ global $wgOut;
+
+ if ( $this->getSkin()->getTitle()->getNamespace() == NS_SPECIAL ) {
+ return '';
+ }
+
+ # __NEWSECTIONLINK___ changes behaviour here
+ # If it is present, the link points to this page, otherwise
+ # it points to the talk page
+ if ( $this->getSkin()->getTitle()->isTalkPage() ) {
+ $title = $this->getSkin()->getTitle();
+ } elseif ( $wgOut->showNewSectionLink() ) {
+ $title = $this->getSkin()->getTitle();
+ } else {
+ $title = $this->getSkin()->getTitle()->getTalkPage();
+ }
+
+ return Linker::link(
+ $title,
+ wfMsg( 'postcomment' ),
+ array(),
+ array(
+ 'action' => 'edit',
+ 'section' => 'new'
+ ),
+ array( 'known', 'noclasses' )
+ );
+ }
+
+ function getUploadLink() {
+ global $wgUploadNavigationUrl;
+
+ if ( $wgUploadNavigationUrl ) {
+ # Using an empty class attribute to avoid automatic setting of "external" class
+ return Linker::makeExternalLink( $wgUploadNavigationUrl, wfMsgHtml( 'upload' ), false, null, array( 'class' => '' ) );
+ } else {
+ return Linker::link(
+ SpecialPage::getTitleFor( 'Upload' ),
+ wfMsgHtml( 'upload' ),
+ array(),
+ array(),
+ array( 'known', 'noclasses' )
+ );
+ }
+ }
+
+ function nameAndLogin() {
+ global $wgUser, $wgLang, $wgContLang;
+
+ $logoutPage = $wgContLang->specialPage( 'Userlogout' );
+
+ $ret = '';
+
+ if ( $wgUser->isAnon() ) {
+ if ( $this->getSkin()->showIPinHeader() ) {
+ $name = wfGetIP();
+
+ $talkLink = Linker::link( $wgUser->getTalkPage(),
+ $wgLang->getNsText( NS_TALK ) );
+
+ $ret .= "$name ($talkLink)";
+ } else {
+ $ret .= wfMsg( 'notloggedin' );
+ }
+
+ $returnTo = $this->getSkin()->getTitle()->getPrefixedDBkey();
+ $query = array();
+
+ if ( $logoutPage != $returnTo ) {
+ $query['returnto'] = $returnTo;
+ }
+
+ $loginlink = $wgUser->isAllowed( 'createaccount' )
+ ? 'nav-login-createaccount'
+ : 'login';
+ $ret .= "\n<br />" . Linker::link(
+ SpecialPage::getTitleFor( 'Userlogin' ),
+ wfMsg( $loginlink ), array(), $query
+ );
+ } else {
+ $returnTo = $this->getSkin()->getTitle()->getPrefixedDBkey();
+ $talkLink = Linker::link( $wgUser->getTalkPage(),
+ $wgLang->getNsText( NS_TALK ) );
+
+ $ret .= Linker::link( $wgUser->getUserPage(),
+ htmlspecialchars( $wgUser->getName() ) );
+ $ret .= " ($talkLink)<br />";
+ $ret .= $wgLang->pipeList( array(
+ Linker::link(
+ SpecialPage::getTitleFor( 'Userlogout' ), wfMsg( 'logout' ),
+ array(), array( 'returnto' => $returnTo )
+ ),
+ Linker::specialLink( 'Preferences' ),
+ ) );
+ }
+
+ $ret = $wgLang->pipeList( array(
+ $ret,
+ Linker::link(
+ Title::newFromText( wfMsgForContent( 'helppage' ) ),
+ wfMsg( 'help' )
+ ),
+ ) );
+
+ return $ret;
+ }
+
+}
+
diff --git a/includes/SkinTemplate.php b/includes/SkinTemplate.php
index 023afdd8..373daa9d 100644
--- a/includes/SkinTemplate.php
+++ b/includes/SkinTemplate.php
@@ -20,8 +20,9 @@
* @file
*/
-if ( ! defined( 'MEDIAWIKI' ) )
+if ( !defined( 'MEDIAWIKI' ) ) {
die( 1 );
+}
/**
* Wrapper object for MediaWiki's localization functions,
@@ -106,7 +107,7 @@ class SkinTemplate extends Skin {
*
* @param $out OutputPage
*/
- function setupSkinUserCss( OutputPage $out ){
+ function setupSkinUserCss( OutputPage $out ) {
$out->addModuleStyles( array( 'mediawiki.legacy.shared', 'mediawiki.legacy.commonPrint' ) );
}
@@ -115,10 +116,10 @@ class SkinTemplate extends Skin {
* and eventually it spits out some HTML. Should have interface
* roughly equivalent to PHPTAL 0.7.
*
- * @param $classname string (or file)
+ * @param $classname String
* @param $repository string: subdirectory where we keep template files
* @param $cache_dir string
- * @return object
+ * @return QuickTemplate
* @private
*/
function setupTemplate( $classname, $repository = false, $cache_dir = false ) {
@@ -131,20 +132,18 @@ class SkinTemplate extends Skin {
* @param $out OutputPage
*/
function outputPage( OutputPage $out ) {
- global $wgArticle, $wgUser, $wgLang, $wgContLang;
- global $wgScript, $wgStylePath, $wgLanguageCode;
- global $wgMimeType, $wgJsMimeType, $wgOutputEncoding, $wgRequest;
+ global $wgUser, $wgLang, $wgContLang;
+ global $wgScript, $wgStylePath;
+ global $wgMimeType, $wgJsMimeType, $wgRequest;
global $wgXhtmlDefaultNamespace, $wgXhtmlNamespaces, $wgHtml5Version;
global $wgDisableCounters, $wgLogo, $wgHideInterlanguageLinks;
global $wgMaxCredits, $wgShowCreditsIfMax;
global $wgPageShowWatchingUsers;
global $wgUseTrackbacks, $wgUseSiteJs, $wgDebugComments;
- global $wgArticlePath, $wgScriptPath, $wgServer, $wgProfiler;
+ global $wgArticlePath, $wgScriptPath, $wgServer;
wfProfileIn( __METHOD__ );
- if ( is_object( $wgProfiler ) ) {
- $wgProfiler->setTemplated( true );
- }
+ Profiler::instance()->setTemplated( true );
$oldid = $wgRequest->getVal( 'oldid' );
$diff = $wgRequest->getVal( 'diff' );
@@ -153,17 +152,13 @@ class SkinTemplate extends Skin {
wfProfileIn( __METHOD__ . '-init' );
$this->initPage( $out );
- $this->setMembers();
$tpl = $this->setupTemplate( $this->template, 'skins' );
-
- #if ( $wgUseDatabaseMessages ) { // uncomment this to fall back to GetText
- $tpl->setTranslator( new MediaWiki_I18N() );
- #}
wfProfileOut( __METHOD__ . '-init' );
wfProfileIn( __METHOD__ . '-stuff' );
- $this->thispage = $this->mTitle->getPrefixedDBkey();
- $this->thisurl = $this->mTitle->getPrefixedURL();
+ $this->thispage = $this->getTitle()->getPrefixedDBkey();
+ $this->userpage = $wgUser->getUserPage()->getPrefixedText();
+
$query = array();
if ( !$wgRequest->wasPosted() ) {
$query = $wgRequest->getValues();
@@ -171,13 +166,14 @@ class SkinTemplate extends Skin {
unset( $query['returnto'] );
unset( $query['returntoquery'] );
}
- $this->thisquery = wfUrlencode( wfArrayToCGI( $query ) );
+ $this->thisquery = wfArrayToCGI( $query );
$this->loggedin = $wgUser->isLoggedIn();
- $this->iscontent = ( $this->mTitle->getNamespace() != NS_SPECIAL );
+ $this->iscontent = ( $this->getTitle()->getNamespace() != NS_SPECIAL );
$this->iseditable = ( $this->iscontent and !( $action == 'edit' or $action == 'submit' ) );
$this->username = $wgUser->getName();
if ( $wgUser->isLoggedIn() || $this->showIPinHeader() ) {
+
$this->userpageUrlDetails = self::makeUrlDetails( $this->userpage );
} else {
# This won't be used in the standard skins, but we define it to preserve the interface
@@ -185,7 +181,7 @@ class SkinTemplate extends Skin {
$this->userpageUrlDetails = self::makeKnownUrlDetails( $this->userpage );
}
- $this->titletxt = $this->mTitle->getPrefixedText();
+ $this->titletxt = $this->getTitle()->getPrefixedText();
wfProfileOut( __METHOD__ . '-stuff' );
wfProfileIn( __METHOD__ . '-stuff-head' );
@@ -197,9 +193,11 @@ class SkinTemplate extends Skin {
$this->setupUserCss( $out );
$tpl->set( 'pagecss', $this->setupPageCss() );
- $tpl->setRef( 'usercss', $this->usercss );
+ $tpl->set( 'usercss', false );
$this->userjs = $this->userjsprev = false;
+ # @todo FIXME: This is the only use of OutputPage::isUserJsAllowed() anywhere; can we
+ # get rid of it? For that matter, why is any of this here at all?
$this->setupUserJs( $out->isUserJsAllowed() );
$tpl->setRef( 'userjs', $this->userjs );
$tpl->setRef( 'userjsprev', $this->userjsprev );
@@ -232,19 +230,19 @@ class SkinTemplate extends Skin {
$tpl->set( 'title', $out->getPageTitle() );
$tpl->set( 'pagetitle', $out->getHTMLTitle() );
$tpl->set( 'displaytitle', $out->mPageLinkTitle );
- $tpl->set( 'pageclass', $this->getPageClasses( $this->mTitle ) );
+ $tpl->set( 'pageclass', $this->getPageClasses( $this->getTitle() ) );
$tpl->set( 'skinnameclass', ( 'skin-' . Sanitizer::escapeClass( $this->getSkinName() ) ) );
- $nsname = MWNamespace::exists( $this->mTitle->getNamespace() ) ?
- MWNamespace::getCanonicalName( $this->mTitle->getNamespace() ) :
- $this->mTitle->getNsText();
+ $nsname = MWNamespace::exists( $this->getTitle()->getNamespace() ) ?
+ MWNamespace::getCanonicalName( $this->getTitle()->getNamespace() ) :
+ $this->getTitle()->getNsText();
$tpl->set( 'nscanonical', $nsname );
- $tpl->set( 'nsnumber', $this->mTitle->getNamespace() );
- $tpl->set( 'titleprefixeddbkey', $this->mTitle->getPrefixedDBKey() );
- $tpl->set( 'titletext', $this->mTitle->getText() );
- $tpl->set( 'articleid', $this->mTitle->getArticleId() );
- $tpl->set( 'currevisionid', isset( $wgArticle ) ? $wgArticle->getLatest() : 0 );
+ $tpl->set( 'nsnumber', $this->getTitle()->getNamespace() );
+ $tpl->set( 'titleprefixeddbkey', $this->getTitle()->getPrefixedDBKey() );
+ $tpl->set( 'titletext', $this->getTitle()->getText() );
+ $tpl->set( 'articleid', $this->getTitle()->getArticleId() );
+ $tpl->set( 'currevisionid', $this->getTitle()->getLatestRevID() );
$tpl->set( 'isarticle', $out->isArticle() );
@@ -252,13 +250,13 @@ class SkinTemplate extends Skin {
$subpagestr = $this->subPageSubtitle();
$tpl->set(
'subtitle', !empty( $subpagestr ) ?
- '<span class="subpages">'.$subpagestr.'</span>'.$out->getSubtitle() :
+ '<span class="subpages">' . $subpagestr . '</span>' . $out->getSubtitle() :
$out->getSubtitle()
);
$undelete = $this->getUndeleteLink();
$tpl->set(
'undelete', !empty( $undelete ) ?
- '<span class="subpages">'.$undelete.'</span>' :
+ '<span class="subpages">' . $undelete . '</span>' :
''
);
@@ -278,7 +276,7 @@ class SkinTemplate extends Skin {
$tpl->setRef( 'mimetype', $wgMimeType );
$tpl->setRef( 'jsmimetype', $wgJsMimeType );
- $tpl->setRef( 'charset', $wgOutputEncoding );
+ $tpl->set( 'charset', 'UTF-8' );
$tpl->setRef( 'wgScript', $wgScript );
$tpl->setRef( 'skinname', $this->skinname );
$tpl->set( 'skinclass', get_class( $this ) );
@@ -286,13 +284,13 @@ class SkinTemplate extends Skin {
$tpl->set( 'printable', $out->isPrintable() );
$tpl->set( 'handheld', $wgRequest->getBool( 'handheld' ) );
$tpl->setRef( 'loggedin', $this->loggedin );
- $tpl->set( 'notspecialpage', $this->mTitle->getNamespace() != NS_SPECIAL );
+ $tpl->set( 'notspecialpage', $this->getTitle()->getNamespace() != NS_SPECIAL );
/* XXX currently unused, might get useful later
- $tpl->set( "editable", ($this->mTitle->getNamespace() != NS_SPECIAL ) );
- $tpl->set( "exists", $this->mTitle->getArticleID() != 0 );
- $tpl->set( "watch", $this->mTitle->userIsWatching() ? "unwatch" : "watch" );
- $tpl->set( "protect", count($this->mTitle->isProtected()) ? "unprotect" : "protect" );
- $tpl->set( "helppage", wfMsg('helppage'));
+ $tpl->set( 'editable', ( $this->getTitle()->getNamespace() != NS_SPECIAL ) );
+ $tpl->set( 'exists', $this->getTitle()->getArticleID() != 0 );
+ $tpl->set( 'watch', $this->getTitle()->userIsWatching() ? 'unwatch' : 'watch' );
+ $tpl->set( 'protect', count( $this->getTitle()->isProtected() ) ? 'unprotect' : 'protect' );
+ $tpl->set( 'helppage', wfMsg( 'helppage' ) );
*/
$tpl->set( 'searchaction', $this->escapeSearchLink() );
$tpl->set( 'searchtitle', SpecialPage::getTitleFor( 'Search' )->getPrefixedDBKey() );
@@ -303,39 +301,34 @@ class SkinTemplate extends Skin {
$tpl->setRef( 'serverurl', $wgServer );
$tpl->setRef( 'logopath', $wgLogo );
- $lang = wfUILang();
- $tpl->set( 'lang', $lang->getCode() );
- $tpl->set( 'dir', $lang->getDir() );
- $tpl->set( 'rtl', $lang->isRTL() );
+ $contentlang = $wgContLang->getCode();
+ $contentdir = $wgContLang->getDir();
+ $userlang = $wgLang->getCode();
+ $userdir = $wgLang->getDir();
+
+ $tpl->set( 'lang', $userlang );
+ $tpl->set( 'dir', $userdir );
+ $tpl->set( 'rtl', $wgLang->isRTL() );
$tpl->set( 'capitalizeallnouns', $wgLang->capitalizeAllNouns() ? ' capitalize-all-nouns' : '' );
$tpl->set( 'showjumplinks', $wgUser->getOption( 'showjumplinks' ) );
$tpl->set( 'username', $wgUser->isAnon() ? null : $this->username );
$tpl->setRef( 'userpage', $this->userpage );
$tpl->setRef( 'userpageurl', $this->userpageUrlDetails['href'] );
- $tpl->set( 'userlang', $wgLang->getCode() );
+ $tpl->set( 'userlang', $userlang );
// Users can have their language set differently than the
// content of the wiki. For these users, tell the web browser
// that interface elements are in a different language.
$tpl->set( 'userlangattributes', '' );
- $tpl->set( 'specialpageattributes', '' );
-
- $lang = $wgLang->getCode();
- $dir = $wgLang->getDir();
- if ( $lang !== $wgContLang->getCode() || $dir !== $wgContLang->getDir() ) {
- $attrs = " lang='$lang' dir='$dir'";
+ $tpl->set( 'specialpageattributes', '' ); # obsolete
+ if ( $userlang !== $contentlang || $userdir !== $contentdir ) {
+ $attrs = " lang='$userlang' dir='$userdir'";
$tpl->set( 'userlangattributes', $attrs );
-
- // The content of SpecialPages should be presented in the
- // user's language. Content of regular pages should not be touched.
- if( $this->mTitle->isSpecialPage() ) {
- $tpl->set( 'specialpageattributes', $attrs );
- }
}
- $newtalks = $this->getNewtalks();
+ $newtalks = $this->getNewtalks( $out );
wfProfileOut( __METHOD__ . '-stuff2' );
@@ -343,10 +336,12 @@ class SkinTemplate extends Skin {
$tpl->setRef( 'newtalk', $newtalks );
$tpl->setRef( 'skin', $this );
$tpl->set( 'logo', $this->logoText() );
- if ( $out->isArticle() and ( !isset( $oldid ) or isset( $diff ) ) and
- $wgArticle and 0 != $wgArticle->getID() ){
+ if ( $out->isArticle() && ( !isset( $oldid ) || isset( $diff ) ) &&
+ $this->getTitle()->exists() )
+ {
+ $article = new Article( $this->getTitle(), 0 );
if ( !$wgDisableCounters ) {
- $viewcount = $wgLang->formatNum( $wgArticle->getCount() );
+ $viewcount = $wgLang->formatNum( $article->getCount() );
if ( $viewcount ) {
$tpl->set( 'viewcount', wfMsgExt( 'viewcount', array( 'parseinline' ), $viewcount ) );
} else {
@@ -360,7 +355,7 @@ class SkinTemplate extends Skin {
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( 'watchlist',
array( 'COUNT(*) AS n' ),
- array( 'wl_title' => $dbr->strencode( $this->mTitle->getDBkey() ), 'wl_namespace' => $this->mTitle->getNamespace() ),
+ array( 'wl_title' => $dbr->strencode( $this->getTitle()->getDBkey() ), 'wl_namespace' => $this->getTitle()->getNamespace() ),
__METHOD__
);
$x = $dbr->fetchObject( $res );
@@ -382,9 +377,9 @@ class SkinTemplate extends Skin {
$this->credits = false;
if( $wgMaxCredits != 0 ){
- $this->credits = Credits::getCredits( $wgArticle, $wgMaxCredits, $wgShowCreditsIfMax );
+ $this->credits = Action::factory( 'credits', $article )->getCredits( $wgMaxCredits, $wgShowCreditsIfMax );
} else {
- $tpl->set( 'lastmod', $this->lastModified() );
+ $tpl->set( 'lastmod', $this->lastModified( $article ) );
}
$tpl->setRef( 'credits', $this->credits );
@@ -425,19 +420,23 @@ class SkinTemplate extends Skin {
'disclaimer',
),
) );
-
+
global $wgFooterIcons;
$tpl->set( 'footericons', $wgFooterIcons );
- foreach ( $tpl->data["footericons"] as $footerIconsKey => &$footerIconsBlock ) {
- if ( count($footerIconsBlock) > 0 ) {
+ foreach ( $tpl->data['footericons'] as $footerIconsKey => &$footerIconsBlock ) {
+ if ( count( $footerIconsBlock ) > 0 ) {
foreach ( $footerIconsBlock as &$footerIcon ) {
- if ( isset($footerIcon["src"]) ) {
- if ( !isset($footerIcon["width"]) ) $footerIcon["width"] = 88;
- if ( !isset($footerIcon["height"]) ) $footerIcon["height"] = 31;
+ if ( isset( $footerIcon['src'] ) ) {
+ if ( !isset( $footerIcon['width'] ) ) {
+ $footerIcon['width'] = 88;
+ }
+ if ( !isset( $footerIcon['height'] ) ) {
+ $footerIcon['height'] = 31;
+ }
}
}
} else {
- unset($tpl->data["footericons"][$footerIconsKey]);
+ unset( $tpl->data['footericons'][$footerIconsKey] );
}
}
@@ -448,16 +447,22 @@ class SkinTemplate extends Skin {
}
$tpl->set( 'reporttime', wfReportTime() );
- $tpl->set( 'sitenotice', wfGetSiteNotice() );
+ $tpl->set( 'sitenotice', $this->getSiteNotice() );
$tpl->set( 'bottomscripts', $this->bottomScripts( $out ) );
-
- $printfooter = "<div class=\"printfooter\">\n" . $this->printSource() . "</div>\n";
- global $wgBetterDirectionality;
- if ( $wgBetterDirectionality ) {
- $realBodyAttribs = array( 'lang' => $wgLanguageCode, 'dir' => $wgContLang->getDir() );
+ $tpl->set( 'printfooter', $this->printSource() );
+
+ # Add a <div class="mw-content-ltr/rtl"> around the body text
+ # not for special pages or file pages AND only when viewing AND if the page exists
+ # (or is in MW namespace, because that has default content)
+ if( !in_array( $this->getTitle()->getNamespace(), array( NS_SPECIAL, NS_FILE ) ) &&
+ in_array( $action, array( 'view', 'historysubmit' ) ) &&
+ ( $this->getTitle()->exists() || $this->getTitle()->getNamespace() == NS_MEDIAWIKI ) ) {
+ $pageLang = $this->getTitle()->getPageLanguage();
+ $realBodyAttribs = array( 'lang' => $pageLang->getCode(), 'dir' => $pageLang->getDir(),
+ 'class' => 'mw-content-'.$pageLang->getDir() );
$out->mBodytext = Html::rawElement( 'div', $realBodyAttribs, $out->mBodytext );
}
- $out->mBodytext .= $printfooter . $this->generateDebugHTML();
+
$tpl->setRef( 'bodytext', $out->mBodytext );
# Language links
@@ -489,12 +494,14 @@ class SkinTemplate extends Skin {
wfProfileIn( __METHOD__ . '-stuff5' );
# Personal toolbar
- $tpl->set( 'personal_urls', $this->buildPersonalUrls() );
- $content_actions = $this->buildContentActionUrls();
+ $tpl->set( 'personal_urls', $this->buildPersonalUrls( $out ) );
+ $content_navigation = $this->buildContentNavigationUrls( $out );
+ $content_actions = $this->buildContentActionUrls( $content_navigation );
+ $tpl->setRef( 'content_navigation', $content_navigation );
$tpl->setRef( 'content_actions', $content_actions );
$tpl->set( 'sidebar', $this->buildSidebar() );
- $tpl->set( 'nav_urls', $this->buildNavUrls() );
+ $tpl->set( 'nav_urls', $this->buildNavUrls( $out ) );
// Set the head scripts near the end, in case the above actions resulted in added scripts
if ( $this->useHeadElement ) {
@@ -503,11 +510,22 @@ class SkinTemplate extends Skin {
$tpl->set( 'headscripts', $out->getScript() );
}
+ $tpl->set( 'debughtml', $this->generateDebugHTML() );
+
// original version by hansm
if( !wfRunHooks( 'SkinTemplateOutputPageBeforeExec', array( &$this, &$tpl ) ) ) {
wfDebug( __METHOD__ . ": Hook SkinTemplateOutputPageBeforeExec broke outputPage execution!\n" );
}
+ // Set the bodytext to another key so that skins can just output it on it's own
+ // and output printfooter and debughtml separately
+ $tpl->set( 'bodycontent', $tpl->data['bodytext'] );
+
+ // Append printfooter and debughtml onto bodytext so that skins that were already
+ // using bodytext before they were split out don't suddenly start not outputting information
+ $tpl->data['bodytext'] .= Html::rawElement( 'div', array( 'class' => 'printfooter' ), "\n{$tpl->data['printfooter']}" ) . "\n";
+ $tpl->data['bodytext'] .= $tpl->data['debughtml'];
+
// allow extensions adding stuff after the page content.
// See Skin::afterContentHook() for further documentation.
$tpl->set( 'dataAfterContent', $this->afterContentHook() );
@@ -536,35 +554,39 @@ class SkinTemplate extends Skin {
}
/**
+ * Output a boolean indiciating if buildPersonalUrls should output separate
+ * login and create account links or output a combined link
+ * By default we simply return a global config setting that affects most skins
+ * This is setup as a method so that like with $wgLogo and getLogo() a skin
+ * can override this setting and always output one or the other if it has
+ * a reason it can't output one of the two modes.
+ */
+ function useCombinedLoginLink() {
+ global $wgUseCombinedLoginLink;
+ return $wgUseCombinedLoginLink;
+ }
+
+ /**
* build array of urls for personal toolbar
* @return array
- * @private
*/
- function buildPersonalUrls() {
- global $wgOut, $wgRequest;
+ protected function buildPersonalUrls( OutputPage $out ) {
+ global $wgRequest;
- $title = $wgOut->getTitle();
+ $title = $out->getTitle();
$pageurl = $title->getLocalURL();
wfProfileIn( __METHOD__ );
/* set up the default links for the personal toolbar */
$personal_urls = array();
-
- # Due to bug 32276, if a user does not have read permissions,
- # $wgOut->getTitle() will just give Special:Badtitle, which is
- # not especially useful as a returnto parameter. Use the title
- # from the request instead, if there was one.
- $page = Title::newFromURL( $wgRequest->getVal( 'title', '' ) );
- $page = $wgRequest->getVal( 'returnto', $page );
- $returnto = '';
- if( strval( $page ) !== '' ) {
- $returnto = "returnto=$page";
- $query = $wgRequest->getVal( 'returntoquery', $this->thisquery );
- if( $query != '' ) {
- $returnto .= "&returntoquery=$query";
- }
+
+ $page = $wgRequest->getVal( 'returnto', $this->thispage );
+ $query = $wgRequest->getVal( 'returntoquery', $this->thisquery );
+ $a = array( 'returnto' => $page );
+ if( $query != '' ) {
+ $a['returntoquery'] = $query;
}
-
+ $returnto = wfArrayToCGI( $a );
if( $this->loggedin ) {
$personal_urls['userpage'] = array(
'text' => $this->username,
@@ -599,8 +621,7 @@ class SkinTemplate extends Skin {
# contain the original alias-with-subpage.
$origTitle = Title::newFromText( $wgRequest->getText( 'title' ) );
if( $origTitle instanceof Title && $origTitle->getNamespace() == NS_SPECIAL ) {
- list( $spName, $spPar ) =
- SpecialPage::resolveAliasWithSubpage( $origTitle->getText() );
+ list( $spName, $spPar ) = SpecialPageFactory::resolveAlias( $origTitle->getText() );
$active = $spName == 'Contributions'
&& ( ( $spPar && $spPar == $this->username )
|| $wgRequest->getText( 'target' ) == $this->username );
@@ -625,24 +646,42 @@ class SkinTemplate extends Skin {
);
} else {
global $wgUser;
- $loginlink = $wgUser->isAllowed( 'createaccount' )
+ $useCombinedLoginLink = $this->useCombinedLoginLink();
+ $loginlink = $wgUser->isAllowed( 'createaccount' ) && $useCombinedLoginLink
? 'nav-login-createaccount'
: 'login';
+ $is_signup = $wgRequest->getText('type') == "signup";
# anonlogin & login are the same
$login_url = array(
'text' => wfMsg( $loginlink ),
'href' => self::makeSpecialUrl( 'Userlogin', $returnto ),
- 'active' => $title->isSpecial( 'Userlogin' )
+ 'active' => $title->isSpecial( 'Userlogin' ) && ( $loginlink == "nav-login-createaccount" || !$is_signup )
);
- global $wgProto, $wgSecureLogin;
- if( $wgProto === 'http' && $wgSecureLogin ) {
+ if ( $wgUser->isAllowed( 'createaccount' ) && !$useCombinedLoginLink ) {
+ $createaccount_url = array(
+ 'text' => wfMsg( 'createaccount' ),
+ 'href' => self::makeSpecialUrl( 'Userlogin', "$returnto&type=signup" ),
+ 'active' => $title->isSpecial( 'Userlogin' ) && $is_signup
+ );
+ }
+ global $wgServer, $wgSecureLogin;
+ if( substr( $wgServer, 0, 5 ) === 'http:' && $wgSecureLogin ) {
$title = SpecialPage::getTitleFor( 'Userlogin' );
$https_url = preg_replace( '/^http:/', 'https:', $title->getFullURL() );
$login_url['href'] = $https_url;
- $login_url['class'] = 'link-https'; # FIXME class depends on skin
+ # @todo FIXME: Class depends on skin
+ $login_url['class'] = 'link-https';
+ if ( isset($createaccount_url) ) {
+ $https_url = preg_replace( '/^http:/', 'https:',
+ $title->getFullURL("type=signup") );
+ $createaccount_url['href'] = $https_url;
+ # @todo FIXME: Class depends on skin
+ $createaccount_url['class'] = 'link-https';
+ }
}
+
if( $this->showIPinHeader() ) {
$href = &$this->userpageUrlDetails['href'];
$personal_urls['anonuserpage'] = array(
@@ -663,6 +702,9 @@ class SkinTemplate extends Skin {
} else {
$personal_urls['login'] = $login_url;
}
+ if ( isset($createaccount_url) ) {
+ $personal_urls['createaccount'] = $createaccount_url;
+ }
}
wfRunHooks( 'PersonalUrls', array( &$personal_urls, &$title ) );
@@ -670,6 +712,15 @@ class SkinTemplate extends Skin {
return $personal_urls;
}
+ /**
+ * TODO document
+ * @param $title Title
+ * @param $message String message key
+ * @param $selected Bool
+ * @param $query String
+ * @param $checkEdit Bool
+ * @return array
+ */
function tabAction( $title, $message, $selected, $query = '', $checkEdit = false ) {
$classes = array();
if( $selected ) {
@@ -680,10 +731,19 @@ class SkinTemplate extends Skin {
$query = 'action=edit&redlink=1';
}
- $text = wfMsg( $message );
- if ( wfEmptyMsg( $message, $text ) ) {
+ // wfMessageFallback will nicely accept $message as an array of fallbacks
+ // or just a single key
+ $msg = wfMessageFallback( $message );
+ if ( is_array($message) ) {
+ // for hook compatibility just keep the last message name
+ $message = end($message);
+ }
+ if ( $msg->exists() ) {
+ $text = $msg->text();
+ } else {
global $wgContLang;
- $text = $wgContLang->getFormattedNsText( MWNamespace::getSubject( $title->getNamespace() ) );
+ $text = $wgContLang->getFormattedNsText(
+ MWNamespace::getSubject( $title->getNamespace() ) );
}
$result = array();
@@ -696,7 +756,8 @@ class SkinTemplate extends Skin {
return array(
'class' => implode( ' ', $classes ),
'text' => $text,
- 'href' => $title->getLocalUrl( $query ) );
+ 'href' => $title->getLocalUrl( $query ),
+ 'primary' => true );
}
function makeTalkUrlDetails( $name, $urlaction = '' ) {
@@ -723,204 +784,372 @@ class SkinTemplate extends Skin {
}
/**
- * an array of edit links by default used for the tabs
+ * a structured array of links usually used for the tabs in a skin
+ *
+ * There are 4 standard sections
+ * namespaces: Used for namespace tabs like special, page, and talk namespaces
+ * views: Used for primary page views like read, edit, history
+ * actions: Used for most extra page actions like deletion, protection, etc...
+ * variants: Used to list the language variants for the page
+ *
+ * Each section's value is a key/value array of links for that section.
+ * The links themseves have these common keys:
+ * - class: The css classes to apply to the tab
+ * - text: The text to display on the tab
+ * - href: The href for the tab to point to
+ * - rel: An optional rel= for the tab's link
+ * - redundant: If true the tab will be dropped in skins using content_actions
+ * this is useful for tabs like "Read" which only have meaning in skins that
+ * take special meaning from the grouped structure of content_navigation
+ *
+ * Views also have an extra key which can be used:
+ * - primary: If this is not true skins like vector may try to hide the tab
+ * when the user has limited space in their browser window
+ *
+ * content_navigation using code also expects these ids to be present on the
+ * links, however these are usually automatically generated by SkinTemplate
+ * itself and are not necessary when using a hook. The only things these may
+ * matter to are people modifying content_navigation after it's initial creation:
+ * - id: A "preferred" id, most skins are best off outputting this preferred id for best compatibility
+ * - tooltiponly: This is set to true for some tabs in cases where the system
+ * believes that the accesskey should not be added to the tab.
+ *
* @return array
- * @private
*/
- function buildContentActionUrls() {
- global $wgContLang, $wgLang, $wgOut, $wgUser, $wgRequest, $wgArticle;
+ protected function buildContentNavigationUrls( OutputPage $out ) {
+ global $wgContLang, $wgLang, $wgUser, $wgRequest;
+ global $wgDisableLangConversion;
wfProfileIn( __METHOD__ );
+ $title = $this->getRelevantTitle(); // Display tabs for the relevant title rather than always the title itself
+ $onPage = $title->equals($this->getTitle());
+
+ $content_navigation = array(
+ 'namespaces' => array(),
+ 'views' => array(),
+ 'actions' => array(),
+ 'variants' => array()
+ );
+
+ // parameters
$action = $wgRequest->getVal( 'action', 'view' );
$section = $wgRequest->getVal( 'section' );
- $content_actions = array();
- $userCanRead = $this->mTitle->userCanRead();
- $prevent_active_tabs = false;
- wfRunHooks( 'SkinTemplatePreventOtherActiveTabs', array( &$this, &$prevent_active_tabs ) );
+ $userCanRead = $title->userCanRead();
+ $skname = $this->skinname;
- if( $this->iscontent ) {
- $subjpage = $this->mTitle->getSubjectPage();
- $talkpage = $this->mTitle->getTalkPage();
+ $preventActiveTabs = false;
+ wfRunHooks( 'SkinTemplatePreventOtherActiveTabs', array( &$this, &$preventActiveTabs ) );
- $nskey = $this->mTitle->getNamespaceKey();
- $content_actions[$nskey] = $this->tabAction(
- $subjpage,
- $nskey,
- !$this->mTitle->isTalkPage() && !$prevent_active_tabs,
- '', $userCanRead
- );
+ // Checks if page is some kind of content
+ if( $title->getNamespace() != NS_SPECIAL ) {
+ // Gets page objects for the related namespaces
+ $subjectPage = $title->getSubjectPage();
+ $talkPage = $title->getTalkPage();
+
+ // Determines if this is a talk page
+ $isTalk = $title->isTalkPage();
+
+ // Generates XML IDs from namespace names
+ $subjectId = $title->getNamespaceKey( '' );
+
+ if ( $subjectId == 'main' ) {
+ $talkId = 'talk';
+ } else {
+ $talkId = "{$subjectId}_talk";
+ }
- $content_actions['talk'] = $this->tabAction(
- $talkpage,
- 'talk',
- $this->mTitle->isTalkPage() && !$prevent_active_tabs,
- '',
- $userCanRead
+ // Adds namespace links
+ $subjectMsg = array( "nstab-$subjectId" );
+ if ( $subjectPage->isMainPage() ) {
+ array_unshift($subjectMsg, 'mainpage-nstab');
+ }
+ $content_navigation['namespaces'][$subjectId] = $this->tabAction(
+ $subjectPage, $subjectMsg, !$isTalk && !$preventActiveTabs, '', $userCanRead
);
+ $content_navigation['namespaces'][$subjectId]['context'] = 'subject';
+ $content_navigation['namespaces'][$talkId] = $this->tabAction(
+ $talkPage, array( "nstab-$talkId", 'talk' ), $isTalk && !$preventActiveTabs, '', $userCanRead
+ );
+ $content_navigation['namespaces'][$talkId]['context'] = 'talk';
+
+ // Adds view view link
+ if ( $title->exists() && $userCanRead ) {
+ $content_navigation['views']['view'] = $this->tabAction(
+ $isTalk ? $talkPage : $subjectPage,
+ array( "$skname-view-view", 'view' ),
+ ( $onPage && ($action == 'view' || $action == 'purge' ) ), '', true
+ );
+ $content_navigation['views']['view']['redundant'] = true; // signal to hide this from simple content_actions
+ }
wfProfileIn( __METHOD__ . '-edit' );
- if ( $userCanRead && $this->mTitle->quickUserCan( 'edit' ) && ( $this->mTitle->exists() || $this->mTitle->quickUserCan( 'create' ) ) ) {
- $istalk = $this->mTitle->isTalkPage();
- $istalkclass = $istalk?' istalk':'';
- $content_actions['edit'] = array(
- 'class' => ( ( ( $action == 'edit' or $action == 'submit' ) and $section != 'new' ) ? 'selected' : '' ) . $istalkclass,
- 'text' => ( $this->mTitle->exists() || ( $this->mTitle->getNamespace() == NS_MEDIAWIKI && !wfEmptyMsg( $this->mTitle->getText() ) ) )
- ? wfMsg( 'edit' )
- : wfMsg( 'create' ),
- 'href' => $this->mTitle->getLocalUrl( $this->editUrlOptions() )
- );
- // adds new section link if page is a current revision of a talk page or
- if ( ( $wgArticle && $wgArticle->isCurrent() && $istalk ) || $wgOut->showNewSectionLink() ) {
- if ( !$wgOut->forceHideNewSectionLink() ) {
- $content_actions['addsection'] = array(
+ // Checks if user can...
+ if (
+ // read and edit the current page
+ $userCanRead && $title->quickUserCan( 'edit' ) &&
+ (
+ // if it exists
+ $title->exists() ||
+ // or they can create one here
+ $title->quickUserCan( 'create' )
+ )
+ ) {
+ // Builds CSS class for talk page links
+ $isTalkClass = $isTalk ? ' istalk' : '';
+
+ // Determines if we're in edit mode
+ $selected = (
+ $onPage &&
+ ( $action == 'edit' || $action == 'submit' ) &&
+ ( $section != 'new' )
+ );
+ $msgKey = $title->exists() || ( $title->getNamespace() == NS_MEDIAWIKI && $title->getDefaultMessageText() !== false ) ?
+ "edit" : "create";
+ $content_navigation['views']['edit'] = array(
+ 'class' => ( $selected ? 'selected' : '' ) . $isTalkClass,
+ 'text' => wfMessageFallback( "$skname-view-$msgKey", $msgKey )->text(),
+ 'href' => $title->getLocalURL( $this->editUrlOptions() ),
+ 'primary' => true, // don't collapse this in vector
+ );
+ // Checks if this is a current rev of talk page and we should show a new
+ // section link
+ if ( ( $isTalk && $this->isRevisionCurrent() ) || ( $out->showNewSectionLink() ) ) {
+ // Checks if we should ever show a new section link
+ if ( !$out->forceHideNewSectionLink() ) {
+ // Adds new section link
+ //$content_navigation['actions']['addsection']
+ $content_navigation['views']['addsection'] = array(
'class' => $section == 'new' ? 'selected' : false,
- 'text' => wfMsg( 'addsection' ),
- 'href' => $this->mTitle->getLocalUrl( 'action=edit&section=new' )
+ 'text' => wfMessageFallback( "$skname-action-addsection", 'addsection' )->text(),
+ 'href' => $title->getLocalURL( 'action=edit&section=new' )
);
}
}
- } elseif ( $this->mTitle->hasSourceText() && $userCanRead ) {
- $content_actions['viewsource'] = array(
- 'class' => ($action == 'edit') ? 'selected' : false,
- 'text' => wfMsg( 'viewsource' ),
- 'href' => $this->mTitle->getLocalUrl( $this->editUrlOptions() )
+ // Checks if the page has some kind of viewable content
+ } elseif ( $title->hasSourceText() && $userCanRead ) {
+ // Adds view source view link
+ $content_navigation['views']['viewsource'] = array(
+ 'class' => ( $onPage && $action == 'edit' ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-action-viewsource", 'viewsource' )->text(),
+ 'href' => $title->getLocalURL( $this->editUrlOptions() ),
+ 'primary' => true, // don't collapse this in vector
);
}
wfProfileOut( __METHOD__ . '-edit' );
wfProfileIn( __METHOD__ . '-live' );
- if ( $this->mTitle->exists() && $userCanRead ) {
- $content_actions['history'] = array(
- 'class' => ($action == 'history') ? 'selected' : false,
- 'text' => wfMsg( 'history_short' ),
- 'href' => $this->mTitle->getLocalUrl( 'action=history' ),
+ // Checks if the page exists
+ if ( $title->exists() && $userCanRead ) {
+ // Adds history view link
+ $content_navigation['views']['history'] = array(
+ 'class' => ( $onPage && $action == 'history' ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-view-history", 'history_short' )->text(),
+ 'href' => $title->getLocalURL( 'action=history' ),
'rel' => 'archives',
);
if( $wgUser->isAllowed( 'delete' ) ) {
- $content_actions['delete'] = array(
- 'class' => ($action == 'delete') ? 'selected' : false,
- 'text' => wfMsg( 'delete' ),
- 'href' => $this->mTitle->getLocalUrl( 'action=delete' )
+ $content_navigation['actions']['delete'] = array(
+ 'class' => ( $onPage && $action == 'delete' ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-action-delete", 'delete' )->text(),
+ 'href' => $title->getLocalURL( 'action=delete' )
);
}
- if ( $this->mTitle->quickUserCan( 'move' ) ) {
- $moveTitle = SpecialPage::getTitleFor( 'Movepage', $this->thispage );
- $content_actions['move'] = array(
- 'class' => $this->mTitle->isSpecial( 'Movepage' ) ? 'selected' : false,
- 'text' => wfMsg( 'move' ),
- 'href' => $moveTitle->getLocalUrl()
+ if ( $title->quickUserCan( 'move' ) ) {
+ $moveTitle = SpecialPage::getTitleFor( 'Movepage', $title->getPrefixedDBkey() );
+ $content_navigation['actions']['move'] = array(
+ 'class' => $this->getTitle()->isSpecial( 'Movepage' ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-action-move", 'move' )->text(),
+ 'href' => $moveTitle->getLocalURL()
);
}
- if ( $this->mTitle->getNamespace() !== NS_MEDIAWIKI && $wgUser->isAllowed( 'protect' ) ) {
- if( !$this->mTitle->isProtected() ){
- $content_actions['protect'] = array(
- 'class' => ($action == 'protect') ? 'selected' : false,
- 'text' => wfMsg( 'protect' ),
- 'href' => $this->mTitle->getLocalUrl( 'action=protect' )
- );
-
- } else {
- $content_actions['unprotect'] = array(
- 'class' => ($action == 'unprotect') ? 'selected' : false,
- 'text' => wfMsg( 'unprotect' ),
- 'href' => $this->mTitle->getLocalUrl( 'action=unprotect' )
- );
- }
+ if ( $title->getNamespace() !== NS_MEDIAWIKI && $wgUser->isAllowed( 'protect' ) ) {
+ $mode = !$title->isProtected() ? 'protect' : 'unprotect';
+ $content_navigation['actions'][$mode] = array(
+ 'class' => ( $onPage && $action == $mode ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-action-$mode", $mode )->text(),
+ 'href' => $title->getLocalURL( "action=$mode" )
+ );
}
} else {
- //article doesn't exist or is deleted
- if( $wgUser->isAllowed( 'deletedhistory' ) && $wgUser->isAllowed( 'deletedtext' ) ) {
- $n = $this->mTitle->isDeleted();
+ // article doesn't exist or is deleted
+ if ( $wgUser->isAllowed( 'deletedhistory' ) ) {
+ $n = $title->isDeleted();
if( $n ) {
$undelTitle = SpecialPage::getTitleFor( 'Undelete' );
- $content_actions['undelete'] = array(
- 'class' => false,
- 'text' => wfMsgExt( 'undelete_short', array( 'parsemag' ), $wgLang->formatNum( $n ) ),
- 'href' => $undelTitle->getLocalUrl( 'target=' . urlencode( $this->thispage ) )
- #'href' => self::makeSpecialUrl( "Undelete/$this->thispage" )
+ // If the user can't undelete but can view deleted history show them a "View .. deleted" tab instead
+ $msgKey = $wgUser->isAllowed( 'undelete' ) ? 'undelete' : 'viewdeleted';
+ $content_navigation['actions']['undelete'] = array(
+ 'class' => $this->getTitle()->isSpecial( 'Undelete' ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-action-$msgKey", "{$msgKey}_short" )
+ ->params( $wgLang->formatNum( $n ) )->text(),
+ 'href' => $undelTitle->getLocalURL( array( 'target' => $title->getPrefixedDBkey() ) )
);
}
}
- if ( $this->mTitle->getNamespace() !== NS_MEDIAWIKI && $wgUser->isAllowed( 'protect' ) ) {
- if( !$this->mTitle->getRestrictions( 'create' ) ) {
- $content_actions['protect'] = array(
- 'class' => ($action == 'protect') ? 'selected' : false,
- 'text' => wfMsg( 'protect' ),
- 'href' => $this->mTitle->getLocalUrl( 'action=protect' )
- );
-
- } else {
- $content_actions['unprotect'] = array(
- 'class' => ($action == 'unprotect') ? 'selected' : false,
- 'text' => wfMsg( 'unprotect' ),
- 'href' => $this->mTitle->getLocalUrl( 'action=unprotect' )
- );
- }
+ if ( $title->getNamespace() !== NS_MEDIAWIKI && $wgUser->isAllowed( 'protect' ) ) {
+ $mode = !$title->getRestrictions( 'create' ) ? 'protect' : 'unprotect';
+ $content_navigation['actions'][$mode] = array(
+ 'class' => ( $onPage && $action == $mode ) ? 'selected' : false,
+ 'text' => wfMessageFallback( "$skname-action-$mode", $mode )->text(),
+ 'href' => $title->getLocalURL( "action=$mode" )
+ );
}
}
-
wfProfileOut( __METHOD__ . '-live' );
- if( $this->loggedin ) {
- if( !$this->mTitle->userIsWatching()) {
- $content_actions['watch'] = array(
- 'class' => ($action == 'watch' or $action == 'unwatch') ? 'selected' : false,
- 'text' => wfMsg( 'watch' ),
- 'href' => $this->mTitle->getLocalUrl( 'action=watch' )
- );
- } else {
- $content_actions['unwatch'] = array(
- 'class' => ($action == 'unwatch' or $action == 'watch') ? 'selected' : false,
- 'text' => wfMsg( 'unwatch' ),
- 'href' => $this->mTitle->getLocalUrl( 'action=unwatch' )
- );
- }
+ // Checks if the user is logged in
+ if ( $this->loggedin ) {
+ /**
+ * The following actions use messages which, if made particular to
+ * the any specific skins, would break the Ajax code which makes this
+ * action happen entirely inline. Skin::makeGlobalVariablesScript
+ * defines a set of messages in a javascript object - and these
+ * messages are assumed to be global for all skins. Without making
+ * a change to that procedure these messages will have to remain as
+ * the global versions.
+ */
+ $mode = $title->userIsWatching() ? 'unwatch' : 'watch';
+ $token = WatchAction::getWatchToken( $title, $wgUser, $mode );
+ $content_navigation['actions'][$mode] = array(
+ 'class' => $onPage && ( $action == 'watch' || $action == 'unwatch' ) ? 'selected' : false,
+ 'text' => wfMsg( $mode ), // uses 'watch' or 'unwatch' message
+ 'href' => $title->getLocalURL( array( 'action' => $mode, 'token' => $token ) )
+ );
}
-
- wfRunHooks( 'SkinTemplateTabs', array( $this, &$content_actions ) );
+ wfRunHooks( 'SkinTemplateNavigation', array( &$this, &$content_navigation ) );
} else {
- /* show special page tab */
-
- $content_actions[$this->mTitle->getNamespaceKey()] = array(
+ // If it's not content, it's got to be a special page
+ $content_navigation['namespaces']['special'] = array(
'class' => 'selected',
- 'text' => wfMsg('nstab-special'),
+ 'text' => wfMsg( 'nstab-special' ),
'href' => $wgRequest->getRequestURL(), // @bug 2457, 2510
+ 'context' => 'subject'
);
- wfRunHooks( 'SkinTemplateBuildContentActionUrlsAfterSpecialPage', array( &$this, &$content_actions ) );
+ wfRunHooks( 'SkinTemplateNavigation::SpecialPage',
+ array( &$this, &$content_navigation ) );
}
- /* show links to different language variants */
- global $wgDisableLangConversion;
+ // Gets list of language variants
$variants = $wgContLang->getVariants();
- if( !$wgDisableLangConversion && sizeof( $variants ) > 1 ) {
+ // Checks that language conversion is enabled and variants exist
+ if( !$wgDisableLangConversion && count( $variants ) > 1 ) {
+ // Gets preferred variant
$preferred = $wgContLang->getPreferredVariant();
- $vcount=0;
+ // Loops over each variant
foreach( $variants as $code ) {
+ // Gets variant name from language code
$varname = $wgContLang->getVariantname( $code );
- if( $varname == 'disable' )
+ // Checks if the variant is marked as disabled
+ if( $varname == 'disable' ) {
+ // Skips this variant
continue;
- $selected = ( $code == $preferred )? 'selected' : false;
- $content_actions['varlang-' . $vcount] = array(
- 'class' => $selected,
+ }
+ // Appends variant link
+ $content_navigation['variants'][] = array(
+ 'class' => ( $code == $preferred ) ? 'selected' : false,
'text' => $varname,
- 'href' => $this->mTitle->getLocalURL( '', $code )
+ 'href' => $title->getLocalURL( '', $code )
);
- $vcount ++;
}
}
- wfRunHooks( 'SkinTemplateContentActions', array( &$content_actions ) );
+ // Equiv to SkinTemplateContentActions
+ wfRunHooks( 'SkinTemplateNavigation::Universal', array( &$this, &$content_navigation ) );
+
+ // Setup xml ids and tooltip info
+ foreach ( $content_navigation as $section => &$links ) {
+ foreach ( $links as $key => &$link ) {
+ $xmlID = $key;
+ if ( isset( $link['context'] ) && $link['context'] == 'subject' ) {
+ $xmlID = 'ca-nstab-' . $xmlID;
+ } elseif ( isset( $link['context'] ) && $link['context'] == 'talk' ) {
+ $xmlID = 'ca-talk';
+ } elseif ( $section == "variants" ) {
+ $xmlID = 'ca-varlang-' . $xmlID;
+ } else {
+ $xmlID = 'ca-' . $xmlID;
+ }
+ $link['id'] = $xmlID;
+ }
+ }
+
+ # We don't want to give the watch tab an accesskey if the
+ # page is being edited, because that conflicts with the
+ # accesskey on the watch checkbox. We also don't want to
+ # give the edit tab an accesskey, because that's fairly su-
+ # perfluous and conflicts with an accesskey (Ctrl-E) often
+ # used for editing in Safari.
+ if( in_array( $action, array( 'edit', 'submit' ) ) ) {
+ if ( isset($content_navigation['views']['edit']) ) {
+ $content_navigation['views']['edit']['tooltiponly'] = true;
+ }
+ if ( isset($content_navigation['actions']['watch']) ) {
+ $content_navigation['actions']['watch']['tooltiponly'] = true;
+ }
+ if ( isset($content_navigation['actions']['unwatch']) ) {
+ $content_navigation['actions']['unwatch']['tooltiponly'] = true;
+ }
+ }
wfProfileOut( __METHOD__ );
+
+ return $content_navigation;
+ }
+
+ /**
+ * an array of edit links by default used for the tabs
+ * @return array
+ * @private
+ */
+ function buildContentActionUrls( $content_navigation ) {
+
+ wfProfileIn( __METHOD__ );
+
+ // content_actions has been replaced with content_navigation for backwards
+ // compatibility and also for skins that just want simple tabs content_actions
+ // is now built by flattening the content_navigation arrays into one
+
+ $content_actions = array();
+
+ foreach ( $content_navigation as $links ) {
+
+ foreach ( $links as $key => $value ) {
+
+ if ( isset($value["redundant"]) && $value["redundant"] ) {
+ // Redundant tabs are dropped from content_actions
+ continue;
+ }
+
+ // content_actions used to have ids built using the "ca-$key" pattern
+ // so the xmlID based id is much closer to the actual $key that we want
+ // for that reason we'll just strip out the ca- if present and use
+ // the latter potion of the "id" as the $key
+ if ( isset($value["id"]) && substr($value["id"], 0, 3) == "ca-" ) {
+ $key = substr($value["id"], 3);
+ }
+
+ if ( isset($content_actions[$key]) ) {
+ wfDebug( __METHOD__ . ": Found a duplicate key for $key while flattening content_navigation into content_actions." );
+ continue;
+ }
+
+ $content_actions[$key] = $value;
+
+ }
+
+ }
+
+ wfProfileOut( __METHOD__ );
+
return $content_actions;
}
@@ -929,8 +1158,8 @@ class SkinTemplate extends Skin {
* @return array
* @private
*/
- function buildNavUrls() {
- global $wgUseTrackbacks, $wgOut, $wgUser, $wgRequest;
+ protected function buildNavUrls( OutputPage $out ) {
+ global $wgUseTrackbacks, $wgUser, $wgRequest;
global $wgUploadNavigationUrl;
wfProfileIn( __METHOD__ );
@@ -954,32 +1183,34 @@ class SkinTemplate extends Skin {
// A print stylesheet is attached to all pages, but nobody ever
// figures that out. :) Add a link...
if( $this->iscontent && ( $action == 'view' || $action == 'purge' ) ) {
- if ( !$wgOut->isPrintable() ) {
+ if ( !$out->isPrintable() ) {
$nav_urls['print'] = array(
'text' => wfMsg( 'printableversion' ),
- 'href' => $wgRequest->appendQuery( 'printable=yes' )
+ 'href' => $this->getTitle()->getLocalURL(
+ $wgRequest->appendQueryValue( 'printable', 'yes', true ) )
);
}
// Also add a "permalink" while we're at it
- if ( $this->mRevisionId ) {
+ $revid = $this->getRevisionId();
+ if ( $revid ) {
$nav_urls['permalink'] = array(
'text' => wfMsg( 'permalink' ),
- 'href' => $wgOut->getTitle()->getLocalURL( "oldid=$this->mRevisionId" )
+ 'href' => $out->getTitle()->getLocalURL( "oldid=$revid" )
);
}
- // Copy in case this undocumented, shady hook tries to mess with internals
- $revid = $this->mRevisionId;
- wfRunHooks( 'SkinTemplateBuildNavUrlsNav_urlsAfterPermalink', array( &$this, &$nav_urls, &$revid, &$revid ) );
+ // Use the copy of revision ID in case this undocumented, shady hook tries to mess with internals
+ wfRunHooks( 'SkinTemplateBuildNavUrlsNav_urlsAfterPermalink',
+ array( &$this, &$nav_urls, &$revid, &$revid ) );
}
- if( $this->mTitle->getNamespace() != NS_SPECIAL ) {
+ if( $this->getTitle()->getNamespace() != NS_SPECIAL ) {
$wlhTitle = SpecialPage::getTitleFor( 'Whatlinkshere', $this->thispage );
$nav_urls['whatlinkshere'] = array(
'href' => $wlhTitle->getLocalUrl()
);
- if( $this->mTitle->getArticleId() ) {
+ if( $this->getTitle()->getArticleId() ) {
$rclTitle = SpecialPage::getTitleFor( 'Recentchangeslinked', $this->thispage );
$nav_urls['recentchangeslinked'] = array(
'href' => $rclTitle->getLocalUrl()
@@ -989,17 +1220,19 @@ class SkinTemplate extends Skin {
}
if( $wgUseTrackbacks )
$nav_urls['trackbacklink'] = array(
- 'href' => $wgOut->getTitle()->trackbackURL()
+ 'href' => $out->getTitle()->trackbackURL()
);
}
- if( $this->mTitle->getNamespace() == NS_USER || $this->mTitle->getNamespace() == NS_USER_TALK ) {
- $rootUser = strtok( $this->mTitle->getText(), '/' );
- $id = User::idFromName( $rootUser );
- $ip = User::isIP( $rootUser );
+ $user = $this->getRelevantUser();
+ if ( $user ) {
+ $id = $user->getID();
+ $ip = $user->isAnon();
+ $rootUser = $user->getName();
} else {
$id = 0;
$ip = false;
+ $rootUser = null;
}
if( $id || $ip ) { # both anons and non-anons have contribs list
@@ -1022,7 +1255,7 @@ class SkinTemplate extends Skin {
if ( $wgUser->isAllowed( 'block' ) ) {
$nav_urls['blockip'] = array(
- 'href' => self::makeSpecialUrlSubpage( 'Blockip', $rootUser )
+ 'href' => self::makeSpecialUrlSubpage( 'Block', $rootUser )
);
} else {
$nav_urls['blockip'] = false;
@@ -1048,11 +1281,12 @@ class SkinTemplate extends Skin {
* @private
*/
function getNameSpaceKey() {
- return $this->mTitle->getNamespaceKey();
+ return $this->getTitle()->getNamespaceKey();
}
/**
* @private
+ * @todo FIXME: Why is this duplicated in/from OutputPage::getHeadScripts()??
*/
function setupUserJs( $allowUserJs ) {
global $wgRequest, $wgJsMimeType;
@@ -1061,7 +1295,7 @@ class SkinTemplate extends Skin {
$action = $wgRequest->getVal( 'action', 'view' );
if( $allowUserJs && $this->loggedin ) {
- if( $this->mTitle->isJsSubpage() and $this->userCanPreview( $action ) ) {
+ if( $this->getTitle()->isJsSubpage() and $this->userCanPreview( $action ) ) {
# XXX: additional security check/prompt?
$this->userjsprev = '/*<![CDATA[*/ ' . $wgRequest->getText( 'wpTextbox1' ) . ' /*]]>*/';
} else {
@@ -1191,9 +1425,528 @@ abstract class QuickTemplate {
/**
* @private
+ *
+ * @return bool
*/
function haveMsg( $str ) {
$msg = $this->translator->translate( $str );
return ( $msg != '-' ) && ( $msg != '' ); # ????
}
+
+ /**
+ * Get the Skin object related to this object
+ *
+ * @return Skin object
+ */
+ public function getSkin() {
+ return $this->data['skin'];
+ }
+}
+
+/**
+ * New base template for a skin's template extended from QuickTemplate
+ * this class features helper methods that provide common ways of interacting
+ * with the data stored in the QuickTemplate
+ */
+abstract class BaseTemplate extends QuickTemplate {
+
+ /**
+ * Create an array of common toolbox items from the data in the quicktemplate
+ * stored by SkinTemplate.
+ * The resulting array is built acording to a format intended to be passed
+ * through makeListItem to generate the html.
+ */
+ function getToolbox() {
+ wfProfileIn( __METHOD__ );
+
+ $toolbox = array();
+ if ( $this->data['notspecialpage'] ) {
+ $toolbox['whatlinkshere'] = $this->data['nav_urls']['whatlinkshere'];
+ $toolbox['whatlinkshere']['id'] = 't-whatlinkshere';
+ if ( $this->data['nav_urls']['recentchangeslinked'] ) {
+ $toolbox['recentchangeslinked'] = $this->data['nav_urls']['recentchangeslinked'];
+ $toolbox['recentchangeslinked']['msg'] = 'recentchangeslinked-toolbox';
+ $toolbox['recentchangeslinked']['id'] = 't-recentchangeslinked';
+ }
+ }
+ if( isset( $this->data['nav_urls']['trackbacklink'] ) && $this->data['nav_urls']['trackbacklink'] ) {
+ $toolbox['trackbacklink'] = $this->data['nav_urls']['trackbacklink'];
+ $toolbox['trackbacklink']['id'] = 't-trackbacklink';
+ }
+ if ( $this->data['feeds'] ) {
+ $toolbox['feeds']['id'] = 'feedlinks';
+ $toolbox['feeds']['links'] = array();
+ foreach ( $this->data['feeds'] as $key => $feed ) {
+ $toolbox['feeds']['links'][$key] = $feed;
+ $toolbox['feeds']['links'][$key]['id'] = "feed-$key";
+ $toolbox['feeds']['links'][$key]['rel'] = 'alternate';
+ $toolbox['feeds']['links'][$key]['type'] = "application/{$key}+xml";
+ $toolbox['feeds']['links'][$key]['class'] = 'feedlink';
+ }
+ }
+ foreach ( array( 'contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages' ) as $special ) {
+ if ( $this->data['nav_urls'][$special] ) {
+ $toolbox[$special] = $this->data['nav_urls'][$special];
+ $toolbox[$special]['id'] = "t-$special";
+ }
+ }
+ if ( !empty( $this->data['nav_urls']['print']['href'] ) ) {
+ $toolbox['print'] = $this->data['nav_urls']['print'];
+ $toolbox['print']['rel'] = 'alternate';
+ $toolbox['print']['msg'] = 'printableversion';
+ }
+ if( $this->data['nav_urls']['permalink'] ) {
+ $toolbox['permalink'] = $this->data['nav_urls']['permalink'];
+ if( $toolbox['permalink']['href'] === '' ) {
+ unset( $toolbox['permalink']['href'] );
+ $toolbox['ispermalink']['tooltiponly'] = true;
+ $toolbox['ispermalink']['id'] = 't-ispermalink';
+ $toolbox['ispermalink']['msg'] = 'permalink';
+ } else {
+ $toolbox['permalink']['id'] = 't-permalink';
+ }
+ }
+ wfRunHooks( 'BaseTemplateToolbox', array( &$this, &$toolbox ) );
+ wfProfileOut( __METHOD__ );
+ return $toolbox;
+ }
+
+ /**
+ * Create an array of personal tools items from the data in the quicktemplate
+ * stored by SkinTemplate.
+ * The resulting array is built acording to a format intended to be passed
+ * through makeListItem to generate the html.
+ * This is in reality the same list as already stored in personal_urls
+ * however it is reformatted so that you can just pass the individual items
+ * to makeListItem instead of hardcoding the element creation boilerplate.
+ */
+ function getPersonalTools() {
+ $personal_tools = array();
+ foreach( $this->data['personal_urls'] as $key => $ptool ) {
+ # The class on a personal_urls item is meant to go on the <a> instead
+ # of the <li> so we have to use a single item "links" array instead
+ # of using most of the personal_url's keys directly
+ $personal_tools[$key] = array();
+ $personal_tools[$key]["links"][] = array();
+ $personal_tools[$key]["links"][0]["single-id"] = $personal_tools[$key]["id"] = "pt-$key";
+ if ( isset($ptool["active"]) ) {
+ $personal_tools[$key]["active"] = $ptool["active"];
+ }
+ foreach ( array("href", "class", "text") as $k ) {
+ if ( isset($ptool[$k]) )
+ $personal_tools[$key]["links"][0][$k] = $ptool[$k];
+ }
+ }
+ return $personal_tools;
+ }
+
+ function getSidebar( $options = array() ) {
+ // Force the rendering of the following portals
+ $sidebar = $this->data['sidebar'];
+ if ( !isset( $sidebar['SEARCH'] ) ) {
+ $sidebar['SEARCH'] = true;
+ }
+ if ( !isset( $sidebar['TOOLBOX'] ) ) {
+ $sidebar['TOOLBOX'] = true;
+ }
+ if ( !isset( $sidebar['LANGUAGES'] ) ) {
+ $sidebar['LANGUAGES'] = true;
+ }
+
+ if ( !isset( $options['search'] ) || $options['search'] !== true ) {
+ unset( $sidebar['SEARCH'] );
+ }
+ if ( isset( $options['toolbox'] ) && $options['toolbox'] === false ) {
+ unset( $sidebar['TOOLBOX'] );
+ }
+ if ( isset( $options['languages'] ) && $options['languages'] === false ) {
+ unset( $sidebar['LANGUAGES'] );
+ }
+
+ $boxes = array();
+ foreach ( $sidebar as $boxName => $content ) {
+ if ( $content === false ) {
+ continue;
+ }
+ switch ( $boxName ) {
+ case 'SEARCH':
+ // Search is a special case, skins should custom implement this
+ $boxes[$boxName] = array(
+ 'id' => "p-search",
+ 'header' => wfMessage( 'search' )->text(),
+ 'generated' => false,
+ 'content' => true,
+ );
+ break;
+ case 'TOOLBOX':
+ $msgObj = wfMessage( 'toolbox' );
+ $boxes[$boxName] = array(
+ 'id' => "p-tb",
+ 'header' => $msgObj->exists() ? $msgObj->text() : 'toolbox',
+ 'generated' => false,
+ 'content' => $this->getToolbox(),
+ );
+ break;
+ case 'LANGUAGES':
+ if ( $this->data['language_urls'] ) {
+ $msgObj = wfMessage( 'otherlanguages' );
+ $boxes[$boxName] = array(
+ 'id' => "p-lang",
+ 'header' => $msgObj->exists() ? $msgObj->text() : 'otherlanguages',
+ 'generated' => false,
+ 'content' => $this->data['language_urls'],
+ );
+ }
+ break;
+ default:
+ $msgObj = wfMessage( $boxName );
+ $boxes[$boxName] = array(
+ 'id' => "p-$boxName",
+ 'header' => $msgObj->exists() ? $msgObj->text() : $boxName,
+ 'generated' => true,
+ 'content' => $content,
+ );
+ break;
+ }
+ }
+
+ // HACK: Compatibility with extensions still using SkinTemplateToolboxEnd
+ $hookContents = null;
+ if ( isset( $boxes['TOOLBOX'] ) ) {
+ ob_start();
+ // We pass an extra 'true' at the end so extensions using BaseTemplateToolbox
+ // can abort and avoid outputting double toolbox links
+ wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this, true ) );
+ $hookContents = ob_get_contents();
+ ob_end_clean();
+ if ( !trim( $hookContents ) ) {
+ $hookContents = null;
+ }
+ }
+ // END hack
+
+ if ( isset( $options['htmlOnly'] ) && $options['htmlOnly'] === true ) {
+ foreach ( $boxes as $boxName => $box ) {
+ if ( is_array( $box['content'] ) ) {
+ $content = "<ul>";
+ foreach ( $box['content'] as $key => $val ) {
+ $content .= "\n " . $this->makeListItem( $key, $val );
+ }
+ // HACK, shove the toolbox end onto the toolbox if we're rendering itself
+ if ( $hookContents ) {
+ $content .= "\n $hookContents";
+ }
+ // END hack
+ $content .= "\n</ul>\n";
+ $boxes[$boxName]['content'] = $content;
+ }
+ }
+ } else {
+ if ( $hookContents ) {
+ $boxes['TOOLBOXEND'] = array(
+ 'id' => "p-toolboxend",
+ 'header' => $boxes['TOOLBOX']['header'],
+ 'generated' => false,
+ 'content' => "<ul>{$hookContents}</ul>",
+ );
+ // HACK: Make sure that TOOLBOXEND is sorted next to TOOLBOX
+ $boxes2 = array();
+ foreach ( $boxes as $key => $box ) {
+ if ( $key === 'TOOLBOXEND' ) {
+ continue;
+ }
+ $boxes2[$key] = $box;
+ if ( $key === 'TOOLBOX' ) {
+ $boxes2['TOOLBOXEND'] = $boxes['TOOLBOXEND'];
+ }
+ }
+ $boxes = $boxes2;
+ // END hack
+ }
+ }
+
+ return $boxes;
+ }
+
+ /**
+ * Makes a link, usually used by makeListItem to generate a link for an item
+ * in a list used in navigation lists, portlets, portals, sidebars, etc...
+ *
+ * $key is a string, usually a key from the list you are generating this link from
+ * $item is an array containing some of a specific set of keys.
+ * The text of the link will be generated either from the contents of the "text"
+ * key in the $item array, if a "msg" key is present a message by that name will
+ * be used, and if neither of those are set the $key will be used as a message name.
+ * If a "href" key is not present makeLink will just output htmlescaped text.
+ * The href, id, class, rel, and type keys are used as attributes for the link if present.
+ * If an "id" or "single-id" (if you don't want the actual id to be output on the link)
+ * is present it will be used to generate a tooltip and accesskey for the link.
+ * If you don't want an accesskey, set $item['tooltiponly'] = true;
+ * $options can be used to affect the output of a link:
+ * You can use a text-wrapper key to specify a list of elements to wrap the
+ * text of a link in. This should be an array of arrays containing a 'tag' and
+ * optionally an 'attributes' key. If you only have one element you don't need
+ * to wrap it in another array. eg: To use <a><span>...</span></a> in all links
+ * use array( 'text-wrapper' => array( 'tag' => 'span' ) ) for your options.
+ * A link-class key can be used to specify additional classes to apply to all links.
+ * A link-fallback can be used to specify a tag to use instead of <a> if there is
+ * no link. eg: If you specify 'link-fallback' => 'span' than any non-link will
+ * output a <span> instead of just text.
+ */
+ function makeLink( $key, $item, $options = array() ) {
+ if ( isset( $item['text'] ) ) {
+ $text = $item['text'];
+ } else {
+ $text = $this->translator->translate( isset( $item['msg'] ) ? $item['msg'] : $key );
+ }
+
+ $html = htmlspecialchars( $text );
+
+ if ( isset( $options['text-wrapper'] ) ) {
+ $wrapper = $options['text-wrapper'];
+ if ( isset( $wrapper['tag'] ) ) {
+ $wrapper = array( $wrapper );
+ }
+ while ( count( $wrapper ) > 0 ) {
+ $element = array_pop( $wrapper );
+ $html = Html::rawElement( $element['tag'], isset( $element['attributes'] ) ? $element['attributes'] : null, $html );
+ }
+ }
+
+ if ( isset( $item['href'] ) || isset( $options['link-fallback'] ) ) {
+ $attrs = $item;
+ foreach ( array( 'single-id', 'text', 'msg', 'tooltiponly' ) as $k ) {
+ unset( $attrs[$k] );
+ }
+
+ if ( isset( $item['id'] ) && !isset( $item['single-id'] ) ) {
+ $item['single-id'] = $item['id'];
+ }
+ if ( isset( $item['single-id'] ) ) {
+ if ( isset( $item['tooltiponly'] ) && $item['tooltiponly'] ) {
+ $title = Linker::titleAttrib( $item['single-id'] );
+ if ( $title !== false ) {
+ $attrs['title'] = $title;
+ }
+ } else {
+ $tip = Linker::tooltipAndAccesskeyAttribs( $item['single-id'] );
+ if ( isset( $tip['title'] ) && $tip['title'] !== false ) {
+ $attrs['title'] = $tip['title'];
+ }
+ if ( isset( $tip['accesskey'] ) && $tip['accesskey'] !== false ) {
+ $attrs['accesskey'] = $tip['accesskey'];
+ }
+ }
+ }
+ if ( isset( $options['link-class'] ) ) {
+ if ( isset( $attrs['class'] ) ) {
+ $attrs['class'] .= " {$options['link-class']}";
+ } else {
+ $attrs['class'] = $options['link-class'];
+ }
+ }
+ $html = Html::rawElement( isset( $attrs['href'] ) ? 'a' : $options['link-fallback'], $attrs, $html );
+ }
+
+ return $html;
+ }
+
+ /**
+ * Generates a list item for a navigation, portlet, portal, sidebar... etc list
+ * $key is a string, usually a key from the list you are generating this link from
+ * $item is an array of list item data containing some of a specific set of keys.
+ * The "id" and "class" keys will be used as attributes for the list item,
+ * if "active" contains a value of true a "active" class will also be appended to class.
+ * If you want something other than a <li> you can pass a tag name such as
+ * "tag" => "span" in the $options array to change the tag used.
+ * link/content data for the list item may come in one of two forms
+ * A "links" key may be used, in which case it should contain an array with
+ * a list of links to include inside the list item, see makeLink for the format
+ * of individual links array items.
+ * Otherwise the relevant keys from the list item $item array will be passed
+ * to makeLink instead. Note however that "id" and "class" are used by the
+ * list item directly so they will not be passed to makeLink
+ * (however the link will still support a tooltip and accesskey from it)
+ * If you need an id or class on a single link you should include a "links"
+ * array with just one link item inside of it.
+ * $options is also passed on to makeLink calls
+ */
+ function makeListItem( $key, $item, $options = array() ) {
+ if ( isset( $item['links'] ) ) {
+ $html = '';
+ foreach ( $item['links'] as $linkKey => $link ) {
+ $html .= $this->makeLink( $linkKey, $link, $options );
+ }
+ } else {
+ $link = $item;
+ // These keys are used by makeListItem and shouldn't be passed on to the link
+ foreach ( array( 'id', 'class', 'active', 'tag' ) as $k ) {
+ unset( $link[$k] );
+ }
+ if ( isset( $item['id'] ) ) {
+ // The id goes on the <li> not on the <a> for single links
+ // but makeSidebarLink still needs to know what id to use when
+ // generating tooltips and accesskeys.
+ $link['single-id'] = $item['id'];
+ }
+ $html = $this->makeLink( $key, $link, $options );
+ }
+
+ $attrs = array();
+ foreach ( array( 'id', 'class' ) as $attr ) {
+ if ( isset( $item[$attr] ) ) {
+ $attrs[$attr] = $item[$attr];
+ }
+ }
+ if ( isset( $item['active'] ) && $item['active'] ) {
+ if ( !isset( $attrs['class'] ) ) {
+ $attrs['class'] = '';
+ }
+ $attrs['class'] .= ' active';
+ $attrs['class'] = trim( $attrs['class'] );
+ }
+ return Html::rawElement( isset( $options['tag'] ) ? $options['tag'] : 'li', $attrs, $html );
+ }
+
+ function makeSearchInput( $attrs = array() ) {
+ $realAttrs = array(
+ 'type' => 'search',
+ 'name' => 'search',
+ 'value' => isset( $this->data['search'] ) ? $this->data['search'] : '',
+ );
+ $realAttrs = array_merge( $realAttrs, Linker::tooltipAndAccesskeyAttribs( 'search' ), $attrs );
+ return Html::element( 'input', $realAttrs );
+ }
+
+ function makeSearchButton( $mode, $attrs = array() ) {
+ switch( $mode ) {
+ case 'go':
+ case 'fulltext':
+ $realAttrs = array(
+ 'type' => 'submit',
+ 'name' => $mode,
+ 'value' => $this->translator->translate(
+ $mode == 'go' ? 'searcharticle' : 'searchbutton' ),
+ );
+ $realAttrs = array_merge(
+ $realAttrs,
+ Linker::tooltipAndAccesskeyAttribs( "search-$mode" ),
+ $attrs
+ );
+ return Html::element( 'input', $realAttrs );
+ case 'image':
+ $buttonAttrs = array(
+ 'type' => 'submit',
+ 'name' => 'button',
+ );
+ $buttonAttrs = array_merge(
+ $buttonAttrs,
+ Linker::tooltipAndAccesskeyAttribs( 'search-fulltext' ),
+ $attrs
+ );
+ unset( $buttonAttrs['src'] );
+ unset( $buttonAttrs['alt'] );
+ $imgAttrs = array(
+ 'src' => $attrs['src'],
+ 'alt' => isset( $attrs['alt'] )
+ ? $attrs['alt']
+ : $this->translator->translate( 'searchbutton' ),
+ );
+ return Html::rawElement( 'button', $buttonAttrs, Html::element( 'img', $imgAttrs ) );
+ default:
+ throw new MWException( 'Unknown mode passed to BaseTemplate::makeSearchButton' );
+ }
+ }
+
+ /**
+ * Returns an array of footerlinks trimmed down to only those footer links that
+ * are valid.
+ * If you pass "flat" as an option then the returned array will be a flat array
+ * of footer icons instead of a key/value array of footerlinks arrays broken
+ * up into categories.
+ */
+ function getFooterLinks( $option = null ) {
+ $footerlinks = $this->data['footerlinks'];
+
+ // Reduce footer links down to only those which are being used
+ $validFooterLinks = array();
+ foreach( $footerlinks as $category => $links ) {
+ $validFooterLinks[$category] = array();
+ foreach( $links as $link ) {
+ if( isset( $this->data[$link] ) && $this->data[$link] ) {
+ $validFooterLinks[$category][] = $link;
+ }
+ }
+ if ( count( $validFooterLinks[$category] ) <= 0 ) {
+ unset( $validFooterLinks[$category] );
+ }
+ }
+
+ if ( $option == 'flat' ) {
+ // fold footerlinks into a single array using a bit of trickery
+ $validFooterLinks = call_user_func_array(
+ 'array_merge',
+ array_values( $validFooterLinks )
+ );
+ }
+
+ return $validFooterLinks;
+ }
+
+ /**
+ * Returns an array of footer icons filtered down by options relevant to how
+ * the skin wishes to display them.
+ * If you pass "icononly" as the option all footer icons which do not have an
+ * image icon set will be filtered out.
+ * If you pass "nocopyright" then MediaWiki's copyright icon will not be included
+ * in the list of footer icons. This is mostly useful for skins which only
+ * display the text from footericons instead of the images and don't want a
+ * duplicate copyright statement because footerlinks already rendered one.
+ */
+ function getFooterIcons( $option = null ) {
+ // Generate additional footer icons
+ $footericons = $this->data['footericons'];
+
+ if ( $option == 'icononly' ) {
+ // Unset any icons which don't have an image
+ foreach ( $footericons as &$footerIconsBlock ) {
+ foreach ( $footerIconsBlock as $footerIconKey => $footerIcon ) {
+ if ( !is_string( $footerIcon ) && !isset( $footerIcon['src'] ) ) {
+ unset( $footerIconsBlock[$footerIconKey] );
+ }
+ }
+ }
+ // Redo removal of any empty blocks
+ foreach ( $footericons as $footerIconsKey => &$footerIconsBlock ) {
+ if ( count( $footerIconsBlock ) <= 0 ) {
+ unset( $footericons[$footerIconsKey] );
+ }
+ }
+ } elseif ( $option == 'nocopyright' ) {
+ unset( $footericons['copyright']['copyright'] );
+ if ( count( $footericons['copyright'] ) <= 0 ) {
+ unset( $footericons['copyright'] );
+ }
+ }
+
+ return $footericons;
+ }
+
+ /**
+ * Output the basic end-page trail including bottomscripts, reporttime, and
+ * debug stuff. This should be called right before outputting the closing
+ * body and html tags.
+ */
+ function printTrail() { ?>
+<?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
+<?php $this->html('reporttime') ?>
+<?php if ( $this->data['debug'] ): ?>
+<!-- Debug output:
+<?php $this->text( 'debug' ); ?>
+
+-->
+<?php endif;
+ }
+
}
+
diff --git a/includes/SpecialPage.php b/includes/SpecialPage.php
index 12ad517a..0b21326a 100644
--- a/includes/SpecialPage.php
+++ b/includes/SpecialPage.php
@@ -28,235 +28,53 @@
* @ingroup SpecialPage
*/
class SpecialPage {
- /**#@+
- * @access private
- */
- /**
- * The canonical name of this special page
- * Also used for the default <h1> heading, @see getDescription()
- */
- var $mName;
- /**
- * The local name of this special page
- */
- var $mLocalName;
- /**
- * Minimum user level required to access this page, or "" for anyone.
- * Also used to categorise the pages in Special:Specialpages
- */
- var $mRestriction;
- /**
- * Listed in Special:Specialpages?
- */
- var $mListed;
- /**
- * Function name called by the default execute()
- */
- var $mFunction;
- /**
- * File which needs to be included before the function above can be called
- */
- var $mFile;
- /**
- * Whether or not this special page is being included from an article
- */
- var $mIncluding;
- /**
- * Whether the special page can be included in an article
- */
- var $mIncludable;
- /**
- * Query parameters that can be passed through redirects
- */
- var $mAllowedRedirectParams = array();
- /**
- * Query parameteres added by redirects
- */
- var $mAddedRedirectParams = array();
- /**
- * List of special pages, followed by parameters.
- * If the only parameter is a string, that is the page name.
- * Otherwise, it is an array. The format is one of:
- ** array( 'SpecialPage', name, right )
- ** array( 'IncludableSpecialPage', name, right, listed? )
- ** array( 'UnlistedSpecialPage', name, right )
- ** array( 'SpecialRedirectToSpecial', name, page to redirect to, special page param, ... )
- */
- static public $mList = array(
- # Maintenance Reports
- 'BrokenRedirects' => array( 'SpecialPage', 'BrokenRedirects' ),
- 'Deadendpages' => array( 'SpecialPage', 'Deadendpages' ),
- 'DoubleRedirects' => array( 'SpecialPage', 'DoubleRedirects' ),
- 'Longpages' => array( 'SpecialPage', 'Longpages' ),
- 'Ancientpages' => array( 'SpecialPage', 'Ancientpages' ),
- 'Lonelypages' => array( 'SpecialPage', 'Lonelypages' ),
- 'Fewestrevisions' => array( 'SpecialPage', 'Fewestrevisions' ),
- 'Withoutinterwiki' => array( 'SpecialPage', 'Withoutinterwiki' ),
- 'Protectedpages' => 'SpecialProtectedpages',
- 'Protectedtitles' => 'SpecialProtectedtitles',
- 'Shortpages' => array( 'SpecialPage', 'Shortpages' ),
- 'Uncategorizedcategories' => array( 'SpecialPage', 'Uncategorizedcategories' ),
- 'Uncategorizedimages' => array( 'SpecialPage', 'Uncategorizedimages' ),
- 'Uncategorizedpages' => array( 'SpecialPage', 'Uncategorizedpages' ),
- 'Uncategorizedtemplates' => array( 'SpecialPage', 'Uncategorizedtemplates' ),
- 'Unusedcategories' => array( 'SpecialPage', 'Unusedcategories' ),
- 'Unusedimages' => array( 'SpecialPage', 'Unusedimages' ),
- 'Unusedtemplates' => array( 'SpecialPage', 'Unusedtemplates' ),
- 'Unwatchedpages' => array( 'SpecialPage', 'Unwatchedpages', 'unwatchedpages' ),
- 'Wantedcategories' => array( 'SpecialPage', 'Wantedcategories' ),
- 'Wantedfiles' => array( 'SpecialPage', 'Wantedfiles' ),
- 'Wantedpages' => array( 'IncludableSpecialPage', 'Wantedpages' ),
- 'Wantedtemplates' => array( 'SpecialPage', 'Wantedtemplates' ),
-
- # List of pages
- 'Allpages' => 'SpecialAllpages',
- 'Prefixindex' => 'SpecialPrefixindex',
- 'Categories' => 'SpecialCategories',
- 'Disambiguations' => array( 'SpecialPage', 'Disambiguations' ),
- 'Listredirects' => array( 'SpecialPage', 'Listredirects' ),
-
- # Login/create account
- 'Userlogin' => array( 'SpecialPage', 'Userlogin' ),
- 'CreateAccount' => array( 'SpecialRedirectToSpecial', 'CreateAccount', 'Userlogin', 'signup', array( 'uselang' ) ),
-
- # Users and rights
- 'Blockip' => 'IPBlockForm',
- 'Ipblocklist' => 'IPUnblockForm',
- 'Unblock' => array( 'SpecialRedirectToSpecial', 'Unblock', 'Ipblocklist', false, array( 'uselang', 'ip', 'id' ), array( 'action' => 'unblock' ) ),
- 'Resetpass' => 'SpecialResetpass',
- 'DeletedContributions' => 'DeletedContributionsPage',
- 'Preferences' => 'SpecialPreferences',
- 'Contributions' => 'SpecialContributions',
- 'Listgrouprights' => 'SpecialListGroupRights',
- 'Listusers' => array( 'SpecialPage', 'Listusers' ),
- 'Listadmins' => array( 'SpecialRedirectToSpecial', 'Listadmins', 'Listusers', 'sysop' ),
- 'Listbots' => array( 'SpecialRedirectToSpecial', 'Listbots', 'Listusers', 'bot' ),
- 'Activeusers' => 'SpecialActiveUsers',
- 'Userrights' => 'UserrightsPage',
-
- # Recent changes and logs
- 'Newimages' => array( 'IncludableSpecialPage', 'Newimages' ),
- 'Log' => 'SpecialLog',
- 'Watchlist' => array( 'SpecialPage', 'Watchlist' ),
- 'Newpages' => 'SpecialNewpages',
- 'Recentchanges' => 'SpecialRecentchanges',
- 'Recentchangeslinked' => 'SpecialRecentchangeslinked',
- 'Tags' => 'SpecialTags',
-
- # Media reports and uploads
- 'Listfiles' => array( 'SpecialPage', 'Listfiles' ),
- 'Filepath' => 'SpecialFilepath',
- 'MIMEsearch' => array( 'SpecialPage', 'MIMEsearch' ),
- 'FileDuplicateSearch' => array( 'SpecialPage', 'FileDuplicateSearch' ),
- 'Upload' => 'SpecialUpload',
- 'UploadStash' => 'SpecialUploadStash',
-
- # Wiki data and tools
- 'Statistics' => 'SpecialStatistics',
- 'Allmessages' => 'SpecialAllmessages',
- 'Version' => 'SpecialVersion',
- 'Lockdb' => 'SpecialLockdb',
- 'Unlockdb' => 'SpecialUnlockdb',
-
- # Redirecting special pages
- 'LinkSearch' => array( 'SpecialPage', 'LinkSearch' ),
- 'Randompage' => 'Randompage',
- 'Randomredirect' => 'SpecialRandomredirect',
-
- # High use pages
- 'Mostlinkedcategories' => array( 'SpecialPage', 'Mostlinkedcategories' ),
- 'Mostimages' => array( 'SpecialPage', 'Mostimages' ),
- 'Mostlinked' => array( 'SpecialPage', 'Mostlinked' ),
- 'Mostlinkedtemplates' => array( 'SpecialPage', 'Mostlinkedtemplates' ),
- 'Mostcategories' => array( 'SpecialPage', 'Mostcategories' ),
- 'Mostrevisions' => array( 'SpecialPage', 'Mostrevisions' ),
-
- # Page tools
- 'ComparePages' => 'SpecialComparePages',
- 'Export' => 'SpecialExport',
- 'Import' => 'SpecialImport',
- 'Undelete' => 'UndeleteForm',
- 'Whatlinkshere' => 'SpecialWhatlinkshere',
- 'MergeHistory' => 'SpecialMergeHistory',
-
- # Other
- 'Booksources' => 'SpecialBookSources',
-
- # Unlisted / redirects
- 'Blankpage' => 'SpecialBlankpage',
- 'Blockme' => 'SpecialBlockme',
- 'Emailuser' => 'SpecialEmailUser',
- 'Movepage' => 'MovePageForm',
- 'Mycontributions' => 'SpecialMycontributions',
- 'Mypage' => 'SpecialMypage',
- 'Mytalk' => 'SpecialMytalk',
- 'Myuploads' => 'SpecialMyuploads',
- 'Revisiondelete' => 'SpecialRevisionDelete',
- 'Specialpages' => 'SpecialSpecialpages',
- 'Userlogout' => 'SpecialUserlogout',
- );
-
- static public $mAliases;
- static public $mListInitialised = false;
-
- /**#@-*/
- /**
- * Initialise the special page list
- * This must be called before accessing SpecialPage::$mList
- */
- static function initList() {
- global $wgSpecialPages;
- global $wgDisableCounters, $wgDisableInternalSearch, $wgEmailAuthentication;
+ // The canonical name of this special page
+ // Also used for the default <h1> heading, @see getDescription()
+ /*private*/ var $mName;
- if ( self::$mListInitialised ) {
- return;
- }
- wfProfileIn( __METHOD__ );
+ // The local name of this special page
+ private $mLocalName;
- # Better to set this now, to avoid infinite recursion in carelessly written hooks
- self::$mListInitialised = true;
+ // Minimum user level required to access this page, or "" for anyone.
+ // Also used to categorise the pages in Special:Specialpages
+ private $mRestriction;
- if( !$wgDisableCounters ) {
- self::$mList['Popularpages'] = array( 'SpecialPage', 'Popularpages' );
- }
+ // Listed in Special:Specialpages?
+ private $mListed;
- if( !$wgDisableInternalSearch ) {
- self::$mList['Search'] = array( 'SpecialPage', 'Search' );
- }
+ // Function name called by the default execute()
+ private $mFunction;
- if( $wgEmailAuthentication ) {
- self::$mList['Confirmemail'] = 'EmailConfirmation';
- self::$mList['Invalidateemail'] = 'EmailInvalidation';
- }
+ // File which needs to be included before the function above can be called
+ private $mFile;
- # Add extension special pages
- self::$mList = array_merge( self::$mList, $wgSpecialPages );
+ // Whether or not this special page is being included from an article
+ protected $mIncluding;
- # Run hooks
- # This hook can be used to remove undesired built-in special pages
- wfRunHooks( 'SpecialPage_initList', array( &self::$mList ) );
- wfProfileOut( __METHOD__ );
+ // Whether the special page can be included in an article
+ protected $mIncludable;
+
+ /**
+ * Current request context
+ * @var IContextSource
+ */
+ protected $mContext;
+
+ /**
+ * Initialise the special page list
+ * This must be called before accessing SpecialPage::$mList
+ * @deprecated since 1.18
+ */
+ static function initList() {
+ // Noop
}
+ /**
+ * @deprecated since 1.18
+ */
static function initAliasList() {
- if ( !is_null( self::$mAliases ) ) {
- return;
- }
-
- global $wgContLang;
- $aliases = $wgContLang->getSpecialPageAliases();
- $missingPages = self::$mList;
- self::$mAliases = array();
- foreach ( $aliases as $realName => $aliasList ) {
- foreach ( $aliasList as $alias ) {
- self::$mAliases[$wgContLang->caseFold( $alias )] = $realName;
- }
- unset( $missingPages[$realName] );
- }
- foreach ( $missingPages as $name => $stuff ) {
- self::$mAliases[$wgContLang->caseFold( $name )] = $name;
- }
+ // Noop
}
/**
@@ -265,19 +83,11 @@ class SpecialPage {
*
* @param $alias String
* @return String or false
+ * @deprecated since 1.18 call SpecialPageFactory method directly
*/
static function resolveAlias( $alias ) {
- global $wgContLang;
-
- if ( !self::$mListInitialised ) self::initList();
- if ( is_null( self::$mAliases ) ) self::initAliasList();
- $caseFoldedAlias = $wgContLang->caseFold( $alias );
- $caseFoldedAlias = str_replace( ' ', '_', $caseFoldedAlias );
- if ( isset( self::$mAliases[$caseFoldedAlias] ) ) {
- return self::$mAliases[$caseFoldedAlias];
- } else {
- return false;
- }
+ list( $name, /*...*/ ) = SpecialPageFactory::resolveAlias( $alias );
+ return $name;
}
/**
@@ -287,16 +97,10 @@ class SpecialPage {
*
* @param $alias String
* @return Array
+ * @deprecated since 1.18 call SpecialPageFactory method directly
*/
static function resolveAliasWithSubpage( $alias ) {
- $bits = explode( '/', $alias, 2 );
- $name = self::resolveAlias( $bits[0] );
- if( !isset( $bits[1] ) ) { // bug 2087
- $par = null;
- } else {
- $par = $bits[1];
- }
- return array( $name, $par );
+ return SpecialPageFactory::resolveAlias( $alias );
}
/**
@@ -305,14 +109,11 @@ class SpecialPage {
* an associative record to $wgSpecialPages. This avoids autoloading SpecialPage.
*
* @param $page SpecialPage
- * Deprecated in 1.7, warnings in 1.17, might be removed in 1.20
+ * @deprecated since 1.7, warnings in 1.17, might be removed in 1.20
*/
static function addPage( &$page ) {
wfDeprecated( __METHOD__ );
- if ( !self::$mListInitialised ) {
- self::initList();
- }
- self::$mList[$page->mName] = $page;
+ SpecialPageFactory::getList()->{$page->mName} = $page;
}
/**
@@ -320,46 +121,34 @@ class SpecialPage {
*
* @param $page Mixed: SpecialPage or string
* @param $group String
+ * @return null
+ * @deprecated since 1.18 call SpecialPageFactory method directly
*/
static function setGroup( $page, $group ) {
- global $wgSpecialPageGroups;
- $name = is_object($page) ? $page->mName : $page;
- $wgSpecialPageGroups[$name] = $group;
+ return SpecialPageFactory::setGroup( $page, $group );
}
/**
- * Add a page to a certain display group for Special:SpecialPages
+ * Get the group that the special page belongs in on Special:SpecialPage
*
* @param $page SpecialPage
+ * @return null
+ * @deprecated since 1.18 call SpecialPageFactory method directly
*/
static function getGroup( &$page ) {
- global $wgSpecialPageGroups;
- static $specialPageGroupsCache = array();
- if( isset($specialPageGroupsCache[$page->mName]) ) {
- return $specialPageGroupsCache[$page->mName];
- }
- $group = wfMsg('specialpages-specialpagegroup-'.strtolower($page->mName));
- if( $group == ''
- || wfEmptyMsg('specialpages-specialpagegroup-'.strtolower($page->mName), $group ) ) {
- $group = isset($wgSpecialPageGroups[$page->mName])
- ? $wgSpecialPageGroups[$page->mName]
- : '-';
- }
- if( $group == '-' ) $group = 'other';
- $specialPageGroupsCache[$page->mName] = $group;
- return $group;
+ return SpecialPageFactory::getGroup( $page );
}
/**
* Remove a special page from the list
* Formerly used to disable expensive or dangerous special pages. The
* preferred method is now to add a SpecialPage_initList hook.
+ * @deprecated since 1.18
+ *
+ * @param $name String the page to remove
*/
static function removePage( $name ) {
- if ( !self::$mListInitialised ) {
- self::initList();
- }
- unset( self::$mList[$name] );
+ unset( SpecialPageFactory::getList()->$name );
}
/**
@@ -367,24 +156,10 @@ class SpecialPage {
*
* @param $name String: name of a special page
* @return Boolean: true if a special page exists with this name
+ * @deprecated since 1.18 call SpecialPageFactory method directly
*/
static function exists( $name ) {
- global $wgContLang;
- if ( !self::$mListInitialised ) {
- self::initList();
- }
- if( !self::$mAliases ) {
- self::initAliasList();
- }
-
- # Remove special pages inline parameters:
- $bits = explode( '/', $name );
- $name = $wgContLang->caseFold($bits[0]);
-
- return
- array_key_exists( $name, self::$mList )
- or array_key_exists( $name, self::$mAliases )
- ;
+ return SpecialPageFactory::exists( $name );
}
/**
@@ -392,39 +167,22 @@ class SpecialPage {
*
* @param $name String
* @return SpecialPage object or null if the page doesn't exist
+ * @deprecated since 1.18 call SpecialPageFactory method directly
*/
static function getPage( $name ) {
- if ( !self::$mListInitialised ) {
- self::initList();
- }
- if ( array_key_exists( $name, self::$mList ) ) {
- $rec = self::$mList[$name];
- if ( is_string( $rec ) ) {
- $className = $rec;
- self::$mList[$name] = new $className;
- } elseif ( is_array( $rec ) ) {
- $className = array_shift( $rec );
- self::$mList[$name] = wfCreateObject( $className, $rec );
- }
- return self::$mList[$name];
- } else {
- return null;
- }
+ return SpecialPageFactory::getPage( $name );
}
/**
* Get a special page with a given localised name, or NULL if there
* is no such special page.
*
+ * @param $alias String
* @return SpecialPage object or null if the page doesn't exist
+ * @deprecated since 1.18 call SpecialPageFactory method directly
*/
static function getPageByAlias( $alias ) {
- $realName = self::resolveAlias( $alias );
- if ( $realName ) {
- return self::getPage( $realName );
- } else {
- return null;
- }
+ return SpecialPageFactory::getPage( $alias );
}
/**
@@ -432,46 +190,20 @@ class SpecialPage {
* for the current user, and everyone.
*
* @return Associative array mapping page's name to its SpecialPage object
+ * @deprecated since 1.18 call SpecialPageFactory method directly
*/
static function getUsablePages() {
- global $wgUser;
- if ( !self::$mListInitialised ) {
- self::initList();
- }
- $pages = array();
-
- foreach ( self::$mList as $name => $rec ) {
- $page = self::getPage( $name );
- if ( $page->isListed()
- && (
- !$page->isRestricted()
- || $page->userCanExecute( $wgUser )
- )
- ) {
- $pages[$name] = $page;
- }
- }
- return $pages;
+ return SpecialPageFactory::getUsablePages();
}
/**
* Return categorised listable special pages for all users
*
* @return Associative array mapping page's name to its SpecialPage object
+ * @deprecated since 1.18 call SpecialPageFactory method directly
*/
static function getRegularPages() {
- if ( !self::$mListInitialised ) {
- self::initList();
- }
- $pages = array();
-
- foreach ( self::$mList as $name => $rec ) {
- $page = self::getPage( $name );
- if ( $page->isListed() && !$page->isRestricted() ) {
- $pages[$name] = $page;
- }
- }
- return $pages;
+ return SpecialPageFactory::getRegularPages();
}
/**
@@ -479,106 +211,28 @@ class SpecialPage {
* for the current user, but not for everyone
*
* @return Associative array mapping page's name to its SpecialPage object
+ * @deprecated since 1.18 call SpecialPageFactory method directly
*/
static function getRestrictedPages() {
- global $wgUser;
- if( !self::$mListInitialised ) {
- self::initList();
- }
- $pages = array();
-
- foreach( self::$mList as $name => $rec ) {
- $page = self::getPage( $name );
- if(
- $page->isListed()
- && $page->isRestricted()
- && $page->userCanExecute( $wgUser )
- ) {
- $pages[$name] = $page;
- }
- }
- return $pages;
+ return SpecialPageFactory::getRestrictedPages();
}
/**
* Execute a special page path.
- * The path may contain parameters, e.g. Special:Name/Params
+ * The path may contain parameters, e.g. Special:Name/Params
* Extracts the special page name and call the execute method, passing the parameters
*
* Returns a title object if the page is redirected, false if there was no such special
* page, and true if it was successful.
*
- * @param $title a title object
- * @param $including output is being captured for use in {{special:whatever}}
- */
- static function executePath( &$title, $including = false ) {
- global $wgOut, $wgTitle, $wgRequest;
- wfProfileIn( __METHOD__ );
-
- # FIXME: redirects broken due to this call
- $bits = explode( '/', $title->getDBkey(), 2 );
- $name = $bits[0];
- if( !isset( $bits[1] ) ) { // bug 2087
- $par = null;
- } else {
- $par = $bits[1];
- }
- $page = SpecialPage::getPageByAlias( $name );
- # Nonexistent?
- if ( !$page ) {
- if ( !$including ) {
- $wgOut->setArticleRelated( false );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->setStatusCode( 404 );
- $wgOut->showErrorPage( 'nosuchspecialpage', 'nospecialpagetext' );
- }
- wfProfileOut( __METHOD__ );
- return false;
- }
-
- # Check for redirect
- if ( !$including ) {
- $redirect = $page->getRedirect( $par );
- if ( $redirect ) {
- $query = $page->getRedirectQuery();
- $url = $redirect->getFullUrl( $query );
- $wgOut->redirect( $url );
- wfProfileOut( __METHOD__ );
- return $redirect;
- }
- }
-
- # Redirect to canonical alias for GET commands
- # Not for POST, we'd lose the post data, so it's best to just distribute
- # the request. Such POST requests are possible for old extensions that
- # generate self-links without being aware that their default name has
- # changed.
- if ( !$including && $name != $page->getLocalName() && !$wgRequest->wasPosted() ) {
- $query = $_GET;
- unset( $query['title'] );
- $query = wfArrayToCGI( $query );
- $title = $page->getTitle( $par );
- $url = $title->getFullUrl( $query );
- $wgOut->redirect( $url );
- wfProfileOut( __METHOD__ );
- return $redirect;
- }
-
- if ( $including && !$page->includable() ) {
- wfProfileOut( __METHOD__ );
- return false;
- } elseif ( !$including ) {
- $wgTitle = $page->getTitle();
- }
- $page->including( $including );
-
- // Execute special page
- $profName = 'Special:' . $page->name();
- wfProfileIn( $profName );
- $page->execute( $par );
- wfProfileOut( $profName );
- wfProfileOut( __METHOD__ );
- return true;
+ * @param $title Title object
+ * @param $context IContextSource
+ * @param $including Bool output is being captured for use in {{special:whatever}}
+ * @return Bool
+ * @deprecated since 1.18 call SpecialPageFactory method directly
+ */
+ public static function executePath( &$title, IContextSource &$context, $including = false ) {
+ return SpecialPageFactory::executePath( $title, $context, $including );
}
/**
@@ -586,23 +240,12 @@ class SpecialPage {
* Returns false if there was no such special page, or a title object if it was
* a redirect.
*
+ * @param $title Title
* @return String: HTML fragment
+ * @deprecated since 1.18 call SpecialPageFactory method directly
*/
static function capturePath( &$title ) {
- global $wgOut, $wgTitle;
-
- $oldTitle = $wgTitle;
- $oldOut = $wgOut;
- $wgOut = new OutputPage;
- $wgOut->setTitle( $title );
-
- $ret = SpecialPage::executePath( $title, true );
- if ( $ret === true ) {
- $ret = $wgOut->getHTML();
- }
- $wgTitle = $oldTitle;
- $wgOut = $oldOut;
- return $ret;
+ return SpecialPageFactory::capturePath( $title );
}
/**
@@ -612,42 +255,21 @@ class SpecialPage {
* @param $subpage Mixed: boolean false, or string
*
* @return String
+ * @deprecated since 1.18 call SpecialPageFactory method directly
*/
static function getLocalNameFor( $name, $subpage = false ) {
- global $wgContLang;
- $aliases = $wgContLang->getSpecialPageAliases();
- if ( isset( $aliases[$name][0] ) ) {
- $name = $aliases[$name][0];
- } else {
- // Try harder in case someone misspelled the correct casing
- $found = false;
- foreach ( $aliases as $n => $values ) {
- if ( strcasecmp( $name, $n ) === 0 ) {
- wfWarn( "Found alias defined for $n when searching for" .
- "special page aliases for $name. Case mismatch?" );
- $name = $values[0];
- $found = true;
- break;
- }
- }
- if ( !$found ) {
- wfWarn( "Did not find alias for special page '$name'. " .
- "Perhaps no aliases are defined for it?" );
- }
- }
- if ( $subpage !== false && !is_null( $subpage ) ) {
- $name = "$name/$subpage";
- }
- return $wgContLang->ucfirst( $name );
+ return SpecialPageFactory::getLocalNameFor( $name, $subpage );
}
/**
* Get a localised Title object for a specified special page name
*
+ * @param $name String
+ * @param $subpage String|Bool subpage string, or false to not use a subpage
* @return Title object
*/
- static function getTitleFor( $name, $subpage = false ) {
- $name = self::getLocalNameFor( $name, $subpage );
+ public static function getTitleFor( $name, $subpage = false ) {
+ $name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
if ( $name ) {
return Title::makeTitle( NS_SPECIAL, $name );
} else {
@@ -658,10 +280,12 @@ class SpecialPage {
/**
* Get a localised Title object for a page name with a possibly unvalidated subpage
*
+ * @param $name String
+ * @param $subpage String|Bool subpage string, or false to not use a subpage
* @return Title object or null if the page doesn't exist
*/
- static function getSafeTitleFor( $name, $subpage = false ) {
- $name = self::getLocalNameFor( $name, $subpage );
+ public static function getSafeTitleFor( $name, $subpage = false ) {
+ $name = SpecialPageFactory::getLocalNameFor( $name, $subpage );
if ( $name ) {
return Title::makeTitleSafe( NS_SPECIAL, $name );
} else {
@@ -672,15 +296,12 @@ class SpecialPage {
/**
* Get a title for a given alias
*
+ * @param $alias String
* @return Title or null if there is no such alias
+ * @deprecated since 1.18 call SpecialPageFactory method directly
*/
static function getTitleForAlias( $alias ) {
- $name = self::resolveAlias( $alias );
- if ( $name ) {
- return self::getTitleFor( $name );
- } else {
- return null;
- }
+ return SpecialPageFactory::getTitleForAlias( $alias );
}
/**
@@ -695,19 +316,27 @@ class SpecialPage {
*
* @param $name String: name of the special page, as seen in links and URLs
* @param $restriction String: user right required, e.g. "block" or "delete"
- * @param $listed Boolean: whether the page is listed in Special:Specialpages
- * @param $function Callback: function called by execute(). By default it is constructed from $name
+ * @param $listed Bool: whether the page is listed in Special:Specialpages
+ * @param $function Callback|Bool: function called by execute(). By default it is constructed from $name
* @param $file String: file which is included by execute(). It is also constructed from $name by default
- * @param $includable Boolean: whether the page can be included in normal pages
+ * @param $includable Bool: whether the page can be included in normal pages
*/
- public function __construct( $name = '', $restriction = '', $listed = true, $function = false, $file = 'default', $includable = false ) {
+ public function __construct(
+ $name = '', $restriction = '', $listed = true,
+ $function = false, $file = 'default', $includable = false
+ ) {
$this->init( $name, $restriction, $listed, $function, $file, $includable );
}
/**
* Do the real work for the constructor, mainly so __call() can intercept
* calls to SpecialPage()
- * @see __construct() for param docs
+ * @param $name String: name of the special page, as seen in links and URLs
+ * @param $restriction String: user right required, e.g. "block" or "delete"
+ * @param $listed Bool: whether the page is listed in Special:Specialpages
+ * @param $function Callback|Bool: function called by execute(). By default it is constructed from $name
+ * @param $file String: file which is included by execute(). It is also constructed from $name by default
+ * @param $includable Bool: whether the page can be included in normal pages
*/
private function init( $name, $restriction, $listed, $function, $file, $includable ) {
$this->mName = $name;
@@ -730,15 +359,16 @@ class SpecialPage {
* Use PHP's magic __call handler to get calls to the old PHP4 constructor
* because PHP E_STRICT yells at you for having __construct() and SpecialPage()
*
- * @param $name String Name of called method
+ * @param $fName String Name of called method
* @param $a Array Arguments to the method
- * @deprecated Call isn't deprecated, but SpecialPage::SpecialPage() is
+ * @deprecated since 1.17, call parent::__construct()
*/
public function __call( $fName, $a ) {
// Sometimes $fName is SpecialPage, sometimes it's specialpage. <3 PHP
if( strtolower( $fName ) == 'specialpage' ) {
- // Debug messages now, warnings in 1.19 or 1.20?
- wfDebug( "Deprecated SpecialPage::SpecialPage() called, use __construct();\n" );
+ // Deprecated messages now, remove in 1.18 or 1.20?
+ wfDeprecated( __METHOD__ );
+
$name = isset( $a[0] ) ? $a[0] : '';
$restriction = isset( $a[1] ) ? $a[1] : '';
$listed = isset( $a[2] ) ? $a[2] : true;
@@ -746,48 +376,120 @@ class SpecialPage {
$file = isset( $a[4] ) ? $a[4] : 'default';
$includable = isset( $a[5] ) ? $a[5] : false;
$this->init( $name, $restriction, $listed, $function, $file, $includable );
+ } else {
+ $className = get_class( $this );
+ throw new MWException( "Call to undefined method $className::$fName" );
}
}
- /**#@+
- * Accessor
- *
- * @deprecated
- */
- function getName() { return $this->mName; }
- function getRestriction() { return $this->mRestriction; }
- function getFile() { return $this->mFile; }
- function isListed() { return $this->mListed; }
- /**#@-*/
-
- /**#@+
- * Accessor and mutator
- */
- function name( $x = null ) { return wfSetVar( $this->mName, $x ); }
- function restrictions( $x = null) {
- # Use the one below this
- wfDeprecated( __METHOD__ );
- return wfSetVar( $this->mRestriction, $x );
+ /**
+ * Get the name of this Special Page.
+ * @return String
+ */
+ function getName() {
+ return $this->mName;
}
+
+ /**
+ * Get the permission that a user must have to execute this page
+ * @return String
+ */
+ function getRestriction() {
+ return $this->mRestriction;
+ }
+
+ /**
+ * Get the file which will be included by SpecialPage::execute() if your extension is
+ * still stuck in the past and hasn't overridden the execute() method. No modern code
+ * should want or need to know this.
+ * @return String
+ * @deprecated since 1.18
+ */
+ function getFile() {
+ return $this->mFile;
+ }
+
+ // @todo FIXME: Decide which syntax to use for this, and stick to it
+ /**
+ * Whether this special page is listed in Special:SpecialPages
+ * @since r3583 (v1.3)
+ * @return Bool
+ */
+ function isListed() {
+ return $this->mListed;
+ }
+ /**
+ * Set whether this page is listed in Special:Specialpages, at run-time
+ * @since r3583 (v1.3)
+ * @param $listed Bool
+ * @return Bool
+ */
+ function setListed( $listed ) {
+ return wfSetVar( $this->mListed, $listed );
+ }
+ /**
+ * Get or set whether this special page is listed in Special:SpecialPages
+ * @since r11308 (v1.6)
+ * @param $x Bool
+ * @return Bool
+ */
+ function listed( $x = null) {
+ return wfSetVar( $this->mListed, $x );
+ }
+
+ /**
+ * Whether it's allowed to transclude the special page via {{Special:Foo/params}}
+ * @return Bool
+ */
+ public function isIncludable(){
+ return $this->mIncludable;
+ }
+
+ /**
+ * These mutators are very evil, as the relevant variables should not mutate. So
+ * don't use them.
+ * @param $x Mixed
+ * @return Mixed
+ * @deprecated since 1.18
+ */
+ function name( $x = null ) { return wfSetVar( $this->mName, $x ); }
function restriction( $x = null) { return wfSetVar( $this->mRestriction, $x ); }
- function listed( $x = null) { return wfSetVar( $this->mListed, $x ); }
function func( $x = null) { return wfSetVar( $this->mFunction, $x ); }
function file( $x = null) { return wfSetVar( $this->mFile, $x ); }
function includable( $x = null ) { return wfSetVar( $this->mIncludable, $x ); }
- function including( $x = null ) { return wfSetVar( $this->mIncluding, $x ); }
- /**#@-*/
+
+ /**
+ * Whether the special page is being evaluated via transclusion
+ * @param $x Bool
+ * @return Bool
+ */
+ function including( $x = null ) {
+ return wfSetVar( $this->mIncluding, $x );
+ }
/**
* Get the localised name of the special page
*/
function getLocalName() {
if ( !isset( $this->mLocalName ) ) {
- $this->mLocalName = self::getLocalNameFor( $this->mName );
+ $this->mLocalName = SpecialPageFactory::getLocalNameFor( $this->mName );
}
return $this->mLocalName;
}
/**
+ * Is this page expensive (for some definition of expensive)?
+ * Expensive pages are disabled or cached in miser mode. Originally used
+ * (and still overridden) by QueryPage and subclasses, moved here so that
+ * Special:SpecialPages can safely call it for all special pages.
+ *
+ * @return Boolean
+ */
+ public function isExpensive() {
+ return false;
+ }
+
+ /**
* Can be overridden by subclasses with more complicated permissions
* schemes.
*
@@ -808,7 +510,7 @@ class SpecialPage {
* @param $user User: the user to check
* @return Boolean: does the user have permission to view the page?
*/
- public function userCanExecute( $user ) {
+ public function userCanExecute( User $user ) {
return $user->isAllowed( $this->mRestriction );
}
@@ -816,18 +518,17 @@ class SpecialPage {
* Output an error message telling the user what access level they have to have
*/
function displayRestrictionError() {
- global $wgOut;
- $wgOut->permissionRequired( $this->mRestriction );
+ throw new PermissionsError( $this->mRestriction );
}
/**
* Sets headers - this should be called from the execute() method of all derived classes!
*/
function setHeaders() {
- global $wgOut;
- $wgOut->setArticleRelated( false );
- $wgOut->setRobotPolicy( "noindex,nofollow" );
- $wgOut->setPageTitle( $this->getDescription() );
+ $out = $this->getOutput();
+ $out->setArticleRelated( false );
+ $out->setRobotPolicy( "noindex,nofollow" );
+ $out->setPageTitle( $this->getDescription() );
}
/**
@@ -835,16 +536,16 @@ class SpecialPage {
* Checks user permissions, calls the function given in mFunction
*
* This must be overridden by subclasses; it will be made abstract in a future version
+ *
+ * @param $par String subpage string, if one was specified
*/
function execute( $par ) {
- global $wgUser;
-
$this->setHeaders();
- if ( $this->userCanExecute( $wgUser ) ) {
+ if ( $this->userCanExecute( $this->getUser() ) ) {
$func = $this->mFunction;
// only load file if the function does not exist
- if(!is_callable($func) and $this->mFile) {
+ if( !is_callable($func) && $this->mFile ) {
require_once( $this->mFile );
}
$this->outputHeader();
@@ -863,16 +564,16 @@ class SpecialPage {
* @param $summaryMessageKey String: message key of the summary
*/
function outputHeader( $summaryMessageKey = '' ) {
- global $wgOut, $wgContLang;
+ global $wgContLang;
if( $summaryMessageKey == '' ) {
- $msg = $wgContLang->lc( $this->name() ) . '-summary';
+ $msg = $wgContLang->lc( $this->getName() ) . '-summary';
} else {
$msg = $summaryMessageKey;
}
- $out = wfMsgNoTrans( $msg );
- if ( ! wfEmptyMsg( $msg, $out ) and $out !== '' and ! $this->including() ) {
- $wgOut->wrapWikiMsg( "<div class='mw-specialpage-summary'>\n$1\n</div>", $msg );
+ if ( !wfMessage( $msg )->isBlank() and ! $this->including() ) {
+ $this->getOutput()->wrapWikiMsg(
+ "<div class='mw-specialpage-summary'>\n$1\n</div>", $msg );
}
}
@@ -894,6 +595,7 @@ class SpecialPage {
/**
* Get a self-referential title object
*
+ * @param $subpage String|Bool
* @return Title object
*/
function getTitle( $subpage = false ) {
@@ -901,39 +603,254 @@ class SpecialPage {
}
/**
- * Set whether this page is listed in Special:Specialpages, at run-time
+ * Sets the context this SpecialPage is executed in
+ *
+ * @param $context IContextSource
+ * @since 1.18
*/
- function setListed( $listed ) {
- return wfSetVar( $this->mListed, $listed );
+ public function setContext( $context ) {
+ $this->mContext = $context;
}
/**
- * If the special page is a redirect, then get the Title object it redirects to.
- * False otherwise.
+ * Gets the context this SpecialPage is executed in
+ *
+ * @return IContextSource
+ * @since 1.18
*/
- function getRedirect( $subpage ) {
- return false;
+ public function getContext() {
+ if ( $this->mContext instanceof IContextSource ) {
+ return $this->mContext;
+ } else {
+ wfDebug( __METHOD__ . " called and \$mContext is null. Return RequestContext::getMain(); for sanity\n" );
+ return RequestContext::getMain();
+ }
}
/**
- * Return part of the request string for a special redirect page
- * This allows passing, e.g. action=history to Special:Mypage, etc.
+ * Get the WebRequest being used for this instance
*
- * @return String
+ * @return WebRequest
+ * @since 1.18
*/
- function getRedirectQuery() {
- global $wgRequest;
- $params = array();
- foreach( $this->mAllowedRedirectParams as $arg ) {
- if( ( $val = $wgRequest->getVal( $arg, null ) ) !== null )
- $params[] = $arg . '=' . $val;
+ public function getRequest() {
+ return $this->getContext()->getRequest();
+ }
+
+ /**
+ * Get the OutputPage being used for this instance
+ *
+ * @return OutputPage
+ * @since 1.18
+ */
+ public function getOutput() {
+ return $this->getContext()->getOutput();
+ }
+
+ /**
+ * Shortcut to get the User executing this instance
+ *
+ * @return User
+ * @since 1.18
+ */
+ public function getUser() {
+ return $this->getContext()->getUser();
+ }
+
+ /**
+ * Shortcut to get the skin being used for this instance
+ *
+ * @return Skin
+ * @since 1.18
+ */
+ public function getSkin() {
+ return $this->getContext()->getSkin();
+ }
+
+ /**
+ * Shortcut to get user's language
+ *
+ * @return Language
+ * @since 1.18
+ */
+ public function getLang() {
+ return $this->getContext()->getLang();
+ }
+
+ /**
+ * Return the full title, including $par
+ *
+ * @return Title
+ * @since 1.18
+ */
+ public function getFullTitle() {
+ return $this->getContext()->getTitle();
+ }
+
+ /**
+ * Wrapper around wfMessage that sets the current context.
+ *
+ * @return Message
+ * @see wfMessage
+ */
+ public function msg( /* $args */ ) {
+ // Note: can't use func_get_args() directly as second or later item in
+ // a parameter list until PHP 5.3 or you get a fatal error.
+ // Works fine as the first parameter, which appears elsewhere in the
+ // code base. Sighhhh.
+ $args = func_get_args();
+ return call_user_func_array( array( $this->getContext(), 'msg' ), $args );
+ }
+
+ /**
+ * Adds RSS/atom links
+ *
+ * @param $params array
+ */
+ protected function addFeedLinks( $params ) {
+ global $wgFeedClasses, $wgOut;
+
+ $feedTemplate = wfScript( 'api' ) . '?';
+
+ foreach( $wgFeedClasses as $format => $class ) {
+ $theseParams = $params + array( 'feedformat' => $format );
+ $url = $feedTemplate . wfArrayToCGI( $theseParams );
+ $wgOut->addFeedLink( $format, $url );
}
-
- foreach( $this->mAddedRedirectParams as $arg => $val ) {
- $params[] = $arg . '=' . $val;
+ }
+}
+
+/**
+ * Special page which uses an HTMLForm to handle processing. This is mostly a
+ * clone of FormAction. More special pages should be built this way; maybe this could be
+ * a new structure for SpecialPages
+ */
+abstract class FormSpecialPage extends SpecialPage {
+
+ /**
+ * Get an HTMLForm descriptor array
+ * @return Array
+ */
+ protected abstract function getFormFields();
+
+ /**
+ * Add pre- or post-text to the form
+ * @return String HTML which will be sent to $form->addPreText()
+ */
+ protected function preText() { return ''; }
+ protected function postText() { return ''; }
+
+ /**
+ * Play with the HTMLForm if you need to more substantially
+ * @param $form HTMLForm
+ */
+ protected function alterForm( HTMLForm $form ) {}
+
+ /**
+ * Get the HTMLForm to control behaviour
+ * @return HTMLForm|null
+ */
+ protected function getForm() {
+ $this->fields = $this->getFormFields();
+
+ $form = new HTMLForm( $this->fields, $this->getContext() );
+ $form->setSubmitCallback( array( $this, 'onSubmit' ) );
+ $form->setWrapperLegend( wfMessage( strtolower( $this->getName() ) . '-legend' ) );
+ $form->addHeaderText(
+ wfMessage( strtolower( $this->getName() ) . '-text' )->parseAsBlock() );
+
+ // Retain query parameters (uselang etc)
+ $params = array_diff_key(
+ $this->getRequest()->getQueryValues(), array( 'title' => null ) );
+ $form->addHiddenField( 'redirectparams', wfArrayToCGI( $params ) );
+
+ $form->addPreText( $this->preText() );
+ $form->addPostText( $this->postText() );
+ $this->alterForm( $form );
+
+ // Give hooks a chance to alter the form, adding extra fields or text etc
+ wfRunHooks( "Special{$this->getName()}BeforeFormDisplay", array( &$form ) );
+
+ return $form;
+ }
+
+ /**
+ * Process the form on POST submission.
+ * @param $data Array
+ * @return Bool|Array true for success, false for didn't-try, array of errors on failure
+ */
+ public abstract function onSubmit( array $data );
+
+ /**
+ * Do something exciting on successful processing of the form, most likely to show a
+ * confirmation message
+ */
+ public abstract function onSuccess();
+
+ /**
+ * Basic SpecialPage workflow: get a form, send it to the user; get some data back,
+ *
+ * @param $par String Subpage string if one was specified
+ */
+ public function execute( $par ) {
+ $this->setParameter( $par );
+ $this->setHeaders();
+
+ // This will throw exceptions if there's a problem
+ $this->userCanExecute( $this->getUser() );
+
+ $form = $this->getForm();
+ if ( $form->show() ) {
+ $this->onSuccess();
}
-
- return count( $params ) ? implode( '&', $params ) : false;
+ }
+
+ /**
+ * Maybe do something interesting with the subpage parameter
+ * @param $par String
+ */
+ protected function setParameter( $par ){}
+
+ /**
+ * Checks if the given user (identified by an object) can perform this action. Can be
+ * overridden by sub-classes with more complicated permissions schemes. Failures here
+ * must throw subclasses of ErrorPageError
+ *
+ * @param $user User: the user to check, or null to use the context user
+ * @return Bool true
+ * @throws ErrorPageError
+ */
+ public function userCanExecute( User $user ) {
+ if ( $this->requiresWrite() && wfReadOnly() ) {
+ throw new ReadOnlyError();
+ }
+
+ if ( $this->getRestriction() !== null && !$user->isAllowed( $this->getRestriction() ) ) {
+ throw new PermissionsError( $this->getRestriction() );
+ }
+
+ if ( $this->requiresUnblock() && $user->isBlocked() ) {
+ $block = $user->mBlock;
+ throw new UserBlockedError( $block );
+ }
+
+ return true;
+ }
+
+ /**
+ * Whether this action requires the wiki not to be locked
+ * @return Bool
+ */
+ public function requiresWrite() {
+ return true;
+ }
+
+ /**
+ * Whether this action cannot be executed by a blocked user
+ * @return Bool
+ */
+ public function requiresUnblock() {
+ return true;
}
}
@@ -941,32 +858,107 @@ class SpecialPage {
* Shortcut to construct a special page which is unlisted by default
* @ingroup SpecialPage
*/
-class UnlistedSpecialPage extends SpecialPage
-{
+class UnlistedSpecialPage extends SpecialPage {
function __construct( $name, $restriction = '', $function = false, $file = 'default' ) {
parent::__construct( $name, $restriction, false, $function, $file );
}
+
+ public function isListed(){
+ return false;
+ }
}
/**
* Shortcut to construct an includable special page
* @ingroup SpecialPage
*/
-class IncludableSpecialPage extends SpecialPage
-{
- function __construct( $name, $restriction = '', $listed = true, $function = false, $file = 'default' ) {
+class IncludableSpecialPage extends SpecialPage {
+ function __construct(
+ $name, $restriction = '', $listed = true, $function = false, $file = 'default'
+ ) {
parent::__construct( $name, $restriction, $listed, $function, $file, true );
}
+
+ public function isIncludable(){
+ return true;
+ }
}
/**
* Shortcut to construct a special page alias.
* @ingroup SpecialPage
*/
-class SpecialRedirectToSpecial extends UnlistedSpecialPage {
+abstract class RedirectSpecialPage extends UnlistedSpecialPage {
+
+ // Query parameters that can be passed through redirects
+ protected $mAllowedRedirectParams = array();
+
+ // Query parameteres added by redirects
+ protected $mAddedRedirectParams = array();
+
+ public function execute( $par ){
+ $redirect = $this->getRedirect( $par );
+ $query = $this->getRedirectQuery();
+ // Redirect to a page title with possible query parameters
+ if ( $redirect instanceof Title ) {
+ $url = $redirect->getFullUrl( $query );
+ $this->getOutput()->redirect( $url );
+ wfProfileOut( __METHOD__ );
+ return $redirect;
+ // Redirect to index.php with query parameters
+ } elseif ( $redirect === true ) {
+ global $wgScript;
+ $url = $wgScript . '?' . wfArrayToCGI( $query );
+ $this->getOutput()->redirect( $url );
+ wfProfileOut( __METHOD__ );
+ return $redirect;
+ } else {
+ $class = __CLASS__;
+ throw new MWException( "RedirectSpecialPage $class doesn't redirect!" );
+ }
+ }
+
+ /**
+ * If the special page is a redirect, then get the Title object it redirects to.
+ * False otherwise.
+ *
+ * @param $par String Subpage string
+ * @return Title|false
+ */
+ abstract public function getRedirect( $par );
+
+ /**
+ * Return part of the request string for a special redirect page
+ * This allows passing, e.g. action=history to Special:Mypage, etc.
+ *
+ * @return String
+ */
+ public function getRedirectQuery() {
+ $params = array();
+
+ foreach( $this->mAllowedRedirectParams as $arg ) {
+ if( $this->getRequest()->getVal( $arg, null ) !== null ){
+ $params[$arg] = $this->getRequest()->getVal( $arg );
+ }
+ }
+
+ foreach( $this->mAddedRedirectParams as $arg => $val ) {
+ $params[$arg] = $val;
+ }
+
+ return count( $params )
+ ? $params
+ : false;
+ }
+}
+
+abstract class SpecialRedirectToSpecial extends RedirectSpecialPage {
var $redirName, $redirSubpage;
- function __construct( $name, $redirName, $redirSubpage = false, $allowedRedirectParams = array(), $addedRedirectParams = array() ) {
+ function __construct(
+ $name, $redirName, $redirSubpage = false,
+ $allowedRedirectParams = array(), $addedRedirectParams = array()
+ ) {
parent::__construct( $name );
$this->redirName = $redirName;
$this->redirSubpage = $redirSubpage;
@@ -974,7 +966,7 @@ class SpecialRedirectToSpecial extends UnlistedSpecialPage {
$this->mAddedRedirectParams = $addedRedirectParams;
}
- function getRedirect( $subpage ) {
+ public function getRedirect( $subpage ) {
if ( $this->redirSubpage === false ) {
return SpecialPage::getTitleFor( $this->redirName, $subpage );
} else {
@@ -983,7 +975,35 @@ class SpecialRedirectToSpecial extends UnlistedSpecialPage {
}
}
-/** SpecialMypage, SpecialMytalk and SpecialMycontributions special pages
+/**
+ * ListAdmins --> ListUsers/admin
+ */
+class SpecialListAdmins extends SpecialRedirectToSpecial {
+ function __construct(){
+ parent::__construct( 'ListAdmins', 'ListUsers', 'sysop' );
+ }
+}
+
+/**
+ * ListBots --> ListUsers/admin
+ */
+class SpecialListBots extends SpecialRedirectToSpecial {
+ function __construct(){
+ parent::__construct( 'ListAdmins', 'ListUsers', 'bot' );
+ }
+}
+
+/**
+ * CreateAccount --> UserLogin/signup
+ * @todo FIXME: This (and the rest of the login frontend) needs to die a horrible painful death
+ */
+class SpecialCreateAccount extends SpecialRedirectToSpecial {
+ function __construct(){
+ parent::__construct( 'CreateAccount', 'Userlogin', 'signup', array( 'uselang' ) );
+ }
+}
+/**
+ * SpecialMypage, SpecialMytalk and SpecialMycontributions special pages
* are used to get user independant links pointing to the user page, talk
* page and list of contributions.
* This can let us cache a single copy of any generated content for all
@@ -994,19 +1014,20 @@ class SpecialRedirectToSpecial extends UnlistedSpecialPage {
* Shortcut to construct a special page pointing to current user user's page.
* @ingroup SpecialPage
*/
-class SpecialMypage extends UnlistedSpecialPage {
+class SpecialMypage extends RedirectSpecialPage {
function __construct() {
parent::__construct( 'Mypage' );
$this->mAllowedRedirectParams = array( 'action' , 'preload' , 'editintro',
- 'section', 'oldid', 'diff', 'dir' );
+ 'section', 'oldid', 'diff', 'dir',
+ // Options for action=raw; missing ctype can break JS or CSS in some browsers
+ 'ctype', 'maxage', 'smaxage' );
}
function getRedirect( $subpage ) {
- global $wgUser;
if ( strval( $subpage ) !== '' ) {
- return Title::makeTitle( NS_USER, $wgUser->getName() . '/' . $subpage );
+ return Title::makeTitle( NS_USER, $this->getUser()->getName() . '/' . $subpage );
} else {
- return Title::makeTitle( NS_USER, $wgUser->getName() );
+ return Title::makeTitle( NS_USER, $this->getUser()->getName() );
}
}
}
@@ -1015,7 +1036,7 @@ class SpecialMypage extends UnlistedSpecialPage {
* Shortcut to construct a special page pointing to current user talk page.
* @ingroup SpecialPage
*/
-class SpecialMytalk extends UnlistedSpecialPage {
+class SpecialMytalk extends RedirectSpecialPage {
function __construct() {
parent::__construct( 'Mytalk' );
$this->mAllowedRedirectParams = array( 'action' , 'preload' , 'editintro',
@@ -1023,11 +1044,10 @@ class SpecialMytalk extends UnlistedSpecialPage {
}
function getRedirect( $subpage ) {
- global $wgUser;
if ( strval( $subpage ) !== '' ) {
- return Title::makeTitle( NS_USER_TALK, $wgUser->getName() . '/' . $subpage );
+ return Title::makeTitle( NS_USER_TALK, $this->getUser()->getName() . '/' . $subpage );
} else {
- return Title::makeTitle( NS_USER_TALK, $wgUser->getName() );
+ return Title::makeTitle( NS_USER_TALK, $this->getUser()->getName() );
}
}
}
@@ -1036,7 +1056,7 @@ class SpecialMytalk extends UnlistedSpecialPage {
* Shortcut to construct a special page pointing to current user contributions.
* @ingroup SpecialPage
*/
-class SpecialMycontributions extends UnlistedSpecialPage {
+class SpecialMycontributions extends RedirectSpecialPage {
function __construct() {
parent::__construct( 'Mycontributions' );
$this->mAllowedRedirectParams = array( 'limit', 'namespace', 'tagfilter',
@@ -1044,22 +1064,36 @@ class SpecialMycontributions extends UnlistedSpecialPage {
}
function getRedirect( $subpage ) {
- global $wgUser;
- return SpecialPage::getTitleFor( 'Contributions', $wgUser->getName() );
+ return SpecialPage::getTitleFor( 'Contributions', $this->getUser()->getName() );
}
}
/**
* Redirect to Special:Listfiles?user=$wgUser
*/
-class SpecialMyuploads extends UnlistedSpecialPage {
+class SpecialMyuploads extends RedirectSpecialPage {
function __construct() {
parent::__construct( 'Myuploads' );
$this->mAllowedRedirectParams = array( 'limit' );
}
-
+
function getRedirect( $subpage ) {
- global $wgUser;
- return SpecialPage::getTitleFor( 'Listfiles', $wgUser->getName() );
+ return SpecialPage::getTitleFor( 'Listfiles', $this->getUser()->getName() );
+ }
+}
+
+/**
+ * Redirect from Special:PermanentLink/### to index.php?oldid=###
+ */
+class SpecialPermanentLink extends RedirectSpecialPage {
+ function __construct() {
+ parent::__construct( 'PermanentLink' );
+ $this->mAllowedRedirectParams = array();
+ }
+
+ function getRedirect( $subpage ) {
+ $subpage = intval( $subpage );
+ $this->mAddedRedirectParams['oldid'] = $subpage;
+ return true;
}
}
diff --git a/includes/SpecialPageFactory.php b/includes/SpecialPageFactory.php
new file mode 100644
index 00000000..2a2e6a4c
--- /dev/null
+++ b/includes/SpecialPageFactory.php
@@ -0,0 +1,554 @@
+<?php
+/**
+ * SpecialPage: handling special pages and lists thereof.
+ *
+ * To add a special page in an extension, add to $wgSpecialPages either
+ * an object instance or an array containing the name and constructor
+ * parameters. The latter is preferred for performance reasons.
+ *
+ * The object instantiated must be either an instance of SpecialPage or a
+ * sub-class thereof. It must have an execute() method, which sends the HTML
+ * for the special page to $wgOut. The parent class has an execute() method
+ * which distributes the call to the historical global functions. Additionally,
+ * execute() also checks if the user has the necessary access privileges
+ * and bails out if not.
+ *
+ * To add a core special page, use the similar static list in
+ * SpecialPage::$mList. To remove a core static special page at runtime, use
+ * a SpecialPage_initList hook.
+ *
+ * @file
+ * @ingroup SpecialPage
+ * @defgroup SpecialPage SpecialPage
+ */
+
+/**
+ * Factory for handling the special page list and generating SpecialPage objects
+ * @ingroup SpecialPage
+ * @since 1.17
+ */
+class SpecialPageFactory {
+
+ /**
+ * List of special page names to the subclass of SpecialPage which handles them.
+ */
+ private static $mList = array(
+ // Maintenance Reports
+ 'BrokenRedirects' => 'BrokenRedirectsPage',
+ 'Deadendpages' => 'DeadendpagesPage',
+ 'DoubleRedirects' => 'DoubleRedirectsPage',
+ 'Longpages' => 'LongpagesPage',
+ 'Ancientpages' => 'AncientpagesPage',
+ 'Lonelypages' => 'LonelypagesPage',
+ 'Fewestrevisions' => 'FewestrevisionsPage',
+ 'Withoutinterwiki' => 'WithoutinterwikiPage',
+ 'Protectedpages' => 'SpecialProtectedpages',
+ 'Protectedtitles' => 'SpecialProtectedtitles',
+ 'Shortpages' => 'ShortpagesPage',
+ 'Uncategorizedcategories' => 'UncategorizedcategoriesPage',
+ 'Uncategorizedimages' => 'UncategorizedimagesPage',
+ 'Uncategorizedpages' => 'UncategorizedpagesPage',
+ 'Uncategorizedtemplates' => 'UncategorizedtemplatesPage',
+ 'Unusedcategories' => 'UnusedcategoriesPage',
+ 'Unusedimages' => 'UnusedimagesPage',
+ 'Unusedtemplates' => 'UnusedtemplatesPage',
+ 'Unwatchedpages' => 'UnwatchedpagesPage',
+ 'Wantedcategories' => 'WantedcategoriesPage',
+ 'Wantedfiles' => 'WantedfilesPage',
+ 'Wantedpages' => 'WantedpagesPage',
+ 'Wantedtemplates' => 'WantedtemplatesPage',
+
+ // List of pages
+ 'Allpages' => 'SpecialAllpages',
+ 'Prefixindex' => 'SpecialPrefixindex',
+ 'Categories' => 'SpecialCategories',
+ 'Disambiguations' => 'DisambiguationsPage',
+ 'Listredirects' => 'ListredirectsPage',
+
+ // Login/create account
+ 'Userlogin' => 'LoginForm',
+ 'CreateAccount' => 'SpecialCreateAccount',
+
+ // Users and rights
+ 'Block' => 'SpecialBlock',
+ 'Unblock' => 'SpecialUnblock',
+ 'BlockList' => 'SpecialBlockList',
+ 'ChangePassword' => 'SpecialChangePassword',
+ 'PasswordReset' => 'SpecialPasswordReset',
+ 'DeletedContributions' => 'DeletedContributionsPage',
+ 'Preferences' => 'SpecialPreferences',
+ 'Contributions' => 'SpecialContributions',
+ 'Listgrouprights' => 'SpecialListGroupRights',
+ 'Listusers' => 'SpecialListUsers' ,
+ 'Listadmins' => 'SpecialListAdmins',
+ 'Listbots' => 'SpecialListBots',
+ 'Activeusers' => 'SpecialActiveUsers',
+ 'Userrights' => 'UserrightsPage',
+ 'EditWatchlist' => 'SpecialEditWatchlist',
+
+ // Recent changes and logs
+ 'Newimages' => 'SpecialNewFiles',
+ 'Log' => 'SpecialLog',
+ 'Watchlist' => 'SpecialWatchlist',
+ 'Newpages' => 'SpecialNewpages',
+ 'Recentchanges' => 'SpecialRecentchanges',
+ 'Recentchangeslinked' => 'SpecialRecentchangeslinked',
+ 'Tags' => 'SpecialTags',
+
+ // Media reports and uploads
+ 'Listfiles' => 'SpecialListFiles',
+ 'Filepath' => 'SpecialFilepath',
+ 'MIMEsearch' => 'MIMEsearchPage',
+ 'FileDuplicateSearch' => 'FileDuplicateSearchPage',
+ 'Upload' => 'SpecialUpload',
+ 'UploadStash' => 'SpecialUploadStash',
+
+ // Wiki data and tools
+ 'Statistics' => 'SpecialStatistics',
+ 'Allmessages' => 'SpecialAllmessages',
+ 'Version' => 'SpecialVersion',
+ 'Lockdb' => 'SpecialLockdb',
+ 'Unlockdb' => 'SpecialUnlockdb',
+
+ // Redirecting special pages
+ 'LinkSearch' => 'LinkSearchPage',
+ 'Randompage' => 'Randompage',
+ 'Randomredirect' => 'SpecialRandomredirect',
+
+ // High use pages
+ 'Mostlinkedcategories' => 'MostlinkedCategoriesPage',
+ 'Mostimages' => 'MostimagesPage',
+ 'Mostlinked' => 'MostlinkedPage',
+ 'Mostlinkedtemplates' => 'MostlinkedTemplatesPage',
+ 'Mostcategories' => 'MostcategoriesPage',
+ 'Mostrevisions' => 'MostrevisionsPage',
+
+ // Page tools
+ 'ComparePages' => 'SpecialComparePages',
+ 'Export' => 'SpecialExport',
+ 'Import' => 'SpecialImport',
+ 'Undelete' => 'SpecialUndelete',
+ 'Whatlinkshere' => 'SpecialWhatlinkshere',
+ 'MergeHistory' => 'SpecialMergeHistory',
+
+ // Other
+ 'Booksources' => 'SpecialBookSources',
+
+ // Unlisted / redirects
+ 'Blankpage' => 'SpecialBlankpage',
+ 'Blockme' => 'SpecialBlockme',
+ 'Emailuser' => 'SpecialEmailUser',
+ 'Movepage' => 'MovePageForm',
+ 'Mycontributions' => 'SpecialMycontributions',
+ 'Mypage' => 'SpecialMypage',
+ 'Mytalk' => 'SpecialMytalk',
+ 'Myuploads' => 'SpecialMyuploads',
+ 'PermanentLink' => 'SpecialPermanentLink',
+ 'Revisiondelete' => 'SpecialRevisionDelete',
+ 'Specialpages' => 'SpecialSpecialpages',
+ 'Userlogout' => 'SpecialUserlogout',
+ );
+
+ private static $mAliases;
+
+ /**
+ * Initialise the special page list
+ * This must be called before accessing SpecialPage::$mList
+ *
+ * @return array
+ */
+ static function getList() {
+ global $wgSpecialPages;
+ global $wgDisableCounters, $wgDisableInternalSearch, $wgEmailAuthentication;
+
+ if ( !is_object( self::$mList ) ) {
+ wfProfileIn( __METHOD__ );
+
+ if ( !$wgDisableCounters ) {
+ self::$mList['Popularpages'] = 'PopularpagesPage';
+ }
+
+ if ( !$wgDisableInternalSearch ) {
+ self::$mList['Search'] = 'SpecialSearch';
+ }
+
+ if ( $wgEmailAuthentication ) {
+ self::$mList['Confirmemail'] = 'EmailConfirmation';
+ self::$mList['Invalidateemail'] = 'EmailInvalidation';
+ }
+
+ // Add extension special pages
+ self::$mList = array_merge( self::$mList, $wgSpecialPages );
+
+ // Run hooks
+ // This hook can be used to remove undesired built-in special pages
+ wfRunHooks( 'SpecialPage_initList', array( &self::$mList ) );
+
+ // Cast to object: func()[$key] doesn't work, but func()->$key does
+ settype( self::$mList, 'object' );
+
+ wfProfileOut( __METHOD__ );
+ }
+ return self::$mList;
+ }
+
+ /**
+ * Initialise and return the list of special page aliases. Returns an object with
+ * properties which can be accessed $obj->pagename - each property is an array of
+ * aliases; the first in the array is the cannonical alias. All registered special
+ * pages are guaranteed to have a property entry, and for that property array to
+ * contain at least one entry (English fallbacks will be added if necessary).
+ * @return Object
+ */
+ static function getAliasList() {
+ if ( !is_object( self::$mAliases ) ) {
+ global $wgContLang;
+ $aliases = $wgContLang->getSpecialPageAliases();
+
+ // Objects are passed by reference by default, need to create a copy
+ $missingPages = clone self::getList();
+
+ self::$mAliases = array();
+ foreach ( $aliases as $realName => $aliasList ) {
+ foreach ( $aliasList as $alias ) {
+ self::$mAliases[$wgContLang->caseFold( $alias )] = $realName;
+ }
+ unset( $missingPages->$realName );
+ }
+ foreach ( $missingPages as $name => $stuff ) {
+ self::$mAliases[$wgContLang->caseFold( $name )] = $name;
+ }
+
+ // Cast to object: func()[$key] doesn't work, but func()->$key does
+ self::$mAliases = (object)self::$mAliases;
+ }
+ return self::$mAliases;
+ }
+
+ /**
+ * Given a special page name with a possible subpage, return an array
+ * where the first element is the special page name and the second is the
+ * subpage.
+ *
+ * @param $alias String
+ * @return Array( String, String|null ), or array( null, null ) if the page is invalid
+ */
+ public static function resolveAlias( $alias ) {
+ global $wgContLang;
+ $bits = explode( '/', $alias, 2 );
+
+ $caseFoldedAlias = $wgContLang->caseFold( $bits[0] );
+ $caseFoldedAlias = str_replace( ' ', '_', $caseFoldedAlias );
+ if ( isset( self::getAliasList()->$caseFoldedAlias ) ) {
+ $name = self::getAliasList()->$caseFoldedAlias;
+ } else {
+ return array( null, null );
+ }
+
+ if ( !isset( $bits[1] ) ) { // bug 2087
+ $par = null;
+ } else {
+ $par = $bits[1];
+ }
+
+ return array( $name, $par );
+ }
+
+ /**
+ * Add a page to a certain display group for Special:SpecialPages
+ *
+ * @param $page Mixed: SpecialPage or string
+ * @param $group String
+ */
+ public static function setGroup( $page, $group ) {
+ global $wgSpecialPageGroups;
+ $name = is_object( $page ) ? $page->mName : $page;
+ $wgSpecialPageGroups[$name] = $group;
+ }
+
+ /**
+ * Get the group that the special page belongs in on Special:SpecialPage
+ *
+ * @param $page SpecialPage
+ */
+ public static function getGroup( &$page ) {
+ global $wgSpecialPageGroups;
+ static $specialPageGroupsCache = array();
+ if ( isset( $specialPageGroupsCache[$page->mName] ) ) {
+ return $specialPageGroupsCache[$page->mName];
+ }
+ $msg = wfMessage( 'specialpages-specialpagegroup-' . strtolower( $page->mName ) );
+ if ( !$msg->isBlank() ) {
+ $group = $msg->text();
+ } else {
+ $group = isset( $wgSpecialPageGroups[$page->mName] )
+ ? $wgSpecialPageGroups[$page->mName]
+ : '-';
+ }
+ if ( $group == '-' ) {
+ $group = 'other';
+ }
+ $specialPageGroupsCache[$page->mName] = $group;
+ return $group;
+ }
+
+ /**
+ * Check if a given name exist as a special page or as a special page alias
+ *
+ * @param $name String: name of a special page
+ * @return Boolean: true if a special page exists with this name
+ */
+ public static function exists( $name ) {
+ list( $title, /*...*/ ) = self::resolveAlias( $name );
+ return property_exists( self::getList(), $title );
+ }
+
+ /**
+ * 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
+ */
+ public static function getPage( $name ) {
+ list( $realName, /*...*/ ) = self::resolveAlias( $name );
+ if ( property_exists( self::getList(), $realName ) ) {
+ $rec = self::getList()->$realName;
+ if ( is_string( $rec ) ) {
+ $className = $rec;
+ return new $className;
+ } elseif ( is_array( $rec ) ) {
+ // @deprecated, officially since 1.18, unofficially since forever
+ wfDebug( "Array syntax for \$wgSpecialPages is deprecated, define a subclass of SpecialPage instead." );
+ $className = array_shift( $rec );
+ self::getList()->$realName = MWFunction::newObj( $className, $rec );
+ }
+ return self::getList()->$realName;
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * Return categorised listable special pages which are available
+ * for the current user, and everyone.
+ *
+ * @return Array( String => Specialpage )
+ */
+ public static function getUsablePages() {
+ global $wgUser;
+ $pages = array();
+ foreach ( self::getList() as $name => $rec ) {
+ $page = self::getPage( $name );
+ if ( $page // not null
+ && $page->isListed()
+ && ( !$page->isRestricted() || $page->userCanExecute( $wgUser ) )
+ ) {
+ $pages[$name] = $page;
+ }
+ }
+ return $pages;
+ }
+
+ /**
+ * Return categorised listable special pages for all users
+ *
+ * @return Array( String => Specialpage )
+ */
+ public static function getRegularPages() {
+ $pages = array();
+ foreach ( self::getList() as $name => $rec ) {
+ $page = self::getPage( $name );
+ if ( $page->isListed() && !$page->isRestricted() ) {
+ $pages[$name] = $page;
+ }
+ }
+ return $pages;
+ }
+
+ /**
+ * Return categorised listable special pages which are available
+ * for the current user, but not for everyone
+ *
+ * @return Array( String => Specialpage )
+ */
+ public static function getRestrictedPages() {
+ global $wgUser;
+ $pages = array();
+ foreach ( self::getList() as $name => $rec ) {
+ $page = self::getPage( $name );
+ if (
+ $page->isListed()
+ && $page->isRestricted()
+ && $page->userCanExecute( $wgUser )
+ ) {
+ $pages[$name] = $page;
+ }
+ }
+ return $pages;
+ }
+
+ /**
+ * Execute a special page path.
+ * The path may contain parameters, e.g. Special:Name/Params
+ * Extracts the special page name and call the execute method, passing the parameters
+ *
+ * Returns a title object if the page is redirected, false if there was no such special
+ * page, and true if it was successful.
+ *
+ * @param $title Title object
+ * @param $context IContextSource
+ * @param $including Bool output is being captured for use in {{special:whatever}}
+ *
+ * @return bool
+ */
+ public static function executePath( Title &$title, IContextSource &$context, $including = false ) {
+ wfProfileIn( __METHOD__ );
+
+ // @todo FIXME: Redirects broken due to this call
+ $bits = explode( '/', $title->getDBkey(), 2 );
+ $name = $bits[0];
+ if ( !isset( $bits[1] ) ) { // bug 2087
+ $par = null;
+ } else {
+ $par = $bits[1];
+ }
+ $page = self::getPage( $name );
+ // Nonexistent?
+ if ( !$page ) {
+ $context->getOutput()->setArticleRelated( false );
+ $context->getOutput()->setRobotPolicy( 'noindex,nofollow' );
+ $context->getOutput()->setStatusCode( 404 );
+ $context->getOutput()->showErrorPage( 'nosuchspecialpage', 'nospecialpagetext' );
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ // Page exists, set the context
+ $page->setContext( $context );
+
+ if ( !$including ) {
+ // Redirect to canonical alias for GET commands
+ // Not for POST, we'd lose the post data, so it's best to just distribute
+ // the request. Such POST requests are possible for old extensions that
+ // generate self-links without being aware that their default name has
+ // changed.
+ if ( $name != $page->getLocalName() && !$context->getRequest()->wasPosted() ) {
+ $query = $context->getRequest()->getQueryValues();
+ unset( $query['title'] );
+ $query = wfArrayToCGI( $query );
+ $title = $page->getTitle( $par );
+ $url = $title->getFullUrl( $query );
+ $context->getOutput()->redirect( $url );
+ wfProfileOut( __METHOD__ );
+ return $title;
+ } else {
+ $context->setTitle( $page->getTitle( $par ) );
+ }
+
+ } elseif ( !$page->isIncludable() ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ $page->including( $including );
+
+ // Execute special page
+ $profName = 'Special:' . $page->getName();
+ wfProfileIn( $profName );
+ $page->execute( $par );
+ wfProfileOut( $profName );
+ wfProfileOut( __METHOD__ );
+ return true;
+ }
+
+ /**
+ * Just like executePath() except it returns the HTML instead of outputting it
+ * Returns false if there was no such special page, or a title object if it was
+ * a redirect.
+ *
+ * Also saves the current $wgTitle, $wgOut, and $wgRequest variables so that
+ * the special page will get the context it'd expect on a normal request,
+ * and then restores them to their previous values after.
+ *
+ * @param $title Title
+ *
+ * @return String: HTML fragment
+ */
+ static function capturePath( &$title ) {
+ global $wgOut, $wgTitle, $wgRequest;
+
+ $oldTitle = $wgTitle;
+ $oldOut = $wgOut;
+ $oldRequest = $wgRequest;
+
+ // Don't want special pages interpreting ?feed=atom parameters.
+ $wgRequest = new FauxRequest( array() );
+
+ $context = new RequestContext;
+ $context->setTitle( $title );
+ $context->setRequest( $wgRequest );
+ $wgOut = $context->getOutput();
+
+ $ret = self::executePath( $title, $context, true );
+ if ( $ret === true ) {
+ $ret = $wgOut->getHTML();
+ }
+ $wgTitle = $oldTitle;
+ $wgOut = $oldOut;
+ $wgRequest = $oldRequest;
+ return $ret;
+ }
+
+ /**
+ * Get the local name for a specified canonical name
+ *
+ * @param $name String
+ * @param $subpage String|Bool
+ *
+ * @return String
+ */
+ static function getLocalNameFor( $name, $subpage = false ) {
+ global $wgContLang;
+ $aliases = $wgContLang->getSpecialPageAliases();
+
+ if ( isset( $aliases[$name][0] ) ) {
+ $name = $aliases[$name][0];
+ } else {
+ // Try harder in case someone misspelled the correct casing
+ $found = false;
+ foreach ( $aliases as $n => $values ) {
+ if ( strcasecmp( $name, $n ) === 0 ) {
+ wfWarn( "Found alias defined for $n when searching for " .
+ "special page aliases for $name. Case mismatch?" );
+ $name = $values[0];
+ $found = true;
+ break;
+ }
+ }
+ if ( !$found ) {
+ wfWarn( "Did not find alias for special page '$name'. " .
+ "Perhaps no aliases are defined for it?" );
+ }
+ }
+ if ( $subpage !== false && !is_null( $subpage ) ) {
+ $name = "$name/$subpage";
+ }
+ return $wgContLang->ucfirst( $name );
+ }
+
+ /**
+ * Get a title for a given alias
+ *
+ * @param $alias String
+ *
+ * @return Title or null if there is no such alias
+ */
+ static function getTitleForAlias( $alias ) {
+ $name = self::resolveAlias( $alias );
+ if ( $name ) {
+ return SpecialPage::getTitleFor( $name );
+ } else {
+ return null;
+ }
+ }
+}
diff --git a/includes/SquidPurgeClient.php b/includes/SquidPurgeClient.php
index 1b315e5f..3de68578 100644
--- a/includes/SquidPurgeClient.php
+++ b/includes/SquidPurgeClient.php
@@ -33,6 +33,8 @@ class SquidPurgeClient {
/**
* Open a socket if there isn't one open already, return it.
* Returns false on error.
+ *
+ * @return false|resource
*/
protected function getSocket() {
if ( $this->socket !== null ) {
@@ -64,6 +66,7 @@ class SquidPurgeClient {
/**
* Get read socket array for select()
+ * @return array
*/
public function getReadSocketsForSelect() {
if ( $this->readState == 'idle' ) {
@@ -78,6 +81,7 @@ class SquidPurgeClient {
/**
* Get write socket array for select()
+ * @return array
*/
public function getWriteSocketsForSelect() {
if ( !strlen( $this->writeBuffer ) ) {
@@ -139,6 +143,8 @@ class SquidPurgeClient {
/**
* Queue a purge operation
+ *
+ * @param $url string
*/
public function queuePurge( $url ) {
$url = str_replace( "\n", '', $url );
@@ -151,6 +157,9 @@ class SquidPurgeClient {
}
}
+ /**
+ * @return bool
+ */
public function isIdle() {
return strlen( $this->writeBuffer ) == 0 && $this->readState == 'idle';
}
@@ -220,6 +229,10 @@ class SquidPurgeClient {
while ( $this->socket && $this->processReadBuffer() === 'continue' );
}
+ /**
+ * @throws MWException
+ * @return string
+ */
protected function processReadBuffer() {
switch ( $this->readState ) {
case 'idle':
@@ -259,6 +272,10 @@ class SquidPurgeClient {
}
}
+ /**
+ * @param $line
+ * @return
+ */
protected function processStatusLine( $line ) {
if ( !preg_match( '!^HTTP/(\d+)\.(\d+) (\d{3}) (.*)$!', $line, $m ) ) {
$this->log( 'invalid status line' );
@@ -275,6 +292,9 @@ class SquidPurgeClient {
$this->readState = 'header';
}
+ /**
+ * @param $line string
+ */
protected function processHeaderLine( $line ) {
if ( preg_match( '/^Content-Length: (\d+)$/i', $line, $m ) ) {
$this->bodyRemaining = intval( $m[1] );
@@ -305,6 +325,10 @@ class SquidPurgeClient {
}
class SquidPurgeClientPool {
+
+ /**
+ * @var array of SquidPurgeClient
+ */
var $clients = array();
var $timeout = 5;
@@ -314,6 +338,10 @@ class SquidPurgeClientPool {
}
}
+ /**
+ * @param $client SquidPurgeClient
+ * @return void
+ */
public function addClient( $client ) {
$this->clients[] = $client;
}
diff --git a/includes/Status.php b/includes/Status.php
index f049980f..6bd94564 100644
--- a/includes/Status.php
+++ b/includes/Status.php
@@ -17,7 +17,9 @@ class Status {
var $value;
/** Counters for batch operations */
- var $successCount = 0, $failCount = 0;
+ public $successCount = 0, $failCount = 0;
+ /** Array to indicate which items of the batch operations were successful */
+ public $success = array();
/*semi-private*/ var $errors = array();
/*semi-private*/ var $cleanCallback = false;
@@ -125,6 +127,10 @@ class Status {
$this->cleanCallback = false;
}
+ /**
+ * @param $params array
+ * @return array
+ */
protected function cleanParams( $params ) {
if ( !$this->cleanCallback ) {
return $params;
@@ -136,20 +142,25 @@ class Status {
return $cleanParams;
}
+ /**
+ * @param $item
+ * @return string
+ */
protected function getItemXML( $item ) {
$params = $this->cleanParams( $item['params'] );
$xml = "<{$item['type']}>\n" .
Xml::element( 'message', null, $item['message'] ) . "\n" .
- Xml::element( 'text', null, wfMsgReal( $item['message'], $params ) ) ."\n";
+ Xml::element( 'text', null, wfMsg( $item['message'], $params ) ) ."\n";
foreach ( $params as $param ) {
$xml .= Xml::element( 'param', null, $param );
}
- $xml .= "</{$this->type}>\n";
+ $xml .= "</{$item['type']}>\n";
return $xml;
}
/**
* Get the error list as XML
+ * @return string
*/
function getXML() {
$xml = "<errors>\n";
@@ -209,17 +220,15 @@ class Status {
protected function getWikiTextForError( $error ) {
if ( is_array( $error ) ) {
if ( isset( $error['message'] ) && isset( $error['params'] ) ) {
- return wfMsgReal( $error['message'],
- array_map( 'wfEscapeWikiText', $this->cleanParams( $error['params'] ) ),
- true, false, false );
+ return wfMsgNoTrans( $error['message'],
+ array_map( 'wfEscapeWikiText', $this->cleanParams( $error['params'] ) ) );
} else {
$message = array_shift($error);
- return wfMsgReal( $message,
- array_map( 'wfEscapeWikiText', $this->cleanParams( $error ) ),
- true, false, false );
+ return wfMsgNoTrans( $message,
+ array_map( 'wfEscapeWikiText', $this->cleanParams( $error ) ) );
}
} else {
- return wfMsgReal( $error, array(), true, false, false);
+ return wfMsgNoTrans( $error );
}
}
@@ -235,7 +244,7 @@ class Status {
/**
* Merge another status object into this one
*
- * @param $other Other Status object
+ * @param $other Status Other Status object
* @param $overwriteValue Boolean: whether to override the "value" member
*/
function merge( $other, $overwriteValue = false ) {
@@ -279,12 +288,31 @@ class Status {
if( $error['params'] ) {
$result[] = array_merge( array( $error['message'] ), $error['params'] );
} else {
- $result[] = $error['message'];
+ $result[] = array( $error['message'] );
}
}
}
return $result;
}
+
+ /**
+ * Returns a list of status messages of the given type, with message and
+ * params left untouched, like a sane version of getStatusArray
+ *
+ * @param $type String
+ *
+ * @return Array
+ */
+ public function getErrorsByType( $type ) {
+ $result = array();
+ foreach ( $this->errors as $error ) {
+ if ( $error['type'] === $type ) {
+ $result[] = $error;
+ }
+ }
+ return $result;
+ }
+
/**
* Returns true if the specified message is present as a warning or error
*
@@ -305,6 +333,8 @@ class Status {
* destination message, but keep the same parameters as in the original error.
*
* Return true if the replacement was done, false otherwise.
+ *
+ * @return bool
*/
function replaceMessage( $source, $dest ) {
$replaced = false;
diff --git a/includes/StreamFile.php b/includes/StreamFile.php
index 5f460ee3..d08cfec6 100644
--- a/includes/StreamFile.php
+++ b/includes/StreamFile.php
@@ -5,9 +5,14 @@
* @file
*/
-/** */
+/**
+ * @param $fname string
+ * @param $headers array
+ */
function wfStreamFile( $fname, $headers = array() ) {
- $stat = @stat( $fname );
+ wfSuppressWarnings();
+ $stat = stat( $fname );
+ wfRestoreWarnings();
if ( !$stat ) {
header( 'HTTP/1.0 404 Not Found' );
header( 'Cache-Control: no-cache' );
@@ -63,7 +68,11 @@ function wfStreamFile( $fname, $headers = array() ) {
readfile( $fname );
}
-/** */
+/**
+ * @param $filename string
+ * @param $safe bool
+ * @return null|string
+ */
function wfGetType( $filename, $safe = true ) {
global $wgTrivialMimeDetection;
diff --git a/includes/StringUtils.php b/includes/StringUtils.php
index c1e617a0..f405e616 100644
--- a/includes/StringUtils.php
+++ b/includes/StringUtils.php
@@ -13,6 +13,13 @@ class StringUtils {
* Compared to delimiterReplace(), this implementation is fast but memory-
* hungry and inflexible. The memory requirements are such that I don't
* recommend using it on anything but guaranteed small chunks of text.
+ *
+ * @param $startDelim
+ * @param $endDelim
+ * @param $replace
+ * @param $subject
+ *
+ * @return string
*/
static function hungryDelimiterReplace( $startDelim, $endDelim, $replace, $subject ) {
$segments = explode( $startDelim, $subject );
@@ -36,17 +43,19 @@ class StringUtils {
* This implementation is slower than hungryDelimiterReplace but uses far less
* memory. The delimiters are literal strings, not regular expressions.
*
+ * If the start delimiter ends with an initial substring of the end delimiter,
+ * e.g. in the case of C-style comments, the behaviour differs from the model
+ * regex. In this implementation, the end must share no characters with the
+ * start, so e.g. /*\/ is not considered to be both the start and end of a
+ * comment. /*\/xy/*\/ is considered to be a single comment with contents /xy/.
+ *
* @param $startDelim String: start delimiter
* @param $endDelim String: end delimiter
* @param $callback Callback: function to call on each match
* @param $subject String
* @param $flags String: regular expression flags
+ * @return string
*/
- # If the start delimiter ends with an initial substring of the end delimiter,
- # e.g. in the case of C-style comments, the behaviour differs from the model
- # regex. In this implementation, the end must share no characters with the
- # start, so e.g. /*/ is not considered to be both the start and end of a
- # comment. /*/xy/*/ is considered to be a single comment with contents /xy/.
static function delimiterReplaceCallback( $startDelim, $endDelim, $callback, $subject, $flags = '' ) {
$inputPos = 0;
$outputPos = 0;
@@ -180,6 +189,9 @@ class StringUtils {
/**
* Workalike for explode() with limited memory usage.
* Returns an Iterator
+ * @param $separator
+ * @param $subject
+ * @return \ArrayIterator|\ExplodeIterator
*/
static function explode( $separator, $subject ) {
if ( substr_count( $subject, $separator ) > 1000 ) {
diff --git a/includes/StubObject.php b/includes/StubObject.php
index 678b2744..951cbaea 100644
--- a/includes/StubObject.php
+++ b/includes/StubObject.php
@@ -62,7 +62,7 @@ class StubObject {
* Create a new object to replace this stub object.
*/
function _newObject() {
- return wfCreateObject( $this->mClass, $this->mParams );
+ return MWFunction::newObj( $this->mClass, $this->mParams );
}
/**
@@ -110,6 +110,8 @@ class StubObject {
/**
* Stub object for the content language of this wiki. This object have to be in
* $wgContLang global.
+ *
+ * @deprecated since 1.18
*/
class StubContLang extends StubObject {
@@ -146,22 +148,6 @@ class StubUserLang extends StubObject {
}
function _newObject() {
- global $wgLanguageCode, $wgRequest, $wgUser, $wgContLang;
- $code = $wgRequest->getVal( 'uselang', $wgUser->getOption( 'language' ) );
- // BCP 47 - letter case MUST NOT carry meaning
- $code = strtolower( $code );
-
- # Validate $code
- if( empty( $code ) || !Language::isValidCode( $code ) || ( $code === 'qqq' ) ) {
- wfDebug( "Invalid user language code\n" );
- $code = $wgLanguageCode;
- }
-
- if( $code === $wgLanguageCode ) {
- return $wgContLang;
- } else {
- $obj = Language::factory( $code );
- return $obj;
- }
+ return RequestContext::getMain()->getLang();
}
}
diff --git a/includes/Title.php b/includes/Title.php
index 5ae2f1a0..33373b2c 100644
--- a/includes/Title.php
+++ b/includes/Title.php
@@ -1,25 +1,26 @@
<?php
/**
* See title.txt
+ *
+ * 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
*/
/**
- * @todo: determine if it is really necessary to load this. Appears to be left over from pre-autoloader versions, and
- * is only really needed to provide access to constant UTF8_REPLACEMENT, which actually resides in UtfNormalDefines.php
- * and is loaded by UtfNormalUtil.php, which is loaded by UtfNormal.php.
- */
-if ( !class_exists( 'UtfNormal' ) ) {
- require_once( dirname( __FILE__ ) . '/normal/UtfNormal.php' );
-}
-
-/**
- * @deprecated This used to be a define, but was moved to
- * Title::GAID_FOR_UPDATE in 1.17. This will probably be removed in 1.18
- */
-define( 'GAID_FOR_UPDATE', Title::GAID_FOR_UPDATE );
-
-/**
* Represents a title within MediaWiki.
* Optionally may contain an interwiki designation or namespace.
* @note This class can fetch various kinds of data from the database;
@@ -41,7 +42,7 @@ class Title {
const CACHE_MAX = 1000;
/**
- * Used to be GAID_FOR_UPDATE define. Used with getArticleId() and friends
+ * Used to be GAID_FOR_UPDATE define. Used with getArticleID() and friends
* to use the master DB
*/
const GAID_FOR_UPDATE = 1;
@@ -76,7 +77,7 @@ class Title {
# Don't change the following default, NS_MAIN is hardcoded in several
# places. See bug 696.
var $mDefaultNamespace = NS_MAIN; // /< Namespace index when there is no namespace
- # Zero except in {{transclusion}} tags
+ # Zero except in {{transclusion}} tags
var $mWatched = null; // /< Is $wgUser watching this page? null if unfilled, accessed through userIsWatching()
var $mLength = -1; // /< The page length, 0 for special pages
var $mRedirect = null; // /< Is the article at this title a redirect?
@@ -87,17 +88,16 @@ class Title {
/**
* Constructor
- * @private
*/
- /* private */ function __construct() { }
+ /*protected*/ function __construct() { }
/**
* Create a new Title from a prefixed DB key
*
- * @param $key \type{\string} The database key, which has underscores
+ * @param $key String the database key, which has underscores
* instead of spaces, possibly including namespace and
* interwiki prefixes
- * @return \type{Title} the new object, or NULL on an error
+ * @return Title, or NULL on an error
*/
public static function newFromDBkey( $key ) {
$t = new Title();
@@ -113,13 +113,13 @@ class Title {
* Create a new Title from text, such as what one would find in a link. De-
* codes any HTML entities in the text.
*
- * @param $text string The link text; spaces, prefixes, and an
+ * @param $text String the link text; spaces, prefixes, and an
* initial ':' indicating the main namespace are accepted.
- * @param $defaultNamespace int The namespace to use if none is speci-
+ * @param $defaultNamespace Int the namespace to use if none is speci-
* fied by a prefix. If you want to force a specific namespace even if
* $text might begin with a namespace prefix, use makeTitle() or
* makeTitleSafe().
- * @return Title The new object, or null on an error.
+ * @return Title, or null on an error.
*/
public static function newFromText( $text, $defaultNamespace = NS_MAIN ) {
if ( is_object( $text ) ) {
@@ -138,9 +138,7 @@ class Title {
return Title::$titleCache[$text];
}
- /**
- * Convert things like &eacute; &#257; or &#x3017; into normalized (bug 14952) text
- */
+ # Convert things like &eacute; &#257; or &#x3017; into normalized (bug 14952) text
$filteredText = Sanitizer::decodeCharReferencesAndNormalize( $text );
$t = new Title();
@@ -177,8 +175,8 @@ class Title {
* Create a new Title from URL-encoded text. Ensures that
* the given title's length does not exceed the maximum.
*
- * @param $url \type{\string} the title, as might be taken from a URL
- * @return \type{Title} the new object, or NULL on an error
+ * @param $url String the title, as might be taken from a URL
+ * @return Title the new object, or NULL on an error
*/
public static function newFromURL( $url ) {
global $wgLegalTitleChars;
@@ -202,9 +200,9 @@ class Title {
/**
* Create a new Title from an article ID
*
- * @param $id \type{\int} the page_id corresponding to the Title to create
- * @param $flags \type{\int} use Title::GAID_FOR_UPDATE to use master
- * @return \type{Title} the new object, or NULL on an error
+ * @param $id Int the page_id corresponding to the Title to create
+ * @param $flags Int use Title::GAID_FOR_UPDATE to use master
+ * @return Title the new object, or NULL on an error
*/
public static function newFromID( $id, $flags = 0 ) {
$db = ( $flags & self::GAID_FOR_UPDATE ) ? wfGetDB( DB_MASTER ) : wfGetDB( DB_SLAVE );
@@ -220,15 +218,15 @@ class Title {
/**
* Make an array of titles from an array of IDs
*
- * @param $ids \type{\arrayof{\int}} Array of IDs
- * @return \type{\arrayof{Title}} Array of Titles
+ * @param $ids Array of Int Array of IDs
+ * @return Array of Titles
*/
public static function newFromIDs( $ids ) {
if ( !count( $ids ) ) {
return array();
}
$dbr = wfGetDB( DB_SLAVE );
-
+
$res = $dbr->select(
'page',
array(
@@ -249,32 +247,52 @@ class Title {
/**
* Make a Title object from a DB row
*
- * @param $row \type{Row} (needs at least page_title,page_namespace)
- * @return \type{Title} corresponding Title
+ * @param $row Object database row (needs at least page_title,page_namespace)
+ * @return Title corresponding Title
*/
public static function newFromRow( $row ) {
$t = self::makeTitle( $row->page_namespace, $row->page_title );
-
- $t->mArticleID = isset( $row->page_id ) ? intval( $row->page_id ) : -1;
- $t->mLength = isset( $row->page_len ) ? intval( $row->page_len ) : -1;
- $t->mRedirect = isset( $row->page_is_redirect ) ? (bool)$row->page_is_redirect : null;
- $t->mLatestID = isset( $row->page_latest ) ? intval( $row->page_latest ) : false;
-
+ $t->loadFromRow( $row );
return $t;
}
/**
+ * Load Title object fields from a DB row.
+ * If false is given, the title will be treated as non-existing.
+ *
+ * @param $row Object|false database row
+ * @return void
+ */
+ public function loadFromRow( $row ) {
+ if ( $row ) { // page found
+ if ( isset( $row->page_id ) )
+ $this->mArticleID = (int)$row->page_id;
+ if ( isset( $row->page_len ) )
+ $this->mLength = (int)$row->page_len;
+ if ( isset( $row->page_is_redirect ) )
+ $this->mRedirect = (bool)$row->page_is_redirect;
+ if ( isset( $row->page_latest ) )
+ $this->mLatestID = (int)$row->page_latest;
+ } else { // page not found
+ $this->mArticleID = 0;
+ $this->mLength = 0;
+ $this->mRedirect = false;
+ $this->mLatestID = 0;
+ }
+ }
+
+ /**
* Create a new Title from a namespace index and a DB key.
* It's assumed that $ns and $title are *valid*, for instance when
* they came directly from the database or a special page name.
* For convenience, spaces are converted to underscores so that
* eg user_text fields can be used directly.
*
- * @param $ns \type{\int} the namespace of the article
- * @param $title \type{\string} the unprefixed database key form
- * @param $fragment \type{\string} The link fragment (after the "#")
- * @param $interwiki \type{\string} The interwiki prefix
- * @return \type{Title} the new object
+ * @param $ns Int the namespace of the article
+ * @param $title String the unprefixed database key form
+ * @param $fragment String the link fragment (after the "#")
+ * @param $interwiki String the interwiki prefix
+ * @return Title the new object
*/
public static function &makeTitle( $ns, $title, $fragment = '', $interwiki = '' ) {
$t = new Title();
@@ -293,11 +311,11 @@ class Title {
* The parameters will be checked for validity, which is a bit slower
* than makeTitle() but safer for user-provided data.
*
- * @param $ns \type{\int} the namespace of the article
- * @param $title \type{\string} the database key form
- * @param $fragment \type{\string} The link fragment (after the "#")
- * @param $interwiki \type{\string} The interwiki prefix
- * @return \type{Title} the new object, or NULL on an error
+ * @param $ns Int the namespace of the article
+ * @param $title String database key form
+ * @param $fragment String the link fragment (after the "#")
+ * @param $interwiki String interwiki prefix
+ * @return Title the new object, or NULL on an error
*/
public static function makeTitleSafe( $ns, $title, $fragment = '', $interwiki = '' ) {
$t = new Title();
@@ -312,7 +330,7 @@ class Title {
/**
* Create a new Title for the Main Page
*
- * @return \type{Title} the new object
+ * @return Title the new object
*/
public static function newMainPage() {
$title = Title::newFromText( wfMsgForContent( 'mainpage' ) );
@@ -342,8 +360,8 @@ class Title {
* This will recurse down $wgMaxRedirects times or until a non-redirect target is hit
* in order to provide (hopefully) the Title of the final destination instead of another redirect
*
- * @param $text \type{\string} Text with possible redirect
- * @return \type{Title} The corresponding Title
+ * @param $text String Text with possible redirect
+ * @return Title
*/
public static function newFromRedirectRecurse( $text ) {
$titles = self::newFromRedirectArray( $text );
@@ -356,15 +374,11 @@ class Title {
* The last element in the array is the final destination after all redirects
* have been resolved (up to $wgMaxRedirects times)
*
- * @param $text \type{\string} Text with possible redirect
- * @return \type{\array} Array of Titles, with the destination last
+ * @param $text String Text with possible redirect
+ * @return Array of Titles, with the destination last
*/
public static function newFromRedirectArray( $text ) {
global $wgMaxRedirects;
- // are redirects disabled?
- if ( $wgMaxRedirects < 1 ) {
- return null;
- }
$title = self::newFromRedirectInternal( $text );
if ( is_null( $title ) ) {
return null;
@@ -395,10 +409,15 @@ class Title {
* Really extract the redirect destination
* Do not call this function directly, use one of the newFromRedirect* functions above
*
- * @param $text \type{\string} Text with possible redirect
- * @return \type{Title} The corresponding Title
+ * @param $text String Text with possible redirect
+ * @return Title
*/
protected static function newFromRedirectInternal( $text ) {
+ global $wgMaxRedirects;
+ if ( $wgMaxRedirects < 1 ) {
+ //redirects are disabled, so quit early
+ return null;
+ }
$redir = MagicWord::get( 'redirect' );
$text = trim( $text );
if ( $redir->matchStartAndRemove( $text ) ) {
@@ -411,9 +430,7 @@ class Title {
// and URL-decode links
if ( strpos( $m[1], '%' ) !== false ) {
// Match behavior of inline link parsing here;
- // don't interpret + as " " most of the time!
- // It might be safe to just use rawurldecode instead, though.
- $m[1] = urldecode( ltrim( $m[1], ':' ) );
+ $m[1] = rawurldecode( ltrim( $m[1], ':' ) );
}
$title = Title::newFromText( $m[1] );
// If the title is a redirect to bad special pages or is invalid, return null
@@ -433,9 +450,8 @@ class Title {
/**
* Get the prefixed DB key associated with an ID
*
- * @param $id \type{\int} the page_id of the article
- * @return \type{Title} an object representing the article, or NULL
- * if no such article was found
+ * @param $id Int the page_id of the article
+ * @return Title an object representing the article, or NULL if no such article was found
*/
public static function nameOf( $id ) {
$dbr = wfGetDB( DB_SLAVE );
@@ -457,7 +473,7 @@ class Title {
/**
* Get a regex character class describing the legal characters in a link
*
- * @return \type{\string} the list of characters, not delimited
+ * @return String the list of characters, not delimited
*/
public static function legalChars() {
global $wgLegalTitleChars;
@@ -468,10 +484,9 @@ class Title {
* Get a string representation of a title suitable for
* including in a search index
*
- * @param $ns \type{\int} a namespace index
- * @param $title \type{\string} text-form main part
- * @return \type{\string} a stripped-down title string ready for the
- * search index
+ * @param $ns Int a namespace index
+ * @param $title String text-form main part
+ * @return String a stripped-down title string ready for the search index
*/
public static function indexTitle( $ns, $title ) {
global $wgContLang;
@@ -496,11 +511,11 @@ class Title {
/**
* Make a prefixed DB key from a DB key and a namespace index
*
- * @param $ns \type{\int} numerical representation of the namespace
- * @param $title \type{\string} the DB key form the title
- * @param $fragment \type{\string} The link fragment (after the "#")
- * @param $interwiki \type{\string} The interwiki prefix
- * @return \type{\string} the prefixed form of the title
+ * @param $ns Int numerical representation of the namespace
+ * @param $title String the DB key form the title
+ * @param $fragment String The link fragment (after the "#")
+ * @param $interwiki String The interwiki prefix
+ * @return String the prefixed form of the title
*/
public static function makeName( $ns, $title, $fragment = '', $interwiki = '' ) {
global $wgContLang;
@@ -520,8 +535,7 @@ class Title {
* Determine whether the object refers to a page within
* this project.
*
- * @return \type{\bool} TRUE if this is an in-project interwiki link
- * or a wikilink, FALSE otherwise
+ * @return Bool TRUE if this is an in-project interwiki link or a wikilink, FALSE otherwise
*/
public function isLocal() {
if ( $this->mInterwiki != '' ) {
@@ -535,7 +549,7 @@ class Title {
* Determine whether the object refers to a page within
* this project and is transcludable.
*
- * @return \type{\bool} TRUE if this is transcludable
+ * @return Bool TRUE if this is transcludable
*/
public function isTrans() {
if ( $this->mInterwiki == '' ) {
@@ -546,10 +560,9 @@ class Title {
}
/**
- * Returns the DB name of the distant wiki
- * which owns the object.
+ * Returns the DB name of the distant wiki which owns the object.
*
- * @return \type{\string} the DB name
+ * @return String the DB name
*/
public function getTransWikiID() {
if ( $this->mInterwiki == '' ) {
@@ -581,14 +594,14 @@ class Title {
/**
* Get the text form (spaces not underscores) of the main part
*
- * @return \type{\string} Main part of the title
+ * @return String Main part of the title
*/
public function getText() { return $this->mTextform; }
/**
* Get the URL-encoded form of the main part
*
- * @return \type{\string} Main part of the title, URL-encoded
+ * @return String Main part of the title, URL-encoded
*/
public function getPartialURL() { return $this->mUrlform; }
@@ -600,7 +613,7 @@ class Title {
public function getDBkey() { return $this->mDbkeyform; }
/**
- * Get the namespace index, i.e.\ one of the NS_xxxx constants.
+ * Get the namespace index, i.e. one of the NS_xxxx constants.
*
* @return Integer: Namespace index
*/
@@ -625,13 +638,28 @@ class Title {
return MWNamespace::getCanonicalName( $this->mNamespace );
}
}
+
+ // Strip off subpages
+ $pagename = $this->getText();
+ if ( strpos( $pagename, '/' ) !== false ) {
+ list( $username , ) = explode( '/', $pagename, 2 );
+ } else {
+ $username = $pagename;
+ }
+
+ if ( $wgContLang->needsGenderDistinction() &&
+ MWNamespace::hasGenderDistinction( $this->mNamespace ) ) {
+ $gender = GenderCache::singleton()->getGenderOf( $username, __METHOD__ );
+ return $wgContLang->getGenderNsText( $this->mNamespace, $gender );
+ }
+
return $wgContLang->getNsText( $this->mNamespace );
}
/**
* Get the DB key with the initial letter case as specified by the user
*
- * @return \type{\string} DB key
+ * @return String DB key
*/
function getUserCaseDBKey() {
return $this->mUserCaseDBKey;
@@ -640,7 +668,7 @@ class Title {
/**
* Get the namespace text of the subject (rather than talk) page
*
- * @return \type{\string} Namespace text
+ * @return String Namespace text
*/
public function getSubjectNsText() {
global $wgContLang;
@@ -650,7 +678,7 @@ class Title {
/**
* Get the namespace text of the talk page
*
- * @return \type{\string} Namespace text
+ * @return String Namespace text
*/
public function getTalkNsText() {
global $wgContLang;
@@ -660,7 +688,7 @@ class Title {
/**
* Could this title have a corresponding talk page?
*
- * @return \type{\bool} TRUE or FALSE
+ * @return Bool TRUE or FALSE
*/
public function canTalk() {
return( MWNamespace::canTalk( $this->mNamespace ) );
@@ -669,20 +697,20 @@ class Title {
/**
* Get the interwiki prefix (or null string)
*
- * @return \type{\string} Interwiki prefix
+ * @return String Interwiki prefix
*/
public function getInterwiki() { return $this->mInterwiki; }
/**
* Get the Title fragment (i.e.\ the bit after the #) in text form
*
- * @return \type{\string} Title fragment
+ * @return String Title fragment
*/
public function getFragment() { return $this->mFragment; }
/**
* Get the fragment in URL form, including the "#" character if there is one
- * @return \type{\string} Fragment in URL form
+ * @return String Fragment in URL form
*/
public function getFragmentForURL() {
if ( $this->mFragment == '' ) {
@@ -695,14 +723,14 @@ class Title {
/**
* Get the default namespace index, for when there is no namespace
*
- * @return \type{\int} Default namespace index
+ * @return Int Default namespace index
*/
public function getDefaultNamespace() { return $this->mDefaultNamespace; }
/**
* Get title for search index
*
- * @return \type{\string} a stripped-down title string ready for the
+ * @return String a stripped-down title string ready for the
* search index
*/
public function getIndexTitle() {
@@ -712,7 +740,7 @@ class Title {
/**
* Get the prefixed database key form
*
- * @return \type{\string} the prefixed title, with underscores and
+ * @return String the prefixed title, with underscores and
* any interwiki and namespace prefixes
*/
public function getPrefixedDBkey() {
@@ -725,10 +753,11 @@ class Title {
* Get the prefixed title with spaces.
* This is the form usually used for display
*
- * @return \type{\string} the prefixed title, with spaces
+ * @return String the prefixed title, with spaces
*/
public function getPrefixedText() {
- if ( empty( $this->mPrefixedText ) ) { // FIXME: bad usage of empty() ?
+ // @todo FIXME: Bad usage of empty() ?
+ if ( empty( $this->mPrefixedText ) ) {
$s = $this->prefix( $this->mTextform );
$s = str_replace( '_', ' ', $s );
$this->mPrefixedText = $s;
@@ -740,8 +769,7 @@ class Title {
* Get the prefixed title with spaces, plus any fragment
* (part beginning with '#')
*
- * @return \type{\string} the prefixed title, with spaces and
- * the fragment, including '#'
+ * @return String the prefixed title, with spaces and the fragment, including '#'
*/
public function getFullText() {
$text = $this->getPrefixedText();
@@ -752,9 +780,9 @@ class Title {
}
/**
- * Get the base name, i.e. the leftmost parts before the /
+ * Get the base page name, i.e. the leftmost part before any slashes
*
- * @return \type{\string} Base name
+ * @return String Base name
*/
public function getBaseText() {
if ( !MWNamespace::hasSubpages( $this->mNamespace ) ) {
@@ -770,9 +798,9 @@ class Title {
}
/**
- * Get the lowest-level subpage name, i.e. the rightmost part after /
+ * Get the lowest-level subpage name, i.e. the rightmost part after any slashes
*
- * @return \type{\string} Subpage name
+ * @return String Subpage name
*/
public function getSubpageText() {
if ( !MWNamespace::hasSubpages( $this->mNamespace ) ) {
@@ -785,7 +813,7 @@ class Title {
/**
* Get a URL-encoded form of the subpage text
*
- * @return \type{\string} URL-encoded subpage name
+ * @return String URL-encoded subpage name
*/
public function getSubpageUrlForm() {
$text = $this->getSubpageText();
@@ -796,7 +824,7 @@ class Title {
/**
* Get a URL-encoded title (not an actual URL) including interwiki
*
- * @return \type{\string} the URL-encoded form
+ * @return String the URL-encoded form
*/
public function getPrefixedURL() {
$s = $this->prefix( $this->mDbkeyform );
@@ -811,8 +839,8 @@ class Title {
* @param $query \twotypes{\string,\array} an optional query string, not used for interwiki
* links. Can be specified as an associative array as well, e.g.,
* array( 'action' => 'edit' ) (keys and values will be URL-escaped).
- * @param $variant \type{\string} language variant of url (for sr, zh..)
- * @return \type{\string} the URL
+ * @param $variant String language variant of url (for sr, zh..)
+ * @return String the URL
*/
public function getFullURL( $query = '', $variant = false ) {
global $wgServer, $wgRequest;
@@ -846,7 +874,7 @@ class Title {
# Finally, add the fragment.
$url .= $this->getFragmentForURL();
- wfRunHooks( 'GetFullURL', array( &$this, &$url, $query ) );
+ wfRunHooks( 'GetFullURL', array( &$this, &$url, $query, $variant ) );
return $url;
}
@@ -858,8 +886,8 @@ class Title {
* $wgArticlePath will be used. Can be specified as an associative array
* as well, e.g., array( 'action' => 'edit' ) (keys and values will be
* URL-escaped).
- * @param $variant \type{\string} language variant of url (for sr, zh..)
- * @return \type{\string} the URL
+ * @param $variant String language variant of url (for sr, zh..)
+ * @return String the URL
*/
public function getLocalURL( $query = '', $variant = false ) {
global $wgArticlePath, $wgScript, $wgServer, $wgRequest;
@@ -911,6 +939,7 @@ class Title {
}
}
}
+
if ( $url === false ) {
if ( $query == '-' ) {
$query = '';
@@ -919,7 +948,7 @@ class Title {
}
}
- // FIXME: this causes breakage in various places when we
+ // @todo FIXME: This causes breakage in various places when we
// actually expected a local URL and end up with dupe prefixes.
if ( $wgRequest->getVal( 'action' ) == 'render' ) {
$url = $wgServer . $url;
@@ -939,12 +968,12 @@ class Title {
* The result obviously should not be URL-escaped, but does need to be
* HTML-escaped if it's being output in HTML.
*
- * @param $query \type{\arrayof{\string}} An associative array of key => value pairs for the
+ * @param $query Array of Strings An associative array of key => value pairs for the
* query string. Keys and values will be escaped.
- * @param $variant \type{\string} Language variant of URL (for sr, zh..). Ignored
+ * @param $variant String language variant of URL (for sr, zh..). Ignored
* for external links. Default is "false" (same variant as current page,
* for anonymous users).
- * @return \type{\string} the URL
+ * @return String the URL
*/
public function getLinkUrl( $query = array(), $variant = false ) {
wfProfileIn( __METHOD__ );
@@ -963,8 +992,8 @@ class Title {
* Get an HTML-escaped version of the URL form, suitable for
* using in a link, without a server name or fragment
*
- * @param $query \type{\string} an optional query string
- * @return \type{\string} the URL
+ * @param $query String an optional query string
+ * @return String the URL
*/
public function escapeLocalURL( $query = '' ) {
return htmlspecialchars( $this->getLocalURL( $query ) );
@@ -974,33 +1003,63 @@ class Title {
* Get an HTML-escaped version of the URL form, suitable for
* using in a link, including the server name and fragment
*
- * @param $query \type{\string} an optional query string
- * @return \type{\string} the URL
+ * @param $query String an optional query string
+ * @return String the URL
*/
public function escapeFullURL( $query = '' ) {
return htmlspecialchars( $this->getFullURL( $query ) );
}
+
+ /**
+ * HTML-escaped version of getCanonicalURL()
+ */
+ public function escapeCanonicalURL( $query = '', $variant = false ) {
+ return htmlspecialchars( $this->getCanonicalURL( $query, $variant ) );
+ }
/**
* Get the URL form for an internal link.
* - Used in various Squid-related code, in case we have a different
* internal hostname for the server from the exposed one.
+ *
+ * This uses $wgInternalServer to qualify the path, or $wgServer
+ * if $wgInternalServer is not set. If the server variable used is
+ * protocol-relative, the URL will be expanded to http://
*
- * @param $query \type{\string} an optional query string
- * @param $variant \type{\string} language variant of url (for sr, zh..)
- * @return \type{\string} the URL
+ * @param $query String an optional query string
+ * @param $variant String language variant of url (for sr, zh..)
+ * @return String the URL
*/
public function getInternalURL( $query = '', $variant = false ) {
- global $wgInternalServer;
- $url = $wgInternalServer . $this->getLocalURL( $query, $variant );
- wfRunHooks( 'GetInternalURL', array( &$this, &$url, $query ) );
+ global $wgInternalServer, $wgServer;
+ $server = $wgInternalServer !== false ? $wgInternalServer : $wgServer;
+ $url = wfExpandUrl( $server . $this->getLocalURL( $query, $variant ), PROTO_HTTP );
+ wfRunHooks( 'GetInternalURL', array( &$this, &$url, $query, $variant ) );
+ return $url;
+ }
+
+ /**
+ * Get the URL for a canonical link, for use in things like IRC and
+ * e-mail notifications. Uses $wgCanonicalServer and the
+ * GetCanonicalURL hook.
+ *
+ * NOTE: Unlike getInternalURL(), the canonical URL includes the fragment
+ *
+ * @param $query string An optional query string
+ * @param $variant string Language variant of URL (for sr, zh, ...)
+ * @return string The URL
+ */
+ public function getCanonicalURL( $query = '', $variant = false ) {
+ global $wgCanonicalServer;
+ $url = wfExpandUrl( $this->getLocalURL( $query, $variant ) . $this->getFragmentForURL(), PROTO_CANONICAL );
+ wfRunHooks( 'GetCanonicalURL', array( &$this, &$url, $query, $variant ) );
return $url;
}
/**
* Get the edit URL for this Title
*
- * @return \type{\string} the URL, or a null string if this is an
+ * @return String the URL, or a null string if this is an
* interwiki link
*/
public function getEditURL() {
@@ -1016,7 +1075,7 @@ class Title {
* Get the HTML-escaped displayable text form.
* Used for the title field in <a> tags.
*
- * @return \type{\string} the text, including any prefixes
+ * @return String the text, including any prefixes
*/
public function getEscapedText() {
return htmlspecialchars( $this->getPrefixedText() );
@@ -1025,7 +1084,7 @@ class Title {
/**
* Is this Title interwiki?
*
- * @return \type{\bool}
+ * @return Bool
*/
public function isExternal() {
return ( $this->mInterwiki != '' );
@@ -1034,8 +1093,8 @@ class Title {
/**
* Is this page "semi-protected" - the *only* protection is autoconfirm?
*
- * @param $action \type{\string} Action to check (default: edit)
- * @return \type{\bool}
+ * @param $action String Action to check (default: edit)
+ * @return Bool
*/
public function isSemiProtected( $action = 'edit' ) {
if ( $this->exists() ) {
@@ -1060,9 +1119,9 @@ class Title {
/**
* Does the title correspond to a protected article?
*
- * @param $action \type{\string} the action the page is protected from,
+ * @param $action String the action the page is protected from,
* by default checks all actions.
- * @return \type{\bool}
+ * @return Bool
*/
public function isProtected( $action = '' ) {
global $wgRestrictionLevels;
@@ -1092,7 +1151,7 @@ class Title {
/**
* Is this a conversion table for the LanguageConverter?
*
- * @return \type{\bool}
+ * @return Bool
*/
public function isConversionTable() {
if(
@@ -1109,7 +1168,7 @@ class Title {
/**
* Is $wgUser watching this page?
*
- * @return \type{\bool}
+ * @return Bool
*/
public function userIsWatching() {
global $wgUser;
@@ -1134,24 +1193,31 @@ class Title {
*
* May provide false positives, but should never provide a false negative.
*
- * @param $action \type{\string} action that permission needs to be checked for
- * @return \type{\bool}
+ * @param $action String action that permission needs to be checked for
+ * @return Bool
*/
public function quickUserCan( $action ) {
return $this->userCan( $action, false );
}
/**
- * Determines if $wgUser is unable to edit this page because it has been protected
+ * Determines if $user is unable to edit this page because it has been protected
* by $wgNamespaceProtection.
*
- * @return \type{\bool}
+ * @param $user User object, $wgUser will be used if not passed
+ * @return Bool
*/
- public function isNamespaceProtected() {
- global $wgNamespaceProtection, $wgUser;
+ public function isNamespaceProtected( User $user = null ) {
+ global $wgNamespaceProtection;
+
+ if ( $user === null ) {
+ global $wgUser;
+ $user = $wgUser;
+ }
+
if ( isset( $wgNamespaceProtection[$this->mNamespace] ) ) {
foreach ( (array)$wgNamespaceProtection[$this->mNamespace] as $right ) {
- if ( $right != '' && !$wgUser->isAllowed( $right ) ) {
+ if ( $right != '' && !$user->isAllowed( $right ) ) {
return true;
}
}
@@ -1162,9 +1228,9 @@ class Title {
/**
* Can $wgUser perform $action on this page?
*
- * @param $action \type{\string} action that permission needs to be checked for
- * @param $doExpensiveQueries \type{\bool} Set this to false to avoid doing unnecessary queries.
- * @return \type{\bool}
+ * @param $action String action that permission needs to be checked for
+ * @param $doExpensiveQueries Bool Set this to false to avoid doing unnecessary queries.
+ * @return Bool
*/
public function userCan( $action, $doExpensiveQueries = true ) {
global $wgUser;
@@ -1174,13 +1240,14 @@ class Title {
/**
* Can $user perform $action on this page?
*
- * FIXME: This *does not* check throttles (User::pingLimiter()).
+ * @todo FIXME: This *does not* check throttles (User::pingLimiter()).
*
- * @param $action \type{\string}action that permission needs to be checked for
- * @param $user \type{User} user to check
- * @param $doExpensiveQueries \type{\bool} Set this to false to avoid doing unnecessary queries.
- * @param $ignoreErrors \type{\arrayof{\string}} Set this to a list of message keys whose corresponding errors may be ignored.
- * @return \type{\array} Array of arrays of the arguments to wfMsg to explain permissions problems.
+ * @param $action String action that permission needs to be checked for
+ * @param $user User to check
+ * @param $doExpensiveQueries Bool Set this to false to avoid doing unnecessary queries by
+ * skipping checks for cascading protections and user blocks.
+ * @param $ignoreErrors Array of Strings Set this to a list of message keys whose corresponding errors may be ignored.
+ * @return Array of arguments to wfMsg to explain permissions problems.
*/
public function getUserPermissionsErrors( $action, $user, $doExpensiveQueries = true, $ignoreErrors = array() ) {
$errors = $this->getUserPermissionsErrorsInternal( $action, $user, $doExpensiveQueries );
@@ -1289,13 +1356,13 @@ class Title {
if ( is_array( $result ) && count( $result ) && !is_array( $result[0] ) ) {
// A single array representing an error
$errors[] = $result;
- } else if ( is_array( $result ) && is_array( $result[0] ) ) {
+ } elseif ( is_array( $result ) && is_array( $result[0] ) ) {
// A nested array representing multiple errors
$errors = array_merge( $errors, $result );
- } else if ( $result !== '' && is_string( $result ) ) {
+ } elseif ( $result !== '' && is_string( $result ) ) {
// A string representing a message-id
$errors[] = array( $result );
- } else if ( $result === false ) {
+ } elseif ( $result === false ) {
// a generic "We don't want them to do that"
$errors[] = array( 'badaccess-group0' );
}
@@ -1352,7 +1419,7 @@ class Title {
}
# Check $wgNamespaceProtection for restricted namespaces
- if ( $this->isNamespaceProtected() ) {
+ if ( $this->isNamespaceProtected( $user ) ) {
$ns = $this->mNamespace == NS_MAIN ?
wfMsg( 'nstab-main' ) : $this->getNsText();
$errors[] = $this->mNamespace == NS_MEDIAWIKI ?
@@ -1382,9 +1449,9 @@ class Title {
if ( $action != 'patrol' && !$user->isAllowed( 'editusercssjs' )
&& !preg_match( '/^' . preg_quote( $user->getName(), '/' ) . '\//', $this->mTextform ) ) {
if ( $this->isCssSubpage() && !$user->isAllowed( 'editusercss' ) ) {
- $errors[] = array( 'customcssjsprotected' );
- } else if ( $this->isJsSubpage() && !$user->isAllowed( 'edituserjs' ) ) {
- $errors[] = array( 'customcssjsprotected' );
+ $errors[] = array( 'customcssprotected' );
+ } elseif ( $this->isJsSubpage() && !$user->isAllowed( 'edituserjs' ) ) {
+ $errors[] = array( 'customjsprotected' );
}
}
@@ -1429,9 +1496,9 @@ class Title {
/**
* Check restrictions on cascading pages.
- *
+ *
* @param $action String the action to check
- * @param $user User user to check
+ * @param $user User to check
* @param $errors Array list of current errors
* @param $doExpensiveQueries Boolean whether or not to perform expensive queries
* @param $short Boolean short circuit on first error
@@ -1470,7 +1537,7 @@ class Title {
* Check action permissions not already checked in checkQuickPermissions
*
* @param $action String the action to check
- * @param $user User user to check
+ * @param $user User to check
* @param $errors Array list of current errors
* @param $doExpensiveQueries Boolean whether or not to perform expensive queries
* @param $short Boolean short circuit on first error
@@ -1516,7 +1583,7 @@ class Title {
* Check that the user isn't blocked from editting.
*
* @param $action String the action to check
- * @param $user User user to check
+ * @param $user User to check
* @param $errors Array list of current errors
* @param $doExpensiveQueries Boolean whether or not to perform expensive queries
* @param $short Boolean short circuit on first error
@@ -1524,7 +1591,7 @@ class Title {
* @return Array list of errors
*/
private function checkUserBlock( $action, $user, $errors, $doExpensiveQueries, $short ) {
- if( $short && count( $errors ) > 0 ) {
+ if( !$doExpensiveQueries ) {
return $errors;
}
@@ -1534,8 +1601,14 @@ class Title {
$errors[] = array( 'confirmedittext' );
}
- // Edit blocks should not affect reading. Account creation blocks handled at userlogin.
- if ( $action != 'read' && $action != 'createaccount' && $user->isBlockedFrom( $this ) ) {
+ if ( in_array( $action, array( 'read', 'createaccount', 'unblock' ) ) ){
+ // Edit blocks should not affect reading.
+ // Account creation blocks handled at userlogin.
+ // Unblocking handled in SpecialUnblock
+ } elseif( ( $action == 'edit' || $action == 'create' ) && !$user->isBlockedFrom( $this ) ){
+ // Don't block the user from editing their own talk page unless they've been
+ // explicitly blocked from that too.
+ } elseif( $user->isBlocked() && $user->mBlock->prevents( $action ) !== false ) {
$block = $user->mBlock;
// This is from OutputPage::blockedPage
@@ -1555,29 +1628,16 @@ class Title {
}
$link = '[[' . $wgContLang->getNsText( NS_USER ) . ":{$name}|{$name}]]";
- $blockid = $block->mId;
+ $blockid = $block->getId();
$blockExpiry = $user->mBlock->mExpiry;
$blockTimestamp = $wgLang->timeanddate( wfTimestamp( TS_MW, $user->mBlock->mTimestamp ), true );
if ( $blockExpiry == 'infinity' ) {
- // Entry in database (table ipblocks) is 'infinity' but 'ipboptions' uses 'infinite' or 'indefinite'
- $scBlockExpiryOptions = wfMsg( 'ipboptions' );
-
- foreach ( explode( ',', $scBlockExpiryOptions ) as $option ) {
- if ( !strpos( $option, ':' ) )
- continue;
-
- list( $show, $value ) = explode( ':', $option );
-
- if ( $value == 'infinite' || $value == 'indefinite' ) {
- $blockExpiry = $show;
- break;
- }
- }
+ $blockExpiry = wfMessage( 'infiniteblock' )->text();
} else {
$blockExpiry = $wgLang->timeanddate( wfTimestamp( TS_MW, $blockExpiry ), true );
}
- $intended = $user->mBlock->mAddress;
+ $intended = strval( $user->mBlock->getTarget() );
$errors[] = array( ( $block->mAuto ? 'autoblockedtext' : 'blockedtext' ), $link, $reason, $ip, $name,
$blockid, $blockExpiry, $intended, $blockTimestamp );
@@ -1591,11 +1651,11 @@ class Title {
* which checks ONLY that previously checked by userCan (i.e. it leaves out
* checks on wfReadOnly() and blocks)
*
- * @param $action \type{\string} action that permission needs to be checked for
- * @param $user \type{User} user to check
- * @param $doExpensiveQueries \type{\bool} Set this to false to avoid doing unnecessary queries.
- * @param $short \type{\bool} Set this to true to stop after the first permission error.
- * @return \type{\array} Array of arrays of the arguments to wfMsg to explain permissions problems.
+ * @param $action String action that permission needs to be checked for
+ * @param $user User to check
+ * @param $doExpensiveQueries Bool Set this to false to avoid doing unnecessary queries.
+ * @param $short Bool Set this to true to stop after the first permission error.
+ * @return Array of arrays of the arguments to wfMsg to explain permissions problems.
*/
protected function getUserPermissionsErrorsInternal( $action, $user, $doExpensiveQueries = true, $short = false ) {
wfProfileIn( __METHOD__ );
@@ -1626,7 +1686,7 @@ class Title {
* Is this title subject to title protection?
* Title protection is the one applied against creation of such title.
*
- * @return \type{\mixed} An associative array representing any existent title
+ * @return Mixed An associative array representing any existent title
* protection, or false if there's none.
*/
private function getTitleProtection() {
@@ -1655,9 +1715,9 @@ class Title {
/**
* Update the title protection status
*
- * @param $create_perm \type{\string} Permission required for creation
- * @param $reason \type{\string} Reason for protection
- * @param $expiry \type{\string} Expiry timestamp
+ * @param $create_perm String Permission required for creation
+ * @param $reason String Reason for protection
+ * @param $expiry String Expiry timestamp
* @return boolean true
*/
public function updateTitleProtection( $create_perm, $reason, $expiry ) {
@@ -1673,10 +1733,10 @@ class Title {
$dbw = wfGetDB( DB_MASTER );
- $encodedExpiry = Block::encodeExpiry( $expiry, $dbw );
+ $encodedExpiry = $dbw->encodeExpiry( $expiry );
$expiry_description = '';
- if ( $encodedExpiry != 'infinity' ) {
+ if ( $encodedExpiry != $dbw->getInfinity() ) {
$expiry_description = ' (' . wfMsgForContent( 'protect-expiring', $wgContLang->timeanddate( $expiry ),
$wgContLang->date( $expiry ) , $wgContLang->time( $expiry ) ) . ')';
} else {
@@ -1689,7 +1749,7 @@ class Title {
'pt_namespace' => $namespace,
'pt_title' => $title,
'pt_create_perm' => $create_perm,
- 'pt_timestamp' => Block::encodeExpiry( wfTimestampNow(), $dbw ),
+ 'pt_timestamp' => $dbw->encodeExpiry( wfTimestampNow() ),
'pt_expiry' => $encodedExpiry,
'pt_user' => $wgUser->getId(),
'pt_reason' => $reason,
@@ -1735,7 +1795,7 @@ class Title {
* Would anybody with sufficient privileges be able to move this page?
* Some pages just aren't movable.
*
- * @return \type{\bool} TRUE or FALSE
+ * @return Bool TRUE or FALSE
*/
public function isMovable() {
return MWNamespace::isMovable( $this->getNamespace() ) && $this->getInterwiki() == '';
@@ -1744,7 +1804,7 @@ class Title {
/**
* Can $wgUser read this page?
*
- * @return \type{\bool}
+ * @return Bool
* @todo fold these checks into userCan()
*/
public function userCanRead() {
@@ -1760,7 +1820,7 @@ class Title {
# Not a public wiki, so no shortcut
$useShortcut = false;
} elseif ( !empty( $wgRevokePermissions ) ) {
- /*
+ /**
* Iterate through each group with permissions being revoked (key not included since we don't care
* what the group name is), then check if the read permission is being revoked. If it is, then
* we don't use the shortcut below since the user might not be able to read, even though anon
@@ -1792,47 +1852,36 @@ class Title {
} else {
global $wgWhitelistRead;
- /**
- * Always grant access to the login page.
- * Even anons need to be able to log in.
- */
- if ( $this->isSpecial( 'Userlogin' ) || $this->isSpecial( 'Resetpass' ) ) {
+ # Always grant access to the login page.
+ # Even anons need to be able to log in.
+ if ( $this->isSpecial( 'Userlogin' ) || $this->isSpecial( 'ChangePassword' ) ) {
return true;
}
- /**
- * Bail out if there isn't whitelist
- */
+ # Bail out if there isn't whitelist
if ( !is_array( $wgWhitelistRead ) ) {
return false;
}
- /**
- * Check for explicit whitelisting
- */
+ # Check for explicit whitelisting
$name = $this->getPrefixedText();
$dbName = $this->getPrefixedDBKey();
// Check with and without underscores
if ( in_array( $name, $wgWhitelistRead, true ) || in_array( $dbName, $wgWhitelistRead, true ) )
return true;
- /**
- * Old settings might have the title prefixed with
- * a colon for main-namespace pages
- */
+ # Old settings might have the title prefixed with
+ # a colon for main-namespace pages
if ( $this->getNamespace() == NS_MAIN ) {
if ( in_array( ':' . $name, $wgWhitelistRead ) ) {
return true;
}
}
- /**
- * If it's a special page, ditch the subpage bit
- * and check again
- */
+ # If it's a special page, ditch the subpage bit and check again
if ( $this->getNamespace() == NS_SPECIAL ) {
$name = $this->getDBkey();
- list( $name, /* $subpage */ ) = SpecialPage::resolveAliasWithSubpage( $name );
+ list( $name, /* $subpage */ ) = SpecialPageFactory::resolveAlias( $name );
if ( $name === false ) {
# Invalid special page, but we show standard login required message
return false;
@@ -1849,9 +1898,22 @@ class Title {
}
/**
+ * Is this the mainpage?
+ * @note Title::newFromText seams to be sufficiently optimized by the title
+ * cache that we don't need to over-optimize by doing direct comparisons and
+ * acidentally creating new bugs where $title->equals( Title::newFromText() )
+ * ends up reporting something differently than $title->isMainPage();
+ *
+ * @return Bool
+ */
+ public function isMainPage() {
+ return $this->equals( Title::newMainPage() );
+ }
+
+ /**
* Is this a talk page of some sort?
*
- * @return \type{\bool}
+ * @return Bool
*/
public function isTalkPage() {
return MWNamespace::isTalk( $this->getNamespace() );
@@ -1860,7 +1922,7 @@ class Title {
/**
* Is this a subpage?
*
- * @return \type{\bool}
+ * @return Bool
*/
public function isSubpage() {
return MWNamespace::hasSubpages( $this->mNamespace )
@@ -1871,7 +1933,7 @@ class Title {
/**
* Does this have subpages? (Warning, usually requires an extra DB query.)
*
- * @return \type{\bool}
+ * @return Bool
*/
public function hasSubpages() {
if ( !MWNamespace::hasSubpages( $this->mNamespace ) ) {
@@ -1897,7 +1959,7 @@ class Title {
/**
* Get all subpages of this page.
*
- * @param $limit Maximum number of subpages to fetch; -1 for no limit
+ * @param $limit Int maximum number of subpages to fetch; -1 for no limit
* @return mixed TitleArray, or empty array if this page's namespace
* doesn't allow subpages
*/
@@ -1927,7 +1989,7 @@ class Title {
* Could this page contain custom CSS or JavaScript, based
* on the title?
*
- * @return \type{\bool}
+ * @return Bool
*/
public function isCssOrJsPage() {
return $this->mNamespace == NS_MEDIAWIKI
@@ -1936,7 +1998,7 @@ class Title {
/**
* Is this a .css or .js subpage of a user page?
- * @return \type{\bool}
+ * @return Bool
*/
public function isCssJsSubpage() {
return ( NS_USER == $this->mNamespace and preg_match( "/\\/.*\\.(?:css|js)$/", $this->mTextform ) );
@@ -1945,8 +2007,8 @@ class Title {
/**
* Is this a *valid* .css or .js subpage of a user page?
*
- * @return \type{\bool}
- * @deprecated
+ * @return Bool
+ * @deprecated since 1.17
*/
public function isValidCssJsSubpage() {
return $this->isCssJsSubpage();
@@ -1966,7 +2028,7 @@ class Title {
/**
* Is this a .css subpage of a user page?
*
- * @return \type{\bool}
+ * @return Bool
*/
public function isCssSubpage() {
return ( NS_USER == $this->mNamespace && preg_match( "/\\/.*\\.css$/", $this->mTextform ) );
@@ -1975,7 +2037,7 @@ class Title {
/**
* Is this a .js subpage of a user page?
*
- * @return \type{\bool}
+ * @return Bool
*/
public function isJsSubpage() {
return ( NS_USER == $this->mNamespace && preg_match( "/\\/.*\\.js$/", $this->mTextform ) );
@@ -1985,12 +2047,12 @@ class Title {
* Protect css subpages of user pages: can $wgUser edit
* this page?
*
- * @return \type{\bool}
+ * @return Bool
* @todo XXX: this might be better using restrictions
*/
public function userCanEditCssSubpage() {
global $wgUser;
- return ( ( $wgUser->isAllowed( 'editusercssjs' ) && $wgUser->isAllowed( 'editusercss' ) )
+ return ( ( $wgUser->isAllowedAll( 'editusercssjs', 'editusercss' ) )
|| preg_match( '/^' . preg_quote( $wgUser->getName(), '/' ) . '\//', $this->mTextform ) );
}
@@ -1998,19 +2060,19 @@ class Title {
* Protect js subpages of user pages: can $wgUser edit
* this page?
*
- * @return \type{\bool}
+ * @return Bool
* @todo XXX: this might be better using restrictions
*/
public function userCanEditJsSubpage() {
global $wgUser;
- return ( ( $wgUser->isAllowed( 'editusercssjs' ) && $wgUser->isAllowed( 'edituserjs' ) )
- || preg_match( '/^' . preg_quote( $wgUser->getName(), '/' ) . '\//', $this->mTextform ) );
+ return ( ( $wgUser->isAllowedAll( 'editusercssjs', 'edituserjs' ) )
+ || preg_match( '/^' . preg_quote( $wgUser->getName(), '/' ) . '\//', $this->mTextform ) );
}
/**
* Cascading protection: Return true if cascading restrictions apply to this page, false if not.
*
- * @return \type{\bool} If the page is subject to cascading restrictions.
+ * @return Bool If the page is subject to cascading restrictions.
*/
public function isCascadeProtected() {
list( $sources, /* $restrictions */ ) = $this->getCascadeProtectionSources( false );
@@ -2020,20 +2082,20 @@ class Title {
/**
* Cascading protection: Get the source of any cascading restrictions on this page.
*
- * @param $getPages \type{\bool} Whether or not to retrieve the actual pages
+ * @param $getPages Bool Whether or not to retrieve the actual pages
* that the restrictions have come from.
- * @return \type{\arrayof{mixed title array, restriction array}} Array of the Title
- * objects of the pages from which cascading restrictions have come,
- * false for none, or true if such restrictions exist, but $getPages was not set.
- * The restriction array is an array of each type, each of which contains a
- * array of unique groups.
+ * @return Mixed Array of Title objects of the pages from which cascading restrictions
+ * have come, false for none, or true if such restrictions exist, but $getPages
+ * was not set. The restriction array is an array of each type, each of which
+ * contains a array of unique groups.
*/
public function getCascadeProtectionSources( $getPages = true ) {
+ global $wgContLang;
$pagerestrictions = array();
if ( isset( $this->mCascadeSources ) && $getPages ) {
return array( $this->mCascadeSources, $this->mCascadingRestrictions );
- } else if ( isset( $this->mHasCascadingRestrictions ) && !$getPages ) {
+ } elseif ( isset( $this->mHasCascadingRestrictions ) && !$getPages ) {
return array( $this->mHasCascadingRestrictions, $pagerestrictions );
}
@@ -2074,7 +2136,7 @@ class Title {
$purgeExpired = false;
foreach ( $res as $row ) {
- $expiry = Block::decodeExpiry( $row->pr_expiry );
+ $expiry = $wgContLang->formatExpiry( $row->pr_expiry, TS_MW );
if ( $expiry > $now ) {
if ( $getPages ) {
$page_id = $row->pr_page;
@@ -2131,8 +2193,8 @@ class Title {
/**
* Loads a string into mRestrictions array
*
- * @param $res \type{Resource} restrictions as an SQL result.
- * @param $oldFashionedRestrictions string comma-separated list of page
+ * @param $res Resource restrictions as an SQL result.
+ * @param $oldFashionedRestrictions String comma-separated list of page
* restrictions from page table (pre 1.10)
*/
private function loadRestrictionsFromResultWrapper( $res, $oldFashionedRestrictions = null ) {
@@ -2155,13 +2217,14 @@ class Title {
* restrictions from page table (pre 1.10)
*/
public function loadRestrictionsFromRows( $rows, $oldFashionedRestrictions = null ) {
+ global $wgContLang;
$dbr = wfGetDB( DB_SLAVE );
$restrictionTypes = $this->getRestrictionTypes();
foreach ( $restrictionTypes as $type ) {
$this->mRestrictions[$type] = array();
- $this->mRestrictionsExpiry[$type] = Block::decodeExpiry( '' );
+ $this->mRestrictionsExpiry[$type] = $wgContLang->formatExpiry( '', TS_MW );
}
$this->mCascadeRestriction = false;
@@ -2195,17 +2258,16 @@ class Title {
$now = wfTimestampNow();
$purgeExpired = false;
+ # Cycle through all the restrictions.
foreach ( $rows as $row ) {
- # Cycle through all the restrictions.
// Don't take care of restrictions types that aren't allowed
-
if ( !in_array( $row->pr_type, $restrictionTypes ) )
continue;
// This code should be refactored, now that it's being used more generally,
// But I don't really see any harm in leaving it in Block for now -werdna
- $expiry = Block::decodeExpiry( $row->pr_expiry );
+ $expiry = $wgContLang->formatExpiry( $row->pr_expiry, TS_MW );
// Only apply the restrictions if they haven't expired!
if ( !$expiry || $expiry > $now ) {
@@ -2230,16 +2292,21 @@ class Title {
/**
* Load restrictions from the page_restrictions table
*
- * @param $oldFashionedRestrictions string comma-separated list of page
+ * @param $oldFashionedRestrictions String comma-separated list of page
* restrictions from page table (pre 1.10)
*/
public function loadRestrictions( $oldFashionedRestrictions = null ) {
+ global $wgContLang;
if ( !$this->mRestrictionsLoaded ) {
if ( $this->exists() ) {
$dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select( 'page_restrictions', '*',
- array( 'pr_page' => $this->getArticleId() ), __METHOD__ );
+ $res = $dbr->select(
+ 'page_restrictions',
+ '*',
+ array( 'pr_page' => $this->getArticleId() ),
+ __METHOD__
+ );
$this->loadRestrictionsFromResultWrapper( $res, $oldFashionedRestrictions );
} else {
@@ -2247,7 +2314,7 @@ class Title {
if ( $title_protection ) {
$now = wfTimestampNow();
- $expiry = Block::decodeExpiry( $title_protection['pt_expiry'] );
+ $expiry = $wgContLang->formatExpiry( $title_protection['pt_expiry'], TS_MW );
if ( !$expiry || $expiry > $now ) {
// Apply the restrictions
@@ -2258,7 +2325,7 @@ class Title {
$this->mTitleProtection = false;
}
} else {
- $this->mRestrictionsExpiry['create'] = Block::decodeExpiry( '' );
+ $this->mRestrictionsExpiry['create'] = $wgContLang->formatExpiry( '', TS_MW );
}
$this->mRestrictionsLoaded = true;
}
@@ -2286,8 +2353,8 @@ class Title {
/**
* Accessor/initialisation for mRestrictions
*
- * @param $action \type{\string} action that permission needs to be checked for
- * @return \type{\arrayof{\string}} the array of groups allowed to edit this article
+ * @param $action String action that permission needs to be checked for
+ * @return Array of Strings the array of groups allowed to edit this article
*/
public function getRestrictions( $action ) {
if ( !$this->mRestrictionsLoaded ) {
@@ -2301,7 +2368,7 @@ class Title {
/**
* Get the expiry time for the restriction against a given action
*
- * @return 14-char timestamp, or 'infinity' if the page is protected forever
+ * @return String|Bool 14-char timestamp, or 'infinity' if the page is protected forever
* or not protected at all, or false if the action is not recognised.
*/
public function getRestrictionExpiry( $action ) {
@@ -2314,13 +2381,14 @@ class Title {
/**
* Is there a version of this page in the deletion archive?
*
- * @return \type{\int} the number of archived revisions
+ * @return Int the number of archived revisions
*/
public function isDeleted() {
if ( $this->getNamespace() < 0 ) {
$n = 0;
} else {
$dbr = wfGetDB( DB_SLAVE );
+
$n = $dbr->selectField( 'archive', 'COUNT(*)',
array( 'ar_namespace' => $this->getNamespace(), 'ar_title' => $this->getDBkey() ),
__METHOD__
@@ -2362,9 +2430,9 @@ class Title {
* Get the article ID for this Title from the link cache,
* adding it if necessary
*
- * @param $flags \type{\int} a bit field; may be Title::GAID_FOR_UPDATE to select
+ * @param $flags Int a bit field; may be Title::GAID_FOR_UPDATE to select
* for update
- * @return \type{\int} the ID
+ * @return Int the ID
*/
public function getArticleID( $flags = 0 ) {
if ( $this->getNamespace() < 0 ) {
@@ -2388,8 +2456,8 @@ class Title {
* Is this an article that is a redirect page?
* Uses link cache, adding it if necessary
*
- * @param $flags \type{\int} a bit field; may be Title::GAID_FOR_UPDATE to select for update
- * @return \type{\bool}
+ * @param $flags Int a bit field; may be Title::GAID_FOR_UPDATE to select for update
+ * @return Bool
*/
public function isRedirect( $flags = 0 ) {
if ( !is_null( $this->mRedirect ) ) {
@@ -2409,8 +2477,8 @@ class Title {
* What is the length of this page?
* Uses link cache, adding it if necessary
*
- * @param $flags \type{\int} a bit field; may be Title::GAID_FOR_UPDATE to select for update
- * @return \type{\bool}
+ * @param $flags Int a bit field; may be Title::GAID_FOR_UPDATE to select for update
+ * @return Int
*/
public function getLength( $flags = 0 ) {
if ( $this->mLength != -1 ) {
@@ -2429,8 +2497,8 @@ class Title {
/**
* What is the page_latest field for this page?
*
- * @param $flags \type{\int} a bit field; may be Title::GAID_FOR_UPDATE to select for update
- * @return \type{\int} or 0 if the page doesn't exist
+ * @param $flags Int a bit field; may be Title::GAID_FOR_UPDATE to select for update
+ * @return Int or 0 if the page doesn't exist
*/
public function getLatestRevID( $flags = 0 ) {
if ( $this->mLatestID !== false ) {
@@ -2450,11 +2518,11 @@ class Title {
* This clears some fields in this object, and clears any associated
* keys in the "bad links" section of the link cache.
*
- * - This is called from Article::insertNewArticle() to allow
+ * - This is called from Article::doEdit() and Article::insertOn() to allow
* loading of the new page_id. It's also called from
* Article::doDeleteArticle()
*
- * @param $newid \type{\int} the new Article ID
+ * @param $newid Int the new Article ID
*/
public function resetArticleID( $newid ) {
$linkCache = LinkCache::singleton();
@@ -2475,7 +2543,7 @@ class Title {
/**
* Updates page_touched for this page; called from LinksUpdate.php
*
- * @return \type{\bool} true if the update succeded
+ * @return Bool true if the update succeded
*/
public function invalidateCache() {
if ( wfReadOnly() ) {
@@ -2496,15 +2564,16 @@ class Title {
* Prefix some arbitrary text with the namespace or interwiki prefix
* of this object
*
- * @param $name \type{\string} the text
- * @return \type{\string} the prefixed text
+ * @param $name String the text
+ * @return String the prefixed text
* @private
*/
- /* private */ function prefix( $name ) {
+ private function prefix( $name ) {
$p = '';
if ( $this->mInterwiki != '' ) {
$p = $this->mInterwiki . ':';
}
+
if ( 0 != $this->mNamespace ) {
$p .= $this->getNsText() . ':';
}
@@ -2516,7 +2585,7 @@ class Title {
* Note that this doesn't pick up many things that could be wrong with titles, but that
* replacing this regex with something valid will make many titles valid.
*
- * @return string regex string
+ * @return String regex string
*/
static function getTitleInvalidRegex() {
static $rxTc = false;
@@ -2541,7 +2610,7 @@ class Title {
/**
* Capitalize a text string for a title if it belongs to a namespace that capitalizes
*
- * @param $text string containing title to capitalize
+ * @param $text String containing title to capitalize
* @param $ns int namespace index, defaults to NS_MAIN
* @return String containing capitalized title
*/
@@ -2564,14 +2633,12 @@ class Title {
* namespace prefixes, sets the other forms, and canonicalizes
* everything.
*
- * @return \type{\bool} true on success
+ * @return Bool true on success
*/
private function secureAndSplit() {
global $wgContLang, $wgLocalInterwiki;
# Initialisation
- $rxTc = self::getTitleInvalidRegex();
-
$this->mInterwiki = $this->mFragment = '';
$this->mNamespace = $this->mDefaultNamespace; # Usually NS_MAIN
@@ -2586,7 +2653,6 @@ class Title {
# Note: use of the /u option on preg_replace here will cause
# input with invalid UTF-8 sequences to be nullified out in PHP 5.2.x,
# conveniently disabling them.
- #
$dbkey = preg_replace( '/[ _\xA0\x{1680}\x{180E}\x{2000}-\x{200A}\x{2028}\x{2029}\x{202F}\x{205F}\x{3000}]+/u', '_', $dbkey );
$dbkey = trim( $dbkey, '_' );
@@ -2603,7 +2669,7 @@ class Title {
# Initial colon indicates main namespace rather than specified default
# but should not create invalid {ns,title} pairs such as {0,Project:Foo}
- if ( ':' == $dbkey { 0 } ) {
+ if ( ':' == $dbkey[0] ) {
$this->mNamespace = NS_MAIN;
$dbkey = substr( $dbkey, 1 ); # remove the colon but continue processing
$dbkey = trim( $dbkey, '_' ); # remove any subsequent whitespace
@@ -2623,9 +2689,11 @@ class Title {
# For Talk:X pages, check if X has a "namespace" prefix
if ( $ns == NS_TALK && preg_match( $prefixRegexp, $dbkey, $x ) ) {
if ( $wgContLang->getNsIndex( $x[1] ) ) {
- return false; # Disallow Talk:File:x type titles...
- } else if ( Interwiki::isValidInterwiki( $x[1] ) ) {
- return false; # Disallow Talk:Interwiki:x type titles...
+ # Disallow Talk:File:x type titles...
+ return false;
+ } elseif ( Interwiki::isValidInterwiki( $x[1] ) ) {
+ # Disallow Talk:Interwiki:x type titles...
+ return false;
}
}
} elseif ( Interwiki::isValidInterwiki( $p ) ) {
@@ -2641,7 +2709,7 @@ class Title {
# Redundant interwiki prefix to the local wiki
if ( $wgLocalInterwiki !== false
- && 0 == strcasecmp( $this->mInterwiki, $wgLocalInterwiki ) )
+ && 0 == strcasecmp( $this->mInterwiki, $wgLocalInterwiki ) )
{
if ( $dbkey == '' ) {
# Can't have an empty self-link
@@ -2667,13 +2735,12 @@ class Title {
} while ( true );
# We already know that some pages won't be in the database!
- #
if ( $this->mInterwiki != '' || NS_SPECIAL == $this->mNamespace ) {
$this->mArticleID = 0;
}
$fragment = strstr( $dbkey, '#' );
if ( false !== $fragment ) {
- $this->setFragment( preg_replace( '/^#_*/', '#', $fragment ) );
+ $this->setFragment( $fragment );
$dbkey = substr( $dbkey, 0, strlen( $dbkey ) - strlen( $fragment ) );
# remove whitespace again: prevents "Foo_bar_#"
# becoming "Foo_bar_"
@@ -2681,79 +2748,65 @@ class Title {
}
# Reject illegal characters.
- #
+ $rxTc = self::getTitleInvalidRegex();
if ( preg_match( $rxTc, $dbkey ) ) {
return false;
}
- /**
- * Pages with "/./" or "/../" appearing in the URLs will often be un-
- * reachable due to the way web browsers deal with 'relative' URLs.
- * Also, they conflict with subpage syntax. Forbid them explicitly.
- */
+ # Pages with "/./" or "/../" appearing in the URLs will often be un-
+ # reachable due to the way web browsers deal with 'relative' URLs.
+ # Also, they conflict with subpage syntax. Forbid them explicitly.
if ( strpos( $dbkey, '.' ) !== false &&
- ( $dbkey === '.' || $dbkey === '..' ||
- strpos( $dbkey, './' ) === 0 ||
- strpos( $dbkey, '../' ) === 0 ||
- strpos( $dbkey, '/./' ) !== false ||
- strpos( $dbkey, '/../' ) !== false ||
- substr( $dbkey, -2 ) == '/.' ||
- substr( $dbkey, -3 ) == '/..' ) )
+ ( $dbkey === '.' || $dbkey === '..' ||
+ strpos( $dbkey, './' ) === 0 ||
+ strpos( $dbkey, '../' ) === 0 ||
+ strpos( $dbkey, '/./' ) !== false ||
+ strpos( $dbkey, '/../' ) !== false ||
+ substr( $dbkey, -2 ) == '/.' ||
+ substr( $dbkey, -3 ) == '/..' ) )
{
return false;
}
- /**
- * Magic tilde sequences? Nu-uh!
- */
+ # Magic tilde sequences? Nu-uh!
if ( strpos( $dbkey, '~~~' ) !== false ) {
return false;
}
- /**
- * Limit the size of titles to 255 bytes.
- * This is typically the size of the underlying database field.
- * We make an exception for special pages, which don't need to be stored
- * in the database, and may edge over 255 bytes due to subpage syntax
- * for long titles, e.g. [[Special:Block/Long name]]
- */
+ # Limit the size of titles to 255 bytes. This is typically the size of the
+ # underlying database field. We make an exception for special pages, which
+ # don't need to be stored in the database, and may edge over 255 bytes due
+ # to subpage syntax for long titles, e.g. [[Special:Block/Long name]]
if ( ( $this->mNamespace != NS_SPECIAL && strlen( $dbkey ) > 255 ) ||
strlen( $dbkey ) > 512 )
{
return false;
}
- /**
- * Normally, all wiki links are forced to have
- * an initial capital letter so [[foo]] and [[Foo]]
- * point to the same place.
- *
- * Don't force it for interwikis, since the other
- * site might be case-sensitive.
- */
+ # Normally, all wiki links are forced to have an initial capital letter so [[foo]]
+ # and [[Foo]] point to the same place. Don't force it for interwikis, since the
+ # other site might be case-sensitive.
$this->mUserCaseDBKey = $dbkey;
if ( $this->mInterwiki == '' ) {
$dbkey = self::capitalize( $dbkey, $this->mNamespace );
}
- /**
- * Can't make a link to a namespace alone...
- * "empty" local links can only be self-links
- * with a fragment identifier.
- */
- if ( $dbkey == '' &&
- $this->mInterwiki == '' &&
- $this->mNamespace != NS_MAIN ) {
+ # Can't make a link to a namespace alone... "empty" local links can only be
+ # self-links with a fragment identifier.
+ if ( $dbkey == '' && $this->mInterwiki == '' && $this->mNamespace != NS_MAIN ) {
return false;
}
+
// Allow IPv6 usernames to start with '::' by canonicalizing IPv6 titles.
// IP names are not allowed for accounts, and can only be referring to
// edits from the IP. Given '::' abbreviations and caps/lowercaps,
// there are numerous ways to present the same IP. Having sp:contribs scan
// them all is silly and having some show the edits and others not is
// inconsistent. Same for talk/userpages. Keep them normalized instead.
- $dbkey = ( $this->mNamespace == NS_USER || $this->mNamespace == NS_USER_TALK ) ?
- IP::sanitizeIP( $dbkey ) : $dbkey;
+ $dbkey = ( $this->mNamespace == NS_USER || $this->mNamespace == NS_USER_TALK )
+ ? IP::sanitizeIP( $dbkey )
+ : $dbkey;
+
// Any remaining initial :s are illegal.
if ( $dbkey !== '' && ':' == $dbkey { 0 } ) {
return false;
@@ -2776,7 +2829,7 @@ class Title {
* Deprecated for public use, use Title::makeTitle() with fragment parameter.
* Still in active use privately.
*
- * @param $fragment \type{\string} text
+ * @param $fragment String text
*/
public function setFragment( $fragment ) {
$this->mFragment = str_replace( '_', ' ', substr( $fragment, 1 ) );
@@ -2816,7 +2869,7 @@ class Title {
* @param $options Array: may be FOR UPDATE
* @param $table String: table name
* @param $prefix String: fields prefix
- * @return \type{\arrayof{Title}} the Title objects linking here
+ * @return Array of Title objects linking here
*/
public function getLinksTo( $options = array(), $table = 'pagelinks', $prefix = 'pl' ) {
$linkCache = LinkCache::singleton();
@@ -2859,7 +2912,7 @@ class Title {
* On heavily-used templates it will max out the memory.
*
* @param $options Array: may be FOR UPDATE
- * @return \type{\arrayof{Title}} the Title objects linking here
+ * @return Array of Title the Title objects linking here
*/
public function getTemplateLinksTo( $options = array() ) {
return $this->getLinksTo( $options, 'templatelinks', 'tl' );
@@ -2869,7 +2922,7 @@ class Title {
* Get an array of Title objects referring to non-existent articles linked from this page
*
* @todo check if needed (used only in SpecialBrokenRedirects.php, and should use redirect table in this case)
- * @return \type{\arrayof{Title}} the Title objects
+ * @return Array of Title the Title objects
*/
public function getBrokenLinksFrom() {
if ( $this->getArticleId() == 0 ) {
@@ -2906,7 +2959,7 @@ class Title {
* Get a list of URLs to purge from the Squid cache when this
* page changes
*
- * @return \type{\arrayof{\string}} the URLs
+ * @return Array of String the URLs
*/
public function getSquidURLs() {
global $wgContLang;
@@ -2942,8 +2995,8 @@ class Title {
/**
* Move this page without authentication
*
- * @param $nt \type{Title} the new page Title
- * @return \type{\mixed} true on success, getUserPermissionsErrors()-like array on failure
+ * @param $nt Title the new page Title
+ * @return Mixed true on success, getUserPermissionsErrors()-like array on failure
*/
public function moveNoAuth( &$nt ) {
return $this->moveTo( $nt, false );
@@ -2953,11 +3006,11 @@ class Title {
* Check whether a given move operation would be valid.
* Returns true if ok, or a getUserPermissionsErrors()-like array otherwise
*
- * @param $nt \type{Title} the new title
- * @param $auth \type{\bool} indicates whether $wgUser's permissions
+ * @param $nt Title the new title
+ * @param $auth Bool indicates whether $wgUser's permissions
* should be checked
- * @param $reason \type{\string} is the log summary of the move, used for spam checking
- * @return \type{\mixed} True on success, getUserPermissionsErrors()-like array on failure
+ * @param $reason String is the log summary of the move, used for spam checking
+ * @return Mixed True on success, getUserPermissionsErrors()-like array on failure
*/
public function isValidMoveOperation( &$nt, $auth = true, $reason = '' ) {
global $wgUser;
@@ -2989,28 +3042,13 @@ class Title {
}
if ( ( $this->getDBkey() == '' ) ||
( !$oldid ) ||
- ( $nt->getDBkey() == '' ) ) {
+ ( $nt->getDBkey() == '' ) ) {
$errors[] = array( 'badarticleerror' );
}
// Image-specific checks
if ( $this->getNamespace() == NS_FILE ) {
- if ( $nt->getNamespace() != NS_FILE ) {
- $errors[] = array( 'imagenocrossnamespace' );
- }
- $file = wfLocalFile( $this );
- if ( $file->exists() ) {
- if ( $nt->getText() != wfStripIllegalFilenameChars( $nt->getText() ) ) {
- $errors[] = array( 'imageinvalidfilename' );
- }
- if ( !File::checkExtensionCompatibility( $file, $nt->getDBkey() ) ) {
- $errors[] = array( 'imagetypemismatch' );
- }
- }
- $destfile = wfLocalFile( $nt );
- if ( !$wgUser->isAllowed( 'reupload-shared' ) && !$destfile->exists() && wfFindFile( $nt ) ) {
- $errors[] = array( 'file-exists-sharedrepo' );
- }
+ $errors = array_merge( $errors, $this->validateFileMoveOperation( $nt ) );
}
if ( $nt->getNamespace() == NS_FILE && $this->getNamespace() != NS_FILE ) {
@@ -3058,23 +3096,66 @@ class Title {
}
/**
+ * Check if the requested move target is a valid file move target
+ * @param Title $nt Target title
+ * @return array List of errors
+ */
+ protected function validateFileMoveOperation( $nt ) {
+ global $wgUser;
+
+ $errors = array();
+
+ // wfFindFile( $nt ) / wfLocalFile( $nt ) is not allowed until below
+
+ $file = wfLocalFile( $this );
+ if ( $file->exists() ) {
+ if ( $nt->getText() != wfStripIllegalFilenameChars( $nt->getText() ) ) {
+ $errors[] = array( 'imageinvalidfilename' );
+ }
+ if ( !File::checkExtensionCompatibility( $file, $nt->getDBkey() ) ) {
+ $errors[] = array( 'imagetypemismatch' );
+ }
+ }
+
+ if ( $nt->getNamespace() != NS_FILE ) {
+ $errors[] = array( 'imagenocrossnamespace' );
+ // From here we want to do checks on a file object, so if we can't
+ // create one, we must return.
+ return $errors;
+ }
+
+ // wfFindFile( $nt ) / wfLocalFile( $nt ) is allowed below here
+
+ $destFile = wfLocalFile( $nt );
+ if ( !$wgUser->isAllowed( 'reupload-shared' ) && !$destFile->exists() && wfFindFile( $nt ) ) {
+ $errors[] = array( 'file-exists-sharedrepo' );
+ }
+
+ return $errors;
+ }
+
+ /**
* Move a title to a new location
*
- * @param $nt \type{Title} the new title
- * @param $auth \type{\bool} indicates whether $wgUser's permissions
+ * @param $nt Title the new title
+ * @param $auth Bool indicates whether $wgUser's permissions
* should be checked
- * @param $reason \type{\string} The reason for the move
- * @param $createRedirect \type{\bool} Whether to create a redirect from the old title to the new title.
+ * @param $reason String the reason for the move
+ * @param $createRedirect Bool Whether to create a redirect from the old title to the new title.
* Ignored if the user doesn't have the suppressredirect right.
- * @return \type{\mixed} true on success, getUserPermissionsErrors()-like array on failure
+ * @return Mixed true on success, getUserPermissionsErrors()-like array on failure
*/
public function moveTo( &$nt, $auth = true, $reason = '', $createRedirect = true ) {
+ global $wgUser;
$err = $this->isValidMoveOperation( $nt, $auth, $reason );
if ( is_array( $err ) ) {
+ // Auto-block user's IP if the account was "hard" blocked
+ $wgUser->spreadAnyEditBlock();
return $err;
}
- // If it is a file, move it first. It is done before all other moving stuff is done because it's hard to revert
+ // If it is a file, move it first. It is done before all other moving stuff is
+ // done because it's hard to revert
$dbw = wfGetDB( DB_MASTER );
if ( $this->getNamespace() == NS_FILE ) {
$file = wfLocalFile( $this );
@@ -3087,38 +3168,42 @@ class Title {
}
$dbw->begin(); # If $file was a LocalFile, its transaction would have closed our own.
- $pageid = $this->getArticleID( GAID_FOR_UPDATE );
+ $pageid = $this->getArticleID( self::GAID_FOR_UPDATE );
$protected = $this->isProtected();
- if ( $nt->exists() ) {
- $err = $this->moveOverExistingRedirect( $nt, $reason, $createRedirect );
- $pageCountChange = ( $createRedirect ? 0 : -1 );
- } else { # Target didn't exist, do normal move.
- $err = $this->moveToNewTitle( $nt, $reason, $createRedirect );
- $pageCountChange = ( $createRedirect ? 1 : 0 );
- }
+ $pageCountChange = ( $createRedirect ? 1 : 0 ) - ( $nt->exists() ? 1 : 0 );
+ // Do the actual move
+ $err = $this->moveToInternal( $nt, $reason, $createRedirect );
if ( is_array( $err ) ) {
- # FIXME: What about the File we have already moved?
+ # @todo FIXME: What about the File we have already moved?
$dbw->rollback();
return $err;
}
+
$redirid = $this->getArticleID();
// Refresh the sortkey for this row. Be careful to avoid resetting
// cl_timestamp, which may disturb time-based lists on some sites.
- $prefix = $dbw->selectField(
+ $prefixes = $dbw->select(
'categorylinks',
- 'cl_sortkey_prefix',
+ array( 'cl_sortkey_prefix', 'cl_to' ),
array( 'cl_from' => $pageid ),
__METHOD__
);
- $dbw->update( 'categorylinks',
- array(
- 'cl_sortkey' => Collation::singleton()->getSortKey(
- $nt->getCategorySortkey( $prefix ) ),
- 'cl_timestamp=cl_timestamp' ),
- array( 'cl_from' => $pageid ),
- __METHOD__ );
+ foreach ( $prefixes as $prefixRow ) {
+ $prefix = $prefixRow->cl_sortkey_prefix;
+ $catTo = $prefixRow->cl_to;
+ $dbw->update( 'categorylinks',
+ array(
+ 'cl_sortkey' => Collation::singleton()->getSortKey(
+ $nt->getCategorySortkey( $prefix ) ),
+ 'cl_timestamp=cl_timestamp' ),
+ array(
+ 'cl_from' => $pageid,
+ 'cl_to' => $catTo ),
+ __METHOD__
+ );
+ }
if ( $protected ) {
# Protect the redirect title as the title used to be...
@@ -3141,7 +3226,8 @@ class Title {
if ( $reason ) {
$comment .= wfMsgForContent( 'colon-separator' ) . $reason;
}
- $log->addEntry( 'move_prot', $nt, $comment, array( $this->getPrefixedText() ) ); // FIXME: $params?
+ // @todo FIXME: $params?
+ $log->addEntry( 'move_prot', $nt, $comment, array( $this->getPrefixedText() ) );
}
# Update watchlists
@@ -3161,7 +3247,7 @@ class Title {
$u->doUpdate();
$dbw->commit();
-
+
# Update site_stats
if ( $this->isContentPage() && !$nt->isContentPage() ) {
# No longer a content page
@@ -3181,21 +3267,21 @@ class Title {
if ( $u ) {
$u->doUpdate();
}
+
# Update message cache for interface messages
- global $wgMessageCache;
if ( $this->getNamespace() == NS_MEDIAWIKI ) {
# @bug 17860: old article can be deleted, if this the case,
# delete it from message cache
if ( $this->getArticleID() === 0 ) {
- $wgMessageCache->replace( $this->getDBkey(), false );
+ MessageCache::singleton()->replace( $this->getDBkey(), false );
} else {
$oldarticle = new Article( $this );
- $wgMessageCache->replace( $this->getDBkey(), $oldarticle->getContent() );
+ MessageCache::singleton()->replace( $this->getDBkey(), $oldarticle->getContent() );
}
}
if ( $nt->getNamespace() == NS_MEDIAWIKI ) {
$newarticle = new Article( $nt );
- $wgMessageCache->replace( $nt->getDBkey(), $newarticle->getContent() );
+ MessageCache::singleton()->replace( $nt->getDBkey(), $newarticle->getContent() );
}
global $wgUser;
@@ -3204,69 +3290,75 @@ class Title {
}
/**
- * Move page to a title which is at present a redirect to the
- * source page
+ * Move page to a title which is either a redirect to the
+ * source page or nonexistent
*
- * @param $nt \type{Title} the page to move to, which should currently
- * be a redirect
- * @param $reason \type{\string} The reason for the move
- * @param $createRedirect \type{\bool} Whether to leave a redirect at the old title.
- * Ignored if the user doesn't have the suppressredirect right
+ * @param $nt Title the page to move to, which should be a redirect or nonexistent
+ * @param $reason String The reason for the move
+ * @param $createRedirect Bool Whether to leave a redirect at the old title. Ignored
+ * if the user doesn't have the suppressredirect right
*/
- private function moveOverExistingRedirect( &$nt, $reason = '', $createRedirect = true ) {
- global $wgUseSquid, $wgUser, $wgContLang;
+ private function moveToInternal( &$nt, $reason = '', $createRedirect = true ) {
+ global $wgUser, $wgContLang;
- $comment = wfMsgForContent( '1movedto2_redir', $this->getPrefixedText(), $nt->getPrefixedText() );
+ $moveOverRedirect = $nt->exists();
+
+ $commentMsg = ( $moveOverRedirect ? '1movedto2_redir' : '1movedto2' );
+ $comment = wfMsgForContent( $commentMsg, $this->getPrefixedText(), $nt->getPrefixedText() );
if ( $reason ) {
$comment .= wfMsgForContent( 'colon-separator' ) . $reason;
}
- # Truncate for whole multibyte characters. +5 bytes for ellipsis
- $comment = $wgContLang->truncate( $comment, 250 );
+ # Truncate for whole multibyte characters.
+ $comment = $wgContLang->truncate( $comment, 255 );
- $now = wfTimestampNow();
- $newid = $nt->getArticleID();
$oldid = $this->getArticleID();
$latest = $this->getLatestRevID();
$dbw = wfGetDB( DB_MASTER );
- $rcts = $dbw->timestamp( $nt->getEarliestRevTime() );
- $newns = $nt->getNamespace();
- $newdbk = $nt->getDBkey();
-
- # Delete the old redirect. We don't save it to history since
- # by definition if we've got here it's rather uninteresting.
- # We have to remove it so that the next step doesn't trigger
- # a conflict on the unique namespace+title index...
- $dbw->delete( 'page', array( 'page_id' => $newid ), __METHOD__ );
- if ( !$dbw->cascadingDeletes() ) {
- $dbw->delete( 'revision', array( 'rev_page' => $newid ), __METHOD__ );
- global $wgUseTrackbacks;
- if ( $wgUseTrackbacks ) {
- $dbw->delete( 'trackbacks', array( 'tb_page' => $newid ), __METHOD__ );
+ if ( $moveOverRedirect ) {
+ $rcts = $dbw->timestamp( $nt->getEarliestRevTime() );
+
+ $newid = $nt->getArticleID();
+ $newns = $nt->getNamespace();
+ $newdbk = $nt->getDBkey();
+
+ # Delete the old redirect. We don't save it to history since
+ # by definition if we've got here it's rather uninteresting.
+ # We have to remove it so that the next step doesn't trigger
+ # a conflict on the unique namespace+title index...
+ $dbw->delete( 'page', array( 'page_id' => $newid ), __METHOD__ );
+ if ( !$dbw->cascadingDeletes() ) {
+ $dbw->delete( 'revision', array( 'rev_page' => $newid ), __METHOD__ );
+ global $wgUseTrackbacks;
+ if ( $wgUseTrackbacks ) {
+ $dbw->delete( 'trackbacks', array( 'tb_page' => $newid ), __METHOD__ );
+ }
+ $dbw->delete( 'pagelinks', array( 'pl_from' => $newid ), __METHOD__ );
+ $dbw->delete( 'imagelinks', array( 'il_from' => $newid ), __METHOD__ );
+ $dbw->delete( 'categorylinks', array( 'cl_from' => $newid ), __METHOD__ );
+ $dbw->delete( 'templatelinks', array( 'tl_from' => $newid ), __METHOD__ );
+ $dbw->delete( 'externallinks', array( 'el_from' => $newid ), __METHOD__ );
+ $dbw->delete( 'langlinks', array( 'll_from' => $newid ), __METHOD__ );
+ $dbw->delete( 'iwlinks', array( 'iwl_from' => $newid ), __METHOD__ );
+ $dbw->delete( 'redirect', array( 'rd_from' => $newid ), __METHOD__ );
}
- $dbw->delete( 'pagelinks', array( 'pl_from' => $newid ), __METHOD__ );
- $dbw->delete( 'imagelinks', array( 'il_from' => $newid ), __METHOD__ );
- $dbw->delete( 'categorylinks', array( 'cl_from' => $newid ), __METHOD__ );
- $dbw->delete( 'templatelinks', array( 'tl_from' => $newid ), __METHOD__ );
- $dbw->delete( 'externallinks', array( 'el_from' => $newid ), __METHOD__ );
- $dbw->delete( 'langlinks', array( 'll_from' => $newid ), __METHOD__ );
- $dbw->delete( 'redirect', array( 'rd_from' => $newid ), __METHOD__ );
- }
- // If the redirect was recently created, it may have an entry in recentchanges still
- $dbw->delete( 'recentchanges',
- array( 'rc_timestamp' => $rcts, 'rc_namespace' => $newns, 'rc_title' => $newdbk, 'rc_new' => 1 ),
- __METHOD__
- );
+ // If the target page was recently created, it may have an entry in recentchanges still
+ $dbw->delete( 'recentchanges',
+ array( 'rc_timestamp' => $rcts, 'rc_namespace' => $newns, 'rc_title' => $newdbk, 'rc_new' => 1 ),
+ __METHOD__
+ );
+ }
# Save a null revision in the page's history notifying of the move
$nullRevision = Revision::newNullRevision( $dbw, $oldid, $comment, true );
+ if ( !is_object( $nullRevision ) ) {
+ throw new MWException( 'No valid null revision produced in ' . __METHOD__ );
+ }
$nullRevId = $nullRevision->insertOn( $dbw );
- $article = new Article( $this );
- wfRunHooks( 'NewRevisionFromEditComplete', array( $article, $nullRevision, $latest, $wgUser ) );
-
+ $now = wfTimestampNow();
# Change the name of the target page:
$dbw->update( 'page',
/* SET */ array(
@@ -3280,6 +3372,10 @@ class Title {
);
$nt->resetArticleID( $oldid );
+ $article = new Article( $nt );
+ wfRunHooks( 'NewRevisionFromEditComplete', array( $article, $nullRevision, $latest, $wgUser ) );
+ $article->setCachedLastEditTime( $now );
+
# Recreate the redirect, this time in the other direction.
if ( $createRedirect || !$wgUser->isAllowed( 'suppressredirect' ) ) {
$mwRedir = MagicWord::get( 'redirect' );
@@ -3312,103 +3408,17 @@ class Title {
# Log the move
$log = new LogPage( 'move' );
- $log->addEntry( 'move_redir', $this, $reason, array( 1 => $nt->getPrefixedText(), 2 => $redirectSuppressed ) );
-
- # Purge squid
- if ( $wgUseSquid ) {
- $urls = array_merge( $nt->getSquidURLs(), $this->getSquidURLs() );
- $u = new SquidUpdate( $urls );
- $u->doUpdate();
- }
-
- }
-
- /**
- * Move page to non-existing title.
- *
- * @param $nt \type{Title} the new Title
- * @param $reason \type{\string} The reason for the move
- * @param $createRedirect \type{\bool} Whether to create a redirect from the old title to the new title
- * Ignored if the user doesn't have the suppressredirect right
- */
- private function moveToNewTitle( &$nt, $reason = '', $createRedirect = true ) {
- global $wgUser, $wgContLang;
-
- $comment = wfMsgForContent( '1movedto2', $this->getPrefixedText(), $nt->getPrefixedText() );
- if ( $reason ) {
- $comment .= wfMsgExt( 'colon-separator',
- array( 'escapenoentities', 'content' ) );
- $comment .= $reason;
- }
- # Truncate for whole multibyte characters. +5 bytes for ellipsis
- $comment = $wgContLang->truncate( $comment, 250 );
-
- $oldid = $this->getArticleID();
- $latest = $this->getLatestRevId();
-
- $dbw = wfGetDB( DB_MASTER );
- $now = $dbw->timestamp();
-
- # Save a null revision in the page's history notifying of the move
- $nullRevision = Revision::newNullRevision( $dbw, $oldid, $comment, true );
- if ( !is_object( $nullRevision ) ) {
- throw new MWException( 'No valid null revision produced in ' . __METHOD__ );
- }
- $nullRevId = $nullRevision->insertOn( $dbw );
-
- $article = new Article( $this );
- wfRunHooks( 'NewRevisionFromEditComplete', array( $article, $nullRevision, $latest, $wgUser ) );
-
- # Rename page entry
- $dbw->update( 'page',
- /* SET */ array(
- 'page_touched' => $now,
- 'page_namespace' => $nt->getNamespace(),
- 'page_title' => $nt->getDBkey(),
- 'page_latest' => $nullRevId,
- ),
- /* WHERE */ array( 'page_id' => $oldid ),
- __METHOD__
- );
- $nt->resetArticleID( $oldid );
-
- if ( $createRedirect || !$wgUser->isAllowed( 'suppressredirect' ) ) {
- # Insert redirect
- $mwRedir = MagicWord::get( 'redirect' );
- $redirectText = $mwRedir->getSynonym( 0 ) . ' [[' . $nt->getPrefixedText() . "]]\n";
- $redirectArticle = new Article( $this );
- $newid = $redirectArticle->insertOn( $dbw );
- $redirectRevision = new Revision( array(
- 'page' => $newid,
- 'comment' => $comment,
- 'text' => $redirectText ) );
- $redirectRevision->insertOn( $dbw );
- $redirectArticle->updateRevisionOn( $dbw, $redirectRevision, 0 );
-
- wfRunHooks( 'NewRevisionFromEditComplete', array( $redirectArticle, $redirectRevision, false, $wgUser ) );
+ $logType = ( $moveOverRedirect ? 'move_redir' : 'move' );
+ $log->addEntry( $logType, $this, $reason, array( 1 => $nt->getPrefixedText(), 2 => $redirectSuppressed ) );
- # Record the just-created redirect's linking to the page
- $dbw->insert( 'pagelinks',
- array(
- 'pl_from' => $newid,
- 'pl_namespace' => $nt->getNamespace(),
- 'pl_title' => $nt->getDBkey() ),
- __METHOD__ );
- $redirectSuppressed = false;
+ # Purge caches for old and new titles
+ if ( $moveOverRedirect ) {
+ # A simple purge is enough when moving over a redirect
+ $nt->purgeSquid();
} else {
- $this->resetArticleID( 0 );
- $redirectSuppressed = true;
+ # Purge caches as per article creation, including any pages that link to this title
+ Article::onArticleCreate( $nt );
}
-
- # Log the move
- $log = new LogPage( 'move' );
- $log->addEntry( 'move', $this, $reason, array( 1 => $nt->getPrefixedText(), 2 => $redirectSuppressed ) );
-
- # Purge caches as per article creation
- Article::onArticleCreate( $nt );
-
- # Purge old title from squid
- # The new title, and links to the new title, are purged in Article::onArticleCreate()
$this->purgeSquid();
}
@@ -3418,10 +3428,11 @@ class Title {
* @param $nt Title Move target
* @param $auth bool Whether $wgUser's permissions should be checked
* @param $reason string The reason for the move
- * @param $createRedirect bool Whether to create redirects from the old subpages to the new ones
- * Ignored if the user doesn't have the 'suppressredirect' right
+ * @param $createRedirect bool Whether to create redirects from the old subpages to
+ * the new ones Ignored if the user doesn't have the 'suppressredirect' right
* @return mixed array with old page titles as keys, and strings (new page titles) or
- * arrays (errors) as values, or an error array with numeric indices if no pages were moved
+ * arrays (errors) as values, or an error array with numeric indices if no pages
+ * were moved
*/
public function moveSubpages( $nt, $auth = true, $reason = '', $createRedirect = true ) {
global $wgMaximumMovedPages;
@@ -3488,7 +3499,7 @@ class Title {
* Checks if this page is just a one-rev redirect.
* Adds lock, so don't use just for light purposes.
*
- * @return \type{\bool}
+ * @return Bool
*/
public function isSingleRevRedirect() {
$dbw = wfGetDB( DB_MASTER );
@@ -3525,8 +3536,8 @@ class Title {
* Checks if $this can be moved to a given Title
* - Selects for update, so don't call it unless you mean business
*
- * @param $nt \type{Title} the new title to check
- * @return \type{\bool} TRUE or FALSE
+ * @param $nt Title the new title to check
+ * @return Bool
*/
public function isValidMoveTarget( $nt ) {
# Is it an existing file?
@@ -3567,7 +3578,7 @@ class Title {
/**
* Can this title be added to a user's watchlist?
*
- * @return \type{\bool} TRUE or FALSE
+ * @return Bool TRUE or FALSE
*/
public function isWatchable() {
return !$this->isExternal() && MWNamespace::isWatchable( $this->getNamespace() );
@@ -3577,24 +3588,29 @@ class Title {
* Get categories to which this Title belongs and return an array of
* categories' names.
*
- * @return \type{\array} array an array of parents in the form:
- * $parent => $currentarticle
+ * @return Array of parents in the form:
+ * $parent => $currentarticle
*/
public function getParentCategories() {
global $wgContLang;
- $titlekey = $this->getArticleId();
- $dbr = wfGetDB( DB_SLAVE );
- $categorylinks = $dbr->tableName( 'categorylinks' );
+ $data = array();
- # NEW SQL
- $sql = "SELECT * FROM $categorylinks"
- . " WHERE cl_from='$titlekey'"
- . " AND cl_from <> '0'"
- . " ORDER BY cl_sortkey";
+ $titleKey = $this->getArticleId();
- $res = $dbr->query( $sql );
- $data = array();
+ if ( $titleKey === 0 ) {
+ return $data;
+ }
+
+ $dbr = wfGetDB( DB_SLAVE );
+
+ $res = $dbr->select( 'categorylinks', '*',
+ array(
+ 'cl_from' => $titleKey,
+ ),
+ __METHOD__,
+ array()
+ );
if ( $dbr->numRows( $res ) > 0 ) {
foreach ( $res as $row ) {
@@ -3608,8 +3624,8 @@ class Title {
/**
* Get a tree of parent categories
*
- * @param $children \type{\array} an array with the children in the keys, to check for circular refs
- * @return \type{\array} Tree of parent categories
+ * @param $children Array with the children in the keys, to check for circular refs
+ * @return Array Tree of parent categories
*/
public function getParentCategoryTree( $children = array() ) {
$stack = array();
@@ -3632,12 +3648,11 @@ class Title {
return $stack;
}
-
/**
* Get an associative array for selecting this title from
* the "page" table
*
- * @return \type{\array} Selection array
+ * @return Array suitable for the $where parameter of DB::select()
*/
public function pageCond() {
if ( $this->mArticleID > 0 ) {
@@ -3651,9 +3666,9 @@ class Title {
/**
* Get the revision ID of the previous revision
*
- * @param $revId \type{\int} Revision ID. Get the revision that was before this one.
- * @param $flags \type{\int} Title::GAID_FOR_UPDATE
- * @return \twotypes{\int,\bool} Old revision ID, or FALSE if none exists
+ * @param $revId Int Revision ID. Get the revision that was before this one.
+ * @param $flags Int Title::GAID_FOR_UPDATE
+ * @return Int|Bool Old revision ID, or FALSE if none exists
*/
public function getPreviousRevisionID( $revId, $flags = 0 ) {
$db = ( $flags & self::GAID_FOR_UPDATE ) ? wfGetDB( DB_MASTER ) : wfGetDB( DB_SLAVE );
@@ -3670,9 +3685,9 @@ class Title {
/**
* Get the revision ID of the next revision
*
- * @param $revId \type{\int} Revision ID. Get the revision that was after this one.
- * @param $flags \type{\int} Title::GAID_FOR_UPDATE
- * @return \twotypes{\int,\bool} Next revision ID, or FALSE if none exists
+ * @param $revId Int Revision ID. Get the revision that was after this one.
+ * @param $flags Int Title::GAID_FOR_UPDATE
+ * @return Int|Bool Next revision ID, or FALSE if none exists
*/
public function getNextRevisionID( $revId, $flags = 0 ) {
$db = ( $flags & self::GAID_FOR_UPDATE ) ? wfGetDB( DB_MASTER ) : wfGetDB( DB_SLAVE );
@@ -3689,68 +3704,71 @@ class Title {
/**
* Get the first revision of the page
*
- * @param $flags \type{\int} Title::GAID_FOR_UPDATE
- * @return Revision (or NULL if page doesn't exist)
+ * @param $flags Int Title::GAID_FOR_UPDATE
+ * @return Revision|Null if page doesn't exist
*/
public function getFirstRevision( $flags = 0 ) {
- $db = ( $flags & self::GAID_FOR_UPDATE ) ? wfGetDB( DB_MASTER ) : wfGetDB( DB_SLAVE );
$pageId = $this->getArticleId( $flags );
- if ( !$pageId ) {
- return null;
- }
- $row = $db->selectRow( 'revision', '*',
- array( 'rev_page' => $pageId ),
- __METHOD__,
- array( 'ORDER BY' => 'rev_timestamp ASC', 'LIMIT' => 1 )
- );
- if ( !$row ) {
- return null;
- } else {
- return new Revision( $row );
+ if ( $pageId ) {
+ $db = ( $flags & self::GAID_FOR_UPDATE ) ? wfGetDB( DB_MASTER ) : wfGetDB( DB_SLAVE );
+ $row = $db->selectRow( 'revision', '*',
+ array( 'rev_page' => $pageId ),
+ __METHOD__,
+ array( 'ORDER BY' => 'rev_timestamp ASC', 'LIMIT' => 1 )
+ );
+ if ( $row ) {
+ return new Revision( $row );
+ }
}
+ return null;
}
/**
- * Check if this is a new page
+ * Get the oldest revision timestamp of this page
*
- * @return bool
+ * @param $flags Int Title::GAID_FOR_UPDATE
+ * @return String: MW timestamp
*/
- public function isNewPage() {
- $dbr = wfGetDB( DB_SLAVE );
- return (bool)$dbr->selectField( 'page', 'page_is_new', $this->pageCond(), __METHOD__ );
+ public function getEarliestRevTime( $flags = 0 ) {
+ $rev = $this->getFirstRevision( $flags );
+ return $rev ? $rev->getTimestamp() : null;
}
/**
- * Get the oldest revision timestamp of this page
+ * Check if this is a new page
*
- * @return String: MW timestamp
+ * @return bool
*/
- public function getEarliestRevTime() {
+ public function isNewPage() {
$dbr = wfGetDB( DB_SLAVE );
- if ( $this->exists() ) {
- $min = $dbr->selectField( 'revision',
- 'MIN(rev_timestamp)',
- array( 'rev_page' => $this->getArticleId() ),
- __METHOD__ );
- return wfTimestampOrNull( TS_MW, $min );
- }
- return null;
+ return (bool)$dbr->selectField( 'page', 'page_is_new', $this->pageCond(), __METHOD__ );
}
/**
- * Get the number of revisions between the given revision IDs.
+ * Get the number of revisions between the given revision.
* Used for diffs and other things that really need it.
*
- * @param $old \type{\int} Revision ID.
- * @param $new \type{\int} Revision ID.
- * @return \type{\int} Number of revisions between these IDs.
+ * @param $old int|Revision Old revision or rev ID (first before range)
+ * @param $new int|Revision New revision or rev ID (first after range)
+ * @return Int Number of revisions between these revisions.
*/
public function countRevisionsBetween( $old, $new ) {
+ if ( !( $old instanceof Revision ) ) {
+ $old = Revision::newFromTitle( $this, (int)$old );
+ }
+ if ( !( $new instanceof Revision ) ) {
+ $new = Revision::newFromTitle( $this, (int)$new );
+ }
+ if ( !$old || !$new ) {
+ return 0; // nothing to compare
+ }
$dbr = wfGetDB( DB_SLAVE );
return (int)$dbr->selectField( 'revision', 'count(*)',
- 'rev_page = ' . intval( $this->getArticleId() ) .
- ' AND rev_id > ' . intval( $old ) .
- ' AND rev_id < ' . intval( $new ),
+ array(
+ 'rev_page' => $this->getArticleId(),
+ 'rev_timestamp > ' . $dbr->addQuotes( $dbr->timestamp( $old->getTimestamp() ) ),
+ 'rev_timestamp < ' . $dbr->addQuotes( $dbr->timestamp( $new->getTimestamp() ) )
+ ),
__METHOD__
);
}
@@ -3759,30 +3777,38 @@ class Title {
* Get the number of authors between the given revision IDs.
* Used for diffs and other things that really need it.
*
- * @param $fromRevId \type{\int} Revision ID (first before range)
- * @param $toRevId \type{\int} Revision ID (first after range)
- * @param $limit \type{\int} Maximum number of authors
- * @param $flags \type{\int} Title::GAID_FOR_UPDATE
- * @return \type{\int}
+ * @param $old int|Revision Old revision or rev ID (first before range)
+ * @param $new int|Revision New revision or rev ID (first after range)
+ * @param $limit Int Maximum number of authors
+ * @return Int Number of revision authors between these revisions.
*/
- public function countAuthorsBetween( $fromRevId, $toRevId, $limit, $flags = 0 ) {
- $db = ( $flags & self::GAID_FOR_UPDATE ) ? wfGetDB( DB_MASTER ) : wfGetDB( DB_SLAVE );
- $res = $db->select( 'revision', 'DISTINCT rev_user_text',
+ public function countAuthorsBetween( $old, $new, $limit ) {
+ if ( !( $old instanceof Revision ) ) {
+ $old = Revision::newFromTitle( $this, (int)$old );
+ }
+ if ( !( $new instanceof Revision ) ) {
+ $new = Revision::newFromTitle( $this, (int)$new );
+ }
+ if ( !$old || !$new ) {
+ return 0; // nothing to compare
+ }
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select( 'revision', 'DISTINCT rev_user_text',
array(
- 'rev_page = ' . $this->getArticleID(),
- 'rev_id > ' . (int)$fromRevId,
- 'rev_id < ' . (int)$toRevId
+ 'rev_page' => $this->getArticleID(),
+ 'rev_timestamp > ' . $dbr->addQuotes( $dbr->timestamp( $old->getTimestamp() ) ),
+ 'rev_timestamp < ' . $dbr->addQuotes( $dbr->timestamp( $new->getTimestamp() ) )
), __METHOD__,
- array( 'LIMIT' => $limit )
+ array( 'LIMIT' => $limit + 1 ) // add one so caller knows it was truncated
);
- return (int)$db->numRows( $res );
+ return (int)$dbr->numRows( $res );
}
/**
* Compare with another title.
*
- * @param $title \type{Title}
- * @return \type{\bool} TRUE or FALSE
+ * @param $title Title
+ * @return Bool
*/
public function equals( Title $title ) {
// Note: === is necessary for proper matching of number-like titles.
@@ -3793,7 +3819,10 @@ class Title {
/**
* Callback for usort() to do title sorts by (namespace, title)
- *
+ *
+ * @param $a Title
+ * @param $b Title
+ *
* @return Integer: result of string comparison, or namespace comparison
*/
public static function compare( $a, $b ) {
@@ -3807,7 +3836,7 @@ class Title {
/**
* Return a string representation of this title
*
- * @return \type{\string} String representation of this title
+ * @return String representation of this title
*/
public function __toString() {
return $this->getPrefixedText();
@@ -3820,7 +3849,7 @@ class Title {
* If you want to know if a title can be meaningfully viewed, you should
* probably call the isKnown() method instead.
*
- * @return \type{\bool}
+ * @return Bool
*/
public function exists() {
return $this->getArticleId() != 0;
@@ -3840,7 +3869,7 @@ class Title {
* existing code, but we might want to add an optional parameter to skip
* it and any other expensive checks.)
*
- * @return \type{\bool}
+ * @return Bool
*/
public function isAlwaysKnown() {
if ( $this->mInterwiki != '' ) {
@@ -3849,17 +3878,17 @@ class Title {
switch( $this->mNamespace ) {
case NS_MEDIA:
case NS_FILE:
- return (bool)wfFindFile( $this ); // file exists, possibly in a foreign repo
+ // file exists, possibly in a foreign repo
+ return (bool)wfFindFile( $this );
case NS_SPECIAL:
- return SpecialPage::exists( $this->getDBkey() ); // valid special page
+ // valid special page
+ return SpecialPageFactory::exists( $this->getDBkey() );
case NS_MAIN:
- return $this->mDbkeyform == ''; // selflink, possibly with fragment
+ // selflink, possibly with fragment
+ return $this->mDbkeyform == '';
case NS_MEDIAWIKI:
- // If the page is form Mediawiki:message/lang, calling wfMsgWeirdKey causes
- // the full l10n of that language to be loaded. That takes much memory and
- // isn't needed. So we strip the language part away.
- list( $basename, /* rest */ ) = explode( '/', $this->mDbkeyform, 2 );
- return (bool)wfMsgWeirdKey( $basename ); // known system message
+ // known system message
+ return $this->hasSourceText() !== false;
default:
return false;
}
@@ -3871,7 +3900,7 @@ class Title {
* links to the title should be rendered as "bluelinks" (as opposed to
* "redlinks" to non-existent pages).
*
- * @return \type{\bool}
+ * @return Bool
*/
public function isKnown() {
return $this->isAlwaysKnown() || $this->exists();
@@ -3889,21 +3918,44 @@ class Title {
if ( $this->mNamespace == NS_MEDIAWIKI ) {
// If the page doesn't exist but is a known system message, default
- // message content will be displayed, same for language subpages
- // Also, if the page is form Mediawiki:message/lang, calling wfMsgWeirdKey
- // causes the full l10n of that language to be loaded. That takes much
- // memory and isn't needed. So we strip the language part away.
- list( $basename, /* rest */ ) = explode( '/', $this->mDbkeyform, 2 );
- return (bool)wfMsgWeirdKey( $basename );
+ // message content will be displayed, same for language subpages-
+ // Use always content language to avoid loading hundreds of languages
+ // to get the link color.
+ global $wgContLang;
+ list( $name, $lang ) = MessageCache::singleton()->figureMessage( $wgContLang->lcfirst( $this->getText() ) );
+ $message = wfMessage( $name )->inLanguage( $wgContLang )->useDatabase( false );
+ return $message->exists();
}
return false;
}
/**
+ * Get the default message text or false if the message doesn't exist
+ *
+ * @return String or false
+ */
+ public function getDefaultMessageText() {
+ global $wgContLang;
+
+ if ( $this->getNamespace() != NS_MEDIAWIKI ) { // Just in case
+ return false;
+ }
+
+ list( $name, $lang ) = MessageCache::singleton()->figureMessage( $wgContLang->lcfirst( $this->getText() ) );
+ $message = wfMessage( $name )->inLanguage( $lang )->useDatabase( false );
+
+ if ( $message->exists() ) {
+ return $message->plain();
+ } else {
+ return false;
+ }
+ }
+
+ /**
* Is this in a namespace that allows actual pages?
*
- * @return \type{\bool}
+ * @return Bool
* @internal note -- uses hardcoded namespace index instead of constants
*/
public function canExist() {
@@ -3929,7 +3981,7 @@ class Title {
* Get the last touched timestamp
*
* @param $db DatabaseBase: optional db
- * @return \type{\string} Last touched timestamp
+ * @return String last-touched timestamp
*/
public function getTouched( $db = null ) {
$db = isset( $db ) ? $db : wfGetDB( DB_SLAVE );
@@ -3941,7 +3993,7 @@ class Title {
* Get the timestamp when this page was updated since the user last saw it.
*
* @param $user User
- * @return Mixed: string/null
+ * @return String|Null
*/
public function getNotificationTimestamp( $user = null ) {
global $wgUser, $wgShowUpdatedMarker;
@@ -3977,7 +4029,7 @@ class Title {
/**
* Get the trackback URL for this page
*
- * @return \type{\string} Trackback URL
+ * @return String Trackback URL
*/
public function trackbackURL() {
global $wgScriptPath, $wgServer, $wgScriptExtension;
@@ -3989,7 +4041,7 @@ class Title {
/**
* Get the trackback RDF for this page
*
- * @return \type{\string} Trackback RDF
+ * @return String Trackback RDF
*/
public function trackbackRDF() {
$url = htmlspecialchars( $this->getFullURL() );
@@ -4003,8 +4055,8 @@ class Title {
// Spec: http://www.sixapart.com/pronet/docs/trackback_spec
return "<!--
<rdf:RDF xmlns:rdf=\"http://www.w3.org/1999/02/22-rdf-syntax-ns#\"
- xmlns:dc=\"http://purl.org/dc/elements/1.1/\"
- xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\">
+ xmlns:dc=\"http://purl.org/dc/elements/1.1/\"
+ xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback/\">
<rdf:Description
rdf:about=\"$url\"
dc:identifier=\"$url\"
@@ -4018,7 +4070,7 @@ class Title {
* Generate strings used for xml 'id' names in monobook tabs
*
* @param $prepend string defaults to 'nstab-'
- * @return \type{\string} XML 'id' name
+ * @return String XML 'id' name
*/
public function getNamespaceKey( $prepend = 'nstab-' ) {
global $wgContLang;
@@ -4057,12 +4109,12 @@ class Title {
/**
* Returns true if this title resolves to the named special page
*
- * @param $name \type{\string} The special page name
+ * @param $name String The special page name
* @return boolean
*/
public function isSpecial( $name ) {
if ( $this->getNamespace() == NS_SPECIAL ) {
- list( $thisName, /* $subpage */ ) = SpecialPage::resolveAliasWithSubpage( $this->getDBkey() );
+ list( $thisName, /* $subpage */ ) = SpecialPageFactory::resolveAlias( $this->getDBkey() );
if ( $name == $thisName ) {
return true;
}
@@ -4071,16 +4123,16 @@ class Title {
}
/**
- * If the Title refers to a special page alias which is not the local default,
+ * If the Title refers to a special page alias which is not the local default, resolve
+ * the alias, and localise the name as necessary. Otherwise, return $this
*
- * @return \type{Title} A new Title which points to the local default.
- * Otherwise, returns $this.
+ * @return Title
*/
public function fixSpecialName() {
if ( $this->getNamespace() == NS_SPECIAL ) {
- $canonicalName = SpecialPage::resolveAlias( $this->mDbkeyform );
+ list( $canonicalName, $par ) = SpecialPageFactory::resolveAlias( $this->mDbkeyform );
if ( $canonicalName ) {
- $localName = SpecialPage::getLocalNameFor( $canonicalName );
+ $localName = SpecialPageFactory::getLocalNameFor( $canonicalName, $par );
if ( $localName != $this->mDbkeyform ) {
return Title::makeTitle( NS_SPECIAL, $localName );
}
@@ -4103,9 +4155,8 @@ class Title {
/**
* Get all extant redirects to this Title
*
- * @param $ns \twotypes{\int,\null} Single namespace to consider;
- * NULL to consider all namespaces
- * @return \type{\arrayof{Title}} Redirects to this title
+ * @param $ns Int|Null Single namespace to consider; NULL to consider all namespaces
+ * @return Array of Title redirects to this title
*/
public function getRedirectsHere( $ns = null ) {
$redirs = array();
@@ -4136,7 +4187,7 @@ class Title {
/**
* Check if this Title is a valid redirect target
*
- * @return \type{\bool}
+ * @return Bool
*/
public function isValidRedirectTarget() {
global $wgInvalidRedirectTargets;
@@ -4168,8 +4219,7 @@ class Title {
}
/**
- * Whether the magic words __INDEX__ and __NOINDEX__ function for
- * this page.
+ * Whether the magic words __INDEX__ and __NOINDEX__ function for this page.
*
* @return Boolean
*/
@@ -4190,23 +4240,27 @@ class Title {
* @return array applicable restriction types
*/
public function getRestrictionTypes() {
+ if ( $this->getNamespace() == NS_SPECIAL ) {
+ return array();
+ }
+
$types = self::getFilteredRestrictionTypes( $this->exists() );
-
+
if ( $this->getNamespace() != NS_FILE ) {
# Remove the upload restriction for non-file titles
$types = array_diff( $types, array( 'upload' ) );
}
-
+
wfRunHooks( 'TitleGetRestrictionTypes', array( $this, &$types ) );
-
- wfDebug( __METHOD__ . ': applicable restriction types for ' .
- $this->getPrefixedText() . ' are ' . implode( ',', $types ) );
+
+ wfDebug( __METHOD__ . ': applicable restriction types for ' .
+ $this->getPrefixedText() . ' are ' . implode( ',', $types ) . "\n" );
return $types;
}
/**
- * Get a filtered list of all restriction types supported by this wiki.
- * @param bool $exists True to get all restriction types that apply to
+ * Get a filtered list of all restriction types supported by this wiki.
+ * @param bool $exists True to get all restriction types that apply to
* titles that do exist, False for all restriction types that apply to
* titles that do not exist
* @return array
@@ -4216,7 +4270,7 @@ class Title {
$types = $wgRestrictionTypes;
if ( $exists ) {
# Remove the create restriction for existing titles
- $types = array_diff( $types, array( 'create' ) );
+ $types = array_diff( $types, array( 'create' ) );
} else {
# Only the create and upload restrictions apply to non-existing titles
$types = array_intersect( $types, array( 'create', 'upload' ) );
@@ -4236,6 +4290,12 @@ class Title {
*/
public function getCategorySortkey( $prefix = '' ) {
$unprefixed = $this->getText();
+
+ // Anything that uses this hook should only depend
+ // on the Title object passed in, and should probably
+ // tell the users to run updateCollations.php --force
+ // in order to re-sort existing category relations.
+ wfRunHooks( 'GetDefaultSortkey', array( $this, &$unprefixed ) );
if ( $prefix !== '' ) {
# Separate with a line feed, so the unprefixed part is only used as
# a tiebreaker when two pages have the exact same prefix.
@@ -4246,4 +4306,36 @@ class Title {
}
return $unprefixed;
}
+
+ /**
+ * Get the language in which the content of this page is written.
+ * Defaults to $wgContLang, but in certain cases it can be e.g.
+ * $wgLang (such as special pages, which are in the user language).
+ *
+ * @since 1.18
+ * @return object Language
+ */
+ public function getPageLanguage() {
+ global $wgLang;
+ if ( $this->getNamespace() == NS_SPECIAL ) {
+ // special pages are in the user language
+ return $wgLang;
+ } elseif ( $this->isRedirect() ) {
+ // the arrow on a redirect page is aligned according to the user language
+ return $wgLang;
+ } elseif ( $this->isCssOrJsPage() ) {
+ // css/js should always be LTR and is, in fact, English
+ return wfGetLangObj( 'en' );
+ } elseif ( $this->getNamespace() == NS_MEDIAWIKI ) {
+ // Parse mediawiki messages with correct target language
+ list( /* $unused */, $lang ) = MessageCache::singleton()->figureMessage( $this->getText() );
+ return wfGetLangObj( $lang );
+ }
+ global $wgContLang;
+ // If nothing special, it should be in the wiki content language
+ $pageLang = $wgContLang;
+ // Hook at the end because we don't want to override the above stuff
+ wfRunHooks( 'PageContentLanguage', array( $this, &$pageLang, $wgLang ) );
+ return wfGetLangObj( $pageLang );
+ }
}
diff --git a/includes/TitleArray.php b/includes/TitleArray.php
index f7a9e1dc..96960089 100644
--- a/includes/TitleArray.php
+++ b/includes/TitleArray.php
@@ -11,10 +11,10 @@
*/
abstract class TitleArray implements Iterator {
/**
- * @param $res result A MySQL result including at least page_namespace and
+ * @param $res ResultWrapper A SQL result including at least page_namespace and
* page_title -- also can have page_id, page_len, page_is_redirect,
* page_latest (if those will be used). See Title::newFromRow.
- * @return TitleArray
+ * @return TitleArrayFromResult
*/
static function newFromResult( $res ) {
$array = null;
@@ -27,6 +27,10 @@ abstract class TitleArray implements Iterator {
return $array;
}
+ /**
+ * @param $res ResultWrapper
+ * @return TitleArrayFromResult
+ */
protected static function newFromResult_internal( $res ) {
$array = new TitleArrayFromResult( $res );
return $array;
@@ -34,6 +38,10 @@ abstract class TitleArray implements Iterator {
}
class TitleArrayFromResult extends TitleArray {
+
+ /**
+ * @var ResultWrapper
+ */
var $res;
var $key, $current;
@@ -43,6 +51,10 @@ class TitleArrayFromResult extends TitleArray {
$this->setCurrent( $this->res->current() );
}
+ /**
+ * @param $row ResultWrapper
+ * @return void
+ */
protected function setCurrent( $row ) {
if ( $row === false ) {
$this->current = false;
@@ -51,6 +63,9 @@ class TitleArrayFromResult extends TitleArray {
}
}
+ /**
+ * @return int
+ */
public function count() {
return $this->res->numRows();
}
@@ -75,6 +90,9 @@ class TitleArrayFromResult extends TitleArray {
$this->setCurrent( $this->res->current() );
}
+ /**
+ * @return bool
+ */
function valid() {
return $this->current !== false;
}
diff --git a/includes/User.php b/includes/User.php
index 5760003b..a584f39d 100644
--- a/includes/User.php
+++ b/includes/User.php
@@ -1,23 +1,39 @@
<?php
/**
* Implements the User class for the %MediaWiki software.
+ *
+ * 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
*/
/**
- * \int Number of characters in user_token field.
+ * Int Number of characters in user_token field.
* @ingroup Constants
*/
define( 'USER_TOKEN_LENGTH', 32 );
/**
- * \int Serialized record version.
+ * Int Serialized record version.
* @ingroup Constants
*/
define( 'MW_USER_VERSION', 8 );
/**
- * \string Some punctuation to prevent editing from broken text-mangling proxies.
+ * String Some punctuation to prevent editing from broken text-mangling proxies.
* @ingroup Constants
*/
define( 'EDIT_TOKEN_SUFFIX', '+\\' );
@@ -50,7 +66,7 @@ class User {
const EDIT_TOKEN_SUFFIX = EDIT_TOKEN_SUFFIX;
/**
- * \type{\arrayof{\string}} List of member variables which are saved to the
+ * Array of Strings List of member variables which are saved to the
* shared cache (memcached). Any operation which changes the
* corresponding database fields must call a cache-clearing function.
* @showinitializer
@@ -71,14 +87,14 @@ class User {
'mEmailTokenExpires',
'mRegistration',
'mEditCount',
- // user_group table
+ // user_groups table
'mGroups',
// user_properties table
'mOptionOverrides',
);
/**
- * \type{\arrayof{\string}} Core rights.
+ * Array of Strings Core rights.
* Each of these should have a corresponding message of the form
* "right-$right".
* @showinitializer
@@ -144,7 +160,7 @@ class User {
'writeapi',
);
/**
- * \string Cached results of getAllRights()
+ * String Cached results of getAllRights()
*/
static $mAllRights = false;
@@ -152,16 +168,24 @@ class User {
//@{
var $mId, $mName, $mRealName, $mPassword, $mNewpassword, $mNewpassTime,
$mEmail, $mTouched, $mToken, $mEmailAuthenticated,
- $mEmailToken, $mEmailTokenExpires, $mRegistration, $mGroups, $mOptionOverrides;
+ $mEmailToken, $mEmailTokenExpires, $mRegistration, $mGroups, $mOptionOverrides,
+ $mCookiePassword, $mEditCount, $mAllowUsertalk;
//@}
/**
- * \bool Whether the cache variables have been loaded.
+ * Bool Whether the cache variables have been loaded.
*/
- var $mDataLoaded, $mAuthLoaded, $mOptionsLoaded;
+ //@{
+ var $mOptionsLoaded;
+
+ /**
+ * Array with already loaded items or true if all items have been loaded.
+ */
+ private $mLoadedItems = array();
+ //@}
/**
- * \string Initialization data source if mDataLoaded==false. May be one of:
+ * String Initialization data source if mLoadedItems!==true. May be one of:
* - 'defaults' anonymous user initialised from class defaults
* - 'name' initialise from mName
* - 'id' initialise from mId
@@ -171,12 +195,27 @@ class User {
*/
var $mFrom;
- /** @name Lazy-initialized variables, invalidated with clearInstanceCache */
- //@{
- var $mNewtalk, $mDatePreference, $mBlockedby, $mHash, $mSkin, $mRights,
- $mBlockreason, $mBlock, $mEffectiveGroups, $mBlockedGlobally,
+ /**
+ * Lazy-initialized variables, invalidated with clearInstanceCache
+ */
+ var $mNewtalk, $mDatePreference, $mBlockedby, $mHash, $mRights,
+ $mBlockreason, $mEffectiveGroups, $mImplicitGroups, $mFormerGroups, $mBlockedGlobally,
$mLocked, $mHideName, $mOptions;
- //@}
+
+ /**
+ * @var WebRequest
+ */
+ private $mRequest;
+
+ /**
+ * @var Block
+ */
+ var $mBlock;
+
+ /**
+ * @var Block
+ */
+ private $mBlockedFromCreateAccount = false;
static $idCacheByName = array();
@@ -195,16 +234,23 @@ class User {
}
/**
+ * @return String
+ */
+ function __toString(){
+ return $this->getName();
+ }
+
+ /**
* Load the user table data for this object from the source given by mFrom.
*/
- function load() {
- if ( $this->mDataLoaded ) {
+ public function load() {
+ if ( $this->mLoadedItems === true ) {
return;
}
wfProfileIn( __METHOD__ );
# Set it now to avoid infinite recursion in accessors
- $this->mDataLoaded = true;
+ $this->mLoadedItems = true;
switch ( $this->mFrom ) {
case 'defaults':
@@ -234,10 +280,9 @@ class User {
/**
* Load user table data, given mId has already been set.
- * @return \bool false if the ID does not exist, true otherwise
- * @private
+ * @return Bool false if the ID does not exist, true otherwise
*/
- function loadFromId() {
+ public function loadFromId() {
global $wgMemc;
if ( $this->mId == 0 ) {
$this->loadDefaults();
@@ -273,7 +318,7 @@ class User {
/**
* Save user data to the shared cache
*/
- function saveToCache() {
+ public function saveToCache() {
$this->load();
$this->loadGroups();
$this->loadOptions();
@@ -291,7 +336,6 @@ class User {
$wgMemc->set( $key, $data );
}
-
/** @name newFrom*() static factory methods */
//@{
@@ -301,17 +345,17 @@ class User {
* This is slightly less efficient than newFromId(), so use newFromId() if
* you have both an ID and a name handy.
*
- * @param $name \string Username, validated by Title::newFromText()
- * @param $validate \mixed Validate username. Takes the same parameters as
+ * @param $name String Username, validated by Title::newFromText()
+ * @param $validate String|Bool Validate username. Takes the same parameters as
* User::getCanonicalName(), except that true is accepted as an alias
* for 'valid', for BC.
*
- * @return User The User object, or false if the username is invalid
+ * @return User object, or false if the username is invalid
* (e.g. if it contains illegal characters or is an IP address). If the
* username is not present in the database, the result will be a user object
* with a name, zero user ID and default settings.
*/
- static function newFromName( $name, $validate = 'valid' ) {
+ public static function newFromName( $name, $validate = 'valid' ) {
if ( $validate === true ) {
$validate = 'valid';
}
@@ -323,6 +367,7 @@ class User {
$u = new User;
$u->mName = $name;
$u->mFrom = 'name';
+ $u->setItemLoaded( 'name' );
return $u;
}
}
@@ -330,13 +375,14 @@ class User {
/**
* Static factory method for creation from a given user ID.
*
- * @param $id \int Valid user ID
- * @return \type{User} The corresponding User object
+ * @param $id Int Valid user ID
+ * @return User The corresponding User object
*/
- static function newFromId( $id ) {
+ public static function newFromId( $id ) {
$u = new User;
$u->mId = $id;
$u->mFrom = 'id';
+ $u->setItemLoaded( 'id' );
return $u;
}
@@ -347,10 +393,10 @@ class User {
*
* If the code is invalid or has expired, returns NULL.
*
- * @param $code \string Confirmation code
- * @return \type{User}
+ * @param $code String Confirmation code
+ * @return User
*/
- static function newFromConfirmationCode( $code ) {
+ public static function newFromConfirmationCode( $code ) {
$dbr = wfGetDB( DB_SLAVE );
$id = $dbr->selectField( 'user', 'user_id', array(
'user_email_token' => md5( $code ),
@@ -367,21 +413,31 @@ class User {
* Create a new user object using data from session or cookies. If the
* login credentials are invalid, the result is an anonymous user.
*
- * @return \type{User}
+ * @param $request WebRequest object to use; $wgRequest will be used if
+ * ommited.
+ * @return User
*/
- static function newFromSession() {
+ public static function newFromSession( WebRequest $request = null ) {
$user = new User;
$user->mFrom = 'session';
+ $user->mRequest = $request;
return $user;
}
/**
* Create a new user object from a user row.
- * The row should have all fields from the user table in it.
- * @param $row array A row from the user table
- * @return \type{User}
- */
- static function newFromRow( $row ) {
+ * The row should have the following fields from the user table in it:
+ * - either user_name or user_id to load further data if needed (or both)
+ * - user_real_name
+ * - all other fields (email, password, etc.)
+ * It is useless to provide the remaining fields if either user_id,
+ * user_name and user_real_name are not provided because the whole row
+ * will be loaded once more from the database when accessing them.
+ *
+ * @param $row Array A row from the user table
+ * @return User
+ */
+ public static function newFromRow( $row ) {
$user = new User;
$user->loadFromRow( $row );
return $user;
@@ -389,11 +445,10 @@ class User {
//@}
-
/**
* Get the username corresponding to a given user ID
- * @param $id \int User ID
- * @return \string The corresponding username
+ * @param $id Int User ID
+ * @return String The corresponding username
*/
static function whoIs( $id ) {
$dbr = wfGetDB( DB_SLAVE );
@@ -403,20 +458,20 @@ class User {
/**
* Get the real name of a user given their user ID
*
- * @param $id \int User ID
- * @return \string The corresponding user's real name
+ * @param $id Int User ID
+ * @return String The corresponding user's real name
*/
- static function whoIsReal( $id ) {
+ public static function whoIsReal( $id ) {
$dbr = wfGetDB( DB_SLAVE );
return $dbr->selectField( 'user', 'user_real_name', array( 'user_id' => $id ), __METHOD__ );
}
/**
* Get database id given a user name
- * @param $name \string Username
- * @return \types{\int,\null} The corresponding user's ID, or null if user is nonexistent
+ * @param $name String Username
+ * @return Int|Null The corresponding user's ID, or null if user is nonexistent
*/
- static function idFromName( $name ) {
+ public static function idFromName( $name ) {
$nt = Title::makeTitleSafe( NS_USER, $name );
if( is_null( $nt ) ) {
# Illegal name
@@ -446,6 +501,13 @@ class User {
}
/**
+ * Reset the cache used in idFromName(). For use in tests.
+ */
+ public static function resetIdByNameCache() {
+ self::$idCacheByName = array();
+ }
+
+ /**
* Does the string match an anonymous IPv4 address?
*
* This function exists for username validation, in order to reject
@@ -458,10 +520,10 @@ class User {
* addresses like this, if we allowed accounts like this to be created
* new users could get the old edits of these anonymous users.
*
- * @param $name \string String to match
- * @return \bool True or false
+ * @param $name String to match
+ * @return Bool
*/
- static function isIP( $name ) {
+ public static function isIP( $name ) {
return preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.(?:xxx|\d{1,3})$/',$name) || IP::isIPv6($name);
}
@@ -473,10 +535,10 @@ class User {
* is longer than the maximum allowed username size or doesn't begin with
* a capital letter.
*
- * @param $name \string String to match
- * @return \bool True or false
+ * @param $name String to match
+ * @return Bool
*/
- static function isValidUserName( $name ) {
+ public static function isValidUserName( $name ) {
global $wgContLang, $wgMaxNameChars;
if ( $name == ''
@@ -527,10 +589,10 @@ class User {
* If an account already exists in this form, login will be blocked
* by a failure to pass this function.
*
- * @param $name \string String to match
- * @return \bool True or false
+ * @param $name String to match
+ * @return Bool
*/
- static function isUsableName( $name ) {
+ public static function isUsableName( $name ) {
global $wgReservedUsernames;
// Must be a valid username, obviously ;)
if ( !self::isValidUserName( $name ) ) {
@@ -564,10 +626,10 @@ class User {
* Additional blacklisting may be added here rather than in
* isValidUserName() to avoid disrupting existing accounts.
*
- * @param $name \string String to match
- * @return \bool True or false
+ * @param $name String to match
+ * @return Bool
*/
- static function isCreatableName( $name ) {
+ public static function isCreatableName( $name ) {
global $wgInvalidUsernameCharacters;
// Ensure that the username isn't longer than 235 bytes, so that
@@ -580,7 +642,7 @@ class User {
}
// Preg yells if you try to give it an empty string
- if( $wgInvalidUsernameCharacters ) {
+ if( $wgInvalidUsernameCharacters !== '' ) {
if( preg_match( '/[' . preg_quote( $wgInvalidUsernameCharacters, '/' ) . ']/', $name ) ) {
wfDebugLog( 'username', __METHOD__ .
": '$name' invalid due to wgInvalidUsernameCharacters" );
@@ -595,9 +657,9 @@ class User {
* Is the input a valid password for this user?
*
* @param $password String Desired password
- * @return bool True or false
+ * @return Bool
*/
- function isValidPassword( $password ) {
+ public function isValidPassword( $password ) {
//simple boolean wrapper for getPasswordValidity
return $this->getPasswordValidity( $password ) === true;
}
@@ -606,11 +668,11 @@ class User {
* Given unvalidated password input, return error message on failure.
*
* @param $password String Desired password
- * @return mixed: true on success, string of error message on failure
+ * @return mixed: true on success, string or array of error message on failure
*/
- function getPasswordValidity( $password ) {
+ public function getPasswordValidity( $password ) {
global $wgMinimalPasswordLength, $wgContLang;
-
+
static $blockedLogins = array(
'Useruser' => 'Passpass', 'Useruser1' => 'Passpass1', # r75589
'Apitestsysop' => 'testpass', 'Apitestuser' => 'testpass' # r75605
@@ -667,42 +729,25 @@ class User {
*
* @param $addr String E-mail address
* @return Bool
+ * @deprecated since 1.18 call Sanitizer::isValidEmail() directly
*/
public static function isValidEmailAddr( $addr ) {
- $result = null;
- if( !wfRunHooks( 'isValidEmailAddr', array( $addr, &$result ) ) ) {
- return $result;
- }
-
- // Please note strings below are enclosed in brackets [], this make the
- // hyphen "-" a range indicator. Hence it is double backslashed below.
- // See bug 26948
- $rfc5322_atext = "a-z0-9!#$%&'*+\\-\/=?^_`{|}~" ;
- $rfc1034_ldh_str = "a-z0-9\\-" ;
-
- $HTML5_email_regexp = "/
- ^ # start of string
- [$rfc5322_atext\\.]+ # user part which is liberal :p
- @ # 'apostrophe'
- [$rfc1034_ldh_str]+ # First domain part
- (\\.[$rfc1034_ldh_str]+)* # Following part prefixed with a dot
- $ # End of string
- /ix" ; // case Insensitive, eXtended
-
- return (bool) preg_match( $HTML5_email_regexp, $addr );
+ return Sanitizer::validateEmail( $addr );
}
/**
* Given unvalidated user input, return a canonical username, or false if
* the username is invalid.
- * @param $name \string User input
- * @param $validate \types{\string,\bool} Type of validation to use:
+ * @param $name String User input
+ * @param $validate String|Bool type of validation to use:
* - false No validation
* - 'valid' Valid for batch processes
* - 'usable' Valid for batch processes and login
* - 'creatable' Valid for batch processes, login and account creation
+ *
+ * @return bool|string
*/
- static function getCanonicalName( $name, $validate = 'valid' ) {
+ public static function getCanonicalName( $name, $validate = 'valid' ) {
# Force usernames to capital
global $wgContLang;
$name = $wgContLang->ucfirst( $name );
@@ -753,10 +798,10 @@ class User {
* Count the number of edits of a user
* @todo It should not be static and some day should be merged as proper member function / deprecated -- domas
*
- * @param $uid \int User ID to check
- * @return \int The user's edit count
+ * @param $uid Int User ID to check
+ * @return Int the user's edit count
*/
- static function edits( $uid ) {
+ public static function edits( $uid ) {
wfProfileIn( __METHOD__ );
$dbr = wfGetDB( DB_SLAVE );
// check if the user_editcount field has been initialized
@@ -790,9 +835,9 @@ class User {
* Return a random password. Sourced from mt_rand, so it's not particularly secure.
* @todo hash random numbers to improve security, like generateToken()
*
- * @return \string New random password
+ * @return String new random password
*/
- static function randomPassword() {
+ public static function randomPassword() {
global $wgMinimalPasswordLength;
$pwchars = 'ABCDEFGHJKLMNPQRSTUVWXYZabcdefghjkmnpqrstuvwxyz';
$l = strlen( $pwchars ) - 1;
@@ -801,7 +846,7 @@ class User {
$digit = mt_rand( 0, $pwlength - 1 );
$np = '';
for ( $i = 0; $i < $pwlength; $i++ ) {
- $np .= $i == $digit ? chr( mt_rand( 48, 57 ) ) : $pwchars{ mt_rand( 0, $l ) };
+ $np .= $i == $digit ? chr( mt_rand( 48, 57 ) ) : $pwchars[ mt_rand( 0, $l ) ];
}
return $np;
}
@@ -811,13 +856,12 @@ class User {
*
* @note This no longer clears uncached lazy-initialised properties;
* the constructor does that instead.
- * @private
+ *
+ * @param $name string
*/
- function loadDefaults( $name = false ) {
+ public function loadDefaults( $name = false ) {
wfProfileIn( __METHOD__ );
- global $wgRequest;
-
$this->mId = 0;
$this->mName = $name;
$this->mRealName = '';
@@ -827,8 +871,9 @@ class User {
$this->mOptionOverrides = null;
$this->mOptionsLoaded = false;
- if( $wgRequest->getCookie( 'LoggedOut' ) !== null ) {
- $this->mTouched = wfTimestamp( TS_MW, $wgRequest->getCookie( 'LoggedOut' ) );
+ $loggedOut = $this->getRequest()->getCookie( 'LoggedOut' );
+ if( $loggedOut !== null ) {
+ $this->mTouched = wfTimestamp( TS_MW, $loggedOut );
} else {
$this->mTouched = '0'; # Allow any pages to be cached
}
@@ -846,20 +891,40 @@ class User {
}
/**
- * @deprecated Use wfSetupSession().
+ * Return whether an item has been loaded.
+ *
+ * @param $item String: item to check. Current possibilities:
+ * - id
+ * - name
+ * - realname
+ * @param $all String: 'all' to check if the whole object has been loaded
+ * or any other string to check if only the item is available (e.g.
+ * for optimisation)
+ * @return Boolean
+ */
+ public function isItemLoaded( $item, $all = 'all' ) {
+ return ( $this->mLoadedItems === true && $all === 'all' ) ||
+ ( isset( $this->mLoadedItems[$item] ) && $this->mLoadedItems[$item] === true );
+ }
+
+ /**
+ * Set that an item has been loaded
+ *
+ * @param $item String
*/
- function SetupSession() {
- wfDeprecated( __METHOD__ );
- wfSetupSession();
+ private function setItemLoaded( $item ) {
+ if ( is_array( $this->mLoadedItems ) ) {
+ $this->mLoadedItems[$item] = true;
+ }
}
/**
* Load user data from the session or login cookie. If there are no valid
* credentials, initialises the user as an anonymous user.
- * @return \bool True if the user is logged in, false otherwise.
+ * @return Bool True if the user is logged in, false otherwise.
*/
private function loadFromSession() {
- global $wgRequest, $wgExternalAuthType, $wgAutocreatePolicy;
+ global $wgExternalAuthType, $wgAutocreatePolicy;
$result = null;
wfRunHooks( 'UserLoadFromSession', array( $this, &$result ) );
@@ -875,32 +940,32 @@ class User {
}
}
- if ( $wgRequest->getCookie( 'UserID' ) !== null ) {
- $sId = intval( $wgRequest->getCookie( 'UserID' ) );
- if( isset( $_SESSION['wsUserID'] ) && $sId != $_SESSION['wsUserID'] ) {
+ $request = $this->getRequest();
+
+ $cookieId = $request->getCookie( 'UserID' );
+ $sessId = $request->getSessionData( 'wsUserID' );
+
+ if ( $cookieId !== null ) {
+ $sId = intval( $cookieId );
+ if( $sessId !== null && $cookieId != $sessId ) {
$this->loadDefaults(); // Possible collision!
- wfDebugLog( 'loginSessions', "Session user ID ({$_SESSION['wsUserID']}) and
+ wfDebugLog( 'loginSessions', "Session user ID ($sessId) and
cookie user ID ($sId) don't match!" );
return false;
}
- $_SESSION['wsUserID'] = $sId;
- } else if ( isset( $_SESSION['wsUserID'] ) ) {
- if ( $_SESSION['wsUserID'] != 0 ) {
- $sId = $_SESSION['wsUserID'];
- } else {
- $this->loadDefaults();
- return false;
- }
+ $request->setSessionData( 'wsUserID', $sId );
+ } elseif ( $sessId !== null && $sessId != 0 ) {
+ $sId = $sessId;
} else {
$this->loadDefaults();
return false;
}
- if ( isset( $_SESSION['wsUserName'] ) ) {
- $sName = $_SESSION['wsUserName'];
- } else if ( $wgRequest->getCookie('UserName') !== null ) {
- $sName = $wgRequest->getCookie('UserName');
- $_SESSION['wsUserName'] = $sName;
+ if ( $request->getSessionData( 'wsUserName' ) !== null ) {
+ $sName = $request->getSessionData( 'wsUserName' );
+ } elseif ( $request->getCookie( 'UserName' ) !== null ) {
+ $sName = $request->getCookie( 'UserName' );
+ $request->setSessionData( 'wsUserName', $sName );
} else {
$this->loadDefaults();
return false;
@@ -920,11 +985,11 @@ class User {
return false;
}
- if ( isset( $_SESSION['wsToken'] ) ) {
- $passwordCorrect = $proposedUser->getToken() === $_SESSION['wsToken'];
+ if ( $request->getSessionData( 'wsToken' ) !== null ) {
+ $passwordCorrect = $proposedUser->getToken() === $request->getSessionData( 'wsToken' );
$from = 'session';
- } else if ( $wgRequest->getCookie( 'Token' ) !== null ) {
- $passwordCorrect = $proposedUser->getToken() === $wgRequest->getCookie( 'Token' );
+ } elseif ( $request->getCookie( 'Token' ) !== null ) {
+ $passwordCorrect = $proposedUser->getToken() === $request->getCookie( 'Token' );
$from = 'cookie';
} else {
# No session or persistent login cookie
@@ -934,7 +999,7 @@ class User {
if ( ( $sName === $proposedUser->getName() ) && $passwordCorrect ) {
$this->loadFromUserObject( $proposedUser );
- $_SESSION['wsToken'] = $this->mToken;
+ $request->setSessionData( 'wsToken', $this->mToken );
wfDebug( "User: logged in from $from\n" );
return true;
} else {
@@ -946,25 +1011,12 @@ class User {
}
/**
- * Load the data for this user object from another user object.
- */
- protected function loadFromUserObject( $user ) {
- $user->load();
- $user->loadGroups();
- $user->loadOptions();
- foreach ( self::$mCacheVars as $var ) {
- $this->$var = $user->$var;
- }
- }
-
- /**
* Load user and user_group data from the database.
- * $this::mId must be set, this is how the user is identified.
+ * $this->mId must be set, this is how the user is identified.
*
- * @return \bool True if the user exists, false if the user is anonymous
- * @private
+ * @return Bool True if the user exists, false if the user is anonymous
*/
- function loadFromDatabase() {
+ public function loadFromDatabase() {
# Paranoia
$this->mId = intval( $this->mId );
@@ -996,35 +1048,74 @@ class User {
/**
* Initialize this object from a row from the user table.
*
- * @param $row \type{\arrayof{\mixed}} Row from the user table to load.
+ * @param $row Array Row from the user table to load.
*/
- function loadFromRow( $row ) {
- $this->mDataLoaded = true;
+ public function loadFromRow( $row ) {
+ $all = true;
+
+ if ( isset( $row->user_name ) ) {
+ $this->mName = $row->user_name;
+ $this->mFrom = 'name';
+ $this->setItemLoaded( 'name' );
+ } else {
+ $all = false;
+ }
+
+ if ( isset( $row->user_real_name ) ) {
+ $this->mRealName = $row->user_real_name;
+ $this->setItemLoaded( 'realname' );
+ } else {
+ $all = false;
+ }
if ( isset( $row->user_id ) ) {
$this->mId = intval( $row->user_id );
+ $this->mFrom = 'id';
+ $this->setItemLoaded( 'id' );
+ } else {
+ $all = false;
+ }
+
+ if ( isset( $row->user_password ) ) {
+ $this->mPassword = $row->user_password;
+ $this->mNewpassword = $row->user_newpassword;
+ $this->mNewpassTime = wfTimestampOrNull( TS_MW, $row->user_newpass_time );
+ $this->mEmail = $row->user_email;
+ $this->decodeOptions( $row->user_options );
+ $this->mTouched = wfTimestamp(TS_MW,$row->user_touched);
+ $this->mToken = $row->user_token;
+ $this->mEmailAuthenticated = wfTimestampOrNull( TS_MW, $row->user_email_authenticated );
+ $this->mEmailToken = $row->user_email_token;
+ $this->mEmailTokenExpires = wfTimestampOrNull( TS_MW, $row->user_email_token_expires );
+ $this->mRegistration = wfTimestampOrNull( TS_MW, $row->user_registration );
+ $this->mEditCount = $row->user_editcount;
+ } else {
+ $all = false;
+ }
+
+ if ( $all ) {
+ $this->mLoadedItems = true;
+ }
+ }
+
+ /**
+ * Load the data for this user object from another user object.
+ *
+ * @param $user User
+ */
+ protected function loadFromUserObject( $user ) {
+ $user->load();
+ $user->loadGroups();
+ $user->loadOptions();
+ foreach ( self::$mCacheVars as $var ) {
+ $this->$var = $user->$var;
}
- $this->mName = $row->user_name;
- $this->mRealName = $row->user_real_name;
- $this->mPassword = $row->user_password;
- $this->mNewpassword = $row->user_newpassword;
- $this->mNewpassTime = wfTimestampOrNull( TS_MW, $row->user_newpass_time );
- $this->mEmail = $row->user_email;
- $this->decodeOptions( $row->user_options );
- $this->mTouched = wfTimestamp(TS_MW,$row->user_touched);
- $this->mToken = $row->user_token;
- $this->mEmailAuthenticated = wfTimestampOrNull( TS_MW, $row->user_email_authenticated );
- $this->mEmailToken = $row->user_email_token;
- $this->mEmailTokenExpires = wfTimestampOrNull( TS_MW, $row->user_email_token_expires );
- $this->mRegistration = wfTimestampOrNull( TS_MW, $row->user_registration );
- $this->mEditCount = $row->user_editcount;
}
/**
* Load the groups from the database if they aren't already loaded.
- * @private
*/
- function loadGroups() {
+ private function loadGroups() {
if ( is_null( $this->mGroups ) ) {
$dbr = wfGetDB( DB_MASTER );
$res = $dbr->select( 'user_groups',
@@ -1039,23 +1130,61 @@ class User {
}
/**
+ * Add the user to the group if he/she meets given criteria.
+ *
+ * Contrary to autopromotion by \ref $wgAutopromote, the group will be
+ * possible to remove manually via Special:UserRights. In such case it
+ * will not be re-added automatically. The user will also not lose the
+ * group if they no longer meet the criteria.
+ *
+ * @param $event String key in $wgAutopromoteOnce (each one has groups/criteria)
+ *
+ * @return array Array of groups the user has been promoted to.
+ *
+ * @see $wgAutopromoteOnce
+ */
+ public function addAutopromoteOnceGroups( $event ) {
+ global $wgAutopromoteOnceLogInRC;
+
+ $toPromote = array();
+ if ( $this->getId() ) {
+ $toPromote = Autopromote::getAutopromoteOnceGroups( $this, $event );
+ if ( count( $toPromote ) ) {
+ $oldGroups = $this->getGroups(); // previous groups
+ foreach ( $toPromote as $group ) {
+ $this->addGroup( $group );
+ }
+ $newGroups = array_merge( $oldGroups, $toPromote ); // all groups
+
+ $log = new LogPage( 'rights', $wgAutopromoteOnceLogInRC /* in RC? */ );
+ $log->addEntry( 'autopromote',
+ $this->getUserPage(),
+ '', // no comment
+ array( implode( ', ', $oldGroups ), implode( ', ', $newGroups ) )
+ );
+ }
+ }
+ return $toPromote;
+ }
+
+ /**
* Clear various cached data stored in this object.
- * @param $reloadFrom \string Reload user and user_groups table data from a
+ * @param $reloadFrom bool|String Reload user and user_groups table data from a
* given source. May be "name", "id", "defaults", "session", or false for
* no reload.
*/
- function clearInstanceCache( $reloadFrom = false ) {
+ public function clearInstanceCache( $reloadFrom = false ) {
$this->mNewtalk = -1;
$this->mDatePreference = null;
$this->mBlockedby = -1; # Unset
$this->mHash = false;
- $this->mSkin = null;
$this->mRights = null;
$this->mEffectiveGroups = null;
+ $this->mImplicitGroups = null;
$this->mOptions = null;
if ( $reloadFrom ) {
- $this->mDataLoaded = false;
+ $this->mLoadedItems = array();
$this->mFrom = $reloadFrom;
}
}
@@ -1064,19 +1193,13 @@ class User {
* Combine the language default options with any site-specific options
* and add the default language variants.
*
- * @return \type{\arrayof{\string}} Array of options
+ * @return Array of String options
*/
- static function getDefaultOptions() {
- global $wgNamespacesToBeSearchedDefault;
- /**
- * Site defaults will override the global/language defaults
- */
- global $wgDefaultUserOptions, $wgContLang, $wgDefaultSkin;
- $defOpt = $wgDefaultUserOptions + $wgContLang->getDefaultUserOptionOverrides();
+ public static function getDefaultOptions() {
+ global $wgNamespacesToBeSearchedDefault, $wgDefaultUserOptions, $wgContLang, $wgDefaultSkin;
- /**
- * default language setting
- */
+ $defOpt = $wgDefaultUserOptions;
+ # default language setting
$variant = $wgContLang->getDefaultVariant();
$defOpt['variant'] = $variant;
$defOpt['language'] = $variant;
@@ -1085,14 +1208,16 @@ class User {
}
$defOpt['skin'] = $wgDefaultSkin;
+ wfRunHooks( 'UserGetDefaultOptions', array( &$defOpt ) );
+
return $defOpt;
}
/**
* Get a given default option value.
*
- * @param $opt \string Name of option to retrieve
- * @return \string Default option value
+ * @param $opt String Name of option to retrieve
+ * @return String Default option value
*/
public static function getDefaultOption( $opt ) {
$defOpts = self::getDefaultOptions();
@@ -1106,17 +1231,15 @@ class User {
/**
* Get blocking information
- * @private
- * @param $bFromSlave \bool Whether to check the slave database first. To
+ * @param $bFromSlave Bool Whether to check the slave database first. To
* improve performance, non-critical checks are done
* against slaves. Check when actually saving should be
* done against master.
*/
- function getBlockedStatus( $bFromSlave = true ) {
+ private function getBlockedStatus( $bFromSlave = true ) {
global $wgProxyWhitelist, $wgUser;
if ( -1 != $this->mBlockedby ) {
- wfDebug( "User::getBlockedStatus: already loaded.\n" );
return;
}
@@ -1134,50 +1257,29 @@ class User {
$this->mHideName = 0;
$this->mAllowUsertalk = 0;
- # Check if we are looking at an IP or a logged-in user
- if ( $this->isIP( $this->getName() ) ) {
- $ip = $this->getName();
+ # We only need to worry about passing the IP address to the Block generator if the
+ # user is not immune to autoblocks/hardblocks, and they are the current user so we
+ # know which IP address they're actually coming from
+ if ( !$this->isAllowed( 'ipblock-exempt' ) && $this->getID() == $wgUser->getID() ) {
+ $ip = wfGetIP();
} else {
- # Check if we are looking at the current user
- # If we don't, and the user is logged in, we don't know about
- # his IP / autoblock status, so ignore autoblock of current user's IP
- if ( $this->getID() != $wgUser->getID() ) {
- $ip = '';
- } else {
- # Get IP of current user
- $ip = wfGetIP();
- }
- }
-
- if ( $this->isAllowed( 'ipblock-exempt' ) ) {
- # Exempt from all types of IP-block
- $ip = '';
+ $ip = null;
}
# User/IP blocking
- $this->mBlock = new Block();
- $this->mBlock->fromMaster( !$bFromSlave );
- if ( $this->mBlock->load( $ip , $this->mId ) ) {
+ $this->mBlock = Block::newFromTarget( $this->getName(), $ip, !$bFromSlave );
+ if ( $this->mBlock instanceof Block ) {
wfDebug( __METHOD__ . ": Found block.\n" );
- $this->mBlockedby = $this->mBlock->mBy;
- if( $this->mBlockedby == 0 )
- $this->mBlockedby = $this->mBlock->mByName;
+ $this->mBlockedby = $this->mBlock->getByName();
$this->mBlockreason = $this->mBlock->mReason;
$this->mHideName = $this->mBlock->mHideName;
- $this->mAllowUsertalk = $this->mBlock->mAllowUsertalk;
- if ( $this->isLoggedIn() && $wgUser->getID() == $this->getID() ) {
- $this->spreadBlock();
- }
- } else {
- // Bug 13611: don't remove mBlock here, to allow account creation blocks to
- // apply to users. Note that the existence of $this->mBlock is not used to
- // check for edit blocks, $this->mBlockedby is instead.
+ $this->mAllowUsertalk = !$this->mBlock->prevents( 'editownusertalk' );
}
# Proxy blocking
- if ( !$this->isAllowed( 'proxyunbannable' ) && !in_array( $ip, $wgProxyWhitelist ) ) {
+ if ( $ip !== null && !$this->isAllowed( 'proxyunbannable' ) && !in_array( $ip, $wgProxyWhitelist ) ) {
# Local list
- if ( wfIsLocallyBlockedProxy( $ip ) ) {
+ if ( self::isLocallyBlockedProxy( $ip ) ) {
$this->mBlockedby = wfMsg( 'proxyblocker' );
$this->mBlockreason = wfMsg( 'proxyblockreason' );
}
@@ -1200,11 +1302,11 @@ class User {
/**
* Whether the given IP is in a DNS blacklist.
*
- * @param $ip \string IP to check
- * @param $checkWhitelist Boolean: whether to check the whitelist first
- * @return \bool True if blacklisted.
+ * @param $ip String IP to check
+ * @param $checkWhitelist Bool: whether to check the whitelist first
+ * @return Bool True if blacklisted.
*/
- function isDnsBlacklisted( $ip, $checkWhitelist = false ) {
+ public function isDnsBlacklisted( $ip, $checkWhitelist = false ) {
global $wgEnableSorbs, $wgEnableDnsBlacklist,
$wgSorbsUrl, $wgDnsBlacklistUrls, $wgProxyWhitelist;
@@ -1221,15 +1323,15 @@ class User {
/**
* Whether the given IP is in a given DNS blacklist.
*
- * @param $ip \string IP to check
- * @param $bases \string or Array of Strings: URL of the DNS blacklist
- * @return \bool True if blacklisted.
+ * @param $ip String IP to check
+ * @param $bases String|Array of Strings: URL of the DNS blacklist
+ * @return Bool True if blacklisted.
*/
- function inDnsBlacklist( $ip, $bases ) {
+ public function inDnsBlacklist( $ip, $bases ) {
wfProfileIn( __METHOD__ );
$found = false;
- // FIXME: IPv6 ??? (http://bugs.php.net/bug.php?id=33170)
+ // @todo FIXME: IPv6 ??? (http://bugs.php.net/bug.php?id=33170)
if( IP::isIPv4( $ip ) ) {
# Reverse IP, bug 21255
$ipReversed = implode( '.', array_reverse( explode( '.', $ip ) ) );
@@ -1256,17 +1358,46 @@ class User {
}
/**
+ * Check if an IP address is in the local proxy list
+ *
+ * @param $ip string
+ *
+ * @return bool
+ */
+ public static function isLocallyBlockedProxy( $ip ) {
+ global $wgProxyList;
+
+ if ( !$wgProxyList ) {
+ return false;
+ }
+ wfProfileIn( __METHOD__ );
+
+ if ( !is_array( $wgProxyList ) ) {
+ # Load from the specified file
+ $wgProxyList = array_map( 'trim', file( $wgProxyList ) );
+ }
+
+ if ( !is_array( $wgProxyList ) ) {
+ $ret = false;
+ } elseif ( array_search( $ip, $wgProxyList ) !== false ) {
+ $ret = true;
+ } elseif ( array_key_exists( $ip, $wgProxyList ) ) {
+ # Old-style flipped proxy list
+ $ret = true;
+ } else {
+ $ret = false;
+ }
+ wfProfileOut( __METHOD__ );
+ return $ret;
+ }
+
+ /**
* Is this user subject to rate limiting?
*
- * @return \bool True if rate limited
+ * @return Bool True if rate limited
*/
public function isPingLimitable() {
- global $wgRateLimitsExcludedGroups;
global $wgRateLimitsExcludedIPs;
- if( array_intersect( $this->getEffectiveGroups(), $wgRateLimitsExcludedGroups ) ) {
- // Deprecated, but kept for backwards-compatibility config
- return false;
- }
if( in_array( wfGetIP(), $wgRateLimitsExcludedIPs ) ) {
// No other good way currently to disable rate limits
// for specific IPs. :P
@@ -1283,10 +1414,10 @@ class User {
* @note When using a shared cache like memcached, IP-address
* last-hit counters will be shared across wikis.
*
- * @param $action \string Action to enforce; 'edit' if unspecified
- * @return \bool True if a rate limiter was tripped
+ * @param $action String Action to enforce; 'edit' if unspecified
+ * @return Bool True if a rate limiter was tripped
*/
- function pingLimiter( $action = 'edit' ) {
+ public function pingLimiter( $action = 'edit' ) {
# Call the 'PingLimiter' hook
$result = false;
if( !wfRunHooks( 'PingLimiter', array( &$this, $action, $result ) ) ) {
@@ -1356,7 +1487,9 @@ class User {
if( $count > $max ) {
wfDebug( __METHOD__ . ": tripped! $key at $count $summary\n" );
if( $wgRateLimitLog ) {
- @error_log( wfTimestamp( TS_MW ) . ' ' . wfWikiID() . ': ' . $this->getName() . " tripped $key at $count $summary\n", 3, $wgRateLimitLog );
+ wfSuppressWarnings();
+ file_put_contents( $wgRateLimitLog, wfTimestamp( TS_MW ) . ' ' . wfWikiID() . ': ' . $this->getName() . " tripped $key at $count $summary\n", FILE_APPEND );
+ wfRestoreWarnings();
}
$triggered = true;
} else {
@@ -1376,28 +1509,35 @@ class User {
/**
* Check if user is blocked
*
- * @param $bFromSlave \bool Whether to check the slave database instead of the master
- * @return \bool True if blocked, false otherwise
+ * @param $bFromSlave Bool Whether to check the slave database instead of the master
+ * @return Bool True if blocked, false otherwise
*/
- function isBlocked( $bFromSlave = true ) { // hacked from false due to horrible probs on site
- wfDebug( "User::isBlocked: enter\n" );
+ public function isBlocked( $bFromSlave = true ) { // hacked from false due to horrible probs on site
+ return $this->getBlock( $bFromSlave ) instanceof Block && $this->getBlock()->prevents( 'edit' );
+ }
+
+ /**
+ * Get the block affecting the user, or null if the user is not blocked
+ *
+ * @param $bFromSlave Bool Whether to check the slave database instead of the master
+ * @return Block|null
+ */
+ public function getBlock( $bFromSlave = true ){
$this->getBlockedStatus( $bFromSlave );
- return $this->mBlockedby !== 0;
+ return $this->mBlock instanceof Block ? $this->mBlock : null;
}
/**
* Check if user is blocked from editing a particular article
*
- * @param $title \string Title to check
- * @param $bFromSlave \bool Whether to check the slave database instead of the master
- * @return \bool True if blocked, false otherwise
+ * @param $title Title to check
+ * @param $bFromSlave Bool whether to check the slave database instead of the master
+ * @return Bool
*/
function isBlockedFrom( $title, $bFromSlave = false ) {
global $wgBlockAllowsUTEdit;
wfProfileIn( __METHOD__ );
- wfDebug( __METHOD__ . ": enter\n" );
- wfDebug( __METHOD__ . ": asking isBlocked()\n" );
$blocked = $this->isBlocked( $bFromSlave );
$allowUsertalk = ( $wgBlockAllowsUTEdit ? $this->mAllowUsertalk : false );
# If a user's name is suppressed, they cannot make edits anywhere
@@ -1415,29 +1555,29 @@ class User {
/**
* If user is blocked, return the name of the user who placed the block
- * @return \string name of blocker
+ * @return String name of blocker
*/
- function blockedBy() {
+ public function blockedBy() {
$this->getBlockedStatus();
return $this->mBlockedby;
}
/**
* If user is blocked, return the specified reason for the block
- * @return \string Blocking reason
+ * @return String Blocking reason
*/
- function blockedFor() {
+ public function blockedFor() {
$this->getBlockedStatus();
return $this->mBlockreason;
}
/**
* If user is blocked, return the ID for the block
- * @return \int Block ID
+ * @return Int Block ID
*/
- function getBlockId() {
+ public function getBlockId() {
$this->getBlockedStatus();
- return ( $this->mBlock ? $this->mBlock->mId : false );
+ return ( $this->mBlock ? $this->mBlock->getId() : false );
}
/**
@@ -1445,17 +1585,17 @@ class User {
* Do not use for actual edit permission checks!
* This is intented for quick UI checks.
*
- * @param $ip \type{\string} IP address, uses current client if none given
- * @return \type{\bool} True if blocked, false otherwise
+ * @param $ip String IP address, uses current client if none given
+ * @return Bool True if blocked, false otherwise
*/
- function isBlockedGlobally( $ip = '' ) {
+ public function isBlockedGlobally( $ip = '' ) {
if( $this->mBlockedGlobally !== null ) {
return $this->mBlockedGlobally;
}
// User is already an IP?
if( IP::isIPAddress( $this->getName() ) ) {
$ip = $this->getName();
- } else if( !$ip ) {
+ } elseif( !$ip ) {
$ip = wfGetIP();
}
$blocked = false;
@@ -1467,9 +1607,9 @@ class User {
/**
* Check if user account is locked
*
- * @return \type{\bool} True if locked, false otherwise
+ * @return Bool True if locked, false otherwise
*/
- function isLocked() {
+ public function isLocked() {
if( $this->mLocked !== null ) {
return $this->mLocked;
}
@@ -1482,9 +1622,9 @@ class User {
/**
* Check if user account is hidden
*
- * @return \type{\bool} True if hidden, false otherwise
+ * @return Bool True if hidden, false otherwise
*/
- function isHidden() {
+ public function isHidden() {
if( $this->mHideName !== null ) {
return $this->mHideName;
}
@@ -1499,14 +1639,14 @@ class User {
/**
* Get the user's ID.
- * @return Integer The user's ID; 0 if the user is anonymous or nonexistent
+ * @return Int The user's ID; 0 if the user is anonymous or nonexistent
*/
- function getId() {
- if( $this->mId === null and $this->mName !== null
- and User::isIP( $this->mName ) ) {
+ public function getId() {
+ if( $this->mId === null && $this->mName !== null
+ && User::isIP( $this->mName ) ) {
// Special case, we know the user is anonymous
return 0;
- } elseif( $this->mId === null ) {
+ } elseif( !$this->isItemLoaded( 'id' ) ) {
// Don't load if this was initialized from an ID
$this->load();
}
@@ -1515,19 +1655,19 @@ class User {
/**
* Set the user and reload all fields according to a given ID
- * @param $v \int User ID to reload
+ * @param $v Int User ID to reload
*/
- function setId( $v ) {
+ public function setId( $v ) {
$this->mId = $v;
$this->clearInstanceCache( 'id' );
}
/**
* Get the user name, or the IP of an anonymous user
- * @return \string User's name or IP address
+ * @return String User's name or IP address
*/
- function getName() {
- if ( !$this->mDataLoaded && $this->mFrom == 'name' ) {
+ public function getName() {
+ if ( $this->isItemLoaded( 'name', 'only' ) ) {
# Special case optimisation
return $this->mName;
} else {
@@ -1551,26 +1691,26 @@ class User {
*
* @note User::newFromName() has rougly the same function, when the named user
* does not exist.
- * @param $str \string New user name to set
+ * @param $str String New user name to set
*/
- function setName( $str ) {
+ public function setName( $str ) {
$this->load();
$this->mName = $str;
}
/**
* Get the user's name escaped by underscores.
- * @return \string Username escaped by underscores.
+ * @return String Username escaped by underscores.
*/
- function getTitleKey() {
+ public function getTitleKey() {
return str_replace( ' ', '_', $this->getName() );
}
/**
* Check if the user has new messages.
- * @return \bool True if the user has new messages
+ * @return Bool True if the user has new messages
*/
- function getNewtalk() {
+ public function getNewtalk() {
$this->load();
# Load the newtalk status if it is unloaded (mNewtalk=-1)
@@ -1601,9 +1741,9 @@ class User {
/**
* Return the talk page(s) this user has new messages on.
- * @return \type{\arrayof{\string}} Array of page URLs
+ * @return Array of String page URLs
*/
- function getNewMessageLinks() {
+ public function getNewMessageLinks() {
$talks = array();
if( !wfRunHooks( 'UserRetrieveNewTalks', array( &$this, &$talks ) ) )
return $talks;
@@ -1619,13 +1759,12 @@ class User {
* Internal uncached check for new messages
*
* @see getNewtalk()
- * @param $field \string 'user_ip' for anonymous users, 'user_id' otherwise
- * @param $id \types{\string,\int} User's IP address for anonymous users, User ID otherwise
- * @param $fromMaster \bool true to fetch from the master, false for a slave
- * @return \bool True if the user has new messages
- * @private
+ * @param $field String 'user_ip' for anonymous users, 'user_id' otherwise
+ * @param $id String|Int User's IP address for anonymous users, User ID otherwise
+ * @param $fromMaster Bool true to fetch from the master, false for a slave
+ * @return Bool True if the user has new messages
*/
- function checkNewtalk( $field, $id, $fromMaster = false ) {
+ protected function checkNewtalk( $field, $id, $fromMaster = false ) {
if ( $fromMaster ) {
$db = wfGetDB( DB_MASTER );
} else {
@@ -1638,12 +1777,11 @@ class User {
/**
* Add or update the new messages flag
- * @param $field \string 'user_ip' for anonymous users, 'user_id' otherwise
- * @param $id \types{\string,\int} User's IP address for anonymous users, User ID otherwise
- * @return \bool True if successful, false otherwise
- * @private
+ * @param $field String 'user_ip' for anonymous users, 'user_id' otherwise
+ * @param $id String|Int User's IP address for anonymous users, User ID otherwise
+ * @return Bool True if successful, false otherwise
*/
- function updateNewtalk( $field, $id ) {
+ protected function updateNewtalk( $field, $id ) {
$dbw = wfGetDB( DB_MASTER );
$dbw->insert( 'user_newtalk',
array( $field => $id ),
@@ -1660,12 +1798,11 @@ class User {
/**
* Clear the new messages flag for the given user
- * @param $field \string 'user_ip' for anonymous users, 'user_id' otherwise
- * @param $id \types{\string,\int} User's IP address for anonymous users, User ID otherwise
- * @return \bool True if successful, false otherwise
- * @private
+ * @param $field String 'user_ip' for anonymous users, 'user_id' otherwise
+ * @param $id String|Int User's IP address for anonymous users, User ID otherwise
+ * @return Bool True if successful, false otherwise
*/
- function deleteNewtalk( $field, $id ) {
+ protected function deleteNewtalk( $field, $id ) {
$dbw = wfGetDB( DB_MASTER );
$dbw->delete( 'user_newtalk',
array( $field => $id ),
@@ -1681,9 +1818,9 @@ class User {
/**
* Update the 'You have new messages!' status.
- * @param $val \bool Whether the user has new messages
+ * @param $val Bool Whether the user has new messages
*/
- function setNewtalk( $val ) {
+ public function setNewtalk( $val ) {
if( wfReadOnly() ) {
return;
}
@@ -1720,7 +1857,7 @@ class User {
/**
* Generate a current or new-future timestamp to be stored in the
* user_touched field when we update things.
- * @return \string Timestamp in TS_MW format
+ * @return String Timestamp in TS_MW format
*/
private static function newTouchedTimestamp() {
global $wgClockSkewFudge;
@@ -1747,7 +1884,7 @@ class User {
* Updates user_touched field, and removes account data from memcached
* for reload on the next hit.
*/
- function invalidateCache() {
+ public function invalidateCache() {
if( wfReadOnly() ) {
return;
}
@@ -1767,17 +1904,20 @@ class User {
/**
* Validate the cache for this account.
- * @param $timestamp \string A timestamp in TS_MW format
+ * @param $timestamp String A timestamp in TS_MW format
+ *
+ * @return bool
*/
- function validateCache( $timestamp ) {
+ public function validateCache( $timestamp ) {
$this->load();
return ( $timestamp >= $this->mTouched );
}
/**
* Get the user touched timestamp
+ * @return String timestamp
*/
- function getTouched() {
+ public function getTouched() {
$this->load();
return $this->mTouched;
}
@@ -1793,10 +1933,12 @@ class User {
* wipes it, so the account cannot be logged in until
* a new password is set, for instance via e-mail.
*
- * @param $str \string New password to set
+ * @param $str String New password to set
* @throws PasswordError on failure
+ *
+ * @return bool
*/
- function setPassword( $str ) {
+ public function setPassword( $str ) {
global $wgAuth;
if( $str !== null ) {
@@ -1807,8 +1949,14 @@ class User {
if( !$this->isValidPassword( $str ) ) {
global $wgMinimalPasswordLength;
$valid = $this->getPasswordValidity( $str );
- throw new PasswordError( wfMsgExt( $valid, array( 'parsemag' ),
- $wgMinimalPasswordLength ) );
+ if ( is_array( $valid ) ) {
+ $message = array_shift( $valid );
+ $params = $valid;
+ } else {
+ $message = $valid;
+ $params = array( $wgMinimalPasswordLength );
+ }
+ throw new PasswordError( wfMsgExt( $message, array( 'parsemag' ), $params ) );
}
}
@@ -1824,9 +1972,9 @@ class User {
/**
* Set the password and reset the random token unconditionally.
*
- * @param $str \string New password to set
+ * @param $str String New password to set
*/
- function setInternalPassword( $str ) {
+ public function setInternalPassword( $str ) {
$this->load();
$this->setToken();
@@ -1842,9 +1990,9 @@ class User {
/**
* Get the user's current token.
- * @return \string Token
+ * @return String Token
*/
- function getToken() {
+ public function getToken() {
$this->load();
return $this->mToken;
}
@@ -1853,10 +2001,9 @@ class User {
* Set the random token (used for persistent authentication)
* Called from loadDefaults() among other places.
*
- * @param $token \string If specified, set the token to this value
- * @private
+ * @param $token String|bool If specified, set the token to this value
*/
- function setToken( $token = false ) {
+ public function setToken( $token = false ) {
global $wgSecretKey, $wgProxyKey;
$this->load();
if ( !$token ) {
@@ -1876,10 +2023,9 @@ class User {
/**
* Set the cookie password
*
- * @param $str \string New cookie password
- * @private
+ * @param $str String New cookie password
*/
- function setCookiePassword( $str ) {
+ private function setCookiePassword( $str ) {
$this->load();
$this->mCookiePassword = md5( $str );
}
@@ -1887,10 +2033,10 @@ class User {
/**
* Set the password for a password reminder or new account email
*
- * @param $str \string New password to set
- * @param $throttle \bool If true, reset the throttle timestamp to the present
+ * @param $str String New password to set
+ * @param $throttle Bool If true, reset the throttle timestamp to the present
*/
- function setNewpassword( $str, $throttle = true ) {
+ public function setNewpassword( $str, $throttle = true ) {
$this->load();
$this->mNewpassword = self::crypt( $str );
if ( $throttle ) {
@@ -1901,9 +2047,9 @@ class User {
/**
* Has password reminder email been sent within the last
* $wgPasswordReminderResendTime hours?
- * @return \bool True or false
+ * @return Bool
*/
- function isPasswordReminderThrottled() {
+ public function isPasswordReminderThrottled() {
global $wgPasswordReminderResendTime;
$this->load();
if ( !$this->mNewpassTime || !$wgPasswordReminderResendTime ) {
@@ -1915,9 +2061,9 @@ class User {
/**
* Get the user's e-mail address
- * @return \string User's email address
+ * @return String User's email address
*/
- function getEmail() {
+ public function getEmail() {
$this->load();
wfRunHooks( 'UserGetEmail', array( $this, &$this->mEmail ) );
return $this->mEmail;
@@ -1925,9 +2071,9 @@ class User {
/**
* Get the timestamp of the user's e-mail authentication
- * @return \string TS_MW timestamp
+ * @return String TS_MW timestamp
*/
- function getEmailAuthenticationTimestamp() {
+ public function getEmailAuthenticationTimestamp() {
$this->load();
wfRunHooks( 'UserGetEmailAuthenticationTimestamp', array( $this, &$this->mEmailAuthenticated ) );
return $this->mEmailAuthenticated;
@@ -1935,9 +2081,9 @@ class User {
/**
* Set the user's e-mail address
- * @param $str \string New e-mail address
+ * @param $str String New e-mail address
*/
- function setEmail( $str ) {
+ public function setEmail( $str ) {
$this->load();
$this->mEmail = $str;
wfRunHooks( 'UserSetEmail', array( $this, &$this->mEmail ) );
@@ -1945,18 +2091,21 @@ class User {
/**
* Get the user's real name
- * @return \string User's real name
+ * @return String User's real name
*/
- function getRealName() {
- $this->load();
+ public function getRealName() {
+ if ( !$this->isItemLoaded( 'realname' ) ) {
+ $this->load();
+ }
+
return $this->mRealName;
}
/**
* Set the user's real name
- * @param $str \string New real name
+ * @param $str String New real name
*/
- function setRealName( $str ) {
+ public function setRealName( $str ) {
$this->load();
$this->mRealName = $str;
}
@@ -1964,13 +2113,15 @@ class User {
/**
* Get the user's current setting for a given option.
*
- * @param $oname \string The option to check
- * @param $defaultOverride \string A default value returned if the option does not exist
- * @return \string User's current value for the option
+ * @param $oname String The option to check
+ * @param $defaultOverride String A default value returned if the option does not exist
+ * @param $ignoreHidden Bool = whether to ignore the effects of $wgHiddenPrefs
+ * @return String User's current value for the option
* @see getBoolOption()
* @see getIntOption()
*/
- function getOption( $oname, $defaultOverride = null ) {
+ public function getOption( $oname, $defaultOverride = null, $ignoreHidden = false ) {
+ global $wgHiddenPrefs;
$this->loadOptions();
if ( is_null( $this->mOptions ) ) {
@@ -1980,6 +2131,15 @@ class User {
$this->mOptions = User::getDefaultOptions();
}
+ # We want 'disabled' preferences to always behave as the default value for
+ # users, even if they have set the option explicitly in their settings (ie they
+ # set it, and then it was disabled removing their ability to change it). But
+ # we don't want to erase the preferences in the database in case the preference
+ # is re-enabled again. So don't touch $mOptions, just override the returned value
+ if( in_array( $oname, $wgHiddenPrefs ) && !$ignoreHidden ){
+ return self::getDefaultOption( $oname );
+ }
+
if ( array_key_exists( $oname, $this->mOptions ) ) {
return $this->mOptions[$oname];
} else {
@@ -1993,31 +2153,45 @@ class User {
* @return array
*/
public function getOptions() {
+ global $wgHiddenPrefs;
$this->loadOptions();
- return $this->mOptions;
+ $options = $this->mOptions;
+
+ # We want 'disabled' preferences to always behave as the default value for
+ # users, even if they have set the option explicitly in their settings (ie they
+ # set it, and then it was disabled removing their ability to change it). But
+ # we don't want to erase the preferences in the database in case the preference
+ # is re-enabled again. So don't touch $mOptions, just override the returned value
+ foreach( $wgHiddenPrefs as $pref ){
+ $default = self::getDefaultOption( $pref );
+ if( $default !== null ){
+ $options[$pref] = $default;
+ }
+ }
+
+ return $options;
}
/**
* Get the user's current setting for a given option, as a boolean value.
*
- * @param $oname \string The option to check
- * @return \bool User's current value for the option
+ * @param $oname String The option to check
+ * @return Bool User's current value for the option
* @see getOption()
*/
- function getBoolOption( $oname ) {
+ public function getBoolOption( $oname ) {
return (bool)$this->getOption( $oname );
}
-
/**
* Get the user's current setting for a given option, as a boolean value.
*
- * @param $oname \string The option to check
- * @param $defaultOverride \int A default value returned if the option does not exist
- * @return \int User's current value for the option
+ * @param $oname String The option to check
+ * @param $defaultOverride Int A default value returned if the option does not exist
+ * @return Int User's current value for the option
* @see getOption()
*/
- function getIntOption( $oname, $defaultOverride=0 ) {
+ public function getIntOption( $oname, $defaultOverride=0 ) {
$val = $this->getOption( $oname );
if( $val == '' ) {
$val = $defaultOverride;
@@ -2028,18 +2202,13 @@ class User {
/**
* Set the given option for a user.
*
- * @param $oname \string The option to set
- * @param $val \mixed New value to set
+ * @param $oname String The option to set
+ * @param $val mixed New value to set
*/
- function setOption( $oname, $val ) {
+ public function setOption( $oname, $val ) {
$this->load();
$this->loadOptions();
- if ( $oname == 'skin' ) {
- # Clear cached skin, so the new one displays immediately in Special:Preferences
- $this->mSkin = null;
- }
-
// Explicitly NULL values should refer to defaults
global $wgDefaultUserOptions;
if( is_null( $val ) && isset( $wgDefaultUserOptions[$oname] ) ) {
@@ -2052,15 +2221,15 @@ class User {
/**
* Reset all options to the site defaults
*/
- function resetOptions() {
- $this->mOptions = User::getDefaultOptions();
+ public function resetOptions() {
+ $this->mOptions = self::getDefaultOptions();
}
/**
* Get the user's preferred date format.
- * @return \string User's preferred date format
+ * @return String User's preferred date format
*/
- function getDatePreference() {
+ public function getDatePreference() {
// Important migration for old data rows
if ( is_null( $this->mDatePreference ) ) {
global $wgLang;
@@ -2076,8 +2245,10 @@ class User {
/**
* Get the user preferred stub threshold
+ *
+ * @return int
*/
- function getStubThreshold() {
+ public function getStubThreshold() {
global $wgMaxArticleSize; # Maximum article size, in Kb
$threshold = intval( $this->getOption( 'stubthreshold' ) );
if ( $threshold > $wgMaxArticleSize * 1024 ) {
@@ -2090,7 +2261,7 @@ class User {
/**
* Get the permissions this user has.
- * @return \type{\arrayof{\string}} Array of permission names
+ * @return Array of String permission names
*/
function getRights() {
if ( is_null( $this->mRights ) ) {
@@ -2105,9 +2276,9 @@ class User {
/**
* Get the list of explicit group memberships this user has.
* The implicit * and user groups are not included.
- * @return \type{\arrayof{\string}} Array of internal group names
+ * @return Array of String internal group names
*/
- function getGroups() {
+ public function getGroups() {
$this->load();
return $this->mGroups;
}
@@ -2115,36 +2286,82 @@ class User {
/**
* Get the list of implicit group memberships this user has.
* This includes all explicit groups, plus 'user' if logged in,
- * '*' for all accounts and autopromoted groups
- * @param $recache \bool Whether to avoid the cache
- * @return \type{\arrayof{\string}} Array of internal group names
+ * '*' for all accounts, and autopromoted groups
+ * @param $recache Bool Whether to avoid the cache
+ * @return Array of String internal group names
*/
- function getEffectiveGroups( $recache = false ) {
+ public function getEffectiveGroups( $recache = false ) {
if ( $recache || is_null( $this->mEffectiveGroups ) ) {
wfProfileIn( __METHOD__ );
- $this->mEffectiveGroups = $this->getGroups();
- $this->mEffectiveGroups[] = '*';
- if( $this->getId() ) {
- $this->mEffectiveGroups[] = 'user';
+ $this->mEffectiveGroups = array_unique( array_merge(
+ $this->getGroups(), // explicit groups
+ $this->getAutomaticGroups( $recache ) // implicit groups
+ ) );
+ # Hook for additional groups
+ wfRunHooks( 'UserEffectiveGroups', array( &$this, &$this->mEffectiveGroups ) );
+ wfProfileOut( __METHOD__ );
+ }
+ return $this->mEffectiveGroups;
+ }
+
+ /**
+ * Get the list of implicit group memberships this user has.
+ * This includes 'user' if logged in, '*' for all accounts,
+ * and autopromoted groups
+ * @param $recache Bool Whether to avoid the cache
+ * @return Array of String internal group names
+ */
+ public function getAutomaticGroups( $recache = false ) {
+ if ( $recache || is_null( $this->mImplicitGroups ) ) {
+ wfProfileIn( __METHOD__ );
+ $this->mImplicitGroups = array( '*' );
+ if ( $this->getId() ) {
+ $this->mImplicitGroups[] = 'user';
- $this->mEffectiveGroups = array_unique( array_merge(
- $this->mEffectiveGroups,
+ $this->mImplicitGroups = array_unique( array_merge(
+ $this->mImplicitGroups,
Autopromote::getAutopromoteGroups( $this )
) );
-
- # Hook for additional groups
- wfRunHooks( 'UserEffectiveGroups', array( &$this, &$this->mEffectiveGroups ) );
+ }
+ if ( $recache ) {
+ # Assure data consistency with rights/groups,
+ # as getEffectiveGroups() depends on this function
+ $this->mEffectiveGroups = null;
}
wfProfileOut( __METHOD__ );
}
- return $this->mEffectiveGroups;
+ return $this->mImplicitGroups;
+ }
+
+ /**
+ * Returns the groups the user has belonged to.
+ *
+ * The user may still belong to the returned groups. Compare with getGroups().
+ *
+ * The function will not return groups the user had belonged to before MW 1.17
+ *
+ * @return array Names of the groups the user has belonged to.
+ */
+ public function getFormerGroups() {
+ if( is_null( $this->mFormerGroups ) ) {
+ $dbr = wfGetDB( DB_MASTER );
+ $res = $dbr->select( 'user_former_groups',
+ array( 'ufg_group' ),
+ array( 'ufg_user' => $this->mId ),
+ __METHOD__ );
+ $this->mFormerGroups = array();
+ foreach( $res as $row ) {
+ $this->mFormerGroups[] = $row->ufg_group;
+ }
+ }
+ return $this->mFormerGroups;
}
/**
* Get the user's edit count.
- * @return \int User'e edit count
+ * @return Int
*/
- function getEditCount() {
+ public function getEditCount() {
if( $this->getId() ) {
if ( !isset( $this->mEditCount ) ) {
/* Populate the count, if it has not been populated yet */
@@ -2160,20 +2377,21 @@ class User {
/**
* Add the user to the given group.
* This takes immediate effect.
- * @param $group \string Name of the group to add
+ * @param $group String Name of the group to add
*/
- function addGroup( $group ) {
- $dbw = wfGetDB( DB_MASTER );
- if( $this->getId() ) {
- $dbw->insert( 'user_groups',
- array(
- 'ug_user' => $this->getID(),
- 'ug_group' => $group,
- ),
- __METHOD__,
- array( 'IGNORE' ) );
+ public function addGroup( $group ) {
+ if( wfRunHooks( 'UserAddGroup', array( $this, &$group ) ) ) {
+ $dbw = wfGetDB( DB_MASTER );
+ if( $this->getId() ) {
+ $dbw->insert( 'user_groups',
+ array(
+ 'ug_user' => $this->getID(),
+ 'ug_group' => $group,
+ ),
+ __METHOD__,
+ array( 'IGNORE' ) );
+ }
}
-
$this->loadGroups();
$this->mGroups[] = $group;
$this->mRights = User::getGroupPermissions( $this->getEffectiveGroups( true ) );
@@ -2184,17 +2402,26 @@ class User {
/**
* Remove the user from the given group.
* This takes immediate effect.
- * @param $group \string Name of the group to remove
+ * @param $group String Name of the group to remove
*/
- function removeGroup( $group ) {
+ public function removeGroup( $group ) {
$this->load();
- $dbw = wfGetDB( DB_MASTER );
- $dbw->delete( 'user_groups',
- array(
- 'ug_user' => $this->getID(),
- 'ug_group' => $group,
- ), __METHOD__ );
-
+ if( wfRunHooks( 'UserRemoveGroup', array( $this, &$group ) ) ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->delete( 'user_groups',
+ array(
+ 'ug_user' => $this->getID(),
+ 'ug_group' => $group,
+ ), __METHOD__ );
+ // Remember that the user was in this group
+ $dbw->insert( 'user_former_groups',
+ array(
+ 'ufg_user' => $this->getID(),
+ 'ufg_group' => $group,
+ ),
+ __METHOD__,
+ array( 'IGNORE' ) );
+ }
$this->loadGroups();
$this->mGroups = array_diff( $this->mGroups, array( $group ) );
$this->mRights = User::getGroupPermissions( $this->getEffectiveGroups( true ) );
@@ -2204,36 +2431,59 @@ class User {
/**
* Get whether the user is logged in
- * @return \bool True or false
+ * @return Bool
*/
- function isLoggedIn() {
+ public function isLoggedIn() {
return $this->getID() != 0;
}
/**
* Get whether the user is anonymous
- * @return \bool True or false
+ * @return Bool
*/
- function isAnon() {
+ public function isAnon() {
return !$this->isLoggedIn();
}
/**
- * Get whether the user is a bot
- * @return \bool True or false
- * @deprecated
+ * Check if user is allowed to access a feature / make an action
+ *
+ * @internal param \String $varargs permissions to test
+ * @return Boolean: True if user is allowed to perform *any* of the given actions
+ *
+ * @return bool
*/
- function isBot() {
- wfDeprecated( __METHOD__ );
- return $this->isAllowed( 'bot' );
+ public function isAllowedAny( /*...*/ ){
+ $permissions = func_get_args();
+ foreach( $permissions as $permission ){
+ if( $this->isAllowed( $permission ) ){
+ return true;
+ }
+ }
+ return false;
}
/**
- * Check if user is allowed to access a feature / make an action
- * @param $action \string action to be checked
- * @return Boolean: True if action is allowed, else false
+ *
+ * @internal param $varargs string
+ * @return bool True if the user is allowed to perform *all* of the given actions
*/
- function isAllowed( $action = '' ) {
+ public function isAllowedAll( /*...*/ ){
+ $permissions = func_get_args();
+ foreach( $permissions as $permission ){
+ if( !$this->isAllowed( $permission ) ){
+ return false;
+ }
+ }
+ return true;
+ }
+
+ /**
+ * Internal mechanics of testing a permission
+ * @param $action String
+ * @return bool
+ */
+ public function isAllowed( $action = '' ) {
if ( $action === '' ) {
return true; // In the spirit of DWIM
}
@@ -2254,76 +2504,57 @@ class User {
*/
public function useRCPatrol() {
global $wgUseRCPatrol;
- return( $wgUseRCPatrol && ( $this->isAllowed( 'patrol' ) || $this->isAllowed( 'patrolmarks' ) ) );
+ return $wgUseRCPatrol && $this->isAllowedAny( 'patrol', 'patrolmarks' );
}
/**
* Check whether to enable new pages patrol features for this user
- * @return \bool True or false
+ * @return Bool True or false
*/
public function useNPPatrol() {
global $wgUseRCPatrol, $wgUseNPPatrol;
- return( ( $wgUseRCPatrol || $wgUseNPPatrol ) && ( $this->isAllowed( 'patrol' ) || $this->isAllowed( 'patrolmarks' ) ) );
+ return( ( $wgUseRCPatrol || $wgUseNPPatrol ) && ( $this->isAllowedAny( 'patrol', 'patrolmarks' ) ) );
}
/**
- * Get the current skin, loading it if required, and setting a title
- * @param $t Title: the title to use in the skin
- * @return Skin The current skin
- * @todo FIXME : need to check the old failback system [AV]
- */
- function getSkin( $t = null ) {
- if( !$this->mSkin ) {
- global $wgOut;
- $this->mSkin = $this->createSkinObject();
- $this->mSkin->setTitle( $wgOut->getTitle() );
- }
- if ( $t && ( !$this->mSkin->getTitle() || !$t->equals( $this->mSkin->getTitle() ) ) ) {
- $skin = $this->createSkinObject();
- $skin->setTitle( $t );
- return $skin;
+ * Get the WebRequest object to use with this object
+ *
+ * @return WebRequest
+ */
+ public function getRequest() {
+ if ( $this->mRequest ) {
+ return $this->mRequest;
} else {
- return $this->mSkin;
- }
- }
-
- // Creates a Skin object, for getSkin()
- private function createSkinObject() {
- wfProfileIn( __METHOD__ );
-
- global $wgHiddenPrefs;
- if( !in_array( 'skin', $wgHiddenPrefs ) ) {
global $wgRequest;
- # get the user skin
- $userSkin = $this->getOption( 'skin' );
- $userSkin = $wgRequest->getVal( 'useskin', $userSkin );
- } else {
- # if we're not allowing users to override, then use the default
- global $wgDefaultSkin;
- $userSkin = $wgDefaultSkin;
+ return $wgRequest;
}
+ }
- $skin = Skin::newFromKey( $userSkin );
- wfProfileOut( __METHOD__ );
-
- return $skin;
+ /**
+ * Get the current skin, loading it if required
+ * @return Skin The current skin
+ * @todo FIXME: Need to check the old failback system [AV]
+ * @deprecated since 1.18 Use ->getSkin() in the most relevant outputting context you have
+ */
+ public function getSkin() {
+ return RequestContext::getMain()->getSkin();
}
/**
* Check the watched status of an article.
- * @param $title \type{Title} Title of the article to look at
- * @return \bool True if article is watched
+ * @param $title Title of the article to look at
+ * @return Bool
*/
- function isWatched( $title ) {
+ public function isWatched( $title ) {
$wl = WatchedItem::fromUserTitle( $this, $title );
return $wl->isWatched();
}
/**
* Watch an article.
- * @param $title \type{Title} Title of the article to look at
+ * @param $title Title of the article to look at
*/
- function addWatch( $title ) {
+ public function addWatch( $title ) {
$wl = WatchedItem::fromUserTitle( $this, $title );
$wl->addWatch();
$this->invalidateCache();
@@ -2331,22 +2562,30 @@ class User {
/**
* Stop watching an article.
- * @param $title \type{Title} Title of the article to look at
+ * @param $title Title of the article to look at
*/
- function removeWatch( $title ) {
+ public function removeWatch( $title ) {
$wl = WatchedItem::fromUserTitle( $this, $title );
$wl->removeWatch();
$this->invalidateCache();
}
/**
+ * Cleans up watchlist by removing invalid entries from it
+ */
+ public function cleanupWatchlist() {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->delete( 'watchlist', array( 'wl_namespace < 0', 'wl_user' => $this->getId() ), __METHOD__ );
+ }
+
+ /**
* Clear the user's notification timestamp for the given title.
* If e-notif e-mails are on, they will receive notification mails on
* the next change of the page if it's watched etc.
- * @param $title \type{Title} Title of the article to look at
+ * @param $title Title of the article to look at
*/
- function clearNotification( &$title ) {
- global $wgUser, $wgUseEnotif, $wgShowUpdatedMarker;
+ public function clearNotification( &$title ) {
+ global $wgUseEnotif, $wgShowUpdatedMarker;
# Do nothing if the database is locked to writes
if( wfReadOnly() ) {
@@ -2374,13 +2613,11 @@ class User {
// and when it does have to be executed, it can be on a slave
// If this is the user's newtalk page, we always update the timestamp
if( $title->getNamespace() == NS_USER_TALK &&
- $title->getText() == $wgUser->getName() )
+ $title->getText() == $this->getName() )
{
$watched = true;
- } elseif ( $this->getId() == $wgUser->getId() ) {
- $watched = $title->userIsWatching();
} else {
- $watched = true;
+ $watched = $this->isWatched( $title );
}
// If the page is watched by the user (or may be watched), update the timestamp on any
@@ -2403,22 +2640,21 @@ class User {
* Resets all of the given user's page-change notification timestamps.
* If e-notif e-mails are on, they will receive notification mails on
* the next change of any watched page.
- *
- * @param $currentUser \int User ID
*/
- function clearAllNotifications( $currentUser ) {
+ public function clearAllNotifications() {
global $wgUseEnotif, $wgShowUpdatedMarker;
if ( !$wgUseEnotif && !$wgShowUpdatedMarker ) {
$this->setNewtalk( false );
return;
}
- if( $currentUser != 0 ) {
+ $id = $this->getId();
+ if( $id != 0 ) {
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'watchlist',
array( /* SET */
'wl_notificationtimestamp' => null
), array( /* WHERE */
- 'wl_user' => $currentUser
+ 'wl_user' => $id
), __METHOD__
);
# We also need to clear here the "you have new message" notification for the own user_talk page
@@ -2428,10 +2664,9 @@ class User {
/**
* Set this user's options from an encoded string
- * @param $str \string Encoded options to import
- * @private
+ * @param $str String Encoded options to import
*/
- function decodeOptions( $str ) {
+ private function decodeOptions( $str ) {
if( !$str )
return;
@@ -2454,19 +2689,18 @@ class User {
/**
* Set a cookie on the user's client. Wrapper for
* WebResponse::setCookie
- * @param $name \string Name of the cookie to set
- * @param $value \string Value to set
- * @param $exp \int Expiration time, as a UNIX time value;
+ * @param $name String Name of the cookie to set
+ * @param $value String Value to set
+ * @param $exp Int Expiration time, as a UNIX time value;
* if 0 or not specified, use the default $wgCookieExpiration
*/
protected function setCookie( $name, $value, $exp = 0 ) {
- global $wgRequest;
- $wgRequest->response()->setcookie( $name, $value, $exp );
+ $this->getRequest()->response()->setcookie( $name, $value, $exp );
}
/**
* Clear a cookie on the user's client
- * @param $name \string Name of the cookie to clear
+ * @param $name String Name of the cookie to clear
*/
protected function clearCookie( $name ) {
$this->setCookie( $name, '', time() - 86400 );
@@ -2474,8 +2708,15 @@ class User {
/**
* Set the default cookies for this session on the user's client.
+ *
+ * @param $request WebRequest object to use; $wgRequest will be used if null
+ * is passed.
*/
- function setCookies() {
+ public function setCookies( $request = null ) {
+ if ( $request === null ) {
+ $request = $this->getRequest();
+ }
+
$this->load();
if ( 0 == $this->mId ) return;
$session = array(
@@ -2494,9 +2735,9 @@ class User {
}
wfRunHooks( 'UserSetCookies', array( $this, &$session, &$cookies ) );
- #check for null, since the hook could cause a null value
- if ( !is_null( $session ) && isset( $_SESSION ) ){
- $_SESSION = $session + $_SESSION;
+
+ foreach ( $session as $name => $value ) {
+ $request->setSessionData( $name, $value );
}
foreach ( $cookies as $name => $value ) {
if ( $value === false ) {
@@ -2510,7 +2751,7 @@ class User {
/**
* Log this user out.
*/
- function logout() {
+ public function logout() {
if( wfRunHooks( 'UserLogout', array( &$this ) ) ) {
$this->doLogout();
}
@@ -2518,13 +2759,12 @@ class User {
/**
* Clear the user's cookies and session, and reset the instance cache.
- * @private
* @see logout()
*/
- function doLogout() {
+ public function doLogout() {
$this->clearInstanceCache( 'defaults' );
- $_SESSION['wsUserID'] = 0;
+ $this->getRequest()->setSessionData( 'wsUserID', 0 );
$this->clearCookie( 'UserID' );
$this->clearCookie( 'Token' );
@@ -2537,7 +2777,7 @@ class User {
* Save this user's settings into the database.
* @todo Only rarely do all these fields need to be set!
*/
- function saveSettings() {
+ public function saveSettings() {
$this->load();
if ( wfReadOnly() ) { return; }
if ( 0 == $this->mId ) { return; }
@@ -2573,8 +2813,9 @@ class User {
/**
* If only this user's username is known, and it exists, return the user ID.
+ * @return Int
*/
- function idForName() {
+ public function idForName() {
$s = trim( $this->getName() );
if ( $s === '' ) return 0;
@@ -2589,10 +2830,10 @@ class User {
/**
* Add a user to the database, return the user object
*
- * @param $name \string Username to add
- * @param $params \type{\arrayof{\string}} Non-default parameters to save to the database:
- * - password The user's password. Password logins will be disabled if this is omitted.
- * - newpassword A temporary password mailed to the user
+ * @param $name String Username to add
+ * @param $params Array of Strings Non-default parameters to save to the database as user_* fields:
+ * - password The user's password hash. Password logins will be disabled if this is omitted.
+ * - newpassword Hash for a temporary password that has been mailed to the user
* - email The user's email address
* - email_authenticated The email authentication timestamp
* - real_name The user's real name
@@ -2600,9 +2841,9 @@ class User {
* - token Random authentication token. Do not set.
* - registration Registration timestamp. Do not set.
*
- * @return \type{User} A new User object, or null if the username already exists
+ * @return User object, or null if the username already exists
*/
- static function createNew( $name, $params = array() ) {
+ public static function createNew( $name, $params = array() ) {
$user = new User;
$user->load();
if ( isset( $params['options'] ) ) {
@@ -2641,7 +2882,7 @@ class User {
/**
* Add this existing user object to the database
*/
- function addToDatabase() {
+ public function addToDatabase() {
$this->load();
$dbw = wfGetDB( DB_MASTER );
$seqVal = $dbw->nextSequenceValue( 'user_user_id_seq' );
@@ -2670,22 +2911,35 @@ class User {
}
/**
- * If this (non-anonymous) user is blocked, block any IP address
- * they've successfully logged in from.
+ * If this user is logged-in and blocked,
+ * block any IP address they've successfully logged in from.
+ * @return bool A block was spread
*/
- function spreadBlock() {
+ public function spreadAnyEditBlock() {
+ if ( $this->isLoggedIn() && $this->isBlocked() ) {
+ return $this->spreadBlock();
+ }
+ return false;
+ }
+
+ /**
+ * If this (non-anonymous) user is blocked,
+ * block the IP address they've successfully logged in from.
+ * @return bool A block was spread
+ */
+ protected function spreadBlock() {
wfDebug( __METHOD__ . "()\n" );
$this->load();
if ( $this->mId == 0 ) {
- return;
+ return false;
}
- $userblock = Block::newFromDB( '', $this->mId );
+ $userblock = Block::newFromTarget( $this->getName() );
if ( !$userblock ) {
- return;
+ return false;
}
- $userblock->doAutoblock( wfGetIP() );
+ return (bool)$userblock->doAutoblock( $this->getRequest()->getIP() );
}
/**
@@ -2699,10 +2953,10 @@ class User {
* which will give them a chance to modify this key based on their own
* settings.
*
- * @deprecated use the ParserOptions object to get the relevant options
- * @return \string Page rendering hash
+ * @deprecated since 1.17 use the ParserOptions object to get the relevant options
+ * @return String Page rendering hash
*/
- function getPageRenderingHash() {
+ public function getPageRenderingHash() {
global $wgUseDynamicDates, $wgRenderHashAppend, $wgLang, $wgContLang;
if( $this->mHash ){
return $this->mHash;
@@ -2742,25 +2996,37 @@ class User {
/**
* Get whether the user is explicitly blocked from account creation.
- * @return \bool True if blocked
+ * @return Bool|Block
*/
- function isBlockedFromCreateAccount() {
+ public function isBlockedFromCreateAccount() {
$this->getBlockedStatus();
- return $this->mBlock && $this->mBlock->mCreateAccount;
+ if( $this->mBlock && $this->mBlock->prevents( 'createaccount' ) ){
+ return $this->mBlock;
+ }
+
+ # 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 ){
+ $this->mBlockedFromCreateAccount = Block::newFromTarget( null, wfGetIP() );
+ }
+ return $this->mBlockedFromCreateAccount instanceof Block && $this->mBlockedFromCreateAccount->prevents( 'createaccount' )
+ ? $this->mBlockedFromCreateAccount
+ : false;
}
/**
* Get whether the user is blocked from using Special:Emailuser.
- * @return Boolean: True if blocked
+ * @return Bool
*/
- function isBlockedFromEmailuser() {
+ public function isBlockedFromEmailuser() {
$this->getBlockedStatus();
- return $this->mBlock && $this->mBlock->mBlockEmail;
+ return $this->mBlock && $this->mBlock->prevents( 'sendemail' );
}
/**
* Get whether the user is allowed to create an account.
- * @return Boolean: True if allowed
+ * @return Bool
*/
function isAllowedToCreateAccount() {
return $this->isAllowed( 'createaccount' ) && !$this->isBlockedFromCreateAccount();
@@ -2771,7 +3037,7 @@ class User {
*
* @return Title: User's personal page title
*/
- function getUserPage() {
+ public function getUserPage() {
return Title::makeTitle( NS_USER, $this->getName() );
}
@@ -2780,33 +3046,17 @@ class User {
*
* @return Title: User's talk page title
*/
- function getTalkPage() {
+ public function getTalkPage() {
$title = $this->getUserPage();
return $title->getTalkPage();
}
/**
- * Get the maximum valid user ID.
- * @return Integer: User ID
- * @static
- */
- function getMaxID() {
- static $res; // cache
-
- if ( isset( $res ) ) {
- return $res;
- } else {
- $dbr = wfGetDB( DB_SLAVE );
- return $res = $dbr->selectField( 'user', 'max(user_id)', false, __METHOD__ );
- }
- }
-
- /**
* Determine whether the user is a newbie. Newbies are either
* anonymous IPs, or the most recently created accounts.
- * @return Boolean: True if the user is a newbie
+ * @return Bool
*/
- function isNewbie() {
+ public function isNewbie() {
return !$this->isAllowed( 'autoconfirmed' );
}
@@ -2815,8 +3065,8 @@ class User {
* @param $password String: user password.
* @return Boolean: True if the given password is correct, otherwise False.
*/
- function checkPassword( $password ) {
- global $wgAuth;
+ public function checkPassword( $password ) {
+ global $wgAuth, $wgLegacyEncoding;
$this->load();
// Even though we stop people from creating passwords that
@@ -2839,11 +3089,13 @@ class User {
}
if ( self::comparePasswords( $this->mPassword, $password, $this->mId ) ) {
return true;
- } elseif ( function_exists( 'iconv' ) ) {
+ } elseif ( $wgLegacyEncoding ) {
# Some wikis were converted from ISO 8859-1 to UTF-8, the passwords can't be converted
# Check for this with iconv
$cp1252Password = iconv( 'UTF-8', 'WINDOWS-1252//TRANSLIT', $password );
- if ( self::comparePasswords( $this->mPassword, $cp1252Password, $this->mId ) ) {
+ if ( $cp1252Password != $password &&
+ self::comparePasswords( $this->mPassword, $cp1252Password, $this->mId ) )
+ {
return true;
}
}
@@ -2853,10 +3105,15 @@ class User {
/**
* Check if the given clear-text password matches the temporary password
* sent by e-mail for password reset operations.
+ *
+ * @param $plaintext string
+ *
* @return Boolean: True if matches, false otherwise
*/
- function checkTemporaryPassword( $plaintext ) {
+ public function checkTemporaryPassword( $plaintext ) {
global $wgNewPasswordExpiry;
+
+ $this->load();
if( self::comparePasswords( $this->mNewpassword, $plaintext, $this->getId() ) ) {
if ( is_null( $this->mNewpassTime ) ) {
return true;
@@ -2874,18 +3131,22 @@ class User {
* login credentials aren't being hijacked with a foreign form
* submission.
*
- * @param $salt \types{\string,\arrayof{\string}} Optional function-specific data for hashing
- * @return \string The new edit token
+ * @param $salt String|Array of Strings Optional function-specific data for hashing
+ * @param $request WebRequest object to use or null to use $wgRequest
+ * @return String The new edit token
*/
- function editToken( $salt = '' ) {
+ public function editToken( $salt = '', $request = null ) {
+ if ( $request == null ) {
+ $request = $this->getRequest();
+ }
+
if ( $this->isAnon() ) {
return EDIT_TOKEN_SUFFIX;
} else {
- if( !isset( $_SESSION['wsEditToken'] ) ) {
+ $token = $request->getSessionData( 'wsEditToken' );
+ if ( $token === null ) {
$token = self::generateToken();
- $_SESSION['wsEditToken'] = $token;
- } else {
- $token = $_SESSION['wsEditToken'];
+ $request->setSessionData( 'wsEditToken', $token );
}
if( is_array( $salt ) ) {
$salt = implode( '|', $salt );
@@ -2897,8 +3158,8 @@ class User {
/**
* Generate a looking random token for various uses.
*
- * @param $salt \string Optional salt value
- * @return \string The new random token
+ * @param $salt String Optional salt value
+ * @return String The new random token
*/
public static function generateToken( $salt = '' ) {
$token = dechex( mt_rand() ) . dechex( mt_rand() );
@@ -2911,12 +3172,13 @@ class User {
* user's own login session, not a form submission from a third-party
* site.
*
- * @param $val \string Input value to compare
- * @param $salt \string Optional function-specific data for hashing
+ * @param $val String Input value to compare
+ * @param $salt String Optional function-specific data for hashing
+ * @param $request WebRequest object to use or null to use $wgRequest
* @return Boolean: Whether the token matches
*/
- function matchEditToken( $val, $salt = '' ) {
- $sessionToken = $this->editToken( $salt );
+ public function matchEditToken( $val, $salt = '', $request = null ) {
+ $sessionToken = $this->editToken( $salt, $request );
if ( $val != $sessionToken ) {
wfDebug( "User::matchEditToken: broken session data\n" );
}
@@ -2927,12 +3189,13 @@ class User {
* Check given value against the token value stored in the session,
* ignoring the suffix.
*
- * @param $val \string Input value to compare
- * @param $salt \string Optional function-specific data for hashing
+ * @param $val String Input value to compare
+ * @param $salt String Optional function-specific data for hashing
+ * @param $request WebRequest object to use or null to use $wgRequest
* @return Boolean: Whether the token matches
*/
- function matchEditTokenNoSuffix( $val, $salt = '' ) {
- $sessionToken = $this->editToken( $salt );
+ public function matchEditTokenNoSuffix( $val, $salt = '', $request = null ) {
+ $sessionToken = $this->editToken( $salt, $request );
return substr( $sessionToken, 0, 32 ) == substr( $val, 0, 32 );
}
@@ -2943,7 +3206,7 @@ class User {
* @param $type String: message to send, either "created", "changed" or "set"
* @return Status object
*/
- function sendConfirmationMail( $type = 'created' ) {
+ public function sendConfirmationMail( $type = 'created' ) {
global $wgLang;
$expiration = null; // gets passed-by-ref and defined in next line.
$token = $this->confirmationToken( $expiration );
@@ -2974,13 +3237,13 @@ class User {
* Send an e-mail to this user's account. Does not check for
* confirmed status or validity.
*
- * @param $subject \string Message subject
- * @param $body \string Message body
- * @param $from \string Optional From address; if unspecified, default $wgPasswordSender will be used
- * @param $replyto \string Reply-To address
- * @return Status object
+ * @param $subject String Message subject
+ * @param $body String Message body
+ * @param $from String Optional From address; if unspecified, default $wgPasswordSender will be used
+ * @param $replyto String Reply-To address
+ * @return Status
*/
- function sendMail( $subject, $body, $from = null, $replyto = null ) {
+ public function sendMail( $subject, $body, $from = null, $replyto = null ) {
if( is_null( $from ) ) {
global $wgPasswordSender, $wgPasswordSenderName;
$sender = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
@@ -2999,13 +3262,13 @@ class User {
* @note Call saveSettings() after calling this function to commit
* this change to the database.
*
- * @param[out] &$expiration \mixed Accepts the expiration time
- * @return \string New token
- * @private
+ * @param &$expiration \mixed Accepts the expiration time
+ * @return String New token
*/
- function confirmationToken( &$expiration ) {
+ private function confirmationToken( &$expiration ) {
+ global $wgUserEmailConfirmationTokenExpiry;
$now = time();
- $expires = $now + 7 * 24 * 60 * 60;
+ $expires = $now + $wgUserEmailConfirmationTokenExpiry;
$expiration = wfTimestamp( TS_MW, $expires );
$token = self::generateToken( $this->mId . $this->mEmail . $expires );
$hash = md5( $token );
@@ -3017,27 +3280,25 @@ class User {
/**
* Return a URL the user can use to confirm their email address.
- * @param $token \string Accepts the email confirmation token
- * @return \string New token URL
- * @private
+ * @param $token String Accepts the email confirmation token
+ * @return String New token URL
*/
- function confirmationTokenUrl( $token ) {
+ private function confirmationTokenUrl( $token ) {
return $this->getTokenUrl( 'ConfirmEmail', $token );
}
/**
* Return a URL the user can use to invalidate their email address.
- * @param $token \string Accepts the email confirmation token
- * @return \string New token URL
- * @private
+ * @param $token String Accepts the email confirmation token
+ * @return String New token URL
*/
- function invalidationTokenUrl( $token ) {
+ private function invalidationTokenUrl( $token ) {
return $this->getTokenUrl( 'Invalidateemail', $token );
}
/**
* Internal function to format the e-mail validation/invalidation URLs.
- * This uses $wgArticlePath directly as a quickie hack to use the
+ * This uses a quickie hack to use the
* hardcoded English names of the Special: pages, for ASCII safety.
*
* @note Since these URLs get dropped directly into emails, using the
@@ -3045,25 +3306,24 @@ class User {
* also sometimes can get corrupted in some browsers/mailers
* (bug 6957 with Gmail and Internet Explorer).
*
- * @param $page \string Special page
- * @param $token \string Token
- * @return \string Formatted URL
+ * @param $page String Special page
+ * @param $token String Token
+ * @return String Formatted URL
*/
protected function getTokenUrl( $page, $token ) {
- global $wgArticlePath;
- return wfExpandUrl(
- str_replace(
- '$1',
- "Special:$page/$token",
- $wgArticlePath ) );
+ // Hack to bypass localization of 'Special:'
+ $title = Title::makeTitle( NS_MAIN, "Special:$page/$token" );
+ return $title->getCanonicalUrl();
}
/**
* Mark the e-mail address confirmed.
*
* @note Call saveSettings() after calling this function to commit the change.
+ *
+ * @return true
*/
- function confirmEmail() {
+ public function confirmEmail() {
$this->setEmailAuthenticationTimestamp( wfTimestampNow() );
wfRunHooks( 'ConfirmEmailComplete', array( $this ) );
return true;
@@ -3074,6 +3334,7 @@ class User {
* address if it was already confirmed.
*
* @note Call saveSettings() after calling this function to commit the change.
+ * @return true
*/
function invalidateEmail() {
$this->load();
@@ -3086,7 +3347,7 @@ class User {
/**
* Set the e-mail authentication timestamp.
- * @param $timestamp \string TS_MW timestamp
+ * @param $timestamp String TS_MW timestamp
*/
function setEmailAuthenticationTimestamp( $timestamp ) {
$this->load();
@@ -3097,9 +3358,9 @@ class User {
/**
* Is this user allowed to send e-mails within limits of current
* site configuration?
- * @return Boolean: True if allowed
+ * @return Bool
*/
- function canSendEmail() {
+ public function canSendEmail() {
global $wgEnableEmail, $wgEnableUserEmail;
if( !$wgEnableEmail || !$wgEnableUserEmail || !$this->isAllowed( 'sendemail' ) ) {
return false;
@@ -3112,9 +3373,9 @@ class User {
/**
* Is this user allowed to receive e-mails within limits of current
* site configuration?
- * @return Boolean: True if allowed
+ * @return Bool
*/
- function canReceiveEmail() {
+ public function canReceiveEmail() {
return $this->isEmailConfirmed() && !$this->getOption( 'disablemail' );
}
@@ -3126,19 +3387,22 @@ class User {
* confirmed their address by returning a code or using a password
* sent to the address from the wiki.
*
- * @return Boolean: True if confirmed
+ * @return Bool
*/
- function isEmailConfirmed() {
+ public function isEmailConfirmed() {
global $wgEmailAuthentication;
$this->load();
$confirmed = true;
if( wfRunHooks( 'EmailConfirmed', array( &$this, &$confirmed ) ) ) {
- if( $this->isAnon() )
+ if( $this->isAnon() ) {
return false;
- if( !self::isValidEmailAddr( $this->mEmail ) )
+ }
+ if( !Sanitizer::validateEmail( $this->mEmail ) ) {
return false;
- if( $wgEmailAuthentication && !$this->getEmailAuthenticationTimestamp() )
+ }
+ if( $wgEmailAuthentication && !$this->getEmailAuthenticationTimestamp() ) {
return false;
+ }
return true;
} else {
return $confirmed;
@@ -3147,9 +3411,9 @@ class User {
/**
* Check whether there is an outstanding request for e-mail confirmation.
- * @return Boolean: True if pending
+ * @return Bool
*/
- function isEmailConfirmationPending() {
+ public function isEmailConfirmationPending() {
global $wgEmailAuthentication;
return $wgEmailAuthentication &&
!$this->isEmailConfirmed() &&
@@ -3160,43 +3424,52 @@ class User {
/**
* Get the timestamp of account creation.
*
- * @return \types{\string,\bool} string Timestamp of account creation, or false for
- * non-existent/anonymous user accounts.
+ * @return String|Bool Timestamp of account creation, or false for
+ * non-existent/anonymous user accounts.
*/
public function getRegistration() {
- return $this->getId() > 0
- ? $this->mRegistration
- : false;
+ if ( $this->isAnon() ) {
+ return false;
+ }
+ $this->load();
+ return $this->mRegistration;
}
/**
* Get the timestamp of the first edit
*
- * @return \types{\string,\bool} string Timestamp of first edit, or false for
- * non-existent/anonymous user accounts.
+ * @return String|Bool Timestamp of first edit, or false for
+ * non-existent/anonymous user accounts.
*/
public function getFirstEditTimestamp() {
- if( $this->getId() == 0 ) return false; // anons
+ if( $this->getId() == 0 ) {
+ return false; // anons
+ }
$dbr = wfGetDB( DB_SLAVE );
$time = $dbr->selectField( 'revision', 'rev_timestamp',
array( 'rev_user' => $this->getId() ),
__METHOD__,
array( 'ORDER BY' => 'rev_timestamp ASC' )
);
- if( !$time ) return false; // no edits
+ if( !$time ) {
+ return false; // no edits
+ }
return wfTimestamp( TS_MW, $time );
}
/**
* Get the permissions associated with a given list of groups
*
- * @param $groups \type{\arrayof{\string}} List of internal group names
- * @return \type{\arrayof{\string}} List of permission key names for given groups combined
+ * @param $groups Array of Strings List of internal group names
+ * @param $ns int
+ *
+ * @return Array of Strings List of permission key names for given groups combined
*/
- static function getGroupPermissions( $groups ) {
+ public static function getGroupPermissions( $groups ) {
global $wgGroupPermissions, $wgRevokePermissions;
$rights = array();
- // grant every granted permission first
+
+ // Grant every granted permission first
foreach( $groups as $group ) {
if( isset( $wgGroupPermissions[$group] ) ) {
$rights = array_merge( $rights,
@@ -3204,7 +3477,8 @@ class User {
array_keys( array_filter( $wgGroupPermissions[$group] ) ) );
}
}
- // now revoke the revoked permissions
+
+ // Revoke the revoked permissions
foreach( $groups as $group ) {
if( isset( $wgRevokePermissions[$group] ) ) {
$rights = array_diff( $rights,
@@ -3217,10 +3491,13 @@ class User {
/**
* Get all the groups who have a given permission
*
- * @param $role \string Role to check
- * @return \type{\arrayof{\string}} List of internal group names with the given permission
+ * @param $role String Role to check
+ * @param $ns int
+ *
+ *
+ * @return Array of Strings List of internal group names with the given permission
*/
- static function getGroupsWithPermission( $role ) {
+ public static function getGroupsWithPermission( $role ) {
global $wgGroupPermissions;
$allowedGroups = array();
foreach ( $wgGroupPermissions as $group => $rights ) {
@@ -3234,29 +3511,23 @@ class User {
/**
* Get the localized descriptive name for a group, if it exists
*
- * @param $group \string Internal group name
- * @return \string Localized descriptive group name
+ * @param $group String Internal group name
+ * @return String Localized descriptive group name
*/
- static function getGroupName( $group ) {
- $key = "group-$group";
- $name = wfMsg( $key );
- return $name == '' || wfEmptyMsg( $key, $name )
- ? $group
- : $name;
+ public static function getGroupName( $group ) {
+ $msg = wfMessage( "group-$group" );
+ return $msg->isBlank() ? $group : $msg->text();
}
/**
* Get the localized descriptive name for a member of a group, if it exists
*
- * @param $group \string Internal group name
- * @return \string Localized name for group member
+ * @param $group String Internal group name
+ * @return String Localized name for group member
*/
- static function getGroupMember( $group ) {
- $key = "group-$group-member";
- $name = wfMsg( $key );
- return $name == '' || wfEmptyMsg( $key, $name )
- ? $group
- : $name;
+ public static function getGroupMember( $group ) {
+ $msg = wfMessage( "group-$group-member" );
+ return $msg->isBlank() ? $group : $msg->text();
}
/**
@@ -3265,7 +3536,7 @@ class User {
* are not included, as they are defined automatically, not in the database.
* @return Array of internal group names
*/
- static function getAllGroups() {
+ public static function getAllGroups() {
global $wgGroupPermissions, $wgRevokePermissions;
return array_diff(
array_merge( array_keys( $wgGroupPermissions ), array_keys( $wgRevokePermissions ) ),
@@ -3277,7 +3548,7 @@ class User {
* Get a list of all available permissions.
* @return Array of permission names
*/
- static function getAllRights() {
+ public static function getAllRights() {
if ( self::$mAllRights === false ) {
global $wgAvailableRights;
if ( count( $wgAvailableRights ) ) {
@@ -3292,7 +3563,7 @@ class User {
/**
* Get a list of implicit groups
- * @return \type{\arrayof{\string}} Array of internal group names
+ * @return Array of Strings Array of internal group names
*/
public static function getImplicitGroups() {
global $wgImplicitGroups;
@@ -3304,13 +3575,13 @@ class User {
/**
* Get the title of a page describing a particular group
*
- * @param $group \string Internal group name
- * @return \types{\type{Title},\bool} Title of the page if it exists, false otherwise
+ * @param $group String Internal group name
+ * @return Title|Bool Title of the page if it exists, false otherwise
*/
- static function getGroupPage( $group ) {
- $page = wfMsgForContent( 'grouppage-' . $group );
- if( !wfEmptyMsg( 'grouppage-' . $group, $page ) ) {
- $title = Title::newFromText( $page );
+ public static function getGroupPage( $group ) {
+ $msg = wfMessage( 'grouppage-' . $group )->inContentLanguage();
+ if( $msg->exists() ) {
+ $title = Title::newFromText( $msg->text() );
if( is_object( $title ) )
return $title;
}
@@ -3321,19 +3592,17 @@ class User {
* Create a link to the group in HTML, if available;
* else return the group name.
*
- * @param $group \string Internal name of the group
- * @param $text \string The text of the link
- * @return \string HTML link to the group
+ * @param $group String Internal name of the group
+ * @param $text String The text of the link
+ * @return String HTML link to the group
*/
- static function makeGroupLinkHTML( $group, $text = '' ) {
+ public static function makeGroupLinkHTML( $group, $text = '' ) {
if( $text == '' ) {
$text = self::getGroupName( $group );
}
$title = self::getGroupPage( $group );
if( $title ) {
- global $wgUser;
- $sk = $wgUser->getSkin();
- return $sk->link( $title, htmlspecialchars( $text ) );
+ return Linker::link( $title, htmlspecialchars( $text ) );
} else {
return $text;
}
@@ -3343,11 +3612,11 @@ class User {
* Create a link to the group in Wikitext, if available;
* else return the group name.
*
- * @param $group \string Internal name of the group
- * @param $text \string The text of the link
- * @return \string Wikilink to the group
+ * @param $group String Internal name of the group
+ * @param $text String The text of the link
+ * @return String Wikilink to the group
*/
- static function makeGroupLinkWiki( $group, $text = '' ) {
+ public static function makeGroupLinkWiki( $group, $text = '' ) {
if( $text == '' ) {
$text = self::getGroupName( $group );
}
@@ -3365,11 +3634,11 @@ class User {
*
* @param $group String: the group to check for whether it can add/remove
* @return Array array( 'add' => array( addablegroups ),
- * 'remove' => array( removablegroups ),
- * 'add-self' => array( addablegroups to self),
- * 'remove-self' => array( removable groups from self) )
+ * 'remove' => array( removablegroups ),
+ * 'add-self' => array( addablegroups to self),
+ * 'remove-self' => array( removable groups from self) )
*/
- static function changeableByGroup( $group ) {
+ public static function changeableByGroup( $group ) {
global $wgAddGroups, $wgRemoveGroups, $wgGroupsAddToSelf, $wgGroupsRemoveFromSelf;
$groups = array( 'add' => array(), 'remove' => array(), 'add-self' => array(), 'remove-self' => array() );
@@ -3433,7 +3702,7 @@ class User {
* 'add-self' => array( addablegroups to self),
* 'remove-self' => array( removable groups from self) )
*/
- function changeableGroups() {
+ public function changeableGroups() {
if( $this->isAllowed( 'userrights' ) ) {
// This group gives the right to modify everything (reverse-
// compatibility with old "userrights lets you change
@@ -3473,7 +3742,7 @@ class User {
* Increment the user's edit-count field.
* Will have no effect for anonymous users.
*/
- function incEditCount() {
+ public function incEditCount() {
if( !$this->isAnon() ) {
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'user',
@@ -3516,25 +3785,23 @@ class User {
/**
* Get the description of a given right
*
- * @param $right \string Right to query
- * @return \string Localized description of the right
+ * @param $right String Right to query
+ * @return String Localized description of the right
*/
- static function getRightDescription( $right ) {
+ public static function getRightDescription( $right ) {
$key = "right-$right";
- $name = wfMsg( $key );
- return $name == '' || wfEmptyMsg( $key, $name )
- ? $right
- : $name;
+ $msg = wfMessage( $key );
+ return $msg->isBlank() ? $right : $msg->text();
}
/**
* Make an old-style password hash
*
- * @param $password \string Plain-text password
- * @param $userId \string User ID
- * @return \string Password hash
+ * @param $password String Plain-text password
+ * @param $userId String User ID
+ * @return String Password hash
*/
- static function oldCrypt( $password, $userId ) {
+ public static function oldCrypt( $password, $userId ) {
global $wgPasswordSalt;
if ( $wgPasswordSalt ) {
return md5( $userId . '-' . md5( $password ) );
@@ -3546,12 +3813,13 @@ class User {
/**
* Make a new-style password hash
*
- * @param $password \string Plain-text password
- * @param $salt \string Optional salt, may be random or the user ID.
+ * @param $password String Plain-text password
+ * @param bool|string $salt Optional salt, may be random or the user ID.
+
* If unspecified or false, will generate one automatically
- * @return \string Password hash
+ * @return String Password hash
*/
- static function crypt( $password, $salt = false ) {
+ public static function crypt( $password, $salt = false ) {
global $wgPasswordSalt;
$hash = '';
@@ -3573,12 +3841,13 @@ class User {
* Compare a password hash with a plain-text password. Requires the user
* ID if there's a chance that the hash is an old-style hash.
*
- * @param $hash \string Password hash
- * @param $password \string Plain-text password to compare
- * @param $userId \string User ID for old-style password salt
- * @return Boolean:
+ * @param $hash String Password hash
+ * @param $password String Plain-text password to compare
+ * @param $userId String|bool User ID for old-style password salt
+ *
+ * @return Boolean
*/
- static function comparePasswords( $hash, $password, $userId = false ) {
+ public static function comparePasswords( $hash, $password, $userId = false ) {
$type = substr( $hash, 0, 3 );
$result = false;
@@ -3604,6 +3873,8 @@ class User {
*
* @param $byEmail Boolean: account made by email?
* @param $reason String: user supplied reason
+ *
+ * @return true
*/
public function addNewUserLogEntry( $byEmail = false, $reason = '' ) {
global $wgUser, $wgContLang, $wgNewUserLog;
@@ -3637,10 +3908,12 @@ class User {
/**
* Add an autocreate newuser log entry for this user
* Used by things like CentralAuth and perhaps other authplugins.
+ *
+ * @return true
*/
public function addNewUserLogEntryAutoCreate() {
- global $wgNewUserLog, $wgLogAutocreatedAccounts;
- if( !$wgNewUserLog || !$wgLogAutocreatedAccounts ) {
+ global $wgNewUserLog;
+ if( !$wgNewUserLog ) {
return true; // disabled
}
$log = new LogPage( 'newusers', false );
@@ -3648,6 +3921,9 @@ class User {
return true;
}
+ /**
+ * @todo document
+ */
protected function loadOptions() {
$this->load();
if ( $this->mOptionsLoaded || !$this->getId() )
@@ -3684,6 +3960,9 @@ class User {
wfRunHooks( 'UserLoadOptions', array( $this, &$this->mOptions ) );
}
+ /**
+ * @todo document
+ */
protected function saveOptions() {
global $wgAllowPrefChange;
@@ -3698,8 +3977,9 @@ class User {
// Allow hooks to abort, for instance to save to a global profile.
// Reset options to default state before saving.
- if( !wfRunHooks( 'UserSaveOptions', array( $this, &$saveOptions ) ) )
+ if( !wfRunHooks( 'UserSaveOptions', array( $this, &$saveOptions ) ) ) {
return;
+ }
foreach( $saveOptions as $key => $value ) {
# Don't bother storing default values
@@ -3747,6 +4027,8 @@ class User {
* actually just returns array() unconditionally at the moment. May as
* well keep it around for when the browser bugs get fixed, though.
*
+ * @todo FIXME: This does not belong here; put it in Html or Linker or somewhere
+ *
* @return array Array of HTML attributes suitable for feeding to
* Html::element(), directly or indirectly. (Don't feed to Xml::*()!
* That will potentially output invalid XHTML 1.0 Transitional, and will
@@ -3762,7 +4044,7 @@ class User {
# Note that the pattern requirement will always be satisfied if the
# input is empty, so we need required in all cases.
#
- # FIXME (bug 23769): This needs to not claim the password is required
+ # @todo FIXME: Bug 23769: This needs to not claim the password is required
# if e-mail confirmation is being used. Since HTML5 input validation
# is b0rked anyway in some browsers, just return nothing. When it's
# re-enabled, fix this code to not output required for e-mail
@@ -3786,92 +4068,4 @@ class User {
return $ret;
}
-
- /**
- * Format the user message using a hook, a template, or, failing these, a static format.
- * @param $subject String the subject of the message
- * @param $text String the content of the message
- * @param $signature String the signature, if provided.
- */
- static protected function formatUserMessage( $subject, $text, $signature ) {
- if ( wfRunHooks( 'FormatUserMessage',
- array( $subject, &$text, $signature ) ) ) {
-
- $signature = empty($signature) ? "~~~~~" : "{$signature} ~~~~~";
-
- $template = Title::newFromText( wfMsgForContent( 'usermessage-template' ) );
- if ( !$template
- || $template->getNamespace() !== NS_TEMPLATE
- || !$template->exists() ) {
- $text = "\n== $subject ==\n\n$text\n\n-- $signature";
- } else {
- $text = '{{'. $template->getText()
- . " | subject=$subject | body=$text | signature=$signature }}";
- }
- }
-
- return $text;
- }
-
- /**
- * Leave a user a message
- * @param $subject String the subject of the message
- * @param $text String the message to leave
- * @param $signature String Text to leave in the signature
- * @param $summary String the summary for this change, defaults to
- * "Leave system message."
- * @param $editor User The user leaving the message, defaults to
- * "{{MediaWiki:usermessage-editor}}"
- * @param $flags Int default edit flags
- *
- * @return boolean true if it was successful
- */
- public function leaveUserMessage( $subject, $text, $signature = "",
- $summary = null, $editor = null, $flags = 0 ) {
- if ( !isset( $summary ) ) {
- $summary = wfMsgForContent( 'usermessage-summary' );
- }
-
- if ( !isset( $editor ) ) {
- $editor = User::newFromName( wfMsgForContent( 'usermessage-editor' ) );
- if ( !$editor->isLoggedIn() ) {
- $editor->addToDatabase();
- }
- }
-
- $article = new Article( $this->getTalkPage() );
- wfRunHooks( 'SetupUserMessageArticle',
- array( $this, &$article, $subject, $text, $signature, $summary, $editor ) );
-
-
- $text = self::formatUserMessage( $subject, $text, $signature );
- $flags = $article->checkFlags( $flags );
-
- if ( $flags & EDIT_UPDATE ) {
- $text = $article->getContent() . $text;
- }
-
- $dbw = wfGetDB( DB_MASTER );
- $dbw->begin();
-
- try {
- $status = $article->doEdit( $text, $summary, $flags, false, $editor );
- } catch ( DBQueryError $e ) {
- $status = Status::newFatal("DB Error");
- }
-
- if ( $status->isGood() ) {
- // Set newtalk with the right user ID
- $this->setNewtalk( true );
- wfRunHooks( 'AfterUserMessage',
- array( $this, $article, $summary, $text, $signature, $summary, $editor ) );
- $dbw->commit();
- } else {
- // The article was concurrently created
- wfDebug( __METHOD__ . ": Error ".$status->getWikiText() );
- $dbw->rollback();
- }
-
- return $status->isGood();
- }
}
diff --git a/includes/UserArray.php b/includes/UserArray.php
index d48a4440..6cce48c0 100644
--- a/includes/UserArray.php
+++ b/includes/UserArray.php
@@ -1,6 +1,10 @@
<?php
abstract class UserArray implements Iterator {
+ /**
+ * @param $res ResultWrapper
+ * @return UserArrayFromResult
+ */
static function newFromResult( $res ) {
$userArray = null;
if ( !wfRunHooks( 'UserArrayFromResult', array( &$userArray, $res ) ) ) {
@@ -12,33 +16,52 @@ abstract class UserArray implements Iterator {
return $userArray;
}
+ /**
+ * @param $ids array
+ * @return UserArrayFromResult
+ */
static function newFromIDs( $ids ) {
$ids = array_map( 'intval', (array)$ids ); // paranoia
- if ( !$ids )
+ if ( !$ids ) {
// Database::select() doesn't like empty arrays
return new ArrayIterator(array());
+ }
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( 'user', '*', array( 'user_id' => $ids ),
__METHOD__ );
return self::newFromResult( $res );
}
+ /**
+ * @param $res
+ * @return UserArrayFromResult
+ */
protected static function newFromResult_internal( $res ) {
- $userArray = new UserArrayFromResult( $res );
- return $userArray;
+ return new UserArrayFromResult( $res );
}
}
class UserArrayFromResult extends UserArray {
+
+ /**
+ * @var ResultWrapper
+ */
var $res;
var $key, $current;
+ /**
+ * @param $res ResultWrapper
+ */
function __construct( $res ) {
$this->res = $res;
$this->key = 0;
$this->setCurrent( $this->res->current() );
}
+ /**
+ * @param $row
+ * @return void
+ */
protected function setCurrent( $row ) {
if ( $row === false ) {
$this->current = false;
@@ -47,6 +70,9 @@ class UserArrayFromResult extends UserArray {
}
}
+ /**
+ * @return int
+ */
public function count() {
return $this->res->numRows();
}
@@ -71,6 +97,9 @@ class UserArrayFromResult extends UserArray {
$this->setCurrent( $this->res->current() );
}
+ /**
+ * @return bool
+ */
function valid() {
return $this->current !== false;
}
diff --git a/includes/UserMailer.php b/includes/UserMailer.php
index c15843d9..5976c6fd 100644
--- a/includes/UserMailer.php
+++ b/includes/UserMailer.php
@@ -31,7 +31,7 @@
*/
class MailAddress {
/**
- * @param $address Mixed: string with an email address, or a User object
+ * @param $address string|User string with an email address, or a User object
* @param $name String: human-readable name if a string address is given
* @param $realName String: human-readable real name if a string address is given
*/
@@ -55,16 +55,18 @@ class MailAddress {
# PHP's mail() implementation under Windows is somewhat shite, and
# can't handle "Joe Bloggs <joe@bloggs.com>" format email addresses,
# so don't bother generating them
- if ( $this->name != '' && !wfIsWindows() ) {
- global $wgEnotifUseRealName;
- $name = ( $wgEnotifUseRealName && $this->realName ) ? $this->realName : $this->name;
- $quoted = wfQuotedPrintable( $name );
- if ( strpos( $quoted, '.' ) !== false || strpos( $quoted, ',' ) !== false ) {
- $quoted = '"' . $quoted . '"';
+ if ( $this->address ) {
+ if ( $this->name != '' && !wfIsWindows() ) {
+ global $wgEnotifUseRealName;
+ $name = ( $wgEnotifUseRealName && $this->realName ) ? $this->realName : $this->name;
+ $quoted = UserMailer::quotedPrintable( $name );
+ if ( strpos( $quoted, '.' ) !== false || strpos( $quoted, ',' ) !== false ) {
+ $quoted = '"' . $quoted . '"';
+ }
+ return "$quoted <{$this->address}>";
+ } else {
+ return $this->address;
}
- return "$quoted <{$this->address}>";
- } else {
- return $this->address;
}
}
@@ -82,6 +84,13 @@ class UserMailer {
/**
* Send mail using a PEAR mailer
+ *
+ * @param $mailer
+ * @param $dest
+ * @param $headers
+ * @param $body
+ *
+ * @return Status
*/
protected static function sendWithPear( $mailer, $dest, $headers, $body ) {
$mailResult = $mailer->send( $dest, $headers, $body );
@@ -106,14 +115,15 @@ class UserMailer {
* @param $subject String: email's subject.
* @param $body String: email's text.
* @param $replyto MailAddress: optional reply-to email (default: null).
- * @param $contentType String: optional custom Content-Type
+ * @param $contentType String: optional custom Content-Type (default: text/plain; charset=UTF-8)
* @return Status object
*/
- public static function send( $to, $from, $subject, $body, $replyto = null, $contentType = null ) {
- global $wgSMTP, $wgOutputEncoding, $wgEnotifImpersonal;
+ public static function send( $to, $from, $subject, $body, $replyto = null, $contentType = 'text/plain; charset=UTF-8') {
+ global $wgSMTP, $wgEnotifImpersonal;
global $wgEnotifMaxRecips, $wgAdditionalMailParams;
if ( is_array( $to ) ) {
+ $emails = '';
// This wouldn't be necessary if implode() worked on arrays of
// objects using __toString(). http://bugs.php.net/bug.php?id=36612
foreach ( $to as $t ) {
@@ -126,13 +136,10 @@ class UserMailer {
}
if ( is_array( $wgSMTP ) ) {
- $found = false;
- $pathArray = explode( PATH_SEPARATOR, get_include_path() );
- foreach ( $pathArray as $path ) {
- if ( file_exists( $path . DIRECTORY_SEPARATOR . 'Mail.php' ) ) {
- $found = true;
- break;
- }
+ if ( function_exists( 'stream_resolve_include_path' ) ) {
+ $found = stream_resolve_include_path( 'Mail.php' );
+ } else {
+ $found = Fallback::stream_resolve_include_path( 'Mail.php' );
}
if ( !$found ) {
throw new MWException( 'PEAR mail package is not installed' );
@@ -140,17 +147,21 @@ class UserMailer {
require_once( 'Mail.php' );
$msgid = str_replace( " ", "_", microtime() );
- if ( function_exists( 'posix_getpid' ) )
+ if ( function_exists( 'posix_getpid' ) ) {
$msgid .= '.' . posix_getpid();
+ }
if ( is_array( $to ) ) {
$dest = array();
- foreach ( $to as $u )
+ foreach ( $to as $u ) {
$dest[] = $u->address;
- } else
+ }
+ } else {
$dest = $to->address;
+ }
$headers['From'] = $from->toString();
+ $headers['Return-Path'] = $from->toString();
if ( $wgEnotifImpersonal ) {
$headers['To'] = 'undisclosed-recipients:;';
@@ -162,13 +173,14 @@ class UserMailer {
if ( $replyto ) {
$headers['Reply-To'] = $replyto->toString();
}
- $headers['Subject'] = wfQuotedPrintable( $subject );
+ $headers['Subject'] = self::quotedPrintable( $subject );
$headers['Date'] = date( 'r' );
$headers['MIME-Version'] = '1.0';
$headers['Content-type'] = ( is_null( $contentType ) ?
- 'text/plain; charset=' . $wgOutputEncoding : $contentType );
+ 'text/plain; charset=UTF-8' : $contentType );
$headers['Content-transfer-encoding'] = '8bit';
- $headers['Message-ID'] = "<$msgid@" . $wgSMTP['IDHost'] . '>'; // FIXME
+ // @todo FIXME
+ $headers['Message-ID'] = "<$msgid@" . $wgSMTP['IDHost'] . '>';
$headers['X-Mailer'] = 'MediaWiki mailer';
wfSuppressWarnings();
@@ -193,9 +205,6 @@ class UserMailer {
wfRestoreWarnings();
return Status::newGood();
} else {
- # In the following $headers = expression we removed "Reply-To: {$from}\r\n" , because it is treated differently
- # (fifth parameter of the PHP mail function, see some lines below)
-
# Line endings need to be different on Unix and Windows due to
# the bug described at http://trac.wordpress.org/ticket/2603
if ( wfIsWindows() ) {
@@ -204,31 +213,32 @@ class UserMailer {
} else {
$endl = "\n";
}
- $ctype = ( is_null( $contentType ) ?
- 'text/plain; charset=' . $wgOutputEncoding : $contentType );
- $headers =
- "MIME-Version: 1.0$endl" .
- "Content-type: $ctype$endl" .
- "Content-Transfer-Encoding: 8bit$endl" .
- "X-Mailer: MediaWiki mailer$endl" .
- 'From: ' . $from->toString();
+
+ $headers = array(
+ "MIME-Version: 1.0",
+ "Content-type: $contentType",
+ "Content-Transfer-Encoding: 8bit",
+ "X-Mailer: MediaWiki mailer",
+ "From: " . $from->toString(),
+ );
if ( $replyto ) {
- $headers .= "{$endl}Reply-To: " . $replyto->toString();
+ $headers[] = "Reply-To: " . $replyto->toString();
}
+ $headers = implode( $endl, $headers );
+
wfDebug( "Sending mail via internal mail() function\n" );
self::$mErrorString = '';
$html_errors = ini_get( 'html_errors' );
ini_set( 'html_errors', '0' );
- set_error_handler( array( 'UserMailer', 'errorHandler' ) );
+ set_error_handler( 'UserMailer::errorHandler' );
- if ( is_array( $to ) ) {
- foreach ( $to as $recip ) {
- $sent = mail( $recip->toString(), wfQuotedPrintable( $subject ), $body, $headers, $wgAdditionalMailParams );
- }
- } else {
- $sent = mail( $to->toString(), wfQuotedPrintable( $subject ), $body, $headers, $wgAdditionalMailParams );
+ if ( !is_array( $to ) ) {
+ $to = array( $to );
+ }
+ foreach ( $to as $recip ) {
+ $sent = mail( $recip->toString(), self::quotedPrintable( $subject ), $body, $headers, $wgAdditionalMailParams );
}
restore_error_handler();
@@ -259,11 +269,41 @@ class UserMailer {
/**
* Converts a string into a valid RFC 822 "phrase", such as is used for the sender name
+ * @param $phrase string
+ * @return string
*/
public static function rfc822Phrase( $phrase ) {
$phrase = strtr( $phrase, array( "\r" => '', "\n" => '', '"' => '' ) );
return '"' . $phrase . '"';
}
+
+ /**
+ * Converts a string into quoted-printable format
+ * @since 1.17
+ */
+ public static function quotedPrintable( $string, $charset = '' ) {
+ # Probably incomplete; see RFC 2045
+ if( empty( $charset ) ) {
+ $charset = 'UTF-8';
+ }
+ $charset = strtoupper( $charset );
+ $charset = str_replace( 'ISO-8859', 'ISO8859', $charset ); // ?
+
+ $illegal = '\x00-\x08\x0b\x0c\x0e-\x1f\x7f-\xff=';
+ $replace = $illegal . '\t ?_';
+ if( !preg_match( "/[$illegal]/", $string ) ) {
+ return $string;
+ }
+ $out = "=?$charset?Q?";
+ $out .= preg_replace_callback( "/([$replace])/",
+ array( __CLASS__, 'quotedPrintableCallback' ), $string );
+ $out .= '?=';
+ return $out;
+ }
+
+ protected static function quotedPrintableCallback( $matches ) {
+ return sprintf( "=%02X", ord( $matches[1] ) );
+ }
}
/**
@@ -307,8 +347,9 @@ class EmailNotification {
public function notifyOnPageChange( $editor, $title, $timestamp, $summary, $minorEdit, $oldid = false ) {
global $wgEnotifUseJobQ, $wgEnotifWatchlist, $wgShowUpdatedMarker;
- if ( $title->getNamespace() < 0 )
+ if ( $title->getNamespace() < 0 ) {
return;
+ }
// Build a list of users to notfiy
$watchers = array();
@@ -360,7 +401,7 @@ class EmailNotification {
}
- /*
+ /**
* Immediate version of notifyOnPageChange().
*
* Send emails corresponding to the user $editor editing the page $title.
@@ -404,7 +445,9 @@ class EmailNotification {
wfDebug( __METHOD__ . ": user talk page edited, but user does not exist\n" );
} elseif ( $targetUser->getId() == $editor->getId() ) {
wfDebug( __METHOD__ . ": user edited their own talk page, no notification sent\n" );
- } elseif ( $targetUser->getOption( 'enotifusertalkpages' ) ) {
+ } elseif ( $targetUser->getOption( 'enotifusertalkpages' ) &&
+ ( !$minorEdit || $targetUser->getOption( 'enotifminoredits' ) ) )
+ {
if ( $targetUser->isEmailConfirmed() ) {
wfDebug( __METHOD__ . ": sending talk page update notification\n" );
$this->compose( $targetUser );
@@ -466,7 +509,7 @@ class EmailNotification {
$keys = array();
if ( $this->oldid ) {
- $difflink = $this->title->getFullUrl( 'diff=0&oldid=' . $this->oldid );
+ $difflink = $this->title->getCanonicalUrl( 'diff=0&oldid=' . $this->oldid );
$keys['$NEWPAGE'] = wfMsgForContent( 'enotif_lastvisited', $difflink );
$keys['$OLDID'] = $this->oldid;
$keys['$CHANGEDORCREATED'] = wfMsgForContent( 'changed' );
@@ -478,22 +521,22 @@ class EmailNotification {
}
if ( $wgEnotifImpersonal && $this->oldid ) {
- /*
+ /**
* For impersonal mail, show a diff link to the last
* revision.
*/
$keys['$NEWPAGE'] = wfMsgForContent( 'enotif_lastdiff',
- $this->title->getFullURL( "oldid={$this->oldid}&diff=next" ) );
- }
+ $this->title->getCanonicalUrl( "oldid={$this->oldid}&diff=next" ) );
+ }
$body = strtr( $body, $keys );
$pagetitle = $this->title->getPrefixedText();
$keys['$PAGETITLE'] = $pagetitle;
- $keys['$PAGETITLE_URL'] = $this->title->getFullUrl();
+ $keys['$PAGETITLE_URL'] = $this->title->getCanonicalUrl();
$keys['$PAGEMINOREDIT'] = $medit;
$keys['$PAGESUMMARY'] = $summary;
- $keys['$UNWATCHURL'] = $this->title->getFullUrl( 'action=unwatch' );
+ $keys['$UNWATCHURL'] = $this->title->getCanonicalUrl( 'action=unwatch' );
$subject = strtr( $subject, $keys );
@@ -505,8 +548,8 @@ class EmailNotification {
$adminAddress = new MailAddress( $wgPasswordSender, $wgPasswordSenderName );
$editorAddress = new MailAddress( $editor );
if ( $wgEnotifRevealEditorAddress
- && ( $editor->getEmail() != '' )
- && $editor->getOption( 'enotifrevealaddr' ) ) {
+ && ( $editor->getEmail() != '' )
+ && $editor->getOption( 'enotifrevealaddr' ) ) {
if ( $wgEnotifFromEditor ) {
$from = $editorAddress;
} else {
@@ -518,7 +561,7 @@ class EmailNotification {
$replyto = new MailAddress( $wgNoReplyAddress );
}
- if ( $editor->isIP( $name ) ) {
+ if ( $editor->isAnon() ) {
# real anon (user:xxx.xxx.xxx.xxx)
$utext = wfMsgForContent( 'enotif_anon_editor', $name );
$subject = str_replace( '$PAGEEDITOR', $utext, $subject );
@@ -528,10 +571,10 @@ class EmailNotification {
$subject = str_replace( '$PAGEEDITOR', $name, $subject );
$keys['$PAGEEDITOR'] = $name;
$emailPage = SpecialPage::getSafeTitleFor( 'Emailuser', $name );
- $keys['$PAGEEDITOR_EMAIL'] = $emailPage->getFullUrl();
+ $keys['$PAGEEDITOR_EMAIL'] = $emailPage->getCanonicalUrl();
}
$userPage = $editor->getUserPage();
- $keys['$PAGEEDITOR_WIKI'] = $userPage->getFullUrl();
+ $keys['$PAGEEDITOR_WIKI'] = $userPage->getCanonicalUrl();
$body = strtr( $body, $keys );
$body = wordwrap( $body, 72 );
@@ -618,28 +661,14 @@ class EmailNotification {
$body = str_replace(
array( '$WATCHINGUSERNAME',
- '$PAGEEDITDATE' ),
+ '$PAGEEDITDATE',
+ '$PAGEEDITTIME' ),
array( wfMsgForContent( 'enotif_impersonal_salutation' ),
- $wgContLang->timeanddate( $this->timestamp, true, false, false ) ),
+ $wgContLang->date( $this->timestamp, true, false, false ),
+ $wgContLang->time( $this->timestamp, true, false, false ) ),
$this->body );
return UserMailer::send( $addresses, $this->from, $this->subject, $body, $this->replyto );
}
} # end of class EmailNotification
-
-/**@{
- * Backwards compatibility functions
- *
- * @deprecated Use UserMailer methods; will be removed in 1.19
- */
-function wfRFC822Phrase( $s ) {
- wfDeprecated( __FUNCTION__ );
- return UserMailer::rfc822Phrase( $s );
-}
-
-function userMailer( $to, $from, $subject, $body, $replyto = null ) {
- wfDeprecated( __FUNCTION__ );
- return UserMailer::send( $to, $from, $subject, $body, $replyto );
-}
-/**@}*/ \ No newline at end of file
diff --git a/includes/ViewCountUpdate.php b/includes/ViewCountUpdate.php
new file mode 100644
index 00000000..0642b630
--- /dev/null
+++ b/includes/ViewCountUpdate.php
@@ -0,0 +1,111 @@
+<?php
+/**
+ * Update for the 'page_counter' field
+ *
+ * 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
+ */
+
+/**
+ * Update for the 'page_counter' field, when $wgDisableCounters is false.
+ *
+ * Depending on $wgHitcounterUpdateFreq, this will directly increment the
+ * 'page_counter' field or use the 'hitcounter' table and then collect the data
+ * from that table to update the 'page_counter' field in a batch operation.
+ */
+class ViewCountUpdate {
+ protected $id;
+
+ /**
+ * Constructor
+ *
+ * @param $id Integer: page ID to increment the view count
+ */
+ public function __construct( $id ) {
+ $this->id = intval( $id );
+ }
+
+ /**
+ * Run the update
+ */
+ public function doUpdate() {
+ global $wgHitcounterUpdateFreq;
+
+ $dbw = wfGetDB( DB_MASTER );
+
+ if ( $wgHitcounterUpdateFreq <= 1 || $dbw->getType() == 'sqlite' ) {
+ $pageTable = $dbw->tableName( 'page' );
+ $dbw->query( "UPDATE $pageTable SET page_counter = page_counter + 1 WHERE page_id = {$this->id}" );
+ return;
+ }
+
+ # Not important enough to warrant an error page in case of failure
+ $oldignore = $dbw->ignoreErrors( true );
+
+ $dbw->insert( 'hitcounter', array( 'hc_id' => $this->id ), __METHOD__ );
+
+ $checkfreq = intval( $wgHitcounterUpdateFreq / 25 + 1 );
+ if ( rand() % $checkfreq == 0 && $dbw->lastErrno() == 0 ) {
+ $this->collect();
+ }
+
+ $dbw->ignoreErrors( $oldignore );
+ }
+
+ protected function collect() {
+ global $wgHitcounterUpdateFreq;
+
+ $dbw = wfGetDB( DB_MASTER );
+
+ $hitcounterTable = $dbw->tableName( 'hitcounter' );
+ $res = $dbw->query( "SELECT COUNT(*) as n FROM $hitcounterTable" );
+ $row = $dbw->fetchObject( $res );
+ $rown = intval( $row->n );
+
+ if ( $rown < $wgHitcounterUpdateFreq ) {
+ return;
+ }
+
+ wfProfileIn( __METHOD__ . '-collect' );
+ $old_user_abort = ignore_user_abort( true );
+
+ $dbw->lockTables( array(), array( 'hitcounter' ), __METHOD__, false );
+
+ $dbType = $dbw->getType();
+ $tabletype = $dbType == 'mysql' ? "ENGINE=HEAP " : '';
+ $acchitsTable = $dbw->tableName( 'acchits' );
+ $pageTable = $dbw->tableName( 'page' );
+
+ $dbw->query( "CREATE TEMPORARY TABLE $acchitsTable $tabletype AS " .
+ "SELECT hc_id,COUNT(*) AS hc_n FROM $hitcounterTable " .
+ 'GROUP BY hc_id', __METHOD__ );
+ $dbw->delete( 'hitcounter', '*', __METHOD__ );
+ $dbw->unlockTables( __METHOD__ );
+
+ if ( $dbType == 'mysql' ) {
+ $dbw->query( "UPDATE $pageTable,$acchitsTable SET page_counter=page_counter + hc_n " .
+ 'WHERE page_id = hc_id', __METHOD__ );
+ } else {
+ $dbw->query( "UPDATE $pageTable SET page_counter=page_counter + hc_n " .
+ "FROM $acchitsTable WHERE page_id = hc_id", __METHOD__ );
+ }
+ $dbw->query( "DROP TABLE $acchitsTable", __METHOD__ );
+
+ ignore_user_abort( $old_user_abort );
+ wfProfileOut( __METHOD__ . '-collect' );
+ }
+}
diff --git a/includes/WatchedItem.php b/includes/WatchedItem.php
index dd6e247b..031b2b48 100644
--- a/includes/WatchedItem.php
+++ b/includes/WatchedItem.php
@@ -133,6 +133,11 @@ class WatchedItem {
/**
* Handle duplicate entries. Backend for duplicateEntries().
+ *
+ * @param $ot Title
+ * @param $nt Title
+ *
+ * @return bool
*/
private static function doDuplicateEntries( $ot, $nt ) {
$oldnamespace = $ot->getNamespace();
diff --git a/includes/WatchlistEditor.php b/includes/WatchlistEditor.php
deleted file mode 100644
index 37673784..00000000
--- a/includes/WatchlistEditor.php
+++ /dev/null
@@ -1,528 +0,0 @@
-<?php
-
-/**
- * Provides the UI through which users can perform editing
- * operations on their watchlist
- *
- * @ingroup Watchlist
- * @author Rob Church <robchur@gmail.com>
- */
-class WatchlistEditor {
-
- /**
- * Editing modes
- */
- const EDIT_CLEAR = 1;
- const EDIT_RAW = 2;
- const EDIT_NORMAL = 3;
-
- /**
- * Main execution point
- *
- * @param $user User
- * @param $output OutputPage
- * @param $request WebRequest
- * @param $mode int
- */
- public function execute( $user, $output, $request, $mode ) {
- global $wgUser;
- if( wfReadOnly() ) {
- $output->readOnlyPage();
- return;
- }
- switch( $mode ) {
- case self::EDIT_CLEAR:
- // The "Clear" link scared people too much.
- // Pass on to the raw editor, from which it's very easy to clear.
- case self::EDIT_RAW:
- $output->setPageTitle( wfMsg( 'watchlistedit-raw-title' ) );
- if( $request->wasPosted() && $this->checkToken( $request, $wgUser ) ) {
- $wanted = $this->extractTitles( $request->getText( 'titles' ) );
- $current = $this->getWatchlist( $user );
- if( count( $wanted ) > 0 ) {
- $toWatch = array_diff( $wanted, $current );
- $toUnwatch = array_diff( $current, $wanted );
- $this->watchTitles( $toWatch, $user );
- $this->unwatchTitles( $toUnwatch, $user );
- $user->invalidateCache();
- if( count( $toWatch ) > 0 || count( $toUnwatch ) > 0 )
- $output->addHTML( wfMsgExt( 'watchlistedit-raw-done', 'parse' ) );
- if( ( $count = count( $toWatch ) ) > 0 ) {
- $output->addHTML( wfMsgExt( 'watchlistedit-raw-added', 'parse', $count ) );
- $this->showTitles( $toWatch, $output, $wgUser->getSkin() );
- }
- if( ( $count = count( $toUnwatch ) ) > 0 ) {
- $output->addHTML( wfMsgExt( 'watchlistedit-raw-removed', 'parse', $count ) );
- $this->showTitles( $toUnwatch, $output, $wgUser->getSkin() );
- }
- } else {
- $this->clearWatchlist( $user );
- $user->invalidateCache();
- $output->addHTML( wfMsgExt( 'watchlistedit-raw-removed', 'parse', count( $current ) ) );
- $this->showTitles( $current, $output, $wgUser->getSkin() );
- }
- }
- $this->showRawForm( $output, $user );
- break;
- case self::EDIT_NORMAL:
- $output->setPageTitle( wfMsg( 'watchlistedit-normal-title' ) );
- if( $request->wasPosted() && $this->checkToken( $request, $wgUser ) ) {
- $titles = $this->extractTitles( $request->getArray( 'titles' ) );
- $this->unwatchTitles( $titles, $user );
- $user->invalidateCache();
- $output->addHTML( wfMsgExt( 'watchlistedit-normal-done', 'parse',
- $GLOBALS['wgLang']->formatNum( count( $titles ) ) ) );
- $this->showTitles( $titles, $output, $wgUser->getSkin() );
- }
- $this->showNormalForm( $output, $user );
- }
- }
-
- /**
- * Check the edit token from a form submission
- *
- * @param $request WebRequest
- * @param $user User
- * @return bool
- */
- private function checkToken( $request, $user ) {
- return $user->matchEditToken( $request->getVal( 'token' ), 'watchlistedit' );
- }
-
- /**
- * Extract a list of titles from a blob of text, returning
- * (prefixed) strings; unwatchable titles are ignored
- *
- * @param $list mixed
- * @return array
- */
- private function extractTitles( $list ) {
- $titles = array();
- if( !is_array( $list ) ) {
- $list = explode( "\n", trim( $list ) );
- if( !is_array( $list ) ) {
- return array();
- }
- }
- foreach( $list as $text ) {
- $text = trim( $text );
- if( strlen( $text ) > 0 ) {
- $title = Title::newFromText( $text );
- if( $title instanceof Title && $title->isWatchable() ) {
- $titles[] = $title->getPrefixedText();
- }
- }
- }
- return array_unique( $titles );
- }
-
- /**
- * Print out a list of linked titles
- *
- * $titles can be an array of strings or Title objects; the former
- * is preferred, since Titles are very memory-heavy
- *
- * @param $titles An array of strings, or Title objects
- * @param $output OutputPage
- * @param $skin Skin
- */
- private function showTitles( $titles, $output, $skin ) {
- $talk = wfMsgHtml( 'talkpagelinktext' );
- // Do a batch existence check
- $batch = new LinkBatch();
- foreach( $titles as $title ) {
- if( !$title instanceof Title ) {
- $title = Title::newFromText( $title );
- }
- if( $title instanceof Title ) {
- $batch->addObj( $title );
- $batch->addObj( $title->getTalkPage() );
- }
- }
- $batch->execute();
- // Print out the list
- $output->addHTML( "<ul>\n" );
- foreach( $titles as $title ) {
- if( !$title instanceof Title ) {
- $title = Title::newFromText( $title );
- }
- if( $title instanceof Title ) {
- $output->addHTML( "<li>" . $skin->link( $title )
- . ' (' . $skin->link( $title->getTalkPage(), $talk ) . ")</li>\n" );
- }
- }
- $output->addHTML( "</ul>\n" );
- }
-
- /**
- * Count the number of titles on a user's watchlist, excluding talk pages
- *
- * @param $user User
- * @return int
- */
- private function countWatchlist( $user ) {
- $dbr = wfGetDB( DB_MASTER );
- $res = $dbr->select( 'watchlist', 'COUNT(*) AS count', array( 'wl_user' => $user->getId() ), __METHOD__ );
- $row = $dbr->fetchObject( $res );
- return ceil( $row->count / 2 ); // Paranoia
- }
-
- /**
- * Prepare a list of titles on a user's watchlist (excluding talk pages)
- * and return an array of (prefixed) strings
- *
- * @param $user User
- * @return array
- */
- private function getWatchlist( $user ) {
- $list = array();
- $dbr = wfGetDB( DB_MASTER );
- $res = $dbr->select(
- 'watchlist',
- '*',
- array(
- 'wl_user' => $user->getId(),
- ),
- __METHOD__
- );
- if( $res->numRows() > 0 ) {
- foreach ( $res as $row ) {
- $title = Title::makeTitleSafe( $row->wl_namespace, $row->wl_title );
- if( $title instanceof Title && !$title->isTalkPage() )
- $list[] = $title->getPrefixedText();
- }
- $res->free();
- }
- return $list;
- }
-
- /**
- * Get a list of titles on a user's watchlist, excluding talk pages,
- * and return as a two-dimensional array with namespace, title and
- * redirect status
- *
- * @param $user User
- * @return array
- */
- private function getWatchlistInfo( $user ) {
- $titles = array();
- $dbr = wfGetDB( DB_MASTER );
- $uid = intval( $user->getId() );
- list( $watchlist, $page ) = $dbr->tableNamesN( 'watchlist', 'page' );
- $sql = "SELECT wl_namespace, wl_title, page_id, page_len, page_is_redirect, page_latest
- FROM {$watchlist} LEFT JOIN {$page} ON ( wl_namespace = page_namespace
- AND wl_title = page_title ) WHERE wl_user = {$uid}";
- if ( ! $dbr->implicitOrderby() ) {
- $sql .= " ORDER BY wl_namespace, wl_title";
- }
- $res = $dbr->query( $sql, __METHOD__ );
- if( $res && $dbr->numRows( $res ) > 0 ) {
- $cache = LinkCache::singleton();
- foreach ( $res as $row ) {
- $title = Title::makeTitleSafe( $row->wl_namespace, $row->wl_title );
- if( $title instanceof Title ) {
- // Update the link cache while we're at it
- if( $row->page_id ) {
- $cache->addGoodLinkObj( $row->page_id, $title, $row->page_len, $row->page_is_redirect, $row->page_latest );
- } else {
- $cache->addBadLinkObj( $title );
- }
- // Ignore non-talk
- if( !$title->isTalkPage() ) {
- $titles[$row->wl_namespace][$row->wl_title] = $row->page_is_redirect;
- }
- }
- }
- }
- return $titles;
- }
-
- /**
- * Show a message indicating the number of items on the user's watchlist,
- * and return this count for additional checking
- *
- * @param $output OutputPage
- * @param $user User
- * @return int
- */
- private function showItemCount( $output, $user ) {
- if( ( $count = $this->countWatchlist( $user ) ) > 0 ) {
- $output->addHTML( wfMsgExt( 'watchlistedit-numitems', 'parse',
- $GLOBALS['wgLang']->formatNum( $count ) ) );
- } else {
- $output->addHTML( wfMsgExt( 'watchlistedit-noitems', 'parse' ) );
- }
- return $count;
- }
-
- /**
- * Remove all titles from a user's watchlist
- *
- * @param $user User
- */
- private function clearWatchlist( $user ) {
- $dbw = wfGetDB( DB_MASTER );
- $dbw->delete( 'watchlist', array( 'wl_user' => $user->getId() ), __METHOD__ );
- }
-
- /**
- * Add a list of titles to a user's watchlist
- *
- * $titles can be an array of strings or Title objects; the former
- * is preferred, since Titles are very memory-heavy
- *
- * @param $titles An array of strings, or Title objects
- * @param $user User
- */
- private function watchTitles( $titles, $user ) {
- $dbw = wfGetDB( DB_MASTER );
- $rows = array();
- foreach( $titles as $title ) {
- if( !$title instanceof Title ) {
- $title = Title::newFromText( $title );
- }
- if( $title instanceof Title ) {
- $rows[] = array(
- 'wl_user' => $user->getId(),
- 'wl_namespace' => ( $title->getNamespace() & ~1 ),
- 'wl_title' => $title->getDBkey(),
- 'wl_notificationtimestamp' => null,
- );
- $rows[] = array(
- 'wl_user' => $user->getId(),
- 'wl_namespace' => ( $title->getNamespace() | 1 ),
- 'wl_title' => $title->getDBkey(),
- 'wl_notificationtimestamp' => null,
- );
- }
- }
- $dbw->insert( 'watchlist', $rows, __METHOD__, 'IGNORE' );
- }
-
- /**
- * Remove a list of titles from a user's watchlist
- *
- * $titles can be an array of strings or Title objects; the former
- * is preferred, since Titles are very memory-heavy
- *
- * @param $titles An array of strings, or Title objects
- * @param $user User
- */
- private function unwatchTitles( $titles, $user ) {
- $dbw = wfGetDB( DB_MASTER );
- foreach( $titles as $title ) {
- if( !$title instanceof Title ) {
- $title = Title::newFromText( $title );
- }
- if( $title instanceof Title ) {
- $dbw->delete(
- 'watchlist',
- array(
- 'wl_user' => $user->getId(),
- 'wl_namespace' => ( $title->getNamespace() & ~1 ),
- 'wl_title' => $title->getDBkey(),
- ),
- __METHOD__
- );
- $dbw->delete(
- 'watchlist',
- array(
- 'wl_user' => $user->getId(),
- 'wl_namespace' => ( $title->getNamespace() | 1 ),
- 'wl_title' => $title->getDBkey(),
- ),
- __METHOD__
- );
- $article = new Article($title);
- wfRunHooks('UnwatchArticleComplete',array(&$user,&$article));
- }
- }
- }
-
- /**
- * Show the standard watchlist editing form
- *
- * @param $output OutputPage
- * @param $user User
- */
- private function showNormalForm( $output, $user ) {
- global $wgUser;
- $count = $this->showItemCount( $output, $user );
- if( $count > 0 ) {
- $self = SpecialPage::getTitleFor( 'Watchlist' );
- $form = Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $self->getLocalUrl( array( 'action' => 'edit' ) ) ) );
- $form .= Html::hidden( 'token', $wgUser->editToken( 'watchlistedit' ) );
- $form .= "<fieldset>\n<legend>" . wfMsgHtml( 'watchlistedit-normal-legend' ) . "</legend>";
- $form .= wfMsgExt( 'watchlistedit-normal-explain', 'parse' );
- $form .= $this->buildRemoveList( $user, $wgUser->getSkin() );
- $form .= '<p>' . Xml::submitButton( wfMsg( 'watchlistedit-normal-submit' ) ) . '</p>';
- $form .= '</fieldset></form>';
- $output->addHTML( $form );
- }
- }
-
- /**
- * Build the part of the standard watchlist editing form with the actual
- * title selection checkboxes and stuff. Also generates a table of
- * contents if there's more than one heading.
- *
- * @param $user User
- * @param $skin Skin (really, Linker)
- */
- private function buildRemoveList( $user, $skin ) {
- $list = "";
- $toc = $skin->tocIndent();
- $tocLength = 0;
- foreach( $this->getWatchlistInfo( $user ) as $namespace => $pages ) {
- $tocLength++;
- $heading = htmlspecialchars( $this->getNamespaceHeading( $namespace ) );
- $anchor = "editwatchlist-ns" . $namespace;
-
- $list .= $skin->makeHeadLine( 2, ">", $anchor, $heading, "" );
- $toc .= $skin->tocLine( $anchor, $heading, $tocLength, 1 ) . $skin->tocLineEnd();
-
- $list .= "<ul>\n";
- foreach( $pages as $dbkey => $redirect ) {
- $title = Title::makeTitleSafe( $namespace, $dbkey );
- $list .= $this->buildRemoveLine( $title, $redirect, $skin );
- }
- $list .= "</ul>\n";
- }
- // ISSUE: omit the TOC if the total number of titles is low?
- if( $tocLength > 1 ) {
- $list = $skin->tocList( $toc ) . $list;
- }
- return $list;
- }
-
- /**
- * Get the correct "heading" for a namespace
- *
- * @param $namespace int
- * @return string
- */
- private function getNamespaceHeading( $namespace ) {
- return $namespace == NS_MAIN
- ? wfMsgHtml( 'blanknamespace' )
- : htmlspecialchars( $GLOBALS['wgContLang']->getFormattedNsText( $namespace ) );
- }
-
- /**
- * Build a single list item containing a check box selecting a title
- * and a link to that title, with various additional bits
- *
- * @param $title Title
- * @param $redirect bool
- * @param $skin Skin
- * @return string
- */
- private function buildRemoveLine( $title, $redirect, $skin ) {
- global $wgLang;
-
- $link = $skin->link( $title );
- if( $redirect ) {
- $link = '<span class="watchlistredir">' . $link . '</span>';
- }
- $tools[] = $skin->link( $title->getTalkPage(), wfMsgHtml( 'talkpagelinktext' ) );
- if( $title->exists() ) {
- $tools[] = $skin->link(
- $title,
- wfMsgHtml( 'history_short' ),
- array(),
- array( 'action' => 'history' ),
- array( 'known', 'noclasses' )
- );
- }
- if( $title->getNamespace() == NS_USER && !$title->isSubpage() ) {
- $tools[] = $skin->link(
- SpecialPage::getTitleFor( 'Contributions', $title->getText() ),
- wfMsgHtml( 'contributions' ),
- array(),
- array(),
- array( 'known', 'noclasses' )
- );
- }
-
- wfRunHooks( 'WatchlistEditorBuildRemoveLine', array( &$tools, $title, $redirect, $skin ) );
-
- return "<li>"
- . Xml::check( 'titles[]', false, array( 'value' => $title->getPrefixedText() ) )
- . $link . " (" . $wgLang->pipeList( $tools ) . ")" . "</li>\n";
- }
-
- /**
- * Show a form for editing the watchlist in "raw" mode
- *
- * @param $output OutputPage
- * @param $user User
- */
- public function showRawForm( $output, $user ) {
- global $wgUser;
- $this->showItemCount( $output, $user );
- $self = SpecialPage::getTitleFor( 'Watchlist' );
- $form = Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $self->getLocalUrl( array( 'action' => 'raw' ) ) ) );
- $form .= Html::hidden( 'token', $wgUser->editToken( 'watchlistedit' ) );
- $form .= '<fieldset><legend>' . wfMsgHtml( 'watchlistedit-raw-legend' ) . '</legend>';
- $form .= wfMsgExt( 'watchlistedit-raw-explain', 'parse' );
- $form .= Xml::label( wfMsg( 'watchlistedit-raw-titles' ), 'titles' );
- $form .= "<br />\n";
- $form .= Xml::openElement( 'textarea', array( 'id' => 'titles', 'name' => 'titles',
- 'rows' => $wgUser->getIntOption( 'rows' ), 'cols' => $wgUser->getIntOption( 'cols' ) ) );
- $titles = $this->getWatchlist( $user );
- foreach( $titles as $title ) {
- $form .= htmlspecialchars( $title ) . "\n";
- }
- $form .= '</textarea>';
- $form .= '<p>' . Xml::submitButton( wfMsg( 'watchlistedit-raw-submit' ) ) . '</p>';
- $form .= '</fieldset></form>';
- $output->addHTML( $form );
- }
-
- /**
- * Determine whether we are editing the watchlist, and if so, what
- * kind of editing operation
- *
- * @param $request WebRequest
- * @param $par mixed
- * @return int
- */
- public static function getMode( $request, $par ) {
- $mode = strtolower( $request->getVal( 'action', $par ) );
- switch( $mode ) {
- case 'clear':
- return self::EDIT_CLEAR;
- case 'raw':
- return self::EDIT_RAW;
- case 'edit':
- return self::EDIT_NORMAL;
- default:
- return false;
- }
- }
-
- /**
- * Build a set of links for convenient navigation
- * between watchlist viewing and editing modes
- *
- * @param $skin Skin to use
- * @return string
- */
- public static function buildTools( $skin ) {
- global $wgLang;
-
- $tools = array();
- $modes = array( 'view' => false, 'edit' => 'edit', 'raw' => 'raw' );
- foreach( $modes as $mode => $subpage ) {
- // can use messages 'watchlisttools-view', 'watchlisttools-edit', 'watchlisttools-raw'
- $tools[] = $skin->linkKnown(
- SpecialPage::getTitleFor( 'Watchlist', $subpage ),
- wfMsgHtml( "watchlisttools-{$mode}" )
- );
- }
- return Html::rawElement( 'span',
- array( 'class' => 'mw-watchlist-toollinks' ),
- wfMsg( 'parentheses', $wgLang->pipeList( $tools ) ) );
- }
-}
diff --git a/includes/WebRequest.php b/includes/WebRequest.php
index 940b693f..44fe6610 100644
--- a/includes/WebRequest.php
+++ b/includes/WebRequest.php
@@ -45,7 +45,7 @@ class WebRequest {
private $response;
public function __construct() {
- /// @todo Fixme: this preemptive de-quoting can interfere with other web libraries
+ /// @todo FIXME: This preemptive de-quoting can interfere with other web libraries
/// and increases our memory footprint. It would be cleaner to do on
/// demand; but currently we have no wrapper for $_SERVER etc.
$this->checkMagicQuotes();
@@ -56,6 +56,119 @@ class WebRequest {
}
/**
+ * Extract the PATH_INFO variable even when it isn't a reasonable
+ * value. On some large webhosts, PATH_INFO includes the script
+ * path as well as everything after it.
+ *
+ * @param $want string: If this is not 'all', then the function
+ * will return an empty array if it determines that the URL is
+ * inside a rewrite path.
+ *
+ * @return Array: 'title' key is the title of the article.
+ */
+ static public function getPathInfo( $want = 'all' ) {
+ // PATH_INFO is mangled due to http://bugs.php.net/bug.php?id=31892
+ // And also by Apache 2.x, double slashes are converted to single slashes.
+ // So we will use REQUEST_URI if possible.
+ $matches = array();
+ if ( !empty( $_SERVER['REQUEST_URI'] ) ) {
+ // Slurp out the path portion to examine...
+ $url = $_SERVER['REQUEST_URI'];
+ if ( !preg_match( '!^https?://!', $url ) ) {
+ $url = 'http://unused' . $url;
+ }
+ $a = parse_url( $url );
+ if( $a ) {
+ $path = isset( $a['path'] ) ? $a['path'] : '';
+
+ global $wgScript;
+ if( $path == $wgScript && $want !== 'all' ) {
+ // Script inside a rewrite path?
+ // Abort to keep from breaking...
+ return $matches;
+ }
+ // Raw PATH_INFO style
+ $matches = self::extractTitle( $path, "$wgScript/$1" );
+
+ global $wgArticlePath;
+ if( !$matches && $wgArticlePath ) {
+ $matches = self::extractTitle( $path, $wgArticlePath );
+ }
+
+ global $wgActionPaths;
+ if( !$matches && $wgActionPaths ) {
+ $matches = self::extractTitle( $path, $wgActionPaths, 'action' );
+ }
+
+ global $wgVariantArticlePath, $wgContLang;
+ if( !$matches && $wgVariantArticlePath ) {
+ $variantPaths = array();
+ foreach( $wgContLang->getVariants() as $variant ) {
+ $variantPaths[$variant] =
+ str_replace( '$2', $variant, $wgVariantArticlePath );
+ }
+ $matches = self::extractTitle( $path, $variantPaths, 'variant' );
+ }
+ }
+ } elseif ( isset( $_SERVER['ORIG_PATH_INFO'] ) && $_SERVER['ORIG_PATH_INFO'] != '' ) {
+ // Mangled PATH_INFO
+ // http://bugs.php.net/bug.php?id=31892
+ // Also reported when ini_get('cgi.fix_pathinfo')==false
+ $matches['title'] = substr( $_SERVER['ORIG_PATH_INFO'], 1 );
+
+ } elseif ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != '') ) {
+ // Regular old PATH_INFO yay
+ $matches['title'] = substr( $_SERVER['PATH_INFO'], 1 );
+ }
+
+ return $matches;
+ }
+
+ /**
+ * Work out an appropriate URL prefix containing scheme and host, based on
+ * information detected from $_SERVER
+ *
+ * @return string
+ */
+ public static function detectServer() {
+ list( $proto, $stdPort ) = self::detectProtocolAndStdPort();
+
+ $varNames = array( 'HTTP_HOST', 'SERVER_NAME', 'HOSTNAME', 'SERVER_ADDR' );
+ $host = 'localhost';
+ $port = $stdPort;
+ foreach ( $varNames as $varName ) {
+ if ( !isset( $_SERVER[$varName] ) ) {
+ continue;
+ }
+ $parts = IP::splitHostAndPort( $_SERVER[$varName] );
+ if ( !$parts ) {
+ // Invalid, do not use
+ continue;
+ }
+ $host = $parts[0];
+ if ( $parts[1] === false ) {
+ if ( isset( $_SERVER['SERVER_PORT'] ) ) {
+ $port = $_SERVER['SERVER_PORT'];
+ } // else leave it as $stdPort
+ } else {
+ $port = $parts[1];
+ }
+ break;
+ }
+
+ return $proto . '://' . IP::combineHostAndPort( $host, $port, $stdPort );
+ }
+
+ public static function detectProtocolAndStdPort() {
+ return ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' ) ? array( 'https', 443 ) : array( 'http', 80 );
+ }
+
+ public static function detectProtocol() {
+ list( $proto, $stdPort ) = self::detectProtocolAndStdPort();
+ return $proto;
+ }
+
+ /**
* Check for title, action, and/or variant data in the URL
* and interpolate it into the GET variables.
* This should only be run after $wgContLang is available,
@@ -65,66 +178,13 @@ class WebRequest {
public function interpolateTitle() {
global $wgUsePathInfo;
- // bug 16019: title interpolation on API queries is useless and possible harmful
+ // bug 16019: title interpolation on API queries is useless and sometimes harmful
if ( defined( 'MW_API' ) ) {
return;
}
if ( $wgUsePathInfo ) {
- // PATH_INFO is mangled due to http://bugs.php.net/bug.php?id=31892
- // And also by Apache 2.x, double slashes are converted to single slashes.
- // So we will use REQUEST_URI if possible.
- $matches = array();
-
- if ( !empty( $_SERVER['REQUEST_URI'] ) ) {
- // Slurp out the path portion to examine...
- $url = $_SERVER['REQUEST_URI'];
- if ( !preg_match( '!^https?://!', $url ) ) {
- $url = 'http://unused' . $url;
- }
- $a = parse_url( $url );
- if( $a ) {
- $path = isset( $a['path'] ) ? $a['path'] : '';
-
- global $wgScript;
- if( $path == $wgScript ) {
- // Script inside a rewrite path?
- // Abort to keep from breaking...
- return;
- }
- // Raw PATH_INFO style
- $matches = $this->extractTitle( $path, "$wgScript/$1" );
-
- global $wgArticlePath;
- if( !$matches && $wgArticlePath ) {
- $matches = $this->extractTitle( $path, $wgArticlePath );
- }
-
- global $wgActionPaths;
- if( !$matches && $wgActionPaths ) {
- $matches = $this->extractTitle( $path, $wgActionPaths, 'action' );
- }
-
- global $wgVariantArticlePath, $wgContLang;
- if( !$matches && $wgVariantArticlePath ) {
- $variantPaths = array();
- foreach( $wgContLang->getVariants() as $variant ) {
- $variantPaths[$variant] =
- str_replace( '$2', $variant, $wgVariantArticlePath );
- }
- $matches = $this->extractTitle( $path, $variantPaths, 'variant' );
- }
- }
- } elseif ( isset( $_SERVER['ORIG_PATH_INFO'] ) && $_SERVER['ORIG_PATH_INFO'] != '' ) {
- // Mangled PATH_INFO
- // http://bugs.php.net/bug.php?id=31892
- // Also reported when ini_get('cgi.fix_pathinfo')==false
- $matches['title'] = substr( $_SERVER['ORIG_PATH_INFO'], 1 );
-
- } elseif ( isset( $_SERVER['PATH_INFO'] ) && ($_SERVER['PATH_INFO'] != '') ) {
- // Regular old PATH_INFO yay
- $matches['title'] = substr( $_SERVER['PATH_INFO'], 1 );
- }
+ $matches = self::getPathInfo( 'title' );
foreach( $matches as $key => $val) {
$this->data[$key] = $_GET[$key] = $_REQUEST[$key] = $val;
}
@@ -141,7 +201,7 @@ class WebRequest {
* passed on as the value of this URL parameter
* @return array of URL variables to interpolate; empty if no match
*/
- private function extractTitle( $path, $bases, $key=false ) {
+ private static function extractTitle( $path, $bases, $key = false ) {
foreach( (array)$bases as $keyValue => $base ) {
// Find the part after $wgArticlePath
$base = str_replace( '$1', '', $base );
@@ -211,7 +271,7 @@ class WebRequest {
}
} else {
global $wgContLang;
- $data = $wgContLang->normalize( $data );
+ $data = isset( $wgContLang ) ? $wgContLang->normalize( $data ) : UtfNormal::cleanUp( $data );
}
return $data;
}
@@ -269,7 +329,7 @@ class WebRequest {
}
/**
- * Set an aribtrary value into our get/post data.
+ * Set an arbitrary value into our get/post data.
*
* @param $key String: key name to use
* @param $value Mixed: value to set
@@ -357,7 +417,7 @@ class WebRequest {
public function getBool( $name, $default = false ) {
return (bool)$this->getVal( $name, $default );
}
-
+
/**
* Fetch a boolean value from the input or return $default if not set.
* Unlike getBool, the string "false" will result in boolean false, which is
@@ -409,6 +469,8 @@ class WebRequest {
* Extracts the given named values into an array.
* If no arguments are given, returns all input values.
* No transformation is performed on the values.
+ *
+ * @return array
*/
public function getValues() {
$names = func_get_args();
@@ -427,6 +489,26 @@ class WebRequest {
}
/**
+ * Returns the names of all input values excluding those in $exclude.
+ *
+ * @param $exclude Array
+ * @return array
+ */
+ public function getValueNames( $exclude = array() ) {
+ return array_diff( array_keys( $this->getValues() ), $exclude );
+ }
+
+ /**
+ * Get the values passed in the query string.
+ * No transformation is performed on the values.
+ *
+ * @return Array
+ */
+ public function getQueryValues() {
+ return $_GET;
+ }
+
+ /**
* Returns true if the present request was reached by a POST operation,
* false otherwise (GET, HEAD, or command-line).
*
@@ -471,15 +553,18 @@ class WebRequest {
}
/**
- * Return the path portion of the request URI.
+ * Return the path and query string portion of the request URI.
+ * This will be suitable for use as a relative link in HTML output.
*
* @return String
*/
public function getRequestURL() {
- if( isset( $_SERVER['REQUEST_URI']) && strlen($_SERVER['REQUEST_URI']) ) {
+ if( isset( $_SERVER['REQUEST_URI'] ) && strlen( $_SERVER['REQUEST_URI'] ) ) {
$base = $_SERVER['REQUEST_URI'];
- } elseif( isset( $_SERVER['SCRIPT_NAME'] ) ) {
+ } elseif ( isset( $_SERVER['HTTP_X_ORIGINAL_URL'] ) && strlen( $_SERVER['HTTP_X_ORIGINAL_URL'] ) ) {
// Probably IIS; doesn't set REQUEST_URI
+ $base = $_SERVER['HTTP_X_ORIGINAL_URL'];
+ } elseif( isset( $_SERVER['SCRIPT_NAME'] ) ) {
$base = $_SERVER['SCRIPT_NAME'];
if( isset( $_SERVER['QUERY_STRING'] ) && $_SERVER['QUERY_STRING'] != '' ) {
$base .= '?' . $_SERVER['QUERY_STRING'];
@@ -487,8 +572,8 @@ class WebRequest {
} else {
// This shouldn't happen!
throw new MWException( "Web server doesn't provide either " .
- "REQUEST_URI or SCRIPT_NAME. Report details of your " .
- "web server configuration to http://bugzilla.wikimedia.org/" );
+ "REQUEST_URI, HTTP_X_ORIGINAL_URL or SCRIPT_NAME. Report details " .
+ "of your web server configuration to http://bugzilla.wikimedia.org/" );
}
// User-agents should not send a fragment with the URI, but
// if they do, and the web server passes it on to us, we
@@ -498,7 +583,7 @@ class WebRequest {
if( $hash !== false ) {
$base = substr( $base, 0, $hash );
}
- if( $base{0} == '/' ) {
+ if( $base[0] == '/' ) {
return $base;
} else {
// We may get paths with a host prepended; strip it.
@@ -507,13 +592,17 @@ class WebRequest {
}
/**
- * Return the request URI with the canonical service and hostname.
+ * Return the request URI with the canonical service and hostname, path,
+ * and query string. This will be suitable for use as an absolute link
+ * in HTML or other output.
+ *
+ * If $wgServer is protocol-relative, this will return a fully
+ * qualified URL with the protocol that was used for this request.
*
* @return String
*/
public function getFullRequestURL() {
- global $wgServer;
- return $wgServer . $this->getRequestURL();
+ return wfExpandUrl( $this->getRequestURL(), PROTO_CURRENT );
}
/**
@@ -523,23 +612,7 @@ class WebRequest {
* @return String
*/
public function appendQuery( $query ) {
- global $wgTitle;
- $basequery = '';
- foreach( $_GET as $var => $val ) {
- if ( $var == 'title' )
- continue;
- if ( is_array( $val ) )
- /* This will happen given a request like
- * http://en.wikipedia.org/w/index.php?title[]=Special:Userlogin&returnto[]=Main_Page
- */
- continue;
- $basequery .= '&' . urlencode( $var ) . '=' . urlencode( $val );
- }
- $basequery .= '&' . $query;
-
- # Trim the extra &
- $basequery = substr( $basequery, 1 );
- return $wgTitle->getLocalURL( $basequery );
+ return $this->appendQueryArray( wfCgiToArray( $query ) );
}
/**
@@ -552,6 +625,12 @@ class WebRequest {
return htmlspecialchars( $this->appendQuery( $query ) );
}
+ /**
+ * @param $key
+ * @param $value
+ * @param $onlyquery bool
+ * @return String
+ */
public function appendQueryValue( $key, $value, $onlyquery = false ) {
return $this->appendQueryArray( array( $key => $value ), $onlyquery );
}
@@ -566,7 +645,7 @@ class WebRequest {
*/
public function appendQueryArray( $array, $onlyquery = false ) {
global $wgTitle;
- $newquery = $_GET;
+ $newquery = $this->getQueryValues();
unset( $newquery['title'] );
$newquery = array_merge( $newquery, $array );
$query = wfArrayToCGI( $newquery );
@@ -621,7 +700,7 @@ class WebRequest {
/**
* Return the size of the upload, or 0.
*
- * @deprecated
+ * @deprecated since 1.17
* @param $key String:
* @return integer
*/
@@ -660,7 +739,7 @@ class WebRequest {
/**
* Return a WebRequestUpload object corresponding to the key
*
- * @param @key string
+ * @param $key string
* @return WebRequestUpload
*/
public function getUpload( $key ) {
@@ -683,32 +762,52 @@ class WebRequest {
}
/**
+ * Initialise the header list
+ */
+ private function initHeaders() {
+ if ( count( $this->headers ) ) {
+ return;
+ }
+
+ if ( function_exists( 'apache_request_headers' ) ) {
+ foreach ( apache_request_headers() as $tempName => $tempValue ) {
+ $this->headers[ strtoupper( $tempName ) ] = $tempValue;
+ }
+ } else {
+ foreach ( $_SERVER as $name => $value ) {
+ if ( substr( $name, 0, 5 ) === 'HTTP_' ) {
+ $name = str_replace( '_', '-', substr( $name, 5 ) );
+ $this->headers[$name] = $value;
+ } elseif ( $name === 'CONTENT_LENGTH' ) {
+ $this->headers['CONTENT-LENGTH'] = $value;
+ }
+ }
+ }
+ }
+
+ /**
+ * Get an array containing all request headers
+ *
+ * @return Array mapping header name to its value
+ */
+ public function getAllHeaders() {
+ $this->initHeaders();
+ return $this->headers;
+ }
+
+ /**
* Get a request header, or false if it isn't set
* @param $name String: case-insensitive header name
+ *
+ * @return string|false
*/
public function getHeader( $name ) {
+ $this->initHeaders();
$name = strtoupper( $name );
- if ( function_exists( 'apache_request_headers' ) ) {
- if ( !$this->headers ) {
- foreach ( apache_request_headers() as $tempName => $tempValue ) {
- $this->headers[ strtoupper( $tempName ) ] = $tempValue;
- }
- }
- if ( isset( $this->headers[$name] ) ) {
- return $this->headers[$name];
- } else {
- return false;
- }
+ if ( isset( $this->headers[$name] ) ) {
+ return $this->headers[$name];
} else {
- $name = 'HTTP_' . str_replace( '-', '_', $name );
- if ( $name === 'HTTP_CONTENT_LENGTH' && !isset( $_SERVER[$name] ) ) {
- $name = 'CONTENT_LENGTH';
- }
- if ( isset( $_SERVER[$name] ) ) {
- return $_SERVER[$name];
- } else {
- return false;
- }
+ return false;
}
}
@@ -736,10 +835,13 @@ class WebRequest {
}
/**
- * Check if Internet Explorer will detect an incorrect cache extension in
+ * Check if Internet Explorer will detect an incorrect cache extension in
* PATH_INFO or QUERY_STRING. If the request can't be allowed, show an error
* message or redirect to a safer URL. Returns true if the URL is OK, and
* false if an error message has been shown and the request should be aborted.
+ *
+ * @param $extWhitelist array
+ * @return bool
*/
public function checkUrlExtension( $extWhitelist = array() ) {
global $wgScriptExtension;
@@ -755,15 +857,18 @@ class WebRequest {
}
wfHttpError( 403, 'Forbidden',
'Invalid file extension found in the path info or query string.' );
-
+
return false;
}
return true;
}
/**
- * Attempt to redirect to a URL with a QUERY_STRING that's not dangerous in
+ * Attempt to redirect to a URL with a QUERY_STRING that's not dangerous in
* IE 6. Returns true if it was successful, false otherwise.
+ *
+ * @param $url string
+ * @return bool
*/
protected function doSecurityRedirect( $url ) {
header( 'Location: ' . $url );
@@ -777,11 +882,11 @@ class WebRequest {
<body>
<h1>Security redirect</h1>
<p>
-We can't serve non-HTML content from the URL you have requested, because
+We can't serve non-HTML content from the URL you have requested, because
Internet Explorer would interpret it as an incorrect and potentially dangerous
content type.</p>
-<p>Instead, please use <a href="$encUrl">this URL</a>, which is the same as the URL you have requested, except that
-"&amp;*" is appended. This prevents Internet Explorer from seeing a bogus file
+<p>Instead, please use <a href="$encUrl">this URL</a>, which is the same as the URL you have requested, except that
+"&amp;*" is appended. This prevents Internet Explorer from seeing a bogus file
extension.
</p>
</body>
@@ -806,8 +911,10 @@ HTML;
* Also checks for anything that looks like a file extension at the end of
* QUERY_STRING, since IE 6 and earlier will use this to get the file type
* if there was no dot before the question mark (bug 28235).
+ *
+ * @deprecated Use checkUrlExtension().
*/
- public function isPathInfoBad() {
+ public function isPathInfoBad( $extWhitelist = array() ) {
global $wgScriptExtension;
$extWhitelist[] = ltrim( $wgScriptExtension, '.' );
return IEUrlExtension::areServerVarsBad( $_SERVER, $extWhitelist );
@@ -844,7 +951,7 @@ HTML;
foreach ( $langs as $lang => $val ) {
if ( $val === '' ) {
$langs[$lang] = 1;
- } else if ( $val == 0 ) {
+ } elseif ( $val == 0 ) {
unset($langs[$lang]);
}
}
@@ -1008,6 +1115,14 @@ class FauxRequest extends WebRequest {
return $this->data;
}
+ public function getQueryValues() {
+ if ( $this->wasPosted ) {
+ return array();
+ } else {
+ return $this->data;
+ }
+ }
+
public function wasPosted() {
return $this->wasPosted;
}
@@ -1020,28 +1135,6 @@ class FauxRequest extends WebRequest {
$this->notImplemented( __METHOD__ );
}
- public function appendQuery( $query ) {
- global $wgTitle;
- $basequery = '';
- foreach( $this->data as $var => $val ) {
- if ( $var == 'title' ) {
- continue;
- }
- if ( is_array( $val ) ) {
- /* This will happen given a request like
- * http://en.wikipedia.org/w/index.php?title[]=Special:Userlogin&returnto[]=Main_Page
- */
- continue;
- }
- $basequery .= '&' . urlencode( $var ) . '=' . urlencode( $val );
- }
- $basequery .= '&' . $query;
-
- # Trim the extra &
- $basequery = substr( $basequery, 1 );
- return $wgTitle->getLocalURL( $basequery );
- }
-
public function getHeader( $name ) {
return isset( $this->headers[$name] ) ? $this->headers[$name] : false;
}
@@ -1059,6 +1152,10 @@ class FauxRequest extends WebRequest {
$this->session[$key] = $data;
}
+ public function getSessionArray() {
+ return $this->session;
+ }
+
public function isPathInfoBad( $extWhitelist = array() ) {
return false;
}
diff --git a/includes/WebResponse.php b/includes/WebResponse.php
index 2b1ec04c..1101d75d 100644
--- a/includes/WebResponse.php
+++ b/includes/WebResponse.php
@@ -2,6 +2,21 @@
/**
* Classes used to send headers and cookies back to the user
*
+ * 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
*/
@@ -17,78 +32,121 @@ class WebResponse {
* header()
* @param $string String: header to output
* @param $replace Bool: replace current similar header
+ * @param $http_response_code null|int Forces the HTTP response code to the specified value.
*/
- public function header($string, $replace=true) {
- header($string,$replace);
+ public function header( $string, $replace = true, $http_response_code = null ) {
+ header( $string, $replace, $http_response_code );
}
- /** Set the browser cookie
+ /**
+ * Set the browser cookie
* @param $name String: name of cookie
* @param $value String: value to give cookie
* @param $expire Int: number of seconds til cookie expires
+ * @param $prefix String: Prefix to use, if not $wgCookiePrefix (use '' for no prefix)
+ * @param @domain String: Cookie domain to use, if not $wgCookieDomain
*/
- public function setcookie( $name, $value, $expire = 0 ) {
+ public function setcookie( $name, $value, $expire = 0, $prefix = null, $domain = null ) {
global $wgCookiePath, $wgCookiePrefix, $wgCookieDomain;
global $wgCookieSecure,$wgCookieExpiration, $wgCookieHttpOnly;
if ( $expire == 0 ) {
$expire = time() + $wgCookieExpiration;
}
- $httpOnlySafe = wfHttpOnlySafe();
+ if( $prefix === null ) {
+ $prefix = $wgCookiePrefix;
+ }
+ if( $domain === null ) {
+ $domain = $wgCookieDomain;
+ }
+ $httpOnlySafe = wfHttpOnlySafe() && $wgCookieHttpOnly;
wfDebugLog( 'cookie',
'setcookie: "' . implode( '", "',
array(
- $wgCookiePrefix . $name,
+ $prefix . $name,
$value,
$expire,
$wgCookiePath,
- $wgCookieDomain,
+ $domain,
$wgCookieSecure,
- $httpOnlySafe && $wgCookieHttpOnly ) ) . '"' );
- if( $httpOnlySafe && isset( $wgCookieHttpOnly ) ) {
- setcookie( $wgCookiePrefix . $name,
- $value,
- $expire,
- $wgCookiePath,
- $wgCookieDomain,
- $wgCookieSecure,
- $wgCookieHttpOnly );
- } else {
- // setcookie() fails on PHP 5.1 if you give it future-compat paramters.
- // stab stab!
- setcookie( $wgCookiePrefix . $name,
- $value,
- $expire,
- $wgCookiePath,
- $wgCookieDomain,
- $wgCookieSecure );
- }
+ $httpOnlySafe ) ) . '"' );
+ setcookie( $prefix . $name,
+ $value,
+ $expire,
+ $wgCookiePath,
+ $domain,
+ $wgCookieSecure,
+ $httpOnlySafe );
}
}
-
+/**
+ * @ingroup HTTP
+ */
class FauxResponse extends WebResponse {
private $headers;
private $cookies;
+ private $code;
+
+ /**
+ * Stores a HTTP header
+ * @param $string String: header to output
+ * @param $replace Bool: replace current similar header
+ * @param $http_response_code null|int Forces the HTTP response code to the specified value.
+ */
+ public function header( $string, $replace = true, $http_response_code = null ) {
+ if ( substr( $string, 0, 5 ) == 'HTTP/' ) {
+ $parts = explode( ' ', $string, 3 );
+ $this->code = intval( $parts[1] );
+ } else {
+ list( $key, $val ) = array_map( 'trim', explode( ":", $string, 2 ) );
- public function header($string, $replace=true) {
- list($key, $val) = explode(":", $string, 2);
+ if( $replace || !isset( $this->headers[$key] ) ) {
+ $this->headers[$key] = $val;
+ }
+ }
- if($replace || !isset($this->headers[$key])) {
- $this->headers[$key] = $val;
+ if ( $http_response_code !== null ) {
+ $this->code = intval( $http_response_code );
}
}
- public function getheader($key) {
- return $this->headers[$key];
+ /**
+ * @param $key string
+ * @return string
+ */
+ public function getheader( $key ) {
+ if ( isset( $this->headers[$key] ) ) {
+ return $this->headers[$key];
+ }
+ return null;
+ }
+
+ /**
+ * Get the HTTP response code, null if not set
+ *
+ * @return Int or null
+ */
+ public function getStatusCode() {
+ return $this->code;
}
- public function setcookie( $name, $value, $expire = 0 ) {
+ /**
+ * @param $name String: name of cookie
+ * @param $value String: value to give cookie
+ * @param $expire Int: number of seconds til cookie expires
+ */
+ public function setcookie( $name, $value, $expire = 0, $prefix = null, $domain = null ) {
$this->cookies[$name] = $value;
}
+ /**
+ * @param $name string
+ * @return string
+ */
public function getcookie( $name ) {
- if ( isset($this->cookies[$name]) ) {
+ if ( isset( $this->cookies[$name] ) ) {
return $this->cookies[$name];
}
+ return null;
}
-} \ No newline at end of file
+}
diff --git a/includes/WebStart.php b/includes/WebStart.php
index b5140718..6cfb4722 100644
--- a/includes/WebStart.php
+++ b/includes/WebStart.php
@@ -5,6 +5,21 @@
* configuration, and optionally loads Setup.php depending on whether
* MW_NO_SETUP is defined.
*
+ * 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
*/
@@ -42,6 +57,11 @@ if ( ini_get( 'register_globals' ) ) {
}
}
+# bug 15461: Make IE8 turn off content sniffing. Everbody else should ignore this
+# We're adding it here so that it's *always* set, even for alternate entry
+# points and when $wgOut gets disabled or overridden.
+header( 'X-Content-Type-Options: nosniff' );
+
$wgRequestTime = microtime(true);
# getrusage() does not exist on the Microsoft Windows platforms, catching this
if ( function_exists ( 'getrusage' ) ) {
@@ -67,45 +87,41 @@ if ( $IP === false ) {
$IP = realpath( '.' );
}
-
-# Start profiler
-if( file_exists("$IP/StartProfiler.php") ) {
- require_once( "$IP/StartProfiler.php" );
+if ( isset( $_SERVER['MW_COMPILED'] ) ) {
+ define( 'MW_COMPILED', 1 );
} else {
- require_once( "$IP/includes/ProfilerStub.php" );
+ # Get MWInit class
+ require_once( "$IP/includes/Init.php" );
+
+ # Start the autoloader, so that extensions can derive classes from core files
+ require_once( "$IP/includes/AutoLoader.php" );
+
+ # Load the profiler
+ require_once( "$IP/includes/profiler/Profiler.php" );
+
+ # Load up some global defines.
+ require_once( "$IP/includes/Defines.php" );
}
-wfProfileIn( 'WebStart.php-conf' );
-# Load up some global defines.
-require_once( "$IP/includes/Defines.php" );
-
-# Check for PHP 5
-if ( !function_exists( 'version_compare' )
- || version_compare( phpversion(), '5.0.0' ) < 0
-) {
- define( 'MW_PHP4', '1' );
- require( "$IP/includes/DefaultSettings.php" );
- require( "$IP/includes/templates/PHP4.php" );
- exit;
+# Start the profiler
+$wgProfiler = array();
+if ( file_exists( "$IP/StartProfiler.php" ) ) {
+ require( "$IP/StartProfiler.php" );
}
-# Start the autoloader, so that extensions can derive classes from core files
-require_once( "$IP/includes/AutoLoader.php" );
+wfProfileIn( 'WebStart.php-conf' );
+
# Load default settings
-require_once( "$IP/includes/DefaultSettings.php" );
+require_once( MWInit::compiledPath( "includes/DefaultSettings.php" ) );
if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
# Use a callback function to configure MediaWiki
- $callback = MW_CONFIG_CALLBACK;
- # PHP 5.1 doesn't support "class::method" for call_user_func, so split it
- if ( strpos( $callback, '::' ) !== false ) {
- $callback = explode( '::', $callback, 2);
- }
- call_user_func( $callback );
+ MWFunction::call( MW_CONFIG_CALLBACK );
} else {
- if ( !defined('MW_CONFIG_FILE') )
- define('MW_CONFIG_FILE', "$IP/LocalSettings.php");
-
+ if ( !defined( 'MW_CONFIG_FILE' ) ) {
+ define('MW_CONFIG_FILE', MWInit::interpretedPath( 'LocalSettings.php' ) );
+ }
+
# LocalSettings.php is the per site customization file. If it does not exist
# the wiki installer needs to be launched or the generated file uploaded to
# the root wiki directory
@@ -119,7 +135,7 @@ if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
}
if ( $wgEnableSelenium ) {
- require_once( "$IP/includes/SeleniumWebSettings.php" );
+ require_once( MWInit::compiledPath( "includes/SeleniumWebSettings.php" ) );
}
wfProfileOut( 'WebStart.php-conf' );
@@ -130,12 +146,14 @@ wfProfileIn( 'WebStart.php-ob_start' );
# that would cause us to potentially mix gzip and non-gzip output, creating a
# big mess.
if ( !defined( 'MW_NO_OUTPUT_BUFFER' ) && ob_get_level() == 0 ) {
- require_once( "$IP/includes/OutputHandler.php" );
+ if ( !defined( 'MW_COMPILED' ) ) {
+ require_once( "$IP/includes/OutputHandler.php" );
+ }
ob_start( 'wfOutputHandler' );
}
wfProfileOut( 'WebStart.php-ob_start' );
if ( !defined( 'MW_NO_SETUP' ) ) {
- require_once( "$IP/includes/Setup.php" );
+ require_once( MWInit::compiledPath( "includes/Setup.php" ) );
}
diff --git a/includes/Wiki.php b/includes/Wiki.php
index 4c3af0f7..173fcd94 100644
--- a/includes/Wiki.php
+++ b/includes/Wiki.php
@@ -1,241 +1,206 @@
<?php
/**
- * MediaWiki is the to-be base class for this whole project
+ * Helper class for the index.php entry point.
+ *
+ * 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
+ */
+
+/**
+ * The MediaWiki class is the helper class for the index.php entry point.
*
* @internal documentation reviewed 15 Mar 2010
*/
class MediaWiki {
- var $params = array();
-
- /** Constructor */
- function __construct() {}
/**
- * Stores key/value pairs to circumvent global variables
- * Note that keys are case-insensitive!
- *
- * @param $key String: key to store
- * @param $value Mixed: value to put for the key
+ * TODO: fold $output, etc, into this
+ * @var IContextSource
*/
- function setVal( $key, &$value ) {
- $key = strtolower( $key );
- $this->params[$key] =& $value;
- }
+ private $context;
- /**
- * Retrieves key/value pairs to circumvent global variables
- * Note that keys are case-insensitive!
- *
- * @param $key String: key to get
- * @param $default string default value, defaults to empty string
- * @return $default Mixed: default value if if the key doesn't exist
- */
- function getVal( $key, $default = '' ) {
- $key = strtolower( $key );
- if( isset( $this->params[$key] ) ) {
- return $this->params[$key];
- }
- return $default;
+ public function request( WebRequest $x = null ){
+ $old = $this->context->getRequest();
+ $this->context->setRequest( $x );
+ return $old;
}
- /**
- * Initialization of ... everything
- * Performs the request too
- *
- * @param $title Title ($wgTitle)
- * @param $article Article
- * @param $output OutputPage
- * @param $user User
- * @param $request WebRequest
- */
- function performRequestForTitle( &$title, &$article, &$output, &$user, $request ) {
- wfProfileIn( __METHOD__ );
-
- $output->setTitle( $title );
-
- wfRunHooks( 'BeforeInitialize', array( &$title, &$article, &$output, &$user, $request, $this ) );
-
- if( !$this->preliminaryChecks( $title, $output ) ) {
- wfProfileOut( __METHOD__ );
- return;
- }
- // Call handleSpecialCases() to deal with all special requests...
- if( !$this->handleSpecialCases( $title, $output, $request ) ) {
- // ...otherwise treat it as an article view. The article
- // may be a redirect to another article or URL.
- $new_article = $this->initializeArticle( $title, $output, $request );
- if( is_object( $new_article ) ) {
- $article = $new_article;
- $this->performAction( $output, $article, $title, $user, $request );
- } elseif( is_string( $new_article ) ) {
- $output->redirect( $new_article );
- } else {
- wfProfileOut( __METHOD__ );
- throw new MWException( "Shouldn't happen: MediaWiki::initializeArticle() returned neither an object nor a URL" );
- }
- }
- wfProfileOut( __METHOD__ );
+ public function output( OutputPage $x = null ){
+ $old = $this->context->getOutput();
+ $this->context->setOutput( $x );
+ return $old;
}
- /**
- * Check if the maximum lag of database slaves is higher that $maxLag, and
- * if it's the case, output an error message
- *
- * @param $maxLag int: maximum lag allowed for the request, as supplied by
- * the client
- * @return bool true if the request can continue
- */
- function checkMaxLag( $maxLag ) {
- list( $host, $lag ) = wfGetLB()->getMaxLag();
- if( $lag > $maxLag ) {
- wfMaxlagError( $host, $lag, $maxLag );
- return false;
- } else {
- return true;
+ public function __construct( IContextSource $context = null ) {
+ if ( !$context ) {
+ $context = RequestContext::getMain();
}
+
+ $this->context = $context;
+ $this->context->setTitle( $this->parseTitle() );
}
/**
- * Checks some initial queries
- * Note that $title here is *not* a Title object, but a string!
+ * Parse the request to get the Title object
*
- * @param $title String
- * @param $action String
* @return Title object to be $wgTitle
*/
- function checkInitialQueries( $title, $action ) {
- global $wgOut, $wgRequest, $wgContLang;
- if( $wgRequest->getVal( 'printable' ) === 'yes' ) {
- $wgOut->setPrintable();
- }
+ private function parseTitle() {
+ global $wgContLang;
- $curid = $wgRequest->getInt( 'curid' );
- if( $wgRequest->getCheck( 'search' ) ) {
+ $request = $this->context->getRequest();
+ $curid = $request->getInt( 'curid' );
+ $title = $request->getVal( 'title' );
+
+ if ( $request->getCheck( 'search' ) ) {
// Compatibility with old search URLs which didn't use Special:Search
// Just check for presence here, so blank requests still
// show the search page when using ugly URLs (bug 8054).
$ret = SpecialPage::getTitleFor( 'Search' );
- } elseif( $curid ) {
+ } elseif ( $curid ) {
// URLs like this are generated by RC, because rc_title isn't always accurate
$ret = Title::newFromID( $curid );
- } elseif( $title == '' && $action != 'delete' ) {
+ } elseif ( $title == '' && $this->getAction() != 'delete' ) {
$ret = Title::newMainPage();
} else {
$ret = Title::newFromURL( $title );
// check variant links so that interwiki links don't have to worry
// about the possible different language variants
- if( count( $wgContLang->getVariants() ) > 1 && !is_null( $ret ) && $ret->getArticleID() == 0 )
+ if ( count( $wgContLang->getVariants() ) > 1
+ && !is_null( $ret ) && $ret->getArticleID() == 0 )
+ {
$wgContLang->findVariantLink( $title, $ret );
+ }
}
// For non-special titles, check for implicit titles
- if( is_null( $ret ) || $ret->getNamespace() != NS_SPECIAL ) {
+ if ( is_null( $ret ) || $ret->getNamespace() != NS_SPECIAL ) {
// We can have urls with just ?diff=,?oldid= or even just ?diff=
- $oldid = $wgRequest->getInt( 'oldid' );
- $oldid = $oldid ? $oldid : $wgRequest->getInt( 'diff' );
+ $oldid = $request->getInt( 'oldid' );
+ $oldid = $oldid ? $oldid : $request->getInt( 'diff' );
// Allow oldid to override a changed or missing title
- if( $oldid ) {
+ if ( $oldid ) {
$rev = Revision::newFromId( $oldid );
$ret = $rev ? $rev->getTitle() : $ret;
}
}
+
+ if ( $ret === null || ( $ret->getDBkey() == '' && $ret->getInterwiki() == '' ) ) {
+ $ret = SpecialPage::getTitleFor( 'Badtitle' );
+ }
+
return $ret;
}
/**
- * Checks for anon-cannot-read case
- *
- * @param $title Title
- * @param $output OutputPage
- * @return boolean true if successful
+ * Get the Title object that we'll be acting on, as specified in the WebRequest
+ * @return Title
*/
- function preliminaryChecks( &$title, &$output ) {
- global $wgTitle;
- // If the user is not logged in, the Namespace:title of the article must be in
- // the Read array in order for the user to see it. (We have to check here to
- // catch special pages etc. We check again in Article::view())
- if( !is_null( $title ) && !$title->userCanRead() ) {
- // Bug 32276: allowing the skin to generate output with $wgTitle
- // set to the input title would allow anonymous users to
- // determine whether a page exists, potentially leaking private data. In fact, the
- // curid and oldid request parameters would allow page titles to be enumerated even
- // when they are not guessable. So we reset the title to Special:Badtitle before the
- // permissions error is displayed.
- $badtitle = SpecialPage::getTitleFor( 'Badtitle' );
- $output->setTitle( $badtitle );
- $wgTitle = $badtitle;
-
- $output->loginToUse();
- $this->finalCleanup( $output );
- $output->disable();
- return false;
+ public function getTitle(){
+ if( $this->context->getTitle() === null ){
+ $this->context->setTitle( $this->parseTitle() );
}
- return true;
+ return $this->context->getTitle();
}
/**
- * Initialize some special cases:
+ * Performs the request.
* - bad titles
+ * - read restriction
* - local interwiki redirects
* - redirect loop
* - special pages
+ * - normal pages
*
- * @param $title Title
- * @param $output OutputPage
- * @param $request WebRequest
- * @return bool true if the request is already executed
+ * @return void
*/
- function handleSpecialCases( &$title, &$output, $request ) {
+ private function performRequest() {
+ global $wgServer, $wgUsePathInfo;
+
wfProfileIn( __METHOD__ );
- $action = $this->getVal( 'Action' );
+ $request = $this->context->getRequest();
+ $title = $this->context->getTitle();
+ $output = $this->context->getOutput();
+ $user = $this->context->getUser();
+
+ if ( $request->getVal( 'printable' ) === 'yes' ) {
+ $output->setPrintable();
+ }
+
+ $pageView = false; // was an article or special page viewed?
+
+ wfRunHooks( 'BeforeInitialize',
+ array( &$title, null, &$output, &$user, $request, $this ) );
// Invalid titles. Bug 21776: The interwikis must redirect even if the page name is empty.
- if( is_null($title) || ( ( $title->getDBkey() == '' ) && ( $title->getInterwiki() == '' ) ) ) {
- $title = SpecialPage::getTitleFor( 'Badtitle' );
- $output->setTitle( $title ); // bug 21456
+ if ( is_null( $title ) || ( $title->getDBkey() == '' && $title->getInterwiki() == '' ) ||
+ $title->isSpecial( 'Badtitle' ) )
+ {
+ $this->context->setTitle( SpecialPage::getTitleFor( 'Badtitle' ) );
// Die now before we mess up $wgArticle and the skin stops working
throw new ErrorPageError( 'badtitle', 'badtitletext' );
-
+ // If the user is not logged in, the Namespace:title of the article must be in
+ // the Read array in order for the user to see it. (We have to check here to
+ // catch special pages etc. We check again in Article::view())
+ } elseif ( !$title->userCanRead() ) {
+ $output->loginToUse();
// Interwiki redirects
- } else if( $title->getInterwiki() != '' ) {
+ } elseif ( $title->getInterwiki() != '' ) {
$rdfrom = $request->getVal( 'rdfrom' );
- if( $rdfrom ) {
+ if ( $rdfrom ) {
$url = $title->getFullURL( 'rdfrom=' . urlencode( $rdfrom ) );
} else {
$query = $request->getValues();
unset( $query['title'] );
$url = $title->getFullURL( $query );
}
- /* Check for a redirect loop */
- if( !preg_match( '/^' . preg_quote( $this->getVal('Server'), '/' ) . '/', $url ) && $title->isLocal() ) {
+ // Check for a redirect loop
+ if ( !preg_match( '/^' . preg_quote( $wgServer, '/' ) . '/', $url )
+ && $title->isLocal() )
+ {
// 301 so google et al report the target as the actual url.
$output->redirect( $url, 301 );
} else {
- $title = SpecialPage::getTitleFor( 'Badtitle' );
- $output->setTitle( $title ); // bug 21456
+ $this->context->setTitle( SpecialPage::getTitleFor( 'Badtitle' ) );
wfProfileOut( __METHOD__ );
throw new ErrorPageError( 'badtitle', 'badtitletext' );
}
// Redirect loops, no title in URL, $wgUsePathInfo URLs, and URLs with a variant
- } else if ( $action == 'view' && !$request->wasPosted()
- && ( $request->getVal( 'title' ) === null || $title->getPrefixedDBKey() != $request->getVal( 'title' ) )
- && !count( array_diff( array_keys( $request->getValues() ), array( 'action', 'title' ) ) ) )
+ } elseif ( $request->getVal( 'action', 'view' ) == 'view' && !$request->wasPosted()
+ && ( $request->getVal( 'title' ) === null ||
+ $title->getPrefixedDBKey() != $request->getVal( 'title' ) )
+ && !count( $request->getValueNames( array( 'action', 'title' ) ) )
+ && wfRunHooks( 'TestCanonicalRedirect', array( $request, $title, $output ) ) )
{
if ( $title->getNamespace() == NS_SPECIAL ) {
- list( $name, $subpage ) = SpecialPage::resolveAliasWithSubpage( $title->getDBkey() );
+ list( $name, $subpage ) = SpecialPageFactory::resolveAlias( $title->getDBkey() );
if ( $name ) {
$title = SpecialPage::getTitleFor( $name, $subpage );
}
}
- $targetUrl = $title->getFullURL();
+ $targetUrl = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
// Redirect to canonical url, make it a 301 to allow caching
- if( $targetUrl == $request->getFullRequestURL() ) {
+ if ( $targetUrl == $request->getFullRequestURL() ) {
$message = "Redirect loop detected!\n\n" .
"This means the wiki got confused about what page was " .
"requested; this sometimes happens when moving a wiki " .
"to a new server or changing the server configuration.\n\n";
- if( $this->getVal( 'UsePathInfo' ) ) {
+ if ( $wgUsePathInfo ) {
$message .= "The wiki is trying to interpret the page " .
"title from the URL path portion (PATH_INFO), which " .
"sometimes fails depending on the web server. Try " .
@@ -250,78 +215,117 @@ class MediaWiki {
"to true.";
}
wfHttpError( 500, "Internal error", $message );
- wfProfileOut( __METHOD__ );
- return false;
} else {
$output->setSquidMaxage( 1200 );
$output->redirect( $targetUrl, '301' );
}
// Special pages
- } else if( NS_SPECIAL == $title->getNamespace() ) {
- /* actions that need to be made when we have a special pages */
- SpecialPage::executePath( $title );
+ } elseif ( NS_SPECIAL == $title->getNamespace() ) {
+ $pageView = true;
+ // Actions that need to be made when we have a special pages
+ SpecialPageFactory::executePath( $title, $this->context );
} else {
- /* No match to special cases */
- wfProfileOut( __METHOD__ );
- return false;
+ // ...otherwise treat it as an article view. The article
+ // may be a redirect to another article or URL.
+ $article = $this->initializeArticle();
+ if ( is_object( $article ) ) {
+ $pageView = true;
+ /**
+ * $wgArticle is deprecated, do not use it. This will possibly be removed
+ * entirely in 1.20 or 1.21
+ * @deprecated since 1.18
+ */
+ global $wgArticle;
+ $wgArticle = $article;
+
+ $this->performAction( $article );
+ } elseif ( is_string( $article ) ) {
+ $output->redirect( $article );
+ } else {
+ wfProfileOut( __METHOD__ );
+ throw new MWException( "Shouldn't happen: MediaWiki::initializeArticle() returned neither an object nor a URL" );
+ }
+ }
+
+ if ( $pageView ) {
+ // Promote user to any groups they meet the criteria for
+ $user->addAutopromoteOnceGroups( 'onView' );
}
- /* Did match a special case */
+
wfProfileOut( __METHOD__ );
- return true;
}
/**
* Create an Article object of the appropriate class for the given page.
*
+ * @deprecated in 1.18; use Article::newFromTitle() instead
* @param $title Title
+ * @param $context IContextSource
* @return Article object
*/
- static function articleFromTitle( &$title ) {
- if( NS_MEDIA == $title->getNamespace() ) {
- // FIXME: where should this go?
- $title = Title::makeTitle( NS_FILE, $title->getDBkey() );
- }
+ public static function articleFromTitle( $title, IContextSource $context ) {
+ return Article::newFromTitle( $title, $context );
+ }
- $article = null;
- wfRunHooks( 'ArticleFromTitle', array( &$title, &$article ) );
- if( $article ) {
- return $article;
+ /**
+ * Returns the action that will be executed, not necessarily the one passed
+ * passed through the "action" parameter. Actions disabled in
+ * $wgDisabledActions will be replaced by "nosuchaction"
+ *
+ * @return String: action
+ */
+ public function getAction() {
+ global $wgDisabledActions;
+
+ $request = $this->context->getRequest();
+ $action = $request->getVal( 'action', 'view' );
+
+ // Check for disabled actions
+ if ( in_array( $action, $wgDisabledActions ) ) {
+ return 'nosuchaction';
}
- switch( $title->getNamespace() ) {
- case NS_FILE:
- return new ImagePage( $title );
- case NS_CATEGORY:
- return new CategoryPage( $title );
- default:
- return new Article( $title );
+ // Workaround for bug #20966: inability of IE to provide an action dependent
+ // on which submit button is clicked.
+ if ( $action === 'historysubmit' ) {
+ if ( $request->getBool( 'revisiondelete' ) ) {
+ return 'revisiondelete';
+ } else {
+ return 'view';
+ }
+ } elseif ( $action == 'editredlink' ) {
+ return 'edit';
}
+
+ return $action;
}
/**
- * Initialize the object to be known as $wgArticle for "standard" actions
+ * Initialize the main Article object for "standard" actions (view, etc)
* Create an Article object for the page, following redirects if needed.
*
- * @param $title Title ($wgTitle)
- * @param $output OutputPage ($wgOut)
- * @param $request WebRequest ($wgRequest)
* @return mixed an Article, or a string to redirect to another URL
*/
- function initializeArticle( &$title, &$output, $request ) {
+ private function initializeArticle() {
+ global $wgDisableHardRedirects;
+
wfProfileIn( __METHOD__ );
- $action = $this->getVal( 'action', 'view' );
- $article = self::articleFromTitle( $title );
+ $request = $this->context->getRequest();
+ $title = $this->context->getTitle();
+
+ $action = $request->getVal( 'action', 'view' );
+ $article = Article::newFromTitle( $title, $this->context );
// NS_MEDIAWIKI has no redirects.
// It is also used for CSS/JS, so performance matters here...
- if( $title->getNamespace() == NS_MEDIAWIKI ) {
+ if ( $title->getNamespace() == NS_MEDIAWIKI ) {
wfProfileOut( __METHOD__ );
return $article;
}
// Namespace might change when using redirects
// Check for redirects ...
- $file = ($title->getNamespace() == NS_FILE) ? $article->getFile() : null;
- if( ( $action == 'view' || $action == 'render' ) // ... for actions that show content
+ $file = ( $title->getNamespace() == NS_FILE ) ? $article->getFile() : null;
+ if ( ( $action == 'view' || $action == 'render' ) // ... for actions that show content
&& !$request->getVal( 'oldid' ) && // ... and are not old revisions
!$request->getVal( 'diff' ) && // ... and not when showing diff
$request->getVal( 'redirect' ) != 'no' && // ... unless explicitly told not to
@@ -331,59 +335,53 @@ class MediaWiki {
// Give extensions a change to ignore/handle redirects as needed
$ignoreRedirect = $target = false;
- $dbr = wfGetDB( DB_SLAVE );
- $article->loadPageData( $article->pageDataFromTitle( $dbr, $title ) );
-
wfRunHooks( 'InitializeArticleMaybeRedirect',
- array(&$title,&$request,&$ignoreRedirect,&$target,&$article) );
+ array( &$title, &$request, &$ignoreRedirect, &$target, &$article ) );
// Follow redirects only for... redirects.
// If $target is set, then a hook wanted to redirect.
- if( !$ignoreRedirect && ($target || $article->isRedirect()) ) {
+ if ( !$ignoreRedirect && ( $target || $article->isRedirect() ) ) {
// Is the target already set by an extension?
$target = $target ? $target : $article->followRedirect();
- if( is_string( $target ) ) {
- if( !$this->getVal( 'DisableHardRedirects' ) ) {
+ if ( is_string( $target ) ) {
+ if ( !$wgDisableHardRedirects ) {
// we'll need to redirect
wfProfileOut( __METHOD__ );
return $target;
}
}
- if( is_object($target) ) {
+ if ( is_object( $target ) ) {
// Rewrite environment to redirected article
- $rarticle = self::articleFromTitle( $target );
- $rarticle->loadPageData( $rarticle->pageDataFromTitle( $dbr, $target ) );
- if( $rarticle->exists() || ( is_object( $file ) && !$file->isLocal() ) ) {
+ $rarticle = Article::newFromTitle( $target, $this->context );
+ $rarticle->loadPageData();
+ if ( $rarticle->exists() || ( is_object( $file ) && !$file->isLocal() ) ) {
$rarticle->setRedirectedFrom( $title );
$article = $rarticle;
- $title = $target;
- $output->setTitle( $title );
+ $this->context->setTitle( $target );
}
}
} else {
- $title = $article->getTitle();
+ $this->context->setTitle( $article->getTitle() );
}
}
+
wfProfileOut( __METHOD__ );
return $article;
}
/**
- * Cleaning up request by doing:
- ** deferred updates, DB transaction, and the output
- *
- * @param $output OutputPage
+ * Cleaning up request by doing deferred updates, DB transaction, and the output
*/
- function finalCleanup( &$output ) {
+ public function finalCleanup() {
wfProfileIn( __METHOD__ );
// Now commit any transactions, so that unreported errors after
// output() don't roll back the whole DB transaction
$factory = wfGetLBFactory();
$factory->commitMasterChanges();
// Output everything!
- $output->output();
+ $this->context->getOutput()->output();
// Do any deferred jobs
- wfDoUpdates( true );
+ wfDoUpdates( 'commit' );
$this->doJobs();
wfProfileOut( __METHOD__ );
}
@@ -391,20 +389,20 @@ class MediaWiki {
/**
* Do a job from the job queue
*/
- function doJobs() {
- $jobRunRate = $this->getVal( 'JobRunRate' );
+ private function doJobs() {
+ global $wgJobRunRate;
- if( $jobRunRate <= 0 || wfReadOnly() ) {
+ if ( $wgJobRunRate <= 0 || wfReadOnly() ) {
return;
}
- if( $jobRunRate < 1 ) {
+ if ( $wgJobRunRate < 1 ) {
$max = mt_getrandmax();
- if( mt_rand( 0, $max ) > $max * $jobRunRate ) {
+ if ( mt_rand( 0, $max ) > $max * $wgJobRunRate ) {
return;
}
$n = 1;
} else {
- $n = intval( $jobRunRate );
+ $n = intval( $wgJobRunRate );
}
while ( $n-- && false != ( $job = Job::pop() ) ) {
@@ -412,8 +410,8 @@ class MediaWiki {
$t = -wfTime();
$success = $job->run();
$t += wfTime();
- $t = round( $t*1000 );
- if( !$success ) {
+ $t = round( $t * 1000 );
+ if ( !$success ) {
$output .= "Error: " . $job->getLastError() . ", Time: $t ms\n";
} else {
$output .= "Success, Time: $t ms\n";
@@ -425,7 +423,8 @@ class MediaWiki {
/**
* Ends this task peacefully
*/
- function restInPeace() {
+ public function restInPeace() {
+ MessageCache::logMessages();
wfLogProfilingData();
// Commit and close up!
$factory = wfGetLBFactory();
@@ -437,126 +436,196 @@ class MediaWiki {
/**
* Perform one of the "standard" actions
*
- * @param $output OutputPage
* @param $article Article
- * @param $title Title
- * @param $user User
- * @param $request WebRequest
*/
- function performAction( &$output, &$article, &$title, &$user, &$request ) {
+ private function performAction( Page $article ) {
+ global $wgSquidMaxage, $wgUseExternalEditor;
+
wfProfileIn( __METHOD__ );
- if( !wfRunHooks( 'MediaWikiPerformAction', array( $output, $article, $title, $user, $request, $this ) ) ) {
+ $request = $this->context->getRequest();
+ $output = $this->context->getOutput();
+ $title = $this->context->getTitle();
+ $user = $this->context->getUser();
+
+ if ( !wfRunHooks( 'MediaWikiPerformAction',
+ array( $output, $article, $title, $user, $request, $this ) ) )
+ {
wfProfileOut( __METHOD__ );
return;
}
- $action = $this->getVal( 'Action' );
- if( in_array( $action, $this->getVal( 'DisabledActions', array() ) ) ) {
- /* No such action; this will switch to the default case */
- $action = 'nosuchaction';
- }
+ $act = $this->getAction();
- // Workaround for bug #20966: inability of IE to provide an action dependent
- // on which submit button is clicked.
- if ( $action === 'historysubmit' ) {
- if ( $request->getBool( 'revisiondelete' ) ) {
- $action = 'revisiondelete';
- } else {
- $action = 'view';
- }
+ $action = Action::factory( $act, $article );
+ if ( $action instanceof Action ) {
+ $action->show();
+ wfProfileOut( __METHOD__ );
+ return;
}
- switch( $action ) {
+ switch( $act ) {
case 'view':
- $output->setSquidMaxage( $this->getVal( 'SquidMaxage' ) );
+ $output->setSquidMaxage( $wgSquidMaxage );
$article->view();
break;
case 'raw': // includes JS/CSS
- wfProfileIn( __METHOD__.'-raw' );
+ wfProfileIn( __METHOD__ . '-raw' );
$raw = new RawPage( $article );
$raw->view();
- wfProfileOut( __METHOD__.'-raw' );
+ wfProfileOut( __METHOD__ . '-raw' );
break;
- case 'watch':
- case 'unwatch':
case 'delete':
- case 'revert':
- case 'rollback':
case 'protect':
case 'unprotect':
- case 'info':
- case 'markpatrolled':
case 'render':
- case 'deletetrackback':
- case 'purge':
- $article->$action();
- break;
- case 'print':
- $article->view();
- break;
- case 'dublincore':
- if( !$this->getVal( 'EnableDublinCoreRdf' ) ) {
- wfHttpError( 403, 'Forbidden', wfMsg( 'nodublincore' ) );
- } else {
- $rdf = new DublinCoreRdf( $article );
- $rdf->show();
- }
- break;
- case 'creativecommons':
- if( !$this->getVal( 'EnableCreativeCommonsRdf' ) ) {
- wfHttpError( 403, 'Forbidden', wfMsg( 'nocreativecommons' ) );
- } else {
- $rdf = new CreativeCommonsRdf( $article );
- $rdf->show();
- }
- break;
- case 'credits':
- Credits::showPage( $article );
+ $article->$act();
break;
case 'submit':
- if( session_id() == '' ) {
- /* Send a cookie so anons get talk message notifications */
+ if ( session_id() == '' ) {
+ // Send a cookie so anons get talk message notifications
wfSetupSession();
}
- /* Continue... */
+ // Continue...
case 'edit':
- case 'editredlink':
- if( wfRunHooks( 'CustomEditor', array( $article, $user ) ) ) {
+ if ( wfRunHooks( 'CustomEditor', array( $article, $user ) ) ) {
$internal = $request->getVal( 'internaledit' );
$external = $request->getVal( 'externaledit' );
$section = $request->getVal( 'section' );
$oldid = $request->getVal( 'oldid' );
- if( !$this->getVal( 'UseExternalEditor' ) || $action=='submit' || $internal ||
- $section || $oldid || ( !$user->getOption( 'externaleditor' ) && !$external ) ) {
+ if ( !$wgUseExternalEditor || $act == 'submit' || $internal ||
+ $section || $oldid ||
+ ( !$user->getOption( 'externaleditor' ) && !$external ) )
+ {
$editor = new EditPage( $article );
$editor->submit();
- } elseif( $this->getVal( 'UseExternalEditor' ) && ( $external || $user->getOption( 'externaleditor' ) ) ) {
+ } elseif ( $wgUseExternalEditor
+ && ( $external || $user->getOption( 'externaleditor' ) ) )
+ {
$mode = $request->getVal( 'mode' );
- $extedit = new ExternalEdit( $article, $mode );
+ $extedit = new ExternalEdit( $article->getTitle(), $mode );
$extedit->edit();
}
}
break;
case 'history':
- if( $request->getFullRequestURL() == $title->getInternalURL( 'action=history' ) ) {
- $output->setSquidMaxage( $this->getVal( 'SquidMaxage' ) );
+ if ( $request->getFullRequestURL() == $title->getInternalURL( 'action=history' ) ) {
+ $output->setSquidMaxage( $wgSquidMaxage );
}
$history = new HistoryPage( $article );
$history->history();
break;
- case 'revisiondelete':
- // For show/hide submission from history page
- $special = SpecialPage::getPage( 'Revisiondelete' );
- $special->execute( '' );
- break;
default:
- if( wfRunHooks( 'UnknownAction', array( $action, $article ) ) ) {
+ if ( wfRunHooks( 'UnknownAction', array( $act, $article ) ) ) {
$output->showErrorPage( 'nosuchaction', 'nosuchactiontext' );
}
}
wfProfileOut( __METHOD__ );
+ }
+ /**
+ * Run the current MediaWiki instance
+ * index.php just calls this
+ */
+ public function run() {
+ try {
+ $this->checkMaxLag( true );
+ $this->main();
+ $this->restInPeace();
+ } catch ( Exception $e ) {
+ MWExceptionHandler::handle( $e );
+ }
}
+ /**
+ * Checks if the request should abort due to a lagged server,
+ * for given maxlag parameter.
+ *
+ * @param boolean $abort True if this class should abort the
+ * script execution. False to return the result as a boolean.
+ * @return boolean True if we passed the check, false if we surpass the maxlag
+ */
+ private function checkMaxLag( $abort ) {
+ global $wgShowHostnames;
+
+ wfProfileIn( __METHOD__ );
+ $maxLag = $this->context->getRequest()->getVal( 'maxlag' );
+ if ( !is_null( $maxLag ) ) {
+ $lb = wfGetLB(); // foo()->bar() is not supported in PHP4
+ list( $host, $lag ) = $lb->getMaxLag();
+ if ( $lag > $maxLag ) {
+ if ( $abort ) {
+ $resp = $this->context->getRequest()->response();
+ $resp->header( 'HTTP/1.1 503 Service Unavailable' );
+ $resp->header( 'Retry-After: ' . max( intval( $maxLag ), 5 ) );
+ $resp->header( 'X-Database-Lag: ' . intval( $lag ) );
+ $resp->header( 'Content-Type: text/plain' );
+ if( $wgShowHostnames ) {
+ echo "Waiting for $host: $lag seconds lagged\n";
+ } else {
+ echo "Waiting for a database server: $lag seconds lagged\n";
+ }
+ }
+
+ wfProfileOut( __METHOD__ );
+
+ if ( !$abort ) {
+ return false;
+ }
+ exit;
+ }
+ }
+ wfProfileOut( __METHOD__ );
+ return true;
+ }
+
+ private function main() {
+ global $wgUseFileCache, $wgTitle, $wgUseAjax;
+
+ wfProfileIn( __METHOD__ );
+
+ # Set title from request parameters
+ $wgTitle = $this->getTitle();
+ $action = $this->getAction();
+ $user = $this->context->getUser();
+
+ # Send Ajax requests to the Ajax dispatcher.
+ if ( $wgUseAjax && $action == 'ajax' ) {
+ $dispatcher = new AjaxDispatcher();
+ $dispatcher->performAction();
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+
+ if ( $wgUseFileCache && $wgTitle->getNamespace() != NS_SPECIAL ) {
+ wfProfileIn( 'main-try-filecache' );
+ // Raw pages should handle cache control on their own,
+ // even when using file cache. This reduces hits from clients.
+ if ( HTMLFileCache::useFileCache() ) {
+ /* Try low-level file cache hit */
+ $cache = new HTMLFileCache( $wgTitle, $action );
+ if ( $cache->isFileCacheGood( /* Assume up to date */ ) ) {
+ /* Check incoming headers to see if client has this cached */
+ $timestamp = $cache->fileCacheTime();
+ if ( !$this->context->getOutput()->checkLastModified( $timestamp ) ) {
+ $cache->loadFromFileCache();
+ }
+ # Do any stats increment/watchlist stuff
+ $article = WikiPage::factory( $wgTitle );
+ $article->doViewUpdates( $user );
+ # Tell OutputPage that output is taken care of
+ $this->context->getOutput()->disable();
+ wfProfileOut( 'main-try-filecache' );
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+ }
+ wfProfileOut( 'main-try-filecache' );
+ }
+
+ $this->performRequest();
+ $this->finalCleanup();
+
+ wfProfileOut( __METHOD__ );
+ }
}
diff --git a/includes/WikiCategoryPage.php b/includes/WikiCategoryPage.php
new file mode 100644
index 00000000..42c2a6ce
--- /dev/null
+++ b/includes/WikiCategoryPage.php
@@ -0,0 +1,37 @@
+<?php
+/**
+ * Special handling for category pages
+ */
+class WikiCategoryPage extends WikiPage {
+ /**
+ * Constructor from a page id
+ * @param $id Int article ID to load
+ */
+ public static function newFromID( $id ) {
+ $t = Title::newFromID( $id );
+ # @todo FIXME: Doesn't inherit right
+ return $t == null ? null : new self( $t );
+ # return $t == null ? null : new static( $t ); // PHP 5.3
+ }
+
+ /**
+ * Don't return a 404 for categories in use.
+ * In use defined as: either the actual page exists
+ * or the category currently has members.
+ */
+ public function hasViewableContent() {
+ if ( parent::hasViewableContent() ) {
+ return true;
+ } else {
+ $cat = Category::newFromTitle( $this->mTitle );
+ // If any of these are not 0, then has members
+ if ( $cat->getPageCount()
+ || $cat->getSubcatCount()
+ || $cat->getFileCount()
+ ) {
+ return true;
+ }
+ }
+ return false;
+ }
+}
diff --git a/includes/WikiError.php b/includes/WikiError.php
index 452554c3..a634dff6 100644
--- a/includes/WikiError.php
+++ b/includes/WikiError.php
@@ -31,8 +31,11 @@
class WikiError {
/**
* @param $message string
+ *
+ * @deprecated since 1.17
*/
function __construct( $message ) {
+ wfDeprecated( __METHOD__ );
$this->mMessage = $message;
}
@@ -58,8 +61,11 @@ class WikiError {
*
* @param $object mixed
* @return bool
+ *
+ * @deprecated since 1.17
*/
public static function isError( $object ) {
+ wfDeprecated( __METHOD__ );
if ( $object instanceof WikiError ) {
return true;
} elseif ( $object instanceof Status ) {
@@ -78,8 +84,11 @@ class WikiErrorMsg extends WikiError {
/**
* @param $message String: wiki message name
* @param ... parameters to pass to wfMsg()
+ *
+ * @deprecated since 1.17
*/
function __construct( $message/*, ... */ ) {
+ wfDeprecated( __METHOD__ );
$args = func_get_args();
array_shift( $args );
$this->mMessage = wfMsgReal( $message, $args, true );
@@ -107,8 +116,11 @@ class WikiXmlError extends WikiError {
* @param $message string
* @param $context
* @param $offset Int
+ *
+ * @deprecated since 1.17
*/
function __construct( $parser, $message = 'XML parsing error', $context = null, $offset = 0 ) {
+ wfDeprecated( __METHOD__ );
$this->mXmlError = xml_get_error_code( $parser );
$this->mColumn = xml_get_current_column_number( $parser );
$this->mLine = xml_get_current_line_number( $parser );
diff --git a/includes/WikiFilePage.php b/includes/WikiFilePage.php
new file mode 100644
index 00000000..6727a8cd
--- /dev/null
+++ b/includes/WikiFilePage.php
@@ -0,0 +1,139 @@
+<?php
+/**
+ * Special handling for file pages
+ *
+ * @ingroup Media
+ */
+class WikiFilePage extends WikiPage {
+ protected $mFile = false; // !< File object
+ protected $mRepo = null; // !<
+ protected $mFileLoaded = false; // !<
+ protected $mDupes = null; // !<
+
+ function __construct( $title ) {
+ parent::__construct( $title );
+ $this->mDupes = null;
+ $this->mRepo = null;
+ }
+
+ public function getActionOverrides() {
+ return array( 'revert' => 'RevertFileAction' );
+ }
+
+ /**
+ * @param $file File:
+ * @return void
+ */
+ public function setFile( $file ) {
+ $this->mFile = $file;
+ $this->mFileLoaded = true;
+ }
+
+ protected function loadFile() {
+ if ( $this->mFileLoaded ) {
+ return true;
+ }
+ $this->mFileLoaded = true;
+
+ $this->mFile = false;
+ if ( !$this->mFile ) {
+ $this->mFile = wfFindFile( $this->mTitle );
+ if ( !$this->mFile ) {
+ $this->mFile = wfLocalFile( $this->mTitle ); // always a File
+ }
+ }
+ $this->mRepo = $this->mFile->getRepo();
+ }
+
+ public function getRedirectTarget() {
+ $this->loadFile();
+ if ( $this->mFile->isLocal() ) {
+ return parent::getRedirectTarget();
+ }
+ // Foreign image page
+ $from = $this->mFile->getRedirected();
+ $to = $this->mFile->getName();
+ if ( $from == $to ) {
+ return null;
+ }
+ return $this->mRedirectTarget = Title::makeTitle( NS_FILE, $to );
+ }
+
+ public function followRedirect() {
+ $this->loadFile();
+ if ( $this->mFile->isLocal() ) {
+ return parent::followRedirect();
+ }
+ $from = $this->mFile->getRedirected();
+ $to = $this->mFile->getName();
+ if ( $from == $to ) {
+ return false;
+ }
+ return Title::makeTitle( NS_FILE, $to );
+ }
+
+ public function isRedirect( $text = false ) {
+ $this->loadFile();
+ if ( $this->mFile->isLocal() ) {
+ return parent::isRedirect( $text );
+ }
+
+ return (bool)$this->mFile->getRedirected();
+ }
+
+ public function isLocal() {
+ $this->loadFile();
+ return $this->mFile->isLocal();
+ }
+
+ public function getFile() {
+ $this->loadFile();
+ return $this->mFile;
+ }
+
+ public function getDuplicates() {
+ $this->loadFile();
+ if ( !is_null( $this->mDupes ) ) {
+ return $this->mDupes;
+ }
+ $hash = $this->mFile->getSha1();
+ if ( !( $hash ) ) {
+ return $this->mDupes = array();
+ }
+ $dupes = RepoGroup::singleton()->findBySha1( $hash );
+ // Remove duplicates with self and non matching file sizes
+ $self = $this->mFile->getRepoName() . ':' . $this->mFile->getName();
+ $size = $this->mFile->getSize();
+ foreach ( $dupes as $index => $file ) {
+ $key = $file->getRepoName() . ':' . $file->getName();
+ if ( $key == $self ) {
+ unset( $dupes[$index] );
+ }
+ if ( $file->getSize() != $size ) {
+ unset( $dupes[$index] );
+ }
+ }
+ $this->mDupes = $dupes;
+ return $this->mDupes;
+ }
+
+ /**
+ * Override handling of action=purge
+ */
+ public function doPurge() {
+ $this->loadFile();
+ if ( $this->mFile->exists() ) {
+ wfDebug( 'ImagePage::doPurge purging ' . $this->mFile->getName() . "\n" );
+ $update = new HTMLCacheUpdate( $this->mTitle, 'imagelinks' );
+ $update->doUpdate();
+ $this->mFile->upgradeRow();
+ $this->mFile->purgeCache();
+ } else {
+ wfDebug( 'ImagePage::doPurge no image for ' . $this->mFile->getName() . "; limiting purge to cache only\n" );
+ // even if the file supposedly doesn't exist, force any cached information
+ // to be updated (in case the cached information is wrong)
+ $this->mFile->purgeCache();
+ }
+ parent::doPurge();
+ }
+}
diff --git a/includes/WikiMap.php b/includes/WikiMap.php
index e12f7abe..458718ee 100644
--- a/includes/WikiMap.php
+++ b/includes/WikiMap.php
@@ -18,7 +18,7 @@ class WikiMap {
list( $major, $minor ) = $wgConf->siteFromDB( $wikiID );
if( isset( $major ) ) {
- $server = $wgConf->get( 'wgServer', $wikiID, $major,
+ $server = $wgConf->get( 'wgCanonicalServer', $wikiID, $major,
array( 'lang' => $minor, 'site' => $major ) );
$path = $wgConf->get( 'wgArticlePath', $wikiID, $major,
array( 'lang' => $minor, 'site' => $major ) );
@@ -65,9 +65,6 @@ class WikiMap {
* @return String: HTML link or false if the wiki was not found
*/
public static function makeForeignLink( $wikiID, $page, $text=null ) {
- global $wgUser;
- $sk = $wgUser->getSkin();
-
if ( !$text ) {
$text = $page;
}
@@ -77,7 +74,7 @@ class WikiMap {
return false;
}
- return $sk->makeExternalLink( $url, $text );
+ return Linker::makeExternalLink( $url, $text );
}
/**
@@ -132,17 +129,19 @@ class WikiReference {
*/
public function getDisplayName() {
$url = $this->getUrl( '' );
- $url = preg_replace( '!^https?://!', '', $url );
- $url = preg_replace( '!/index\.php(\?title=|/)$!', '/', $url );
- $url = preg_replace( '!/wiki/$!', '/', $url );
- $url = preg_replace( '!/$!', '', $url );
- return $url;
+ $parsed = wfParseUrl( $url );
+ if ( $parsed ) {
+ return $parsed['host'];
+ } else {
+ // Invalid URL. There's no sane thing to do here, so just return it
+ return $url;
+ }
}
/**
* Helper function for getUrl()
*
- * @todo FIXME: this may be generalized...
+ * @todo FIXME: This may be generalized...
* @param $page String: page name (must be normalised before calling this function!)
* @return String: Url fragment
*/
diff --git a/includes/WikiPage.php b/includes/WikiPage.php
new file mode 100644
index 00000000..9a0d9714
--- /dev/null
+++ b/includes/WikiPage.php
@@ -0,0 +1,2677 @@
+<?php
+/**
+ * Abstract class for type hinting (accepts WikiPage, Article, ImagePage, CategoryPage)
+ */
+abstract class Page {}
+
+/**
+ * Class representing a MediaWiki article and history.
+ *
+ * Some fields are public only for backwards-compatibility. Use accessors.
+ * In the past, this class was part of Article.php and everything was public.
+ *
+ * @internal documentation reviewed 15 Mar 2010
+ */
+class WikiPage extends Page {
+ /**
+ * @var Title
+ * @protected
+ */
+ public $mTitle = null;
+
+ /**@{{
+ * @protected
+ */
+ public $mCounter = -1; // !< Integer (-1 means "not loaded")
+ public $mDataLoaded = false; // !< Boolean
+ public $mIsRedirect = false; // !< Boolean
+ public $mLatest = false; // !< Boolean
+ public $mPreparedEdit = false; // !< Array
+ public $mRedirectTarget = null; // !< Title object
+ public $mLastRevision = null; // !< Revision object
+ public $mTimestamp = ''; // !< String
+ public $mTouched = '19700101000000'; // !< String
+ /**@}}*/
+
+ /**
+ * @protected
+ * @var ParserOptions: ParserOptions object for $wgUser articles
+ */
+ public $mParserOptions;
+
+ /**
+ * Constructor and clear the article
+ * @param $title Title Reference to a Title object.
+ */
+ public function __construct( Title $title ) {
+ $this->mTitle = $title;
+ }
+
+ /**
+ * Create a WikiPage object of the appropriate class for the given title.
+ *
+ * @param $title Title
+ * @return WikiPage object of the appropriate type
+ */
+ public static function factory( Title $title ) {
+ $ns = $title->getNamespace();
+
+ if ( $ns == NS_MEDIA ) {
+ throw new MWException( "NS_MEDIA is a virtual namespace; use NS_FILE." );
+ } elseif ( $ns < 0 ) {
+ throw new MWException( "Invalid or virtual namespace $ns given." );
+ }
+
+ switch ( $ns ) {
+ case NS_FILE:
+ $page = new WikiFilePage( $title );
+ break;
+ case NS_CATEGORY:
+ $page = new WikiCategoryPage( $title );
+ break;
+ default:
+ $page = new WikiPage( $title );
+ }
+
+ return $page;
+ }
+
+ /**
+ * Constructor from a page id
+ *
+ * Always override this for all subclasses (until we use PHP with LSB)
+ *
+ * @param $id Int article ID to load
+ *
+ * @return WikiPage
+ */
+ public static function newFromID( $id ) {
+ $t = Title::newFromID( $id );
+ # @todo FIXME: Doesn't inherit right
+ return $t == null ? null : new self( $t );
+ # return $t == null ? null : new static( $t ); // PHP 5.3
+ }
+
+ /**
+ * Returns overrides for action handlers.
+ * Classes listed here will be used instead of the default one when
+ * (and only when) $wgActions[$action] === true. This allows subclasses
+ * to override the default behavior.
+ *
+ * @return Array
+ */
+ public function getActionOverrides() {
+ return array();
+ }
+
+ /**
+ * If this page is a redirect, get its target
+ *
+ * The target will be fetched from the redirect table if possible.
+ * If this page doesn't have an entry there, call insertRedirect()
+ * @return Title|mixed object, or null if this page is not a redirect
+ */
+ public function getRedirectTarget() {
+ if ( !$this->mTitle->isRedirect() ) {
+ return null;
+ }
+
+ if ( $this->mRedirectTarget !== null ) {
+ return $this->mRedirectTarget;
+ }
+
+ # Query the redirect table
+ $dbr = wfGetDB( DB_SLAVE );
+ $row = $dbr->selectRow( 'redirect',
+ array( 'rd_namespace', 'rd_title', 'rd_fragment', 'rd_interwiki' ),
+ array( 'rd_from' => $this->getId() ),
+ __METHOD__
+ );
+
+ // rd_fragment and rd_interwiki were added later, populate them if empty
+ if ( $row && !is_null( $row->rd_fragment ) && !is_null( $row->rd_interwiki ) ) {
+ return $this->mRedirectTarget = Title::makeTitle(
+ $row->rd_namespace, $row->rd_title,
+ $row->rd_fragment, $row->rd_interwiki );
+ }
+
+ # This page doesn't have an entry in the redirect table
+ return $this->mRedirectTarget = $this->insertRedirect();
+ }
+
+ /**
+ * Insert an entry for this page into the redirect table.
+ *
+ * Don't call this function directly unless you know what you're doing.
+ * @return Title object or null if not a redirect
+ */
+ public function insertRedirect() {
+ // recurse through to only get the final target
+ $retval = Title::newFromRedirectRecurse( $this->getRawText() );
+ if ( !$retval ) {
+ return null;
+ }
+ $this->insertRedirectEntry( $retval );
+ return $retval;
+ }
+
+ /**
+ * Insert or update the redirect table entry for this page to indicate
+ * it redirects to $rt .
+ * @param $rt Title redirect target
+ */
+ public function insertRedirectEntry( $rt ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->replace( 'redirect', array( 'rd_from' ),
+ array(
+ 'rd_from' => $this->getId(),
+ 'rd_namespace' => $rt->getNamespace(),
+ 'rd_title' => $rt->getDBkey(),
+ 'rd_fragment' => $rt->getFragment(),
+ 'rd_interwiki' => $rt->getInterwiki(),
+ ),
+ __METHOD__
+ );
+ }
+
+ /**
+ * Get the Title object or URL this page redirects to
+ *
+ * @return mixed false, Title of in-wiki target, or string with URL
+ */
+ public function followRedirect() {
+ return $this->getRedirectURL( $this->getRedirectTarget() );
+ }
+
+ /**
+ * Get the Title object or URL to use for a redirect. We use Title
+ * objects for same-wiki, non-special redirects and URLs for everything
+ * else.
+ * @param $rt Title Redirect target
+ * @return mixed false, Title object of local target, or string with URL
+ */
+ public function getRedirectURL( $rt ) {
+ if ( $rt ) {
+ if ( $rt->getInterwiki() != '' ) {
+ if ( $rt->isLocal() ) {
+ // Offsite wikis need an HTTP redirect.
+ //
+ // This can be hard to reverse and may produce loops,
+ // so they may be disabled in the site configuration.
+ $source = $this->mTitle->getFullURL( 'redirect=no' );
+ return $rt->getFullURL( 'rdfrom=' . urlencode( $source ) );
+ }
+ } else {
+ if ( $rt->getNamespace() == NS_SPECIAL ) {
+ // Gotta handle redirects to special pages differently:
+ // Fill the HTTP response "Location" header and ignore
+ // the rest of the page we're on.
+ //
+ // This can be hard to reverse, so they may be disabled.
+ if ( $rt->isSpecial( 'Userlogout' ) ) {
+ // rolleyes
+ } else {
+ return $rt->getFullURL();
+ }
+ }
+
+ return $rt;
+ }
+ }
+
+ // No or invalid redirect
+ return false;
+ }
+
+ /**
+ * Get the title object of the article
+ * @return Title object of this page
+ */
+ public function getTitle() {
+ return $this->mTitle;
+ }
+
+ /**
+ * Clear the object
+ */
+ public function clear() {
+ $this->mDataLoaded = false;
+
+ $this->mCounter = -1; # Not loaded
+ $this->mRedirectTarget = null; # Title object if set
+ $this->mLastRevision = null; # Latest revision
+ $this->mTimestamp = '';
+ $this->mTouched = '19700101000000';
+ $this->mIsRedirect = false;
+ $this->mLatest = false;
+ $this->mPreparedEdit = false;
+ }
+
+ /**
+ * Get the text that needs to be saved in order to undo all revisions
+ * between $undo and $undoafter. Revisions must belong to the same page,
+ * must exist and must not be deleted
+ * @param $undo Revision
+ * @param $undoafter Revision Must be an earlier revision than $undo
+ * @return mixed string on success, false on failure
+ */
+ public function getUndoText( Revision $undo, Revision $undoafter = null ) {
+ $cur_text = $this->getRawText();
+ if ( $cur_text === false ) {
+ return false; // no page
+ }
+ $undo_text = $undo->getText();
+ $undoafter_text = $undoafter->getText();
+
+ if ( $cur_text == $undo_text ) {
+ # No use doing a merge if it's just a straight revert.
+ return $undoafter_text;
+ }
+
+ $undone_text = '';
+
+ if ( !wfMerge( $undo_text, $undoafter_text, $cur_text, $undone_text ) ) {
+ return false;
+ }
+
+ return $undone_text;
+ }
+
+ /**
+ * Return the list of revision fields that should be selected to create
+ * a new page.
+ *
+ * @return array
+ */
+ public static function selectFields() {
+ return array(
+ 'page_id',
+ 'page_namespace',
+ 'page_title',
+ 'page_restrictions',
+ 'page_counter',
+ 'page_is_redirect',
+ 'page_is_new',
+ 'page_random',
+ 'page_touched',
+ 'page_latest',
+ 'page_len',
+ );
+ }
+
+ /**
+ * Fetch a page record with the given conditions
+ * @param $dbr DatabaseBase object
+ * @param $conditions Array
+ * @return mixed Database result resource, or false on failure
+ */
+ protected function pageData( $dbr, $conditions ) {
+ $fields = self::selectFields();
+
+ wfRunHooks( 'ArticlePageDataBefore', array( &$this, &$fields ) );
+
+ $row = $dbr->selectRow( 'page', $fields, $conditions, __METHOD__ );
+
+ wfRunHooks( 'ArticlePageDataAfter', array( &$this, &$row ) );
+
+ return $row;
+ }
+
+ /**
+ * Fetch a page record matching the Title object's namespace and title
+ * using a sanitized title string
+ *
+ * @param $dbr DatabaseBase object
+ * @param $title Title object
+ * @return mixed Database result resource, or false on failure
+ */
+ public function pageDataFromTitle( $dbr, $title ) {
+ return $this->pageData( $dbr, array(
+ 'page_namespace' => $title->getNamespace(),
+ 'page_title' => $title->getDBkey() ) );
+ }
+
+ /**
+ * Fetch a page record matching the requested ID
+ *
+ * @param $dbr DatabaseBase
+ * @param $id Integer
+ * @return mixed Database result resource, or false on failure
+ */
+ public function pageDataFromId( $dbr, $id ) {
+ return $this->pageData( $dbr, array( 'page_id' => $id ) );
+ }
+
+ /**
+ * Set the general counter, title etc data loaded from
+ * some source.
+ *
+ * @param $data Object|String One of the following:
+ * A DB query result object or...
+ * "fromdb" to get from a slave DB or...
+ * "fromdbmaster" to get from the master DB
+ * @return void
+ */
+ public function loadPageData( $data = 'fromdb' ) {
+ if ( $data === 'fromdbmaster' ) {
+ $data = $this->pageDataFromTitle( wfGetDB( DB_MASTER ), $this->mTitle );
+ } elseif ( $data === 'fromdb' ) { // slave
+ $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.
+ $touched = $this->getCachedLastEditTime();
+ if ( $touched ) { // key set
+ if ( !$data || $touched > wfTimestamp( TS_MW, $data->page_touched ) ) {
+ $data = $this->pageDataFromTitle( wfGetDB( DB_MASTER ), $this->mTitle );
+ }
+ }
+ }
+
+ $lc = LinkCache::singleton();
+
+ if ( $data ) {
+ $lc->addGoodLinkObj( $data->page_id, $this->mTitle,
+ $data->page_len, $data->page_is_redirect, $data->page_latest );
+
+ $this->mTitle->loadFromRow( $data );
+
+ # Old-fashioned restrictions
+ $this->mTitle->loadRestrictions( $data->page_restrictions );
+
+ $this->mCounter = intval( $data->page_counter );
+ $this->mTouched = wfTimestamp( TS_MW, $data->page_touched );
+ $this->mIsRedirect = intval( $data->page_is_redirect );
+ $this->mLatest = intval( $data->page_latest );
+ } else {
+ $lc->addBadLinkObj( $this->mTitle );
+
+ $this->mTitle->loadFromRow( false );
+ }
+
+ $this->mDataLoaded = true;
+ }
+
+ /**
+ * @return int Page ID
+ */
+ public function getId() {
+ return $this->mTitle->getArticleID();
+ }
+
+ /**
+ * @return bool Whether or not the page exists in the database
+ */
+ public function exists() {
+ return $this->getId() > 0;
+ }
+
+ /**
+ * Check if this page is something we're going to be showing
+ * some sort of sensible content for. If we return false, page
+ * views (plain action=view) will return an HTTP 404 response,
+ * so spiders and robots can know they're following a bad link.
+ *
+ * @return bool
+ */
+ public function hasViewableContent() {
+ return $this->exists() || $this->mTitle->isAlwaysKnown();
+ }
+
+ /**
+ * @return int The view count for the page
+ */
+ public function getCount() {
+ if ( -1 == $this->mCounter ) {
+ $id = $this->getId();
+
+ if ( $id == 0 ) {
+ $this->mCounter = 0;
+ } else {
+ $dbr = wfGetDB( DB_SLAVE );
+ $this->mCounter = $dbr->selectField( 'page',
+ 'page_counter',
+ array( 'page_id' => $id ),
+ __METHOD__
+ );
+ }
+ }
+
+ return $this->mCounter;
+ }
+
+ /**
+ * Determine whether a page would be suitable for being counted as an
+ * article in the site_stats table based on the title & its content
+ *
+ * @param $editInfo Object or false: object returned by prepareTextForEdit(),
+ * if false, the current database state will be used
+ * @return Boolean
+ */
+ public function isCountable( $editInfo = false ) {
+ global $wgArticleCountMethod;
+
+ if ( !$this->mTitle->isContentPage() ) {
+ return false;
+ }
+
+ $text = $editInfo ? $editInfo->pst : false;
+
+ if ( $this->isRedirect( $text ) ) {
+ return false;
+ }
+
+ switch ( $wgArticleCountMethod ) {
+ case 'any':
+ return true;
+ case 'comma':
+ if ( $text === false ) {
+ $text = $this->getRawText();
+ }
+ return strpos( $text, ',' ) !== false;
+ case 'link':
+ if ( $editInfo ) {
+ // ParserOutput::getLinks() is a 2D array of page links, so
+ // to be really correct we would need to recurse in the array
+ // but the main array should only have items in it if there are
+ // links.
+ return (bool)count( $editInfo->output->getLinks() );
+ } else {
+ return (bool)wfGetDB( DB_SLAVE )->selectField( 'pagelinks', 1,
+ array( 'pl_from' => $this->getId() ), __METHOD__ );
+ }
+ }
+ }
+
+ /**
+ * Tests if the article text represents a redirect
+ *
+ * @param $text mixed string containing article contents, or boolean
+ * @return bool
+ */
+ public function isRedirect( $text = false ) {
+ if ( $text === false ) {
+ if ( !$this->mDataLoaded ) {
+ $this->loadPageData();
+ }
+
+ return (bool)$this->mIsRedirect;
+ } else {
+ return Title::newFromRedirect( $text ) !== null;
+ }
+ }
+
+ /**
+ * Loads everything except the text
+ * This isn't necessary for all uses, so it's only done if needed.
+ */
+ protected function loadLastEdit() {
+ if ( $this->mLastRevision !== null ) {
+ return; // already loaded
+ }
+
+ $latest = $this->getLatest();
+ if ( !$latest ) {
+ return; // page doesn't exist or is missing page_latest info
+ }
+
+ $revision = Revision::newFromPageId( $this->getId(), $latest );
+ if ( $revision ) { // sanity
+ $this->setLastEdit( $revision );
+ }
+ }
+
+ /**
+ * Set the latest revision
+ */
+ protected function setLastEdit( Revision $revision ) {
+ $this->mLastRevision = $revision;
+ $this->mTimestamp = $revision->getTimestamp();
+ }
+
+ /**
+ * Get the latest revision
+ * @return Revision|null
+ */
+ public function getRevision() {
+ $this->loadLastEdit();
+ if ( $this->mLastRevision ) {
+ return $this->mLastRevision;
+ }
+ return null;
+ }
+
+ /**
+ * Get the text of the current revision. No side-effects...
+ *
+ * @param $audience Integer: one of:
+ * Revision::FOR_PUBLIC to be displayed to all users
+ * Revision::FOR_THIS_USER to be displayed to $wgUser
+ * Revision::RAW get the text regardless of permissions
+ * @return String|false The text of the current revision
+ */
+ public function getText( $audience = Revision::FOR_PUBLIC ) {
+ $this->loadLastEdit();
+ if ( $this->mLastRevision ) {
+ return $this->mLastRevision->getText( $audience );
+ }
+ return false;
+ }
+
+ /**
+ * Get the text of the current revision. No side-effects...
+ *
+ * @return String|false The text of the current revision
+ */
+ public function getRawText() {
+ $this->loadLastEdit();
+ if ( $this->mLastRevision ) {
+ return $this->mLastRevision->getRawText();
+ }
+ return false;
+ }
+
+ /**
+ * @return string MW timestamp of last article revision
+ */
+ public function getTimestamp() {
+ // Check if the field has been filled by WikiPage::setTimestamp()
+ if ( !$this->mTimestamp ) {
+ $this->loadLastEdit();
+ }
+ return wfTimestamp( TS_MW, $this->mTimestamp );
+ }
+
+ /**
+ * Set the page timestamp (use only to avoid DB queries)
+ * @param $ts string MW timestamp of last article revision
+ * @return void
+ */
+ public function setTimestamp( $ts ) {
+ $this->mTimestamp = wfTimestamp( TS_MW, $ts );
+ }
+
+ /**
+ * @param $audience Integer: one of:
+ * Revision::FOR_PUBLIC to be displayed to all users
+ * Revision::FOR_THIS_USER to be displayed to $wgUser
+ * Revision::RAW get the text regardless of permissions
+ * @return int user ID for the user that made the last article revision
+ */
+ public function getUser( $audience = Revision::FOR_PUBLIC ) {
+ $this->loadLastEdit();
+ if ( $this->mLastRevision ) {
+ return $this->mLastRevision->getUser( $audience );
+ } else {
+ return -1;
+ }
+ }
+
+ /**
+ * @param $audience Integer: one of:
+ * Revision::FOR_PUBLIC to be displayed to all users
+ * Revision::FOR_THIS_USER to be displayed to $wgUser
+ * Revision::RAW get the text regardless of permissions
+ * @return string username of the user that made the last article revision
+ */
+ public function getUserText( $audience = Revision::FOR_PUBLIC ) {
+ $this->loadLastEdit();
+ if ( $this->mLastRevision ) {
+ return $this->mLastRevision->getUserText( $audience );
+ } else {
+ return '';
+ }
+ }
+
+ /**
+ * @param $audience Integer: one of:
+ * Revision::FOR_PUBLIC to be displayed to all users
+ * Revision::FOR_THIS_USER to be displayed to $wgUser
+ * Revision::RAW get the text regardless of permissions
+ * @return string Comment stored for the last article revision
+ */
+ public function getComment( $audience = Revision::FOR_PUBLIC ) {
+ $this->loadLastEdit();
+ if ( $this->mLastRevision ) {
+ return $this->mLastRevision->getComment( $audience );
+ } else {
+ return '';
+ }
+ }
+
+ /**
+ * Returns true if last revision was marked as "minor edit"
+ *
+ * @return boolean Minor edit indicator for the last article revision.
+ */
+ public function getMinorEdit() {
+ $this->loadLastEdit();
+ if ( $this->mLastRevision ) {
+ return $this->mLastRevision->isMinor();
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Get a list of users who have edited this article, not including the user who made
+ * the most recent revision, which you can get from $article->getUser() if you want it
+ * @return UserArrayFromResult
+ */
+ public function getContributors() {
+ # @todo FIXME: This is expensive; cache this info somewhere.
+
+ $dbr = wfGetDB( DB_SLAVE );
+
+ if ( $dbr->implicitGroupby() ) {
+ $realNameField = 'user_real_name';
+ } else {
+ $realNameField = 'FIRST(user_real_name) AS user_real_name';
+ }
+
+ $tables = array( 'revision', 'user' );
+
+ $fields = array(
+ 'rev_user as user_id',
+ 'rev_user_text AS user_name',
+ $realNameField,
+ 'MAX(rev_timestamp) AS timestamp',
+ );
+
+ $conds = array( 'rev_page' => $this->getId() );
+
+ // The user who made the top revision gets credited as "this page was last edited by
+ // John, based on contributions by Tom, Dick and Harry", so don't include them twice.
+ $user = $this->getUser();
+ if ( $user ) {
+ $conds[] = "rev_user != $user";
+ } else {
+ $conds[] = "rev_user_text != {$dbr->addQuotes( $this->getUserText() )}";
+ }
+
+ $conds[] = "{$dbr->bitAnd( 'rev_deleted', Revision::DELETED_USER )} = 0"; // username hidden?
+
+ $jconds = array(
+ 'user' => array( 'LEFT JOIN', 'rev_user = user_id' ),
+ );
+
+ $options = array(
+ 'GROUP BY' => array( 'rev_user', 'rev_user_text' ),
+ 'ORDER BY' => 'timestamp DESC',
+ );
+
+ $res = $dbr->select( $tables, $fields, $conds, __METHOD__, $options, $jconds );
+ return new UserArrayFromResult( $res );
+ }
+
+ /**
+ * Should the parser cache be used?
+ *
+ * @param $user User The relevant user
+ * @return boolean
+ */
+ public function isParserCacheUsed( User $user, $oldid ) {
+ global $wgEnableParserCache;
+
+ return $wgEnableParserCache
+ && $user->getStubThreshold() == 0
+ && $this->exists()
+ && empty( $oldid )
+ && !$this->mTitle->isCssOrJsPage()
+ && !$this->mTitle->isCssJsSubpage();
+ }
+
+ /**
+ * Perform the actions of a page purging
+ */
+ public function doPurge() {
+ global $wgUseSquid;
+
+ if( !wfRunHooks( 'ArticlePurge', array( &$this ) ) ){
+ return false;
+ }
+
+ // Invalidate the cache
+ $this->mTitle->invalidateCache();
+ $this->clear();
+
+ if ( $wgUseSquid ) {
+ // Commit the transaction before the purge is sent
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->commit();
+
+ // Send purge
+ $update = SquidUpdate::newSimplePurge( $this->mTitle );
+ $update->doUpdate();
+ }
+
+ if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
+ if ( $this->getId() == 0 ) {
+ $text = false;
+ } else {
+ $text = $this->getRawText();
+ }
+
+ MessageCache::singleton()->replace( $this->mTitle->getDBkey(), $text );
+ }
+ }
+
+ /**
+ * Insert a new empty page record for this article.
+ * This *must* be followed up by creating a revision
+ * and running $this->updateRevisionOn( ... );
+ * or else the record will be left in a funky state.
+ * Best if all done inside a transaction.
+ *
+ * @param $dbw DatabaseBase
+ * @return int The newly created page_id key, or false if the title already existed
+ * @private
+ */
+ public function insertOn( $dbw ) {
+ wfProfileIn( __METHOD__ );
+
+ $page_id = $dbw->nextSequenceValue( 'page_page_id_seq' );
+ $dbw->insert( 'page', array(
+ 'page_id' => $page_id,
+ 'page_namespace' => $this->mTitle->getNamespace(),
+ 'page_title' => $this->mTitle->getDBkey(),
+ 'page_counter' => 0,
+ 'page_restrictions' => '',
+ '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...
+ ), __METHOD__, 'IGNORE' );
+
+ $affected = $dbw->affectedRows();
+
+ if ( $affected ) {
+ $newid = $dbw->insertId();
+ $this->mTitle->resetArticleID( $newid );
+ }
+ wfProfileOut( __METHOD__ );
+
+ return $affected ? $newid : false;
+ }
+
+ /**
+ * Update the page record to point to a newly saved revision.
+ *
+ * @param $dbw DatabaseBase: object
+ * @param $revision Revision: For ID number, and text used to set
+ length and redirect status fields
+ * @param $lastRevision Integer: if given, will not overwrite the page field
+ * when different from the currently set value.
+ * Giving 0 indicates the new page flag should be set
+ * on.
+ * @param $lastRevIsRedirect Boolean: if given, will optimize adding and
+ * removing rows in redirect table.
+ * @return bool true on success, false on failure
+ * @private
+ */
+ public function updateRevisionOn( $dbw, $revision, $lastRevision = null, $lastRevIsRedirect = null ) {
+ wfProfileIn( __METHOD__ );
+
+ $text = $revision->getText();
+ $rt = Title::newFromRedirectRecurse( $text );
+
+ $conditions = array( 'page_id' => $this->getId() );
+
+ if ( !is_null( $lastRevision ) ) {
+ # An extra check against threads stepping on each other
+ $conditions['page_latest'] = $lastRevision;
+ }
+
+ $now = wfTimestampNow();
+ $dbw->update( 'page',
+ array( /* SET */
+ 'page_latest' => $revision->getId(),
+ 'page_touched' => $dbw->timestamp( $now ),
+ 'page_is_new' => ( $lastRevision === 0 ) ? 1 : 0,
+ 'page_is_redirect' => $rt !== null ? 1 : 0,
+ 'page_len' => strlen( $text ),
+ ),
+ $conditions,
+ __METHOD__ );
+
+ $result = $dbw->affectedRows() != 0;
+ if ( $result ) {
+ $this->updateRedirectOn( $dbw, $rt, $lastRevIsRedirect );
+ $this->setCachedLastEditTime( $now );
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $result;
+ }
+
+ /**
+ * Get the cached timestamp for the last time the page changed.
+ * This is only used to help handle slave lag by comparing to page_touched.
+ * @return string MW timestamp
+ */
+ protected function getCachedLastEditTime() {
+ global $wgMemc;
+ $key = wfMemcKey( 'page-lastedit', md5( $this->mTitle->getPrefixedDBkey() ) );
+ return $wgMemc->get( $key );
+ }
+
+ /**
+ * Set the cached timestamp for the last time the page changed.
+ * This is only used to help handle slave lag by comparing to page_touched.
+ * @param $timestamp string
+ * @return void
+ */
+ public function setCachedLastEditTime( $timestamp ) {
+ global $wgMemc;
+ $key = wfMemcKey( 'page-lastedit', md5( $this->mTitle->getPrefixedDBkey() ) );
+ $wgMemc->set( $key, wfTimestamp( TS_MW, $timestamp ), 60*15 );
+ }
+
+ /**
+ * Add row to the redirect table if this is a redirect, remove otherwise.
+ *
+ * @param $dbw DatabaseBase
+ * @param $redirectTitle Title object pointing to the redirect target,
+ * or NULL if this is not a redirect
+ * @param $lastRevIsRedirect If given, will optimize adding and
+ * removing rows in redirect table.
+ * @return bool true on success, false on failure
+ * @private
+ */
+ public function updateRedirectOn( $dbw, $redirectTitle, $lastRevIsRedirect = null ) {
+ // Always update redirects (target link might have changed)
+ // Update/Insert if we don't know if the last revision was a redirect or not
+ // Delete if changing from redirect to non-redirect
+ $isRedirect = !is_null( $redirectTitle );
+
+ if ( !$isRedirect && !is_null( $lastRevIsRedirect ) && $lastRevIsRedirect === $isRedirect ) {
+ return true;
+ }
+
+ wfProfileIn( __METHOD__ );
+ if ( $isRedirect ) {
+ $this->insertRedirectEntry( $redirectTitle );
+ } else {
+ // This is not a redirect, remove row from redirect table
+ $where = array( 'rd_from' => $this->getId() );
+ $dbw->delete( 'redirect', $where, __METHOD__ );
+ }
+
+ if ( $this->getTitle()->getNamespace() == NS_FILE ) {
+ RepoGroup::singleton()->getLocalRepo()->invalidateImageRedirect( $this->getTitle() );
+ }
+ wfProfileOut( __METHOD__ );
+
+ return ( $dbw->affectedRows() != 0 );
+ }
+
+ /**
+ * If the given revision is newer than the currently set page_latest,
+ * update the page record. Otherwise, do nothing.
+ *
+ * @param $dbw Database object
+ * @param $revision Revision object
+ * @return mixed
+ */
+ public function updateIfNewerOn( $dbw, $revision ) {
+ wfProfileIn( __METHOD__ );
+
+ $row = $dbw->selectRow(
+ array( 'revision', 'page' ),
+ array( 'rev_id', 'rev_timestamp', 'page_is_redirect' ),
+ array(
+ 'page_id' => $this->getId(),
+ 'page_latest=rev_id' ),
+ __METHOD__ );
+
+ if ( $row ) {
+ if ( wfTimestamp( TS_MW, $row->rev_timestamp ) >= $revision->getTimestamp() ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+ $prev = $row->rev_id;
+ $lastRevIsRedirect = (bool)$row->page_is_redirect;
+ } else {
+ # No or missing previous revision; mark the page as new
+ $prev = 0;
+ $lastRevIsRedirect = null;
+ }
+
+ $ret = $this->updateRevisionOn( $dbw, $revision, $prev, $lastRevIsRedirect );
+
+ wfProfileOut( __METHOD__ );
+ return $ret;
+ }
+
+ /**
+ * @param $section empty/null/false or a section number (0, 1, 2, T1, T2...)
+ * @param $text String: new text of the section
+ * @param $summary String: new section's subject, only if $section is 'new'
+ * @param $edittime String: revision timestamp or null to use the current revision
+ * @return string Complete article text, or null if error
+ */
+ public function replaceSection( $section, $text, $summary = '', $edittime = null ) {
+ wfProfileIn( __METHOD__ );
+
+ if ( strval( $section ) == '' ) {
+ // Whole-page edit; let the whole text through
+ } else {
+ if ( is_null( $edittime ) ) {
+ $rev = Revision::newFromTitle( $this->mTitle );
+ } else {
+ $dbw = wfGetDB( DB_MASTER );
+ $rev = Revision::loadFromTimestamp( $dbw, $this->mTitle, $edittime );
+ }
+
+ if ( !$rev ) {
+ wfDebug( "WikiPage::replaceSection asked for bogus section (page: " .
+ $this->getId() . "; section: $section; edittime: $edittime)\n" );
+ wfProfileOut( __METHOD__ );
+ return null;
+ }
+
+ $oldtext = $rev->getText();
+
+ if ( $section == 'new' ) {
+ # Inserting a new section
+ $subject = $summary ? wfMsgForContent( 'newsectionheaderdefaultlevel', $summary ) . "\n\n" : '';
+ $text = strlen( trim( $oldtext ) ) > 0
+ ? "{$oldtext}\n\n{$subject}{$text}"
+ : "{$subject}{$text}";
+ } else {
+ # Replacing an existing section; roll out the big guns
+ global $wgParser;
+
+ $text = $wgParser->replaceSection( $oldtext, $section, $text );
+ }
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $text;
+ }
+
+ /**
+ * Check flags and add EDIT_NEW or EDIT_UPDATE to them as needed.
+ * @param $flags Int
+ * @return Int updated $flags
+ */
+ function checkFlags( $flags ) {
+ if ( !( $flags & EDIT_NEW ) && !( $flags & EDIT_UPDATE ) ) {
+ if ( $this->mTitle->getArticleID() ) {
+ $flags |= EDIT_UPDATE;
+ } else {
+ $flags |= EDIT_NEW;
+ }
+ }
+
+ return $flags;
+ }
+
+ /**
+ * Change an existing article or create a new article. Updates RC and all necessary caches,
+ * optionally via the deferred update array.
+ *
+ * @param $text String: new text
+ * @param $summary String: edit summary
+ * @param $flags Integer bitfield:
+ * EDIT_NEW
+ * Article is known or assumed to be non-existent, create a new one
+ * EDIT_UPDATE
+ * Article is known or assumed to be pre-existing, update it
+ * EDIT_MINOR
+ * Mark this edit minor, if the user is allowed to do so
+ * EDIT_SUPPRESS_RC
+ * Do not log the change in recentchanges
+ * EDIT_FORCE_BOT
+ * Mark the edit a "bot" edit regardless of user rights
+ * EDIT_DEFER_UPDATES
+ * Defer some of the updates until the end of index.php
+ * EDIT_AUTOSUMMARY
+ * Fill in blank summaries with generated text where possible
+ *
+ * If neither EDIT_NEW nor EDIT_UPDATE is specified, the status of the article will be detected.
+ * If EDIT_UPDATE is specified and the article doesn't exist, the function will an
+ * edit-gone-missing error. If EDIT_NEW is specified and the article does exist, an
+ * edit-already-exists error will be returned. These two conditions are also possible with
+ * auto-detection due to MediaWiki's performance-optimised locking strategy.
+ *
+ * @param $baseRevId the revision ID this edit was based off, if any
+ * @param $user User the user doing the edit
+ *
+ * @return Status object. Possible errors:
+ * edit-hook-aborted: The ArticleSave hook aborted the edit but didn't set the fatal flag of $status
+ * edit-gone-missing: In update mode, but the article didn't exist
+ * edit-conflict: In update mode, the article changed unexpectedly
+ * edit-no-change: Warning that the text was the same as before
+ * edit-already-exists: In creation mode, but the article already exists
+ *
+ * Extensions may define additional errors.
+ *
+ * $return->value will contain an associative array with members as follows:
+ * new: Boolean indicating if the function attempted to create a new article
+ * revision: The revision object for the inserted revision, or null
+ *
+ * Compatibility note: this function previously returned a boolean value indicating success/failure
+ */
+ public function doEdit( $text, $summary, $flags = 0, $baseRevId = false, $user = null ) {
+ global $wgUser, $wgDBtransactions, $wgUseAutomaticEditSummaries;
+
+ # Low-level sanity check
+ if ( $this->mTitle->getText() === '' ) {
+ throw new MWException( 'Something is trying to edit an article with an empty title' );
+ }
+
+ wfProfileIn( __METHOD__ );
+
+ $user = is_null( $user ) ? $wgUser : $user;
+ $status = Status::newGood( array() );
+
+ # Load $this->mTitle->getArticleID() and $this->mLatest if it's not already
+ $this->loadPageData( 'fromdbmaster' );
+
+ $flags = $this->checkFlags( $flags );
+
+ if ( !wfRunHooks( 'ArticleSave', array( &$this, &$user, &$text, &$summary,
+ $flags & EDIT_MINOR, null, null, &$flags, &$status ) ) )
+ {
+ wfDebug( __METHOD__ . ": ArticleSave hook aborted save!\n" );
+
+ if ( $status->isOK() ) {
+ $status->fatal( 'edit-hook-aborted' );
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $status;
+ }
+
+ # Silently ignore EDIT_MINOR if not allowed
+ $isminor = ( $flags & EDIT_MINOR ) && $user->isAllowed( 'minoredit' );
+ $bot = $flags & EDIT_FORCE_BOT;
+
+ $oldtext = $this->getRawText(); // current revision
+ $oldsize = strlen( $oldtext );
+ $oldcountable = $this->isCountable();
+
+ # Provide autosummaries if one is not provided and autosummaries are enabled.
+ if ( $wgUseAutomaticEditSummaries && $flags & EDIT_AUTOSUMMARY && $summary == '' ) {
+ $summary = self::getAutosummary( $oldtext, $text, $flags );
+ }
+
+ $editInfo = $this->prepareTextForEdit( $text, null, $user );
+ $text = $editInfo->pst;
+ $newsize = strlen( $text );
+
+ $dbw = wfGetDB( DB_MASTER );
+ $now = wfTimestampNow();
+ $this->mTimestamp = $now;
+
+ if ( $flags & EDIT_UPDATE ) {
+ # Update article, but only if changed.
+ $status->value['new'] = false;
+
+ # Make sure the revision is either completely inserted or not inserted at all
+ if ( !$wgDBtransactions ) {
+ $userAbort = ignore_user_abort( true );
+ }
+
+ $revision = new Revision( array(
+ 'page' => $this->getId(),
+ 'comment' => $summary,
+ 'minor_edit' => $isminor,
+ 'text' => $text,
+ 'parent_id' => $this->mLatest,
+ 'user' => $user->getId(),
+ 'user_text' => $user->getName(),
+ 'timestamp' => $now
+ ) );
+
+ $changed = ( strcmp( $text, $oldtext ) != 0 );
+
+ if ( $changed ) {
+ if ( !$this->mLatest ) {
+ # Article gone missing
+ wfDebug( __METHOD__ . ": EDIT_UPDATE specified but article doesn't exist\n" );
+ $status->fatal( 'edit-gone-missing' );
+
+ wfProfileOut( __METHOD__ );
+ return $status;
+ }
+
+ $dbw->begin();
+ $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.
+ $ok = $this->updateRevisionOn( $dbw, $revision, $this->mLatest );
+
+ if ( !$ok ) {
+ /* Belated edit conflict! Run away!! */
+ $status->fatal( 'edit-conflict' );
+
+ # Delete the invalid revision if the DB is not transactional
+ if ( !$wgDBtransactions ) {
+ $dbw->delete( 'revision', array( 'rev_id' => $revisionId ), __METHOD__ );
+ }
+
+ $revisionId = 0;
+ $dbw->rollback();
+ } else {
+ global $wgUseRCPatrol;
+ wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, $baseRevId, $user ) );
+ # Update recentchanges
+ if ( !( $flags & EDIT_SUPPRESS_RC ) ) {
+ # Mark as patrolled if the user can do so
+ $patrolled = $wgUseRCPatrol && !count(
+ $this->mTitle->getUserPermissionsErrors( 'autopatrol', $user ) );
+ # Add RC row to the DB
+ $rc = RecentChange::notifyEdit( $now, $this->mTitle, $isminor, $user, $summary,
+ $this->mLatest, $this->getTimestamp(), $bot, '', $oldsize, $newsize,
+ $revisionId, $patrolled
+ );
+
+ # Log auto-patrolled edits
+ if ( $patrolled ) {
+ PatrolLog::record( $rc, true );
+ }
+ }
+ $user->incEditCount();
+ $dbw->commit();
+ }
+ }
+
+ if ( !$wgDBtransactions ) {
+ ignore_user_abort( $userAbort );
+ }
+
+ // Now that ignore_user_abort is restored, we can respond to fatal errors
+ if ( !$status->isOK() ) {
+ wfProfileOut( __METHOD__ );
+ return $status;
+ }
+
+ # Update links tables, site stats, etc.
+ $this->doEditUpdates( $revision, $user, array( 'changed' => $changed,
+ 'oldcountable' => $oldcountable ) );
+
+ if ( !$changed ) {
+ $status->warning( 'edit-no-change' );
+ $revision = null;
+ // Keep the same revision ID, but do some updates on it
+ $revisionId = $this->getLatest();
+ // Update page_touched, this is usually implicit in the page update
+ // Other cache updates are done in onArticleEdit()
+ $this->mTitle->invalidateCache();
+ }
+ } else {
+ # Create new article
+ $status->value['new'] = true;
+
+ $dbw->begin();
+
+ # 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 ) {
+ $dbw->rollback();
+ $status->fatal( 'edit-already-exists' );
+
+ wfProfileOut( __METHOD__ );
+ return $status;
+ }
+
+ # Save the revision text...
+ $revision = new Revision( array(
+ 'page' => $newid,
+ 'comment' => $summary,
+ 'minor_edit' => $isminor,
+ 'text' => $text,
+ 'user' => $user->getId(),
+ 'user_text' => $user->getName(),
+ 'timestamp' => $now
+ ) );
+ $revisionId = $revision->insertOn( $dbw );
+
+ $this->mTitle->resetArticleID( $newid );
+ # Update the LinkCache. Resetting the Title ArticleID means it will rely on having that already cached
+ # @todo FIXME?
+ LinkCache::singleton()->addGoodLinkObj( $newid, $this->mTitle, strlen( $text ), (bool)Title::newFromRedirect( $text ), $revisionId );
+
+ # Update the page record with revision data
+ $this->updateRevisionOn( $dbw, $revision, 0 );
+
+ wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, false, $user ) );
+
+ # Update recentchanges
+ if ( !( $flags & EDIT_SUPPRESS_RC ) ) {
+ global $wgUseRCPatrol, $wgUseNPPatrol;
+
+ # Mark as patrolled if the user can do so
+ $patrolled = ( $wgUseRCPatrol || $wgUseNPPatrol ) && !count(
+ $this->mTitle->getUserPermissionsErrors( 'autopatrol', $user ) );
+ # Add RC row to the DB
+ $rc = RecentChange::notifyNew( $now, $this->mTitle, $isminor, $user, $summary, $bot,
+ '', strlen( $text ), $revisionId, $patrolled );
+
+ # Log auto-patrolled edits
+ if ( $patrolled ) {
+ PatrolLog::record( $rc, true );
+ }
+ }
+ $user->incEditCount();
+ $dbw->commit();
+
+ # Update links, etc.
+ $this->doEditUpdates( $revision, $user, array( 'created' => true ) );
+
+ wfRunHooks( 'ArticleInsertComplete', array( &$this, &$user, $text, $summary,
+ $flags & EDIT_MINOR, null, null, &$flags, $revision ) );
+ }
+
+ # Do updates right now unless deferral was requested
+ if ( !( $flags & EDIT_DEFER_UPDATES ) ) {
+ wfDoUpdates();
+ }
+
+ // Return the new revision (or null) to the caller
+ $status->value['revision'] = $revision;
+
+ wfRunHooks( 'ArticleSaveComplete', array( &$this, &$user, $text, $summary,
+ $flags & EDIT_MINOR, null, null, &$flags, $revision, &$status, $baseRevId ) );
+
+ # Promote user to any groups they meet the criteria for
+ $user->addAutopromoteOnceGroups( 'onEdit' );
+
+ wfProfileOut( __METHOD__ );
+ return $status;
+ }
+
+ /**
+ * Update the article's restriction field, and leave a log entry.
+ *
+ * @param $limit Array: set of restriction keys
+ * @param $reason String
+ * @param &$cascade Integer. Set to false if cascading protection isn't allowed.
+ * @param $expiry Array: per restriction type expiration
+ * @param $user User The user updating the restrictions
+ * @return bool true on success
+ */
+ public function updateRestrictions(
+ $limit = array(), $reason = '', &$cascade = 0, $expiry = array(), User $user = null
+ ) {
+ global $wgUser, $wgContLang;
+ $user = is_null( $user ) ? $wgUser : $user;
+
+ $restrictionTypes = $this->mTitle->getRestrictionTypes();
+
+ $id = $this->mTitle->getArticleID();
+
+ if ( $id <= 0 ) {
+ wfDebug( "updateRestrictions failed: article id $id <= 0\n" );
+ return false;
+ }
+
+ if ( wfReadOnly() ) {
+ wfDebug( "updateRestrictions failed: read-only\n" );
+ return false;
+ }
+
+ if ( count( $this->mTitle->getUserPermissionsErrors( 'protect', $user ) ) ) {
+ wfDebug( "updateRestrictions failed: insufficient permissions\n" );
+ return false;
+ }
+
+ if ( !$cascade ) {
+ $cascade = false;
+ }
+
+ // 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.
+ $current = array();
+ $updated = self::flattenRestrictions( $limit );
+ $changed = false;
+
+ foreach ( $restrictionTypes as $action ) {
+ if ( isset( $expiry[$action] ) ) {
+ # Get current restrictions on $action
+ $aLimits = $this->mTitle->getRestrictions( $action );
+ $current[$action] = implode( '', $aLimits );
+ # Are any actual restrictions being dealt with here?
+ $aRChanged = count( $aLimits ) || !empty( $limit[$action] );
+
+ # If something changed, we need to log it. Checking $aRChanged
+ # assures that "unprotecting" a page that is not protected does
+ # not log just because the expiry was "changed".
+ if ( $aRChanged &&
+ $this->mTitle->getRestrictionExpiry( $action ) != $expiry[$action] )
+ {
+ $changed = true;
+ }
+ }
+ }
+
+ $current = self::flattenRestrictions( $current );
+
+ $changed = ( $changed || $current != $updated );
+ $changed = $changed || ( $updated && $this->mTitle->areRestrictionsCascading() != $cascade );
+ $protect = ( $updated != '' );
+
+ # If nothing's changed, do nothing
+ if ( $changed ) {
+ if ( wfRunHooks( 'ArticleProtect', array( &$this, &$user, $limit, $reason ) ) ) {
+ $dbw = wfGetDB( DB_MASTER );
+
+ # Prepare a null revision to be added to the history
+ $modified = $current != '' && $protect;
+
+ if ( $protect ) {
+ $comment_type = $modified ? 'modifiedarticleprotection' : 'protectedarticle';
+ } else {
+ $comment_type = 'unprotectedarticle';
+ }
+
+ $comment = $wgContLang->ucfirst( wfMsgForContent( $comment_type, $this->mTitle->getPrefixedText() ) );
+
+ # 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
+ if ( !in_array( 'protect', $editrestriction ) && !in_array( 'sysop', $editrestriction ) ) {
+ $cascade = false;
+ }
+
+ $cascade_description = '';
+
+ if ( $cascade ) {
+ $cascade_description = ' [' . wfMsgForContent( 'protect-summary-cascade' ) . ']';
+ }
+
+ if ( $reason ) {
+ $comment .= ": $reason";
+ }
+
+ $editComment = $comment;
+ $encodedExpiry = array();
+ $protect_description = '';
+ foreach ( $limit as $action => $restrictions ) {
+ if ( !isset( $expiry[$action] ) )
+ $expiry[$action] = $dbw->getInfinity();
+
+ $encodedExpiry[$action] = $dbw->encodeExpiry( $expiry[$action] );
+ if ( $restrictions != '' ) {
+ $protect_description .= "[$action=$restrictions] (";
+ if ( $encodedExpiry[$action] != 'infinity' ) {
+ $protect_description .= wfMsgForContent( 'protect-expiring',
+ $wgContLang->timeanddate( $expiry[$action], false, false ) ,
+ $wgContLang->date( $expiry[$action], false, false ) ,
+ $wgContLang->time( $expiry[$action], false, false ) );
+ } else {
+ $protect_description .= wfMsgForContent( 'protect-expiry-indefinite' );
+ }
+
+ $protect_description .= ') ';
+ }
+ }
+ $protect_description = trim( $protect_description );
+
+ if ( $protect_description && $protect ) {
+ $editComment .= " ($protect_description)";
+ }
+
+ if ( $cascade ) {
+ $editComment .= "$cascade_description";
+ }
+
+ # Update restrictions table
+ foreach ( $limit as $action => $restrictions ) {
+ if ( $restrictions != '' ) {
+ $dbw->replace( 'page_restrictions', array( array( 'pr_page', 'pr_type' ) ),
+ array( 'pr_page' => $id,
+ 'pr_type' => $action,
+ 'pr_level' => $restrictions,
+ 'pr_cascade' => ( $cascade && $action == 'edit' ) ? 1 : 0,
+ 'pr_expiry' => $encodedExpiry[$action]
+ ),
+ __METHOD__
+ );
+ } else {
+ $dbw->delete( 'page_restrictions', array( 'pr_page' => $id,
+ 'pr_type' => $action ), __METHOD__ );
+ }
+ }
+
+ # Insert a null revision
+ $nullRevision = Revision::newNullRevision( $dbw, $id, $editComment, true );
+ $nullRevId = $nullRevision->insertOn( $dbw );
+
+ $latest = $this->getLatest();
+ # Update page record
+ $dbw->update( 'page',
+ array( /* SET */
+ 'page_touched' => $dbw->timestamp(),
+ 'page_restrictions' => '',
+ 'page_latest' => $nullRevId
+ ), array( /* WHERE */
+ 'page_id' => $id
+ ), __METHOD__
+ );
+
+ wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $nullRevision, $latest, $user ) );
+ wfRunHooks( 'ArticleProtectComplete', array( &$this, &$user, $limit, $reason ) );
+
+ # Update the protection log
+ $log = new LogPage( 'protect' );
+ if ( $protect ) {
+ $params = array( $protect_description, $cascade ? 'cascade' : '' );
+ $log->addEntry( $modified ? 'modify' : 'protect', $this->mTitle, trim( $reason ), $params );
+ } else {
+ $log->addEntry( 'unprotect', $this->mTitle, $reason );
+ }
+ } # End hook
+ } # End "changed" check
+
+ return true;
+ }
+
+ /**
+ * Take an array of page restrictions and flatten it to a string
+ * suitable for insertion into the page_restrictions field.
+ * @param $limit Array
+ * @return String
+ */
+ protected static function flattenRestrictions( $limit ) {
+ if ( !is_array( $limit ) ) {
+ throw new MWException( 'WikiPage::flattenRestrictions given non-array restriction set' );
+ }
+
+ $bits = array();
+ ksort( $limit );
+
+ foreach ( $limit as $action => $restrictions ) {
+ if ( $restrictions != '' ) {
+ $bits[] = "$action=$restrictions";
+ }
+ }
+
+ return implode( ':', $bits );
+ }
+
+ /**
+ * @return bool whether or not the page surpasses $wgDeleteRevisionsLimit revisions
+ */
+ public function isBigDeletion() {
+ global $wgDeleteRevisionsLimit;
+
+ if ( $wgDeleteRevisionsLimit ) {
+ $revCount = $this->estimateRevisionCount();
+
+ return $revCount > $wgDeleteRevisionsLimit;
+ }
+
+ return false;
+ }
+
+ /**
+ * @return int approximate revision count
+ */
+ public function estimateRevisionCount() {
+ $dbr = wfGetDB( DB_SLAVE );
+
+ // For an exact count...
+ // return $dbr->selectField( 'revision', 'COUNT(*)',
+ // array( 'rev_page' => $this->getId() ), __METHOD__ );
+ return $dbr->estimateRowCount( 'revision', '*',
+ array( 'rev_page' => $this->getId() ), __METHOD__ );
+ }
+
+ /**
+ * Get the last N authors
+ * @param $num Integer: number of revisions to get
+ * @param $revLatest String: the latest rev_id, selected from the master (optional)
+ * @return array Array of authors, duplicates not removed
+ */
+ public function getLastNAuthors( $num, $revLatest = 0 ) {
+ wfProfileIn( __METHOD__ );
+ // First try the slave
+ // If that doesn't have the latest revision, try the master
+ $continue = 2;
+ $db = wfGetDB( DB_SLAVE );
+
+ do {
+ $res = $db->select( array( 'page', 'revision' ),
+ array( 'rev_id', 'rev_user_text' ),
+ array(
+ 'page_namespace' => $this->mTitle->getNamespace(),
+ 'page_title' => $this->mTitle->getDBkey(),
+ 'rev_page = page_id'
+ ), __METHOD__,
+ array(
+ 'ORDER BY' => 'rev_timestamp DESC',
+ 'LIMIT' => $num
+ )
+ );
+
+ if ( !$res ) {
+ wfProfileOut( __METHOD__ );
+ return array();
+ }
+
+ $row = $db->fetchObject( $res );
+
+ if ( $continue == 2 && $revLatest && $row->rev_id != $revLatest ) {
+ $db = wfGetDB( DB_MASTER );
+ $continue--;
+ } else {
+ $continue = 0;
+ }
+ } while ( $continue );
+
+ $authors = array( $row->rev_user_text );
+
+ foreach ( $res as $row ) {
+ $authors[] = $row->rev_user_text;
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $authors;
+ }
+
+ /**
+ * Back-end article deletion
+ * Deletes the article with database consistency, writes logs, purges caches
+ *
+ * @param $reason string delete reason for deletion log
+ * @param suppress bitfield
+ * Revision::DELETED_TEXT
+ * Revision::DELETED_COMMENT
+ * Revision::DELETED_USER
+ * Revision::DELETED_RESTRICTED
+ * @param $id int article ID
+ * @param $commit boolean defaults to true, triggers transaction end
+ * @param &$errors Array of errors to append to
+ * @param $user User The relevant user
+ * @return boolean true if successful
+ */
+ public function doDeleteArticle(
+ $reason, $suppress = false, $id = 0, $commit = true, &$error = '', User $user = null
+ ) {
+ global $wgDeferredUpdateList, $wgUseTrackbacks, $wgUser;
+ $user = is_null( $user ) ? $wgUser : $user;
+
+ wfDebug( __METHOD__ . "\n" );
+
+ if ( ! wfRunHooks( 'ArticleDelete', array( &$this, &$user, &$reason, &$error ) ) ) {
+ return false;
+ }
+ $dbw = wfGetDB( DB_MASTER );
+ $t = $this->mTitle->getDBkey();
+ $id = $id ? $id : $this->mTitle->getArticleID( Title::GAID_FOR_UPDATE );
+
+ if ( $t === '' || $id == 0 ) {
+ return false;
+ }
+
+ $u = new SiteStatsUpdate( 0, 1, - (int)$this->isCountable(), -1 );
+ array_push( $wgDeferredUpdateList, $u );
+
+ // Bitfields to further suppress the content
+ if ( $suppress ) {
+ $bitfield = 0;
+ // This should be 15...
+ $bitfield |= Revision::DELETED_TEXT;
+ $bitfield |= Revision::DELETED_COMMENT;
+ $bitfield |= Revision::DELETED_USER;
+ $bitfield |= Revision::DELETED_RESTRICTED;
+ } else {
+ $bitfield = 'rev_deleted';
+ }
+
+ $dbw->begin();
+ // For now, shunt the revision data into the archive table.
+ // Text is *not* removed from the text table; bulk storage
+ // is left intact to avoid breaking block-compression or
+ // immutable storage schemes.
+ //
+ // For backwards compatibility, note that some older archive
+ // table entries will have ar_text and ar_flags fields still.
+ //
+ // In the future, we may keep revisions and mark them with
+ // the rev_deleted field, which is reserved for this purpose.
+ $dbw->insertSelect( 'archive', array( 'page', 'revision' ),
+ array(
+ 'ar_namespace' => 'page_namespace',
+ 'ar_title' => 'page_title',
+ 'ar_comment' => 'rev_comment',
+ 'ar_user' => 'rev_user',
+ 'ar_user_text' => 'rev_user_text',
+ 'ar_timestamp' => 'rev_timestamp',
+ 'ar_minor_edit' => 'rev_minor_edit',
+ 'ar_rev_id' => 'rev_id',
+ 'ar_text_id' => 'rev_text_id',
+ 'ar_text' => '\'\'', // Be explicit to appease
+ 'ar_flags' => '\'\'', // MySQL's "strict mode"...
+ 'ar_len' => 'rev_len',
+ 'ar_page_id' => 'page_id',
+ 'ar_deleted' => $bitfield
+ ), array(
+ 'page_id' => $id,
+ 'page_id = rev_page'
+ ), __METHOD__
+ );
+
+ # Delete restrictions for it
+ $dbw->delete( 'page_restrictions', array ( 'pr_page' => $id ), __METHOD__ );
+
+ # 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
+
+ if ( !$ok ) {
+ $dbw->rollback();
+ return false;
+ }
+
+ # Fix category table counts
+ $cats = array();
+ $res = $dbw->select( 'categorylinks', 'cl_to', array( 'cl_from' => $id ), __METHOD__ );
+
+ foreach ( $res as $row ) {
+ $cats [] = $row->cl_to;
+ }
+
+ $this->updateCategoryCounts( array(), $cats );
+
+ # If using cascading deletes, we can skip some explicit deletes
+ if ( !$dbw->cascadingDeletes() ) {
+ $dbw->delete( 'revision', array( 'rev_page' => $id ), __METHOD__ );
+
+ if ( $wgUseTrackbacks )
+ $dbw->delete( 'trackbacks', array( 'tb_page' => $id ), __METHOD__ );
+
+ # Delete outgoing links
+ $dbw->delete( 'pagelinks', array( 'pl_from' => $id ) );
+ $dbw->delete( 'imagelinks', array( 'il_from' => $id ) );
+ $dbw->delete( 'categorylinks', array( 'cl_from' => $id ) );
+ $dbw->delete( 'templatelinks', array( 'tl_from' => $id ) );
+ $dbw->delete( 'externallinks', array( 'el_from' => $id ) );
+ $dbw->delete( 'langlinks', array( 'll_from' => $id ) );
+ $dbw->delete( 'iwlinks', array( 'iwl_from' => $id ) );
+ $dbw->delete( 'redirect', array( 'rd_from' => $id ) );
+ }
+
+ # If using cleanup triggers, we can skip some manual deletes
+ if ( !$dbw->cleanupTriggers() ) {
+ # Clean up recentchanges entries...
+ $dbw->delete( 'recentchanges',
+ array( 'rc_type != ' . RC_LOG,
+ 'rc_namespace' => $this->mTitle->getNamespace(),
+ 'rc_title' => $this->mTitle->getDBkey() ),
+ __METHOD__ );
+ $dbw->delete( 'recentchanges',
+ array( 'rc_type != ' . RC_LOG, 'rc_cur_id' => $id ),
+ __METHOD__ );
+ }
+
+ # Clear caches
+ self::onArticleDelete( $this->mTitle );
+
+ # Clear the cached article id so the interface doesn't act like we exist
+ $this->mTitle->resetArticleID( 0 );
+
+ # Log the deletion, if the page was suppressed, log it at Oversight instead
+ $logtype = $suppress ? 'suppress' : 'delete';
+ $log = new LogPage( $logtype );
+
+ # Make sure logging got through
+ $log->addEntry( 'delete', $this->mTitle, $reason, array() );
+
+ if ( $commit ) {
+ $dbw->commit();
+ }
+
+ wfRunHooks( 'ArticleDeleteComplete', array( &$this, &$user, $reason, $id ) );
+ return true;
+ }
+
+ /**
+ * Roll back the most recent consecutive set of edits to a page
+ * from the same user; fails if there are no eligible edits to
+ * roll back to, e.g. user is the sole contributor. This function
+ * performs permissions checks on $user, then calls commitRollback()
+ * to do the dirty work
+ *
+ * @param $fromP String: Name of the user whose edits to rollback.
+ * @param $summary String: Custom summary. Set to default summary if empty.
+ * @param $token String: Rollback token.
+ * @param $bot Boolean: If true, mark all reverted edits as bot.
+ *
+ * @param $resultDetails Array: contains result-specific array of additional values
+ * 'alreadyrolled' : 'current' (rev)
+ * success : 'summary' (str), 'current' (rev), 'target' (rev)
+ *
+ * @param $user User The user performing the rollback
+ * @return array of errors, each error formatted as
+ * array(messagekey, param1, param2, ...).
+ * On success, the array is empty. This array can also be passed to
+ * OutputPage::showPermissionsErrorPage().
+ */
+ public function doRollback(
+ $fromP, $summary, $token, $bot, &$resultDetails, User $user
+ ) {
+ $resultDetails = null;
+
+ # Check permissions
+ $editErrors = $this->mTitle->getUserPermissionsErrors( 'edit', $user );
+ $rollbackErrors = $this->mTitle->getUserPermissionsErrors( 'rollback', $user );
+ $errors = array_merge( $editErrors, wfArrayDiff2( $rollbackErrors, $editErrors ) );
+
+ if ( !$user->matchEditToken( $token, array( $this->mTitle->getPrefixedText(), $fromP ) ) ) {
+ $errors[] = array( 'sessionfailure' );
+ }
+
+ if ( $user->pingLimiter( 'rollback' ) || $user->pingLimiter() ) {
+ $errors[] = array( 'actionthrottledtext' );
+ }
+
+ # If there were errors, bail out now
+ if ( !empty( $errors ) ) {
+ return $errors;
+ }
+
+ return $this->commitRollback( $fromP, $summary, $bot, $resultDetails, $user );
+ }
+
+ /**
+ * Backend implementation of doRollback(), please refer there for parameter
+ * and return value documentation
+ *
+ * NOTE: This function does NOT check ANY permissions, it just commits the
+ * rollback to the DB Therefore, you should only call this function direct-
+ * ly if you want to use custom permissions checks. If you don't, use
+ * doRollback() instead.
+ * @param $fromP String: Name of the user whose edits to rollback.
+ * @param $summary String: Custom summary. Set to default summary if empty.
+ * @param $bot Boolean: If true, mark all reverted edits as bot.
+ *
+ * @param $resultDetails Array: contains result-specific array of additional values
+ * @param $guser User The user performing the rollback
+ */
+ public function commitRollback( $fromP, $summary, $bot, &$resultDetails, User $guser ) {
+ global $wgUseRCPatrol, $wgContLang;
+
+ $dbw = wfGetDB( DB_MASTER );
+
+ if ( wfReadOnly() ) {
+ return array( array( 'readonlytext' ) );
+ }
+
+ # Get the last editor
+ $current = Revision::newFromTitle( $this->mTitle );
+ if ( is_null( $current ) ) {
+ # 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.
+ if ( $from != $current->getUserText() ) {
+ $resultDetails = array( 'current' => $current );
+ return array( array( 'alreadyrolled',
+ htmlspecialchars( $this->mTitle->getPrefixedText() ),
+ htmlspecialchars( $fromP ),
+ htmlspecialchars( $current->getUserText() )
+ ) );
+ }
+
+ # 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',
+ array( 'rev_id', 'rev_timestamp', 'rev_deleted' ),
+ array( 'rev_page' => $current->getPage(),
+ "rev_user != {$user} OR rev_user_text != {$user_text}"
+ ), __METHOD__,
+ array( 'USE INDEX' => 'page_timestamp',
+ 'ORDER BY' => 'rev_timestamp DESC' )
+ );
+ if ( $s === false ) {
+ # 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
+ return array( array( 'notvisiblerev' ) );
+ }
+
+ $set = array();
+ if ( $bot && $guser->isAllowed( 'markbotedits' ) ) {
+ # Mark all reverted edits as bot
+ $set['rc_bot'] = 1;
+ }
+
+ if ( $wgUseRCPatrol ) {
+ # Mark all reverted edits as patrolled
+ $set['rc_patrolled'] = 1;
+ }
+
+ if ( count( $set ) ) {
+ $dbw->update( 'recentchanges', $set,
+ array( /* WHERE */
+ 'rc_cur_id' => $current->getPage(),
+ 'rc_user_text' => $current->getUserText(),
+ "rc_timestamp > '{$s->rev_timestamp}'",
+ ), __METHOD__
+ );
+ }
+
+ # Generate the edit summary if necessary
+ $target = Revision::newFromId( $s->rev_id );
+ if ( empty( $summary ) ) {
+ if ( $from == '' ) { // no public user name
+ $summary = wfMsgForContent( 'revertpage-nouser' );
+ } else {
+ $summary = wfMsgForContent( 'revertpage' );
+ }
+ }
+
+ # 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 ) ),
+ $current->getId(), $wgContLang->timeanddate( $current->getTimestamp() )
+ );
+ $summary = wfMsgReplaceArgs( $summary, $args );
+
+ # Save
+ $flags = EDIT_UPDATE;
+
+ if ( $guser->isAllowed( 'minoredit' ) ) {
+ $flags |= EDIT_MINOR;
+ }
+
+ if ( $bot && ( $guser->isAllowedAny( 'markbotedits', 'bot' ) ) ) {
+ $flags |= EDIT_FORCE_BOT;
+ }
+
+ # Actually store the edit
+ $status = $this->doEdit( $target->getText(), $summary, $flags, $target->getId() );
+ if ( !empty( $status->value['revision'] ) ) {
+ $revId = $status->value['revision']->getId();
+ } else {
+ $revId = false;
+ }
+
+ wfRunHooks( 'ArticleRollbackComplete', array( $this, $guser, $target, $current ) );
+
+ $resultDetails = array(
+ 'summary' => $summary,
+ 'current' => $current,
+ 'target' => $target,
+ 'newid' => $revId
+ );
+
+ return array();
+ }
+
+ /**
+ * Do standard deferred updates after page view
+ * @param $user User The relevant user
+ */
+ public function doViewUpdates( User $user ) {
+ global $wgDeferredUpdateList, $wgDisableCounters;
+ if ( wfReadOnly() ) {
+ return;
+ }
+
+ # Don't update page view counters on views from bot users (bug 14044)
+ if ( !$wgDisableCounters && !$user->isAllowed( 'bot' ) && $this->getId() ) {
+ $wgDeferredUpdateList[] = new ViewCountUpdate( $this->getId() );
+ $wgDeferredUpdateList[] = new SiteStatsUpdate( 1, 0, 0 );
+ }
+
+ # Update newtalk / watchlist notification status
+ $user->clearNotification( $this->mTitle );
+ }
+
+ /**
+ * Prepare text which is about to be saved.
+ * Returns a stdclass with source, pst and output members
+ */
+ public function prepareTextForEdit( $text, $revid = null, User $user = null ) {
+ global $wgParser, $wgUser;
+ $user = is_null( $user ) ? $wgUser : $user;
+ // @TODO fixme: check $user->getId() here???
+ if ( $this->mPreparedEdit
+ && $this->mPreparedEdit->newText == $text
+ && $this->mPreparedEdit->revid == $revid
+ ) {
+ // Already prepared
+ return $this->mPreparedEdit;
+ }
+
+ $popts = ParserOptions::newFromUser( $user );
+ wfRunHooks( 'ArticlePrepareTextForEdit', array( $this, $popts ) );
+
+ $edit = (object)array();
+ $edit->revid = $revid;
+ $edit->newText = $text;
+ $edit->pst = $this->preSaveTransform( $text, $user, $popts );
+ $edit->popts = $this->getParserOptions( true );
+ $edit->output = $wgParser->parse( $edit->pst, $this->mTitle, $edit->popts, true, true, $revid );
+ $edit->oldText = $this->getRawText();
+
+ $this->mPreparedEdit = $edit;
+
+ return $edit;
+ }
+
+ /**
+ * Do standard deferred updates after page edit.
+ * Update links tables, site stats, search index and message cache.
+ * Purges pages that include this page if the text was changed here.
+ * Every 100th edit, prune the recent changes table.
+ *
+ * @private
+ * @param $revision Revision object
+ * @param $user User object that did the revision
+ * @param $options Array of options, following indexes are used:
+ * - changed: boolean, whether the revision changed the content (default true)
+ * - created: boolean, whether the revision created the page (default false)
+ * - oldcountable: boolean or null (default null):
+ * - boolean: whether the page was counted as an article before that
+ * revision, only used in changed is true and created is false
+ * - null: don't change the article count
+ */
+ public function doEditUpdates( Revision $revision, User $user, array $options = array() ) {
+ global $wgDeferredUpdateList, $wgEnableParserCache;
+
+ wfProfileIn( __METHOD__ );
+
+ $options += array( 'changed' => true, 'created' => false, 'oldcountable' => null );
+ $text = $revision->getText();
+
+ # 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->prepareTextForEdit( $text, $revision->getId(), $user );
+ } else {
+ wfDebug( __METHOD__ . ": No vary-revision, using prepared edit...\n" );
+ $editInfo = $this->mPreparedEdit;
+ }
+
+ # Save it to the parser cache
+ if ( $wgEnableParserCache ) {
+ $parserCache = ParserCache::singleton();
+ $parserCache->save( $editInfo->output, $this, $editInfo->popts );
+ }
+
+ # Update the links tables
+ $u = new LinksUpdate( $this->mTitle, $editInfo->output );
+ $u->doUpdate();
+
+ wfRunHooks( 'ArticleEditUpdates', array( &$this, &$editInfo, $options['changed'] ) );
+
+ if ( wfRunHooks( 'ArticleEditUpdatesDeleteFromRecentchanges', array( &$this ) ) ) {
+ if ( 0 == mt_rand( 0, 99 ) ) {
+ // Flush old entries from the `recentchanges` table; we do this on
+ // random requests so as to avoid an increase in writes for no good reason
+ global $wgRCMaxAge;
+
+ $dbw = wfGetDB( DB_MASTER );
+ $cutoff = $dbw->timestamp( time() - $wgRCMaxAge );
+ $dbw->delete(
+ 'recentchanges',
+ array( "rc_timestamp < '$cutoff'" ),
+ __METHOD__
+ );
+ }
+ }
+
+ $id = $this->getId();
+ $title = $this->mTitle->getPrefixedDBkey();
+ $shortTitle = $this->mTitle->getDBkey();
+
+ if ( 0 == $id ) {
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+
+ if ( !$options['changed'] ) {
+ $good = 0;
+ $total = 0;
+ } elseif ( $options['created'] ) {
+ $good = (int)$this->isCountable( $editInfo );
+ $total = 1;
+ } elseif ( $options['oldcountable'] !== null ) {
+ $good = (int)$this->isCountable( $editInfo ) - (int)$options['oldcountable'];
+ $total = 0;
+ } else {
+ $good = 0;
+ $total = 0;
+ }
+
+ $wgDeferredUpdateList[] = new SiteStatsUpdate( 0, 1, $good, $total );
+ $wgDeferredUpdateList[] = new SearchUpdate( $id, $title, $text );
+
+ # 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()
+ && !( $revision->isMinor() && $user->isAllowed( 'nominornewtalk' ) )
+ ) {
+ if ( wfRunHooks( 'ArticleEditUpdateNewTalk', array( &$this ) ) ) {
+ $other = User::newFromName( $shortTitle, false );
+ if ( !$other ) {
+ wfDebug( __METHOD__ . ": invalid username\n" );
+ } elseif ( User::isIP( $shortTitle ) ) {
+ // An anonymous user
+ $other->setNewtalk( true );
+ } elseif ( $other->isLoggedIn() ) {
+ $other->setNewtalk( true );
+ } else {
+ wfDebug( __METHOD__ . ": don't need to notify a nonexistent user\n" );
+ }
+ }
+ }
+
+ if ( $this->mTitle->getNamespace() == NS_MEDIAWIKI ) {
+ MessageCache::singleton()->replace( $shortTitle, $text );
+ }
+
+ if( $options['created'] ) {
+ self::onArticleCreate( $this->mTitle );
+ } else {
+ self::onArticleEdit( $this->mTitle );
+ }
+
+ wfProfileOut( __METHOD__ );
+ }
+
+ /**
+ * Perform article updates on a special page creation.
+ *
+ * @param $rev Revision object
+ *
+ * @todo This is a shitty interface function. Kill it and replace the
+ * other shitty functions like doEditUpdates and such so it's not needed
+ * anymore.
+ * @deprecated since 1.18, use doEditUpdates()
+ */
+ public function createUpdates( $rev ) {
+ global $wgUser;
+ $this->doEditUpdates( $rev, $wgUser, array( 'created' => true ) );
+ }
+
+ /**
+ * This function is called right before saving the wikitext,
+ * so we can do things like signatures and links-in-context.
+ *
+ * @param $text String article contents
+ * @param $user User object: user doing the edit
+ * @param $popts ParserOptions object: parser options, default options for
+ * the user loaded if null given
+ * @return string article contents with altered wikitext markup (signatures
+ * converted, {{subst:}}, templates, etc.)
+ */
+ public function preSaveTransform( $text, User $user = null, ParserOptions $popts = null ) {
+ global $wgParser, $wgUser;
+ $user = is_null( $user ) ? $wgUser : $user;
+
+ if ( $popts === null ) {
+ $popts = ParserOptions::newFromUser( $user );
+ }
+
+ return $wgParser->preSaveTransform( $text, $this->mTitle, $user, $popts );
+ }
+
+ /**
+ * Loads page_touched and returns a value indicating if it should be used
+ * @return boolean true if not a redirect
+ */
+ public function checkTouched() {
+ if ( !$this->mDataLoaded ) {
+ $this->loadPageData();
+ }
+ return !$this->mIsRedirect;
+ }
+
+ /**
+ * Get the page_touched field
+ * @return string containing GMT timestamp
+ */
+ public function getTouched() {
+ if ( !$this->mDataLoaded ) {
+ $this->loadPageData();
+ }
+ return $this->mTouched;
+ }
+
+ /**
+ * Get the page_latest field
+ * @return integer rev_id of current revision
+ */
+ public function getLatest() {
+ if ( !$this->mDataLoaded ) {
+ $this->loadPageData();
+ }
+ return (int)$this->mLatest;
+ }
+
+ /**
+ * Edit an article without doing all that other stuff
+ * The article must already exist; link tables etc
+ * are not updated, caches are not flushed.
+ *
+ * @param $text String: text submitted
+ * @param $user User The relevant user
+ * @param $comment String: comment submitted
+ * @param $minor Boolean: whereas it's a minor modification
+ */
+ public function doQuickEdit( $text, User $user, $comment = '', $minor = 0 ) {
+ wfProfileIn( __METHOD__ );
+
+ $dbw = wfGetDB( DB_MASTER );
+ $revision = new Revision( array(
+ 'page' => $this->getId(),
+ 'text' => $text,
+ 'comment' => $comment,
+ 'minor_edit' => $minor ? 1 : 0,
+ ) );
+ $revision->insertOn( $dbw );
+ $this->updateRevisionOn( $dbw, $revision );
+
+ wfRunHooks( 'NewRevisionFromEditComplete', array( $this, $revision, false, $user ) );
+
+ wfProfileOut( __METHOD__ );
+ }
+
+ /**
+ * The onArticle*() functions are supposed to be a kind of hooks
+ * which should be called whenever any of the specified actions
+ * are done.
+ *
+ * This is a good place to put code to clear caches, for instance.
+ *
+ * This is called on page move and undelete, as well as edit
+ *
+ * @param $title Title object
+ */
+ public static function onArticleCreate( $title ) {
+ # Update existence markers on article/talk tabs...
+ if ( $title->isTalkPage() ) {
+ $other = $title->getSubjectPage();
+ } else {
+ $other = $title->getTalkPage();
+ }
+
+ $other->invalidateCache();
+ $other->purgeSquid();
+
+ $title->touchLinks();
+ $title->purgeSquid();
+ $title->deleteTitleProtection();
+ }
+
+ /**
+ * Clears caches when article is deleted
+ *
+ * @param $title Title
+ */
+ public static function onArticleDelete( $title ) {
+ # Update existence markers on article/talk tabs...
+ if ( $title->isTalkPage() ) {
+ $other = $title->getSubjectPage();
+ } else {
+ $other = $title->getTalkPage();
+ }
+
+ $other->invalidateCache();
+ $other->purgeSquid();
+
+ $title->touchLinks();
+ $title->purgeSquid();
+
+ # File cache
+ HTMLFileCache::clearFileCache( $title );
+
+ # Messages
+ if ( $title->getNamespace() == NS_MEDIAWIKI ) {
+ MessageCache::singleton()->replace( $title->getDBkey(), false );
+ }
+
+ # Images
+ if ( $title->getNamespace() == NS_FILE ) {
+ $update = new HTMLCacheUpdate( $title, 'imagelinks' );
+ $update->doUpdate();
+ }
+
+ # User talk pages
+ if ( $title->getNamespace() == NS_USER_TALK ) {
+ $user = User::newFromName( $title->getText(), false );
+ $user->setNewtalk( false );
+ }
+
+ # Image redirects
+ RepoGroup::singleton()->getLocalRepo()->invalidateImageRedirect( $title );
+ }
+
+ /**
+ * Purge caches on page update etc
+ *
+ * @param $title Title object
+ * @todo: verify that $title is always a Title object (and never false or null), add Title hint to parameter $title
+ */
+ public static function onArticleEdit( $title ) {
+ global $wgDeferredUpdateList;
+
+ // Invalidate caches of articles which include this page
+ $wgDeferredUpdateList[] = new HTMLCacheUpdate( $title, 'templatelinks' );
+
+ // Invalidate the caches of all pages which redirect here
+ $wgDeferredUpdateList[] = new HTMLCacheUpdate( $title, 'redirect' );
+
+ # Purge squid for this page only
+ $title->purgeSquid();
+
+ # Clear file cache for this page only
+ HTMLFileCache::clearFileCache( $title );
+ }
+
+ /**#@-*/
+
+ /**
+ * Return a list of templates used by this article.
+ * Uses the templatelinks table
+ *
+ * @return Array of Title objects
+ */
+ public function getUsedTemplates() {
+ $result = array();
+ $id = $this->mTitle->getArticleID();
+
+ if ( $id == 0 ) {
+ return array();
+ }
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select( array( 'templatelinks' ),
+ array( 'tl_namespace', 'tl_title' ),
+ array( 'tl_from' => $id ),
+ __METHOD__ );
+
+ if ( $res !== false ) {
+ foreach ( $res as $row ) {
+ $result[] = Title::makeTitle( $row->tl_namespace, $row->tl_title );
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Returns a list of hidden categories this page is a member of.
+ * Uses the page_props and categorylinks tables.
+ *
+ * @return Array of Title objects
+ */
+ public function getHiddenCategories() {
+ $result = array();
+ $id = $this->mTitle->getArticleID();
+
+ if ( $id == 0 ) {
+ return array();
+ }
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select( array( 'categorylinks', 'page_props', 'page' ),
+ array( 'cl_to' ),
+ array( 'cl_from' => $id, 'pp_page=page_id', 'pp_propname' => 'hiddencat',
+ 'page_namespace' => NS_CATEGORY, 'page_title=cl_to' ),
+ __METHOD__ );
+
+ if ( $res !== false ) {
+ foreach ( $res as $row ) {
+ $result[] = Title::makeTitle( NS_CATEGORY, $row->cl_to );
+ }
+ }
+
+ return $result;
+ }
+
+ /**
+ * Return an applicable autosummary if one exists for the given edit.
+ * @param $oldtext String: the previous text of the page.
+ * @param $newtext String: The submitted text of the page.
+ * @param $flags Int bitmask: a bitmask of flags submitted for the edit.
+ * @return string An appropriate autosummary, or an empty string.
+ */
+ public static function getAutosummary( $oldtext, $newtext, $flags ) {
+ global $wgContLang;
+
+ # Decide what kind of autosummary is needed.
+
+ # Redirect autosummaries
+ $ot = Title::newFromRedirect( $oldtext );
+ $rt = Title::newFromRedirect( $newtext );
+
+ if ( is_object( $rt ) && ( !is_object( $ot ) || !$rt->equals( $ot ) || $ot->getFragment() != $rt->getFragment() ) ) {
+ $truncatedtext = $wgContLang->truncate(
+ str_replace( "\n", ' ', $newtext ),
+ max( 0, 250
+ - strlen( wfMsgForContent( 'autoredircomment' ) )
+ - strlen( $rt->getFullText() )
+ ) );
+ return wfMsgForContent( 'autoredircomment', $rt->getFullText(), $truncatedtext );
+ }
+
+ # New page autosummaries
+ if ( $flags & EDIT_NEW && strlen( $newtext ) ) {
+ # If they're making a new article, give its text, truncated, in the summary.
+
+ $truncatedtext = $wgContLang->truncate(
+ str_replace( "\n", ' ', $newtext ),
+ max( 0, 200 - strlen( wfMsgForContent( 'autosumm-new' ) ) ) );
+
+ return wfMsgForContent( 'autosumm-new', $truncatedtext );
+ }
+
+ # Blanking autosummaries
+ if ( $oldtext != '' && $newtext == '' ) {
+ return wfMsgForContent( 'autosumm-blank' );
+ } elseif ( strlen( $oldtext ) > 10 * strlen( $newtext ) && strlen( $newtext ) < 500 ) {
+ # Removing more than 90% of the article
+
+ $truncatedtext = $wgContLang->truncate(
+ $newtext,
+ max( 0, 200 - strlen( wfMsgForContent( 'autosumm-replace' ) ) ) );
+
+ return wfMsgForContent( 'autosumm-replace', $truncatedtext );
+ }
+
+ # If we reach this point, there's no applicable autosummary for our case, so our
+ # autosummary is empty.
+ return '';
+ }
+
+ /**
+ * Auto-generates a deletion reason
+ *
+ * @param &$hasHistory Boolean: whether the page has a history
+ * @return mixed String containing deletion reason or empty string, or boolean false
+ * if no revision occurred
+ */
+ public function getAutoDeleteReason( &$hasHistory ) {
+ global $wgContLang;
+
+ $dbw = wfGetDB( DB_MASTER );
+ // Get the last revision
+ $rev = Revision::newFromTitle( $this->getTitle() );
+
+ if ( is_null( $rev ) ) {
+ return false;
+ }
+
+ // Get the article's contents
+ $contents = $rev->getText();
+ $blank = false;
+
+ // If the page is blank, use the text from the previous revision,
+ // which can only be blank if there's a move/import/protect dummy revision involved
+ if ( $contents == '' ) {
+ $prev = $rev->getPrevious();
+
+ if ( $prev ) {
+ $contents = $prev->getText();
+ $blank = true;
+ }
+ }
+
+ // Find out if there was only one contributor
+ // Only scan the last 20 revisions
+ $res = $dbw->select( 'revision', 'rev_user_text',
+ array( 'rev_page' => $this->getID(), $dbw->bitAnd( 'rev_deleted', Revision::DELETED_USER ) . ' = 0' ),
+ __METHOD__,
+ array( 'LIMIT' => 20 )
+ );
+
+ if ( $res === false ) {
+ // This page has no revisions, which is very weird
+ return false;
+ }
+
+ $hasHistory = ( $res->numRows() > 1 );
+ $row = $dbw->fetchObject( $res );
+
+ if ( $row ) { // $row is false if the only contributor is hidden
+ $onlyAuthor = $row->rev_user_text;
+ // Try to find a second contributor
+ foreach ( $res as $row ) {
+ if ( $row->rev_user_text != $onlyAuthor ) { // Bug 22999
+ $onlyAuthor = false;
+ break;
+ }
+ }
+ } else {
+ $onlyAuthor = false;
+ }
+
+ // Generate the summary with a '$1' placeholder
+ if ( $blank ) {
+ // The current revision is blank and the one before is also
+ // blank. It's just not our lucky day
+ $reason = wfMsgForContent( 'exbeforeblank', '$1' );
+ } else {
+ if ( $onlyAuthor ) {
+ $reason = wfMsgForContent( 'excontentauthor', '$1', $onlyAuthor );
+ } else {
+ $reason = wfMsgForContent( 'excontent', '$1' );
+ }
+ }
+
+ if ( $reason == '-' ) {
+ // Allow these UI messages to be blanked out cleanly
+ return '';
+ }
+
+ // Replace newlines with spaces to prevent uglyness
+ $contents = preg_replace( "/[\n\r]/", ' ', $contents );
+ // Calculate the maximum amount of chars to get
+ // Max content length = max comment length - length of the comment (excl. $1)
+ $maxLength = 255 - ( strlen( $reason ) - 2 );
+ $contents = $wgContLang->truncate( $contents, $maxLength );
+ // Remove possible unfinished links
+ $contents = preg_replace( '/\[\[([^\]]*)\]?$/', '$1', $contents );
+ // Now replace the '$1' placeholder
+ $reason = str_replace( '$1', $contents, $reason );
+
+ return $reason;
+ }
+
+ /**
+ * Get parser options suitable for rendering the primary article wikitext
+ * @param $canonical boolean Determines that the generated options must not depend on user preferences (see bug 14404)
+ * @return mixed ParserOptions object or boolean false
+ */
+ public function getParserOptions( $canonical = false ) {
+ global $wgUser, $wgLanguageCode;
+
+ if ( !$this->mParserOptions || $canonical ) {
+ $user = !$canonical ? $wgUser : new User;
+ $parserOptions = new ParserOptions( $user );
+ $parserOptions->setTidy( true );
+ $parserOptions->enableLimitReport();
+
+ if ( $canonical ) {
+ $parserOptions->setUserLang( $wgLanguageCode ); # Must be set explicitely
+ return $parserOptions;
+ }
+ $this->mParserOptions = $parserOptions;
+ }
+ // Clone to allow modifications of the return value without affecting cache
+ return clone $this->mParserOptions;
+ }
+
+ /**
+ * Get parser options suitable for rendering the primary article wikitext
+ * @param User $user
+ * @return ParserOptions
+ */
+ public function makeParserOptions( User $user ) {
+ $options = ParserOptions::newFromUser( $user );
+ $options->enableLimitReport(); // show inclusion/loop reports
+ $options->setTidy( true ); // fix bad HTML
+ return $options;
+ }
+
+ /**
+ * Update all the appropriate counts in the category table, given that
+ * we've added the categories $added and deleted the categories $deleted.
+ *
+ * @param $added array The names of categories that were added
+ * @param $deleted array The names of categories that were deleted
+ */
+ public function updateCategoryCounts( $added, $deleted ) {
+ $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.
+ $insertCats = array_merge( $added, $deleted );
+ if ( !$insertCats ) {
+ # Okay, nothing to do
+ return;
+ }
+
+ $insertRows = array();
+
+ foreach ( $insertCats as $cat ) {
+ $insertRows[] = array(
+ 'cat_id' => $dbw->nextSequenceValue( 'category_cat_id_seq' ),
+ 'cat_title' => $cat
+ );
+ }
+ $dbw->insert( 'category', $insertRows, __METHOD__, 'IGNORE' );
+
+ $addFields = array( 'cat_pages = cat_pages + 1' );
+ $removeFields = array( 'cat_pages = cat_pages - 1' );
+
+ if ( $ns == NS_CATEGORY ) {
+ $addFields[] = 'cat_subcats = cat_subcats + 1';
+ $removeFields[] = 'cat_subcats = cat_subcats - 1';
+ } elseif ( $ns == NS_FILE ) {
+ $addFields[] = 'cat_files = cat_files + 1';
+ $removeFields[] = 'cat_files = cat_files - 1';
+ }
+
+ if ( $added ) {
+ $dbw->update(
+ 'category',
+ $addFields,
+ array( 'cat_title' => $added ),
+ __METHOD__
+ );
+ }
+
+ if ( $deleted ) {
+ $dbw->update(
+ 'category',
+ $removeFields,
+ array( 'cat_title' => $deleted ),
+ __METHOD__
+ );
+ }
+ }
+
+ /**
+ * Updates cascading protections
+ *
+ * @param $parserOutput ParserOutput object for the current version
+ **/
+ public function doCascadeProtectionUpdates( ParserOutput $parserOutput ) {
+ if ( wfReadOnly() || !$this->mTitle->areRestrictionsCascading() ) {
+ return;
+ }
+
+ // templatelinks table may have become out of sync,
+ // especially if using variable-based transclusions.
+ // For paranoia, check if things have changed and if
+ // so apply updates to the database. This will ensure
+ // that cascaded protections apply as soon as the changes
+ // are visible.
+
+ # Get templates from templatelinks
+ $id = $this->mTitle->getArticleID();
+
+ $tlTemplates = array();
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $res = $dbr->select( array( 'templatelinks' ),
+ array( 'tl_namespace', 'tl_title' ),
+ array( 'tl_from' => $id ),
+ __METHOD__
+ );
+
+ foreach ( $res as $row ) {
+ $tlTemplates["{$row->tl_namespace}:{$row->tl_title}"] = true;
+ }
+
+ # Get templates from parser output.
+ $poTemplates = array();
+ foreach ( $parserOutput->getTemplates() as $ns => $templates ) {
+ foreach ( $templates as $dbk => $id ) {
+ $poTemplates["$ns:$dbk"] = true;
+ }
+ }
+
+ # Get the diff
+ $templates_diff = array_diff_key( $poTemplates, $tlTemplates );
+
+ if ( count( $templates_diff ) > 0 ) {
+ # Whee, link updates time.
+ $u = new LinksUpdate( $this->mTitle, $parserOutput, false );
+ $u->doUpdate();
+ }
+ }
+
+ /*
+ * @deprecated since 1.18
+ */
+ public function quickEdit( $text, $comment = '', $minor = 0 ) {
+ global $wgUser;
+ return $this->doQuickEdit( $text, $wgUser, $comment, $minor );
+ }
+
+ /*
+ * @deprecated since 1.18
+ */
+ public function viewUpdates() {
+ global $wgUser;
+ return $this->doViewUpdates( $wgUser );
+ }
+
+ /*
+ * @deprecated since 1.18
+ */
+ public function useParserCache( $oldid ) {
+ global $wgUser;
+ return $this->isParserCacheUsed( $wgUser, $oldid );
+ }
+}
diff --git a/includes/Xml.php b/includes/Xml.php
index 970444fa..45ee8720 100644
--- a/includes/Xml.php
+++ b/includes/Xml.php
@@ -191,7 +191,7 @@ class Xml {
}
if( $year ) {
$encYear = intval( $year );
- } else if( $encMonth ) {
+ } elseif( $encMonth ) {
$thisMonth = intval( gmdate( 'n' ) );
$thisYear = intval( gmdate( 'Y' ) );
if( intval($encMonth) > $thisMonth ) {
@@ -209,8 +209,8 @@ class Xml {
/**
*
- * @param $selected The language code of the selected language
- * @param $customisedOnly If true only languages which have some content are listed
+ * @param $selected string The language code of the selected language
+ * @param $customisedOnly bool If true only languages which have some content are listed
* @return array of label and select
*/
public static function languageSelector( $selected, $customisedOnly = true ) {
@@ -250,10 +250,10 @@ class Xml {
* Shortcut to make a span element
* @param $text String content of the element, will be escaped
* @param $class String class name of the span element
- * @param $attribs other attributes
+ * @param $attribs array other attributes
* @return string
*/
- public static function span( $text, $class, $attribs=array() ) {
+ public static function span( $text, $class, $attribs = array() ) {
return self::element( 'span', array( 'class' => $class ) + $attribs, $text );
}
@@ -261,23 +261,23 @@ class Xml {
* Shortcut to make a specific element with a class attribute
* @param $text content of the element, will be escaped
* @param $class class name of the span element
- * @param $tag element name
- * @param $attribs other attributes
+ * @param $tag string element name
+ * @param $attribs array other attributes
* @return string
*/
- public static function wrapClass( $text, $class, $tag='span', $attribs=array() ) {
+ public static function wrapClass( $text, $class, $tag = 'span', $attribs = array() ) {
return self::tags( $tag, array( 'class' => $class ) + $attribs, $text );
}
/**
* Convenience function to build an HTML text input field
* @param $name String value of the name attribute
- * @param $size value of the size attribute
- * @param $value value of the value attribute
- * @param $attribs other attributes
+ * @param $size int value of the size attribute
+ * @param $value mixed value of the value attribute
+ * @param $attribs array other attributes
* @return string HTML
*/
- public static function input( $name, $size=false, $value=false, $attribs=array() ) {
+ public static function input( $name, $size = false, $value = false, $attribs = array() ) {
$attributes = array( 'name' => $name );
if( $size ) {
@@ -293,18 +293,22 @@ class Xml {
/**
* Convenience function to build an HTML password input field
- * @param $name value of the name attribute
- * @param $size value of the size attribute
- * @param $value value of the value attribute
- * @param $attribs other attributes
+ * @param $name string value of the name attribute
+ * @param $size int value of the size attribute
+ * @param $value mixed value of the value attribute
+ * @param $attribs array other attributes
* @return string HTML
*/
- public static function password( $name, $size=false, $value=false, $attribs=array() ) {
- return self::input( $name, $size, $value, array_merge($attribs, array('type' => 'password')));
+ public static function password( $name, $size = false, $value = false, $attribs = array() ) {
+ return self::input( $name, $size, $value, array_merge( $attribs, array( 'type' => 'password' ) ) );
}
/**
* Internal function for use in checkboxes and radio buttons and such.
+ *
+ * @param $name string
+ * @param $present bool
+ *
* @return array
*/
public static function attrib( $name, $present = true ) {
@@ -318,7 +322,7 @@ class Xml {
* @param $attribs Array other attributes
* @return string HTML
*/
- public static function check( $name, $checked=false, $attribs=array() ) {
+ public static function check( $name, $checked = false, $attribs=array() ) {
return self::element( 'input', array_merge(
array(
'name' => $name,
@@ -336,7 +340,7 @@ class Xml {
* @param $attribs other attributes
* @return string HTML
*/
- public static function radio( $name, $value, $checked=false, $attribs=array() ) {
+ public static function radio( $name, $value, $checked = false, $attribs = array() ) {
return self::element( 'input', array(
'name' => $name,
'type' => 'radio',
@@ -347,17 +351,23 @@ class Xml {
* Convenience function to build an HTML form label
* @param $label String text of the label
* @param $id
- * @param $attribs Array an attribute array. This will usuall be
+ * @param $attribs Array an attribute array. This will usuall be
* the same array as is passed to the corresponding input element,
- * so this function will cherry-pick appropriate attributes to
- * apply to the label as well; currently only class is applied.
+ * so this function will cherry-pick appropriate attributes to
+ * apply to the label as well; only class and title are applied.
* @return string HTML
*/
- public static function label( $label, $id, $attribs=array() ) {
+ public static function label( $label, $id, $attribs = array() ) {
$a = array( 'for' => $id );
+
+ # FIXME avoid copy pasting below:
if( isset( $attribs['class'] ) ){
$a['class'] = $attribs['class'];
}
+ if( isset( $attribs['title'] ) ){
+ $a['title'] = $attribs['title'];
+ }
+
return self::element( 'label', $a, $label );
}
@@ -366,20 +376,29 @@ class Xml {
* @param $label String text of the label
* @param $name String value of the name attribute
* @param $id String id of the input
- * @param $size value of the size attribute
+ * @param $size int value of the size attribute
* @param $value value of the value attribute
- * @param $attribs other attributes
+ * @param $attribs array other attributes
* @return string HTML
*/
- public static function inputLabel( $label, $name, $id, $size=false, $value=false, $attribs=array() ) {
+ public static function inputLabel( $label, $name, $id, $size=false, $value=false, $attribs = array() ) {
list( $label, $input ) = self::inputLabelSep( $label, $name, $id, $size, $value, $attribs );
return $label . '&#160;' . $input;
}
/**
* Same as Xml::inputLabel() but return input and label in an array
+ *
+ * @param $label
+ * @param $name
+ * @param $id
+ * @param $size
+ * @param $value
+ * @param $attribs array
+ *
+ * @return array
*/
- public static function inputLabelSep( $label, $name, $id, $size=false, $value=false, $attribs=array() ) {
+ public static function inputLabelSep( $label, $name, $id, $size = false, $value = false, $attribs = array() ) {
return array(
Xml::label( $label, $id, $attribs ),
self::input( $name, $size, $value, array( 'id' => $id ) + $attribs )
@@ -388,9 +407,16 @@ class Xml {
/**
* Convenience function to build an HTML checkbox with a label
+ *
+ * @param $label
+ * @param $name
+ * @param $id
+ * @param $checked bool
+ * @param $attribs array
+ *
* @return string HTML
*/
- public static function checkLabel( $label, $name, $id, $checked=false, $attribs=array() ) {
+ public static function checkLabel( $label, $name, $id, $checked = false, $attribs = array() ) {
return self::check( $name, $checked, array( 'id' => $id ) + $attribs ) .
'&#160;' .
self::label( $label, $id, $attribs );
@@ -398,9 +424,17 @@ class Xml {
/**
* Convenience function to build an HTML radio button with a label
+ *
+ * @param $label
+ * @param $name
+ * @param $value
+ * @param $id
+ * @param $checked bool
+ * @param $attribs array
+ *
* @return string HTML
*/
- public static function radioLabel( $label, $name, $value, $id, $checked=false, $attribs=array() ) {
+ public static function radioLabel( $label, $name, $value, $id, $checked = false, $attribs = array() ) {
return self::radio( $name, $value, $checked, array( 'id' => $id ) + $attribs ) .
'&#160;' .
self::label( $label, $id, $attribs );
@@ -412,18 +446,11 @@ class Xml {
* @param $attribs Array: optional custom attributes
* @return string HTML
*/
- public static function submitButton( $value, $attribs=array() ) {
+ public static function submitButton( $value, $attribs = array() ) {
return Html::element( 'input', array( 'type' => 'submit', 'value' => $value ) + $attribs );
}
/**
- * @deprecated Synonymous to Html::hidden()
- */
- public static function hidden( $name, $value, $attribs = array() ) {
- return Html::hidden( $name, $value, $attribs );
- }
-
- /**
* Convenience function to build an HTML drop-down list item.
* @param $text String: text for this item
* @param $value String: form submission value; if empty, use text
@@ -431,8 +458,8 @@ class Xml {
* @param $attribs array: optional additional HTML attributes
* @return string HTML
*/
- public static function option( $text, $value=null, $selected=false,
- $attribs=array() ) {
+ public static function option( $text, $value=null, $selected = false,
+ $attribs = array() ) {
if( !is_null( $value ) ) {
$attribs['value'] = $value;
}
@@ -446,14 +473,14 @@ class Xml {
* Build a drop-down box from a textual list.
*
* @param $name Mixed: Name and id for the drop-down
- * @param $class Mixed: CSS classes for the drop-down
+ * @param $list Mixed: Correctly formatted text (newline delimited) to be used to generate the options
* @param $other Mixed: Text for the "Other reasons" option
- * @param $list Mixed: Correctly formatted text to be used to generate the options
* @param $selected Mixed: Option which should be pre-selected
+ * @param $class Mixed: CSS classes for the drop-down
* @param $tabindex Mixed: Value of the tabindex attribute
* @return string
*/
- public static function listDropDown( $name= '', $list = '', $other = '', $selected = '', $class = '', $tabindex = Null ) {
+ public static function listDropDown( $name= '', $list = '', $other = '', $selected = '', $class = '', $tabindex = null ) {
$optgroup = false;
$options = self::option( $other, 'other', $selected === 'other' );
@@ -504,7 +531,9 @@ class Xml {
*
* @param $legend Legend of the fieldset. If evaluates to false, legend is not added.
* @param $content Pre-escaped content for the fieldset. If false, only open fieldset is returned.
- * @param $attribs Any attributes to fieldset-element.
+ * @param $attribs array Any attributes to fieldset-element.
+ *
+ * @return string
*/
public static function fieldset( $legend = false, $content = false, $attribs = array() ) {
$s = Xml::openElement( 'fieldset', $attribs ) . "\n";
@@ -522,11 +551,13 @@ class Xml {
/**
* Shortcut for creating textareas.
*
- * @param $name The 'name' for the textarea
- * @param $content Content for the textarea
- * @param $cols The number of columns for the textarea
- * @param $rows The number of rows for the textarea
- * @param $attribs Any other attributes for the textarea
+ * @param $name string The 'name' for the textarea
+ * @param $content string Content for the textarea
+ * @param $cols int The number of columns for the textarea
+ * @param $rows int The number of rows for the textarea
+ * @param $attribs array Any other attributes for the textarea
+ *
+ * @return string
*/
public static function textarea( $name, $content, $cols = 40, $rows = 5, $attribs = array() ) {
return self::element( 'textarea',
@@ -577,6 +608,10 @@ class Xml {
* Arrays are converted to JS arrays, objects are converted to JS associative
* arrays (objects). So cast your PHP associative arrays to objects before
* passing them to here.
+ *
+ * @param $value
+ *
+ * @return string
*/
public static function encodeJsVar( $value ) {
if ( is_bool( $value ) ) {
@@ -617,13 +652,16 @@ class Xml {
}
/**
- * Create a call to a JavaScript function. The supplied arguments will be
- * encoded using Xml::encodeJsVar().
+ * Create a call to a JavaScript function. The supplied arguments will be
+ * encoded using Xml::encodeJsVar().
*
- * @param $name The name of the function to call, or a JavaScript expression
+ * @param $name String The name of the function to call, or a JavaScript expression
* which evaluates to a function object which is called.
* @param $args Array of arguments to pass to the function.
+ *
* @since 1.17
+ *
+ * @return string
*/
public static function encodeJsCall( $name, $args ) {
$s = "$name(";
@@ -733,9 +771,9 @@ class Xml {
/**
* Build a table of data
- * @param $rows An array of arrays of strings, each to be a row in a table
- * @param $attribs An array of attributes to apply to the table tag [optional]
- * @param $headers An array of strings to use as table headers [optional]
+ * @param $rows array An array of arrays of strings, each to be a row in a table
+ * @param $attribs array An array of attributes to apply to the table tag [optional]
+ * @param $headers array An array of strings to use as table headers [optional]
* @return string
*/
public static function buildTable( $rows, $attribs = array(), $headers = null ) {
@@ -791,14 +829,25 @@ class XmlSelect {
}
}
+ /**
+ * @param $default
+ */
public function setDefault( $default ) {
$this->default = $default;
}
+ /**
+ * @param $name string
+ * @param $value
+ */
public function setAttribute( $name, $value ) {
$this->attributes[$name] = $value;
}
+ /**
+ * @param $name
+ * @return array|null
+ */
public function getAttribute( $name ) {
if ( isset($this->attributes[$name]) ) {
return $this->attributes[$name];
@@ -807,22 +856,36 @@ class XmlSelect {
}
}
+ /**
+ * @param $name
+ * @param $value bool
+ */
public function addOption( $name, $value = false ) {
// Stab stab stab
$value = ($value !== false) ? $value : $name;
- $this->options[] = Xml::option( $name, $value, $value === $this->default );
+ $this->options[] = array( $name => $value );
}
- // This accepts an array of form
- // label => value
- // label => ( label => value, label => value )
+ /**
+ * This accepts an array of form
+ * label => value
+ * label => ( label => value, label => value )
+ *
+ * @param $options
+ */
public function addOptions( $options ) {
- $this->options[] = trim(self::formatOptions( $options, $this->default ));
+ $this->options[] = $options;
}
- // This accepts an array of form
- // label => value
- // label => ( label => value, label => value )
+ /**
+ * This accepts an array of form
+ * label => value
+ * label => ( label => value, label => value )
+ *
+ * @param $options
+ * @param bool $default
+ * @return string
+ */
static function formatOptions( $options, $default = false ) {
$data = '';
foreach( $options as $label => $value ) {
@@ -837,15 +900,22 @@ class XmlSelect {
return $data;
}
+ /**
+ * @return string
+ */
public function getHTML() {
- return Xml::tags( 'select', $this->attributes, implode( "\n", $this->options ) );
+ $contents = '';
+ foreach ( $this->options as $options ) {
+ $contents .= self::formatOptions( $options, $this->default );
+ }
+ return Xml::tags( 'select', $this->attributes, rtrim( $contents ) );
}
}
/**
- * A wrapper class which causes Xml::encodeJsVar() and Xml::encodeJsCall() to
- * interpret a given string as being a JavaScript expression, instead of string
+ * A wrapper class which causes Xml::encodeJsVar() and Xml::encodeJsCall() to
+ * interpret a given string as being a JavaScript expression, instead of string
* data.
*
* Example:
diff --git a/includes/XmlTypeCheck.php b/includes/XmlTypeCheck.php
index a004ef4d..78dd259d 100644
--- a/includes/XmlTypeCheck.php
+++ b/includes/XmlTypeCheck.php
@@ -34,11 +34,16 @@ class XmlTypeCheck {
/**
* Get the root element. Simple accessor to $rootElement
+ *
+ * @return string
*/
public function getRootElement() {
return $this->rootElement;
}
+ /**
+ * @param $fname
+ */
private function run( $fname ) {
$parser = xml_parser_create_ns( 'UTF-8' );
@@ -65,6 +70,11 @@ class XmlTypeCheck {
xml_parser_free( $parser );
}
+ /**
+ * @param $parser
+ * @param $name
+ * @param $attribs
+ */
private function rootElementOpen( $parser, $name, $attribs ) {
$this->rootElement = $name;
@@ -76,7 +86,12 @@ class XmlTypeCheck {
xml_set_element_handler( $parser, false, false );
}
}
-
+
+ /**
+ * @param $parser
+ * @param $name
+ * @param $attribs
+ */
private function elementOpen( $parser, $name, $attribs ) {
if( call_user_func( $this->filterCallback, $name, $attribs ) ) {
// Filter hit!
diff --git a/includes/ZhClient.php b/includes/ZhClient.php
index a04220c6..8bb36b23 100644
--- a/includes/ZhClient.php
+++ b/includes/ZhClient.php
@@ -2,7 +2,6 @@
/**
* Client for querying zhdaemon
- *
*/
class ZhClient {
var $mHost, $mPort, $mFP, $mConnected;
@@ -10,9 +9,12 @@ class ZhClient {
/**
* Constructor
*
- * @access private
+ * @param $host
+ * @param $port
+ *
+ * @return ZhClient
*/
- function __construct($host, $port) {
+ function __construct( $host, $port ) {
$this->mHost = $host;
$this->mPort = $port;
$this->mConnected = $this->connect();
@@ -20,6 +22,8 @@ class ZhClient {
/**
* Check if connection to zhdaemon is successful
+ *
+ * @return bool
*/
function isconnected() {
return $this->mConnected;
@@ -29,11 +33,13 @@ class ZhClient {
* Establish conncetion
*
* @access private
+ *
+ * @return bool
*/
function connect() {
wfSuppressWarnings();
$errno = $errstr = '';
- $this->mFP = fsockopen($this->mHost, $this->mPort, $errno, $errstr, 30);
+ $this->mFP = fsockopen( $this->mHost, $this->mPort, $errno, $errstr, 30 );
wfRestoreWarnings();
if ( !$this->mFP ) {
return false;
@@ -45,31 +51,33 @@ class ZhClient {
* Query the daemon and return the result
*
* @access private
+ *
+ * @return string
*/
- function query($request) {
+ function query( $request ) {
if ( !$this->mConnected ) {
return false;
}
- fwrite($this->mFP, $request);
+ fwrite( $this->mFP, $request );
- $result=fgets($this->mFP, 1024);
+ $result = fgets( $this->mFP, 1024 );
- list($status, $len) = explode(" ", $result);
- if($status == 'ERROR') {
- //$len is actually the error code...
+ list( $status, $len ) = explode( ' ', $result );
+ if( $status == 'ERROR' ) {
+ // $len is actually the error code...
print "zhdaemon error $len<br />\n";
return false;
}
- $bytesread=0;
- $data='';
- while(!feof($this->mFP) && $bytesread<$len) {
- $str= fread($this->mFP, $len-$bytesread);
- $bytesread += strlen($str);
+ $bytesread = 0;
+ $data = '';
+ while( !feof( $this->mFP ) && $bytesread < $len ) {
+ $str = fread( $this->mFP, $len - $bytesread );
+ $bytesread += strlen( $str );
$data .= $str;
}
- //data should be of length $len. otherwise something is wrong
- if ( strlen($data) != $len ) {
+ // data should be of length $len. otherwise something is wrong
+ if ( strlen( $data ) != $len ) {
return false;
}
return $data;
@@ -78,14 +86,14 @@ class ZhClient {
/**
* Convert the input to a different language variant
*
- * @param $text string: input text
- * @param $tolang string: language variant
+ * @param $text String: input text
+ * @param $tolang String: language variant
* @return string the converted text
*/
- function convert($text, $tolang) {
- $len = strlen($text);
+ function convert( $text, $tolang ) {
+ $len = strlen( $text );
$q = "CONV $tolang $len\n$text";
- $result = $this->query($q);
+ $result = $this->query( $q );
if ( !$result ) {
$result = $text;
}
@@ -95,39 +103,39 @@ class ZhClient {
/**
* Convert the input to all possible variants
*
- * @param $text string: input text
+ * @param $text String: input text
* @return array langcode => converted_string
*/
- function convertToAllVariants($text) {
- $len = strlen($text);
+ function convertToAllVariants( $text ) {
+ $len = strlen( $text );
$q = "CONV ALL $len\n$text";
- $result = $this->query($q);
+ $result = $this->query( $q );
if ( !$result ) {
return false;
}
- list($infoline, $data) = explode('|', $result, 2);
- $info = explode(";", $infoline);
+ list( $infoline, $data ) = explode( '|', $result, 2 );
+ $info = explode( ';', $infoline );
$ret = array();
- $i=0;
- foreach($info as $variant) {
- list($code, $len) = explode(' ', $variant);
- $ret[strtolower($code)] = substr($data, $i, $len);
- $i+=$len;
+ $i = 0;
+ foreach( $info as $variant ) {
+ list( $code, $len ) = explode( ' ', $variant );
+ $ret[strtolower( $code )] = substr( $data, $i, $len );
+ $i += $len;
}
return $ret;
}
/**
* Perform word segmentation
*
- * @param $text string: input text
+ * @param $text String: input text
* @return string segmented text
*/
- function segment($text) {
- $len = strlen($text);
+ function segment( $text ) {
+ $len = strlen( $text );
$q = "SEG $len\n$text";
- $result = $this->query($q);
- if ( !$result ) {// fallback to character based segmentation
- $result = $this->segment($text);
+ $result = $this->query( $q );
+ if ( !$result ) { // fallback to character based segmentation
+ $result = $this->segment( $text );
}
return $result;
}
@@ -136,6 +144,6 @@ class ZhClient {
* Close the connection
*/
function close() {
- fclose($this->mFP);
+ fclose( $this->mFP );
}
}
diff --git a/includes/ZhConversion.php b/includes/ZhConversion.php
index 7ffdeab8..58bc98c9 100644
--- a/includes/ZhConversion.php
+++ b/includes/ZhConversion.php
@@ -1720,7 +1720,6 @@ $zh2Hant = array(
'èº' => '躪',
'躜' => '躦',
'躯' => '軀',
-'軿' => '𫚒',
'车' => '車',
'轧' => '軋',
'轨' => '軌',
@@ -2950,6 +2949,7 @@ $zh2Hant = array(
'ä¸å åœ' => 'ä¸å åœ',
'ä¸å å‰å‡¶' => 'ä¸å å‰å‡¶',
'ä¸å ç®—' => 'ä¸å ç®—',
+'ä¸åª' => 'ä¸åª',
'ä¸å¥½å¹²æ¶‰' => 'ä¸å¥½å¹²æ¶‰',
'ä¸å¥½å¹²é¢„' => 'ä¸å¥½å¹²é ',
'ä¸å¥½å¹²é ' => 'ä¸å¥½å¹²é ',
@@ -3028,6 +3028,7 @@ $zh2Hant = array(
'中签' => '中籤',
'中美å‘表' => '中美發表',
'中è¯' => '中藥',
+'中西åˆå¹¶' => '中西åˆä½µ',
'中风åŽ' => '中風後',
'丰儀' => '丰儀',
'丰仪' => '丰儀',
@@ -3372,6 +3373,7 @@ $zh2Hant = array(
'于正昇' => '于正昇',
'于正昌' => '于正昌',
'于归' => '于歸',
+'于æ°' => '于æ°',
'于永波' => '于永波',
'于江震' => '于江震',
'于波' => '于波',
@@ -3518,6 +3520,7 @@ $zh2Hant = array(
'什锦é¢' => '什錦麵',
'什么' => '什麼',
'仇仇' => '仇讎',
+'今天' => '今天',
'他克制' => '他剋制',
'ä»–é’Ÿ' => 'ä»–é˜',
'付托' => '付託',
@@ -3549,6 +3552,7 @@ $zh2Hant = array(
'伊尔汗历表' => '伊爾汗曆表',
'伊达里å­' => '伊é”里å­',
'伊适æ°' => '伊é©æ°',
+'伊里布' => '伊里布',
'伊éƒ' => '伊鬱',
'ä¼å‡ ' => 'ä¼å‡ ',
'ä¼ç½ªåŠæ°‘' => 'ä¼ç½ªå¼”æ°‘',
@@ -3897,6 +3901,7 @@ $zh2Hant = array(
'幸å…' => '倖å…',
'幸存' => '倖存',
'幸幸' => '倖幸',
+'候å¤' => '候覆',
'倛丑' => '倛醜',
'借å¬äºŽè‹' => '借è½æ–¼è¾',
'倦游' => '倦éŠ',
@@ -4051,7 +4056,6 @@ $zh2Hant = array(
'八出ç¥å±±' => '八出ç¥å±±',
'八出逃' => '八出逃',
'八周åŽ' => '八周後',
-'八大胡åŒ' => '八大胡åŒ',
'八天åŽ' => '八天後',
'八字胡' => 'å…«å­—é¬',
'å…«å¹´' => 'å…«å¹´',
@@ -4100,6 +4104,7 @@ $zh2Hant = array(
'冬山庄' => '冬山庄',
'冬日里' => '冬日裡',
'冬游' => '冬éŠ',
+'冰冷' => '冰冷',
'冶游' => '冶éŠ',
'冷庄å­' => '冷莊å­',
'冷é¢ç›¸' => '冷é¢ç›¸',
@@ -4171,6 +4176,7 @@ $zh2Hant = array(
'划得æ¥' => '划得來',
'划拳' => '划拳',
'划桨' => '划槳',
+'划槳' => '划槳',
'划水' => '划水',
'划算' => '划算',
'划船' => '划船',
@@ -4220,6 +4226,7 @@ $zh2Hant = array(
'克期' => '剋期',
'克死' => '剋死',
'克薄' => '剋薄',
+'å‰å¤©' => 'å‰å¤©',
'å‰å¾€' => 'å‰å¾€',
'å‰è¨€ä¸ç­”åŽè¯­' => 'å‰è¨€ä¸ç­”後語',
'å‰é¢åº—' => 'å‰é¢åº—',
@@ -4277,6 +4284,7 @@ $zh2Hant = array(
'包扎' => '包紮',
'包庄' => '包莊',
'åŒç³»' => 'åŒç¹«',
+'化学家' => '化學家',
'北岳' => '北嶽',
'北回线' => '北迴線',
'北回é“è·¯' => '北迴éµè·¯',
@@ -4381,6 +4389,7 @@ $zh2Hant = array(
'å£ç‡¥å”‡å¹²' => 'å£ç‡¥å”‡ä¹¾',
'å£è…¹ä¹‹æ¬²' => 'å£è…¹ä¹‹æ…¾',
'å£é‡Œ' => 'å£è£¡',
+'å£è¯•' => 'å£è©¦',
'å£é’Ÿ' => 'å£é˜',
'å¤ä¹¦äº‘' => 'å¤æ›¸äº‘',
'å¤æ›¸äº‘' => 'å¤æ›¸äº‘',
@@ -4437,6 +4446,7 @@ $zh2Hant = array(
'å¯è‡ªåˆ¶' => 'å¯è‡ªåˆ¶',
'å°å­å¥³' => 'å°å­å¥³',
'å°å­å­™' => 'å°å­å­«',
+'å°å·ž' => 'å°å·ž',
'å°å¸ƒæ™¯' => 'å°å¸ƒæ™¯',
'å°åŽ†å²' => 'å°æ­·å²',
'å°é’Ÿ' => 'å°é˜',
@@ -4467,8 +4477,8 @@ $zh2Hant = array(
'å„辟' => 'å„é—¢',
'å„类钟' => 'å„é¡žé˜',
'åˆä¼™äºº' => 'åˆä¼™äºº',
-'åˆå¹¶' => 'åˆä½µ',
'åˆä¼™' => 'åˆå¤¥',
+'åˆå¹¶' => 'åˆå¹¶',
'åˆåºœä¸Š' => 'åˆåºœä¸Š',
'åˆé‡‡' => 'åˆæŽ¡',
'åˆåŽ†' => 'åˆæ›†',
@@ -4491,9 +4501,11 @@ $zh2Hant = array(
'åŽåŒ—è¡—' => 'åŽåŒ—è¡—',
'åŽåœŸ' => 'åŽåœŸ',
'åŽå¦ƒ' => 'åŽå¦ƒ',
+'åŽå§“' => 'åŽå§“',
'åŽå®‰è·¯' => 'åŽå®‰è·¯',
'åŽå¹³è·¯' => 'åŽå¹³è·¯',
'åŽåº§' => 'åŽåº§',
+'åŽæ¯æˆŠ' => 'åŽæ¯æˆŠ',
'åŽæµ·æ¹¾' => 'åŽæµ·ç£',
'åŽæµ·ç£' => 'åŽæµ·ç£',
'åŽç‘žç«™' => 'åŽç‘žç«™',
@@ -4656,6 +4668,7 @@ $zh2Hant = array(
'国历' => '國曆',
'国历代' => '國歷代',
'国历任' => '國歷任',
+'国历æ¥' => '國歷來',
'国历å²' => '國歷å²',
'国历届' => '國歷屆',
'国历ç»' => '國歷經',
@@ -4818,6 +4831,7 @@ $zh2Hant = array(
'天åŽæ¥' => '天後來',
'天åŽåŠ' => '天後åŠ',
'天åŽå¤©' => '天後天',
+'天文学家' => '天文學家',
'天文学钟' => '天文學é˜',
'天文历表' => '天文曆表',
'天文钟' => '天文é˜',
@@ -4900,6 +4914,7 @@ $zh2Hant = array(
'嬴余' => '嬴餘',
'å­ä¹‹ä¸°å…®' => 'å­ä¹‹ä¸°å…®',
'å­äº‘' => 'å­äº‘',
+'å­æ™³' => 'å­æ™³',
'字汇' => '字彙',
'å­—ç è¡¨' => '字碼表',
'字里行间' => '字裡行間',
@@ -5301,12 +5316,14 @@ $zh2Hant = array(
'往日無仇' => '往日無讎',
'往里' => '往裡',
'å¾€å¤' => '往複',
+'å¾…å¤' => '待覆',
'很干' => '很乾',
'很凶' => '很兇',
'很丑' => '很醜',
'律历志' => '律曆志',
'åŽå°' => '後å°',
'åŽå°è€æ¿' => '後å°è€æ¿',
+'åŽå¤©' => '後天',
'åŽåº„' => '後庄',
'åŽé¢åº—' => '後é¢åº—',
'å¾å¹²' => 'å¾å¹¹',
@@ -5656,11 +5673,12 @@ $zh2Hant = array(
'扯é¢' => '扯麵',
'扶余国' => '扶餘國',
'批准的' => '批准的',
-'批å¤' => '批複',
+'批å¤' => '批覆',
'批注' => '批註',
'批斗' => '批鬥',
'承制' => '承製',
'抑制作用' => '抑制作用',
+'抑制剂' => '抑制劑',
'抑éƒ' => '抑鬱',
'抓奸' => '抓姦',
'抓è¯' => '抓藥',
@@ -5999,6 +6017,7 @@ $zh2Hant = array(
'数天åŽ' => '數天後',
'æ•°å­—é’Ÿ' => '數字é˜',
'数字钟表' => '數字é˜éŒ¶',
+'数学家' => '數學家',
'数罪并罚' => '數罪併罰',
'数与è™ç¡®' => '數與虜确',
'文丑' => '文丑',
@@ -6162,6 +6181,7 @@ $zh2Hant = array(
'å‡å¹³' => '昇平',
'å‡é˜³' => '昇陽',
'昊天ä¸åŠ' => '昊天ä¸å¼”',
+'明天' => '明天',
'明å¾' => '明徵',
'明目张胆' => '明目張胆',
'明窗净几' => '明窗淨几',
@@ -6180,6 +6200,7 @@ $zh2Hant = array(
'春è¯' => '春藥',
'春游' => '春éŠ',
'春香斗学' => '春香鬥學',
+'昨天' => '昨天',
'时钟' => '時é˜',
'时间里' => '時間裡',
'晃è¡' => '晃蕩',
@@ -6232,6 +6253,7 @@ $zh2Hant = array(
'æ›´é’Ÿ' => 'æ›´é˜',
'书呆å­' => '書çƒå­',
'书签' => '書籤',
+'书é¢' => '書é¢',
'曼谷人' => '曼谷人',
'曾朴' => '曾樸',
'最多' => '最多',
@@ -6292,6 +6314,7 @@ $zh2Hant = array(
'木制' => '木製',
'木钟' => '木é˜',
'未干' => '未乾',
+'未干涉' => '未干涉',
'末è¯' => '末藥',
'本å¾' => '本徵',
'术赤' => '朮赤',
@@ -6470,7 +6493,6 @@ $zh2Hant = array(
'归余' => '歸餘',
'歹斗' => '歹鬥',
'死于' => '死於',
-'死胡åŒ' => '死胡åŒ',
'死里求生' => '死裡求生',
'死里逃生' => '死裡逃生',
'æ®–è°·' => 'æ®–ç©€',
@@ -6638,7 +6660,9 @@ $zh2Hant = array(
'清汤挂é¢' => '清湯掛麵',
'å‡è‚¥è¯' => '減肥藥',
'渠冲' => '渠è¡',
+'测试' => '測試',
'港制' => '港製',
+'游离' => '游離',
'浑朴' => '渾樸',
'浑个' => '渾箇',
'凑åˆç€' => '湊åˆè‘—',
@@ -6847,6 +6871,7 @@ $zh2Hant = array(
'牛肉é¢' => '牛肉麵',
'牛åª' => '牛隻',
'物欲' => '物慾',
+'物ç†å­¦å®¶' => '物ç†å­¸å®¶',
'特别致' => '特别致',
'特制ä½' => '特制ä½',
'特制定' => '特制定',
@@ -6900,6 +6925,7 @@ $zh2Hant = array(
'玉历å²' => '玉歷å²',
'王侯åŽ' => '王侯åŽ',
'王åŽ' => '王åŽ',
+'王田里' => '王田里',
'王庄' => '王莊',
'王余鱼' => '王餘魚',
'ç肴异馔' => 'ç肴異饌',
@@ -6926,6 +6952,7 @@ $zh2Hant = array(
'生力é¢' => '生力麵',
'生于' => '生於',
'生殖洄游' => '生殖洄游',
+'生物学家' => '生物學家',
'生物钟' => '生物é˜',
'生å‘生' => '生發生',
'生åŽå‘' => '生è¯é«®',
@@ -6935,6 +6962,7 @@ $zh2Hant = array(
'产åµæ´„游' => '產åµæ´„游',
'用è¯' => '用藥',
'甩å‘' => '甩髮',
+'田庄英雄' => '田庄英雄',
'ç”°è°·' => 'ç”°ç©€',
'田庄' => '田莊',
'田里' => '田裡',
@@ -7178,6 +7206,7 @@ $zh2Hant = array(
'ç§å¸ˆä¸­' => 'ç§å¸«ä¸­',
'ç§å¸ˆé“' => 'ç§å¸«é“',
'ç§æ”¾' => 'ç§æ”¾',
+'科学家' => '科學家',
'科斗' => '科斗',
'科范' => '科範',
'秒表明' => '秒表明',
@@ -7273,6 +7302,7 @@ $zh2Hant = array(
'笨笨呆呆' => '笨笨呆呆',
'第四出局' => '第四出局',
'笔秃墨干' => '筆禿墨乾',
+'笔试' => '筆試',
'等于' => '等於',
'笋干' => 'ç­ä¹¾',
'ç­‘å‰' => 'ç­‘å‰',
@@ -7360,6 +7390,7 @@ $zh2Hant = array(
'纪历' => '紀曆',
'纪历å²' => '紀歷å²',
'约å ' => 'ç´„ä½”',
+'红åŽå‡è¯´' => 'ç´…åŽå‡èªª',
'红绳系足' => '紅繩繫足',
'红色长å‘' => '紅色長髮',
'红钟' => 'ç´…é˜',
@@ -7562,6 +7593,7 @@ $zh2Hant = array(
'è€æ¿' => 'è€é—†',
'è€é¢çš®' => 'è€é¢çš®',
'考å¾' => '考徵',
+'考试' => '考試',
'而克制' => '而剋制',
'è€æ–—' => 'è€é¬¥',
'耕佣' => '耕傭',
@@ -7723,7 +7755,6 @@ $zh2Hant = array(
'茶余' => '茶餘',
'茶é¢' => '茶麵',
'è‰ä¸›é‡Œ' => 'è‰å¢è£¡',
-'è‰å¹¿' => 'è‰å¹¿',
'è‰è' => 'è‰è',
'è‰è¯' => 'è‰è—¥',
'èå±…' => 'èå±…',
@@ -7960,7 +7991,6 @@ $zh2Hant = array(
'行凶後' => '行兇後',
'行于' => '行於',
'行百里者åŠäºŽä¹å' => '行百里者åŠæ–¼ä¹å',
-'胡åŒ' => 'è¡šè¡•',
'å«åŽåº„å…¬' => '衛後莊公',
'å«æ˜Ÿé’Ÿ' => '衛星é˜',
'冲上' => 'è¡ä¸Š',
@@ -8191,6 +8221,7 @@ $zh2Hant = array(
'言大而夸' => '言大而夸',
'言辩而确' => '言辯而确',
'订制' => '訂製',
+'计划' => '計劃',
'计时表' => '計時錶',
'托了' => '託了',
'托事' => '託事',
@@ -8282,6 +8313,7 @@ $zh2Hant = array(
'è°ˆå¾' => '談徵',
'请å‚阅' => 'è«‹åƒé–±',
'请å›å…¥ç“®' => 'è«‹å›å…¥ç”•',
+'请求' => '請求',
'请托' => '請託',
'咨询' => '諮詢',
'诸余' => '諸餘',
@@ -8466,10 +8498,15 @@ $zh2Hant = array(
'é€è¾Ÿ' => 'é€é—¢',
'è¿™åªä¸' => '這åªä¸',
'è¿™åªå…' => '這åªå…',
+'è¿™åªå¯' => '這åªå¯',
+'è¿™åªåœ¨' => '這åªåœ¨',
'è¿™åªå®¹' => '這åªå®¹',
'è¿™åªé‡‡' => '這åªæŽ¡',
'è¿™åªæ˜¯' => '這åªæ˜¯',
+'è¿™åªä¼š' => '這åªæœƒ',
'è¿™åªç”¨' => '這åªç”¨',
+'è¿™åªèƒ½' => '這åªèƒ½',
+'è¿™åªéœ€' => '這åªéœ€',
'这伙人' => '這夥人',
'这里' => '這裡',
'这钟' => '這é˜',
@@ -8544,7 +8581,8 @@ $zh2Hant = array(
'游踪' => 'éŠè¹¤',
'游逛' => 'éŠé€›',
'游错' => 'éŠéŒ¯',
-'游离' => 'éŠé›¢',
+'游离份å­' => 'éŠé›¢ä»½å­',
+'游离票' => 'éŠé›¢ç¥¨',
'游骑兵' => 'éŠé¨Žå…µ',
'游魂' => 'éŠé­‚',
'过于' => 'éŽæ–¼',
@@ -8574,8 +8612,14 @@ $zh2Hant = array(
'还采' => '還採',
'还冲' => 'é‚„è¡',
'邋里邋é¢' => '邋裡邋é¢',
+'é‚£åªå¯' => 'é‚£åªå¯',
+'é‚£åªåœ¨' => 'é‚£åªåœ¨',
'é‚£åªæ˜¯' => 'é‚£åªæ˜¯',
+'é‚£åªä¼š' => 'é‚£åªæœƒ',
'é‚£åªæœ‰' => 'é‚£åªæœ‰',
+'é‚£åªç”¨' => 'é‚£åªç”¨',
+'é‚£åªèƒ½' => 'é‚£åªèƒ½',
+'é‚£åªéœ€' => 'é‚£åªéœ€',
'é‚£å·' => 'é‚£æ²',
'那里' => '那裡',
'é‚£åª' => '那隻',
@@ -9173,6 +9217,7 @@ $zh2Hant = array(
'余桶' => '餘桶',
'余业' => '餘業',
'余款' => '餘款',
+'余欢' => '餘歡',
'余步' => '餘步',
'余殃' => '餘殃',
'余毒' => '餘毒',
@@ -9302,6 +9347,7 @@ $zh2Hant = array(
'高干预' => '高干é ',
'高干' => '高幹',
'高度自制' => '高度自制',
+'高涌泉' => '高涌泉',
'高清愿' => '高清愿',
'é«¡å‘' => 'é«¡é«®',
'髭胡' => 'é«­é¬',
@@ -9729,7 +9775,6 @@ $zh2Hant = array(
);
$zh2Hans = array(
-'㑳' => '㑇',
'㞞' => '𪨊',
'ã ' => '㟆',
'㩜' => '㨫',
@@ -9737,33 +9782,11 @@ $zh2Hans = array(
'䊷' => '䌶',
'䋙' => '䌺',
'䋻' => '䌾',
-'䌈' => '𦈖',
'ä¼' => 'äž',
-'äª' => 'ð©¼',
-'䪗' => 'ð©€',
-'䪘' => 'ð©¿',
-'ä«´' => 'ð©–—',
-'䬘' => '𩙮',
-'ä¬' => '𩙯',
-'ä­€' => 'ð© ‡',
-'ä­ƒ' => 'ð© ˆ',
-'䭿' => '𩧭',
-'ä®' => '𩧰',
-'䮞' => 'ð©¨',
-'䮠' => '𩧿',
-'䮳' => 'ð©¨',
-'䮾' => '𩧪',
'䯀' => '䯅',
'䰾' => '鲃',
-'䱙' => '𩾈',
-'䱬' => '𩾊',
-'䱰' => '𩾋',
-'ä±·' => 'ä²£',
'ä±½' => 'ä²',
'ä²' => '鳚',
-'䲰' => '𪉂',
-'䴬' => '𪎈',
-'䴴' => '𪎋',
'丟' => '丢',
'並' => '并',
'ä¹¾' => 'å¹²',
@@ -9922,7 +9945,6 @@ $zh2Hans = array(
'å—Ž' => 'å—',
'嗚' => '呜',
'嗩' => '唢',
-'嗰' => '𠮶',
'å—¶' => 'å“”',
'å—¹' => 'ðª¡',
'嘆' => 'å¹',
@@ -11722,12 +11744,10 @@ $zh2Hans = array(
'釤' => 'é’',
'釧' => 'é’',
'釩' => '钒',
-'釳' => '𨰿',
'釵' => '钗',
'釷' => 'é’',
'釹' => '钕',
'釺' => '钎',
-'釾' => '䥺',
'鈀' => '钯',
'éˆ' => 'é’«',
'鈃' => '钘',
@@ -11735,7 +11755,6 @@ $zh2Hans = array(
'鈇' => '𫓧',
'鈈' => '钚',
'鈉' => '钠',
-'鈋' => '𨱂',
'éˆ' => 'é’',
'鈎' => '钩',
'éˆ' => 'é’¤',
@@ -11744,15 +11763,12 @@ $zh2Hans = array(
'鈔' => '钞',
'鈕' => '钮',
'鈞' => '钧',
-'鈠' => 'ð¨±',
'鈣' => '钙',
'鈥' => '钬',
'鈦' => '钛',
'鈧' => '钪',
'鈮' => '铌',
-'鈯' => '𨱄',
'鈰' => '铈',
-'鈲' => '𨱃',
'鈳' => '钶',
'鈴' => '铃',
'鈷' => '钴',
@@ -11763,7 +11779,6 @@ $zh2Hans = array(
'鈾' => '铀',
'鈿' => '钿',
'鉀' => '钾',
-'é‰' => '𨱅',
'鉅' => '钜',
'鉈' => '铊',
'鉉' => '铉',
@@ -11807,7 +11822,6 @@ $zh2Hans = array(
'銬' => 'é“',
'銱' => '铞',
'銳' => 'é”',
-'銶' => '𨱇',
'銷' => '销',
'銹' => '锈',
'銻' => '锑',
@@ -11816,7 +11830,6 @@ $zh2Hans = array(
'鋃' => '锒',
'鋅' => '锌',
'鋇' => '钡',
-'鋉' => '𨱈',
'鋌' => '铤',
'é‹' => 'é“—',
'鋒' => '锋',
@@ -11839,7 +11852,6 @@ $zh2Hans = array(
'鋸' => '锯',
'鋼' => '钢',
'éŒ' => '锞',
-'錂' => '𨱋',
'錄' => '录',
'錆' => '锖',
'錇' => '锫',
@@ -11869,7 +11881,6 @@ $zh2Hans = array(
'é€' => 'é”',
'é' => '锨',
'éƒ' => '锪',
-'é„' => '𨱉',
'é†' => 'é’”',
'é‡' => 'é”´',
'éˆ' => '锳',
@@ -11885,7 +11896,6 @@ $zh2Hans = array(
'é¥' => '锲',
'é©' => '锘',
'é¬' => '锹',
-'é®' => '𨱎',
'é°' => '锾',
'éµ' => 'é”®',
'é¶' => '锶',
@@ -11912,19 +11922,15 @@ $zh2Hans = array(
'鎬' => 'é•',
'鎭' => '鎮',
'鎮' => '镇',
-'鎯' => 'ð¨±',
'鎰' => '镒',
'鎲' => '镋',
'鎳' => 'é•',
'鎵' => '镓',
-'鎷' => '𨰾',
'鎸' => '镌',
'鎿' => '镎',
'éƒ' => 'é•ž',
-'é†' => '𨱌',
'é‡' => 'é•Ÿ',
'éˆ' => '链',
-'é‰' => '𨱒',
'éŒ' => '镆',
'é' => 'é•™',
'é' => 'é• ',
@@ -11945,13 +11951,10 @@ $zh2Hans = array(
'éµ' => '铧',
'é·' => '镤',
'é¹' => '镪',
-'éº' => '䥽',
'é½' => '锈',
'éƒ' => 'é“™',
'é‹' => 'é“´',
'é' => '𫔎',
-'éŽ' => '𨱓',
-'é' => '𨱔',
'é' => 'é•£',
'é’' => '铹',
'é“' => '镦',
@@ -11960,13 +11963,11 @@ $zh2Hans = array(
'é™' => 'é•«',
'é' => 'é•¢',
'é ' => '镨',
-'é¥' => '䦅',
'é¦' => '锎',
'é§' => 'é”',
'é¨' => 'é•„',
'é«' => 'é•Œ',
'é®' => 'é•°',
-'é¯' => '䦃',
'é²' => '镯',
'é³' => 'é•­',
'éµ' => 'é“',
@@ -12006,10 +12007,8 @@ $zh2Hans = array(
'é–‰' => 'é—­',
'é–‹' => 'å¼€',
'閌' => '闶',
-'é–' => '𨸂',
'é–Ž' => 'é—³',
'é–' => 'é—°',
-'é–' => '𨸃',
'é–‘' => 'é—²',
'é–’' => 'é—²',
'é–“' => 'é—´',
@@ -12142,7 +12141,6 @@ $zh2Hans = array(
'頹' => '颓',
'頻' => '频',
'頽' => '颓',
-'顃' => '𩖖',
'顆' => '颗',
'題' => '题',
'é¡' => 'é¢',
@@ -12169,16 +12167,13 @@ $zh2Hans = array(
'颭' => 'é£',
'颮' => '飑',
'颯' => '飒',
-'颰' => '𩙥',
'颱' => 'å°',
'颳' => '刮',
'颶' => '飓',
-'颷' => '𩙪',
'颸' => '飔',
'颺' => 'é£',
'颻' => '飖',
'颼' => '飕',
-'颾' => '𩙫',
'飀' => '飗',
'飄' => '飘',
'飆' => '飙',
@@ -12229,7 +12224,6 @@ $zh2Hans = array(
'餵' => '喂',
'餶' => '馉',
'餷' => '馇',
-'餸' => '𩠌',
'餺' => '馎',
'餼' => '饩',
'餾' => 'é¦',
@@ -12258,7 +12252,6 @@ $zh2Hans = array(
'馹' => '驲',
'é§' => '驳',
'駃' => 'ð«˜',
-'駎' => '𩧨',
'é§' => 'é©»',
'駑' => '驽',
'駒' => '驹',
@@ -12266,18 +12259,14 @@ $zh2Hans = array(
'駕' => '驾',
'駘' => '骀',
'駙' => '驸',
-'駚' => '𩧫',
'駛' => '驶',
'é§' => '驼',
'駟' => '驷',
'駡' => '骂',
'駢' => '骈',
-'駧' => '𩧲',
-'駩' => '𩧴',
'駭' => '骇',
'駰' => '骃',
'駱' => '骆',
-'駶' => '𩧺',
'駸' => '骎',
'駻' => '𫘣',
'駿' => 'éª',
@@ -12289,16 +12278,11 @@ $zh2Hans = array(
'é¨' => '骒',
'騎' => '骑',
'é¨' => 'éª',
-'騔' => '𩨀',
'騖' => '骛',
'騙' => '骗',
-'騚' => '𩨊',
-'é¨' => '𩨃',
-'騟' => '𩨈',
'騠' => '𫘨',
'騤' => '骙',
'騧' => '䯄',
-'騪' => '𩨄',
'騫' => '骞',
'騭' => '骘',
'騮' => 'éª',
@@ -12314,7 +12298,6 @@ $zh2Hans = array(
'驄' => '骢',
'驅' => '驱',
'驊' => '骅',
-'驋' => '𩧯',
'驌' => '骕',
'é©' => 'éª',
'é©' => '骣',
@@ -12352,7 +12335,6 @@ $zh2Hans = array(
'é­›' => 'é±½',
'魟' => '𫚉',
'é­¢' => 'é±¾',
-'魥' => '𩽹',
'é­¨' => 'é²€',
'é­¯' => 'é²',
'魴' => '鲂',
@@ -12369,13 +12351,10 @@ $zh2Hans = array(
'鮑' => 'é²',
'鮒' => '鲋',
'鮓' => '鲊',
-'鮕' => '𩾀',
'鮚' => '鲒',
'鮜' => '鲘',
'é®' => '鲞',
'鮞' => '鲕',
-'鮟' => '𩽾',
-'鮣' => '䲟',
'鮦' => '鲖',
'鮪' => '鲔',
'鮫' => '鲛',
@@ -12384,11 +12363,9 @@ $zh2Hans = array(
'é®°' => 'ð«š”',
'鮳' => '鲓',
'鮶' => '鲪',
-'鮸' => '𩾃',
'鮺' => 'é²',
'鯀' => '鲧',
'é¯' => 'é² ',
-'鯄' => 'ð©¾',
'鯆' => '𫚙',
'鯇' => '鲩',
'鯉' => '鲤',
@@ -12408,19 +12385,15 @@ $zh2Hans = array(
'鯪' => '鲮',
'鯫' => '鲰',
'鯰' => '鲇',
-'鯱' => '𩾇',
'鯴' => '鲺',
-'鯶' => '𩽼',
'鯷' => '鳀',
'鯽' => '鲫',
'鯿' => '鳊',
'é°' => '鳈',
'é°‚' => 'é²—',
'鰃' => '鳂',
-'é°†' => 'ä² ',
'é°ˆ' => 'é²½',
'鰉' => '鳇',
-'鰌' => '䲡',
'é°' => 'é³…',
'é°' => 'é²¾',
'é°' => '鳄',
@@ -12432,7 +12405,6 @@ $zh2Hans = array(
'é°£' => 'é²¥',
'é°¤' => 'ð«š•',
'é°¥' => 'é³',
-'é°§' => 'ä²¢',
'鰨' => '鳎',
'é°©' => 'é³',
'é°­' => 'é³',
@@ -12449,7 +12421,6 @@ $zh2Hans = array(
'é°¾' => 'é³”',
'鱂' => '鳉',
'é±…' => 'é³™',
-'鱇' => '𩾌',
'鱈' => '鳕',
'鱉' => '鳖',
'鱒' => '鳟',
@@ -12479,7 +12450,6 @@ $zh2Hans = array(
'鳴' => '鸣',
'鳶' => '鸢',
'é³·' => 'ð«››',
-'鳼' => '𪉃',
'é³¾' => 'ä´“',
'鴃' => '𫛞',
'鴆' => '鸩',
@@ -12489,7 +12459,6 @@ $zh2Hans = array(
'鴕' => '鸵',
'é´—' => 'ð«¡',
'鴛' => '鸳',
-'鴜' => '𪉈',
'é´' => '鸲',
'鴞' => '鸮',
'鴟' => '鸱',
@@ -12498,7 +12467,6 @@ $zh2Hans = array(
'鴨' => '鸭',
'鴯' => '鸸',
'鴰' => '鸹',
-'鴲' => '𪉆',
'鴴' => '鸻',
'é´·' => 'ä´•',
'鴻' => '鸿',
@@ -12510,7 +12478,6 @@ $zh2Hans = array(
'鵑' => '鹃',
'鵒' => '鹆',
'鵓' => 'é¹',
-'鵚' => 'ðª‰',
'鵜' => '鹈',
'éµ' => 'é¹…',
'鵠' => '鹄',
@@ -12553,14 +12520,12 @@ $zh2Hans = array(
'é·ˆ' => 'ä´˜',
'é·Š' => 'é¹',
'鷓' => '鹧',
-'鷔' => '𪉑',
'é·–' => 'é¹¥',
'鷗' => '鸥',
'鷙' => '鸷',
'鷚' => '鹨',
'鷥' => '鸶',
'鷦' => '鹪',
-'鷨' => '𪉊',
'é·«' => 'é¹”',
'鷯' => '鹩',
'鷲' => '鹫',
@@ -12588,13 +12553,10 @@ $zh2Hans = array(
'é¹½' => 'ç›',
'麗' => '丽',
'麥' => '麦',
-'麨' => '𪎊',
'麩' => '麸',
'麪' => 'é¢',
'麫' => 'é¢',
'麯' => '曲',
-'麲' => '𪎉',
-'麳' => '𪎌',
'麴' => '曲',
'麵' => 'é¢',
'麼' => '么',
@@ -12646,74 +12608,18 @@ $zh2Hans = array(
'ð¡»•' => 'å²',
'𤪺' => '㻘',
'𤫩' => 'ã»',
-'𦪙' => '䑽',
'𧜵' => '䙊',
'ð§ž' => '䘛',
'𧦧' => 'ð«Ÿ',
'𧩙' => '䜥',
'𧵳' => '䞌',
'𨋢' => '䢂',
-'𨥛' => '𨱀',
'𨦫' => '䦀',
'𨧜' => 'ä¦',
-'𨧱' => '𨱊',
-'𨫒' => 'ð¨±',
-'𨮂' => '𨱕',
'𨯅' => '䥿',
-'ð©Ž¢' => 'ð©¾',
-'ð©ª' => 'ð©½',
-'ð©“£' => 'ð©–•',
-'𩗀' => '𩙦',
-'𩗡' => '𩙧',
-'𩘀' => '𩙩',
-'ð©˜' => 'ð©™­',
-'𩘹' => '𩙨',
-'𩘺' => '𩙬',
-'𩙈' => '𩙰',
-'𩜦' => '𩠆',
-'ð©”' => 'ð© ‹',
-'𩞯' => '䭪',
-'ð©Ÿ' => 'ð© …',
-'𩡺' => '𩧦',
-'𩢡' => '𩧬',
-'𩢴' => '𩧵',
-'𩢸' => '𩧳',
-'𩢾' => '𩧮',
-'ð©£' => '𩧶',
'𩣑' => '䯃',
'𩣵' => '𩧻',
-'𩣺' => '𩧼',
-'𩤊' => '𩧩',
-'𩤙' => '𩨆',
-'𩤲' => '𩨉',
-'𩤸' => '𩨅',
-'𩥄' => '𩨋',
-'𩥇' => 'ð©¨',
-'𩥉' => '𩧱',
-'𩥑' => '𩨌',
-'𩧆' => 'ð©¨',
-'𩵩' => '𩽺',
-'𩵹' => '𩽻',
'𩶘' => '䲞',
-'𩶰' => '𩽿',
-'𩶱' => '𩽽',
-'𩷰' => '𩾄',
-'𩸃' => '𩾅',
-'𩸦' => '𩾆',
-'𩽇' => '𩾎',
-'𩿪' => '𪉄',
-'𪀦' => '𪉅',
-'𪀾' => '𪉋',
-'ðªˆ' => '𪉉',
-'ðª–' => '𪉌',
-'𪂆' => '𪉎',
-'ðªƒ' => 'ðª‰',
-'ðªƒ' => 'ðª‰',
-'𪄆' => '𪉔',
-'𪄕' => '𪉒',
-'𪇳' => '𪉕',
-'𪘀' => 'ðªš',
-'𪘯' => 'ðªš',
'𫚒' => '軿',
'《易乾' => '《易乾',
'ä¸è‘—ç—•è·¡' => 'ä¸ç€ç—•è¿¹',
@@ -13062,6 +12968,7 @@ $zh2Hans = array(
'信著者' => '信著者',
'ä¿¡è‘—è¿°' => 'ä¿¡è‘—è¿°',
'ä¿®éŠ' => '修炼',
+'候覆' => '候å¤',
'候著' => '候ç€',
'候著書' => '候著书',
'候著书' => '候著书',
@@ -13118,6 +13025,7 @@ $zh2Hans = array(
'å·è‘—者' => 'å·è‘—者',
'å·è‘—è¿°' => 'å·è‘—è¿°',
'傢俬' => '傢俬',
+'僧伽å’' => '僧伽å’',
'光著' => 'å…‰ç€',
'光著書' => '光著书',
'光著书' => '光著书',
@@ -13681,6 +13589,7 @@ $zh2Hans = array(
'當著者' => '当著者',
'當著述' => '当著述',
'彰明較著' => '彰明较著',
+'待覆' => 'å¾…å¤',
'å¾…è‘—' => 'å¾…ç€',
'待著书' => '待著书',
'待著書' => '待著书',
@@ -13692,6 +13601,7 @@ $zh2Hans = array(
'待著称' => '待著称',
'待著者' => '待著者',
'å¾…è‘—è¿°' => 'å¾…è‘—è¿°',
+'後姓' => '後姓',
'å¾—è‘—' => 'å¾—ç€',
'得著書' => '得著书',
'得著书' => '得著书',
@@ -13880,6 +13790,7 @@ $zh2Hans = array(
'扛著者' => '扛著者',
'扛著述' => '扛著述',
'執著' => '执著',
+'批覆' => '批å¤',
'找ä¸è‘—' => '找ä¸ç€',
'找得著' => '找得ç€',
'抓著' => '抓ç€',
@@ -14527,6 +14438,7 @@ $zh2Hans = array(
'猜著稱' => '猜著称',
'猜著者' => '猜著者',
'猜著述' => '猜著述',
+'王é“ä¹¾' => '王é“ä¹¾',
'玩著' => '玩ç€',
'甜著' => '甜ç€',
'甜著書' => '甜著书',
@@ -15089,6 +15001,7 @@ $zh2Hans = array(
'見著述' => 'è§è‘—è¿°',
'視微知著' => '视微知著',
'言幾æžç†' => '言幾æžç†',
+'警戒著' => '警戒ç€',
'記著' => 'è®°ç€',
'記著書' => '记著书',
'記著作' => '记著作',
@@ -15638,12 +15551,11 @@ $zh2TW = array(
'阿塞拜疆' => '亞塞拜然',
'人工智能' => '人工智慧',
'接å£' => '介é¢',
-'ä»»æ„çƒå“¡' => 'ä»»æ„çƒå“¡',
-'ä»»æ„çƒå‘˜' => 'ä»»æ„çƒå“¡',
'æœåŠ¡å™¨' => '伺æœå™¨',
'字節' => 'ä½å…ƒçµ„',
'字节' => 'ä½å…ƒçµ„',
'作å“è£' => '作å“裡',
+'ä¿¡é“' => 'ä¿¡é“',
'优先级' => '優先順åº',
'元兇' => '元凶',
'元凶' => '元凶',
@@ -15670,7 +15582,6 @@ $zh2TW = array(
'兇殺' => '凶殺',
'凶æ€' => '凶殺',
'凶殺' => '凶殺',
-'分布å¼' => '分散å¼',
'打å°' => '列å°',
'列支敦士登' => '列支敦斯登',
'剪彩' => '剪綵',
@@ -15829,6 +15740,7 @@ $zh2TW = array(
'波斯尼亚和黑塞哥维那' => '波士尼亞赫塞哥維ç´',
'åšèŒ¨ç“¦çº³' => '波札那',
'åšèŒ¨ç“¦ç´' => '波札那',
+'æµç¨‹æŽ§åˆ¶' => 'æµç¨‹æŽ§åˆ¶',
'侯赛因' => 'æµ·çŠ',
'侯賽因' => 'æµ·çŠ',
'深淵è£' => '深淵裡',
@@ -15904,7 +15816,6 @@ $zh2TW = array(
'è‚šè£' => '肚裡',
'肯尼亚' => '肯亞',
'肯雅' => '肯亞',
-'ä»»æ„çƒ' => '自由çƒ',
'航天大学' => '航天大學',
'苦è£' => '苦裡',
'毛里塔尼亚' => '茅利塔尼亞',
@@ -15913,8 +15824,8 @@ $zh2TW = array(
'万历' => 'è¬æ›†',
'瓦努阿图' => 'è¬é‚£æœ',
'瓦努阿圖' => 'è¬é‚£æœ',
-'也門' => '葉門',
'也门' => '葉門',
+'也門' => '葉門',
'ç€' => 'è‘—',
'科摩羅' => '葛摩',
'科摩罗' => '葛摩',
@@ -15988,11 +15899,11 @@ $zh2TW = array(
'溫ç´åœ–è¬' => 'é‚£æœ',
'醫院è£' => '醫院裡',
'酰' => '醯',
-'巨商' => '鉅賈',
'钩' => '鉤',
'鈎' => '鉤',
'钩心斗角' => '鉤心鬥角',
'鈎心鬥角' => '鉤心鬥角',
+'锎' => '鉲',
'写ä¿æŠ¤' => '防寫',
'阿拉伯è”åˆé…‹é•¿å›½' => '阿拉伯è¯åˆå¤§å…¬åœ‹',
'阿拉伯è¯åˆé…‹é•·åœ‹' => '阿拉伯è¯åˆå¤§å…¬åœ‹',
@@ -16817,7 +16728,6 @@ $zh2HK = array(
'拼著述' => '拼著述',
'拼著錄' => '拼著錄',
'æ‹¿è‘—' => 'æ‹¿ç€',
-'æ‹¿ç ´å´™' => 'æ‹¿ç ´ä¾–',
'拿著作' => '拿著作',
'æ‹¿è‘—å' => 'æ‹¿è‘—å',
'拿著稱' => '拿著稱',
@@ -17751,6 +17661,7 @@ $zh2HK = array(
'語著述' => '語著述',
'語著錄' => '語著錄',
'數據機' => '調制解調器',
+'警戒著' => '警戒ç€',
'變著' => '變ç€',
'變著作' => '變著作',
'變著å' => '變著å',
@@ -18269,7 +18180,6 @@ $zh2CN = array(
'甚麽' => '什么',
'甚麼' => '什么',
'乙太網' => '以太网',
-'自由çƒ' => 'ä»»æ„çƒ',
'優先順åº' => '优先级',
'感測' => '传感',
'伯利茲' => '伯利兹',
@@ -18291,8 +18201,6 @@ $zh2CN = array(
'全形' => '全角',
'八進ä½åˆ¶' => 'å…«è¿›ä½åˆ¶',
'八進ä½' => '八进制',
-'公車' => '公共汽车',
-'公車上書' => '公车上书',
'六進ä½åˆ¶' => 'å…­è¿›ä½åˆ¶',
'六進ä½' => '六进制',
'記憶體' => '内存',
@@ -18304,7 +18212,6 @@ $zh2CN = array(
'幾內亞比索' => '几内亚比ç»',
'梵谷' => '凡高',
'計程車' => '出租车',
-'分散å¼' => '分布å¼',
'解æžåº¦' => '分辨率',
'列支敦斯登' => '列支敦士登',
'賴比瑞亞' => '利比里亚',
@@ -18366,6 +18273,7 @@ $zh2CN = array(
'字型大å°' => 'å­—å·',
'字型檔' => '字库',
'欄ä½' => '字段',
+'å­—æ¯' => 'å­—æ¯',
'字元' => '字符',
'字節' => '字节',
'ä½å…ƒçµ„' => '字节',
@@ -18381,7 +18289,6 @@ $zh2CN = array(
'尼日尔' => '尼日尔',
'章節附註' => '尾注',
'å€åŸŸç¶²' => '局域网',
-'鉅賈' => '巨商',
'å·´è²å¤š' => '巴巴多斯',
'巴布亞ç´å¹¾å…§äºž' => '巴布亚新几内亚',
'布希' => '布什',
@@ -18442,6 +18349,7 @@ $zh2CN = array(
'波士尼亞赫塞哥維ç´' => '波斯尼亚和黑塞哥维那',
'辛巴å¨' => '津巴布韦',
'å®éƒ½æ‹‰æ–¯' => '洪都拉斯',
+'滑鼠蛇' => '滑鼠蛇',
'滿16進ä½' => '满16è¿›ä½',
'滿二進ä½' => '满二进ä½',
'滿八進ä½' => '满八进ä½',
@@ -18487,8 +18395,6 @@ $zh2CN = array(
'寮國' => 'è€æŒ',
'肯雅' => '肯尼亚',
'肯亞' => '肯尼亚',
-'自由çƒå‘˜' => '自由çƒå‘˜',
-'自由çƒå“¡' => '自由çƒå‘˜',
'單車' => '自行车',
'太空梭' => '航天飞机',
'穿梭機' => '航天飞机',
diff --git a/includes/ZipDirectoryReader.php b/includes/ZipDirectoryReader.php
new file mode 100644
index 00000000..d21cf3b0
--- /dev/null
+++ b/includes/ZipDirectoryReader.php
@@ -0,0 +1,684 @@
+<?php
+
+/**
+ * A class for reading ZIP file directories, for the purposes of upload
+ * verification.
+ *
+ * Only a functional interface is provided: ZipFileReader::read(). No access is
+ * given to object instances.
+ *
+ */
+class ZipDirectoryReader {
+ /**
+ * Read a ZIP file and call a function for each file discovered in it.
+ *
+ * Because this class is aimed at verification, an error is raised on
+ * suspicious or ambiguous input, instead of emulating some standard
+ * behaviour.
+ *
+ * @param $fileName string The archive file name
+ * @param $callback Array The callback function. It will be called for each file
+ * with a single associative array each time, with members:
+ *
+ * - name: The file name. Directories conventionally have a trailing
+ * slash.
+ *
+ * - mtime: The file modification time, in MediaWiki 14-char format
+ *
+ * - size: The uncompressed file size
+ *
+ * @param $options Array An associative array of read options, with the option
+ * name in the key. This may currently contain:
+ *
+ * - zip64: If this is set to true, then we will emulate a
+ * library with ZIP64 support, like OpenJDK 7. If it is set to
+ * false, then we will emulate a library with no knowledge of
+ * ZIP64.
+ *
+ * NOTE: The ZIP64 code is untested and probably doesn't work. It
+ * turned out to be easier to just reject ZIP64 archive uploads,
+ * since they are likely to be very rare. Confirming safety of a
+ * ZIP64 file is fairly complex. What do you do with a file that is
+ * ambiguous and broken when read with a non-ZIP64 reader, but valid
+ * when read with a ZIP64 reader? This situation is normal for a
+ * valid ZIP64 file, and working out what non-ZIP64 readers will make
+ * of such a file is not trivial.
+ *
+ * @return Status object. The following fatal errors are defined:
+ *
+ * - zip-file-open-error: The file could not be opened.
+ *
+ * - zip-wrong-format: The file does not appear to be a ZIP file.
+ *
+ * - zip-bad: There was something wrong or ambiguous about the file
+ * data.
+ *
+ * - zip-unsupported: The ZIP file uses features which
+ * ZipDirectoryReader does not support.
+ *
+ * The default messages for those fatal errors are written in a way that
+ * makes sense for upload verification.
+ *
+ * If a fatal error is returned, more information about the error will be
+ * available in the debug log.
+ *
+ * Note that the callback function may be called any number of times before
+ * a fatal error is returned. If this occurs, the data sent to the callback
+ * function should be discarded.
+ */
+ public static function read( $fileName, $callback, $options = array() ) {
+ $zdr = new self( $fileName, $callback, $options );
+ return $zdr->execute();
+ }
+
+ /** The file name */
+ var $fileName;
+
+ /** The opened file resource */
+ var $file;
+
+ /** The cached length of the file, or null if it has not been loaded yet. */
+ var $fileLength;
+
+ /** A segmented cache of the file contents */
+ var $buffer;
+
+ /** The file data callback */
+ var $callback;
+
+ /** The ZIP64 mode */
+ var $zip64 = false;
+
+ /** Stored headers */
+ var $eocdr, $eocdr64, $eocdr64Locator;
+
+ /** The "extra field" ID for ZIP64 central directory entries */
+ const ZIP64_EXTRA_HEADER = 0x0001;
+
+ /** The segment size for the file contents cache */
+ const SEGSIZE = 16384;
+
+ /** The index of the "general field" bit for UTF-8 file names */
+ const GENERAL_UTF8 = 11;
+
+ /** The index of the "general field" bit for central directory encryption */
+ const GENERAL_CD_ENCRYPTED = 13;
+
+
+ /**
+ * Private constructor
+ */
+ protected function __construct( $fileName, $callback, $options ) {
+ $this->fileName = $fileName;
+ $this->callback = $callback;
+
+ if ( isset( $options['zip64'] ) ) {
+ $this->zip64 = $options['zip64'];
+ }
+ }
+
+ /**
+ * Read the directory according to settings in $this.
+ *
+ * @return Status
+ */
+ function execute() {
+ $this->file = fopen( $this->fileName, 'r' );
+ $this->data = array();
+ if ( !$this->file ) {
+ return Status::newFatal( 'zip-file-open-error' );
+ }
+
+ $status = Status::newGood();
+ try {
+ $this->readEndOfCentralDirectoryRecord();
+ if ( $this->zip64 ) {
+ list( $offset, $size ) = $this->findZip64CentralDirectory();
+ $this->readCentralDirectory( $offset, $size );
+ } else {
+ if ( $this->eocdr['CD size'] == 0xffffffff
+ || $this->eocdr['CD offset'] == 0xffffffff
+ || $this->eocdr['CD entries total'] == 0xffff )
+ {
+ $this->error( 'zip-unsupported', 'Central directory header indicates ZIP64, ' .
+ 'but we are in legacy mode. Rejecting this upload is necessary to avoid '.
+ 'opening vulnerabilities on clients using OpenJDK 7 or later.' );
+ }
+
+ list( $offset, $size ) = $this->findOldCentralDirectory();
+ $this->readCentralDirectory( $offset, $size );
+ }
+ } catch ( ZipDirectoryReaderError $e ) {
+ $status->fatal( $e->getErrorCode() );
+ }
+
+ fclose( $this->file );
+ return $status;
+ }
+
+ /**
+ * Throw an error, and log a debug message
+ */
+ function error( $code, $debugMessage ) {
+ wfDebug( __CLASS__.": Fatal error: $debugMessage\n" );
+ throw new ZipDirectoryReaderError( $code );
+ }
+
+ /**
+ * Read the header which is at the end of the central directory,
+ * unimaginatively called the "end of central directory record" by the ZIP
+ * spec.
+ */
+ function readEndOfCentralDirectoryRecord() {
+ $info = array(
+ 'signature' => 4,
+ 'disk' => 2,
+ 'CD start disk' => 2,
+ 'CD entries this disk' => 2,
+ 'CD entries total' => 2,
+ 'CD size' => 4,
+ 'CD offset' => 4,
+ 'file comment length' => 2,
+ );
+ $structSize = $this->getStructSize( $info );
+ $startPos = $this->getFileLength() - 65536 - $structSize;
+ if ( $startPos < 0 ) {
+ $startPos = 0;
+ }
+
+ $block = $this->getBlock( $startPos );
+ $sigPos = strrpos( $block, "PK\x05\x06" );
+ if ( $sigPos === false ) {
+ $this->error( 'zip-wrong-format',
+ "zip file lacks EOCDR signature. It probably isn't a zip file." );
+ }
+
+ $this->eocdr = $this->unpack( substr( $block, $sigPos ), $info );
+ $this->eocdr['EOCDR size'] = $structSize + $this->eocdr['file comment length'];
+
+ if ( $structSize + $this->eocdr['file comment length'] != strlen( $block ) - $sigPos ) {
+ $this->error( 'zip-bad', 'trailing bytes after the end of the file comment' );
+ }
+ if ( $this->eocdr['disk'] !== 0
+ || $this->eocdr['CD start disk'] !== 0 )
+ {
+ $this->error( 'zip-unsupported', 'more than one disk (in EOCDR)' );
+ }
+ $this->eocdr += $this->unpack(
+ $block,
+ array( 'file comment' => array( 'string', $this->eocdr['file comment length'] ) ),
+ $sigPos + $structSize );
+ $this->eocdr['position'] = $startPos + $sigPos;
+ }
+
+ /**
+ * Read the header called the "ZIP64 end of central directory locator". An
+ * error will be raised if it does not exist.
+ */
+ function readZip64EndOfCentralDirectoryLocator() {
+ $info = array(
+ 'signature' => array( 'string', 4 ),
+ 'eocdr64 start disk' => 4,
+ 'eocdr64 offset' => 8,
+ 'number of disks' => 4,
+ );
+ $structSize = $this->getStructSize( $info );
+
+ $block = $this->getBlock( $this->getFileLength() - $this->eocdr['EOCDR size']
+ - $structSize, $structSize );
+ $this->eocdr64Locator = $data = $this->unpack( $block, $info );
+
+ if ( $data['signature'] !== "PK\x06\x07" ) {
+ // Note: Java will allow this and continue to read the
+ // EOCDR64, so we have to reject the upload, we can't
+ // just use the EOCDR header instead.
+ $this->error( 'zip-bad', 'wrong signature on Zip64 end of central directory locator' );
+ }
+ }
+
+ /**
+ * Read the header called the "ZIP64 end of central directory record". It
+ * may replace the regular "end of central directory record" in ZIP64 files.
+ */
+ function readZip64EndOfCentralDirectoryRecord() {
+ if ( $this->eocdr64Locator['eocdr64 start disk'] != 0
+ || $this->eocdr64Locator['number of disks'] != 0 )
+ {
+ $this->error( 'zip-unsupported', 'more than one disk (in EOCDR64 locator)' );
+ }
+
+ $info = array(
+ 'signature' => array( 'string', 4 ),
+ 'EOCDR64 size' => 8,
+ 'version made by' => 2,
+ 'version needed' => 2,
+ 'disk' => 4,
+ 'CD start disk' => 4,
+ 'CD entries this disk' => 8,
+ 'CD entries total' => 8,
+ 'CD size' => 8,
+ 'CD offset' => 8
+ );
+ $structSize = $this->getStructSize( $info );
+ $block = $this->getBlock( $this->eocdr64Locator['eocdr64 offset'], $structSize );
+ $this->eocdr64 = $data = $this->unpack( $block, $info );
+ if ( $data['signature'] !== "PK\x06\x06" ) {
+ $this->error( 'zip-bad', 'wrong signature on Zip64 end of central directory record' );
+ }
+ if ( $data['disk'] !== 0
+ || $data['CD start disk'] !== 0 )
+ {
+ $this->error( 'zip-unsupported', 'more than one disk (in EOCDR64)' );
+ }
+ }
+
+ /**
+ * Find the location of the central directory, as would be seen by a
+ * non-ZIP64 reader.
+ *
+ * @return List containing offset, size and end position.
+ */
+ function findOldCentralDirectory() {
+ $size = $this->eocdr['CD size'];
+ $offset = $this->eocdr['CD offset'];
+ $endPos = $this->eocdr['position'];
+
+ // Some readers use the EOCDR position instead of the offset field
+ // to find the directory, so to be safe, we check if they both agree.
+ if ( $offset + $size != $endPos ) {
+ $this->error( 'zip-bad', 'the central directory does not immediately precede the end ' .
+ 'of central directory record' );
+ }
+ return array( $offset, $size );
+ }
+
+ /**
+ * Find the location of the central directory, as would be seen by a
+ * ZIP64-compliant reader.
+ *
+ * @return List containing offset, size and end position.
+ */
+ function findZip64CentralDirectory() {
+ // The spec is ambiguous about the exact rules of precedence between the
+ // ZIP64 headers and the original headers. Here we follow zip_util.c
+ // from OpenJDK 7.
+ $size = $this->eocdr['CD size'];
+ $offset = $this->eocdr['CD offset'];
+ $numEntries = $this->eocdr['CD entries total'];
+ $endPos = $this->eocdr['position'];
+ if ( $size == 0xffffffff
+ || $offset == 0xffffffff
+ || $numEntries == 0xffff )
+ {
+ $this->readZip64EndOfCentralDirectoryLocator();
+
+ if ( isset( $this->eocdr64Locator['eocdr64 offset'] ) ) {
+ $this->readZip64EndOfCentralDirectoryRecord();
+ if ( isset( $this->eocdr64['CD offset'] ) ) {
+ $size = $this->eocdr64['CD size'];
+ $offset = $this->eocdr64['CD offset'];
+ $endPos = $this->eocdr64Locator['eocdr64 offset'];
+ }
+ }
+ }
+ // Some readers use the EOCDR position instead of the offset field
+ // to find the directory, so to be safe, we check if they both agree.
+ if ( $offset + $size != $endPos ) {
+ $this->error( 'zip-bad', 'the central directory does not immediately precede the end ' .
+ 'of central directory record' );
+ }
+ return array( $offset, $size );
+ }
+
+ /**
+ * Read the central directory at the given location
+ */
+ function readCentralDirectory( $offset, $size ) {
+ $block = $this->getBlock( $offset, $size );
+
+ $fixedInfo = array(
+ 'signature' => array( 'string', 4 ),
+ 'version made by' => 2,
+ 'version needed' => 2,
+ 'general bits' => 2,
+ 'compression method' => 2,
+ 'mod time' => 2,
+ 'mod date' => 2,
+ 'crc-32' => 4,
+ 'compressed size' => 4,
+ 'uncompressed size' => 4,
+ 'name length' => 2,
+ 'extra field length' => 2,
+ 'comment length' => 2,
+ 'disk number start' => 2,
+ 'internal attrs' => 2,
+ 'external attrs' => 4,
+ 'local header offset' => 4,
+ );
+ $fixedSize = $this->getStructSize( $fixedInfo );
+
+ $pos = 0;
+ while ( $pos < $size ) {
+ $data = $this->unpack( $block, $fixedInfo, $pos );
+ $pos += $fixedSize;
+
+ if ( $data['signature'] !== "PK\x01\x02" ) {
+ $this->error( 'zip-bad', 'Invalid signature found in directory entry' );
+ }
+
+ $variableInfo = array(
+ 'name' => array( 'string', $data['name length'] ),
+ 'extra field' => array( 'string', $data['extra field length'] ),
+ 'comment' => array( 'string', $data['comment length'] ),
+ );
+ $data += $this->unpack( $block, $variableInfo, $pos );
+ $pos += $this->getStructSize( $variableInfo );
+
+ if ( $this->zip64 && (
+ $data['compressed size'] == 0xffffffff
+ || $data['uncompressed size'] == 0xffffffff
+ || $data['local header offset'] == 0xffffffff ) )
+ {
+ $zip64Data = $this->unpackZip64Extra( $data['extra field'] );
+ if ( $zip64Data ) {
+ $data = $zip64Data + $data;
+ }
+ }
+
+ if ( $this->testBit( $data['general bits'], self::GENERAL_CD_ENCRYPTED ) ) {
+ $this->error( 'zip-unsupported', 'central directory encryption is not supported' );
+ }
+
+ // Convert the timestamp into MediaWiki format
+ // For the format, please see the MS-DOS 2.0 Programmer's Reference,
+ // pages 3-5 and 3-6.
+ $time = $data['mod time'];
+ $date = $data['mod date'];
+
+ $year = 1980 + ( $date >> 9 );
+ $month = ( $date >> 5 ) & 15;
+ $day = $date & 31;
+ $hour = ( $time >> 11 ) & 31;
+ $minute = ( $time >> 5 ) & 63;
+ $second = ( $time & 31 ) * 2;
+ $timestamp = sprintf( "%04d%02d%02d%02d%02d%02d",
+ $year, $month, $day, $hour, $minute, $second );
+
+ // Convert the character set in the file name
+ if ( !function_exists( 'iconv' )
+ || $this->testBit( $data['general bits'], self::GENERAL_UTF8 ) )
+ {
+ $name = $data['name'];
+ } else {
+ $name = iconv( 'CP437', 'UTF-8', $data['name'] );
+ }
+
+ // Compile a data array for the user, with a sensible format
+ $userData = array(
+ 'name' => $name,
+ 'mtime' => $timestamp,
+ 'size' => $data['uncompressed size'],
+ );
+ call_user_func( $this->callback, $userData );
+ }
+ }
+
+ /**
+ * Interpret ZIP64 "extra field" data and return an associative array.
+ */
+ function unpackZip64Extra( $extraField ) {
+ $extraHeaderInfo = array(
+ 'id' => 2,
+ 'size' => 2,
+ );
+ $extraHeaderSize = $this->getStructSize( $extraHeaderInfo );
+
+ $zip64ExtraInfo = array(
+ 'uncompressed size' => 8,
+ 'compressed size' => 8,
+ 'local header offset' => 8,
+ 'disk number start' => 4,
+ );
+
+ $extraPos = 0;
+ while ( $extraPos < strlen( $extraField ) ) {
+ $extra = $this->unpack( $extraField, $extraHeaderInfo, $extraPos );
+ $extraPos += $extraHeaderSize;
+ $extra += $this->unpack( $extraField,
+ array( 'data' => array( 'string', $extra['size'] ) ),
+ $extraPos );
+ $extraPos += $extra['size'];
+
+ if ( $extra['id'] == self::ZIP64_EXTRA_HEADER ) {
+ return $this->unpack( $extra['data'], $zip64ExtraInfo );
+ }
+ }
+
+ return false;
+ }
+
+ /**
+ * Get the length of the file.
+ */
+ function getFileLength() {
+ if ( $this->fileLength === null ) {
+ $stat = fstat( $this->file );
+ $this->fileLength = $stat['size'];
+ }
+ return $this->fileLength;
+ }
+
+ /**
+ * Get the file contents from a given offset. If there are not enough bytes
+ * in the file to satisfy the request, an exception will be thrown.
+ *
+ * @param $start The byte offset of the start of the block.
+ * @param $length The number of bytes to return. If omitted, the remainder
+ * of the file will be returned.
+ *
+ * @return string
+ */
+ function getBlock( $start, $length = null ) {
+ $fileLength = $this->getFileLength();
+ if ( $start >= $fileLength ) {
+ $this->error( 'zip-bad', "getBlock() requested position $start, " .
+ "file length is $fileLength" );
+ }
+ if ( $length === null ) {
+ $length = $fileLength - $start;
+ }
+ $end = $start + $length;
+ if ( $end > $fileLength ) {
+ $this->error( 'zip-bad', "getBlock() requested end position $end, " .
+ "file length is $fileLength" );
+ }
+ $startSeg = floor( $start / self::SEGSIZE );
+ $endSeg = ceil( $end / self::SEGSIZE );
+
+ $block = '';
+ for ( $segIndex = $startSeg; $segIndex <= $endSeg; $segIndex++ ) {
+ $block .= $this->getSegment( $segIndex );
+ }
+
+ $block = substr( $block,
+ $start - $startSeg * self::SEGSIZE,
+ $length );
+
+ if ( strlen( $block ) < $length ) {
+ $this->error( 'zip-bad', 'getBlock() returned an unexpectedly small amount of data' );
+ }
+
+ return $block;
+ }
+
+ /**
+ * Get a section of the file starting at position $segIndex * self::SEGSIZE,
+ * of length self::SEGSIZE. The result is cached. This is a helper function
+ * for getBlock().
+ *
+ * If there are not enough bytes in the file to satsify the request, the
+ * return value will be truncated. If a request is made for a segment beyond
+ * the end of the file, an empty string will be returned.
+ */
+ function getSegment( $segIndex ) {
+ if ( !isset( $this->buffer[$segIndex] ) ) {
+ $bytePos = $segIndex * self::SEGSIZE;
+ if ( $bytePos >= $this->getFileLength() ) {
+ $this->buffer[$segIndex] = '';
+ return '';
+ }
+ if ( fseek( $this->file, $bytePos ) ) {
+ $this->error( 'zip-bad', "seek to $bytePos failed" );
+ }
+ $seg = fread( $this->file, self::SEGSIZE );
+ if ( $seg === false ) {
+ $this->error( 'zip-bad', "read from $bytePos failed" );
+ }
+ $this->buffer[$segIndex] = $seg;
+ }
+ return $this->buffer[$segIndex];
+ }
+
+ /**
+ * Get the size of a structure in bytes. See unpack() for the format of $struct.
+ */
+ function getStructSize( $struct ) {
+ $size = 0;
+ foreach ( $struct as $type ) {
+ if ( is_array( $type ) ) {
+ list( $typeName, $fieldSize ) = $type;
+ $size += $fieldSize;
+ } else {
+ $size += $type;
+ }
+ }
+ return $size;
+ }
+
+ /**
+ * Unpack a binary structure. This is like the built-in unpack() function
+ * except nicer.
+ *
+ * @param $string The binary data input
+ *
+ * @param $struct An associative array giving structure members and their
+ * types. In the key is the field name. The value may be either an
+ * integer, in which case the field is a little-endian unsigned integer
+ * encoded in the given number of bytes, or an array, in which case the
+ * first element of the array is the type name, and the subsequent
+ * elements are type-dependent parameters. Only one such type is defined:
+ * - "string": The second array element gives the length of string.
+ * Not null terminated.
+ *
+ * @param $offset The offset into the string at which to start unpacking.
+ *
+ * @return Unpacked associative array. Note that large integers in the input
+ * may be represented as floating point numbers in the return value, so
+ * the use of weak comparison is advised.
+ */
+ function unpack( $string, $struct, $offset = 0 ) {
+ $size = $this->getStructSize( $struct );
+ if ( $offset + $size > strlen( $string ) ) {
+ $this->error( 'zip-bad', 'unpack() would run past the end of the supplied string' );
+ }
+
+ $data = array();
+ $pos = $offset;
+ foreach ( $struct as $key => $type ) {
+ if ( is_array( $type ) ) {
+ list( $typeName, $fieldSize ) = $type;
+ switch ( $typeName ) {
+ case 'string':
+ $data[$key] = substr( $string, $pos, $fieldSize );
+ $pos += $fieldSize;
+ break;
+ default:
+ throw new MWException( __METHOD__.": invalid type \"$typeName\"" );
+ }
+ } else {
+ // Unsigned little-endian integer
+ $length = intval( $type );
+ $bytes = substr( $string, $pos, $length );
+
+ // Calculate the value. Use an algorithm which automatically
+ // upgrades the value to floating point if necessary.
+ $value = 0;
+ for ( $i = $length - 1; $i >= 0; $i-- ) {
+ $value *= 256;
+ $value += ord( $string[$pos + $i] );
+ }
+
+ // Throw an exception if there was loss of precision
+ if ( $value > pow( 2, 52 ) ) {
+ $this->error( 'zip-unsupported', 'number too large to be stored in a double. ' .
+ 'This could happen if we tried to unpack a 64-bit structure ' .
+ 'at an invalid location.' );
+ }
+ $data[$key] = $value;
+ $pos += $length;
+ }
+ }
+
+ return $data;
+ }
+
+ /**
+ * Returns a bit from a given position in an integer value, converted to
+ * boolean.
+ *
+ * @param $value integer
+ * @param $bitIndex The index of the bit, where 0 is the LSB.
+ */
+ function testBit( $value, $bitIndex ) {
+ return (bool)( ( $value >> $bitIndex ) & 1 );
+ }
+
+ /**
+ * Debugging helper function which dumps a string in hexdump -C format.
+ */
+ function hexDump( $s ) {
+ $n = strlen( $s );
+ for ( $i = 0; $i < $n; $i += 16 ) {
+ printf( "%08X ", $i );
+ for ( $j = 0; $j < 16; $j++ ) {
+ print " ";
+ if ( $j == 8 ) {
+ print " ";
+ }
+ if ( $i + $j >= $n ) {
+ print " ";
+ } else {
+ printf( "%02X", ord( $s[$i + $j] ) );
+ }
+ }
+
+ print " |";
+ for ( $j = 0; $j < 16; $j++ ) {
+ if ( $i + $j >= $n ) {
+ print " ";
+ } elseif ( ctype_print( $s[$i + $j] ) ) {
+ print $s[$i + $j];
+ } else {
+ print '.';
+ }
+ }
+ print "|\n";
+ }
+ }
+}
+
+/**
+ * Internal exception class. Will be caught by private code.
+ */
+class ZipDirectoryReaderError extends Exception {
+ var $code;
+
+ function __construct( $code ) {
+ $this->code = $code;
+ parent::__construct( "ZipDirectoryReader error: $code" );
+ }
+
+ function getErrorCode() {
+ return $this->code;
+ }
+}
diff --git a/includes/Credits.php b/includes/actions/CreditsAction.php
index e4c8be54..1040085b 100644
--- a/includes/Credits.php
+++ b/includes/actions/CreditsAction.php
@@ -19,51 +19,58 @@
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
*
* @file
+ * @ingroup Actions
* @author <evan@wikitravel.org>
*/
-class Credits {
+class CreditsAction extends FormlessAction {
+
+ public function getName() {
+ return 'credits';
+ }
+
+ public function getRestriction() {
+ return null;
+ }
+
+ protected function getDescription() {
+ return wfMsg( 'creditspage' );
+ }
+
/**
* This is largely cadged from PageHistory::history
- * @param $article Article object
+ *
+ * @return String HTML
*/
- public static function showPage( Article $article ) {
- global $wgOut;
-
+ public function onView() {
wfProfileIn( __METHOD__ );
- $wgOut->setPageTitle( $article->mTitle->getPrefixedText() );
- $wgOut->setSubtitle( wfMsg( 'creditspage' ) );
- $wgOut->setArticleFlag( false );
- $wgOut->setArticleRelated( true );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
-
- if ( $article->mTitle->getArticleID() == 0 ) {
+ if ( $this->page->getID() == 0 ) {
$s = wfMsg( 'nocredits' );
} else {
- $s = self::getCredits( $article, -1 );
+ $s = $this->getCredits( -1 );
}
- $wgOut->addHTML( $s );
-
wfProfileOut( __METHOD__ );
+
+ return Html::rawElement( 'div', array( 'id' => 'mw-credits' ), $s );
}
/**
- * Get a list of contributors of $article
- * @param $article Article object
+ * Get a list of contributors
+ *
* @param $cnt Int: maximum list of contributors to show
* @param $showIfMax Bool: whether to contributors if there more than $cnt
* @return String: html
*/
- public static function getCredits( Article $article, $cnt, $showIfMax = true ) {
+ public function getCredits( $cnt, $showIfMax = true ) {
wfProfileIn( __METHOD__ );
$s = '';
if ( isset( $cnt ) && $cnt != 0 ) {
- $s = self::getAuthor( $article );
+ $s = self::getAuthor( $this->page );
if ( $cnt > 1 || $cnt < 0 ) {
- $s .= ' ' . self::getContributors( $article, $cnt - 1, $showIfMax );
+ $s .= ' ' . $this->getContributors( $cnt - 1, $showIfMax );
}
}
@@ -74,8 +81,9 @@ class Credits {
/**
* Get the last author with the last modification time
* @param $article Article object
+ * @return String HTML
*/
- protected static function getAuthor( Article $article ) {
+ protected static function getAuthor( Page $article ) {
global $wgLang;
$user = User::newFromId( $article->getUser() );
@@ -88,28 +96,27 @@ class Credits {
$d = '';
$t = '';
}
- return wfMsgExt( 'lastmodifiedatby', 'parsemag', $d, $t, self::userLink( $user ), $user->getName() );
+ return wfMessage( 'lastmodifiedatby', $d, $t )->rawParams( self::userLink( $user ) )->params( $user->getName() )->escaped();
}
/**
* Get a list of contributors of $article
- * @param $article Article object
* @param $cnt Int: maximum list of contributors to show
* @param $showIfMax Bool: whether to contributors if there more than $cnt
* @return String: html
*/
- protected static function getContributors( Article $article, $cnt, $showIfMax ) {
+ protected function getContributors( $cnt, $showIfMax ) {
global $wgLang, $wgHiddenPrefs;
- $contributors = $article->getContributors();
+ $contributors = $this->page->getContributors();
$others_link = false;
# Hmm... too many to fit!
if ( $cnt > 0 && $contributors->count() > $cnt ) {
- $others_link = self::othersLink( $article );
+ $others_link = $this->othersLink();
if ( !$showIfMax )
- return wfMsgExt( 'othercontribs', 'parsemag', $others_link, $contributors->count() );
+ return wfMessage( 'othercontribs' )->rawParams( $others_link )->params( $contributors->count() )->escaped();
}
$real_names = array();
@@ -118,7 +125,7 @@ class Credits {
# Sift for real versus user names
foreach ( $contributors as $user ) {
- $cnt--;
+ $cnt--;
if ( $user->isLoggedIn() ) {
$link = self::link( $user );
if ( !in_array( 'realname', $wgHiddenPrefs ) && $user->getRealName() ) {
@@ -143,21 +150,15 @@ class Credits {
# "ThisSite user(s) A, B and C"
if ( count( $user_names ) ) {
- $user = wfMsgExt(
- 'siteusers',
- 'parsemag',
- $wgLang->listToText( $user_names ), count( $user_names )
- );
+ $user = wfMessage( 'siteusers' )->rawParams( $wgLang->listToText( $user_names ) )->params(
+ count( $user_names ) )->escaped();
} else {
$user = false;
}
if ( count( $anon_ips ) ) {
- $anon = wfMsgExt(
- 'anonusers',
- 'parsemag',
- $wgLang->listToText( $anon_ips ), count( $anon_ips )
- );
+ $anon = wfMessage( 'anonusers' )->rawParams( $wgLang->listToText( $anon_ips ) )->params(
+ count( $anon_ips ) )->escaped();
} else {
$anon = false;
}
@@ -165,17 +166,16 @@ class Credits {
# This is the big list, all mooshed together. We sift for blank strings
$fulllist = array();
foreach ( array( $real, $user, $anon, $others_link ) as $s ) {
- if ( $s ) {
+ if ( $s !== false ) {
array_push( $fulllist, $s );
}
}
- # Make the list into text...
- $creds = $wgLang->listToText( $fulllist );
-
+ $count = count( $fulllist );
# "Based on work by ..."
- return strlen( $creds )
- ? wfMsgExt( 'othercontribs', 'parsemag', $creds, count( $fulllist ) )
+ return $count
+ ? wfMessage( 'othercontribs' )->rawParams(
+ $wgLang->listToText( $fulllist ) )->params( $count )->escaped()
: '';
}
@@ -185,19 +185,18 @@ class Credits {
* @return String: html
*/
protected static function link( User $user ) {
- global $wgUser, $wgHiddenPrefs;
+ global $wgHiddenPrefs;
if ( !in_array( 'realname', $wgHiddenPrefs ) && !$user->isAnon() ) {
$real = $user->getRealName();
} else {
$real = false;
}
- $skin = $wgUser->getSkin();
- $page = $user->isAnon() ?
- SpecialPage::getTitleFor( 'Contributions', $user->getName() ) :
- $user->getUserPage();
+ $page = $user->isAnon()
+ ? SpecialPage::getTitleFor( 'Contributions', $user->getName() )
+ : $user->getUserPage();
- return $skin->link( $page, htmlspecialchars( $real ? $real : $user->getName() ) );
+ return Linker::link( $page, htmlspecialchars( $real ? $real : $user->getName() ) );
}
/**
@@ -214,7 +213,7 @@ class Credits {
if ( !in_array( 'realname', $wgHiddenPrefs ) && $user->getRealName() ) {
return $link;
} else {
- return wfMsgExt( 'siteuser', 'parsemag', $link, $user->getName() );
+ return wfMessage( 'siteuser' )->rawParams( $link )->params( $user->getName() )->escaped();
}
}
}
@@ -224,11 +223,9 @@ class Credits {
* @param $article Article object
* @return String: html
*/
- protected static function othersLink( Article $article ) {
- global $wgUser;
- $skin = $wgUser->getSkin();
- return $skin->link(
- $article->getTitle(),
+ protected function othersLink() {
+ return Linker::link(
+ $this->getTitle(),
wfMsgHtml( 'others' ),
array(),
array( 'action' => 'credits' ),
diff --git a/includes/actions/DeletetrackbackAction.php b/includes/actions/DeletetrackbackAction.php
new file mode 100644
index 00000000..0efebdf5
--- /dev/null
+++ b/includes/actions/DeletetrackbackAction.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * Delete a trackback on a page
+ *
+ * Copyright © 2011 Alexandre Emsenhuber
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Actions
+ */
+
+class DeletetrackbackAction extends FormlessAction {
+
+ public function getName() {
+ return 'deletetrackback';
+ }
+
+ public function getRestriction() {
+ return 'delete';
+ }
+
+ protected function getDescription() {
+ return '';
+ }
+
+ protected function checkCanExecute( User $user ) {
+ if ( !$user->matchEditToken( $this->getRequest()->getVal( 'token' ) ) ) {
+ throw new ErrorPageError( 'sessionfailure-title', 'sessionfailure' );
+ }
+
+ return parent::checkCanExecute( $user );
+ }
+
+ public function onView() {
+ $db = wfGetDB( DB_MASTER );
+ $db->delete( 'trackbacks', array( 'tb_id' => $this->getRequest()->getInt( 'tbid' ) ) );
+
+ $this->getOutput()->addWikiMsg( 'trackbackdeleteok' );
+ $this->getTitle()->invalidateCache();
+ }
+}
diff --git a/includes/actions/InfoAction.php b/includes/actions/InfoAction.php
new file mode 100644
index 00000000..b0b5f259
--- /dev/null
+++ b/includes/actions/InfoAction.php
@@ -0,0 +1,151 @@
+<?php
+/**
+ * Display informations about a page.
+ * Very inefficient for the moment.
+ *
+ * Copyright © 2011 Alexandre Emsenhuber
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Actions
+ */
+
+class InfoAction extends FormlessAction {
+
+ public function getName() {
+ return 'info';
+ }
+
+ public function getRestriction() {
+ return 'read';
+ }
+
+ protected function getDescription() {
+ return '';
+ }
+
+ public function requiresWrite() {
+ return false;
+ }
+
+ public function requiresUnblock() {
+ return false;
+ }
+
+ protected function getPageTitle() {
+ return wfMsg( 'pageinfo-title', $this->getTitle()->getSubjectPage()->getPrefixedText() );
+ }
+
+ public function onView() {
+ global $wgDisableCounters;
+
+ $title = $this->getTitle()->getSubjectPage();
+
+ $pageInfo = self::pageCountInfo( $title );
+ $talkInfo = self::pageCountInfo( $title->getTalkPage() );
+
+ return Html::rawElement( 'table', array( 'class' => 'wikitable mw-page-info' ),
+ Html::rawElement( 'tr', array(),
+ Html::element( 'th', array(), '' ) .
+ Html::element( 'th', array(), wfMsg( 'pageinfo-subjectpage' ) ) .
+ Html::element( 'th', array(), wfMsg( 'pageinfo-talkpage' ) )
+ ) .
+ Html::rawElement( 'tr', array(),
+ Html::element( 'th', array( 'colspan' => 3 ), wfMsg( 'pageinfo-header-edits' ) )
+ ) .
+ Html::rawElement( 'tr', array(),
+ Html::element( 'td', array(), wfMsg( 'pageinfo-edits' ) ) .
+ Html::element( 'td', array(), $this->getLang()->formatNum( $pageInfo['edits'] ) ) .
+ Html::element( 'td', array(), $this->getLang()->formatNum( $talkInfo['edits'] ) )
+ ) .
+ Html::rawElement( 'tr', array(),
+ Html::element( 'td', array(), wfMsg( 'pageinfo-authors' ) ) .
+ Html::element( 'td', array(), $this->getLang()->formatNum( $pageInfo['authors'] ) ) .
+ Html::element( 'td', array(), $this->getLang()->formatNum( $talkInfo['authors'] ) )
+ ) .
+ ( !$this->getUser()->isAllowed( 'unwatchedpages' ) ? '' :
+ Html::rawElement( 'tr', array(),
+ Html::element( 'th', array( 'colspan' => 3 ), wfMsg( 'pageinfo-header-watchlist' ) )
+ ) .
+ Html::rawElement( 'tr', array(),
+ Html::element( 'td', array(), wfMsg( 'pageinfo-watchers' ) ) .
+ Html::element( 'td', array( 'colspan' => 2 ), $this->getLang()->formatNum( $pageInfo['watchers'] ) )
+ )
+ ).
+ ( $wgDisableCounters ? '' :
+ Html::rawElement( 'tr', array(),
+ Html::element( 'th', array( 'colspan' => 3 ), wfMsg( 'pageinfo-header-views' ) )
+ ) .
+ Html::rawElement( 'tr', array(),
+ Html::element( 'td', array(), wfMsg( 'pageinfo-views' ) ) .
+ Html::element( 'td', array(), $this->getLang()->formatNum( $pageInfo['views'] ) ) .
+ Html::element( 'td', array(), $this->getLang()->formatNum( $talkInfo['views'] ) )
+ ) .
+ Html::rawElement( 'tr', array(),
+ Html::element( 'td', array(), wfMsg( 'pageinfo-viewsperedit' ) ) .
+ Html::element( 'td', array(), $this->getLang()->formatNum( sprintf( '%.2f', $pageInfo['edits'] ? $pageInfo['views'] / $pageInfo['edits'] : 0 ) ) ) .
+ Html::element( 'td', array(), $this->getLang()->formatNum( sprintf( '%.2f', $talkInfo['edits'] ? $talkInfo['views'] / $talkInfo['edits'] : 0 ) ) )
+ )
+ )
+ );
+ }
+
+ /**
+ * Return the total number of edits and number of unique editors
+ * on a given page. If page does not exist, returns false.
+ *
+ * @param $title Title object
+ * @return mixed array or boolean false
+ */
+ public static function pageCountInfo( $title ) {
+ $id = $title->getArticleId();
+ $dbr = wfGetDB( DB_SLAVE );
+
+ $watchers = (int)$dbr->selectField(
+ 'watchlist',
+ 'COUNT(*)',
+ array(
+ 'wl_title' => $title->getDBkey(),
+ 'wl_namespace' => $title->getNamespace()
+ ),
+ __METHOD__
+ );
+
+ $edits = (int)$dbr->selectField(
+ 'revision',
+ 'COUNT(rev_page)',
+ array( 'rev_page' => $id ),
+ __METHOD__
+ );
+
+ $authors = (int)$dbr->selectField(
+ 'revision',
+ 'COUNT(DISTINCT rev_user_text)',
+ array( 'rev_page' => $id ),
+ __METHOD__
+ );
+
+ $views = (int)$dbr->selectField(
+ 'page',
+ 'page_counter',
+ array( 'page_id' => $id ),
+ __METHOD__
+ );
+
+ return array( 'watchers' => $watchers, 'edits' => $edits,
+ 'authors' => $authors, 'views' => $views );
+ }
+}
diff --git a/includes/actions/MarkpatrolledAction.php b/includes/actions/MarkpatrolledAction.php
new file mode 100644
index 00000000..a5d76627
--- /dev/null
+++ b/includes/actions/MarkpatrolledAction.php
@@ -0,0 +1,86 @@
+<?php
+/**
+ * Mark a revision as patrolled on a page
+ *
+ * Copyright © 2011 Alexandre Emsenhuber
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Actions
+ */
+
+class MarkpatrolledAction extends FormlessAction {
+
+ public function getName() {
+ return 'markpatrolled';
+ }
+
+ public function getRestriction() {
+ return 'read';
+ }
+
+ protected function getDescription() {
+ return '';
+ }
+
+ protected function checkCanExecute( User $user ) {
+ if ( !$user->matchEditToken( $this->getRequest()->getVal( 'token' ), $this->getRequest()->getInt( 'rcid' ) ) ) {
+ throw new ErrorPageError( 'sessionfailure-title', 'sessionfailure' );
+ }
+
+ return parent::checkCanExecute( $user );
+ }
+
+ public function onView() {
+ $rc = RecentChange::newFromId( $this->getRequest()->getInt( 'rcid' ) );
+
+ if ( is_null( $rc ) ) {
+ throw new ErrorPageError( 'markedaspatrollederror', 'markedaspatrollederrortext' );
+ }
+
+ $errors = $rc->doMarkPatrolled( $this->getUser() );
+
+ if ( in_array( array( 'rcpatroldisabled' ), $errors ) ) {
+ throw new ErrorPageError( 'rcpatroldisabled', 'rcpatroldisabledtext' );
+ }
+
+ if ( in_array( array( 'hookaborted' ), $errors ) ) {
+ // The hook itself has handled any output
+ return;
+ }
+
+ # It would be nice to see where the user had actually come from, but for now just guess
+ $returnto = $rc->getAttribute( 'rc_type' ) == RC_NEW ? 'Newpages' : 'Recentchanges';
+ $return = SpecialPage::getTitleFor( $returnto );
+
+ if ( in_array( array( 'markedaspatrollederror-noautopatrol' ), $errors ) ) {
+ $this->getOutput()->setPageTitle( wfMsg( 'markedaspatrollederror' ) );
+ $this->getOutput()->addWikiMsg( 'markedaspatrollederror-noautopatrol' );
+ $this->getOutput()->returnToMain( null, $return );
+ return;
+ }
+
+ if ( !empty( $errors ) ) {
+ $this->getOutput()->showPermissionsErrorPage( $errors );
+ return;
+ }
+
+ # Inform the user
+ $this->getOutput()->setPageTitle( wfMsg( 'markedaspatrolled' ) );
+ $this->getOutput()->addWikiMsg( 'markedaspatrolledtext', $rc->getTitle()->getPrefixedText() );
+ $this->getOutput()->returnToMain( null, $return );
+ }
+}
diff --git a/includes/actions/PurgeAction.php b/includes/actions/PurgeAction.php
new file mode 100644
index 00000000..29cbf3ae
--- /dev/null
+++ b/includes/actions/PurgeAction.php
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Formats credits for articles
+ *
+ * Copyright 2004, Evan Prodromou <evan@wikitravel.org>.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
+ *
+ * @file
+ * @ingroup Actions
+ * @author <evan@wikitravel.org>
+ */
+
+class PurgeAction extends FormAction {
+
+ private $redirectParams;
+
+ public function getName() {
+ return 'purge';
+ }
+
+ public function getRestriction() {
+ return null;
+ }
+
+ public function requiresUnblock() {
+ return false;
+ }
+
+ public function getDescription() {
+ return '';
+ }
+
+ /**
+ * Just get an empty form with a single submit button
+ * @return array
+ */
+ protected function getFormFields() {
+ return array();
+ }
+
+ public function onSubmit( $data ) {
+ $this->page->doPurge();
+ return true;
+ }
+
+ /**
+ * purge is slightly weird because it can be either formed or formless depending
+ * on user permissions
+ */
+ public function show() {
+ $this->setHeaders();
+
+ // This will throw exceptions if there's a problem
+ $this->checkCanExecute( $this->getUser() );
+
+ if ( $this->getUser()->isAllowed( 'purge' ) ) {
+ $this->redirectParams = wfArrayToCGI( array_diff_key(
+ $this->getRequest()->getQueryValues(),
+ array( 'title' => null, 'action' => null )
+ ) );
+ $this->onSubmit( array() );
+ $this->onSuccess();
+ } else {
+ $this->redirectParams = $this->getRequest()->getVal( 'redirectparams', '' );
+ $form = $this->getForm();
+ if ( $form->show() ) {
+ $this->onSuccess();
+ }
+ }
+ }
+
+ protected function alterForm( HTMLForm $form ) {
+ $form->setSubmitText( wfMsg( 'confirm_purge_button' ) );
+ }
+
+ protected function preText() {
+ return wfMessage( 'confirm-purge-top' )->parse();
+ }
+
+ protected function postText() {
+ return wfMessage( 'confirm-purge-bottom' )->parse();
+ }
+
+ public function onSuccess() {
+ $this->getOutput()->redirect( $this->getTitle()->getFullUrl( $this->redirectParams ) );
+ }
+}
diff --git a/includes/actions/RevertAction.php b/includes/actions/RevertAction.php
new file mode 100644
index 00000000..bcb8cd8b
--- /dev/null
+++ b/includes/actions/RevertAction.php
@@ -0,0 +1,140 @@
+<?php
+/**
+ * File reversion user interface
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Action
+ * @ingroup Media
+ * @author Alexandre Emsenhuber
+ * @author Rob Church <robchur@gmail.com>
+ */
+
+/**
+ * Dummy class for pages not in NS_FILE
+ *
+ * @ingroup Action
+ */
+class RevertAction extends Action {
+
+ public function getName() {
+ return 'revert';
+ }
+
+ public function getRestriction() {
+ return 'read';
+ }
+
+ public function show() {
+ $this->getOutput()->showErrorPage( 'nosuchaction', 'nosuchactiontext' );
+ }
+
+ public function execute() {}
+}
+
+/**
+ * Class for pages in NS_FILE
+ *
+ * @ingroup Action
+ */
+class RevertFileAction extends FormAction {
+ protected $oldFile;
+
+ public function getName() {
+ return 'revert';
+ }
+
+ public function getRestriction() {
+ return 'upload';
+ }
+
+ protected function checkCanExecute( User $user ) {
+ parent::checkCanExecute( $user );
+
+ $oldimage = $this->getRequest()->getText( 'oldimage' );
+ if ( strlen( $oldimage ) < 16
+ || strpos( $oldimage, '/' ) !== false
+ || strpos( $oldimage, '\\' ) !== false )
+ {
+ throw new ErrorPageError( 'internalerror', 'unexpected', array( 'oldimage', $oldimage ) );
+ }
+
+ $this->oldFile = RepoGroup::singleton()->getLocalRepo()->newFromArchiveName( $this->getTitle(), $oldimage );
+ if ( !$this->oldFile->exists() ) {
+ throw new ErrorPageError( '', 'filerevert-badversion' );
+ }
+ }
+
+ protected function alterForm( HTMLForm $form ) {
+ $form->setWrapperLegend( wfMsgHtml( 'filerevert-legend' ) );
+ $form->setSubmitText( wfMsg( 'filerevert-submit' ) );
+ $form->addHiddenField( 'oldimage', $this->getRequest()->getText( 'oldimage' ) );
+ }
+
+ protected function getFormFields() {
+ global $wgContLang;
+
+ $timestamp = $this->oldFile->getTimestamp();
+
+ return array(
+ 'intro' => array(
+ 'type' => 'info',
+ 'vertical-label' => true,
+ 'raw' => true,
+ 'default' => wfMsgExt( 'filerevert-intro', 'parse', $this->getTitle()->getText(),
+ $this->getLang()->date( $timestamp, true ), $this->getLang()->time( $timestamp, true ),
+ wfExpandUrl( $this->page->getFile()->getArchiveUrl( $this->getRequest()->getText( 'oldimage' ) ),
+ PROTO_CURRENT
+ ) )
+ ),
+ 'comment' => array(
+ 'type' => 'text',
+ 'label-message' => 'filerevert-comment',
+ 'default' => wfMsgForContent( 'filerevert-defaultcomment',
+ $wgContLang->date( $timestamp, false, false ), $wgContLang->time( $timestamp, false, false ) ),
+ )
+ );
+ }
+
+ public function onSubmit( $data ) {
+ $source = $this->page->getFile()->getArchiveVirtualUrl( $this->getRequest()->getText( 'oldimage' ) );
+ $comment = $data['comment'];
+ // TODO: Preserve file properties from database instead of reloading from file
+ return $this->page->getFile()->upload( $source, $comment, $comment );
+ }
+
+ public function onSuccess() {
+ $timestamp = $this->oldFile->getTimestamp();
+ $this->getOutput()->addHTML( wfMsgExt( 'filerevert-success', 'parse', $this->getTitle()->getText(),
+ $this->getLang()->date( $timestamp, true ),
+ $this->getLang()->time( $timestamp, true ),
+ wfExpandUrl( $this->page->getFile()->getArchiveUrl( $this->getRequest()->getText( 'oldimage' ) ),
+ PROTO_CURRENT
+ ) ) );
+ $this->getOutput()->returnToMain( false, $this->getTitle() );
+ }
+
+ protected function getPageTitle() {
+ return wfMsg( 'filerevert', $this->getTitle()->getText() );
+ }
+
+ protected function getDescription() {
+ return wfMsg(
+ 'filerevert-backlink',
+ Linker::linkKnown( $this->getTitle() )
+ );
+ }
+}
diff --git a/includes/actions/RevisiondeleteAction.php b/includes/actions/RevisiondeleteAction.php
new file mode 100644
index 00000000..2ac03d18
--- /dev/null
+++ b/includes/actions/RevisiondeleteAction.php
@@ -0,0 +1,53 @@
+<?php
+/**
+ * An action that just pass the request to Special:RevisionDelete
+ *
+ * Copyright © 2011 Alexandre Emsenhuber
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Actions
+ * @author Alexandre Emsenhuber
+ */
+
+class RevisiondeleteAction extends FormlessAction {
+
+ public function getName() {
+ return 'revisiondelete';
+ }
+
+ public function getRestriction() {
+ return null;
+ }
+
+ public function requiresUnblock() {
+ return false;
+ }
+
+ public function getDescription() {
+ return '';
+ }
+
+ public function onView() {
+ return '';
+ }
+
+ public function show() {
+ $special = SpecialPageFactory::getPage( 'Revisiondelete' );
+ $special->setContext( $this->getContext() );
+ $special->execute( '' );
+ }
+}
diff --git a/includes/actions/RollbackAction.php b/includes/actions/RollbackAction.php
new file mode 100644
index 00000000..9036ebf5
--- /dev/null
+++ b/includes/actions/RollbackAction.php
@@ -0,0 +1,122 @@
+<?php
+/**
+ * Edit rollback user interface
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Action
+ */
+
+/**
+ * User interface for the rollback action
+ *
+ * @ingroup Action
+ */
+class RollbackAction extends FormlessAction {
+
+ public function getName() {
+ return 'rollback';
+ }
+
+ public function getRestriction() {
+ return 'rollback';
+ }
+
+ public function onView() {
+ $details = null;
+
+ $request = $this->getRequest();
+
+ $result = $this->page->doRollback(
+ $request->getVal( 'from' ),
+ $request->getText( 'summary' ),
+ $request->getVal( 'token' ),
+ $request->getBool( 'bot' ),
+ $details,
+ $this->getUser()
+ );
+
+ if ( in_array( array( 'actionthrottledtext' ), $result ) ) {
+ throw new ThrottledError;
+ }
+
+ if ( isset( $result[0][0] ) && ( $result[0][0] == 'alreadyrolled' || $result[0][0] == 'cantrollback' ) ) {
+ $this->getOutput()->setPageTitle( wfMsg( 'rollbackfailed' ) );
+ $errArray = $result[0];
+ $errMsg = array_shift( $errArray );
+ $this->getOutput()->addWikiMsgArray( $errMsg, $errArray );
+
+ if ( isset( $details['current'] ) ) {
+ $current = $details['current'];
+
+ if ( $current->getComment() != '' ) {
+ $this->getOutput()->addHTML( wfMessage( 'editcomment' )->rawParams(
+ Linker::formatComment( $current->getComment() ) )->parse() );
+ }
+ }
+
+ return;
+ }
+
+ # Display permissions errors before read-only message -- there's no
+ # point in misleading the user into thinking the inability to rollback
+ # is only temporary.
+ if ( !empty( $result ) && $result !== array( array( 'readonlytext' ) ) ) {
+ # array_diff is completely broken for arrays of arrays, sigh.
+ # Remove any 'readonlytext' error manually.
+ $out = array();
+ foreach ( $result as $error ) {
+ if ( $error != array( 'readonlytext' ) ) {
+ $out [] = $error;
+ }
+ }
+ $this->getOutput()->showPermissionsErrorPage( $out );
+
+ return;
+ }
+
+ if ( $result == array( array( 'readonlytext' ) ) ) {
+ throw new ReadOnlyError;
+ }
+
+ $current = $details['current'];
+ $target = $details['target'];
+ $newId = $details['newid'];
+ $this->getOutput()->setPageTitle( wfMsg( 'actioncomplete' ) );
+ $this->getOutput()->setRobotPolicy( 'noindex,nofollow' );
+
+ if ( $current->getUserText() === '' ) {
+ $old = wfMsg( 'rev-deleted-user' );
+ } else {
+ $old = Linker::userLink( $current->getUser(), $current->getUserText() )
+ . Linker::userToolLinks( $current->getUser(), $current->getUserText() );
+ }
+
+ $new = Linker::userLink( $target->getUser(), $target->getUserText() )
+ . Linker::userToolLinks( $target->getUser(), $target->getUserText() );
+ $this->getOutput()->addHTML( wfMsgExt( 'rollback-success', array( 'parse', 'replaceafter' ), $old, $new ) );
+ $this->getOutput()->returnToMain( false, $this->getTitle() );
+
+ if ( !$request->getBool( 'hidediff', false ) && !$this->getUser()->getBoolOption( 'norollbackdiff', false ) ) {
+ $de = new DifferenceEngine( $this->getTitle(), $current->getId(), $newId, false, true );
+ $de->showDiff( '', '' );
+ }
+ }
+
+ protected function getDescription() {
+ return '';
+ }
+}
diff --git a/includes/actions/WatchAction.php b/includes/actions/WatchAction.php
new file mode 100644
index 00000000..52e66754
--- /dev/null
+++ b/includes/actions/WatchAction.php
@@ -0,0 +1,183 @@
+<?php
+/**
+ * Performs the watch and unwatch actions on a page
+ *
+ * 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
+ *
+ * @file
+ * @ingroup Actions
+ */
+
+class WatchAction extends FormAction {
+
+ public function getName() {
+ return 'watch';
+ }
+
+ public function getRestriction() {
+ return 'read';
+ }
+
+ public function requiresUnblock() {
+ return false;
+ }
+
+ protected function getDescription() {
+ return wfMsg( 'addwatch' );
+ }
+
+ /**
+ * Just get an empty form with a single submit button
+ * @return array
+ */
+ protected function getFormFields() {
+ return array();
+ }
+
+ public function onSubmit( $data ) {
+ wfProfileIn( __METHOD__ );
+ self::doWatch( $this->getTitle(), $this->getUser() );
+ wfProfileOut( __METHOD__ );
+ return true;
+ }
+
+ /**
+ * This can be either formed or formless depending on the session token given
+ */
+ public function show() {
+ $this->setHeaders();
+
+ $user = $this->getUser();
+ // This will throw exceptions if there's a problem
+ $this->checkCanExecute( $user );
+
+ // Must have valid token for this action/title
+ $salt = array( $this->getName(), $this->getTitle()->getDBkey() );
+
+ if ( $user->matchEditToken( $this->getRequest()->getVal( 'token' ), $salt ) ) {
+ $this->onSubmit( array() );
+ $this->onSuccess();
+ } else {
+ $form = $this->getForm();
+ if ( $form->show() ) {
+ $this->onSuccess();
+ }
+ }
+ }
+
+ protected function checkCanExecute( User $user ) {
+ // Must be logged in
+ if ( $user->isAnon() ) {
+ throw new ErrorPageError( 'watchnologin', 'watchnologintext' );
+ }
+
+ return parent::checkCanExecute( $user );
+ }
+
+ public static function doWatch( Title $title, User $user ) {
+ $page = new Article( $title, 0 );
+
+ if ( wfRunHooks( 'WatchArticle', array( &$user, &$page ) ) ) {
+ $user->addWatch( $title );
+ wfRunHooks( 'WatchArticleComplete', array( &$user, &$page ) );
+ }
+ return true;
+ }
+
+ public static function doUnwatch( Title $title, User $user ) {
+ $page = new Article( $title, 0 );
+
+ if ( wfRunHooks( 'UnwatchArticle', array( &$user, &$page ) ) ) {
+ $user->removeWatch( $title );
+ wfRunHooks( 'UnwatchArticleComplete', array( &$user, &$page ) );
+ }
+ return true;
+ }
+
+ /**
+ * Get token to watch (or unwatch) a page for a user
+ *
+ * @param Title $title Title object of page to watch
+ * @param User $title User for whom the action is going to be performed
+ * @param string $action Optionally override the action to 'unwatch'
+ * @return string Token
+ * @since 1.18
+ */
+ public static function getWatchToken( Title $title, User $user, $action = 'watch' ) {
+ if ( $action != 'unwatch' ) {
+ $action = 'watch';
+ }
+ $salt = array( $action, $title->getDBkey() );
+
+ // This token stronger salted and not compatible with ApiWatch
+ // It's title/action specific because index.php is GET and API is POST
+ return $user->editToken( $salt );
+ }
+
+ /**
+ * Get token to unwatch (or watch) a page for a user
+ *
+ * @param Title $title Title object of page to unwatch
+ * @param User $title User for whom the action is going to be performed
+ * @param string $action Optionally override the action to 'watch'
+ * @return string Token
+ * @since 1.18
+ */
+ public static function getUnwatchToken( Title $title, User $user, $action = 'unwatch' ) {
+ return self::getWatchToken( $title, $user, $action );
+ }
+
+ protected function alterForm( HTMLForm $form ) {
+ $form->setSubmitText( wfMsg( 'confirm-watch-button' ) );
+ }
+
+ protected function preText() {
+ return wfMessage( 'confirm-watch-top' )->parse();
+ }
+
+ public function onSuccess() {
+ $this->getOutput()->addWikiMsg( 'addedwatchtext', $this->getTitle()->getPrefixedText() );
+ }
+}
+
+class UnwatchAction extends WatchAction {
+
+ public function getName() {
+ return 'unwatch';
+ }
+
+ protected function getDescription() {
+ return wfMsg( 'removewatch' );
+ }
+
+ public function onSubmit( $data ) {
+ wfProfileIn( __METHOD__ );
+ self::doUnwatch( $this->getTitle(), $this->getUser() );
+ wfProfileOut( __METHOD__ );
+ return true;
+ }
+
+ protected function alterForm( HTMLForm $form ) {
+ $form->setSubmitText( wfMsg( 'confirm-unwatch-button' ) );
+ }
+
+ protected function preText() {
+ return wfMessage( 'confirm-unwatch-top' )->parse();
+ }
+
+ public function onSuccess() {
+ $this->getOutput()->addWikiMsg( 'removedwatchtext', $this->getTitle()->getPrefixedText() );
+ }
+}
diff --git a/includes/api/ApiBase.php b/includes/api/ApiBase.php
index 175fa6a1..30e42934 100644
--- a/includes/api/ApiBase.php
+++ b/includes/api/ApiBase.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 5, 2006
*
@@ -30,7 +30,7 @@
* The class functions are divided into several areas of functionality:
*
* Module parameters: Derived classes can define getAllowedParams() to specify
- * which parameters to expect,h ow to parse and validate them.
+ * which parameters to expect, how to parse and validate them.
*
* Profiling: various methods to allow keeping tabs on various tasks and their
* time costs
@@ -122,6 +122,9 @@ abstract class ApiBase {
/**
* Get the name of the module as shown in the profiler log
+ *
+ * @param $db DatabaseBase
+ *
* @return string
*/
public function getModuleProfileName( $db = false ) {
@@ -171,6 +174,24 @@ abstract class ApiBase {
}
/**
+ * Create a new RequestContext object to use e.g. for calls to other parts
+ * the software.
+ * The object will have the WebRequest and the User object set to the ones
+ * used in this instance.
+ *
+ * @return RequestContext
+ */
+ public function createContext() {
+ global $wgUser;
+
+ $context = new RequestContext;
+ $context->setRequest( $this->getMain()->getRequest() );
+ $context->setUser( $wgUser ); /// @todo FIXME: we should store the User object
+
+ return $context;
+ }
+
+ /**
* Set warning section for this module. Users should monitor this
* section to notice any changes in API. Multiple calls to this
* function will result in the warning messages being separated by
@@ -178,7 +199,8 @@ abstract class ApiBase {
* @param $warning string Warning message
*/
public function setWarning( $warning ) {
- $data = $this->getResult()->getData();
+ $result = $this->getResult();
+ $data = $result->getData();
if ( isset( $data['warnings'][$this->getModuleName()] ) ) {
// Don't add duplicate warnings
$warn_regex = preg_quote( $warning, '/' );
@@ -188,13 +210,13 @@ abstract class ApiBase {
$oldwarning = $data['warnings'][$this->getModuleName()]['*'];
// If there is a warning already, append it to the existing one
$warning = "$oldwarning\n$warning";
- $this->getResult()->unsetValue( 'warnings', $this->getModuleName() );
+ $result->unsetValue( 'warnings', $this->getModuleName() );
}
$msg = array();
ApiResult::setContent( $msg, $warning );
- $this->getResult()->disableSizeCheck();
- $this->getResult()->addValue( 'warnings', $this->getModuleName(), $msg );
- $this->getResult()->enableSizeCheck();
+ $result->disableSizeCheck();
+ $result->addValue( 'warnings', $this->getModuleName(), $msg );
+ $result->enableSizeCheck();
}
/**
@@ -235,8 +257,7 @@ abstract class ApiBase {
$msg .= "\nThis module only accepts POST requests";
}
if ( $this->isReadMode() || $this->isWriteMode() ||
- $this->mustBePosted() )
- {
+ $this->mustBePosted() ) {
$msg .= "\n";
}
@@ -246,20 +267,8 @@ abstract class ApiBase {
$msg .= "Parameters:\n$paramsMsg";
}
- // Examples
- $examples = $this->getExamples();
- if ( $examples !== false ) {
- if ( !is_array( $examples ) ) {
- $examples = array(
- $examples
- );
- }
-
- if ( count( $examples ) > 0 ) {
- $msg .= 'Example' . ( count( $examples ) > 1 ? 's' : '' ) . ":\n ";
- $msg .= implode( $lnPrfx, $examples ) . "\n";
- }
- }
+ $msg .= $this->makeHelpArrayToString( $lnPrfx, "Example", $this->getExamples() );
+ $msg .= $this->makeHelpArrayToString( $lnPrfx, "Help page", $this->getHelpUrls() );
if ( $this->getMain()->getShowVersions() ) {
$versions = $this->getVersion();
@@ -283,9 +292,33 @@ abstract class ApiBase {
}
/**
+ * @param $prefix string Text to split output items
+ * @param $title string What is being output
+ * @param $input string|array
+ * @return string
+ */
+ protected function makeHelpArrayToString( $prefix, $title, $input ) {
+ if ( $input === false ) {
+ return '';
+ }
+ if ( !is_array( $input ) ) {
+ $input = array(
+ $input
+ );
+ }
+
+ if ( count( $input ) > 0 ) {
+ $msg = $title . ( count( $input ) > 1 ? 's' : '' ) . ":\n ";
+ $msg .= implode( $prefix, $input ) . "\n";
+ return $msg;
+ }
+ return '';
+ }
+
+ /**
* Generates the parameter descriptions for this module, to be displayed in the
* module's help.
- * @return string
+ * @return string or false
*/
public function makeHelpMsgParameters() {
$params = $this->getFinalParams();
@@ -293,7 +326,8 @@ abstract class ApiBase {
$paramsDescription = $this->getFinalParamDescription();
$msg = '';
- $paramPrefix = "\n" . str_repeat( ' ', 19 );
+ $paramPrefix = "\n" . str_repeat( ' ', 24 );
+ $descWordwrap = "\n" . str_repeat( ' ', 28 );
foreach ( $params as $paramName => $paramSettings ) {
$desc = isset( $paramsDescription[$paramName] ) ? $paramsDescription[$paramName] : '';
if ( is_array( $desc ) ) {
@@ -336,12 +370,16 @@ abstract class ApiBase {
$choices[] = $t;
}
}
- $desc .= $paramPrefix . $nothingPrompt . $prompt . implode( ', ', $choices );
+ $desc .= $paramPrefix . $nothingPrompt . $prompt;
+ $choicesstring = implode( ', ', $choices );
+ $desc .= wordwrap( $choicesstring, 100, $descWordwrap );
} else {
switch ( $type ) {
case 'namespace':
// Special handling because namespaces are type-limited, yet they are not given
- $desc .= $paramPrefix . $prompt . implode( ', ', MWNamespace::getValidNamespaces() );
+ $desc .= $paramPrefix . $prompt;
+ $desc .= wordwrap( implode( ', ', MWNamespace::getValidNamespaces() ),
+ 100, $descWordwrap );
break;
case 'limit':
$desc .= $paramPrefix . "No more than {$paramSettings[self :: PARAM_MAX]}";
@@ -371,7 +409,7 @@ abstract class ApiBase {
$isArray = is_array( $paramSettings[self::PARAM_TYPE] );
if ( !$isArray
- || $isArray && count( $paramSettings[self::PARAM_TYPE] ) > self::LIMIT_SML1) {
+ || $isArray && count( $paramSettings[self::PARAM_TYPE] ) > self::LIMIT_SML1 ) {
$desc .= $paramPrefix . "Maximum number of values " .
self::LIMIT_SML1 . " (" . self::LIMIT_SML2 . " for bots)";
}
@@ -386,7 +424,7 @@ abstract class ApiBase {
$desc .= $paramPrefix . "Default: $default";
}
- $msg .= sprintf( " %-14s - %s\n", $this->encodeParamName( $paramName ), $desc );
+ $msg .= sprintf( " %-19s - %s\n", $this->encodeParamName( $paramName ), $desc );
}
return $msg;
@@ -398,9 +436,13 @@ abstract class ApiBase {
/**
* Callback for preg_replace_callback() call in makeHelpMsg().
* Replaces a source file name with a link to ViewVC
+ *
+ * @return string
*/
public function makeHelpMsg_callback( $matches ) {
global $wgAutoloadClasses, $wgAutoloadLocalClasses;
+
+ $file = '';
if ( isset( $wgAutoloadLocalClasses[get_class( $this )] ) ) {
$file = $wgAutoloadLocalClasses[get_class( $this )];
} elseif ( isset( $wgAutoloadClasses[get_class( $this )] ) ) {
@@ -421,7 +463,7 @@ abstract class ApiBase {
// This is necessary to make stuff like ApiMain::getVersion()
// returning the version string for ApiBase work
if ( $path ) {
- return "{$matches[0]}\n http://svn.wikimedia.org/" .
+ return "{$matches[0]}\n https://svn.wikimedia.org/" .
"viewvc/mediawiki/trunk/" . dirname( $path ) .
"/{$matches[2]}";
}
@@ -437,8 +479,8 @@ abstract class ApiBase {
}
/**
- * Returns usage examples for this module. Return null if no examples are available.
- * @return mixed string or array of strings
+ * Returns usage examples for this module. Return false if no examples are available.
+ * @return false|string|array
*/
protected function getExamples() {
return false;
@@ -449,7 +491,7 @@ abstract class ApiBase {
* value) or (parameter name) => (array with PARAM_* constants as keys)
* Don't call this function directly: use getFinalParams() to allow
* hooks to modify parameters as needed.
- * @return array
+ * @return array or false
*/
protected function getAllowedParams() {
return false;
@@ -459,7 +501,7 @@ abstract class ApiBase {
* Returns an array of parameter descriptions.
* Don't call this functon directly: use getFinalParamDescription() to
* allow hooks to modify descriptions as needed.
- * @return array
+ * @return array or false
*/
protected function getParamDescription() {
return false;
@@ -468,7 +510,7 @@ abstract class ApiBase {
/**
* Get final list of parameters, after hooks have had a chance to
* tweak it as needed.
- * @return array
+ * @return array or false
*/
public function getFinalParams() {
$params = $this->getAllowedParams();
@@ -554,6 +596,54 @@ abstract class ApiBase {
}
/**
+ * Generates the possible errors requireOnlyOneParameter() can die with
+ *
+ * @param $params array
+ * @return array
+ */
+ public function getRequireOnlyOneParameterErrorMessages( $params ) {
+ $p = $this->getModulePrefix();
+ $params = implode( ", {$p}", $params );
+
+ return array(
+ array( 'code' => "{$p}missingparam", 'info' => "One of the parameters {$p}{$params} is required" ),
+ array( 'code' => "{$p}invalidparammix", 'info' => "The parameters {$p}{$params} can not be used together" )
+ );
+ }
+
+ /**
+ * Die if more than one of a certain set of parameters is set and not false.
+ *
+ * @param $params array
+ */
+ public function requireMaxOneParameter( $params ) {
+ $required = func_get_args();
+ array_shift( $required );
+
+ $intersection = array_intersect( array_keys( array_filter( $params,
+ array( $this, "parameterNotEmpty" ) ) ), $required );
+
+ if ( count( $intersection ) > 1 ) {
+ $this->dieUsage( 'The parameters ' . implode( ', ', $intersection ) . ' can not be used together', 'invalidparammix' );
+ }
+ }
+
+ /**
+ * Generates the possible error requireMaxOneParameter() can die with
+ *
+ * @param $params array
+ * @return array
+ */
+ public function getRequireMaxOneParameterErrorMessages( $params ) {
+ $p = $this->getModulePrefix();
+ $params = implode( ", {$p}", $params );
+
+ return array(
+ array( 'code' => "{$p}invalidparammix", 'info' => "The parameters {$p}{$params} can not be used together" )
+ );
+ }
+
+ /**
* Callback function used in requireOnlyOneParameter to check whether reequired parameters are set
*
* @param $x object Parameter to check is not null/false
@@ -564,7 +654,7 @@ abstract class ApiBase {
}
/**
- * @deprecated use MWNamespace::getValidNamespaces()
+ * @deprecated since 1.17 use MWNamespace::getValidNamespaces()
*/
public static function getValidNamespaces() {
return MWNamespace::getValidNamespaces();
@@ -576,7 +666,7 @@ abstract class ApiBase {
* @param $titleObj Title the page under consideration
* @param $userOption String The user option to consider when $watchlist=preferences.
* If not set will magically default to either watchdefault or watchcreations
- * @returns Boolean
+ * @return bool
*/
protected function getWatchlistValue ( $watchlist, $titleObj, $userOption = null ) {
@@ -617,17 +707,17 @@ abstract class ApiBase {
* @param $titleObj Title the article's title to change
* @param $userOption String The user option to consider when $watch=preferences
*/
- protected function setWatch ( $watch, $titleObj, $userOption = null ) {
+ protected function setWatch( $watch, $titleObj, $userOption = null ) {
$value = $this->getWatchlistValue( $watch, $titleObj, $userOption );
if ( $value === null ) {
return;
}
- $articleObj = new Article( $titleObj );
+ global $wgUser;
if ( $value ) {
- $articleObj->doWatch();
+ WatchAction::doWatch( $titleObj, $wgUser );
} else {
- $articleObj->doUnwatch();
+ WatchAction::doUnwatch( $titleObj, $wgUser );
}
}
@@ -707,16 +797,18 @@ abstract class ApiBase {
$enforceLimits = isset ( $paramSettings[self::PARAM_RANGE_ENFORCE] )
? $paramSettings[self::PARAM_RANGE_ENFORCE] : false;
- if ( !is_null( $min ) || !is_null( $max ) ) {
- if ( is_array( $value ) ) {
- $value = array_map( 'intval', $value );
- foreach ( $value as &$v ) {
+ if ( is_array( $value ) ) {
+ $value = array_map( 'intval', $value );
+ if ( !is_null( $min ) || !is_null( $max ) ) {
+ foreach ( $value as &$v ) {
$this->validateLimit( $paramName, $v, $min, $max, null, $enforceLimits );
}
- } else {
- $value = intval( $value );
- $this->validateLimit( $paramName, $value, $min, $max, null, $enforceLimits );
- }
+ }
+ } else {
+ $value = intval( $value );
+ if ( !is_null( $min ) || !is_null( $max ) ) {
+ $this->validateLimit( $paramName, $value, $min, $max, null, $enforceLimits );
+ }
}
break;
case 'limit':
@@ -745,14 +837,13 @@ abstract class ApiBase {
}
break;
case 'timestamp':
- if ( $multi ) {
- ApiBase::dieDebug( __METHOD__, "Multi-values not supported for $encParamName" );
- }
- $value = wfTimestamp( TS_UNIX, $value );
- if ( $value === 0 ) {
- $this->dieUsage( "Invalid value '$value' for timestamp parameter $encParamName", "badtimestamp_{$encParamName}" );
+ if ( is_array( $value ) ) {
+ foreach ( $value as $key => $val ) {
+ $value[$key] = $this->validateTimestamp( $val, $encParamName );
+ }
+ } else {
+ $value = $this->validateTimestamp( $value, $encParamName );
}
- $value = wfTimestamp( TS_MW, $value );
break;
case 'user':
if ( !is_array( $value ) ) {
@@ -785,7 +876,7 @@ abstract class ApiBase {
if ( $deprecated && $value !== false ) {
$this->setWarning( "The $encParamName parameter has been deprecated." );
}
- } else if ( $required ) {
+ } elseif ( $required ) {
$this->dieUsageMsg( array( 'missingparam', $paramName ) );
}
@@ -848,8 +939,8 @@ abstract class ApiBase {
* Prints usage info on failure.
* @param $paramName string Parameter name
* @param $value int Parameter value
- * @param $min int Minimum value
- * @param $max int Maximum value for users
+ * @param $min int|null Minimum value
+ * @param $max int|null Maximum value for users
* @param $botMax int Maximum value for sysops/bots
* @param $enforceLimits Boolean Whether to enforce (die) if value is outside limits
*/
@@ -884,6 +975,19 @@ abstract class ApiBase {
}
/**
+ * @param $value string
+ * @param $paramName string
+ * @return string
+ */
+ function validateTimestamp( $value, $paramName ) {
+ $value = wfTimestamp( TS_UNIX, $value );
+ if ( $value === 0 ) {
+ $this->dieUsage( "Invalid value '$value' for timestamp parameter $paramName", "badtimestamp_{$paramName}" );
+ }
+ return wfTimestamp( TS_MW, $value );
+ }
+
+ /**
* Adds a warning to the output, else dies
*
* @param $msg String Message to show as a warning, or error message if dying
@@ -924,7 +1028,7 @@ abstract class ApiBase {
* @param $extradata array Data to add to the <error> element; array in ApiResult format
*/
public function dieUsage( $description, $errorCode, $httpRespCode = 0, $extradata = null ) {
- wfProfileClose();
+ Profiler::instance()->close();
throw new UsageException( $description, $this->encodeParamName( $errorCode ), $httpRespCode, $extradata );
}
@@ -940,7 +1044,8 @@ abstract class ApiBase {
'ns-specialprotected' => array( 'code' => 'unsupportednamespace', 'info' => "Pages in the Special namespace can't be edited" ),
'protectedinterface' => array( 'code' => 'protectednamespace-interface', 'info' => "You're not allowed to edit interface messages" ),
'namespaceprotected' => array( 'code' => 'protectednamespace', 'info' => "You're not allowed to edit pages in the ``\$1'' namespace" ),
- 'customcssjsprotected' => array( 'code' => 'customcssjsprotected', 'info' => "You're not allowed to edit custom CSS and JavaScript pages" ),
+ 'customcssprotected' => array( 'code' => 'customcssprotected', 'info' => "You're not allowed to edit custom CSS pages" ),
+ 'customjsprotected' => array( 'code' => 'customjsprotected', 'info' => "You're not allowed to edit custom JavaScript pages" ),
'cascadeprotected' => array( 'code' => 'cascadeprotected', 'info' => "The page you're trying to edit is protected because it's included in a cascade-protected page" ),
'protectedpagetext' => array( 'code' => 'protectedpage', 'info' => "The ``\$1'' right is required to edit this page" ),
'protect-cantedit' => array( 'code' => 'cantedit', 'info' => "You can't protect this page because you can't edit it" ),
@@ -1041,6 +1146,7 @@ abstract class ApiBase {
'sharedfile-exists' => array( 'code' => 'fileexists-sharedrepo-perm', 'info' => 'The target file exists on a shared repository. Use the ignorewarnings parameter to override it.' ),
'mustbeposted' => array( 'code' => 'mustbeposted', 'info' => "The \$1 module requires a POST request" ),
'show' => array( 'code' => 'show', 'info' => 'Incorrect parameter - mutually exclusive values may not be supplied' ),
+ 'specialpage-cantexecute' => array( 'code' => 'specialpage-cantexecute', 'info' => "You don't have permission to view the results of this special page" ),
// ApiEditPage messages
'noimageredirect-anon' => array( 'code' => 'noimageredirect-anon', 'info' => "Anonymous users can't create image redirects" ),
@@ -1058,12 +1164,22 @@ abstract class ApiBase {
'emptynewsection' => array( 'code' => 'emptynewsection', 'info' => 'Creating empty new sections is not possible.' ),
'revwrongpage' => array( 'code' => 'revwrongpage', 'info' => "r\$1 is not a revision of ``\$2''" ),
'undo-failure' => array( 'code' => 'undofailure', 'info' => 'Undo failed due to conflicting intermediate edits' ),
+
+ // Messages from WikiPage::doEit()
+ 'edit-hook-aborted' => array( 'code' => 'edit-hook-aborted', 'info' => "Your edit was aborted by an ArticleSave hook" ),
+ 'edit-gone-missing' => array( 'code' => 'edit-gone-missing', 'info' => "The page you tried to edit doesn't seem to exist anymore" ),
+ 'edit-conflict' => array( 'code' => 'editconflict', 'info' => "Edit conflict detected" ),
+ 'edit-already-exists' => array( 'code' => 'edit-already-exists', 'info' => "It seems the page you tried to create already exist" ),
// uploadMsgs
'invalid-session-key' => array( 'code' => 'invalid-session-key', 'info' => 'Not a valid session key' ),
'nouploadmodule' => array( 'code' => 'nouploadmodule', 'info' => 'No upload module set' ),
'uploaddisabled' => array( 'code' => 'uploaddisabled', 'info' => 'Uploads are not enabled. Make sure $wgEnableUploads is set to true in LocalSettings.php and the PHP ini setting file_uploads is true' ),
'copyuploaddisabled' => array( 'code' => 'copyuploaddisabled', 'info' => 'Uploads by URL is not enabled. Make sure $wgAllowCopyUploads is set to true in LocalSettings.php.' ),
+
+ 'filename-tooshort' => array( 'code' => 'filename-tooshort', 'info' => 'The filename is too short' ),
+ 'illegal-filename' => array( 'code' => 'illegal-filename', 'info' => 'The filename is not allowed' ),
+ 'filetype-missing' => array( 'code' => 'filetype-missing', 'info' => 'The file is missing an extension' ),
);
/**
@@ -1077,9 +1193,14 @@ abstract class ApiBase {
/**
* Output the error message related to a certain array
- * @param $error array Element of a getUserPermissionsErrors()-style array
+ * @param $error (array|string) Element of a getUserPermissionsErrors()-style array
*/
public function dieUsageMsg( $error ) {
+ # most of the time we send a 1 element, so we might as well send it as
+ # a string and make this an array here.
+ if( is_string( $error ) ) {
+ $error = array( $error );
+ }
$parsed = $this->parseMsg( $error );
$this->dieUsage( $parsed['info'], $parsed['code'] );
}
@@ -1091,6 +1212,14 @@ abstract class ApiBase {
*/
public function parseMsg( $error ) {
$key = array_shift( $error );
+
+ // Check whether the error array was nested
+ // array( array( <code>, <params> ), array( <another_code>, <params> ) )
+ if( is_array( $key ) ){
+ $error = $key;
+ $key = array_shift( $error );
+ }
+
if ( isset( self::$messageMap[$key] ) ) {
return array( 'code' =>
wfMsgReplaceArgs( self::$messageMap[$key]['code'], $error ),
@@ -1098,6 +1227,7 @@ abstract class ApiBase {
wfMsgReplaceArgs( self::$messageMap[$key]['info'], $error )
);
}
+
// If the key isn't present, throw an "unknown error"
return $this->parseMsg( array( 'unknownerror', $key ) );
}
@@ -1144,7 +1274,7 @@ abstract class ApiBase {
/**
* Returns whether this module requires a Token to execute
- * @returns bool
+ * @return bool
*/
public function needsToken() {
return false;
@@ -1152,17 +1282,18 @@ abstract class ApiBase {
/**
* Returns the token salt if there is one, '' if the module doesn't require a salt, else false if the module doesn't need a token
- * @returns bool
+ * @return bool
*/
public function getTokenSalt() {
return false;
}
/**
- * Gets the user for whom to get the watchlist
- *
- * @returns User
- */
+ * Gets the user for whom to get the watchlist
+ *
+ * @param $params array
+ * @return User
+ */
public function getWatchlistUser( $params ) {
global $wgUser;
if ( !is_null( $params['owner'] ) && !is_null( $params['token'] ) ) {
@@ -1184,6 +1315,13 @@ abstract class ApiBase {
}
/**
+ * @return false|string|array Returns a false if the module has no help url, else returns a (array of) string
+ */
+ public function getHelpUrls() {
+ return false;
+ }
+
+ /**
* Returns a list of all possible errors returned by the module
* @return array in the format of array( key, param1, param2, ... ) or array( 'code' => ..., 'info' => ... )
*/
@@ -1363,6 +1501,6 @@ abstract class ApiBase {
* @return string
*/
public static function getBaseVersion() {
- return __CLASS__ . ': $Id: ApiBase.php 82730 2011-02-24 16:03:05Z reedy $';
+ return __CLASS__ . ': $Id: ApiBase.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiBlock.php b/includes/api/ApiBlock.php
index 875b8aeb..8d718ab2 100644
--- a/includes/api/ApiBlock.php
+++ b/includes/api/ApiBlock.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 4, 2007
*
- * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@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
@@ -37,9 +37,6 @@ if ( !defined( 'MEDIAWIKI' ) ) {
*/
class ApiBlock extends ApiBase {
- /**
- * Std ctor.
- */
public function __construct( $main, $action ) {
parent::__construct( $main, $action );
}
@@ -51,56 +48,71 @@ class ApiBlock extends ApiBase {
* of success. If it fails, the result will specify the nature of the error.
*/
public function execute() {
- global $wgUser, $wgBlockAllowsUTEdit;
+ global $wgUser;
$params = $this->extractRequestParams();
if ( $params['gettoken'] ) {
- $res['blocktoken'] = $wgUser->editToken();
+ $res['blocktoken'] = $wgUser->editToken( '', $this->getMain()->getRequest() );
$this->getResult()->addValue( null, $this->getModuleName(), $res );
return;
}
if ( !$wgUser->isAllowed( 'block' ) ) {
- $this->dieUsageMsg( array( 'cantblock' ) );
+ $this->dieUsageMsg( 'cantblock' );
}
# bug 15810: blocked admins should have limited access here
if ( $wgUser->isBlocked() ) {
- $status = IPBlockForm::checkUnblockSelf( $params['user'] );
+ $status = SpecialBlock::checkUnblockSelf( $params['user'] );
if ( $status !== true ) {
$this->dieUsageMsg( array( $status ) );
}
}
if ( $params['hidename'] && !$wgUser->isAllowed( 'hideuser' ) ) {
- $this->dieUsageMsg( array( 'canthide' ) );
+ $this->dieUsageMsg( 'canthide' );
}
- if ( $params['noemail'] && !IPBlockForm::canBlockEmail( $wgUser ) ) {
- $this->dieUsageMsg( array( 'cantblock-email' ) );
+ if ( $params['noemail'] && !SpecialBlock::canBlockEmail( $wgUser ) ) {
+ $this->dieUsageMsg( 'cantblock-email' );
}
- $form = new IPBlockForm( '' );
- $form->BlockAddress = $params['user'];
- $form->BlockReason = ( is_null( $params['reason'] ) ? '' : $params['reason'] );
- $form->BlockReasonList = 'other';
- $form->BlockExpiry = ( $params['expiry'] == 'never' ? 'infinite' : $params['expiry'] );
- $form->BlockOther = '';
- $form->BlockAnonOnly = $params['anononly'];
- $form->BlockCreateAccount = $params['nocreate'];
- $form->BlockEnableAutoblock = $params['autoblock'];
- $form->BlockEmail = $params['noemail'];
- $form->BlockHideName = $params['hidename'];
- $form->BlockAllowUsertalk = $params['allowusertalk'] && $wgBlockAllowsUTEdit;
- $form->BlockReblock = $params['reblock'];
-
- $userID = $expiry = null;
- $retval = $form->doBlock( $userID, $expiry );
- if ( count( $retval ) ) {
+ $data = array(
+ 'Target' => $params['user'],
+ 'Reason' => array(
+ is_null( $params['reason'] ) ? '' : $params['reason'],
+ 'other',
+ is_null( $params['reason'] ) ? '' : $params['reason']
+ ),
+ 'Expiry' => $params['expiry'] == 'never' ? 'infinite' : $params['expiry'],
+ 'HardBlock' => !$params['anononly'],
+ 'CreateAccount' => $params['nocreate'],
+ 'AutoBlock' => $params['autoblock'],
+ 'DisableEmail' => $params['noemail'],
+ 'HideUser' => $params['hidename'],
+ 'DisableUTEdit' => $params['allowusertalk'],
+ 'AlreadyBlocked' => $params['reblock'],
+ 'Watch' => $params['watchuser'],
+ 'Confirm' => true,
+ );
+
+ $retval = SpecialBlock::processForm( $data );
+ if ( $retval !== true ) {
// We don't care about multiple errors, just report one of them
$this->dieUsageMsg( $retval );
}
+ list( $target, /*...*/ ) = SpecialBlock::getTargetAndType( $params['user'] );
$res['user'] = $params['user'];
- $res['userID'] = intval( $userID );
- $res['expiry'] = ( $expiry == Block::infinity() ? 'infinite' : wfTimestamp( TS_ISO_8601, $expiry ) );
+ $res['userID'] = $target instanceof User ? $target->getId() : 0;
+
+ $block = Block::newFromTarget( $target );
+ if( $block instanceof Block ){
+ $res['expiry'] = $block->mExpiry == wfGetDB( DB_SLAVE )->getInfinity()
+ ? 'infinite'
+ : wfTimestamp( TS_ISO_8601, $block->mExpiry );
+ } else {
+ # should be unreachable
+ $res['expiry'] = '';
+ }
+
$res['reason'] = $params['reason'];
if ( $params['anononly'] ) {
$res['anononly'] = '';
@@ -120,6 +132,9 @@ class ApiBlock extends ApiBase {
if ( $params['allowusertalk'] ) {
$res['allowusertalk'] = '';
}
+ if ( $params['watchuser'] ) {
+ $res['watchuser'] = '';
+ }
$this->getResult()->addValue( null, $this->getModuleName(), $res );
}
@@ -149,6 +164,7 @@ class ApiBlock extends ApiBase {
'hidename' => false,
'allowusertalk' => false,
'reblock' => false,
+ 'watchuser' => false,
);
}
@@ -166,6 +182,7 @@ class ApiBlock extends ApiBase {
'hidename' => 'Hide the username from the block log. (Requires the "hideuser" right.)',
'allowusertalk' => 'Allow the user to edit their own talk page (depends on $wgBlockAllowsUTEdit)',
'reblock' => 'If the user is already blocked, overwrite the existing block',
+ 'watchuser' => 'Watch the user/IP\'s user and talk pages',
);
}
@@ -198,7 +215,11 @@ class ApiBlock extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Block';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiBlock.php 77192 2010-11-23 22:05:27Z btongminh $';
+ return __CLASS__ . ': $Id: ApiBlock.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiComparePages.php b/includes/api/ApiComparePages.php
new file mode 100644
index 00000000..d43fa53f
--- /dev/null
+++ b/includes/api/ApiComparePages.php
@@ -0,0 +1,130 @@
+<?php
+/**
+ *
+ * Created on May 1, 2011
+ *
+ * Copyright © 2011 Sam Reed
+ *
+ * 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 ApiComparePages extends ApiBase {
+
+ public function __construct( $main, $action ) {
+ parent::__construct( $main, $action );
+ }
+
+ public function execute() {
+ $params = $this->extractRequestParams();
+
+ $rev1 = $this->revisionOrTitle( $params['fromrev'], $params['fromtitle'] );
+ $rev2 = $this->revisionOrTitle( $params['torev'], $params['totitle'] );
+
+ $de = new DifferenceEngine( null,
+ $rev1,
+ $rev2,
+ null, // rcid
+ true,
+ false );
+
+ $vals = array();
+ if ( isset( $params['fromtitle'] ) ) {
+ $vals['fromtitle'] = $params['fromtitle'];
+ }
+ $vals['fromrevid'] = $rev1;
+ if ( isset( $params['totitle'] ) ) {
+ $vals['totitle'] = $params['totitle'];
+ }
+ $vals['torevid'] = $rev2;
+
+ $difftext = $de->getDiffBody();
+
+ if ( $difftext === false ) {
+ $this->dieUsage( 'The diff cannot be retrieved. ' .
+ 'Maybe one or both revisions do not exist or you do not have permission to view them.', 'baddiff' );
+ } else {
+ ApiResult::setContent( $vals, $difftext );
+ }
+
+ $this->getResult()->addValue( null, $this->getModuleName(), $vals );
+ }
+
+ /**
+ * @param $revision int
+ * @param $titleText string
+ * @return int
+ */
+ private function revisionOrTitle( $revision, $titleText ) {
+ if( $revision ){
+ return $revision;
+ } elseif( $titleText ) {
+ $title = Title::newFromText( $titleText );
+ if( !$title ){
+ $this->dieUsageMsg( array( 'invalidtitle', $titleText ) );
+ }
+ return $title->getLatestRevID();
+ }
+ $this->dieUsage( 'inputneeded', 'A title or a revision number is needed for both the from and the to parameters' );
+ }
+
+ public function getAllowedParams() {
+ return array(
+ 'fromtitle' => null,
+ 'fromrev' => array(
+ ApiBase::PARAM_TYPE => 'integer'
+ ),
+ 'totitle' => null,
+ 'torev' => array(
+ ApiBase::PARAM_TYPE => 'integer'
+ ),
+ );
+ }
+
+ public function getParamDescription() {
+ return array(
+ 'fromtitle' => 'First title to compare',
+ 'fromrev' => 'First revision to compare',
+ 'totitle' => 'Second title to compare',
+ 'torev' => 'Second revision to compare',
+ );
+ }
+ public function getDescription() {
+ return array(
+ 'Get the difference between 2 pages',
+ 'You must pass a revision number or a page title for each part (1 and 2)'
+ );
+ }
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'inputneeded', 'info' => 'A title or a revision is needed' ),
+ array( 'invalidtitle', 'title' ),
+ array( 'code' => 'baddiff', 'info' => 'The diff cannot be retrieved. Maybe one or both revisions do not exist or you do not have permission to view them.' ),
+ ) );
+ }
+
+ protected function getExamples() {
+ return array(
+ 'api.php?action=compare&fromrev=1&torev=2',
+ );
+ }
+
+ public function getVersion() {
+ return __CLASS__ . ': $Id: ApiComparePages.php 92400 2011-07-17 16:51:11Z reedy $';
+ }
+}
diff --git a/includes/api/ApiDelete.php b/includes/api/ApiDelete.php
index fbf62391..58befbfe 100644
--- a/includes/api/ApiDelete.php
+++ b/includes/api/ApiDelete.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Jun 30, 2007
*
- * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@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
@@ -65,7 +65,7 @@ class ApiDelete extends ApiBase {
}
}
if ( !$titleObj->exists() ) {
- $this->dieUsageMsg( array( 'notanarticle' ) );
+ $this->dieUsageMsg( 'notanarticle' );
}
$reason = ( isset( $params['reason'] ) ? $params['reason'] : null );
@@ -146,22 +146,17 @@ class ApiDelete extends ApiBase {
}
$error = '';
- if ( !wfRunHooks( 'ArticleDelete', array( &$article, &$wgUser, &$reason, &$error ) ) ) {
- return array( array( 'hookaborted', $error ) );
- }
-
// Luckily, Article.php provides a reusable delete function that does the hard work for us
- if ( $article->doDeleteArticle( $reason ) ) {
- wfRunHooks( 'ArticleDeleteComplete', array( &$article, &$wgUser, $reason, $article->getId() ) );
+ if ( $article->doDeleteArticle( $reason, false, 0, true, $error ) ) {
return array();
+ } else {
+ return array( array( 'cannotdelete', $article->getTitle()->getPrefixedText() ) );
}
- return array( array( 'cannotdelete', $article->mTitle->getPrefixedText() ) );
}
/**
- * @static
* @param $token
- * @param $title
+ * @param $title Title
* @param $oldimage
* @param $reason
* @param $suppress bool
@@ -255,12 +250,15 @@ class ApiDelete extends ApiBase {
}
public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'invalidtitle', 'title' ),
- array( 'nosuchpageid', 'pageid' ),
- array( 'notanarticle' ),
- array( 'hookaborted', 'error' ),
- ) );
+ return array_merge( parent::getPossibleErrors(),
+ $this->getRequireOnlyOneParameterErrorMessages( array( 'title', 'pageid' ) ),
+ array(
+ array( 'invalidtitle', 'title' ),
+ array( 'nosuchpageid', 'pageid' ),
+ array( 'notanarticle' ),
+ array( 'hookaborted', 'error' ),
+ )
+ );
}
public function needsToken() {
@@ -278,7 +276,11 @@ class ApiDelete extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Delete';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiDelete.php 77141 2010-11-23 10:04:38Z ialex $';
+ return __CLASS__ . ': $Id: ApiDelete.php 104449 2011-11-28 15:52:04Z reedy $';
}
-} \ No newline at end of file
+}
diff --git a/includes/api/ApiDisabled.php b/includes/api/ApiDisabled.php
index f83bfdc9..947267f3 100644
--- a/includes/api/ApiDisabled.php
+++ b/includes/api/ApiDisabled.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 25, 2008
*
- * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@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
@@ -70,6 +70,6 @@ class ApiDisabled extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiDisabled.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiDisabled.php 79969 2011-01-10 22:36:26Z reedy $';
}
}
diff --git a/includes/api/ApiEditPage.php b/includes/api/ApiEditPage.php
index 75cc0ba2..ffc82640 100644
--- a/includes/api/ApiEditPage.php
+++ b/includes/api/ApiEditPage.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on August 16, 2007
*
@@ -50,38 +50,40 @@ class ApiEditPage extends ApiBase {
is_null( $params['prependtext'] ) &&
$params['undo'] == 0 )
{
- $this->dieUsageMsg( array( 'missingtext' ) );
+ $this->dieUsageMsg( 'missingtext' );
}
$titleObj = Title::newFromText( $params['title'] );
if ( !$titleObj || $titleObj->isExternal() ) {
$this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
}
-
- if( $params['redirect'] ) {
- if( $titleObj->isRedirect() ) {
+
+ $apiResult = $this->getResult();
+
+ if ( $params['redirect'] ) {
+ if ( $titleObj->isRedirect() ) {
$oldTitle = $titleObj;
-
+
$titles = Title::newFromRedirectArray( Revision::newFromTitle( $oldTitle )->getText( Revision::FOR_THIS_USER ) );
+ // array_shift( $titles );
$redirValues = array();
foreach ( $titles as $id => $newTitle ) {
-
- if( !isset( $titles[ $id - 1 ] ) ) {
+
+ if ( !isset( $titles[ $id - 1 ] ) ) {
$titles[ $id - 1 ] = $oldTitle;
}
-
+
$redirValues[] = array(
'from' => $titles[ $id - 1 ]->getPrefixedText(),
'to' => $newTitle->getPrefixedText()
);
-
+
$titleObj = $newTitle;
}
-
- $this->getResult()->setIndexedTagName( $redirValues, 'r' );
- $this->getResult()->addValue( null, 'redirects', $redirValues );
+ $apiResult->setIndexedTagName( $redirValues, 'r' );
+ $apiResult->addValue( null, 'redirects', $redirValues );
}
}
@@ -90,10 +92,10 @@ class ApiEditPage extends ApiBase {
$wgTitle = $titleObj;
if ( $params['createonly'] && $titleObj->exists() ) {
- $this->dieUsageMsg( array( 'createonly-exists' ) );
+ $this->dieUsageMsg( 'createonly-exists' );
}
if ( $params['nocreate'] && !$titleObj->exists() ) {
- $this->dieUsageMsg( array( 'nocreate-missing' ) );
+ $this->dieUsageMsg( 'nocreate-missing' );
}
// Now let's check whether we're even allowed to do this
@@ -161,7 +163,7 @@ class ApiEditPage extends ApiBase {
$newtext = $articleObj->getUndoText( $undoRev, $undoafterRev );
if ( $newtext === false ) {
- $this->dieUsageMsg( array( 'undo-failure' ) );
+ $this->dieUsageMsg( 'undo-failure' );
}
$params['text'] = $newtext;
// If no summary was given and we only undid one rev,
@@ -173,10 +175,12 @@ class ApiEditPage extends ApiBase {
// See if the MD5 hash checks out
if ( !is_null( $params['md5'] ) && md5( $toMD5 ) !== $params['md5'] ) {
- $this->dieUsageMsg( array( 'hashcheckfailed' ) );
+ $this->dieUsageMsg( 'hashcheckfailed' );
}
$ep = new EditPage( $articleObj );
+ $ep->setContextTitle( $titleObj );
+
// EditPage wants to parse its stuff from a WebRequest
// That interface kind of sucks, but it's workable
$reqArr = array(
@@ -251,10 +255,10 @@ class ApiEditPage extends ApiBase {
if ( !wfRunHooks( 'APIEditBeforeSave', array( $ep, $ep->textbox1, &$r ) ) ) {
if ( count( $r ) ) {
$r['result'] = 'Failure';
- $this->getResult()->addValue( null, $this->getModuleName(), $r );
+ $apiResult->addValue( null, $this->getModuleName(), $r );
return;
} else {
- $this->dieUsageMsg( array( 'hookaborted' ) );
+ $this->dieUsageMsg( 'hookaborted' );
}
}
@@ -262,65 +266,65 @@ class ApiEditPage extends ApiBase {
$oldRevId = $articleObj->getRevIdFetched();
$result = null;
// Fake $wgRequest for some hooks inside EditPage
- // FIXME: This interface SUCKS
+ // @todo FIXME: This interface SUCKS
$oldRequest = $wgRequest;
$wgRequest = $req;
- $retval = $ep->internalAttemptSave( $result, $wgUser->isAllowed( 'bot' ) && $params['bot'] );
+ $status = $ep->internalAttemptSave( $result, $wgUser->isAllowed( 'bot' ) && $params['bot'] );
$wgRequest = $oldRequest;
global $wgMaxArticleSize;
- switch( $retval ) {
+ switch( $status->value ) {
case EditPage::AS_HOOK_ERROR:
case EditPage::AS_HOOK_ERROR_EXPECTED:
- $this->dieUsageMsg( array( 'hookaborted' ) );
+ $this->dieUsageMsg( 'hookaborted' );
case EditPage::AS_IMAGE_REDIRECT_ANON:
- $this->dieUsageMsg( array( 'noimageredirect-anon' ) );
+ $this->dieUsageMsg( 'noimageredirect-anon' );
case EditPage::AS_IMAGE_REDIRECT_LOGGED:
- $this->dieUsageMsg( array( 'noimageredirect-logged' ) );
+ $this->dieUsageMsg( 'noimageredirect-logged' );
case EditPage::AS_SPAM_ERROR:
$this->dieUsageMsg( array( 'spamdetected', $result['spam'] ) );
case EditPage::AS_FILTERING:
- $this->dieUsageMsg( array( 'filtered' ) );
+ $this->dieUsageMsg( 'filtered' );
case EditPage::AS_BLOCKED_PAGE_FOR_USER:
- $this->dieUsageMsg( array( 'blockedtext' ) );
+ $this->dieUsageMsg( 'blockedtext' );
case EditPage::AS_MAX_ARTICLE_SIZE_EXCEEDED:
case EditPage::AS_CONTENT_TOO_BIG:
$this->dieUsageMsg( array( 'contenttoobig', $wgMaxArticleSize ) );
case EditPage::AS_READ_ONLY_PAGE_ANON:
- $this->dieUsageMsg( array( 'noedit-anon' ) );
+ $this->dieUsageMsg( 'noedit-anon' );
case EditPage::AS_READ_ONLY_PAGE_LOGGED:
- $this->dieUsageMsg( array( 'noedit' ) );
+ $this->dieUsageMsg( 'noedit' );
case EditPage::AS_READ_ONLY_PAGE:
$this->dieReadOnly();
case EditPage::AS_RATE_LIMITED:
- $this->dieUsageMsg( array( 'actionthrottledtext' ) );
+ $this->dieUsageMsg( 'actionthrottledtext' );
case EditPage::AS_ARTICLE_WAS_DELETED:
- $this->dieUsageMsg( array( 'wasdeleted' ) );
+ $this->dieUsageMsg( 'wasdeleted' );
case EditPage::AS_NO_CREATE_PERMISSION:
- $this->dieUsageMsg( array( 'nocreate-loggedin' ) );
+ $this->dieUsageMsg( 'nocreate-loggedin' );
case EditPage::AS_BLANK_ARTICLE:
- $this->dieUsageMsg( array( 'blankpage' ) );
+ $this->dieUsageMsg( 'blankpage' );
case EditPage::AS_CONFLICT_DETECTED:
- $this->dieUsageMsg( array( 'editconflict' ) );
+ $this->dieUsageMsg( 'editconflict' );
// case EditPage::AS_SUMMARY_NEEDED: Can't happen since we set wpIgnoreBlankSummary
case EditPage::AS_TEXTBOX_EMPTY:
- $this->dieUsageMsg( array( 'emptynewsection' ) );
+ $this->dieUsageMsg( 'emptynewsection' );
case EditPage::AS_SUCCESS_NEW_ARTICLE:
$r['new'] = '';
@@ -346,20 +350,17 @@ class ApiEditPage extends ApiBase {
break;
case EditPage::AS_SUMMARY_NEEDED:
- $this->dieUsageMsg( array( 'summaryrequired' ) );
+ $this->dieUsageMsg( 'summaryrequired' );
case EditPage::AS_END:
- // This usually means some kind of race condition
- // or DB weirdness occurred. Fall through to throw an unknown
- // error.
-
- // This needs fixing higher up, as Article::doEdit should be
- // used rather than Article::updateArticle, so that specific
- // error conditions can be returned
+ // $status came from WikiPage::doEdit()
+ $errors = $status->getErrorsArray();
+ $this->dieUsageMsg( $errors[0] ); // TODO: Add new errors to message map
+ break;
default:
- $this->dieUsageMsg( array( 'unknownerror', $retval ) );
+ $this->dieUsageMsg( array( 'unknownerror', $status->value ) );
}
- $this->getResult()->addValue( null, $this->getModuleName(), $r );
+ $apiResult->addValue( null, $this->getModuleName(), $r );
}
public function mustBePosted() {
@@ -406,6 +407,8 @@ class ApiEditPage extends ApiBase {
array( 'unknownerror', 'retval' ),
array( 'code' => 'nosuchsection', 'info' => 'There is no section section.' ),
array( 'code' => 'invalidsection', 'info' => 'The section parameter must be set to an integer or \'new\'' ),
+ array( 'customcssprotected' ),
+ array( 'customjsprotected' ),
) );
}
@@ -468,12 +471,14 @@ class ApiEditPage extends ApiBase {
'title' => 'Page title',
'section' => 'Section number. 0 for the top section, \'new\' for a new section',
'text' => 'Page content',
- 'token' => 'Edit token. You can get one of these through prop=info',
+ 'token' => array( 'Edit token. You can get one of these through prop=info.',
+ 'The token should always be sent as the last parameter, or at least, after the text parameter'
+ ),
'summary' => 'Edit summary. Also section title when section=new',
'minor' => 'Minor edit',
'notminor' => 'Non-minor edit',
'bot' => 'Mark this edit as bot',
- 'basetimestamp' => array( 'Timestamp of the base revision (gotten through prop=revisions&rvprop=timestamp).',
+ 'basetimestamp' => array( 'Timestamp of the base revision (obtained through prop=revisions&rvprop=timestamp).',
'Used to detect edit conflicts; leave unset to ignore conflicts.'
),
'starttimestamp' => array( 'Timestamp when you obtained the edit token.',
@@ -516,7 +521,11 @@ class ApiEditPage extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Edit';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiEditPage.php 90492 2011-06-20 22:39:10Z reedy $';
+ return __CLASS__ . ': $Id: ApiEditPage.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiEmailUser.php b/includes/api/ApiEmailUser.php
index ab58eb18..9ce43183 100644
--- a/includes/api/ApiEmailUser.php
+++ b/includes/api/ApiEmailUser.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on June 1, 2008
*
@@ -144,7 +144,11 @@ class ApiEmailUser extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:E-mail';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiEmailUser.php 85354 2011-04-04 18:25:31Z demon $';
+ return __CLASS__ . ': $Id: ApiEmailUser.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiExpandTemplates.php b/includes/api/ApiExpandTemplates.php
index 6f2df1b8..6ec18463 100644
--- a/includes/api/ApiExpandTemplates.php
+++ b/includes/api/ApiExpandTemplates.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 05, 2007
*
@@ -61,6 +61,10 @@ class ApiExpandTemplates extends ApiBase {
global $wgParser;
$options = new ParserOptions();
+ if ( $params['includecomments'] ) {
+ $options->setRemoveComments( false );
+ }
+
if ( $params['generatexml'] ) {
$wgParser->startExternalParse( $title_obj, $options, OT_PREPROCESS );
$dom = $wgParser->preprocessToDom( $params['text'] );
@@ -86,8 +90,12 @@ class ApiExpandTemplates extends ApiBase {
'title' => array(
ApiBase::PARAM_DFLT => 'API',
),
- 'text' => null,
+ 'text' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_REQUIRED => true,
+ ),
'generatexml' => false,
+ 'includecomments' => false,
);
}
@@ -96,11 +104,12 @@ class ApiExpandTemplates extends ApiBase {
'text' => 'Wikitext to convert',
'title' => 'Title of page',
'generatexml' => 'Generate XML parse tree',
+ 'includecomments' => 'Whether to include HTML comments in the output',
);
}
public function getDescription() {
- return 'This module expand all templates in wikitext';
+ return 'Expands all templates in wikitext';
}
protected function getExamples() {
@@ -109,7 +118,11 @@ class ApiExpandTemplates extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Parsing_wikitext#expandtemplates';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiExpandTemplates.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiExpandTemplates.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiFeedContributions.php b/includes/api/ApiFeedContributions.php
new file mode 100644
index 00000000..c06b71af
--- /dev/null
+++ b/includes/api/ApiFeedContributions.php
@@ -0,0 +1,207 @@
+<?php
+
+/**
+ *
+ *
+ * Created on June 06, 2011
+ *
+ * Copyright © 2011 Sam Reed
+ *
+ * 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 API
+ */
+class ApiFeedContributions extends ApiBase {
+
+ public function __construct( $main, $action ) {
+ parent::__construct( $main, $action );
+ }
+
+ /**
+ * This module uses a custom feed wrapper printer.
+ */
+ public function getCustomPrinter() {
+ return new ApiFormatFeedWrapper( $this->getMain() );
+ }
+
+ public function execute() {
+ $params = $this->extractRequestParams();
+
+ global $wgFeed, $wgFeedClasses, $wgSitename, $wgLanguageCode;
+
+ if( !$wgFeed ) {
+ $this->dieUsage( 'Syndication feeds are not available', 'feed-unavailable' );
+ }
+
+ if( !isset( $wgFeedClasses[ $params['feedformat'] ] ) ) {
+ $this->dieUsage( 'Invalid subscription feed type', 'feed-invalid' );
+ }
+
+ global $wgMiserMode;
+ if ( $params['showsizediff'] && $wgMiserMode ) {
+ $this->dieUsage( 'Size difference is disabled in Miser Mode', 'sizediffdisabled' );
+ }
+
+ $msg = wfMsgForContent( 'Contributions' );
+ $feedTitle = $wgSitename . ' - ' . $msg . ' [' . $wgLanguageCode . ']';
+ $feedUrl = SpecialPage::getTitleFor( 'Contributions', $params['user'] )->getFullURL();
+
+ $target = $params['user'] == 'newbies'
+ ? 'newbies'
+ : Title::makeTitleSafe( NS_USER, $params['user'] )->getText();
+
+ $feed = new $wgFeedClasses[$params['feedformat']] (
+ $feedTitle,
+ htmlspecialchars( $msg ),
+ $feedUrl
+ );
+
+ $pager = new ContribsPager( array(
+ 'target' => $target,
+ 'namespace' => $params['namespace'],
+ 'year' => $params['year'],
+ 'month' => $params['month'],
+ 'tagFilter' => $params['tagfilter'],
+ 'deletedOnly' => $params['deletedonly'],
+ 'topOnly' => $params['toponly'],
+ 'showSizeDiff' => $params['showsizediff'],
+ ) );
+
+ $feedItems = array();
+ if( $pager->getNumRows() > 0 ) {
+ foreach ( $pager->mResult as $row ) {
+ $feedItems[] = $this->feedItem( $row );
+ }
+ }
+
+ ApiFormatFeedWrapper::setResult( $this->getResult(), $feed, $feedItems );
+ }
+
+ protected function feedItem( $row ) {
+ $title = Title::MakeTitle( intval( $row->page_namespace ), $row->page_title );
+ if( $title ) {
+ $date = $row->rev_timestamp;
+ $comments = $title->getTalkPage()->getFullURL();
+ $revision = Revision::newFromRow( $row);
+
+ return new FeedItem(
+ $title->getPrefixedText(),
+ $this->feedItemDesc( $revision ),
+ $title->getFullURL(),
+ $date,
+ $this->feedItemAuthor( $revision ),
+ $comments
+ );
+ } else {
+ return null;
+ }
+ }
+
+ /**
+ * @param $revision Revision
+ * @return string
+ */
+ protected function feedItemAuthor( $revision ) {
+ return $revision->getUserText();
+ }
+
+ /**
+ * @param $revision Revision
+ * @return string
+ */
+ protected function feedItemDesc( $revision ) {
+ if( $revision ) {
+ return '<p>' . htmlspecialchars( $revision->getUserText() ) . wfMsgForContent( 'colon-separator' ) .
+ htmlspecialchars( FeedItem::stripComment( $revision->getComment() ) ) .
+ "</p>\n<hr />\n<div>" .
+ nl2br( htmlspecialchars( $revision->getText() ) ) . "</div>";
+ }
+ return '';
+ }
+
+ public function getAllowedParams() {
+ global $wgFeedClasses;
+ $feedFormatNames = array_keys( $wgFeedClasses );
+ return array (
+ 'feedformat' => array(
+ ApiBase::PARAM_DFLT => 'rss',
+ ApiBase::PARAM_TYPE => $feedFormatNames
+ ),
+ 'user' => array(
+ ApiBase::PARAM_TYPE => 'user',
+ ApiBase::PARAM_REQUIRED => true,
+ ),
+ 'namespace' => array(
+ ApiBase::PARAM_TYPE => 'namespace',
+ ApiBase::PARAM_ISMULTI => true
+ ),
+ 'year' => array(
+ ApiBase::PARAM_TYPE => 'integer'
+ ),
+ 'month' => array(
+ ApiBase::PARAM_TYPE => 'integer'
+ ),
+ 'tagfilter' => array(
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_TYPE => array_values( ChangeTags::listDefinedTags() ),
+ ApiBase::PARAM_DFLT => '',
+ ),
+ 'deletedonly' => false,
+ 'toponly' => false,
+ 'showsizediff' => false,
+ );
+ }
+
+ public function getParamDescription() {
+ return array(
+ 'feedformat' => 'The format of the feed',
+ 'user' => 'What users to get the contributions for',
+ 'namespace' => 'What namespace to filter the contributions by',
+ 'year' => 'From year (and earlier)',
+ 'month' => 'From month (and earlier)',
+ 'tagfilter' => 'Filter contributions that have these tags',
+ 'deletedonly' => 'Show only deleted contributions',
+ 'toponly' => 'Only show edits that are latest revisions',
+ 'showsizediff' => 'Show the size difference between revisions. Disabled in Miser Mode',
+ );
+ }
+
+ public function getDescription() {
+ return 'Returns a user contributions feed';
+ }
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'feed-unavailable', 'info' => 'Syndication feeds are not available' ),
+ array( 'code' => 'feed-invalid', 'info' => 'Invalid subscription feed type' ),
+ array( 'code' => 'sizediffdisabled', 'info' => 'Size difference is disabled in Miser Mode' ),
+ ) );
+ }
+
+ protected function getExamples() {
+ return array(
+ 'api.php?action=feedcontributions&user=Reedy',
+ );
+ }
+
+ public function getVersion() {
+ return __CLASS__ . ': $Id: ApiFeedContributions.php 95607 2011-08-27 19:28:13Z hashar $';
+ }
+} \ No newline at end of file
diff --git a/includes/api/ApiFeedWatchlist.php b/includes/api/ApiFeedWatchlist.php
index e1ba61f6..75ce7ca0 100644
--- a/includes/api/ApiFeedWatchlist.php
+++ b/includes/api/ApiFeedWatchlist.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 13, 2006
*
@@ -56,11 +56,19 @@ class ApiFeedWatchlist extends ApiBase {
* Wrap the result as an RSS/Atom feed.
*/
public function execute() {
- global $wgFeedClasses, $wgFeedLimit, $wgSitename, $wgLanguageCode;
+ global $wgFeed, $wgFeedClasses, $wgFeedLimit, $wgSitename, $wgLanguageCode;
try {
$params = $this->extractRequestParams();
+ if( !$wgFeed ) {
+ $this->dieUsage( 'Syndication feeds are not available', 'feed-unavailable' );
+ }
+
+ if( !isset( $wgFeedClasses[ $params['feedformat'] ] ) ) {
+ $this->dieUsage( 'Invalid subscription feed type', 'feed-invalid' );
+ }
+
// limit to the number of hours going from now back
$endTime = wfTimestamp( TS_MW, time() - intval( $params['hours'] * 60 * 60 ) );
@@ -90,7 +98,7 @@ class ApiFeedWatchlist extends ApiBase {
}
// Check for 'allrev' parameter, and if found, show all revisions to each page on wl.
- if ( !is_null( $params['allrev'] ) ) {
+ if ( $params['allrev'] ) {
$fauxReqArr['wlallrev'] = '';
}
@@ -109,10 +117,12 @@ class ApiFeedWatchlist extends ApiBase {
$feedItems[] = $this->createFeedItem( $info );
}
- $feedTitle = $wgSitename . ' - ' . wfMsgForContent( 'watchlist' ) . ' [' . $wgLanguageCode . ']';
+ $msg = wfMsgForContent( 'watchlist' );
+
+ $feedTitle = $wgSitename . ' - ' . $msg . ' [' . $wgLanguageCode . ']';
$feedUrl = SpecialPage::getTitleFor( 'Watchlist' )->getFullURL();
- $feed = new $wgFeedClasses[$params['feedformat']] ( $feedTitle, htmlspecialchars( wfMsgForContent( 'watchlist' ) ), $feedUrl );
+ $feed = new $wgFeedClasses[$params['feedformat']] ( $feedTitle, htmlspecialchars( $msg ), $feedUrl );
ApiFormatFeedWrapper::setResult( $this->getResult(), $feed, $feedItems );
@@ -171,7 +181,7 @@ class ApiFeedWatchlist extends ApiBase {
ApiBase::PARAM_MIN => 1,
ApiBase::PARAM_MAX => 72,
),
- 'allrev' => null,
+ 'allrev' => false,
'wlowner' => array(
ApiBase::PARAM_TYPE => 'user'
),
@@ -189,22 +199,33 @@ class ApiFeedWatchlist extends ApiBase {
'allrev' => 'Include multiple revisions of the same page within given timeframe',
'wlowner' => "The user whose watchlist you want (must be accompanied by {$this->getModulePrefix()}token if it's not you)",
'wltoken' => 'Security token that requested user set in their preferences',
- 'linktodiffs'=> 'Link to change differences instead of article pages'
+ 'linktodiffs' => 'Link to change differences instead of article pages'
);
}
public function getDescription() {
- return 'This module returns a watchlist feed';
+ return 'Returns a watchlist feed';
+ }
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'feed-unavailable', 'info' => 'Syndication feeds are not available' ),
+ array( 'code' => 'feed-invalid', 'info' => 'Invalid subscription feed type' ),
+ ) );
}
protected function getExamples() {
return array(
'api.php?action=feedwatchlist',
- 'api.php?action=feedwatchlist&allrev=allrev&linktodiffs=&hours=6'
+ 'api.php?action=feedwatchlist&allrev=&linktodiffs=&hours=6'
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Watchlist_feed';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFeedWatchlist.php 77674 2010-12-03 19:47:22Z catrope $';
+ return __CLASS__ . ': $Id: ApiFeedWatchlist.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiFileRevert.php b/includes/api/ApiFileRevert.php
new file mode 100644
index 00000000..1540fe6c
--- /dev/null
+++ b/includes/api/ApiFileRevert.php
@@ -0,0 +1,189 @@
+<?php
+/**
+ *
+ *
+ * Created on March 5, 2011
+ *
+ * Copyright © 2011 Bryan Tong Minh <Bryan.TongMinh@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
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ // Eclipse helper - will be ignored in production
+ require_once( "ApiBase.php" );
+}
+
+/**
+ * @ingroup API
+ */
+class ApiFileRevert extends ApiBase {
+
+ /**
+ * @var File
+ */
+ protected $file;
+ protected $archiveName;
+
+ protected $params;
+
+ public function __construct( $main, $action ) {
+ parent::__construct( $main, $action );
+ }
+
+ public function execute() {
+ global $wgUser;
+
+ $this->params = $this->extractRequestParams();
+ // Extract the file and archiveName from the request parameters
+ $this->validateParameters();
+
+ // Check whether we're allowed to revert this file
+ $this->checkPermissions( $wgUser );
+
+ $sourceUrl = $this->file->getArchiveVirtualUrl( $this->archiveName );
+ $status = $this->file->upload( $sourceUrl, $this->params['comment'], $this->params['comment'] );
+
+ if ( $status->isGood() ) {
+ $result = array( 'result' => 'Success' );
+ } else {
+ $result = array(
+ 'result' => 'Failure',
+ 'errors' => $this->getResult()->convertStatusToArray( $status ),
+ );
+ }
+
+ $this->getResult()->addValue( null, $this->getModuleName(), $result );
+
+ }
+
+ /**
+ * Checks that the user has permissions to perform this revert.
+ * Dies with usage message on inadequate permissions.
+ * @param $user User The user to check.
+ */
+ protected function checkPermissions( $user ) {
+ $permissionErrors = array_merge(
+ $this->file->getTitle()->getUserPermissionsErrors( 'edit' , $user ),
+ $this->file->getTitle()->getUserPermissionsErrors( 'upload' , $user )
+ );
+
+ if ( $permissionErrors ) {
+ $this->dieUsageMsg( $permissionErrors[0] );
+ }
+ }
+
+ /**
+ * Validate the user parameters and set $this->archiveName and $this->file.
+ * Throws an error if validation fails
+ */
+ protected function validateParameters() {
+ // Validate the input title
+ $title = Title::makeTitleSafe( NS_FILE, $this->params['filename'] );
+ if ( is_null( $title ) ) {
+ $this->dieUsageMsg( array( 'invalidtitle', $this->params['filename'] ) );
+ }
+ // Check if the file really exists
+ $this->file = wfLocalFile( $title );
+ if ( !$this->file->exists() ) {
+ $this->dieUsageMsg( 'notanarticle' );
+ }
+
+ // Check if the archivename is valid for this file
+ $this->archiveName = $this->params['archivename'];
+ $oldFile = RepoGroup::singleton()->getLocalRepo()->newFromArchiveName( $title, $this->archiveName );
+ if ( !$oldFile->exists() ) {
+ $this->dieUsageMsg( 'filerevert-badversion' );
+ }
+ }
+
+ public function mustBePosted() {
+ return true;
+ }
+
+ public function isWriteMode() {
+ return true;
+ }
+
+ public function getAllowedParams() {
+ return array(
+ 'filename' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_REQUIRED => true,
+ ),
+ 'comment' => array(
+ ApiBase::PARAM_DFLT => '',
+ ),
+ 'archivename' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_REQUIRED => true,
+ ),
+ 'token' => null,
+ );
+
+ }
+
+ public function getParamDescription() {
+ $params = array(
+ 'filename' => 'Target filename',
+ 'token' => 'Edit token. You can get one of these through prop=info',
+ 'comment' => 'Upload comment',
+ 'archivename' => 'Archive name of the revision to revert to',
+ );
+
+ return $params;
+
+ }
+
+ public function getDescription() {
+ return array(
+ 'Revert a file to an old version'
+ );
+ }
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(),
+ array(
+ array( 'mustbeloggedin', 'upload' ),
+ array( 'badaccess-groups' ),
+ array( 'invalidtitle', 'title' ),
+ array( 'notanarticle' ),
+ array( 'filerevert-badversion' ),
+ )
+ );
+ }
+
+ public function needsToken() {
+ return true;
+ }
+
+ public function getTokenSalt() {
+ return '';
+ }
+
+ protected function getExamples() {
+ return array(
+ 'Revert Wiki.png to the version of 20110305152740:',
+ ' api.php?action=filerevert&filename=Wiki.png&comment=Revert&archivename=20110305152740!Wiki.png&token=+\\',
+ );
+ }
+
+ public function getVersion() {
+ return __CLASS__ . ': $Id: ApiFileRevert.php 92400 2011-07-17 16:51:11Z reedy $';
+ }
+}
diff --git a/includes/api/ApiFormatBase.php b/includes/api/ApiFormatBase.php
index 9d1dfbc1..ce881599 100644
--- a/includes/api/ApiFormatBase.php
+++ b/includes/api/ApiFormatBase.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 19, 2006
*
@@ -146,11 +146,11 @@ abstract class ApiFormatBase extends ApiBase {
return; // skip any initialization
}
- header( "Content-Type: $mime; charset=utf-8" );
+ $this->getMain()->getRequest()->response()->header( "Content-Type: $mime; charset=utf-8" );
if ( $isHtml ) {
?>
-<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
+<!DOCTYPE HTML>
<html>
<head>
<?php if ( $this->mUnescapeAmps ) {
@@ -169,7 +169,7 @@ abstract class ApiFormatBase extends ApiBase {
<small>
You are looking at the HTML representation of the <?php echo( $this->mFormat ); ?> format.<br />
HTML is good for debugging, but probably is not suitable for your application.<br />
-See <a href='http://www.mediawiki.org/wiki/API'>complete documentation</a>, or
+See <a href='https://www.mediawiki.org/wiki/API'>complete documentation</a>, or
<a href='<?php echo( $script ); ?>'>API help</a> for more information.
</small>
<?php
@@ -257,15 +257,13 @@ See <a href='http://www.mediawiki.org/wiki/API'>complete documentation</a>, or
* @return string
*/
protected function formatHTML( $text ) {
- global $wgUrlProtocols;
-
// Escape everything first for full coverage
$text = htmlspecialchars( $text );
// encode all comments or tags as safe blue strings
$text = preg_replace( '/\&lt;(!--.*?--|.*?)\&gt;/', '<span style="color:blue;">&lt;\1&gt;</span>', $text );
// identify URLs
- $protos = implode( "|", $wgUrlProtocols );
+ $protos = wfUrlProtocolsWithoutProtRel();
// This regex hacks around bug 13218 (&quot; included in the URL)
$text = preg_replace( "#(($protos).*?)(&quot;)?([ \\'\"<>\n]|&lt;|&gt;|&quot;)#", '<a href="\\1">\\1</a>\\3\\4', $text );
// identify requests to api.php
@@ -294,12 +292,16 @@ See <a href='http://www.mediawiki.org/wiki/API'>complete documentation</a>, or
return 'api.php?action=query&meta=siteinfo&siprop=namespaces&format=' . $this->getModuleName();
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Data_formats';
+ }
+
public function getDescription() {
return $this->getIsHtml() ? ' (pretty-print in HTML)' : '';
}
public static function getBaseVersion() {
- return __CLASS__ . ': $Id: ApiFormatBase.php 75970 2010-11-04 00:55:30Z reedy $';
+ return __CLASS__ . ': $Id: ApiFormatBase.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
@@ -368,6 +370,6 @@ class ApiFormatFeedWrapper extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatBase.php 75970 2010-11-04 00:55:30Z reedy $';
+ return __CLASS__ . ': $Id: ApiFormatBase.php 104449 2011-11-28 15:52:04Z reedy $';
}
-} \ No newline at end of file
+}
diff --git a/includes/api/ApiFormatDbg.php b/includes/api/ApiFormatDbg.php
index d4aeb0b8..00b03494 100644
--- a/includes/api/ApiFormatDbg.php
+++ b/includes/api/ApiFormatDbg.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 22, 2006
*
- * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@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
@@ -55,6 +55,6 @@ class ApiFormatDbg extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatDbg.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiFormatDbg.php 78829 2010-12-22 20:52:06Z reedy $';
}
}
diff --git a/includes/api/ApiFormatDump.php b/includes/api/ApiFormatDump.php
index 6197563d..b88572e9 100644
--- a/includes/api/ApiFormatDump.php
+++ b/includes/api/ApiFormatDump.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on August 8, 2010
*
@@ -59,6 +59,6 @@ class ApiFormatDump extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id$';
+ return __CLASS__ . ': $Id: ApiFormatDump.php 79969 2011-01-10 22:36:26Z reedy $';
}
}
diff --git a/includes/api/ApiFormatJson.php b/includes/api/ApiFormatJson.php
index 7c02baa0..92689084 100644
--- a/includes/api/ApiFormatJson.php
+++ b/includes/api/ApiFormatJson.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 19, 2006
*
@@ -97,6 +97,6 @@ class ApiFormatJson extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatJson.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiFormatJson.php 78829 2010-12-22 20:52:06Z reedy $';
}
}
diff --git a/includes/api/ApiFormatPhp.php b/includes/api/ApiFormatPhp.php
index e83941d4..010966d6 100644
--- a/includes/api/ApiFormatPhp.php
+++ b/includes/api/ApiFormatPhp.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 22, 2006
*
@@ -52,6 +52,6 @@ class ApiFormatPhp extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatPhp.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiFormatPhp.php 78829 2010-12-22 20:52:06Z reedy $';
}
}
diff --git a/includes/api/ApiFormatRaw.php b/includes/api/ApiFormatRaw.php
index 98a50652..3b0c10ea 100644
--- a/includes/api/ApiFormatRaw.php
+++ b/includes/api/ApiFormatRaw.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Feb 2, 2009
*
- * Copyright © 2009 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2009 Roan Kattouw <Firstname>.<Lastname>@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
@@ -38,7 +38,7 @@ class ApiFormatRaw extends ApiFormatBase {
/**
* Constructor
* @param $main ApiMain object
- * @param $errorFallback Formatter object to fall back on for errors
+ * @param $errorFallback ApiFormatBase object to fall back on for errors
*/
public function __construct( $main, $errorFallback ) {
parent::__construct( $main, 'raw' );
@@ -73,6 +73,6 @@ class ApiFormatRaw extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatRaw.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiFormatRaw.php 82429 2011-02-19 00:30:18Z reedy $';
}
}
diff --git a/includes/api/ApiFormatTxt.php b/includes/api/ApiFormatTxt.php
index bbb268f1..bb5a3ba1 100644
--- a/includes/api/ApiFormatTxt.php
+++ b/includes/api/ApiFormatTxt.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 22, 2006
*
- * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@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
@@ -55,6 +55,6 @@ class ApiFormatTxt extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatTxt.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiFormatTxt.php 78829 2010-12-22 20:52:06Z reedy $';
}
}
diff --git a/includes/api/ApiFormatWddx.php b/includes/api/ApiFormatWddx.php
index 6c1e3066..2598cc55 100644
--- a/includes/api/ApiFormatWddx.php
+++ b/includes/api/ApiFormatWddx.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 22, 2006
*
@@ -117,6 +117,6 @@ class ApiFormatWddx extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatWddx.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiFormatWddx.php 78829 2010-12-22 20:52:06Z reedy $';
}
}
diff --git a/includes/api/ApiFormatXml.php b/includes/api/ApiFormatXml.php
index 45ab73ef..3bdfdfa3 100644
--- a/includes/api/ApiFormatXml.php
+++ b/includes/api/ApiFormatXml.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 19, 2006
*
@@ -36,7 +36,9 @@ if ( !defined( 'MEDIAWIKI' ) ) {
class ApiFormatXml extends ApiFormatBase {
private $mRootElemName = 'api';
+ public static $namespace = 'http://www.mediawiki.org/xml/api/';
private $mDoubleQuote = false;
+ private $mIncludeNamespace = false;
private $mXslt = null;
public function __construct( $main, $format ) {
@@ -58,15 +60,22 @@ class ApiFormatXml extends ApiFormatBase {
public function execute() {
$params = $this->extractRequestParams();
$this->mDoubleQuote = $params['xmldoublequote'];
+ $this->mIncludeNamespace = $params['includexmlnamespace'];
$this->mXslt = $params['xslt'];
$this->printText( '<?xml version="1.0"?>' );
if ( !is_null( $this->mXslt ) ) {
$this->addXslt();
}
+ if ( $this->mIncludeNamespace ) {
+ $data = array( 'xmlns' => self::$namespace ) + $this->getResultData();
+ } else {
+ $data = $this->getResultData();
+ }
+
$this->printText(
self::recXmlPrint( $this->mRootElemName,
- $this->getResultData(),
+ $data,
$this->getIsHtml() ? - 2 : null,
$this->mDoubleQuote
)
@@ -85,6 +94,13 @@ class ApiFormatXml extends ApiFormatBase {
*
* If neither key is found, all keys become element names, and values become element content.
* The method is recursive, so the same rules apply to any sub-arrays.
+ *
+ * @param $elemName
+ * @param $elemValue
+ * @param $indent
+ * @param $doublequote bool
+ *
+ * @return string
*/
public static function recXmlPrint( $elemName, $elemValue, $indent, $doublequote = false ) {
$retval = '';
@@ -193,6 +209,7 @@ class ApiFormatXml extends ApiFormatBase {
return array(
'xmldoublequote' => false,
'xslt' => null,
+ 'includexmlnamespace' => false,
);
}
@@ -200,6 +217,7 @@ class ApiFormatXml extends ApiFormatBase {
return array(
'xmldoublequote' => 'If specified, double quotes all attributes and content',
'xslt' => 'If specified, adds <xslt> as stylesheet',
+ 'includexmlnamespace' => 'If specified, adds an XML namespace'
);
}
@@ -208,6 +226,6 @@ class ApiFormatXml extends ApiFormatBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatXml.php 73753 2010-09-25 16:56:03Z reedy $';
+ return __CLASS__ . ': $Id: ApiFormatXml.php 104476 2011-11-28 20:08:17Z reedy $';
}
}
diff --git a/includes/api/ApiFormatYaml.php b/includes/api/ApiFormatYaml.php
index ccf52746..d62bbbba 100644
--- a/includes/api/ApiFormatYaml.php
+++ b/includes/api/ApiFormatYaml.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 19, 2006
*
@@ -33,25 +33,17 @@ if ( !defined( 'MEDIAWIKI' ) ) {
* API YAML output formatter
* @ingroup API
*/
-class ApiFormatYaml extends ApiFormatBase {
-
- public function __construct( $main, $format ) {
- parent::__construct( $main, $format );
- }
+class ApiFormatYaml extends ApiFormatJson {
public function getMimeType() {
return 'application/yaml';
}
- public function execute() {
- $this->printText( Spyc::YAMLDump( $this->getResultData() ) );
- }
-
public function getDescription() {
return 'Output data in YAML format' . parent::getDescription();
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiFormatYaml.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiFormatYaml.php 86302 2011-04-18 11:42:44Z reedy $';
}
}
diff --git a/includes/api/ApiHelp.php b/includes/api/ApiHelp.php
index eedbde13..4b2ced7e 100644
--- a/includes/api/ApiHelp.php
+++ b/includes/api/ApiHelp.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 6, 2006
*
@@ -93,6 +93,11 @@ class ApiHelp extends ApiBase {
$result->addValue( null, $this->getModuleName(), $r );
}
+ /**
+ * @param $module ApiBase
+ * @param $type String What type of request is this? e.g. action, query, list, prop, meta, format
+ * @return string
+ */
private function buildModuleHelp( $module, $type ) {
$msg = ApiMain::makeHelpMsgHeader( $module, $type );
@@ -149,7 +154,15 @@ class ApiHelp extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return array(
+ 'https://www.mediawiki.org/wiki/API:Main_page',
+ 'https://www.mediawiki.org/wiki/API:FAQ',
+ 'https://www.mediawiki.org/wiki/API:Quick_start_guide',
+ );
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiHelp.php 73863 2010-09-28 02:33:43Z brion $';
+ return __CLASS__ . ': $Id: ApiHelp.php 104439 2011-11-28 15:22:23Z reedy $';
}
}
diff --git a/includes/api/ApiImport.php b/includes/api/ApiImport.php
index 1b5153f9..a1e5709a 100644
--- a/includes/api/ApiImport.php
+++ b/includes/api/ApiImport.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Feb 4, 2009
*
- * Copyright © 2009 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2009 Roan Kattouw <Firstname>.<Lastname>@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
@@ -42,13 +42,14 @@ class ApiImport extends ApiBase {
public function execute() {
global $wgUser;
- if ( !$wgUser->isAllowed( 'import' ) ) {
- $this->dieUsageMsg( array( 'cantimport' ) );
- }
+
$params = $this->extractRequestParams();
$isUpload = false;
if ( isset( $params['interwikisource'] ) ) {
+ if ( !$wgUser->isAllowed( 'import' ) ) {
+ $this->dieUsageMsg( 'cantimport' );
+ }
if ( !isset( $params['interwikipage'] ) ) {
$this->dieUsageMsg( array( 'missingparam', 'interwikipage' ) );
}
@@ -61,7 +62,7 @@ class ApiImport extends ApiBase {
} else {
$isUpload = true;
if ( !$wgUser->isAllowed( 'importupload' ) ) {
- $this->dieUsageMsg( array( 'cantimport-upload' ) );
+ $this->dieUsageMsg( 'cantimport-upload' );
}
$source = ImportStreamSource::newFromUpload( 'xml' );
}
@@ -87,8 +88,9 @@ class ApiImport extends ApiBase {
}
$resultData = $reporter->getData();
- $this->getResult()->setIndexedTagName( $resultData, 'page' );
- $this->getResult()->addValue( null, $this->getModuleName(), $resultData );
+ $result = $this->getResult();
+ $result->setIndexedTagName( $resultData, 'page' );
+ $result->addValue( null, $this->getModuleName(), $resultData );
}
public function mustBePosted() {
@@ -131,7 +133,11 @@ class ApiImport extends ApiBase {
}
public function getDescription() {
- return 'Import a page from another wiki, or an XML file';
+ return array(
+ 'Import a page from another wiki, or an XML file.' ,
+ 'Note that the HTTP POST must be done as a file upload (i.e. using multipart/form-data) when',
+ 'sending a file for the "xml" parameter.'
+ );
}
public function getPossibleErrors() {
@@ -159,8 +165,12 @@ class ApiImport extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Import';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiImport.php 77800 2010-12-05 14:22:49Z ialex $';
+ return __CLASS__ . ': $Id: ApiImport.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
@@ -171,6 +181,14 @@ class ApiImport extends ApiBase {
class ApiImportReporter extends ImportReporter {
private $mResultArr = array();
+ /**
+ * @param $title Title
+ * @param $origTitle Title
+ * @param $revisionCount int
+ * @param $successCount int
+ * @param $pageInfo
+ * @return void
+ */
function reportPage( $title, $origTitle, $revisionCount, $successCount, $pageInfo ) {
// Add a result entry
$r = array();
diff --git a/includes/api/ApiLogin.php b/includes/api/ApiLogin.php
index 0675de7b..a09f0335 100644
--- a/includes/api/ApiLogin.php
+++ b/includes/api/ApiLogin.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 19, 2006
*
@@ -72,13 +72,15 @@ class ApiLogin extends ApiBase {
global $wgCookiePrefix, $wgUser, $wgPasswordAttemptThrottle;
- switch ( $authRes = $loginForm->authenticateUserData() ) {
+ $authRes = $loginForm->authenticateUserData();
+ switch ( $authRes ) {
case LoginForm::SUCCESS:
$wgUser->setOption( 'rememberpassword', 1 );
- $wgUser->setCookies();
+ $wgUser->setCookies( $this->getMain()->getRequest() );
- // Run hooks. FIXME: split back and frontend from this hook.
- // FIXME: This hook should be placed in the backend
+ // Run hooks.
+ // @todo FIXME: Split back and frontend from this hook.
+ // @todo FIXME: This hook should be placed in the backend
$injected_html = '';
wfRunHooks( 'UserLoginComplete', array( &$wgUser, &$injected_html ) );
@@ -140,6 +142,11 @@ class ApiLogin extends ApiBase {
$result['result'] = 'Blocked';
break;
+ case LoginForm::ABORTED:
+ $result['result'] = 'Aborted';
+ $result['reason'] = $loginForm->mAbortLoginErrorMsg;
+ break;
+
default:
ApiBase::dieDebug( __METHOD__, "Unhandled case value: {$authRes}" );
}
@@ -175,7 +182,7 @@ class ApiLogin extends ApiBase {
public function getDescription() {
return array(
- 'This module is used to login and get the authentication tokens. ',
+ 'Log in and get the authentication tokens. ',
'In the event of a successful log-in, a cookie will be attached',
'to your session. In the event of a failed log-in, you will not ',
'be able to attempt another log-in through this method for 5 seconds.',
@@ -205,7 +212,11 @@ class ApiLogin extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Login';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiLogin.php 76080 2010-11-05 11:54:35Z catrope $';
+ return __CLASS__ . ': $Id: ApiLogin.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiLogout.php b/includes/api/ApiLogout.php
index 89326915..3639df3b 100644
--- a/includes/api/ApiLogout.php
+++ b/includes/api/ApiLogout.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Jan 4, 2008
*
@@ -64,7 +64,7 @@ class ApiLogout extends ApiBase {
}
public function getDescription() {
- return 'This module is used to logout and clear session data';
+ return 'Log out and clear session data';
}
protected function getExamples() {
@@ -73,7 +73,11 @@ class ApiLogout extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Logout';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiLogout.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiLogout.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiMain.php b/includes/api/ApiMain.php
index d5238a51..d24e1df2 100644
--- a/includes/api/ApiMain.php
+++ b/includes/api/ApiMain.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 4, 2006
*
@@ -60,10 +60,12 @@ class ApiMain extends ApiBase {
'expandtemplates' => 'ApiExpandTemplates',
'parse' => 'ApiParse',
'opensearch' => 'ApiOpenSearch',
+ 'feedcontributions' => 'ApiFeedContributions',
'feedwatchlist' => 'ApiFeedWatchlist',
'help' => 'ApiHelp',
'paraminfo' => 'ApiParamInfo',
'rsd' => 'ApiRsd',
+ 'compare' => 'ApiComparePages',
// Write modules
'purge' => 'ApiPurge',
@@ -76,6 +78,7 @@ class ApiMain extends ApiBase {
'move' => 'ApiMove',
'edit' => 'ApiEditPage',
'upload' => 'ApiUpload',
+ 'filerevert' => 'ApiFileRevert',
'emailuser' => 'ApiEmailUser',
'watch' => 'ApiWatch',
'patrol' => 'ApiPatrol',
@@ -123,7 +126,12 @@ class ApiMain extends ApiBase {
)
);
- private $mPrinter, $mModules, $mModuleNames, $mFormats, $mFormatNames;
+ /**
+ * @var ApiFormatBase
+ */
+ private $mPrinter;
+
+ private $mModules, $mModuleNames, $mFormats, $mFormatNames;
private $mResult, $mAction, $mShowVersions, $mEnableWrite, $mRequest;
private $mInternalMode, $mSquidMaxage, $mModule;
@@ -175,6 +183,7 @@ class ApiMain extends ApiBase {
/**
* Return true if the API was started by other PHP code using FauxRequest
+ * @return bool
*/
public function isInternalMode() {
return $this->mInternalMode;
@@ -199,6 +208,8 @@ class ApiMain extends ApiBase {
/**
* Get the API module object. Only works after executeAction()
+ *
+ * @return ApiBase
*/
public function getModule() {
return $this->mModule;
@@ -215,6 +226,8 @@ class ApiMain extends ApiBase {
/**
* Set how long the response should be cached.
+ *
+ * @param $maxage
*/
public function setCacheMaxAge( $maxage ) {
$this->setCacheControl( array(
@@ -268,7 +281,7 @@ class ApiMain extends ApiBase {
}
/**
- * @deprecated Private caching is now the default, so there is usually no
+ * @deprecated since 1.17 Private caching is now the default, so there is usually no
* need to call this function. If there is a need, you can use
* $this->setCacheMode('private')
*/
@@ -283,6 +296,8 @@ class ApiMain extends ApiBase {
*
* Cache control values set here will only be used if the cache mode is not
* private, see setCacheMode().
+ *
+ * @param $directives array
*/
public function setCacheControl( $directives ) {
$this->mCacheControl = $directives + $this->mCacheControl;
@@ -296,7 +311,7 @@ class ApiMain extends ApiBase {
* given URL must either always or never call this function; if it sometimes does and
* sometimes doesn't, stuff will break.
*
- * @deprecated Use setCacheMode( 'anon-public-user-private' )
+ * @deprecated since 1.17 Use setCacheMode( 'anon-public-user-private' )
*/
public function setVaryCookie() {
$this->setCacheMode( 'anon-public-user-private' );
@@ -304,6 +319,10 @@ class ApiMain extends ApiBase {
/**
* Create an instance of an output formatter by its name
+ *
+ * @param $format string
+ *
+ * @return ApiFormatBase
*/
public function createPrinterByName( $format ) {
if ( !isset( $this->mFormats[$format] ) ) {
@@ -343,22 +362,21 @@ class ApiMain extends ApiBase {
wfDebugLog( 'exception', $e->getLogMessage() );
}
- //
// Handle any kind of exception by outputing properly formatted error message.
// If this fails, an unhandled exception should be thrown so that global error
// handler will process and log it.
- //
$errCode = $this->substituteResultWithError( $e );
// Error results should not be cached
$this->setCacheMode( 'private' );
+ $response = $this->getRequest()->response();
$headerStr = 'MediaWiki-API-Error: ' . $errCode;
if ( $e->getCode() === 0 ) {
- header( $headerStr );
+ $response->header( $headerStr );
} else {
- header( $headerStr, true, $e->getCode() );
+ $response->header( $headerStr, true, $e->getCode() );
}
// Reset and print just the error message
@@ -381,29 +399,44 @@ class ApiMain extends ApiBase {
}
protected function sendCacheHeaders() {
+ global $wgUseXVO, $wgOut, $wgVaryOnXFP;
+ $response = $this->getRequest()->response();
+
if ( $this->mCacheMode == 'private' ) {
- header( 'Cache-Control: private' );
+ $response->header( 'Cache-Control: private' );
return;
}
if ( $this->mCacheMode == 'anon-public-user-private' ) {
- global $wgUseXVO, $wgOut;
- header( 'Vary: Accept-Encoding, Cookie' );
+ $xfp = $wgVaryOnXFP ? ', X-Forwarded-Proto' : '';
+ $response->header( 'Vary: Accept-Encoding, Cookie' . $xfp );
if ( $wgUseXVO ) {
- header( $wgOut->getXVO() );
+ if ( $wgVaryOnXFP ) {
+ $wgOut->addVaryHeader( 'X-Forwarded-Proto' );
+ }
+ $response->header( $wgOut->getXVO() );
if ( $wgOut->haveCacheVaryCookies() ) {
// Logged in, mark this request private
- header( 'Cache-Control: private' );
+ $response->header( 'Cache-Control: private' );
return;
}
// Logged out, send normal public headers below
} elseif ( session_id() != '' ) {
// Logged in or otherwise has session (e.g. anonymous users who have edited)
// Mark request private
- header( 'Cache-Control: private' );
+ $response->header( 'Cache-Control: private' );
return;
} // else no XVO and anonymous, send public headers below
}
+
+ // Send public headers
+ if ( $wgVaryOnXFP ) {
+ $response->header( 'Vary: Accept-Encoding, X-Forwarded-Proto' );
+ if ( $wgUseXVO ) {
+ // Bleeeeegh. Our header setting system sucks
+ $response->header( 'X-Vary-Options: Accept-Encoding;list-contains=gzip, X-Forwarded-Proto' );
+ }
+ }
// If nobody called setCacheMaxAge(), use the (s)maxage parameters
if ( !isset( $this->mCacheControl['s-maxage'] ) ) {
@@ -417,7 +450,7 @@ class ApiMain extends ApiBase {
// Public cache not requested
// Sending a Vary header in this case is harmless, and protects us
// against conditional calls of setCacheMaxAge().
- header( 'Cache-Control: private' );
+ $response->header( 'Cache-Control: private' );
return;
}
@@ -426,7 +459,7 @@ class ApiMain extends ApiBase {
// Send an Expires header
$maxAge = min( $this->mCacheControl['s-maxage'], $this->mCacheControl['max-age'] );
$expiryUnixTime = ( $maxAge == 0 ? 1 : time() + $maxAge );
- header( 'Expires: ' . wfTimestamp( TS_RFC2822, $expiryUnixTime ) );
+ $response->header( 'Expires: ' . wfTimestamp( TS_RFC2822, $expiryUnixTime ) );
// Construct the Cache-Control header
$ccHeader = '';
@@ -443,15 +476,17 @@ class ApiMain extends ApiBase {
}
}
- header( "Cache-Control: $ccHeader" );
+ $response->header( "Cache-Control: $ccHeader" );
}
/**
* Replace the result data with the information about an exception.
* Returns the error code
* @param $e Exception
+ * @return string
*/
protected function substituteResultWithError( $e ) {
+ $result = $this->getResult();
// Printer may not be initialized if the extractRequestParams() fails for the main module
if ( !isset ( $this->mPrinter ) ) {
// The printer has not been created yet. Try to manually get formatter value.
@@ -462,14 +497,12 @@ class ApiMain extends ApiBase {
$this->mPrinter = $this->createPrinterByName( $value );
if ( $this->mPrinter->getNeedsRawData() ) {
- $this->getResult()->setRawMode();
+ $result->setRawMode();
}
}
if ( $e instanceof UsageException ) {
- //
// User entered incorrect parameters - print usage screen
- //
$errMessage = $e->getMessageArray();
// Only print the help message when this is for the developer, not runtime
@@ -479,9 +512,7 @@ class ApiMain extends ApiBase {
} else {
global $wgShowSQLErrors, $wgShowExceptionDetails;
- //
// Something is seriously wrong
- //
if ( ( $e instanceof DBQueryError ) && !$wgShowSQLErrors ) {
$info = 'Database query error';
} else {
@@ -495,32 +526,34 @@ class ApiMain extends ApiBase {
ApiResult::setContent( $errMessage, $wgShowExceptionDetails ? "\n\n{$e->getTraceAsString()}\n\n" : '' );
}
- $this->getResult()->reset();
- $this->getResult()->disableSizeCheck();
+ $result->reset();
+ $result->disableSizeCheck();
// Re-add the id
$requestid = $this->getParameter( 'requestid' );
if ( !is_null( $requestid ) ) {
- $this->getResult()->addValue( null, 'requestid', $requestid );
+ $result->addValue( null, 'requestid', $requestid );
}
// servedby is especially useful when debugging errors
- $this->getResult()->addValue( null, 'servedby', wfHostName() );
- $this->getResult()->addValue( null, 'error', $errMessage );
+ $result->addValue( null, 'servedby', wfHostName() );
+ $result->addValue( null, 'error', $errMessage );
return $errMessage['code'];
}
/**
* Set up for the execution.
+ * @return array
*/
protected function setupExecuteAction() {
// First add the id to the top element
+ $result = $this->getResult();
$requestid = $this->getParameter( 'requestid' );
if ( !is_null( $requestid ) ) {
- $this->getResult()->addValue( null, 'requestid', $requestid );
+ $result->addValue( null, 'requestid', $requestid );
}
$servedby = $this->getParameter( 'servedby' );
if ( $servedby ) {
- $this->getResult()->addValue( null, 'servedby', wfHostName() );
+ $result->addValue( null, 'servedby', wfHostName() );
}
$params = $this->extractRequestParams();
@@ -553,8 +586,8 @@ class ApiMain extends ApiBase {
$this->dieUsageMsg( array( 'missingparam', 'token' ) );
} else {
global $wgUser;
- if ( !$wgUser->matchEditToken( $moduleParams['token'], $salt ) ) {
- $this->dieUsageMsg( array( 'sessionfailure' ) );
+ if ( !$wgUser->matchEditToken( $moduleParams['token'], $salt, $this->getRequest() ) ) {
+ $this->dieUsageMsg( 'sessionfailure' );
}
}
}
@@ -574,8 +607,11 @@ class ApiMain extends ApiBase {
$maxLag = $params['maxlag'];
list( $host, $lag ) = wfGetLB()->getMaxLag();
if ( $lag > $maxLag ) {
- header( 'Retry-After: ' . max( intval( $maxLag ), 5 ) );
- header( 'X-Database-Lag: ' . intval( $lag ) );
+ $response = $this->getRequest()->response();
+
+ $response->header( 'Retry-After: ' . max( intval( $maxLag ), 5 ) );
+ $response->header( 'X-Database-Lag: ' . intval( $lag ) );
+
if ( $wgShowHostnames ) {
$this->dieUsage( "Waiting for $host: $lag seconds lagged", 'maxlag' );
} else {
@@ -587,7 +623,6 @@ class ApiMain extends ApiBase {
return true;
}
-
/**
* Check for sufficient permissions to execute
* @param $module ApiBase An Api module
@@ -597,14 +632,14 @@ class ApiMain extends ApiBase {
if ( $module->isReadMode() && !in_array( 'read', User::getGroupPermissions( array( '*' ) ), true ) &&
!$wgUser->isAllowed( 'read' ) )
{
- $this->dieUsageMsg( array( 'readrequired' ) );
+ $this->dieUsageMsg( 'readrequired' );
}
if ( $module->isWriteMode() ) {
if ( !$this->mEnableWrite ) {
- $this->dieUsageMsg( array( 'writedisabled' ) );
+ $this->dieUsageMsg( 'writedisabled' );
}
if ( !$wgUser->isAllowed( 'writeapi' ) ) {
- $this->dieUsageMsg( array( 'writerequired' ) );
+ $this->dieUsageMsg( 'writerequired' );
}
if ( wfReadOnly() ) {
$this->dieReadOnly();
@@ -666,6 +701,8 @@ class ApiMain extends ApiBase {
/**
* Print results using the current printer
+ *
+ * @param $isError bool
*/
protected function printResult( $isError ) {
$this->getResult()->cleanUpUTF8();
@@ -687,12 +724,17 @@ class ApiMain extends ApiBase {
$printer->profileOut();
}
+ /**
+ * @return bool
+ */
public function isReadMode() {
return false;
}
/**
* See ApiBase for description.
+ *
+ * @return array
*/
public function getAllowedParams() {
return array(
@@ -723,13 +765,22 @@ class ApiMain extends ApiBase {
/**
* See ApiBase for description.
+ *
+ * @return array
*/
public function getParamDescription() {
return array(
'format' => 'The format of the output',
'action' => 'What action you would like to perform. See below for module help',
'version' => 'When showing help, include version for each module',
- 'maxlag' => 'Maximum lag',
+ 'maxlag' => array(
+ 'Maximum lag can be used when MediaWiki is installed on a database replicated cluster.',
+ 'To save actions causing any more site replication lag, this parameter can make the client',
+ 'wait until the replication lag is less than the specified value.',
+ 'In case of a replag error, a HTTP 503 error is returned, with the message like',
+ '"Waiting for $host: $lag seconds lagged\n".',
+ 'See https://www.mediawiki.org/wiki/Manual:Maxlag_parameter for more information',
+ ),
'smaxage' => 'Set the s-maxage header to this many seconds. Errors are never cached',
'maxage' => 'Set the max-age header to this many seconds. Errors are never cached',
'requestid' => 'Request ID to distinguish requests. This will just be output back to you',
@@ -739,28 +790,40 @@ class ApiMain extends ApiBase {
/**
* See ApiBase for description.
+ *
+ * @return array
*/
public function getDescription() {
return array(
'',
'',
- '******************************************************************************************',
- '** **',
- '** This is an auto-generated MediaWiki API documentation page **',
- '** **',
- '** Documentation and Examples: **',
- '** http://www.mediawiki.org/wiki/API **',
- '** **',
- '******************************************************************************************',
+ '**********************************************************************************************************',
+ '** **',
+ '** This is an auto-generated MediaWiki API documentation page **',
+ '** **',
+ '** Documentation and Examples: **',
+ '** https://www.mediawiki.org/wiki/API **',
+ '** **',
+ '**********************************************************************************************************',
'',
'Status: All features shown on this page should be working, but the API',
- ' is still in active development, and may change at any time.',
+ ' is still in active development, and may change at any time.',
' Make sure to monitor our mailing list for any updates',
'',
- 'Documentation: http://www.mediawiki.org/wiki/API',
- 'Mailing list: http://lists.wikimedia.org/mailman/listinfo/mediawiki-api',
- 'Api Announcements: http://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce',
- 'Bugs & Requests: http://bugzilla.wikimedia.org/buglist.cgi?component=API&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&order=bugs.delta_ts',
+ 'Erroneous requests: When erroneous requests are sent to the API, a HTTP header will be sent',
+ ' with the key "MediaWiki-API-Error" and then both the value of the',
+ ' header and the error code sent back will be set to the same value',
+ '',
+ ' In the case of an invalid action being passed, these will have a value',
+ ' of "unknown_action"',
+ '',
+ ' For more information see https://www.mediawiki.org/wiki/API:Errors_and_warnings',
+ '',
+ 'Documentation: https://www.mediawiki.org/wiki/API:Main_page',
+ 'FAQ https://www.mediawiki.org/wiki/API:FAQ',
+ 'Mailing list: https://lists.wikimedia.org/mailman/listinfo/mediawiki-api',
+ 'Api Announcements: https://lists.wikimedia.org/mailman/listinfo/mediawiki-api-announce',
+ 'Bugs & Requests: https://bugzilla.wikimedia.org/buglist.cgi?component=API&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&order=bugs.delta_ts',
'',
'',
'',
@@ -769,6 +832,9 @@ class ApiMain extends ApiBase {
);
}
+ /**
+ * @return array
+ */
public function getPossibleErrors() {
return array_merge( parent::getPossibleErrors(), array(
array( 'readonlytext' ),
@@ -781,22 +847,26 @@ class ApiMain extends ApiBase {
/**
* Returns an array of strings with credits for the API
+ * @return array
*/
protected function getCredits() {
return array(
'API developers:',
- ' Roan Kattouw <Firstname>.<Lastname>@home.nl (lead developer Sep 2007-present)',
+ ' Roan Kattouw <Firstname>.<Lastname>@gmail.com (lead developer Sep 2007-present)',
' Victor Vasiliev - vasilvv at gee mail dot com',
' Bryan Tong Minh - bryan . tongminh @ gmail . com',
' Sam Reed - sam @ reedyboy . net',
' Yuri Astrakhan <Firstname><Lastname>@gmail.com (creator, lead developer Sep 2006-Sep 2007)',
'',
'Please send your comments, suggestions and questions to mediawiki-api@lists.wikimedia.org',
- 'or file a bug report at http://bugzilla.wikimedia.org/'
+ 'or file a bug report at https://bugzilla.wikimedia.org/'
);
}
+
/**
* Sets whether the pretty-printer should format *bold* and $italics$
+ *
+ * @param $help bool
*/
public function setHelp( $help = true ) {
$this->mPrinter->setHelp( $help );
@@ -804,34 +874,39 @@ class ApiMain extends ApiBase {
/**
* Override the parent to generate help messages for all available modules.
+ *
+ * @return string
*/
public function makeHelpMsg() {
- global $wgMemc, $wgAPICacheHelp, $wgAPICacheHelpTimeout;
+ global $wgMemc, $wgAPICacheHelpTimeout;
$this->setHelp();
// Get help text from cache if present
$key = wfMemcKey( 'apihelp', $this->getModuleName(),
SpecialVersion::getVersion( 'nodb' ) .
- $this->getMain()->getShowVersions() );
- if ( $wgAPICacheHelp ) {
+ $this->getShowVersions() );
+ if ( $wgAPICacheHelpTimeout > 0 ) {
$cached = $wgMemc->get( $key );
if ( $cached ) {
return $cached;
}
}
$retval = $this->reallyMakeHelpMsg();
- if ( $wgAPICacheHelp ) {
+ if ( $wgAPICacheHelpTimeout > 0 ) {
$wgMemc->set( $key, $retval, $wgAPICacheHelpTimeout );
}
return $retval;
}
+ /**
+ * @return mixed|string
+ */
public function reallyMakeHelpMsg() {
$this->setHelp();
// Use parent to make default message for the main module
$msg = parent::makeHelpMsg();
- $astriks = str_repeat( '*** ', 10 );
+ $astriks = str_repeat( '*** ', 14 );
$msg .= "\n\n$astriks Modules $astriks\n\n";
foreach ( array_keys( $this->mModules ) as $moduleName ) {
$module = new $this->mModules[$moduleName] ( $this, $moduleName );
@@ -867,6 +942,11 @@ class ApiMain extends ApiBase {
return $msg;
}
+ /**
+ * @param $module ApiBase
+ * @param $paramName String What type of request is this? e.g. action, query, list, prop, meta, format
+ * @return string
+ */
public static function makeHelpMsgHeader( $module, $paramName ) {
$modulePrefix = $module->getModulePrefix();
if ( strval( $modulePrefix ) !== '' ) {
@@ -876,37 +956,9 @@ class ApiMain extends ApiBase {
return "* $paramName={$module->getModuleName()} $modulePrefix*";
}
- private $mIsBot = null;
- private $mIsSysop = null;
private $mCanApiHighLimits = null;
/**
- * Returns true if the currently logged in user is a bot, false otherwise
- * OBSOLETE, use canApiHighLimits() instead
- */
- public function isBot() {
- if ( !isset( $this->mIsBot ) ) {
- global $wgUser;
- $this->mIsBot = $wgUser->isAllowed( 'bot' );
- }
- return $this->mIsBot;
- }
-
- /**
- * Similar to isBot(), this method returns true if the logged in user is
- * a sysop, and false if not.
- * OBSOLETE, use canApiHighLimits() instead
- */
- public function isSysop() {
- if ( !isset( $this->mIsSysop ) ) {
- global $wgUser;
- $this->mIsSysop = in_array( 'sysop', $wgUser->getGroups() );
- }
-
- return $this->mIsSysop;
- }
-
- /**
* Check whether the current user is allowed to use high limits
* @return bool
*/
@@ -930,11 +982,13 @@ class ApiMain extends ApiBase {
/**
* Returns the version information of this file, plus it includes
* the versions for all files that are not callable proper API modules
+ *
+ * @return array
*/
public function getVersion() {
- $vers = array ();
- $vers[] = 'MediaWiki: ' . SpecialVersion::getVersion() . "\n http://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/";
- $vers[] = __CLASS__ . ': $Id: ApiMain.php 76196 2010-11-06 16:11:19Z reedy $';
+ $vers = array();
+ $vers[] = 'MediaWiki: ' . SpecialVersion::getVersion() . "\n https://svn.wikimedia.org/viewvc/mediawiki/trunk/phase3/";
+ $vers[] = __CLASS__ . ': $Id: ApiMain.php 104449 2011-11-28 15:52:04Z reedy $';
$vers[] = ApiBase::getBaseVersion();
$vers[] = ApiFormatBase::getBaseVersion();
$vers[] = ApiQueryBase::getBaseVersion();
@@ -957,8 +1011,8 @@ class ApiMain extends ApiBase {
* Add or overwrite an output format for this ApiMain. Intended for use by extending
* classes who wish to add to or modify current formatters.
*
- * @param $fmtName The identifier for this format.
- * @param $fmtClass The class implementing this format.
+ * @param $fmtName string The identifier for this format.
+ * @param $fmtClass ApiFormatBase The class implementing this format.
*/
protected function addFormat( $fmtName, $fmtClass ) {
$this->mFormats[$fmtName] = $fmtClass;
@@ -966,10 +1020,21 @@ class ApiMain extends ApiBase {
/**
* Get the array mapping module names to class names
+ * @return array
*/
function getModules() {
return $this->mModules;
}
+
+ /**
+ * Returns the list of supported formats in form ( 'format' => 'ClassName' )
+ *
+ * @since 1.18
+ * @return array
+ */
+ public function getFormats() {
+ return $this->mFormats;
+ }
}
/**
@@ -989,10 +1054,16 @@ class UsageException extends Exception {
$this->mExtraData = $extradata;
}
+ /**
+ * @return string
+ */
public function getCodeString() {
return $this->mCodestr;
}
+ /**
+ * @return array
+ */
public function getMessageArray() {
$result = array(
'code' => $this->mCodestr,
@@ -1004,6 +1075,9 @@ class UsageException extends Exception {
return $result;
}
+ /**
+ * @return string
+ */
public function __toString() {
return "{$this->getCodeString()}: {$this->getMessage()}";
}
diff --git a/includes/api/ApiMove.php b/includes/api/ApiMove.php
index a93188bf..f15a086c 100644
--- a/includes/api/ApiMove.php
+++ b/includes/api/ApiMove.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 31, 2007
*
- * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@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
@@ -61,7 +61,7 @@ class ApiMove extends ApiBase {
}
if ( !$fromTitle->exists() ) {
- $this->dieUsageMsg( array( 'notanarticle' ) );
+ $this->dieUsageMsg( 'notanarticle' );
}
$fromTalk = $fromTitle->getTalkPage();
@@ -76,9 +76,9 @@ class ApiMove extends ApiBase {
&& wfFindFile( $toTitle ) )
{
if ( !$params['ignorewarnings'] && $wgUser->isAllowed( 'reupload-shared' ) ) {
- $this->dieUsageMsg( array( 'sharedfile-exists' ) );
+ $this->dieUsageMsg( 'sharedfile-exists' );
} elseif ( !$wgUser->isAllowed( 'reupload-shared' ) ) {
- $this->dieUsageMsg( array( 'cantoverwrite-sharedfile' ) );
+ $this->dieUsageMsg( 'cantoverwrite-sharedfile' );
}
}
@@ -107,15 +107,18 @@ class ApiMove extends ApiBase {
}
}
+ $result = $this->getResult();
+
// Move subpages
if ( $params['movesubpages'] ) {
$r['subpages'] = $this->moveSubpages( $fromTitle, $toTitle,
$params['reason'], $params['noredirect'] );
- $this->getResult()->setIndexedTagName( $r['subpages'], 'subpage' );
+ $result->setIndexedTagName( $r['subpages'], 'subpage' );
+
if ( $params['movetalk'] ) {
$r['subpages-talk'] = $this->moveSubpages( $fromTalk, $toTalk,
$params['reason'], $params['noredirect'] );
- $this->getResult()->setIndexedTagName( $r['subpages-talk'], 'subpage' );
+ $result->setIndexedTagName( $r['subpages-talk'], 'subpage' );
}
}
@@ -132,9 +135,16 @@ class ApiMove extends ApiBase {
$this->setWatch( $watch, $fromTitle, 'watchmoves' );
$this->setWatch( $watch, $toTitle, 'watchmoves' );
- $this->getResult()->addValue( null, $this->getModuleName(), $r );
+ $result->addValue( null, $this->getModuleName(), $r );
}
+ /**
+ * @param Title $fromTitle
+ * @param Title $toTitle
+ * @param $reason
+ * @param $noredirect
+ * @return array
+ */
public function moveSubpages( $fromTitle, $toTitle, $reason, $noredirect ) {
$retval = array();
$success = $fromTitle->moveSubpages( $toTitle, true, $reason, !$noredirect );
@@ -224,13 +234,16 @@ class ApiMove extends ApiBase {
}
public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'invalidtitle', 'from' ),
- array( 'nosuchpageid', 'fromid' ),
- array( 'notanarticle' ),
- array( 'invalidtitle', 'to' ),
- array( 'sharedfile-exists' ),
- ) );
+ return array_merge( parent::getPossibleErrors(),
+ $this->getRequireOnlyOneParameterErrorMessages( array( 'from', 'fromid' ) ),
+ array(
+ array( 'invalidtitle', 'from' ),
+ array( 'nosuchpageid', 'fromid' ),
+ array( 'notanarticle' ),
+ array( 'invalidtitle', 'to' ),
+ array( 'sharedfile-exists' ),
+ )
+ );
}
public function needsToken() {
@@ -247,7 +260,11 @@ class ApiMove extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Move';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiMove.php 77192 2010-11-23 22:05:27Z btongminh $';
+ return __CLASS__ . ': $Id: ApiMove.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiOpenSearch.php b/includes/api/ApiOpenSearch.php
index 885766d2..084c9860 100644
--- a/includes/api/ApiOpenSearch.php
+++ b/includes/api/ApiOpenSearch.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 13, 2006
*
@@ -60,7 +60,7 @@ class ApiOpenSearch extends ApiBase {
$searches = PrefixSearch::titleSearch( $search, $limit,
$namespaces );
-
+
// if the content language has variants, try to retrieve fallback results
$fallbackLimit = $limit - count( $searches );
if ( $fallbackLimit > 0 ) {
@@ -116,7 +116,7 @@ class ApiOpenSearch extends ApiBase {
}
public function getDescription() {
- return 'This module implements OpenSearch protocol';
+ return 'Searches the wiki using the OpenSearch protocol';
}
protected function getExamples() {
@@ -125,7 +125,11 @@ class ApiOpenSearch extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Opensearch';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiOpenSearch.php 79720 2011-01-06 14:48:34Z catrope $';
+ return __CLASS__ . ': $Id: ApiOpenSearch.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiPageSet.php b/includes/api/ApiPageSet.php
index 1cb12c07..cf10a9ac 100644
--- a/includes/api/ApiPageSet.php
+++ b/includes/api/ApiPageSet.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 24, 2006
*
@@ -59,6 +59,7 @@ class ApiPageSet extends ApiQueryBase {
* Constructor
* @param $query ApiQuery
* @param $resolveRedirects bool Whether redirects should be resolved
+ * @param $convertTitles bool
*/
public function __construct( $query, $resolveRedirects = false, $convertTitles = false ) {
parent::__construct( $query, 'query' );
@@ -212,7 +213,7 @@ class ApiPageSet extends ApiQueryBase {
/**
* Get a list of redirect resolutions - maps a title to its redirect
* target.
- * @return array prefixed_title (string) => prefixed_title (string)
+ * @return array prefixed_title (string) => Title object
*/
public function getRedirectTitles() {
return $this->mRedirectTitles;
@@ -351,7 +352,7 @@ class ApiPageSet extends ApiQueryBase {
*/
public function populateFromQueryResult( $db, $queryResult ) {
$this->profileIn();
- $this->initFromQueryResult( $db, $queryResult );
+ $this->initFromQueryResult( $queryResult );
$this->profileOut();
}
@@ -430,7 +431,7 @@ class ApiPageSet extends ApiQueryBase {
$this->profileDBOut();
// Hack: get the ns:titles stored in array(ns => array(titles)) format
- $this->initFromQueryResult( $db, $res, $linkBatch->data, true ); // process Titles
+ $this->initFromQueryResult( $res, $linkBatch->data, true ); // process Titles
// Resolve any found redirects
$this->resolvePendingRedirects();
@@ -446,19 +447,25 @@ class ApiPageSet extends ApiQueryBase {
}
$pageids = array_map( 'intval', $pageids ); // paranoia
- $set = array(
- 'page_id' => $pageids
- );
- $db = $this->getDB();
+ $remaining = array_flip( $pageids );
- // Get pageIDs data from the `page` table
- $this->profileDBIn();
- $res = $db->select( 'page', $this->getPageTableFields(), $set,
- __METHOD__ );
- $this->profileDBOut();
+ $pageids = self::getPositiveIntegers( $pageids );
- $remaining = array_flip( $pageids );
- $this->initFromQueryResult( $db, $res, $remaining, false ); // process PageIDs
+ $res = null;
+ if ( count( $pageids ) ) {
+ $set = array(
+ 'page_id' => $pageids
+ );
+ $db = $this->getDB();
+
+ // Get pageIDs data from the `page` table
+ $this->profileDBIn();
+ $res = $db->select( 'page', $this->getPageTableFields(), $set,
+ __METHOD__ );
+ $this->profileDBOut();
+ }
+
+ $this->initFromQueryResult( $res, $remaining, false ); // process PageIDs
// Resolve any found redirects
$this->resolvePendingRedirects();
@@ -467,7 +474,6 @@ class ApiPageSet extends ApiQueryBase {
/**
* Iterate through the result of the query on 'page' table,
* and for each row create and store title object and save any extra fields requested.
- * @param $db Database
* @param $res ResultWrapper DB Query result
* @param $remaining array of either pageID or ns/title elements (optional).
* If given, any missing items will go to $mMissingPageIDs and $mMissingTitles
@@ -475,25 +481,27 @@ class ApiPageSet extends ApiQueryBase {
* If true, treat $remaining as an array of [ns][title]
* If false, treat it as an array of [pageIDs]
*/
- private function initFromQueryResult( $db, $res, &$remaining = null, $processTitles = null ) {
+ private function initFromQueryResult( $res, &$remaining = null, $processTitles = null ) {
if ( !is_null( $remaining ) && is_null( $processTitles ) ) {
ApiBase::dieDebug( __METHOD__, 'Missing $processTitles parameter when $remaining is provided' );
}
- foreach ( $res as $row ) {
- $pageId = intval( $row->page_id );
+ if ( $res ) {
+ foreach ( $res as $row ) {
+ $pageId = intval( $row->page_id );
- // Remove found page from the list of remaining items
- if ( isset( $remaining ) ) {
- if ( $processTitles ) {
- unset( $remaining[$row->page_namespace][$row->page_title] );
- } else {
- unset( $remaining[$pageId] );
+ // Remove found page from the list of remaining items
+ if ( isset( $remaining ) ) {
+ if ( $processTitles ) {
+ unset( $remaining[$row->page_namespace][$row->page_title] );
+ } else {
+ unset( $remaining[$pageId] );
+ }
}
- }
- // Store any extra fields requested by modules
- $this->processDbRow( $row );
+ // Store any extra fields requested by modules
+ $this->processDbRow( $row );
+ }
}
if ( isset( $remaining ) ) {
@@ -535,21 +543,25 @@ class ApiPageSet extends ApiQueryBase {
$pageids = array();
$remaining = array_flip( $revids );
- $tables = array( 'revision', 'page' );
- $fields = array( 'rev_id', 'rev_page' );
- $where = array( 'rev_id' => $revids, 'rev_page = page_id' );
-
- // Get pageIDs data from the `page` table
- $this->profileDBIn();
- $res = $db->select( $tables, $fields, $where, __METHOD__ );
- foreach ( $res as $row ) {
- $revid = intval( $row->rev_id );
- $pageid = intval( $row->rev_page );
- $this->mGoodRevIDs[$revid] = $pageid;
- $pageids[$pageid] = '';
- unset( $remaining[$revid] );
+ $revids = self::getPositiveIntegers( $revids );
+
+ if ( count( $revids ) ) {
+ $tables = array( 'revision', 'page' );
+ $fields = array( 'rev_id', 'rev_page' );
+ $where = array( 'rev_id' => $revids, 'rev_page = page_id' );
+
+ // Get pageIDs data from the `page` table
+ $this->profileDBIn();
+ $res = $db->select( $tables, $fields, $where, __METHOD__ );
+ foreach ( $res as $row ) {
+ $revid = intval( $row->rev_id );
+ $pageid = intval( $row->rev_page );
+ $this->mGoodRevIDs[$revid] = $pageid;
+ $pageids[$pageid] = '';
+ unset( $remaining[$revid] );
+ }
+ $this->profileDBOut();
}
- $this->profileDBOut();
$this->mMissingRevIDs = array_keys( $remaining );
@@ -589,7 +601,7 @@ class ApiPageSet extends ApiQueryBase {
$this->profileDBOut();
// Hack: get the ns:titles stored in array(ns => array(titles)) format
- $this->initFromQueryResult( $db, $res, $linkBatch->data, true );
+ $this->initFromQueryResult( $res, $linkBatch->data, true );
}
}
}
@@ -611,16 +623,17 @@ class ApiPageSet extends ApiQueryBase {
array(
'rd_from',
'rd_namespace',
+ 'rd_fragment',
+ 'rd_interwiki',
'rd_title'
), array( 'rd_from' => array_keys( $this->mPendingRedirectIDs ) ),
__METHOD__
);
$this->profileDBOut();
-
foreach ( $res as $row ) {
$rdfrom = intval( $row->rd_from );
$from = $this->mPendingRedirectIDs[$rdfrom]->getPrefixedText();
- $to = Title::makeTitle( $row->rd_namespace, $row->rd_title )->getPrefixedText();
+ $to = Title::makeTitle( $row->rd_namespace, $row->rd_title, $row->rd_fragment, $row->rd_interwiki );
unset( $this->mPendingRedirectIDs[$rdfrom] );
if ( !isset( $this->mAllPages[$row->rd_namespace][$row->rd_title] ) ) {
$lb->add( $row->rd_namespace, $row->rd_title );
@@ -639,7 +652,7 @@ class ApiPageSet extends ApiQueryBase {
continue;
}
$lb->addObj( $rt );
- $this->mRedirectTitles[$title->getPrefixedText()] = $rt->getPrefixedText();
+ $this->mRedirectTitles[$title->getPrefixedText()] = $rt;
unset( $this->mPendingRedirectIDs[$id] );
}
}
@@ -685,7 +698,6 @@ class ApiPageSet extends ApiQueryBase {
$titleWasConverted = $unconvertedTitle !== $titleObj->getPrefixedText();
}
-
if ( $titleObj->getNamespace() < 0 ) {
// Handle Special and Media pages
$titleObj = $titleObj->fixSpecialName();
@@ -712,6 +724,25 @@ class ApiPageSet extends ApiQueryBase {
return $linkBatch;
}
+ /**
+ * Returns the input array of integers with all values < 0 removed
+ *
+ * @param $array array
+ * @return array
+ */
+ private static function getPositiveIntegers( $array ) {
+ // bug 25734 API: possible issue with revids validation
+ // It seems with a load of revision rows, MySQL gets upset
+ // Remove any < 0 integers, as they can't be valid
+ foreach( $array as $i => $int ) {
+ if ( $int < 0 ) {
+ unset( $array[$i] );
+ }
+ }
+
+ return $array;
+ }
+
protected function getAllowedParams() {
return array(
'titles' => array(
@@ -744,6 +775,6 @@ class ApiPageSet extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiPageSet.php 76196 2010-11-06 16:11:19Z reedy $';
+ return __CLASS__ . ': $Id: ApiPageSet.php 89574 2011-06-06 15:58:55Z reedy $';
}
}
diff --git a/includes/api/ApiParamInfo.php b/includes/api/ApiParamInfo.php
index a2c0bd11..5670b041 100644
--- a/includes/api/ApiParamInfo.php
+++ b/includes/api/ApiParamInfo.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Dec 01, 2007
*
- * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@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
@@ -70,6 +70,7 @@ class ApiParamInfo extends ApiBase {
$obj = new $qmodArr[$qm]( $this, $qm );
$a = $this->getClassInfo( $obj );
$a['name'] = $qm;
+ $a['querytype'] = $queryObj->getModuleType( $qm );
$r['querymodules'][] = $a;
}
$result->setIndexedTagName( $r['querymodules'], 'module' );
@@ -84,11 +85,16 @@ class ApiParamInfo extends ApiBase {
$result->addValue( null, $this->getModuleName(), $r );
}
+ /**
+ * @param $obj ApiBase
+ * @return ApiResult
+ */
function getClassInfo( $obj ) {
$result = $this->getResult();
$retval['classname'] = get_class( $obj );
$retval['description'] = implode( "\n", (array)$obj->getDescription() );
- $retval['examples'] = implode( "\n", (array)$obj->getExamples() );
+ $examples = (array)$obj->getExamples();
+ $retval['examples'] = implode( "\n", $examples );
$retval['version'] = implode( "\n", (array)$obj->getVersion() );
$retval['prefix'] = $obj->getModulePrefix();
@@ -110,6 +116,18 @@ class ApiParamInfo extends ApiBase {
return $retval;
}
+ $retval['helpurls'] = (array)$obj->getHelpUrls();
+ if ( isset( $retval['helpurls'][0] ) && $retval['helpurls'][0] === false ) {
+ $retval['helpurls'] = array();
+ }
+ $result->setIndexedTagName( $retval['helpurls'], 'helpurl' );
+
+ $retval['allexamples'] = $examples;
+ if ( isset( $retval['allexamples'][0] ) && $retval['allexamples'][0] === false ) {
+ $retval['allexamples'] = array();
+ }
+ $result->setIndexedTagName( $retval['allexamples'], 'example' );
+
$retval['parameters'] = array();
$paramDesc = $obj->getFinalParamDescription();
foreach ( $allowedParams as $n => $p ) {
@@ -117,6 +135,26 @@ class ApiParamInfo extends ApiBase {
if ( isset( $paramDesc[$n] ) ) {
$a['description'] = implode( "\n", (array)$paramDesc[$n] );
}
+
+ //handle shorthand
+ if( !is_array( $p ) ) {
+ $p = array(
+ ApiBase::PARAM_DFLT => $p,
+ );
+ }
+
+ //handle missing type
+ if ( !isset( $p[ApiBase::PARAM_TYPE] ) ) {
+ $dflt = isset( $p[ApiBase::PARAM_DFLT] ) ? $p[ApiBase::PARAM_DFLT] : null;
+ if ( is_bool( $dflt ) ) {
+ $p[ApiBase::PARAM_TYPE] = 'boolean';
+ } elseif ( is_string( $dflt ) || is_null( $dflt ) ) {
+ $p[ApiBase::PARAM_TYPE] = 'string';
+ } elseif ( is_int( $dflt ) ) {
+ $p[ApiBase::PARAM_TYPE] = 'integer';
+ }
+ }
+
if ( isset( $p[ApiBase::PARAM_DEPRECATED] ) && $p[ApiBase::PARAM_DEPRECATED] ) {
$a['deprecated'] = '';
}
@@ -124,29 +162,25 @@ class ApiParamInfo extends ApiBase {
$a['required'] = '';
}
- if ( !is_array( $p ) ) {
- if ( is_bool( $p ) ) {
- $a['type'] = 'bool';
- $a['default'] = ( $p ? 'true' : 'false' );
- } elseif ( is_string( $p ) || is_null( $p ) ) {
- $a['type'] = 'string';
- $a['default'] = strval( $p );
- } elseif ( is_int( $p ) ) {
- $a['type'] = 'integer';
- $a['default'] = intval( $p );
- }
- $retval['parameters'][] = $a;
- continue;
- }
-
if ( isset( $p[ApiBase::PARAM_DFLT] ) ) {
- $a['default'] = $p[ApiBase::PARAM_DFLT];
+ $type = $p[ApiBase::PARAM_TYPE];
+ if( $type === 'boolean' ) {
+ $a['default'] = ( $p[ApiBase::PARAM_DFLT] ? 'true' : 'false' );
+ } elseif( $type === 'string' ) {
+ $a['default'] = strval( $p[ApiBase::PARAM_DFLT] );
+ } elseif( $type === 'integer' ) {
+ $a['default'] = intval( $p[ApiBase::PARAM_DFLT] );
+ } else {
+ $a['default'] = $p[ApiBase::PARAM_DFLT];
+ }
}
if ( isset( $p[ApiBase::PARAM_ISMULTI] ) && $p[ApiBase::PARAM_ISMULTI] ) {
$a['multi'] = '';
$a['limit'] = $this->getMain()->canApiHighLimits() ?
- ApiBase::LIMIT_SML2 :
- ApiBase::LIMIT_SML1;
+ ApiBase::LIMIT_SML2 :
+ ApiBase::LIMIT_SML1;
+ $a['lowlimit'] = ApiBase::LIMIT_SML1;
+ $a['highlimit'] = ApiBase::LIMIT_SML2;
}
if ( isset( $p[ApiBase::PARAM_ALLOW_DUPLICATES] ) && $p[ApiBase::PARAM_ALLOW_DUPLICATES] ) {
@@ -175,7 +209,6 @@ class ApiParamInfo extends ApiBase {
// Errors
$retval['errors'] = $this->parseErrors( $obj->getPossibleErrors() );
-
$result->setIndexedTagName( $retval['errors'], 'error' );
return $retval;
@@ -217,7 +250,11 @@ class ApiParamInfo extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Parameter_information';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiParamInfo.php 87170 2011-04-30 16:57:22Z catrope $';
+ return __CLASS__ . ': $Id: ApiParamInfo.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiParse.php b/includes/api/ApiParse.php
index 2d12c233..6212b4ad 100644
--- a/includes/api/ApiParse.php
+++ b/includes/api/ApiParse.php
@@ -1,7 +1,5 @@
<?php
/**
- * API for MediaWiki 1.8+
- *
* Created on Dec 01, 2007
*
* Copyright © 2007 Yuri Astrakhan <Firstname><Lastname>@gmail.com
@@ -33,7 +31,6 @@ if ( !defined( 'MEDIAWIKI' ) ) {
* @ingroup API
*/
class ApiParse extends ApiBase {
-
private $section, $text, $pstText = null;
public function __construct( $main, $action ) {
@@ -80,8 +77,10 @@ class ApiParse extends ApiBase {
$redirValues = null;
- if ( !is_null( $oldid ) || !is_null( $pageid ) || !is_null( $page ) ) {
+ // Return result
+ $result = $this->getResult();
+ if ( !is_null( $oldid ) || !is_null( $pageid ) || !is_null( $page ) ) {
if ( !is_null( $oldid ) ) {
// Don't use the parser cache
$rev = Revision::newFromID( $oldid );
@@ -96,13 +95,12 @@ class ApiParse extends ApiBase {
$wgTitle = $titleObj;
- //If for some reason the "oldid" is actually the current revision, it may be cached
- if ( $titleObj->getLatestRevID() === $oldid ) {
+ // If for some reason the "oldid" is actually the current revision, it may be cached
+ if ( $titleObj->getLatestRevID() === intval( $oldid ) ) {
$articleObj = new Article( $titleObj, 0 );
$p_result = $this->getParsedSectionOrText( $articleObj, $titleObj, $popts, $pageid,
isset( $prop['wikitext'] ) ) ;
-
} else { // This is an old revision, so get the text differently
$this->text = $rev->getText( Revision::FOR_THIS_USER );
@@ -114,38 +112,45 @@ class ApiParse extends ApiBase {
$p_result = $wgParser->parse( $this->text, $titleObj, $popts );
}
-
} else { // Not $oldid
-
- if ( !is_null ( $pageid ) ) {
- $titleObj = Title::newFromID( $pageid );
-
- if ( !$titleObj ) {
- $this->dieUsageMsg( array( 'nosuchpageid', $pageid ) );
+ if ( $params['redirects'] ) {
+ $reqParams = array(
+ 'action' => 'query',
+ 'redirects' => '',
+ );
+ if ( !is_null ( $pageid ) ) {
+ $reqParams['pageids'] = $pageid;
+ } else { // $page
+ $reqParams['titles'] = $page;
}
- } else { // $page
-
- if ( $params['redirects'] ) {
- $req = new FauxRequest( array(
- 'action' => 'query',
- 'redirects' => '',
- 'titles' => $page
- ) );
- $main = new ApiMain( $req );
- $main->execute();
- $data = $main->getResultData();
- $redirValues = @$data['query']['redirects'];
- $to = $page;
- foreach ( (array)$redirValues as $r ) {
- $to = $r['to'];
- }
- } else {
- $to = $page;
+ $req = new FauxRequest( $reqParams );
+ $main = new ApiMain( $req );
+ $main->execute();
+ $data = $main->getResultData();
+ $redirValues = isset( $data['query']['redirects'] )
+ ? $data['query']['redirects']
+ : array();
+ $to = $page;
+ foreach ( (array)$redirValues as $r ) {
+ $to = $r['to'];
}
$titleObj = Title::newFromText( $to );
- if ( !$titleObj || !$titleObj->exists() ) {
- $this->dieUsage( "The page you specified doesn't exist", 'missingtitle' );
+ } else {
+ if ( !is_null ( $pageid ) ) {
+ $reqParams['pageids'] = $pageid;
+ $titleObj = Title::newFromID( $pageid );
+ } else { // $page
+ $to = $page;
+ $titleObj = Title::newFromText( $to );
+ }
+ }
+ if ( !is_null ( $pageid ) ) {
+ if ( !$titleObj ) {
+ // Still throw nosuchpageid error if pageid was provided
+ $this->dieUsageMsg( array( 'nosuchpageid', $pageid ) );
}
+ } elseif ( !$titleObj || !$titleObj->exists() ) {
+ $this->dieUsage( "The page you specified doesn't exist", 'missingtitle' );
}
$wgTitle = $titleObj;
@@ -157,13 +162,12 @@ class ApiParse extends ApiBase {
$p_result = $this->getParsedSectionOrText( $articleObj, $titleObj, $popts, $pageid,
isset( $prop['wikitext'] ) ) ;
}
-
} else { // Not $oldid, $pageid, $page. Hence based on $text
$this->text = $text;
$titleObj = Title::newFromText( $title );
if ( !$titleObj ) {
- $titleObj = Title::newFromText( 'API' );
+ $this->dieUsageMsg( array( 'invalidtitle', $title ) );
}
$wgTitle = $titleObj;
@@ -177,20 +181,25 @@ class ApiParse extends ApiBase {
if ( $params['onlypst'] ) {
// Build a result and bail out
$result_array['text'] = array();
- $this->getResult()->setContent( $result_array['text'], $this->pstText );
+ $result->setContent( $result_array['text'], $this->pstText );
if ( isset( $prop['wikitext'] ) ) {
$result_array['wikitext'] = array();
- $this->getResult()->setContent( $result_array['wikitext'], $this->text );
+ $result->setContent( $result_array['wikitext'], $this->text );
}
- $this->getResult()->addValue( null, $this->getModuleName(), $result_array );
+ $result->addValue( null, $this->getModuleName(), $result_array );
return;
}
$p_result = $wgParser->parse( $params['pst'] ? $this->pstText : $this->text, $titleObj, $popts );
}
- // Return result
- $result = $this->getResult();
$result_array = array();
+
+ $result_array['title'] = $titleObj->getPrefixedText();
+
+ if ( !is_null( $oldid ) ) {
+ $result_array['revid'] = intval( $oldid );
+ }
+
if ( $params['redirects'] && !is_null( $redirValues ) ) {
$result_array['redirects'] = $redirValues;
}
@@ -244,31 +253,30 @@ class ApiParse extends ApiBase {
}
if ( isset( $prop['headitems'] ) || isset( $prop['headhtml'] ) ) {
- $out = new OutputPage;
- $out->addParserOutputNoText( $p_result );
- $userSkin = $wgUser->getSkin();
- }
+ $context = new RequestContext;
+ $context->getOutput()->addParserOutputNoText( $p_result );
- if ( isset( $prop['headitems'] ) ) {
- $headItems = $this->formatHeadItems( $p_result->getHeadItems() );
+ if ( isset( $prop['headitems'] ) ) {
+ $headItems = $this->formatHeadItems( $p_result->getHeadItems() );
- $userSkin->setupUserCss( $out );
- $css = $this->formatCss( $out->buildCssLinksArray() );
+ $context->getSkin()->setupUserCss( $context->getOutput() );
+ $css = $this->formatCss( $context->getOutput()->buildCssLinksArray() );
- $scripts = array( $out->getHeadScripts( $userSkin ) );
+ $scripts = array( $context->getOutput()->getHeadScripts( $context->getSkin() ) );
- $result_array['headitems'] = array_merge( $headItems, $css, $scripts );
- }
+ $result_array['headitems'] = array_merge( $headItems, $css, $scripts );
+ }
- if ( isset( $prop['headhtml'] ) ) {
- $result_array['headhtml'] = array();
- $result->setContent( $result_array['headhtml'], $out->headElement( $userSkin ) );
+ if ( isset( $prop['headhtml'] ) ) {
+ $result_array['headhtml'] = array();
+ $result->setContent( $result_array['headhtml'], $context->getOutput()->headElement( $context->getSkin() ) );
+ }
}
if ( isset( $prop['iwlinks'] ) ) {
$result_array['iwlinks'] = $this->formatIWLinks( $p_result->getInterwikiLinks() );
}
-
+
if ( isset( $prop['wikitext'] ) ) {
$result_array['wikitext'] = array();
$result->setContent( $result_array['wikitext'], $this->text );
@@ -278,10 +286,6 @@ class ApiParse extends ApiBase {
}
}
- if ( !is_null( $oldid ) ) {
- $result_array['revid'] = intval( $oldid );
- }
-
$result_mapping = array(
'redirects' => 'r',
'langlinks' => 'll',
@@ -303,11 +307,11 @@ class ApiParse extends ApiBase {
}
/**
- * @param $articleObj Article
- * @param $titleObj Title
- * @param $popts ParserOptions
- * @param $pageId Int
- * @param $getWikitext Bool
+ * @param $articleObj Article
+ * @param $titleObj Title
+ * @param $popts ParserOptions
+ * @param $pageId Int
+ * @param $getWikitext Bool
* @return ParserOutput
*/
private function getParsedSectionOrText( $articleObj, $titleObj, $popts, $pageId = null, $getWikitext = false ) {
@@ -346,10 +350,10 @@ class ApiParse extends ApiBase {
$entry = array();
$bits = explode( ':', $link, 2 );
$title = Title::newFromText( $link );
-
+
$entry['lang'] = $bits[0];
if ( $title ) {
- $entry['url'] = $title->getFullURL();
+ $entry['url'] = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
}
$this->getResult()->setContent( $entry, $bits[1] );
$result[] = $entry;
@@ -369,17 +373,41 @@ class ApiParse extends ApiBase {
}
private function categoriesHtml( $categories ) {
- global $wgOut, $wgUser;
- $wgOut->addCategoryLinks( $categories );
- $sk = $wgUser->getSkin();
- return $sk->getCategories();
+ $context = $this->createContext();
+ $context->getOutput()->addCategoryLinks( $categories );
+ return $context->getSkin()->getCategories();
}
+ /**
+ * @deprecated since 1.18 No modern skin generates language links this way, please use language links
+ * data to generate your own HTML.
+ */
private function languagesHtml( $languages ) {
- global $wgOut, $wgUser;
- $wgOut->setLanguageLinks( $languages );
- $sk = $wgUser->getSkin();
- return $sk->otherLanguages();
+ global $wgContLang, $wgHideInterlanguageLinks;
+
+ if ( $wgHideInterlanguageLinks || count( $languages ) == 0 ) {
+ return '';
+ }
+
+ $s = htmlspecialchars( wfMsg( 'otherlanguages' ) . wfMsg( 'colon-separator' ) );
+
+ $langs = array();
+ foreach ( $languages as $l ) {
+ $nt = Title::newFromText( $l );
+ $text = $wgContLang->getLanguageName( $nt->getInterwiki() );
+
+ $langs[] = Html::element( 'a',
+ array( 'href' => $nt->getFullURL(), 'title' => $nt->getText(), 'class' => "external" ),
+ $text == '' ? $l : $text );
+ }
+
+ $s .= implode( htmlspecialchars( wfMsgExt( 'pipe-separator', 'escapenoentities' ) ), $langs );
+
+ if ( $wgContLang->isRTL() ) {
+ $s = Html::rawElement( 'span', array( 'dir' => "LTR" ), $s );
+ }
+
+ return $s;
}
private function formatLinks( $links ) {
@@ -407,7 +435,7 @@ class ApiParse extends ApiBase {
$title = Title::newFromText( "{$prefix}:{$title}" );
if ( $title ) {
- $entry['url'] = $title->getFullURL();
+ $entry['url'] = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
}
$this->getResult()->setContent( $entry, $title->getFullText() );
@@ -455,9 +483,13 @@ class ApiParse extends ApiBase {
'text' => null,
'summary' => null,
'page' => null,
- 'pageid' => null,
+ 'pageid' => array(
+ ApiBase::PARAM_TYPE => 'integer',
+ ),
'redirects' => false,
- 'oldid' => null,
+ 'oldid' => array(
+ ApiBase::PARAM_TYPE => 'integer',
+ ),
'prop' => array(
ApiBase::PARAM_DFLT => 'text|langlinks|categories|links|templates|images|externallinks|sections|revid|displaytitle',
ApiBase::PARAM_ISMULTI => true,
@@ -493,7 +525,7 @@ class ApiParse extends ApiBase {
return array(
'text' => 'Wikitext to parse',
'summary' => 'Summary to parse',
- 'redirects' => "If the {$p}page parameter is set to a redirect, resolve it",
+ 'redirects' => "If the {$p}page or the {$p}pageid parameter is set to a redirect, resolve it",
'title' => 'Title of page the text belongs to',
'page' => "Parse the content of this page. Cannot be used together with {$p}text and {$p}title",
'pageid' => "Parse the content of this page. Overrides {$p}page",
@@ -501,16 +533,16 @@ class ApiParse extends ApiBase {
'prop' => array(
'Which pieces of information to get',
' text - Gives the parsed text of the wikitext',
- ' langlinks - Gives the langlinks the parsed wikitext',
- ' categories - Gives the categories of the parsed wikitext',
- ' categorieshtml - Gives the html version of the categories',
- ' languageshtml - Gives the html version of the languagelinks',
+ ' langlinks - Gives the language links in the parsed wikitext',
+ ' categories - Gives the categories in the parsed wikitext',
+ ' categorieshtml - Gives the HTML version of the categories',
+ ' languageshtml - Gives the HTML version of the language links',
' links - Gives the internal links in the parsed wikitext',
' templates - Gives the templates in the parsed wikitext',
' images - Gives the images in the parsed wikitext',
' externallinks - Gives the external links in the parsed wikitext',
' sections - Gives the sections in the parsed wikitext',
- ' revid - Adds the revision id of the parsed page',
+ ' revid - Adds the revision ID of the parsed page',
' displaytitle - Adds the title of the parsed wikitext',
' headitems - Gives items to put in the <head> of the page',
' headhtml - Gives parsed <head> of the page',
@@ -532,7 +564,7 @@ class ApiParse extends ApiBase {
}
public function getDescription() {
- return 'This module parses wikitext and returns parser output';
+ return 'Parses wikitext and returns parser output';
}
public function getPossibleErrors() {
@@ -543,6 +575,7 @@ class ApiParse extends ApiBase {
array( 'code' => 'missingtitle', 'info' => 'The page you specified doesn\'t exist' ),
array( 'code' => 'nosuchsection', 'info' => 'There is no section sectionnumber in page' ),
array( 'nosuchpageid' ),
+ array( 'invalidtitle', 'title' ),
) );
}
@@ -552,7 +585,11 @@ class ApiParse extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Parsing_wikitext#parse';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiParse.php 89672 2011-06-07 18:45:20Z catrope $';
+ return __CLASS__ . ': $Id: ApiParse.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiPatrol.php b/includes/api/ApiPatrol.php
index 08835743..8066e655 100644
--- a/includes/api/ApiPatrol.php
+++ b/includes/api/ApiPatrol.php
@@ -42,13 +42,15 @@ class ApiPatrol extends ApiBase {
* Patrols the article or provides the reason the patrol failed.
*/
public function execute() {
+ global $wgUser;
+
$params = $this->extractRequestParams();
$rc = RecentChange::newFromID( $params['rcid'] );
if ( !$rc instanceof RecentChange ) {
$this->dieUsageMsg( array( 'nosuchrcid', $params['rcid'] ) );
}
- $retval = RecentChange::markPatrolled( $params['rcid'] );
+ $retval = $rc->doMarkPatrolled( $wgUser );
if ( $retval ) {
$this->dieUsageMsg( reset( $retval ) );
@@ -108,7 +110,11 @@ class ApiPatrol extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Patrol';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiPatrol.php 78437 2010-12-15 14:14:16Z catrope $';
+ return __CLASS__ . ': $Id: ApiPatrol.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiProtect.php b/includes/api/ApiProtect.php
index 3a1d18e0..5556262e 100644
--- a/includes/api/ApiProtect.php
+++ b/includes/api/ApiProtect.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 1, 2007
*
- * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@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
@@ -63,6 +63,7 @@ class ApiProtect extends ApiBase {
}
$restrictionTypes = $titleObj->getRestrictionTypes();
+ $dbr = wfGetDB( DB_SLAVE );
$protections = array();
$expiryarray = array();
@@ -72,10 +73,10 @@ class ApiProtect extends ApiBase {
$protections[$p[0]] = ( $p[1] == 'all' ? '' : $p[1] );
if ( $titleObj->exists() && $p[0] == 'create' ) {
- $this->dieUsageMsg( array( 'create-titleexists' ) );
+ $this->dieUsageMsg( 'create-titleexists' );
}
if ( !$titleObj->exists() && $p[0] != 'create' ) {
- $this->dieUsageMsg( array( 'missingtitle-createonly' ) );
+ $this->dieUsageMsg( 'missingtitle-createonly' );
}
if ( !in_array( $p[0], $restrictionTypes ) && $p[0] != 'create' ) {
@@ -86,7 +87,7 @@ class ApiProtect extends ApiBase {
}
if ( in_array( $expiry[$i], array( 'infinite', 'indefinite', 'never' ) ) ) {
- $expiryarray[$p[0]] = Block::infinity();
+ $expiryarray[$p[0]] = $dbr->getInfinity();
} else {
$exp = strtotime( $expiry[$i] );
if ( $exp < 0 || !$exp ) {
@@ -100,7 +101,7 @@ class ApiProtect extends ApiBase {
$expiryarray[$p[0]] = $exp;
}
$resultProtections[] = array( $p[0] => $protections[$p[0]],
- 'expiry' => ( $expiryarray[$p[0]] == Block::infinity() ?
+ 'expiry' => ( $expiryarray[$p[0]] == $dbr->getInfinity() ?
'infinite' :
wfTimestamp( TS_ISO_8601, $expiryarray[$p[0]] ) ) );
}
@@ -129,8 +130,9 @@ class ApiProtect extends ApiBase {
$res['cascade'] = '';
}
$res['protections'] = $resultProtections;
- $this->getResult()->setIndexedTagName( $res['protections'], 'protection' );
- $this->getResult()->addValue( null, $this->getModuleName(), $res );
+ $result = $this->getResult();
+ $result->setIndexedTagName( $res['protections'], 'protection' );
+ $result->addValue( null, $this->getModuleName(), $res );
}
public function mustBePosted() {
@@ -222,7 +224,11 @@ class ApiProtect extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Protect';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiProtect.php 77192 2010-11-23 22:05:27Z btongminh $';
+ return __CLASS__ . ': $Id: ApiProtect.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiPurge.php b/includes/api/ApiPurge.php
index a17abf16..bdf911cb 100644
--- a/includes/api/ApiPurge.php
+++ b/includes/api/ApiPurge.php
@@ -49,6 +49,9 @@ class ApiPurge extends ApiBase {
!$this->getMain()->getRequest()->wasPosted() ) {
$this->dieUsageMsg( array( 'mustbeposted', $this->getModuleName() ) );
}
+
+ $forceLinkUpdate = $params['forcelinkupdate'];
+
$result = array();
foreach ( $params['titles'] as $t ) {
$r = array();
@@ -65,13 +68,39 @@ class ApiPurge extends ApiBase {
$result[] = $r;
continue;
}
- $article = MediaWiki::articleFromTitle( $title );
+ $context = $this->createContext();
+ $context->setTitle( $title );
+ $article = Article::newFromTitle( $title, $context );
$article->doPurge(); // Directly purge and skip the UI part of purge().
$r['purged'] = '';
+
+ if( $forceLinkUpdate ) {
+ if ( !$wgUser->pingLimiter() ) {
+ global $wgParser, $wgEnableParserCache;
+ $popts = new ParserOptions();
+ $p_result = $wgParser->parse( $article->getContent(), $title, $popts );
+
+ # Update the links tables
+ $u = new LinksUpdate( $title, $p_result );
+ $u->doUpdate();
+
+ $r['linkupdate'] = '';
+
+ if ( $wgEnableParserCache ) {
+ $pcache = ParserCache::singleton();
+ $pcache->save( $p_result, $article, $popts );
+ }
+ } else {
+ $this->setWarning( $this->parseMsg( array( 'actionthrottledtext' ) ) );
+ $forceLinkUpdate = false;
+ }
+ }
+
$result[] = $r;
}
- $this->getResult()->setIndexedTagName( $result, 'page' );
- $this->getResult()->addValue( null, $this->getModuleName(), $result );
+ $apiResult = $this->getResult();
+ $apiResult->setIndexedTagName( $result, 'page' );
+ $apiResult->addValue( null, $this->getModuleName(), $result );
}
public function isWriteMode() {
@@ -83,19 +112,21 @@ class ApiPurge extends ApiBase {
'titles' => array(
ApiBase::PARAM_ISMULTI => true,
ApiBase::PARAM_REQUIRED => true
- )
+ ),
+ 'forcelinkupdate' => false,
);
}
public function getParamDescription() {
return array(
'titles' => 'A list of titles',
+ 'forcelinkupdate' => 'Update the links tables',
);
}
public function getDescription() {
return array( 'Purge the cache for the given titles.',
- 'This module requires a POST request if the user is not logged in.'
+ 'Requires a POST request if the user is not logged in.'
);
}
@@ -111,7 +142,11 @@ class ApiPurge extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Purge';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiPurge.php 74944 2010-10-18 09:19:20Z catrope $';
+ return __CLASS__ . ': $Id: ApiPurge.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQuery.php b/includes/api/ApiQuery.php
index f88aa850..49fd8569 100644
--- a/includes/api/ApiQuery.php
+++ b/includes/api/ApiQuery.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 7, 2006
*
@@ -43,8 +43,13 @@ if ( !defined( 'MEDIAWIKI' ) ) {
class ApiQuery extends ApiBase {
private $mPropModuleNames, $mListModuleNames, $mMetaModuleNames;
+
+ /**
+ * @var ApiPageSet
+ */
private $mPageSet;
- private $params, $redirects, $convertTitles;
+
+ private $params, $redirects, $convertTitles, $iwUrl;
private $mQueryPropModules = array(
'info' => 'ApiQueryInfo',
@@ -77,6 +82,7 @@ class ApiQuery extends ApiBase {
'filearchive' => 'ApiQueryFilearchive',
'imageusage' => 'ApiQueryBacklinks',
'iwbacklinks' => 'ApiQueryIWBacklinks',
+ 'langbacklinks' => 'ApiQueryLangBacklinks',
'logevents' => 'ApiQueryLogEvents',
'recentchanges' => 'ApiQueryRecentChanges',
'search' => 'ApiQuerySearch',
@@ -88,6 +94,7 @@ class ApiQuery extends ApiBase {
'users' => 'ApiQueryUsers',
'random' => 'ApiQueryRandom',
'protectedtitles' => 'ApiQueryProtectedTitles',
+ 'querypage' => 'ApiQueryQueryPage',
);
private $mQueryMetaModules = array(
@@ -184,15 +191,15 @@ class ApiQuery extends ApiBase {
* @return mixed string or null
*/
function getModuleType( $moduleName ) {
- if ( array_key_exists ( $moduleName, $this->mQueryPropModules ) ) {
+ if ( isset( $this->mQueryPropModules[$moduleName] ) ) {
return 'prop';
}
- if ( array_key_exists ( $moduleName, $this->mQueryListModules ) ) {
+ if ( isset( $this->mQueryListModules[$moduleName] ) ) {
return 'list';
}
- if ( array_key_exists ( $moduleName, $this->mQueryMetaModules ) ) {
+ if ( isset( $this->mQueryMetaModules[$moduleName] ) ) {
return 'meta';
}
@@ -225,6 +232,7 @@ class ApiQuery extends ApiBase {
$this->params = $this->extractRequestParams();
$this->redirects = $this->params['redirects'];
$this->convertTitles = $this->params['converttitles'];
+ $this->iwUrl = $this->params['iwurl'];
// Create PageSet
$this->mPageSet = new ApiPageSet( $this, $this->redirects, $this->convertTitles );
@@ -272,6 +280,8 @@ class ApiQuery extends ApiBase {
* Update a cache mode string, applying the cache mode of a new module to it.
* The cache mode may increase in the level of privacy, but public modules
* added to private data do not decrease the level of privacy.
+ *
+ * @return string
*/
protected function mergeCacheMode( $cacheMode, $modCacheMode ) {
if ( $modCacheMode === 'anon-public-user-private' ) {
@@ -307,9 +317,8 @@ class ApiQuery extends ApiBase {
* @param $moduleList Array array(modulename => classname)
*/
private function instantiateModules( &$modules, $param, $moduleList ) {
- $list = @$this->params[$param];
- if ( !is_null ( $list ) ) {
- foreach ( $list as $moduleName ) {
+ if ( isset( $this->params[$param] ) ) {
+ foreach ( $this->params[$param] as $moduleName ) {
$modules[] = new $moduleList[$moduleName] ( $this, $moduleName );
}
}
@@ -359,10 +368,15 @@ class ApiQuery extends ApiBase {
// Interwiki titles
$intrwValues = array();
foreach ( $pageSet->getInterwikiTitles() as $rawTitleStr => $interwikiStr ) {
- $intrwValues[] = array(
+ $item = array(
'title' => $rawTitleStr,
- 'iw' => $interwikiStr
+ 'iw' => $interwikiStr,
);
+ if ( $this->iwUrl ) {
+ $title = Title::newFromText( $rawTitleStr );
+ $item['url'] = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
+ }
+ $intrwValues[] = $item;
}
if ( count( $intrwValues ) ) {
@@ -372,11 +386,15 @@ class ApiQuery extends ApiBase {
// Show redirect information
$redirValues = array();
- foreach ( $pageSet->getRedirectTitles() as $titleStrFrom => $titleStrTo ) {
- $redirValues[] = array(
+ foreach ( $pageSet->getRedirectTitles() as $titleStrFrom => $titleTo ) {
+ $r = array(
'from' => strval( $titleStrFrom ),
- 'to' => $titleStrTo
+ 'to' => $titleTo->getPrefixedText(),
);
+ if ( $titleTo->getFragment() !== '' ) {
+ $r['tofragment'] = $titleTo->getFragment();
+ }
+ $redirValues[] = $r;
}
if ( count( $redirValues ) ) {
@@ -424,7 +442,7 @@ class ApiQuery extends ApiBase {
ApiQueryBase::addTitleInfo( $vals, $title );
$vals['special'] = '';
if ( $title->getNamespace() == NS_SPECIAL &&
- !SpecialPage::exists( $title->getDbKey() ) ) {
+ !SpecialPageFactory::exists( $title->getDbKey() ) ) {
$vals['missing'] = '';
} elseif ( $title->getNamespace() == NS_MEDIA &&
!wfFindFile( $title ) ) {
@@ -465,17 +483,13 @@ class ApiQuery extends ApiBase {
private function doExport( $pageSet, $result ) {
$exportTitles = array();
$titles = $pageSet->getGoodTitles();
- if( count( $titles ) ) {
+ if ( count( $titles ) ) {
foreach ( $titles as $title ) {
if ( $title->userCanRead() ) {
$exportTitles[] = $title;
}
}
}
- // only export when there are titles
- if ( !count( $exportTitles ) ) {
- return;
- }
$exporter = new WikiExporter( $this->getDB() );
// WikiExporter writes to stdout, so catch its
@@ -578,6 +592,7 @@ class ApiQuery extends ApiBase {
'indexpageids' => false,
'export' => false,
'exportnowrap' => false,
+ 'iwurl' => false,
);
}
@@ -586,16 +601,14 @@ class ApiQuery extends ApiBase {
* @return string
*/
public function makeHelpMsg() {
- $msg = '';
-
// Make sure the internal object is empty
// (just in case a sub-module decides to optimize during instantiation)
$this->mPageSet = null;
$this->mAllowedGenerators = array(); // Will be repopulated
- $querySeparator = str_repeat( '--- ', 8 );
- $moduleSeparator = str_repeat( '*** ', 10 );
- $msg .= "\n$querySeparator Query: Prop $querySeparator\n\n";
+ $querySeparator = str_repeat( '--- ', 12 );
+ $moduleSeparator = str_repeat( '*** ', 14 );
+ $msg = "\n$querySeparator Query: Prop $querySeparator\n\n";
$msg .= $this->makeHelpMsgHelper( $this->mQueryPropModules, 'prop' );
$msg .= "\n$querySeparator Query: List $querySeparator\n\n";
$msg .= $this->makeHelpMsgHelper( $this->mQueryListModules, 'list' );
@@ -621,7 +634,7 @@ class ApiQuery extends ApiBase {
$moduleDescriptions = array();
foreach ( $moduleList as $moduleName => $moduleClass ) {
- $module = new $moduleClass ( $this, $moduleName, null );
+ $module = new $moduleClass( $this, $moduleName, null );
$msg = ApiMain::makeHelpMsgHeader( $module, $paramName );
$msg2 = $module->makeHelpMsg();
@@ -664,6 +677,7 @@ class ApiQuery extends ApiBase {
'indexpageids' => 'Include an additional pageids section listing all returned page IDs',
'export' => 'Export the current revisions of all given or generated pages',
'exportnowrap' => 'Return the export XML without wrapping it in an XML result (same format as Special:Export). Can only be used with export',
+ 'iwurl' => 'Whether to get the full URL if the title is an interwiki link',
);
}
@@ -688,10 +702,18 @@ class ApiQuery extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return array(
+ 'https://www.mediawiki.org/wiki/API:Meta',
+ 'https://www.mediawiki.org/wiki/API:Properties',
+ 'https://www.mediawiki.org/wiki/API:Lists',
+ );
+ }
+
public function getVersion() {
$psModule = new ApiPageSet( $this );
$vers = array();
- $vers[] = __CLASS__ . ': $Id: ApiQuery.php 80897 2011-01-24 18:57:42Z catrope $';
+ $vers[] = __CLASS__ . ': $Id: ApiQuery.php 104449 2011-11-28 15:52:04Z reedy $';
$vers[] = $psModule->getVersion();
return $vers;
}
diff --git a/includes/api/ApiQueryAllCategories.php b/includes/api/ApiQueryAllCategories.php
index c1473252..c7f4b0aa 100644
--- a/includes/api/ApiQueryAllCategories.php
+++ b/includes/api/ApiQueryAllCategories.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on December 12, 2007
*
- * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@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
@@ -53,6 +53,10 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function run( $resultPageSet = null ) {
$db = $this->getDB();
$params = $this->extractRequestParams();
@@ -65,6 +69,10 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
$to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
$this->addWhereRange( 'cat_title', $dir, $from, $to );
+ $min = $params['min'];
+ $max = $params['max'];
+ $this->addWhereRange( 'cat_pages', $dir, $min, $max );
+
if ( isset( $params['prefix'] ) ) {
$this->addWhere( 'cat_title' . $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
}
@@ -144,6 +152,14 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
'descending'
),
),
+ 'min' => array(
+ ApiBase::PARAM_DFLT => null,
+ ApiBase::PARAM_TYPE => 'integer'
+ ),
+ 'max' => array(
+ ApiBase::PARAM_DFLT => null,
+ ApiBase::PARAM_TYPE => 'integer'
+ ),
'limit' => array(
ApiBase::PARAM_DFLT => 10,
ApiBase::PARAM_TYPE => 'limit',
@@ -165,6 +181,8 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
'to' => 'The category to stop enumerating at',
'prefix' => 'Search for all category titles that begin with this value',
'dir' => 'Direction to sort in',
+ 'min' => 'Minimum number of category members',
+ 'max' => 'Maximum number of category members',
'limit' => 'How many categories to return',
'prop' => array(
'Which properties to get',
@@ -185,7 +203,11 @@ class ApiQueryAllCategories extends ApiQueryGeneratorBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Allcategories';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryAllCategories.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiQueryAllCategories.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryAllLinks.php b/includes/api/ApiQueryAllLinks.php
index 78784845..90620e91 100644
--- a/includes/api/ApiQueryAllLinks.php
+++ b/includes/api/ApiQueryAllLinks.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on July 7, 2007
*
@@ -52,6 +52,10 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function run( $resultPageSet = null ) {
$db = $this->getDB();
$params = $this->extractRequestParams();
@@ -90,27 +94,22 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
);
}
- if ( !is_null( $params['from'] ) ) {
- $this->addWhere( 'pl_title>=' . $db->addQuotes( $this->titlePartToKey( $params['from'] ) ) );
- }
- if ( !is_null( $params['to'] ) ) {
- $this->addWhere( 'pl_title<=' . $db->addQuotes( $this->titlePartToKey( $params['to'] ) ) );
- }
+ $from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
+ $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+ $this->addWhereRange( 'pl_title', 'newer', $from, $to );
+
if ( isset( $params['prefix'] ) ) {
$this->addWhere( 'pl_title' . $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
}
- $this->addFields( array(
- 'pl_title',
- ) );
+ $this->addFields( 'pl_title' );
$this->addFieldsIf( 'pl_from', !$params['unique'] );
$this->addOption( 'USE INDEX', 'pl_namespace' );
$limit = $params['limit'];
$this->addOption( 'LIMIT', $limit + 1 );
- if ( $params['unique'] ) {
- $this->addOption( 'ORDER BY', 'pl_title' );
- } else {
+
+ if ( !$params['unique'] ) {
$this->addOption( 'ORDER BY', 'pl_title, pl_from' );
}
@@ -228,7 +227,11 @@ class ApiQueryAllLinks extends ApiQueryGeneratorBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Alllinks';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryAllLinks.php 77192 2010-11-23 22:05:27Z btongminh $';
+ return __CLASS__ . ': $Id: ApiQueryAllLinks.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryAllUsers.php b/includes/api/ApiQueryAllUsers.php
index 77f507fc..c0984d95 100644
--- a/includes/api/ApiQueryAllUsers.php
+++ b/includes/api/ApiQueryAllUsers.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on July 7, 2007
*
@@ -49,67 +49,119 @@ class ApiQueryAllUsers extends ApiQueryBase {
$fld_blockinfo = isset( $prop['blockinfo'] );
$fld_editcount = isset( $prop['editcount'] );
$fld_groups = isset( $prop['groups'] );
+ $fld_rights = isset( $prop['rights'] );
$fld_registration = isset( $prop['registration'] );
+ $fld_implicitgroups = isset( $prop['implicitgroups'] );
} else {
- $fld_blockinfo = $fld_editcount = $fld_groups = $fld_registration = $fld_rights = false;
+ $fld_blockinfo = $fld_editcount = $fld_groups = $fld_registration = $fld_rights = $fld_implicitgroups = false;
}
$limit = $params['limit'];
- $this->addTables( 'user', 'u1' );
+
+ $this->addTables( 'user' );
$useIndex = true;
- if ( !is_null( $params['from'] ) ) {
- $this->addWhere( 'u1.user_name >= ' . $db->addQuotes( $this->keyToTitle( $params['from'] ) ) );
+ $dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
+ $from = is_null( $params['from'] ) ? null : $this->keyToTitle( $params['from'] );
+ $to = is_null( $params['to'] ) ? null : $this->keyToTitle( $params['to'] );
+
+ $this->addWhereRange( 'user_name', $dir, $from, $to );
+
+ if ( !is_null( $params['prefix'] ) ) {
+ $this->addWhere( 'user_name' . $db->buildLike( $this->keyToTitle( $params['prefix'] ), $db->anyString() ) );
}
- if ( !is_null( $params['to'] ) ) {
- $this->addWhere( 'u1.user_name <= ' . $db->addQuotes( $this->keyToTitle( $params['to'] ) ) );
+
+ if ( !is_null( $params['rights'] ) ) {
+ $groups = array();
+ foreach( $params['rights'] as $r ) {
+ $groups = array_merge( $groups, User::getGroupsWithPermission( $r ) );
+ }
+
+ $groups = array_unique( $groups );
+
+ if ( is_null( $params['group'] ) ) {
+ $params['group'] = $groups;
+ } else {
+ $params['group'] = array_unique( array_merge( $params['group'], $groups ) );
+ }
}
- if ( !is_null( $params['prefix'] ) ) {
- $this->addWhere( 'u1.user_name' . $db->buildLike( $this->keyToTitle( $params['prefix'] ), $db->anyString() ) );
+ if ( !is_null( $params['group'] ) && !is_null( $params['excludegroup'] ) ) {
+ $this->dieUsage( 'group and excludegroup cannot be used together', 'group-excludegroup' );
}
- if ( !is_null( $params['group'] ) ) {
+ if ( !is_null( $params['group'] ) && count( $params['group'] ) ) {
$useIndex = false;
// Filter only users that belong to a given group
$this->addTables( 'user_groups', 'ug1' );
- $ug1 = $this->getAliasedName( 'user_groups', 'ug1' );
- $this->addJoinConds( array( $ug1 => array( 'INNER JOIN', array( 'ug1.ug_user=u1.user_id',
+ $this->addJoinConds( array( 'ug1' => array( 'INNER JOIN', array( 'ug1.ug_user=user_id',
'ug1.ug_group' => $params['group'] ) ) ) );
}
+ if ( !is_null( $params['excludegroup'] ) && count( $params['excludegroup'] ) ) {
+ $useIndex = false;
+ // Filter only users don't belong to a given group
+ $this->addTables( 'user_groups', 'ug1' );
+
+ if ( count( $params['excludegroup'] ) == 1 ) {
+ $exclude = array( 'ug1.ug_group' => $params['excludegroup'][0] );
+ } else {
+ $exclude = array( $db->makeList( array( 'ug1.ug_group' => $params['excludegroup'] ), LIST_OR ) );
+ }
+ $this->addJoinConds( array( 'ug1' => array( 'LEFT OUTER JOIN',
+ array_merge( array( 'ug1.ug_user=user_id' ), $exclude )
+ )
+ ) );
+ $this->addWhere( 'ug1.ug_user IS NULL' );
+ }
+
if ( $params['witheditsonly'] ) {
- $this->addWhere( 'u1.user_editcount > 0' );
+ $this->addWhere( 'user_editcount > 0' );
}
- if ( $fld_groups ) {
+ $this->showHiddenUsersAddBlockInfo( $fld_blockinfo );
+
+ if ( $fld_groups || $fld_rights ) {
// Show the groups the given users belong to
// request more than needed to avoid not getting all rows that belong to one user
$groupCount = count( User::getAllGroups() );
$sqlLimit = $limit + $groupCount + 1;
$this->addTables( 'user_groups', 'ug2' );
- $tname = $this->getAliasedName( 'user_groups', 'ug2' );
- $this->addJoinConds( array( $tname => array( 'LEFT JOIN', 'ug2.ug_user=u1.user_id' ) ) );
+ $this->addJoinConds( array( 'ug2' => array( 'LEFT JOIN', 'ug2.ug_user=user_id' ) ) );
$this->addFields( 'ug2.ug_group ug_group2' );
} else {
$sqlLimit = $limit + 1;
}
- $this->showHiddenUsersAddBlockInfo( $fld_blockinfo );
+
+ if ( $params['activeusers'] ) {
+ global $wgActiveUserDays;
+ $this->addTables( 'recentchanges' );
+
+ $this->addJoinConds( array( 'recentchanges' => array(
+ 'INNER JOIN', 'rc_user_text=user_name'
+ ) ) );
+
+ $this->addFields( 'COUNT(*) AS recentedits' );
+
+ $this->addWhere( "rc_log_type IS NULL OR rc_log_type != 'newusers'" );
+ $timestamp = $db->timestamp( wfTimestamp( TS_UNIX ) - $wgActiveUserDays*24*3600 );
+ $this->addWhere( "rc_timestamp >= {$db->addQuotes( $timestamp )}" );
+
+ $this->addOption( 'GROUP BY', 'user_name' );
+ }
$this->addOption( 'LIMIT', $sqlLimit );
$this->addFields( array(
- 'u1.user_name',
- 'u1.user_id'
+ 'user_name',
+ 'user_id'
) );
- $this->addFieldsIf( 'u1.user_editcount', $fld_editcount );
- $this->addFieldsIf( 'u1.user_registration', $fld_registration );
+ $this->addFieldsIf( 'user_editcount', $fld_editcount );
+ $this->addFieldsIf( 'user_registration', $fld_registration );
- $this->addOption( 'ORDER BY', 'u1.user_name' );
if ( $useIndex ) {
- $u1 = $this->getAliasedName( 'user', 'u1' );
- $this->addOption( 'USE INDEX', array( $u1 => 'user_name' ) );
+ $this->addOption( 'USE INDEX', array( 'user' => 'user_name' ) );
}
$res = $this->select( __METHOD__ );
@@ -153,12 +205,13 @@ class ApiQueryAllUsers extends ApiQueryBase {
// Record new user's data
$lastUser = $row->user_name;
$lastUserData = array(
- 'name' => $lastUser,
'userid' => $row->user_id,
+ 'name' => $lastUser,
);
- if ( $fld_blockinfo && !is_null( $row->blocker_name ) ) {
- $lastUserData['blockedby'] = $row->blocker_name;
+ if ( $fld_blockinfo && !is_null( $row->ipb_by_text ) ) {
+ $lastUserData['blockedby'] = $row->ipb_by_text;
$lastUserData['blockreason'] = $row->ipb_reason;
+ $lastUserData['blockexpiry'] = $row->ipb_expiry;
}
if ( $row->ipb_deleted ) {
$lastUserData['hidden'] = '';
@@ -166,11 +219,13 @@ class ApiQueryAllUsers extends ApiQueryBase {
if ( $fld_editcount ) {
$lastUserData['editcount'] = intval( $row->user_editcount );
}
+ if ( $params['activeusers'] ) {
+ $lastUserData['recenteditcount'] = intval( $row->recentedits );
+ }
if ( $fld_registration ) {
$lastUserData['registration'] = $row->user_registration ?
wfTimestamp( TS_ISO_8601, $row->user_registration ) : '';
}
-
}
if ( $sqlLimit == $count ) {
@@ -181,10 +236,31 @@ class ApiQueryAllUsers extends ApiQueryBase {
}
// Add user's group info
- if ( $fld_groups && !is_null( $row->ug_group2 ) ) {
- $lastUserData['groups'][] = $row->ug_group2;
+ if ( $fld_groups ) {
+ if ( !isset( $lastUserData['groups'] ) ) {
+ $lastUserData['groups'] = ApiQueryUsers::getAutoGroups( User::newFromName( $lastUser ) );
+ }
+
+ if ( !is_null( $row->ug_group2 ) ) {
+ $lastUserData['groups'][] = $row->ug_group2;
+ }
$result->setIndexedTagName( $lastUserData['groups'], 'g' );
}
+
+ if ( $fld_implicitgroups && !isset( $lastUserData['implicitgroups'] ) ) {
+ $lastUserData['implicitgroups'] = ApiQueryUsers::getAutoGroups( User::newFromName( $lastUser ) );
+ $result->setIndexedTagName( $lastUserData['implicitgroups'], 'g' );
+ }
+ if ( $fld_rights ) {
+ if ( !isset( $lastUserData['rights'] ) ) {
+ $lastUserData['rights'] = User::getGroupPermissions( User::newFromName( $lastUser )->getAutomaticGroups() );
+ }
+ if ( !is_null( $row->ug_group2 ) ) {
+ $lastUserData['rights'] = array_unique( array_merge( $lastUserData['rights'],
+ User::getGroupPermissions( array( $row->ug_group2 ) ) ) );
+ }
+ $result->setIndexedTagName( $lastUserData['rights'], 'r' );
+ }
}
if ( is_array( $lastUserData ) ) {
@@ -204,18 +280,37 @@ class ApiQueryAllUsers extends ApiQueryBase {
}
public function getAllowedParams() {
+ $userGroups = User::getAllGroups();
return array(
'from' => null,
'to' => null,
'prefix' => null,
+ 'dir' => array(
+ ApiBase::PARAM_DFLT => 'ascending',
+ ApiBase::PARAM_TYPE => array(
+ 'ascending',
+ 'descending'
+ ),
+ ),
'group' => array(
- ApiBase::PARAM_TYPE => User::getAllGroups()
+ ApiBase::PARAM_TYPE => $userGroups,
+ ApiBase::PARAM_ISMULTI => true,
+ ),
+ 'excludegroup' => array(
+ ApiBase::PARAM_TYPE => $userGroups,
+ ApiBase::PARAM_ISMULTI => true,
+ ),
+ 'rights' => array(
+ ApiBase::PARAM_TYPE => User::getAllRights(),
+ ApiBase::PARAM_ISMULTI => true,
),
'prop' => array(
ApiBase::PARAM_ISMULTI => true,
ApiBase::PARAM_TYPE => array(
'blockinfo',
'groups',
+ 'implicitgroups',
+ 'rights',
'editcount',
'registration'
)
@@ -228,24 +323,32 @@ class ApiQueryAllUsers extends ApiQueryBase {
ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
),
'witheditsonly' => false,
+ 'activeusers' => false,
);
}
public function getParamDescription() {
+ global $wgActiveUserDays;
return array(
'from' => 'The user name to start enumerating from',
'to' => 'The user name to stop enumerating at',
'prefix' => 'Search for all users that begin with this value',
- 'group' => 'Limit users to a given group name',
+ 'dir' => 'Direction to sort in',
+ 'group' => 'Limit users to given group name(s)',
+ 'excludegroup' => 'Exclude users in given group name(s)',
+ 'rights' => 'Limit users to given right(s)',
'prop' => array(
'What pieces of information to include.',
- ' blockinfo - Adds the information about a current block on the user',
- ' groups - Lists groups that the user is in',
- ' editcount - Adds the edit count of the user',
- ' registration - Adds the timestamp of when the user registered',
- '`groups` property uses more server resources and may return fewer results than the limit' ),
+ ' blockinfo - Adds the information about a current block on the user',
+ ' groups - Lists groups that the user is in. This uses more server resources and may return fewer results than the limit',
+ ' implicitgroups - Lists all the groups the user is automatically in',
+ ' rights - Lists rights that the user has',
+ ' editcount - Adds the edit count of the user',
+ ' registration - Adds the timestamp of when the user registered if available (may be blank)',
+ ),
'limit' => 'How many total user names to return',
'witheditsonly' => 'Only list users who have made edits',
+ 'activeusers' => "Only list users active in the last {$wgActiveUserDays} days(s)"
);
}
@@ -253,13 +356,23 @@ class ApiQueryAllUsers extends ApiQueryBase {
return 'Enumerate all registered users';
}
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'group-excludegroup', 'info' => 'group and excludegroup cannot be used together' ),
+ ) );
+ }
+
protected function getExamples() {
return array(
'api.php?action=query&list=allusers&aufrom=Y',
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Allusers';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryAllUsers.php 85354 2011-04-04 18:25:31Z demon $';
+ return __CLASS__ . ': $Id: ApiQueryAllUsers.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryAllimages.php b/includes/api/ApiQueryAllimages.php
index a7825519..cafff871 100644
--- a/includes/api/ApiQueryAllimages.php
+++ b/includes/api/ApiQueryAllimages.php
@@ -38,16 +38,19 @@ if ( !defined( 'MEDIAWIKI' ) ) {
*/
class ApiQueryAllimages extends ApiQueryGeneratorBase {
+ protected $mRepo;
+
public function __construct( $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'ai' );
$this->mRepo = RepoGroup::singleton()->getLocalRepo();
}
/**
- * Overide parent method to make sure to make sure the repo's DB is used
+ * Override parent method to make sure to make sure the repo's DB is used
* which may not necesarilly be the same as the local DB.
*
* TODO: allow querying non-local repos.
+ * @return DatabaseBase
*/
protected function getDB() {
return $this->mRepo->getSlaveDB();
@@ -61,6 +64,10 @@ class ApiQueryAllimages extends ApiQueryGeneratorBase {
return 'public';
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
public function executeGenerator( $resultPageSet ) {
if ( $resultPageSet->isResolvingRedirects() ) {
$this->dieUsage( 'Use "gaifilterredir=nonredirects" option instead of "redirects" when using allimages as a generator', 'params' );
@@ -69,6 +76,10 @@ class ApiQueryAllimages extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function run( $resultPageSet = null ) {
$repo = $this->mRepo;
if ( !$repo instanceof LocalRepo ) {
@@ -98,12 +109,30 @@ class ApiQueryAllimages extends ApiQueryGeneratorBase {
$sha1 = false;
if ( isset( $params['sha1'] ) ) {
+ if ( !$this->validateSha1Hash( $params['sha1'] ) ) {
+ $this->dieUsage( 'The SHA1 hash provided is not valid', 'invalidsha1hash' );
+ }
$sha1 = wfBaseConvert( $params['sha1'], 16, 36, 31 );
} elseif ( isset( $params['sha1base36'] ) ) {
$sha1 = $params['sha1base36'];
+ if ( !$this->validateSha1Base36Hash( $sha1 ) ) {
+ $this->dieUsage( 'The SHA1Base36 hash provided is not valid', 'invalidsha1base36hash' );
+ }
}
if ( $sha1 ) {
- $this->addWhere( 'img_sha1=' . $db->addQuotes( $sha1 ) );
+ $this->addWhereFld( 'img_sha1', $sha1 );
+ }
+
+ if ( !is_null( $params['mime'] ) ) {
+ global $wgMiserMode;
+ if ( $wgMiserMode ) {
+ $this->dieUsage( 'MIME search disabled in Miser Mode', 'mimesearchdisabled' );
+ }
+
+ list( $major, $minor ) = File::splitMime( $params['mime'] );
+
+ $this->addWhereFld( 'img_major_mime', $major );
+ $this->addWhereFld( 'img_minor_mime', $minor );
}
$this->addTables( 'image' );
@@ -133,6 +162,8 @@ class ApiQueryAllimages extends ApiQueryGeneratorBase {
$file = $repo->newFileFromRow( $row );
$info = array_merge( array( 'name' => $row->img_name ),
ApiQueryImageInfo::getInfo( $file, $prop, $result ) );
+ self::addTitleInfo( $info, $file->getTitle() );
+
$fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $info );
if ( !$fit ) {
$this->setContinueEnumParameter( 'from', $this->keyToTitle( $row->img_name ) );
@@ -178,10 +209,11 @@ class ApiQueryAllimages extends ApiQueryGeneratorBase {
'sha1' => null,
'sha1base36' => null,
'prop' => array(
- ApiBase::PARAM_TYPE => ApiQueryImageInfo::getPropertyNames(),
+ ApiBase::PARAM_TYPE => ApiQueryImageInfo::getPropertyNames( $this->propertyFilter ),
ApiBase::PARAM_DFLT => 'timestamp|url',
ApiBase::PARAM_ISMULTI => true
- )
+ ),
+ 'mime' => null,
);
}
@@ -196,24 +228,13 @@ class ApiQueryAllimages extends ApiQueryGeneratorBase {
'limit' => 'How many images in total to return',
'sha1' => "SHA1 hash of image. Overrides {$this->getModulePrefix()}sha1base36",
'sha1base36' => 'SHA1 hash of image in base 36 (used in MediaWiki)',
- 'prop' => array(
- 'Which properties to get',
- ' timestamp - Adds the timestamp when the image was upload',
- ' user - Adds the username of the last uploader',
- ' userid - Adds the user id of the last uploader',
- ' comment - Adds the comment of the last upload',
- ' url - Adds the URL of the image and its description page',
- ' size - Adds the size of the image in bytes and its height and width',
- ' dimensions - Alias of size',
- ' sha1 - Adds the sha1 of the image',
- ' mime - Adds the MIME of the image',
- ' thumbmime - Adds the MIME of the tumbnail for the image',
- ' archivename - Adds the file name of the archive version for non-latest versions',
- ' bitdepth - Adds the bit depth of the version',
- ),
+ 'prop' => ApiQueryImageInfo::getPropertyDescriptions( $this->propertyFilter ),
+ 'mime' => 'What MIME type to search for. e.g. image/jpeg. Disabled in Miser Mode',
);
}
+ private $propertyFilter = array( 'archivename' );
+
public function getDescription() {
return 'Enumerate all images sequentially';
}
@@ -222,6 +243,9 @@ class ApiQueryAllimages extends ApiQueryGeneratorBase {
return array_merge( parent::getPossibleErrors(), array(
array( 'code' => 'params', 'info' => 'Use "gaifilterredir=nonredirects" option instead of "redirects" when using allimages as a generator' ),
array( 'code' => 'unsupportedrepo', 'info' => 'Local file repository does not support querying all images' ),
+ 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' ),
) );
}
@@ -236,7 +260,11 @@ class ApiQueryAllimages extends ApiQueryGeneratorBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Allimages';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryAllimages.php 71838 2010-08-28 01:18:18Z reedy $';
+ return __CLASS__ . ': $Id: ApiQueryAllimages.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryAllmessages.php b/includes/api/ApiQueryAllmessages.php
index 81ff255a..a26011bc 100644
--- a/includes/api/ApiQueryAllmessages.php
+++ b/includes/api/ApiQueryAllmessages.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Dec 1, 2007
*
@@ -43,12 +43,22 @@ class ApiQueryAllmessages extends ApiQueryBase {
public function execute() {
$params = $this->extractRequestParams();
- global $wgLang;
+ if ( is_null( $params['lang'] ) ) {
+ global $wgLang;
+ $langObj = $wgLang;
+ } else {
+ $langObj = Language::factory( $params['lang'] );
+ }
- $oldLang = null;
- if ( !is_null( $params['lang'] ) ) {
- $oldLang = $wgLang; // Keep $wgLang for restore later
- $wgLang = Language::factory( $params['lang'] );
+ if ( $params['enableparser'] ) {
+ if ( !is_null( $params['title'] ) ) {
+ $title = Title::newFromText( $params['title'] );
+ if ( !$title ) {
+ $this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
+ }
+ } else {
+ $title = Title::newFromText( 'API' );
+ }
}
$prop = array_flip( (array)$params['prop'] );
@@ -62,7 +72,26 @@ class ApiQueryAllmessages extends ApiQueryBase {
$messages_target = $params['messages'];
}
- // Filter messages
+ // Filter messages that have the specified prefix
+ // Because we sorted the message array earlier, they will appear in a clump:
+ if ( isset( $params['prefix'] ) ) {
+ $skip = false;
+ $messages_filtered = array();
+ foreach ( $messages_target as $message ) {
+ // === 0: must be at beginning of string (position 0)
+ if ( strpos( $message, $params['prefix'] ) === 0 ) {
+ if( !$skip ) {
+ $skip = true;
+ }
+ $messages_filtered[] = $message;
+ } elseif ( $skip ) {
+ break;
+ }
+ }
+ $messages_target = $messages_filtered;
+ }
+
+ // Filter messages that contain specified string
if ( isset( $params['filter'] ) ) {
$messages_filtered = array();
foreach ( $messages_target as $message ) {
@@ -74,6 +103,18 @@ class ApiQueryAllmessages extends ApiQueryBase {
$messages_target = $messages_filtered;
}
+ // Whether we have any sort of message customisation filtering
+ $customiseFilterEnabled = $params['customised'] !== 'all';
+ if ( $customiseFilterEnabled ) {
+ global $wgContLang;
+ $lang = $langObj->getCode();
+
+ $customisedMessages = AllmessagesTablePager::getCustomisedStatuses(
+ array_map( array( $langObj, 'ucfirst'), $messages_target ), $lang, $lang != $wgContLang->getCode() );
+
+ $customised = $params['customised'] === 'modified';
+ }
+
// Get all requested messages and print the result
$skip = !is_null( $params['from'] );
$useto = !is_null( $params['to'] );
@@ -83,39 +124,47 @@ class ApiQueryAllmessages extends ApiQueryBase {
if ( $skip && $message === $params['from'] ) {
$skip = false;
}
-
- if( $useto && $message > $params['to'] ) {
+
+ if ( $useto && $message > $params['to'] ) {
break;
}
if ( !$skip ) {
$a = array( 'name' => $message );
- $args = null;
+ $args = array();
if ( isset( $params['args'] ) && count( $params['args'] ) != 0 ) {
$args = $params['args'];
}
- // Check if the parser is enabled:
- if ( $params['enableparser'] ) {
- $msg = wfMsgExt( $message, array( 'parsemag' ), $args );
- } elseif ( $args ) {
- $msgString = wfMsgGetKey( $message, true, false, false );
- $msg = wfMsgReplaceArgs( $msgString, $args );
- } else {
- $msg = wfMsgGetKey( $message, true, false, false );
+
+ if ( $customiseFilterEnabled ) {
+ $messageIsCustomised = isset( $customisedMessages['pages'][ $langObj->ucfirst( $message ) ] );
+ if ( $customised === $messageIsCustomised ) {
+ if ( $customised ) {
+ $a['customised'] = '';
+ }
+ } else {
+ continue;
+ }
}
- if ( wfEmptyMsg( $message, $msg ) ) {
+ $msg = wfMessage( $message, $args )->inLanguage( $langObj );
+
+ if ( !$msg->exists() ) {
$a['missing'] = '';
} else {
- ApiResult::setContent( $a, $msg );
+ // Check if the parser is enabled:
+ if ( $params['enableparser'] ) {
+ $msgString = $msg->title( $title )->text();
+ } else {
+ $msgString = $msg->plain();
+ }
+ ApiResult::setContent( $a, $msgString );
if ( isset( $prop['default'] ) ) {
- $default = wfMsgGetKey( $message, false, false, false );
- if ( $default !== $msg ) {
- if ( wfEmptyMsg( $message, $default ) ) {
- $a['defaultmissing'] = '';
- } else {
- $a['default'] = $default;
- }
+ $default = wfMessage( $message )->inLanguage( $langObj )->useDatabase( false );
+ if ( !$default->exists() ) {
+ $a['defaultmissing'] = '';
+ } elseif ( $default->plain() != $msgString ) {
+ $a['default'] = $default->plain();
}
}
}
@@ -127,10 +176,6 @@ class ApiQueryAllmessages extends ApiQueryBase {
}
}
$result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'message' );
-
- if ( !is_null( $oldLang ) ) {
- $wgLang = $oldLang; // Restore $oldLang
- }
}
public function getCacheMode( $params ) {
@@ -160,23 +205,37 @@ class ApiQueryAllmessages extends ApiQueryBase {
),
'enableparser' => false,
'args' => array(
- ApiBase::PARAM_ISMULTI => true
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_ALLOW_DUPLICATES => true,
),
'filter' => array(),
+ 'customised' => array(
+ ApiBase::PARAM_DFLT => 'all',
+ ApiBase::PARAM_TYPE => array(
+ 'all',
+ 'modified',
+ 'unmodified'
+ )
+ ),
'lang' => null,
'from' => null,
'to' => null,
+ 'title' => null,
+ 'prefix' => null,
);
}
public function getParamDescription() {
return array(
- 'messages' => 'Which messages to output. "*" means all messages',
+ 'messages' => 'Which messages to output. "*" (default) means all messages',
'prop' => 'Which properties to get',
'enableparser' => array( 'Set to enable parser, will preprocess the wikitext of message',
'Will substitute magic words, handle templates etc.' ),
+ 'title' => 'Page name to use as context when parsing message (for enableparser option)',
'args' => 'Arguments to be substituted into message',
- 'filter' => 'Return only messages that contain this string',
+ 'prefix' => 'Return messages with this prefix',
+ 'filter' => 'Return only messages with names that contain this string',
+ 'customised' => 'Return only messages in this customisation state',
'lang' => 'Return messages in this language',
'from' => 'Return messages starting at this message',
'to' => 'Return messages ending at this message',
@@ -189,12 +248,16 @@ class ApiQueryAllmessages extends ApiQueryBase {
protected function getExamples() {
return array(
- 'api.php?action=query&meta=allmessages&amfilter=ipb-',
+ 'api.php?action=query&meta=allmessages&amprefix=ipb-',
'api.php?action=query&meta=allmessages&ammessages=august|mainpage&amlang=de',
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Meta#allmessages_.2F_am';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryAllmessages.php 73756 2010-09-25 17:08:23Z reedy $';
+ return __CLASS__ . ': $Id: ApiQueryAllmessages.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryAllpages.php b/includes/api/ApiQueryAllpages.php
index 21f72916..42928418 100644
--- a/includes/api/ApiQueryAllpages.php
+++ b/includes/api/ApiQueryAllpages.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 25, 2006
*
@@ -48,6 +48,10 @@ class ApiQueryAllpages extends ApiQueryGeneratorBase {
return 'public';
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
public function executeGenerator( $resultPageSet ) {
if ( $resultPageSet->isResolvingRedirects() ) {
$this->dieUsage( 'Use "gapfilterredir=nonredirects" option instead of "redirects" when using allpages as a generator', 'params' );
@@ -56,6 +60,10 @@ class ApiQueryAllpages extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function run( $resultPageSet = null ) {
$db = $this->getDB();
@@ -75,7 +83,7 @@ class ApiQueryAllpages extends ApiQueryGeneratorBase {
$from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
$to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
$this->addWhereRange( 'page_title', $dir, $from, $to );
-
+
if ( isset( $params['prefix'] ) ) {
$this->addWhere( 'page_title' . $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
}
@@ -103,30 +111,38 @@ class ApiQueryAllpages extends ApiQueryGeneratorBase {
}
// Page protection filtering
- if ( !empty( $params['prtype'] ) ) {
+ if ( count( $params['prtype'] ) || $params['prexpiry'] != 'all' ) {
$this->addTables( 'page_restrictions' );
$this->addWhere( 'page_id=pr_page' );
$this->addWhere( 'pr_expiry>' . $db->addQuotes( $db->timestamp() ) );
- $this->addWhereFld( 'pr_type', $params['prtype'] );
- if ( isset( $params['prlevel'] ) ) {
- // Remove the empty string and '*' from the prlevel array
- $prlevel = array_diff( $params['prlevel'], array( '', '*' ) );
+ if ( count( $params['prtype'] ) ) {
+ $this->addWhereFld( 'pr_type', $params['prtype'] );
- if ( !empty( $prlevel ) ) {
- $this->addWhereFld( 'pr_level', $prlevel );
- }
- }
- if ( $params['prfiltercascade'] == 'cascading' ) {
- $this->addWhereFld( 'pr_cascade', 1 );
- } elseif ( $params['prfiltercascade'] == 'noncascading' ) {
- $this->addWhereFld( 'pr_cascade', 0 );
- }
+ if ( isset( $params['prlevel'] ) ) {
+ // Remove the empty string and '*' from the prlevel array
+ $prlevel = array_diff( $params['prlevel'], array( '', '*' ) );
- $this->addOption( 'DISTINCT' );
+ if ( count( $prlevel ) ) {
+ $this->addWhereFld( 'pr_level', $prlevel );
+ }
+ }
+ if ( $params['prfiltercascade'] == 'cascading' ) {
+ $this->addWhereFld( 'pr_cascade', 1 );
+ } elseif ( $params['prfiltercascade'] == 'noncascading' ) {
+ $this->addWhereFld( 'pr_cascade', 0 );
+ }
+ $this->addOption( 'DISTINCT' );
+ }
$forceNameTitleIndex = false;
+ if ( $params['prexpiry'] == 'indefinite' ) {
+ $this->addWhere( "pr_expiry = {$db->addQuotes( $db->getInfinity() )} OR pr_expiry IS NULL" );
+ } elseif ( $params['prexpiry'] == 'definite' ) {
+ $this->addWhere( "pr_expiry != {$db->addQuotes( $db->getInfinity() )}" );
+ }
+
} elseif ( isset( $params['prlevel'] ) ) {
$this->dieUsage( 'prlevel may not be used without prtype', 'params' );
}
@@ -248,7 +264,15 @@ class ApiQueryAllpages extends ApiQueryGeneratorBase {
'all'
),
ApiBase::PARAM_DFLT => 'all'
- )
+ ),
+ 'prexpiry' => array(
+ ApiBase::PARAM_TYPE => array(
+ 'indefinite',
+ 'definite',
+ 'all'
+ ),
+ ApiBase::PARAM_DFLT => 'all'
+ ),
);
}
@@ -267,7 +291,13 @@ class ApiQueryAllpages extends ApiQueryGeneratorBase {
'prlevel' => "The protection level (must be used with {$p}prtype= parameter)",
'prfiltercascade' => "Filter protections based on cascadingness (ignored when {$p}prtype isn't set)",
'filterlanglinks' => 'Filter based on whether a page has langlinks',
- 'limit' => 'How many total pages to return.'
+ 'limit' => 'How many total pages to return.',
+ 'prexpiry' => array(
+ 'Which protection expiry to filter the page on',
+ ' indefinite - Get only pages with indefinite protection expiry',
+ ' definite - Get only pages with a definite (specific) protection expiry',
+ ' all - Get pages with any protections expiry'
+ ),
);
}
@@ -295,7 +325,11 @@ class ApiQueryAllpages extends ApiQueryGeneratorBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Allpages';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryAllpages.php 85354 2011-04-04 18:25:31Z demon $';
+ return __CLASS__ . ': $Id: ApiQueryAllpages.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryBacklinks.php b/includes/api/ApiQueryBacklinks.php
index b412d2d6..472406ac 100644
--- a/includes/api/ApiQueryBacklinks.php
+++ b/includes/api/ApiQueryBacklinks.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 16, 2006
*
@@ -39,26 +39,44 @@ if ( !defined( 'MEDIAWIKI' ) ) {
*/
class ApiQueryBacklinks extends ApiQueryGeneratorBase {
- private $params, $rootTitle, $contID, $redirID, $redirect;
+ /**
+ * @var Title
+ */
+ private $rootTitle;
+
+ private $params, $contID, $redirID, $redirect;
private $bl_ns, $bl_from, $bl_table, $bl_code, $bl_title, $bl_sort, $bl_fields, $hasNS;
- private $pageMap, $resultArr;
+
+ /**
+ * Maps ns and title to pageid
+ *
+ * @var array
+ */
+ private $pageMap = array();
+ private $resultArr;
+
+ private $redirTitles = array();
+ private $continueStr = null;
// output element name, database column field prefix, database table
private $backlinksSettings = array(
'backlinks' => array(
'code' => 'bl',
'prefix' => 'pl',
- 'linktbl' => 'pagelinks'
+ 'linktbl' => 'pagelinks',
+ 'helpurl' => 'https://www.mediawiki.org/wiki/API:Backlinks',
),
'embeddedin' => array(
'code' => 'ei',
'prefix' => 'tl',
- 'linktbl' => 'templatelinks'
+ 'linktbl' => 'templatelinks',
+ 'helpurl' => 'https://www.mediawiki.org/wiki/API:Embeddedin',
),
'imageusage' => array(
'code' => 'iu',
'prefix' => 'il',
- 'linktbl' => 'imagelinks'
+ 'linktbl' => 'imagelinks',
+ 'helpurl' => 'https://www.mediawiki.org/wiki/API:Imageusage',
)
);
@@ -73,6 +91,7 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
$this->bl_from = $prefix . '_from';
$this->bl_table = $settings['linktbl'];
$this->bl_code = $code;
+ $this->helpUrl = $settings['helpurl'];
$this->hasNS = $moduleName !== 'imageusage';
if ( $this->hasNS ) {
@@ -103,6 +122,10 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function prepareFirstQuery( $resultPageSet = null ) {
/* SELECT page_id, page_title, page_namespace, page_is_redirect
* FROM pagelinks, page WHERE pl_from=page_id
@@ -141,6 +164,10 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
$this->addOption( 'STRAIGHT_JOIN' );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function prepareSecondQuery( $resultPageSet = null ) {
/* SELECT page_id, page_title, page_namespace, page_is_redirect, pl_title, pl_namespace
FROM pagelinks, page WHERE pl_from=page_id
@@ -199,14 +226,21 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
$this->addOption( 'USE INDEX', array( 'page' => 'PRIMARY' ) );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function run( $resultPageSet = null ) {
$this->params = $this->extractRequestParams( false );
$this->redirect = isset( $this->params['redirect'] ) && $this->params['redirect'];
$userMax = ( $this->redirect ? ApiBase::LIMIT_BIG1 / 2 : ApiBase::LIMIT_BIG1 );
$botMax = ( $this->redirect ? ApiBase::LIMIT_BIG2 / 2 : ApiBase::LIMIT_BIG2 );
+
+ $result = $this->getResult();
+
if ( $this->params['limit'] == 'max' ) {
$this->params['limit'] = $this->getMain()->canApiHighLimits() ? $botMax : $userMax;
- $this->getResult()->setParsedLimit( $this->getModuleName(), $this->params['limit'] );
+ $result->setParsedLimit( $this->getModuleName(), $this->params['limit'] );
}
$this->processContinue();
@@ -215,9 +249,7 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
$res = $this->select( __METHOD__ . '::firstQuery' );
$count = 0;
- $this->pageMap = array(); // Maps ns and title to pageid
- $this->continueStr = null;
- $this->redirTitles = array();
+
foreach ( $res as $row ) {
if ( ++ $count > $this->params['limit'] ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
@@ -248,9 +280,9 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
// We need to keep the parent page of this redir in
if ( $this->hasNS ) {
- $parentID = $this->pageMap[$row->{$this->bl_ns}][$row->{$this->bl_title}];
+ $parentID = $this->pageMap[$row-> { $this->bl_ns } ][$row-> { $this->bl_title } ];
} else {
- $parentID = $this->pageMap[NS_IMAGE][$row->{$this->bl_title}];
+ $parentID = $this->pageMap[NS_IMAGE][$row-> { $this->bl_title } ];
}
$this->continueStr = $this->getContinueRedirStr( $parentID, $row->page_id );
break;
@@ -265,13 +297,13 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
}
if ( is_null( $resultPageSet ) ) {
// Try to add the result data in one go and pray that it fits
- $fit = $this->getResult()->addValue( 'query', $this->getModuleName(), array_values( $this->resultArr ) );
+ $fit = $result->addValue( 'query', $this->getModuleName(), array_values( $this->resultArr ) );
if ( !$fit ) {
// It didn't fit. Add elements one by one until the
// result is full.
foreach ( $this->resultArr as $pageID => $arr ) {
// Add the basic entry without redirlinks first
- $fit = $this->getResult()->addValue(
+ $fit = $result->addValue(
array( 'query', $this->getModuleName() ),
null, array_diff_key( $arr, array( 'redirlinks' => '' ) ) );
if ( !$fit ) {
@@ -280,8 +312,9 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
}
$hasRedirs = false;
- foreach ( (array)@$arr['redirlinks'] as $key => $redir ) {
- $fit = $this->getResult()->addValue(
+ $redirLinks = isset( $arr['redirlinks'] ) ? $arr['redirlinks'] : array();
+ foreach ( (array)$redirLinks as $key => $redir ) {
+ $fit = $result->addValue(
array( 'query', $this->getModuleName(), $pageID, 'redirlinks' ),
$key, $redir );
if ( !$fit ) {
@@ -291,7 +324,7 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
$hasRedirs = true;
}
if ( $hasRedirs ) {
- $this->getResult()->setIndexedTagName_internal(
+ $result->setIndexedTagName_internal(
array( 'query', $this->getModuleName(), $pageID, 'redirlinks' ),
$this->bl_code );
}
@@ -301,7 +334,7 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
}
}
- $this->getResult()->setIndexedTagName_internal(
+ $result->setIndexedTagName_internal(
array( 'query', $this->getModuleName() ),
$this->bl_code
);
@@ -383,9 +416,10 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
$this->dieUsage( 'Invalid continue param. You should pass the original value returned by the previous query', '_badcontinue' );
}
$this->contID = $contID;
- $redirID = intval( @$continueList[3] );
+ $id2 = isset( $continueList[3] ) ? $continueList[3] : null;
+ $redirID = intval( $id2 );
- if ( $redirID === 0 && @$continueList[3] !== '0' ) {
+ if ( $redirID === 0 && $id2 !== '0' ) {
// This one isn't required
return;
}
@@ -496,7 +530,11 @@ class ApiQueryBacklinks extends ApiQueryGeneratorBase {
return $examples[$this->getModuleName()];
}
+ public function getHelpUrls() {
+ return $this->helpUrl;
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryBacklinks.php 75921 2010-11-03 12:49:21Z demon $';
+ return __CLASS__ . ': $Id: ApiQueryBacklinks.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryBase.php b/includes/api/ApiQueryBase.php
index 61a5b4c8..69e0a893 100644
--- a/includes/api/ApiQueryBase.php
+++ b/includes/api/ApiQueryBase.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 7, 2006
*
@@ -54,6 +54,8 @@ abstract class ApiQueryBase extends ApiBase {
*
* Public caching will only be allowed if *all* the modules that supply
* data for a given request return a cache mode of public.
+ *
+ * @return string
*/
public function getCacheMode( $params ) {
return 'private';
@@ -84,23 +86,14 @@ abstract class ApiQueryBase extends ApiBase {
$this->tables = array_merge( $this->tables, $tables );
} else {
if ( !is_null( $alias ) ) {
- $tables = $this->getAliasedName( $tables, $alias );
+ $this->tables[$alias] = $tables;
+ } else {
+ $this->tables[] = $tables;
}
- $this->tables[] = $tables;
}
}
/**
- * Get the SQL for a table name with alias
- * @param $table string Table name
- * @param $alias string Alias
- * @return string SQL
- */
- protected function getAliasedName( $table, $alias ) {
- return $this->getDB()->tableName( $table ) . ' ' . $alias;
- }
-
- /**
* Add a set of JOIN conditions to the internal array
*
* JOIN conditions are formatted as array( tablename => array(jointype,
@@ -118,7 +111,7 @@ abstract class ApiQueryBase extends ApiBase {
/**
* Add a set of fields to select to the internal array
- * @param $value mixed Field name or array of field names
+ * @param $value array|string Field name or array of field names
*/
protected function addFields( $value ) {
if ( is_array( $value ) ) {
@@ -130,7 +123,7 @@ abstract class ApiQueryBase extends ApiBase {
/**
* Same as addFields(), but add the fields only if a condition is met
- * @param $value mixed See addFields()
+ * @param $value array|string See addFields()
* @param $condition bool If false, do nothing
* @return bool $condition
*/
@@ -227,6 +220,16 @@ abstract class ApiQueryBase extends ApiBase {
}
}
}
+ /**
+ * Add a WHERE clause corresponding to a range, similar to addWhereRange,
+ * but converts $start and $end to database timestamps.
+ * @see addWhereRange
+ */
+ protected function addTimestampWhereRange( $field, $dir, $start, $end, $sort = true ) {
+ $db = $this->getDb();
+ return $this->addWhereRange( $field, $dir,
+ $db->timestampOrNull( $start ), $db->timestampOrNull( $end ), $sort );
+ }
/**
* Add an option such as LIMIT or USE INDEX. If an option was set
@@ -359,14 +362,15 @@ abstract class ApiQueryBase extends ApiBase {
protected function setContinueEnumParameter( $paramName, $paramValue ) {
$paramName = $this->encodeParamName( $paramName );
$msg = array( $paramName => $paramValue );
- $this->getResult()->disableSizeCheck();
- $this->getResult()->addValue( 'query-continue', $this->getModuleName(), $msg );
- $this->getResult()->enableSizeCheck();
+ $result = $this->getResult();
+ $result->disableSizeCheck();
+ $result->addValue( 'query-continue', $this->getModuleName(), $msg );
+ $result->enableSizeCheck();
}
/**
* Get the Query database connection (read-only)
- * @return Database
+ * @return DatabaseBase
*/
protected function getDB() {
if ( is_null( $this->mDb ) ) {
@@ -450,6 +454,47 @@ abstract class ApiQueryBase extends ApiBase {
}
/**
+ * Gets the personalised direction parameter description
+ *
+ * @param string $p ModulePrefix
+ * @param string $extraDirText Any extra text to be appended on the description
+ * @return array
+ */
+ public function getDirectionDescription( $p = '', $extraDirText = '' ) {
+ return array(
+ "In which direction to enumerate{$extraDirText}",
+ " newer - List oldest first. Note: {$p}start has to be before {$p}end.",
+ " older - List newest first (default). Note: {$p}start has to be later than {$p}end.",
+ );
+ }
+
+ /**
+ * @param $query String
+ * @param $protocol String
+ * @return null|string
+ */
+ public function prepareUrlQuerySearchString( $query = null, $protocol = null) {
+ $db = $this->getDb();
+ if ( !is_null( $query ) || $query != '' ) {
+ if ( is_null( $protocol ) ) {
+ $protocol = 'http://';
+ }
+
+ $likeQuery = LinkFilter::makeLikeArray( $query, $protocol );
+ if ( !$likeQuery ) {
+ $this->dieUsage( 'Invalid query', 'bad_query' );
+ }
+
+ $likeQuery = LinkFilter::keepOneWildcard( $likeQuery );
+ return 'el_index ' . $db->buildLike( $likeQuery );
+ } elseif ( !is_null( $protocol ) ) {
+ return 'el_index ' . $db->buildLike( "$protocol", $db->anyString() );
+ }
+
+ return null;
+ }
+
+ /**
* Filters hidden users (where the user doesn't have the right to view them)
* Also adds relevant block information
*
@@ -479,6 +524,25 @@ abstract class ApiQueryBase extends ApiBase {
}
}
+ /**
+ * @param $hash string
+ * @return bool
+ */
+ public function validateSha1Hash( $hash ) {
+ return preg_match( '/[a-fA-F0-9]{40}/', $hash );
+ }
+
+ /**
+ * @param $hash string
+ * @return bool
+ */
+ public function validateSha1Base36Hash( $hash ) {
+ return preg_match( '/[a-zA-Z0-9]{31}/', $hash );
+ }
+
+ /**
+ * @return array
+ */
public function getPossibleErrors() {
return array_merge( parent::getPossibleErrors(), array(
array( 'invalidtitle', 'title' ),
@@ -491,7 +555,7 @@ abstract class ApiQueryBase extends ApiBase {
* @return string
*/
public static function getBaseVersion() {
- return __CLASS__ . ': $Id: ApiQueryBase.php 85435 2011-04-05 14:00:08Z demon $';
+ return __CLASS__ . ': $Id: ApiQueryBase.php 103029 2011-11-14 20:58:30Z reedy $';
}
}
diff --git a/includes/api/ApiQueryBlocks.php b/includes/api/ApiQueryBlocks.php
index 4edda645..503af7c7 100644
--- a/includes/api/ApiQueryBlocks.php
+++ b/includes/api/ApiQueryBlocks.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 10, 2007
*
- * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@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
@@ -30,30 +30,33 @@ if ( !defined( 'MEDIAWIKI' ) ) {
}
/**
- * Query module to enumerate all available pages.
+ * Query module to enumerate all user blocks
*
* @ingroup API
*/
class ApiQueryBlocks extends ApiQueryBase {
- var $users;
+ /**
+ * @var Array
+ */
+ protected $usernames;
public function __construct( $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'bk' );
}
public function execute() {
- global $wgUser;
+ global $wgUser, $wgContLang;
$params = $this->extractRequestParams();
- if ( isset( $params['users'] ) && isset( $params['ip'] ) ) {
- $this->dieUsage( 'bkusers and bkip cannot be used together', 'usersandip' );
- }
+ $this->requireMaxOneParameter( $params, 'users', 'ip' );
$prop = array_flip( $params['prop'] );
$fld_id = isset( $prop['id'] );
$fld_user = isset( $prop['user'] );
+ $fld_userid = isset( $prop['userid'] );
$fld_by = isset( $prop['by'] );
+ $fld_byid = isset( $prop['byid'] );
$fld_timestamp = isset( $prop['timestamp'] );
$fld_expiry = isset( $prop['expiry'] );
$fld_reason = isset( $prop['reason'] );
@@ -65,35 +68,20 @@ class ApiQueryBlocks extends ApiQueryBase {
$this->addTables( 'ipblocks' );
$this->addFields( 'ipb_auto' );
- if ( $fld_id ) {
- $this->addFields( 'ipb_id' );
- }
- if ( $fld_user ) {
- $this->addFields( array( 'ipb_address', 'ipb_user' ) );
- }
- if ( $fld_by ) {
- $this->addTables( 'user' );
- $this->addFields( array( 'ipb_by', 'user_name' ) );
- $this->addWhere( 'user_id = ipb_by' );
- }
- if ( $fld_timestamp ) {
- $this->addFields( 'ipb_timestamp' );
- }
- if ( $fld_expiry ) {
- $this->addFields( 'ipb_expiry' );
- }
- if ( $fld_reason ) {
- $this->addFields( 'ipb_reason' );
- }
- if ( $fld_range ) {
- $this->addFields( array( 'ipb_range_start', 'ipb_range_end' ) );
- }
- if ( $fld_flags ) {
- $this->addFields( array( 'ipb_anon_only', 'ipb_create_account', 'ipb_enable_autoblock', 'ipb_block_email', 'ipb_deleted', 'ipb_allow_usertalk' ) );
- }
+ $this->addFieldsIf ( 'ipb_id', $fld_id );
+ $this->addFieldsIf( array( 'ipb_address', 'ipb_user' ), $fld_user || $fld_userid );
+ $this->addFieldsIf( 'ipb_by_text', $fld_by );
+ $this->addFieldsIf( 'ipb_by', $fld_byid );
+ $this->addFieldsIf( 'ipb_timestamp', $fld_timestamp );
+ $this->addFieldsIf( 'ipb_expiry', $fld_expiry );
+ $this->addFieldsIf( 'ipb_reason', $fld_reason );
+ $this->addFieldsIf( array( 'ipb_range_start', 'ipb_range_end' ), $fld_range );
+ $this->addFieldsIf( array( 'ipb_anon_only', 'ipb_create_account', 'ipb_enable_autoblock',
+ 'ipb_block_email', 'ipb_deleted', 'ipb_allow_usertalk' ),
+ $fld_flags );
$this->addOption( 'LIMIT', $params['limit'] + 1 );
- $this->addWhereRange( 'ipb_timestamp', $params['dir'], $params['start'], $params['end'] );
+ $this->addTimestampWhereRange( 'ipb_timestamp', $params['dir'], $params['start'], $params['end'] );
if ( isset( $params['ids'] ) ) {
$this->addWhereFld( 'ipb_id', $params['ids'] );
}
@@ -151,14 +139,20 @@ class ApiQueryBlocks extends ApiQueryBase {
if ( $fld_user && !$row->ipb_auto ) {
$block['user'] = $row->ipb_address;
}
+ if ( $fld_userid && !$row->ipb_auto ) {
+ $block['userid'] = $row->ipb_user;
+ }
if ( $fld_by ) {
- $block['by'] = $row->user_name;
+ $block['by'] = $row->ipb_by_text;
+ }
+ if ( $fld_byid ) {
+ $block['byid'] = $row->ipb_by;
}
if ( $fld_timestamp ) {
$block['timestamp'] = wfTimestamp( TS_ISO_8601, $row->ipb_timestamp );
}
if ( $fld_expiry ) {
- $block['expiry'] = Block::decodeExpiry( $row->ipb_expiry, TS_ISO_8601 );
+ $block['expiry'] = $wgContLang->formatExpiry( $row->ipb_expiry, TS_ISO_8601 );
}
if ( $fld_reason ) {
$block['reason'] = $row->ipb_reason;
@@ -248,7 +242,9 @@ class ApiQueryBlocks extends ApiQueryBase {
ApiBase::PARAM_TYPE => array(
'id',
'user',
+ 'userid',
'by',
+ 'byid',
'timestamp',
'expiry',
'reason',
@@ -264,7 +260,7 @@ class ApiQueryBlocks extends ApiQueryBase {
return array(
'start' => 'The timestamp to start enumerating from',
'end' => 'The timestamp to stop enumerating at',
- 'dir' => 'The direction in which to enumerate',
+ 'dir' => $this->getDirectionDescription( $this->getModulePrefix() ),
'ids' => 'Pipe-separated list of block IDs to list (optional)',
'users' => 'Pipe-separated list of users to search for (optional)',
'ip' => array( 'Get all blocks applying to this IP or CIDR range, including range blocks.',
@@ -272,9 +268,11 @@ class ApiQueryBlocks extends ApiQueryBase {
'limit' => 'The maximum amount of blocks to list',
'prop' => array(
'Which properties to get',
- ' id - Adds the id of the block',
+ ' id - Adds the ID of the block',
' user - Adds the username of the blocked user',
- ' by - Adds the username of the blocking admin',
+ ' userid - Adds the user ID of the blocked user',
+ ' by - Adds the username of the blocking user',
+ ' byid - Adds the user ID of the blocking user',
' timestamp - Adds the timestamp of when the block was given',
' expiry - Adds the timestamp of when the block expires',
' reason - Adds the reason given for the block',
@@ -290,7 +288,7 @@ class ApiQueryBlocks extends ApiQueryBase {
public function getPossibleErrors() {
return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'usersandip', 'info' => 'bkusers and bkip cannot be used together' ),
+ $this->getRequireOnlyOneParameterErrorMessages( array( 'users', 'ip' ) ),
array( 'code' => 'cidrtoobroad', 'info' => 'CIDR ranges broader than /16 are not accepted' ),
array( 'code' => 'param_user', 'info' => 'User parameter may not be empty' ),
array( 'code' => 'param_user', 'info' => 'User name user is not valid' ),
@@ -304,7 +302,11 @@ class ApiQueryBlocks extends ApiQueryBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Blocks';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryBlocks.php 73858 2010-09-28 01:21:15Z reedy $';
+ return __CLASS__ . ': $Id: ApiQueryBlocks.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryCategories.php b/includes/api/ApiQueryCategories.php
index b2769dc2..c2942493 100644
--- a/includes/api/ApiQueryCategories.php
+++ b/includes/api/ApiQueryCategories.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on May 13, 2007
*
@@ -52,6 +52,10 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return
+ */
private function run( $resultPageSet = null ) {
if ( $this->getPageSet()->getGoodTitleCount() == 0 ) {
return; // nothing to do
@@ -100,7 +104,7 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
}
if ( isset( $show['hidden'] ) && isset( $show['!hidden'] ) ) {
- $this->dieUsageMsg( array( 'show' ) );
+ $this->dieUsageMsg( 'show' );
}
if ( isset( $show['hidden'] ) || isset( $show['!hidden'] ) || isset( $prop['hidden'] ) )
{
@@ -246,7 +250,11 @@ class ApiQueryCategories extends ApiQueryGeneratorBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Properties#categories_.2F_cl';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryCategories.php 86474 2011-04-20 13:22:05Z catrope $';
+ return __CLASS__ . ': $Id: ApiQueryCategories.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryCategoryInfo.php b/includes/api/ApiQueryCategoryInfo.php
index d4b64025..dd3bc391 100644
--- a/includes/api/ApiQueryCategoryInfo.php
+++ b/includes/api/ApiQueryCategoryInfo.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on May 13, 2007
*
@@ -119,7 +119,11 @@ class ApiQueryCategoryInfo extends ApiQueryBase {
return 'api.php?action=query&prop=categoryinfo&titles=Category:Foo|Category:Bar';
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Properties#categoryinfo_.2F_ci';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryCategoryInfo.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiQueryCategoryInfo.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryCategoryMembers.php b/includes/api/ApiQueryCategoryMembers.php
index bbcf8b9b..e48789fc 100644
--- a/includes/api/ApiQueryCategoryMembers.php
+++ b/includes/api/ApiQueryCategoryMembers.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on June 14, 2007
*
@@ -52,13 +52,29 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function run( $resultPageSet = null ) {
$params = $this->extractRequestParams();
- $categoryTitle = Title::newFromText( $params['title'] );
+ $this->requireOnlyOneParameter( $params, 'title', 'pageid' );
+
+ if ( isset( $params['title'] ) ) {
+ $categoryTitle = Title::newFromText( $params['title'] );
- if ( is_null( $categoryTitle ) || $categoryTitle->getNamespace() != NS_CATEGORY ) {
- $this->dieUsage( 'The category name you entered is not valid', 'invalidcategory' );
+ if ( is_null( $categoryTitle ) || $categoryTitle->getNamespace() != NS_CATEGORY ) {
+ $this->dieUsage( 'The category name you entered is not valid', 'invalidcategory' );
+ }
+ } elseif( isset( $params['pageid'] ) ) {
+ $categoryTitle = Title::newFromID( $params['pageid'] );
+
+ if ( !$categoryTitle ) {
+ $this->dieUsageMsg( array( 'nosuchpageid', $params['pageid'] ) );
+ } elseif ( $categoryTitle->getNamespace() != NS_CATEGORY ) {
+ $this->dieUsage( 'The category name you entered is not valid', 'invalidcategory' );
+ }
}
$prop = array_flip( $params['prop'] );
@@ -113,11 +129,11 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
'by the previous query', '_badcontinue'
);
}
-
+
// Remove the types to skip from $queryTypes
$contTypeIndex = array_search( $cont[0], $queryTypes );
$queryTypes = array_slice( $queryTypes, $contTypeIndex );
-
+
// 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] ) );
@@ -127,13 +143,22 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
$contWhere = "cl_sortkey $op $escSortkey OR " .
"(cl_sortkey = $escSortkey AND " .
"cl_from $op= $from)";
-
+ // The below produces ORDER BY cl_sortkey, cl_from, possibly with DESC added to each of them
+ $this->addWhereRange( 'cl_sortkey', $dir, null, null );
+ $this->addWhereRange( 'cl_from', $dir, null, null );
} else {
+ $startsortkey = $params['startsortkeyprefix'] !== null ?
+ Collation::singleton()->getSortkey( $params['startsortkeyprefix'] ) :
+ $params['startsortkey'];
+ $endsortkey = $params['endsortkeyprefix'] !== null ?
+ Collation::singleton()->getSortkey( $params['endsortkeyprefix'] ) :
+ $params['endsortkey'];
+
// The below produces ORDER BY cl_sortkey, cl_from, possibly with DESC added to each of them
$this->addWhereRange( 'cl_sortkey',
$dir,
- $params['startsortkey'],
- $params['endsortkey'] );
+ $startsortkey,
+ $endsortkey );
$this->addWhereRange( 'cl_from', $dir, null, null );
}
$this->addOption( 'USE INDEX', 'cl_sortkey' );
@@ -173,6 +198,8 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
$res = $this->select( __METHOD__ );
$rows = iterator_to_array( $res );
}
+
+ $result = $this->getResult();
$count = 0;
foreach ( $rows as $row ) {
if ( ++ $count > $limit ) {
@@ -218,7 +245,7 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
if ( $fld_timestamp ) {
$vals['timestamp'] = wfTimestamp( TS_ISO_8601, $row->cl_timestamp );
}
- $fit = $this->getResult()->addValue( array( 'query', $this->getModuleName() ),
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ),
null, $vals );
if ( !$fit ) {
if ( $params['sort'] == 'timestamp' ) {
@@ -237,7 +264,7 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
}
if ( is_null( $resultPageSet ) ) {
- $this->getResult()->setIndexedTagName_internal(
+ $result->setIndexedTagName_internal(
array( 'query', $this->getModuleName() ), 'cm' );
}
}
@@ -246,7 +273,9 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
return array(
'title' => array(
ApiBase::PARAM_TYPE => 'string',
- ApiBase::PARAM_REQUIRED => true
+ ),
+ 'pageid' => array(
+ ApiBase::PARAM_TYPE => 'integer'
),
'prop' => array(
ApiBase::PARAM_DFLT => 'ids|title',
@@ -303,6 +332,8 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
),
'startsortkey' => null,
'endsortkey' => null,
+ 'startsortkeyprefix' => null,
+ 'endsortkeyprefix' => null,
);
}
@@ -310,7 +341,8 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
global $wgMiserMode;
$p = $this->getModulePrefix();
$desc = array(
- 'title' => 'Which category to enumerate (required). Must include Category: prefix',
+ 'title' => "Which category to enumerate (required). Must include Category: prefix. Cannot be used together with {$p}pageid",
+ 'pageid' => "Page ID of the category to enumerate. Cannot be used together with {$p}title",
'prop' => array(
'What pieces of information to include',
' ids - Adds the page ID',
@@ -326,17 +358,20 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
'dir' => 'In which direction to sort',
'start' => "Timestamp to start listing from. Can only be used with {$p}sort=timestamp",
'end' => "Timestamp to end listing at. Can only be used with {$p}sort=timestamp",
- 'startsortkey' => "Sortkey to start listing from. Can only be used with {$p}sort=sortkey",
- 'endsortkey' => "Sortkey to end listing at. Can only be used with {$p}sort=sortkey",
+ 'startsortkey' => "Sortkey to start listing from. Must be given in binary format. Can only be used with {$p}sort=sortkey",
+ 'endsortkey' => "Sortkey to end listing at. Must be given in binary format. Can only be used with {$p}sort=sortkey",
+ 'startsortkeyprefix' => "Sortkey prefix to start listing from. Can only be used with {$p}sort=sortkey. Overrides {$p}startsortkey",
+ 'endsortkeyprefix' => "Sortkey prefix to end listing BEFORE (not at, if this value occurs it will not be included!). Can only be used with {$p}sort=sortkey. Overrides {$p}endsortkey",
'continue' => 'For large categories, give the value retured from previous query',
'limit' => 'The maximum number of pages to return.',
);
+
if ( $wgMiserMode ) {
$desc['namespace'] = array(
$desc['namespace'],
- 'NOTE: Due to $wgMiserMode, using this may result in fewer than "limit" results',
+ "NOTE: Due to \$wgMiserMode, using this may result in fewer than \"{$p}limit\" results",
'returned before continuing; in extreme cases, zero results may be returned.',
- 'Note that you can use cmtype=subcat or cmtype=file instead of cmnamespace=14 or 6.',
+ "Note that you can use {$p}type=subcat or {$p}type=file instead of {$p}namespace=14 or 6.",
);
}
return $desc;
@@ -347,11 +382,14 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
}
public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'notitle', 'info' => 'The cmtitle parameter is required' ),
- 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' ),
- ) );
+ return array_merge( parent::getPossibleErrors(),
+ $this->getRequireOnlyOneParameterErrorMessages( array( 'title', 'pageid' ) ),
+ 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' ),
+ array( 'nosuchpageid', 'pageid' ),
+ )
+ );
}
protected function getExamples() {
@@ -363,7 +401,11 @@ class ApiQueryCategoryMembers extends ApiQueryGeneratorBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Categorymembers';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryCategoryMembers.php 86474 2011-04-20 13:22:05Z catrope $';
+ return __CLASS__ . ': $Id: ApiQueryCategoryMembers.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryDeletedrevs.php b/includes/api/ApiQueryDeletedrevs.php
index 523862c0..f58b9ee5 100644
--- a/includes/api/ApiQueryDeletedrevs.php
+++ b/includes/api/ApiQueryDeletedrevs.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Jul 2, 2007
*
- * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@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
@@ -50,6 +50,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
$db = $this->getDB();
$params = $this->extractRequestParams( false );
$prop = array_flip( $params['prop'] );
+ $fld_parentid = isset( $prop['parentid'] );
$fld_revid = isset( $prop['revid'] );
$fld_user = isset( $prop['user'] );
$fld_userid = isset( $prop['userid'] );
@@ -65,9 +66,9 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
$titles = $pageSet->getTitles();
// This module operates in three modes:
- // 'revs': List deleted revs for certain titles
- // 'user': List deleted revs by a certain user
- // 'all': List all deleted revs
+ // 'revs': List deleted revs for certain titles (1)
+ // 'user': List deleted revs by a certain user (2)
+ // 'all': List all deleted revs in NS (3)
$mode = 'all';
if ( count( $titles ) > 0 ) {
$mode = 'revs';
@@ -75,6 +76,21 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
$mode = 'user';
}
+ if ( $mode == 'revs' || $mode == 'user' ) {
+ // Ignore namespace and unique due to inability to know whether they were purposely set
+ foreach( array( 'from', 'to', 'prefix', /*'namespace',*/ 'continue', /*'unique'*/ ) as $p ) {
+ if ( !is_null( $params[$p] ) ) {
+ $this->dieUsage( "The '{$p}' parameter cannot be used in modes 1 or 2", 'badparams');
+ }
+ }
+ } else {
+ foreach( array( 'start', 'end' ) as $p ) {
+ if ( !is_null( $params[$p] ) ) {
+ $this->dieUsage( "The {$p} parameter cannot be used in mode 3", 'badparams');
+ }
+ }
+ }
+
if ( !is_null( $params['user'] ) && !is_null( $params['excludeuser'] ) ) {
$this->dieUsage( 'user and excludeuser cannot be used together', 'badparams' );
}
@@ -82,24 +98,15 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
$this->addTables( 'archive' );
$this->addWhere( 'ar_deleted = 0' );
$this->addFields( array( 'ar_title', 'ar_namespace', 'ar_timestamp' ) );
- if ( $fld_revid ) {
- $this->addFields( 'ar_rev_id' );
- }
- if ( $fld_user ) {
- $this->addFields( 'ar_user_text' );
- }
- if ( $fld_userid ) {
- $this->addFields( 'ar_user' );
- }
- if ( $fld_comment || $fld_parsedcomment ) {
- $this->addFields( 'ar_comment' );
- }
- if ( $fld_minor ) {
- $this->addFields( 'ar_minor_edit' );
- }
- if ( $fld_len ) {
- $this->addFields( 'ar_len' );
- }
+
+ $this->addFieldsIf( 'ar_parent_id', $fld_parentid );
+ $this->addFieldsIf( 'ar_rev_id', $fld_revid );
+ $this->addFieldsIf( 'ar_user_text', $fld_user );
+ $this->addFieldsIf( 'ar_user', $fld_userid );
+ $this->addFieldsIf( 'ar_comment', $fld_comment || $fld_parsedcomment );
+ $this->addFieldsIf( 'ar_minor_edit', $fld_minor );
+ $this->addFieldsIf( 'ar_len', $fld_len );
+
if ( $fld_content ) {
$this->addTables( 'text' );
$this->addFields( array( 'ar_text', 'ar_text_id', 'old_text', 'old_flags' ) );
@@ -125,9 +132,11 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
if ( $fld_token ) {
// Undelete tokens are identical for all pages, so we cache one here
- $token = $wgUser->editToken();
+ $token = $wgUser->editToken( '', $this->getMain()->getRequest() );
}
+ $dir = $params['dir'];
+
// We need a custom WHERE clause that matches all titles.
if ( $mode == 'revs' ) {
$lb = new LinkBatch( $titles );
@@ -135,9 +144,13 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
$this->addWhere( $where );
} elseif ( $mode == 'all' ) {
$this->addWhereFld( 'ar_namespace', $params['namespace'] );
- if ( !is_null( $params['from'] ) ) {
- $from = $this->getDB()->strencode( $this->titleToKey( $params['from'] ) );
- $this->addWhere( "ar_title >= '$from'" );
+
+ $from = is_null( $params['from'] ) ? null : $this->titleToKey( $params['from'] );
+ $to = is_null( $params['to'] ) ? null : $this->titleToKey( $params['to'] );
+ $this->addWhereRange( 'ar_title', $dir, $from, $to );
+
+ if ( isset( $params['prefix'] ) ) {
+ $this->addWhere( 'ar_title' . $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
}
}
@@ -148,8 +161,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
$this->getDB()->addQuotes( $params['excludeuser'] ) );
}
- if ( !is_null( $params['continue'] ) && ( $mode == 'all' || $mode == 'revs' ) )
- {
+ 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' );
@@ -157,7 +169,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
$ns = intval( $cont[0] );
$title = $this->getDB()->strencode( $this->titleToKey( $cont[1] ) );
$ts = $this->getDB()->strencode( $cont[2] );
- $op = ( $params['dir'] == 'newer' ? '>' : '<' );
+ $op = ( $dir == 'newer' ? '>' : '<' );
$this->addWhere( "ar_namespace $op $ns OR " .
"(ar_namespace = $ns AND " .
"(ar_title $op '$title' OR " .
@@ -170,17 +182,16 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
if ( $mode == 'all' ) {
if ( $params['unique'] ) {
$this->addOption( 'GROUP BY', 'ar_title' );
- $this->addOption( 'ORDER BY', 'ar_title' );
} else {
$this->addOption( 'ORDER BY', 'ar_title, ar_timestamp' );
}
} else {
if ( $mode == 'revs' ) {
// Sort by ns and title in the same order as timestamp for efficiency
- $this->addWhereRange( 'ar_namespace', $params['dir'], null, null );
- $this->addWhereRange( 'ar_title', $params['dir'], null, null );
+ $this->addWhereRange( 'ar_namespace', $dir, null, null );
+ $this->addWhereRange( 'ar_title', $dir, null, null );
}
- $this->addWhereRange( 'ar_timestamp', $params['dir'], $params['start'], $params['end'] );
+ $this->addTimestampWhereRange( 'ar_timestamp', $dir, $params['start'], $params['end'] );
}
$res = $this->select( __METHOD__ );
$pageMap = array(); // Maps ns&title to (fake) pageid
@@ -203,6 +214,9 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
if ( $fld_revid ) {
$rev['revid'] = intval( $row->ar_rev_id );
}
+ if ( $fld_parentid ) {
+ $rev['parentid'] = intval( $row->ar_parent_id );
+ }
if ( $fld_user ) {
$rev['user'] = $row->ar_user_text;
}
@@ -273,6 +287,8 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
ApiBase::PARAM_DFLT => 'older'
),
'from' => null,
+ 'to' => null,
+ 'prefix' => null,
'continue' => null,
'unique' => false,
'user' => array(
@@ -296,6 +312,7 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
ApiBase::PARAM_DFLT => 'user|comment',
ApiBase::PARAM_TYPE => array(
'revid',
+ 'parentid',
'user',
'userid',
'comment',
@@ -314,13 +331,17 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
return array(
'start' => 'The timestamp to start enumerating from (1,2)',
'end' => 'The timestamp to stop enumerating at (1,2)',
- 'dir' => 'The direction in which to enumerate (1,2)',
+ 'dir' => $this->getDirectionDescription( $this->getModulePrefix(), ' (1, 3)' ),
+ 'from' => 'Start listing at this title (3)',
+ 'to' => 'Stop listing at this title (3)',
+ 'prefix' => 'Search for all page titles that begin with this value (3)',
'limit' => 'The maximum amount of revisions to list',
'prop' => array(
'Which properties to get',
- ' revid - Adds the revision id of the deleted revision',
+ ' revid - Adds the revision ID of the deleted revision',
+ ' parentid - Adds the revision ID of the previous revision to the page',
' user - Adds the user who made the revision',
- ' userid - Adds the user id whom made the revision',
+ ' userid - Adds the user ID whom made the revision',
' comment - Adds the comment of the revision',
' parsedcomment - Adds the parsed comment of the revision',
' minor - Tags if the revision is minor',
@@ -331,19 +352,19 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
'namespace' => 'Only list pages in this namespace (3)',
'user' => 'Only list revisions by this user',
'excludeuser' => 'Don\'t list revisions by this user',
- 'from' => 'Start listing at this title (3)',
'continue' => 'When more results are available, use this to continue (3)',
'unique' => 'List only one revision for each page (3)',
);
}
public function getDescription() {
+ $p = $this->getModulePrefix();
return array(
'List deleted revisions.',
- 'This module operates in three modes:',
- '1) List deleted revisions for the given title(s), sorted by timestamp',
- '2) List deleted contributions for the given user, sorted by timestamp (no titles specified)',
- '3) List all deleted revisions in the given namespace, sorted by title and timestamp (no titles specified, druser not set)',
+ 'Operates in three modes:',
+ ' 1) List deleted revisions for the given title(s), sorted by timestamp',
+ ' 2) List deleted contributions for the given user, sorted by timestamp (no titles specified)',
+ " 3) List all deleted revisions in the given namespace, sorted by title and timestamp (no titles specified, {$p}user not set)",
'Certain parameters only apply to some modes and are ignored in others.',
'For instance, a parameter marked (1) only applies to mode 1 and is ignored in modes 2 and 3',
);
@@ -355,6 +376,12 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
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" ),
+ array( 'code' => 'badparams', 'info' => "The 'continue' parameter cannot be used in modes 1 or 2" ),
+ array( 'code' => 'badparams', 'info' => "The 'start' parameter cannot be used in mode 3" ),
+ array( 'code' => 'badparams', 'info' => "The 'end' parameter cannot be used in mode 3" ),
) );
}
@@ -371,7 +398,11 @@ class ApiQueryDeletedrevs extends ApiQueryBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Deletedrevs';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryDeletedrevs.php 77192 2010-11-23 22:05:27Z btongminh $';
+ return __CLASS__ . ': $Id: ApiQueryDeletedrevs.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryDisabled.php b/includes/api/ApiQueryDisabled.php
index b5712069..c9edd2e4 100644
--- a/includes/api/ApiQueryDisabled.php
+++ b/includes/api/ApiQueryDisabled.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 25, 2008
*
- * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@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
@@ -68,6 +68,6 @@ class ApiQueryDisabled extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryDisabled.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiQueryDisabled.php 79969 2011-01-10 22:36:26Z reedy $';
}
}
diff --git a/includes/api/ApiQueryDuplicateFiles.php b/includes/api/ApiQueryDuplicateFiles.php
index ffe98038..4c7c1fc2 100644
--- a/includes/api/ApiQueryDuplicateFiles.php
+++ b/includes/api/ApiQueryDuplicateFiles.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 27, 2008
*
- * Copyright © 2008 Roan Kattow <Firstname>,<Lastname>@home.nl
+ * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@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
@@ -52,6 +52,10 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return
+ */
private function run( $resultPageSet = null ) {
$params = $this->extractRequestParams();
$namespaces = $this->getPageSet()->getAllTitlesByNamespace();
@@ -164,7 +168,11 @@ class ApiQueryDuplicateFiles extends ApiQueryGeneratorBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Properties#duplicatefiles_.2F_df';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryDuplicateFiles.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiQueryDuplicateFiles.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryExtLinksUsage.php b/includes/api/ApiQueryExtLinksUsage.php
index ecd9e699..89928372 100644
--- a/includes/api/ApiQueryExtLinksUsage.php
+++ b/includes/api/ApiQueryExtLinksUsage.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on July 7, 2007
*
@@ -50,45 +50,32 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function run( $resultPageSet = null ) {
$params = $this->extractRequestParams();
- $protocol = $params['protocol'];
$query = $params['query'];
+ $protocol = self::getProtocolPrefix( $params['protocol'] );
- // Find the right prefix
- global $wgUrlProtocols;
- if ( $protocol && !in_array( $protocol, $wgUrlProtocols ) ) {
- foreach ( $wgUrlProtocols as $p ) {
- if ( substr( $p, 0, strlen( $protocol ) ) === $protocol ) {
- $protocol = $p;
- break;
- }
- }
- } else {
- $protocol = null;
- }
-
- $db = $this->getDB();
$this->addTables( array( 'page', 'externallinks' ) ); // must be in this order for 'USE INDEX'
$this->addOption( 'USE INDEX', 'el_index' );
$this->addWhere( 'page_id=el_from' );
- $this->addWhereFld( 'page_namespace', $params['namespace'] );
- if ( !is_null( $query ) || $query != '' ) {
- if ( is_null( $protocol ) ) {
- $protocol = 'http://';
- }
+ global $wgMiserMode;
+ $miser_ns = array();
+ if ( $wgMiserMode ) {
+ $miser_ns = $params['namespace'];
+ } else {
+ $this->addWhereFld( 'page_namespace', $params['namespace'] );
+ }
- $likeQuery = LinkFilter::makeLikeArray( $query, $protocol );
- if ( !$likeQuery ) {
- $this->dieUsage( 'Invalid query', 'bad_query' );
- }
+ $whereQuery = $this->prepareUrlQuerySearchString( $query, $protocol );
- $likeQuery = LinkFilter::keepOneWildcard( $likeQuery );
- $this->addWhere( 'el_index ' . $db->buildLike( $likeQuery ) );
- } elseif ( !is_null( $protocol ) ) {
- $this->addWhere( 'el_index ' . $db->buildLike( "$protocol", $db->anyString() ) );
+ if ( $whereQuery !== null ) {
+ $this->addWhere( $whereQuery );
}
$prop = array_flip( $params['prop'] );
@@ -125,6 +112,10 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
break;
}
+ if ( count( $miser_ns ) && !in_array( $row->page_namespace, $miser_ns ) ) {
+ continue;
+ }
+
if ( is_null( $resultPageSet ) ) {
$vals = array();
if ( $fld_ids ) {
@@ -135,6 +126,7 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
ApiQueryBase::addTitleInfo( $vals, $title );
}
if ( $fld_url ) {
+ // We *could* run this through wfExpandUrl() but I think it's better to output the link verbatim, even if it's protocol-relative --Roan
$vals['url'] = $row->el_to;
}
$fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $vals );
@@ -154,12 +146,6 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
}
public function getAllowedParams() {
- global $wgUrlProtocols;
- $protocols = array( '' );
- foreach ( $wgUrlProtocols as $p ) {
- $protocols[] = substr( $p, 0, strpos( $p, ':' ) );
- }
-
return array(
'prop' => array(
ApiBase::PARAM_ISMULTI => true,
@@ -174,7 +160,7 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
ApiBase::PARAM_TYPE => 'integer'
),
'protocol' => array(
- ApiBase::PARAM_TYPE => $protocols,
+ ApiBase::PARAM_TYPE => self::prepareProtocols(),
ApiBase::PARAM_DFLT => '',
),
'query' => null,
@@ -192,13 +178,42 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
);
}
+ public static function prepareProtocols() {
+ global $wgUrlProtocols;
+ $protocols = array( '' );
+ foreach ( $wgUrlProtocols as $p ) {
+ if ( $p !== '//' ) {
+ $protocols[] = substr( $p, 0, strpos( $p, ':' ) );
+ }
+ }
+ return $protocols;
+ }
+
+ public static function getProtocolPrefix( $protocol ) {
+ // Find the right prefix
+ global $wgUrlProtocols;
+ if ( $protocol && !in_array( $protocol, $wgUrlProtocols ) ) {
+ foreach ( $wgUrlProtocols as $p ) {
+ if ( substr( $p, 0, strlen( $protocol ) ) === $protocol ) {
+ $protocol = $p;
+ break;
+ }
+ }
+
+ return $protocol;
+ } else {
+ return null;
+ }
+ }
+
public function getParamDescription() {
+ global $wgMiserMode;
$p = $this->getModulePrefix();
- return array(
+ $desc = array(
'prop' => array(
'What pieces of information to include',
- ' ids - Adds the id of page',
- ' title - Adds the title and namespace id of the page',
+ ' ids - Adds the ID of page',
+ ' title - Adds the title and namespace ID of the page',
' url - Adds the URL used in the page',
),
'offset' => 'Used for paging. Use the value returned for "continue"',
@@ -210,6 +225,16 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
'namespace' => 'The page namespace(s) to enumerate.',
'limit' => 'How many pages to return.'
);
+
+ if ( $wgMiserMode ) {
+ $desc['namespace'] = array(
+ $desc['namespace'],
+ "NOTE: Due to \$wgMiserMode, using this may result in fewer than \"{$p}limit\" results",
+ 'returned before continuing; in extreme cases, zero results may be returned',
+ );
+ }
+
+ return $desc;
}
public function getDescription() {
@@ -228,7 +253,11 @@ class ApiQueryExtLinksUsage extends ApiQueryGeneratorBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Exturlusage';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryExtLinksUsage.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiQueryExtLinksUsage.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryExternalLinks.php b/includes/api/ApiQueryExternalLinks.php
index fbfcbfb9..ca1efbb1 100644
--- a/includes/api/ApiQueryExternalLinks.php
+++ b/includes/api/ApiQueryExternalLinks.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on May 13, 2007
*
@@ -46,6 +46,10 @@ class ApiQueryExternalLinks extends ApiQueryBase {
}
$params = $this->extractRequestParams();
+
+ $query = $params['query'];
+ $protocol = ApiQueryExtLinksUsage::getProtocolPrefix( $params['protocol'] );
+
$this->addFields( array(
'el_from',
'el_to'
@@ -54,13 +58,25 @@ class ApiQueryExternalLinks extends ApiQueryBase {
$this->addTables( 'externallinks' );
$this->addWhereFld( 'el_from', array_keys( $this->getPageSet()->getGoodTitles() ) );
+ $whereQuery = $this->prepareUrlQuerySearchString( $query, $protocol );
+
+ if ( $whereQuery !== null ) {
+ $this->addWhere( $whereQuery );
+ }
+
// Don't order by el_from if it's constant in the WHERE clause
if ( count( $this->getPageSet()->getGoodTitles() ) != 1 ) {
$this->addOption( 'ORDER BY', 'el_from' );
}
+ // If we're querying all protocols, use DISTINCT to avoid repeating protocol-relative links twice
+ if ( $protocol === null ) {
+ $this->addOption( 'DISTINCT' );
+ }
+
$this->addOption( 'LIMIT', $params['limit'] + 1 );
- if ( !is_null( $params['offset'] ) ) {
+ $offset = isset( $params['offset'] ) ? $params['offset'] : 0;
+ if ( $offset ) {
$this->addOption( 'OFFSET', $params['offset'] );
}
@@ -71,14 +87,15 @@ class ApiQueryExternalLinks extends ApiQueryBase {
if ( ++$count > $params['limit'] ) {
// We've reached the one extra which shows that
// there are additional pages to be had. Stop here...
- $this->setContinueEnumParameter( 'offset', @$params['offset'] + $params['limit'] );
+ $this->setContinueEnumParameter( 'offset', $offset + $params['limit'] );
break;
}
$entry = array();
+ // We *could* run this through wfExpandUrl() but I think it's better to output the link verbatim, even if it's protocol-relative --Roan
ApiResult::setContent( $entry, $row->el_to );
$fit = $this->addPageSubItem( $row->el_from, $entry );
if ( !$fit ) {
- $this->setContinueEnumParameter( 'offset', @$params['offset'] + $count - 1 );
+ $this->setContinueEnumParameter( 'offset', $offset + $count - 1 );
break;
}
}
@@ -97,14 +114,27 @@ class ApiQueryExternalLinks extends ApiQueryBase {
ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
),
- 'offset' => null,
+ 'offset' => array(
+ ApiBase::PARAM_TYPE => 'integer'
+ ),
+ 'protocol' => array(
+ ApiBase::PARAM_TYPE => ApiQueryExtLinksUsage::prepareProtocols(),
+ ApiBase::PARAM_DFLT => '',
+ ),
+ 'query' => null,
);
}
public function getParamDescription() {
+ $p = $this->getModulePrefix();
return array(
'limit' => 'How many links to return',
'offset' => 'When more results are available, use this to continue',
+ 'protocol' => array(
+ "Protocol of the url. If empty and {$p}query set, the protocol is http.",
+ "Leave both this and {$p}query empty to list all external links"
+ ),
+ 'query' => 'Search string without protocol. Useful for checking whether a certain page contains a certain external url',
);
}
@@ -112,6 +142,12 @@ class ApiQueryExternalLinks extends ApiQueryBase {
return 'Returns all external urls (not interwikies) from the given page(s)';
}
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ array( 'code' => 'bad_query', 'info' => 'Invalid query' ),
+ ) );
+ }
+
protected function getExamples() {
return array(
'Get a list of external links on the [[Main Page]]:',
@@ -119,7 +155,11 @@ class ApiQueryExternalLinks extends ApiQueryBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Properties#extlinks_.2F_el';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryExternalLinks.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiQueryExternalLinks.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryFilearchive.php b/includes/api/ApiQueryFilearchive.php
index 05ccb346..541b25fc 100644
--- a/includes/api/ApiQueryFilearchive.php
+++ b/includes/api/ApiQueryFilearchive.php
@@ -59,7 +59,7 @@ class ApiQueryFilearchive extends ApiQueryBase {
$fld_user = isset( $prop['user'] );
$fld_size = isset( $prop['size'] );
$fld_dimensions = isset( $prop['dimensions'] );
- $fld_description = isset( $prop['description'] );
+ $fld_description = isset( $prop['description'] ) || isset( $prop['parseddescription'] );
$fld_mime = isset( $prop['mime'] );
$fld_metadata = isset( $prop['metadata'] );
$fld_bitdepth = isset( $prop['bitdepth'] );
@@ -69,45 +69,57 @@ class ApiQueryFilearchive extends ApiQueryBase {
$this->addFields( array( 'fa_name', 'fa_deleted' ) );
$this->addFieldsIf( 'fa_storage_key', $fld_sha1 );
$this->addFieldsIf( 'fa_timestamp', $fld_timestamp );
-
- if ( $fld_user ) {
- $this->addFields( array( 'fa_user', 'fa_user_text' ) );
- }
- $this->addFieldsIf( 'fa_size', $fld_size );
-
- if ( $fld_dimensions ) {
- $this->addFields( array( 'fa_height', 'fa_width' ) );
- }
-
+ $this->addFieldsIf( array( 'fa_user', 'fa_user_text' ), $fld_user );
+ $this->addFieldsIf( array( 'fa_height', 'fa_width', 'fa_size' ), $fld_dimensions || $fld_size );
$this->addFieldsIf( 'fa_description', $fld_description );
-
- if ( $fld_mime ) {
- $this->addFields( array( 'fa_major_mime', 'fa_minor_mime' ) );
- }
-
+ $this->addFieldsIf( array( 'fa_major_mime', 'fa_minor_mime' ), $fld_mime );
$this->addFieldsIf( 'fa_metadata', $fld_metadata );
$this->addFieldsIf( 'fa_bits', $fld_bitdepth );
// Image filters
$dir = ( $params['dir'] == 'descending' ? 'older' : 'newer' );
$from = ( is_null( $params['from'] ) ? null : $this->titlePartToKey( $params['from'] ) );
- $this->addWhereRange( 'fa_name', $dir, $from, null );
+ $to = ( is_null( $params['to'] ) ? null : $this->titlePartToKey( $params['to'] ) );
+ $this->addWhereRange( 'fa_name', $dir, $from, $to );
if ( isset( $params['prefix'] ) ) {
$this->addWhere( 'fa_name' . $db->buildLike( $this->titlePartToKey( $params['prefix'] ), $db->anyString() ) );
}
-
+
+ $sha1Set = isset( $params['sha1'] );
+ $sha1base36Set = isset( $params['sha1base36'] );
+ if ( $sha1Set || $sha1base36Set ) {
+ global $wgMiserMode;
+ if ( $wgMiserMode ) {
+ $this->dieUsage( 'Search by hash disabled in Miser Mode', 'hashsearchdisabled' );
+ }
+
+ $sha1 = false;
+ if ( $sha1Set ) {
+ if ( !$this->validateSha1Hash( $params['sha1'] ) ) {
+ $this->dieUsage( 'The SHA1 hash provided is not valid', 'invalidsha1hash' );
+ }
+ $sha1 = wfBaseConvert( $params['sha1'], 16, 36, 31 );
+ } elseif ( $sha1base36Set ) {
+ if ( !$this->validateSha1Base36Hash( $params['sha1base36'] ) ) {
+ $this->dieUsage( 'The SHA1Base36 hash provided is not valid', 'invalidsha1base36hash' );
+ }
+ $sha1 = $params['sha1base36'];
+ }
+ if ( $sha1 ) {
+ $this->addWhere( 'fa_storage_key ' . $db->buildLike( "{$sha1}.", $db->anyString() ) );
+ }
+ }
+
if ( !$wgUser->isAllowed( 'suppressrevision' ) ) {
// Filter out revisions that the user is not allowed to see. There
// is no way to indicate that we have skipped stuff because the
// continuation parameter is fa_name
-
+
// Note that this field is unindexed. This should however not be
// a big problem as files with fa_deleted are rare
$this->addWhereFld( 'fa_deleted', 0 );
}
-
-
$limit = $params['limit'];
$this->addOption( 'LIMIT', $limit + 1 );
$this->addOption( 'ORDER BY', 'fa_name' .
@@ -127,9 +139,11 @@ class ApiQueryFilearchive extends ApiQueryBase {
$file = array();
$file['name'] = $row->fa_name;
+ $title = Title::makeTitle( NS_FILE, $row->fa_name );
+ self::addTitleInfo( $file, $title );
if ( $fld_sha1 ) {
- $file['sha1'] = wfBaseConvert( $row->fa_storage_key, 36, 16, 40 );
+ $file['sha1'] = wfBaseConvert( LocalRepo::getHashFromKey( $row->fa_storage_key ), 36, 16, 40 );
}
if ( $fld_timestamp ) {
$file['timestamp'] = wfTimestamp( TS_ISO_8601, $row->fa_timestamp );
@@ -138,18 +152,28 @@ class ApiQueryFilearchive extends ApiQueryBase {
$file['userid'] = $row->fa_user;
$file['user'] = $row->fa_user_text;
}
- if ( $fld_size ) {
+ if ( $fld_size || $fld_dimensions ) {
$file['size'] = $row->fa_size;
- }
- if ( $fld_dimensions ) {
+
+ $pageCount = ArchivedFile::newFromRow( $row )->pageCount();
+ if ( $pageCount !== false ) {
+ $vals['pagecount'] = $pageCount;
+ }
+
$file['height'] = $row->fa_height;
$file['width'] = $row->fa_width;
}
if ( $fld_description ) {
$file['description'] = $row->fa_description;
+ if ( isset( $prop['parseddescription'] ) ) {
+ $file['parseddescription'] = $wgUser->getSkin()->formatComment(
+ $row->fa_description, $title );
+ }
}
if ( $fld_metadata ) {
- $file['metadata'] = $row->fa_metadata ? ApiQueryImageInfo::processMetaData( unserialize( $row->fa_metadata ), $result ) : null;
+ $file['metadata'] = $row->fa_metadata
+ ? ApiQueryImageInfo::processMetaData( unserialize( $row->fa_metadata ), $result )
+ : null;
}
if ( $fld_bitdepth ) {
$file['bitdepth'] = $row->fa_bits;
@@ -157,7 +181,7 @@ class ApiQueryFilearchive extends ApiQueryBase {
if ( $fld_mime ) {
$file['mime'] = "$row->fa_major_mime/$row->fa_minor_mime";
}
-
+
if ( $row->fa_deleted & File::DELETED_FILE ) {
$file['filehidden'] = '';
}
@@ -172,7 +196,7 @@ class ApiQueryFilearchive extends ApiQueryBase {
$file['suppressed'] = '';
}
-
+
$fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $file );
if ( !$fit ) {
$this->setContinueEnumParameter( 'from', $this->keyToTitle( $row->fa_name ) );
@@ -186,6 +210,7 @@ class ApiQueryFilearchive extends ApiQueryBase {
public function getAllowedParams() {
return array (
'from' => null,
+ 'to' => null,
'prefix' => null,
'limit' => array(
ApiBase::PARAM_DFLT => 10,
@@ -201,6 +226,8 @@ class ApiQueryFilearchive extends ApiQueryBase {
'descending'
)
),
+ 'sha1' => null,
+ 'sha1base36' => null,
'prop' => array(
ApiBase::PARAM_DFLT => 'timestamp',
ApiBase::PARAM_ISMULTI => true,
@@ -211,6 +238,7 @@ class ApiQueryFilearchive extends ApiQueryBase {
'size',
'dimensions',
'description',
+ 'parseddescription',
'mime',
'metadata',
'bitdepth'
@@ -222,20 +250,24 @@ class ApiQueryFilearchive extends ApiQueryBase {
public function getParamDescription() {
return array(
'from' => 'The image title to start enumerating from',
+ 'to' => 'The image title to stop enumerating at',
'prefix' => 'Search for all image titles that begin with this value',
'dir' => 'The direction in which to list',
- 'limit' => 'How many total images to return',
+ 'limit' => 'How many images to return in total',
+ 'sha1' => "SHA1 hash of image. Overrides {$this->getModulePrefix()}sha1base36. Disabled in Miser Mode",
+ 'sha1base36' => 'SHA1 hash of image in base 36 (used in MediaWiki). Disabled in Miser Mode',
'prop' => array(
'What image information to get:',
- ' sha1 - Adds sha1 hash for the image',
- ' timestamp - Adds timestamp for the uploaded version',
- ' user - Adds user who uploaded the image version',
- ' size - Adds the size of the image in bytes',
- ' dimensions - Adds the height and width of the image',
- ' description - Adds description the image version',
- ' mime - Adds MIME of the image',
- ' metadata - Lists EXIF metadata for the version of the image',
- ' bitdepth - Adds the bit depth of the version',
+ ' sha1 - Adds SHA-1 hash for the image',
+ ' timestamp - Adds timestamp for the uploaded version',
+ ' user - Adds user who uploaded the image version',
+ ' size - Adds the size of the image in bytes and the height, width and page count (if applicable)',
+ ' dimensions - Alias for size',
+ ' description - Adds description the image version',
+ ' parseddescription - Parse the description on the version',
+ ' mime - Adds MIME of the image',
+ ' metadata - Lists EXIF metadata for the version of the image',
+ ' bitdepth - Adds the bit depth of the version',
),
);
}
@@ -247,6 +279,9 @@ class ApiQueryFilearchive extends ApiQueryBase {
public function getPossibleErrors() {
return array_merge( parent::getPossibleErrors(), array(
array( 'code' => 'permissiondenied', 'info' => 'You don\'t have permission to view deleted file information' ),
+ 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' ),
) );
}
@@ -259,6 +294,6 @@ class ApiQueryFilearchive extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryFilearchive.php 85354 2011-04-04 18:25:31Z demon $';
+ return __CLASS__ . ': $Id: ApiQueryFilearchive.php 91246 2011-07-01 02:25:19Z reedy $';
}
}
diff --git a/includes/api/ApiQueryIWBacklinks.php b/includes/api/ApiQueryIWBacklinks.php
index 6958a253..1a8e9720 100644
--- a/includes/api/ApiQueryIWBacklinks.php
+++ b/includes/api/ApiQueryIWBacklinks.php
@@ -48,6 +48,10 @@ class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
public function run( $resultPageSet = null ) {
$params = $this->extractRequestParams();
@@ -115,11 +119,10 @@ class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
if ( !is_null( $resultPageSet ) ) {
$pages[] = Title::newFromRow( $row );
} else {
- $entry = array();
+ $entry = array( 'pageid' => $row->page_id );
- $entry['pageid'] = intval( $row->page_id );
- $entry['ns'] = intval( $row->page_namespace );
- $entry['title'] = $row->page_title;
+ $title = Title::makeTitle( $row->page_namespace, $row->page_title );
+ ApiQueryBase::addTitleInfo( $entry, $title );
if ( $row->page_is_redirect ) {
$entry['redirect'] = '';
@@ -212,6 +215,6 @@ class ApiQueryIWBacklinks extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryIWBacklinks.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiQueryIWBacklinks.php 84257 2011-03-18 19:15:33Z reedy $';
}
}
diff --git a/includes/api/ApiQueryIWLinks.php b/includes/api/ApiQueryIWLinks.php
index e980d6a5..3215a96e 100644
--- a/includes/api/ApiQueryIWLinks.php
+++ b/includes/api/ApiQueryIWLinks.php
@@ -47,6 +47,11 @@ class ApiQueryIWLinks extends ApiQueryBase {
}
$params = $this->extractRequestParams();
+
+ if ( isset( $params['title'] ) && !isset( $params['prefix'] ) ) {
+ $this->dieUsageMsg( array( 'missingparam', 'prefix' ) );
+ }
+
$this->addFields( array(
'iwl_from',
'iwl_prefix',
@@ -74,12 +79,23 @@ class ApiQueryIWLinks extends ApiQueryBase {
);
}
- // Don't order by iwl_from if it's constant in the WHERE clause
- if ( count( $this->getPageSet()->getGoodTitles() ) == 1 ) {
- $this->addOption( 'ORDER BY', 'iwl_prefix' );
+ if ( isset( $params['prefix'] ) ) {
+ $this->addWhereFld( 'iwl_prefix', $params['prefix'] );
+ if ( isset( $params['title'] ) ) {
+ $this->addWhereFld( 'iwl_title', $params['title'] );
+ $this->addOption( 'ORDER BY', 'iwl_from' );
+ } else {
+ $this->addOption( 'ORDER BY', 'iwl_title, iwl_from' );
+ }
} else {
- $this->addOption( 'ORDER BY', 'iwl_from, iwl_prefix' );
+ // Don't order by iwl_from if it's constant in the WHERE clause
+ if ( count( $this->getPageSet()->getGoodTitles() ) == 1 ) {
+ $this->addOption( 'ORDER BY', 'iwl_prefix' );
+ } else {
+ $this->addOption( 'ORDER BY', 'iwl_from, iwl_prefix' );
+ }
}
+
$this->addOption( 'LIMIT', $params['limit'] + 1 );
$res = $this->select( __METHOD__ );
@@ -96,7 +112,7 @@ class ApiQueryIWLinks extends ApiQueryBase {
if ( !is_null( $params['url'] ) ) {
$title = Title::newFromText( "{$row->iwl_prefix}:{$row->iwl_title}" );
if ( $title ) {
- $entry['url'] = $title->getFullURL();
+ $entry['url'] = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
}
}
@@ -124,6 +140,8 @@ class ApiQueryIWLinks extends ApiQueryBase {
ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
),
'continue' => null,
+ 'prefix' => null,
+ 'title' => null,
);
}
@@ -132,6 +150,8 @@ class ApiQueryIWLinks extends ApiQueryBase {
'url' => 'Whether to get the full URL',
'limit' => 'How many interwiki links to return',
'continue' => 'When more results are available, use this to continue',
+ 'prefix' => 'Prefix for the interwiki',
+ 'title' => "Interwiki link to search for. Must be used with {$this->getModulePrefix()}prefix",
);
}
@@ -141,6 +161,7 @@ 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' ),
) );
}
@@ -153,6 +174,6 @@ class ApiQueryIWLinks extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryIWLinks.php 77080 2010-11-21 17:27:13Z reedy $';
+ return __CLASS__ . ': $Id: ApiQueryIWLinks.php 96475 2011-09-07 19:37:56Z catrope $';
}
}
diff --git a/includes/api/ApiQueryImageInfo.php b/includes/api/ApiQueryImageInfo.php
index 21696be2..5bacd636 100644
--- a/includes/api/ApiQueryImageInfo.php
+++ b/includes/api/ApiQueryImageInfo.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on July 6, 2007
*
@@ -108,17 +108,21 @@ class ApiQueryImageInfo extends ApiQueryBase {
break;
}
+ // Check if we can make the requested thumbnail, and get transform parameters.
+ $finalThumbParams = $this->mergeThumbParams( $img, $scale, $params['urlparam'] );
+
// Get information about the current version first
// Check that the current version is within the start-end boundaries
$gotOne = false;
if (
( is_null( $start ) || $img->getTimestamp() <= $start ) &&
( is_null( $params['end'] ) || $img->getTimestamp() >= $params['end'] )
- )
- {
+ ) {
$gotOne = true;
+
$fit = $this->addPageSubItem( $pageId,
- self::getInfo( $img, $prop, $result, $scale ) );
+ self::getInfo( $img, $prop, $result,
+ $finalThumbParams, $params['metadataversion'] ) );
if ( !$fit ) {
if ( count( $pageIds[NS_IMAGE] ) == 1 ) {
// See the 'the user is screwed' comment above
@@ -147,7 +151,8 @@ class ApiQueryImageInfo extends ApiQueryBase {
break;
}
$fit = $this->addPageSubItem( $pageId,
- self::getInfo( $oldie, $prop, $result ) );
+ self::getInfo( $oldie, $prop, $result,
+ $finalThumbParams, $params['metadataversion'] ) );
if ( !$fit ) {
if ( count( $pageIds[NS_IMAGE] ) == 1 ) {
$this->setContinueEnumParameter( 'start',
@@ -179,14 +184,16 @@ class ApiQueryImageInfo extends ApiQueryBase {
}
/**
- * From parameters, construct a 'scale' array
- * @param $params Array:
+ * From parameters, construct a 'scale' array
+ * @param $params Array: Parameters passed to api.
* @return Array or Null: key-val array of 'width' and 'height', or null
- */
+ */
public function getScale( $params ) {
$p = $this->getModulePrefix();
+
+ // Height and width.
if ( $params['urlheight'] != -1 && $params['urlwidth'] == -1 ) {
- $this->dieUsage( "${p}urlheight cannot be used without {$p}urlwidth", "{$p}urlwidth" );
+ $this->dieUsage( "{$p}urlheight cannot be used without {$p}urlwidth", "{$p}urlwidth" );
}
if ( $params['urlwidth'] != -1 ) {
@@ -195,10 +202,63 @@ class ApiQueryImageInfo extends ApiQueryBase {
$scale['height'] = $params['urlheight'];
} else {
$scale = null;
+ if ( $params['urlparam'] ) {
+ $this->dieUsage( "{$p}urlparam requires {$p}urlwidth", "urlparam_no_width" );
+ }
+ return $scale;
}
+
return $scale;
}
+ /** Validate and merge scale parameters with handler thumb parameters, give error if invalid.
+ *
+ * We do this later than getScale, since we need the image
+ * to know which handler, since handlers can make their own parameters.
+ * @param File $image Image that params are for.
+ * @param Array $thumbParams thumbnail parameters from getScale
+ * @param String $otherParams of otherParams (iiurlparam).
+ * @return Array of parameters for transform.
+ */
+ protected function mergeThumbParams ( $image, $thumbParams, $otherParams ) {
+ if ( !$otherParams ) {
+ return $thumbParams;
+ }
+ $p = $this->getModulePrefix();
+
+ $h = $image->getHandler();
+ if ( !$h ) {
+ $this->setWarning( 'Could not create thumbnail because ' .
+ $image->getName() . ' does not have an associated image handler' );
+ return $thumbParams;
+ }
+
+ $paramList = $h->parseParamString( $otherParams );
+ if ( !$paramList ) {
+ // Just set a warning (instead of dieUsage), as in many cases
+ // we could still render the image using width and height parameters,
+ // and this type of thing could happen between different versions of
+ // handlers.
+ $this->setWarning( "Could not parse {$p}urlparam for " . $image->getName()
+ . '. Using only width and height' );
+ return $thumbParams;
+ }
+
+ if ( isset( $paramList['width'] ) ) {
+ if ( intval( $paramList['width'] ) != intval( $thumbParams['width'] ) ) {
+ $this->dieUsage( "{$p}urlparam had width of {$paramList['width']} but "
+ . "{$p}urlwidth was {$thumbParams['width']}", "urlparam_urlwidth_mismatch" );
+ }
+ }
+
+ foreach ( $paramList as $name => $value ) {
+ if ( !$h->validateParam( $name, $value ) ) {
+ $this->dieUsage( "Invalid value for {$p}urlparam ($name=$value)", "urlparam" );
+ }
+ }
+
+ return $thumbParams + $paramList;
+ }
/**
* Get result information for an image revision
@@ -206,10 +266,11 @@ class ApiQueryImageInfo extends ApiQueryBase {
* @param $file File object
* @param $prop Array of properties to get (in the keys)
* @param $result ApiResult object
- * @param $scale Array containing 'width' and 'height' items, or null
+ * @param $thumbParams Array containing 'width' and 'height' items, or null
+ * @param $version string Version of image metadata (for things like jpeg which have different versions).
* @return Array: result array
*/
- static function getInfo( $file, $prop, $result, $scale = null ) {
+ static function getInfo( $file, $prop, $result, $thumbParams = null, $version = 'latest' ) {
$vals = array();
// Timestamp is shown even if the file is revdelete'd in interface
// so do same here.
@@ -242,7 +303,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
$vals['size'] = intval( $file->getSize() );
$vals['width'] = intval( $file->getWidth() );
$vals['height'] = intval( $file->getHeight() );
-
+
$pageCount = $file->pageCount();
if ( $pageCount !== false ) {
$vals['pagecount'] = $pageCount;
@@ -271,10 +332,11 @@ class ApiQueryImageInfo extends ApiQueryBase {
$sha1 = isset( $prop['sha1'] );
$meta = isset( $prop['metadata'] );
$mime = isset( $prop['mime'] );
+ $mediatype = isset( $prop['mediatype'] );
$archive = isset( $prop['archivename'] );
$bitdepth = isset( $prop['bitdepth'] );
- if ( ( $url || $sha1 || $meta || $mime || $archive || $bitdepth )
+ if ( ( $url || $sha1 || $meta || $mime || $mediatype || $archive || $bitdepth )
&& $file->isDeleted( File::DELETED_FILE ) ) {
$vals['filehidden'] = '';
@@ -283,10 +345,10 @@ class ApiQueryImageInfo extends ApiQueryBase {
}
if ( $url ) {
- if ( !is_null( $scale ) && !$file->isOld() ) {
- $mto = $file->transform( array( 'width' => $scale['width'], 'height' => $scale['height'] ) );
+ if ( !is_null( $thumbParams ) ) {
+ $mto = $file->transform( $thumbParams );
if ( $mto && !$mto->isError() ) {
- $vals['thumburl'] = wfExpandUrl( $mto->getUrl() );
+ $vals['thumburl'] = wfExpandUrl( $mto->getUrl(), PROTO_CURRENT );
// bug 23834 - If the URL's are the same, we haven't resized it, so shouldn't give the wanted
// thumbnail sizes for the thumbnail actual size
@@ -299,32 +361,39 @@ class ApiQueryImageInfo extends ApiQueryBase {
}
if ( isset( $prop['thumbmime'] ) && $file->getHandler() ) {
- list( $ext, $mime ) = $file->getHandler()->getThumbType(
- substr( $mto->getPath(), strrpos( $mto->getPath(), '.' ) + 1 ),
+ list( $ext, $mime ) = $file->getHandler()->getThumbType(
+ substr( $mto->getPath(), strrpos( $mto->getPath(), '.' ) + 1 ),
$file->getMimeType(), $thumbParams );
$vals['thumbmime'] = $mime;
}
- } else if ( $mto && $mto->isError() ) {
+ } elseif ( $mto && $mto->isError() ) {
$vals['thumberror'] = $mto->toText();
}
}
- $vals['url'] = $file->getFullURL();
- $vals['descriptionurl'] = wfExpandUrl( $file->getDescriptionUrl() );
+ $vals['url'] = wfExpandUrl( $file->getFullURL(), PROTO_CURRENT );
+ $vals['descriptionurl'] = wfExpandUrl( $file->getDescriptionUrl(), PROTO_CURRENT );
}
-
+
if ( $sha1 ) {
$vals['sha1'] = wfBaseConvert( $file->getSha1(), 36, 16, 40 );
}
if ( $meta ) {
- $metadata = $file->getMetadata();
- $vals['metadata'] = $metadata ? self::processMetaData( unserialize( $metadata ), $result ) : null;
+ $metadata = unserialize( $file->getMetadata() );
+ if ( $version !== 'latest' ) {
+ $metadata = $file->convertMetadataVersion( $metadata, $version );
+ }
+ $vals['metadata'] = $metadata ? self::processMetaData( $metadata, $result ) : null;
}
if ( $mime ) {
$vals['mime'] = $file->getMimeType();
}
+ if ( $mediatype ) {
+ $vals['mediatype'] = $file->getMediaType();
+ }
+
if ( $archive && $file->isOld() ) {
$vals['archivename'] = $file->getArchiveName();
}
@@ -336,7 +405,7 @@ class ApiQueryImageInfo extends ApiQueryBase {
return $vals;
}
- /*
+ /**
*
* @param $metadata Array
* @param $result ApiResult
@@ -363,6 +432,10 @@ class ApiQueryImageInfo extends ApiQueryBase {
return 'public';
}
+ /**
+ * @param $img File
+ * @return string
+ */
private function getContinueStr( $img ) {
return $img->getOriginalTitle()->getText() .
'|' . $img->getTimestamp();
@@ -396,63 +469,86 @@ class ApiQueryImageInfo extends ApiQueryBase {
ApiBase::PARAM_TYPE => 'integer',
ApiBase::PARAM_DFLT => -1
),
+ 'metadataversion' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_DFLT => '1',
+ ),
+ 'urlparam' => array(
+ ApiBase::PARAM_DFLT => '',
+ ApiBase::PARAM_TYPE => 'string',
+ ),
'continue' => null,
);
}
/**
* Returns all possible parameters to iiprop
+ *
+ * @param array $filter List of properties to filter out
+ *
+ * @return Array
+ */
+ public static function getPropertyNames( $filter = array() ) {
+ return array_diff( array_keys( self::getProperties() ), $filter );
+ }
+
+ /**
+ * Returns array key value pairs of properties and their descriptions
+ *
+ * @return array
*/
- public static function getPropertyNames() {
+ private static function getProperties() {
return array(
- 'timestamp',
- 'user',
- 'userid',
- 'comment',
- 'parsedcomment',
- 'url',
- 'size',
- 'dimensions', // For backwards compatibility with Allimages
- 'sha1',
- 'mime',
- 'thumbmime',
- 'metadata',
- 'archivename',
- 'bitdepth',
+ 'timestamp' => ' timestamp - Adds timestamp for the uploaded version',
+ 'user' => ' user - Adds the user who uploaded the image version',
+ 'userid' => ' userid - Add the user ID that uploaded the image version',
+ 'comment' => ' comment - Comment on the version',
+ 'parsedcomment' => ' parsedcomment - Parse the comment on the version',
+ 'url' => ' url - Gives URL to the image and the description page',
+ 'size' => ' size - Adds the size of the image in bytes and the height, width and page count (if applicable)',
+ 'dimensions' => ' dimensions - Alias for size', // For backwards compatibility with Allimages
+ 'sha1' => ' sha1 - Adds SHA-1 hash for the image',
+ 'mime' => ' mime - Adds MIME type of the image',
+ 'thumbmime' => ' thumbmime - Adds MIME type of the image thumbnail (requires url)',
+ 'mediatype' => ' mediatype - Adds the media type of the image',
+ 'metadata' => ' metadata - Lists EXIF metadata for the version of the image',
+ 'archivename' => ' archivename - Adds the file name of the archive version for non-latest versions',
+ 'bitdepth' => ' bitdepth - Adds the bit depth of the version',
);
}
+ /**
+ * Returns the descriptions for the properties provided by getPropertyNames()
+ *
+ * @param array $filter List of properties to filter out
+ *
+ * @return array
+ */
+ public static function getPropertyDescriptions( $filter = array() ) {
+ return array_merge(
+ array( 'What image information to get:' ),
+ array_values( array_diff_key( self::getProperties(), array_flip( $filter ) ) )
+ );
+ }
/**
- * Return the API documentation for the parameters.
- * @return {Array} parameter documentation.
+ * Return the API documentation for the parameters.
+ * @return Array parameter documentation.
*/
public function getParamDescription() {
$p = $this->getModulePrefix();
return array(
- 'prop' => array(
- 'What image information to get:',
- ' timestamp - Adds timestamp for the uploaded version',
- ' user - Adds the user who uploaded the image version',
- ' userid - Add the user id that uploaded the image version',
- ' comment - Comment on the version',
- ' parsedcomment - Parse the comment on the version',
- ' url - Gives URL to the image and the description page',
- ' size - Adds the size of the image in bytes and the height and width',
- ' dimensions - Alias for size',
- ' sha1 - Adds sha1 hash for the image',
- ' mime - Adds MIME of the image',
- ' thumbmime - Adss MIME of the image thumbnail (requires url)',
- ' metadata - Lists EXIF metadata for the version of the image',
- ' archivename - Adds the file name of the archive version for non-latest versions',
- ' bitdepth - Adds the bit depth of the version',
- ),
+ 'prop' => self::getPropertyDescriptions(),
'urlwidth' => array( "If {$p}prop=url is set, a URL to an image scaled to this width will be returned.",
'Only the current version of the image can be scaled' ),
'urlheight' => "Similar to {$p}urlwidth. Cannot be used without {$p}urlwidth",
+ 'urlparam' => array( "A handler specific parameter string. For example, pdf's ",
+ "might use 'page15-100px'. {$p}urlwidth must be used and be consistent with {$p}urlparam" ),
'limit' => 'How many image revisions to return',
'start' => 'Timestamp to start listing from',
'end' => 'Timestamp to stop listing at',
+ 'metadataversion' => array( "Version of metadata to use. if 'latest' is specified, use latest version.",
+ "Defaults to '1' for backwards compatibility" ),
'continue' => 'If the query response includes a continue value, use it here to get another page of results'
);
}
@@ -462,8 +558,13 @@ class ApiQueryImageInfo extends ApiQueryBase {
}
public function getPossibleErrors() {
+ $p = $this->getModulePrefix();
return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'iiurlwidth', 'info' => 'iiurlheight cannot be used without iiurlwidth' ),
+ array( 'code' => "{$p}urlwidth", 'info' => "{$p}urlheight cannot be used without {$p}urlwidth" ),
+ array( 'code' => 'urlparam', 'info' => "Invalid value for {$p}urlparam" ),
+ array( 'code' => 'urlparam_no_width', 'info' => "{$p}urlparam requires {$p}urlwidth" ),
+ array( 'code' => 'urlparam_urlwidth_mismatch', 'info' => "The width set in {$p}urlparm doesnt't " .
+ "match the one in {$p}urlwidth" ),
) );
}
@@ -474,7 +575,11 @@ class ApiQueryImageInfo extends ApiQueryBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Properties#imageinfo_.2F_ii';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryImageInfo.php 85435 2011-04-05 14:00:08Z demon $';
+ return __CLASS__ . ': $Id: ApiQueryImageInfo.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryImages.php b/includes/api/ApiQueryImages.php
index af2920c7..9dfdf341 100644
--- a/includes/api/ApiQueryImages.php
+++ b/includes/api/ApiQueryImages.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on May 13, 2007
*
@@ -48,6 +48,9 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ */
private function run( $resultPageSet = null ) {
if ( $this->getPageSet()->getGoodTitleCount() == 0 ) {
return; // nothing to do
@@ -84,6 +87,19 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
}
$this->addOption( 'LIMIT', $params['limit'] + 1 );
+ if ( !is_null( $params['images'] ) ) {
+ $images = array();
+ foreach ( $params['images'] as $img ) {
+ $title = Title::newFromText( $img );
+ if ( !$title || $title->getNamespace() != NS_FILE ) {
+ $this->setWarning( "``$img'' is not a file" );
+ } else {
+ $images[] = $title->getDBkey();
+ }
+ }
+ $this->addWhereFld( 'il_to', $images );
+ }
+
$res = $this->select( __METHOD__ );
if ( is_null( $resultPageSet ) ) {
@@ -136,6 +152,9 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
),
'continue' => null,
+ 'images' => array(
+ ApiBase::PARAM_ISMULTI => true,
+ )
);
}
@@ -143,6 +162,7 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
return array(
'limit' => 'How many images to return',
'continue' => 'When more results are available, use this to continue',
+ 'images' => 'Only list these images. Useful for checking whether a certain page has a certain Image.',
);
}
@@ -165,7 +185,11 @@ class ApiQueryImages extends ApiQueryGeneratorBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Properties#images_.2F_im';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryImages.php 73543 2010-09-22 16:50:09Z platonides $';
+ return __CLASS__ . ': $Id: ApiQueryImages.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryInfo.php b/includes/api/ApiQueryInfo.php
index 59f61de1..fef1c6fc 100644
--- a/includes/api/ApiQueryInfo.php
+++ b/includes/api/ApiQueryInfo.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 25, 2006
*
@@ -41,12 +41,23 @@ class ApiQueryInfo extends ApiQueryBase {
$fld_readable = false, $fld_watched = false,
$fld_preload = false, $fld_displaytitle = false;
+ private $params, $titles, $missing, $everything, $pageCounter;
+
+ private $pageRestrictions, $pageIsRedir, $pageIsNew, $pageTouched,
+ $pageLatest, $pageLength;
+
+ private $protections, $watched, $talkids, $subjectids, $displaytitles;
+
private $tokenFunctions;
public function __construct( $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'in' );
}
+ /**
+ * @param $pageSet ApiPageSet
+ * @return void
+ */
public function requestExtraData( $pageSet ) {
global $wgDisableCounters;
@@ -87,6 +98,7 @@ class ApiQueryInfo extends ApiQueryBase {
'unblock' => array( 'ApiQueryInfo', 'getUnblockToken' ),
'email' => array( 'ApiQueryInfo', 'getEmailToken' ),
'import' => array( 'ApiQueryInfo', 'getImportToken' ),
+ 'watch' => array( 'ApiQueryInfo', 'getWatchToken'),
);
wfRunHooks( 'APIQueryInfoTokens', array( &$this->tokenFunctions ) );
return $this->tokenFunctions;
@@ -193,7 +205,7 @@ class ApiQueryInfo extends ApiQueryBase {
public static function getImportToken( $pageid, $title ) {
global $wgUser;
- if ( !$wgUser->isAllowed( 'import' ) ) {
+ if ( !$wgUser->isAllowedAny( 'import', 'importupload' ) ) {
return false;
}
@@ -206,6 +218,21 @@ class ApiQueryInfo extends ApiQueryBase {
return $cachedImportToken;
}
+ public static function getWatchToken( $pageid, $title ) {
+ global $wgUser;
+ if ( !$wgUser->isLoggedIn() ) {
+ return false;
+ }
+
+ static $cachedWatchToken = null;
+ if ( !is_null( $cachedWatchToken ) ) {
+ return $cachedWatchToken;
+ }
+
+ $cachedWatchToken = $wgUser->editToken( 'watch' );
+ return $cachedWatchToken;
+ }
+
public function execute() {
$this->params = $this->extractRequestParams();
if ( !is_null( $this->params['prop'] ) ) {
@@ -353,8 +380,8 @@ class ApiQueryInfo extends ApiQueryBase {
}
if ( $this->fld_url ) {
- $pageInfo['fullurl'] = $title->getFullURL();
- $pageInfo['editurl'] = $title->getFullURL( 'action=edit' );
+ $pageInfo['fullurl'] = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
+ $pageInfo['editurl'] = wfExpandUrl( $title->getFullURL( 'action=edit' ), PROTO_CURRENT );
}
if ( $this->fld_readable && $title->userCanRead() ) {
$pageInfo['readable'] = '';
@@ -386,6 +413,7 @@ class ApiQueryInfo extends ApiQueryBase {
* Get information about protections and put it in $protections
*/
private function getProtectionInfo() {
+ global $wgContLang;
$this->protections = array();
$db = $this->getDB();
@@ -404,7 +432,7 @@ class ApiQueryInfo extends ApiQueryBase {
$a = array(
'type' => $row->pr_type,
'level' => $row->pr_level,
- 'expiry' => Block::decodeExpiry( $row->pr_expiry, TS_ISO_8601 )
+ 'expiry' => $wgContLang->formatExpiry( $row->pr_expiry, TS_ISO_8601 )
);
if ( $row->pr_cascade ) {
$a['cascade'] = '';
@@ -461,7 +489,7 @@ class ApiQueryInfo extends ApiQueryBase {
$this->protections[$row->pt_namespace][$row->pt_title][] = array(
'type' => 'create',
'level' => $row->pt_create_perm,
- 'expiry' => Block::decodeExpiry( $row->pt_expiry, TS_ISO_8601 )
+ 'expiry' => $wgContLang->formatExpiry( $row->pt_expiry, TS_ISO_8601 )
);
}
}
@@ -495,7 +523,7 @@ class ApiQueryInfo extends ApiQueryBase {
$this->protections[$row->tl_namespace][$row->tl_title][] = array(
'type' => $row->pr_type,
'level' => $row->pr_level,
- 'expiry' => Block::decodeExpiry( $row->pr_expiry, TS_ISO_8601 ),
+ 'expiry' => $wgContLang->formatExpiry( $row->pr_expiry, TS_ISO_8601 ),
'source' => $source->getPrefixedText()
);
}
@@ -518,7 +546,7 @@ class ApiQueryInfo extends ApiQueryBase {
$this->protections[NS_FILE][$row->il_to][] = array(
'type' => $row->pr_type,
'level' => $row->pr_level,
- 'expiry' => Block::decodeExpiry( $row->pr_expiry, TS_ISO_8601 ),
+ 'expiry' => $wgContLang->formatExpiry( $row->pr_expiry, TS_ISO_8601 ),
'source' => $source->getPrefixedText()
);
}
@@ -700,7 +728,11 @@ class ApiQueryInfo extends ApiQueryBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Properties#info_.2F_in';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryInfo.php 78439 2010-12-15 14:23:46Z catrope $';
+ return __CLASS__ . ': $Id: ApiQueryInfo.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryLangBacklinks.php b/includes/api/ApiQueryLangBacklinks.php
new file mode 100644
index 00000000..e09384e5
--- /dev/null
+++ b/includes/api/ApiQueryLangBacklinks.php
@@ -0,0 +1,220 @@
+<?php
+/**
+ * API for MediaWiki 1.17+
+ *
+ * Created on May 14, 2011
+ *
+ * Copyright © 2011 Sam Reed
+ * Copyright © 2006 Yuri Astrakhan <Firstname><Lastname>@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
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ // Eclipse helper - will be ignored in production
+ require_once( "ApiQueryBase.php" );
+}
+
+/**
+ * This gives links pointing to the given interwiki
+ * @ingroup API
+ */
+class ApiQueryLangBacklinks extends ApiQueryGeneratorBase {
+
+ public function __construct( $query, $moduleName ) {
+ parent::__construct( $query, $moduleName, 'lbl' );
+ }
+
+ public function execute() {
+ $this->run();
+ }
+
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
+ }
+
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
+ public function run( $resultPageSet = null ) {
+ $params = $this->extractRequestParams();
+
+ if ( isset( $params['title'] ) && !isset( $params['lang'] ) ) {
+ $this->dieUsageMsg( array( 'missingparam', 'lang' ) );
+ }
+
+ 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' );
+ }
+
+ $prefix = $this->getDB()->strencode( $cont[0] );
+ $title = $this->getDB()->strencode( $this->titleToKey( $cont[1] ) );
+ $from = intval( $cont[2] );
+ $this->addWhere(
+ "ll_lang > '$prefix' OR " .
+ "(ll_lang = '$prefix' AND " .
+ "(ll_title > '$title' OR " .
+ "(ll_title = '$title' AND " .
+ "ll_from >= $from)))"
+ );
+ }
+
+ $prop = array_flip( $params['prop'] );
+ $lllang = isset( $prop['lllang'] );
+ $lltitle = isset( $prop['lltitle'] );
+
+ $this->addTables( array( 'langlinks', 'page' ) );
+ $this->addWhere( 'll_from = page_id' );
+
+ $this->addFields( array( 'page_id', 'page_title', 'page_namespace', 'page_is_redirect',
+ 'll_from', 'll_lang', 'll_title' ) );
+
+ if ( isset( $params['lang'] ) ) {
+ $this->addWhereFld( 'll_lang', $params['lang'] );
+ if ( isset( $params['title'] ) ) {
+ $this->addWhereFld( 'll_title', $params['title'] );
+ $this->addOption( 'ORDER BY', 'll_from' );
+ } else {
+ $this->addOption( 'ORDER BY', 'll_title, ll_from' );
+ }
+ } else {
+ $this->addOption( 'ORDER BY', 'll_lang, ll_title, ll_from' );
+ }
+
+ $this->addOption( 'LIMIT', $params['limit'] + 1 );
+
+ $res = $this->select( __METHOD__ );
+
+ $pages = array();
+
+ $count = 0;
+ $result = $this->getResult();
+ foreach ( $res as $row ) {
+ if ( ++ $count > $params['limit'] ) {
+ // We've reached the one extra which shows that there are additional pages to be had. Stop here...
+ // Continue string preserved in case the redirect query doesn't pass the limit
+ $this->setContinueEnumParameter( 'continue', "{$row->ll_lang}|{$row->ll_title}|{$row->ll_from}" );
+ break;
+ }
+
+ if ( !is_null( $resultPageSet ) ) {
+ $pages[] = Title::newFromRow( $row );
+ } else {
+ $entry = array( 'pageid' => $row->page_id );
+
+ $title = Title::makeTitle( $row->page_namespace, $row->page_title );
+ ApiQueryBase::addTitleInfo( $entry, $title );
+
+ if ( $row->page_is_redirect ) {
+ $entry['redirect'] = '';
+ }
+
+ if ( $lllang ) {
+ $entry['lllang'] = $row->ll_lang;
+ }
+
+ if ( $lltitle ) {
+ $entry['lltitle'] = $row->ll_title;
+ }
+
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $entry );
+ if ( !$fit ) {
+ $this->setContinueEnumParameter( 'continue', "{$row->ll_lang}|{$row->ll_title}|{$row->ll_from}" );
+ break;
+ }
+ }
+ }
+
+ if ( is_null( $resultPageSet ) ) {
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'll' );
+ } else {
+ $resultPageSet->populateFromTitles( $pages );
+ }
+ }
+
+ public function getCacheMode( $params ) {
+ return 'public';
+ }
+
+ public function getAllowedParams() {
+ return array(
+ 'lang' => null,
+ 'title' => null,
+ 'continue' => null,
+ 'limit' => array(
+ ApiBase::PARAM_DFLT => 10,
+ ApiBase::PARAM_TYPE => 'limit',
+ ApiBase::PARAM_MIN => 1,
+ ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
+ ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
+ ),
+ 'prop' => array(
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_DFLT => '',
+ ApiBase::PARAM_TYPE => array(
+ 'lllang',
+ 'lltitle',
+ ),
+ ),
+ );
+ }
+
+ public function getParamDescription() {
+ return array(
+ 'lang' => 'Language for the language link',
+ 'title' => "Language link to search for. Must be used with {$this->getModulePrefix()}lang",
+ 'continue' => 'When more results are available, use this to continue',
+ 'prop' => array(
+ 'Which properties to get',
+ ' lllang - Adds the language code of the language link',
+ ' lltitle - Adds the title of the language ink',
+ ),
+ 'limit' => 'How many total pages to return',
+ );
+ }
+
+ public function getDescription() {
+ return array( 'Find all pages that link to the given language link.',
+ 'Can be used to find all links with a language code, or',
+ 'all links to a title (with a given language).',
+ 'Using neither parameter is effectively "All Language Links"',
+ );
+ }
+
+ 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' ),
+ ) );
+ }
+
+ protected function getExamples() {
+ return array(
+ 'api.php?action=query&list=langbacklinks&lbltitle=Test&lbllang=fr',
+ 'api.php?action=query&generator=langbacklinks&glbltitle=Test&lbllang=fr&prop=info'
+ );
+ }
+
+ public function getVersion() {
+ return __CLASS__ . ': $Id: ApiQueryLangBacklinks.php 88429 2011-05-19 21:13:03Z reedy $';
+ }
+}
diff --git a/includes/api/ApiQueryLangLinks.php b/includes/api/ApiQueryLangLinks.php
index c2ecbfee..b2a974ad 100644
--- a/includes/api/ApiQueryLangLinks.php
+++ b/includes/api/ApiQueryLangLinks.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on May 13, 2007
*
@@ -46,6 +46,11 @@ class ApiQueryLangLinks extends ApiQueryBase {
}
$params = $this->extractRequestParams();
+
+ if ( isset( $params['title'] ) && !isset( $params['lang'] ) ) {
+ $this->dieUsageMsg( array( 'missingparam', 'lang' ) );
+ }
+
$this->addFields( array(
'll_from',
'll_lang',
@@ -69,12 +74,23 @@ class ApiQueryLangLinks extends ApiQueryBase {
);
}
- // Don't order by ll_from if it's constant in the WHERE clause
- if ( count( $this->getPageSet()->getGoodTitles() ) == 1 ) {
- $this->addOption( 'ORDER BY', 'll_lang' );
+ if ( isset( $params['lang'] ) ) {
+ $this->addWhereFld( 'll_lang', $params['lang'] );
+ if ( isset( $params['title'] ) ) {
+ $this->addWhereFld( 'll_title', $params['title'] );
+ $this->addOption( 'ORDER BY', 'll_from' );
+ } else {
+ $this->addOption( 'ORDER BY', 'll_title, ll_from' );
+ }
} else {
- $this->addOption( 'ORDER BY', 'll_from, ll_lang' );
+ // Don't order by ll_from if it's constant in the WHERE clause
+ if ( count( $this->getPageSet()->getGoodTitles() ) == 1 ) {
+ $this->addOption( 'ORDER BY', 'll_lang' );
+ } else {
+ $this->addOption( 'ORDER BY', 'll_from, ll_lang' );
+ }
}
+
$this->addOption( 'LIMIT', $params['limit'] + 1 );
$res = $this->select( __METHOD__ );
@@ -90,7 +106,7 @@ class ApiQueryLangLinks extends ApiQueryBase {
if ( $params['url'] ) {
$title = Title::newFromText( "{$row->ll_lang}:{$row->ll_title}" );
if ( $title ) {
- $entry['url'] = $title->getFullURL();
+ $entry['url'] = wfExpandUrl( $title->getFullURL(), PROTO_CURRENT );
}
}
ApiResult::setContent( $entry, $row->ll_title );
@@ -117,6 +133,8 @@ class ApiQueryLangLinks extends ApiQueryBase {
),
'continue' => null,
'url' => false,
+ 'lang' => null,
+ 'title' => null,
);
}
@@ -125,6 +143,8 @@ class ApiQueryLangLinks extends ApiQueryBase {
'limit' => 'How many langlinks to return',
'continue' => 'When more results are available, use this to continue',
'url' => 'Whether to get the full URL',
+ 'lang' => 'Language code',
+ 'title' => "Link to search for. Must be used with {$this->getModulePrefix()}lang",
);
}
@@ -134,6 +154,7 @@ 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' ),
) );
}
@@ -145,7 +166,11 @@ class ApiQueryLangLinks extends ApiQueryBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Properties#langlinks_.2F_ll';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryLangLinks.php 77660 2010-12-03 14:44:07Z catrope $';
+ return __CLASS__ . ': $Id: ApiQueryLangLinks.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryLinks.php b/includes/api/ApiQueryLinks.php
index 4f3bad3b..fa2495a9 100644
--- a/includes/api/ApiQueryLinks.php
+++ b/includes/api/ApiQueryLinks.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on May 12, 2007
*
@@ -39,7 +39,7 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
const LINKS = 'links';
const TEMPLATES = 'templates';
- private $table, $prefix, $description;
+ private $table, $prefix, $description, $helpUrl;
public function __construct( $query, $moduleName ) {
switch ( $moduleName ) {
@@ -48,12 +48,14 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
$this->prefix = 'pl';
$this->description = 'link';
$this->titlesParam = 'titles';
+ $this->helpUrl = 'https://www.mediawiki.org/wiki/API:Properties#links_.2F_pl';
break;
case self::TEMPLATES:
$this->table = 'templatelinks';
$this->prefix = 'tl';
$this->description = 'template';
$this->titlesParam = 'templates';
+ $this->helpUrl = 'https://www.mediawiki.org/wiki/API:Properties#templates_.2F_tl';
break;
default:
ApiBase::dieDebug( __METHOD__, 'Unknown module name' );
@@ -74,6 +76,10 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return
+ */
private function run( $resultPageSet = null ) {
if ( $this->getPageSet()->getGoodTitleCount() == 0 ) {
return; // nothing to do
@@ -213,7 +219,7 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
);
if ( $this->getModuleName() == self::LINKS ) {
$arr[$this->titlesParam] = 'Only list links to these titles. Useful for checking whether a certain page links to a certain title.';
- } else if ( $this->getModuleName() == self::TEMPLATES ) {
+ } elseif ( $this->getModuleName() == self::TEMPLATES ) {
$arr[$this->titlesParam] = 'Only list these templates. Useful for checking whether a certain page uses a certain template.';
}
return $arr;
@@ -234,7 +240,11 @@ class ApiQueryLinks extends ApiQueryGeneratorBase {
);
}
+ public function getHelpUrls() {
+ return $this->helpUrl;
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryLinks.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiQueryLinks.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryLogEvents.php b/includes/api/ApiQueryLogEvents.php
index 7d69ca39..1420e0a7 100644
--- a/includes/api/ApiQueryLogEvents.php
+++ b/includes/api/ApiQueryLogEvents.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 16, 2006
*
@@ -86,13 +86,10 @@ class ApiQueryLogEvents extends ApiQueryBase {
'log_deleted',
) );
- $this->addFieldsIf( 'log_id', $this->fld_ids );
- $this->addFieldsIf( 'page_id', $this->fld_ids );
- $this->addFieldsIf( 'log_user', $this->fld_user );
- $this->addFieldsIf( 'user_name', $this->fld_user );
+ $this->addFieldsIf( array( 'log_id', 'page_id' ), $this->fld_ids );
+ $this->addFieldsIf( array( 'log_user', 'user_name' ), $this->fld_user );
$this->addFieldsIf( 'user_id', $this->fld_userid );
- $this->addFieldsIf( 'log_namespace', $this->fld_title || $this->fld_parsedcomment );
- $this->addFieldsIf( 'log_title', $this->fld_title || $this->fld_parsedcomment );
+ $this->addFieldsIf( array( 'log_namespace', 'log_title' ), $this->fld_title || $this->fld_parsedcomment );
$this->addFieldsIf( 'log_comment', $this->fld_comment || $this->fld_parsedcomment );
$this->addFieldsIf( 'log_params', $this->fld_details );
@@ -114,13 +111,12 @@ class ApiQueryLogEvents extends ApiQueryBase {
list( $type, $action ) = explode( '/', $params['action'] );
$this->addWhereFld( 'log_type', $type );
$this->addWhereFld( 'log_action', $action );
- }
- else if ( !is_null( $params['type'] ) ) {
+ } elseif ( !is_null( $params['type'] ) ) {
$this->addWhereFld( 'log_type', $params['type'] );
$index['logging'] = 'type_time';
}
- $this->addWhereRange( 'log_timestamp', $params['dir'], $params['start'], $params['end'] );
+ $this->addTimestampWhereRange( 'log_timestamp', $params['dir'], $params['start'], $params['end'] );
$limit = $params['limit'];
$this->addOption( 'LIMIT', $limit + 1 );
@@ -148,6 +144,22 @@ class ApiQueryLogEvents extends ApiQueryBase {
$index['logging'] = is_null( $user ) ? 'page_time' : array( 'page_time', 'user_time' );
}
+ $prefix = $params['prefix'];
+
+ if ( !is_null( $prefix ) ) {
+ global $wgMiserMode;
+ if ( $wgMiserMode ) {
+ $this->dieUsage( 'Prefix search disabled in Miser Mode', 'prefixsearchdisabled' );
+ }
+
+ $title = Title::newFromText( $prefix );
+ if ( is_null( $title ) ) {
+ $this->dieUsage( "Bad title value '$prefix'", 'param_prefix' );
+ }
+ $this->addWhereFld( 'log_namespace', $title->getNamespace() );
+ $this->addWhere( 'log_title ' . $db->buildLike( $title->getDBkey(), $db->anyString() ) );
+ }
+
$this->addOption( 'USE INDEX', $index );
// Paranoia: avoid brute force searches (bug 17342)
@@ -160,6 +172,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
$count = 0;
$res = $this->select( __METHOD__ );
+ $result = $this->getResult();
foreach ( $res as $row ) {
if ( ++ $count > $limit ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
@@ -171,25 +184,25 @@ class ApiQueryLogEvents extends ApiQueryBase {
if ( !$vals ) {
continue;
}
- $fit = $this->getResult()->addValue( array( 'query', $this->getModuleName() ), null, $vals );
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $vals );
if ( !$fit ) {
$this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->log_timestamp ) );
break;
}
}
- $this->getResult()->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'item' );
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'item' );
}
/**
- * @static
* @param $result ApiResult
- * @param $vals
- * @param $params
- * @param $type
+ * @param $vals array
+ * @param $params string
+ * @param $type string
+ * @param $action string
* @param $ts
* @return array
*/
- public static function addLogParams( $result, &$vals, $params, $type, $ts ) {
+ public static function addLogParams( $result, &$vals, $params, $type, $action, $ts ) {
$params = explode( "\n", $params );
switch ( $type ) {
case 'move':
@@ -219,11 +232,14 @@ class ApiQueryLogEvents extends ApiQueryBase {
$params = null;
break;
case 'block':
+ if ( $action == 'unblock' ) {
+ break;
+ }
$vals2 = array();
list( $vals2['duration'], $vals2['flags'] ) = $params;
// Indefinite blocks have no expiry time
- if ( Block::parseExpiryInput( $params[0] ) !== Block::infinity() ) {
+ if ( SpecialBlock::parseExpiryInput( $params[0] ) !== wfGetDB( DB_SLAVE )->getInfinity() ) {
$vals2['expiry'] = wfTimestamp( TS_ISO_8601,
strtotime( $params[0], wfTimestamp( TS_UNIX, $ts ) ) );
}
@@ -268,8 +284,11 @@ class ApiQueryLogEvents extends ApiQueryBase {
$vals['actionhidden'] = '';
} else {
self::addLogParams(
- $this->getResult(), $vals,
- $row->log_params, $row->log_type,
+ $this->getResult(),
+ $vals,
+ $row->log_params,
+ $row->log_type,
+ $row->log_action,
$row->log_timestamp
);
}
@@ -285,7 +304,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
if ( $this->fld_userid ) {
$vals['userid'] = $row->user_id;
}
-
+
if ( !$row->log_user ) {
$vals['anon'] = '';
}
@@ -372,6 +391,7 @@ class ApiQueryLogEvents extends ApiQueryBase {
),
'user' => null,
'title' => null,
+ 'prefix' => null,
'tag' => null,
'limit' => array(
ApiBase::PARAM_DFLT => 10,
@@ -384,27 +404,29 @@ class ApiQueryLogEvents extends ApiQueryBase {
}
public function getParamDescription() {
+ $p = $this->getModulePrefix();
return array(
'prop' => array(
'Which properties to get',
- ' ids - Adds the id of the log event',
+ ' ids - Adds the ID of the log event',
' title - Adds the title of the page for the log event',
' type - Adds the type of log event',
' user - Adds the user responsible for the log event',
- ' userid - Adds the user id who was responsible for the log event',
+ ' userid - Adds the user ID who was responsible for the log event',
' timestamp - Adds the timestamp for the event',
' comment - Adds the comment of the event',
' parsedcomment - Adds the parsed comment of the event',
' details - Lists addtional details about the event',
' tags - Lists tags for the event',
),
- 'type' => 'Filter log entries to only this type(s)',
- 'action' => "Filter log actions to only this type. Overrides {$this->getModulePrefix()}type",
+ 'type' => 'Filter log entries to only this type',
+ 'action' => "Filter log actions to only this type. Overrides {$p}type",
'start' => 'The timestamp to start enumerating from',
'end' => 'The timestamp to end enumerating',
- 'dir' => 'In which direction to enumerate',
+ 'dir' => $this->getDirectionDescription( $p ),
'user' => 'Filter entries to those made by the given user',
'title' => 'Filter entries to those related to a page',
+ 'prefix' => 'Filter entries that start with this prefix. Disabled in Miser Mode',
'limit' => 'How many total event entries to return',
'tag' => 'Only list event entries tagged with this tag',
);
@@ -418,6 +440,8 @@ class ApiQueryLogEvents extends ApiQueryBase {
return array_merge( parent::getPossibleErrors(), array(
array( 'code' => 'param_user', 'info' => 'User name $user not found' ),
array( 'code' => 'param_title', 'info' => 'Bad title value \'title\'' ),
+ array( 'code' => 'param_prefix', 'info' => 'Bad title value \'prefix\'' ),
+ array( 'code' => 'prefixsearchdisabled', 'info' => 'Prefix search disabled in Miser Mode' ),
) );
}
@@ -427,7 +451,11 @@ class ApiQueryLogEvents extends ApiQueryBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Logevents';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryLogEvents.php 74535 2010-10-09 00:01:45Z reedy $';
+ return __CLASS__ . ': $Id: ApiQueryLogEvents.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryPageProps.php b/includes/api/ApiQueryPageProps.php
index 894e812d..64b8511d 100644
--- a/includes/api/ApiQueryPageProps.php
+++ b/includes/api/ApiQueryPageProps.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Aug 7, 2010
*
@@ -43,55 +43,59 @@ class ApiQueryPageProps extends ApiQueryBase {
}
public function execute() {
- $this->params = $this->extractRequestParams();
-
# Only operate on existing pages
$pages = $this->getPageSet()->getGoodTitles();
if ( !count( $pages ) ) {
# Nothing to do
return;
}
-
+
+ $this->params = $this->extractRequestParams();
+
$this->addTables( 'page_props' );
$this->addFields( array( 'pp_page', 'pp_propname', 'pp_value' ) );
$this->addWhereFld( 'pp_page', array_keys( $pages ) );
-
+
if ( $this->params['continue'] ) {
$this->addWhere( 'pp_page >=' . intval( $this->params['continue'] ) );
}
-
+
+ if ( $this->params['prop'] ) {
+ $this->addWhereFld( 'pp_propname', $this->params['prop'] );
+ }
+
# Force a sort order to ensure that properties are grouped by page
$this->addOption( 'ORDER BY', 'pp_page' );
-
+
$res = $this->select( __METHOD__ );
$currentPage = 0; # Id of the page currently processed
$props = array();
$result = $this->getResult();
-
+
foreach ( $res as $row ) {
if ( $currentPage != $row->pp_page ) {
- # Different page than previous row, so add the properties to
+ # Different page than previous row, so add the properties to
# the result and save the new page id
-
+
if ( $currentPage ) {
if ( !$this->addPageProps( $result, $currentPage, $props ) ) {
# addPageProps() indicated that the result did not fit
# so stop adding data. Reset props so that it doesn't
# get added again after loop exit
-
+
$props = array();
break;
}
-
+
$props = array();
}
-
+
$currentPage = $row->pp_page;
}
-
+
$props[$row->pp_propname] = $row->pp_value;
}
-
+
if ( count( $props ) ) {
# Add any remaining properties to the results
$this->addPageProps( $result, $currentPage, $props );
@@ -99,7 +103,7 @@ class ApiQueryPageProps extends ApiQueryBase {
}
/**
- * Add page properties to an ApiResult, adding a continue
+ * Add page properties to an ApiResult, adding a continue
* parameter if it doesn't fit.
*
* @param $result ApiResult
@@ -109,7 +113,7 @@ class ApiQueryPageProps extends ApiQueryBase {
*/
private function addPageProps( $result, $page, $props ) {
$fit = $result->addValue( array( 'query', 'pages', $page ), 'pageprops', $props );
-
+
if ( !$fit ) {
$this->setContinueEnumParameter( 'continue', $page );
}
@@ -120,31 +124,35 @@ class ApiQueryPageProps extends ApiQueryBase {
return 'public';
}
- public function getAllowedParams() {
- return array( 'continue' => null );
+ public function getAllowedParams() {
+ return array(
+ 'continue' => null,
+ 'prop' => null,
+ );
}
public function getParamDescription() {
- return array( 'continue' => 'When more results are available, use this to continue' );
+ return array(
+ 'continue' => 'When more results are available, use this to continue',
+ 'prop' => 'Page prop to look on the page for. Useful for checking whether a certain page uses a certain page prop.'
+ );
}
public function getDescription() {
return 'Get various properties defined in the page content';
}
- 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' ),
- ) );
- }
-
protected function getExamples() {
return array(
'api.php?action=query&prop=pageprops&titles=Category:Foo',
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Properties#pageprops_.2F_pp';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryPageProps.php 85211 2011-04-02 21:01:00Z demon $';
+ return __CLASS__ . ': $Id: ApiQueryPageProps.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryProtectedTitles.php b/includes/api/ApiQueryProtectedTitles.php
index e647c39f..14df7446 100644
--- a/includes/api/ApiQueryProtectedTitles.php
+++ b/includes/api/ApiQueryProtectedTitles.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Feb 13, 2009
*
- * Copyright © 2009 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2009 Roan Kattouw <Firstname>.<Lastname>@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
@@ -48,6 +48,10 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function run( $resultPageSet = null ) {
$params = $this->extractRequestParams();
@@ -60,7 +64,7 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
$this->addFieldsIf( 'pt_expiry', isset( $prop['expiry'] ) );
$this->addFieldsIf( 'pt_create_perm', isset( $prop['level'] ) );
- $this->addWhereRange( 'pt_timestamp', $params['dir'], $params['start'], $params['end'] );
+ $this->addTimestampWhereRange( 'pt_timestamp', $params['dir'], $params['start'], $params['end'] );
$this->addWhereFld( 'pt_namespace', $params['namespace'] );
$this->addWhereFld( 'pt_create_perm', $params['level'] );
@@ -77,6 +81,9 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
$count = 0;
$result = $this->getResult();
+
+ $titles = array();
+
foreach ( $res as $row ) {
if ( ++ $count > $params['limit'] ) {
// We've reached the one extra which shows that there are additional pages to be had. Stop here...
@@ -110,7 +117,8 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
}
if ( isset( $prop['expiry'] ) ) {
- $vals['expiry'] = Block::decodeExpiry( $row->pt_expiry, TS_ISO_8601 );
+ global $wgContLang;
+ $vals['expiry'] = $wgContLang->formatExpiry( $row->pt_expiry, TS_ISO_8601 );
}
if ( isset( $prop['level'] ) ) {
@@ -165,8 +173,8 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
'dir' => array(
ApiBase::PARAM_DFLT => 'older',
ApiBase::PARAM_TYPE => array(
- 'older',
- 'newer'
+ 'newer',
+ 'older'
)
),
'start' => array(
@@ -196,13 +204,13 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
'namespace' => 'Only list titles in these namespaces',
'start' => 'Start listing at this protection timestamp',
'end' => 'Stop listing at this protection timestamp',
- 'dir' => 'The direction in which to list',
+ 'dir' => $this->getDirectionDescription( $this->getModulePrefix() ),
'limit' => 'How many total pages to return',
'prop' => array(
'Which properties to get',
' timestamp - Adds the timestamp of when protection was added',
- ' user - Adds the user to add the protection',
- ' userid - Adds the user id to add the protection',
+ ' user - Adds the user that added the protection',
+ ' userid - Adds the user id that added the protection',
' comment - Adds the comment for the protection',
' parsedcomment - Adds the parsed comment for the protection',
' expiry - Adds the timestamp of when the protection will be lifted',
@@ -222,7 +230,11 @@ class ApiQueryProtectedTitles extends ApiQueryGeneratorBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Protectedtitles';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryProtectedTitles.php 71838 2010-08-28 01:18:18Z reedy $';
+ return __CLASS__ . ': $Id: ApiQueryProtectedTitles.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryQueryPage.php b/includes/api/ApiQueryQueryPage.php
new file mode 100644
index 00000000..e22cf8eb
--- /dev/null
+++ b/includes/api/ApiQueryQueryPage.php
@@ -0,0 +1,198 @@
+<?php
+/**
+ *
+ *
+ * Created on Dec 22, 2010
+ *
+ * Copyright © 2010 Roan Kattouw <Firstname>.<Lastname>@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
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ // Eclipse helper - will be ignored in production
+ require_once( 'ApiQueryBase.php' );
+}
+
+/**
+ * Query module to get the results of a QueryPage-based special page
+ *
+ * @ingroup API
+ */
+class ApiQueryQueryPage extends ApiQueryGeneratorBase {
+ private $qpMap;
+
+ /**
+ * Some query pages are useless because they're available elsewhere in the API
+ */
+ private $uselessQueryPages = array(
+ 'MIMEsearch', // aiprop=mime
+ 'LinkSearch', // list=exturlusage
+ 'FileDuplicateSearch', // prop=duplicatefiles
+ );
+
+ public function __construct( $query, $moduleName ) {
+ parent::__construct( $query, $moduleName, 'qp' );
+ // We need to do this to make sure $wgQueryPages is set up
+ // This SUCKS
+ global $IP;
+ require_once( "$IP/includes/QueryPage.php" );
+
+ // Build mapping from special page names to QueryPage classes
+ global $wgQueryPages;
+ $this->qpMap = array();
+ foreach ( $wgQueryPages as $page ) {
+ if( !in_array( $page[1], $this->uselessQueryPages ) ) {
+ $this->qpMap[$page[1]] = $page[0];
+ }
+ }
+ }
+
+ public function execute() {
+ $this->run();
+ }
+
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
+ }
+
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
+ public function run( $resultPageSet = null ) {
+ global $wgUser;
+ $params = $this->extractRequestParams();
+ $result = $this->getResult();
+
+ $qp = new $this->qpMap[$params['page']]();
+ if ( !$qp->userCanExecute( $wgUser ) ) {
+ $this->dieUsageMsg( 'specialpage-cantexecute' );
+ }
+
+ $r = array( 'name' => $params['page'] );
+ if ( $qp->isCached() ) {
+ if ( !$qp->isCacheable() ) {
+ $r['disabled'] = '';
+ } else {
+ $r['cached'] = '';
+ $ts = $qp->getCachedTimestamp();
+ if ( $ts ) {
+ $r['cachedtimestamp'] = wfTimestamp( TS_ISO_8601, $ts );
+ }
+ }
+ }
+ $result->addValue( array( 'query' ), $this->getModuleName(), $r );
+
+ if ( $qp->isCached() && !$qp->isCacheable() ) {
+ // Disabled query page, don't run the query
+ return;
+ }
+
+ $res = $qp->doQuery( $params['offset'], $params['limit'] + 1 );
+ $count = 0;
+ $titles = array();
+ foreach ( $res as $row ) {
+ if ( ++$count > $params['limit'] ) {
+ // We've had enough
+ $this->setContinueEnumParameter( 'offset', $params['offset'] + $params['limit'] );
+ break;
+ }
+
+ $title = Title::makeTitle( $row->namespace, $row->title );
+ if ( is_null( $resultPageSet ) ) {
+ $data = array( 'value' => $row->value );
+ if ( $qp->usesTimestamps() ) {
+ $data['timestamp'] = wfTimestamp( TS_ISO_8601, $row->value );
+ }
+ self::addTitleInfo( $data, $title );
+
+ foreach ( $row as $field => $value ) {
+ if ( !in_array( $field, array( 'namespace', 'title', 'value', 'qc_type' ) ) ) {
+ $data['databaseResult'][$field] = $value;
+ }
+ }
+
+ $fit = $result->addValue( array( 'query', $this->getModuleName(), 'results' ), null, $data );
+ if ( !$fit ) {
+ $this->setContinueEnumParameter( 'offset', $params['offset'] + $count - 1 );
+ break;
+ }
+ } else {
+ $titles[] = $title;
+ }
+ }
+ if ( is_null( $resultPageSet ) ) {
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName(), 'results' ), 'page' );
+ } else {
+ $resultPageSet->populateFromTitles( $titles );
+ }
+ }
+
+ public function getCacheMode( $params ) {
+ $qp = new $this->qpMap[$params['page']]();
+ if ( $qp->getRestriction() != '' ) {
+ return 'private';
+ }
+ return 'public';
+ }
+
+ public function getAllowedParams() {
+ return array(
+ 'page' => array(
+ ApiBase::PARAM_TYPE => array_keys( $this->qpMap ),
+ ApiBase::PARAM_REQUIRED => true
+ ),
+ 'offset' => 0,
+ 'limit' => array(
+ ApiBase::PARAM_DFLT => 10,
+ ApiBase::PARAM_TYPE => 'limit',
+ ApiBase::PARAM_MIN => 1,
+ ApiBase::PARAM_MAX => ApiBase::LIMIT_BIG1,
+ ApiBase::PARAM_MAX2 => ApiBase::LIMIT_BIG2
+ ),
+ );
+ }
+
+ public function getParamDescription() {
+ return array(
+ 'page' => 'The name of the special page. Note, this is case sensitive',
+ 'offset' => 'When more results are available, use this to continue',
+ 'limit' => 'Number of results to return',
+ );
+ }
+
+ public function getDescription() {
+ return 'Get a list provided by a QueryPage-based special page';
+ }
+
+ public function getPossibleErrors() {
+ return array_merge( parent::getPossibleErrors(), array(
+ ) );
+ }
+
+ protected function getExamples() {
+ return array(
+ 'api.php?action=query&list=querypage&qppage=Ancientpages'
+ );
+ }
+
+ public function getVersion() {
+ return __CLASS__ . ': $Id: ApiQueryQueryPage.php 99989 2011-10-16 22:24:58Z reedy $';
+ }
+}
diff --git a/includes/api/ApiQueryRandom.php b/includes/api/ApiQueryRandom.php
index b3b840fd..dea0b0f5 100644
--- a/includes/api/ApiQueryRandom.php
+++ b/includes/api/ApiQueryRandom.php
@@ -1,7 +1,7 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Monday, January 28, 2008
*
@@ -36,7 +36,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
* @ingroup API
*/
- class ApiQueryRandom extends ApiQueryGeneratorBase {
+class ApiQueryRandom extends ApiQueryGeneratorBase {
public function __construct( $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'rn' );
@@ -50,6 +50,14 @@ if ( !defined( 'MEDIAWIKI' ) ) {
$this->run( $resultPageSet );
}
+ /**
+ * @param $randstr
+ * @param $limit
+ * @param $namespace
+ * @param $resultPageSet ApiPageSet
+ * @param $redirect
+ * @return void
+ */
protected function prepareQuery( $randstr, $limit, $namespace, &$resultPageSet, $redirect ) {
$this->resetQueryParams();
$this->addTables( 'page' );
@@ -65,7 +73,11 @@ if ( !defined( 'MEDIAWIKI' ) ) {
}
}
- protected function runQuery( &$resultPageSet ) {
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return int
+ */
+ protected function runQuery( $resultPageSet = null ) {
$res = $this->select( __METHOD__ );
$count = 0;
foreach ( $res as $row ) {
@@ -92,6 +104,10 @@ if ( !defined( 'MEDIAWIKI' ) ) {
return $count;
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
public function run( $resultPageSet = null ) {
$params = $this->extractRequestParams();
$result = $this->getResult();
diff --git a/includes/api/ApiQueryRecentChanges.php b/includes/api/ApiQueryRecentChanges.php
index fb0d42b8..b144a7cf 100644
--- a/includes/api/ApiQueryRecentChanges.php
+++ b/includes/api/ApiQueryRecentChanges.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 19, 2006
*
@@ -35,7 +35,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
*
* @ingroup API
*/
-class ApiQueryRecentChanges extends ApiQueryBase {
+class ApiQueryRecentChanges extends ApiQueryGeneratorBase {
public function __construct( $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'rc' );
@@ -43,7 +43,8 @@ class ApiQueryRecentChanges extends ApiQueryBase {
private $fld_comment = false, $fld_parsedcomment = false, $fld_user = false, $fld_userid = false,
$fld_flags = false, $fld_timestamp = false, $fld_title = false, $fld_ids = false,
- $fld_sizes = false, $fld_redirect = false, $fld_patrolled = false, $fld_loginfo = false, $fld_tags = false;
+ $fld_sizes = false, $fld_redirect = false, $fld_patrolled = false, $fld_loginfo = false,
+ $fld_tags = false, $token = array();
private $tokenFunctions;
@@ -71,6 +72,12 @@ class ApiQueryRecentChanges extends ApiQueryBase {
return $this->tokenFunctions;
}
+ /**
+ * @param $pageid
+ * @param $title
+ * @param $rc RecentChange
+ * @return bool|String
+ */
public static function getPatrolToken( $pageid, $title, $rc ) {
global $wgUser;
if ( !$wgUser->useRCPatrol() && ( !$wgUser->useNPPatrol() ||
@@ -84,7 +91,7 @@ class ApiQueryRecentChanges extends ApiQueryBase {
if ( is_null( $cachedPatrolToken ) ) {
$cachedPatrolToken = $wgUser->editToken( 'patrol' );
}
-
+
return $cachedPatrolToken;
}
@@ -108,10 +115,20 @@ class ApiQueryRecentChanges extends ApiQueryBase {
$this->fld_tags = isset( $prop['tags'] );
}
+ public function execute() {
+ $this->run();
+ }
+
+ public function executeGenerator( $resultPageSet ) {
+ $this->run( $resultPageSet );
+ }
+
/**
* Generates and outputs the result of this query based upon the provided parameters.
+ *
+ * @param $resultPageSet ApiPageSet
*/
- public function execute() {
+ public function run( $resultPageSet = null ) {
global $wgUser;
/* Get the parameters of the request. */
$params = $this->extractRequestParams();
@@ -123,7 +140,7 @@ class ApiQueryRecentChanges extends ApiQueryBase {
*/
$this->addTables( 'recentchanges' );
$index = array( 'recentchanges' => 'rc_timestamp' ); // May change
- $this->addWhereRange( 'rc_timestamp', $params['dir'], $params['start'], $params['end'] );
+ $this->addTimestampWhereRange( 'rc_timestamp', $params['dir'], $params['start'], $params['end'] );
$this->addWhereFld( 'rc_namespace', $params['namespace'] );
$this->addWhereFld( 'rc_deleted', 0 );
@@ -140,9 +157,8 @@ class ApiQueryRecentChanges extends ApiQueryBase {
|| ( isset( $show['anon'] ) && isset( $show['!anon'] ) )
|| ( isset( $show['redirect'] ) && isset( $show['!redirect'] ) )
|| ( isset( $show['patrolled'] ) && isset( $show['!patrolled'] ) )
- )
- {
- $this->dieUsageMsg( array( 'show' ) );
+ ) {
+ $this->dieUsageMsg( 'show' );
}
// Check permissions
@@ -195,6 +211,7 @@ class ApiQueryRecentChanges extends ApiQueryBase {
'rc_deleted'
) );
+ $showRedirects = false;
/* Determine what properties we need to display. */
if ( !is_null( $params['prop'] ) ) {
$prop = array_flip( $params['prop'] );
@@ -207,27 +224,15 @@ class ApiQueryRecentChanges extends ApiQueryBase {
}
/* Add fields to our query if they are specified as a needed parameter. */
- $this->addFieldsIf( 'rc_id', $this->fld_ids );
- $this->addFieldsIf( 'rc_this_oldid', $this->fld_ids );
- $this->addFieldsIf( 'rc_last_oldid', $this->fld_ids );
+ $this->addFieldsIf( array( 'rc_id', 'rc_this_oldid', 'rc_last_oldid' ), $this->fld_ids );
$this->addFieldsIf( 'rc_comment', $this->fld_comment || $this->fld_parsedcomment );
$this->addFieldsIf( 'rc_user', $this->fld_user );
$this->addFieldsIf( 'rc_user_text', $this->fld_user || $this->fld_userid );
- $this->addFieldsIf( 'rc_minor', $this->fld_flags );
- $this->addFieldsIf( 'rc_bot', $this->fld_flags );
- $this->addFieldsIf( 'rc_new', $this->fld_flags );
- $this->addFieldsIf( 'rc_old_len', $this->fld_sizes );
- $this->addFieldsIf( 'rc_new_len', $this->fld_sizes );
+ $this->addFieldsIf( array( 'rc_minor', 'rc_new', 'rc_bot' ) , $this->fld_flags );
+ $this->addFieldsIf( array( 'rc_old_len', 'rc_new_len' ), $this->fld_sizes );
$this->addFieldsIf( 'rc_patrolled', $this->fld_patrolled );
- $this->addFieldsIf( 'rc_logid', $this->fld_loginfo );
- $this->addFieldsIf( 'rc_log_type', $this->fld_loginfo );
- $this->addFieldsIf( 'rc_log_action', $this->fld_loginfo );
- $this->addFieldsIf( 'rc_params', $this->fld_loginfo );
- if ( $this->fld_redirect || isset( $show['redirect'] ) || isset( $show['!redirect'] ) ) {
- $this->addTables( 'page' );
- $this->addJoinConds( array( 'page' => array( 'LEFT JOIN', array( 'rc_namespace=page_namespace', 'rc_title=page_title' ) ) ) );
- $this->addFields( 'page_is_redirect' );
- }
+ $this->addFieldsIf( array( 'rc_logid', 'rc_log_type', 'rc_log_action', 'rc_params' ), $this->fld_loginfo );
+ $showRedirects = $this->fld_redirect || isset( $show['redirect'] ) || isset( $show['!redirect'] );
}
if ( $this->fld_tags ) {
@@ -236,6 +241,16 @@ class ApiQueryRecentChanges extends ApiQueryBase {
$this->addFields( 'ts_tags' );
}
+ if ( $params['toponly'] || $showRedirects ) {
+ $this->addTables( 'page' );
+ $this->addJoinConds( array( 'page' => array( 'LEFT JOIN', array( 'rc_namespace=page_namespace', 'rc_title=page_title' ) ) ) );
+ $this->addFields( 'page_is_redirect' );
+
+ if ( $params['toponly'] ) {
+ $this->addWhere( 'rc_this_oldid = page_latest' );
+ }
+ }
+
if ( !is_null( $params['tag'] ) ) {
$this->addTables( 'change_tag' );
$this->addJoinConds( array( 'change_tag' => array( 'INNER JOIN', array( 'rc_id=ct_rc_id' ) ) ) );
@@ -252,6 +267,10 @@ class ApiQueryRecentChanges extends ApiQueryBase {
/* Perform the actual query. */
$res = $this->select( __METHOD__ );
+ $titles = array();
+
+ $result = $this->getResult();
+
/* Iterate through the rows, adding data extracted from them to our query result. */
foreach ( $res as $row ) {
if ( ++ $count > $params['limit'] ) {
@@ -260,22 +279,30 @@ class ApiQueryRecentChanges extends ApiQueryBase {
break;
}
- /* Extract the data from a single row. */
- $vals = $this->extractRowInfo( $row );
+ if ( is_null( $resultPageSet ) ) {
+ /* Extract the data from a single row. */
+ $vals = $this->extractRowInfo( $row );
- /* Add that row's data to our final output. */
- if ( !$vals ) {
- continue;
- }
- $fit = $this->getResult()->addValue( array( 'query', $this->getModuleName() ), null, $vals );
- if ( !$fit ) {
- $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->rc_timestamp ) );
- break;
+ /* Add that row's data to our final output. */
+ if ( !$vals ) {
+ continue;
+ }
+ $fit = $result->addValue( array( 'query', $this->getModuleName() ), null, $vals );
+ if ( !$fit ) {
+ $this->setContinueEnumParameter( 'start', wfTimestamp( TS_ISO_8601, $row->rc_timestamp ) );
+ break;
+ }
+ } else {
+ $titles[] = Title::makeTitle( $row->rc_namespace, $row->rc_title );
}
}
- /* Format the result */
- $this->getResult()->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'rc' );
+ if ( is_null( $resultPageSet ) ) {
+ /* Format the result */
+ $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'rc' );
+ } else {
+ $resultPageSet->populateFromTitles( $titles );
+ }
}
/**
@@ -288,8 +315,7 @@ class ApiQueryRecentChanges extends ApiQueryBase {
public function extractRowInfo( $row ) {
/* If page was moved somewhere, get the title of the move target. */
$movedToTitle = false;
- if ( isset( $row->rc_moved_to_title ) && $row->rc_moved_to_title !== '' )
- {
+ if ( isset( $row->rc_moved_to_title ) && $row->rc_moved_to_title !== '' ) {
$movedToTitle = Title::makeTitle( $row->rc_moved_to_ns, $row->rc_moved_to_title );
}
@@ -405,8 +431,11 @@ class ApiQueryRecentChanges extends ApiQueryBase {
$vals['logaction'] = $row->rc_log_action;
ApiQueryLogEvents::addLogParams(
$this->getResult(),
- $vals, $row->rc_params,
- $row->rc_log_type, $row->rc_timestamp
+ $vals,
+ $row->rc_params,
+ $row->rc_log_action,
+ $row->rc_log_type,
+ $row->rc_timestamp
);
}
@@ -550,15 +579,17 @@ class ApiQueryRecentChanges extends ApiQueryBase {
'new',
'log'
)
- )
+ ),
+ 'toponly' => false,
);
}
public function getParamDescription() {
+ $p = $this->getModulePrefix();
return array(
'start' => 'The timestamp to start enumerating from',
'end' => 'The timestamp to end enumerating',
- 'dir' => 'In which direction to enumerate',
+ 'dir' => $this->getDirectionDescription( $p ),
'namespace' => 'Filter log entries to only this namespace(s)',
'user' => 'Only list changes by this user',
'excludeuser' => 'Don\'t list changes by this user',
@@ -571,21 +602,22 @@ class ApiQueryRecentChanges extends ApiQueryBase {
' flags - Adds flags for the edit',
' timestamp - Adds timestamp of the edit',
' title - Adds the page title of the edit',
- ' ids - Adds the page id, recent changes id and the new and old revision id',
+ ' ids - Adds the page ID, recent changes ID and the new and old revision ID',
' sizes - Adds the new and old page length in bytes',
' redirect - Tags edit if page is a redirect',
- ' patrolled - Tags edits have have been patrolled',
+ ' patrolled - Tags edits that have been patrolled',
' loginfo - Adds log information (logid, logtype, etc) to log entries',
' tags - Lists tags for the entry',
),
'token' => 'Which tokens to obtain for each change',
'show' => array(
'Show only items that meet this criteria.',
- "For example, to see only minor edits done by logged-in users, set {$this->getModulePrefix()}show=minor|!anon"
+ "For example, to see only minor edits done by logged-in users, set {$p}show=minor|!anon"
),
'type' => 'Which types of changes to show',
'limit' => 'How many total changes to return',
'tag' => 'Only list changes tagged with this tag',
+ 'toponly' => 'Only list changes which are the latest revision',
);
}
@@ -607,7 +639,11 @@ class ApiQueryRecentChanges extends ApiQueryBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Recentchanges';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryRecentChanges.php 78437 2010-12-15 14:14:16Z catrope $';
+ return __CLASS__ . ': $Id: ApiQueryRecentChanges.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryRevisions.php b/includes/api/ApiQueryRevisions.php
index 64a0a4ea..e6b21a92 100644
--- a/includes/api/ApiQueryRevisions.php
+++ b/includes/api/ApiQueryRevisions.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 7, 2006
*
@@ -39,7 +39,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
class ApiQueryRevisions extends ApiQueryBase {
private $diffto, $difftotext, $expandTemplates, $generateXML, $section,
- $token;
+ $token, $parseContent;
public function __construct( $query, $moduleName ) {
parent::__construct( $query, $moduleName, 'rv' );
@@ -73,6 +73,12 @@ class ApiQueryRevisions extends ApiQueryBase {
return $this->tokenFunctions;
}
+ /**
+ * @param $pageid
+ * @param $title Title
+ * @param $rev Revision
+ * @return bool|String
+ */
public static function getRollbackToken( $pageid, $title, $rev ) {
global $wgUser;
if ( !$wgUser->isAllowed( 'rollback' ) ) {
@@ -119,8 +125,7 @@ class ApiQueryRevisions extends ApiQueryBase {
$params['diffto'] = 0;
}
if ( ( !ctype_digit( $params['diffto'] ) || $params['diffto'] < 0 )
- && $params['diffto'] != 'prev' && $params['diffto'] != 'next' )
- {
+ && $params['diffto'] != 'prev' && $params['diffto'] != 'next' ) {
$this->dieUsage( 'rvdiffto must be set to a non-negative number, "prev", "next" or "cur"', 'diffto' );
}
// Check whether the revision exists and is readable,
@@ -169,7 +174,6 @@ class ApiQueryRevisions extends ApiQueryBase {
$this->getResult()->setParsedLimit( $this->getModuleName(), $limit );
}
-
if ( !is_null( $this->token ) || $pageCount > 0 ) {
$this->addFields( Revision::selectPageFields() );
}
@@ -224,10 +228,9 @@ class ApiQueryRevisions extends ApiQueryBase {
}
}
- //Bug 24166 - API error when using rvprop=tags
+ // Bug 24166 - API error when using rvprop=tags
$this->addTables( 'revision' );
-
if ( $enumRevMode ) {
// This is mostly to prevent parameter errors (and optimize SQL?)
if ( !is_null( $params['startid'] ) && !is_null( $params['start'] ) ) {
@@ -249,14 +252,14 @@ class ApiQueryRevisions extends ApiQueryBase {
// one row with the same timestamp for the same page.
// The order needs to be the same as start parameter to avoid SQL filesort.
if ( is_null( $params['startid'] ) && is_null( $params['endid'] ) ) {
- $this->addWhereRange( 'rev_timestamp', $params['dir'],
+ $this->addTimestampWhereRange( 'rev_timestamp', $params['dir'],
$params['start'], $params['end'] );
} else {
$this->addWhereRange( 'rev_id', $params['dir'],
$params['startid'], $params['endid'] );
// One of start and end can be set
// If neither is set, this does nothing
- $this->addWhereRange( 'rev_timestamp', $params['dir'],
+ $this->addTimestampWhereRange( 'rev_timestamp', $params['dir'],
$params['start'], $params['end'], false );
}
@@ -479,27 +482,7 @@ class ApiQueryRevisions extends ApiQueryBase {
$text = $wgParser->preprocess( $text, $title, new ParserOptions() );
}
if ( $this->parseContent ) {
- global $wgEnableParserCache;
-
- $popts = new ParserOptions();
- $popts->setTidy( true );
-
- $articleObj = new Article( $title );
-
- $p_result = false;
- $pcache = ParserCache::singleton();
- if ( $wgEnableParserCache ) {
- $p_result = $pcache->get( $articleObj, $popts );
- }
- if ( !$p_result ) {
- $p_result = $wgParser->parse( $text, $title, $popts );
-
- if ( $wgEnableParserCache ) {
- $pcache->save( $p_result, $articleObj, $popts );
- }
- }
-
- $text = $p_result->getText();
+ $text = $wgParser->parse( $text, $title, new ParserOptions() )->getText();
}
ApiResult::setContent( $vals, $text );
} elseif ( $this->fld_content ) {
@@ -627,9 +610,9 @@ class ApiQueryRevisions extends ApiQueryBase {
'endid' => 'Stop revision enumeration on this revid (enum)',
'start' => 'From which revision timestamp to start enumeration (enum)',
'end' => 'Enumerate up to this timestamp (enum)',
- 'dir' => 'Direction of enumeration - towards "newer" or "older" revisions (enum)',
- 'user' => 'Only include revisions made by user',
- 'excludeuser' => 'Exclude revisions made by user',
+ 'dir' => $this->getDirectionDescription( $p, ' (enum)' ),
+ 'user' => 'Only include revisions made by user (enum)',
+ 'excludeuser' => 'Exclude revisions made by user (enum)',
'expandtemplates' => 'Expand templates in revision content',
'generatexml' => 'Generate XML parse tree for revision content',
'parse' => 'Parse revision content. For performance reasons if this option is used, rvlimit is enforced to 1.',
@@ -647,7 +630,7 @@ class ApiQueryRevisions extends ApiQueryBase {
public function getDescription() {
return array(
'Get revision information',
- 'This module may be used in several ways:',
+ 'May be used in several ways:',
' 1) Get data about a set of pages (last revision), by setting titles or pageids parameter',
' 2) Get revisions for one given page, by using titles/pageids with start/end/limit params',
' 3) Get data about a set of revisions by setting their IDs with revids parameter',
@@ -685,7 +668,11 @@ class ApiQueryRevisions extends ApiQueryBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Properties#revisions_.2F_rv';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryRevisions.php 75521 2010-10-27 11:50:20Z catrope $';
+ return __CLASS__ . ': $Id: ApiQueryRevisions.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQuerySearch.php b/includes/api/ApiQuerySearch.php
index 3cf693af..42bed93a 100644
--- a/includes/api/ApiQuerySearch.php
+++ b/includes/api/ApiQuerySearch.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on July 30, 2007
*
@@ -48,6 +48,10 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function run( $resultPageSet = null ) {
global $wgContLang;
$params = $this->extractRequestParams();
@@ -93,16 +97,17 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
$this->dieUsage( "{$what} search is disabled", "search-{$what}-disabled" );
}
+ $apiResult = $this->getResult();
// Add search meta data to result
if ( isset( $searchInfo['totalhits'] ) ) {
$totalhits = $matches->getTotalHits();
if ( $totalhits !== null ) {
- $this->getResult()->addValue( array( 'query', 'searchinfo' ),
+ $apiResult->addValue( array( 'query', 'searchinfo' ),
'totalhits', $totalhits );
}
}
if ( isset( $searchInfo['suggestion'] ) && $matches->hasSuggestion() ) {
- $this->getResult()->addValue( array( 'query', 'searchinfo' ),
+ $apiResult->addValue( array( 'query', 'searchinfo' ),
'suggestion', $matches->getSuggestionQuery() );
}
@@ -110,7 +115,9 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
$terms = $wgContLang->convertForSearchResult( $matches->termMatches() );
$titles = array();
$count = 0;
- while ( $result = $matches->next() ) {
+ $result = $matches->next();
+
+ while ( $result ) {
if ( ++ $count > $limit ) {
// We've reached the one extra which shows that there are additional items to be had. Stop here...
$this->setContinueEnumParameter( 'offset', $params['offset'] + $params['limit'] );
@@ -119,6 +126,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
// Silently skip broken and missing titles
if ( $result->isBrokenTitle() || $result->isMissingRevision() ) {
+ $result = $matches->next();
continue;
}
@@ -155,7 +163,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
}
if ( !is_null( $result->getSectionTitle() ) ) {
if ( isset( $prop['sectiontitle'] ) ) {
- $vals['sectiontitle'] = $result->getSectionTitle();
+ $vals['sectiontitle'] = $result->getSectionTitle()->getFragment();
}
if ( isset( $prop['sectionsnippet'] ) ) {
$vals['sectionsnippet'] = $result->getSectionSnippet();
@@ -166,7 +174,7 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
}
// Add item to results and see whether it fits
- $fit = $this->getResult()->addValue( array( 'query', $this->getModuleName() ),
+ $fit = $apiResult->addValue( array( 'query', $this->getModuleName() ),
null, $vals );
if ( !$fit ) {
$this->setContinueEnumParameter( 'offset', $params['offset'] + $count - 1 );
@@ -175,10 +183,12 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
} else {
$titles[] = $title;
}
+
+ $result = $matches->next();
}
if ( is_null( $resultPageSet ) ) {
- $this->getResult()->setIndexedTagName_internal( array(
+ $apiResult->setIndexedTagName_internal( array(
'query', $this->getModuleName()
), 'p' );
} else {
@@ -260,10 +270,10 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
' score - Adds the score (if any) from the search engine',
' snippet - Adds a parsed snippet of the page',
' titlesnippet - Adds a parsed snippet of the page title',
- ' redirectsnippet - Adds a parsed snippet of the redirect',
- ' redirecttitle - Adds a parsed snippet of the redirect title',
- ' sectionsnippet - Adds a parsed snippet of the matching section',
- ' sectiontitle - Adds a parsed snippet of the matching section title',
+ ' redirectsnippet - Adds a parsed snippet of the redirect title',
+ ' redirecttitle - Adds the title of the matching redirect',
+ ' sectionsnippet - Adds a parsed snippet of the matching section title',
+ ' sectiontitle - Adds the title of the matching section',
' hasrelated - Indicates whether a related search is available',
),
'redirects' => 'Include redirect pages in the search',
@@ -291,7 +301,11 @@ class ApiQuerySearch extends ApiQueryGeneratorBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Search';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQuerySearch.php 76300 2010-11-08 12:23:24Z reedy $';
+ return __CLASS__ . ': $Id: ApiQuerySearch.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQuerySiteinfo.php b/includes/api/ApiQuerySiteinfo.php
index 379a4228..b6cedc6c 100644
--- a/includes/api/ApiQuerySiteinfo.php
+++ b/includes/api/ApiQuerySiteinfo.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 25, 2006
*
@@ -85,6 +85,18 @@ class ApiQuerySiteinfo extends ApiQueryBase {
case 'languages':
$fit = $this->appendLanguages( $p );
break;
+ case 'skins':
+ $fit = $this->appendSkins( $p );
+ break;
+ case 'extensiontags':
+ $fit = $this->appendExtensionTags( $p );
+ break;
+ case 'functionhooks':
+ $fit = $this->appendFunctionHooks( $p );
+ break;
+ case 'showhooks':
+ $fit = $this->appendSubscribedHooks( $p );
+ break;
default:
ApiBase::dieDebug( __METHOD__, "Unknown prop=$p" );
}
@@ -105,7 +117,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
$data = array();
$mainPage = Title::newMainPage();
$data['mainpage'] = $mainPage->getPrefixedText();
- $data['base'] = $mainPage->getFullUrl();
+ $data['base'] = wfExpandUrl( $mainPage->getFullUrl(), PROTO_CURRENT );
$data['sitename'] = $GLOBALS['wgSitename'];
$data['generator'] = "MediaWiki {$GLOBALS['wgVersion']}";
$data['phpversion'] = phpversion();
@@ -157,6 +169,12 @@ class ApiQuerySiteinfo extends ApiQueryBase {
$data['wikiid'] = wfWikiID();
$data['time'] = wfTimestamp( TS_ISO_8601, time() );
+ if ( $GLOBALS['wgMiserMode'] ) {
+ $data['misermode'] = '';
+ }
+
+ wfRunHooks( 'APIQuerySiteInfoGeneralInfo', array( $this, &$data ) );
+
return $this->getResult()->addValue( 'query', $property, $data );
}
@@ -212,8 +230,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
protected function appendSpecialPageAliases( $property ) {
global $wgContLang;
$data = array();
- foreach ( $wgContLang->getSpecialPageAliases() as $specialpage => $aliases )
- {
+ foreach ( $wgContLang->getSpecialPageAliases() as $specialpage => $aliases ) {
$arr = array( 'realname' => $specialpage, 'aliases' => $aliases );
$this->getResult()->setIndexedTagName( $arr['aliases'], 'alias' );
$data[] = $arr;
@@ -241,7 +258,7 @@ class ApiQuerySiteinfo extends ApiQueryBase {
protected function appendInterwikiMap( $property, $filter ) {
$this->resetQueryParams();
$this->addTables( 'interwiki' );
- $this->addFields( array( 'iw_prefix', 'iw_local', 'iw_url' ) );
+ $this->addFields( array( 'iw_prefix', 'iw_local', 'iw_url', 'iw_wikiid', 'iw_api' ) );
if ( $filter === 'local' ) {
$this->addWhere( 'iw_local = 1' );
@@ -267,7 +284,13 @@ class ApiQuerySiteinfo extends ApiQueryBase {
if ( isset( $langNames[$row->iw_prefix] ) ) {
$val['language'] = $langNames[$row->iw_prefix];
}
- $val['url'] = $row->iw_url;
+ $val['url'] = wfExpandUrl( $row->iw_url, PROTO_CURRENT );
+ if( isset( $row->iw_wikiid ) ) {
+ $val['wikiid'] = $row->iw_wikiid;
+ }
+ if( isset( $row->iw_api ) ) {
+ $val['api'] = $row->iw_api;
+ }
$data[] = $val;
}
@@ -279,12 +302,12 @@ class ApiQuerySiteinfo extends ApiQueryBase {
protected function appendDbReplLagInfo( $property, $includeAll ) {
global $wgShowHostnames;
$data = array();
+ $lb = wfGetLB();
if ( $includeAll ) {
if ( !$wgShowHostnames ) {
$this->dieUsage( 'Cannot view all servers info unless $wgShowHostnames is true', 'includeAllDenied' );
}
- $lb = wfGetLB();
$lags = $lb->getLagTimes();
foreach ( $lags as $i => $lag ) {
$data[] = array(
@@ -293,9 +316,11 @@ class ApiQuerySiteinfo extends ApiQueryBase {
);
}
} else {
- list( $host, $lag ) = wfGetLB()->getMaxLag();
+ list( $host, $lag, $index ) = $lb->getMaxLag();
$data[] = array(
- 'host' => $wgShowHostnames ? $host : '',
+ 'host' => $wgShowHostnames
+ ? $lb->getServerName( $index )
+ : '',
'lag' => intval( $lag )
);
}
@@ -324,46 +349,47 @@ class ApiQuerySiteinfo extends ApiQueryBase {
protected function appendUserGroups( $property, $numberInGroup ) {
global $wgGroupPermissions, $wgAddGroups, $wgRemoveGroups, $wgGroupsAddToSelf, $wgGroupsRemoveFromSelf;
-
+
$data = array();
+ $result = $this->getResult();
foreach ( $wgGroupPermissions as $group => $permissions ) {
$arr = array(
'name' => $group,
'rights' => array_keys( $permissions, true ),
);
-
+
if ( $numberInGroup ) {
global $wgAutopromote;
-
+
if ( $group == 'user' ) {
$arr['number'] = SiteStats::users();
-
+
// '*' and autopromote groups have no size
} elseif ( $group !== '*' && !isset( $wgAutopromote[$group] ) ) {
$arr['number'] = SiteStats::numberInGroup( $group );
}
}
-
+
$groupArr = array(
'add' => $wgAddGroups,
'remove' => $wgRemoveGroups,
'add-self' => $wgGroupsAddToSelf,
'remove-self' => $wgGroupsRemoveFromSelf
);
-
- foreach( $groupArr as $type => $rights ) {
- if( isset( $rights[$group] ) ) {
+
+ foreach ( $groupArr as $type => $rights ) {
+ if ( isset( $rights[$group] ) ) {
$arr[$type] = $rights[$group];
- $this->getResult()->setIndexedTagName( $arr[$type], 'group' );
+ $result->setIndexedTagName( $arr[$type], 'group' );
}
}
-
- $this->getResult()->setIndexedTagName( $arr['rights'], 'permission' );
+
+ $result->setIndexedTagName( $arr['rights'], 'permission' );
$data[] = $arr;
}
-
- $this->getResult()->setIndexedTagName( $data, 'group' );
- return $this->getResult()->addValue( 'query', $property, $data );
+
+ $result->setIndexedTagName( $data, 'group' );
+ return $result->addValue( 'query', $property, $data );
}
protected function appendFileExtensions( $property ) {
@@ -423,11 +449,10 @@ class ApiQuerySiteinfo extends ApiQueryBase {
return $this->getResult()->addValue( 'query', $property, $data );
}
-
protected function appendRightsInfo( $property ) {
global $wgRightsPage, $wgRightsUrl, $wgRightsText;
$title = Title::newFromText( $wgRightsPage );
- $url = $title ? $title->getFullURL() : $wgRightsUrl;
+ $url = $title ? wfExpandUrl( $title->getFullURL(), PROTO_CURRENT ) : $wgRightsUrl;
$text = $wgRightsText;
if ( !$text && $title ) {
$text = $title->getPrefixedText();
@@ -452,6 +477,57 @@ class ApiQuerySiteinfo extends ApiQueryBase {
return $this->getResult()->addValue( 'query', $property, $data );
}
+ public function appendSkins( $property ) {
+ $data = array();
+ foreach ( Skin::getSkinNames() as $name => $displayName ) {
+ $skin = array( 'code' => $name );
+ ApiResult::setContent( $skin, $displayName );
+ $data[] = $skin;
+ }
+ $this->getResult()->setIndexedTagName( $data, 'skin' );
+ return $this->getResult()->addValue( 'query', $property, $data );
+ }
+
+ public function appendExtensionTags( $property ) {
+ global $wgParser;
+ $wgParser->firstCallInit();
+ $tags = array_map( array( $this, 'formatParserTags'), $wgParser->getTags() );
+ $this->getResult()->setIndexedTagName( $tags, 't' );
+ return $this->getResult()->addValue( 'query', $property, $tags );
+ }
+
+ public function appendFunctionHooks( $property ) {
+ global $wgParser;
+ $wgParser->firstCallInit();
+ $hooks = $wgParser->getFunctionHooks();
+ $this->getResult()->setIndexedTagName( $hooks, 'h' );
+ return $this->getResult()->addValue( 'query', $property, $hooks );
+ }
+
+ private function formatParserTags( $item ) {
+ return "<{$item}>";
+ }
+
+ public function appendSubscribedHooks( $property ) {
+ global $wgHooks;
+ $myWgHooks = $wgHooks;
+ ksort( $myWgHooks );
+
+ $data = array();
+ foreach ( $myWgHooks as $hook => $hooks ) {
+ $arr = array(
+ 'name' => $hook,
+ 'subscribers' => array_map( array( 'SpecialVersion', 'arrayToString' ), $hooks ),
+ );
+
+ $this->getResult()->setIndexedTagName( $arr['subscribers'], 's' );
+ $data[] = $arr;
+ }
+
+ $this->getResult()->setIndexedTagName( $data, 'hook' );
+ return $this->getResult()->addValue( 'query', $property, $data );
+ }
+
public function getCacheMode( $params ) {
return 'public';
}
@@ -475,6 +551,10 @@ class ApiQuerySiteinfo extends ApiQueryBase {
'fileextensions',
'rightsinfo',
'languages',
+ 'skins',
+ 'extensiontags',
+ 'functionhooks',
+ 'showhooks',
)
),
'filteriw' => array(
@@ -505,6 +585,10 @@ class ApiQuerySiteinfo extends ApiQueryBase {
' fileextensions - Returns list of file extensions allowed to be uploaded',
' rightsinfo - Returns wiki rights (license) information if available',
' languages - Returns a list of languages MediaWiki supports',
+ ' skins - Returns a list of all enabled skins',
+ ' extensiontags - Returns a list of parser extension tags',
+ ' functionhooks - Returns a list of parser function hooks',
+ ' showhooks - Returns a list of all subscribed hooks (contents of $wgHooks)'
),
'filteriw' => 'Return only local or only nonlocal entries of the interwiki map',
'showalldb' => 'List all database servers, not just the one lagging the most',
@@ -530,7 +614,11 @@ class ApiQuerySiteinfo extends ApiQueryBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Meta#siteinfo_.2F_si';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQuerySiteinfo.php 77192 2010-11-23 22:05:27Z btongminh $';
+ return __CLASS__ . ': $Id: ApiQuerySiteinfo.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryStashImageInfo.php b/includes/api/ApiQueryStashImageInfo.php
index 769b3e9d..9a6e8530 100644
--- a/includes/api/ApiQueryStashImageInfo.php
+++ b/includes/api/ApiQueryStashImageInfo.php
@@ -38,58 +38,53 @@ class ApiQueryStashImageInfo extends ApiQueryImageInfo {
$prop = array_flip( $params['prop'] );
$scale = $this->getScale( $params );
-
+
$result = $this->getResult();
-
+
+ if ( !$params['filekey'] && !$params['sessionkey'] ) {
+ $this->dieUsage( "One of filekey or sessionkey must be supplied", 'nofilekey');
+ }
+
try {
$stash = RepoGroup::singleton()->getLocalRepo()->getUploadStash();
-
- foreach ( $params['sessionkey'] as $sessionkey ) {
- $file = $stash->getFile( $sessionkey );
- $imageInfo = self::getInfo( $file, $prop, $result, $scale );
+
+ foreach ( $params['filekey'] as $filekey ) {
+ $file = $stash->getFile( $filekey );
+ $finalThumbParam = $this->mergeThumbParams( $file, $scale, $params['urlparam'] );
+ $imageInfo = ApiQueryImageInfo::getInfo( $file, $prop, $result, $finalThumbParam );
$result->addValue( array( 'query', $this->getModuleName() ), null, $imageInfo );
$result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), $modulePrefix );
}
-
+ //TODO: update exception handling here to understand current getFile exceptions
} catch ( UploadStashNotAvailableException $e ) {
$this->dieUsage( "Session not available: " . $e->getMessage(), "nosession" );
} catch ( UploadStashFileNotFoundException $e ) {
$this->dieUsage( "File not found: " . $e->getMessage(), "invalidsessiondata" );
} catch ( UploadStashBadPathException $e ) {
$this->dieUsage( "Bad path: " . $e->getMessage(), "invalidsessiondata" );
- }
-
- }
-
- /**
- * Returns all valid parameters to siiprop
- */
- public static function getPropertyNames() {
- return array(
- 'timestamp',
- 'url',
- 'size',
- 'dimensions', // For backwards compatibility with Allimages
- 'sha1',
- 'mime',
- 'thumbmime',
- 'metadata',
- 'bitdepth',
- );
+ }
}
+ private $propertyFilter = array(
+ 'user', 'userid', 'comment', 'parsedcomment',
+ 'mediatype', 'archivename',
+ );
public function getAllowedParams() {
return array(
- 'sessionkey' => array(
+ 'filekey' => array(
ApiBase::PARAM_ISMULTI => true,
- ApiBase::PARAM_REQUIRED => true,
+ ApiBase::PARAM_DFLT => null
+ ),
+ 'sessionkey' => array(
+ ApiBase::PARAM_ISMULTI => true,
+ ApiBase::PARAM_DEPRECATED => true,
ApiBase::PARAM_DFLT => null
),
'prop' => array(
ApiBase::PARAM_ISMULTI => true,
ApiBase::PARAM_DFLT => 'timestamp|url',
- ApiBase::PARAM_TYPE => self::getPropertyNames()
+ ApiBase::PARAM_TYPE => self::getPropertyNames( $this->propertyFilter )
),
'urlwidth' => array(
ApiBase::PARAM_TYPE => 'integer',
@@ -98,32 +93,28 @@ class ApiQueryStashImageInfo extends ApiQueryImageInfo {
'urlheight' => array(
ApiBase::PARAM_TYPE => 'integer',
ApiBase::PARAM_DFLT => -1
- )
+ ),
+ 'urlparam' => array(
+ ApiBase::PARAM_TYPE => 'string',
+ ApiBase::PARAM_DFLT => '',
+ ),
);
}
/**
* Return the API documentation for the parameters.
- * @return {Array} parameter documentation.
+ * @return Array parameter documentation.
*/
public function getParamDescription() {
$p = $this->getModulePrefix();
return array(
- 'prop' => array(
- 'What image information to get:',
- ' timestamp - Adds timestamp for the uploaded version',
- ' url - Gives URL to the image and the description page',
- ' size - Adds the size of the image in bytes and the height and width',
- ' dimensions - Alias for size',
- ' sha1 - Adds sha1 hash for the image',
- ' mime - Adds MIME of the image',
- ' thumbmime - Adss MIME of the image thumbnail (requires url)',
- ' metadata - Lists EXIF metadata for the version of the image',
- ' bitdepth - Adds the bit depth of the version',
- ),
- 'sessionkey' => 'Session key that identifies a previous upload that was stashed temporarily.',
+ 'prop' => self::getPropertyDescriptions( $this->propertyFilter ),
+ 'filekey' => 'Key that identifies a previous upload that was stashed temporarily.',
+ 'sessionkey' => 'Alias for filekey, for backward compatibility.',
'urlwidth' => "If {$p}prop=url is set, a URL to an image scaled to this width will be returned.",
- 'urlheight' => "Similar to {$p}urlwidth. Cannot be used without {$p}urlwidth"
+ 'urlheight' => "Similar to {$p}urlwidth. Cannot be used without {$p}urlwidth",
+ 'urlparam' => array( "A handler specific parameter string. For example, pdf's ",
+ "might use 'page15-100px'. {$p}urlwidth must be used and be consistent with {$p}urlparam" ),
);
}
@@ -131,21 +122,15 @@ class ApiQueryStashImageInfo extends ApiQueryImageInfo {
return 'Returns image information for stashed images';
}
- public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'code' => 'siiurlwidth', 'info' => 'siiurlheight cannot be used without iiurlwidth' ),
- ) );
- }
-
protected function getExamples() {
return array(
- 'api.php?action=query&prop=stashimageinfo&siisessionkey=124sd34rsdf567',
- 'api.php?action=query&prop=stashimageinfo&siisessionkey=b34edoe3|bceffd4&siiurlwidth=120&siiprop=url',
+ 'api.php?action=query&prop=stashimageinfo&siifilekey=124sd34rsdf567',
+ 'api.php?action=query&prop=stashimageinfo&siifilekey=b34edoe3|bceffd4&siiurlwidth=120&siiprop=url',
);
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryStashImageInfo.php 81000 2011-01-25 22:49:34Z catrope $';
+ return __CLASS__ . ': $Id: ApiQueryStashImageInfo.php 92459 2011-07-18 19:31:38Z raindrift $';
}
}
diff --git a/includes/api/ApiQueryTags.php b/includes/api/ApiQueryTags.php
index e88ec9b5..14ca14b7 100644
--- a/includes/api/ApiQueryTags.php
+++ b/includes/api/ApiQueryTags.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Jul 9, 2009
*
@@ -36,7 +36,12 @@ if ( !defined( 'MEDIAWIKI' ) ) {
*/
class ApiQueryTags extends ApiQueryBase {
- private $limit, $result;
+ /**
+ * @var ApiResult
+ */
+ private $result;
+
+ private $limit;
private $fld_displayname = false, $fld_description = false,
$fld_hitcount = false;
@@ -59,9 +64,7 @@ class ApiQueryTags extends ApiQueryBase {
$this->addTables( 'change_tag' );
$this->addFields( 'ct_tag' );
- if ( $this->fld_hitcount ) {
- $this->addFields( 'count(*) AS hitcount' );
- }
+ $this->addFieldsIf( 'count(*) AS hitcount', $this->fld_hitcount );
$this->addOption( 'LIMIT', $this->limit + 1 );
$this->addOption( 'GROUP BY', 'ct_tag' );
@@ -110,9 +113,8 @@ class ApiQueryTags extends ApiQueryBase {
}
if ( $this->fld_description ) {
- $msg = wfMsg( "tag-$tagName-description" );
- $msg = wfEmptyMsg( "tag-$tagName-description", $msg ) ? '' : $msg;
- $tag['description'] = $msg;
+ $msg = wfMessage( "tag-$tagName-description" );
+ $tag['description'] = $msg->exists() ? $msg->text() : '';
}
if ( $this->fld_hitcount ) {
@@ -183,6 +185,6 @@ class ApiQueryTags extends ApiQueryBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryTags.php 73858 2010-09-28 01:21:15Z reedy $';
+ return __CLASS__ . ': $Id: ApiQueryTags.php 90542 2011-06-21 20:05:00Z ialex $';
}
}
diff --git a/includes/api/ApiQueryUserContributions.php b/includes/api/ApiQueryUserContributions.php
index 5d63fa60..e958c729 100644
--- a/includes/api/ApiQueryUserContributions.php
+++ b/includes/api/ApiQueryUserContributions.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 16, 2006
*
@@ -81,6 +81,7 @@ class ApiQueryContributions extends ApiQueryBase {
$this->prefixMode = false;
$this->multiUserMode = ( count( $this->params['user'] ) > 1 );
}
+
$this->prepareQuery();
// Do the actual query.
@@ -120,6 +121,8 @@ class ApiQueryContributions extends ApiQueryBase {
/**
* Validate the 'user' parameter and set the value to compare
* against `revision`.`rev_user_text`
+ *
+ * @param $user string
*/
private function prepareUsername( $user ) {
if ( !is_null( $user ) && $user !== '' ) {
@@ -179,7 +182,7 @@ class ApiQueryContributions extends ApiQueryBase {
if ( $this->multiUserMode ) {
$this->addWhereRange( 'rev_user_text', $this->params['dir'], null, null );
}
- $this->addWhereRange( 'rev_timestamp',
+ $this->addTimestampWhereRange( 'rev_timestamp',
$this->params['dir'], $this->params['start'], $this->params['end'] );
$this->addWhereFld( 'page_namespace', $this->params['namespace'] );
@@ -188,7 +191,7 @@ class ApiQueryContributions extends ApiQueryBase {
$show = array_flip( $show );
if ( ( isset( $show['minor'] ) && isset( $show['!minor'] ) )
|| ( isset( $show['patrolled'] ) && isset( $show['!patrolled'] ) ) ) {
- $this->dieUsageMsg( array( 'show' ) );
+ $this->dieUsageMsg( 'show' );
}
$this->addWhereIf( 'rev_minor_edit = 0', isset( $show['!minor'] ) );
@@ -246,8 +249,7 @@ class ApiQueryContributions extends ApiQueryBase {
// $this->addFieldsIf( 'rev_text_id', $this->fld_ids ); // Should this field be exposed?
$this->addFieldsIf( 'rev_comment', $this->fld_comment || $this->fld_parsedcomment );
$this->addFieldsIf( 'rev_len', $this->fld_size );
- $this->addFieldsIf( 'rev_minor_edit', $this->fld_flags );
- $this->addFieldsIf( 'rev_parent_id', $this->fld_flags );
+ $this->addFieldsIf( array( 'rev_minor_edit', 'rev_parent_id' ), $this->fld_flags );
$this->addFieldsIf( 'rc_patrolled', $this->fld_patrolled );
if ( $this->fld_tags ) {
@@ -264,6 +266,10 @@ class ApiQueryContributions extends ApiQueryBase {
$index['change_tag'] = $wgOldChangeTagsIndex ? 'ct_tag' : 'change_tag_tag_id';
}
+ if ( $this->params['toponly'] ) {
+ $this->addWhere( 'rev_id = page_latest' );
+ }
+
$this->addOption( 'USE INDEX', $index );
}
@@ -409,6 +415,7 @@ class ApiQueryContributions extends ApiQueryBase {
)
),
'tag' => null,
+ 'toponly' => false,
);
}
@@ -422,12 +429,12 @@ class ApiQueryContributions extends ApiQueryBase {
'continue' => 'When more results are available, use this to continue',
'user' => 'The users to retrieve contributions for',
'userprefix' => "Retrieve contibutions for all users whose names begin with this value. Overrides {$p}user",
- 'dir' => 'The direction to search (older or newer)',
+ 'dir' => $this->getDirectionDescription( $p ),
'namespace' => 'Only list contributions in these namespaces',
'prop' => array(
'Include additional pieces of information',
- ' ids - Adds the page id and revision id',
- ' title - Adds the title and namespace id of the page',
+ ' ids - Adds the page ID and revision ID',
+ ' title - Adds the title and namespace ID of the page',
' timestamp - Adds the timestamp of the edit',
' comment - Adds the comment of the edit',
' parsedcomment - Adds the parsed comment of the edit',
@@ -439,6 +446,7 @@ class ApiQueryContributions extends ApiQueryBase {
'show' => array( "Show only items that meet this criteria, e.g. non minor edits only: {$p}show=!minor",
"NOTE: if {$p}show=patrolled or {$p}show=!patrolled is set, revisions older than $wgRCMaxAge won\'t be shown", ),
'tag' => 'Only list revisions tagged with this tag',
+ 'toponly' => 'Only list changes which are the latest revision',
);
}
@@ -462,7 +470,11 @@ class ApiQueryContributions extends ApiQueryBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Usercontribs';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryUserContributions.php 75096 2010-10-20 18:50:33Z reedy $';
+ return __CLASS__ . ': $Id: ApiQueryUserContributions.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryUserInfo.php b/includes/api/ApiQueryUserInfo.php
index ec7b74b3..8a8ce118 100644
--- a/includes/api/ApiQueryUserInfo.php
+++ b/includes/api/ApiQueryUserInfo.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on July 30, 2007
*
@@ -55,7 +55,7 @@ class ApiQueryUserInfo extends ApiQueryBase {
}
protected function getCurrentUserInfo() {
- global $wgUser, $wgRequest;
+ global $wgUser, $wgRequest, $wgHiddenPrefs;
$result = $this->getResult();
$vals = array();
$vals['id'] = intval( $wgUser->getId() );
@@ -83,6 +83,11 @@ class ApiQueryUserInfo extends ApiQueryBase {
$result->setIndexedTagName( $vals['groups'], 'g' ); // even if empty
}
+ if ( isset( $this->prop['implicitgroups'] ) ) {
+ $vals['implicitgroups'] = ApiQueryUsers::getAutoGroups( $wgUser );
+ $result->setIndexedTagName( $vals['implicitgroups'], 'g' ); // even if empty
+ }
+
if ( isset( $this->prop['rights'] ) ) {
// User::getRights() may return duplicate values, strip them
$vals['rights'] = array_values( array_unique( $wgUser->getRights() ) );
@@ -101,12 +106,10 @@ class ApiQueryUserInfo extends ApiQueryBase {
$vals['options'] = $wgUser->getOptions();
}
- if (
- isset( $this->prop['preferencestoken'] ) &&
+ if ( isset( $this->prop['preferencestoken'] ) &&
is_null( $this->getMain()->getRequest()->getVal( 'callback' ) )
- )
- {
- $vals['preferencestoken'] = $wgUser->editToken();
+ ) {
+ $vals['preferencestoken'] = $wgUser->editToken( '', $this->getMain()->getRequest() );
}
if ( isset( $this->prop['editcount'] ) ) {
@@ -117,6 +120,10 @@ class ApiQueryUserInfo extends ApiQueryBase {
$vals['ratelimits'] = $this->getRateLimits();
}
+ if ( isset( $this->prop['realname'] ) && !in_array( 'realname', $wgHiddenPrefs ) ) {
+ $vals['realname'] = $wgUser->getRealName();
+ }
+
if ( isset( $this->prop['email'] ) ) {
$vals['email'] = $wgUser->getEmail();
$auth = $wgUser->getEmailAuthenticationTimestamp();
@@ -125,6 +132,13 @@ class ApiQueryUserInfo extends ApiQueryBase {
}
}
+ if ( isset( $this->prop['registrationdate'] ) ) {
+ $regDate = $wgUser->getRegistration();
+ if ( $regDate !== false ) {
+ $vals['registrationdate'] = wfTimestamp( TS_ISO_8601, $regDate );
+ }
+ }
+
if ( isset( $this->prop['acceptlang'] ) ) {
$langs = $wgRequest->getAcceptLang();
$acceptLang = array();
@@ -182,6 +196,7 @@ class ApiQueryUserInfo extends ApiQueryBase {
'blockinfo',
'hasmsg',
'groups',
+ 'implicitgroups',
'rights',
'changeablegroups',
'options',
@@ -189,7 +204,9 @@ class ApiQueryUserInfo extends ApiQueryBase {
'editcount',
'ratelimits',
'email',
+ 'realname',
'acceptlang',
+ 'registrationdate'
)
)
);
@@ -202,13 +219,17 @@ class ApiQueryUserInfo extends ApiQueryBase {
' blockinfo - Tags if the current user is blocked, by whom, and for what reason',
' hasmsg - Adds a tag "message" if the current user has pending messages',
' groups - Lists all the groups the current user belongs to',
+ ' implicitgroups - Lists all the groups the current user is automatically a member of',
' rights - Lists all the rights the current user has',
' changeablegroups - Lists the groups the current user can add to and remove from',
' options - Lists all preferences the current user has set',
+ ' preferencestoken - Get a token to change current user\'s preferences',
' editcount - Adds the current user\'s edit count',
' ratelimits - Lists all rate limits applying to the current user',
+ ' realname - Adds the user\'s real name',
' email - Adds the user\'s email address and email authentication date',
' acceptlang - Echoes the Accept-Language header sent by the client in a structured format',
+ ' registrationdate - Adds the user\'s registration date',
)
);
}
@@ -224,7 +245,11 @@ class ApiQueryUserInfo extends ApiQueryBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Meta#userinfo_.2F_ui';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryUserInfo.php 75937 2010-11-03 17:01:21Z reedy $';
+ return __CLASS__ . ': $Id: ApiQueryUserInfo.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryUsers.php b/includes/api/ApiQueryUsers.php
index 2619d200..6eee1331 100644
--- a/includes/api/ApiQueryUsers.php
+++ b/includes/api/ApiQueryUsers.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on July 30, 2007
*
- * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@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
@@ -34,7 +34,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
*
* @ingroup API
*/
- class ApiQueryUsers extends ApiQueryBase {
+class ApiQueryUsers extends ApiQueryBase {
private $tokenFunctions, $prop;
@@ -66,6 +66,10 @@ if ( !defined( 'MEDIAWIKI' ) ) {
return $this->tokenFunctions;
}
+ /**
+ * @param $user User
+ * @return String
+ */
public static function getUserrightsToken( $user ) {
global $wgUser;
// Since the permissions check for userrights is non-trivial,
@@ -104,14 +108,16 @@ if ( !defined( 'MEDIAWIKI' ) ) {
}
}
+ $result = $this->getResult();
+
if ( count( $goodNames ) ) {
- $this->addTables( 'user', 'u1' );
- $this->addFields( 'u1.*' );
- $this->addWhereFld( 'u1.user_name', $goodNames );
+ $this->addTables( 'user' );
+ $this->addFields( '*' );
+ $this->addWhereFld( 'user_name', $goodNames );
- if ( isset( $this->prop['groups'] ) ) {
+ if ( isset( $this->prop['groups'] ) || isset( $this->prop['rights'] ) ) {
$this->addTables( 'user_groups' );
- $this->addJoinConds( array( 'user_groups' => array( 'LEFT JOIN', 'ug_user=u1.user_id' ) ) );
+ $this->addJoinConds( array( 'user_groups' => array( 'LEFT JOIN', 'ug_user=user_id' ) ) );
$this->addFields( 'ug_group' );
}
@@ -119,9 +125,12 @@ if ( !defined( 'MEDIAWIKI' ) ) {
$data = array();
$res = $this->select( __METHOD__ );
+
foreach ( $res as $row ) {
$user = User::newFromRow( $row );
$name = $user->getName();
+
+ $data[$name]['userid'] = $user->getId();
$data[$name]['name'] = $name;
if ( isset( $this->prop['editcount'] ) ) {
@@ -132,19 +141,30 @@ if ( !defined( 'MEDIAWIKI' ) ) {
$data[$name]['registration'] = wfTimestampOrNull( TS_ISO_8601, $user->getRegistration() );
}
- if ( isset( $this->prop['groups'] ) && !is_null( $row->ug_group ) ) {
- // This row contains only one group, others will be added from other rows
- $data[$name]['groups'][] = $row->ug_group;
+ if ( isset( $this->prop['groups'] ) ) {
+ if ( !isset( $data[$name]['groups'] ) ) {
+ $data[$name]['groups'] = self::getAutoGroups( $user );
+ }
+
+ if ( !is_null( $row->ug_group ) ) {
+ // This row contains only one group, others will be added from other rows
+ $data[$name]['groups'][] = $row->ug_group;
+ }
+ }
+
+ if ( isset( $this->prop['implicitgroups'] ) && !isset( $data[$name]['implicitgroups'] ) ) {
+ $data[$name]['implicitgroups'] = self::getAutoGroups( $user );
}
- if ( isset( $this->prop['rights'] ) && !is_null( $row->ug_group ) ) {
+ if ( isset( $this->prop['rights'] ) ) {
if ( !isset( $data[$name]['rights'] ) ) {
- $data[$name]['rights'] = User::getGroupPermissions( User::getImplicitGroups() );
+ $data[$name]['rights'] = User::getGroupPermissions( $user->getAutomaticGroups() );
}
- $data[$name]['rights'] = array_unique( array_merge( $data[$name]['rights'],
- User::getGroupPermissions( array( $row->ug_group ) ) ) );
- $result->setIndexedTagName( $data[$name]['rights'], 'r' );
+ if ( !is_null( $row->ug_group ) ) {
+ $data[$name]['rights'] = array_unique( array_merge( $data[$name]['rights'],
+ User::getGroupPermissions( array( $row->ug_group ) ) ) );
+ }
}
if ( $row->ipb_deleted ) {
$data[$name]['hidden'] = '';
@@ -180,6 +200,7 @@ if ( !defined( 'MEDIAWIKI' ) ) {
}
}
}
+
// Second pass: add result data to $retval
foreach ( $goodNames as $u ) {
if ( !isset( $data[$u] ) ) {
@@ -207,13 +228,16 @@ if ( !defined( 'MEDIAWIKI' ) ) {
}
} else {
if ( isset( $this->prop['groups'] ) && isset( $data[$u]['groups'] ) ) {
- $autolist = ApiQueryUsers::getAutoGroups( User::newFromName( $u ) );
-
- $data[$u]['groups'] = array_merge( $autolist, $data[$u]['groups'] );
-
- $this->getResult()->setIndexedTagName( $data[$u]['groups'], 'g' );
+ $result->setIndexedTagName( $data[$u]['groups'], 'g' );
+ }
+ if ( isset( $this->prop['implicitgroups'] ) && isset( $data[$u]['implicitgroups'] ) ) {
+ $result->setIndexedTagName( $data[$u]['implicitgroups'], 'g' );
+ }
+ if ( isset( $this->prop['rights'] ) && isset( $data[$u]['rights'] ) ) {
+ $result->setIndexedTagName( $data[$u]['rights'], 'r' );
}
}
+
$fit = $result->addValue( array( 'query', $this->getModuleName() ),
null, $data[$u] );
if ( !$fit ) {
@@ -223,15 +247,17 @@ if ( !defined( 'MEDIAWIKI' ) ) {
}
$done[] = $u;
}
- return $this->getResult()->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'user' );
+ return $result->setIndexedTagName_internal( array( 'query', $this->getModuleName() ), 'user' );
}
/**
- * Gets all the groups that a user is automatically a member of
+ * Gets all the groups that a user is automatically a member of (implicit groups)
+ * @param $user User
* @return array
*/
public static function getAutoGroups( $user ) {
- $groups = array( '*' );
+ $groups = array();
+ $groups[] = '*';
if ( !$user->isAnon() ) {
$groups[] = 'user';
@@ -256,6 +282,8 @@ if ( !defined( 'MEDIAWIKI' ) ) {
ApiBase::PARAM_TYPE => array(
'blockinfo',
'groups',
+ 'implicitgroups',
+ 'rights',
'editcount',
'registration',
'emailable',
@@ -276,13 +304,14 @@ if ( !defined( 'MEDIAWIKI' ) ) {
return array(
'prop' => array(
'What pieces of information to include',
- ' blockinfo - Tags if the user is blocked, by whom, and for what reason',
- ' groups - Lists all the groups the user(s) belongs to',
- ' rights - Lists all the rights the user(s) has',
- ' editcount - Adds the user\'s edit count',
- ' registration - Adds the user\'s registration timestamp',
- ' emailable - Tags if the user can and wants to receive e-mail through [[Special:Emailuser]]',
- ' gender - Tags the gender of the user. Returns "male", "female", or "unknown"',
+ ' blockinfo - Tags if the user is blocked, by whom, and for what reason',
+ ' groups - Lists all the groups the user(s) belongs to',
+ ' implicitgroups - Lists all the groups a user is automatically a member of',
+ ' rights - Lists all the rights the user(s) has',
+ ' editcount - Adds the user\'s edit count',
+ ' registration - Adds the user\'s registration timestamp',
+ ' emailable - Tags if the user can and wants to receive e-mail through [[Special:Emailuser]]',
+ ' gender - Tags the gender of the user. Returns "male", "female", or "unknown"',
),
'users' => 'A list of users to obtain the same information for',
'token' => 'Which tokens to obtain for each user',
@@ -297,7 +326,11 @@ if ( !defined( 'MEDIAWIKI' ) ) {
return 'api.php?action=query&list=users&ususers=brion|TimStarling&usprop=groups|editcount|gender';
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Users';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryUsers.php 85354 2011-04-04 18:25:31Z demon $';
+ return __CLASS__ . ': $Id: ApiQueryUsers.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryWatchlist.php b/includes/api/ApiQueryWatchlist.php
index 784f89c0..a5eb23eb 100644
--- a/includes/api/ApiQueryWatchlist.php
+++ b/includes/api/ApiQueryWatchlist.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 25, 2006
*
@@ -51,8 +51,12 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
private $fld_ids = false, $fld_title = false, $fld_patrol = false, $fld_flags = false,
$fld_timestamp = false, $fld_user = false, $fld_comment = false, $fld_parsedcomment = false, $fld_sizes = false,
- $fld_notificationtimestamp = false, $fld_userid = false;
+ $fld_notificationtimestamp = false, $fld_userid = false, $fld_loginfo = false;
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function run( $resultPageSet = null ) {
$this->selectNamedDB( 'watchlist', DB_SLAVE, 'watchlist' );
@@ -74,6 +78,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
$this->fld_sizes = isset( $prop['sizes'] );
$this->fld_patrol = isset( $prop['patrol'] );
$this->fld_notificationtimestamp = isset( $prop['notificationtimestamp'] );
+ $this->fld_loginfo = isset( $prop['loginfo'] );
if ( $this->fld_patrol ) {
if ( !$user->useRCPatrol() && !$user->useNPPatrol() ) {
@@ -85,25 +90,25 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
$this->addFields( array(
'rc_namespace',
'rc_title',
- 'rc_timestamp'
+ 'rc_timestamp',
+ 'rc_type',
) );
if ( is_null( $resultPageSet ) ) {
$this->addFields( array(
'rc_cur_id',
- 'rc_this_oldid'
+ 'rc_this_oldid',
+ 'rc_last_oldid',
) );
- $this->addFieldsIf( 'rc_new', $this->fld_flags );
- $this->addFieldsIf( 'rc_minor', $this->fld_flags );
- $this->addFieldsIf( 'rc_bot', $this->fld_flags );
+ $this->addFieldsIf( array( 'rc_new', 'rc_minor', 'rc_bot' ), $this->fld_flags );
$this->addFieldsIf( 'rc_user', $this->fld_user || $this->fld_userid );
$this->addFieldsIf( 'rc_user_text', $this->fld_user );
$this->addFieldsIf( 'rc_comment', $this->fld_comment || $this->fld_parsedcomment );
$this->addFieldsIf( 'rc_patrolled', $this->fld_patrol );
- $this->addFieldsIf( 'rc_old_len', $this->fld_sizes );
- $this->addFieldsIf( 'rc_new_len', $this->fld_sizes );
+ $this->addFieldsIf( array( 'rc_old_len', 'rc_new_len' ), $this->fld_sizes );
$this->addFieldsIf( 'wl_notificationtimestamp', $this->fld_notificationtimestamp );
+ $this->addFieldsIf( array( 'rc_logid', 'rc_log_type', 'rc_log_action', 'rc_params' ), $this->fld_loginfo );
} elseif ( $params['allrev'] ) {
$this->addFields( 'rc_this_oldid' );
} else {
@@ -111,27 +116,33 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
}
$this->addTables( array(
+ 'recentchanges',
'watchlist',
- 'page',
- 'recentchanges'
) );
$userId = $user->getId();
+ $this->addJoinConds( array( 'watchlist' => array('INNER JOIN',
+ array(
+ 'wl_user' => $userId,
+ 'wl_namespace=rc_namespace',
+ 'wl_title=rc_title'
+ ) ) ) );
+
$this->addWhere( array(
- 'wl_namespace = rc_namespace',
- 'wl_title = rc_title',
- 'rc_cur_id = page_id',
- 'wl_user' => $userId,
'rc_deleted' => 0,
) );
-
+
$db = $this->getDB();
- $this->addWhereRange( 'rc_timestamp', $params['dir'],
- $db->timestamp( $params['start'] ),
- $db->timestamp( $params['end'] ) );
+ $this->addTimestampWhereRange( 'rc_timestamp', $params['dir'],
+ $params['start'], $params['end'] );
$this->addWhereFld( 'wl_namespace', $params['namespace'] );
- $this->addWhereIf( 'rc_this_oldid=page_latest', !$params['allrev'] );
+
+ if ( !$params['allrev'] ) {
+ $this->addTables( 'page' );
+ $this->addJoinConds( array( 'page' => array( 'LEFT JOIN','rc_cur_id=page_id' ) ) );
+ $this->addWhere( 'rc_this_oldid=page_latest OR rc_type=' . RC_LOG );
+ }
if ( !is_null( $params['show'] ) ) {
$show = array_flip( $params['show'] );
@@ -143,7 +154,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
|| ( isset ( $show['patrolled'] ) && isset ( $show['!patrolled'] ) )
)
{
- $this->dieUsageMsg( array( 'show' ) );
+ $this->dieUsageMsg( 'show' );
}
// Check permissions.
@@ -172,11 +183,9 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
$this->addWhereFld( 'rc_user_text', $params['user'] );
}
if ( !is_null( $params['excludeuser'] ) ) {
- $this->addWhere( 'rc_user_text != ' . $this->getDB()->addQuotes( $params['excludeuser'] ) );
+ $this->addWhere( 'rc_user_text != ' . $db->addQuotes( $params['excludeuser'] ) );
}
-
-
// This is an index optimization for mysql, as done in the Special:Watchlist page
$this->addWhereIf( "rc_timestamp > ''", !isset( $params['start'] ) && !isset( $params['end'] ) && $db->getType() == 'mysql' );
@@ -225,6 +234,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
if ( $this->fld_ids ) {
$vals['pageid'] = intval( $row->rc_cur_id );
$vals['revid'] = intval( $row->rc_this_oldid );
+ $vals['old_revid'] = intval( $row->rc_last_oldid );
}
$title = Title::makeTitle( $row->rc_namespace, $row->rc_title );
@@ -240,7 +250,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
}
if ( $this->fld_userid ) {
- $vals['user'] = $row->rc_user;
+ $vals['user'] = $row->rc_user;
}
if ( !$row->rc_user ) {
@@ -284,8 +294,21 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
}
if ( $this->fld_parsedcomment && isset( $row->rc_comment ) ) {
- global $wgUser;
- $vals['parsedcomment'] = $wgUser->getSkin()->formatComment( $row->rc_comment, $title );
+ $vals['parsedcomment'] = Linker::formatComment( $row->rc_comment, $title );
+ }
+
+ if ( $this->fld_loginfo && $row->rc_type == RC_LOG ) {
+ $vals['logid'] = intval( $row->rc_logid );
+ $vals['logtype'] = $row->rc_log_type;
+ $vals['logaction'] = $row->rc_log_action;
+ ApiQueryLogEvents::addLogParams(
+ $this->getResult(),
+ $vals,
+ $row->rc_params,
+ $row->rc_log_type,
+ $row->rc_log_action,
+ $row->rc_timestamp
+ );
}
return $vals;
@@ -338,7 +361,8 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
'timestamp',
'patrol',
'sizes',
- 'notificationtimestamp'
+ 'notificationtimestamp',
+ 'loginfo',
)
),
'show' => array(
@@ -364,6 +388,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
}
public function getParamDescription() {
+ $p = $this->getModulePrefix();
return array(
'allrev' => 'Include multiple revisions of the same page within given timeframe',
'start' => 'The timestamp to start enumerating from',
@@ -371,7 +396,7 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
'namespace' => 'Filter changes to only the given namespace(s)',
'user' => 'Only list changes by this user',
'excludeuser' => 'Don\'t list changes by this user',
- 'dir' => 'In which direction to enumerate pages',
+ 'dir' => $this->getDirectionDescription( $p ),
'limit' => 'How many total results to return per request',
'prop' => array(
'Which additional items to get (non-generator mode only).',
@@ -384,12 +409,13 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
' parsedcomment - Adds parsed comment of the edit',
' timestamp - Adds timestamp of the edit',
' patrol - Tags edits that are patrolled',
- ' size - Adds the old and new lengths of the page',
+ ' sizes - Adds the old and new lengths of the page',
' notificationtimestamp - Adds timestamp of when the user was last notified about the edit',
+ ' loginfo - Adds log information where appropriate',
),
'show' => array(
'Show only items that meet this criteria.',
- "For example, to see only minor edits done by logged-in users, set {$this->getModulePrefix()}show=minor|!anon"
+ "For example, to see only minor edits done by logged-in users, set {$p}show=minor|!anon"
),
'owner' => 'The name of the user whose watchlist you\'d like to access',
'token' => 'Give a security token (settable in preferences) to allow access to another user\'s watchlist'
@@ -423,7 +449,11 @@ class ApiQueryWatchlist extends ApiQueryGeneratorBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Watchlist';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryWatchlist.php 85435 2011-04-05 14:00:08Z demon $';
+ return __CLASS__ . ': $Id: ApiQueryWatchlist.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiQueryWatchlistRaw.php b/includes/api/ApiQueryWatchlistRaw.php
index 0e5617e3..b008eab2 100644
--- a/includes/api/ApiQueryWatchlistRaw.php
+++ b/includes/api/ApiQueryWatchlistRaw.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Oct 4, 2008
*
- * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2008 Roan Kattouw <Firstname>.<Lastname>@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
@@ -49,6 +49,10 @@ class ApiQueryWatchlistRaw extends ApiQueryGeneratorBase {
$this->run( $resultPageSet );
}
+ /**
+ * @param $resultPageSet ApiPageSet
+ * @return void
+ */
private function run( $resultPageSet = null ) {
$this->selectNamedDB( 'watchlist', DB_SLAVE, 'watchlist' );
@@ -59,7 +63,7 @@ class ApiQueryWatchlistRaw extends ApiQueryGeneratorBase {
$prop = array_flip( (array)$params['prop'] );
$show = array_flip( (array)$params['show'] );
if ( isset( $show['changed'] ) && isset( $show['!changed'] ) ) {
- $this->dieUsageMsg( array( 'show' ) );
+ $this->dieUsageMsg( 'show' );
}
$this->addTables( 'watchlist' );
@@ -201,6 +205,6 @@ class ApiQueryWatchlistRaw extends ApiQueryGeneratorBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiQueryWatchlistRaw.php 70647 2010-08-07 19:59:42Z ialex $';
+ return __CLASS__ . ': $Id: ApiQueryWatchlistRaw.php 88416 2011-05-19 17:51:16Z hashar $';
}
-} \ No newline at end of file
+}
diff --git a/includes/api/ApiResult.php b/includes/api/ApiResult.php
index 9d42a58e..f7ea0045 100644
--- a/includes/api/ApiResult.php
+++ b/includes/api/ApiResult.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 4, 2006
*
@@ -249,6 +249,12 @@ class ApiResult extends ApiBase {
* Path is an indexed array, each element specifying the branch at which to add the new value
* Setting $path to array('a','b','c') is equivalent to data['a']['b']['c'] = $value
* If $name is empty, the $value is added as a next list element data[] = $value
+ *
+ * @param $path
+ * @param $name string
+ * @param $value mixed
+ * @param $overwrite bool
+ *
* @return bool True if $value fits in the result, false if not
*/
public function addValue( $path, $name, $value, $overwrite = false ) {
@@ -257,6 +263,9 @@ class ApiResult extends ApiBase {
if ( $this->mCheckingSize ) {
$newsize = $this->mSize + self::size( $value );
if ( $newsize > $wgAPIMaxResultSize ) {
+ $this->setWarning(
+ "This result was truncated because it would otherwise be larger than the " .
+ "limit of {$wgAPIMaxResultSize} bytes" );
return false;
}
$this->mSize = $newsize;
@@ -327,6 +336,8 @@ class ApiResult extends ApiBase {
/**
* Callback function for cleanUpUTF8()
+ *
+ * @param $s string
*/
private static function cleanUp_helper( &$s ) {
if ( !is_string( $s ) ) {
@@ -336,11 +347,31 @@ class ApiResult extends ApiBase {
$s = $wgContLang->normalize( $s );
}
+ /**
+ * Converts a Status object to an array suitable for addValue
+ * @param Status $status
+ * @param string $errorType
+ * @return array
+ */
+ public function convertStatusToArray( $status, $errorType = 'error' ) {
+ if ( $status->isGood() ) {
+ return array();
+ }
+
+ $result = array();
+ foreach ( $status->getErrorsByType( $errorType ) as $error ) {
+ $this->setIndexedTagName( $error['params'], 'param' );
+ $result[] = $error;
+ }
+ $this->setIndexedTagName( $result, $errorType );
+ return $result;
+ }
+
public function execute() {
ApiBase::dieDebug( __METHOD__, 'execute() is not supported on Result object' );
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiResult.php 74230 2010-10-03 19:07:11Z reedy $';
+ return __CLASS__ . ': $Id: ApiResult.php 91144 2011-06-29 23:46:39Z reedy $';
}
}
diff --git a/includes/api/ApiRollback.php b/includes/api/ApiRollback.php
index e31bfed8..a149fcaf 100644
--- a/includes/api/ApiRollback.php
+++ b/includes/api/ApiRollback.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Jun 20, 2007
*
- * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@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
@@ -38,7 +38,15 @@ class ApiRollback extends ApiBase {
parent::__construct( $main, $action );
}
- private $mTitleObj = null, $mUser = null;
+ /**
+ * @var Title
+ */
+ private $mTitleObj = null;
+
+ /**
+ * @var User
+ */
+ private $mUser = null;
public function execute() {
$params = $this->extractRequestParams();
@@ -47,7 +55,7 @@ class ApiRollback extends ApiBase {
$titleObj = $this->getTitle();
$articleObj = new Article( $titleObj );
$summary = ( isset( $params['summary'] ) ? $params['summary'] : '' );
- $details = null;
+ $details = array();
$retval = $articleObj->doRollback( $this->getUser(), $summary, $params['token'], $params['markbot'], $details );
if ( $retval ) {
@@ -170,7 +178,7 @@ class ApiRollback extends ApiBase {
$this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
}
if ( !$this->mTitleObj->exists() ) {
- $this->dieUsageMsg( array( 'notanarticle' ) );
+ $this->dieUsageMsg( 'notanarticle' );
}
return $this->mTitleObj;
@@ -183,7 +191,11 @@ class ApiRollback extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Rollback';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiRollback.php 75602 2010-10-28 00:04:48Z reedy $';
+ return __CLASS__ . ': $Id: ApiRollback.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiRsd.php b/includes/api/ApiRsd.php
index 7bc4722c..f9a4d285 100644
--- a/includes/api/ApiRsd.php
+++ b/includes/api/ApiRsd.php
@@ -47,7 +47,8 @@ class ApiRsd extends ApiBase {
$service = array( 'apis' => $this->formatRsdApiList() );
ApiResult::setContent( $service, 'MediaWiki', 'engineName' );
- ApiResult::setContent( $service, 'http://www.mediawiki.org/', 'engineLink' );
+ ApiResult::setContent( $service, 'https://www.mediawiki.org/', 'engineLink' );
+ ApiResult::setContent( $service, Title::newMainPage()->getCanonicalUrl(), 'homePageLink' );
$result->setIndexedTagName( $service['apis'], 'api' );
@@ -67,7 +68,7 @@ class ApiRsd extends ApiBase {
}
public function getDescription() {
- return 'Export an RSD schema';
+ return 'Export an RSD (Really Simple Discovery) schema';
}
protected function getExamples() {
@@ -97,10 +98,10 @@ class ApiRsd extends ApiBase {
$apis = array(
'MediaWiki' => array(
// The API link is required for all RSD API entries.
- 'apiLink' => wfExpandUrl( wfScript( 'api' ) ),
+ 'apiLink' => wfExpandUrl( wfScript( 'api' ), PROTO_CURRENT ),
// Docs link is optional, but recommended.
- 'docs' => 'http://mediawiki.org/wiki/API',
+ 'docs' => 'https://www.mediawiki.org/wiki/API',
// Some APIs may need a blog ID, but it may be left blank.
'blogID' => '',
@@ -160,7 +161,7 @@ class ApiRsd extends ApiBase {
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiRsd.php 76195 2010-11-06 15:57:15Z btongminh $';
+ return __CLASS__ . ': $Id: ApiRsd.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
@@ -169,12 +170,12 @@ class ApiFormatXmlRsd extends ApiFormatXml {
parent::__construct( $main, $format );
$this->setRootElement( 'rsd' );
}
-
+
public function getMimeType() {
return 'application/rsd+xml';
}
public function getVersion() {
- return __CLASS__ . ': $Id: ApiRsd.php 76195 2010-11-06 15:57:15Z btongminh $';
+ return __CLASS__ . ': $Id: ApiRsd.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiUnblock.php b/includes/api/ApiUnblock.php
index 4f6e4fb7..51ee0241 100644
--- a/includes/api/ApiUnblock.php
+++ b/includes/api/ApiUnblock.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Sep 7, 2007
*
- * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@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
@@ -49,40 +49,42 @@ class ApiUnblock extends ApiBase {
$params = $this->extractRequestParams();
if ( $params['gettoken'] ) {
- $res['unblocktoken'] = $wgUser->editToken();
+ $res['unblocktoken'] = $wgUser->editToken( '', $this->getMain()->getRequest() );
$this->getResult()->addValue( null, $this->getModuleName(), $res );
return;
}
if ( is_null( $params['id'] ) && is_null( $params['user'] ) ) {
- $this->dieUsageMsg( array( 'unblock-notarget' ) );
+ $this->dieUsageMsg( 'unblock-notarget' );
}
if ( !is_null( $params['id'] ) && !is_null( $params['user'] ) ) {
- $this->dieUsageMsg( array( 'unblock-idanduser' ) );
+ $this->dieUsageMsg( 'unblock-idanduser' );
}
if ( !$wgUser->isAllowed( 'block' ) ) {
- $this->dieUsageMsg( array( 'cantunblock' ) );
+ $this->dieUsageMsg( 'cantunblock' );
}
# bug 15810: blocked admins should have limited access here
if ( $wgUser->isBlocked() ) {
- $status = IPBlockForm::checkUnblockSelf( $params['user'] );
+ $status = SpecialBlock::checkUnblockSelf( $params['user'] );
if ( $status !== true ) {
- $this->dieUsageMsg( array( $status ) );
+ $this->dieUsageMsg( $status );
}
}
- $id = $params['id'];
- $user = $params['user'];
- $reason = ( is_null( $params['reason'] ) ? '' : $params['reason'] );
- $retval = IPUnblockForm::doUnblock( $id, $user, $reason, $range );
- if ( $retval ) {
- $this->dieUsageMsg( $retval );
+ $data = array(
+ 'Target' => is_null( $params['id'] ) ? $params['user'] : "#{$params['id']}",
+ 'Reason' => is_null( $params['reason'] ) ? '' : $params['reason']
+ );
+ $block = Block::newFromTarget( $data['Target'] );
+ $retval = SpecialUnblock::processUnblock( $data );
+ if ( $retval !== true ) {
+ $this->dieUsageMsg( $retval[0] );
}
- $res['id'] = intval( $id );
- $res['user'] = $user;
- $res['reason'] = $reason;
+ $res['id'] = $block->getId();
+ $res['user'] = $block->getType() == Block::TYPE_AUTO ? '' : $block->getTarget();
+ $res['reason'] = $params['reason'];
$this->getResult()->addValue( null, $this->getModuleName(), $res );
}
@@ -96,7 +98,9 @@ class ApiUnblock extends ApiBase {
public function getAllowedParams() {
return array(
- 'id' => null,
+ 'id' => array(
+ ApiBase::PARAM_TYPE => 'integer',
+ ),
'user' => null,
'token' => null,
'gettoken' => false,
@@ -144,7 +148,11 @@ class ApiUnblock extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Block';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiUnblock.php 74098 2010-10-01 20:12:50Z reedy $';
+ return __CLASS__ . ': $Id: ApiUnblock.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiUndelete.php b/includes/api/ApiUndelete.php
index 3c7d91a5..c2aa2a00 100644
--- a/includes/api/ApiUndelete.php
+++ b/includes/api/ApiUndelete.php
@@ -1,10 +1,10 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Jul 3, 2007
*
- * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2007 Roan Kattouw <Firstname>.<Lastname>@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
@@ -43,11 +43,11 @@ class ApiUndelete extends ApiBase {
$params = $this->extractRequestParams();
if ( !$wgUser->isAllowed( 'undelete' ) ) {
- $this->dieUsageMsg( array( 'permdenied-undelete' ) );
+ $this->dieUsageMsg( 'permdenied-undelete' );
}
if ( $wgUser->isBlocked() ) {
- $this->dieUsageMsg( array( 'blockedtext' ) );
+ $this->dieUsageMsg( 'blockedtext' );
}
$titleObj = Title::newFromText( $params['title'] );
@@ -69,7 +69,7 @@ class ApiUndelete extends ApiBase {
$pa = new PageArchive( $titleObj );
$retval = $pa->undelete( ( isset( $params['timestamps'] ) ? $params['timestamps'] : array() ), $params['reason'] );
if ( !is_array( $retval ) ) {
- $this->dieUsageMsg( array( 'cannotundelete' ) );
+ $this->dieUsageMsg( 'cannotundelete' );
}
if ( $retval[1] ) {
@@ -103,7 +103,8 @@ class ApiUndelete extends ApiBase {
'token' => null,
'reason' => '',
'timestamps' => array(
- ApiBase::PARAM_ISMULTI => true
+ ApiBase::PARAM_TYPE => 'timestamp',
+ ApiBase::PARAM_ISMULTI => true,
),
'watchlist' => array(
ApiBase::PARAM_DFLT => 'preferences',
@@ -158,7 +159,11 @@ class ApiUndelete extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Undelete';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiUndelete.php 74098 2010-10-01 20:12:50Z reedy $';
+ return __CLASS__ . ': $Id: ApiUndelete.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiUpload.php b/includes/api/ApiUpload.php
index e7d7b939..1dab0310 100644
--- a/includes/api/ApiUpload.php
+++ b/includes/api/ApiUpload.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Aug 21, 2008
*
@@ -33,7 +33,12 @@ if ( !defined( 'MEDIAWIKI' ) ) {
* @ingroup API
*/
class ApiUpload extends ApiBase {
+
+ /**
+ * @var UploadBase
+ */
protected $mUpload = null;
+
protected $mParams;
public function __construct( $main, $action ) {
@@ -45,7 +50,7 @@ class ApiUpload extends ApiBase {
// Check whether upload is enabled
if ( !UploadBase::isEnabled() ) {
- $this->dieUsageMsg( array( 'uploaddisabled' ) );
+ $this->dieUsageMsg( 'uploaddisabled' );
}
// Parameter handling
@@ -54,6 +59,11 @@ class ApiUpload extends ApiBase {
// Add the uploaded file to the params array
$this->mParams['file'] = $request->getFileName( 'file' );
+ // Copy the session key to the file key, for backward compatibility.
+ if( !$this->mParams['filekey'] && $this->mParams['sessionkey'] ) {
+ $this->mParams['filekey'] = $this->mParams['sessionkey'];
+ }
+
// Select an upload module
if ( !$this->selectUploadModule() ) {
// This is not a true upload, but a status request or similar
@@ -77,34 +87,40 @@ class ApiUpload extends ApiBase {
// Check if the uploaded file is sane
$this->verifyUpload();
- // Check permission to upload this file
- $permErrors = $this->mUpload->verifyPermissions( $wgUser );
- if ( $permErrors !== true ) {
- // TODO: stash the upload and allow choosing a new name
- $this->dieUsageMsg( array( 'badaccess-groups' ) );
+
+ // 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'] ) {
+ $permErrors = $this->mUpload->verifyTitlePermissions( $wgUser );
+ if ( $permErrors !== true ) {
+ $this->dieRecoverableError( $permErrors[0], 'filename' );
+ }
}
// Prepare the API result
$result = array();
-
+
$warnings = $this->getApiWarnings();
- if ( $warnings ) {
+ if ( $warnings ) {
$result['result'] = 'Warning';
$result['warnings'] = $warnings;
// in case the warnings can be fixed with some further user action, let's stash this upload
// and return a key they can use to restart it
- try {
- $result['sessionkey'] = $this->performStash();
- } catch ( MWException $e ) {
+ try {
+ $result['filekey'] = $this->performStash();
+ $result['sessionkey'] = $result['filekey']; // backwards compatibility
+ } catch ( MWException $e ) {
$result['warnings']['stashfailed'] = $e->getMessage();
}
- } elseif ( $this->mParams['stash'] ) {
+ } elseif ( $this->mParams['stash'] ) {
// Some uploads can request they be stashed, so as not to publish them immediately.
// In this case, a failure to stash ought to be fatal
try {
- $result['result'] = 'Success';
- $result['sessionkey'] = $this->performStash();
- } catch ( MWException $e ) {
+ $result['result'] = 'Success';
+ $result['filekey'] = $this->performStash();
+ $result['sessionkey'] = $result['filekey']; // backwards compatibility
+ } catch ( MWException $e ) {
$this->dieUsage( $e->getMessage(), 'stashfailed' );
}
} else {
@@ -113,52 +129,76 @@ class ApiUpload extends ApiBase {
$result = $this->performUpload();
}
- if ( $result['result'] === 'Success' ) {
+ if ( $result['result'] === 'Success' ) {
$result['imageinfo'] = $this->mUpload->getImageInfo( $this->getResult() );
}
$this->getResult()->addValue( null, $this->getModuleName(), $result );
-
+
// Cleanup any temporary mess
$this->mUpload->cleanupTempFile();
}
/**
- * Stash the file and return the session key
+ * Stash the file and return the file key
* Also re-raises exceptions with slightly more informative message strings (useful for API)
* @throws MWException
- * @return {String} session key
+ * @return String file key
*/
function performStash() {
try {
- $sessionKey = $this->mUpload->stashSessionFile()->getSessionKey();
+ $fileKey = $this->mUpload->stashFile()->getFileKey();
} catch ( MWException $e ) {
- throw new MWException( 'Stashing temporary file failed: ' . get_class($e) . ' ' . $e->getMessage() );
+ $message = 'Stashing temporary file failed: ' . get_class( $e ) . ' ' . $e->getMessage();
+ wfDebug( __METHOD__ . ' ' . $message . "\n");
+ throw new MWException( $message );
}
- return $sessionKey;
+ return $fileKey;
}
+ /**
+ * Throw an error that the user can recover from by providing a better
+ * value for $parameter
+ *
+ * @param $error array Error array suitable for passing to dieUsageMsg()
+ * @param $parameter string Parameter that needs revising
+ * @param $data array Optional extra data to pass to the user
+ * @throws UsageException
+ */
+ function dieRecoverableError( $error, $parameter, $data = array() ) {
+ try {
+ $data['filekey'] = $this->performStash();
+ $data['sessionkey'] = $data['filekey'];
+ } catch ( MWException $e ) {
+ $data['stashfailed'] = $e->getMessage();
+ }
+ $data['invalidparameter'] = $parameter;
+
+ $parsed = $this->parseMsg( $error );
+ $this->dieUsage( $parsed['info'], $parsed['code'], 0, $data );
+ }
/**
* Select an upload module and set it to mUpload. Dies on failure. If the
- * request was a status request and not a true upload, returns false;
+ * request was a status request and not a true upload, returns false;
* otherwise true
- *
+ *
* @return bool
*/
protected function selectUploadModule() {
- global $wgAllowAsyncCopyUploads;
$request = $this->getMain()->getRequest();
// One and only one of the following parameters is needed
$this->requireOnlyOneParameter( $this->mParams,
- 'sessionkey', 'file', 'url', 'statuskey' );
+ 'filekey', 'file', 'url', 'statuskey' );
+
+ if ( $this->mParams['statuskey'] ) {
+ $this->checkAsyncDownloadEnabled();
- if ( $wgAllowAsyncCopyUploads && $this->mParams['statuskey'] ) {
// Status request for an async upload
$sessionData = UploadFromUrlJob::getSessionData( $this->mParams['statuskey'] );
if ( !isset( $sessionData['result'] ) ) {
- $this->dieUsage( 'No result in session data', 'missingresult');
+ $this->dieUsage( 'No result in session data', 'missingresult' );
}
if ( $sessionData['result'] == 'Warning' ) {
$sessionData['warnings'] = $this->transformWarnings( $sessionData['warnings'] );
@@ -166,28 +206,24 @@ class ApiUpload extends ApiBase {
}
$this->getResult()->addValue( null, $this->getModuleName(), $sessionData );
return false;
-
- }
+ }
// The following modules all require the filename parameter to be set
if ( is_null( $this->mParams['filename'] ) ) {
$this->dieUsageMsg( array( 'missingparam', 'filename' ) );
}
-
- if ( $this->mParams['sessionkey'] ) {
+ if ( $this->mParams['filekey'] ) {
// Upload stashed in a previous request
- $sessionData = $request->getSessionData( UploadBase::getSessionKeyName() );
- if ( !UploadFromStash::isValidSessionKey( $this->mParams['sessionkey'], $sessionData ) ) {
- $this->dieUsageMsg( array( 'invalid-session-key' ) );
+ if ( !UploadFromStash::isValidKey( $this->mParams['filekey'] ) ) {
+ $this->dieUsageMsg( 'invalid-file-key' );
}
- $this->mUpload = new UploadFromStash();
- $this->mUpload->initialize( $this->mParams['filename'],
- $this->mParams['sessionkey'],
- $sessionData[$this->mParams['sessionkey']] );
-
+ // context allows access to the current user without creating new $wgUser references
+ $context = $this->createContext();
+ $this->mUpload = new UploadFromStash( $context->getUser() );
+ $this->mUpload->initialize( $this->mParams['filekey'], $this->mParams['filename'] );
} elseif ( isset( $this->mParams['file'] ) ) {
$this->mUpload = new UploadFromFile();
@@ -198,16 +234,18 @@ class ApiUpload extends ApiBase {
} elseif ( isset( $this->mParams['url'] ) ) {
// Make sure upload by URL is enabled:
if ( !UploadFromUrl::isEnabled() ) {
- $this->dieUsageMsg( array( 'copyuploaddisabled' ) );
+ $this->dieUsageMsg( 'copyuploaddisabled' );
}
$async = false;
if ( $this->mParams['asyncdownload'] ) {
+ $this->checkAsyncDownloadEnabled();
+
if ( $this->mParams['leavemessage'] && !$this->mParams['ignorewarnings'] ) {
$this->dieUsage( 'Using leavemessage without ignorewarnings is not supported',
'missing-ignorewarnings' );
}
-
+
if ( $this->mParams['leavemessage'] ) {
$async = 'async-leavemessage';
} else {
@@ -219,7 +257,7 @@ class ApiUpload extends ApiBase {
$this->mParams['url'], $async );
}
-
+
return true;
}
@@ -236,7 +274,7 @@ class ApiUpload extends ApiBase {
if ( !$user->isLoggedIn() ) {
$this->dieUsageMsg( array( 'mustbeloggedin', 'upload' ) );
} else {
- $this->dieUsageMsg( array( 'badaccess-groups' ) );
+ $this->dieUsageMsg( 'badaccess-groups' );
}
}
}
@@ -254,15 +292,29 @@ class ApiUpload extends ApiBase {
// TODO: Move them to ApiBase's message map
switch( $verification['status'] ) {
+ // Recoverable errors
+ case UploadBase::MIN_LENGTH_PARTNAME:
+ $this->dieRecoverableError( 'filename-tooshort', 'filename' );
+ break;
+ case UploadBase::ILLEGAL_FILENAME:
+ $this->dieRecoverableError( 'illegal-filename', 'filename',
+ array( 'filename' => $verification['filtered'] ) );
+ break;
+ case UploadBase::FILETYPE_MISSING:
+ $this->dieRecoverableError( 'filetype-missing', 'filename' );
+ break;
+ case UploadBase::WINDOWS_NONASCII_FILENAME:
+ $this->dieRecoverableError( 'windows-nonascii-filename', 'filename' );
+ break;
+
+ // Unrecoverable errors
case UploadBase::EMPTY_FILE:
$this->dieUsage( 'The file you submitted was empty', 'empty-file' );
break;
case UploadBase::FILE_TOO_LARGE:
$this->dieUsage( 'The file you submitted was too large', 'file-too-large' );
break;
- case UploadBase::FILETYPE_MISSING:
- $this->dieUsage( 'The file is missing an extension', 'filetype-missing' );
- break;
+
case UploadBase::FILETYPE_BADTYPE:
$this->dieUsage( 'This type of file is banned', 'filetype-banned',
0, array(
@@ -270,13 +322,6 @@ class ApiUpload extends ApiBase {
'allowed' => $wgFileExtensions
) );
break;
- case UploadBase::MIN_LENGTH_PARTNAME:
- $this->dieUsage( 'The filename is too short', 'filename-tooshort' );
- break;
- case UploadBase::ILLEGAL_FILENAME:
- $this->dieUsage( 'The filename is not allowed', 'illegal-filename',
- 0, array( 'filename' => $verification['filtered'] ) );
- break;
case UploadBase::VERIFICATION_ERROR:
$this->getResult()->setIndexedTagName( $verification['details'], 'detail' );
$this->dieUsage( 'This file did not pass file verification', 'verification-error',
@@ -306,30 +351,35 @@ class ApiUpload extends ApiBase {
if ( !$this->mParams['ignorewarnings'] ) {
$warnings = $this->mUpload->checkWarnings();
- if ( $warnings ) {
- // Add indices
- $this->getResult()->setIndexedTagName( $warnings, 'warning' );
-
- if ( isset( $warnings['duplicate'] ) ) {
- $dupes = array();
- foreach ( $warnings['duplicate'] as $dupe ) {
- $dupes[] = $dupe->getName();
- }
- $this->getResult()->setIndexedTagName( $dupes, 'duplicate' );
- $warnings['duplicate'] = $dupes;
- }
+ }
+ return $this->transformWarnings( $warnings );
+ }
+
+ protected function transformWarnings( $warnings ) {
+ if ( $warnings ) {
+ // Add indices
+ $result = $this->getResult();
+ $result->setIndexedTagName( $warnings, 'warning' );
- if ( isset( $warnings['exists'] ) ) {
- $warning = $warnings['exists'];
- unset( $warnings['exists'] );
- $warnings[$warning['warning']] = $warning['file']->getName();
+ if ( isset( $warnings['duplicate'] ) ) {
+ $dupes = array();
+ foreach ( $warnings['duplicate'] as $dupe ) {
+ $dupes[] = $dupe->getName();
}
+ $result->setIndexedTagName( $dupes, 'duplicate' );
+ $warnings['duplicate'] = $dupes;
}
- }
+ if ( isset( $warnings['exists'] ) ) {
+ $warning = $warnings['exists'];
+ unset( $warnings['exists'] );
+ $warnings[$warning['warning']] = $warning['file']->getName();
+ }
+ }
return $warnings;
}
+
/**
* Perform the actual upload. Returns a suitable result array on success;
* dies on failure.
@@ -376,10 +426,19 @@ class ApiUpload extends ApiBase {
$result['result'] = 'Success';
$result['filename'] = $file->getName();
-
return $result;
}
+ /**
+ * Checks if asynchronous copy uploads are enabled and throws an error if they are not.
+ */
+ protected function checkAsyncDownloadEnabled() {
+ global $wgAllowAsyncCopyUploads;
+ if ( !$wgAllowAsyncCopyUploads ) {
+ $this->dieUsage( 'Asynchronous copy uploads disabled', 'asynccopyuploaddisabled');
+ }
+ }
+
public function mustBePosted() {
return true;
}
@@ -413,18 +472,18 @@ class ApiUpload extends ApiBase {
'ignorewarnings' => false,
'file' => null,
'url' => null,
- 'sessionkey' => null,
+ 'filekey' => null,
+ 'sessionkey' => array(
+ ApiBase::PARAM_DFLT => null,
+ ApiBase::PARAM_DEPRECATED => true,
+ ),
'stash' => false,
+
+ 'asyncdownload' => false,
+ 'leavemessage' => false,
+ 'statuskey' => null,
);
- global $wgAllowAsyncCopyUploads;
- if ( $wgAllowAsyncCopyUploads ) {
- $params += array(
- 'asyncdownload' => false,
- 'leavemessage' => false,
- 'statuskey' => null,
- );
- }
return $params;
}
@@ -439,18 +498,14 @@ class ApiUpload extends ApiBase {
'ignorewarnings' => 'Ignore any warnings',
'file' => 'File contents',
'url' => 'Url to fetch the file from',
- 'sessionkey' => 'Session key that identifies a previous upload that was stashed temporarily.',
- 'stash' => 'If set, the server will not add the file to the repository and stash it temporarily.'
- );
+ 'filekey' => 'Key that identifies a previous upload that was stashed temporarily.',
+ 'sessionkey' => 'Same as filekey, maintained for backward compatibility.',
+ 'stash' => 'If set, the server will not add the file to the repository and stash it temporarily.',
- global $wgAllowAsyncCopyUploads;
- if ( $wgAllowAsyncCopyUploads ) {
- $params += array(
- 'asyncdownload' => 'Make fetching a URL asynchronous',
- 'leavemessage' => 'If asyncdownload is used, leave a message on the user talk page if finished',
- 'statuskey' => 'Fetch the upload status for this session key',
- );
- }
+ 'asyncdownload' => 'Make fetching a URL asynchronous',
+ 'leavemessage' => 'If asyncdownload is used, leave a message on the user talk page if finished',
+ 'statuskey' => 'Fetch the upload status for this file key',
+ );
return $params;
@@ -461,32 +516,32 @@ class ApiUpload extends ApiBase {
'Upload a file, or get the status of pending uploads. Several methods are available:',
' * Upload file contents directly, using the "file" parameter',
' * Have the MediaWiki server fetch a file from a URL, using the "url" parameter',
- ' * Complete an earlier upload that failed due to warnings, using the "sessionkey" parameter',
+ ' * Complete an earlier upload that failed due to warnings, using the "filekey" parameter',
'Note that the HTTP POST must be done as a file upload (i.e. using multipart/form-data) when',
- 'sending the "file". Note also that queries using session keys must be',
- 'done in the same login session as the query that originally returned the key (i.e. do not',
- 'log out and then log back in). Also you must get and send an edit token before doing any upload stuff'
+ 'sending the "file". Also you must get and send an edit token before doing any upload stuff'
);
}
public function getPossibleErrors() {
- return array_merge( parent::getPossibleErrors(), array(
- array( 'uploaddisabled' ),
- array( 'invalid-session-key' ),
- array( 'uploaddisabled' ),
- array( 'badaccess-groups' ),
- array( 'mustbeloggedin', 'upload' ),
- array( 'badaccess-groups' ),
- array( 'badaccess-groups' ),
- array( 'code' => 'fetchfileerror', 'info' => '' ),
- array( 'code' => 'nomodule', 'info' => 'No upload module set' ),
- array( 'code' => 'empty-file', 'info' => 'The file you submitted was empty' ),
- array( 'code' => 'filetype-missing', 'info' => 'The file is missing an extension' ),
- 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' => 'internal-error', 'info' => 'An internal error occurred' ),
- ) );
+ return array_merge( parent::getPossibleErrors(),
+ $this->getRequireOnlyOneParameterErrorMessages( array( 'filekey', 'file', 'url', 'statuskey' ) ),
+ array(
+ array( 'uploaddisabled' ),
+ array( 'invalid-file-key' ),
+ array( 'uploaddisabled' ),
+ array( 'mustbeloggedin', 'upload' ),
+ array( 'badaccess-groups' ),
+ array( 'code' => 'fetchfileerror', 'info' => '' ),
+ array( 'code' => 'nomodule', 'info' => 'No upload module set' ),
+ array( 'code' => 'empty-file', 'info' => 'The file you submitted was empty' ),
+ array( 'code' => 'filetype-missing', 'info' => 'The file is missing an extension' ),
+ 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' => 'internal-error', 'info' => 'An internal error occurred' ),
+ array( 'code' => 'asynccopyuploaddisabled', 'info' => 'Asynchronous copy uploads disabled' ),
+ )
+ );
}
public function needsToken() {
@@ -502,11 +557,15 @@ class ApiUpload extends ApiBase {
'Upload from a URL:',
' api.php?action=upload&filename=Wiki.png&url=http%3A//upload.wikimedia.org/wikipedia/en/b/bc/Wiki.png',
'Complete an upload that failed due to warnings:',
- ' api.php?action=upload&filename=Wiki.png&sessionkey=sessionkey&ignorewarnings=1',
+ ' api.php?action=upload&filename=Wiki.png&filekey=filekey&ignorewarnings=1',
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Upload';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiUpload.php 51812 2009-06-12 23:45:20Z dale $';
+ return __CLASS__ . ': $Id: ApiUpload.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiUserrights.php b/includes/api/ApiUserrights.php
index f9fe9ad2..93d4ef25 100644
--- a/includes/api/ApiUserrights.php
+++ b/includes/api/ApiUserrights.php
@@ -1,11 +1,11 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Mar 24, 2009
*
- * Copyright © 2009 Roan Kattouw <Firstname>.<Lastname>@home.nl
+ * Copyright © 2009 Roan Kattouw <Firstname>.<Lastname>@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
@@ -53,9 +53,10 @@ class ApiUserrights extends ApiBase {
$user, (array)$params['add'],
(array)$params['remove'], $params['reason'] );
- $this->getResult()->setIndexedTagName( $r['added'], 'group' );
- $this->getResult()->setIndexedTagName( $r['removed'], 'group' );
- $this->getResult()->addValue( null, $this->getModuleName(), $r );
+ $result = $this->getResult();
+ $result->setIndexedTagName( $r['added'], 'group' );
+ $result->setIndexedTagName( $r['removed'], 'group' );
+ $result->addValue( null, $this->getModuleName(), $r );
}
/**
@@ -138,7 +139,11 @@ class ApiUserrights extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:User_group_membership';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiUserrights.php 75602 2010-10-28 00:04:48Z reedy $';
+ return __CLASS__ . ': $Id: ApiUserrights.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/api/ApiWatch.php b/includes/api/ApiWatch.php
index e9560a4d..6fc55905 100644
--- a/includes/api/ApiWatch.php
+++ b/includes/api/ApiWatch.php
@@ -1,6 +1,6 @@
<?php
/**
- * API for MediaWiki 1.8+
+ *
*
* Created on Jan 4, 2008
*
@@ -49,40 +49,52 @@ class ApiWatch extends ApiBase {
$params = $this->extractRequestParams();
$title = Title::newFromText( $params['title'] );
- if ( !$title ) {
+ if ( !$title || $title->getNamespace() < 0 ) {
$this->dieUsageMsg( array( 'invalidtitle', $params['title'] ) );
}
- $article = new Article( $title );
+ $article = new Article( $title, 0 );
$res = array( 'title' => $title->getPrefixedText() );
if ( $params['unwatch'] ) {
$res['unwatched'] = '';
$res['message'] = wfMsgExt( 'removedwatchtext', array( 'parse' ), $title->getPrefixedText() );
- $success = $article->doUnwatch();
+ $success = WatchAction::doUnwatch( $title, $wgUser );
} else {
$res['watched'] = '';
$res['message'] = wfMsgExt( 'addedwatchtext', array( 'parse' ), $title->getPrefixedText() );
- $success = $article->doWatch();
+ $success = UnwatchAction::doWatch( $title, $wgUser );
}
if ( !$success ) {
- $this->dieUsageMsg( array( 'hookaborted' ) );
+ $this->dieUsageMsg( 'hookaborted' );
}
$this->getResult()->addValue( null, $this->getModuleName(), $res );
}
+ public function mustBePosted() {
+ return true;
+ }
+
public function isWriteMode() {
return true;
}
+ public function needsToken() {
+ return true;
+ }
+
+ public function getTokenSalt() {
+ return 'watch';
+ }
+
public function getAllowedParams() {
return array(
'title' => array(
ApiBase::PARAM_TYPE => 'string',
ApiBase::PARAM_REQUIRED => true
),
-
'unwatch' => false,
+ 'token' => null,
);
}
@@ -90,6 +102,7 @@ class ApiWatch extends ApiBase {
return array(
'title' => 'The page to (un)watch',
'unwatch' => 'If set the page will be unwatched rather than watched',
+ 'token' => 'A token previously acquired via prop=info',
);
}
@@ -112,7 +125,11 @@ class ApiWatch extends ApiBase {
);
}
+ public function getHelpUrls() {
+ return 'https://www.mediawiki.org/wiki/API:Watch';
+ }
+
public function getVersion() {
- return __CLASS__ . ': $Id: ApiWatch.php 77192 2010-11-23 22:05:27Z btongminh $';
+ return __CLASS__ . ': $Id: ApiWatch.php 104449 2011-11-28 15:52:04Z reedy $';
}
}
diff --git a/includes/CacheDependency.php b/includes/cache/CacheDependency.php
index 74ca2864..aa020664 100644
--- a/includes/CacheDependency.php
+++ b/includes/cache/CacheDependency.php
@@ -58,6 +58,10 @@ class DependencyWrapper {
/**
* Store the wrapper to a cache
+ *
+ * @param $cache BagOStuff
+ * @param $key
+ * @param $expiry
*/
function storeToCache( $cache, $key, $expiry = 0 ) {
$this->initialiseDeps();
@@ -69,7 +73,7 @@ class DependencyWrapper {
* it will be generated with the callback function (if present), and the newly
* calculated value will be stored to the cache in a wrapper.
*
- * @param $cache Object: a cache object such as $wgMemc
+ * @param $cache BagOStuff a cache object such as $wgMemc
* @param $key String: the cache key
* @param $expiry Integer: the expiry timestamp or interval in seconds
* @param $callback Mixed: the callback for generating the value, or false
@@ -156,6 +160,9 @@ class FileDependency extends CacheDependency {
}
}
+ /**
+ * @return bool
+ */
function isExpired() {
if ( !file_exists( $this->filename ) ) {
if ( $this->timestamp === false ) {
@@ -204,11 +211,16 @@ class TitleDependency extends CacheDependency {
/**
* Get rid of bulky Title object for sleep
+ *
+ * @return array
*/
function __sleep() {
return array( 'ns', 'dbk', 'touched' );
}
+ /**
+ * @return Title
+ */
function getTitle() {
if ( !isset( $this->titleObj ) ) {
$this->titleObj = Title::makeTitle( $this->ns, $this->dbk );
@@ -217,6 +229,9 @@ class TitleDependency extends CacheDependency {
return $this->titleObj;
}
+ /**
+ * @return bool
+ */
function isExpired() {
$touched = $this->getTitle()->getTouched();
@@ -292,6 +307,9 @@ class TitleListDependency extends CacheDependency {
$this->timestamps = $this->calculateTimestamps();
}
+ /**
+ * @return array
+ */
function __sleep() {
return array( 'timestamps' );
}
@@ -304,6 +322,9 @@ class TitleListDependency extends CacheDependency {
return $this->linkBatch;
}
+ /**
+ * @return bool
+ */
function isExpired() {
$newTimestamps = $this->calculateTimestamps();
@@ -345,6 +366,9 @@ class GlobalDependency extends CacheDependency {
$this->value = $GLOBALS[$name];
}
+ /**
+ * @return bool
+ */
function isExpired() {
return $GLOBALS[$this->name] != $this->value;
}
@@ -361,6 +385,9 @@ class ConstantDependency extends CacheDependency {
$this->value = constant( $name );
}
+ /**
+ * @return bool
+ */
function isExpired() {
return constant( $this->name ) != $this->value;
}
diff --git a/includes/HTMLCacheUpdate.php b/includes/cache/HTMLCacheUpdate.php
index f0456a22..d542800d 100644
--- a/includes/HTMLCacheUpdate.php
+++ b/includes/cache/HTMLCacheUpdate.php
@@ -18,14 +18,19 @@
* batches, but of course LIMIT with an offset is inefficient on the DB side.
*
* The class is nevertheless a vast improvement on the previous method of using
- * Image::getLinksTo() and Title::touchArray(), which uses about 2KB of memory per
+ * File::getLinksTo() and Title::touchArray(), which uses about 2KB of memory per
* link.
*
* @ingroup Cache
*/
class HTMLCacheUpdate
{
- public $mTitle, $mTable, $mPrefix, $mStart, $mEnd;
+ /**
+ * @var Title
+ */
+ public $mTitle;
+
+ public $mTable, $mPrefix, $mStart, $mEnd;
public $mRowsPerJob, $mRowsPerQuery;
function __construct( $titleTo, $table, $start = false, $end = false ) {
@@ -75,7 +80,7 @@ class HTMLCacheUpdate
$this->invalidateTitles( $titleArray );
} else {
# Partitioning was excessively inaccurate. Divide the job further.
- # This can occur when a large number of links are added in a short
+ # This can occur when a large number of links are added in a short
# period of time, say by updating a heavily-used template.
$this->insertJobsFromTitles( $titleArray );
}
@@ -85,6 +90,8 @@ class HTMLCacheUpdate
* Partition the current range given by $this->mStart and $this->mEnd,
* using a pre-calculated title array which gives the links in that range.
* Queue the resulting jobs.
+ *
+ * @param $titleArray array
*/
protected function insertJobsFromTitles( $titleArray ) {
# We make subpartitions in the sense that the start of the first job
@@ -95,7 +102,7 @@ class HTMLCacheUpdate
$numTitles = 0;
foreach ( $titleArray as $title ) {
$id = $title->getArticleID();
- # $numTitles is now the number of titles in the current job not
+ # $numTitles is now the number of titles in the current job not
# including the current ID
if ( $numTitles >= $this->mRowsPerJob ) {
# Add a job up to but not including the current ID
@@ -121,7 +128,7 @@ class HTMLCacheUpdate
if ( count( $jobs ) < 2 ) {
# I don't think this is possible at present, but handling this case
- # makes the code a bit more robust against future code updates and
+ # makes the code a bit more robust against future code updates and
# avoids a potential infinite loop of repartitioning
wfDebug( __METHOD__.": repartitioning failed!\n" );
$this->invalidateTitles( $titleArray );
@@ -149,15 +156,6 @@ class HTMLCacheUpdate
}
/**
- * Invalidate a range of pages, right now
- * @deprecated
- */
- public function invalidate( $startId = false, $endId = false ) {
- $titleArray = $this->mCache->getLinks( $this->mTable, $startId, $endId );
- $this->invalidateTitles( $titleArray );
- }
-
- /**
* Invalidate an array (or iterator) of Title objects, right now
*/
protected function invalidateTitles( $titleArray ) {
@@ -205,7 +203,7 @@ class HTMLCacheUpdate
/**
* Job wrapper for HTMLCacheUpdate. Gets run whenever a related
* job gets called from the queue.
- *
+ *
* @ingroup JobQueue
*/
class HTMLCacheUpdateJob extends Job {
diff --git a/includes/HTMLFileCache.php b/includes/cache/HTMLFileCache.php
index 26cb147d..1095da2c 100644
--- a/includes/HTMLFileCache.php
+++ b/includes/cache/HTMLFileCache.php
@@ -20,9 +20,14 @@
* @ingroup Cache
*/
class HTMLFileCache {
- var $mTitle, $mFileCache, $mType;
- public function __construct( &$title, $type = 'view' ) {
+ /**
+ * @var Title
+ */
+ var $mTitle;
+ var $mFileCache, $mType;
+
+ public function __construct( $title, $type = 'view' ) {
$this->mTitle = $title;
$this->mType = ($type == 'raw' || $type == 'view' ) ? $type : false;
$this->fileCacheName(); // init name
@@ -64,34 +69,42 @@ class HTMLFileCache {
}
public function isFileCached() {
- if( $this->mType === false ) return false;
+ if( $this->mType === false ) {
+ return false;
+ }
return file_exists( $this->fileCacheName() );
}
public function fileCacheTime() {
return wfTimestamp( TS_MW, filemtime( $this->fileCacheName() ) );
}
-
+
/**
* Check if pages can be cached for this request/user
* @return bool
*/
public static function useFileCache() {
global $wgUser, $wgUseFileCache, $wgShowIPinHeader, $wgRequest, $wgLang, $wgContLang;
- if( !$wgUseFileCache ) return false;
+ if( !$wgUseFileCache ) {
+ return false;
+ }
// Get all query values
$queryVals = $wgRequest->getValues();
foreach( $queryVals as $query => $val ) {
- if( $query == 'title' || $query == 'curid' ) continue;
+ if( $query == 'title' || $query == 'curid' ) {
+ continue;
// Normal page view in query form can have action=view.
// Raw hits for pages also stored, like .css pages for example.
- else if( $query == 'action' && ($val == 'view' || $val == 'raw') ) continue;
- else if( $query == 'usemsgcache' && $val == 'yes' ) continue;
+ } elseif( $query == 'action' && $val == 'view' ) {
+ continue;
+ } elseif( $query == 'usemsgcache' && $val == 'yes' ) {
+ continue;
// Below are header setting params
- else if( $query == 'maxage' || $query == 'smaxage' || $query == 'ctype' || $query == 'gen' )
+ } elseif( $query == 'maxage' || $query == 'smaxage' || $query == 'ctype' || $query == 'gen' ) {
continue;
- else
+ } else {
return false;
+ }
}
// Check for non-standard user language; this covers uselang,
// and extensions for auto-detecting user language.
@@ -101,14 +114,18 @@ class HTMLFileCache {
return !$wgShowIPinHeader && !$wgUser->getId() && !$wgUser->getNewtalk() && $ulang == $clang;
}
- /*
- * Check if up to date cache file exists
- * @param $timestamp string
- */
+ /**
+ * Check if up to date cache file exists
+ * @param $timestamp string
+ *
+ * @return bool
+ */
public function isFileCacheGood( $timestamp = '' ) {
global $wgCacheEpoch;
- if( !$this->isFileCached() ) return false;
+ if( !$this->isFileCached() ) {
+ return false;
+ }
$cachetime = $this->fileCacheTime();
$good = $timestamp <= $cachetime && $wgCacheEpoch <= $cachetime;
@@ -138,14 +155,14 @@ class HTMLFileCache {
/* Working directory to/from output */
public function loadFromFileCache() {
- global $wgOut, $wgMimeType, $wgOutputEncoding, $wgLanguageCode;
+ global $wgOut, $wgMimeType, $wgLanguageCode;
wfDebug( __METHOD__ . "()\n");
$filename = $this->fileCacheName();
// Raw pages should handle cache control on their own,
// even when using file cache. This reduces hits from clients.
if( $this->mType !== 'raw' ) {
$wgOut->sendCacheControl();
- header( "Content-Type: $wgMimeType; charset={$wgOutputEncoding}" );
+ header( "Content-Type: $wgMimeType; charset=UTF-8" );
header( "Content-Language: $wgLanguageCode" );
}
diff --git a/includes/LinkBatch.php b/includes/cache/LinkBatch.php
index e689f966..0bd869fc 100644
--- a/includes/LinkBatch.php
+++ b/includes/cache/LinkBatch.php
@@ -27,11 +27,16 @@ class LinkBatch {
* Use ->setCaller( __METHOD__ ) to indicate which code is using this
* class. Only used in debugging output.
* @since 1.17
+ *
+ * @param $caller
*/
public function setCaller( $caller ) {
$this->caller = $caller;
}
+ /**
+ * @param $title Title
+ */
public function addObj( $title ) {
if ( is_object( $title ) ) {
$this->add( $title->getNamespace(), $title->getDBkey() );
@@ -54,6 +59,8 @@ class LinkBatch {
/**
* Set the link list to a given 2-d array
* First key is the namespace, second is the DB key, value arbitrary
+ *
+ * @param $array array
*/
public function setArray( $array ) {
$this->data = $array;
@@ -61,6 +68,8 @@ class LinkBatch {
/**
* Returns true if no pages have been added, false otherwise.
+ *
+ * @return bool
*/
public function isEmpty() {
return ($this->getSize() == 0);
@@ -68,6 +77,8 @@ class LinkBatch {
/**
* Returns the size of the batch.
+ *
+ * @return int
*/
public function getSize() {
return count( $this->data );
@@ -77,10 +88,10 @@ class LinkBatch {
* Do the query and add the results to the LinkCache object
* Return an array mapping PDBK to ID
*/
- public function execute() {
- $linkCache = LinkCache::singleton();
- return $this->executeInto( $linkCache );
- }
+ public function execute() {
+ $linkCache = LinkCache::singleton();
+ return $this->executeInto( $linkCache );
+ }
/**
* Do the query and add the results to a given LinkCache object
@@ -90,6 +101,7 @@ class LinkBatch {
wfProfileIn( __METHOD__ );
$res = $this->doQuery();
$ids = $this->addResultToCache( $cache, $res );
+ $this->doGenderQuery();
wfProfileOut( __METHOD__ );
return $ids;
}
@@ -99,6 +111,9 @@ class LinkBatch {
* As normal, titles will go into the static Title cache field.
* This function *also* stores extra fields of the title used for link
* parsing to avoid extra DB queries.
+ *
+ * @param $cache
+ * @param $res
*/
public function addResultToCache( $cache, $res ) {
if ( !$res ) {
@@ -153,6 +168,20 @@ class LinkBatch {
return $res;
}
+ public function doGenderQuery() {
+ if ( $this->isEmpty() ) {
+ return false;
+ }
+
+ global $wgContLang;
+ if ( !$wgContLang->needsGenderDistinction() ) {
+ return false;
+ }
+
+ $genderCache = GenderCache::singleton();
+ $genderCache->dolinkBatch( $this->data, $this->caller );
+ }
+
/**
* Construct a WHERE clause which will match all the given titles.
*
diff --git a/includes/LinkCache.php b/includes/cache/LinkCache.php
index dce34592..aeb10eb0 100644
--- a/includes/LinkCache.php
+++ b/includes/cache/LinkCache.php
@@ -7,13 +7,15 @@
class LinkCache {
// Increment $mClassVer whenever old serialized versions of this class
// becomes incompatible with the new version.
- /* private */ var $mClassVer = 4;
+ private $mClassVer = 4;
- /* private */ var $mGoodLinks, $mBadLinks;
- /* private */ var $mForUpdate;
+ private $mGoodLinks, $mBadLinks;
+ private $mForUpdate;
/**
* Get an instance of this class
+ *
+ * @return LinkCache
*/
static function &singleton() {
static $instance;
@@ -32,11 +34,17 @@ class LinkCache {
/**
* General accessor to get/set whether SELECT FOR UPDATE should be used
+ *
+ * @return bool
*/
public function forUpdate( $update = null ) {
return wfSetVar( $this->mForUpdate, $update );
}
+ /**
+ * @param $title
+ * @return array|int
+ */
public function getGoodLinkID( $title ) {
if ( array_key_exists( $title, $this->mGoodLinks ) ) {
return $this->mGoodLinks[$title];
@@ -61,6 +69,10 @@ class LinkCache {
}
}
+ /**
+ * @param $title
+ * @return bool
+ */
public function isBadLink( $title ) {
return array_key_exists( $title, $this->mBadLinks );
}
@@ -83,6 +95,9 @@ class LinkCache {
'revision' => intval( $revision ) );
}
+ /**
+ * @param $title Title
+ */
public function addBadLinkObj( $title ) {
$dbkey = $title->getPrefixedDbKey();
if ( !$this->isBadLink( $dbkey ) ) {
@@ -94,6 +109,9 @@ class LinkCache {
unset( $this->mBadLinks[$title] );
}
+ /**
+ * @param $title Title
+ */
public function clearLink( $title ) {
$dbkey = $title->getPrefixedDbKey();
if( isset($this->mBadLinks[$dbkey]) ) {
@@ -136,7 +154,7 @@ class LinkCache {
wfProfileIn( __METHOD__ );
$key = $nt->getPrefixedDBkey();
- if ( $this->isBadLink( $key ) ) {
+ if ( $this->isBadLink( $key ) || $nt->isExternal() ) {
wfProfileOut( __METHOD__ );
return 0;
}
@@ -150,7 +168,7 @@ class LinkCache {
wfProfileOut( __METHOD__ );
return 0;
}
-
+
# Some fields heavily used for linking...
if ( $this->mForUpdate ) {
$db = wfGetDB( DB_MASTER );
@@ -164,7 +182,7 @@ class LinkCache {
$options = array();
}
- $s = $db->selectRow( 'page',
+ $s = $db->selectRow( 'page',
array( 'page_id', 'page_len', 'page_is_redirect', 'page_latest' ),
array( 'page_namespace' => $nt->getNamespace(), 'page_title' => $nt->getDBkey() ),
__METHOD__, $options );
diff --git a/includes/MemcachedSessions.php b/includes/cache/MemcachedSessions.php
index 4f10f99c..36733595 100644
--- a/includes/MemcachedSessions.php
+++ b/includes/cache/MemcachedSessions.php
@@ -92,4 +92,7 @@ function memsess_gc( $maxlifetime ) {
return true;
}
-session_set_save_handler( 'memsess_open', 'memsess_close', 'memsess_read', 'memsess_write', 'memsess_destroy', 'memsess_gc' );
+function memsess_write_close() {
+ session_write_close();
+}
+
diff --git a/includes/MessageCache.php b/includes/cache/MessageCache.php
index a111211f..79883844 100644
--- a/includes/MessageCache.php
+++ b/includes/cache/MessageCache.php
@@ -7,9 +7,9 @@
/**
*
*/
-define( 'MSG_LOAD_TIMEOUT', 60);
-define( 'MSG_LOCK_TIMEOUT', 10);
-define( 'MSG_WAIT_TIMEOUT', 10);
+define( 'MSG_LOAD_TIMEOUT', 60 );
+define( 'MSG_LOCK_TIMEOUT', 10 );
+define( 'MSG_WAIT_TIMEOUT', 10 );
define( 'MSG_CACHE_VERSION', 1 );
/**
@@ -42,6 +42,61 @@ class MessageCache {
/// Variable for tracking which variables are already loaded
protected $mLoadedLanguages = array();
+ /**
+ * Used for automatic detection of most used messages.
+ */
+ protected $mRequestedMessages = array();
+
+ /**
+ * How long the message request counts are stored. Longer period gives
+ * better sample, but also takes longer to adapt changes. The counts
+ * are aggregrated per day, regardless of the value of this variable.
+ */
+ protected static $mAdaptiveDataAge = 604800; // Is 7*24*3600
+
+ /**
+ * Filter the tail of less used messages that are requested more seldom
+ * than this factor times the number of request of most requested message.
+ * These messages are not loaded in the default set, but are still cached
+ * individually on demand with the normal cache expiry time.
+ */
+ protected static $mAdaptiveInclusionThreshold = 0.05;
+
+ /**
+ * Singleton instance
+ *
+ * @var MessageCache
+ */
+ private static $instance;
+
+ /**
+ * @var bool
+ */
+ protected $mInParser = false;
+
+ /**
+ * Get the signleton instance of this class
+ *
+ * @since 1.18
+ * @return MessageCache object
+ */
+ public static function singleton() {
+ if ( is_null( self::$instance ) ) {
+ global $wgUseDatabaseMessages, $wgMsgCacheExpiry;
+ self::$instance = new self( wfGetMessageCacheStorage(), $wgUseDatabaseMessages, $wgMsgCacheExpiry );
+ }
+ return self::$instance;
+ }
+
+ /**
+ * Destroy the singleton instance
+ *
+ * @since 1.18
+ */
+ public static function destroyInstance() {
+ self::$instance = null;
+ }
+
function __construct( $memCached, $useDB, $expiry ) {
if ( !$memCached ) {
$memCached = wfGetCache( CACHE_NONE );
@@ -52,9 +107,10 @@ class MessageCache {
$this->mExpiry = $expiry;
}
-
/**
* ParserOptions is lazy initialised.
+ *
+ * @return ParserOptions
*/
function getParserOptions() {
if ( !$this->mParserOptions ) {
@@ -101,9 +157,9 @@ class MessageCache {
return false; // Wrong hash
}
} else {
- $localHash=substr(fread($file,40),8);
- fclose($file);
- if ($hash!=$localHash) {
+ $localHash = substr( fread( $file, 40 ), 8 );
+ fclose( $file );
+ if ( $hash != $localHash ) {
return false; // Wrong hash
}
@@ -133,7 +189,9 @@ class MessageCache {
fwrite( $file, $hash . $serialized );
fclose( $file );
- @chmod( $filename, 0666 );
+ wfSuppressWarnings();
+ chmod( $filename, 0666 );
+ wfRestoreWarnings();
}
function saveToScript( $array, $hash, $code ) {
@@ -141,10 +199,10 @@ class MessageCache {
$filename = "$wgCacheDirectory/messages-" . wfWikiID() . "-$code";
$tempFilename = $filename . '.tmp';
- wfMkdirParents( $wgCacheDirectory ); // might fail
+ wfMkdirParents( $wgCacheDirectory ); // might fail
wfSuppressWarnings();
- $file = fopen( $tempFilename, 'w');
+ $file = fopen( $tempFilename, 'w' );
wfRestoreWarnings();
if ( !$file ) {
@@ -152,20 +210,20 @@ class MessageCache {
return;
}
- fwrite($file,"<?php\n//$hash\n\n \$this->mCache = array(");
+ fwrite( $file, "<?php\n//$hash\n\n \$this->mCache = array(" );
foreach ( $array as $key => $message ) {
- $key = $this->escapeForScript($key);
- $message = $this->escapeForScript($message);
- fwrite($file, "'$key' => '$message',\n");
+ $key = $this->escapeForScript( $key );
+ $message = $this->escapeForScript( $message );
+ fwrite( $file, "'$key' => '$message',\n" );
}
- fwrite($file,");\n?>");
- fclose($file);
- rename($tempFilename, $filename);
+ fwrite( $file, ");\n?>" );
+ fclose( $file);
+ rename( $tempFilename, $filename );
}
- function escapeForScript($string) {
+ function escapeForScript( $string ) {
$string = str_replace( '\\', '\\\\', $string );
$string = str_replace( '\'', '\\\'', $string );
return $string;
@@ -173,6 +231,8 @@ class MessageCache {
/**
* Set the cache to $cache, if it is valid. Otherwise set the cache to false.
+ *
+ * @return bool
*/
function setCache( $cache, $code ) {
if ( isset( $cache['VERSION'] ) && $cache['VERSION'] == MSG_CACHE_VERSION ) {
@@ -212,7 +272,9 @@ class MessageCache {
}
# Don't do double loading...
- if ( isset($this->mLoadedLanguages[$code]) ) return true;
+ if ( isset( $this->mLoadedLanguages[$code] ) ) {
+ return true;
+ }
# 8 lines of code just to say (once) that message cache is disabled
if ( $this->mDisable ) {
@@ -230,7 +292,6 @@ class MessageCache {
$where = array(); # Debug info, delayed to avoid spamming debug log too much
$cacheKey = wfMemcKey( 'messages', $code ); # Key in memc for messages
-
# (1) local cache
# Hash of the contents is stored in memcache, to detect if local cache goes
# out of date (due to update in other thread?)
@@ -258,14 +319,13 @@ class MessageCache {
wfProfileOut( __METHOD__ . '-fromcache' );
}
-
# (3)
# Nothing in caches... so we need create one and store it in caches
if ( !$success ) {
$where[] = 'cache is empty';
$where[] = 'loading from database';
- $this->lock($cacheKey);
+ $this->lock( $cacheKey );
# Limit the concurrency of loadFromDB to a single process
# This prevents the site from going down when the cache expires
@@ -280,7 +340,7 @@ class MessageCache {
if ( $success ) {
$this->mMemc->delete( $statusKey );
} else {
- $this->mMemc->set( $statusKey, 'error', 60*5 );
+ $this->mMemc->set( $statusKey, 'error', 60 * 5 );
wfDebug( "MemCached set error in MessageCache: restart memcached server!\n" );
}
}
@@ -309,12 +369,12 @@ class MessageCache {
* $wgMaxMsgCacheEntrySize are assigned a special value, and are loaded
* on-demand from the database later.
*
- * @param $code Optional language code, see documenation of load().
- * @return Array: Loaded messages for storing in caches.
+ * @param $code String: language code.
+ * @return Array: loaded messages for storing in caches.
*/
- function loadFromDB( $code = false ) {
+ function loadFromDB( $code ) {
wfProfileIn( __METHOD__ );
- global $wgMaxMsgCacheEntrySize, $wgContLanguageCode;
+ global $wgMaxMsgCacheEntrySize, $wgLanguageCode, $wgAdaptiveMessageCache;
$dbr = wfGetDB( DB_SLAVE );
$cache = array();
@@ -324,19 +384,26 @@ class MessageCache {
'page_namespace' => NS_MEDIAWIKI,
);
- if ( $code ) {
- # Is this fast enough. Should not matter if the filtering is done in the
- # database or in code.
- if ( $code !== $wgContLanguageCode ) {
- # Messages for particular language
- $conds[] = 'page_title' . $dbr->buildLike( $dbr->anyString(), "/$code" );
- } else {
- # Effectively disallows use of '/' character in NS_MEDIAWIKI for uses
- # other than language code.
- $conds[] = 'page_title NOT' . $dbr->buildLike( $dbr->anyString(), '/', $dbr->anyString() );
+ $mostused = array();
+ if ( $wgAdaptiveMessageCache ) {
+ $mostused = $this->getMostUsedMessages();
+ if ( $code !== $wgLanguageCode ) {
+ foreach ( $mostused as $key => $value ) {
+ $mostused[$key] = "$value/$code";
+ }
}
}
+ if ( count( $mostused ) ) {
+ $conds['page_title'] = $mostused;
+ } elseif ( $code !== $wgLanguageCode ) {
+ $conds[] = 'page_title' . $dbr->buildLike( $dbr->anyString(), "/$code" );
+ } else {
+ # Effectively disallows use of '/' character in NS_MEDIAWIKI for uses
+ # other than language code.
+ $conds[] = 'page_title NOT' . $dbr->buildLike( $dbr->anyString(), '/', $dbr->anyString() );
+ }
+
# Conditions to fetch oversized pages to ignore them
$bigConds = $conds;
$bigConds[] = 'page_len > ' . intval( $wgMaxMsgCacheEntrySize );
@@ -353,12 +420,30 @@ class MessageCache {
$smallConds[] = 'rev_text_id=old_id';
$smallConds[] = 'page_len <= ' . intval( $wgMaxMsgCacheEntrySize );
- $res = $dbr->select( array( 'page', 'revision', 'text' ),
+ $res = $dbr->select(
+ array( 'page', 'revision', 'text' ),
array( 'page_title', 'old_text', 'old_flags' ),
- $smallConds, __METHOD__ . "($code)-small" );
+ $smallConds,
+ __METHOD__ . "($code)-small"
+ );
foreach ( $res as $row ) {
- $cache[$row->page_title] = ' ' . Revision::getRevisionText( $row );
+ $text = Revision::getRevisionText( $row );
+ if( $text === false ) {
+ // Failed to fetch data; possible ES errors?
+ // Store a marker to fetch on-demand as a workaround...
+ $entry = '!TOO BIG';
+ wfDebugLog( 'MessageCache', __METHOD__ . ": failed to load message page text for {$row->page_title} ($code)" );
+ } else {
+ $entry = ' ' . $text;
+ }
+ $cache[$row->page_title] = $entry;
+ }
+
+ foreach ( $mostused as $key ) {
+ if ( !isset( $cache[$key] ) ) {
+ $cache[$key] = '!NONEXISTENT';
+ }
}
$cache['VERSION'] = MSG_CACHE_VERSION;
@@ -384,34 +469,29 @@ class MessageCache {
list( $msg, $code ) = $this->figureMessage( $title );
$cacheKey = wfMemcKey( 'messages', $code );
- $this->load($code);
- $this->lock($cacheKey);
-
- if ( is_array($this->mCache[$code]) ) {
- $titleKey = wfMemcKey( 'messages', 'individual', $title );
-
- if ( $text === false ) {
- # Article was deleted
- unset( $this->mCache[$code][$title] );
- $this->mMemc->delete( $titleKey );
-
- } elseif ( strlen( $text ) > $wgMaxMsgCacheEntrySize ) {
- # Check for size
- $this->mCache[$code][$title] = '!TOO BIG';
- $this->mMemc->set( $titleKey, ' ' . $text, $this->mExpiry );
+ $this->load( $code );
+ $this->lock( $cacheKey );
- } else {
- $this->mCache[$code][$title] = ' ' . $text;
- $this->mMemc->delete( $titleKey );
- }
+ $titleKey = wfMemcKey( 'messages', 'individual', $title );
- # Update caches
- $this->saveToCaches( $this->mCache[$code], true, $code );
+ if ( $text === false ) {
+ # Article was deleted
+ $this->mCache[$code][$title] = '!NONEXISTENT';
+ $this->mMemc->delete( $titleKey );
+ } elseif ( strlen( $text ) > $wgMaxMsgCacheEntrySize ) {
+ # Check for size
+ $this->mCache[$code][$title] = '!TOO BIG';
+ $this->mMemc->set( $titleKey, ' ' . $text, $this->mExpiry );
+ } else {
+ $this->mCache[$code][$title] = ' ' . $text;
+ $this->mMemc->delete( $titleKey );
}
- $this->unlock($cacheKey);
+
+ # Update caches
+ $this->saveToCaches( $this->mCache[$code], true, $code );
+ $this->unlock( $cacheKey );
// Also delete cached sidebar... just in case it is affected
- global $parserMemc;
$codes = array( $code );
if ( $code === 'en' ) {
// Delete all sidebars, like for example on action=purge on the
@@ -419,16 +499,17 @@ class MessageCache {
$codes = array_keys( Language::getLanguageNames() );
}
+ global $parserMemc;
foreach ( $codes as $code ) {
$sidebarKey = wfMemcKey( 'sidebar', $code );
$parserMemc->delete( $sidebarKey );
}
-
+
// Update the message in the message blob store
global $wgContLang;
MessageBlobStore::updateMessage( $wgContLang->lcfirst( $msg ) );
- wfRunHooks( "MessageCacheReplace", array( $title, $text ) );
+ wfRunHooks( 'MessageCacheReplace', array( $title, $text ) );
wfProfileOut( __METHOD__ );
}
@@ -474,16 +555,16 @@ class MessageCache {
*
* @return Boolean: success
*/
- function lock($key) {
+ function lock( $key ) {
$lockKey = $key . ':lock';
- for ($i=0; $i < MSG_WAIT_TIMEOUT && !$this->mMemc->add( $lockKey, 1, MSG_LOCK_TIMEOUT ); $i++ ) {
- sleep(1);
+ for ( $i = 0; $i < MSG_WAIT_TIMEOUT && !$this->mMemc->add( $lockKey, 1, MSG_LOCK_TIMEOUT ); $i++ ) {
+ sleep( 1 );
}
return $i >= MSG_WAIT_TIMEOUT;
}
- function unlock($key) {
+ function unlock( $key ) {
$lockKey = $key . ':lock';
$this->mMemc->delete( $lockKey );
}
@@ -508,8 +589,13 @@ class MessageCache {
function get( $key, $useDB = true, $langcode = true, $isFullKey = false ) {
global $wgLanguageCode, $wgContLang;
+ if ( is_int( $key ) ) {
+ // "Non-string key given" exception sometimes happens for numerical strings that become ints somewhere on their way here
+ $key = strval( $key );
+ }
+
if ( !is_string( $key ) ) {
- throw new MWException( "Non-string key given" );
+ throw new MWException( 'Non-string key given' );
}
if ( strval( $key ) === '' ) {
@@ -536,10 +622,17 @@ class MessageCache {
$uckey = $wgContLang->ucfirst( $lckey );
}
+ /**
+ * Record each message request, but only once per request.
+ * This information is not used unless $wgAdaptiveMessageCache
+ * is enabled.
+ */
+ $this->mRequestedMessages[$uckey] = true;
+
# Try the MediaWiki namespace
if( !$this->mDisable && $useDB ) {
$title = $uckey;
- if(!$isFullKey && ( $langcode != $wgLanguageCode ) ) {
+ if( !$isFullKey && ( $langcode != $wgLanguageCode ) ) {
$title .= '/' . $langcode;
}
$message = $this->getMsgFromNamespace( $title, $langcode );
@@ -568,9 +661,9 @@ class MessageCache {
}
# Is this a custom message? Try the default language in the db...
- if( ($message === false || $message === '-' ) &&
+ if( ( $message === false || $message === '-' ) &&
!$this->mDisable && $useDB &&
- !$isFullKey && ($langcode != $wgLanguageCode) ) {
+ !$isFullKey && ( $langcode != $wgLanguageCode ) ) {
$message = $this->getMsgFromNamespace( $uckey, $wgLanguageCode );
}
@@ -600,37 +693,46 @@ class MessageCache {
* @param $code String: code denoting the language to try.
*/
function getMsgFromNamespace( $title, $code ) {
- $type = false;
- $message = false;
+ global $wgAdaptiveMessageCache;
$this->load( $code );
if ( isset( $this->mCache[$code][$title] ) ) {
$entry = $this->mCache[$code][$title];
- $type = substr( $entry, 0, 1 );
- if ( $type == ' ' ) {
+ if ( substr( $entry, 0, 1 ) === ' ' ) {
return substr( $entry, 1 );
+ } elseif ( $entry === '!NONEXISTENT' ) {
+ return false;
+ } elseif( $entry === '!TOO BIG' ) {
+ // Fall through and try invididual message cache below
+ }
+ } else {
+ // XXX: This is not cached in process cache, should it?
+ $message = false;
+ wfRunHooks( 'MessagesPreLoad', array( $title, &$message ) );
+ if ( $message !== false ) {
+ return $message;
}
- }
- # Call message hooks, in case they are defined
- wfRunHooks('MessagesPreLoad', array( $title, &$message ) );
- if ( $message !== false ) {
- return $message;
+ /**
+ * If message cache is in normal mode, it is guaranteed
+ * (except bugs) that there is always entry (or placeholder)
+ * in the cache if message exists. Thus we can do minor
+ * performance improvement and return false early.
+ */
+ if ( !$wgAdaptiveMessageCache ) {
+ return false;
+ }
}
- $titleKey = wfMemcKey( 'messages', 'individual', $title );
-
# Try the individual message cache
+ $titleKey = wfMemcKey( 'messages', 'individual', $title );
$entry = $this->mMemc->get( $titleKey );
if ( $entry ) {
- $type = substr( $entry, 0, 1 );
-
- if ( $type === ' ' ) {
- # Ok!
- $message = substr( $entry, 1 );
+ if ( substr( $entry, 0, 1 ) === ' ' ) {
$this->mCache[$code][$title] = $entry;
- return $message;
+ return substr( $entry, 1 );
} elseif ( $entry === '!NONEXISTENT' ) {
+ $this->mCache[$code][$title] = '!NONEXISTENT';
return false;
} else {
# Corrupt/obsolete entry, delete it
@@ -638,27 +740,62 @@ class MessageCache {
}
}
- # Try loading it from the DB
+ # Try loading it from the database
$revision = Revision::newFromTitle( Title::makeTitle( NS_MEDIAWIKI, $title ) );
- if( $revision ) {
+ if ( $revision ) {
$message = $revision->getText();
- $this->mCache[$code][$title] = ' ' . $message;
- $this->mMemc->set( $titleKey, ' ' . $message, $this->mExpiry );
+ if ($message === false) {
+ // A possibly temporary loading failure.
+ wfDebugLog( 'MessageCache', __METHOD__ . ": failed to load message page text for {$title->getDbKey()} ($code)" );
+ } else {
+ $this->mCache[$code][$title] = ' ' . $message;
+ $this->mMemc->set( $titleKey, ' ' . $message, $this->mExpiry );
+ }
} else {
- # Negative caching
- # Use some special text instead of false, because false gets converted to '' somewhere
+ $message = false;
+ $this->mCache[$code][$title] = '!NONEXISTENT';
$this->mMemc->set( $titleKey, '!NONEXISTENT', $this->mExpiry );
- $this->mCache[$code][$title] = false;
}
+
return $message;
}
- function transform( $message, $interface = false, $language = null ) {
+ /**
+ * @param $message string
+ * @param $interface bool
+ * @param $language
+ * @param $title Title
+ * @return string
+ */
+ function transform( $message, $interface = false, $language = null, $title = null ) {
// Avoid creating parser if nothing to transform
if( strpos( $message, '{{' ) === false ) {
return $message;
}
+ if ( $this->mInParser ) {
+ return $message;
+ }
+
+ $parser = $this->getParser();
+ if ( $parser ) {
+ $popts = $this->getParserOptions();
+ $popts->setInterfaceMessage( $interface );
+ $popts->setTargetLanguage( $language );
+
+ $userlang = $popts->setUserLang( $language );
+ $this->mInParser = true;
+ $message = $parser->transformMsg( $message, $popts, $title );
+ $this->mInParser = false;
+ $popts->setUserLang( $userlang );
+ }
+ return $message;
+ }
+
+ /**
+ * @return Parser
+ */
+ function getParser() {
global $wgParser, $wgParserConf;
if ( !$this->mParser && isset( $wgParser ) ) {
# Do some initialisation so that we don't have to do it twice
@@ -671,35 +808,60 @@ class MessageCache {
} else {
$this->mParser = clone $wgParser;
}
- #wfDebug( __METHOD__ . ": following contents triggered transform: $message\n" );
}
- if ( $this->mParser ) {
- $popts = $this->getParserOptions();
- $popts->setInterfaceMessage( $interface );
+ return $this->mParser;
+ }
+
+ /**
+ * @param $text string
+ * @param $string Title|string
+ * @param $title Title
+ * @param $interface bool
+ * @param $linestart bool
+ * @param $language
+ * @return ParserOutput
+ */
+ public function parse( $text, $title = null, $linestart = true, $interface = false, $language = null ) {
+ if ( $this->mInParser ) {
+ return htmlspecialchars( $text );
+ }
+
+ $parser = $this->getParser();
+ $popts = $this->getParserOptions();
+
+ if ( $interface ) {
+ $popts->setInterfaceMessage( true );
+ }
+ if ( $language !== null ) {
$popts->setTargetLanguage( $language );
- $userlang = $popts->setUserLang( $language );
- $message = $this->mParser->transformMsg( $message, $popts );
- $popts->setUserLang( $userlang );
}
- return $message;
- }
- function disable() { $this->mDisable = true; }
- function enable() { $this->mDisable = false; }
+ wfProfileIn( __METHOD__ );
+ if ( !$title || !$title instanceof Title ) {
+ global $wgTitle;
+ $title = $wgTitle;
+ }
+ // Sometimes $wgTitle isn't set either...
+ if ( !$title ) {
+ # It's not uncommon having a null $wgTitle in scripts. See r80898
+ # Create a ghost title in such case
+ $title = Title::newFromText( 'Dwimmerlaik' );
+ }
+
+ $this->mInParser = true;
+ $res = $parser->parse( $text, $title, $popts, $linestart );
+ $this->mInParser = false;
- /** @deprecated */
- function disableTransform(){
- wfDeprecated( __METHOD__ );
- }
- function enableTransform() {
- wfDeprecated( __METHOD__ );
+ wfProfileOut( __METHOD__ );
+ return $res;
}
- function setTransform( $x ) {
- wfDeprecated( __METHOD__ );
+
+ function disable() {
+ $this->mDisable = true;
}
- function getTransform() {
- wfDeprecated( __METHOD__ );
- return false;
+
+ function enable() {
+ $this->mDisable = false;
}
/**
@@ -716,77 +878,94 @@ class MessageCache {
$this->mLoadedLanguages = array();
}
- /**
- * Add a message to the cache
- * @deprecated Use $wgExtensionMessagesFiles
- *
- * @param $key Mixed
- * @param $value Mixed
- * @param $lang String: the messages language, English by default
- */
- function addMessage( $key, $value, $lang = 'en' ) {
- wfDeprecated( __METHOD__ );
- $lc = Language::getLocalisationCache();
- $lc->addLegacyMessages( array( $lang => array( $key => $value ) ) );
- }
-
- /**
- * Add an associative array of message to the cache
- * @deprecated Use $wgExtensionMessagesFiles
- *
- * @param $messages Array: an associative array of key => values to be added
- * @param $lang String: the messages language, English by default
- */
- function addMessages( $messages, $lang = 'en' ) {
- wfDeprecated( __METHOD__ );
- $lc = Language::getLocalisationCache();
- $lc->addLegacyMessages( array( $lang => $messages ) );
- }
-
- /**
- * Add a 2-D array of messages by lang. Useful for extensions.
- * @deprecated Use $wgExtensionMessagesFiles
- *
- * @param $messages Array: the array to be added
- */
- function addMessagesByLang( $messages ) {
- wfDeprecated( __METHOD__ );
- $lc = Language::getLocalisationCache();
- $lc->addLegacyMessages( $messages );
- }
-
- /**
- * Set a hook for addMessagesByLang()
- */
- function setExtensionMessagesHook( $callback ) {
- $this->mAddMessagesHook = $callback;
- }
-
- /**
- * @deprecated
- */
- function loadAllMessages( $lang = false ) {
- }
-
- /**
- * @deprecated
- */
- function loadMessagesFile( $filename, $langcode = false ) {
- }
-
public function figureMessage( $key ) {
global $wgLanguageCode;
$pieces = explode( '/', $key );
- if( count( $pieces ) < 2 )
+ if( count( $pieces ) < 2 ) {
return array( $key, $wgLanguageCode );
+ }
$lang = array_pop( $pieces );
$validCodes = Language::getLanguageNames();
- if( !array_key_exists( $lang, $validCodes ) )
+ if( !array_key_exists( $lang, $validCodes ) ) {
return array( $key, $wgLanguageCode );
+ }
$message = implode( '/', $pieces );
return array( $message, $lang );
}
+ public static function logMessages() {
+ wfProfileIn( __METHOD__ );
+ global $wgAdaptiveMessageCache;
+ if ( !$wgAdaptiveMessageCache || !self::$instance instanceof MessageCache ) {
+ wfProfileOut( __METHOD__ );
+ return;
+ }
+
+ $cachekey = wfMemckey( 'message-profiling' );
+ $cache = wfGetCache( CACHE_DB );
+ $data = $cache->get( $cachekey );
+
+ if ( !$data ) {
+ $data = array();
+ }
+
+ $age = self::$mAdaptiveDataAge;
+ $filterDate = substr( wfTimestamp( TS_MW, time() - $age ), 0, 8 );
+ foreach ( array_keys( $data ) as $key ) {
+ if ( $key < $filterDate ) {
+ unset( $data[$key] );
+ }
+ }
+
+ $index = substr( wfTimestampNow(), 0, 8 );
+ if ( !isset( $data[$index] ) ) {
+ $data[$index] = array();
+ }
+
+ foreach ( self::$instance->mRequestedMessages as $message => $_ ) {
+ if ( !isset( $data[$index][$message] ) ) {
+ $data[$index][$message] = 0;
+ }
+ $data[$index][$message]++;
+ }
+
+ $cache->set( $cachekey, $data );
+ wfProfileOut( __METHOD__ );
+ }
+
+ public function getMostUsedMessages() {
+ wfProfileIn( __METHOD__ );
+ $cachekey = wfMemcKey( 'message-profiling' );
+ $cache = wfGetCache( CACHE_DB );
+ $data = $cache->get( $cachekey );
+ if ( !$data ) {
+ wfProfileOut( __METHOD__ );
+ return array();
+ }
+
+ $list = array();
+
+ foreach( $data as $messages ) {
+ foreach( $messages as $message => $count ) {
+ $key = $message;
+ if ( !isset( $list[$key] ) ) {
+ $list[$key] = 0;
+ }
+ $list[$key] += $count;
+ }
+ }
+
+ $max = max( $list );
+ foreach ( $list as $message => $count ) {
+ if ( $count < intval( $max * self::$mAdaptiveInclusionThreshold ) ) {
+ unset( $list[$message] );
+ }
+ }
+
+ wfProfileOut( __METHOD__ );
+ return array_keys( $list );
+ }
+
}
diff --git a/includes/SquidUpdate.php b/includes/cache/SquidUpdate.php
index 31f7aa68..d47b5b5e 100644
--- a/includes/SquidUpdate.php
+++ b/includes/cache/SquidUpdate.php
@@ -25,6 +25,11 @@ class SquidUpdate {
$this->urlArr = $urlArr;
}
+ /**
+ * @param $title Title
+ *
+ * @return SquidUpdate
+ */
static function newFromLinksTo( &$title ) {
global $wgMaxSquidPurgeTitles;
wfProfileIn( __METHOD__ );
@@ -52,6 +57,11 @@ class SquidUpdate {
/**
* Create a SquidUpdate from an array of Title objects, or a TitleArray object
+ *
+ * @param $titles array
+ * @param $urlArr array
+ *
+ * @return SquidUpdate
*/
static function newFromTitles( $titles, $urlArr = array() ) {
global $wgMaxSquidPurgeTitles;
@@ -65,20 +75,32 @@ class SquidUpdate {
return new SquidUpdate( $urlArr );
}
+ /**
+ * @param $title Title
+ *
+ * @return SquidUpdate
+ */
static function newSimplePurge( &$title ) {
$urlArr = $title->getSquidURLs();
return new SquidUpdate( $urlArr );
}
+ /**
+ * Purges the list of URLs passed to the constructor
+ */
function doUpdate() {
SquidUpdate::purge( $this->urlArr );
}
- /* Purges a list of Squids defined in $wgSquidServers.
- $urlArr should contain the full URLs to purge as values
- (example: $urlArr[] = 'http://my.host/something')
- XXX report broken Squids per mail or log */
-
+ /**
+ * Purges a list of Squids defined in $wgSquidServers.
+ * $urlArr should contain the full URLs to purge as values
+ * (example: $urlArr[] = 'http://my.host/something')
+ * XXX report broken Squids per mail or log
+ *
+ * @param $urlArr array
+ * @return void
+ */
static function purge( $urlArr ) {
global $wgSquidServers, $wgHTCPMulticastAddress, $wgHTCPPort;
@@ -92,7 +114,7 @@ class SquidUpdate {
}
if ( $wgHTCPMulticastAddress && $wgHTCPPort ) {
- return SquidUpdate::HTCPPurge( $urlArr );
+ SquidUpdate::HTCPPurge( $urlArr );
}
wfProfileIn( __METHOD__ );
@@ -120,13 +142,17 @@ class SquidUpdate {
wfProfileOut( __METHOD__ );
}
+ /**
+ * @throws MWException
+ * @param $urlArr array
+ */
static function HTCPPurge( $urlArr ) {
global $wgHTCPMulticastAddress, $wgHTCPMulticastTTL, $wgHTCPPort;
wfProfileIn( __METHOD__ );
- $htcpOpCLR = 4; // HTCP CLR
+ $htcpOpCLR = 4; // HTCP CLR
- // FIXME PHP doesn't support these socket constants (include/linux/in.h)
+ // @todo FIXME: PHP doesn't support these socket constants (include/linux/in.h)
if( !defined( "IPPROTO_IP" ) ) {
define( "IPPROTO_IP", 0 );
define( "IP_MULTICAST_LOOP", 34 );
@@ -190,13 +216,11 @@ class SquidUpdate {
*
* Client functions should not need to call this.
*
+ * @param $url string
+ *
* @return string
*/
static function expand( $url ) {
- global $wgInternalServer;
- if( $url != '' && $url{0} == '/' ) {
- return $wgInternalServer . $url;
- }
- return $url;
+ return wfExpandUrl( $url, PROTO_INTERNAL );
}
}
diff --git a/includes/db/CloneDatabase.php b/includes/db/CloneDatabase.php
new file mode 100644
index 00000000..3357268d
--- /dev/null
+++ b/includes/db/CloneDatabase.php
@@ -0,0 +1,158 @@
+<?php
+/**
+ * Helper class for making a copy of the database, mostly for unit testing.
+ *
+ * Copyright © 2010 Chad Horohoe <chad@anyonecanedit.org>
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Database
+ */
+
+class CloneDatabase {
+
+ /**
+ * Table prefix for cloning
+ * @var String
+ */
+ private $newTablePrefix = '';
+
+ /**
+ * Current table prefix
+ * @var String
+ */
+ private $oldTablePrefix = '';
+
+ /**
+ * List of tables to be cloned
+ * @var Array
+ */
+ private $tablesToClone = array();
+
+ /**
+ * Should we DROP tables containing the new names?
+ * @var Bool
+ */
+ private $dropCurrentTables = true;
+
+ /**
+ * Whether to use temporary tables or not
+ * @var Bool
+ */
+ private $useTemporaryTables = true;
+
+ /**
+ * Constructor
+ *
+ * @param $db DatabaseBase A database subclass
+ * @param $tablesToClone Array An array of tables to clone, unprefixed
+ * @param $newTablePrefix String Prefix to assign to the tables
+ * @param $oldTablePrefix String Prefix on current tables, if not $wgDBprefix
+ * @param $dropCurrentTables bool
+ */
+ public function __construct( DatabaseBase $db, array $tablesToClone,
+ $newTablePrefix, $oldTablePrefix = '', $dropCurrentTables = true )
+ {
+ $this->db = $db;
+ $this->tablesToClone = $tablesToClone;
+ $this->newTablePrefix = $newTablePrefix;
+ $this->oldTablePrefix = $oldTablePrefix ? $oldTablePrefix : $this->db->tablePrefix();
+ $this->dropCurrentTables = $dropCurrentTables;
+ }
+
+ /**
+ * Set whether to use temporary tables or not
+ * @param $u Bool Use temporary tables when cloning the structure
+ */
+ public function useTemporaryTables( $u = true ) {
+ $this->useTemporaryTables = $u;
+ }
+
+ /**
+ * Clone the table structure
+ */
+ public function cloneTableStructure() {
+
+ foreach( $this->tablesToClone as $tbl ) {
+ # Clean up from previous aborted run. So that table escaping
+ # works correctly across DB engines, we need to change the pre-
+ # fix back and forth so tableName() works right.
+
+ self::changePrefix( $this->oldTablePrefix );
+ $oldTableName = $this->db->tableName( $tbl, false );
+
+ self::changePrefix( $this->newTablePrefix );
+ $newTableName = $this->db->tableName( $tbl, false );
+
+ if( $this->dropCurrentTables && !in_array( $this->db->getType(), array( 'postgres' ) ) ) {
+ $this->db->dropTable( $tbl, __METHOD__ );
+ wfDebug( __METHOD__." dropping {$newTableName}\n", true);
+ //Dropping the oldTable because the prefix was changed
+ }
+
+ # Create new table
+ wfDebug( __METHOD__." duplicating $oldTableName to $newTableName\n", true );
+ $this->db->duplicateTableStructure( $oldTableName, $newTableName, $this->useTemporaryTables );
+
+ }
+
+ }
+
+ /**
+ * Change the prefix back to the original.
+ * @param $dropTables bool Optionally drop the tables we created
+ */
+ public function destroy( $dropTables = false ) {
+ if( $dropTables ) {
+ self::changePrefix( $this->newTablePrefix );
+ foreach( $this->tablesToClone as $tbl ) {
+ $this->db->dropTable( $tbl );
+ }
+ }
+ self::changePrefix( $this->oldTablePrefix );
+ }
+
+ /**
+ * Change the table prefix on all open DB connections/
+ *
+ * @param $prefix
+ * @return void
+ */
+ public static function changePrefix( $prefix ) {
+ global $wgDBprefix;
+ wfGetLBFactory()->forEachLB( array( 'CloneDatabase', 'changeLBPrefix' ), array( $prefix ) );
+ $wgDBprefix = $prefix;
+ }
+
+ /**
+ * @param $lb LoadBalancer
+ * @param $prefix
+ * @return void
+ */
+ public static function changeLBPrefix( $lb, $prefix ) {
+ $lb->forEachOpenConnection( array( 'CloneDatabase', 'changeDBPrefix' ), array( $prefix ) );
+ }
+
+ /**
+ * @param $db DatabaseBase
+ * @param $prefix
+ * @return void
+ */
+ public static function changeDBPrefix( $db, $prefix ) {
+ $db->tablePrefix( $prefix );
+ }
+}
diff --git a/includes/db/Database.php b/includes/db/Database.php
index 5acb67fa..75e6a91d 100644
--- a/includes/db/Database.php
+++ b/includes/db/Database.php
@@ -28,7 +28,7 @@ interface DatabaseType {
*
* @return string
*/
- public function getType();
+ function getType();
/**
* Open a connection to the database. Usually aborts on failure
@@ -40,38 +40,28 @@ interface DatabaseType {
* @return bool
* @throws DBConnectionError
*/
- public function open( $server, $user, $password, $dbName );
-
- /**
- * The DBMS-dependent part of query()
- * @todo Fixme: Make this private someday
- *
- * @param $sql String: SQL query.
- * @return Result object to feed to fetchObject, fetchRow, ...; or false on failure
- * @private
- */
- /*private*/ function doQuery( $sql );
+ function open( $server, $user, $password, $dbName );
/**
* Fetch the next row from the given result object, in object form.
* Fields can be retrieved with $row->fieldname, with fields acting like
* member variables.
*
- * @param $res SQL result object as returned from DatabaseBase::query(), etc.
+ * @param $res ResultWrapper|object as returned from DatabaseBase::query(), etc.
* @return Row object
* @throws DBUnexpectedError Thrown if the database returns an error
*/
- public function fetchObject( $res );
+ function fetchObject( $res );
/**
* Fetch the next row from the given result object, in associative array
* form. Fields are retrieved with $row['fieldname'].
*
- * @param $res SQL result object as returned from DatabaseBase::query(), etc.
+ * @param $res ResultWrapper result object as returned from DatabaseBase::query(), etc.
* @return Row object
* @throws DBUnexpectedError Thrown if the database returns an error
*/
- public function fetchRow( $res );
+ function fetchRow( $res );
/**
* Get the number of rows in a result object
@@ -79,7 +69,7 @@ interface DatabaseType {
* @param $res Mixed: A SQL result
* @return int
*/
- public function numRows( $res );
+ function numRows( $res );
/**
* Get the number of fields in a result object
@@ -88,7 +78,7 @@ interface DatabaseType {
* @param $res Mixed: A SQL result
* @return int
*/
- public function numFields( $res );
+ function numFields( $res );
/**
* Get a field name in a result object
@@ -98,7 +88,7 @@ interface DatabaseType {
* @param $n Integer
* @return string
*/
- public function fieldName( $res, $n );
+ function fieldName( $res, $n );
/**
* Get the inserted value of an auto-increment row
@@ -112,7 +102,7 @@ interface DatabaseType {
*
* @return int
*/
- public function insertId();
+ function insertId();
/**
* Change the position of the cursor in a result object
@@ -121,7 +111,7 @@ interface DatabaseType {
* @param $res Mixed: A SQL result
* @param $row Mixed: Either MySQL row or ResultWrapper
*/
- public function dataSeek( $res, $row );
+ function dataSeek( $res, $row );
/**
* Get the last error number
@@ -129,7 +119,7 @@ interface DatabaseType {
*
* @return int
*/
- public function lastErrno();
+ function lastErrno();
/**
* Get a description of the last error
@@ -137,7 +127,7 @@ interface DatabaseType {
*
* @return string
*/
- public function lastError();
+ function lastError();
/**
* mysql_fetch_field() wrapper
@@ -145,8 +135,10 @@ interface DatabaseType {
*
* @param $table string: table name
* @param $field string: field name
+ *
+ * @return Field
*/
- public function fieldInfo( $table, $field );
+ function fieldInfo( $table, $field );
/**
* Get information about an index into an object
@@ -163,7 +155,7 @@ interface DatabaseType {
*
* @return int
*/
- public function affectedRows();
+ function affectedRows();
/**
* Wrapper for addslashes()
@@ -171,7 +163,7 @@ interface DatabaseType {
* @param $s string: to be slashed.
* @return string: slashed string.
*/
- public function strencode( $s );
+ function strencode( $s );
/**
* Returns a wikitext link to the DB's website, e.g.,
@@ -181,7 +173,7 @@ interface DatabaseType {
*
* @return string: wikitext of a link to the server software's web site
*/
- public static function getSoftwareLink();
+ static function getSoftwareLink();
/**
* A string describing the current software version, like from
@@ -189,7 +181,7 @@ interface DatabaseType {
*
* @return string: Version information from the database server.
*/
- public function getServerVersion();
+ function getServerVersion();
/**
* A string describing the current software version, and possibly
@@ -198,7 +190,7 @@ interface DatabaseType {
*
* @return string: Version information from the database server
*/
- public function getServerInfo();
+ function getServerInfo();
}
/**
@@ -215,7 +207,12 @@ abstract class DatabaseBase implements DatabaseType {
protected $mDoneWrites = false;
protected $mPHPError = false;
- protected $mServer, $mUser, $mPassword, $mConn = null, $mDBname;
+ protected $mServer, $mUser, $mPassword, $mDBname;
+
+ /**
+ * @var DatabaseBase
+ */
+ protected $mConn = null;
protected $mOpened = false;
protected $mTablePrefix;
@@ -244,15 +241,39 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * Boolean, controls output of large amounts of debug information
+ * Boolean, controls output of large amounts of debug information.
+ * @param $debug:
+ * - true to enable debugging
+ * - false to disable debugging
+ * - omitted or null to do nothing
+ *
+ * @return The previous value of the flag
*/
function debug( $debug = null ) {
return wfSetBit( $this->mFlags, DBO_DEBUG, $debug );
}
/**
- * Turns buffering of SQL result sets on (true) or off (false).
- * Default is "on" and it should not be changed without good reasons.
+ * Turns buffering of SQL result sets on (true) or off (false). Default is
+ * "on".
+ *
+ * Unbuffered queries are very troublesome in MySQL:
+ *
+ * - If another query is executed while the first query is being read
+ * out, the first query is killed. This means you can't call normal
+ * MediaWiki functions while you are reading an unbuffered query result
+ * from a normal wfGetDB() connection.
+ *
+ * - Unbuffered queries cause the MySQL server to use large amounts of
+ * memory and to hold broad locks which block other queries.
+ *
+ * If you want to limit client-side memory, it's almost always better to
+ * split up queries into batches using a LIMIT clause than to switch off
+ * buffering.
+ *
+ * @param $buffer null|bool
+ *
+ * @return The previous value of the flag
*/
function bufferResults( $buffer = null ) {
if ( is_null( $buffer ) ) {
@@ -268,32 +289,50 @@ abstract class DatabaseBase implements DatabaseType {
* database errors. Default is on (false). When turned off, the
* code should use lastErrno() and lastError() to handle the
* situation as appropriate.
+ *
+ * @return The previous value of the flag.
*/
function ignoreErrors( $ignoreErrors = null ) {
return wfSetBit( $this->mFlags, DBO_IGNORE, $ignoreErrors );
}
/**
- * The current depth of nested transactions
- * @param $level Integer: , default NULL.
+ * Gets or sets the current transaction level.
+ *
+ * Historically, transactions were allowed to be "nested". This is no
+ * longer supported, so this function really only returns a boolean.
+ *
+ * @param $level An integer (0 or 1), or omitted to leave it unchanged.
+ * @return The previous value
*/
function trxLevel( $level = null ) {
return wfSetVar( $this->mTrxLevel, $level );
}
/**
- * Number of errors logged, only useful when errors are ignored
+ * Get/set the number of errors logged. Only useful when errors are ignored
+ * @param $count The count to set, or omitted to leave it unchanged.
+ * @return The error count
*/
function errorCount( $count = null ) {
return wfSetVar( $this->mErrorCount, $count );
}
+ /**
+ * Get/set the table prefix.
+ * @param $prefix The table prefix to set, or omitted to leave it unchanged.
+ * @return The previous table prefix.
+ */
function tablePrefix( $prefix = null ) {
- return wfSetVar( $this->mTablePrefix, $prefix );
+ return wfSetVar( $this->mTablePrefix, $prefix, true );
}
/**
- * Properties passed down from the server info array of the load balancer
+ * Get properties passed down from the server info array of the load
+ * balancer.
+ *
+ * @param $name The entry of the info array to get, or null to get the
+ * whole array
*/
function getLBInfo( $name = null ) {
if ( is_null( $name ) ) {
@@ -307,6 +346,15 @@ abstract class DatabaseBase implements DatabaseType {
}
}
+ /**
+ * Set the LB info array, or a member of it. If called with one parameter,
+ * the LB info array is set to that parameter. If it is called with two
+ * parameters, the member with the given name is set to the given value.
+ *
+ * @param $name
+ * @param $value
+ * @return void
+ */
function setLBInfo( $name, $value = null ) {
if ( is_null( $value ) ) {
$this->mLBInfo = $name;
@@ -400,20 +448,28 @@ abstract class DatabaseBase implements DatabaseType {
* Return the last query that went through DatabaseBase::query()
* @return String
*/
- function lastQuery() { return $this->mLastQuery; }
+ function lastQuery() {
+ return $this->mLastQuery;
+ }
/**
* Returns true if the connection may have been used for write queries.
* Should return true if unsure.
+ *
+ * @return bool
*/
- function doneWrites() { return $this->mDoneWrites; }
+ function doneWrites() {
+ return $this->mDoneWrites;
+ }
/**
* Is a connection to the database open?
* @return Boolean
*/
- function isOpen() { return $this->mOpened; }
+ function isOpen() {
+ return $this->mOpened;
+ }
/**
* Set a flag for this connection
@@ -457,6 +513,9 @@ abstract class DatabaseBase implements DatabaseType {
return $this->$name;
}
+ /**
+ * @return string
+ */
function getWikiID() {
if ( $this->mTablePrefix ) {
return "{$this->mDBname}-{$this->mTablePrefix}";
@@ -466,9 +525,11 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * Return a path to the DBMS-specific schema, otherwise default to tables.sql
+ * Return a path to the DBMS-specific schema file, otherwise default to tables.sql
+ *
+ * @return string
*/
- public function getSchema() {
+ public function getSchemaPath() {
global $IP;
if ( file_exists( "$IP/maintenance/" . $this->getType() . "/tables.sql" ) ) {
return "$IP/maintenance/" . $this->getType() . "/tables.sql";
@@ -493,12 +554,8 @@ abstract class DatabaseBase implements DatabaseType {
function __construct( $server = false, $user = false, $password = false, $dbName = false,
$flags = 0, $tablePrefix = 'get from global'
) {
- global $wgOut, $wgDBprefix, $wgCommandLineMode;
+ global $wgDBprefix, $wgCommandLineMode;
- # Can't get a reference if it hasn't been set yet
- if ( !isset( $wgOut ) ) {
- $wgOut = null;
- }
$this->mFlags = $flags;
if ( $this->mFlags & DBO_DEFAULT ) {
@@ -509,13 +566,6 @@ abstract class DatabaseBase implements DatabaseType {
}
}
- /*
- // Faster read-only access
- if ( wfReadOnly() ) {
- $this->mFlags |= DBO_PERSISTENT;
- $this->mFlags &= ~DBO_TRX;
- }*/
-
/** Get the default table prefix*/
if ( $tablePrefix == 'get from global' ) {
$this->mTablePrefix = $wgDBprefix;
@@ -523,14 +573,16 @@ abstract class DatabaseBase implements DatabaseType {
$this->mTablePrefix = $tablePrefix;
}
- if ( $server ) {
+ if ( $user ) {
$this->open( $server, $user, $password, $dbName );
}
}
/**
* Same as new DatabaseMysql( ... ), kept for backward compatibility
- * @deprecated
+ * @deprecated since 1.17
+ *
+ * @return DatabaseMysql
*/
static function newFromParams( $server, $user, $password, $dbName, $flags = 0 ) {
wfDeprecated( __METHOD__ );
@@ -554,10 +606,10 @@ abstract class DatabaseBase implements DatabaseType {
*
* @param $dbType String A possible DB type
* @param $p Array An array of options to pass to the constructor.
- * Valid options are: host, user, password, dbname, flags, tableprefix
+ * Valid options are: host, user, password, dbname, flags, tablePrefix
* @return DatabaseBase subclass or null
*/
- public final static function newFromType( $dbType, $p = array() ) {
+ public final static function factory( $dbType, $p = array() ) {
$canonicalDBTypes = array(
'mysql', 'postgres', 'sqlite', 'oracle', 'mssql', 'ibm_db2'
);
@@ -571,7 +623,7 @@ abstract class DatabaseBase implements DatabaseType {
isset( $p['password'] ) ? $p['password'] : false,
isset( $p['dbname'] ) ? $p['dbname'] : false,
isset( $p['flags'] ) ? $p['flags'] : 0,
- isset( $p['tableprefix'] ) ? $p['tableprefix'] : 'get from global'
+ isset( $p['tablePrefix'] ) ? $p['tablePrefix'] : 'get from global'
);
} else {
return null;
@@ -627,36 +679,51 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
+ * The DBMS-dependent part of query()
+ *
+ * @param $sql String: SQL query.
+ * @return Result object to feed to fetchObject, fetchRow, ...; or false on failure
+ */
+ protected abstract function doQuery( $sql );
+
+ /**
* Determine whether a query writes to the DB.
* Should return true if unsure.
+ *
+ * @return bool
*/
function isWriteQuery( $sql ) {
return !preg_match( '/^(?:SELECT|BEGIN|COMMIT|SET|SHOW|\(SELECT)\b/i', $sql );
}
/**
- * Usually aborts on failure. If errors are explicitly ignored, returns success.
+ * Run an SQL query and return the result. Normally throws a DBQueryError
+ * on failure. If errors are ignored, returns false instead.
+ *
+ * In new code, the query wrappers select(), insert(), update(), delete(),
+ * etc. should be used where possible, since they give much better DBMS
+ * independence and automatically quote or validate user input in a variety
+ * of contexts. This function is generally only useful for queries which are
+ * explicitly DBMS-dependent and are unsupported by the query wrappers, such
+ * as CREATE TABLE.
+ *
+ * However, the query wrappers themselves should call this function.
*
* @param $sql String: SQL query
* @param $fname String: Name of the calling function, for profiling/SHOW PROCESSLIST
* comment (you can use __METHOD__ or add some extra info)
* @param $tempIgnore Boolean: Whether to avoid throwing an exception on errors...
* maybe best to catch the exception instead?
- * @return boolean or ResultWrapper. true for a successful write query, ResultWrapper object for a successful read query,
- * or false on failure if $tempIgnore set
+ * @return boolean|ResultWrapper. true for a successful write query, ResultWrapper object
+ * for a successful read query, or false on failure if $tempIgnore set
* @throws DBQueryError Thrown when the database returns an error of any kind
*/
public function query( $sql, $fname = '', $tempIgnore = false ) {
- global $wgProfiler;
-
$isMaster = !is_null( $this->getLBInfo( 'master' ) );
- if ( isset( $wgProfiler ) ) {
+ if ( !Profiler::instance()->isStub() ) {
# generalizeSQL will probably cut down the query to reasonable
# logging size most of the time. The substr is really just a sanity check.
- # Who's been wasting my precious column space? -- TS
- # $profName = 'query: ' . $fname . ' ' . substr( DatabaseBase::generalizeSQL( $sql ), 0, 255 );
-
if ( $isMaster ) {
$queryProf = 'query-m: ' . substr( DatabaseBase::generalizeSQL( $sql ), 0, 255 );
$totalProf = 'DatabaseBase::query-master';
@@ -671,34 +738,30 @@ abstract class DatabaseBase implements DatabaseType {
$this->mLastQuery = $sql;
if ( !$this->mDoneWrites && $this->isWriteQuery( $sql ) ) {
- // Set a flag indicating that writes have been done
+ # Set a flag indicating that writes have been done
wfDebug( __METHOD__ . ": Writes done: $sql\n" );
$this->mDoneWrites = true;
}
# Add a comment for easy SHOW PROCESSLIST interpretation
- # if ( $fname ) {
- global $wgUser;
- if ( is_object( $wgUser ) && $wgUser->mDataLoaded ) {
- $userName = $wgUser->getName();
- if ( mb_strlen( $userName ) > 15 ) {
- $userName = mb_substr( $userName, 0, 15 ) . '...';
- }
- $userName = str_replace( '/', '', $userName );
- } else {
- $userName = '';
+ global $wgUser;
+ if ( is_object( $wgUser ) && $wgUser->isItemLoaded( 'name' ) ) {
+ $userName = $wgUser->getName();
+ if ( mb_strlen( $userName ) > 15 ) {
+ $userName = mb_substr( $userName, 0, 15 ) . '...';
}
- $commentedSql = preg_replace( '/\s/', " /* $fname $userName */ ", $sql, 1 );
- # } else {
- # $commentedSql = $sql;
- # }
+ $userName = str_replace( '/', '', $userName );
+ } else {
+ $userName = '';
+ }
+ $commentedSql = preg_replace( '/\s/', " /* $fname $userName */ ", $sql, 1 );
# If DBO_TRX is set, start a transaction
if ( ( $this->mFlags & DBO_TRX ) && !$this->trxLevel() &&
$sql != 'BEGIN' && $sql != 'COMMIT' && $sql != 'ROLLBACK' ) {
- // avoid establishing transactions for SHOW and SET statements too -
- // that would delay transaction initializations to once connection
- // is really used by application
+ # avoid establishing transactions for SHOW and SET statements too -
+ # that would delay transaction initializations to once connection
+ # is really used by application
$sqlstart = substr( $sql, 0, 10 ); // very much worth it, benchmark certified(tm)
if ( strpos( $sqlstart, "SHOW " ) !== 0 and strpos( $sqlstart, "SET " ) !== 0 )
$this->begin();
@@ -751,7 +814,7 @@ abstract class DatabaseBase implements DatabaseType {
$this->reportQueryError( $this->lastError(), $this->lastErrno(), $sql, $fname, $tempIgnore );
}
- if ( isset( $wgProfiler ) ) {
+ if ( !Profiler::instance()->isStub() ) {
wfProfileOut( $queryProf );
wfProfileOut( $totalProf );
}
@@ -760,6 +823,9 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
+ * Report a query error. Log the error, and if neither the object ignore
+ * flag nor the $tempIgnore flag is set, throw a DBQueryError.
+ *
* @param $error String
* @param $errno Integer
* @param $sql String
@@ -782,7 +848,6 @@ abstract class DatabaseBase implements DatabaseType {
}
}
-
/**
* Intended to be compatible with the PEAR::DB wrapper functions.
* http://pear.php.net/manual/en/package.database.db.intro-execute.php
@@ -791,6 +856,12 @@ abstract class DatabaseBase implements DatabaseType {
* ! = raw SQL bit (a function for instance)
* & = filename; reads the file and inserts as a blob
* (we don't use this though...)
+ *
+ * This function should not be used directly by new code outside of the
+ * database classes. The query wrapper functions (select() etc.) should be
+ * used instead.
+ *
+ * @return array
*/
function prepare( $sql, $func = 'DatabaseBase::prepare' ) {
/* MySQL doesn't support prepared statements (yet), so just
@@ -799,6 +870,9 @@ abstract class DatabaseBase implements DatabaseType {
return array( 'query' => $sql, 'func' => $func );
}
+ /**
+ * Free a prepared query, generated by prepare().
+ */
function freePrepared( $prepared ) {
/* No-op by default */
}
@@ -807,6 +881,8 @@ abstract class DatabaseBase implements DatabaseType {
* Execute a prepared query with the various arguments
* @param $prepared String: the prepared sql
* @param $args Mixed: Either an array here, or put scalars as varargs
+ *
+ * @return ResultWrapper
*/
function execute( $prepared, $args = null ) {
if ( !is_array( $args ) ) {
@@ -823,8 +899,15 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Prepare & execute an SQL statement, quoting and inserting arguments
* in the appropriate places.
+ *
+ * This function should not be used directly by new code outside of the
+ * database classes. The query wrapper functions (select() etc.) should be
+ * used instead.
+ *
* @param $query String
* @param $args ...
+ *
+ * @return ResultWrapper
*/
function safeQuery( $query, $args = null ) {
$prepared = $this->prepare( $query, 'DatabaseBase::safeQuery' );
@@ -886,21 +969,24 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * Free a result object
+ * Free a result object returned by query() or select(). It's usually not
+ * necessary to call this, just use unset() or let the variable holding
+ * the result object go out of scope.
+ *
* @param $res Mixed: A SQL result
*/
function freeResult( $res ) {
- # Stub. Might not really need to be overridden, since results should
- # be freed by PHP when the variable goes out of scope anyway.
}
/**
- * Simple UPDATE wrapper
- * Usually aborts on failure
+ * Simple UPDATE wrapper.
+ * Usually throws a DBQueryError on failure.
* If errors are explicitly ignored, returns success
*
* This function exists for historical reasons, DatabaseBase::update() has a more standard
* calling convention and feature set
+ *
+ * @return bool
*/
function set( $table, $var, $value, $cond, $fname = 'DatabaseBase::set' ) {
$table = $this->tableName( $table );
@@ -911,11 +997,25 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * Simple SELECT wrapper, returns a single field, input must be encoded
- * Usually aborts on failure
- * If errors are explicitly ignored, returns FALSE on failure
+ * A SELECT wrapper which returns a single field from a single result row.
+ *
+ * Usually throws a DBQueryError on failure. If errors are explicitly
+ * ignored, returns false on failure.
+ *
+ * If no result rows are returned from the query, false is returned.
+ *
+ * @param $table string|array Table name. See DatabaseBase::select() for details.
+ * @param $var string The field name to select. This must be a valid SQL
+ * fragment: do not use unvalidated user input.
+ * @param $cond string|array The condition array. See DatabaseBase::select() for details.
+ * @param $fname string The function name of the caller.
+ * @param $options string|array The query options. See DatabaseBase::select() for details.
+ *
+ * @return false|mixed The value from the field, or false on failure.
*/
- function selectField( $table, $var, $cond = '', $fname = 'DatabaseBase::selectField', $options = array() ) {
+ function selectField( $table, $var, $cond = '', $fname = 'DatabaseBase::selectField',
+ $options = array() )
+ {
if ( !is_array( $options ) ) {
$options = array( $options );
}
@@ -939,13 +1039,12 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Returns an optional USE INDEX clause to go after the table, and a
- * string to go at the end of the query
- *
- * @private
+ * string to go at the end of the query.
*
* @param $options Array: associative array of options to be turned into
* an SQL query, valid keys are listed in the function.
* @return Array
+ * @see DatabaseBase::select()
*/
function makeSelectOptions( $options ) {
$preLimitTail = $postLimitTail = '';
@@ -960,7 +1059,10 @@ abstract class DatabaseBase implements DatabaseType {
}
if ( isset( $options['GROUP BY'] ) ) {
- $preLimitTail .= " GROUP BY {$options['GROUP BY']}";
+ $gb = is_array( $options['GROUP BY'] )
+ ? implode( ',', $options['GROUP BY'] )
+ : $options['GROUP BY'];
+ $preLimitTail .= " GROUP BY {$gb}";
}
if ( isset( $options['HAVING'] ) ) {
@@ -968,7 +1070,10 @@ abstract class DatabaseBase implements DatabaseType {
}
if ( isset( $options['ORDER BY'] ) ) {
- $preLimitTail .= " ORDER BY {$options['ORDER BY']}";
+ $ob = is_array( $options['ORDER BY'] )
+ ? implode( ',', $options['ORDER BY'] )
+ : $options['ORDER BY'];
+ $preLimitTail .= " ORDER BY {$ob}";
}
// if (isset($options['LIMIT'])) {
@@ -1032,49 +1137,176 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * SELECT wrapper
+ * Execute a SELECT query constructed using the various parameters provided.
+ * See below for full details of the parameters.
+ *
+ * @param $table String|Array Table name
+ * @param $vars String|Array Field names
+ * @param $conds String|Array Conditions
+ * @param $fname String Caller function name
+ * @param $options Array Query options
+ * @param $join_conds Array Join conditions
+ *
+ *
+ * @param $table string|array
+ *
+ * May be either an array of table names, or a single string holding a table
+ * name. If an array is given, table aliases can be specified, for example:
+ *
+ * array( 'a' => 'user' )
+ *
+ * This includes the user table in the query, with the alias "a" available
+ * for use in field names (e.g. a.user_name).
+ *
+ * All of the table names given here are automatically run through
+ * DatabaseBase::tableName(), which causes the table prefix (if any) to be
+ * added, and various other table name mappings to be performed.
+ *
+ *
+ * @param $vars string|array
+ *
+ * May be either a field name or an array of field names. The field names
+ * here are complete fragments of SQL, for direct inclusion into the SELECT
+ * query. Expressions and aliases may be specified as in SQL, for example:
+ *
+ * array( 'MAX(rev_id) AS maxrev' )
+ *
+ * If an expression is given, care must be taken to ensure that it is
+ * DBMS-independent.
+ *
+ *
+ * @param $conds string|array
+ *
+ * May be either a string containing a single condition, or an array of
+ * conditions. If an array is given, the conditions constructed from each
+ * element are combined with AND.
+ *
+ * Array elements may take one of two forms:
+ *
+ * - Elements with a numeric key are interpreted as raw SQL fragments.
+ * - Elements with a string key are interpreted as equality conditions,
+ * where the key is the field name.
+ * - If the value of such an array element is a scalar (such as a
+ * string), it will be treated as data and thus quoted appropriately.
+ * If it is null, an IS NULL clause will be added.
+ * - If the value is an array, an IN(...) clause will be constructed,
+ * such that the field name may match any of the elements in the
+ * array. The elements of the array will be quoted.
+ *
+ * Note that expressions are often DBMS-dependent in their syntax.
+ * DBMS-independent wrappers are provided for constructing several types of
+ * expression commonly used in condition queries. See:
+ * - DatabaseBase::buildLike()
+ * - DatabaseBase::conditional()
+ *
+ *
+ * @param $options string|array
+ *
+ * Optional: Array of query options. Boolean options are specified by
+ * including them in the array as a string value with a numeric key, for
+ * example:
+ *
+ * array( 'FOR UPDATE' )
+ *
+ * The supported options are:
+ *
+ * - OFFSET: Skip this many rows at the start of the result set. OFFSET
+ * with LIMIT can theoretically be used for paging through a result set,
+ * but this is discouraged in MediaWiki for performance reasons.
+ *
+ * - LIMIT: Integer: return at most this many rows. The rows are sorted
+ * and then the first rows are taken until the limit is reached. LIMIT
+ * is applied to a result set after OFFSET.
+ *
+ * - FOR UPDATE: Boolean: lock the returned rows so that they can't be
+ * changed until the next COMMIT.
+ *
+ * - DISTINCT: Boolean: return only unique result rows.
+ *
+ * - GROUP BY: May be either an SQL fragment string naming a field or
+ * expression to group by, or an array of such SQL fragments.
+ *
+ * - HAVING: A string containing a HAVING clause.
+ *
+ * - ORDER BY: May be either an SQL fragment giving a field name or
+ * expression to order by, or an array of such SQL fragments.
+ *
+ * - USE INDEX: This may be either a string giving the index name to use
+ * for the query, or an array. If it is an associative array, each key
+ * gives the table name (or alias), each value gives the index name to
+ * use for that table. All strings are SQL fragments and so should be
+ * validated by the caller.
+ *
+ * - EXPLAIN: In MySQL, this causes an EXPLAIN SELECT query to be run,
+ * instead of SELECT.
+ *
+ * And also the following boolean MySQL extensions, see the MySQL manual
+ * for documentation:
+ *
+ * - LOCK IN SHARE MODE
+ * - STRAIGHT_JOIN
+ * - HIGH_PRIORITY
+ * - SQL_BIG_RESULT
+ * - SQL_BUFFER_RESULT
+ * - SQL_SMALL_RESULT
+ * - SQL_CALC_FOUND_ROWS
+ * - SQL_CACHE
+ * - SQL_NO_CACHE
+ *
*
- * @param $table Mixed: Array or string, table name(s) (prefix auto-added)
- * @param $vars Mixed: Array or string, field name(s) to be retrieved
- * @param $conds Mixed: Array or string, condition(s) for WHERE
- * @param $fname String: Calling function name (use __METHOD__) for logs/profiling
- * @param $options Array: Associative array of options (e.g. array('GROUP BY' => 'page_title')),
- * see DatabaseBase::makeSelectOptions code for list of supported stuff
- * @param $join_conds Array: Associative array of table join conditions (optional)
- * (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
- * @return mixed Database result resource (feed to DatabaseBase::fetchObject or whatever), or false on failure
+ * @param $join_conds string|array
+ *
+ * Optional associative array of table-specific join conditions. In the
+ * most common case, this is unnecessary, since the join condition can be
+ * in $conds. However, it is useful for doing a LEFT JOIN.
+ *
+ * The key of the array contains the table name or alias. The value is an
+ * array with two elements, numbered 0 and 1. The first gives the type of
+ * join, the second is an SQL fragment giving the join condition for that
+ * table. For example:
+ *
+ * array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
+ *
+ * @return ResultWrapper. If the query returned no rows, a ResultWrapper
+ * with no rows in it will be returned. If there was a query error, a
+ * DBQueryError exception will be thrown, except if the "ignore errors"
+ * option was set, in which case false will be returned.
*/
- function select( $table, $vars, $conds = '', $fname = 'DatabaseBase::select', $options = array(), $join_conds = array() ) {
+ function select( $table, $vars, $conds = '', $fname = 'DatabaseBase::select',
+ $options = array(), $join_conds = array() ) {
$sql = $this->selectSQLText( $table, $vars, $conds, $fname, $options, $join_conds );
return $this->query( $sql, $fname );
}
/**
- * SELECT wrapper
+ * The equivalent of DatabaseBase::select() except that the constructed SQL
+ * is returned, instead of being immediately executed.
+ *
+ * @param $table string|array Table name
+ * @param $vars string|array Field names
+ * @param $conds string|array Conditions
+ * @param $fname string Caller function name
+ * @param $options string|array Query options
+ * @param $join_conds string|array Join conditions
*
- * @param $table Mixed: Array or string, table name(s) (prefix auto-added). Array keys are table aliases (optional)
- * @param $vars Mixed: Array or string, field name(s) to be retrieved
- * @param $conds Mixed: Array or string, condition(s) for WHERE
- * @param $fname String: Calling function name (use __METHOD__) for logs/profiling
- * @param $options Array: Associative array of options (e.g. array('GROUP BY' => 'page_title')),
- * see DatabaseBase::makeSelectOptions code for list of supported stuff
- * @param $join_conds Array: Associative array of table join conditions (optional)
- * (e.g. array( 'page' => array('LEFT JOIN','page_latest=rev_id') )
- * @return string, the SQL text
+ * @return SQL query string.
+ * @see DatabaseBase::select()
*/
function selectSQLText( $table, $vars, $conds = '', $fname = 'DatabaseBase::select', $options = array(), $join_conds = array() ) {
if ( is_array( $vars ) ) {
$vars = implode( ',', $vars );
}
- if ( !is_array( $options ) ) {
- $options = array( $options );
- }
+ $options = (array)$options;
if ( is_array( $table ) ) {
- if ( !empty( $join_conds ) || ( isset( $options['USE INDEX'] ) && is_array( @$options['USE INDEX'] ) ) ) {
- $from = ' FROM ' . $this->tableNamesWithUseIndexOrJOIN( $table, @$options['USE INDEX'], $join_conds );
+ $useIndex = ( isset( $options['USE INDEX'] ) && is_array( $options['USE INDEX'] ) )
+ ? $options['USE INDEX']
+ : array();
+ if ( count( $join_conds ) || count( $useIndex ) ) {
+ $from = ' FROM ' .
+ $this->tableNamesWithUseIndexOrJOIN( $table, $useIndex, $join_conds );
} else {
$from = ' FROM ' . implode( ',', $this->tableNamesWithAlias( $table ) );
}
@@ -1099,9 +1331,10 @@ abstract class DatabaseBase implements DatabaseType {
$sql = "SELECT $startOpts $vars $from $useIndex $preLimitTail";
}
- if ( isset( $options['LIMIT'] ) )
+ if ( isset( $options['LIMIT'] ) ) {
$sql = $this->limitResult( $sql, $options['LIMIT'],
isset( $options['OFFSET'] ) ? $options['OFFSET'] : false );
+ }
$sql = "$sql $postLimitTail";
if ( isset( $options['EXPLAIN'] ) ) {
@@ -1112,24 +1345,22 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * Single row SELECT wrapper
- * Aborts or returns FALSE on error
+ * Single row SELECT wrapper. Equivalent to DatabaseBase::select(), except
+ * that a single row object is returned. If the query returns no rows,
+ * false is returned.
*
- * @param $table String: table name
- * @param $vars String: the selected variables
- * @param $conds Array: a condition map, terms are ANDed together.
- * Items with numeric keys are taken to be literal conditions
- * Takes an array of selected variables, and a condition map, which is ANDed
- * e.g: selectRow( "page", array( "page_id" ), array( "page_namespace" =>
- * NS_MAIN, "page_title" => "Astronomy" ) ) would return an object where
- * $obj- >page_id is the ID of the Astronomy article
- * @param $fname String: Calling function name
- * @param $options Array
- * @param $join_conds Array
+ * @param $table string|array Table name
+ * @param $vars string|array Field names
+ * @param $conds|array Conditions
+ * @param $fname string Caller function name
+ * @param $options string|array Query options
+ * @param $join_conds array|string Join conditions
*
- * @todo migrate documentation to phpdocumentor format
+ * @return ResultWrapper|bool
*/
- function selectRow( $table, $vars, $conds, $fname = 'DatabaseBase::selectRow', $options = array(), $join_conds = array() ) {
+ function selectRow( $table, $vars, $conds, $fname = 'DatabaseBase::selectRow',
+ $options = array(), $join_conds = array() )
+ {
$options['LIMIT'] = 1;
$res = $this->select( $table, $vars, $conds, $fname, $options, $join_conds );
@@ -1147,10 +1378,17 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * Estimate rows in dataset
- * Returns estimated count - not necessarily an accurate estimate across different databases,
- * so use sparingly
- * Takes same arguments as DatabaseBase::select()
+ * Estimate rows in dataset.
+ *
+ * MySQL allows you to estimate the number of rows that would be returned
+ * by a SELECT query, using EXPLAIN SELECT. The estimate is provided using
+ * index cardinality statistics, and is notoriously inaccurate, especially
+ * when large numbers of rows have recently been added or deleted.
+ *
+ * For DBMSs that don't support fast result size estimation, this function
+ * will actually perform the SELECT COUNT(*).
+ *
+ * Takes the same arguments as DatabaseBase::select().
*
* @param $table String: table name
* @param $vars Array: unused
@@ -1159,7 +1397,9 @@ abstract class DatabaseBase implements DatabaseType {
* @param $options Array: options for select
* @return Integer: row count
*/
- public function estimateRowCount( $table, $vars = '*', $conds = '', $fname = 'DatabaseBase::estimateRowCount', $options = array() ) {
+ public function estimateRowCount( $table, $vars = '*', $conds = '',
+ $fname = 'DatabaseBase::estimateRowCount', $options = array() )
+ {
$rows = 0;
$res = $this->select ( $table, 'COUNT(*) AS rowcount', $conds, $fname, $options );
@@ -1213,8 +1453,10 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Determines whether an index exists
- * Usually aborts on failure
+ * Usually throws a DBQueryError on failure
* If errors are explicitly ignored, returns NULL on failure
+ *
+ * @return bool|null
*/
function indexExists( $table, $index, $fname = 'DatabaseBase::indexExists' ) {
$info = $this->indexInfo( $table, $index, $fname );
@@ -1227,6 +1469,10 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Query whether a given table exists
+ *
+ * @string table
+ *
+ * @return bool
*/
function tableExists( $table ) {
$table = $this->tableName( $table );
@@ -1250,6 +1496,11 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Determines if a given index is unique
+ *
+ * @param $table string
+ * @param $index string
+ *
+ * @return bool
*/
function indexUnique( $table, $index ) {
$indexInfo = $this->indexInfo( $table, $index );
@@ -1262,18 +1513,45 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * INSERT wrapper, inserts an array into a table
+ * Helper for DatabaseBase::insert().
+ *
+ * @param $options array
+ * @return string
+ */
+ function makeInsertOptions( $options ) {
+ return implode( ' ', $options );
+ }
+
+ /**
+ * INSERT wrapper, inserts an array into a table.
*
- * $a may be a single associative array, or an array of these with numeric keys, for
- * multi-row insert.
+ * $a may be either:
*
- * Usually aborts on failure
- * If errors are explicitly ignored, returns success
+ * - A single associative array. The array keys are the field names, and
+ * the values are the values to insert. The values are treated as data
+ * and will be quoted appropriately. If NULL is inserted, this will be
+ * converted to a database NULL.
+ * - An array with numeric keys, holding a list of associative arrays.
+ * This causes a multi-row INSERT on DBMSs that support it. The keys in
+ * each subarray must be identical to each other, and in the same order.
+ *
+ * Usually throws a DBQueryError on failure. If errors are explicitly ignored,
+ * returns success.
+ *
+ * $options is an array of options, with boolean options encoded as values
+ * with numeric keys, in the same style as $options in
+ * DatabaseBase::select(). Supported options are:
+ *
+ * - IGNORE: Boolean: if present, duplicate key errors are ignored, and
+ * any rows which cause duplicate key errors are not inserted. It's
+ * possible to determine how many rows were successfully inserted using
+ * DatabaseBase::affectedRows().
*
- * @param $table String: table name (prefix auto-added)
- * @param $a Array: Array of rows to insert
- * @param $fname String: Calling function name (use __METHOD__) for logs/profiling
- * @param $options Mixed: Associative array of options
+ * @param $table String Table name. This will be passed through
+ * DatabaseBase::tableName().
+ * @param $a Array of rows to insert
+ * @param $fname String Calling function name (use __METHOD__) for logs/profiling
+ * @param $options Array of options
*
* @return bool
*/
@@ -1289,6 +1567,8 @@ abstract class DatabaseBase implements DatabaseType {
$options = array( $options );
}
+ $options = $this->makeInsertOptions( $options );
+
if ( isset( $a[0] ) && is_array( $a[0] ) ) {
$multi = true;
$keys = array_keys( $a[0] );
@@ -1297,7 +1577,7 @@ abstract class DatabaseBase implements DatabaseType {
$keys = array_keys( $a );
}
- $sql = 'INSERT ' . implode( ' ', $options ) .
+ $sql = 'INSERT ' . $options .
" INTO $table (" . implode( ',', $keys ) . ') VALUES ';
if ( $multi ) {
@@ -1320,7 +1600,6 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Make UPDATE options for the DatabaseBase::update function
*
- * @private
* @param $options Array: The options passed to DatabaseBase::update
* @return string
*/
@@ -1343,15 +1622,26 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * UPDATE wrapper, takes a condition array and a SET array
+ * UPDATE wrapper. Takes a condition array and a SET array.
+ *
+ * @param $table String name of the table to UPDATE. This will be passed through
+ * DatabaseBase::tableName().
+ *
+ * @param $values Array: An array of values to SET. For each array element,
+ * the key gives the field name, and the value gives the data
+ * to set that field to. The data will be quoted by
+ * DatabaseBase::addQuotes().
*
- * @param $table String: The table to UPDATE
- * @param $values Array: An array of values to SET
- * @param $conds Array: An array of conditions (WHERE). Use '*' to update all rows.
- * @param $fname String: The Class::Function calling this function
- * (for the log)
- * @param $options Array: An array of UPDATE options, can be one or
- * more of IGNORE, LOW_PRIORITY
+ * @param $conds Array: An array of conditions (WHERE). See
+ * DatabaseBase::select() for the details of the format of
+ * condition arrays. Use '*' to update all rows.
+ *
+ * @param $fname String: The function name of the caller (from __METHOD__),
+ * for logging and profiling.
+ *
+ * @param $options Array: An array of UPDATE options, can be:
+ * - IGNORE: Ignore unique key conflicts
+ * - LOW_PRIORITY: MySQL-specific, see MySQL manual.
* @return Boolean
*/
function update( $table, $values, $conds, $fname = 'DatabaseBase::update', $options = array() ) {
@@ -1368,12 +1658,16 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Makes an encoded list of strings from an array
- * $mode:
- * LIST_COMMA - comma separated, no field names
- * LIST_AND - ANDed WHERE clause (without the WHERE)
- * LIST_OR - ORed WHERE clause (without the WHERE)
- * LIST_SET - comma separated with field names, like a SET clause
- * LIST_NAMES - comma separated field names
+ * @param $a Array containing the data
+ * @param $mode:
+ * - LIST_COMMA: comma separated, no field names
+ * - LIST_AND: ANDed WHERE clause (without the WHERE). See
+ * the documentation for $conds in DatabaseBase::select().
+ * - LIST_OR: ORed WHERE clause (without the WHERE)
+ * - LIST_SET: comma separated with field names, like a SET clause
+ * - LIST_NAMES: comma separated field names
+ *
+ * @return string
*/
function makeList( $a, $mode = LIST_COMMA ) {
if ( !is_array( $a ) ) {
@@ -1434,7 +1728,8 @@ abstract class DatabaseBase implements DatabaseType {
* Build a partial where clause from a 2-d array such as used for LinkBatch.
* The keys on each level may be either integers or strings.
*
- * @param $data Array: organized as 2-d array(baseKeyVal => array(subKeyVal => <ignored>, ...), ...)
+ * @param $data Array: organized as 2-d
+ * array(baseKeyVal => array(subKeyVal => <ignored>, ...), ...)
* @param $baseKey String: field name to match the base-level keys to (eg 'pl_namespace')
* @param $subKey String: field name to match the sub-level keys to (eg 'pl_title')
* @return Mixed: string SQL fragment, or false if no items in array.
@@ -1462,14 +1757,28 @@ abstract class DatabaseBase implements DatabaseType {
* Bitwise operations
*/
+ /**
+ * @param $field
+ * @return string
+ */
function bitNot( $field ) {
return "(~$field)";
}
+ /**
+ * @param $fieldLeft
+ * @param $fieldRight
+ * @return string
+ */
function bitAnd( $fieldLeft, $fieldRight ) {
return "($fieldLeft & $fieldRight)";
}
+ /**
+ * @param $fieldLeft
+ * @param $fieldRight
+ * @return string
+ */
function bitOr( $fieldLeft, $fieldRight ) {
return "($fieldLeft | $fieldRight)";
}
@@ -1484,6 +1793,7 @@ abstract class DatabaseBase implements DatabaseType {
# Stub. Shouldn't cause serious problems if it's not overridden, but
# if your database engine supports a concept similar to MySQL's
# databases you may as well.
+ $this->mDBname = $db;
return true;
}
@@ -1512,15 +1822,17 @@ abstract class DatabaseBase implements DatabaseType {
* when calling query() directly.
*
* @param $name String: database table name
+ * @param $quoted Boolean: Automatically pass the table name through
+ * addIdentifierQuotes() so that it can be used in a query.
* @return String: full database name
*/
- function tableName( $name ) {
+ function tableName( $name, $quoted = true ) {
global $wgSharedDB, $wgSharedPrefix, $wgSharedTables;
# Skip the entire process when we have a string quoted on both ends.
# Note that we check the end so that we will still quote any use of
# use of `database`.table. But won't break things if someone wants
# to query a database table with a dot in the name.
- if ( $name[0] == '`' && substr( $name, -1, 1 ) == '`' ) {
+ if ( $this->isQuotedIdentifier( $name ) ) {
return $name;
}
@@ -1540,23 +1852,23 @@ abstract class DatabaseBase implements DatabaseType {
# the correct table.
$dbDetails = array_reverse( explode( '.', $name, 2 ) );
if ( isset( $dbDetails[1] ) ) {
- @list( $table, $database ) = $dbDetails;
+ list( $table, $database ) = $dbDetails;
} else {
- @list( $table ) = $dbDetails;
+ list( $table ) = $dbDetails;
}
$prefix = $this->mTablePrefix; # Default prefix
- # A database name has been specified in input. Quote the table name
- # because we don't want any prefixes added.
+ # A database name has been specified in input. We don't want any
+ # prefixes added.
if ( isset( $database ) ) {
- $table = ( $table[0] == '`' ? $table : "`{$table}`" );
+ $prefix = '';
}
# Note that we use the long format because php will complain in in_array if
# the input is not an array, and will complain in is_array if it is not set.
if ( !isset( $database ) # Don't use shared database if pre selected.
&& isset( $wgSharedDB ) # We have a shared database
- && $table[0] != '`' # Paranoia check to prevent shared tables listing '`table`'
+ && !$this->isQuotedIdentifier( $table ) # Paranoia check to prevent shared tables listing '`table`'
&& isset( $wgSharedTables )
&& is_array( $wgSharedTables )
&& in_array( $table, $wgSharedTables ) ) { # A shared table is selected
@@ -1566,9 +1878,13 @@ abstract class DatabaseBase implements DatabaseType {
# Quote the $database and $table and apply the prefix if not quoted.
if ( isset( $database ) ) {
- $database = ( $database[0] == '`' ? $database : "`{$database}`" );
+ $database = ( !$quoted || $this->isQuotedIdentifier( $database ) ? $database : $this->addIdentifierQuotes( $database ) );
+ }
+
+ $table = "{$prefix}{$table}";
+ if ( $quoted && !$this->isQuotedIdentifier( $table ) ) {
+ $table = $this->addIdentifierQuotes( "{$table}" );
}
- $table = ( $table[0] == '`' ? $table : "`{$prefix}{$table}`" );
# Merge our database and table into our final table name.
$tableName = ( isset( $database ) ? "{$database}.{$table}" : "{$table}" );
@@ -1650,45 +1966,54 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * @private
+ * Get the aliased table name clause for a FROM clause
+ * which might have a JOIN and/or USE INDEX clause
+ *
+ * @param $tables array( [alias] => table )
+ * @param $use_index array() Same as for select()
+ * @param $join_conds array() Same as for select()
+ * @return string
*/
- function tableNamesWithUseIndexOrJOIN( $tables, $use_index = array(), $join_conds = array() ) {
+ protected function tableNamesWithUseIndexOrJOIN(
+ $tables, $use_index = array(), $join_conds = array()
+ ) {
$ret = array();
$retJOIN = array();
- $use_index_safe = is_array( $use_index ) ? $use_index : array();
- $join_conds_safe = is_array( $join_conds ) ? $join_conds : array();
+ $use_index = (array)$use_index;
+ $join_conds = (array)$join_conds;
foreach ( $tables as $alias => $table ) {
if ( !is_string( $alias ) ) {
// No alias? Set it equal to the table name
$alias = $table;
}
- // Is there a JOIN and INDEX clause for this table?
- if ( isset( $join_conds_safe[$alias] ) && isset( $use_index_safe[$alias] ) ) {
- $tableClause = $join_conds_safe[$alias][0] . ' ' . $this->tableNameWithAlias( $table, $alias );
- $tableClause .= ' ' . $this->useIndexClause( implode( ',', (array)$use_index_safe[$alias] ) );
- $on = $this->makeList( (array)$join_conds_safe[$alias][1], LIST_AND );
+ // Is there a JOIN clause for this table?
+ if ( isset( $join_conds[$alias] ) ) {
+ list( $joinType, $conds ) = $join_conds[$alias];
+ $tableClause = $joinType;
+ $tableClause .= ' ' . $this->tableNameWithAlias( $table, $alias );
+ if ( isset( $use_index[$alias] ) ) { // has USE INDEX?
+ $use = $this->useIndexClause( implode( ',', (array)$use_index[$alias] ) );
+ if ( $use != '' ) {
+ $tableClause .= ' ' . $use;
+ }
+ }
+ $on = $this->makeList( (array)$conds, LIST_AND );
if ( $on != '' ) {
$tableClause .= ' ON (' . $on . ')';
}
$retJOIN[] = $tableClause;
- // Is there an INDEX clause?
- } else if ( isset( $use_index_safe[$alias] ) ) {
+ // Is there an INDEX clause for this table?
+ } elseif ( isset( $use_index[$alias] ) ) {
$tableClause = $this->tableNameWithAlias( $table, $alias );
- $tableClause .= ' ' . $this->useIndexClause( implode( ',', (array)$use_index_safe[$alias] ) );
- $ret[] = $tableClause;
- // Is there a JOIN clause?
- } else if ( isset( $join_conds_safe[$alias] ) ) {
- $tableClause = $join_conds_safe[$alias][0] . ' ' . $this->tableNameWithAlias( $table, $alias );
- $on = $this->makeList( (array)$join_conds_safe[$alias][1], LIST_AND );
- if ( $on != '' ) {
- $tableClause .= ' ON (' . $on . ')';
- }
+ $tableClause .= ' ' . $this->useIndexClause(
+ implode( ',', (array)$use_index[$alias] ) );
- $retJOIN[] = $tableClause;
+ $ret[] = $tableClause;
} else {
$tableClause = $this->tableNameWithAlias( $table, $alias );
+
$ret[] = $tableClause;
}
}
@@ -1703,6 +2028,10 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Get the name of an index in a given table
+ *
+ * @param $index
+ *
+ * @return string
*/
function indexName( $index ) {
// Backwards-compatibility hack
@@ -1722,6 +2051,10 @@ abstract class DatabaseBase implements DatabaseType {
/**
* If it's a string, adds quotes and backslashes
* Otherwise returns as-is
+ *
+ * @param $s string
+ *
+ * @return string
*/
function addQuotes( $s ) {
if ( $s === null ) {
@@ -1740,16 +2073,32 @@ abstract class DatabaseBase implements DatabaseType {
* MySQL uses `backticks` while basically everything else uses double quotes.
* Since MySQL is the odd one out here the double quotes are our generic
* and we implement backticks in DatabaseMysql.
- */
+ *
+ * @return string
+ */
public function addIdentifierQuotes( $s ) {
return '"' . str_replace( '"', '""', $s ) . '"';
}
/**
+ * Returns if the given identifier looks quoted or not according to
+ * the database convention for quoting identifiers .
+ *
+ * @param $name string
+ *
+ * @return boolean
+ */
+ public function isQuotedIdentifier( $name ) {
+ return $name[0] == '"' && substr( $name, -1, 1 ) == '"';
+ }
+
+ /**
* Backwards compatibility, identifier quoting originated in DatabasePostgres
* which used quote_ident which does not follow our naming conventions
* was renamed to addIdentifierQuotes.
- * @deprecated use addIdentifierQuotes
+ * @deprecated since 1.18 use addIdentifierQuotes
+ *
+ * @return string
*/
function quote_ident( $s ) {
wfDeprecated( __METHOD__ );
@@ -1760,7 +2109,7 @@ abstract class DatabaseBase implements DatabaseType {
* Escape string for safe LIKE usage.
* WARNING: you should almost never use this function directly,
* instead use buildLike() that escapes everything automatically
- * Deprecated in 1.17, warnings in 1.17, removed in ???
+ * @deprecated since 1.17, warnings in 1.17, removed in ???
*/
public function escapeLike( $s ) {
wfDeprecated( __METHOD__ );
@@ -1809,6 +2158,8 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Returns a token for buildLike() that denotes a '_' to be used in a LIKE query
+ *
+ * @return LikeMatch
*/
function anyChar() {
return new LikeMatch( '_' );
@@ -1816,6 +2167,8 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Returns a token for buildLike() that denotes a '%' to be used in a LIKE query
+ *
+ * @rerturn LikeMatch
*/
function anyString() {
return new LikeMatch( '%' );
@@ -1843,15 +2196,24 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * REPLACE query wrapper
- * PostgreSQL simulates this with a DELETE followed by INSERT
- * $row is the row to insert, an associative array
- * $uniqueIndexes is an array of indexes. Each element may be either a
- * field name or an array of field names
+ * REPLACE query wrapper.
*
- * It may be more efficient to leave off unique indexes which are unlikely to collide.
- * However if you do this, you run the risk of encountering errors which wouldn't have
- * occurred in MySQL
+ * REPLACE is a very handy MySQL extension, which functions like an INSERT
+ * except that when there is a duplicate key error, the old row is deleted
+ * and the new row is inserted in its place.
+ *
+ * We simulate this with standard SQL with a DELETE followed by INSERT. To
+ * perform the delete, we need to know what the unique indexes are so that
+ * we know how to find the conflicting rows.
+ *
+ * It may be more efficient to leave off unique indexes which are unlikely
+ * to collide. However if you do this, you run the risk of encountering
+ * errors which wouldn't have occurred in MySQL.
+ *
+ * @param $rows Can be either a single row to insert, or multiple rows,
+ * in the same format as for DatabaseBase::insert()
+ * @param $uniqueIndexes is an array of indexes. Each element may be either
+ * a field name or an array of field names
*
* @param $table String: The table to replace the row(s) in.
* @param $uniqueIndexes Array: An associative array of indexes
@@ -1859,6 +2221,61 @@ abstract class DatabaseBase implements DatabaseType {
* @param $fname String: Calling function name (use __METHOD__) for logs/profiling
*/
function replace( $table, $uniqueIndexes, $rows, $fname = 'DatabaseBase::replace' ) {
+ $quotedTable = $this->tableName( $table );
+
+ if ( count( $rows ) == 0 ) {
+ return;
+ }
+
+ # Single row case
+ if ( !is_array( reset( $rows ) ) ) {
+ $rows = array( $rows );
+ }
+
+ foreach( $rows as $row ) {
+ # Delete rows which collide
+ if ( $uniqueIndexes ) {
+ $sql = "DELETE FROM $quotedTable WHERE ";
+ $first = true;
+ foreach ( $uniqueIndexes as $index ) {
+ if ( $first ) {
+ $first = false;
+ $sql .= '( ';
+ } else {
+ $sql .= ' ) OR ( ';
+ }
+ if ( is_array( $index ) ) {
+ $first2 = true;
+ foreach ( $index as $col ) {
+ if ( $first2 ) {
+ $first2 = false;
+ } else {
+ $sql .= ' AND ';
+ }
+ $sql .= $col . '=' . $this->addQuotes( $row[$col] );
+ }
+ } else {
+ $sql .= $index . '=' . $this->addQuotes( $row[$index] );
+ }
+ }
+ $sql .= ' )';
+ $this->query( $sql, $fname );
+ }
+
+ # Now insert the row
+ $this->insert( $table, $row );
+ }
+ }
+
+ /**
+ * REPLACE query wrapper for MySQL and SQLite, which have a native REPLACE
+ * statement.
+ *
+ * @param $table Table name
+ * @param $rows Rows to insert
+ * @param $fname Caller function name
+ */
+ protected function nativeReplace( $table, $rows, $fname ) {
$table = $this->tableName( $table );
# Single row case
@@ -1883,35 +2300,42 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * DELETE where the condition is a join
- * MySQL does this with a multi-table DELETE syntax, PostgreSQL does it with sub-selects
+ * DELETE where the condition is a join.
*
- * For safety, an empty $conds will not delete everything. If you want to delete all rows where the
- * join condition matches, set $conds='*'
+ * MySQL overrides this to use a multi-table DELETE syntax, in other databases
+ * we use sub-selects
*
- * DO NOT put the join condition in $conds
+ * For safety, an empty $conds will not delete everything. If you want to
+ * delete all rows where the join condition matches, set $conds='*'.
*
- * @param $delTable String: The table to delete from.
- * @param $joinTable String: The other table.
- * @param $delVar String: The variable to join on, in the first table.
- * @param $joinVar String: The variable to join on, in the second table.
- * @param $conds Array: Condition array of field names mapped to variables, ANDed together in the WHERE clause
- * @param $fname String: Calling function name (use __METHOD__) for logs/profiling
+ * DO NOT put the join condition in $conds.
+ *
+ * @param $delTable String: The table to delete from.
+ * @param $joinTable String: The other table.
+ * @param $delVar String: The variable to join on, in the first table.
+ * @param $joinVar String: The variable to join on, in the second table.
+ * @param $conds Array: Condition array of field names mapped to variables,
+ * ANDed together in the WHERE clause
+ * @param $fname String: Calling function name (use __METHOD__) for
+ * logs/profiling
*/
- function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname = 'DatabaseBase::deleteJoin' ) {
+ function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds,
+ $fname = 'DatabaseBase::deleteJoin' )
+ {
if ( !$conds ) {
- throw new DBUnexpectedError( $this, 'DatabaseBase::deleteJoin() called with empty $conds' );
+ throw new DBUnexpectedError( $this,
+ 'DatabaseBase::deleteJoin() called with empty $conds' );
}
$delTable = $this->tableName( $delTable );
$joinTable = $this->tableName( $joinTable );
- $sql = "DELETE $delTable FROM $delTable, $joinTable WHERE $delVar=$joinVar ";
-
+ $sql = "DELETE FROM $delTable WHERE $delVar IN (SELECT $joinVar FROM $joinTable ";
if ( $conds != '*' ) {
- $sql .= ' AND ' . $this->makeList( $conds, LIST_AND );
+ $sql .= 'WHERE ' . $this->makeList( $conds, LIST_AND );
}
+ $sql .= ')';
- return $this->query( $sql, $fname );
+ $this->query( $sql, $fname );
}
/**
@@ -1939,16 +2363,22 @@ abstract class DatabaseBase implements DatabaseType {
* MySQL's LOW_PRIORITY. If no such feature exists, return an empty
* string and nothing bad should happen.
*
- * @return string Returns the text of the low priority option if it is supported, or a blank string otherwise
+ * @return string Returns the text of the low priority option if it is
+ * supported, or a blank string otherwise
*/
function lowPriorityOption() {
return '';
}
/**
- * DELETE query wrapper
+ * DELETE query wrapper.
*
- * Use $conds == "*" to delete all rows
+ * @param $table Array Table name
+ * @param $conds String|Array of conditions. See $conds in DatabaseBase::select() for
+ * the format. Use $conds == "*" to delete all rows
+ * @param $fname String name of the calling function
+ *
+ * @return bool
*/
function delete( $table, $conds, $fname = 'DatabaseBase::delete' ) {
if ( !$conds ) {
@@ -1966,13 +2396,33 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * INSERT SELECT wrapper
- * $varMap must be an associative array of the form array( 'dest1' => 'source1', ...)
- * Source items may be literals rather than field names, but strings should be quoted with DatabaseBase::addQuotes()
- * $conds may be "*" to copy the whole table
- * srcTable may be an array of tables.
+ * INSERT SELECT wrapper. Takes data from a SELECT query and inserts it
+ * into another table.
+ *
+ * @param $destTable The table name to insert into
+ * @param $srcTable May be either a table name, or an array of table names
+ * to include in a join.
+ *
+ * @param $varMap must be an associative array of the form
+ * array( 'dest1' => 'source1', ...). Source items may be literals
+ * rather than field names, but strings should be quoted with
+ * DatabaseBase::addQuotes()
+ *
+ * @param $conds Condition array. See $conds in DatabaseBase::select() for
+ * the details of the format of condition arrays. May be "*" to copy the
+ * whole table.
+ *
+ * @param $fname The function name of the caller, from __METHOD__
+ *
+ * @param $insertOptions Options for the INSERT part of the query, see
+ * DatabaseBase::insert() for details.
+ * @param $selectOptions Options for the SELECT part of the query, see
+ * DatabaseBase::select() for details.
+ *
+ * @return ResultWrapper
*/
- function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = 'DatabaseBase::insertSelect',
+ function insertSelect( $destTable, $srcTable, $varMap, $conds,
+ $fname = 'DatabaseBase::insertSelect',
$insertOptions = array(), $selectOptions = array() )
{
$destTable = $this->tableName( $destTable );
@@ -2023,6 +2473,8 @@ abstract class DatabaseBase implements DatabaseType {
* @param $sql String: SQL query we will append the limit too
* @param $limit Integer: the SQL limit
* @param $offset Integer the SQL offset (default false)
+ *
+ * @return string
*/
function limitResult( $sql, $limit, $offset = false ) {
if ( !is_numeric( $limit ) ) {
@@ -2080,24 +2532,18 @@ abstract class DatabaseBase implements DatabaseType {
* @param $orig String: column to modify
* @param $old String: column to seek
* @param $new String: column to replace with
+ *
+ * @return string
*/
function strreplace( $orig, $old, $new ) {
return "REPLACE({$orig}, {$old}, {$new})";
}
/**
- * Convert a field to an unix timestamp
- *
- * @param $field String: field name
- * @return String: SQL statement
- */
- public function unixTimestamp( $field ) {
- return "EXTRACT(epoch FROM $field)";
- }
-
- /**
* Determines if the last failure was due to a deadlock
* STUB
+ *
+ * @return bool
*/
function wasDeadlock() {
return false;
@@ -2107,6 +2553,8 @@ abstract class DatabaseBase implements DatabaseType {
* Determines if the last query error was something that should be dealt
* with by pinging the connection and reissuing the query.
* STUB
+ *
+ * @return bool
*/
function wasErrorReissuable() {
return false;
@@ -2115,6 +2563,8 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Determines if the last failure was due to the database being read-only.
* STUB
+ *
+ * @return bool
*/
function wasReadOnlyError() {
return false;
@@ -2180,20 +2630,20 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * Do a SELECT MASTER_POS_WAIT()
+ * Wait for the slave to catch up to a given master position.
+ *
+ * @param $pos DBMasterPos object
+ * @param $timeout Integer: the maximum number of seconds to wait for
+ * synchronisation
*
- * @param $pos MySQLMasterPos object
- * @param $timeout Integer: the maximum number of seconds to wait for synchronisation
+ * @return An integer: zero if the slave was past that position already,
+ * greater than zero if we waited for some period of time, less than
+ * zero if we timed out.
*/
- function masterPosWait( MySQLMasterPos $pos, $timeout ) {
+ function masterPosWait( DBMasterPos $pos, $timeout ) {
$fname = 'DatabaseBase::masterPosWait';
wfProfileIn( $fname );
- # Commit any open transactions
- if ( $this->mTrxLevel ) {
- $this->commit();
- }
-
if ( !is_null( $this->mFakeSlaveLag ) ) {
$wait = intval( ( $pos->pos - microtime( true ) + $this->mFakeSlaveLag ) * 1e6 );
@@ -2213,55 +2663,36 @@ abstract class DatabaseBase implements DatabaseType {
}
}
- # Call doQuery() directly, to avoid opening a transaction if DBO_TRX is set
- $encFile = $this->addQuotes( $pos->file );
- $encPos = intval( $pos->pos );
- $sql = "SELECT MASTER_POS_WAIT($encFile, $encPos, $timeout)";
- $res = $this->doQuery( $sql );
+ wfProfileOut( $fname );
- if ( $res && $row = $this->fetchRow( $res ) ) {
- wfProfileOut( $fname );
- return $row[0];
- } else {
- wfProfileOut( $fname );
- return false;
- }
+ # Real waits are implemented in the subclass.
+ return 0;
}
/**
- * Get the position of the master from SHOW SLAVE STATUS
+ * Get the replication position of this slave
+ *
+ * @return DBMasterPos, or false if this is not a slave.
*/
function getSlavePos() {
if ( !is_null( $this->mFakeSlaveLag ) ) {
$pos = new MySQLMasterPos( 'fake', microtime( true ) - $this->mFakeSlaveLag );
wfDebug( __METHOD__ . ": fake slave pos = $pos\n" );
return $pos;
- }
-
- $res = $this->query( 'SHOW SLAVE STATUS', 'DatabaseBase::getSlavePos' );
- $row = $this->fetchObject( $res );
-
- if ( $row ) {
- $pos = isset( $row->Exec_master_log_pos ) ? $row->Exec_master_log_pos : $row->Exec_Master_Log_Pos;
- return new MySQLMasterPos( $row->Relay_Master_Log_File, $pos );
} else {
+ # Stub
return false;
}
}
/**
- * Get the position of the master from SHOW MASTER STATUS
+ * Get the position of this master
+ *
+ * @return DBMasterPos, or false if this is not a master
*/
function getMasterPos() {
if ( $this->mFakeMaster ) {
return new MySQLMasterPos( 'fake', microtime( true ) );
- }
-
- $res = $this->query( 'SHOW MASTER STATUS', 'DatabaseBase::getMasterPos' );
- $row = $this->fetchObject( $res );
-
- if ( $row ) {
- return new MySQLMasterPos( $row->File, $row->Position );
} else {
return false;
}
@@ -2297,28 +2728,12 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * Begin a transaction, committing any previously open transaction
- * @deprecated use begin()
- */
- function immediateBegin( $fname = 'DatabaseBase::immediateBegin' ) {
- wfDeprecated( __METHOD__ );
- $this->begin();
- }
-
- /**
- * Commit transaction, if one is open
- * @deprecated use commit()
- */
- function immediateCommit( $fname = 'DatabaseBase::immediateCommit' ) {
- wfDeprecated( __METHOD__ );
- $this->commit();
- }
-
- /**
* Creates a new table with structure copied from existing table
* Note that unlike most database abstraction functions, this function does not
* automatically append database prefix, because it works at a lower
* abstraction level.
+ * The table names passed to this function shall not be quoted (this
+ * function calls addIdentifierQuotes when needed).
*
* @param $oldName String: name of table whose structure should be copied
* @param $newName String: name of table to be created
@@ -2326,19 +2741,46 @@ abstract class DatabaseBase implements DatabaseType {
* @param $fname String: calling function name
* @return Boolean: true if operation was successful
*/
- function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = 'DatabaseBase::duplicateTableStructure' ) {
- throw new MWException( 'DatabaseBase::duplicateTableStructure is not implemented in descendant class' );
+ function duplicateTableStructure( $oldName, $newName, $temporary = false,
+ $fname = 'DatabaseBase::duplicateTableStructure' )
+ {
+ throw new MWException(
+ 'DatabaseBase::duplicateTableStructure is not implemented in descendant class' );
}
/**
- * Return MW-style timestamp used for MySQL schema
+ * List all tables on the database
+ *
+ * @param $prefix Only show tables with this prefix, e.g. mw_
+ * @param $fname String: calling function name
+ */
+ function listTables( $prefix = null, $fname = 'DatabaseBase::listTables' ) {
+ throw new MWException( 'DatabaseBase::listTables is not implemented in descendant class' );
+ }
+
+ /**
+ * Convert a timestamp in one of the formats accepted by wfTimestamp()
+ * to the format used for inserting into timestamp fields in this DBMS.
+ *
+ * The result is unquoted, and needs to be passed through addQuotes()
+ * before it can be included in raw SQL.
+ *
+ * @return string
*/
function timestamp( $ts = 0 ) {
return wfTimestamp( TS_MW, $ts );
}
/**
- * Local database timestamp format or null
+ * Convert a timestamp in one of the formats accepted by wfTimestamp()
+ * to the format used for inserting into timestamp fields in this DBMS. If
+ * NULL is input, it is passed through, allowing NULL values to be inserted
+ * into timestamp fields.
+ *
+ * The result is unquoted, and needs to be passed through addQuotes()
+ * before it can be included in raw SQL.
+ *
+ * @return string
*/
function timestampOrNull( $ts = null ) {
if ( is_null( $ts ) ) {
@@ -2349,7 +2791,15 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * @todo document
+ * Take the result from a query, and wrap it in a ResultWrapper if
+ * necessary. Boolean values are passed through as is, to indicate success
+ * of write queries or failure.
+ *
+ * Once upon a time, DatabaseBase::query() returned a bare MySQL result
+ * resource, and it was necessary to call this function to convert it to
+ * a wrapper. Nowadays, raw database objects are never exposed to external
+ * callers, so this is unnecessary in external code. For compatibility with
+ * old code, ResultWrapper objects are passed through unaltered.
*/
function resultObject( $result ) {
if ( empty( $result ) ) {
@@ -2382,8 +2832,12 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * Get slave lag.
- * Currently supported only by MySQL
+ * Get slave lag. Currently supported only by MySQL.
+ *
+ * Note that this function will generate a fatal error on many
+ * installations. Most callers should use LoadBalancer::safeGetLag()
+ * instead.
+ *
* @return Database replication lag in seconds
*/
function getLag() {
@@ -2391,30 +2845,29 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * Get status information from SHOW STATUS in an associative array
- */
- function getStatus( $which = "%" ) {
- $res = $this->query( "SHOW STATUS LIKE '{$which}'" );
- $status = array();
-
- foreach ( $res as $row ) {
- $status[$row->Variable_name] = $row->Value;
- }
-
- return $status;
- }
-
- /**
* Return the maximum number of items allowed in a list, or 0 for unlimited.
+ *
+ * return int
*/
function maxListLen() {
return 0;
}
+ /**
+ * Some DBMSs have a special format for inserting into blob fields, they
+ * don't allow simple quoted strings to be inserted. To insert into such
+ * a field, pass the data through this function before passing it to
+ * DatabaseBase::insert().
+ */
function encodeBlob( $b ) {
return $b;
}
+ /**
+ * Some DBMSs return a special placeholder object representing blob fields
+ * in result objects. Pass the object through this function to return the
+ * original string.
+ */
function decodeBlob( $b ) {
return $b;
}
@@ -2431,21 +2884,23 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Read and execute SQL commands from a file.
- * Returns true on success, error string or exception on failure (depending on object's error ignore settings)
+ *
+ * Returns true on success, error string or exception on failure (depending
+ * on object's error ignore settings).
+ *
* @param $filename String: File name to open
* @param $lineCallback Callback: Optional function called before reading each line
* @param $resultCallback Callback: Optional function called for each MySQL result
- * @param $fname String: Calling function name or false if name should be generated dynamically
- * using $filename
+ * @param $fname String: Calling function name or false if name should be
+ * generated dynamically using $filename
*/
function sourceFile( $filename, $lineCallback = false, $resultCallback = false, $fname = false ) {
+ wfSuppressWarnings();
$fp = fopen( $filename, 'r' );
+ wfRestoreWarnings();
if ( false === $fp ) {
- if ( !defined( "MEDIAWIKI_INSTALL" ) )
- throw new MWException( "Could not open \"{$filename}\".\n" );
- else
- return "Could not open \"{$filename}\".\n";
+ throw new MWException( "Could not open \"{$filename}\".\n" );
}
if ( !$fname ) {
@@ -2456,12 +2911,8 @@ abstract class DatabaseBase implements DatabaseType {
$error = $this->sourceStream( $fp, $lineCallback, $resultCallback, $fname );
}
catch ( MWException $e ) {
- if ( defined( "MEDIAWIKI_INSTALL" ) ) {
- $error = $e->getMessage();
- } else {
- fclose( $fp );
- throw $e;
- }
+ fclose( $fp );
+ throw $e;
}
fclose( $fp );
@@ -2490,7 +2941,7 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Set variables to be used in sourceFile/sourceStream, in preference to the
- * ones in $GLOBALS. If an array is set here, $GLOBALS will not be used at
+ * ones in $GLOBALS. If an array is set here, $GLOBALS will not be used at
* all. If it's set to false, $GLOBALS will be used.
*
* @param $vars False, or array mapping variable name to value.
@@ -2500,14 +2951,19 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * Read and execute commands from an open file handle
- * Returns true on success, error string or exception on failure (depending on object's error ignore settings)
- * @param $fp String: File handle
+ * Read and execute commands from an open file handle.
+ *
+ * Returns true on success, error string or exception on failure (depending
+ * on object's error ignore settings).
+ *
+ * @param $fp Resource: File handle
* @param $lineCallback Callback: Optional function called before reading each line
* @param $resultCallback Callback: Optional function called for each MySQL result
* @param $fname String: Calling function name
*/
- function sourceStream( $fp, $lineCallback = false, $resultCallback = false, $fname = 'DatabaseBase::sourceStream' ) {
+ function sourceStream( $fp, $lineCallback = false, $resultCallback = false,
+ $fname = 'DatabaseBase::sourceStream' )
+ {
$cmd = "";
$done = false;
$dollarquote = false;
@@ -2517,7 +2973,7 @@ abstract class DatabaseBase implements DatabaseType {
call_user_func( $lineCallback );
}
- $line = trim( fgets( $fp, 1024 ) );
+ $line = trim( fgets( $fp ) );
$sl = strlen( $line ) - 1;
if ( $sl < 0 ) {
@@ -2538,7 +2994,7 @@ abstract class DatabaseBase implements DatabaseType {
$dollarquote = true;
}
}
- else if ( !$dollarquote ) {
+ elseif ( !$dollarquote ) {
if ( ';' == $line { $sl } && ( $sl < 2 || ';' != $line { $sl - 1 } ) ) {
$done = true;
$line = substr( $line, 0, $sl );
@@ -2574,16 +3030,19 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * Database independent variable replacement, replaces a set of variables
- * in a sql statement with their contents as given by $this->getSchemaVars().
- * Supports '{$var}' `{$var}` and / *$var* / (without the spaces) style variables
- *
- * '{$var}' should be used for text and is passed through the database's addQuotes method
- * `{$var}` should be used for identifiers (eg: table and database names), it is passed through
- * the database's addIdentifierQuotes method which can be overridden if the database
- * uses something other than backticks.
- * / *$var* / is just encoded, besides traditional dbprefix and tableoptions it's use should be avoided
- *
+ * Database independent variable replacement. Replaces a set of variables
+ * in an SQL statement with their contents as given by $this->getSchemaVars().
+ *
+ * Supports '{$var}' `{$var}` and / *$var* / (without the spaces) style variables.
+ *
+ * - '{$var}' should be used for text and is passed through the database's
+ * addQuotes method.
+ * - `{$var}` should be used for identifiers (eg: table and database names),
+ * it is passed through the database's addIdentifierQuotes method which
+ * can be overridden if the database uses something other than backticks.
+ * - / *$var* / is just encoded, besides traditional table prefix and
+ * table options its use should be avoided.
+ *
* @param $ins String: SQL statement to replace variables in
* @return String The new SQL statement with variables replaced
*/
@@ -2602,6 +3061,10 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Replace variables in sourced SQL
+ *
+ * @param $ins string
+ *
+ * @return string
*/
protected function replaceVars( $ins ) {
$ins = $this->replaceSchemaVars( $ins );
@@ -2631,8 +3094,11 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Get schema variables to use if none have been set via setSchemaVars().
- * Override this in derived classes to provide variables for tables.sql
- * and SQL patch files.
+ *
+ * Override this in derived classes to provide variables for tables.sql
+ * and SQL patch files.
+ *
+ * @return array
*/
protected function getDefaultSchemaVars() {
return array();
@@ -2640,7 +3106,10 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Table name callback
- * @private
+ *
+ * @param $matches array
+ *
+ * @return string
*/
protected function tableNameCallback( $matches ) {
return $this->tableName( $matches[1] );
@@ -2648,6 +3117,10 @@ abstract class DatabaseBase implements DatabaseType {
/**
* Index name callback
+ *
+ * @param $matches array
+ *
+ * @return string
*/
protected function indexNameCallback( $matches ) {
return $this->indexName( $matches[1] );
@@ -2698,6 +3171,8 @@ abstract class DatabaseBase implements DatabaseType {
* @param $write Array of tables to lock for write access
* @param $method String name of caller
* @param $lowPriority bool Whether to indicate writes to be LOW PRIORITY
+ *
+ * @return bool
*/
public function lockTables( $read, $write, $method, $lowPriority = true ) {
return true;
@@ -2707,12 +3182,31 @@ abstract class DatabaseBase implements DatabaseType {
* Unlock specific tables
*
* @param $method String the caller
+ *
+ * @return bool
*/
public function unlockTables( $method ) {
return true;
}
/**
+ * Delete a table
+ * @param $tableName string
+ * @param $fName string
+ * @return bool|ResultWrapper
+ */
+ public function dropTable( $tableName, $fName = 'DatabaseBase::dropTable' ) {
+ if( !$this->tableExists( $tableName ) ) {
+ return false;
+ }
+ $sql = "DROP TABLE " . $this->tableName( $tableName );
+ if( $this->cascadingDeletes() ) {
+ $sql .= " CASCADE";
+ }
+ return $this->query( $sql, $fName );
+ }
+
+ /**
* Get search engine class. All subclasses of this need to implement this
* if they wish to use searching.
*
@@ -2723,537 +3217,40 @@ abstract class DatabaseBase implements DatabaseType {
}
/**
- * Allow or deny "big selects" for this session only. This is done by setting
- * the sql_big_selects session variable.
- *
- * This is a MySQL-specific feature.
+ * Find out when 'infinity' is. Most DBMSes support this. This is a special
+ * keyword for timestamps in PostgreSQL, and works with CHAR(14) as well
+ * because "i" sorts after all numbers.
*
- * @param $value Mixed: true for allow, false for deny, or "default" to restore the initial value
- */
- public function setBigSelects( $value = true ) {
- // no-op
- }
-}
-
-/******************************************************************************
- * Utility classes
- *****************************************************************************/
-
-/**
- * Utility class.
- * @ingroup Database
- */
-class DBObject {
- public $mData;
-
- function __construct( $data ) {
- $this->mData = $data;
- }
-
- function isLOB() {
- return false;
- }
-
- function data() {
- return $this->mData;
- }
-}
-
-/**
- * Utility class
- * @ingroup Database
- *
- * This allows us to distinguish a blob from a normal string and an array of strings
- */
-class Blob {
- private $mData;
-
- function __construct( $data ) {
- $this->mData = $data;
- }
-
- function fetch() {
- return $this->mData;
- }
-}
-
-/**
- * Base for all database-specific classes representing information about database fields
- * @ingroup Database
- */
-interface Field {
- /**
- * Field name
- * @return string
- */
- function name();
-
- /**
- * Name of table this field belongs to
- * @return string
- */
- function tableName();
-
- /**
- * Database type
- * @return string
- */
- function type();
-
- /**
- * Whether this field can store NULL values
- * @return bool
- */
- function isNullable();
-}
-
-/******************************************************************************
- * Error classes
- *****************************************************************************/
-
-/**
- * Database error base class
- * @ingroup Database
- */
-class DBError extends MWException {
- public $db;
-
- /**
- * Construct a database error
- * @param $db Database object which threw the error
- * @param $error A simple error message to be used for debugging
+ * @return String
*/
- function __construct( DatabaseBase &$db, $error ) {
- $this->db =& $db;
- parent::__construct( $error );
- }
-
- function getText() {
- global $wgShowDBErrorBacktrace;
-
- $s = $this->getMessage() . "\n";
-
- if ( $wgShowDBErrorBacktrace ) {
- $s .= "Backtrace:\n" . $this->getTraceAsString() . "\n";
- }
-
- return $s;
- }
-}
-
-/**
- * @ingroup Database
- */
-class DBConnectionError extends DBError {
- public $error;
-
- function __construct( DatabaseBase &$db, $error = 'unknown error' ) {
- $msg = 'DB connection error';
-
- if ( trim( $error ) != '' ) {
- $msg .= ": $error";
- }
-
- $this->error = $error;
-
- parent::__construct( $db, $msg );
- }
-
- function useOutputPage() {
- // Not likely to work
- return false;
- }
-
- function useMessageCache() {
- // Not likely to work
- return false;
- }
-
- function getLogMessage() {
- # Don't send to the exception log
- return false;
- }
-
- function getPageTitle() {
- global $wgSitename, $wgLang;
-
- $header = "$wgSitename has a problem";
-
- if ( $wgLang instanceof Language ) {
- $header = htmlspecialchars( $wgLang->getMessage( 'dberr-header' ) );
- }
-
- return $header;
- }
-
- function getHTML() {
- global $wgLang, $wgMessageCache, $wgUseFileCache, $wgShowDBErrorBacktrace;
-
- $sorry = 'Sorry! This site is experiencing technical difficulties.';
- $again = 'Try waiting a few minutes and reloading.';
- $info = '(Can\'t contact the database server: $1)';
-
- if ( $wgLang instanceof Language ) {
- $sorry = htmlspecialchars( $wgLang->getMessage( 'dberr-problems' ) );
- $again = htmlspecialchars( $wgLang->getMessage( 'dberr-again' ) );
- $info = htmlspecialchars( $wgLang->getMessage( 'dberr-info' ) );
- }
-
- # No database access
- if ( is_object( $wgMessageCache ) ) {
- $wgMessageCache->disable();
- }
-
- if ( trim( $this->error ) == '' ) {
- $this->error = $this->db->getProperty( 'mServer' );
- }
-
- $noconnect = "<p><strong>$sorry</strong><br />$again</p><p><small>$info</small></p>";
- $text = str_replace( '$1', $this->error, $noconnect );
-
- if ( $wgShowDBErrorBacktrace ) {
- $text .= '<p>Backtrace:</p><p>' . nl2br( htmlspecialchars( $this->getTraceAsString() ) );
- }
-
- $extra = $this->searchForm();
-
- if ( $wgUseFileCache ) {
- try {
- $cache = $this->fileCachedPage();
- # Cached version on file system?
- if ( $cache !== null ) {
- # Hack: extend the body for error messages
- $cache = str_replace( array( '</html>', '</body>' ), '', $cache );
- # Add cache notice...
- $cachederror = "This is a cached copy of the requested page, and may not be up to date. ";
-
- # Localize it if possible...
- if ( $wgLang instanceof Language ) {
- $cachederror = htmlspecialchars( $wgLang->getMessage( 'dberr-cachederror' ) );
- }
-
- $warning = "<div style='color:red;font-size:150%;font-weight:bold;'>$cachederror</div>";
-
- # Output cached page with notices on bottom and re-close body
- return "{$cache}{$warning}<hr />$text<hr />$extra</body></html>";
- }
- } catch ( MWException $e ) {
- // Do nothing, just use the default page
- }
- }
-
- # Headers needed here - output is just the error message
- return $this->htmlHeader() . "$text<hr />$extra" . $this->htmlFooter();
- }
-
- function searchForm() {
- global $wgSitename, $wgServer, $wgLang;
-
- $usegoogle = "You can try searching via Google in the meantime.";
- $outofdate = "Note that their indexes of our content may be out of date.";
- $googlesearch = "Search";
-
- if ( $wgLang instanceof Language ) {
- $usegoogle = htmlspecialchars( $wgLang->getMessage( 'dberr-usegoogle' ) );
- $outofdate = htmlspecialchars( $wgLang->getMessage( 'dberr-outofdate' ) );
- $googlesearch = htmlspecialchars( $wgLang->getMessage( 'searchbutton' ) );
- }
-
- $search = htmlspecialchars( @$_REQUEST['search'] );
-
- $server = htmlspecialchars( $wgServer );
- $sitename = htmlspecialchars( $wgSitename );
-
- $trygoogle = <<<EOT
-<div style="margin: 1.5em">$usegoogle<br />
-<small>$outofdate</small></div>
-<!-- SiteSearch Google -->
-<form method="get" action="http://www.google.com/search" id="googlesearch">
- <input type="hidden" name="domains" value="$server" />
- <input type="hidden" name="num" value="50" />
- <input type="hidden" name="ie" value="UTF-8" />
- <input type="hidden" name="oe" value="UTF-8" />
-
- <input type="text" name="q" size="31" maxlength="255" value="$search" />
- <input type="submit" name="btnG" value="$googlesearch" />
- <div>
- <input type="radio" name="sitesearch" id="gwiki" value="$server" checked="checked" /><label for="gwiki">$sitename</label>
- <input type="radio" name="sitesearch" id="gWWW" value="" /><label for="gWWW">WWW</label>
- </div>
-</form>
-<!-- SiteSearch Google -->
-EOT;
- return $trygoogle;
- }
-
- function fileCachedPage() {
- global $wgTitle, $wgLang, $wgOut;
-
- if ( $wgOut->isDisabled() ) {
- return; // Done already?
- }
-
- $mainpage = 'Main Page';
-
- if ( $wgLang instanceof Language ) {
- $mainpage = htmlspecialchars( $wgLang->getMessage( 'mainpage' ) );
- }
-
- if ( $wgTitle ) {
- $t =& $wgTitle;
- } else {
- $t = Title::newFromText( $mainpage );
- }
-
- $cache = new HTMLFileCache( $t );
- if ( $cache->isFileCached() ) {
- return $cache->fetchPageText();
- } else {
- return '';
- }
+ public function getInfinity() {
+ return 'infinity';
}
- function htmlBodyOnly() {
- return true;
- }
-}
-
-/**
- * @ingroup Database
- */
-class DBQueryError extends DBError {
- public $error, $errno, $sql, $fname;
-
- function __construct( DatabaseBase &$db, $error, $errno, $sql, $fname ) {
- $message = "A database error has occurred. Did you forget to run maintenance/update.php after upgrading? See: http://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" .
- "Query: $sql\n" .
- "Function: $fname\n" .
- "Error: $errno $error\n";
-
- parent::__construct( $db, $message );
-
- $this->error = $error;
- $this->errno = $errno;
- $this->sql = $sql;
- $this->fname = $fname;
- }
-
- function getText() {
- global $wgShowDBErrorBacktrace;
-
- if ( $this->useMessageCache() ) {
- $s = wfMsg( 'dberrortextcl', htmlspecialchars( $this->getSQL() ),
- htmlspecialchars( $this->fname ), $this->errno, htmlspecialchars( $this->error ) ) . "\n";
-
- if ( $wgShowDBErrorBacktrace ) {
- $s .= "Backtrace:\n" . $this->getTraceAsString() . "\n";
- }
-
- return $s;
- } else {
- return parent::getText();
- }
- }
-
- function getSQL() {
- global $wgShowSQLErrors;
-
- if ( !$wgShowSQLErrors ) {
- return $this->msg( 'sqlhidden', 'SQL hidden' );
- } else {
- return $this->sql;
- }
- }
-
- function getLogMessage() {
- # Don't send to the exception log
- return false;
- }
-
- function getPageTitle() {
- return $this->msg( 'databaseerror', 'Database error' );
- }
-
- function getHTML() {
- global $wgShowDBErrorBacktrace;
-
- if ( $this->useMessageCache() ) {
- $s = wfMsgNoDB( 'dberrortext', htmlspecialchars( $this->getSQL() ),
- htmlspecialchars( $this->fname ), $this->errno, htmlspecialchars( $this->error ) );
- } else {
- $s = nl2br( htmlspecialchars( $this->getMessage() ) );
- }
-
- if ( $wgShowDBErrorBacktrace ) {
- $s .= '<p>Backtrace:</p><p>' . nl2br( htmlspecialchars( $this->getTraceAsString() ) );
- }
-
- return $s;
- }
-}
-
-/**
- * @ingroup Database
- */
-class DBUnexpectedError extends DBError {}
-
-
-/**
- * Result wrapper for grabbing data queried by someone else
- * @ingroup Database
- */
-class ResultWrapper implements Iterator {
- var $db, $result, $pos = 0, $currentRow = null;
-
/**
- * Create a new result object from a result resource and a Database object
+ * Encode an expiry time
+ *
+ * @param $expiry String: timestamp for expiry, or the 'infinity' string
+ * @return String
*/
- function __construct( $database, $result ) {
- $this->db = $database;
-
- if ( $result instanceof ResultWrapper ) {
- $this->result = $result->result;
+ public function encodeExpiry( $expiry ) {
+ if ( $expiry == '' || $expiry == $this->getInfinity() ) {
+ return $this->getInfinity();
} else {
- $this->result = $result;
+ return $this->timestamp( $expiry );
}
}
/**
- * Get the number of rows in a result object
- */
- function numRows() {
- return $this->db->numRows( $this );
- }
-
- /**
- * Fetch the next row from the given result object, in object form.
- * Fields can be retrieved with $row->fieldname, with fields acting like
- * member variables.
+ * Allow or deny "big selects" for this session only. This is done by setting
+ * the sql_big_selects session variable.
*
- * @return MySQL row object
- * @throws DBUnexpectedError Thrown if the database returns an error
- */
- function fetchObject() {
- return $this->db->fetchObject( $this );
- }
-
- /**
- * Fetch the next row from the given result object, in associative array
- * form. Fields are retrieved with $row['fieldname'].
+ * This is a MySQL-specific feature.
*
- * @return MySQL row object
- * @throws DBUnexpectedError Thrown if the database returns an error
- */
- function fetchRow() {
- return $this->db->fetchRow( $this );
- }
-
- /**
- * Free a result object
+ * @param $value Mixed: true for allow, false for deny, or "default" to
+ * restore the initial value
*/
- function free() {
- $this->db->freeResult( $this );
- unset( $this->result );
- unset( $this->db );
- }
-
- /**
- * Change the position of the cursor in a result object
- * See mysql_data_seek()
- */
- function seek( $row ) {
- $this->db->dataSeek( $this, $row );
- }
-
- /*********************
- * Iterator functions
- * Note that using these in combination with the non-iterator functions
- * above may cause rows to be skipped or repeated.
- */
-
- function rewind() {
- if ( $this->numRows() ) {
- $this->db->dataSeek( $this, 0 );
- }
- $this->pos = 0;
- $this->currentRow = null;
- }
-
- function current() {
- if ( is_null( $this->currentRow ) ) {
- $this->next();
- }
- return $this->currentRow;
- }
-
- function key() {
- return $this->pos;
- }
-
- function next() {
- $this->pos++;
- $this->currentRow = $this->fetchObject();
- return $this->currentRow;
- }
-
- function valid() {
- return $this->current() !== false;
- }
-}
-
-/**
- * Overloads the relevant methods of the real ResultsWrapper so it
- * doesn't go anywhere near an actual database.
- */
-class FakeResultWrapper extends ResultWrapper {
- var $result = array();
- var $db = null; // And it's going to stay that way :D
- var $pos = 0;
- var $currentRow = null;
-
- function __construct( $array ) {
- $this->result = $array;
- }
-
- function numRows() {
- return count( $this->result );
- }
-
- function fetchRow() {
- $this->currentRow = $this->result[$this->pos++];
- return $this->currentRow;
- }
-
- function seek( $row ) {
- $this->pos = $row;
- }
-
- function free() {}
-
- // Callers want to be able to access fields with $this->fieldName
- function fetchObject() {
- $this->currentRow = $this->result[$this->pos++];
- return (object)$this->currentRow;
- }
-
- function rewind() {
- $this->pos = 0;
- $this->currentRow = null;
- }
-}
-
-/**
- * Used by DatabaseBase::buildLike() to represent characters that have special meaning in SQL LIKE clauses
- * and thus need no escaping. Don't instantiate it manually, use DatabaseBase::anyChar() and anyString() instead.
- */
-class LikeMatch {
- private $str;
-
- public function __construct( $s ) {
- $this->str = $s;
- }
-
- public function toString() {
- return $this->str;
+ public function setBigSelects( $value = true ) {
+ // no-op
}
}
diff --git a/includes/db/DatabaseError.php b/includes/db/DatabaseError.php
new file mode 100644
index 00000000..b7fb1b22
--- /dev/null
+++ b/includes/db/DatabaseError.php
@@ -0,0 +1,314 @@
+<?php
+
+/**
+ * Database error base class
+ * @ingroup Database
+ */
+class DBError extends MWException {
+
+ /**
+ * @var DatabaseBase
+ */
+ public $db;
+
+ /**
+ * Construct a database error
+ * @param $db DatabaseBase object which threw the error
+ * @param $error String A simple error message to be used for debugging
+ */
+ function __construct( DatabaseBase &$db, $error ) {
+ $this->db = $db;
+ parent::__construct( $error );
+ }
+
+ /**
+ * @param $html string
+ * @return string
+ */
+ protected function getContentMessage( $html ) {
+ if ( $html ) {
+ return nl2br( htmlspecialchars( $this->getMessage() ) );
+ } else {
+ return $this->getMessage();
+ }
+ }
+
+ /**
+ * @return string
+ */
+ function getText() {
+ global $wgShowDBErrorBacktrace;
+
+ $s = $this->getContentMessage( false ) . "\n";
+
+ if ( $wgShowDBErrorBacktrace ) {
+ $s .= "Backtrace:\n" . $this->getTraceAsString() . "\n";
+ }
+
+ return $s;
+ }
+
+ /**
+ * @return string
+ */
+ function getHTML() {
+ global $wgShowDBErrorBacktrace;
+
+ $s = $this->getContentMessage( true );
+
+ if ( $wgShowDBErrorBacktrace ) {
+ $s .= '<p>Backtrace:</p><p>' . nl2br( htmlspecialchars( $this->getTraceAsString() ) );
+ }
+
+ return $s;
+ }
+}
+
+/**
+ * @ingroup Database
+ */
+class DBConnectionError extends DBError {
+ public $error;
+
+ function __construct( DatabaseBase &$db, $error = 'unknown error' ) {
+ $msg = 'DB connection error';
+
+ if ( trim( $error ) != '' ) {
+ $msg .= ": $error";
+ }
+
+ $this->error = $error;
+
+ parent::__construct( $db, $msg );
+ }
+
+ function useOutputPage() {
+ // Not likely to work
+ return false;
+ }
+
+ function msg( $key, $fallback /*[, params...] */ ) {
+ global $wgLang;
+
+ $args = array_slice( func_get_args(), 2 );
+
+ if ( $this->useMessageCache() ) {
+ $message = $wgLang->getMessage( $key );
+ } else {
+ $message = $fallback;
+ }
+ return wfMsgReplaceArgs( $message, $args );
+ }
+
+ function getLogMessage() {
+ # Don't send to the exception log
+ return false;
+ }
+
+ /**
+ * @return string
+ */
+ function getPageTitle() {
+ global $wgSitename;
+ return htmlspecialchars( $this->msg( 'dberr-header', "$wgSitename has a problem" ) );
+ }
+
+ /**
+ * @return string
+ */
+ function getHTML() {
+ global $wgShowDBErrorBacktrace;
+
+ $sorry = htmlspecialchars( $this->msg( 'dberr-problems', 'Sorry! This site is experiencing technical difficulties.' ) );
+ $again = htmlspecialchars( $this->msg( 'dberr-again', 'Try waiting a few minutes and reloading.' ) );
+ $info = htmlspecialchars( $this->msg( 'dberr-info', '(Can\'t contact the database server: $1)' ) );
+
+ # No database access
+ MessageCache::singleton()->disable();
+
+ if ( trim( $this->error ) == '' ) {
+ $this->error = $this->db->getProperty( 'mServer' );
+ }
+
+ $this->error = Html::element( 'span', array( 'dir' => 'ltr' ), $this->error );
+
+ $noconnect = "<h1>$sorry</h1><p>$again</p><p><small>$info</small></p>";
+ $text = str_replace( '$1', $this->error, $noconnect );
+
+ if ( $wgShowDBErrorBacktrace ) {
+ $text .= '<p>Backtrace:</p><p>' . nl2br( htmlspecialchars( $this->getTraceAsString() ) );
+ }
+
+ $extra = $this->searchForm();
+
+ return "$text<hr />$extra";
+ }
+
+ public function reportHTML(){
+ global $wgUseFileCache;
+
+ # Check whether we can serve a file-cached copy of the page with the error underneath
+ if ( $wgUseFileCache ) {
+ try {
+ $cache = $this->fileCachedPage();
+ # Cached version on file system?
+ if ( $cache !== null ) {
+ # Hack: extend the body for error messages
+ $cache = str_replace( array( '</html>', '</body>' ), '', $cache );
+ # Add cache notice...
+ $cache .= '<div style="color:red;font-size:150%;font-weight:bold;">'.
+ htmlspecialchars( $this->msg( 'dberr-cachederror',
+ 'This is a cached copy of the requested page, and may not be up to date. ' ) ) .
+ '</div>';
+
+ # Output cached page with notices on bottom and re-close body
+ echo "{$cache}<hr />{$this->getHTML()}</body></html>";
+ return;
+ }
+ } catch ( MWException $e ) {
+ // Do nothing, just use the default page
+ }
+ }
+
+ # We can't, cough and die in the usual fashion
+ return parent::reportHTML();
+ }
+
+ /**
+ * @return string
+ */
+ function searchForm() {
+ global $wgSitename, $wgServer, $wgRequest;
+
+ $usegoogle = htmlspecialchars( $this->msg( 'dberr-usegoogle', 'You can try searching via Google in the meantime.' ) );
+ $outofdate = htmlspecialchars( $this->msg( 'dberr-outofdate', 'Note that their indexes of our content may be out of date.' ) );
+ $googlesearch = htmlspecialchars( $this->msg( 'searchbutton', 'Search' ) );
+
+ $search = htmlspecialchars( $wgRequest->getVal( 'search' ) );
+
+ $server = htmlspecialchars( $wgServer );
+ $sitename = htmlspecialchars( $wgSitename );
+
+ $trygoogle = <<<EOT
+<div style="margin: 1.5em">$usegoogle<br />
+<small>$outofdate</small></div>
+<!-- SiteSearch Google -->
+<form method="get" action="http://www.google.com/search" id="googlesearch">
+ <input type="hidden" name="domains" value="$server" />
+ <input type="hidden" name="num" value="50" />
+ <input type="hidden" name="ie" value="UTF-8" />
+ <input type="hidden" name="oe" value="UTF-8" />
+
+ <input type="text" name="q" size="31" maxlength="255" value="$search" />
+ <input type="submit" name="btnG" value="$googlesearch" />
+ <div>
+ <input type="radio" name="sitesearch" id="gwiki" value="$server" checked="checked" /><label for="gwiki">$sitename</label>
+ <input type="radio" name="sitesearch" id="gWWW" value="" /><label for="gWWW">WWW</label>
+ </div>
+</form>
+<!-- SiteSearch Google -->
+EOT;
+ return $trygoogle;
+ }
+
+ /**
+ * @return string
+ */
+ private function fileCachedPage() {
+ global $wgTitle, $wgOut;
+
+ if ( $wgOut->isDisabled() ) {
+ return; // Done already?
+ }
+
+ if ( $wgTitle ) {
+ $t =& $wgTitle;
+ } else {
+ $t = Title::newFromText( $this->msg( 'mainpage', 'Main Page' ) );
+ }
+
+ $cache = new HTMLFileCache( $t );
+ if ( $cache->isFileCached() ) {
+ return $cache->fetchPageText();
+ } else {
+ return '';
+ }
+ }
+}
+
+/**
+ * @ingroup Database
+ */
+class DBQueryError extends DBError {
+ public $error, $errno, $sql, $fname;
+
+ function __construct( DatabaseBase &$db, $error, $errno, $sql, $fname ) {
+ $message = "A database error has occurred. Did you forget to run maintenance/update.php after upgrading? See: http://www.mediawiki.org/wiki/Manual:Upgrading#Run_the_update_script\n" .
+ "Query: $sql\n" .
+ "Function: $fname\n" .
+ "Error: $errno $error\n";
+ global $wgShowDBErrorBacktrace;
+ if( $wgShowDBErrorBacktrace ) {
+ $message .= $this->getTraceAsString();
+ }
+ parent::__construct( $db, $message );
+
+ $this->error = $error;
+ $this->errno = $errno;
+ $this->sql = $sql;
+ $this->fname = $fname;
+ }
+
+ /**
+ * @param $html string
+ * @return string
+ */
+ function getContentMessage( $html ) {
+ if ( $this->useMessageCache() ) {
+ if ( $html ) {
+ $msg = 'dberrortext';
+ $sql = htmlspecialchars( $this->getSQL() );
+ $fname = htmlspecialchars( $this->fname );
+ $error = htmlspecialchars( $this->error );
+ } else {
+ $msg = 'dberrortextcl';
+ $sql = $this->getSQL();
+ $fname = $this->fname;
+ $error = $this->error;
+ }
+ return wfMsg( $msg, $sql, $fname, $this->errno, $error );
+ } else {
+ return parent::getContentMessage( $html );
+ }
+ }
+
+ /**
+ * @return String
+ */
+ function getSQL() {
+ global $wgShowSQLErrors;
+
+ if ( !$wgShowSQLErrors ) {
+ return $this->msg( 'sqlhidden', 'SQL hidden' );
+ } else {
+ return $this->sql;
+ }
+ }
+
+ function getLogMessage() {
+ # Don't send to the exception log
+ return false;
+ }
+
+ /**
+ * @return String
+ */
+ function getPageTitle() {
+ return $this->msg( 'databaseerror', 'Database error' );
+ }
+}
+
+/**
+ * @ingroup Database
+ */
+class DBUnexpectedError extends DBError {}
diff --git a/includes/db/DatabaseIbm_db2.php b/includes/db/DatabaseIbm_db2.php
index becca11e..147b9d59 100644
--- a/includes/db/DatabaseIbm_db2.php
+++ b/includes/db/DatabaseIbm_db2.php
@@ -114,7 +114,7 @@ class DatabaseIbm_db2 extends DatabaseBase {
protected $mPHPError = false;
protected $mServer, $mUser, $mPassword, $mConn = null, $mDBname;
- protected $mOut, $mOpened = false;
+ protected $mOpened = false;
protected $mTablePrefix;
protected $mFlags;
@@ -144,7 +144,7 @@ class DatabaseIbm_db2 extends DatabaseBase {
public $mStmtOptions = array();
/** Default schema */
- const USE_GLOBAL = 'mediawiki';
+ const USE_GLOBAL = 'get from global';
/** Option that applies to nothing */
const NONE_OPTION = 0x00;
@@ -268,6 +268,10 @@ class DatabaseIbm_db2 extends DatabaseBase {
}
// configure the connection and statement objects
+ /*
+ $this->setDB2Option( 'cursor', 'DB2_SCROLLABLE',
+ self::CONN_OPTION | self::STMT_OPTION );
+ */
$this->setDB2Option( 'db2_attr_case', 'DB2_CASE_LOWER',
self::CONN_OPTION | self::STMT_OPTION );
$this->setDB2Option( 'deferred_prepare', 'DB2_DEFERRED_PREPARE_ON',
@@ -321,27 +325,17 @@ class DatabaseIbm_db2 extends DatabaseBase {
* @return a fresh connection
*/
public function open( $server, $user, $password, $dbName ) {
- // Load the port number
- global $wgDBport;
wfProfileIn( __METHOD__ );
- // Load IBM DB2 driver if missing
+ # Load IBM DB2 driver if missing
wfDl( 'ibm_db2' );
- // Test for IBM DB2 support, to avoid suppressed fatal error
+ # Test for IBM DB2 support, to avoid suppressed fatal error
if ( !function_exists( 'db2_connect' ) ) {
- $error = <<<ERROR
-DB2 functions missing, have you enabled the ibm_db2 extension for PHP?
-
-ERROR;
- $this->installPrint( $error );
- $this->reportConnectionError( $error );
+ throw new DBConnectionError( $this, "DB2 functions missing, have you enabled the ibm_db2 extension for PHP?" );
}
- if ( strlen( $user ) < 1 ) {
- wfProfileOut( __METHOD__ );
- return null;
- }
+ global $wgDBport;
// Close existing connection
$this->close();
@@ -354,24 +348,26 @@ ERROR;
$this->openUncataloged( $dbName, $user, $password, $server, $port );
- // Apply connection config
- db2_set_option( $this->mConn, $this->mConnOptions, 1 );
- // Some MediaWiki code is still transaction-less (?).
- // The strategy is to keep AutoCommit on for that code
- // but switch it off whenever a transaction is begun.
- db2_autocommit( $this->mConn, DB2_AUTOCOMMIT_ON );
-
if ( !$this->mConn ) {
$this->installPrint( "DB connection error\n" );
$this->installPrint(
"Server: $server, Database: $dbName, User: $user, Password: "
. substr( $password, 0, 3 ) . "...\n" );
$this->installPrint( $this->lastError() . "\n" );
-
wfProfileOut( __METHOD__ );
- return null;
+ wfDebug( "DB connection error\n" );
+ wfDebug( "Server: $server, Database: $dbName, User: $user, Password: " . substr( $password, 0, 3 ) . "...\n" );
+ wfDebug( $this->lastError() . "\n" );
+ throw new DBConnectionError( $this, $this->lastError() );
}
+ // Apply connection config
+ db2_set_option( $this->mConn, $this->mConnOptions, 1 );
+ // Some MediaWiki code is still transaction-less (?).
+ // The strategy is to keep AutoCommit on for that code
+ // but switch it off whenever a transaction is begun.
+ db2_autocommit( $this->mConn, DB2_AUTOCOMMIT_ON );
+
$this->mOpened = true;
$this->applySchema();
@@ -383,7 +379,9 @@ ERROR;
* Opens a cataloged database connection, sets mConn
*/
protected function openCataloged( $dbName, $user, $password ) {
- @$this->mConn = db2_pconnect( $dbName, $user, $password );
+ wfSuppressWarnings();
+ $this->mConn = db2_pconnect( $dbName, $user, $password );
+ wfRestoreWarnings();
}
/**
@@ -391,16 +389,10 @@ ERROR;
*/
protected function openUncataloged( $dbName, $user, $password, $server, $port )
{
- $str = "DRIVER={IBM DB2 ODBC DRIVER};";
- $str .= "DATABASE=$dbName;";
- $str .= "HOSTNAME=$server;";
- // port was formerly validated to not be 0
- $str .= "PORT=$port;";
- $str .= "PROTOCOL=TCPIP;";
- $str .= "UID=$user;";
- $str .= "PWD=$password;";
-
- @$this->mConn = db2_pconnect( $str, $user, $password );
+ $dsn = "DRIVER={IBM DB2 ODBC DRIVER};DATABASE=$dbName;CHARSET=UTF-8;HOSTNAME=$server;PORT=$port;PROTOCOL=TCPIP;UID=$user;PWD=$password;";
+ wfSuppressWarnings();
+ $this->mConn = db2_pconnect($dsn, "", "", array());
+ wfRestoreWarnings();
}
/**
@@ -420,23 +412,6 @@ ERROR;
}
/**
- * Returns a fresh instance of this class
- *
- * @param $server String: hostname of database server
- * @param $user String: username
- * @param $password String
- * @param $dbName String: database name on the server
- * @param $flags Integer: database behaviour flags (optional, unused)
- * @return DatabaseIbm_db2 object
- */
- static function newFromParams( $server, $user, $password, $dbName,
- $flags = 0 )
- {
- return new DatabaseIbm_db2( $server, $user, $password, $dbName,
- $flags );
- }
-
- /**
* Retrieves the most current database error
* Forces a database rollback
*/
@@ -482,15 +457,19 @@ ERROR;
* The DBMS-dependent part of query()
* @param $sql String: SQL query.
* @return object Result object for fetch functions or false on failure
- * @access private
*/
- /*private*/
- public function doQuery( $sql ) {
+ protected function doQuery( $sql ) {
$this->applySchema();
-
+
+ // Needed to handle any UTF-8 encoding issues in the raw sql
+ // Note that we fully support prepared statements for DB2
+ // prepare() and execute() should be used instead of doQuery() whenever possible
+ $sql = utf8_decode($sql);
+
$ret = db2_exec( $this->mConn, $sql, $this->mStmtOptions );
if( $ret == false ) {
$error = db2_stmt_errormsg();
+
$this->installPrint( "<pre>$sql</pre>" );
$this->installPrint( $error );
throw new DBUnexpectedError( $this, 'SQL error: '
@@ -515,17 +494,18 @@ ERROR;
*/
public function tableExists( $table ) {
$schema = $this->mSchema;
- $sql = <<< EOF
-SELECT COUNT( * ) FROM SYSIBM.SYSTABLES ST
-WHERE ST.NAME = '$table' AND ST.CREATOR = '$schema'
-EOF;
+
+ $sql = "SELECT COUNT( * ) FROM SYSIBM.SYSTABLES ST WHERE ST.NAME = '" .
+ strtoupper( $table ) .
+ "' AND ST.CREATOR = '" .
+ strtoupper( $schema ) . "'";
$res = $this->query( $sql );
if ( !$res ) {
return false;
}
// If the table exists, there should be one of it
- @$row = $this->fetchRow( $res );
+ $row = $this->fetchRow( $res );
$count = $row[0];
if ( $count == '1' || $count == 1 ) {
return true;
@@ -547,7 +527,9 @@ EOF;
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- @$row = db2_fetch_object( $res );
+ wfSuppressWarnings();
+ $row = db2_fetch_object( $res );
+ wfRestoreWarnings();
if( $this->lastErrno() ) {
throw new DBUnexpectedError( $this, 'Error in fetchObject(): '
. htmlspecialchars( $this->lastError() ) );
@@ -567,51 +549,17 @@ EOF;
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- @$row = db2_fetch_array( $res );
- if ( $this->lastErrno() ) {
- throw new DBUnexpectedError( $this, 'Error in fetchRow(): '
- . htmlspecialchars( $this->lastError() ) );
- }
- return $row;
- }
-
- /**
- * Create tables, stored procedures, and so on
- */
- public function setup_database() {
- try {
- // TODO: switch to root login if available
-
- // Switch into the correct namespace
- $this->applySchema();
- $this->begin();
-
- $res = $this->sourceFile( "../maintenance/ibm_db2/tables.sql" );
- if ( $res !== true ) {
- print ' <b>FAILED</b>: ' . htmlspecialchars( $res ) . '</li>';
- } else {
- print ' done</li>';
- }
- $res = $this->sourceFile( "../maintenance/ibm_db2/foreignkeys.sql" );
- if ( $res !== true ) {
- print ' <b>FAILED</b>: ' . htmlspecialchars( $res ) . '</li>';
- } else {
- print '<li>Foreign keys done</li>';
- }
-
- // TODO: populate interwiki links
-
- if ( $this->lastError() ) {
- $this->installPrint(
- 'Errors encountered during table creation -- rolled back' );
- $this->installPrint( 'Please install again' );
- $this->rollback();
- } else {
- $this->commit();
+ if ( db2_num_rows( $res ) > 0) {
+ wfSuppressWarnings();
+ $row = db2_fetch_array( $res );
+ wfRestoreWarnings();
+ if ( $this->lastErrno() ) {
+ throw new DBUnexpectedError( $this, 'Error in fetchRow(): '
+ . htmlspecialchars( $this->lastError() ) );
}
- } catch ( MWException $mwe ) {
- print "<br><pre>$mwe</pre><br>";
+ return $row;
}
+ return false;
}
/**
@@ -797,9 +745,10 @@ EOF;
* Handle reserved keyword replacement in table names
*
* @param $name Object
+ * @param $name Boolean
* @return String
*/
- public function tableName( $name ) {
+ public function tableName( $name, $quoted = true ) {
// we want maximum compatibility with MySQL schema
return $name;
}
@@ -915,9 +864,9 @@ EOF;
} else {
$sql .= '( ?' . str_repeat( ',?', $key_count-1 ) . ' )';
}
- //$this->installPrint( "Preparing the following SQL:" );
- //$this->installPrint( "$sql" );
- //$this->installPrint( print_r( $args, true ));
+ $this->installPrint( "Preparing the following SQL:" );
+ $this->installPrint( "$sql" );
+ $this->installPrint( print_r( $args, true ));
$stmt = $this->prepare( $sql );
// start a transaction/enter transaction mode
@@ -990,18 +939,22 @@ EOF;
*/
private function removeNullPrimaryKeys( $table, $args ) {
$schema = $this->mSchema;
+
// find out the primary keys
- $keyres = db2_primary_keys( $this->mConn, null, strtoupper( $schema ),
- strtoupper( $table )
- );
+ $keyres = $this->doQuery( "SELECT NAME FROM SYSIBM.SYSCOLUMNS WHERE TBNAME = '"
+ . strtoupper( $table )
+ . "' AND TBCREATOR = '"
+ . strtoupper( $schema )
+ . "' AND KEYSEQ > 0" );
+
$keys = array();
for (
- $row = $this->fetchObject( $keyres );
+ $row = $this->fetchRow( $keyres );
$row != null;
- $row = $this->fetchObject( $keyres )
+ $row = $this->fetchRow( $keyres )
)
{
- $keys[] = strtolower( $row->column_name );
+ $keys[] = strtolower( $row[0] );
}
// remove primary keys
foreach ( $args as $ai => $row ) {
@@ -1084,66 +1037,6 @@ EOF;
}
/**
- * Simulates REPLACE with a DELETE followed by INSERT
- * @param $table Object
- * @param $uniqueIndexes Array consisting of indexes and arrays of indexes
- * @param $rows Array: rows to insert
- * @param $fname String: name of the function for profiling
- * @return nothing
- */
- function replace( $table, $uniqueIndexes, $rows,
- $fname = 'DatabaseIbm_db2::replace' )
- {
- $table = $this->tableName( $table );
-
- if ( count( $rows )==0 ) {
- return;
- }
-
- # Single row case
- if ( !is_array( reset( $rows ) ) ) {
- $rows = array( $rows );
- }
-
- foreach( $rows as $row ) {
- # Delete rows which collide
- if ( $uniqueIndexes ) {
- $sql = "DELETE FROM $table WHERE ";
- $first = true;
- foreach ( $uniqueIndexes as $index ) {
- if ( $first ) {
- $first = false;
- $sql .= '( ';
- } else {
- $sql .= ' ) OR ( ';
- }
- if ( is_array( $index ) ) {
- $first2 = true;
- foreach ( $index as $col ) {
- if ( $first2 ) {
- $first2 = false;
- } else {
- $sql .= ' AND ';
- }
- $sql .= $col . '=' . $this->addQuotes( $row[$col] );
- }
- } else {
- $sql .= $index . '=' . $this->addQuotes( $row[$index] );
- }
- }
- $sql .= ' )';
- $this->query( $sql, $fname );
- }
-
- # Now insert the row
- $sql = "INSERT INTO $table ( "
- . $this->makeList( array_keys( $row ), LIST_NAMES )
- .' ) VALUES ( ' . $this->makeList( $row, LIST_COMMA ) . ' )';
- $this->query( $sql, $fname );
- }
- }
-
- /**
* Returns the number of rows in the result set
* Has to be called right after the corresponding select query
* @param $res Object result set
@@ -1153,6 +1046,7 @@ EOF;
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
+
if ( $this->mNumRows ) {
return $this->mNumRows;
} else {
@@ -1186,7 +1080,10 @@ EOF;
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- if ( !@db2_free_result( $res ) ) {
+ wfSuppressWarnings();
+ $ok = db2_free_result( $res );
+ wfRestoreWarnings();
+ if ( !$ok ) {
throw new DBUnexpectedError( $this, "Unable to free DB2 result\n" );
}
}
@@ -1365,14 +1262,6 @@ EOF;
######################################
/**
* Not implemented
- * @return string ''
- */
- public function getStatus( $which = '%' ) {
- $this->installPrint( 'Not implemented for DB2: getStatus()' );
- return '';
- }
- /**
- * Not implemented
* @return string $sql
*/
public function limitResultForUpdate( $sql, $num ) {
@@ -1496,39 +1385,6 @@ SQL;
}
/**
- * DELETE where the condition is a join
- * @param $delTable String: deleting from this table
- * @param $joinTable String: using data from this table
- * @param $delVar String: variable in deleteable table
- * @param $joinVar String: variable in data table
- * @param $conds Array: conditionals for join table
- * @param $fname String: function name for profiling
- */
- public function deleteJoin( $delTable, $joinTable, $delVar, $joinVar,
- $conds, $fname = "DatabaseIbm_db2::deleteJoin" )
- {
- if ( !$conds ) {
- throw new DBUnexpectedError( $this,
- 'DatabaseIbm_db2::deleteJoin() called with empty $conds' );
- }
-
- $delTable = $this->tableName( $delTable );
- $joinTable = $this->tableName( $joinTable );
- $sql = <<<SQL
-DELETE FROM $delTable
-WHERE $delVar IN (
- SELECT $joinVar FROM $joinTable
-
-SQL;
- if ( $conds != '*' ) {
- $sql .= 'WHERE ' . $this->makeList( $conds, LIST_AND );
- }
- $sql .= ' )';
-
- $this->query( $sql, $fname );
- }
-
- /**
* Description is left as an exercise for the reader
* @param $b Mixed: data to be encoded
* @return IBM_DB2Blob
diff --git a/includes/db/DatabaseMssql.php b/includes/db/DatabaseMssql.php
index 41ba2d08..cbdf89ca 100644
--- a/includes/db/DatabaseMssql.php
+++ b/includes/db/DatabaseMssql.php
@@ -17,6 +17,8 @@ class DatabaseMssql extends DatabaseBase {
var $mLastResult = NULL;
var $mAffectedRows = NULL;
+ var $mPort;
+
function cascadingDeletes() {
return true;
}
@@ -42,10 +44,6 @@ class DatabaseMssql extends DatabaseBase {
return false;
}
- static function newFromParams( $server, $user, $password, $dbName, $flags = 0 ) {
- return new DatabaseMssql( $server, $user, $password, $dbName, $flags );
- }
-
/**
* Usually aborts on failure
*/
@@ -83,7 +81,7 @@ class DatabaseMssql extends DatabaseBase {
$ntAuthPassTest = strtolower( $password );
// Decide which auth scenerio to use
- if( ( $ntAuthPassTest == 'ntauth' && $ntAuthUserTest == 'ntauth' ) ){
+ if( $ntAuthPassTest == 'ntauth' && $ntAuthUserTest == 'ntauth' ){
// Don't add credentials to $connectionInfo
} else {
$connectionInfo['UID'] = $user;
@@ -91,7 +89,9 @@ class DatabaseMssql extends DatabaseBase {
}
// End NT Auth Hack
- $this->mConn = @sqlsrv_connect( $server, $connectionInfo );
+ wfSuppressWarnings();
+ $this->mConn = sqlsrv_connect( $server, $connectionInfo );
+ wfRestoreWarnings();
if ( $this->mConn === false ) {
wfDebug( "DB connection error\n" );
@@ -117,7 +117,7 @@ class DatabaseMssql extends DatabaseBase {
}
}
- function doQuery( $sql ) {
+ protected function doQuery( $sql ) {
wfDebug( "SQL: [$sql]\n" );
$this->offset = 0;
@@ -241,16 +241,18 @@ class DatabaseMssql extends DatabaseBase {
function lastError() {
if ( $this->mConn ) {
return $this->getErrors();
- }
- else {
+ } else {
return "No database connection";
}
}
function lastErrno() {
$err = sqlsrv_errors( SQLSRV_ERR_ALL );
- if ( $err[0] ) return $err[0]['code'];
- else return 0;
+ if ( $err[0] ) {
+ return $err[0]['code'];
+ } else {
+ return 0;
+ }
}
function affectedRows() {
@@ -321,7 +323,6 @@ class DatabaseMssql extends DatabaseBase {
return $rows;
}
-
/**
* Returns information about an index
* If errors are explicitly ignored, returns NULL on failure
@@ -344,7 +345,7 @@ class DatabaseMssql extends DatabaseBase {
$row->Column_name = trim( $col );
$result[] = clone $row;
}
- } else if ( $index == 'PRIMARY' && stristr( $row->index_description, 'PRIMARY' ) ) {
+ } elseif ( $index == 'PRIMARY' && stristr( $row->index_description, 'PRIMARY' ) ) {
$row->Non_unique = 0;
$cols = explode( ", ", $row->index_keys );
foreach ( $cols as $col ) {
@@ -383,7 +384,6 @@ class DatabaseMssql extends DatabaseBase {
$allOk = true;
-
// We know the table we're inserting into, get its identity column
$identity = null;
$tableRaw = preg_replace( '#\[([^\]]*)\]#', '$1', $table ); // strip matching square brackets from table name
@@ -421,7 +421,6 @@ class DatabaseMssql extends DatabaseBase {
$keys = array_keys( $a );
-
// INSERT IGNORE is not supported by SQL Server
// remove IGNORE from options list and set ignore flag to true
$ignoreClause = false;
@@ -436,7 +435,7 @@ class DatabaseMssql extends DatabaseBase {
// example:
// MySQL: INSERT IGNORE INTO user_groups (ug_user,ug_group) VALUES ('1','sysop')
// MSSQL: IF NOT EXISTS (SELECT * FROM user_groups WHERE ug_user = '1') INSERT INTO user_groups (ug_user,ug_group) VALUES ('1','sysop')
- if ( $ignoreClause == true ) {
+ if ( $ignoreClause ) {
$prival = $a[$keys[0]];
$sqlPre .= "IF NOT EXISTS (SELECT * FROM $table WHERE $keys[0] = '$prival')";
}
@@ -453,14 +452,14 @@ class DatabaseMssql extends DatabaseBase {
$sql .= ',';
}
if ( is_string( $value ) ) {
- $sql .= $this->addIdentifierQuotes( $value );
+ $sql .= $this->addQuotes( $value );
} elseif ( is_null( $value ) ) {
$sql .= 'null';
} elseif ( is_array( $value ) || is_object( $value ) ) {
if ( is_object( $value ) && strtolower( get_class( $value ) ) == 'blob' ) {
- $sql .= $this->addIdentifierQuotes( $value->fetch() );
+ $sql .= $this->addQuotes( $value );
} else {
- $sql .= $this->addIdentifierQuotes( serialize( $value ) );
+ $sql .= $this->addQuotes( serialize( $value ) );
}
} else {
$sql .= $value;
@@ -497,12 +496,11 @@ class DatabaseMssql extends DatabaseBase {
* srcTable may be an array of tables.
*/
function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = 'DatabaseMssql::insertSelect',
- $insertOptions = array(), $selectOptions = array() )
- {
+ $insertOptions = array(), $selectOptions = array() ) {
$ret = parent::insertSelect( $destTable, $srcTable, $varMap, $conds, $fname, $insertOptions, $selectOptions );
if ( $ret === false ) {
- throw new DBQueryError( $this, $this->getErrors(), $this->lastErrno(), $sql, $fname );
+ throw new DBQueryError( $this, $this->getErrors(), $this->lastErrno(), /*$sql*/ '', $fname );
} elseif ( $ret != NULL ) {
// remember number of rows affected
$this->mAffectedRows = sqlsrv_rows_affected( $ret );
@@ -512,35 +510,6 @@ class DatabaseMssql extends DatabaseBase {
}
/**
- * Format a table name ready for use in constructing an SQL query
- *
- * This does two important things: it brackets table names which as necessary,
- * and it adds a table prefix if there is one.
- *
- * All functions of this object which require a table name call this function
- * themselves. Pass the canonical name to such functions. This is only needed
- * when calling query() directly.
- *
- * @param $name String: database table name
- */
- function tableName( $name ) {
- global $wgSharedDB;
- # Skip quoted literals
- if ( $name != '' && $name { 0 } != '[' ) {
- if ( $this->mTablePrefix !== '' && strpos( '.', $name ) === false ) {
- $name = "{$this->mTablePrefix}$name";
- }
- if ( isset( $wgSharedDB ) && "{$this->mTablePrefix}user" == $name ) {
- $name = "[$wgSharedDB].[$name]";
- } else {
- # Standard quoting
- if ( $name != '' ) $name = "[$name]";
- }
- }
- return $name;
- }
-
- /**
* Return the next in a sequence, save the value for retrieval via insertId()
*/
function nextSequenceValue( $seqName ) {
@@ -570,82 +539,6 @@ class DatabaseMssql extends DatabaseBase {
}
}
-
- # REPLACE query wrapper
- # MSSQL simulates this with a DELETE followed by INSERT
- # $row is the row to insert, an associative array
- # $uniqueIndexes is an array of indexes. Each element may be either a
- # field name or an array of field names
- #
- # It may be more efficient to leave off unique indexes which are unlikely to collide.
- # However if you do this, you run the risk of encountering errors which wouldn't have
- # occurred in MySQL
- function replace( $table, $uniqueIndexes, $rows, $fname = 'DatabaseMssql::replace' ) {
- $table = $this->tableName( $table );
-
- if ( count( $rows ) == 0 ) {
- return;
- }
-
- # Single row case
- if ( !is_array( reset( $rows ) ) ) {
- $rows = array( $rows );
- }
-
- foreach ( $rows as $row ) {
- # Delete rows which collide
- if ( $uniqueIndexes ) {
- $sql = "DELETE FROM $table WHERE ";
- $first = true;
- foreach ( $uniqueIndexes as $index ) {
- if ( $first ) {
- $first = false;
- $sql .= "(";
- } else {
- $sql .= ') OR (';
- }
- if ( is_array( $index ) ) {
- $first2 = true;
- foreach ( $index as $col ) {
- if ( $first2 ) {
- $first2 = false;
- } else {
- $sql .= ' AND ';
- }
- $sql .= $col . '=' . $this->addQuotes( $row[$col] );
- }
- } else {
- $sql .= $index . '=' . $this->addQuotes( $row[$index] );
- }
- }
- $sql .= ')';
- $this->query( $sql, $fname );
- }
-
- # Now insert the row
- $sql = "INSERT INTO $table (" . $this->makeList( array_keys( $row ), LIST_NAMES ) . ') VALUES (' .
- $this->makeList( $row, LIST_COMMA ) . ')';
- $this->query( $sql, $fname );
- }
- }
-
- # DELETE where the condition is a join
- function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname = "DatabaseMssql::deleteJoin" ) {
- if ( !$conds ) {
- throw new DBUnexpectedError( $this, 'DatabaseMssql::deleteJoin() called with empty $conds' );
- }
-
- $delTable = $this->tableName( $delTable );
- $joinTable = $this->tableName( $joinTable );
- $sql = "DELETE FROM $delTable WHERE $delVar IN (SELECT $joinVar FROM $joinTable ";
- if ( $conds != '*' ) {
- $sql .= 'WHERE ' . $this->makeList( $conds, LIST_AND );
- }
- $sql .= ')';
-
- $this->query( $sql, $fname );
- }
-
# Returns the size of a text field, or -1 for "unlimited"
function textFieldSize( $table, $field ) {
$table = $this->tableName( $table );
@@ -654,7 +547,9 @@ class DatabaseMssql extends DatabaseBase {
$res = $this->query( $sql );
$row = $this->fetchRow( $res );
$size = -1;
- if ( strtolower( $row['DATA_TYPE'] ) != 'text' ) $size = $row['CHARACTER_MAXIMUM_LENGTH'];
+ if ( strtolower( $row['DATA_TYPE'] ) != 'text' ) {
+ $size = $row['CHARACTER_MAXIMUM_LENGTH'];
+ }
return $size;
}
@@ -713,7 +608,6 @@ class DatabaseMssql extends DatabaseBase {
return $sql;
}
-
function timestamp( $ts = 0 ) {
return wfTimestamp( TS_ISO_8601, $ts );
}
@@ -731,7 +625,9 @@ class DatabaseMssql extends DatabaseBase {
function getServerVersion() {
$server_info = sqlsrv_server_info( $this->mConn );
$version = 'Error';
- if ( isset( $server_info['SQLServerVersion'] ) ) $version = $server_info['SQLServerVersion'];
+ if ( isset( $server_info['SQLServerVersion'] ) ) {
+ $version = $server_info['SQLServerVersion'];
+ }
return $version;
}
@@ -742,10 +638,11 @@ class DatabaseMssql extends DatabaseBase {
print( "Error in tableExists query: " . $this->getErrors() );
return false;
}
- if ( sqlsrv_fetch( $res ) )
+ if ( sqlsrv_fetch( $res ) ) {
return true;
- else
+ } else {
return false;
+ }
}
/**
@@ -759,10 +656,11 @@ class DatabaseMssql extends DatabaseBase {
print( "Error in fieldExists query: " . $this->getErrors() );
return false;
}
- if ( sqlsrv_fetch( $res ) )
+ if ( sqlsrv_fetch( $res ) ) {
return true;
- else
+ } else {
return false;
+ }
}
function fieldInfo( $table, $field ) {
@@ -780,10 +678,6 @@ class DatabaseMssql extends DatabaseBase {
return false;
}
- public function unixTimestamp( $field ) {
- return "DATEDIFF(s,CONVERT(datetime,'1/1/1970'),$field)";
- }
-
/**
* Begin a transaction, committing any previously open transaction
*/
@@ -809,48 +703,6 @@ class DatabaseMssql extends DatabaseBase {
$this->mTrxLevel = 0;
}
- function setup_database() {
- global $wgDBuser;
-
- // Make sure that we can write to the correct schema
- $ctest = "mediawiki_test_table";
- if ( $this->tableExists( $ctest ) ) {
- $this->doQuery( "DROP TABLE $ctest" );
- }
- $SQL = "CREATE TABLE $ctest (a int)";
- $res = $this->doQuery( $SQL );
- if ( !$res ) {
- print "<b>FAILED</b>. Make sure that the user " . htmlspecialchars( $wgDBuser ) . " can write to the database</li>\n";
- dieout( );
- }
- $this->doQuery( "DROP TABLE $ctest" );
-
- $res = $this->sourceFile( "../maintenance/mssql/tables.sql" );
- if ( $res !== true ) {
- echo " <b>FAILED</b></li>";
- dieout( htmlspecialchars( $res ) );
- }
-
- # Avoid the non-standard "REPLACE INTO" syntax
- $f = fopen( "../maintenance/interwiki.sql", 'r' );
- if ( $f == false ) {
- dieout( "<li>Could not find the interwiki.sql file" );
- }
- # We simply assume it is already empty as we have just created it
- $SQL = "INSERT INTO interwiki(iw_prefix,iw_url,iw_local) VALUES ";
- while ( ! feof( $f ) ) {
- $line = fgets( $f, 1024 );
- $matches = array();
- if ( !preg_match( '/^\s*(\(.+?),(\d)\)/', $line, $matches ) ) {
- continue;
- }
- $this->query( "$SQL $matches[1],$matches[2])" );
- }
- print " (table interwiki successfully populated)...\n";
-
- $this->commit();
- }
-
/**
* Escapes a identifier for use inm SQL.
* Throws an exception if it is invalid.
@@ -957,12 +809,12 @@ class DatabaseMssql extends DatabaseBase {
$tableClause .= ' ON (' . $this->makeList( (array)$join_conds_safe[$table][1], LIST_AND ) . ')';
$retJOIN[] = $tableClause;
// Is there an INDEX clause?
- } else if ( isset( $use_index_safe[$table] ) ) {
+ } elseif ( isset( $use_index_safe[$table] ) ) {
$tableClause = $this->tableName( $table );
$tableClause .= ' ' . $this->useIndexClause( implode( ',', (array)$use_index_safe[$table] ) );
$ret[] = $tableClause;
// Is there a JOIN clause?
- } else if ( isset( $join_conds_safe[$table] ) ) {
+ } elseif ( isset( $join_conds_safe[$table] ) ) {
$tableClause = $join_conds_safe[$table][0] . ' ' . $this->tableName( $table );
$tableClause .= ' ON (' . $this->makeList( (array)$join_conds_safe[$table][1], LIST_AND ) . ')';
$retJOIN[] = $tableClause;
@@ -990,6 +842,15 @@ class DatabaseMssql extends DatabaseBase {
}
}
+ public function addIdentifierQuotes( $s ) {
+ // http://msdn.microsoft.com/en-us/library/aa223962.aspx
+ return '[' . $s . ']';
+ }
+
+ public function isQuotedIdentifier( $name ) {
+ return $name[0] == '[' && substr( $name, -1, 1 ) == ']';
+ }
+
function selectDB( $db ) {
return ( $this->query( "SET DATABASE $db" ) !== false );
}
@@ -1012,11 +873,19 @@ class DatabaseMssql extends DatabaseBase {
}
}
- if ( isset( $options['GROUP BY'] ) ) $tailOpts .= " GROUP BY {$options['GROUP BY']}";
- if ( isset( $options['HAVING'] ) ) $tailOpts .= " HAVING {$options['GROUP BY']}";
- if ( isset( $options['ORDER BY'] ) ) $tailOpts .= " ORDER BY {$options['ORDER BY']}";
+ if ( isset( $options['GROUP BY'] ) ) {
+ $tailOpts .= " GROUP BY {$options['GROUP BY']}";
+ }
+ if ( isset( $options['HAVING'] ) ) {
+ $tailOpts .= " HAVING {$options['GROUP BY']}";
+ }
+ if ( isset( $options['ORDER BY'] ) ) {
+ $tailOpts .= " ORDER BY {$options['ORDER BY']}";
+ }
- if ( isset( $noKeyOptions['DISTINCT'] ) && isset( $noKeyOptions['DISTINCTROW'] ) ) $startOpts .= 'DISTINCT';
+ if ( isset( $noKeyOptions['DISTINCT'] ) && isset( $noKeyOptions['DISTINCTROW'] ) ) {
+ $startOpts .= 'DISTINCT';
+ }
// we want this to be compatible with the output of parent::makeSelectOptions()
return array( $startOpts, '' , $tailOpts, '' );
@@ -1037,6 +906,14 @@ class DatabaseMssql extends DatabaseBase {
return "SearchMssql";
}
+ /**
+ * Since MSSQL doesn't recognize the infinity keyword, set date manually.
+ * @todo Remove magic date
+ */
+ public function getInfinity() {
+ return '3000-01-31 00:00:00.000';
+ }
+
} // end DatabaseMssql class
/**
@@ -1051,9 +928,10 @@ class MssqlField implements Field {
$this->tablename = $info['TABLE_NAME'];
$this->default = $info['COLUMN_DEFAULT'];
$this->max_length = $info['CHARACTER_MAXIMUM_LENGTH'];
- $this->nullable = ( strtolower( $info['IS_NULLABLE'] ) == 'no' ) ? false:true;
+ $this->nullable = !( strtolower( $info['IS_NULLABLE'] ) == 'no' );
$this->type = $info['DATA_TYPE'];
}
+
function name() {
return $this->name;
}
@@ -1087,26 +965,29 @@ class MssqlField implements Field {
*/
class MssqlResult {
- public function __construct( $queryresult = false ) {
- $this->mCursor = 0;
- $this->mRows = array();
- $this->mNumFields = sqlsrv_num_fields( $queryresult );
- $this->mFieldMeta = sqlsrv_field_metadata( $queryresult );
- while ( $row = sqlsrv_fetch_array( $queryresult, SQLSRV_FETCH_ASSOC ) ) {
- if ( $row !== null ) {
- foreach ( $row as $k => $v ) {
- if ( is_object( $v ) && method_exists( $v, 'format' ) ) {// DateTime Object
- $row[$k] = $v->format( "Y-m-d\TH:i:s\Z" );
+ public function __construct( $queryresult = false ) {
+ $this->mCursor = 0;
+ $this->mRows = array();
+ $this->mNumFields = sqlsrv_num_fields( $queryresult );
+ $this->mFieldMeta = sqlsrv_field_metadata( $queryresult );
+
+ $rows = sqlsrv_fetch_array( $queryresult, SQLSRV_FETCH_ASSOC );
+
+ foreach( $rows as $row ) {
+ if ( $row !== null ) {
+ foreach ( $row as $k => $v ) {
+ if ( is_object( $v ) && method_exists( $v, 'format' ) ) {// DateTime Object
+ $row[$k] = $v->format( "Y-m-d\TH:i:s\Z" );
+ }
}
+ $this->mRows[] = $row;// read results into memory, cursors are not supported
}
- $this->mRows[] = $row;// read results into memory, cursors are not supported
}
+ $this->mRowCount = count( $this->mRows );
+ sqlsrv_free_stmt( $queryresult );
}
- $this->mRowCount = count( $this->mRows );
- sqlsrv_free_stmt( $queryresult );
- }
- private function array_to_obj( $array, &$obj ) {
+ private function array_to_obj( $array, &$obj ) {
foreach ( $array as $key => $value ) {
if ( is_array( $value ) ) {
$obj->$key = new stdClass();
@@ -1118,109 +999,108 @@ class MssqlResult {
}
}
return $obj;
- }
-
- public function fetch( $mode = SQLSRV_FETCH_BOTH, $object_class = 'stdClass' ) {
- if ( $this->mCursor >= $this->mRowCount || $this->mRowCount == 0 ) {
- return false;
}
- $arrNum = array();
- if ( $mode == SQLSRV_FETCH_NUMERIC || $mode == SQLSRV_FETCH_BOTH ) {
- foreach ( $this->mRows[$this->mCursor] as $value ) {
- $arrNum[] = $value;
+
+ public function fetch( $mode = SQLSRV_FETCH_BOTH, $object_class = 'stdClass' ) {
+ if ( $this->mCursor >= $this->mRowCount || $this->mRowCount == 0 ) {
+ return false;
}
+ $arrNum = array();
+ if ( $mode == SQLSRV_FETCH_NUMERIC || $mode == SQLSRV_FETCH_BOTH ) {
+ foreach ( $this->mRows[$this->mCursor] as $value ) {
+ $arrNum[] = $value;
+ }
+ }
+ switch( $mode ) {
+ case SQLSRV_FETCH_ASSOC:
+ $ret = $this->mRows[$this->mCursor];
+ break;
+ case SQLSRV_FETCH_NUMERIC:
+ $ret = $arrNum;
+ break;
+ case 'OBJECT':
+ $o = new $object_class;
+ $ret = $this->array_to_obj( $this->mRows[$this->mCursor], $o );
+ break;
+ case SQLSRV_FETCH_BOTH:
+ default:
+ $ret = $this->mRows[$this->mCursor] + $arrNum;
+ break;
+ }
+
+ $this->mCursor++;
+ return $ret;
+ }
+
+ public function get( $pos, $fld ) {
+ return $this->mRows[$pos][$fld];
}
- switch( $mode ) {
- case SQLSRV_FETCH_ASSOC:
- $ret = $this->mRows[$this->mCursor];
- break;
- case SQLSRV_FETCH_NUMERIC:
- $ret = $arrNum;
- break;
- case 'OBJECT':
- $o = new $object_class;
- $ret = $this->array_to_obj( $this->mRows[$this->mCursor], $o );
- break;
- case SQLSRV_FETCH_BOTH:
- default:
- $ret = $this->mRows[$this->mCursor] + $arrNum;
- break;
- }
-
- $this->mCursor++;
- return $ret;
- }
-
- public function get( $pos, $fld ) {
- return $this->mRows[$pos][$fld];
- }
-
- public function numrows() {
- return $this->mRowCount;
- }
-
- public function seek( $iRow ) {
- $this->mCursor = min( $iRow, $this->mRowCount );
- }
-
- public function numfields() {
- return $this->mNumFields;
- }
-
- public function fieldname( $nr ) {
- $arrKeys = array_keys( $this->mRows[0] );
- return $arrKeys[$nr];
- }
-
- public function fieldtype( $nr ) {
- $i = 0;
- $intType = -1;
- foreach ( $this->mFieldMeta as $meta ) {
- if ( $nr == $i ) {
- $intType = $meta['Type'];
- break;
+
+ public function numrows() {
+ return $this->mRowCount;
+ }
+
+ public function seek( $iRow ) {
+ $this->mCursor = min( $iRow, $this->mRowCount );
+ }
+
+ public function numfields() {
+ return $this->mNumFields;
+ }
+
+ public function fieldname( $nr ) {
+ $arrKeys = array_keys( $this->mRows[0] );
+ return $arrKeys[$nr];
+ }
+
+ public function fieldtype( $nr ) {
+ $i = 0;
+ $intType = -1;
+ foreach ( $this->mFieldMeta as $meta ) {
+ if ( $nr == $i ) {
+ $intType = $meta['Type'];
+ break;
+ }
+ $i++;
}
- $i++;
- }
- // http://msdn.microsoft.com/en-us/library/cc296183.aspx contains type table
- switch( $intType ) {
- case SQLSRV_SQLTYPE_BIGINT: $strType = 'bigint'; break;
- case SQLSRV_SQLTYPE_BINARY: $strType = 'binary'; break;
- case SQLSRV_SQLTYPE_BIT: $strType = 'bit'; break;
- case SQLSRV_SQLTYPE_CHAR: $strType = 'char'; break;
- case SQLSRV_SQLTYPE_DATETIME: $strType = 'datetime'; break;
- case SQLSRV_SQLTYPE_DECIMAL/*($precision, $scale)*/: $strType = 'decimal'; break;
- case SQLSRV_SQLTYPE_FLOAT: $strType = 'float'; break;
- case SQLSRV_SQLTYPE_IMAGE: $strType = 'image'; break;
- case SQLSRV_SQLTYPE_INT: $strType = 'int'; break;
- case SQLSRV_SQLTYPE_MONEY: $strType = 'money'; break;
- case SQLSRV_SQLTYPE_NCHAR/*($charCount)*/: $strType = 'nchar'; break;
- case SQLSRV_SQLTYPE_NUMERIC/*($precision, $scale)*/: $strType = 'numeric'; break;
- case SQLSRV_SQLTYPE_NVARCHAR/*($charCount)*/: $strType = 'nvarchar'; break;
- // case SQLSRV_SQLTYPE_NVARCHAR('max'): $strType = 'nvarchar(MAX)'; break;
- case SQLSRV_SQLTYPE_NTEXT: $strType = 'ntext'; break;
- case SQLSRV_SQLTYPE_REAL: $strType = 'real'; break;
- case SQLSRV_SQLTYPE_SMALLDATETIME: $strType = 'smalldatetime'; break;
- case SQLSRV_SQLTYPE_SMALLINT: $strType = 'smallint'; break;
- case SQLSRV_SQLTYPE_SMALLMONEY: $strType = 'smallmoney'; break;
- case SQLSRV_SQLTYPE_TEXT: $strType = 'text'; break;
- case SQLSRV_SQLTYPE_TIMESTAMP: $strType = 'timestamp'; break;
- case SQLSRV_SQLTYPE_TINYINT: $strType = 'tinyint'; break;
- case SQLSRV_SQLTYPE_UNIQUEIDENTIFIER: $strType = 'uniqueidentifier'; break;
- case SQLSRV_SQLTYPE_UDT: $strType = 'UDT'; break;
- case SQLSRV_SQLTYPE_VARBINARY/*($byteCount)*/: $strType = 'varbinary'; break;
- // case SQLSRV_SQLTYPE_VARBINARY('max'): $strType = 'varbinary(MAX)'; break;
- case SQLSRV_SQLTYPE_VARCHAR/*($charCount)*/: $strType = 'varchar'; break;
- // case SQLSRV_SQLTYPE_VARCHAR('max'): $strType = 'varchar(MAX)'; break;
- case SQLSRV_SQLTYPE_XML: $strType = 'xml'; break;
- default: $strType = $intType;
- }
- return $strType;
- }
-
- public function free() {
- unset( $this->mRows );
- return;
- }
+ // http://msdn.microsoft.com/en-us/library/cc296183.aspx contains type table
+ switch( $intType ) {
+ case SQLSRV_SQLTYPE_BIGINT: $strType = 'bigint'; break;
+ case SQLSRV_SQLTYPE_BINARY: $strType = 'binary'; break;
+ case SQLSRV_SQLTYPE_BIT: $strType = 'bit'; break;
+ case SQLSRV_SQLTYPE_CHAR: $strType = 'char'; break;
+ case SQLSRV_SQLTYPE_DATETIME: $strType = 'datetime'; break;
+ case SQLSRV_SQLTYPE_DECIMAL/*($precision, $scale)*/: $strType = 'decimal'; break;
+ case SQLSRV_SQLTYPE_FLOAT: $strType = 'float'; break;
+ case SQLSRV_SQLTYPE_IMAGE: $strType = 'image'; break;
+ case SQLSRV_SQLTYPE_INT: $strType = 'int'; break;
+ case SQLSRV_SQLTYPE_MONEY: $strType = 'money'; break;
+ case SQLSRV_SQLTYPE_NCHAR/*($charCount)*/: $strType = 'nchar'; break;
+ case SQLSRV_SQLTYPE_NUMERIC/*($precision, $scale)*/: $strType = 'numeric'; break;
+ case SQLSRV_SQLTYPE_NVARCHAR/*($charCount)*/: $strType = 'nvarchar'; break;
+ // case SQLSRV_SQLTYPE_NVARCHAR('max'): $strType = 'nvarchar(MAX)'; break;
+ case SQLSRV_SQLTYPE_NTEXT: $strType = 'ntext'; break;
+ case SQLSRV_SQLTYPE_REAL: $strType = 'real'; break;
+ case SQLSRV_SQLTYPE_SMALLDATETIME: $strType = 'smalldatetime'; break;
+ case SQLSRV_SQLTYPE_SMALLINT: $strType = 'smallint'; break;
+ case SQLSRV_SQLTYPE_SMALLMONEY: $strType = 'smallmoney'; break;
+ case SQLSRV_SQLTYPE_TEXT: $strType = 'text'; break;
+ case SQLSRV_SQLTYPE_TIMESTAMP: $strType = 'timestamp'; break;
+ case SQLSRV_SQLTYPE_TINYINT: $strType = 'tinyint'; break;
+ case SQLSRV_SQLTYPE_UNIQUEIDENTIFIER: $strType = 'uniqueidentifier'; break;
+ case SQLSRV_SQLTYPE_UDT: $strType = 'UDT'; break;
+ case SQLSRV_SQLTYPE_VARBINARY/*($byteCount)*/: $strType = 'varbinary'; break;
+ // case SQLSRV_SQLTYPE_VARBINARY('max'): $strType = 'varbinary(MAX)'; break;
+ case SQLSRV_SQLTYPE_VARCHAR/*($charCount)*/: $strType = 'varchar'; break;
+ // case SQLSRV_SQLTYPE_VARCHAR('max'): $strType = 'varchar(MAX)'; break;
+ case SQLSRV_SQLTYPE_XML: $strType = 'xml'; break;
+ default: $strType = $intType;
+ }
+ return $strType;
+ }
+ public function free() {
+ unset( $this->mRows );
+ return;
+ }
}
diff --git a/includes/db/DatabaseMysql.php b/includes/db/DatabaseMysql.php
index ed276ec5..9cbd455e 100644
--- a/includes/db/DatabaseMysql.php
+++ b/includes/db/DatabaseMysql.php
@@ -18,7 +18,7 @@ class DatabaseMysql extends DatabaseBase {
return 'mysql';
}
- /*private*/ function doQuery( $sql ) {
+ protected function doQuery( $sql ) {
if( $this->bufferResults() ) {
$ret = mysql_query( $sql, $this->mConn );
} else {
@@ -95,7 +95,9 @@ class DatabaseMysql extends DatabaseBase {
wfProfileOut("dbconnect-$server");
if ( $dbName != '' && $this->mConn !== false ) {
- $success = @/**/mysql_select_db( $dbName, $this->mConn );
+ wfSuppressWarnings();
+ $success = mysql_select_db( $dbName, $this->mConn );
+ wfRestoreWarnings();
if ( !$success ) {
$error = "Error selecting database $dbName on server {$this->mServer} " .
"from client host " . wfHostname() . "\n";
@@ -152,7 +154,10 @@ class DatabaseMysql extends DatabaseBase {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- if ( !@/**/mysql_free_result( $res ) ) {
+ wfSuppressWarnings();
+ $ok = mysql_free_result( $res );
+ wfRestoreWarnings();
+ if ( !$ok ) {
throw new DBUnexpectedError( $this, "Unable to free MySQL result" );
}
}
@@ -161,7 +166,9 @@ class DatabaseMysql extends DatabaseBase {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- @/**/$row = mysql_fetch_object( $res );
+ wfSuppressWarnings();
+ $row = mysql_fetch_object( $res );
+ wfRestoreWarnings();
if( $this->lastErrno() ) {
throw new DBUnexpectedError( $this, 'Error in fetchObject(): ' . htmlspecialchars( $this->lastError() ) );
}
@@ -172,7 +179,9 @@ class DatabaseMysql extends DatabaseBase {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- @/**/$row = mysql_fetch_array( $res );
+ wfSuppressWarnings();
+ $row = mysql_fetch_array( $res );
+ wfRestoreWarnings();
if ( $this->lastErrno() ) {
throw new DBUnexpectedError( $this, 'Error in fetchRow(): ' . htmlspecialchars( $this->lastError() ) );
}
@@ -183,7 +192,9 @@ class DatabaseMysql extends DatabaseBase {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- @/**/$n = mysql_num_rows( $res );
+ wfSuppressWarnings();
+ $n = mysql_num_rows( $res );
+ wfRestoreWarnings();
if( $this->lastErrno() ) {
throw new DBUnexpectedError( $this, 'Error in numRows(): ' . htmlspecialchars( $this->lastError() ) );
}
@@ -241,6 +252,10 @@ class DatabaseMysql extends DatabaseBase {
function affectedRows() { return mysql_affected_rows( $this->mConn ); }
+ function replace( $table, $uniqueIndexes, $rows, $fname = 'DatabaseMysql::replace' ) {
+ return $this->nativeReplace( $table, $rows, $fname );
+ }
+
/**
* Estimate rows in dataset
* Returns estimated count, based on EXPLAIN output
@@ -329,6 +344,10 @@ class DatabaseMysql extends DatabaseBase {
return "`" . $this->strencode( $s ) . "`";
}
+ public function isQuotedIdentifier( $name ) {
+ return strlen($name) && $name[0] == '`' && substr( $name, -1, 1 ) == '`';
+ }
+
function ping() {
$ping = mysql_ping( $this->mConn );
if ( $ping ) {
@@ -344,7 +363,11 @@ class DatabaseMysql extends DatabaseBase {
/**
* Returns slave lag.
- * At the moment, this will only work if the DB user has the PROCESS privilege
+ *
+ * On MySQL 4.1.9 and later, this will do a SHOW SLAVE STATUS. On earlier
+ * versions of MySQL, it uses SHOW PROCESSLIST, which requires the PROCESS
+ * privilege.
+ *
* @result int
*/
function getLag() {
@@ -352,6 +375,31 @@ class DatabaseMysql extends DatabaseBase {
wfDebug( "getLag: fake slave lagged {$this->mFakeSlaveLag} seconds\n" );
return $this->mFakeSlaveLag;
}
+
+ if ( version_compare( $this->getServerVersion(), '4.1.9', '>=' ) ) {
+ return $this->getLagFromSlaveStatus();
+ } else {
+ return $this->getLagFromProcesslist();
+ }
+ }
+
+ function getLagFromSlaveStatus() {
+ $res = $this->query( 'SHOW SLAVE STATUS', __METHOD__ );
+ if ( !$res ) {
+ return false;
+ }
+ $row = $res->fetchObject();
+ if ( !$row ) {
+ return false;
+ }
+ if ( strval( $row->Seconds_Behind_Master ) === '' ) {
+ return false;
+ } else {
+ return intval( $row->Seconds_Behind_Master );
+ }
+ }
+
+ function getLagFromProcesslist() {
$res = $this->query( 'SHOW PROCESSLIST', __METHOD__ );
if( !$res ) {
return false;
@@ -384,6 +432,83 @@ class DatabaseMysql extends DatabaseBase {
}
return false;
}
+
+ /**
+ * Wait for the slave to catch up to a given master position.
+ *
+ * @param $pos DBMasterPos object
+ * @param $timeout Integer: the maximum number of seconds to wait for synchronisation
+ */
+ function masterPosWait( DBMasterPos $pos, $timeout ) {
+ $fname = 'DatabaseBase::masterPosWait';
+ wfProfileIn( $fname );
+
+ # Commit any open transactions
+ if ( $this->mTrxLevel ) {
+ $this->commit();
+ }
+
+ if ( !is_null( $this->mFakeSlaveLag ) ) {
+ $status = parent::masterPosWait( $pos, $timeout );
+ wfProfileOut( $fname );
+ return $status;
+ }
+
+ # Call doQuery() directly, to avoid opening a transaction if DBO_TRX is set
+ $encFile = $this->addQuotes( $pos->file );
+ $encPos = intval( $pos->pos );
+ $sql = "SELECT MASTER_POS_WAIT($encFile, $encPos, $timeout)";
+ $res = $this->doQuery( $sql );
+
+ if ( $res && $row = $this->fetchRow( $res ) ) {
+ wfProfileOut( $fname );
+ return $row[0];
+ } else {
+ wfProfileOut( $fname );
+ return false;
+ }
+ }
+
+ /**
+ * Get the position of the master from SHOW SLAVE STATUS
+ *
+ * @return MySQLMasterPos|false
+ */
+ function getSlavePos() {
+ if ( !is_null( $this->mFakeSlaveLag ) ) {
+ return parent::getSlavePos();
+ }
+
+ $res = $this->query( 'SHOW SLAVE STATUS', 'DatabaseBase::getSlavePos' );
+ $row = $this->fetchObject( $res );
+
+ if ( $row ) {
+ $pos = isset( $row->Exec_master_log_pos ) ? $row->Exec_master_log_pos : $row->Exec_Master_Log_Pos;
+ return new MySQLMasterPos( $row->Relay_Master_Log_File, $pos );
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Get the position of the master from SHOW MASTER STATUS
+ *
+ * @return MySQLMasterPos|false
+ */
+ function getMasterPos() {
+ if ( $this->mFakeMaster ) {
+ return parent::getMasterPos();
+ }
+
+ $res = $this->query( 'SHOW MASTER STATUS', 'DatabaseBase::getMasterPos' );
+ $row = $this->fetchObject( $res );
+
+ if ( $row ) {
+ return new MySQLMasterPos( $row->File, $row->Position );
+ } else {
+ return false;
+ }
+ }
function getServerVersion() {
return mysql_get_server_info( $this->mConn );
@@ -478,8 +603,23 @@ class DatabaseMysql extends DatabaseBase {
$this->query( "SET sql_big_selects=$encValue", __METHOD__ );
}
- public function unixTimestamp( $field ) {
- return "UNIX_TIMESTAMP($field)";
+ /**
+ * DELETE where the condition is a join. MySql uses multi-table deletes.
+ */
+ function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname = 'DatabaseBase::deleteJoin' ) {
+ if ( !$conds ) {
+ throw new DBUnexpectedError( $this, 'DatabaseBase::deleteJoin() called with empty $conds' );
+ }
+
+ $delTable = $this->tableName( $delTable );
+ $joinTable = $this->tableName( $joinTable );
+ $sql = "DELETE $delTable FROM $delTable, $joinTable WHERE $delVar=$joinVar ";
+
+ if ( $conds != '*' ) {
+ $sql .= ' AND ' . $this->makeList( $conds, LIST_AND );
+ }
+
+ return $this->query( $sql, $fname );
}
/**
@@ -516,26 +656,79 @@ class DatabaseMysql extends DatabaseBase {
# Note that we don't bother changing around the prefixes here be-
# cause we know we're using MySQL anyway.
- $res = $this->query( "SHOW CREATE TABLE $oldName" );
+ $res = $this->query( 'SHOW CREATE TABLE ' . $this->addIdentifierQuotes( $oldName ) );
$row = $this->fetchRow( $res );
$oldQuery = $row[1];
$query = preg_replace( '/CREATE TABLE `(.*?)`/',
- "CREATE $tmp TABLE `$newName`", $oldQuery );
+ "CREATE $tmp TABLE " . $this->addIdentifierQuotes( $newName ), $oldQuery );
if ($oldQuery === $query) {
# Couldn't do replacement
throw new MWException( "could not create temporary table $newName" );
}
} else {
+ $newName = $this->addIdentifierQuotes( $newName );
+ $oldName = $this->addIdentifierQuotes( $oldName );
$query = "CREATE $tmp TABLE $newName (LIKE $oldName)";
}
$this->query( $query, $fname );
}
+
+ /**
+ * List all tables on the database
+ *
+ * @param $prefix Only show tables with this prefix, e.g. mw_
+ * @param $fname String: calling function name
+ */
+ function listTables( $prefix = null, $fname = 'DatabaseMysql::listTables' ) {
+ $result = $this->query( "SHOW TABLES", $fname);
+
+ $endArray = array();
+
+ foreach( $result as $table ) {
+ $vars = get_object_vars($table);
+ $table = array_pop( $vars );
+
+ if( !$prefix || strpos( $table, $prefix ) === 0 ) {
+ $endArray[] = $table;
+ }
+ }
+
+ return $endArray;
+ }
+
+ public function dropTable( $tableName, $fName = 'DatabaseMysql::dropTable' ) {
+ if( !$this->tableExists( $tableName ) ) {
+ return false;
+ }
+ return $this->query( "DROP TABLE IF EXISTS " . $this->tableName( $tableName ), $fName );
+ }
+ /**
+ * @return array
+ */
protected function getDefaultSchemaVars() {
$vars = parent::getDefaultSchemaVars();
- $vars['wgDBTableOptions'] = $GLOBALS['wgDBTableOptions'];
+ $vars['wgDBTableOptions'] = str_replace( 'TYPE', 'ENGINE', $GLOBALS['wgDBTableOptions'] );
+ $vars['wgDBTableOptions'] = str_replace( 'CHARSET=mysql4', 'CHARSET=binary', $GLOBALS['wgDBTableOptions'] );
return $vars;
}
+
+ /**
+ * Get status information from SHOW STATUS in an associative array
+ *
+ * @return array
+ */
+ function getMysqlStatus( $which = "%" ) {
+ $res = $this->query( "SHOW STATUS LIKE '{$which}'" );
+ $status = array();
+
+ foreach ( $res as $row ) {
+ $status[$row->Variable_name] = $row->Value;
+ }
+
+ return $status;
+ }
+
}
/**
@@ -593,7 +786,7 @@ class MySQLField implements Field {
}
}
-class MySQLMasterPos {
+class MySQLMasterPos implements DBMasterPos {
var $file, $pos;
function __construct( $file, $pos ) {
diff --git a/includes/db/DatabaseOracle.php b/includes/db/DatabaseOracle.php
index 3c4d00ac..b64e66c2 100644
--- a/includes/db/DatabaseOracle.php
+++ b/includes/db/DatabaseOracle.php
@@ -16,7 +16,7 @@ class ORAResult {
private $rows;
private $cursor;
private $nrows;
-
+
private $columns = array();
private function array_unique_md( $array_in ) {
@@ -34,6 +34,11 @@ class ORAResult {
return $array_out;
}
+ /**
+ * @param $db DatabaseBase
+ * @param $stmt
+ * @param bool $unique
+ */
function __construct( &$db, $stmt, $unique = false ) {
$this->db =& $db;
@@ -165,7 +170,6 @@ class ORAField implements Field {
class DatabaseOracle extends DatabaseBase {
var $mInsertId = null;
var $mLastResult = null;
- var $numeric_version = null;
var $lastResult = null;
var $cursor = 0;
var $mAffectedRows;
@@ -180,7 +184,8 @@ class DatabaseOracle extends DatabaseBase {
function __construct( $server = false, $user = false, $password = false, $dbName = false,
$flags = 0, $tablePrefix = 'get from global' )
{
- $tablePrefix = $tablePrefix == 'get from global' ? $tablePrefix : strtoupper( $tablePrefix );
+ global $wgDBprefix;
+ $tablePrefix = $tablePrefix == 'get from global' ? strtoupper( $wgDBprefix ) : strtoupper( $tablePrefix );
parent::__construct( $server, $user, $password, $dbName, $flags, $tablePrefix );
wfRunHooks( 'DatabaseOraclePostInit', array( $this ) );
}
@@ -219,11 +224,6 @@ class DatabaseOracle extends DatabaseBase {
return true;
}
- static function newFromParams( $server, $user, $password, $dbName, $flags = 0 )
- {
- return new DatabaseOracle( $server, $user, $password, $dbName, $flags );
- }
-
/**
* Usually aborts on failure
*/
@@ -232,6 +232,7 @@ class DatabaseOracle extends DatabaseBase {
throw new DBConnectionError( $this, "Oracle functions missing, have you compiled PHP with the --with-oci8 option?\n (Note: if you recently installed PHP, you may need to restart your webserver and database)\n" );
}
+ $this->close();
$this->mUser = $user;
$this->mPassword = $password;
// changed internal variables functions
@@ -245,7 +246,7 @@ class DatabaseOracle extends DatabaseBase {
$this->mServer = $server;
if ( !$dbName ) {
$this->mDBname = $user;
- } else {
+ } else {
$this->mDBname = $dbName;
}
}
@@ -255,11 +256,13 @@ class DatabaseOracle extends DatabaseBase {
}
$session_mode = $this->mFlags & DBO_SYSDBA ? OCI_SYSDBA : OCI_DEFAULT;
+ wfSuppressWarnings();
if ( $this->mFlags & DBO_DEFAULT ) {
$this->mConn = oci_new_connect( $this->mUser, $this->mPassword, $this->mServer, $this->defaultCharset, $session_mode );
} else {
$this->mConn = oci_connect( $this->mUser, $this->mPassword, $this->mServer, $this->defaultCharset, $session_mode );
}
+ wfRestoreWarnings();
if ( $this->mUser != $this->mDBname ) {
//change current schema in session
@@ -276,7 +279,6 @@ class DatabaseOracle extends DatabaseBase {
$this->doQuery( 'ALTER SESSION SET NLS_TIMESTAMP_FORMAT=\'DD-MM-YYYY HH24:MI:SS.FF6\'' );
$this->doQuery( 'ALTER SESSION SET NLS_TIMESTAMP_TZ_FORMAT=\'DD-MM-YYYY HH24:MI:SS.FF6\'' );
$this->doQuery( 'ALTER SESSION SET NLS_NUMERIC_CHARACTERS=\'.,\'' );
-
return $this->mConn;
}
@@ -297,10 +299,10 @@ class DatabaseOracle extends DatabaseBase {
}
function execFlags() {
- return $this->mTrxLevel ? OCI_DEFAULT : OCI_COMMIT_ON_SUCCESS;
+ return $this->mTrxLevel ? OCI_NO_AUTO_COMMIT : OCI_COMMIT_ON_SUCCESS;
}
- function doQuery( $sql ) {
+ protected function doQuery( $sql ) {
wfDebug( "SQL: [$sql]\n" );
if ( !mb_check_encoding( $sql ) ) {
throw new MWException( "SQL encoding is invalid\n$sql" );
@@ -357,7 +359,7 @@ class DatabaseOracle extends DatabaseBase {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
-
+
$res->free();
}
@@ -365,7 +367,7 @@ class DatabaseOracle extends DatabaseBase {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
-
+
return $res->fetchObject();
}
@@ -478,16 +480,16 @@ class DatabaseOracle extends DatabaseBase {
private function fieldBindStatement ( $table, $col, &$val, $includeCol = false ) {
$col_info = $this->fieldInfoMulti( $table, $col );
$col_type = $col_info != false ? $col_info->type() : 'CONSTANT';
-
+
$bind = '';
if ( is_numeric( $col ) ) {
$bind = $val;
$val = null;
- return $bind;
- } else if ( $includeCol ) {
+ return $bind;
+ } elseif ( $includeCol ) {
$bind = "$col = ";
}
-
+
if ( $val == '' && $val !== 0 && $col_type != 'BLOB' && $col_type != 'CLOB' ) {
$val = null;
}
@@ -505,7 +507,7 @@ class DatabaseOracle extends DatabaseBase {
} else {
$bind .= ':' . $col;
}
-
+
return $bind;
}
@@ -525,7 +527,7 @@ class DatabaseOracle extends DatabaseBase {
} else {
$first = false;
}
-
+
$sql .= $this->fieldBindStatement( $table, $col, $val );
}
$sql .= ')';
@@ -551,7 +553,7 @@ class DatabaseOracle extends DatabaseBase {
}
$val = ( $wgContLang != null ) ? $wgContLang->checkTitleEncoding( $val ) : $val;
- if ( oci_bind_by_name( $stmt, ":$col", $val ) === false ) {
+ if ( oci_bind_by_name( $stmt, ":$col", $val, -1, SQLT_CHR ) === false ) {
$e = oci_error( $stmt );
$this->reportQueryError( $e['message'], $e['code'], $sql, __METHOD__ );
return false;
@@ -652,8 +654,7 @@ class DatabaseOracle extends DatabaseBase {
return $retval;
}
- function tableName( $name ) {
- global $wgSharedDB, $wgSharedPrefix, $wgSharedTables;
+ function tableName( $name, $quoted = true ) {
/*
Replace reserved words with better ones
Using uppercase because that's the only way Oracle can handle
@@ -668,53 +669,13 @@ class DatabaseOracle extends DatabaseBase {
break;
}
- /*
- The rest of procedure is equal to generic Databse class
- except for the quoting style
- */
- if ( $name[0] == '"' && substr( $name, - 1, 1 ) == '"' ) {
- return $name;
- }
- if ( preg_match( '/(^|\s)(DISTINCT|JOIN|ON|AS)(\s|$)/i', $name ) !== 0 ) {
- return $name;
- }
- $dbDetails = array_reverse( explode( '.', $name, 2 ) );
- if ( isset( $dbDetails[1] ) ) {
- @list( $table, $database ) = $dbDetails;
- } else {
- @list( $table ) = $dbDetails;
- }
-
- $prefix = $this->mTablePrefix;
-
- if ( isset( $database ) ) {
- $table = ( $table[0] == '`' ? $table : "`{$table}`" );
- }
-
- if ( !isset( $database ) && isset( $wgSharedDB ) && $table[0] != '"'
- && isset( $wgSharedTables )
- && is_array( $wgSharedTables )
- && in_array( $table, $wgSharedTables )
- ) {
- $database = $wgSharedDB;
- $prefix = isset( $wgSharedPrefix ) ? $wgSharedPrefix : $prefix;
- }
-
- if ( isset( $database ) ) {
- $database = ( $database[0] == '"' ? $database : "\"{$database}\"" );
- }
- $table = ( $table[0] == '"') ? $table : "\"{$prefix}{$table}\"" ;
-
- $tableName = ( isset( $database ) ? "{$database}.{$table}" : "{$table}" );
-
- return strtoupper( $tableName );
+ return parent::tableName( strtoupper( $name ), $quoted );
}
function tableNameInternal( $name ) {
$name = $this->tableName( $name );
- return preg_replace( '/.*\."(.*)"/', '$1', $name);
+ return preg_replace( '/.*\.(.*)/', '$1', $name);
}
-
/**
* Return the next in a sequence, save the value for retrieval via insertId()
*/
@@ -730,96 +691,26 @@ class DatabaseOracle extends DatabaseBase {
*/
private function getSequenceData( $table ) {
if ( $this->sequenceData == null ) {
- $result = $this->doQuery( 'SELECT lower(us.sequence_name), lower(utc.table_name), lower(utc.column_name) from user_sequences us, user_tab_columns utc where us.sequence_name = utc.table_name||\'_\'||utc.column_name||\'_SEQ\'' );
+ $result = $this->doQuery( "SELECT lower(asq.sequence_name),
+ lower(atc.table_name),
+ lower(atc.column_name)
+ FROM all_sequences asq, all_tab_columns atc
+ WHERE decode(atc.table_name, '{$this->mTablePrefix}MWUSER', '{$this->mTablePrefix}USER', atc.table_name) || '_' ||
+ atc.column_name || '_SEQ' = '{$this->mTablePrefix}' || asq.sequence_name
+ AND asq.sequence_owner = upper('{$this->mDBname}')
+ AND atc.owner = upper('{$this->mDBname}')" );
while ( ( $row = $result->fetchRow() ) !== false ) {
- $this->sequenceData[$this->tableName( $row[1] )] = array(
+ $this->sequenceData[$row[1]] = array(
'sequence' => $row[0],
'column' => $row[2]
);
}
}
-
+ $table = strtolower( $this->removeIdentifierQuotes( $this->tableName( $table ) ) );
return ( isset( $this->sequenceData[$table] ) ) ? $this->sequenceData[$table] : false;
}
- /**
- * REPLACE query wrapper
- * Oracle simulates this with a DELETE followed by INSERT
- * $row is the row to insert, an associative array
- * $uniqueIndexes is an array of indexes. Each element may be either a
- * field name or an array of field names
- *
- * It may be more efficient to leave off unique indexes which are unlikely to collide.
- * However if you do this, you run the risk of encountering errors which wouldn't have
- * occurred in MySQL.
- *
- * @param $table String: table name
- * @param $uniqueIndexes Array: array of indexes. Each element may be
- * either a field name or an array of field names
- * @param $rows Array: rows to insert to $table
- * @param $fname String: function name, you can use __METHOD__ here
- */
- function replace( $table, $uniqueIndexes, $rows, $fname = 'DatabaseOracle::replace' ) {
- $table = $this->tableName( $table );
-
- if ( count( $rows ) == 0 ) {
- return;
- }
-
- # Single row case
- if ( !is_array( reset( $rows ) ) ) {
- $rows = array( $rows );
- }
-
- $sequenceData = $this->getSequenceData( $table );
-
- foreach ( $rows as $row ) {
- # Delete rows which collide
- if ( $uniqueIndexes ) {
- $deleteConds = array();
- foreach ( $uniqueIndexes as $key=>$index ) {
- if ( is_array( $index ) ) {
- $deleteConds2 = array();
- foreach ( $index as $col ) {
- $deleteConds2[$col] = $row[$col];
- }
- $deleteConds[$key] = $this->makeList( $deleteConds2, LIST_AND );
- } else {
- $deleteConds[$index] = $row[$index];
- }
- }
- $deleteConds = array( $this->makeList( $deleteConds, LIST_OR ) );
- $this->delete( $table, $deleteConds, $fname );
- }
-
-
- if ( $sequenceData !== false && !isset( $row[$sequenceData['column']] ) ) {
- $row[$sequenceData['column']] = $this->nextSequenceValue( $sequenceData['sequence'] );
- }
-
- # Now insert the row
- $this->insert( $table, $row, $fname );
- }
- }
-
- # DELETE where the condition is a join
- function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname = 'DatabaseOracle::deleteJoin' ) {
- if ( !$conds ) {
- throw new DBUnexpectedError( $this, 'DatabaseOracle::deleteJoin() called with empty $conds' );
- }
-
- $delTable = $this->tableName( $delTable );
- $joinTable = $this->tableName( $joinTable );
- $sql = "DELETE FROM $delTable WHERE $delVar IN (SELECT $joinVar FROM $joinTable ";
- if ( $conds != '*' ) {
- $sql .= 'WHERE ' . $this->makeList( $conds, LIST_AND );
- }
- $sql .= ')';
-
- $this->query( $sql, $fname );
- }
-
# Returns the size of a text field, or -1 for "unlimited"
function textFieldSize( $table, $field ) {
$fieldInfoData = $this->fieldInfo( $table, $field );
@@ -849,26 +740,21 @@ class DatabaseOracle extends DatabaseBase {
return 'SELECT * ' . ( $all ? '':'/* UNION_UNIQUE */ ' ) . 'FROM (' . implode( $glue, $sqls ) . ')' ;
}
- public function unixTimestamp( $field ) {
- return "((trunc($field) - to_date('19700101','YYYYMMDD')) * 86400)";
- }
-
function wasDeadlock() {
return $this->lastErrno() == 'OCI-00060';
}
function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = 'DatabaseOracle::duplicateTableStructure' ) {
- global $wgDBprefix;
-
$temporary = $temporary ? 'TRUE' : 'FALSE';
- $newName = trim( strtoupper( $newName ), '"');
- $oldName = trim( strtoupper( $oldName ), '"');
+ $newName = strtoupper( $newName );
+ $oldName = strtoupper( $oldName );
- $tabName = substr( $newName, strlen( $wgDBprefix ) );
+ $tabName = substr( $newName, strlen( $this->mTablePrefix ) );
$oldPrefix = substr( $oldName, 0, strlen( $oldName ) - strlen( $tabName ) );
+ $newPrefix = strtoupper( $this->mTablePrefix );
- return $this->doQuery( 'BEGIN DUPLICATE_TABLE(\'' . $tabName . '\', \'' . $oldPrefix . '\', \'' . strtoupper( $wgDBprefix ) . '\', ' . $temporary . '); END;' );
+ return $this->doQuery( "BEGIN DUPLICATE_TABLE( '$tabName', '$oldPrefix', '$newPrefix', $temporary ); END;" );
}
function listTables( $prefix = null, $fname = 'DatabaseOracle::listTables' ) {
@@ -876,8 +762,9 @@ class DatabaseOracle extends DatabaseBase {
if (!empty($prefix)) {
$listWhere = ' AND table_name LIKE \''.strtoupper($prefix).'%\'';
}
-
- $result = $this->doQuery( "SELECT table_name FROM user_tables WHERE table_name NOT LIKE '%!_IDX$_' ESCAPE '!' $listWhere" );
+
+ $owner = strtoupper( $this->mDBname );
+ $result = $this->doQuery( "SELECT table_name FROM all_tables WHERE owner='$owner' AND table_name NOT LIKE '%!_IDX\$_' ESCAPE '!' $listWhere" );
// dirty code ... i know
$endArray = array();
@@ -898,7 +785,7 @@ class DatabaseOracle extends DatabaseBase {
if( !$this->tableExists( $tableName ) ) {
return false;
}
-
+
return $this->doQuery( "DROP TABLE $tableName CASCADE CONSTRAINTS PURGE" );
}
@@ -942,15 +829,35 @@ class DatabaseOracle extends DatabaseBase {
$rset = $this->doQuery( 'SELECT version FROM product_component_version WHERE UPPER(product) LIKE \'ORACLE DATABASE%\'' );
if ( !( $row = $rset->fetchRow() ) ) {
return oci_server_version( $this->mConn );
- }
+ }
return $row['version'];
}
/**
+ * Query whether a given index exists
+ */
+ function indexExists( $table, $index, $fname = 'DatabaseOracle::indexExists' ) {
+ $table = $this->tableName( $table );
+ $table = strtoupper( $this->removeIdentifierQuotes( $table ) );
+ $index = strtoupper( $index );
+ $owner = strtoupper( $this->mDBname );
+ $SQL = "SELECT 1 FROM all_indexes WHERE owner='$owner' AND index_name='{$table}_{$index}'";
+ $res = $this->doQuery( $SQL );
+ if ( $res ) {
+ $count = $res->numRows();
+ $res->free();
+ } else {
+ $count = 0;
+ }
+ return $count != 0;
+ }
+
+ /**
* Query whether a given table exists (in the given schema, or the default mw one if not given)
*/
function tableExists( $table ) {
- $table = $this->addQuotes( trim( $this->tableName($table), '"' ) );
+ $table = $this->tableName( $table );
+ $table = $this->addQuotes( strtoupper( $this->removeIdentifierQuotes( $table ) ) );
$owner = $this->addQuotes( strtoupper( $this->mDBname ) );
$SQL = "SELECT 1 FROM all_tables WHERE owner=$owner AND table_name=$table";
$res = $this->doQuery( $SQL );
@@ -960,7 +867,7 @@ class DatabaseOracle extends DatabaseBase {
} else {
$count = 0;
}
- return $count!=0;
+ return $count;
}
/**
@@ -971,6 +878,7 @@ class DatabaseOracle extends DatabaseBase {
*
* @param $table Array
* @param $field String
+ * @return ORAField|ORAResult
*/
private function fieldInfoMulti( $table, $field ) {
$field = strtoupper( $field );
@@ -978,7 +886,7 @@ class DatabaseOracle extends DatabaseBase {
$table = array_map( array( &$this, 'tableNameInternal' ), $table );
$tableWhere = 'IN (';
foreach( $table as &$singleTable ) {
- $singleTable = strtoupper( trim( $singleTable, '"' ) );
+ $singleTable = $this->removeIdentifierQuotes($singleTable);
if ( isset( $this->mFieldInfoCache["$singleTable.$field"] ) ) {
return $this->mFieldInfoCache["$singleTable.$field"];
}
@@ -986,7 +894,7 @@ class DatabaseOracle extends DatabaseBase {
}
$tableWhere = rtrim( $tableWhere, ',' ) . ')';
} else {
- $table = strtoupper( trim( $this->tableNameInternal( $table ), '"' ) );
+ $table = $this->removeIdentifierQuotes( $this->tableNameInternal( $table ) );
if ( isset( $this->mFieldInfoCache["$table.$field"] ) ) {
return $this->mFieldInfoCache["$table.$field"];
}
@@ -1018,6 +926,12 @@ class DatabaseOracle extends DatabaseBase {
return $fieldInfoTemp;
}
+ /**
+ * @throws DBUnexpectedError
+ * @param $table
+ * @param $field
+ * @return ORAField
+ */
function fieldInfo( $table, $field ) {
if ( is_array( $table ) ) {
throw new DBUnexpectedError( $this, 'DatabaseOracle::fieldInfo called with table array!' );
@@ -1027,12 +941,17 @@ class DatabaseOracle extends DatabaseBase {
function begin( $fname = 'DatabaseOracle::begin' ) {
$this->mTrxLevel = 1;
+ $this->doQuery( 'SET CONSTRAINTS ALL DEFERRED' );
}
function commit( $fname = 'DatabaseOracle::commit' ) {
if ( $this->mTrxLevel ) {
- oci_commit( $this->mConn );
+ $ret = oci_commit( $this->mConn );
+ if ( !$ret ) {
+ throw new DBUnexpectedError( $this, $this->lastError() );
+ }
$this->mTrxLevel = 0;
+ $this->doQuery( 'SET CONSTRAINTS ALL IMMEDIATE' );
}
}
@@ -1040,6 +959,7 @@ class DatabaseOracle extends DatabaseBase {
if ( $this->mTrxLevel ) {
oci_rollback( $this->mConn );
$this->mTrxLevel = 0;
+ $this->doQuery( 'SET CONSTRAINTS ALL IMMEDIATE' );
}
}
@@ -1154,15 +1074,23 @@ class DatabaseOracle extends DatabaseBase {
}
public function addIdentifierQuotes( $s ) {
- if ( !$this->mFlags & DBO_DDLMODE ) {
- $s = '"' . str_replace( '"', '""', $s ) . '"';
+ if ( !$this->getFlag( DBO_DDLMODE ) ) {
+ $s = '/*Q*/' . $s;
}
return $s;
}
+ public function removeIdentifierQuotes( $s ) {
+ return strpos($s, '/*Q*/') === FALSE ? $s : substr($s, 5);
+ }
+
+ public function isQuotedIdentifier( $s ) {
+ return strpos($s, '/*Q*/') !== FALSE;
+ }
+
private function wrapFieldForWhere( $table, &$col, &$val ) {
global $wgContLang;
-
+
$col_info = $this->fieldInfoMulti( $table, $col );
$col_type = $col_info != false ? $col_info->type() : 'CONSTANT';
if ( $col_type == 'CLOB' ) {
@@ -1244,20 +1172,38 @@ class DatabaseOracle extends DatabaseBase {
if ( is_array($conds) ) {
$conds = $this->wrapConditionsForWhere( $table, $conds );
}
+ // a hack for deleting pages, users and images (which have non-nullable FKs)
+ // all deletions on these tables have transactions so final failure rollbacks these updates
+ $table = $this->tableName( $table );
+ if ( $table == $this->tableName( 'page' ) ) {
+ $this->update( 'recentchanges', array( 'rc_cur_id' => 0 ), array( 'rc_cur_id' => $conds['page_id'] ), $fname );
+ } elseif ( $table == $this->tableName( 'user' ) ) {
+ $this->update( 'archive', array( 'ar_user' => 0 ), array( 'ar_user' => $conds['user_id'] ), $fname );
+ $this->update( 'ipblocks', array( 'ipb_user' => 0 ), array( 'ipb_user' => $conds['user_id'] ), $fname );
+ $this->update( 'image', array( 'img_user' => 0 ), array( 'img_user' => $conds['user_id'] ), $fname );
+ $this->update( 'oldimage', array( 'oi_user' => 0 ), array( 'oi_user' => $conds['user_id'] ), $fname );
+ $this->update( 'filearchive', array( 'fa_deleted_user' => 0 ), array( 'fa_deleted_user' => $conds['user_id'] ), $fname );
+ $this->update( 'filearchive', array( 'fa_user' => 0 ), array( 'fa_user' => $conds['user_id'] ), $fname );
+ $this->update( 'uploadstash', array( 'us_user' => 0 ), array( 'us_user' => $conds['user_id'] ), $fname );
+ $this->update( 'recentchanges', array( 'rc_user' => 0 ), array( 'rc_user' => $conds['user_id'] ), $fname );
+ $this->update( 'logging', array( 'log_user' => 0 ), array( 'log_user' => $conds['user_id'] ), $fname );
+ } elseif ( $table == $this->tableName( 'image' ) ) {
+ $this->update( 'oldimage', array( 'oi_name' => 0 ), array( 'oi_name' => $conds['img_name'] ), $fname );
+ }
return parent::delete( $table, $conds, $fname );
}
function update( $table, $values, $conds, $fname = 'DatabaseOracle::update', $options = array() ) {
global $wgContLang;
-
+
$table = $this->tableName( $table );
$opts = $this->makeUpdateOptions( $options );
$sql = "UPDATE $opts $table SET ";
-
+
$first = true;
foreach ( $values as $col => &$val ) {
$sqlSet = $this->fieldBindStatement( $table, $col, $val, true );
-
+
if ( !$first ) {
$sqlSet = ', ' . $sqlSet;
} else {
@@ -1303,8 +1249,8 @@ class DatabaseOracle extends DatabaseBase {
throw new DBUnexpectedError( $this, "Cannot create LOB descriptor: " . $e['message'] );
}
- if ( $col_type == 'BLOB' ) {
- $lob[$col]->writeTemporary( $val );
+ if ( $col_type == 'BLOB' ) {
+ $lob[$col]->writeTemporary( $val );
oci_bind_by_name( $stmt, ":$col", $lob[$col], - 1, SQLT_BLOB );
} else {
$lob[$col]->writeTemporary( $val );
diff --git a/includes/db/DatabasePostgres.php b/includes/db/DatabasePostgres.php
index bc71a9a5..742a8b51 100644
--- a/includes/db/DatabasePostgres.php
+++ b/includes/db/DatabasePostgres.php
@@ -9,8 +9,14 @@
class PostgresField implements Field {
private $name, $tablename, $type, $nullable, $max_length, $deferred, $deferrable, $conname;
- static function fromText($db, $table, $field) {
- global $wgDBmwschema;
+ /**
+ * @param $db DatabaseBase
+ * @param $table
+ * @param $field
+ * @return null|PostgresField
+ */
+ static function fromText( $db, $table, $field ) {
+ global $wgDBmwschema;
$q = <<<SQL
SELECT
@@ -33,7 +39,7 @@ AND relname=%s
AND attname=%s;
SQL;
- $table = $db->tableName( $table );
+ $table = $db->tableName( $table, false );
$res = $db->query(
sprintf( $q,
$db->addQuotes( $wgDBmwschema ),
@@ -137,10 +143,6 @@ class DatabasePostgres extends DatabaseBase {
return $this->numRows( $res );
}
- static function newFromParams( $server, $user, $password, $dbName, $flags = 0 ) {
- return new DatabasePostgres( $server, $user, $password, $dbName, $flags );
- }
-
/**
* Usually aborts on failure
*/
@@ -155,9 +157,10 @@ class DatabasePostgres extends DatabaseBase {
if ( !strlen( $user ) ) { # e.g. the class is being loaded
return;
}
+
$this->close();
$this->mServer = $server;
- $this->mPort = $port = $wgDBport;
+ $port = $wgDBport;
$this->mUser = $user;
$this->mPassword = $password;
$this->mDBname = $dbName;
@@ -194,21 +197,34 @@ class DatabasePostgres extends DatabaseBase {
$this->doQuery( "SET client_min_messages = 'ERROR'" );
}
- $this->doQuery( "SET client_encoding='UTF8'" );
+ $this->query( "SET client_encoding='UTF8'", __METHOD__ );
+ $this->query( "SET datestyle = 'ISO, YMD'", __METHOD__ );
+ $this->query( "SET timezone = 'GMT'", __METHOD__ );
- global $wgDBmwschema, $wgDBts2schema;
- if ( isset( $wgDBmwschema ) && isset( $wgDBts2schema )
- && $wgDBmwschema !== 'mediawiki'
- && preg_match( '/^\w+$/', $wgDBmwschema )
- && preg_match( '/^\w+$/', $wgDBts2schema )
- ) {
+ global $wgDBmwschema;
+ if ( $this->schemaExists( $wgDBmwschema ) ) {
$safeschema = $this->addIdentifierQuotes( $wgDBmwschema );
- $this->doQuery( "SET search_path = $safeschema, $wgDBts2schema, public" );
+ $this->doQuery( "SET search_path = $safeschema" );
+ } else {
+ $this->doQuery( "SET search_path = public" );
}
return $this->mConn;
}
+ /**
+ * Postgres doesn't support selectDB in the same way MySQL does. So if the
+ * DB name doesn't match the open connection, open a new one
+ * @return
+ */
+ function selectDB( $db ) {
+ if ( $this->mDBname !== $db ) {
+ return (bool)$this->open( $this->mServer, $this->mUser, $this->mPassword, $db );
+ } else {
+ return true;
+ }
+ }
+
function makeConnectionString( $vars ) {
$s = '';
foreach ( $vars as $name => $value ) {
@@ -230,7 +246,7 @@ class DatabasePostgres extends DatabaseBase {
}
}
- function doQuery( $sql ) {
+ protected function doQuery( $sql ) {
if ( function_exists( 'mb_convert_encoding' ) ) {
$sql = mb_convert_encoding( $sql, 'UTF-8' );
}
@@ -247,7 +263,10 @@ class DatabasePostgres extends DatabaseBase {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- if ( !@pg_free_result( $res ) ) {
+ wfSuppressWarnings();
+ $ok = pg_free_result( $res );
+ wfRestoreWarnings();
+ if ( !$ok ) {
throw new DBUnexpectedError( $this, "Unable to free Postgres result\n" );
}
}
@@ -256,11 +275,12 @@ class DatabasePostgres extends DatabaseBase {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- @$row = pg_fetch_object( $res );
- # FIXME: HACK HACK HACK HACK debug
+ wfSuppressWarnings();
+ $row = pg_fetch_object( $res );
+ wfRestoreWarnings();
+ # @todo FIXME: HACK HACK HACK HACK debug
- # TODO:
- # hashar : not sure if the following test really trigger if the object
+ # @todo hashar: not sure if the following test really trigger if the object
# fetching failed.
if( pg_last_error( $this->mConn ) ) {
throw new DBUnexpectedError( $this, 'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) ) );
@@ -272,7 +292,9 @@ class DatabasePostgres extends DatabaseBase {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- @$row = pg_fetch_array( $res );
+ wfSuppressWarnings();
+ $row = pg_fetch_array( $res );
+ wfRestoreWarnings();
if( pg_last_error( $this->mConn ) ) {
throw new DBUnexpectedError( $this, 'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) ) );
}
@@ -283,7 +305,9 @@ class DatabasePostgres extends DatabaseBase {
if ( $res instanceof ResultWrapper ) {
$res = $res->result;
}
- @$n = pg_num_rows( $res );
+ wfSuppressWarnings();
+ $n = pg_num_rows( $res );
+ wfRestoreWarnings();
if( pg_last_error( $this->mConn ) ) {
throw new DBUnexpectedError( $this, 'SQL error: ' . htmlspecialchars( pg_last_error( $this->mConn ) ) );
}
@@ -529,7 +553,7 @@ class DatabasePostgres extends DatabaseBase {
* Source items may be literals rather then field names, but strings should be quoted with Database::addQuotes()
* $conds may be "*" to copy the whole table
* srcTable may be an array of tables.
- * @todo FIXME: implement this a little better (seperate select/insert)?
+ * @todo FIXME: Implement this a little better (seperate select/insert)?
*/
function insertSelect( $destTable, $srcTable, $varMap, $conds, $fname = 'DatabasePostgres::insertSelect',
$insertOptions = array(), $selectOptions = array() )
@@ -598,7 +622,7 @@ class DatabasePostgres extends DatabaseBase {
return $res;
}
- function tableName( $name ) {
+ function tableName( $name, $quoted = true ) {
# Replace reserved words with better ones
switch( $name ) {
case 'user':
@@ -606,7 +630,7 @@ class DatabasePostgres extends DatabaseBase {
case 'text':
return 'pagecontent';
default:
- return $name;
+ return parent::tableName( $name, $quoted );
}
}
@@ -632,83 +656,6 @@ class DatabasePostgres extends DatabaseBase {
return $currval;
}
- /**
- * REPLACE query wrapper
- * Postgres simulates this with a DELETE followed by INSERT
- * $row is the row to insert, an associative array
- * $uniqueIndexes is an array of indexes. Each element may be either a
- * field name or an array of field names
- *
- * It may be more efficient to leave off unique indexes which are unlikely to collide.
- * However if you do this, you run the risk of encountering errors which wouldn't have
- * occurred in MySQL
- */
- function replace( $table, $uniqueIndexes, $rows, $fname = 'DatabasePostgres::replace' ) {
- $table = $this->tableName( $table );
-
- if ( count( $rows ) == 0 ) {
- return;
- }
-
- # Single row case
- if ( !is_array( reset( $rows ) ) ) {
- $rows = array( $rows );
- }
-
- foreach( $rows as $row ) {
- # Delete rows which collide
- if ( $uniqueIndexes ) {
- $sql = "DELETE FROM $table WHERE ";
- $first = true;
- foreach ( $uniqueIndexes as $index ) {
- if ( $first ) {
- $first = false;
- $sql .= '(';
- } else {
- $sql .= ') OR (';
- }
- if ( is_array( $index ) ) {
- $first2 = true;
- foreach ( $index as $col ) {
- if ( $first2 ) {
- $first2 = false;
- } else {
- $sql .= ' AND ';
- }
- $sql .= $col.'=' . $this->addQuotes( $row[$col] );
- }
- } else {
- $sql .= $index.'=' . $this->addQuotes( $row[$index] );
- }
- }
- $sql .= ')';
- $this->query( $sql, $fname );
- }
-
- # Now insert the row
- $sql = "INSERT INTO $table (" . $this->makeList( array_keys( $row ), LIST_NAMES ) .') VALUES (' .
- $this->makeList( $row, LIST_COMMA ) . ')';
- $this->query( $sql, $fname );
- }
- }
-
- # DELETE where the condition is a join
- function deleteJoin( $delTable, $joinTable, $delVar, $joinVar, $conds, $fname = 'DatabasePostgres::deleteJoin' ) {
- if ( !$conds ) {
- throw new DBUnexpectedError( $this, 'DatabasePostgres::deleteJoin() called with empty $conds' );
- }
-
- $delTable = $this->tableName( $delTable );
- $joinTable = $this->tableName( $joinTable );
- $sql = "DELETE FROM $delTable WHERE $delVar IN (SELECT $joinVar FROM $joinTable ";
- if ( $conds != '*' ) {
- $sql .= 'WHERE ' . $this->makeList( $conds, LIST_AND );
- }
- $sql .= ')';
-
- $this->query( $sql, $fname );
- }
-
# Returns the size of a text field, or -1 for "unlimited"
function textFieldSize( $table, $field ) {
$table = $this->tableName( $table );
@@ -735,6 +682,8 @@ class DatabasePostgres extends DatabaseBase {
}
function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = 'DatabasePostgres::duplicateTableStructure' ) {
+ $newName = $this->addIdentifierQuotes( $newName );
+ $oldName = $this->addIdentifierQuotes( $oldName );
return $this->query( 'CREATE ' . ( $temporary ? 'TEMPORARY ' : '' ) . " TABLE $newName (LIKE $oldName INCLUDING DEFAULTS)", $fname );
}
@@ -788,6 +737,7 @@ class DatabasePostgres extends DatabaseBase {
if ( !$schema ) {
$schema = $wgDBmwschema;
}
+ $table = $this->tableName( $table, false );
$etable = $this->addQuotes( $table );
$eschema = $this->addQuotes( $schema );
$SQL = "SELECT 1 FROM pg_catalog.pg_class c, pg_catalog.pg_namespace n "
@@ -899,6 +849,10 @@ SQL;
return $sql;
}
+ /**
+ * @param $b
+ * @return Blob
+ */
function encodeBlob( $b ) {
return new Blob( pg_escape_bytea( $this->mConn, $b ) );
}
@@ -914,6 +868,10 @@ SQL;
return pg_escape_string( $this->mConn, $s );
}
+ /**
+ * @param $s null|bool|Blob
+ * @return int|string
+ */
function addQuotes( $s ) {
if ( is_null( $s ) ) {
return 'NULL';
@@ -971,13 +929,21 @@ SQL;
}
if ( isset( $options['GROUP BY'] ) ) {
- $preLimitTail .= ' GROUP BY ' . $options['GROUP BY'];
+ $gb = is_array( $options['GROUP BY'] )
+ ? implode( ',', $options['GROUP BY'] )
+ : $options['GROUP BY'];
+ $preLimitTail .= " GROUP BY {$gb}";
}
+
if ( isset( $options['HAVING'] ) ) {
$preLimitTail .= " HAVING {$options['HAVING']}";
}
+
if ( isset( $options['ORDER BY'] ) ) {
- $preLimitTail .= ' ORDER BY ' . $options['ORDER BY'];
+ $ob = is_array( $options['ORDER BY'] )
+ ? implode( ',', $options['ORDER BY'] )
+ : $options['ORDER BY'];
+ $preLimitTail .= " ORDER BY {$ob}";
}
//if ( isset( $options['LIMIT'] ) ) {
diff --git a/includes/db/DatabaseSqlite.php b/includes/db/DatabaseSqlite.php
index 503ebdf6..e298175d 100644
--- a/includes/db/DatabaseSqlite.php
+++ b/includes/db/DatabaseSqlite.php
@@ -20,8 +20,18 @@ class DatabaseSqlite extends DatabaseBase {
var $mName;
/**
+ * @var PDO
+ */
+ protected $mConn;
+
+ /**
* Constructor.
* Parameters $server, $user and $password are not used.
+ * @param $server string
+ * @param $user string
+ * @param $password string
+ * @param $dbName string
+ * @param $flags int
*/
function __construct( $server = false, $user = false, $password = false, $dbName = false, $flags = 0 ) {
$this->mName = $dbName;
@@ -35,21 +45,31 @@ class DatabaseSqlite extends DatabaseBase {
}
}
+ /**
+ * @return string
+ */
function getType() {
return 'sqlite';
}
/**
* @todo: check if it should be true like parent class
+ *
+ * @return bool
*/
- function implicitGroupby() { return false; }
-
- static function newFromParams( $server, $user, $password, $dbName, $flags = 0 ) {
- return new DatabaseSqlite( $server, $user, $password, $dbName, $flags );
+ function implicitGroupby() {
+ return false;
}
/** Open an SQLite database and return a resource handle to it
* NOTE: only $dbName is used, the other parameters are irrelevant for SQLite databases
+ *
+ * @param $server
+ * @param $user
+ * @param $pass
+ * @param $dbName
+ *
+ * @return PDO
*/
function open( $server, $user, $pass, $dbName ) {
global $wgSQLiteDataDir;
@@ -65,7 +85,10 @@ class DatabaseSqlite extends DatabaseBase {
/**
* Opens a database file
- * @return SQL connection or false if failed
+ *
+ * @param $fileName string
+ *
+ * @return PDO|false SQL connection or false if failed
*/
function openFile( $fileName ) {
$this->mDatabaseFile = $fileName;
@@ -93,6 +116,8 @@ class DatabaseSqlite extends DatabaseBase {
/**
* Close an SQLite database
+ *
+ * @return bool
*/
function close() {
$this->mOpened = false;
@@ -115,7 +140,7 @@ class DatabaseSqlite extends DatabaseBase {
/**
* Check if the searchindext table is FTS enabled.
- * @returns false if not enabled.
+ * @return false if not enabled.
*/
function checkForEnabledSearch() {
if ( self::$fulltextEnabled === null ) {
@@ -154,9 +179,12 @@ class DatabaseSqlite extends DatabaseBase {
/**
* Attaches external database to our connection, see http://sqlite.org/lang_attach.html
* for details.
+ *
* @param $name String: database name to be used in queries like SELECT foo FROM dbname.table
* @param $file String: database file name. If omitted, will be generated using $name and $wgSQLiteDataDir
* @param $fname String: calling function name
+ *
+ * @return ResultWrapper
*/
function attachDatabase( $name, $file = false, $fname = 'DatabaseSqlite::attachDatabase' ) {
global $wgSQLiteDataDir;
@@ -169,6 +197,10 @@ class DatabaseSqlite extends DatabaseBase {
/**
* @see DatabaseBase::isWriteQuery()
+ *
+ * @param $sql string
+ *
+ * @return bool
*/
function isWriteQuery( $sql ) {
return parent::isWriteQuery( $sql ) && !preg_match( '/^ATTACH\b/i', $sql );
@@ -176,8 +208,12 @@ class DatabaseSqlite extends DatabaseBase {
/**
* SQLite doesn't allow buffered results or data seeking etc, so we'll use fetchAll as the result
+ *
+ * @param $sql string
+ *
+ * @return ResultWrapper
*/
- function doQuery( $sql ) {
+ protected function doQuery( $sql ) {
$res = $this->mConn->query( $sql );
if ( $res === false ) {
return false;
@@ -189,6 +225,9 @@ class DatabaseSqlite extends DatabaseBase {
return $res;
}
+ /**
+ * @param $res ResultWrapper
+ */
function freeResult( $res ) {
if ( $res instanceof ResultWrapper ) {
$res->result = null;
@@ -197,6 +236,10 @@ class DatabaseSqlite extends DatabaseBase {
}
}
+ /**
+ * @param $res ResultWrapper
+ * @return
+ */
function fetchObject( $res ) {
if ( $res instanceof ResultWrapper ) {
$r =& $res->result;
@@ -219,6 +262,10 @@ class DatabaseSqlite extends DatabaseBase {
return false;
}
+ /**
+ * @param $res ResultWrapper
+ * @return bool|mixed
+ */
function fetchRow( $res ) {
if ( $res instanceof ResultWrapper ) {
$r =& $res->result;
@@ -235,37 +282,60 @@ class DatabaseSqlite extends DatabaseBase {
/**
* The PDO::Statement class implements the array interface so count() will work
+ *
+ * @param $res ResultWrapper
+ *
+ * @return int
*/
function numRows( $res ) {
$r = $res instanceof ResultWrapper ? $res->result : $res;
return count( $r );
}
+ /**
+ * @param $res ResultWrapper
+ * @return int
+ */
function numFields( $res ) {
$r = $res instanceof ResultWrapper ? $res->result : $res;
return is_array( $r ) ? count( $r[0] ) : 0;
}
+ /**
+ * @param $res ResultWrapper
+ * @param $n
+ * @return bool
+ */
function fieldName( $res, $n ) {
$r = $res instanceof ResultWrapper ? $res->result : $res;
if ( is_array( $r ) ) {
$keys = array_keys( $r[0] );
return $keys[$n];
}
- return false;
+ return false;
}
/**
* Use MySQL's naming (accounts for prefix etc) but remove surrounding backticks
+ *
+ * @param $name
+ * @param bool $quoted
+ * @return string
*/
- function tableName( $name ) {
+ function tableName( $name, $quoted = true ) {
// table names starting with sqlite_ are reserved
- if ( strpos( $name, 'sqlite_' ) === 0 ) return $name;
- return str_replace( '`', '', parent::tableName( $name ) );
+ if ( strpos( $name, 'sqlite_' ) === 0 ) {
+ return $name;
+ }
+ return str_replace( '"', '', parent::tableName( $name, $quoted ) );
}
/**
* Index names have DB scope
+ *
+ * @param $index string
+ *
+ * @return string
*/
function indexName( $index ) {
return $index;
@@ -273,11 +343,17 @@ class DatabaseSqlite extends DatabaseBase {
/**
* This must be called after nextSequenceVal
+ *
+ * @return int
*/
function insertId() {
return $this->mConn->lastInsertId();
}
+ /**
+ * @param $res ResultWrapper
+ * @param $row
+ */
function dataSeek( $res, $row ) {
if ( $res instanceof ResultWrapper ) {
$r =& $res->result;
@@ -292,6 +368,9 @@ class DatabaseSqlite extends DatabaseBase {
}
}
+ /**
+ * @return string
+ */
function lastError() {
if ( !is_object( $this->mConn ) ) {
return "Cannot return last error, no db connection";
@@ -300,6 +379,9 @@ class DatabaseSqlite extends DatabaseBase {
return isset( $e[2] ) ? $e[2] : '';
}
+ /**
+ * @return string
+ */
function lastErrno() {
if ( !is_object( $this->mConn ) ) {
return "Cannot return last error, no db connection";
@@ -309,6 +391,9 @@ class DatabaseSqlite extends DatabaseBase {
}
}
+ /**
+ * @return int
+ */
function affectedRows() {
return $this->mAffectedRows;
}
@@ -317,6 +402,8 @@ class DatabaseSqlite extends DatabaseBase {
* Returns information about an index
* Returns false if the index does not exist
* - if errors are explicitly ignored, returns NULL on failure
+ *
+ * @return array
*/
function indexInfo( $table, $index, $fname = 'DatabaseSqlite::indexExists' ) {
$sql = 'PRAGMA index_info(' . $this->addQuotes( $this->indexName( $index ) ) . ')';
@@ -334,6 +421,12 @@ class DatabaseSqlite extends DatabaseBase {
return $info;
}
+ /**
+ * @param $table
+ * @param $index
+ * @param $fname string
+ * @return bool|null
+ */
function indexUnique( $table, $index, $fname = 'DatabaseSqlite::indexUnique' ) {
$row = $this->selectRow( 'sqlite_master', '*',
array(
@@ -356,6 +449,10 @@ class DatabaseSqlite extends DatabaseBase {
/**
* Filter the options used in SELECT statements
+ *
+ * @param $options array
+ *
+ * @return array
*/
function makeSelectOptions( $options ) {
foreach ( $options as $k => $v ) {
@@ -367,22 +464,44 @@ class DatabaseSqlite extends DatabaseBase {
}
/**
- * Based on generic method (parent) with some prior SQLite-sepcific adjustments
+ * @param $options array
+ * @return string
*/
- function insert( $table, $a, $fname = 'DatabaseSqlite::insert', $options = array() ) {
- if ( !count( $a ) ) {
- return true;
- }
- if ( !is_array( $options ) ) {
- $options = array( $options );
- }
+ function makeUpdateOptions( $options ) {
+ $options = self::fixIgnore( $options );
+ return parent::makeUpdateOptions( $options );
+ }
+ /**
+ * @param $options array
+ * @return array
+ */
+ static function fixIgnore( $options ) {
# SQLite uses OR IGNORE not just IGNORE
foreach ( $options as $k => $v ) {
if ( $v == 'IGNORE' ) {
$options[$k] = 'OR IGNORE';
}
}
+ return $options;
+ }
+
+ /**
+ * @param $options array
+ * @return string
+ */
+ function makeInsertOptions( $options ) {
+ $options = self::fixIgnore( $options );
+ return parent::makeInsertOptions( $options );
+ }
+
+ /**
+ * Based on generic method (parent) with some prior SQLite-sepcific adjustments
+ */
+ function insert( $table, $a, $fname = 'DatabaseSqlite::insert', $options = array() ) {
+ if ( !count( $a ) ) {
+ return true;
+ }
# SQLite can't handle multi-row inserts, so divide up into multiple single-row inserts
if ( isset( $a[0] ) && is_array( $a[0] ) ) {
@@ -399,6 +518,13 @@ class DatabaseSqlite extends DatabaseBase {
return $ret;
}
+ /**
+ * @param $table
+ * @param $uniqueIndexes
+ * @param $rows
+ * @param $fname string
+ * @return bool|ResultWrapper
+ */
function replace( $table, $uniqueIndexes, $rows, $fname = 'DatabaseSqlite::replace' ) {
if ( !count( $rows ) ) return true;
@@ -406,12 +532,12 @@ class DatabaseSqlite extends DatabaseBase {
if ( isset( $rows[0] ) && is_array( $rows[0] ) ) {
$ret = true;
foreach ( $rows as $v ) {
- if ( !parent::replace( $table, $uniqueIndexes, $v, "$fname/multi-row" ) ) {
+ if ( !$this->nativeReplace( $table, $v, "$fname/multi-row" ) ) {
$ret = false;
}
}
} else {
- $ret = parent::replace( $table, $uniqueIndexes, $rows, "$fname/single-row" );
+ $ret = $this->nativeReplace( $table, $rows, "$fname/single-row" );
}
return $ret;
@@ -420,32 +546,47 @@ class DatabaseSqlite extends DatabaseBase {
/**
* Returns the size of a text field, or -1 for "unlimited"
* In SQLite this is SQLITE_MAX_LENGTH, by default 1GB. No way to query it though.
+ *
+ * @return int
*/
function textFieldSize( $table, $field ) {
- return - 1;
+ return -1;
}
+ /**
+ * @return bool
+ */
function unionSupportsOrderAndLimit() {
return false;
}
+ /**
+ * @param $sqls
+ * @param $all
+ * @return string
+ */
function unionQueries( $sqls, $all ) {
$glue = $all ? ' UNION ALL ' : ' UNION ';
return implode( $glue, $sqls );
}
- public function unixTimestamp( $field ) {
- return $field;
- }
-
+ /**
+ * @return bool
+ */
function wasDeadlock() {
return $this->lastErrno() == 5; // SQLITE_BUSY
}
+ /**
+ * @return bool
+ */
function wasErrorReissuable() {
return $this->lastErrno() == 17; // SQLITE_SCHEMA;
}
+ /**
+ * @return bool
+ */
function wasReadOnlyError() {
return $this->lastErrno() == 8; // SQLITE_READONLY;
}
@@ -475,6 +616,8 @@ class DatabaseSqlite extends DatabaseBase {
/**
* Get information about a given field
* Returns false if the field does not exist.
+ *
+ * @return SQLiteField|false
*/
function fieldInfo( $table, $field ) {
$tableName = $this->tableName( $table );
@@ -489,35 +632,58 @@ class DatabaseSqlite extends DatabaseBase {
}
function begin( $fname = '' ) {
- if ( $this->mTrxLevel == 1 ) $this->commit();
+ if ( $this->mTrxLevel == 1 ) {
+ $this->commit();
+ }
$this->mConn->beginTransaction();
$this->mTrxLevel = 1;
}
function commit( $fname = '' ) {
- if ( $this->mTrxLevel == 0 ) return;
+ if ( $this->mTrxLevel == 0 ) {
+ return;
+ }
$this->mConn->commit();
$this->mTrxLevel = 0;
}
function rollback( $fname = '' ) {
- if ( $this->mTrxLevel == 0 ) return;
+ if ( $this->mTrxLevel == 0 ) {
+ return;
+ }
$this->mConn->rollBack();
$this->mTrxLevel = 0;
}
+ /**
+ * @param $sql
+ * @param $num
+ * @return string
+ */
function limitResultForUpdate( $sql, $num ) {
return $this->limitResult( $sql, $num );
}
+ /**
+ * @param $s string
+ * @return string
+ */
function strencode( $s ) {
return substr( $this->addQuotes( $s ), 1, - 1 );
}
+ /**
+ * @param $b
+ * @return Blob
+ */
function encodeBlob( $b ) {
return new Blob( $b );
}
+ /**
+ * @param $b Blob|string
+ * @return string
+ */
function decodeBlob( $b ) {
if ( $b instanceof Blob ) {
$b = $b->fetch();
@@ -525,6 +691,10 @@ class DatabaseSqlite extends DatabaseBase {
return $b;
}
+ /**
+ * @param $s Blob|string
+ * @return string
+ */
function addQuotes( $s ) {
if ( $s instanceof Blob ) {
return "x'" . bin2hex( $s->fetch() ) . "'";
@@ -533,6 +703,9 @@ class DatabaseSqlite extends DatabaseBase {
}
}
+ /**
+ * @return string
+ */
function buildLike() {
$params = func_get_args();
if ( count( $params ) > 0 && is_array( $params[0] ) ) {
@@ -541,6 +714,9 @@ class DatabaseSqlite extends DatabaseBase {
return parent::buildLike( $params ) . "ESCAPE '\' ";
}
+ /**
+ * @return string
+ */
public function getSearchEngine() {
return "SearchSqlite";
}
@@ -554,6 +730,10 @@ class DatabaseSqlite extends DatabaseBase {
return call_user_func_array( $function, $args );
}
+ /**
+ * @param $s string
+ * @return string
+ */
protected function replaceVars( $s ) {
$s = parent::replaceVars( $s );
if ( preg_match( '/^\s*(CREATE|ALTER) TABLE/i', $s ) ) {
@@ -596,23 +776,75 @@ class DatabaseSqlite extends DatabaseBase {
return $s;
}
- /*
+ /**
* Build a concatenation list to feed into a SQL query
+ *
+ * @param $stringList array
+ *
+ * @return string
*/
function buildConcat( $stringList ) {
return '(' . implode( ') || (', $stringList ) . ')';
}
+ /**
+ * @throws MWException
+ * @param $oldName
+ * @param $newName
+ * @param $temporary bool
+ * @param $fname string
+ * @return bool|ResultWrapper
+ */
function duplicateTableStructure( $oldName, $newName, $temporary = false, $fname = 'DatabaseSqlite::duplicateTableStructure' ) {
- $res = $this->query( "SELECT sql FROM sqlite_master WHERE tbl_name='$oldName' AND type='table'", $fname );
+ $res = $this->query( "SELECT sql FROM sqlite_master WHERE tbl_name=" . $this->addQuotes( $oldName ) . " AND type='table'", $fname );
$obj = $this->fetchObject( $res );
if ( !$obj ) {
throw new MWException( "Couldn't retrieve structure for table $oldName" );
}
$sql = $obj->sql;
- $sql = preg_replace( '/\b' . preg_quote( $oldName ) . '\b/', $newName, $sql, 1 );
+ $sql = preg_replace( '/(?<=\W)"?' . preg_quote( trim( $this->addIdentifierQuotes( $oldName ), '"' ) ) . '"?(?=\W)/', $this->addIdentifierQuotes( $newName ), $sql, 1 );
+ if ( $temporary ) {
+ if ( preg_match( '/^\\s*CREATE\\s+VIRTUAL\\s+TABLE\b/i', $sql ) ) {
+ wfDebug( "Table $oldName is virtual, can't create a temporary duplicate.\n" );
+ } else {
+ $sql = str_replace( 'CREATE TABLE', 'CREATE TEMPORARY TABLE', $sql );
+ }
+ }
return $this->query( $sql, $fname );
}
+
+
+ /**
+ * List all tables on the database
+ *
+ * @param $prefix Only show tables with this prefix, e.g. mw_
+ * @param $fname String: calling function name
+ *
+ * @return array
+ */
+ function listTables( $prefix = null, $fname = 'DatabaseSqlite::listTables' ) {
+ $result = $this->select(
+ 'sqlite_master',
+ 'name',
+ "type='table'"
+ );
+
+ $endArray = array();
+
+ foreach( $result as $table ) {
+ $vars = get_object_vars($table);
+ $table = array_pop( $vars );
+
+ if( !$prefix || strpos( $table, $prefix ) === 0 ) {
+ if ( strpos( $table, 'sqlite_' ) !== 0 ) {
+ $endArray[] = $table;
+ }
+
+ }
+ }
+
+ return $endArray;
+ }
} // end DatabaseSqlite class
@@ -656,6 +888,9 @@ class SQLiteField implements Field {
return $this->info->dflt_value;
}
+ /**
+ * @return bool
+ */
function isNullable() {
return !$this->info->notnull;
}
diff --git a/includes/db/DatabaseUtility.php b/includes/db/DatabaseUtility.php
new file mode 100644
index 00000000..d1bced6b
--- /dev/null
+++ b/includes/db/DatabaseUtility.php
@@ -0,0 +1,268 @@
+<?php
+/**
+ * Utility class.
+ * @ingroup Database
+ */
+class DBObject {
+ public $mData;
+
+ function __construct( $data ) {
+ $this->mData = $data;
+ }
+
+ function isLOB() {
+ return false;
+ }
+
+ function data() {
+ return $this->mData;
+ }
+}
+
+/**
+ * Utility class
+ * @ingroup Database
+ *
+ * This allows us to distinguish a blob from a normal string and an array of strings
+ */
+class Blob {
+ private $mData;
+
+ function __construct( $data ) {
+ $this->mData = $data;
+ }
+
+ function fetch() {
+ return $this->mData;
+ }
+}
+
+/**
+ * Base for all database-specific classes representing information about database fields
+ * @ingroup Database
+ */
+interface Field {
+ /**
+ * Field name
+ * @return string
+ */
+ function name();
+
+ /**
+ * Name of table this field belongs to
+ * @return string
+ */
+ function tableName();
+
+ /**
+ * Database type
+ * @return string
+ */
+ function type();
+
+ /**
+ * Whether this field can store NULL values
+ * @return bool
+ */
+ function isNullable();
+}
+
+/**
+ * Result wrapper for grabbing data queried by someone else
+ * @ingroup Database
+ */
+class ResultWrapper implements Iterator {
+ var $db, $result, $pos = 0, $currentRow = null;
+
+ /**
+ * Create a new result object from a result resource and a Database object
+ *
+ * @param DatabaseBase $database
+ * @param resource $result
+ */
+ function __construct( $database, $result ) {
+ $this->db = $database;
+
+ if ( $result instanceof ResultWrapper ) {
+ $this->result = $result->result;
+ } else {
+ $this->result = $result;
+ }
+ }
+
+ /**
+ * Get the number of rows in a result object
+ *
+ * @return integer
+ */
+ function numRows() {
+ return $this->db->numRows( $this );
+ }
+
+ /**
+ * Fetch the next row from the given result object, in object form.
+ * Fields can be retrieved with $row->fieldname, with fields acting like
+ * member variables.
+ *
+ * @return object
+ * @throws DBUnexpectedError Thrown if the database returns an error
+ */
+ function fetchObject() {
+ return $this->db->fetchObject( $this );
+ }
+
+ /**
+ * Fetch the next row from the given result object, in associative array
+ * form. Fields are retrieved with $row['fieldname'].
+ *
+ * @return Array
+ * @throws DBUnexpectedError Thrown if the database returns an error
+ */
+ function fetchRow() {
+ return $this->db->fetchRow( $this );
+ }
+
+ /**
+ * Free a result object
+ */
+ function free() {
+ $this->db->freeResult( $this );
+ unset( $this->result );
+ unset( $this->db );
+ }
+
+ /**
+ * Change the position of the cursor in a result object.
+ * See mysql_data_seek()
+ *
+ * @param $row integer
+ */
+ function seek( $row ) {
+ $this->db->dataSeek( $this, $row );
+ }
+
+ /*********************
+ * Iterator functions
+ * Note that using these in combination with the non-iterator functions
+ * above may cause rows to be skipped or repeated.
+ */
+
+ function rewind() {
+ if ( $this->numRows() ) {
+ $this->db->dataSeek( $this, 0 );
+ }
+ $this->pos = 0;
+ $this->currentRow = null;
+ }
+
+ function current() {
+ if ( is_null( $this->currentRow ) ) {
+ $this->next();
+ }
+ return $this->currentRow;
+ }
+
+ function key() {
+ return $this->pos;
+ }
+
+ function next() {
+ $this->pos++;
+ $this->currentRow = $this->fetchObject();
+ return $this->currentRow;
+ }
+
+ function valid() {
+ return $this->current() !== false;
+ }
+}
+
+/**
+ * Overloads the relevant methods of the real ResultsWrapper so it
+ * doesn't go anywhere near an actual database.
+ */
+class FakeResultWrapper extends ResultWrapper {
+ var $result = array();
+ var $db = null; // And it's going to stay that way :D
+ var $pos = 0;
+ var $currentRow = null;
+
+ function __construct( $array ) {
+ $this->result = $array;
+ }
+
+ /**
+ * @return int
+ */
+ function numRows() {
+ return count( $this->result );
+ }
+
+ function fetchRow() {
+ if ( $this->pos < count( $this->result ) ) {
+ $this->currentRow = $this->result[$this->pos];
+ } else {
+ $this->currentRow = false;
+ }
+ $this->pos++;
+ return $this->currentRow;
+ }
+
+ function seek( $row ) {
+ $this->pos = $row;
+ }
+
+ function free() {}
+
+ // Callers want to be able to access fields with $this->fieldName
+ function fetchObject() {
+ $this->fetchRow();
+ if ( $this->currentRow ) {
+ return (object)$this->currentRow;
+ } else {
+ return false;
+ }
+ }
+
+ function rewind() {
+ $this->pos = 0;
+ $this->currentRow = null;
+ }
+
+ function next() {
+ return $this->fetchObject();
+ }
+}
+
+/**
+ * Used by DatabaseBase::buildLike() to represent characters that have special meaning in SQL LIKE clauses
+ * and thus need no escaping. Don't instantiate it manually, use DatabaseBase::anyChar() and anyString() instead.
+ */
+class LikeMatch {
+ private $str;
+
+ /**
+ * Store a string into a LikeMatch marker object.
+ *
+ * @param String $s
+ */
+ public function __construct( $s ) {
+ $this->str = $s;
+ }
+
+ /**
+ * Return the original stored string.
+ *
+ * @return String
+ */
+ public function toString() {
+ return $this->str;
+ }
+}
+
+/**
+ * An object representing a master or slave position in a replicated setup.
+ */
+interface DBMasterPos {
+}
+
diff --git a/includes/db/LBFactory.php b/includes/db/LBFactory.php
index f84a70e5..22a84960 100644
--- a/includes/db/LBFactory.php
+++ b/includes/db/LBFactory.php
@@ -11,6 +11,10 @@
* @ingroup Database
*/
abstract class LBFactory {
+
+ /**
+ * @var LBFactory
+ */
static $instance;
/**
@@ -23,15 +27,9 @@ abstract class LBFactory {
}
/**
- * Resets the singleton for use if it's been disabled. Does nothing otherwise
- */
- public static function enableBackend() {
- if( self::$instance instanceof LBFactory_Fake )
- self::$instance = null;
- }
-
- /**
* Get an LBFactory instance
+ *
+ * @return LBFactory
*/
static function &singleton() {
if ( is_null( self::$instance ) ) {
@@ -56,6 +54,8 @@ abstract class LBFactory {
/**
* Set the instance to be the given object
+ *
+ * @param $instance LBFactory
*/
static function setInstance( $instance ) {
self::destroyInstance();
@@ -84,21 +84,25 @@ abstract class LBFactory {
*/
abstract function getMainLB( $wiki = false );
- /*
+ /**
* Create a new load balancer for external storage. The resulting object will be
* untracked, not chronology-protected, and the caller is responsible for
* cleaning it up.
*
* @param $cluster String: external storage cluster, or false for core
* @param $wiki String: wiki ID, or false for the current wiki
+ *
+ * @return LoadBalancer
*/
abstract function newExternalLB( $cluster, $wiki = false );
- /*
+ /**
* Get a cached (tracked) load balancer for external storage
*
* @param $cluster String: external storage cluster, or false for core
* @param $wiki String: wiki ID, or false for the current wiki
+ *
+ * @return LoadBalancer
*/
abstract function &getExternalLB( $cluster, $wiki = false );
@@ -141,6 +145,10 @@ abstract class LBFactory {
* A simple single-master LBFactory that gets its configuration from the b/c globals
*/
class LBFactory_Simple extends LBFactory {
+
+ /**
+ * @var LoadBalancer
+ */
var $mainLB;
var $extLBs = array();
@@ -151,6 +159,10 @@ class LBFactory_Simple extends LBFactory {
$this->chronProt = new ChronologyProtector;
}
+ /**
+ * @param $wiki
+ * @return LoadBalancer
+ */
function newMainLB( $wiki = false ) {
global $wgDBservers, $wgMasterWaitTimeout;
if ( $wgDBservers ) {
@@ -174,6 +186,10 @@ class LBFactory_Simple extends LBFactory {
));
}
+ /**
+ * @param $wiki
+ * @return LoadBalancer
+ */
function getMainLB( $wiki = false ) {
if ( !isset( $this->mainLB ) ) {
$this->mainLB = $this->newMainLB( $wiki );
@@ -183,6 +199,12 @@ class LBFactory_Simple extends LBFactory {
return $this->mainLB;
}
+ /**
+ * @throws MWException
+ * @param $cluster
+ * @param $wiki
+ * @return LoadBalancer
+ */
function newExternalLB( $cluster, $wiki = false ) {
global $wgExternalServers;
if ( !isset( $wgExternalServers[$cluster] ) ) {
@@ -193,6 +215,11 @@ class LBFactory_Simple extends LBFactory {
));
}
+ /**
+ * @param $cluster
+ * @param $wiki
+ * @return array
+ */
function &getExternalLB( $cluster, $wiki = false ) {
if ( !isset( $this->extLBs[$cluster] ) ) {
$this->extLBs[$cluster] = $this->newExternalLB( $cluster, $wiki );
diff --git a/includes/db/LBFactory_Multi.php b/includes/db/LBFactory_Multi.php
index 0d411ec6..61e56e78 100644
--- a/includes/db/LBFactory_Multi.php
+++ b/includes/db/LBFactory_Multi.php
@@ -98,6 +98,10 @@ class LBFactory_Multi extends LBFactory {
return $section;
}
+ /**
+ * @param $wiki string
+ * @return LoadBalancer
+ */
function newMainLB( $wiki = false ) {
list( $dbName, ) = $this->getDBNameAndPrefix( $wiki );
$section = $this->getSectionForWiki( $wiki );
@@ -111,6 +115,10 @@ class LBFactory_Multi extends LBFactory {
return $this->newLoadBalancer( $this->serverTemplate, $this->sectionLoads[$section], $groupLoads );
}
+ /**
+ * @param $wiki
+ * @return LoadBalancer
+ */
function getMainLB( $wiki = false ) {
$section = $this->getSectionForWiki( $wiki );
if ( !isset( $this->mainLBs[$section] ) ) {
@@ -122,6 +130,11 @@ class LBFactory_Multi extends LBFactory {
return $this->mainLBs[$section];
}
+ /**
+ * @param $cluster
+ * @param $wiki
+ * @return LoadBalancer
+ */
function newExternalLB( $cluster, $wiki = false ) {
if ( !isset( $this->externalLoads[$cluster] ) ) {
throw new MWException( __METHOD__.": Unknown cluster \"$cluster\"" );
@@ -136,6 +149,11 @@ class LBFactory_Multi extends LBFactory {
return $this->newLoadBalancer( $template, $this->externalLoads[$cluster], array() );
}
+ /**
+ * @param $cluster
+ * @param $wiki
+ * @return LoadBalancer
+ */
function &getExternalLB( $cluster, $wiki = false ) {
if ( !isset( $this->extLBs[$cluster] ) ) {
$this->extLBs[$cluster] = $this->newExternalLB( $cluster, $wiki );
@@ -146,6 +164,8 @@ class LBFactory_Multi extends LBFactory {
/**
* Make a new load balancer object based on template and load array
+ *
+ * @return LoadBalancer
*/
function newLoadBalancer( $template, $loads, $groupLoads ) {
global $wgMasterWaitTimeout;
@@ -159,6 +179,8 @@ class LBFactory_Multi extends LBFactory {
/**
* Make a server array as expected by LoadBalancer::__construct, using a template and load array
+ *
+ * @return array
*/
function makeServerArray( $template, $loads, $groupLoads ) {
$servers = array();
diff --git a/includes/db/LBFactory_Single.php b/includes/db/LBFactory_Single.php
index 25acdc5b..89b41321 100644
--- a/includes/db/LBFactory_Single.php
+++ b/includes/db/LBFactory_Single.php
@@ -7,29 +7,55 @@ class LBFactory_Single extends LBFactory {
protected $lb;
/**
- * @param $conf An associative array with one member:
+ * @param $conf array An associative array with one member:
* - connection: The DatabaseBase connection object
*/
function __construct( $conf ) {
$this->lb = new LoadBalancer_Single( $conf );
}
+ /**
+ * @param $wiki
+ *
+ * @return LoadBalancer_Single
+ */
function newMainLB( $wiki = false ) {
return $this->lb;
}
+ /**
+ * @param $wiki
+ *
+ * @return LoadBalancer_Single
+ */
function getMainLB( $wiki = false ) {
return $this->lb;
}
+ /**
+ * @param $cluster
+ * @param $wiki
+ *
+ * @return LoadBalancer_Single
+ */
function newExternalLB( $cluster, $wiki = false ) {
return $this->lb;
}
+ /**
+ * @param $cluster
+ * @param $wiki
+ *
+ * @return LoadBalancer_Single
+ */
function &getExternalLB( $cluster, $wiki = false ) {
return $this->lb;
}
+ /**
+ * @param $callback string|array
+ * @param $params array
+ */
function forEachLB( $callback, $params = array() ) {
call_user_func_array( $callback, array_merge( array( $this->lb ), $params ) );
}
@@ -39,8 +65,15 @@ class LBFactory_Single extends LBFactory {
* Helper class for LBFactory_Single.
*/
class LoadBalancer_Single extends LoadBalancer {
+
+ /**
+ * @var DatabaseBase
+ */
var $db;
+ /**
+ * @param $params array
+ */
function __construct( $params ) {
$this->db = $params['connection'];
parent::__construct( array( 'servers' => array( array(
@@ -51,6 +84,13 @@ class LoadBalancer_Single extends LoadBalancer {
) ) ) );
}
+ /**
+ *
+ * @param $server string
+ * @param $dbNameOverride bool
+ *
+ * @return DatabaseBase
+ */
function reallyOpenConnection( $server, $dbNameOverride = false ) {
return $this->db;
}
diff --git a/includes/db/LoadBalancer.php b/includes/db/LoadBalancer.php
index d899ce07..c7210c4c 100644
--- a/includes/db/LoadBalancer.php
+++ b/includes/db/LoadBalancer.php
@@ -13,13 +13,13 @@
* @ingroup Database
*/
class LoadBalancer {
- /* private */ var $mServers, $mConns, $mLoads, $mGroupLoads;
- /* private */ var $mErrorConnection;
- /* private */ var $mReadIndex, $mAllowLagged;
- /* private */ var $mWaitForPos, $mWaitTimeout;
- /* private */ var $mLaggedSlaveMode, $mLastError = 'Unknown error';
- /* private */ var $mParentInfo, $mLagTimes;
- /* private */ var $mLoadMonitorClass, $mLoadMonitor;
+ private $mServers, $mConns, $mLoads, $mGroupLoads;
+ private $mErrorConnection;
+ private $mReadIndex, $mAllowLagged;
+ private $mWaitForPos, $mWaitTimeout;
+ private $mLaggedSlaveMode, $mLastError = 'Unknown error';
+ private $mParentInfo, $mLagTimes;
+ private $mLoadMonitorClass, $mLoadMonitor;
/**
* @param $params Array with keys:
@@ -27,8 +27,7 @@ class LoadBalancer {
* masterWaitTimeout Replication lag wait timeout
* loadMonitor Name of a class used to fetch server lag and load.
*/
- function __construct( $params )
- {
+ function __construct( $params ) {
if ( !isset( $params['servers'] ) ) {
throw new MWException( __CLASS__.': missing servers parameter' );
}
@@ -51,8 +50,17 @@ class LoadBalancer {
$this->mLaggedSlaveMode = false;
$this->mErrorConnection = false;
$this->mAllowLagged = false;
- $this->mLoadMonitorClass = isset( $params['loadMonitor'] )
- ? $params['loadMonitor'] : 'LoadMonitor_MySQL';
+
+ if ( isset( $params['loadMonitor'] ) ) {
+ $this->mLoadMonitorClass = $params['loadMonitor'];
+ } else {
+ $master = reset( $params['servers'] );
+ if ( isset( $master['type'] ) && $master['type'] === 'mysql' ) {
+ $this->mLoadMonitorClass = 'LoadMonitor_MySQL';
+ } else {
+ $this->mLoadMonitorClass = 'LoadMonitor_Null';
+ }
+ }
foreach( $params['servers'] as $i => $server ) {
$this->mLoads[$i] = $server['load'];
@@ -69,6 +77,8 @@ class LoadBalancer {
/**
* Get a LoadMonitor instance
+ *
+ * @return LoadMonitor
*/
function getLoadMonitor() {
if ( !isset( $this->mLoadMonitor ) ) {
@@ -88,9 +98,12 @@ class LoadBalancer {
/**
* Given an array of non-normalised probabilities, this function will select
* an element and return the appropriate key
+ *
+ * @param $weights
+ *
+ * @return int
*/
- function pickRandom( $weights )
- {
+ function pickRandom( $weights ) {
if ( !is_array( $weights ) || count( $weights ) == 0 ) {
return false;
}
@@ -116,6 +129,11 @@ class LoadBalancer {
return $i;
}
+ /**
+ * @param $loads
+ * @param $wiki bool
+ * @return bool|int|string
+ */
function getRandomNonLagged( $loads, $wiki = false ) {
# Unset excessively lagged servers
$lags = $this->getLagTimes( $wiki );
@@ -160,11 +178,14 @@ class LoadBalancer {
* always return a consistent index during a given invocation
*
* Side effect: opens connections to databases
+ * @param $group bool
+ * @param $wiki bool
+ * @return bool|int|string
*/
function getReaderIndex( $group = false, $wiki = false ) {
global $wgReadOnly, $wgDBClusterTimeout, $wgDBAvgStatusPoll, $wgDBtype;
- # FIXME: For now, only go through all this for mysql databases
+ # @todo FIXME: For now, only go through all this for mysql databases
if ($wgDBtype != 'mysql') {
return $this->getWriterIndex();
}
@@ -220,7 +241,7 @@ class LoadBalancer {
$i = $this->getRandomNonLagged( $currentLoads, $wiki );
if ( $i === false && count( $currentLoads ) != 0 ) {
# All slaves lagged. Switch to read-only mode
- $wgReadOnly = 'The database has been automatically locked ' .
+ $wgReadOnly = 'The database has been automatically locked ' .
'while the slave database servers catch up to the master';
$i = $this->pickRandom( $currentLoads );
$laggedSlaveMode = true;
@@ -229,7 +250,7 @@ class LoadBalancer {
if ( $i === false ) {
# pickRandom() returned false
- # This is permanent and means the configuration or the load monitor
+ # This is permanent and means the configuration or the load monitor
# wants us to return false.
wfDebugLog( 'connect', __METHOD__.": pickRandom() returned false\n" );
wfProfileOut( __METHOD__ );
@@ -247,7 +268,7 @@ class LoadBalancer {
}
// Perform post-connection backoff
- $threshold = isset( $this->mServers[$i]['max threads'] )
+ $threshold = isset( $this->mServers[$i]['max threads'] )
? $this->mServers[$i]['max threads'] : false;
$backoff = $this->getLoadMonitor()->postConnectionBackoff( $conn, $threshold );
@@ -256,7 +277,7 @@ class LoadBalancer {
if ( $wiki !== false ) {
$this->reuseConnection( $conn );
}
-
+
if ( $backoff ) {
# Post-connection overload, don't use this server for now
$totalThreadsConnected += $backoff;
@@ -339,7 +360,7 @@ class LoadBalancer {
}
wfProfileOut( __METHOD__ );
}
-
+
/**
* Set the master wait position and wait for ALL slaves to catch up to it
*/
@@ -347,7 +368,7 @@ class LoadBalancer {
wfProfileIn( __METHOD__ );
$this->mWaitForPos = $pos;
for ( $i = 1; $i < count( $this->mServers ); $i++ ) {
- $this->doWait( $i );
+ $this->doWait( $i , true );
}
wfProfileOut( __METHOD__ );
}
@@ -355,6 +376,8 @@ class LoadBalancer {
/**
* Get any open connection to a given server index, local or foreign
* Returns false if there is no connection open
+ *
+ * @return DatabaseBase
*/
function getAnyOpenConnection( $i ) {
foreach ( $this->mConns as $conns ) {
@@ -368,12 +391,20 @@ class LoadBalancer {
/**
* Wait for a given slave to catch up to the master pos stored in $this
*/
- function doWait( $index ) {
+ function doWait( $index, $open = false ) {
# Find a connection to wait on
$conn = $this->getAnyOpenConnection( $index );
if ( !$conn ) {
- wfDebug( __METHOD__ . ": no connection open\n" );
- return false;
+ if ( !$open ) {
+ wfDebug( __METHOD__ . ": no connection open\n" );
+ return false;
+ } else {
+ $conn = $this->openConnection( $index );
+ if ( !$conn ) {
+ wfDebug( __METHOD__ . ": failed to open connection\n" );
+ return false;
+ }
+ }
}
wfDebug( __METHOD__.": Waiting for slave #$index to catch up...\n" );
@@ -392,11 +423,11 @@ class LoadBalancer {
/**
* Get a connection by index
* This is the main entry point for this class.
- *
+ *
* @param $i Integer: server index
* @param $groups Array: query groups
* @param $wiki String: wiki ID
- *
+ *
* @return DatabaseBase
*/
public function &getConnection( $i, $groups = array(), $wiki = false ) {
@@ -460,6 +491,8 @@ class LoadBalancer {
* Mark a foreign connection as being available for reuse under a different
* DB name or prefix. This mechanism is reference-counted, and must be called
* the same number of times as getConnection() to work.
+ *
+ * @param DatabaseBase $conn
*/
public function reuseConnection( $conn ) {
$serverIndex = $conn->getLBInfo('serverIndex');
@@ -506,8 +539,8 @@ class LoadBalancer {
* On error, returns false, and the connection which caused the
* error will be available via $this->mErrorConnection.
*
- * @param $i Integer: server index
- * @param $wiki String: wiki ID to open
+ * @param $i Integer server index
+ * @param $wiki String wiki ID to open
* @return DatabaseBase
*
* @access private
@@ -615,6 +648,7 @@ class LoadBalancer {
*
* @param $index Integer: server index
* @access private
+ * @return bool
*/
function isOpen( $index ) {
if( !is_integer( $index ) ) {
@@ -627,10 +661,13 @@ class LoadBalancer {
* Really opens a connection. Uncached.
* Returns a Database object whether or not the connection was successful.
* @access private
+ *
+ * @return DatabaseBase
*/
function reallyOpenConnection( $server, $dbNameOverride = false ) {
if( !is_array( $server ) ) {
- throw new MWException( 'You must update your load-balancing configuration. See DefaultSettings.php entry for $wgDBservers.' );
+ throw new MWException( 'You must update your load-balancing configuration. ' .
+ 'See DefaultSettings.php entry for $wgDBservers.' );
}
$host = $server['host'];
@@ -643,12 +680,13 @@ class LoadBalancer {
# Create object
wfDebug( "Connecting to $host $dbname...\n" );
try {
- $db = DatabaseBase::newFromType( $server['type'], $server );
+ $db = DatabaseBase::factory( $server['type'], $server );
} catch ( DBConnectionError $e ) {
- // FIXME: This is probably the ugliest thing I have ever done to
+ // FIXME: This is probably the ugliest thing I have ever done to
// PHP. I'm half-expecting it to segfault, just out of disgust. -- TS
$db = $e->db;
}
+
if ( $db->isOpen() ) {
wfDebug( "Connected to $host $dbname.\n" );
} else {
@@ -669,7 +707,7 @@ class LoadBalancer {
if ( !is_object( $conn ) ) {
// No last connection, probably due to all servers being too busy
- wfLogDBError( "LB failure with no last connection\n" );
+ wfLogDBError( "LB failure with no last connection. Connection error: {$this->mLastError}\n" );
$conn = new Database;
// If all servers were busy, mLastError will contain something sensible
throw new DBConnectionError( $conn, $this->mLastError );
@@ -687,6 +725,8 @@ class LoadBalancer {
/**
* Returns true if the specified index is a valid server index
+ *
+ * @return bool
*/
function haveIndex( $i ) {
return array_key_exists( $i, $this->mServers );
@@ -694,6 +734,8 @@ class LoadBalancer {
/**
* Returns true if the specified index is valid and has non-zero load
+ *
+ * @return bool
*/
function isNonZeroLoad( $i ) {
return array_key_exists( $i, $this->mServers ) && $this->mLoads[$i] != 0;
@@ -701,6 +743,8 @@ class LoadBalancer {
/**
* Get the number of defined servers (not the number of open connections)
+ *
+ * @return int
*/
function getServerCount() {
return count( $this->mServers );
@@ -732,6 +776,13 @@ class LoadBalancer {
}
/**
+ * Sets the server info structure for the given index. Entry at index $i is created if it doesn't exist
+ */
+ function setServerInfo( $i, $serverInfo ) {
+ $this->mServers[$i] = $serverInfo;
+ }
+
+ /**
* Get the current master position for chronology control purposes
* @return mixed
*/
@@ -774,6 +825,8 @@ class LoadBalancer {
/**
* Deprecated function, typo in function name
+ *
+ * @deprecated in 1.18
*/
function closeConnecton( $conn ) {
$this->closeConnection( $conn );
@@ -783,7 +836,7 @@ class LoadBalancer {
* Close a connection
* Using this function makes sure the LoadBalancer knows the connection is closed.
* If you use $conn->close() directly, the load balancer won't update its state.
- * @param $conn
+ * @param $conn
* @return void
*/
function closeConnection( $conn ) {
@@ -818,7 +871,9 @@ class LoadBalancer {
}
}
- /* Issue COMMIT only on master, only if queries were done on connection */
+ /**
+ * Issue COMMIT only on master, only if queries were done on connection
+ */
function commitMasterChanges() {
// Always 0, but who knows.. :)
$masterIndex = $this->getWriterIndex();
@@ -843,10 +898,11 @@ class LoadBalancer {
}
/* Disables/enables lag checks */
- function allowLagged($mode=null) {
- if ($mode===null)
+ function allowLagged( $mode = null ) {
+ if ( $mode === null) {
return $this->mAllowLagged;
- $this->mAllowLagged=$mode;
+ }
+ $this->mAllowLagged = $mode;
}
function pingAll() {
@@ -880,47 +936,84 @@ class LoadBalancer {
/**
* Get the hostname and lag time of the most-lagged slave.
* This is useful for maintenance scripts that need to throttle their updates.
- * May attempt to open connections to slaves on the default DB.
+ * May attempt to open connections to slaves on the default DB. If there is
+ * no lag, the maximum lag will be reported as -1.
+ *
* @param $wiki string Wiki ID, or false for the default database
+ *
+ * @return array ( host, max lag, index of max lagged host )
*/
function getMaxLag( $wiki = false ) {
$maxLag = -1;
$host = '';
- foreach ( $this->mServers as $i => $conn ) {
- $conn = false;
- if ( $wiki === false ) {
- $conn = $this->getAnyOpenConnection( $i );
- }
- if ( !$conn ) {
- $conn = $this->openConnection( $i, $wiki );
- }
- if ( !$conn ) {
- continue;
- }
- $lag = $conn->getLag();
- if ( $lag > $maxLag ) {
- $maxLag = $lag;
- $host = $this->mServers[$i]['host'];
+ $maxIndex = 0;
+ if ( $this->getServerCount() > 1 ) { // no replication = no lag
+ foreach ( $this->mServers as $i => $conn ) {
+ $conn = false;
+ if ( $wiki === false ) {
+ $conn = $this->getAnyOpenConnection( $i );
+ }
+ if ( !$conn ) {
+ $conn = $this->openConnection( $i, $wiki );
+ }
+ if ( !$conn ) {
+ continue;
+ }
+ $lag = $conn->getLag();
+ if ( $lag > $maxLag ) {
+ $maxLag = $lag;
+ $host = $this->mServers[$i]['host'];
+ $maxIndex = $i;
+ }
}
}
- return array( $host, $maxLag );
+ return array( $host, $maxLag, $maxIndex );
}
/**
* Get lag time for each server
* Results are cached for a short time in memcached, and indefinitely in the process cache
+ *
+ * @param $wiki
+ *
+ * @return array
*/
function getLagTimes( $wiki = false ) {
# Try process cache
if ( isset( $this->mLagTimes ) ) {
return $this->mLagTimes;
}
- # No, send the request to the load monitor
- $this->mLagTimes = $this->getLoadMonitor()->getLagTimes( array_keys( $this->mServers ), $wiki );
+ if ( $this->getServerCount() == 1 ) {
+ # No replication
+ $this->mLagTimes = array( 0 => 0 );
+ } else {
+ # Send the request to the load monitor
+ $this->mLagTimes = $this->getLoadMonitor()->getLagTimes(
+ array_keys( $this->mServers ), $wiki );
+ }
return $this->mLagTimes;
}
/**
+ * Get the lag in seconds for a given connection, or zero if this load
+ * balancer does not have replication enabled.
+ *
+ * This should be used in preference to Database::getLag() in cases where
+ * replication may not be in use, since there is no way to determine if
+ * replication is in use at the connection level without running
+ * potentially restricted queries such as SHOW SLAVE STATUS. Using this
+ * function instead of Database::getLag() avoids a fatal error in this
+ * case on many installations.
+ */
+ function safeGetLag( $conn ) {
+ if ( $this->getServerCount() == 1 ) {
+ return 0;
+ } else {
+ return $conn->getLag();
+ }
+ }
+
+ /**
* Clear the cache for getLagTimes
*/
function clearLagTimeCache() {
diff --git a/includes/db/LoadMonitor.php b/includes/db/LoadMonitor.php
index 9b959728..a6370c9e 100644
--- a/includes/db/LoadMonitor.php
+++ b/includes/db/LoadMonitor.php
@@ -14,12 +14,14 @@
interface LoadMonitor {
/**
* Construct a new LoadMonitor with a given LoadBalancer parent
+ *
+ * @param LoadBalancer $parent
*/
function __construct( $parent );
-
+
/**
* Perform pre-connection load ratio adjustment.
- * @param $loads Array
+ * @param $loads array
* @param $group String: the selected query group
* @param $wiki String
*/
@@ -28,13 +30,13 @@ interface LoadMonitor {
/**
* Perform post-connection backoff.
*
- * If the connection is in overload, this should return a backoff factor
- * which will be used to control polling time. The number of threads
+ * If the connection is in overload, this should return a backoff factor
+ * which will be used to control polling time. The number of threads
* connected is a good measure.
*
* If there is no overload, zero can be returned.
*
- * A threshold thread count is given, the concrete class may compare this
+ * A threshold thread count is given, the concrete class may compare this
* to the running thread count. The threshold may be false, which indicates
* that the sysadmin has not configured this feature.
*
@@ -45,10 +47,30 @@ interface LoadMonitor {
/**
* Return an estimate of replication lag for each server
+ *
+ * @param $serverIndexes
+ * @param $wiki
+ *
+ * @return array
*/
function getLagTimes( $serverIndexes, $wiki );
}
+class LoadMonitor_Null implements LoadMonitor {
+ function __construct( $parent ) {
+ }
+
+ function scaleLoads( &$loads, $group = false, $wiki = false ) {
+ }
+
+ function postConnectionBackoff( $conn, $threshold ) {
+ }
+
+ function getLagTimes( $serverIndexes, $wiki ) {
+ return array_fill_keys( $serverIndexes, 0 );
+ }
+}
+
/**
* Basic MySQL load monitor with no external dependencies
@@ -57,16 +79,38 @@ interface LoadMonitor {
* @ingroup Database
*/
class LoadMonitor_MySQL implements LoadMonitor {
- var $parent; // LoadBalancer
+ /**
+ * @var LoadBalancer
+ */
+ var $parent;
+
+ /**
+ * @param LoadBalancer $parent
+ */
function __construct( $parent ) {
$this->parent = $parent;
}
+ /**
+ * @param $loads
+ * @param $group bool
+ * @param $wiki bool
+ */
function scaleLoads( &$loads, $group = false, $wiki = false ) {
}
+ /**
+ * @param $serverIndexes
+ * @param $wiki
+ * @return array
+ */
function getLagTimes( $serverIndexes, $wiki ) {
+ if ( count( $serverIndexes ) == 1 && reset( $serverIndexes ) == 0 ) {
+ // Single server only, just return zero without caching
+ return array( 0 => 0 );
+ }
+
wfProfileIn( __METHOD__ );
$expiry = 5;
$requestRate = 10;
@@ -74,7 +118,7 @@ class LoadMonitor_MySQL implements LoadMonitor {
global $wgMemc;
if ( empty( $wgMemc ) )
$wgMemc = wfGetMainCache();
-
+
$masterName = $this->parent->getServerName( 0 );
$memcKey = wfMemcKey( 'lag_times', $masterName );
$times = $wgMemc->get( $memcKey );
@@ -117,12 +161,19 @@ class LoadMonitor_MySQL implements LoadMonitor {
return $lagTimes;
}
+ /**
+ * @param $conn DatabaseBase
+ * @param $threshold
+ * @return int
+ */
function postConnectionBackoff( $conn, $threshold ) {
if ( !$threshold ) {
return 0;
}
- $status = $conn->getStatus("Thread%");
+ $status = $conn->getMysqlStatus("Thread%");
if ( $status['Threads_running'] > $threshold ) {
+ $server = $conn->getProperty( 'mServer' );
+ wfLogDBError( "LB backoff from $server - Threads_running = {$status['Threads_running']}\n" );
return $status['Threads_connected'];
} else {
return 0;
diff --git a/includes/diff/WikiDiff.php b/includes/diff/DairikiDiff.php
index 2d904c96..8f19712b 100644
--- a/includes/diff/WikiDiff.php
+++ b/includes/diff/DairikiDiff.php
@@ -41,9 +41,10 @@ class _DiffOp {
class _DiffOp_Copy extends _DiffOp {
var $type = 'copy';
- function __construct ( $orig, $closing = false ) {
- if ( !is_array( $closing ) )
- $closing = $orig;
+ function __construct( $orig, $closing = false ) {
+ if ( !is_array( $closing ) ) {
+ $closing = $orig;
+ }
$this->orig = $orig;
$this->closing = $closing;
}
@@ -61,7 +62,7 @@ class _DiffOp_Copy extends _DiffOp {
class _DiffOp_Delete extends _DiffOp {
var $type = 'delete';
- function __construct ( $lines ) {
+ function __construct( $lines ) {
$this->orig = $lines;
$this->closing = false;
}
@@ -79,7 +80,7 @@ class _DiffOp_Delete extends _DiffOp {
class _DiffOp_Add extends _DiffOp {
var $type = 'add';
- function __construct ( $lines ) {
+ function __construct( $lines ) {
$this->closing = $lines;
$this->orig = false;
}
@@ -97,7 +98,7 @@ class _DiffOp_Add extends _DiffOp {
class _DiffOp_Change extends _DiffOp {
var $type = 'change';
- function __construct ( $orig, $closing ) {
+ function __construct( $orig, $closing ) {
$this->orig = $orig;
$this->closing = $closing;
}
@@ -135,6 +136,15 @@ class _DiffEngine {
const MAX_XREF_LENGTH = 10000;
+ protected $xchanged, $ychanged;
+
+ protected $xv = array(), $yv = array();
+ protected $xind = array(), $yind = array();
+
+ protected $seq = array(), $in_seq = array();
+
+ protected $lcs = 0;
+
function diff ( $from_lines, $to_lines ) {
wfProfileIn( __METHOD__ );
@@ -162,24 +172,28 @@ class _DiffEngine {
$copy[] = $from_lines[$xi++];
++$yi;
}
- if ( $copy )
- $edits[] = new _DiffOp_Copy( $copy );
+ if ( $copy ) {
+ $edits[] = new _DiffOp_Copy( $copy );
+ }
// Find deletes & adds.
$delete = array();
- while ( $xi < $n_from && $this->xchanged[$xi] )
- $delete[] = $from_lines[$xi++];
+ while ( $xi < $n_from && $this->xchanged[$xi] ) {
+ $delete[] = $from_lines[$xi++];
+ }
$add = array();
- while ( $yi < $n_to && $this->ychanged[$yi] )
- $add[] = $to_lines[$yi++];
-
- if ( $delete && $add )
- $edits[] = new _DiffOp_Change( $delete, $add );
- elseif ( $delete )
- $edits[] = new _DiffOp_Delete( $delete );
- elseif ( $add )
- $edits[] = new _DiffOp_Add( $add );
+ while ( $yi < $n_to && $this->ychanged[$yi] ) {
+ $add[] = $to_lines[$yi++];
+ }
+
+ if ( $delete && $add ) {
+ $edits[] = new _DiffOp_Change( $delete, $add );
+ } elseif ( $delete ) {
+ $edits[] = new _DiffOp_Delete( $delete );
+ } elseif ( $add ) {
+ $edits[] = new _DiffOp_Add( $add );
+ }
}
wfProfileOut( __METHOD__ );
return $edits;
@@ -209,15 +223,17 @@ class _DiffEngine {
// Skip leading common lines.
for ( $skip = 0; $skip < $n_from && $skip < $n_to; $skip++ ) {
- if ( $from_lines[$skip] !== $to_lines[$skip] )
- break;
+ if ( $from_lines[$skip] !== $to_lines[$skip] ) {
+ break;
+ }
$this->xchanged[$skip] = $this->ychanged[$skip] = false;
}
// Skip trailing common lines.
$xi = $n_from; $yi = $n_to;
for ( $endskip = 0; --$xi > $skip && --$yi > $skip; $endskip++ ) {
- if ( $from_lines[$xi] !== $to_lines[$yi] )
- break;
+ if ( $from_lines[$xi] !== $to_lines[$yi] ) {
+ break;
+ }
$this->xchanged[$xi] = $this->ychanged[$yi] = false;
}
@@ -228,16 +244,18 @@ class _DiffEngine {
for ( $yi = $skip; $yi < $n_to - $endskip; $yi++ ) {
$line = $to_lines[$yi];
- if ( ( $this->ychanged[$yi] = empty( $xhash[$this->_line_hash( $line )] ) ) )
- continue;
+ if ( ( $this->ychanged[$yi] = empty( $xhash[$this->_line_hash( $line )] ) ) ) {
+ continue;
+ }
$yhash[$this->_line_hash( $line )] = 1;
$this->yv[] = $line;
$this->yind[] = $yi;
}
for ( $xi = $skip; $xi < $n_from - $endskip; $xi++ ) {
$line = $from_lines[$xi];
- if ( ( $this->xchanged[$xi] = empty( $yhash[$this->_line_hash( $line )] ) ) )
- continue;
+ if ( ( $this->xchanged[$xi] = empty( $yhash[$this->_line_hash( $line )] ) ) ) {
+ continue;
+ }
$this->xv[] = $line;
$this->xind[] = $xi;
}
@@ -259,7 +277,8 @@ class _DiffEngine {
}
}
- /* Divide the Largest Common Subsequence (LCS) of the sequences
+ /**
+ * Divide the Largest Common Subsequence (LCS) of the sequences
* [XOFF, XLIM) and [YOFF, YLIM) into NCHUNKS approximately equally
* sized segments.
*
@@ -275,23 +294,25 @@ class _DiffEngine {
* match. The caller must trim matching lines from the beginning and end
* of the portions it is going to specify.
*/
- function _diag ( $xoff, $xlim, $yoff, $ylim, $nchunks ) {
+ function _diag( $xoff, $xlim, $yoff, $ylim, $nchunks ) {
$flip = false;
if ( $xlim - $xoff > $ylim - $yoff ) {
// Things seems faster (I'm not sure I understand why)
// when the shortest sequence in X.
$flip = true;
- list ( $xoff, $xlim, $yoff, $ylim )
- = array( $yoff, $ylim, $xoff, $xlim );
+ list( $xoff, $xlim, $yoff, $ylim ) = array( $yoff, $ylim, $xoff, $xlim );
}
- if ( $flip )
- for ( $i = $ylim - 1; $i >= $yoff; $i-- )
- $ymatches[$this->xv[$i]][] = $i;
- else
- for ( $i = $ylim - 1; $i >= $yoff; $i-- )
- $ymatches[$this->yv[$i]][] = $i;
+ if ( $flip ) {
+ for ( $i = $ylim - 1; $i >= $yoff; $i-- ) {
+ $ymatches[$this->xv[$i]][] = $i;
+ }
+ } else {
+ for ( $i = $ylim - 1; $i >= $yoff; $i-- ) {
+ $ymatches[$this->yv[$i]][] = $i;
+ }
+ }
$this->lcs = 0;
$this->seq[0] = $yoff - 1;
@@ -301,9 +322,11 @@ class _DiffEngine {
$numer = $xlim - $xoff + $nchunks - 1;
$x = $xoff;
for ( $chunk = 0; $chunk < $nchunks; $chunk++ ) {
- if ( $chunk > 0 )
- for ( $i = 0; $i <= $this->lcs; $i++ )
- $ymids[$i][$chunk -1] = $this->seq[$i];
+ if ( $chunk > 0 ) {
+ for ( $i = 0; $i <= $this->lcs; $i++ ) {
+ $ymids[$i][$chunk -1] = $this->seq[$i];
+ }
+ }
$x1 = $xoff + (int)( ( $numer + ( $xlim -$xoff ) * $chunk ) / $nchunks );
for ( ; $x < $x1; $x++ ) {
@@ -329,7 +352,7 @@ class _DiffEngine {
$this->in_seq[$this->seq[$k]] = false;
$this->seq[$k] = $y;
$this->in_seq[$y] = 1;
- } else if ( empty( $this->in_seq[$y] ) ) {
+ } elseif ( empty( $this->in_seq[$y] ) ) {
$k = $this->_lcs_pos( $y );
assert( $k > 0 );
$ymids[$k] = $ymids[$k -1];
@@ -350,7 +373,7 @@ class _DiffEngine {
return array( $this->lcs, $seps );
}
- function _lcs_pos ( $ypos ) {
+ function _lcs_pos( $ypos ) {
$end = $this->lcs;
if ( $end == 0 || $ypos > $this->seq[$end] ) {
$this->seq[++$this->lcs] = $ypos;
@@ -361,10 +384,11 @@ class _DiffEngine {
$beg = 1;
while ( $beg < $end ) {
$mid = (int)( ( $beg + $end ) / 2 );
- if ( $ypos > $this->seq[$mid] )
- $beg = $mid + 1;
- else
- $end = $mid;
+ if ( $ypos > $this->seq[$mid] ) {
+ $beg = $mid + 1;
+ } else {
+ $end = $mid;
+ }
}
assert( $ypos != $this->seq[$end] );
@@ -375,7 +399,8 @@ class _DiffEngine {
return $end;
}
- /* Find LCS of two sequences.
+ /**
+ * Find LCS of two sequences.
*
* The results are recorded in the vectors $this->{x,y}changed[], by
* storing a 1 in the element for each line that is an insertion
@@ -401,9 +426,9 @@ class _DiffEngine {
--$ylim;
}
- if ( $xoff == $xlim || $yoff == $ylim )
- $lcs = 0;
- else {
+ if ( $xoff == $xlim || $yoff == $ylim ) {
+ $lcs = 0;
+ } else {
// This is ad hoc but seems to work well.
// $nchunks = sqrt(min($xlim - $xoff, $ylim - $yoff) / 2.5);
// $nchunks = max(2,min(8,(int)$nchunks));
@@ -415,10 +440,12 @@ class _DiffEngine {
if ( $lcs == 0 ) {
// X and Y sequences have no common subsequence:
// mark all changed.
- while ( $yoff < $ylim )
- $this->ychanged[$this->yind[$yoff++]] = 1;
- while ( $xoff < $xlim )
- $this->xchanged[$this->xind[$xoff++]] = 1;
+ while ( $yoff < $ylim ) {
+ $this->ychanged[$this->yind[$yoff++]] = 1;
+ }
+ while ( $xoff < $xlim ) {
+ $this->xchanged[$this->xind[$xoff++]] = 1;
+ }
} else {
// Use the partitions to split this problem into subproblems.
reset( $seps );
@@ -430,7 +457,8 @@ class _DiffEngine {
}
}
- /* Adjust inserts/deletes of identical lines to join changes
+ /**
+ * Adjust inserts/deletes of identical lines to join changes
* as much as possible.
*
* We do something when a run of changed lines include a
@@ -442,7 +470,7 @@ class _DiffEngine {
*
* This is extracted verbatim from analyze.c (GNU diffutils-2.7).
*/
- function _shift_boundaries ( $lines, &$changed, $other_changed ) {
+ function _shift_boundaries( $lines, &$changed, $other_changed ) {
wfProfileIn( __METHOD__ );
$i = 0;
$j = 0;
@@ -463,8 +491,9 @@ class _DiffEngine {
* Furthermore, $j is always kept so that $j == $other_len or
* $other_changed[$j] == false.
*/
- while ( $j < $other_len && $other_changed[$j] )
- $j++;
+ while ( $j < $other_len && $other_changed[$j] ) {
+ $j++;
+ }
while ( $i < $len && ! $changed[$i] ) {
assert( '$j < $other_len && ! $other_changed[$j]' );
@@ -473,14 +502,16 @@ class _DiffEngine {
$j++;
}
- if ( $i == $len )
- break;
+ if ( $i == $len ) {
+ break;
+ }
$start = $i;
// Find the end of this run of changes.
- while ( ++$i < $len && $changed[$i] )
- continue;
+ while ( ++$i < $len && $changed[$i] ) {
+ continue;
+ }
do {
/*
@@ -497,11 +528,13 @@ class _DiffEngine {
while ( $start > 0 && $lines[$start - 1] == $lines[$i - 1] ) {
$changed[--$start] = 1;
$changed[--$i] = false;
- while ( $start > 0 && $changed[$start - 1] )
- $start--;
+ while ( $start > 0 && $changed[$start - 1] ) {
+ $start--;
+ }
assert( '$j > 0' );
- while ( $other_changed[--$j] )
- continue;
+ while ( $other_changed[--$j] ) {
+ continue;
+ }
assert( '$j >= 0 && !$other_changed[$j]' );
}
@@ -522,15 +555,17 @@ class _DiffEngine {
while ( $i < $len && $lines[$start] == $lines[$i] ) {
$changed[$start++] = false;
$changed[$i++] = 1;
- while ( $i < $len && $changed[$i] )
- $i++;
+ while ( $i < $len && $changed[$i] ) {
+ $i++;
+ }
assert( '$j < $other_len && ! $other_changed[$j]' );
$j++;
if ( $j < $other_len && $other_changed[$j] ) {
$corresponding = $i;
- while ( $j < $other_len && $other_changed[$j] )
- $j++;
+ while ( $j < $other_len && $other_changed[$j] ) {
+ $j++;
+ }
}
}
} while ( $runlength != $i - $start );
@@ -543,8 +578,9 @@ class _DiffEngine {
$changed[--$start] = 1;
$changed[--$i] = 0;
assert( '$j > 0' );
- while ( $other_changed[--$j] )
- continue;
+ while ( $other_changed[--$j] ) {
+ continue;
+ }
assert( '$j >= 0 && !$other_changed[$j]' );
}
}
@@ -558,8 +594,7 @@ class _DiffEngine {
* @private
* @ingroup DifferenceEngine
*/
-class Diff
-{
+class Diff {
var $edits;
/**
@@ -586,7 +621,7 @@ class Diff
* @return object A Diff object representing the inverse of the
* original diff.
*/
- function reverse () {
+ function reverse() {
$rev = $this;
$rev->edits = array();
foreach ( $this->edits as $edit ) {
@@ -600,10 +635,11 @@ class Diff
*
* @return bool True iff two sequences were identical.
*/
- function isEmpty () {
+ function isEmpty() {
foreach ( $this->edits as $edit ) {
- if ( $edit->type != 'copy' )
- return false;
+ if ( $edit->type != 'copy' ) {
+ return false;
+ }
}
return true;
}
@@ -615,11 +651,12 @@ class Diff
*
* @return int The length of the LCS.
*/
- function lcs () {
+ function lcs() {
$lcs = 0;
foreach ( $this->edits as $edit ) {
- if ( $edit->type == 'copy' )
- $lcs += sizeof( $edit->orig );
+ if ( $edit->type == 'copy' ) {
+ $lcs += sizeof( $edit->orig );
+ }
}
return $lcs;
}
@@ -636,8 +673,9 @@ class Diff
$lines = array();
foreach ( $this->edits as $edit ) {
- if ( $edit->orig )
- array_splice( $lines, sizeof( $lines ), 0, $edit->orig );
+ if ( $edit->orig ) {
+ array_splice( $lines, sizeof( $lines ), 0, $edit->orig );
+ }
}
return $lines;
}
@@ -654,8 +692,9 @@ class Diff
$lines = array();
foreach ( $this->edits as $edit ) {
- if ( $edit->closing )
- array_splice( $lines, sizeof( $lines ), 0, $edit->closing );
+ if ( $edit->closing ) {
+ array_splice( $lines, sizeof( $lines ), 0, $edit->closing );
+ }
}
return $lines;
}
@@ -665,24 +704,29 @@ class Diff
*
* This is here only for debugging purposes.
*/
- function _check ( $from_lines, $to_lines ) {
+ function _check( $from_lines, $to_lines ) {
wfProfileIn( __METHOD__ );
- if ( serialize( $from_lines ) != serialize( $this->orig() ) )
- trigger_error( "Reconstructed original doesn't match", E_USER_ERROR );
- if ( serialize( $to_lines ) != serialize( $this->closing() ) )
- trigger_error( "Reconstructed closing doesn't match", E_USER_ERROR );
+ if ( serialize( $from_lines ) != serialize( $this->orig() ) ) {
+ trigger_error( "Reconstructed original doesn't match", E_USER_ERROR );
+ }
+ if ( serialize( $to_lines ) != serialize( $this->closing() ) ) {
+ trigger_error( "Reconstructed closing doesn't match", E_USER_ERROR );
+ }
$rev = $this->reverse();
- if ( serialize( $to_lines ) != serialize( $rev->orig() ) )
- trigger_error( "Reversed original doesn't match", E_USER_ERROR );
- if ( serialize( $from_lines ) != serialize( $rev->closing() ) )
- trigger_error( "Reversed closing doesn't match", E_USER_ERROR );
+ if ( serialize( $to_lines ) != serialize( $rev->orig() ) ) {
+ trigger_error( "Reversed original doesn't match", E_USER_ERROR );
+ }
+ if ( serialize( $from_lines ) != serialize( $rev->closing() ) ) {
+ trigger_error( "Reversed closing doesn't match", E_USER_ERROR );
+ }
$prevtype = 'none';
foreach ( $this->edits as $edit ) {
- if ( $prevtype == $edit->type )
- trigger_error( "Edit sequence is non-optimal", E_USER_ERROR );
+ if ( $prevtype == $edit->type ) {
+ trigger_error( 'Edit sequence is non-optimal', E_USER_ERROR );
+ }
$prevtype = $edit->type;
}
@@ -697,8 +741,7 @@ class Diff
* @private
* @ingroup DifferenceEngine
*/
-class MappedDiff extends Diff
-{
+class MappedDiff extends Diff {
/**
* Constructor.
*
@@ -723,7 +766,7 @@ class MappedDiff extends Diff
* have the same number of elements as $to_lines.
*/
function __construct( $from_lines, $to_lines,
- $mapped_from_lines, $mapped_to_lines ) {
+ $mapped_from_lines, $mapped_to_lines ) {
wfProfileIn( __METHOD__ );
assert( sizeof( $from_lines ) == sizeof( $mapped_from_lines ) );
@@ -779,7 +822,7 @@ class DiffFormatter {
/**
* Format a diff.
*
- * @param $diff object A Diff object.
+ * @param $diff Diff A Diff object.
* @return string The formatted output.
*/
function format( $diff ) {
@@ -799,42 +842,44 @@ class DiffFormatter {
if ( is_array( $block ) ) {
if ( sizeof( $edit->orig ) <= $nlead + $ntrail ) {
$block[] = $edit;
- }
- else {
+ } else {
if ( $ntrail ) {
$context = array_slice( $edit->orig, 0, $ntrail );
$block[] = new _DiffOp_Copy( $context );
}
$this->_block( $x0, $ntrail + $xi - $x0,
- $y0, $ntrail + $yi - $y0,
- $block );
+ $y0, $ntrail + $yi - $y0,
+ $block );
$block = false;
}
}
$context = $edit->orig;
- }
- else {
- if ( ! is_array( $block ) ) {
+ } else {
+ if ( !is_array( $block ) ) {
$context = array_slice( $context, sizeof( $context ) - $nlead );
$x0 = $xi - sizeof( $context );
$y0 = $yi - sizeof( $context );
$block = array();
- if ( $context )
- $block[] = new _DiffOp_Copy( $context );
+ if ( $context ) {
+ $block[] = new _DiffOp_Copy( $context );
+ }
}
$block[] = $edit;
}
- if ( $edit->orig )
- $xi += sizeof( $edit->orig );
- if ( $edit->closing )
- $yi += sizeof( $edit->closing );
+ if ( $edit->orig ) {
+ $xi += sizeof( $edit->orig );
+ }
+ if ( $edit->closing ) {
+ $yi += sizeof( $edit->closing );
+ }
}
- if ( is_array( $block ) )
- $this->_block( $x0, $xi - $x0,
- $y0, $yi - $y0,
- $block );
+ if ( is_array( $block ) ) {
+ $this->_block( $x0, $xi - $x0,
+ $y0, $yi - $y0,
+ $block );
+ }
$end = $this->_end_diff();
wfProfileOut( __METHOD__ );
@@ -845,16 +890,17 @@ class DiffFormatter {
wfProfileIn( __METHOD__ );
$this->_start_block( $this->_block_header( $xbeg, $xlen, $ybeg, $ylen ) );
foreach ( $edits as $edit ) {
- if ( $edit->type == 'copy' )
- $this->_context( $edit->orig );
- elseif ( $edit->type == 'add' )
- $this->_added( $edit->closing );
- elseif ( $edit->type == 'delete' )
- $this->_deleted( $edit->orig );
- elseif ( $edit->type == 'change' )
- $this->_changed( $edit->orig, $edit->closing );
- else
- trigger_error( 'Unknown edit type', E_USER_ERROR );
+ if ( $edit->type == 'copy' ) {
+ $this->_context( $edit->orig );
+ } elseif ( $edit->type == 'add' ) {
+ $this->_added( $edit->closing );
+ } elseif ( $edit->type == 'delete' ) {
+ $this->_deleted( $edit->orig );
+ } elseif ( $edit->type == 'change' ) {
+ $this->_changed( $edit->orig, $edit->closing );
+ } else {
+ trigger_error( 'Unknown edit type', E_USER_ERROR );
+ }
}
$this->_end_block();
wfProfileOut( __METHOD__ );
@@ -871,10 +917,12 @@ class DiffFormatter {
}
function _block_header( $xbeg, $xlen, $ybeg, $ylen ) {
- if ( $xlen > 1 )
- $xbeg .= "," . ( $xbeg + $xlen - 1 );
- if ( $ylen > 1 )
- $ybeg .= "," . ( $ybeg + $ylen - 1 );
+ if ( $xlen > 1 ) {
+ $xbeg .= ',' . ( $xbeg + $xlen - 1 );
+ }
+ if ( $ylen > 1 ) {
+ $ybeg .= ',' . ( $ybeg + $ylen - 1 );
+ }
return $xbeg . ( $xlen ? ( $ylen ? 'c' : 'd' ) : 'a' ) . $ybeg;
}
@@ -887,8 +935,9 @@ class DiffFormatter {
}
function _lines( $lines, $prefix = ' ' ) {
- foreach ( $lines as $line )
- echo "$prefix $line\n";
+ foreach ( $lines as $line ) {
+ echo "$prefix $line\n";
+ }
}
function _context( $lines ) {
@@ -913,7 +962,6 @@ class DiffFormatter {
* A formatter that outputs unified diffs
* @ingroup DifferenceEngine
*/
-
class UnifiedDiffFormatter extends DiffFormatter {
var $leading_context_lines = 2;
var $trailing_context_lines = 2;
@@ -942,48 +990,48 @@ class ArrayDiffFormatter extends DiffFormatter {
$oldline = 1;
$newline = 1;
$retval = array();
- foreach ( $diff->edits as $edit )
- switch( $edit->type ) {
- case 'add':
- foreach ( $edit->closing as $l ) {
- $retval[] = array(
+ foreach ( $diff->edits as $edit ) {
+ switch( $edit->type ) {
+ case 'add':
+ foreach ( $edit->closing as $l ) {
+ $retval[] = array(
'action' => 'add',
'new' => $l,
'newline' => $newline++
- );
- }
- break;
- case 'delete':
- foreach ( $edit->orig as $l ) {
- $retval[] = array(
+ );
+ }
+ break;
+ case 'delete':
+ foreach ( $edit->orig as $l ) {
+ $retval[] = array(
'action' => 'delete',
'old' => $l,
'oldline' => $oldline++,
- );
- }
- break;
- case 'change':
- foreach ( $edit->orig as $i => $l ) {
- $retval[] = array(
+ );
+ }
+ break;
+ case 'change':
+ foreach ( $edit->orig as $i => $l ) {
+ $retval[] = array(
'action' => 'change',
'old' => $l,
- 'new' => @$edit->closing[$i],
+ 'new' => isset( $edit->closing[$i] ) ? $edit->closing[$i] : null,
'oldline' => $oldline++,
'newline' => $newline++,
- );
- }
- break;
- case 'copy':
- $oldline += count( $edit->orig );
- $newline += count( $edit->orig );
+ );
+ }
+ break;
+ case 'copy':
+ $oldline += count( $edit->orig );
+ $newline += count( $edit->orig );
+ }
}
return $retval;
}
}
/**
- * Additions by Axel Boldt follow, partly taken from diff.php, phpwiki-1.3.3
- *
+ * Additions by Axel Boldt follow, partly taken from diff.php, phpwiki-1.3.3
*/
define( 'NBSP', '&#160;' ); // iso-8859-x non-breaking space.
@@ -994,46 +1042,50 @@ define( 'NBSP', '&#160;' ); // iso-8859-x non-breaking space.
* @ingroup DifferenceEngine
*/
class _HWLDF_WordAccumulator {
- function __construct () {
+ function __construct() {
$this->_lines = array();
$this->_line = '';
$this->_group = '';
$this->_tag = '';
}
- function _flushGroup ( $new_tag ) {
+ function _flushGroup( $new_tag ) {
if ( $this->_group !== '' ) {
- if ( $this->_tag == 'ins' )
- $this->_line .= '<ins class="diffchange diffchange-inline">' .
- htmlspecialchars ( $this->_group ) . '</ins>';
- elseif ( $this->_tag == 'del' )
- $this->_line .= '<del class="diffchange diffchange-inline">' .
- htmlspecialchars ( $this->_group ) . '</del>';
- else
- $this->_line .= htmlspecialchars ( $this->_group );
+ if ( $this->_tag == 'ins' ) {
+ $this->_line .= '<ins class="diffchange diffchange-inline">' .
+ htmlspecialchars( $this->_group ) . '</ins>';
+ } elseif ( $this->_tag == 'del' ) {
+ $this->_line .= '<del class="diffchange diffchange-inline">' .
+ htmlspecialchars( $this->_group ) . '</del>';
+ } else {
+ $this->_line .= htmlspecialchars( $this->_group );
+ }
}
$this->_group = '';
$this->_tag = $new_tag;
}
- function _flushLine ( $new_tag ) {
+ function _flushLine( $new_tag ) {
$this->_flushGroup( $new_tag );
- if ( $this->_line != '' )
- array_push ( $this->_lines, $this->_line );
- else
- # make empty lines visible by inserting an NBSP
- array_push ( $this->_lines, NBSP );
+ if ( $this->_line != '' ) {
+ array_push( $this->_lines, $this->_line );
+ } else {
+ # make empty lines visible by inserting an NBSP
+ array_push( $this->_lines, NBSP );
+ }
$this->_line = '';
}
function addWords ( $words, $tag = '' ) {
- if ( $tag != $this->_tag )
- $this->_flushGroup( $tag );
+ if ( $tag != $this->_tag ) {
+ $this->_flushGroup( $tag );
+ }
foreach ( $words as $word ) {
// new-line should only come as first char of word.
- if ( $word == '' )
- continue;
+ if ( $word == '' ) {
+ continue;
+ }
if ( $word[0] == "\n" ) {
$this->_flushLine( $tag );
$word = substr( $word, 1 );
@@ -1060,8 +1112,8 @@ class WordLevelDiff extends MappedDiff {
function __construct ( $orig_lines, $closing_lines ) {
wfProfileIn( __METHOD__ );
- list ( $orig_words, $orig_stripped ) = $this->_split( $orig_lines );
- list ( $closing_words, $closing_stripped ) = $this->_split( $closing_lines );
+ list( $orig_words, $orig_stripped ) = $this->_split( $orig_lines );
+ list( $closing_words, $closing_stripped ) = $this->_split( $closing_lines );
parent::__construct( $orig_words, $closing_words,
$orig_stripped, $closing_stripped );
@@ -1089,7 +1141,7 @@ class WordLevelDiff extends MappedDiff {
} else {
$m = array();
if ( preg_match_all( '/ ( [^\S\n]+ | [0-9_A-Za-z\x80-\xff]+ | . ) (?: (?!< \n) [^\S\n])? /xs',
- $line, $m ) )
+ $line, $m ) )
{
$words = array_merge( $words, $m[0] );
$stripped = array_merge( $stripped, $m[1] );
@@ -1100,30 +1152,32 @@ class WordLevelDiff extends MappedDiff {
return array( $words, $stripped );
}
- function orig () {
+ function orig() {
wfProfileIn( __METHOD__ );
$orig = new _HWLDF_WordAccumulator;
foreach ( $this->edits as $edit ) {
- if ( $edit->type == 'copy' )
- $orig->addWords( $edit->orig );
- elseif ( $edit->orig )
- $orig->addWords( $edit->orig, 'del' );
+ if ( $edit->type == 'copy' ) {
+ $orig->addWords( $edit->orig );
+ } elseif ( $edit->orig ) {
+ $orig->addWords( $edit->orig, 'del' );
+ }
}
$lines = $orig->getLines();
wfProfileOut( __METHOD__ );
return $lines;
}
- function closing () {
+ function closing() {
wfProfileIn( __METHOD__ );
$closing = new _HWLDF_WordAccumulator;
foreach ( $this->edits as $edit ) {
- if ( $edit->type == 'copy' )
- $closing->addWords( $edit->closing );
- elseif ( $edit->closing )
- $closing->addWords( $edit->closing, 'ins' );
+ if ( $edit->type == 'copy' ) {
+ $closing->addWords( $edit->closing );
+ } elseif ( $edit->closing ) {
+ $closing->addWords( $edit->closing, 'ins' );
+ }
}
$lines = $closing->getLines();
wfProfileOut( __METHOD__ );
@@ -1173,7 +1227,7 @@ class TableDiffFormatter extends DiffFormatter {
# HTML-escape parameter before calling this
function deletedLine( $line ) {
- return $this->wrapLine( '&minus;', 'diff-deletedline', $line );
+ return $this->wrapLine( '−', 'diff-deletedline', $line );
}
# HTML-escape parameter before calling this
@@ -1197,14 +1251,14 @@ class TableDiffFormatter extends DiffFormatter {
foreach ( $lines as $line ) {
echo '<tr>' . $this->emptyLine() .
$this->addedLine( '<ins class="diffchange">' .
- htmlspecialchars ( $line ) . '</ins>' ) . "</tr>\n";
+ htmlspecialchars( $line ) . '</ins>' ) . "</tr>\n";
}
}
function _deleted( $lines ) {
foreach ( $lines as $line ) {
echo '<tr>' . $this->deletedLine( '<del class="diffchange">' .
- htmlspecialchars ( $line ) . '</del>' ) .
+ htmlspecialchars( $line ) . '</del>' ) .
$this->emptyLine() . "</tr>\n";
}
}
@@ -1212,8 +1266,8 @@ class TableDiffFormatter extends DiffFormatter {
function _context( $lines ) {
foreach ( $lines as $line ) {
echo '<tr>' .
- $this->contextLine( htmlspecialchars ( $line ) ) .
- $this->contextLine( htmlspecialchars ( $line ) ) . "</tr>\n";
+ $this->contextLine( htmlspecialchars( $line ) ) .
+ $this->contextLine( htmlspecialchars( $line ) ) . "</tr>\n";
}
}
diff --git a/includes/diff/DifferenceEngine.php b/includes/diff/DifferenceEngine.php
index edf35a92..5902461b 100644
--- a/includes/diff/DifferenceEngine.php
+++ b/includes/diff/DifferenceEngine.php
@@ -22,11 +22,19 @@ class DifferenceEngine {
/**#@+
* @private
*/
- var $mOldid, $mNewid, $mTitle;
+ var $mOldid, $mNewid;
var $mOldtitle, $mNewtitle, $mPagetitle;
var $mOldtext, $mNewtext;
- var $mOldPage, $mNewPage;
+
+ /**
+ * @var Title
+ */
+ var $mOldPage, $mNewPage, $mTitle;
var $mRcidMarkPatrolled;
+
+ /**
+ * @var Revision
+ */
var $mOldRev, $mNewRev;
var $mRevisionsLoaded = false; // Have the revisions been loaded
var $mTextLoaded = 0; // How many text blobs have been loaded, 0, 1 or 2?
@@ -49,9 +57,9 @@ class DifferenceEngine {
/**
* Constructor
* @param $titleObj Title object that the diff is associated with
- * @param $old Integer: old ID we want to show and diff with.
- * @param $new String: either 'prev' or 'next'.
- * @param $rcid Integer: ??? FIXME (default 0)
+ * @param $old Integer old ID we want to show and diff with.
+ * @param $new String either 'prev' or 'next'.
+ * @param $rcid Integer ??? FIXME (default 0)
* @param $refreshCache boolean If set, refreshes the diff cache
* @param $unhide boolean If set, allow viewing deleted revs
*/
@@ -62,7 +70,7 @@ class DifferenceEngine {
$this->mTitle = $titleObj;
} else {
global $wgTitle;
- $this->mTitle = $wgTitle;
+ $this->mTitle = $wgTitle; // @TODO: get rid of this
}
wfDebug( "DifferenceEngine old '$old' new '$new' rcid '$rcid'\n" );
@@ -91,26 +99,82 @@ class DifferenceEngine {
$this->unhide = $unhide;
}
+ /**
+ * @param $value bool
+ */
function setReducedLineNumbers( $value = true ) {
$this->mReducedLineNumbers = $value;
}
+ /**
+ * @return Title
+ */
function getTitle() {
return $this->mTitle;
}
+ /**
+ * @return bool
+ */
function wasCacheHit() {
return $this->mCacheHit;
}
+ /**
+ * @return int
+ */
function getOldid() {
return $this->mOldid;
}
+ /**
+ * @return Bool|int
+ */
function getNewid() {
return $this->mNewid;
}
+ /**
+ * Look up a special:Undelete link to the given deleted revision id,
+ * as a workaround for being unable to load deleted diffs in currently.
+ *
+ * @param int $id revision ID
+ * @return mixed URL or false
+ */
+ function deletedLink( $id ) {
+ global $wgUser;
+ if ( $wgUser->isAllowed( 'deletedhistory' ) ) {
+ $dbr = wfGetDB( DB_SLAVE );
+ $row = $dbr->selectRow('archive', '*',
+ array( 'ar_rev_id' => $id ),
+ __METHOD__ );
+ if ( $row ) {
+ $rev = Revision::newFromArchiveRow( $row );
+ $title = Title::makeTitleSafe( $row->ar_namespace, $row->ar_title );
+ return SpecialPage::getTitleFor( 'Undelete' )->getFullURL( array(
+ 'target' => $title->getPrefixedText(),
+ 'timestamp' => $rev->getTimestamp()
+ ));
+ }
+ }
+ return false;
+ }
+
+ /**
+ * Build a wikitext link toward a deleted revision, if viewable.
+ *
+ * @param int $id revision ID
+ * @return string wikitext fragment
+ */
+ function deletedIdMarker( $id ) {
+ $link = $this->deletedLink( $id );
+ if ( $link ) {
+ return "[$link $id]";
+ } else {
+ return $id;
+ }
+ }
+
function showDiffPage( $diffOnly = false ) {
global $wgUser, $wgOut, $wgUseExternalEditor, $wgUseRCPatrol;
wfProfileIn( __METHOD__ );
@@ -122,14 +186,14 @@ class DifferenceEngine {
# we'll use the application/x-external-editor interface to call
# an external diff tool like kompare, kdiff3, etc.
if ( $wgUseExternalEditor && $wgUser->getOption( 'externaldiff' ) ) {
- global $wgInputEncoding, $wgServer, $wgScript, $wgLang;
+ global $wgCanonicalServer, $wgScript, $wgLang;
$wgOut->disable();
- header ( "Content-type: application/x-external-editor; charset=" . $wgInputEncoding );
- $url1 = $this->mTitle->getFullURL( array(
+ header ( "Content-type: application/x-external-editor; charset=UTF-8" );
+ $url1 = $this->mTitle->getCanonical( array(
'action' => 'raw',
'oldid' => $this->mOldid
) );
- $url2 = $this->mTitle->getFullURL( array(
+ $url2 = $this->mTitle->getCanonical( array(
'action' => 'raw',
'oldid' => $this->mNewid
) );
@@ -138,7 +202,7 @@ class DifferenceEngine {
[Process]
Type=Diff text
Engine=MediaWiki
- Script={$wgServer}{$wgScript}
+ Script={$wgCanonicalServer}{$wgScript}
Special namespace={$special}
[File]
@@ -157,10 +221,13 @@ CONTROL;
$wgOut->setArticleFlag( false );
if ( !$this->loadRevisionData() ) {
+ // Sounds like a deleted revision... Let's see what we can do.
$t = $this->mTitle->getPrefixedText();
- $d = wfMsgExt( 'missingarticle-diff', array( 'escape' ), $this->mOldid, $this->mNewid );
+ $d = wfMsgExt( 'missingarticle-diff', array( 'escape' ),
+ $this->deletedIdMarker( $this->mOldid ),
+ $this->deletedIdMarker( $this->mNewid ) );
$wgOut->setPagetitle( wfMsg( 'errorpagetitle' ) );
- $wgOut->addWikiMsg( 'missing-article', "<nowiki>$t</nowiki>", $d );
+ $wgOut->addWikiMsg( 'missing-article', "<nowiki>$t</nowiki>", "<span class='plainlinks'>$d</span>" );
wfProfileOut( __METHOD__ );
return;
}
@@ -181,8 +248,6 @@ CONTROL;
return;
}
- $wgOut->suppressQuickbar();
-
$oldTitle = $this->mOldPage->getPrefixedText();
$newTitle = $this->mNewPage->getPrefixedText();
if ( $oldTitle == $newTitle ) {
@@ -206,6 +271,9 @@ CONTROL;
}
$sk = $wgUser->getSkin();
+ if ( method_exists( $sk, 'suppressQuickbar' ) ) {
+ $sk->suppressQuickbar();
+ }
// Check if page is editable
$editable = $this->mNewRev->getTitle()->userCan( 'edit' );
@@ -372,7 +440,7 @@ CONTROL;
if ( !$allowed ) {
$msg = $suppressed ? 'rev-suppressed-no-diff' : 'rev-deleted-no-diff';
# Give explanation for why revision is not visible
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n",
+ $wgOut->wrapWikiMsg( "<div id='mw-$msg' class='mw-warning plainlinks'>\n$1\n</div>\n",
array( $msg ) );
} else {
# Give explanation and add a link to view the diff...
@@ -382,7 +450,7 @@ CONTROL;
'unhide' => 1
) );
$msg = $suppressed ? 'rev-suppressed-unhide-diff' : 'rev-deleted-unhide-diff';
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", array( $msg, $link ) );
+ $wgOut->wrapWikiMsg( "<div id='mw-$msg' class='mw-warning plainlinks'>\n$1\n</div>\n", array( $msg, $link ) );
}
# Otherwise, output a regular diff...
} else {
@@ -390,7 +458,7 @@ CONTROL;
$notice = '';
if ( $deleted ) {
$msg = $suppressed ? 'rev-suppressed-diff-view' : 'rev-deleted-diff-view';
- $notice = "<div class='mw-warning plainlinks'>\n" . wfMsgExt( $msg, 'parseinline' ) . "</div>\n";
+ $notice = "<div id='mw-$msg' class='mw-warning plainlinks'>\n" . wfMsgExt( $msg, 'parseinline' ) . "</div>\n";
}
$this->showDiff( $oldHeader, $newHeader, $notice );
if ( !$diffOnly ) {
@@ -400,6 +468,10 @@ CONTROL;
wfProfileOut( __METHOD__ );
}
+ /**
+ * @param $rev Revision
+ * @return String
+ */
protected function revisionDeleteLink( $rev ) {
global $wgUser;
$link = '';
@@ -431,42 +503,37 @@ CONTROL;
function renderNewRevision() {
global $wgOut, $wgUser;
wfProfileIn( __METHOD__ );
+ # Add "current version as of X" title
+ $wgOut->addHTML( "<hr class='diff-hr' />
+ <h2 class='diff-currentversion-title'>{$this->mPagetitle}</h2>\n" );
+ # Page content may be handled by a hooked call instead...
+ if ( wfRunHooks( 'ArticleContentOnDiff', array( $this, $wgOut ) ) ) {
+ # Use the current version parser cache if applicable
+ $pCache = true;
+ if ( !$this->mNewRev->isCurrent() ) {
+ $oldEditSectionSetting = $wgOut->parserOptions()->setEditSection( false );
+ $pCache = false;
+ }
- $wgOut->addHTML( "<hr /><h2>{$this->mPagetitle}</h2>\n" );
- # Add deleted rev tag if needed
- if ( !$this->mNewRev->userCan( Revision::DELETED_TEXT ) ) {
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-permission' );
- } else if ( $this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) {
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-view' );
- }
-
- $pCache = true;
- if ( !$this->mNewRev->isCurrent() ) {
- $oldEditSectionSetting = $wgOut->parserOptions()->setEditSection( false );
- $pCache = false;
- }
-
- $this->loadNewText();
- if ( is_object( $this->mNewRev ) ) {
+ $this->loadNewText();
$wgOut->setRevisionId( $this->mNewRev->getId() );
- }
- if ( $this->mTitle->isCssJsSubpage() || $this->mTitle->isCssOrJsPage() ) {
- // Stolen from Article::view --AG 2007-10-11
- // Give hooks a chance to customise the output
- if ( wfRunHooks( 'ShowRawCssJs', array( $this->mNewtext, $this->mTitle, $wgOut ) ) ) {
- // Wrap the whole lot in a <pre> and don't parse
- $m = array();
- preg_match( '!\.(css|js)$!u', $this->mTitle->getText(), $m );
- $wgOut->addHTML( "<pre class=\"mw-code mw-{$m[1]}\" dir=\"ltr\">\n" );
- $wgOut->addHTML( htmlspecialchars( $this->mNewtext ) );
- $wgOut->addHTML( "\n</pre>\n" );
- }
- } elseif ( wfRunHooks( 'ArticleContentOnDiff', array( $this, $wgOut ) ) ) {
- if ( $pCache ) {
+ if ( $this->mTitle->isCssJsSubpage() || $this->mTitle->isCssOrJsPage() ) {
+ // Stolen from Article::view --AG 2007-10-11
+ // Give hooks a chance to customise the output
+ // @TODO: standardize this crap into one function
+ if ( wfRunHooks( 'ShowRawCssJs', array( $this->mNewtext, $this->mTitle, $wgOut ) ) ) {
+ // Wrap the whole lot in a <pre> and don't parse
+ $m = array();
+ preg_match( '!\.(css|js)$!u', $this->mTitle->getText(), $m );
+ $wgOut->addHTML( "<pre class=\"mw-code mw-{$m[1]}\" dir=\"ltr\">\n" );
+ $wgOut->addHTML( htmlspecialchars( $this->mNewtext ) );
+ $wgOut->addHTML( "\n</pre>\n" );
+ }
+ } elseif ( $pCache ) {
$article = new Article( $this->mTitle, 0 );
$pOutput = ParserCache::singleton()->get( $article, $wgOut->parserOptions() );
- if ( $pOutput ) {
+ if( $pOutput ) {
$wgOut->addParserOutput( $pOutput );
} else {
$article->doViewParse();
@@ -474,12 +541,11 @@ CONTROL;
} else {
$wgOut->addWikiTextTidy( $this->mNewtext );
}
- }
- if ( is_object( $this->mNewRev ) && !$this->mNewRev->isCurrent() ) {
- $wgOut->parserOptions()->setEditSection( $oldEditSectionSetting );
+ if ( !$this->mNewRev->isCurrent() ) {
+ $wgOut->parserOptions()->setEditSection( $oldEditSectionSetting );
+ }
}
-
# Add redundant patrol link on bottom...
if ( $this->mRcidMarkPatrolled && $this->mTitle->quickUserCan( 'patrol' ) ) {
$sk = $wgUser->getSkin();
@@ -491,9 +557,9 @@ CONTROL;
wfMsgHtml( 'markaspatrolleddiff' ),
array(),
array(
- 'action' => 'markpatrolled',
- 'rcid' => $this->mRcidMarkPatrolled,
- 'token' => $token,
+ 'action' => 'markpatrolled',
+ 'rcid' => $this->mRcidMarkPatrolled,
+ 'token' => $token,
)
) . ']</div>'
);
@@ -514,9 +580,11 @@ CONTROL;
#
if ( ! $this->loadNewText() ) {
$t = $this->mTitle->getPrefixedText();
- $d = wfMsgExt( 'missingarticle-diff', array( 'escape' ), $this->mOldid, $this->mNewid );
+ $d = wfMsgExt( 'missingarticle-diff', array( 'escape' ),
+ $this->deletedIdMarker( $this->mOldid ),
+ $this->deletedIdMarker( $this->mNewid ) );
$wgOut->setPagetitle( wfMsg( 'errorpagetitle' ) );
- $wgOut->addWikiMsg( 'missing-article', "<nowiki>$t</nowiki>", $d );
+ $wgOut->addWikiMsg( 'missing-article', "<nowiki>$t</nowiki>", "<span class='plainlinks'>$d</span>" );
wfProfileOut( __METHOD__ );
return;
}
@@ -571,6 +639,8 @@ CONTROL;
/**
* Get the diff text, send it to $wgOut
* Returns false if the diff could not be generated, otherwise returns true
+ *
+ * @return bool
*/
function showDiff( $otitle, $ntitle, $notice = '' ) {
global $wgOut;
@@ -590,8 +660,7 @@ CONTROL;
*/
function showDiffStyle() {
global $wgOut;
- $wgOut->addModuleStyles( 'mediawiki.legacy.diff' );
- $wgOut->addModuleScripts( 'mediawiki.legacy.diff' );
+ $wgOut->addModuleStyles( 'mediawiki.action.history.diff' );
}
/**
@@ -691,16 +760,12 @@ CONTROL;
global $wgExternalDiffEngine;
if ( $wgExternalDiffEngine == 'wikidiff' && !function_exists( 'wikidiff_do_diff' ) ) {
wfProfileIn( __METHOD__ . '-php_wikidiff.so' );
- wfSuppressWarnings();
- dl( 'php_wikidiff.so' );
- wfRestoreWarnings();
+ wfDl( 'php_wikidiff' );
wfProfileOut( __METHOD__ . '-php_wikidiff.so' );
}
- else if ( $wgExternalDiffEngine == 'wikidiff2' && !function_exists( 'wikidiff2_do_diff' ) ) {
+ elseif ( $wgExternalDiffEngine == 'wikidiff2' && !function_exists( 'wikidiff2_do_diff' ) ) {
wfProfileIn( __METHOD__ . '-php_wikidiff2.so' );
- wfSuppressWarnings();
wfDl( 'wikidiff2' );
- wfRestoreWarnings();
wfProfileOut( __METHOD__ . '-php_wikidiff2.so' );
}
}
@@ -714,6 +779,8 @@ CONTROL;
function generateDiffBody( $otext, $ntext ) {
global $wgExternalDiffEngine, $wgContLang;
+ wfProfileIn( __METHOD__ );
+
$otext = str_replace( "\r\n", "\n", $otext );
$ntext = str_replace( "\r\n", "\n", $ntext );
@@ -724,6 +791,7 @@ CONTROL;
# input text to be HTML-escaped already
$otext = htmlspecialchars ( $wgContLang->segmentForDiff( $otext ) );
$ntext = htmlspecialchars ( $wgContLang->segmentForDiff( $ntext ) );
+ wfProfileOut( __METHOD__ );
return $wgContLang->unsegmentForDiff( wikidiff_do_diff( $otext, $ntext, 2 ) ) .
$this->debug( 'wikidiff1' );
}
@@ -735,6 +803,7 @@ CONTROL;
$text = wikidiff2_do_diff( $otext, $ntext, 2 );
$text .= $this->debug( 'wikidiff2' );
wfProfileOut( 'wikidiff2_do_diff' );
+ wfProfileOut( __METHOD__ );
return $text;
}
if ( $wgExternalDiffEngine != 'wikidiff3' && $wgExternalDiffEngine !== false ) {
@@ -776,7 +845,6 @@ CONTROL;
$difftext = $wgContLang->unsegmentForDiff( $formatter->format( $diffs ) ) .
wfProfileOut( __METHOD__ );
return $difftext;
- $this->debug();
}
/**
@@ -828,18 +896,18 @@ CONTROL;
return '';
}
- $oldid = $this->mOldRev->getId();
- $newid = $this->mNewRev->getId();
- if ( $oldid > $newid ) {
- $tmp = $oldid; $oldid = $newid; $newid = $tmp;
+ if ( $this->mOldRev->getTimestamp() > $this->mNewRev->getTimestamp() ) {
+ $oldRev = $this->mNewRev; // flip
+ $newRev = $this->mOldRev; // flip
+ } else { // normal case
+ $oldRev = $this->mOldRev;
+ $newRev = $this->mNewRev;
}
- $nEdits = $this->mTitle->countRevisionsBetween( $oldid, $newid );
+ $nEdits = $this->mTitle->countRevisionsBetween( $oldRev, $newRev );
if ( $nEdits > 0 ) {
- $limit = 100;
- // We use ($limit + 1) so we can detect if there are > 100 authors
- // in a given revision range. In that case, diff-multi-manyusers is used.
- $numUsers = $this->mTitle->countAuthorsBetween( $oldid, $newid, $limit + 1 );
+ $limit = 100; // use diff-multi-manyusers if too many users
+ $numUsers = $this->mTitle->countAuthorsBetween( $oldRev, $newRev, $limit );
return self::intermediateEditsMsg( $nEdits, $numUsers, $limit );
}
return ''; // nothing
@@ -866,9 +934,15 @@ CONTROL;
/**
* Add the header to a diff body
+ *
+ * @return string
*/
- static function addHeader( $diff, $otitle, $ntitle, $multi = '', $notice = '' ) {
- $header = "<table class='diff'>";
+ function addHeader( $diff, $otitle, $ntitle, $multi = '', $notice = '' ) {
+ // shared.css sets diff in interface language/dir,
+ // but the actual content should be in the page language/dir
+ $pageLang = $this->mTitle->getPageLanguage();
+ $tableClass = 'diff diff-contentalign-' . htmlspecialchars( $pageLang->alignStart() );
+ $header = "<table class='$tableClass'>";
if ( $diff ) { // Safari/Chrome show broken output if cols not used
$header .= "
<col class='diff-marker' />
@@ -916,6 +990,8 @@ CONTROL;
* If oldid is false, leave the corresponding revision object set
* to false. This is impossible via ordinary user input, and is provided for
* API convenience.
+ *
+ * @return bool
*/
function loadRevisionData() {
global $wgLang, $wgUser;
@@ -930,8 +1006,9 @@ CONTROL;
$this->mNewRev = $this->mNewid
? Revision::newFromId( $this->mNewid )
: Revision::newFromTitle( $this->mTitle );
- if ( !$this->mNewRev instanceof Revision )
+ if ( !$this->mNewRev instanceof Revision ) {
return false;
+ }
// Update the new revision ID in case it was 0 (makes life easier doing UI stuff)
$this->mNewid = $this->mNewRev->getId();
@@ -980,7 +1057,7 @@ CONTROL;
}
if ( !$this->mNewRev->userCan( Revision::DELETED_TEXT ) ) {
$this->mNewtitle = "<span class='history-deleted'>{$this->mPagetitle}</span>";
- } else if ( $this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) {
+ } elseif ( $this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) {
$this->mNewtitle = "<span class='history-deleted'>{$this->mNewtitle}</span>";
}
@@ -1022,20 +1099,20 @@ CONTROL;
$this->mOldtitle = "<a href='$oldLink'>{$this->mOldPagetitle}</a>"
. " (<a href='$oldEdit'>" . wfMsgHtml( $editable ? 'editold' : 'viewsourceold' ) . "</a>)";
// Add an "undo" link
- $newUndo = $this->mNewPage->escapeLocalUrl( array(
- 'action' => 'edit',
- 'undoafter' => $this->mOldid,
- 'undo' => $this->mNewid
- ) );
- $htmlLink = htmlspecialchars( wfMsg( 'editundo' ) );
- $htmlTitle = Xml::expandAttributes( array( 'title' => $wgUser->getSkin()->titleAttrib( 'undo' ) ) );
if ( $editable && !$this->mOldRev->isDeleted( Revision::DELETED_TEXT ) && !$this->mNewRev->isDeleted( Revision::DELETED_TEXT ) ) {
- $this->mNewtitle .= " (<a href='$newUndo' $htmlTitle>" . $htmlLink . "</a>)";
+ $undoLink = Html::element( 'a', array(
+ 'href' => $this->mNewPage->getLocalUrl( array(
+ 'action' => 'edit',
+ 'undoafter' => $this->mOldid,
+ 'undo' => $this->mNewid ) ),
+ 'title' => $wgUser->getSkin()->titleAttrib( 'undo' )
+ ), wfMsg( 'editundo' ) );
+ $this->mNewtitle .= ' (' . $undoLink . ')';
}
if ( !$this->mOldRev->userCan( Revision::DELETED_TEXT ) ) {
$this->mOldtitle = '<span class="history-deleted">' . $this->mOldPagetitle . '</span>';
- } else if ( $this->mOldRev->isDeleted( Revision::DELETED_TEXT ) ) {
+ } elseif ( $this->mOldRev->isDeleted( Revision::DELETED_TEXT ) ) {
$this->mOldtitle = '<span class="history-deleted">' . $this->mOldtitle . '</span>';
}
}
@@ -1045,6 +1122,8 @@ CONTROL;
/**
* Load the text of the revisions, as well as revision data.
+ *
+ * @return bool
*/
function loadText() {
if ( $this->mTextLoaded == 2 ) {
@@ -1074,6 +1153,8 @@ CONTROL;
/**
* Load the text of the new revision, not the old one
+ *
+ * @return bool
*/
function loadNewText() {
if ( $this->mTextLoaded >= 1 ) {
diff --git a/includes/diff/WikiDiff3.php b/includes/diff/WikiDiff3.php
index 8def296d..27d3d5b8 100644
--- a/includes/diff/WikiDiff3.php
+++ b/includes/diff/WikiDiff3.php
@@ -239,7 +239,7 @@ class WikiDiff3 {
$starty - 1, $V, $snake )
+ $this->lcs_rec( $startx + $len, $topl1, $starty + $len,
$topl2, $V, $snake );
- } else if ( $d == 1 ) {
+ } elseif ( $d == 1 ) {
/*
* In this case the sequences differ by exactly 1 line. We have
* already saved all the lines after the difference in the for loop
@@ -332,7 +332,7 @@ class WikiDiff3 {
// check to see if we can cut down the diagonal range
if ( $x >= $N && $end_forward > $k - 1 ) {
$end_forward = $k - 1;
- } else if ( $absy - $bottoml2 >= $M ) {
+ } elseif ( $absy - $bottoml2 >= $M ) {
$start_forward = $k + 1;
$value_to_add_forward = 0;
}
@@ -366,7 +366,7 @@ class WikiDiff3 {
if ( $x <= 0 ) {
$start_backward = $k + 1;
$value_to_add_backward = 0;
- } else if ( $y <= 0 && $end_backward > $k - 1 ) {
+ } elseif ( $y <= 0 && $end_backward > $k - 1 ) {
$end_backward = $k - 1;
}
}
@@ -400,7 +400,7 @@ class WikiDiff3 {
// check to see if we can cut down the diagonal range
if ( $x >= $N && $end_forward > $k - 1 ) {
$end_forward = $k - 1;
- } else if ( $absy -$bottoml2 >= $M ) {
+ } elseif ( $absy -$bottoml2 >= $M ) {
$start_forward = $k + 1;
$value_to_add_forward = 0;
}
@@ -441,7 +441,7 @@ class WikiDiff3 {
if ( $x <= 0 ) {
$start_backward = $k + 1;
$value_to_add_backward = 0;
- } else if ( $y <= 0 && $end_backward > $k - 1 ) {
+ } elseif ( $y <= 0 && $end_backward > $k - 1 ) {
$end_backward = $k - 1;
}
}
@@ -510,7 +510,7 @@ class WikiDiff3 {
$max_progress[0][0] = $x;
$max_progress[0][1] = $y;
$max_progress[0][2] = $progress;
- } else if ( $progress == $max_progress[0][2] ) {
+ } elseif ( $progress == $max_progress[0][2] ) {
++$num_progress;
$max_progress[$num_progress][0] = $x;
$max_progress[$num_progress][1] = $y;
@@ -537,7 +537,7 @@ class WikiDiff3 {
$max_progress[0][0] = $x;
$max_progress[0][1] = $y;
$max_progress[0][2] = $progress;
- } else if ( $progress == $max_progress[0][2] && !$max_progress_forward ) {
+ } elseif ( $progress == $max_progress[0][2] && !$max_progress_forward ) {
++$num_progress;
$max_progress[$num_progress][0] = $x;
$max_progress[$num_progress][1] = $y;
diff --git a/includes/extauth/MediaWiki.php b/includes/extauth/MediaWiki.php
index 9df4ea1f..0a5efae6 100644
--- a/includes/extauth/MediaWiki.php
+++ b/includes/extauth/MediaWiki.php
@@ -50,8 +50,17 @@
* @ingroup ExternalUser
*/
class ExternalUser_MediaWiki extends ExternalUser {
- private $mRow, $mDb;
+ private $mRow;
+ /**
+ * @var DatabaseBase
+ */
+ private $mDb;
+
+ /**
+ * @param $name string
+ * @return bool
+ */
protected function initFromName( $name ) {
# We might not need the 'usable' bit, but let's be safe. Theoretically
# this might return wrong results for old versions, but it's probably
@@ -65,20 +74,28 @@ class ExternalUser_MediaWiki extends ExternalUser {
return $this->initFromCond( array( 'user_name' => $name ) );
}
+ /**
+ * @param $id int
+ * @return bool
+ */
protected function initFromId( $id ) {
return $this->initFromCond( array( 'user_id' => $id ) );
}
+ /**
+ * @param $cond array
+ * @return bool
+ */
private function initFromCond( $cond ) {
global $wgExternalAuthConf;
- $this->mDb = DatabaseBase::newFromType( $wgExternalAuthConf['DBtype'],
+ $this->mDb = DatabaseBase::factory( $wgExternalAuthConf['DBtype'],
array(
- 'server' => $wgExternalAuthConf['DBserver'],
+ 'host' => $wgExternalAuthConf['DBserver'],
'user' => $wgExternalAuthConf['DBuser'],
'password' => $wgExternalAuthConf['DBpassword'],
'dbname' => $wgExternalAuthConf['DBname'],
- 'tableprefix' => $wgExternalAuthConf['DBprefix'],
+ 'tablePrefix' => $wgExternalAuthConf['DBprefix'],
)
);
@@ -105,6 +122,9 @@ class ExternalUser_MediaWiki extends ExternalUser {
return $this->mRow->user_id;
}
+ /**
+ * @return string
+ */
public function getName() {
return $this->mRow->user_name;
}
@@ -117,7 +137,7 @@ class ExternalUser_MediaWiki extends ExternalUser {
}
public function getPref( $pref ) {
- # FIXME: Return other prefs too. Lots of global-riddled code that does
+ # @todo FIXME: Return other prefs too. Lots of global-riddled code that does
# this normally.
if ( $pref === 'emailaddress'
&& $this->row->user_email_authenticated !== null ) {
@@ -126,8 +146,11 @@ class ExternalUser_MediaWiki extends ExternalUser {
return null;
}
+ /**
+ * @return array
+ */
public function getGroups() {
- # FIXME: Untested.
+ # @todo FIXME: Untested.
$groups = array();
$res = $this->mDb->select(
'user_groups',
diff --git a/includes/extauth/vB.php b/includes/extauth/vB.php
index 860048f3..f516c423 100644
--- a/includes/extauth/vB.php
+++ b/includes/extauth/vB.php
@@ -34,7 +34,7 @@
* 'username' => 'forum',
* 'password' => 'udE,jSqDJ<""p=fI.K9',
* 'dbname' => 'forum',
- * 'tableprefix' => '',
+ * 'tablePrefix' => '',
* 'cookieprefix' => 'bb'
* );
*
@@ -108,8 +108,8 @@ class ExternalUser_vB extends ExternalUser {
$wgExternalAuthConf['username'],
$wgExternalAuthConf['password'],
$wgExternalAuthConf['dbname'],
- false, 0,
- $wgExternalAuthConf['tableprefix']
+ 0,
+ $wgExternalAuthConf['tablePrefix']
);
}
diff --git a/includes/filerepo/ArchivedFile.php b/includes/filerepo/ArchivedFile.php
index ecc09978..0d9e349b 100644
--- a/includes/filerepo/ArchivedFile.php
+++ b/includes/filerepo/ArchivedFile.php
@@ -16,7 +16,6 @@ class ArchivedFile {
* @private
*/
var $id, # filearchive row ID
- $title, # image title
$name, # image name
$group, # FileStore storage group
$key, # FileStore sha1 key
@@ -32,10 +31,27 @@ class ArchivedFile {
$user_text, # user name of uploader
$timestamp, # time of upload
$dataLoaded, # Whether or not all this has been loaded from the database (loadFromXxx)
- $deleted; # Bitfield akin to rev_deleted
+ $deleted, # Bitfield akin to rev_deleted
+ $pageCount,
+ $archive_name;
+
+ /**
+ * @var MediaHandler
+ */
+ var $handler;
+ /**
+ * @var Title
+ */
+ var $title; # image title
/**#@-*/
+ /**
+ * @throws MWException
+ * @param Title $title
+ * @param int $id
+ * @param string $key
+ */
function __construct( $title, $id=0, $key='' ) {
$this->id = -1;
$this->title = false;
@@ -57,19 +73,22 @@ class ArchivedFile {
$this->dataLoaded = false;
$this->exists = false;
- if( is_object($title) ) {
+ if( is_object( $title ) ) {
$this->title = $title;
$this->name = $title->getDBkey();
}
- if ($id)
+ if ($id) {
$this->id = $id;
+ }
- if ($key)
+ if ($key) {
$this->key = $key;
+ }
- if (!$id && !$key && !is_object($title))
+ if ( !$id && !$key && !is_object( $title ) ) {
throw new MWException( "No specifications provided to ArchivedFile constructor." );
+ }
}
/**
@@ -82,17 +101,20 @@ class ArchivedFile {
}
$conds = array();
- if( $this->id > 0 )
+ if( $this->id > 0 ) {
$conds['fa_id'] = $this->id;
+ }
if( $this->key ) {
$conds['fa_storage_group'] = $this->group;
$conds['fa_storage_key'] = $this->key;
}
- if( $this->title )
+ if( $this->title ) {
$conds['fa_name'] = $this->title->getDBkey();
+ }
- if( !count($conds))
+ if( !count($conds)) {
throw new MWException( "No specific information for retrieving archived file" );
+ }
if( !$this->title || $this->title->getNamespace() == NS_FILE ) {
$dbr = wfGetDB( DB_SLAVE );
@@ -119,8 +141,7 @@ class ArchivedFile {
$conds,
__METHOD__,
array( 'ORDER BY' => 'fa_timestamp DESC' ) );
-
- if ( $dbr->numRows( $res ) == 0 ) {
+ if ( $res == false || $dbr->numRows( $res ) == 0 ) {
// this revision does not exist?
return;
}
@@ -277,6 +298,32 @@ class ArchivedFile {
}
/**
+ * Get a MediaHandler instance for this file
+ * @return MediaHandler
+ */
+ function getHandler() {
+ if ( !isset( $this->handler ) ) {
+ $this->handler = MediaHandler::getHandler( $this->getMimeType() );
+ }
+ return $this->handler;
+ }
+
+ /**
+ * Returns the number of pages of a multipage document, or false for
+ * documents which aren't multipage documents
+ */
+ function pageCount() {
+ if ( !isset( $this->pageCount ) ) {
+ if ( $this->getHandler() && $this->handler->isMultiPage( $this ) ) {
+ $this->pageCount = $this->handler->pageCount( $this );
+ } else {
+ $this->pageCount = false;
+ }
+ }
+ return $this->pageCount;
+ }
+
+ /**
* Return the type of the media in the file.
* Use the value returned by this function with the MEDIATYPE_xxx constants.
*/
diff --git a/includes/filerepo/FSRepo.php b/includes/filerepo/FSRepo.php
index e2251b2b..2610ac6e 100644
--- a/includes/filerepo/FSRepo.php
+++ b/includes/filerepo/FSRepo.php
@@ -65,6 +65,10 @@ class FSRepo extends FileRepo {
/**
* Get the local directory corresponding to one of the three basic zones
+ *
+ * @param $zone string
+ *
+ * @return string
*/
function getZonePath( $zone ) {
switch ( $zone ) {
@@ -83,6 +87,10 @@ class FSRepo extends FileRepo {
/**
* @see FileRepo::getZoneUrl()
+ *
+ * @param $zone string
+ *
+ * @return url
*/
function getZoneUrl( $zone ) {
switch ( $zone ) {
@@ -103,6 +111,10 @@ class FSRepo extends FileRepo {
* Get a URL referring to this repository, with the private mwrepo protocol.
* The suffix, if supplied, is considered to be unencoded, and will be
* URL-encoded before being returned.
+ *
+ * @param $suffix string
+ *
+ * @return string
*/
function getVirtualUrl( $suffix = false ) {
$path = 'mwrepo://' . $this->name;
@@ -114,10 +126,14 @@ class FSRepo extends FileRepo {
/**
* Get the local path corresponding to a virtual URL
+ *
+ * @param $url string
+ *
+ * @return string
*/
function resolveVirtualUrl( $url ) {
if ( substr( $url, 0, 9 ) != 'mwrepo://' ) {
- throw new MWException( __METHOD__.': unknown protoocl' );
+ throw new MWException( __METHOD__.': unknown protocol' );
}
$bits = explode( '/', substr( $url, 9 ), 3 );
@@ -146,16 +162,23 @@ class FSRepo extends FileRepo {
* same contents as the source
*/
function storeBatch( $triplets, $flags = 0 ) {
+ wfDebug( __METHOD__ . ': Storing ' . count( $triplets ) .
+ " triplets; flags: {$flags}\n" );
+
+ // Try creating directories
if ( !wfMkdirParents( $this->directory ) ) {
return $this->newFatal( 'upload_directory_missing', $this->directory );
}
if ( !is_writable( $this->directory ) ) {
return $this->newFatal( 'upload_directory_read_only', $this->directory );
}
+
+ // Validate each triplet
$status = $this->newGood();
foreach ( $triplets as $i => $triplet ) {
list( $srcPath, $dstZone, $dstRel ) = $triplet;
+ // Resolve destination path
$root = $this->getZonePath( $dstZone );
if ( !$root ) {
throw new MWException( "Invalid zone: $dstZone" );
@@ -166,6 +189,7 @@ class FSRepo extends FileRepo {
$dstPath = "$root/$dstRel";
$dstDir = dirname( $dstPath );
+ // Create destination directories for this triplet
if ( !is_dir( $dstDir ) ) {
if ( !wfMkdirParents( $dstDir ) ) {
return $this->newFatal( 'directorycreateerror', $dstDir );
@@ -175,6 +199,7 @@ class FSRepo extends FileRepo {
}
}
+ // Resolve source
if ( self::isVirtualUrl( $srcPath ) ) {
$srcPath = $triplets[$i][0] = $this->resolveVirtualUrl( $srcPath );
}
@@ -183,6 +208,8 @@ class FSRepo extends FileRepo {
$status->fatal( 'filenotfound', $srcPath );
continue;
}
+
+ // Check overwriting
if ( !( $flags & self::OVERWRITE ) && file_exists( $dstPath ) ) {
if ( $flags & self::OVERWRITE_SAME ) {
$hashSource = sha1_file( $srcPath );
@@ -196,6 +223,7 @@ class FSRepo extends FileRepo {
}
}
+ // Windows does not support moving over existing files, so explicitly delete them
$deleteDest = wfIsWindows() && ( $flags & self::OVERWRITE );
// Abort now on failure
@@ -203,7 +231,8 @@ class FSRepo extends FileRepo {
return $status;
}
- foreach ( $triplets as $triplet ) {
+ // Execute the store operation for each triplet
+ foreach ( $triplets as $i => $triplet ) {
list( $srcPath, $dstZone, $dstRel ) = $triplet;
$root = $this->getZonePath( $dstZone );
$dstPath = "$root/$dstRel";
@@ -222,6 +251,20 @@ class FSRepo extends FileRepo {
$status->error( 'filecopyerror', $srcPath, $dstPath );
$good = false;
}
+ if ( !( $flags & self::SKIP_VALIDATION ) ) {
+ wfSuppressWarnings();
+ $hashSource = sha1_file( $srcPath );
+ $hashDest = sha1_file( $dstPath );
+ wfRestoreWarnings();
+
+ if ( $hashDest === false || $hashSource !== $hashDest ) {
+ wfDebug( __METHOD__ . ': File copy validation failed: ' .
+ "$srcPath ($hashSource) to $dstPath ($hashDest)\n" );
+
+ $status->error( 'filecopyerror', $srcPath, $dstPath );
+ $good = false;
+ }
+ }
}
if ( $good ) {
$this->chmod( $dstPath );
@@ -229,47 +272,81 @@ class FSRepo extends FileRepo {
} else {
$status->failCount++;
}
+ $status->success[$i] = $good;
}
return $status;
}
+
+ /**
+ * Deletes a batch of files. Each file can be a (zone, rel) pairs, a
+ * virtual url or a real path. It will try to delete each file, but
+ * ignores any errors that may occur
+ *
+ * @param $pairs array List of files to delete
+ */
+ function cleanupBatch( $files ) {
+ foreach ( $files as $file ) {
+ if ( is_array( $file ) ) {
+ // This is a pair, extract it
+ list( $zone, $rel ) = $file;
+ $root = $this->getZonePath( $zone );
+ $path = "$root/$rel";
+ } else {
+ if ( self::isVirtualUrl( $file ) ) {
+ // This is a virtual url, resolve it
+ $path = $this->resolveVirtualUrl( $file );
+ } else {
+ // This is a full file name
+ $path = $file;
+ }
+ }
+
+ wfSuppressWarnings();
+ unlink( $path );
+ wfRestoreWarnings();
+ }
+ }
function append( $srcPath, $toAppendPath, $flags = 0 ) {
$status = $this->newGood();
// Resolve the virtual URL
- if ( self::isVirtualUrl( $srcPath ) ) {
- $srcPath = $this->resolveVirtualUrl( $srcPath );
+ if ( self::isVirtualUrl( $toAppendPath ) ) {
+ $toAppendPath = $this->resolveVirtualUrl( $toAppendPath );
}
// Make sure the files are there
- if ( !is_file( $srcPath ) )
- $status->fatal( 'filenotfound', $srcPath );
-
if ( !is_file( $toAppendPath ) )
$status->fatal( 'filenotfound', $toAppendPath );
+ if ( !is_file( $srcPath ) )
+ $status->fatal( 'filenotfound', $srcPath );
+
if ( !$status->isOk() ) return $status;
// Do the append
- $chunk = file_get_contents( $toAppendPath );
+ $chunk = file_get_contents( $srcPath );
if( $chunk === false ) {
- $status->fatal( 'fileappenderrorread', $toAppendPath );
+ $status->fatal( 'fileappenderrorread', $srcPath );
}
if( $status->isOk() ) {
- if ( file_put_contents( $srcPath, $chunk, FILE_APPEND ) ) {
- $status->value = $srcPath;
+ if ( file_put_contents( $toAppendPath, $chunk, FILE_APPEND ) ) {
+ $status->value = $toAppendPath;
} else {
- $status->fatal( 'fileappenderror', $toAppendPath, $srcPath);
+ $status->fatal( 'fileappenderror', $srcPath, $toAppendPath);
}
}
if ( $flags & self::DELETE_SOURCE ) {
- unlink( $toAppendPath );
+ unlink( $srcPath );
}
return $status;
}
+ /* We can actually append to the files, so no-op needed here. */
+ function appendFinish( $toAppendPath ) {}
+
/**
* Checks existence of specified array of files.
*
@@ -515,14 +592,18 @@ class FSRepo extends FileRepo {
$good = true;
if ( file_exists( $archivePath ) ) {
# A file with this content hash is already archived
- if ( !@unlink( $srcPath ) ) {
+ wfSuppressWarnings();
+ $good = unlink( $srcPath );
+ wfRestoreWarnings();
+ if ( !$good ) {
$status->error( 'filedeleteerror', $srcPath );
- $good = false;
}
} else{
- if ( !@rename( $srcPath, $archivePath ) ) {
+ wfSuppressWarnings();
+ $good = rename( $srcPath, $archivePath );
+ wfRestoreWarnings();
+ if ( !$good ) {
$status->error( 'filerenameerror', $srcPath, $archivePath );
- $good = false;
} else {
$this->chmod( $archivePath );
}
@@ -564,8 +645,11 @@ class FSRepo extends FileRepo {
continue;
}
$dir = opendir( $path );
- while ( false !== ( $name = readdir( $dir ) ) ) {
- call_user_func( $callback, $path . '/' . $name );
+ if ($dir) {
+ while ( false !== ( $name = readdir( $dir ) ) ) {
+ call_user_func( $callback, $path . '/' . $name );
+ }
+ closedir( $dir );
}
}
}
diff --git a/includes/filerepo/File.php b/includes/filerepo/File.php
index 192e8c8a..6b35102b 100644
--- a/includes/filerepo/File.php
+++ b/includes/filerepo/File.php
@@ -52,7 +52,23 @@ abstract class File {
/**
* The following member variables are not lazy-initialised
*/
- var $repo, $title, $lastError, $redirected, $redirectedTitle;
+
+ /**
+ * @var LocalRepo
+ */
+ var $repo;
+
+ /**
+ * @var Title
+ */
+ var $title;
+
+ var $lastError, $redirected, $redirectedTitle;
+
+ /**
+ * @var MediaHandler
+ */
+ protected $handler;
/**
* Call this constructor from child classes
@@ -101,6 +117,8 @@ abstract class File {
*
* @param $old File Old file
* @param $new string New name
+ *
+ * @return bool|null
*/
static function checkExtensionCompatibility( File $old, $new ) {
$oldMime = $old->getMimeType();
@@ -122,10 +140,10 @@ abstract class File {
* Split an internet media type into its two components; if not
* a two-part name, set the minor type to 'unknown'.
*
- * @param $mime "text/html" etc
+ * @param string $mime "text/html" etc
* @return array ("text", "html") etc
*/
- static function splitMime( $mime ) {
+ public static function splitMime( $mime ) {
if( strpos( $mime, '/' ) !== false ) {
return explode( '/', $mime, 2 );
} else {
@@ -135,6 +153,8 @@ abstract class File {
/**
* Return the name of this file
+ *
+ * @return string
*/
public function getName() {
if ( !isset( $this->name ) ) {
@@ -145,6 +165,8 @@ abstract class File {
/**
* Get the file extension, e.g. "svg"
+ *
+ * @return string
*/
function getExtension() {
if ( !isset( $this->extension ) ) {
@@ -157,20 +179,26 @@ abstract class File {
/**
* Return the associated title object
+ * @return Title
*/
public function getTitle() { return $this->title; }
-
+
/**
* Return the title used to find this file
+ *
+ * @return Title
*/
public function getOriginalTitle() {
- if ( $this->redirected )
+ if ( $this->redirected ) {
return $this->getRedirectedTitle();
+ }
return $this->title;
}
/**
* Return the URL of the file
+ *
+ * @return string
*/
public function getUrl() {
if ( !isset( $this->url ) ) {
@@ -187,15 +215,21 @@ abstract class File {
* @return String
*/
public function getFullUrl() {
- return wfExpandUrl( $this->getUrl() );
+ return wfExpandUrl( $this->getUrl(), PROTO_RELATIVE );
+ }
+
+ public function getCanonicalUrl() {
+ return wfExpandUrl( $this->getUrl(), PROTO_CANONICAL );
}
+ /**
+ * @return string
+ */
function getViewURL() {
if( $this->mustRender()) {
if( $this->canRender() ) {
return $this->createThumb( $this->getWidth() );
- }
- else {
+ } else {
wfDebug(__METHOD__.': supposed to render '.$this->getName().' ('.$this->getMimeType()."), but can't!\n");
return $this->getURL(); #hm... return NULL?
}
@@ -212,7 +246,10 @@ abstract class File {
* i.e. whether the files are all found in the same directory,
* or in hashed paths like /images/3/3c.
*
- * May return false if the file is not locally accessible.
+ * Most callers don't check the return value, but ForeignAPIFile::getPath
+ * returns false.
+ *
+ * @return string|false
*/
public function getPath() {
if ( !isset( $this->path ) ) {
@@ -222,9 +259,14 @@ abstract class File {
}
/**
- * Alias for getPath()
- */
+ * Alias for getPath()
+ *
+ * @deprecated since 1.18 Use getPath().
+ *
+ * @return string
+ */
public function getFullPath() {
+ wfDeprecated( __METHOD__ );
return $this->getPath();
}
@@ -234,8 +276,14 @@ abstract class File {
*
* STUB
* Overridden by LocalFile, UnregisteredLocalFile
+ *
+ * @param $page int
+ *
+ * @return number
*/
- public function getWidth( $page = 1 ) { return false; }
+ public function getWidth( $page = 1 ) {
+ return false;
+ }
/**
* Return the height of the image. Returns false if the height is unknown
@@ -243,19 +291,29 @@ abstract class File {
*
* STUB
* Overridden by LocalFile, UnregisteredLocalFile
+ *
+ * @return false|number
*/
- public function getHeight( $page = 1 ) { return false; }
+ public function getHeight( $page = 1 ) {
+ return false;
+ }
/**
* Returns ID or name of user who uploaded the file
* STUB
*
* @param $type string 'text' or 'id'
+ *
+ * @return string|int
*/
- public function getUser( $type='text' ) { return null; }
+ public function getUser( $type = 'text' ) {
+ return null;
+ }
/**
* Get the duration of a media file in seconds
+ *
+ * @return number
*/
public function getLength() {
$handler = $this->getHandler();
@@ -267,45 +325,76 @@ abstract class File {
}
/**
- * Return true if the file is vectorized
- */
- public function isVectorized() {
- $handler = $this->getHandler();
- if ( $handler ) {
- return $handler->isVectorized( $this );
- } else {
- return false;
- }
- }
-
+ * Return true if the file is vectorized
+ *
+ * @return bool
+ */
+ public function isVectorized() {
+ $handler = $this->getHandler();
+ if ( $handler ) {
+ return $handler->isVectorized( $this );
+ } else {
+ return false;
+ }
+ }
/**
* Get handler-specific metadata
* Overridden by LocalFile, UnregisteredLocalFile
* STUB
*/
- public function getMetadata() { return false; }
+ public function getMetadata() {
+ return false;
+ }
+
+ /**
+ * get versioned metadata
+ *
+ * @param $metadata Mixed Array or String of (serialized) metadata
+ * @param $version integer version number.
+ * @return Array containing metadata, or what was passed to it on fail (unserializing if not array)
+ */
+ public function convertMetadataVersion($metadata, $version) {
+ $handler = $this->getHandler();
+ if ( !is_array( $metadata ) ) {
+ //just to make the return type consistant
+ $metadata = unserialize( $metadata );
+ }
+ if ( $handler ) {
+ return $handler->convertMetadataVersion( $metadata, $version );
+ } else {
+ return $metadata;
+ }
+ }
/**
* Return the bit depth of the file
* Overridden by LocalFile
* STUB
*/
- public function getBitDepth() { return 0; }
+ public function getBitDepth() {
+ return 0;
+ }
/**
* Return the size of the image file, in bytes
* Overridden by LocalFile, UnregisteredLocalFile
* STUB
*/
- public function getSize() { return false; }
+ public function getSize() {
+ return false;
+ }
/**
* Returns the mime type of the file.
* Overridden by LocalFile, UnregisteredLocalFile
* STUB
+ *
+ * @return string
*/
- function getMimeType() { return 'unknown/unknown'; }
+ function getMimeType() {
+ return 'unknown/unknown';
+ }
/**
* Return the type of the media in the file.
@@ -324,6 +413,8 @@ abstract class File {
* that can be converted to a format
* supported by all browsers (namely GIF, PNG and JPEG),
* or if it is an SVG image and SVG conversion is enabled.
+ *
+ * @return bool
*/
function canRender() {
if ( !isset( $this->canRender ) ) {
@@ -355,6 +446,8 @@ abstract class File {
/**
* Alias for canRender()
+ *
+ * @return bool
*/
function allowInlineDisplay() {
return $this->canRender();
@@ -370,6 +463,8 @@ abstract class File {
*
* Note that this function will always return true if allowInlineDisplay()
* or isTrustedFile() is true for this file.
+ *
+ * @return bool
*/
function isSafeFile() {
if ( !isset( $this->isSafeFile ) ) {
@@ -378,41 +473,64 @@ abstract class File {
return $this->isSafeFile;
}
- /** Accessor for __get() */
+ /**
+ * Accessor for __get()
+ *
+ * @return bool
+ */
protected function getIsSafeFile() {
return $this->isSafeFile();
}
- /** Uncached accessor */
+ /**
+ * Uncached accessor
+ *
+ * @return bool
+ */
protected function _getIsSafeFile() {
- if ($this->allowInlineDisplay()) return true;
- if ($this->isTrustedFile()) return true;
+ if ( $this->allowInlineDisplay() ) {
+ return true;
+ }
+ if ($this->isTrustedFile()) {
+ return true;
+ }
global $wgTrustedMediaFormats;
- $type= $this->getMediaType();
- $mime= $this->getMimeType();
+ $type = $this->getMediaType();
+ $mime = $this->getMimeType();
#wfDebug("LocalFile::isSafeFile: type= $type, mime= $mime\n");
- if (!$type || $type===MEDIATYPE_UNKNOWN) return false; #unknown type, not trusted
- if ( in_array( $type, $wgTrustedMediaFormats) ) return true;
+ if ( !$type || $type === MEDIATYPE_UNKNOWN ) {
+ return false; #unknown type, not trusted
+ }
+ if ( in_array( $type, $wgTrustedMediaFormats ) ) {
+ return true;
+ }
- if ($mime==="unknown/unknown") return false; #unknown type, not trusted
- if ( in_array( $mime, $wgTrustedMediaFormats) ) return true;
+ if ( $mime === "unknown/unknown" ) {
+ return false; #unknown type, not trusted
+ }
+ if ( in_array( $mime, $wgTrustedMediaFormats) ) {
+ return true;
+ }
return false;
}
- /** Returns true if the file is flagged as trusted. Files flagged that way
- * can be linked to directly, even if that is not allowed for this type of
- * file normally.
- *
- * This is a dummy function right now and always returns false. It could be
- * implemented to extract a flag from the database. The trusted flag could be
- * set on upload, if the user has sufficient privileges, to bypass script-
- * and html-filters. It may even be coupled with cryptographics signatures
- * or such.
- */
+ /**
+ * Returns true if the file is flagged as trusted. Files flagged that way
+ * can be linked to directly, even if that is not allowed for this type of
+ * file normally.
+ *
+ * This is a dummy function right now and always returns false. It could be
+ * implemented to extract a flag from the database. The trusted flag could be
+ * set on upload, if the user has sufficient privileges, to bypass script-
+ * and html-filters. It may even be coupled with cryptographics signatures
+ * or such.
+ *
+ * @return bool
+ */
function isTrustedFile() {
#this could be implemented to check a flag in the databas,
#look for signatures, etc
@@ -435,12 +553,14 @@ abstract class File {
* It would be unsafe to include private images, making public thumbnails inadvertently
*
* @return boolean Whether file exists in the repository and is includable.
- * @public
*/
- function isVisible() {
+ public function isVisible() {
return $this->exists();
}
+ /**
+ * @return string
+ */
function getTransformScript() {
if ( !isset( $this->transformScript ) ) {
$this->transformScript = false;
@@ -456,6 +576,10 @@ abstract class File {
/**
* Get a ThumbnailImage which is the same size as the source
+ *
+ * @param $handlerParams array
+ *
+ * @return string
*/
function getUnscaledThumb( $handlerParams = array() ) {
$hp =& $handlerParams;
@@ -473,14 +597,28 @@ abstract class File {
*
* @param $params Array: handler-specific parameters
* @private -ish
+ *
+ * @return string
*/
function thumbName( $params ) {
+ return $this->generateThumbName( $this->getName(), $params );
+ }
+
+ /**
+ * Generate a thumbnail file name from a name and specified parameters
+ *
+ * @param string $name
+ * @param array $params Parameters which will be passed to MediaHandler::makeParamString
+ *
+ * @return string
+ */
+ function generateThumbName( $name, $params ) {
if ( !$this->getHandler() ) {
return null;
}
$extension = $this->getExtension();
list( $thumbExt, $thumbMime ) = $this->handler->getThumbType( $extension, $this->getMimeType(), $params );
- $thumbName = $this->handler->makeParamString( $params ) . '-' . $this->getName();
+ $thumbName = $this->handler->makeParamString( $params ) . '-' . $name;
if ( $thumbExt != $extension ) {
$thumbName .= ".$thumbExt";
}
@@ -501,6 +639,8 @@ abstract class File {
*
* @param $width Integer: maximum width of the generated thumbnail
* @param $height Integer: maximum height of the image (optional)
+ *
+ * @return string
*/
public function createThumb( $width, $height = -1 ) {
$params = array( 'width' => $width );
@@ -513,30 +653,6 @@ abstract class File {
}
/**
- * As createThumb, but returns a ThumbnailImage object. This can
- * provide access to the actual file, the real size of the thumb,
- * and can produce a convenient \<img\> tag for you.
- *
- * For non-image formats, this may return a filetype-specific icon.
- *
- * @param $width Integer: maximum width of the generated thumbnail
- * @param $height Integer: maximum height of the image (optional)
- * @param $render Integer: Deprecated
- *
- * @return ThumbnailImage or null on failure
- *
- * @deprecated use transform()
- */
- public function getThumbnail( $width, $height=-1, $render = true ) {
- wfDeprecated( __METHOD__ );
- $params = array( 'width' => $width );
- if ( $height != -1 ) {
- $params['height'] = $height;
- }
- return $this->transform( $params, 0 );
- }
-
- /**
* Transform a media file
*
* @param $params Array: an associative array of handler-specific parameters.
@@ -558,7 +674,7 @@ abstract class File {
// Get the descriptionUrl to embed it as comment into the thumbnail. Bug 19791.
$descriptionUrl = $this->getDescriptionUrl();
if ( $descriptionUrl ) {
- $params['descriptionUrl'] = $wgServer . $descriptionUrl;
+ $params['descriptionUrl'] = wfExpandUrl( $descriptionUrl, PROTO_CANONICAL );
}
$script = $this->getTransformScript();
@@ -586,8 +702,8 @@ abstract class File {
if ( file_exists( $thumbPath )) {
$thumbTime = filemtime( $thumbPath );
if ( $thumbTime !== FALSE &&
- gmdate( 'YmdHis', $thumbTime ) >= $wgThumbnailEpoch ) {
-
+ gmdate( 'YmdHis', $thumbTime ) >= $wgThumbnailEpoch ) {
+
$thumb = $this->handler->getTransform( $this, $thumbPath, $thumbUrl, $params );
break;
}
@@ -603,9 +719,9 @@ abstract class File {
$thumb = $this->handler->getTransform( $this, $thumbPath, $thumbUrl, $params );
}
}
-
- // Purge. Useful in the event of Core -> Squid connection failure or squid
- // purge collisions from elsewhere during failure. Don't keep triggering for
+
+ // Purge. Useful in the event of Core -> Squid connection failure or squid
+ // purge collisions from elsewhere during failure. Don't keep triggering for
// "thumbs" which have the main image URL though (bug 13776)
if ( $wgUseSquid && ( !$thumb || $thumb->isError() || $thumb->getUrl() != $this->getURL()) ) {
SquidUpdate::purge( array( $thumbUrl ) );
@@ -625,6 +741,7 @@ abstract class File {
/**
* Get a MediaHandler instance for this file
+ * @return MediaHandler
*/
function getHandler() {
if ( !isset( $this->handler ) ) {
@@ -664,7 +781,9 @@ abstract class File {
* STUB
* Overridden by LocalFile
*/
- function getThumbnails() { return array(); }
+ function getThumbnails() {
+ return array();
+ }
/**
* Purge shared caches such as thumbnails and DB data caching
@@ -711,6 +830,8 @@ abstract class File {
* @param $start timestamp Only revisions older than $start will be returned
* @param $end timestamp Only revisions newer than $end will be returned
* @param $inc bool Include the endpoints of the time range
+ *
+ * @return array
*/
function getHistory($limit = null, $start = null, $end = null, $inc=true) {
return array();
@@ -740,6 +861,8 @@ abstract class File {
* Get the filename hash component of the directory including trailing slash,
* e.g. f/fa/
* If the repository is not hashed, returns an empty string.
+ *
+ * @return string
*/
function getHashPath() {
if ( !isset( $this->hashPath ) ) {
@@ -750,6 +873,8 @@ abstract class File {
/**
* Get the path of the file relative to the public zone root
+ *
+ * @return string
*/
function getRel() {
return $this->getHashPath() . $this->getName();
@@ -757,12 +882,20 @@ abstract class File {
/**
* Get urlencoded relative path of the file
+ *
+ * @return string
*/
function getUrlRel() {
return $this->getHashPath() . rawurlencode( $this->getName() );
}
- /** Get the relative path for an archive file */
+ /**
+ * Get the relative path for an archived file
+ *
+ * @param $suffix bool|string if not false, the name of an archived thumbnail file
+ *
+ * @return string
+ */
function getArchiveRel( $suffix = false ) {
$path = 'archive/' . $this->getHashPath();
if ( $suffix === false ) {
@@ -773,21 +906,68 @@ abstract class File {
return $path;
}
- /** Get the path of the archive directory, or a particular file if $suffix is specified */
+ /**
+ * Get the relative path for an archived file's thumbs directory
+ * or a specific thumb if the $suffix is given.
+ *
+ * @param $archiveName string the timestamped name of an archived image
+ * @param $suffix bool|string if not false, the name of a thumbnail file
+ */
+ function getArchiveThumbRel( $archiveName, $suffix = false ) {
+ $path = 'archive/' . $this->getHashPath() . $archiveName . "/";
+ if ( $suffix === false ) {
+ $path = substr( $path, 0, -1 );
+ } else {
+ $path .= $suffix;
+ }
+ return $path;
+ }
+
+ /**
+ * Get the path of the archived file.
+ *
+ * @param $suffix bool|string if not false, the name of an archived file.
+ *
+ * @return string
+ */
function getArchivePath( $suffix = false ) {
- return $this->repo->getZonePath('public') . '/' . $this->getArchiveRel( $suffix );
+ return $this->repo->getZonePath( 'public' ) . '/' . $this->getArchiveRel( $suffix );
}
- /** Get the path of the thumbnail directory, or a particular file if $suffix is specified */
+ /**
+ * Get the path of the archived file's thumbs, or a particular thumb if $suffix is specified
+ *
+ * @param $archiveName string the timestamped name of an archived image
+ * @param $suffix bool|string if not false, the name of a thumbnail file
+ *
+ * @return string
+ */
+ function getArchiveThumbPath( $archiveName, $suffix = false ) {
+ return $this->repo->getZonePath( 'thumb' ) . '/' . $this->getArchiveThumbRel( $archiveName, $suffix );
+ }
+
+ /**
+ * Get the path of the thumbnail directory, or a particular file if $suffix is specified
+ *
+ * @param $suffix bool|string if not false, the name of a thumbnail file
+ *
+ * @return string
+ */
function getThumbPath( $suffix = false ) {
- $path = $this->repo->getZonePath('thumb') . '/' . $this->getRel();
+ $path = $this->repo->getZonePath( 'thumb' ) . '/' . $this->getRel();
if ( $suffix !== false ) {
$path .= '/' . $suffix;
}
return $path;
}
- /** Get the URL of the archive directory, or a particular file if $suffix is specified */
+ /**
+ * Get the URL of the archive directory, or a particular file if $suffix is specified
+ *
+ * @param $suffix bool|string if not false, the name of an archived file
+ *
+ * @return string
+ */
function getArchiveUrl( $suffix = false ) {
$path = $this->repo->getZoneUrl('public') . '/archive/' . $this->getHashPath();
if ( $suffix === false ) {
@@ -798,7 +978,31 @@ abstract class File {
return $path;
}
- /** Get the URL of the thumbnail directory, or a particular file if $suffix is specified */
+ /**
+ * Get the URL of the archived file's thumbs, or a particular thumb if $suffix is specified
+ *
+ * @param $archiveName string the timestamped name of an archived image
+ * @param $suffix bool|string if not false, the name of a thumbnail file
+ *
+ * @return string
+ */
+ function getArchiveThumbUrl( $archiveName, $suffix = false ) {
+ $path = $this->repo->getZoneUrl('thumb') . '/archive/' . $this->getHashPath() . rawurlencode( $archiveName ) . "/";
+ if ( $suffix === false ) {
+ $path = substr( $path, 0, -1 );
+ } else {
+ $path .= rawurlencode( $suffix );
+ }
+ return $path;
+ }
+
+ /**
+ * Get the URL of the thumbnail directory, or a particular file if $suffix is specified
+ *
+ * @param $suffix bool|string if not false, the name of a thumbnail file
+ *
+ * @return path
+ */
function getThumbUrl( $suffix = false ) {
$path = $this->repo->getZoneUrl('thumb') . '/' . $this->getUrlRel();
if ( $suffix !== false ) {
@@ -807,7 +1011,13 @@ abstract class File {
return $path;
}
- /** Get the virtual URL for an archive file or directory */
+ /**
+ * Get the virtual URL for an archived file's thumbs, or a specific thumb.
+ *
+ * @param $suffix bool|string if not false, the name of a thumbnail file
+ *
+ * @return string
+ */
function getArchiveVirtualUrl( $suffix = false ) {
$path = $this->repo->getVirtualUrl() . '/public/archive/' . $this->getHashPath();
if ( $suffix === false ) {
@@ -818,7 +1028,13 @@ abstract class File {
return $path;
}
- /** Get the virtual URL for a thumbnail file or directory */
+ /**
+ * Get the virtual URL for a thumbnail file or directory
+ *
+ * @param $suffix bool|string if not false, the name of a thumbnail file
+ *
+ * @return string
+ */
function getThumbVirtualUrl( $suffix = false ) {
$path = $this->repo->getVirtualUrl() . '/thumb/' . $this->getUrlRel();
if ( $suffix !== false ) {
@@ -827,7 +1043,13 @@ abstract class File {
return $path;
}
- /** Get the virtual URL for the file itself */
+ /**
+ * Get the virtual URL for the file itself
+ *
+ * @param $suffix bool|string if not false, the name of a thumbnail file
+ *
+ * @return string
+ */
function getVirtualUrl( $suffix = false ) {
$path = $this->repo->getVirtualUrl() . '/public/' . $this->getUrlRel();
if ( $suffix !== false ) {
@@ -843,6 +1065,9 @@ abstract class File {
return $this->repo->isHashed();
}
+ /**
+ * @throws MWException
+ */
function readOnlyError() {
throw new MWException( get_class($this) . ': write operations are not supported' );
}
@@ -851,6 +1076,12 @@ abstract class File {
* Record a file upload in the upload log and the image table
* STUB
* Overridden by LocalFile
+ * @param $oldver
+ * @param $desc
+ * @param $license string
+ * @param $copyStatus string
+ * @param $source string
+ * @param $watch bool
*/
function recordUpload( $oldver, $desc, $license = '', $copyStatus = '', $source = '', $watch = false ) {
$this->readOnlyError();
@@ -879,46 +1110,8 @@ abstract class File {
}
/**
- * Get an array of Title objects which are articles which use this file
- * Also adds their IDs to the link cache
- *
- * This is mostly copied from Title::getLinksTo()
- *
- * @deprecated Use HTMLCacheUpdate, this function uses too much memory
+ * @return bool
*/
- function getLinksTo( $options = array() ) {
- wfDeprecated( __METHOD__ );
- wfProfileIn( __METHOD__ );
-
- // Note: use local DB not repo DB, we want to know local links
- if ( count( $options ) > 0 ) {
- $db = wfGetDB( DB_MASTER );
- } else {
- $db = wfGetDB( DB_SLAVE );
- }
- $linkCache = LinkCache::singleton();
-
- $encName = $db->addQuotes( $this->getName() );
- $res = $db->select( array( 'page', 'imagelinks'),
- array( 'page_namespace', 'page_title', 'page_id', 'page_len', 'page_is_redirect', 'page_latest' ),
- array( 'page_id=il_from', 'il_to' => $encName ),
- __METHOD__,
- $options );
-
- $retVal = array();
- if ( $db->numRows( $res ) ) {
- foreach ( $res as $row ) {
- $titleObj = Title::newFromRow( $row );
- if ( $titleObj ) {
- $linkCache->addGoodLinkObj( $row->page_id, $titleObj, $row->page_len, $row->page_is_redirect, $row->page_latest );
- $retVal[] = $titleObj;
- }
- }
- }
- wfProfileOut( __METHOD__ );
- return $retVal;
- }
-
function formatMetadata() {
if ( !$this->getHandler() ) {
return false;
@@ -944,8 +1137,11 @@ abstract class File {
function getRepoName() {
return $this->repo ? $this->repo->getName() : 'unknown';
}
- /*
+
+ /**
* Returns the repository
+ *
+ * @return FileRepo
*/
function getRepo() {
return $this->repo;
@@ -954,6 +1150,8 @@ abstract class File {
/**
* Returns true if the image is an old version
* STUB
+ *
+ * @return bool
*/
function isOld() {
return false;
@@ -962,15 +1160,19 @@ abstract class File {
/**
* Is this file a "deleted" file in a private archive?
* STUB
+ *
+ * @param $field
+ *
+ * @return bool
*/
function isDeleted( $field ) {
return false;
}
-
+
/**
* Return the deletion bitfield
* STUB
- */
+ */
function getVisibility() {
return 0;
}
@@ -1025,21 +1227,21 @@ abstract class File {
*
* May throw database exceptions on error.
*
- * @param $versions set of record ids of deleted items to restore,
+ * @param $versions array set of record ids of deleted items to restore,
* or empty to restore all revisions.
- * @param $unsuppress remove restrictions on content upon restoration?
- * @return the number of file revisions restored if successful,
+ * @param $unsuppress bool remove restrictions on content upon restoration?
+ * @return int|false the number of file revisions restored if successful,
* or false on failure
* STUB
* Overridden by LocalFile
*/
- function restore( $versions=array(), $unsuppress=false ) {
+ function restore( $versions = array(), $unsuppress = false ) {
$this->readOnlyError();
}
/**
- * Returns 'true' if this file is a type which supports multiple pages,
- * e.g. DJVU or PDF. Note that this may be true even if the file in
+ * Returns 'true' if this file is a type which supports multiple pages,
+ * e.g. DJVU or PDF. Note that this may be true even if the file in
* question only has a single page.
*
* @return Bool
@@ -1051,6 +1253,8 @@ abstract class File {
/**
* Returns the number of pages of a multipage document, or false for
* documents which aren't multipage documents
+ *
+ * @return false|int
*/
function pageCount() {
if ( !isset( $this->pageCount ) ) {
@@ -1065,6 +1269,12 @@ abstract class File {
/**
* Calculate the height of a thumbnail using the source and destination width
+ *
+ * @param $srcWidth
+ * @param $srcHeight
+ * @param $dstWidth
+ *
+ * @return int
*/
static function scaleHeight( $srcWidth, $srcHeight, $dstWidth ) {
// Exact integer multiply followed by division
@@ -1092,6 +1302,8 @@ abstract class File {
/**
* Get the URL of the image description page. May return false if it is
* unknown or not applicable.
+ *
+ * @return string
*/
function getDescriptionUrl() {
return $this->repo->getDescriptionUrl( $this->getName() );
@@ -1099,6 +1311,8 @@ abstract class File {
/**
* Get the HTML text of the description page, if available
+ *
+ * @return string
*/
function getDescriptionText() {
global $wgMemc, $wgLang;
@@ -1109,7 +1323,7 @@ abstract class File {
if ( $renderUrl ) {
if ( $this->repo->descriptionCacheExpiry > 0 ) {
wfDebug("Attempting to get the description from cache...");
- $key = $this->repo->getLocalCacheKey( 'RemoteFileDescription', 'url', $wgLang->getCode(),
+ $key = $this->repo->getLocalCacheKey( 'RemoteFileDescription', 'url', $wgLang->getCode(),
$this->getName() );
$obj = $wgMemc->get($key);
if ($obj) {
@@ -1132,6 +1346,8 @@ abstract class File {
/**
* Get discription of file revision
* STUB
+ *
+ * @return string
*/
function getDescription() {
return null;
@@ -1140,6 +1356,8 @@ abstract class File {
/**
* Get the 14-character timestamp of the file upload, or false if
* it doesn't exist
+ *
+ * @return string
*/
function getTimestamp() {
$path = $this->getPath();
@@ -1151,6 +1369,8 @@ abstract class File {
/**
* Get the SHA-1 base 36 hash of the file
+ *
+ * @return string
*/
function getSha1() {
return self::sha1Base36( $this->getPath() );
@@ -1158,6 +1378,8 @@ abstract class File {
/**
* Get the deletion archive key, <sha1>.<ext>
+ *
+ * @return string
*/
function getStorageKey() {
$hash = $this->getSha1();
@@ -1166,7 +1388,7 @@ abstract class File {
}
$ext = $this->getExtension();
$dotExt = $ext === '' ? '' : ".$ext";
- return $hash . $dotExt;
+ return $hash . $dotExt;
}
/**
@@ -1186,6 +1408,8 @@ abstract class File {
* @param $path String: absolute local filesystem path
* @param $ext Mixed: the file extension, or true to extract it from the filename.
* Set it to false to ignore the extension.
+ *
+ * @return array
*/
static function getPropsFromPath( $path, $ext = true ) {
wfProfileIn( __METHOD__ );
@@ -1258,7 +1482,9 @@ abstract class File {
* 160 log 2 / log 36 = 30.95, so the 160-bit hash fills 31 digits in base 36
* fairly neatly.
*
- * Returns false on failure
+ * @param $path string
+ *
+ * @return false|string False on failure
*/
static function sha1Base36( $path ) {
wfSuppressWarnings();
@@ -1271,6 +1497,9 @@ abstract class File {
}
}
+ /**
+ * @return string
+ */
function getLongDesc() {
$handler = $this->getHandler();
if ( $handler ) {
@@ -1280,6 +1509,9 @@ abstract class File {
}
}
+ /**
+ * @return string
+ */
function getShortDesc() {
$handler = $this->getHandler();
if ( $handler ) {
@@ -1289,6 +1521,9 @@ abstract class File {
}
}
+ /**
+ * @return string
+ */
function getDimensionsString() {
$handler = $this->getHandler();
if ( $handler ) {
@@ -1298,22 +1533,36 @@ abstract class File {
}
}
+ /**
+ * @return
+ */
function getRedirected() {
return $this->redirected;
}
-
+
+ /**
+ * @return Title
+ */
function getRedirectedTitle() {
if ( $this->redirected ) {
- if ( !$this->redirectTitle )
+ if ( !$this->redirectTitle ) {
$this->redirectTitle = Title::makeTitle( NS_FILE, $this->redirected );
+ }
return $this->redirectTitle;
}
}
+ /**
+ * @param $from
+ * @return void
+ */
function redirectedFrom( $from ) {
$this->redirected = $from;
}
+ /**
+ * @return bool
+ */
function isMissing() {
return false;
}
diff --git a/includes/filerepo/FileRepo.php b/includes/filerepo/FileRepo.php
index ff73a73c..843f09a9 100644
--- a/includes/filerepo/FileRepo.php
+++ b/includes/filerepo/FileRepo.php
@@ -17,6 +17,7 @@ abstract class FileRepo {
const DELETE_SOURCE = 1;
const OVERWRITE = 2;
const OVERWRITE_SAME = 4;
+ const SKIP_VALIDATION = 8;
var $thumbScriptUrl, $transformVia404;
var $descBaseUrl, $scriptDirUrl, $scriptExtension, $articleUrl;
@@ -39,7 +40,7 @@ abstract class FileRepo {
$this->initialCapital = MWNamespace::isCapitalized( NS_FILE );
foreach ( array( 'descBaseUrl', 'scriptDirUrl', 'articleUrl', 'fetchDescription',
'thumbScriptUrl', 'initialCapital', 'pathDisclosureProtection',
- 'descriptionCacheExpiry', 'hashLevels', 'url', 'thumbUrl', 'scriptExtension' )
+ 'descriptionCacheExpiry', 'hashLevels', 'url', 'thumbUrl', 'scriptExtension' )
as $var )
{
if ( isset( $info[$var] ) ) {
@@ -51,6 +52,10 @@ abstract class FileRepo {
/**
* Determine if a string is an mwrepo:// URL
+ *
+ * @param $url string
+ *
+ * @return bool
*/
static function isVirtualUrl( $url ) {
return substr( $url, 0, 9 ) == 'mwrepo://';
@@ -65,9 +70,11 @@ abstract class FileRepo {
* instance of the repository's old file class instead of a
* current file. Repositories not supporting version control
* should return false if this parameter is set.
+ *
+ * @return File
*/
function newFile( $title, $time = false ) {
- if ( !($title instanceof Title) ) {
+ if ( !( $title instanceof Title ) ) {
$title = Title::makeTitleSafe( NS_FILE, $title );
if ( !is_object( $title ) ) {
return null;
@@ -90,7 +97,7 @@ abstract class FileRepo {
* version control should return false if the time is specified.
*
* @param $title Mixed: Title object or string
- * @param $options Associative array of options:
+ * @param $options array Associative array of options:
* time: requested time for an archived image, or false for the
* current version. An image object will be returned which was
* created at the specified time.
@@ -100,14 +107,11 @@ abstract class FileRepo {
* private: If true, return restricted (deleted) files if the current
* user is allowed to view them. Otherwise, such files will not
* be found.
+ *
+ * @return File|false
*/
function findFile( $title, $options = array() ) {
- if ( !is_array( $options ) ) {
- // MW 1.15 compat
- $time = $options;
- } else {
- $time = isset( $options['time'] ) ? $options['time'] : false;
- }
+ $time = isset( $options['time'] ) ? $options['time'] : false;
if ( !($title instanceof Title) ) {
$title = Title::makeTitleSafe( NS_FILE, $title );
if ( !is_object( $title ) ) {
@@ -126,9 +130,9 @@ abstract class FileRepo {
if ( $time !== false ) {
$img = $this->newFile( $title, $time );
if ( $img && $img->exists() ) {
- if ( !$img->isDeleted(File::DELETED_FILE) ) {
- return $img;
- } else if ( !empty( $options['private'] ) && $img->userCan(File::DELETED_FILE) ) {
+ if ( !$img->isDeleted( File::DELETED_FILE ) ) {
+ return $img; // always OK
+ } elseif ( !empty( $options['private'] ) && $img->userCan( File::DELETED_FILE ) ) {
return $img;
}
}
@@ -139,7 +143,7 @@ abstract class FileRepo {
return false;
}
$redir = $this->checkRedirect( $title );
- if( $redir && $redir->getNamespace() == NS_FILE) {
+ if( $redir && $title->getNamespace() == NS_FILE) {
$img = $this->newFile( $redir );
if( !$img ) {
return false;
@@ -152,7 +156,7 @@ abstract class FileRepo {
return false;
}
- /*
+ /**
* Find many files at once.
* @param $items An array of titles, or an array of findFile() options with
* the "title" option giving the title. Example:
@@ -181,58 +185,32 @@ abstract class FileRepo {
}
/**
- * Create a new File object from the local repository
- * @param $sha1 Mixed: SHA-1 key
- * @param $time Mixed: time at which the image was uploaded.
- * If this is specified, the returned object will be an
- * of the repository's old file class instead of a current
- * file. Repositories not supporting version control should
- * return false if this parameter is set.
- */
- function newFileFromKey( $sha1, $time = false ) {
- if ( $time ) {
- if ( $this->oldFileFactoryKey ) {
- return call_user_func( $this->oldFileFactoryKey, $sha1, $this, $time );
- }
- } else {
- if ( $this->fileFactoryKey ) {
- return call_user_func( $this->fileFactoryKey, $sha1, $this );
- }
- }
- return false;
- }
-
- /**
* Find an instance of the file with this key, created at the specified time
* Returns false if the file does not exist. Repositories not supporting
* version control should return false if the time is specified.
*
- * @param $sha1 String
+ * @param $sha1 String base 36 SHA-1 hash
* @param $options Option array, same as findFile().
*/
function findFileFromKey( $sha1, $options = array() ) {
- if ( !is_array( $options ) ) {
- # MW 1.15 compat
- $time = $options;
- } else {
- $time = isset( $options['time'] ) ? $options['time'] : false;
- }
+ $time = isset( $options['time'] ) ? $options['time'] : false;
- # First try the current version of the file to see if it precedes the timestamp
- $img = $this->newFileFromKey( $sha1 );
- if ( !$img ) {
- return false;
+ # First try to find a matching current version of a file...
+ if ( $this->fileFactoryKey ) {
+ $img = call_user_func( $this->fileFactoryKey, $sha1, $this, $time );
+ } else {
+ return false; // find-by-sha1 not supported
}
- if ( $img->exists() && ( !$time || $img->getTimestamp() == $time ) ) {
+ if ( $img && $img->exists() ) {
return $img;
}
- # Now try an old version of the file
- if ( $time !== false ) {
- $img = $this->newFileFromKey( $sha1, $time );
+ # Now try to find a matching old version of a file...
+ if ( $time !== false && $this->oldFileFactoryKey ) { // find-by-sha1 supported?
+ $img = call_user_func( $this->oldFileFactoryKey, $sha1, $this, $time );
if ( $img && $img->exists() ) {
- if ( !$img->isDeleted(File::DELETED_FILE) ) {
- return $img;
- } else if ( !empty( $options['private'] ) && $img->userCan(File::DELETED_FILE) ) {
+ if ( !$img->isDeleted( File::DELETED_FILE ) ) {
+ return $img; // always OK
+ } elseif ( !empty( $options['private'] ) && $img->userCan( File::DELETED_FILE ) ) {
return $img;
}
}
@@ -265,6 +243,7 @@ abstract class FileRepo {
/**
* Get the name of an image from its title object
+ * @param $title Title
*/
function getNameFromTitle( $title ) {
if ( $this->initialCapital != MWNamespace::isCapitalized( NS_FILE ) ) {
@@ -306,18 +285,18 @@ abstract class FileRepo {
function getName() {
return $this->name;
}
-
+
/**
* Make an url to this repo
- *
+ *
* @param $query mixed Query string to append
* @param $entry string Entry point; defaults to index
* @return string
*/
function makeUrl( $query = '', $entry = 'index' ) {
$ext = isset( $this->scriptExtension ) ? $this->scriptExtension : '.php';
- return wfAppendQuery( "{$this->scriptDirUrl}/{$entry}{$ext}", $query );
- }
+ return wfAppendQuery( "{$this->scriptDirUrl}/{$entry}{$ext}", $query );
+ }
/**
* Get the URL of an image description page. May return false if it is
@@ -367,7 +346,7 @@ abstract class FileRepo {
$query .= '&uselang=' . $lang;
}
if ( isset( $this->scriptDirUrl ) ) {
- return $this->makeUrl(
+ return $this->makeUrl(
'title=' .
wfUrlencode( 'Image:' . $name ) .
"&$query" );
@@ -380,7 +359,7 @@ abstract class FileRepo {
}
}
}
-
+
/**
* Get the URL of the stylesheet to apply to description pages
* @return string
@@ -433,7 +412,8 @@ abstract class FileRepo {
/**
- * Append the contents of the source path to the given file.
+ * Append the contents of the source path to the given file, OR queue
+ * the appending operation in anticipation of a later appendFinish() call.
* @param $srcPath String: location of the source file
* @param $toAppendPath String: path to append to.
* @param $flags Integer: bitfield, may be FileRepo::DELETE_SOURCE to indicate
@@ -443,6 +423,13 @@ abstract class FileRepo {
abstract function append( $srcPath, $toAppendPath, $flags = 0 );
/**
+ * Finish the append operation.
+ * @param $toAppendPath String: path to append to.
+ * @return mixed Status or false
+ */
+ abstract function appendFinish( $toAppendPath );
+
+ /**
* Remove a temporary file or mark it for garbage collection
* @param $virtualUrl String: the virtual URL returned by storeTemp
* @return Boolean: true on success, false on failure
@@ -602,7 +589,7 @@ abstract class FileRepo {
function newFatal( $message /*, parameters...*/ ) {
$params = func_get_args();
array_unshift( $params, $this );
- return call_user_func_array( array( 'FileRepoStatus', 'newFatal' ), $params );
+ return MWInit::callStaticMethod( 'FileRepoStatus', 'newFatal', $params );
}
/**
@@ -624,6 +611,7 @@ abstract class FileRepo {
* STUB
*
* @param $title Title of image
+ * @return Bool
*/
function checkRedirect( $title ) {
return false;
@@ -658,11 +646,7 @@ abstract class FileRepo {
return null;
}
// 'shared-repo-name-wikimediacommons' is used when $wgUseInstantCommons = true
- $repoName = wfMsg( 'shared-repo-name-' . $this->name );
- if ( !wfEmptyMsg( 'shared-repo-name-' . $this->name, $repoName ) ) {
- return $repoName;
- }
- return wfMsg( 'shared-repo' );
+ return wfMessageFallback( 'shared-repo-name-' . $this->name, 'shared-repo' )->text();
}
/**
@@ -696,9 +680,11 @@ abstract class FileRepo {
array_unshift( $args, 'filerepo', $this->getName() );
return call_user_func_array( 'wfMemcKey', $args );
}
-
+
/**
* Get an UploadStash associated with this repo.
+ *
+ * @return UploadStash
*/
function getUploadStash() {
return new UploadStash( $this );
diff --git a/includes/filerepo/FileRepoStatus.php b/includes/filerepo/FileRepoStatus.php
index 161284c0..4eea9030 100644
--- a/includes/filerepo/FileRepoStatus.php
+++ b/includes/filerepo/FileRepoStatus.php
@@ -13,6 +13,10 @@
class FileRepoStatus extends Status {
/**
* Factory function for fatal errors
+ *
+ * @param $repo FileRepo
+ *
+ * @return FileRepoStatus
*/
static function newFatal( $repo /*, parameters...*/ ) {
$params = array_slice( func_get_args(), 1 );
@@ -22,12 +26,20 @@ class FileRepoStatus extends Status {
return $result;
}
+ /**
+ * @param $repo FileRepo
+ * @param $value
+ * @return FileRepoStatus
+ */
static function newGood( $repo = false, $value = null ) {
$result = new self( $repo );
$result->value = $value;
return $result;
}
+ /**
+ * @param $repo FileRepo
+ */
function __construct( $repo = false ) {
if ( $repo ) {
$this->cleanCallback = $repo->getErrorCleanupFunction();
diff --git a/includes/filerepo/ForeignAPIFile.php b/includes/filerepo/ForeignAPIFile.php
index 56fed75e..53c4a3bd 100644
--- a/includes/filerepo/ForeignAPIFile.php
+++ b/includes/filerepo/ForeignAPIFile.php
@@ -15,7 +15,13 @@
class ForeignAPIFile extends File {
private $mExists;
-
+
+ /**
+ * @param $title
+ * @param $repo ForeignApiRepo
+ * @param $info
+ * @param bool $exists
+ */
function __construct( $title, $repo, $info, $exists = false ) {
parent::__construct( $title, $repo );
$this->mInfo = $info;
@@ -23,7 +29,6 @@ class ForeignAPIFile extends File {
}
/**
- * @static
* @param $title Title
* @param $repo ForeignApiRepo
* @return ForeignAPIFile|null
@@ -32,7 +37,9 @@ class ForeignAPIFile extends File {
$data = $repo->fetchImageQuery( array(
'titles' => 'File:' . $title->getDBKey(),
'iiprop' => self::getProps(),
- 'prop' => 'imageinfo' ) );
+ 'prop' => 'imageinfo',
+ 'iimetadataversion' => MediaHandler::getMetadataVersion()
+ ) );
$info = $repo->getImageInfo( $data );
@@ -76,20 +83,26 @@ class ForeignAPIFile extends File {
// show icon
return parent::transform( $params, $flags );
}
+
+ // Note, the this->canRender() check above implies
+ // that we have a handler, and it can do makeParamString.
+ $otherParams = $this->handler->makeParamString( $params );
+
$thumbUrl = $this->repo->getThumbUrlFromCache(
$this->getName(),
isset( $params['width'] ) ? $params['width'] : -1,
- isset( $params['height'] ) ? $params['height'] : -1 );
+ isset( $params['height'] ) ? $params['height'] : -1,
+ $otherParams );
return $this->handler->getTransform( $this, 'bogus', $thumbUrl, $params );
}
// Info we can get from API...
public function getWidth( $page = 1 ) {
- return intval( @$this->mInfo['width'] );
+ return isset( $this->mInfo['width'] ) ? intval( $this->mInfo['width'] ) : 0;
}
public function getHeight( $page = 1 ) {
- return intval( @$this->mInfo['height'] );
+ return isset( $this->mInfo['height'] ) ? intval( $this->mInfo['height'] ) : 0;
}
public function getMetadata() {
@@ -148,7 +161,7 @@ class ForeignAPIFile extends File {
return $this->mInfo['mime'];
}
- /// @todo Fixme: may guess wrong on file types that can be eg audio or video
+ /// @todo FIXME: May guess wrong on file types that can be eg audio or video
function getMediaType() {
$magic = MimeMagic::singleton();
return $magic->getMediaType( null, $this->getMimeType() );
@@ -182,7 +195,7 @@ class ForeignAPIFile extends File {
$handle = opendir( $dir );
if ( $handle ) {
while ( false !== ( $file = readdir($handle) ) ) {
- if ( $file{0} != '.' ) {
+ if ( $file[0] != '.' ) {
$files[] = $file;
}
}
diff --git a/includes/filerepo/ForeignAPIRepo.php b/includes/filerepo/ForeignAPIRepo.php
index e4188d6b..502b8c1d 100644
--- a/includes/filerepo/ForeignAPIRepo.php
+++ b/includes/filerepo/ForeignAPIRepo.php
@@ -25,13 +25,13 @@ class ForeignAPIRepo extends FileRepo {
/* This version string is used in the user agent for requests and will help
* server maintainers in identify ForeignAPI usage.
* Update the version every time you make breaking or significant changes. */
- const VERSION = "2.0";
+ const VERSION = "2.1";
var $fileFactory = array( 'ForeignAPIFile', 'newFromTitle' );
/* Check back with Commons after a day */
- var $apiThumbCacheExpiry = 86400;
+ var $apiThumbCacheExpiry = 86400; /* 24*60*60 */
/* Redownload thumbnail files after a month */
- var $fileCacheExpiry = 2629743;
+ var $fileCacheExpiry = 2592000; /* 86400*30 */
/* Local image directory */
var $directory;
var $thumbDir;
@@ -75,6 +75,8 @@ class ForeignAPIRepo extends FileRepo {
/**
* Per docs in FileRepo, this needs to return false if we don't support versioned
* files. Well, we don't.
+ *
+ * @return File
*/
function newFile( $title, $time = false ) {
if ( $time ) {
@@ -83,26 +85,34 @@ class ForeignAPIRepo extends FileRepo {
return parent::newFile( $title, $time );
}
-/**
- * No-ops
- */
+ /**
+ * No-ops
+ */
+
function storeBatch( $triplets, $flags = 0 ) {
return false;
}
+
function storeTemp( $originalName, $srcPath ) {
return false;
}
+
function append( $srcPath, $toAppendPath, $flags = 0 ){
return false;
}
+
+ function appendFinish( $toAppendPath ){
+ return false;
+ }
+
function publishBatch( $triplets, $flags = 0 ) {
return false;
}
+
function deleteBatch( $sourceDestPairs ) {
return false;
}
-
function fileExistsBatch( $files, $flags = 0 ) {
$results = array();
foreach ( $files as $k => $f ) {
@@ -110,7 +120,7 @@ class ForeignAPIRepo extends FileRepo {
$results[$k] = true;
unset( $files[$k] );
} elseif( self::isVirtualUrl( $f ) ) {
- # TODO! FIXME! We need to be able to handle virtual
+ # @todo FIXME: We need to be able to handle virtual
# URLs better, at least when we know they refer to the
# same repo.
$results[$k] = false;
@@ -129,6 +139,7 @@ class ForeignAPIRepo extends FileRepo {
}
return $results;
}
+
function getFileProps( $virtualUrl ) {
return false;
}
@@ -197,12 +208,13 @@ class ForeignAPIRepo extends FileRepo {
return $ret;
}
- function getThumbUrl( $name, $width=-1, $height=-1, &$result=NULL ) {
+ function getThumbUrl( $name, $width = -1, $height = -1, &$result = null, $otherParams = '' ) {
$data = $this->fetchImageQuery( array(
'titles' => 'File:' . $name,
'iiprop' => 'url|timestamp',
'iiurlwidth' => $width,
'iiurlheight' => $height,
+ 'iiurlparam' => $otherParams,
'prop' => 'imageinfo' ) );
$info = $this->getImageInfo( $data );
@@ -215,7 +227,7 @@ class ForeignAPIRepo extends FileRepo {
}
}
- /*
+ /**
* Return the imageurl from cache if possible
*
* If the url has been requested today, get it from cache
@@ -224,15 +236,17 @@ class ForeignAPIRepo extends FileRepo {
* @param $name String is a dbkey form of a title
* @param $width
* @param $height
+ * @param String $param Other rendering parameters (page number, etc) from handler's makeParamString.
*/
- function getThumbUrlFromCache( $name, $width, $height ) {
+ function getThumbUrlFromCache( $name, $width, $height, $params="" ) {
global $wgMemc;
if ( !$this->canCacheThumbs() ) {
- return $this->getThumbUrl( $name, $width, $height );
+ $result = null; // can't pass "null" by reference, but it's ok as default value
+ return $this->getThumbUrl( $name, $width, $height, $result, $params );
}
$key = $this->getLocalCacheKey( 'ForeignAPIRepo', 'ThumbUrl', $name );
- $sizekey = "$width:$height";
+ $sizekey = "$width:$height:$params";
/* Get the array of urls that we already know */
$knownThumbUrls = $wgMemc->get($key);
@@ -241,14 +255,15 @@ class ForeignAPIRepo extends FileRepo {
$knownThumbUrls = array();
} else {
if( isset( $knownThumbUrls[$sizekey] ) ) {
- wfDebug("Got thumburl from local cache. {$knownThumbUrls[$sizekey]} \n");
+ wfDebug( __METHOD__ . ': Got thumburl from local cache: ' .
+ "{$knownThumbUrls[$sizekey]} \n");
return $knownThumbUrls[$sizekey];
}
/* This size is not yet known */
}
$metadata = null;
- $foreignUrl = $this->getThumbUrl( $name, $width, $height, $metadata );
+ $foreignUrl = $this->getThumbUrl( $name, $width, $height, $metadata, $params );
if( !$foreignUrl ) {
wfDebug( __METHOD__ . " Could not find thumburl\n" );
@@ -273,7 +288,7 @@ class ForeignAPIRepo extends FileRepo {
$diff = abs( $modified - $current );
if( $remoteModified < $modified && $diff < $this->fileCacheExpiry ) {
/* Use our current and already downloaded thumbnail */
- $knownThumbUrls["$width:$height"] = $localUrl;
+ $knownThumbUrls[$sizekey] = $localUrl;
$wgMemc->set( $key, $knownThumbUrls, $this->apiThumbCacheExpiry );
return $localUrl;
}
@@ -291,7 +306,7 @@ class ForeignAPIRepo extends FileRepo {
}
}
- # FIXME: Delete old thumbs that aren't being used. Maintenance script?
+ # @todo FIXME: Delete old thumbs that aren't being used. Maintenance script?
wfSuppressWarnings();
if( !file_put_contents( $localFilename, $thumb ) ) {
wfRestoreWarnings();
@@ -355,7 +370,7 @@ class ForeignAPIRepo extends FileRepo {
public static function httpGet( $url, $timeout = 'default', $options = array() ) {
$options['timeout'] = $timeout;
/* Http::get */
- $url = wfExpandUrl( $url );
+ $url = wfExpandUrl( $url, PROTO_HTTP );
wfDebug( "ForeignAPIRepo: HTTP GET: $url\n" );
$options['method'] = "GET";
diff --git a/includes/filerepo/ForeignDBFile.php b/includes/filerepo/ForeignDBFile.php
index 5f04ea73..09bee39c 100644
--- a/includes/filerepo/ForeignDBFile.php
+++ b/includes/filerepo/ForeignDBFile.php
@@ -12,6 +12,13 @@
* @ingroup FileRepo
*/
class ForeignDBFile extends LocalFile {
+
+ /**
+ * @param $title
+ * @param $repo
+ * @param $unused
+ * @return ForeignDBFile
+ */
static function newFromTitle( $title, $repo, $unused = null ) {
return new self( $title, $repo );
}
@@ -19,6 +26,11 @@ class ForeignDBFile extends LocalFile {
/**
* Create a ForeignDBFile from a title
* Do not call this except from inside a repo class.
+ *
+ * @param $row
+ * @param $repo
+ *
+ * @return ForeignDBFile
*/
static function newFromRow( $row, $repo ) {
$title = Title::makeTitle( NS_FILE, $row->img_name );
@@ -35,21 +47,30 @@ class ForeignDBFile extends LocalFile {
$watch = false, $timestamp = false ) {
$this->readOnlyError();
}
+
function restore( $versions = array(), $unsuppress = false ) {
$this->readOnlyError();
}
+
function delete( $reason, $suppress = false ) {
$this->readOnlyError();
}
+
function move( $target ) {
$this->readOnlyError();
}
-
+
+ /**
+ * @return string
+ */
function getDescriptionUrl() {
// Restore remote behaviour
return File::getDescriptionUrl();
}
+ /**
+ * @return string
+ */
function getDescriptionText() {
// Restore remote behaviour
return File::getDescriptionText();
diff --git a/includes/filerepo/ForeignDBRepo.php b/includes/filerepo/ForeignDBRepo.php
index a756703f..0311ebcd 100644
--- a/includes/filerepo/ForeignDBRepo.php
+++ b/includes/filerepo/ForeignDBRepo.php
@@ -35,14 +35,14 @@ class ForeignDBRepo extends LocalRepo {
function getMasterDB() {
if ( !isset( $this->dbConn ) ) {
- $this->dbConn = DatabaseBase::newFromType( $this->dbType,
+ $this->dbConn = DatabaseBase::factory( $this->dbType,
array(
'host' => $this->dbServer,
'user' => $this->dbUser,
'password' => $this->dbPassword,
'dbname' => $this->dbName,
'flags' => $this->dbFlags,
- 'tableprefix' => $this->tablePrefix
+ 'tablePrefix' => $this->tablePrefix
)
);
}
diff --git a/includes/filerepo/Image.php b/includes/filerepo/Image.php
deleted file mode 100644
index 59a07ef9..00000000
--- a/includes/filerepo/Image.php
+++ /dev/null
@@ -1,80 +0,0 @@
-<?php
-/**
- * Backward compatibility code for MW < 1.11
- *
- * @file
- */
-
-/**
- * Backwards compatibility class
- *
- * @deprecated. Will be removed in 1.18!
- * @ingroup FileRepo
- */
-class Image extends LocalFile {
- function __construct( $title ) {
- wfDeprecated( __METHOD__ );
- $repo = RepoGroup::singleton()->getLocalRepo();
- parent::__construct( $title, $repo );
- }
-
- /**
- * Wrapper for wfFindFile(), for backwards-compatibility only
- * Do not use in core code.
- * @deprecated
- */
- static function newFromTitle( $title, $repo, $time = null ) {
- wfDeprecated( __METHOD__ );
- $img = wfFindFile( $title, array( 'time' => $time ) );
- if ( !$img ) {
- $img = wfLocalFile( $title );
- }
- return $img;
- }
-
- /**
- * Wrapper for wfFindFile(), for backwards-compatibility only.
- * Do not use in core code.
- *
- * @param $name String: name of the image, used to create a title object using Title::makeTitleSafe
- * @return image object or null if invalid title
- * @deprecated
- */
- static function newFromName( $name ) {
- wfDeprecated( __METHOD__ );
- $title = Title::makeTitleSafe( NS_FILE, $name );
- if ( is_object( $title ) ) {
- $img = wfFindFile( $title );
- if ( !$img ) {
- $img = wfLocalFile( $title );
- }
- return $img;
- } else {
- return null;
- }
- }
-
- /**
- * Return the URL of an image, provided its name.
- *
- * Backwards-compatibility for extensions.
- * Note that fromSharedDirectory will only use the shared path for files
- * that actually exist there now, and will return local paths otherwise.
- *
- * @param $name String: name of the image, without the leading "Image:"
- * @param $fromSharedDirectory Boolean: Should this be in $wgSharedUploadPath?
- * @return string URL of $name image
- * @deprecated
- */
- static function imageUrl( $name, $fromSharedDirectory = false ) {
- wfDeprecated( __METHOD__ );
- $image = null;
- if( $fromSharedDirectory ) {
- $image = wfFindFile( $name );
- }
- if( !$image ) {
- $image = wfLocalFile( $name );
- }
- return $image->getUrl();
- }
-}
diff --git a/includes/filerepo/LocalFile.php b/includes/filerepo/LocalFile.php
index 5489ecb2..14da9122 100644
--- a/includes/filerepo/LocalFile.php
+++ b/includes/filerepo/LocalFile.php
@@ -33,7 +33,7 @@ class LocalFile extends File {
* @private
*/
var
- $fileExists, # does the file file exist on disk? (loadFromXxx)
+ $fileExists, # does the file exist on disk? (loadFromXxx)
$historyLine, # Number of line to return by nextHistoryLine() (constructor)
$historyRes, # result of the query for the file's history (nextHistoryLine)
$width, # \
@@ -63,6 +63,12 @@ class LocalFile extends File {
* Do not call this except from inside a repo class.
*
* Note: $unused param is only here to avoid an E_STRICT
+ *
+ * @param $title
+ * @param $repo
+ * @param $unused
+ *
+ * @return LocalFile
*/
static function newFromTitle( $title, $repo, $unused = null ) {
return new self( $title, $repo );
@@ -71,6 +77,11 @@ class LocalFile extends File {
/**
* Create a LocalFile from a title
* Do not call this except from inside a repo class.
+ *
+ * @param $row
+ * @param $repo
+ *
+ * @return LocalFile
*/
static function newFromRow( $row, $repo ) {
$title = Title::makeTitle( NS_FILE, $row->img_name );
@@ -83,17 +94,22 @@ class LocalFile extends File {
/**
* Create a LocalFile from a SHA-1 key
* Do not call this except from inside a repo class.
+ *
+ * @param $sha1 string base-36 SHA-1
+ * @param $repo LocalRepo
+ * @param string|bool $timestamp MW_timestamp (optional)
+ *
+ * @return bool|LocalFile
*/
static function newFromKey( $sha1, $repo, $timestamp = false ) {
- $conds = array( 'img_sha1' => $sha1 );
+ $dbr = $repo->getSlaveDB();
+ $conds = array( 'img_sha1' => $sha1 );
if ( $timestamp ) {
- $conds['img_timestamp'] = $timestamp;
+ $conds['img_timestamp'] = $dbr->timestamp( $timestamp );
}
- $dbr = $repo->getSlaveDB();
$row = $dbr->selectRow( 'image', self::selectFields(), $conds, __METHOD__ );
-
if ( $row ) {
return self::newFromRow( $row, $repo );
} else {
@@ -333,6 +349,7 @@ class LocalFile extends File {
* Upgrade a row if it needs it
*/
function maybeUpgradeRow() {
+ global $wgUpdateCompatibleMetadata;
if ( wfReadOnly() ) {
return;
}
@@ -344,9 +361,14 @@ class LocalFile extends File {
$this->upgraded = true;
} else {
$handler = $this->getHandler();
- if ( $handler && !$handler->isMetadataValid( $this, $this->metadata ) ) {
- $this->upgradeRow();
- $this->upgraded = true;
+ if ( $handler ) {
+ $validity = $handler->isMetadataValid( $this, $this->metadata );
+ if ( $validity === MediaHandler::METADATA_BAD
+ || ( $validity === MediaHandler::METADATA_COMPATIBLE && $wgUpdateCompatibleMetadata )
+ ) {
+ $this->upgradeRow();
+ $this->upgraded = true;
+ }
}
}
}
@@ -540,8 +562,8 @@ class LocalFile extends File {
/** isTrustedFile inherited */
/**
- * Returns true if the file file exists on disk.
- * @return boolean Whether file file exist on disk.
+ * Returns true if the file exists on disk.
+ * @return boolean Whether file exist on disk.
*/
public function exists() {
$this->load();
@@ -552,7 +574,6 @@ class LocalFile extends File {
/** getUnscaledThumb inherited */
/** thumbName inherited */
/** createThumb inherited */
- /** getThumbnail inherited */
/** transform inherited */
/**
@@ -591,12 +612,19 @@ class LocalFile extends File {
/**
* Get all thumbnail names previously generated for this file
+ * @param $archiveName string|false Name of an archive file
+ * @return array first element is the base dir, then files in that base dir.
*/
- function getThumbnails() {
+ function getThumbnails( $archiveName = false ) {
$this->load();
+ if ( $archiveName ) {
+ $dir = $this->getArchiveThumbPath( $archiveName );
+ } else {
+ $dir = $this->getThumbPath();
+ }
$files = array();
- $dir = $this->getThumbPath();
+ $files[] = $dir;
if ( is_dir( $dir ) ) {
$handle = opendir( $dir );
@@ -633,6 +661,11 @@ class LocalFile extends File {
$hashedName = md5( $this->getName() );
$oldKey = $this->repo->getSharedCacheKey( 'oldfile', $hashedName );
+ // Must purge thumbnails for old versions too! bug 30192
+ foreach( $this->getHistory() as $oldFile ) {
+ $oldFile->purgeThumbnails();
+ }
+
if ( $oldKey ) {
$wgMemc->delete( $oldKey );
}
@@ -653,32 +686,76 @@ class LocalFile extends File {
}
/**
- * Delete cached transformed files
+ * Delete cached transformed files for archived files
+ * @param $archiveName string name of the archived file
*/
- function purgeThumbnails() {
+ function purgeOldThumbnails( $archiveName ) {
global $wgUseSquid;
+ // get a list of old thumbnails and URLs
+ $files = $this->getThumbnails( $archiveName );
+ $dir = array_shift( $files );
+ $this->purgeThumbList( $dir, $files );
- // Delete thumbnails
- $files = $this->getThumbnails();
- $dir = $this->getThumbPath();
- $urls = array();
+ // Directory should be empty, delete it too. This will probably suck on
+ // something like NFS or if the directory isn't actually empty, so hide
+ // the warnings :D
+ wfSuppressWarnings();
+ if( !rmdir( $dir ) ) {
+ wfDebug( __METHOD__ . ": unable to remove archive directory: $dir\n" );
+ }
+ wfRestoreWarnings();
- foreach ( $files as $file ) {
- # Check that the base file name is part of the thumb name
- # This is a basic sanity check to avoid erasing unrelated directories
- if ( strpos( $file, $this->getName() ) !== false ) {
- $url = $this->getThumbUrl( $file );
- $urls[] = $url;
- @unlink( "$dir/$file" );
+ // Purge the squid
+ if ( $wgUseSquid ) {
+ $urls = array();
+ foreach( $files as $file ) {
+ $urls[] = $this->getArchiveThumbUrl( $archiveName, $file );
}
+ SquidUpdate::purge( $urls );
}
+ }
+
+
+ /**
+ * Delete cached transformed files for the current version only.
+ */
+ function purgeThumbnails() {
+ global $wgUseSquid;
+ // get a list of thumbnails and URLs
+ $files = $this->getThumbnails();
+ $dir = array_shift( $files );
+ $this->purgeThumbList( $dir, $files );
// Purge the squid
if ( $wgUseSquid ) {
+ $urls = array();
+ foreach( $files as $file ) {
+ $urls[] = $this->getThumbUrl( $file );
+ }
SquidUpdate::purge( $urls );
}
}
+ /**
+ * Delete a list of thumbnails visible at urls
+ * @param $dir string base dir of the files.
+ * @param $files array of strings: relative filenames (to $dir)
+ */
+ function purgeThumbList($dir, $files) {
+ global $wgExcludeFromThumbnailPurge;
+
+ wfDebug( __METHOD__ . ": " . var_export( $files, true ) . "\n" );
+ foreach ( $files as $file ) {
+ # Check that the base file name is part of the thumb name
+ # This is a basic sanity check to avoid erasing unrelated directories
+ if ( strpos( $file, $this->getName() ) !== false ) {
+ wfSuppressWarnings();
+ unlink( "$dir/$file" );
+ wfRestoreWarnings();
+ }
+ }
+ }
+
/** purgeDescription inherited */
/** purgeEverything inherited */
@@ -786,7 +863,6 @@ class LocalFile extends File {
/** getRel inherited */
/** getUrlRel inherited */
/** getArchiveRel inherited */
- /** getThumbRel inherited */
/** getArchivePath inherited */
/** getThumbPath inherited */
/** getArchiveUrl inherited */
@@ -828,7 +904,6 @@ class LocalFile extends File {
/**
* Record a file upload in the upload log and the image table
- * @deprecated use upload()
*/
function recordUpload( $oldver, $desc, $license = '', $copyStatus = '', $source = '',
$watch = false, $timestamp = false )
@@ -844,7 +919,6 @@ class LocalFile extends File {
$wgUser->addWatch( $this->getTitle() );
}
return true;
-
}
/**
@@ -883,7 +957,7 @@ class LocalFile extends File {
# Fail now if the file isn't there
if ( !$this->fileExists ) {
- wfDebug( __METHOD__ . ": File " . $this->getPath() . " went missing!\n" );
+ wfDebug( __METHOD__ . ": File " . $this->getRel() . " went missing!\n" );
return false;
}
@@ -961,8 +1035,10 @@ class LocalFile extends File {
} else {
# This is a new file
# Update the image count
+ $dbw->begin();
$site_stats = $dbw->tableName( 'site_stats' );
$dbw->query( "UPDATE $site_stats SET ss_images=ss_images+1", __METHOD__ );
+ $dbw->commit();
}
$descTitle = $this->getTitle();
@@ -1036,16 +1112,32 @@ class LocalFile extends File {
*
* @param $srcPath String: local filesystem path to the source image
* @param $flags Integer: a bitwise combination of:
- * File::DELETE_SOURCE Delete the source file, i.e. move
- * rather than copy
+ * File::DELETE_SOURCE Delete the source file, i.e. move rather than copy
* @return FileRepoStatus object. On success, the value member contains the
* archive name, or an empty string if it was a new file.
*/
function publish( $srcPath, $flags = 0 ) {
+ return $this->publishTo( $srcPath, $this->getRel(), $flags );
+ }
+
+ /**
+ * Move or copy a file to a specified location. Returns a FileRepoStatus
+ * object with the archive name in the "value" member on success.
+ *
+ * The archive name should be passed through to recordUpload for database
+ * registration.
+ *
+ * @param $srcPath String: local filesystem path to the source image
+ * @param $dstRel String: target relative path
+ * @param $flags Integer: a bitwise combination of:
+ * File::DELETE_SOURCE Delete the source file, i.e. move rather than copy
+ * @return FileRepoStatus object. On success, the value member contains the
+ * archive name, or an empty string if it was a new file.
+ */
+ function publishTo( $srcPath, $dstRel, $flags = 0 ) {
$this->lock();
- $dstRel = $this->getRel();
- $archiveName = gmdate( 'YmdHis' ) . '!' . $this->getName();
+ $archiveName = wfTimestamp( TS_MW ) . '!'. $this->getName();
$archiveRel = 'archive/' . $this->getHashPath() . $archiveName;
$flags = $flags & File::DELETE_SOURCE ? LocalRepo::DELETE_SOURCE : 0;
$status = $this->repo->publish( $srcPath, $dstRel, $archiveRel, $flags );
@@ -1130,6 +1222,7 @@ class LocalFile extends File {
array( 'oi_name' => $this->getName() ) );
foreach ( $result as $row ) {
$batch->addOld( $row->oi_archive_name );
+ $this->purgeOldThumbnails( $row->oi_archive_name );
}
$status = $batch->execute();
@@ -1164,6 +1257,7 @@ class LocalFile extends File {
$batch = new LocalFileDeleteBatch( $this, $reason, $suppress );
$batch->addOld( $archiveName );
+ $this->purgeOldThumbnails( $archiveName );
$status = $batch->execute();
$this->unlock();
@@ -1198,7 +1292,7 @@ class LocalFile extends File {
$status = $batch->execute();
- if ( !$status->ok ) {
+ if ( !$status->isGood() ) {
return $status;
}
@@ -1312,7 +1406,13 @@ class LocalFile extends File {
* @ingroup FileRepo
*/
class LocalFileDeleteBatch {
- var $file, $reason, $srcRels = array(), $archiveUrls = array(), $deletionBatch, $suppress;
+
+ /**
+ * @var LocalFile
+ */
+ var $file;
+
+ var $reason, $srcRels = array(), $archiveUrls = array(), $deletionBatch, $suppress;
var $status;
function __construct( File $file, $reason = '', $suppress = false ) {
@@ -1344,7 +1444,7 @@ class LocalFileDeleteBatch {
return array( $oldRels, $deleteCurrent );
}
- /*protected*/ function getHashes() {
+ protected function getHashes() {
$hashes = array();
list( $oldRels, $deleteCurrent ) = $this->getOldRels();
@@ -1623,7 +1723,12 @@ class LocalFileDeleteBatch {
* @ingroup FileRepo
*/
class LocalFileRestoreBatch {
- var $file, $cleanupBatch, $ids, $all, $unsuppress = false;
+ /**
+ * @var LocalFile
+ */
+ var $file;
+
+ var $cleanupBatch, $ids, $all, $unsuppress = false;
function __construct( File $file, $unsuppress = false ) {
$this->file = $file;
@@ -1827,9 +1932,11 @@ class LocalFileRestoreBatch {
$storeStatus = $this->file->repo->storeBatch( $storeBatch, FileRepo::OVERWRITE_SAME );
$status->merge( $storeStatus );
- if ( !$status->ok ) {
- // Store batch returned a critical error -- this usually means nothing was stored
- // Stop now and return an error
+ if ( !$status->isGood() ) {
+ // Even if some files could be copied, fail entirely as that is the
+ // easiest thing to do without data loss
+ $this->cleanupFailedBatch( $storeStatus, $storeBatch );
+ $status->ok = false;
$this->file->unlock();
return $status;
@@ -1934,6 +2041,27 @@ class LocalFileRestoreBatch {
return $status;
}
+
+ /**
+ * Cleanup a failed batch. The batch was only partially successful, so
+ * rollback by removing all items that were succesfully copied.
+ *
+ * @param Status $storeStatus
+ * @param array $storeBatch
+ */
+ function cleanupFailedBatch( $storeStatus, $storeBatch ) {
+ $cleanupBatch = array();
+
+ foreach ( $storeStatus->success as $i => $success ) {
+ // Check if this item of the batch was successfully copied
+ if ( $success ) {
+ // Item was successfully copied and needs to be removed again
+ // Extract ($dstZone, $dstRel) from the batch
+ $cleanupBatch[] = array( $storeBatch[$i][1], $storeBatch[$i][2] );
+ }
+ }
+ $this->file->repo->cleanupBatch( $cleanupBatch );
+ }
}
# ------------------------------------------------------------------------------
@@ -1983,14 +2111,14 @@ class LocalFileMoveBatch {
$bits = explode( '!', $oldName, 2 );
if ( count( $bits ) != 2 ) {
- wfDebug( "Invalid old file name: $oldName \n" );
+ wfDebug( "Old file name missing !: '$oldName' \n" );
continue;
}
list( $timestamp, $filename ) = $bits;
if ( $this->oldName != $filename ) {
- wfDebug( "Invalid old file name: $oldName \n" );
+ wfDebug( "Old file name doesn't match: '$oldName' \n" );
continue;
}
@@ -2017,15 +2145,31 @@ class LocalFileMoveBatch {
$triplets = $this->getMoveTriplets();
$triplets = $this->removeNonexistentFiles( $triplets );
- $statusDb = $this->doDBUpdates();
- wfDebugLog( 'imagemove', "Renamed {$this->file->name} in database: {$statusDb->successCount} successes, {$statusDb->failCount} failures" );
- $statusMove = $repo->storeBatch( $triplets, FSRepo::DELETE_SOURCE );
- wfDebugLog( 'imagemove', "Moved files for {$this->file->name}: {$statusMove->successCount} successes, {$statusMove->failCount} failures" );
- if ( !$statusMove->isOk() ) {
+ // Copy the files into their new location
+ $statusMove = $repo->storeBatch( $triplets );
+ wfDebugLog( 'imagemove', "Moved files for {$this->file->name}: {$statusMove->successCount} successes, {$statusMove->failCount} failures" );
+ if ( !$statusMove->isGood() ) {
wfDebugLog( 'imagemove', "Error in moving files: " . $statusMove->getWikiText() );
+ $this->cleanupTarget( $triplets );
+ $statusMove->ok = false;
+ return $statusMove;
+ }
+
+ $this->db->begin();
+ $statusDb = $this->doDBUpdates();
+ wfDebugLog( 'imagemove', "Renamed {$this->file->name} in database: {$statusDb->successCount} successes, {$statusDb->failCount} failures" );
+ if ( !$statusDb->isGood() ) {
$this->db->rollback();
+ // Something went wrong with the DB updates, so remove the target files
+ $this->cleanupTarget( $triplets );
+ $statusDb->ok = false;
+ return $statusDb;
}
+ $this->db->commit();
+
+ // Everything went ok, remove the source files
+ $this->cleanupSource( $triplets );
$status->merge( $statusDb );
$status->merge( $statusMove );
@@ -2056,6 +2200,8 @@ class LocalFileMoveBatch {
$status->successCount++;
} else {
$status->failCount++;
+ $status->fatal( 'imageinvalidfilename' );
+ return $status;
}
// Update old images
@@ -2073,6 +2219,9 @@ class LocalFileMoveBatch {
$total = $this->oldCount;
$status->successCount += $affected;
$status->failCount += $total - $affected;
+ if ( $status->failCount ) {
+ $status->error( 'imageinvalidfilename' );
+ }
return $status;
}
@@ -2117,4 +2266,32 @@ class LocalFileMoveBatch {
return $filteredTriplets;
}
+
+ /**
+ * Cleanup a partially moved array of triplets by deleting the target
+ * files. Called if something went wrong half way.
+ */
+ function cleanupTarget( $triplets ) {
+ // Create dest pairs from the triplets
+ $pairs = array();
+ foreach ( $triplets as $triplet ) {
+ $pairs[] = array( $triplet[1], $triplet[2] );
+ }
+
+ $this->file->repo->cleanupBatch( $pairs );
+ }
+
+ /**
+ * Cleanup a fully moved array of triplets by deleting the source files.
+ * Called at the end of the move process if everything else went ok.
+ */
+ function cleanupSource( $triplets ) {
+ // Create source file names from the triplets
+ $files = array();
+ foreach ( $triplets as $triplet ) {
+ $files[] = $triplet[0];
+ }
+
+ $this->file->repo->cleanupBatch( $files );
+ }
}
diff --git a/includes/filerepo/LocalRepo.php b/includes/filerepo/LocalRepo.php
index 02883c53..9089f4d7 100644
--- a/includes/filerepo/LocalRepo.php
+++ b/includes/filerepo/LocalRepo.php
@@ -20,6 +20,11 @@ class LocalRepo extends FSRepo {
var $fileFromRowFactory = array( 'LocalFile', 'newFromRow' );
var $oldFileFromRowFactory = array( 'OldLocalFile', 'newFromRow' );
+ /**
+ * @throws MWException
+ * @param $row
+ * @return File
+ */
function newFileFromRow( $row ) {
if ( isset( $row->img_name ) ) {
return call_user_func( $this->fileFromRowFactory, $row, $this );
@@ -30,6 +35,11 @@ class LocalRepo extends FSRepo {
}
}
+ /**
+ * @param $title
+ * @param $archiveName
+ * @return OldLocalFile
+ */
function newFromArchiveName( $title, $archiveName ) {
return OldLocalFile::newFromArchiveName( $title, $this, $archiveName );
}
@@ -39,13 +49,16 @@ class LocalRepo extends FSRepo {
* filearchive table. This needs to be done in the repo because it needs to
* interleave database locks with file operations, which is potentially a
* remote operation.
+ *
+ * @param $storageKeys array
+ *
* @return FileRepoStatus
*/
function cleanupDeletedBatch( $storageKeys ) {
$root = $this->getZonePath( 'deleted' );
$dbw = $this->getMasterDB();
$status = $this->newGood();
- $storageKeys = array_unique($storageKeys);
+ $storageKeys = array_unique( $storageKeys );
foreach ( $storageKeys as $key ) {
$hashPath = $this->getDeletedHashPath( $key );
$path = "$root/$hashPath$key";
@@ -54,8 +67,8 @@ class LocalRepo extends FSRepo {
array( 'fa_storage_group' => 'deleted', 'fa_storage_key' => $key ),
__METHOD__, array( 'FOR UPDATE' ) );
if( !$inuse ) {
- $sha1 = substr( $key, 0, strcspn( $key, '.' ) );
- $ext = substr( $key, strcspn($key,'.') + 1 );
+ $sha1 = self::getHashFromKey( $key );
+ $ext = substr( $key, strcspn( $key, '.' ) + 1 );
$ext = File::normalizeExtension($ext);
$inuse = $dbw->selectField( 'oldimage', '1',
array( 'oi_sha1' => $sha1,
@@ -65,7 +78,10 @@ class LocalRepo extends FSRepo {
}
if ( !$inuse ) {
wfDebug( __METHOD__ . ": deleting $key\n" );
- if ( !@unlink( $path ) ) {
+ wfSuppressWarnings();
+ $unlink = unlink( $path );
+ wfRestoreWarnings();
+ if ( !$unlink ) {
$status->error( 'undelete-cleanup-error', $path );
$status->failCount++;
}
@@ -77,6 +93,16 @@ class LocalRepo extends FSRepo {
}
return $status;
}
+
+ /**
+ * Gets the SHA1 hash from a storage key
+ *
+ * @param string $key
+ * @return string
+ */
+ public static function getHashFromKey( $key ) {
+ return strtok( $key, '.' );
+ }
/**
* Checks if there is a redirect named as $title
@@ -87,7 +113,7 @@ class LocalRepo extends FSRepo {
global $wgMemc;
if( is_string( $title ) ) {
- $title = Title::newFromTitle( $title );
+ $title = Title::newFromText( $title );
}
if( $title instanceof Title && $title->getNamespace() == NS_MEDIA ) {
$title = Title::makeTitle( NS_FILE, $title->getText() );
@@ -135,6 +161,7 @@ class LocalRepo extends FSRepo {
/**
* Function link Title::getArticleID().
* We can't say Title object, what database it should use, so we duplicate that function here.
+ * @param $title Title
*/
protected function getArticleID( $title ) {
if( !$title instanceof Title ) {
diff --git a/includes/filerepo/NullRepo.php b/includes/filerepo/NullRepo.php
index d5a1ee03..cac3e5d8 100644
--- a/includes/filerepo/NullRepo.php
+++ b/includes/filerepo/NullRepo.php
@@ -23,6 +23,9 @@ class NullRepo extends FileRepo {
function append( $srcPath, $toAppendPath, $flags = 0 ){
return false;
}
+ function appendFinish( $toAppendPath ){
+ return false;
+ }
function publishBatch( $triplets, $flags = 0 ) {
return false;
}
diff --git a/includes/filerepo/OldLocalFile.php b/includes/filerepo/OldLocalFile.php
index 9efe998f..bcb22c17 100644
--- a/includes/filerepo/OldLocalFile.php
+++ b/includes/filerepo/OldLocalFile.php
@@ -1,6 +1,6 @@
<?php
/**
- * Old file in the in the oldimage table
+ * Old file in the oldimage table
*
* @file
* @ingroup FileRepo
@@ -19,8 +19,9 @@ class OldLocalFile extends LocalFile {
static function newFromTitle( $title, $repo, $time = null ) {
# The null default value is only here to avoid an E_STRICT
- if( $time === null )
+ if ( $time === null ) {
throw new MWException( __METHOD__.' got null for $time parameter' );
+ }
return new self( $title, $repo, $time, null );
}
@@ -34,15 +35,27 @@ class OldLocalFile extends LocalFile {
$file->loadFromRow( $row, 'oi_' );
return $file;
}
-
+
+ /**
+ * Create a OldLocalFile from a SHA-1 key
+ * Do not call this except from inside a repo class.
+ *
+ * @param $sha1 string base-36 SHA-1
+ * @param $repo LocalRepo
+ * @param string|bool $timestamp MW_timestamp (optional)
+ *
+ * @return bool|OldLocalFile
+ */
static function newFromKey( $sha1, $repo, $timestamp = false ) {
+ $dbr = $repo->getSlaveDB();
+
$conds = array( 'oi_sha1' => $sha1 );
- if( $timestamp ) {
- $conds['oi_timestamp'] = $timestamp;
+ if ( $timestamp ) {
+ $conds['oi_timestamp'] = $dbr->timestamp( $timestamp );
}
- $dbr = $repo->getSlaveDB();
+
$row = $dbr->selectRow( 'oldimage', self::selectFields(), $conds, __METHOD__ );
- if( $row ) {
+ if ( $row ) {
return self::newFromRow( $row, $repo );
} else {
return false;
@@ -205,4 +218,77 @@ class OldLocalFile extends LocalFile {
$this->load();
return Revision::userCanBitfield( $this->deleted, $field );
}
+
+ /**
+ * Upload a file directly into archive. Generally for Special:Import.
+ *
+ * @param $srcPath string File system path of the source file
+ * @param $archiveName string Full archive name of the file, in the form
+ * $timestamp!$filename, where $filename must match $this->getName()
+ *
+ * @return FileRepoStatus
+ */
+ function uploadOld( $srcPath, $archiveName, $timestamp, $comment, $user, $flags = 0 ) {
+ $this->lock();
+
+ $dstRel = 'archive/' . $this->getHashPath() . $archiveName;
+ $status = $this->publishTo( $srcPath, $dstRel,
+ $flags & File::DELETE_SOURCE ? FileRepo::DELETE_SOURCE : 0
+ );
+
+ if ( $status->isGood() ) {
+ if ( !$this->recordOldUpload( $srcPath, $archiveName, $timestamp, $comment, $user ) ) {
+ $status->fatal( 'filenotfound', $srcPath );
+ }
+ }
+
+ $this->unlock();
+
+ return $status;
+ }
+
+ /**
+ * Record a file upload in the oldimage table, without adding log entries.
+ *
+ * @param $srcPath string File system path to the source file
+ * @param $archiveName string The archive name of the file
+ * @param $comment string Upload comment
+ * @param $user User User who did this upload
+ * @return bool
+ */
+ function recordOldUpload( $srcPath, $archiveName, $timestamp, $comment, $user ) {
+ $dbw = $this->repo->getMasterDB();
+ $dbw->begin();
+
+ $dstPath = $this->repo->getZonePath( 'public' ) . '/' . $this->getRel();
+ $props = self::getPropsFromPath( $dstPath );
+ if ( !$props['fileExists'] ) {
+ return false;
+ }
+
+ $dbw->insert( 'oldimage',
+ array(
+ 'oi_name' => $this->getName(),
+ 'oi_archive_name' => $archiveName,
+ 'oi_size' => $props['size'],
+ 'oi_width' => intval( $props['width'] ),
+ 'oi_height' => intval( $props['height'] ),
+ 'oi_bits' => $props['bits'],
+ 'oi_timestamp' => $dbw->timestamp( $timestamp ),
+ 'oi_description' => $comment,
+ 'oi_user' => $user->getId(),
+ 'oi_user_text' => $user->getName(),
+ 'oi_metadata' => $props['metadata'],
+ 'oi_media_type' => $props['media_type'],
+ 'oi_major_mime' => $props['major_mime'],
+ 'oi_minor_mime' => $props['minor_mime'],
+ 'oi_sha1' => $props['sha1'],
+ ), __METHOD__
+ );
+
+ $dbw->commit();
+
+ return true;
+ }
+
}
diff --git a/includes/filerepo/README b/includes/filerepo/README
index d3aea9f0..db46ff8a 100644
--- a/includes/filerepo/README
+++ b/includes/filerepo/README
@@ -39,3 +39,21 @@ LocalRepo.php. LocalRepo provides only file access, and LocalFile provides
database access and higher-level functions such as cache management.
Tim Starling, June 2007
+
+Structure:
+
+File.php defines an abstract class File.
+ ForeignAPIFile.php extends File.
+ LocalFile.php extends File.
+ ForeignDBFile.php extends LocalFile
+ Image.php extends LocalFile
+ UnregisteredLocalFile.php extends File.
+FileRepo.php defined an abstract class FileRepo.
+ ForeignAPIRepo.php extends FileRepo
+ FSRepo extends FileRepo
+ LocalRepo.php extends FSRepo
+ ForeignDBRepo.php extends LocalRepo
+ ForeignDBViaLBRepo.php extends LocalRepo
+ NullRepo extends FileRepo
+
+Russ Nelson, March 2011
diff --git a/includes/filerepo/RepoGroup.php b/includes/filerepo/RepoGroup.php
index b9996941..d4875908 100644
--- a/includes/filerepo/RepoGroup.php
+++ b/includes/filerepo/RepoGroup.php
@@ -16,16 +16,26 @@
* @ingroup FileRepo
*/
class RepoGroup {
- var $localRepo, $foreignRepos, $reposInitialised = false;
+
+ /**
+ * @var LocalRepo
+ */
+ var $localRepo;
+
+ var $foreignRepos, $reposInitialised = false;
var $localInfo, $foreignInfo;
var $cache;
+ /**
+ * @var RepoGroup
+ */
protected static $instance;
const MAX_CACHE_SIZE = 1000;
/**
* Get a RepoGroup instance. At present only one instance of RepoGroup is
* needed in a MediaWiki invocation, this may change in the future.
+ * @return RepoGroup
*/
static function singleton() {
if ( self::$instance ) {
@@ -46,6 +56,8 @@ class RepoGroup {
/**
* Set the singleton instance to a given object
+ *
+ * @param $instance RepoGroup
*/
static function setSingleton( $instance ) {
self::$instance = $instance;
@@ -70,8 +82,8 @@ class RepoGroup {
* Search repositories for an image.
* You can also use wfFindFile() to do this.
*
- * @param $title Mixed: Title object or string
- * @param $options Associative array of options:
+ * @param $title Title|string Title object or string
+ * @param $options array Associative array of options:
* time: requested time for an archived image, or false for the
* current version. An image object will be returned which was
* created at the specified time.
@@ -101,7 +113,7 @@ class RepoGroup {
}
if ( $title->getNamespace() != NS_MEDIA && $title->getNamespace() != NS_FILE ) {
- throw new MWException( __METHOD__ . ' recieved an Title object with incorrect namespace' );
+ throw new MWException( __METHOD__ . ' received an Title object with incorrect namespace' );
}
# Check the cache
@@ -204,14 +216,44 @@ class RepoGroup {
return false;
}
+ /**
+ * Find an instance of the file with this key, created at the specified time
+ * Returns false if the file does not exist.
+ *
+ * @param $hash String base 36 SHA-1 hash
+ * @param $options Option array, same as findFile()
+ * @return File object or false if it is not found
+ */
+ function findFileFromKey( $hash, $options = array() ) {
+ if ( !$this->reposInitialised ) {
+ $this->initialiseRepos();
+ }
+
+ $file = $this->localRepo->findFileFromKey( $hash, $options );
+ if ( !$file ) {
+ foreach ( $this->foreignRepos as $repo ) {
+ $file = $repo->findFileFromKey( $hash, $options );
+ if ( $file ) break;
+ }
+ }
+ return $file;
+ }
+
+ /**
+ * Find all instances of files with this key
+ *
+ * @param $hash String base 36 SHA-1 hash
+ * @return Array of File objects
+ */
function findBySha1( $hash ) {
if ( !$this->reposInitialised ) {
$this->initialiseRepos();
}
$result = $this->localRepo->findBySha1( $hash );
- foreach ( $this->foreignRepos as $repo )
+ foreach ( $this->foreignRepos as $repo ) {
$result = array_merge( $result, $repo->findBySha1( $hash ) );
+ }
return $result;
}
@@ -247,6 +289,8 @@ class RepoGroup {
/**
* Get the local repository, i.e. the one corresponding to the local image
* table. Files are typically uploaded to the local repository.
+ *
+ * @return LocalRepo
*/
function getLocalRepo() {
return $this->getRepo( 'local' );
@@ -307,7 +351,7 @@ class RepoGroup {
*/
function splitVirtualUrl( $url ) {
if ( substr( $url, 0, 9 ) != 'mwrepo://' ) {
- throw new MWException( __METHOD__.': unknown protoocl' );
+ throw new MWException( __METHOD__.': unknown protocol' );
}
$bits = explode( '/', substr( $url, 9 ), 3 );
diff --git a/includes/filerepo/UnregisteredLocalFile.php b/includes/filerepo/UnregisteredLocalFile.php
index 990a218c..2df9a9b5 100644
--- a/includes/filerepo/UnregisteredLocalFile.php
+++ b/includes/filerepo/UnregisteredLocalFile.php
@@ -19,16 +19,38 @@
* @ingroup FileRepo
*/
class UnregisteredLocalFile extends File {
- var $title, $path, $mime, $handler, $dims;
+ var $title, $path, $mime, $dims;
+ /**
+ * @var MediaHandler
+ */
+ var $handler;
+
+ /**
+ * @param $path
+ * @param $mime
+ * @return UnregisteredLocalFile
+ */
static function newFromPath( $path, $mime ) {
return new UnregisteredLocalFile( false, false, $path, $mime );
}
+ /**
+ * @param $title
+ * @param $repo
+ * @return UnregisteredLocalFile
+ */
static function newFromTitle( $title, $repo ) {
return new UnregisteredLocalFile( $title, $repo, false, false );
}
+ /**
+ * @throws MWException
+ * @param $title string
+ * @param $repo FSRepo
+ * @param $path string
+ * @param $mime string
+ */
function __construct( $title = false, $repo = false, $path = false, $mime = false ) {
if ( !( $title && $repo ) && !$path ) {
throw new MWException( __METHOD__.': not enough parameters, must specify title and repo, or a full path' );
diff --git a/includes/installer/CliInstaller.php b/includes/installer/CliInstaller.php
index 9e8fb2c5..2ae9d143 100644
--- a/includes/installer/CliInstaller.php
+++ b/includes/installer/CliInstaller.php
@@ -13,6 +13,7 @@
* @since 1.17
*/
class CliInstaller extends Installer {
+ private $specifiedScriptPath = false;
private $optionMap = array(
'dbtype' => 'wgDBtype',
@@ -45,6 +46,10 @@ class CliInstaller extends Installer {
parent::__construct();
+ if ( isset( $option['scriptpath'] ) ) {
+ $this->specifiedScriptPath = true;
+ }
+
foreach ( $this->optionMap as $opt => $global ) {
if ( isset( $option[$opt] ) ) {
$GLOBALS[$global] = $option[$opt];
@@ -81,7 +86,7 @@ class CliInstaller extends Installer {
$this->setVar( '_InstallUser',
$option['installdbuser'] );
$this->setVar( '_InstallPassword',
- $option['installdbpass'] );
+ isset( $option['installdbpass'] ) ? $option['installdbpass'] : "" );
}
if ( isset( $option['pass'] ) ) {
@@ -136,6 +141,8 @@ class CliInstaller extends Installer {
}
/**
+ * @param $params array
+ *
* @return string
*/
protected function getMessageText( $params ) {
@@ -168,4 +175,16 @@ class CliInstaller extends Installer {
exit;
}
}
+
+ public function envCheckPath( ) {
+ if ( !$this->specifiedScriptPath ) {
+ $this->showMessage( 'config-no-cli-uri', $this->getVar("wgScriptPath") );
+ }
+ return parent::envCheckPath();
+ }
+
+ public function dirIsExecutable( $dir, $url ) {
+ $this->showMessage( 'config-no-cli-uploads-check', $dir );
+ return false;
+ }
}
diff --git a/includes/installer/DatabaseInstaller.php b/includes/installer/DatabaseInstaller.php
index 0da24f8e..aadd6b49 100644
--- a/includes/installer/DatabaseInstaller.php
+++ b/includes/installer/DatabaseInstaller.php
@@ -157,7 +157,7 @@ abstract class DatabaseInstaller {
$this->db->setFlag( DBO_DDLMODE ); // For Oracle's handling of schema files
$this->db->begin( __METHOD__ );
- $error = $this->db->sourceFile( $this->db->getSchema() );
+ $error = $this->db->sourceFile( $this->db->getSchemaPath() );
if( $error !== true ) {
$this->db->reportQueryError( $error, 0, '', __METHOD__ );
$this->db->rollback( __METHOD__ );
@@ -181,26 +181,9 @@ abstract class DatabaseInstaller {
if ( !$status->isOK() ) {
return $status;
}
- $updater = DatabaseUpdater::newForDB( $this->db );
- $extensionUpdates = $updater->getNewExtensions();
-
- $ourExtensions = array_map( 'strtolower', $this->getVar( '_Extensions' ) );
-
- foreach( $ourExtensions as $ext ) {
- if( isset( $extensionUpdates[$ext] ) ) {
- $this->db->begin( __METHOD__ );
- $error = $this->db->sourceFile( $extensionUpdates[$ext] );
- if( $error !== true ) {
- $this->db->rollback( __METHOD__ );
- $status->warning( 'config-install-tables-failed', $error );
- } else {
- $this->db->commit( __METHOD__ );
- }
- }
- }
// Now run updates to create tables for old extensions
- $updater->doUpdates( array( 'extensions' ) );
+ DatabaseUpdater::newForDB( $this->db )->doUpdates( array( 'extensions' ) );
return $status;
}
@@ -361,6 +344,8 @@ abstract class DatabaseInstaller {
/**
* Get a labelled text box to configure a local variable.
+ *
+ * @return string
*/
public function getTextBox( $var, $label, $attribs = array(), $helpData = "" ) {
$name = $this->getName() . '_' . $var;
@@ -381,6 +366,8 @@ abstract class DatabaseInstaller {
/**
* Get a labelled password box to configure a local variable.
* Implements password hiding.
+ *
+ * @return string
*/
public function getPasswordBox( $var, $label, $attribs = array(), $helpData = "" ) {
$name = $this->getName() . '_' . $var;
@@ -400,6 +387,8 @@ abstract class DatabaseInstaller {
/**
* Get a labelled checkbox to configure a local boolean variable.
+ *
+ * @return string
*/
public function getCheckBox( $var, $label, $attribs = array(), $helpData = "" ) {
$name = $this->getName() . '_' . $var;
diff --git a/includes/installer/DatabaseUpdater.php b/includes/installer/DatabaseUpdater.php
index 57d82ea3..89fb16eb 100644
--- a/includes/installer/DatabaseUpdater.php
+++ b/includes/installer/DatabaseUpdater.php
@@ -31,12 +31,6 @@ abstract class DatabaseUpdater {
protected $extensionUpdates = array();
/**
- * Used to hold schema files during installation process
- * @var array
- */
- protected $newExtensions = array();
-
- /**
* Handle to the database subclass
*
* @var DatabaseBase
@@ -46,7 +40,8 @@ abstract class DatabaseUpdater {
protected $shared = false;
protected $postDatabaseUpdateMaintenance = array(
- 'DeleteDefaultMessages'
+ 'DeleteDefaultMessages',
+ 'FixExtLinksProtocolRelative',
);
/**
@@ -65,6 +60,7 @@ abstract class DatabaseUpdater {
} else {
$this->maintenance = new FakeMaintenance;
}
+ $this->maintenance->setDB( $db );
$this->initOldGlobals();
$this->loadExtensions();
wfRunHooks( 'LoadExtensionSchemaUpdates', array( $this ) );
@@ -176,23 +172,6 @@ abstract class DatabaseUpdater {
}
/**
- * Add a brand new extension to MediaWiki. Used during the initial install
- * @param $ext String Name of extension
- * @param $sqlPath String Full path to the schema file
- */
- public function addNewExtension( $ext, $sqlPath ) {
- $this->newExtensions[ strtolower( $ext ) ] = $sqlPath;
- }
-
- /**
- * Get the list of extensions that registered a schema with our DB type
- * @return array
- */
- public function getNewExtensions() {
- return $this->newExtensions;
- }
-
- /**
* Get the list of extension-defined updates
*
* @return Array
@@ -210,8 +189,8 @@ abstract class DatabaseUpdater {
*
* @param $what Array: what updates to perform
*/
- public function doUpdates( $what = array( 'core', 'extensions', 'purge' ) ) {
- global $wgVersion;
+ public function doUpdates( $what = array( 'core', 'extensions', 'purge', 'stats' ) ) {
+ global $wgLocalisationCacheConf, $wgVersion;
$what = array_flip( $what );
if ( isset( $what['core'] ) ) {
@@ -224,10 +203,14 @@ abstract class DatabaseUpdater {
$this->setAppliedUpdates( $wgVersion, $this->updates );
- if( isset( $what['purge'] ) ) {
+ if ( isset( $what['purge'] ) ) {
$this->purgeCache();
+
+ if ( $wgLocalisationCacheConf['manualRecache'] ) {
+ $this->rebuildLocalisationCache();
+ }
}
- if ( isset( $what['core'] ) ) {
+ if ( isset( $what['stats'] ) ) {
$this->checkStats();
}
}
@@ -254,6 +237,7 @@ abstract class DatabaseUpdater {
}
protected function setAppliedUpdates( $version, $updates = array() ) {
+ $this->db->clearFlag( DBO_DDLMODE );
if( !$this->canUseNewUpdatelog() ) {
return;
}
@@ -261,12 +245,14 @@ abstract class DatabaseUpdater {
$this->db->insert( 'updatelog',
array( 'ul_key' => $key, 'ul_value' => serialize( $updates ) ),
__METHOD__ );
+ $this->db->setFlag( DBO_DDLMODE );
}
/**
* Helper function: check if the given key is present in the updatelog table.
* Obviously, only use this for updates that occur after the updatelog table was
* created!
+ * @param $key String Name of the key to check for
*/
public function updateRowExists( $key ) {
$row = $this->db->selectRow(
@@ -279,6 +265,23 @@ abstract class DatabaseUpdater {
}
/**
+ * Helper function: Add a key to the updatelog table
+ * Obviously, only use this for updates that occur after the updatelog table was
+ * created!
+ * @param $key String Name of key to insert
+ * @param $val String [optional] value to insert along with the key
+ */
+ public function insertUpdateRow( $key, $val = null ) {
+ $this->db->clearFlag( DBO_DDLMODE );
+ $values = array( 'ul_key' => $key );
+ if( $val && $this->canUseNewUpdatelog() ) {
+ $values['ul_value'] = $val;
+ }
+ $this->db->insert( 'updatelog', $values, __METHOD__, 'IGNORE' );
+ $this->db->setFlag( DBO_DDLMODE );
+ }
+
+ /**
* Updatelog was changed in 1.17 to have a ul_value column so we can record
* more information about what kind of updates we've done (that's what this
* class does). Pre-1.17 wikis won't have this column, and really old wikis
@@ -459,13 +462,17 @@ abstract class DatabaseUpdater {
* @param $fullpath Boolean: whether to treat $patch path as a relative or not
*/
public function modifyField( $table, $field, $patch, $fullpath = false ) {
+ $updateKey = "$table-$field-$patch";
if ( !$this->db->tableExists( $table ) ) {
$this->output( "...$table table does not exist, skipping modify field patch\n" );
} elseif ( !$this->db->fieldExists( $table, $field ) ) {
$this->output( "...$field field does not exist in $table table, skipping modify field patch\n" );
+ } elseif( $this->updateRowExists( $updateKey ) ) {
+ $this->output( "...$field in table $table already modified by patch $patch\n" );
} else {
$this->output( "Modifying $field field of table $table..." );
$this->applyPatch( $patch, $fullpath );
+ $this->insertUpdateRow( $updateKey );
$this->output( "ok\n" );
}
}
@@ -495,7 +502,7 @@ abstract class DatabaseUpdater {
$this->output( "done.\n" );
return;
}
- SiteStatsInit::doAllAndCommit( false );
+ SiteStatsInit::doAllAndCommit( $this->db );
}
# Common updater functions
@@ -525,7 +532,7 @@ abstract class DatabaseUpdater {
"Populating log_user_text field, printing progress markers. For large\n" .
"databases, you may want to hit Ctrl-C and do this manually with\n" .
"maintenance/populateLogUsertext.php.\n" );
- $task = new PopulateLogUsertext();
+ $task = $this->maintenance->runChild( 'PopulateLogUsertext' );
$task->execute();
$this->output( "Done populating log_user_text field.\n" );
}
@@ -540,7 +547,7 @@ abstract class DatabaseUpdater {
"Populating log_search table, printing progress markers. For large\n" .
"databases, you may want to hit Ctrl-C and do this manually with\n" .
"maintenance/populateLogSearch.php.\n" );
- $task = new PopulateLogSearch();
+ $task = $this->maintenance->runChild( 'PopulateLogSearch' );
$task->execute();
$this->output( "Done populating log_search table.\n" );
}
@@ -568,7 +575,18 @@ abstract class DatabaseUpdater {
return;
}
- $task = new UpdateCollation();
+ $task = $this->maintenance->runChild( 'UpdateCollation' );
$task->execute();
}
+
+ protected function rebuildLocalisationCache() {
+ /**
+ * @var $cl RebuildLocalisationCache
+ */
+ $cl = $this->maintenance->runChild( 'RebuildLocalisationCache', 'rebuildLocalisationCache.php' );
+ $this->output( "Rebuilding localisation cache...\n" );
+ $cl->setForce();
+ $cl->execute();
+ $this->output( "Rebuilding localisation cache done.\n" );
+ }
}
diff --git a/includes/installer/Ibm_db2Installer.php b/includes/installer/Ibm_db2Installer.php
new file mode 100644
index 00000000..78e607fb
--- /dev/null
+++ b/includes/installer/Ibm_db2Installer.php
@@ -0,0 +1,251 @@
+<?php
+/**
+ * IBM_DB2-specific installer.
+ *
+ * @file
+ * @ingroup Deployment
+ */
+
+/**
+ * Class for setting up the MediaWiki database using IBM_DB2.
+ *
+ * @ingroup Deployment
+ * @since 1.17
+ */
+class Ibm_db2Installer extends DatabaseInstaller {
+
+
+ protected $globalNames = array(
+ 'wgDBserver',
+ 'wgDBport',
+ 'wgDBname',
+ 'wgDBuser',
+ 'wgDBpassword',
+ 'wgDBmwschema',
+ );
+
+ protected $internalDefaults = array(
+ '_InstallUser' => 'db2admin'
+ );
+
+ /**
+ * Get the DB2 database extension name
+ * @return string
+ */
+ public function getName(){
+ return 'ibm_db2';
+ }
+
+ /**
+ * Determine whether the DB2 database extension is currently available in PHP
+ * @return boolean
+ */
+ public function isCompiled() {
+ return self::checkExtension( 'ibm_db2' );
+ }
+
+ /**
+ * Generate a connection form for a DB2 database
+ * @return string
+ */
+ public function getConnectForm() {
+ return
+ $this->getTextBox( 'wgDBserver', 'config-db-host', array(), $this->parent->getHelpBox( 'config-db-host-help' ) ) .
+ $this->getTextBox( 'wgDBport', 'config-db-port', array(), $this->parent->getHelpBox( 'config-db-port' ) ) .
+ Html::openElement( 'fieldset' ) .
+ Html::element( 'legend', array(), wfMsg( 'config-db-wiki-settings' ) ) .
+ $this->getTextBox( 'wgDBname', 'config-db-name', array(), $this->parent->getHelpBox( 'config-db-name-help' ) ) .
+ $this->getTextBox( 'wgDBmwschema', 'config-db-schema', array(), $this->parent->getHelpBox( 'config-db-schema-help' ) ) .
+ Html::closeElement( 'fieldset' ) .
+ $this->getInstallUserBox();
+ }
+
+ /**
+ * Validate and then execute the connection form for a DB2 database
+ * @return Status
+ */
+ public function submitConnectForm() {
+ // Get variables from the request
+ $newValues = $this->setVarsFromRequest(
+ array( 'wgDBserver', 'wgDBport', 'wgDBname',
+ 'wgDBmwschema', 'wgDBuser', 'wgDBpassword' ) );
+
+ // Validate them
+ $status = Status::newGood();
+ if ( !strlen( $newValues['wgDBname'] ) ) {
+ $status->fatal( 'config-missing-db-name' );
+ } elseif ( !preg_match( '/^[a-zA-Z0-9_]+$/', $newValues['wgDBname'] ) ) {
+ $status->fatal( 'config-invalid-db-name', $newValues['wgDBname'] );
+ }
+ if ( !strlen( $newValues['wgDBmwschema'] ) ) {
+ $status->fatal( 'config-invalid-schema' );
+ }
+ elseif ( !preg_match( '/^[a-zA-Z0-9_]*$/', $newValues['wgDBmwschema'] ) ) {
+ $status->fatal( 'config-invalid-schema', $newValues['wgDBmwschema'] );
+ }
+ if ( !strlen( $newValues['wgDBport'] ) ) {
+ $status->fatal( 'config-invalid-port' );
+ }
+ elseif ( !preg_match( '/^[0-9_]*$/', $newValues['wgDBport'] ) ) {
+ $status->fatal( 'config-invalid-port', $newValues['wgDBport'] );
+ }
+
+ // Submit user box
+ if ( $status->isOK() ) {
+ $status->merge( $this->submitInstallUserBox() );
+ }
+ if ( !$status->isOK() ) {
+ return $status;
+ }
+
+ global $wgDBport;
+ $wgDBport = $newValues['wgDBport'];
+
+ // Try to connect
+ $status->merge( $this->getConnection() );
+ if ( !$status->isOK() ) {
+ return $status;
+ }
+
+ $this->parent->setVar( 'wgDBuser', $this->getVar( '_InstallUser' ) );
+ $this->parent->setVar( 'wgDBpassword', $this->getVar( '_InstallPassword' ) );
+
+ return $status;
+ }
+
+ /**
+ * Open a DB2 database connection
+ * @return Status
+ */
+ public function openConnection() {
+ $status = Status::newGood();
+ try {
+ $db = new DatabaseIbm_db2(
+ $this->getVar( 'wgDBserver' ),
+ $this->getVar( '_InstallUser' ),
+ $this->getVar( '_InstallPassword' ),
+ $this->getVar( 'wgDBname' ),
+ 0,
+ $this->getVar( 'wgDBmwschema' )
+ );
+ $status->value = $db;
+ } catch ( DBConnectionError $e ) {
+ $status->fatal( 'config-connection-error', $e->getMessage() );
+ }
+ return $status;
+ }
+
+ /**
+ * Create a DB2 database for MediaWiki
+ * @return Status
+ */
+ public function setupDatabase() {
+ $status = $this->getConnection();
+ if ( !$status->isOK() ) {
+ return $status;
+ }
+ $conn = $status->value;
+ $dbName = $this->getVar( 'wgDBname' );
+ if( !$conn->selectDB( $dbName ) ) {
+ $conn->query( "CREATE DATABASE "
+ . $conn->addIdentifierQuotes( $dbName )
+ . " AUTOMATIC STORAGE YES"
+ . " USING CODESET UTF-8 TERRITORY US COLLATE USING SYSTEM"
+ . " PAGESIZE 32768", __METHOD__ );
+ $conn->selectDB( $dbName );
+ }
+ $this->setupSchemaVars();
+ return $status;
+ }
+
+ /**
+ * Create tables from scratch.
+ * First check if pagesize >= 32k.
+ *
+ * @return Status
+ */
+ public function createTables() {
+ $status = $this->getConnection();
+ if ( !$status->isOK() ) {
+ return $status;
+ }
+ $this->db->selectDB( $this->getVar( 'wgDBname' ) );
+
+ if( $this->db->tableExists( 'user' ) ) {
+ $status->warning( 'config-install-tables-exist' );
+ return $status;
+ }
+
+ /* Check for pagesize */
+ $status = $this->checkPageSize();
+ if ( !$status->isOK() ) {
+ return $status;
+ }
+
+ $this->db->setFlag( DBO_DDLMODE ); // For Oracle's handling of schema files
+ $this->db->begin( __METHOD__ );
+
+ $error = $this->db->sourceFile( $this->db->getSchemaPath() );
+ if( $error !== true ) {
+ $this->db->reportQueryError( $error, 0, '', __METHOD__ );
+ $this->db->rollback( __METHOD__ );
+ $status->fatal( 'config-install-tables-failed', $error );
+ } else {
+ $this->db->commit( __METHOD__ );
+ }
+ // Resume normal operations
+ if( $status->isOk() ) {
+ $this->enableLB();
+ }
+ return $status;
+ }
+
+ /**
+ * Check if database has a tablspace with pagesize >= 32k.
+ *
+ * @return Status
+ */
+ public function checkPageSize() {
+ $status = $this->getConnection();
+ if ( !$status->isOK() ) {
+ return $status;
+ }
+ $this->db->selectDB( $this->getVar( 'wgDBname' ) );
+
+ try {
+ $result = $this->db->query( 'SELECT PAGESIZE FROM SYSCAT.TABLESPACES' );
+ if( $result == false ) {
+ $status->fatal( 'config-connection-error', '' );
+ }
+ else {
+ while ( $row = $this->db->fetchRow( $result ) ) {
+ if( $row[0] >= 32768 ) {
+ return $status;
+ }
+ }
+ $status->fatal( 'config-ibm_db2-low-db-pagesize', '' );
+ }
+ } catch ( DBUnexpectedError $e ) {
+ $status->fatal( 'config-connection-error', $e->getMessage() );
+ }
+
+ return $status;
+ }
+
+ /**
+ * Generate the code to store the DB2-specific settings defined by the configuration form
+ * @return string
+ */
+ public function getLocalSettings() {
+ $schema = LocalSettingsGenerator::escapePhpString( $this->getVar( 'wgDBmwschema' ) );
+ $port = LocalSettingsGenerator::escapePhpString( $this->getVar( 'wgDBport' ) );
+ return
+"# IBM_DB2 specific settings
+\$wgDBmwschema = \"{$schema}\";
+\$wgDBport = \"{$port}\";";
+ }
+
+ public function __construct($parent) {
+ parent::__construct($parent);
+ }
+}
diff --git a/includes/installer/Ibm_db2Updater.php b/includes/installer/Ibm_db2Updater.php
new file mode 100644
index 00000000..39a9fb79
--- /dev/null
+++ b/includes/installer/Ibm_db2Updater.php
@@ -0,0 +1,69 @@
+<?php
+/**
+ * IBM_DB2-specific updater.
+ *
+ * @file
+ * @ingroup Deployment
+ */
+
+/**
+ * Class for handling updates to IBM_DB2 databases.
+ *
+ * @ingroup Deployment
+ * @since 1.17
+ */
+class Ibm_db2Updater extends DatabaseUpdater {
+
+ /**
+ * Get the changes in the DB2 database scheme since MediaWiki 1.14
+ * @return array
+ */
+ protected function getCoreUpdateList() {
+ return array(
+ // 1.14
+ array( 'addField', 'site_stats', 'ss_active_users', 'patch-ss_active_users.sql' ),
+ array( 'addField', 'ipblocks', 'ipb_allow_usertalk', 'patch-ipb_allow_usertalk.sql' ),
+
+ // 1.15
+ array( 'addTable', 'change_tag', 'patch-change_tag.sql' ),
+ array( 'addTable', 'tag_summary', 'patch-change_tag_summary.sql' ),
+ array( 'addTable', 'valid_tag', 'patch-change_valid_tag.sql' ),
+
+ // 1.16
+ array( 'addTable', 'user_properties', 'patch-user_properties.sql' ),
+ array( 'addTable', 'log_search', 'patch-log_search.sql' ),
+ array( 'addField', 'logging', 'log_user_text', 'patch-log_user_text.sql' ),
+ array( 'addTable', 'l10n_cache', 'patch-l10n_cache.sql' ),
+ array( 'addTable', 'external_user', 'patch-external_user.sql' ),
+ array( 'addIndex', 'log_search', 'ls_field_val', 'patch-log_search-rename-index.sql' ),
+ array( 'addIndex', 'change_tag', 'change_tag_rc_tag', 'patch-change_tag-indexes.sql' ),
+ array( 'addField', 'redirect', 'rd_interwiki', 'patch-rd_interwiki.sql' ),
+
+ // 1.17
+ array( 'addTable', 'iwlinks', 'patch-iwlinks.sql' ),
+ array( 'addField', 'updatelog', 'ul_value', 'patch-ul_value.sql' ),
+ array( 'addField', 'interwiki', 'iw_api', 'patch-iw_api_and_wikiid.sql' ),
+ array( 'addField', 'categorylinks', 'cl_collation', 'patch-categorylinks-better-collation.sql' ),
+ array( 'addTable', 'msg_resource', 'patch-msg_resource.sql' ),
+ array( 'addTable', 'module_deps', 'patch-module_deps.sql' ),
+
+ // Tables
+ array( 'addTable', 'iwlinks', 'patch-iwlinks.sql' ),
+ array( 'addTable', 'msg_resource_links', 'patch-msg_resource_links.sql' ),
+ array( 'addTable', 'msg_resource', 'patch-msg_resource.sql' ),
+ array( 'addTable', 'module_deps', 'patch-module_deps.sql' ),
+
+ // Indexes
+ array( 'addIndex', 'msg_resource_links', 'uq61_msg_resource_links', 'patch-uq_61_msg_resource_links.sql' ),
+ array( 'addIndex', 'msg_resource', 'uq81_msg_resource', 'patch-uq_81_msg_resource.sql' ),
+ array( 'addIndex', 'module_deps', 'uq96_module_deps', 'patch-uq_96_module_deps.sql' ),
+
+ // Fields
+ array( 'addField', 'categorylinks', 'cl_sortkey_prefix', 'patch-cl_sortkey_prefix-field.sql' ),
+ array( 'addField', 'categorylinks', 'cl_collation', 'patch-cl_collation-field.sql' ),
+ array( 'addField', 'categorylinks', 'cl_type', 'patch-cl_type-field.sql' ),
+ array( 'addField', 'interwiki', 'iw_api', 'patch-iw_api-field.sql' ),
+ array( 'addField', 'interwiki', 'iw_wikiid', 'patch-iw_wikiid-field.sql' )
+ );
+ }
+} \ No newline at end of file
diff --git a/includes/installer/InstallDocFormatter.php b/includes/installer/InstallDocFormatter.php
new file mode 100644
index 00000000..5801f26d
--- /dev/null
+++ b/includes/installer/InstallDocFormatter.php
@@ -0,0 +1,42 @@
+<?php
+
+class InstallDocFormatter {
+ static function format( $text ) {
+ $obj = new self( $text );
+ return $obj->execute();
+ }
+
+ protected function __construct( $text ) {
+ $this->text = $text;
+ }
+
+ protected function execute() {
+ $text = $this->text;
+ // Use Unix line endings, escape some wikitext stuff
+ $text = str_replace( array( '<', '{{', '[[', "\r" ),
+ array( '&lt;', '&#123;&#123;', '&#91;&#91;', '' ), $text );
+ // join word-wrapped lines into one
+ do {
+ $prev = $text;
+ $text = preg_replace( "/\n([\\*#\t])([^\n]*?)\n([^\n#\\*:]+)/", "\n\\1\\2 \\3", $text );
+ } while ( $text != $prev );
+ // Replace tab indents with colons
+ $text = preg_replace( '/^\t\t/m', '::', $text );
+ $text = preg_replace( '/^\t/m', ':', $text );
+ // turn (bug nnnn) into links
+ $text = preg_replace_callback('/bug (\d+)/', array( $this, 'replaceBugLinks' ), $text );
+ // add links to manual to every global variable mentioned
+ $text = preg_replace_callback('/(\$wg[a-z0-9_]+)/i', array( $this, 'replaceConfigLinks' ), $text );
+ return $text;
+ }
+
+ protected function replaceBugLinks( $matches ) {
+ return '<span class="config-plainlink">[https://bugzilla.wikimedia.org/' .
+ $matches[1] . ' bug ' . $matches[1] . ']</span>';
+ }
+
+ protected function replaceConfigLinks( $matches ) {
+ return '<span class="config-plainlink">[http://www.mediawiki.org/wiki/Manual:' .
+ $matches[1] . ' ' . $matches[1] . ']</span>';
+ }
+}
diff --git a/includes/installer/Installer.i18n.php b/includes/installer/Installer.i18n.php
index dc3147a7..e9ede6f9 100644
--- a/includes/installer/Installer.i18n.php
+++ b/includes/installer/Installer.i18n.php
@@ -75,10 +75,10 @@ This program is distributed in the hope that it will be useful, but '''without a
See the GNU General Public License for more details.
You should have received <doclink href=Copying>a copy of the GNU General Public License</doclink> along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. or [http://www.gnu.org/copyleft/gpl.html read it online].",
- 'config-sidebar' => "* [http://www.mediawiki.org MediaWiki home]
-* [http://www.mediawiki.org/wiki/Help:Contents User's Guide]
-* [http://www.mediawiki.org/wiki/Manual:Contents Administrator's Guide]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]
+ 'config-sidebar' => "* [//www.mediawiki.org MediaWiki home]
+* [//www.mediawiki.org/wiki/Help:Contents User's Guide]
+* [//www.mediawiki.org/wiki/Manual:Contents Administrator's Guide]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ]
----
* <doclink href=Readme>Read me</doclink>
* <doclink href=ReleaseNotes>Release notes</doclink>
@@ -94,16 +94,16 @@ However, MediaWiki requires PHP $2 or higher.',
'config-unicode-using-utf8' => 'Using Brion Vibber\'s utf8_normalize.so for Unicode normalization.',
'config-unicode-using-intl' => 'Using the [http://pecl.php.net/intl intl PECL extension] for Unicode normalization.',
'config-unicode-pure-php-warning' => "'''Warning''': The [http://pecl.php.net/intl intl PECL extension] is not available to handle Unicode normalization, falling back to slow pure-PHP implementation.
-If you run a high-traffic site, you should read a little on [http://www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode normalization].",
+If you run a high-traffic site, you should read a little on [//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode normalization].",
'config-unicode-update-warning' => "'''Warning''': The installed version of the Unicode normalization wrapper uses an older version of [http://site.icu-project.org/ the ICU project's] library.
-You should [http://www.mediawiki.org/wiki/Unicode_normalization_considerations upgrade] if you are at all concerned about using Unicode.",
+You should [//www.mediawiki.org/wiki/Unicode_normalization_considerations upgrade] if you are at all concerned about using Unicode.",
'config-no-db' => 'Could not find a suitable database driver! You need to install a database driver for PHP.
The following database types are supported: $1.
If you are on shared hosting, ask your hosting provider to install a suitable database driver.
If you compiled PHP yourself, reconfigure it with a database client enabled, for example using <code>./configure --with-mysql</code>.
If you installed PHP from a Debian or Ubuntu package, then you also need install the php5-mysql module.',
- 'config-no-fts3' => "'''Warning''': SQLite is compiled without the [http://sqlite.org/fts3.html FTS3 module], search features will be unavailable on this backend.",
+ 'config-no-fts3' => "'''Warning''': SQLite is compiled without the [//sqlite.org/fts3.html FTS3 module], search features will be unavailable on this backend.",
'config-register-globals' => "'''Warning: PHP's <code>[http://php.net/register_globals register_globals]</code> option is enabled.'''
'''Disable it if you can.'''
MediaWiki will work, but your server is exposed to potential security vulnerabilities.",
@@ -132,12 +132,14 @@ MediaWiki requires UTF-8 support to function correctly.",
'config-memory-bad' => "'''Warning:''' PHP's <code>memory_limit</code> is $1.
This is probably too low.
The installation may fail!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] is installed',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] is installed',
'config-apc' => '[http://www.php.net/apc APC] is installed',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] is installed',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] is installed',
- 'config-no-cache' => "'''Warning:''' Could not find [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] or [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''Warning:''' Could not find [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] or [http://www.iis.net/download/WinCacheForPhp WinCache].
Object caching is not enabled.",
+ 'config-mod-security' => "'''Warning''': your web server has [http://modsecurity.org/ mod_security] enabled. If misconfigured, it can cause problems for MediaWiki or other software that allows users to post arbitrary content.
+Refer to [http://modsecurity.org/documentation/ mod_security documentation] or contact your host's support if you encounter random errors.",
'config-diff3-bad' => 'GNU diff3 not found.',
'config-imagemagick' => 'Found ImageMagick: <code>$1</code>.
Image thumbnailing will be enabled if you enable uploads.',
@@ -147,10 +149,15 @@ Image thumbnailing will be enabled if you enable uploads.',
Image thumbnailing will be disabled.',
'config-no-uri' => "'''Error:''' Could not determine the current URI.
Installation aborted.",
+ 'config-no-cli-uri' => "'''Warning''': No --scriptpath specified, using default: <code>$1</code>.",
+ 'config-using-server' => 'Using server name "<nowiki>$1</nowiki>".',
+ 'config-using-uri' => 'Using server URL "<nowiki>$1$2</nowiki>".',
'config-uploads-not-safe' => "'''Warning:''' Your default directory for uploads <code>$1</code> is vulnerable to arbitrary scripts execution.
-Although MediaWiki checks all uploaded files for security threats, it is highly recommended to [http://www.mediawiki.org/wiki/Manual:Security#Upload_security close this security vulnerability] before enabling uploads.",
+Although MediaWiki checks all uploaded files for security threats, it is highly recommended to [//www.mediawiki.org/wiki/Manual:Security#Upload_security close this security vulnerability] before enabling uploads.",
+ 'config-no-cli-uploads-check' => "'''Warning:''' Your default directory for uploads (<code>$1</code>) is not checked for vulnerability
+to arbitrary script execution during the CLI install.",
'config-brokenlibxml' => 'Your system has a combination of PHP and libxml2 versions which is buggy and can cause hidden data corruption in MediaWiki and other web applications.
-Upgrade to PHP 5.2.9 or later and libxml2 2.7.3 or later ([http://bugs.php.net/bug.php?id=45996 bug filed with PHP]).
+Upgrade to PHP 5.2.9 or later and libxml2 2.7.3 or later ([//bugs.php.net/bug.php?id=45996 bug filed with PHP]).
Installation aborted.',
'config-using531' => 'MediaWiki cannot be used with PHP $1 due to a bug involving reference parameters to <code>__call()</code>.
Upgrade to PHP 5.3.2 or higher, or downgrade to PHP 5.3.0 to resolve this.
@@ -162,7 +169,9 @@ Installation aborted.',
If you are using shared web hosting, your hosting provider should give you the correct host name in their documentation.
-If you are installing on a Windows server and using MySQL, using "localhost" may not work for the server name. If it does not, try "127.0.0.1" for the local IP address.',
+If you are installing on a Windows server and using MySQL, using "localhost" may not work for the server name. If it does not, try "127.0.0.1" for the local IP address.
+
+If you are using PostgreSQL, leave this field blank to connect via a Unix socket.',
'config-db-host-oracle' => 'Database TNS:',
'config-db-host-oracle-help' => 'Enter a valid [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Local Connect Name]; a tnsnames.ora file must be visible to this installation.<br />If you are using client libraries 10g or newer you can also use the [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect] naming method.',
'config-db-wiki-settings' => 'Identify this wiki',
@@ -205,7 +214,7 @@ This field is usually left empty.',
In '''binary mode''', MediaWiki stores UTF-8 text to the database in binary fields.
This is more efficient than MySQL's UTF-8 mode, and allows you to use the full range of Unicode characters.
In '''UTF-8 mode''', MySQL will know what character set your data is in, and can present and convert it appropriately,
-but it will not let you store characters above the [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
+but it will not let you store characters above the [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
'config-mysql-old' => 'MySQL $1 or later is required, you have $2.',
'config-db-port' => 'Database port:',
'config-db-schema' => 'Schema for MediaWiki',
@@ -229,6 +238,7 @@ Consider putting the database somewhere else altogether, for example in <code>/v
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'MediaWiki supports the following database systems:
$1
@@ -238,10 +248,12 @@ If you do not see the database system you are trying to use listed below, then f
'config-support-postgres' => '* $1 is a popular open source database system as an alternative to MySQL ([http://www.php.net/manual/en/pgsql.installation.php how to compile PHP with PostgreSQL support]). There may be some minor outstanding bugs, and it is not recommended for use in a production environment.',
'config-support-sqlite' => '* $1 is a lightweight database system which is very well supported. ([http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], uses PDO)',
'config-support-oracle' => '* $1 is a commercial enterprise database. ([http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])',
+ 'config-support-ibm_db2' => '* $1 is a commercial enterprise database.',
'config-header-mysql' => 'MySQL settings',
'config-header-postgres' => 'PostgreSQL settings',
'config-header-sqlite' => 'SQLite settings',
'config-header-oracle' => 'Oracle settings',
+ 'config-header-ibm_db2' => 'IBM DB2 settings',
'config-invalid-db-type' => 'Invalid database type',
'config-missing-db-name' => 'You must enter a value for "Database name"',
'config-missing-db-host' => 'You must enter a value for "Database host"',
@@ -315,6 +327,13 @@ The account you specify here must already exist.',
'config-mysql-engine' => 'Storage engine:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => "'''Warning''': You have selected MyISAM as storage engine for MySQL, which is not recommended for use with MediaWiki, because:
+* it barely supports concurrency due to table locking
+* it is more prone to corruption than other engines
+* the MediaWiki codebase does not always handle MyISAM as it should
+
+If your MySQL installation supports InnoDB, it is highly recommended that you choose that instead.
+If your MySQL installation does not support InnoDB, maybe it's time for an upgrade.",
'config-mysql-engine-help' => "'''InnoDB''' is almost always the best option, since it has good concurrency support.
'''MyISAM''' may be faster in single-user or read-only installations.
@@ -325,7 +344,10 @@ MyISAM databases tend to get corrupted more often than InnoDB databases.",
'config-mysql-charset-help' => "In '''binary mode''', MediaWiki stores UTF-8 text to the database in binary fields.
This is more efficient than MySQL's UTF-8 mode, and allows you to use the full range of Unicode characters.
-In '''UTF-8 mode''', MySQL will know what character set your data is in, and can present and convert it appropriately, but it will not let you store characters above the [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
+In '''UTF-8 mode''', MySQL will know what character set your data is in, and can present and convert it appropriately, but it will not let you store characters above the [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
+
+ 'config-ibm_db2-low-db-pagesize' => "Your DB2 database has a default tablespace with an insufficient pagesize. The pagesize has to be '''32K''' or greater.",
+
'config-site-name' => 'Name of wiki:',
'config-site-name-help' => "This will appear in the title bar of the browser and in various other places.",
'config-site-name-blank' => 'Enter a site name.',
@@ -361,6 +383,8 @@ Specify a different username.',
'config-subscribe' => 'Subscribe to the [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce release announcements mailing list].',
'config-subscribe-help' => 'This is a low-volume mailing list used for release announcements, including important security announcements.
You should subscribe to it and update your MediaWiki installation when new versions come out.',
+ 'config-subscribe-noemail' => 'You tried to subscribe to the release announcements mailing list without providing an e-mail address.
+Please provide an e-mail address if you wish to subscribe to the mailing list.',
'config-almost-done' => 'You are almost done!
You can now skip the remaining configuration and install the wiki right now.',
'config-optional-continue' => 'Ask me more questions.',
@@ -382,14 +406,14 @@ A wiki with '''{{int:config-profile-no-anon}}''' provides extra accountability,
The '''{{int:config-profile-fishbowl}}''' scenario allows approved users to edit, but the public can view the pages, including history.
A '''{{int:config-profile-private}}''' only allows approved users to view pages, with the same group allowed to edit.
-More complex user rights configurations are available after installation, see the [http://www.mediawiki.org/wiki/Manual:User_rights relevant manual entry].",
+More complex user rights configurations are available after installation, see the [//www.mediawiki.org/wiki/Manual:User_rights relevant manual entry].",
'config-license' => 'Copyright and license:',
'config-license-none' => 'No license footer',
'config-license-cc-by-sa' => 'Creative Commons Attribution Share Alike',
+ 'config-license-cc-by' => 'Creative Commons Attribution',
'config-license-cc-by-nc-sa' => 'Creative Commons Attribution Non-Commercial Share Alike',
- 'config-license-cc-0' => 'Creative Commons Zero',
- 'config-license-gfdl-old' => 'GNU Free Documentation License 1.2',
- 'config-license-gfdl-current' => 'GNU Free Documentation License 1.3 or later',
+ 'config-license-cc-0' => 'Creative Commons Zero (Public Domain)',
+ 'config-license-gfdl' => 'GNU Free Documentation License 1.3 or later',
'config-license-pd' => 'Public Domain',
'config-license-cc-choose' => 'Select a custom Creative Commons license',
'config-license-help' => "Many public wikis put all contributions under a [http://freedomdefined.org/Definition free license].
@@ -398,8 +422,9 @@ It is not generally necessary for a private or corporate wiki.
If you want to be able to use text from Wikipedia, and you want Wikipedia to be able to accept text copied from your wiki, you should choose '''Creative Commons Attribution Share Alike'''.
-The GNU Free Documentation License was the old license Wikipedia was under.
-It is still a valid license, however, this license has some features which make reuse and interpretation difficult.",
+Wikipedia previously used the GNU Free Documentation License.
+The GFDL is a valid license, but it is difficult to understand.
+It is also difficult to reuse content licensed under the GFDL.",
'config-email-settings' => 'E-mail settings',
'config-enable-email' => 'Enable outbound e-mail',
'config-enable-email-help' => "If you want e-mail to work, [http://www.php.net/manual/en/mail.configuration.php PHP's mail settings] need to be configured correctly.
@@ -421,7 +446,7 @@ Many mail servers require at least the domain name part to be valid.',
'config-upload-settings' => 'Images and file uploads',
'config-upload-enable' => 'Enable file uploads',
'config-upload-help' => "File uploads potentially expose your server to security risks.
-For more information, read the [http://www.mediawiki.org/wiki/Manual:Security security section] in the manual.
+For more information, read the [//www.mediawiki.org/wiki/Manual:Security security section] in the manual.
To enable file uploads, change the mode on the <code>images</code> subdirectory under MediaWiki's root directory so that the web server can write to it.
Then enable this option.",
@@ -434,7 +459,7 @@ Upload an image of the appropriate size, and enter the URL here.
If you do not want a logo, leave this box blank.",
'config-instantcommons' => 'Enable Instant Commons',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons Instant Commons] is a feature that allows wikis to use images, sounds and other media found on the [http://commons.wikimedia.org/ Wikimedia Commons] site.
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] is a feature that allows wikis to use images, sounds and other media found on the [//commons.wikimedia.org/ Wikimedia Commons] site.
In order to do this, MediaWiki requires access to the Internet.
For more information on this feature, including instructions on how to set it up for wikis other than the Wikimedia Commons, consult [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos the manual].',
@@ -524,9 +549,17 @@ $3
When that has been done, you can '''[$2 enter your wiki]'''.",
'config-download-localsettings' => 'Download LocalSettings.php',
'config-help' => 'help',
+ 'mainpagetext' => "'''MediaWiki has been successfully installed.'''",
+ 'mainpagedocfooter' => "Consult the [//meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.
+
+== Getting started ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
);
/** Message documentation (Message documentation)
+ * @author Amire80
* @author Dani
* @author EugeneZelenko
* @author Kghbln
@@ -535,6 +568,7 @@ When that has been done, you can '''[$2 enter your wiki]'''.",
* @author Platonides
* @author Purodha
* @author Raymond
+ * @author SPQRobin
* @author Siebrand
* @author Umherirrender
*/
@@ -556,10 +590,15 @@ $messages['qqq'] = array(
'config-page-install' => '{{Identical|Install}}',
'config-page-copying' => 'This is a link to the full GPL text',
'config-restart' => 'Button text to confirm the installation procedure has to be restarted.',
+ 'config-sidebar' => 'Maximum width for words is 24 characters. Only visible part of the translation counts to this limit.',
'config-env-php' => 'Parameters:
* $1 is the version of PHP that has been installed.',
- 'config-no-db-help' => 'Parameters:
-* $1 is comma separated list of supported database types by MediaWiki.',
+ 'config-no-db' => 'Do not translate: <code>./configure --with-mysql</code>.
+<br />
+Do not translate: <code>php5-mysql</code>.
+
+Parameters:
+* $1 is comma separated list of database types supported by MediaWiki.',
'config-memory-raised' => 'Parameters:
* $1 is the configured <code>memory_limit</code>.
* $2 is the value to which <code>memory_limit</code> was raised.',
@@ -569,6 +608,13 @@ $messages['qqq'] = array(
'config-apc' => 'Message indicates if this program is available',
'config-eaccel' => 'Message indicates if this program is available',
'config-wincache' => 'Message indicates if this program is available',
+ 'config-imagemagick' => '$1 is ImageMagick\'s <code>convert</code> executable file name.
+
+Add dir="ltr" to the <nowiki><code></nowiki> for right-to-left languages.',
+ 'config-no-cli-uri' => 'Parameters:
+* $1 is the default value for scriptpath.',
+ 'config-no-cli-uploads-check' => 'CLI = Call Level Interface',
+ 'config-suhosin-max-value-length' => 'Message shown when PHP parameter suhosin.get.max_value_length is between 0 and 1023 (that max value is hard set in MediaWiki software',
'config-db-host-oracle' => 'TNS = [[:wikipedia:Transparent Network Substrate|Transparent Network Substrate]] (<== wikipedia link)',
'config-db-wiki-settings' => 'This is more acurate: "Enter identifying or distinguishing data for this wiki" since a MySQL database can host tables of several wikis.',
'config-db-account-lock' => "It might be easier to translate ''normal operation'' as \"also after the installation process\"",
@@ -580,6 +626,9 @@ $messages['qqq'] = array(
* $1 - a link to the SQLite home page having the anchor text "SQLite".',
'config-support-oracle' => 'Parameters:
* $1 - a link to the Oracle home page, the anchor text of which is "Oracle".',
+ 'config-connection-error' => '$1 is the external error from the database, such as "DB connection error: Access denied for user \'dba\'@\'localhost\' (using password: YES) (localhost)."
+
+If you\'re translating this message to a right-to-left language, consider writing <nowiki><div dir="ltr">$1.</div></nowiki>. (When the bidi features for HTML5 will be implemented in the browsers, it will probably be a good idea to write it as <nowiki><div dir="auto">$1.</div></nowiki>.)',
'config-sqlite-dir-unwritable' => 'webserver refers to a software like Apache or Lighttpd.',
'config-can-upgrade' => 'Should we no use an {{int:xxx}} construct for "continue" ?
@@ -597,7 +646,7 @@ Parameters:
* {{msg-mw|config-profile-fishbowl}}
* {{msg-mw|config-profile-private}}',
'config-upload-help' => 'The word "mode" here refers to the access rights given to various user groups when attempting to create and store files and/or subdiretories in the said directory on the server. It also refers to the <code>mode</code> command used to maipulate said right mask under Unix, Linux, and similar operating systems. A less operating-system-centric translation is fine.',
- 'config-logo-help' => '{{doc-important|For languages with right-to-left script, translate "top left corner" as "top right corner".}}',
+ 'config-logo-help' => '',
'config-cc-not-chosen' => 'Do not translate the <code>"proceed".</code> part.
This message refers to a block of HTML being embedded into the installer page. It comes from the Creative Commons Web site. The block is in the English language. It is a scripted license chooser. When an individual license has been selected, it asks you to klick "proceed" so as to return to the MediaWiki installer page.',
'config-extensions' => '{{Identical|Extension}}',
@@ -623,6 +672,9 @@ This message refers to a block of HTML being embedded into the installer page. I
'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.
+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.',
);
/** Magyar (magázó) (Magyar (magázó))
@@ -647,7 +699,7 @@ Ellenőrizze, hogy a php.ini-ben a <code>session.save_path</code> beállítás a
Alapvető ellenőrzés, ami megmondja, hogy a környezet alkalmas-e a MediaWiki számára.
Ha probléma merülne fel a telepítés során, meg kell adnia mások számára az alább megjelenő információkat.',
'config-unicode-pure-php-warning' => "'''Figyelmeztetés''': Az [http://pecl.php.net/intl intl PECL kiterjesztés] nem érhető el Unicode normalizáláshoz.
-Ha nagy látogatottságú oldalt üzemeltet, itt találhat információkat [http://www.mediawiki.org/wiki/Unicode_normalization_considerations a témáról].",
+Ha nagy látogatottságú oldalt üzemeltet, itt találhat információkat [//www.mediawiki.org/wiki/Unicode_normalization_considerations a témáról].",
'config-register-globals' => "'''Figyelmeztetés: A PHP <code>[http://php.net/register_globals register_globals]</code> beállítása engedélyezve van.'''
'''Tiltsa le, ha van rá lehetősége.'''
A MediaWiki működőképes a beállítás használata mellett, de a szerver biztonsági kockázatnak lesz kitéve.",
@@ -665,7 +717,7 @@ Ha a fiók nem létezik és a telepítést végző fiók rendelkezik megfelelő
'''Bináris''' módban a MediaWiki az UTF-8-ban kódolt szöveget bináris mezőkben tárolja az adatbázisban.
Ez sokkal hatékonyabb a MySQL UTF-8-módjától, és lehetővé teszi, hogy a teljes Unicode-karakterkészletet használja.
'''UTF-8-módban''' MySQL tudja, hogy milyen karakterkészlettel van kódolva az adat, megfelelően van megjelenítve és konvertálva, de
-nem használhatja a [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane] feletti karaktereket.",
+nem használhatja a [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane] feletti karaktereket.",
'config-db-schema-help' => 'A fenti sémák általában megfelelőek.
Csak akkor módosítson rajta, ha szükség van rá.',
'config-sqlite-parent-unwritable-nogroup' => 'Nem lehet létrehozni az adatok tárolásához szükséges <code><nowiki>$1</nowiki></code> könyvtárat, mert a webszerver nem írhat a szülőkönyvtárba (<code><nowiki>$2</nowiki></code>).
@@ -682,8 +734,8 @@ chmod a+w $3</pre>',
'config-admin-name-invalid' => 'A megadott felhasználónév (<nowiki>$1</nowiki>) érvénytelen.
Adjon meg egy másik felhasználónevet.',
'config-admin-password-blank' => 'Adja meg az adminisztrátori fiók jelszavát!',
- 'config-instantcommons-help' => 'Az [http://www.mediawiki.org/wiki/InstantCommons Instant Commons] lehetővé teszi, hogy a wikin használhassák a [http://commons.wikimedia.org/ Wikimedia Commons] oldalon található képeket, hangokat és más médiafájlokat.
-A használatához a MediaWikinek internethozzáférésre van szüksége.
+ 'config-instantcommons-help' => 'Az [//www.mediawiki.org/wiki/InstantCommons Instant Commons] lehetővé teszi, hogy a wikin használhassák a [//commons.wikimedia.org/ Wikimedia Commons] oldalon található képeket, hangokat és más médiafájlokat.
+A használatához a MediaWikinek internethozzáférésre van szüksége.
A funkcióról és hogy hogyan állítható be más wikik esetén [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos a kézikönyvben] találhat további információkat.',
'config-install-done' => "'''Gratulálunk!'''
@@ -696,6 +748,37 @@ Ez tartalmazza az összes beállítást.
'''Megjegyzés''': Ha ezt most nem teszi meg, és kilép, a generált fájl nem lesz elérhető a későbbiekben.
Ha ezzel készen van, '''[$2 beléphet a wikibe]'''.",
+ 'mainpagedocfooter' => "Ha segítségre van szüksége a wikiszoftver használatához, akkor keresse fel a [//meta.wikimedia.org/wiki/Help:Contents User's Guide] oldalt.
+
+== Alapok (angol nyelven) ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Beállítások listája]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki GyIK]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-kiadások levelezőlistája]",
+);
+
+/** Moroccan Spoken Arabic (Maġribi)
+ * @author Enzoreg
+ */
+$messages['ary'] = array(
+ 'mainpagetext' => "'''MediaWiki ṫ'instala be najaḫ.'''",
+ 'mainpagedocfooter' => 'Ila bÄ¡iṫiw meÄlomaṫ Ä¥rin baÄ‹ ṫesṫeÄmlo had l-lojisyél siro Ä‹ofo [//meta.wikimedia.org/wiki/Aide:Contenu Gid dyal l-mosṫeÄ¥dim]
+
+== L-bdaya mÄa MediaWiki ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista dyal l-paramétraṫ dyal l-konfigurasyon]
+* [//www.mediawiki.org/wiki/Manual:FAQ/fr FAQ fe MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista dyal l-modakaraṫ Äla versyonaṫ jdad dyal MediaWiki]',
+);
+
+/** Español (formal) (Español (formal))
+ * @author Dferg
+ */
+$messages['es-formal'] = array(
+ 'mainpagedocfooter' => 'Consulte usted la [//meta.wikimedia.org/wiki/Ayuda:Contenido Guía de usuario] para obtener información sobre el uso del software wiki.
+
+== Empezando ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista de ajustes de configuración]
+* [//www.mediawiki.org/wiki/Manual:FAQ/es FAQ de MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de distribución de MediaWiki]',
);
/** Afrikaans (Afrikaans)
@@ -732,10 +815,10 @@ Kontroleer u php.ini en maak seker dat <code>session.save_path</code> na 'n geld
'config-page-upgradedoc' => 'Besig met opgradering',
'config-page-existingwiki' => 'Bestaande wiki',
'config-restart' => 'Ja, herbegin dit',
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWiki tuisblad]
-* [http://www.mediawiki.org/wiki/Help:Contents Gebruikershandleiding] (Engelstalig)
-* [http://www.mediawiki.org/wiki/Manual:Contents Administrateurshandleiding] (Engelstalig)
-* [http://www.mediawiki.org/wiki/Manual:FAQ Algemene vrae] (Engelstalig)
+ 'config-sidebar' => '* [//www.mediawiki.org MediaWiki tuisblad]
+* [//www.mediawiki.org/wiki/Help:Contents Gebruikershandleiding] (Engelstalig)
+* [//www.mediawiki.org/wiki/Manual:Contents Administrateurshandleiding] (Engelstalig)
+* [//www.mediawiki.org/wiki/Manual:FAQ Algemene vrae] (Engelstalig)
----
* <doclink href=Readme>Lees my</doclink>
* <doclink href=ReleaseNotes>Vrystellingsnotas</doclink>
@@ -748,7 +831,7 @@ U kan nie MediaWiki installeer nie.</span>',
'config-env-php' => 'PHP $1 is tans geïnstalleer.',
'config-no-db' => "Kon nie 'n geskikte databasisdrywer vind nie!",
'config-memory-raised' => 'PHP se <code>memory_limit</code> is $1, en is verhoog tot $2.',
- 'config-memory-bad' => "'''Waarskuwing:''' PHP se <code>memory_limit</code> is $1.
+ 'config-memory-bad' => "'''Waarskuwing:''' PHP se <code>memory_limit</code> is $1.
Dit is waarskynlik te laag.
Die installasie mag moontlik faal!",
'config-xcache' => '[Http://trac.lighttpd.net/xcache/ XCache] is geïnstalleer',
@@ -767,6 +850,7 @@ Die installasie mag moontlik faal!",
'config-db-password' => 'Databasis wagwoord:',
'config-db-prefix' => 'Voorvoegsel vir databasistabelle:',
'config-db-charset' => 'Karakterstelsel vir databasis',
+ 'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 binêr',
'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
'config-mysql-old' => 'U moet MySQL $1 of later gebruik.
U gebruik tans $2.',
@@ -775,18 +859,26 @@ U gebruik tans $2.',
'config-sqlite-dir' => 'Gids vir SQLite se data:',
'config-oracle-def-ts' => 'Standaard tabelruimte:',
'config-oracle-temp-ts' => 'Tydelike tabelruimte:',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-header-mysql' => 'MySQL-instellings',
'config-header-postgres' => 'PostgreSQL-instellings',
'config-header-sqlite' => 'SQLite-instellings',
'config-header-oracle' => 'Oracle-instellings',
+ 'config-header-ibm_db2' => 'Instellings vir IBM DB2',
'config-invalid-db-type' => 'Ongeldige databasistipe',
'config-missing-db-name' => 'U moet \'n waarde vir "Databasnaam" verskaf',
'config-sqlite-readonly' => 'Die lêer <code>$1</code> kan nie geskryf word nie.',
'config-sqlite-cant-create-db' => 'Kon nie databasislêer <code>$1</code> skep nie.',
+ 'config-upgrade-done-no-regenerate' => 'Opgradering is voltooi.
+
+U kan nou [$1 u wiki gebruik].',
'config-regenerate' => 'Herskep LocalSettings.php →',
'config-show-table-status' => 'Die uitvoer van SHOW TABLE STATUS het gefaal!',
+ 'config-db-web-account' => 'Databasisgebruiker vir toegang tot die web',
+ 'config-mysql-engine' => 'Stoor-enjin:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-charset' => 'Karakterstelsel vir databasis:',
'config-mysql-binary' => 'Binêr',
'config-mysql-utf8' => 'UTF-8',
'config-site-name' => 'Naam van die wiki:',
@@ -828,29 +920,36 @@ U gebruik tans $2.',
'config-install-step-failed' => 'het misluk',
'config-install-extensions' => 'Insluitende uitbreidings',
'config-install-database' => 'Stel die databasis op',
+ 'config-install-pg-schema-not-exist' => 'Die skema vir PostgreSQL bestaan ​​nie.',
'config-install-pg-schema-failed' => 'Die skep van tabelle het gefaal.
Maak seker dat die gebruiker "$1" na skema "$2" mag skryf.',
'config-install-pg-commit' => 'Wysigings word gestoor',
+ 'config-install-pg-plpgsql' => 'Kontroleer vir taal PL/pgSQL',
'config-pg-no-plpgsql' => 'U moet die taal PL/pgSQL in die database $1 installeer',
'config-install-user' => 'Besig om die databasisgebruiker te skep',
+ 'config-install-user-alreadyexists' => 'Gebruiker "$1" bestaan al reeds',
+ 'config-install-user-create-failed' => 'Skep van gebruiker "$1" het gefaal: $2',
'config-install-user-grant-failed' => 'Die toekenning van regte aan gebruiker "$1" het gefaal: $2',
'config-install-tables' => 'Skep tabelle',
- 'config-install-tables-exist' => "'''Waarskuwing''': Dit lyk of MediaWiki se tabelle reeds bestaan.
+ 'config-install-tables-exist' => "'''Waarskuwing''': Dit lyk of MediaWiki se tabelle reeds bestaan.
Die skep van tabelle word oorgeslaan.",
'config-install-tables-failed' => "'''Fout''': die skep van 'n tabel het gefaal met die volgende fout: $1",
'config-install-interwiki' => 'Besig om data in die interwiki-tabel in te laai',
'config-install-interwiki-list' => 'Kon nie die lêer <code>interwiki.list</code> vind nie.',
'config-install-interwiki-exists' => "'''Waarskuwing''': Die interwiki-tabel bevat reeds inskrywings.
Die standaardlys word oorgeslaan.",
+ 'config-install-stats' => 'Inisialiseer statistieke',
'config-install-keys' => 'Genereer geheime sleutel',
'config-install-sysop' => "Skep 'n gebruiker vir die administrateur",
+ 'config-install-subscribe-fail' => 'Kon nie vir MediaWiki-announce inskryf nie: $1',
'config-install-mainpage' => 'Skep die hoofblad met standaard inhoud',
+ 'config-install-extension-tables' => 'Skep tabelle vir aangeskakel uitbreidings',
'config-install-mainpage-failed' => 'Kon nie die hoofblad laai nie: $1',
- 'config-install-done' => "'''Veels geluk!'''
-U het MediaWiki suksesvol geïnstalleer.
+ 'config-install-done' => "'''Veels geluk!'''
+U het MediaWiki suksesvol geïnstalleer.
Die installeerder het 'n <code>LocalSettings.php</code> lêer opgestel.
-Dit bevat al u instellings.
+Dit bevat al u instellings.
U sal dit moet [$1 aflaai] en dit in die hoofgids van u wiki-installasie plaas; in dieselfde gids as index.php.
'''Let wel''': As u dit nie nou doen nie, sal die gegenereerde konfigurasielêer nie later meer beskikbaar wees nadat u die installasie afgesluit het nie.
@@ -858,16 +957,98 @@ U sal dit moet [$1 aflaai] en dit in die hoofgids van u wiki-installasie plaas;
As dit gedoen is, kan u '''[u $2 wiki besoek]'''.",
'config-download-localsettings' => 'Laai LocalSettings.php af',
'config-help' => 'hulp',
+ 'mainpagetext' => "'''MediaWiki is suksesvol geïnstalleer.'''",
+ 'mainpagedocfooter' => "Konsulteer '''[//meta.wikimedia.org/wiki/Help:Contents User's Guide]''' vir inligting oor hoe om die wikisagteware te gebruik.
+
+== Hoe om te Begin ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Gheg Albanian (Gegë)
+ * @author Bresta
+ */
+$messages['aln'] = array(
+ 'mainpagetext' => "'''MediaWiki software u instalue me sukses.'''",
+ 'mainpagedocfooter' => 'Për mâ shumë informata rreth përdorimit të softwareit wiki, ju lutem shikoni [//meta.wikimedia.org/wiki/Help:Contents dokumentacionin].
+
+
+== Për fillim ==
+
+* [//www.mediawiki.org/wiki/Help:Configuration_settings Konfigurimi i MediaWikit]
+* [//www.mediawiki.org/wiki/Help:FAQ Pyetjet e shpeshta rreth MediaWikit]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Njoftime rreth MediaWikit]',
+);
+
+/** Amharic (አማርኛ) */
+$messages['am'] = array(
+ 'mainpagetext' => "'''MediaWiki በትክክሠማስገባቱ ተከናወáŠá¢'''",
+ 'mainpagedocfooter' => "ስለ ዊኪ ሶáትዌር ጥቅሠለመረዳትᣠ[//meta.wikimedia.org/wiki/Help:Contents User's Guide] ያንብቡá¢
+
+== ለመጀመር ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Aragonese (Aragonés)
+ * @author Juanpabl
+ */
+$messages['an'] = array(
+ 'mainpagetext' => "'''O programa MediaWiki s'ha instalato correctament.'''",
+ 'mainpagedocfooter' => "Consulta a [//meta.wikimedia.org/wiki/Help:Contents Guía d'usuario] ta mirar información sobre cómo usar o software wiki.
+
+== Ta prencipiar ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista de caracteristicas confegurables]
+* [//www.mediawiki.org/wiki/Manual:FAQ Preguntas cutianas sobre MediaWiki (FAQ)]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correu sobre ta anuncios de MediaWiki]",
+);
+
+/** Old English (Ænglisc)
+ * @author Gott wisst
+ */
+$messages['ang'] = array(
+ 'mainpagetext' => "'''MediaÇ·iki hafaþ ÈeÆ¿orden spÄ“diÈe inseted.'''",
+ 'mainpagedocfooter' => 'Þeahta þone [//meta.wikimedia.org/wiki/Help:Contents BrÅ«cenda LÇ£dend] on helpe mid þǣre nytte of Æ¿ikisÅftÆ¿are.
+
+== BeÈinnunÈ ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings OnfæstnunÈa Èesetednessa Èetæl]
+* [//www.mediawiki.org/wiki/Manual:FAQ Èœetæl oft ascodra ascunÈa ymb MediaÇ·iki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Ç¢rendunÈÈetæl nÄ«Æ¿ra MediaÇ·iki forþsendnessa]',
);
/** Arabic (العربية)
* @author Meno25
+ * @author OsamaK
+ * @author روخو
*/
$messages['ar'] = array(
+ 'config-desc' => 'مثبت لميدياويكي',
+ 'config-title' => 'ميدياويكي 1$ التثبيت',
+ 'config-information' => 'معلومات',
+ 'config-back' => '→ ارجع',
+ 'config-continue' => 'استمر â†',
+ 'config-page-language' => 'اللغة',
+ 'config-page-name' => 'الاسم',
+ 'config-db-username' => 'اسم مستخدم قاعدة البيانات:',
+ 'config-db-password' => 'كلمة سر قاعدة البيانات:',
+ 'config-db-port' => 'منÙØ° قاعدة البيانات:',
'config-type-mysql' => 'ماي إس كيو إل',
'config-type-postgres' => 'بوستجر إس كيو إل',
'config-type-sqlite' => 'إس كيو لايت',
'config-type-oracle' => 'أوراكل',
+ 'config-admin-email' => 'عنوان البريد الإلكتروني:',
+ 'mainpagetext' => "'''تم تثبيت ميدياويكي بنجاح.'''",
+ 'mainpagedocfooter' => 'استشر [//meta.wikimedia.org/wiki/Help:Contents دليل المستخدم] لمعلومات حول استخدام برنامج الويكي.
+
+== البداية ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings قائمة إعدادات الضبط]
+* [//www.mediawiki.org/wiki/Manual:FAQ أسئلة متكررة حول ميدياويكي]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce القائمة البريدية الخاصة بإصدار ميدياويكي]',
);
/** Aramaic (ÜܪܡÜÜ)
@@ -891,6 +1072,145 @@ $messages['arc'] = array(
'config-email-settings' => 'ܛܘÜÜ’ÌˆÜ Ü•Ü’ÜÜ Ü•ÜªÜ ÜܠܩܛܪܘܢÜÜ',
);
+/** Egyptian Spoken Arabic (مصرى) */
+$messages['arz'] = array(
+ 'mainpagetext' => "''' ميدياويكى اتنزلت بنجاح.'''",
+ 'mainpagedocfooter' => 'اسال [//meta.wikimedia.org/wiki/Help:Contents دليل اليوزر] للمعلومات حوالين استخدام برنامج الويكى.
+
+== البداية ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings لستة اعدادات الضبط]
+* [//www.mediawiki.org/wiki/Manual:FAQ أسئلة بتكرر حوالين الميدياويكى]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce لستة الايميلات بتاعة اعلانات الميدياويكى]',
+);
+
+/** Assamese (অসমীয়া)
+ * @author Chaipau
+ * @author Gitartha.bordoloi
+ */
+$messages['as'] = array(
+ 'mainpagetext' => "'''মিডিয়াৱিকি সফলভাবে ইনà§à¦¸à¦Ÿà¦² কৰা হ'ল ।'''",
+ 'mainpagedocfooter' => "ৱিকি চ'ফটৱেৰ কেনেকৈ বà§à¦¯à§±à¦¹à¦¾à§° কৰিব [//meta.wikimedia.org/wiki/Help:Contents সদসà§à¦¯à§° সহায়িকা] চাওà¦à¦• ।
+
+== আৰমà§à¦­à¦£à¦¿ কৰিবলৈ ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Asturian (Asturianu) */
+$messages['ast'] = array(
+ 'mainpagetext' => "'''MediaWiki instalóse correchamente.'''",
+ 'mainpagedocfooter' => "Visita la [//meta.wikimedia.org/wiki/Help:Contents Guía d'usuariu] pa saber cómo usar esti software wiki.
+
+== Empecipiando ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Llista de les opciones de configuración]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ de MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de corréu de les ediciones de MediaWiki]",
+);
+
+/** Kotava (Kotava) */
+$messages['avk'] = array(
+ 'mainpagetext' => "'''MediaWiki inkeyen talpeyot.'''",
+);
+
+/** Azerbaijani (Azərbaycanca)
+ * @author Cekli829
+ * @author Vago
+ * @author Wertuose
+ */
+$messages['az'] = array(
+ 'config-back' => '↠Geri',
+ 'config-continue' => 'Davam et →',
+ 'config-page-language' => 'Dil',
+ 'config-page-welcome' => 'MediaWiki-yə xoş gəlmişsiniz!',
+ 'config-page-dbconnect' => 'Verilənlər bazasına birləşdir',
+ 'config-page-dbsettings' => 'Verilənlər bazasının nizamlanması',
+ 'config-page-name' => 'Ad',
+ 'config-page-options' => 'Nizamlamalar:',
+ 'config-page-install' => 'Nizamlama',
+ 'config-page-complete' => 'Komplektləşdir!',
+ 'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
+ 'config-type-ibm_db2' => 'IBM DB2',
+ 'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-utf8' => 'UTF-8',
+ 'config-ns-generic' => 'LayihÉ™',
+ 'config-admin-name' => 'Sizin adınız:',
+ 'config-admin-password' => 'Parol:',
+ 'config-admin-email' => 'E-poçt ünvanı',
+ 'config-help' => 'kömək',
+ 'mainpagetext' => "'''MediaWiki müvəffəqiyyətlə quraşdırıldı.'''",
+ 'mainpagedocfooter' => 'Bu vikinin istifadəsi ilə bağlı məlumat almaq üçün [//meta.wikimedia.org/wiki/Help:Contents İstifadəçi məlumat səhifəsinə] baxın.
+
+== Faydalı keçidlər ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Tənzimləmələrin siyahısı]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki haqqında tez-tez soruşulan suallar]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-poçt siyahısı]',
+);
+
+/** Bashkir (БашҡортÑа)
+ * @author Haqmar
+ */
+$messages['ba'] = array(
+ 'mainpagetext' => '«MediaWiki» уңышлы рәүештә ҡоролдо.',
+ 'mainpagedocfooter' => 'Был вики менән Ñшләү тураһында мәғлүмәтте [//meta.wikimedia.org/wiki/Ярҙам:Белешмә ошонда] табып була.
+
+== Файҙалы Ñығанаҡтар ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Көйләүҙәр иÑемлеге (инг.)];
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki тураһында йыш бирелгән һорауҙар һәм Ñуаптар (инг.)];
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-ның Ñңы верÑиÑлары тураһында хәбәрҙәр алып тороу].',
+);
+
+/** Bavarian (Boarisch)
+ * @author Mucalexx
+ */
+$messages['bar'] = array(
+ 'mainpagetext' => "'''MediaWiki is erfoigreich installird worn.'''",
+ 'mainpagedocfooter' => 'A Hüf zur da Benützung und Konfigurazion voh da Wiki-Software findst auf [//meta.wikimedia.org/wiki/Help:Contents Benützerhåndbuach].
+
+== Starthüfe ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Listen voh de Konfigurazionsvariaablen]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglisten voh de neichen MediaWiki-Versionen]',
+);
+
+/** Southern Balochi (بلوچی مکرانی) */
+$messages['bcc'] = array(
+ 'mainpagetext' => "'''مدیا ÙˆÛŒ Ú©ÛŒ گون موÙقیت نصب بوت.'''",
+ 'mainpagedocfooter' => "مشورت کنیت گون [//meta.wikimedia.org/wiki/Help:Contents User's Guide] په گشیترین اطلاعات په استÙاده Ú†Ù‡ برنامه ویکی.
+
+== شروع بیت ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Bikol Central (Bikol Central) */
+$messages['bcl'] = array(
+ 'mainpagetext' => "'''Instalado na an MediaWiki.'''",
+ 'mainpagedocfooter' => "Konsultarón tabì an [//meta.wikimedia.org/wiki/Help:Contents User's Guide] para sa impormasyon sa paggamit nin progama kaining wiki.
+
+== Pagpopoon ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Belarusian (БеларуÑкаÑ) */
+$messages['be'] = array(
+ 'mainpagetext' => "'''MediaWiki паÑпÑхова ÑžÑталÑванаÑ.'''",
+ 'mainpagedocfooter' => 'Гл. [//meta.wikimedia.org/wiki/Help:Contents Дапаможнік карыÑтальніка (англ.)] па Ð´Ð°Ð»ÐµÐ¹ÑˆÑ‹Ñ Ð·Ð²ÐµÑткі аб карыÑтанні вікі-праграмамі.
+
+== З чаго пачаць ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Пералік параметраў канфігурацыі (англ.)]
+* [//www.mediawiki.org/wiki/Manual:FAQ ЧÐПЫ MediaWiki (англ.)]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ЛіÑтаванне аб выпуÑках MediaWiki (англ.)]',
+);
+
/** Belarusian (TaraÅ¡kievica orthography) (‪БеларуÑÐºÐ°Ñ (тарашкевіца)‬)
* @author EugeneZelenko
* @author Jim-by
@@ -961,10 +1281,10 @@ This program is distributed in the hope that it will be useful, but '''without a
See the GNU General Public License for more details.
You should have received <doclink href=Copying>a copy of the GNU General Public License</doclink> along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. or [http://www.gnu.org/copyleft/gpl.html read it online].",
- 'config-sidebar' => '* [http://www.mediawiki.org ХатнÑÑ Ñтаронка MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents Даведка Ð´Ð»Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°Ñž]
-* [http://www.mediawiki.org/wiki/Manual:Contents Даведка Ð´Ð»Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтратараў]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Ðдказы на чаÑÑ‚Ñ‹Ñ Ð¿Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ–]
+ 'config-sidebar' => '* [//www.mediawiki.org ХатнÑÑ Ñтаронка MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents Даведка Ð´Ð»Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°Ñž]
+* [//www.mediawiki.org/wiki/Manual:Contents Даведка Ð´Ð»Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтратараў]
+* [//www.mediawiki.org/wiki/Manual:FAQ Ðдказы на чаÑÑ‚Ñ‹Ñ Ð¿Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ–]
----
* <doclink href=Readme>Прачытайце</doclink>
* <doclink href=ReleaseNotes>ПалÑпшÑньні Ñž вÑÑ€ÑÑ–Ñ–</doclink>
@@ -980,17 +1300,16 @@ You should have received <doclink href=Copying>a copy of the GNU General Public
'config-unicode-using-utf8' => 'ВыкарыÑтоўваецца бібліÑÑ‚Ñка Unicode-нармалізацыі БраÑна ВібÑра',
'config-unicode-using-intl' => 'ВыкарыÑтоўваецца [http://pecl.php.net/intl intl пашырÑньне з PECL] Ð´Ð»Ñ Unicode-нармалізацыі',
'config-unicode-pure-php-warning' => "'''ПапÑÑ€Ñджаньне''': [http://pecl.php.net/intl ПашырÑньне intl з PECL] — Ð½Ñ Ñлушнае Ð´Ð»Ñ Unicode-нармалізацыі, цÑпер выкарыÑтоўваецца Ð¼Ð°Ñ€ÑƒÐ´Ð½Ð°Ñ PHP-Ñ€ÑалізацыÑ.
-Калі Ñž Ð’Ð°Ñ Ñайт з выÑокай наведваемаÑьцю, раім пачытаць пра [http://www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode-нармалізацыю].",
+Калі Ñž Ð’Ð°Ñ Ñайт з выÑокай наведваемаÑьцю, раім пачытаць пра [//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode-нармалізацыю].",
'config-unicode-update-warning' => "'''ПапÑÑ€Ñджаньне''': уÑталÑÐ²Ð°Ð½Ð°Ñ Ð²ÑÑ€ÑÑ–Ñ Ð±Ñ–Ð±Ð»Ñ–ÑÑ‚Ñкі Ð´Ð»Ñ Unicode-нармалізацыі выкарыÑтоўвае ÑаÑтарÑлую вÑÑ€ÑÑ–ÑŽ бібліÑÑ‚Ñкі з [http://site.icu-project.org/ праекту ICU].
-Раім [http://www.mediawiki.org/wiki/Unicode_normalization_considerations абнавіць], калі ваш Ñайт будзе працаваць зь Unicode.",
- 'config-no-db' => 'Ðемагчыма знайÑьці Ñлушны драйвÑÑ€ базы зьвеÑтак!',
- 'config-no-db-help' => 'Вам Ñ‚Ñ€Ñба ÑžÑталÑваць драйвÑÑ€ базы зьвеÑтак Ð´Ð»Ñ PHP.
+Раім [//www.mediawiki.org/wiki/Unicode_normalization_considerations абнавіць], калі ваш Ñайт будзе працаваць зь Unicode.",
+ 'config-no-db' => 'Ðемагчыма знайÑьці адпаведны драйвÑÑ€ базы зьвеÑтак. Вам неабходна ÑžÑталÑваць драйвÑÑ€ базы зьвеÑтак Ð´Ð»Ñ PHP.
Падтрымліваюцца наÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ñ‚Ñ‹Ð¿Ñ‹ базаў зьвеÑтак: $1.
-Калі вы выкарыÑтоўваеце агульны хоÑтынг, запытайцеÑÑ Ñž Ñвайго хоÑтынг-правайдÑра наконт уÑталÑÐ²Ð°Ð½ÑŒÐ½Ñ Ð¿Ð°Ñ‚Ñ€Ð°Ð±ÑƒÐµÐ¼Ð°Ð³Ð° драйвÑÑ€ базы зьвеÑтак.
-Калі Ð’Ñ‹ кампілÑвалі PHP ÑамаÑтойна, пераканфігуруйце Ñ– ÑабÑрыце Ñго з уключаным кліентам базаў зьвеÑтак, напрыклад, <code>./configure --with-mysql</code>.
-Калі Ð’Ñ‹ ÑžÑталёўвалі PHP з Debian/Ubuntu-Ñ€ÑпазытарыÑ, то вам Ñ‚Ñ€Ñба ÑžÑталÑваць дадаткова пакет <code>php5-mysql</code>',
- 'config-no-fts3' => "'''ПапÑÑ€Ñджаньне''': SQLite Ñтвораны без Ð¼Ð¾Ð´ÑƒÐ»Ñ [http://sqlite.org/fts3.html FTS3], Ð´Ð»Ñ Ð³Ñтага ўнутранага інтÑрфÑйÑу Ð½Ñ Ð±ÑƒÐ´Ð·Ðµ даÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð°Ñьць пошуку.",
+Калі вы выкарыÑтоўваеце агульны хоÑтынг, запытайцеÑÑ Ñž Ñвайго хоÑтынг-правайдÑра наконт уÑталÑÐ²Ð°Ð½ÑŒÐ½Ñ Ð¿Ð°Ñ‚Ñ€Ð°Ð±ÑƒÐµÐ¼Ð°Ð³Ð° драйвÑру базы зьвеÑтак.
+Калі Ð’Ñ‹ кампілÑвалі PHP ÑамаÑтойна, пераканфігуруйце Ñ– ÑабÑрыце Ñго з дазволеным кліентам базаў зьвеÑтак, напрыклад, <code>./configure --with-mysql</code>.
+Калі Ð’Ñ‹ ÑžÑталёўвалі PHP з пакетаў Debian ці Ubuntu, то Вам Ñ‚Ñ€Ñба ÑžÑталÑваць дадаткова модуль <code>php5-mysql</code>.',
+ 'config-no-fts3' => "'''ПапÑÑ€Ñджаньне''': SQLite Ñтвораны без Ð¼Ð¾Ð´ÑƒÐ»Ñ [//sqlite.org/fts3.html FTS3], Ð´Ð»Ñ Ð³Ñтага ўнутранага інтÑрфÑйÑу Ð½Ñ Ð±ÑƒÐ´Ð·Ðµ даÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð°Ñьць пошуку.",
'config-register-globals' => "'''ПапÑÑ€Ñджаньне: ÑƒÐºÐ»ÑŽÑ‡Ð°Ð½Ð°Ñ Ð¾Ð¿Ñ†Ñ‹Ñ PHP <code>[http://php.net/register_globals register_globals]</code>.'''
'''Ðдключыце Ñе, калі можаце.'''
MediaWiki будзе працаваць, але гÑта панізіць узровень бÑÑьпекі ÑÑрвÑра.",
@@ -1019,12 +1338,14 @@ MediaWiki патрабуе падтрымкі UTF-8 Ð´Ð»Ñ Ñлушнай пра
'config-memory-bad' => "'''ПапÑÑ€Ñджаньне:''' памер PHP <code>memory_limit</code> Ñкладае $1.
Верагодна, гÑта вельмі мала.
УÑталÑваньне можа быць нÑўдалым!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] уÑталÑваны',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] уÑталÑваны',
'config-apc' => '[http://www.php.net/apc APC] уÑталÑваны',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] уÑталÑваны',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] уÑталÑваны',
- 'config-no-cache' => "'''ПапÑÑ€Ñджаньне:''' немагчыма знайÑьці [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] ці [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''ПапÑÑ€Ñджаньне:''' немагчыма знайÑьці [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] ці [http://www.iis.net/download/WinCacheForPhp WinCache].
Ðб’ектнае кÑшаваньне Ð½Ñ ÑžÐºÐ»ÑŽÑ‡Ð°Ð½Ð°Ðµ.",
+ 'config-mod-security' => "'''ПапÑÑ€Ñджаньне''': на Вашым ÑžÑб-ÑÑрверы ўключаны [http://modsecurity.org/ mod_security]. У выпадку нÑÑлушнай наладцы, ён можа Ñтаць прычынай праблемаў Ð´Ð»Ñ MediaWiki ці іншага праграмнага забеÑьпÑчÑньнÑ, Ñкое дазвалÑе ўдзельнікам даÑылаць на ÑÑрвÑÑ€ любы зьмеÑÑ‚.
+ГлÑдзіце [http://modsecurity.org/documentation/ дакумÑнтацыю mod_security] ці зьвÑрніцеÑÑ Ñž падтрымку Вашага хоÑту, калі Ñž Ð’Ð°Ñ ÑƒÐ·ÑŒÐ½Ñ–ÐºÐ°ÑŽÑ†ÑŒ Ð²Ñ‹Ð¿Ð°Ð´ÐºÐ¾Ð²Ñ‹Ñ Ð¿Ñ€Ð°Ð±Ð»ÐµÐ¼Ñ‹.",
'config-diff3-bad' => 'GNU diff3 Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹.',
'config-imagemagick' => 'Знойдзены ImageMagick: <code>$1</code>.
ПаÑÑŒÐ»Ñ ÑžÐºÐ»ÑŽÑ‡ÑÐ½ÑŒÐ½Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð°Ðº будзе ўключанае маштабаваньне выÑваў.',
@@ -1034,14 +1355,20 @@ MediaWiki патрабуе падтрымкі UTF-8 Ð´Ð»Ñ Ñлушнай пра
Маштабаваньне выÑваў будзе адключанае.',
'config-no-uri' => "'''Памылка:''' Ðе магчыма вызначыць цÑперашні URI.
УÑталÑваньне Ñпыненае.",
+ '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> ÑƒÑ€Ð°Ð·ÑŒÐ»Ñ–Ð²Ð°Ñ Ð´Ð° Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½ÑŒÐ½Ñ Ð°Ð´Ð²Ð¾Ð»ÑŒÐ½Ð°Ð³Ð° коду.
-Хоць MediaWiki Ñ– правÑрае ÑžÑе файлы перад захаваньнем, вельмі Ñ€ÑкамÑндуецца [http://www.mediawiki.org/wiki/Manual:Security#Upload_security закрыць гÑтую ўразьліваÑьць] перад уключÑньнем магчымаÑьці загрузкі файлаў.",
+Хоць MediaWiki Ñ– правÑрае ÑžÑе файлы перад захаваньнем, вельмі Ñ€ÑкамÑндуецца [//www.mediawiki.org/wiki/Manual:Security#Upload_security закрыць гÑтую ўразьліваÑьць] перад уключÑньнем магчымаÑьці загрузкі файлаў.",
+ 'config-no-cli-uploads-check' => "'''ПапÑÑ€Ñджаньне:''' Ð’Ð°ÑˆÐ°Ñ Ð´Ñ‹Ñ€ÑÐºÑ‚Ð¾Ñ€Ñ‹Ñ Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð°Ðº па змоўчваньні (<code>$1</code>), не Ð¿Ñ€Ð°Ð²ÐµÑ€Ð°Ð½Ð°Ñ Ð½Ð° ўразьліваÑьць да Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½ÑŒÐ½Ñ Ð°Ð´Ð²Ð¾Ð»ÑŒÐ½Ñ‹Ñ… Ñкрыптоў Ð¿Ð°Ð´Ñ‡Ð°Ñ ÑƒÑталÑÐ²Ð°Ð½ÑŒÐ½Ñ CLI.
+.",
'config-brokenlibxml' => 'У Вашай ÑÑ‹ÑÑ‚Ñме ÑžÑталÑÐ²Ð°Ð½Ñ‹Ñ PHP Ñ– libxml2 зь неÑумÑшчальнымі вÑÑ€ÑÑ–Ñмі, што можа прывеÑьці да Ð¿Ð°ÑˆÐºÐ¾Ð´Ð¶Ð°Ð½ÑŒÐ½Ñ Ð·ÑŒÐ²ÐµÑтак MediaWiki Ñ– іншых ÑžÑб-даÑтаÑаваньнÑÑž.
-Ðбнавіце PHP да вÑÑ€ÑÑ–Ñ– 5.2.9 ці болей позьнÑй, а libxml2 да 2.7.3 ці болей позьнÑй ([http://bugs.php.net/bug.php?id=45996 паведамленьне пра памылку на Ñайце PHP]).
+Ðбнавіце PHP да вÑÑ€ÑÑ–Ñ– 5.2.9 ці болей позьнÑй, а libxml2 да 2.7.3 ці болей позьнÑй ([//bugs.php.net/bug.php?id=45996 паведамленьне пра памылку на Ñайце PHP]).
УÑталÑваньне перарванае.',
'config-using531' => 'PHP $1 не ÑумÑшчальнае з MediaWiki з-за памылкі Ñž перадачы парамÑтраў па ўказальніку да <code>__call()</code>.
Ðбнавіце PHP да вÑÑ€ÑÑ–Ñ– 5.3.2 ці болей позьнÑй, ці адкаціце да вÑÑ€ÑÑ–Ñ– 5.3.0 каб гÑта выправіць.
УÑталÑваньне перарванае.',
+ 'config-suhosin-max-value-length' => 'Suhosin уÑталÑваны Ñ– абмÑжоўвае даўжыню парамÑтра GET у $1 {{PLURAL:$1|байт|байты|байтаў}}. ResourceLoader Ð´Ð»Ñ MediaWiki будзе абходзіць гÑтае абмежаваньне, што, аднак, адаб’ецца на хуткадзеÑньні. Калі магчыма, варта ÑžÑтанавіць suhosin.get.max_value_length роўным 1024 ці больш у php.ini, а такÑама ÑžÑтанавіць тое ж значÑньне Ð´Ð»Ñ $wgResourceLoaderMaxQueryLength у LocalSettings.php.',
'config-db-type' => 'Тып базы зьвеÑтак:',
'config-db-host' => 'ХоÑÑ‚ базы зьвеÑтак:',
'config-db-host-help' => 'Калі ÑÑрвÑÑ€ Вашай базы зьвеÑтак знаходзіцца на іншым ÑÑрвÑры, увÑдзіце тут Ñ–Ð¼Ñ Ñ…Ð¾Ñта ці IP-адраÑ.
@@ -1089,12 +1416,13 @@ MediaWiki патрабуе падтрымкі UTF-8 Ð´Ð»Ñ Ñлушнай пра
У '''бінарным (binary)''' Ñ€Ñжыме MediaWiki захоўвае Ñ‚ÑкÑÑ‚Ñ‹ Ñž UTF-8 у палёх тыпу binary.
ГÑÑ‚Ñ‹ Ñ€Ñжым болей ÑÑ„Ñктыўны за Ñ€Ñжым MySQL UTF-8 Ñ– дазвалÑе выкарыÑтоўваць увеÑÑŒ абÑÑг ÑымбалÑÑž Unicode.
У Ñ€Ñжыме '''UTF-8''' MySQL будзе ведаць, у Ñкім кадаваньне Ð’Ñ‹ зьмÑшчаеце зьвеÑткі, Ñ– будзе вÑртаць Ñ–Ñ… у адпаведным кадаваньні,
-але MySQL Ð½Ñ Ð¼Ð¾Ð¶Ð° ўтрымліваць Ñымбалі па-за [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Стандартным шматмоўным плаÑтом] ÑымбалÑÑž Unicode.",
+але MySQL Ð½Ñ Ð¼Ð¾Ð¶Ð° ўтрымліваць Ñымбалі па-за [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Стандартным шматмоўным плаÑтом] ÑымбалÑÑž Unicode.",
'config-mysql-old' => 'Патрабуецца MySQL $1 ці навейшаÑ, уÑталÑÐ²Ð°Ð½Ð°Ñ Ð²ÑÑ€ÑÑ–Ñ $2.',
'config-db-port' => 'Порт базы зьвеÑтак:',
'config-db-schema' => 'Схема Ð´Ð»Ñ MediaWiki',
'config-db-schema-help' => 'ГÑÑ‚Ð°Ñ Ñхема ÑÐ»ÑƒÑˆÐ½Ð°Ñ Ñž большаÑьці выпадкаў.
ЗьмÑнÑйце Ñе толькі тады, калі Ð’Ñ‹ ведаеце, што гÑта неабходна.',
+ 'config-pg-test-error' => "Ðемагчыма далучыцца да базы зьвеÑтак '''$1''': $2",
'config-sqlite-dir' => 'ДырÑÐºÑ‚Ð¾Ñ€Ñ‹Ñ Ð·ÑŒÐ²ÐµÑтак SQLite:',
'config-sqlite-dir-help' => "SQLite захоўвае ÑžÑе зьвеÑткі Ñž адзіным файле.
@@ -1112,6 +1440,7 @@ MediaWiki патрабуе падтрымкі UTF-8 Ð´Ð»Ñ Ñлушнай пра
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'MediaWiki падтрымлівае наÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ ÑÑ‹ÑÑ‚Ñмы базаў зьвеÑтак:
$1
@@ -1121,10 +1450,12 @@ $1
'config-support-postgres' => '* $1 — вÑÐ´Ð¾Ð¼Ð°Ñ ÑÑ‹ÑÑ‚Ñма базы зьвеÑтак з адкрытым кодам, ÑÐºÐ°Ñ Ð·ÑŒÑўлÑецца альтÑрнатывай MySQL ([http://www.php.net/manual/en/pgsql.installation.php Ñк кампілÑваць PHP з падтрымкай PostgreSQL]). Яна можа ўтрымліваць Ð´Ñ€Ð¾Ð±Ð½Ñ‹Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÑ–, Ñ– не Ñ€ÑкамÑндуецца выкарыÑтоўваць Ñе Ð´Ð»Ñ Ð¿Ñ€Ð°Ñ†ÑƒÑŽÑ‡Ñ‹Ñ… праектаў.',
'config-support-sqlite' => '* $1 — невÑÐ»Ñ–ÐºÐ°Ñ ÑÑ‹ÑÑ‚Ñма базы зьвеÑтак, ÑÐºÐ°Ñ Ð¼Ð°Ðµ вельмі добрую падтрымку. ([http://www.php.net/manual/en/pdo.installation.php Ñк кампілÑваць PHP з падтрымкай SQLite], выкарыÑтоўвае PDO)',
'config-support-oracle' => '* $1 зьÑўлÑецца камÑрцыйнай прафÑÑійнай базай зьвеÑтак. ([http://www.php.net/manual/en/oci8.installation.php Як ÑкампілÑваць PHP з падтрымкай OCI8])',
+ 'config-support-ibm_db2' => '* $1 — база зьвеÑтак камÑрцыйнага прадпрыемÑтва.',
'config-header-mysql' => 'Ðалады MySQL',
'config-header-postgres' => 'Ðалады PostgreSQL',
'config-header-sqlite' => 'Ðалады SQLite',
'config-header-oracle' => 'Ðалады Oracle',
+ 'config-header-ibm_db2' => 'Ðалады IBM DB2',
'config-invalid-db-type' => 'ÐÑÑлушны тып базы зьвеÑтак',
'config-missing-db-name' => 'Ð’Ñ‹ павінны ўвеÑьці значÑньне парамÑтру Â«Ð†Ð¼Ñ Ð±Ð°Ð·Ñ‹ зьвеÑтак»',
'config-missing-db-host' => 'Ð’Ñ‹ павінны ўвеÑьці значÑньне парамÑтру «ХоÑÑ‚ базы зьвеÑтак»',
@@ -1198,6 +1529,13 @@ chmod a+w $3</pre>',
'config-mysql-engine' => 'Рухавік Ñховішча:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => "'''ПапÑÑ€Ñджаньне''': Ð’Ñ‹ выбралі MyISAM у ÑкаÑьці рухавіка Ð´Ð»Ñ Ð·Ð°Ñ…Ð¾ÑžÐ²Ð°Ð½ÑŒÐ½Ñ Ð·ÑŒÐ²ÐµÑтак у MySQL, Ñкі не Ñ€ÑкамÑндуецца да выкарыÑÑ‚Ð°Ð½ÑŒÐ½Ñ Ð· MediaWiki па прычынах:
+* кепÑÐºÐ°Ñ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼ÐºÐ° паралельнай апрацоўкі з-за таблічных блÑкаваньнÑÑž;
+* Ð±Ð¾Ð»ÑŒÑˆÐ°Ñ Ñ–Ð¼Ð°Ð²ÐµÑ€Ð½Ð°Ñьць Ð¿Ð°ÑˆÐºÐ¾Ð´Ð¶Ð°Ð½ÑŒÐ½Ñ Ð·ÑŒÐ²ÐµÑтак у параўнаньні зь іншымі рухавікамі;
+* код MediaWiki не ва ÑžÑÑ–Ñ… выпадках улічвае аÑабліваÑьці MyISAM.
+
+Калі Ваш MySQL-ÑÑрвÑÑ€ падтрымлівае InnoDB, вельмі Ñ€ÑкамÑндуецца выкарыÑтаньне менавіта гÑтага рухавіка.
+Калі MySQL-ÑÑрвÑÑ€ не падтрымлівае InnoDB, пÑўна, наÑтаў Ñ‡Ð°Ñ Ð°Ð±Ð½Ð°Ð²Ñ–Ñ†ÑŒ Ñго.",
'config-mysql-engine-help' => "'''InnoDB''' — звычайна найбольш Ñлушны варыÑнт, таму што добра падтрымлівае паралелізм.
'''MyISAM''' можа быць хутчÑйшай у вікі з адным удзельнікам, ці толькі Ð´Ð»Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ.
@@ -1208,7 +1546,8 @@ chmod a+w $3</pre>',
'config-mysql-charset-help' => "У '''двайковым Ñ€Ñжыме''', MediaWiki захоўвае Ñ‚ÑкÑÑ‚ у кадаваньні UTF-8 у базе зьвеÑтак у двайковых палÑÑ….
ГÑта болей ÑÑ„Ñктыўна за Ñ€Ñжым MySQL UTF-8, Ñ– дазвалÑе Вам выкарыÑтоўваць увеÑÑŒ дыÑпазон ÑымбалÑÑž Unicode.
-У '''Ñ€Ñжыме UTF-8''', MySQL ведае, ÑÐºÐ°Ñ Ñ‚Ð°Ð±Ð»Ñ–Ñ†Ñ‹ ÑымбалÑÑž выкарыÑтоўваецца Ñž Вашых зьвеÑтках, Ñ– можа адпаведна прадÑтаўлÑць Ñ– канвÑртаваць Ñ–Ñ…, але гÑта не дазволіць Вам захоўваць Ñымбалі па-за межамі [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Базавага шматмоўнага дыÑпазону].",
+У '''Ñ€Ñжыме UTF-8''', MySQL ведае, ÑÐºÐ°Ñ Ñ‚Ð°Ð±Ð»Ñ–Ñ†Ñ‹ ÑымбалÑÑž выкарыÑтоўваецца Ñž Вашых зьвеÑтках, Ñ– можа адпаведна прадÑтаўлÑць Ñ– канвÑртаваць Ñ–Ñ…, але гÑта не дазволіць Вам захоўваць Ñымбалі па-за межамі [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Базавага шматмоўнага дыÑпазону].",
+ 'config-ibm_db2-low-db-pagesize' => "Ð’Ð°ÑˆÐ°Ñ Ð±Ð°Ð·Ð° зьвеÑтак DB2 мае таблічную праÑторну зь недаÑтатковым памерам Ñтаронкі. Памер Ñтаронкі муÑіць быць Ð½Ñ Ð¼ÐµÐ½Ñˆ за '''32к'''.",
'config-site-name' => 'Ðазва вікі:',
'config-site-name-help' => 'Ðазва будзе паказвацца Ñž загалоўку браўзÑра Ñ– Ñž некаторых іншых меÑцах.',
'config-site-name-blank' => 'УвÑдзіце назву Ñайта.',
@@ -1244,6 +1583,8 @@ chmod a+w $3</pre>',
'config-subscribe' => 'ПадпіÑацца на [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ÑÑŒÐ¿Ñ–Ñ Ñ€Ð°ÑпаўÑÑŽÐ´Ð¶Ð°Ð½ÑŒÐ½Ñ Ð½Ð°Ð²Ñ–Ð½Ð°Ñž пра зьÑўленьне новых вÑÑ€ÑÑ–ÑÑž].',
'config-subscribe-help' => 'ГÑта Ð½Ñ Ð²ÐµÐ»ÑŒÐ¼Ñ– актыўны ÑÑŒÐ¿Ñ–Ñ Ñ€Ð°ÑпаўÑÑŽÐ´Ð¶Ð°Ð½ÑŒÐ½Ñ Ð½Ð°Ð²Ñ–Ð½Ð°Ñž пра зьÑўленьне новых вÑÑ€ÑÑ–ÑÑž, Ñкі ўключаючы Ð²Ð°Ð¶Ð½Ñ‹Ñ Ð½Ð°Ð²Ñ–Ð½Ñ‹ пра бÑÑьпеку.
Вам неабходна падпіÑацца на Ñго Ñ– абнавіць Вашае ÑžÑталÑваньне MediaWiki, калі зьÑвÑцца Ð½Ð¾Ð²Ñ‹Ñ Ð²ÑÑ€ÑÑ–Ñ–.',
+ 'config-subscribe-noemail' => 'Ð’Ñ‹ Ñпрабавалі падпіÑацца на раÑÑылку паведамленьнÑÑž пра выхад новых вÑÑ€ÑÑ–ÑÑž, не пазначыўшы Ð°Ð´Ñ€Ð°Ñ Ñлектроннай пошты.
+Калі лаÑка, падайце Ñлушны адраÑ, калі Ð’Ñ‹ жадаеце падпіÑацца на раÑÑылку.',
'config-almost-done' => 'Ð’Ñ‹ амаль што Ñкончылі!
ÐÑÑ‚Ð°Ñ‚Ð½Ñ–Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ можна прапуÑьціць Ñ– пачаць уÑталÑваньне вікі.',
'config-optional-continue' => 'Задаць болей пытаньнÑÑž.',
@@ -1265,23 +1606,25 @@ chmod a+w $3</pre>',
СцÑнар '''{{int:config-profile-fishbowl}}''' дазвалÑе Ñ€Ñдагаваць зацьверджаным удзельнікам, але ÑžÑе могуць праглÑдаць Ñтаронкі Ñ–Ñ… гіÑторыю.
'''{{int:config-profile-private}}''' дазвалÑе праглÑдаць Ñ– Ñ€Ñдагаваць Ñтаронкі толькі зацьверджаным удзельнікам.
-Больш ÑÐºÐ»Ð°Ð´Ð°Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ð²Ñ‹ ўдзельнікаў даÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ð¿Ð°ÑÑŒÐ»Ñ ÑžÑталÑваньнÑ, глÑдзіце [http://www.mediawiki.org/wiki/Manual:User_rights адпаведную Ñтаронку дакумÑнтацыі].",
+Больш ÑÐºÐ»Ð°Ð´Ð°Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ð²Ñ‹ ўдзельнікаў даÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ð¿Ð°ÑÑŒÐ»Ñ ÑžÑталÑваньнÑ, глÑдзіце [//www.mediawiki.org/wiki/Manual:User_rights адпаведную Ñтаронку дакумÑнтацыі].",
'config-license' => 'ÐўтарÑÐºÑ–Ñ Ð¿Ñ€Ð°Ð²Ñ‹ Ñ– ліцÑнзіÑ:',
'config-license-none' => 'Без інфармацыі пра ліцÑнзію',
'config-license-cc-by-sa' => 'Creative Commons Attribution Share Alike',
+ 'config-license-cc-by' => 'Creative Commons Attribution',
'config-license-cc-by-nc-sa' => 'Creative Commons Attribution Non-Commercial Share Alike',
- 'config-license-cc-0' => 'Creative Commons Zero',
- 'config-license-gfdl-old' => 'GNU Free Documentation License 1.2',
- 'config-license-gfdl-current' => 'GNU Free Documentation License 1.3 ці болей позьнÑÑ',
+ 'config-license-cc-0' => 'Creative Commons Zero (грамадзкі набытак)',
+ 'config-license-gfdl' => 'GNU Free Documentation License 1.3 ці болей позьнÑÑ',
'config-license-pd' => 'Грамадзкі набытак',
'config-license-cc-choose' => 'Выберыце іншую ліцÑнзію Creative Commons',
- 'config-license-help' => "Ð¨Ð¼Ð°Ñ‚Ð»Ñ–ÐºÑ–Ñ Ð°Ð´ÐºÑ€Ñ‹Ñ‚Ñ‹Ñ Ð²Ñ–ÐºÑ– разьмÑшчаюць унёÑкі на ўмовах ліцÑнзіі [http://freedomdefined.org/Definition вольнай ліцÑнзіі].
-ГÑта дазвалÑе Ñтвараць ÑÑÐ½Ñ Ñупольнай улаÑнаÑьці Ñ– Ñадзейнічае доўгатÑрміновым унёÑкам.
-ГÑта не неабходна Ð´Ð»Ñ Ð¿Ñ€Ñ‹Ð²Ð°Ñ‚Ð½Ñ‹Ñ… Ñ– карпаратыўных вікі.
+ 'config-license-help' => "Ð¨Ð¼Ð°Ñ‚Ð»Ñ–ÐºÑ–Ñ Ð°Ð´ÐºÑ€Ñ‹Ñ‚Ñ‹Ñ Ð²Ñ–ÐºÑ– публікуюць увеÑÑŒ унёÑак у праект на ўмовах [http://freedomdefined.org/Definition вольнай ліцÑнзіі].
+ГÑта дазвалÑе Ñтвараць ÑÑ„Ñкт Ñупольнай улаÑнаÑьці Ñ– Ñадзейнічае доўгатÑрміноваму ўнёÑку.
+Ð”Ð»Ñ Ð¿Ñ€Ñ‹Ð²Ð°Ñ‚Ð½Ñ‹Ñ… Ñ– карпаратыўных вікі гÑта не зьÑўлÑецца неабходнаÑьцю.
-Калі Ð’Ñ‹ жадаеце выкарыÑтоўваць Ñ‚ÑкÑÑ‚ з ВікіпÑдыі, Ñ– жадаеце каб ВікіпÑÐ´Ñ‹Ñ Ð¼Ð°Ð³Ð»Ð° прынімаць Ñ‚ÑкÑÑ‚ ÑкапіÑваны з Вашай вікі, Вам неабходна выбраць ліцÑнзію '''Creative Commons Attribution Share Alike'''.
+Калі Ð’Ñ‹ жадаеце выкарыÑтоўваць Ñ‚ÑкÑÑ‚ зь ВікіпÑдыі, Ñ– жадаеце, каб ВікіпÑÐ´Ñ‹Ñ Ð¼Ð°Ð³Ð»Ð° прымаць Ñ‚ÑкÑÑ‚Ñ‹, ÑкапіÑÐ²Ð°Ð½Ñ‹Ñ Ð· Вашай вікі, Вам неабходна выбраць ліцÑнзію '''Creative Commons Attribution Share Alike'''.
-Раней ВікіпÑÐ´Ñ‹Ñ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñтоўвала ліцÑнзію GNU Free Documentation. Яна ÑžÑÑ‘ ÑÑˆÑ‡Ñ Ð´Ð·ÐµÐ¹Ð½Ñ–Ñ‡Ð°Ðµ, але Ñна ўтрымлівае Ð½ÐµÐºÐ°Ñ‚Ð¾Ñ€Ñ‹Ñ Ð¼Ð¾Ð¼Ð°Ð½Ñ‚Ñ‹, ÑÐºÑ–Ñ ÑžÑкладнÑюць паўторнае выкарыÑтоўваньне Ñ– інтÑрпрÑтацыю матÑрыÑлаў.",
+Раней ВікіпÑÐ´Ñ‹Ñ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹Ñтоўвала ліцÑнзію GNU Free Documentation.
+Яна ÑžÑÑ‘ ÑÑˆÑ‡Ñ Ð´Ð·ÐµÐ¹Ð½Ñ–Ñ‡Ð°Ðµ, але Ñна ўтрымлівае Ð½ÐµÐºÐ°Ñ‚Ð¾Ñ€Ñ‹Ñ Ð¼Ð¾Ð¼Ð°Ð½Ñ‚Ñ‹,
+ÑÐºÑ–Ñ ÑžÑкладнÑюць паўторнае выкарыÑтоўваньне Ñ– інтÑрпрÑтацыю матÑрыÑлаў.",
'config-email-settings' => 'Ðалады Ñлектроннай пошты',
'config-enable-email' => 'Дазволіць выходзÑÑ‡Ñ‹Ñ ÑÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ñ‹Ñ Ð»Ñ–ÑÑ‚Ñ‹',
'config-enable-email-help' => 'Калі Ð’Ñ‹ жадаеце, каб працавала ÑÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾ÑˆÑ‚Ð°, неабходна Ñканфігураваць PHP [http://www.php.net/manual/en/mail.configuration.php адпаведным чынам].
@@ -1303,7 +1646,7 @@ chmod a+w $3</pre>',
'config-upload-settings' => 'Загрузкі выÑваў Ñ– файлаў',
'config-upload-enable' => 'Дазволіць загрузку файлаў',
'config-upload-help' => 'Дазвол загрузкі файлаў можа патÑнцыйна пагражаць бÑÑьпекі ÑÑрвÑра.
-Дадатковую інфармацыю можна атрымаць Ñž [http://www.mediawiki.org/wiki/Manual:Security разьдзеле бÑÑьпекі].
+Дадатковую інфармацыю можна атрымаць Ñž [//www.mediawiki.org/wiki/Manual:Security разьдзеле бÑÑьпекі].
Каб дазволіць загрузку файлаў, зьмÑніце Ñ€Ñжым падкаталёга <code>images</code> у карÑннай дырÑкторыі MediaWiki так, каб ÑžÑб-ÑÑрвÑÑ€ меў доÑтуп на запіÑ.
Потым дазвольце гÑтую магчымаÑьць.',
@@ -1312,12 +1655,12 @@ chmod a+w $3</pre>',
У ідÑальным выпадку, Ñна не павінна мець доÑтупу з ІнтÑрнÑту.',
'config-logo' => 'URL-Ð°Ð´Ñ€Ð°Ñ Ð»Ñгатыпу:',
'config-logo-help' => 'Ðфармленьне MediaWiki па змоўчваньні уключае праÑтору Ð´Ð»Ñ Ð»Ñгатыпу памерам 135×160 пікÑÑлÑÑž у верхнім левым куце.
-Загрузіце выÑву адпаведнага памеру, Ñ– увÑдзіце тут URL-адраÑ.
+Загрузіце выÑву адпаведнага памеру Ñ– увÑдзіце тут URL-адраÑ.
-Калі Ð’Ñ‹ не жадаеце мець ніÑкага лÑгатыпу, пакіньце гÑтае поле пуÑтым.',
+Калі Ð’Ñ‹ не жадаеце мець ніÑкага лÑгатыпу, пакіньце поле пуÑтым.',
'config-instantcommons' => 'Дазволіць Instant Commons',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons Instant Commons] — магчымаÑьць, ÑÐºÐ°Ñ Ð´Ð°Ð·Ð²Ð°Ð»Ñе вікі выкарыÑтоўваць выÑвы, гукі Ñ– Ñ–Ð½ÑˆÑ‹Ñ Ð¼ÑдыÑ, ÑÐºÑ–Ñ Ð·Ð½Ð°Ñ…Ð¾Ð´Ð·Ñцца на Ñайце [http://commons.wikimedia.org/ Wikimedia Commons].
-Каб гÑта зрабіць, MediaWiki патрабуе доÑтупу да ІнтÑрнÑту.
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] — магчымаÑьць, ÑÐºÐ°Ñ Ð´Ð°Ð·Ð²Ð°Ð»Ñе вікі выкарыÑтоўваць выÑвы, гукі Ñ– Ñ–Ð½ÑˆÑ‹Ñ Ð¼ÑдыÑ, ÑÐºÑ–Ñ Ð·Ð½Ð°Ñ…Ð¾Ð´Ð·Ñцца на Ñайце [//commons.wikimedia.org/ Wikimedia Commons].
+Каб гÑта зрабіць, MediaWiki патрабуе доÑтупу да ІнтÑрнÑту.
Каб даведацца болей пра гÑтую магчымаÑьць, уключаючы інÑтрукцыю пра тое, Ñк Ñе ÑžÑтанавіць Ñž любой вікі, Ð°ÐºÑ€Ð°Ð¼Ñ Wikimedia Commons, глÑдзіце [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos дакумÑнтацыю].',
'config-cc-error' => 'Выбар ліцÑнзіі Creative Commons Ð½Ñ Ð´Ð°Ñž вынікаў.
@@ -1353,6 +1696,7 @@ chmod a+w $3</pre>',
'config-install-step-failed' => 'не атрымалаÑÑ',
'config-install-extensions' => 'Уключаючы пашырÑньні',
'config-install-database' => 'Ðалада базы зьвеÑтак',
+ 'config-install-schema' => 'СтварÑньне Ñхемы',
'config-install-pg-schema-not-exist' => 'Схема PostgreSQL не Ñ–Ñнуе',
'config-install-pg-schema-failed' => 'Ðемагчыма Ñтварыць табліцу.
УпÑўніцеÑÑ, што карыÑтальнік «$1» можа піÑаць у Ñхему «$2».',
@@ -1360,10 +1704,17 @@ chmod a+w $3</pre>',
'config-install-pg-plpgsql' => 'Праверка падтрымкі мовы PL/pgSQL',
'config-pg-no-plpgsql' => 'Вам неабходна ÑžÑталÑваць падтрымку мовы PL/pgSQL у базе зьвеÑтак $1',
'config-pg-no-create-privs' => 'Рахунак, Ñкі Ð’Ñ‹ пазначылі Ð´Ð»Ñ ÑžÑталÑÐ²Ð°Ð½ÑŒÐ½Ñ Ð½Ñ Ð¼Ð°Ðµ даÑтаткова правоў Ð´Ð»Ñ ÑтварÑÐ½ÑŒÐ½Ñ Ñ€Ð°Ñ…ÑƒÐ½ÐºÑƒ.',
+ 'config-pg-not-in-role' => 'Пазначаны Вамі рахунак Ð´Ð»Ñ ÑžÑб-карыÑтальніка ўжо Ñ–Ñнуе.
+Пазначаны Вамі рахунак Ð´Ð»Ñ ÑžÑталÑÐ²Ð°Ð½ÑŒÐ½Ñ Ð½Ñ Ð¼Ð°Ðµ правоў Ñ– не зьÑўлÑецца ÑÑбрам ролі ÑžÑб-карыÑтальніка, таму немагчыма Ñтварыць аб’екты, ÑÐºÑ–Ñ Ð½Ð°Ð»ÐµÐ¶Ð°Ñ†ÑŒ ÑžÑб-карыÑтальніку.
+
+ЦÑпер MediaWiki патрабуе, каб табліцы належалі да ÑžÑб-карыÑтальніку. Калі лаÑка, пазначце іншы рахунак, ці націÑьніце кнопку «ВÑрнуцца» Ñ– пазначце карыÑтальніка з неабходнымі Ð´Ð»Ñ ÑžÑталÑÐ²Ð°Ð½ÑŒÐ½Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ñ–.',
'config-install-user' => 'СтварÑньне карыÑтальніка базы зьвеÑтак',
'config-install-user-alreadyexists' => 'Удзельнік «$1» ужо Ñ–Ñнуе',
'config-install-user-create-failed' => 'Ðемагчыма Ñтварыць ўдзельніка «$1»: $2',
'config-install-user-grant-failed' => 'Ðемагчыма даць правы удзельніку «$1»: $2',
+ 'config-install-user-missing' => 'Пазначаны карыÑтальнік «$1» не Ñ–Ñнуе.',
+ 'config-install-user-missing-create' => 'Пазначаны карыÑтальнік «$1» не Ñ–Ñнуе.
+Калі лаÑка, пазначце «Ñтварыць рахунак», калі Ð’Ñ‹ жадаеце Ñго Ñтварыць.',
'config-install-tables' => 'СтварÑньне табліцаў',
'config-install-tables-exist' => "'''ПапÑÑ€Ñджаньне''': ВыглÑдае, што табліцы MediaWiki ужо Ñ–Ñнуюць.
СтварÑньне прапушчанае.",
@@ -1373,10 +1724,11 @@ chmod a+w $3</pre>',
'config-install-interwiki-exists' => "'''ПапÑÑ€Ñджаньне''': выглÑдае, што табліца інтÑрвікі ўжо запоўненаÑ.
Ð¡ÑŒÐ¿Ñ–Ñ Ð¿Ð° змоўчваньні прапушчаны.",
'config-install-stats' => 'ІніцыÑлізацыі ÑтатыÑтыкі',
- 'config-install-keys' => 'СтварÑньне ÑакрÑтнага ключа',
+ 'config-install-keys' => 'СтварÑньне ÑакрÑтных ключоў',
'config-insecure-keys' => "'''ПапÑÑ€Ñджаньне:''' {{PLURAL:$2|Ключ бÑÑьпекі $1 Ñтвораны|Ключы бÑÑьпекі $1 ÑтвораныÑ}} Ð¿Ð°Ð´Ñ‡Ð°Ñ ÑƒÑталÑваньнÑ, не зьÑўлÑюцца поўнаÑьцю бÑÑьпечнымі. РÑкамÑндуецца зьмÑніць {{PLURAL:$2|Ñго ўручную|Ñ–Ñ… уручную}}.",
'config-install-sysop' => 'СтварÑньне рахунку адмініÑтратара',
- 'config-install-subscribe-fail' => 'Ðемагчыма падпіÑацца на «mediawiki-announce»',
+ 'config-install-subscribe-fail' => 'Ðемагчыма падпіÑацца на «mediawiki-announce»: $1',
+ 'config-install-subscribe-notpossible' => 'cURL не ÑžÑталÑваны, allow_url_fopen недаÑтупны.',
'config-install-mainpage' => 'СтварÑньне галоўнай Ñтаронкі Ñа зьмеÑтам па змоўчваньні',
'config-install-extension-tables' => 'СтварÑньне табліцаў Ð´Ð»Ñ ÑžÐºÐ»ÑŽÑ‡Ð°Ð½Ñ‹Ñ… пашырÑньнÑÑž',
'config-install-mainpage-failed' => 'Ðемагчыма ÑžÑтавіць галоўную Ñтаронку: $1',
@@ -1397,6 +1749,13 @@ $3
Калі Ð’Ñ‹ гÑта зробіце, Ð’Ñ‹ можаце '''[$2 ўвайÑьці Ñž Вашую вікі]'''.",
'config-download-localsettings' => 'Загрузіць LocalSettings.php',
'config-help' => 'дапамога',
+ 'mainpagetext' => "'''MediaWiki паÑьпÑхова ÑžÑталÑванаÑ.'''",
+ 'mainpagedocfooter' => 'ГлÑдзіце [//meta.wikimedia.org/wiki/Help:Contents дапаможнік карыÑтальніка] Ð´Ð»Ñ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ð½ÑŒÐ½Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ– па карыÑтаньні вікі-праграмамі.
+
+== З чаго пачаць ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Ð¡ÑŒÐ¿Ñ–Ñ Ð¿Ð°Ñ€Ð°Ð¼Ñтраў канфігурацыі]
+* [//www.mediawiki.org/wiki/Manual:FAQ ЧаÑÑ‚Ñ‹Ñ Ð¿Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ– MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce РаÑÑылка паведамленьнÑÑž пра зьÑўленьне новых вÑÑ€ÑÑ–ÑÑž MediaWiki]',
);
/** Bulgarian (БългарÑки)
@@ -1424,6 +1783,12 @@ $1',
$1',
'config-session-error' => 'Грешка при Ñъздаване на ÑеÑиÑ: $1',
+ 'config-session-expired' => 'Срокът на валидноÑÑ‚ на данните от ÑеÑиÑта Ñа изтекли.
+ПродължителноÑтта на ÑеÑиите е наÑтроена на $1.
+Това може да бъде увеличено чрез наÑтройване на <code>session.gc_maxlifetime</code> в php.ini.
+Ðеобходимо е реÑтартиране на инÑÑ‚Ð°Ð»Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ.',
+ 'config-no-session' => 'Данните за ÑеÑиÑта бÑха загубени!
+Проверете Ð²Ð°ÑˆÐ¸Ñ php.ini и Ñе уверете, че на <code>session.save_path</code> е наÑтроена подходÑщата директориÑ.',
'config-your-language' => 'ВашиÑÑ‚ език:',
'config-your-language-help' => 'Избиране на език за използване по време на инÑталациÑта.',
'config-wiki-language' => 'Език на уикито:',
@@ -1460,10 +1825,10 @@ $1
За повече подробноÑти Ñе препоръчва преглеждането на ÐžÐ±Ñ‰Ð¸Ñ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡ÐµÐ½ лиценз на GNU.
Към програмата Ñ‚Ñ€Ñбва да е приложено <doclink href=Copying>копие на ÐžÐ±Ñ‰Ð¸Ñ Ð¿ÑƒÐ±Ð»Ð¸Ñ‡ÐµÐ½ лиценз на GNU</doclink>; ако не, можете да пишете на Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. или да [http://www.gnu.org/copyleft/gpl.html го прочетете онлайн].",
- 'config-sidebar' => '* [http://www.mediawiki.org Сайт на МедиÑУики]
-* [http://www.mediawiki.org/wiki/Help:Contents Ðаръчник на потребителÑ]
-* [http://www.mediawiki.org/wiki/Manual:Contents Ðаръчник на админиÑтратора]
-* [http://www.mediawiki.org/wiki/Manual:FAQ ЧЗВ]
+ 'config-sidebar' => '* [//www.mediawiki.org Сайт на МедиÑУики]
+* [//www.mediawiki.org/wiki/Help:Contents Ðаръчник на потребителÑ]
+* [//www.mediawiki.org/wiki/Manual:Contents Ðаръчник на админиÑтратора]
+* [//www.mediawiki.org/wiki/Manual:FAQ ЧЗВ]
----
* <doclink href=Readme>ДокументациÑ</doclink>
* <doclink href=ReleaseNotes>Бележки за верÑиÑта</doclink>
@@ -1479,9 +1844,16 @@ $1
'config-unicode-using-utf8' => 'Използване на utf8_normalize.so от Brion Vibber за Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° Уникод.',
'config-unicode-using-intl' => 'Използване на разширението [http://pecl.php.net/intl intl PECL] за Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° Уникод.',
'config-unicode-pure-php-warning' => "'''Предупреждение''': [http://pecl.php.net/intl Разширението intl PECL] не е налично за ÑправÑне Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñта на Уникод, превключване към по-бавното изпълнение на чиÑÑ‚ PHP.
-Ðко Ñайтът е Ñ Ð³Ð¾Ð»Ñм трафик, препоръчително е запознаването Ñ [http://www.mediawiki.org/wiki/Unicode_normalization_considerations нормализациÑта на Уникод].",
- 'config-no-db' => 'Ðе може да бъде открит подходÑщ драйвер за база от данни!',
- 'config-no-fts3' => "'''Предупреждение''': SQLite е компилирана без [http://sqlite.org/fts3.html модула FTS3], затова възможноÑтите за Ñ‚ÑŠÑ€Ñене нÑма да Ñа доÑтъпни.",
+Ðко Ñайтът е Ñ Ð³Ð¾Ð»Ñм трафик, препоръчително е запознаването Ñ [//www.mediawiki.org/wiki/Unicode_normalization_considerations нормализациÑта на Уникод].",
+ 'config-unicode-update-warning' => "'''Предупреждение''': ИнÑталираната верÑÐ¸Ñ Ð½Ð° Обвивката за Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° Unicode използва по-Ñтарата верÑÐ¸Ñ Ð½Ð° библиотеката на [http://site.icu-project.org/ проекта ICU].
+Ðеобходимо е да [//www.mediawiki.org/wiki/Unicode_normalization_considerations инÑталирате по-нова вериÑ], в Ñлучай че Ñте загрижени за използването на Unicode.",
+ 'config-no-db' => 'Ðе може да бъде открит подходÑщ драйвер за база от данни! Ðеобходимо е да Ñе инÑталира драйвер за база от данни за PHP.
+Поддържат Ñе Ñледните типове базни от данни: $1.
+
+Ðко използвате Ñподелен хоÑтинг, помолете доÑтавчика на уÑлугата да инÑталира подходÑщ драйвер за база от данни.
+Ðко Ñами Ñте компилирали PHP, преконфигурирайте го Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½ клиент за база от данни, например чрез използване на <code>./configure --with-mysql</code>.
+Ðко Ñте инÑталирали PHP от пакет за Debian или Убунту, необходимо е, Ñъщо така, да инÑталирате и модула php5-mysql.',
+ 'config-no-fts3' => "'''Предупреждение''': SQLite е компилирана без [//sqlite.org/fts3.html модула FTS3], затова възможноÑтите за Ñ‚ÑŠÑ€Ñене нÑма да Ñа доÑтъпни.",
'config-register-globals' => "'''Предупреждение: ÐаÑтройката на PHP <code>[http://php.net/register_globals register_globals]</code> е включена.'''
'''При възможноÑÑ‚ е препоръчително Ñ‚Ñ Ð´Ð° бъде изключена.'''
МедиÑУики ще работи, но Ñървърът е изложен на евентуални пропуÑки в ÑигурноÑтта.",
@@ -1502,17 +1874,19 @@ $1
'config-xml-bad' => 'ЛипÑва XML модулът на PHP.
МедиÑУики Ñе нуждае от нÑкои функции от този модул и нÑма да работи при наличната конфигурациÑ.
При Mandrake, необходимо е да Ñе инÑталира пакетът php-xml.',
+ 'config-pcre' => 'ЛипÑва модулът PCRE.
+За да работи, МедиÑУики изиÑква ÑъвмеÑтими Ñ Perl функии за регилÑрни изрази.',
'config-pcre-no-utf8' => "'''Фатално''': Модулът PCRE на PHP изглежда е компилиран без поддръжка на PCRE_UTF8.
За да функционира правилно, МедиÑУики изиÑква поддръжка на UTF-8.",
'config-memory-raised' => '<code>memory_limit</code> на PHP е $1, увеличаване до $2.',
'config-memory-bad' => "'''Предупреждение:''' <code>memory_limit</code> на PHP е $1.
СтойноÑтта вероÑтно е твърде ниÑка.
Възможно е инÑталациÑта да Ñе провали!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] е инÑталиран',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] е инÑталиран',
'config-apc' => '[http://www.php.net/apc APC] е инÑталиран',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] е инÑталиран',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] е инÑталиран',
- 'config-no-cache' => "'''Предупреждение:''' Ðе бÑха открити [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC] [http://trac.lighttpd.net/xcache/ XCache] или [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''Предупреждение:''' Ðе бÑха открити [http://eaccelerator.sourceforge.net eAccelerator], [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>.
@@ -1521,17 +1895,29 @@ $1
Ðко качването на файлове бъде включено, ще бъде включена възможноÑтта за преоразмерÑване на картинки.',
'config-no-scaling' => 'Ðе Ñа открити библиотеките GD или ImageMagick.
ПреоразмерÑването на картинки ще бъде изключено.',
- 'config-no-uri' => "'''Грешка:''' Ðе може да Ñе определи Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð°Ð´Ñ€ÐµÑ.
+ 'config-no-uri' => "'''Грешка:''' Ðе може да Ñе определи Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð°Ð´Ñ€ÐµÑ.
ИнÑÑ‚Ð°Ð»Ð°Ñ†Ð¸Ñ Ð±ÐµÑˆÐµ прекратена.",
+ 'config-using-server' => 'Използване на Ñървърното име "<nowiki>$1</nowiki>".',
+ 'config-using-uri' => 'Използване на ÑÑŠÑ€Ð²ÑŠÑ€Ð½Ð¸Ñ Ð°Ð´Ñ€ÐµÑ (URL) "<nowiki>$1$2</nowiki>".',
'config-uploads-not-safe' => "'''Предупреждение:''' Папката по подразбиране за качване <code>$1</code> е уÑзвима от изпълнение на зловредни Ñкриптове.
-Въпреки че МедиÑУики извършва проверка за заплахи в ÑигурноÑтта на вÑички качени файлове, Ñилно препоръчително е да Ñе [http://www.mediawiki.org/wiki/Manual:Security#Upload_security затвори тази уÑзвимоÑÑ‚ в ÑигурноÑтта] преди разрешаване за качване на файлове.",
+Въпреки че МедиÑУики извършва проверка за заплахи в ÑигурноÑтта на вÑички качени файлове, Ñилно препоръчително е да Ñе [//www.mediawiki.org/wiki/Manual:Security#Upload_security затвори тази уÑзвимоÑÑ‚ в ÑигурноÑтта] преди разрешаване за качване на файлове.",
+ 'config-brokenlibxml' => 'Вашата ÑиÑтема използа ÐºÐ¾Ð¼Ð±Ð¸Ð½Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ верÑии на PHP и libxml2, които Ñа Ñ Ð¼Ð½Ð¾Ð³Ð¾ грешки и могат да причинÑÑ‚ Ñкрити повреди на данните в МедиÑУики или други уеб приложениÑ.
+Ðеобходимо е обновÑване до PHP 5.2.9 или по-нова верÑÐ¸Ñ Ð¸ libxml2 2.7.3 или по-нова верÑÐ¸Ñ ([//bugs.php.net/bug.php?id=45996 докладвана грешка при PHP]).
+ИнÑталациÑта беше прекратена.',
+ 'config-using531' => 'МедиÑУики не може да Ñе използва Ñ PHP $1 заради проблем Ñ Ñ€ÐµÑ„ÐµÑ€ÐµÐ½Ñ‚Ð½Ð¸Ñ‚Ðµ параметри за <code>__call()</code>.
+За разрешаване на този проблем е необходимо да Ñе обнови до PHP 5.3.2 или по-нова верÑÐ¸Ñ Ð¸Ð»Ð¸ да Ñе инÑталира по-Ñтара верÑиÑ, напр. PHP 5.3.0.
+ИнÑталациÑта беше прекратена.',
+ 'config-suhosin-max-value-length' => 'Suhosin е инÑталиран и ограничава дължината на параметъра GET на $1 байта. Компонентът на МедиÑУики ResourceLoader ще може да пренебрегне чаÑтично това ограничение, но това ще намали производителноÑтта. По възможноÑÑ‚ е препоръчително да Ñе наÑтрои suhosin.get.max_value_length на 1024 или по-голÑма ÑтойноÑÑ‚ в php.ini и в LocalSettings.php да Ñе наÑтрои $wgResourceLoaderMaxQueryLength ÑÑŠÑ Ñъщата ÑтойноÑÑ‚.',
'config-db-type' => 'Тип на базата от данни:',
'config-db-host' => 'ХоÑÑ‚ на базата от данни:',
'config-db-host-help' => 'Ðко базата от данни е на друг Ñървър, в кутиÑта Ñе въвежда името на хоÑта или IP адреÑа.
Ðко Ñе използва Ñподелен уеб хоÑтинг, доÑтавчикът на уÑлугата би Ñ‚Ñ€Ñбвало да е предоÑтавил в документациÑта Ñи ÐºÐ¾Ñ€ÐµÐºÑ‚Ð½Ð¸Ñ Ñ…Ð¾ÑÑ‚.
-Ðко инÑталациÑта протича на Windows-Ñървър и Ñе използва MySQL, използването на "localhost" може да е неприемливо. Ð’ такива Ñлучаи Ñе използва "127.0.0.1" за локален IP адреÑ.',
+Ðко инÑталациÑта протича на Windows-Ñървър и Ñе използва MySQL, използването на "localhost" може да е неприемливо. Ð’ такива Ñлучаи Ñе използва "127.0.0.1" за локален IP адреÑ.
+
+При използване на PostgreSQL, това поле Ñе оÑÑ‚Ð°Ð²Ñ Ð¿Ñ€Ð°Ð·Ð½Ð¾, за Ñвързване чрез Unix socket.',
+ 'config-db-host-oracle' => 'TNS на базата данни:',
'config-db-wiki-settings' => 'Идентифициране на това уики',
'config-db-name' => 'Име на базата от данни:',
'config-db-name-help' => 'Избира Ñе име, което да идентифицира уикито.
@@ -1542,6 +1928,8 @@ $1
'config-db-install-account' => 'ПотребителÑка Ñметка за инÑталациÑта',
'config-db-username' => 'ПотребителÑко име за базата от данни:',
'config-db-password' => 'Парола за базата от данни:',
+ 'config-db-password-empty' => 'Въведете парола за Ð½Ð¾Ð²Ð¸Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ» на базата от данни: $1.
+Въпреки че е допуÑтимо да Ñе Ñъздават потребители без пароли, това е незащитено дейÑтвие.',
'config-db-install-username' => 'Въвежда Ñе потребителÑко име, което ще Ñе използва за Ñвързване Ñ Ð±Ð°Ð·Ð°Ñ‚Ð° от данни по време на процеÑа по инÑталациÑ.
Това не е потребителÑко име за Ñметка в МедиÑУики; това е потребителÑко име за базата от данни.',
'config-db-install-password' => 'Въвежда Ñе парола, коÑто ще бъде използвана за Ñвързване Ñ Ð±Ð°Ð·Ð°Ñ‚Ð° от данни по време на инÑÑ‚Ð°Ð»Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¸Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑ.
@@ -1564,6 +1952,7 @@ $1
'config-db-schema' => 'Схема за МедиÑУики',
'config-db-schema-help' => 'Схемата по-горе обикновено е коректна.
Промени Ñе извършват ако наиÑтина е необходимо.',
+ 'config-pg-test-error' => "Ðевъзможно Ñвързване Ñ Ð±Ð°Ð·Ð°Ñ‚Ð° данни '''$1''': $2",
'config-sqlite-dir' => 'Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° данни на SQLite:',
'config-sqlite-dir-help' => "SQLite ÑъхранÑва вÑички данни в един файл.
@@ -1575,6 +1964,7 @@ $1
Това включва Ñурови данни за потребителите (адреÑи за е-поща, хеширани пароли), както и изтрити верÑии на Ñтраници и друга чувÑтвителна и Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½ доÑтъп Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚ и за уикито.
Базата от данни е препоръчително да Ñе разположи на друго мÑÑто, например в <code>/var/lib/mediawiki/yourwiki</code>.",
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'МедиÑУики поддържа Ñледните ÑиÑтеми за бази от данни:
$1
@@ -1584,13 +1974,18 @@ $1
'config-support-postgres' => '* $1 е популÑрна ÑиÑтема за бази от данни Ñ Ð¾Ñ‚Ð²Ð¾Ñ€ÐµÐ½ изходен код, коÑто е алтернатива на MySQL ([http://www.php.net/manual/en/pgsql.installation.php как Ñе компилира PHP Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на PostgreSQL]). Възможно е вÑе още да има грешки, затова не Ñе препоръчва да Ñе използва в общодоÑтъпна Ñреда.',
'config-support-sqlite' => '* $1 е лека ÑиÑтема за база от данни, коÑто е много добре поддържана. ([http://www.php.net/manual/en/pdo.installation.php Как Ñе компилира PHP Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на SQLite], използва PDO)',
'config-support-oracle' => '* $1 е комерÑиална корпоративна база от данни. ([http://www.php.net/manual/en/oci8.installation.php Как Ñе компилира PHP Ñ Ð¿Ð¾Ð´Ð´Ñ€ÑŠÐ¶ÐºÐ° на OCI8])',
+ 'config-support-ibm_db2' => '* $1 е комерÑиална фирмена база от данни.',
'config-header-mysql' => 'ÐаÑтройки за MySQL',
'config-header-postgres' => 'ÐаÑтройки за PostgreSQL',
'config-header-sqlite' => 'ÐаÑтройки за SQLite',
'config-header-oracle' => 'ÐаÑтройки за Oracle',
+ 'config-header-ibm_db2' => 'ÐаÑтройки за IBM DB2',
'config-invalid-db-type' => 'Ðевалиден тип база от данни',
'config-missing-db-name' => 'Ðеобходимо е да Ñе въведе ÑтойноÑÑ‚ за "Име на базата от данни"',
'config-missing-db-host' => 'Ðеобходимо е да Ñе въведе ÑтойноÑÑ‚ за "ХоÑÑ‚ на базата от данни"',
+ 'config-missing-db-server-oracle' => 'Ðеобходимо е да Ñе въведе ÑтойноÑÑ‚ за "Database TNS"',
+ 'config-invalid-db-server-oracle' => 'Ðевалиден TNS на базата от данни "$1".
+ДопуÑтими Ñа Ñамо ASCII букви (a-z, A-Z), цифри (0-9), Ñимволите за долна черта (_) и точка (.).',
'config-invalid-db-name' => 'Ðевалидно име на базата от данни "$1".
Използват Ñе Ñамо ASCII букви (a-z, A-Z), цифри (0-9), долни черти (_) и тирета (-).',
'config-invalid-db-prefix' => 'Ðевалидна предÑтавка за базата от данни "$1".
@@ -1606,8 +2001,32 @@ $1
'config-sqlite-name-help' => 'Избира Ñе име, което да идентифицира уикито.
Ðе Ñе използват интервали или тирета.
Това име ще Ñе използва за име на файла за данни на SQLite.',
+ 'config-sqlite-parent-unwritable-group' => 'ДикректориÑта за данни <code><nowiki>$1</nowiki></code> не може да бъде Ñъздадена, тъй като уеб Ñървърът нÑма права за пиÑане в родителÑката Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ <code><nowiki>$2</nowiki></code>.
+
+ИнÑталаторът разпознава потребителÑкото име, Ñ ÐºÐ¾ÐµÑ‚Ð¾ работи уеб Ñървърът.
+Уверете Ñе, че той притежава права за пиÑане в директориÑта <code><nowiki>$3</nowiki></code> преди да продължите.
+Ð’ Unix/Ð›Ð¸Ð½ÑƒÐºÑ ÑиÑтеми можете да използвате:
+
+<pre>cd $2
+mkdir $3
+chgrp $4 $3
+chmod g+w $3</pre>',
+ 'config-sqlite-parent-unwritable-nogroup' => 'ДикректориÑта за данни <code><nowiki>$1</nowiki></code> не може да бъде Ñъздадена, тъй като уеб Ñървърът нÑма права за пиÑане в родителÑката Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ <code><nowiki>$2</nowiki></code>.
+
+ИнÑталаторът не може да определи потребителÑкото име, Ñ ÐºÐ¾ÐµÑ‚Ð¾ работи уеб Ñървърът.
+Уверете Ñе, че в Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ <code><nowiki>$3</nowiki></code> може да бъде пиÑано от уебÑървъра (или от други потребители!) преди да продължите.
+Ðа Unix/Ð›Ð¸Ð½ÑƒÐºÑ ÑиÑтеми можете да използвате:
+
+<pre>cd $2
+mkdir $3
+chmod a+w $3</pre>',
'config-sqlite-mkdir-error' => 'Грешка при Ñъздаване на директориÑта за данни "$1".
Проверете меÑтоположението Ñ Ð¸ опитайте отново.',
+ 'config-sqlite-dir-unwritable' => 'УебÑървърът нÑма права за пиÑане в Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ "$1".
+Променете правата му така, че да може да пише в неÑ, и опитайте отново.',
+ 'config-sqlite-connection-error' => '$1.
+
+Проверете директориÑта за данни и името на базата от данни по-долу и опитайте отново.',
'config-sqlite-readonly' => 'Файлът <code>$1</code> нÑма права за пиÑане.',
'config-sqlite-cant-create-db' => 'Файлът за базата от данни <code>$1</code> не може да бъде Ñъздаден.',
'config-sqlite-fts3-downgrade' => 'ЛипÑва поддръжката на FTS3 за PHP, извършен беше downgradе на таблиците',
@@ -1634,6 +2053,13 @@ $1
'config-mysql-engine' => 'Хранилище на данни:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => "'''Предупреждение''': Избрана е MyISAM като ÑиÑтема за Ñкладиране в MySQL, коÑто не Ñе препоръчва за използване Ñ ÐœÐµÐ´Ð¸ÑУики, защото:
+* почти не поддържа паралелноÑÑ‚ заради заключване на таблиците
+* е по-податлива на повреди в Ñравнение Ñ Ð´Ñ€ÑƒÐ³Ð¸ ÑиÑтеми
+* кодът на МедиÑУики не винаги поддържа MyISAM коректно
+
+Ðко инÑталациÑта на MySQL поддържа InnoDB, Ñилно е препоръчително да Ñе използва Ñ‚Ñ.
+Ðко инÑталациÑта на MySQL не поддържа InnoDB, вероÑтно е време за обновÑване.",
'config-mysql-engine-help' => "'''InnoDB''' почти винаги е най-добрата възможноÑÑ‚ заради навременната Ñи поддръжка.
'''MyISAM''' може да е по-бърза при инÑталации Ñ ÐµÐ´Ð¸Ð½ потребител или Ñамо за четене.
@@ -1644,7 +2070,7 @@ $1
'config-mysql-charset-help' => "Ð’ '''бинарен режим''' МедиÑУики ÑъхранÑва текÑтовете в UTF-8 в бинарни полета в базата от данни.
Това е по-ефективно от UTF-8 режима на MySQL и позволÑва използването на Ð¿ÑŠÐ»Ð½Ð¸Ñ Ð½Ð°Ð±Ð¾Ñ€ от Ñимволи в Уникод.
-Ð’ '''UTF-8 режим''' MySQL ще знае в кой набор от Ñимволи Ñа данните от уикито и ще може да ги показва и Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð¾ подходÑщ начин, но нÑма да позволÑва Ñкладиране на Ñимволи извън [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes ОÑÐ½Ð¾Ð²Ð½Ð¸Ñ Ð¼Ð½Ð¾Ð³Ð¾ÐµÐ·Ð¸Ñ‡ÐµÐ½ набор].",
+Ð’ '''UTF-8 режим''' MySQL ще знае в кой набор от Ñимволи Ñа данните от уикито и ще може да ги показва и Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñ Ð¿Ð¾ подходÑщ начин, но нÑма да позволÑва Ñкладиране на Ñимволи извън [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes ОÑÐ½Ð¾Ð²Ð½Ð¸Ñ Ð¼Ð½Ð¾Ð³Ð¾ÐµÐ·Ð¸Ñ‡ÐµÐ½ набор].",
'config-site-name' => 'Име на уикито:',
'config-site-name-help' => 'Това име ще Ñе показва в заглавната лента на браузъра и на различни други меÑта.',
'config-site-name-blank' => 'Ðеобходимо е да Ñе въведе име на уикито.',
@@ -1658,6 +2084,8 @@ $1
Обикновено предÑтавката произлиза от името на уикито, но не може да Ñъдържа Ñимволи като "#" или ":".',
'config-ns-invalid' => 'ПоÑоченото именно проÑтранÑтво "<nowiki>$1</nowiki>" е невалидно.
Ðеобходимо е да бъде поÑочено друго.',
+ 'config-ns-conflict' => 'ПоÑоченото именно проÑтранÑтво "<nowiki>$1</nowiki>" е в конфликт Ñ Ð¸Ð·Ð¿Ð¾Ð»Ð·Ð²Ð°Ð½Ð¾Ñ‚Ð¾ по подразбиране именно проÑтранÑтво MediaWiki.
+Ðеобходимо е да Ñе поÑочи друго именно проÑтранÑтво.',
'config-admin-box' => 'ÐдминиÑтраторÑка Ñметка',
'config-admin-name' => 'ПотребителÑко име:',
'config-admin-password' => 'Парола:',
@@ -1678,6 +2106,8 @@ $1
'config-subscribe' => 'Ðбониране за [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce пощенÑÐºÐ¸Ñ ÑпиÑък за нови верÑии].',
'config-subscribe-help' => 'Това е пощенÑки ÑпиÑък Ñ Ð¼Ð°Ð»ÐºÐ¾ трафик, който Ñе използва за ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ излизане на нови верÑии, както и за важни проблеми ÑÑŠÑ ÑигурноÑтта.
Ðбонирането е препоръчително, както и надграждането на инÑталациÑта на МедиÑУики при излизането на нова верÑиÑ.',
+ 'config-subscribe-noemail' => 'Опитахте да Ñе абонирате за пощенÑÐºÐ¸Ñ ÑпиÑък за нови верÑии без да поÑочите Ð°Ð´Ñ€ÐµÑ Ð·Ð° електронна поща.
+Ðеобходимо е да Ñе предоÑтави Ð°Ð´Ñ€ÐµÑ Ð·Ð° електронна поща, в Ñлучай че желаете да Ñе абонирате за пощенÑÐºÐ¸Ñ ÑпиÑък.',
'config-almost-done' => 'ИнÑталациÑта е почти готова!
Възможно е пропуÑкане на оÑтаващата ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ Ð¸ моментално инÑталиране на уикито.',
'config-optional-continue' => 'Задаване на допълнителни въпроÑи.',
@@ -1699,13 +2129,14 @@ $1
Уики, което е '''{{int:config-profile-fishbowl}}''' позволÑва на вÑички да преглеждат Ñтраниците, но Ñамо предварително одобрени редактори могат да редактират Ñъдържанието.
Ð’ '''{{int:config-profile-private}}''' Ñамо предварително одобрени потребители могат да четат и редактират Ñъдържанието.
-Детайлно обÑÑнение на конфигурациите на потребителÑките права е доÑтъпно Ñлед инÑталациÑта в [http://www.mediawiki.org/wiki/Manual:User_rights Ðаръчника за потребителÑки права].",
+Детайлно обÑÑнение на конфигурациите на потребителÑките права е доÑтъпно Ñлед инÑталациÑта в [//www.mediawiki.org/wiki/Manual:User_rights Ðаръчника за потребителÑки права].",
'config-license' => 'ÐвторÑки права и лиценз:',
'config-license-none' => 'Без лиценз',
'config-license-cc-by-sa' => 'Криейтив ÐšÐ¾Ð¼ÑŠÐ½Ñ ÐŸÑ€Ð¸Ð·Ð½Ð°Ð½Ð¸Ðµ-СподелÑне на Ñподеленото',
+ 'config-license-cc-by' => 'Криейтив ÐšÐ¾Ð¼ÑŠÐ½Ñ ÐŸÑ€Ð¸Ð·Ð½Ð°Ð½Ð¸Ðµ',
'config-license-cc-by-nc-sa' => 'Криейтив ÐšÐ¾Ð¼ÑŠÐ½Ñ ÐŸÑ€Ð¸Ð·Ð½Ð°Ð½Ð¸Ðµ-ÐекомерÑиално-СподелÑне на Ñподеленото',
- 'config-license-gfdl-old' => 'Лиценз за Ñвободна Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° GNU 1.2',
- 'config-license-gfdl-current' => 'Лиценз за Ñвободна Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° GNU 1.3 или по-нов',
+ 'config-license-cc-0' => 'Криейтив ÐšÐ¾Ð¼ÑŠÐ½Ñ Ðула (общеÑтвено доÑтоÑние)',
+ 'config-license-gfdl' => 'Лиценз за Ñвободна Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° GNU 1.3 или по-нов',
'config-license-pd' => 'ОбщеÑтвено доÑтоÑние',
'config-license-cc-choose' => 'Избиране на друг лиценз от Криейтив КомънÑ',
'config-license-help' => "Много публични уикита поÑтавÑÑ‚ вÑички приноÑи под [http://freedomdefined.org/Definition/Bg Ñвободен лиценз].
@@ -1715,7 +2146,7 @@ $1
Ðко е необходимо да Ñе използват текÑтове от УикипедиÑ, както и Ð£Ð¸ÐºÐ¸Ð¿ÐµÐ´Ð¸Ñ Ð´Ð° може да използва текÑтове от уикито, необходимо е да Ñе избере лиценз '''Криейтив ÐšÐ¾Ð¼ÑŠÐ½Ñ ÐŸÑ€Ð¸Ð·Ð½Ð°Ð½Ð¸Ðµ-СподелÑне на Ñподеленото'''.
Лицензът за Ñвободна Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚Ð°Ñ†Ð¸Ñ Ð½Ð° GNU е ÑтариÑÑ‚ лиценз на Ñъдържанието на УикипедиÑ.
-Той вÑе още е валиден лиценз, но нÑкои негови уÑÐ»Ð¾Ð²Ð¸Ñ Ð¿Ñ€Ð°Ð²ÑÑ‚ по-Ñложни повторното използване и интерпретациÑта.",
+Той вÑе още е валиден лиценз, но нÑкои негови уÑÐ»Ð¾Ð²Ð¸Ñ Ñа трудни за разбиране и правÑÑ‚ по-Ñложни повторното използване и интерпретациÑта.",
'config-email-settings' => 'ÐаÑтройки за е-поща',
'config-enable-email' => 'Разрешаване на изходÑщи е-пиÑма',
'config-enable-email-help' => 'За да работÑÑ‚ възможноÑтите за използване на е-поща, необходимо е [http://www.php.net/manual/en/mail.configuration.php наÑтройките за поща на PHP] да бъдат конфигурирани правилно.
@@ -1737,7 +2168,7 @@ $1
'config-upload-settings' => 'Картинки и качване на файлове',
'config-upload-enable' => 'ПозволÑне качването на файлове',
'config-upload-help' => 'Качването на файлове е възможно да доведе до пробели ÑÑŠÑ ÑигурноÑтта на Ñървъра.
-Повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ð¾ темата има в [http://www.mediawiki.org/wiki/Manual:Security раздела за ÑигурноÑÑ‚] в Ðаръчника.
+Повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ð¾ темата има в [//www.mediawiki.org/wiki/Manual:Security раздела за ÑигурноÑÑ‚] в Ðаръчника.
За позволÑване качването на файлове, необходимо е уебÑървърът да може да запиÑва в поддиректориÑта на МедиÑУики <code>images</code>.
След като това уÑловие е изпълнено, функционалноÑтта може да бъде активирана.',
@@ -1745,16 +2176,19 @@ $1
'config-upload-deleted-help' => 'Избиране на директориÑ, в коÑто ще Ñе Ñкладират изтритите файлове.
Ð’ най-Ð´Ð¾Ð±Ñ€Ð¸Ñ Ñлучай Ñ‚Ñ Ð½Ðµ Ñ‚Ñ€Ñбва да е доÑтъпна през уеб.',
'config-logo' => 'ÐÐ´Ñ€ÐµÑ Ð½Ð° логото:',
- 'config-logo-help' => 'Обликът по подразбиране на МедиÑУики вклчва мÑÑто Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¸ 135Ñ…160 пикÑела за лого в Ð³Ð¾Ñ€Ð½Ð¸Ñ Ð»Ñв ъгъл.
+ 'config-logo-help' => 'Обликът по подразбиране на МедиÑУики вклчва мÑÑто Ñ Ñ€Ð°Ð·Ð¼ÐµÑ€Ð¸ 135Ñ…160 пикÑела за лого над Ñтраничното меню.
Ðко има наличен файл Ñ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñщ размер, неговиÑÑ‚ Ð°Ð´Ñ€ÐµÑ Ð¼Ð¾Ð¶Ðµ да бъде поÑочен тук.
-Ðко не е необходимо лого, полето Ñе оÑÑ‚Ð°Ð²Ñ Ð¿Ñ€Ð°Ð·Ð½Ð¾.',
+Ðко не е необходимо лого, полето може да Ñе оÑтави празно.',
'config-instantcommons' => 'Включване на Instant Commons',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons Instant Commons] е функционалноÑÑ‚, коÑто позволÑва на уикитата да използват картинки, звуци и друга медиа от Ñайта на Ð£Ð¸ÐºÐ¸Ð¼ÐµÐ´Ð¸Ñ [http://commons.wikimedia.org/ ОбщомедиÑ].
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] е функционалноÑÑ‚, коÑто позволÑва на уикитата да използват картинки, звуци и друга медиа от Ñайта на Ð£Ð¸ÐºÐ¸Ð¼ÐµÐ´Ð¸Ñ [//commons.wikimedia.org/ ОбщомедиÑ].
За да е възможно това, МедиÑУики изиÑква доÑтъп до Интернет.
Повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° тази функционалноÑÑ‚, както и инÑтрукции за наÑтройване за други уикита, различни от ОбщомедиÑ, е налична в [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos наръчника].',
+ 'config-cc-error' => 'Избирането на лиценз на Криейтив ÐšÐ¾Ð¼ÑŠÐ½Ñ Ð½Ðµ даде резултат.
+Ðеобходимо е името на лиценза да бъде въведено ръчно.',
'config-cc-again' => 'Повторно избиране...',
+ 'config-cc-not-chosen' => 'Изберете кой лиценз на Криейтив ÐšÐ¾Ð¼ÑŠÐ½Ñ Ð¶ÐµÐ»Ð°ÐµÑ‚Ðµ и щракнете "proceed".',
'config-advanced-settings' => 'Разширена конфигурациÑ',
'config-cache-options' => 'ÐаÑтройки за обектното кеширане:',
'config-cache-help' => 'Обектното кеширане Ñе използва за подобрÑване на ÑкороÑтта на МедиÑУики чрез кеширане на чеÑто използваните данни.
@@ -1764,12 +2198,18 @@ $1
'config-cache-memcached' => 'Използване на Memcached (изиÑква допълнителни наÑтройки и конфигуриране)',
'config-memcached-servers' => 'Memcached Ñървъри:',
'config-memcached-help' => 'СпиÑък Ñ IP адреÑи за използване за Memcached.
-Ðеобходимо е да бъдат разделени по един на ред, както и да е поÑочен порта. Пример:
+Ðеобходимо е да бъдат разделени по един на ред, както и да е поÑочен порта. Пример:
127.0.0.1:11211
192.168.1.25:1234',
'config-memcache-needservers' => 'Избран е Memcached като Ñкладиращ тип, но не Ñа поÑочени Ñървъри.',
'config-memcache-badip' => 'Беше въведен невалиден IP Ð°Ð´Ñ€ÐµÑ Ð·Ð° Memcached: $1.',
+ 'config-memcache-noport' => 'Ðе е поÑочен порт за използване за Memcached Ñървъра: $1.
+Ð’ Ñлучай, че не знаете порта, този по подразбиране е 11211.',
+ 'config-memcache-badport' => 'Портовете за Memcached Ñ‚Ñ€Ñбва да бъдат между $1 и $2.',
'config-extensions' => 'РазширениÑ',
+ 'config-extensions-help' => 'РазширениÑта от ÑпиÑъка по-горе бÑха открити в директориÑта <code>./extensions</code>.
+
+Възможно е те да изиÑкват допълнително конфигуриране, но Ñега могат да бъдат включени.',
'config-install-alreadydone' => "'''Предупреждение:''' Изглежда вече Ñте инÑталирали МедиÑУики и Ñе опитвате да го инÑталирате отново.
Продължете към Ñледващата Ñтраница.",
'config-install-begin' => 'ИнÑталациÑта на МедиÑУики ще започне Ñлед натиÑкане на бутона "{{int:config-continue}}".
@@ -1778,16 +2218,24 @@ $1
'config-install-step-failed' => 'неуÑпешно',
'config-install-extensions' => 'ДобавÑне на разширениÑта',
'config-install-database' => 'Създаване на базата от данни',
+ 'config-install-schema' => 'Създаване на Ñхема',
'config-install-pg-schema-not-exist' => 'PostgreSQL Ñхемата не ÑъщеÑтвува',
'config-install-pg-schema-failed' => 'Създаването на таблиците пропадна.
Ðеобходимо е потребител "$1" да има права за пиÑане в Ñхемата "$2".',
'config-install-pg-plpgsql' => 'ПроверÑване за езика PL/pgSQL',
'config-pg-no-plpgsql' => 'Ðеобходимо е да Ñе инÑталира езикът PL/pgSQL в базата от данни $1',
'config-pg-no-create-privs' => 'ПоÑочената Ñметка за инÑталациÑта не притежава доÑтатъчно права за Ñъздаване на Ñметка.',
+ 'config-pg-not-in-role' => 'ПоÑочената Ñметка за уеб потребител вече ÑъщеÑтвува.
+ПоÑочената Ñметка за инÑÑ‚Ð°Ð»Ð°Ñ†Ð¸Ñ Ð½Ðµ Ñ Ð¿Ñ€Ð°Ð²Ð° на Ñуперпотребител и не е член на ролите на уеб Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð¸ не може да Ñъздава обекти, ÑобÑтвеноÑÑ‚ на уеб потребителÑ.
+
+Текущо МедиÑУики изиÑква таблиците да Ñа ÑобÑтвеноÑÑ‚ на уеб потребителÑ. Ðеобходимо е да Ñе поÑочи друго потребителÑко име за уеб или да Ñе натиÑне "връщане" и да Ñе избере друг потребител за инÑталациÑта Ñ Ð¿Ð¾Ð´Ñ…Ð¾Ð´Ñщите права.',
'config-install-user' => 'Създаване на потребител за базата от данни',
'config-install-user-alreadyexists' => 'Потребител „$1“ вече ÑъщеÑтвува',
'config-install-user-create-failed' => 'Създаването на потребител „$1“ беше неуÑпешно: $2',
'config-install-user-grant-failed' => 'ПредоÑтавÑнето на права на потребител "$1" беше неуÑпешно: $2',
+ 'config-install-user-missing' => 'ПоÑочениÑÑ‚ потребител " $1 "не ÑъщеÑтвува.',
+ 'config-install-user-missing-create' => 'ПоÑочениÑÑ‚ потребител "$1" не ÑъщеÑтвува.
+Ðко желаете да го Ñъздадете, поÑтавете отметка на "Ñъздаване на Ñметка".',
'config-install-tables' => 'Създаване на таблиците',
'config-install-tables-exist' => "'''Предупреждение''': Таблиците за МедиÑУики изглежда вече ÑъщеÑтвуват.
ПропуÑкане на Ñъздаването им.",
@@ -1797,10 +2245,11 @@ $1
'config-install-interwiki-exists' => "'''Предупреждение''': Таблицата Ñ Ð¼ÐµÐ¶Ð´ÑƒÑƒÐ¸ÐºÐ¸Ñ‚Ð° изглежда вече Ñъдържа данни.
ПропуÑкане на ÑпиÑъка по подразбиране.",
'config-install-stats' => 'Инициализиране на ÑтатиÑтиките',
- 'config-install-keys' => 'Генериране на таен ключ',
+ 'config-install-keys' => 'Генериране на тайни ключове',
'config-insecure-keys' => "'''Предупреждение:''' {{PLURAL:$2|СигурниÑÑ‚ ключ, Ñъздаден по време на инÑталациÑта, не е напълно надежден|Сигурните ключове, Ñъздадени по време на инÑталациÑта, не Ñа напълно надеждни}} $1 . ОбмиÑлете да {{PLURAL:$2|го|ги}} Ñмените ръчно.",
'config-install-sysop' => 'Създаване на админиÑтраторÑка Ñметка',
- 'config-install-subscribe-fail' => 'Ðевъзможно беше абонирането за mediawiki-announce',
+ 'config-install-subscribe-fail' => 'Ðевъзможно беше абонирането за mediawiki-announce: $1',
+ 'config-install-subscribe-notpossible' => 'не е инÑталиран cURL и allow_url_fopen не е налична.',
'config-install-mainpage' => 'Създаване на Ðачалната Ñтраница ÑÑŠÑ Ñъдържание по подразбиране',
'config-install-extension-tables' => 'Създаване на таблици за включените разширениÑ',
'config-install-mainpage-failed' => 'Вмъкването на Ðачалната Ñтраница беше невъзможно: $1',
@@ -1821,6 +2270,154 @@ $3
Когато файлът вече е в оÑновната директориÑ, '''[$2 уикито ще е доÑтъпно на този адреÑ]'''.",
'config-download-localsettings' => 'ИзтеглÑне на LocalSettings.php',
'config-help' => 'помощ',
+ 'mainpagetext' => "'''Уикито беше уÑпешно инÑталирано.'''",
+ 'mainpagedocfooter' => 'Разгледайте [//meta.wikimedia.org/wiki/Help:Contents ръководÑтвото] за подробна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾Ñно използването на Ñофтуера.
+
+== Първи Ñтъпки ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Конфигурационни наÑтройки]
+* [//www.mediawiki.org/wiki/Manual:FAQ ЧЗВ за МедиÑУики]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ПощенÑки ÑпиÑък отноÑно нови верÑии на МедиÑУики]',
+);
+
+/** Banjar (Bahasa Banjar)
+ * @author Ezagren
+ * @author J Subhi
+ */
+$messages['bjn'] = array(
+ 'mainpagetext' => "'''MediaWiki sudah tapasang awan sukses'''.",
+ 'mainpagedocfooter' => 'Carii panjalasan [//meta.wikimedia.org/wiki/Help:Contents Panduan Pamuruk] gasan mamuruk parangkat lunak wiki
+
+== Gasan bamula ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Daptar konpigurasi setélan]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki nang rancak ditakunakan]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki rilis milis]',
+);
+
+/** Bengali (বাংলা)
+ * @author Bellayet
+ * @author Wikitanvir
+ */
+$messages['bn'] = array(
+ 'config-desc' => 'মিডিয়াউইকির জনà§à¦¯ ইনà§à¦¸à¦Ÿà¦²à¦¾à¦°',
+ 'config-title' => 'মিডিয়াউইকি $1 ইনà§à¦¸à¦Ÿà¦²à§‡à¦¶à¦¨',
+ 'config-information' => 'তথà§à¦¯',
+ 'config-localsettings-key' => 'হালনাগাদ কি',
+ 'config-session-error' => 'সেশন শà§à¦°à§à¦¤à§‡ তà§à¦°à§à¦Ÿà¦¿: $1',
+ 'config-your-language' => 'আপনার ভাষা:',
+ 'config-your-language-help' => 'ইনà§à¦¸à¦Ÿà¦² করা সময় বà§à¦¯à¦¬à¦¹à¦¾à¦°à§‡à¦° জনà§à¦¯ ভাষা নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨à¥¤',
+ 'config-wiki-language' => 'উইকি ভাষা:',
+ 'config-back' => '↠পেছনে',
+ 'config-continue' => 'অবà§à¦¯à¦¾à¦¹à¦¤ →',
+ 'config-page-language' => 'ভাষা',
+ 'config-page-welcome' => 'মিডিয়াউইকিতে সà§à¦¬à¦¾à¦—তম!',
+ 'config-page-dbconnect' => 'ডেটাবেজে সংযোগ দিন',
+ 'config-page-upgrade' => 'ইতিমধà§à¦¯à§‡à¦‡ থাকা ইনà§à¦¸à¦Ÿà¦²à§‡à¦¶à¦¨ হালনাগাদ করà§à¦¨',
+ 'config-page-dbsettings' => 'ডেটাবেজ সেটিংস',
+ 'config-page-name' => 'নাম',
+ 'config-page-options' => 'অপশন',
+ 'config-page-install' => 'ইনà§à¦¸à¦Ÿà¦²',
+ 'config-page-complete' => 'সমà§à¦ªà§‚রà§à¦£!',
+ 'config-page-restart' => 'পà§à¦¨à¦°à¦¾à¦¯à¦¼ ইনà§à¦¸à¦Ÿà¦² পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾ চালৠকরà§à¦¨',
+ 'config-page-readme' => 'à¦à¦Ÿà¦¿ পড়à§à¦¨',
+ 'config-page-releasenotes' => 'রিলিজ নোট',
+ 'config-page-copying' => 'অনà§à¦²à§‡à¦ªà¦¨',
+ 'config-page-upgradedoc' => 'হালনাগাদকরণ',
+ 'config-page-existingwiki' => 'ইতিমধà§à¦¯à§‡à¦‡ থাকা উইকি',
+ 'config-restart' => 'হà§à¦¯à¦¾à¦, পà§à¦¨à¦°à¦¾à¦¯à¦¼ চালৠকরà§à¦¨',
+ 'config-env-php' => 'পিà¦à¦‡à¦šà¦ªà¦¿ $1 ইনà§à¦¸à¦Ÿà¦² করা হয়েছে।',
+ 'config-db-type' => 'ডেটাবেজের ধরন:',
+ 'config-db-host' => 'ডেটাবেজের হোসà§à¦Ÿ:',
+ 'config-db-install-account' => 'ইনà§à¦¸à¦Ÿà¦²à§‡à¦° জনà§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ',
+ 'config-db-username' => 'ডেটাবেজের বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম:',
+ 'config-db-password' => 'ডেটাবেজের শবà§à¦¦à¦šà¦¾à¦¬à¦¿:',
+ 'config-db-charset' => 'ডেটাবেজের অকà§à¦·à¦° সেট',
+ 'config-db-port' => 'ডেটাবেজ পোরà§à¦Ÿ:',
+ 'config-db-schema' => 'মিডিয়াউইকির সà§à¦•à¦¿à¦®à¦¾',
+ 'config-sqlite-dir' => 'à¦à¦¸à¦•à¦¿à¦‰à¦²à¦¾à¦‡à¦Ÿ ডেটা ডিরেকà§à¦Ÿà¦°à¦¿:',
+ 'config-oracle-def-ts' => 'পূরà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ টেবিলসà§à¦ªà§‡à¦¸',
+ 'config-oracle-temp-ts' => 'সাময়কি টেবিলসà§à¦ªà§‡à¦¸:',
+ 'config-type-ibm_db2' => 'আইবিà¦à¦® ডিবি২',
+ 'config-header-mysql' => 'মাইà¦à¦¸à¦•à¦¿à¦‰à¦à¦² সেটিংস',
+ 'config-header-postgres' => 'পোসà§à¦Ÿà¦—à§à¦°à§‡à¦à¦¸à¦•à¦¿à¦‰à¦à¦² সেটিংস',
+ 'config-header-sqlite' => 'à¦à¦¸à¦•à¦¿à¦‰à¦²à¦¾à¦‡à¦Ÿ সেটিংস',
+ 'config-header-oracle' => 'ওরাকল সেটিংস',
+ 'config-header-ibm_db2' => 'আইবিà¦à¦® ডিবি২ সেটিংস',
+ 'config-invalid-db-type' => 'ডেটাবেজের ধরন অগà§à¦°à¦¹à¦¯à§‹à¦—à§à¦¯',
+ 'config-missing-db-name' => 'আপনাকে অবশà§à¦¯à¦‡ "ডেটাবেজ নাম"-à¦à¦° জনà§à¦¯ à¦à¦•à¦Ÿà¦¿ মান পà§à¦°à¦¬à§‡à¦¶ করাতে হবে',
+ 'config-missing-db-host' => 'আপনাকে অবশà§à¦¯à¦‡ "ডেটাবেজ হোসà§à¦Ÿ"-à¦à¦° জনà§à¦¯ à¦à¦•à¦Ÿà¦¿ মান পà§à¦°à¦¬à§‡à¦¶ করাতে হবে',
+ 'config-missing-db-server-oracle' => 'আপনাকে অবশà§à¦¯à¦‡ "ডেটাবেজ টিà¦à¦¨à¦à¦¸"-à¦à¦° জনà§à¦¯ à¦à¦•à¦Ÿà¦¿ মান পà§à¦°à¦¬à§‡à¦¶ করাতে হবে',
+ 'config-mysql-engine' => 'সংরকà§à¦·à¦£ ইঞà§à¦œà¦¿à¦¨:',
+ 'config-mysql-innodb' => 'ইনোডিবি',
+ 'config-mysql-myisam' => 'মাইআইà¦à¦¸à¦à¦à¦®',
+ 'config-mysql-charset' => 'ডেটাবেজের অকà§à¦·à¦° সেট',
+ 'config-mysql-binary' => 'বাইনারি',
+ 'config-mysql-utf8' => 'ইউটিà¦à¦«-৮',
+ 'config-site-name' => 'উইকির নাম:',
+ 'config-site-name-blank' => 'à¦à¦•à¦Ÿà¦¿ সাইটের নাম পà§à¦°à¦¬à§‡à¦¶ করান।',
+ 'config-project-namespace' => 'পà§à¦°à¦•à¦²à§à¦ª নামসà§à¦¥à¦¾à¦¨:',
+ 'config-ns-generic' => 'পà§à¦°à¦•à¦²à§à¦ª',
+ 'config-ns-site-name' => 'উইকি নামের অনà§à¦°à§à¦ª: $1',
+ 'config-ns-other' => 'অনà§à¦¯à¦¾à¦¨à§à¦¯ (নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করà§à¦¨)',
+ 'config-ns-other-default' => 'মাইউইকি',
+ 'config-admin-box' => 'পà§à¦°à¦¶à¦¾à¦¸à¦• অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ',
+ 'config-admin-name' => 'আপনার নাম:',
+ 'config-admin-password' => 'শবà§à¦¦à¦šà¦¾à¦¬à¦¿:',
+ 'config-admin-password-confirm' => 'শবà§à¦¦à¦šà¦¾à¦¬à¦¿ আবারও পà§à¦°à¦¬à§‡à¦¶ করান:',
+ 'config-admin-name-blank' => 'à¦à¦•à¦Ÿà¦¿ পà§à¦°à¦¶à¦¾à¦¸à¦• বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম পà§à¦°à¦¬à§‡à¦¶ করান',
+ 'config-admin-password-blank' => 'পà§à¦°à¦¶à¦¾à¦¸à¦• অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà§‡à¦° জনà§à¦¯ পাসওয়ারà§à¦¡ পà§à¦°à¦¬à§‡à¦¶ করান।',
+ 'config-admin-password-same' => 'পাসওয়ারà§à¦¡ অবশà§à¦¯à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নামের অনà§à¦°à§à¦ª হওয়া চলবে না।',
+ 'config-admin-password-mismatch' => 'আপনি যে দà§à¦Ÿà¦¿ শবà§à¦¦à¦šà¦¾à¦¬à¦¿ দিয়েছেন তারা পরসà§à¦ªà¦° মেলেনি।',
+ 'config-admin-email' => 'ইমেইল ঠিকানা:',
+ 'config-optional-continue' => 'আরও পà§à¦°à¦¶à§à¦¨ জিজà§à¦žà§‡à¦¸ করà§à¦¨à¥¤',
+ 'config-optional-skip' => 'আমি ইতিমধà§à¦¯à§‡à¦‡ বিরকà§à¦¤ হয়ে গেছি, উইকিটি ইনà§à¦¸à¦Ÿà¦² করো।',
+ 'config-profile' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ অধিকার পà§à¦°à§‹à¦«à¦¾à¦‡à¦²:',
+ 'config-profile-wiki' => 'গতানà§à¦—তিক উইকি',
+ 'config-profile-no-anon' => 'অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ তৈরি করা বাধà§à¦¯à¦¤à¦¾à¦®à§‚লক',
+ 'config-profile-fishbowl' => 'শà§à¦§à§à¦®à¦¾à¦¤à§à¦° নিরà§à¦§à¦¾à¦°à¦¿à¦¤ সমà§à¦ªà¦¾à¦¦à¦•à¦¦à§‡à¦° জনà§à¦¯à¦‡',
+ 'config-profile-private' => 'বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত উইকি',
+ 'config-license' => 'কপিরাইট ও লাইসেনà§à¦¸:',
+ 'config-license-none' => 'কোনো লাইসেনà§à¦¸ ফà§à¦Ÿà¦¾à¦° নেই',
+ 'config-license-cc-by-sa' => 'কà§à¦°à¦¿à¦¯à¦¼à§‡à¦Ÿà¦¿à¦­ কমনà§à¦¸ অà§à¦¯à¦¾à¦Ÿà§à¦°à¦¿à¦¬à¦¿à¦‰à¦¶à¦¨ শেয়ার অà§à¦¯à¦¾à¦²à¦¾à¦‡à¦•',
+ 'config-license-cc-by-nc-sa' => 'কà§à¦°à¦¿à¦¯à¦¼à§‡à¦Ÿà¦¿à¦­ কমনà§à¦¸ অà§à¦¯à¦¾à¦Ÿà§à¦°à¦¿à¦¬à¦¿à¦‰à¦¶à¦¨ নন-কমারà§à¦¶à¦¿à¦¯à¦¼à¦¾à¦² শেয়ার অà§à¦¯à¦¾à¦²à¦¾à¦‡à¦•',
+ 'config-license-cc-0' => 'কà§à¦°à¦¿à¦¯à¦¼à§‡à¦Ÿà¦¿à¦­ কমনà§à¦¸ জিরো',
+ 'config-license-pd' => 'পাবলিক ডোমেইন',
+ 'config-license-cc-choose' => 'à¦à¦•à¦Ÿà¦¿ সà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ কà§à¦°à¦¿à¦¯à¦¼à§‡à¦Ÿà¦¿à¦­ কমনà§à¦¸ লাইসেনà§à¦Ÿ নিরà§à¦¬à¦¾à¦šà¦¨ করà§à¦¨',
+ 'config-email-settings' => 'ই-মেইল সেটিংস',
+ 'config-email-user' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€-থেকে-বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ ই-মেইল সà§à¦¬à¦¿à¦§à¦¾ সকà§à¦°à¦¿à¦¯à¦¼ করো',
+ 'config-upload-settings' => 'চিতà§à¦° à¦à¦¬à¦‚ ফাইল আপলোড',
+ 'config-upload-enable' => 'ফাইল আপলোড সকà§à¦°à¦¿à¦¯à¦¼ করো',
+ 'config-upload-deleted' => 'অপসারণকৃত ফাইলের ডিরেকà§à¦Ÿà¦°à¦¿:',
+ 'config-logo' => 'লোগো ইউআরà¦à¦²:',
+ 'config-memcached-servers' => 'মেমকà§à¦¯à¦¾à¦¶à§‡à¦•à§ƒà¦¤ সারà§à¦­à¦¾à¦°à¦¸à¦®à§‚হ:',
+ 'config-extensions' => 'à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨',
+ 'config-install-step-done' => 'সমà§à¦ªà¦¨à§à¦¨',
+ 'config-install-step-failed' => 'বà§à¦¯à¦°à§à¦¥',
+ 'config-install-extensions' => 'à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨ সহকারে',
+ 'config-install-database' => 'ডেটাবেজ সেটআপ',
+ 'config-install-pg-schema-not-exist' => 'পোসà§à¦Ÿà¦—à§à¦°à§‡à¦à¦¸à¦•à¦¿à¦‰à¦à¦² সà§à¦•à¦¿à¦®à¦¾ খà§à¦à¦œà§‡ পাওয়া যায়নি।',
+ 'config-install-tables' => 'টেবিল তৈরি',
+ 'config-install-keys' => 'গোপন কি তৈরি',
+ 'config-help' => 'সাহাযà§à¦¯',
+ 'mainpagetext' => "'''মিডিয়াউইকি সফলভাবে ইনà§à¦¸à¦Ÿà¦² করা হয়েছে।'''",
+ 'mainpagedocfooter' => 'কী ভাবে উইকি সফটওয়à§à¦¯à¦¾à¦°à¦Ÿà¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦° করবেন, তা জানতে [//meta.wikimedia.org/wiki/Help:Contents বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ সহায়িকা] দেখà§à¦¨à¥¤
+
+== কোথা থেকে শà§à¦°à§ করবেন ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings কনফিগারেশন সেটিংস তালিকা]
+* [//www.mediawiki.org/wiki/Manual:FAQ পà§à¦°à¦¶à§à¦¨à§‹à¦¤à§à¦¤à¦°à§‡ মিডিয়াউইকি]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce মিডিয়াউইকি রিলিজের মেইলিং লিসà§à¦Ÿ]',
+);
+
+/** Bishnupria Manipuri (ইমার ঠার/বিষà§à¦£à§à¦ªà§à¦°à¦¿à¦¯à¦¼à¦¾ মণিপà§à¦°à§€) */
+$messages['bpy'] = array(
+ 'mainpagetext' => "'''মিডিয়াউইকি হবাবালা ইয়া ইনà§à¦¸à¦Ÿà¦² ইল.'''",
+ 'mainpagedocfooter' => 'উইকি সফটৱà§à¦¯à¦¾à¦° à¦à¦¹à¦¾à¦¨ আতানির বারে দরকার ইলে [//meta.wikimedia.org/wiki/Help:Contents আতাকà§à¦°à¦¾à¦° গাইড]হানর পাঙলাক নেগা।
+
+== অকরানিহান ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings কনফিগারেশন সেটিংর তালিকাহান]
+* [//www.mediawiki.org/wiki/Manual:FAQ মিডিয়া উইকি আঙলাক]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce মিডিয়া উইকির ফঙপার বারে মেইলর তালিকাহান]',
);
/** Breton (Brezhoneg)
@@ -1837,7 +2434,7 @@ $messages['br'] = array(
Evit hizivaat ar staliadur-se, merkit an talvoud <code>$wgUpgradeKey</code> er voest dindan.
E gavout a rit e LocalSettings.php.',
'config-localsettings-cli-upgrade' => 'Dinoet ez eus bet ur restr LocalSettings.php.
-Evit lakaat ar staliadur-mañ a-live, implijit --upgrade=yes, mar plij.',
+Evit lakaat ar staliadur-mañ a-live, implijit update.php e plas',
'config-localsettings-key' => "Alc'hwez hizivaat :",
'config-localsettings-badkey' => "Direizh eo an alc'hwez merket ganeoc'h",
'config-upgrade-key-missing' => 'Kavet ez eus bet ur staliadur kent eus MediaWiki.
@@ -1851,6 +2448,10 @@ Kemmit LocalSettings.php evit ma vo termenet an argemmenn-se, ha klikit war « K
$1",
'config-session-error' => "Fazi e-ser loc'hañ an dalc'h : $1",
+ 'config-session-expired' => "Kloz eo an dalc'h evit doare.
+Kefluniet eo an dalc'hoù evit padout $1.
+Kreskiñ ar pad-mañ a c'hallit dre e arventenniñ <code>session.gc_maxlifetime</code> e php.ini.
+Adgrogit gant ar staliadur.",
'config-no-session' => "Kolle teo bet roadennoù ho talc'h !
Gwiriit ar restr php.ini ha bezit sur emañ staliet <code>session.save_path</code> en ur c'havlec'h a zere.",
'config-your-language' => 'Ho yezh :',
@@ -1879,10 +2480,24 @@ Gwiriit ar restr php.ini ha bezit sur emañ staliet <code>session.save_path</cod
'config-welcome' => "=== Gwiriadennoù a denn d'an endro ===
Rekis eo un nebeud gwiriadennoù diazez da welet hag azas eo an endro evit gallout staliañ MediaWiki.
Dleout a rafec'h merkañ disoc'hoù ar gwiriadennoù-se m'hoc'h eus ezhomm skoazell e-pad ar staliadenn.",
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWiki Degemer]
-* [http://www.mediawiki.org/wiki/Help:Contents Pajenn-stur an implijer]
-* [http://www.mediawiki.org/wiki/Manual:Contents Pajenn-stur ar merour]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAG]',
+ 'config-copyright' => "=== Gwiriañ aozer ha Termenoù implijout ===
+
+$1
+
+Ur meziant frank eo ar programm-mañ; gallout a rit skignañ anezhañ ha/pe kemmañ anezhañ dindan termenoù ar GNU Aotre-implijout Foran Hollek evel m'emañ embannet gant Diazezadur ar Meziantoù Frank; pe diouzh stumm 2 an aotre-implijout, pe (evel mar karit) diouzh ne vern pe stumm nevesoc'h.
+
+Ingalet eo ar programm gant ar spi e vo talvoudus met n'eus '''tamm gwarant ebet'''; hep zoken gwarant empleg ar '''varc'hadusted''' pe an '''azaster ouzh ur pal bennak'''. Gwelet ar GNU Aotre-Implijout Foran Hollek evit muioc'h a ditouroù.
+
+Sañset oc'h bezañ resevet <doclink href=Copying>un eilskrid eus ar GNU Aotre-implijout Foran Hollek</doclink> a-gevret gant ar programm-mañ; ma n'hoc'h eus ket, skrivit da Diazezadur ar Meziantoù Frank/Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, SUA pe [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html lennit anezhañ enlinenn].",
+ 'config-sidebar' => "* [//www.mediawiki.org MediaWiki degemer]
+* [//www.mediawiki.org/wiki/Help:Contents Sturlevr an implijerien]
+* [//www.mediawiki.org/wiki/Manual:Contents Sturlevr ar verourien]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAG]
+----
+* <doclink href=Readme>Lennit-me</doclink>
+* <doclink href=ReleaseNotes>Notennoù embann</doclink>
+* <doclink href=Copying>Oc'h eilañ</doclink>
+* <doclink href=UpgradeDoc>O hizivaat</doclink>",
'config-env-good' => 'Gwiriet eo bet an endro.
Gallout a rit staliañ MediaWiki.',
'config-env-bad' => "Gwiriet eo bet an endro.
@@ -1892,30 +2507,88 @@ Ne c'hallit ket staliañ MediaWiki.",
Nemet eo rekis PHP $2 pe nevesoc'h evit MediaWiki.",
'config-unicode-using-utf8' => "Oc'h implijout utf8_normalize.so gant Brion Vibber evit ar reolata Unicode.",
'config-unicode-using-intl' => "Oc'h implijout [http://pecl.php.net/intl an astenn PECL intl] evit ar reolata Unicode.",
- 'config-no-db' => "Ne c'haller ket kavout ur sturier diaz roadennoù dereat !",
+ 'config-unicode-pure-php-warning' => "'''Diwallit''' : N'haller ket kaout an [http://pecl.php.net/intl intl PECL astenn] evit merañ reoladur Unicode, a zistro d'ar stumm gorrek emplementet e-PHP.
+Ma lakait da dreiñ ul lec'hienn darempredet-stank e vo mat deoc'h lenn un tammig bihan diwar-benn se war [//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode normalization]. (e saozneg)",
+ 'config-unicode-update-warning' => "'''Diwallit''': ober a ra stumm staliet endalc'her skoueriekaat Unicode gant ur stumm kozh eus [http://site.icu-project.org/ levraoueg meziantoù ar raktres ICU].
+Dleout a rafec'h [//www.mediawiki.org/wiki/Unicode_normalization_considerations hizivaat] ma seblant deoc'h bezañ pouezus ober gant Unicode.",
+ 'config-no-db' => "N'eus ket bet gallet kavout ur sturier diazoù roadennoù a zere ! Ret eo deoc'h staliañ ur sturier diazoù roadennoù evit PHP.
+Skoret eo an diazoù roadennoù da-heul : $1.
+
+Ma rit gant un herberc'hiañ kenrannet, goulennit digant ho herberc'hier staliañ ur sturier diaz roadennoù azas.
+Ma kempunit PHP c'hwi hoc'h-unan, adkeflugnit-eñ en ur weredekaat un arval diaz roadennoù, da skouer en ur ober gant <code>./configure --mysql</code>.
+M'hoc'h eus staliet PHP adalek ur pakad Debian pe Ubuntu, eo ret deoc'h staliañ ar vodulenn php5-mysql ivez.",
+ 'config-no-fts3' => "'''Diwallit ''': Kempunet eo SQLite hep ar [//sqlite.org/fts3.html vodulenn FTS3]; ne vo ket posupl ober gant an arc'hwelioù klask er staliadur-mañ",
+ 'config-register-globals' => "'''Diwallit : Gweredekaet eo dibarzh <code>[http://php.net/register_globals register_globals]</code> PHP.'''
+'''Diweredekait anezhañ ma c'hallit.'''
+Mont a raio MediaWiki en-dro met fazioù surentez a c'hallo c'hoari war ho servijer",
+ 'config-magic-quotes-runtime' => "'''Fazi groñs : gweredekaet eo [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime] !'''
+Breinañ a ra an dibarzh-mañ ar roadennoù en ur mod dic'hortoz.
+N'hallit ket staliañ pe ober gant MediaWiki e-keit ha m'eo gweredekaet an dibarzh-se.",
+ 'config-magic-quotes-sybase' => "'''Fazi groñs : gweredekaet eo [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-sybase magic_quotes_sybase] !'''
+Breinañ a ra an dibarzh-mañ ar roadennoù en ur mod dic'hortoz.
+N'hallit ket staliañ pe ober gant MediaWiki e-keit ha m'eo gweredekaet an dibarzh-se.",
+ 'config-mbstring' => "'''Fazi groñs : gweredekaet eo [http://www.php.net/manual/en/ref.mbstring.php#mbstring.overload mbstring.func_overload] !'''
+Degas a ra an dibarzh-mañ fazioù ha gallout a ra breinañ ar roadennoù en ur mod dic'hortoz.
+N'hallit ket staliañ pe ober gant MediaWiki e-keit ha m'eo gweredekaet an dibarzh-se.",
'config-ze1' => "'''Fazi diremed : [http://www.php.net/manual/en/ini.core.php zend.ze1_compatibility_mod] zo gweredekaet !'''
An dibarzh-mañ zo kaoz da zrein euzhus gant MediaWiki.
Ne c'hallit ket staliañ nag implijout MediaWiki keit ha m'eo gweredekaet an dibarzh-mañ.",
+ 'config-safe-mode' => "'''Diwallit :''' Gweredekaet eo [http://www.php.net/features.safe-mode mod surentez] PHP.
+Kudennoù a c'hall sevel abalamour da gement-se, dreist-holl ma pellgargit restroù ha ma skorit <code>math</code>.",
+ 'config-xml-bad' => "Mankout a ra modulenn XML PHP.
+Ezhomm en deus MediaWiki eus arc'hwelioù zo eus ar vodulenn-se ha ne'z aio ket en-dro gant ar c'hefluniadur zo.
+M'emaoc'h gant Mandrake, stailhit pakad php-xml.",
+ 'config-pcre' => "Evit doare e vank ar vodulenn skorañ PCRE.
+Evit mont en-dro plaen en deus ezhomm MediaWiki eus an arc'hwelioù jediñ reoliek kenglotus gant Perl.",
+ 'config-pcre-no-utf8' => "'''Fazi groñs ''': evit doare eo bet kempunet modulenn PCRE PHP hep ar skor PCRE_UTF8.
+Ezhomm en deus MediaWiki eus UTF-8 evit mont plaen en-dro.",
'config-memory-raised' => '<code>memory_limit</code> ar PHP zo $1, kemmet e $2.',
'config-memory-bad' => "'''Diwallit :''' Da $1 emañ arventenn <code>memory_limit</code> PHP.
Re izel eo moarvat.
Marteze e c'hwito ar staliadenn !",
- 'config-xcache' => 'Staliet eo [http://trac.lighttpd.net/xcache/ XCache]',
+ 'config-xcache' => 'Staliet eo [http://xcache.lighttpd.net/ XCache]',
'config-apc' => 'Staliet eo [http://www.php.net/apc APC]',
'config-eaccel' => 'Staliet eo [http://eaccelerator.sourceforge.net/ eAccelerator]',
'config-wincache' => 'Staliet eo [http://www.iis.net/download/WinCacheForPhp WinCache]',
+ 'config-no-cache' => "'''Diwallit:''' N'eus ket bet gallet kavout [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] pe [http://www.iis.net/download/WinCacheForPhp WinCache].
+N'eo ket gweredekaet ar c'hrubuilhañ traezoù.",
'config-diff3-bad' => "N'eo ket bet kavet GNU diff3.",
+ 'config-imagemagick' => "ImageMagick kavet : <code>$1</code>.
+Gweredekaet e vo ar bihanaat skeudennoù ma vez gweredekaet ganeoc'h ar pellgargañ restroù.",
+ 'config-gd' => "Kavet eo bet al levraoueg c'hrafek GD enframmet.
+Gweredekaet e vo ar bihanaat skeudennoù ma vez gweredekaet an enporzhiañ restroù.",
+ 'config-no-scaling' => "N'eus ket bet gallet kavout al levraoueg GD pe ImageMagick.
+Diweredekaet e vo ar bihanaat skeudennoù.",
'config-no-uri' => "'''Fazi :''' N'eus ket tu da anavezout URI ar skript red.
Staliadur nullet.",
+ 'config-uploads-not-safe' => "'''Diwallit :'''Bresk eo ho kavlec'h pellgargañ dre ziouer <code>$1</code> rak gallout a ra erounit ne vern pe skript.
+ha pa vefe gwiriet gant MediaWiki an holl restroù pellgarget eo erbedet-groñs da [//www.mediawiki.org/wiki/Manual:Security#Upload_security serriñ ar breskter surentez-mañ] a-rao gweredekaat ar pellgargañ.",
+ 'config-brokenlibxml' => "Ur meskad stummoù PHP ha libxml2 dreinek a vez implijet gant ho reizhiad. Gallout a ra breinañ ar roadennoù e MediaWiki hag en arloadoù web all.
+Hizivait da PHP 5.2.9 pe nevesoc'h ha libxml2 2.7.3 pe nevesoc'h ([//bugs.php.net/bug.php?id=45996 draet renablet gant PHP]).
+Staliadur paouezet.",
+ 'config-using531' => "N'haller ket implijout MediaWiki gant PHP $1 abalamour d'un draen a zegas trubuilh en arventennoù kaset en ur ober dave da <code>__call()</code>.
+Hizivait ho reizhiad gant PHP 5.3.2 pe nevesoc'h, pe distroit da PHP 5.3.0 evit renkañ an dra-se.
+Staliadur paouezet.",
'config-db-type' => 'Doare an diaz roadennoù :',
'config-db-host' => 'Anv implijer an diaz roadennoù :',
+ 'config-db-host-help' => "M'emañ ho servijer roadennoù war ur servijer disheñvel, merkit amañ an anv ostiz pe ar chomlec'h IP.
+
+Ma rit gant un herberc'hiañ kenrannet, e tlefe ho herberc'hier bezañ pourchaset deoc'h un anv ostiz reizh en teulioù titouriñ.
+
+M'emaoc'h o staliañ ur servijer Windows ha ma rit gant MySQL, marteze ne'z aio ket en-dro \"localhost\" evel anv servijer. Ma ne dro ket, klaskit ober gant \"127.0.0.1\" da chomlec'h IP lechel.",
'config-db-host-oracle' => 'TNS an diaz roadennoù :',
'config-db-wiki-settings' => 'Anavezout ar wiki-mañ',
'config-db-name' => 'Anv an diaz roadennoù :',
+ 'config-db-name-help' => "Dibabit un anv evit ho wiki.
+Na lakait ket a esaouennoù ennañ.
+
+Ma ri gant un herberc'hiañ kenrannet e vo pourchaset deoc'h un anv diaz roadennoù dibar da vezañ graet gantañ gant ho herberc'hier pe e lezo ac'hanoc'h da grouiñ diazoù roadennoù dre ur banell gontrolliñ.",
'config-db-name-oracle' => 'Brastres diaz roadennoù :',
'config-db-install-account' => 'Kont implijer evit ar staliadur',
'config-db-username' => 'Anv implijer an diaz roadennoù :',
'config-db-password' => 'Ger-tremen an diaz roadennoù :',
+ 'config-db-password-empty' => "Lakait ur ger-tremen evit kont nevez an diaz roadennoù : $1.
+Ha pa vefe posupl da grouiñ kontoù hep ger-tremen, n'eo ket erbedet evit abegoù surentez.",
'config-db-install-username' => "Ebarzhit an anv implijer a vo implijet da gevreañ ouzh an diaz roadennoù e-pad an argerzh staliañ.
N'eo ket anv implijer ar gont MediaWiki, an anv implijer evit ho tiaz roadennoù eo.",
'config-db-install-password' => "Ebarzhit ar ger-tremen a vo implijet da gevreañ ouzh an diaz roadennoù e-pad an argerzh staliañ.
@@ -1931,6 +2604,9 @@ N'eo ket ar ger-tremen evit ar gont MediaWiki, ar ger-tremen evit ho tiaz roaden
'config-mysql-old' => "Rekis eo MySQL $1 pe ur stumm nevesoc'h; ober a rit gant $2.",
'config-db-port' => 'Porzh an diaz roadennoù :',
'config-db-schema' => 'Brastres evit MediaWiki',
+ 'config-db-schema-help' => "Peurliesañ e vo digudenn ar chema-mañ.
+Arabat cheñch anezho ma n'hoc'h eus ket ezhomm d'en ober.",
+ 'config-pg-test-error' => "N'haller ket kevreañ ouzh an diaz-titouroù '''$1''' : $2",
'config-sqlite-dir' => "Kavlec'h roadennoù SQLite :",
'config-oracle-def-ts' => 'Esaouenn stokañ ("tablespace") dre ziouer :',
'config-oracle-temp-ts' => "Esaouenn stokañ (''tablespace'') da c'hortoz :",
@@ -1938,19 +2614,22 @@ N'eo ket ar ger-tremen evit ar gont MediaWiki, ar ger-tremen evit ho tiaz roaden
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => "Skoret eo ar reizhiadoù diaz titouroù da-heul gant MediaWiki :
$1
Ma ne welit ket amañ dindan ar reizhiad diaz titouroù a fell deoc'h ober ganti, heuilhit an titouroù a-us (s.o. al liammoù) evit gweredekaat ar skorañ.",
'config-support-mysql' => '* $1 eo an dibab kentañ evit MediaWiki hag an hini skoret ar gwellañ ([http://www.php.net/manual/en/mysql.installation.php penaos kempunañ PHP gant skor MySQL])',
- 'config-support-postgres' => "* $1 zo ur reizhiad diaz titouroù brudet ha digor hag a c'hall ober evit MySQL ([http://www.php.net/manual/en/pgsql.installation.php penaos kempunañ PHP gant skor PostgreSQL])",
+ 'config-support-postgres' => "* Ur reizhiad diaz titouroù brudet ha digor eo $1. Gallout a ra ober evit MySQL ([http://www.php.net/manual/en/pgsql.installation.php Penaos kempunañ PHP gant skor PostgreSQL]). Gallout a ra bezañ un nebeud drein bihan enni ha n'eo ket erbedet he implijout en un endro produiñ.",
'config-support-sqlite' => "* $1 zo ur reizhiad diaz titouroù skañv skoret eus ar c'hentañ. ([http://www.php.net/manual/en/pdo.installation.php Penaos kempunañ PHP gant skor SQLite], implijout a ra PDO)",
'config-support-oracle' => '* $1 zo un diaz titouroù kenwerzhel. ([http://www.php.net/manual/en/oci8.installation.php Penaos kempunañ PHP gant skor OCI8])',
+ 'config-support-ibm_db2' => '* Un diaz titouroù evit embregerezhioù kenwerzhel eo $1.',
'config-header-mysql' => 'Arventennoù MySQL',
'config-header-postgres' => 'Arventennoù PostgreSQL',
'config-header-sqlite' => 'Arventennoù SQLite',
'config-header-oracle' => 'Arventennoù Oracle',
+ 'config-header-ibm_db2' => 'Arventennoù IBM DB2',
'config-invalid-db-type' => 'Direizh eo ar seurt diaz roadennoù',
'config-missing-db-name' => 'Ret eo deoc\'h merkañ un dalvoudenn evit "Anv an diaz titouroù"',
'config-missing-db-host' => 'Ret eo deoc\'h merkañ un dalvoudenn evit "Ostiz an diaz titouroù"',
@@ -1966,17 +2645,32 @@ Ober hepken gant lizherennoù ASCII (a-z, A-Z), sifroù (0-9), arouezennoù isli
Gwiriit anv an ostiz, an anv implijer, ar ger-tremen ha klaskit en-dro.',
'config-invalid-schema' => 'Chema direizh evit MediaWiki "$1".
Grit hepken gant lizherennoù ASCII (a-z, A-Z), sifroù (0-9) hag arouezennoù islinennañ (_).',
+ 'config-db-sys-create-oracle' => "N'anavez ar stalier nemet ar c'hontoù SYSDBA evit krouiñ kontoù nevez.",
+ 'config-db-sys-user-exists-oracle' => 'Bez\' ez eus eus ar gont "$1" c\'hoazh. N\'haller ober gant SYSDBA nemet evit krouiñ kontoù nevez !',
'config-postgres-old' => "Rekis eo PostgreSQL $1 pe ur stumm nevesoc'h; ober a rit gant $2.",
+ 'config-sqlite-name-help' => "Dibabit un anv dibar d'ho wiki.
+Arabat ober gant esaouennoù pe barrennigoù-stagañ.
+Implijet e vo evit ar restr roadennoù SQLite.",
'config-sqlite-mkdir-error' => 'Ur fazi zo bet e-ser krouiñ ar c\'havlec\'h roadennoù "$1".
Gwiriañ al lec\'hiadur ha klask en-dro.',
+ 'config-sqlite-dir-unwritable' => 'Dibosupl skrivañ er c\'havlec\'h "$1".
+Cheñchit ar aotreoù evit ma c\'hallfe ar servijer web skrivañ ennañ ha klaskit en-dro.',
+ 'config-sqlite-connection-error' => "$1.
+
+Gwiriañ ar c'havlec'h roadennoù hag anv an diaz roadennoù a-is ha klaskit en-dro.",
'config-sqlite-readonly' => "N'haller ket skrivañ er restr <code>$1</code>.",
'config-sqlite-cant-create-db' => "N'haller ket krouiñ restr an diaz roadennoù <code>$1</code>.",
+ 'config-sqlite-fts3-downgrade' => "N'eo ket kenglotus ar PHP gant FTS3, o lakaat an taolennoù da glotañ gant ur stumm koshoc'h",
+ 'config-can-upgrade' => "Taolennoù MediaWiki zo en diaz titouroù.
+Da hizivaat anezho da VediaWiki $1, klikañ war '''Kenderc'hel'''.",
'config-upgrade-done-no-regenerate' => 'Hizivadenn kaset da benn.
Gallout a rit [$1 kregiñ da implijout ho wiki].',
'config-regenerate' => 'Adgenel LocalSettings.php →',
'config-show-table-status' => "C'hwitet ar reked SHOW TABLE STATUS !",
+ 'config-unknown-collation' => "'''Diwallit :''' Emañ an diaz roadennoù o renkañ an traoù diouzh un urzh lizherennek dianav.",
'config-db-web-account' => 'Kont an diaz roadennoù evit ar voned Kenrouedad',
+ 'config-db-web-help' => 'Diuzañ an anv implijer hag ar ger-tremen a vo implijet gant ar servijer web evit kevreañ ouzh ar servijer diaz roadennoù pa vez ar wiki o vont en-dro war ar pemdez.',
'config-db-web-account-same' => 'Ober gant an hevelep kont hag an hini implijet evit ar staliañ',
'config-db-web-create' => "Krouiñ ar gont ma n'eus ket anezhi c'hoazh",
'config-mysql-engine' => 'Lusker stokañ :',
@@ -1986,12 +2680,17 @@ Gallout a rit [$1 kregiñ da implijout ho wiki].',
'config-mysql-binary' => 'Binarel',
'config-mysql-utf8' => 'UTF-8',
'config-site-name' => 'Anv ar wiki :',
+ 'config-site-name-help' => "Dont a raio war wel e barrenn ditl ar merdeer hag e meur a lec'h all c'hoazh.",
'config-site-name-blank' => "Lakait anv ul lec'hienn .",
'config-project-namespace' => 'Esaouenn anv ar raktres :',
'config-ns-generic' => 'Raktres',
'config-ns-site-name' => 'Hevelep anv hag hini ar wiki : $1',
'config-ns-other' => 'All (spisaat)',
'config-ns-other-default' => 'MaWiki',
+ 'config-ns-invalid' => 'Direizh eo an esaouenn anv "<nowiki>$1</nowiki>" spisaet.
+Merkit un esaouenn anv disheñvel evit ar raktres.',
+ 'config-ns-conflict' => 'Tabut zo etre an esaouenn anv spisaet "<nowiki>$1</nowiki>" hag un esaouenn anv dre ziouer eus MediaWiki.
+Spisait un anv raktres esaouenn anv all.',
'config-admin-box' => 'Kont merour',
'config-admin-name' => "Hoc'h anv :",
'config-admin-password' => 'Ger-tremen :',
@@ -1999,13 +2698,13 @@ Gallout a rit [$1 kregiñ da implijout ho wiki].',
'config-admin-help' => 'Merkit hoc\'h anv implijer amañ, da skouer "Yann Vlog".
Hemañ eo an anv a implijot evit kevreañ d\'ar wiki-mañ.',
'config-admin-name-blank' => 'Lakait anv ur merour.',
- 'config-admin-name-invalid' => 'Direizh eo an anv implijer diferet « <nowiki>$1</nowiki> ».
-Diferit un anv implijer all.',
+ 'config-admin-name-invalid' => 'Direizh eo an anv implijer spisaet "<nowiki>$1</nowiki>".
+Merkit un anv implijer all.',
'config-admin-password-blank' => 'Reiñ ur ger-tremen evit kont ar merour.',
'config-admin-password-same' => "Ne c'hall ket ar ger-tremen bezañ heñvel ouzh anv ar gont.",
'config-admin-password-mismatch' => "Ne glot ket ar gerioù-tremen hoc'h eus merket an eil gant egile.",
'config-admin-email' => "Chomlec'h postel :",
- 'config-admin-email-help' => "Merkit ur chomlec'h postel amañ evit gallout resev posteloù a-berzh implijerien all eus ar wiki, adderaouekaat ho ker-tremen ha bezañ kelaouet eus ar c'hemmoù degaset d'ar pajennoù zo en ho roll evezhiañ.",
+ 'config-admin-email-help' => "Merkit ur chomlec'h postel amañ evit gallout resev posteloù a-berzh implijerien all eus ar wiki, adderaouekaat ho ker-tremen ha bezañ kelaouet eus ar c'hemmoù degaset d'ar pajennoù zo en ho roll evezhiañ. Gallout a rit lezel ar vaezienn-mañ goullo.",
'config-admin-error-user' => 'Fazi diabarzh en ur grouiñ ur merer gant an anv "<nowiki>$1</nowiki>".',
'config-admin-error-password' => 'Fazi diabarzh o lakaat ur ger-tremen evit ar merour « <nowiki>$1</nowiki> » : <pre>$2</pre>',
'config-admin-error-bademail' => "Ebarzhet hoc'h eus ur chomlec'h postel direizh.",
@@ -2021,56 +2720,94 @@ Gellout a rit tremen ar c'hefluniadur nevez ha staliañ ar wiki war-eeun.",
'config-profile-private' => 'Wiki prevez',
'config-license' => 'Copyright hag aotre-implijout:',
'config-license-none' => 'Aotre ebet en traoñ pajenn',
- 'config-license-gfdl-old' => 'Aotre implijout teuliaouiñ frank GNU 1.2',
- 'config-license-gfdl-current' => "Aotre implijout teuliaouiñ frank GNU 1.3 pe nevesoc'h",
+ 'config-license-cc-by-sa' => 'Creative Commons Deroadenn Kenrannañ heñvel',
+ 'config-license-cc-by-nc-sa' => 'Creative Commons Deroadenn Angenwerzhel Kenrannañ heñvel',
+ 'config-license-cc-0' => 'Creative Commons Zero (Domani foran)',
'config-license-pd' => 'Domani foran',
'config-license-cc-choose' => 'Dibabit un aotre-implijout Creative Commons personelaet',
'config-email-settings' => 'Arventennoù ar postel',
'config-enable-email' => 'Gweredekaat ar posteloù a ya kuit',
+ 'config-enable-email-help' => "Mar fell deoc'h ober gant ar posteler eo ret deoc'h [http://www.php.net/manual/en/mail.configuration.php kefluniañ arventennoù postel PHP] ervat.
+Mar ne fell ket deoc'h ober gant ar servij posteloù e c'hall bezañ diweredekaet amañ.",
'config-email-user' => 'Gweredekaat ar posteloù a implijer da implijer',
'config-email-user-help' => "Aotren a ra an holl implijerien da gas posteloù an eil d'egile mard eo bet gweredekaet an arc'hwel ganto en ho penndibaboù.",
+ 'config-email-usertalk' => 'Gweredekaat kemennadur pajennoù kaozeal an implijerien',
+ 'config-email-usertalk-help' => "Talvezout a ra d'an implijerien da resev kemennadennoù ma vez kemmet o fajennoù kaozeal, ma vez gweredekaet en o fenndibaboù.",
'config-email-watchlist' => "Gweredekaat ar c'hemenn listenn evezhiañ",
+ 'config-email-watchlist-help' => "Talvezout a ra d'an implijerien da resev kemennadennoù diwar-benn ar pajennoù evezhiet ganto, ma vez gweredekaet en o fenndibaboù.",
'config-email-auth' => 'Gweredekaat an dilesadur dre bostel',
'config-email-sender' => "Chomlec'h postel respont :",
- 'config-email-sender-help' => "Merkit ar chomlec'h postel da vezañ implijet da chomlec'h distreiñ ar posteloù a ya er-maez.
+ 'config-email-sender-help' => "Merkit ar chomlec'h postel da vezañ implijet da chomlec'h distreiñ ar posteloù a ya er-maez.
Di e vo kaset ar posteloù distaolet.
Niverus eo ar servijerioù postel a c'houlenn da nebeutañ un [http://fr.wikipedia.org/wiki/Nom_de_domaine anv domani] reizh.",
'config-upload-settings' => 'Pellgargañ skeudennoù ha restroù',
'config-upload-enable' => 'Gweredekaat ar pellgargañ restroù',
'config-upload-deleted' => "Kavlec'h evit ar restroù dilamet :",
+ 'config-upload-deleted-help' => "Dibab ur c'havlec'h da ziellaouiñ ar restroù diverket.
+Ar pep gwellañ e vije ma ne vije ket tu d'e dizhout adalek ar Genrouedad.",
'config-logo' => 'URL al logo :',
'config-instantcommons' => "Gweredekaat ''InstantCommons''",
+ 'config-cc-error' => "N'eus deuet disoc'h ebet gant dibaber aotreoù-implijout Creative Commons.
+Merkit anv an aotre-implijout gant an dorn.",
'config-cc-again' => 'Dibabit adarre...',
+ 'config-cc-not-chosen' => 'Dibabit an aotre-implijout Creative Commons a fell deoc\'h ober gantañ ha klikit war "kenderc\'hel".',
'config-advanced-settings' => 'Kefluniadur araokaet',
+ 'config-cache-options' => 'Arventennoù evit krubuilhañ traezoù :',
'config-cache-accel' => 'Krubuilhañ traezoù PHP (APC, eAccelerator, XCache pe WinCache)',
'config-cache-memcached' => 'Implijout Memcached (en deus ezhomm bezañ staliet ha kefluniet)',
'config-memcached-servers' => 'Servijerioù Memcached :',
'config-memcached-help' => "Roll ar chomlec'hioù IP da implijout evit Memcached.
-Ret eo dispartiañ anezho gant virgulennoù ha diferañ ar porzh da implijout (da skouer : 127.0.0.1:11211, 192.168.1.25:11211).",
+Ret eo spisaat unan dre linenn ha spisaat ar porzh da vezañ implijet. Da skouer :
+127.0.0.1:11211
+192.168.1.25:1234",
+ 'config-memcache-needservers' => "Diuzet hoc'h eus Memcached evel seurt krubuilh met n'hoc'h eus spisaet servijer ebet.",
+ 'config-memcache-badip' => "Ur chomlec'h IP direizh hoc'h eus lakaet evit Memcached : $1.",
+ 'config-memcache-badport' => 'Niverennoù porzh Memcached a zlefe bezañ etre $1 ha $2.',
'config-extensions' => 'Astennoù',
- 'config-install-alreadydone' => "'''Diwallit''': Staliet hoc'h eus MediaWiki dija war a seblant hag emaoc'h o klask e staliañ c'hoazh.
+ 'config-extensions-help' => "N'eo ket bet detektet an astennoù rollet a-us en ho kavlec'h <code>./astennoù</code>.
+
+Marteze e vo ezhomm kefluniañ pelloc'h met gallout a rit o gweredekaat bremañ.",
+ 'config-install-alreadydone' => "'''Diwallit''': Staliet hoc'h eus MediaWiki dija war a seblant hag emaoc'h o klask e staliañ c'hoazh.
Kit d'ar bajenn war-lerc'h, mar plij.",
+ 'config-install-begin' => 'Pa vo bet pouezet ganeoc\'h war "{{int:config-continue}}" e krogo staliadur MediaWiki.
+Pouezit war Kent mar fell deoc\'h cheñch tra pe dra.',
'config-install-step-done' => 'graet',
'config-install-step-failed' => "c'hwitet",
'config-install-extensions' => 'En ur gontañ an astennoù',
'config-install-database' => 'Krouiñ an diaz roadennoù',
+ 'config-install-schema' => 'O krouiñ ar chema',
+ 'config-install-pg-schema-not-exist' => "N'eus ket eus chema PostgreSQL.",
'config-install-pg-schema-failed' => "C'hwitet eo krouidigezh an taolennoù.
Gwiriit hag-eñ e c'hall an implijer « $1 » skrivañ er brastres « $2 ».",
'config-install-pg-commit' => "O wiriekaat ar c'hemmoù",
'config-install-pg-plpgsql' => 'O wiriañ ar yezh PL/pgSQL',
'config-pg-no-plpgsql' => "Ret eo deoc'h staliañ ar yezh PL/pgSQL en diaz roadennoù $1",
+ 'config-pg-no-create-privs' => "N'eus ket gwirioù a-walc'h gant ar gont hoc'h eus merket evit ar staliadur evit gallout krouiñ ur gont.",
'config-install-user' => 'O krouiñ an diaz roadennoù implijer',
+ 'config-install-user-alreadyexists' => 'An implijer "$1" zo anezhañ dija',
+ 'config-install-user-create-failed' => 'Fazi e-ser krouiñ an implijer "$1" : $2',
+ 'config-install-user-grant-failed' => 'N\'eus ket bet gallet reiñ an aotre d\'an implijer "$1" : $2',
'config-install-tables' => 'Krouiñ taolennoù',
'config-install-tables-failed' => "'''Fazi :''' c'hwitet eo krouidigezh an daolenn gant ar fazi-mañ : $1",
+ 'config-install-interwiki' => 'O leuniañ dre ziouer an daolenn etrewiki',
'config-install-interwiki-list' => "Ne c'haller ket kavout ar restr <code>interwiki.list</code>.",
'config-install-stats' => 'O sevel ar stadegoù',
- 'config-install-keys' => "Genel an alc'hwez kuzh",
+ 'config-install-keys' => "Genel an alc'hwezioù kuzh",
'config-install-sysop' => 'Krouidigezh kont ar merour',
- 'config-install-subscribe-fail' => "Ne c'haller ket koumanantiñ da mediawiki-announce",
+ 'config-install-subscribe-fail' => "N'haller ket koumanantiñ da mediawiki-announce : $1",
'config-install-mainpage' => "O krouiñ ar bajenn bennañ gant un endalc'had dre ziouer",
+ 'config-install-extension-tables' => 'O krouiñ taolennoù evit an astennoù gweredekaet',
'config-install-mainpage-failed' => "Ne c'haller ket ensoc'hañ ar bajenn bennañ: $1",
'config-download-localsettings' => 'Pellgargañ LocalSettings.php',
'config-help' => 'skoazell',
+ 'mainpagetext' => "'''Meziant MediaWiki staliet.'''",
+ 'mainpagedocfooter' => "Sellit ouzh [//meta.wikimedia.org/wiki/Help:Contents Sturlevr an implijerien] evit gouzout hiroc'h war an doare da implijout ar meziant wiki.
+
+== Kregiñ ganti ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
);
/** Bosnian (Bosanski)
@@ -2109,10 +2846,10 @@ Provjerite vaš php.ini i provjerite da li je <code>session.save_path</code> pos
'config-page-upgradedoc' => 'Nadograđujem',
'config-help-restart' => 'Da li želite oÄistiti sve spremljene podatke koje ste unijeli i da zapoÄnete ponovo proces instalacije?',
'config-restart' => 'Da, pokreni ponovo',
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWiki PoÄetna strana]
-* [http://www.mediawiki.org/wiki/Help:Contents VodiÄ za korisnike]
-* [http://www.mediawiki.org/wiki/Manual:Contents VodiÄ za administratore]
-* [http://www.mediawiki.org/wiki/Manual:FAQ NPP]
+ 'config-sidebar' => '* [//www.mediawiki.org MediaWiki PoÄetna strana]
+* [//www.mediawiki.org/wiki/Help:Contents VodiÄ za korisnike]
+* [//www.mediawiki.org/wiki/Manual:Contents VodiÄ za administratore]
+* [//www.mediawiki.org/wiki/Manual:FAQ NPP]
----
* <doclink href=Readme>ProÄitaj me</doclink>
* <doclink href=ReleaseNotes>Napomene izdanja</doclink>
@@ -2121,12 +2858,20 @@ Provjerite vaš php.ini i provjerite da li je <code>session.save_path</code> pos
'config-env-good' => 'Okruženje je provjereno.
Možete instalirati MediaWiki.',
'config-env-php' => 'PHP $1 je instaliran.',
- 'config-no-db' => 'Nije mogao biti pronađen podgodan drajver za bazu podataka!',
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] je instaliran',
+ 'config-no-db' => 'Nije mogao biti pronađen pogodan driver za bazu podataka! Morate instalirati driver baze podataka za PHP.
+Slijedeće vrste baza podataka su podržane: $1.
+
+Ako se na dijeljenom serveru, tražite od vašeg pružaoca usluga da instalira pogodan driver za bazu podataka.
+Ako se sami kompajlirali PHP, podesite ga sa omogućenim klijentom baze podataka, koristeći naprimjer <code>./configure --with-mysql</code>.
+Ako ste instalirali PHP iz Debian ili Ubuntu paketa, možda morate instalirati i modul php5-mysql.',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] je instaliran',
'config-apc' => '[http://www.php.net/apc APC] je instaliran',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] je instaliran',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] je instaliran',
'config-diff3-bad' => 'GNU diff3 nije pronađen.',
+ 'config-db-type' => 'Vrsta baze podataka:',
+ 'config-db-host' => 'Domaćin baze podataka:',
+ 'config-db-wiki-settings' => 'Identificiraj ovu wiki',
'config-db-name' => 'Naziv baze podataka:',
'config-db-name-oracle' => 'Å ema baze podataka:',
'config-header-mysql' => 'Postavke MySQL',
@@ -2142,16 +2887,104 @@ Ako želite regenerisati vašu datoteku <code>LocalSettings.php</code>, kliknite
Ovo '''nije preporuÄeno''' osim ako nemate problema s vaÅ¡om wiki.",
'config-admin-name' => 'Vaše ime:',
'config-admin-password' => 'Å ifra:',
+ 'mainpagetext' => "'''MediaViki softver is uspješno instaliran.'''",
+ 'mainpagedocfooter' => 'Kontaktirajte [//meta.wikimedia.org/wiki/Help:Contents uputstva za korisnike] za informacije o upotrebi wiki programa.
+
+== PoÄetak ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista postavki]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki najÄešće postavljana pitanja]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista E-Mail adresa MediaWiki]',
+);
+
+/** Catalan (Català) */
+$messages['ca'] = array(
+ 'mainpagetext' => "'''El programari del MediaWiki s'ha instaŀlat correctament.'''",
+ 'mainpagedocfooter' => "Consulteu la [//meta.wikimedia.org/wiki/Help:Contents Guia d'Usuari] per a més informació sobre com utilitzar-lo.
+
+== Per a començar ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Llista de característiques configurables]
+* [//www.mediawiki.org/wiki/Manual:FAQ PMF del MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de correu (''listserv'') per a anuncis del MediaWiki]",
);
/** Chechen (Ðохчийн)
* @author Sasan700
*/
$messages['ce'] = array(
- 'config-no-fts3' => "'''Тергам бе''': SQLite гулйина хуттург йоцуш [http://sqlite.org/fts3.html FTS3] — лахар болхбеш хир дац оцу бухца.",
+ 'config-no-fts3' => "'''Тергам бе''': SQLite гулйина хуттург йоцуш [//sqlite.org/fts3.html FTS3] — лахар болхбеш хир дац оцу бухца.",
+ 'mainpagetext' => "'''Вики-белха гlÐ¸Ñ€Ñ Â«MediaWiki» кхочуш дика дlахlоттийна.'''",
+ 'mainpagedocfooter' => 'Викийца болх бан хаамаш карор бу Ñ…lокху чохь [//meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 ниÑвохааман куьйгаллица].
+
+== Цхьаболу пайде гlирÑаш ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings ГlÐ¸Ñ€Ñ Ð½Ð¸Ñбан тарлушболу могlам];
+* [//www.mediawiki.org/wiki/Manual:FAQ Сих Ñиха лушдолу хаттарш а жоьпаш оцу MediaWiki];
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Хаам бохьуьйту араÑларца башхонца керла MediaWiki].',
);
-/** Czech (ÄŒesky) */
+/** Cebuano (Cebuano) */
+$messages['ceb'] = array(
+ 'mainpagetext' => "'''Malamposon ang pag-instalar sa MediaWiki.'''",
+ 'mainpagedocfooter' => 'Konsultaha ang [//meta.wikimedia.org/wiki/Help:Contents Giya sa mga gumagamit] alang sa impormasyon unsaon paggamit niining wiki nga software.
+
+== Pagsugod ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Listahan sa mga setting sa kompigurasyon]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ sa MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list sa mga release sa MediaWiki]',
+);
+
+/** Sorani (کوردی)
+ * @author Asoxor
+ */
+$messages['ckb'] = array(
+ 'mainpagetext' => "'''میدیاویکی بە سەرکەوتوویی دامەزرا.'''",
+ 'mainpagedocfooter' => 'پرس بکە بە [//meta.wikimedia.org/wiki/Help:Contents ڕێنوێنیی بەکارھێنەران] بۆ زانیاری سەبارەت بە بەکارھێنانی نەرمامێری ویکی.
+
+== دەستپێکردن ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings لیستی ڕێکخستنەکان شێوەپێدان]
+* [//www.mediawiki.org/wiki/Manual:FAQ پرسیارە دوپاتکراوەکانی میدیاویکی (MediaWiki FAQ)]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce لیستی ئیمەیلی وەشانەکانی میدیاویکی]',
+);
+
+/** Capiznon (Capiceño)
+ * @author Oxyzen
+ */
+$messages['cps'] = array(
+ 'mainpagetext' => "'''Madalag-on nga na-install ang MediaWiki.'''",
+ 'mainpagedocfooter' => 'Kunsultahon ang [//meta.wikimedia.org/wiki/Help:Pagtuytoy sa Manug-usar] para sa impormasyon sa paggamit sang wiki nga "software".
+
+==Pag-umpisa==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista sang mga setting sang konpigurayon]
+* [//www.mediawiki.org/wiki/Manual:FAQ Mga perme napangkot sa MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista sang mga ginapadal-an sang sulat sang MediaWiki]',
+);
+
+/** Crimean Turkish (Latin script) (‪Qırımtatarca (Latin)‬) */
+$messages['crh-latn'] = array(
+ 'mainpagetext' => "'''MediaWiki muvafaqiyetnen quruldı.'''",
+ 'mainpagedocfooter' => "Bu vikiniñ yol-yoruğını [//meta.wikimedia.org/wiki/Help:Contents User's Guide qullanıcı qılavuzından] ögrenip olasıñız.
+
+== Bazı faydalı saytlar ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Olucı sazlamalar cedveli];
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki boyunca sıq berilgen suallernen cevaplar];
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-niñ yañı versiyalarınıñ çıquvından haber yiberüv].",
+);
+
+/** Crimean Turkish (Cyrillic script) (‪Къырымтатарджа (Кирилл)‬) */
+$messages['crh-cyrl'] = array(
+ 'mainpagetext' => "'''MediaWiki мувафакъиетнен къурулды.'''",
+ 'mainpagedocfooter' => "Бу викининъ ёл-ёругъыны [//meta.wikimedia.org/wiki/Help:Contents User's Guide къулланыджы къылавузындан] огренип олаÑынъыз.
+
+== Базы файдалы Ñайтлар ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Олуджы Ñазламалар джедвели];
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki боюнджа Ñыкъ берильген Ñуаллернен джеваплар];
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-нинъ Ñнъы верÑиÑларынынъ чыкъувындан хабер йиберюв].",
+);
+
+/** Czech (ÄŒesky)
+ * @author Danny B.
+ */
$messages['cs'] = array(
'config-information' => 'Informace',
'config-continue' => 'PokraÄovat →',
@@ -2167,6 +3000,48 @@ $messages['cs'] = array(
'config-admin-email' => 'E-mailová adresa:',
'config-email-settings' => 'Nastavení e-mailu',
'config-install-step-failed' => 'selhaly',
+ 'mainpagetext' => "'''MediaWiki byla úspěšně nainstalována.'''",
+ 'mainpagedocfooter' => '[//meta.wikimedia.org/wiki/Help:Contents Uživatelská příruÄka] vám napoví, jak MediaWiki používat.
+
+== ZaÄínáme ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Nastavení konfigurace]
+* [//www.mediawiki.org/wiki/Manual:FAQ Často kladené otázky o MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-mailová konference oznámení MediaWiki]',
+);
+
+/** Kashubian (Kaszëbsczi) */
+$messages['csb'] = array(
+ 'mainpagetext' => "'''MediaWiki òsta zainstalowónô.'''",
+);
+
+/** Chuvash (Чӑвашла) */
+$messages['cv'] = array(
+ 'mainpagetext' => "'''«MediaWiki» вики-движока лартаÑÑи ăнăçлă вĕçленчĕ.'''",
+ 'mainpagedocfooter' => 'Ку википе ĕçлеме пулăшакан информацине [//meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 уÑăç руководÑтвинче] тупма пултаратăр.
+
+== Пулăшма пултарĕç ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings ĔнерлевÑен ÑпиÑокĕ];
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki тăрăх чаÑ-чаÑах ыйтакан ыйтуÑемпе хуравÑем];
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki çĕнĕ верÑи тухнине пĕлтерекен раÑÑылка].',
+);
+
+/** Welsh (Cymraeg) */
+$messages['cy'] = array(
+ 'mainpagetext' => "'''Wedi llwyddo gosod meddalwedd MediaWiki yma'''",
+ 'mainpagedocfooter' => 'Ceir cymorth (yn Saesneg) ar ddefnyddio meddalwedd wici yn y [//meta.wikimedia.org/wiki/Help:Contents Canllaw Defnyddwyr] ar wefan Wikimedia.
+
+==Cychwyn arni==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Rhestr gosodiadau wrth gyflunio]
+* [//www.mediawiki.org/wiki/Manual:FAQ Cwestiynau poblogaidd ar MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Rhestr postio datganiadau MediaWiki]',
+);
+
+/** Danish (Dansk) */
+$messages['da'] = array(
+ 'mainpagetext' => "'''MediaWiki er nu installeret.'''",
+ 'mainpagedocfooter' => 'Se vores engelsksprogede [//meta.wikimedia.org/wiki/MediaWiki_localisation dokumentation om tilpasning af brugergrænsefladen] og [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide brugervejledningen] for oplysninger om opsætning og anvendelse.',
);
/** German (Deutsch)
@@ -2228,21 +3103,21 @@ Die Datei <code>php.ini</code> muss geprüft und es muss dabei sichergestellt we
'config-help-restart' => 'Sollen alle bereits eingegebene Daten gelöscht und der Installationsvorgang erneut gestartet werden?',
'config-restart' => 'Ja, erneut starten',
'config-welcome' => '=== Prüfung der Installationsumgebung ===
-Basisprüfungen werden durchgeführt, um festzustellen, ob die Installationsumgebung für die Installation von MediaWiki geeignet ist.
+Die Basisprüfungen werden durchgeführt, um festzustellen, ob die Installationsumgebung für die Installation von MediaWiki geeignet ist.
Die Ergebnisse dieser Prüfung sollten angegeben werden, sofern während des Installationsvorgangs Hilfe benötigt und erfragt wird.',
'config-copyright' => "=== Lizenz und Nutzungsbedingungen ===
$1
-Dieses Programm ist freie Software, d. h. es kann, gemäß den Bedingungen der von der Free Software Foundation veröffentlichten ''GNU General Public License'', weiterverteilt und/ oder modifiziert werden. Dabei kann die Version 2, oder nach eigenem Ermessen, jede neuere Version der Lizenz verwendet werden.
+Dieses Programm ist freie Software, d. h. es kann, gemäß den Bedingungen der von der Free Software Foundation veröffentlichten ''GNU General Public License'', weiterverteilt und/oder modifiziert werden. Dabei kann die Version 2, oder nach eigenem Ermessen, jede neuere Version der Lizenz verwendet werden.
Dieses Programm wird in der Hoffnung verteilt, dass es nützlich sein wird, allerdings '''ohne jegliche Garantie''' und sogar ohne die implizierte Garantie einer '''Marktgängigkeit''' oder '''Eignung für einen bestimmten Zweck'''. Hierzu sind weitere Hinweise in der ''GNU General Public License'' enthalten.
Eine <doclink href=Copying>Kopie der ''GNU General Public License''</doclink> sollte zusammen mit diesem Programm verteilt worden sein. Sofern dies nicht der Fall war, kann eine Kopie bei der Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, schriftlich angefordert oder auf deren Website [http://www.gnu.org/copyleft/gpl.html online gelesen] werden.",
- 'config-sidebar' => '* [http://www.mediawiki.org Website von MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents Nutzeranleitung]
-* [http://www.mediawiki.org/wiki/Manual:Contents Administratorenanleitung]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Häufig gestellte Fragen]
+ 'config-sidebar' => '* [//www.mediawiki.org Website von MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents Benutzeranleitung]
+* [//www.mediawiki.org/wiki/Manual:Contents Administratorenanleitung]
+* [//www.mediawiki.org/wiki/Manual:FAQ Häufig gestellte Fragen]
----
* <doclink href=Readme>Lies mich</doclink>
* <doclink href=ReleaseNotes>Versionsinformationen</doclink>
@@ -2258,17 +3133,16 @@ Allerdings benötigt MediaWiki PHP $2 oder höher.',
'config-unicode-using-utf8' => 'Zur Unicode-Normalisierung wird Brion Vibbers <code>utf8_normalize.so</code> eingesetzt.',
'config-unicode-using-intl' => 'Zur Unicode-Normalisierung wird die [http://pecl.php.net/intl PECL-Erweiterung intl] eingesetzt.',
'config-unicode-pure-php-warning' => "'''Warnung:''' Die [http://pecl.php.net/intl PECL-Erweiterung intl] ist für die Unicode-Normalisierung nicht verfügbar, so dass stattdessen die langsame pure-PHP-Implementierung genutzt wird.
-Sofern eine Website mit großer Benutzeranzahl betrieben wird, sollten weitere Informationen auf der Webseite [http://www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode-Normalisierung (en)] gelesen werden.",
- 'config-unicode-update-warning' => "'''Warnung:''' Die installierte Version des Unicode-Normalisierungswrappers nutzt einer ältere Version der Bibliothek [http://site.icu-project.org/ des ICU-Projekts].
-Diese sollte [http://www.mediawiki.org/wiki/Unicode_normalization_considerations aktualisiert] werden, sofern auf die Verwendung von Unicode Wert gelegt wird.",
- 'config-no-db' => 'Es konnte kein adäquater Datenbanktreiber gefunden werden!',
- 'config-no-db-help' => 'Es muss ein Datenbanktreiber für PHP installiert werden.
+Sofern eine Website mit großer Benutzeranzahl betrieben wird, sollten weitere Informationen auf der Webseite [//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode-Normalisierung (en)] gelesen werden.",
+ 'config-unicode-update-warning' => "'''Warnung:''' Die installierte Version des Unicode-Normalisierungswrappers nutzt einer ältere Version der Bibliothek des [http://site.icu-project.org/ ICU-Projekts].
+Diese sollte [//www.mediawiki.org/wiki/Unicode_normalization_considerations aktualisiert] werden, sofern auf die Verwendung von Unicode Wert gelegt wird.",
+ 'config-no-db' => 'Es konnte kein adäquater Datenbanktreiber gefunden werden. Es muss daher ein Datenbanktreiber für PHP installiert werden.
Die folgenden Datenbanksysteme werden unterstützt: $1
Sofern ein gemeinschaftlich genutzter Server für das Hosting verwendet wird, muss der Hoster gefragt werden einen adäquaten Datenbanktreiber zu installieren.
Sofern PHP selbst kompiliert wurde, muss es mit es neu konfiguriert werden, wobei der Datenbankclient zu aktivierten ist. Hierzu kann beispielsweise <code>./configure --with-mysql</code> ausgeführt werden.
Sofern PHP über die Paketverwaltung einer Debian- oder Ubuntu-Installation installiert wurde, muss das „php5-mysql“-Paket nachinstalliert werden.',
- 'config-no-fts3' => "'''Warnung:''' SQLite wurde ohne das [http://sqlite.org/fts3.html FTS3-Modul] kompiliert, so dass keine Suchfunktionen zur Verfügung stehen.",
+ 'config-no-fts3' => "'''Warnung:''' SQLite wurde ohne das [//sqlite.org/fts3.html FTS3-Modul] kompiliert, so dass keine Suchfunktionen zur Verfügung stehen.",
'config-register-globals' => "'''Warnung: Der Parameter <code>[http://php.net/register_globals register_globals]</code> von PHP ist aktiviert.'''
'''Sie sollte deaktiviert werden, sofern dies möglich ist.'''
Die MediaWiki-Installation wird zwar laufen, wobei aber der Server für potentielle Sicherheitsprobleme anfällig ist.",
@@ -2297,12 +3171,14 @@ MediaWiki benötigt die UTF-8-Unterstützung, um fehlerfrei lauffähig zu sein."
'config-memory-bad' => "'''Warnung:''' Der PHP-Parameter <code>memory_limit</code> beträgt $1.
Dieser Wert ist wahrscheinlich zu niedrig.
Der Installationsvorgang könnte daher scheitern!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] ist installiert',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] ist installiert',
'config-apc' => '[http://www.php.net/apc APC] ist installiert',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] ist installiert',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] ist installiert',
- 'config-no-cache' => "'''Warnung:''' [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] oder [http://www.iis.net/download/WinCacheForPhp WinCache] konnten nicht gefunden werden.
+ 'config-no-cache' => "'''Warnung:''' [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] oder [http://www.iis.net/download/WinCacheForPhp WinCache] konnten nicht gefunden werden.
Das Objektcaching ist daher nicht aktiviert.",
+ 'config-mod-security' => "'''Warnung:''' Auf dem Webserver wurde [http://modsecurity.org/ ModSecurity] aktiviert. Sofern falsch konfiguriert, kann dies zu Problemen mit MediaWiki sowie anderer Software auf dem Server führen und es Benutzern ermöglichen beliebige Inhalte im Wiki einzustellen.
+Für weitere Informationen empfehlen wir die [http://modsecurity.org/documentation/ Dokumentation zu ModSecurity] oder den Kontakt zum Hoster, sofern Fehler auftreten.",
'config-diff3-bad' => 'GNU diff3 wurde nicht gefunden.',
'config-imagemagick' => 'ImageMagick wurde gefunden: <code>$1</code>.
Miniaturansichten von Bildern werden möglich sein, sobald das Hochladen von Dateien aktiviert wurde.',
@@ -2312,27 +3188,34 @@ Miniaturansichten von Bildern werden möglich sein, sobald das Hochladen von Dat
Miniaturansichten von Bildern sind daher nicht möglich.',
'config-no-uri' => "'''Fehler:''' Die aktuelle URL konnte nicht ermittelt werden.
Der Installationsvorgang wurde daher abgebrochen.",
+ 'config-no-cli-uri' => "'''Warnung''': Es wurde kein Pfad zum Skipt (--scriptpath) angegeben. Daher wird der Standardpfad genutzt: <code>$1</code>.",
+ 'config-using-server' => 'Der Servername „<nowiki>$1</nowiki>“ wird verwendet.',
+ 'config-using-uri' => 'Verwende Server-URL „<nowiki>$1$2</nowiki>“.',
'config-uploads-not-safe' => "'''Warnung:''' Das Standardverzeichnis für hochgeladene Dateien <code>$1</code> ist für die willkürliche Ausführung von Skripten anfällig.
-Obwohl MediaWiki die hochgeladenen Dateien auf Sicherheitsrisiken überprüft, wird dennoch dringend empfohlen diese [http://www.mediawiki.org/wiki/Manual:Security#Upload_security Sicherheitslücke] zu schließen, bevor das Hochladen von Dateien aktiviert wird.",
+Obwohl MediaWiki die hochgeladenen Dateien auf Sicherheitsrisiken überprüft, wird dennoch dringend empfohlen diese [//www.mediawiki.org/wiki/Manual:Security#Upload_security Sicherheitslücke] zu schließen, bevor das Hochladen von Dateien aktiviert wird.",
+ 'config-no-cli-uploads-check' => "'''Warnung''': Das Standardverzeichnis für hochgeladene Dateien (<code>$1</code>) wird nicht auf Sicherheitsanfälligkeiten bezüglich willkürlicher Skriptausführungen während der Installation des ''Call Level Interface'' (CLI) geprüft.",
'config-brokenlibxml' => 'Das System nutzt eine Kombination aus PHP- und libxml2-Versionen, die fehleranfällig ist und versteckte Datenfehler bei MediaWiki und anderen Webanwendungen verursachen kann.
-PHP muss auf Version 5.2.9 oder später sowie libxml2 auf die Version 2.7.3 oder später aktualisiert werden, um das Problem zu lösen. Installationsabbruch ([http://bugs.php.net/bug.php?id=45996 siehe hierzu die Fehlermeldung bei PHP]).',
+PHP muss auf Version 5.2.9 oder später sowie libxml2 auf die Version 2.7.3 oder später aktualisiert werden, um das Problem zu lösen. Installationsabbruch ([//bugs.php.net/bug.php?id=45996 siehe hierzu die Fehlermeldung bei PHP]).',
'config-using531' => 'MediaWiki kann nicht zusammen mit PHP $1 verwendet werden. Grund hierfür ist ein Fehler im Zusammenhang mit den Verweisparametern zu <code>__call()</code>.
PHP muss auf Version 5.3.2 oder höher oder 5.3.0 oder niedriger aktualisiert werden, um das Problem zu beheben.
Die Installation wurde abgebrochen.',
+ 'config-suhosin-max-value-length' => 'Suhosin ist installiert, was die Länge des GET-Parameters auf $1 Bytes beschränkt. Der ResouceLoader von MediaWiki wird zwar unter diesen Bedingungen funktionieren, allerdings nur mit verminderter Leistungsfähigkeit. Sofern möglich sollte der Parameter suhosin.get.max_value_length in der Datei php.ini auf 1024 oder höher festgelegt werden. Gleichzeitig muß der Parameter $wgResourceLoaderMaxQueryLength in der Datei LocalSettings.php auf den selben Wert eingestellt werden.',
'config-db-type' => 'Datenbanksystem:',
'config-db-host' => 'Datenbankserver:',
'config-db-host-help' => 'Sofern sich die Datenbank auf einem anderen Server befindet, ist hier der Servername oder die entsprechende IP-Adresse anzugeben.
Sofern ein gemeinschaftlich genutzter Server verwendet wird, sollte der Hoster den zutreffenden Servernamen in seiner Dokumentation angegeben haben.
-Sofern auf einem Windows-Server installiert und MySQL genutzt wird, funktioniert der Servername „localhost“ voraussichtlich nicht. Wenn nicht, sollte „127.0.0.1“ oder die lokale IP-Adresse angegeben werden.',
+Sofern auf einem Windows-Server installiert und MySQL genutzt wird, funktioniert der Servername „localhost“ voraussichtlich nicht. Wenn nicht, sollte „127.0.0.1“ oder die lokale IP-Adresse angegeben werden.
+
+Sofern PostgresQL genutzt wird, muss dieses Feld leer gelassen werden, um über ein Unix-Socket zu verwinden.',
'config-db-host-oracle' => 'Datenbank-TNS:',
'config-db-host-oracle-help' => 'Einen gültigen [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm „Local Connect“-Namen] angeben. Die „tnsnames.ora“-Datei muss von dieser Installation erkannt werden können.<br />Sofern die Client-Bibliotheken für Version 10g oder neuer verwendet werden, kann auch [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm „Easy Connect“] zur Namensgebung genutzt werden.',
- 'config-db-wiki-settings' => 'Bitte identifiziere dieses Wiki',
+ 'config-db-wiki-settings' => 'Bitte Daten zur eindeutigen Identifikation dieses Wikis angeben',
'config-db-name' => 'Datenbankname:',
'config-db-name-help' => 'Bitte einen Namen angeben, mit dem das Wiki identifiziert werden kann.
Dabei sollten keine Leerzeichen verwendet werden.
-
+
Sofern ein gemeinschaftlich genutzter Server verwendet wird, sollte der Hoster den Datenbanknamen angegeben oder aber die Erstellung einer Datenbank über ein entsprechendes Interface gestattet haben.',
'config-db-name-oracle' => 'Datenbankschema:',
'config-db-account-oracle-warn' => 'Es gibt drei von MediaWiki unterstützte Möglichkeiten Oracle als Datenbank einzurichten:
@@ -2353,7 +3236,7 @@ Obzwar es möglich ist Datenbankbenutzer ohne Passwort anzulegen, so ist dies ab
'config-db-wiki-help' => 'Bitte Benutzernamen und Passwort angeben, die der Webserver während des Normalbetriebes dazu verwenden soll, eine Verbindung zum Datenbankserver herzustellen.
Sofern ein entsprechendes Benutzerkonto nicht vorhanden ist und das Benutzerkonto für den Installationsvorgang über ausreichende Berechtigungen verfügt, wird dieses Benutzerkonto automatisch mit den Mindestberechtigungen zum Normalbetrieb des Wikis angelegt.',
'config-db-prefix' => 'Datenbanktabellenpräfix:',
- 'config-db-prefix-help' => 'Sofern eine Datenbank für mehrere Wikiinstallationen oder eine Wikiinstallation und eine andere Programminstallation genutzt werden soll, muss ein weiterer Datenbanktabellenpräfix angegeben werden, um Datenbankprobleme zu vermeiden.
+ 'config-db-prefix-help' => 'Sofern eine Datenbank für mehrere Wikiinstallationen oder eine Wikiinstallation und eine andere Programminstallation genutzt werden soll, muss ein Datenbanktabellenpräfix angegeben werden, um Datenbankprobleme zu vermeiden.
Es können keine Leerzeichen verwendet werden.
Gewöhnlich bleibt dieses Datenfeld leer.',
@@ -2366,12 +3249,13 @@ Gewöhnlich bleibt dieses Datenfeld leer.',
Im '''binären Modus''' speichert MediaWiki UTF-8 Texte in der Datenbank in binär kodierte Datenfelder.
Dies ist effizienter als der UTF-8-Modus von MySQL und ermöglicht so die Verwendung jeglicher Unicode-Zeichen.
Im '''UTF-8-Modus''' wird MySQL den Zeichensatz der Daten erkennen und sie richtig anzeigen und konvertieren,
-allerdings können keine Zeichen außerhalb des [http://de.wikipedia.org/wiki/Basic_Multilingual_Plane#Gliederung_in_Ebenen_und_Bl.C3.B6cke ''Basic Multilingual Plane'' (BMP)] gespeichert werden.",
+allerdings können keine Zeichen außerhalb des [//de.wikipedia.org/wiki/Basic_Multilingual_Plane#Gliederung_in_Ebenen_und_Bl.C3.B6cke ''Basic Multilingual Plane'' (BMP)] gespeichert werden.",
'config-mysql-old' => 'MySQL $1 oder höher wird benötigt. MySQL $2 ist momentan vorhanden.',
'config-db-port' => 'Datenbankport:',
'config-db-schema' => 'Datenschema für MediaWiki',
'config-db-schema-help' => 'Dieses Datenschema ist in der Regel allgemein verwendbar.
Nur Änderungen daran vornehmen, sofern es gute Gründe dafür gibt.',
+ 'config-pg-test-error' => "Es kann keine Verbindung zur Datenbank '''$1''' hergestellt werden: $2",
'config-sqlite-dir' => 'SQLite-Datenverzeichnis:',
'config-sqlite-dir-help' => "SQLite speichert alle Daten in einer einzigen Datei.
@@ -2389,6 +3273,7 @@ Es ist daher zu erwägen die Datendatei an gänzlich anderer Stelle abzulegen, b
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'MediaWiki unterstützt die folgenden Datenbanksysteme:
$1
@@ -2398,10 +3283,12 @@ Sofern nicht das Datenbanksystem angezeigt wird, das verwendet werden soll, gibt
'config-support-postgres' => '* $1 ist ein beliebtes Open-Source-Datenbanksystem und eine Alternative zu MySQL ([http://www.php.net/manual/de/pgsql.installation.php Anleitung zur Kompilierung von PHP mit PostgreSQL-Unterstützung]). Es gibt allerdings einige kleinere Implementierungsfehler, so dass von der Nutzung in einer Produktivumgebung abgeraten wird.',
'config-support-sqlite' => '* $1 ist ein verschlanktes Datenbanksystem, das auch gut unterstützt wird ([http://www.php.net/manual/de/pdo.installation.php Anleitung zur Kompilierung von PHP mit SQLite-Unterstützung], verwendet PHP Data Objects (PDO))',
'config-support-oracle' => '* $1 ist eine kommerzielle Unternehmensdatenbank ([http://www.php.net/manual/en/oci8.installation.php Anleitung zur Kompilierung von PHP mit OCI8-Unterstützung (en)])',
+ 'config-support-ibm_db2' => '* $1 ist eine kommerzielle Unternehmensdatenbank',
'config-header-mysql' => 'MySQL-Einstellungen',
'config-header-postgres' => 'PostgreSQL-Einstellungen',
'config-header-sqlite' => 'SQLite-Einstellungen',
'config-header-oracle' => 'Oracle-Einstellungen',
+ 'config-header-ibm_db2' => 'IBM DB2-Einstellungen',
'config-invalid-db-type' => 'Unzulässiges Datenbanksystem',
'config-missing-db-name' => 'Bei „Datenbankname“ muss ein Wert angegeben werden.',
'config-missing-db-host' => 'Bei „Datenbankhost“ muss ein Wert angegeben werden.',
@@ -2476,6 +3363,13 @@ Das hier angegebene Konto muss bereits vorhanden sein.',
'config-mysql-engine' => 'Speicher-Engine:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => "'''Warnung:''' Es wurde MyISAM als Speicher-Engine für MySQL ausgewählt, die aus folgenden Gründen nicht die für den Einsatz mit MediaWiki empfohlene ist:
+* sie unterstützt aufgrund von Tabellensperrungen kaum die nebenläufige Ausführung von Aktionen
+* sie ist anfälliger für Datenprobleme
+* sie wird von MediaWiki nicht immer adäquat unterstützt
+
+Sofern die vorhandene MySQL-Installation die Speicher-Engine InnoDB unterstützt, wird deren Verwendung eindringlich empfohlen.
+Sofern sie sie nicht unterstützt, sollte eine entsprechende Aktualisierung nunmehr Erwägung gezogen werden.",
'config-mysql-engine-help' => "'''InnoDB''' ist fast immer die bessere Wahl, da es gleichzeitige Zugriffe gut unterstützt.
'''MyISAM''' ist in Einzelnutzerumgebungen sowie bei schreibgeschützten Wikis schneller.
@@ -2487,14 +3381,15 @@ Bei MyISAM-Datenbanken treten tendenziell häufiger Fehler auf als bei InnoDB-Da
Dies ist effizienter als der UTF-8-Modus von MySQL und ermöglicht so die Verwendung jeglicher Unicode-Zeichen.
Im '''UTF-8-Modus''' wird MySQL den Zeichensatz der Daten erkennen und sie richtig anzeigen und konvertieren,
-allerdings können keine Zeichen außerhalb des [http://de.wikipedia.org/wiki/Basic_Multilingual_Plane#Gliederung_in_Ebenen_und_Bl.C3.B6cke ''Basic Multilingual Plane'' (BMP)] gespeichert werden.",
+allerdings können keine Zeichen außerhalb des [//de.wikipedia.org/wiki/Basic_Multilingual_Plane#Gliederung_in_Ebenen_und_Bl.C3.B6cke ''Basic Multilingual Plane'' (BMP)] gespeichert werden.",
+ 'config-ibm_db2-low-db-pagesize' => "Die DB2-Datenbank verfügt über einen Standardtabellenraum mit einer unzureichenden Seitengröße. Die Seitengröße muss '''32 000'' oder größer sein.",
'config-site-name' => 'Name des Wikis:',
'config-site-name-help' => 'Er wird in der Titelleiste des Browsers, wie auch verschiedenen anderen Stellen, genutzt.',
- 'config-site-name-blank' => 'Sitenamen angeben.',
+ 'config-site-name-blank' => 'Den Namen des Wikis angeben.',
'config-project-namespace' => 'Name des Projektnamensraums:',
'config-ns-generic' => 'Projekt',
'config-ns-site-name' => 'Entspricht dem Namen des Wikis: $1',
- 'config-ns-other' => 'Sonstige (bitte angeben)',
+ 'config-ns-other' => 'Anderer Name (bitte angeben)',
'config-ns-other-default' => 'MeinWiki',
'config-project-namespace-help' => "Dem Beispiel von Wikipedia folgend, unterscheiden viele Wikis zwischen den Seiten für Inhalte und denen für Richtlinien. Letztere werden im „'''Projektnamensraum'''“ hinterlegt.
Alle Seiten dieses Namensraumes verfügen über einen Seitenpräfix, der nun an dieser Stelle angegeben werden kann.
@@ -2523,9 +3418,11 @@ Bitte einen abweichenden Benutzernamen angeben.',
'config-subscribe' => 'Bitte die Mailingliste [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mitteilungen zu Versionsveröffentlichungen] abonnieren.',
'config-subscribe-help' => 'Es handelt sich hierbei um eine Mailingliste mit wenigen Aussendungen, die für Mitteilungen zu Versionsveröffentlichungen, einschließlich wichtiger Sicherheitsveröffentlichungen, genutzt wird.
Diese Mailingliste sollte abonniert werden. Zudem sollte die MediaWiki-Installation stets aktualisiert werden, sobald eine neue Programmversion veröffentlicht wurde.',
+ 'config-subscribe-noemail' => 'Beim Abonnieren der Mailingliste mit Mitteilungen zu Versionsveröffentlichungen wurde keine E-Mail-Adresse angegeben.
+Bitte eine E-Mail-Adresse angeben, sofern die Mailingliste abonniert werden soll.',
'config-almost-done' => 'Der Vorgang ist fast abgeschlossen!
Die verbliebenen Konfigurationseinstellungen können übersprungen und das Wiki umgehend installiert werden.',
- 'config-optional-continue' => 'Sollen weitere Konfigurationseinstellungen vorgenommen werden?',
+ 'config-optional-continue' => 'Ja, es sollen weitere Konfigurationseinstellungen vorgenommen werden.',
'config-optional-skip' => 'Nein, das Wiki soll nun installiert werden.',
'config-profile' => 'Profil der Benutzerberechtigungen:',
'config-profile-wiki' => 'offenes Wiki',
@@ -2535,29 +3432,30 @@ Die verbliebenen Konfigurationseinstellungen können übersprungen und das Wiki
'config-profile-help' => "Wikis sind am nützlichsten, wenn so viele Menschen als möglich Bearbeitungen vornehmen können.
Mit MediaWiki ist es einfach die letzten Änderungen nachzuvollziehen und unbrauchbare Bearbeitungen, beispielsweise von unbedarften oder böswilligen Benutzern, rückgängig zu machen.
-Allerdings finden etliche Menschen Wikis auch mit anderen Bearbeitungskonzepten sinnvoll. Manchmal ist es auch nicht einfach alle Beteiligten vollständig von den Vorteilen des „Wiki-Prinzips†zu überzeugen. Darum ist eine Auswahl möglich.
+Allerdings finden etliche Menschen Wikis auch mit anderen Bearbeitungskonzepten sinnvoll. Manchmal ist es zudem nicht einfach alle Beteiligten von den Vorteilen des „Wiki-Prinzips†zu überzeugen. Darum ist diese Auswahl möglich.
Ein '''{{int:config-profile-wiki}}''' ermöglicht es jedermann, sogar ohne über ein Benutzerkonto zu verfügen, Bearbeitungen vorzunehmen.
-Ein Wiki bei dem die '''{{int:config-profile-no-anon}}''' ist, bietet höhere Verantwortlichkeit des Einzelnen für seine Bearbeitungen, könnte allerdings Personen mit gelegentlichen Bearbeitungen abschrecken. Ein Wiki mit '''{{int:config-profile-fishbowl}}''' gestattet es nur ausgewählten Benutzern Bearbeitungen vorzunehmen. Allerdings kann dabei die Allgemeinheit die Seiten immer noch betrachten und Änderungen nachvollziehen. Ein '''{{int:config-profile-private}}''' gestattet es nur ausgewählten Benutzern, Seiten zu betrachten sowie zu bearbeiten.
+Ein Wiki bei dem die '''{{int:config-profile-no-anon}}''' ist, fordert von den Benutzern eine höhere Verantwortung für ihre Bearbeitungen ein, könnte allerdings Personen, die nur gelegentlich Bearbeitungen vornehmen wollen, abschrecken. Ein Wiki für '''{{int:config-profile-fishbowl}}''' gestattet es nur bestimmten Benutzern Bearbeitungen vorzunehmen. Allerdings kann dabei die Allgemeinheit die Seiten immer noch betrachten und Änderungen nachvollziehen. Ein '''{{int:config-profile-private}}''' gestattet es nur ausgewählten Benutzern, Seiten zu betrachten sowie zu bearbeiten.
-Komplexere Konzepte zur Zugriffssteuerung können erst nach abgeschlossenem Installationsvorgang eingerichtet werden. Hierzu gibt es weitere Informationen auf der Website mit der [http://www.mediawiki.org/wiki/Manual:User_rights entsprechenden Anleitung].",
+Komplexere Konzepte zur Zugriffssteuerung können erst nach abgeschlossenem Installationsvorgang eingerichtet werden. Hierzu gibt es weitere Informationen auf der Website mit der [//www.mediawiki.org/wiki/Manual:User_rights entsprechenden Anleitung].",
'config-license' => 'Lizenz:',
'config-license-none' => 'Keine Lizenzangabe in der Fußzeile',
'config-license-cc-by-sa' => 'Creative Commons „Namensnennung, Weitergabe unter gleichen Bedingungen“',
+ 'config-license-cc-by' => 'Creative Commons „Namensnennung“',
'config-license-cc-by-nc-sa' => 'Creative Commons „Namensnennung, nicht kommerziell, Weitergabe unter gleichen Bedingungen“',
- 'config-license-cc-0' => 'Creative Commons „Zero“',
- 'config-license-gfdl-old' => 'GNU-Lizenz für freie Dokumentation 1.2',
- 'config-license-gfdl-current' => 'GNU-Lizenz für freie Dokumentation 1.3 oder höher',
+ 'config-license-cc-0' => 'Creative Commons „Zero“ (Gemeinfreiheit)',
+ 'config-license-gfdl' => 'GNU-Lizenz für freie Dokumentation 1.3 oder höher',
'config-license-pd' => 'Gemeinfreiheit',
'config-license-cc-choose' => 'Eine benutzerdefinierte Creative-Commons-Lizenz auswählen',
'config-license-help' => 'Viele öffentliche Wikis publizieren alle Beiträge unter einer [http://freedomdefined.org/Definition/De freien Lizenz].
Dies trägt dazu bei ein Gefühl von Gemeinschaft zu schaffen und ermutigt zu längerfristiger Mitarbeit.
Dahingegen ist im Allgemeinen eine freie Lizenz auf geschlossenen Wikis nicht notwendig.
-Sofern man Texte aus der Wikipedia verwenden möchte und umgekehrt, sollte die Creative Commons-Lizens „Namensnennung, Weitergabe unter gleichen Bedingungen“ gewählt werden.
+Sofern man Texte aus der Wikipedia verwenden möchte und umgekehrt, sollte die Creative Commons-Lizenz „Namensnennung, Weitergabe unter gleichen Bedingungen“ gewählt werden.
-Die GNU-Lizenz für freie Dokumentation ist die ehemalige Lizenz der Wikipedia.
-Sie ist noch immer gültig, beinhaltet aber einige Bedingungen, welche die Wiederverwendung und deren Interpretation erschweren.',
+Die Wikipedia nutzte vormals die GNU-Lizenz für freie Dokumentation (GFDL).
+Die GFDL ist eine gültige Lizenz, die allerdings schwer zu verstehen ist.
+Es ist zudem schwierig gemäß dieser Lizenz lizenzierte Inhalten wiederzuverwenden.',
'config-email-settings' => 'E-Mail-Einstellungen',
'config-enable-email' => 'Ausgehende E-Mails ermöglichen',
'config-enable-email-help' => 'Sofern die E-Mail-Funktionen genutzt werden sollen, müssen die entsprechenden [http://www.php.net/manual/en/mail.configuration.php PHP-E-Mail-Einstellungen] richtig konfiguriert werden.
@@ -2579,7 +3477,7 @@ Bei viele E-Mail-Servern muss der Teil der E-Mail-Adresse mit der Domainangabe k
'config-upload-settings' => 'Hochladen von Bildern und Dateien',
'config-upload-enable' => 'Das Hochladen von Dateien ermöglichen',
'config-upload-help' => 'Das Hochladen von Dateien macht den Server für potentielle Sicherheitsprobleme anfällig.
-Weitere Informationen hierzu sollen im [http://www.mediawiki.org/wiki/Manual:Security Abschnitt Sicherheit] der Anleitung gelesen werden.
+Weitere Informationen hierzu sollen im [//www.mediawiki.org/wiki/Manual:Security Abschnitt Sicherheit] der Anleitung gelesen werden.
Um das Hochladen von Dateien zu ermöglichen, muss der Zugriff auf das Unterverzeichnis <code>./images</code> so geändert werden, das es für den Webserver beschreibbar ist.
Hernach kann diese Option aktiviert werden.',
@@ -2587,18 +3485,18 @@ Hernach kann diese Option aktiviert werden.',
'config-upload-deleted-help' => 'Bitte ein Verzeichnis auswählen, in dem gelöschte Dateien archiviert werden sollen.
Idealerweise sollte es nicht über das Internet zugänglich sein.',
'config-logo' => 'URL des Logos:',
- 'config-logo-help' => 'Die Standardoberfläche von MediaWiki verfügt, in der oberen linken Ecke, über Platz für eine Logo mit den Maßen 135x160 Pixel.
+ 'config-logo-help' => 'Die Standardoberfläche von MediaWiki verfügt links oberhalb der Seitenleiste über Platz für eine Logo mit den Maßen 135x160 Pixel.
Bitte ein Logo in entsprechender Größe hochladen und die zugehörige URL an dieser Stelle angeben.
Sofern kein Logo benötigt wird, kann dieses Datenfeld leer bleiben.',
'config-instantcommons' => '„InstantCommons“ aktivieren',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons InstantCommons] ist eine Funktion, die es Wikis ermöglicht, Bild-, Klang- und andere Mediendateien zu nutzen, die auf der Website [http://commons.wikimedia.org/ Wikimedia Commons] verfügbar sind.
-Um diese Funktion zu nutzen, muss MediaWiki eine Verbindung ins Internet herstellen können.
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons InstantCommons] ist eine Funktion, die es Wikis ermöglicht, Bild-, Klang- und andere Mediendateien zu nutzen, die auf der Website [//commons.wikimedia.org/ Wikimedia Commons] verfügbar sind.
+Um diese Funktion zu nutzen, muss MediaWiki eine Verbindung ins Internet herstellen können.
Weitere Informationen zu dieser Funktion, einschließlich der Anleitung, wie andere Wikis als Wikimedia Commons eingerichtet werden können, gibt es im [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos Handbuch].',
'config-cc-error' => 'Der Creativ-Commons-Lizenzassistent konnte keine Lizenz ermitteln.
Die Lizenz ist daher jetzt manuell einzugeben.',
- 'config-cc-again' => 'Erneut auswählen…',
+ 'config-cc-again' => 'Erneut auswählen …',
'config-cc-not-chosen' => 'Die gewünschte Creative-Commons-Lizenz auswählen und dann auf „weiter“ klicken.',
'config-advanced-settings' => 'Erweiterte Konfiguration',
'config-cache-options' => 'Einstellungen für die Zwischenspeicherung von Objekten:',
@@ -2624,22 +3522,30 @@ Sie könnten zusätzliche Konfigurierung erfordern, können aber bereits jetzt a
'config-install-alreadydone' => "'''Warnung:''' Es wurde eine vorhandene MediaWiki-Installation gefunden.
Es muss daher mit den nächsten Seite weitergemacht werden.",
'config-install-begin' => 'Durch Drücken von „{{int:config-continue}}“ wird die Installation von MediaWiki gestartet.
-Sofern Änderungen vorgenommen werden sollen, kann man auf „Zurück“ klicken.',
+Sofern Änderungen vorgenommen werden sollen, kann man auf „↠Zurück“ klicken.',
'config-install-step-done' => 'erledigt',
'config-install-step-failed' => 'gescheitert',
'config-install-extensions' => 'Einschließlich Erweiterungen',
'config-install-database' => 'Datenbank wird eingerichtet',
- 'config-install-pg-schema-not-exist' => 'Das PostgesSQL-Schema ist nicht vorhanden',
+ 'config-install-schema' => 'Datenschema wird erstellt',
+ 'config-install-pg-schema-not-exist' => 'Das PostgesSQL-Datenschema ist nicht vorhanden',
'config-install-pg-schema-failed' => 'Das Erstellen der Datentabellen ist gescheitert.
Es muss sichergestellt sein, dass der Benutzer „$1“ Schreibzugriff auf das Datenschema „$2“ hat.',
'config-install-pg-commit' => 'Änderungen anwenden',
'config-install-pg-plpgsql' => 'Suche nach der Datenbanksprache PL/pgSQL',
'config-pg-no-plpgsql' => 'Für Datenbank $1 muss die Datenbanksprache PL/pgSQL installiert werden',
'config-pg-no-create-privs' => 'Das für die Installation angegeben Konto verfügt nicht über ausreichende Berechtigungen, um ein Datenbanknutzerkonto zu erstellen.',
+ 'config-pg-not-in-role' => 'Das für den Wikibenutzer angegebene Benutzerkonto ist bereits vorhanden.
+Das für den Installationsvorgang angegebene Benutzerkonto ist kein Supernutzer und nicht Mitglied der Benutzergruppe der Wikibenutzer, so dass keine dem Wikibenutzer zugeordneten Datenobjekte erstellt werden konnten.
+
+Für MediaWiki ist es momentan erforderlich, dass die Tabellen dem Wikibenutzer zugeordnet sind. Bitte einen anderen Namen für den Wikibenutzer angeben oder „zurück“ anklicken, um einen ausreichend berechtigten Benutzer für den Installationsvorgang anzugeben.',
'config-install-user' => 'Datenbankbenutzer wird erstellt',
'config-install-user-alreadyexists' => 'Datenbankbenutzer „$1“ ist bereits vorhanden',
'config-install-user-create-failed' => 'Das Anlegen des Datenbankbenutzers „$1“ ist gescheitert: $2',
'config-install-user-grant-failed' => 'Die Gewährung der Berechtigung für Datenbankbenutzer „$1“ ist gescheitert: $2',
+ 'config-install-user-missing' => 'Der angegebene Benutzer „$1“ ist nicht vorhanden.',
+ 'config-install-user-missing-create' => 'Der angegebene Benutzer „$1“ ist nicht vorhanden.
+Bitte das Auswahlkästchen „Benutzerkonto erstellen“ anklicken, sofern dieser erstellt werden soll.',
'config-install-tables' => 'Datentabellen werden erstellt',
'config-install-tables-exist' => "'''Warnung:''' Es wurden MediaWiki-Datentabellen gefunden.
Die Erstellung wurde übersprungen.",
@@ -2648,11 +3554,12 @@ Die Erstellung wurde übersprungen.",
'config-install-interwiki-list' => 'Die Datei <code>interwiki.list</code> konnte nicht gefunden werden.',
'config-install-interwiki-exists' => "'''Warnung:''' Es wurden Interwikitabellen mit Daten gefunden.
Die Standardliste wird übersprungen.",
- 'config-install-stats' => 'Initialisierung der Statistiken',
- 'config-install-keys' => 'Erstellung der Geheimschlüssel',
+ 'config-install-stats' => 'Statistiken werden initialisiert',
+ 'config-install-keys' => 'Geheimschlüssel werden erstellt',
'config-insecure-keys' => "'''Warnung:''' {{PLURAL:$2|Der Geheimschlüssel|Die Geheimschlüssel}} $1 {{PLURAL:$2|der|die}} während des Installationsvorgangs generiert wurde, ist nicht sehr sicher. {{PLURAL:$2|Er sollte|Sie sollten}} manuell geändert werden.",
'config-install-sysop' => 'Administratorkonto wird erstellt',
- 'config-install-subscribe-fail' => 'Abonnierung von „mediawiki-announce“ ist gescheitert',
+ 'config-install-subscribe-fail' => 'Abonnieren von „mediawiki-announce“ ist gescheitert: $1',
+ 'config-install-subscribe-notpossible' => 'cURL ist nicht installiert und allow_url_fopen ist nicht verfügbar.',
'config-install-mainpage' => 'Erstellung der Hauptseite mit Standardinhalten',
'config-install-extension-tables' => 'Erstellung der Tabellen für die aktivierten Erweiterungen',
'config-install-mainpage-failed' => 'Die Hauptseite konnte nicht erstellt werden: $1',
@@ -2662,20 +3569,84 @@ MediaWiki wurde erfolgreich installiert.
Das Installationsprogramm hat die Datei <code>LocalSettings.php</code> erzeugt.
Sie enthält alle Konfigurationseinstellungen.
-Diese Datei muss nun heruntergeladen und anschließend in das Stammverzeichnis der MediaWiki-Installation hochgeladen werden. Dies ist dasselbe Verzeichnis, in dem sich auch die Datei <code>index.php</code> befindet. Das Herunterladen sollte automatisch gestartet worden sein.
+Diese Datei muss nun heruntergeladen und anschließend in das Stammverzeichnis der MediaWiki-Installation hochgeladen werden. Dies ist dasselbe Verzeichnis, in dem sich auch die Datei <code>index.php</code> befindet. Das Herunterladen sollte inzwischen automatisch gestartet worden sein.
-Sofern dies nicht der Fall war, oder das Herunterladen unterbrochen wurde, kann der Vorgang durch einen Klick auf untenstehenden Link erneut gestartet werden:
+Sofern dies nicht der Fall war, oder das Herunterladen unterbrochen wurde, kann der Vorgang durch einen Klick auf den folgenden Link erneut gestartet werden:
$3
-'''Hinweis:''' Sofern das Herunterladen der Konfigurationsdatei nicht jetzt durchgeführt wird, wird sie zu einem späteren Zeitpunkt nach dem Beenden des Installationsprogramms nicht mehr zur Verfügung stehen.
+'''Hinweis:''' Sofern das Herunterladen der Konfigurationsdatei nicht jetzt durchgeführt wird, wird sie zu einem späteren Zeitpunkt nach Beenden des Installationsprogramms, nicht mehr zur Verfügung stehen.
-Sobald dies alles erledigt wurde, kann auf das '''[$2 Wiki zugegriffen werden]'''.",
+Sobald alles erledigt wurde, kann auf das '''[$2 Wiki zugegriffen werden]'''. Wir wünschen viel Spaß mit dem Wiki.",
'config-download-localsettings' => 'LocalSettings.php herunterladen',
'config-help' => 'Hilfe',
+ 'mainpagetext' => "'''MediaWiki wurde erfolgreich installiert.'''",
+ 'mainpagedocfooter' => 'Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [//meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuch].
+
+== Starthilfen ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Liste der Konfigurationsvariablen]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
+);
+
+/** German (formal address) (‪Deutsch (Sie-Form)‬)
+ * @author MichaelFrey
+ */
+$messages['de-formal'] = array(
+ 'mainpagedocfooter' => 'Hilfe zur Benutzung und Konfiguration der Wiki-Software finden Sie im [//meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuch].
+
+== Starthilfen ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Liste der Konfigurationsvariablen]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
+);
+
+/** Zazaki (Zazaki) */
+$messages['diq'] = array(
+ 'mainpagetext' => "'''MediaWiki vıst ra ser, vıraziya.'''",
+ 'mainpagedocfooter' => 'Seba gurenayış u eyarkerdışê Wiki-Softwarey [//meta.wikimedia.org/wiki/Help:Contents İdarê karberi] de mıracaet ke.
+
+== Yardımê Sıftekerdışi ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista eyaranê vıraştışi]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki de ÇZP]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki ra lista serbest-dayışê postey]',
+);
+
+/** Lower Sorbian (Dolnoserbski) */
+$messages['dsb'] = array(
+ 'mainpagetext' => "'''MediaWiki jo se wuspěšnje instalěrowało.'''",
+ 'mainpagedocfooter' => "Pomoc pśi wužywanju softwary wiki namakajoš pód [//meta.wikimedia.org/wiki/Help:Contents User's Guide].
+
+== Na zachopjenje ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Konfiguracija lisćiny połoženjow]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ (pšašanja a wótegrona)]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lisćina e-mailowych nakładow MediaWiki]",
+);
+
+/** Central Dusun (Dusun Bundu-liwan)
+ * @author FRANELYA
+ */
+$messages['dtp'] = array(
+ 'mainpagetext' => "'''Nopongo no do popodokot ot ModiaWiki.'''",
+ 'mainpagedocfooter' => 'Rujuko hilo [//meta.wikimedia.org/wiki/Help:Contents Ponudukan Momomoguno] kokomoi koilaan do momoguno posusuang-suangon wiki.
+
+== Kopotimpuunan ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lis papatantu nuludan]
+* [//www.mediawiki.org/wiki/Manual:FAQ Ponguhatan Koinsoruan om Simbar ModiaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lis pininsuratan pinolabus do ModiaWiki]',
+);
+
+/** Greek (Ελληνικά) */
+$messages['el'] = array(
+ 'mainpagetext' => "'''To λογισμικό MediaWiki εγκαταστάθηκε με επιτυχία.'''",
+ 'mainpagedocfooter' => 'ΠεÏισσότεÏες πληÏοφοÏίες σχετικά με τη χÏήση και με τη ÏÏθμιση παÏαμέτÏων θα βÏείτε στους συνδέσμους: [//meta.wikimedia.org/wiki/MediaWiki_localisation Οδηγίες για Ï„Ïοποποίηση του πεÏιβάλλοντος εÏγασίας] και [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide ΕγχειÏίδιο χÏήστη].',
);
/** Esperanto (Esperanto)
+ * @author Airon90
* @author Yekrats
*/
$messages['eo'] = array(
@@ -2689,11 +3660,21 @@ $messages['eo'] = array(
'config-page-options' => 'Agordoj',
'config-page-install' => 'Instali',
'config-page-complete' => 'Farita!',
+ 'mainpagetext' => "'''MediaWiki estis sukcese instalita.'''",
+ 'mainpagedocfooter' => "Konsultu la [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide User's Guide] por informo pri uzado de vikia programaro.
+
+==Kiel komenci==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Listo de konfiguraĵoj] (angla)
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki Oftaj Demandoj] (angla)
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki dissendolisto pri anoncoj] (angla)",
);
/** Spanish (Español)
* @author Crazymadlover
* @author Danke7
+ * @author Locos epraix
+ * @author Od1n
* @author Platonides
* @author Sanbec
* @author Translationista
@@ -2702,8 +3683,9 @@ $messages['es'] = array(
'config-desc' => 'El instalador para MediaWiki',
'config-title' => 'MediaWiki $1 instalación',
'config-information' => 'Información',
- 'config-localsettings-upgrade' => "'''Atención''': Se ha encontrado un fichero de configuración <code>LocalSettings.php</code>.
-Para actualizar MediaWiki mueva <code>LocalSettings.php</code> a un lugar seguro y ejecute de nuevo el instalador.",
+ 'config-localsettings-upgrade' => 'Se ha encontrado un archivo <code>LocalSettings.php</code>.
+Para actualizar esta instalación, por favor ingresa el valor de <code>$wgUpgradeKey</code> en el cuadro de abajo.
+Lo encontrarás en LocalSettings.php.',
'config-session-error' => 'Error comenzando sesión: $1',
'config-session-expired' => 'Tus datos de sesión parecen haber expirado.
Las sesiones están configuradas por una duración de $1.
@@ -2746,10 +3728,15 @@ Este programa es distribuido en la esperanza de que sea útil, pero '''sin cualq
Consulte la licencia *GNU General *Public *License para más detalles.
En conjunto con este programa debe haber recibido <doclink href=Copying>una copia de la Licencia Pública General de GNU</doclink>; si no la recibió, pídala por escrito a Fundación para el Software Libre, Inc., 51 Franklin Street, Fifth Floor, Boston, ME La 02110-1301, USA o [http://www.gnu.org/copyleft/gpl.html léala en internet].",
- 'config-sidebar' => '* [http://www.mediawiki.org Página principal de MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents Guía del usuario]
-* [http://www.mediawiki.org/wiki/Manual:Contents Guía del administrador]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Preguntas frecuentes]',
+ 'config-sidebar' => '* [//www.mediawiki.org Página principal de MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents Guía del usuario]
+* [//www.mediawiki.org/wiki/Manual:Contents Guía del administrador]
+* [//www.mediawiki.org/wiki/Manual:FAQ Preguntas frecuentes]
+----
+* <doclink href=Readme>Léeme</doclink>
+* <doclink href=ReleaseNotes>Notas de la versión</doclink>
+* <doclink href=Copying>Copia</doclink>
+* <doclink href=UpgradeDoc>Actualización</doclink>',
'config-env-good' => 'El entorno ha sido comprobado.
Puedes instalar MediaWiki.',
'config-env-bad' => 'El entorno ha sido comprobado.
@@ -2757,18 +3744,16 @@ No puedes instalar MediaWiki.',
'config-env-php' => 'PHP $1 está instalado.',
'config-unicode-using-utf8' => 'Usando utf8_normalize.so de Brion Vibber para la normalización Unicode.',
'config-unicode-using-intl' => 'Usando la [http://pecl.php.net/intl extensión intl PECL] para la normalización Unicode.',
- 'config-unicode-pure-php-warning' => "'''Advertencia''': La [http://*pecl.*php.*net/*intl extensión intl PECL] no está disponible para efectuar la normalización Unicode.
-Si tu web tiene un alto volumen de tráfico, te recomendamos leer acerca de [http://www.mediawiki.org/wiki/Unicode_normalization_considerations normalización Unicode].",
+ 'config-unicode-pure-php-warning' => "'''Advertencia''': La [http://pecl.php.net/intl extensión intl] no está disponible para efectuar la normalización Unicode. Utilizando la implementación más lenta en PHP.
+Si tu web tiene mucho tráfico, te recomendamos leer acerca de la [//www.mediawiki.org/wiki/Unicode_normalization_considerations normalización Unicode].",
'config-unicode-update-warning' => "'''Warning''': La versión instalada del contenedor de normalización Unicode usa una versión anterior de la biblioteca del [http://site.icu-project.org/ proyecto ICU].
-Deberás [http://www.mediawiki.org/wiki/Unicode_normalization_considerations actualizar] si realmente deseas usar Unicode.",
- 'config-no-db' => 'No fue posible encontrar un controlador adecuado para la base de datos.',
- 'config-no-db-help' => 'Necesitará instalar un controlador de base de datos para PHP.
-Estos son los tipos de base de datos compatibles: $1.
-
-Si tu web está en un alojamiento compartido, solicita a tu proveedor la instalación de un controlador de base de datos ocmpatible.
-Si has compilado tú mismo(a) el PHP, reconfigúralo con un cliente de base de datos habilitado, por ejemplo mediante <code>./configure --with-mysql</code>.
-Si instalaste el PHP a partir de un paquete Debian o Ubuntu, entonces necesitarás instalar también el módulo php5-mysql.',
- 'config-no-fts3' => "'''Advertencia''': SQLite está compilado sin el [http://sqlite.org/fts3.html módulo FTS3]. Las funcionalidades de búsqueda no estarán disponibles en esta instalación.",
+Deberás [//www.mediawiki.org/wiki/Unicode_normalization_considerations actualizar] si realmente deseas usar Unicode.",
+ 'config-no-db' => 'No fue posible encontrar un controlador adecuado para la base de datos! Necesitas instalar un controlador de base de datos para PHP.
+Las siguientes bases de datos son soportadas: $1.
+Si estás en alojamiento compartido, pregunta a tu proveedor el instalar un controlador de base de datos adecuado.
+Si estás compilando PHP por ti mismo, reconfigúralo con un cliente de base de datos disponible, por ejemplo usando <code>./configure --with-mysql</code>.
+Si instalaste PHP de un paquete Debian o Ubuntu, entonces también necesitas instalar el módulo php5-mysql.',
+ 'config-no-fts3' => "'''Advertencia''': SQLite está compilado sin el [//sqlite.org/fts3.html módulo FTS3]. Las funcionalidades de búsqueda no estarán disponibles en esta instalación.",
'config-register-globals' => "'''Advertencia: La opción de <code>[http://php.net/register_globals register_globals]</code> de PHP está habilitada.'''
'''Desactívela si puede.'''
MediaWiki funcionará, pero tu servidor quedará expuesto a vulnerabilidades de seguridad potenciales.",
@@ -2795,11 +3780,11 @@ MediaWiki necesita que las funciones de expresiones regulares compatibles con Pe
'config-memory-bad' => "'''Advertencia:''' El parámetro <code>memory_limit</code> de PHP es $1.
Probablemente este valor es demasiado bajo.
¡La instalación podrá fallar!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] está instalado',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] está instalado',
'config-apc' => '[http://www.php.net/apc APC] está instalado',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] está instalado',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] está instalado',
- 'config-no-cache' => "'''Advertencia:''' No pudo encontrarse [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''Advertencia:''' No pudo encontrarse [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache].
El caché de objetos no está habilitado.",
'config-diff3-bad' => 'GNU diff3 no se encuentra.',
'config-imagemagick' => 'ImageMagick encontrado: <code>$1</code>.
@@ -2830,20 +3815,20 @@ Si esta cuenta no existe y la cuenta de instalación tiene suficientes privilegi
'config-mysql-old' => 'Se necesita MySQL $1 o una versión más reciente. Tienes la versión $2.',
'config-db-port' => 'Puerto de la base de datos:',
'config-db-schema' => 'Esquema para MediaWiki',
- 'config-db-schema-help' => 'Normalmente, los esquemas arriba son los correctos.
-Altéralos sólo si tienes la seguridad de que necesitas alterarlos.',
+ 'config-db-schema-help' => 'Estos esquemas usualmente estarán bien.
+Altéralos sólo si tienes la seguridad de que necesitas hacerlo.',
'config-sqlite-dir' => 'Directorio de datos SQLite:',
'config-type-mysql' => 'MySQL',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
- 'config-support-info' => 'MediaWiki es compatible con los siguientes sistemas de bases de datos:
+ 'config-support-info' => 'MediaWiki es compatible con los siguientes sistemas de bases de datos:
-$1
+$1
Si no encuentras en el listado el sistema de base de datos que estás intentando utilizar, sigue las instrucciones vinculadas arriba para habilitar la compatibilidad.',
'config-support-mysql' => '* $1 es la base de datos mayoritaria para MediaWiki y la que goza de mayor compatibilidad ([http://www.php.net/manual/es/mysql.installation.php cómo compilar PHP con compatibilidad MySQL])',
- 'config-support-postgres' => '* $1 es una popular base de datos de código abierto, alternativa a MySQL. ([http://www.php.net/manual/es/pgsql.installation.php cómo compilar PHP con compatibilidad PostgreSQL])',
+ 'config-support-postgres' => '$1 es un popular sistema de base de datos de código abierto, alternativa a MySQL. ([http://www.php.net/manual/es/pgsql.installation.php cómo compilar PHP con compatibilidad PostgreSQL]). Puede haber algunos defectos menores destacables, y no es recomendable para uso en un entorno de producción.',
'config-support-sqlite' => '* $1 es una base de datos ligera con gran compatibilidad con MediaWiki. ([http://www.php.net/manual/es/pdo.installation.php Cómo compilar PHP con compatibilidad SQLite], usa PDO)',
'config-support-oracle' => '* $1 es una base de datos comercial a nivel empresarial ([http://www.php.net/manual/es/oci8.installation.php cómo compilar PHP con compatibilidad con OCI8])',
'config-header-mysql' => 'Configuración de MySQL',
@@ -2853,9 +3838,9 @@ Si no encuentras en el listado el sistema de base de datos que estás intentando
'config-invalid-db-type' => 'Tipo de base de datos inválida',
'config-missing-db-name' => 'Debes introducir un valor para "Nombre de la base de datos"',
'config-invalid-db-name' => 'El nombre de la base de datos "$1" es inválido.
-Usa sólo caracteres ASCII: letras (a-z, A-Z), guarismos (0-9) y guiones bajos (_).',
+Usa sólo caracteres ASCII: letras (a-z, A-Z), números (0-9), guiones bajos (_)y guiones (-).',
'config-invalid-db-prefix' => 'El prefijo de la base de datos "$1" es inválido.
-Use sólo carateres ASCII: letras (a-z, A-Z), guarismos (0-9) y guiones bajos (_).',
+Use sólo carateres ASCII: letras (a-z, A-Z), números (0-9), guiones bajos (_) y guiones (-).',
'config-connection-error' => '$1.
Verifique el servidor, el nombre de usuario y la contraseña, e intente de nuevo.',
@@ -2867,7 +3852,7 @@ No uses espacios o guiones.
Este nombre será usado como nombre del archivo de datos de SQLite.',
'config-sqlite-mkdir-error' => 'Error al crear el directorio de datos "$1".
Comprueba la ubicación e inténtalo de nuevo.',
- 'config-sqlite-dir-unwritable' => 'No se puede escribir en el directorio "$1".
+ 'config-sqlite-dir-unwritable' => 'No se puede escribir en el directorio "$1".
Modifica los permisos para que el servidor web pueda escribir en él y vuelve a intentarlo.',
'config-sqlite-connection-error' => '$1.
@@ -2884,7 +3869,7 @@ Para actualizarlas a MediaWiki $1, haz clic en '''Continuar'''.",
'config-db-web-help' => 'Elige el usuario y contraseña que el servidor Web usará para conectarse al servidor de la base de datos durante el fincionamiento normal del wiki.',
'config-db-web-account-same' => 'Utilizar la misma cuenta que en la instalación',
'config-db-web-create' => 'Crear la cuenta si no existe',
- 'config-db-web-no-create-privs' => 'La cuenta que has especificado para la instalación no tiene privilegios suficientes para crear una cuenta.
+ 'config-db-web-no-create-privs' => 'La cuenta que has especificado para la instalación no tiene privilegios suficientes para crear una cuenta.
La cuenta que especifiques aquí debe existir.',
'config-mysql-engine' => 'Motor de almacenamiento:',
'config-mysql-innodb' => 'InnoDB',
@@ -2907,7 +3892,7 @@ Las bases de datos MyISAM tienden a corromperse más a menudo que las bases de d
'config-ns-invalid' => 'El espacio de nombre especificado "<nowiki>$1</nowiki>" no es válido.
Especifica un espacio de nombre de proyecto diferente.',
'config-admin-box' => 'Cuenta de administrador',
- 'config-admin-name' => 'Tu nombre:',
+ 'config-admin-name' => 'Su nombre:',
'config-admin-password' => 'Contraseña:',
'config-admin-password-confirm' => 'Repita la contraseña:',
'config-admin-help' => 'Escribe aquí el nombre de usuario que desees, como por ejemplo "Pedro Bloggs".
@@ -2919,7 +3904,7 @@ Especifique un nombre de usuario diferente.',
'config-admin-password-same' => 'La contraseña no debe ser la misma que el nombre de usuario.',
'config-admin-password-mismatch' => 'Las dos contraseñas que ingresaste no coinciden.',
'config-admin-email' => 'Dirección de correo electrónico:',
- 'config-admin-email-help' => 'Introduce aquí un correo electrónico que te permita recibir mensajes de otros usuarios del wiki, vuelve a configurar tu contraseña y recibe notificaciones de cambios realizados a tus páginas vigiladas.',
+ 'config-admin-email-help' => 'Introduce aquí un correo electrónico que te permita recibir mensajes de otros usuarios del wiki, vuelve a configurar tu contraseña y recibe notificaciones de cambios realizados a tus páginas vigiladas. Puedes dejar este campo vacío.',
'config-admin-error-user' => 'Error interno al crear un administrador con el nombre "<nowiki>$1</nowiki>".',
'config-admin-error-password' => 'Error interno al establecer una contraseña para el administrador " <nowiki>$1</nowiki> ": <pre>$2</pre>',
'config-subscribe' => 'Suscribirse para recibir [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce avisos de nuevas versiones].',
@@ -2938,8 +3923,6 @@ Ahora puedes saltarte el resto de pasos e instalar el wiki con valores predeterm
'config-license-none' => 'Pie sin licencia',
'config-license-cc-by-sa' => 'Creative Commons Reconocimiento Compartir Igual',
'config-license-cc-by-nc-sa' => 'Creative Commons Reconocimiento Compartir Igual no comercial',
- 'config-license-gfdl-old' => 'GNU Licencia de Documentación Libre 1.2',
- 'config-license-gfdl-current' => 'Licencia de documentación libre GNU 1.3 o más reciente',
'config-license-pd' => 'Dominio Público',
'config-license-cc-choose' => 'Selecciona una licencia personalizada de Creative Commons',
'config-email-settings' => 'Configuración de correo electrónico',
@@ -2960,24 +3943,26 @@ Muchos servidores de correo electrónico exigen que por lo menos la parte del no
'config-upload-settings' => 'Cargas de imágenes y archivos',
'config-upload-enable' => 'Habilitar la subida de archivos',
'config-upload-deleted' => '*Directório para los archivos eliminados:',
- 'config-upload-deleted-help' => 'Elige un directorio en el que guardar los archivos eliminados.
+ 'config-upload-deleted-help' => 'Elige un directorio en el que guardar los archivos eliminados.
Lo ideal es una carpeta no accesible desde la red.',
'config-logo' => 'URL del logo :',
'config-instantcommons' => 'Habilitar Instant Commons',
- 'config-cc-error' => 'El selector de licencia de Creative Commons no dio resultado.
+ 'config-cc-error' => 'El selector de licencia de Creative Commons no dio resultado.
Escribe el nombre de la licencia manualmente.',
'config-cc-again' => 'Elegir otra vez...',
'config-cc-not-chosen' => 'Elige la licencia Creative Commons que desees y haz clic en "continuar".',
'config-advanced-settings' => 'Configuración avanzada',
'config-cache-options' => 'Configuración de la caché de objetos:',
- 'config-cache-help' => 'El almacenamiento en caché de objetos se utiliza para mejorar la velocidad de MediaWiki mediante el almacenamiento en caché los datos usados más frecuentemente.
+ 'config-cache-help' => 'El almacenamiento en caché de objetos se utiliza para mejorar la velocidad de MediaWiki mediante el almacenamiento en caché los datos usados más frecuentemente.
A los sitios medianos y grandes se les recomienda que permitirlo. También es beneficioso para los sitios pequeños.',
'config-cache-none' => 'Sin almacenamiento en caché (no se pierde ninguna funcionalidad, pero la velocidad puede resentirse en sitios grandes)',
'config-cache-accel' => 'Almacenamiento en caché de objetos PHP (APC, eAccelerator, XCache o WinCache)',
'config-cache-memcached' => 'Utilizar Memcached (necesita ser instalado y configurado aparte)',
'config-memcached-servers' => 'Servidores Memcached:',
- 'config-memcached-help' => 'Lista de direcciones IP que serán usadas para Memcached.
-Deben ser separadas por comas y especificar el puerto a utilizar (por ejemplo: 127.0.0.1:11211, 192.168.1.25:11211).',
+ 'config-memcached-help' => 'Lista de direcciones IP que serán usadas por Memcached.
+Deben especificarse una por cada línea y especificar el puerto a utilizar. Por ejemplo:
+127.0.0.1:11211
+192.168.1.25:1234',
'config-extensions' => 'Extensiones',
'config-extensions-help' => 'Se ha detectado en tu directorio <code>./extensions</code> las extensiones listadas arriba.
@@ -2999,8 +3984,22 @@ Asegúrate de que el usuario "$1" puede escribir en el esquema "$2".',
'config-install-interwiki-list' => 'No se pudo encontrar el archivo <code>interwiki.list</code>.',
'config-install-interwiki-exists' => "'''Advertencia''': La tabla de interwikis parece ya contener entradas.
Se omitirá la lista predeterminada.",
- 'config-install-keys' => 'Generación de clave secreta',
+ 'config-install-keys' => 'Generación de claves secretas',
'config-install-sysop' => 'Creando cuenta de usuario del administrador',
+ 'mainpagetext' => "'''MediaWiki ha sido instalado con éxito.'''",
+ 'mainpagedocfooter' => 'Consulta la [//meta.wikimedia.org/wiki/Ayuda:Contenido Guía de usuario] para obtener información sobre el uso del software wiki.
+
+== Empezando ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista de ajustes de configuración]
+* [//www.mediawiki.org/wiki/Manual:FAQ/es FAQ de MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de distribución de MediaWiki]',
+);
+
+/** Estonian (Eesti) */
+$messages['et'] = array(
+ 'mainpagetext' => "'''MediaWiki tarkvara on edukalt paigaldatud.'''",
+ 'mainpagedocfooter' => 'Juhiste saamiseks kasutamise ning konfigureerimise kohta vaata palun inglisekeelset [//meta.wikimedia.org/wiki/MediaWiki_localisation dokumentatsiooni liidese kohaldamisest]
+ning [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide kasutusjuhendit].',
);
/** Basque (Euskara)
@@ -3029,12 +4028,12 @@ $messages['eu'] = array(
'config-page-copying' => 'Kopiatzea',
'config-page-upgradedoc' => 'Eguneratu',
'config-restart' => 'Bai, berriz hasi',
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWiki nagusia]
-* [http://www.mediawiki.org/wiki/Help:Contents Erabiltzaileentzako Gida]
-* [http://www.mediawiki.org/wiki/Manual:Contents Administratzaileentzako Gida]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MEG]',
+ 'config-sidebar' => '* [//www.mediawiki.org MediaWiki nagusia]
+* [//www.mediawiki.org/wiki/Help:Contents Erabiltzaileentzako Gida]
+* [//www.mediawiki.org/wiki/Manual:Contents Administratzaileentzako Gida]
+* [//www.mediawiki.org/wiki/Manual:FAQ MEG]',
'config-env-php' => 'PHP $1 instalatuta dago.',
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] instalatuta dago',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] instalatuta dago',
'config-apc' => '[http://www.php.net/apc APC] instalatuta dago',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] instalatuta dago',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] instalatuta dago',
@@ -3075,15 +4074,76 @@ $messages['eu'] = array(
'config-email-settings' => 'E-posta hobespenak',
'config-logo' => 'Logo URL:',
'config-install-step-done' => 'egina',
+ 'mainpagetext' => "'''MediaWiki arrakastaz instalatu da.'''",
+ 'mainpagedocfooter' => 'Ikus [//meta.wikimedia.org/wiki/Help:Contents Erabiltzaile Gida] wiki softwarea erabiltzen hasteko informazio gehiagorako.
+
+== Nola hasi ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Konfigurazio balioen zerrenda]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ (Maiz egindako galderak)]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWikiren argitalpenen posta zerrenda]',
+);
+
+/** Extremaduran (Estremeñu) */
+$messages['ext'] = array(
+ 'mainpagetext' => "'''MeyaGüiqui s'á istalau satihatoriamenti.'''",
+ 'mainpagedocfooter' => "Consurta la [//meta.wikimedia.org/wiki/Help:Contents User's Guide] pa sabel mas al tentu el huncionamientu el software güiqui.
+
+== Esminciandu ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
);
/** Persian (Ùارسی)
* @author Mjbmr
*/
$messages['fa'] = array(
+ 'config-desc' => 'نصب کنندهٔ ویکی‌مدیا',
+ 'config-title' => 'نصب ویکی‌مدیا $1',
+ 'config-information' => 'اطلاعات',
'config-your-language' => 'زبان شما:',
'config-wiki-language' => 'زبان ویکی:',
+ 'config-back' => '→ بازگشت',
+ 'config-continue' => 'ادامه â†',
'config-page-language' => 'زبان',
+ 'config-page-welcome' => 'به مدیاویکی خوش آمدید!',
+ 'config-page-name' => 'نام',
+ 'config-page-options' => 'گزینه‌ها',
+ 'config-page-install' => 'نصب',
+ 'config-page-complete' => 'کامل!',
+ 'config-page-readme' => 'مرا بخوان',
+ 'config-page-releasenotes' => 'یادداشت‌های انتشار',
+ 'config-page-existingwiki' => 'ویکی موجود',
+ 'config-db-type' => 'نوع پایگاه اطلاعات:',
+ 'config-db-host' => 'میزبان پایگاه اطلاعات:',
+ 'config-db-username' => 'نام کاربری پایگاه اطلاعات:',
+ 'config-db-password' => 'کلمه عبور پایگاه اطلاعات:',
+ 'config-site-name' => 'نام ویکی:',
+ 'config-site-name-blank' => 'نام تارنما را وارد کنید.',
+ 'config-project-namespace' => 'Ùضای نام پروژه:',
+ 'config-admin-name' => 'نام شما:',
+ 'config-admin-password' => 'کلمه عبور:',
+ 'config-admin-password-confirm' => 'دوباره کلمه عبور:',
+ 'config-admin-email' => 'پست الکترونیکی شما:',
+ 'config-profile-private' => 'ویکی خصوصی',
+ 'config-license' => 'حق تکثیر و مجوز:',
+ 'config-license-cc-choose' => 'انتخاب یک مجوز سÙارشی عوام خلاق',
+ 'config-email-settings' => 'تنظیمات پست الکترونیکی',
+ 'config-upload-enable' => 'Ùعال سازی بارگذاری پرونده',
+ 'config-install-step-done' => 'انجام شد',
+ 'config-install-step-failed' => 'ناموÙÙ‚ بود',
+ 'config-help' => 'راهنما',
+ 'mainpagetext' => "'''نرم‌اÙزار ویکی با موÙقیت نصب شد.'''",
+ 'mainpagedocfooter' => 'از [//meta.wikimedia.org/wiki/Help:Contents راهنمای کاربران]
+برای استÙاده از نرم‌اÙزار ویکی Ú©Ù…Ú© بگیرید.
+
+== آغاز به کار ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings تنظیم پیکربندی]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki پرسش‌های متداول]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Ùهرست پست الکترونیکی نسخه‌های مدیاویکی]',
);
/** Finnish (Suomi)
@@ -3100,10 +4160,12 @@ $messages['fi'] = array(
'config-localsettings-upgrade' => '<code>LocalSettings.php</code>-tiedosto on havaittu.
Syötä kohdan <code>$wgUpgradeKey</code> arvo alla olevaan kenttään päivittääksesi asennuksen.
Löydät sen LocalSettings.php-tiedostosta.',
+ 'config-localsettings-key' => 'Päivitysavain',
+ 'config-localsettings-badkey' => 'Antamasi avain on virheellinen.',
'config-session-error' => 'Istunnon aloittaminen epäonnistui: $1',
'config-session-expired' => 'Istuntotietosi näyttävät olevan vanhentuneita.
Istuntojen elinajaksi on määritelty $1.
-Voit muuttaa tätä asetusta vaihtamalla kohtaa <code>session.gc_maxlifetime</code> php.ini -tiedostossa.
+Voit muuttaa tätä asetusta vaihtamalla kohtaa <code>session.gc_maxlifetime</code> php.ini-tiedostossa.
Käynnistä asennusprosessi uudelleen.',
'config-your-language' => 'Asennuksen kieli',
'config-your-language-help' => 'Valitse kieli, jota haluat käyttää asennuksen ajan.',
@@ -3122,35 +4184,39 @@ Käynnistä asennusprosessi uudelleen.',
'config-page-complete' => 'Valmis!',
'config-page-restart' => 'Aloita asennus alusta',
'config-page-readme' => 'Lue minut',
- 'config-page-releasenotes' => 'Julkaisun tiedot',
+ 'config-page-releasenotes' => 'Julkaisutiedot',
'config-page-copying' => 'Kopiointi',
'config-page-upgradedoc' => 'Päivittäminen',
+ 'config-page-existingwiki' => 'Aikaisempi asennus',
'config-help-restart' => 'Haluatko poistaa kaikki annetut tiedot ja aloittaa asennuksen alusta?',
'config-restart' => 'Kyllä',
'config-welcome' => '=== Ympäristön tarkistukset ===
Varmistetaan MediaWikin asennettavuus tähän ympäristöön.
Sinun pitäisi antaa näiden tarkistusten tulokset, jos tarvitset apua asennuksen aikana.',
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWikin kotisivu]
-* [http://www.mediawiki.org/wiki/Help:Contents Käyttöopas]
-* [http://www.mediawiki.org/wiki/Manual:Contents Hallintaopas]
-* [http://www.mediawiki.org/wiki/Manual:FAQ UKK]',
+ 'config-sidebar' => '* [//www.mediawiki.org MediaWikin kotisivu]
+* [//www.mediawiki.org/wiki/Help:Contents Käyttöopas]
+* [//www.mediawiki.org/wiki/Manual:Contents Hallintaopas]
+* [//www.mediawiki.org/wiki/Manual:FAQ UKK]
+----
+* <doclink href=Readme>Lue minut</doclink>
+* <doclink href=ReleaseNotes>Julkaisutiedot</doclink>
+* <doclink href=Copying>Kopiointi</doclink>
+* <doclink href=UpgradeDoc>Päivittäminen</doclink>',
'config-env-good' => 'Asennusympäristö on tarkastettu.
Voit asentaa MediaWikin.',
'config-env-bad' => 'Asennusympäristö on tarkastettu.
Et voi asentaa MediaWikiä.',
'config-env-php' => 'PHP $1 on asennettu.',
- 'config-no-db' => 'Sopivaa tietokanta-ajuria ei löytynyt!',
- 'config-no-db-help' => 'Sinun täytyy asentaa tietokanta-ajuri PHP:lle.
-Seuraavat tietokantatyypit on tuettu: $1.
-
-Jos käytät jaettua sivutilaa, kysy palveluntarjoajalta, josko se voisi asentaa sopivan tietokanta-ajurin.
-Jos olet kääntänyt PHP:n itse, asenna se tietokantaohjelman kanssa, esimerkiksi käyttäen koodia <code>./configure --with-mysql</code>.
-Jos olet asentanut PHP:n Debian tai Ubuntu-paketista, sinun täytyy asentaa myös php5-mysql-moduuli.',
+ 'config-no-db' => 'Sopivaa tietokanta-ajuria ei löytynyt! Sinun täytyy asentaa tietokanta-ajurit PHP:lle.
+Seuraavat tietokantatyypit ovat tuettuja: $1.',
'config-safe-mode' => "'''Varoitus:''' PHP:n [http://www.php.net/features.safe-mode safe mode] -tila on aktiivinen.
Se voi aiheuttaa ongelmia erityisesti tiedostojen tallentamisen ja matemaattisten kaavojen kanssa.",
'config-pcre' => 'PCRE-tukimoduuli puuttuu.
MediaWiki vaatii toimiakseen Perl-yhteensopivat säännölliset lausekkeet.',
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] on asennettu',
+ 'config-memory-bad' => "'''Varoitus:''' PHP:n <code>memory_limit</code> on $1.
+Tämä on luultavasti liian alhainen.
+Asennus saattaa epäonnistua!",
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] on asennettu',
'config-apc' => '[http://www.php.net/apc APC] on asennettu.',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] on asennettu',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] on asennettu',
@@ -3170,24 +4236,37 @@ MediaWiki vaatii toimiakseen Perl-yhteensopivat säännölliset lausekkeet.',
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
+ 'config-type-ibm_db2' => 'IBM DB2',
+ 'config-support-ibm_db2' => '* $1 on kaupallinen tietokanta yrityskäyttöön.',
'config-header-mysql' => 'MySQL-asetukset',
'config-header-postgres' => 'PostgreSQL-asetukset',
'config-header-sqlite' => 'SQLite-asetukset',
'config-header-oracle' => 'Oracle-asetukset',
+ 'config-header-ibm_db2' => 'IBM DB2 -asetukset',
'config-invalid-db-type' => 'Virheellinen tietokantatyyppi',
'config-missing-db-name' => 'Kenttä »Tietokannan nimi» on pakollinen',
'config-invalid-db-name' => 'â€$1†ei kelpaa tietokannan nimeksi.
-Se voi sisältää vain kirjaimia (a-z, A-Z), numeroita (0-9) ja alaviivan (_).',
+Käytä ainoastaan kirjaimia (a-z, A-Z), numeroita (0-9), alaviivoja (_) ja tavuviivoja (-).',
'config-invalid-db-prefix' => 'â€$1†ei kelpaa tietokannan etuliitteeksi.
-Se voi sisältää vain kirjaimia (a-z, A-Z), numeroita (0-9) ja alaviivan (_).',
+Käytä ainoastaan kirjaimia (a-z, A-Z), numeroita (0-9), alaviivoja (_) ja tavuviivoja (-).',
'config-postgres-old' => 'MediaWiki tarvitsee PostgreSQL:n version $1 tai uudemman. Nykyinen versio on $2.',
- 'config-sqlite-name-help' => 'Valitse nimi joka yksilöi tämän wikin.
+ 'config-sqlite-name-help' => 'Valitse nimi, joka yksilöi tämän wikin.
Älä käytä välilyöntejä tai viivoja.
-Nimeä käytetään SQlite-tietokannan tiedostonimessä.',
+Nimeä käytetään SQLite-tietokannan tiedostonimessä.',
'config-sqlite-dir-unwritable' => 'Hakemistoon â€$1†kirjoittaminen epäonnistui.
Muuta hakemiston käyttöoikeuksia siten, että palvelinohjelmisto voi kirjoittaa siihen ja koita uudelleen.',
'config-sqlite-readonly' => 'Tiedostoon <code>$1</code> ei voi kirjoittaa.',
'config-sqlite-fts3-downgrade' => 'PHP:stä puuttuu FTS3-tuki. Poistetaan ominaisuus käytöstä tietokantatauluista.',
+ 'config-upgrade-done' => "Päivitys valmis.
+
+Voit [$1 aloittaa wikin käytön].
+
+Napsauta alla olevaa painiketta, jos haluat luoda uudelleen <code>LocalSettings.php</code>-tiedoston.
+Tämä '''ei ole suositeltavaa''', jos wikissäsi ei ole ongelmia.",
+ 'config-upgrade-done-no-regenerate' => 'Päivitys valmis.
+
+Voit [$1 aloittaa wikin käytön].',
+ 'config-regenerate' => 'Luo LocalSettings.php uudelleen →',
'config-show-table-status' => 'Kysely SHOW TABLE STATUS epäonnistui!',
'config-mysql-engine' => 'Tallennusmoottori',
'config-mysql-innodb' => 'InnoDB',
@@ -3195,28 +4274,65 @@ Muuta hakemiston käyttöoikeuksia siten, että palvelinohjelmisto voi kirjoitta
'config-mysql-binary' => 'Binääri',
'config-mysql-utf8' => 'UTF-8',
'config-site-name' => 'Wikin nimi',
- 'config-project-namespace' => 'Projektinimiavaruus:',
+ 'config-project-namespace' => 'Projektinimiavaruus',
'config-ns-generic' => 'Projekti',
+ 'config-ns-site-name' => 'Sama kuin wikin nimi: $1',
+ 'config-ns-other' => 'Muu (määritä)',
'config-admin-name' => 'Nimesi',
'config-admin-password' => 'Salasana',
'config-admin-password-confirm' => 'Salasana uudelleen',
'config-admin-name-blank' => 'Anna ylläpitäjän käyttäjänimi.',
'config-admin-email' => 'Sähköpostiosoite',
+ 'config-almost-done' => 'Olet jo lähes valmis!
+Voit ohittaa jäljellä olevat määritykset ja asentaa wikin juuri nyt.',
+ 'config-profile-wiki' => 'Perinteinen wiki',
+ 'config-profile-no-anon' => 'Tunnuksen luonti vaaditaan',
'config-profile-private' => 'Yksityinen wiki',
+ 'config-email-settings' => 'Sähköpostiasetukset',
+ 'config-logo' => 'Logon URL-osoite',
+ 'config-cc-again' => 'Valitse uudelleen...',
+ 'config-extensions' => 'Laajennukset',
'config-install-step-done' => 'tehty',
'config-install-step-failed' => 'epäonnistui',
+ 'config-download-localsettings' => 'Lataa LocalSettings.php',
'config-help' => 'ohje',
+ 'mainpagetext' => "'''MediaWiki on onnistuneesti asennettu.'''",
+ 'mainpagedocfooter' => "Lisätietoja käytöstä on sivulla [//meta.wikimedia.org/wiki/Help:Contents User's Guide].
+
+=== Lisäohjeita ===
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Asetusten teko-ohjeita]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWikin FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Sähköpostilista, jolla tiedotetaan MediaWikin uusista versioista]
+
+=== Asetukset ===
+
+Tarkista, että alla olevat taivutusmuodot ovat oikein. Jos eivät, tee tarvittavat muutokset LocalSettings.php:hen seuraavasti:
+ \$wgGrammarForms['fi']['genitive']['{{SITENAME}}'] = '...';
+ \$wgGrammarForms['fi']['partitive']['{{SITENAME}}'] = '...';
+ \$wgGrammarForms['fi']['elative']['{{SITENAME}}'] = '...';
+ \$wgGrammarForms['fi']['inessive']['{{SITENAME}}'] = '...';
+ \$wgGrammarForms['fi']['illative']['{{SITENAME}}'] = '...';
+Taivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) — {{GRAMMAR:partitive|{{SITENAME}}}} (yötä) — {{GRAMMAR:elative|{{SITENAME}}}} (yöstä) — {{GRAMMAR:inessive|{{SITENAME}}}} (yössä) — {{GRAMMAR:illative|{{SITENAME}}}} (yöhön).",
+);
+
+/** Faroese (Føroyskt) */
+$messages['fo'] = array(
+ 'mainpagetext' => "'''Innlegging av Wiki-ritbúnaði væleydnað.'''",
);
/** French (Français)
* @author Aadri
* @author Crochet.david
+ * @author Gomoko
+ * @author Grondin
* @author Hashar
* @author IAlex
* @author Jean-Frédéric
* @author McDutchie
* @author Peter17
* @author Sherbrooke
+ * @author Urhixidur
* @author Verdy p
* @author Yumeki
*/
@@ -3227,7 +4343,7 @@ $messages['fr'] = array(
'config-localsettings-upgrade' => 'Un fichier <code>LocalSettings.php</code> a été détecté.
Pour mettre à jour cette installation, veuillez saisir la valeur de <code>$wgUpgradeKey</code> dans le champ ci-dessous.
Vous la trouverez dans LocalSettings.php.',
- 'config-localsettings-cli-upgrade' => 'Un fichier LocalSettings.php a été détecté.
+ 'config-localsettings-cli-upgrade' => 'Un fichier LocalSettings.php a été détecté.
Pour mettre à niveau cette installation, veuillez exécuter update.php',
'config-localsettings-key' => 'Clé de mise à jour :',
'config-localsettings-badkey' => 'La clé que vous avez fournie est incorrecte',
@@ -3285,10 +4401,10 @@ Ce programme est distribué dans l’espoir qu’il sera utile, mais '''sans auc
Voir la Licence Publique Générale GNU pour plus de détails.
Vous devriez avoir reçu <doclink href=Copying>une copie de la Licence Publique Générale GNU</doclink> avec ce programme ; dans le cas contraire, écrivez à la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. ou [http://www.gnu.org/copyleft/gpl.html lisez-le en ligne].",
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWiki Accueil]
-* [http://www.mediawiki.org/wiki/Help:Contents Guide de l’utilisateur]
-* [http://www.mediawiki.org/wiki/Manual:Contents Guide de l’administrateur]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]
+ 'config-sidebar' => '* [//www.mediawiki.org MediaWiki Accueil]
+* [//www.mediawiki.org/wiki/Help:Contents Guide de l’utilisateur]
+* [//www.mediawiki.org/wiki/Manual:Contents Guide de l’administrateur]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ]
----
* <doclink href=Readme>Lisez-moi</doclink>
* <doclink href=ReleaseNotes>Notes de pblication</doclink>
@@ -3299,22 +4415,20 @@ Vous pouvez installer MediaWiki.',
'config-env-bad' => 'L’environnement a été vérifié.
vous ne pouvez pas installer MediaWiki.',
'config-env-php' => 'PHP $1 est installé.',
- 'config-env-php-toolow' => 'PHP $1 est installé.
+ 'config-env-php-toolow' => 'PHP $1 est installé.
Cependant, MediaWiki requiert PHP $2 ou plus haut.',
'config-unicode-using-utf8' => 'Utilisation de utf8_normalize.so par Brion Vibber pour la normalisation Unicode.',
'config-unicode-using-intl' => "Utilisation de [http://pecl.php.net/intl l'extension PECL intl] pour la normalisation Unicode.",
'config-unicode-pure-php-warning' => "'''Attention''': L'[http://pecl.php.net/intl extension PECL intl] n'est pas disponible pour la normalisation d’Unicode, retour à la version lente implémentée en PHP.
-Si vous utilisez un site web très fréquenté, vous devriez lire ceci : [http://www.mediawiki.org/wiki/Unicode_normalization_considerations ''Unicode normalization''] (en anglais).",
+Si vous utilisez un site web très fréquenté, vous devriez lire ceci : [//www.mediawiki.org/wiki/Unicode_normalization_considerations ''Unicode normalization''] (en anglais).",
'config-unicode-update-warning' => "'''Attention''': La version installée du ''wrapper'' de normalisation Unicode utilise une vieille version de la [http://site.icu-project.org/ bibliothèque logicielle ''ICU Project''].
-Vous devriez faire une [http://www.mediawiki.org/wiki/Unicode_normalization_considerations mise à jour] (texte en anglais) si l'usage d'Unicode vous semble important.",
- 'config-no-db' => 'Impossible de trouver un pilote de base de données approprié !',
- 'config-no-db-help' => "Vous avez besoin d'installer un pilote de base de données pour PHP.
-Les types de base de données suivants sont supportés: $1.
-
-Si vous êtes en hébergement mutualisé, demandez à votre fournisseur d'hébergement pour installer un pilote de base de données appropriée.
-Si vous avez compilé PHP vous-même, reconfigurez-le en activant un client de base de données, par exemple en utilisant <code>./configure --with-mysql</code>.
-Si vous avez installé PHP à partir d'un paquet Debian ou Ubuntu, vous devez également installer le module php5-mysql.",
- 'config-no-fts3' => "'''Attention :''' SQLite est compilé sans le module [http://sqlite.org/fts3.html FTS3] ; les fonctions de recherche ne seront pas disponibles sur ce moteur.",
+Vous devriez faire une [//www.mediawiki.org/wiki/Unicode_normalization_considerations mise à jour] (texte en anglais) si l'usage d'Unicode vous semble important.",
+ 'config-no-db' => "Impossible de trouver un pilote de base de données approprié ! Vous devez installer un pilote pour PHP. Ces types de bases de données sont reconnus : $1.
+
+Si vous êtes sur un site partagé, demandez à votre hébergeur d'installer un pilote de base de données approprié. Si vous avez compilé PHP, le configurer avec client de base de données activé, par exemple en insérant la directive <code>./configure --with-mysql</code>.
+
+Si vous avez installé PHP d'une distribution Debian ou Ubuntu, vous devez aussi installer le module <code>php5-mysql</code>.",
+ 'config-no-fts3' => "'''Attention :''' SQLite est compilé sans le module [//sqlite.org/fts3.html FTS3] ; les fonctions de recherche ne seront pas disponibles sur ce moteur.",
'config-register-globals' => "'''Attention : l'option <code>[http://php.net/register_globals register_globals]</code> de PHP est activée.'''
'''Désactivez-la si vous le pouvez.'''
MediaWiki fonctionnera, mais votre serveur sera exposé à de potentielles failles de sécurité.",
@@ -3335,44 +4449,53 @@ Ceci peut causer des problèmes, en particulier si vous utilisez le téléversem
'config-xml-bad' => 'Le module XML de PHP est manquant.
MediaWiki requiert des fonctions de ce module et ne fonctionnera pas avec cette configuration.
Si vous êtes sous Mandrake, installez le paquet php-xml.',
- 'config-pcre' => "Le module de support PCRE semble manquer.
-MediaWiki requiert les fonctions d'expression régulière compatible avec Perl.",
+ 'config-pcre' => 'Le module de support PCRE semble manquer.
+MediaWiki requiert les fonctions d’expressions rationnelles compatibles avec Perl.',
'config-pcre-no-utf8' => "'''Erreur fatale''': Le module PCRE de PHP semble être compilé sans le support PCRE_UTF8.
MédiaWiki nécessite la gestion d’UTF-8 pour fonctionner correctement.",
'config-memory-raised' => 'Le paramètre <code>memory_limit</code> de PHP était à $1, porté à $2.',
'config-memory-bad' => "'''Attention :''' Le paramètre <code>memory_limit</code> de PHP est à $1.
Cette valeur est probablement trop faible.
Il est possible que l’installation échoue !",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] est installé',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] est installé',
'config-apc' => '[http://www.php.net/apc APC] est installé',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] est installé',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] est installé',
- 'config-no-cache' => "'''Attention :''' Impossible de trouver [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] ou [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''Attention :''' Impossible de trouver [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] ou [http://www.iis.net/download/WinCacheForPhp WinCache].
La mise en cache d'objets n'est pas activée.",
+ 'config-mod-security' => "'''Attention''': Votre serveur web a [http://modsecurity.org/ mod_security] activé. S&il est mal configuré, cela peut poser des problèmes à MediaWiki ou à d'autres applications qui permettent aux utilisateurs de publier un contenu quelconque.
+Reportez-vous à [http://modsecurity.org/documentation/ la documentation de mod_security] ou contactez le support de votre hébergeur si vous rencontrez des erreurs aléatoires.",
'config-diff3-bad' => 'GNU diff3 introuvable.',
- 'config-imagemagick' => "ImageMagick trouvé : <code>$1</code>.
+ 'config-imagemagick' => "ImageMagick trouvé : <code>$1</code>.
La miniaturisation d'images sera activée si vous activez le téléversement de fichiers.",
- 'config-gd' => "La bibliothèque graphique GD intégrée a été trouvée.
+ 'config-gd' => "La bibliothèque graphique GD intégrée a été trouvée.
La miniaturisation d'images sera activée si vous activez le téléversement de fichiers.",
- 'config-no-scaling' => "Impossible de trouver la bibliothèque GD ou ImageMagick.
+ 'config-no-scaling' => "Impossible de trouver la bibliothèque GD ou ImageMagick.
La miniaturisation d'images sera désactivé.",
- 'config-no-uri' => "'''Erreur :''' Impossible de déterminer l'URI du script actuel.
+ 'config-no-uri' => "'''Erreur :''' Impossible de déterminer l'URI du script actuel.
Installation avortée.",
- 'config-uploads-not-safe' => "'''Attention:''' Votre répertoire par défaut pour les téléchargements, <code>$1</code>, est vulnérable, car il peut exécuter n'importe quel script.
-Bien que MediaWiki vérifie tous les fichiers téléchargés, il est fortement recommandé de [http://www.mediawiki.org/wiki/Manual:Security#Upload_security fermer cette vulnérabilité de sécurité] (texte en anglais) avant d'activer les téléchargements.",
+ 'config-no-cli-uri' => "'''Attention''': Aucun --scriptpath n'a été spécifié; <code>$1</code> sera utilisé par défaut",
+ 'config-using-server' => 'En utilisant le nom du serveur "<nowiki>$1</nowiki>".',
+ 'config-using-uri' => 'Utilise l\'URL du serveur "<nowiki>$1$2</nowiki>".',
+ 'config-uploads-not-safe' => "'''Attention:''' Votre répertoire par défaut pour les téléchargements, <code>$1</code>, est vulnérable, car il peut exécuter n'importe quel script.
+Bien que MediaWiki vérifie tous les fichiers téléchargés, il est fortement recommandé de [//www.mediawiki.org/wiki/Manual:Security#Upload_security fermer cette vulnérabilité de sécurité] (texte en anglais) avant d'activer les téléchargements.",
+ 'config-no-cli-uploads-check' => "'''Attention:''' Votre répertoire par défaut pour les imports(<code>$1</code>) n'est pas contrôlé concernant la vulnérabilité d'exécution de scripts arbitraires lors de l'installation CLI.",
'config-brokenlibxml' => 'Votre système utilise une combinaison de versions de PHP et libxml2 qui est boguée et peut engendrer des corruptions cachées de données dans MediaWiki et d’autres applications web.
-Veuillez mettre à jour votre système vers PHP 5.2.9 ou plus récent et libxml2 2.7.3 ou plus récent ([http://bugs.php.net/bug.php?id=45996 bogue déposé auprès de PHP]).
+Veuillez mettre à jour votre système vers PHP 5.2.9 ou plus récent et libxml2 2.7.3 ou plus récent ([//bugs.php.net/bug.php?id=45996 bogue déposé auprès de PHP]).
Installation interrompue.',
'config-using531' => 'MediaWiki ne peut pas être utilisé avec PHP $1 à cause d’un bogue affectant les paramètres passés par référence à <code>__call()</code>.
Veuillez mettre à jour votre système vers PHP 5.3.2 ou plus récent ou revenir à PHP 5.3.0 pour résoudre ce problème.
Installation interrompue.',
+ 'config-suhosin-max-value-length' => 'Suhosin est installé et limite la longueur du paramètre GET à $1 octets. Le <code>ResourceLoader</code> de MediaWiki va répondre en respectant cette limite, mais ses performances seront dégradées. Si possible, vous devriez définir <code>suhosin.get.max_value_length</code> à 1024 ou plus dans le fichier <code>php.ini</code>, et fixer <code>$wgResourceLoaderMaxQueryLength</code> à la même valeur dans <code>LocalSettings.php</code>.',
'config-db-type' => 'Type de base de données :',
'config-db-host' => 'Nom d’hôte de la base de données :',
- 'config-db-host-help' => "Si votre serveur de base de données est sur un serveur différent, saisissez ici son nom d’hôte ou son adresse IP.
+ 'config-db-host-help' => 'Si votre serveur de base de données est sur un serveur différent, saisissez ici son nom d’hôte ou son adresse IP.
Si vous utilisez un hébergement mutualisé, votre hébergeur doit vous avoir fourni le nom d’hôte correct dans sa documentation.
-Si vous installez sur un serveur Windows et utilisez MySQL, « localhost » peut ne pas fonctionner comme nom de serveur. S'il ne fonctionne pas, essayez « 127.0.0.1 » comme adresse IP locale.",
+Si vous installez sur un serveur Windows et utilisez MySQL, « localhost » peut ne pas fonctionner comme nom de serveur. S’il ne fonctionne pas, essayez « 127.0.0.1 » comme adresse IP locale.
+
+Si vous utilisez PostgreSQL, laissez ce champ vide pour vous connecter via un socket Unix.',
'config-db-host-oracle' => 'Nom TNS de la base de données :',
'config-db-host-oracle-help' => 'Entrez un [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm nom de connexion locale] valide ; un fichier tnsnames.ora doit être visible par cette installation.<br /> Si vous utilisez les bibliothèques clientes version 10g ou plus récentes, vous pouvez également utiliser la méthode de nommage [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].',
'config-db-wiki-settings' => 'Identifier ce wiki',
@@ -3382,9 +4505,9 @@ Il ne doit pas contenir d'espaces.
Si vous utilisez un hébergement web partagé, votre hébergeur vous fournira un nom spécifique de base de données à utiliser, ou bien vous permet de créer des bases de données via un panneau de contrôle.",
'config-db-name-oracle' => 'Schéma de base de données :',
- 'config-db-account-oracle-warn' => "Il existe trois scénarios pris en charge pour l’installation d'Oracle comme backend de base :
+ 'config-db-account-oracle-warn' => "Il existe trois scénarios pris en charge pour l’installation d'Oracle comme backend de base :
-Si vous souhaitez créer un compte de base de données dans le cadre de la procédure d’installation, veuillez fournir un compte avec le rôle de SYSDBA comme compte de base de données pour l’installation et spécifiez les informations d’identification souhaitées pour le compte d'accès au web, sinon vous pouvez créer le compte d’accès web manuellement et fournir uniquement ce compte (si elle a exigé des autorisations nécessaires pour créer les objets de schéma) ou fournir deux comptes différents, l’un avec les privilèges de créer et une restreinte pour l’accès web.
+Si vous souhaitez créer un compte de base de données dans le cadre de la procédure d’installation, veuillez fournir un compte avec le rôle de SYSDBA comme compte de base de données pour l’installation et spécifiez les informations d’identification souhaitées pour le compte d'accès au web, sinon vous pouvez créer le compte d’accès web manuellement et fournir uniquement ce compte (si elle a exigé des autorisations nécessaires pour créer les objets de schéma) ou fournir deux comptes différents, l’un avec les privilèges de créer et une restreinte pour l’accès web.
Un script pour créer un compte avec des privilèges requis peut être trouvé dans le répertoire « entretien/oracle/ » de cette installation. N’oubliez pas que le fait de l’utilisation d’un compte limité désactive toutes les fonctionnalités d’entretien avec le compte par défaut.",
'config-db-install-account' => "Compte d'utilisateur pour l'installation",
@@ -3397,32 +4520,33 @@ Bien qu'il soit possible de créer un compte sans mot de passe, ce n'est pas rec
'config-db-install-help' => "Entrez le nom d'utilisateur et le mot de passe qui seront utilisés pour se connecter à la base de données pendant le processus d'installation.",
'config-db-account-lock' => "Utiliser le même nom d'utilisateur et le même mot de passe pendant le fonctionnement habituel",
'config-db-wiki-account' => "Compte d'utilisateur pour le fonctionnement habituel",
- 'config-db-wiki-help' => "Entrez le nom d'utilisateur et le mot de passe qui seront utilisés pour se connecter à la base de données pendant le fonctionnement habituel du wiki.
+ 'config-db-wiki-help' => "Entrez le nom d'utilisateur et le mot de passe qui seront utilisés pour se connecter à la base de données pendant le fonctionnement habituel du wiki.
Si le compte n'existe pas, et le compte d'installation dispose de privilèges suffisants, ce compte d'utilisateur sera créé avec les privilèges minimum requis pour faire fonctionner le wiki.",
'config-db-prefix' => 'Préfixe des tables de la base de données :',
- 'config-db-prefix-help' => "Si vous avez besoin de partager une base de données entre plusieurs wikis, ou entre MediaWiki et une autre application Web, vous pouvez choisir d'ajouter un préfixe à tous les noms de table pour éviter les conflits.
-Ne pas utiliser des espaces.
+ 'config-db-prefix-help' => "Si vous avez besoin de partager une base de données entre plusieurs wikis, ou entre MediaWiki et une autre application Web, vous pouvez choisir d'ajouter un préfixe à tous les noms de table pour éviter les conflits.
+Ne pas utiliser des espaces.
Ce champ est généralement laissé vide.",
'config-db-charset' => 'Jeu de caractères de la base de données',
'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 binaire',
'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
'config-charset-mysql4' => 'MySQL 4.0 rétrocompatible UTF-8',
- 'config-charset-help' => "'''Attention:''' Si vous utilisez ''backwards-compatible UTF-8'' sur MySQL 4.1+, et ensuite sauvegardez la base de données avec <code>mysqldump</code>, cela peut détruire tous les caractères non-ASCII, ce qui rend inutilisable vos copies de sauvegarde de façon irréversible !
+ 'config-charset-help' => "'''Attention:''' Si vous utilisez ''backwards-compatible UTF-8'' sur MySQL 4.1+, et ensuite sauvegardez la base de données avec <code>mysqldump</code>, cela peut détruire tous les caractères non-ASCII, ce qui rend inutilisable vos copies de sauvegarde de façon irréversible !
-En ''mode binaire'', MediaWiki stocke le texte UTF-8 dans des champs binaires de la base de données. C'est plus efficace que le ''mode UTF-8'' de MySQL, et vous permet d'utiliser toute la gamme des caractères Unicode.
-En ''mode UTF-8'', MySQL connaîtra le jeu de caractères de vos données et pourra présenter et convertir les données de manière appropriée, mais il ne vous laissera pas stocker les caractères au-dessus du [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingue de base] (en anglais).",
+En ''mode binaire'', MediaWiki stocke le texte UTF-8 dans des champs binaires de la base de données. C'est plus efficace que le ''mode UTF-8'' de MySQL, et vous permet d'utiliser toute la gamme des caractères Unicode.
+En ''mode UTF-8'', MySQL connaîtra le jeu de caractères de vos données et pourra présenter et convertir les données de manière appropriée, mais il ne vous laissera pas stocker les caractères au-dessus du [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingue de base] (en anglais).",
'config-mysql-old' => 'MySQL $1 ou version ultérieure est requis, vous avez $2.',
'config-db-port' => 'Port de la base de données :',
'config-db-schema' => 'Schéma pour MediaWiki',
'config-db-schema-help' => "Les schémas ci-dessus sont généralement corrects.
Ne les changez que si vous êtes sûr que c'est nécessaire.",
+ 'config-pg-test-error' => "Impossible de se connecter à la base de données '''$1''' : $2",
'config-sqlite-dir' => 'Dossier des données SQLite :',
- 'config-sqlite-dir-help' => "SQLite stocke toutes les données dans un fichier unique.
+ 'config-sqlite-dir-help' => "SQLite stocke toutes les données dans un fichier unique.
-Le répertoire que vous inscrivez doit être accessible en écriture par le serveur lors de l'installation.
+Le répertoire que vous inscrivez doit être accessible en écriture par le serveur lors de l'installation.
-Il '''ne faut pas''' qu'il soit accessible via le web, c'est pourquoi il n'est pas à l'endroit où vos fichiers PHP sont.
+Il '''ne faut pas''' qu'il soit accessible via le web, c'est pourquoi il n'est pas à l'endroit où vos fichiers PHP sont.
L'installateur écrira un fichier <code>.htaccess</code> en même temps, mais s'il y a échec, quelqu'un peut accéder à votre base de données.
Cela comprend les données des utilisateurs (adresses de courriel, mots de passe hachés) ainsi que des révisions supprimées et d'autres données confidentielles du wiki.
@@ -3434,19 +4558,22 @@ Envisagez de placer la base de données ailleurs, par exemple dans <code>/var/li
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
- 'config-support-info' => "MediaWiki supporte ces systèmes de bases de données :
+ 'config-type-ibm_db2' => 'IBM DB2',
+ 'config-support-info' => "MediaWiki supporte ces systèmes de bases de données :
-$1
+$1
Si vous ne voyez pas le système de base de données que vous essayez d'utiliser ci-dessous, alors suivez les instructions ci-dessus (voir liens) pour activer le support.",
'config-support-mysql' => '* $1 est le premier choix pour MediaWiki et est mieux pris en charge ([http://www.php.net/manual/en/mysql.installation.php how to compile PHP with MySQL support])',
- 'config-support-postgres' => "* $1 est un système de base de données populaire et ''open source'' qui peut être une alternative à MySQL ([http://www.php.net/manual/en/pgsql.installation.php how to compile PHP with PostgreSQL support])",
+ 'config-support-postgres' => "* $1 est un système de base de données populaire et ''open source'' qui peut être une alternative à MySQL ([http://www.php.net/manual/en/pgsql.installation.php how to compile PHP with PostgreSQL support]). Il peut contenir quelques bogues mineurs et n'est pas recommandé dans un environnement de production.",
'config-support-sqlite' => '* $1 est un système de base de données léger qui est bien supporté. ([http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], utilise PDO)',
'config-support-oracle' => '* $1 est un système commercial de gestion de base de données d’entreprise. ([Http://www.php.net/manual/en/oci8.installation.php Comment compiler PHP avec le support OCI8])',
+ 'config-support-ibm_db2' => "* $1 est une base de données d'entreprise commerciale.",
'config-header-mysql' => 'Paramètres de MySQL',
'config-header-postgres' => 'Paramètres de PostgreSQL',
'config-header-sqlite' => 'Paramètres de SQLite',
'config-header-oracle' => 'Paramètres d’Oracle',
+ 'config-header-ibm_db2' => 'paramètres de IBM DB2',
'config-invalid-db-type' => 'Type de base de données non valide',
'config-missing-db-name' => 'Vous devez saisir une valeur pour « Nom de la base de données »',
'config-missing-db-host' => "Vous devez entrer une valeur pour « l'hôte de la base de données »",
@@ -3455,41 +4582,41 @@ Si vous ne voyez pas le système de base de données que vous essayez d'utiliser
Il ne peut contenir que des lettres latines de base (a-z, A-Z), des chiffres (0-9), des caractères de soulignement (_) et des points (.).',
'config-invalid-db-name' => 'Nom de la base de données invalide (« $1 »).
Il ne peut contenir que des lettres latines (a-z, A-Z), des chiffres (0-9), des caractères de soulignement (_) et des tirets (-).',
- 'config-invalid-db-prefix' => 'Préfixe de la base de données non valide « $1 ».
+ 'config-invalid-db-prefix' => 'Préfixe de la base de données non valide « $1 ».
Il ne peut contenir que des lettres latines (a-z, A-Z), des chiffres (0-9), des caractères de soulignement (_) et des tirets (-).',
'config-connection-error' => '$1.
Vérifier le nom d’hôte, le nom d’utilisateur et le mot de passe ci-dessous puis réessayer.',
- 'config-invalid-schema' => 'Schéma invalide pour MediaWiki « $1 ».
+ 'config-invalid-schema' => 'Schéma invalide pour MediaWiki « $1 ».
Utilisez seulement des lettres latines (a-z, A-Z), des chiffres (0-9) et des caractères de soulignement (_).',
'config-db-sys-create-oracle' => "L'installateur ne reconnaît que les compte SYSDBA lors de la création d'un nouveau compte.",
'config-db-sys-user-exists-oracle' => 'Le compte « $1 » existe déjà. Un SYSDBA peut seulement servir à créer un nouveau comtpe.',
'config-postgres-old' => 'PostgreSQL $1 ou version ultérieure est requis, vous avez $2.',
- 'config-sqlite-name-help' => "Choisir un nom qui identifie votre wiki.
-Ne pas utiliser des espaces ou des traits d'union.
+ 'config-sqlite-name-help' => "Choisir un nom qui identifie votre wiki.
+Ne pas utiliser des espaces ou des traits d'union.
Il sera utilisé pour le fichier de données SQLite.",
'config-sqlite-parent-unwritable-group' => "Impossible de créer le répertoire de données <nowiki><code>$1</code></nowiki>, parce que le répertoire parent <nowiki><code>$2</code></nowiki> n'est pas accessible en écriture par le serveur Web.
-L'utilisateur du serveur web est connu.
-Rendre le répertoire <nowiki><code>$3</code></nowiki> accessible en écriture pour continuer.
-Sur un système UNIX/Linux, saisir :
+L'utilisateur du serveur web est connu.
+Rendre le répertoire <nowiki><code>$3</code></nowiki> accessible en écriture pour continuer.
+Sur un système UNIX/Linux, saisir :
-<pre>cd $2
-mkdir $3
-chgrp $4 $3
+<pre>cd $2
+mkdir $3
+chgrp $4 $3
chmod g+w $3</pre>",
- 'config-sqlite-parent-unwritable-nogroup' => "Impossible de créer le répertoire de données <nowiki><code>$1</code></nowiki>, parce que le répertoire parent <nowiki><code>$2</code></nowiki> n'est pas accessible en écriture par le serveur Web.
+ 'config-sqlite-parent-unwritable-nogroup' => "Impossible de créer le répertoire de données <nowiki><code>$1</code></nowiki>, parce que le répertoire parent <nowiki><code>$2</code></nowiki> n'est pas accessible en écriture par le serveur Web.
L'utilisateur du serveur web est inconnu.
-Rendre le répertoire <nowiki><code>$3</code></nowiki> globalement accessible en écriture pour continuer.
-Sur un système UNIX/Linux, saisir :
+Rendre le répertoire <nowiki><code>$3</code></nowiki> globalement accessible en écriture pour continuer.
+Sur un système UNIX/Linux, saisir :
-<pre>cd $2
-mkdir $3
+<pre>cd $2
+mkdir $3
chmod a+w $3</pre>",
'config-sqlite-mkdir-error' => "Erreur de création du répertoire de données « $1 ».
Vérifiez l'emplacement et essayez à nouveau.",
- 'config-sqlite-dir-unwritable' => "Impossible d'écrire dans le répertoire « $1 ».
+ 'config-sqlite-dir-unwritable' => "Impossible d'écrire dans le répertoire « $1 ».
Changer les permissions de sorte que le serveur peut y écrire et essayez à nouveau.",
'config-sqlite-connection-error' => '$1.
@@ -3497,13 +4624,13 @@ Vérifier le répertoire des données et le nom de la base de données ci-dessou
'config-sqlite-readonly' => "Le fichier <code>$1</code> n'est pas accessible en écriture.",
'config-sqlite-cant-create-db' => 'Impossible de créer le fichier de base de données <code>$1</code>.',
'config-sqlite-fts3-downgrade' => 'PHP ne vient pas avec FTS3, les tables sont diminuées.',
- 'config-can-upgrade' => "Il y a des tables MediaWiki dans cette base de données.
+ 'config-can-upgrade' => "Il y a des tables MediaWiki dans cette base de données.
Pour les mettre au niveau de MediaWiki $1, cliquez sur '''Continuer'''.",
- 'config-upgrade-done' => "Mise à jour complétée.
+ 'config-upgrade-done' => "Mise à jour complétée.
-Vous pouvez maintenant [$1 commencer à utiliser votre wiki].
+Vous pouvez maintenant [$1 commencer à utiliser votre wiki].
-Si vous souhaitez régénérer votre fichier <code>LocalSettings.php</code>, cliquez sur le bouton ci-dessous.
+Si vous souhaitez régénérer votre fichier <code>LocalSettings.php</code>, cliquez sur le bouton ci-dessous.
Ce '''n'est pas recommandé''' sauf si vous rencontrez des problèmes avec votre wiki.",
'config-upgrade-done-no-regenerate' => 'Mise à jour terminée.
@@ -3515,21 +4642,27 @@ Vous pouvez maintenant [$1 commencer à utiliser votre wiki].',
'config-db-web-help' => "Sélectionnez le nom d'utilisateur et le mot de passe que le serveur web utilisera pour se connecter au serveur de base de données pendant le fonctionnement habituel du wiki.",
'config-db-web-account-same' => "Utilisez le même compte que pour l'installation",
'config-db-web-create' => "Créez le compte s'il n'existe pas déjà",
- 'config-db-web-no-create-privs' => "Le compte que vous avez spécifié pour l'installation n'a pas de privilèges suffisants pour créer un compte.
+ 'config-db-web-no-create-privs' => "Le compte que vous avez spécifié pour l'installation n'a pas de privilèges suffisants pour créer un compte.
Le compte que vous spécifiez ici doit déjà exister.",
'config-mysql-engine' => 'Moteur de stockage :',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
- 'config-mysql-engine-help' => "'''InnoDB''' est presque toujours la meilleure option, car il supporte bien l'[http://fr.wikipedia.org/wiki/Ordonnancement_dans_les_syst%C3%A8mes_d%27exploitation ordonnancement].
+ 'config-mysql-myisam-dep' => "''' Avertissement ''': vous avez sélectionné MyISAM comme moteur de stockage pour MySQL, ce qui n'est pas recommandé pour une utilisation avec MediaWiki, parce que:
+ * il supporte à peine la simultanéité en raison de verrouillage de table
+ * il est plus sujet à la corruption que les autres moteurs
+ * le codebase MediaWiki ne gère pas toujours MyISAM comme il se doit
+Si votre installation MySQL supporte InnoDB, il est fortement recommandé que vous le choisissez plutôt. Si votre installation MySQL ne supporte pas les tables InnoDB, il est peut-être temps de faire une une mise à niveau.",
+ 'config-mysql-engine-help' => "'''InnoDB''' est presque toujours la meilleure option, car il supporte bien l'[http://fr.wikipedia.org/wiki/Ordonnancement_dans_les_syst%C3%A8mes_d%27exploitation ordonnancement].
'''MyISAM''' peut être plus rapide dans les installations monoposte ou en lecture seule. Les bases de données MyISAM ont tendance à se corrompre plus souvent que celles d'InnoDB.",
'config-mysql-charset' => 'Jeu de caractères de la base de données :',
'config-mysql-binary' => 'Binaire',
'config-mysql-utf8' => 'UTF-8',
- 'config-mysql-charset-help' => "En ''mode binaire'', MediaWiki stocke le texte au format UTF-8 dans la base de données. C'est plus efficace que le ''UTF-8 mode'' de MySQL, et vous permet d'utiliser toute la gamme des caractères Unicode.
+ 'config-mysql-charset-help' => "En ''mode binaire'', MediaWiki stocke le texte au format UTF-8 dans la base de données. C'est plus efficace que le ''UTF-8 mode'' de MySQL, et vous permet d'utiliser toute la gamme des caractères Unicode.
-En ''mode binaire'', MediaWiki stocke le texte UTF-8 dans des champs binaires de la base de données. C'est plus efficace que le ''mode UTF-8'' de MySQL, et vous permet d'utiliser toute la gamme des caractères Unicode.
-En ''mode UTF-8'', MySQL connaîtra le jeu de caractères de vos données et pourra présenter et convertir les données de manière appropriée, mais il ne vous laissera pas stocker les caractères au-dessus du [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingue de base] (en anglais).",
+En ''mode binaire'', MediaWiki stocke le texte UTF-8 dans des champs binaires de la base de données. C'est plus efficace que le ''mode UTF-8'' de MySQL, et vous permet d'utiliser toute la gamme des caractères Unicode.
+En ''mode UTF-8'', MySQL connaîtra le jeu de caractères de vos données et pourra présenter et convertir les données de manière appropriée, mais il ne vous laissera pas stocker les caractères au-dessus du [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingue de base] (en anglais).",
+ 'config-ibm_db2-low-db-pagesize' => "Votre base de données DB2 a un espace de stockage par défaut avec un pagesize insuffisant. Le pagesize doit être au minimum '''32K'''.",
'config-site-name' => 'Nom du wiki :',
'config-site-name-help' => 'Il apparaîtra dans la barre de titre du navigateur et en divers autres endroits.',
'config-site-name-blank' => 'Entrez un nom de site.',
@@ -3538,21 +4671,21 @@ En ''mode UTF-8'', MySQL connaîtra le jeu de caractères de vos données et pou
'config-ns-site-name' => 'Même nom que le wiki : $1',
'config-ns-other' => 'Autre (préciser)',
'config-ns-other-default' => 'MonWiki',
- 'config-project-namespace-help' => "Suivant l'exemple de Wikipédia, plusieurs wikis gardent leurs pages de politique séparées de leurs pages de contenu, dans un ''espace de noms'' propre.
-Tous les titres de page de cet espace de noms commence par un préfixe défini, que vous pouvez spécifier ici.
+ 'config-project-namespace-help' => "Suivant l'exemple de Wikipédia, plusieurs wikis gardent leurs pages de politique séparées de leurs pages de contenu, dans un ''espace de noms'' propre.
+Tous les titres de page de cet espace de noms commence par un préfixe défini, que vous pouvez spécifier ici.
Traditionnellement, ce préfixe est dérivé du nom du wiki, mais il ne peut contenir des caractères de ponctuation tels que « # » ou « : ».",
- 'config-ns-invalid' => "L'espace de noms spécifié « <nowiki>$1</nowiki> » n'est pas valide.
+ 'config-ns-invalid' => "L'espace de noms spécifié « <nowiki>$1</nowiki> » n'est pas valide.
Spécifiez un espace de noms pour le projet.",
- 'config-ns-conflict' => "L'espace de noms spécifié « <nowiki>$1</nowiki> » est en conflit avec un espace de noms par défaut de MediaWiki.
+ 'config-ns-conflict' => "L'espace de noms spécifié « <nowiki>$1</nowiki> » est en conflit avec un espace de noms par défaut de MediaWiki.
Choisir un autre espace de noms.",
'config-admin-box' => 'Compte administrateur',
'config-admin-name' => 'Votre nom :',
'config-admin-password' => 'Mot de passe :',
'config-admin-password-confirm' => 'Saisir à nouveau le mot de passe :',
- 'config-admin-help' => "Entrez votre nom d'utilisateur préféré ici, par exemple « Jean Blogue ».
+ 'config-admin-help' => "Entrez votre nom d'utilisateur préféré ici, par exemple « Jean Blogue ».
C'est le nom que vous utiliserez pour vous connecter au wiki.",
'config-admin-name-blank' => "Entrez un nom d'administrateur.",
- 'config-admin-name-invalid' => "Le nom d'utilisateur spécifié « <nowiki>$1</nowiki> » n'est pas valide.
+ 'config-admin-name-invalid' => "Le nom d'utilisateur spécifié « <nowiki>$1</nowiki> » n'est pas valide.
Indiquez un nom d'utilisateur différent.",
'config-admin-password-blank' => 'Entrez un mot de passe pour le compte administrateur.',
'config-admin-password-same' => "Le mot de passe doit être différent du nom d'utilisateur.",
@@ -3563,8 +4696,9 @@ Indiquez un nom d'utilisateur différent.",
'config-admin-error-password' => "Erreur interne lors de l'inscription d'un mot de passe pour l'administrateur « <nowiki>$1</nowiki> » : <pre>$2</pre>",
'config-admin-error-bademail' => 'Vous avez entré une adresse de courriel invalide',
'config-subscribe' => "Abonnez-vous à la [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce liste d'annonce des nouvelles versions] (la page peut afficher le texte en français).",
- 'config-subscribe-help' => "Il s'agit d'une liste de diffusion à faible volume utilisée servant à annoncer les nouvelles versions, y compris les versions améliorant la sécurité du logiciel.
+ 'config-subscribe-help' => "Il s'agit d'une liste de diffusion à faible volume utilisée servant à annoncer les nouvelles versions, y compris les versions améliorant la sécurité du logiciel.
Vous devriez y souscrire et mettre à jour votre version de MediaWiki lorsque de nouvelles versions sont publiées.",
+ 'config-subscribe-noemail' => "Vous avez essayé de vous abonner à la liste de diffusion des communiqués, sans fournir une adresse courriel ! S'il vous plaît, fournir une adresse électronique si vous souhaitez vous abonner à la liste de diffusion.",
'config-almost-done' => 'Vous avez presque fini !
Vous pouvez passer la configuration restante et installer immédiatement le wiki.',
'config-optional-continue' => 'Me poser davantage de questions.',
@@ -3580,33 +4714,33 @@ Avec MediaWiki, il est facile de vérifier les modifications récentes et de ré
Cependant, de nombreuses autres utilisations ont été trouvées au logiciel et il n’est pas toujours facile de convaincre tout le monde des bénéfices de l’esprit wiki.
Vous avez donc le choix.
-'''{{int:config-profile-wiki}}''' autorise quiconque à modifier, y compris sans s’identifier.
+'''{{int:config-profile-wiki}}''' autorise toute personne à modifier, y compris sans s’identifier.
'''{{int:config-profile-no-anon}}''' fournit plus de contrôle, par l’identification, mais peut rebuter les contributeurs occasionnels.
'''{{int:config-profile-fishbowl}}''' autorise la modification par les utilisateurs approuvés, mais le public peut toujours lire les pages et leur historique.
'''{{int:config-profile-private}}''' n’autorise que les utilisateurs approuvés à voir et modifier les pages.
-Des configurations de droits d’utilisateurs plus complexes sont disponibles après l'installation, voir la [http://www.mediawiki.org/wiki/Manual:User_rights page correspondante du manuel].",
+Des configurations de droits d’utilisateurs plus complexes sont disponibles après l'installation, voir la [//www.mediawiki.org/wiki/Manual:User_rights page correspondante du manuel].",
'config-license' => "Droits d'auteur et licence :",
'config-license-none' => 'Aucune licence en bas de page',
'config-license-cc-by-sa' => "Creative Commons attribution partage à l'identique",
+ 'config-license-cc-by' => 'Creative Commons Attribution',
'config-license-cc-by-nc-sa' => "Creative Commons attribution non commercial partage à l'identique",
- 'config-license-cc-0' => 'Creative Commons Zero',
- 'config-license-gfdl-old' => 'Licence de documentation libre GNU 1.2',
- 'config-license-gfdl-current' => 'Licence de documentation libre GNU 1.3 ou plus récent',
+ 'config-license-cc-0' => 'Creative Commons Zero (domaine public)',
+ 'config-license-gfdl' => 'GNU Free Documentation License 1.3 ou ultérieure',
'config-license-pd' => 'Domaine public',
'config-license-cc-choose' => 'Sélectionner une licence Creative Commons personnalisée',
'config-license-help' => "Beaucoup de wikis publics mettent l'ensemble des contributions sous [http://freedomdefined.org/Definition/Fr licence libre].
Cela contribue à créer un sentiment d'appartenance dans leur communauté et encourage les contributions sur le long terme.
-Ce n'est généralement pas nécessaire pour un wiki privé ou d'entreprise.
+Ce n'est généralement pas nécessaire pour un wiki privé ou d'entreprise.
Si vous souhaitez utiliser des textes de Wikipédia, et souhaitez que Wikipédia réutilise des textes de votre wiki, vous devriez choisir la [http://creativecommons.org/licenses/by-sa/3.0/deed.fr licence ''Creative Commons Attribution Share Alike''] (CC-by-sa).
-Wikipédia a déjà été publié selon les termes de la [http://fr.wikipedia.org/wiki/Licence_de_documentation_libre_GNU ''GNU Free Documentation License''] (GFDL).
-C'est encore une licence valide, mais elle possède des caractéristiques qui rendent difficiles la réutilisation et l'interprétation des textes.",
+Wikipédia a déjà été publié selon les termes de la [http://fr.wikipedia.org/wiki/Licence_de_documentation_libre_GNU ''GNU Free Documentation License''] (GFDL).
+C'est une licence valide, mais elle est difficile à comprendre. De plus, elle possède des caractéristiques qui rendent difficiles la réutilisation.",
'config-email-settings' => 'Paramètres de courriel',
'config-enable-email' => 'Activer les courriels sortants',
- 'config-enable-email-help' => 'Si vous souhaitez utiliser le courriel, vous devez [http://www.php.net/manual/en/mail.configuration.php configurer des paramètres PHP] (texte en anglais).
+ 'config-enable-email-help' => 'Si vous souhaitez utiliser le courriel, vous devez [http://www.php.net/manual/en/mail.configuration.php configurer des paramètres PHP] (texte en anglais).
Si vous ne voulez pas du service de courriel, vous pouvez le désactiver ici.',
'config-email-user' => 'Activer les courriels de utilisateur à utilisateur',
'config-email-user-help' => "Permet à tous les utilisateurs d'envoyer des courriels à d'autres utilisateurs si cela est activé dans leurs préférences.",
@@ -3615,59 +4749,59 @@ Si vous ne voulez pas du service de courriel, vous pouvez le désactiver ici.',
'config-email-watchlist' => 'Activer la notification de la liste de suivi',
'config-email-watchlist-help' => "Permet aux utilisateurs de recevoir des notifications à propos des pages qu'ils ont en suivi (si cette préférence est activée).",
'config-email-auth' => "Activer l'authentification par courriel",
- 'config-email-auth-help' => "Si cette option est activée, les utilisateurs doivent confirmer leur adresse de courriel en utilisant l'hyperlien envoyé à chaque fois qu'ils la définissent ou la modifient.
+ 'config-email-auth-help' => "Si cette option est activée, les utilisateurs doivent confirmer leur adresse de courriel en utilisant l'hyperlien envoyé à chaque fois qu'ils la définissent ou la modifient.
Seules les adresses authentifiées peuvent recevoir des courriels des autres utilisateurs ou lorsqu'il y a des notifications de modification.
L'activation de cette option est '''recommandée''' pour les wikis publics en raison d'abus potentiels des fonctionnalités de courriels.",
'config-email-sender' => 'Adresse de courriel de retour :',
- 'config-email-sender-help' => "Entrez l'adresse de courriel à utiliser comme adresse de retour des courriels sortant.
+ 'config-email-sender-help' => "Entrez l'adresse de courriel à utiliser comme adresse de retour des courriels sortant.
Les courriels rejetés y seront envoyés.
De nombreux serveurs de courriels exigent au moins un [http://fr.wikipedia.org/wiki/Nom_de_domaine nom de domaine] valide.",
'config-upload-settings' => 'Téléchargement des images et des fichiers',
'config-upload-enable' => 'Activer le téléchargement des fichiers',
- 'config-upload-help' => "Le téléchargement des fichiers expose votre serveur à des risques de sécurité.
-Pour plus d'informations, lire la section [http://www.mediawiki.org/wiki/Manual:Security ''Security''] du manuel d'installation (en anglais).
+ 'config-upload-help' => "Le téléchargement des fichiers expose votre serveur à des risques de sécurité.
+Pour plus d'informations, lire la section [//www.mediawiki.org/wiki/Manual:Security ''Security''] du manuel d'installation (en anglais).
-Pour autoriser le téléchargement des fichiers, modifier le mode du sous-répertoire <code>images</code> qui se situe sous le répertoire racine de MediaWiki.
+Pour autoriser le téléchargement des fichiers, modifier le mode du sous-répertoire <code>images</code> qui se situe sous le répertoire racine de MediaWiki.
Ensuite, activez cette option.",
'config-upload-deleted' => 'Répertoire pour les fichiers supprimés :',
- 'config-upload-deleted-help' => 'Choisissez un répertoire qui servira à archiver les fichiers supprimés.
+ 'config-upload-deleted-help' => 'Choisissez un répertoire qui servira à archiver les fichiers supprimés.
Idéalement, il ne devrait pas être accessible depuis le web.',
'config-logo' => 'URL du logo :',
- 'config-logo-help' => "L'habillage (''skin'') par défaut de MediaWiki comprend l'espace pour un logo de 135x160 pixels dans le coin supérieur gauche.
-Téléchargez une image de la taille appropriée, et entrez l'URL ici.
+ 'config-logo-help' => "L'habillage (''skin'') par défaut de MediaWiki comprend l'espace pour un logo de 135x160 pixels dans le coin supérieur gauche.
+Téléchargez une image de la taille appropriée, et entrez l'URL ici.
Si vous ne voulez pas d'un logo, laissez cette case vide.",
'config-instantcommons' => "Activer ''InstantCommons''",
- 'config-instantcommons-help' => "[http://www.mediawiki.org/wiki/InstantCommons InstantCommons] est un service qui permet d'utiliser les images, les sons et les autres médias disponibles sur le site [http://commons.wikimedia.org/ Wikimedia Commons].
-Pour se faire, il faut que MediaWiki accède à Internet.
+ 'config-instantcommons-help' => "[//www.mediawiki.org/wiki/InstantCommons InstantCommons] est un service qui permet d'utiliser les images, les sons et les autres médias disponibles sur le site [//commons.wikimedia.org/ Wikimedia Commons].
+Pour se faire, il faut que MediaWiki accède à Internet.
Pour plus d'informations sur ce service, y compris les instructions sur la façon de le configurer pour d'autres wikis que Wikimedia Commons, consultez le [http://mediawiki.org/wiki/Manual:\$wgForeignFileRepos manuel] (en anglais).",
- 'config-cc-error' => "Le sélection d'une licence ''Creative Commons'' n'a donné aucun résultat.
+ 'config-cc-error' => "Le sélection d'une licence ''Creative Commons'' n'a donné aucun résultat.
Entrez le nom de la licence manuellement.",
'config-cc-again' => 'Choisissez à nouveau...',
'config-cc-not-chosen' => "Choisissez une licence ''Creative Commons'' et cliquez sur « Continuer ».",
'config-advanced-settings' => 'Configuration avancée',
'config-cache-options' => 'Paramètres pour la mise en cache des objets:',
- 'config-cache-help' => "La mise en cache des objets améliore la vitesse de MediaWiki en mettant en cache les données fréquemment utilisées.
+ 'config-cache-help' => "La mise en cache des objets améliore la vitesse de MediaWiki en mettant en cache les données fréquemment utilisées.
Les sites de taille moyenne à grande sont fortement encouragés à l'activer. Les petits sites y verront également des avantages.",
'config-cache-none' => 'Aucune mise en cache (aucune fonctionnalité supprimée, mais la vitesse peut changer sur les wikis importants)',
'config-cache-accel' => 'Mise en cache des objets PHP (APC, eAccelerator, XCache ou WinCache)',
'config-cache-memcached' => 'Utiliser Memcached (nécessite une installation et une configuration supplémentaires)',
'config-memcached-servers' => 'serveurs pour Memcached :',
- 'config-memcached-help' => 'Liste des adresses IP à utiliser pour Memcached.
-Elles doivent être séparés par des virgules et vous devez spécifier le port à utiliser. Par exemple :
- 127.0.0.1:11211
+ 'config-memcached-help' => 'Liste des adresses IP à utiliser pour Memcached.
+Elles doivent être séparés par des virgules et vous devez spécifier le port à utiliser. Par exemple :
+ 127.0.0.1:11211
192.168.1.25:1234',
'config-memcache-needservers' => 'Vous avez sélectionné Memcached comme type de cache, mais ne précisez pas de serveur.',
'config-memcache-badip' => 'Vous avez entré une adresse IP invalide pour Memcached: $1.',
- 'config-memcache-noport' => "Vous n'avez pas entré un port pour le serveur Memcached : $1.
+ 'config-memcache-noport' => "Vous n'avez pas entré un port pour le serveur Memcached : $1.
Si vous ne le connaissez pas, la valeur par défaut est 11211.",
'config-memcache-badport' => 'Les numéros de port de Memcached sont situés entre $1 et $2.',
'config-extensions' => 'Extensions',
- 'config-extensions-help' => 'Les extensions énumérées ci-dessus ont été détectées dans votre répertoire <code>./extensions</code>.
+ 'config-extensions-help' => 'Les extensions énumérées ci-dessus ont été détectées dans votre répertoire <code>./extensions</code>.
Elles peuvent nécessiter une configuration supplémentaire, mais vous pouvez les activer maintenant',
- 'config-install-alreadydone' => "'''Attention''': Vous semblez avoir déjà installé MediaWiki et tentez de l'installer à nouveau.
+ 'config-install-alreadydone' => "'''Attention''': Vous semblez avoir déjà installé MediaWiki et tentez de l'installer à nouveau.
S'il vous plaît, allez à la page suivante.",
'config-install-begin' => "En appuyant sur {{int:config-continue}}, vous commencerez l'installation de MediaWiki.
Si vous voulez apporter des modifications, appuyez sur Retour.",
@@ -3675,49 +4809,327 @@ Si vous voulez apporter des modifications, appuyez sur Retour.",
'config-install-step-failed' => 'échec',
'config-install-extensions' => 'Inclusion des extensions',
'config-install-database' => 'Création de la base de données',
+ 'config-install-schema' => 'Création de schéma',
'config-install-pg-schema-not-exist' => "Le schéma PostgreSQL n'existe pas",
- 'config-install-pg-schema-failed' => "Échec lors de la création des tables.
+ 'config-install-pg-schema-failed' => "Échec lors de la création des tables.
Assurez-vous que l'utilisateur « $1 » peut écrire selon le schéma « $2 ».",
'config-install-pg-commit' => 'Validation des modifications',
'config-install-pg-plpgsql' => 'Vérification du language PL/pgSQL',
'config-pg-no-plpgsql' => 'Vous devez installer le langage PL/pgSQL dans la base de données $1',
'config-pg-no-create-privs' => "Le compte que vous avez spécifié pour l'installation n'a pas suffisamment de privilèges pour créer un compte.",
+ 'config-pg-not-in-role' => "Le compte que vous avez spécifié pour l'utilisateur web existe déjà !
+Le compte que vous avez spécifié pour l'installation n'est pas un super-utilisateur et n'est pas membre du rôle de l'internaute, il est donc incapable de créer des objets appartenant à l'utilisateur web.!
+
+MediaWiki exige actuellement que les tableaux soient possédés par un utilisateur web. S'il vous plaît, spécifier un autre nom de compte web, ou cliquez sur \"retour\" et spécifier un utilisateur avec les privilèges suffisants.",
'config-install-user' => "Création d'un utilisateur de la base de données",
'config-install-user-alreadyexists' => "L'utilisateur « $1 » existe déjà.",
'config-install-user-create-failed' => "Échec lors de la création de l'utilisateur « $1 » : $2",
'config-install-user-grant-failed' => "Échec lors de l'ajout de permissions à l'utilisateur « $1 » : $2",
+ 'config-install-user-missing' => 'L\'utilisateur "$1" n\'existe pas.',
+ 'config-install-user-missing-create' => 'L\'utilisateur "$1" n\'existe pas !
+S\'il vous plaît, cocher "Compte de créer" dans la case ci-dessous si vous voulez le créer.',
'config-install-tables' => 'Création des tables',
- 'config-install-tables-exist' => "'''Avertissement:''' Les tables MediaWiki semblent déjà exister.
+ 'config-install-tables-exist' => "'''Avertissement:''' Les tables MediaWiki semblent déjà exister.
Création omise.",
'config-install-tables-failed' => "'''Erreur:''' échec lors de la création de la table avec l'erreur suivante: $1",
'config-install-interwiki' => 'Remplissage par défaut de la table des interwikis',
'config-install-interwiki-list' => 'Impossible de trouver le fichier <code>interwiki.list</code>.',
- 'config-install-interwiki-exists' => "'''Attention:''' La table des interwikis semble déjà contenir des entrées.
+ 'config-install-interwiki-exists' => "'''Attention:''' La table des interwikis semble déjà contenir des entrées.
La liste par défaut ne sera pas inscrite.",
'config-install-stats' => 'Initialisation des statistiques',
'config-install-keys' => 'Génération de la clé secrète',
+ 'config-insecure-keys' => "'''Avertissement''' : {{PLURAL:$2|Une clé de sécurité générée ($1) pendant l'installation n'est pas complètement sécuritaire. Envisagez de la modifier manuellement.|Des clés de sécurité générées ($1) pendant l'installation ne sont pas complètement sécuritaires. Envisagez de les modifier manuellement.}}",
'config-install-sysop' => 'Création du compte administrateur',
- 'config-install-subscribe-fail' => "Impossible de s'abonner à mediawiki-announce",
+ 'config-install-subscribe-fail' => "Impossible de s'abonner à mediawiki-announce : $1",
+ 'config-install-subscribe-notpossible' => 'cURL n’est pas installé et allow_url_fopen n’est pas disponible.',
'config-install-mainpage' => 'Création de la page principale avec un contenu par défaut',
'config-install-extension-tables' => 'Création de tables pour les extensions activées',
'config-install-mainpage-failed' => 'Impossible d’insérer la page principale: $1',
- 'config-install-done' => "'''Félicitations!'''
-Vous avez réussi à installer MediaWiki.
+ 'config-install-done' => "'''Félicitations!'''
+Vous avez réussi à installer MediaWiki.
Le programme d'installation a généré <code>LocalSettings.php</code>, un fichier qui contient tous les paramètres de configuration.
Si le téléchargement n'a pas été offert, ou que vous l'avez annulé, vous pouvez démarrer à nouveau le téléchargement en cliquant ce lien :
-$3
+$3
-'''Note''': Si vous ne le faites pas maintenant, ce fichier de configuration généré ne sera pas disponible plus tard si vous quittez l'installation sans le télécharger.
+'''Note''': Si vous ne le faites pas maintenant, ce fichier de configuration généré ne sera pas disponible plus tard si vous quittez l'installation sans le télécharger.
Lorsque c'est fait, vous pouvez '''[$2 accéder à votre wiki]'''.",
'config-download-localsettings' => 'Télécharger LocalSettings.php',
'config-help' => 'aide',
+ 'mainpagetext' => "'''MediaWiki a été installé avec succès.'''",
+ 'mainpagedocfooter' => 'Consultez le [//meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.
+
+== Démarrer avec MediaWiki ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
+* [//www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]',
+);
+
+/** Cajun French (Français cadien) */
+$messages['frc'] = array(
+ 'mainpagetext' => "'''Vous avez bien installé MediaWiki.'''",
+ 'mainpagedocfooter' => 'Lisez la [//meta.wikimedia.org/wiki/Help:Contents Guide des Useurs] pour apprendre à user le wiki software.
+
+== Pour Commencer ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Réglage]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki: Questions Souvent Posées]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki Liste à Malle]',
+);
+
+/** Franco-Provençal (Arpetan)
+ * @author ChrisPtDe
+ */
+$messages['frp'] = array(
+ 'config-desc' => 'La programeria d’enstalacion de MediaWiki',
+ 'config-title' => 'Enstalacion de MediaWiki $1',
+ 'config-information' => 'Enformacions',
+ 'config-localsettings-key' => 'Cllâf de misa a jorn :',
+ 'config-session-error' => 'Èrror pendent l’emmodâ de la sèance : $1',
+ 'config-your-language' => 'Voutra lengoua :',
+ 'config-wiki-language' => 'Lengoua du vouiqui :',
+ 'config-back' => '↠Retôrn',
+ 'config-continue' => 'Continuar →',
+ 'config-page-language' => 'Lengoua',
+ 'config-page-welcome' => 'Benvegnua dessus MediaWiki !',
+ 'config-page-dbconnect' => 'Sè branchiér a la bâsa de balyês',
+ 'config-page-upgrade' => 'Betar a jorn l’enstalacion ègzistenta',
+ 'config-page-dbsettings' => 'Paramètres de la bâsa de balyês',
+ 'config-page-name' => 'Nom',
+ 'config-page-options' => 'Chouèx',
+ 'config-page-install' => 'Enstalar',
+ 'config-page-complete' => 'Chavonâ !',
+ 'config-page-restart' => 'Tornar emmodar l’enstalacion',
+ 'config-page-readme' => 'Liéséd-mè',
+ 'config-page-releasenotes' => 'Notes de publecacion',
+ 'config-page-copying' => 'Copia',
+ 'config-page-upgradedoc' => 'Misa a jorn',
+ 'config-page-existingwiki' => 'Vouiqui ègzistent',
+ 'config-env-php' => 'PHP $1 est enstalâ.',
+ 'config-env-php-toolow' => 'PHP $1 est enstalâ.
+Portant, MediaWiki at fôta de PHP $2 ou ben ples hôt.',
+ 'config-memory-raised' => 'Lo paramètre <code>memory_limit</code> de PHP ére a $1, portâ a $2.',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] est enstalâ',
+ 'config-apc' => '[http://www.php.net/apc APC] est enstalâ',
+ 'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] est enstalâ',
+ 'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] est enstalâ',
+ 'config-diff3-bad' => 'GNU diff3 entrovâblo.',
+ 'config-db-type' => 'Tipo de bâsa de balyês :',
+ 'config-db-host' => 'Hôto de la bâsa de balyês :',
+ 'config-db-host-oracle' => 'TNS de la bâsa de balyês :',
+ 'config-db-wiki-settings' => 'Identifiar cél vouiqui',
+ 'config-db-name' => 'Nom de la bâsa de balyês :',
+ 'config-db-name-oracle' => 'Plan de bâsa de balyês :',
+ 'config-db-install-account' => 'Compto utilisator por l’enstalacion',
+ 'config-db-username' => 'Nom d’utilisator de la bâsa de balyês :',
+ 'config-db-password' => 'Mot de pâssa de la bâsa de balyês :',
+ 'config-db-wiki-account' => 'Compto utilisator por l’opèracion normala',
+ 'config-db-prefix' => 'Prèfixo de les trâbles de la bâsa de balyês :',
+ 'config-db-charset' => 'Juè de caractèros de la bâsa de balyês',
+ 'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 binèro',
+ 'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
+ 'config-charset-mysql4' => 'MySQL 4.0 rètrocompatiblo UTF-8',
+ 'config-mysql-old' => 'MySQL $1 ou ben ples novél est nècèssèro, vos avéd $2.',
+ 'config-db-port' => 'Pôrt de la bâsa de balyês :',
+ 'config-db-schema' => 'Plan por MediaWiki',
+ 'config-sqlite-dir' => 'Dossiér de les balyês SQLite :',
+ 'config-oracle-def-ts' => "Èspâço de stocâjo (''tablespace'') per dèfôt :",
+ 'config-oracle-temp-ts' => "Èspâço de stocâjo (''tablespace'') temporèro :",
+ 'config-type-ibm_db2' => 'IBM DB2',
+ 'config-header-mysql' => 'Paramètres de MySQL',
+ 'config-header-postgres' => 'Paramètres de PostgreSQL',
+ 'config-header-sqlite' => 'Paramètres de SQLite',
+ 'config-header-oracle' => 'Paramètres d’Oracle',
+ 'config-header-ibm_db2' => 'Paramètres d’IBM DB2',
+ 'config-invalid-db-type' => 'Tipo de bâsa de balyês envalido',
+ 'config-missing-db-name' => 'Vos dête buchiér una valor por « Nom de la bâsa de balyês »',
+ 'config-missing-db-host' => 'Vos dête buchiér una valor por « Hôto de la bâsa de balyês »',
+ 'config-missing-db-server-oracle' => 'Vos dête buchiér una valor por « TNS de la bâsa de balyês »',
+ 'config-sqlite-readonly' => 'Lo fichiér <code>$1</code> est pas accèssiblo en ècritura.',
+ 'config-regenerate' => 'Refâre LocalSettings.php →',
+ 'config-show-table-status' => 'Falyita de la requéta SHOW TABLE STATUS !',
+ 'config-db-web-account' => 'Compto de la bâsa de balyês por l’accès vouèbe',
+ 'config-db-web-account-same' => 'Utilisâd lo mémo compto que por l’enstalacion',
+ 'config-db-web-create' => 'Féte lo compto s’ègziste p’oncor',
+ 'config-mysql-engine' => 'Motor de stocâjo :',
+ 'config-mysql-innodb' => 'InnoDB',
+ 'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-charset' => 'Juè de caractèros de la bâsa de balyês :',
+ 'config-mysql-binary' => 'Binèro',
+ 'config-mysql-utf8' => 'UTF-8',
+ 'config-site-name' => 'Nom du vouiqui :',
+ 'config-site-name-blank' => 'Buchiéd un nom de seto.',
+ 'config-project-namespace' => 'Èspâço de noms du projèt :',
+ 'config-ns-generic' => 'Projèt',
+ 'config-ns-site-name' => 'Mémo nom que lo vouiqui : $1',
+ 'config-ns-other' => 'Ôtro (spècefiar)',
+ 'config-ns-other-default' => 'MonVouiqui',
+ 'config-admin-box' => 'Compto administrator',
+ 'config-admin-name' => 'Voutron nom :',
+ 'config-admin-password' => 'Mot de pâssa :',
+ 'config-admin-password-confirm' => 'Tornar buchiér lo mot de pâssa :',
+ 'config-admin-name-blank' => 'Buchiéd un nom d’administrator.',
+ 'config-admin-password-blank' => 'Buchiéd un mot de pâssa por lo compto administrator.',
+ 'config-admin-email' => 'Adrèce èlèctronica :',
+ 'config-optional-continue' => 'Mè posar més de quèstions.',
+ 'config-profile' => 'Profil des drêts d’utilisator :',
+ 'config-profile-wiki' => 'Vouiqui tradicionâl',
+ 'config-profile-no-anon' => 'Crèacion de compto nècèssèra',
+ 'config-profile-fishbowl' => 'Ren que los èditors ôtorisâs',
+ 'config-profile-private' => 'Vouiqui privâ',
+ 'config-license' => 'Drêts d’ôtor et licence :',
+ 'config-license-none' => 'Gins de licence d’avâl la pâge',
+ 'config-license-cc-by-sa' => 'Creative Commons patèrnitât - partâjo a l’identico',
+ 'config-license-cc-by' => 'Creative Commons patèrnitât',
+ 'config-license-cc-by-nc-sa' => 'Creative Commons patèrnitât pas comèrciâla - partâjo a l’identico',
+ 'config-license-cc-0' => 'Creative Commons Zero (domêno publico)',
+ 'config-license-gfdl' => 'Licence de documentacion abada GNU 1.3 ou ben ples novèla',
+ 'config-license-pd' => 'Domêno publico',
+ 'config-license-cc-choose' => 'Chouèsir una licence Creative Commons pèrsonalisâ',
+ 'config-email-settings' => 'Paramètres de mèssageria èlèctronica',
+ 'config-enable-email' => 'Activar los mèssâjos que sôrtont',
+ 'config-email-user' => 'Activar los mèssâjos d’utilisator a utilisator',
+ 'config-email-usertalk' => 'Activar la notificacion de les pâges de discussion ux utilisators',
+ 'config-email-watchlist' => 'Activar la notificacion de la lista de survelyence',
+ 'config-email-auth' => 'Activar l’ôtenticacion per mèssageria èlèctronica',
+ 'config-email-sender' => 'Adrèce èlèctronica de retôrn :',
+ 'config-upload-settings' => 'Tèlèchargement de les émâges et des fichiérs',
+ 'config-upload-enable' => 'Activar lo tèlèchargement des fichiérs',
+ 'config-upload-deleted' => 'Dossiér por los fichiérs suprimâs :',
+ 'config-logo' => 'URL du logô :',
+ 'config-instantcommons' => 'Activar Instant Commons',
+ 'config-cc-again' => 'Tornâd chouèsir...',
+ 'config-advanced-settings' => 'Configuracion avanciê',
+ 'config-cache-options' => 'Paramètres por la misa en cache de les chouses :',
+ 'config-cache-accel' => 'Misa en cache de les chouses PHP (APC, eAccelerator, XCache ou ben WinCache)',
+ 'config-memcached-servers' => 'Sèrvors por memcached :',
+ 'config-extensions' => 'Èxtensions',
+ 'config-install-step-done' => 'fêt',
+ 'config-install-step-failed' => 'falyita',
+ 'config-install-extensions' => 'Encllusion de les èxtensions',
+ 'config-install-database' => 'Crèacion de la bâsa de balyês',
+ 'config-install-schema' => 'Crèacion de plan',
+ 'config-install-pg-schema-not-exist' => 'Lo plan PostgreSQL ègziste pas',
+ 'config-install-pg-commit' => 'Validacion des changements',
+ 'config-install-pg-plpgsql' => 'Contrôlo du lengâjo PL/pgSQL',
+ 'config-install-user' => 'Crèacion d’un utilisator de la bâsa de balyês',
+ 'config-install-user-alreadyexists' => 'L’utilisator « $1 » ègziste ja',
+ 'config-install-user-create-failed' => 'Falyita pendent la crèacion a l’utilisator « $1 » : $2',
+ 'config-install-user-grant-failed' => 'Falyita pendent l’aponsa de pèrmissions a l’utilisator « $1 » : $2',
+ 'config-install-tables' => 'Crèacion de les trâbles',
+ 'config-install-interwiki' => 'Remplissâjo per dèfôt de la trâbla des entèrvouiquis',
+ 'config-install-interwiki-list' => 'Empossiblo de trovar lo fichiér <code>interwiki.list</code>.',
+ 'config-install-stats' => 'Inicialisacion de les statistiques',
+ 'config-install-keys' => 'G·ènèracion de les cllâfs secrètes',
+ 'config-install-sysop' => 'Crèacion du compto administrator',
+ 'config-install-subscribe-fail' => 'Empossiblo de s’abonar a mediawiki-announce : $1',
+ 'config-install-mainpage' => 'Crèacion de la pâge principâla avouéc un contegnu per dèfôt',
+ 'config-install-extension-tables' => 'Crèacion de trâbles por les èxtensions activâs',
+ 'config-install-mainpage-failed' => 'Empossiblo d’entrebetar la pâge principâla : $1',
+ 'config-download-localsettings' => 'Tèlèchargiér LocalSettings.php',
+ 'config-help' => 'éde',
+ 'mainpagetext' => "'''MediaWiki at étâ enstalâ avouéc reusséta.'''",
+ 'mainpagedocfooter' => 'Vêde lo [//meta.wikimedia.org/wiki/Aide:Contenu guido d’utilisator] por més d’enformacions sur l’usâjo de la programeria vouiqui.
+
+== Emmodar avouéc MediaWiki ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista des paramètres de configuracion]
+* [//www.mediawiki.org/wiki/Manual:FAQ/fr FDQ sur MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discussion sur les distribucions de MediaWiki]',
+);
+
+/** Northern Frisian (Nordfriisk)
+ * @author Pyt
+ */
+$messages['frr'] = array(
+ 'mainpagetext' => "'''MediaWiki wörd ma erfolch instaliird.'''",
+ 'mainpagedocfooter' => 'Heelp tu jü benjüting än konfigurasjoon foon e Wiki-software fanst dü önj dåt [//meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuch].
+
+
+== Startheelpe ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Liste der Konfigurationsvariablen]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
+);
+
+/** Friulian (Furlan) */
+$messages['fur'] = array(
+ 'mainpagetext' => "'''MediaWiki e je stade instalade cun sucès.'''",
+);
+
+/** Western Frisian (Frysk) */
+$messages['fy'] = array(
+ 'mainpagetext' => "'''MediaWiki-program goed ynstallearre.'''",
+ 'mainpagedocfooter' => "Rieplachtsje de [//meta.wikimedia.org/wiki/Help:Ynhâldsopjefte hantlieding] foar ynformaasje oer it gebrûk fan 'e wikisoftware.
+
+== Mear help oer Mediawiki ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings List mei ynstellings]
+* [//www.mediawiki.org/wiki/Manual:FAQ Faak stelde fragen (FAQ)]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglist foar oankundigings fan nije ferzjes]",
+);
+
+/** Irish (Gaeilge) */
+$messages['ga'] = array(
+ 'mainpagetext' => "'''D'éirigh le suiteáil MediaWiki.'''",
+ 'mainpagedocfooter' => 'Féach ar [//meta.wikimedia.org/wiki/MediaWiki_localisation doiciméid um conas an chomhéadán a athrú]
+agus an [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Lámhleabhar úsáideora] chun cabhair úsáide agus fíoraíochta a fháil.',
+);
+
+/** Gagauz (Gagauz) */
+$messages['gag'] = array(
+ 'mainpagetext' => "'''MediaWiki başarılan kuruldu.'''",
+ 'mainpagedocfooter' => "Vikilän iş uurunda bilgi almaa için [//meta.wikimedia.org/wiki/Help:Contents User's Guide] sayfasına bakınız
+
+== Eni başlayanlar için ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Simplified Gan script (‪赣语(简体)‬) */
+$messages['gan-hans'] = array(
+ 'mainpagetext' => "'''安装正MediaWiki喽。'''",
+ 'mainpagedocfooter' => 'å‚看[//meta.wikimedia.org/wiki/Help:Contents 用户指å—]里头会è¯åˆ°å•·ç”¨wiki软件
+
+== 开始使用 ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置设定列表]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki 平常问题解答]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki å‘布email清å•]',
+);
+
+/** Traditional Gan script (‪贛語(ç¹é«”)‬) */
+$messages['gan-hant'] = array(
+ 'mainpagetext' => "'''安è£æ­£MediaWikiå˜ã€‚'''",
+ 'mainpagedocfooter' => 'åƒçœ‹[//meta.wikimedia.org/wiki/Help:Contents 用戶指å—]裡頭會話到啷用wiki軟件
+
+== 開始使用 ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置設定列表]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki 平常å•é¡Œè§£ç­”]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈email清單]',
+);
+
+/** Scottish Gaelic (Gàidhlig)
+ * @author Akerbeltz
+ */
+$messages['gd'] = array(
+ 'mainpagetext' => "'''Chaidh MediaWiki a stàladh gu soirbheachail.'''",
+ 'mainpagedocfooter' => "Cuir sùil air [//meta.wikimedia.org/wiki/Help:Contents treòir nan cleachdaichean] airson fiosrachadh mu chleachdadh a' bhathar-bhog wiki.
+
+== Toiseach tòiseachaidh ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Liosta suidheachadh nan roghainnean]
+* [//www.mediawiki.org/wiki/Manual:FAQ CÀBHA MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liosta puist nan sgaoilidhean MediaWiki]",
);
/** Galician (Galego)
+ * @author Elisardojm
* @author Toliño
*/
$messages['gl'] = array(
@@ -3738,7 +5150,7 @@ $1',
'config-localsettings-incomplete' => 'Semella que o ficheiro LocalSettings.php existente está incompleto.
A variable $1 non está establecida.
Modifique o ficheiro LocalSettings.php de xeito que a variable quede establecida e prema en "Continuar".',
- 'config-localsettings-connection-error' => 'Atopouse un erro ao conectar coa base de datos empregando a configuración especificada no ficheiro LocalSettings.php ou no ficheiro AdminSettings.php. Corrixa esta configuración e inténteo de novo.
+ 'config-localsettings-connection-error' => 'Atopouse un erro ao conectar coa base de datos empregando a configuración especificada no ficheiro LocalSettings.php ou no ficheiro AdminSettings.php. Corrixa esta configuración e inténteo de novo.
$1',
'config-session-error' => 'Erro ao iniciar a sesión: $1',
@@ -3771,8 +5183,8 @@ Comprobe o seu php.ini e asegúrese de que en <code>session.save_path</code> est
'config-page-existingwiki' => 'Wiki existente',
'config-help-restart' => 'Quere eliminar todos os datos gardados e reiniciar o proceso de instalación?',
'config-restart' => 'Si, reiniciala',
- 'config-welcome' => '=== Comprobación do entorno ===
-Cómpre realizar unhas comprobacións básicas para ver se o entorno é axeitado para a instalación de MediaWiki.
+ 'config-welcome' => '=== Comprobación da contorna ===
+Cómpre realizar unhas comprobacións básicas para ver se a contorna é axeitada para a instalación de MediaWiki.
Deberá proporcionar os resultados destas comprobacións se necesita axuda durante a instalación.',
'config-copyright' => "=== Dereitos de autor e termos de uso ===
@@ -3780,22 +5192,22 @@ $1
Este programa é software libre; pode redistribuílo e/ou modificalo segundo os termos da licenza pública xeral GNU publicada pola Free Software Foundation; versión 2 ou (na súa escolla) calquera outra posterior.
-Este programa distribúese coa esperanza de que poida ser útil, pero '''sen ningunha garantía'''; nin sequera a garantía implícita de '''comercialización''' ou '''adecuación a unha finalidade específica'''.
+Este programa distribúese coa esperanza de que poida ser útil, pero '''sen garantía ningunha'''; nin sequera a garantía implícita de '''comercialización''' ou '''adecuación a unha finalidade específica'''.
Olle a licenza pública xeral GNU para obter máis detalles.
-Debería recibir <doclink href=Copying>unha copia da licenza pública xeral GNU</doclink> xunto ao programa; se non é así, escriba á Free Software Foundation, Inc., 51 da rúa Franklin, quinto andar, Boston, MA 02110-1301, Estados Unidos ou [http://www.gnu.org/copyleft/gpl.html lea a licenza en liña].",
- 'config-sidebar' => '* [http://www.mediawiki.org/wiki/MediaWiki/gl Páxina principal de MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents Guía de usuario]
-* [http://www.mediawiki.org/wiki/Manual:Contents Guía de administrador]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Preguntas máis frecuentes]
+Debería recibir <doclink href=Copying>unha copia da licenza pública xeral GNU</doclink> xunto ao programa; se non é así, escriba á Free Software Foundation, Inc., rúa Franklin, número 51, quinto andar, Boston, Massachusetts, 02110-1301, Estados Unidos de América ou [http://www.gnu.org/copyleft/gpl.html lea a licenza en liña].",
+ 'config-sidebar' => '* [//www.mediawiki.org/wiki/MediaWiki/gl Páxina principal de MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents Guía de usuario]
+* [//www.mediawiki.org/wiki/Manual:Contents Guía de administrador]
+* [//www.mediawiki.org/wiki/Manual:FAQ Preguntas máis frecuentes]
----
* <doclink href=Readme>Léame</doclink>
* <doclink href=ReleaseNotes>Notas de lanzamento</doclink>
* <doclink href=Copying>Copia</doclink>
* <doclink href=UpgradeDoc>Actualización</doclink>',
- 'config-env-good' => 'Rematou a comprobación do entorno.
+ 'config-env-good' => 'Rematou a comprobación da contorna.
Pode instalar MediaWiki.',
- 'config-env-bad' => 'Rematou a comprobación do entorno.
+ 'config-env-bad' => 'Rematou a comprobación da contorna.
Non pode instalar MediaWiki.',
'config-env-php' => 'Está instalado o PHP $1.',
'config-env-php-toolow' => 'Está instalado o PHP $1.
@@ -3803,17 +5215,16 @@ Porén, MediaWiki necesita o PHP $2 ou superior.',
'config-unicode-using-utf8' => 'Usando utf8_normalize.so de Brion Vibber para a normalización Unicode.',
'config-unicode-using-intl' => 'Usando a [http://pecl.php.net/intl extensión intl PECL] para a normalización Unicode.',
'config-unicode-pure-php-warning' => "'''Atención:''' A [http://pecl.php.net/intl extensión intl PECL] non está dispoñible para manexar a normalización Unicode; volvendo á implementación lenta de PHP puro.
-Se o seu sitio posúe un alto tráfico de visitantes, debería ler un chisco sobre a [http://www.mediawiki.org/wiki/Unicode_normalization_considerations normalización Unicode].",
+Se o seu sitio posúe un alto tráfico de visitantes, debería ler un chisco sobre a [//www.mediawiki.org/wiki/Unicode_normalization_considerations normalización Unicode].",
'config-unicode-update-warning' => "'''Atención:''' A versión instalada da envoltura de normalización Unicode emprega unha versión vella da biblioteca [http://site.icu-project.org/ do proxecto ICU].
-Debería [http://www.mediawiki.org/wiki/Unicode_normalization_considerations actualizar] se o uso de Unicode é importante para vostede.",
- 'config-no-db' => 'Non se puido atopar un controlador axeitado para a base de datos!',
- 'config-no-db-help' => 'Debe instalar un controlador de base de datos para PHP.
-Os tipos de base de datos soportados son os seguintes: $1.
+Debería [//www.mediawiki.org/wiki/Unicode_normalization_considerations actualizar] se o uso de Unicode é importante para vostede.",
+ 'config-no-db' => 'Non se puido atopar un controlador axeitado para a base de datos! Necesita instalar un controlador de base de datos para PHP.
+Os tipos de base de datos admitidos son os seguintes: $1.
Se está nun aloxamento compartido, pregunte ao seu provedor de hospedaxe para instalar un controlador de base de datos axeitado.
Se compilou o PHP vostede mesmo, reconfigúreo activando un cliente de base de datos, por exemplo, usando <code>./configure --with-mysql</code>.
Se instalou o PHP desde un paquete Debian ou Ubuntu, entón tamén necesita instalar o módulo php5-mysql.',
- 'config-no-fts3' => "'''Atención:''' O SQLite está compilado sen o [http://sqlite.org/fts3.html módulo FTS3]; as características de procura non estarán dispoñibles nesta instalación.",
+ 'config-no-fts3' => "'''Atención:''' O SQLite está compilado sen o [//sqlite.org/fts3.html módulo FTS3]; as características de procura non estarán dispoñibles nesta instalación.",
'config-register-globals' => "'''Atención: A opción PHP <code>[http://php.net/register_globals register_globals]</code> está activada.'''
'''Desactívea se pode.'''
MediaWiki funcionará, pero o seu servidor está exposto a potenciais vulnerabilidades de seguridade.",
@@ -3842,12 +5253,14 @@ MediaWiki necesita soporte UTF-8 para funcionar correctamente.",
'config-memory-bad' => "'''Atención:''' O parámetro <code>memory_limit</code> do PHP é $1.
Probablemente é un valor baixo de máis.
A instalación pode fallar!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] está instalado',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] está instalado',
'config-apc' => '[http://www.php.net/apc APC] está instalado',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] está instalado',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] está instalado',
- 'config-no-cache' => "'''Atención:''' Non se puido atopar [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] ou [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''Atención:''' Non se puido atopar [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] ou [http://www.iis.net/download/WinCacheForPhp WinCache].
A caché de obxectos está desactivada.",
+ 'config-mod-security' => "'''Atención:''' O seu servidor web ten o [http://modsecurity.org/ mod_security] activado. Se estivese mal configurado, pode causar problemas a MediaWiki ou calquera outro software que permita aos usuarios publicar contidos arbitrarios.
+Olle a [http://modsecurity.org/documentation/ documentación do mod_security] ou póñase en contacto co soporte do seu servidor se atopa erros aleatorios.",
'config-diff3-bad' => 'GNU diff3 non se atopou.',
'config-imagemagick' => 'ImageMagick atopado: <code>$1</code>.
As miniaturas de imaxes estarán dispoñibles se activa as cargas.',
@@ -3857,21 +5270,28 @@ As miniaturas de imaxes estarán dispoñibles se activa as cargas.',
As miniaturas de imaxes estarán desactivadas.',
'config-no-uri' => "'''Erro:''' Non se puido determinar o URI actual.
Instalación abortada.",
+ 'config-no-cli-uri' => "'''Aviso:''' Non se especificou ningún --scriptpath; por defecto, usarase: <code>$1</code>.",
+ 'config-using-server' => 'Usando o nome do servidor "<nowiki>$1</nowiki>".',
+ 'config-using-uri' => 'Usando o URL do servidor "<nowiki>$1$2</nowiki>".',
'config-uploads-not-safe' => "'''Atención:''' O seu directorio por defecto para as cargas, <code>$1</code>, é vulnerable a execucións arbitrarias de escrituras.
-Aínda que MediaWiki comproba todos os ficheiros cargados por se houbese ameazas de seguridade, é amplamente recomendable [http://www.mediawiki.org/wiki/Manual:Security#Upload_security pechar esta vulnerabilidade de seguridade] antes de activar as cargas.",
+Aínda que MediaWiki comproba todos os ficheiros cargados por se houbese ameazas de seguridade, é amplamente recomendable [//www.mediawiki.org/wiki/Manual:Security#Upload_security pechar esta vulnerabilidade de seguridade] antes de activar as cargas.",
+ 'config-no-cli-uploads-check' => "'''Atención:''' Durante a instalación CLI, o seu directorio por defecto para as cargas, <code>$1</code>, non se comproba fronte a posibles vulnerabilidades de execucións arbitrarias de escrituras.",
'config-brokenlibxml' => 'O seu sistema ten unha combinación de versións de PHP e libxml2 que pode ser problemático e causar corrupción de datos en MediaWiki e outras aplicacións web.
-Actualice o sistema á versión 5.2.9 ou posterior do PHP e á 2.7.3 ou posterior de libxml2 ([http://bugs.php.net/bug.php?id=45996 erro presentado co PHP]).
+Actualice o sistema á versión 5.2.9 ou posterior do PHP e á 2.7.3 ou posterior de libxml2 ([//bugs.php.net/bug.php?id=45996 erro presentado co PHP]).
Instalación abortada.',
'config-using531' => 'O PHP $1 non é compatible con MediaWiki debido a un erro que afecta aos parámetros de referencia de <code>__call()</code>.
Actualice o sistema á versión 5.3.2 ou posterior do PHP ou volva á versión 5.3.0 do PHP para arranxar o problema.
Instalación abortada.',
+ 'config-suhosin-max-value-length' => 'Suhosin está instalado e limita a lonxitude do parámetro GET a $1 bytes. O compoñente ResourceLoader (Cargador de recursos) de MediaWiki traballa neste límite, pero este prexudica o rendemento. Se é posible, debería establecer suhosin.get.max_value_length no valor 1024 ou superior en php.ini e establecer $wgResourceLoaderMaxQueryLength no mesmo valor en LocalSettings.php.',
'config-db-type' => 'Tipo de base de datos:',
'config-db-host' => 'Servidor da base de datos:',
'config-db-host-help' => 'Se o servidor da súa base de datos está nun servidor diferente, escriba o nome do servidor ou o enderezo IP aquí.
Se está usando un aloxamento web compartido, o seu provedor de hospedaxe debe darlle o nome de servidor correcto na súa documentación.
-Se está a realizar a instalación nun servidor de Windows con MySQL, o nome "localhost" pode non valer como servidor. Se non funcionase, inténteo con "127.0.0.1" como enderezo IP local.',
+Se está a realizar a instalación nun servidor de Windows con MySQL, o nome "localhost" pode non valer como servidor. Se non funcionase, inténteo con "127.0.0.1" como enderezo IP local.
+
+Se está usando PostgreSQL, deixe este campo en branco para facer a conexión a través do conectador Unix.',
'config-db-host-oracle' => 'TNS da base de datos:',
'config-db-host-oracle-help' => 'Insira un [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm nome de conexión local] válido; cómpre que haxa visible un ficheiro tnsnames.ora para esta instalación.<br />Se está a empregar bibliotecas cliente versión 10g ou máis recentes, tamén pode usar o método de atribución de nomes [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].',
'config-db-wiki-settings' => 'Identificar o wiki',
@@ -3912,12 +5332,13 @@ O normal é que este campo quede baleiro.',
No '''modo binario''', MediaWiki almacena texto UTF-8 na base de datos en campos binarios.
Isto é máis eficaz ca o modo UTF-8 de MySQL e permítelle usar o rango completo de caracteres Unicode.
No '''modo UTF-8''', MySQL saberá o xogo de caracteres dos seus datos e pode presentar e converter os datos de maneira axeitada,
-pero non lle deixará gardar caracteres por riba do [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingüe básico].",
+pero non lle deixará gardar caracteres por riba do [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingüe básico].",
'config-mysql-old' => 'Necesítase MySQL $1 ou posterior; ten a versión $2.',
'config-db-port' => 'Porto da base de datos:',
'config-db-schema' => 'Esquema para MediaWiki',
'config-db-schema-help' => 'O normal é que este esquema sexa correcto.
Cámbieo soamente se sabe que é necesario.',
+ 'config-pg-test-error' => "Non se pode conectar coa base de datos '''$1''': $2",
'config-sqlite-dir' => 'Directorio de datos SQLite:',
'config-sqlite-dir-help' => "SQLite recolle todos os datos nun ficheiro único.
@@ -3935,19 +5356,22 @@ Considere poñer a base de datos nun só lugar, por exemplo en <code>/var/lib/me
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'MediaWiki soporta os seguintes sistemas de bases de datos:
$1
Se non ve listado a continuación o sistema de base de datos que intenta usar, siga as instrucións ligadas enriba para activar o soporte.',
'config-support-mysql' => '* $1 é o obxectivo principal para MediaWiki e está mellor soportado ([http://www.php.net/manual/en/mysql.installation.php como compilar o PHP con soporte MySQL])',
- 'config-support-postgres' => '* $1 é un sistema de base de datos popular e de código aberto como alternativa a MySQL ([http://www.php.net/manual/en/pgsql.installation.php como compilar o PHP con soporte PostgreSQL]). É posible que haxa algúns pequenos erros e non se recomenda o seu uso nun entorno de produción.',
+ 'config-support-postgres' => '* $1 é un sistema de base de datos popular e de código aberto como alternativa a MySQL ([http://www.php.net/manual/en/pgsql.installation.php como compilar o PHP con soporte PostgreSQL]). É posible que haxa algúns pequenos erros e non se recomenda o seu uso nunha contorna de produción.',
'config-support-sqlite' => '* $1 é un sistema de base de datos lixeiro moi ben soportado. ([http://www.php.net/manual/en/pdo.installation.php Como compilar o PHP con soporte SQLite], emprega PDO)',
'config-support-oracle' => '* $1 é un sistema comercial de xestión de base de datos de empresa. ([http://www.php.net/manual/en/oci8.installation.php Como compilar PHP con soporte OCI8])',
+ 'config-support-ibm_db2' => '* $1 é unha base de datos de empresa comercial.',
'config-header-mysql' => 'Configuración do MySQL',
'config-header-postgres' => 'Configuración do PostgreSQL',
'config-header-sqlite' => 'Configuración do SQLite',
'config-header-oracle' => 'Configuración do Oracle',
+ 'config-header-ibm_db2' => 'Configuración de IBM DB2',
'config-invalid-db-type' => 'Tipo de base de datos incorrecto',
'config-missing-db-name' => 'Debe escribir un valor "Nome da base de datos"',
'config-missing-db-host' => 'Debe escribir un valor "Servidor da base de datos"',
@@ -4021,6 +5445,13 @@ A conta que se especifique aquí xa debe existir.',
'config-mysql-engine' => 'Motor de almacenamento:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => "'''Atención:''' Seleccionou MyISAM como o motor de almacenamento para MySQL, unha combinación non recomendada para MediaWiki, porque:
+* practicamente non soporta os accesos simultáneos debido ao bloqueo de táboas
+* é máis propenso a corromperse ca outros motores
+* o código base de MediaWiki non sempre manexa o MyISAM como debera
+
+Se a súa instalación MySQL soporta InnoDB, recoméndase elixilo no canto de MyISAM.
+Se a súa instalación MySQL non soporta InnoDB, quizais sexa boa idea realizar unha actualización.",
'config-mysql-engine-help' => "'''InnoDB''' é case sempre a mellor opción, dado que soporta ben os accesos simultáneos.
'''MyISAM''' é máis rápido en instalacións de usuario único e de só lectura.
@@ -4032,7 +5463,8 @@ As bases de datos MyISAM tenden a se corromper máis a miúdo ca as bases de dat
Isto é máis eficaz ca o modo UTF-8 de MySQL e permítelle usar o rango completo de caracteres Unicode.
No '''modo UTF-8''', MySQL saberá o xogo de caracteres dos seus datos e pode presentar e converter os datos de maneira axeitada,
-pero non lle deixará gardar caracteres por riba do [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingüe básico].",
+pero non lle deixará gardar caracteres por riba do [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes plan multilingüe básico].",
+ 'config-ibm_db2-low-db-pagesize' => "A súa base de datos DB2 ten un espazo de táboa cun tamaño de páxina insuficiente. O tamaño de páxina debe ser '''32k''' ou maior.",
'config-site-name' => 'Nome do wiki:',
'config-site-name-help' => 'Isto aparecerá na barra de títulos do navegador e noutros lugares.',
'config-site-name-blank' => 'Escriba o nome do sitio.',
@@ -4068,6 +5500,8 @@ Especifique un nome de usuario diferente.',
'config-subscribe' => 'Subscríbase á [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce lista de correo de anuncios sobre lanzamentos].',
'config-subscribe-help' => 'Esta é unha lista de correos de baixo volume usada para anuncios sobre lanzamentos de novas versións, incluíndo avisos de seguridade importantes.
Debería subscribirse a ela e actualizar a súa instalación MediaWiki cando saian as novas versións.',
+ 'config-subscribe-noemail' => 'Intentou subscribirse á lista de correo dos anuncios de novos lanzamentos sen proporcionar o enderezo de correo electrónico.
+Dea un enderezo de correo electrónico se quere efectuar a subscrición á lista de correo.',
'config-almost-done' => 'Xa case rematou!
Neste paso pode saltar o resto da configuración e instalar o wiki agora mesmo.',
'config-optional-continue' => 'Facédeme máis preguntas.',
@@ -4088,24 +5522,25 @@ A opción '''{{int:config-profile-no-anon}}''' proporciona un control maior, per
O escenario '''{{int:config-profile-fishbowl}}''' restrinxe a edición aos usuarios aprobados, pero o público pode ollar as páxinas, incluíndo os historiais.
O tipo '''{{int:config-profile-private}}''' só deixa que os usuarios aprobados vexan e editen as páxinas.
-Hai dispoñibles configuracións de dereitos de usuario máis complexas despois da instalación; bótelle un ollo a [http://www.mediawiki.org/wiki/Manual:User_rights esta entrada no manual].",
+Hai dispoñibles configuracións de dereitos de usuario máis complexas despois da instalación; bótelle un ollo a [//www.mediawiki.org/wiki/Manual:User_rights esta entrada no manual].",
'config-license' => 'Dereitos de autor e licenza:',
'config-license-none' => 'Sen licenza ao pé',
'config-license-cc-by-sa' => 'Creative Commons recoñecemento compartir igual',
+ 'config-license-cc-by' => 'Creative Commons recoñecemento',
'config-license-cc-by-nc-sa' => 'Creative Commons recoñecemento non comercial compartir igual',
- 'config-license-cc-0' => 'Creative Commons Zero',
- 'config-license-gfdl-old' => 'Licenza de documentación libre de GNU 1.2',
- 'config-license-gfdl-current' => 'Licenza de documentación libre de GNU 1.3 ou posterior',
+ 'config-license-cc-0' => 'Creative Commons Zero (dominio público)',
+ 'config-license-gfdl' => 'Licenza de documentación libre de GNU 1.3 ou posterior',
'config-license-pd' => 'Dominio público',
'config-license-cc-choose' => 'Seleccione unha licenza Creative Commons personalizada',
'config-license-help' => "Moitos wikis públicos liberan todas as súas contribucións baixo unha [http://freedomdefined.org/Definition/Gl licenza libre].
-Isto axuda a crear un sentido de propiedade na comunidade e anima a seguir contribuíndo durante moito tempo.
+Isto axuda a crear un sentido de propiedade comunitaria e anima a seguir contribuíndo durante moito tempo.
Xeralmente, non é necesario nos wikis privados ou de empresas.
Se quere poder empregar textos da Wikipedia, así como que a Wikipedia poida aceptar textos copiados do seu wiki, escolla a licenza '''Creative Commons recoñecemento compartir igual'''.
A licenza de documentación libre de GNU era a licenza anterior da Wikipedia.
-Malia aínda ser unha licenza válida, esta ten algunhas características que poden facer o reuso e a interpretación difíciles.",
+Malia aínda ser unha licenza válida, é difícil de entender.
+Tamén é difícil reusar contidos baixo esta licenza.",
'config-email-settings' => 'Configuración do correo electrónico',
'config-enable-email' => 'Activar os correos electrónicos de saída',
'config-enable-email-help' => 'Se quere que o correo electrónico funcione, cómpre configurar os [http://www.php.net/manual/en/mail.configuration.php parámetros PHP] correctamente.
@@ -4127,7 +5562,7 @@ Moitos servidores de correo electrónico esixen que polo menos a parte do nome d
'config-upload-settings' => 'Imaxes e carga de ficheiros',
'config-upload-enable' => 'Activar a carga de ficheiros',
'config-upload-help' => 'A subida de ficheiros expón potencialmente o servidor a riscos de seguridade.
-Para obter máis información, lea a [http://www.mediawiki.org/wiki/Manual:Security sección de seguridade] no manual.
+Para obter máis información, lea a [//www.mediawiki.org/wiki/Manual:Security sección de seguridade] no manual.
Para activar a carga de ficheiros, cambie o modo no subdirectorio <code>images</code> que está baixo o directorio raíz de MediaWiki, de xeito que o servidor web poida escribir nel.
A continuación, active esta opción.',
@@ -4135,13 +5570,13 @@ A continuación, active esta opción.',
'config-upload-deleted-help' => 'Escolla un directorio no que arquivar os ficheiros borrados.
O ideal é que non sexa accesible desde a web.',
'config-logo' => 'URL do logo:',
- 'config-logo-help' => 'A aparencia de MediaWiki por defecto inclúe espazo para un logo de 135x160 píxeles no recuncho superior esquerdo.
-Cargue unha imaxe do tamaño axeitado e introduza o URL aquí.
+ 'config-logo-help' => 'A aparencia de MediaWiki por defecto inclúe espazo para un logo de 135x160 píxeles por riba do menú lateral.
+Cargue unha imaxe do tamaño axeitado e introduza o enderezo URL aquí.
Se non quere un logo, deixe esta caixa en branco.',
'config-instantcommons' => 'Activar Instant Commons',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons InstantCommons] é unha característica que permite aos wikis usar imaxes, sons e outros ficheiros multimedia atopados no sitio da [http://commons.wikimedia.org/wiki/Portada_galega Wikimedia Commons].
-Para facer isto, MediaWiki necesita acceso á internet.
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons InstantCommons] é unha característica que permite aos wikis usar imaxes, sons e outros ficheiros multimedia atopados no sitio da [//commons.wikimedia.org/wiki/Portada_galega Wikimedia Commons].
+Para facer isto, MediaWiki necesita acceso á internet.
Para obter máis información sobre esta característica, incluíndo as instrucións sobre como configuralo para outros wikis que non sexan a Wikimedia Commons, consulte [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos o manual].',
'config-cc-error' => 'A escolla da licenza Creative Commons non deu resultados.
@@ -4162,7 +5597,7 @@ Debe especificarse un por liña, así como o porto a usar. Por exemplo:
192.168.1.25:1234',
'config-memcache-needservers' => 'Seleccionou Memcached como o seu tipo de caché, pero non especificou ningún servidor.',
'config-memcache-badip' => 'Escribiu un enderezo IP inválido para Memcached: $1.',
- 'config-memcache-noport' => 'Non especificou o porto a usar no servidor Memcached: $1.
+ 'config-memcache-noport' => 'Non especificou o porto a usar no servidor Memcached: $1.
Se non sabe o porto, o predeterminado é 11211.',
'config-memcache-badport' => 'Os números de porto Memcached deben estar entre $1 e $2.',
'config-extensions' => 'Extensións',
@@ -4177,6 +5612,7 @@ Se aínda quere facer algún cambio, volva atrás.',
'config-install-step-failed' => 'erro',
'config-install-extensions' => 'Incluíndo as extensións',
'config-install-database' => 'Configurando a base de datos',
+ 'config-install-schema' => 'Creando o esquema',
'config-install-pg-schema-not-exist' => 'O esquema PostgreSQL non existe.',
'config-install-pg-schema-failed' => 'Fallou a creación de táboas.
Asegúrese de que o usuario "$1" pode escribir no esquema "$2".',
@@ -4184,10 +5620,17 @@ Asegúrese de que o usuario "$1" pode escribir no esquema "$2".',
'config-install-pg-plpgsql' => 'Comprobación da lingua PL/pgSQL',
'config-pg-no-plpgsql' => 'Cómpre instalar a lingua PL/pgSQL na base de datos $1',
'config-pg-no-create-privs' => 'A conta especificada para a instalación non ten os privilexios necesarios para crear unha conta.',
+ 'config-pg-not-in-role' => 'A conta especificada para o usuario web xa existe.
+A conta que especificou para a instalación non é un superusuario e non pertence ao grupo de usuarios con acceso á web, polo que non pode crear obxectos pertencentes ao usuario da rede.
+
+Actualmente, MediaWiki necesita que as táboas sexan propiedade do usuario da rede. Especifique outro nome de conta web ou prema no botón "Atrás" e dea un usuario de instalación cos privilexios axeitados.',
'config-install-user' => 'Creando o usuario da base de datos',
'config-install-user-alreadyexists' => 'O usuario "$1" xa existe',
'config-install-user-create-failed' => 'A creación do usuario "$1" fallou: $2',
'config-install-user-grant-failed' => 'Fallou a concesión de permisos ao usuario "$1": $2',
+ 'config-install-user-missing' => 'O usuario especificado, "$1", non existe.',
+ 'config-install-user-missing-create' => 'O usuario especificado, "$1", non existe.
+Prema na caixa de verificación "crear unha conta" que hai a continuación se quere crear unha.',
'config-install-tables' => 'Creando as táboas',
'config-install-tables-exist' => "'''Atención:''' Semella que as táboas de MediaWiki xa existen.
Saltando a creación.",
@@ -4197,9 +5640,11 @@ Saltando a creación.",
'config-install-interwiki-exists' => "'''Atención:''' Semella que a táboa de interwiki xa contén entradas.
Saltando a lista por defecto.",
'config-install-stats' => 'Iniciando as estatísticas',
- 'config-install-keys' => 'Xerando a clave secreta',
+ 'config-install-keys' => 'Xerando as claves secretas',
+ 'config-insecure-keys' => "'''Atención:''' {{PLURAL:$2|A clave de seguridade|As claves de seguridade}} ($1) {{PLURAL:$2|xerada|xeradas}} durante a instalación non {{PLURAL:$2|é|son}} completamente {{PLURAL:$2|segura|seguras}}. Considere a posibilidade de {{PLURAL:$2|cambiala|cambialas}} manualmente.",
'config-install-sysop' => 'Creando a conta de usuario de administrador',
- 'config-install-subscribe-fail' => 'Non se puido subscribir á lista mediawiki-announce',
+ 'config-install-subscribe-fail' => 'Non se puido subscribir á lista mediawiki-announce: $1',
+ 'config-install-subscribe-notpossible' => 'cURL non está instalado e allow_url_fopen non está dispoñible.',
'config-install-mainpage' => 'Creando a páxina principal co contido por defecto',
'config-install-extension-tables' => 'Creando as táboas para as extensións activadas',
'config-install-mainpage-failed' => 'Non se puido inserir a páxina principal: $1',
@@ -4220,6 +5665,26 @@ $3
Cando faga todo isto, xa poderá '''[$2 entrar no seu wiki]'''.",
'config-download-localsettings' => 'Descargar o LocalSettings.php',
'config-help' => 'axuda',
+ 'mainpagetext' => "'''MediaWiki instalouse correctamente.'''",
+ 'mainpagedocfooter' => 'Consulte a [//meta.wikimedia.org/wiki/Help:Contents Guía do usuario] para máis información sobre como usar o software wiki.
+
+== Comezando ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista de opcións de configuración]
+* [//www.mediawiki.org/wiki/Manual:FAQ Preguntas frecuentes sobre MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo das edicións de MediaWiki]',
+);
+
+/** Ancient Greek (ἈÏχαία ἑλληνικὴ)
+ * @author Omnipaedista
+ */
+$messages['grc'] = array(
+ 'mainpagetext' => "'''Ἡ á¼Î³ÎºÎ±Ï„άστασις τῆς MediaWiki ἦν á¼Ï€Î¹Ï„υχής'''",
+ 'mainpagedocfooter' => 'Βουλευθήσεσθε Ï„á½°Ï‚ [//meta.wikimedia.org/wiki/Help:Contents βουλὰς τοῖς ΧÏωμένοις] ἵνα πληÏοφοÏηθῇτε πεÏὶ τοῦ βίκιλογισμικοῦ.
+
+== ἌÏξασθε ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Διαλογή παÏαμέτÏων διαμοÏφώσεως]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki: τὰ πολλάκις αἰτηθέντα]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Διαλογή διαλέξεων á¼Ï€á½¶ τῶν διανομῶν τῆς MediaWiki]',
);
/** Swiss German (Alemannisch)
@@ -4275,10 +5740,10 @@ Des Programm isch e freji Software, d. h. s cha, no dr Bedingige vu dr GNU Gener
Des Programm wird in dr Hoffnig verteilt, ass es nitzli isch, aber '''ohni jedi Garanti''' un sogar ohni di impliziert Garanti vun ere '''Märtgängigkeit''' oder '''Eignig fir e bstimmte Zwäck'''. Doderzue git meh Hiiwys in dr GNU General Public-Lizänz.
E <doclink href=Copying>Kopi vu dr GNU General Public-Lizänz</doclink> sott zämme mit däm Programm verteilt wore syy. Wänn des nit eso isch, cha ne Kopi bi dr Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, schriftli aagforderet oder [http://www.gnu.org/copyleft/gpl.html online gläse] wäre.",
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWiki Websyte vu MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents Nutzeraaleitig zue MediaWiki]
-* [http://www.mediawiki.org/wiki/Manual:Contents Adminischtratoreaaleitig zue MediaWiki]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Vilmol gstellti Froge zue MediaWiki]',
+ 'config-sidebar' => '* [//www.mediawiki.org MediaWiki Websyte vu MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents Nutzeraaleitig zue MediaWiki]
+* [//www.mediawiki.org/wiki/Manual:Contents Adminischtratoreaaleitig zue MediaWiki]
+* [//www.mediawiki.org/wiki/Manual:FAQ Vilmol gstellti Froge zue MediaWiki]',
'config-env-good' => 'D Inschtallationsumgäbig isch prieft wore.
Du chasch MediaWiki inschtalliere.',
'config-env-bad' => 'D Inschtallationsumgäbigisch prieft wore.
@@ -4287,17 +5752,11 @@ Du chasch MediaWiki nit inschtalliere.',
'config-unicode-using-utf8' => 'Fir d Unicode-Normalisierig wird em Brion Vibber syy utf8_normalize.so yygsetzt.',
'config-unicode-using-intl' => 'For d Unicode-Normalisierig wird d [http://pecl.php.net/intl PECL-Erwyterig intl] yygsetzt.',
'config-unicode-pure-php-warning' => "'''Warnig:''' D [http://pecl.php.net/intl PECL-Erwyterig intl] isch fir d Unicode-Normalisierig nit verfiegbar. Wäge däm wird di langsam pure-PHP-Implementierig brucht.
-Wänn Du ne Websyte mit ere große Bsuechrzahl bedrybsch, sottsch e weng ebis läse iber [http://www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode-Normalisierig (en)].",
+Wänn Du ne Websyte mit ere große Bsuechrzahl bedrybsch, sottsch e weng ebis läse iber [//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode-Normalisierig (en)].",
'config-unicode-update-warning' => "'''Warnig:''' Di inschtalliert Version vum Unicode-Normalisierigswrapper verwändet e elteri Version vu dr Bibliothek vum [http://site.icu-project.org/ ICU-Projäkt].
-Du sottsch si [http://www.mediawiki.org/wiki/Unicode_normalization_considerations aktualisiere], wänn Dor d Verwändig vu Unicode wichtig isch.",
+Du sottsch si [//www.mediawiki.org/wiki/Unicode_normalization_considerations aktualisiere], wänn Dor d Verwändig vu Unicode wichtig isch.",
'config-no-db' => 'S isch kei adäquate Datebanktryyber gfunde wore!',
- 'config-no-db-help' => 'S mueß e Datebanktryyber fir PHP inschtalliert wäre.
-Die Datebanksyschtem wäre unterstitzt: $1
-
-Wänn Du ne gmeinschaftli gnutzte Server fir s Hosting bruchsch, muesch dr Hoster froge go ne adäquate Datebanktryyber inschtalliere.
-Wänn Du PHP sälber kumpiliert hesch, muesch s nej konfiguriere, dr Datebankclient mueß aktiviert wäre. Doderzue chasch zem Byschpel <code>./configure --with-mysql</code> uusfiere.
-Wänn Du PHP iber d Paketverwaltig vun ere Debian- oder Ubuntu-Inschtallation inschtalliert hesch, muesch s „php5-mysql“-Paket nooinschtalliere.',
- 'config-no-fts3' => "'''Warnig:''' SQLite isch ohni s [http://sqlite.org/fts3.html FTS3-Modul] kumpiliert wore, s stehn kei Suechfunktione z Verfiegig.",
+ 'config-no-fts3' => "'''Warnig:''' SQLite isch ohni s [//sqlite.org/fts3.html FTS3-Modul] kumpiliert wore, s stehn kei Suechfunktione z Verfiegig.",
'config-register-globals' => "'''Warnig: Dr Parameter <code>[http://php.net/register_globals register_globals]</code> vu PHP isch aktiviert.'''
'''Är sott deaktiviert wäre, wänn des megli isch.'''
D MediaWiki-Inschtallation lauft einwäg, aber dr Server isch aafällig fi megligi Sicherheitsprobläm.",
@@ -4326,16 +5785,53 @@ MediaWiki brucht d UTF-8-Unterstitzi zum fählerfrej lauffähig syy.",
'config-memory-bad' => "'''Warnig:''' Dr PHP-Parameter <code>memory_limit</code> lyt bi $1.
Dää Wärt isch wahrschyns z nider.
Dr Inschtallationsvorgang chennt wäge däm fählschlaa!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] isch inschtalliert',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] isch inschtalliert',
'config-apc' => '[http://www.php.net/apc APC] isch inschtalliert',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] isch inschtalliert',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] isch inschtalliert',
- 'config-no-cache' => "'''Warnig:''' [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] oder [http://www.iis.net/download/WinCacheForPhp WinCache] hän nit chenne gfunde wäre.
+ 'config-no-cache' => "'''Warnig:''' [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] oder [http://www.iis.net/download/WinCacheForPhp WinCache] hän nit chenne gfunde wäre.
S Objäktcaching isch wäge däm nit aktiviert.",
'config-diff3-bad' => 'GNU diff3 isch nit gfunde wore.',
'config-imagemagick' => 'ImageMagick isch gfunde wore: <code>$1</code>.
Miniaturaasichte vu Bilder sin megli, sobald s Uffelade vu Dateie aktiviert isch.',
'config-help' => 'Hilf',
+ 'mainpagetext' => "'''MediaWiki isch erfolgrich inschtalliert worre.'''",
+ 'mainpagedocfooter' => 'Lueg uf d [//meta.wikimedia.org/wiki/MediaWiki_localisation Dokumentation fir d Aapassig vu dr Benutzeroberflächi] un s [//meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuech] fir d Hilf iber d Benutzig un s Yystelle.',
+);
+
+/** Gujarati (ગà«àªœàª°àª¾àª¤à«€)
+ * @author Dineshjk
+ */
+$messages['gu'] = array(
+ 'mainpagetext' => "'''મિડીયાવિકિ સફળતાપૂરà«àªµàª• ઇનà«àª¸àªŸà«‹àª² થયà«àª‚ છે.'''",
+ 'mainpagedocfooter' => 'વિકિ સોફà«àªŸàªµà«‡àª° વાપરવાની માહીતિ માટે [//meta.wikimedia.org/wiki/Help:Contents સભà«àª¯ મારà«àª—દરà«àª¶àª¿àª•àª¾] જà«àª“.
+
+== શરૂઆતના તબકà«àª•à«‡ ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings કોનફીગà«àª¯à«àª°à«‡àª¶àª¨ સેટીંગà«àª¸àª¨à«€ યાદી]
+* [//www.mediawiki.org/wiki/Manual:FAQ વારંવાર પà«àª›àª¾àª¤àª¾ પà«àª°àª¶à«àª¨à«‹]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce મિડીયાવિકિ રીલીઠમેઇલીંગ લીસà«àªŸ]',
+);
+
+/** Manx (Gaelg) */
+$messages['gv'] = array(
+ 'mainpagetext' => "'''Ta MediaWiki currit stiagh nish.'''",
+);
+
+/** Hakka (Hak-kâ-fa) */
+$messages['hak'] = array(
+ 'mainpagetext' => "'''Yí-kîn sṳ̀n-kûng ôn-chông MediaWiki.'''",
+ 'mainpagedocfooter' => 'chhiáng fóng-mun [//meta.wikimedia.org/wiki/Help:Contents Yung-fu sú-chhak] yî-khiÌp sá¹³Ì-yung chhá¹³Ì wiki ngiôn-khien ke sin-sitï¼
+
+== NgiÌp-mùn ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki Phi-chṳ sat-thin chhîn-tân]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki Phìn-sòng mun-thì kié-tap]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki fat-phu email chhîn-tân]',
+);
+
+/** Hawaiian (Hawai`i) */
+$messages['haw'] = array(
+ 'mainpagetext' => "'''Ua pono ka ho‘ouka ‘ana o MediaWiki.'''",
);
/** Hebrew (עברית)
@@ -4391,7 +5887,7 @@ $1',
'config-page-copying' => 'העתקה',
'config-page-upgradedoc' => 'שדרוג',
'config-page-existingwiki' => 'ויקי קיי×',
- 'config-help-restart' => '×”×× ×‘×¨×¦×•× ×š לפנות ×ת כל ×”× ×ª×•× ×™× ×©× ×©×ž×¨×• שהוזנו על ידיך ולהתחיל מחדש ×ת תהליך ההתקנה?',
+ 'config-help-restart' => '×”×× ×‘×¨×¦×•× ×š לנקות ×ת כל ×”× ×ª×•× ×™× ×©×”×–× ×ª ולהתחיל מחדש ×ת תהליך ההתקנה?',
'config-restart' => 'כן, להפעיל מחדש',
'config-welcome' => '=== בדיקות סביבה ===
בדיקות בסיסיות מתבצעות כדי לבדוק שהסביבה מת×ימה להתקנת מדיה־ויקי.
@@ -4405,10 +5901,10 @@ $1
תכנית זו מופצת בתקווה שתהיה מועילה, ×בל '''×‘×œ× ×חריות כלשהי'''; ו×פילו ×œ×œ× ×”×חריות המשתמעת בדבר '''מסחריותה''' ×ו '''הת×מתה למטרה '''מסוימת'''. ×œ×¤×¨×˜×™× × ×•×¡×¤×™×, ניתן לעיין ברישיון הציבורי הכללי של GNU.
לתכנית זו ×מור ×”×™×” להיות מצורף <doclink href=Copying>עותק של הרישיון הציבורי הכללי של GNU</doclink>; ×× ×œ×, עליך לכתוב ל־Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, , MA 02111-1307, USA. ×ו [http://www.gnu.org/copyleft/gpl.html ×œ×§×¨×•× ×ותו דרך ×”×ינטרנט].",
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWiki ×תר הבית של מדיה־ויקי]
-* [http://www.mediawiki.org/wiki/Help:Contents המדריך למשתמשי×]
-* [http://www.mediawiki.org/wiki/Manual:Contents המדריך למנהלי×]
-* [http://www.mediawiki.org/wiki/Manual:FAQ שו״ת]
+ 'config-sidebar' => '* [//www.mediawiki.org ×תר הבית של מדיה־ויקי]
+* [//www.mediawiki.org/wiki/Help:Contents המדריך למשתמשי×]
+* [//www.mediawiki.org/wiki/Manual:Contents המדריך למנהלי×]
+* [//www.mediawiki.org/wiki/Manual:FAQ שו״ת]
----
* <doclink href=Readme>×§×¨× ×ותי</doclink>
* <doclink href=ReleaseNotes>הערות גרסה</doclink>
@@ -4418,23 +5914,22 @@ $1
×פשר להתקין מדיה־ויקי.',
'config-env-bad' => 'הסביבה ×©×œ×›× × ×‘×“×§×”.
××™Ö¾×פשר להתקין מדיה־ויקי.',
- 'config-env-php' => 'מותקנת PHP $1.',
- 'config-env-php-toolow' => 'מותקנת PHP $1.
-למדיה־ויקי נדרשת PHP $2 ×ו גרסה גבוהה יותר.',
+ 'config-env-php' => 'מותקנת <span dir="ltr">PHP $1</span>.',
+ 'config-env-php-toolow' => 'מותקנת <span dir="ltr">PHP $1</span>.
+למדיה־ויקי נדרשת <span dir="ltr">PHP $2</span> ×ו גרסה גבוהה יותר.',
'config-unicode-using-utf8' => 'משתמש ב־normalize.so של בריון ויבר לנרמול יוניקוד.',
'config-unicode-using-intl' => 'משתמש בהרחבת [http://pecl.php.net/intl הרחבת intl PECL] לנרמול יוניקוד',
'config-unicode-pure-php-warning' => "'''×זהרה''': [http://pecl.php.net/intl הרחבת intl PECL] ××™× ×” זמינה לטיפול בנרמול יוניקוד. משתמש ×‘×™×™×©×•× PHP טהור ו×טי יותר.
-×× ×–×” ×תר בעל תעבורה גבוהה, כד××™ ×œ×§×¨×•× ×ת המסמך הב×: [http://www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode normalization].",
+×× ×–×”×• ×תר בעל תעבורה גבוהה, כד××™ ×œ×§×¨×•× ×ת המסמך הב×: [//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode normalization].",
'config-unicode-update-warning' => "'''×זהרה''': הגרסה המותקנת של מעטפת נרמול יוניקוד משתמשת בגרסה ישנה של הספרייה של [http://site.icu-project.org/ פרויקט ICU].
-כד××™ [http://www.mediawiki.org/wiki/Unicode_normalization_considerations לעדכן] ×× ×™×© חשוב ×œ×›× ×”×˜×™×¤×•×œ ביוניקוד.",
- 'config-no-db' => '×œ× × ×ž×¦× ×“×¨×™×™×‘×¨ מסד × ×ª×•× ×™× ×ž×ª××™×.',
- 'config-no-db-help' => 'יש להתקין דרייבר מסד × ×ª×•× ×™× ×œÖ¾PHP.
+כד××™ [//www.mediawiki.org/wiki/Unicode_normalization_considerations לעדכן] ×× ×—×©×•×‘ ×œ×›× ×”×˜×™×¤×•×œ ביוניקוד.",
+ 'config-no-db' => '×œ× × ×ž×¦× ×“×¨×™×™×‘×¨ מסד × ×ª×•× ×™× ×ž×ª××™×. יש להתקין דרייבר מסד × ×ª×•× ×™× ×œÖ¾PHP.
× ×ª×ž×›×™× ×”×¡×•×’×™× ×”×‘××™× ×©×œ מסדי נתוני×: $1.
×× ××ª× ×ž×©×ª×ž×©×™× ×‘×ירוח משותף, בקשו מספק ×”×ירוח ×©×œ×›× ×œ×”×ª×§×™×Ÿ דרייבר מסד × ×ª×•× ×™× ×ž×ª××™×.
-×× ×§×ž×¤×œ×ª× ×ת PHP בעצמכ×, הגדירו ×ותו מחדש והפעילו ×ת לקוח מסד × ×ª×•× ×™× (database client), למשל בעזרת <code>./configure --with-mysql</code>.
-×× ×”×ª×§× ×ª× ×ת PHP מחבילה של דבי×ן ×ו ×ובונטו, יש להתקין ×ת המודול php5-mysql.',
- 'config-no-fts3' => "'''×זהרה''': SQLite מקומפל ×œ×œ× [http://sqlite.org/fts3.html מודול FTS]. יכולות חיפוש ×œ× ×™×”×™×• זמינות בהתקנה ×”×–×ת.",
+×× ×§Ö´×ž×¤×œ×ª× ×ת PHP בעצמכ×, הגדירו ×ותו מחדש והפעילו ×ת לקוח מסד נתוני×, למשל ב×מצעות <code dir="ltr">./configure --with-mysql</code>.
+×× ×”×ª×§× ×ª× ×ת PHP כחבילה של דבי×ן ×ו של ×ובונטו, יש להתקין ×ת המודול php5-mysql.',
+ 'config-no-fts3' => "'''×זהרה''': SQLite מקומפל ×œ×œ× [//sqlite.org/fts3.html מודול FTS]. יכולות חיפוש ×œ× ×™×”×™×• זמינות בהתקנה ×”×–×ת.",
'config-register-globals' => "'''×זהרה: ×”×פשרות <code>[http://php.net/register_globals register_globals]</code> של PHP מופעלת.'''
'''כבו ×ותה ×× ××ª× ×™×›×•×œ×™×.'''
מדיה־ויקי תעבוד, ×בל השרת ×©×œ×›× ×—×©×•×£ לפגיעות ×בטחה.",
@@ -4463,14 +5958,16 @@ $1
'config-memory-bad' => "'''×זהרה:''' ערך ×”×פשרות <code>memory_limit</code> של PHP ×”×•× $1.
×–×” כנר××” נמוך מדי.
ההתקנה עשויה להיכשל!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] מותקן',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] מותקן',
'config-apc' => '[http://www.php.net/apc APC] מותקן',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] מותקן',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] מותקן',
- 'config-no-cache' => "'''×זהרה:''' ×חת מהתוכנות הב×ות ×œ× × ×ž×¦××”: [http://eaccelerator.sourceforge.net eAccelerator]&rlm;, [http://www.php.net/apc APC]&rlm;, [http://trac.lighttpd.net/xcache/ XCache] ×ו [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''×זהרה:''' ×חת מהתוכנות הב×ות ×œ× × ×ž×¦××”: [http://eaccelerator.sourceforge.net eAccelerator]&rlm;, [http://www.php.net/apc APC]&rlm;, [http://xcache.lighttpd.net/ XCache] ×ו [http://www.iis.net/download/WinCacheForPhp WinCache].
מטמון ×¢×¦×ž×™× ×œ× ×ž×•×¤×¢×œ.",
+ 'config-mod-security' => "'''×זהרה''': בשרת הווב ×©×œ×›× ×ž×•×¤×¢×œ [http://modsecurity.org/ mod_security]. ×× ×”×•× ×œ× ×ž×•×’×“×¨ טוב, ×–×” יכול ×œ×’×¨×•× ×œ×‘×¢×™×•×ª במדיה־ויקי ובתכנה ×חרת שמ×פשרת ×œ×ž×©×ª×ž×©×™× ×œ×©×œ×•×— תוכן שרירותי.
+קר×ו ×ת [http://modsecurity.org/documentation/ התיעוד של mod_security] ×ו צרו קשר ×¢× ×נשי התמיכה של שירותי ×”×ירוח ×©×œ×›× ×× ××ª× × ×ª×§×œ×™× ×‘×©×’×™×ות ×קר×יות.",
'config-diff3-bad' => 'GNU diff3 ×œ× × ×ž×¦×.',
- 'config-imagemagick' => '× ×ž×¦× ImageMagick&rlm;: <code>$1</code>.
+ 'config-imagemagick' => '× ×ž×¦× ImageMagick&rlm;: <code dir="ltr">$1</code>.
מזעור תמונות יופעל, ×× ×ª×¤×¢×™×œ×• ×ת ×”×פשרות להעלות קבצי×.',
'config-gd' => 'נמצ××” ספריית הגרפיקה GD המובנית.
מזעור תמונות יופעל, ×× ×ª×¤×¢×™×œ×• ×ת ×”×פשרות להעלות קבצי×.',
@@ -4478,21 +5975,28 @@ $1
מזעור תמונות ×œ× ×™×•×¤×¢×œ.',
'config-no-uri' => "'''שגי××”:''' ××™Ö¾×פשר לזהות ×ת הכתובת הנוכחית.
ההתקנה בוטלה.",
- 'config-uploads-not-safe' => "'''×זהרה:''' התיקייה ההתחלתית להעלות <code>$1</code> חשופה להרצת סקריפטי×.
-מדיה־ויקי בודקת ×ת כל ×”×§×‘×¦×™× ×”×ž×•Ö¼×¢×œ×™× ×œ×יומי ×בטחה, מומלץ מ×וד למנוע ×ת [http://www.mediawiki.org/wiki/Manual:Security#Upload_security פרצת ×”×בטחה] ×”×–×ת לפני ש××ª× ×ž×¤×¢×™×œ×™× ×ת ההעל×ות.",
+ 'config-no-cli-uri' => '×זהרה: ×œ× ×”×•×’×“×¨ <span dir="ltr">--scriptpath</span>, משתמש בבררת המחדל: <code dir="ltr">$1</code>.',
+ 'config-using-server' => '×©× ×”×©×¨×ª בשימוש: "<nowiki>$1</nowiki>".',
+ 'config-using-uri' => 'נעשה שימוש בכתובת השרת "<nowiki>$1$2</nowiki>".',
+ 'config-uploads-not-safe' => "'''×זהרה:''' תיקיית ההעל×ות ההתחלתית <code>$1</code> חשופה להרצת ×¡×§×¨×™×¤×˜×™× ×©×¨×™×¨×•×ª×™×™×.
+מדיה־ויקי בודקת ×ת כל ×”×§×‘×¦×™× ×”×ž×•Ö¼×¢×œ×™× ×œ×יומי ×בטחה, מומלץ מ×וד למנוע ×ת [//www.mediawiki.org/wiki/Manual:Security#Upload_security פרצת ×”×בטחה] ×”×–×ת לפני ש××ª× ×ž×¤×¢×™×œ×™× ×ת ההעל×ות.",
+ 'config-no-cli-uploads-check' => "'''×זהרה:''' תיקיית בררת המחדל להעל×ות (<code>$1</code>) ×œ× × ×‘×“×§×ª לפגיעוּת להרצת ×ª×¡×¨×™×˜×™× ×קר××™×™× ×‘×–×ž×Ÿ התקנה דרך CLI.",
'config-brokenlibxml' => 'במערכת ×©×œ×›× ×™×© שילוב של גרס×ות של PHP ושל libxml2 שחשוף לב××’×™× ×•×™×›×•×œ ×œ×’×¨×•× ×œ×¢×™×•×•×ª × ×ª×•× ×™× × ×¡×ª×¨ במדיה־ויקי וביישומי רשת ×חרי×.
-שדרגו ל־PHP 5.2.9 ×ו לגרסה חדשה יותר ול־libxml2 2.7.3 ×ו גרסה חדשה יותר ([http://bugs.php.net/bug.php?id=45996 ב××’ מתויק ב־PHP]).
+שדרגו ל־PHP 5.2.9 ×ו לגרסה חדשה יותר ול־libxml2 2.7.3 ×ו גרסה חדשה יותר ([//bugs.php.net/bug.php?id=45996 ב××’ מתויק ב־PHP]).
ההתקנה בוטלה.',
- 'config-using531' => '××™Ö¾×פשר להשתמש במדיה־ויקי ×¢× PHP $1 בגלל ב××’ ×‘×¤×¨×ž×˜×¨×™× ×©×œ הפניות (reference parameters) ל־<span dir="ltr"><code>__call()</code></span>.
-שדרגו ל־PHP 5.3.2 ×ו לגרסה גבוהה יותר כדי לתקן ×ת ×–×” ([http://bugs.php.net/bug.php?id=50394 bug filed with PHP]) ×ו שנמכו ל־PHP 5.3.0 כדי לפתור ×ת הבעיה ×”×–×ת.
+ 'config-using531' => '××™Ö¾×פשר להשתמש במדיה־ויקי ×¢× <span dir="ltr">PHP $1</span> בגלל ב××’ ×‘×¤×¨×ž×˜×¨×™× ×©×œ הפניות (reference parameters) ל־<code dir="ltr">__call()</code>.
+שדרגו ל־PHP 5.3.2 ×ו לגרסה גבוהה יותר כדי לתקן ×ת ×–×” ([//bugs.php.net/bug.php?id=50394 bug filed with PHP]) ×ו שַנמכו ל־PHP 5.3.0 כדי לפתור ×ת הבעיה ×”×–×ת.
ההתקנה בוטלה.',
+ 'config-suhosin-max-value-length' => 'מותקן פה Suhosin ×•×”×•× ×ž×’×‘×™×œ ×ת ×ורך פרמטר GET ל־$1 בתי×. רכיב ResourceLoader של מדיה־ויקי יעקוף ×ת המגלבה ×”×–×ת, ×בל ×–×” יפגע בביצועי×. ×× ×–×” בכלל ×פשרי, כדי לתקן ×ת הערך של suhosin.get.max_value_length ל־1024 בקובץ php.ini ולהגדיר ×ת ‎$wgResourceLoaderMaxQueryLength ל×ותו הערך בקובץ LocalSettings.php.',
'config-db-type' => 'סוג מסד הנתוני×:',
'config-db-host' => 'שרת מסד הנתוני×:',
- 'config-db-host-help' => '×× ×©×¨×ª מסד ×”× ×ª×•× ×™× ×©×œ×›× × ×ž×¦× ×¢×œ שרת מחשב ×חר, הקלידו ×ת ×©× ×”×ž×—×©×‘ ×ו כתובת ×”Ö¾IP ×›×ן.
+ 'config-db-host-help' => '×× ×©×¨×ª מסד ×”× ×ª×•× ×™× ×©×œ×›× × ×ž×¦× ×¢×œ שרת ×חר, הקלידו ×ת ×©× ×”×ž×—×©×‘ ×ו ×ת כתובת ×”Ö¾IP ×›×ן.
×× ××ª× ×ž×©×ª×ž×©×™× ×‘×ירוח משותף, ספק ×”×ירוח ×©×œ×›× ×מור לתת ×œ×›× ×ת ×©× ×”×©×¨×ª הנכון במסמכי×.
-×× ××ª× ×ž×ª×§×™× ×™× ×‘×©×¨×ª חלונות ×•×ž×©×ª×ž×©×™× ×‘Ö¾MySQL, השימוש ב־localhost עשוי ×œ× ×œ×¢×‘×•×“. ×× ×”×•× ×œ× ×¢×•×‘×“, נסו ×ת "127.0.0.1" בתור כתובת ×”Ö¾IP המקומית.',
+×× ××ª× ×ž×ª×§×™× ×™× ×‘×©×¨×ª Windows ×•×ž×©×ª×ž×©×™× ×‘Ö¾MySQL, השימוש ב־localhost עשוי ×œ× ×œ×¢×‘×•×“. ×× ×”×•× ×œ× ×¢×•×‘×“, נסו ×ת "127.0.0.1" בתור כתובת ×”Ö¾IP המקומית.
+
+×× ××ª× ×ž×©×ª×ž×©×™× ×‘Ö¾PostgreSQL, תש×ירו ×ת השדה ×”×–×” ריק כדי להתחבר דרך שקע יוניקס.',
'config-db-host-oracle' => 'TNS של מסד הנתוני×:',
'config-db-host-oracle-help' => 'הקלידו [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm ×©× ×—×™×‘×•×¨ מקומי (Local Connect Name)] תקין; הקובץ tnsnames.ora צריך להיות זמין להתקנה ×”×–×ת.<br />
×× ××ª× ×ž×©×ª×ž×©×™× ×‘Ö¾client libraries 10g ×ו בגרסה חדשה יותר, ××ª× ×™×›×•×œ×™× ×’× ×œ×”×©×ª×ž×© בשיטת מתן השמות [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].',
@@ -4535,12 +6039,13 @@ $1
ב'''מצב בינרי''' (binary mode) מדיה־ויקי שומרת טקסט UTF-8 במסד ×”× ×ª×•× ×™× ×‘×©×“×•×ª בינריי×.
×–×” יעיל יותר ממצב UTF-8 של MySQL ומ×פשר ×œ×›× ×œ×”×©×ª×ž×© בכל הטווח של תווי יוניקוד.
-ב'''מצב UTF-8'''&rlm; (UTF-8 mode)&rlm; MySQL יֵדַע מה קבוצת ×”×ª×•×•×™× (character set) של הטקסט ×©×œ×›× ×•×™×¦×™×’ וימיר ×ותו בהת××, ×בל ×œ× ×™×פשר ×œ×›× ×œ×©×ž×•×¨ ×ª×•×•×™× ×©××™× × × ×ž×¦××™× ×‘×˜×•×•×— הרב־לשוני הבסיסי ([http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane]).",
- 'config-mysql-old' => 'נדרשת גרסה $1 של MySQL ×ו גרסה חדשה יותר. הגרסה הנוכחית ×©×œ×›× ×”×™× $2.',
+ב'''מצב UTF-8'''&rlm; (UTF-8 mode)&rlm; MySQL יֵדַע מה קבוצת ×”×ª×•×•×™× (character set) של הטקסט ×©×œ×›× ×•×™×¦×™×’ וימיר ×ותו בהת××, ×בל ×œ× ×™×פשר ×œ×›× ×œ×©×ž×•×¨ ×ª×•×•×™× ×©××™× × × ×ž×¦××™× ×‘×˜×•×•×— הרב־לשוני הבסיסי ([//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane]).",
+ 'config-mysql-old' => 'נדרשת גרסה <span dir="ltr">$1</span> של MySQL ×ו גרסה חדשה יותר. הגרסה הנוכחית ×©×œ×›× ×”×™× $2.',
'config-db-port' => 'פִּתְחַת מסד ×”× ×ª×•× ×™× (database port):',
'config-db-schema' => 'סכמה למדיה־ויקי',
'config-db-schema-help' => 'הסְכֵמָה הב××” בדרך כלל מת×ימה.
שנו ×ותה רק ×× ××ª× ×™×•×“×¢×™× ×©××ª× ×—×™×™×‘×™×.',
+ 'config-pg-test-error' => "ההתחברות למסד ×”× ×ª×•× ×™× '''$1''' ×œ× ×ž×¦×œ×™×—×”: $2",
'config-sqlite-dir' => 'תיקיית × ×ª×•× ×™× (data directory) של SQLite:',
'config-sqlite-dir-help' => 'SQLite שומר ×ת כל ×”× ×ª×•× ×™× ×‘×§×•×‘×¥ ×חד.
@@ -4548,11 +6053,12 @@ $1
×”×™× ×œ× ×¦×¨×™×›×” נגישה ×œ×›×•×œ× ×“×¨×š ×”×ינטרנט – בגלל ×–×” ×יננו ×©×ž×™× ×ותה ב×ותו ×ž×§×•× ×¢× ×§×•×‘×¦×™ ×”Ö¾PHP.
-תוכנת ההתקנה תכתוב קובץ <span dir="ltr"><code>.htaccess</code></span> יחד ×ִתו, ×בל ×× ×–×” ייכשל, מישהו יוכל להשיג גישה למסד ×”× ×ª×•× ×™× ×©×œ×›×. ×©× × ×ž×¦× ×ž×™×“×¢ מפורש של ×ž×©×ª×ž×©×™× (כתובות דו×״ל, ססמ×ות מגובבות) ×•×’× ×’×¨×¡×ות מחוקות של ×“×¤×™× ×•×ž×™×“×¢ מוגבל ×חר.
+תוכנת ההתקנה תכתוב קובץ <code dir="ltr">.htaccess</code> יחד ×ִתו, ×בל ×× ×–×” ייכשל, מישהו יוכל להשיג גישה למסד ×”× ×ª×•× ×™× ×©×œ×›×. ×©× × ×ž×¦× ×ž×™×“×¢ מפורש של ×ž×©×ª×ž×©×™× (כתובות דו×״ל, ססמ×ות מגובבות) ×•×’× ×’×¨×¡×ות מחוקות של ×“×¤×™× ×•×ž×™×“×¢ מוגבל ×חר.
-כד××™ לשקול ×œ×©×™× ×ת מסד ×”× ×ª×•× ×™× ×‘×ž×§×•× ×חר לגמרי, למשל ב־<span dir="ltr"><code>/var/lib/mediawiki/yourwik</code></span>.',
+כד××™ לשקול ×œ×©×™× ×ת מסד ×”× ×ª×•× ×™× ×‘×ž×§×•× ×חר לגמרי, למשל ב־<code dir="ltr">/var/lib/mediawiki/yourwik</code>.',
'config-oracle-def-ts' => 'מרחב טבל×ות לפי בררת מחדל (default tablespace):',
'config-oracle-temp-ts' => 'מרחב טבל×ות זמני (temporary tablespace):',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'מדיה־ויקי תומכת במערכות מסדי ×”× ×ª×•× ×™× ×”×‘×ות:
$1
@@ -4562,10 +6068,12 @@ $1
'config-support-postgres' => '$1 ×”×•× ×ž×¡×“ × ×ª×•× ×™× × ×¤×•×¥ בקוד פתוח ×•×”×•× × ×¤×•×¥ בתור חלופה ל־MySQL (ר׳ [http://www.php.net/manual/en/pgsql.installation.php how to compile PHP with PostgreSQL support]). ייתכן שיש בתצורה ×”×–×ת ב××’×™× ×ž×¡×•×™×ž×™× ×•×”×™× ×œ× ×ž×•×ž×œ×¦×ª לסביבות מבצעיות.',
'config-support-sqlite' => '* $1 ×”×•× ×ž×¡×“ × ×ª×•× ×™× ×§×œ×™×œ ×¢× ×ª×ž×™×›×” טובה מ×וד. (ר׳ [http://www.php.net/manual/en/pdo.installation.php How to compile PHP with SQLite support], משתמש ב־PDO)',
'config-support-oracle' => '* $1 ×”×•× ×ž×¡×“ × ×ª×•× ×™× ×¢×¡×§×™ מסחרי. (ר׳ [http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])',
+ 'config-support-ibm_db2' => '* $1 ×”×•× ×ž×¡×“ × ×ª×•× ×™× ×ž×¡×—×¨×™ ×רגוני.',
'config-header-mysql' => 'הגדרות MySQL',
'config-header-postgres' => 'הגדרות PostgreSQL',
'config-header-sqlite' => 'הגדרות SQLite',
'config-header-oracle' => 'הגדרות Oracle',
+ 'config-header-ibm_db2' => 'תצורת IBM DB2',
'config-invalid-db-type' => 'סוג מסד ×”× ×ª×•× ×™× ×©×’×•×™',
'config-missing-db-name' => 'עליך להזין ערך עבור "×©× ×ž×¡×“ הנתוני×"',
'config-missing-db-host' => 'יש להכניס ערך לשדה "שרת מסד הנתוני×"',
@@ -4576,9 +6084,9 @@ $1
יש להשתמש רק ב×ותיות ASCII&rlm; (a עד z&rlm;, A עד Z), סְפָרוֹת (0 עד 9), ×§×•×•×™× ×ª×—×ª×™×™× (_) ×•×ž×™× ×•×¡×™× (-).',
'config-invalid-db-prefix' => '"$1" ×”×™× ×ª×—×™×œ×™×ª מסד × ×ª×•× ×™× ×‘×œ×ª×™ תקינה.
יש להשתמש רק ב×ותיות ASCII&rlm; (a עד z&rlm;, A עד Z), סְפָרוֹת (0 עד 9), ×§×•×•×™× ×ª×—×ª×™×™× (_) ×•×ž×™× ×•×¡×™× (-).',
- 'config-connection-error' => '$1.
+ 'config-connection-error' => '<div dir="ltr">$1.</div>
-בדקו ×ת ×©× ×”×©×¨×ª, ×ת ×©× ×”×ž×©×ª×ž×© ו×ת הססמה ונסו שוב.',
+בדקו ×ת ×©× ×”×©×¨×ª, ×ת ×©× ×”×ž×©×ª×ž×© ו×ת הססמה בטופס להלן ונסו שוב.',
'config-invalid-schema' => '"$1" ×”×™× ×¡×›×ž×” ×œ× ×ª×§×™× ×” עבור מדיה־ויקי.
יש להשתמש רק ב×ותיות ASCII&rlm; (a עד z&rlm;, A עד Z), סְפָרוֹת (0 עד 9) ×•×§×•×•×™× ×ª×—×ª×™×™× (_).',
'config-db-sys-create-oracle' => 'תוכנית ההתקנה תומכת רק בשימוש בחשבון SYSDBA ליצירת חשבון חדש.',
@@ -4637,6 +6145,15 @@ chmod a+w $3</pre></div>',
'config-db-web-no-create-privs' => 'לחשבון ×©×”×§×œ×“×ª× ×œ×”×ª×§× ×” ×ין מספיק הרש×ות ליצירת חשבות.
החשבון ש××ª× ×ž×§×œ×™×“×™× ×›×ן צריך להיות קיי×.',
'config-mysql-engine' => 'מנגנון ×”×חסון:',
+ 'config-mysql-innodb' => 'InnoDB',
+ 'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => "'''×זהרה''': ×‘×—×¨×ª× ×‘Ö¾MyISAM בתור מנוע ×חסון של MySQL, וזה ×œ× ×ž×•×ž×œ×¥ מהסיבות הב×ות:
+* המנוע ×”×–×” בקושי תומך בעיבוד מקבילי בגלל נעילת טבל×ות
+* ×”×•× ×¤×—×•×ª עמיד בפני ×ובדן מידע ×ž×ž× ×•×¢×™× ×חרי×
+* הקוד של מדיה־ויקי ×œ× ×ª×ž×™×“ מטפל ב־MyISAM כפי שצריך
+
+×× ×”×ª×§× ×ª MySQL ×©×œ×›× ×ª×•×ž×›×ª ב־InnoDB, מומלץ מ×וד שתבחרו ב×פשרות ×”×–×ת.
+×× ×”×ª×§× ×ª MySQL ×©×œ×›× ××™× ×” תומכת ב־InnoDB, ×ולי ×–×” הזמן לשקול לשדרג ×ותה.",
'config-mysql-engine-help' => "'''InnoDB''' ×”×•× ×›×ž×¢×˜ תמיד ×”×פשרות הטובה ביותר, ×›×™ במנוע ×”×–×” יש תמיכה טובה ביותר בעיבוד מקבילי.
'''MyISAM''' עשוי להיות בהתקנות שמיועדות למשתמש ×חד ולהתקנות לקרי××” בלבד.
@@ -4647,7 +6164,8 @@ chmod a+w $3</pre></div>',
'config-mysql-charset-help' => "ב'''מצב בינרי''' (binary mode) מדיה־ויקי שומרת טקסט UTF-8 במסד ×”× ×ª×•× ×™× ×‘×©×“×•×ª בינריי×.
×–×” יעיל יותר ממצב UTF-8 של MySQL ומ×פשר ×œ×›× ×œ×”×©×ª×ž×© בכל הטווח של תווי יוניקוד.
-ב'''מצב UTF-8'''&rlm; (UTF-8 mode)&rlm; MySQL יֵדַע מה קבוצת ×”×ª×•×•×™× (character set) של הטקסט ×©×œ×›× ×•×™×¦×™×’ וימיר ×ותו בהת××, ×בל ×œ× ×™×פשר ×œ×›× ×œ×©×ž×•×¨ ×ª×•×•×™× ×©××™× × × ×ž×¦××™× ×‘×˜×•×•×— הרב־לשוני הבסיסי ([http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane]).",
+ב'''מצב UTF-8'''&rlm; (UTF-8 mode)&rlm; MySQL יֵדַע מה קבוצת ×”×ª×•×•×™× (character set) של הטקסט ×©×œ×›× ×•×™×¦×™×’ וימיר ×ותו בהת××, ×בל ×œ× ×™×פשר ×œ×›× ×œ×©×ž×•×¨ ×ª×•×•×™× ×©××™× × × ×ž×¦××™× ×‘×˜×•×•×— הרב־לשוני הבסיסי ([//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane]).",
+ 'config-ibm_db2-low-db-pagesize' => "במסד ×”× ×ª×•× ×™× DB2 ×©×œ×›× ×™×© מרחב טבל×ות לפי מחדלי ×¢× ×’×•×“×œ דף בלתי־מספיק. גודל הדף צריך להיות '''32K''' ×ו יותר.",
'config-site-name' => '×©× ×”×•×•×™×§×™:',
'config-site-name-help' => '×–×” יופיע בשורת הכותרת של הדפדפן ובמקומות ×¨×‘×™× ×חרי×.',
'config-site-name-blank' => '× × ×œ×”×–×™×Ÿ ×©× ×œ×תר.',
@@ -4657,8 +6175,8 @@ chmod a+w $3</pre></div>',
'config-ns-other' => '×חר (לציין)',
'config-ns-other-default' => 'הוויקי־שלי',
'config-project-namespace-help' => "בהת×× ×œ×“×•×’×ž×” של ויקיפדיה, ×תרי ויקי ×¨×‘×™× ×©×•×ž×¨×™× ×¢×œ דפי המדיניות ×©×œ×”× ×‘× ×¤×¨×“ מדפי התוכן ×©×œ×”× ×‘\"'''מרחב השמות של המיז×'''\" (\"'''project namespace'''\").
-כל שמות ×”×“×¤×™× ×‘×ž×¨×—×‘ השמות ×”×–×” × ×¤×ª×—×™× ×‘×ª×—×™×œ×™×ª מסוימת ש××ª× ×™×›×•×œ×™× ×œ×”×’×“×™×¨ ×›×ן.
-ב×ופן מסורתי התחילית ×”×–×ת מבוססת על ×©× ×”×•×•×™×§×™, ×בל ×ינו יכול להכיל תווי פיסוק כגון \"#\" ×ו \":\".",
+כל שמות ×”×“×¤×™× ×‘×ž×¨×—×‘ השמות ×”×–×” ×ž×ª×—×™×œ×™× ×‘×ª×—×™×œ×™×ª מסוימת ש××ª× ×™×›×•×œ×™× ×œ×”×’×“×™×¨ ×›×ן.
+ב×ופן מסורתי התחילית ×”×–×ת מבוססת על ×©× ×”×•×•×™×§×™, ×•×”×™× ××™× ×” יכולה להכיל תווי פיסוק כגון \"#\" ×ו \":\".",
'config-ns-invalid' => 'מרחב השמות "<nowiki>$1</nowiki>" ×ינו תקין.
הקלידו ×©× ×חר למרחב השמות של המיז×.',
'config-ns-conflict' => 'מרחב השמות ×©×”×’×“×¨×ª× "<nowiki>$1</nowiki>" מתנגש ×¢× ×ž×¨×—×‘ שמות מובנה של מדיה־ויקי.
@@ -4683,6 +6201,8 @@ chmod a+w $3</pre></div>',
'config-subscribe' => '×œ×”×™×¨×©× ×œ[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce רשימת התפוצה ×¢× ×”×•×“×¢×•×ª על גרס×ות חדשות].',
'config-subscribe-help' => 'זוהי רשימת תפוצה ×¢× ×”×•×“×¢×•×ª מעטות שמשמשת להודעות על הוצ×ת גרס×ות, כולל עדכוני ×בטחה חשובי×.
מומלץ ×œ×”×™×¨×©× ×ליה ולעדכן ×ת מדיה־ויקי ×›×שר יוצ×ות גרס×ות חדשות.',
+ 'config-subscribe-noemail' => '× ×™×¡×™×ª× ×œ×”×™×¨×©× ×œ×¨×©×™×ž×ª תפוצה של הודעות בלי לתת כתובת דו×"ל.
+× × ×œ×ª×ª כתובת דו×"ל ×× ××ª× ×¨×•×¦×™× ×œ×”×™×¨×©× ×œ×¨×©×™×ž×ª התפוצה.',
'config-almost-done' => 'כמעט סיימת×!
×פשר לדלג על ש×ר ההגדרות ולהתקין ×ת הוויקי כבר עכשיו.',
'config-optional-continue' => 'הצגת ש×לות נוספות.',
@@ -4703,14 +6223,14 @@ chmod a+w $3</pre></div>',
בתסריט '''{{int:config-profile-fishbowl}}''' רק ×ž×©×ª×ž×©×™× ×©×§×™×‘×œ×• ×ישור ×™×›×•×œ×™× ×œ×¢×¨×•×š, ×בל כל ×”×’×•×œ×©×™× ×™×›×•×œ×™× ×œ×§×¨×•× ×ת ×”×“×¤×™× ×•×ת גרס××•×ª×™×”× ×”×§×•×“×ž×•×ª.
ב'''{{int:config-profile-private}}''' רק ×ž×©×ª×ž×©×™× ×©×§×™×‘×œ×• ×ישור ×™×›×•×œ×™× ×œ×§×¨×•× ×•×œ×¢×¨×•×š דפי×.
-הגדרות מורכבות של הרש×ות ×פשריות ×חרי ההתקנה, ר׳ ×ת [http://www.mediawiki.org/wiki/Manual:User_rights הפרק על ×”× ×•×©× ×”×–×” בספר ההדרכה].",
+הגדרות מורכבות של הרש×ות ×פשריות ×חרי ההתקנה, ר׳ ×ת [//www.mediawiki.org/wiki/Manual:User_rights הפרק על ×”× ×•×©× ×”×–×” בספר ההדרכה].",
'config-license' => 'זכויות ×™×•×¦×¨×™× ×•×¨×™×©×™×•×Ÿ:',
'config-license-none' => '×œ×œ× ×›×•×ª×¨×ª תחתית ×¢× ×¨×™×©×™×•×Ÿ',
'config-license-cc-by-sa' => 'קרי×ייטיב קומונז–ייחוס–שיתוף ×–×”×”',
+ 'config-license-cc-by' => 'קרי×ייטיב קומונז–ייחוס',
'config-license-cc-by-nc-sa' => 'קרי×ייטיב קומונז ×™×™×—×•×¡â€“×œ×œ× ×©×™×ž×•×© מסחרי–שיתוף ×–×”×”',
- 'config-license-cc-0' => 'Creative Commons ×פס',
- 'config-license-gfdl-old' => 'רישיון חופשי ×œ×ž×¡×ž×›×™× ×©×œ גנו, גרסה 1.2',
- 'config-license-gfdl-current' => 'רישיון חופשי ×œ×ž×¡×ž×›×™× ×©×œ גנו, גרסה 1.3 ×ו גרסה מ×וחרת יותר',
+ 'config-license-cc-0' => 'קרי×ייטיב קומונז ×פס (נחלת הכלל)',
+ 'config-license-gfdl' => 'רישיון חופשי ×œ×ž×¡×ž×›×™× ×©×œ גנו גרסה 1.3 ×ו חדשה יותר',
'config-license-pd' => 'נחלת הכלל',
'config-license-cc-choose' => 'בחרו רישיון קרי×ייטיב קומונז מות×× ×ישית',
'config-license-help' => "×תרי ויקי ×¦×™×‘×•×¨×™×™× ×¨×‘×™× ×ž×¤×¨×¡×ž×™× ×ת כל התרומות תחת [http://freedomdefined.org/Definition רישיון חופשי].
@@ -4719,8 +6239,9 @@ chmod a+w $3</pre></div>',
×× ××ª× ×¨×•×¦×™× ×פשרות להשתמש בטקסט מוויקיפדיה ו××ª× ×¨×•×¦×™× ×©×•×•×™×§×™×¤×“×™×” תוכל לקבל ×¢×•×ª×§×™× ×©×œ ×˜×§×¡×˜×™× ×ž×”×•×•×™×§×™ שלכ×, כד××™ ×œ×›× ×œ×‘×—×•×¨ ב'''רישיון קרי×ייטיב קומונז ייחוס–שיתוף ×–×”×”''' (CC-BY-SA).
-הרישיון החופשי ×œ×ž×¡×ž×›×™× ×©×œ גנו ×”×•× ×”×¨×™×©×™×•×Ÿ שבו ויקיפדיה השתמשה בעבר (GNU FDL ×ו GFDL).
-×”×•× ×¢×“×™×™×Ÿ תקין, ×בל יש בו תכונות מסוימות שמקשות על שימוש חוזר ועל פרשנות.",
+ויקיפדיה השתמשה בעבר ברישיון החופשי ×œ×ž×¡×ž×›×™× ×©×œ גנו (GNU FDL ×ו GFDL).
+×”×•× ×¢×“×™×™×Ÿ רישיון תקין, ×בל קשה להבנה.
+כמו־כן, קשה לעשות שימוש חוזר ביצירות שפורסמו לפי GFDL.",
'config-email-settings' => 'הגדרות דו×״ל',
'config-enable-email' => 'להפעיל דו×״ל יוצ×',
'config-enable-email-help' => '×× ××ª× ×¨×•×¦×™× ×©×“×•×״ל יעבוד, [http://www.php.net/manual/en/mail.configuration.php ×פשרויות הדו×״ל של PHP] צריכות להיות מוגדרות נכון.
@@ -4740,22 +6261,22 @@ chmod a+w $3</pre></div>',
×œ×©× ×™×™×©×œ×—×• תגובות שגי××” (bounce).
שרתי דו×״ל ×¨×‘×™× ×“×•×¨×©×™× ×©×œ×¤×—×•×ª החלק של ×”×ž×ª×—× ×™×”×™×” תקין.',
'config-upload-settings' => 'העל×ת ×§×‘×¦×™× ×•×ª×ž×•× ×•×ª',
- 'config-upload-enable' => '×פשור העל×ת קבצי×',
+ 'config-upload-enable' => 'ל×פשר העל×ת קבצי×',
'config-upload-help' => 'העל×ות ×§×‘×¦×™× ×—×•×©×¤×•×ª ×ת השרת ×©×œ×›× ×œ×¡×™×›×•× ×™ ×בטחה.
-למידע נוסף, קִר×ו ×ת [http://www.mediawiki.org/wiki/Manual:Security חלק ×”×בטחה] בספר ההדרכה.
+למידע נוסף, קִר×ו ×ת [//www.mediawiki.org/wiki/Manual:Security חלק ×”×בטחה] בספר ההדרכה.
כדי להפעיל העל×ת ×§×‘×¦×™× ×©× ×• ×ת ההרש×ות של התיקייה <code>images</code> תחת תיקיית השורש של מדיה־ויקי כך ששרת הווב יוכל לכתוב ×ליה.
×–×” מפעיל ×ת ×”×פשרות ×”×–×ת.',
- 'config-upload-deleted' => 'תיקיית ×”×§×‘×¦×™× ×©× ×ž×—×§×•:',
+ 'config-upload-deleted' => 'תיקיית ×œ×§×‘×¦×™× ×©× ×ž×—×§×•:',
'config-upload-deleted-help' => 'בחרו ×ת התיקייה ל×רכוב ×§×‘×¦×™× ×ž×—×•×§×™×.
כד××™ שזה ×œ× ×™×”×™×” נגיש לכל ×”×¢×•×œ× ×“×¨×š הרשת.',
'config-logo' => 'כתובת הסמל:',
- 'config-logo-help' => 'המר××” ההתחלתי של מדיה־ויקי מכיל ×ž×§×•× ×œ×¡×ž×œ של 135 על 160 ×¤×™×§×¡×œ×™× ×‘×¤×™× ×” השמ×לית העליונה (ימנית עבור שפות שנכתבות מימין לשמ×ל).
+ 'config-logo-help' => 'המר××” ההתחלתי של מדיה־ויקי מכיל ×ž×§×•× ×œ×¡×ž×œ של 135 על 160 ×¤×™×§×¡×œ×™× ×‘×¤×™× ×” העליונה מעל תפריט הצד.
יש להעלות תמונה בגודל מת××™× ×•×œ×”×›× ×™×¡ ×ת הכתובת ×›×ן.
×× ××™× ×›× ×¨×•×¦×™× ×¡×ž×œ, הש×ירו ×ת התיבה ×”×–×ת ריקה.',
'config-instantcommons' => 'להפעיל ×ת Instant Commons',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons Instant Commons] ×”×™× ×ª×›×•× ×” שמ×פשרת ל×תרי ויקי להשתמש בתמונות, ×‘×¦×œ×™×œ×™× ×•×‘×ž×“×™×” ×חרת שנמצ×ת ב×תר [http://commons.wikimedia.org/ ויקישיתוף] (Wikimedia Commons).
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] ×”×™× ×ª×›×•× ×” שמ×פשרת ל×תרי ויקי להשתמש בתמונות, ×‘×¦×œ×™×œ×™× ×•×‘×ž×“×™×” ×חרת שנמצ×ת ב×תר [//commons.wikimedia.org/ ויקישיתוף] (Wikimedia Commons).
כדי לעשות ×ת ×–×”, מדיה־ויקי צריך לגשת ל×ינטרנט.
למידע נוסף על התכונה ×”×–×ת, כולל הור×ות ×יך להפעיל ×ת ×–×” ל×תרי ויקי ש××™× × ×•×™×§×™×©×™×ª×•×£, ר׳ [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos ×ת ספר ההדרכה].',
@@ -4792,6 +6313,7 @@ chmod a+w $3</pre></div>',
'config-install-step-failed' => 'נכשל',
'config-install-extensions' => 'כולל הרחבות',
'config-install-database' => 'הקמת מסד נתוני×',
+ 'config-install-schema' => 'יצירת סכמה',
'config-install-pg-schema-not-exist' => 'סכמה של PostgreSQL ××™× ×” קיימת',
'config-install-pg-schema-failed' => 'יצירת טבל×ות נכשלה.
וד×ו ×›×™ המשתמש "$1" יכול לכתוב לסכמה "$2".',
@@ -4799,10 +6321,17 @@ chmod a+w $3</pre></div>',
'config-install-pg-plpgsql' => 'בדיקת שפת PL/pgSQL',
'config-pg-no-plpgsql' => 'צריך להתקין ×ת שפת PL/pgSQL במסד ×”× ×ª×•× ×™× $1',
'config-pg-no-create-privs' => 'לחשבון ×©×”×’×“×¨×ª× ×œ×”×ª×§× ×” ×ין מספיק הרש×ות ליצירת חשבון.',
+ 'config-pg-not-in-role' => 'החשבון ×©×¦×™×™× ×ª× ×¢×‘×•×¨ משתמש שרת הווב כבר קיי×.
+החשבון ×©×¡×™×¤×§×ª× ×œ×”×ª×§× ×” ×ינו חשבון בעל הרש×ות (superuser) ו×ינו חבר בתפקיד (role) של משתמש שרת הווב, ××– ×ין ×פשרות ליצור ×¢×¦×ž×™× ×‘×‘×¢×œ×•×ª משתמש שרת הווב.
+
+כעת נדרש במדיה־ויקי שהטבל×ות יהיו בבעלות של משתמש שרת הווב. × × ×œ×¦×™×™×Ÿ ×©× ×—×©×‘×•×Ÿ שרת וב ×חר ×ו ללחוץ על כפתור "×חורה" ולציין משתמש התקנה בעל הרש×ות מת×ימות.',
'config-install-user' => 'יצירת חשבון במסד נתוני×',
'config-install-user-alreadyexists' => 'המשתמש "$1" כבר קיי×',
'config-install-user-create-failed' => 'יצירת משתמש "$1" נכשלה: $2',
'config-install-user-grant-failed' => 'מתן הרש×ות למשתמש "$1" נכשל: $2',
+ 'config-install-user-missing' => 'המשתמש "$1" שצוין ×ינו קיי×.',
+ 'config-install-user-missing-create' => 'המשתמש "$1" שצוין ×ינו קיי×.
+× × ×œ×œ×—×•×¥ על תיבת בסימון "יצירת חשבון" להלן ×× ××ª× ×¨×•×¦×™× ×œ×™×¦×•×¨ ×ותו.',
'config-install-tables' => 'יצירת טבל×ות',
'config-install-tables-exist' => "'''×זהרה:''' נר××” שטבל×ות מדיה־ויקי כבר קיימות.
מדלג על יצירתן.",
@@ -4813,8 +6342,10 @@ chmod a+w $3</pre></div>',
מדלג על הרשומה ההתחלתית.",
'config-install-stats' => '×תחול סטטיסטיקות',
'config-install-keys' => 'יצירת מפתחות סודיי×',
+ 'config-insecure-keys' => "'''×זהרה''': {{PLURAL:$2|מפתח|מפתחות}} ×בטחה ($1) {{PLURAL:$2|שנוצר|שנוצרו}} במהלך ההתקנה {{PLURAL:$2|×ינו בטוח|××™× × ×‘×˜×•×—×™×}} מספיק. מומלץ לשקול לשנות {{PLURAL:$2|×ותו|×ות×}} ידנית.",
'config-install-sysop' => 'יצירת חשבון מפעיל',
- 'config-install-subscribe-fail' => '×”×¨×™×©×•× ×œÖ¾mediawiki-announce ×œ× ×”×¦×œ×™×—',
+ 'config-install-subscribe-fail' => '×”×¨×™×©×•× ×œÖ¾mediawiki-announce ×œ× ×”×¦×œ×™×—: $1',
+ 'config-install-subscribe-notpossible' => 'cURL ××™× ×” מותקנת ו־allow_url_fopen ××™× ×” זמינה.',
'config-install-mainpage' => 'יצירת דף ר×שי ×¢× ×ª×•×›×Ÿ לפי בררת מחדל.',
'config-install-extension-tables' => 'יצירת טבל×ות להרחבות מופעלות',
'config-install-mainpage-failed' => '×œ× ×”×¦×œ×™×—×” הכנסת דף ר×שי: $1.',
@@ -4824,17 +6355,68 @@ chmod a+w $3</pre></div>',
תוכנת ההתקנה יצרה ×ת הקובץ <code>LocalSettings.php</code>.
×”×•× ×ž×›×™×œ ×ת כל ההגדרות שלכ×.
-תצטרכו להוריד ×ותו ×•×œ×©×™× ×ותו בבסיס ההתקנה של הוויקי ×©×œ×›× (×ות התיקייה שבה × ×ž×¦× ×”×§×•×‘×¥ index.php). ההורדה הייתה ×מורה להתחיל ב×ופן ×וטומטי.
+תצטרכו להוריד ×ותו ×•×œ×©×™× ×ותו בבסיס ההתקנה של הוויקי ×©×œ×›× (×ותה התיקייה שבה × ×ž×¦× ×”×§×•×‘×¥ index.php). ההורדה הייתה ×מורה להתחיל ב×ופן ×וטומטי.
-×× ×”×”×•×¨×“×” ×œ× ×”×ª×—×™×œ×”, ×× ×× ×‘×™×˜×œ×ª× ×ותה, ×פשר להתחיל ×ותה מחדש בלחיצה על הקישור הב×:
+×× ×”×”×•×¨×“×” ×œ× ×”×ª×—×™×œ×”, ×ו ×× ×‘×™×˜×œ×ª× ×ותה, ×פשר להתחיל ×ותה מחדש בלחיצה על הקישור הב×:
$3
-'''שימו לב''': ×× ×œ× ×ª×¢×©×• ×–×ת עכשיו, קובץ ההגדרות המחולל ×œ× ×™×”×™×” זמין ×œ×›× ×©×•×‘.
+'''שימו לב''': ×× ×œ× ×ª×¢×©×• ×–×ת עכשיו, קובץ ההגדרות המחוּלל ×œ× ×™×”×™×” זמין ×œ×›× ×©×•×‘.
×חרי שתעשו ×ת ×–×”, תוכלו '''[$2 להיכנס לוויקי שלכ×]'''.",
'config-download-localsettings' => 'הורדת LocalSettings.php',
'config-help' => 'עזרה',
+ 'mainpagetext' => "'''תוכנת מדיה־ויקי הותקנה בהצלחה.'''",
+ 'mainpagedocfooter' => 'היעזרו ב[//meta.wikimedia.org/wiki/Help:Contents מדריך למשתמש] למידע על שימוש בתוכנת הוויקי.
+
+== ×§×™×©×•×¨×™× ×©×™×ž×•×©×™×™× ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings רשימת ההגדרות]
+* [//www.mediawiki.org/wiki/Manual:FAQ ש×לות ותשובות על מדיה־ויקי]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce רשימת התפוצה על השקת גרס×ות]',
+);
+
+/** Hindi (हिनà¥à¤¦à¥€) */
+$messages['hi'] = array(
+ 'mainpagetext' => "'''मीडियाविकिका इनà¥à¤¸à¥à¤Ÿà¥‰à¤²à¥‡à¤¶à¤¨ पूरा हो गया हैं ।'''",
+ 'mainpagedocfooter' => 'विकि सॉफà¥à¤Ÿà¤µà¥‡à¤¯à¤°à¤•à¥‡ इसà¥à¤¤à¥‡à¤®à¤¾à¤² के लिये [//meta.wikimedia.org/wiki/Help:Contents उपयोगकरà¥à¤¤à¤¾ गाईड] देखें ।
+
+== शà¥à¤°à¥à¤µà¤¾à¤¤ करें ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings कॉनà¥à¤«à¤¿à¤—रेशन सेटींगकी सूची]
+* [//www.mediawiki.org/wiki/Manual:FAQ मीडियाविकिके बारे में पà¥à¤°à¤¾à¤¯: पूछे जाने वाले सवाल]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce मीडियाविकि मेलिंग लिसà¥à¤Ÿ]',
+);
+
+/** Fiji Hindi (Latin script) (Fiji Hindi)
+ * @author Thakurji
+ */
+$messages['hif-latn'] = array(
+ 'mainpagetext' => "'''MediaWiki ke safalta se install kar dewa gais hai.'''",
+ 'mainpagedocfooter' => "Wiki software ke use kare ke aur jaankari ke khatir [//meta.wikimedia.org/wiki/Help:Contents User's Guide] ke dekho.
+
+== Getting started ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Hiligaynon (Ilonggo)
+ * @author Anjoeli9806
+ */
+$messages['hil'] = array(
+ 'mainpagetext' => "'''Ang MediaWiki madinalag-on nga na-instala.'''",
+ 'mainpagedocfooter' => " Magkonsulta sa [//meta.wikimedia.org/wiki/Help:Contents User's Guide] para sa mga impormasyon sa paggamit sang wiki nga software.
+
+== Pag-umpisa ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista sang mga konpigorasyon sang pagkay-o]
+* [//www.mediawiki.org/wiki/Manual:FAQ Mga Masami Pamangkoton sa MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista sang mga ginapadal-an sang sulat kon may paguha-on nga MediaWiki]",
+);
+
+/** Croatian (Hrvatski) */
+$messages['hr'] = array(
+ 'mainpagetext' => "'''Softver MediaWiki je uspješno instaliran.'''",
+ 'mainpagedocfooter' => 'Pogledajte [//meta.wikimedia.org/wiki/MediaWiki_localisation dokumentaciju o prilagodbi suÄelja]
+i [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide VodiÄ za suradnike] za pomoć pri uporabi i podeÅ¡avanju.',
);
/** Upper Sorbian (Hornjoserbsce)
@@ -4891,10 +6473,10 @@ Skontroluj swój php.ini a zawěsć, zo <code>session.save_path</code> je na pra
'config-page-existingwiki' => 'Eksistowacy wiki',
'config-help-restart' => 'Chceš wšě składowane daty hašeć, kotrež sy zapodał a instalaciski proces znowa startować?',
'config-restart' => 'Haj, znowa startować',
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWiki Startowa strona MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents Nawod za wužiwarjow]
-* [http://www.mediawiki.org/wiki/Manual:Contents Nawod za administratorow]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Huste prašenja]
+ 'config-sidebar' => '* [//www.mediawiki.org MediaWiki Startowa strona MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents Nawod za wužiwarjow]
+* [//www.mediawiki.org/wiki/Manual:Contents Nawod za administratorow]
+* [//www.mediawiki.org/wiki/Manual:FAQ Huste prašenja]
----
* <doclink href=Readme>ÄŒitaj mje</doclink>
* <doclink href=ReleaseNotes>Wersijowe informacije</doclink>
@@ -4909,8 +6491,13 @@ Njemóžeš MediaWiki instalować.',
Ale MediaWiki wužaduje sej PHP $2 abo wyši.',
'config-unicode-using-utf8' => 'Za normalizaciju Unicode so utf8_normalize.so Briona Vibbera wužiwa.',
'config-unicode-using-intl' => 'Za normalizaciju Unicode so [http://pecl.php.net/intl PECL-rozšěrjenje intl] wužiwa.',
- 'config-no-db' => 'Njeda so přihódny ćěrjak datoweje banki namakać!',
- 'config-no-fts3' => "'''Warnowanje''': SQLite je so bjez [http://sqlite.org/fts3.html FTS3-modula] kompilował, pytanske funkcije njebudu k dispoziciji stać.",
+ 'config-no-db' => 'Njeda so přihódny ćěrjak datoweje banki namakać! Dyrbiš ćěrjak datoweje banki za PHP instalować.
+Slědowace typy datoweje banki so podpěruja: $1.
+
+Jeli wužiwaš zhromadnje wužiwany serwer, proš swojeho poskićowarja, zo by přihódny ćěrjak datoweje banki instalował.
+Jeli sy PHP sam kompilował, konfiguruj jón znowa z aktiwizowanym programom datoweje banki, na přikład z pomocu <code>./configure --with-mysql</code>.
+Jeli sy PHP z Debianoweho abo Ubuntuoweho paketa instalował, dyrbiš tež modul php5-mysql instalować.',
+ 'config-no-fts3' => "'''Warnowanje''': SQLite je so bjez [//sqlite.org/fts3.html FTS3-modula] kompilował, pytanske funkcije njebudu k dispoziciji stać.",
'config-register-globals' => "'''Warnowanje: Funkcija <code>[http://php.net/register_globals register_globals]</code> PHP je zmóžnjena.'''
'''Znjemóžń ju, jeli móžeš.'''
MediaWiki budźe fungować, ale twój serwer je potencielnym wěstotnym njedostatkam wustajeny.",
@@ -4926,7 +6513,7 @@ Jeli wužiwaš Mandrake, instaluj paket php-xml.',
'config-memory-bad' => "'''Warnowanje:''' PHP-parameter <code>memory_limit</code> ma hódnotu $1,
To je najskerje přeniske.
Instalacija móhła so njeporadźić!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] je instalowany',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] je instalowany',
'config-apc' => '[http://www.php.net/apc APC] je instalowany',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] je instalowany',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] je instalowany',
@@ -4944,7 +6531,7 @@ Instalacija bu přetorhnjena.",
'config-db-password' => 'Hesło datoweje banki:',
'config-db-password-empty' => 'Prošu zapodaj hesło za noweho wužiwarja datoweje banki: $1.
Byrnjež było móžno wužiwarjow bjez hesłow wutworić, njeje to wěste.',
- 'config-db-install-username' => 'Zapodaj wužiwarske mjeno, kotrež budźe so za zwisk z datowej banku za instalaciski proces wužiwać.
+ 'config-db-install-username' => 'Zapodaj wužiwarske mjeno, kotrež budźe so za zwisk z datowej banku za instalaciski proces wužiwać.
To njeje wužiwarske mjeno konta MediaWiki; to je wužiwarske mjeno za twoju datowu banku.',
'config-db-install-password' => 'Zapodaj hesło, kotrež budźe so za zwisk z datowej banku za instalaciski proces wužiwać.
To njeje hesło konta MediaWiki; to je hesło za twoju datowu banku.',
@@ -4969,7 +6556,7 @@ Změń ju jenož, jeli su pÅ™eswÄ›dÄiwe pÅ™iÄiny za to.',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
'config-support-mysql' => '* $1 je primarny cil za MediaWiki a podpěruje so najlěpje ([http://www.php.net/manual/en/mysql.installation.php Nawod ke kompilowanju PHP z MySQL-podpěru])',
- 'config-support-postgres' => '* $1 je popularny system datoweje banki zjawneho žórła jako alternatiwa k MySQL ([http://www.php.net/manual/en/pgsql.installation.php nawod za kompilowanje PHP z podpěru PostgreSQL])',
+ 'config-support-postgres' => '* $1 je popularny system datoweje banki zjawneho žórÅ‚a jako alternatiwa k MySQL ([http://www.php.net/manual/en/pgsql.installation.php nawod za kompilowanje PHP z podpÄ›ru PostgreSQL]). MóhÅ‚o hišće nÄ›kotre zmylki eksistować, a njeporuÄa so jón w produktiwnej wokolinje wužiwać.',
'config-header-mysql' => 'Nastajenja MySQL',
'config-header-postgres' => 'Nastajenja PostgreSQL',
'config-header-sqlite' => 'Nastajenja SQLite',
@@ -5050,7 +6637,7 @@ Podaj druhe wužiwarske mjeno.',
'config-admin-password-same' => 'Hesło dyrbi so wot wužiwarskeho mjena rozeznać.',
'config-admin-password-mismatch' => 'Wobě hesle, kotrejž sy zapodał, njejstej jenakej.',
'config-admin-email' => 'E-mejlowa adresa:',
- 'config-admin-email-help' => 'Zapodaj tu e-mejlowu adresu, zo by přijimanje e-mejlow wot druhich wužiwarjow w tutym wikiju zmóžnił, swoje hesło wróćo stajił a zdźělenki wo změnach na swojich wobkedźbowanych stronach dostał.',
+ 'config-admin-email-help' => 'Zapodaj tu e-mejlowu adresu, zo by přijimanje e-mejlow wot druhich wužiwarjow w tutym wikiju zmóžnił, swoje hesło wróćo stajił a zdźělenki wo změnach na swojich wobkedźbowanych stronach dostał. Móžeš polo prózdne wostajić.',
'config-admin-error-user' => 'Interny zmylk při wutworjenju administratora z mjenom "<nowiki>$1</nowiki>".',
'config-admin-error-password' => 'Interny zmylk při nastajenju hesła za administratora "<nowiki>$1</nowiki>": <pre>$2</pre>',
'config-admin-error-bademail' => 'Sy njepłaćiwu e-mejlowu adresu zapodał.',
@@ -5068,9 +6655,7 @@ MóžeÅ¡ nÄ›tko zbytnu konfiguraciju pÅ™eskoÄić a wiki hnydom instalować.',
'config-license-none' => 'Žane licencne podaća w nohowej lince',
'config-license-cc-by-sa' => 'Creative Commons Attribution Share Alike',
'config-license-cc-by-nc-sa' => 'Creative Commons Attribution Non-Commercial Share Alike',
- 'config-license-cc-0' => 'Creative Commons "Zero"',
- 'config-license-gfdl-old' => 'GNU Free Documentation License 1.2',
- 'config-license-gfdl-current' => 'GNU Free Documentation License 1.3 abo nowša',
+ 'config-license-cc-0' => 'Creative Commons Zero (zjawnosći přistupny)',
'config-license-pd' => 'Powšitkownosći přistupny',
'config-license-cc-choose' => 'Swójsku licencu Creative Commons wubrać',
'config-email-settings' => 'E-mejlowe nastajenja',
@@ -5143,14 +6728,36 @@ Wutworjenje so přeskakuje.",
'config-install-interwiki-exists' => "'''Warnowanje''': Zda so, zo tabela interwikjow hižo zapiski wobsahuje.
Standardna lisćina sp přeskakuje.",
'config-install-stats' => 'Statistika so inicializuje',
- 'config-install-keys' => 'Tworjenje tajneho kluÄa',
+ 'config-install-keys' => 'Tajne kluÄe so tworja',
'config-install-sysop' => 'Tworjenje administratoroweho wužiwarskeho konta',
- 'config-install-subscribe-fail' => 'Abonowanje "mediawiki-announce" njemóžno',
+ 'config-install-subscribe-fail' => 'Abonowanje "mediawiki-announce" njemóžno: $1',
'config-install-mainpage' => 'HÅ‚owna strona so ze standardnym wobsahom wutworja',
'config-install-extension-tables' => 'Tabele za zmóžnjene rozšěrjenja so tworja',
'config-install-mainpage-failed' => 'Powěsć njeda so zasunyć: $1',
'config-download-localsettings' => 'LocalSettings.php sćahnyć',
'config-help' => 'pomoc',
+ 'mainpagetext' => "'''MediaWiki bu wuspěšnje instalowany.'''",
+ 'mainpagedocfooter' => 'Prošu hlej [//meta.wikimedia.org/wiki/Help:Contents dokumentaciju] za informacije wo wužiwanju softwary.
+
+== Za nowaÄkow ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Wo nastajenjach]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
+);
+
+/** Haitian (Kreyòl ayisyen)
+ * @author Boukman
+ */
+$messages['ht'] = array(
+ 'mainpagetext' => "'''MedyaWiki byen enstale l.'''",
+ 'mainpagedocfooter' => 'Konsilte [//meta.wikimedia.org/wiki/Help:Konteni Gid Itilizatè] pou enfòmasyon sou kijan pou w itilize logisyèl wiki a.
+
+== Kijan pou kòmanse ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lis paramèt yo pou konfigirasyon]
+* [//www.mediawiki.org/wiki/Manyèl:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lis diskisyon ki parèt sou MediaWiki]',
);
/** Hungarian (Magyar)
@@ -5163,8 +6770,17 @@ $messages['hu'] = array(
'config-information' => 'Információ',
'config-localsettings-upgrade' => 'Már létezik a <code>LocalSettings.php</code> fájl.
A telepített szoftver frissítéséhez írd be az alábbi mezőbe a <code>$wgUpgradeKey</code> beállítás értékét, melyet a LocalSettings.php nevű fájlban találhatsz meg.',
+ 'config-localsettings-cli-upgrade' => 'A LocalSettings.php fájl megtalálható.
+A telepített rendszer frissítéséhez futtasd az update.php-t.',
'config-localsettings-key' => 'Frissítési kulcs:',
'config-localsettings-badkey' => 'A megadott kulcs érvénytelen.',
+ 'config-upgrade-key-missing' => 'A telepítő a MediaWiki meglévő példányát észlelte.
+A telepített rendszer frissítéséhez helyezd el az alábbi sort a LocalSettings.php végére:
+
+$1',
+ 'config-localsettings-incomplete' => 'A meglévő LocalSettings.php hiányosnak tűnik.
+A(z) $1 változó értéke nincs beállítva.
+Módosítsd a LocalSettings.php fájlt úgy, hogy ez a változó be legyen állítva, majd kattints a „Folytatás†gombra.',
'config-localsettings-connection-error' => 'Nem sikerült csatlakozni az adatbázishoz a LocalSettings.php-ben vagy az AdminSettings.php-ben megadott adatokkal. Ellenőrizd a beállításokat, majd próbáld újra.
$1',
@@ -5210,10 +6826,10 @@ Ez a program szabad szoftver; terjeszthető illetve módosítható a Free Softwa
Ez a program abban a reményben kerül közreadásra, hogy hasznos lesz, de minden egyéb '''garancia nélkül''', az '''eladhatóságra''' vagy '''valamely célra való alkalmazhatóságra''' való származtatott garanciát is beleértve. További részleteket a GNU General Public License tartalmaz.
A felhasználónak a programmal együtt meg kell kapnia a <doclink href=Copying>GNU General Public License egy példányát</doclink>; ha mégsem kapta meg, akkor írjon a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. címre, vagy [http://www.gnu.org/copyleft/gpl.html tekintse meg online].",
- 'config-sidebar' => '* [http://www.mediawiki.org A MediaWiki honlapja]
-* [http://www.mediawiki.org/wiki/Help:Contents Felhasználói kézikönyv]
-* [http://www.mediawiki.org/wiki/Manual:Contents Útmutató adminisztrátoroknak]
-* [http://www.mediawiki.org/wiki/Manual:FAQ GyIK]
+ 'config-sidebar' => '* [//www.mediawiki.org A MediaWiki honlapja]
+* [//www.mediawiki.org/wiki/Help:Contents Felhasználói kézikönyv]
+* [//www.mediawiki.org/wiki/Manual:Contents Útmutató adminisztrátoroknak]
+* [//www.mediawiki.org/wiki/Manual:FAQ GyIK]
----
* <doclink href=Readme>Ismertető</doclink>
* <doclink href=ReleaseNotes>Kiadási megjegyzések</doclink>
@@ -5229,9 +6845,16 @@ azonban a MediaWikinek PHP $2, vagy újabb szükséges.',
'config-unicode-using-utf8' => 'A rendszer Unicode normalizálására Brion Vibber utf8_normalize.so könyvtárát használja.',
'config-unicode-using-intl' => 'A rendszer Unicode normalizálására az [http://pecl.php.net/intl intl PECL kiterjesztést] használja.',
'config-unicode-pure-php-warning' => "'''Figyelmeztetés''': Az Unicode normalizáláshoz szükséges [http://pecl.php.net/intl intl PECL kiterjesztés] nem érhető el, helyette a lassú, PHP alapú implementáció lesz használva.
-Ha nagy látogatottságú oldalt üzemeltetsz, itt találhatsz további információkat [http://www.mediawiki.org/wiki/Unicode_normalization_considerations a témáról].",
- 'config-no-db' => 'Nem sikerült egyetlen használható adatbázismeghajtót sem találni.',
- 'config-no-fts3' => "'''Figyelmeztetés''': Az SQLite [http://sqlite.org/fts3.html FTS3 modul] nélkül lett fordítva, a keresési funkciók nem fognak működni ezen a rendszeren.",
+Ha nagy látogatottságú oldalt üzemeltetsz, itt találhatsz további információkat [//www.mediawiki.org/wiki/Unicode_normalization_considerations a témáról].",
+ 'config-unicode-update-warning' => "'''Figyelmeztetés''': Az Unicode normalizáláshoz szükséges burkolókönyvtár [http://site.icu-project.org/ ICU projekt] függvénykönyvtárának régebbi változatát használja.
+Ha ügyelni kívánsz a Unicode használatára, fontold meg a [//www.mediawiki.org/wiki/Unicode_normalization_considerations frissítését].",
+ 'config-no-db' => 'Nem sikerült egyetlen használható adatbázis-illesztőprogramot sem találni. Telepítened kell egyet a PHP-hez.
+A következő adatbázistípusok támogatottak: $1.
+
+Ha megosztott tárhelyszolgáltatást használsz, kérd meg a szolgáltatódat, hogy telepítsen egy megfelelő illesztőprogramot.
+Ha a PHP-t magad fordítottad, konfiguráld újra úgy, hogy engedélyezve legyen egy adatbáziskliens, pl. a <code>./configure --with-mysql</code> parancs használatával.
+Ha a PHP-t Debian vagy Ubuntu csomaggal telepítetted, akkor szükséged lesz a php5-mysql modulra is.',
+ 'config-no-fts3' => "'''Figyelmeztetés''': Az SQLite [//sqlite.org/fts3.html FTS3 modul] nélkül lett fordítva, a keresési funkciók nem fognak működni ezen a rendszeren.",
'config-register-globals' => "'''Figyelmeztetés: A PHP <code>[http://php.net/register_globals register_globals]</code> beállítása engedélyezve van.'''
'''Tiltsd le, ha van rá lehetőséged.'''
A MediaWiki működőképes a beállítás használata mellett, de a szerver biztonsági kockázatnak lesz kitéve.",
@@ -5247,20 +6870,24 @@ A MediaWiki csak akkor telepíthető, ha ki van kapcsolva.",
'config-ze1' => "'''Kritikus hiba: a [http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_sybase] aktív!'''
Ez a beállítás borzalmas hibákat okoz a MediaWiki futása során.
A MediaWiki csak akkor telepíthető, ha ki van kapcsolva.",
+ 'config-safe-mode' => "'''Figyelmeztetés:''' A PHP [http://www.php.net/features.safe-mode safe mode]-ja be van kapcsolva.
+Problémákat okozhat, különösen a fájlfeltöltéseknél és a <code>math</code>-támogatás használatánál.",
'config-xml-bad' => 'A PHP XML-modulja hiányzik.
Egyes MediaWiki-funkciók, melyek ezt a modult igénylik, nem fognak működni ilyen beállítások mellett.
Ha Madrake-et futtatsz, telepítsd a php-xml csomagot.',
'config-pcre' => 'Úgy tűnik, hogy a PCRE támogató modul hiányzik.
A MediaWikinek Perl-kompatibilis reguláriskifejezés-függvényekre van szüksége a működéshez.',
+ 'config-pcre-no-utf8' => "'''Kritikus hiba''': Úgy tűnik, hogy a PHP PRCE modulja PRCE_UTF8 támogatás nélkül lett fordítva.
+A MediaWikinek UTF-8-támogatásra van szüksége a helyes működéshez.",
'config-memory-raised' => 'A PHP <code>memory_limit</code> beállításának értéke: $1. Meg lett növelve a következő értékre: $2.',
'config-memory-bad' => "'''Figyelmeztetés:''' A PHP <code>memory_limit</code> beállításának értéke $1.
Ez az érték valószínűleg túl kevés, a telepítés sikertelen lehet.",
- 'config-xcache' => 'Az [http://trac.lighttpd.net/xcache/ XCache] telepítve van',
+ 'config-xcache' => 'Az [http://xcache.lighttpd.net/ XCache] telepítve van',
'config-apc' => 'Az [http://www.php.net/apc APC] telepítve van',
'config-eaccel' => 'Az [http://eaccelerator.sourceforge.net/ eAccelerator] telepítve van',
'config-wincache' => 'A [http://www.iis.net/download/WinCacheForPhp WinCache] telepítve van',
- 'config-no-cache' => "'''Figyelmeztetés:''' Nem található [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] és [http://www.iis.net/download/WinCacheForPhp WinCache] sem.
-Az objektum-gyorsítótárazás nem lesz engedélyezve.",
+ 'config-no-cache' => "'''Figyelmeztetés:''' Nem található [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] és [http://www.iis.net/download/WinCacheForPhp WinCache] sem.
+Objektum-gyorsítótárazás nem lesz engedélyezve.",
'config-diff3-bad' => 'GNU diff3 nem található.',
'config-imagemagick' => 'Az ImageMagick megtalálható a rendszeren: <code>$1</code>.
A bélyegképek készítése engedélyezve lesz a feltöltések engedélyezése esetén.',
@@ -5270,8 +6897,17 @@ Bélyegképek készítése működni fog, miután engedélyezted a fájlfeltölt
A bélyegképek készítése le lesz tiltva.',
'config-no-uri' => "'''Hiba:''' Nem sikerült megállapítani a jelenlegi URI-t.
Telepítés megszakítva.",
+ 'config-using-server' => 'A következÅ‘ szervernév használata: „<nowiki>$1</nowiki>â€.',
+ 'config-using-uri' => 'A következÅ‘ szerver URL-cím használata: „<nowiki>$1$2</nowiki>â€.',
'config-uploads-not-safe' => "'''Figyelmeztetés:''' a feltöltésekhez használt alapértelmezett könyvtárban (<code>$1</code>) tetszőleges külső szkript futtatható.
-Habár a MediaWiki ellenőrzi a feltöltött fájlokat az efféle biztonsági veszélyek megtalálása érdekében, a feltöltés engedélyezése előtt erősen ajánlott a [http://www.mediawiki.org/wiki/Manual:Security#Upload_security a sérülékenység megszüntetése].",
+Habár a MediaWiki ellenőrzi a feltöltött fájlokat az efféle biztonsági veszélyek megtalálása érdekében, a feltöltés engedélyezése előtt erősen ajánlott a [//www.mediawiki.org/wiki/Manual:Security#Upload_security a sérülékenység megszüntetése].",
+ 'config-brokenlibxml' => 'A rendszereden a PHP és libxml2 verziók olyan kombinációja található meg, ami hibásan működik, és észrevehetetlen adatkárosodást okoz a MediaWikiben és más webalkalmazásokban.
+Frissíts a PHP 5.2.9-es vagy újabb, valamint a libxml2 2.7.3 vgy újabb verziójára ([//bugs.php.net/bug.php?id=45996 A hiba bejelentése a PHP-nél]).
+Telepítés megszakítva.',
+ 'config-using531' => 'A MediaWiki nem használható a PHP $1-es verziójával, mert hiba van a <code>__call()</code> függvénynek átadott referenciaparaméterekkel.
+A probléma kiküszöböléséhez frissíts a PHP 5.3.2-es verziójára, vagy használd a korábbi, 5.3.0-ásat.
+Telepítés megszakítva.',
+ 'config-suhosin-max-value-length' => 'A Suhosin telepítve van, és a GET paraméter hosszát $1 bájtra korlátozza. A MediaWiki erőforrásbetöltő összetevője megkerüli a problémát, de így csökkenni fog a teljesítmény. Ha lehetséges, állítsd be a suhosin.get.max_value_length értékét legalább 1024-re a php.iniben, és állítsd be a $wgResourceLoaderMaxQueryLength változót ugyanerre az értékre a LocalSettings.php-ben.',
'config-db-type' => 'Adatbázis típusa:',
'config-db-host' => 'Adatbázis hosztneve:',
'config-db-host-help' => 'Ha az adatbázisszerver másik szerveren található, add meg a hosztnevét vagy az IP-címét.
@@ -5287,9 +6923,16 @@ Ne tartalmazzon szóközt.
Ha megosztott webtárhelyet használsz, a szolgáltatód vagy egy konkrét adatbázisnevet ad neked használatra, vagy te magad hozhatsz létre adatbázisokat a vezérlőpulton keresztül.',
'config-db-name-oracle' => 'Adatbázisséma:',
+ 'config-db-account-oracle-warn' => 'Oracle adatbázisba való telepítésnek három támogatott módja van:
+
+Ha a telepítési folyamat során adatbázisfiókot szeretnél létrehozni, akkor egy olyan fiókot kell használnod, mely rendelkezik SYSDBA jogosultsággal, majd meg kell adnod a létrehozandó, webes hozzáféréshez használt fiók adatait. Emellett a fiók kézzel is létrehozható, ekkor ennek az adatait kell megadni (a fióknak rendelkeznie kell megfelelő jogosul adatbázis-objektumok létrehozásához), vagy megadhatsz két fiókot: egyet a létrehozáshoz szükséges jogosultságokkal, és egy korlátozottat a webes hozzáféréshez.
+
+A megfelelő jogosultságokkal rendelkező fiók létrehozásához használható szkript a szoftver „maintenance/oracle/†könyvtárában található. Ne feledd, hogy korlátozott fiók használatakor az alapértelmezett fiókkal nem végezhetőek el a karbantartási műveletek.',
'config-db-install-account' => 'A telepítéshez használt felhasználói fiók adatai',
'config-db-username' => 'Felhasználónév:',
'config-db-password' => 'Jelszó:',
+ 'config-db-password-empty' => 'Ãrd be az új adatbázis-felhasználó jelszavát: $1
+Van lehetőség jelszó nélküli felhasználók létrehozására, azonban ez nem ajánlott.',
'config-db-install-username' => 'Ãrd be az adatbázisrendszerhez való csatlakozáshoz használt felhasználónevet.
Ez nem a MediaWiki fiók felhasználóneve; ez az adatbázisrendszeren használt felhasználóneved.',
'config-db-install-password' => 'Ãrd be az adatbázisrendszerhez való csatlakozáshoz használt jelszót.
@@ -5313,15 +6956,26 @@ A mezőt általában üresen kell hagyni.',
'''Bináris''' módban a MediaWiki az UTF-8-ban kódolt szöveget bináris mezőkben tárolja az adatbázisban.
Ez sokkal hatékonyabb a MySQL UTF-8-módjától, és lehetővé teszi, hogy a teljes Unicode-karakterkészletet használd.
'''UTF-8-módban''' MySQL tudja, hogy milyen karakterkészlettel van kódolva az adat, és megfelelően tárolja és konvertálja, de
-nem használhatod a [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane] feletti karaktereket.",
+nem használhatod a [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane] feletti karaktereket.",
'config-mysql-old' => 'A MySQL $1 vagy újabb verziója szükséges, a rendszeren $2 van.',
'config-db-port' => 'Adatbázisport:',
'config-db-schema' => 'MediaWiki-séma',
'config-db-schema-help' => 'A fenti sémák általában megfelelőek.
Csak akkor módosíts rajtuk, ha tudod, hogy szükséges.',
+ 'config-pg-test-error' => "Nem sikerült csatlakozni a(z) '''$1''' adatbázishoz: $2",
'config-sqlite-dir' => 'SQLite-adatkönyvtár:',
+ 'config-sqlite-dir-help' => "Az SQLite minden adatot egyetlen fájlban tárol.
+
+A megadott könyvtárban írási jogosultsággal kell rendelkeznie a webszervernek.
+
+'''Nem''' szabad elérhetőnek lennie weben keresztül, ezért nem rakjuk oda, ahol a PHP-fájljaid vannak.
+
+A telepítő készít egy <code>.htaccess</code> fájlt az adatbázis mellé, azonban ha valamilyen okból nem sikerül, akkor akárki hozzáférhet a teljes adatbázisodhoz. Ez a felhasználók adatai (e-mail címek, jelszók hashei) mellett a törölt változatokat és más, korlátozott hozzáférésű információkat is tartalmaz.
+
+Fontold meg az adatbázis más helyre történő elhelyezését, például a <code>/var/lib/mediawiki/tewikid</code> könyvtárba.",
'config-oracle-def-ts' => 'Alapértelmezett táblatér:',
'config-oracle-temp-ts' => 'Ideiglenes táblatér:',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'A MediaWiki a következő adatbázisrendszereket támogatja:
$1
@@ -5331,12 +6985,15 @@ Ha az alábbi listán nem találod azt a rendszert, melyet használni szeretnél
'config-support-postgres' => '* A $1 népszerű, nyílt forráskódú adatbázisrendszer, a MySQL alternatívája ([http://www.php.net/manual/en/pgsql.installation.php Hogyan fordítható a PHP PostgreSQL-támogatással]). Több apró, javítatlan hiba is előfordulhat, így nem ajánlott éles környezetben használni.',
'config-support-sqlite' => '* Az $1 egy könnyű, nagyon jól támogatott adatbázisrendszer. ([http://www.php.net/manual/en/pdo.installation.php Hogyan fordítható a PHP SQLite-támogatással], PDO-t használ)',
'config-support-oracle' => '* Az $1 kereskedelmi, vállalati adatbázisrendszer. ([http://www.php.net/manual/en/oci8.installation.php Hogyan fordítható a PHP OCI8-támogatással])',
+ 'config-support-ibm_db2' => '* Az $1 kereskedelmi vállalati adatbázisrendszer.',
'config-header-mysql' => 'MySQL-beállítások',
'config-header-postgres' => 'PostgreSQL-beállítások',
'config-header-sqlite' => 'SQLite-beállítások',
'config-header-oracle' => 'Oracle-beállítások',
+ 'config-header-ibm_db2' => 'IBM DB2-beállítások',
'config-invalid-db-type' => 'Érvénytelen adatbázistípus',
- 'config-missing-db-name' => 'Meg kell adnod az „adatbázis nevétâ€',
+ 'config-missing-db-name' => 'Meg kell adnod az „Adatbázisnév†értékét',
+ 'config-missing-db-host' => 'Meg kell adnod az „Adatbázis hosztneve†értékét',
'config-missing-db-server-oracle' => 'Meg kell adnod az „Adatbázis TNS†értékét',
'config-invalid-db-server-oracle' => 'Érvénytelen adatbázis TNS: „$1â€
Csak ASCII betűk (a-z, A-Z), számok (0-9), alulvonás (_) és pont (.) használható.',
@@ -5352,6 +7009,19 @@ Csak ASCII-karakterek (a-z, A-Z), számok (0-9) és alulvonás (_) használható
'config-db-sys-create-oracle' => 'A telepítő csak a SYSDBA fiókkal tud új felhasználói fiókot létrehozni.',
'config-db-sys-user-exists-oracle' => 'Már létezik „$1†nevű felhasználói fiók. A SYSDBA csak új fiók létrehozására használható!',
'config-postgres-old' => 'A PostgreSQL $1 vagy újabb verziója szükséges, a rendszeren $2 van.',
+ 'config-sqlite-name-help' => 'Válassz egy nevet a wiki azonosítására.
+Ne tartalmazzon szóközt vagy kötőjelet.
+Ez lesz az SQLite-adatfájl neve.',
+ 'config-sqlite-parent-unwritable-group' => 'Nem hozható létre a(z) <code><nowiki>$1</nowiki></code> adatkönyvtár, mert a szülőkönyvtárba (<code><nowiki>$2</nowiki></code>) nem írhat a webszerver.
+
+A telepítő megállapította, hogy mely felhasználó futtatja a webszervert.
+A folytatáshoz tedd írhatóvá a(z) <code><nowiki>$3</nowiki></code> könyvtárat.
+Unix/Linux rendszeren tedd a következőt:
+
+<pre>cd $2
+mkdir $3
+chgrp $4 $3
+chmod g+w $3</pre>',
'config-sqlite-parent-unwritable-nogroup' => 'Nem lehet létrehozni az adatok tárolásához szükséges <code><nowiki>$1</nowiki></code> könyvtárat, mert a webszerver nem írhat a szülőkönyvtárba (<code><nowiki>$2</nowiki></code>).
A telepítő nem tudta megállapíteni, hogy melyik felhasználói fiókon fut a webszerver.
@@ -5369,16 +7039,38 @@ Módosítsd a jogosultságokat úgy, hogy a webszerver tudjon oda írni, majd pr
Ellenőrizd az adatkönyvtárat és az adatbázisnevet, majd próbáld újra.',
'config-sqlite-readonly' => 'A következő fájl nem írható: <code>$1</code>.',
+ 'config-sqlite-cant-create-db' => 'Nem sikerült létrehozni a következő adatbázisfájlt: <code>$1</code>.',
+ 'config-sqlite-fts3-downgrade' => 'A PHP nem rendelkezik FTS3-támogatással, táblák visszaminősítése',
+ 'config-can-upgrade' => "Ebben az adatábizban MediaWiki-táblák találhatóak.
+A MediaWiki $1 verzióra történő frissítéséhez kattints a '''Folytatás''' gombra.",
+ 'config-upgrade-done' => "A frissítés befejeződött.
+
+Most már '''[$1 beléphetsz a wikibe]'''.
+
+Ha újra szeretnéd generálni a <code>LocalSettings.php</code> fájlt, kattints az alábbi gombra.
+Ez '''nem ajánlott''', csak akkor, ha problémák vannak a wikivel.",
+ 'config-upgrade-done-no-regenerate' => "A frissítés befejeződött.
+
+Most már '''[$1 beléphetsz a wikibe]'''.",
'config-regenerate' => 'LocalSettings.php elkészítése újra →',
'config-show-table-status' => 'A SHOW TABLE STATUS lekérdezés nem sikerült!',
'config-unknown-collation' => "'''Figyelmeztetés:''' az adatbázis ismeretlen egybevetést használ.",
'config-db-web-account' => 'A webes hozzáférésnél használt adatbázisfiók',
'config-db-web-help' => 'Add meg azt a felhasználónevet és jelszót, amit a webszerver a wiki általános működése során használ a csatlakozáshoz.',
- 'config-db-web-account-same' => 'Ezen fiók használata a telepítéshez is',
+ 'config-db-web-account-same' => 'A telepítéshez használt fiók használata',
'config-db-web-create' => 'Fiók létrehozása, ha még nem létezik.',
+ 'config-db-web-no-create-privs' => 'A telepítéshez megadott fiók nem rendelkezik megfelelő jogosultságokkal új felhasználó létrehozásához.
+Az itt megadott fióknak léteznie kell.',
'config-mysql-engine' => 'Tárolómotor:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => "'''Figyelmeztetés''': A MyISAM tárolómotort választottad, ami nem ajánlott a MediaWiki használatánál, mert:
+* nagyon rosszul kezeli a párhuzamos lekéréseket a táblák zárolása miatt
+* sokkal nagyobb az esélye az adatkorrupció kialakulásának
+* a MediaWiki kódbázisa nem mindig úgy kezeli a MyISAM-ot, ahogyan kellene
+
+Ha a feltelepített MySQL támogatja az InnoDB-t, erősen ajánlott, hogy inkább azt válaszd.
+Ha nem, akkor lehet, hogy itt az ideje a frissítésnek.",
'config-mysql-engine-help' => "A legtöbb esetben az '''InnoDB''' a legjobb választás, mivel megfelelően támogatja a párhuzamosságot.
A '''MyISAM''' gyorsabb megoldás lehet egyfelhasználós vagy csak olvasható környezetekben, azonban a MyISAM-adatbázisok sokkal gyakrabban sérülnek meg, mint az InnoDB-adatbázisok.",
@@ -5388,7 +7080,8 @@ A '''MyISAM''' gyorsabb megoldás lehet egyfelhasználós vagy csak olvasható k
'config-mysql-charset-help' => "'''Bináris módban''' a MediaWiki az UTF-8-as szövegeket bináris mezőkben tárolja az adatbázisban.
Ez sokkal hatékonyabb a MySQL UTF-8-as módjánál, és lehetővé teszi a teljes Unicode-karakterkészlet használatát.
-'''UTF-8-as módban''' a MySQL tudni fogja,hogy az adatok milyen karakterkészlettel rendelkeznek, és megfelelően átalakítja őket, azonban nem tárolhatóak olyan karakterek, melyek a [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane] felett vannak.",
+'''UTF-8-as módban''' a MySQL tudni fogja,hogy az adatok milyen karakterkészlettel rendelkeznek, és megfelelően átalakítja őket, azonban nem tárolhatóak olyan karakterek, melyek a [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane] felett vannak.",
+ 'config-ibm_db2-low-db-pagesize' => "A DB2 adatbázisodnak alapértelmezett táblatere van elégtelen lapmérettel. A lapméretnek legalább '''32K'''-nak kell lennie.",
'config-site-name' => 'A wiki neve:',
'config-site-name-help' => 'A böngésző címsorában és még számos más helyen jelenik meg.',
'config-site-name-blank' => 'Add meg az oldal nevét.',
@@ -5400,6 +7093,10 @@ Ez sokkal hatékonyabb a MySQL UTF-8-as módjánál, és lehetővé teszi a telj
'config-project-namespace-help' => "A Wikipédia példáját követve számos wiki elkülöníti egy '''projekt névtérbe''' az irányelveit a tartalommal rendelkező lapoktól
Az ebben a névtérben található lapok nevei egy előtaggal kezdődnek, amit itt adhatsz meg.
Ãltalában az elÅ‘tag a wiki nevébÅ‘l származik, de nem tartalmazhat írásjeleket, például „#â€-t vagy „:â€-t.",
+ 'config-ns-invalid' => 'A megadott névtér („<nowiki>$1</nowiki>â€) érvénytelen.
+Válassz másik projektnévteret!',
+ 'config-ns-conflict' => 'A megadott névtér („<nowiki>$1</nowiki>â€) ütközik az egyik alapértelmezett MediaWiki-névtérrel.
+Válassz másik projektnévteret!',
'config-admin-box' => 'Adminisztrátori fiók',
'config-admin-name' => 'Név:',
'config-admin-password' => 'Jelszó:',
@@ -5414,8 +7111,14 @@ Adj meg egy másik felhasználónevet.',
'config-admin-password-mismatch' => 'A megadott jelszavak nem egyeznek.',
'config-admin-email' => 'E-mail cím:',
'config-admin-email-help' => 'Add meg az e-mail címedet, hogy más felhasználók küldhessenek e-maileket a wikin keresztül, új jelszót tudj kérni, és értesülhess a figyelőlistádon lévő lapokon történt változásokról. Üresen is hagyhatod ezt a mezőt.',
+ 'config-admin-error-user' => 'Belső hiba történt a(z) „<nowiki>$1</nowiki>†nevű adminisztrátor létrehozásakor.',
+ 'config-admin-error-password' => 'Belső hiba történt a(z) „<nowiki>$1</nowiki>†nevű adminisztrátor jelszavának beállításakor: <pre>$2</pre>',
+ 'config-admin-error-bademail' => 'Érvénytelen e-mail címet adtál meg.',
+ 'config-subscribe' => 'Feliratkozás a [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce kiadási bejelentések levelezőlistájára].',
'config-subscribe-help' => 'Ez egy alacsony forgalmú levelezőlista, ahol a kiadásokkal kapcsolatos bejelentések jelennek meg, a fontos biztonsági javításokkal együtt.
Ajánlott feliratkozni rá, és frissíteni a MediaWikit, ha új verzió jön ki.',
+ 'config-subscribe-noemail' => 'Anélkül próbáltál feliratkozni a kiadási bejelentések levelezőlistájára, hogy megadtál volna egy e-mail címet.
+Adj meg egyet, ha fel szeretnél iratkozni a levelezőlistára.',
'config-almost-done' => 'Már majdnem kész!
A további konfigurációt kihagyhatod, és most azonnal elindíthatod a wiki telepítését.',
'config-optional-continue' => 'További információk megadása.',
@@ -5435,41 +7138,70 @@ Választhatsz!
Lehetőség van arra is, hogy '''{{lc:{{int:config-profile-fishbowl}}}}''' módosíthassák a lapokat, de a nyilvánosság ekkor megtekintheti a lapokat és azok laptörténetét is. '''{{int:config-profile-private}}''' esetén csak az engedélyezett szerkesztők tekinthetik meg a lapokat, és ugyanez a csoport szerkeszthet.
-Telepítés után jóval összetettebb jogosultságrendszer állítható össze, további információ a [http://www.mediawiki.org/wiki/Manual:User_rights kézikönyv kapcsolódó bejegyzésében].",
+Telepítés után jóval összetettebb jogosultságrendszer állítható össze, további információ a [//www.mediawiki.org/wiki/Manual:User_rights kézikönyv kapcsolódó bejegyzésében].",
'config-license' => 'Szerzői jog és licenc:',
'config-license-none' => 'Nincs licencjelzés',
'config-license-cc-by-sa' => 'Creative Commons Nevezd meg! - Ãgy add tovább!',
+ 'config-license-cc-by' => 'Creative Commons Nevezd meg!',
'config-license-cc-by-nc-sa' => 'Creative Commons Nevezd meg! - Ne add el! - Ãgy add tovább!',
- 'config-license-cc-0' => 'Creative Commons Zero',
- 'config-license-gfdl-old' => 'GNU Szabad Dokumentációs Licenc 1.2',
- 'config-license-gfdl-current' => 'GNU Szabad Dokumentációs Licenc 1.3 vagy újabb',
+ 'config-license-cc-0' => 'Creative Commons Zero (közkincs)',
+ 'config-license-gfdl' => 'GNU Szabad Dokumentációs Licenc 1.3 vagy újabb',
'config-license-pd' => 'Közkincs',
'config-license-cc-choose' => 'Creative Commons-licenc választása',
- 'config-license-help' => "A legtöbb wiki [http://freedomdefined.org/Definition szabad licenc] alatt teszi közzé a szerkesztéseit.
-Ez erősíti a közösségi tulajdon érzését, és elősegíti a hosszú távú közreműködést.
-Ãltalában szükségtelen magán- vagy vállalati wiki esetén.
+ 'config-license-help' => "A legtöbb wiki valamilyen [http://freedomdefined.org/Definition szabad licenc] alatt teszi közzé a szerkesztéseit.
+Ez erősíti a közösségi tulajdon érzését, és elősegíti a hosszú távú közreműködők megjelenését.
+Ãltalában nem szükséges magán- vagy vállalati wiki esetén.
Ha a Wikipédiáról szeretnél szövegeket másolni, és a Wikipédián felhasználhassák a wikidben található szöveget, akkor a '''Creative Commons Nevezd meg! - Ãgy add tovább!''' lehetÅ‘séget válaszd.
-A GNU Szabad Dokumentációs Licenc a Wikipédia korábbi licence.
-Még ma is érvényes, azonban van néhány tulajdonsága, amely nehezíti az újrafelhasználást és az értelmezését.",
+A Wikipédia korábban a GNU Szabad Dokumentációs Licencet használta.
+Ez a licenc még ma is használható, azonban nem könnyű megérteni,
+továbbá a GFDL alatt közzétett tartalom újrafelhasználása nehézkes.",
'config-email-settings' => 'E-mail beállítások',
'config-enable-email' => 'Kimenő e-mailek engedélyezése',
'config-enable-email-help' => 'E-mailek küldéséhez [http://www.php.net/manual/en/mail.configuration.php a PHP mail beállításait] megfelelően meg kell adni.
Ha nem akarsz semmilyen e-mailes funkciót használni, itt tilthatod le őket.',
+ 'config-email-user' => 'A felhasználók küldhetnek egymásnak e-maileket',
+ 'config-email-user-help' => 'Bármelyik felhasználó küldhet másiknak e-mail üzenetet, amennyiben engedélyezték a lehetőséget a beállításaiknál.',
+ 'config-email-usertalk' => 'Vitalapi értesítések engedélyezése',
+ 'config-email-usertalk-help' => 'A felhasználók értesítéseket kapnak a vitalapjuk változásairól, amennyiben engedélyezték ezt a lehetőséget a beállításaiknál.',
+ 'config-email-watchlist' => 'Figyelőlistai értesítések engedélyezése',
+ 'config-email-watchlist-help' => 'A felhasználók értesítéseket kapnak a figyelt lapjaik változásairól, amennyiben engedélyezték ezt a lehetőséget a beállításaiknál.',
+ 'config-email-auth' => 'E-mailes hitelesítés engedélyezése',
+ 'config-email-auth-help' => "Ha a beállítás engedélyezve van, a felhasználóknak meg kell erősíteniük az e-mail címüket egy kiküldött link segítségével, amikor megadják vagy módosítják azt.
+Csak a megerősített e-mail címmel rendelkezők kaphatnak e-maileket más felhasználóktól vagy értesítéseket.
+A beállítás engedélyezése '''ajánlott''' publikus wikiknél, mivel így megakadályozható az e-mailes funkciókkal való visszaélés.",
'config-email-sender' => 'Válaszcím:',
+ 'config-email-sender-help' => 'Add meg a kimenő e-mail-üzenetek válaszcímét.
+Ide lesznek küldve a visszapattant üzenetek is.
+Számos levelezőszerver számára a cím domainrészének érvényesnek kell lennie.',
'config-upload-settings' => 'Képek és fájlok feltöltése',
'config-upload-enable' => 'Fájlfeltöltés engedélyezése',
+ 'config-upload-help' => 'A fájlfeltöltés lehetséges biztonsági kockázatoknak teszi ki a szerveredet.
+További információért olvasd el a [//www.mediawiki.org/wiki/Manual:Security biztonságról szóló szakaszt] a kézikönyvben.
+
+A fájlfeltöltés engedélyezéséhez változtasd meg a MediaWiki gyökérkönyvtárában található <code>images</code> alkönyvtár jogosultságát úgy, hogy a szerver írhasson oda, majd engedélyezd itt a beállítást.',
'config-upload-deleted' => 'Törölt fájlok könyvtára:',
+ 'config-upload-deleted-help' => 'Válaszd ki azt a könyvtárat, ahol a törölt fájlok lesznek archiválva.
+Normális esetben ennek nem szabad elérhetőnek lennie az internetről.',
'config-logo' => 'A logó URL-címe:',
+ 'config-logo-help' => 'A MediaWiki alapértelmezett felülete helyet ad egy 135×160 pixeles logónak a bal felső sarokban.
+Tölts fel egy megfelelő méretű képet, majd írd be ide az URL-címét!
+
+Ha nem szeretnél logót használni, egyszerűen hagyd üresen a mezőt.',
'config-instantcommons' => 'Instant Commons engedélyezése',
- 'config-instantcommons-help' => 'Az [http://www.mediawiki.org/wiki/InstantCommons Instant Commons] lehetővé teszi, hogy a wikin használhassák a [http://commons.wikimedia.org/ Wikimedia Commons] oldalon található képeket, hangokat és más médiafájlokat.
-A használatához a MediaWikinek internethozzáférésre van szüksége.
+ 'config-instantcommons-help' => 'Az [//www.mediawiki.org/wiki/InstantCommons Instant Commons] lehetővé teszi, hogy a wikin használhassák a [//commons.wikimedia.org/ Wikimedia Commons] oldalon található képeket, hangokat és más médiafájlokat.
+A használatához a MediaWikinek internethozzáférésre van szüksége.
A funkcióról és hogy hogyan állítható be más wikik esetén [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos a kézikönyvben] találhatsz további információkat.',
+ 'config-cc-error' => 'A Creative Commons-licencválasztó nem tért vissza eredménnyel.
+Add meg kézzel a licencet.',
'config-cc-again' => 'Válassz újra…',
+ 'config-cc-not-chosen' => 'Válaszd ki a kívánt Creative Commons licencet, majd kattints a „Folytatás gombraâ€!',
'config-advanced-settings' => 'Haladó beállítások',
'config-cache-options' => 'Objektum-gyorsítótárazás beállításai:',
+ 'config-cache-help' => 'Az objektumgyorsítótárazás célja, hogy felgyorsítsa a MediaWiki működését a gyakran használt adatok gyorsítótárazásával.
+Közepes vagy nagyobb oldalak esetén erősen ajánlott a használata, de kisebb oldalak esetén is hasznos lehet.',
'config-cache-none' => 'Nincs gyorsítótárazás (minden funkció működik, de nagyobb wiki esetében lassabb működést eredményezhet)',
'config-cache-accel' => 'PHP-objektumok gyorsítótárazása (APC, eAccelerator, XCache or WinCache)',
'config-cache-memcached' => 'Memcached használata (további telepítés és konfigurálás szükséges)',
@@ -5478,23 +7210,52 @@ A funkcióról és hogy hogyan állítható be más wikik esetén [http://mediaw
Vesszővel kell elválasztani őket, és meg kell adni a portot is. Például:
127.0.0.1:11211
192.168.1.25:11211',
+ 'config-memcache-needservers' => 'Memcachedet választottad gyorsítótárnak, de nem adtál meg egyetlen szervert sem.',
+ 'config-memcache-badip' => 'Érvénytelen IP-címet adtál meg a Memcachednek: $1.',
+ 'config-memcache-noport' => 'Nem adtál meg portot a Memcached-szervernek: $1.
+Ha nem ismered a portszámot, használd az alapértelmezettet: 11211.',
+ 'config-memcache-badport' => 'A Memcached a(z) $1 és $2 közötti portokat szokta használni.',
'config-extensions' => 'Kiterjesztések',
+ 'config-extensions-help' => 'A fent felsorolt kiterjesztések találhatóak meg az <code>./extensions</code> könyvtárban.
+
+Lehetséges, hogy további beállításra lesz szükség hozzájuk, de már most engedélyezheted őket.',
+ 'config-install-alreadydone' => "'''Figyelmeztetés:''' Úgy tűnik, hogy a MediaWiki telepítve van, és te ismét megpróbálod telepíteni.
+Folytasd a következő oldalon.",
+ 'config-install-begin' => 'A „{{int:config-continue}}†gomb megnyomása elindítja a MediaWiki telepítését.
+Ha szeretnél módosítani a beállításokon, kattints a vissza gombra.',
'config-install-step-done' => 'kész',
'config-install-step-failed' => 'sikertelen',
'config-install-extensions' => 'Kiterjesztések beillesztése',
'config-install-database' => 'Adatbázis felállítása',
+ 'config-install-schema' => 'Adatbázis-szerkezet létrehozása',
+ 'config-install-pg-schema-not-exist' => 'A PostgreSQL-adatbázis nem létezik.',
+ 'config-install-pg-schema-failed' => 'A táblák létrehozása nem sikerült.
+EllenÅ‘rizd, hogy „$1†felhasználó írhat-e a következÅ‘ adatbázisba: „$2â€.',
+ 'config-install-pg-commit' => 'Változtatások közzététele',
+ 'config-install-pg-plpgsql' => 'PL/pgSQL nyelv meglétének ellenőrzése',
+ 'config-pg-no-plpgsql' => 'Telepítened kell a PL/pgSQL nyelvet a következő adatbázishoz: $1',
+ 'config-pg-no-create-privs' => 'A telepítéshez megadott felhasználói fiók nem rendelkezik új fiók létrehozásához szükséges jogosultságokkal.',
'config-install-user' => 'Adatbázis-felhasználó létrehozása',
+ 'config-install-user-alreadyexists' => 'Már létezik „$1†nevű felhasználó',
+ 'config-install-user-create-failed' => 'Nem sikerült a(z) „$1†nevű felhasználó létrehozása: $2',
+ 'config-install-user-grant-failed' => 'Nem sikerült jogosultságokkal felruházni a(z) „$1†nevű felhasználót: $2',
+ 'config-install-user-missing' => 'A megadott felhasználó („$1â€) nem létezik.',
+ 'config-install-user-missing-create' => 'A megadott felhasználó („$1â€) nem létezik.
+Pipáld ki a „Fiók létrehozása†dobozt, ha létre szeretnéd hozni.',
'config-install-tables' => 'Táblák létrehozása',
'config-install-tables-exist' => "'''Figyelmeztetés''': úgy tűnik, hogy a MediaWiki táblái már léteznek.
Létrehozás kihagyása.",
'config-install-tables-failed' => "'''Hiba''': a tábla létrehozása nem sikerült a következő miatt: $1",
'config-install-interwiki' => 'Alapértelmezett nyelvközihivatkozás-tábla feltöltése',
'config-install-interwiki-list' => 'Az <code>interwiki.list</code> fájl nem található.',
+ 'config-install-interwiki-exists' => "'''Figyelmeztetés''': Úgy tűnik, hogy az interwiki táblában már vannak bejegyzések.
+Alapértelmezett lista kihagyása.",
'config-install-stats' => 'Statisztika inicializálása',
'config-install-keys' => 'Titkos kulcsok generálása',
'config-insecure-keys' => "'''Figyelmeztetés:''' A telepítés során generált $1 {{PLURAL:$2|biztonsági kulcs|biztonsági kulcsok}} nem teljesen $1 {{PLURAL:$2|biztonságos|biztonságosak}}. Érdemes {{PLURAL:$2||őket}} manuálisan megváltoztatni.",
'config-install-sysop' => 'Az adminisztrátor felhasználói fiókjának létrehozása',
- 'config-install-subscribe-fail' => 'Nem sikerült feliratkozni a mediawiki-announce levelezőlistára',
+ 'config-install-subscribe-fail' => 'Nem sikerült feliratkozni a mediawiki-announce levelezőlistára: $1',
+ 'config-install-subscribe-notpossible' => 'A cURL nincs telepítve és az allow_url_fopen nem érhető el.',
'config-install-mainpage' => 'Kezdőlap létrehozása az alapértelmezett tartalommal',
'config-install-extension-tables' => 'Táblák létrehozása az engedélyezett kiterjesztésekhez',
'config-install-mainpage-failed' => 'Nemsikerült létrehozni a kezdőlapot: $1',
@@ -5514,6 +7275,25 @@ $3
Ha végeztél a fájl elhelyezésével, '''[$2 beléphetsz a wikibe]'''.",
'config-download-localsettings' => 'LocalSettings.php letöltése',
'config-help' => 'segítség',
+ 'mainpagetext' => "'''A MediaWiki telepítése sikeresen befejeződött.'''",
+ 'mainpagedocfooter' => "Ha segítségre van szükséged a wikiszoftver használatához, akkor keresd fel a [//meta.wikimedia.org/wiki/Help:Contents User's Guide] oldalt.
+
+== Alapok (angol nyelven) ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Beállítások listája]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki GyIK]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-kiadások levelezőlistája]",
+);
+
+/** Armenian (Õ€Õ¡ÕµÕ¥Ö€Õ¥Õ¶) */
+$messages['hy'] = array(
+ 'mainpagetext' => "'''«MediaWiki» Õ®Ö€Õ¡Õ£Õ«Ö€Õ¨ Õ°Õ¡Õ»Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ¿Õ¥Õ²Õ¡Õ¤Ö€Õ¾Õ¥ÖÖ‰'''",
+ 'mainpagedocfooter' => "Ô±ÕµÖÕ¥Õ¬Õ¥Ö„ [//meta.wikimedia.org/wiki/Help:Contents User's Guide]Õ Õ¾Õ«Ö„Õ« Õ®Ö€Õ¡Õ£Ö€Õ¡ÕµÕ«Õ¶ Õ¡ÕºÕ¡Õ°Õ¸Õ¾Õ´Õ¡Õ¶ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ´Õ¡Õ¶ Õ´Õ¡Õ½Õ«Õ¶ Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€Ö‰
+
+== ÕˆÖ€Õ¸Õ· Ö…Õ£Õ¿Õ¡Õ¯Õ¡Ö€ Õ¼Õ¥Õ½Õ¸Ö‚Ö€Õ½Õ¶Õ¥Ö€ ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
);
/** Interlingua (Interlingua)
@@ -5583,10 +7363,10 @@ Iste programma es distribuite in le sperantia que illo sia utile, ma '''sin gara
Vide le Licentia Public General de GNU pro plus detalios.
Vos deberea haber recipite <doclink href=Copying>un exemplar del Licentia Public General de GNU</doclink> con iste programma; si non, scribe al Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, o [http://www.gnu.org/copyleft/gpl.html lege lo in linea].",
- 'config-sidebar' => '* [http://www.mediawiki.org Pagina principal de MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents Guida pro usatores]
-* [http://www.mediawiki.org/wiki/Manual:Contents Guida pro administratores]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]
+ 'config-sidebar' => '* [//www.mediawiki.org Pagina principal de MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents Guida pro usatores]
+* [//www.mediawiki.org/wiki/Manual:Contents Guida pro administratores]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ]
----
* <doclink href=Readme>Lege me</doclink>
* <doclink href=ReleaseNotes>Notas de iste version</doclink>
@@ -5602,17 +7382,16 @@ Nonobstante, MediaWiki require PHP $2 o plus recente.',
'config-unicode-using-utf8' => 'utf8_normalize.so per Brion Vibber es usate pro le normalisation Unicode.',
'config-unicode-using-intl' => 'Le [http://pecl.php.net/intl extension PECL intl] es usate pro le normalisation Unicode.',
'config-unicode-pure-php-warning' => "'''Aviso''': Le [http://pecl.php.net/intl extension PECL intl] non es disponibile pro exequer le normalisation Unicode; le systema recurre al implementation lente in PHP pur.
-Si tu sito ha un alte volumine de traffico, tu deberea informar te un poco super le [http://www.mediawiki.org/wiki/Unicode_normalization_considerations normalisation Unicode].",
+Si tu sito ha un alte volumine de traffico, tu deberea informar te un poco super le [//www.mediawiki.org/wiki/Unicode_normalization_considerations normalisation Unicode].",
'config-unicode-update-warning' => "'''Aviso''': Le version installate del bibliotheca inveloppante pro normalisation Unicode usa un version ancian del bibliotheca del [http://site.icu-project.org/ projecto ICU].
-Tu deberea [http://www.mediawiki.org/wiki/Unicode_normalization_considerations actualisar lo] si le uso de Unicode importa a te.",
- 'config-no-db' => 'Non poteva trovar un driver appropriate pro le base de datos!',
- 'config-no-db-help' => 'Tu debe installar un driver de base de datos pro PHP.
+Tu deberea [//www.mediawiki.org/wiki/Unicode_normalization_considerations actualisar lo] si le uso de Unicode importa a te.",
+ 'config-no-db' => 'Non poteva trovar un driver appropriate pro le base de datos! Es necessari installar un driver de base de datos pro PHP.
Le sequente typos de base de datos es supportate: $1.
-Si tu sito usa un servitor partite (shared hosting), demanda a tu providitor de installar un driver de base de datos appropriate.
+Si tu sito usa un servitor dividite (shared hosting), demanda a tu providitor de installar un driver de base de datos appropriate.
Si tu compilava PHP tu mesme, reconfigura lo con un cliente de base de datos activate, per exemplo usante <code>./configure --with-mysql</code>.
Si tu installava PHP ex un pacchetto Debian o Ubuntu, tu debe installar equalmente le modulo php5-mysql.',
- 'config-no-fts3' => "'''Attention''': SQLite es compilate sin [http://sqlite.org/fts3.html modulo FTS3]; functionalitate de recerca non essera disponibile in iste back-end.",
+ 'config-no-fts3' => "'''Attention''': SQLite es compilate sin [//sqlite.org/fts3.html modulo FTS3]; functionalitate de recerca non essera disponibile in iste back-end.",
'config-register-globals' => "'''Attention: le option <code>[http://php.net/register_globals register_globals]</code> de PHP es activate.'''
'''Disactiva lo si tu pote.'''
MediaWiki functionara, ma tu servitor es exponite a potential vulnerabilitates de securitate.",
@@ -5641,12 +7420,14 @@ MediaWiki require supporto de UTF-8 pro functionar correctemente.",
'config-memory-bad' => "'''Aviso:''' Le <code>memory_limit</code> de PHP es $1.
Isto es probabilemente troppo basse.
Le installation pote faller!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] es installate',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] es installate',
'config-apc' => '[http://www.php.net/apc APC] es installate',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] es installate',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] es installate',
- 'config-no-cache' => "'''Aviso:''' Non poteva trovar [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''Aviso:''' Non poteva trovar [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache].
Le cache de objectos non es activate.",
+ 'config-mod-security' => "'''Attention''': [http://modsecurity.org/ mod_security] es active in tu servitor web. Si mal configurate, isto pote causar problemas pro MediaWiki o altere software que permitte al usatores de publicar contento arbitrari.
+Consulta le [http://modsecurity.org/documentation/ documentation de mod_security] o contacta le servicio de adjuta de tu host si tu incontra estranie errores.",
'config-diff3-bad' => 'GNU diff3 non trovate.',
'config-imagemagick' => 'ImageMagick trovate: <code>$1</code>.
Le miniaturas de imagines essera activate si tu activa le incargamento de files.',
@@ -5656,21 +7437,29 @@ Le miniaturas de imagines essera activate si tu activa le incargamento de files.
Le miniaturas de imagines essera disactivate.',
'config-no-uri' => "'''Error:''' Non poteva determinar le URI actual.
Installation abortate.",
+ 'config-no-cli-uri' => "'''Attention''': Cammino al script (--scriptpath) non specificate. Le predefinition es usate: <code>$1</code>.",
+ 'config-using-server' => 'Es usate le nomine de servitor "<nowiki>$1</nowiki>".',
+ 'config-using-uri' => 'Le URL de servitor "<nowiki>$1$2</nowiki>" es usate.',
'config-uploads-not-safe' => "'''Aviso:''' Le directorio predefinite pro files incargate <code>$1</code> es vulnerabile al execution arbitrari de scripts.
-Ben que MediaWiki verifica tote le files incargate contra le menacias de securitate, il es altemente recommendate [http://www.mediawiki.org/wiki/Manual:Security#Upload_security remediar iste vulnerabilitate de securitate] ante de activar le incargamento de files.",
+Ben que MediaWiki verifica tote le files incargate contra le menacias de securitate, il es altemente recommendate [//www.mediawiki.org/wiki/Manual:Security#Upload_security remediar iste vulnerabilitate de securitate] ante de activar le incargamento de files.",
+ 'config-no-cli-uploads-check' => "'''Attention:''' Le directorio predefinite pro files incargate (<code>$1</code>) non es verificate contra le vulnerabilitate
+al execution arbitrari de scripts durante le installation de CLI.",
'config-brokenlibxml' => 'Vostre systema ha un combination de versiones de PHP e libxml2 que es defectuose e pote causar corruption celate de datos in MediaWiki e altere applicationes web.
-Actualisa a PHP 5.2.9 o plus recente e libxml2 2.7.3 o plus recente ([http://bugs.php.net/bug.php?id=45996 problema reportate presso PHP]).
+Actualisa a PHP 5.2.9 o plus recente e libxml2 2.7.3 o plus recente ([//bugs.php.net/bug.php?id=45996 problema reportate presso PHP]).
Installation abortate.',
'config-using531' => 'MediaWiki non pote esser usate con PHP $1 a causa de un defecto concernente parametros de referentia a <code>__call()</code>.
Actualisa a PHP 5.3.2 o plus recente, o retrograda a PHP 5.3.0 pro remediar isto.
Installation abortate.',
+ 'config-suhosin-max-value-length' => 'Suhosin es installate e limita le longitude del parametro GET a $1 bytes. Le componente ResourceLoader de MediaWiki pote contornar iste limite, ma isto degradara le rendimento. Si possibile, tu deberea mitter suhosin.get.max_value_length a 1024 o plus in php.ini , e mitter $wgResourceLoaderMaxQueryLength al mesme valor in LocalSettings.php .',
'config-db-type' => 'Typo de base de datos:',
'config-db-host' => 'Servitor de base de datos:',
'config-db-host-help' => 'Si tu servitor de base de datos es in un altere servitor, entra hic le nomine o adresse IP del servitor.
Si tu usa un servitor web usate in commun, tu providitor deberea dar te le correcte nomine de servitor in su documentation.
-Si tu face le installation in un servitor Windows e usa MySQL, le nomine "localhost" possibilemente non functiona como nomine de servitor. Si non, essaya "127.0.0.1", i.e. le adresse IP local.',
+Si tu face le installation in un servitor Windows e usa MySQL, le nomine "localhost" possibilemente non functiona como nomine de servitor. In tal caso, essaya "127.0.0.1", i.e. le adresse IP local.
+
+Si tu usa PostgreSQL, lassa iste campo vacue pro connecter via un "socket" de Unix.',
'config-db-host-oracle' => 'TNS del base de datos:',
'config-db-host-oracle-help' => 'Entra un [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm nomine Local Connect] valide; un file tnsnames.ora debe esser visibile a iste installation.<br />Si tu usa bibliothecas de cliente 10g o plus recente, tu pote anque usar le methodo de nomination [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].',
'config-db-wiki-settings' => 'Identificar iste wiki',
@@ -5711,12 +7500,13 @@ Iste campo usualmente resta vacue.',
In '''modo binari''', MediaWiki immagazina texto in UTF-8 in le base de datos in campos binari.
Isto es plus efficiente que le modo UTF-8 de MySQL, e permitte usar le rango complete de characteres de Unicode.
In '''modo UTF-8''', MySQL sapera in qual codification de characteres tu datos es, e pote presentar e converter lo appropriatemente,
-ma non te permittera immagazinar characteres supra le [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Plano Multilingue Basic].",
+ma non te permittera immagazinar characteres supra le [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Plano Multilingue Basic].",
'config-mysql-old' => 'MySQL $1 o plus recente es requirite, tu ha $2.',
'config-db-port' => 'Porto de base de datos:',
'config-db-schema' => 'Schema pro MediaWiki',
'config-db-schema-help' => 'Iste schema es generalmente correcte.
Solmente cambia lo si tu es secur que es necessari.',
+ 'config-pg-test-error' => "Impossibile connecter al base de datos '''$1''': $2",
'config-sqlite-dir' => 'Directorio pro le datos de SQLite:',
'config-sqlite-dir-help' => "SQLite immagazina tote le datos in un sol file.
@@ -5734,6 +7524,7 @@ Considera poner le base de datos in un loco completemente differente, per exempl
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'MediaWiki supporta le sequente systemas de base de datos:
$1
@@ -5743,10 +7534,12 @@ Si tu non vide hic infra le systema de base de datos que tu tenta usar, alora se
'config-support-postgres' => '* $1 es un systema de base de datos popular e open source, alternativa a MySQL ([http://www.php.net/manual/en/pgsql.installation.php como compilar PHP con supporto de PostgreSQL]). Es possibile que resta alcun minor defectos non resolvite, dunque illo non es recommendate pro uso in un ambiente de production.',
'config-support-sqlite' => '* $1 es un systema de base de datos legier que es multo ben supportate. ([http://www.php.net/manual/en/pdo.installation.php Como compilar PHP con supporto de SQLite], usa PDO)',
'config-support-oracle' => '* $1 es un banca de datos commercial pro interprisas. ([http://www.php.net/manual/en/oci8.installation.php Como compilar PHP con supporto de OCI8])',
+ 'config-support-ibm_db2' => '* $1 es un systema commercial de base de datos pro interprisas.',
'config-header-mysql' => 'Configuration de MySQL',
'config-header-postgres' => 'Configuration de PostgreSQL',
'config-header-sqlite' => 'Configuration de SQLite',
'config-header-oracle' => 'Configuration de Oracle',
+ 'config-header-ibm_db2' => 'Configurationes pro IBM DB2',
'config-invalid-db-type' => 'Typo de base de datos invalide',
'config-missing-db-name' => 'Tu debe entrar un valor pro "Nomine de base de datos"',
'config-missing-db-host' => 'Tu debe entrar un valor pro "Host del base de datos"',
@@ -5820,6 +7613,13 @@ Le conto que tu specifica hic debe jam exister.',
'config-mysql-engine' => 'Motor de immagazinage:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => "* '''Attention:''' Tu ha seligite MyISAM como motor de immagazinage pro MySQL, lo que non es recommendate pro uso con MediaWiki, perque:
+* illo a pena supporta le processamento simultanee a causa del blocada le tabulas
+* illo es plus susceptibile al corruption que altere motores
+* le base de codice de MediaWiki non sempre manea MyISAM como illo deberea
+
+Si tu installation de MySQL supporta InnoDB, es multo recommendate que tu selige iste in su loco.
+Si tu installation de MySQL non supporta InnoDB, forsan isto es un bon occasion pro actualisar lo.",
'config-mysql-engine-help' => "'''InnoDB''' es quasi sempre le melior option, post que illo ha bon supporto pro simultaneitate.
'''MyISAM''' pote esser plus rapide in installationes a usator singule o a lectura solmente.
@@ -5830,7 +7630,8 @@ Le bases de datos MyISAM tende a esser corrumpite plus frequentemente que le bas
'config-mysql-charset-help' => "In '''modo binari''', MediaWiki immagazina le texto UTF-8 in le base de datos in campos binari.
Isto es plus efficiente que le modo UTF-8 de MySQL, e permitte usar le rango complete de characteres Unicode.
-In '''modo UTF-8''', MySQL cognoscera le codification de characteres usate pro tu dats, e pote presentar e converter lo appropriatemente, ma illo non permittera immagazinar characteres supra le [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Plano Multilingue Basic].",
+In '''modo UTF-8''', MySQL cognoscera le codification de characteres usate pro tu dats, e pote presentar e converter lo appropriatemente, ma illo non permittera immagazinar characteres supra le [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Plano Multilingue Basic].",
+ 'config-ibm_db2-low-db-pagesize' => 'Tu base de datos DB2 ha un "tablespace" (spatio de tabella) predefinite con un "pagesize" (dimension de pagina) insufficiente. Le "pagesize" debe esser \'\'\'32K\'\'\' o plus.',
'config-site-name' => 'Nomine del wiki:',
'config-site-name-help' => 'Isto apparera in le barra de titulo del navigator e in varie altere locos.',
'config-site-name-blank' => 'Entra un nomine de sito.',
@@ -5866,6 +7667,8 @@ Specifica un altere nomine de usator.',
'config-subscribe' => 'Subscribe al [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce lista de diffusion pro annuncios de nove versiones].',
'config-subscribe-help' => 'Isto es un lista de e-mail a basse volumine pro annuncios de nove versiones, includente importante annuncios de securitate.
Tu deberea subscriber a illo e actualisar tu installation de MediaWiki quando nove versiones es editate.',
+ 'config-subscribe-noemail' => 'Tu tentava abonar te al lista de diffusion pro annunciamento de nove versiones sin fornir un adresse de e-mail.
+Per favor specifica un adresse de e-mail si tu vole abonar te al lista de diffusion.',
'config-almost-done' => 'Tu ha quasi finite!
Tu pote ora saltar le configuration remanente e installar le wiki immediatemente.',
'config-optional-continue' => 'Pone me plus questiones.',
@@ -5887,14 +7690,14 @@ Un wiki con '''{{int:config-profile-no-anon}}''' attribue additional responsabil
Le scenario '''{{int:config-profile-fishbowl}}''' permitte al usatores approbate de modificar, ma le publico pote vider le paginas, includente lor historia.
Un '''{{int:config-profile-private}}''' permitte solmente al usatores approbate de vider le paginas e de modificar los.
-Configurationes de derectos de usator plus complexe es disponibile post installation, vide le [http://www.mediawiki.org/wiki/Manual:User_rights pertinente section del manual].",
+Configurationes de derectos de usator plus complexe es disponibile post installation, vide le [//www.mediawiki.org/wiki/Manual:User_rights pertinente section del manual].",
'config-license' => 'Copyright e licentia:',
'config-license-none' => 'Nulle licentia in pede de paginas',
'config-license-cc-by-sa' => 'Creative Commons Attribution Share Alike',
+ 'config-license-cc-by' => 'Creative Commons Attribution',
'config-license-cc-by-nc-sa' => 'Creative Commons Attribution Non-Commercial Share Alike',
- 'config-license-cc-0' => 'Creative Commons Zero',
- 'config-license-gfdl-old' => 'Licentia GNU pro Documentation Libere 1.2',
- 'config-license-gfdl-current' => 'Licentia GNU pro Documentation Libere 1.3 o plus recente',
+ 'config-license-cc-0' => 'Creative Commons Zero (dominio public)',
+ 'config-license-gfdl' => 'Licentia GNU pro Documentation Libere 1.3 o plus recente',
'config-license-pd' => 'Dominio public',
'config-license-cc-choose' => 'Seliger un licentia Creative Commons personalisate',
'config-license-help' => "Multe wikis public pone tote le contributiones sub un [http://freedomdefined.org/Definition/Ia?uselang=ia licentia libere].
@@ -5903,8 +7706,9 @@ Isto non es generalmente necessari pro un wiki private o de interprisa.
Si tu vole poter usar texto de Wikipedia, e si tu vole que Wikipedia pote acceptar texto copiate de tu wiki, tu debe seliger '''Creative Commons Attribution Share Alike'''.
-Le Licentia GNU pro Documentation Libere esseva le ancian licentia de publication de Wikipedia.
-Iste licentia continua a esser valide, ma illo ha alcun characteristicas que rende le re-uso e interpretation difficile.",
+Wikipedia usava anteriormente le Licentia GNU pro Documentation Libere (GFDL).
+Iste es un licentia valide, ma es difficile a comprender.
+Il es anque difficile reusar le contento licentiate sub GFDL.",
'config-email-settings' => 'Configuration de e-mail',
'config-enable-email' => 'Activar le e-mail sortiente',
'config-enable-email-help' => 'Si tu vole que e-mail functiona, [http://www.php.net/manual/en/mail.configuration.php le optiones de e-mail de PHP] debe esser configurate correctemente.
@@ -5926,7 +7730,7 @@ Multe servitores de e-mail require que al minus le parte de nomine de dominio si
'config-upload-settings' => 'Incargamento de imagines e files',
'config-upload-enable' => 'Activar le incargamento de files',
'config-upload-help' => 'Le incargamento de files potentialmente expone tu servitor a riscos de securitate.
-Pro plus information, lege le [http://www.mediawiki.org/wiki/Manual:Security section de securitate] in le manual.
+Pro plus information, lege le [//www.mediawiki.org/wiki/Manual:Security section de securitate] in le manual.
Pro activar le incargamento de files, cambia le modo in le subdirectorio <code>images</code> sub le directorio-radice de MediaWiki de sorta que le servitor web pote scriber in illo.
Postea activa iste option.',
@@ -5934,13 +7738,13 @@ Postea activa iste option.',
'config-upload-deleted-help' => 'Selige un directorio in le qual archivar le files delite.
Idealmente, isto non debe esser accessibile ab le web.',
'config-logo' => 'URL del logotypo:',
- 'config-logo-help' => 'Le apparentia predefinite de MediaWiki include spatio pro un logotypo de 135×160 pixeles in le angulo superior sinistre.
+ 'config-logo-help' => 'Le apparentia predefinite de MediaWiki include spatio pro un logotypo de 135×160 pixels supra le menu del barra lateral.
Incarga un imagine con le dimensiones appropriate, e entra le URL hic.
Si tu non vole un logotypo, lassa iste quadro vacue.',
'config-instantcommons' => 'Activar "Instant Commons"',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons Instant Commons] es un function que permitte a wikis de usar imagines, sonos e altere multimedia trovate in le sito [http://commons.wikimedia.org/ Wikimedia Commons].
-Pro poter facer isto, MediaWiki require accesso a Internet.
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] es un function que permitte a wikis de usar imagines, sonos e altere multimedia trovate in le sito [//commons.wikimedia.org/ Wikimedia Commons].
+Pro poter facer isto, MediaWiki require accesso a Internet.
Pro plus information super iste function, includente instructiones super como configurar lo pro wikis altere que Wikimedia Commons, consulta [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos le manual].',
'config-cc-error' => 'Le selector de licentia Creative Commons non dava un resultato.
@@ -5976,6 +7780,7 @@ Pro facer alterationes, clicca sur "Retro".',
'config-install-step-failed' => 'fallite',
'config-install-extensions' => 'Include le extensiones',
'config-install-database' => 'Configura le base de datos',
+ 'config-install-schema' => 'Creation de schema',
'config-install-pg-schema-not-exist' => 'Iste schema de PostgreSQL non existe',
'config-install-pg-schema-failed' => 'Le creation del tabellas falleva.
Assecura te que le usator "$1" pote scriber in le schema "$2".',
@@ -5983,10 +7788,17 @@ Assecura te que le usator "$1" pote scriber in le schema "$2".',
'config-install-pg-plpgsql' => 'Verifica le presentia del linguage PL/pgSQL',
'config-pg-no-plpgsql' => 'Es necessari installar le linguage PL/pgSQL in le base de datos $1',
'config-pg-no-create-privs' => 'Le conto que tu specificava pro installation non ha sufficiente privilegios pro crear un conto.',
+ 'config-pg-not-in-role' => 'Le conto que tu specificava pro le usator web ja existe.
+Le conto que tu specificava pro installation non es superusator e non es membro del rolo de usator web, dunque es incapace de crear objectos possedite per le usator web.
+
+MediaWiki require actualmente que le tabellas sia possedite per le usator web. Per favor specifica un altere nomine de conto web, o clicca super "retornar" e specifica un usator de installation con sufficiente privilegios.',
'config-install-user' => 'Crea usator pro base de datos',
'config-install-user-alreadyexists' => 'Le usator "$1" ja existe',
'config-install-user-create-failed' => 'Le creation del usator "$1" ha fallite: $2',
'config-install-user-grant-failed' => 'Le concession de permission al usator "$1" falleva: $2',
+ 'config-install-user-missing' => 'Le usator specificate, "$1", non existe.',
+ 'config-install-user-missing-create' => 'Le usator specificate, "$1", non existe.
+Per favor marca le quadrato "crear conto" hic infra si tu vole crear lo.',
'config-install-tables' => 'Crea tabellas',
'config-install-tables-exist' => "'''Aviso''': Il pare que le tabellas de MediaWiki jam existe.
Le creation es saltate.",
@@ -5996,9 +7808,11 @@ Le creation es saltate.",
'config-install-interwiki-exists' => "'''Aviso''': Le tabella interwiki pare jam haber entratas.
Le lista predefinite es saltate.",
'config-install-stats' => 'Initialisation del statisticas',
- 'config-install-keys' => 'Genera clave secrete',
+ 'config-install-keys' => 'Generation de claves secrete',
+ 'config-insecure-keys' => "'''Attention:''' {{PLURAL:$2|Un clave|Alcun claves}} secur ($1) generate durante le installation non es completemente secur. Considera cambiar {{PLURAL:$2|lo|los}} manualmente.",
'config-install-sysop' => 'Crea conto de usator pro administrator',
- 'config-install-subscribe-fail' => 'Impossibile subscriber a mediawiki-announce',
+ 'config-install-subscribe-fail' => 'Impossibile subscriber a mediawiki-announce: $1',
+ 'config-install-subscribe-notpossible' => 'cURL non es installate e allow_url_fopen non es disponibile.',
'config-install-mainpage' => 'Crea pagina principal con contento predefinite',
'config-install-extension-tables' => 'Creation de tabellas pro le extensiones activate',
'config-install-mainpage-failed' => 'Non poteva inserer le pagina principal: $1',
@@ -6020,6 +7834,13 @@ $3
Post facer isto, tu pote '''[$2 entrar in tu wiki]'''.",
'config-download-localsettings' => 'Discargar LocalSettings.php',
'config-help' => 'adjuta',
+ 'mainpagetext' => "'''MediaWiki ha essite installate con successo.'''",
+ 'mainpagedocfooter' => 'Consulta le [//meta.wikimedia.org/wiki/Help:Contents Guida del usator] pro informationes super le uso del software wiki.
+
+== Pro initiar ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista de configurationes]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ a proposito de MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de diffusion pro annuncios de nove versiones de MediaWiki]',
);
/** Indonesian (Bahasa Indonesia)
@@ -6035,7 +7856,7 @@ $messages['id'] = array(
Untuk memutakhirkan instalasi ini, masukkan nilai <code>$wgUpgradeKey</code> dalam kotak yang tersedia di bawah ini.
Anda dapat menemukan nilai tersebut dalam LocalSettings.php.',
'config-localsettings-cli-upgrade' => 'Berkas LocalSettings.php terdeteksi.
-Untuk meningkatkan versi, sertakan pilihan --upgrade=yes.',
+Untuk meningkatkan versi, harap jalankan update.php.',
'config-localsettings-key' => 'Kunci pemutakhiran:',
'config-localsettings-badkey' => 'Kunci yang Anda berikan tidak benar',
'config-upgrade-key-missing' => 'Suatu instalasi MediaWiki telah terdeteksi.
@@ -6091,29 +7912,35 @@ Program ini didistribusikan dengan harapan bahwa itu akan berguna, tetapi '''tan
Lihat GNU General Public License untuk lebih jelasnya.
Anda seharusnya telah menerima <doclink href=\"Copying\">salinan dari GNU General Public License</doclink> bersama dengan program ini; jika tidak, kirimkan surat untuk Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. atau [http://www.gnu.org/copyleft/gpl.html baca versi daring].",
- 'config-sidebar' => '* [http://www.mediawiki.org Halaman utama MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents Panduan Pengguna]
-* [http://www.mediawiki.org/wiki/Manual:Contents Panduan Pengurus]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Pertanyaan yang Sering Diajukan]',
+ 'config-sidebar' => '* [//www.mediawiki.org/wiki/MediaWiki/id Situs MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents/id Pedoman Pengguna]
+* [//www.mediawiki.org/wiki/Manual:Contents/id Pedoman Administrator]
+* [//www.mediawiki.org/wiki/Manual:FAQ/id FAQ]
+----
+* <doclink href=Readme>Read me</doclink>
+* <doclink href=ReleaseNotes>Release notes</doclink>
+* <doclink href=Copying>Copying</doclink>
+* <doclink href=UpgradeDoc>Upgrading</doclink>',
'config-env-good' => 'Kondisi telah diperiksa.
Anda dapat menginstal MediaWiki.',
'config-env-bad' => 'Kondisi telah diperiksa.
Anda tidak dapat menginstal MediaWiki.',
'config-env-php' => 'PHP $1 diinstal.',
+ 'config-env-php-toolow' => 'PHP $1 telah terinstal.
+Namun, MediaWiki memerlukan PHP $2 atau lebih tinggi.',
'config-unicode-using-utf8' => 'Menggunakan utf8_normalize.so Brion Vibber untuk normalisasi Unicode.',
'config-unicode-using-intl' => 'Menggunakan [http://pecl.php.net/intl ekstensi PECL intl] untuk normalisasi Unicode.',
- 'config-unicode-pure-php-warning' => "'''Peringatan''': [http://pecl.php.net/intl Ekstensi intl PECL] untuk menangani normalisasi Unicode tidak tersedia, kembali menggunakan implementasi murni PHP yang lambat.
-Jika Anda menjalankan situs berlalu lintas tinggi, Anda harus sedikit membaca [http://www.mediawiki.org/wiki/Unicode_normalization_considerations normalisasi Unicode].",
+ 'config-unicode-pure-php-warning' => "'''Peringatan''': [http://pecl.php.net/intl Ekstensi intl PECL] untuk menangani normalisasi Unicode tidak tersedia, kembali menggunakan implementasi murni PHP yang lambat.
+Jika Anda menjalankan situs berlalu lintas tinggi, Anda harus sedikit membaca [//www.mediawiki.org/wiki/Unicode_normalization_considerations normalisasi Unicode].",
'config-unicode-update-warning' => "'''Peringatan''': Versi terinstal dari pembungkus normalisasi Unicode menggunakan versi lama pustaka [http://site.icu-project.org/ proyek ICU].
-Anda harus [http://www.mediawiki.org/wiki/Unicode_normalization_considerations memutakhirkannya] jika Anda ingin menggunakan Unicode.",
- 'config-no-db' => 'Tidak dapat menemukan pengandar basis data yang sesuai!',
- 'config-no-db-help' => 'Anda perlu menginstal pengandar basis data untuk PHP.
+Anda harus [//www.mediawiki.org/wiki/Unicode_normalization_considerations memutakhirkannya] jika Anda ingin menggunakan Unicode.",
+ 'config-no-db' => 'Pengandar basis data yang sesuai tidak ditemukan! Anda perlu menginstal pengandar basis data untuk PHP.
Jenis basis data yang didukung: $1.
-Jika Anda menggunakan inang bersama, mintalah penyedia inang Anda untuk menginstal pengandar basis data yang cocok.
+Jika Anda menggunakan inang bersama, mintalah penyedia inang Anda untuk menginstal pengandar basis data yang sesuai.
Jika Anda mengompilasi sendiri PHP, ubahlah konfigurasinya dengan mengaktifkan klien basis data, misalnya menggunakan <code>./configure --with-mysql</code>.
Jika Anda menginstal PHP dari paket Debian atau Ubuntu, maka Anda juga perlu menginstal modul php5-mysql.',
- 'config-no-fts3' => "'''Peringatan''': SQLite dikompilasi tanpa [http://sqlite.org/fts3.html modul FTS3], fitur pencarian tidak akan tersedia pada konfigurasi ini.",
+ 'config-no-fts3' => "'''Peringatan''': SQLite dikompilasi tanpa [//sqlite.org/fts3.html modul FTS3], fitur pencarian tidak akan tersedia pada konfigurasi ini.",
'config-register-globals' => "'''Peringatan: Opsi <code>[http://php.net/register_globals register_globals]</code> PHP diaktifkan.'''
'''Nonaktifkan kalau bisa.'''
MediaWiki akan bekerja, tetapi server Anda memiliki potensi kerentanan keamanan.",
@@ -6142,13 +7969,13 @@ MediaWiki memerlukan dukungan UTF-8 untuk berfungsi dengan benar.",
'config-memory-bad' => "'''Peringatan:''' <code>memory_limit</code> PHP adalah $1.
Ini terlalu rendah.
Instalasi terancam gagal!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] telah diinstal',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] telah diinstal',
'config-apc' => '[http://www.php.net/apc APC] telah diinstal',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] telah diinstal',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] telah diinstal',
- 'config-no-cache' => "'''Peringatan:''' Tidak dapat menemukan [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache], atau [http://www.iis.net/download/WinCacheForPhp WinCache]. Pinggahan obyek tidak dinonaktifkan.",
+ 'config-no-cache' => "'''Peringatan:''' Tidak dapat menemukan [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache], atau [http://www.iis.net/download/WinCacheForPhp WinCache]. Pinggahan obyek tidak dinonaktifkan.",
'config-diff3-bad' => 'GNU diff3 tidak ditemukan.',
- 'config-imagemagick' => 'ImageMagick ditemukan: <code>$1</code> .
+ 'config-imagemagick' => 'ImageMagick ditemukan: <code>$1</code> .
Pembuatan gambar mini akan diaktifkan jika Anda mengaktifkan pengunggahan.',
'config-gd' => 'Pustaka grafis GD terpasang ditemukan.
Pembuatan gambar mini akan diaktifkan jika Anda mengaktifkan pengunggahan.',
@@ -6157,40 +7984,48 @@ Pembuatan gambar mini dinonaktifkan.',
'config-no-uri' => "'''Kesalahan:''' URI saat ini tidak dapat ditentukan.
Instalasi dibatalkan.",
'config-uploads-not-safe' => "'''Peringatan:''' Direktori bawaan pengunggahan <code>$1</code> Anda rentan terhadap eksekusi skrip yang sewenang-wenang.
-Meskipun MediaWiki memeriksa semua berkas unggahan untuk ancaman keamanan, sangat dianjurkan untuk [http://www.mediawiki.org/wiki/Manual:Security#Upload_security menutup kerentanan keamanan ini] sebelum mengaktifkan pengunggahan.",
+Meskipun MediaWiki memeriksa semua berkas unggahan untuk ancaman keamanan, sangat dianjurkan untuk [//www.mediawiki.org/wiki/Manual:Security#Upload_security menutup kerentanan keamanan ini] sebelum mengaktifkan pengunggahan.",
'config-brokenlibxml' => 'Sistem Anda memiliki kombinasi versi PHP dan libxml2 yang memiliki bug dan dapat menyebabkan kerusakan data tersembunyi pada MediaWiki dan aplikasi web lain.
-Mutakhirkan ke PHP 5.2.9 atau yang lebih baru dan libxml2 2.7.3 atau yang lebih baru ([http://bugs.php.net/bug.php?id=45996 arsip bug di PHP]).
+Mutakhirkan ke PHP 5.2.9 atau yang lebih baru dan libxml2 2.7.3 atau yang lebih baru ([//bugs.php.net/bug.php?id=45996 arsip bug di PHP]).
Instalasi dibatalkan.',
- 'config-using531' => 'PHP $1 tidak kompatibel dengan MediaWiki karena bug yang melibatkan parameter referensi untuk <code>__call()</code> .
-Tingkatkan ke PHP 5.3.2 atau yang lebih baru, atau turunkan ke PHP versi 5.3.0 untuk memperbaiki ini ([http://bugs.php.net/bug.php?id=50394 arsip bug di PHP]).
+ 'config-using531' => 'MediaWiki tidak dapat dijalankan dengan PHP $1 karena bug yang melibatkan parameter referensi untuk <code>__call()</code> .
+Tingkatkan ke PHP 5.3.2 atau lebih baru, atau turunkan ke PHP versi 5.3.0 untuk menyelesaikan hal ini.
Instalasi dibatalkan.',
+ 'config-suhosin-max-value-length' => 'Suhosin terpasang dan membatasi panjang parameter GET sebesar $1 bita. Komponen ResourceLoader MediaWiki akan mengatasi batasan ini, tapi penanganannya akan menurunkan kinerja. Jika memungkinkan, Anda sebaiknya menetapkan nilai suhosin.get.max_value_length menjadi 1024 atau lebih tinggi dalam php.ini dan menyetel $wgResourceLoaderMaxQueryLength dengan nilai yang sama dalam LocalSettings.php.',
'config-db-type' => 'Jenis basis data:',
'config-db-host' => 'Inang basis data:',
- 'config-db-host-help' => 'Jika server basis data Anda berada di server yang berbeda, masukkan nama inang atau alamat IP di sini.
+ 'config-db-host-help' => 'Jika server basis data Anda berada di server yang berbeda, masukkan nama inang atau alamat IP di sini.
-Jika Anda menggunakan inang web bersama, penyedia inang Anda harus memberikan nama inang yang benar di dokumentasi mereka.
+Jika Anda menggunakan inang web bersama, penyedia inang Anda harus memberikan nama inang yang benar di dokumentasi mereka.
Jika Anda menginstal pada server Windows dan menggunakan MySQL, "localhost" mungkin tidak dapat digunakan sebagai nama server. Jika demikian, coba "127.0.0.1" untuk alamat IP lokal.',
'config-db-host-oracle' => 'TNS basis data:',
'config-db-host-oracle-help' => 'Masukkan [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Local Connect Name] yang sah; berkas tnsnames.ora harus dapat diakses oleh instalasi ini.<br />Jika Anda menggunakan pustaka klien 10g atau lebih baru, Anda juga dapat menggunakan metode penamaan [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].',
'config-db-wiki-settings' => 'Identifikasi wiki ini',
'config-db-name' => 'Nama basis data:',
- 'config-db-name-help' => 'Pilih nama yang mengidentifikasikan wiki Anda.
-Nama tersebut tidak boleh mengandung spasi.
+ 'config-db-name-help' => 'Pilih nama yang mengidentifikasikan wiki Anda.
+Nama tersebut tidak boleh mengandung spasi.
Jika Anda menggunakan inang web bersama, penyedia inang Anda dapat memberikan Anda nama basis data khusus untuk digunakan atau mengizinkan Anda membuat basis data melalui panel kontrol.',
'config-db-name-oracle' => 'Skema basis data:',
+ 'config-db-account-oracle-warn' => 'Ada tiga skenario yang didukung untuk instalasi Oracle sebagai basis data pendukung:
+
+Jika Anda ingin membuat akun basis data sebagai bagian dari proses instalasi, silakan masukkan akun dengan peran SYSDBA sebagai akun basis data untuk instalasi dan tentukan kredensial yang diinginkan untuk akun akses web. Jika tidak, Anda dapat membuat akun akses web secara manual dan hanya memberikan akun tersebut (jika memiliki izin yang diperlukan untuk membuat objek skema) atau memasukkan dua akun yang berbeda, satu dengan hak membuat objek dan satu dibatasi untuk akses web.
+
+Skrip untuk membuat akun dengan privilese yang diperlukan dapat ditemukan pada direktori "maintenance/oracle/" instalasi ini. Harap diingat bahwa penggunaan akun terbatas akan menonaktifkan semua kemampuan pemeliharaan dengan akun bawaan.',
'config-db-install-account' => 'Akun pengguna untuk instalasi',
'config-db-username' => 'Nama pengguna basis data:',
'config-db-password' => 'Kata sandi basis data:',
- 'config-db-install-username' => 'Masukkan nama pengguna yang akan digunakan untuk terhubung ke basis data selama proses instalasi.
+ 'config-db-password-empty' => 'Silakan masukkan sandi untuk pengguna basis data baru: $1.
+Meskipun dimungkinkan untuk membuat pengguna tanpa sandi, hal itu tidak aman.',
+ 'config-db-install-username' => 'Masukkan nama pengguna yang akan digunakan untuk terhubung ke basis data selama proses instalasi.
Ini bukan nama pengguna akun MediaWiki, melainkan nama pengguna untuk basis data Anda.',
- 'config-db-install-password' => 'Masukkan sandi yang akan digunakan untuk terhubung ke basis data selama proses instalasi.
+ 'config-db-install-password' => 'Masukkan sandi yang akan digunakan untuk terhubung ke basis data selama proses instalasi.
Ini bukan sandi untuk akun MediaWiki, melainkan sandi untuk basis data Anda.',
'config-db-install-help' => 'Masukkan nama pengguna dan sandi yang akan digunakan untuk terhubung ke basis data pada saat proses instalasi.',
'config-db-account-lock' => 'Gunakan nama pengguna dan kata sandi yang sama selama operasi normal',
'config-db-wiki-account' => 'Akun pengguna untuk operasi normal',
- 'config-db-wiki-help' => 'Masukkan nama pengguna dan sandi yang akan digunakan untuk terhubung ke basis data wiki selama operasi normal.
+ 'config-db-wiki-help' => 'Masukkan nama pengguna dan sandi yang akan digunakan untuk terhubung ke basis data wiki selama operasi normal.
Jika akun tidak ada, akun instalasi memiliki hak yang memadai, akun pengguna ini akan dibuat dengan hak akses minimum yang diperlukan untuk mengoperasikan wiki.',
'config-db-prefix' => 'Prefiks tabel basis data:',
'config-db-prefix-help' => 'Jika Anda perlu berbagi satu basis data di antara beberapa wiki, atau antara MediaWiki dan aplikasi web lain, Anda dapat memilih untuk menambahkan prefiks terhadap semua nama tabel demi menghindari konflik.
@@ -6201,15 +8036,15 @@ Prefiks ini biasanya dibiarkan kosong.',
'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 biner',
'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
'config-charset-mysql4' => 'UTF-8 yang kompatibel balik dengan MySQL 4.0',
- 'config-charset-help' => "'''Peringatan:''' Jika Anda menggunakan '''UTF-8 kompatibel balik''' pada MySQL 4.1+, dan kemudian mencadangkan basis data dengan <code>mysqldump</code>, proses itu mungkin menghancurkan semua karakter non-ASCII dan merusak cadangan Anda tanpa dapat dikembalikan!
+ 'config-charset-help' => "'''Peringatan:''' Jika Anda menggunakan '''UTF-8 kompatibel balik''' pada MySQL 4.1+, dan kemudian mencadangkan basis data dengan <code>mysqldump</code>, proses itu mungkin menghancurkan semua karakter non-ASCII dan merusak cadangan Anda tanpa dapat dikembalikan!
-Dalam '''modus biner''', MediaWiki menyimpan teks UTF-8 ke basis data dalam bidang biner.
+Dalam '''modus biner''', MediaWiki menyimpan teks UTF-8 ke basis data dalam bidang biner.
Ini lebih efisien dibandingkan modus UTF-8 MySQL dan memungkinkan Anda untuk menggunakan berbagai karakter Unicode.
-Dalam '''modus UTF-8''', MySQL akan tahu apa set karakter data anda dan dapat menyajikan dan mengubahnya denga tepat, namun tidak akan mengizinkan Anda menyimpan karakter di atas [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
+Dalam '''modus UTF-8''', MySQL akan tahu apa set karakter data anda dan dapat menyajikan dan mengubahnya denga tepat, namun tidak akan mengizinkan Anda menyimpan karakter di atas [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
'config-mysql-old' => 'MySQL $1 atau versi terbaru diperlukan, Anda menggunakan $2.',
'config-db-port' => 'Porta basis data:',
'config-db-schema' => 'Skema untuk MediaWiki',
- 'config-db-schema-help' => 'Skema di atas biasanya benar.
+ 'config-db-schema-help' => 'Skema ini biasanya berjalan baik.
Ubah hanya jika Anda tahu Anda perlu mengubahnya.',
'config-sqlite-dir' => 'Direktori data SQLite:',
'config-sqlite-dir-help' => "SQLite menyimpan semua data dalam satu berkas.
@@ -6228,19 +8063,22 @@ Pertimbangkan untuk menempatkan basis data di tempat lain, misalnya di <code>/va
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
- 'config-support-info' => 'MediaWiki mendukung sistem basis data berikut:
+ 'config-type-ibm_db2' => 'IBM DB2',
+ 'config-support-info' => 'MediaWiki mendukung sistem basis data berikut:
$1
Jika Anda tidak melihat sistem basis data yang Anda gunakan tercantum di bawah ini, ikuti petunjuk terkait di atas untuk mengaktifkan dukungan.',
'config-support-mysql' => '* $1 adalah target utama MediaWiki dan memiliki dukungan terbaik ([http://www.php.net/manual/en/mysql.installation.php cara mengompilasi PHP dengan dukungan MySQL])',
- 'config-support-postgres' => '* $1 adalah sistem basis data sumber terbuka populer sebagai alternatif untuk MySQL ([http://www.php.net/manual/en/pgsql.installation.php cara mengompilasi PHP dengan dukungan PostgreSQL])',
+ 'config-support-postgres' => '* $1 adalah sistem basis data sumber terbuka populer sebagai alternatif untuk MySQL ([http://www.php.net/manual/en/pgsql.installation.php cara mengompilasi PHP dengan dukungan PostgreSQL]). Mungkin ada beberapa bug terbuka dan alternatif ini tidak direkomendasikan untuk dipakai dalam lingkungan produksi.',
'config-support-sqlite' => '* $1 adalah sistem basis data yang ringan yang sangat baik dukungannya. ([http://www.php.net/manual/en/pdo.installation.php cara mengompilasi PHP dengan dukungan SQLite], menggunakan PDO)',
'config-support-oracle' => '* $1 adalah basis data komersial untuka perusahaan. ([http://www.php.net/manual/en/oci8.installation.php cara mengompilasi PHP dengan dukungan OCI8])',
+ 'config-support-ibm_db2' => '* $1 adalah basis data-perusahaan komersial.',
'config-header-mysql' => 'Pengaturan MySQL',
'config-header-postgres' => 'Pengaturan PostgreSQL',
'config-header-sqlite' => 'Pengaturan SQLite',
'config-header-oracle' => 'Pengaturan Oracle',
+ 'config-header-ibm_db2' => 'Pengaturan IBM DB2',
'config-invalid-db-type' => 'Jenis basis data tidak sah',
'config-missing-db-name' => 'Anda harus memasukkan nilai untuk "Nama basis data"',
'config-missing-db-host' => 'Anda harus memasukkan nilai untuk "Inang basis data"',
@@ -6256,9 +8094,11 @@ Gunakan hanya huruf ASCII (a-z, A-Z), angka (0-9), garis bawah (_), dan tanda hu
Periksa nama inang, pengguna, dan sandi di bawah ini dan coba lagi.',
'config-invalid-schema' => 'Skema MediaWiki "$1" tidak sah.
Gunakan hanya huruf ASCII (a-z, A-Z), angka (0-9), dan garis bawah (_).',
+ 'config-db-sys-create-oracle' => 'Penginstal hanya mendukung penggunaan akun SYSDBA untuk membuat akun baru.',
+ 'config-db-sys-user-exists-oracle' => 'Akun pengguna "$1"sudah ada. SYSDBA hanya dapat digunakan untuk membuat akun baru!',
'config-postgres-old' => 'PostgreSQL $1 atau versi terbaru diperlukan, Anda menggunakan $2.',
- 'config-sqlite-name-help' => 'Pilih nama yang mengidentifikasi wiki Anda.
-Jangan gunakan spasi atau tanda hubung.
+ 'config-sqlite-name-help' => 'Pilih nama yang mengidentifikasi wiki Anda.
+Jangan gunakan spasi atau tanda hubung.
Nama ini akan digunakan untuk nama berkas data SQLite.',
'config-sqlite-parent-unwritable-group' => 'Tidak dapat membuat direktori data <code><nowiki>$1</nowiki></code>, karena direktori induk <code><nowiki>$2</nowiki></code> tidak bisa ditulisi oleh server web.
@@ -6279,7 +8119,7 @@ Pada sistem Unix/Linux lakukan hal berikut:
<pre>cd $2
mkdir $3
chmod a+w $3</pre>',
- 'config-sqlite-mkdir-error' => 'Kesalahan saat membuat direktori data "$1".
+ 'config-sqlite-mkdir-error' => 'Kesalahan saat membuat direktori data "$1".
Periksa lokasi dan coba lagi.',
'config-sqlite-dir-unwritable' => 'Tidak dapat menulisi direktori "$1".
Ubah hak akses direktori sehingga server web dapat menulis ke sana, dan coba lagi.',
@@ -6307,7 +8147,7 @@ Anda sekarang dapat [$1 mulai menggunakan wiki Anda].',
'config-db-web-help' => 'Masukkan nama pengguna dan sandi yang akan digunakan server web untuk terhubung ke server basis data saat operasi normal wiki.',
'config-db-web-account-same' => 'Gunakan akun yang sama seperti untuk instalasi',
'config-db-web-create' => 'Buat akun jika belum ada',
- 'config-db-web-no-create-privs' => 'Akun Anda berikan untuk instalasi tidak memiliki hak yang cukup untuk membuat akun.
+ 'config-db-web-no-create-privs' => 'Akun Anda berikan untuk instalasi tidak memiliki hak yang cukup untuk membuat akun.
Akun yang Anda berikan harus sudah ada.',
'config-mysql-engine' => 'Mesin penyimpanan:',
'config-mysql-innodb' => 'InnoDB',
@@ -6322,7 +8162,8 @@ Basis data MyISAM cenderung lebih sering rusak daripada basis data InnoDB.",
'config-mysql-charset-help' => "Dalam '''modus biner''', MediaWiki menyimpan teks UTF-8 untuk basis data dalam bidang biner.
Ini lebih efisien daripada modus UTF-8 MySQL dan memungkinkan Anda untuk menggunakan ragam penuh karakter Unicode.
-Dalam '''modus UTF-8''', MySQL akan tahu apa set karakter data dan dapat menampilkan dan mengubahnya sesuai keperluan, tetapi tidak akan mengizinkan Anda menyimpan karakter di atas [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
+Dalam '''modus UTF-8''', MySQL akan tahu apa set karakter data dan dapat menampilkan dan mengubahnya sesuai keperluan, tetapi tidak akan mengizinkan Anda menyimpan karakter di atas [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Basic Multilingual Plane].",
+ 'config-ibm_db2-low-db-pagesize' => "Basis data DB2 Anda tidak memiliki pagesize yang cukup untuk tablespace bawaan. Pagesize harus sama atau lebih dari '''32K'''.",
'config-site-name' => 'Nama wiki:',
'config-site-name-help' => 'Ini akan muncul di bilah judul peramban dan di berbagai tempat lainnya.',
'config-site-name-blank' => 'Masukkan nama situs.',
@@ -6331,11 +8172,13 @@ Dalam '''modus UTF-8''', MySQL akan tahu apa set karakter data dan dapat menampi
'config-ns-site-name' => 'Sama seperti nama wiki: $1',
'config-ns-other' => 'Lainnya (sebutkan)',
'config-ns-other-default' => 'MyWiki',
- 'config-project-namespace-help' => 'Mengikuti contoh Wikipedia, banyak wiki menyimpan halaman kebijakan mereka terpisah dari halaman konten mereka, dalam "\'\'\'ruang nama proyek\'\'\'".
-Semua judul halaman dalam ruang nama ini diawali dengan prefiks tertentu yang dapat Anda tetapkan di sini.
+ 'config-project-namespace-help' => 'Mengikuti contoh Wikipedia, banyak wiki menyimpan halaman kebijakan mereka terpisah dari halaman konten mereka, dalam "\'\'\'ruang nama proyek\'\'\'".
+Semua judul halaman dalam ruang nama ini diawali dengan prefiks tertentu yang dapat Anda tetapkan di sini.
Biasanya, prefiks ini berasal dari nama wiki, tetapi tidak dapat berisi karakter tanda baca seperti "#" atau ":".',
- 'config-ns-invalid' => 'Ruang nama "<nowiki>$1</nowiki>" yang ditentukan tidak sah.
+ 'config-ns-invalid' => 'Ruang nama "<nowiki>$1</nowiki>" yang ditentukan tidak sah.
Berikan ruang nama proyek lain.',
+ 'config-ns-conflict' => 'Ruang nama "<nowiki>$1</nowiki>" yang diberikan berkonflik dengan ruang nama bawaan MediaWiki.
+Tentukan ruang nama proyek yang berbeda.',
'config-admin-box' => 'Akun pengurus',
'config-admin-name' => 'Nama Anda:',
'config-admin-password' => 'Kata sandi:',
@@ -6343,20 +8186,20 @@ Berikan ruang nama proyek lain.',
'config-admin-help' => 'Masukkan nama pengguna pilihan Anda di sini, misalnya "Udin Wiki".
Ini adalah nama yang akan Anda gunakan untuk masuk ke wiki.',
'config-admin-name-blank' => 'Masukkan nama pengguna pengurus.',
- 'config-admin-name-invalid' => 'Nama pengguna "<nowiki>$1</nowiki>" yang diberikan tidak sah.
+ 'config-admin-name-invalid' => 'Nama pengguna "<nowiki>$1</nowiki>" yang diberikan tidak sah.
Berikan nama pengguna lain.',
'config-admin-password-blank' => 'Masukkan kata sandi untuk akun pengurus.',
'config-admin-password-same' => 'Kata sandi harus tidak sama seperti nama pengguna.',
'config-admin-password-mismatch' => 'Dua kata sandi yang Anda masukkan tidak cocok.',
'config-admin-email' => 'Alamat surel:',
- 'config-admin-email-help' => 'Masukkan alamat surel untuk memungkinkan Anda menerima surel dari pengguna lain, menyetel ulang sandi, dan mendapat pemberitahuan tentang perubahan atas daftar pantauan Anda.',
+ 'config-admin-email-help' => 'Masukkan alamat surel untuk memungkinkan Anda menerima surel dari pengguna lain, menyetel ulang sandi, dan mendapat pemberitahuan tentang perubahan atas daftar pantauan Anda. Anda dapat mengosongkan bidang ini.',
'config-admin-error-user' => 'Kesalahan internal saat membuat admin dengan nama "<nowiki>$1</nowiki>".',
'config-admin-error-password' => 'Kesalahan internal saat membuat sandi untuk admin "<nowiki>$1</nowiki>":<pre>$2</pre>',
'config-admin-error-bademail' => 'Anda memasukkan alamat surel yang tidak sah',
'config-subscribe' => 'Berlangganan ke [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce milis pengumuman rilis].',
'config-subscribe-help' => 'Ini adalah milis bervolume rendah yang digunakan untuk pengumuman rilis, termasuk pengumuman keamanan penting.
Anda sebaiknya berlangganan dan memperbarui instalasi MediaWiki saat versi baru keluar.',
- 'config-almost-done' => 'Anda hampir selesai!
+ 'config-almost-done' => 'Anda hampir selesai!
Anda sekarang dapat melewati sisa konfigurasi dan menginstal wiki sekarang.',
'config-optional-continue' => 'Berikan saya pertanyaan lagi.',
'config-optional-skip' => 'Saya sudah bosan, instal saja wikinya.',
@@ -6365,35 +8208,35 @@ Anda sekarang dapat melewati sisa konfigurasi dan menginstal wiki sekarang.',
'config-profile-no-anon' => 'Pembuatan akun diperlukan',
'config-profile-fishbowl' => 'Khusus penyunting terdaftar',
'config-profile-private' => 'Wiki pribadi',
- 'config-profile-help' => "Wiki paling baik bekerja jika Anda membiarkan sebanyak mungkin orang untuk menyunting.
-Dengan MediaWiki, sangat mudah meninjau perubahan terbaru dan mengembalikan kerusakan yang dilakukan oleh pengguna naif atau berbahaya.
+ 'config-profile-help' => "Wiki paling baik bekerja jika Anda membiarkan sebanyak mungkin orang untuk menyunting. Dengan MediaWiki, sangat mudah meninjau perubahan terbaru dan mengembalikan kerusakan yang dilakukan oleh pengguna naif atau berbahaya.
-Namun, berbagai kegunaan lain dari MediaWiki telah ditemukan, dan kadang tidak mudah untuk meyakinkan semua orang manfaat dari cara wiki.
-Jadi, Anda yang menentukan.
+Namun, berbagai kegunaan lain dari MediaWiki telah ditemukan, dan kadang tidak mudah untuk meyakinkan semua orang manfaat dari cara wiki. Jadi, Anda yang menentukan.
-'''{{int:config-profil-wiki}}''' memungkinkan setiap orang untuk menyunting, bahkan tanpa masuk.
-'''{{int:config-profil-no-anon}}''' menyediakan akuntabilitas tambahan, tetapi dapat mencegah kontributor biasa.
+'''{{int:config-profile-wiki}}''' memungkinkan setiap orang untuk menyunting, bahkan tanpa masuk.
+'''{{int:config-profile-no-anon}}''' menyediakan akuntabilitas tambahan, tetapi dapat mencegah kontributor biasa.
-'''{{int:config-profil-fishbowl}}''' memungkinkan pengguna yang disetujui untuk menyunting, tetapi publik dapat melihat halaman, termasuk riwayatnya.
-'''{{int:config-profil-private}}''' hanya memungkinkan pengguna yang disetujui untuk melihat dan menyunting halaman.
+'''{{int:config-profile-fishbowl}}''' memungkinkan pengguna yang disetujui untuk menyunting, tetapi publik dapat melihat halaman, termasuk riwayatnya.
+'''{{int:config-profile-private}}''' hanya memungkinkan pengguna yang disetujui untuk melihat dan menyunting halaman.
-Konfigurasi hak pengguna yang lebih kompleks tersedia setelah instalasi. Lihat [http://www.mediawiki.org/wiki/Manual:User_rights/id entri manual terkait].",
+Konfigurasi hak pengguna yang lebih kompleks tersedia setelah instalasi. Lihat [//www.mediawiki.org/wiki/Manual:User_rights/id entri manual terkait].",
'config-license' => 'Hak cipta dan lisensi:',
'config-license-none' => 'Tidak ada lisensi',
'config-license-cc-by-sa' => 'Creative Commons Atribusi Berbagi Serupa',
+ 'config-license-cc-by' => 'Creative Commons Atribusi',
'config-license-cc-by-nc-sa' => 'Creative Commons Atribusi Non-Komersial Berbagi Serupa',
- 'config-license-gfdl-old' => 'Lisensi Dokumentasi Bebas GNU 1.2',
- 'config-license-gfdl-current' => 'Lisensi Dokumentasi Bebas GNU 1.3 atau versi terbaru',
+ 'config-license-cc-0' => 'Creative Commons Zero (Domain Publik)',
+ 'config-license-gfdl' => 'Lisensi Dokumentasi Bebas GNU 1.3 atau versi terbaru',
'config-license-pd' => 'Domain Umum',
'config-license-cc-choose' => 'Pilih lisensi Creative Commons kustom',
- 'config-license-help' => "Banyak wiki publik meletakkan semua kontribusi di bawah [http://freedomdefined.org/Definition lisensi bebas].
-Hal ini membantu untuk menciptakan rasa kepemilikan komunitas dan mendorong kontribusi jangka panjang.
-Ini umumnya tidak diperlukan untuk wiki pribadi atau perusahaan.
+ 'config-license-help' => "Banyak wiki publik melisensikan semua kontribusi di bawah [http://freedomdefined.org/Definition lisensi bebas].
+Hal ini membantu menciptakan rasa kepemilikan komunitas dan mendorong kontribusi jangka panjang.
+Hal ini umumnya tidak diperlukan untuk wiki pribadi atau perusahaan.
-Jika Anda ingin dapat menggunakan teks dari Wikipedia dan Anda ingin Wikipedia untuk dapat menerima teks yang disalin dari wiki Anda, Anda harus memilih'''Creative Commons Attribution Share Alike'''.
+Jika Anda ingin dapat menggunakan teks dari Wikipedia dan Anda ingin agar Wikipedia dapat menerima teks yang disalin dari wiki Anda, Anda harus memilih'''Creative Commons Attribution Share Alike'''.
-GNU Free Documentation License adalah lisensi sebelumnya dari Wikipedia.
-Lisensi ini masih sah, namun memiliki beberapa fitur yang menyulitkan pemakaian ulang dan interpretasi.",
+Wikipedia sebelumnya menggunakan GNU Free Documentation License.
+Lisensi ini masih sah, namun sulit dipahami.
+Selain itu, sulit untuk menggunakan ulang konten yang dilisensikan di bawah GFDL.",
'config-email-settings' => 'Pengaturan surel',
'config-enable-email' => 'Aktifkan surel keluar',
'config-enable-email-help' => 'Jika Anda ingin mengaktifkan surel, [http://www.php.net/manual/en/mail.configuration.php setelah surel PHP] perlu dikonfigurasi dengan benar.
@@ -6415,7 +8258,7 @@ Banyak server surel mensyaratkan paling tidak bagian nama domain yang sah.',
'config-upload-settings' => 'Pengunggahan gambar dan berkas',
'config-upload-enable' => 'Aktifkan pengunggahan berkas',
'config-upload-help' => 'Pengunggahan berkas berpotensi memaparkan server Anda dengan risiko keamanan.
-Untuk informasi lebih lanjut, baca [http://www.mediawiki.org/wiki/Manual:Security/id manual keamanan].
+Untuk informasi lebih lanjut, baca [//www.mediawiki.org/wiki/Manual:Security/id manual keamanan].
Untuk mengaktifkan pengunggahan berkas, ubah modus subdirektori <code>images</code> di bawah direktori akar MediaWiki agar server web dapat menulis ke sana.
Kemudian aktifkan opsi ini.',
@@ -6423,13 +8266,13 @@ Kemudian aktifkan opsi ini.',
'config-upload-deleted-help' => 'Pilih direktori tempat mengarsipkan berkas yang dihapus.
Idealnya, direktori ini tidak boleh dapat diakses dari web.',
'config-logo' => 'URL logo:',
- 'config-logo-help' => 'Kulit bawaan MediaWiki memberikan ruang untuk logo ukuran 135x160 pixel di sudut kiri atas.
-Unggah gambar dengan ukuran yang sesuai, lalu masukkan URL di sini.
+ 'config-logo-help' => 'Kulit bawaan MediaWiki memberikan ruang untuk logo berukuran 135x160 piksel di atas menu bilah samping.
+Unggah gambar dengan ukuran yang sesuai, lalu masukkan URL di sini.
Jika Anda tidak ingin menyertakan logo, biarkan kotak ini kosong.',
'config-instantcommons' => 'Aktifkan Instant Commons',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons Instant Commons] adalah fitur yang memungkinkan wiki untuk menggunakan gambar, suara, dan media lain dari [http://commons.wikimedia.org/ Wikimedia Commons].
-Untuk melakukannya, MediaWiki memerlukan akses ke Internet.
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] adalah fitur yang memungkinkan wiki untuk menggunakan gambar, suara, dan media lain dari [//commons.wikimedia.org/ Wikimedia Commons].
+Untuk melakukannya, MediaWiki memerlukan akses ke Internet.
Untuk informasi lebih lanjut tentang fitur ini, termasuk petunjuk tentang cara untuk mengatur untuk wiki selain Wikimedia Commons, baca [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos manual].',
'config-cc-error' => 'Pemilih lisensi Creative Commons tidak memberikan hasil.
@@ -6445,23 +8288,36 @@ Situs berukuran sedang hingga besar sangat dianjurkan untuk mengaktifkan fitur i
'config-cache-memcached' => 'Gunakan Memcached (memerlukan setup dan konfigurasi tambahan)',
'config-memcached-servers' => 'Server Memcached:',
'config-memcached-help' => 'Daftar alamat IP yang digunakan untuk Memcached.
-Harus dipisahkan dengan koma dan sebutkan port yang akan digunakan (contoh: 127.0.0.1:11211, 192.168.1.25:11211).',
+Harus dispesifikasikan per baris berikut porta yang akan digunakan. Contoh:
+ 127.0.0.1:11211
+ 192.168.1.25:1234',
+ 'config-memcache-needservers' => 'Anda memilih Memcached sebagai jenis singgahan, tetapi tidak menentukan server apa pun.',
+ 'config-memcache-badip' => 'Anda memasukkan alamat IP yang tidak sah untuk Memcached: $1 .',
+ 'config-memcache-noport' => 'Anda tidak menentukan suatu porta untuk digunakan oleh server Memcached: $1.
+Jika Anda tidak tahu porta tersebut, porta bawaan adalah 11211.',
+ 'config-memcache-badport' => 'Nomor porta Memcached harus antara $1 dan $2.',
'config-extensions' => 'Ekstensi',
'config-extensions-help' => 'Ekstensi yang tercantum di atas terdeteksi di direktori <code>./extensions</code>.
Ekstensi tersebut mungkin memerlukan konfigurasi tambahan, tetapi Anda dapat mengaktifkannya sekarang.',
'config-install-alreadydone' => "'''Peringatan:''' Anda tampaknya telah menginstal MediaWiki dan mencoba untuk menginstalnya lagi.
Lanjutkan ke halaman berikutnya.",
+ 'config-install-begin' => 'Dengan menekan "{{int:config-continue}}", Anda akan memulai instalasi MediaWiki.
+Jika Anda masih ingin membuat perubahan, tekan "{{int:config-back}}".',
'config-install-step-done' => 'selesai',
'config-install-step-failed' => 'gagal',
'config-install-extensions' => 'Termasuk ekstensi',
- 'config-install-database' => 'Mendirikan basis data',
- 'config-install-pg-schema-failed' => 'Pembuatan tabel gagal.
+ 'config-install-database' => 'Menyiapkan basis data',
+ 'config-install-pg-schema-not-exist' => 'Skema PostgreSQL tidak tersedia.',
+ 'config-install-pg-schema-failed' => 'Pembuatan tabel gagal.
Pastikan bahwa pengguna "$1" dapat menulis ke skema "$2".',
'config-install-pg-commit' => 'Melakukan perubahan',
'config-install-pg-plpgsql' => 'Memeriksa bahasa PL / pgSQL',
'config-pg-no-plpgsql' => 'Anda perlu menginstal bahasa PL/pgSQL pada basis data $1',
+ 'config-pg-no-create-privs' => 'Akun yang Anda tetapkan untuk instalasi tidak memiliki hak yang cukup untuk membuat akun.',
'config-install-user' => 'Membuat pengguna basis data',
+ 'config-install-user-alreadyexists' => 'Pengguna "$1" sudah ada',
+ 'config-install-user-create-failed' => 'Pembuatan pengguna "$1" gagal: $2',
'config-install-user-grant-failed' => 'Memberikan izin untuk pengguna "$1" gagal: $2',
'config-install-tables' => 'Membuat tabel',
'config-install-tables-exist' => "'''Peringatan''': Tabel MediaWiki sepertinya sudah ada.
@@ -6471,10 +8327,13 @@ Melompati pembuatan.",
'config-install-interwiki-list' => 'Tidak dapat menemukan berkas <code>interwiki.list</code>.',
'config-install-interwiki-exists' => "'''Peringatan''': Tabel antarwiki tampaknya sudah memiliki entri.
Mengabaikan daftar bawaan.",
- 'config-install-keys' => 'Menciptakan kunci rahasia',
+ 'config-install-stats' => 'Inisialisasi statistik',
+ 'config-install-keys' => 'Membuat kunci rahasia',
+ 'config-insecure-keys' => "'''Peringatan:''' {{PLURAL:$2|Suatu|Beberapa}} kunci aman ($1) yang dibuat selama instalasi {{PLURAL:$2|tidak|tidak}} benar-benar aman. Pertimbangkan untuk mengubah {{PLURAL:$2|kunci|kunci-kunci}} tersebut secara manual.",
'config-install-sysop' => 'Membuat akun pengguna pengurus',
'config-install-subscribe-fail' => 'Tidak dapat berlangganan mediawiki-announce',
'config-install-mainpage' => 'Membuat halaman utama dengan konten bawaan',
+ 'config-install-extension-tables' => 'Pembuatan tabel untuk ekstensi yang diaktifkan',
'config-install-mainpage-failed' => 'Tidak dapat membuat halaman utama: $1',
'config-install-done' => "'''Selamat!'''
Anda telah berhasil menginstal MediaWiki.
@@ -6482,12 +8341,30 @@ Anda telah berhasil menginstal MediaWiki.
Penginstal telah membuat berkas <code>LocalSettings.php</code>.
Berkas itu berisi semua konfigurasi Anda.
-Anda perlu [$1 mengunduhnya] dan meletakkannya di basis instalasi wiki (direktori yang sama dengan index.php).
-'''Catatan''': Jika Anda tidak melakukannya sekarang, berkas konfigurasi yang dihasilkan ini tidak akan tersedia lagi setelah Anda keluar instalasi tanpa mengunduhnya.
+Anda perlu mengunduh berkas itu dan meletakkannya di direktori instalasi wiki (direktori yang sama dengan index.php). Pengunduhan akan dimulai secara otomatis.
+
+Jika pengunduhan tidak terjadi, atau jika Anda membatalkannya, Anda dapat mengulangi pengunduhan dengan mengeklik tautan berikut:
+
+$3
+
+'''Catatan''': Jika Anda tidak melakukannya sekarang, berkas konfigurasi yang dihasilkan ini tidak akan tersedia lagi setelah Anda keluar dari proses instalasi tanpa mengunduhnya.
Setelah melakukannya, Anda dapat '''[$2 memasuki wiki Anda]'''.",
'config-download-localsettings' => 'Unduh LocalSettings.php',
'config-help' => 'bantuan',
+ 'mainpagetext' => "'''MediaWiki telah terpasang dengan sukses'''.",
+ 'mainpagedocfooter' => 'Silakan baca [//www.mediawiki.org/wiki/Help:Contents/id Panduan Pengguna] untuk cara penggunaan perangkat lunak wiki ini.
+
+== Memulai penggunaan ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings/id Daftar pengaturan konfigurasi]
+* [//www.mediawiki.org/wiki/Manual:FAQ/id Daftar pertanyaan yang sering diajukan mengenai MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Milis rilis MediaWiki]',
+);
+
+/** Interlingue (Interlingue) */
+$messages['ie'] = array(
+ 'mainpagetext' => "'''Software del wiki installat con successe.'''",
);
/** Igbo (Igbo)
@@ -6496,35 +8373,179 @@ Setelah melakukannya, Anda dapat '''[$2 memasuki wiki Anda]'''.",
$messages['ig'] = array(
'config-admin-password' => 'Okwúngáfè:',
'config-admin-password-confirm' => 'Okwúngáfè mgbe ozor:',
+ 'mainpagetext' => "'''MediaWiki a banyélé nke oma.'''",
+ 'mainpagedocfooter' => "Gbàkpó [//meta.wikimedia.org/wiki/Help:Contents Ǹdù Ọ'bànifé] màkà ụmá màkà à jí ngwa nsónùsòrò bu wiki.
+
+== I bídó ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Ndétu ndósé ihe]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce wéfù ndétu nke ozi MediaWiki]",
+);
+
+/** Iloko (Ilokano) */
+$messages['ilo'] = array(
+ 'mainpagetext' => "'''Sibaballigi a nainstolar ti MediaWiki.'''",
+);
+
+/** Ido (Ido)
+ * @author Wyvernoid
+ */
+$messages['io'] = array(
+ 'mainpagetext' => "'''MediaWiki instalesis sucese.'''",
+ 'mainpagedocfooter' => "Videz la [//meta.wikimedia.org/wiki/Help:Contents Guidilo por Uzanti] por informo pri uzar la wiki programo.
+
+== Komencar ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Listo di ''Configuration setting'']
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki OQQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki nova versioni posto-listo]",
+);
+
+/** Icelandic (Ãslenska) */
+$messages['is'] = array(
+ 'mainpagetext' => "'''Uppsetning á MediaWiki heppnaðist.'''",
+ 'mainpagedocfooter' => 'Ráðfærðu þig við [//meta.wikimedia.org/wiki/Help:Contents Notandahandbókina] fyrir frekari upplýsingar um notkun wiki-hugbúnaðarins.
+
+== Fyrir byrjendur ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Listi yfir uppsetningarstillingar]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki Algengar spurningar MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Póstlisti MediaWiki-útgáfa]',
);
/** Italian (Italiano)
* @author Beta16
+ * @author Karika
*/
$messages['it'] = array(
+ 'config-desc' => 'Il programma di installazione per MediaWiki',
+ 'config-title' => 'Installazione MediaWiki $1',
'config-information' => 'Informazioni',
+ 'config-localsettings-upgrade' => 'È stato rilevato un file <code>LocalSettings.php</code>.
+Per aggiornare questa installazione, si prega di inserire il valore di <code>$wgUpgradeKey</code> nella casella qui sotto.
+Lo potete trovare in LocalSettings.php.',
+ 'config-localsettings-cli-upgrade' => 'È stato rilevato un file LocalSettings.php.
+Per aggiornare questa installazione, eseguire update.php',
+ 'config-localsettings-key' => 'Chiave di aggiornamento:',
+ 'config-localsettings-badkey' => 'La chiave che hai fornito non è corretta.',
+ 'config-upgrade-key-missing' => "È stata rilevata un'installazione esistente di MediaWiki.
+Per aggiornare questa installazione, si prega di inserire la seguente riga nella parte inferiore del tuo LocalSettings.php:
+
+$1",
+ 'config-localsettings-incomplete' => 'Il file LocalSettings.php esistente sembra essere incompleto.
+La variabile $1 non è impostata.
+Cambia LocalSettings.php in modo che questa variabile sia impostata e fai clic su "Continua".',
+ 'config-localsettings-connection-error' => 'Si è verificato un errore durante la connessione al database utilizzando le impostazioni specificate in LocalSettings.php o AdminSettings.php. Si prega di correggere queste impostazioni e riprovare.
+
+$1',
+ 'config-session-error' => "Errore nell'avvio della sessione: $1",
+ 'config-session-expired' => 'I dati della sessione sembrano essere scaduti.
+Le sessioni sono configurate per una durata di $1.
+Puoi aumentarla impostando <code>session.gc_maxlifetime</code> nel file php.ini.
+Riavvia il processo di installazione.',
+ 'config-no-session' => 'I dati della sessione sono andati persi!
+Controlla il tuo file php.ini ed assicurati che <code>session.save_path</code> è impostato su una directory appropriata.',
+ 'config-your-language' => 'La tua lingua:',
+ 'config-your-language-help' => 'Seleziona una lingua da utilizzare durante il processo di installazione.',
+ 'config-wiki-language' => 'La lingua del wiki:',
+ 'config-wiki-language-help' => 'Seleziona la lingua che verrà prevalentemente usata nel wiki.',
'config-back' => '↠Indietro',
'config-continue' => 'Continua →',
'config-page-language' => 'Lingua',
+ 'config-page-welcome' => 'Benvenuti in MediaWiki!',
+ 'config-page-dbconnect' => 'Connessione al database',
+ 'config-page-upgrade' => "Aggiornamento dell'installazione esistente",
+ 'config-page-dbsettings' => 'Impostazioni del database',
'config-page-name' => 'Nome',
'config-page-options' => 'Opzioni',
'config-page-install' => 'Installa',
'config-page-complete' => 'Completa!',
+ 'config-page-restart' => 'Riavvio installazione',
'config-page-readme' => 'Leggimi',
'config-page-releasenotes' => 'Note di versione',
+ 'config-page-upgradedoc' => 'Aggiornamento',
+ 'config-page-existingwiki' => 'Wiki esistenti',
+ 'config-help-restart' => 'Vuoi cancellare tutti i dati salvati che hai inserito e riavviare il processo di installazione?',
+ 'config-restart' => 'Sì, riavvia',
+ 'config-welcome' => "=== Controllo dell'ambiente ===
+Vengono eseguiti controlli di base per vedere se questo ambiente è adatto per l'installazione di MediaWiki.
+Se hai bisogno di aiuto durante l'installazione, è necessario fornire i risultati di questi controlli.",
+ 'config-env-good' => "L'ambiente è stato controllato.
+È possibile installare MediaWiki.",
+ 'config-env-bad' => "L'ambiente è stato controllato.
+Non è possibile installare MediaWiki.",
+ 'config-env-php' => 'PHP $1 è installato.',
+ 'config-env-php-toolow' => 'PHP $1 è installato.
+Tuttavia, MediaWiki richiede PHP $2 o superiore.',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] è installato',
+ 'config-apc' => '[http://www.php.net/apc APC] è installato',
+ 'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] è installato',
+ 'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] è installato',
+ 'config-diff3-bad' => 'GNU diff3 non trovato.',
+ 'config-db-type' => 'Tipo di database:',
+ 'config-pg-test-error' => "Impossibile connettersi al database '''$1''': $2",
+ 'config-type-ibm_db2' => 'IBM DB2',
+ 'config-header-mysql' => 'Impostazioni MySQL',
+ 'config-header-postgres' => 'Impostazioni PostgreSQL',
+ 'config-header-sqlite' => 'Impostazioni SQLite',
+ 'config-header-oracle' => 'Impostazioni Oracle',
+ 'config-header-ibm_db2' => 'Impostazioni IBM DB2',
+ 'config-invalid-db-type' => 'Tipo di database non valido',
+ 'config-mysql-innodb' => 'InnoDB',
+ 'config-mysql-utf8' => 'UTF-8',
+ 'config-ns-generic' => 'Progetto',
+ 'config-ns-site-name' => 'Stesso nome wiki: $1',
+ 'config-admin-box' => 'Account amministratore',
+ 'config-admin-name' => 'Tuo nome:',
+ 'config-admin-password' => 'Password:',
+ 'config-admin-password-confirm' => 'Ripeti la password:',
+ 'config-admin-help' => 'Inserisci il tuo nome utente scelto qui, ad esempio "Mario Rossi".
+Questo è il nome che userai per accedere al wiki.',
+ 'config-admin-name-blank' => "Inserisci un nome utente per l'amministratore.",
+ 'config-admin-name-invalid' => 'Il nome utente specificato "<nowiki>$1</nowiki>" non è valido.
+Specificare un nome utente diverso.',
+ 'config-admin-password-blank' => "Inserisci una password per l'account di amministratore.",
+ 'config-admin-password-same' => 'La password non deve essere uguale al nome utente.',
+ 'config-admin-password-mismatch' => 'Le password inserite non coincidono tra loro.',
+ 'config-admin-email' => 'Indirizzo e-mail:',
+ 'config-license-cc-by-sa' => 'Creative Commons Attribuzione-Condividi allo stesso modo',
+ 'config-license-cc-by' => 'Creative Commons Attribuzione',
+ 'config-license-cc-by-nc-sa' => 'Creative Commons Attribuzione-Non commerciale-Condividi allo stesso modo',
+ 'config-license-cc-0' => 'Creative Commons Zero (pubblico dominio)',
+ 'config-license-gfdl' => 'GNU Free Documentation License 1.3 o versioni successive',
+ 'config-license-pd' => 'Pubblico dominio',
+ 'config-email-settings' => 'Impostazioni e-mail',
+ 'config-install-interwiki-list' => 'Impossibile leggere il file <code>interwiki.list</code>.',
+ 'config-install-stats' => 'Inizializzazione delle statistiche',
+ 'config-install-keys' => 'Generazione delle chiavi segrete',
+ 'config-install-sysop' => "Creazione dell'account utente per l'amministratore",
+ 'config-install-subscribe-fail' => 'Impossibile sottoscrivere mediawiki-announce: $1',
+ 'config-install-subscribe-notpossible' => 'cURL non è installato e allow_url_fopen non è disponibile.',
+ 'config-install-mainpage' => 'Creazione della pagina principale con contenuto predefinito',
+ 'config-install-mainpage-failed' => 'Impossibile inserire la pagina principale: $1',
+ 'config-download-localsettings' => 'Scarica LocalSettings.php',
+ 'mainpagetext' => "'''Installazione di MediaWiki completata correttamente.'''",
+ 'mainpagedocfooter' => "Consultare la [//meta.wikimedia.org/wiki/Aiuto:Sommario Guida utente] per maggiori informazioni sull'uso di questo software wiki.
+
+== Per iniziare ==
+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]",
);
/** Japanese (日本語)
* @author Aphaia
* @author Iwai.masaharu
* @author Mizusumashi
+ * @author Ninomy
* @author Ohgi
* @author Whym
* @author Yanajin66
* @author é’å­å®ˆæ­Œ
*/
$messages['ja'] = array(
- 'config-desc' => 'MediaWikiã®ãŸã‚ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ©ãƒ¼',
+ 'config-desc' => 'MediaWikiã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ©ãƒ¼',
'config-title' => 'MediaWiki $1ã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«',
'config-information' => '情報',
'config-localsettings-upgrade' => '<code>LocalSettings.php</code>ファイルãŒæ¤œå‡ºã•ã‚Œã¾ã—ãŸã€‚
@@ -6532,6 +8553,10 @@ $messages['ja'] = array(
LocalSettings.phpã®ä¸­ã«ãã‚Œã¯ã‚ã‚‹ã§ã—ょã†ã€‚',
'config-localsettings-key' => 'アップグレードキー:',
'config-localsettings-badkey' => '与ãˆã‚‰ã‚ŒãŸã‚­ãƒ¼ãŒé–“é•ã£ã¦ã„ã¾ã™',
+ 'config-upgrade-key-missing' => 'MediaWikiã®æ—¢å­˜ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã‚’検出ã—ã¾ã—ãŸã€‚
+インストールをアップグレードã™ã‚‹ãŸã‚ã«ã€æ¬¡ã®è¡Œã‚’LocalSettings.phpã®æœ«å°¾ã«æŒ¿å…¥ã—ã¦ãã ã•ã„:
+
+$1',
'config-localsettings-incomplete' => 'ç¾åœ¨ã®LocalSettings.phpã¯ä¸å®Œå…¨ã§ã‚るよã†ã§ã™ã€‚
変数$1ãŒè¨­å®šã•ã‚Œã¦ã„ã¾ã›ã‚“。
LocalSettings.phpを変更ã—ã¦ã“ã®å¤‰æ•°ã‚’設定ã—ã¦ã€ã€Ž{{int:Config-continue}}ã€ã‚’押ã—ã¦ãã ã•ã„。',
@@ -6558,16 +8583,16 @@ php.iniを確èªã—ã€<code>session.save_path</code>ãŒé©åˆ‡ãªãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆã
'config-page-install' => 'インストール',
'config-page-complete' => '完了ï¼',
'config-page-restart' => 'インストールをå†èµ·å‹•',
- 'config-page-readme' => 'リードミー',
+ 'config-page-readme' => 'ãŠèª­ã¿ãã ã•ã„',
'config-page-releasenotes' => 'リリースノート',
'config-page-copying' => 'コピー',
- 'config-page-upgradedoc' => 'æ›´æ–°',
+ 'config-page-upgradedoc' => 'アップグレード',
'config-page-existingwiki' => '既存ã®ã‚¦ã‚£ã‚­',
- 'config-help-restart' => '入力ã•ã‚ŒãŸå…¨ã¦ä¿å­˜ãƒ‡ãƒ¼ã‚¿ã‚’消去ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ä½œæ¥­ã‚’å†èµ·å‹•ã—ã¾ã™ã‹ï¼Ÿ',
+ 'config-help-restart' => '入力ã•ã‚ŒãŸå…¨ã¦ã®ä¿å­˜ãƒ‡ãƒ¼ã‚¿ã‚’消去ã—ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ä½œæ¥­ã‚’å†èµ·å‹•ã—ã¾ã™ã‹ï¼Ÿ',
'config-restart' => 'ã¯ã„ã€å†èµ·å‹•ã—ã¾ã™',
'config-welcome' => '=== 環境ã®ç¢ºèª ===
-基本的ãªç¢ºèªã§ã¯ã€ã“ã®ç’°å¢ƒãŒMediaWikiã®å°Žå…¥ã«é©ã—ã¦ã„ã‚‹ã‹ã‚’確èªã—ã¾ã™ã€‚
-インストール中ã«å¿…è¦ã«ãªã£ãŸã¨ãã€ã“ã®ç¢ºèªçµæžœã‚’利用ã—ã¦ä¸‹ã•ã„。',
+基本的ãªç¢ºèªã§ã¯ã€ç¾åœ¨ã®ç’°å¢ƒãŒMediaWikiã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«é©ã—ã¦ã„ã‚‹ã‹ã‚’確èªã—ã¾ã™ã€‚
+インストール中ã«åŠ©ã‘ãŒå¿…è¦ã«ãªã£ãŸå ´åˆã¯ã€ã“ã®ç¢ºèªçµæžœã‚’æä¾›ã—ã¦ä¸‹ã•ã„。',
'config-copyright' => '=== 著作権ãŠã‚ˆã³è¦ç´„ ===
$1
@@ -6577,34 +8602,35 @@ $1
詳ã—ãã¯ã€GNU一般公衆利用許諾書をã”覧下ã•ã„。
ã‚ãªãŸã¯ã“ã®ãƒ—ログラムã¨å…±ã«ã€<doclink href=Copying>GNU一般公衆利用許諾契約書ã®è¤‡è£½</doclink>を一部å—ã‘å–ã£ãŸã¯ãšã§ã™ã€‚ã‚‚ã—å—ã‘å–ã£ã¦ã„ãªã‘ã‚Œã°ã€ãƒ•ãƒªãƒ¼ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢è²¡å›£(宛先㯠the Free Software Foundation, Inc., 59Temple Place, Suite 330, Boston, MA 02111-1307 USA)ã¾ã§è«‹æ±‚ã—ã¦ãã ã•ã„。',
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWikiã®ãƒ›ãƒ¼ãƒ ]
-* [http://www.mediawiki.org/wiki/Help:Contents 利用者å‘ã‘案内]
-* [http://www.mediawiki.org/wiki/Manual:Contents 管ç†è€…å‘ã‘案内]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]
+ 'config-sidebar' => '* [//www.mediawiki.org MediaWikiã®ãƒ›ãƒ¼ãƒ ]
+* [//www.mediawiki.org/wiki/Help:Contents 利用者å‘ã‘案内]
+* [//www.mediawiki.org/wiki/Manual:Contents 管ç†è€…å‘ã‘案内]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ]
----
* <doclink href=Readme>ãŠèª­ã¿ãã ã•ã„</doclink>
* <doclink href=ReleaseNotes>リリースノート</doclink>
* <doclink href=Copying>コピー</doclink>
* <doclink href=UpgradeDoc>アップグレード</doclink>',
- 'config-env-good' => '環境ã¯ç¢ºèªã•ã‚Œã¾ã—ãŸã€‚
-MediaWikiをインストール出æ¥ã¾ã™ã€‚',
- 'config-env-bad' => '環境ãŒç¢ºèªã•ã‚Œã¾ã—ãŸã€‚
-MediaWikiをインストール出æ¥ã¾ã›ã‚“。',
+ 'config-env-good' => '環境ã®ç¢ºèªãŒçµ‚ã‚ã‚Šã¾ã—ãŸã€‚
+MediaWikiをインストールã§ãã¾ã™ã€‚',
+ 'config-env-bad' => '環境ã®ç¢ºèªãŒçµ‚ã‚ã‚Šã¾ã—ãŸã€‚
+MediaWikiã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã¯ã§ãã¾ã›ã‚“。',
'config-env-php' => 'PHP $1ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã™ã€‚',
- 'config-unicode-using-utf8' => 'Unicodeæ­£è¦åŒ–ã«ã€Brion Vibberã®utf8_normalize.soを利用。',
- 'config-unicode-using-intl' => 'Unicodeæ­£è¦åŒ–ã«[http://pecl.php.net/intl intl PECL 拡張機能]を利用。',
- 'config-unicode-pure-php-warning' => "'''警告''':Unicodeæ­£è¦åŒ–ã®å‡¦ç†ã« [http://pecl.php.net/intl intl PECL 拡張機能]ã§ã¯ãªãã€ãƒ”ュア PHP ãªå®Ÿè£…を用ã„ã¦ã„ã¾ã™ã€‚ã“ã®å‡¦ç†ã¯é…ã„ã§ã™ã€‚
-高トラフィックã®ã‚µã‚¤ãƒˆã‚’é‹å–¶ã™ã‚‹å ´åˆã¯ã€[http://www.mediawiki.org/wiki/Unicode_normalization_considerations Unicodeæ­£è¦åŒ–ã«é–¢ã™ã‚‹ãƒšãƒ¼ã‚¸]ã‚’ãŠèª­ã¿ä¸‹ã•ã„。",
- 'config-unicode-update-warning' => "'''警告''':Unicodeæ­£è¦åŒ–ラッパーã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã‚‹ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã¯ã€[http://site.icu-project.org/ ICUプロジェクト]ã®ãƒ©ã‚¤ãƒ–ラリã®å¤ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã‚’使用ã—ã¦ã„ã¾ã™ã€‚
-Unicodeã‚’å°‘ã—ã§ã‚‚利用ã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚‹ãªã‚‰ã€[http://www.mediawiki.org/wiki/Unicode_normalization_considerations æ›´æ–°]ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚",
- 'config-no-db' => 'é©åˆ‡ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ‰ãƒ©ã‚¤ãƒã‚’見ã¤ã‘られã¾ã›ã‚“ã§ã—ãŸï¼',
- 'config-no-db-help' => 'PHPã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ‰ãƒ©ã‚¤ãƒãƒ¼ã‚’インストールã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
-以下ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ç¨®é¡žãŒã‚µãƒãƒ¼ãƒˆã•ã‚Œã¾ã™ï¼š$1。
-
-共有ホスト上ã®å ´åˆã€ãƒ›ã‚¹ãƒˆå…ƒã«é©åˆ‡ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãƒ‰ãƒ©ã‚¤ãƒã‚’インストールã™ã‚‹ã‚ˆã†ã«ä¾é ¼ã—ã¦ãã ã•ã„。
-PHPを自分自身ã§ã‚³ãƒ³ãƒ‘イルã—ãŸå ´åˆã€<code>./configure --with-mysql</code>ãªã©ã‚’利用ã—ã¦ã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆã‚’有効化ã™ã‚‹è¨­å®šã‚’ã—ã¦ãã ã•ã„。
-Debianã‚‚ã—ãã¯Ubuntuパッケージã‹ã‚‰PHPをインストールã—ãŸå ´åˆã€php5-mysqlモジュールもインストールã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚',
- 'config-no-fts3' => "'''警告''':SQLiteã¯[http://sqlite.org/fts3.html FTS3]モジュール以外ã§ã‚³ãƒ³ãƒ‘イルã•ã‚Œã¦ãŠã‚Šã€æ¤œç´¢æ©Ÿèƒ½ã¯ã“ã®ãƒãƒƒã‚¯ã‚¨ãƒ³ãƒ‰ã§åˆ©ç”¨ä¸å¯èƒ½ã«ãªã‚Šã¾ã™ã€‚",
+ 'config-env-php-toolow' => 'PHP $1 ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ã„ã¾ã™ã€‚
+ã—ã‹ã—ã€MediaWikiã«ã¯ PHP $2 以上ãŒå¿…è¦ã§ã™ã€‚',
+ 'config-unicode-using-utf8' => 'Unicodeæ­£è¦åŒ–ã«ã€Brion Vibberã®utf8_normalize.soを使用。',
+ 'config-unicode-using-intl' => 'Unicodeæ­£è¦åŒ–ã«[http://pecl.php.net/intl intl PECL 拡張機能]を使用。',
+ 'config-unicode-pure-php-warning' => "'''警告''':Unicodeæ­£è¦åŒ–ã®å‡¦ç†ã« [http://pecl.php.net/intl intl PECL 拡張機能]ãŒä½¿ç”¨å¯èƒ½ã§ã¯ãªãã€å‡¦ç†ã®é…ã„ピュア PHP ã®å®Ÿè£…を代ã‚ã‚Šã«ç”¨ã„ã¦ã„ã¾ã™ã€‚
+高トラフィックã®ã‚µã‚¤ãƒˆã‚’é‹å–¶ã™ã‚‹å ´åˆã¯ã€[//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicodeæ­£è¦åŒ–ã«é–¢ã™ã‚‹ãƒšãƒ¼ã‚¸]ã‚’ãŠèª­ã¿ä¸‹ã•ã„。",
+ '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-register-globals' => "'''警告:PHPã®<code>[http://php.net/register_globals register_globals]</code>オプションãŒæœ‰åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚'''
'''å¯èƒ½ãªã‚‰ç„¡åŠ¹åŒ–ã—ã¦ãã ã•ã„。'''
MediaWikiã¯å‹•ä½œã—ã¾ã™ãŒã€ã‚µãƒ¼ãƒãƒ¼ã¯ã€æ½œåœ¨çš„ãªã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£è„†å¼±æ€§ã‚’露呈ã—ã¾ã™ã€‚",
@@ -6633,11 +8659,11 @@ MediaWikiã«ã¯UTF-8サãƒãƒ¼ãƒˆã®é–¢æ•°ãŒå¿…è¦ã§ã™ã€‚",
'config-memory-bad' => "'''警告:'''PHPã®<code>memory_limit</code>ã¯$1ã§ã™ã€‚
ã“ã‚Œã¯ã€éžå¸¸ã«é…ã„å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚
インストールãŒå¤±æ•—ã™ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ï¼",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache]ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache]ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿',
'config-apc' => '[http://www.php.net/apc APC]ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator]ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache]ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«æ¸ˆã¿',
- 'config-no-cache' => "'''警告:'''[http://eaccelerator.sourceforge.net eAccelerator]ã€[http://www.php.net/apc APC]ã€[http://trac.lighttpd.net/xcache/ XCache]ã‚ã‚‹ã„ã¯[http://www.iis.net/download/WinCacheForPhp WinCache]ã®ã„ãšã‚Œã‚‚見ã¤ã‹ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚
+ 'config-no-cache' => "'''警告:'''[http://eaccelerator.sourceforge.net eAccelerator]ã€[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>。
@@ -6649,13 +8675,14 @@ MediaWikiã«ã¯UTF-8サãƒãƒ¼ãƒˆã®é–¢æ•°ãŒå¿…è¦ã§ã™ã€‚",
'config-no-uri' => "'''エラー:'''ç¾åœ¨ã®URIを決定ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
インストールã¯ä¸­æ­¢ã•ã‚Œã¾ã—ãŸã€‚",
'config-uploads-not-safe' => "'''警告:'''アップロードã®æ—¢å®šãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒª<code>$1</code>ãŒã€ä»»æ„ã®ã‚¹ã‚¯ãƒªãƒ—ト実行ã«é–¢ã—ã¦è„†å¼±æ€§ãŒã‚ã‚Šã¾ã™ã€‚
-MediaWikiã¯ã‚¢ãƒƒãƒ—ロードã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¸Šã®è„…å¨ã‚’確èªã—ã¾ã™ãŒã€ã‚¢ãƒƒãƒ—ロードを有効化ã™ã‚‹ã¾ãˆã«ã€[http://www.mediawiki.org/wiki/Manual:Security#Upload_security ã“ã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¸Šã®è„†å¼±æ€§ã‚’é–‰ã˜ã‚‹]ã“ã¨ãŒå¼·ã推奨ã•ã‚Œã¾ã™ã€‚",
+MediaWikiã¯ã‚¢ãƒƒãƒ—ロードã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¸Šã®è„…å¨ã‚’確èªã—ã¾ã™ãŒã€ã‚¢ãƒƒãƒ—ロードを有効化ã™ã‚‹ã¾ãˆã«ã€[//www.mediawiki.org/wiki/Manual:Security#Upload_security ã“ã®ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ä¸Šã®è„†å¼±æ€§ã‚’é–‰ã˜ã‚‹]ã“ã¨ãŒå¼·ã推奨ã•ã‚Œã¾ã™ã€‚",
'config-brokenlibxml' => 'ã“ã®ã‚·ã‚¹ãƒ†ãƒ ã§ä½¿ã‚ã‚Œã¦ã„ã‚‹PHPã¨libxml2ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã®ã“ã®çµ„ã¿åˆã‚ã›ã«ã¯ãƒã‚°ãŒã‚ã‚Šã¾ã™ã€‚具体的ã«ã¯ã€MediaWikiã‚„ãã®ä»–ã®ã‚¦ã‚§ãƒ–アプリケーションã§hiddenデータãŒç ´æã™ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚
-PHPã‚’5.2.9ã‹ãれ以é™ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã€libxml2ã‚’2.7.3ã‹ãれ以é™ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚¢ãƒƒãƒ—グレードã—ã¦ãã ã•ã„([http://bugs.php.net/bug.php?id=45996 PHPã§ã®ãƒã‚°æƒ…å ±])。
+PHPã‚’5.2.9ã‹ãれ以é™ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã€libxml2ã‚’2.7.3ã‹ãれ以é™ã®ãƒãƒ¼ã‚¸ãƒ§ãƒ³ã«ã‚¢ãƒƒãƒ—グレードã—ã¦ãã ã•ã„([//bugs.php.net/bug.php?id=45996 PHPã§ã®ãƒã‚°æƒ…å ±])。
インストールを終了ã—ã¾ã™ã€‚',
'config-using531' => 'PHP$1ã¯<code>__call()</code>ã®å¼•æ•°å‚ç…§ã«é–¢ã™ã‚‹ãƒã‚°ã®ãŸã‚ã€MediaWikiã¨äº’æ›æ€§ãŒã‚ã‚Šã¾ã›ã‚“。
-PHP5.3.2以é™ã«æ›´æ–°ã™ã‚‹ã‹ã€ã“ã®([http://bugs.php.net/bug.php?id=50394 PHPã«æ出ã•ã‚ŒãŸãƒã‚°])を修正ã™ã‚‹ãŸã‚ã«PHP5.3.0ã¸æˆ»ã—ã¦ãã ã•ã„。
+PHP5.3.2以é™ã«æ›´æ–°ã™ã‚‹ã‹ã€ã“ã®([//bugs.php.net/bug.php?id=50394 PHPã«æ出ã•ã‚ŒãŸãƒã‚°])を修正ã™ã‚‹ãŸã‚ã«PHP5.3.0ã¸æˆ»ã—ã¦ãã ã•ã„。
インストールã¯ä¸­æ­¢ã•ã‚Œã¾ã—ãŸã€‚',
+ 'config-suhosin-max-value-length' => 'Suhosin ãŒã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¦ãŠã‚Šã€GETパラメータã®é•·ã•ã‚’ $1 ãƒã‚¤ãƒˆã«åˆ¶é™ã—ã¦ã„ã¾ã™ã€‚MediaWiki ã® ResourceLoader コンãƒãƒ¼ãƒãƒ³ãƒˆã¯ã“ã®åˆ¶é™ã‚’回é¿ã—ã¾ã™ãŒã€ãƒ‘フォーマンスã¯ä½Žä¸‹ã—ã¾ã™ã€‚å¯èƒ½ãªé™ã‚Šã€php.ini 㧠suhosin.get.max_value_length ã‚’ 1024 以上ã«è¨­å®šã—ã€åŒã˜å€¤ã‚’ LocalSettings.php 中㧠$wgResourceLoaderMaxQueryLength ã«è¨­å®šã—ã¦ãã ã•ã„。',
'config-db-type' => 'データベースã®ç¨®é¡žï¼š',
'config-db-host' => 'データベースã®ãƒ›ã‚¹ãƒˆï¼š',
'config-db-host-help' => 'データベースサーãƒãƒ¼ãŒç•°ãªã£ãŸã‚µãƒ¼ãƒãƒ¼ä¸Šã«ã‚ã‚‹å ´åˆã€ãƒ›ã‚¹ãƒˆåã¾ãŸã¯IPアドレスをã“ã“ã«å…¥åŠ›ã—ã¦ãã ã•ã„。
@@ -6675,6 +8702,8 @@ Windowsã§MySQLを使用ã—ã¦ã„ã‚‹å ´åˆã«ã€ã€Œlocalhostã€ã¯ã€ã‚µãƒ¼ãƒãƒ
'config-db-install-account' => 'インストールã®ãŸã‚ã®åˆ©ç”¨è€…アカウント',
'config-db-username' => 'データベースã®åˆ©ç”¨è€…å:',
'config-db-password' => 'データベースã®ãƒ‘スワード:',
+ 'config-db-password-empty' => 'æ–°ã—ã„データベースã®åˆ©ç”¨è€…å $1 ã®ãƒ‘スワードを入力ã—ã¦ãã ã•ã„。
+パスワードを設定ã—ãªã„ã§ãƒ¦ãƒ¼ã‚¶ã‚’作るã“ã¨ã‚‚ã§ãã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“ãŒã€å®‰å…¨ã§ã¯ã‚ã‚Šã¾ã›ã‚“。',
'config-db-install-username' => 'インストール中ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šã™ã‚‹ãŸã‚ã«ä½¿ã†ãƒ¦ãƒ¼ã‚¶åを入力ã—ã¦ãã ã•ã„。ã“れ㯠MediaWiki アカウントã®ãƒ¦ãƒ¼ã‚¶å (利用者å) ã®ã“ã¨ã§ã¯ã‚ã‚Šã¾ã›ã‚“。ã‚ãªãŸã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã§ã®ãƒ¦ãƒ¼ã‚¶åã§ã™ã€‚',
'config-db-install-password' => 'インストール中ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šã™ã‚‹ãŸã‚ã«ä½¿ã†ãƒ‘スワードを入力ã—ã¦ãã ã•ã„。ã“れ㯠MediaWiki アカウントパスワードã®ã“ã¨ã§ã¯ã‚ã‚Šã¾ã›ã‚“。ã‚ãªãŸã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã§ã®ãƒ‘スワードã§ã™ã€‚',
'config-db-install-help' => 'インストール作業中ã«ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã«æŽ¥ç¶šã™ã‚‹ãŸã‚ã®åˆ©ç”¨è€…åã¨ãƒ‘スワードを入力ã—ã¦ãã ã•ã„。',
@@ -6696,7 +8725,7 @@ Windowsã§MySQLを使用ã—ã¦ã„ã‚‹å ´åˆã«ã€ã€Œlocalhostã€ã¯ã€ã‚µãƒ¼ãƒãƒ
'''ãƒã‚¤ãƒŠãƒªãƒ¼ç³»å¼'''ã§ã¯ã€MediaWikiã¯ã€UTF-8テキストをã€ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ãƒã‚¤ãƒŠãƒªãƒ¼ãƒ•ã‚£ãƒ¼ãƒ«ãƒ‰ã«æ ¼ç´ã—ã¾ã™ã€‚
ã“ã‚Œã¯ã€MySQLã®UTF-8å½¢å¼ã‚ˆã‚ŠåŠ¹çŽ‡çš„ã§ã€ãƒ¦ãƒ‹ã‚³ãƒ¼ãƒ‰æ–‡å­—ã®å…¨ç¯„囲を利用ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚
'''UTF-8å½¢å¼'''ã§ã¯ã€MySQLã¯ã€ãªã‚“ã®æ–‡å­—集åˆãŒãƒ‡ãƒ¼ã‚¿ã®ãªã‹ã«å«ã¾ã‚Œã¦ã„ã‚‹ã‹ã‚’知りã€ãã‚Œã«å¯¾ã—ã¦é©åˆ‡ãªæ示ã¨å¤‰æ›ã‚’ã™ã‚‹ã§ã—ょã†ãŒã€
-[http://ja.wikipedia.org/wiki/%E5%9F%BA%E6%9C%AC%E5%A4%9A%E8%A8%80%E8%AA%9E%E9%9D%A2 基本多言語é¢]ã®å¤–ã«ã‚る文字を格ç´ã§ãるよã†ã«ã¯ãªã‚Šã¾ã›ã‚“。",
+[//ja.wikipedia.org/wiki/%E5%9F%BA%E6%9C%AC%E5%A4%9A%E8%A8%80%E8%AA%9E%E9%9D%A2 基本多言語é¢]ã®å¤–ã«ã‚る文字を格ç´ã§ãるよã†ã«ã¯ãªã‚Šã¾ã›ã‚“。",
'config-mysql-old' => 'MySQLã®$1以é™ãŒè¦æ±‚ã•ã‚Œã¦ã„ã¾ã™ã€‚ã‚ãªãŸã®æ‰€æœ‰ã®ã‚‚ã®ã¯$2ã§ã™ã€‚',
'config-db-port' => 'データベースãƒãƒ¼ãƒˆ:',
'config-db-schema' => 'メディアウィキã®å›³å¼',
@@ -6718,6 +8747,7 @@ Windowsã§MySQLを使用ã—ã¦ã„ã‚‹å ´åˆã«ã€ã€Œlocalhostã€ã¯ã€ã‚µãƒ¼ãƒãƒ
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'メディアウィキã¯æ¬¡ã®ã‚ˆã†ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚·ã‚¹ãƒ†ãƒ ã‚’サãƒãƒ¼ãƒˆã™ã‚‹:
$1
@@ -6727,12 +8757,15 @@ $1
'config-support-postgres' => '* $1ã¯ã€MySQLã®ä»£æ›¿ã¨ã—ã¦ã€äººæ°—ã®ã‚るオープンソースデータベースシステムã§ã™ï¼ˆ[http://www.php.net/manual/en/pgsql.installation.php PostgreSQLã®ã‚µãƒãƒ¼ãƒˆä¸‹ã§PHPをコンパイルã™ã‚‹æ–¹æ³•])',
'config-support-sqlite' => '* $1ã¯ã€è‰¯ãサãƒãƒ¼ãƒˆã•ã‚Œã¦ã„ã‚‹ã€è»½é‡ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã‚·ã‚¹ãƒ†ãƒ ã§ã™ã€‚([http://www.php.net/manual/en/pdo.installation.php SQLiteã®ã‚µãƒãƒ¼ãƒˆä¸‹ã§PHPをコンパイルã™ã‚‹æ–¹æ³•]ã€PDOを使用)',
'config-support-oracle' => '* $1ã¯å•†æ¥­ä¼æ¥­ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã§ã™ã€‚([http://www.php.net/manual/en/oci8.installation.php OCI8サãƒãƒ¼ãƒˆãªPHPをコンパイルã™ã‚‹æ–¹æ³•])',
+ 'config-support-ibm_db2' => '* $1 ã¯å•†æ¥­ä¼æ¥­ã®ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã§ã™ã€‚',
'config-header-mysql' => 'MySQLã®è¨­å®š',
'config-header-postgres' => 'PostgreSQLã®è¨­å®š',
'config-header-sqlite' => 'SQLiteã®è¨­å®š',
'config-header-oracle' => 'Oracleã®è¨­å®š',
+ 'config-header-ibm_db2' => 'IBM DB2ã®è¨­å®š',
'config-invalid-db-type' => 'ä¸æ­£ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ã®ç¨®é¡ž',
'config-missing-db-name' => '「データベースåã€ã‚’入力ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™',
+ 'config-missing-db-host' => '「データベースã®ãƒ›ã‚¹ãƒˆã€ã‚’入力ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™',
'config-missing-db-server-oracle' => '「データベースTNSã€ã«å€¤ã‚’入力ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™',
'config-invalid-db-server-oracle' => 'ä¸æ­£ãªãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹TNS「$1ã€ã§ã™ã€‚
アスキー文字(a-z, A-Z)ã€æ•°å­—(0-9)ãŠã‚ˆã³ã‚¢ãƒ³ãƒ€ãƒ¼ãƒãƒ¼(_)ã¨ãƒ‰ãƒƒãƒˆ(.)ã®ã¿ã‚’使用ã—ã¦ãã ã•ã„。',
@@ -6812,14 +8845,14 @@ chmod a+w $3</pre>',
ã“ã‚Œã¯ã€MySQLã®UTF-8å½¢å¼ã‚ˆã‚ŠåŠ¹çŽ‡çš„ã§ã€ãƒ¦ãƒ‹ã‚³ãƒ¼ãƒ‰æ–‡å­—ã®å…¨ç¯„囲を利用ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã‚‹ã‚ˆã†ã«ãªã‚Šã¾ã™ã€‚
'''UTF-8å½¢å¼'''ã§ã¯ã€MySQLã¯ã€ãªã‚“ã®æ–‡å­—集åˆãŒãƒ‡ãƒ¼ã‚¿ã®ãªã‹ã«å«ã¾ã‚Œã¦ã„ã‚‹ã‹ã‚’知りã€ãã‚Œã«å¯¾ã—ã¦é©åˆ‡ãªæ示ã¨å¤‰æ›ã‚’ã™ã‚‹ã§ã—ょã†ãŒã€
-[http://ja.wikipedia.org/wiki/%E5%9F%BA%E6%9C%AC%E5%A4%9A%E8%A8%80%E8%AA%9E%E9%9D%A2 基本多言語é¢]ã®å¤–ã«ã‚る文字を格ç´ã§ãるよã†ã«ã¯ãªã‚Šã¾ã›ã‚“。",
+[//ja.wikipedia.org/wiki/%E5%9F%BA%E6%9C%AC%E5%A4%9A%E8%A8%80%E8%AA%9E%E9%9D%A2 基本多言語é¢]ã®å¤–ã«ã‚る文字を格ç´ã§ãるよã†ã«ã¯ãªã‚Šã¾ã›ã‚“。",
'config-site-name' => 'ウィキã®åå‰ï¼š',
'config-site-name-help' => 'ã“ã®äº‹è±¡ã¯ãƒ–ラウザã®ã‚¿ã‚¤ãƒˆãƒ«ãƒãƒ¼ã¨ä»–ã®æ§˜ã€…ãªå ´æ‰€ã«ãŠã„ã¦å‡ºç¾ã™ã‚‹ã€‚',
'config-site-name-blank' => 'サイトåを入力ã—ã¦ãã ã•ã„。',
'config-project-namespace' => 'プロジェクトåå‰ç©ºé–“:',
'config-ns-generic' => 'プロジェクト',
'config-ns-site-name' => 'ウィキåã¨åŒã˜ï¼š$1',
- 'config-ns-other' => 'ãã®ä»–(特化ã•ã‚ŒãŸã‚‚ã®)',
+ 'config-ns-other' => 'ãã®ä»–(指定ã—ã¦ãã ã•ã„)',
'config-ns-other-default' => 'マイウィキ',
'config-project-namespace-help' => "ウィキペディアã®ä¾‹ã«å¾“ãˆã°ã€å¤šãã®ã‚¦ã‚£ã‚­ã¯ã€Œ'''プロジェクトã®åå‰ç©ºé–“'''ã€ã«ãŠã„ã¦ã€ã‚³ãƒ³ãƒ†ãƒ³ãƒ„ã®ãƒšãƒ¼ã‚¸ã¨ã¯åˆ†é›¢ã—ãŸç‹¬è‡ªã®ãƒãƒªã‚·ãƒ¼ãƒšãƒ¼ã‚¸ã‚’æŒã¤ã€‚
ä¼çµ±çš„ã«ã¯ã“ã®æŽ¥é ­è¾žã¯ã‚¦ã‚£ã‚­ã®ãƒšãƒ¼ã‚¸ã‹ã‚‰æ´¾ç”Ÿã•ã‚Œã‚‹ã€‚ã—ã‹ã—ã€\"#\" ã‚„ \":\"ã®ã‚ˆã†ãªå¥åˆ‡ã‚Šè¨˜å·ã¯å«ã‚“ã§ã„ãªã„。",
@@ -6844,10 +8877,10 @@ chmod a+w $3</pre>',
'config-subscribe' => '[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce リリース告知ã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆ]を購読ã™ã‚‹ã€‚',
'config-subscribe-help' => 'ã“ã‚Œã¯ã€ãƒªãƒªãƒ¼ã‚¹ã®å‘ŠçŸ¥ï¼ˆé‡è¦ãªã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ã«é–¢ã™ã‚‹æ¡ˆå†…ã‚’å«ã‚€ï¼‰ã«ä½¿ã‚れるã€ä½Žå®¹é‡ã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã§ã™ã€‚
ã“ã®ãƒ¡ãƒ¼ãƒªãƒ³ã‚°ãƒªã‚¹ãƒˆã‚’購読ã—ã¦ã€æ–°ã—ã„ãƒãƒ¼ã‚¸ãƒ§ãƒ³ãŒå‡ºãŸå ´åˆã«MediaWikiã‚’æ›´æ–°ã—ã¦ãã ã•ã„。',
- 'config-almost-done' => 'ã‚ãªãŸã¯ã»ã¨ã‚“ã©å®Œç’§ã§ã™ï¼
-設定を残ã™ã“ã¨ã‚’ã¯ã¶ã„ã¦ã€ä»Šã™ãã«ã‚¦ã‚£ã‚­ã‚’インストールã§ãã¾ã™ã€‚',
+ 'config-almost-done' => 'ã“ã‚Œã§ã»ã¨ã‚“ã©ãŠçµ‚ã„ã§ã™ï¼
+残りã®è¨­å®šã‚’飛ã°ã—ã¦ã€ä»Šã™ãã«ã‚¦ã‚£ã‚­ã‚’インストールã§ãã¾ã™ã€‚',
'config-optional-continue' => 'ç§ã«ã‚‚ã£ã¨è³ªå•ã—ã¦ãã ã•ã„。',
- 'config-optional-skip' => 'ã™ã§ã«é£½ãã¦ã—ã¾ã£ãŸã€ã‚¦ã‚£ã‚­ã‚’インストールã™ã‚‹ã ã‘ã§ã™ã€‚',
+ 'config-optional-skip' => 'ã‚‚ã†é£½ãã¦ã—ã¾ã£ãŸã®ã§ã€ã¨ã«ã‹ãウィキをインストールã—ã¦ãã ã•ã„。',
'config-profile' => 'æ­£ã—ã„プロフィールã®ãƒ¦ãƒ¼ã‚¶:',
'config-profile-wiki' => 'ä¼çµ±çš„ãªã‚¦ã‚£ã‚­',
'config-profile-no-anon' => 'アカウントã®ä½œæˆãŒå¿…è¦',
@@ -6865,13 +8898,11 @@ MediaWikiã§ã¯ã€æœ€è¿‘ã®æ›´æ–°ã‚’確èªã—ã€ç¥žçµŒè³ªãªã€ã‚‚ã—ãã¯æ‚ªæ„
'''{{int:config-profile-fishbowl}}'''ã®ã‚¦ã‚£ã‚­ã¯ã€æ‰¿èªã•ã‚ŒãŸåˆ©ç”¨è€…ã¯ç·¨é›†ã§ãã€ä¸€æ–¹ã€ä¸€èˆ¬ã®äººã¯ãƒšãƒ¼ã‚¸ï¼ˆã¨ãã®å±¥æ­´ï¼‰ã®é–²è¦§ãŒå¯èƒ½ã§ã™ã€‚
'''{{int:config-profile-private}}'''ã¯ã€æ‰¿èªã•ã‚ŒãŸåˆ©ç”¨è€…ãŒãƒšãƒ¼ã‚¸ã‚’閲覧å¯èƒ½ã§ã€ãã®ã‚°ãƒ«ãƒ¼ãƒ—ãŒç·¨é›†å¯èƒ½ã§ã™ã€‚
-より複雑ãªåˆ©ç”¨è€…権é™ã®è¨­å®šã¯ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å¾Œã«è¨­å®šå¯èƒ½ã§ã™ã€‚詳細ã¯[http://www.mediawiki.org/wiki/Manual:User_rights 関連ã™ã‚‹ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«]ã‚’ã”覧ãã ã•ã„。",
+より複雑ãªåˆ©ç”¨è€…権é™ã®è¨­å®šã¯ã€ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«å¾Œã«è¨­å®šå¯èƒ½ã§ã™ã€‚詳細ã¯[//www.mediawiki.org/wiki/Manual:User_rights 関連ã™ã‚‹ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«]ã‚’ã”覧ãã ã•ã„。",
'config-license' => '著作権ã¨ãƒ©ã‚¤ã‚»ãƒ³ã‚¹:',
'config-license-none' => 'ライセンスã®ãƒ•ãƒƒã‚¿ãƒ¼ã‚’付ã‘ãªã„',
'config-license-cc-by-sa' => 'クリエイティブ・コモンズ 表示-継承',
'config-license-cc-by-nc-sa' => 'クリエイティブ・コモンズ 表示-éžå–¶åˆ©-継承',
- 'config-license-gfdl-old' => 'GNUフリー文書利用許諾契約書 1.2',
- 'config-license-gfdl-current' => 'GNUフリー文書利用許諾契約書 1.3 ã¾ãŸã¯ãれ以é™',
'config-license-pd' => 'パブリック・ドメイン',
'config-license-cc-choose' => 'ãã®ä»–ã®ã‚¯ãƒªã‚¨ã‚¤ãƒ†ã‚£ãƒ–・コモンズ・ライセンスをé¸æŠžã™ã‚‹',
'config-license-help' => "多ãã®å…¬é–‹ã‚¦ã‚£ã‚­ã§ã¯ã€ã™ã¹ã¦ã®å¯„稿物ãŒ[http://freedomdefined.org/Definition フリーライセンス]ã®å…ƒã«ç½®ã‹ã‚Œã¦ã„ã¾ã™ã€‚
@@ -6903,7 +8934,7 @@ GNUフリー文書利用許諾契約書ã¯ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ãŒæŽ¡ç”¨ã—ã¦ã
'config-upload-settings' => 'ç”»åƒãŠã‚ˆã³ãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚¢ãƒƒãƒ—ロード',
'config-upload-enable' => 'ファイルã®ã‚¢ãƒƒãƒ—ロードを有効ã«ã™ã‚‹',
'config-upload-help' => 'ファイルã®ã‚¢ãƒƒãƒ—ロードã¯æ½œåœ¨çš„ã«ã‚ãªãŸã®ã‚µãƒ¼ãƒã«ã‚»ã‚­ãƒ¥ãƒªãƒ†ã‚£ãƒ¼ä¸Šã®å±é™ºã‚’ã•ã‚‰ã—ã¾ã™ã€‚
-æ›´ãªã‚‹æƒ…å ±ã®ãŸã‚ã«ã€ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã®[http://www.mediawiki.org/wiki/Manual:Security security section] を読むã“ã¨ã‚’ã™ã™ã‚ã¾ã™ã€‚
+æ›´ãªã‚‹æƒ…å ±ã®ãŸã‚ã«ã€ãƒžãƒ‹ãƒ¥ã‚¢ãƒ«ã®[//www.mediawiki.org/wiki/Manual:Security security section] を読むã“ã¨ã‚’ã™ã™ã‚ã¾ã™ã€‚
ファイルã®ã‚¢ãƒƒãƒ—ロードをå¯èƒ½ã«ã™ã‚‹ãŸã‚ã«ã€ãƒ¡ãƒ‡ã‚£ã‚¢ã‚¦ã‚£ã‚­ã®ãƒ«ãƒ¼ãƒˆãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªä¸‹ã®<code>images</code>サブディレクトリã®ãƒ¢ãƒ¼ãƒ‰ã‚’変更ã—ã¾ã™ã€‚ãã†ã™ã‚‹ã“ã¨ã«ã‚ˆã‚Šã€ã‚¦ã‚§ãƒ–サーãƒã¯ãã“ã«æ›¸ãè¾¼ã¿ãŒå¯èƒ½ã«ãªã‚Šã¾ã™ã€‚
ãã—ã¦ã€ã“ã®ã‚ªãƒ—ションを有効ã«ã—ã¦ãã ã•ã„。',
@@ -6916,7 +8947,7 @@ GNUフリー文書利用許諾契約書ã¯ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ãŒæŽ¡ç”¨ã—ã¦ã
ã‚‚ã—ã€ãƒ­ã‚´ã‚’望ã¾ãªã„ãªã‚‰ã°ã€ã“ã®ãƒœãƒƒã‚¯ã‚¹ã‚’空白状態ã®ã¾ã¾ã«ã—ã¦ãã ã•ã„。',
'config-instantcommons' => 'InstantCommons機能を有効ã«ã™ã‚‹',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons InstantCommons]ã¯ã€[http://commons.wikimedia.org/ ウィキメディア・コモンズ]ã®ã‚µã‚¤ãƒˆã§è¦‹ã¤ã‹ã£ãŸç”»åƒã‚„音声ã€ãã®ä»–ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’ウィキ上ã§åˆ©ç”¨ã™ã‚‹ã“ã¨ãŒã§ãるよã†ã«ãªã‚‹æ©Ÿèƒ½ã§ã™ã€‚
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons InstantCommons]ã¯ã€[//commons.wikimedia.org/ ウィキメディア・コモンズ]ã®ã‚µã‚¤ãƒˆã§è¦‹ã¤ã‹ã£ãŸç”»åƒã‚„音声ã€ãã®ä»–ã®ãƒ¡ãƒ‡ã‚£ã‚¢ã‚’ウィキ上ã§åˆ©ç”¨ã™ã‚‹ã“ã¨ãŒã§ãるよã†ã«ãªã‚‹æ©Ÿèƒ½ã§ã™ã€‚
ã“れを有効化ã™ã‚‹ã«ã¯ã€MediaWikiã¯ã‚¤ãƒ³ã‚¿ãƒ¼ãƒãƒƒãƒˆã«æŽ¥ç¶šã§ããªã‘ã‚Œã°ãªã‚Šã¾ã›ã‚“。
ウィキメディアコモンズ以外ã®ã‚¦ã‚£ã‚­ã‚’åŒã˜ã‚ˆã†ã«è¨­å®šã™ã‚‹æ–¹æ³•ãªã©ã€ã“ã®æ©Ÿèƒ½ã«é–¢ã™ã‚‹è©³ç´°ãªæƒ…å ±ã¯ã€[http://mediawiki.org/wiki/Manual:$wgForeignFileRepos マニュアル]ã‚’ã”覧ãã ã•ã„。',
@@ -6965,7 +8996,7 @@ GNUフリー文書利用許諾契約書ã¯ã‚¦ã‚£ã‚­ãƒšãƒ‡ã‚£ã‚¢ãŒæŽ¡ç”¨ã—ã¦ã
'config-install-sysop' => '管ç†è€…ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’作æˆã™ã‚‹',
'config-install-mainpage' => '既定ã®æŽ¥ç¶šã§ãƒ¡ã‚¤ãƒ³ãƒšãƒ¼ã‚¸ã‚’作æˆ',
'config-install-mainpage-failed' => 'メインページを挿入ã§ãã¾ã›ã‚“ã§ã—ãŸ:$1',
- 'config-install-done' => "'''ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ï¼'''
+ 'config-install-done' => "'''ãŠã‚ã§ã¨ã†ã”ã–ã„ã¾ã™ï¼'''
MediaWikiã®ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã«æˆåŠŸã—ã¾ã—ãŸã€‚
<code>LocalSettings.php</code>ファイルãŒç”Ÿæˆã•ã‚Œã¾ã—ãŸã€‚
@@ -6982,9 +9013,138 @@ $3
ãれを完了ã™ã‚Œã°ã€'''[$2 ウィキã«å…¥ã‚‹]'''ã“ã¨ãŒã§ãã¾ã™ã€‚",
'config-download-localsettings' => 'LocalSettings.phpをダウンロード',
'config-help' => 'ヘルプ',
+ 'mainpagetext' => "'''MediaWikiãŒæ­£å¸¸ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã—ãŸã€‚'''",
+ 'mainpagedocfooter' => 'ウィキソフトウェアã®ä½¿ã„æ–¹ã«é–¢ã™ã‚‹æƒ…å ±ã¯[//meta.wikimedia.org/wiki/Help:Contents 利用者案内]ã‚’å‚ç…§ã—ã¦ãã ã•ã„。
+
+== ã¯ã˜ã‚ã¾ã—ょㆠ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings/ja 設定ã®ä¸€è¦§]
+* [//www.mediawiki.org/wiki/Manual:FAQ/ja MediaWiki よãã‚る質å•ã¨å›žç­”]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWikiリリース情報メーリングリスト]',
+);
+
+/** Jamaican Creole English (Patois)
+ * @author Yocahuna
+ */
+$messages['jam'] = array(
+ 'mainpagetext' => "'''MediaWiki don instaal soksesful.'''",
+ 'mainpagedocfooter' => "Kansolt di [//meta.wikimedia.org/wiki/Help:Contents User's Guide] fi infamieshan ou fi yuuz di wiki saafwier.
+
+== Taatop ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Jutish (Jysk)
+ * @author Huslåke
+ */
+$messages['jut'] = array(
+ 'mainpagetext' => "'''MediaWiki er nu installeret.'''",
+ 'mainpagedocfooter' => "Se vores engelsksprÃ¥Äede [//meta.wikimedia.org/wiki/MediaWiki_localisation dokumentÃ¥sje tilpasnenge'm Ã¥f æ brugergrænseflade] og [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide æ brugervejlednenge] før Ã¥plysnenger Ã¥psætnenge'm og anvendelse.",
+);
+
+/** Javanese (Basa Jawa) */
+$messages['jv'] = array(
+ 'mainpagetext' => "'''Prangkat empuk wiki wis suksès dipasang.'''",
+ 'mainpagedocfooter' => "Mangga maca [//meta.wikimedia.org/wiki/Help:Contents User's Guide] kanggo katrangan luwih langkung prakara panggunan prangkat empuk wiki
+== Miwiti panggunan ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Daftar pangaturan préférènsi]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Milis rilis MediaWiki]",
+);
+
+/** Georgian (ქáƒáƒ áƒ—ული) */
+$messages['ka'] = array(
+ 'mainpagetext' => "'''მედიáƒáƒ•áƒ˜áƒ™áƒ˜ წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით ჩáƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—áƒ.'''",
+ 'mainpagedocfooter' => 'ვიკი პრáƒáƒ’რáƒáƒ›áƒ˜áƒ¡ გáƒáƒ›áƒáƒ§áƒ”ნების ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡áƒ—ვის იხილეთ [//meta.wikimedia.org/wiki/Help:Contents მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის მეგზური].
+
+== დáƒáƒ¬áƒ§áƒ”ბრ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ˜áƒ¡ მáƒáƒ©áƒ•áƒ”ნებლების სიáƒ]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce მედიáƒáƒ•áƒ˜áƒ™áƒ˜áƒ¡ გáƒáƒ›áƒáƒªáƒ”მის დáƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒ¡ სიáƒ]',
+);
+
+/** Kara-Kalpak (Qaraqalpaqsha) */
+$messages['kaa'] = array(
+ 'mainpagetext' => "'''MediaWiki tabıslı ornatıldı.'''",
+ 'mainpagedocfooter' => "Wiki bag'darlamasın qollanıw haqqındag'i mag'lıwmat usın [//meta.wikimedia.org/wiki/Help:Contents Paydalanıwshılar qollanbasınan] ken'es alın'.
+
+== Baslaw ushın ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Konfiguratsiya sazlaw dizimi]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWikidin' Ko'p Soralatug'ın Sorawları]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki haqqında xat tarqatıw dizimi]",
+);
+
+/** ÐдыгÑÐ±Ð·Ñ (ÐдыгÑбзÑ)
+ * @author Bogups
+ */
+$messages['kbd-cyrl'] = array(
+ 'mainpagetext' => "'''«MediaWiki» узыншу Ñ…Ñгъува.'''",
+ 'mainpagedocfooter' => 'Мы виким и лÑÐ¶ÑŒÑ‹Ð³ÑŠÑ Ñ…ÑŠÑ‹Ð±Ð°Ñ€Ñ…ÑÑ€ здÑбгъуÑтыфынур [//meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 дÑÓ€ÑпыкъуÑгъу тхылъым].
+
+
+== КъыщхьÑпÑÐ³ÑŠÑƒÑ Ñ…ÑŠÑƒÑ„Ñ‹Ð½ÑƒÑ…ÑÑ€ ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings ЗÑгъÑзÑхуÑÐ³ÑŠÑƒÑ Ð³ÑƒÑÑ€ÑÑ…Ñм Ñ Ñ‚Ñ…Ñ‹Ð»ÑŠ];
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki-м ÑƒÐ¿Ñ‰Ó€Ñ Ð½Ð°Ñ…ÑŠÑ‹Ð±Ñƒ ÑÑ‚Ñ…ÑÐ¼Ñ€Ñ Ñ Ð¶ÑуапхÑмрÑ];
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-м и верÑÐ¸Ñ Ñ‰Ó€ÑÑƒÑ ÐºÑŠÑжахÑм Ñ ÐºÑŠÑӀохугъуÑ].',
+);
+
+/** Khowar (کھوار)
+ * @author Rachitrali
+ */
+$messages['khw'] = array(
+ 'mainpagetext' => "\"<big>'''میڈیاوکیو کامیابیو سورا چالو کورونو بیتی شیر۔.'''</big>\"",
+);
+
+/** Kirmanjki (Kırmancki)
+ * @author Mirzali
+ */
+$messages['kiu'] = array(
+ 'mainpagetext' => "'''MediaWiki fist ra ser, vıraziya.'''",
+ 'mainpagedocfooter' => "Serba melumatê gurenaena ''wiki software''i [//meta.wikimedia.org/wiki/Help:Contents İdarê karberi] de mıracaet ke.
+
+== Gamê verêni ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista ayarunê vırastene]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki de ÇZP]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki ra lista serbest-daena postey]",
+);
+
+/** Kazakh (Arabic script) (‫قازاقشا (تٴوتە)‬) */
+$messages['kk-arab'] = array(
+ 'mainpagetext' => "'''مەدىياۋىيكىي بۋماسى ٴساتتى ورناتىلدى.'''",
+ 'mainpagedocfooter' => 'ۋىيكىي باعدارلامالىق جاساقتاماسىن قالاي قولداناتىن اقپاراتى ٴۇشىن [//meta.wikimedia.org/wiki/Help:Contents پايدالانۋشىلىق نۇسقاۋلارىنان] كەڭەس الىڭىز.
+
+== باستاۋ ٴۇشىن ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings باپتالىم قالاۋلارىنىڭ ٴتىزىمى]
+* [//www.mediawiki.org/wiki/Manual:FAQ مەدىياۋىيكىيدىڭ جىيى قويىلعان ساۋالدارى]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce مەدىياۋىيكىي شىعۋ تۋرالى حات تاراتۋ ٴتىزىمى]',
+);
+
+/** Kazakh (Cyrillic script) (‪Қазақша (кирил)‬) */
+$messages['kk-cyrl'] = array(
+ 'mainpagetext' => "'''МедиаУики бумаÑÑ‹ Ñәтті орнатылды.'''",
+ 'mainpagedocfooter' => 'Уики бағдарламалық жаÑақтамаÑын қалай қолданатын ақпараты үшін [//meta.wikimedia.org/wiki/Help:Contents Пайдаланушылық нұÑқауларынан] ÐºÐµÒ£ÐµÑ Ð°Ð»Ñ‹Ò£Ñ‹Ð·.
+
+== БаÑтау үшін ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Бапталым қалауларының тізімі]
+* [//www.mediawiki.org/wiki/Manual:FAQ МедиаУикидің Жиы Қойылған Сауалдары]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce МедиаУики шығу туралы хат тарату тізімі]',
+);
+
+/** Kazakh (Latin script) (‪Qazaqşa (latın)‬) */
+$messages['kk-latn'] = array(
+ 'mainpagetext' => "'''MedïaWïkï bwması sätti ornatıldı.'''",
+ 'mainpagedocfooter' => 'Wïkï bağdarlamalıq jasaqtamasın qalaý qoldanatın aqparatı üşin [//meta.wikimedia.org/wiki/Help:Contents Paýdalanwşılıq nusqawlarınan] keñes alıñız.
+
+== Bastaw üşin ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Baptalım qalawlarınıñ tizimi]
+* [//www.mediawiki.org/wiki/Manual:FAQ MedïaWïkïdiñ Jïı Qoýılğan Sawaldarı]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MedïaWïkï şığw twralı xat taratw tizimi]',
);
/** Khmer (ភាសាážáŸ’មែរ)
+ * @author Thearith
* @author គីមស៊្រុន
*/
$messages['km'] = array(
@@ -7003,6 +9163,51 @@ $messages['km'] = array(
'config-page-complete' => 'បញ្ចប់!',
'config-page-restart' => 'ážáŸ†áž›áž¾áž„ឡើងវិញ',
'config-help' => 'ជំនួយ',
+ 'mainpagetext' => "'''មáŸážŒáž¶ážœáž·áž‚ីážáŸ’រូវបានដំឡើងសំរáŸáž…ហើយ​។'''",
+ 'mainpagedocfooter' => 'សូមពិនិážáŸ’យមើល [//meta.wikimedia.org/wiki/ជំនួយ​៖ ážáŸ’លឹមសារ​ណែនាំ​ប្រើប្រាស់]សម្រាប់​ពáŸážáŸŒáž˜áž¶áž“​​បន្ážáŸ‚មចំពោះ​ការប្រើប្រាស់ ផ្នែកទន់វិគី​។
+
+== ចាប់ផ្ដើមជាមួយមáŸážŒáž¶ážœáž·áž‚ី ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings បញ្ជីកំណážáŸ‹áž‘ម្រង់]
+* [//www.mediawiki.org/wiki/Manual:FAQ/km សំណួរញឹកញាប់​មáŸážŒáž¶ážœáž·áž‚ី]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce បញ្ជី​ពិភាក្សា​ការផ្សព្វផ្សាយ​របស់​មáŸážŒáž¶ážœáž·áž‚ី]',
+);
+
+/** Kannada (ಕನà³à²¨à²¡) */
+$messages['kn'] = array(
+ 'mainpagetext' => "'''ವಿಕಿ ತಂತà³à²°à²¾à²‚ಶವನà³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²—ಿ ಅನà³à²¸à³à²¥à²¾à²ªà²¿à²¸à²²à²¾à²¯à²¿à²¤à³.'''",
+ 'mainpagedocfooter' => 'ವಿಕಿ ತಂತà³à²°à²¾à²‚ಶವನà³à²¨à³ ಬಳಸà³à²µ ಬಗà³à²—ೆ ಮಾಹಿತಿಗೆ [//meta.wikimedia.org/wiki/Help:Contents ಬಳಕೆದಾರರಿಗೆ ನಿರà³à²¦à³‡à²¶à²¨ ಪà³à²Ÿ] ನೋಡಿ.
+
+== ಪà³à²°à²¾à²°à²‚ಭಿಸà³à²µà³à²¦à³ ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ ಮೀಡಿಯವಿಕಿ FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
+);
+
+/** Korean (한국어) */
+$messages['ko'] = array(
+ 'mainpagetext' => "'''미디어위키가 성공ì ìœ¼ë¡œ 설치ë˜ì—ˆìŠµë‹ˆë‹¤.'''",
+ 'mainpagedocfooter' => '[//meta.wikimedia.org/wiki/Help:Contents ì´ê³³]ì—ì„œ 위키 í”„ë¡œê·¸ëž¨ì— ëŒ€í•œ 정보를 ì–»ì„ ìˆ˜ 있습니다.
+
+== 시작하기 ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings 설정하기]
+* [//www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 ë©”ì¼ë§ 리스트]',
+);
+
+/** Karachay-Balkar (Къарачай-Малкъар)
+ * @author Iltever
+ */
+$messages['krc'] = array(
+ 'mainpagetext' => "'''«MediaWiki» тыйыншлы Ñалынды.'''",
+ 'mainpagedocfooter' => "Бу вики бла къалай ишлерге ангылатхан информациÑны [//meta.wikimedia.org/wiki/Help:Contents_User's_Guide къошулуучугъа юретиуде] табаргъа боллукъду.
+
+== Файдалы реÑурÑла ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings тюрлендириулени ÑпиÑогу (ингил.)];
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki-ни ÑŽÑюнден кёб берилген Ñоруула];
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-ни джангы верÑиÑÑыны чыкъгъанын билдириу пиÑьмола].",
);
/** Colognian (Ripoarisch)
@@ -7075,10 +9280,10 @@ Dat Projramm weed wigger jejovve met dä Hoffnung, dat et jät nöz, ävver '''o
Liß de GNU <i lang=\"en\">General Public License</i> sellver, öm mieh ze erfahre.
Do sullts en <doclink href=Copying>Kopie vun dä alljemene öffentlesche Lizänz vun dä GNU</doclink> (<i lang=\"en\">GNU General Public License</i>) zosamme met heh däm Projramm krääje han. Wann dat nit esu es, schrief aan de <i lang=\"en\">Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA</i>. udder [http://www.gnu.org/copyleft/gpl.html liß se online övver et Internet].",
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWiki sing Hompäjdsch]
-* [http://www.mediawiki.org/wiki/Help:Contents Handbooch för Aanwender]
-* [http://www.mediawiki.org/wiki/Manual:Contents Handbooch för Administratore un Wiki_Köbesse]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Öff jeshtallte Froore met Antwoote]
+ 'config-sidebar' => '* [//www.mediawiki.org MediaWiki sing Hompäjdsch]
+* [//www.mediawiki.org/wiki/Help:Contents Handbooch för Aanwender]
+* [//www.mediawiki.org/wiki/Manual:Contents Handbooch för Administratore un Wiki_Köbesse]
+* [//www.mediawiki.org/wiki/Manual:FAQ Öff jeshtallte Froore met Antwoote]
----
* <doclink href=Readme>Liß Mesch! (<i lang="en">Read me</i>)</doclink>
* <doclink href=ReleaseNotes><i lang="en">Release notes</i> Övver heh di Projrammversion</doclink>
@@ -7094,17 +9299,17 @@ Do kanns MediaWiki nit opsäze.',
'config-unicode-using-utf8' => 'För et <i lang="en">Unicode</i>-Nommaliseere dom_mer däm <i lang="en">Brion Vibber</i> sing Projramm <code lang="en">utf8_normalize.so</code> nämme.',
'config-unicode-using-intl' => 'För et <i lang="en">Unicode</i>-Nommaliseere dom_mer dä [http://pecl.php.net/intl Zohsaz <code lang="en">intl</code> uss em <code lang="en">PECL</code>] nämme.',
'config-unicode-pure-php-warning' => '\'\'\'Opjepaß:\'\'\' Mer kunnte dä [http://pecl.php.net/intl Zohsaz <code lang="en">intl</code> uss em <code lang="en">PECL</code>] för et <i lang="en">Unicode</i>-Nommaliseere nit fenge. Dröm nämme mer dat eijfache, ävver ärsh lahme, <i lang="en">PHP</i>-Projrammshtöck doför.
-För jruuße Wikis met vill Metmaachere doht Üsch die Sigg övver et [http://www.mediawiki.org/wiki/Unicode_normalization_considerations <i lang="en">Unicode</i>-Nommaliseere] (es op Änglesch) aanloore.',
+För jruuße Wikis met vill Metmaachere doht Üsch die Sigg övver et [//www.mediawiki.org/wiki/Unicode_normalization_considerations <i lang="en">Unicode</i>-Nommaliseere] (es op Änglesch) aanloore.',
'config-unicode-update-warning' => "'''Opjepaß:''' Dat Projramm för der <i lang=\"en\">Unicode</i> zo normaliseere boud em Momang op en ählter Version vun dä Bibliothek vum [http://site.icu-project.org/ ICU-Projäk] op.
-Doht di [http://www.mediawiki.org/wiki/Unicode_normalization_considerations op der neuste Shtand bränge], wann auf dat Wiki em Äänz <i lang=\"en\">Unicode</i> bruche sull.",
- 'config-no-db' => 'Mer kunnte kei zopaß Daatebangk-Driiverprojamm fenge.',
- 'config-no-db-help' => 'Mer bruche e Daatebangk-Driiverprojamm för PHP. Dat moß enjeresht wääde.
+Doht di [//www.mediawiki.org/wiki/Unicode_normalization_considerations op der neuste Shtand bränge], wann auf dat Wiki em Äänz <i lang=\"en\">Unicode</i> bruche sull.",
+ 'config-no-db' => 'Mer kunnte kei zopaß Daatebangk-Driiverprojamm fenge.
+Mer bruche e Daatebangk-Driiverprojamm för PHP. Dat moß enjeresht wääde.
Mer künne met heh dä Daatebangke ömjonn: $1.
Wann De nit om eijene Rääshner bes, moß De Dinge <i lang="en">provider</i> bedde, dat hä Der ene zopaß Driiver enresht.
-Wann de PHP sellver övversaz häs, donn ene Zohjang för en Daatebangk enbenge, för e Beishpell met: <code lang="en">./configure --with-mysql</code> op ene <i lang="en">command shell</i>.
+Wann de PHP sellver övversaz häs, donn e Zohjangsprjramm för en Daatebangk enbenge, för e Beishpell met: <code lang="en">./configure --with-mysql</code> op ene <i lang="en">command shell</i>.
Wann De PHP uss enem <i lang="en">Debian</i> udder <i lang="en">Ubuntu</i> Pakätt enjeresht häs, moß De dann och noch et <code lang="en">php5-mysql</code> op Dinge Räschner bränge.',
- 'config-no-fts3' => "'''Opjepaß:''' De Projramme vum <i lang=\"en\">SQLite</i> sin der ohne et [http://sqlite.org/fts3.html FTS3-Modul] övversaz, dröm wääde de Funxjohne för et Söhke fähle.",
+ 'config-no-fts3' => "'''Opjepaß:''' De Projramme vum <i lang=\"en\">SQLite</i> sin der ohne et [//sqlite.org/fts3.html FTS3-Modul] övversaz, dröm wääde de Funxjohne för et Söhke fähle.",
'config-register-globals' => "'''Opjepaß:''' dem PHP singe Schallder <code lang=\"en\">[http://php.net/register_globals register_globals]</code> es enjeschalldt.
'''Donn dä ußmaache, wann De kann.'''
MediaWiki löp och esu, dä künnt ävver Sesherheitslöcke opmaache, di mer noch nit jefonge un eruß jemaat hät.",
@@ -7136,12 +9341,16 @@ MediaWiki bruch dä UTF-8-Krohm ävver, öm ohne Fähler loufe ze künne.",
'config-memory-bad' => "'''Opjepaß:''' Dem PHP singe Parameeter <code lang=\"en\">memory_limit</code> es \$1.
Dat es wall ze winnisch.
Et Enreeschte kunnt doh draan kappott jon!",
- 'config-xcache' => 'Dä <code lang="en">[http://trac.lighttpd.net/xcache/ XCache]</code> es ennjeresht.',
+ 'config-xcache' => 'Dä <code lang="en">[http://xcache.lighttpd.net/ XCache]</code> es ennjeresht.',
'config-apc' => 'Dä <code lang="en">[http://www.php.net/apc APC]</code> es ennjeresht.',
'config-eaccel' => 'Dä <code lang="en">[http://eaccelerator.sourceforge.net/ eAccelerator]</code> es ennjeresht.',
'config-wincache' => 'Dä <code lang="en">[http://www.iis.net/download/WinCacheForPhp WinCache]</code> es ennjeresht.',
- 'config-no-cache' => '\'\'\'Opjepaß:\'\'\' Mer kunnte dä <code lang="en">[http://eaccelerator.sourceforge.net eAccelerator]</code>, dä <code lang="en">[http://www.php.net/apc APC]</code>, dä <code lang="en">[http://trac.lighttpd.net/xcache/ XCache]</code> un dä <code lang="en">[http://www.iis.net/download/WinCacheForPhp WinCache]</code> nit fenge.
+ 'config-no-cache' => '\'\'\'Opjepaß:\'\'\' Mer kunnte dä <code lang="en">[http://eaccelerator.sourceforge.net eAccelerator]</code>, dä <code lang="en">[http://www.php.net/apc APC]</code>, dä <code lang="en">[http://xcache.lighttpd.net/ XCache]</code> un dä <code lang="en">[http://www.iis.net/download/WinCacheForPhp WinCache]</code> nit fenge.
Et <i lang="en">object caching</i> es nit müjjelesh un ußjeschalldt.',
+ 'config-mod-security' => "'''Opjepaß''': Dinge Webßööver hät <code lang=\"en\">[http://modsecurity.org/ mod_security]</code> enjeschalldt. If misconfigured, it can cause problems for MediaWiki or other software that allows users to post arbitrary content.
+Refer to <code lang=\"en\">[http://modsecurity.org/documentation/ mod_security documentation]</code> udder contact your host's support if you encounter zohfälleje Fähler.
+
+",
'config-diff3-bad' => 'Mer han <i lang="en">GNU</i> <code lang="en">diff3</code> nit jefonge.',
'config-imagemagick' => 'Mer han <i lang="en">ImageMagick</i> jefonge: <code>$1</code>.
Et Ömrääschne en Minni-Beldsche weed müjjelesch sin, wann De et Belder Huhlaade zohlöhß.',
@@ -7151,20 +9360,27 @@ Et Ömrääschne en Minni-Beldsche weed müjjelesch sin, wann De et Belder Huhla
Et Ömrääschne en Minni-Beldsche weed ußjeschalldt.',
'config-no-uri' => "'''Fähler:''' Mer kunnte der aktoälle <i lang=\"en\">URI</i> nit erusfenge.
Et Enreeschte es domet heh aam Engk.",
- 'config-uploads-not-safe' => "'''Opjepaß:''' Uß däm jewöhnlijje Verzeichnes för de huhjelaade Datteie, dat es <code>$1</code>, künnte öhnzwällsche Skrepte un Projramme ußjeföhrt wääde. Och wann MediaWiki de huhjelaade Datteie prööf, dat kein bekannte Risike dren sin, sullt mer doch dat [http://www.mediawiki.org/wiki/Manual:Security#Upload_security Sesherheitsloch] zoh maache, ih dat mer et Dattei Huhlaade zohlöht.",
- 'config-brokenlibxml' => 'Op Dingem Rääschner loufe Versione vun PHP un <code lang="en">libxml2</code> zosamme, di ävver nit zosamme paßße, un de Daate em MediaWiki un ander Web_Aanwändunge [http://bugs.php.net/bug.php?id=45996 bug kapott maache].
+ 'config-no-cli-uri' => "'''Opjepaß''': <code lang=\"en\">--scriptpath</code> es nit aanjejovve, mer nämme der Schtandatt: <code>\$1</code>.",
+ 'config-using-server' => 'Mer nämmen dem ẞööver singe Name: „<nowiki>$1</nowiki>“.',
+ 'config-using-uri' => 'Mer nämmen dem ẞööver singe <i lang="en">URL</i>: „<nowiki>$1$2</nowiki>“.',
+ 'config-uploads-not-safe' => "'''Opjepaß:''' Uß däm jewöhnlijje Verzeichnes för de huhjelaade Datteie, dat es <code>$1</code>, künnte öhnzwällsche Skrepte un Projramme ußjeföhrt wääde. Och wann MediaWiki de huhjelaade Datteie prööf, dat kein bekannte Risike dren sin, sullt mer doch dat [//www.mediawiki.org/wiki/Manual:Security#Upload_security Sesherheitsloch] zoh maache, ih dat mer et Dattei Huhlaade zohlöht.",
+ 'config-no-cli-uploads-check' => "'''Opjepaß''': <code>\$1</code> es dat Schtandatt-Verzeijschneß för et Datteije-Huhlaade. Beim Opsäze met <abbr lang=\"en\" title=\"Call Level Interface\">CLI</abbr> donn mer ävver nit övverpröhve, dat dat jeschöz es dojääje, dat Skrepte vun doh loufe künne, di mer nit loufe han well.",
+ 'config-brokenlibxml' => 'Op Dingem Rääschner loufe Versione vun PHP un <code lang="en">libxml2</code> zosamme, di ävver nit zosamme paßße, un de Daate em MediaWiki un ander Web_Aanwändunge [//bugs.php.net/bug.php?id=45996 bug kapott maache].
Jangk op PHP 5.2.9 udder dohnoh un op <code lang="en">libxml2</code> 2.7.3 udder dohnoh.
Heh jeihd et nit wigger.',
- 'config-using531' => 'MediaWiki läuf nit met PHP $1 zosamme wääje enem [http://bugs.php.net/bug.php?id=50394 Fähler em Zosammehang met Parrameetere för <code lang="en">__call()</code>].
+ 'config-using531' => 'MediaWiki läuf nit met PHP $1 zosamme wääje enem [//bugs.php.net/bug.php?id=50394 Fähler em Zosammehang met Parrameetere för <code lang="en">__call()</code>].
Jangk op de Version 5.3.2 vum <i lang="en">PHP</i> ov dohnoh, udder op de Version 5.3.0 udder dovöör, öm dat Problem ze ömjonn.
Heh jeiht et nit wigger.',
+ 'config-suhosin-max-value-length' => '<i lang="en">Suhosin</i> es enschtalleet. Dröm kann ene <code lang="en">GET</code>-Parrameeter nit övver {{PLURAL:$1|ei Byte|$q Bytes|noll Byte}} lang wääde. En MediaWiki singe <i lang="en"ResouceLoader</i> kütt doh zwa drömeröm, ävver dat brems. Wann müjelesch, doht <code lang="en">suhosin.get.max_value_length</code> en dä Dattei <code lang="en">php.ini</code> op 1024 Bytes udder drövver enschtälle. un dann moß <code lang="en">$wgResourceLoaderMaxQueryLength</code> en dä Dattei <code lang="en">LocalSettings.php</code> op däsälve Wäät jesaz wääde.',
'config-db-type' => 'De Zoot Daatebangk:',
'config-db-host' => 'Dä Name vun däm Rääschner met dä Daatebangk:',
'config-db-host-help' => 'Wann Dinge ẞööver för de Daatebangk ob enem andere Rääschner es, donn heh dämm singe Name udder <i lang="en">IP</i>-Addräß enjävve.
Wann De ob enem Meetẞööver beß, weet Der Dinge Provaider odder däm sing Dokemäntazjuhn saare, wat De endraare moß.
-Wann De ob enem ẞööver onger <i lang="en">Windows</i> am enshtalleere bes un en <i lang="en">MySQL</i>-Daatebangk häs, künnd_et sin, dat „<code lang="en">localhost</code>“ nit douch för der Name vum ẞööver. Wann dad-esu es, versöhg et ens met „<code lang="en">127.0.0.1</code>“ als <i lang="en">IP</i>-Addräß vum eije Rääschner.',
+Wann De ob enem ẞööver onger <i lang="en">Windows</i> am enshtalleere bes un en <i lang="en">MySQL</i>-Daatebangk häs, künnd_et sin, dat „<code lang="en">localhost</code>“ nit douch för der Name vum ẞööver. Wann dad-esu es, versöhg et ens met „<code lang="en">127.0.0.1</code>“ als <i lang="en">IP</i>-Addräß vum eije Rääschner.
+
+Wann De ene <i lang="en">PostgreSQL</i>-ẞööver häs, donn dat Fäld läddesch lohße, öm en Verbendung övver e <i lang="en">Unix socket</i> opzemaache.',
'config-db-host-oracle' => 'Dä Daatebangk ier <i lang="en" title="Transparent Network Substrate">TNS</i>:',
'config-db-host-oracle-help' => 'Donn ene jöltije [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm „<i lang="en">Local Connect</i>“-Name] aanjävve. De Dattei „<code lang="en">tnsnames.ora</code>“ moß för heh dat Projamm seschbaa un ze Lässe sin.<br />Wann heh de Projamm_Biblijoteeke für de Aanwänderprojramme för de Version 10g udder neuer enjesaz wääde, kam_mer och et [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm „<i lang="en">Easy Connect</i>“] jenumme wääde för der Name ze verjävve.',
'config-db-wiki-settings' => 'De Daate vum Wiki',
@@ -7213,12 +9429,13 @@ Beim Shpeishere em '''binäre Fomaat''' deiht MediaWiki de Täxte, di em UTF-8 F
Dat es flöcker un spaasaamer wi et UTF-8 Fommaat vum <i lang=\"en\">MySQL</i> un määd et müjjelesch, all un jeedes <i lang=\"en\">Unicode</i>-Zeishe met faßzehallde.
Beim Shpeishere em '''UTF-8 Fomaat''' deiht et <i lang=\"en\">MySQL</i> der Zeishesaz un de Kodeerung vun dä Daate känne, un kann se akeraat aanzeije un ömwandelle,
-allerdengs künne kein Zeishe ußerhalv vum [http://de.wikipedia.org/wiki/Basic_Multilingual_Plane#Gliederung_in_Ebenen_und_Bl.C3.B6cke jrundlääje Knubbel för vill Shprooche (<i lang=\"en\">Basic Multilingual Plane — BMP</i>)] afjeshpeishert wääde.",
+allerdengs künne kein Zeishe ußerhalv vum [//de.wikipedia.org/wiki/Basic_Multilingual_Plane#Gliederung_in_Ebenen_und_Bl.C3.B6cke jrundlääje Knubbel för vill Shprooche (<i lang=\"en\">Basic Multilingual Plane — BMP</i>)] afjeshpeishert wääde.",
'config-mysql-old' => 'Mer bruche <i lang="en">MySQL</i> $1 udder neuer. Em Momang es <i lang="en">MySQL</i> $2 aam Loufe.',
'config-db-port' => 'De Pooz-Nommer (<i lang="en">port</i>) för de Daatebangk:',
'config-db-schema' => 'Et Schema en de Datebangk för MediaWiki:',
'config-db-schema-help' => 'För jewöhnlesch es dat Schema en Odenong.
Donn bloß jät draan ändere, wann De sescher weiß, dat dat nüüdesch es.',
+ 'config-pg-test-error' => "Mer krijje kein Verbendung zor Daatebank '''$1''': $2",
'config-sqlite-dir' => 'Dem <i lang="en">SQLite</i> sing Daateverzeishnes:',
'config-sqlite-dir-help' => '<i lang="en">SQLite</i> hät all sing Daate zosamme en en einzel Dattei.
@@ -7236,6 +9453,7 @@ Donn Ding Daatebangk et beß janz woh anders hen, noh <code lang="en">/var/lib/m
'config-type-postgres' => '<i lang="en">PostgreSQL</i>',
'config-type-sqlite' => '<i lang="en">SQLite</i>',
'config-type-oracle' => '<i lang="en">Oracle</i>',
+ 'config-type-ibm_db2' => 'Dä <i lang="en">IBM</i> ier <i lang="en">DB2</i>',
'config-support-info' => 'MediaWiki kann met heh dä Daatebangk_Süßteeme zosamme jonn:
$1
@@ -7245,10 +9463,12 @@ Wann dat Daatebangk_Süßteem, wat De nämme wells, onge nit dobei es, dann donn
'config-support-postgres' => '* <i lang="en">$1</i> es e bikannt Daatebangksüßteem met offe Quälltäxde, un en och en Wahl nävve <i lang="en">MySQL</i> ([http://www.php.net/manual/de/pgsql.installation.php Aanleidung för et Övversäze un Enreeschte von PHP met <i lang="en">PostgreSQL</i> dobei, op Deutsch]) Et sinn_er ävver paa klein Fählershe bekannt, um kunne dat em Momang för et reschtijje Werke nit emfähle.',
'config-support-sqlite' => '* <i lang="en">$1</i> es e eijfach Daatebangksüßteem, wat joot ongershtöz weed. ([http://www.php.net/manual/de/pdo.installation.php Aanleidong för et Övversäze un Enreeschte von PHP met <i lang="en">SQLite</i> dobei, op Deutsch])',
'config-support-oracle' => '* <i lang="en">$1</i> es e jeschäfflesch Daatebangksüßteem för Ferme. ([http://www.php.net/manual/de/oci8.installation.php Aanleidong för et Övversäze un Enreeschte von PHP met <i lang="en">OCI8</i> dobei, op Deutsch])',
+ 'config-support-ibm_db2' => '* $1 es en Datebengk för et Jeschäff un fö Ongernehme.',
'config-header-mysql' => 'De Enshtällunge för de <i lang="en">MySQL</i> Daatebangk',
'config-header-postgres' => 'De Enshtällunge för de <i lang="en">PostgreSQL</i> Daatebangk',
'config-header-sqlite' => 'De Enshtällunge för de <i lang="en">SQLite</i> Daatebangk',
'config-header-oracle' => 'De Enshtällunge för de <i lang="en">Oracle</i> Daatebangk',
+ 'config-header-ibm_db2' => 'De Enshtällunge för de <i lang="en">IBM</i> ier <i lang="en">DB2</i>',
'config-invalid-db-type' => 'Dat es en onjöltijje Zoot Daatebangk.',
'config-missing-db-name' => 'Do moß jät enjävve för dä Name vun dä Daatebangk.',
'config-missing-db-host' => 'Do moß jät enjävve för dä Name vun däm Rääschner met dä Daatebangk.',
@@ -7309,7 +9529,7 @@ Mer kann dat Wiki jäz [$1 bruche].',
'config-regenerate' => 'Donn de Dattei <code lang="en">LocalSettings.php</code> neu opsäze →',
'config-show-table-status' => 'Et Kommando <code lang="en">SHOW TABLE STATUS</code> aan de Daatebangk es donävve jejange!',
'config-unknown-collation' => "'''Opjepaß:''' De Daatabangk deiht en onbikannte Reijefollsch bruche, för Booshtaabe un Zeishe ze verjliishe un ze zotteere.",
- 'config-db-web-account' => 'Dä Zohjang zor Daatebangk fö et Wiki',
+ 'config-db-web-account' => 'Dä Zohjang zor Daatebangk för et Wiki',
'config-db-web-help' => 'Donn ene Name un e Paßwoot för der Zohjang zor Daatebangk för et Wiki em nomaale Bedrief aanjävve.',
'config-db-web-account-same' => 'Donn dersällve Zohjang nämme, wi heh beim Opsäze.',
'config-db-web-create' => 'Donn dä Zohjang aanlääje, wann dä noch nit doh es.',
@@ -7318,6 +9538,14 @@ Dä aanjejovve Zohjang för der Nomaalbedrief moß dröm schunn enjersht sen!',
'config-mysql-engine' => 'De Zoot udder et Fommaat vun de Tabälle:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => '\'\'\'Opjepaß:\'\'\' <i lang="en">MyISAM</i> es als Speicher för <i lang="en">MySQL</i> nit joot för et Zosammeschpell met MediaWiki nit zo ämfähle:
+* sie unterstützt aufgrund von Tabellensperrungen kaum die nebenläufige Ausführung von Aktionen
+* Dat Fomaat es anfällesch för Probleme met de Daate.
+* Et weed vun MediaWiki nit immer passend ongerschtöz.
+
+Wann Ding <i lang="en">MySQL</i> et schpeischere en <i lang="en">InnoDB</i>-Datteije nit ongerschtöz, wird deren Verwendung eindringlich empfohlen.
+Sofern sie sie nicht unterstützt, sollte eine entsprechende Aktualisierung nunmehr Erwägung gezogen werden op dämm ẞööver.
+',
'config-mysql-engine-help' => "'''InnoDB''' es fö jewöhnlesch et beß, weil vill Zohjreffe op eijmohl joot ongershtöz wääde.
'''MyISAM''' es flöcker op Rääschnere met bloß einem Minsch draan, un bei Wikis, di mer bloß lässe un nit schrieeve kann.
@@ -7329,7 +9557,8 @@ MyISAM-Daatebangke han em Schnett mieh Fähler un jon flöcker kappott, wi InnoD
Dat es flöcker un spaasaamer wi et UTF-8 Fommaat vum <i lang=\"en\">MySQL</i> un määd et müjjelesch, all un jeedes <i lang=\"en\">Unicode</i>-Zeishe met faßzehallde.
Beim Shpeishere em '''UTF-8 Fomaat''' deiht et <i lang=\"en\">MySQL</i> der Zeishesaz un de Kodeerung vun dä Daate känne, un kann se akeraat aanzeije un ömwandelle,
-allerdengs künne kein Zeishe ußerhalv vum [http://de.wikipedia.org/wiki/Basic_Multilingual_Plane#Gliederung_in_Ebenen_und_Bl.C3.B6cke jrundlääje Knubbel för vill Shprooche (<i lang=\"en\">Basic Multilingual Plane — BMP</i>)] afjeshpeishert wääde.",
+allerdengs künne kein Zeishe ußerhalv vum [//de.wikipedia.org/wiki/Basic_Multilingual_Plane#Gliederung_in_Ebenen_und_Bl.C3.B6cke jrundlääje Knubbel för vill Shprooche (<i lang=\"en\">Basic Multilingual Plane — BMP</i>)] afjeshpeishert wääde.",
+ 'config-ibm_db2-low-db-pagesize' => "De <i lang=\"en\">DB2</i> Daatebangk heh hät ene standattmääßeje Plaz för Tabälle met zoh klein Sigge. Dä Plaz en de Sigge moß '''32K''' udder mieh sin.",
'config-site-name' => 'Däm Wiki singe Name:',
'config-site-name-help' => 'Dä douch em Tittel vun de Brauserfinstere un aan ätlije andere Shtälle op.',
'config-site-name-blank' => 'Donn ene Name för di Sait aanjävve.',
@@ -7366,9 +9595,10 @@ De kanns dat Fäld ävver och läddesch lohße.',
'config-subscribe' => 'Donn de [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce <i lang="en">e-mail</i>-Leß met de Aanköndijunge vum MediaWiki] abonnere.',
'config-subscribe-help' => 'Do kumme bloß winnish Meddeilunge un di jonn övver neu Versiohne vom MediaWiki un weeshtejje Saache vun däm sing Sesherheit.
Do sullts se abbonneere, un Ding MediWiki_Projramme op der neue Shtand bränge, wann neu Version eruß kumme.',
+ 'config-subscribe-noemail' => 'Do has versöhk, der ohne en Addräß för Ding <i lang="en">e-mail<i> aanzejävve, de Aanköndijonge för Aanköndijunge för neue Versione ze abboneere. Jivv en Addräß aan, wann De di Aanköndijonge hann wells.',
'config-almost-done' => 'Do bes beinah dorsh!
Do künnts jez der Räß vun de einzel Enshtellunge övverjonn, un et Wiki tiräktemang fäädesch opsäze.',
- 'config-optional-continue' => 'Wells De noch mieh Frore jeshtallt krijje un noch mieh Enshtällunge maache?',
+ 'config-optional-continue' => 'De wells noch mieh Frore jeshtallt krijje un noch mieh Enshtällunge maache?',
'config-optional-skip' => 'Nä, lohß dä Ömshtand, donn eifarr_et Wiki opsäze.',
'config-profile' => 'Enshtällunge för de Metmaacher ier Rääschte:',
'config-profile-wiki' => 'E tradizjonäll offe Wiki',
@@ -7389,23 +9619,22 @@ Esu häß De de Wahl:
'''{{int:config-profile-private}}''' kann nur lässe, wäh en et Wiki zohjelohße es, un desellve Jropp kann uch schrieve.
-Noch ander un un opwändijere Enshtellunge för de Rääschte sin müjjelesch, wann et Wiki ens aam Loufe es. Loor Der doför de [http://www.mediawiki.org/wiki/Manual:User_rights zopaß Hölp em Handbooch] aan.",
+Noch ander un un opwändijere Enshtellunge för de Rääschte sin müjjelesch, wann et Wiki ens aam Loufe es. Loor Der doför de [//www.mediawiki.org/wiki/Manual:User_rights zopaß Hölp em Handbooch] aan.",
'config-license' => 'Urhävverrääsch un Lizänz:',
'config-license-none' => 'Kein Fooßreih övver de Lizänz',
'config-license-cc-by-sa' => '<i lang="en">Creative Commons</i> Der Name moß jenannt sin, et Wiggerjävve es zohjelohße onger dersellve Bedengunge',
'config-license-cc-by-nc-sa' => '<i lang="en">Creative Commons</i> Nit för e Jeschäff ze maache, et Wiggerjävve es zohjelohße unger dersellve Bedengunge',
- 'config-license-cc-0' => '<i lang="en">Creative Commons</i> „Noll“',
- 'config-license-gfdl-old' => 'De <i lang="en">GNU</i>-Lizänz för frei Dokemäntazjuhne Version 1.2',
- 'config-license-gfdl-current' => 'De <i lang="en">GNU</i>-Lizänz för frei Dokemäntazjuhne, Version 1.3 udder en späädere',
+ 'config-license-cc-0' => '<i lang="en">Creative Commons</i> „Noll“ (jemeinfrei udder Pablic Domain)',
+ 'config-license-gfdl' => 'De <i lang="en">GNU</i>-Lizänz för frei Dokemäntazjuhne, Version 1.3 udder en späädere',
'config-license-pd' => 'Allmende (jemeinfrei, <i lang="en">public domain</i>)',
'config-license-cc-choose' => 'En <i lang="en">Creative Commons</i> Lizänz, sellver ußjesöhk:',
'config-license-help' => "Ättlijje öffentleje Wikis donn iehr Beidrääsh onger en [http://freedomdefined.org/Definition frei Lizänz] shtelle.
Dat hellef, e Jeföhl vun Jemeinsamkeid opzeboue, un op lange Seesh emmer wider Beidrääsch ze krijje.
Dat es nit onbedengk nüüdesh för e Jeschäffs- udder Privaat_Wiki.
-Wä Stöcke uß de Wikipedia bruche well, un han well, dat de Wikipedia uss_em eije Wiki jät övvernämme kann, sullt mer „'''<i lang=\"en\">Creative Commons</i>, dem Schriever singe Name moß jenannt wääde, un Wiggerjävve zoh dersellve Bedengunge es zohjelohße'''“ ußwähle.
+Wä Stöcke uß de Wikipedia bruche well, un han well, dat de Wikipedia uss_em eije Wiki jät övvernämme kann, sullt „'''<i lang=\"en\">Creative Commons</i>, dem Schriever singe Name moß jenannt wääde, un Wiggerjävve zoh dersellve Bedengunge es zohjelohße'''“ ußwähle.
-De su jenannte '''<i lang=\"en\">GNU Free Documentation License</i>''' (de freije Lizänz för Dokemäntazjuhne vun dä GNU) sen de ahle Lizänzbedenonge vun de Wikipedia. Se es emmer noch in Odenong un jöltesch, ävver se hädd e paa Eijeschaffte, die et Wiggerjävve, et widder Verwände un et Ußlääje schwieeresch maache.",
+De su jenannte '''<i lang=\"en\">GNU Free Documentation License</i>''' (de freije Lizänz för Dokemäntazjuhne vun dä GNU) sen de ahle Lizänzbedenonge vun de Wikipedia. Se es emmer noch in Odenong un jöltesch, ävver se es schwer ze vershtonn un et Wiggerjävve un widder Verwände es manshmool schwieeresch domet.",
'config-email-settings' => 'Enschtellunge för de <i lang="en">e-mail</i>',
'config-enable-email' => 'De <i lang="en">e-mail</i> noh druße zohlohße',
'config-enable-email-help' => 'Sulle <i lang="en">e-mails</i> zohjelohße sin, moß mer, domet et noher flupp, de [http://www.php.net/manual/en/mail.configuration.php Enschtellunge em PHP för de <i lang="en">e-mails</i>] zopaß jemaat han.
@@ -7427,7 +9656,7 @@ Vill ẞöövere för de <i lang="en">e-mail</i> welle winnischßdens ene jölti
'config-upload-settings' => 'Belder un Datteie huh laade',
'config-upload-enable' => 'Belder un Datteie huh laade zohlohße',
'config-upload-help' => 'Datteije huh ze laade künnt e Risiko för dem ẞööver singe Sescherheit sin.
-Mieh doh drövver kam_mer em [http://www.mediawiki.org/wiki/Manual:Security Kapitel övver de Sescherheit] em Handbooch lässe.
+Mieh doh drövver kam_mer em [//www.mediawiki.org/wiki/Manual:Security Kapitel övver de Sescherheit] em Handbooch lässe.
Öm et Huhlaade zohzelohße donn de Rääschde för der Zohjreff op dat Ongerverzeischneß <code lang="en">images</code> em MediaWiki singem Houpverzeischneß esu enshtälle, dat et Webßööverprojramm doh Datteije un Verzeischneße eren schrieve kann.
Donoh donn heh di Saach zohlohße.',
@@ -7440,7 +9669,7 @@ Donn e zopaß Logo huh laade, un donn däm sing URL heh endraare.
Wells De kei Logo han, draach heh nix en.',
'config-instantcommons' => 'Donn <i lang="en">InstantCommons</i> zohlohße.',
- 'config-instantcommons-help' => '<i lang="en">[http://www.mediawiki.org/wiki/InstantCommons InstantCommons]</i> es en Eijeschaff, di et för Wikis müjjelesch määt, Belder, Tondatteie un ander Meedijedatteie enzebenge, di op dä Webßait vun de <i lang="en">[http://commons.wikimedia.org/ Wikimedia Commons]</i> ongerjebraat sin. Öm dat noze ze künne, moß dä ẞööver vum MediaWiki en Verbendung nohm Internet opnämme künne.
+ 'config-instantcommons-help' => '<i lang="en">[//www.mediawiki.org/wiki/InstantCommons InstantCommons]</i> es en Eijeschaff, di et för Wikis müjjelesch määt, Belder, Tondatteie un ander Meedijedatteie enzebenge, di op dä Webßait vun de <i lang="en">[//commons.wikimedia.org/ Wikimedia Commons]</i> ongerjebraat sin. Öm dat noze ze künne, moß dä ẞööver vum MediaWiki en Verbendung nohm Internet opnämme künne.
Mieh Aanjaabe doh drövver un en Aanleidung, wi mer och ander Wikis ußer de <i lang="en">Wikimedia Commons</i> doför enreeschte kann, fengk mer em [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos Handbooch].',
'config-cc-error' => 'Et Ußsöhke övver de <i lang="en">Creative Commons</i> iehr Projramm zum Lizänzbeshtemme hät nix jebraat.
@@ -7449,7 +9678,7 @@ Donn de Lizänz sellver beshtemme.',
'config-cc-not-chosen' => 'Söhk uß, wat för en Lizänz vun de <i lang="en">Creative Commons</i> De han wells, un donn dann op „<i lang="en">proceed</i>“ klecke.',
'config-advanced-settings' => 'Fottjeschredde Enshtellunge',
'config-cache-options' => 'Enshtällunge för et Faßhallde vun Objäkte em Zweschsheisher:',
- 'config-cache-help' => 'Objäkte em Zwescheshpeisher faßhallde, dat heiß öff jebruchte Daate en der <i lang="en">cache</i> donn, bruche mer, öm MediaWiki flöcker ze maache,
+ 'config-cache-help' => 'Objäkte em Zwescheshpeisher faßhallde, dat heiß öff jebruchte Daate en der <i lang="en">cache</i> donn, bruche mer, öm MediaWiki flöcker ze maache,
Meddlere un jruuße Wiki-ẞaits sullte dat onbedengk ußnoze, un och bei klein Wikis weed mer et jood merke.',
'config-cache-none' => 'Keine Zweschshpeijsher (Et jeid_em Wiki nix verloore, ußer velleish Schnälleshkeid wann vill loss es)',
'config-cache-accel' => 'Ene Objäk<i lang="en">cache</i> vum PHP (<i lang="en">APC</i>, <i lang="en">eAccelerator</i>, <i lang="en">XCache</i>, udder <i lang="en">WinCache</i>)',
@@ -7477,6 +9706,7 @@ Wann De noch Änderonge maache wells, dann kleck op „{{int:config-back}}“.',
'config-install-step-failed' => 'donävve jejange',
'config-install-extensions' => 'Zohsazprojramme enjeschloße',
'config-install-database' => 'Ben de Daatebangk aam ennreeschte.',
+ 'config-install-schema' => 'Dat Schema en dä Daatebank weed aanjelaat.',
'config-install-pg-schema-not-exist' => 'Dat Scheema för <i lang="en">PostgreSQL</i> es nit doh.',
'config-install-pg-schema-failed' => 'Et Tabälle-Opsäze es donävve jejange.
Donn doför sorrje, dat dä Daatebangk-Aanwänder „$1“ en dämm Daatebangkscheema „$2“ schrieve kann.',
@@ -7488,6 +9718,9 @@ Donn doför sorrje, dat dä Daatebangk-Aanwänder „$1“ en dämm Daatebangksc
'config-install-user-alreadyexists' => 'Dä Aanwender „$1“ för dä Zohjref op de Daatebangk kann nit aanjelaat wääde, et jidd_en alld.',
'config-install-user-create-failed' => 'Dä Aanwender „$1“ för dä Zohjref op de Daatebangk kunnt nit aanjelaat wääde, wäje: <code lang="en">$2</code>',
'config-install-user-grant-failed' => 'Däm Daatebangk-Aanwänder sing Beräschtijunge ze säze däät nit fluppe wääje: $2',
+ 'config-install-user-missing' => 'Dä aanjejovve Metmaacher „$1“ jidd_et nit.',
+ 'config-install-user-missing-create' => '{{int:Config-install-user-missing}}
+Donn e Höhksche en et Käßje „{{int:Createaccount}}“ onge, wann De dä aanlääje wells.',
'config-install-tables' => 'Ben de Daatebangk-Tabälle aam aanlääje.',
'config-install-tables-exist' => "'''Opjepaß''': Et schingk, dem MediaWiki sing Tabälle sin alt doh.
Doh dom_mer nix aanlääje.",
@@ -7500,7 +9733,8 @@ Doh dom_mer nix dobei.",
'config-install-keys' => 'Jeheime Schlößel wääde opjebout.',
'config-insecure-keys' => "'''Opjepaß:''' {{PLURAL:$2|Ene jeheime Schlößel|Jeheim Schlößele|Keine jeheime Schlößel}} ($1) {{PLURAL:$2|es|sin|es}} automattesch aanjelaat woode. {{PLURAL:$2|Dä es|Di sin|Hä es}} ävver nit onbedengk janz sescher. Övverlääsch Der, {{PLURAL:$2|dä|di|en}} norr_ens vun Hand ze ändere.",
'config-install-sysop' => 'Dä Zohjang för der Wiki-Köbes weed aanjelaat.',
- 'config-install-subscribe-fail' => 'Mer künne de <i lang="en">e-mail</i>-Leß <code lang="en">mediawiki-announce</code> nit abonneere.',
+ 'config-install-subscribe-fail' => 'Mer künne de <i lang="en">e-mail</i>-Leß <code lang="en">mediawiki-announce</code> nit abonneere: $1',
+ 'config-install-subscribe-notpossible' => '<code lang="en">cURL</code> es nit enstalleed un <code lang="en">allow_url_fopen</code>es nit doh.',
'config-install-mainpage' => 'Ben de Houpsigg med enem shtandatmääßeje Enhald aam aanlääje',
'config-install-extension-tables' => 'Ben Datebangk-Tabälle för de Zohsazprojramme aam ennreschte',
'config-install-mainpage-failed' => 'Kunnt de Houpsigg nit afshpeishere: $1',
@@ -7516,19 +9750,48 @@ Wann domet jet nit jeflupp hät, udder De di Dattei norr_ens han wells, donn op
\$3
-'''Opjepaß''': Wann De dat jez nit deihß es Alles verschött wat De jemaat häs, weil di Dattei fott es en däm Momang, woh heh dat Projamm aam Engk es.
+'''Opjepaß''': Wann De dat jez nit deihß, es alles verschött, wat De bes jöz enjejovve häs, weil di Dattei fott es en däm Momang, woh heh dat Projamm aam Engk es.
Wann De mem Ronger- un widder Huhlaade fäädesh bes, kanns De '''[\$2 en Ding Wiki jonn]'''.",
- 'config-download-localsettings' => 'Donn de Dattei <code lang="en">LocalSettings.php</code> eronger laade',
+ 'config-download-localsettings' => 'Donn di Dattei <code lang="en">LocalSettings.php</code> eronger laade',
'config-help' => 'Hölp',
+ 'mainpagetext' => "'''MediaWiki es jetz enstalleet.'''",
+ 'mainpagedocfooter' => 'Luur en et (änglesche) [//meta.wikimedia.org/wiki/Help:Contents Handboch] wann De wesse wells wie de Wiki-Soffwär jebruch un bedeent wääde muss.
+
+== För dä Aanfang ==
+Dat es och all op Änglesch:
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
);
-/** Kurdish (Latin) (Kurdî (Latin))
+/** Kurdish (Latin script) (‪Kurdî (latînî)‬)
* @author George Animal
*/
$messages['ku-latn'] = array(
'config-page-language' => 'Ziman',
'config-page-name' => 'Nav',
+ 'mainpagetext' => "'''MediaWiki serketî hate çêkirin.'''",
+ 'mainpagedocfooter' => 'Alîkarî ji bo bikaranîn û guherandin yê datayê Wîkî tu di bin [//meta.wikimedia.org/wiki/Help:Contents pirtûka alîkarîyê ji bikarhêneran] da dikarê bibînê.
+
+== Alîkarî ji bo destpêkê ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lîsteya varîyablên konfîgûrasîyonê]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lîsteya e-nameyên versyonên nuh yê MediaWiki]',
+);
+
+/** Ladino (Ladino)
+ * @author Universal Life
+ */
+$messages['lad'] = array(
+ 'mainpagetext' => "'''MedyaViki ya se kureó con reuxitá.'''",
+ 'mainpagedocfooter' => 'Konsulta la [//meta.wikimedia.org/wiki/Ayudo:Contenido Guía de usador] para tomar enformasyones encima de como usar el lojikal viki.
+
+== En Empeçando ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings La lista de los arreglamientos de la konfiggurasyón]
+* [//www.mediawiki.org/wiki/Manual:FAQ/lad DDS de MedyaViki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce La lista de las letrales (e-mail) de MedyaViki]',
);
/** Luxembourgish (Lëtzebuergesch)
@@ -7570,10 +9833,10 @@ Dir fannt en am LocalSettings.php.",
'config-welcome' => "=== Iwwerpréifung vum Installatiounsenvironnement ===
Et gi grondsätzlech Iwwerpréifunge gemaach fir ze kucken ob den Environnment gëeegent ass fir MediaWiki z'installéieren.
Dir sollt d'Resultater vun dëser Iwwerpréifung ugi wann Dir während der Installatioun Hëllef braucht.",
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWiki Haaptsäit]
-* [http://www.mediawiki.org/wiki/Help:Contents Benotzerguide]
-* [http://www.mediawiki.org/wiki/Manual:Contents Guide fir Administrateuren]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]
+ 'config-sidebar' => '* [//www.mediawiki.org MediaWiki Haaptsäit]
+* [//www.mediawiki.org/wiki/Help:Contents Benotzerguide]
+* [//www.mediawiki.org/wiki/Manual:Contents Guide fir Administrateuren]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ]
----
* <doclink href=Readme>Liest dëst</doclink>
* <doclink href=ReleaseNotes>Informatioune vun der aktueller Versioun</doclink>
@@ -7584,15 +9847,23 @@ Dir kënnt MediaWiki installéieren.',
'config-env-bad' => 'Den Environnement gouf iwwerpréift.
Dir kënnt MediWiki net installéieren.',
'config-env-php' => 'PHP $1 ass installéiert.',
+ 'config-env-php-toolow' => 'PHP $1 ass installéiert.
+Awer MediaWiki brauch PHP $2 oder méi héich.',
'config-unicode-using-utf8' => "Fir d'Unicode-Normalisatioun gëtt dem Brion Vibber säin <code>utf8_normalize.so</code> benotzt.",
- 'config-no-db' => 'Et konnt kee passenden Datebank-Driver fonnt ginn!',
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] ass installéiert',
+ 'config-no-db' => "Et konnt kee passenden Datebank-Driver fonnt ginn! Dir musst een Datebank-Driver fir PHP installéieren.
+Dës Datebank-Type ginn ënnerstëtzt: $1.
+
+Wann Dir op engem gesharte Server sidd, da frot Ären Hosting-Provider fir de passenden Datebank-Driver z'installéieren.
+Wann Dir PHP selwer compiléiert hutt, da reconfiguréiert en mat dem ageschalten Datebank-Client, zum Beispill an deem Dir <code>./configure --with-mysql</code> benotzt.
+Wann Dir PHP vun engem Debian oder Ubuntu Package aus installéiert hutt, da musst Dir och den php5-mysql Modul installéieren.",
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] ass installéiert',
'config-apc' => '[http://www.php.net/apc APC] ass installéiert',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] ass installéiert',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] ass installéiert',
'config-diff3-bad' => 'GNU diff3 gouf net fonnt.',
'config-no-uri' => "'''Feeler:''' Déi aktuell URI konnt net festgestallt ginn.
Installatioun ofgebrach.",
+ 'config-using-server' => 'De Servernumm "<nowiki>$1</nowiki>" gëtt benotzt.',
'config-db-type' => 'Datebanktyp:',
'config-db-host-oracle' => 'Datebank-TNS:',
'config-db-wiki-settings' => 'Dës Wiki identifizéieren',
@@ -7619,10 +9890,13 @@ Wann et de Kont net gëtt, a wann den Installatiouns-Kont genuch Rechter huet, g
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
+ 'config-type-ibm_db2' => 'IBM DB2',
+ 'config-support-ibm_db2' => '* $1 ass eng kommerziell Firma fir Datebanken',
'config-header-mysql' => 'MySQL-Astellungen',
'config-header-postgres' => 'PostgreSQL-Astellungen',
'config-header-sqlite' => 'SQLite-Astellungen',
'config-header-oracle' => 'Oracle-Astellungen',
+ 'config-header-ibm_db2' => 'IBM DB2-Astellungen',
'config-invalid-db-type' => 'Net valabelen Datebank-Typ',
'config-missing-db-name' => 'Dir musst en Numm fir de Wäert "Numm vun der Datebank" uginn',
'config-missing-db-server-oracle' => 'Dir musst e Wäert fir "Datebank-TNS" uginn',
@@ -7633,6 +9907,10 @@ Benotzt keng Espacen a Bindestrécher.
E gëtt fir den Numm vum SQLite Date-Fichier benotzt.',
'config-sqlite-readonly' => 'An de Fichier <code>$1</code> Kann net geschriwwe ginn.',
'config-sqlite-cant-create-db' => 'Den Datebank-Fichier <code>$1</code> konnt net ugeluecht ginn.',
+ 'config-upgrade-done-no-regenerate' => "D'Aktualisatioun ass ofgeschloss.
+
+Dir kënnt elo [$1 ufänken Är Wiki ze benotzen]",
+ 'config-regenerate' => 'LocalSettings.php regeneréieren →',
'config-db-web-account' => 'Datebankkont fir den Accès iwwer de Web',
'config-db-web-account-same' => 'Dee selwechte Kont wéi bei der Installatioun benotzen',
'config-db-web-create' => 'De Kont uleeë wann et e net scho gëtt',
@@ -7652,6 +9930,8 @@ E gëtt fir den Numm vum SQLite Date-Fichier benotzt.',
'config-admin-name' => 'Ären Numm:',
'config-admin-password' => 'Passwuert:',
'config-admin-password-confirm' => 'Passwuert confirméieren:',
+ 'config-admin-help' => 'Gitt w.e.g. Äre gewënschte Benotzernumm hei an, zum Beispill "Jang Muller".
+Dësen Numm gëtt da gebraucht fir sech an d\'Wiki anzeloggen.',
'config-admin-name-blank' => 'Gitt e Benotzernumm fir den Administrateur an.',
'config-admin-name-invalid' => 'De spezifizéierte Benotzernumm "<nowiki>$1</nowiki>" ass net valabel.
Spezifizéiert en anere Benotzernumm.',
@@ -7686,6 +9966,7 @@ Dir kënnt elo déi Astellungen déi nach iwwreg sinn iwwersprangen an d'Wiki el
'config-upload-enable' => 'Eropluede vu Fichieren aschalten',
'config-upload-deleted' => 'Repertoire fir geläschte Fichieren:',
'config-logo' => 'URL vum Logo:',
+ 'config-instantcommons' => '"Instant Commons" aktivéieren',
'config-cc-again' => 'Nach eng kéier eraussichen...',
'config-advanced-settings' => 'Erweidert Astellungen',
'config-extensions' => 'Erweiderungen',
@@ -7697,12 +9978,154 @@ Dir kënnt elo déi Astellungen déi nach iwwreg sinn iwwersprangen an d'Wiki el
'config-install-user' => 'Datebank Benotzer uleeën',
'config-install-user-alreadyexists' => 'De Benotzer "$1" gëtt et schonn!',
'config-install-user-create-failed' => 'D\'Opmaache vum Benotzer "$1" huet net fonctionnéiert: $2',
+ 'config-install-user-missing' => 'De Benotzer "$1" deen ugi gouf gëtt et net.',
'config-install-tables' => 'Tabelle ginn ugeluecht',
'config-install-interwiki' => 'Standard Interwiki-Tabell gëtt ausgefëllt',
'config-install-interwiki-list' => 'De Fichier <code>interwiki.list</code> gouf net fonnt.',
'config-install-stats' => 'Initialisatioun vun de Statistiken',
'config-install-keys' => 'Generéiere vum Geheimschlëssel',
'config-install-sysop' => 'Administrateur Benotzerkont gëtt ugeluecht',
+ 'config-install-mainpage-failed' => "D'Haaptsäit konnt net dragesat ginn: $1",
+ 'config-download-localsettings' => 'LocalSettings.php eroflueden',
+ 'config-help' => 'Hëllef',
+ 'mainpagetext' => "'''MediaWiki gouf installéiert.'''",
+ 'mainpagedocfooter' => "Kuckt w.e.g. [//meta.wikimedia.org/wiki/Help:Contents d'Benotzerhandbuch] fir den Interface ze personnaliséieren.
+
+== Starthëllefen ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Hëllef bei der Konfiguratioun]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglëscht vun neie MediaWiki-Versiounen]",
+);
+
+/** Lingua Franca Nova (Lingua Franca Nova) */
+$messages['lfn'] = array(
+ 'mainpagetext' => "'''MediaWiki es aora instalada.'''",
+ 'mainpagedocfooter' => 'Atenda la [//meta.wikimedia.org/wiki/Help:Contents Gida per Usores] per informa supra la usa de la programa de vici.
+
+== Comensa ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista de ajustas de la desinia]
+* [//www.mediawiki.org/wiki/Manual:FAQ Demandas comun de MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista per receta anunsias de novas supra MediaWiki]',
+);
+
+/** Ganda (Luganda)
+ * @author Kizito
+ */
+$messages['lg'] = array(
+ 'mainpagetext' => 'MediaWiki kati ewangidwa ku sisitemu yo',
+ 'mainpagedocfooter' => "Okuyiga ku nkozesa ya sofutiweya owa wiki, kebera [//meta.wikimedia.org/wiki/Help:Contents Okulagirira Abakozesa].
+
+== Amagezi agakuyamba okutandika ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lukalala lw'eby'enteekateeka yo]
+* [//www.mediawiki.org/wiki/Manual:FAQ Ebiter'okubuuzibwa ku MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Wewandise ofunenga amawulire aga email ag'ebifa ku MediaWiki]",
+);
+
+/** Limburgish (Limburgs) */
+$messages['li'] = array(
+ 'mainpagetext' => "'''MediaWiki software succesvol geïnsjtalleerd.'''",
+ 'mainpagedocfooter' => "Raodpleeg de [//meta.wikimedia.org/wiki/NL_Help:Inhoudsopgave handjleiding] veur informatie euver 't gebroek van de wikisoftware.
+
+== Mieë hölp ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lies mit instellinge]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki VGV (FAQ)]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki mailinglies veur nuuj versies]",
+);
+
+/** Lao (ລາວ) */
+$messages['lo'] = array(
+ 'mainpagetext' => "'''ຕິດຕັ້ງມີເດàºàº§àº´àºàº´àº™àºµà»‰àºªàº³à»€àº¥àº±àº”à»àº¥à»‰àº§.'''",
+);
+
+/** Lithuanian (Lietuvių) */
+$messages['lt'] = array(
+ 'mainpagetext' => "'''MediaWiki sėkmingai įdiegta.'''",
+ 'mainpagedocfooter' => 'Informacijos apie wiki programinės įrangos naudojimą, ieškokite [//meta.wikimedia.org/wiki/Help:Contents žinyne].
+
+== Pradžiai ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Konfigūracijos nustatymų sąrašas]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki DUK]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki pranešimai paštu apie naujas versijas]',
+);
+
+/** Latvian (Latviešu)
+ * @author GreenZeb
+ */
+$messages['lv'] = array(
+ 'config-back' => '↠Atpakaļ',
+ 'config-continue' => 'TurpinÄt →',
+ 'config-page-language' => 'Valoda',
+ 'config-page-welcome' => 'Laipni lūdzam MediaWiki!',
+ 'config-page-dbconnect' => 'Savienoties ar datubÄzi',
+ 'config-page-upgrade' => 'AtjauninÄt paÅ¡reizÄ“jo instalÄciju',
+ 'config-page-dbsettings' => 'DatubÄzes iestatÄ«jumi',
+ 'config-page-name' => 'VÄrds',
+ 'config-page-options' => 'Iespējas',
+ 'config-page-install' => 'Instalēt',
+ 'config-page-complete' => 'Pabeigts!',
+ 'config-page-restart' => 'PÄrstartÄ“t instalÄciju',
+ 'config-page-readme' => 'Lasīt mani',
+ 'config-page-releasenotes' => 'InformÄcija par laidienu',
+ 'mainpagetext' => "'''MediaWiki veiksmīgi ieinstalēts'''",
+ 'mainpagedocfooter' => 'Izlasi [//meta.wikimedia.org/wiki/Help:Contents LietotÄja pamÄcÄ«bu], lai iegÅ«tu vairÄk informÄcijas par Wiki programmatÅ«ras lietoÅ¡anu.
+
+== Pirmie soļi ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings KonfigurÄcijas iespÄ“ju saraksts]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki J&A]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ParakstÄ«ties uz paziņojumiem par jaunÄm MediaWiki versijÄm]',
+);
+
+/** Literary Chinese (文言) */
+$messages['lzh'] = array(
+ 'mainpagetext' => "'''共筆臺已立'''",
+ 'mainpagedocfooter' => "欲識維基,見[//meta.wikimedia.org/wiki/Help:Contents User's Guide]
+
+== 始 ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Lazuri (Lazuri)
+ * @author Bombola
+ */
+$messages['lzz'] = array(
+ 'mainpagetext' => "'''Mediawiki dido k'ai ik'idu.'''",
+ 'mainpagedocfooter' => "Vik'i şeni muç'o ixmarinen ya mutxanepe oguru şeni [//meta.wikimedia.org/wiki/Help:Contents oxmaruşi rexberis] o3'k'edit.
+
+== Ağani na gyoç’k’u maxmarepe ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Ok'iduÅŸi ayarepeÅŸi liste]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki P'anda Na-k'itxu K'itxalape]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-mailepeÅŸiÅŸ liste]",
+);
+
+/** Maithili (मैथिली)
+ * @author Umeshberma
+ */
+$messages['mai'] = array(
+ 'mainpagetext' => "'''मीडियाविकी नीक जकाठपà¥à¤°à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ भेल।'''",
+ 'mainpagedocfooter' => "समà¥à¤ªà¤°à¥à¤• करू [//meta.wikimedia.org/wiki/Help:Contents User's Guide] विकी तंतà¥à¤°à¤¾à¤‚शक पà¥à¤°à¤¯à¥‹à¤—क जानकारी लेल।
+
+==पà¥à¤°à¤¾à¤°à¤®à¥à¤­ कोना करी==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Moksha (Мокшень) */
+$messages['mdf'] = array(
+ 'mainpagetext' => "'''МедиаВикить арафтозь лац.'''",
+ 'mainpagedocfooter' => 'Ванк [//meta.wikimedia.org/wiki/Help:Contents ВетÑмовал Тиинди] Ñ‚ÑÑа ули кода ÑÐ¾Ð´Ð°Ð¼Ñ Ð’Ð¸ÐºÐ¸ програпнень ÑÑ€ÑвикÑнень колга.
+
+== ЭрÑÐ²Ð¸ÐºÑ ÑюлмафкÑне ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings ВаÑьфневи арафнематнень кÑрькÑÑÑŒ]
+* [//www.mediawiki.org/wiki/Manual:FAQ МедиаВикить СидеÑта Кеподеви КизефкÑне]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce МедиаВикить од верзиÑтнень колга кулÑнь пачфтема]',
);
/** Malagasy (Malagasy)
@@ -7751,8 +10174,35 @@ $messages['mg'] = array(
'config-install-user' => "Famoronana mpapiasan'ny banky angona",
'config-install-tables' => 'Famoronana tabilao',
'config-install-stats' => 'Fanombohana ny statistika',
- 'config-install-keys' => 'Fanamboarana lakile miafina$',
+ 'config-install-keys' => 'Fanamboarana lakile miafina',
'config-help' => 'fanoroana',
+ 'mainpagetext' => "'''Tafajoro soa aman-tsara ny rindrankajy Wiki.'''",
+ 'mainpagedocfooter' => "Vangio ny [//meta.wikimedia.org/wiki/Aide:Contenu Fanoroana ho an'ny mpampiasa] ra te hitady fanoroana momba ny fampiasan'ity rindrankajy ity.
+
+== Hanomboka amin'ny MediaWiki ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lisitra ny paramètre de configuration]
+* [//www.mediawiki.org/wiki/Manual:FAQ/fr FAQ momba ny MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Resaka momba ny fizaràn'ny MediaWiki]",
+);
+
+/** Eastern Mari (Олык Марий) */
+$messages['mhr'] = array(
+ 'mainpagetext' => "'''MediaWiki Ñай шындыме.'''",
+);
+
+/** Minangkabau (Baso Minangkabau)
+ * @author Luthfi94
+ */
+$messages['min'] = array(
+ 'mainpagetext' => "'''MediaWiki alah tapasang jo sukses'''.",
+ 'mainpagedocfooter' => 'Silakan baco [//www.mediawiki.org/wiki/Help:Contents/id Panduan Pangguno] untuak caro panggunoan parangkaik lunak wiki iko.
+
+== Mamulai panggunoan ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings/id Dafta pangaturan konfigurasi]
+* [//www.mediawiki.org/wiki/Manual:FAQ/id Dafta patanyoan nan acok diajukan manganai MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Milis rilis MediaWiki]',
);
/** Macedonian (МакедонÑки)
@@ -7822,10 +10272,10 @@ $1
Повеќе информации ќе најдете во текÑтот на ГÐУ-овата општа јавна лиценца.
Би требало да имате добиено <doclink href=Copying>примерок од ГÐУ-овата општа јавна лиценца</doclink> заедно Ñо програмов; ако немате добиено, тогаш пишете ни на Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. или [http://www.gnu.org/copyleft/gpl.html прочитајте ја тука].",
- 'config-sidebar' => '* [http://www.mediawiki.org Домашна Ñтраница на МедијаВики]
-* [http://www.mediawiki.org/wiki/Help:Contents Водич за кориÑници]
-* [http://www.mediawiki.org/wiki/Manual:Contents Водич за админиÑтратори]
-* [http://www.mediawiki.org/wiki/Manual:FAQ ЧПП]
+ 'config-sidebar' => '* [//www.mediawiki.org Домашна Ñтраница на МедијаВики]
+* [//www.mediawiki.org/wiki/Help:Contents Водич за кориÑници]
+* [//www.mediawiki.org/wiki/Manual:Contents Водич за админиÑтратори]
+* [//www.mediawiki.org/wiki/Manual:FAQ ЧПП]
----
* <doclink href=Readme>Прочитај ме</doclink>
* <doclink href=ReleaseNotes>Белешки за изданието</doclink>
@@ -7842,17 +10292,16 @@ $1
'config-unicode-using-intl' => 'Со додатокот [http://pecl.php.net/intl intl PECL] за уникодна нормализација.',
'config-unicode-pure-php-warning' => "'''Предупредување''': Додатокот [http://pecl.php.net/intl intl PECL] не е доÑтапен за врши уникодна нормализација, враќајќи Ñе на бавна примена на чиÑÑ‚ PHP.
-Ðко имате виÑокопрометно мрежно меÑто, тогаш ќе треба да прочитате повеќе за [http://www.mediawiki.org/wiki/Unicode_normalization_considerations уникодната нормализација].",
+Ðко имате виÑокопрометно мрежно меÑто, тогаш ќе треба да прочитате повеќе за [//www.mediawiki.org/wiki/Unicode_normalization_considerations уникодната нормализација].",
'config-unicode-update-warning' => "'''Предупредување''': ИнÑталираната верзија на обвивката за уникодна нормализација кориÑти поÑтара верзија на библиотеката на [http://site.icu-project.org/ проектот ICU].
-За да кориÑтите Уникод, ќе треба да направите [http://www.mediawiki.org/wiki/Unicode_normalization_considerations надградба].",
- 'config-no-db' => 'Ðе можев да пронајдам Ñоодветен двигател за базата на податоци!',
- 'config-no-db-help' => 'Ќе треба да инÑталирате двигател за базата на податоци за PHP.
-Поддржани Ñе Ñледниве типови на бази: $1.
+За да кориÑтите Уникод, ќе треба да направите [//www.mediawiki.org/wiki/Unicode_normalization_considerations надградба].",
+ 'config-no-db' => 'Ðе можев да пронајдам Ñоодветен двигател за базата на податоци! Ќе треба да инÑталирате двигател за базата на податоци за PHP.
+Поддржани Ñе Ñледниве типови на бази $1.
Ðко Ñте на заедничко (Ñподелено) вдомување, побарајте му на вдомителот да инÑталира Ñоодветен двигател за базата.
Ðко вие Ñамите го ÑоÑтавивте ова PHP, Ñменете ги поÑтавките така што ќе овозможите клиент на базата - на пр. Ñо кодот <code>./configure --with-mysql</code>.
Ðко инÑталиравте PHP од пакет на Debian или Ubuntu, тогаш ќе треба да го инÑталирате и модулот php5-mysql.',
- 'config-no-fts3' => "'''Предупредување''': SQLite iе ÑоÑтавен без модулот [http://sqlite.org/fts3.html FTS3] - за оваа база нема да има можноÑÑ‚ за пребарување.",
+ 'config-no-fts3' => "'''Предупредување''': SQLite iе ÑоÑтавен без модулот [//sqlite.org/fts3.html FTS3] - за оваа база нема да има можноÑÑ‚ за пребарување.",
'config-register-globals' => "'''Предупредување: МожноÑта <code>[http://php.net/register_globals register_globals]</code> за PHP е овозможена.'''
'''Оневозможете ја ако е можно.'''
МедијаВики ќе работи, но опÑлужувачот ви е изложен на безбедноÑни ризици.",
@@ -7881,12 +10330,14 @@ $1
'config-memory-bad' => "'''Предупредување:''' <code>memory_limit</code> за PHP изнеÑува $1.
Ова е веројатно премалку.
ИнÑталацијата може да не уÑпее!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] е инÑталиран',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] е инÑталиран',
'config-apc' => '[http://www.php.net/apc APC] е инÑталиран',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] е инÑталиран',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] е инÑталиран',
- 'config-no-cache' => "'''Предупредување:''' Ðе можев да го најдам [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] или [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''Предупредување:''' Ðе можев да го најдам [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] или [http://www.iis.net/download/WinCacheForPhp WinCache].
Кеширањето на објекти не е овозможено.",
+ 'config-mod-security' => "'''Предупредување''': на вашиот опÑлужувач има овозможено [http://modsecurity.org/ mod_security]. Ðко не е поÑтавено како што треба, ова може да предизвика проблеми кај МедијаВики и други програми што им овозможуваат на кориÑниците да објавуваат произволни Ñодржини.
+Погледнете ја [http://modsecurity.org/documentation/ mod_security документацијата] или обратете Ñе кај домаќинот ако наидете на Ñлучајни грешки.",
'config-diff3-bad' => 'GNU diff3 не е пронајден.',
'config-imagemagick' => 'Пронајден е ImageMagick: <code>$1</code>.
Ðко овозможите подигање, тогаш ќе биде овозможена минијатуризација на Ñликите.',
@@ -7896,19 +10347,27 @@ $1
Минијатуризацијата на Ñликите ќе биде оневозможена.',
'config-no-uri' => "'''Грешка:''' Ðе можев да го утврдам тековниот URI.
ИнÑталацијата е откажана.",
+ '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> е подложна на извршување (пуштање) на произволни Ñкрипти.
-Иако МедијаВики врши безбедноÑни проверки на Ñите подигнати податотеки, ве Ñоветуваме [http://www.mediawiki.org/wiki/Manual:Security#Upload_security да ја затворите оваа безбедноÑна дупка] пред да овозможите подигање.",
+Иако МедијаВики врши безбедноÑни проверки на Ñите подигнати податотеки, ве Ñоветуваме [//www.mediawiki.org/wiki/Manual:Security#Upload_security да ја затворите оваа безбедноÑна дупка] пред да овозможите подигање.",
+ 'config-no-cli-uploads-check' => "'''Предупредување:''' Вашата оÑновна папка за подигања (<code>$1</code>) не е проверена дали е подложна
+произволно извршување на Ñкрипти во текот на инÑталацијата на поÑредникот на повикувачко ниво (CLI).",
'config-brokenlibxml' => 'Вашиот ÑиÑтем има комбинација од PHP и libxml2 верзии и затоа има грешки и може да предизвика Ñкриено раÑипување на податоците кај МедијаВики и други мрежни програми.
-Ðадградете го на PHP 5.2.9 и libxml2 2.7.3 или нивни понови верзии! ПРЕКИÐУВÐÐœ ([http://bugs.php.net/bug.php?id=45996 грешката е заведена во PHP]).',
+Ðадградете го на PHP 5.2.9 и libxml2 2.7.3 или нивни понови верзии! ПРЕКИÐУВÐÐœ ([//bugs.php.net/bug.php?id=45996 грешката е заведена во PHP]).',
'config-using531' => 'МедијаВики не може да Ñе кориÑти Ñо PHP $1 поради грешка кај упатните параметри за <code>__call()</code>.
За да го решите проблемот, надградете го на PHP 5.3.2 или понова верзија, или пак кориÑтете го поÑтариот PHP 5.3.0.',
+ 'config-suhosin-max-value-length' => 'Suhosin е инÑталиран и ја ограничува должината на параметарот GET на $1 bytes. Делот ResourceLoader на МедијаВики ќе ја заобиколува ова граница, но Ñо тоа ќе Ñе влоши делотворноÑта. Ðко е воопшто можно, на suhosin.get.max_value_length треба да го намеÑтите на 1024 или поевеќе во php.ini , и да му ја зададете иÑтата вредноÑÑ‚ на $wgResourceLoaderMaxQueryLength во LocalSettings.php .',
'config-db-type' => 'Тип на база:',
'config-db-host' => 'Домаќин на базата:',
- 'config-db-host-help' => 'Ðко вашата база е на друг опÑлужувач, тогаш тука внеÑете го името на домаќинот илиу IP-адреÑата.
+ 'config-db-host-help' => 'Ðко вашата база е на друг опÑлужувач, тогаш тука внеÑете го името на домаќинот или IP-адреÑата.
+
+Ðко кориÑтите заедничко (Ñподелено) вдомување, тогаш вашиот вдомител треба да го наведе точното име на домаќинот во неговата документација.
-Ðко кориÑтите заедничко (Ñподелено) вдомување, тогаш вашиот вдомител треба да го доде точното име на домаќинот и неговата документација.
+Ðко инÑталирате на опÑлужувач на Windows и кориÑтите MySQL, можноÑта „localhost“ може да не функционира за опÑлужувачкото име. Во тој Ñлучај, обидете Ñе Ñо внеÑување на „127.0.0.1“ како локална IP-адреÑа.
-Ðко инÑталирате на опÑлужувач на Windows и кориÑтите MySQL, можноÑта „localhost“ може да не функционира за опÑлужувачкото име. Во тој Ñлучај, обидете Ñе Ñо внеÑување на „127.0.0.1“ како локална IP-адреÑа',
+Ðко кориÑтите PostgreSQL, оÑтавете го полево празно за да Ñе поврзете преку Unix-приклучок.',
'config-db-host-oracle' => 'TNS на базата:',
'config-db-host-oracle-help' => 'ВнеÑете важечко [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm локално име за поврзување]. Ðа оваа инÑталација мора да Ñ Ð±Ð¸Ð´Ðµ видлива податотеката tnsnames.ora.<br />Ðко кориÑтите клиентÑки библиотеки 10g или понови, тогаш можете да го кориÑтите и методот на иметнување на [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].',
'config-db-wiki-settings' => 'Идентификувај го викиво',
@@ -7949,12 +10408,13 @@ $1
Во '''бинарен режим''', во базата МедијаВики го Ñкладира UTF-8 текÑтот во бинарни полиња.
Ова е поефиканÑно отколку UTF-8 режимот на MySQL бидејќи ви овозможува да го кориÑтите целиот Ñпектар на уникодни знаци.
Во '''UTF-8 режим''', MySQL ќе знае на кој збир знаци припаѓаат вашите податоци, и може Ñоодветно да ги претÑтави и претвори,
-но нема да ви дозволи да Ñкладирате знаци над [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes ОÑновната повеќејазична рамнина].",
+но нема да ви дозволи да Ñкладирате знаци над [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes ОÑновната повеќејазична рамнина].",
'config-mysql-old' => 'Се бара MySQL $1 или поново, а вие имате $2.',
'config-db-port' => 'Порта на базата:',
'config-db-schema' => 'Шема за МедијаВики',
'config-db-schema-help' => 'Оваа шема обично по правило ќе работи нормално.
Сменете ја Ñамо ако знаете дека треба да Ñе Ñмени.',
+ 'config-pg-test-error' => "Ðе можам да Ñе поврзам Ñо базата '''$1''': $2",
'config-sqlite-dir' => 'Папка на SQLite-податоци:',
'config-sqlite-dir-help' => "SQLite ги Ñкладира Ñите податоци во една податотека.
@@ -7972,6 +10432,7 @@ $1
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'МедијаВики ги поддржува Ñледниве ÑиÑтеми на бази на податоци:
$1
@@ -7981,10 +10442,12 @@ $1
'config-support-postgres' => '* $1 е популарен ÑиÑтем на бази на податоци Ñо отворен код кој претÑтавува алтернатива на MySQL ([http://www.php.net/manual/en/pgsql.installation.php како да ÑоÑтавите PHP Ñо поддршка за PostgreSQL]). Може Ñè уште да има некои грешки. па затоа не Ñе препорачува за употреба во производна Ñредина.',
'config-support-sqlite' => '* $1 е леÑен ÑиÑтем за бази на податоци кој е многу добро поддржан. ([http://www.php.net/manual/en/pdo.installation.php Како да ÑоÑтавите PHP Ñо поддршка за SQLite], кориÑти PDO)',
'config-support-oracle' => '* $1 е база на податоци на комерцијално претпријатие. ([http://www.php.net/manual/en/oci8.installation.php Како да ÑоÑтавите PHP Ñо поддршка за OCI8])',
+ 'config-support-ibm_db2' => '* $1 is комерцијална база на податоциза фирми.',
'config-header-mysql' => 'Ðагодувања на MySQL',
'config-header-postgres' => 'Ðагодувања на PostgreSQL',
'config-header-sqlite' => 'Ðагодувања на SQLite',
'config-header-oracle' => 'Ðагодувања на Oracle',
+ 'config-header-ibm_db2' => 'Ðагодувања на IBM DB2',
'config-invalid-db-type' => 'Ðеважечки тип на база',
'config-missing-db-name' => 'Мора да внеÑете значење за параметарот „Име на базата“',
'config-missing-db-host' => 'Мора да внеÑете вредноÑÑ‚ за „Домаќин на базата на податоци“',
@@ -8058,6 +10521,13 @@ chmod a+w $3</pre>',
'config-mysql-engine' => 'Складишен погон:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => "'''Предупредување''': Го одбравте MyISAM како Ñкладишен погон за MySQL. Ðо тој не Ñе препорачува за МедијаВики бидејќи:
+* одвај поддржува едновременоÑÑ‚ поради заклучување на табелите
+* поподложен на раÑипување од другите погони
+* кодната база на МедијаВики не Ñекогаш може да работи Ñо MyISAM како што треба
+
+Ðко вашата инÑталација на MySQL поддржува InnoDB, тогаш Ñериозно препорачуваме да го кориÑтите него намеÑто MyISAM.
+Ðко вашата инÑталација на MySQL не поддржува InnoDB, веројатно дошло време за надградба.",
'config-mysql-engine-help' => "'''InnoDB''' речиÑи Ñекогаш е најдобар избор, бидејќи има добра поддршка за едновременоÑÑ‚.
'''MyISAM''' може да е побрз кај инÑталациите наменети за Ñамо еден кориÑник или незапиÑни инÑталации (Ñамо читање).
@@ -8068,7 +10538,8 @@ chmod a+w $3</pre>',
'config-mysql-charset-help' => "Во '''бинарен режим''', во базата на податоци МедијаВики Ñкладира UTF-8 текÑÑ‚ во бинарни полиња.
Ова е поефикаÑно отколку TF-8 режимот на MySQL, и ви овозможува да ја кориÑтите целата палета на уникодни знаци.
-Во '''UTF-8 режим''', MySQL ќе знае на кој збир знаци припаѓаат вашите податоци, и може Ñоодветно да ги претÑтави и претвори, но нема да ви дозволи да Ñкладиратезнаци над [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes ОÑновната повеќејазична рамнина].",
+Во '''UTF-8 режим''', MySQL ќе знае на кој збир знаци припаѓаат вашите податоци, и може Ñоодветно да ги претÑтави и претвори, но нема да ви дозволи да Ñкладиратезнаци над [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes ОÑновната повеќејазична рамнина].",
+ 'config-ibm_db2-low-db-pagesize' => "Вашата база на податоци DB2 има оÑновно-зададен табеларен проÑтор Ñо недоволна големина на Ñтраниците. Таа треба да изнеÑува барем '''32 килобајти'''.",
'config-site-name' => 'Име на викито:',
'config-site-name-help' => 'Ова ќе Ñе појавува во заглавната лента на прелиÑтувачот и на разни други меÑта.',
'config-site-name-blank' => 'ВнеÑете име на мрежното меÑто.',
@@ -8104,6 +10575,8 @@ chmod a+w $3</pre>',
'config-subscribe' => 'Претплатете Ñе на [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce release поштенÑкиот ÑпиÑок за извеÑтувања].',
'config-subscribe-help' => 'Ова е ниÑкопрометен поштенÑки ÑпиÑок кој Ñе кориÑти за Ñоопштувања во врÑка Ñо изданија, вклучувајќи важни безбедноÑни Ñоопштенија.
Треба да Ñе претплатите и да ја надградувате вашата инÑталација на МедијаВики кога излегуваат нови верзии.',
+ 'config-subscribe-noemail' => 'Се обидовте да Ñе претплатите на поштенÑкиот ÑпиÑок Ñо извеÑтувања за нови изданија без да наведете е-пошта.
+Ðаведете е-поштенÑка адреÑа ако Ñакате да Ñе претплатите на ÑпиÑокот.',
'config-almost-done' => 'Уште малку Ñте готови!
Сега можете да ги преÑкокнете преоÑтанатите поÑтавувања и веднаш да го инÑталирате викито.',
'config-optional-continue' => 'ПоÑтави ми повеќе прашања.',
@@ -8125,24 +10598,25 @@ chmod a+w $3</pre>',
'''{{int:config-profile-fishbowl}}''' — може да уредуваат Ñамо уредници што имаат добиено дозвола за тоа, но јавноÑта може да ги гледа Ñтраниците, вклучувајќи ја нивната иÑторија.
'''{{int:config-profile-private}}''' — Ñтраниците Ñе видливи и уредливи Ñамо за овлаÑтени кориÑници.
-По инÑталацијата имате на избор и поÑложени кориÑнички права и поÑтавки. Погледајте во [http://www.mediawiki.org/wiki/Manual:User_rights прирачникот].",
+По инÑталацијата имате на избор и поÑложени кориÑнички права и поÑтавки. Погледајте во [//www.mediawiki.org/wiki/Manual:User_rights прирачникот].",
'config-license' => 'ÐвторÑки права и лиценца:',
'config-license-none' => 'Без подножје за лиценца',
'config-license-cc-by-sa' => 'Creative Commons ÐаведиИзвор СподелиПодИÑтиУÑлови',
+ 'config-license-cc-by' => 'Криејтив ÐºÐ¾Ð¼Ð¾Ð½Ñ ÐаведиИзвор',
'config-license-cc-by-nc-sa' => 'Creative Commons ÐаведиИзвор-Ðекомерцијално-СподелиПодИÑтиУÑлови',
- 'config-license-cc-0' => 'Криејтив ÐºÐ¾Ð¼Ð¾Ð½Ñ Ðула',
- 'config-license-gfdl-old' => 'ГÐУ-ова лиценца за Ñлободна документација 1.2',
- 'config-license-gfdl-current' => 'ГÐУ-ова лиценца за Ñлободна документација 1.3 или понова',
- 'config-license-pd' => 'Јавен домен',
+ 'config-license-cc-0' => 'Криејтив ÐºÐ¾Ð¼Ð¾Ð½Ñ Ðула (јавен домен)',
+ 'config-license-gfdl' => 'ГÐУ-ова лиценца за Ñлободна документација 1.3 или понова',
+ 'config-license-pd' => 'Јавна ÑопÑтвеноÑÑ‚',
'config-license-cc-choose' => 'Одберете друга Creative Commons лиценца по ваш избор',
'config-license-help' => "Многу јавни викија ги Ñтаваат Ñите придонеÑи под [http://freedomdefined.org/Definition Ñлободна лиценца].
Со ова Ñе Ñоздава атмоÑфера на општа ÑопÑтвеноÑÑ‚ и поттикнува долгорочно учеÑтво.
Ова не е неопходно за викија на поединечни физички или правни лица.
-Ðко Ñакате да кориÑтите текÑÑ‚ од Википедија, и Ñакате Википедија да прифаќа текÑÑ‚ прекопиран од вашето вики, тогаш треба да ја одберете лиценцата '''Creative Commons ÐаведиИзвор СподелиПодИÑтиУÑлови'''.
+Ðко Ñакате да кориÑтите текÑÑ‚ од Википедија, и Ñакате Википедија да прифаќа текÑÑ‚ прекопиран од вашето вики, тогаш треба да ја одберете лиценцата '''Криејтив ÐºÐ¾Ð¼Ð¾Ð½Ñ ÐаведиИзвор СподелиПодИÑтиУÑлови'''.
-ГÐУ-овата лиценца за Ñлободна документација е Ñтарата лиценца на Википедија.
-Оваа лиценца Ñè уште важи, но има некои оÑобеноÑти што значително го отежнуваат толкувањето на иÑкориÑтувањето на Ñодржините вон Викимедија.",
+ГÐУ-овата лиценца за Ñлободна документација (ГЛСД) е Ñтарата лиценца на Википедија.
+Оваа лиценца Ñè уште важи, но е тешка за разбирање.
+ИÑто така треба да Ñе има на ум дека пренамената на Ñодржините под ГЛСД не е леÑна.",
'config-email-settings' => 'Ðагодувања за е-пошта',
'config-enable-email' => 'Овозможи излезна е-пошта',
'config-enable-email-help' => 'Ðко Ñакате да работи е-поштата, [http://www.php.net/manual/en/mail.configuration.php поштенÑките нагодувања на PHP] треба да Ñе правилно намеÑтени.
@@ -8164,7 +10638,7 @@ chmod a+w $3</pre>',
'config-upload-settings' => 'Подигање на Ñлики и податотеки',
'config-upload-enable' => 'Овозможи подигање на податотеки',
'config-upload-help' => 'Подигањето на податотеки потенцијално го изложуваат вашиот опÑлужувач на безбедноÑни ризици.
-За повеќе информации, прочитајте го [http://www.mediawiki.org/wiki/Manual:Security поглавието за безбедноÑÑ‚] во прирачникот.
+За повеќе информации, прочитајте го [//www.mediawiki.org/wiki/Manual:Security поглавието за безбедноÑÑ‚] во прирачникот.
За да овозможите подигање на податотеки, Ñменете го режимот на потпапката <code>images</code> во оÑновната папка на МедијаВики, за да му овозможите на мрежниот опÑлужувач да запишува во неа.
Потоа овозможете ја оваа функција.',
@@ -8172,13 +10646,13 @@ chmod a+w $3</pre>',
'config-upload-deleted-help' => 'Одберете во која папка да Ñе архивираат избришаните податотеки.
Ðајдобро би било ако таа не е доÑтапна преку интернет.',
'config-logo' => 'URL за логото:',
- 'config-logo-help' => 'Матичното руво на МедијаВики има проÑтор за лого од 135x160 пикÑели во горниот лев агол.
+ 'config-logo-help' => 'Матичното руво на МедијаВики има проÑтор за лого од 135 x 160 пикÑели над Ñтраничната лента.
Подигнете Ñлика Ñо Ñоодветна големина, и тука внеÑете ја URL-адреÑата.
Ðко не Ñакате да имате лого, тогаш оÑтавете го ова поле празно.',
'config-instantcommons' => 'Овозможи Instant Commons',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons Instant Commons] е функција која им овозможува на викијата да кориÑтат Ñлики, звучни запиÑи и други мултимедијални Ñодржини од [http://commons.wikimedia.org/ Заедничката Ризница].
-За да може ова да работи, МедијаВики бара приÑтап до интернет.
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] е функција која им овозможува на викијата да кориÑтат Ñлики, звучни запиÑи и други мултимедијални Ñодржини од [//commons.wikimedia.org/ Заедничката Ризница].
+За да може ова да работи, МедијаВики бара приÑтап до интернет.
За повеќе информации за оваа функција и напатÑтвија за нејзино поÑтавување на вики (Ñите други оÑвен Ризницата), коноÑултирајте го [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos прирачникот].',
'config-cc-error' => 'Изборникот на Creative Commons лиценца не даде резултати.
@@ -8214,6 +10688,7 @@ chmod a+w $3</pre>',
'config-install-step-failed' => 'не уÑпеа',
'config-install-extensions' => 'Вклучувам додатоци',
'config-install-database' => 'Ја поÑтавувам базата на податоци',
+ 'config-install-schema' => 'Создавам шема',
'config-install-pg-schema-not-exist' => 'PostgreSQL-шемата не поÑтои',
'config-install-pg-schema-failed' => 'Создавањето натабелите не уÑпеа.
Проверете дали кориÑникот „$1“ може да запишува во шемата „$2“.',
@@ -8221,10 +10696,17 @@ chmod a+w $3</pre>',
'config-install-pg-plpgsql' => 'Проверувам јазик PL/pgSQL',
'config-pg-no-plpgsql' => 'Ќе треба да го инÑталирате јазикот PL/pgSQL во базата $1',
'config-pg-no-create-privs' => 'Сметката што ја наведовте за инÑталацијата нема доволно привилегии за да Ñоздаде друга Ñметка.',
+ 'config-pg-not-in-role' => 'Сметката што ја наведовте за мрежниот кориÑник веќе поÑтои.
+Сметката што ја наведовте за инÑталација не е ÑуперкориÑник и не Ñ Ð¿Ñ€Ð¸Ð¿Ð°Ñ“Ð° на улогата на мрежниот кориÑник, па затоа не може да Ñоздава објекти во негова ÑопÑтвеноÑÑ‚.
+
+МедијаВики налага дека табелите мора да Ñе во ÑопÑтвеноÑÑ‚ на мрежниот кориÑник. Ðаведете друга мрежна Ñметка, или ÑтиÑнете на „назад“ и наведете Ñоодветно привилегиран кориÑник за инталацијата.',
'config-install-user' => 'Создавам кориÑник за базата',
'config-install-user-alreadyexists' => 'КориÑникот „$1“ веќе поÑтои',
'config-install-user-create-failed' => 'Создавањето на кориÑникот „$1“ не уÑпеа: $2',
'config-install-user-grant-failed' => 'Доделувањето на дозвола на кориÑникот „$1“ не уÑпеа: $2',
+ 'config-install-user-missing' => 'Ðаведениот кориÑник „$1“ не поÑтои.',
+ 'config-install-user-missing-create' => 'Ðаведениот кориÑник „$1“ не поÑтои.
+Ðко Ñакате да го Ñоздадете, штиклирајте ја можноÑта „Ñоздај Ñметка“.',
'config-install-tables' => 'Создавам табели',
'config-install-tables-exist' => "'''Предупредување''': Изгледа дека табелите за МедијаВики веќе поÑтојат.
Го преÑкокнувам Ñоздавањето.",
@@ -8234,10 +10716,11 @@ chmod a+w $3</pre>',
'config-install-interwiki-exists' => "'''Предупредување''': Табелата Ñо интервикија веќе Ñодржи Ñтавки.
Го преÑкокнувам оÑновно-зададениот ÑпиÑок.",
'config-install-stats' => 'Ги подготвувам ÑтатиÑтиките',
- 'config-install-keys' => 'Создавам таен клуч',
+ 'config-install-keys' => 'Создавање на тајни клучеви',
'config-insecure-keys' => "'''Предупредување:''' {{PLURAL:$2|БезбедноÑниот клуч $1 Ñоздаден во текот на инÑталацијата не е ÑоÑем безбеден|БезбедноÑните клучеви $1 Ñоздадени во текот на инÑталацијата не Ñе ÑоÑем безбедни}}. Ви препорачуваме да {{PLURAL:$2|го|ги}} Ñмените рачно.",
'config-install-sysop' => 'Создавање на админиÑтраторÑка кориÑничка Ñметка',
- 'config-install-subscribe-fail' => 'Ðе можам да ве претплатам на објавите на МедијаВики',
+ 'config-install-subscribe-fail' => 'Ðе можам да ве претплатам на извеÑтувањето mediawiki-announce: $1',
+ 'config-install-subscribe-notpossible' => 'cURL не е инÑталиран, а allow_url_fopen не е доÑтапно.',
'config-install-mainpage' => 'Создавам главна Ñтраница Ñо Ñтандардна Ñодржина',
'config-install-extension-tables' => 'Изработка на табели за овозможени додатоци',
'config-install-mainpage-failed' => 'Ðе можев да вметнам главна Ñтраница: $1',
@@ -8258,10 +10741,18 @@ $3
Откога ќе завршите Ñо тоа, можете да '''[$2 влезете на вашето вики]'''.",
'config-download-localsettings' => 'Преземи го LocalSettings.php',
'config-help' => 'помош',
+ 'mainpagetext' => "'''МедијаВики е уÑпешно инÑталиран.'''",
+ 'mainpagedocfooter' => 'Погледнете го [//meta.wikimedia.org/wiki/Help:Contents УпатÑтвото за кориÑници] за подетални иформации како Ñе кориÑти вики-програмот.
+
+==Од каде да почнете==
+* [//meta.wikimedia.org/wiki/Manual:Configuration_settings СпиÑок на нагодувања]
+* [//meta.wikimedia.org/wiki/Manual:FAQ ЧПП (чеÑто поÑтавувани прашања) за МедијаВики].
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ПоштенÑки ÑпиÑок на МедијаВики за нови верзии]',
);
/** Malayalam (മലയാളം)
* @author Praveenp
+ * @author Sadik Khalid
*/
$messages['ml'] = array(
'config-desc' => 'മീഡിയവികàµà´•à´¿ ഇൻസàµà´±àµà´±àµ‹à´³àµ¼',
@@ -8295,10 +10786,10 @@ $messages['ml'] = array(
'config-page-upgradedoc' => 'à´…à´ªàµâ€Œà´—àµà´°àµ‡à´¡à´¿à´™àµ',
'config-help-restart' => 'ഇതàµà´µà´°àµ† ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯ à´Žà´²àµà´²à´¾à´µà´¿à´µà´°à´™àµà´™à´³àµà´‚ ഒഴിവാകàµà´•à´¾à´¨àµà´‚ ഇൻസàµà´±àµà´±à´²àµ‡à´·àµ» à´ªàµà´°à´•àµà´°à´¿à´¯ നിർതàµà´¤à´¿-വീണàµà´Ÿàµà´®à´¾à´°à´‚à´­à´¿à´•àµà´•à´¾à´¨àµà´‚ താങàµà´•à´³à´¾à´—àµà´°à´¹à´¿à´•àµà´•àµà´¨àµà´¨àµà´£àµà´Ÿàµ‹?',
'config-restart' => 'അതെ, à´ªàµà´¨àµ¼à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´•',
- 'config-sidebar' => '* [http://www.mediawiki.org മീഡിയവികàµà´•à´¿ à´ªàµà´°à´§à´¾à´¨à´¤à´¾àµ¾]
-* [http://www.mediawiki.org/wiki/Help:Contents ഉപയോകàµà´¤àµƒà´¸à´¹à´¾à´¯à´¿]
-* [http://www.mediawiki.org/wiki/Manual:Contents കാരàµà´¯à´¨à´¿àµ¼à´µà´¹à´£à´¸à´¹à´¾à´¯à´¿]
-* [http://www.mediawiki.org/wiki/Manual:FAQ പതിവàµà´šàµ‹à´¦àµà´¯à´™àµà´™àµ¾]',
+ 'config-sidebar' => '* [//www.mediawiki.org മീഡിയവികàµà´•à´¿ à´ªàµà´°à´§à´¾à´¨à´¤à´¾àµ¾]
+* [//www.mediawiki.org/wiki/Help:Contents ഉപയോകàµà´¤àµƒà´¸à´¹à´¾à´¯à´¿]
+* [//www.mediawiki.org/wiki/Manual:Contents കാരàµà´¯à´¨à´¿àµ¼à´µà´¹à´£à´¸à´¹à´¾à´¯à´¿]
+* [//www.mediawiki.org/wiki/Manual:FAQ പതിവàµà´šàµ‹à´¦àµà´¯à´™àµà´™àµ¾]',
'config-env-php' => 'പി.à´Žà´šàµà´šàµ.പി. $1 ഇൻസàµà´±àµà´±àµ‹àµ¾ ചെയàµà´¤à´¿à´Ÿàµà´Ÿàµà´£àµà´Ÿàµ.',
'config-no-db' => 'à´…à´¨àµà´¯àµ‹à´œàµà´¯à´®à´¾à´¯ ഡേറàµà´±à´¾à´¬àµ‡à´¸àµ à´¡àµà´°àµˆà´µàµ¼ à´•à´£àµà´Ÿàµ†à´¤àµà´¤à´¾à´¨à´¾à´¯à´¿à´²àµà´²!',
'config-memory-raised' => 'പി.à´Žà´šàµà´šàµ.പി.à´¯àµà´Ÿàµ† <code>memory_limit</code> $1 ആണàµ, $2 ആയി ഉയർതàµà´¤à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
@@ -8357,7 +10848,7 @@ $1
'config-almost-done' => 'മികàµà´•à´µà´¾à´±àµà´‚ പൂർതàµà´¤à´¿à´¯à´¾à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ!
ബാകàµà´•à´¿à´¯àµà´³àµà´³à´µ അവഗണിചàµà´šàµ വികàµà´•à´¿ ഇൻസàµà´±àµà´±àµ‹àµ¾ ചെയàµà´¯à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµ.',
'config-optional-continue' => 'കൂടàµà´¤àµ½ ചോദàµà´¯à´™àµà´™àµ¾ ചോദികàµà´•àµ‚.',
- 'config-optional-skip' => 'ഞാൻ മടàµà´¤àµà´¤àµ, ഇൻസàµà´±àµà´±àµ‹àµ¾ ചെയàµà´¤àµ തീർകàµà´•àµ.',
+ 'config-optional-skip' => 'എനികàµà´•àµ മടàµà´¤àµà´¤àµ, à´’à´¨àµà´¨àµ ഇൻസàµà´±àµà´±àµ‹àµ¾ ചെയàµà´¤àµ തീർകàµà´•àµ.',
'config-profile-wiki' => 'പരമàµà´ªà´°à´¾à´—à´¤ വികàµà´•à´¿',
'config-profile-no-anon' => 'à´…à´‚à´—à´¤àµà´µ സൃഷàµà´Ÿà´¿ ചെയàµà´¯àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµ',
'config-profile-fishbowl' => 'à´…à´¨àµà´µà´¾à´¦à´®àµà´³àµà´³à´µàµ¼ മാതàµà´°à´‚ തിരàµà´¤àµà´¤àµà´•',
@@ -8365,9 +10856,7 @@ $1
'config-license' => 'പകർപàµà´ªà´µà´•à´¾à´¶à´µàµà´‚ à´…à´¨àµà´®à´¤à´¿à´¯àµà´‚:',
'config-license-cc-by-sa' => 'à´•àµà´°à´¿à´¯àµ‡à´±àµà´±àµ€à´µàµ കോമൺസൠആടàµà´°à´¿à´¬àµà´¯àµ‚ഷൻ ഷെയർ എലൈകàµ',
'config-license-cc-by-nc-sa' => 'à´•àµà´°à´¿à´¯àµ‡à´±àµà´±àµ€à´µàµ കോമൺസൠആടàµà´°à´¿à´¬àµà´¯àµ‚ഷൻ നോൺ-കൊമേഴàµà´¸àµà´¯àµ½ ഷെയർ എലൈകàµ',
- 'config-license-gfdl-old' => 'à´—àµà´¨àµ‚ à´¸àµà´µà´¤à´¨àµà´¤àµà´° à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´£à´¾à´¨àµà´®à´¤à´¿ 1.2',
- 'config-license-gfdl-current' => 'à´—àµà´¨àµ‚ à´¸àµà´µà´¤à´¨àµà´¤àµà´° à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´£à´¾à´¨àµà´®à´¤à´¿ 1.3 അഥവാ à´ªàµà´¤à´¿à´¯à´¤àµ',
- 'config-license-pd' => 'പൊതൠസഞàµà´šà´¯à´‚',
+ 'config-license-pd' => 'പൊതàµà´¸à´žàµà´šà´¯à´‚',
'config-email-settings' => 'ഇമെയിൽ സജàµà´œàµ€à´•à´°à´£à´™àµà´™àµ¾',
'config-enable-email-help' => "ഇമെയിൽ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¿à´•àµà´•à´£à´®àµ†à´™àµà´•à´¿àµ½, [http://www.php.net/manual/en/mail.configuration.php PHP's മെയിൽ സജàµà´œàµ€à´•à´°à´£à´™àµà´™àµ¾] ശരിയായി à´•àµà´°à´®àµ€à´•à´°à´¿à´•àµà´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµ.
ഇമെയിൽ സൗകരàµà´¯à´‚ ആവശàµà´¯à´®à´¿à´²àµà´²àµ†à´™àµà´•à´¿àµ½, ഇവിടെതàµà´¤à´¨àµà´¨àµ† അതൠനിർജàµà´œàµ€à´µà´®à´¾à´•àµà´•à´¾à´‚.",
@@ -8398,15 +10887,23 @@ $1
'config-install-mainpage' => 'à´¸àµà´µà´¾à´­à´¾à´µà´¿à´• ഉളàµà´³à´Ÿà´•àµà´•à´¤àµà´¤àµ‹à´Ÿàµà´•àµ‚à´Ÿà´¿ à´ªàµà´°à´§à´¾à´¨à´¤à´¾àµ¾ സൃഷàµà´Ÿà´¿à´•àµà´•àµà´¨àµà´¨àµ',
'config-install-mainpage-failed' => 'à´ªàµà´°à´§à´¾à´¨ താൾ ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¾àµ» à´•à´´à´¿à´žàµà´žà´¿à´²àµà´²: $1',
'config-install-done' => "'''അഭിനനàµà´¦à´¨à´™àµà´™àµ¾!'''
-താങàµà´•àµ¾ വിജയകരമായി മീഡിയവികàµà´•à´¿ ഇൻസàµà´±àµà´±àµ‹àµ¾ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.
+താങàµà´•àµ¾ വിജയകരമായി മീഡിയവികàµà´•à´¿ സജàµà´œàµ€à´•à´°à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.
+
+ഇൻസàµà´±àµà´±àµ‹à´³àµ¼ താങàµà´•à´³àµà´Ÿàµ† à´Žà´²àµà´²à´¾ à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™à´³àµà´®à´Ÿà´™àµà´™àµà´¨àµà´¨ <code>LocalSettings.php</code> ഫയൽ സൃഷàµà´Ÿà´¿à´šàµà´šà´¿à´Ÿàµà´Ÿàµà´£àµà´Ÿàµ.
-ഇൻസàµà´±àµà´±àµ‹à´³àµ¼ ഒരൠ<code>LocalSettings.php</code> ഫയൽ സൃഷàµà´Ÿà´¿à´šàµà´šà´¿à´Ÿàµà´Ÿàµà´£àµà´Ÿàµ.
-അതിൽ താങàµà´•à´³àµà´Ÿàµ† à´Žà´²àµà´²à´¾ à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™à´³àµà´®àµà´£àµà´Ÿàµ.
+à´ªàµà´°à´¸àµà´¤àµà´¤ à´ªàµà´°à´®à´¾à´£à´‚ ഡൗൺലോഡൠചെയàµà´¤àµ താങàµà´•à´³àµà´Ÿàµ† വികàµà´•à´¿ സജàµà´œàµ€à´•à´°à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† à´…à´Ÿà´¿à´¸àµà´¥à´¾à´¨ ഡയറകàµà´±àµà´±à´±à´¿à´¯à´¿àµ½ ഇടേണàµà´Ÿà´¤à´¾à´£àµ (index.php à´•à´¿à´Ÿà´•àµà´•àµà´¨àµà´¨ അതേ ഡയറകàµà´±àµà´±à´±à´¿à´¯à´¿àµ½). ഡൗൺലോഡിങàµà´™àµ à´¸àµà´µà´¯à´‚ ആരംഭികàµà´•àµà´¨àµà´¨à´¤à´¾à´£àµ. ഡൗൺലോഡിങàµà´™àµ à´¸àµà´µà´¯à´‚ à´¤àµà´Ÿà´™àµà´™à´¾à´¤à´¿à´°à´¿à´•àµà´•àµà´•à´¯àµ‹, താങàµà´•àµ¾ റദàµà´¦à´¾à´•àµà´•àµà´•à´¯àµ‹ ചെയàµà´¤ പകàµà´·à´‚ താഴെ കാണàµà´¨àµà´¨ à´•à´£àµà´£à´¿à´¯à´¿àµ½ ഞെകàµà´•àµà´•:
+$3
-താങàµà´•àµ¾ അതൠ[$1 à´Žà´Ÿàµà´¤àµà´¤àµ] താങàµà´•à´³àµà´Ÿàµ† വികàµà´•à´¿ ഇൻസàµà´±àµà´±à´²àµ‡à´·à´¨àµà´±àµ† à´…à´Ÿà´¿à´¸àµà´¥à´¾à´¨ ഡയറകàµà´±àµà´±à´±à´¿à´¯à´¿àµ½ ഇടàµà´• (index.php à´•à´¿à´Ÿà´•àµà´•àµà´¨àµà´¨ അതേ ഡയറകàµà´±àµà´±à´±à´¿).
-'''à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´•''': ഇതൠഇപàµà´ªàµ‹àµ¾ ചെയàµà´¤à´¿à´²àµà´²àµ†à´™àµà´•à´¿àµ½, സൃഷàµà´Ÿà´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ കോൺഫിഗറേഷൻ ഫയൽ à´Žà´Ÿàµà´•àµà´•à´¾à´¤àµ† ഇൻസàµà´±àµà´±à´²àµ‡à´·àµ» à´ªàµà´°à´•àµà´°à´¿à´¯à´¯à´¿àµ½ നിനàµà´¨àµ à´ªàµà´±à´¤àµà´¤à´¿à´±à´™àµà´™à´¿à´¯à´¾àµ½ പിനàµà´¨àµ€à´Ÿàµ ലഭàµà´¯à´®à´¾à´¯à´¿à´°à´¿à´•àµà´•à´¿à´²àµà´².
+'''à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´•''': താങàµà´•àµ¾ ഇപàµà´ªàµ‹àµ¾ ചെയàµà´¤à´¿à´²àµà´²àµ†à´™àµà´•à´¿àµ½, ഫയൽ à´Žà´Ÿàµà´•àµà´•à´¾à´¤àµ† ഇൻസàµà´±àµà´±à´²àµ‡à´·àµ» à´ªàµà´°à´•àµà´°à´¿à´¯à´¯à´¿àµ½ നിനàµà´¨àµ à´ªàµà´±à´¤àµà´¤à´¿à´±à´™àµà´™à´¿à´¯à´¾àµ½, സൃഷàµà´Ÿà´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™à´³à´Ÿà´™àµà´™àµà´¨àµà´¨ à´ªàµà´°à´®à´¾à´£à´‚ പിനàµà´¨àµ€à´Ÿàµ ലഭàµà´¯à´®à´¾à´¯à´¿à´°à´¿à´•àµà´•à´¿à´²àµà´².
-ചെയàµà´¤à´¶àµ‡à´·à´‚, താങàµà´•àµ¾à´•àµà´•àµ '''[$2 വികàµà´•à´¿à´¯à´¿àµ½ à´ªàµà´°à´µàµ‡à´¶à´¿à´•àµà´•à´¾à´‚]'''.",
+à´®àµà´•à´³à´¿àµ½ പറഞàµà´ž à´ªàµà´°à´•à´¾à´°à´‚ ചെയàµà´¤àµ à´•à´´à´¿à´žàµà´žà´¾àµ½, താങàµà´•àµ¾à´•àµà´•àµ '''[$2 വികàµà´•à´¿à´¯à´¿àµ½ à´ªàµà´°à´µàµ‡à´¶à´¿à´•àµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµ]'''.",
+ 'mainpagetext' => "'''മീഡിയവികàµà´•à´¿ വിജയകരമായി സജàµà´œàµ€à´•à´°à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.'''",
+ 'mainpagedocfooter' => 'വികàµà´•à´¿ സോഫàµà´±àµà´±àµâ€Œà´µàµ†à´¯àµ¼ ഉപയോഗികàµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµ† à´•àµà´±à´¿à´šàµà´šàµà´³àµà´³ വിശദാംശങàµà´™àµ¾à´•àµà´•àµ [//meta.wikimedia.org/wiki/Help:Contents സോഫàµà´±àµà´±àµâ€Œà´µàµ†à´¯àµ¼ സഹായി] കാണàµà´•.
+
+== à´ªàµà´°à´¾à´°à´‚ഭസഹായികൾ ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•]
+* [//www.mediawiki.org/wiki/Manual:FAQ മീഡിയവികàµà´•à´¿ പതിവàµà´šàµ‹à´¦àµà´¯à´™àµà´™àµ¾]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce മീഡിയവികàµà´•à´¿ à´ªàµà´°à´•à´¾à´¶à´¨ മെയിലിങൠലിസàµà´±àµà´±àµ]',
);
/** Mongolian (Монгол)
@@ -8414,6 +10911,104 @@ $1
*/
$messages['mn'] = array(
'config-page-language' => 'Ð¥Ñл',
+ 'mainpagetext' => "'''МедиаВики амжилттай Ñуулаа.'''",
+ 'mainpagedocfooter' => 'Вики программыг Ñ…ÑÑ€ÑглÑÑ… талаар заавар авахын тулд [//meta.wikimedia.org/wiki/Help:Contents Ñ…ÑÑ€ÑглÑгчийн гарын авлага]-г Ò¯Ð·Ð½Ñ Ò¯Ò¯.
+
+== ЭхлÑÑ… ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Тохиргоо]
+* [//www.mediawiki.org/wiki/Manual:FAQ МедиаВикигийн тогтмол тавигддаг аÑуултууд]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce МедиаВикигийн мÑдÑÑний мÑйл Ñвуулах жагÑаалт]',
+);
+
+/** Marathi (मराठी) */
+$messages['mr'] = array(
+ 'mainpagetext' => "'''मीडियाविकीचे इनà¥à¤¸à¥à¤Ÿà¥‰à¤²à¥‡à¤¶à¤¨ पूरà¥à¤£.'''",
+ 'mainpagedocfooter' => 'विकी सॉफà¥à¤Ÿà¤µà¥‡à¤…र वापरणà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾ [//meta.wikimedia.org/wiki/Help:Contents यूजर गाईड] पहा.
+
+== सà¥à¤°à¥à¤µà¤¾à¤¤ ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings कॉनà¥à¤«à¤¿à¤—रेशन सेटींगची यादी]
+* [//www.mediawiki.org/wiki/Manual:FAQ मीडियाविकी नेहमी विचारले जाणारे पà¥à¤°à¤¶à¥à¤¨]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce मीडियाविकि मेलिंग लिसà¥à¤Ÿ]',
+);
+
+/** Malay (Bahasa Melayu)
+ * @author Anakmalaysia
+ */
+$messages['ms'] = array(
+ 'config-back' => '↠Undur',
+ 'config-continue' => 'Teruskan →',
+ 'config-page-language' => 'Bahasa',
+ 'config-page-welcome' => 'Selamat datang ke MediaWiki!',
+ 'config-page-dbconnect' => 'Bersambung dengan pangkalan data',
+ 'config-page-upgrade' => 'Naik taraf pemasangan sedia ada',
+ 'config-page-dbsettings' => 'Tetapan pangkalan data',
+ 'config-page-name' => 'Nama',
+ 'config-page-options' => 'Pilihan',
+ 'config-page-install' => 'Pasang',
+ 'config-env-php' => 'PHP $1 dipasang.',
+ 'config-env-php-toolow' => 'PHP $1 dipasang.
+Bagaimanapun, MediaWiki memerlukan PHP $2 ke atas.',
+ 'config-unicode-using-utf8' => 'utf8_normalize.so oleh Brion Vibber digunakan untuk penormalan Unicode.',
+ 'config-unicode-using-intl' => '[http://pecl.php.net/intl Sambungan intl PECL] digunakan untuk penormalan Unicode.',
+ 'config-db-charset' => 'Peranggu aksara pangkalan data',
+ 'config-type-ibm_db2' => 'IBM DB2',
+ 'config-mysql-engine' => 'Enjin storan:',
+ 'config-mysql-innodb' => 'InnoDB',
+ 'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-charset' => 'Peranggu aksara pangkalan data:',
+ 'config-mysql-binary' => 'Perduaan',
+ 'config-mysql-utf8' => 'UTF-8',
+ 'config-site-name' => 'Nama wiki:',
+ 'config-site-name-help' => 'Ini akan dipaparkan pada bar tajuk perisian pelayar dan tempat-tempat lain yang berkenaan.',
+ 'config-site-name-blank' => 'Isikan nama tapak.',
+ 'config-project-namespace' => 'Ruang nama projek:',
+ 'config-ns-generic' => 'Projek',
+ 'config-ns-site-name' => 'Sama dengan nama wiki: $1',
+ 'config-ns-other' => 'Lain-lain (nyatakan)',
+ 'config-ns-other-default' => 'MyWiki',
+ 'config-admin-password' => 'Kata laluan:',
+ 'config-admin-email' => 'Alamat e-mel:',
+ 'config-license' => 'Hak cipta dan lesen:',
+ 'config-license-none' => 'Tiada pengaki lesen',
+ 'config-license-cc-by-sa' => 'Creative Commons Attribution Share Alike',
+ 'config-license-cc-by' => 'Creative Commons Attribution',
+ 'config-license-cc-by-nc-sa' => 'Creative Commons Attribution Non-Commercial Share Alike',
+ 'config-license-cc-0' => 'Creative Commons Zero (Domain Awam)',
+ 'config-license-gfdl' => 'Lesen Dokumentasi Bebas GNU 1.3 ke atas',
+ 'config-license-pd' => 'Domain Awam',
+ 'config-email-settings' => 'Tetapan e-mel',
+ 'config-install-step-done' => 'siap',
+ 'config-install-step-failed' => 'gagal',
+ 'config-help' => 'bantuan',
+ 'mainpagetext' => "'''MediaWiki telah berjaya dipasang.'''",
+ 'mainpagedocfooter' => 'Sila rujuk [//meta.wikimedia.org/wiki/Help:Contents Panduan Penggunaan] untuk maklumat mengenai penggunaan perisian wiki ini.
+
+== Untuk bermula ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Senarai tetapan konfigurasi]
+* [//www.mediawiki.org/wiki/Manual:FAQ Soalan Lazim MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Senarai mel bagi keluaran MediaWiki]',
+);
+
+/** Maltese (Malti)
+ * @author Chrisportelli
+ */
+$messages['mt'] = array(
+ 'mainpagetext' => "'''MediaWiki ġie installat b'suċċess.'''",
+ 'mainpagedocfooter' => "Ikkonsulta l-[//meta.wikimedia.org/wiki/Help:Contents Gwida għall-utenti] sabiex tikseb iktar informazzjoni dwar kif tuża' s-softwer tal-wiki.
+
+== Biex tibda ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista ta' preferenzi għall-konfigurazzjoni]
+* [//www.mediawiki.org/wiki/Manual:FAQ Mistoqsijiet rikorrenti fuq il-MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Il-lista tal-posta tħabbar 'l MediaWiki]",
+);
+
+/** Burmese (မြန်မာဘာသာ)
+ * @author Lionslayer
+ */
+$messages['my'] = array(
+ 'mainpagetext' => "'''မီဒီယာá€á€®á€€á€®á€€á€­á€¯ အောင်မြင်စွာ သွင်းပြီးပါပြီá‹'''",
);
/** Erzya (ЭрзÑнь)
@@ -8428,6 +11023,66 @@ $messages['myv'] = array(
'config-admin-password-confirm' => 'Совамо валот одов:',
'config-admin-email' => 'Е-Ñёрма паргот:',
'config-install-step-done' => 'теезь',
+ 'mainpagetext' => "'''МедиÑВикинь Ñ‚ÐµÐ²Ñ Ð°Ñ€Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ð·Ð¾ парÑте лиÑÑÑŒ.'''",
+);
+
+/** Mazanderani (مازÙرونی)
+ * @author محک
+ */
+$messages['mzn'] = array(
+ 'config-help' => 'راهنما',
+);
+
+/** Nahuatl (NÄhuatl) */
+$messages['nah'] = array(
+ 'mainpagetext' => "'''MediaHuiqui cualli ÅmotlahtlÄli.'''",
+);
+
+/** Min Nan Chinese (Bân-lâm-gú)
+ * @author Ianbu
+ */
+$messages['nan'] = array(
+ 'mainpagetext' => "'''MediaWiki已經è£å¥½çŸ£ã€‚'''",
+ 'mainpagedocfooter' => '請查看[//meta.wikimedia.org/wiki/Help:Contents 用者說明書]的資料通使用wiki 軟體
+
+== 入門 ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings é…置的設定]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki時常å•ç­”]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki的公布列單]',
+);
+
+/** Low German (Plattdüütsch) */
+$messages['nds'] = array(
+ 'mainpagetext' => "'''De MediaWiki-Software is mit Spood installeert worrn.'''",
+ 'mainpagedocfooter' => 'Kiek de [//meta.wikimedia.org/wiki/MediaWiki_localisation Dokumentatschoon för dat Anpassen vun de Brukerböversiet]
+un dat [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Brukerhandbook] för Hülp to de Bruuk un Konfiguratschoon.',
+);
+
+/** Nedersaksisch (Nedersaksisch)
+ * @author Servien
+ */
+$messages['nds-nl'] = array(
+ 'mainpagetext' => "'''’t Installeren van de MediaWiki programmatuur is succesvol.'''",
+ 'mainpagedocfooter' => 'Bekiek de [//meta.wikimedia.org/wiki/Help:Contents haandleiding] veur informasie over t gebruuk van de wikiprogrammatuur.
+
+== Meer hulpe ==
+* [//www.mediawiki.org/wiki/Help:Configuration_settings Lieste mit instellingen]
+* [//www.mediawiki.org/wiki/Help:FAQ MediaWiki-vragen die vake esteld wörden]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-postlieste veur nieje versies]',
+);
+
+/** Nepali (नेपाली)
+ * @author Bhawani Gautam
+ * @author RajeshPandey
+ */
+$messages['ne'] = array(
+ 'mainpagetext' => "'''मीडिया सफलतापूरà¥à¤µà¤• कमà¥à¤ªà¥à¤¯à¥‚टरमा सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ भयो ।'''",
+ 'mainpagedocfooter' => ' विकी अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— कसरी पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥‡ भनà¥à¤¨à¥‡ जानकारीको लागि [//meta.wikimedia.org/wiki/Help:Contents पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ सहायता] हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥
+
+== सà¥à¤°à¥‚ गरà¥à¤¨à¤•à¥‹ लागि ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings विनà¥à¤¯à¤¾à¤¸ सेटिङà¥à¤— सूची]
+* [//www.mediawiki.org/wiki/Manual:FAQ मेडियाविकि सामानà¥à¤¯ पà¥à¤°à¤¶à¥à¤¨à¤•à¤¾ उतà¥à¤¤à¤°à¤¹à¤°à¥]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce मेडियाविकि सà¥à¤šà¤¨à¤¾ मेलिङà¥à¤— सूची]',
);
/** Dutch (Nederlands)
@@ -8436,11 +11091,12 @@ $messages['myv'] = array(
* @author Purodha
* @author SPQRobin
* @author Siebrand
+ * @author Tjcool007
*/
$messages['nl'] = array(
'config-desc' => 'Het installatieprogramma voor MediaWiki',
'config-title' => 'Installatie MediaWiki $1',
- 'config-information' => 'Informatie',
+ 'config-information' => 'Gegevens',
'config-localsettings-upgrade' => 'Er is een bestaand instellingenbestand <code>LocalSettings.php</code> gevonden.
Voer de waarde van <code>$wgUpgradeKey</code> in in onderstaande invoerveld om deze installatie bij te werken.
De instelling is terug te vinden in LocalSettings.php.',
@@ -8479,7 +11135,7 @@ Controleer uw php.ini en zorg dat er een juiste map is ingesteld voor <code>sess
'config-page-name' => 'Naam',
'config-page-options' => 'Opties',
'config-page-install' => 'Installeren',
- 'config-page-complete' => 'Afgerond!',
+ 'config-page-complete' => 'Voltooid!',
'config-page-restart' => 'Installatie herstarten',
'config-page-readme' => 'Lees mij',
'config-page-releasenotes' => 'Release notes',
@@ -8488,8 +11144,8 @@ Controleer uw php.ini en zorg dat er een juiste map is ingesteld voor <code>sess
'config-page-existingwiki' => 'Bestaande wiki',
'config-help-restart' => 'Wilt u alle opgeslagen gegevens die u hebt ingevoerd wissen en het installatieproces opnieuw starten?',
'config-restart' => 'Ja, opnieuw starten',
- 'config-welcome' => '=== Controle ongeving ===
-Er worden een aantal basale controles uitgevoerd met als doel vast te stellen of deze omgeving geschikt is voor een installatie van MediaWiki.
+ 'config-welcome' => '=== Controle omgeving ===
+Er worden een aantal basiscontroles uitgevoerd met als doel vast te stellen of deze omgeving geschikt is voor een installatie van MediaWiki.
Als u hulp nodig hebt bij de installatie, lever deze gegevens dan ook aan.',
'config-copyright' => "=== Auteursrechten en voorwaarden ===
@@ -8498,13 +11154,13 @@ $1
Dit programma is vrije software. U mag het verder verspreiden en/of aanpassen in overeenstemming met de voorwaarden van de GNU General Public License zoals uitgegeven door de Free Software Foundation; ofwel versie 2 van de Licentie of - naar uw keuze - enige latere versie.
Dit programma wordt verspreid in de hoop dat het nuttig is, maar '''zonder enige garantie''', zelfs zonder de impliciete garantie van '''verkoopbaarheid''' of '''geschiktheid voor een bepaald doel'''.
-Zie de GNU General Public License voor meer informatie.
+Zie de GNU General Public License voor meer informatie.
Samen met dit programma hoort u een <doclink href=Copying>exemplaar van de GNU General Public License</doclink> ontvangen te hebben; zo niet, schrijf dan aan de Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, Verenigde Staten. Of [http://www.gnu.org/copyleft/gpl.html lees de licentie online].",
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWiki thuispagina]
-* [http://www.mediawiki.org/wiki/Help:Contents Gebruikershandleiding] (Engelstalig)
-* [http://www.mediawiki.org/wiki/Manual:Contents Beheerdershandleiding] (Engelstalig)
-* [http://www.mediawiki.org/wiki/Manual:FAQ Veel gestelde vragen] (Engelstalig)
+ 'config-sidebar' => '* [//www.mediawiki.org MediaWiki thuispagina]
+* [//www.mediawiki.org/wiki/Help:Contents Gebruikershandleiding] (Engelstalig)
+* [//www.mediawiki.org/wiki/Manual:Contents Beheerdershandleiding] (Engelstalig)
+* [//www.mediawiki.org/wiki/Manual:FAQ Veel gestelde vragen] (Engelstalig)
----
* <doclink href=Readme>Leesmij</doclink> (Engelstalig)
* <doclink href=ReleaseNotes>Release notes</doclink> (Engelstalig)
@@ -8520,17 +11176,17 @@ MediaWiki heeft PHP $2 of hoger nodig om correct te kunnen werken.',
'config-unicode-using-utf8' => 'Voor Unicode-normalisatie wordt utf8_normalize.so van Brion Vibber gebruikt.',
'config-unicode-using-intl' => 'Voor Unicode-normalisatie wordt de [http://pecl.php.net/intl PECL-extensie intl] gebruikt.',
'config-unicode-pure-php-warning' => "'''Waarschuwing''': De [http://pecl.php.net/intl PECL-extensie intl] is niet beschikbaar om de Unicode-normalisatie af te handelen en daarom wordt de langzame PHP-implementatie gebruikt.
-Als u MediaWiki voor een website met veel verkeer installeert, lees u dan in over [http://www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode-normalisatie].",
+Als u MediaWiki voor een website met veel verkeer installeert, lees u dan in over [//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode-normalisatie].",
'config-unicode-update-warning' => "'''Waarschuwing''': De geïnstalleerde versie van de Unicode-normalisatiewrapper maakt gebruik van een oudere versie van [http://site.icu-project.org/ de bibliotheek van het ICU-project].
-U moet [http://www.mediawiki.org/wiki/Unicode_normalization_considerations bijwerken] als Unicode voor u van belang is.",
- 'config-no-db' => 'Er kon geen geschikte databasedriver geladen worden!',
- 'config-no-db-help' => 'U moet een databasedriver installeren voor PHP.
+U moet [//www.mediawiki.org/wiki/Unicode_normalization_considerations bijwerken] als Unicode voor u van belang is.",
+ 'config-no-db' => 'Het was niet mogelijk een geschikte databasedriver te vinden voor PHP.
+U moet een databasedriver installeren voor PHP.
De volgende databases worden ondersteund: $1.
Als u op een gedeelde omgeving zit, vraag dan aan uw hostingprovider een geschikte databasedriver te installeren.
Als u PHP zelf hebt gecompileerd, wijzig dan uw instellingen zodat een databasedriver wordt geactiveerd, bijvoorbeeld via <code>./configure --with-mysql</code>.
Als u PHP hebt geïnstalleerd via een Debian- of Ubuntu-package, installeer dan ook de module php5-mysql.',
- 'config-no-fts3' => "'''Waarschuwing''': SQLite is gecompileerd zonder de module [http://sqlite.org/fts3.html FTS3]; er zijn geen zoekfuncties niet beschikbaar.",
+ 'config-no-fts3' => "'''Waarschuwing''': SQLite is gecompileerd zonder de module [//sqlite.org/fts3.html FTS3]; er zijn geen zoekfuncties niet beschikbaar.",
'config-register-globals' => "'''Waarschuwing: De PHP-optie <code>[http://php.net/register_globals register_globals]</code> is ingeschakeld.'''
'''Schakel deze uit als dat mogelijk is.'''
MediaWiki kan ermee werken, maar uw server is dan meer kwetsbaar voor beveiligingslekken.",
@@ -8560,12 +11216,14 @@ MediaWiki heeft ondersteuning voor UTF-8 nodig om correct te kunnen werken.",
'config-memory-bad' => "'''Waarschuwing:''' PHP's <code>memory_limit</code> is $1.
Dit is waarschijnlijk te laag.
De installatie kan mislukken!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] is op dit moment geïnstalleerd',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] is op dit moment geïnstalleerd',
'config-apc' => '[http://www.php.net/apc APC] is op dit moment geïnstalleerd',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] is op dit moment geïnstalleerd',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] is op dit moment geïnstalleerd',
'config-no-cache' => "'''Waarschuwing:''' [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC] of [http://trac.lighttpd.net/ xcache / XCache] is niet aangetroffen.
Het cachen van objecten is niet ingeschakeld.",
+ 'config-mod-security' => "'''Waarschuwing:''' uw webserver heeft de module [http://modsecurity.org/ mod_security] ingeschakeld. Als deze onjuist is ingesteld, kan dit problemen geven in combinatie met MediaWiki of andere software die gebruikers in staat stelt willekeurige inhoud te posten.
+Lees de [http://modsecurity.org/documentation/ documentatie over mod_security] of neem contact op met de helpdesk van uw provider als u tegen problemen aanloopt.",
'config-diff3-bad' => 'GNU diff3 niet aangetroffen.',
'config-imagemagick' => 'ImageMagick aangetroffen: <code>$1</code>.
Het aanmaken van miniaturen van afbeeldingen wordt ingeschakeld als u uploaden inschakelt.',
@@ -8575,13 +11233,18 @@ Het aanmaken van miniaturen van afbeeldingen wordt ingeschakeld als u uploaden i
Het maken van miniaturen van afbeeldingen wordt uitgeschakeld.',
'config-no-uri' => "'''Fout:''' de huidige URI kon niet vastgesteld worden.
De installatie is afgebroken.",
+ 'config-no-cli-uri' => "'''Waarschuwing:''' de parameter ==scriptpath is niet opgegeven. De standaardwaarde wordt gebruikt: <code>$1</code>.",
+ 'config-using-server' => 'Servernaam "<nowiki>$1</nowiki>" wordt gebruikt.',
+ 'config-using-uri' => 'De server-URL "<nowiki>$1$2</nowiki>" wordt gebruikt.',
'config-uploads-not-safe' => "'''Waarschuwing:''' uw uploadmap <code>$1</code> kan gebruikt worden voor het arbitrair uitvoeren van scripts.
-Hoewel MediaWiki alle toegevoegde bestanden controleert op bedreigingen, is het zeer aan te bevelen het [http://www.mediawiki.org/wiki/Manual:Security#Upload_security beveiligingslek te verhelpen] alvorens uploads in te schakelen.",
+Hoewel MediaWiki alle toegevoegde bestanden controleert op bedreigingen, is het zeer aan te bevelen het [//www.mediawiki.org/wiki/Manual:Security#Upload_security beveiligingslek te verhelpen] alvorens uploads in te schakelen.",
+ 'config-no-cli-uploads-check' => "''Waarschuwing:'' uw standaardmap voor uploads (<code>$1</code>) wordt niet gecontroleerd op kwetsbaarheden voor het uitvoeren van willekeurige scripts gedurende de CLI-installatie.",
'config-brokenlibxml' => 'Uw systeem heeft een combinatie van PHP- en libxml2-versies geïnstalleerd die is foutgevoelig is en kan leiden tot onzichtbare beschadiging van gegevens in MediaWiki en andere webapplicaties.
-Upgrade naar PHP 5.2.9 of hoger en libxml2 2.7.3 of hoger! De installatie wordt afgebroken ([http://bugs.php.net/bug.php?id=45996 bij PHP gerapporteerde fout]).',
+Upgrade naar PHP 5.2.9 of hoger en libxml2 2.7.3 of hoger! De installatie wordt afgebroken ([//bugs.php.net/bug.php?id=45996 bij PHP gerapporteerde fout]).',
'config-using531' => 'PHP $1 is niet compatibel met MediaWiki vanwege een fout met betrekking tot referentieparameters met <code>__call()</code>.
Werk uw PHP bij naar PHP 5.3.2 of hoger of werk bij naar de lagere versie PHP 5.3.0 om dit op te lossen.
De installatie wordt afgebroken.',
+ 'config-suhosin-max-value-length' => 'Suhosin is geïnstalleerd en beperkt de lengte van de GET-parameter tot $1 bytes. De ResourceLoader van MediaWiki omzeilt deze beperking, maar dat is slecht voor de prestaties. Als het mogelijk is, moet u de waarde "suhosin.get.max_value_length" in php.ini instellen op 1024 of hoger en $wgResourceLoaderMaxQueryLength in LocalSettings.php op dezelfde waarde instellen.',
'config-db-type' => 'Databasetype:',
'config-db-host' => 'Databasehost:',
'config-db-host-help' => 'Als uw databaseserver een andere server is, voer dan de hostnaam of het IP-adres hier in.
@@ -8589,7 +11252,9 @@ De installatie wordt afgebroken.',
Als u gebruik maakt van gedeelde webhosting, hoort uw provider u de juiste hostnaam te hebben verstrekt.
Als u MediaWiki op een Windowsserver installeert en MySQL gebruikt, dan werkt "localhost" mogelijk niet als servernaam.
-Als het inderdaad niet werkt, probeer dan "127.0.0.1" te gebruiken als lokaal IP-adres.',
+Als het inderdaad niet werkt, probeer dan "127.0.0.1" te gebruiken als lokaal IP-adres.
+
+Als u PostgreSQL gebruikt, laat dit veld dan leeg om via een Unix-socket te verbinden.',
'config-db-host-oracle' => 'Database-TNS:',
'config-db-host-oracle-help' => 'Voer een geldige [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Local Connect Name] in; een tnsnames.ora-bestand moet zichtbaar zijn voor deze installatie.<br />Als u gebruik maakt van clientlibraries 10g of een latere versie, kunt u ook gebruik maken van de naamgevingsmethode [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].',
'config-db-wiki-settings' => 'Identificeer deze wiki',
@@ -8629,13 +11294,14 @@ Dit veld wordt meestal leeg gelaten.",
In '''binaire modus''' slaat MediaWiki tekst in UTF-8 op in binaire databasevelden.
Dit is efficiënter dan de UTF-8-modus van MySQL en stelt u in staat de volledige reeks Unicode-tekens te gebruiken.
In '''UTF-8-modus''' kent MySQL de tekenset van uw gegevens en kan de databaseserver ze juist weergeven en converteren.
-Het is dat niet mogelijk tekens op te slaan die de \"[http://nl.wikipedia.org/wiki/Lijst_van_Unicode-subbereiken#Basic_Multilingual_Plane Basic Multilingual Plane]\" te boven gaan.",
+Het is dan niet mogelijk tekens op te slaan die de \"[//nl.wikipedia.org/wiki/Lijst_van_Unicode-subbereiken#Basic_Multilingual_Plane Basic Multilingual Plane]\" te boven gaan.",
'config-mysql-old' => 'U moet MySQL $1 of later gebruiken.
U gebruikt $2.',
'config-db-port' => 'Databasepoort:',
'config-db-schema' => 'Schema voor MediaWiki',
'config-db-schema-help' => 'Dit schema klopt meestal.
Wijzig het alleen als u weet dat dit nodig is.',
+ 'config-pg-test-error' => "Kan geen verbinding maken met database '''$1''': $2",
'config-sqlite-dir' => 'Gegevensmap voor SQLite:',
'config-sqlite-dir-help' => "SQLite slaat alle gegevens op in een enkel bestand.
@@ -8644,7 +11310,7 @@ De map die u opgeeft moet schrijfbaar zijn voor de webserver tijdens de installa
Deze mag '''niet toegankelijk''' zijn via het web en het bestand mag dus niet tussen de PHP-bestanden staan.
Het installatieprogramma schrijft het bestand <code>.htaccess</code> weg met het databasebestand, maar als dat niet werkt kan iemand zich toegang tot het ruwe databasebestand verschaffen.
-Ook de gebruikersgegevens (e-mailsadressen, wachtwoordhashes) en verwijderde versies en overige gegevens met beperkte toegang via MediaWiki zijn dan onbeschermd.
+Ook de gebruikersgegevens (e-mailsadressen, wachtwoordhashes) en verwijderde versies en overige gegevens met beperkte toegang via MediaWiki zijn dan onbeschermd.
Overweeg om de database op een totaal andere plaats neer te zetten, bijvoorbeeld in <code>/var/lib/mediawiki/yourwiki</code>.",
'config-oracle-def-ts' => 'Standaard tablespace:',
@@ -8653,19 +11319,22 @@ Overweeg om de database op een totaal andere plaats neer te zetten, bijvoorbeeld
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'MediaWiki ondersteunt de volgende databasesystemen:
$1
Als u het databasesysteem dat u wilt gebruiken niet in de lijst terugvindt, volg dan de handleiding waarnaar hierboven wordt verwezen om ondersteuning toe te voegen.',
'config-support-mysql' => '* $1 is het primaire databasesysteem voor voor MediaWiki en wordt het best ondersteund ([http://www.php.net/manual/en/mysql.installation.php hoe PHP gecompileerd moet zijn met ondersteuning voor MySQL])',
- 'config-support-postgres' => '* $1 is een populair open source databasesysteem als alternatief voor MySQL ([http://www.php.net/manual/en/pgsql.installation.php hoe PHP gecompileerd moet zijn met ondersteuning voor PostgreSQL])',
+ 'config-support-postgres' => '* $1 is een populair open source databasesysteem als alternatief voor MySQL ([http://www.php.net/manual/en/pgsql.installation.php hoe PHP gecompileerd moet zijn met ondersteuning voor PostgreSQL]). Het is mogelijk dat er een aantal bekende problemen zijn met MediaWiki in combinatie met deze database en daarom wordt PostgreSQL niet aanbevolen voor een productieomgeving.',
'config-support-sqlite' => '* $1 is een zeer goed ondersteund lichtgewicht databasesysteem ([http://www.php.net/manual/en/pdo.installation.php hoe PHP gecompileerd zijn met ondersteuning voor SQLite]; gebruikt PDO)',
'config-support-oracle' => '* $1 is een commerciële data voor grote bedrijven ([http://www.php.net/manual/en/oci8.installation.php PHP compileren met ondersteuning voor OCI8]).',
+ 'config-support-ibm_db2' => '* $1 is een commerciële enterprisedatabase.',
'config-header-mysql' => 'MySQL-instellingen',
'config-header-postgres' => 'PostgreSQL-instellingen',
'config-header-sqlite' => 'SQLite-instellingen',
'config-header-oracle' => 'Oracle-instellingen',
+ 'config-header-ibm_db2' => 'Instellingen voor IBM DB2',
'config-invalid-db-type' => 'Ongeldig databasetype',
'config-missing-db-name' => 'U moet een waarde ingeven voor "Databasenaam"',
'config-missing-db-host' => 'U moet een waarde invoeren voor "Databaseserver"',
@@ -8741,6 +11410,13 @@ De gebruiker die u hier opgeeft moet al bestaan.',
'config-mysql-engine' => 'Opslagmethode:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => "'''Waarschuwing''': U hebt MyISAM geselecteerd als opslagengine voor MySQL. Dit is niet aan te raden voor MediaWiki omdat:
+* het nauwelijks ondersteuning biedt voor gebruik door meerdere gebruikers tegelijkertijd door het locken van tabellen;
+* het meer vatbaar is voor corruptie dan andere engines;
+* de code van MediaWiki niet alstijd omgaat met MyISAM zoals dat zou moeten.
+
+Als uw installatie van MySQL InnoDB ondersteunt, gebruik dat dan vooral.
+Als uw installatie van MySQL geen ondersteuning heeft voor InnoDB, denk dan na over upgraden.",
'config-mysql-engine-help' => "'''InnoDB''' is vrijwel altijd de beste instelling, omdat deze goed omgaat met meerdere verzoeken tegelijkertijd.
'''MyISAM''' is bij een zeer beperkt aantal gebruikers mogelijk sneller, of als de wiki alleen-lezen is.
@@ -8752,14 +11428,15 @@ MyISAM-databases raken vaker corrupt dan InnoDB-databases.",
Dit is efficiënter dan de UTF-8-modus van MySQL en stelt u in staat de volledige reeks Unicode-tekens te gebruiken.
In '''UTF-8-modus''' kent MySQL de tekenset van uw gegevens en kan de databaseserver ze juist weergeven en converteren.
-Het is dat niet mogelijk tekens op te slaan die de \"[http://nl.wikipedia.org/wiki/Lijst_van_Unicode-subbereiken#Basic_Multilingual_Plane Basic Multilingual Plane]\" te boven gaan.",
+Het is dat niet mogelijk tekens op te slaan die de \"[//nl.wikipedia.org/wiki/Lijst_van_Unicode-subbereiken#Basic_Multilingual_Plane Basic Multilingual Plane]\" te boven gaan.",
+ 'config-ibm_db2-low-db-pagesize' => "Uw DB2-database heeft een standaard tablespace met een onvoldoende grote pagesize. De pagesize moet tenminste '''32K''' zijn.",
'config-site-name' => 'Naam van de wiki:',
'config-site-name-help' => 'Deze naam verschijnt in de titelbalk van browsers en op andere plaatsen.',
'config-site-name-blank' => 'Geef een naam op voor de site.',
'config-project-namespace' => 'Projectnaamruimte:',
'config-ns-generic' => 'Project',
'config-ns-site-name' => 'Zelfde als de wiki: $1',
- 'config-ns-other' => 'Andere (geen aan welke)',
+ 'config-ns-other' => 'Andere (geef aan welke)',
'config-ns-other-default' => 'MijnWiki',
'config-project-namespace-help' => "In het kielzog van Wikipedia beheren veel wiki's hun beleidspagina's apart van hun inhoudelijke pagina's in een \"'''projectnaamruimte'''\".
Alle paginanamen in deze naamruimte beginnen met een bepaald voorvoegsel dat u hier kunt aangeven.
@@ -8781,13 +11458,15 @@ Kies een andere gebruikersnaam.',
'config-admin-password-same' => 'Het wachtwoord mag niet hetzelfde zijn als de gebruikersnaam.',
'config-admin-password-mismatch' => 'De twee door u ingevoerde wachtwoorden komen niet overeen.',
'config-admin-email' => 'E-mailadres:',
- 'config-admin-email-help' => "Voer hier een e-mailadres in om e-mail te kunnen ontvangen van andere gebruikers op de wiki, uw wachtwoord opnieuw in te kunnen stellen en op de hoogte te worden gehouden van wijzigingen van pagina's op uw volglijst.",
+ 'config-admin-email-help' => "Voer hier een e-mailadres in om e-mail te kunnen ontvangen van andere gebruikers op de wiki, uw wachtwoord opnieuw in te kunnen stellen en op de hoogte te worden gehouden van wijzigingen van pagina's op uw volglijst. U kunt het veld leeg laten.",
'config-admin-error-user' => 'Interne fout bij het aanmaken van een beheerder met de naam "<nowiki>$1</nowiki>".',
'config-admin-error-password' => 'Interne fout bij het instellen van een wachtwoord voor de bejeerder "<nowiki>$1</nowiki>": <pre>$2</pre>',
'config-admin-error-bademail' => 'U hebt een ongeldig e-mailadres opgegeven',
'config-subscribe' => 'Abonneren op de [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce mailinglijst releaseaankondigen].',
'config-subscribe-help' => 'Dit is een mailinglijst met een laag volume voor aankondigingen van nieuwe versies, inclusief belangrijke aankondigingen met betrekking tot beveiliging.
Abonneer uzelf erop en werk uw MediaWiki-installatie bij als er nieuwe versies uitkomen.',
+ 'config-subscribe-noemail' => 'U hebt geprobeerd zich te abonneren op de mailinglijst voor release-aankondigingen zonder een e-mailadres op te geven.
+Geef een e-mailadres op als u zich wil abonneren op de mailinglijst.',
'config-almost-done' => 'U bent bijna klaar!
Als u wilt kunt u de overige instellingen overslaan en de wiki nu installeren.',
'config-optional-continue' => 'Stel me meer vragen.',
@@ -8809,14 +11488,14 @@ Een wiki met '''{{int:config-profile-no-anon}}\" biedt extra verantwoordelijkhei
Het scenario '''{{int:config-profile-fishbowl}}''' laat gebruikers waarvoor dat is ingesteld bewerkt, maar andere gebruikers kunnen alleen pagina's bekijken, inclusief de bewerkingsgeschiedenis.
In een '''{{int:config-profile-private}}''' kunnen alleen goedgekeurde gebruikers pagina's bekijken en bewerken.
-Meer complexe instellingen voor gebruikersrechten zijn te maken na de installatie; hierover is meer te lezen in de [http://www.mediawiki.org/wiki/Manual:User_rights handleiding].",
+Meer complexe instellingen voor gebruikersrechten zijn te maken na de installatie; hierover is meer te lezen in de [//www.mediawiki.org/wiki/Manual:User_rights handleiding].",
'config-license' => 'Auteursrechten en licentie:',
'config-license-none' => 'Geen licentie in de voettekst',
'config-license-cc-by-sa' => 'Creative Commons Naamsvermelding-Gelijk delen',
+ 'config-license-cc-by' => 'Creative Commons Naamsvermelding',
'config-license-cc-by-nc-sa' => 'Creative Commons Naamsvermelding-Niet Commercieel-Gelijk delen',
- 'config-license-cc-0' => 'Creative Commons Zero',
- 'config-license-gfdl-old' => 'GNU Free Documentation License 1.2',
- 'config-license-gfdl-current' => 'GNU Free Documentation License 1.3 of hoger',
+ 'config-license-cc-0' => 'Creative Commons Zero (Publiek domein)',
+ 'config-license-gfdl' => 'GNU Free Documentation License 1.3 of hoger',
'config-license-pd' => 'Publiek domein',
'config-license-cc-choose' => 'Een Creative Commons-licentie selecteren',
'config-license-help' => "In veel openbare wiki's zijn alle bijdragen beschikbaar onder een [http://freedomdefined.org/Definition vrije licentie].
@@ -8825,8 +11504,9 @@ Dit is over het algemeen niet nodig is voor een particuliere of zakelijke wiki.
Als u teksten uit Wikipedia wilt kunnen gebruiken en u wilt het mogelijk maken teksten uit uw wiki naar Wikipedia te kopiëren, kies dan de licentie '''Creative Commons Naamsvermelding-Gelijk delen'''.
-De GNU Free Documentation License was de oude licentie voor inhoud uit Wikipedia.
-Dit is nog steeds een geldige licentie, maar deze licentie heeft een aantal eigenschappen die hergebruik en interpretatie lastig kunnen maken.",
+De GNU Free Documentation License is de oude licentie voor inhoud uit Wikipedia.
+Dit is nog steeds een geldige licentie, maar deze licentie is lastig te begrijpen.
+Het is ook lastig inhoud te hergebruiken onder de GFDL.",
'config-email-settings' => 'E-mailinstellingen',
'config-enable-email' => 'Uitgaande e-mail inschakelen',
'config-enable-email-help' => "Als u wilt dat e-mailen mogelijk is, dan moeten [http://www.php.net/manual/en/mail.configuration.php PHP's e-mailinstellingen] correct zijn.
@@ -8848,21 +11528,21 @@ Veel mailservers vereisen dat tenminste het domein bestaat.',
'config-upload-settings' => 'Afbeeldingen en bestanden uploaden',
'config-upload-enable' => 'Uploaden van bestanden inschakelen',
'config-upload-help' => "Het uploaden van bestanden stelt uw server mogelijk bloot aan beveiligingsrisico's.
-Er is meer [http://www.mediawiki.org/wiki/Manual:Security informatie over beveiliging] beschikbaar in de handleiding.
+Er is meer [//www.mediawiki.org/wiki/Manual:Security informatie over beveiliging] beschikbaar in de handleiding.
-Om het bestandsuploads mogelijk te maken kunt u de rechten op de submap <code>images</code> onder de hoofdmap van MediaWiki aanpassen, zodat de webserver erin kan schrijven.
+Om het bestandsuploads mogelijk te maken kunt u de rechten op de submap <code>images</code> onder de hoofdmap van MediaWiki aanpassen, zodat de webserver erin kan schrijven.
Daarmee wordt deze functie ingeschakeld.",
'config-upload-deleted' => 'Map voor verwijderde bestanden:',
'config-upload-deleted-help' => 'Kies een map waarin verwijderde bestanden gearchiveerd kunnen worden.
Idealiter is deze map niet via het web te benaderen.',
'config-logo' => 'URL voor logo:',
- 'config-logo-help' => 'Het standaarduiterlijk van MediaWiki bevat ruimte voor een logo van 135x160 pixels in de linker bovenhoek.
+ 'config-logo-help' => 'Het standaarduiterlijk van MediaWiki bevat ruimte voor een logo van 135x160 pixels boven het menu.
Upload een afbeelding met de juiste afmetingen en voer de URL hier in.
Als u geen logo wilt gebruiken, kunt u dit veld leeg laten.',
'config-instantcommons' => 'Instant Commons inschakelen',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons Instant Commons] is functie die het mogelijk maakt om afbeeldingen, geluidsbestanden en andere mediabestanden te gebruiken van de website [http://commons.wikimedia.org/ Wikimedia Commons].
-Hiervoor heeft MediaWiki toegang nodig tot Internet.
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] is functie die het mogelijk maakt om afbeeldingen, geluidsbestanden en andere mediabestanden te gebruiken van de website [//commons.wikimedia.org/ Wikimedia Commons].
+Hiervoor heeft MediaWiki toegang nodig tot Internet.
Meer informatie over deze functie en hoe deze in te stellen voor andere wiki\'s dan Wikimedia Commons is te vinden in de [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos handleiding].',
'config-cc-error' => 'De licentiekiezer van Creative Commons heeft geen resultaat opgeleverd.
@@ -8900,6 +11580,7 @@ Als u nog wijzigingen wilt maken, klik dan op "Terug".',
'config-install-step-failed' => 'Mislukt',
'config-install-extensions' => 'Inclusief uitbreidingen',
'config-install-database' => 'Database inrichten',
+ 'config-install-schema' => 'Het schema wordt aangemaakt',
'config-install-pg-schema-not-exist' => 'Het schema voor PostgreSQL bestaat niet',
'config-install-pg-schema-failed' => 'Het aanmaken van de tabellen is mislukt.
Zorg dat de gebruiker "$1" in het schema "$2" mag schrijven.',
@@ -8907,22 +11588,31 @@ Zorg dat de gebruiker "$1" in het schema "$2" mag schrijven.',
'config-install-pg-plpgsql' => 'Controle op de taal PL/pgSQL',
'config-pg-no-plpgsql' => 'U moet de taal PL/pgSQL installeren in de database $1',
'config-pg-no-create-privs' => 'De gebruiker die u hebt opgegeven door de installatie heeft niet voldoende rechten om een gebruiker aan te maken.',
+ 'config-pg-not-in-role' => 'De gebruiker die u hebt opgegeven voor de webgebruiker bestaat al.
+De gebruiker die u hebt opgegeven voor installatie is geen superuser en geen lid van de rol van de webgebruiker, en kan het dus geen objecten aanmaken die van de webgebruiker zijn.
+
+MediaWiki vereist momenteel dat de tabellen van de webgebruiker zijn. Geef een andere webgebruikersnaam op, of klik op "terug" en geef een gebruiker op die voldoende installatierechten heeft.',
'config-install-user' => 'Databasegebruiker aan het aanmaken',
'config-install-user-alreadyexists' => 'Gebruiker "$1" bestaat al',
'config-install-user-create-failed' => 'Het aanmaken van de gebruiker "$1" is mislukt: $2',
'config-install-user-grant-failed' => 'Het geven van rechten aan gebruiker "$1" is mislukt: $2',
+ 'config-install-user-missing' => 'De opgegeven gebruiker "$1" bestaat niet.',
+ 'config-install-user-missing-create' => 'De opgegeven gebruiker "$1" bestaat niet.
+Klik op "registreren" onderaan als u het wilt aanmaken.',
'config-install-tables' => 'Tabellen aanmaken',
- 'config-install-tables-exist' => "'''Waarschuwing''': de MediaWiki-tabellen lijken al te bestaan.
+ 'config-install-tables-exist' => "'''Waarschuwing''': de MediaWiki-tabellen lijken al te bestaan.
Het aanmaken wordt overgeslagen.",
'config-install-tables-failed' => "'''Fout''': het aanmaken van een tabel is mislukt met de volgende foutmelding: $1",
'config-install-interwiki' => 'Bezig met het vullen van de interwikitabel',
'config-install-interwiki-list' => 'Het bestand <code>interwiki.list</code> is niet aangetroffen',
- 'config-install-interwiki-exists' => "'''Waarschuwing''': de interwikitabel heeft al inhoud.
+ 'config-install-interwiki-exists' => "'''Waarschuwing''': de interwikitabel heeft al inhoud.
De standaardlijst wordt overgeslagen.",
'config-install-stats' => 'Statistieken initialiseren',
- 'config-install-keys' => 'Geheime sleutel aanmaken',
+ 'config-install-keys' => 'Bezig met aanmaken van geheime sleutels',
+ 'config-insecure-keys' => "'''Waarschuwing:''' De {{PLURAL:$2|sleutel die is aangemaakt|sleutels die zijn aangemaakt}} ($1) tijdens de installatie {{PLURAL:$2|is|zijn}} niet volledig veilig. Overweeg deze handmatig te wijzigen.",
'config-install-sysop' => 'Gebruiker voor beheerder aanmaken',
- 'config-install-subscribe-fail' => 'Het is niet mogelijk te abonneren op mediawiki-announce',
+ 'config-install-subscribe-fail' => 'Het is niet mogelijk te abonneren op mediawiki-announce: $1',
+ 'config-install-subscribe-notpossible' => 'cURL is niet geïnstalleerd en <code>allow_url_fopen</code> is niet beschikbaar.',
'config-install-mainpage' => 'Hoofdpagina aanmaken met standaard inhoud',
'config-install-extension-tables' => 'Tabellen voor ingeschakelde uitbreidingen worden aangemaakt',
'config-install-mainpage-failed' => 'Het was niet mogelijk de hoofdpagina in te voegen: $1',
@@ -8944,9 +11634,18 @@ $3
Na het plaatsen van het bestand met instellingen kunt u '''[$2 uw wiki betreden]'''.",
'config-download-localsettings' => 'LocalSettings.php downloaden',
'config-help' => 'hulp',
+ 'mainpagetext' => "'''De installatie van MediaWiki is geslaagd.'''",
+ 'mainpagedocfooter' => 'Raadpleeg de [//meta.wikimedia.org/wiki/NL_Help:Inhoudsopgave handleiding] voor informatie over het gebruik van de wikisoftware.
+
+== Meer hulp over MediaWiki ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lijst met instellingen]
+* [//www.mediawiki.org/wiki/Manual:FAQ Veelgestelde vragen (FAQ)]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglijst voor aankondigingen van nieuwe versies]',
);
/** Norwegian Nynorsk (‪Norsk (nynorsk)‬)
+ * @author Harald Khan
* @author Nghtwlkr
*/
$messages['nn'] = array(
@@ -8959,7 +11658,7 @@ $messages['nn'] = array(
'config-memory-bad' => "'''Advarsel:''' PHPs <code>memory_limit</code> er $1.
Dette er sannsynlegvis for lågt.
Installasjonen kan mislukkast!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] er innstallert',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] er innstallert',
'config-apc' => '[http://www.php.net/apc APC] er innstallert',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] er innstallert',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] er installert',
@@ -8987,9 +11686,17 @@ Berre bruk ASCII-bokstavar (a-z, A-Z), tal (0-9) og undestrekar (_).',
'config-postgres-old' => 'PostgreSQL $1 eller seinare krevst, du har $2.',
'config-email-settings' => 'E-postinnstillingar',
'config-logo' => 'Logo-URL:',
+ 'mainpagetext' => "'''MediaWiki er no installert.'''",
+ 'mainpagedocfooter' => 'Sjå [//meta.wikimedia.org/wiki/Help:Contents brukarmanualen] for informasjon om bruk og oppsettshjelp for wikiprogramvara.
+
+==Kome i gang==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Liste over oppsettsinnstillingar]
+* [//www.mediawiki.org/wiki/Manual:FAQ Spørsmål og svar om MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postliste med informasjon om nye MediaWiki-versjonar]',
);
/** Norwegian (bokmål)‬ (‪Norsk (bokmål)‬)
+ * @author Event
* @author Jon Harald Søby
* @author Nghtwlkr
*/
@@ -8997,9 +11704,23 @@ $messages['no'] = array(
'config-desc' => 'Installasjonsprogrammet for MediaWiki',
'config-title' => 'Installasjon av MediaWiki $1',
'config-information' => 'Informasjon',
- 'config-localsettings-upgrade' => "'''Advarsel''': En <code>LocalSettings.php</code>-fil har blitt oppdaget.
-Programvaren kan oppgraderes.
-Flytt <code>LocalSettings.php</code> til et trygt sted og kjør installasjonsprogrammet på nytt.",
+ 'config-localsettings-upgrade' => 'En <code>LocalSettings.php</code>-fil har blitt oppdaget.
+For å oppgradere denne installasjonen, skriv inn verdien av <code>$wgUpgradeKey</code> i boksen nedenfor.
+Du finner denne i LocalSettings.php.',
+ 'config-localsettings-cli-upgrade' => "Filen ''LocalSettings.php'' er funnet.
+For å oppgradere denne installasjonen, vennligst kjør ''update.php'' i stedet",
+ 'config-localsettings-key' => 'Oppgraderingsnøkkel:',
+ 'config-localsettings-badkey' => 'Nøkkelen du oppga er feil.',
+ 'config-upgrade-key-missing' => "En eksisterende installasjon av MediaWiki er funnet.
+For å oppgradere denne installasjonen, vær vennlig å legge til følgende linje helt til slutt i din ''LocalSettings.php''-fil:
+
+$1",
+ 'config-localsettings-incomplete' => "Den eksisterende ''LocalSettings.php'' ser ut til å være ufullstendig.
+Variabelen $1 har ingen verdi.
+Vær vennlig å endre ''LocalSettings.php'' slik at variabelen får en verdi, og klikk ''Fortsett''.",
+ 'config-localsettings-connection-error' => "Det ble funnet en feil ved tilknytning av databasen med innstillingene i ''LocalSettings.php'' eller ''AdminSettings.php''. Vær vennlig å rette opp disse innstillingene og prøv igjen.
+
+$1",
'config-session-error' => 'Feil under oppstart av økt: $1',
'config-session-expired' => 'Dine øktdata ser ut til å ha utløpt.
Økter er konfigurert for en levetid på $1.
@@ -9027,6 +11748,7 @@ Sjekk din php.ini og sørg for at <code>session.save_path</code> er satt til en
'config-page-releasenotes' => 'Utgivelsesnotat',
'config-page-copying' => 'Kopiering',
'config-page-upgradedoc' => 'Oppgradering',
+ 'config-page-existingwiki' => 'Eksisterende wiki',
'config-help-restart' => 'Ønsker du å fjerne alle lagrede data som du har skrevet inn og starte installasjonsprosessen på nytt?',
'config-restart' => 'Ja, start på nytt',
'config-welcome' => '=== Miljøsjekker ===
@@ -9042,29 +11764,35 @@ Dette programmet er distribuert i håp om at det vil være nyttig, men '''uten n
Se GNU General Public License for flere detaljer.
Du skal ha mottatt <doclink href=Copying>en kopi av GNU General Public License</doclink> sammen med dette programmet; hvis ikke, skriv til Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA eller [http://www.gnu.org/copyleft/gpl.html les det på nettet].",
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWiki hjem]
-* [http://www.mediawiki.org/wiki/Help:Contents Brukerguide]
-* [http://www.mediawiki.org/wiki/Manual:Contents Administratorguide]
-* [http://www.mediawiki.org/wiki/Manual:FAQ OSS]',
+ 'config-sidebar' => '* [//www.mediawiki.org MediaWiki hjem]
+* [//www.mediawiki.org/wiki/Help:Contents Brukerguide]
+* [//www.mediawiki.org/wiki/Manual:Contents Administratorguide]
+* [//www.mediawiki.org/wiki/Manual:FAQ OSS]
+----
+* <doclink href=Readme>Les meg</doclink>
+* <doclink href=ReleaseNotes>Utgivelsesnotater</doclink>
+* <doclink href=Copying>Kopiering</doclink>
+* <doclink href=UpgradeDoc>Oppgradering</doclink>',
'config-env-good' => 'Miljøet har blitt sjekket.
Du kan installere MediaWiki.',
'config-env-bad' => 'Miljøet har blitt sjekket.
Du kan installere MediaWiki.',
'config-env-php' => 'PHP $1 er innstallert.',
+ 'config-env-php-toolow' => 'PHP $1 er installert.
+MediaWiki krever imidlertid PHP $2 eller høyere.',
'config-unicode-using-utf8' => 'Bruker Brion Vibbers utf8_normalize.so for Unicode-normalisering.',
'config-unicode-using-intl' => 'Bruker [http://pecl.php.net/intl intl PECL-utvidelsen] for Unicode-normalisering.',
- 'config-unicode-pure-php-warning' => "'''Advarsel''': [http://pecl.php.net/intl intl PECL-utvidelsen] er ikke tilgjengelig for å håndtere Unicode-normaliseringen.
-Om du kjører et høy trafikksnettsted bør du lese litt om [http://www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode-normalisering].",
+ 'config-unicode-pure-php-warning' => "'''Advarsel''': [http://pecl.php.net/intl intl PECL-utvidelsen] er ikke tilgjengelig for å håndtere Unicode-normaliseringen, faller tilbake til en langsommere ren-PHP-implementasjon.
+Om du kjører et nettsted med høy trafikk bør du lese litt om [//www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode-normalisering].",
'config-unicode-update-warning' => "'''Advarsel''': Den installerte versjonen av Unicode-normalisereren bruker en eldre versjon av [http://site.icu-project.org/ ICU-prosjektets] bibliotek.
-Du bør [http://www.mediawiki.org/wiki/Unicode_normalization_considerations oppgradere] om du er bekymret for å bruke Unicode.",
- 'config-no-db' => 'Fant ikke en passende databasedriver!',
- 'config-no-db-help' => 'Du må installere en databasedriver for PHP.
-Følgende databasetyper er støttet: $1.
+Du bør [//www.mediawiki.org/wiki/Unicode_normalization_considerations oppgradere] om du er bekymret for å bruke Unicode.",
+ 'config-no-db' => 'Fant ikke en passende databasedriver! Du må installere en databasedriver for PHP.
+Følgende databasetyper er støttet: $1
-Om du er på delt tjener, spør din tjenerleverandør om å installere en passende databasedriver.
+Om du er på delt vertsskap, spør din vertsleverandør om å installere en passende databasedriver.
Om du kompilerte PHP selv, rekonfigirer den med en aktivert databaseklient, for eksempel ved å bruke <code>./configure --with-mysql</code>.
-Om du installerte PHP fra en Debian eller Ubuntu-pakke må du også installere modulen php5-mysql.',
- 'config-no-fts3' => "'''Advarsel''': SQLite er kompilert uten [http://sqlite.org/fts3.html FTS3-modulen], søkefunksjoner vil ikke være tilgjengelig på dette bakstykket.",
+Om du installerte PHP fra en Debian- eller Ubuntu-pakke må du også installere modulen php5-mysql.',
+ 'config-no-fts3' => "'''Advarsel''': SQLite er kompilert uten [//sqlite.org/fts3.html FTS3-modulen], søkefunksjoner vil ikke være tilgjengelig på dette bakstykket.",
'config-register-globals' => "'''Advarsel: PHPs <code>[http://php.net/register_globals register_globals]</code>-alternativ er aktivert.'''
'''Deaktiver det om du kan.'''
MediaWiki vil fungere, men tjeneren din er utsatt for potensielle sikkerhetssårbarheter.",
@@ -9087,16 +11815,20 @@ MediaWiki krever funksjonene i denne modulen og vil ikke virke i denne konfigura
Hvis du kjører Mandrak, installer pakken php-xml.',
'config-pcre' => 'PCRE-støttemodulen ser ut til å mangle.
MediaWiki krever funksjonene for de Perl-kompatible regulære uttrykkene for å virke.',
+ 'config-pcre-no-utf8' => "'''Fatal''': PHPs PCRE modul ser ut til å være kompilert uten PCRE_UTF8-støtte.
+MediaWiki krever UTF-8-støtte for å fungere riktig.",
'config-memory-raised' => 'PHPs <code>memory_limit</code> er $1, økt til $2.',
'config-memory-bad' => "'''Advarsel:''' PHPs <code>memory_limit</code> er $1.
Dette er sannsynligvis for lavt.
Installasjonen kan mislykkes!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] er innstallert',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] er innstallert',
'config-apc' => '[http://www.php.net/apc APC] er innstallert',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] er innstallert',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] er installert',
- 'config-no-cache' => "'''Advarsel:''' Kunne ikke finne [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] eller [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''Advarsel:''' Kunne ikke finne [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] eller [http://www.iis.net/download/WinCacheForPhp WinCache].
Objekthurtiglagring er ikke aktivert.",
+ 'config-mod-security' => "'''Advarsel''': Din web-tjener har [http://modsecurity.org/ mod_security] påslått. Hvis denne er feilinnstilt, kan det gi problemer for MediaWiki eller annen programvare som tillater brukere å poste vilkårlig innhold.
+Sjekk [http://modsecurity.org/documentation/ mod_security-dokumentasjonen] eller ta kontakt med din nettleverandør hvis du opplever tilfeldige feil.",
'config-diff3-bad' => 'GNU diff3 ikke funnet.',
'config-imagemagick' => 'Fant ImageMagick: <code>$1</code>.
Bildeminiatyrisering vil aktiveres om du aktiverer opplastinger.',
@@ -9106,8 +11838,19 @@ Bildeminiatyrisering vil aktiveres om du aktiverer opplastinger.',
Bildeminiatyrisering vil være deaktivert.',
'config-no-uri' => "'''Feil:''' Kunne ikke bestemme gjeldende URI.
Installasjon avbrutt.",
+ 'config-no-cli-uri' => "'''Advarsel''': Ingen --scriptpath er angitt; bruker standard: <code>$1</code>.",
+ 'config-using-server' => 'Bruker servernavnet "<nowiki>$1</nowiki>".',
+ 'config-using-uri' => 'Bruker server-URL "<nowiki>$1$2</nowiki>".',
'config-uploads-not-safe' => "'''Advarsel:''' Din standardmappe for opplastinger <code>$1</code> er sårbar for kjøring av vilkårlige skript.
-Selv om MediaWiki sjekker alle opplastede filer for sikkerhetstrusler er det sterkt anbefalt å [http://www.mediawiki.org/wiki/Manual:Security#Upload_security lukke denne sikkerhetssårbarheten] før du aktiverer opplastinger.",
+Selv om MediaWiki sjekker alle opplastede filer for sikkerhetstrusler er det sterkt anbefalt å [//www.mediawiki.org/wiki/Manual:Security#Upload_security lukke denne sikkerhetssårbarheten] før du aktiverer opplastinger.",
+ 'config-no-cli-uploads-check' => "'''Advarsel:''' Din standard-katalog for opplastinger (<code>$1</code>) er ikke kontrollert for sårbarhet overfor vilkårlig skript-kjøring under CLI-installasjonen.",
+ 'config-brokenlibxml' => 'Ditt system har en kombinasjon av PHP- og libxml2-versjoner som er feilaktige og kan forårsake skjult dataødeleggelse i MediaWiki og andre web-applikasjoner.
+Oppgrader til PHP 5.2.9 eller nyere og libxml 2 2.7.3 eller nyere ([//bugs.php.net/bug.php?id=45996 Feil-liste for PHP]).
+Installasjon abortert.',
+ 'config-using531' => 'MediaWiki kan ikke brukes med PHP $1 på grunn av en feil med referanseparametere til <code>__call()</code>.
+Oppgrader til PHP 5.3.2 eller høyere, eller nedgrader til PHP 5.3.0 for å løse dette.
+Installasjonen avbrutt.',
+ 'config-suhosin-max-value-length' => 'Suhosin er installert og begrenser GET-parameterlengder til $1 bytes. MediaWiki\'s ResourceLoader-komponent klarer å komme rundt denne begrensningen, med med redusert ytelse. På mulig bør du sette suhosin.get.max_value_length til minst 1024 i php.ini, og sette $wgResourceLoaderMaxQueryLength til samme verdi i LocalSettings.php.',
'config-db-type' => 'Databasetype:',
'config-db-host' => 'Databasevert:',
'config-db-host-help' => 'Hvis databasetjeneren er på en annen tjener, skriv inn vertsnavnet eller IP-adressen her.
@@ -9120,13 +11863,19 @@ Hvis du installerer på en Windowstjener og bruker MySQL kan det hende at «loca
'config-db-wiki-settings' => 'Identifiser denne wikien',
'config-db-name' => 'Databasenavn:',
'config-db-name-help' => 'Velg et navn som identifiserer wikien din.
-Det bør ikke inneholde mellomrom eller bindestreker.
+Det bør ikke inneholde mellomrom.
Hvis du bruker en delt nettvert vil verten din enten gi deg et spesifikt databasenavn å bruke, eller la deg opprette databaser via kontrollpanelet.',
'config-db-name-oracle' => 'Databaseskjema:',
'config-db-install-account' => 'Brukerkonto for installasjon',
'config-db-username' => 'Databasebrukernavn:',
'config-db-password' => 'Databasepassord:',
+ 'config-db-password-empty' => 'Skriv inn et passord for den nye databasebrukeren: $1.
+Det er mulig å opprette brukere uten passord, men dette er ikke sikkert.',
+ 'config-db-install-username' => 'Skriv inn brukernavnet som vil bli brukt til å koble til databasen under installasjonsprosessen.
+Dette er ikke brukernavnet på MediaWiki-kontoen; dette er brukernavnet for databasen din.',
+ 'config-db-install-password' => 'Skriv inn passordet som vil bli brukt til å koble til databasen under installasjonsprosessen.
+Dette er ikke passordet på MediaWiki-kontoen; dette er passordet for databasen din.',
'config-db-install-help' => 'Skriv inn brukernavnet og passordet som vil bli brukt for å koble til databasen under installasjonsprosessen.',
'config-db-account-lock' => 'Bruk det samme brukernavnet og passordet under normal drift',
'config-db-wiki-account' => 'Brukerkonto for normal drift',
@@ -9134,7 +11883,7 @@ Hvis du bruker en delt nettvert vil verten din enten gi deg et spesifikt databas
Hvis kontoen ikke finnes, og installasjonskontoen har tilstrekkelige privilegier, vil denne brukerkontoen bli opprettet med et minimum av privilegier, tilstrekkelig for å operere wikien.',
'config-db-prefix' => 'Databasetabellprefiks:',
'config-db-prefix-help' => 'Hvis du trenger å dele en database mellom flere wikier, eller mellom MediaWiki og andre nettapplikasjoner, kan du velge å legge til et prefiks til alle tabellnavnene for å unngå konflikter.
-Ikke bruk mellomrom eller bindestreker.
+Ikke bruk mellomrom.
Dette feltet er vanligvis tomt.',
'config-db-charset' => 'Databasetegnsett',
@@ -9146,12 +11895,12 @@ Dette feltet er vanligvis tomt.',
I '''binary mode''' lagrer MediaWiki UTF-8 tekst til databasen i binærfelt.
Dette er mer effektivt enn MySQLs UTF-8 modus og tillater deg å bruke hele spekteret av Unicode-tegn.
I '''UTF-8 mode''' vil MySQL vite hvilket tegnsett dataene dine er i og kan presentere og konvertere det på en riktig måte,
-men det vil ikke la deg lagre tegn over «[http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes the Basic Multilingual Plane]».",
+men det vil ikke la deg lagre tegn over «[//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes the Basic Multilingual Plane]».",
'config-mysql-old' => 'MySQL $1 eller senere kreves, du har $2.',
'config-db-port' => 'Databaseport:',
'config-db-schema' => 'Skjema for MediaWiki',
- 'config-db-schema-help' => 'Ovennevnte skjema er som regel riktig.
-Bare endre dem hvis du vet at du trenger det.',
+ 'config-db-schema-help' => 'Dette skjemaet er som regel riktig.
+Bare endre det hvis du vet at du trenger det.',
'config-sqlite-dir' => 'SQLite datamappe:',
'config-sqlite-dir-help' => "SQLite lagrer alle data i en enkelt fil.
@@ -9168,33 +11917,39 @@ Vurder å plassere databasen et helt annet sted, for eksempel i <code>/var/lib/m
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'MediaWiki støtter følgende databasesystem:
$1
Hvis du ikke ser databasesystemet du prøver å bruke i listen nedenfor, følg instruksjonene det er lenket til over for å aktivere støtte.',
'config-support-mysql' => '* $1 er det primære målet for MediaWiki og er best støttet ([http://www.php.net/manual/en/mysql.installation.php hvordan kompilere PHP med MySQL-støtte])',
- 'config-support-postgres' => '* $1 er et populært åpen kildekode-databasesystem som er et alternativ til MySQL ([http://www.php.net/manual/en/pgsql.installation.php hvordan kompilere PHP med PostgreSQL-støtte])',
+ 'config-support-postgres' => '* $1 er et populært åpen kildekode-databasesystem som er et alternativ til MySQL ([http://www.php.net/manual/en/pgsql.installation.php hvordan kompilere PHP med PostgreSQL-støtte]). Det kan være noen små utestående feil og det anbefales ikke for bruk i et produksjonsmiljø.',
'config-support-sqlite' => '* $1 er et lettvekts-databasesystem som er veldig godt støttet. ([http://www.php.net/manual/en/pdo.installation.php hvordan kompilere PHP med SQLite-støtte], bruker PDO)',
'config-support-oracle' => '* $1 er en kommersiell bedriftsdatabase. ([http://www.php.net/manual/en/oci8.installation.php Hvordan kompilere PHP med OCI8-støtte])',
+ 'config-support-ibm_db2' => '* $1 er en kommersiell bedriftsdatabase.',
'config-header-mysql' => 'MySQL-innstillinger',
'config-header-postgres' => 'PostgreSQL-innstillinger',
'config-header-sqlite' => 'SQLite-innstillinger',
'config-header-oracle' => 'Oracle-innstillinger',
+ 'config-header-ibm_db2' => 'IBM DB2-innstillinger',
'config-invalid-db-type' => 'Ugyldig databasetype',
'config-missing-db-name' => 'Du må skrive inn en verdi for «Databasenavn»',
+ 'config-missing-db-host' => 'Du må skrive inn en verdi for «Databasevert»',
'config-missing-db-server-oracle' => 'Du må skrive inn en verdi for «Database TNS»',
'config-invalid-db-server-oracle' => 'Ugyldig database-TNS «$1».
Bruk bare ASCII-bokstaver (a-z, A-Z), tall (0-9) og undestreker (_) og punktum (.).',
'config-invalid-db-name' => 'Ugyldig databasenavn «$1».
-Bruk bare ASCII-bokstaver (a-z, A-Z), tall (0-9) og undestreker (_).',
+Bruk bare ASCII-bokstaver (a-z, A-Z), tall (0-9), undestreker (_) og bindestreker (-).',
'config-invalid-db-prefix' => 'Ugyldig databaseprefiks «$1».
-Bruk bare ASCII-bokstaver (a-z, A-Z), tall (0-9) og undestreker (_).',
+Bruk bare ASCII-bokstaver (a-z, A-Z), tall (0-9), undestreker (_) og bindestreker (-).',
'config-connection-error' => '$1.
Sjekk verten, brukernavnet og passordet nedenfor og prøv igjen.',
'config-invalid-schema' => 'Ugyldig skjema for MediaWiki «$1».
Bruk bare ASCII-bokstaver (a-z, A-Z), tall (0-9) og undestreker (_).',
+ 'config-db-sys-create-oracle' => 'Installasjonsprogrammet støtter kun bruk av en SYSDBA-konto for opprettelse av en ny konto.',
+ 'config-db-sys-user-exists-oracle' => 'Brukerkontoen «$1» finnes allerede. SYSDBA kan kun brukes for oppretting av nye kontoer!',
'config-postgres-old' => 'PostgreSQL $1 eller senere kreves, du har $2.',
'config-sqlite-name-help' => 'Velg et navn som identifiserer wikien din.
Ikke bruk mellomrom eller bindestreker.
@@ -9236,6 +11991,9 @@ Du kan nå [$1 begynne å bruke wikien din].
Hvis du ønsker å regenerere <code>LocalSettings.php</code>-filen din, klikk på knappen nedenfor.
Dette er '''ikke anbefalt''' med mindre du har problemer med wikien din.",
+ 'config-upgrade-done-no-regenerate' => 'Oppgradering fullført.
+
+Du kan nå [$1 begynne å bruke wikien din].',
'config-regenerate' => 'Regenerer LocalSettings.php →',
'config-show-table-status' => 'SHOW TABLE STATUS etterspørselen mislyktes!',
'config-unknown-collation' => "'''Advarsel:''' Databasen bruker en ukjent sortering.",
@@ -9259,7 +12017,8 @@ MyISAM-databaser har en tendens til å bli ødelagt oftere enn InnoDB-databaser.
Dette er mer effektivt enn MySQLs UTF-8 modus og tillater deg å bruke hele spekteret av Unicode-tegn.
I '''UTF-8 mode''' vil MySQL vite hvilket tegnsett dataene dine er i og kan presentere og konvertere det på en riktig måte,
-men det vil ikke la deg lagre tegn over «[http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes the Basic Multilingual Plane]».",
+men det vil ikke la deg lagre tegn over «[//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes the Basic Multilingual Plane]».",
+ 'config-ibm_db2-low-db-pagesize' => "DB2-databasen din har et standard tabellområde med en utilstrekkelig pagesize. Pagesize må være '''32K''' eller større.",
'config-site-name' => 'Navn på wiki:',
'config-site-name-help' => 'Dette vil vises i tittellinjen i nettleseren og diverse andre steder.',
'config-site-name-blank' => 'Skriv inn et nettstedsnavn.',
@@ -9273,6 +12032,8 @@ Alle sidetitler i dette navnerommet starter med et gitt prefiks som du kan angi
Tradisjonelt er dette prefikset avledet fra navnet på wikien, men det kan ikke innholde punkttegn som «#» eller «:».",
'config-ns-invalid' => 'Det angitte navnerommet «<nowiki>$1</nowiki>» er ugyldig.
Angi et annet prosjektnavnerom.',
+ 'config-ns-conflict' => 'Det angitte navnerommet «<nowiki>$1</nowiki>» er i konflikt med et standard MediaWiki-navnerom.
+Angi et annet prosjekt-navnerom.',
'config-admin-box' => 'Administratorkonto',
'config-admin-name' => 'Ditt navn:',
'config-admin-password' => 'Passord:',
@@ -9286,9 +12047,10 @@ Angi et annet brukernavn.',
'config-admin-password-same' => 'Passordet skal ikke være det samme som brukernavnet.',
'config-admin-password-mismatch' => 'De to passordene du skrev inn samsvarte ikke.',
'config-admin-email' => 'E-postadresse:',
- 'config-admin-email-help' => 'Skriv inn en e-postadresse her for at du skal kunne motta e-post fra andre brukere på wikien, tilbakestille passordet ditt, og bli varslet om endringer på sider på overvåkningslisten din.',
+ 'config-admin-email-help' => 'Skriv inn en e-postadresse her for at du skal kunne motta e-post fra andre brukere på wikien, tilbakestille passordet ditt, og bli varslet om endringer på sider på overvåkningslisten din. Du kan la dette feltet stå tomt.',
'config-admin-error-user' => 'Intern feil ved opprettelse av en admin med navnet «<nowiki>$1</nowiki>».',
'config-admin-error-password' => 'Intern feil ved opprettelse av passord for admin «<nowiki>$1</nowiki>»: <pre>$2</pre>',
+ 'config-admin-error-bademail' => 'Du har skrevet inn en ugyldig e-postadresse.',
'config-subscribe' => 'Abonner på [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce e-postlisten for utgivelsesannonseringer].',
'config-subscribe-help' => 'Dette er en lav-volums e-postliste brukt til utgivelsesannonseringer, herunder viktige sikkerhetsannonseringer.
Du bør abonnere på den og oppdatere MediaWikiinstallasjonen din når nye versjoner kommer ut.',
@@ -9313,12 +12075,11 @@ En wiki med '''{{int:config-profile-no-anon}}''' tilbyr ekstra ansvarlighet, men
'''{{int:config-profile-fishbowl}}'''-scenariet tillater godkjente brukere å redigere, mens publikum kan se sider, og også historikken.
En '''{{int:config-profile-private}}''' tillater kun godkjente brukere å se sider, den samme gruppen som får lov til å redigere dem.
-Mer komplekse konfigurasjoner av brukerrettigheter er tilgjengelig etter installasjon, se det [http://www.mediawiki.org/wiki/Manual:User_rights relevante manualavsnittet].",
+Mer komplekse konfigurasjoner av brukerrettigheter er tilgjengelig etter installasjon, se det [//www.mediawiki.org/wiki/Manual:User_rights relevante manualavsnittet].",
'config-license' => 'Opphavsrett og lisens:',
'config-license-cc-by-sa' => 'Creative Commons Navngivelse Del på samme vilkår',
'config-license-cc-by-nc-sa' => 'Creative Commons Navngivelse Ikke-kommersiell Del på samme vilkår',
- 'config-license-gfdl-old' => 'GNU Free Documentation License 1.2',
- 'config-license-gfdl-current' => 'GNU Free Documentation License 1.3 eller nyere',
+ 'config-license-cc-0' => 'Creative Commons Zero',
'config-license-pd' => 'Offentlig rom',
'config-license-cc-choose' => 'Velg en egendefinert Creative Commons-lisens',
'config-email-settings' => 'E-postinnstillinger',
@@ -9342,7 +12103,7 @@ Mange e-posttjenere krever at minst domenenavnet må være gyldig.',
'config-upload-settings' => 'Bilde- og filopplastinger',
'config-upload-enable' => 'Aktiver filopplastinger',
'config-upload-help' => 'Filopplastinger kan potensielt utsette tjeneren din for sikkerhetsrisikoer.
-For mer informasjon, les [http://www.mediawiki.org/wiki/Manual:Security sikkerhetsseksjonen] i manualen.
+For mer informasjon, les [//www.mediawiki.org/wiki/Manual:Security sikkerhetsseksjonen] i manualen.
For å aktivere filopplastinger, endre modusen i <code>images</code>-undermappen i MediaWikis rotmappe slik at nettjeneren kan skrive til den.
Aktiver så dette alternativet.',
@@ -9355,8 +12116,8 @@ Last opp et bilde i passende størrelse og skriv inn nettadressen her.
Hvis du ikke ønsker en logo, la denne boksen være tom.',
'config-instantcommons' => 'Aktiver Instant Commons',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons Instant Commons] er en funksjon som gjør det mulig for wikier å bruke bilder, lyder og andre media funnet på nettstedet [http://commons.wikimedia.org/ Wikimedia Commons].
-For å gjøre dette krever MediaWiki tilgang til internett.
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] er en funksjon som gjør det mulig for wikier å bruke bilder, lyder og andre media funnet på nettstedet [//commons.wikimedia.org/ Wikimedia Commons].
+For å gjøre dette krever MediaWiki tilgang til internett.
For mer informasjon om denne funksjonen, inklusive instruksjoner om hvordan man setter opp dette for andre wikier enn Wikimedia Commons, konsulter [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos manualen].',
'config-cc-again' => 'Velg igjen...',
@@ -9368,12 +12129,79 @@ For mer informasjon om denne funksjonen, inklusive instruksjoner om hvordan man
'config-install-extensions' => 'Inkludert utvidelser',
'config-install-database' => 'Setter opp database',
'config-install-user' => 'Oppretter databasebruker',
+ 'config-install-user-alreadyexists' => 'Brukeren «$1» finnes allerede',
+ 'config-install-user-create-failed' => 'Opprettelse av brukeren «$1» mislyktes: $2',
+ 'config-install-user-grant-failed' => 'Å gi tillatelse til brukeren «$1» mislyktes: $2',
'config-install-tables' => 'Oppretter tabeller',
+ 'config-install-mainpage-failed' => 'Kunne ikke sette inn hovedside: $1',
+ 'config-help' => 'hjelp',
+ 'mainpagetext' => "'''MediaWiki-programvaren er nå installert.'''",
+ 'mainpagedocfooter' => 'Se [//meta.wikimedia.org/wiki/Help:Contents brukerveiledningen] for informasjon om hvordan du bruker wiki-programvaren.
+
+==Ã… starte==
+*[//www.mediawiki.org/wiki/Manual:Configuration_settings Oppsettsliste]
+*[//www.mediawiki.org/wiki/Manual:FAQ Ofte stilte spørsmål]
+*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-postliste]',
+);
+
+/** Occitan (Occitan) */
+$messages['oc'] = array(
+ 'mainpagetext' => "'''MediaWiki es estat installat amb succès.'''",
+ 'mainpagedocfooter' => "Consultatz lo [//meta.wikimedia.org/wiki/Ajuda:Contengut Guida de l'utilizaire] per mai d'entresenhas sus l'utilizacion d'aqueste logicial.
+
+== Començar amb MediaWiki ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista dels paramètres de configuracion]
+* [//www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discussions de las parucions de MediaWiki]",
+);
+
+/** Ossetic (Ирон)
+ * @author Amikeco
+ */
+$messages['os'] = array(
+ 'config-page-language' => 'Æвзаг',
+ 'mainpagetext' => "'''Вики-Ñкрипт «MediaWiki» æнтыÑтджынæй æвæрд æрцыд.'''",
+);
+
+/** Punjabi (ਪੰਜਾਬੀ) */
+$messages['pa'] = array(
+ 'mainpagetext' => "'''ਮੀਡਿਆਵਿਕਿ ਠੀਕ ਤਰà©à¨¹à¨¾à¨‚ ਇੰਸਟਾਲ ਹੋ ਗਿਆ ਹੈ।'''",
+);
+
+/** Pampanga (Kapampangan) */
+$messages['pam'] = array(
+ 'mainpagetext' => "'''Melaus ing pamipalyari ning MediaWiki.'''",
+ 'mainpagedocfooter' => "Basan me ing [//meta.wikimedia.org/wiki/Help:Contents User's Guide] para king impormasiun keng pamangamit ning wiki software.
+
+== Pamagumpisa ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Picard (Picard) */
+$messages['pcd'] = array(
+ 'mainpagetext' => "'''MediaWiki o té instalé aveuc victoère.'''",
+);
+
+/** Deitsch (Deitsch)
+ * @author Xqt
+ */
+$messages['pdc'] = array(
+ 'mainpagedocfooter' => "Hilf fer's Yuuse unn Konfiguriere vun de Wiki-Software kansch finne im [//meta.wikimedia.org/wiki/Help:Contents Handbuch fer Yuuser].
+
+== Hilf zum Schtaerte ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lischt vun Gnepp zum Konfiguriere]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Eposchde-Lischt fer neie MediaWiki-Versione]",
);
/** Polish (Polski)
* @author Holek
* @author Sp5uhe
+ * @author Woytecr
*/
$messages['pl'] = array(
'config-desc' => 'Instalator MediaWiki',
@@ -9383,7 +12211,7 @@ $messages['pl'] = array(
Aby oprogramowanie zostało zaktualizowane musisz wstawić wartość <code>$wgUpgradeKey</code> w poniższe pole.
Odnajdziesz jÄ… w LocalSettings.php.',
'config-localsettings-cli-upgrade' => 'Wykryto obecność pliku LocalSettings.php.
-Do wykonania aktualizacji instalacji należy dodać opcję --upgrade=yes.',
+Aktualizację należy wykonać poprzez uruchomienie update.php',
'config-localsettings-key' => 'Klucz aktualizacji',
'config-localsettings-badkey' => 'Podany klucz jest nieprawidłowy',
'config-upgrade-key-missing' => 'Wykryto zainstalowane wcześniej MediaWiki.
@@ -9428,22 +12256,22 @@ Sprawdź plik php.ini i upewnij się, że <code>session.save_path</code> wskazuj
'config-help-restart' => 'Czy chcesz usunąć wszystkie zapisane dane, które podałeś i uruchomić ponownie proces instalacji?',
'config-restart' => 'Tak, zacznij od nowa',
'config-welcome' => '=== Sprawdzenie środowiska instalacji ===
-Wykonywane są podstawowe testy sprawdzające czy to środowisko jest odpowiednie dla instalacji MediaWiki.
+Wykonywane są podstawowe testy sprawdzające czy to środowisko jest odpowiednie dla instalacji MediaWiki.
Jeśli potrzebujesz pomocy podczas instalacji załącz wyniki tych testów.',
'config-copyright' => "=== Prawa autorskie i warunki użytkowania ===
$1
-To oprogramowanie jest wolne; możesz je rozprowadzać dalej i modyfikować zgodnie z warunkami licencji GNU General Public License opublikowanej przez Free Software Foundation w wersji 2 tej licencji lub (według Twojego wyboru) którejś z późniejszych jej wersji.
+To oprogramowanie jest wolne; możesz je rozprowadzać dalej i modyfikować zgodnie z warunkami licencji GNU General Public License opublikowanej przez Free Software Foundation w wersji 2 tej licencji lub (według Twojego wyboru) którejś z późniejszych jej wersji.
Niniejsze oprogramowanie jest rozpowszechniane w nadziei, że będzie użyteczne, ale '''bez żadnej gwarancji'''; nawet bez domniemanej gwarancji '''handlowej''' lub '''przydatności do określonego celu'''.
-Zobacz treść licencji GNU General Public License, aby uzyskać więcej szczegółów.
+Zobacz treść licencji GNU General Public License, aby uzyskać więcej szczegółów.
Razem z oprogramowaniem powinieneś otrzymać <doclink href=Copying>kopię licencji GNU General Public License</doclink>. Jeśli jej nie otrzymałeś, napisz do Free Software Foundation, Inc, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. lub [http://www.gnu.org/copyleft/gpl.html przeczytaj ją online].",
- 'config-sidebar' => '* [http://www.mediawiki.org Strona domowa MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents Podręcznik użytkownika]
-* [http://www.mediawiki.org/wiki/Manual:Contents Podręcznik administratora]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Odpowiedzi na często zadawane pytania]
+ 'config-sidebar' => '* [//www.mediawiki.org Strona domowa MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents Podręcznik użytkownika]
+* [//www.mediawiki.org/wiki/Manual:Contents Podręcznik administratora]
+* [//www.mediawiki.org/wiki/Manual:FAQ Odpowiedzi na często zadawane pytania]
----
* <doclink href=Readme>Przeczytaj to</doclink>
* <doclink href=ReleaseNotes>Informacje o tej wersji</doclink>
@@ -9454,21 +12282,21 @@ Możesz teraz zainstalować MediaWiki.',
'config-env-bad' => 'Środowisko oprogramowania zostało sprawdzone.
Nie możesz zainstalować MediaWiki.',
'config-env-php' => 'Zainstalowane jest PHP w wersji $1.',
+ 'config-env-php-toolow' => 'Zainstalowane jest PHP $1.
+Jednak MediaWiki wymaga PHP $2 lub nowszego.',
'config-unicode-using-utf8' => 'Korzystanie z normalizacji Unicode utf8_normalize.so napisanej przez Brion Vibbera.',
'config-unicode-using-intl' => 'Korzystanie z [http://pecl.php.net/intl rozszerzenia intl PECL] do normalizacji Unicode.',
'config-unicode-pure-php-warning' => "'''Uwaga!''' [http://pecl.php.net/intl Rozszerzenie intl PECL] do obsługi normalizacji Unicode nie jest dostępne. Użyta zostanie mało wydajna zwykła implementacja w PHP.
-Jeśli prowadzisz stronę o dużym natężeniu ruchu, powinieneś zapoznać się z informacjami o [http://www.mediawiki.org/wiki/Unicode_normalization_considerations normalizacji Unicode].",
+Jeśli prowadzisz stronę o dużym natężeniu ruchu, powinieneś zapoznać się z informacjami o [//www.mediawiki.org/wiki/Unicode_normalization_considerations normalizacji Unicode].",
'config-unicode-update-warning' => "'''Uwaga''' – zainstalowana wersja normalizacji Unicode korzysta z nieaktualnej biblioteki [http://site.icu-project.org/ projektu ICU].
-Powinieneś [http://www.mediawiki.org/wiki/Unicode_normalization_considerations zrobić aktualizację] jeśli chcesz korzystać w pełni z Unicode.",
- 'config-no-db' => 'Nie można odnaleźć właściwego sterownika bazy danych!',
- 'config-no-db-help' => 'Należy zainstalować sterownik bazy danych dla PHP.
-Obsługiwane są następujące typy baz danych: $1.
-
-Jeżeli korzystasz ze współdzielonego hostingu, zwróć się do administratora o zainstalowanie odpowiedniego sterownika bazy danych.
-Jeśli skompilowałeś PHP samodzielnie, skonfiguruj je ponownie z włączonym klientem bazy danych, na przykład za pomocą polecenia
-<code>./configure --with-mysql</code>.
+Powinieneś [//www.mediawiki.org/wiki/Unicode_normalization_considerations zrobić aktualizację] jeśli chcesz korzystać w pełni z Unicode.",
+ 'config-no-db' => 'Nie można odnaleźć właściwego sterownika bazy danych! Musisz zainstalować sterownik bazy danych dla PHP.
+Można użyć następujących typów baz danych: $1.
+
+Jeżeli korzystasz ze współdzielonego hostingu, zwróć się do administratora o zainstalowanie odpowiedniego sterownika bazy danych.
+Jeśli skompilowałeś PHP samodzielnie, skonfiguruj je ponownie z włączonym klientem bazy danych, na przykład za pomocą polecenia <code>./configure --with-mysql</code>.
Jeśli zainstalowałeś PHP jako pakiet Debiana lub Ubuntu, musisz również zainstalować moduł php5-mysql.',
- 'config-no-fts3' => "'''Uwaga''' – SQLite został skompilowany bez [http://sqlite.org/fts3.html modułu FTS3] – funkcje wyszukiwania nie będą dostępne.",
+ 'config-no-fts3' => "'''Uwaga''' – SQLite został skompilowany bez [//sqlite.org/fts3.html modułu FTS3] – funkcje wyszukiwania nie będą dostępne.",
'config-register-globals' => "'''Uwaga – w konfiguracji PHP włączona jest opcja <code>[http://php.net/register_globals register_globals]</code>.'''
'''Jeśli możesz, wyłącz ją.'''
MediaWiki będzie działać, ale Twój serwer może być narażony potencjalnymi lukami w zabezpieczeniach.",
@@ -9494,14 +12322,14 @@ MediaWiki do pracy wymaga funkcji obsługi wyrażeń regularnych kompatybilnej z
'config-pcre-no-utf8' => "'''BÅ‚Ä…d krytyczny''' – wydaje siÄ™, że moduÅ‚ PCRE w PHP zostaÅ‚ skompilowany bez wsparcia dla UTFâ€8.
MediaWiki wymaga wsparcia dla UTFâ€8 do prawidÅ‚owego dziaÅ‚ania.",
'config-memory-raised' => 'PHP <code>memory_limit</code> było ustawione na $1, zostanie zwiększone do $2.',
- 'config-memory-bad' => "'''Uwaga:''' PHP <code>memory_limit</code> jest ustawione na $1.
+ 'config-memory-bad' => "'''Uwaga:''' PHP <code>memory_limit</code> jest ustawione na $1.
To jest prawdopodobnie zbyt mało.
Instalacja może się nie udać!",
'config-xcache' => '[Http://trac.lighttpd.net/xcache/ XCache] jest zainstalowany',
'config-apc' => '[Http://www.php.net/apc APC] jest zainstalowany',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] jest zainstalowany',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] jest zainstalowany',
- 'config-no-cache' => "'''Uwaga:''' Nie można odnaleźć [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] lub [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''Uwaga:''' Nie można odnaleźć [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] lub [http://www.iis.net/download/WinCacheForPhp WinCache].
Buforowanie obiektów nie będzie możliwe.",
'config-diff3-bad' => 'Nie znaleziono GNU diff3.',
'config-imagemagick' => 'Odnaleziono ImageMagick <code>$1</code>.
@@ -9512,13 +12340,14 @@ Miniatury grafik będą generowane jeśli włączysz przesyłanie plików.',
Tworzenie miniatur grafik będzie wyłączone.',
'config-no-uri' => "'''Błąd.''' Nie można określić aktualnego URI.
Instalacja została przerwana.",
+ 'config-using-server' => 'Przy użyciu nazwy serwera „<nowiki>$1</nowiki>“.',
'config-uploads-not-safe' => "'''Uwaga''' – domyślny katalog do którego zapisywane są przesyłane pliki <code>$1</code> jest podatny na wykonanie dowolnego skryptu.
-Chociaż MediaWiki sprawdza wszystkie przesłane pliki pod kątem bezpieczeństwa, zaleca się jednak, aby [http://www.mediawiki.org/wiki/Manual:Security#Upload_security zamknąć tę lukę w zabezpieczeniach] przed włączeniem przesyłania plików.",
+Chociaż MediaWiki sprawdza wszystkie przesłane pliki pod kątem bezpieczeństwa, zaleca się jednak, aby [//www.mediawiki.org/wiki/Manual:Security#Upload_security zamknąć tę lukę w zabezpieczeniach] przed włączeniem przesyłania plików.",
'config-brokenlibxml' => 'Twój system jest kombinacją wersji PHP i libxml2, które zawierają błędy mogące powodować ukryte uszkodzenia danych w MediaWiki i innych aplikacjach sieci web.
-Wykonaj aktualizację PHP do wersji 5.2.9 lub późniejszej oraz libxml2 do wersji 2.7.3 lub późniejszej ([http://bugs.php.net/bug.php?id=45996 błąd w PHP]).
+Wykonaj aktualizację PHP do wersji 5.2.9 lub późniejszej oraz libxml2 do wersji 2.7.3 lub późniejszej ([//bugs.php.net/bug.php?id=45996 błąd w PHP]).
Instalacja została przerwana.',
- 'config-using531' => 'PHP $1 nie współpracuje poprawnie z MediaWiki z powodu błędu dotyczącego referencyjnych argumentów funkcji <code>__call()</code>.
-Uaktualnij do PHP 5.3.2 lub nowszego. Możesz również cofnąć wersję do PHP 5.3.0 aby naprawić ten błąd ([http://bugs.php.net/bug.php?id=50394 błąd w PHP]).
+ 'config-using531' => 'MediaWiki nie może być używane z PHP $1 z powodu błędu dotyczącego referencyjnych argumentów funkcji <code>__call()</code>.
+Uaktualnij do PHP 5.3.2 lub nowszego. Możesz również cofnąć wersję do PHP 5.3.0, aby naprawić ten błąd.
Instalacja została przerwana.',
'config-db-type' => 'Typ bazy danych',
'config-db-host' => 'Adres serwera bazy danych',
@@ -9526,12 +12355,14 @@ Instalacja została przerwana.',
Jeśli korzystasz ze współdzielonego hostingu, operator serwera powinien podać Ci prawidłową nazwę serwera w swojej dokumentacji.
-Jeśli instalujesz oprogramowanie na serwerze Windowsowym i korzystasz z MySQL, użycie „localhost†może nie zadziałać jako nazwa hosta. Jeśli wystąpi ten problem użyj „127.0.0.1†jako lokalnego adresu IP.',
+Jeśli instalujesz oprogramowanie na serwerze Windowsowym i korzystasz z MySQL, użycie „localhost†może nie zadziałać jako nazwa hosta. Jeśli wystąpi ten problem użyj „127.0.0.1†jako lokalnego adresu IP.
+
+Jeżeli korzystasz z PostgreSQL, pozostaw to pole puste, aby poÅ‚Ä…czyć siÄ™ poprzez gniazdo Unixâ€a.',
'config-db-host-oracle' => 'TNS bazy danych',
'config-db-host-oracle-help' => 'Wprowadź prawidłową [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm nazwę połączenia lokalnego]. Plik „tnsnames.ora†musi być widoczny dla instalatora.<br />Jeśli używasz biblioteki klienckiej 10g lub nowszej możesz również skorzystać z metody nazw [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm łatwego łączenia].',
'config-db-wiki-settings' => 'Zidentyfikuj tÄ™ wiki',
'config-db-name' => 'Nazwa bazy danych',
- 'config-db-name-help' => 'Wybierz nazwę, która zidentyfikuje Twoją wiki.
+ 'config-db-name-help' => 'Wybierz nazwę, która zidentyfikuje Twoją wiki.
Nie może ona zawierać spacji.
Jeśli korzystasz ze współdzielonego hostingu, dostawca usługi hostingowej może wymagać użycia konkretnej nazwy bazy danych lub pozwalać na tworzenie baz danych za pośrednictwem panelu użytkownika.',
@@ -9539,6 +12370,8 @@ Jeśli korzystasz ze współdzielonego hostingu, dostawca usługi hostingowej mo
'config-db-install-account' => 'Konto użytkownika dla instalatora',
'config-db-username' => 'Nazwa użytkownika bazy danych',
'config-db-password' => 'Hasło bazy danych',
+ 'config-db-password-empty' => 'Wprowadź hasło dla nowego użytkownika bazy danych: $1.
+Choć istnieje możliwość tworzenia użytkowników bez hasła, nie jest to bezpieczne.',
'config-db-install-username' => 'Wprowadź nazwę użytkownika, który będzie używany do łączenia się z bazą danych podczas procesu instalacji.
Nie jest to nazwa konta MediaWiki, a użytkownika bazy danych.',
'config-db-install-password' => 'Wprowadź hasło, które będzie wykorzystywane do łączenia się z bazą danych w procesie instalacji.
@@ -9556,22 +12389,26 @@ To nie jest hasło konta MediaWiki, lecz hasło do bazy danych.',
'config-db-schema' => 'Schemat dla MediaWiki',
'config-db-schema-help' => 'Ten schemat jest zazwyczaj właściwy.
Zmień go wyłącznie jeśli jesteś pewien, że powinieneś.',
+ 'config-pg-test-error' => "Nie można połączyć się z bazą danych''' $1 ''': $2",
'config-sqlite-dir' => 'Katalog danych SQLite',
'config-oracle-def-ts' => 'Domyślna przestrzeń tabel',
'config-oracle-temp-ts' => 'Przestrzeń tabel tymczasowych',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'MediaWiki może współpracować z następującymi systemami baz danych:
$1
Jeśli system baz danych, z którego chcesz skorzystać nie jest wymieniony, postępuj zgodnie z instrukcjami aby móc z niego skorzystać.',
'config-support-mysql' => '* $1 jest domyślną bazą danych dla MediaWiki i jest najlepiej wspierane ([http://www.php.net/manual/en/mysql.installation.php jak skompilować PHP ze wsparciem dla MySQL])',
- 'config-support-postgres' => '* $1 jest popularnym systemem baz danych z otwartym kodem; jest alternatywą dla MySQL ([http://www.php.net/manual/en/pgsql.installation.php jak skompilować PHP ze wsparciem dla PostgreSQL])',
+ 'config-support-postgres' => '* $1 jest popularnym systemem baz danych z otwartym kodem alternatywnym dla MySQL ([http://www.php.net/manual/en/pgsql.installation.php jak skompilować PHP ze wsparciem dla PostgreSQL]). Z powodu możliwości wystąpienia drobnych błędów, nie jest zalecane użycie go w środowisku produkcyjnym.',
'config-support-sqlite' => '* $1 jest lekkim systemem bazy danych, który jest bardzo dobrze wspierany. ([http://www.php.net/manual/en/pdo.installation.php Jak skompilować PHP ze wsparciem dla SQLite], korzystając z PDO)',
'config-support-oracle' => '* $1 jest komercyjną profesjonalną bazą danych. ([http://www.php.net/manual/en/oci8.installation.php Jak skompilować PHP ze wsparciem dla OCI8])',
+ 'config-support-ibm_db2' => '* $1 jest komercyjnÄ… zaawansowanÄ… bazÄ… danych.',
'config-header-mysql' => 'Ustawienia MySQL',
'config-header-postgres' => 'Ustawienia PostgreSQL',
'config-header-sqlite' => 'Ustawienia SQLite',
'config-header-oracle' => 'Ustawienia Oracle',
+ 'config-header-ibm_db2' => 'ustawienia dla IBM DB2',
'config-invalid-db-type' => 'Nieprawidłowy typ bazy danych',
'config-missing-db-name' => 'Należy wpisać wartość w polu „Nazwa bazy danychâ€',
'config-missing-db-host' => 'Musisz wpisać wartość w polu „Serwer bazy danychâ€',
@@ -9582,28 +12419,30 @@ Używaj wyłącznie liter ASCII (a-z, A-Z), cyfr (0-9), podkreślenia (_) i krop
Używaj wyłącznie liter ASCII (a-z, A-Z), cyfr (0-9), podkreślenia (_) lub znaku odejmowania (-).',
'config-invalid-db-prefix' => 'NieprawidÅ‚owy prefiks bazy danych „$1â€.
Używaj wyłącznie liter ASCII (a-z, A-Z), cyfr (0-9), podkreślenia (_) lub znaku odejmowania (-).',
- 'config-connection-error' => '$1.
+ 'config-connection-error' => '$1.
Sprawdź adres serwera, nazwę użytkownika i hasło, a następnie spróbuj ponownie.',
'config-invalid-schema' => 'NieprawidÅ‚owy schemat dla MediaWiki „$1â€.
Używaj wyłącznie liter ASCII (a-z, A-Z), cyfr (0-9) i podkreślenia (_).',
+ 'config-db-sys-create-oracle' => 'Instalator może wykorzystać wyłącznie konto SYSDBA do tworzenia nowych kont użytkowników.',
+ 'config-db-sys-user-exists-oracle' => 'Konto użytkownika „$1“ już istnieje. SYSDBA można użyć tylko do utworzenia nowego konta!',
'config-postgres-old' => 'Wymagany jest PostgreSQL $1 lub nowszy; korzystasz z $2.',
'config-sqlite-name-help' => 'Wybierz nazwę, która będzie identyfikować Twoją wiki.
Nie wolno używać spacji ani myślników.
Zostanie ona użyta jako nazwa pliku danych SQLite.',
- 'config-sqlite-mkdir-error' => 'BÅ‚Ä…d podczas tworzenia katalogu dla danych „$1â€.
+ 'config-sqlite-mkdir-error' => 'BÅ‚Ä…d podczas tworzenia katalogu dla danych „$1â€.
Sprawdź lokalizację i spróbuj ponownie.',
'config-sqlite-dir-unwritable' => 'Nie można zapisać do katalogu „$1â€.
Zmień uprawnienia dostępu do katalogu tak, aby serwer WWW mógł pisać do niego, a następnie spróbuj ponownie.',
- 'config-sqlite-connection-error' => '$1.
+ 'config-sqlite-connection-error' => '$1.
Sprawdź katalog danych oraz nazwę bazy danych, a następnie spróbuj ponownie.',
'config-sqlite-readonly' => 'Plik <code>$1</code> nie jest zapisywalny.',
'config-sqlite-cant-create-db' => 'Nie można utworzyć pliku bazy danych <code>$1</code>.',
'config-sqlite-fts3-downgrade' => 'Brak wsparcia FTS3 dla PHP. Tabele zostały cofnięte',
- 'config-can-upgrade' => "W bazie danych są już tabele MediaWiki.
+ 'config-can-upgrade' => "W bazie danych są już tabele MediaWiki.
Aby uaktualnić je do MediaWiki $1, kliknij '''Dalej'''.",
- 'config-upgrade-done-no-regenerate' => 'Aktualizacja zakończona.
+ 'config-upgrade-done-no-regenerate' => 'Aktualizacja zakończona.
Możesz wreszcie [$1 zacząć korzystać ze swojej wiki].',
'config-regenerate' => 'Ponowne generowanie LocalSettings.php →',
@@ -9613,7 +12452,7 @@ Możesz wreszcie [$1 zacząć korzystać ze swojej wiki].',
'config-db-web-help' => 'Wybierz nazwę użytkownika i hasło, z których korzystać będzie serwer WWW do łączenia się z serwerem baz danych, podczas zwykłej pracy z wiki.',
'config-db-web-account-same' => 'Użyj tego samego konta, co dla instalacji',
'config-db-web-create' => 'Utwórz konto, jeśli jeszcze nie istnieje',
- 'config-db-web-no-create-privs' => 'Konto podane do wykonania instalacji nie ma wystarczających uprawnień, aby utworzyć nowe konto.
+ 'config-db-web-no-create-privs' => 'Konto podane do wykonania instalacji nie ma wystarczających uprawnień, aby utworzyć nowe konto.
Konto, które wskazałeś tutaj musi już istnieć.',
'config-mysql-engine' => 'Silnik przechowywania',
'config-mysql-innodb' => 'InnoDB',
@@ -9635,7 +12474,7 @@ Podaj inną przestrzeń nazw projektu.',
'config-admin-name' => 'Administrator',
'config-admin-password' => 'Hasło',
'config-admin-password-confirm' => 'Hasło powtórnie',
- 'config-admin-help' => 'Wprowadź preferowanÄ… nazwÄ™ użytkownika, na przykÅ‚ad „Jan Kowalskiâ€.
+ 'config-admin-help' => 'Wprowadź preferowanÄ… nazwÄ™ użytkownika, na przykÅ‚ad „Jan Kowalskiâ€.
Tej nazwy będziesz używać do logowania się do wiki.',
'config-admin-name-blank' => 'Wpisz nazwę użytkownika, który będzie administratorem.',
'config-admin-name-invalid' => 'Podana nazwa użytkownika „<nowiki>$1</nowiki>†jest nieprawidłowa.
@@ -9644,7 +12483,7 @@ Podaj innÄ… nazwÄ™.',
'config-admin-password-same' => 'Hasło nie może być takie samo jak nazwa użytkownika.',
'config-admin-password-mismatch' => 'Wprowadzone dwa hasła różnią się między sobą.',
'config-admin-email' => 'Adres eâ€mail',
- 'config-admin-email-help' => 'Wpisz adres eâ€mail, aby mieć możliwość odbierania eâ€maili od innych użytkowników na wiki, zresetowania hasÅ‚a oraz otrzymywania powiadomieÅ„ o zmianach na stronach z listy obserwowanych.',
+ 'config-admin-email-help' => 'Wpisz adres eâ€mail, aby mieć możliwość odbierania eâ€maili od innych użytkowników wiki, zresetowania hasÅ‚a oraz otrzymywania powiadomieÅ„ o zmianach na stronach z listy obserwowanych. Możesz pozostawić to pole niewypeÅ‚nione.',
'config-admin-error-user' => 'BÅ‚Ä…d wewnÄ™trzny podczas tworzenia konta administratora o nazwie „<nowiki>$1</nowiki>â€.',
'config-admin-error-password' => 'WewnÄ™trzny bÅ‚Ä…d podczas ustawiania hasÅ‚a dla administratora „<nowiki>$1</nowiki>â€: <pre>$2</pre>',
'config-admin-error-bademail' => 'WpisaÅ‚eÅ› nieprawidÅ‚owy adres eâ€mail',
@@ -9663,9 +12502,10 @@ Możesz pominąć pozostałe czynności konfiguracyjne i zainstalować wiki.',
'config-license' => 'Prawa autorskie i licencja',
'config-license-none' => 'Brak stopki z licencjÄ…',
'config-license-cc-by-sa' => 'Creative Commons – za uznaniem autora, na tych samych zasadach',
+ 'config-license-cc-by' => 'Creative Commons – za podaniem autora',
'config-license-cc-by-nc-sa' => 'Creative Commons – za uznaniem autora, bez użycia komercyjnego, na tych samych zasadach',
- 'config-license-gfdl-old' => 'GNU Free Documentation License 1.2',
- 'config-license-gfdl-current' => 'GNU Free Documentation License 1.3 lub późniejsza',
+ 'config-license-cc-0' => 'Creative Commons – zero (domena publiczna)',
+ 'config-license-gfdl' => 'GNU licencja wolnej dokumentacji 1.3 lub nowsza',
'config-license-pd' => 'Domena publiczna',
'config-license-cc-choose' => 'Wybierz własną licencję Creative Commons',
'config-email-settings' => 'Ustawienia e-maili',
@@ -9695,7 +12535,7 @@ Wpisz nazwę licencji ręcznie.',
'config-cache-accel' => 'Buforowania obiektów PHP (APC, eAccelerator, XCache lub WinCache)',
'config-cache-memcached' => 'Użyj Memcached (wymaga dodatkowej instalacji i konfiguracji)',
'config-memcached-servers' => 'Serwery Memcached:',
- 'config-memcached-help' => 'Lista adresów IP do wykorzystania przez Memcached.
+ 'config-memcached-help' => 'Lista adresów IP do wykorzystania przez Memcached.
Adresy powinny być umieszczane po jednym w linii i określać również wykorzystywany port. Na przykład:
127.0.0.1:11211
192.168.1.25:1234',
@@ -9711,22 +12551,32 @@ Upewnij siÄ™, że użytkownik „$1†może zapisywać do schematu „$2â€.',
'config-install-pg-commit' => 'Zatwierdzanie zmian',
'config-pg-no-plpgsql' => 'Musisz zainstalować język PL/pgSQL w bazie danych $1',
'config-install-user' => 'Tworzenie użytkownika bazy danych',
+ 'config-install-user-alreadyexists' => 'Konto użytkownika „$1“ już istnieje',
'config-install-user-grant-failed' => 'Przyznanie uprawnień użytkownikowi „$1†nie powiodło się – $2',
+ 'config-install-user-missing' => 'Nie istnieje konto użytkownika „$1“.',
'config-install-tables' => 'Tworzenie tabel',
- 'config-install-tables-exist' => "'''Uwaga''' – wygląda na to, że tabele MediaWiki już istnieją.
+ 'config-install-tables-exist' => "'''Uwaga''' – wygląda na to, że tabele MediaWiki już istnieją.
Pomijam tworzenie tabel.",
'config-install-tables-failed' => "'''Błąd''' – tworzenie tabeli nie powiodło się z powodu błędu – $1",
'config-install-interwiki' => 'Wypełnianie tabeli domyślnymi interwiki',
'config-install-interwiki-list' => 'Nie można odnaleźć pliku <code>interwiki.list</code>.',
- 'config-install-interwiki-exists' => "'''Uwaga''' – wygląda na to, że tabela interwiki ma już jakieś wpisy.
+ 'config-install-interwiki-exists' => "'''Uwaga''' – wygląda na to, że tabela interwiki ma już jakieś wpisy.
Tworzenie domyślnej listy pominięto.",
- 'config-install-keys' => 'Generowanie tajnego klucza',
+ 'config-install-keys' => 'Generowanie tajnych kluczy',
'config-install-sysop' => 'Tworzenie konta administratora',
- 'config-install-subscribe-fail' => 'Nie można zapisać na listę „mediawiki-announce“',
+ 'config-install-subscribe-fail' => 'Nie można zapisać na listę „mediawiki-announce“ – $1',
'config-install-mainpage' => 'Tworzenie strony głównej z domyślną zawartością',
+ 'config-install-extension-tables' => 'Tworzenie tabel dla aktywnych rozszerzeń',
'config-install-mainpage-failed' => 'Nie udało się wstawić strony głównej – $1',
'config-download-localsettings' => 'Pobierz LocalSettings.php',
'config-help' => 'pomoc',
+ 'mainpagetext' => "'''Instalacja MediaWiki powiodła się.'''",
+ 'mainpagedocfooter' => 'Zobacz [//meta.wikimedia.org/wiki/Help:Contents przewodnik użytkownika] w celu uzyskania informacji o działaniu oprogramowania wiki.
+
+== Na poczÄ…tek ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista ustawień konfiguracyjnych]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Komunikaty o nowych wersjach MediaWiki]',
);
/** Piedmontese (Piemontèis)
@@ -9741,7 +12591,10 @@ $messages['pms'] = array(
'config-localsettings-upgrade' => "A l'é stàit trovà n'archivi <code>LocalSettings.php</code>.
Për agiorné cost'anstalassion, ch'a anserissa ël valor ëd <code>\$wgUpgradeKey</code> ant la casela sì-sota.
A la trovrà an LocalSetting.php.",
+ 'config-localsettings-cli-upgrade' => "N'archivi LocalSettings.php a l'é stàit trovà.
+Për agiorné sta instalassion, për piasì fà anvece giré update.php",
'config-localsettings-key' => "Ciav d'agiornament:",
+ 'config-localsettings-badkey' => "La ciav ch'it l'has dàit a l'é pa giusta.",
'config-session-error' => 'Eror an fasend parte la session: $1',
'config-session-expired' => "Ij sò dat ëd session a smijo scadù.
Le session a son configurà për na durà ëd $1.
@@ -9783,10 +12636,15 @@ Cost-sì a l'é un programa lìber e a gràtis: a peul ridistribuilo e/o modific
Cost programa a l'é distribuì ant la speransa ch'a sia ùtil, ma '''sensa gnun-e garansìe'''; sensa gnanca la garansia implìssita ëd '''comersiabilità''' o '''d'esse adat a un but particolar'''.
A dovrìa avèj arseivù <doclink href=Copying>na còpia ëd la licensa pùblica general GNU</doclink> ansema a sto programa; dësnò, ch'a scriva a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA opura [http://www.gnu.org/copyleft/gpl.html ch'a la lesa an linia].",
- 'config-sidebar' => "* [http://www.mediawiki.org Intrada MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents Guida dl'Utent]
-* [http://www.mediawiki.org/wiki/Manual:Contents Guida dl'Aministrator]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Soens an ciamo]",
+ 'config-sidebar' => "* [//www.mediawiki.org Intrada MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents Guida dl'Utent]
+* [//www.mediawiki.org/wiki/Manual:Contents Guida dl'Aministrator]
+* [//www.mediawiki.org/wiki/Manual:FAQ Soens an ciamo]
+----
+* <doclink href=Readme>Ch'am lesa</doclink>
+* <doclink href=ReleaseNotes>Nòte ëd publicassion</doclink>
+* <doclink href=Copying>Còpia</doclink>
+* <doclink href=UpgradeDoc>Agiornament</doclink>",
'config-env-good' => "L'ambient a l'é stàit controlà.
It peule instalé MediaWiki.",
'config-env-bad' => "L'ambient a l'é stàit controlà.
@@ -9795,17 +12653,11 @@ It peule pa instalé MediaWiki.",
'config-unicode-using-utf8' => 'As deuvra utf8_normalize.so ëd Brion Vibber për la normalisassion Unicode.',
'config-unicode-using-intl' => "As deuvra l'[http://pecl.php.net/intl estension intl PECL] për la normalisassion Unicode.",
'config-unicode-pure-php-warning' => "'''Avis:''' L'[http://pecl.php.net/intl estension intl PECL] a l'é pa disponìbil për gestì la normalisassion Unicode, da già che l'implementassion an PHP pur a faliss për lentëssa.
-S'a gestiss un sit a àut tràfich, a dovrìa lese cheicòs an sla [http://www.mediawiki.org/wiki/Unicode_normalization_considerations normalisassion Unicode].",
+S'a gestiss un sit a àut tràfich, a dovrìa lese cheicòs an sla [//www.mediawiki.org/wiki/Unicode_normalization_considerations normalisassion Unicode].",
'config-unicode-update-warning' => "'''Avis:''' La version instalà dlë spassiador ëd normalisassion Unicode a deuvra na version veja ëd la librarìa dël [http://site.icu-project.org/ proget ICU].
-A dovrìa fé n'[http://www.mediawiki.org/wiki/Unicode_normalization_considerations agiornament] s'a l'é anteressà a dovré Unicode.",
+A dovrìa fé n'[//www.mediawiki.org/wiki/Unicode_normalization_considerations agiornament] s'a l'é anteressà a dovré Unicode.",
'config-no-db' => 'Impossìbil tové un pilòta ëd base ëd dàit bon!',
- 'config-no-db-help' => "A dev instalé un pilòta ëd base ëd dàit për PHP.
-A son mantnùe le sòrt ëd base ëd dàit sì-dapress: $1.
-
-S'a l'é ospità ëd fasson partagià, ch'a ciama al fornidor d'ospitalità d'instalé un pilòta ëd base ëd dàit adat.
-S'a l'ha compilà chiel-midem PHP, ch'a lo configura torna con un client ëd base ëd dàit abilità, për esempi an dovrand <code>./configure --with-mysql</code>.
-S'a l'ha instalà PHP da un pachet Debian o Ubuntu, antlora a dev ëdcò instalé ël mòdul php5-mysql.",
- 'config-no-fts3' => "'''Avis''': SQLite a l'é compilà sensa ël mòdul [http://sqlite.org/fts3.html FTS3], le funsion d'arserca a saran pa disponìbij su cost motor.",
+ 'config-no-fts3' => "'''Avis''': SQLite a l'é compilà sensa ël mòdul [//sqlite.org/fts3.html FTS3], le funsion d'arserca a saran pa disponìbij su cost motor.",
'config-register-globals' => "'''Avis: L'opsion <code>[http://php.net/register_globals register_globals]</code> ëd PHP a l'é abilità.'''
'''Ch'a la disabìlita s'a peul.'''
MediaWiki a marcërà, ma sò servent a l'é espòst a 'd possìbij vunerabilità ëd sicurëssa.",
@@ -9832,11 +12684,11 @@ MediaWiki a l'ha da manca dle funsion d'espression regolar Perl-compatìbij për
'config-memory-bad' => "'''Avis:''' <code>memory_limit</code> ëd PHP a l'é $1.
Sossì a l'é probabilment tròp bass.
L'instalassion a peul falì!",
- 'config-xcache' => "[http://trac.lighttpd.net/xcache/ XCache] a l'é instalà",
+ 'config-xcache' => "[http://xcache.lighttpd.net/ XCache] a l'é instalà",
'config-apc' => "[http://www.php.net/apc APC] a l'é instalà",
'config-eaccel' => "[http://eaccelerator.sourceforge.net/ eAccelerator] a l'é instalà",
'config-wincache' => "[http://www.iis.net/download/WinCacheForPhp WinCache] a l'é instalà",
- 'config-no-cache' => "'''Avis:''' As treuva pa [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache]. Ël buté d'oget an memòria local a l'é pa abilità.",
+ 'config-no-cache' => "'''Avis:''' As treuva pa [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache]. Ël buté d'oget an memòria local a l'é pa abilità.",
'config-diff3-bad' => 'GNU diff3 pa trovà.',
'config-imagemagick' => "Trovà ImageMagick: <code>$1</code>.
La miniaturisassion ëd figure a sarà abilità s'it abìlite le carie.",
@@ -9847,7 +12699,7 @@ La miniaturisassion ëd figure a sarà disabilità.',
'config-no-uri' => "'''Eror:''' As peul pa determiné l'URI corenta.
Instalassion abortìa.",
'config-uploads-not-safe' => "'''Avis:''' Sò dossié stàndard për carié <code>$1</code> a l'é vulneràbil a l'esecussion ëd qualsëssìa senari.
-Bele che MediaWiki a contròla j'aspet ëd sicurëssa ëd tùit j'archivi carià, a l'é motobin arcomandà ëd [http://www.mediawiki.org/wiki/Manual:Security#Upload_security saré ës përtus ëd sicurëssa] prima d'abilité ij cariament.",
+Bele che MediaWiki a contròla j'aspet ëd sicurëssa ëd tùit j'archivi carià, a l'é motobin arcomandà ëd [//www.mediawiki.org/wiki/Manual:Security#Upload_security saré ës përtus ëd sicurëssa] prima d'abilité ij cariament.",
'config-db-type' => 'Sòrt ëd base ëd dàit:',
'config-db-host' => 'Ospitant ëd la base ëd dàit:',
'config-db-host-help' => "Se sò servent ëd base ëd dàit a l'é su un servent diferent, ch'a anseriss ambelessì ël nòm dl'ospitant o l'adrëssa IP.
@@ -9885,7 +12737,7 @@ Cost camp a l'é lassà normalment veuid.",
An '''manera binaria''', MediaWiki a memorisa ël test UTF-8 an dij camp binari ant la base ëd dàit.
Sossì a l'é pi eficient che la manera UTF-8 ëd MySQL, e a përmët ëd dovré tut l'ansema ëd caràter Unicode.
-An '''manera UTF-8''', MySQL a arconòss an che ansema ëd caràter a son ij sò dat, e a peul presenteje e convertije apropriatament, ma a-j lassrà pa memorisé ij caràter dzora al [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes pian multilenghe ëd base].",
+An '''manera UTF-8''', MySQL a arconòss an che ansema ëd caràter a son ij sò dat, e a peul presenteje e convertije apropriatament, ma a-j lassrà pa memorisé ij caràter dzora al [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes pian multilenghe ëd base].",
'config-mysql-old' => "A-i é da manca ëd MySQL $1 o pi recent, chiel a l'ha $2.",
'config-db-port' => 'Porta dla base ëd dàit:',
'config-db-schema' => 'Schema për MediaWiki',
@@ -9992,7 +12844,7 @@ La base ëd dàit MyISAM a tira a corompse pi 'd soens che la base ëd dàit Inn
'config-mysql-charset-help' => "An '''manera binaria''', MediaWiki a memorisa ël test UTF-8 ant la base ëd dàit an camp binari.
Sòn a l'é pi eficient che la manera UTF-8 ëd MySQL, e a-j përmët ëd dovré l'ansema antregh ëd caràter Unicode.
-An '''manera UTF-8''', MySQL a conossrà an che ansem ëd caràter a son ij sò dat, e a peul presenteje e convertije apropriatament, ma a-j lassa pa memorisé ij caràter ëdzora al [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes pian multilenghìstich ëd base].",
+An '''manera UTF-8''', MySQL a conossrà an che ansem ëd caràter a son ij sò dat, e a peul presenteje e convertije apropriatament, ma a-j lassa pa memorisé ij caràter ëdzora al [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes pian multilenghìstich ëd base].",
'config-site-name' => 'Nòm ëd la wiki:',
'config-site-name-help' => "Sòn a comparirà ant la bara dël tìtol dël navigador e an vàire d'àutri pòst.",
'config-site-name-blank' => "Ch'a buta un nòm ëd sit.",
@@ -10046,13 +12898,11 @@ Na wiki con '''{{int:config-profile-no-anon}}''' a dà pì 'd contròl, ma a pe
Ël senari '''{{int:config-profile-fishbowl}}''' a përmët a j'utent aprovà ëd modifiché, ma ël pùblich a peul vëdde le pàgine, comprèisa la stòria.
Un '''{{int:config-profile-private}}''' a përmët mach a j'utent aprovà ëd vëdde le pàgine, con la midema partìa ch'a peul modifiché.
-Configurassion ëd drit d'utent pi complicà a son disponìbij apress l'instalassion, vëdde la [http://www.mediawiki.org/wiki/Manual:User_rights pàgina a pòsta dël manual].",
+Configurassion ëd drit d'utent pi complicà a son disponìbij apress l'instalassion, vëdde la [//www.mediawiki.org/wiki/Manual:User_rights pàgina a pòsta dël manual].",
'config-license' => "Drit d'autor e licensa",
'config-license-none' => 'Gnun-a licensa an nòta an bass',
'config-license-cc-by-sa' => 'Creative Commons atribussion an part uguaj',
'config-license-cc-by-nc-sa' => 'Creative Commons atribussion nen comersial an part uguaj',
- 'config-license-gfdl-old' => 'Licensa ëd documentassion lìbera GNU 1.2',
- 'config-license-gfdl-current' => 'Licensa ëd documentassion lìbera GNU 1.3 o pi recenta',
'config-license-pd' => 'Domini Pùblich',
'config-license-cc-choose' => 'Selessioné na licensa Creative Commons përsonalisà',
'config-license-help' => "Vàire wiki pùbliche a buto tute le contribussion sota na [http://freedomdefined.org/Definition licensa lìbera]. Sòn a giuta a creé un sens d'apartenensa a la comunità e a ancoragia ëd contribussion ëd longa durà.
@@ -10083,7 +12933,7 @@ Motobin ëd servent ëd pòsta a ciamo che almanch la part dël nòm ëd domini
'config-upload-settings' => 'Cariament ëd figure e archivi',
'config-upload-enable' => "Abilité ël cariament d'archivi",
'config-upload-help' => "Carié d'archivi potensialment a espon sò servent a d'arzigh ëd sicurëssa.
-Per pi d'anformassion, ch'a lesa la [http://www.mediawiki.org/wiki/Manual:Security session ëd sicurëssa] d'ës manual.
+Per pi d'anformassion, ch'a lesa la [//www.mediawiki.org/wiki/Manual:Security session ëd sicurëssa] d'ës manual.
Për abilité ël cariament d'archivi, ch'a modìfica la manera dël sot-dossié dle <code>figure</code> sota al dossié rèis ëd MediaWiki an manera che ël servent dl'aragnà a peussa scrivlo.
Peui ch'a abìlita costa opsion.",
@@ -10096,8 +12946,8 @@ Ch'a dëscaria na figura ëd la dimension aproprià, e ch'a anserissa l'anliura
S'a veul gnun-e marche, ch'a lassa ës camp bianch.",
'config-instantcommons' => 'Abìlita Instant Commons',
- 'config-instantcommons-help' => "[http://www.mediawiki.org/wiki/InstantCommons Instant Commons] a l'é na funsion ch'a përmët a le wiki ëd dovré dle figure, dij son e d'àutri mojen trovà an sël sit [http://commons.wikimedia.org/ Wikimedia Commons].
-Për dovré sossì, MediaWiki a l'ha da manca dl'acess a la ragnà.
+ 'config-instantcommons-help' => "[//www.mediawiki.org/wiki/InstantCommons Instant Commons] a l'é na funsion ch'a përmët a le wiki ëd dovré dle figure, dij son e d'àutri mojen trovà an sël sit [//commons.wikimedia.org/ Wikimedia Commons].
+Për dovré sossì, MediaWiki a l'ha da manca dl'acess a la ragnà.
Për pi d'anformassion su sta funsion, comprèise j'istrussion ëd com ampostela për wiki diferente da Wikimedia Commons, ch'a consulta [http://mediawiki.org/wiki/Manual:\$wgForeignFileRepos ël manual].",
'config-cc-error' => "La selession ëd la licensa Creative Commons a l'ha dàit gnun arzultà.
@@ -10148,20 +12998,82 @@ A dovrà [$1 dëscarielo] e butelo ant la bas ëd l'instalassion ëd soa wiki (Ã
'''Nòta''': S'a lo fa nen adess, cost archivi ëd configurassion generà a sarà pa disponìbil për chiel pi tard s'a chita l'instalassion sensa dëscarielo.
Quand che a l'é stàit fàit, a peul '''[$2 intré an soa wiki]'''.",
+ 'config-help' => 'agiut',
+ 'mainpagetext' => "'''MediaWiki a l'é staita anstalà a la përfession.'''",
+ 'mainpagedocfooter' => "Che a varda la [//meta.wikimedia.org/wiki/Help:Contents User's Guide] për avèj dj'anformassion ant sël coma dovré ël programa dla wiki.
+
+== Për anandiesse a travajé ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista dij paràmeter ëd configurassion]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki Chestion frequente]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista ëd discussion an sla distribussion ëd MediaWiki]",
+);
+
+/** Pontic (Ποντιακά)
+ * @author Sinopeus
+ */
+$messages['pnt'] = array(
+ 'mainpagetext' => "'''To λογισμικόν MediaWiki εθέκεν.'''",
+);
+
+/** Prussian (Prūsiskan)
+ * @author Nertiks
+ */
+$messages['prg'] = array(
+ 'mainpagetext' => "'''MediaWiki's instalaciÅni izpalla.'''",
+ 'mainpagedocfooter' => 'WÄ«dais [//meta.wikimedia.org/wiki/Help:Contents przewodnik użytkownika] kÄi gaÅ«lai informaciÅnei ezze wiki prÅgramijas tÄ“rpausnan.
+
+== En pagaūseņu ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
);
/** Pashto (پښتو)
* @author Ahmed-Najib-Biabani-Ibrahimkhel
*/
$messages['ps'] = array(
+ 'config-information' => 'مالومات',
'config-your-language' => 'Ø³ØªØ§Ø³Û Ú˜Ø¨Ù‡:',
'config-wiki-language' => 'د ويکي ژبه:',
'config-page-language' => 'ژبه',
'config-page-welcome' => 'Ù…Ûډياويکي ته ÚšÙ‡ راغلاست!',
'config-page-name' => 'نوم',
+ 'config-page-options' => 'خوښنÛ',
'config-page-install' => 'لګول',
'config-page-complete' => 'بشپړ!',
'config-env-php' => 'د $1 PHP نصب شو.',
+ 'config-db-type' => 'د توکبنسټ ډول:',
+ 'config-db-host' => 'د توکبنسټ کوربه:',
+ 'config-db-host-oracle' => 'د توکبنسټ TNS:',
+ 'config-db-name' => 'د توکبنسټ نوم:',
+ 'config-db-username' => 'د توکبنسټ کارن-نوم:',
+ 'config-db-password' => 'د توکبنسټ پټنوم:',
+ 'config-header-mysql' => 'د MySQL امستنÛ',
+ 'config-header-postgres' => 'د PostgreSQL امستنÛ',
+ 'config-header-sqlite' => 'د SQLite امستنÛ',
+ 'config-header-oracle' => 'د اورÛÚ©Ù„ امستنÛ',
+ 'config-header-ibm_db2' => 'د IBM DB2 امستنÛ',
+ 'config-sqlite-readonly' => 'د <code>$1</code> دوتنه د ليکلو وړ نه ده.',
+ 'config-sqlite-cant-create-db' => 'د توکبنسټ دوتنه <code>$1</code> جوړه نه شوه.',
+ 'config-site-name' => 'د ويکي نوم:',
+ 'config-site-name-blank' => 'د ÙˆÛبÚÙŠ نوم وليکÛ.',
+ 'config-project-namespace' => 'د Ù¾Ø±ÙˆÚ˜Û Ù†ÙˆÙ…-تشيال:',
+ 'config-ns-generic' => 'پروژه',
+ 'config-admin-box' => 'د پازوال ګڼون',
+ 'config-admin-name' => 'Ø³ØªØ§Ø³Û Ù†ÙˆÙ…:',
+ 'config-admin-password' => 'پټنوم:',
+ 'config-admin-password-confirm' => 'پټنوم يو ÚÙ„ بيا:',
+ 'config-admin-email' => 'برÛښليک پته:',
+ 'config-profile-wiki' => 'دوديزه ويکي',
+ 'config-email-settings' => 'د برÛښليک امستنÛ',
+ 'config-install-step-done' => 'ترسره شو',
+ 'mainpagetext' => "'''MediaWiki په برياليتوب سره نصب شو.'''",
+ 'mainpagedocfooter' => 'د ويکي Ø³Ø§ÙˆØªØ±Û Ø¯ کارولو د مالوماتو په اړه [//meta.wikimedia.org/wiki/Help:Contents د کارن لارښود] سره سلا ÙˆÚ©Ú“Û.
+
+== پيلول ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings د امستنو د Ø³Ø§Ø²ÙˆÙ†Û Ù„Ú“Ù„ÙŠÚ©]
+* [//www.mediawiki.org/wiki/Manual:FAQ د ميډياويکي Ú‰ÛرÚÙ„ÙŠØ²Û Ù¾ÙˆÚšØªÙ†Û]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce د Ù…Ûډياويکي د برÛښليکونو لړليک]',
);
/** Portuguese (Português)
@@ -10189,7 +13101,7 @@ $1',
'config-localsettings-incomplete' => 'O ficheiro LocalSettings.php existente parece estar incompleto.
A variável $1 não está definida.
Por favor defina esta variável no LocalSettings.php e clique "Continuar".',
- 'config-localsettings-connection-error' => 'Ocorreu um erro ao ligar à base de dados usando as configurações especificadas no LocalSettings.php ou AdminSettings.php. Por favor corrija essas configurações e tente novamente.
+ 'config-localsettings-connection-error' => 'Ocorreu um erro ao ligar à base de dados usando as configurações especificadas no LocalSettings.php ou AdminSettings.php. Por favor corrija essas configurações e tente novamente.
$1',
'config-session-error' => 'Erro ao iniciar a sessão: $1',
@@ -10225,7 +13137,7 @@ Verifique o seu php.ini e certifique-se de que em <code>session.save_path</code>
'config-welcome' => '=== Verificações do ambiente ===
São realizadas verificações básicas para determinar se este ambiente é apropriado para instalação do MediaWiki.
Se necessitar de pedir ajuda durante a instalação, deve fornecer os resultados destas verificações.',
- 'config-copyright' => "=== Direitos de autor e Termos de uso ===
+ 'config-copyright' => "=== Direitos de autor e Condições de uso ===
$1
@@ -10234,11 +13146,11 @@ Este programa é software livre; pode redistribuí-lo e/ou modificá-lo nos term
Este programa é distribuído na esperança de que seja útil, mas '''sem qualquer garantia'''; inclusive, sem a garantia implícita da '''possibilidade de ser comercializado''' ou de '''adequação para qualquer finalidade específica'''.
Consulte a licença GNU General Public License para mais detalhes.
-Em conjunto com este programa deve ter recebido <doclink href=Copying>uma cópia da licença GNU General Public License</doclink>; se não a recebeu, peça-a por escrito para Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ou [http://www.gnu.org/copyleft/gpl.html leia-a na internet].",
- 'config-sidebar' => '* [http://www.mediawiki.org/wiki/MediaWiki/pt Página principal do MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents/pt Ajuda]
-* [http://www.mediawiki.org/wiki/Manual:Contents/pt Manual técnico]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]
+Em conjunto com este programa deve ter recebido <doclink href=Copying>uma cópia da licença GNU General Public License</doclink>; se não a recebeu, peça-a por escrito a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ou [http://www.gnu.org/copyleft/gpl.html leia-a na internet].",
+ 'config-sidebar' => '* [//www.mediawiki.org/wiki/MediaWiki/pt Página principal do MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents/pt Ajuda]
+* [//www.mediawiki.org/wiki/Manual:Contents/pt Manual técnico]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ]
----
* <doclink href=Readme>Leia-me</doclink>
* <doclink href=ReleaseNotes>Notas de lançamento</doclink>
@@ -10249,22 +13161,20 @@ Pode instalar o MediaWiki.',
'config-env-bad' => 'O ambiente foi verificado.
Não pode instalar o MediaWiki.',
'config-env-php' => 'O PHP $1 está instalado.',
- 'config-env-php-toolow' => 'O PHP $1 está instalado.
+ 'config-env-php-toolow' => 'O PHP $1 está instalado.
No entanto, o MediaWiki requer o PHP $2 ou superior.',
'config-unicode-using-utf8' => 'A usar o utf8_normalize.so, por Brian Viper, para a normalização Unicode.',
'config-unicode-using-intl' => 'A usar a [http://pecl.php.net/intl extensão intl PECL] para a normalização Unicode.',
'config-unicode-pure-php-warning' => "'''Aviso''': A [http://pecl.php.net/intl extensão intl PECL] não está disponível para efectuar a normalização Unicode. Irá recorrer-se à implementação em PHP puro, que é mais lenta.
-Se o seu site tem alto volume de tráfego, devia informar-se um pouco sobre a [http://www.mediawiki.org/wiki/Unicode_normalization_considerations/pt normalização Unicode].",
+Se o seu site tem alto volume de tráfego, devia informar-se um pouco sobre a [//www.mediawiki.org/wiki/Unicode_normalization_considerations/pt normalização Unicode].",
'config-unicode-update-warning' => "'''Aviso''': A versão instalada do wrapper de normalização Unicode usa uma versão mais antiga da biblioteca do [http://site.icu-project.org/ projecto ICU].
-Devia [http://www.mediawiki.org/wiki/Unicode_normalization_considerations actualizá-la] se tem quaisquer preocupações sobre o uso do Unicode.",
- 'config-no-db' => "Não foi possível encontrar um controlador ''(driver)'' apropriado para a base de dados!",
- 'config-no-db-help' => "Precisa de instalar um controlador ''(driver)'' de base de dados para o PHP.
-São suportadas as seguintes bases de dados: $1.
+Devia [//www.mediawiki.org/wiki/Unicode_normalization_considerations actualizá-la] se tem quaisquer preocupações sobre o uso do Unicode.",
+ 'config-no-db' => "Não foi possível encontrar um controlador ''(driver)'' apropriado para a base de dados! Precisa de instalar um controlador para o PHP. São aceites os seguintes tipos de base de dados: $1.
-Se o seu site está alojado num servidor partilhado, peça ao fornecedor do alojamento para instalar um controlador de base de dados apropriado.
-Se fez a compilação do PHP você mesmo, reconfigure-o com um cliente de base de dados activado, usando, por exemplo, <code>./configure --with-mysql</code>.
+Se usa alojamento partilhado, peça ao fornecedor do alojamento para instalar um controlador apropriado.
+Se foi você quem compilou o PHP, reconfigure-o com um cliente de base de dados activado; por exemplo, usando <code>./configure --with-mysql</code>.
Se instalou o PHP a partir de um pacote Debian ou Ubuntu, então precisa de instalar também o módulo php5-mysql.",
- 'config-no-fts3' => "'''Aviso''': O SQLite foi compilado sem o módulo [http://sqlite.org/fts3.html FTS3]; as funcionalidades de pesquisa não estarão disponíveis nesta instalação.",
+ 'config-no-fts3' => "'''Aviso''': O SQLite foi compilado sem o módulo [//sqlite.org/fts3.html FTS3]; as funcionalidades de pesquisa não estarão disponíveis nesta instalação.",
'config-register-globals' => "'''Aviso: A opção <code>[http://php.net/register_globals register_globals]</code> do PHP está activada.'''
'''Desactive-a, se puder.'''
O MediaWiki funciona mesmo assim, mas o seu servidor está exposto a potenciais vulnerabilidades de segurança.",
@@ -10293,11 +13203,11 @@ O MediaWiki necessita do suporte UTF-8 para funcionar correctamente.",
'config-memory-bad' => "'''Aviso:''' A configuração <code>memory_limit</code> do PHP é $1.
Isto é provavelmente demasiado baixo.
A instalação poderá falhar!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] instalada',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] instalada',
'config-apc' => '[http://www.php.net/apc APC] instalada',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] instalado',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] instalada',
- 'config-no-cache' => "'''Aviso:''' Não foram encontrados [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] nem [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''Aviso:''' Não foram encontrados [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] nem [http://www.iis.net/download/WinCacheForPhp WinCache].
A cache de objectos não será activada.",
'config-diff3-bad' => 'O GNU diff3 não foi encontrado.',
'config-imagemagick' => 'Foi encontrado o ImageMagick: <code>$1</code>.
@@ -10308,14 +13218,19 @@ Se possibilitar uploads, a miniaturização de imagens será activada.',
A miniaturização de imagens será desactivada.',
'config-no-uri' => "'''Erro:''' Não foi possível determinar a URI actual.
A instalação foi abortada.",
+ 'config-no-cli-uri' => "'''Aviso''': Não foi especificado um --scriptpath; por omissão, será usado: <code>$1</code>.",
+ 'config-using-server' => 'Será usado o nome do servidor "<nowiki>$1</nowiki>".',
+ 'config-using-uri' => 'Será usada a URL do servidor "<nowiki>$1$2</nowiki>".',
'config-uploads-not-safe' => "'''Aviso:''' O directório por omissão para uploads <code>$1</code>, está vulnerável à execução arbitrária de scripts.
-Embora o MediaWiki verifique a existência de ameaças de segurança em todos os ficheiros enviados, é altamente recomendado que [http://www.mediawiki.org/wiki/Manual:Security#Upload_security vede esta vulnerabilidade de segurança] antes de possibilitar uploads.",
+Embora o MediaWiki verifique a existência de ameaças de segurança em todos os ficheiros enviados, é altamente recomendado que [//www.mediawiki.org/wiki/Manual:Security#Upload_security vede esta vulnerabilidade de segurança] antes de possibilitar uploads.",
+ 'config-no-cli-uploads-check' => "'''Aviso:''' Durante a instalação da CLI (\"Call Level Interface\", a Interface ao Nível da Chamada de Execução), o directório por omissão para uploads, <code>\$1</code>, não é verificado para determinar se é vulnerável à execução de código arbitrário.",
'config-brokenlibxml' => 'O seu sistema tem uma combinação de versões de PHP e libxml2 conhecida por ser problemática, podendo causar corrupção de dados no MediaWiki e outras aplicações da internet.
-Actualize para o PHP versão 5.2.9 ou posterior e libxml2 versão 2.7.3 ou posterior ([http://bugs.php.net/bug.php?id=45996 incidência reportada no PHP]).
+Actualize para o PHP versão 5.2.9 ou posterior e libxml2 versão 2.7.3 ou posterior ([//bugs.php.net/bug.php?id=45996 incidência reportada no PHP]).
Instalação interrompida.',
'config-using531' => 'O MediaWiki não pode ser usado com o PHP $1 devido a um problema que envolve parâmetros de referência para <code>__call()</code>.
Para resolver este problema, actualize o PHP para a versão 5.3.2 ou posterior, ou reverta-o para a 5.3.0.
Instalação interrompida.',
+ 'config-suhosin-max-value-length' => 'O Suhosin está instalado e limita a $1 bytes o comprimento do parâmetro GET. O componente ResourceLoader do MediaWiki pode tornear este limite, mas prejudicando o desempenho. Se lhe for possível, deve atribuir o valor 1024 ou maior ao parâmetro suhosin.get.max_value_length no ficheiro php.ini, e definir o mesmo valor para $wgResourceLoaderMaxQueryLength no ficheiro LocalSettings.php.',
'config-db-type' => 'Tipo da base de dados:',
'config-db-host' => 'Servidor da base de dados:',
'config-db-host-help' => 'Se a base de dados estiver num servidor separado, introduza aqui o nome ou o endereço IP desse servidor.
@@ -10332,7 +13247,7 @@ O nome não deve conter espaços.
Se estiver a usar um servidor partilhado, o fornecedor do alojamento deve poder fornecer-lhe o nome de uma base de dados que possa usar, ou permite-lhe criar bases de dados através de um painel de controle.',
'config-db-name-oracle' => "Esquema ''(schema)'' da base de dados:",
- 'config-db-account-oracle-warn' => "Há três cenários suportados na instalação do servidor de base de dados Oracle:
+ 'config-db-account-oracle-warn' => "Há três cenários suportados na instalação do servidor de base de dados Oracle:
Se pretende criar a conta de acesso pela internet na base de dados durante o processo de instalação, forneça como conta para a instalação uma conta com o papel de SYSDBA na base de dados e especifique as credenciais desejadas para a conta de acesso pela internet. Se não pretende criar a conta de acesso pela internet durante a instalação, pode criá-la manualmente e fornecer só essa conta para a instalação (se ela tiver as permissões necessárias para criar os objectos do esquema ''(schema)''). A terceira alternativa é fornecer duas contas diferentes; uma com privilégios de criação e outra com privilégios limitados para o acesso pela internet.
@@ -10363,12 +13278,13 @@ Normalmente, este campo deve ficar vazio.',
No modo '''binary''' (\"binário\"), o MediaWiki armazena o texto UTF-8 na base de dados em campos binários.
Isto é mais eficiente do que o modo UTF-8 do MySQL e permite que sejam usados todos os caracteres Unicode.
No modo '''UTF-8''', o MySQL saberá em que conjunto de caracteres os seus dados estão e pode apresentá-los e convertê-los da forma mais adequada,
-mas não lhe permitirá armazenar caracteres acima do [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Plano Multilingue Básico].",
+mas não lhe permitirá armazenar caracteres acima do [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Plano Multilingue Básico].",
'config-mysql-old' => 'É necessário o MySQL $1 ou posterior; tem a versão $2.',
'config-db-port' => 'Porta da base de dados:',
'config-db-schema' => "Esquema ''(schema)'' do MediaWiki",
'config-db-schema-help' => 'Normalmente, este esquema ("schema") estará correcto.
Altere-o só se souber que precisa de o fazer.',
+ 'config-pg-test-error' => "Não foi possível criar uma ligação à base de dados '''$1''': $2",
'config-sqlite-dir' => 'Directório de dados do SQLite:',
'config-sqlite-dir-help' => "O SQLite armazena todos os dados num único ficheiro.
@@ -10386,19 +13302,22 @@ Considere colocar a base de dados num local completamente diferente, como, por e
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'O MediaWiki suporta as seguintes plataformas de base de dados:
$1
Se a plataforma que pretende usar não está listada abaixo, siga as instruções nos links acima para activar o suporte.',
'config-support-mysql' => '* $1 é a plataforma primária do MediaWiki e a melhor suportada ([http://www.php.net/manual/en/mysql.installation.php como compilar PHP com suporte MySQL])',
- 'config-support-postgres' => '* $1 é uma plataforma de base de dados comum, de fonte aberta, alternativa ao MySQL. ([http://www.php.net/manual/en/pgsql.installation.php como compilar PHP com suporte PostgreSQL])',
+ 'config-support-postgres' => '* $1 é uma plataforma de base de dados comum, de fonte aberta, alternativa ao MySQL ([http://www.php.net/manual/en/pgsql.installation.php como compilar PHP com suporte PostgreSQL]). Poderão existir alguns pequenos problemas e não é recomendado o seu uso em ambientes de exploração/produção.',
'config-support-sqlite' => '* $1 é uma plataforma de base de dados ligeira muito bem suportada. ([http://www.php.net/manual/en/pdo.installation.php Como compilar PHP com suporte SQLite], usa PDO)',
'config-support-oracle' => '* $1 é uma base de dados de uma empresa comercial. ([http://www.php.net/manual/en/oci8.installation.php How to compile PHP with OCI8 support])',
+ 'config-support-ibm_db2' => '* $1 é uma base de dados empresarial.',
'config-header-mysql' => 'Definições MySQL',
'config-header-postgres' => 'Definições PostgreSQL',
'config-header-sqlite' => 'Definições SQLite',
'config-header-oracle' => 'Definições Oracle',
+ 'config-header-ibm_db2' => 'Configurações da IBM DB2',
'config-invalid-db-type' => 'O tipo de base de dados é inválido',
'config-missing-db-name' => 'Tem de introduzir um valor para "Nome da base de dados"',
'config-missing-db-host' => 'Tem de introduzir um valor para "Servidor da base de dados"',
@@ -10472,6 +13391,13 @@ A conta que especificar aqui já tem de existir.',
'config-mysql-engine' => 'Motor de armazenamento:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => "'''Aviso''': Seleccionou o MyISAM para motor de armazenamento do MySQL, uma combinação desaconselhada para usar com o MediaWiki porque:
+* praticamente não permite acessos simultâneos, devido aos bloqueios de tabelas
+* o MyISAM é mais susceptível a perdas da integridade dos dados do que outros motores
+* o código do MediaWiki não trabalha devidamente com o MyISAM
+
+Se a sua instalação do MySQL suporta InnoDB, é altamente recomendado que o escolha em vez do MyISAM.
+Se não suporta o InnoDB, talvez esta seja uma boa altura para fazer a actualização para a versão mais recente do MySQL.",
'config-mysql-engine-help' => "'''InnoDB''' é quase sempre a melhor opção, porque suporta bem acessos simultâneos ''(concurrency)''.
'''MyISAM''' pode ser mais rápido no modo de utilizador único ou em instalações somente para leitura.
@@ -10483,7 +13409,8 @@ As bases de dados MyISAM tendem a ficar corrompidas com maior frequência do que
Isto é mais eficiente do que o modo UTF-8 do MySQL e permite que sejam usados todos os caracteres Unicode.
No modo '''UTF-8''', o MySQL saberá em que conjunto de caracteres os seus dados estão e pode apresentá-los e convertê-los da forma mais adequada,
-mas não lhe permitirá armazenar caracteres acima do [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Plano Multilingue Básico].",
+mas não lhe permitirá armazenar caracteres acima do [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Plano Multilingue Básico].",
+ 'config-ibm_db2-low-db-pagesize' => "A sua base de dados DB2 tem um tablespace padrão com um pagesize insuficiente. O pagesize tem de ser '''32K'' ou maior.",
'config-site-name' => 'Nome da wiki:',
'config-site-name-help' => 'Este nome aparecerá no título da janela do seu browser e em vários outros sítios.',
'config-site-name-blank' => 'Introduza o nome do site.',
@@ -10519,6 +13446,8 @@ Introduza um nome de utilizador diferente.',
'config-subscribe' => 'Subscreva a [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce lista de divulgação de anúncios de lançamento].',
'config-subscribe-help' => 'Esta é uma lista de divulgação de baixo volume para anúncios de lançamento de versões novas, incluindo anúncios de segurança importantes.
Deve subscrevê-la e actualizar a sua instalação MediaWiki quando são lançadas versões novas.',
+ 'config-subscribe-noemail' => 'Tentou subscrever a lista de divulgação dos anúncios de novas versões, sem fornecer um endereço de correio electrónico.
+Para subscrever esta lista de divulgação tem de fornecer um endereço de correio electrónico.',
'config-almost-done' => 'Está quase a terminar!
Agora pode saltar as configurações restantes e instalar já a wiki.',
'config-optional-continue' => 'Faz-me mais perguntas.',
@@ -10540,24 +13469,25 @@ Uma wiki com '''{{int:config-profile-no-anon}}''' atribui mais responsabilidade,
Um cenário '''{{int:config-profile-fishbowl}}''' permite que os utilizadores aprovados editem, mas que o público visione as páginas, incluindo o historial das mesmas.
Uma '''{{int:config-profile-private}}''' só permite que os utilizadores aprovados visionem as páginas e as editem.
-Após a instalação, estarão disponíveis mais configurações de privilégios. Consulte [http://www.mediawiki.org/wiki/Manual:User_rights a entrada relevante no Manual].",
+Após a instalação, estarão disponíveis mais configurações de privilégios. Consulte [//www.mediawiki.org/wiki/Manual:User_rights a entrada relevante no Manual].",
'config-license' => 'Direitos de autor e licença:',
'config-license-none' => 'Sem rodapé com a licença',
- 'config-license-cc-by-sa' => 'Atribuição - Partilha nos Mesmos Termos, da Creative Commons',
- 'config-license-cc-by-nc-sa' => 'Atribuição - Uso Não-Comercial - Partilha nos Mesmos Termos, da Creative Commons',
- 'config-license-cc-0' => 'Creative Commons Zero',
- 'config-license-gfdl-old' => 'GNU Free Documentation License 1.2',
- 'config-license-gfdl-current' => 'GNU Free Documentation License 1.3 ou posterior',
+ 'config-license-cc-by-sa' => 'Creative Commons - Atribuição - Partilha nos Mesmos Termos',
+ 'config-license-cc-by' => 'Creative Commons - Atribuição',
+ 'config-license-cc-by-nc-sa' => 'Creative Commons - Atribuição - Uso Não Comercial - Partilha nos Mesmos Termos',
+ 'config-license-cc-0' => 'Creative Commons Zero (Domínio Público)',
+ 'config-license-gfdl' => 'GNU Free Documentation License 1.3 ou posterior',
'config-license-pd' => 'Domínio Público',
'config-license-cc-choose' => 'Seleccione uma licença personalizada da Creative Commons',
'config-license-help' => 'Muitas wikis de acesso público licenciam todas as colaborações com uma [http://freedomdefined.org/Definition licença livre].
Isto ajuda a criar um sentido de propriedade da comunidade e encoraja as colaborações a longo prazo.
Tal não é geralmente necessário nas wikis privadas ou corporativas.
-Se pretende que seja possível usar textos da Wikipédia na sua wiki e que seja possível a Wikipédia aceitar textos copiados da sua wiki, deve escolher a licença Atribuição - Partilha nos Mesmos Termos, da Creative Commons.
+Se pretende que seja possível usar textos da Wikipédia na sua wiki e que seja possível a Wikipédia aceitar textos copiados da sua wiki, deve escolher a licença Creative Commons - Atribuição - Partilha nos Mesmos Termos.
-A licença GNU Free Documentation License era a anterior licença da Wikipédia.
-Embora ainda seja uma licença válida, ela tem certas características que tornam o reuso e a interpretação difíceis.',
+A licença anterior da Wikipédia era a licença GNU Free Documentation License.
+A GFDL é uma licença válida, mas de difícil compreensão.
+Também é difícil reutilizar conteúdos licenciados com a GFDL.',
'config-email-settings' => 'Definições do correio electrónico',
'config-enable-email' => 'Activar mensagens electrónicas de saída',
'config-enable-email-help' => 'Se quer que o correio electrónico funcione, as [http://www.php.net/manual/en/mail.configuration.php definições de correio electrónico do PHP] têm de estar configuradas correctamente.
@@ -10579,7 +13509,7 @@ Muitos servidores de correio electrónico exigem que pelo menos a parte do nome
'config-upload-settings' => 'Upload de imagens e ficheiros',
'config-upload-enable' => 'Possibilitar o upload de ficheiros',
'config-upload-help' => 'O upload de ficheiros expõe o seu servidor a riscos de segurança.
-Para mais informações, leia a [http://www.mediawiki.org/wiki/Manual:Security secção sobre segurança] do Manual Técnico.
+Para mais informações, leia a [//www.mediawiki.org/wiki/Manual:Security secção sobre segurança] do Manual Técnico.
Para permitir o upload de ficheiros, altere as permissões do subdirectório <code>images</code> no directório de raiz do MediaWik para que o servidor de internet possa escrever nele.
Depois active esta opção.',
@@ -10587,13 +13517,13 @@ Depois active esta opção.',
'config-upload-deleted-help' => 'Escolha um directório onde serão arquivados os ficheiros apagados.
O ideal é que este directório não possa ser directamente acedido a partir da internet.',
'config-logo' => 'URL do logótipo:',
- 'config-logo-help' => 'O tema padrão do MediaWiki inclui espaço para um logótipo de 135x160 pixels no canto superior esquerdo.
-Faça o upload de uma imagem com estas dimensões e introduza aqui a URL dessa imagem.
+ 'config-logo-help' => 'O tema padrão do MediaWiki inclui espaço para um logótipo de 135x160 pixels acima do menu da barra lateral.
+Coloque na wiki uma imagem com estas dimensões e introduza aqui a URL dessa imagem.
Se não pretende usar um logótipo, deixe este campo em branco.',
'config-instantcommons' => 'Activar a funcionalidade Instant Commons',
- 'config-instantcommons-help' => 'O [http://www.mediawiki.org/wiki/InstantCommons Instant Commons] é uma funcionalidade que permite que as wikis usem imagens, áudio e outros ficheiros multimédia disponíveis no site [http://commons.wikimedia.org/ Wikimedia Commons].
-Para poder usá-los, o MediaWiki necessita de acesso à internet.
+ 'config-instantcommons-help' => 'O [//www.mediawiki.org/wiki/InstantCommons Instant Commons] é uma funcionalidade que permite que as wikis usem imagens, áudio e outros ficheiros multimédia disponíveis no site [//commons.wikimedia.org/ Wikimedia Commons].
+Para poder usá-los, o MediaWiki necessita de acesso à internet.
Para mais informações sobre esta funcionalidade, incluindo instruções sobre como configurá-la para usar outras wikis em vez da Wikimedia Commons, consulte o [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos Manual Técnico].',
'config-cc-error' => 'O auxiliar de escolha de licenças da Creative Commons não produziu resultados.
@@ -10623,12 +13553,13 @@ Se não sabe qual é a porta, a predefinida é a 11211.',
Estas talvez necessitem de configurações adicionais, mas pode activá-las agora',
'config-install-alreadydone' => "'''Aviso:''' Parece que já instalou o MediaWiki e está a tentar instalá-lo novamente.
Passe para a próxima página, por favor.",
- 'config-install-begin' => 'Ao clicar "{{int:config-continue}}", vai iniciar a instalação do MediaWiki.
+ 'config-install-begin' => 'Ao clicar "{{int:config-continue}}", vai iniciar a instalação do MediaWiki.
Se quiser fazer mais alterações, clique Voltar.',
'config-install-step-done' => 'terminado',
'config-install-step-failed' => 'falhou',
'config-install-extensions' => 'A incluir as extensões',
'config-install-database' => 'A preparar a base de dados',
+ 'config-install-schema' => "A criar o esquema (''schema'') da base de dados",
'config-install-pg-schema-not-exist' => "O esquema ''(schema)'' PostgreSQL não existe",
'config-install-pg-schema-failed' => 'A criação das tabelas falhou.
Certifique-se de que o utilizador "$1" pode escrever no esquema \'\'(schema)\'\' "$2".',
@@ -10636,10 +13567,17 @@ Certifique-se de que o utilizador "$1" pode escrever no esquema \'\'(schema)\'\'
'config-install-pg-plpgsql' => 'A verificar a presença da linguagem PL/pgSQL',
'config-pg-no-plpgsql' => 'É preciso instalar a linguagem PL/pgSQL na base de dados $1',
'config-pg-no-create-privs' => 'A conta que especificou para a instalação não tem privilégios suficientes para criar uma conta.',
+ 'config-pg-not-in-role' => 'A conta que especificou para o utilizador da internet já existe.
+A conta que especificou para a instalação não é a de um super-utilizador e não pertence ao grupo de utilizadores de acesso pela internet, por isso não pode criar objectos que pertencem ao utilizador da internet.
+
+O MediaWiki necessita que as tabelas pertençam ao utilizador da internet. Especifique outra conta de internet, ou clique "voltar" e especifique um utilizador com os privilégios necessários para a instalação.',
'config-install-user' => 'A criar o utilizador da base de dados',
'config-install-user-alreadyexists' => 'O utilizador "$1" já existe',
'config-install-user-create-failed' => 'A criação do utilizador "$1" falhou: $2',
'config-install-user-grant-failed' => 'A atribuição das permissões ao utilizador "$1" falhou: $2',
+ 'config-install-user-missing' => 'O utilizador especificado, "$1", não existe.',
+ 'config-install-user-missing-create' => 'O utilizador especificado, "$1", não existe.
+Marque a caixa de selecção "criar conta" abaixo se pretende criá-la, por favor.',
'config-install-tables' => 'A criar as tabelas',
'config-install-tables-exist' => "'''Aviso''': As tabelas do MediaWiki parecem já existir.
A criação das tabelas será saltada.",
@@ -10649,9 +13587,11 @@ A criação das tabelas será saltada.",
'config-install-interwiki-exists' => "'''Aviso''': A tabela de interwikis parece já conter entradas.
O preenchimento padrão desta tabela será saltado.",
'config-install-stats' => 'A inicializar as estatísticas',
- 'config-install-keys' => 'A gerar a chave secreta',
+ 'config-install-keys' => 'A gerar as chaves secretas',
+ 'config-insecure-keys' => "'''Warning:''' {{PLURAL:$2|A chave segura|As chaves seguras}} ($1) {{PLURAL:$2|gerada durante a instalação não é completamente segura|geradas durante a instalação não são completamente seguras}}. Considere a possibilidade de {{PLURAL:$2|alterá-la|alterá-las}} manualmente.",
'config-install-sysop' => 'A criar a conta de administrador',
- 'config-install-subscribe-fail' => 'Não foi possível subscrever a lista mediawiki-announce',
+ 'config-install-subscribe-fail' => 'Não foi possível subscrever a lista mediawiki-announce: $1',
+ 'config-install-subscribe-notpossible' => 'cURL não está instalado e allow_url_fopen não está disponível.',
'config-install-mainpage' => 'A criar a página principal com o conteúdo padrão.',
'config-install-extension-tables' => 'A criar as tabelas das extensões activadas',
'config-install-mainpage-failed' => 'Não foi possível inserir a página principal: $1',
@@ -10672,6 +13612,14 @@ $3
Depois de terminar o passo anterior, pode '''[$2 entrar na wiki]'''.",
'config-download-localsettings' => 'Download do LocalSettings.php',
'config-help' => 'ajuda',
+ 'mainpagetext' => "'''MediaWiki instalado com sucesso.'''",
+ 'mainpagedocfooter' => 'Consulte o [//meta.wikimedia.org/wiki/Help:Contents Guia de Utilizadores] para informações sobre o uso do software wiki.
+
+== Onde começar ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista de opções de configuração]
+* [//www.mediawiki.org/wiki/Manual:FAQ Perguntas e respostas frequentes sobre o MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Subscreva a lista de divulgação de novas versões do MediaWiki]',
);
/** Brazilian Portuguese (Português do Brasil)
@@ -10736,10 +13684,10 @@ Este programa é distribuído na esperança de que seja útil, mas '''sem qualqu
Consulte a licença GNU General Public License para mais detalhes.
Em conjunto com este programa você deve ter recebido <doclink href=Copying>uma cópia da licença GNU General Public License</doclink>; se não a recebeu, peça-a por escrito para Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ou [http://www.gnu.org/copyleft/gpl.html leia-a na internet].",
- 'config-sidebar' => '* [http://www.mediawiki.org/wiki/MediaWiki/pt Página principal do MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents/pt Ajuda]
-* [http://www.mediawiki.org/wiki/Manual:Contents/pt Manual técnico]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ]',
+ 'config-sidebar' => '* [//www.mediawiki.org/wiki/MediaWiki/pt Página principal do MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents/pt Ajuda]
+* [//www.mediawiki.org/wiki/Manual:Contents/pt Manual técnico]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ]',
'config-env-good' => 'O ambiente foi verificado.
Você pode instalar o MediaWiki.',
'config-env-bad' => 'O ambiente foi verificado.
@@ -10748,15 +13696,9 @@ Você não pode instalar o MediaWiki.',
'config-unicode-using-utf8' => 'A usar o utf8_normalize.so, de Brian Viper, para a normalização Unicode.',
'config-unicode-using-intl' => 'Usando a [http://pecl.php.net/intl extensão intl PECL] para a normalização Unicode.',
'config-unicode-pure-php-warning' => "'''Aviso''': A [http://pecl.php.net/intl extensão intl PECL] não está disponível para efetuar a normalização Unicode.
-Se o seu site tem um alto volume de tráfego, devia informar-se um pouco sobre a [http://www.mediawiki.org/wiki/Unicode_normalization_considerations normalização Unicode].",
+Se o seu site tem um alto volume de tráfego, devia informar-se um pouco sobre a [//www.mediawiki.org/wiki/Unicode_normalization_considerations normalização Unicode].",
'config-no-db' => 'Não foi possível encontrar um driver de banco de dados adequado!',
- 'config-no-db-help' => 'Você precisa instalar um driver de banco de dados para PHP.
-Os seguintes tipos de banco de dados são suportados: $1.
-
-Se você estiver em hospedagem compartilhada, pergunte ao seu provedor de hospedagem para instalar um driver de banco de dados apropriado.
-Se você compilou o PHP você mesmo, reconfigurá-lo com um cliente de banco de dados habilitado, por exemplo, usando <code>./configure --with-mysql</code>.
-Se você instalou o PHP de um Debian ou Ubuntu package, então você também precisa instalar o módulo php5-mysql.',
- 'config-no-fts3' => "' ' 'Aviso' ' ': O SQLite foi compilado sem o módulo [http://sqlite.org/fts3.html FTS3]; as funcionalidades de pesquisa não estarão disponíveis nesta instalação.",
+ 'config-no-fts3' => "' ' 'Aviso' ' ': O SQLite foi compilado sem o módulo [//sqlite.org/fts3.html FTS3]; as funcionalidades de pesquisa não estarão disponíveis nesta instalação.",
'config-register-globals' => "' ' 'Aviso: A opção <code>[http://php.net/register_globals register_globals]</code> do PHP está ativada.'''
' ' 'Desative-a, se puder.'''
O MediaWiki funcionará mesmo assim, mas o seu servidor ficará exposto a potenciais vulnerabilidades de segurança.",
@@ -10764,9 +13706,48 @@ O MediaWiki funcionará mesmo assim, mas o seu servidor ficará exposto a potenc
Faça o upload de uma imagem com estas dimensões e introduza aqui a URL dessa imagem.
Se você não pretende usar um logotipo, deixe este campo em branco.',
+ 'mainpagetext' => "'''MediaWiki instalado com sucesso.'''",
+ 'mainpagedocfooter' => 'Consulte o [//meta.wikimedia.org/wiki/Help:Contents Manual de Usuário] para informações de como usar o software wiki.
+
+== Começando ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista de opções de configuração]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ do MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discussão com avisos de novas versões do MediaWiki]',
+);
+
+/** Quechua (Runa Simi) */
+$messages['qu'] = array(
+ 'mainpagetext' => "'''MediaWiki nisqa llamp'u kaqqa aypaylla takyachisqañam.'''",
+ 'mainpagedocfooter' => "Wiki llamp'u kaqmanta willasunaykipaqqa [//meta.wikimedia.org/wiki/Help:Contents Ruraqpaq yanapana] ''(User's Guide)'' sutiyuq p'anqata qhaway.
+
+== Qallarichkaspa ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Romagnol (Rumagnôl) */
+$messages['rgn'] = array(
+ 'mainpagetext' => "'''L'instalaziòn d'MediaWiki l'è andêda ben'''",
+);
+
+/** Romansh (Rumantsch)
+ * @author Gion-andri
+ */
+$messages['rm'] = array(
+ 'mainpagetext' => "'''MediaWiki è vegnì installà cun success.'''",
+ 'mainpagedocfooter' => "Consultai il [//meta.wikimedia.org/wiki/Help:Contents manual per utilisaders] per infurmaziuns davart l'utilisaziun da questa software da wiki.
+
+== Cumenzar ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Glista da las opziuns per la configuraziun]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Glista da mail da MediaWiki cun annunzias da novas versiuns]",
);
/** Romanian (Română)
+ * @author Minisarm
* @author Stelistcristi
*/
$messages['ro'] = array(
@@ -10796,12 +13777,36 @@ $messages['ro'] = array(
'config-missing-db-name' => 'Trebuie să introduci o valoare pentru „Numele bazei de dateâ€',
'config-ns-generic' => 'Proiect',
'config-admin-password' => 'Parolă:',
+ 'mainpagetext' => "'''Programul Wiki a fost instalat cu succes.'''",
+ 'mainpagedocfooter' => 'Consultați [//meta.wikimedia.org/wiki/Help:Contents Ghidul utilizatorului (en)] pentru informații despre utilizarea software-ului wiki.
+
+== Primii pași ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista parametrilor configurabili (en)]
+* [//www.mediawiki.org/wiki/Manual:FAQ Întrebări frecvente despre MediaWiki (en)]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discuții a MediaWiki (en)]',
+);
+
+/** Tarandíne (Tarandíne)
+ * @author Joetaras
+ */
+$messages['roa-tara'] = array(
+ 'config-help' => 'ajute',
+ 'mainpagetext' => "'''MediaUicchi ha state 'nstallete.'''",
+ 'mainpagedocfooter' => "Vè vide [//meta.wikimedia.org/wiki/Help:Contents User's Guide] pe l'mbormaziune sus a cumme s'ause 'u softuer wiki.
+
+== Pe accumenzà ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Liste pe le configuraziune]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ de MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste d'a poste de MediaWiki]",
);
/** Russian (РуÑÑкий)
+ * @author Adata80
* @author DCamer
* @author Eleferen
+ * @author Kaganer
* @author Krinkle
+ * @author Lockal
* @author MaxSem
* @author Yuriy Apostol
* @author ÐлекÑандр Сигачёв
@@ -10811,7 +13816,7 @@ $messages['ru'] = array(
'config-desc' => 'ИнÑталлÑтор MediaWiki',
'config-title' => 'УÑтановка MediaWiki $1',
'config-information' => 'ИнформациÑ',
- 'config-localsettings-upgrade' => 'Обнаружен файл <code>LocalSettings.php</code>.
+ 'config-localsettings-upgrade' => 'Обнаружен файл <code>LocalSettings.php</code>.
Ð”Ð»Ñ Ð¾Ð±Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ñтой уÑтановки, пожалуйÑта, введите значение <code>$wgUpgradeKey</code>.
Его можно найти в файле LocalSettings.php.',
'config-localsettings-cli-upgrade' => 'Обнаружен файл LocalSettings.php.
@@ -10829,11 +13834,11 @@ $1',
$1',
'config-session-error' => 'Ошибка при запуÑке ÑеÑÑии: $1',
- 'config-session-expired' => 'Ваша ÑеÑÑÐ¸Ñ Ð¸Ñтекла.
-СеÑÑии наÑтроены на длительноÑÑ‚ÑŒ $1.
-Вы её можете увеличить, изменив <code>session.gc_maxlifetime</code> в php.ini.
+ 'config-session-expired' => 'Ваша ÑеÑÑÐ¸Ñ Ð¸Ñтекла.
+СеÑÑии наÑтроены на длительноÑÑ‚ÑŒ $1.
+Вы её можете увеличить, изменив <code>session.gc_maxlifetime</code> в php.ini.
ПерезапуÑтите процеÑÑ ÑƒÑтановки.',
- 'config-no-session' => 'Данные ÑеÑÑии потерÑны!
+ 'config-no-session' => 'Данные ÑеÑÑии потерÑны!
Проверьте ваш php.ini и убедитеÑÑŒ, что <code>session.save_path</code> уÑтановлен в ÑоответÑтвующий каталог.',
'config-your-language' => 'Ваш Ñзык:',
'config-your-language-help' => 'Выберите Ñзык, на котором будет проиÑходить процеÑÑ ÑƒÑтановки.',
@@ -10861,7 +13866,7 @@ $1',
'config-welcome' => '=== Проверка Ð¾ÐºÑ€ÑƒÐ¶ÐµÐ½Ð¸Ñ ===
ПроводÑÑ‚ÑÑ Ð±Ð°Ð·Ð¾Ð²Ñ‹Ðµ проверки Ñ Ñ†ÐµÐ»ÑŒÑŽ определить, подходит ли Ð´Ð°Ð½Ð½Ð°Ñ ÑиÑтема Ð´Ð»Ñ ÑƒÑтановки MediaWiki.
Укажите результаты Ñтих проверок при обращении за помощью Ñ ÑƒÑтановкой.',
- 'config-copyright' => "=== ÐвторÑкие права и уÑÐ»Ð¾Ð²Ð¸Ñ ===
+ 'config-copyright' => "=== ÐвторÑкие права и уÑÐ»Ð¾Ð²Ð¸Ñ ===
$1
@@ -10870,10 +13875,10 @@ MediaWiki ÑвлÑетÑÑ Ñвободным программным обеÑпÐ
MediaWiki раÑпроÑтранÑетÑÑ Ð² надежде, что она будет полезной, но '''без каких-либо гарантий''', даже без подразумеваемых гарантий '''коммерчеÑкой ценноÑти''' или '''пригодноÑти Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð¹ цели'''. См. лицензию GNU General Public License Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации.
Ð’Ñ‹ должны были получить <doclink href=Copying>копию GNU General Public License</doclink> вмеÑте Ñ Ñтой программой, еÑли нет, то напишите Free Software Foundation, Inc., по адреÑу: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA или [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html прочтите её онлайн].",
- 'config-sidebar' => '* [http://www.mediawiki.org Сайт MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents/ru Справка Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹]
-* [http://www.mediawiki.org/wiki/Manual:Contents/ru Справка Ð´Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтраторов]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/ru FAQ]
+ 'config-sidebar' => '* [//www.mediawiki.org Сайт MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents/ru Справка Ð´Ð»Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»ÐµÐ¹]
+* [//www.mediawiki.org/wiki/Manual:Contents/ru Справка Ð´Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтраторов]
+* [//www.mediawiki.org/wiki/Manual:FAQ/ru FAQ]
----
* <doclink href=Readme>Readme-файл</doclink>
* <doclink href=ReleaseNotes>Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ выпуÑке</doclink>
@@ -10881,24 +13886,23 @@ MediaWiki раÑпроÑтранÑетÑÑ Ð² надежде, что она бу
* <doclink href=UpgradeDoc>Обновление</doclink>',
'config-env-good' => 'Проверка внешней Ñреды была уÑпешно проведена.
Ð’Ñ‹ можете уÑтановить MediaWiki.',
- 'config-env-bad' => 'Была проведена проверка внешней Ñреды.
+ 'config-env-bad' => 'Была проведена проверка внешней Ñреды.
Ð’Ñ‹ не можете уÑтановить MediaWiki.',
'config-env-php' => 'УÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ PHP: $1.',
'config-env-php-toolow' => 'Ðайден PHP $1, тогда как MediaWiki требуетÑÑ PHP верÑии $2 или выше.',
'config-unicode-using-utf8' => 'ИÑпользовать Brion Vibber utf8_normalize.so Ð´Ð»Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Юникода.',
'config-unicode-using-intl' => 'Будет иÑпользовано [http://pecl.php.net/intl раÑширение «intl» Ð´Ð»Ñ PECL] Ð´Ð»Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Юникода.',
- 'config-unicode-pure-php-warning' => "'''Внимание!''': [http://pecl.php.net/intl международное раÑширение PECL] недоÑтупно Ð´Ð»Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Юникода, будет иÑпользоватьÑÑ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° чиÑтом PHP.
-ЕÑли ваш Ñайт работает под выÑокой нагрузкой, вам Ñледует больше узнать о [http://www.mediawiki.org/wiki/Unicode_normalization_considerations нормализации Юникода].",
+ 'config-unicode-pure-php-warning' => "'''Внимание!''': [http://pecl.php.net/intl раÑширение intl из PECL] недоÑтупно Ð´Ð»Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸ Юникода, будет иÑпользоватьÑÑ Ð¼ÐµÐ´Ð»ÐµÐ½Ð½Ð°Ñ Ñ€ÐµÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° чиÑтом PHP.
+ЕÑли ваш Ñайт работает под выÑокой нагрузкой, вам Ñледует больше узнать о [//www.mediawiki.org/wiki/Unicode_normalization_considerations нормализации Юникода].",
'config-unicode-update-warning' => "'''Предупреждение''': уÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ð°Ñ Ð²ÐµÑ€ÑÐ¸Ñ Ð¾Ð±Ñ‘Ñ€Ñ‚ÐºÐ¸ нормализации Юникода иÑпользует Ñтарую верÑию библиотеки [http://site.icu-project.org/ проекта ICU].
-Ð’Ñ‹ должны [http://www.mediawiki.org/wiki/Unicode_normalization_considerations обновить верÑию], еÑли хотите полноценно иÑпользовать Юникод.",
- 'config-no-db' => 'Ðе найдено поддержки баз данных!',
- 'config-no-db-help' => 'Вам необходимо уÑтановить драйвера базы данных Ð´Ð»Ñ PHP.
-ПоддерживаютÑÑ Ñледующие типы баз данных: $1.
+Ð’Ñ‹ должны [//www.mediawiki.org/wiki/Unicode_normalization_considerations обновить верÑию], еÑли хотите полноценно иÑпользовать Юникод.",
+ 'config-no-db' => 'Ðе найдено поддержки баз данных! Вам необходимо уÑтановить драйвера базы данных Ð´Ð»Ñ PHP.
+ПоддерживаютÑÑ Ñледующие базы данных: $1.
-ЕÑли вы иÑпользуете виртуальный хоÑтинг, обратитеÑÑŒ к Ñвоему хоÑтинг-провайдеру Ñ Ð¿Ñ€Ð¾Ñьбой уÑтановить подходÑщий драйвер базы данных.
-ЕÑли вы Ñкомпилировали PHP Ñами, Ñконфигурируйте его Ñнова Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ‹Ð¼ клиентом базы данных, например, Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ <code>./configure --with-mysql</code>.
+ЕÑли вы иÑпользуете виртуальный хоÑтинг, обратитеÑÑŒ к Ñвоему хоÑтинг-провайдеру Ñ Ð¿Ñ€Ð¾Ñьбой уÑтановить подходÑщий драйвер базы данных.
+ЕÑли вы Ñкомпилировали PHP Ñами, Ñконфигурируйте его Ñнова Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ‹Ð¼ клиентом базы данных, например, Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ <code>./configure --with-mysql</code>.
ЕÑли вы уÑтановили PHP из пакетов Debian или Ubuntu, то вам также необходимо уÑтановить модуль php5-mysql.',
- 'config-no-fts3' => "'''Внимание''': SQLite Ñобран без Ð¼Ð¾Ð´ÑƒÐ»Ñ [http://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 будет работать, но Ñто Ñнизит безопаÑноÑÑ‚ÑŒ Ñервера и увеличит риÑк Ð¿Ñ€Ð¾Ð½Ð¸ÐºÐ½Ð¾Ð²ÐµÐ½Ð¸Ñ Ð¸Ð·Ð²Ð½Ðµ.",
@@ -10919,50 +13923,56 @@ MediaWiki будет работать, но Ñто Ñнизит безопаÑн
'config-xml-bad' => 'XML-модуль РÐР отÑутÑтвует.
MediaWiki не будет работать в Ñтой конфигурации, так как требуетÑÑ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ð¾Ð½Ð°Ð» Ñтого модулÑ.
ЕÑли вы работаете в Mandrake, уÑтановите PHP XML-пакет.',
- 'config-pcre' => 'Модуль поддержки PCRE не найден.
+ 'config-pcre' => 'Модуль поддержки PCRE не найден.
Ð”Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ MediaWiki требуетÑÑ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ° Perl-ÑовмеÑтимых регулÑрных выражений.',
- 'config-pcre-no-utf8' => "'''Ð¤Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°'''. Модуль PCRE Ð´Ð»Ñ PHP, похоже, Ñобран без поддержки PCRE_UTF8.
+ 'config-pcre-no-utf8' => "'''Ð¤Ð°Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°'''. Модуль PCRE Ð´Ð»Ñ PHP, похоже, Ñобран без поддержки PCRE_UTF8.
MediaWiki требует поддержки UTF-8 Ð´Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ работы.",
'config-memory-raised' => 'Ограничение на доÑтупную PHP памÑÑ‚ÑŒ (<code>memory_limit</code>) поднÑто Ñ $1 до $2.',
'config-memory-bad' => "'''Внимание:''' размер PHP <code>memory_limit</code> ÑоÑтавлÑет $1.
ВероÑтно, Ñтого Ñлишком мало.
УÑтановка может потерпеть неудачу!",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] уÑтановлен',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] уÑтановлен',
'config-apc' => '[http://www.php.net/apc APC] уÑтановлен',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] уÑтановлен',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] уÑтановлен',
- 'config-no-cache' => "'''Внимание:''' Ðе найдены [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] или [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''Внимание:''' Ðе найдены [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] или [http://www.iis.net/download/WinCacheForPhp WinCache].
КÑширование объектов будет отключено.",
+ 'config-mod-security' => "'''Внимание''': на вашем веб-Ñервере включен [http://modsecurity.org/ mod_security]. При неправильной наÑтройке он может вызывать проблемы Ð´Ð»Ñ MediaWiki или другого ПО, позволÑющего пользователÑм отправлÑÑ‚ÑŒ на Ñервер произвольный текÑÑ‚.
+ОбратитеÑÑŒ к [http://modsecurity.org/documentation/ документации mod_security] или в поддержку вашего хоÑтера, еÑли при работе возникают непонÑтные ошибки.",
'config-diff3-bad' => 'GNU diff3 не найден.',
'config-imagemagick' => 'Обнаружен ImageMagick: <code>$1</code>.
Возможно отображение миниатюр изображений, еÑли вы разрешите закачки файлов.',
- 'config-gd' => 'Ðайдена вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑÐºÐ°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ° GD.
+ 'config-gd' => 'Ðайдена вÑÑ‚Ñ€Ð¾ÐµÐ½Ð½Ð°Ñ Ð³Ñ€Ð°Ñ„Ð¸Ñ‡ÐµÑÐºÐ°Ñ Ð±Ð¸Ð±Ð»Ð¸Ð¾Ñ‚ÐµÐºÐ° GD.
ВозможноÑÑ‚ÑŒ иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¸Ð½Ð¸Ð°Ñ‚ÑŽÑ€ изображений будет включена, еÑли вы включите их загрузку.',
'config-no-scaling' => 'Ðе удалоÑÑŒ найти вÑтроенную библиотеку GD или ImageMagick.
ВозможноÑÑ‚ÑŒ иÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¼Ð¸Ð½Ð¸Ð°Ñ‚ÑŽÑ€ изображений будет отключена.',
- 'config-no-uri' => "'''Ошибка:''' Ðе могу определить текущий URI.
+ 'config-no-uri' => "'''Ошибка:''' Ðе могу определить текущий URI.
УÑтановка прервана.",
- 'config-uploads-not-safe' => "'''Внимание:''' директориÑ, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð¿Ð¾ умолчанию Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¾Ðº (<code>$1</code>) уÑзвима к выполнению произвольных Ñкриптов.
-Ð¥Ð¾Ñ‚Ñ MediaWiki проверÑет вÑе загружаемые файлы на наличие угроз, наÑтоÑтельно рекомендуетÑÑ [http://www.mediawiki.org/wiki/Manual:Security#Upload_security закрыть данную уÑзвимоÑÑ‚ÑŒ] перед включением загрузки файлов.",
- 'config-brokenlibxml' => 'Ð’ вашей ÑиÑтеме имеетÑÑ Ñочетание верÑий PHP и libxml2, могущее привеÑти к Ñкрытым повреждениÑм данных в MediaWiki и других веб-приложениÑÑ….
-Обновите PHP до верÑии 5.2.9 или Ñтарше и libxml2 до 2.7.3 или Ñтарше ([http://bugs.php.net/bug.php?id=45996 ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± ошибке]).
+ 'config-using-server' => 'Будет иÑпользовано Ð¸Ð¼Ñ Ñервера «<nowiki>$1</nowiki>».',
+ 'config-uploads-not-safe' => "'''Внимание:''' директориÑ, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÐµÐ¼Ð°Ñ Ð¿Ð¾ умолчанию Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·Ð¾Ðº (<code>$1</code>) уÑзвима к выполнению произвольных Ñкриптов.
+Ð¥Ð¾Ñ‚Ñ MediaWiki проверÑет вÑе загружаемые файлы на наличие угроз, наÑтоÑтельно рекомендуетÑÑ [//www.mediawiki.org/wiki/Manual:Security#Upload_security закрыть данную уÑзвимоÑÑ‚ÑŒ] перед включением загрузки файлов.",
+ 'config-brokenlibxml' => 'Ð’ вашей ÑиÑтеме имеетÑÑ Ñочетание верÑий PHP и libxml2, могущее привеÑти к Ñкрытым повреждениÑм данных в MediaWiki и других веб-приложениÑÑ….
+Обновите PHP до верÑии 5.2.9 или Ñтарше и libxml2 до 2.7.3 или Ñтарше ([//bugs.php.net/bug.php?id=45996 ÑÐ²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± ошибке]).
УÑтановка прервана.',
'config-using531' => 'PHP $1 не ÑовмеÑтим Ñ MediaWiki из-за ошибки Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ð°Ð¼Ð¸-ÑÑылками при вызовах <code>__call()</code>.
ОбновитеÑÑŒ до PHP 5.3.2 и выше, или откатитеÑÑŒ до PHP 5.3.0, чтобы избежать Ñтой проблемы.
УÑтановка прервана.',
+ 'config-suhosin-max-value-length' => 'Suhosin уÑтановлен и ограничивает длину параметра GET до $1 байт. Компонент MediaWiki ResourceLoader будет обходить Ñто ограничение, но Ñто Ñнизит производительноÑÑ‚ÑŒ. ЕÑли Ñто возможно, Ñледует уÑтановить suhosin.get.max_value_length 1024 или выше в php.ini, а также уÑтановить Ð´Ð»Ñ $wgResourceLoaderMaxQueryLength такое же значение в LocalSettings.php.',
'config-db-type' => 'Тип базы данных:',
'config-db-host' => 'ХоÑÑ‚ базы данных:',
- 'config-db-host-help' => 'ЕÑли Ñервер базы данных находитÑÑ Ð½Ð° другом Ñервере, введите здеÑÑŒ его Ð¸Ð¼Ñ Ñ…Ð¾Ñта или IP-адреÑ.
+ 'config-db-host-help' => 'ЕÑли Ñервер базы данных находитÑÑ Ð½Ð° другом Ñервере, введите здеÑÑŒ его Ð¸Ð¼Ñ Ñ…Ð¾Ñта или IP-адреÑ.
ЕÑли вы иÑпользуете виртуальный хоÑтинг, ваш провайдер должен указать правильное Ð¸Ð¼Ñ Ñ…Ð¾Ñта в Ñвоей документации.
-ЕÑли вы уÑтанавливаете ÑиÑтему на Ñервере под Windows и иÑпользуете MySQL, Ð¸Ð¼Ñ Ñервера «localhost» может не работать. Ð’ Ñтом Ñлучае попробуйте указать «127.0.0.1».',
+ЕÑли вы уÑтанавливаете ÑиÑтему на Ñервере под Windows и иÑпользуете MySQL, Ð¸Ð¼Ñ Ñервера «localhost» может не работать. Ð’ Ñтом Ñлучае попробуйте указать 127.0.0.1 локальный IP-адреÑ.
+
+ЕÑли вы иÑпользуете PostgreSQL, оÑтавьте Ñто поле пуÑтым Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ‡ÐµÑ€ÐµÐ· Ñокет Unix.',
'config-db-host-oracle' => 'TNS базы данных:',
'config-db-host-oracle-help' => 'Введите дейÑтвительный [http://download.oracle.com/docs/cd/B28359_01/network.111/b28317/tnsnames.htm Local Connect Name]; файл tnsnames.ora должен быть видимым Ð´Ð»Ñ Ñтой инÑталлÑции. <br />При иÑпользовании клиентÑких библиотек верÑии 10g и Ñтарше также возможно иÑпользовать метод Ð¸Ð¼ÐµÐ½Ð¾Ð²Ð°Ð½Ð¸Ñ [http://download.oracle.com/docs/cd/E11882_01/network.112/e10836/naming.htm Easy Connect].',
'config-db-wiki-settings' => 'Ð˜Ð´ÐµÐ½Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ñтой вики',
'config-db-name' => 'Ð˜Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных:',
- 'config-db-name-help' => 'Выберите название-идентификатор Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ вики.
-Оно не должно Ñодержать пробелов.
+ 'config-db-name-help' => 'Выберите название-идентификатор Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ вики.
+Оно не должно Ñодержать пробелов.
ЕÑли вы иÑпользуете виртуальный хоÑтинг, провайдер или выдаÑÑ‚ вам конкретное Ð¸Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных, или позволит Ñоздавать базы данных Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ панели управлениÑ.',
'config-db-name-oracle' => 'Схема базы данных:',
@@ -10974,46 +13984,47 @@ MediaWiki требует поддержки UTF-8 Ð´Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ Ñ€
'config-db-install-account' => 'Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Ð´Ð»Ñ ÑƒÑтановки',
'config-db-username' => 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ð°Ð·Ñ‹ данных:',
'config-db-password' => 'Пароль базы данных:',
- 'config-db-password-empty' => 'ПожалуйÑта, введите пароль Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ð°Ð·Ñ‹ данных «$1».
+ 'config-db-password-empty' => 'ПожалуйÑта, введите пароль Ð´Ð»Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ð°Ð·Ñ‹ данных «$1».
Ð¥Ð¾Ñ‚Ñ Ð¸ возможно Ñоздание пользователей без паролей, Ñто небезопаÑно.',
- 'config-db-install-username' => 'Введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, которое будет иÑпользоватьÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº базе данных в процеÑÑе уÑтановки.
+ 'config-db-install-username' => 'Введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ, которое будет иÑпользоватьÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº базе данных в процеÑÑе уÑтановки.
Это не Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ MediaWiki, Ñто Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð´Ð»Ñ Ð±Ð°Ð·Ñ‹ данных.',
- 'config-db-install-password' => 'Введите пароль, который будет иÑпользоватьÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº базе данных в процеÑÑе уÑтановки.
+ 'config-db-install-password' => 'Введите пароль, который будет иÑпользоватьÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº базе данных в процеÑÑе уÑтановки.
Это не пароль Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ MediaWiki, Ñто пароль Ð´Ð»Ñ Ð±Ð°Ð·Ñ‹ данных.',
'config-db-install-help' => 'Введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль, которые будут иÑпользоватьÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº базе данных во Ð²Ñ€ÐµÐ¼Ñ Ð¿Ñ€Ð¾Ñ†ÐµÑÑа уÑтановки.',
'config-db-account-lock' => 'ИÑпользовать то же Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль Ð´Ð»Ñ Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾Ð¹ работы',
'config-db-wiki-account' => 'Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ Ð´Ð»Ñ Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾Ð¹ работы',
- 'config-db-wiki-help' => 'Введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль, которые будут иÑпользоватьÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº базе данных во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾Ð¹ работы вики.
+ 'config-db-wiki-help' => 'Введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль, которые будут иÑпользоватьÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº базе данных во Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ñ‹Ñ‡Ð½Ð¾Ð¹ работы вики.
ЕÑли такой учётной запиÑи не ÑущеÑтвует, а уÑÑ‚Ð°Ð½Ð¾Ð²Ð¾Ñ‡Ð½Ð°Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ имеет доÑтаточно привилегий, то Ð¾Ð±Ñ‹Ñ‡Ð½Ð°Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ будет Ñоздана Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ð¾ необходимыми Ð´Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ вики привилегиÑми.',
'config-db-prefix' => 'ÐŸÑ€ÐµÑ„Ð¸ÐºÑ Ñ‚Ð°Ð±Ð»Ð¸Ñ† базы данных:',
- 'config-db-prefix-help' => 'ЕÑли вам нужно делить одну базу данных между неÑколькими вики, или между MediaWiki и другими веб-приложениÑми, вы можете добавить Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð´Ð»Ñ Ð²Ñех имён таблиц.
-Ðе иÑпользуйте пробелы.
+ 'config-db-prefix-help' => 'ЕÑли вам нужно делить одну базу данных между неÑколькими вики, или между MediaWiki и другими веб-приложениÑми, вы можете добавить Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð´Ð»Ñ Ð²Ñех имён таблиц.
+Ðе иÑпользуйте пробелы.
Это поле обычно оÑтаётÑÑ Ð¿ÑƒÑтым.',
'config-db-charset' => 'Ðабор Ñимволов базы данных',
'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 бинарнаÑ',
'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
'config-charset-mysql4' => 'MySQL 4.0 обратно ÑовмеÑÑ‚Ð¸Ð¼Ð°Ñ Ñ UTF-8',
- 'config-charset-help' => "'''Внимание.''' ЕÑли вы иÑпользуете '''обратно ÑовмеÑтый UTF-8''' на MySQL 4.1+ и Ñоздаёте резервные копии базы данных Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ <code>mysqldump</code>, то вÑе не-ASCII Ñимволы могут быть иÑкажены, а Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¾ÐºÐ°Ð¶ÐµÑ‚ÑÑ Ð½ÐµÐ³Ð¾Ð´Ð½Ð¾Ð¹!
+ 'config-charset-help' => "'''Внимание.''' ЕÑли вы иÑпользуете '''обратно ÑовмеÑтый UTF-8''' на MySQL 4.1+ и Ñоздаёте резервные копии базы данных Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ <code>mysqldump</code>, то вÑе не-ASCII Ñимволы могут быть иÑкажены, а Ñ€ÐµÐ·ÐµÑ€Ð²Ð½Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ Ð¾ÐºÐ°Ð¶ÐµÑ‚ÑÑ Ð½ÐµÐ³Ð¾Ð´Ð½Ð¾Ð¹!
-Ð’ '''бинарном режиме''' MediaWiki хранит юникодный текÑÑ‚ в базе в виде двоичных полей.
-Это более Ñффективно, чем MySQL в режиме UTF-8, позволÑет иÑпользовать полный набор Ñимволов Юникода.
-Ð’ '''режиме UTF-8''' MySQL будет знать к какому набору Ñимволу отноÑÑÑ‚ÑÑ Ð²Ð°ÑˆÐ¸ данные, Ñможет предÑтавлÑÑ‚ÑŒ и преобразовать их надлежащим образом (буква РокажетÑÑ Ð¿Ñ€Ð¸ Ñортировке поÑле буквы Е, а не поÑле буквы Я, как в бинарном режиме),
-но не позволит вам ÑохранÑÑ‚ÑŒ Ñимволы, выходÑщие за пределы [http://ru.wikipedia.org/wiki/Символы,_предÑтавленные_в_Юникоде#.D0.91.D0.B0.D0.B7.D0.BE.D0.B2.D0.B0.D1.8F_.D0.BC.D0.BD.D0.BE.D0.B3.D0.BE.D1.8F.D0.B7.D1.8B.D0.BA.D0.BE.D0.B2.D0.B0.D1.8F_.D0.BF.D0.BB.D0.BE.D1.81.D0.BA.D0.BE.D1.81.D1.82.D1.8C BMP].",
+Ð’ '''бинарном режиме''' MediaWiki хранит юникодный текÑÑ‚ в базе в виде двоичных полей.
+Это более Ñффективно, чем MySQL в режиме UTF-8, позволÑет иÑпользовать полный набор Ñимволов Юникода.
+Ð’ '''режиме UTF-8''' MySQL будет знать к какому набору Ñимволу отноÑÑÑ‚ÑÑ Ð²Ð°ÑˆÐ¸ данные, Ñможет предÑтавлÑÑ‚ÑŒ и преобразовать их надлежащим образом (буква РокажетÑÑ Ð¿Ñ€Ð¸ Ñортировке поÑле буквы Е, а не поÑле буквы Я, как в бинарном режиме),
+но не позволит вам ÑохранÑÑ‚ÑŒ Ñимволы, выходÑщие за пределы [//ru.wikipedia.org/wiki/Символы,_предÑтавленные_в_Юникоде#.D0.91.D0.B0.D0.B7.D0.BE.D0.B2.D0.B0.D1.8F_.D0.BC.D0.BD.D0.BE.D0.B3.D0.BE.D1.8F.D0.B7.D1.8B.D0.BA.D0.BE.D0.B2.D0.B0.D1.8F_.D0.BF.D0.BB.D0.BE.D1.81.D0.BA.D0.BE.D1.81.D1.82.D1.8C BMP].",
'config-mysql-old' => 'Ðеобходим MySQL $1 или более позднÑÑ Ð²ÐµÑ€ÑиÑ. У Ð²Ð°Ñ ÑƒÑтановлен MySQL $2.',
'config-db-port' => 'Порт базы данных:',
'config-db-schema' => 'Схема Ð´Ð»Ñ MediaWiki',
'config-db-schema-help' => 'Эта Ñхема обычно работают хорошо.
ИзменÑйте её только еÑли знаете, что вам Ñто нужно.',
+ 'config-pg-test-error' => "Ðе удаётÑÑ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡Ð¸Ñ‚ÑŒÑÑ Ðº базе данных '''$1''': $2",
'config-sqlite-dir' => 'Ð”Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… SQLite:',
- 'config-sqlite-dir-help' => "SQLite хранит вÑе данные в одном файле.
+ 'config-sqlite-dir-help' => "SQLite хранит вÑе данные в одном файле.
-ДиректориÑ, которую вы должны указать, должна быть доÑтупна Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи веб-Ñервером во Ð²Ñ€ÐµÐ¼Ñ ÑƒÑтановки.
+ДиректориÑ, которую вы должны указать, должна быть доÑтупна Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи веб-Ñервером во Ð²Ñ€ÐµÐ¼Ñ ÑƒÑтановки.
Она '''не должна''' быть доÑтупна через Интернет, поÑтому не должна Ñовпадать Ñ Ñ‚Ð¾Ð¹, где хранÑÑ‚ÑÑ PHP файлы.
УÑтановщик запишет в Ñту директорию файл <code>.htaccess</code>, но еÑли Ñто не Ñработает, кто-нибудь может получить доÑтуп ко вÑей базе данных.
-Ð’ Ñтой базе находитÑÑ Ð² том чиÑле и Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ пользователÑÑ… (адреÑа Ñлектронной почты, Ñ…Ñши паролей), а также удалённые Ñтраницы и другие Ñекретные данные о вики.
+Ð’ Ñтой базе находитÑÑ Ð² том чиÑле и Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ пользователÑÑ… (адреÑа Ñлектронной почты, Ñ…Ñши паролей), а также удалённые Ñтраницы и другие Ñекретные данные о вики.
По возможноÑти, раÑположите базу данных где-нибудь в Ñтороне, например, в <code>/var/lib/mediawiki/yourwiki</code>.",
'config-oracle-def-ts' => 'ПроÑтранÑтво таблиц по умолчанию:',
@@ -11022,19 +14033,22 @@ MediaWiki требует поддержки UTF-8 Ð´Ð»Ñ ÐºÐ¾Ñ€Ñ€ÐµÐºÑ‚Ð½Ð¾Ð¹ Ñ€
'config-type-postgres' => 'PostgreSQL',
'config-type-sqlite' => 'SQLite',
'config-type-oracle' => 'Oracle',
- 'config-support-info' => 'MediaWiki поддерживает Ñледующие СУБД:
+ 'config-type-ibm_db2' => 'IBM DB2',
+ 'config-support-info' => 'MediaWiki поддерживает Ñледующие СУБД:
-$1
+$1
ЕÑли вы не видите Ñвоей ÑиÑтемы Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… в Ñтом ÑпиÑке, Ñледуйте инÑтрукциÑм, на которые еÑÑ‚ÑŒ ÑÑылка выше, чтобы получить поддержку.',
'config-support-mysql' => '* $1 — оÑÐ½Ð¾Ð²Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных Ð´Ð»Ñ MediaWiki, и лучше поддерживаетÑÑ ([http://www.php.net/manual/en/mysql.installation.php инÑтрукциÑ, как Ñобрать PHP Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ MySQL])',
'config-support-postgres' => '* $1 — популÑÑ€Ð½Ð°Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ð°Ñ Ð¡Ð£Ð‘Ð”, альтернатива MySQL ([http://www.php.net/manual/en/pgsql.installation.php инÑтрукциÑ, как Ñобрать PHP Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ PostgreSQL]). Могут вÑтречатьÑÑ Ð½ÐµÐ±Ð¾Ð»ÑŒÑˆÐ¸Ðµ неиÑправленные ошибки, не рекомендуетÑÑ Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² рабочей ÑиÑтеме.',
'config-support-sqlite' => '* $1 — Ñто легковеÑÐ½Ð°Ñ ÑиÑтема баз данных, Ð¸Ð¼ÐµÑŽÑ‰Ð°Ñ Ð¾Ñ‡ÐµÐ½ÑŒ хорошую поддержку. ([http://www.php.net/manual/en/pdo.installation.php инÑтрукциÑ, как Ñобрать PHP Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ SQLite], работающей поÑредÑтвом PDO)',
'config-support-oracle' => '* $1 — Ñто коммерчеÑÐºÐ°Ñ Ð±Ð°Ð·Ð° данных маÑштаба предприÑтиÑ. ([http://www.php.net/manual/en/oci8.installation.php Как Ñобрать PHP Ñ Ð¿Ð¾Ð´Ð´ÐµÑ€Ð¶ÐºÐ¾Ð¹ OCI8])',
+ 'config-support-ibm_db2' => '$1 — коммерчеÑÐºÐ°Ñ Ð±Ð°Ð·Ð° данных маÑштаба предприÑтиÑ.',
'config-header-mysql' => 'ÐаÑтройки MySQL',
'config-header-postgres' => 'ÐаÑтройки PostgreSQL',
'config-header-sqlite' => 'ÐаÑтройки SQLite',
'config-header-oracle' => 'ÐаÑтройки Oracle',
+ 'config-header-ibm_db2' => 'ÐаÑтройки IBM DB2',
'config-invalid-db-type' => 'Ðеверный тип базы данных',
'config-missing-db-name' => 'Ð’Ñ‹ должны ввеÑти значение параметра Â«Ð˜Ð¼Ñ Ð±Ð°Ð·Ñ‹ данных»',
'config-missing-db-host' => 'Ðеобходимо ввеÑти значение параметра «Сервер базы данных»',
@@ -11048,29 +14062,29 @@ $1
'config-connection-error' => '$1.
Проверьте хоÑÑ‚, Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль и попробуйте ещё раз.',
- 'config-invalid-schema' => 'ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñхема Ð´Ð»Ñ MediaWiki «$1».
+ 'config-invalid-schema' => 'ÐÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñхема Ð´Ð»Ñ MediaWiki «$1».
ИÑпользуйте только ASCII Ñимволы (a-z, A-Z), цифры(0-9) и знаки подчёркиваниÑ(_).',
'config-db-sys-create-oracle' => 'Программа уÑтановки поддерживает только иÑпользование SYSDBA Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ учётной запиÑи.',
'config-db-sys-user-exists-oracle' => 'Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ «$1». SYSDBA может иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ð½Ð¾Ð²Ð¾Ð¹ учётной запиÑи!',
'config-postgres-old' => 'Ðеобходим PostgreSQL $1 или более позднÑÑ Ð²ÐµÑ€ÑиÑ. У Ð²Ð°Ñ ÑƒÑтановлен PostgreSQL $2.',
- 'config-sqlite-name-help' => 'Выберите имÑ-идентификатор Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ вики.
+ 'config-sqlite-name-help' => 'Выберите имÑ-идентификатор Ð´Ð»Ñ Ð²Ð°ÑˆÐµÐ¹ вики.
Ðе иÑпользуйте дефиÑÑ‹ и пробелы.
Эта Ñтрока будет иÑпользоватьÑÑ Ð² имени файла SQLite.',
- 'config-sqlite-parent-unwritable-group' => 'Ðе удалоÑÑŒ Ñоздать директорию данных <nowiki><code>$1</code></nowiki>, так как у веб-Ñервера нет прав запиÑи в родительÑкую директорию <nowiki><code>$2</code></nowiki>.
+ 'config-sqlite-parent-unwritable-group' => 'Ðе удалоÑÑŒ Ñоздать директорию данных <nowiki><code>$1</code></nowiki>, так как у веб-Ñервера нет прав запиÑи в родительÑкую директорию <nowiki><code>$2</code></nowiki>.
-УÑтановщик определил пользователÑ, под которым работает веб-Ñервер.
-Сделайте директорию <nowiki><code>$3</code></nowiki> доÑтупной Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи и продолжите.
-Ð’ Unix/Linux ÑиÑтеме выполните:
+УÑтановщик определил пользователÑ, под которым работает веб-Ñервер.
+Сделайте директорию <nowiki><code>$3</code></nowiki> доÑтупной Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи и продолжите.
+Ð’ Unix/Linux ÑиÑтеме выполните:
<pre>cd $2
mkdir $3
chgrp $4 $3
chmod g+w $3</pre>',
- 'config-sqlite-parent-unwritable-nogroup' => 'Ðе удалоÑÑŒ Ñоздать директорию Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… <code><nowiki>$1</nowiki></code>, так как у веб-Ñервера нет прав на запиÑÑŒ в родительÑкую директорию <code><nowiki>$2</nowiki></code>.
+ 'config-sqlite-parent-unwritable-nogroup' => 'Ðе удалоÑÑŒ Ñоздать директорию Ð´Ð»Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… <code><nowiki>$1</nowiki></code>, так как у веб-Ñервера нет прав на запиÑÑŒ в родительÑкую директорию <code><nowiki>$2</nowiki></code>.
-Программа уÑтановки не Ñмогла определить пользователÑ, под которым работает веб-Ñервер.
-Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ñделайте каталог <code><nowiki>$3</nowiki></code> глобально доÑтупным Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи Ñерверу (и другим).
-Ð’ Unix/Linux Ñделайте:
+Программа уÑтановки не Ñмогла определить пользователÑ, под которым работает веб-Ñервер.
+Ð”Ð»Ñ Ð¿Ñ€Ð¾Ð´Ð¾Ð»Ð¶ÐµÐ½Ð¸Ñ Ñделайте каталог <code><nowiki>$3</nowiki></code> глобально доÑтупным Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи Ñерверу (и другим).
+Ð’ Unix/Linux Ñделайте:
<pre>cd $2
mkdir $3
@@ -11079,19 +14093,19 @@ chmod a+w $3</pre>',
Проверьте раÑположение и повторите попытку.',
'config-sqlite-dir-unwritable' => 'Ðевозможно произвеÑти запиÑÑŒ в каталог «$1».
Измените наÑтройки доÑтупа так, чтобы веб-Ñервер мог запиÑывать в Ñтот каталог, и попробуйте ещё раз.',
- 'config-sqlite-connection-error' => '$1.
+ 'config-sqlite-connection-error' => '$1.
Проверьте название базы данных и директорию Ñ Ð´Ð°Ð½Ð½Ñ‹Ð¼Ð¸ и попробуйте ещё раз.',
'config-sqlite-readonly' => 'Файл <code>$1</code> недоÑтупен Ð´Ð»Ñ Ð·Ð°Ð¿Ð¸Ñи.',
'config-sqlite-cant-create-db' => 'Ðе удаётÑÑ Ñоздать файл базы данных <code>$1</code> .',
'config-sqlite-fts3-downgrade' => 'У PHP отÑутÑтвует поддержка FTS3 — ÑбраÑываем таблицы',
- 'config-can-upgrade' => "В базе данных найдены таблицы MediaWiki.
+ 'config-can-upgrade' => "В базе данных найдены таблицы MediaWiki.
Чтобы обновить их до MediaWiki $1, нажмите на кнопку '''«Продолжить»'''.",
- 'config-upgrade-done' => "Обновление завершено.
+ 'config-upgrade-done' => "Обновление завершено.
-Теперь вы можете [$1 начать иÑпользовать вики].
+Теперь вы можете [$1 начать иÑпользовать вики].
-ЕÑли вы хотите повторно Ñоздать файл <code>LocalSettings.php</code>, нажмите на кнопку ниже.
+ЕÑли вы хотите повторно Ñоздать файл <code>LocalSettings.php</code>, нажмите на кнопку ниже.
Это дейÑтвие '''не рекомендуетÑÑ''', еÑли у Ð²Ð°Ñ Ð½Ðµ возникло проблем при уÑтановке.",
'config-upgrade-done-no-regenerate' => 'Обновление завершено.
@@ -11103,21 +14117,29 @@ chmod a+w $3</pre>',
'config-db-web-help' => 'Выберите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð¸ пароль, которые веб-Ñервер будет иÑпользовать Ð´Ð»Ñ Ð¿Ð¾Ð´ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ðº Ñерверу базы данных при обычной работе вики.',
'config-db-web-account-same' => 'ИÑпользовать ту же учётную запиÑÑŒ, что и Ð´Ð»Ñ ÑƒÑтановки',
'config-db-web-create' => 'Создать учётную запиÑÑŒ, еÑли она ещё не ÑущеÑтвует',
- 'config-db-web-no-create-privs' => 'Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ, ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð²Ð°Ð¼Ð¸ Ð´Ð»Ñ ÑƒÑтановки, не обладает доÑтаточными правами Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи.
+ 'config-db-web-no-create-privs' => 'Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ, ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð²Ð°Ð¼Ð¸ Ð´Ð»Ñ ÑƒÑтановки, не обладает доÑтаточными правами Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи.
Ð£ÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð·Ð´ÐµÑÑŒ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ уже должна ÑущеÑтвовать.',
'config-mysql-engine' => 'Движок базы данных:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => "''' Внимание.''' Ð’Ñ‹ выбрали механизм MyISAM Ð´Ð»Ñ Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð´Ð°Ð½Ð½Ñ‹Ñ… MySQL. Он не рекомендуетÑÑ Ðº иÑпользованию по Ñледующим причинам:
+* он Ñлабо поддерживает параллелизм из-за табличных блокировок;
+* более Ñклонен к потере данных, по Ñравнению Ñ Ð´Ñ€ÑƒÐ³Ð¸Ð¼Ð¸ механизмами;
+* код MediaWiki не вÑегда учитывает оÑобенноÑти MyISAM должным образом.
+
+ЕÑли ваша уÑтановка MySQL поддерживает InnoDB, наÑтоÑтельно рекомендуетÑÑ Ð²Ñ‹Ð±Ñ€Ð°Ñ‚ÑŒ Ñтот механизм.
+ЕÑли ваша уÑтановка MySQL не поддерживает InnoDB, возможно, наÑтало Ð²Ñ€ÐµÐ¼Ñ Ð¾Ð±Ð½Ð¾Ð²Ð¸Ñ‚ÑŒÑÑ.",
'config-mysql-engine-help' => "'''InnoDB''' почти вÑегда предпочтительнее, так как он лучше ÑправлÑетÑÑ Ñ Ð¿Ð°Ñ€Ð°Ð»Ð»ÐµÐ»ÑŒÐ½Ñ‹Ð¼ доÑтупом.
'''MyISAM''' может оказатьÑÑ Ð±Ñ‹Ñтрее Ð´Ð»Ñ Ð²Ð¸ÐºÐ¸ Ñ Ð¾Ð´Ð½Ð¸Ð¼ пользователем или Ñ Ð¼Ð¸Ð½Ð¸Ð¼Ð°Ð»ÑŒÐ½Ñ‹Ð¼ количеÑтвом поÑтупающих правок, однако базы данных на нём портÑÑ‚ÑÑ Ñ‡Ð°Ñ‰Ðµ, чем на InnoDB.",
'config-mysql-charset' => 'Ðабор Ñимволов (ÐºÐ¾Ð´Ð¾Ð²Ð°Ñ Ñ‚Ð°Ð±Ð»Ð¸Ñ†Ð°) базы данных:',
'config-mysql-binary' => 'Двоичный',
'config-mysql-utf8' => 'UTF-8',
- 'config-mysql-charset-help' => "Ð’ '''двоичном режиме''' MediaWiki хранит UTF-8 текÑÑ‚ в бинарных полÑÑ… базы данных.
-Это более Ñффективно, чем ''UTF-8 режим'' MySQL, и позволÑет иÑпользовать полный набор Ñимволов Unicode.
+ 'config-mysql-charset-help' => "Ð’ '''двоичном режиме''' MediaWiki хранит UTF-8 текÑÑ‚ в бинарных полÑÑ… базы данных.
+Это более Ñффективно, чем ''UTF-8 режим'' MySQL, и позволÑет иÑпользовать полный набор Ñимволов Unicode.
-Ð’ '''режиме UTF-8''' MySQL будет знать в какой кодировке находÑÑ‚ÑÑ Ð’Ð°ÑˆÐ¸ данные и может отображать и преобразовывать их ÑоответÑтвующим образом, но Ñто не позволит вам хранить Ñимволы выше [http://en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Базовой МногоÑзыковой ПлоÑкоÑти].",
+Ð’ '''режиме UTF-8''' MySQL будет знать в какой кодировке находÑÑ‚ÑÑ Ð’Ð°ÑˆÐ¸ данные и может отображать и преобразовывать их ÑоответÑтвующим образом, но Ñто не позволит вам хранить Ñимволы выше [//en.wikipedia.org/wiki/Mapping_of_Unicode_character_planes Базовой МногоÑзыковой ПлоÑкоÑти].",
+ 'config-ibm_db2-low-db-pagesize' => "Ð’ вашей базе данных DB2 по умолчанию задано табличное проÑтранÑтво Ñ Ð½ÐµÐ´Ð¾Ñтаточным размером Ñтраницы. Размер Ñтраницы должен быть не менее '''32K'''.",
'config-site-name' => 'Ðазвание вики:',
'config-site-name-help' => 'Ðазвание будет отображатьÑÑ Ð² заголовке окна браузера и в некоторых других меÑтах вики.',
'config-site-name-blank' => 'Введите название Ñайта.',
@@ -11126,10 +14148,10 @@ chmod a+w $3</pre>',
'config-ns-site-name' => 'То же, что Ð¸Ð¼Ñ Ð²Ð¸ÐºÐ¸: $1',
'config-ns-other' => 'Другое (укажите)',
'config-ns-other-default' => 'MyWiki',
- 'config-project-namespace-help' => "Ð¡Ð»ÐµÐ´ÑƒÑ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ñƒ Википедии, многие вики хранÑÑ‚ Ñвои Ñтраницы правил отдельно от Ñтраниц оÑновного ÑодержаниÑ, в так называемом '''«проÑтранÑтве имён проекта»'''.
-Ð’Ñе Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñтраниц в Ñтом проÑтранÑтве имён начинаетÑÑ Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ префикÑа, который вы можете задать здеÑÑŒ.
+ 'config-project-namespace-help' => "Ð¡Ð»ÐµÐ´ÑƒÑ Ð¿Ñ€Ð¸Ð¼ÐµÑ€Ñƒ Википедии, многие вики хранÑÑ‚ Ñвои Ñтраницы правил отдельно от Ñтраниц оÑновного ÑодержаниÑ, в так называемом '''«проÑтранÑтве имён проекта»'''.
+Ð’Ñе Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñтраниц в Ñтом проÑтранÑтве имён начинаетÑÑ Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ префикÑа, который вы можете задать здеÑÑŒ.
Обычно, Ñтот Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð¿Ñ€Ð¾Ð¸Ñходит от имени вики, но он не может Ñодержать знаки препинаниÑ, Ñимволы «#» или «:».",
- 'config-ns-invalid' => 'Указанное проÑтранÑтво имён <nowiki>$1</nowiki> недопуÑтимо.
+ 'config-ns-invalid' => 'Указанное проÑтранÑтво имён <nowiki>$1</nowiki> недопуÑтимо.
Укажите другое проÑтранÑтво имён проекта.',
'config-ns-conflict' => 'Указанное проÑтранÑтво имён «<nowiki>$1</nowiki>» конфликтует Ñо Ñтандартным проÑтранÑтвом имён MediaWiki.
Укажите другое проÑтранÑтво имён проекта.',
@@ -11140,7 +14162,7 @@ chmod a+w $3</pre>',
'config-admin-help' => 'Введите ваше Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð·Ð´ÐµÑÑŒ, например, «Иван Иванов».
Это Ð¸Ð¼Ñ Ð±ÑƒÐ´ÐµÑ‚ иÑпользоватьÑÑ Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð° в вики.',
'config-admin-name-blank' => 'Введите Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтратора.',
- 'config-admin-name-invalid' => 'Указанное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Â«<nowiki>$1</nowiki>» недопуÑтимо.
+ 'config-admin-name-invalid' => 'Указанное Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Â«<nowiki>$1</nowiki>» недопуÑтимо.
Укажите другое Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ.',
'config-admin-password-blank' => 'Введите пароль Ð´Ð»Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи админиÑтратора.',
'config-admin-password-same' => 'Пароль не должен быть таким же, как Ð¸Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ.',
@@ -11153,7 +14175,9 @@ chmod a+w $3</pre>',
'config-subscribe' => 'ПодпиÑатьÑÑ Ð½Ð° [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce раÑÑылку новоÑтей о поÑвлении новых верÑий MediaWiki].',
'config-subscribe-help' => 'Это ÑпиÑок раÑÑылки Ñ Ð¼Ð°Ð»Ñ‹Ð¼ чиÑлом Ñообщений, иÑпользуетÑÑ Ð´Ð»Ñ Ð°Ð½Ð¾Ð½Ñа новых выпуÑков и Ñообщений о проблемах Ñ Ð±ÐµÐ·Ð¾Ð¿Ð°ÑноÑтью.
Вам Ñледует подпиÑатьÑÑ Ð½Ð° него и обновлÑÑ‚ÑŒ движок MediaWiki, по мере выхода новых верÑий.',
- 'config-almost-done' => 'Вы почти у цели!
+ 'config-subscribe-noemail' => 'Ð’Ñ‹ попыталиÑÑŒ подпиÑатьÑÑ Ð½Ð° ÑпиÑок раÑÑылки уведомлений о новых выпуÑках без ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð°Ð´Ñ€ÐµÑа Ñлектронной почты.
+Укажите Ð°Ð´Ñ€ÐµÑ Ñлектронной почты, еÑли вы хотите подпиÑатьÑÑ Ð½Ð° ÑпиÑок раÑÑылки.',
+ 'config-almost-done' => 'Вы почти у цели!
ОÑтальные наÑтройки можно пропуÑтить и приÑтупить к уÑтановке вики.',
'config-optional-continue' => 'ПроизвеÑти тонкую наÑтройку',
'config-optional-skip' => 'Хватит, уÑтановить вики',
@@ -11168,28 +14192,28 @@ chmod a+w $3</pre>',
Однако, движок MediaWiki можно иÑпользовать и иными ÑпоÑобами, и не далеко не вÑех удаётÑÑ ÑƒÐ±ÐµÐ´Ð¸Ñ‚ÑŒ в преимущеÑтвах открытой вики-работы.
Так что в Ð²Ð°Ñ ÐµÑÑ‚ÑŒ выбор.
-ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ '''«{{int:config-profile-wiki}}»''' позволÑет вÑем править Ñтраницы даже не региÑтрируÑÑÑŒ на Ñайте. ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ '''{{int:config-profile-no-anon}}''' обеÑпечивает дополнительный учёт, но может отÑечь Ñлучайных учаÑтников.
+ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ '''«{{int:config-profile-wiki}}»''' позволÑет вÑем править Ñтраницы даже не региÑтрируÑÑÑŒ на Ñайте. ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ '''{{int:config-profile-no-anon}}''' обеÑпечивает дополнительный учёт, но может отÑечь Ñлучайных учаÑтников.
Сценарий '''«{{int:config-profile-fishbowl}}»''' разрешает редактирование только определённым учаÑтникам, но общедоÑтупным оÑтаётÑÑ Ð¿Ñ€Ð¾Ñмотр Ñтраниц, в том чиÑле проÑмотр иÑтории изменениÑ. Ð’ режиме '''«{{int:config-profile-private}}»''' проÑмотр Ñтраниц разрешён только определённым пользователÑм, какаÑ-то их чаÑÑ‚ÑŒ может иметь также права на редактирование.
-Более Ñложные Ñхемы Ñ€Ð°Ð·Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð² можно наÑтроить поÑле уÑтановки, Ñм. [http://www.mediawiki.org/wiki/Manual:User_rights ÑоответÑтвующее руководÑтво].",
+Более Ñложные Ñхемы Ñ€Ð°Ð·Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð² можно наÑтроить поÑле уÑтановки, Ñм. [//www.mediawiki.org/wiki/Manual:User_rights ÑоответÑтвующее руководÑтво].",
'config-license' => 'ÐвторÑкие права и лицензии:',
'config-license-none' => 'Ðе указывать лицензию в колонтитуле внизу Ñтраницы',
- 'config-license-cc-by-sa' => 'Creative Commons Ð°Ñ‚Ñ€Ð¸Ð±ÑƒÑ†Ð¸Ñ â€” Ñ Ñохранением уÑловий',
+ 'config-license-cc-by-sa' => 'Creative Commons Attribution Share Alike',
+ 'config-license-cc-by' => 'Creative Commons Attribution',
'config-license-cc-by-nc-sa' => 'Creative Commons Attribution Non-Commercial Share Alike',
- 'config-license-cc-0' => 'Creative Commons Zero',
- 'config-license-gfdl-old' => 'GNU Free Documentation License 1.2',
- 'config-license-gfdl-current' => 'GNU Free Documentation License 1.3 или более поздней верÑии',
+ 'config-license-cc-0' => 'Creative Commons Zero (общеÑтвенное доÑтоÑние)',
+ 'config-license-gfdl' => 'GNU Free Documentation License 1.3 или более позднÑÑ',
'config-license-pd' => 'ОбщеÑтвенное доÑтоÑние',
'config-license-cc-choose' => 'Выберите одну из лицензий Creative Commons',
'config-license-help' => "Многие общедоÑтупные вики разрешают иÑпользовать Ñвои материалы на уÑловиÑÑ… [http://freedomdefined.org/Definition/Ru Ñвободных лицензий].
Это помогает Ñозданию чувÑтва общноÑти, Ñтимулирует долгоÑрочное учаÑтие.
-Ðо в Ñтом нет необходимоÑти Ð´Ð»Ñ Ñ‡Ð°Ñтных или корпоративных вики.
+Ðо в Ñтом нет необходимоÑти Ð´Ð»Ñ Ñ‡Ð°Ñтных или корпоративных вики.
-ЕÑли вы хотите иÑпользовать текÑÑ‚Ñ‹ из Википедии или хотите, что в Википедию можно было копировать текÑÑ‚Ñ‹ из вашей вики, вам Ñледует выбрать '''Creative Commons Attribution Share Alike'''.
+ЕÑли вы хотите иÑпользовать текÑÑ‚Ñ‹ из Википедии или хотите, что в Википедию можно было копировать текÑÑ‚Ñ‹ из вашей вики, вам Ñледует выбрать '''Creative Commons Attribution Share Alike'''.
-GNU Free Documentation License раньше была оÑновной лицензией Википедии.
-Она вÑе ещё иÑпользуетÑÑ, однако, она имеет некоторые оÑобенноÑти, оÑложнÑющие повторное иÑпользование и интерпретацию её материалов.",
+Ð’Ð¸ÐºÐ¸Ð¿ÐµÐ´Ð¸Ñ Ñ€Ð°Ð½ÐµÐµ иÑпользовала лицензию GNU Free Documentation License.
+GFDL может быть иÑпользована, но она Ñложна Ð´Ð»Ñ Ð¿Ð¾Ð½Ð¸Ð¼Ð°Ð½Ð¸Ñ Ð¸ оÑложнÑет повторное иÑпользование материалов.",
'config-email-settings' => 'ÐаÑтройки Ñлектронной почты',
'config-enable-email' => 'Включить иÑходÑщие e-mail',
'config-enable-email-help' => 'ЕÑли вы хотите, чтобы ÑÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð° работала, необходимо выполнить [http://www.php.net/manual/en/mail.configuration.php ÑоответÑтвующие наÑтройки PHP].
@@ -11205,13 +14229,13 @@ GNU Free Documentation License раньше была оÑновной лицен
Только прошедшие проверку подлинноÑти адреÑа Ñлектронной почты, могут получать Ñлектронные пиÑьма от других пользователей или изменÑÑ‚ÑŒ уведомлениÑ, отправлÑемые по Ñлектронной почте.
Включение Ñтой опции '''рекомендуетÑÑ''' Ð´Ð»Ñ Ð¾Ñ‚ÐºÑ€Ñ‹Ñ‚Ñ‹Ñ… вики в целÑÑ… преÑÐµÑ‡ÐµÐ½Ð¸Ñ Ð¿Ð¾Ñ‚ÐµÐ½Ñ†Ð¸Ð°Ð»ÑŒÐ½Ñ‹Ñ… злоупотреблений возможноÑÑ‚Ñми Ñлектронной почты.",
'config-email-sender' => 'Обратный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты:',
- 'config-email-sender-help' => 'Введите Ð°Ð´Ñ€ÐµÑ Ñлектронной почты Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² качеÑтве обратного адреÑа иÑходÑщей Ñлектронной почты.
+ 'config-email-sender-help' => 'Введите Ð°Ð´Ñ€ÐµÑ Ñлектронной почты Ð´Ð»Ñ Ð¸ÑÐ¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ð½Ð¸Ñ Ð² качеÑтве обратного адреÑа иÑходÑщей Ñлектронной почты.
Ðа него будут отправлÑÑ‚ÑŒÑÑ Ð¾Ñ‚ÐºÐ°Ð·Ñ‹.
Многие почтовые Ñерверы требуют, чтобы по крайней мере доменное Ð¸Ð¼Ñ Ð² нём было правильным.',
'config-upload-settings' => 'Загрузка изображений и файлов',
'config-upload-enable' => 'Разрешить загрузку файлов',
'config-upload-help' => 'Разрешение загрузки файлов, потенциально, может привеÑти к угрозе безопаÑноÑти Ñервера.
-Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации, прочтите в руководÑтве [http://www.mediawiki.org/wiki/Manual:Security раздел, поÑвÑщённый безопаÑноÑти].
+Ð”Ð»Ñ Ð¿Ð¾Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ Ð´Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ð¹ информации, прочтите в руководÑтве [//www.mediawiki.org/wiki/Manual:Security раздел, поÑвÑщённый безопаÑноÑти].
Чтобы разрешить загрузку файлов, необходимо изменить права на каталог <code>images</code>, в корневой директории MediaWiki так, чтобы веб-Ñервер мог запиÑывать в него файлы.
Затем включите Ñту опцию.',
@@ -11219,13 +14243,13 @@ GNU Free Documentation License раньше была оÑновной лицен
'config-upload-deleted-help' => 'Выберите каталог, в котором будут хранитьÑÑ Ð°Ñ€Ñ…Ð¸Ð²Ñ‹ удалённых файлов.
Ð’ идеальном Ñлучае, в Ñтот каталог не должно быть доÑтупа из Ñети Интернет.',
'config-logo' => 'URL логотипа:',
- 'config-logo-help' => 'Тема по умолчанию Ð´Ð»Ñ MediaWiki включает проÑтранÑтво Ð´Ð»Ñ Ð»Ð¾Ð³Ð¾Ñ‚Ð¸Ð¿Ð° размером 135x160 в левом верхнем углу.
-Загрузите изображение ÑоответÑтвующего размера, и введите его URL здеÑÑŒ.
+ 'config-logo-help' => 'Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð°Ñ Ñ‚ÐµÐ¼Ð° Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ MediaWiki Ñодержит над боковой панелью проÑтранÑтво Ð´Ð»Ñ Ð»Ð¾Ð³Ð¾Ñ‚Ð¸Ð¿Ð° размером 135x160 пикÑелей.
+Загрузите изображение ÑоответÑтвующего размера, и введите его URL здеÑÑŒ.
ЕÑли вам не нужен логотип, оÑтавьте Ñто поле пуÑтым.',
'config-instantcommons' => 'Включить Instant Commons',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons Instant Commons] — Ñто функциÑ, позволÑÑŽÑ‰Ð°Ñ Ð¸Ñпользовать изображениÑ, звуки и другие медиафайлы Ñ Ð’Ð¸ÐºÐ¸Ñклада ([http://commons.wikimedia.org/ Wikimedia Commons]).
-Ð”Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñтой функции MediaWiki необходим доÑтуп к Интернету.
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons Instant Commons] — Ñто функциÑ, позволÑÑŽÑ‰Ð°Ñ Ð¸Ñпользовать изображениÑ, звуки и другие медиафайлы Ñ Ð’Ð¸ÐºÐ¸Ñклада ([//commons.wikimedia.org/ Wikimedia Commons]).
+Ð”Ð»Ñ Ñ€Ð°Ð±Ð¾Ñ‚Ñ‹ Ñтой функции MediaWiki необходим доÑтуп к Интернету.
Дополнительную информацию об Instant Commons, в том чиÑле ÑƒÐºÐ°Ð·Ð°Ð½Ð¸Ñ Ð¾ том, как её наÑтроить Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… вики, отличных от ВикиÑклада, можно найти в [http://mediawiki.org/wiki/Manual:$wgForeignFileRepos руководÑтве].',
'config-cc-error' => 'Механизм выбора лицензии Creative Commons не вернул результата.
@@ -11234,13 +14258,13 @@ GNU Free Documentation License раньше была оÑновной лицен
'config-cc-not-chosen' => 'Выберите, какую лицензию Creative Commons Ð’Ñ‹ хотите иÑпользовать, и нажмите кнопку "Продолжить".',
'config-advanced-settings' => 'Дополнительные наÑтройки',
'config-cache-options' => 'Параметры кÑÑˆÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¾Ð±ÑŠÐµÐºÑ‚Ð¾Ð²:',
- 'config-cache-help' => 'КÑширование объектов иÑпользуетÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ ÑкороÑти MediaWiki путем кÑÑˆÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‡Ð°Ñто иÑпользуемых данных.
+ 'config-cache-help' => 'КÑширование объектов иÑпользуетÑÑ Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ ÑкороÑти MediaWiki путем кÑÑˆÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ‡Ð°Ñто иÑпользуемых данных.
Ð”Ð»Ñ Ñредних и больших Ñайтов кеширование наÑтоÑтельно рекомендуетÑÑ Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ‚ÑŒ, а Ð´Ð»Ñ Ð½ÐµÐ±Ð¾Ð»ÑŒÑˆÐ¸Ñ… Ñайтов кеширование может показать преимущеÑтво.',
'config-cache-none' => 'Без кÑÑˆÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ (никакой функционал не терÑетÑÑ, но крупные вики-Ñайты могут работать медленнее)',
'config-cache-accel' => 'PHP кÑширование объектов (APC, eAccelerator, XCache или WinCache)',
'config-cache-memcached' => 'ИÑпользовать Memcached (требует дополнительной наÑтройки)',
'config-memcached-servers' => 'Сервера Memcached:',
- 'config-memcached-help' => 'СпиÑок IP-адреÑов, иÑпользуемых Memcached.
+ 'config-memcached-help' => 'СпиÑок IP-адреÑов, иÑпользуемых Memcached.
ПеречиÑлите по одному адреÑу на Ñтроку Ñ ÑƒÐºÐ°Ð·Ð°Ð½Ð¸ÐµÐ¼ портов. Ðапример:
127.0.0.1:11211
192.168.1.25:1234',
@@ -11250,7 +14274,7 @@ GNU Free Documentation License раньше была оÑновной лицен
ЕÑли вы не знаете порт, по умолчанию иÑпользуетÑÑ 11211.',
'config-memcache-badport' => 'Ðомера портов Memcached должны лежать в пределах от $1 до $2.',
'config-extensions' => 'РаÑширениÑ',
- 'config-extensions-help' => 'РаÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ MediaWiki, перечиÑленные выше, были найдены в каталоге <code>./extensions</code>.
+ 'config-extensions-help' => 'РаÑÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ MediaWiki, перечиÑленные выше, были найдены в каталоге <code>./extensions</code>.
Они могут потребовать дополнительные наÑтройки, но их можно включить прÑмо ÑейчаÑ',
'config-install-alreadydone' => "'''Предупреждение:''' Ð’Ñ‹, кажетÑÑ, уже уÑтанавливали MediaWiki и пытаетеÑÑŒ произвеÑти повторную уÑтановку.
@@ -11261,6 +14285,7 @@ GNU Free Documentation License раньше была оÑновной лицен
'config-install-step-failed' => 'не удалоÑÑŒ',
'config-install-extensions' => 'Ð’ том чиÑле раÑширениÑ',
'config-install-database' => 'ÐаÑтройка базы данных',
+ 'config-install-schema' => 'Создание Ñхемы',
'config-install-pg-schema-not-exist' => 'Схемы PostgreSQL не ÑущеÑтвует',
'config-install-pg-schema-failed' => 'Ðе удалоÑÑŒ Ñоздать таблицы.
УбедитеÑÑŒ в том, что пользователь «$1» может пиÑать в Ñхему «$2».',
@@ -11268,10 +14293,17 @@ GNU Free Documentation License раньше была оÑновной лицен
'config-install-pg-plpgsql' => 'Проверка Ñзыка PL/pgSQL',
'config-pg-no-plpgsql' => 'Вам необходимо уÑтановить поддержку Ñзыка PL/pgSQL Ð´Ð»Ñ Ð±Ð°Ð·Ñ‹ данных $1',
'config-pg-no-create-privs' => 'Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ, ÑƒÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ñ ÑƒÑтановки, не обладает доÑтаточными привилегиÑми Ð´Ð»Ñ ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи.',
+ 'config-pg-not-in-role' => 'Ð£ÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ веб-Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑƒÐ¶Ðµ ÑущеÑтвует.
+Ð£ÐºÐ°Ð·Ð°Ð½Ð½Ð°Ñ Ð´Ð»Ñ ÑƒÑтановки ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ не ÑвлÑетÑÑ Ð·Ð°Ð¿Ð¸Ñью ÑуперпользователÑ, и не отноÑитÑÑ Ðº роли веб-пользователÑ, поÑтому не получаетÑÑ Ñоздать объекты, принадлежащие веб-пользователю.
+
+MediaWiki в наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ñ‚Ñ€ÐµÐ±ÑƒÐµÑ‚, чтобы владельцем таблиц был веб-пользователь. ПожалуйÑта, укажите другое Ð¸Ð¼Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð¾Ð¹ запиÑи Ð´Ð»Ñ Ð²ÐµÐ±, или нажмите кнопку «назад» и укажите Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñ Ð´Ð¾Ñтаточными Ð´Ð»Ñ ÑƒÑтановки правами.',
'config-install-user' => 'Создание базы данных пользователей',
'config-install-user-alreadyexists' => 'УчаÑтник «$1» уже ÑущеÑтвует',
'config-install-user-create-failed' => 'Ðе получилоÑÑŒ Ñоздать учаÑтника «$1»: $2',
'config-install-user-grant-failed' => 'Ошибка предоÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð² пользователю «$1»: $2',
+ 'config-install-user-missing' => 'Указанного Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Â«$1» не ÑущеÑтвует.',
+ 'config-install-user-missing-create' => 'Указанного Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Â«$1» не ÑущеÑтвует.
+ПожалуйÑта поÑтавьте ниже отметку «Создать учётную запиÑь», еÑли вы хотите Ñоздать его.',
'config-install-tables' => 'Создание таблиц',
'config-install-tables-exist' => "'''Предупреждение''': таблицы MediaWiki, возможно, уже ÑущеÑтвуют.
ПропуÑк повторного ÑозданиÑ.",
@@ -11279,12 +14311,13 @@ GNU Free Documentation License раньше была оÑновной лицен
'config-install-interwiki' => 'Заполнение таблицы интервики значениÑми по умолчанию',
'config-install-interwiki-list' => 'Ðе удалоÑÑŒ найти файл <code>interwiki.list</code>.',
'config-install-interwiki-exists' => "'''Предупреждение''': в интервики-таблице, кажетÑÑ, уже еÑÑ‚ÑŒ запиÑи.
-Создание Ñтандартного ÑпиÑка, пропущено.",
+Создание Ñтандартного ÑпиÑка пропущено.",
'config-install-stats' => 'СтатиÑтика инициализации',
- 'config-install-keys' => 'Создание Ñекретного ключа',
+ 'config-install-keys' => 'Создание Ñекретных ключей',
'config-insecure-keys' => "'''Предупреждение.''' {{PLURAL:$2|Ключ безопаÑноÑти $1, Ñозданный во Ð²Ñ€ÐµÐ¼Ñ ÑƒÑтановки, недоÑтаточно надёжен|Ключи безопаÑноÑти $1, Ñозданные во Ð²Ñ€ÐµÐ¼Ñ ÑƒÑтановки, недоÑтаточно надёжны}}. РаÑÑмотрите возможноÑÑ‚ÑŒ {{PLURAL:$2|его|их}} Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð²Ñ€ÑƒÑ‡Ð½ÑƒÑŽ.",
'config-install-sysop' => 'Создание учётной запиÑи админиÑтратора',
- 'config-install-subscribe-fail' => 'Ðе удаётÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑатьÑÑ Ð½Ð° mediawiki-announce',
+ 'config-install-subscribe-fail' => 'Ðе удаётÑÑ Ð¿Ð¾Ð´Ð¿Ð¸ÑатьÑÑ Ð½Ð° mediawiki-announce: $1',
+ 'config-install-subscribe-notpossible' => 'cURL не уÑтановлен и не доÑтупна Ð¾Ð¿Ñ†Ð¸Ñ allow_url_fopen.',
'config-install-mainpage' => 'Создание главной Ñтраницы Ñ Ñодержимым по умолчанию',
'config-install-extension-tables' => 'Создание таблиц Ð´Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡Ñ‘Ð½Ð½Ñ‹Ñ… раÑширений',
'config-install-mainpage-failed' => 'Ðе удаётÑÑ Ð²Ñтавить главную Ñтраницу: $1',
@@ -11305,6 +14338,143 @@ $3
По окончании дейÑтвий, опиÑанных выше, вы Ñможете '''[$2 войти в вашу вики]'''.",
'config-download-localsettings' => 'Загрузить LocalSettings.php',
'config-help' => 'Ñправка',
+ 'mainpagetext' => "'''Вики-движок «MediaWiki» уÑпешно уÑтановлен.'''",
+ 'mainpagedocfooter' => 'Информацию по работе Ñ Ñтой вики можно найти в [//meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 Ñправочном руководÑтве].
+
+== Ðекоторые полезные реÑурÑÑ‹ ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings СпиÑок возможных наÑтроек];
+* [//www.mediawiki.org/wiki/Manual:FAQ ЧаÑто задаваемые вопроÑÑ‹ и ответы по MediaWiki];
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce РаÑÑылка уведомлений о выходе новых верÑий MediaWiki].',
+);
+
+/** Rusyn (РуÑиньÑкый)
+ * @author Gazeb
+ */
+$messages['rue'] = array(
+ 'mainpagetext' => "'''MediaWiki была уÑпішно наіншталована.'''",
+ 'mainpagedocfooter' => '[//meta.wikimedia.org/wiki/Help:Contents МануÑл хоÑнователÑ] Вам порадить, Ñк хоÑновати MediaWiki.
+
+== Про початок ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings ÐаÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ ÐºÐ¾Ð½Ñ„Ñ–Ò‘ÑƒÑ€Ð°Ñ†Ñ–Ñ—]
+* [//www.mediawiki.org/wiki/Manual:FAQ ЧаÑÑ‚Ñ‹ вопроÑÑ‹ о MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce РозоÑÑ‹Ð»Ð°Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»Ñ—Ð½ÑŒ про новы верзії MediaWiki]',
+);
+
+/** Sanskrit (संसà¥à¤•à¥ƒà¤¤)
+ * @author Hemant wikikosh1
+ */
+$messages['sa'] = array(
+ 'mainpagetext' => 'मीडियाविकि तॠसफलतया अनà¥à¤¤à¤ƒà¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤à¤®à¤¸à¥à¤¤à¤¿',
+);
+
+/** Sakha (Саха тыла) */
+$messages['sah'] = array(
+ 'mainpagetext' => "'''«MediaWiki» Ñөпкө туруорулунна.'''",
+ 'mainpagedocfooter' => 'Биики программатын туһунан [//meta.wikimedia.org/wiki/Help:Contents Ñправочникка] көрүөххүн Ñөп.
+
+== Саҕаланыыта ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ ÑƒÐ»Ð°Ñ€Ñ‹Ñ‚Ñ‹Ñ‹Ñ‚Ñ‹Ð½ параметрдара]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki релизтарын почтовай иÑпииһÑгÑ]',
+);
+
+/** Sardinian (Sardu)
+ * @author Andria
+ */
+$messages['sc'] = array(
+ 'mainpagetext' => "'''MediaWiki est stadu installadu in modu currègidu.'''",
+);
+
+/** Sicilian (Sicilianu) */
+$messages['scn'] = array(
+ 'mainpagetext' => "'''Nstallazzioni di MediaWiki cumplitata currettamenti.'''",
+ 'mainpagedocfooter' => "Pi favuri taliari [//meta.wikimedia.org/wiki/Help:Contents Guida utenti] pi aiutu supra l'usu e la cunfigurazzioni di stu software wiki.
+
+== P'accuminzari ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Alencu di mpustazzioni di cunfigurazzioni]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list dî rilassi di MediaWiki]",
+);
+
+/** Scots (Scots) */
+$messages['sco'] = array(
+ 'mainpagetext' => "'''MediaWiki haes been installit wi speed.'''",
+ 'mainpagedocfooter' => "Aks the [//meta.wikimedia.org/wiki/Help:Contents Uiser's Manual] for speirins aboot using the wiki saftware.
+
+== Gettin startit ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settins leet]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki releese mailin leet]",
+);
+
+/** Sassaresu (Sassaresu) */
+$messages['sdc'] = array(
+ 'mainpagetext' => "'''Isthallazioni di MediaWiki accabadda currentementi.'''",
+ 'mainpagedocfooter' => "Cunsultha la [//meta.wikimedia.org/wiki/Aggiuddu:Summàriu Ghia utenti] pa maggiori infuimmazioni i l'usu di chisthu software wiki.
+
+== Pa ischuminzà ==
+Li sighenti cullegamenti so in linga ingrese:
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Impusthazioni di cunfigurazioni]
+* [//www.mediawiki.org/wiki/Manual:FAQ Prigonti friquenti i MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list annùnzii MediaWiki]",
+);
+
+/** Cmique Itom (Cmique Itom) */
+$messages['sei'] = array(
+ 'mainpagetext' => "'''MediaWiki coccebj installöx successua zo mii.'''",
+);
+
+/** Serbo-Croatian (Srpskohrvatski)
+ * @author OC Ripper
+ */
+$messages['sh'] = array(
+ 'mainpagetext' => "'''MediaWiki softver is uspješno instaliran.'''",
+ 'mainpagedocfooter' => 'Kontaktirajte [//meta.wikimedia.org/wiki/Help:Contents uputstva za korisnike] za informacije o upotrebi wiki programa.
+
+== PoÄetak ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista postavki]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki najÄešće postavljana pitanja]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista E-Mail adresa MediaWiki]',
+);
+
+/** Tachelhit (TaÅ¡lḥiyt/ⵜⴰⵛâµâµƒâµ‰âµœ)
+ * @author Dalinanir
+ */
+$messages['shi'] = array(
+ 'mainpagetext' => "'''MediaWiki tǧizn (tsrbk) bla tamukrist.'''",
+ 'mainpagedocfooter' => 'Ẓr taǧttnn [//meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] bac ad tawit inÉ£misn yaá¸n f manik sa tswwurt asɣẓan ad.
+
+== Izwir d MediaWiki ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Umuɣ n iɣwwarn n usgadda ]
+* [//www.mediawiki.org/wiki/Manual:FAQ/fr Isqqsitn f MidyWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce UmuÉ£ n imsgdaln f imbá¸itn n MidyaWiki]',
+);
+
+/** Sinhala (සිංහල) */
+$messages['si'] = array(
+ 'mainpagetext' => "'''මà·à¶°à·Šâ€à¶ºà·€à·’කි à·ƒà·à¶»à·Šà¶®à¶š ලෙස ස්ථà·à¶´à¶±à¶º කරන ලදි.'''",
+ 'mainpagedocfooter' => 'විකි මෘදුකà·à¶‚ග භà·à·€à·’ත෠කිරීම පිළිබඳ තොරතුරු සඳහ෠[//meta.wikimedia.org/wiki/Help:Contents පරිà·à·“ලකයන් සඳහ෠නියමුව] හදà·à¶»à¶±à·Šà¶±.
+
+== ඇරඹුම ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings වින්â€à¶ºà·à·ƒ පරිස්ථිතීන් ලà·à¶ºà·’ස්තුව]
+* [//www.mediawiki.org/wiki/Manual:FAQ මà·à¶°à·Šâ€à¶ºà·€à·’කි නිතර-අසන-පà·à¶±]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce මà·à¶°à·Šâ€à¶ºà·€à·’කි නිකුතුව තà·à¶´à·à¶½à·Š ලà·à¶ºà·’ස්තුව]',
+);
+
+/** Slovak (SlovenÄina) */
+$messages['sk'] = array(
+ 'mainpagetext' => "'''Softvér MediaWiki bol úspešne nainštalovaný.'''",
+ 'mainpagedocfooter' => 'Informácie ako používaÅ¥ wiki softvér nájdete v [//meta.wikimedia.org/wiki/Help:Contents Používateľskej príruÄke].
+
+== ZaÄíname ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Zoznam konfiguraÄných nastavení]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce mailing list nových verzií MediaWiki]',
);
/** Slovenian (SlovenÅ¡Äina)
@@ -11314,31 +14484,315 @@ $messages['sl'] = array(
'config-desc' => 'Namestitveni program za MediaWiki',
'config-title' => 'Namestitev MediaWiki $1',
'config-information' => 'Informacije',
+ 'config-localsettings-cli-upgrade' => 'Zaznana je bila datoteka LocalSettings.php.
+Za nadgradnjo te namestitve zaženite update.php',
+ 'config-localsettings-key' => 'Nadgraditveni kljuÄ:',
+ 'config-localsettings-badkey' => 'Naveden kljuÄ je napaÄen.',
+ 'config-upgrade-key-missing' => 'Zaznana je bila obstojeÄa namestitev MediaWiki.
+Za nadgradnjo te namestitve vstavite naslednjo vrstico na dno vaše LocalSettings.php:
+
+$1',
+ 'config-session-error' => 'Napaka pri zaÄenjanju seje: $1',
+ 'config-session-expired' => 'Kot kaže, so vaši podatki seje potekli.
+Seje so konfigurirane za dobo $1.
+To lahko poveÄate tako, da nastavite <code>session.gc_maxlifetime</code> v php.ini.
+Ponovno zaženite postopek namestitve.',
+ 'config-no-session' => 'Vaši podatki seje so bili izgubljeni!
+Preverite vaÅ¡ php.ini in se prepriÄajte, da je <code>session.save_path</code> nastavljena na ustrezno mapo.',
'config-your-language' => 'Vaš jezik:',
+ 'config-your-language-help' => 'Izberite jezik, ki bo uporabljen med postopkom namestitve.',
+ 'config-wiki-language' => 'Jezik wikija:',
+ 'config-wiki-language-help' => 'Izberite jezik, v katerem bo wiki veÄinoma pisan.',
'config-back' => '↠Nazaj',
'config-continue' => 'Nadaljuj →',
'config-page-language' => 'Jezik',
'config-page-welcome' => 'Dobrodošli na MediaWiki!',
+ 'config-page-dbconnect' => 'Vzpostavi povezavo z zbirko podatkov',
+ 'config-page-upgrade' => 'Nadgradi obstojeÄo namestitev',
+ 'config-page-dbsettings' => 'Nastavitve zbirke podatkov',
'config-page-name' => 'Ime',
'config-page-options' => 'Možnosti',
'config-page-install' => 'Namesti',
'config-page-complete' => 'KonÄano!',
+ 'config-page-restart' => 'Ponovno zaženi namestitev',
'config-page-readme' => 'Beri me',
+ 'config-page-releasenotes' => 'Opombe ob izidu',
'config-page-copying' => 'Kopiranje',
'config-page-upgradedoc' => 'Nadgrajevanje',
+ 'config-page-existingwiki' => 'ObstojeÄ wiki',
+ 'config-help-restart' => 'Želite poÄistiti vse shranjene podatke, ki ste jih vnesti, in ponovno zaÄeti s postopkom namestitve?',
+ 'config-restart' => 'Da, ponovno zaženi',
+ 'config-welcome' => '=== Pregledi okolja ===
+Izvedeni so osnovni pregledi, da vidimo, Äe je okolje primerno za namestitev MediaWiki.
+ÄŒe med namestitvijo potrebujete pomoÄ, posredujte tudi rezultate teh pregledov.',
+ 'config-sidebar' => '* [//www.mediawiki.org DomaÄa stran MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents Vodnik za uporabnike]
+* [//www.mediawiki.org/wiki/Manual:Contents Vodnik za administratorje]
+* [//www.mediawiki.org/wiki/Manual:FAQ Pogosto zastavljena vprašanja]
+----
+* <doclink href=Readme>Beri me</doclink>
+* <doclink href=ReleaseNotes>Opombe ob izidu</doclink>
+* <doclink href=Copying>Kopiranje</doclink>
+* <doclink href=UpgradeDoc>Nadgrajevanje</doclink>',
+ 'config-env-good' => 'Okolje je pregledano.
+Lahko namestite MediaWiki.',
+ 'config-env-bad' => 'Okolje je pregledano.
+Ne morete namestiti MediaWiki.',
+ 'config-env-php' => 'NameÅ¡Äen je PHP $1.',
+ 'config-env-php-toolow' => 'NameÅ¡Äen je PHP $1.
+Vendar pa MediaWiki zahteva PHP $2 ali višji.',
+ 'config-unicode-using-utf8' => 'Uporaba utf8_normalize.so Briona Vibberja za normalizacijo unikoda.',
+ 'config-unicode-using-intl' => 'Uporaba [http://pecl.php.net/intl razširitve PECL intl] za normalizacijo unikoda.',
+ 'config-memory-raised' => 'PHP-jev <code>memory_limit</code> je $1, dvignjen na $2.',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] je nameÅ¡Äen',
+ 'config-apc' => '[http://www.php.net/apc APC] je nameÅ¡Äen',
+ 'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] je nameÅ¡Äen',
+ 'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] je nameÅ¡Äen',
+ 'config-diff3-bad' => 'GNU diff3 ni bilo mogoÄe najti.',
+ 'config-db-type' => 'Vrsta zbirke podatkov:',
+ 'config-db-host' => 'Gostitelj zbirke podatkov:',
+ 'config-db-host-oracle' => 'TNS zbirke podatkov:',
+ 'config-db-wiki-settings' => 'Prepoznaj ta wiki:',
'config-db-name' => 'Ime zbirke podatkov:',
+ 'config-db-name-oracle' => 'Shema zbirke podatkov:',
'config-db-username' => 'Uporabniško ime zbirke podatkov:',
'config-db-password' => 'Geslo zbirke podatkov:',
+ 'config-db-prefix' => 'Predpona tabel zbirke podatkov:',
+ 'config-db-charset' => 'Nabor znakov zbirke podatkov',
+ 'config-charset-mysql5-binary' => 'MySQL 4.1/5.0 dvojiško',
+ 'config-charset-mysql5' => 'MySQL 4.1/5.0 UTF-8',
+ 'config-charset-mysql4' => 'MySQL 4.0 nazaj združljiv UTF-8',
+ 'config-mysql-old' => 'Potreben je MySQL $1 ali novejši; vi imate $2.',
+ 'config-db-port' => 'Vrata zbirke podatkov:',
+ 'config-db-schema' => 'Shema MediaWiki',
+ 'config-db-schema-help' => 'Ta shema je po navadi v redu.
+Spremenite jo samo, Äe veste, da jo morate.',
+ 'config-sqlite-dir' => 'Mapa podatkov SQLite:',
+ 'config-type-ibm_db2' => 'IBM DB2',
+ 'config-support-info' => 'MediaWiki podpira naslednje sisteme zbirk podatkov:
+
+$1
+
+ÄŒe zgoraj ne vidite navedenega sistema zbirk podatkov, ki ga poskuÅ¡ate uporabiti, sledite navodilom na spodnji povezavi, da omogoÄite podporo.',
+ 'config-header-mysql' => 'Nastavitve MySQL',
+ 'config-header-postgres' => 'Nastavitve PostgreSQL',
+ 'config-header-sqlite' => 'Nastavitve SQLite',
+ 'config-header-oracle' => 'Nastavitve Oracle',
+ 'config-header-ibm_db2' => 'Nastavitve IBM DB2',
+ 'config-invalid-db-type' => 'Neveljavna vrsta zbirke podatkov',
+ 'config-missing-db-name' => 'Vnesti morate vrednost za »Ime zbirke podatkov«',
+ 'config-missing-db-host' => 'Vnesti morate vrednost za »Gostitelj zbirke podatkov«',
+ 'config-missing-db-server-oracle' => 'Vnesti morate vrednost za »TNS zbirke podatkov«',
+ 'config-invalid-db-server-oracle' => 'Neveljaven TNS zbirke podatkov »$1«.
+Uporabljajte samo Ärke ASCII (a-z, A-Z), Å¡tevilke (0-9), podÄrtaje (_) in pike (.).',
+ 'config-invalid-db-name' => 'Neveljavno ime zbirke podatkov »$1«.
+Uporabljajte samo Ärke ASCII (a-z, A-Z), Å¡tevilke (0-9), podÄrtaje (_) in vezaje (-).',
+ 'config-invalid-db-prefix' => 'Neveljavna predpona zbirke podatkov »$1«.
+Uporabljajte samo Ärke ASCII (a-z, A-Z), Å¡tevilke (0-9), podÄrtaje (_) in vezaje (-).',
+ 'config-connection-error' => '$1.
+
+Preverite gostitelja, uporabniško ime in geslo spodaj ter poskusite znova.',
+ 'config-postgres-old' => 'Potreben je PostgreSQL $1 ali novejši; vi imate $2.',
+ 'config-sqlite-connection-error' => '$1.
+
+Preverite mapo podatkov in ime zbirke podatkov spodaj ter poskusite znova.',
+ 'config-sqlite-readonly' => 'Datoteka <code>$1</code> ni zapisljiva.',
+ 'config-sqlite-cant-create-db' => 'Ne morem ustvariti datoteke zbirke podatkov <code>$1</code>.',
+ 'config-upgrade-done-no-regenerate' => 'Nadgradnja je konÄana.
+
+Sedaj lahko [$1 zaÄnete uporabljati vaÅ¡ wiki].',
+ 'config-regenerate' => 'Ponovno ustvari LocalSettings.php →',
+ 'config-show-table-status' => 'Poizvedba SHOW TABLE STATUS ni uspela!',
+ 'config-unknown-collation' => "'''Opozorilo:''' Zbirke podatkov uporablja neprepoznano razvrÅ¡Äanje znakov.",
+ 'config-db-web-account' => 'RaÄun zbirke podatkov za spletni dostop',
+ 'config-db-web-account-same' => 'Uporabi enak raÄun kot za namestitev',
+ 'config-db-web-create' => 'Ustvari raÄun, Äe že ne obstaja',
+ 'config-mysql-engine' => 'Pogon skladiÅ¡Äenja:',
+ 'config-mysql-innodb' => 'InnoDB',
+ 'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-charset' => 'Nabor znakov zbirke podatkov:',
+ 'config-mysql-binary' => 'Dvojiško',
+ 'config-mysql-utf8' => 'UTF-8',
+ 'config-site-name' => 'Ime wikija:',
+ 'config-site-name-help' => 'To bo prikazano v naslovni vrstici brskalnika in na drugih razliÄnih mestih.',
+ 'config-site-name-blank' => 'Vnesite ime strani.',
+ 'config-project-namespace' => 'Imenski prostor projekta:',
+ 'config-ns-generic' => 'Projekt',
+ 'config-ns-site-name' => 'Enako kot ime wikija: $1',
+ 'config-ns-other' => 'Drugo (navedite)',
+ 'config-ns-other-default' => 'MojWiki',
+ 'config-ns-invalid' => 'Naveden imenski prostor »<nowiki>$1</nowiki>« ni veljaven.
+DoloÄite drug imenski prostor projekta.',
+ 'config-ns-conflict' => 'Naveden imenski prostor »<nowiki>$1</nowiki>« je v sporu s privzetim imenskim prostorom MediaWiki.
+DoloÄite drug imenski prostor projekta.',
+ 'config-admin-box' => 'Administratorski raÄun',
+ 'config-admin-name' => 'Vaše ime:',
'config-admin-password' => 'Geslo:',
+ 'config-admin-password-confirm' => 'Geslo, ponovno:',
+ 'config-admin-help' => 'Tukaj vnesite želeno uporabniško ime, na primer »Janez Blog«.
+To je ime, ki ga boste uporabljali za prijavo v wiki.',
+ 'config-admin-name-blank' => 'Vnesite uporabniško ime administratorja.',
+ 'config-admin-name-invalid' => 'Navedeno uporabniško ime »<nowiki>$1</nowiki>« ni veljavno.
+DoloÄite drugo uporabniÅ¡ko ime.',
+ 'config-admin-password-blank' => 'Vnesite geslo za administratorski raÄun.',
+ 'config-admin-password-same' => 'Geslo ne sme biti enako kot uporabniško ime.',
+ 'config-admin-password-mismatch' => 'Vneseni gesli se ne ujemata.',
+ 'config-admin-email' => 'E-poštni naslov:',
+ 'config-admin-error-user' => 'Med ustvarjanjem administratorja »<nowiki>$1</nowiki>« je prišlo do notranje napake.',
+ 'config-admin-error-password' => 'Med nastavljanjem gesla za administratorja »<nowiki>$1</nowiki>« je prišlo do notranje napake: <pre>$2</pre>',
+ 'config-admin-error-bademail' => 'Vnesli ste neveljaven e-poštni naslov.',
+ 'config-subscribe' => 'NaroÄite se na [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce poÅ¡tni seznam obvestil o izdajah].',
+ 'config-almost-done' => 'Skoraj ste že konÄali!
+Sedaj lahko preskoÄite preostalo konfiguriranje in zdaj namestite wiki.',
+ 'config-optional-continue' => 'Zastavi mi veÄ vpraÅ¡anj.',
+ 'config-optional-skip' => 'Se že dolgoÄasim; samo namesti wiki.',
+ 'config-profile' => 'Profil uporabniških pravic:',
+ 'config-profile-wiki' => 'KlasiÄen wiki',
+ 'config-profile-no-anon' => 'Zahtevano je ustvarjanje raÄuna',
+ 'config-profile-fishbowl' => 'Samo pooblaÅ¡Äeni urejevalci',
+ 'config-profile-private' => 'Zasebni wiki',
+ 'config-license' => 'Avtorske pravice in dovoljenje:',
+ 'config-license-none' => 'Brez noge dovoljenja',
+ 'config-license-cc-by-sa' => 'Creative Commons Priznanje avtorstva-Deljenje pod enakimi pogoji',
+ 'config-license-cc-by' => 'Creative Commons Priznanje avtorstva',
+ 'config-license-cc-by-nc-sa' => 'Creative Commons Priznanje avtorstva-Nekomercialno-Deljenje pod enakimi pogoji',
+ 'config-license-cc-0' => 'Creative Commons Zero (javna last)',
+ 'config-license-pd' => 'Javna last',
+ 'config-license-cc-choose' => 'Izberite dovoljenje Creative Commons po meri',
+ 'config-email-settings' => 'Nastavitve e-pošte',
+ 'config-enable-email' => 'OmogoÄi odhodno e-poÅ¡to',
+ 'config-email-user' => 'OmogoÄi e-poÅ¡to med uporabniki',
+ 'config-email-auth' => 'OmogoÄi overitev preko e-poÅ¡te',
+ 'config-email-sender' => 'E-poštni naslov za vrnjeno pošto:',
+ 'config-upload-settings' => 'Nalaganje slike in datotek',
+ 'config-upload-enable' => 'OmogoÄi nalaganje datotek',
+ 'config-upload-deleted' => 'Mapa za izbrisane datoteke:',
+ 'config-upload-deleted-help' => 'Izberite mapo za arhiviranje izbrisanih datotek.
+Najbolje je, da mapa ni dostopna preko spleta.',
+ 'config-logo' => 'URL logotipa:',
+ 'config-cc-error' => 'Izbirnik dovoljenja Creative Commons ni vrnil nobenih rezultatov.
+Vnesite ime dovoljenja roÄno.',
+ 'config-cc-again' => 'Izberi ponovno ...',
+ 'config-cc-not-chosen' => 'Izberite dovoljenje Creative Commons, ki ga želite dodati, in kliknite »proceed«.',
+ 'config-advanced-settings' => 'Napredna konfiguracija',
+ 'config-cache-accel' => 'Predpomnjenje predmetov PHP (APC, eAccelerator, XCache ali WinCache)',
+ 'config-cache-memcached' => 'Uporabi Memcached (zahteva dodatno namestitev in konfiguracijo)',
+ 'config-memcached-servers' => 'Strežniki Memcached:',
+ 'config-memcache-badip' => 'Vnesli ste neveljaven IP-naslov za Memcached: $1',
+ 'config-extensions' => 'Razširitve',
+ 'config-install-step-done' => 'konÄano',
+ 'config-install-step-failed' => 'spodletelo',
+ 'config-install-database' => 'Vzpostavljanje zbirke podatkov',
+ 'config-install-pg-schema-not-exist' => 'Shema PostgreSQL ne obstaja.',
+ 'config-install-user-alreadyexists' => 'Uporabnik »$1« že obstaja',
+ 'config-install-tables' => 'Ustvarjanje tabel',
+ 'config-download-localsettings' => 'Prenesi LocalSettings.php',
+ 'config-help' => 'pomoÄ',
+ 'mainpagetext' => "'''Programje MediaWiki je bilo uspeÅ¡no nameÅ¡Äeno.'''",
+ 'mainpagedocfooter' => 'Za uporabo in pomoÄ pri nastavitvi, prosimo, preglejte [//meta.wikimedia.org/wiki/MediaWiki_localisation dokumentacijo za prilagajanje vmesnika]
+in [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide UporabniÅ¡ki priroÄnik].',
);
-/** Serbian Cyrillic ekavian (‪СрпÑки (ћирилица)‬) */
+/** Lower Silesian (Schläsch)
+ * @author Äberlausitzer
+ */
+$messages['sli'] = array(
+ 'mainpagetext' => "'''MediaWiki wourde erfolgreich installiert.'''",
+ 'mainpagedocfooter' => 'Hilfe zur Benutzung und Konfiguration der Wiki-Software fendest du eim [//meta.wikimedia.org/wiki/Help:Contents Benutzerhandbichl].
+
+== Stoarthilfa ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Liste der Konfigurationsvariablen]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
+);
+
+/** Somali (Soomaaliga)
+ * @author Maax
+ */
+$messages['so'] = array(
+ 'mainpagetext' => "'''MediaWiki Si fiican oo kuugu install gareeyay.'''",
+ 'mainpagedocfooter' => "Meeshaan ka akhriso sidii aad u isticmaali leheed brogramka wiki [//meta.wikimedia.org/wiki/Help:Contents User's Guide] .
+== Bilaaw ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Albanian (Shqip) */
+$messages['sq'] = array(
+ 'mainpagetext' => "'''MediaWiki software u instalua me sukses.'''",
+ 'mainpagedocfooter' => 'Për më shumë informata rreth përdorimit të softwerit wiki , ju lutem shikoni [//meta.wikimedia.org/wiki/Help:Contents dokumentacionin përkatës].
+
+== Sa për fillim==
+* [//www.mediawiki.org/wiki/Help:Configuration_settings Parazgjedhjet e MediaWiki-t]
+* [//www.mediawiki.org/wiki/Help:FAQ Pyetjet e shpeshta rreth MediaWiki-t]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Njoftime rreth MediaWiki-t]',
+);
+
+/** Serbian (Cyrillic script) (‪СрпÑки (ћирилица)‬)
+ * @author Rancher
+ */
$messages['sr-ec'] = array(
'config-continue' => 'ÐаÑтави →',
'config-page-language' => 'Језик',
+ 'config-type-mysql' => 'MySQL',
+ 'config-type-postgres' => 'PostgreSQL',
+ 'config-type-sqlite' => 'SQLite',
+ 'config-type-oracle' => 'Oracle',
+ 'mainpagetext' => "'''Медијавики је уÑпешно инÑталиран.'''",
+ 'mainpagedocfooter' => 'Погледајте [//meta.wikimedia.org/wiki/Help:Contents кориÑнички водич] за коришћење програма.
+
+== Увод ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Помоћ у вези Ñа подешавањима]
+* [//www.mediawiki.org/wiki/Manual:FAQ ЧеÑто поÑтављена питања]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ДопиÑна лиÑта о издањима Медијавикија]',
+);
+
+/** Serbian (Latin script) (‪Srpski (latinica)‬) */
+$messages['sr-el'] = array(
+ 'mainpagetext' => "'''MedijaViki je uspešno instaliran.'''",
+ 'mainpagedocfooter' => 'Molimo vidite [//meta.wikimedia.org/wiki/Help:Contents korisniÄki vodiÄ] za informacije o upotrebi viki softvera.
+
+== Za poÄetak ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Pomoć u vezi sa podešavanjima]
+* [//www.mediawiki.org/wiki/Manual:FAQ NajÄešće postavljena pitanja]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mejling lista o izdanjima MedijaVikija]',
+);
+
+/** Sranan Tongo (Sranantongo) */
+$messages['srn'] = array(
+ 'mainpagetext' => "'''MediaWiki seti kon bun.'''",
+ 'mainpagedocfooter' => 'Luku na ini a [//meta.wikimedia.org/wiki/Help:Yepi yepibuku] fu si fa fu kebrouki a wikisoftware.
+
+== Moro yepi ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Den seti]
+* [//www.mediawiki.org/wiki/Manual:FAQ Sani di ben aksi furu (FAQ)]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Boskopu grupu gi nyun meki]',
+);
+
+/** Swati (SiSwati) */
+$messages['ss'] = array(
+ 'mainpagetext' => "'''i-MediaWiki seyifakeke ngalokuphelele.'''",
+);
+
+/** Seeltersk (Seeltersk)
+ * @author Maartenvdbent
+ */
+$messages['stq'] = array(
+ 'mainpagetext' => "'''Ju MediaWiki Software wuude mäd Ärfoulch installierd.'''",
+ 'mainpagedocfooter' => 'Sjuch ju [//meta.wikimedia.org/wiki/MediaWiki_localization Dokumentation tou de Anpaasenge fon dän Benutseruurfläche] un dät [//meta.wikimedia.org/wiki/Help:Contents Benutserhondbouk] foar Hälpe tou ju Benutsenge un Konfiguration.',
+);
+
+/** Sundanese (Basa Sunda) */
+$messages['su'] = array(
+ 'mainpagetext' => "'''''Software'' MediaWiki geus diinstal.'''",
+ 'mainpagedocfooter' => "Mangga tingal ''[//meta.wikimedia.org/wiki/MediaWiki_localisation documentation on customizing the interface]'' jeung [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Tungtunan Pamaké] pikeun pitulung maké jeung konfigurasi.",
);
/** Swedish (Svenska)
+ * @author Skalman
* @author WikiPhoenix
*/
$messages['sv'] = array(
@@ -11368,12 +14822,13 @@ $messages['sv'] = array(
'config-page-releasenotes' => 'Utgivningsanteckningar',
'config-page-copying' => 'Kopiering',
'config-page-upgradedoc' => 'Uppgradering',
+ 'config-page-existingwiki' => 'Befintlig wiki',
'config-help-restart' => 'Vill du rensa all sparad data som du har skrivit in och starta om installationen?',
'config-restart' => 'Ja, starta om',
- 'config-sidebar' => '* [http://www.mediawiki.org MediaWikis hemsida]
-* [http://www.mediawiki.org/wiki/Help:Contents Användarguide]
-* [http://www.mediawiki.org/wiki/Manual:Contents Administratörguide]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Frågor och svar]
+ 'config-sidebar' => '* [//www.mediawiki.org MediaWikis hemsida]
+* [//www.mediawiki.org/wiki/Help:Contents Användarguide]
+* [//www.mediawiki.org/wiki/Manual:Contents Administratörguide]
+* [//www.mediawiki.org/wiki/Manual:FAQ Frågor och svar]
----
* <doclink href=Readme>Läs mig</doclink>
* <doclink href=ReleaseNotes>Utgivningsanteckningar</doclink>
@@ -11386,6 +14841,14 @@ Du kan inte installera MediaWiki.',
'config-env-php' => 'PHP $1 är installerad.',
'config-env-php-toolow' => 'PHP $1 är installerad.
MediaWiki kräver PHP $2 eller högre.',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] är installerad',
+ 'config-apc' => '[http://www.php.net/apc APC] är installerad',
+ 'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] är installerad',
+ 'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] är installerad',
+ 'config-db-wiki-settings' => 'Identifiera denna wiki',
+ 'config-db-name' => 'Databasnamn:',
+ 'config-db-username' => 'Databas-användarnamn:',
+ 'config-db-password' => 'Databas-lösenord:',
'config-header-mysql' => 'MySQL-inställningar',
'config-header-postgres' => 'PostgreSQL-inställningar',
'config-header-sqlite' => 'SQLite-inställningar',
@@ -11402,6 +14865,40 @@ Använd bara ASCII-bokstäver (a-z, A-Z), siffror (0-9), understreck (_) och bin
Kontrollera värden, användarnamnet och lösenordet nedan och försök igen',
'config-invalid-schema' => '"$1" är ett ogiltigt schema för MediaWiki.
Använd bara ASCII-bokstäver (a-z, A-Z), siffror (0-9), understreck (_) och bindestreck (-).',
+ 'mainpagetext' => "'''MediaWiki har installerats utan problem.'''",
+ 'mainpagedocfooter' => 'Information om hur wiki-programvaran används finns i [//meta.wikimedia.org/wiki/Help:Contents användarguiden].
+
+== Att komma igång ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista över konfigurationsinställningar]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mail list]',
+);
+
+/** Swahili (Kiswahili)
+ * @author Lloffiwr
+ */
+$messages['sw'] = array(
+ 'mainpagetext' => "'''MediaWiki imefanikiwa kuingizwa.'''",
+ 'mainpagedocfooter' => 'Shauriana na [//meta.wikimedia.org/wiki/Help:Contents Mwongozo wa Mtumiaji] kwa habari juu ya utumiaji wa bidhaa pepe ya wiki.
+
+== Msaada wa kianzio ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Orodha ya mipangilio ya msingi]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ ya MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Orodha ya utoaji wa habari za MediaWiki]',
+);
+
+/** Silesian (Ślůnski)
+ * @author Djpalar
+ */
+$messages['szl'] = array(
+ 'mainpagetext' => "'''Sztalowańy MediaWiki śe udoło.'''",
+ 'mainpagedocfooter' => 'Uobezdrzij [//meta.wikimedia.org/wiki/Help:Contents przewodńik sprowjacza], kaj sům informacyje uo dźołańu uoprogramowańo MediaWiki.
+
+== Na sztart ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lista sztalowań konfiguracyje]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Komuńikaty uo nowych wersyjach MediaWiki]',
);
/** Tamil (தமிழà¯)
@@ -11415,6 +14912,26 @@ $messages['ta'] = array(
'config-page-language' => 'மொழி',
'config-page-name' => 'பெயரà¯',
'config-page-options' => 'விரà¯à®ªà¯à®ªà®¤à¯à®¤à¯‡à®°à¯à®µà¯à®•à®³à¯',
+ 'mainpagetext' => "'''விகà¯à®•à®¿ மெனà¯à®ªà¯Šà®°à¯à®³à¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• உளà¯à®³à®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.'''",
+ 'mainpagedocfooter' => 'விகà¯à®•à®¿ மெனà¯à®ªà¯Šà®°à¯à®³à¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à¯ தொடரà¯à®ªà®¾à®• [//meta.wikimedia.org/wiki/Help:Contents பயனர௠வழிகாடà¯à®Ÿà®¿à®¯à¯ˆà®ªà¯] பாரà¯à®•à¯à®•.
+
+== தொடகà¯à®•à®ªà¯à®ªà®Ÿà®¿à®•à®³à¯ ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings அமைபà¯à®ªà¯à®•à¯à®•à®³à¯ˆ மாறà¯à®±à®®à¯ செயà¯à®¤à®²à¯]
+* [//www.mediawiki.org/wiki/Manual:FAQ மிடியாவிகà¯à®•à®¿ பொதà¯à®µà®¾à®© கேளà¯à®µà®¿à®•à®³à¯]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce மீடியாவிகà¯à®•à®¿ வெளியீட௠மினà¯à®©à®žà¯à®šà®²à¯ படà¯à®Ÿà®¿à®¯à®²à¯]',
+);
+
+/** Tulu (ತà³à²³à³) */
+$messages['tcy'] = array(
+ 'mainpagetext' => "'''ಮೀಡಿಯವಿಕಿ ಯಶಸà³à²µà²¿à²¯à²¾à²¦à³ ಇನà³â€™à²¸à³à²Ÿà²¾à²²à³ ಆಂಡà³.'''",
+ 'mainpagedocfooter' => 'ವಿಕಿ ತಂತà³à²°à²¾à²‚ಶನೠಉಪಗೋಗ ಮನà³à²ªà³à²¨ ಬಗà³à²—ೆ ಮಾಹಿತಿಗೠ[//meta.wikimedia.org/wiki/Help:Contents ಸದಸà³à²¯à³†à²°à³à²¨ ನಿರà³à²¦à³‡à²¶à²¨ ಪà³à²Ÿ] ತೂಲೆ.
+
+== ಎಂಚ ಶà³à²°à³ ಮಲà³à²ªà³à²¨à²¿ ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ ಮೀಡಿಯವಿಕಿ FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
);
/** Telugu (తెలà±à°—à±)
@@ -11458,6 +14975,7 @@ $messages['te'] = array(
'config-admin-password' => 'సంకేతపదం:',
'config-admin-password-confirm' => 'సంకేతపదం మళà±à°³à±€:',
'config-admin-email' => 'à°ˆ-మెయిలౠచిరà±à°¨à°¾à°®à°¾:',
+ 'config-optional-continue' => 'ననà±à°¨à± మరినà±à°¨à°¿ à°ªà±à°°à°¶à±à°¨à°²à± à°…à°¡à±à°—à±.',
'config-profile-wiki' => 'సంపà±à°°à°¦à°¾à°¯ వికీ',
'config-profile-no-anon' => 'ఖాతా సృషà±à°Ÿà°¿à°‚పౠతపà±à°ªà°¨à°¿à°¸à°°à°¿',
'config-profile-private' => 'అంతరంగిక వికీ',
@@ -11467,6 +14985,76 @@ $messages['te'] = array(
'config-upload-deleted' => 'తొలగించిన దసà±à°¤à±à°°à°¾à°² కొరకౠసంచయం:',
'config-install-step-done' => 'పూరà±à°¤à°¯à°¿à°‚ది',
'config-install-step-failed' => 'విఫలమైంది',
+ 'config-help' => 'సహాయం',
+ 'mainpagetext' => "'''మీడియా వికీని విజయవంతంగా à°ªà±à°°à°¤à°¿à°·à±à°Ÿà°¿à°‚చాం.'''",
+ 'mainpagedocfooter' => 'వికీ సాఫà±à°Ÿà±à°µà±‡à°°à±à°¨à± వాడటనికి కావలిసిన సమాచారం కోసం [//meta.wikimedia.org/wiki/Help:Contents వాడà±à°•à°°à±à°² గైడà±]నౠసందరà±à°¶à°¿à°‚à°šà°‚à°¡à°¿.
+
+== మొదలౠపెటà±à°Ÿà°‚à°¡à°¿ ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings మీడియావికీ పనితీరà±, అమరిక మారà±à°šà±à°•à±à°¨à±‡à°‚à°¦à±à°•à± వీలà±à°•à°²à±à°ªà°¿à°‚చే à°šà°¿à°¹à±à°¨à°¾à°² జాబితా]
+* [//www.mediawiki.org/wiki/Manual:FAQ మీడియావికీపై తరà±à°šà±à°—à°¾ అడిగే à°ªà±à°°à°¶à±à°¨à°²à±]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce మీడియావికీ సాఫà±à°Ÿà±à°µà±‡à°°à± కొతà±à°¤ వెరà±à°·à°¨à± విడà±à°¦à°²à°² à°—à±à°°à°¿à°‚à°šà°¿ తెలిపే మెయిలింగౠలిసà±à°Ÿà±]',
+);
+
+/** Tetum (Tetun)
+ * @author MF-Warburg
+ */
+$messages['tet'] = array(
+ 'config-page-language' => 'Lian',
+ 'config-page-name' => 'Naran',
+);
+
+/** Tajik (Cyrillic script) (Тоҷикӣ) */
+$messages['tg-cyrl'] = array(
+ 'mainpagetext' => "'''Ðармафзори МедиаВики бо муваффақиÑÑ‚ наÑб шуд.'''",
+ 'mainpagedocfooter' => 'Ðз [//meta.wikimedia.org/wiki/Help:Contents Роҳнамои Корбарон] барои иÑтифодаи нармафзори вики кӯмак бигиред.
+
+== Оғоз ба кор ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings ФеҳриÑти танзимоти пайгирбандӣ]
+* [//www.mediawiki.org/wiki/Manual:FAQ ПурÑишҳои МедиаВики]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ФеҳриÑти ройномаҳои нуÑхаҳои МедиаВики]',
+);
+
+/** Tajik (Latin script) (tojikī)
+ * @author Liangent
+ */
+$messages['tg-latn'] = array(
+ 'mainpagetext' => "'''Narmafzori MediaViki bo muvaffaqijat nasb ÅŸud.'''",
+ 'mainpagedocfooter' => 'Az [//meta.wikimedia.org/wiki/Help:Contents Rohnamoi Korbaron] baroi istifodai narmafzori viki kūmak bigired.
+
+== OÆ£oz ba kor ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Fehristi tanzimoti pajgirbandī]
+* [//www.mediawiki.org/wiki/Manual:FAQ PursiÅŸhoi MediaViki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Fehristi rojnomahoi nusxahoi MediaViki]',
+);
+
+/** Thai (ไทย)
+ * @author Korrawit
+ */
+$messages['th'] = array(
+ 'mainpagetext' => "'''ติดตั้งซอฟต์à¹à¸§à¸£à¹Œà¸¡à¸µà¹€à¸”ียวิà¸à¸´à¹€à¸£à¸µà¸¢à¸šà¸£à¹‰à¸­à¸¢'''",
+ 'mainpagedocfooter' => 'ศึà¸à¸©à¸²[//meta.wikimedia.org/wiki/Help:Contents คู่มือà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™] สำหรับเริ่มต้นใช้งานซอฟต์à¹à¸§à¸£à¹Œà¸§à¸´à¸à¸´
+
+== เริ่มต้น ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings รายà¸à¸²à¸£à¸à¸²à¸£à¸›à¸£à¸±à¸šà¹à¸•à¹ˆà¸‡à¸£à¸°à¸šà¸š] (ภาษาอังà¸à¸¤à¸©)
+* [//www.mediawiki.org/wiki/Manual:FAQ คำถามที่ถามบ่อยในมีเดียวิà¸à¸´] (ภาษาอังà¸à¸¤à¸©)
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce เมลลิงลิสต์ของมีเดียวิà¸à¸´]',
+);
+
+/** Turkmen (Türkmençe)
+ * @author Hanberke
+ */
+$messages['tk'] = array(
+ 'mainpagetext' => "'''MediaWiki ÅŸowlulyk bilen guruldy.'''",
+ 'mainpagedocfooter' => 'Wiki programmasynyň ulanylyşy hakynda maglumat almak üçin [//meta.wikimedia.org/wiki/Help:Contents ulanyjy gollanmasyna] serediň.
+
+== Öwrenjeler ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Konfigurasiýa sazlamalary]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki SSS]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-poçta sanawy]',
);
/** Tagalog (Tagalog)
@@ -11477,8 +15065,17 @@ $messages['tl'] = array(
'config-desc' => 'Ang instalador para sa MediaWiki',
'config-title' => 'Instalasyong $1 ng MediaWiki',
'config-information' => 'Kabatiran',
+ 'config-localsettings-cli-upgrade' => 'Napansin ang isang talaksan ng LocalSettings.php.
+Upang isapanahon ang pagtatalagang ito, mangyaring patakbuhin sa halip ang update.php',
'config-localsettings-key' => 'Susi ng pagsasapanahon:',
'config-localsettings-badkey' => 'Hindi tama ang susing ibinigay mo.',
+ 'config-upgrade-key-missing' => 'Napansin ang isang umiiral na pagtatalaga ng MediaWiki.
+Upang isapanahon ang katalagahang ito, mangyaring ilagay ang sumusunod na guhit sa ilalim ng iyong LocalSettings.php:
+
+$1',
+ 'config-localsettings-incomplete' => 'Lumilitaw na hindi pa buo ang umiiral na LocalSettings.php.
+Ang pabagu-bagong $1 ay hindi nakatakda.
+Mangyaring baguhin ang LocalSettings.php upang ang maitakda ang pagpapabagu-bagong ito, at pindutin ang "Magpatuloy".',
'config-session-error' => 'Kamalian sa pagsisimula ng sesyon: $1',
'config-no-session' => 'Nawala ang iyong datos ng sesyon!
Suriin ang iyong php.ini at tiyakin na ang <code>session.save_path</code> ay nakatakda sa angkop na direktoryo.',
@@ -11518,10 +15115,10 @@ Ipinamamahagi ang programang ito na umaasang magiging gamitin, subaliut '''walan
Tingnan ang Pangkalahatang Pampublikong Lisensiyang GNU para sa mas maraming detalye.
Dapat nakatanggap ka ng <doclink href=Copying>isang sipi ng Pangkalahatang Pampublikong Lisensiyang GNU</doclink> kasama ng programang ito; kung hindi, sumulat sa Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, o [http://www.gnu.org/licenses//gpl.html basahin ito sa Internet].",
- 'config-sidebar' => '* [http://www.mediawiki.org Tahanan ng MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents Gabay ng Tagagamit]
-* [http://www.mediawiki.org/wiki/Manual:Contents Gabay ng Tagapangasiwa]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Mga Malimit Itanong]
+ 'config-sidebar' => '* [//www.mediawiki.org Tahanan ng MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents Gabay ng Tagagamit]
+* [//www.mediawiki.org/wiki/Manual:Contents Gabay ng Tagapangasiwa]
+* [//www.mediawiki.org/wiki/Manual:FAQ Mga Malimit Itanong]
----
* <doclink href=Readme>Basahin ako</doclink>
* <doclink href=ReleaseNotes>Mga tala ng paglalabas</doclink>
@@ -11536,16 +15133,21 @@ Hindi mo mailuklok ang MediaWiki.',
Subalit, nangangailangan ang MediaWiki ng PHP $2 o mas mataas pa.',
'config-unicode-using-utf8' => 'Ginagamit ang utf8_normalize.so ni Brion Vibber para sa pagpapanormal ng Unikodigo.',
'config-unicode-using-intl' => 'Ginagamit ang [http://pecl.php.net/intl intl dugtong na PECL] para sa pagsasanormal ng Unikodigo.',
- 'config-no-db' => 'Hindi matagpuan ang isang angkop na drayber ng kalipunan ng datos!',
+ 'config-no-db' => 'Hindi matagpuan ang isang angkop na tagapagmaneho ng kalipunan ng datos! Kailangan mong magluklok ng isang tagapagmaneho ng kalipunan ng dato para sa PHP.
+Tinatangkilik ang sumusunod na mga uri ng kalipunan ng dato: $1.
+
+Kung ikaw ay nasa isang pinagsasaluhang pagpapasinaya, hilingin sa iyong tagapagbigay ng pagpapasinaya na iluklok ang isang angkop na tagapagmaneho ng kalipunan ng dato.
+Kung ikaw mismo ang nangalap ng PHP, muling isaayos ito na pinagagana ang isang kliyente ng kalipunan ng dato, halimbawa na ang paggamit ng <code>./configure --with-mysql</code>.
+Kung iniluklok mo ang PHP mula sa isang pakete ng Debian o Ubuntu, kung gayon kailangan mo ring magluklok ng modyul na php5-mysql.',
'config-memory-raised' => 'Ang <code>hangganan_ng_alaala</code> ng PHP ay $1, itinaas sa $2.',
'config-memory-bad' => "'''Babala:''' Ang <code>hangganan_ng_alaala</code> ng PHP ay $1.
Ito ay maaaring napakababa.
Maaaring mabigo ang pagluluklok!",
- 'config-xcache' => 'Ininstala na ang [http://trac.lighttpd.net/xcache/ XCache]',
+ 'config-xcache' => 'Ininstala na ang [http://xcache.lighttpd.net/ XCache]',
'config-apc' => 'Ininstala na ang [http://www.php.net/apc APC]',
'config-eaccel' => 'Ininstala na ang [http://eaccelerator.sourceforge.net/ eAccelerator]',
'config-wincache' => 'Ininstala na ang [http://www.iis.net/download/WinCacheForPhp WinCache]',
- 'config-no-cache' => "'''Babala:''' Hindi mahanap ang [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://trac.lighttpd.net/xcache/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache].
+ 'config-no-cache' => "'''Babala:''' Hindi mahanap ang [http://eaccelerator.sourceforge.net eAccelerator], [http://www.php.net/apc APC], [http://xcache.lighttpd.net/ XCache] o [http://www.iis.net/download/WinCacheForPhp WinCache].
Hindi pinapagana ang pagbabaon ng mga bagay.",
'config-diff3-bad' => 'Hindi natagpuan ang GNU diff3.',
'config-imagemagick' => 'Natagpuan ang ImageMagick: <code>$1</code>.
@@ -11559,6 +15161,7 @@ Pinigilan ang pag-iinstala.",
'config-db-host-oracle' => 'TNS ng kalipunan ng dato:',
'config-db-wiki-settings' => 'Kilalanin ang wiking ito',
'config-db-name' => 'Pangalan ng kalipunan ng dato:',
+ 'config-db-name-oracle' => 'Balangkas ng kalipunan ng dato:',
'config-db-install-account' => 'Akawnt ng tagagamit para sa pagluluklok',
'config-db-username' => 'Pangalang pangtagagamit ng kalipunan ng dato:',
'config-db-password' => 'Hudyat sa kalipunan ng dato:',
@@ -11578,22 +15181,40 @@ Baguhin lamang ito kung alam mong kinakailangan.',
'config-sqlite-dir' => 'Direktoryo ng dato ng SQLite:',
'config-oracle-def-ts' => 'Likas na nakatakdang puwang ng talahanayan:',
'config-oracle-temp-ts' => 'Pansamantalang puwang ng talahanayan:',
+ 'config-type-ibm_db2' => 'DB2 ng IBM',
'config-header-mysql' => 'Mga katakdaan ng MySQL',
'config-header-postgres' => 'Mga katakdaan ng PostgreSQL',
'config-header-sqlite' => 'Mga katakdaan ng SQLite',
'config-header-oracle' => 'Mga katakdaan ng Oracle',
+ 'config-header-ibm_db2' => 'Mga katakdaan ng DB2 ng IBM',
'config-invalid-db-type' => 'Hindi tanggap na uri ng kalipunan ng dato',
- 'config-missing-db-name' => 'Dapat kang magpasok ng isang halaga para sa "pangalan ng Kalipunan ng Dao"',
+ 'config-missing-db-name' => 'Dapat kang magpasok ng isang halaga para sa "Pangalan ng kalipunan ng dato"',
+ 'config-missing-db-host' => 'Dapat kang magpasok ng isang halaga para sa "Tagapagpasinaya ng kalipunan ng dato"',
+ 'config-missing-db-server-oracle' => 'Dapat kang magpasok ng isang halaga para sa "TNS ng kalipunan ng dato"',
'config-invalid-db-name' => 'Hindi tanggap na pangalan ng kalipunan ng dato na "$1".
Gumamit lamang ng mga titik ng ASCII (a-z, A-Z), mga bilang (0-9), mga salangguhit (_) at mga gitling (-).',
- 'config-invalid-db-prefix' => 'Hindi tanggap na unlapi ng kalipunan ng dato na "$1".
+ 'config-invalid-db-prefix' => 'Hindi tanggap na unlapi ng kalipunan ng dato na "$1".
Gamitin lamang ang mga titik na ASCII (a-z, A-Z), mga bilang (0-9), mga salangguhit (_) at mga gitling (-).',
+ 'config-connection-error' => '$1.
+
+Suriin ang punong-abala, pangalan ng tagagamit at hudyat na nasa ibaba at subukan ulit.',
'config-postgres-old' => 'Kailangan ang PostgreSQL $1 o mas bago, mayroon kang $2.',
+ 'config-sqlite-mkdir-error' => 'Kamalian sa paglikha ng direktoryo ng datong "$1".
+Suriin ang kinalalagyan at subukang muli.',
+ 'config-sqlite-dir-unwritable' => 'Hindi nagawang magsulat sa direktoryong "$1".
+Baguhin ang mga kapahintulutan nito upang makapagsulat dito ang tagapaghain ng sapot, at subukang muli.',
+ 'config-sqlite-connection-error' => '$1.
+
+Surrin ang direktoryo ng dato at pangalan ng kalipunan ng datong nasa ibaba at subukan uli.',
'config-sqlite-readonly' => 'Ang talaksang <code>$1</code> ay hindi maisusulat.',
'config-sqlite-cant-create-db' => 'Hindi malikha ang talaksang <code>$1</code> ng kalipunan ng dato.',
'config-sqlite-fts3-downgrade' => 'Nawawala ang suportang FTS3 ng PHP, ibinababa ang uri ng mga talahanayan',
+ 'config-upgrade-done-no-regenerate' => 'Buo na ang pagsasapanahon.
+
+Maaari ka na ngayong [$1 magsimula sa paggamit ng wiki mo].',
'config-regenerate' => 'Muling likhain ang LocalSettings.php →',
'config-show-table-status' => 'Nabigo ang pagtatanong na IPAKITA ANG KALAGAYAN NG TALAHANAYAN!',
+ 'config-unknown-collation' => "'''Babala:''' Ang kalipunan ng dato ay gumagagamit ng hindi nakikilalang pag-iipon.",
'config-db-web-account' => 'Akawnt ng kalipunan ng dato para sa pagpunta sa web',
'config-db-web-help' => 'Piliin ang pangalan ng tagagamit at hudyat na gagamitin ng tagapaghain ng web upang umugnay sa tagapaghain ng kalipunan ng dato, habang nasa pangkaraniwang pagtakbo ng wiki.',
'config-db-web-account-same' => 'Gamitin ang gayun din akawnt katulad ng sa pagluluklok',
@@ -11625,6 +15246,7 @@ Tumukoy ng ibang pangalan ng tagagamit.',
'config-admin-email' => 'Tirahan ng e-liham:',
'config-admin-error-user' => 'Panloob na kamalian kapag nililikha ang isang tagapangasiwa na may pangalang "<nowiki>$1</nowiki>".',
'config-admin-error-password' => 'Panloob na kamalian kapag nagtatakda ng isang hudyat na para sa tagapangasiwang "<nowiki>$1</nowiki>": <pre>$2</pre>',
+ 'config-admin-error-bademail' => 'Nagpasok ka ng isang hindi katanggap-tanggap na tirahan ng e-liham.',
'config-subscribe' => 'Tumanggap mula sa [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce talaan ng mga pinadadalhan ng mga nilalabas na mga pabatid].',
'config-almost-done' => 'Halos tapos ka na!
Maaari mo ngayong laktawan ang natitira pang pag-aayos at iluklok na ang wiki ngayon.',
@@ -11639,8 +15261,6 @@ Maaari mo ngayong laktawan ang natitira pang pag-aayos at iluklok na ang wiki ng
'config-license-none' => 'Walang talababa ng lisensiya',
'config-license-cc-by-sa' => 'Malikhaing Pangkaraniwang Pagtukoy Pamamahaging Magkatulad',
'config-license-cc-by-nc-sa' => 'Malikhaing Pangkaraniwang Pagtukoy Hindi-Pangkalakal Pamamahaging Magkatulad',
- 'config-license-gfdl-old' => 'Lisensiya ng Malayang Dokumenstasyon 1.2 ng GNU',
- 'config-license-gfdl-current' => 'Lisensiya ng Malayang Dokumenstasyon 1.3 ng GNU o mas bago',
'config-license-pd' => 'Nasasakupan ng Madla',
'config-license-cc-choose' => 'Pumili ng isang pasadyang Lisensiya ng Malikhaing mga Pangkaraniwan',
'config-email-settings' => 'Mga katakdaan ng e-liham',
@@ -11677,6 +15297,7 @@ Kung hindi mo alam ang daungan, ang likas na nakatakda ay 11211.',
'config-install-step-failed' => 'nabigo',
'config-install-extensions' => 'Isinasama ang mga karugtong',
'config-install-database' => 'Inihahanda ang kalipunan ng dato',
+ 'config-install-pg-schema-not-exist' => 'Hindi umiiral ang panukala ng PostgreSQL.',
'config-install-pg-schema-failed' => 'Nabigo ang paglikha ng mga talahanayan.
Tiyakin na ang tagagamit na "$1" ay maaaring makasulat sa balangkas na "$2".',
'config-install-pg-commit' => 'Isinasagawa ang mga pagbabago',
@@ -11719,6 +15340,71 @@ $3
Kapag nagawa na iyan, maaari ka nang '''[$2 pumasok sa wiki mo]'''.",
'config-download-localsettings' => 'Ikargang paibaba ang LocalSettings.php',
'config-help' => 'saklolo',
+ 'mainpagetext' => "'''Matagumpay na ininstala ang MediaWiki.'''",
+ 'mainpagedocfooter' => "Silipin ang [//meta.wikimedia.org/wiki/Help:Contents Patnubay sa Tagagamit] (''\"User's Guide\"'') para sa kaalaman sa paggamit ng wiking ''software''.
+
+== Pagsisimula ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Tala ng mga nakatakdang kumpigurasyon]
+* [//www.mediawiki.org/wiki/Manual:FAQ Mga malimit itanong sa MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Tala ng mga pinadadalhan ng liham ng MediaWiki]",
+);
+
+/** Turkish (Türkçe) */
+$messages['tr'] = array(
+ 'mainpagetext' => "'''MediaWiki başarı ile kuruldu.'''",
+ 'mainpagedocfooter' => 'Viki yazılımının kullanımı hakkında bilgi almak için [//meta.wikimedia.org/wiki/Help:Contents kullanıcı rehberine] bakınız.
+
+== Yeni BaÅŸlayanlar ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Yapılandırma ayarlarının listesi]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki SSS]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-posta listesi]',
+);
+
+/** Tatar (Cyrillic script) (Татарча)
+ * @author KhayR
+ */
+$messages['tt-cyrl'] = array(
+ 'mainpagetext' => '«MediaWiki» уңышлы куелды.',
+ 'mainpagedocfooter' => "Бу вики турында мәгълүматны [//meta.wikimedia.org/wiki/Ярдәм:Эчтәлек биредә] табып була.
+
+== Кайбер файдалы реÑурÑлар ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Көйләнмәләр иÑемлеге (инг.)];
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki турында еш бирелгән Ñораулар һәм җаваплар (инг.)];
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki'ның Ñңа верÑиÑләре турында хәбәрләр Ñздырып алу].",
+);
+
+/** Tatar (Latin script) (Tatarça)
+ * @author Don Alessandro
+ */
+$messages['tt-latn'] = array(
+ 'mainpagetext' => '«MediaWiki» uñışlı quyıldı.',
+ 'mainpagedocfooter' => "Bu wiki turında mäğlümatnı [//meta.wikimedia.org/wiki/Yärdäm:Eçtälek biredä] tabıp bula.
+
+== Qayber faydalı resurslar ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Köylänmälär isemlege (ing.)];
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki turında yış birelgän sorawlar häm cawaplar (ing.)];
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki'nıñ yaña versiäläre turında xäbärlär yazdırıp alu].",
+);
+
+/** Udmurt (Удмурт)
+ * @author Andrewboltachev
+ */
+$messages['udm'] = array(
+ 'mainpagetext' => "'''MediaWiki движок азинлыко пуктÑмын.'''",
+);
+
+/** Uyghur (Arabic script) (ئۇيغۇرچە)
+ * @author Sahran
+ */
+$messages['ug-arab'] = array(
+ 'mainpagetext' => "'''MediaWiki مۇۋەپپەقىيەتلىك قاچىلاندى.'''",
+ 'mainpagedocfooter' => '[//meta.wikimedia.org/wiki/Help:Contents ئىشلەتكۈچى قوللانمىسى] نى زىيارەت قىلىپ wiki يۇمشاق دÛتالىنى ئىشلىتىش ئۇچۇرىغا ئÛرىشىڭ.
+
+== دەسلەپكى ساۋات ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings سەپلىمە تەڭشەك تىزىملىكى]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki كۆپ ئۇچرايدىغان مەسىلىلەرگە جاۋاب]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki تارقاتقان ئÛلخەت تىزىملىكى]',
);
/** Ukrainian (УкраїнÑька)
@@ -11731,8 +15417,8 @@ $messages['uk'] = array(
'config-desc' => 'ІнÑталÑтор MediaWiki',
'config-title' => 'Ð’ÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ MediaWiki $1',
'config-information' => 'ІнформаціÑ',
- 'config-localsettings-upgrade' => "'''Увага''': було виÑвлено файл <code>LocalSettings.php</code>.
-Ваше програмне Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ðµ бути оновлено.
+ 'config-localsettings-upgrade' => "'''Увага''': було виÑвлено файл <code>LocalSettings.php</code>.
+Ваше програмне Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ðµ бути оновлено.
Будь-лаÑка, переміÑÑ‚Ñ–Ñ‚ÑŒ файл <code>LocalSettings.php</code> в іншу безпечну директорію, а потім знову запуÑÑ‚Ñ–Ñ‚ÑŒ програму уÑтановки.",
'config-session-error' => 'Помилка початку ÑеÑÑ–Ñ—: $1',
'config-your-language' => 'Ваша мова:',
@@ -11760,20 +15446,24 @@ $messages['uk'] = array(
'config-welcome' => '=== Перевірка Ð¾Ñ‚Ð¾Ñ‡ÐµÐ½Ð½Ñ ===
ПроводÑÑ‚ÑŒÑÑ Ð±Ð°Ð·Ð¾Ð²Ñ– перевірки, щоб виÑвити, чи можлива уÑтановка MediaWiki у даній ÑиÑтемі.
Вкажіть результати цих перевірок при зверненні за допомогою під Ñ‡Ð°Ñ ÑƒÑтановки.',
- 'config-sidebar' => '* [http://www.mediawiki.org Сайт MediaWiki]
-* [http://www.mediawiki.org/wiki/Help:Contents/uk Керівництво кориÑтувача]
-* [http://www.mediawiki.org/wiki/Manual:Contents/uk Керівництво адмініÑтратора]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/uk FAQ]',
+ 'config-sidebar' => '* [//www.mediawiki.org Сайт MediaWiki]
+* [//www.mediawiki.org/wiki/Help:Contents/uk Керівництво кориÑтувача]
+* [//www.mediawiki.org/wiki/Manual:Contents/uk Керівництво адмініÑтратора]
+* [//www.mediawiki.org/wiki/Manual:FAQ/uk FAQ]',
'config-env-good' => 'Перевірку Ñередовища уÑпішно завершено.
Ви можете вÑтановити MediaWiki.',
'config-env-bad' => 'Було проведено перевірку Ñередовища. Ви не можете вÑтановити MediaWiki.',
'config-env-php' => 'Ð’Ñтановлено верÑÑ–ÑŽ PHP: $1.',
'config-unicode-using-utf8' => 'ВикориÑтовувати utf8_normalize.so Брайона Віббера Ð´Ð»Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— Юнікоду.',
'config-unicode-using-intl' => 'ВикориÑтовувати [http://pecl.php.net/intl міжнародне Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ PECL] Ð´Ð»Ñ Ð½Ð¾Ñ€Ð¼Ð°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ— Юнікоду.',
- 'config-unicode-pure-php-warning' => "'''Увага''': [http://pecl.php.net/intl міжнародне Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ PECL] не може провеÑти нормалізацію Юнікоду.
-Якщо ваш Ñайт має виÑокий трафік, вам варто почитати про [http://www.mediawiki.org/wiki/Unicode_normalization_considerations нормалізацію Юнікоду].",
- 'config-no-db' => 'Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ відповідний драйвер бази даних!',
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache] вÑтановлено',
+ 'config-unicode-pure-php-warning' => "'''Увага''': [http://pecl.php.net/intl міжнародне Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ PECL] не може провеÑти нормалізацію Юнікоду.
+Якщо ваш Ñайт має виÑокий трафік, вам варто почитати про [//www.mediawiki.org/wiki/Unicode_normalization_considerations нормалізацію Юнікоду].",
+ 'config-no-db' => 'Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ відповідний драйвер бази даних! Вам необхідно вÑтановити драйвер бази даних Ð´Ð»Ñ PHP. ПідтримуютьÑÑ Ñ‚Ð°ÐºÑ– типи баз даних: $1.
+
+Якщо ви кориÑтуєтеÑÑŒ віртуальним хоÑтингом, попроÑÑ–Ñ‚ÑŒ вашого хоÑтинг-провайдера інÑталювати відповідний драйвер бази даних.
+Якщо ви Ñкомпілювали PHP ÑамоÑтійно, переналаштуйте його з включеннÑм клієнта бази даних, наприклад за допомогою <code>./configure --with-mysql</code>.
+Якщо уÑтановлено PHP з пакетів Debian або Ubuntu, тоді ви також повинні вÑтановити php5-mysql модуль.',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache] вÑтановлено',
'config-apc' => '[http://www.php.net/apc APC] вÑтановлено',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator] вÑтановлено',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache] вÑтановлено',
@@ -11786,7 +15476,7 @@ $messages['uk'] = array(
'config-invalid-db-type' => 'Ðевірний тип бази даних',
'config-invalid-db-name' => 'ÐеприпуÑтима назва бази даних "$1".
ВикориÑтовуйте тільки ASCII букви (a-z, A-Z), цифри (0-9), знаки підкреÑÐ»ÐµÐ½Ð½Ñ (_) Ñ– дефіÑи (-).',
- 'config-invalid-db-prefix' => 'ÐеприпуÑтимий Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ Ð±Ð°Ð·Ð¸ даних "$1".
+ 'config-invalid-db-prefix' => 'ÐеприпуÑтимий Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ Ð±Ð°Ð·Ð¸ даних "$1".
ВикориÑтовуйте тільки ASCII букви (a-z, A-Z), цифри (0-9), знаки підкреÑÐ»ÐµÐ½Ð½Ñ (_) Ñ– дефіÑи (-).',
'config-sqlite-cant-create-db' => 'Ðе вдалоÑÑ Ñтворити файл бази даних <code>$1</code>.',
'config-db-web-create' => 'Створити обліковий запиÑ, Ñкщо його ще не Ñ–Ñнує',
@@ -11803,7 +15493,6 @@ $messages['uk'] = array(
'config-admin-email' => 'ÐдреÑа електронної пошти:',
'config-license' => 'ÐвторÑькі права Ñ– ліцензіÑ:',
'config-license-cc-by-nc-sa' => 'Creative Commons Attribution Non-Commercial Share Alike',
- 'config-license-gfdl-old' => 'GNU Free Documentation License 1.2',
'config-email-settings' => 'ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐµÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð¾Ñ— пошти',
'config-upload-enable' => 'Дозволити Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð²',
'config-upload-deleted' => 'Каталог Ð´Ð»Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð¸Ñ… файлів:',
@@ -11812,6 +15501,149 @@ $messages['uk'] = array(
'config-install-step-done' => 'виконано',
'config-install-step-failed' => 'не вдалоÑÑ',
'config-install-interwiki-list' => 'Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ файл <code>interwiki.list</code>.',
+ 'mainpagetext' => 'Програмне Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Â«MediaWiki» уÑпішно вÑтановлене.',
+ 'mainpagedocfooter' => 'Інформацію про роботу з цією вікі можна знайти в [//meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 поÑібнику кориÑтувача].
+
+== ДеÑкі кориÑні реÑурÑи ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings СпиÑок налаштувань];
+* [//www.mediawiki.org/wiki/Manual:FAQ ЧаÑÑ‚Ñ– Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· приводу MediaWiki];
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce РозÑилка повідомлень про поÑву нових верÑій MediaWiki].',
+);
+
+/** Urdu (اردو) */
+$messages['ur'] = array(
+ 'mainpagetext' => "'''میڈیاوکی Ú©Ùˆ کامیابی سے چالو کردیا گیا ÛÛ’Û”.'''",
+);
+
+/** Uzbek (O'zbek) */
+$messages['uz'] = array(
+ 'mainpagetext' => "'''MediaWiki muvaffaqiyatli o'rnatildi.'''",
+ 'mainpagedocfooter' => "Wiki dasturini ishlatish haqida ma'lumot olish uchun [//meta.wikimedia.org/wiki/Help:Contents Foydalanuvchi qo'llanmasi] sahifasiga murojaat qiling.
+
+== Dastlabki qadamlar ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Moslamalar ro'yxati]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki haqida ko'p so'raladigan savollar]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki yangi versiyasi chiqqanda xabar berish ro'yxati]",
+);
+
+/** Vèneto (Vèneto)
+ * @author Vajotwo
+ */
+$messages['vec'] = array(
+ 'mainpagetext' => "'''Instałasion de MediaWiki conpletà coretamente.'''",
+ 'mainpagedocfooter' => "Varda Å‚a [//meta.wikimedia.org/wiki/Aiuto:Sommario Guida utente] par majori informasion so l'uso de sto software wiki.
+
+== Par scumisiar ==
+
+I seguenti cołegamenti i xé en łengua inglese:
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Inpostasion de configurasion]
+* [//www.mediawiki.org/wiki/Manual:FAQ Domande frequenti so MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list anunsi MediaWiki]",
+);
+
+/** Veps (Vepsan kel')
+ * @author Игорь БродÑкий
+ */
+$messages['vep'] = array(
+ 'mainpagetext' => "'''MediaWiki-likutim om seižutadud jügedusita.'''",
+ 'mainpagedocfooter' => 'Kc. [//meta.wikimedia.org/wiki/Help:Kävutajan abukirj], miše sada informacijad wikin kävutamižes.
+
+== Erased tarbhaižed resursad ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Järgendusiden nimikirjutez]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce poÄtnimikirjutez]',
+);
+
+/** Vietnamese (Tiếng Việt) */
+$messages['vi'] = array(
+ 'mainpagetext' => "'''MediaWiki đã được cài đặt thành công.'''",
+ 'mainpagedocfooter' => 'Xin Ä‘á»c [//meta.wikimedia.org/wiki/Help:Contents HÆ°á»›ng dẫn sá»­ dụng] để biết thêm thông tin vá» cách sá»­ dụng phần má»m wiki.
+
+== Äể bắt đầu ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Danh sách các thiết lập cấu hình]
+* [//www.mediawiki.org/wiki/Manual:FAQ Các câu há»i thÆ°á»ng gặp MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Danh sách gửi thư vỠviệc phát hành MediaWiki]',
+);
+
+/** Volapük (Volapük) */
+$messages['vo'] = array(
+ 'mainpagetext' => "'''El MediaWiki pestiton benosekiko.'''",
+ 'mainpagedocfooter' => 'Konsultolös [//meta.wikimedia.org/wiki/Help:Contents Gebanageidian] ad tuvön nünis dö geb programema vükik.
+
+== Nüdugot ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Parametalised]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki: SSP]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Potalised tefü fomams nulik ela MediaWiki]',
+);
+
+/** Võro (Võro) */
+$messages['vro'] = array(
+ 'mainpagetext' => "'''MediaWiki tarkvara paika säet.'''",
+ 'mainpagedocfooter' => 'Vikitarkvara pruukmisõ kotsilõ loeq mano:
+* [//meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide MediaWiki pruukmisoppus (inglüse keelen)].
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Säädmiisi oppus (inglüse keelen)]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki kõgõ küsütümbäq küsümiseq (inglüse keelen)]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postilist, minka andas teedäq MediaWiki vahtsist kujõst].',
+);
+
+/** Walloon (Walon) */
+$messages['wa'] = array(
+ 'mainpagetext' => "'''Li programe Wiki a stî astalé a l' idêye.'''",
+);
+
+/** Waray (Winaray)
+ * @author Harvzsf
+ */
+$messages['war'] = array(
+ 'mainpagetext' => "'''Malinamposon an pag-instalar han MediaWiki.'''",
+ 'mainpagedocfooter' => "Kitaa an [//meta.wikimedia.org/wiki/Help:Contents User's Guide] para hin impormasyon ha paggamit han wiki nga softweyr.
+
+== Ha pagtikang==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Wolof (Wolof) */
+$messages['wo'] = array(
+ 'mainpagetext' => "'''Campug MediaWiki gi sotti na . '''",
+ 'mainpagedocfooter' => 'Saytul [//meta.wikimedia.org/wiki/Ndimbal:Ndefu Gindikaayu jëfandikukat bi] ngir yeneeni xibaar ci jëfandiku gu tëriin gi.
+
+== Tambali ak MediaWiki ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Limu jumtukaayi kocc-koccal gi]
+* [//www.mediawiki.org/wiki/Manual:FAQ FAQ MediaWiki]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Limu waxtaan ci liy-génn ci MediaWiki]',
+);
+
+/** Wu (å´è¯­)
+ * @author Wu-chinese.com
+ */
+$messages['wuu'] = array(
+ 'mainpagetext' => "'''MediaWiki安装æˆåŠŸå“‰ï¼'''",
+ 'mainpagedocfooter' => '请访问[//meta.wikimedia.org/wiki/Help:Contents 用户手册]以获得使用此维基软件个信æ¯ï¼
+
+== 入门 ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置设置列表]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常è§é—®é¢˜è§£ç­”]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki å‘布邮件列表]',
+);
+
+/** Kalmyk (Хальмг)
+ * @author Huuchin
+ */
+$messages['xal'] = array(
+ 'mainpagetext' => "Йовудта Mediawiki гүүлһүдә тәвллһн.'''",
+ 'mainpagedocfooter' => 'Тер бики закллһна теткүл ÑŽ кеһәд олзлх туÑк [//meta.wikimedia.org/wiki/Help:Contents көтлвр] даÑтн.
+
+== ТуÑта заавр ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Көгүдә бүрткл]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki туÑк ЮмБи]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki шинҗллһнә бүрткл]',
);
/** Yiddish (ייִדיש)
@@ -11819,11 +15651,55 @@ $messages['uk'] = array(
*/
$messages['yi'] = array(
'config-admin-name' => '×ײַער × ×ָמען:',
+ 'mainpagetext' => "'''מעדיעוויקי ×ינסט×לירט מיט דערפ×לג.'''",
+ 'mainpagedocfooter' => "גיט זיך ×ן עצה מיט [//meta.wikimedia.org/wiki/Help:Contents ב×ניצער'ס וועגווײַזער] פֿ×ר ×ינפֿ×רמ×ציע ווי×זוי זיך ב×נוצן מיט וויקי ווייכוו×ַרג.
+
+== נוצליכע וועבלינקען פֿ×ַר ×נהייבערס ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings רשימה פון ק×נפֿיגור×ציעס]
+* [//www.mediawiki.org/wiki/Manual:FAQ ×פֿט געפֿרעגטע ש×לות]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce מעדיעוויקי ב×פֿרײַ×ונג פ×סטליסטע]",
+);
+
+/** Yoruba (Yorùbá)
+ * @author Demmy
+ */
+$messages['yo'] = array(
+ 'mainpagetext' => "'''MediaWiki ti jáº¹Ì gbígbéká»Ìsínú láyá»rísírere.'''",
+ 'mainpagedocfooter' => "Ẹ ṣàbẹ̀wò sí [//meta.wikimedia.org/wiki/Help:Contents User's Guide] fún ìfitólétí nípa líló atòlànà wíkì.
+
+== Láti bẹ̀rẹ̀ ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+);
+
+/** Cantonese (粵語) */
+$messages['yue'] = array(
+ 'mainpagetext' => "'''MediaWiki已經è£å¥½ã€‚'''",
+ 'mainpagedocfooter' => 'åƒé–±[//meta.wikimedia.org/wiki/Help:Contents 用戶指引](英),è£é¢æœ‰è³‡æ–™è¬›é»žç”¨wiki軟件。
+
+==開始使用==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings é…置設定清單](英)
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常見å•é¡Œ](英)
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件åå–®](英)',
+);
+
+/** Zeeuws (Zeêuws) */
+$messages['zea'] = array(
+ 'mainpagetext' => "'''De installaotie van MediaWiki is geslaegd.'''",
+ 'mainpagedocfooter' => "Raedpleeg de [//meta.wikimedia.org/wiki/ZEA_Ulpe:Inhoudsopgaeve andleidieng] voe informatie over 't gebruuk van de wikisoftware.
+
+== Meer ulpe over MediaWiki ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings Lieste mie instelliengen]
+* [//www.mediawiki.org/wiki/Manual:FAQ Veehestelde vraehen (FAQ)]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailienglieste voe ankondigiengen van nieuwe versies]",
);
/** Simplified Chinese (‪中文(简体)‬)
* @author Hydra
* @author PhiLiP
+ * @author Xiaomingyan
* @author 阿pp
*/
$messages['zh-hans'] = array(
@@ -11831,7 +15707,7 @@ $messages['zh-hans'] = array(
'config-title' => 'MediaWiki $1é…ç½®',
'config-information' => 'ä¿¡æ¯',
'config-localsettings-upgrade' => '已检测到<code>LocalSettings.php</code>文件。è¦å‡çº§è¯¥é…置,请在下é¢çš„框中输入<code>$wgUpgradeKey</code>的值。您å¯ä»¥åœ¨LocalSettings.php中找到它。',
- 'config-localsettings-cli-upgrade' => '已检测到LocalSettings.php文件。è¦å‡çº§è¯¥é…置,请使用--upgrade=yes选项。',
+ 'config-localsettings-cli-upgrade' => '已检测到LocalSettings.php文件。è¦å‡çº§è¯¥é…置,请直接è¿è¡Œupdate.php。',
'config-localsettings-key' => 'å‡çº§å¯†é’¥ï¼š',
'config-localsettings-badkey' => '您æ供的密钥ä¸æ­£ç¡®ã€‚',
'config-upgrade-key-missing' => '检测到MediaWikiçš„é…置已ç»å­˜åœ¨ã€‚è‹¥è¦å‡çº§è¯¥é…置,请将下é¢ä¸€è¡Œæ–‡æœ¬æ·»åŠ åˆ°LocalSettings.php的底部:
@@ -11878,24 +15754,27 @@ $1',
本程åºæ˜¯åŸºäºŽä½¿ç”¨ç›®çš„而加以å‘布,然而'''ä¸è´Ÿä»»ä½•æ‹…ä¿è´£ä»»''';亦无对'''适售性'''或'''特定目的适用性'''所为的默示性担ä¿ã€‚详情请å‚ç…§GNU通用公共授æƒã€‚
您应已收到附éšäºŽæœ¬ç¨‹åºçš„<doclink href=\"Copying\">GNU通用公共授æƒçš„副本</doclink>;如果没有,请写信至自由软件基金会:59 Temple Place - Suite 330, Boston, Ma 02111-1307, USA,或[http://www.gnu.org/copyleft/gpl.html 在线阅读]。",
- 'config-sidebar' => '* [http://www.mediawiki.org/wiki/MediaWiki/zh-hans MediaWiki首页]
-* [http://www.mediawiki.org/wiki/Help:Contents/zh-hans 用户帮助]
-* [http://www.mediawiki.org/wiki/Manual:Contents 管ç†å‘˜å¸®åŠ©]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/zh-hans 常è§é—®é¢˜è§£ç­”]',
+ 'config-sidebar' => '* [//www.mediawiki.org/wiki/MediaWiki/zh-hans MediaWiki首页]
+* [//www.mediawiki.org/wiki/Help:Contents/zh-hans 用户指å—]
+* [//www.mediawiki.org/wiki/Manual:Contents 管ç†å‘˜æŒ‡å—]
+* [//www.mediawiki.org/wiki/Manual:FAQ/zh-hans 常è§é—®é¢˜è§£ç­”]
+----
+* <doclink href=Readme>自述文件</doclink>
+* <doclink href=ReleaseNotes>å‘行说明</doclink>
+* <doclink href=Copying>å议副本</doclink>
+* <doclink href=UpgradeDoc>å‡çº§</doclink>',
'config-env-good' => '环境检查已ç»å®Œæˆã€‚您å¯ä»¥å®‰è£…MediaWiki。',
'config-env-bad' => '环境检查已ç»å®Œæˆã€‚您ä¸èƒ½å®‰è£…MediaWiki。',
'config-env-php' => 'PHP $1已安装。',
+ 'config-env-php-toolow' => '已安装PHP $1;但是,MediaWiki需è¦PHP $2或更高版本。',
'config-unicode-using-utf8' => '使用Brion Vibber的utf8_normalize.so实现Unicode正常化。',
'config-unicode-using-intl' => '使用[http://pecl.php.net/intl intl PECL扩展]实现Unicode正常化。',
- 'config-unicode-pure-php-warning' => "'''警告''':[http://pecl.php.net/intl intl PECL扩展]无法处ç†Unicode正常化,故åªèƒ½é€€è€Œé‡‡ç”¨è¿è¡Œè¾ƒæ…¢çš„纯PHP实现的方法。如果您è¿è¡Œç€ä¸€ä¸ªé«˜æµé‡çš„站点,请å‚阅[http://www.mediawiki.org/wiki/Unicode_normalization_considerations Unicode正常化]一文。",
- 'config-unicode-update-warning' => "'''警告''':Unicode正常化å°è£…器的已安装版本使用了旧版本的[http://site.icu-project.org/ ICU项目]库。如果您需è¦ä½¿ç”¨Unicode,请将其[http://www.mediawiki.org/wiki/Unicode_normalization_considerations å‡çº§]。",
- 'config-no-db' => '找ä¸åˆ°åˆé€‚çš„æ•°æ®åº“驱动ï¼',
- 'config-no-db-help' => '您需è¦ä¸ºPHP安装数æ®åº“驱动。MediaWiki支æŒä¸‹åˆ—æ•°æ®åº“类型:$1
-
-如果您正在使用共享主机,请让您的主机æ供商为您安装适当的数æ®åº“驱动。
-如果PHP由您自行编译,请将其é‡æ–°é…置以å¯ç”¨æ•°æ®åº“客户端,例如使用<code>./configure --with-mysql</code>。
-如果PHP是您通过Debian或Ubuntu包安装的,那么您还需è¦å®‰è£…php5-mysql模å—。',
- 'config-no-fts3' => "'''警告''':已编译的SQLiteä¸åŒ…å«[http://sqlite.org/fts3.html FTS3模å—],åŽå°æœç´¢åŠŸèƒ½å°†ä¸å¯ç”¨ã€‚",
+ 'config-unicode-pure-php-warning' => "'''警告''':[http://pecl.php.net/intl intl PECL扩展]无法处ç†Unicode正常化,故åªèƒ½é€€è€Œé‡‡ç”¨è¿è¡Œè¾ƒæ…¢çš„纯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-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-register-globals' => "'''警告:PHPçš„<code>[http://php.net/register_globals register_globals]</code>选项被å¯ç”¨ã€‚请尽é‡ç¦ç”¨è¯¥åŠŸèƒ½ï¼Œ'''虽然ä¸ä¼šå½±å“MediaWikiçš„è¿è¡Œï¼Œä½†æ‚¨çš„æœåŠ¡å™¨ä¼šè¢«æš´éœ²ç»™æ½œåœ¨çš„安全æ¼æ´žã€‚",
'config-magic-quotes-runtime' => "'''致命错误:[http://www.php.net/manual/en/ref.info.php#ini.magic-quotes-runtime magic_quotes_runtime]被å¯ç”¨ï¼'''
此选项会无法预测地破å输入的数æ®ï¼Œè¯·å°†å…¶ç¦ç”¨ï¼Œå¦åˆ™æ‚¨å°†ä¸èƒ½å®‰è£…或使用MediaWiki。",
@@ -11911,20 +15790,25 @@ $1',
'config-pcre-no-utf8' => "'''致命错误''':PHPçš„PCRE模å—在编译时å¯èƒ½æ²¡æœ‰åŒ…å«PCRE_UTF8支æŒã€‚MediaWiki需è¦UTF-8支æŒæ‰èƒ½æ­£å¸¸å·¥ä½œã€‚",
'config-memory-raised' => 'PHP的内存使用上é™<code>memory_limit</code>为$1,自动æå‡åˆ°$2。',
'config-memory-bad' => "'''警告:'''PHP的内存使用上é™<code>memory_limit</code>为$1。该设定å¯èƒ½è¿‡ä½Žï¼Œå¹¶å¯¼è‡´å®‰è£…失败ï¼",
- 'config-xcache' => '[http://trac.lighttpd.net/xcache/ XCache]已安装',
+ 'config-xcache' => '[http://xcache.lighttpd.net/ XCache]已安装',
'config-apc' => '[http://www.php.net/apc APC]已安装',
'config-eaccel' => '[http://eaccelerator.sourceforge.net/ eAccelerator]已安装',
'config-wincache' => '[http://www.iis.net/download/WinCacheForPhp WinCache]已安装',
- 'config-no-cache' => "'''警告:'''找ä¸åˆ°[http://eaccelerator.sourceforge.net eAccelerator]ã€[http://www.php.net/apc APC]ã€[http://trac.lighttpd.net/xcache/ XCache]或[http://www.iis.net/download/WinCacheForPhp WinCache],无法å¯ç”¨å¯¹è±¡ç¼“存。
+ 'config-no-cache' => "'''警告:'''找ä¸åˆ°[http://eaccelerator.sourceforge.net eAccelerator]ã€[http://www.php.net/apc APC]ã€[http://xcache.lighttpd.net/ XCache]或[http://www.iis.net/download/WinCacheForPhp WinCache],无法å¯ç”¨å¯¹è±¡ç¼“存。
Object caching is not enabled.",
'config-diff3-bad' => '找ä¸åˆ°GNU diff3。',
'config-imagemagick' => '已找到ImageMagick:<code>$1</code>。如果你å¯ç”¨äº†ä¸Šä¼ åŠŸèƒ½ï¼Œç¼©ç•¥å›¾åŠŸèƒ½ä¹Ÿå°†è¢«å¯ç”¨ã€‚',
'config-gd' => '已找到内建的GD图形库。如果你å¯ç”¨äº†ä¸Šä¼ åŠŸèƒ½ï¼Œç¼©ç•¥å›¾åŠŸèƒ½ä¹Ÿå°†è¢«å¯ç”¨ã€‚',
'config-no-scaling' => '找ä¸åˆ°GD库或ImageMagick。缩略图功能将ä¸å¯ç”¨ã€‚',
'config-no-uri' => "'''错误:'''无法确定当å‰çš„URI。安装已中断。",
- 'config-uploads-not-safe' => "'''警告:'''您的默认上传目录<code>$1</code>存在å…许执行任æ„脚本的æ¼æ´žã€‚尽管MediaWiki会对所有已上传的文件进行安全检查,但我们ä»ç„¶å¼ºçƒˆå»ºè®®æ‚¨åœ¨å¯ç”¨ä¸Šä¼ åŠŸèƒ½å‰[http://www.mediawiki.org/wiki/Manual:Security#Upload_security 关闭该安全æ¼æ´ž]。",
- 'config-brokenlibxml' => '您的系统安装的PHPå’Œlibxml2版本组åˆå­˜åœ¨æ•…障,并å¯èƒ½åœ¨MediaWiki和其他web应用程åºä¸­é€ æˆéšè—çš„æ•°æ®æŸå。请将PHPå‡çº§åˆ°5.2.9或以上,libxml2å‡çº§åˆ°2.7.3或以上([http://bugs.php.net/bug.php?id=45996 PHP的故障报告])。安装已中断。',
- 'config-using531' => '由于函数<code>__call()</code>的引用å‚数存在故障,PHP $1å’ŒMediaWiki无法兼容。请å‡çº§åˆ°PHP 5.3.2或以上版本,或é™çº§åˆ°PHP 5.3.0以修å¤è¯¥é—®é¢˜ï¼ˆ[http://bugs.php.net/bug.php?id=50394 PHP的故障报告])。安装已中断。',
+ '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>存在å…许执行任æ„脚本的æ¼æ´žã€‚尽管MediaWiki会对所有已上传的文件进行安全检查,但我们ä»ç„¶å¼ºçƒˆå»ºè®®æ‚¨åœ¨å¯ç”¨ä¸Šä¼ åŠŸèƒ½å‰[//www.mediawiki.org/wiki/Manual:Security#Upload_security 关闭该安全æ¼æ´ž]。",
+ 'config-no-cli-uploads-check' => "'''警告''':在CLI安装过程中,没有对您的默认上传目录(<code>$1</code>)进行执行任æ„脚本的æ¼æ´žæ£€æŸ¥ã€‚",
+ 'config-brokenlibxml' => '您的系统安装的PHPå’Œlibxml2版本组åˆå­˜åœ¨æ•…障,并å¯èƒ½åœ¨MediaWiki和其他web应用程åºä¸­é€ æˆéšè—çš„æ•°æ®æŸå。请将PHPå‡çº§åˆ°5.2.9或以上,libxml2å‡çº§åˆ°2.7.3或以上([//bugs.php.net/bug.php?id=45996 PHP的故障报告])。安装已中断。',
+ 'config-using531' => '由于函数<code>__call()</code>的引用å‚数存在故障,PHP $1å’ŒMediaWiki无法兼容。请å‡çº§åˆ°PHP 5.3.2或更高版本,或é™çº§åˆ°PHP 5.3.0以修å¤è¯¥é—®é¢˜ã€‚安装已中断。',
+ 'config-suhosin-max-value-length' => 'Suhosinå·²ç»å®‰è£…并将GET请求的å‚数长度é™åˆ¶åœ¨$1字节。MediaWikiçš„ResourceLoader部件å¯ä»¥åœ¨æ­¤é™åˆ¶ä¸‹æ­£å¸¸å·¥ä½œï¼Œä½†å…¶æ€§èƒ½ä¼šè¢«é™ä½Žã€‚如果å¯èƒ½ï¼Œè¯·åœ¨php.ini中将suhosin.get.max_value_length设为1024或更高值,并在LocalSettings.php中将$wgResourceLoaderMaxQueryLength设为åŒä¸€å€¼ã€‚',
'config-db-type' => 'æ•°æ®åº“类型:',
'config-db-host' => 'æ•°æ®åº“主机:',
'config-db-host-help' => '如果您的数æ®åº“ä½äºŽå¦ä¸€å°æœåŠ¡å™¨ä¸Šï¼Œåœ¨æ­¤è¾“入主机å或IP地å€ã€‚
@@ -11940,9 +15824,15 @@ Object caching is not enabled.",
如果您正在使用共享web主机,您的主机æ供商或会给您指定一个数æ®åº“å称,或会让您通过控制é¢æ¿åˆ›å»ºæ•°æ®åº“。',
'config-db-name-oracle' => 'æ•°æ®åº“模å¼ï¼š',
+ 'config-db-account-oracle-warn' => '现有三ç§å·²æ”¯æŒæ–¹æ¡ˆå¯ä»¥å°†Oracle设置为åŽç«¯æ•°æ®åº“:
+
+如果您希望在安装过程中创建数æ®åº“å¸æˆ·ï¼Œè¯·ä¸ºå®‰è£…程åºæ供具有SYSDBA角色的数æ®åº“å¸æˆ·ï¼Œå¹¶ä¸ºweb访问å¸æˆ·æŒ‡å®šæ‰€éœ€èº«ä»½è¯æ˜Žï¼›å¦åˆ™æ‚¨å¯ä»¥æ‰‹åŠ¨åˆ›å»ºweb访问的账户并仅须æ供该å¸æˆ·ï¼ˆç¡®ä¿å¸æˆ·å·²æœ‰åˆ›å»ºæ–¹æ¡ˆå¯¹è±¡ï¼ˆschema object)的所需æƒé™ï¼‰ï¼›æˆ–æ供两个ä¸åŒçš„å¸æˆ·ï¼Œå…¶ä¸€å…·æœ‰åˆ›å»ºæƒé™ï¼Œå¦ä¸€åˆ™è¢«é™åˆ¶ä¸ºweb访问。
+
+具有所需æƒé™è´¦æˆ·çš„创建脚本存放于本程åºçš„“maintenance/oracle/â€ç›®å½•ä¸‹ã€‚请注æ„,使用å—é™åˆ¶çš„å¸æˆ·å°†ç¦ç”¨é»˜è®¤å¸æˆ·çš„所有维护性功能。',
'config-db-install-account' => '用于安装的用户å¸å·',
'config-db-username' => 'æ•°æ®åº“用户å:',
'config-db-password' => 'æ•°æ®åº“密ç ï¼š',
+ 'config-db-password-empty' => '请为新数æ®åº“用户$1输入密ç ã€‚尽管您å¯ä»¥åˆ›å»ºä¸ä½¿ç”¨å¯†ç çš„用户,但这样åšå¹¶ä¸å®‰å…¨ã€‚',
'config-db-install-username' => '请输入在安装过程中用于连接数æ®åº“的用户å。请勿输入MediaWikiå¸å·çš„用户å,请输入您数æ®åº“的用户å。',
'config-db-install-password' => '请输入在安装过程中用于连接数æ®åº“的密ç ã€‚请勿输入MediaWikiå¸å·çš„密ç ï¼Œè¯·è¾“入您数æ®åº“的密ç ã€‚',
'config-db-install-help' => '请输入在安装过程中用于连接数æ®åº“的用户å和密ç ã€‚',
@@ -11961,11 +15851,12 @@ Object caching is not enabled.",
在'''二进制模å¼'''下,MediaWiki会将UTF-8ç¼–ç çš„文本存于数æ®åº“的二进制字段中。相对于MySQLçš„UTF-8模å¼ï¼Œè¿™ç§æ–¹æ³•æ•ˆçŽ‡æ›´é«˜ï¼Œå¹¶å…许您使用全范围的Unicode字符。
-在'''UTF-8模å¼'''下,MySQL将知é“您数æ®ä½¿ç”¨çš„字符集,并能适当地æ供和转æ¢å†…容。但这样åšæ‚¨å°†æ— æ³•åœ¨æ•°æ®åº“中存储[http://zh.wikipedia.org/wiki/基本多文ç§å¹³é¢ 基本多文ç§å¹³é¢]以外的字符。",
+在'''UTF-8模å¼'''下,MySQL将知é“您数æ®ä½¿ç”¨çš„字符集,并能适当地æ供和转æ¢å†…容。但这样åšæ‚¨å°†æ— æ³•åœ¨æ•°æ®åº“中存储[//zh.wikipedia.org/wiki/基本多文ç§å¹³é¢ 基本多文ç§å¹³é¢]以外的字符。",
'config-mysql-old' => '需è¦MySQL $1或更新的版本,您的版本为$2。',
'config-db-port' => 'æ•°æ®åº“端å£ï¼š',
'config-db-schema' => 'MediaWikiçš„æ•°æ®åº“模å¼',
- 'config-db-schema-help' => '上述数æ®åº“模å¼çš„设置通常是正确的。请在有此需求时æ‰æ›´æ”¹å®ƒä»¬ã€‚',
+ 'config-db-schema-help' => '此数æ®åº“模å¼é€šå¸¸æ˜¯æ­£ç¡®çš„,请在有明确需求时æ‰æ”¹åŠ¨ä¹‹ã€‚',
+ 'config-pg-test-error' => "无法连接到数æ®åº“'''$1''':$2",
'config-sqlite-dir' => 'SQLiteæ•°æ®ç›®å½•ï¼š',
'config-sqlite-dir-help' => "SQLite会将所有的数æ®å­˜å‚¨äºŽå•ä¸€æ–‡ä»¶ä¸­ã€‚
@@ -11978,19 +15869,22 @@ Object caching is not enabled.",
请考虑将数æ®åº“统一放置在æŸå¤„,如<code>/var/lib/mediawiki/yourwiki</code>下。",
'config-oracle-def-ts' => '默认表空间:',
'config-oracle-temp-ts' => '临时表空间:',
+ 'config-type-ibm_db2' => 'IBM DB2',
'config-support-info' => 'MediaWiki支æŒä»¥ä¸‹æ•°æ®åº“系统:
$1
如果您在下é¢åˆ—出的数æ®åº“系统中没有找到您希望使用的系统,请根æ®ä¸Šæ–¹é“¾å‘的指引å¯ç”¨æ”¯æŒã€‚',
'config-support-mysql' => '* $1是MediaWiki的首选数æ®åº“,对它的支æŒæœ€ä¸ºå®Œå¤‡ï¼ˆ[http://www.php.net/manual/en/mysql.installation.php 如何将对MySQL的支æŒç¼–译进PHP中])',
- 'config-support-postgres' => '* $1是一ç§æµè¡Œçš„å¼€æºæ•°æ®åº“系统,å¯ä½œä¸ºMySQL的替代([http://www.php.net/manual/en/pgsql.installation.php 如何将对PostgreSQL的支æŒç¼–译进PHP中])',
+ 'config-support-postgres' => '* $1是一ç§æµè¡Œçš„å¼€æºæ•°æ®åº“系统,å¯ä½œä¸ºMySQL的替代([http://www.php.net/manual/en/pgsql.installation.php 如何将对PostgreSQL的支æŒç¼–译进PHP中])。本程åºä¸­å¯èƒ½ä¾ç„¶å­˜åœ¨ä¸€äº›å°è€Œæ˜Žæ˜¾çš„错误,因此并ä¸å»ºè®®åœ¨ç”Ÿäº§çŽ¯å¢ƒä¸­ä½¿ç”¨è¯¥æ•°æ®åº“系统。',
'config-support-sqlite' => '* $1是一ç§è½»é‡çº§çš„æ•°æ®åº“系统,能被良好地支æŒã€‚([http://www.php.net/manual/en/pdo.installation.php 如何将对SQLite的支æŒç¼–译进PHP中],须使用PDO)',
'config-support-oracle' => '* $1是一ç§å•†ç”¨ä¼ä¸šçº§çš„æ•°æ®åº“。([http://www.php.net/manual/en/oci8.installation.php 如何将对OCI8的支æŒç¼–译进PHP中])',
+ 'config-support-ibm_db2' => '* $1是一ç§å•†ç”¨ä¼ä¸šçº§æ•°æ®åº“。',
'config-header-mysql' => 'MySQL设置',
'config-header-postgres' => 'PostgreSQL设置',
'config-header-sqlite' => 'SQLite设置',
'config-header-oracle' => 'Oracle设置',
+ 'config-header-ibm_db2' => 'IBM DB2设置',
'config-invalid-db-type' => '无效的数æ®åº“类型',
'config-missing-db-name' => '您必须为“数æ®åº“å称â€è¾“入内容',
'config-missing-db-host' => '您必须为“数æ®åº“主机â€è¾“入内容',
@@ -12002,6 +15896,8 @@ $1
请检查下列的主机ã€ç”¨æˆ·å和密ç è®¾ç½®åŽé‡è¯•ã€‚',
'config-invalid-schema' => '无效的MediaWikiæ•°æ®åº“模å¼â€œ$1â€ã€‚请åªä½¿ç”¨ASCIIå­—æ¯ï¼ˆa-zã€A-Z)ã€æ•°å­—(0-9)和下划线(_)。',
+ 'config-db-sys-create-oracle' => '安装程åºä»…支æŒä½¿ç”¨SYSDBAå¸æˆ·åˆ›å»ºæ–°å¸æˆ·ã€‚',
+ 'config-db-sys-user-exists-oracle' => '用户å¸æˆ·â€œ$1â€å·²ç»å­˜åœ¨ã€‚SYSDBAä»…å¯ç”¨äºŽåˆ›å»ºæ–°å¸æˆ·ï¼',
'config-postgres-old' => '需è¦PostgreSQL $1或更新的版本,您的版本为$2。',
'config-sqlite-name-help' => '请为您的wiki指定一个用于标识的å称。请勿使用空格或连字å·ï¼Œè¯¥å称将被用作SQLiteçš„æ•°æ®æ–‡ä»¶å。',
'config-sqlite-parent-unwritable-group' => '由于父目录<code><nowiki>$2</nowiki></code>对网页æœåŠ¡å™¨ä¸å¯å†™ï¼Œæ— æ³•åˆ›å»ºæ•°æ®ç›®å½•<code><nowiki>$1</nowiki></code>。
@@ -12047,6 +15943,13 @@ chmod a+w $3</pre>',
'config-mysql-engine' => '存储引擎:',
'config-mysql-innodb' => 'InnoDB',
'config-mysql-myisam' => 'MyISAM',
+ 'config-mysql-myisam-dep' => "'''警告''':您选择了MyISAM作为MySQL的存储引擎,MediaWiki并ä¸æŽ¨è您这么åšï¼Œå› ä¸ºï¼š
+* 它仅能通过表é”定æ¥å‹‰å¼ºæ”¯æŒå¹¶å‘
+* 与其他引擎相比,它更容易被æŸå
+* MediaWiki代ç åº“并ä¸æ€»ä¼šåŽ»å¤„ç†MyISAM
+
+如果您的MySQL程åºæ”¯æŒInnoDB,我们高度推è您使用该引擎替代MyISAM。
+如果您的MySQL程åºä¸æ”¯æŒInnoDB,请考虑å‡çº§ã€‚",
'config-mysql-engine-help' => "'''InnoDB'''通常是最佳选项,因为它对并å‘æ“作有ç€è‰¯å¥½çš„支æŒã€‚
'''MyISAM'''在å•ç”¨æˆ·æˆ–åªè¯»çŽ¯å¢ƒä¸‹å¯èƒ½ä¼šæœ‰æ›´å¿«çš„性能表现。但MyISAMæ•°æ®åº“出错的概率一般è¦å¤§äºŽInnoDBæ•°æ®åº“。",
@@ -12055,7 +15958,8 @@ chmod a+w $3</pre>',
'config-mysql-utf8' => 'UTF-8',
'config-mysql-charset-help' => "在'''二进制模å¼'''下,MediaWiki会将UTF-8ç¼–ç çš„文本存于数æ®åº“的二进制字段中。相对于MySQLçš„UTF-8模å¼ï¼Œè¿™ç§æ–¹æ³•æ•ˆçŽ‡æ›´é«˜ï¼Œå¹¶å…许您使用全范围的Unicode字符。
-在'''UTF-8模å¼'''下,MySQL将知é“您数æ®ä½¿ç”¨çš„字符集,并能适当地æ供和转æ¢å†…容。但这样åšæ‚¨å°†æ— æ³•åœ¨æ•°æ®åº“中存储[http://zh.wikipedia.org/wiki/基本多文ç§å¹³é¢ 基本多文ç§å¹³é¢]以外的字符。",
+在'''UTF-8模å¼'''下,MySQL将知é“您数æ®ä½¿ç”¨çš„字符集,并能适当地æ供和转æ¢å†…容。但这样åšæ‚¨å°†æ— æ³•åœ¨æ•°æ®åº“中存储[//zh.wikipedia.org/wiki/基本多文ç§å¹³é¢ 基本多文ç§å¹³é¢]以外的字符。",
+ 'config-ibm_db2-low-db-pagesize' => "您的DB2æ•°æ®åº“默认表空间的页长(pagesize)ä¸è¶³ã€‚至少需è¦'''32K'''或更大的页长。",
'config-site-name' => 'Wikiçš„å称:',
'config-site-name-help' => '填入的内容会出现在æµè§ˆå™¨çš„标题æ ä»¥åŠå…¶ä»–多处ä½ç½®ä¸­ã€‚',
'config-site-name-blank' => '输入网站的å称。',
@@ -12066,6 +15970,7 @@ chmod a+w $3</pre>',
'config-ns-other-default' => '我的Wiki',
'config-project-namespace-help' => "ä¾å¾ªç»´åŸºç™¾ç§‘å½¢æˆçš„惯例,许多wiki将他们的方针页é¢å­˜æ”¾åœ¨ä¸Žå†…容页é¢ä¸åŒçš„“'''项目å字空间'''â€ä¸­ã€‚所有ä½äºŽè¯¥å字空间下的页é¢æ ‡é¢˜éƒ½ä¼šè¢«å† ä»¥å›ºå®šçš„å‰ç¼€ï¼Œæ‚¨å¯ä»¥åœ¨æ­¤å¤„指定这一å‰ç¼€ã€‚传统上,这一å‰ç¼€åº”与wiki的命åä¿æŒä¸€è‡´ï¼Œä½†è¯·å‹¿åœ¨å…¶ä¸­ä½¿ç”¨æ ‡ç‚¹ç¬¦å·ï¼Œå¦‚“#â€æˆ–“:â€ã€‚",
'config-ns-invalid' => '指定的å字空间“<nowiki>$1</nowiki>â€æ— æ•ˆï¼Œè¯·ä¸ºé¡¹ç›®å字空间指定其他å称。',
+ 'config-ns-conflict' => '指定的å字空间“<nowiki>$1</nowiki>â€ä¸Žé»˜è®¤çš„MediaWikiå字空间冲çªã€‚请指定一个ä¸åŒçš„项目å字空间。',
'config-admin-box' => '管ç†å‘˜å¸å·',
'config-admin-name' => '您的å字:',
'config-admin-password' => '密ç ï¼š',
@@ -12077,12 +15982,13 @@ chmod a+w $3</pre>',
'config-admin-password-same' => '密ç ä¸èƒ½å’Œç”¨æˆ·å相åŒã€‚',
'config-admin-password-mismatch' => '两次输入的密ç å¹¶ä¸ç›¸åŒã€‚',
'config-admin-email' => '电å­é‚®ä»¶åœ°å€ï¼š',
- 'config-admin-email-help' => '在此输入电å­é‚®ä»¶åœ°å€ï¼Œè¿™æ ·æ‚¨å°†å¯ä»¥æ”¶åˆ°æœ¬wiki上的其他用户å‘æ¥çš„电å­é‚®ä»¶ï¼Œå¯ä»¥é‡ç½®æ‚¨çš„密ç ï¼Œå¹¶èƒ½åœ¨ç›‘视列表中的页é¢è¢«æ›´æ”¹æ—¶æ”¶åˆ°é‚®ä»¶é€šçŸ¥ã€‚',
+ 'config-admin-email-help' => '输入电å­é‚®ä»¶åœ°å€åŽï¼Œæ‚¨å¯ä»¥æ”¶åˆ°æ­¤wiki上其他用户å‘æ¥çš„电å­é‚®ä»¶ï¼Œå¹¶èƒ½é‡ç½®æ‚¨çš„密ç ï¼Œè¿˜å¯åœ¨ç›‘视列表中页é¢è¢«æ›´æ”¹æ—¶æ”¶åˆ°é‚®ä»¶é€šçŸ¥ã€‚您å¯ä»¥å°†æ­¤å­—段留空。',
'config-admin-error-user' => '在创建用户å为“<nowiki>$1</nowiki>â€çš„管ç†å‘˜å¸å·æ—¶å‘生内部错误。',
'config-admin-error-password' => '在为管ç†å‘˜â€œ<nowiki>$1</nowiki>â€è®¾ç½®å¯†ç æ—¶å‘生内部错误:<pre>$2</pre>',
'config-admin-error-bademail' => '您输入了无效的电å­é‚®ä»¶åœ°å€ã€‚',
'config-subscribe' => '订阅[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce å‘行公告邮件列表]。',
'config-subscribe-help' => '此低æµé‡çš„邮件列表仅用于å‘行公告,其中包括é‡è¦å®‰å…¨å…¬å‘Šã€‚请订阅该列表以便在新的版本推出时å‡çº§æ‚¨çš„MediaWiki。',
+ 'config-subscribe-noemail' => '您选择了订阅å‘行公告邮件列表,但没有æ供电å­é‚®ä»¶åœ°å€ã€‚请æ供一个电å­é‚®ä»¶åœ°å€ä»¥è®¢é˜…邮件列表。',
'config-almost-done' => '您几乎已ç»å®Œæˆäº†ï¼çŽ°åœ¨æ‚¨å¯ä»¥è·³è¿‡å‰©ä¸‹çš„é…ç½®æµç¨‹å¹¶ç«‹å³å®‰è£…wiki。',
'config-optional-continue' => '多问我一些问题å§ã€‚',
'config-optional-skip' => '我已ç»ä¸è€çƒ¦äº†ï¼Œèµ¶ç´§å®‰è£…我的wiki。',
@@ -12099,20 +16005,21 @@ chmod a+w $3</pre>',
'''{{int:config-profile-fishbowl}}'''模å¼åªå…许获批准的用户编辑,但对公众开放页é¢æµè§ˆï¼ˆåŒ…括历å²è®°å½•ï¼‰ã€‚'''{{int:config-profile-private}}'''则åªå…许获批准的用户æµè§ˆã€ç¼–辑页é¢ã€‚
-安装完æˆåŽï¼Œæ‚¨è¿˜å¯ä»¥å¯¹ç”¨æˆ·æƒé™è¿›è¡Œæ›´å¤šã€æ›´å¤æ‚çš„é…置,å‚è§[http://www.mediawiki.org/wiki/Manual:User_rights 相关的使用手册]。",
+安装完æˆåŽï¼Œæ‚¨è¿˜å¯ä»¥å¯¹ç”¨æˆ·æƒé™è¿›è¡Œæ›´å¤šã€æ›´å¤æ‚çš„é…置,å‚è§[//www.mediawiki.org/wiki/Manual:User_rights 相关的使用手册]。",
'config-license' => '版æƒå’Œè®¸å¯è¯ï¼š',
'config-license-none' => '页脚无许å¯è¯',
'config-license-cc-by-sa' => '知识共享署å-相åŒæ–¹å¼åˆ†äº«',
+ 'config-license-cc-by' => '知识共享署å',
'config-license-cc-by-nc-sa' => '知识共享署å-éžå•†ä¸šæ€§ä½¿ç”¨-相åŒæ–¹å¼å…±äº«',
- 'config-license-gfdl-old' => 'GNU自由文档许å¯è¯ 1.2',
- 'config-license-gfdl-current' => 'GNU自由文档许å¯è¯ 1.3或更高版本',
+ 'config-license-cc-0' => '知识共享Zero(公有领域)',
+ 'config-license-gfdl' => 'GNU自由文档许å¯è¯1.3或更高版本',
'config-license-pd' => '公有领域',
'config-license-cc-choose' => '选择自定义的知识共享许å¯è¯',
'config-license-help' => "许多公共wiki会以[http://freedomdefined.org/Definition 自由许å¯è¯]çš„æ–¹å¼é‡Šæ”¾å‡ºç¼–者的所有贡献。这有助于构建社区的主人ç¿æ„识,并能鼓励长期贡献。对于éžå…¬å…±wiki或公å¸wiki,这并éžå¿…è¦æ¡ä»¶ã€‚
如果您希望使用æ¥è‡ªç»´åŸºç™¾ç§‘的内容,并希望维基百科能接å—å¤åˆ¶è‡ªæ‚¨çš„wiki的内容,请选择'''知识共享署å-相åŒæ–¹å¼å…±äº«'''。
-GNU自由文档许å¯è¯æ˜¯ç»´åŸºç™¾ç§‘曾ç»ä½¿ç”¨è¿‡çš„许å¯è¯ï¼Œå¹¶è¿„今有效。然而,该许å¯è¯çš„一些特性会增加é‡ç”¨æˆ–演绎内容的难度。",
+GNU自由文档许å¯è¯æ˜¯ç»´åŸºç™¾ç§‘曾ç»ä½¿ç”¨è¿‡çš„许å¯è¯ï¼Œå¹¶è¿„今有效。然而,该许å¯è¯éš¾ä»¥ç†è§£ï¼Œå¹¶ä¼šå¢žåŠ é‡ç”¨å†…容的难度。",
'config-email-settings' => '电å­é‚®ä»¶è®¾ç½®',
'config-enable-email' => 'å¯ç”¨å‡ºç«™ç”µå­é‚®ä»¶',
'config-enable-email-help' => '如果您希望使用电å­é‚®ä»¶åŠŸèƒ½ï¼Œè¯·æ­£ç¡®é…ç½®[http://www.php.net/manual/en/mail.configuration.php PHP的邮件设定]。如果您ä¸éœ€è¦ä»»ä½•ç”µå­é‚®ä»¶åŠŸèƒ½ï¼Œè¯·åœ¨æ­¤å¤„ç¦ç”¨å®ƒã€‚',
@@ -12128,17 +16035,17 @@ GNU自由文档许å¯è¯æ˜¯ç»´åŸºç™¾ç§‘曾ç»ä½¿ç”¨è¿‡çš„许å¯è¯ï¼Œå¹¶è¿„今æœ
'config-email-sender-help' => '输入è¦ç”¨æ¥å‘é€å‡ºç«™ç”µå­é‚®ä»¶çš„地å€ï¼Œè¯¥åœ°å€å°†ä¼šæ”¶åˆ°è¢«æ‹’收的邮件。许多邮件æœåŠ¡å™¨è¦æ±‚域å部分必须有效。',
'config-upload-settings' => '图åƒå’Œæ–‡ä»¶ä¸Šä¼ ',
'config-upload-enable' => 'å¯ç”¨æ–‡ä»¶ä¸Šä¼ ',
- 'config-upload-help' => '文件上传å¯èƒ½ä¼šå°†æ‚¨çš„æœåŠ¡å™¨æš´éœ²åœ¨å®‰å…¨é£Žé™©ä¸‹ã€‚有关更多的信æ¯ï¼Œè¯·å‚阅手册的[http://www.mediawiki.org/wiki/Manual:Security 安全部分]。
+ 'config-upload-help' => '文件上传å¯èƒ½ä¼šå°†æ‚¨çš„æœåŠ¡å™¨æš´éœ²åœ¨å®‰å…¨é£Žé™©ä¸‹ã€‚有关更多的信æ¯ï¼Œè¯·å‚阅手册的[//www.mediawiki.org/wiki/Manual:Security 安全部分]。
è¦å¯ç”¨æ–‡ä»¶ä¸Šä¼ ï¼Œè¯·å…ˆå°†MediaWiki根目录下的<code>images</code>å­ç›®å½•æ›´æ”¹ä¸ºå¯¹webæœåŠ¡å™¨å¯å†™ï¼Œç„¶åŽå†å¯ç”¨æ­¤é€‰é¡¹ã€‚',
'config-upload-deleted' => '已删除文件的目录:',
'config-upload-deleted-help' => '指定用于存放被删除文件的目录。ç†æƒ³æƒ…况下,该目录ä¸åº”能通过web访问。',
'config-logo' => '标志URL:',
- 'config-logo-help' => '在MediaWiki的默认外观中,左上角部ä½æœ‰ä¸€å—135x160åƒç´ çš„区域å¯ç”¨äºŽå±•ç¤ºç«™ç‚¹çš„标志。请上传一幅相应大å°çš„图åƒï¼Œå¹¶åœ¨æ­¤è¾“å…¥URL。
+ 'config-logo-help' => '在MediaWiki的默认外观中,左侧æ èœå•ä¹‹ä¸Šæœ‰ä¸€å—135x160åƒç´ çš„标志区。请上传一幅相应大å°çš„图åƒï¼Œå¹¶åœ¨æ­¤è¾“å…¥URL。
如果您ä¸å¸Œæœ›ä½¿ç”¨æ ‡å¿—,请将本处留空。',
'config-instantcommons' => 'å¯ç”¨å³æ—¶å…±äº«èµ„æº',
- 'config-instantcommons-help' => '[http://www.mediawiki.org/wiki/InstantCommons å³æ—¶å…±äº«èµ„æº]å¯ä»¥è®©wiki使用æ¥è‡ª[http://commons.wikimedia.org/ 维基共享资æº]网站的图åƒã€éŸ³é¢‘和其他媒体文件。è¦å¯ç”¨è¯¥åŠŸèƒ½ï¼ŒMediaWiki必须能够访问互è”网。
+ 'config-instantcommons-help' => '[//www.mediawiki.org/wiki/InstantCommons å³æ—¶å…±äº«èµ„æº]å¯ä»¥è®©wiki使用æ¥è‡ª[//commons.wikimedia.org/ 维基共享资æº]网站的图åƒã€éŸ³é¢‘和其他媒体文件。è¦å¯ç”¨è¯¥åŠŸèƒ½ï¼ŒMediaWiki必须能够访问互è”网。
有关此功能的详细信æ¯ï¼ŒåŒ…括如何将其他wiki网站设为具有类似共享功能的方法,请å‚考[http://mediawiki.org/wiki/Manual:$wgForeignFileRepos 手册]。',
'config-cc-error' => '知识共享许å¯è¯æŒ‘选器无法找到结果,请手动输入许å¯è¯çš„å称。',
@@ -12151,25 +16058,40 @@ GNU自由文档许å¯è¯æ˜¯ç»´åŸºç™¾ç§‘曾ç»ä½¿ç”¨è¿‡çš„许å¯è¯ï¼Œå¹¶è¿„今æœ
'config-cache-accel' => 'PHP对象缓存(APCã€eAcceleratorã€XCache或WinCache)',
'config-cache-memcached' => '使用Memcached(需è¦å¦å¤–安装并é…置)',
'config-memcached-servers' => 'MemcachedæœåŠ¡å™¨ï¼š',
- 'config-memcached-help' => '用于Memcachedçš„IP地å€åˆ—表。请以åŠè§’逗å·åˆ†å‰²ï¼Œå¹¶æŒ‡å®šè¦ä½¿ç”¨çš„端å£ï¼ˆä¾‹å¦‚:127.0.0.1:11211, 192.168.1.25:11211)。',
+ 'config-memcached-help' => '用于Memcachedçš„IP地å€åˆ—表。请ä¿æŒæ¯è¡Œä¸€æ¡ï¼Œå¹¶æŒ‡å®šè¦ä½¿ç”¨çš„端å£ã€‚例如:
+127.0.0.1:11211
+192.168.1.25:1234',
+ 'config-memcache-needservers' => '您选择了Memcached作为您的缓存,但并未指定任何æœåŠ¡å™¨ã€‚',
+ 'config-memcache-badip' => '您为Memcached输入了无效的IP地å€ï¼š$1。',
+ 'config-memcache-noport' => '您没有指定MemcachedæœåŠ¡å™¨çš„端å£ï¼š$1。如果您ä¸æ¸…楚端å£æ˜¯å¤šå°‘,默认值为11211。',
+ 'config-memcache-badport' => 'Memcached的端å£å·åº”该在$1到$2之间。',
'config-extensions' => '扩展',
'config-extensions-help' => '已在您的<code>./extensions</code>目录中å‘现下列扩展。
您å¯èƒ½è¦å¯¹å®ƒä»¬è¿›è¡Œé¢å¤–çš„é…置,但您现在å¯ä»¥å¯ç”¨å®ƒä»¬ã€‚',
'config-install-alreadydone' => "'''警告:'''您似乎已ç»å®‰è£…了MediaWiki,并试图é‡æ–°å®‰è£…它。请å‰å¾€ä¸‹ä¸€ä¸ªé¡µé¢ã€‚",
- 'config-install-begin' => '点击继续åŽï¼Œæ‚¨å°†å¼€å§‹å®‰è£…MediaWiki。如果您还想对é…置作一些修改,请点击åŽé€€ã€‚',
+ 'config-install-begin' => '点击“{{int:config-continue}}â€åŽï¼Œæ‚¨å°†å¼€å§‹å®‰è£…MediaWiki。如果您还想对é…置作一些修改,请点击åŽé€€ã€‚',
'config-install-step-done' => '完æˆ',
'config-install-step-failed' => '失败',
'config-install-extensions' => '正在å¯ç”¨æ‰©å±•',
'config-install-database' => '正在é…置数æ®åº“',
+ 'config-install-schema' => '创建架构',
'config-install-pg-schema-not-exist' => 'PostgreSQL 架构ä¸å­˜åœ¨',
'config-install-pg-schema-failed' => '创建数æ®è¡¨å¤±è´¥ã€‚请确ä¿ç”¨æˆ·â€œ$1â€æ‹¥æœ‰å†™å…¥æ¨¡å¼â€œ$2â€çš„æƒé™ã€‚',
'config-install-pg-commit' => '正在æ交更改',
'config-install-pg-plpgsql' => '正在检查PL/pgSQL语言',
'config-pg-no-plpgsql' => '您需è¦ä¸ºæ•°æ®åº“$1安装PL/pgSQL语言',
'config-pg-no-create-privs' => '为安装程åºæŒ‡å®šçš„å¸å·ç¼ºå°‘创建å¸å·çš„æƒé™ã€‚',
+ 'config-pg-not-in-role' => '您指定为web用户的å¸æˆ·å·²ç»å­˜åœ¨ã€‚
+您给本程åºæŒ‡å®šçš„å¸æˆ·ä¸æ˜¯è¶…级用户,也ä¸æ˜¯web用户角色的æˆå‘˜ï¼Œæ‰€ä»¥å®ƒä¸èƒ½åˆ›å»ºweb用户所拥有的对象。
+
+MediaWiki当å‰éœ€è¦ä½¿ç”¨ç”±web用户所有的表。请指定å¦ä¸€ä¸ªwebå¸æˆ·å称,或点击“åŽé€€â€å¹¶æŒ‡å®šå…·æœ‰é€‚当æƒé™çš„安装用户。',
'config-install-user' => '正在创建数æ®åº“用户',
+ 'config-install-user-alreadyexists' => '用户“$1â€å·²å­˜åœ¨',
+ 'config-install-user-create-failed' => '创建用户“$1â€å¤±è´¥ï¼š$2',
'config-install-user-grant-failed' => '授予用户“$1â€æƒé™å¤±è´¥ï¼š$2',
+ 'config-install-user-missing' => '指定的用户“$1â€ä¸å­˜åœ¨ã€‚',
+ 'config-install-user-missing-create' => '指定的用户“$1â€ä¸å­˜åœ¨ã€‚如果您想è¦åˆ›å»ºä¸€å,请点选“创建å¸æˆ·â€ä¸‹é¢çš„å¤é€‰æ¡†ã€‚',
'config-install-tables' => '正在创建数æ®è¡¨',
'config-install-tables-exist' => "'''警告''':MediaWikiçš„æ•°æ®è¡¨ä¼¼ä¹Žå·²ç»å­˜åœ¨ï¼Œè·³è¿‡åˆ›å»ºã€‚",
'config-install-tables-failed' => "'''错误''':创建数æ®è¡¨å‡ºé”™ï¼Œä¸‹ä¸ºé”™è¯¯ä¿¡æ¯ï¼š$1",
@@ -12177,9 +16099,11 @@ GNU自由文档许å¯è¯æ˜¯ç»´åŸºç™¾ç§‘曾ç»ä½¿ç”¨è¿‡çš„许å¯è¯ï¼Œå¹¶è¿„今æœ
'config-install-interwiki-list' => '找ä¸åˆ°æ–‡ä»¶<code>interwiki.list</code>。',
'config-install-interwiki-exists' => "'''警告''':跨wikiæ•°æ®è¡¨ä¼¼ä¹Žå·²æœ‰å†…容,跳过默认列表。",
'config-install-stats' => 'åˆå§‹åŒ–统计',
- 'config-install-keys' => '正在生æˆå¯†é’¥',
+ 'config-install-keys' => '生æˆå¯†é’¥ä¸­',
+ 'config-insecure-keys' => "'''警告''':在安装过程中生æˆçš„{{PLURAL:$2|安全密钥|安全密钥}}($1){{PLURAL:$2|并|并}}ä¸ä¸€å®šå®‰å…¨ã€‚请考虑手动更改{{PLURAL:$2|它|它们}}。",
'config-install-sysop' => '正在创建管ç†å‘˜ç”¨æˆ·å¸å·',
- 'config-install-subscribe-fail' => '无法订阅mediawiki-announce',
+ 'config-install-subscribe-fail' => '无法订阅mediawiki-announce:$1',
+ 'config-install-subscribe-notpossible' => '没有安装cURL,allow_url_fopen也ä¸å¯ç”¨ã€‚',
'config-install-mainpage' => '正在创建显示默认内容的首页',
'config-install-extension-tables' => '正在为已å¯ç”¨æ‰©å±•åˆ›å»ºæ•°æ®è¡¨',
'config-install-mainpage-failed' => '无法æ’入首页:$1',
@@ -12199,6 +16123,13 @@ $3
当本步骤完æˆåŽï¼Œæ‚¨å¯ä»¥ '''[$2 进入您的wiki]'''。",
'config-download-localsettings' => '下载LocalSettings.php',
'config-help' => '帮助',
+ 'mainpagetext' => "'''å·²æˆåŠŸå®‰è£…MediaWiki。'''",
+ 'mainpagedocfooter' => '请查阅[//meta.wikimedia.org/wiki/Help:Contents 用户指å—]以获å–使用本wiki软件的信æ¯ï¼
+
+== 入门 ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置设置列表]
+* [//www.mediawiki.org/wiki/Manual:FAQ/zh-hans MediaWiki常è§é—®é¢˜]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWikiå‘布邮件列表]',
);
/** Traditional Chinese (‪中文(ç¹é«”)‬)
@@ -12264,5 +16195,35 @@ $messages['zh-hant'] = array(
'config-install-step-failed' => '失敗',
'config-install-pg-commit' => 'æ交更改',
'config-help' => '說明',
+ 'mainpagetext' => "'''å·²æˆåŠŸå®‰è£ MediaWiki。'''",
+ 'mainpagedocfooter' => 'è«‹åƒé–±[//meta.wikimedia.org/wiki/Help:Contents 用戶手冊]以ç²å¾—使用此 wiki 軟體的訊æ¯ï¼
+
+== 入門 ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置設定清單]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常見å•é¡Œè§£ç­”]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件清單]',
+);
+
+/** Chinese (Hong Kong) (‪中文(香港)‬)
+ * @author Mark85296341
+ */
+$messages['zh-hk'] = array(
+ 'mainpagedocfooter' => 'è«‹åƒé–±[//meta.wikimedia.org/wiki/Help:Contents 用戶手冊]以ç²å¾—使用此 wiki 軟件的訊æ¯ï¼
+
+== 入門 ==
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置設定清單]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常見å•é¡Œè§£ç­”]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件清單]',
+);
+
+/** Chinese (Taiwan) (‪中文(å°ç£)‬) */
+$messages['zh-tw'] = array(
+ 'mainpagedocfooter' => 'è«‹åƒé–± [//meta.wikimedia.org/wiki/Help:Contents 使用者手冊] 以ç²å¾—使用此 wiki 軟體的訊æ¯ï¼
+
+== 入門 ==
+
+* [//www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置設定清單]
+* [//www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常見å•é¡Œè§£ç­”]
+* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件清單]',
);
diff --git a/includes/installer/Installer.php b/includes/installer/Installer.php
index 9ae5e3f3..8101f7d6 100644
--- a/includes/installer/Installer.php
+++ b/includes/installer/Installer.php
@@ -73,6 +73,7 @@ abstract class Installer {
'postgres',
'oracle',
'sqlite',
+ 'ibm_db2',
);
/**
@@ -98,6 +99,7 @@ abstract class Installer {
'envCheckCache',
'envCheckDiff3',
'envCheckGraphics',
+ 'envCheckServer',
'envCheckPath',
'envCheckExtension',
'envCheckShellLocale',
@@ -130,6 +132,7 @@ abstract class Installer {
'wgDiff3',
'wgImageMagickConvertCommand',
'IP',
+ 'wgServer',
'wgScriptPath',
'wgScriptExtension',
'wgMetaNamespace',
@@ -236,6 +239,10 @@ abstract class Installer {
* @var array
*/
public $licenses = array(
+ 'cc-by' => array(
+ 'url' => 'http://creativecommons.org/licenses/by/3.0/',
+ 'icon' => '{$wgStylePath}/common/images/cc-by.png',
+ ),
'cc-by-sa' => array(
'url' => 'http://creativecommons.org/licenses/by-sa/3.0/',
'icon' => '{$wgStylePath}/common/images/cc-by-sa.png',
@@ -249,14 +256,10 @@ abstract class Installer {
'icon' => '{$wgStylePath}/common/images/cc-0.png',
),
'pd' => array(
- 'url' => 'http://creativecommons.org/licenses/publicdomain/',
+ 'url' => '',
'icon' => '{$wgStylePath}/common/images/public-domain.png',
),
- 'gfdl-old' => array(
- 'url' => 'http://www.gnu.org/licenses/old-licenses/fdl-1.2.html',
- 'icon' => '{$wgStylePath}/common/images/gnu-fdl.png',
- ),
- 'gfdl-current' => array(
+ 'gfdl' => array(
'url' => 'http://www.gnu.org/copyleft/fdl.html',
'icon' => '{$wgStylePath}/common/images/gnu-fdl.png',
),
@@ -310,7 +313,7 @@ abstract class Installer {
* Constructor, always call this from child classes.
*/
public function __construct() {
- global $wgExtensionMessagesFiles, $wgUser, $wgHooks;
+ global $wgExtensionMessagesFiles, $wgUser;
// Disable the i18n cache and LoadBalancer
Language::getLocalisationCache()->disableBackend();
@@ -329,12 +332,14 @@ abstract class Installer {
$this->settings[$var] = $GLOBALS[$var];
}
+ $compiledDBs = array();
foreach ( self::getDBTypes() as $type ) {
$installer = $this->getDBInstaller( $type );
if ( !$installer->isCompiled() ) {
continue;
}
+ $compiledDBs[] = $type;
$defaults = $installer->getGlobalDefaults();
@@ -346,6 +351,7 @@ abstract class Installer {
}
}
}
+ $this->setVar( '_CompiledDBs', $compiledDBs );
$this->parserTitle = Title::newFromText( 'Installer' );
$this->parserOptions = new ParserOptions; // language will be wrong :(
@@ -354,6 +360,8 @@ abstract class Installer {
/**
* Get a list of known DB types.
+ *
+ * @return array
*/
public static function getDBTypes() {
return self::$dbTypes;
@@ -557,6 +565,9 @@ abstract class Installer {
return $html;
}
+ /**
+ * @return ParserOptions
+ */
public function getParserOptions() {
return $this->parserOptions;
}
@@ -573,6 +584,10 @@ abstract class Installer {
/**
* Install step which adds a row to the site_stats table with appropriate
* initial values.
+ *
+ * @param $installer DatabaseInstaller
+ *
+ * @return Status
*/
public function populateSiteStats( DatabaseInstaller $installer ) {
$status = $installer->getConnection();
@@ -609,24 +624,15 @@ abstract class Installer {
protected function envCheckDB() {
global $wgLang;
- $compiledDBs = array();
$allNames = array();
foreach ( self::getDBTypes() as $name ) {
- $db = $this->getDBInstaller( $name );
- $readableName = wfMsg( 'config-type-' . $name );
-
- if ( $db->isCompiled() ) {
- $compiledDBs[] = $name;
- }
- $allNames[] = $readableName;
+ $allNames[] = wfMsg( "config-type-$name" );
}
- $this->setVar( '_CompiledDBs', $compiledDBs );
-
- if ( !$compiledDBs ) {
+ if ( !$this->getVar( '_CompiledDBs' ) ) {
$this->showError( 'config-no-db', $wgLang->commaList( $allNames ) );
- // FIXME: this only works for the web installer!
+ // @todo FIXME: This only works for the web installer!
return false;
}
@@ -834,6 +840,15 @@ abstract class Installer {
}
/**
+ * Environment check for the server hostname.
+ */
+ protected function envCheckServer() {
+ $server = WebRequest::detectServer();
+ $this->showMessage( 'config-using-server', $server );
+ $this->setVar( 'wgServer', $server );
+ }
+
+ /**
* Environment check for setting $IP and $wgScriptPath.
*/
protected function envCheckPath() {
@@ -841,31 +856,15 @@ abstract class Installer {
$IP = dirname( dirname( dirname( __FILE__ ) ) );
$this->setVar( 'IP', $IP );
-
- // PHP_SELF isn't available sometimes, such as when PHP is CGI but
- // cgi.fix_pathinfo is disabled. In that case, fall back to SCRIPT_NAME
- // to get the path to the current script... hopefully it's reliable. SIGH
- if ( !empty( $_SERVER['PHP_SELF'] ) ) {
- $path = $_SERVER['PHP_SELF'];
- } elseif ( !empty( $_SERVER['SCRIPT_NAME'] ) ) {
- $path = $_SERVER['SCRIPT_NAME'];
- } elseif ( $this->getVar( 'wgScriptPath' ) ) {
- // Some kind soul has set it for us already (e.g. debconf)
- return true;
- } else {
- $this->showError( 'config-no-uri' );
- return false;
- }
-
- $uri = preg_replace( '{^(.*)/(mw-)?config.*$}', '$1', $path );
- $this->setVar( 'wgScriptPath', $uri );
+ $this->showMessage( 'config-using-uri', $this->getVar( 'wgServer' ), $this->getVar( 'wgScriptPath' ) );
+ return true;
}
/**
* Environment check for setting the preferred PHP file extension.
*/
protected function envCheckExtension() {
- // FIXME: detect this properly
+ // @todo FIXME: Detect this properly
if ( defined( 'MW_INSTALL_PHP5_EXT' ) ) {
$ext = 'php5';
} else {
@@ -951,10 +950,10 @@ abstract class Installer {
* TODO: document
*/
protected function envCheckUploadsDirectory() {
- global $IP, $wgServer;
+ global $IP;
$dir = $IP . '/images/';
- $url = $wgServer . $this->getVar( 'wgScriptPath' ) . '/images/';
+ $url = $this->getVar( 'wgServer' ) . $this->getVar( 'wgScriptPath' ) . '/images/';
$safe = !$this->dirIsExecutable( $dir, $url );
if ( $safe ) {
@@ -972,7 +971,10 @@ abstract class Installer {
protected function envCheckSuhosinMaxValueLength() {
$maxValueLength = ini_get( 'suhosin.get.max_value_length' );
if ( $maxValueLength > 0 ) {
- $this->showMessage( 'config-suhosin-max-value-length', $maxValueLength );
+ if( $maxValueLength < 1024 ) {
+ # Only warn if the value is below the sane 1024
+ $this->showMessage( 'config-suhosin-max-value-length', $maxValueLength );
+ }
} else {
$maxValueLength = -1;
}
@@ -988,12 +990,12 @@ abstract class Installer {
$c = hexdec($c);
if ($c <= 0x7F) {
return chr($c);
- } else if ($c <= 0x7FF) {
+ } elseif ($c <= 0x7FF) {
return chr(0xC0 | $c >> 6) . chr(0x80 | $c & 0x3F);
- } else if ($c <= 0xFFFF) {
+ } elseif ($c <= 0xFFFF) {
return chr(0xE0 | $c >> 12) . chr(0x80 | $c >> 6 & 0x3F)
. chr(0x80 | $c & 0x3F);
- } else if ($c <= 0x10FFFF) {
+ } elseif ($c <= 0x10FFFF) {
return chr(0xF0 | $c >> 18) . chr(0x80 | $c >> 12 & 0x3F)
. chr(0x80 | $c >> 6 & 0x3F)
. chr(0x80 | $c & 0x3F);
@@ -1168,6 +1170,8 @@ abstract class Installer {
/**
* ParserOptions are constructed before we determined the language, so fix it
+ *
+ * @param $lang Language
*/
public function setParserLanguage( $lang ) {
$this->parserOptions->setTargetLanguage( $lang );
@@ -1193,11 +1197,14 @@ abstract class Installer {
}
$exts = array();
- $dir = $this->getVar( 'IP' ) . '/extensions';
- $dh = opendir( $dir );
+ $extDir = $this->getVar( 'IP' ) . '/extensions';
+ $dh = opendir( $extDir );
while ( ( $file = readdir( $dh ) ) !== false ) {
- if( file_exists( "$dir/$file/$file.php" ) ) {
+ if( !is_dir( "$extDir/$file" ) ) {
+ continue;
+ }
+ if( file_exists( "$extDir/$file/$file.php" ) ) {
$exts[] = $file;
}
}
@@ -1224,10 +1231,12 @@ abstract class Installer {
* @see https://bugzilla.wikimedia.org/show_bug.cgi?id=26857
*/
global $wgAutoloadClasses;
+ $wgAutoloadClasses = array();
+
require( "$IP/includes/DefaultSettings.php" );
foreach( $exts as $e ) {
- require_once( $IP . '/extensions' . "/$e/$e.php" );
+ require_once( "$IP/extensions/$e/$e.php" );
}
$hooksWeWant = isset( $wgHooks['LoadExtensionSchemaUpdates'] ) ?
@@ -1515,4 +1524,14 @@ abstract class Installer {
public function addInstallStep( $callback, $findStep = 'BEGINNING' ) {
$this->extraInstallSteps[$findStep][] = $callback;
}
+
+ /**
+ * Disable the time limit for execution.
+ * Some long-running pages (Install, Upgrade) will want to do this
+ */
+ protected function disableTimeLimit() {
+ wfSuppressWarnings();
+ set_time_limit( 0 );
+ wfRestoreWarnings();
+ }
}
diff --git a/includes/installer/LocalSettingsGenerator.php b/includes/installer/LocalSettingsGenerator.php
index 2d7fd252..a3ab21ea 100644
--- a/includes/installer/LocalSettingsGenerator.php
+++ b/includes/installer/LocalSettingsGenerator.php
@@ -39,7 +39,7 @@ class LocalSettingsGenerator {
$confItems = array_merge(
array(
- 'wgScriptPath', 'wgScriptExtension',
+ 'wgServer', 'wgScriptPath', 'wgScriptExtension',
'wgPasswordSender', 'wgImageMagickConvertCommand', 'wgShellLocale',
'wgLanguageCode', 'wgEnableEmail', 'wgEnableUserEmail', 'wgDiff3',
'wgEnotifUserTalk', 'wgEnotifWatchlist', 'wgEmailAuthentication',
@@ -129,7 +129,7 @@ class LocalSettingsGenerator {
foreach( $this->extensions as $extName ) {
$encExtName = self::escapePhpString( $extName );
- $localSettings .= "require_once( \"extensions/$encExtName/$encExtName.php\" );\n";
+ $localSettings .= "require_once( \"\$IP/extensions/$encExtName/$encExtName.php\" );\n";
}
}
@@ -249,6 +249,9 @@ if ( !defined( 'MEDIAWIKI' ) ) {
\$wgScriptPath = \"{$this->values['wgScriptPath']}\";
\$wgScriptExtension = \"{$this->values['wgScriptExtension']}\";
+## The protocol and server name to use in fully-qualified URLs
+\$wgServer = \"{$this->values['wgServer']}\";
+
## The relative URL path to the skins directory
\$wgStylePath = \"\$wgScriptPath/skins\";
@@ -301,16 +304,12 @@ if ( !defined( 'MEDIAWIKI' ) ) {
## this, if it's not already uncommented:
{$hashedUploads}\$wgHashedUploadDirectory = false;
-## If you have the appropriate support software installed
-## you can enable inline LaTeX equations:
-\$wgUseTeX = false;
-
## Set \$wgCacheDirectory to a writable directory on the web server
## to make your wiki go slightly faster. The directory should not
## be publically accessible from the web.
#\$wgCacheDirectory = \"\$IP/cache\";
-# Site language code, should be one of ./languages/Language(.*).php
+# Site language code, should be one of the list in ./languages/Names.php
\$wgLanguageCode = \"{$this->values['wgLanguageCode']}\";
\$wgSecretKey = \"{$this->values['wgSecretKey']}\";
@@ -326,7 +325,6 @@ if ( !defined( 'MEDIAWIKI' ) ) {
## For attaching licensing metadata to pages, and displaying an
## appropriate copyright notice / icon. GNU Free Documentation
## License and Creative Commons licenses are supported so far.
-{$rightsUrl}\$wgEnableCreativeCommonsRdf = true;
\$wgRightsPage = \"\"; # Set to the title of a wiki page that describes your license/copyright
\$wgRightsUrl = \"{$this->values['wgRightsUrl']}\";
\$wgRightsText = \"{$this->values['wgRightsText']}\";
@@ -336,14 +334,13 @@ if ( !defined( 'MEDIAWIKI' ) ) {
# Path to the GNU diff3 utility. Used for conflict resolution.
\$wgDiff3 = \"{$this->values['wgDiff3']}\";
-{$groupRights}
-
# Query string length limit for ResourceLoader. You should only set this if
# your web server has a query string length limit (then set it to that limit),
# or if you have suhosin.get.max_value_length set in php.ini (then set it to
# that value)
\$wgResourceLoaderMaxQueryLength = {$this->values['wgResourceLoaderMaxQueryLength']};
-";
+
+{$groupRights}";
}
}
diff --git a/includes/installer/MysqlInstaller.php b/includes/installer/MysqlInstaller.php
index 2fe16dcf..3bb8c114 100644
--- a/includes/installer/MysqlInstaller.php
+++ b/includes/installer/MysqlInstaller.php
@@ -42,6 +42,9 @@ class MysqlInstaller extends DatabaseInstaller {
'CREATE TEMPORARY TABLES',
);
+ /**
+ * @return string
+ */
public function getName() {
return 'mysql';
}
@@ -50,14 +53,23 @@ class MysqlInstaller extends DatabaseInstaller {
parent::__construct( $parent );
}
+ /**
+ * @return Bool
+ */
public function isCompiled() {
return self::checkExtension( 'mysql' );
}
+ /**
+ * @return array
+ */
public function getGlobalDefaults() {
return array();
}
+ /**
+ * @return string
+ */
public function getConnectForm() {
return
$this->getTextBox( 'wgDBserver', 'config-db-host', array(), $this->parent->getHelpBox( 'config-db-host-help' ) ) .
@@ -112,6 +124,9 @@ class MysqlInstaller extends DatabaseInstaller {
return $status;
}
+ /**
+ * @return Status
+ */
public function openConnection() {
$status = Status::newGood();
try {
@@ -188,6 +203,8 @@ class MysqlInstaller extends DatabaseInstaller {
/**
* Get a list of storage engines that are available and supported
+ *
+ * @return array
*/
public function getEngines() {
$engines = array( 'InnoDB', 'MyISAM' );
@@ -216,6 +233,8 @@ class MysqlInstaller extends DatabaseInstaller {
/**
* Get a list of character sets that are available and supported
+ *
+ * @return array
*/
public function getCharsets() {
$status = $this->getConnection();
@@ -232,6 +251,8 @@ class MysqlInstaller extends DatabaseInstaller {
/**
* Return true if the install user can create accounts
+ *
+ * @return bool
*/
public function canCreateAccounts() {
$status = $this->getConnection();
@@ -305,6 +326,9 @@ class MysqlInstaller extends DatabaseInstaller {
return true;
}
+ /**
+ * @return string
+ */
public function getSettingsForm() {
if ( $this->canCreateAccounts() ) {
$noCreateMsg = false;
@@ -319,13 +343,33 @@ class MysqlInstaller extends DatabaseInstaller {
if ( !in_array( $this->getVar( '_MysqlEngine' ), $engines ) ) {
$this->setVar( '_MysqlEngine', reset( $engines ) );
}
+
+ $s .= Xml::openElement( 'div', array(
+ 'id' => 'dbMyisamWarning'
+ ));
+ $s .= $this->parent->getWarningBox( wfMsg( 'config-mysql-myisam-dep' ) );
+ $s .= Xml::closeElement( 'div' );
+
+ if( $this->getVar( '_MysqlEngine' ) != 'MyISAM' ) {
+ $s .= Xml::openElement( 'script', array( 'type' => 'text/javascript' ) );
+ $s .= '$(\'#dbMyisamWarning\').hide();';
+ $s .= Xml::closeElement( 'script' );
+ }
+
if ( count( $engines ) >= 2 ) {
$s .= $this->getRadioSet( array(
'var' => '_MysqlEngine',
'label' => 'config-mysql-engine',
'itemLabelPrefix' => 'config-mysql-',
- 'values' => $engines
- ));
+ 'values' => $engines,
+ 'itemAttribs' => array(
+ 'MyISAM' => array(
+ 'class' => 'showHideRadio',
+ 'rel' => 'dbMyisamWarning'),
+ 'InnoDB' => array(
+ 'class' => 'hideShowRadio',
+ 'rel' => 'dbMyisamWarning')
+ )));
$s .= $this->parent->getHelpBox( 'config-mysql-engine-help' );
}
@@ -349,6 +393,9 @@ class MysqlInstaller extends DatabaseInstaller {
return $s;
}
+ /**
+ * @return Status
+ */
public function submitSettingsForm() {
$this->setVarsFromRequest( array( '_MysqlEngine', '_MysqlCharset' ) );
$status = $this->submitWebUserBox();
@@ -404,6 +451,9 @@ class MysqlInstaller extends DatabaseInstaller {
$this->parent->addInstallStep( $callback, 'tables' );
}
+ /**
+ * @return Status
+ */
public function setupDatabase() {
$status = $this->getConnection();
if ( !$status->isOK() ) {
@@ -419,6 +469,9 @@ class MysqlInstaller extends DatabaseInstaller {
return $status;
}
+ /**
+ * @return Status
+ */
public function setupUser() {
$dbUser = $this->getVar( 'wgDBuser' );
if( $dbUser == $this->getVar( '_InstallUser' ) ) {
@@ -499,7 +552,6 @@ class MysqlInstaller extends DatabaseInstaller {
}
// Try to grant to all the users we know exist or we were able to create
- $escPass = $this->db->addQuotes( $password );
$dbAllTables = $this->db->addIdentifierQuotes( $dbName ) . '.*';
foreach( $grantableNames as $name ) {
try {
@@ -540,7 +592,7 @@ class MysqlInstaller extends DatabaseInstaller {
} catch( DBQueryError $dqe ) {
return false;
}
-
+
}
/**
@@ -562,6 +614,8 @@ class MysqlInstaller extends DatabaseInstaller {
/**
* Get variables to substitute into tables.sql and the SQL patch files.
+ *
+ * @return array
*/
public function getSchemaVars() {
return array(
diff --git a/includes/installer/MysqlUpdater.php b/includes/installer/MysqlUpdater.php
index 9bbda5db..761d2338 100644
--- a/includes/installer/MysqlUpdater.php
+++ b/includes/installer/MysqlUpdater.php
@@ -163,18 +163,25 @@ class MysqlUpdater extends DatabaseUpdater {
// 1.17
array( 'addTable', 'iwlinks', 'patch-iwlinks.sql' ),
array( 'addIndex', 'iwlinks', 'iwl_prefix_title_from', 'patch-rename-iwl_prefix.sql' ),
- array( 'addField', 'updatelog', 'ul_value', 'patch-ul_value.sql' ),
+ array( 'addField', 'updatelog', 'ul_value', 'patch-ul_value.sql' ),
array( 'addField', 'interwiki', 'iw_api', 'patch-iw_api_and_wikiid.sql' ),
- array( 'dropIndex', 'iwlinks', 'iwl_prefix', 'patch-kill-iwl_prefix.sql' ),
- array( 'dropIndex', 'iwlinks', 'iwl_prefix_from_title', 'patch-kill-iwl_pft.sql' ),
- array( 'addField', 'categorylinks', 'cl_collation', 'patch-categorylinks-better-collation.sql' ),
+ array( 'dropIndex', 'iwlinks', 'iwl_prefix', 'patch-kill-iwl_prefix.sql' ),
+ array( 'dropIndex', 'iwlinks', 'iwl_prefix_from_title', 'patch-kill-iwl_pft.sql' ),
+ array( 'addField', 'categorylinks', 'cl_collation', 'patch-categorylinks-better-collation.sql' ),
array( 'doClFieldsUpdate' ),
array( 'doCollationUpdate' ),
array( 'addTable', 'msg_resource', 'patch-msg_resource.sql' ),
array( 'addTable', 'module_deps', 'patch-module_deps.sql' ),
- array( 'dropIndex', 'archive', 'ar_page_revid', 'patch-archive_kill_ar_page_revid.sql' ),
- array( 'addIndex', 'archive', 'ar_revid', 'patch-archive_ar_revid.sql' ),
+ array( 'dropIndex', 'archive', 'ar_page_revid', 'patch-archive_kill_ar_page_revid.sql' ),
+ array( 'addIndex', 'archive', 'ar_revid', 'patch-archive_ar_revid.sql' ),
array( 'doLangLinksLengthUpdate' ),
+
+ // 1.18
+ array( 'doUserNewTalkTimestampNotNull' ),
+ array( 'addIndex', 'user', 'user_email', 'patch-user_email_index.sql' ),
+ array( 'modifyField', 'user_properties', 'up_property', 'patch-up_property.sql' ),
+ array( 'addTable', 'uploadstash', 'patch-uploadstash.sql' ),
+ array( 'addTable', 'user_former_groups', 'patch-user_former_groups.sql'),
);
}
@@ -246,6 +253,9 @@ class MysqlUpdater extends DatabaseUpdater {
*/
protected function doIndexUpdate() {
$meta = $this->db->fieldInfo( 'recentchanges', 'rc_timestamp' );
+ if ( $meta === false ) {
+ throw new MWException( 'Missing rc_timestamp field of recentchanges table. Should not happen.' );
+ }
if ( $meta->isMultipleKey() ) {
$this->output( "...indexes seem up to 20031107 standards\n" );
return;
@@ -649,7 +659,7 @@ class MysqlUpdater extends DatabaseUpdater {
foreach ( $res as $row ) {
$count = ( $count + 1 ) % 100;
if ( $count == 0 ) {
- wfWaitForSlaves( 10 );
+ wfWaitForSlaves();
}
$this->db->insert( 'templatelinks',
array(
@@ -829,4 +839,16 @@ class MysqlUpdater extends DatabaseUpdater {
$this->output( "...ll_lang is up-to-date.\n" );
}
}
+
+ protected function doUserNewTalkTimestampNotNull() {
+ $info = $this->db->fieldInfo( 'user_newtalk', 'user_last_timestamp' );
+ if ( $info->isNullable() ) {
+ $this->output( "...user_last_timestamp is already nullable.\n" );
+ return;
+ }
+
+ $this->output( "Making user_last_timestamp nullable... " );
+ $this->applyPatch( 'patch-user-newtalk-timestamp-null.sql' );
+ $this->output( "done.\n" );
+ }
}
diff --git a/includes/installer/OracleInstaller.php b/includes/installer/OracleInstaller.php
index 8c3e40e1..175baf0b 100644
--- a/includes/installer/OracleInstaller.php
+++ b/includes/installer/OracleInstaller.php
@@ -27,7 +27,7 @@ class OracleInstaller extends DatabaseInstaller {
'_OracleTempTS' => 'TEMP',
'_InstallUser' => 'SYSDBA',
);
-
+
public $minimumVersion = '9.0.1'; // 9iR1
protected $connError = null;
@@ -92,7 +92,7 @@ class OracleInstaller extends DatabaseInstaller {
// Scenario 1: Install with a manually created account
$status = $this->getConnection();
if ( !$status->isOK() ) {
- if ( $this->connError == 28009 ) {
+ if ( $this->connError == 28009 ) {
// _InstallUser seems to be a SYSDBA
// Scenario 2: Create user with SYSDBA and install with new user
$status = $this->submitWebUserBox();
@@ -199,7 +199,7 @@ class OracleInstaller extends DatabaseInstaller {
// normaly only SYSDBA users can create accounts
$status = $this->openSYSDBAConnection();
if ( !$status->isOK() ) {
- if ( $this->connError == 1031 ) {
+ if ( $this->connError == 1031 ) {
// insufficient privileges (looks like a normal user)
$status = $this->openConnection();
if ( !$status->isOK() ) {
diff --git a/includes/installer/OracleUpdater.php b/includes/installer/OracleUpdater.php
index 7664a418..fb8032f5 100644
--- a/includes/installer/OracleUpdater.php
+++ b/includes/installer/OracleUpdater.php
@@ -13,15 +13,31 @@
* @since 1.17
*/
class OracleUpdater extends DatabaseUpdater {
+
+ /**
+ * Handle to the database subclass
+ *
+ * @var DatabaseOracle
+ */
+ protected $db;
+
protected function getCoreUpdateList() {
return array(
- // 1.16
+ // 1.17
array( 'doNamespaceDefaults' ),
array( 'doFKRenameDeferr' ),
array( 'doFunctions17' ),
array( 'doSchemaUpgrade17' ),
array( 'doInsertPage0' ),
array( 'doRemoveNotNullEmptyDefaults' ),
+ array( 'addTable', 'user_former_groups', 'patch-user_former_groups.sql' ),
+
+ //1.18
+ array( 'addIndex', 'user', 'i02', 'patch-user_email_index.sql' ),
+ array( 'modifyField', 'user_properties', 'up_property', 'patch-up_property.sql' ),
+ array( 'addTable', 'uploadstash', 'patch-uploadstash.sql' ),
+ array( 'doRebuildDuplicateFunction' ),
+
);
}
@@ -74,7 +90,7 @@ class OracleUpdater extends DatabaseUpdater {
protected function doSchemaUpgrade17() {
$this->output( "Updating schema to 17 ... " );
// check if iwlinks table exists which was added in 1.17
- if ( $this->db->tableExists( $this->db->tableName( 'iwlinks' ) ) ) {
+ if ( $this->db->tableExists( 'iwlinks' ) ) {
$this->output( "schema seem to be up to date.\n" );
return;
}
@@ -90,7 +106,7 @@ class OracleUpdater extends DatabaseUpdater {
$row = array(
'page_id' => 0,
'page_namespace' => 0,
- 'page_title' => ' ',
+ 'page_title' => ' ',
'page_counter' => 0,
'page_is_redirect' => 0,
'page_is_new' => 0,
@@ -119,9 +135,20 @@ class OracleUpdater extends DatabaseUpdater {
}
/**
+ * rebuilding of the function that duplicates tables for tests
+ */
+ protected function doRebuildDuplicateFunction() {
+ $this->output( "Rebuilding duplicate function ... " );
+ $this->applyPatch( 'patch_rebuild_dupfunc.sql', false );
+ $this->output( "ok\n" );
+ }
+
+ /**
* Overload: after this action field info table has to be rebuilt
+ *
+ * @param $what array
*/
- public function doUpdates( $what = array( 'core', 'extensions', 'purge' ) ) {
+ public function doUpdates( $what = array( 'core', 'extensions', 'purge', 'stats' ) ) {
parent::doUpdates( $what );
$this->db->query( 'BEGIN fill_wiki_info; END;' );
diff --git a/includes/installer/PhpBugTests.php b/includes/installer/PhpBugTests.php
index 9cafd150..bb1f7d11 100644
--- a/includes/installer/PhpBugTests.php
+++ b/includes/installer/PhpBugTests.php
@@ -47,7 +47,7 @@ class PhpXmlBugTester {
/**
* Test for PHP bug #50394 (PHP 5.3.x conversion to null only, not 5.2.x)
- * @see http://bugs.php.net/bug.php?id=45996
+ * @see http://bugs.php.net/bug.php?id=50394
* @ingroup PHPBugTests
*/
class PhpRefCallBugTester {
diff --git a/includes/installer/PostgresInstaller.php b/includes/installer/PostgresInstaller.php
index 20575b62..7c4a6a80 100644
--- a/includes/installer/PostgresInstaller.php
+++ b/includes/installer/PostgresInstaller.php
@@ -115,7 +115,6 @@ class PostgresInstaller extends DatabaseInstaller {
protected function openConnectionWithParams( $user, $password, $dbName ) {
$status = Status::newGood();
try {
- $GLOBALS['wgDBport'] = $this->getVar( 'wgDBport' );
$db = new DatabasePostgres(
$this->getVar( 'wgDBserver' ),
$user,
@@ -130,7 +129,7 @@ class PostgresInstaller extends DatabaseInstaller {
/**
* Get a special type of connection
- * @param $type See openPgConnection() for details.
+ * @param $type string See openPgConnection() for details.
* @return Status
*/
protected function getPgConnection( $type ) {
@@ -152,35 +151,35 @@ class PostgresInstaller extends DatabaseInstaller {
* Get a connection of a specific PostgreSQL-specific type. Connections
* of a given type are cached.
*
- * PostgreSQL lacks cross-database operations, so after the new database is
- * created, you need to make a separate connection to connect to that
- * database and add tables to it.
+ * PostgreSQL lacks cross-database operations, so after the new database is
+ * created, you need to make a separate connection to connect to that
+ * database and add tables to it.
*
- * New tables are owned by the user that creates them, and MediaWiki's
- * PostgreSQL support has always assumed that the table owner will be
- * $wgDBuser. So before we create new tables, we either need to either
- * connect as the other user or to execute a SET ROLE command. Using a
- * separate connection for this allows us to avoid accidental cross-module
+ * New tables are owned by the user that creates them, and MediaWiki's
+ * PostgreSQL support has always assumed that the table owner will be
+ * $wgDBuser. So before we create new tables, we either need to either
+ * connect as the other user or to execute a SET ROLE command. Using a
+ * separate connection for this allows us to avoid accidental cross-module
* dependencies.
*
* @param $type The type of connection to get:
* - create-db: A connection for creating DBs, suitable for pre-
* installation.
- * - create-schema: A connection to the new DB, for creating schemas and
+ * - create-schema: A connection to the new DB, for creating schemas and
* other similar objects in the new DB.
* - create-tables: A connection with a role suitable for creating tables.
*
- * @return A Status object. On success, a connection object will be in the
+ * @return A Status object. On success, a connection object will be in the
* value member.
*/
protected function openPgConnection( $type ) {
switch ( $type ) {
case 'create-db':
return $this->openConnectionToAnyDB(
- $this->getVar( '_InstallUser' ),
+ $this->getVar( '_InstallUser' ),
$this->getVar( '_InstallPassword' ) );
case 'create-schema':
- return $this->openConnectionWithParams(
+ return $this->openConnectionWithParams(
$this->getVar( '_InstallUser' ),
$this->getVar( '_InstallPassword' ),
$this->getVar( 'wgDBname' ) );
@@ -208,7 +207,6 @@ class PostgresInstaller extends DatabaseInstaller {
$status = Status::newGood();
foreach ( $dbs as $db ) {
try {
- $GLOBALS['wgDBport'] = $this->getVar( 'wgDBport' );
$conn = new DatabasePostgres(
$this->getVar( 'wgDBserver' ),
$user,
@@ -238,7 +236,7 @@ class PostgresInstaller extends DatabaseInstaller {
$conn = $status->value;
$superuser = $this->getVar( '_InstallUser' );
- $row = $conn->selectRow( '"pg_catalog"."pg_roles"', '*',
+ $row = $conn->selectRow( '"pg_catalog"."pg_roles"', '*',
array( 'rolname' => $superuser ), __METHOD__ );
return $row;
}
@@ -256,7 +254,7 @@ class PostgresInstaller extends DatabaseInstaller {
if ( !$perms ) {
return false;
}
- return $perms->rolsuper === 't';
+ return $perms->rolsuper === 't';
}
public function getSettingsForm() {
@@ -313,15 +311,15 @@ class PostgresInstaller extends DatabaseInstaller {
}
// Existing web account. Test the connection.
- $status = $this->openConnectionToAnyDB(
+ $status = $this->openConnectionToAnyDB(
$this->getVar( 'wgDBuser' ),
$this->getVar( 'wgDBpassword' ) );
if ( !$status->isOK() ) {
return $status;
}
- // The web user is conventionally the table owner in PostgreSQL
- // installations. Make sure the install user is able to create
+ // The web user is conventionally the table owner in PostgreSQL
+ // installations. Make sure the install user is able to create
// objects on behalf of the web user.
if ( $same || $this->canCreateObjectsForWebUser() ) {
return Status::newGood();
@@ -446,14 +444,14 @@ class PostgresInstaller extends DatabaseInstaller {
try {
$conn->query( "CREATE SCHEMA $safeschema AUTHORIZATION $safeuser" );
} catch ( DBQueryError $e ) {
- return Status::newFatal( 'config-install-pg-schema-failed',
+ return Status::newFatal( 'config-install-pg-schema-failed',
$this->getVar( '_InstallUser' ), $schema );
}
}
// If we created a user, alter it now to search the new schema by default
if ( $this->getVar( '_CreateDBAccount' ) ) {
- $conn->query( "ALTER ROLE $safeuser SET search_path = $safeschema, public",
+ $conn->query( "ALTER ROLE $safeuser SET search_path = $safeschema, public",
__METHOD__ );
}
@@ -489,8 +487,8 @@ class PostgresInstaller extends DatabaseInstaller {
// Create the user
try {
$sql = "CREATE ROLE $safeuser NOCREATEDB LOGIN PASSWORD $safepass";
-
- // If the install user is not a superuser, we need to make the install
+
+ // If the install user is not a superuser, we need to make the install
// user a member of the new user's group, so that the install user will
// be able to create a schema and other objects on behalf of the new user.
if ( !$this->isSuperUser() ) {
@@ -499,7 +497,7 @@ class PostgresInstaller extends DatabaseInstaller {
$conn->query( $sql, __METHOD__ );
} catch ( DBQueryError $e ) {
- return Status::newFatal( 'config-install-user-create-failed',
+ return Status::newFatal( 'config-install-user-create-failed',
$this->getVar( 'wgDBuser' ), $e->getMessage() );
}
}
@@ -545,7 +543,7 @@ class PostgresInstaller extends DatabaseInstaller {
$status->fatal( 'config-install-pg-schema-not-exist' );
return $status;
}
- $error = $conn->sourceFile( $conn->getSchema() );
+ $error = $conn->sourceFile( $conn->getSchemaPath() );
if( $error !== true ) {
$conn->reportQueryError( $error, 0, '', __METHOD__ );
$conn->rollback( __METHOD__ );
@@ -561,7 +559,7 @@ class PostgresInstaller extends DatabaseInstaller {
}
public function setupPLpgSQL() {
- // Connect as the install user, since it owns the database and so is
+ // Connect as the install user, since it owns the database and so is
// the user that needs to run "CREATE LANGAUGE"
$status = $this->getPgConnection( 'create-schema' );
if ( !$status->isOK() ) {
@@ -576,7 +574,7 @@ class PostgresInstaller extends DatabaseInstaller {
return Status::newGood();
}
- // plpgsql is not installed, but if we have a pg_pltemplate table, we
+ // plpgsql is not installed, but if we have a pg_pltemplate table, we
// should be able to create it
$exists = $conn->selectField(
array( '"pg_catalog"."pg_class"', '"pg_catalog"."pg_namespace"' ),
diff --git a/includes/installer/PostgresUpdater.php b/includes/installer/PostgresUpdater.php
index 272638ce..2c9c0595 100644
--- a/includes/installer/PostgresUpdater.php
+++ b/includes/installer/PostgresUpdater.php
@@ -130,8 +130,6 @@ class PostgresUpdater extends DatabaseUpdater {
array( 'changeField', 'ipblocks', 'ipb_block_email', 'smallint', "CASE WHEN ipb_block_email=' ' THEN 0 ELSE ipb_block_email::smallint END DEFAULT 0" ),
array( 'changeField', 'ipblocks', 'ipb_address', 'text', 'ipb_address::text' ),
array( 'changeField', 'ipblocks', 'ipb_deleted', 'smallint', 'ipb_deleted::smallint DEFAULT 0' ),
- array( 'changeField', 'math', 'math_inputhash', 'bytea', "decode(math_inputhash,'escape')" ),
- array( 'changeField', 'math', 'math_outputhash', 'bytea', "decode(math_outputhash,'escape')" ),
array( 'changeField', 'mwuser', 'user_token', 'text', '' ),
array( 'changeField', 'mwuser', 'user_email_token', 'text', '' ),
array( 'changeField', 'objectcache', 'keyname', 'text', '' ),
diff --git a/includes/installer/SqliteInstaller.php b/includes/installer/SqliteInstaller.php
index 2edb3d9b..144e710d 100644
--- a/includes/installer/SqliteInstaller.php
+++ b/includes/installer/SqliteInstaller.php
@@ -14,6 +14,11 @@
*/
class SqliteInstaller extends DatabaseInstaller {
+ /**
+ * @var DatabaseSqlite
+ */
+ public $db;
+
protected $globalNames = array(
'wgDBname',
'wgSQLiteDataDir',
@@ -45,8 +50,12 @@ class SqliteInstaller extends DatabaseInstaller {
$this->getTextBox( 'wgDBname', 'config-db-name', array(), $this->parent->getHelpBox( 'config-sqlite-name-help' ) );
}
- /*
+ /**
* Safe wrapper for PHP's realpath() that fails gracefully if it's unable to canonicalize the path.
+ *
+ * @param $path string
+ *
+ * @return string
*/
private static function realpath( $path ) {
$result = realpath( $path );
@@ -56,14 +65,16 @@ class SqliteInstaller extends DatabaseInstaller {
return $result;
}
+ /**
+ * @return Status
+ */
public function submitConnectForm() {
$this->setVarsFromRequest( array( 'wgSQLiteDataDir', 'wgDBname' ) );
# Try realpath() if the directory already exists
$dir = self::realpath( $this->getVar( 'wgSQLiteDataDir' ) );
$result = self::dataDirOKmaybeCreate( $dir, true /* create? */ );
- if ( $result->isOK() )
- {
+ if ( $result->isOK() ) {
# Try expanding again in case we've just created it
$dir = self::realpath( $dir );
$this->setVar( 'wgSQLiteDataDir', $dir );
@@ -71,6 +82,11 @@ class SqliteInstaller extends DatabaseInstaller {
return $result;
}
+ /**
+ * @param $dir
+ * @param $create bool
+ * @return Status
+ */
private static function dataDirOKmaybeCreate( $dir, $create = false ) {
if ( !is_dir( $dir ) ) {
if ( !is_writable( dirname( $dir ) ) ) {
@@ -103,6 +119,9 @@ class SqliteInstaller extends DatabaseInstaller {
return Status::newGood();
}
+ /**
+ * @return Status
+ */
public function openConnection() {
global $wgSQLiteDataDir;
@@ -110,7 +129,7 @@ class SqliteInstaller extends DatabaseInstaller {
$dir = $this->getVar( 'wgSQLiteDataDir' );
$dbName = $this->getVar( 'wgDBname' );
try {
- # FIXME: need more sensible constructor parameters, e.g. single associative array
+ # @todo FIXME: Need more sensible constructor parameters, e.g. single associative array
# Setting globals kind of sucks
$wgSQLiteDataDir = $dir;
$db = new DatabaseSqlite( false, false, false, $dbName );
@@ -121,6 +140,9 @@ class SqliteInstaller extends DatabaseInstaller {
return $status;
}
+ /**
+ * @return bool
+ */
public function needsUpgrade() {
$dir = $this->getVar( 'wgSQLiteDataDir' );
$dbName = $this->getVar( 'wgDBname' );
@@ -133,6 +155,9 @@ class SqliteInstaller extends DatabaseInstaller {
return parent::needsUpgrade();
}
+ /**
+ * @return Status
+ */
public function setupDatabase() {
$dir = $this->getVar( 'wgSQLiteDataDir' );
@@ -162,11 +187,18 @@ class SqliteInstaller extends DatabaseInstaller {
return $this->getConnection();
}
+ /**
+ * @return Staus
+ */
public function createTables() {
$status = parent::createTables();
return $this->setupSearchIndex( $status );
}
+ /**
+ * @param $status Status
+ * @return Status
+ */
public function setupSearchIndex( &$status ) {
global $IP;
@@ -181,6 +213,9 @@ class SqliteInstaller extends DatabaseInstaller {
return $status;
}
+ /**
+ * @return string
+ */
public function getLocalSettings() {
$dir = LocalSettingsGenerator::escapePhpString( $this->getVar( 'wgSQLiteDataDir' ) );
return
diff --git a/includes/installer/SqliteUpdater.php b/includes/installer/SqliteUpdater.php
index d1a6c20b..6b819f8e 100644
--- a/includes/installer/SqliteUpdater.php
+++ b/includes/installer/SqliteUpdater.php
@@ -52,6 +52,13 @@ class SqliteUpdater extends DatabaseUpdater {
array( 'doCollationUpdate' ),
array( 'addTable', 'msg_resource', 'patch-msg_resource.sql' ),
array( 'addTable', 'module_deps', 'patch-module_deps.sql' ),
+ array( 'dropIndex', 'archive', 'ar_page_revid', 'patch-archive_kill_ar_page_revid.sql' ),
+ array( 'addIndex', 'archive', 'ar_revid', 'patch-archive_ar_revid.sql' ),
+
+ // 1.18
+ array( 'addIndex', 'user', 'user_email', 'patch-user_email_index.sql' ),
+ array( 'addTable', 'uploadstash', 'patch-uploadstash.sql' ),
+ array( 'addTable', 'user_former_groups', 'patch-user_former_groups.sql'),
);
}
diff --git a/includes/installer/WebInstaller.php b/includes/installer/WebInstaller.php
index b75db74e..40726437 100644
--- a/includes/installer/WebInstaller.php
+++ b/includes/installer/WebInstaller.php
@@ -247,6 +247,10 @@ class WebInstaller extends Installer {
$this->currentPageName = $page->getName();
$this->startPageWrapper( $pageName );
+ if( $page->isSlow() ) {
+ $this->disableTimeLimit();
+ }
+
$result = $page->execute();
$this->endPageWrapper();
@@ -300,6 +304,8 @@ class WebInstaller extends Installer {
/**
* Start the PHP session. This may be called before execute() to start the PHP session.
+ *
+ * @return bool
*/
public function startSession() {
if( wfIniGetBool( 'session.auto_start' ) || session_id() ) {
@@ -325,6 +331,8 @@ class WebInstaller extends Installer {
*
* This is used by mw-config/index.php to prevent multiple installations of MW
* on the same cookie domain from interfering with each other.
+ *
+ * @return string
*/
public function getFingerprint() {
// Get the base URL of the installation
@@ -390,7 +398,7 @@ class WebInstaller extends Installer {
/**
* Get a URL for submission back to the same script.
*
- * @param $query: Array
+ * @param $query array
* @return string
*/
public function getUrl( $query = array() ) {
@@ -412,9 +420,6 @@ class WebInstaller extends Installer {
* @return WebInstallerPage
*/
public function getPageByName( $pageName ) {
- // Totally lame way to force autoload of WebInstallerPage.php
- class_exists( 'WebInstallerPage' );
-
$pageClass = 'WebInstaller_' . $pageName;
return new $pageClass( $this );
@@ -587,6 +592,8 @@ class WebInstaller extends Installer {
* Get HTML for an error box with an icon.
*
* @param $text String: wikitext, get this with wfMsgNoTrans()
+ *
+ * @return string
*/
public function getErrorBox( $text ) {
return $this->getInfoBox( $text, 'critical-32.png', 'config-error-box' );
@@ -596,6 +603,8 @@ class WebInstaller extends Installer {
* Get HTML for a warning box with an icon.
*
* @param $text String: wikitext, get this with wfMsgNoTrans()
+ *
+ * @return string
*/
public function getWarningBox( $text ) {
return $this->getInfoBox( $text, 'warning-32.png', 'config-warning-box' );
@@ -607,29 +616,21 @@ class WebInstaller extends Installer {
* @param $text String: wikitext, get this with wfMsgNoTrans()
* @param $icon String: icon name, file in skins/common/images
* @param $class String: additional class name to add to the wrapper div
+ *
+ * @return string
*/
- public function getInfoBox( $text, $icon = 'info-32.png', $class = false ) {
- $s =
- "<div class=\"config-info $class\">\n" .
- "<div class=\"config-info-left\">\n" .
- Html::element( 'img',
- array(
- 'src' => '../skins/common/images/' . $icon,
- 'alt' => wfMsg( 'config-information' ),
- )
- ) . "\n" .
- "</div>\n" .
- "<div class=\"config-info-right\">\n" .
- $this->parse( $text, true ) . "\n" .
- "</div>\n" .
- "<div style=\"clear: left;\"></div>\n" .
- "</div>\n";
- return $s;
+ public function getInfoBox( $text, $icon = false, $class = false ) {
+ $text = $this->parse( $text, true );
+ $icon = ( $icon == false ) ? '../skins/common/images/info-32.png' : '../skins/common/images/'.$icon;
+ $alt = wfMsg( 'config-information' );
+ return Html::infoBox( $text, $icon, $alt, $class, false );
}
/**
* Get small text indented help for a preceding form field.
* Parameters like wfMsg().
+ *
+ * @return string
*/
public function getHelpBox( $msg /*, ... */ ) {
$args = func_get_args();
@@ -685,6 +686,8 @@ class WebInstaller extends Installer {
/**
* Label a control by wrapping a config-input div around it and putting a
* label before it.
+ *
+ * @return string
*/
public function label( $msg, $forId, $contents, $helpData = "" ) {
if ( strval( $msg ) == '' ) {
@@ -724,6 +727,8 @@ class WebInstaller extends Installer {
* controlName: The name for the input element (optional)
* value: The current value of the variable (optional)
* help: The html for the help text (optional)
+ *
+ * @return string
*/
public function getTextBox( $params ) {
if ( !isset( $params['controlName'] ) ) {
@@ -769,6 +774,8 @@ class WebInstaller extends Installer {
* controlName: The name for the input element (optional)
* value: The current value of the variable (optional)
* help: The html for the help text (optional)
+ *
+ * @return string
*/
public function getTextArea( $params ) {
if ( !isset( $params['controlName'] ) ) {
@@ -816,6 +823,8 @@ class WebInstaller extends Installer {
* controlName: The name for the input element (optional)
* value: The current value of the variable (optional)
* help: The html for the help text (optional)
+ *
+ * @return string
*/
public function getPasswordBox( $params ) {
if ( !isset( $params['value'] ) ) {
@@ -843,6 +852,8 @@ class WebInstaller extends Installer {
* controlName: The name for the input element (optional)
* value: The current value of the variable (optional)
* help: The html for the help text (optional)
+ *
+ * @return string
*/
public function getCheckBox( $params ) {
if ( !isset( $params['controlName'] ) ) {
@@ -896,6 +907,8 @@ class WebInstaller extends Installer {
* controlName: The name for the input element (optional)
* value: The current value of the variable (optional)
* help: The html for the help text (optional)
+ *
+ * @return string
*/
public function getRadioSet( $params ) {
if ( !isset( $params['controlName'] ) ) {
@@ -948,6 +961,8 @@ class WebInstaller extends Installer {
/**
* Output an error or warning box using a Status object.
+ *
+ * @param $status Status
*/
public function showStatusBox( $status ) {
if( !$status->isGood() ) {
@@ -970,6 +985,8 @@ class WebInstaller extends Installer {
*
* @param $varNames Array
* @param $prefix String: the prefix added to variables to obtain form names
+ *
+ * @return array
*/
public function setVarsFromRequest( $varNames, $prefix = 'config_' ) {
$newValues = array();
@@ -995,6 +1012,8 @@ class WebInstaller extends Installer {
/**
* Helper for Installer::docLink()
+ *
+ * @return string
*/
protected function getDocUrl( $page ) {
$url = "{$_SERVER['PHP_SELF']}?page=" . urlencode( $page );
@@ -1008,6 +1027,8 @@ class WebInstaller extends Installer {
/**
* Extension tag hook for a documentation link.
+ *
+ * @return string
*/
public function docLink( $linkText, $attribs, $parser ) {
$url = $this->getDocUrl( $attribs['href'] );
@@ -1015,9 +1036,10 @@ class WebInstaller extends Installer {
htmlspecialchars( $linkText ) .
'</a>';
}
-
+
/**
* Helper for "Download LocalSettings" link on WebInstall_Complete
+ *
* @return String Html for download link
*/
public function downloadLinkHook( $text, $attribs, $parser ) {
@@ -1031,4 +1053,27 @@ class WebInstaller extends Installer {
$img . ' ' . wfMsgHtml( 'config-download-localsettings' ) );
return Html::rawElement( 'div', array( 'class' => 'config-download-link' ), $anchor );
}
+
+ public function envCheckPath( ) {
+ // PHP_SELF isn't available sometimes, such as when PHP is CGI but
+ // cgi.fix_pathinfo is disabled. In that case, fall back to SCRIPT_NAME
+ // to get the path to the current script... hopefully it's reliable. SIGH
+ $path = false;
+ if ( !empty( $_SERVER['PHP_SELF'] ) ) {
+ $path = $_SERVER['PHP_SELF'];
+ } elseif ( !empty( $_SERVER['SCRIPT_NAME'] ) ) {
+ $path = $_SERVER['SCRIPT_NAME'];
+ }
+ if ($path !== false) {
+ $uri = preg_replace( '{^(.*)/(mw-)?config.*$}', '$1', $path );
+ $this->setVar( 'wgScriptPath', $uri );
+ } else {
+ $this->showError( 'config-no-uri' );
+ return false;
+ }
+
+
+ return parent::envCheckPath();
+ }
+
}
diff --git a/includes/installer/WebInstallerOutput.php b/includes/installer/WebInstallerOutput.php
index cb708d13..9eb2c2c6 100644
--- a/includes/installer/WebInstallerOutput.php
+++ b/includes/installer/WebInstallerOutput.php
@@ -113,11 +113,11 @@ class WebInstallerOutput {
}
/**
- * URL for index.php?css=foobar
+ * <link> to index.php?css=foobar for the <head>
* @return String
*/
private function getCssUrl( ) {
- return $_SERVER['PHP_SELF'] . '?css=' . $this->getDir();
+ return Html::linkedStyle( $_SERVER['PHP_SELF'] . '?css=' . $this->getDir() );
}
public function useShortHeader( $use = true ) {
@@ -139,22 +139,33 @@ class WebInstallerOutput {
}
}
+ /**
+ * @return string
+ */
public function getDir() {
global $wgLang;
- if( !is_object( $wgLang ) || !$wgLang->isRtl() )
+ if( !is_object( $wgLang ) || !$wgLang->isRtl() ) {
return 'ltr';
- else
+ } else {
return 'rtl';
+ }
}
+ /**
+ * @return string
+ */
public function getLanguageCode() {
global $wgLang;
- if( !is_object( $wgLang ) )
+ if( !is_object( $wgLang ) ) {
return 'en';
- else
+ } else {
return $wgLang->getCode();
+ }
}
+ /**
+ * @return array
+ */
public function getHeadAttribs() {
return array(
'dir' => $this->getDir(),
@@ -195,7 +206,7 @@ class WebInstallerOutput {
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<title><?php $this->outputTitle(); ?></title>
<?php echo Html::linkedStyle( '../skins/common/shared.css' ) . "\n"; ?>
- <?php echo Html::linkedStyle( $this->getCssUrl() ) . "\n"; ?>
+ <?php echo $this->getCssUrl() . "\n"; ?>
<?php echo Html::inlineScript( "var dbTypes = " . Xml::encodeJsVar( $dbTypes ) ) . "\n"; ?>
<?php echo $this->getJQuery() . "\n"; ?>
<?php echo Html::linkedScript( '../skins/common/config.js' ) . "\n"; ?>
@@ -249,7 +260,7 @@ class WebInstallerOutput {
<meta http-equiv="Content-type" content="text/html; charset=utf-8" />
<meta name="robots" content="noindex, nofollow" />
<title><?php $this->outputTitle(); ?></title>
- <?php echo Html::linkedStyle( $this->getCssUrl() ) . "\n"; ?>
+ <?php echo $this->getCssUrl() . "\n"; ?>
<?php echo $this->getJQuery(); ?>
<?php echo Html::linkedScript( '../skins/common/config.js' ); ?>
</head>
diff --git a/includes/installer/WebInstallerPage.php b/includes/installer/WebInstallerPage.php
index 5c30182b..dc9c6d27 100644
--- a/includes/installer/WebInstallerPage.php
+++ b/includes/installer/WebInstallerPage.php
@@ -32,6 +32,15 @@ abstract class WebInstallerPage {
$this->parent = $parent;
}
+ /**
+ * Is this a slow-running page in the installer? If so, WebInstaller will
+ * set_time_limit(0) before calling execute(). Right now this only applies
+ * to Install and Upgrade pages
+ */
+ public function isSlow() {
+ return false;
+ }
+
public function addHTML( $html ) {
$this->parent->output->addHTML( $html );
}
@@ -103,6 +112,8 @@ abstract class WebInstallerPage {
* Get the starting tags of a fieldset.
*
* @param $legend String: message name
+ *
+ * @return string
*/
protected function getFieldsetStart( $legend ) {
return "\n<fieldset><legend>" . wfMsgHtml( $legend ) . "</legend>\n";
@@ -110,6 +121,8 @@ abstract class WebInstallerPage {
/**
* Get the end tag of a fieldset.
+ *
+ * @returns string
*/
protected function getFieldsetEnd() {
return "</fieldset>\n";
@@ -122,7 +135,7 @@ abstract class WebInstallerPage {
$this->addHTML(
'<div id="config-spinner" style="display:none;"><img src="../skins/common/images/ajax-loader.gif" /></div>' .
'<script>jQuery( "#config-spinner" ).show();</script>' .
- '<textarea id="config-live-log" name="LiveLog" rows="10" cols="30" readonly="readonly">'
+ '<div id="config-live-log"><textarea name="LiveLog" rows="10" cols="30" readonly="readonly">'
);
$this->parent->output->flush();
}
@@ -131,7 +144,7 @@ abstract class WebInstallerPage {
* Opposite to startLiveBox()
*/
protected function endLiveBox() {
- $this->addHTML( '</textarea>
+ $this->addHTML( '</textarea></div>
<script>jQuery( "#config-spinner" ).hide()</script>' );
$this->parent->output->flush();
}
@@ -198,10 +211,15 @@ class WebInstaller_Language extends WebInstallerPage {
/**
* Get a <select> for selecting languages.
+ *
+ * @return string
*/
- public function getLanguageSelector( $name, $label, $selectedCode ) {
+ public function getLanguageSelector( $name, $label, $selectedCode, $helpHtml = '' ) {
global $wgDummyLanguageCodes;
- $s = Html::openElement( 'select', array( 'id' => $name, 'name' => $name ) ) . "\n";
+
+ $s = $helpHtml;
+
+ $s .= Html::openElement( 'select', array( 'id' => $name, 'name' => $name, 'tabindex' => $this->parent->nextTabIndex() ) ) . "\n";
$languages = Language::getLanguageNames();
ksort( $languages );
@@ -408,7 +426,7 @@ class WebInstaller_DBConnect extends WebInstallerPage {
$dbSupport = '';
foreach( $this->parent->getDBTypes() as $type ) {
- $link = DatabaseBase::newFromType( $type )->getSoftwareLink();
+ $link = DatabaseBase::factory( $type )->getSoftwareLink();
$dbSupport .= wfMsgNoTrans( "config-support-$type", $link ) . "\n";
}
$this->addHTML( $this->parent->getInfoBox(
@@ -458,6 +476,9 @@ class WebInstaller_DBConnect extends WebInstallerPage {
}
class WebInstaller_Upgrade extends WebInstallerPage {
+ public function isSlow() {
+ return true;
+ }
public function execute() {
if ( $this->getVar( '_UpgradeDone' ) ) {
@@ -522,7 +543,7 @@ class WebInstaller_Upgrade extends WebInstallerPage {
$this->addHTML(
$this->parent->getInfoBox(
wfMsgNoTrans( $msg,
- $GLOBALS['wgServer'] .
+ $this->getVar( 'wgServer' ) .
$this->getVar( 'wgScriptPath' ) . '/index' .
$this->getVar( 'wgScriptExtension' )
), 'tick-32.png'
@@ -722,7 +743,6 @@ class WebInstaller_Name extends WebInstallerPage {
// Validate password
$msg = false;
- $valid = false;
$pwd = $this->getVar( '_AdminPassword' );
$user = User::newFromName( $cname );
$valid = $user && $user->getPasswordValidity( $pwd );
@@ -746,10 +766,16 @@ class WebInstaller_Name extends WebInstallerPage {
// Validate e-mail if provided
$email = $this->getVar( '_AdminEmail' );
- if( $email && !User::isValidEmailAddr( $email ) ) {
+ if( $email && !Sanitizer::validateEmail( $email ) ) {
$this->parent->showError( 'config-admin-error-bademail' );
$retVal = false;
}
+ // If they asked to subscribe to mediawiki-announce but didn't give
+ // an e-mail, show an error. Bug 29332
+ if( !$email && $this->getVar( '_Subscribe' ) ) {
+ $this->parent->showError( 'config-subscribe-noemail' );
+ $retVal = false;
+ }
return $retVal;
}
@@ -892,6 +918,15 @@ class WebInstaller_Options extends WebInstallerPage {
}
$caches[] = 'memcached';
+ // We'll hide/show this on demand when the value changes, see config.js.
+ $cacheval = $this->getVar( 'wgMainCacheType' );
+ if (!$cacheval) {
+ // We need to set a default here; but don't hardcode it
+ // or we lose it every time we reload the page for validation
+ // or going back!
+ $cacheval = 'none';
+ }
+ $hidden = ($cacheval == 'memcached') ? '' : 'display: none';
$this->addHTML(
# Advanced settings
$this->getFieldSetStart( 'config-advanced-settings' ) .
@@ -901,10 +936,10 @@ class WebInstaller_Options extends WebInstallerPage {
'label' => 'config-cache-options',
'itemLabelPrefix' => 'config-cache-',
'values' => $caches,
- 'value' => 'none',
+ 'value' => $cacheval,
) ) .
$this->parent->getHelpBox( 'config-cache-help' ) .
- '<div id="config-memcachewrapper">' .
+ "<div id=\"config-memcachewrapper\" style=\"$hidden\">" .
$this->parent->getTextArea( array(
'var' => '_MemCachedServers',
'label' => 'config-memcached-servers',
@@ -916,9 +951,12 @@ class WebInstaller_Options extends WebInstallerPage {
$this->endForm();
}
+ /**
+ * @return string
+ */
public function getCCPartnerUrl() {
- global $wgServer;
- $exitUrl = $wgServer . $this->parent->getUrl( array(
+ $server = $this->getVar( 'wgServer' );
+ $exitUrl = $server . $this->parent->getUrl( array(
'page' => 'Options',
'SubmitCC' => 'indeed',
'config__LicenseCode' => 'cc',
@@ -926,7 +964,7 @@ class WebInstaller_Options extends WebInstallerPage {
'config_wgRightsText' => '[license_name]',
'config_wgRightsIcon' => '[license_button]',
) );
- $styleUrl = $wgServer . dirname( dirname( $this->parent->getUrl() ) ) .
+ $styleUrl = $server . dirname( dirname( $this->parent->getUrl() ) ) .
'/skins/common/config-cc.css';
$iframeUrl = 'http://creativecommons.org/license/?' .
wfArrayToCGI( array(
@@ -1050,8 +1088,10 @@ class WebInstaller_Options extends WebInstallerPage {
}
foreach( $memcServers as $server ) {
- $memcParts = explode( ":", $server );
- if( !IP::isValid( $memcParts[0] ) ) {
+ $memcParts = explode( ":", $server, 2 );
+ if ( !isset( $memcParts[0] )
+ || ( !IP::isValid( $memcParts[0] )
+ && ( gethostbyname( $memcParts[0] ) == $memcParts[0] ) ) ) {
$this->parent->showError( 'config-memcache-badip', $memcParts[0] );
return false;
} elseif( !isset( $memcParts[1] ) ) {
@@ -1069,6 +1109,9 @@ class WebInstaller_Options extends WebInstallerPage {
}
class WebInstaller_Install extends WebInstallerPage {
+ public function isSlow() {
+ return true;
+ }
public function execute() {
if( $this->getVar( '_UpgradeDone' ) ) {
@@ -1104,6 +1147,10 @@ class WebInstaller_Install extends WebInstallerPage {
}
}
+ /**
+ * @param $step
+ * @param $status Status
+ */
public function endStage( $step, $status ) {
if ( $step == 'extension-tables' ) {
$this->endLiveBox();
@@ -1126,7 +1173,7 @@ class WebInstaller_Complete extends WebInstallerPage {
public function execute() {
// Pop up a dialog box, to make it difficult for the user to forget
// to download the file
- $lsUrl = $GLOBALS['wgServer'] . $this->parent->getURL( array( 'localsettings' => 1 ) );
+ $lsUrl = $this->getVar( 'wgServer' ) . $this->parent->getURL( array( 'localsettings' => 1 ) );
if ( isset( $_SERVER['HTTP_USER_AGENT'] ) && strpos( $_SERVER['HTTP_USER_AGENT'], 'MSIE' ) !== false ) {
// JS appears the only method that works consistently with IE7+
$this->addHtml( "\n<script type=\"" . $GLOBALS['wgJsMimeType'] . '">jQuery( document ).ready( function() { document.location='
@@ -1141,7 +1188,7 @@ class WebInstaller_Complete extends WebInstallerPage {
$this->parent->getInfoBox(
wfMsgNoTrans( 'config-install-done',
$lsUrl,
- $GLOBALS['wgServer'] .
+ $this->getVar( 'wgServer' ) .
$this->getVar( 'wgScriptPath' ) . '/index' .
$this->getVar( 'wgScriptExtension' ),
'<downloadlink/>'
@@ -1179,45 +1226,16 @@ abstract class WebInstaller_Document extends WebInstallerPage {
public function execute() {
$text = $this->getFileContents();
- $text = $this->formatTextFile( $text );
+ $text = InstallDocFormatter::format( $text );
$this->parent->output->addWikiText( $text );
$this->startForm();
$this->endForm( false );
}
- public function getFileContents() {
+ public function getFileContents() {
return file_get_contents( dirname( __FILE__ ) . '/../../' . $this->getFileName() );
}
- protected function formatTextFile( $text ) {
- // Use Unix line endings, escape some wikitext stuff
- $text = str_replace( array( '<', '{{', '[[', "\r" ),
- array( '&lt;', '&#123;&#123;', '&#91;&#91;', '' ), $text );
- // join word-wrapped lines into one
- do {
- $prev = $text;
- $text = preg_replace( "/\n([\\*#\t])([^\n]*?)\n([^\n#\\*:]+)/", "\n\\1\\2 \\3", $text );
- } while ( $text != $prev );
- // Replace tab indents with colons
- $text = preg_replace( '/^\t\t/m', '::', $text );
- $text = preg_replace( '/^\t/m', ':', $text );
- // turn (bug nnnn) into links
- $text = preg_replace_callback('/bug (\d+)/', array( $this, 'replaceBugLinks' ), $text );
- // add links to manual to every global variable mentioned
- $text = preg_replace_callback('/(\$wg[a-z0-9_]+)/i', array( $this, 'replaceConfigLinks' ), $text );
- return $text;
- }
-
- private function replaceBugLinks( $matches ) {
- return '<span class="config-plainlink">[https://bugzilla.wikimedia.org/' .
- $matches[1] . ' bug ' . $matches[1] . ']</span>';
- }
-
- private function replaceConfigLinks( $matches ) {
- return '<span class="config-plainlink">[http://www.mediawiki.org/wiki/Manual:' .
- $matches[1] . ' ' . $matches[1] . ']</span>';
- }
-
}
class WebInstaller_Readme extends WebInstaller_Document {
diff --git a/includes/Interwiki.php b/includes/interwiki/Interwiki.php
index 5a3b6556..71bd9725 100644
--- a/includes/Interwiki.php
+++ b/includes/interwiki/Interwiki.php
@@ -141,11 +141,19 @@ class Interwiki {
*/
protected static function load( $prefix ) {
global $wgMemc, $wgInterwikiExpiry;
- $key = wfMemcKey( 'interwiki', $prefix );
- $mc = $wgMemc->get( $key );
- if( $mc && is_array( $mc ) ) { // is_array is hack for old keys
- $iw = Interwiki::loadFromArray( $mc );
+ $iwData = false;
+ if ( !wfRunHooks( 'InterwikiLoadPrefix', array( $prefix, &$iwData ) ) ) {
+ return Interwiki::loadFromArray( $iwData );
+ }
+
+ if ( !$iwData ) {
+ $key = wfMemcKey( 'interwiki', $prefix );
+ $iwData = $wgMemc->get( $key );
+ }
+
+ if( $iwData && is_array( $iwData ) ) { // is_array is hack for old keys
+ $iw = Interwiki::loadFromArray( $iwData );
if( $iw ) {
return $iw;
}
@@ -177,11 +185,11 @@ class Interwiki {
* @return Boolean: whether everything was there
*/
protected static function loadFromArray( $mc ) {
- if( isset( $mc['iw_url'] ) && isset( $mc['iw_local'] ) && isset( $mc['iw_trans'] ) ) {
+ if( isset( $mc['iw_url'] ) ) {
$iw = new Interwiki();
$iw->mURL = $mc['iw_url'];
- $iw->mLocal = $mc['iw_local'];
- $iw->mTrans = $mc['iw_trans'];
+ $iw->mLocal = isset( $mc['iw_local'] ) ? $mc['iw_local'] : 0;
+ $iw->mTrans = isset( $mc['iw_trans'] ) ? $mc['iw_trans'] : 0;
$iw->mAPI = isset( $mc['iw_api'] ) ? $mc['iw_api'] : '';
$iw->mWikiID = isset( $mc['iw_wikiid'] ) ? $mc['iw_wikiid'] : '';
@@ -248,9 +256,8 @@ class Interwiki {
* @return String
*/
public function getName() {
- $key = 'interwiki-name-' . $this->mPrefix;
- $msg = wfMsgForContent( $key );
- return wfEmptyMsg( $key, $msg ) ? '' : $msg;
+ $msg = wfMessage( 'interwiki-name-' . $this->mPrefix )->inContentLanguage();
+ return !$msg->exists() ? '' : $msg;
}
/**
@@ -259,8 +266,7 @@ class Interwiki {
* @return String
*/
public function getDescription() {
- $key = 'interwiki-desc-' . $this->mPrefix;
- $msg = wfMsgForContent( $key );
- return wfEmptyMsg( $key, $msg ) ? '' : $msg;
+ $msg = wfMessage( 'interwiki-desc-' . $this->mPrefix )->inContentLanguage();
+ return !$msg->exists() ? '' : $msg;
}
}
diff --git a/includes/job/DoubleRedirectJob.php b/includes/job/DoubleRedirectJob.php
index 3b4b0188..d7991f5e 100644
--- a/includes/job/DoubleRedirectJob.php
+++ b/includes/job/DoubleRedirectJob.php
@@ -13,13 +13,17 @@
*/
class DoubleRedirectJob extends Job {
var $reason, $redirTitle, $destTitleText;
+
+ /**
+ * @var User
+ */
static $user;
/**
* Insert jobs into the job queue to fix redirects to the given title
* @param $reason String: the reason for the fix, see message double-redirect-fixed-<reason>
* @param $redirTitle Title: the title which has changed, redirects pointing to this title are fixed
- * @param $destTitle Not used
+ * @param $destTitle bool Not used
*/
public static function fixRedirects( $reason, $redirTitle, $destTitle = false ) {
# Need to use the master to get the redirect table updated in the same transaction
@@ -53,6 +57,7 @@ class DoubleRedirectJob extends Job {
}
Job::batchInsert( $jobs );
}
+
function __construct( $title, $params = false, $id = 0 ) {
parent::__construct( 'fixDoubleRedirect', $title, $params, $id );
$this->reason = $params['reason'];
@@ -128,6 +133,9 @@ class DoubleRedirectJob extends Job {
/**
* Get the final destination of a redirect
+ *
+ * @param $title Title
+ *
* @return false if the specified title is not a redirect, or if it is a circular redirect
*/
public static function getFinalDestination( $title ) {
diff --git a/includes/job/JobQueue.php b/includes/job/JobQueue.php
index 8eec8215..0d917ba3 100644
--- a/includes/job/JobQueue.php
+++ b/includes/job/JobQueue.php
@@ -16,8 +16,13 @@ if ( !defined( 'MEDIAWIKI' ) ) {
* @ingroup JobQueue
*/
abstract class Job {
+
+ /**
+ * @var Title
+ */
+ var $title;
+
var $command,
- $title,
$params,
$id,
$removeDuplicates,
@@ -41,21 +46,28 @@ abstract class Job {
* Pop a job of a certain type. This tries less hard than pop() to
* actually find a job; it may be adversely affected by concurrent job
* runners.
+ *
+ * @param $type string
+ *
+ * @return Job
*/
static function pop_type( $type ) {
wfProfilein( __METHOD__ );
$dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
+
$row = $dbw->selectRow(
'job',
'*',
array( 'job_cmd' => $type ),
__METHOD__,
- array( 'LIMIT' => 1 )
+ array( 'LIMIT' => 1, 'FOR UPDATE' )
);
if ( $row === false ) {
+ $dbw->commit();
wfProfileOut( __METHOD__ );
return false;
}
@@ -63,20 +75,21 @@ abstract class Job {
/* Ensure we "own" this row */
$dbw->delete( 'job', array( 'job_id' => $row->job_id ), __METHOD__ );
$affected = $dbw->affectedRows();
+ $dbw->commit();
if ( $affected == 0 ) {
wfProfileOut( __METHOD__ );
return false;
}
+ wfIncrStats( 'job-pop' );
$namespace = $row->job_namespace;
$dbkey = $row->job_title;
$title = Title::makeTitleSafe( $namespace, $dbkey );
$job = Job::factory( $row->job_cmd, $title, Job::extractBlob( $row->job_params ),
$row->job_id );
- $dbw->delete( 'job', $job->insertFields(), __METHOD__ );
- $dbw->commit();
+ $job->removeDuplicates();
wfProfileOut( __METHOD__ );
return $job;
@@ -89,6 +102,7 @@ abstract class Job {
* @return Job or false if there's no jobs
*/
static function pop( $offset = 0 ) {
+ global $wgJobTypesExcludedFromDefaultQueue;
wfProfileIn( __METHOD__ );
$dbr = wfGetDB( DB_SLAVE );
@@ -99,17 +113,27 @@ abstract class Job {
NB: If random fetch previously was used, offset
will always be ahead of few entries
*/
+ $conditions = array();
+ if ( count( $wgJobTypesExcludedFromDefaultQueue ) != 0 ) {
+ foreach ( $wgJobTypesExcludedFromDefaultQueue as $cmdType ) {
+ $conditions[] = "job_cmd != " . $dbr->addQuotes( $cmdType );
+ }
+ }
+ $offset = intval( $offset );
+ $options = array( 'ORDER BY' => 'job_id', 'USE INDEX' => 'PRIMARY' );
- $row = $dbr->selectRow( 'job', '*', "job_id >= ${offset}", __METHOD__,
- array( 'ORDER BY' => 'job_id', 'LIMIT' => 1 ) );
+ $row = $dbr->selectRow( 'job', '*',
+ array_merge( $conditions, array( "job_id >= $offset" ) ),
+ __METHOD__,
+ $options
+ );
// Refetching without offset is needed as some of job IDs could have had delayed commits
// and have lower IDs than jobs already executed, blame concurrency :)
//
if ( $row === false ) {
if ( $offset != 0 ) {
- $row = $dbr->selectRow( 'job', '*', '', __METHOD__,
- array( 'ORDER BY' => 'job_id', 'LIMIT' => 1 ) );
+ $row = $dbr->selectRow( 'job', '*', $conditions, __METHOD__, $options );
}
if ( $row === false ) {
@@ -158,16 +182,14 @@ abstract class Job {
// If execution got to here, there's a row in $row that has been deleted from the database
// by this thread. Hence the concurrent pop was successful.
+ wfIncrStats( 'job-pop' );
$namespace = $row->job_namespace;
$dbkey = $row->job_title;
$title = Title::makeTitleSafe( $namespace, $dbkey );
$job = Job::factory( $row->job_cmd, $title, Job::extractBlob( $row->job_params ), $row->job_id );
// Remove any duplicates it may have later in the queue
- // Deadlock prone section
- $dbw->begin();
- $dbw->delete( 'job', $job->insertFields(), __METHOD__ );
- $dbw->commit();
+ $job->removeDuplicates();
wfProfileOut( __METHOD__ );
return $job;
@@ -272,6 +294,12 @@ abstract class Job {
* Non-static functions
*------------------------------------------------------------------------*/
+ /**
+ * @param $command
+ * @param $title
+ * @param $params array
+ * @param int $id
+ */
function __construct( $command, $title, $params = false, $id = 0 ) {
$this->command = $command;
$this->title = $title;
@@ -298,6 +326,7 @@ abstract class Job {
return;
}
}
+ wfIncrStats( 'job-insert' );
return $dbw->insert( 'job', $fields, __METHOD__ );
}
@@ -312,6 +341,27 @@ abstract class Job {
);
}
+ /**
+ * Remove jobs in the job queue which are duplicates of this job.
+ * This is deadlock-prone and so starts its own transaction.
+ */
+ function removeDuplicates() {
+ if ( !$this->removeDuplicates ) {
+ return;
+ }
+
+ $fields = $this->insertFields();
+ unset( $fields['job_id'] );
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->begin();
+ $dbw->delete( 'job', $fields, __METHOD__ );
+ $affected = $dbw->affectedRows();
+ $dbw->commit();
+ if ( $affected ) {
+ wfIncrStats( 'job-dup-delete', $affected );
+ }
+ }
+
function toString() {
$paramString = '';
if ( $this->params ) {
diff --git a/includes/job/RefreshLinksJob.php b/includes/job/RefreshLinksJob.php
index cc91fa81..910f0c58 100644
--- a/includes/job/RefreshLinksJob.php
+++ b/includes/job/RefreshLinksJob.php
@@ -119,7 +119,7 @@ class RefreshLinksJob2 extends Job {
$update = new LinksUpdate( $title, $parserOutput, false );
$update->doUpdate();
wfProfileOut( __METHOD__.'-update' );
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
wfProfileOut( __METHOD__ );
diff --git a/includes/job/UploadFromUrlJob.php b/includes/job/UploadFromUrlJob.php
index 63166ef9..3f915245 100644
--- a/includes/job/UploadFromUrlJob.php
+++ b/includes/job/UploadFromUrlJob.php
@@ -8,7 +8,7 @@
/**
* Job for asynchronous upload-by-url.
- *
+ *
* This job is in fact an interface to UploadFromUrl, which is designed such
* that it does not require any globals. If it does, fix it elsewhere, do not
* add globals in here.
@@ -17,8 +17,15 @@
*/
class UploadFromUrlJob extends Job {
const SESSION_KEYNAME = 'wsUploadFromUrlJobData';
-
+
+ /**
+ * @var UploadFromUrl
+ */
public $upload;
+
+ /**
+ * @var User
+ */
protected $user;
public function __construct( $title, $params, $id = 0 ) {
@@ -28,20 +35,20 @@ class UploadFromUrlJob extends Job {
public function run() {
# Initialize this object and the upload object
$this->upload = new UploadFromUrl();
- $this->upload->initialize(
- $this->title->getText(),
+ $this->upload->initialize(
+ $this->title->getText(),
$this->params['url'],
false
);
$this->user = User::newFromName( $this->params['userName'] );
-
+
# Fetch the file
$status = $this->upload->fetchFile();
if ( !$status->isOk() ) {
$this->leaveMessage( $status );
return true;
}
-
+
# Verify upload
$result = $this->upload->verifyUpload();
if ( $result['status'] != UploadBase::OK ) {
@@ -49,17 +56,17 @@ class UploadFromUrlJob extends Job {
$this->leaveMessage( $status );
return true;
}
-
+
# Check warnings
if ( !$this->params['ignoreWarnings'] ) {
$warnings = $this->upload->checkWarnings();
- if ( $warnings ) {
+ if ( $warnings ) {
wfSetupSession( $this->params['sessionId'] );
-
+
if ( $this->params['leaveMessage'] ) {
- $this->user->leaveUserMessage(
+ $this->user->leaveUserMessage(
wfMsg( 'upload-warning-subj' ),
- wfMsg( 'upload-warning-msg',
+ wfMsg( 'upload-warning-msg',
$this->params['sessionKey'],
$this->params['url'] )
);
@@ -67,17 +74,17 @@ class UploadFromUrlJob extends Job {
$this->storeResultInSession( 'Warning',
'warnings', $warnings );
}
-
+
# Stash the upload in the session
$this->upload->stashSession( $this->params['sessionKey'] );
session_write_close();
-
+
return true;
}
}
-
+
# Perform the upload
- $status = $this->upload->performUpload(
+ $status = $this->upload->performUpload(
$this->params['comment'],
$this->params['pageText'],
$this->params['watch'],
@@ -85,47 +92,47 @@ class UploadFromUrlJob extends Job {
);
$this->leaveMessage( $status );
return true;
-
+
}
-
+
/**
* Leave a message on the user talk page or in the session according to
* $params['leaveMessage'].
- *
+ *
* @param $status Status
*/
protected function leaveMessage( $status ) {
if ( $this->params['leaveMessage'] ) {
if ( $status->isGood() ) {
$this->user->leaveUserMessage( wfMsg( 'upload-success-subj' ),
- wfMsg( 'upload-success-msg',
+ wfMsg( 'upload-success-msg',
$this->upload->getTitle()->getText(),
- $this->params['url']
+ $this->params['url']
) );
} else {
$this->user->leaveUserMessage( wfMsg( 'upload-failure-subj' ),
- wfMsg( 'upload-failure-msg',
+ wfMsg( 'upload-failure-msg',
$status->getWikiText(),
$this->params['url']
) );
}
} else {
- wfSetupSession( $this->params['sessionId'] );
+ wfSetupSession( $this->params['sessionId'] );
if ( $status->isOk() ) {
- $this->storeResultInSession( 'Success',
+ $this->storeResultInSession( 'Success',
'filename', $this->upload->getLocalFile()->getName() );
} else {
$this->storeResultInSession( 'Failure',
'errors', $status->getErrorsArray() );
}
- session_write_close();
+ session_write_close();
}
}
/**
* Store a result in the session data. Note that the caller is responsible
* for appropriate session_start and session_write_close calls.
- *
+ *
* @param $result String: the result (Success|Warning|Failure)
* @param $dataKey String: the key of the extra data
* @param $dataValue Mixed: the extra data itself
@@ -135,7 +142,7 @@ class UploadFromUrlJob extends Job {
$session['result'] = $result;
$session[$dataKey] = $dataValue;
}
-
+
/**
* Initialize the session data. Sets the intial result to queued.
*/
@@ -143,7 +150,7 @@ class UploadFromUrlJob extends Job {
$session =& self::getSessionData( $this->params['sessionKey'] );
$$session['result'] = 'Queued';
}
-
+
public static function &getSessionData( $key ) {
if ( !isset( $_SESSION[self::SESSION_KEYNAME][$key] ) ) {
$_SESSION[self::SESSION_KEYNAME][$key] = array();
diff --git a/includes/json/FormatJson.php b/includes/json/FormatJson.php
index b7049aeb..006f7720 100644
--- a/includes/json/FormatJson.php
+++ b/includes/json/FormatJson.php
@@ -18,6 +18,11 @@ class FormatJson {
*
* @param $value Mixed: the value being encoded. Can be any type except a resource.
* @param $isHtml Boolean
+ *
+ * @todo FIXME: "$isHtml" parameter's purpose is not documented. It appears to
+ * map to a parameter labeled "pretty-print output with indents and
+ * newlines" in Services_JSON::encode(), which has no string relation
+ * to HTML output.
*
* @return string
*/
@@ -25,7 +30,7 @@ class FormatJson {
// Some versions of PHP have a broken json_encode, see PHP bug
// 46944. Test encoding an affected character (U+20000) to
// avoid this.
- if ( !function_exists( 'json_encode' ) || $isHtml || strtolower( json_encode( "\xf0\xa0\x80\x80" ) ) != '\ud840\udc00' ) {
+ if ( !function_exists( 'json_encode' ) || $isHtml || strtolower( json_encode( "\xf0\xa0\x80\x80" ) ) != '"\ud840\udc00"' ) {
$json = new Services_JSON();
return $json->encode( $value, $isHtml );
} else {
diff --git a/includes/json/Services_JSON.php b/includes/json/Services_JSON.php
index 5b4e0503..72bd616e 100644
--- a/includes/json/Services_JSON.php
+++ b/includes/json/Services_JSON.php
@@ -51,7 +51,7 @@
* @author Matt Knapp <mdknapp[at]gmail[dot]com>
* @author Brett Stimmerman <brettstimmerman[at]gmail[dot]com>
* @copyright 2005 Michal Migurski
-* @version CVS: $Id: Services_JSON.php 90492 2011-06-20 22:39:10Z reedy $
+* @version CVS: $Id: Services_JSON.php 95607 2011-08-27 19:28:13Z hashar $
* @license http://www.opensource.org/licenses/bsd-license.php
* @see http://pear.php.net/pepr/pepr-proposal-show.php?id=198
*/
@@ -168,7 +168,7 @@ class Services_JSON
return mb_convert_encoding($utf16, 'UTF-8', 'UTF-16');
}
- $bytes = (ord($utf16{0}) << 8) | ord($utf16{1});
+ $bytes = (ord($utf16[0]) << 8) | ord($utf16[1]);
switch(true) {
case ((0x7F & $bytes) == $bytes):
@@ -182,11 +182,11 @@ class Services_JSON
return chr(0xC0 | (($bytes >> 6) & 0x1F))
. chr(0x80 | ($bytes & 0x3F));
- case (0xFC00 & $bytes) == 0xD800 && strlen($utf16) >= 4 && (0xFC & ord($utf16{2})) == 0xDC:
+ case (0xFC00 & $bytes) == 0xD800 && strlen($utf16) >= 4 && (0xFC & ord($utf16[2])) == 0xDC:
// return a 4-byte UTF-8 character
$char = ((($bytes & 0x03FF) << 10)
- | ((ord($utf16{2}) & 0x03) << 8)
- | ord($utf16{3}));
+ | ((ord($utf16[2]) & 0x03) << 8)
+ | ord($utf16[3]));
$char += 0x10000;
return chr(0xF0 | (($char >> 18) & 0x07))
. chr(0x80 | (($char >> 12) & 0x3F))
@@ -232,25 +232,25 @@ class Services_JSON
case 2:
// return a UTF-16 character from a 2-byte UTF-8 char
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return chr(0x07 & (ord($utf8{0}) >> 2))
- . chr((0xC0 & (ord($utf8{0}) << 6))
- | (0x3F & ord($utf8{1})));
+ return chr(0x07 & (ord($utf8[0]) >> 2))
+ . chr((0xC0 & (ord($utf8[0]) << 6))
+ | (0x3F & ord($utf8[1])));
case 3:
// return a UTF-16 character from a 3-byte UTF-8 char
// see: http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- return chr((0xF0 & (ord($utf8{0}) << 4))
- | (0x0F & (ord($utf8{1}) >> 2)))
- . chr((0xC0 & (ord($utf8{1}) << 6))
- | (0x7F & ord($utf8{2})));
+ return chr((0xF0 & (ord($utf8[0]) << 4))
+ | (0x0F & (ord($utf8[1]) >> 2)))
+ . chr((0xC0 & (ord($utf8[1]) << 6))
+ | (0x7F & ord($utf8[2])));
case 4:
// return a UTF-16 surrogate pair from a 4-byte UTF-8 char
- if(ord($utf8{0}) > 0xF4) return ''; # invalid
- $char = ((0x1C0000 & (ord($utf8{0}) << 18))
- | (0x03F000 & (ord($utf8{1}) << 12))
- | (0x000FC0 & (ord($utf8{2}) << 6))
- | (0x00003F & ord($utf8{3})));
+ if(ord($utf8[0]) > 0xF4) return ''; # invalid
+ $char = ((0x1C0000 & (ord($utf8[0]) << 18))
+ | (0x03F000 & (ord($utf8[1]) << 12))
+ | (0x000FC0 & (ord($utf8[2]) << 6))
+ | (0x00003F & ord($utf8[3])));
if($char > 0x10FFFF) return ''; # invalid
$char -= 0x10000;
return chr(0xD8 | (($char >> 18) & 0x03))
@@ -331,7 +331,7 @@ class Services_JSON
*/
for ($c = 0; $c < $strlen_var; ++$c) {
- $ord_var_c = ord($var{$c});
+ $ord_var_c = ord($var[$c]);
switch (true) {
case $ord_var_c == 0x08:
@@ -354,18 +354,18 @@ class Services_JSON
case $ord_var_c == 0x2F:
case $ord_var_c == 0x5C:
// double quote, slash, slosh
- $ascii .= '\\'.$var{$c};
+ $ascii .= '\\'.$var[$c];
break;
case (($ord_var_c >= 0x20) && ($ord_var_c <= 0x7F)):
// characters U-00000000 - U-0000007F (same as ASCII)
- $ascii .= $var{$c};
+ $ascii .= $var[$c];
break;
case (($ord_var_c & 0xE0) == 0xC0):
// characters U-00000080 - U-000007FF, mask 110XXXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
- $char = pack('C*', $ord_var_c, ord($var{$c + 1}));
+ $char = pack('C*', $ord_var_c, ord($var[$c + 1]));
$c += 1;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
@@ -375,8 +375,8 @@ class Services_JSON
// characters U-00000800 - U-0000FFFF, mask 1110XXXX
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
$char = pack('C*', $ord_var_c,
- ord($var{$c + 1}),
- ord($var{$c + 2}));
+ ord($var[$c + 1]),
+ ord($var[$c + 2]));
$c += 2;
$utf16 = $this->utf82utf16($char);
$ascii .= sprintf('\u%04s', bin2hex($utf16));
@@ -387,9 +387,9 @@ class Services_JSON
// see http://www.cl.cam.ac.uk/~mgk25/unicode.html#utf-8
// These will always return a surrogate pair
$char = pack('C*', $ord_var_c,
- ord($var{$c + 1}),
- ord($var{$c + 2}),
- ord($var{$c + 3}));
+ ord($var[$c + 1]),
+ ord($var[$c + 2]),
+ ord($var[$c + 3]));
$c += 3;
$utf16 = $this->utf82utf16($char);
if($utf16 == '') {
@@ -575,7 +575,7 @@ class Services_JSON
for ($c = 0; $c < $strlen_chrs; ++$c) {
$substr_chrs_c_2 = substr($chrs, $c, 2);
- $ord_chrs_c = ord($chrs{$c});
+ $ord_chrs_c = ord($chrs[$c]);
switch (true) {
case $substr_chrs_c_2 == '\b':
@@ -605,7 +605,7 @@ class Services_JSON
case $substr_chrs_c_2 == '\\/':
if (($delim == '"' && $substr_chrs_c_2 != '\\\'') ||
($delim == "'" && $substr_chrs_c_2 != '\\"')) {
- $utf8 .= $chrs{++$c};
+ $utf8 .= $chrs[++$c];
}
break;
@@ -628,7 +628,7 @@ class Services_JSON
break;
case ($ord_chrs_c >= 0x20) && ($ord_chrs_c <= 0x7F):
- $utf8 .= $chrs{$c};
+ $utf8 .= $chrs[$c];
break;
case ($ord_chrs_c & 0xE0) == 0xC0:
@@ -675,7 +675,7 @@ class Services_JSON
} elseif (preg_match('/^\[.*\]$/s', $str) || preg_match('/^\{.*\}$/s', $str)) {
// array, or object notation
- if ($str{0} == '[') {
+ if ($str[0] == '[') {
$stk = array(SERVICES_JSON_IN_ARR);
$arr = array();
} else {
@@ -714,7 +714,7 @@ class Services_JSON
$top = end($stk);
$substr_chrs_c_2 = substr($chrs, $c, 2);
- if (($c == $strlen_chrs) || (($chrs{$c} == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
+ if (($c == $strlen_chrs) || (($chrs[$c] == ',') && ($top['what'] == SERVICES_JSON_SLICE))) {
// found a comma that is not inside a string, array, etc.,
// OR we've reached the end of the character list
$slice = substr($chrs, $top['where'], ($c - $top['where']));
@@ -756,37 +756,37 @@ class Services_JSON
}
- } elseif ((($chrs{$c} == '"') || ($chrs{$c} == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
+ } elseif ((($chrs[$c] == '"') || ($chrs[$c] == "'")) && ($top['what'] != SERVICES_JSON_IN_STR)) {
// found a quote, and we are not inside a string
- array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs{$c}));
+ array_push($stk, array('what' => SERVICES_JSON_IN_STR, 'where' => $c, 'delim' => $chrs[$c]));
//print("Found start of string at {$c}\n");
- } elseif (($chrs{$c} == $top['delim']) &&
+ } elseif (($chrs[$c] == $top['delim']) &&
($top['what'] == SERVICES_JSON_IN_STR) &&
- (($chrs{$c - 1} != '\\') ||
- ($chrs{$c - 1} == '\\' && $chrs{$c - 2} == '\\'))) {
+ (($chrs[$c - 1] != '\\') ||
+ ($chrs[$c - 1] == '\\' && $chrs[$c - 2] == '\\'))) {
// found a quote, we're in a string, and it's not escaped
array_pop($stk);
//print("Found end of string at {$c}: ".substr($chrs, $top['where'], (1 + 1 + $c - $top['where']))."\n");
- } elseif (($chrs{$c} == '[') &&
+ } elseif (($chrs[$c] == '[') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-bracket, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_ARR, 'where' => $c, 'delim' => false));
//print("Found start of array at {$c}\n");
- } elseif (($chrs{$c} == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
+ } elseif (($chrs[$c] == ']') && ($top['what'] == SERVICES_JSON_IN_ARR)) {
// found a right-bracket, and we're in an array
array_pop($stk);
//print("Found end of array at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
- } elseif (($chrs{$c} == '{') &&
+ } elseif (($chrs[$c] == '{') &&
in_array($top['what'], array(SERVICES_JSON_SLICE, SERVICES_JSON_IN_ARR, SERVICES_JSON_IN_OBJ))) {
// found a left-brace, and we are in an array, object, or slice
array_push($stk, array('what' => SERVICES_JSON_IN_OBJ, 'where' => $c, 'delim' => false));
//print("Found start of object at {$c}\n");
- } elseif (($chrs{$c} == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
+ } elseif (($chrs[$c] == '}') && ($top['what'] == SERVICES_JSON_IN_OBJ)) {
// found a right-brace, and we're in an object
array_pop($stk);
//print("Found end of object at {$c}: ".substr($chrs, $top['where'], (1 + $c - $top['where']))."\n");
diff --git a/includes/libs/CSSMin.php b/includes/libs/CSSMin.php
index c0e78112..4012b695 100644
--- a/includes/libs/CSSMin.php
+++ b/includes/libs/CSSMin.php
@@ -1,24 +1,24 @@
<?php
/*
* Copyright 2010 Wikimedia Foundation
- *
+ *
* Licensed under the Apache License, Version 2.0 (the "License"); you may
* not use this file except in compliance with the License.
* You may obtain a copy of the License at
- *
+ *
* http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
* Unless required by applicable law or agreed to in writing, software distributed
* under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
* OF ANY KIND, either express or implied. See the License for the
- * specific language governing permissions and limitations under the License.
+ * specific language governing permissions and limitations under the License.
*/
/**
* Transforms CSS data
- *
+ *
* This class provides minification, URL remapping, URL extracting, and data-URL embedding.
- *
+ *
* @file
* @version 0.1.1 -- 2010-09-11
* @author Trevor Parscal <tparscal@wikimedia.org>
@@ -26,9 +26,9 @@
* @license http://www.apache.org/licenses/LICENSE-2.0
*/
class CSSMin {
-
+
/* Constants */
-
+
/**
* Maximum file size to still qualify for in-line embedding as a data-URI
*
@@ -37,9 +37,9 @@ class CSSMin {
*/
const EMBED_SIZE_LIMIT = 24576;
const URL_REGEX = 'url\(\s*[\'"]?(?P<file>[^\?\)\'"]*)(?P<query>\??[^\)\'"]*)[\'"]?\s*\)';
-
+
/* Protected Static Members */
-
+
/** @var array List of common image files extensions and mime-types */
protected static $mimeTypes = array(
'gif' => 'image/gif',
@@ -51,9 +51,9 @@ class CSSMin {
'tiff' => 'image/tiff',
'xbm' => 'image/x-xbitmap',
);
-
+
/* Static Methods */
-
+
/**
* Gets a list of local file paths which are referenced in a CSS style sheet
*
@@ -78,7 +78,7 @@ class CSSMin {
}
return $files;
}
-
+
protected static function getMimeType( $file ) {
$realpath = realpath( $file );
// Try a couple of different ways to get the mime-type of a file, in order of
@@ -92,7 +92,7 @@ class CSSMin {
// As of PHP 5.3, this is how you get the mime-type of a file; it uses the Fileinfo
// PECL extension
return finfo_file( finfo_open( FILEINFO_MIME_TYPE ), $realpath );
- } else if ( function_exists( 'mime_content_type' ) ) {
+ } elseif ( function_exists( 'mime_content_type' ) ) {
// Before this was deprecated in PHP 5.3, this was how you got the mime-type of a file
return mime_content_type( $file );
} else {
@@ -104,7 +104,7 @@ class CSSMin {
}
return false;
}
-
+
/**
* Remaps CSS URL paths and automatically embeds data URIs for URL rules
* preceded by an /* @embed * / comment
@@ -130,12 +130,20 @@ class CSSMin {
// URLs with absolute paths like /w/index.php need to be expanded
// to absolute URLs but otherwise left alone
if ( $match['file'][0] !== '' && $match['file'][0][0] === '/' ) {
- // Replace the file path with an expanded URL
- $source = substr_replace( $source, wfExpandUrl( $match['file'][0] ),
- $match['file'][1], strlen( $match['file'][0] )
- );
+ // Replace the file path with an expanded (possibly protocol-relative) URL
+ // ...but only if wfExpandUrl() is even available.
+ // This will not be the case if we're running outside of MW
+ $lengthIncrease = 0;
+ if ( function_exists( 'wfExpandUrl' ) ) {
+ $expanded = wfExpandUrl( $match['file'][0], PROTO_RELATIVE );
+ $origLength = strlen( $match['file'][0] );
+ $lengthIncrease = strlen( $expanded ) - $origLength;
+ $source = substr_replace( $source, $expanded,
+ $match['file'][1], $origLength
+ );
+ }
// Move the offset to the end of the match, leaving it alone
- $offset = $match[0][1] + strlen( $match[0][0] );
+ $offset = $match[0][1] + strlen( $match[0][0] ) + $lengthIncrease;
continue;
}
// Shortcuts
@@ -175,9 +183,9 @@ class CSSMin {
}
if ( $replacement === false ) {
// Assume that all paths are relative to $remote, and make them absolute
- $replacement = "{$embed}{$pre}url({$url}){$post};";
+ $replacement = "{$embed}{$pre}url({$url}){$post};";
}
- } else if ( $local === false ) {
+ } elseif ( $local === false ) {
// Assume that all paths are relative to $remote, and make them absolute
$replacement = "{$embed}{$pre}url({$url}{$query}){$post};";
}
diff --git a/includes/libs/HttpStatus.php b/includes/libs/HttpStatus.php
new file mode 100644
index 00000000..2985c652
--- /dev/null
+++ b/includes/libs/HttpStatus.php
@@ -0,0 +1,68 @@
+<?php
+/**
+ * @todo document
+ */
+class HttpStatus {
+
+ /**
+ * Get the message associed with the HTTP response code $code
+ *
+ * Replace OutputPage::getStatusMessage( $code )
+ *
+ * @param $code Integer: status code
+ * @return String or null: message or null if $code is not in the list of
+ * messages
+ */
+ public static function getMessage( $code ) {
+ static $statusMessage = array(
+ 100 => 'Continue',
+ 101 => 'Switching Protocols',
+ 102 => 'Processing',
+ 200 => 'OK',
+ 201 => 'Created',
+ 202 => 'Accepted',
+ 203 => 'Non-Authoritative Information',
+ 204 => 'No Content',
+ 205 => 'Reset Content',
+ 206 => 'Partial Content',
+ 207 => 'Multi-Status',
+ 300 => 'Multiple Choices',
+ 301 => 'Moved Permanently',
+ 302 => 'Found',
+ 303 => 'See Other',
+ 304 => 'Not Modified',
+ 305 => 'Use Proxy',
+ 307 => 'Temporary Redirect',
+ 400 => 'Bad Request',
+ 401 => 'Unauthorized',
+ 402 => 'Payment Required',
+ 403 => 'Forbidden',
+ 404 => 'Not Found',
+ 405 => 'Method Not Allowed',
+ 406 => 'Not Acceptable',
+ 407 => 'Proxy Authentication Required',
+ 408 => 'Request Timeout',
+ 409 => 'Conflict',
+ 410 => 'Gone',
+ 411 => 'Length Required',
+ 412 => 'Precondition Failed',
+ 413 => 'Request Entity Too Large',
+ 414 => 'Request-URI Too Large',
+ 415 => 'Unsupported Media Type',
+ 416 => 'Request Range Not Satisfiable',
+ 417 => 'Expectation Failed',
+ 422 => 'Unprocessable Entity',
+ 423 => 'Locked',
+ 424 => 'Failed Dependency',
+ 500 => 'Internal Server Error',
+ 501 => 'Not Implemented',
+ 502 => 'Bad Gateway',
+ 503 => 'Service Unavailable',
+ 504 => 'Gateway Timeout',
+ 505 => 'HTTP Version Not Supported',
+ 507 => 'Insufficient Storage'
+ );
+ return isset( $statusMessage[$code] ) ? $statusMessage[$code] : null;
+ }
+
+}
diff --git a/includes/libs/jsminplus.php b/includes/libs/jsminplus.php
new file mode 100644
index 00000000..bab4ff49
--- /dev/null
+++ b/includes/libs/jsminplus.php
@@ -0,0 +1,2094 @@
+<?php
+
+/**
+ * JSMinPlus version 1.3
+ *
+ * Minifies a javascript file using a javascript parser
+ *
+ * This implements a PHP port of Brendan Eich's Narcissus open source javascript engine (in javascript)
+ * References: http://en.wikipedia.org/wiki/Narcissus_(JavaScript_engine)
+ * Narcissus sourcecode: http://mxr.mozilla.org/mozilla/source/js/narcissus/
+ * JSMinPlus weblog: http://crisp.tweakblogs.net/blog/cat/716
+ *
+ * Tino Zijdel <crisp@tweakers.net>
+ *
+ * Usage: $minified = JSMinPlus::minify($script [, $filename])
+ *
+ * Versionlog (see also changelog.txt):
+ * 19-07-2011 - expanded operator and keyword defines. Fixes the notices when creating several JSTokenizer
+ * 17-05-2009 - fixed hook:colon precedence, fixed empty body in loop and if-constructs
+ * 18-04-2009 - fixed crashbug in PHP 5.2.9 and several other bugfixes
+ * 12-04-2009 - some small bugfixes and performance improvements
+ * 09-04-2009 - initial open sourced version 1.0
+ *
+ * Latest version of this script: http://files.tweakers.net/jsminplus/jsminplus.zip
+ *
+ */
+
+/* ***** BEGIN LICENSE BLOCK *****
+ * Version: MPL 1.1/GPL 2.0/LGPL 2.1
+ *
+ * The contents of this file are subject to the Mozilla Public License Version
+ * 1.1 (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * http://www.mozilla.org/MPL/
+ *
+ * Software distributed under the License is distributed on an "AS IS" basis,
+ * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
+ * for the specific language governing rights and limitations under the
+ * License.
+ *
+ * The Original Code is the Narcissus JavaScript engine.
+ *
+ * The Initial Developer of the Original Code is
+ * Brendan Eich <brendan@mozilla.org>.
+ * Portions created by the Initial Developer are Copyright (C) 2004
+ * the Initial Developer. All Rights Reserved.
+ *
+ * Contributor(s): Tino Zijdel <crisp@tweakers.net>
+ * PHP port, modifications and minifier routine are (C) 2009
+ *
+ * Alternatively, the contents of this file may be used under the terms of
+ * either the GNU General Public License Version 2 or later (the "GPL"), or
+ * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
+ * in which case the provisions of the GPL or the LGPL are applicable instead
+ * of those above. If you wish to allow use of your version of this file only
+ * under the terms of either the GPL or the LGPL, and not to allow others to
+ * use your version of this file under the terms of the MPL, indicate your
+ * decision by deleting the provisions above and replace them with the notice
+ * and other provisions required by the GPL or the LGPL. If you do not delete
+ * the provisions above, a recipient may use your version of this file under
+ * the terms of any one of the MPL, the GPL or the LGPL.
+ *
+ * ***** END LICENSE BLOCK ***** */
+
+define('TOKEN_END', 1);
+define('TOKEN_NUMBER', 2);
+define('TOKEN_IDENTIFIER', 3);
+define('TOKEN_STRING', 4);
+define('TOKEN_REGEXP', 5);
+define('TOKEN_NEWLINE', 6);
+define('TOKEN_CONDCOMMENT_START', 7);
+define('TOKEN_CONDCOMMENT_END', 8);
+
+define('JS_SCRIPT', 100);
+define('JS_BLOCK', 101);
+define('JS_LABEL', 102);
+define('JS_FOR_IN', 103);
+define('JS_CALL', 104);
+define('JS_NEW_WITH_ARGS', 105);
+define('JS_INDEX', 106);
+define('JS_ARRAY_INIT', 107);
+define('JS_OBJECT_INIT', 108);
+define('JS_PROPERTY_INIT', 109);
+define('JS_GETTER', 110);
+define('JS_SETTER', 111);
+define('JS_GROUP', 112);
+define('JS_LIST', 113);
+
+define('DECLARED_FORM', 0);
+define('EXPRESSED_FORM', 1);
+define('STATEMENT_FORM', 2);
+
+/* Operators */
+define('OP_SEMICOLON', ';');
+define('OP_COMMA', ',');
+define('OP_HOOK', '?');
+define('OP_COLON', ':');
+define('OP_OR', '||');
+define('OP_AND', '&&');
+define('OP_BITWISE_OR', '|');
+define('OP_BITWISE_XOR', '^');
+define('OP_BITWISE_AND', '&');
+define('OP_STRICT_EQ', '===');
+define('OP_EQ', '==');
+define('OP_ASSIGN', '=');
+define('OP_STRICT_NE', '!==');
+define('OP_NE', '!=');
+define('OP_LSH', '<<');
+define('OP_LE', '<=');
+define('OP_LT', '<');
+define('OP_URSH', '>>>');
+define('OP_RSH', '>>');
+define('OP_GE', '>=');
+define('OP_GT', '>');
+define('OP_INCREMENT', '++');
+define('OP_DECREMENT', '--');
+define('OP_PLUS', '+');
+define('OP_MINUS', '-');
+define('OP_MUL', '*');
+define('OP_DIV', '/');
+define('OP_MOD', '%');
+define('OP_NOT', '!');
+define('OP_BITWISE_NOT', '~');
+define('OP_DOT', '.');
+define('OP_LEFT_BRACKET', '[');
+define('OP_RIGHT_BRACKET', ']');
+define('OP_LEFT_CURLY', '{');
+define('OP_RIGHT_CURLY', '}');
+define('OP_LEFT_PAREN', '(');
+define('OP_RIGHT_PAREN', ')');
+define('OP_CONDCOMMENT_END', '@*/');
+
+define('OP_UNARY_PLUS', 'U+');
+define('OP_UNARY_MINUS', 'U-');
+
+/* Keywords */
+define('KEYWORD_BREAK', 'break');
+define('KEYWORD_CASE', 'case');
+define('KEYWORD_CATCH', 'catch');
+define('KEYWORD_CONST', 'const');
+define('KEYWORD_CONTINUE', 'continue');
+define('KEYWORD_DEBUGGER', 'debugger');
+define('KEYWORD_DEFAULT', 'default');
+define('KEYWORD_DELETE', 'delete');
+define('KEYWORD_DO', 'do');
+define('KEYWORD_ELSE', 'else');
+define('KEYWORD_ENUM', 'enum');
+define('KEYWORD_FALSE', 'false');
+define('KEYWORD_FINALLY', 'finally');
+define('KEYWORD_FOR', 'for');
+define('KEYWORD_FUNCTION', 'function');
+define('KEYWORD_IF', 'if');
+define('KEYWORD_IN', 'in');
+define('KEYWORD_INSTANCEOF', 'instanceof');
+define('KEYWORD_NEW', 'new');
+define('KEYWORD_NULL', 'null');
+define('KEYWORD_RETURN', 'return');
+define('KEYWORD_SWITCH', 'switch');
+define('KEYWORD_THIS', 'this');
+define('KEYWORD_THROW', 'throw');
+define('KEYWORD_TRUE', 'true');
+define('KEYWORD_TRY', 'try');
+define('KEYWORD_TYPEOF', 'typeof');
+define('KEYWORD_VAR', 'var');
+define('KEYWORD_VOID', 'void');
+define('KEYWORD_WHILE', 'while');
+define('KEYWORD_WITH', 'with');
+
+
+class JSMinPlus
+{
+ private $parser;
+ private $reserved = array(
+ 'break', 'case', 'catch', 'continue', 'default', 'delete', 'do',
+ 'else', 'finally', 'for', 'function', 'if', 'in', 'instanceof',
+ 'new', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'var',
+ 'void', 'while', 'with',
+ // Words reserved for future use
+ 'abstract', 'boolean', 'byte', 'char', 'class', 'const', 'debugger',
+ 'double', 'enum', 'export', 'extends', 'final', 'float', 'goto',
+ 'implements', 'import', 'int', 'interface', 'long', 'native',
+ 'package', 'private', 'protected', 'public', 'short', 'static',
+ 'super', 'synchronized', 'throws', 'transient', 'volatile',
+ // These are not reserved, but should be taken into account
+ // in isValidIdentifier (See jslint source code)
+ 'arguments', 'eval', 'true', 'false', 'Infinity', 'NaN', 'null', 'undefined'
+ );
+
+ private function __construct()
+ {
+ $this->parser = new JSParser();
+ }
+
+ public static function minify($js, $filename='')
+ {
+ static $instance;
+
+ // this is a singleton
+ if(!$instance)
+ $instance = new JSMinPlus();
+
+ return $instance->min($js, $filename);
+ }
+
+ private function min($js, $filename)
+ {
+ try
+ {
+ $n = $this->parser->parse($js, $filename, 1);
+ return $this->parseTree($n);
+ }
+ catch(Exception $e)
+ {
+ echo $e->getMessage() . "\n";
+ }
+
+ return false;
+ }
+
+ private function parseTree($n, $noBlockGrouping = false)
+ {
+ $s = '';
+
+ switch ($n->type)
+ {
+ case KEYWORD_FUNCTION:
+ $s .= 'function' . ($n->name ? ' ' . $n->name : '') . '(';
+ $params = $n->params;
+ for ($i = 0, $j = count($params); $i < $j; $i++)
+ $s .= ($i ? ',' : '') . $params[$i];
+ $s .= '){' . $this->parseTree($n->body, true) . '}';
+ break;
+
+ case JS_SCRIPT:
+ // we do nothing with funDecls or varDecls
+ $noBlockGrouping = true;
+ // FALL THROUGH
+
+ case JS_BLOCK:
+ $childs = $n->treeNodes;
+ $lastType = 0;
+ for ($c = 0, $i = 0, $j = count($childs); $i < $j; $i++)
+ {
+ $type = $childs[$i]->type;
+ $t = $this->parseTree($childs[$i]);
+ if (strlen($t))
+ {
+ if ($c)
+ {
+ $s = rtrim($s, ';');
+
+ if ($type == KEYWORD_FUNCTION && $childs[$i]->functionForm == DECLARED_FORM)
+ {
+ // put declared functions on a new line
+ $s .= "\n";
+ }
+ elseif ($type == KEYWORD_VAR && $type == $lastType)
+ {
+ // mutiple var-statements can go into one
+ $t = ',' . substr($t, 4);
+ }
+ else
+ {
+ // add terminator
+ $s .= ';';
+ }
+ }
+
+ $s .= $t;
+
+ $c++;
+ $lastType = $type;
+ }
+ }
+
+ if ($c > 1 && !$noBlockGrouping)
+ {
+ $s = '{' . $s . '}';
+ }
+ break;
+
+ case KEYWORD_IF:
+ $s = 'if(' . $this->parseTree($n->condition) . ')';
+ $thenPart = $this->parseTree($n->thenPart);
+ $elsePart = $n->elsePart ? $this->parseTree($n->elsePart) : null;
+
+ // empty if-statement
+ if ($thenPart == '')
+ $thenPart = ';';
+
+ if ($elsePart)
+ {
+ // be carefull and always make a block out of the thenPart; could be more optimized but is a lot of trouble
+ if ($thenPart != ';' && $thenPart[0] != '{')
+ $thenPart = '{' . $thenPart . '}';
+
+ $s .= $thenPart . 'else';
+
+ // we could check for more, but that hardly ever applies so go for performance
+ if ($elsePart[0] != '{')
+ $s .= ' ';
+
+ $s .= $elsePart;
+ }
+ else
+ {
+ $s .= $thenPart;
+ }
+ break;
+
+ case KEYWORD_SWITCH:
+ $s = 'switch(' . $this->parseTree($n->discriminant) . '){';
+ $cases = $n->cases;
+ for ($i = 0, $j = count($cases); $i < $j; $i++)
+ {
+ $case = $cases[$i];
+ if ($case->type == KEYWORD_CASE)
+ $s .= 'case' . ($case->caseLabel->type != TOKEN_STRING ? ' ' : '') . $this->parseTree($case->caseLabel) . ':';
+ else
+ $s .= 'default:';
+
+ $statement = $this->parseTree($case->statements, true);
+ if ($statement)
+ {
+ $s .= $statement;
+ // no terminator for last statement
+ if ($i + 1 < $j)
+ $s .= ';';
+ }
+ }
+ $s .= '}';
+ break;
+
+ case KEYWORD_FOR:
+ $s = 'for(' . ($n->setup ? $this->parseTree($n->setup) : '')
+ . ';' . ($n->condition ? $this->parseTree($n->condition) : '')
+ . ';' . ($n->update ? $this->parseTree($n->update) : '') . ')';
+
+ $body = $this->parseTree($n->body);
+ if ($body == '')
+ $body = ';';
+
+ $s .= $body;
+ break;
+
+ case KEYWORD_WHILE:
+ $s = 'while(' . $this->parseTree($n->condition) . ')';
+
+ $body = $this->parseTree($n->body);
+ if ($body == '')
+ $body = ';';
+
+ $s .= $body;
+ break;
+
+ case JS_FOR_IN:
+ $s = 'for(' . ($n->varDecl ? $this->parseTree($n->varDecl) : $this->parseTree($n->iterator)) . ' in ' . $this->parseTree($n->object) . ')';
+
+ $body = $this->parseTree($n->body);
+ if ($body == '')
+ $body = ';';
+
+ $s .= $body;
+ break;
+
+ case KEYWORD_DO:
+ $s = 'do{' . $this->parseTree($n->body, true) . '}while(' . $this->parseTree($n->condition) . ')';
+ break;
+
+ case KEYWORD_BREAK:
+ case KEYWORD_CONTINUE:
+ $s = $n->value . ($n->label ? ' ' . $n->label : '');
+ break;
+
+ case KEYWORD_TRY:
+ $s = 'try{' . $this->parseTree($n->tryBlock, true) . '}';
+ $catchClauses = $n->catchClauses;
+ for ($i = 0, $j = count($catchClauses); $i < $j; $i++)
+ {
+ $t = $catchClauses[$i];
+ $s .= 'catch(' . $t->varName . ($t->guard ? ' if ' . $this->parseTree($t->guard) : '') . '){' . $this->parseTree($t->block, true) . '}';
+ }
+ if ($n->finallyBlock)
+ $s .= 'finally{' . $this->parseTree($n->finallyBlock, true) . '}';
+ break;
+
+ case KEYWORD_THROW:
+ $s = 'throw ' . $this->parseTree($n->exception);
+ break;
+
+ case KEYWORD_RETURN:
+ $s = 'return';
+ if ($n->value)
+ {
+ $t = $this->parseTree($n->value);
+ if (strlen($t))
+ {
+ if ( $t[0] != '(' && $t[0] != '[' && $t[0] != '{' &&
+ $t[0] != '"' && $t[0] != "'" && $t[0] != '/'
+ )
+ $s .= ' ';
+
+ $s .= $t;
+ }
+ }
+ break;
+
+ case KEYWORD_WITH:
+ $s = 'with(' . $this->parseTree($n->object) . ')' . $this->parseTree($n->body);
+ break;
+
+ case KEYWORD_VAR:
+ case KEYWORD_CONST:
+ $s = $n->value . ' ';
+ $childs = $n->treeNodes;
+ for ($i = 0, $j = count($childs); $i < $j; $i++)
+ {
+ $t = $childs[$i];
+ $s .= ($i ? ',' : '') . $t->name;
+ $u = $t->initializer;
+ if ($u)
+ $s .= '=' . $this->parseTree($u);
+ }
+ break;
+
+ case KEYWORD_DEBUGGER:
+ throw new Exception('NOT IMPLEMENTED: DEBUGGER');
+ break;
+
+ case TOKEN_CONDCOMMENT_START:
+ case TOKEN_CONDCOMMENT_END:
+ $s = $n->value . ($n->type == TOKEN_CONDCOMMENT_START ? ' ' : '');
+ $childs = $n->treeNodes;
+ for ($i = 0, $j = count($childs); $i < $j; $i++)
+ $s .= $this->parseTree($childs[$i]);
+ break;
+
+ case OP_SEMICOLON:
+ if ($expression = $n->expression)
+ $s = $this->parseTree($expression);
+ break;
+
+ case JS_LABEL:
+ $s = $n->label . ':' . $this->parseTree($n->statement);
+ break;
+
+ case OP_COMMA:
+ $childs = $n->treeNodes;
+ for ($i = 0, $j = count($childs); $i < $j; $i++)
+ $s .= ($i ? ',' : '') . $this->parseTree($childs[$i]);
+ break;
+
+ case OP_ASSIGN:
+ $s = $this->parseTree($n->treeNodes[0]) . $n->value . $this->parseTree($n->treeNodes[1]);
+ break;
+
+ case OP_HOOK:
+ $s = $this->parseTree($n->treeNodes[0]) . '?' . $this->parseTree($n->treeNodes[1]) . ':' . $this->parseTree($n->treeNodes[2]);
+ break;
+
+ case OP_OR: case OP_AND:
+ case OP_BITWISE_OR: case OP_BITWISE_XOR: case OP_BITWISE_AND:
+ case OP_EQ: case OP_NE: case OP_STRICT_EQ: case OP_STRICT_NE:
+ case OP_LT: case OP_LE: case OP_GE: case OP_GT:
+ case OP_LSH: case OP_RSH: case OP_URSH:
+ case OP_MUL: case OP_DIV: case OP_MOD:
+ $s = $this->parseTree($n->treeNodes[0]) . $n->type . $this->parseTree($n->treeNodes[1]);
+ break;
+
+ case OP_PLUS:
+ case OP_MINUS:
+ $left = $this->parseTree($n->treeNodes[0]);
+ $right = $this->parseTree($n->treeNodes[1]);
+
+ switch ($n->treeNodes[1]->type)
+ {
+ case OP_PLUS:
+ case OP_MINUS:
+ case OP_INCREMENT:
+ case OP_DECREMENT:
+ case OP_UNARY_PLUS:
+ case OP_UNARY_MINUS:
+ $s = $left . $n->type . ' ' . $right;
+ break;
+
+ case TOKEN_STRING:
+ //combine concatted strings with same quotestyle
+ if ($n->type == OP_PLUS && substr($left, -1) == $right[0])
+ {
+ $s = substr($left, 0, -1) . substr($right, 1);
+ break;
+ }
+ // FALL THROUGH
+
+ default:
+ $s = $left . $n->type . $right;
+ }
+ break;
+
+ case KEYWORD_IN:
+ $s = $this->parseTree($n->treeNodes[0]) . ' in ' . $this->parseTree($n->treeNodes[1]);
+ break;
+
+ case KEYWORD_INSTANCEOF:
+ $s = $this->parseTree($n->treeNodes[0]) . ' instanceof ' . $this->parseTree($n->treeNodes[1]);
+ break;
+
+ case KEYWORD_DELETE:
+ $s = 'delete ' . $this->parseTree($n->treeNodes[0]);
+ break;
+
+ case KEYWORD_VOID:
+ $s = 'void(' . $this->parseTree($n->treeNodes[0]) . ')';
+ break;
+
+ case KEYWORD_TYPEOF:
+ $s = 'typeof ' . $this->parseTree($n->treeNodes[0]);
+ break;
+
+ case OP_NOT:
+ case OP_BITWISE_NOT:
+ case OP_UNARY_PLUS:
+ case OP_UNARY_MINUS:
+ $s = $n->value . $this->parseTree($n->treeNodes[0]);
+ break;
+
+ case OP_INCREMENT:
+ case OP_DECREMENT:
+ if ($n->postfix)
+ $s = $this->parseTree($n->treeNodes[0]) . $n->value;
+ else
+ $s = $n->value . $this->parseTree($n->treeNodes[0]);
+ break;
+
+ case OP_DOT:
+ $s = $this->parseTree($n->treeNodes[0]) . '.' . $this->parseTree($n->treeNodes[1]);
+ break;
+
+ case JS_INDEX:
+ $s = $this->parseTree($n->treeNodes[0]);
+ // See if we can replace named index with a dot saving 3 bytes
+ if ( $n->treeNodes[0]->type == TOKEN_IDENTIFIER &&
+ $n->treeNodes[1]->type == TOKEN_STRING &&
+ $this->isValidIdentifier(substr($n->treeNodes[1]->value, 1, -1))
+ )
+ $s .= '.' . substr($n->treeNodes[1]->value, 1, -1);
+ else
+ $s .= '[' . $this->parseTree($n->treeNodes[1]) . ']';
+ break;
+
+ case JS_LIST:
+ $childs = $n->treeNodes;
+ for ($i = 0, $j = count($childs); $i < $j; $i++)
+ $s .= ($i ? ',' : '') . $this->parseTree($childs[$i]);
+ break;
+
+ case JS_CALL:
+ $s = $this->parseTree($n->treeNodes[0]) . '(' . $this->parseTree($n->treeNodes[1]) . ')';
+ break;
+
+ case KEYWORD_NEW:
+ case JS_NEW_WITH_ARGS:
+ $s = 'new ' . $this->parseTree($n->treeNodes[0]) . '(' . ($n->type == JS_NEW_WITH_ARGS ? $this->parseTree($n->treeNodes[1]) : '') . ')';
+ break;
+
+ case JS_ARRAY_INIT:
+ $s = '[';
+ $childs = $n->treeNodes;
+ for ($i = 0, $j = count($childs); $i < $j; $i++)
+ {
+ $s .= ($i ? ',' : '') . $this->parseTree($childs[$i]);
+ }
+ $s .= ']';
+ break;
+
+ case JS_OBJECT_INIT:
+ $s = '{';
+ $childs = $n->treeNodes;
+ for ($i = 0, $j = count($childs); $i < $j; $i++)
+ {
+ $t = $childs[$i];
+ if ($i)
+ $s .= ',';
+ if ($t->type == JS_PROPERTY_INIT)
+ {
+ // Ditch the quotes when the index is a valid identifier
+ if ( $t->treeNodes[0]->type == TOKEN_STRING &&
+ $this->isValidIdentifier(substr($t->treeNodes[0]->value, 1, -1))
+ )
+ $s .= substr($t->treeNodes[0]->value, 1, -1);
+ else
+ $s .= $t->treeNodes[0]->value;
+
+ $s .= ':' . $this->parseTree($t->treeNodes[1]);
+ }
+ else
+ {
+ $s .= $t->type == JS_GETTER ? 'get' : 'set';
+ $s .= ' ' . $t->name . '(';
+ $params = $t->params;
+ for ($i = 0, $j = count($params); $i < $j; $i++)
+ $s .= ($i ? ',' : '') . $params[$i];
+ $s .= '){' . $this->parseTree($t->body, true) . '}';
+ }
+ }
+ $s .= '}';
+ break;
+
+ case KEYWORD_NULL: case KEYWORD_THIS: case KEYWORD_TRUE: case KEYWORD_FALSE:
+ case TOKEN_IDENTIFIER: case TOKEN_NUMBER: case TOKEN_STRING: case TOKEN_REGEXP:
+ $s = $n->value;
+ break;
+
+ case JS_GROUP:
+ $s = '(' . $this->parseTree($n->treeNodes[0]) . ')';
+ break;
+
+ default:
+ throw new Exception('UNKNOWN TOKEN TYPE: ' . $n->type);
+ }
+
+ return $s;
+ }
+
+ private function isValidIdentifier($string)
+ {
+ return preg_match('/^[a-zA-Z_][a-zA-Z0-9_]*$/', $string) && !in_array($string, $this->reserved);
+ }
+}
+
+class JSParser
+{
+ private $t;
+
+ private $opPrecedence = array(
+ ';' => 0,
+ ',' => 1,
+ '=' => 2, '?' => 2, ':' => 2,
+ // The above all have to have the same precedence, see bug 330975
+ '||' => 4,
+ '&&' => 5,
+ '|' => 6,
+ '^' => 7,
+ '&' => 8,
+ '==' => 9, '!=' => 9, '===' => 9, '!==' => 9,
+ '<' => 10, '<=' => 10, '>=' => 10, '>' => 10, 'in' => 10, 'instanceof' => 10,
+ '<<' => 11, '>>' => 11, '>>>' => 11,
+ '+' => 12, '-' => 12,
+ '*' => 13, '/' => 13, '%' => 13,
+ 'delete' => 14, 'void' => 14, 'typeof' => 14,
+ '!' => 14, '~' => 14, 'U+' => 14, 'U-' => 14,
+ '++' => 15, '--' => 15,
+ 'new' => 16,
+ '.' => 17,
+ JS_NEW_WITH_ARGS => 0, JS_INDEX => 0, JS_CALL => 0,
+ JS_ARRAY_INIT => 0, JS_OBJECT_INIT => 0, JS_GROUP => 0
+ );
+
+ private $opArity = array(
+ ',' => -2,
+ '=' => 2,
+ '?' => 3,
+ '||' => 2,
+ '&&' => 2,
+ '|' => 2,
+ '^' => 2,
+ '&' => 2,
+ '==' => 2, '!=' => 2, '===' => 2, '!==' => 2,
+ '<' => 2, '<=' => 2, '>=' => 2, '>' => 2, 'in' => 2, 'instanceof' => 2,
+ '<<' => 2, '>>' => 2, '>>>' => 2,
+ '+' => 2, '-' => 2,
+ '*' => 2, '/' => 2, '%' => 2,
+ 'delete' => 1, 'void' => 1, 'typeof' => 1,
+ '!' => 1, '~' => 1, 'U+' => 1, 'U-' => 1,
+ '++' => 1, '--' => 1,
+ 'new' => 1,
+ '.' => 2,
+ JS_NEW_WITH_ARGS => 2, JS_INDEX => 2, JS_CALL => 2,
+ JS_ARRAY_INIT => 1, JS_OBJECT_INIT => 1, JS_GROUP => 1,
+ TOKEN_CONDCOMMENT_START => 1, TOKEN_CONDCOMMENT_END => 1
+ );
+
+ public function __construct()
+ {
+ $this->t = new JSTokenizer();
+ }
+
+ public function parse($s, $f, $l)
+ {
+ // initialize tokenizer
+ $this->t->init($s, $f, $l);
+
+ $x = new JSCompilerContext(false);
+ $n = $this->Script($x);
+ if (!$this->t->isDone())
+ throw $this->t->newSyntaxError('Syntax error');
+
+ return $n;
+ }
+
+ private function Script($x)
+ {
+ $n = $this->Statements($x);
+ $n->type = JS_SCRIPT;
+ $n->funDecls = $x->funDecls;
+ $n->varDecls = $x->varDecls;
+
+ return $n;
+ }
+
+ private function Statements($x)
+ {
+ $n = new JSNode($this->t, JS_BLOCK);
+ array_push($x->stmtStack, $n);
+
+ while (!$this->t->isDone() && $this->t->peek() != OP_RIGHT_CURLY)
+ $n->addNode($this->Statement($x));
+
+ array_pop($x->stmtStack);
+
+ return $n;
+ }
+
+ private function Block($x)
+ {
+ $this->t->mustMatch(OP_LEFT_CURLY);
+ $n = $this->Statements($x);
+ $this->t->mustMatch(OP_RIGHT_CURLY);
+
+ return $n;
+ }
+
+ private function Statement($x)
+ {
+ $tt = $this->t->get();
+ $n2 = null;
+
+ // Cases for statements ending in a right curly return early, avoiding the
+ // common semicolon insertion magic after this switch.
+ switch ($tt)
+ {
+ case KEYWORD_FUNCTION:
+ return $this->FunctionDefinition(
+ $x,
+ true,
+ count($x->stmtStack) > 1 ? STATEMENT_FORM : DECLARED_FORM
+ );
+ break;
+
+ case OP_LEFT_CURLY:
+ $n = $this->Statements($x);
+ $this->t->mustMatch(OP_RIGHT_CURLY);
+ return $n;
+
+ case KEYWORD_IF:
+ $n = new JSNode($this->t);
+ $n->condition = $this->ParenExpression($x);
+ array_push($x->stmtStack, $n);
+ $n->thenPart = $this->Statement($x);
+ $n->elsePart = $this->t->match(KEYWORD_ELSE) ? $this->Statement($x) : null;
+ array_pop($x->stmtStack);
+ return $n;
+
+ case KEYWORD_SWITCH:
+ $n = new JSNode($this->t);
+ $this->t->mustMatch(OP_LEFT_PAREN);
+ $n->discriminant = $this->Expression($x);
+ $this->t->mustMatch(OP_RIGHT_PAREN);
+ $n->cases = array();
+ $n->defaultIndex = -1;
+
+ array_push($x->stmtStack, $n);
+
+ $this->t->mustMatch(OP_LEFT_CURLY);
+
+ while (($tt = $this->t->get()) != OP_RIGHT_CURLY)
+ {
+ switch ($tt)
+ {
+ case KEYWORD_DEFAULT:
+ if ($n->defaultIndex >= 0)
+ throw $this->t->newSyntaxError('More than one switch default');
+ // FALL THROUGH
+ case KEYWORD_CASE:
+ $n2 = new JSNode($this->t);
+ if ($tt == KEYWORD_DEFAULT)
+ $n->defaultIndex = count($n->cases);
+ else
+ $n2->caseLabel = $this->Expression($x, OP_COLON);
+ break;
+ default:
+ throw $this->t->newSyntaxError('Invalid switch case');
+ }
+
+ $this->t->mustMatch(OP_COLON);
+ $n2->statements = new JSNode($this->t, JS_BLOCK);
+ while (($tt = $this->t->peek()) != KEYWORD_CASE && $tt != KEYWORD_DEFAULT && $tt != OP_RIGHT_CURLY)
+ $n2->statements->addNode($this->Statement($x));
+
+ array_push($n->cases, $n2);
+ }
+
+ array_pop($x->stmtStack);
+ return $n;
+
+ case KEYWORD_FOR:
+ $n = new JSNode($this->t);
+ $n->isLoop = true;
+ $this->t->mustMatch(OP_LEFT_PAREN);
+
+ if (($tt = $this->t->peek()) != OP_SEMICOLON)
+ {
+ $x->inForLoopInit = true;
+ if ($tt == KEYWORD_VAR || $tt == KEYWORD_CONST)
+ {
+ $this->t->get();
+ $n2 = $this->Variables($x);
+ }
+ else
+ {
+ $n2 = $this->Expression($x);
+ }
+ $x->inForLoopInit = false;
+ }
+
+ if ($n2 && $this->t->match(KEYWORD_IN))
+ {
+ $n->type = JS_FOR_IN;
+ if ($n2->type == KEYWORD_VAR)
+ {
+ if (count($n2->treeNodes) != 1)
+ {
+ throw $this->t->SyntaxError(
+ 'Invalid for..in left-hand side',
+ $this->t->filename,
+ $n2->lineno
+ );
+ }
+
+ // NB: n2[0].type == IDENTIFIER and n2[0].value == n2[0].name.
+ $n->iterator = $n2->treeNodes[0];
+ $n->varDecl = $n2;
+ }
+ else
+ {
+ $n->iterator = $n2;
+ $n->varDecl = null;
+ }
+
+ $n->object = $this->Expression($x);
+ }
+ else
+ {
+ $n->setup = $n2 ? $n2 : null;
+ $this->t->mustMatch(OP_SEMICOLON);
+ $n->condition = $this->t->peek() == OP_SEMICOLON ? null : $this->Expression($x);
+ $this->t->mustMatch(OP_SEMICOLON);
+ $n->update = $this->t->peek() == OP_RIGHT_PAREN ? null : $this->Expression($x);
+ }
+
+ $this->t->mustMatch(OP_RIGHT_PAREN);
+ $n->body = $this->nest($x, $n);
+ return $n;
+
+ case KEYWORD_WHILE:
+ $n = new JSNode($this->t);
+ $n->isLoop = true;
+ $n->condition = $this->ParenExpression($x);
+ $n->body = $this->nest($x, $n);
+ return $n;
+
+ case KEYWORD_DO:
+ $n = new JSNode($this->t);
+ $n->isLoop = true;
+ $n->body = $this->nest($x, $n, KEYWORD_WHILE);
+ $n->condition = $this->ParenExpression($x);
+ if (!$x->ecmaStrictMode)
+ {
+ // <script language="JavaScript"> (without version hints) may need
+ // automatic semicolon insertion without a newline after do-while.
+ // See http://bugzilla.mozilla.org/show_bug.cgi?id=238945.
+ $this->t->match(OP_SEMICOLON);
+ return $n;
+ }
+ break;
+
+ case KEYWORD_BREAK:
+ case KEYWORD_CONTINUE:
+ $n = new JSNode($this->t);
+
+ if ($this->t->peekOnSameLine() == TOKEN_IDENTIFIER)
+ {
+ $this->t->get();
+ $n->label = $this->t->currentToken()->value;
+ }
+
+ $ss = $x->stmtStack;
+ $i = count($ss);
+ $label = $n->label;
+ if ($label)
+ {
+ do
+ {
+ if (--$i < 0)
+ throw $this->t->newSyntaxError('Label not found');
+ }
+ while ($ss[$i]->label != $label);
+ }
+ else
+ {
+ do
+ {
+ if (--$i < 0)
+ throw $this->t->newSyntaxError('Invalid ' . $tt);
+ }
+ while (!$ss[$i]->isLoop && ($tt != KEYWORD_BREAK || $ss[$i]->type != KEYWORD_SWITCH));
+ }
+
+ $n->target = $ss[$i];
+ break;
+
+ case KEYWORD_TRY:
+ $n = new JSNode($this->t);
+ $n->tryBlock = $this->Block($x);
+ $n->catchClauses = array();
+
+ while ($this->t->match(KEYWORD_CATCH))
+ {
+ $n2 = new JSNode($this->t);
+ $this->t->mustMatch(OP_LEFT_PAREN);
+ $n2->varName = $this->t->mustMatch(TOKEN_IDENTIFIER)->value;
+
+ if ($this->t->match(KEYWORD_IF))
+ {
+ if ($x->ecmaStrictMode)
+ throw $this->t->newSyntaxError('Illegal catch guard');
+
+ if (count($n->catchClauses) && !end($n->catchClauses)->guard)
+ throw $this->t->newSyntaxError('Guarded catch after unguarded');
+
+ $n2->guard = $this->Expression($x);
+ }
+ else
+ {
+ $n2->guard = null;
+ }
+
+ $this->t->mustMatch(OP_RIGHT_PAREN);
+ $n2->block = $this->Block($x);
+ array_push($n->catchClauses, $n2);
+ }
+
+ if ($this->t->match(KEYWORD_FINALLY))
+ $n->finallyBlock = $this->Block($x);
+
+ if (!count($n->catchClauses) && !$n->finallyBlock)
+ throw $this->t->newSyntaxError('Invalid try statement');
+ return $n;
+
+ case KEYWORD_CATCH:
+ case KEYWORD_FINALLY:
+ throw $this->t->newSyntaxError($tt + ' without preceding try');
+
+ case KEYWORD_THROW:
+ $n = new JSNode($this->t);
+ $n->exception = $this->Expression($x);
+ break;
+
+ case KEYWORD_RETURN:
+ if (!$x->inFunction)
+ throw $this->t->newSyntaxError('Invalid return');
+
+ $n = new JSNode($this->t);
+ $tt = $this->t->peekOnSameLine();
+ if ($tt != TOKEN_END && $tt != TOKEN_NEWLINE && $tt != OP_SEMICOLON && $tt != OP_RIGHT_CURLY)
+ $n->value = $this->Expression($x);
+ else
+ $n->value = null;
+ break;
+
+ case KEYWORD_WITH:
+ $n = new JSNode($this->t);
+ $n->object = $this->ParenExpression($x);
+ $n->body = $this->nest($x, $n);
+ return $n;
+
+ case KEYWORD_VAR:
+ case KEYWORD_CONST:
+ $n = $this->Variables($x);
+ break;
+
+ case TOKEN_CONDCOMMENT_START:
+ case TOKEN_CONDCOMMENT_END:
+ $n = new JSNode($this->t);
+ return $n;
+
+ case KEYWORD_DEBUGGER:
+ $n = new JSNode($this->t);
+ break;
+
+ case TOKEN_NEWLINE:
+ case OP_SEMICOLON:
+ $n = new JSNode($this->t, OP_SEMICOLON);
+ $n->expression = null;
+ return $n;
+
+ default:
+ if ($tt == TOKEN_IDENTIFIER)
+ {
+ $this->t->scanOperand = false;
+ $tt = $this->t->peek();
+ $this->t->scanOperand = true;
+ if ($tt == OP_COLON)
+ {
+ $label = $this->t->currentToken()->value;
+ $ss = $x->stmtStack;
+ for ($i = count($ss) - 1; $i >= 0; --$i)
+ {
+ if ($ss[$i]->label == $label)
+ throw $this->t->newSyntaxError('Duplicate label');
+ }
+
+ $this->t->get();
+ $n = new JSNode($this->t, JS_LABEL);
+ $n->label = $label;
+ $n->statement = $this->nest($x, $n);
+
+ return $n;
+ }
+ }
+
+ $n = new JSNode($this->t, OP_SEMICOLON);
+ $this->t->unget();
+ $n->expression = $this->Expression($x);
+ $n->end = $n->expression->end;
+ break;
+ }
+
+ if ($this->t->lineno == $this->t->currentToken()->lineno)
+ {
+ $tt = $this->t->peekOnSameLine();
+ if ($tt != TOKEN_END && $tt != TOKEN_NEWLINE && $tt != OP_SEMICOLON && $tt != OP_RIGHT_CURLY)
+ throw $this->t->newSyntaxError('Missing ; before statement');
+ }
+
+ $this->t->match(OP_SEMICOLON);
+
+ return $n;
+ }
+
+ private function FunctionDefinition($x, $requireName, $functionForm)
+ {
+ $f = new JSNode($this->t);
+
+ if ($f->type != KEYWORD_FUNCTION)
+ $f->type = ($f->value == 'get') ? JS_GETTER : JS_SETTER;
+
+ if ($this->t->match(TOKEN_IDENTIFIER))
+ $f->name = $this->t->currentToken()->value;
+ elseif ($requireName)
+ throw $this->t->newSyntaxError('Missing function identifier');
+
+ $this->t->mustMatch(OP_LEFT_PAREN);
+ $f->params = array();
+
+ while (($tt = $this->t->get()) != OP_RIGHT_PAREN)
+ {
+ if ($tt != TOKEN_IDENTIFIER)
+ throw $this->t->newSyntaxError('Missing formal parameter');
+
+ array_push($f->params, $this->t->currentToken()->value);
+
+ if ($this->t->peek() != OP_RIGHT_PAREN)
+ $this->t->mustMatch(OP_COMMA);
+ }
+
+ $this->t->mustMatch(OP_LEFT_CURLY);
+
+ $x2 = new JSCompilerContext(true);
+ $f->body = $this->Script($x2);
+
+ $this->t->mustMatch(OP_RIGHT_CURLY);
+ $f->end = $this->t->currentToken()->end;
+
+ $f->functionForm = $functionForm;
+ if ($functionForm == DECLARED_FORM)
+ array_push($x->funDecls, $f);
+
+ return $f;
+ }
+
+ private function Variables($x)
+ {
+ $n = new JSNode($this->t);
+
+ do
+ {
+ $this->t->mustMatch(TOKEN_IDENTIFIER);
+
+ $n2 = new JSNode($this->t);
+ $n2->name = $n2->value;
+
+ if ($this->t->match(OP_ASSIGN))
+ {
+ if ($this->t->currentToken()->assignOp)
+ throw $this->t->newSyntaxError('Invalid variable initialization');
+
+ $n2->initializer = $this->Expression($x, OP_COMMA);
+ }
+
+ $n2->readOnly = $n->type == KEYWORD_CONST;
+
+ $n->addNode($n2);
+ array_push($x->varDecls, $n2);
+ }
+ while ($this->t->match(OP_COMMA));
+
+ return $n;
+ }
+
+ private function Expression($x, $stop=false)
+ {
+ $operators = array();
+ $operands = array();
+ $n = false;
+
+ $bl = $x->bracketLevel;
+ $cl = $x->curlyLevel;
+ $pl = $x->parenLevel;
+ $hl = $x->hookLevel;
+
+ while (($tt = $this->t->get()) != TOKEN_END)
+ {
+ if ($tt == $stop &&
+ $x->bracketLevel == $bl &&
+ $x->curlyLevel == $cl &&
+ $x->parenLevel == $pl &&
+ $x->hookLevel == $hl
+ )
+ {
+ // Stop only if tt matches the optional stop parameter, and that
+ // token is not quoted by some kind of bracket.
+ break;
+ }
+
+ switch ($tt)
+ {
+ case OP_SEMICOLON:
+ // NB: cannot be empty, Statement handled that.
+ break 2;
+
+ case OP_HOOK:
+ if ($this->t->scanOperand)
+ break 2;
+
+ while ( !empty($operators) &&
+ $this->opPrecedence[end($operators)->type] > $this->opPrecedence[$tt]
+ )
+ $this->reduce($operators, $operands);
+
+ array_push($operators, new JSNode($this->t));
+
+ ++$x->hookLevel;
+ $this->t->scanOperand = true;
+ $n = $this->Expression($x);
+
+ if (!$this->t->match(OP_COLON))
+ break 2;
+
+ --$x->hookLevel;
+ array_push($operands, $n);
+ break;
+
+ case OP_COLON:
+ if ($x->hookLevel)
+ break 2;
+
+ throw $this->t->newSyntaxError('Invalid label');
+ break;
+
+ case OP_ASSIGN:
+ if ($this->t->scanOperand)
+ break 2;
+
+ // Use >, not >=, for right-associative ASSIGN
+ while ( !empty($operators) &&
+ $this->opPrecedence[end($operators)->type] > $this->opPrecedence[$tt]
+ )
+ $this->reduce($operators, $operands);
+
+ array_push($operators, new JSNode($this->t));
+ end($operands)->assignOp = $this->t->currentToken()->assignOp;
+ $this->t->scanOperand = true;
+ break;
+
+ case KEYWORD_IN:
+ // An in operator should not be parsed if we're parsing the head of
+ // a for (...) loop, unless it is in the then part of a conditional
+ // expression, or parenthesized somehow.
+ if ($x->inForLoopInit && !$x->hookLevel &&
+ !$x->bracketLevel && !$x->curlyLevel &&
+ !$x->parenLevel
+ )
+ break 2;
+ // FALL THROUGH
+ case OP_COMMA:
+ // A comma operator should not be parsed if we're parsing the then part
+ // of a conditional expression unless it's parenthesized somehow.
+ if ($tt == OP_COMMA && $x->hookLevel &&
+ !$x->bracketLevel && !$x->curlyLevel &&
+ !$x->parenLevel
+ )
+ break 2;
+ // Treat comma as left-associative so reduce can fold left-heavy
+ // COMMA trees into a single array.
+ // FALL THROUGH
+ case OP_OR:
+ case OP_AND:
+ case OP_BITWISE_OR:
+ case OP_BITWISE_XOR:
+ case OP_BITWISE_AND:
+ case OP_EQ: case OP_NE: case OP_STRICT_EQ: case OP_STRICT_NE:
+ case OP_LT: case OP_LE: case OP_GE: case OP_GT:
+ case KEYWORD_INSTANCEOF:
+ case OP_LSH: case OP_RSH: case OP_URSH:
+ case OP_PLUS: case OP_MINUS:
+ case OP_MUL: case OP_DIV: case OP_MOD:
+ case OP_DOT:
+ if ($this->t->scanOperand)
+ break 2;
+
+ while ( !empty($operators) &&
+ $this->opPrecedence[end($operators)->type] >= $this->opPrecedence[$tt]
+ )
+ $this->reduce($operators, $operands);
+
+ if ($tt == OP_DOT)
+ {
+ $this->t->mustMatch(TOKEN_IDENTIFIER);
+ array_push($operands, new JSNode($this->t, OP_DOT, array_pop($operands), new JSNode($this->t)));
+ }
+ else
+ {
+ array_push($operators, new JSNode($this->t));
+ $this->t->scanOperand = true;
+ }
+ break;
+
+ case KEYWORD_DELETE: case KEYWORD_VOID: case KEYWORD_TYPEOF:
+ case OP_NOT: case OP_BITWISE_NOT: case OP_UNARY_PLUS: case OP_UNARY_MINUS:
+ case KEYWORD_NEW:
+ if (!$this->t->scanOperand)
+ break 2;
+
+ array_push($operators, new JSNode($this->t));
+ break;
+
+ case OP_INCREMENT: case OP_DECREMENT:
+ if ($this->t->scanOperand)
+ {
+ array_push($operators, new JSNode($this->t)); // prefix increment or decrement
+ }
+ else
+ {
+ // Don't cross a line boundary for postfix {in,de}crement.
+ $t = $this->t->tokens[($this->t->tokenIndex + $this->t->lookahead - 1) & 3];
+ if ($t && $t->lineno != $this->t->lineno)
+ break 2;
+
+ if (!empty($operators))
+ {
+ // Use >, not >=, so postfix has higher precedence than prefix.
+ while ($this->opPrecedence[end($operators)->type] > $this->opPrecedence[$tt])
+ $this->reduce($operators, $operands);
+ }
+
+ $n = new JSNode($this->t, $tt, array_pop($operands));
+ $n->postfix = true;
+ array_push($operands, $n);
+ }
+ break;
+
+ case KEYWORD_FUNCTION:
+ if (!$this->t->scanOperand)
+ break 2;
+
+ array_push($operands, $this->FunctionDefinition($x, false, EXPRESSED_FORM));
+ $this->t->scanOperand = false;
+ break;
+
+ case KEYWORD_NULL: case KEYWORD_THIS: case KEYWORD_TRUE: case KEYWORD_FALSE:
+ case TOKEN_IDENTIFIER: case TOKEN_NUMBER: case TOKEN_STRING: case TOKEN_REGEXP:
+ if (!$this->t->scanOperand)
+ break 2;
+
+ array_push($operands, new JSNode($this->t));
+ $this->t->scanOperand = false;
+ break;
+
+ case TOKEN_CONDCOMMENT_START:
+ case TOKEN_CONDCOMMENT_END:
+ if ($this->t->scanOperand)
+ array_push($operators, new JSNode($this->t));
+ else
+ array_push($operands, new JSNode($this->t));
+ break;
+
+ case OP_LEFT_BRACKET:
+ if ($this->t->scanOperand)
+ {
+ // Array initialiser. Parse using recursive descent, as the
+ // sub-grammar here is not an operator grammar.
+ $n = new JSNode($this->t, JS_ARRAY_INIT);
+ while (($tt = $this->t->peek()) != OP_RIGHT_BRACKET)
+ {
+ if ($tt == OP_COMMA)
+ {
+ $this->t->get();
+ $n->addNode(null);
+ continue;
+ }
+
+ $n->addNode($this->Expression($x, OP_COMMA));
+ if (!$this->t->match(OP_COMMA))
+ break;
+ }
+
+ $this->t->mustMatch(OP_RIGHT_BRACKET);
+ array_push($operands, $n);
+ $this->t->scanOperand = false;
+ }
+ else
+ {
+ // Property indexing operator.
+ array_push($operators, new JSNode($this->t, JS_INDEX));
+ $this->t->scanOperand = true;
+ ++$x->bracketLevel;
+ }
+ break;
+
+ case OP_RIGHT_BRACKET:
+ if ($this->t->scanOperand || $x->bracketLevel == $bl)
+ break 2;
+
+ while ($this->reduce($operators, $operands)->type != JS_INDEX)
+ continue;
+
+ --$x->bracketLevel;
+ break;
+
+ case OP_LEFT_CURLY:
+ if (!$this->t->scanOperand)
+ break 2;
+
+ // Object initialiser. As for array initialisers (see above),
+ // parse using recursive descent.
+ ++$x->curlyLevel;
+ $n = new JSNode($this->t, JS_OBJECT_INIT);
+ while (!$this->t->match(OP_RIGHT_CURLY))
+ {
+ do
+ {
+ $tt = $this->t->get();
+ $tv = $this->t->currentToken()->value;
+ if (($tv == 'get' || $tv == 'set') && $this->t->peek() == TOKEN_IDENTIFIER)
+ {
+ if ($x->ecmaStrictMode)
+ throw $this->t->newSyntaxError('Illegal property accessor');
+
+ $n->addNode($this->FunctionDefinition($x, true, EXPRESSED_FORM));
+ }
+ else
+ {
+ switch ($tt)
+ {
+ case TOKEN_IDENTIFIER:
+ case TOKEN_NUMBER:
+ case TOKEN_STRING:
+ $id = new JSNode($this->t);
+ break;
+
+ case OP_RIGHT_CURLY:
+ if ($x->ecmaStrictMode)
+ throw $this->t->newSyntaxError('Illegal trailing ,');
+ break 3;
+
+ default:
+ throw $this->t->newSyntaxError('Invalid property name');
+ }
+
+ $this->t->mustMatch(OP_COLON);
+ $n->addNode(new JSNode($this->t, JS_PROPERTY_INIT, $id, $this->Expression($x, OP_COMMA)));
+ }
+ }
+ while ($this->t->match(OP_COMMA));
+
+ $this->t->mustMatch(OP_RIGHT_CURLY);
+ break;
+ }
+
+ array_push($operands, $n);
+ $this->t->scanOperand = false;
+ --$x->curlyLevel;
+ break;
+
+ case OP_RIGHT_CURLY:
+ if (!$this->t->scanOperand && $x->curlyLevel != $cl)
+ throw new Exception('PANIC: right curly botch');
+ break 2;
+
+ case OP_LEFT_PAREN:
+ if ($this->t->scanOperand)
+ {
+ array_push($operators, new JSNode($this->t, JS_GROUP));
+ }
+ else
+ {
+ while ( !empty($operators) &&
+ $this->opPrecedence[end($operators)->type] > $this->opPrecedence[KEYWORD_NEW]
+ )
+ $this->reduce($operators, $operands);
+
+ // Handle () now, to regularize the n-ary case for n > 0.
+ // We must set scanOperand in case there are arguments and
+ // the first one is a regexp or unary+/-.
+ $n = end($operators);
+ $this->t->scanOperand = true;
+ if ($this->t->match(OP_RIGHT_PAREN))
+ {
+ if ($n && $n->type == KEYWORD_NEW)
+ {
+ array_pop($operators);
+ $n->addNode(array_pop($operands));
+ }
+ else
+ {
+ $n = new JSNode($this->t, JS_CALL, array_pop($operands), new JSNode($this->t, JS_LIST));
+ }
+
+ array_push($operands, $n);
+ $this->t->scanOperand = false;
+ break;
+ }
+
+ if ($n && $n->type == KEYWORD_NEW)
+ $n->type = JS_NEW_WITH_ARGS;
+ else
+ array_push($operators, new JSNode($this->t, JS_CALL));
+ }
+
+ ++$x->parenLevel;
+ break;
+
+ case OP_RIGHT_PAREN:
+ if ($this->t->scanOperand || $x->parenLevel == $pl)
+ break 2;
+
+ while (($tt = $this->reduce($operators, $operands)->type) != JS_GROUP &&
+ $tt != JS_CALL && $tt != JS_NEW_WITH_ARGS
+ )
+ {
+ continue;
+ }
+
+ if ($tt != JS_GROUP)
+ {
+ $n = end($operands);
+ if ($n->treeNodes[1]->type != OP_COMMA)
+ $n->treeNodes[1] = new JSNode($this->t, JS_LIST, $n->treeNodes[1]);
+ else
+ $n->treeNodes[1]->type = JS_LIST;
+ }
+
+ --$x->parenLevel;
+ break;
+
+ // Automatic semicolon insertion means we may scan across a newline
+ // and into the beginning of another statement. If so, break out of
+ // the while loop and let the t.scanOperand logic handle errors.
+ default:
+ break 2;
+ }
+ }
+
+ if ($x->hookLevel != $hl)
+ throw $this->t->newSyntaxError('Missing : in conditional expression');
+
+ if ($x->parenLevel != $pl)
+ throw $this->t->newSyntaxError('Missing ) in parenthetical');
+
+ if ($x->bracketLevel != $bl)
+ throw $this->t->newSyntaxError('Missing ] in index expression');
+
+ if ($this->t->scanOperand)
+ throw $this->t->newSyntaxError('Missing operand');
+
+ // Resume default mode, scanning for operands, not operators.
+ $this->t->scanOperand = true;
+ $this->t->unget();
+
+ while (count($operators))
+ $this->reduce($operators, $operands);
+
+ return array_pop($operands);
+ }
+
+ private function ParenExpression($x)
+ {
+ $this->t->mustMatch(OP_LEFT_PAREN);
+ $n = $this->Expression($x);
+ $this->t->mustMatch(OP_RIGHT_PAREN);
+
+ return $n;
+ }
+
+ // Statement stack and nested statement handler.
+ private function nest($x, $node, $end = false)
+ {
+ array_push($x->stmtStack, $node);
+ $n = $this->statement($x);
+ array_pop($x->stmtStack);
+
+ if ($end)
+ $this->t->mustMatch($end);
+
+ return $n;
+ }
+
+ private function reduce(&$operators, &$operands)
+ {
+ $n = array_pop($operators);
+ $op = $n->type;
+ $arity = $this->opArity[$op];
+ $c = count($operands);
+ if ($arity == -2)
+ {
+ // Flatten left-associative trees
+ if ($c >= 2)
+ {
+ $left = $operands[$c - 2];
+ if ($left->type == $op)
+ {
+ $right = array_pop($operands);
+ $left->addNode($right);
+ return $left;
+ }
+ }
+ $arity = 2;
+ }
+
+ // Always use push to add operands to n, to update start and end
+ $a = array_splice($operands, $c - $arity);
+ for ($i = 0; $i < $arity; $i++)
+ $n->addNode($a[$i]);
+
+ // Include closing bracket or postfix operator in [start,end]
+ $te = $this->t->currentToken()->end;
+ if ($n->end < $te)
+ $n->end = $te;
+
+ array_push($operands, $n);
+
+ return $n;
+ }
+}
+
+class JSCompilerContext
+{
+ public $inFunction = false;
+ public $inForLoopInit = false;
+ public $ecmaStrictMode = false;
+ public $bracketLevel = 0;
+ public $curlyLevel = 0;
+ public $parenLevel = 0;
+ public $hookLevel = 0;
+
+ public $stmtStack = array();
+ public $funDecls = array();
+ public $varDecls = array();
+
+ public function __construct($inFunction)
+ {
+ $this->inFunction = $inFunction;
+ }
+}
+
+class JSNode
+{
+ private $type;
+ private $value;
+ private $lineno;
+ private $start;
+ private $end;
+
+ public $treeNodes = array();
+ public $funDecls = array();
+ public $varDecls = array();
+
+ public function __construct($t, $type=0)
+ {
+ if ($token = $t->currentToken())
+ {
+ $this->type = $type ? $type : $token->type;
+ $this->value = $token->value;
+ $this->lineno = $token->lineno;
+ $this->start = $token->start;
+ $this->end = $token->end;
+ }
+ else
+ {
+ $this->type = $type;
+ $this->lineno = $t->lineno;
+ }
+
+ if (($numargs = func_num_args()) > 2)
+ {
+ $args = func_get_args();
+ for ($i = 2; $i < $numargs; $i++)
+ $this->addNode($args[$i]);
+ }
+ }
+
+ // we don't want to bloat our object with all kind of specific properties, so we use overloading
+ public function __set($name, $value)
+ {
+ $this->$name = $value;
+ }
+
+ public function __get($name)
+ {
+ if (isset($this->$name))
+ return $this->$name;
+
+ return null;
+ }
+
+ public function addNode($node)
+ {
+ if ($node !== null)
+ {
+ if ($node->start < $this->start)
+ $this->start = $node->start;
+ if ($this->end < $node->end)
+ $this->end = $node->end;
+ }
+
+ $this->treeNodes[] = $node;
+ }
+}
+
+class JSTokenizer
+{
+ private $cursor = 0;
+ private $source;
+
+ public $tokens = array();
+ public $tokenIndex = 0;
+ public $lookahead = 0;
+ public $scanNewlines = false;
+ public $scanOperand = true;
+
+ public $filename;
+ public $lineno;
+
+ private $keywords = array(
+ 'break',
+ 'case', 'catch', 'const', 'continue',
+ 'debugger', 'default', 'delete', 'do',
+ 'else', 'enum',
+ 'false', 'finally', 'for', 'function',
+ 'if', 'in', 'instanceof',
+ 'new', 'null',
+ 'return',
+ 'switch',
+ 'this', 'throw', 'true', 'try', 'typeof',
+ 'var', 'void',
+ 'while', 'with'
+ );
+
+ private $opTypeNames = array(
+ ';' => 'SEMICOLON',
+ ',' => 'COMMA',
+ '?' => 'HOOK',
+ ':' => 'COLON',
+ '||' => 'OR',
+ '&&' => 'AND',
+ '|' => 'BITWISE_OR',
+ '^' => 'BITWISE_XOR',
+ '&' => 'BITWISE_AND',
+ '===' => 'STRICT_EQ',
+ '==' => 'EQ',
+ '=' => 'ASSIGN',
+ '!==' => 'STRICT_NE',
+ '!=' => 'NE',
+ '<<' => 'LSH',
+ '<=' => 'LE',
+ '<' => 'LT',
+ '>>>' => 'URSH',
+ '>>' => 'RSH',
+ '>=' => 'GE',
+ '>' => 'GT',
+ '++' => 'INCREMENT',
+ '--' => 'DECREMENT',
+ '+' => 'PLUS',
+ '-' => 'MINUS',
+ '*' => 'MUL',
+ '/' => 'DIV',
+ '%' => 'MOD',
+ '!' => 'NOT',
+ '~' => 'BITWISE_NOT',
+ '.' => 'DOT',
+ '[' => 'LEFT_BRACKET',
+ ']' => 'RIGHT_BRACKET',
+ '{' => 'LEFT_CURLY',
+ '}' => 'RIGHT_CURLY',
+ '(' => 'LEFT_PAREN',
+ ')' => 'RIGHT_PAREN',
+ '@*/' => 'CONDCOMMENT_END'
+ );
+
+ private $assignOps = array('|', '^', '&', '<<', '>>', '>>>', '+', '-', '*', '/', '%');
+ private $opRegExp;
+
+ public function __construct()
+ {
+ $this->opRegExp = '#^(' . implode('|', array_map('preg_quote', array_keys($this->opTypeNames))) . ')#';
+ }
+
+ public function init($source, $filename = '', $lineno = 1)
+ {
+ $this->source = $source;
+ $this->filename = $filename ? $filename : '[inline]';
+ $this->lineno = $lineno;
+
+ $this->cursor = 0;
+ $this->tokens = array();
+ $this->tokenIndex = 0;
+ $this->lookahead = 0;
+ $this->scanNewlines = false;
+ $this->scanOperand = true;
+ }
+
+ public function getInput($chunksize)
+ {
+ if ($chunksize)
+ return substr($this->source, $this->cursor, $chunksize);
+
+ return substr($this->source, $this->cursor);
+ }
+
+ public function isDone()
+ {
+ return $this->peek() == TOKEN_END;
+ }
+
+ public function match($tt)
+ {
+ return $this->get() == $tt || $this->unget();
+ }
+
+ public function mustMatch($tt)
+ {
+ if (!$this->match($tt))
+ throw $this->newSyntaxError('Unexpected token; token ' . $tt . ' expected');
+
+ return $this->currentToken();
+ }
+
+ public function peek()
+ {
+ if ($this->lookahead)
+ {
+ $next = $this->tokens[($this->tokenIndex + $this->lookahead) & 3];
+ if ($this->scanNewlines && $next->lineno != $this->lineno)
+ $tt = TOKEN_NEWLINE;
+ else
+ $tt = $next->type;
+ }
+ else
+ {
+ $tt = $this->get();
+ $this->unget();
+ }
+
+ return $tt;
+ }
+
+ public function peekOnSameLine()
+ {
+ $this->scanNewlines = true;
+ $tt = $this->peek();
+ $this->scanNewlines = false;
+
+ return $tt;
+ }
+
+ public function currentToken()
+ {
+ if (!empty($this->tokens))
+ return $this->tokens[$this->tokenIndex];
+ }
+
+ public function get($chunksize = 1000)
+ {
+ while($this->lookahead)
+ {
+ $this->lookahead--;
+ $this->tokenIndex = ($this->tokenIndex + 1) & 3;
+ $token = $this->tokens[$this->tokenIndex];
+ if ($token->type != TOKEN_NEWLINE || $this->scanNewlines)
+ return $token->type;
+ }
+
+ $conditional_comment = false;
+
+ // strip whitespace and comments
+ while(true)
+ {
+ $input = $this->getInput($chunksize);
+
+ // whitespace handling; gobble up \r as well (effectively we don't have support for MAC newlines!)
+ $re = $this->scanNewlines ? '/^[ \r\t]+/' : '/^\s+/';
+ if (preg_match($re, $input, $match))
+ {
+ $spaces = $match[0];
+ $spacelen = strlen($spaces);
+ $this->cursor += $spacelen;
+ if (!$this->scanNewlines)
+ $this->lineno += substr_count($spaces, "\n");
+
+ if ($spacelen == $chunksize)
+ continue; // complete chunk contained whitespace
+
+ $input = $this->getInput($chunksize);
+ if ($input == '' || $input[0] != '/')
+ break;
+ }
+
+ // Comments
+ if (!preg_match('/^\/(?:\*(@(?:cc_on|if|elif|else|end))?.*?\*\/|\/[^\n]*)/s', $input, $match))
+ {
+ if (!$chunksize)
+ break;
+
+ // retry with a full chunk fetch; this also prevents breakage of long regular expressions (which will never match a comment)
+ $chunksize = null;
+ continue;
+ }
+
+ // check if this is a conditional (JScript) comment
+ if (!empty($match[1]))
+ {
+ $match[0] = '/*' . $match[1];
+ $conditional_comment = true;
+ break;
+ }
+ else
+ {
+ $this->cursor += strlen($match[0]);
+ $this->lineno += substr_count($match[0], "\n");
+ }
+ }
+
+ if ($input == '')
+ {
+ $tt = TOKEN_END;
+ $match = array('');
+ }
+ elseif ($conditional_comment)
+ {
+ $tt = TOKEN_CONDCOMMENT_START;
+ }
+ else
+ {
+ switch ($input[0])
+ {
+ case '0': case '1': case '2': case '3': case '4':
+ case '5': case '6': case '7': case '8': case '9':
+ if (preg_match('/^\d+\.\d*(?:[eE][-+]?\d+)?|^\d+(?:\.\d*)?[eE][-+]?\d+/', $input, $match))
+ {
+ $tt = TOKEN_NUMBER;
+ }
+ else if (preg_match('/^0[xX][\da-fA-F]+|^0[0-7]*|^\d+/', $input, $match))
+ {
+ // this should always match because of \d+
+ $tt = TOKEN_NUMBER;
+ }
+ break;
+
+ case '"':
+ case "'":
+ if (preg_match('/^"(?:\\\\(?:.|\r?\n)|[^\\\\"\r\n]+)*"|^\'(?:\\\\(?:.|\r?\n)|[^\\\\\'\r\n]+)*\'/', $input, $match))
+ {
+ $tt = TOKEN_STRING;
+ }
+ else
+ {
+ if ($chunksize)
+ return $this->get(null); // retry with a full chunk fetch
+
+ throw $this->newSyntaxError('Unterminated string literal');
+ }
+ break;
+
+ case '/':
+ if ($this->scanOperand && preg_match('/^\/((?:\\\\.|\[(?:\\\\.|[^\]])*\]|[^\/])+)\/([gimy]*)/', $input, $match))
+ {
+ $tt = TOKEN_REGEXP;
+ break;
+ }
+ // FALL THROUGH
+
+ case '|':
+ case '^':
+ case '&':
+ case '<':
+ case '>':
+ case '+':
+ case '-':
+ case '*':
+ case '%':
+ case '=':
+ case '!':
+ // should always match
+ preg_match($this->opRegExp, $input, $match);
+ $op = $match[0];
+ if (in_array($op, $this->assignOps) && $input[strlen($op)] == '=')
+ {
+ $tt = OP_ASSIGN;
+ $match[0] .= '=';
+ }
+ else
+ {
+ $tt = $op;
+ if ($this->scanOperand)
+ {
+ if ($op == OP_PLUS)
+ $tt = OP_UNARY_PLUS;
+ elseif ($op == OP_MINUS)
+ $tt = OP_UNARY_MINUS;
+ }
+ $op = null;
+ }
+ break;
+
+ case '.':
+ if (preg_match('/^\.\d+(?:[eE][-+]?\d+)?/', $input, $match))
+ {
+ $tt = TOKEN_NUMBER;
+ break;
+ }
+ // FALL THROUGH
+
+ case ';':
+ case ',':
+ case '?':
+ case ':':
+ case '~':
+ case '[':
+ case ']':
+ case '{':
+ case '}':
+ case '(':
+ case ')':
+ // these are all single
+ $match = array($input[0]);
+ $tt = $input[0];
+ break;
+
+ case '@':
+ // check end of conditional comment
+ if (substr($input, 0, 3) == '@*/')
+ {
+ $match = array('@*/');
+ $tt = TOKEN_CONDCOMMENT_END;
+ }
+ else
+ throw $this->newSyntaxError('Illegal token');
+ break;
+
+ case "\n":
+ if ($this->scanNewlines)
+ {
+ $match = array("\n");
+ $tt = TOKEN_NEWLINE;
+ }
+ else
+ throw $this->newSyntaxError('Illegal token');
+ break;
+
+ default:
+ // Fast path for identifiers: word chars followed by whitespace or various other tokens.
+ // Note we don't need to exclude digits in the first char, as they've already been found
+ // above.
+ if (!preg_match('/^[$\w]+(?=[\s\/\|\^\&<>\+\-\*%=!.;,\?:~\[\]\{\}\(\)@])/', $input, $match))
+ {
+ // Character classes per ECMA-262 edition 5.1 section 7.6
+ // Per spec, must accept Unicode 3.0, *may* accept later versions.
+ // We'll take whatever PCRE understands, which should be more recent.
+ $identifierStartChars = "\\p{L}\\p{Nl}" . # UnicodeLetter
+ "\$" .
+ "_";
+ $identifierPartChars = $identifierStartChars .
+ "\\p{Mn}\\p{Mc}" . # UnicodeCombiningMark
+ "\\p{Nd}" . # UnicodeDigit
+ "\\p{Pc}"; # UnicodeConnectorPunctuation
+ $unicodeEscape = "\\\\u[0-9A-F-a-f]{4}";
+ $identifierRegex = "/^" .
+ "(?:[$identifierStartChars]|$unicodeEscape)" .
+ "(?:[$identifierPartChars]|$unicodeEscape)*" .
+ "/uS";
+ if (preg_match($identifierRegex, $input, $match))
+ {
+ if (strpos($match[0], '\\') !== false) {
+ // Per ECMA-262 edition 5.1, section 7.6 escape sequences should behave as if they were
+ // the original chars, but only within the boundaries of the identifier.
+ $decoded = preg_replace_callback('/\\\\u([0-9A-Fa-f]{4})/',
+ array(__CLASS__, 'unicodeEscapeCallback'),
+ $match[0]);
+
+ // Since our original regex didn't de-escape the originals, we need to check for validity again.
+ // No need to worry about token boundaries, as anything outside the identifier is illegal!
+ if (!preg_match("/^[$identifierStartChars][$identifierPartChars]*$/u", $decoded)) {
+ throw $this->newSyntaxError('Illegal token');
+ }
+
+ // Per spec it _ought_ to work to use these escapes for keywords words as well...
+ // but IE rejects them as invalid, while Firefox and Chrome treat them as identifiers
+ // that don't match the keyword.
+ if (in_array($decoded, $this->keywords)) {
+ throw $this->newSyntaxError('Illegal token');
+ }
+
+ // TODO: save the decoded form for output?
+ }
+ }
+ else
+ throw $this->newSyntaxError('Illegal token');
+ }
+ $tt = in_array($match[0], $this->keywords) ? $match[0] : TOKEN_IDENTIFIER;
+ }
+ }
+
+ $this->tokenIndex = ($this->tokenIndex + 1) & 3;
+
+ if (!isset($this->tokens[$this->tokenIndex]))
+ $this->tokens[$this->tokenIndex] = new JSToken();
+
+ $token = $this->tokens[$this->tokenIndex];
+ $token->type = $tt;
+
+ if ($tt == OP_ASSIGN)
+ $token->assignOp = $op;
+
+ $token->start = $this->cursor;
+
+ $token->value = $match[0];
+ $this->cursor += strlen($match[0]);
+
+ $token->end = $this->cursor;
+ $token->lineno = $this->lineno;
+
+ return $tt;
+ }
+
+ public function unget()
+ {
+ if (++$this->lookahead == 4)
+ throw $this->newSyntaxError('PANIC: too much lookahead!');
+
+ $this->tokenIndex = ($this->tokenIndex - 1) & 3;
+ }
+
+ public function newSyntaxError($m)
+ {
+ return new Exception('Parse error: ' . $m . ' in file \'' . $this->filename . '\' on line ' . $this->lineno);
+ }
+
+ public static function unicodeEscapeCallback($m)
+ {
+ return html_entity_decode('&#x' . $m[1]. ';', ENT_QUOTES, 'UTF-8');
+ }
+}
+
+class JSToken
+{
+ public $type;
+ public $value;
+ public $start;
+ public $end;
+ public $lineno;
+ public $assignOp;
+}
+
diff --git a/includes/libs/spyc.php b/includes/libs/spyc.php
deleted file mode 100644
index bc92e869..00000000
--- a/includes/libs/spyc.php
+++ /dev/null
@@ -1,248 +0,0 @@
-<?php
-/**
- * Spyc -- A Simple PHP YAML Class
- *
- * @file
- * @version 0.2.3 -- 2006-02-04
- * @author Chris Wanstrath <chris@ozmm.org>
- * @see http://spyc.sourceforge.net/
- * @copyright Copyright 2005-2006 Chris Wanstrath
- * @license http://www.opensource.org/licenses/mit-license.php MIT License
- */
-
-/**
- * The Simple PHP YAML Class.
- *
- * This class can be used to read a YAML file and convert its contents
- * into a PHP array. It currently supports a very limited subsection of
- * the YAML spec.
- *
- * @ingroup API
- */
-class Spyc {
-
- /**
- * Dump YAML from PHP array statically
- *
- * The dump method, when supplied with an array, will do its best
- * to convert the array into friendly YAML. Pretty simple. Feel free to
- * save the returned string as nothing.yml and pass it around.
- *
- * Oh, and you can decide how big the indent is and what the wordwrap
- * for folding is. Pretty cool -- just pass in 'false' for either if
- * you want to use the default.
- *
- * Indent's default is 2 spaces, wordwrap's default is 40 characters. And
- * you can turn off wordwrap by passing in 0.
- *
- * @param $array Array: PHP array
- * @param $indent Integer: Pass in false to use the default, which is 2
- * @param $wordwrap Integer: Pass in 0 for no wordwrap, false for default (40)
- * @return String
- */
- public static function YAMLDump( $array, $indent = false, $wordwrap = false ) {
- $spyc = new Spyc;
- return $spyc->dump( $array, $indent, $wordwrap );
- }
-
- /**
- * Dump PHP array to YAML
- *
- * The dump method, when supplied with an array, will do its best
- * to convert the array into friendly YAML. Pretty simple. Feel free to
- * save the returned string as tasteful.yml and pass it around.
- *
- * Oh, and you can decide how big the indent is and what the wordwrap
- * for folding is. Pretty cool -- just pass in 'false' for either if
- * you want to use the default.
- *
- * Indent's default is 2 spaces, wordwrap's default is 40 characters. And
- * you can turn off wordwrap by passing in 0.
- *
- * @param $array Array: PHP array
- * @param $indent Integer: Pass in false to use the default, which is 2
- * @param $wordwrap Integer: Pass in 0 for no wordwrap, false for default (40)
- * @return String
- */
- public function dump( $array, $indent = false, $wordwrap = false ) {
- // Dumps to some very clean YAML. We'll have to add some more features
- // and options soon. And better support for folding.
-
- // New features and options.
- if ( $indent === false or !is_numeric( $indent ) ) {
- $this->_dumpIndent = 2;
- } else {
- $this->_dumpIndent = $indent;
- }
-
- if ( $wordwrap === false or !is_numeric( $wordwrap ) ) {
- $this->_dumpWordWrap = 40;
- } else {
- $this->_dumpWordWrap = $wordwrap;
- }
-
- // New YAML document
- $string = "---\n";
-
- // Start at the base of the array and move through it.
- foreach ( $array as $key => $value ) {
- $string .= $this->_yamlize( $key, $value, 0 );
- }
- return $string;
- }
-
- /**** Private Properties ****/
-
- /**
- * Unused variables, but just commented rather than deleting
- * to save altering the library
- private $_haveRefs;
- private $_allNodes;
- private $_lastIndent;
- private $_lastNode;
- private $_inBlock;
- private $_isInline;
- **/
- private $_dumpIndent;
- private $_dumpWordWrap;
-
- /**** Private Methods ****/
-
- /**
- * Attempts to convert a key / value array item to YAML
- *
- * @param $key Mixed: the name of the key
- * @param $value Mixed: the value of the item
- * @param $indent Integer: the indent of the current node
- * @return String
- */
- private function _yamlize( $key, $value, $indent ) {
- if ( is_array( $value ) ) {
- // It has children. What to do?
- // Make it the right kind of item
- $string = $this->_dumpNode( $key, null, $indent );
- // Add the indent
- $indent += $this->_dumpIndent;
- // Yamlize the array
- $string .= $this->_yamlizeArray( $value, $indent );
- } elseif ( !is_array( $value ) ) {
- // It doesn't have children. Yip.
- $string = $this->_dumpNode( $key, $value, $indent );
- }
- return $string;
- }
-
- /**
- * Attempts to convert an array to YAML
- *
- * @param $array Array: the array you want to convert
- * @param $indent Integer: the indent of the current level
- * @return String
- */
- private function _yamlizeArray( $array, $indent ) {
- if ( is_array( $array ) ) {
- $string = '';
- foreach ( $array as $key => $value ) {
- $string .= $this->_yamlize( $key, $value, $indent );
- }
- return $string;
- } else {
- return false;
- }
- }
-
- /**
- * Find out whether a string needs to be output as a literal rather than in plain style.
- * Added by Roan Kattouw 13-03-2008
- *
- * @param $value String: the string to check
- * @return Boolean
- */
- function _needLiteral( $value ) {
- // Check whether the string contains # or : or begins with any of:
- // [ - ? , [ ] { } ! * & | > ' " % @ ` ]
- // or is a number or contains newlines
- return (bool)( gettype( $value ) == "string" &&
- ( is_numeric( $value ) ||
- strpos( $value, "\n" ) ||
- preg_match( "/[#:]/", $value ) ||
- preg_match( "/^[-?,[\]{}!*&|>'\"%@`]/", $value ) ) );
- }
-
- /**
- * Returns YAML from a key and a value
- *
- * @param $key Mixed: the name of the key
- * @param $value Mixed: the value of the item
- * @param $indent Integer: the indent of the current node
- * @return String
- */
- private function _dumpNode( $key, $value, $indent ) {
- // do some folding here, for blocks
- if ( $this->_needLiteral( $value ) ) {
- $value = $this->_doLiteralBlock( $value, $indent );
- } else {
- $value = $this->_doFolding( $value, $indent );
- }
-
- $spaces = str_repeat( ' ', $indent );
-
- if ( is_int( $key ) ) {
- // It's a sequence
- if ( $value !== '' && !is_null( $value ) )
- $string = $spaces . '- ' . $value . "\n";
- else
- $string = $spaces . "-\n";
- } else {
- if ( $key == '*' ) // bug 21922 - Quote asterix used as keys
- $key = "'*'";
-
- // It's mapped
- if ( $value !== '' && !is_null( $value ) )
- $string = $spaces . $key . ': ' . $value . "\n";
- else
- $string = $spaces . $key . ":\n";
- }
- return $string;
- }
-
- /**
- * Creates a literal block for dumping
- *
- * @param $value String
- * @param $indent Integer: the value of the indent
- * @return String
- */
- private function _doLiteralBlock( $value, $indent ) {
- $exploded = explode( "\n", $value );
- $newValue = '|-';
- $indent += $this->_dumpIndent;
- $spaces = str_repeat( ' ', $indent );
- foreach ( $exploded as $line ) {
- $newValue .= "\n" . $spaces . trim( $line );
- }
- return $newValue;
- }
-
- /**
- * Folds a string of text, if necessary
- *
- * @param $value String: the string you wish to fold
- * @param $indent Integer: the indent of the current node
- * @return String
- */
- private function _doFolding( $value, $indent ) {
- // Don't do anything if wordwrap is set to 0
- if ( $this->_dumpWordWrap === 0 ) {
- return $value;
- }
-
- if ( strlen( $value ) > $this->_dumpWordWrap ) {
- $indent += $this->_dumpIndent;
- $indent = str_repeat( ' ', $indent );
- $wrapped = wordwrap( $value, $this->_dumpWordWrap, "\n$indent" );
- $value = ">-\n" . $indent . $wrapped;
- }
- return $value;
- }
-}
diff --git a/includes/media/BMP.php b/includes/media/BMP.php
index de836b59..6886e950 100644
--- a/includes/media/BMP.php
+++ b/includes/media/BMP.php
@@ -13,22 +13,39 @@
* @ingroup Media
*/
class BmpHandler extends BitmapHandler {
- // We never want to use .bmp in an <img/> tag
+
+ /**
+ * @param $file
+ * @return bool
+ */
function mustRender( $file ) {
return true;
}
- // Render files as PNG
+ /**
+ * Render files as PNG
+ *
+ * @param $text
+ * @param $mime
+ * @param $params
+ * @return array
+ */
function getThumbType( $text, $mime, $params = null ) {
return array( 'png', 'image/png' );
}
- /*
+ /**
* Get width and height from the bmp header.
+ *
+ * @param $image
+ * @param $filename
+ * @return array
*/
function getImageSize( $image, $filename ) {
- $f = fopen( $filename, 'r' );
- if(!$f) return false;
+ $f = fopen( $filename, 'rb' );
+ if( !$f ) {
+ return false;
+ }
$header = fread( $f, 54 );
fclose($f);
@@ -37,8 +54,12 @@ class BmpHandler extends BitmapHandler {
$h = substr( $header, 22, 4);
// Convert the unsigned long 32 bits (little endian):
- $w = unpack( 'V' , $w );
- $h = unpack( 'V' , $h );
+ try {
+ $w = wfUnpack( 'V', $w, 4 );
+ $h = wfUnpack( 'V', $h, 4 );
+ } catch ( MWException $e ) {
+ return false;
+ }
return array( $w[1], $h[1] );
}
}
diff --git a/includes/media/Bitmap.php b/includes/media/Bitmap.php
index f5f7ba6d..5f796095 100644
--- a/includes/media/Bitmap.php
+++ b/includes/media/Bitmap.php
@@ -12,6 +12,14 @@
* @ingroup Media
*/
class BitmapHandler extends ImageHandler {
+
+ /**
+ * @param $image File
+ * @param $params array Transform parameters. Entries with the keys 'width'
+ * and 'height' are the respective screen width and height, while the keys
+ * 'physicalWidth' and 'physicalHeight' indicate the thumbnail dimensions.
+ * @return bool
+ */
function normaliseParams( $image, &$params ) {
global $wgMaxImageArea;
if ( !parent::normaliseParams( $image, $params ) ) {
@@ -19,25 +27,26 @@ class BitmapHandler extends ImageHandler {
}
$mimeType = $image->getMimeType();
+ # Obtain the source, pre-rotation dimensions
$srcWidth = $image->getWidth( $params['page'] );
$srcHeight = $image->getHeight( $params['page'] );
# Don't make an image bigger than the source
- $params['physicalWidth'] = $params['width'];
- $params['physicalHeight'] = $params['height'];
-
if ( $params['physicalWidth'] >= $srcWidth ) {
$params['physicalWidth'] = $srcWidth;
$params['physicalHeight'] = $srcHeight;
+
# Skip scaling limit checks if no scaling is required
- if ( !$image->mustRender() )
+ # due to requested size being bigger than source.
+ if ( !$image->mustRender() ) {
return true;
+ }
}
-
+
# Don't thumbnail an image so big that it will fill hard drives and send servers into swap
# JPEG has the handy property of allowing thumbnailing without full decompression, so we make
# an exception for it.
- # FIXME: This actually only applies to ImageMagick
+ # @todo FIXME: This actually only applies to ImageMagick
if ( $mimeType !== 'image/jpeg' &&
$srcWidth * $srcHeight > $wgMaxImageArea )
{
@@ -46,6 +55,30 @@ class BitmapHandler extends ImageHandler {
return true;
}
+
+ /**
+ * Extracts the width/height if the image will be scaled before rotating
+ *
+ * This will match the physical size/aspect ratio of the original image
+ * prior to application of the rotation -- so for a portrait image that's
+ * stored as raw landscape with 90-degress rotation, the resulting size
+ * will be wider than it is tall.
+ *
+ * @param $params array Parameters as returned by normaliseParams
+ * @param $rotation int The rotation angle that will be applied
+ * @return array ($width, $height) array
+ */
+ public function extractPreRotationDimensions( $params, $rotation ) {
+ if ( $rotation == 90 || $rotation == 270 ) {
+ # We'll resize before rotation, so swap the dimensions again
+ $width = $params['physicalHeight'];
+ $height = $params['physicalWidth'];
+ } else {
+ $width = $params['physicalWidth'];
+ $height = $params['physicalHeight'];
+ }
+ return array( $width, $height );
+ }
// Function that returns the number of pixels to be thumbnailed.
@@ -54,10 +87,15 @@ class BitmapHandler extends ImageHandler {
return $width * $height;
}
+ /**
+ * @param $image File
+ * @param $dstPath
+ * @param $dstUrl
+ * @param $params
+ * @param int $flags
+ * @return MediaTransformError|ThumbnailImage|TransformParameterError
+ */
function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 ) {
- global $wgUseImageMagick;
- global $wgCustomConvertCommand, $wgUseImageResize;
-
if ( !$this->normaliseParams( $image, $params ) ) {
return new TransformParameterError( $params );
}
@@ -79,6 +117,7 @@ class BitmapHandler extends ImageHandler {
'mimeType' => $image->getMimeType(),
'srcPath' => $image->getPath(),
'dstPath' => $dstPath,
+ 'dstUrl' => $dstUrl,
);
wfDebug( __METHOD__ . ": creating {$scalerParams['physicalDimensions']} thumbnail at $dstPath\n" );
@@ -93,20 +132,7 @@ class BitmapHandler extends ImageHandler {
}
# Determine scaler type
- if ( !$dstPath ) {
- # No output path available, client side scaling only
- $scaler = 'client';
- } elseif ( !$wgUseImageResize ) {
- $scaler = 'client';
- } elseif ( $wgUseImageMagick ) {
- $scaler = 'im';
- } elseif ( $wgCustomConvertCommand ) {
- $scaler = 'custom';
- } elseif ( function_exists( 'imagecreatetruecolor' ) ) {
- $scaler = 'gd';
- } else {
- $scaler = 'client';
- }
+ $scaler = self::getScalerType( $dstPath );
wfDebug( __METHOD__ . ": scaler $scaler\n" );
if ( $scaler == 'client' ) {
@@ -127,13 +153,28 @@ class BitmapHandler extends ImageHandler {
return $this->getClientScalingThumbnailImage( $image, $scalerParams );
}
+ # Try a hook
+ $mto = null;
+ wfRunHooks( 'BitmapHandlerTransform', array( $this, $image, &$scalerParams, &$mto ) );
+ if ( !is_null( $mto ) ) {
+ wfDebug( __METHOD__ . ": Hook to BitmapHandlerTransform created an mto\n" );
+ $scaler = 'hookaborted';
+ }
+
switch ( $scaler ) {
+ case 'hookaborted':
+ # Handled by the hook above
+ $err = $mto->isError() ? $mto : false;
+ break;
case 'im':
$err = $this->transformImageMagick( $image, $scalerParams );
break;
case 'custom':
$err = $this->transformCustom( $image, $scalerParams );
break;
+ case 'imext':
+ $err = $this->transformImageMagickExt( $image, $scalerParams );
+ break;
case 'gd':
default:
$err = $this->transformGd( $image, $scalerParams );
@@ -149,6 +190,8 @@ class BitmapHandler extends ImageHandler {
# Thumbnail was zero-byte and had to be removed
return new MediaTransformError( 'thumbnail_error',
$scalerParams['clientWidth'], $scalerParams['clientHeight'] );
+ } elseif ( $mto ) {
+ return $mto;
} else {
return new ThumbnailImage( $image, $dstUrl, $scalerParams['clientWidth'],
$scalerParams['clientHeight'], $dstPath );
@@ -156,12 +199,49 @@ class BitmapHandler extends ImageHandler {
}
/**
+ * Returns which scaler type should be used. Creates parent directories
+ * for $dstPath and returns 'client' on error
+ *
+ * @return string client,im,custom,gd
+ */
+ protected static function getScalerType( $dstPath, $checkDstPath = true ) {
+ global $wgUseImageResize, $wgUseImageMagick, $wgCustomConvertCommand;
+
+ if ( !$dstPath && $checkDstPath ) {
+ # No output path available, client side scaling only
+ $scaler = 'client';
+ } elseif ( !$wgUseImageResize ) {
+ $scaler = 'client';
+ } elseif ( $wgUseImageMagick ) {
+ $scaler = 'im';
+ } elseif ( $wgCustomConvertCommand ) {
+ $scaler = 'custom';
+ } elseif ( function_exists( 'imagecreatetruecolor' ) ) {
+ $scaler = 'gd';
+ } elseif ( class_exists( 'Imagick' ) ) {
+ $scaler = 'imext';
+ } else {
+ $scaler = 'client';
+ }
+
+ if ( $scaler != 'client' && $dstPath ) {
+ if ( !wfMkdirParents( dirname( $dstPath ) ) ) {
+ # Unable to create a path for the thumbnail
+ return 'client';
+ }
+ }
+ return $scaler;
+ }
+
+ /**
* Get a ThumbnailImage that respresents an image that will be scaled
* client side
*
* @param $image File File associated with this thumbnail
* @param $params array Array with scaler params
* @return ThumbnailImage
+ *
+ * @fixme no rotation support
*/
protected function getClientScalingThumbnailImage( $image, $params ) {
return new ThumbnailImage( $image, $image->getURL(),
@@ -215,7 +295,7 @@ class BitmapHandler extends ImageHandler {
// We optimize the output, but -optimize is broken,
// use optimizeTransparency instead (bug 11822)
if ( version_compare( $this->getMagickVersion(), "6.3.5" ) >= 0 ) {
- $animation_post = '-fuzz 5% -layers optimizeTransparency +map';
+ $animation_post = '-fuzz 5% -layers optimizeTransparency';
}
}
}
@@ -225,6 +305,9 @@ class BitmapHandler extends ImageHandler {
if ( strval( $wgImageMagickTempDir ) !== '' ) {
$env['MAGICK_TMPDIR'] = $wgImageMagickTempDir;
}
+
+ $rotation = $this->getRotation( $image );
+ list( $width, $height ) = $this->extractPreRotationDimensions( $params, $rotation );
$cmd =
wfEscapeShellArg( $wgImageMagickConvertCommand ) .
@@ -237,12 +320,13 @@ class BitmapHandler extends ImageHandler {
// For the -thumbnail option a "!" is needed to force exact size,
// or ImageMagick may decide your ratio is wrong and slice off
// a pixel.
- " -thumbnail " . wfEscapeShellArg( "{$params['physicalDimensions']}!" ) .
+ " -thumbnail " . wfEscapeShellArg( "{$width}x{$height}!" ) .
// Add the source url as a comment to the thumb, but don't add the flag if there's no comment
( $params['comment'] !== ''
? " -set comment " . wfEscapeShellArg( $this->escapeMagickProperty( $params['comment'] ) )
: '' ) .
- " -depth 8 $sharpen" .
+ " -depth 8 $sharpen " .
+ " -rotate -$rotation " .
" {$animation_post} " .
wfEscapeShellArg( $this->escapeMagickOutput( $params['dstPath'] ) ) . " 2>&1";
@@ -261,6 +345,84 @@ class BitmapHandler extends ImageHandler {
}
/**
+ * Transform an image using the Imagick PHP extension
+ *
+ * @param $image File File associated with this thumbnail
+ * @param $params array Array with scaler params
+ *
+ * @return MediaTransformError Error object if error occured, false (=no error) otherwise
+ */
+ protected function transformImageMagickExt( $image, $params ) {
+ global $wgSharpenReductionThreshold, $wgSharpenParameter, $wgMaxAnimatedGifArea;
+
+ try {
+ $im = new Imagick();
+ $im->readImage( $params['srcPath'] );
+
+ if ( $params['mimeType'] == 'image/jpeg' ) {
+ // Sharpening, see bug 6193
+ if ( ( $params['physicalWidth'] + $params['physicalHeight'] )
+ / ( $params['srcWidth'] + $params['srcHeight'] )
+ < $wgSharpenReductionThreshold ) {
+ // Hack, since $wgSharpenParamater is written specifically for the command line convert
+ list( $radius, $sigma ) = explode( 'x', $wgSharpenParameter );
+ $im->sharpenImage( $radius, $sigma );
+ }
+ $im->setCompressionQuality( 80 );
+ } elseif( $params['mimeType'] == 'image/png' ) {
+ $im->setCompressionQuality( 95 );
+ } elseif ( $params['mimeType'] == 'image/gif' ) {
+ if ( $this->getImageArea( $image, $params['srcWidth'],
+ $params['srcHeight'] ) > $wgMaxAnimatedGifArea ) {
+ // Extract initial frame only; we're so big it'll
+ // be a total drag. :P
+ $im->setImageScene( 0 );
+ } elseif ( $this->isAnimatedImage( $image ) ) {
+ // Coalesce is needed to scale animated GIFs properly (bug 1017).
+ $im = $im->coalesceImages();
+ }
+ }
+
+ $rotation = $this->getRotation( $image );
+ list( $width, $height ) = $this->extractPreRotationDimensions( $params, $rotation );
+
+ $im->setImageBackgroundColor( new ImagickPixel( 'white' ) );
+
+ // Call Imagick::thumbnailImage on each frame
+ foreach ( $im as $i => $frame ) {
+ if ( !$frame->thumbnailImage( $width, $height, /* fit */ false ) ) {
+ return $this->getMediaTransformError( $params, "Error scaling frame $i" );
+ }
+ }
+ $im->setImageDepth( 8 );
+
+ if ( $rotation ) {
+ if ( !$im->rotateImage( new ImagickPixel( 'white' ), 360 - $rotation ) ) {
+ return $this->getMediaTransformError( $params, "Error rotating $rotation degrees" );
+ }
+ }
+
+ if ( $this->isAnimatedImage( $image ) ) {
+ wfDebug( __METHOD__ . ": Writing animated thumbnail\n" );
+ // This is broken somehow... can't find out how to fix it
+ $result = $im->writeImages( $params['dstPath'], true );
+ } else {
+ $result = $im->writeImage( $params['dstPath'] );
+ }
+ if ( !$result ) {
+ return $this->getMediaTransformError( $params,
+ "Unable to write thumbnail to {$params['dstPath']}" );
+ }
+
+ } catch ( ImagickException $e ) {
+ return $this->getMediaTransformError( $params, $e->getMessage() );
+ }
+
+ return false;
+
+ }
+
+ /**
* Transform an image using a custom command
*
* @param $image File File associated with this thumbnail
@@ -306,12 +468,12 @@ class BitmapHandler extends ImageHandler {
}
/**
* Get a MediaTransformError with error 'thumbnail_error'
- *
+ *
* @param $params array Parameter array as passed to the transform* functions
* @param $errMsg string Error message
* @return MediaTransformError
*/
- protected function getMediaTransformError( $params, $errMsg ) {
+ public function getMediaTransformError( $params, $errMsg ) {
return new MediaTransformError( 'thumbnail_error', $params['clientWidth'],
$params['clientHeight'], $errMsg );
}
@@ -360,8 +522,10 @@ class BitmapHandler extends ImageHandler {
}
$src_image = call_user_func( $loader, $params['srcPath'] );
- $dst_image = imagecreatetruecolor( $params['physicalWidth'],
- $params['physicalHeight'] );
+
+ $rotation = function_exists( 'imagerotate' ) ? $this->getRotation( $image ) : 0;
+ list( $width, $height ) = $this->extractPreRotationDimensions( $params, $rotation );
+ $dst_image = imagecreatetruecolor( $width, $height );
// Initialise the destination image to transparent instead of
// the default solid black, to support PNG and GIF transparency nicely
@@ -374,15 +538,21 @@ class BitmapHandler extends ImageHandler {
// It may just uglify them, and completely breaks transparency.
imagecopyresized( $dst_image, $src_image,
0, 0, 0, 0,
- $params['physicalWidth'], $params['physicalHeight'],
+ $width, $height,
imagesx( $src_image ), imagesy( $src_image ) );
} else {
imagecopyresampled( $dst_image, $src_image,
0, 0, 0, 0,
- $params['physicalWidth'], $params['physicalHeight'],
+ $width, $height,
imagesx( $src_image ), imagesy( $src_image ) );
}
+ if ( $rotation % 360 != 0 && $rotation % 90 == 0 ) {
+ $rot_image = imagerotate( $dst_image, $rotation, 0 );
+ imagedestroy( $dst_image );
+ $dst_image = $rot_image;
+ }
+
imagesavealpha( $dst_image, true );
call_user_func( $saveType, $dst_image, $params['dstPath'] );
@@ -508,98 +678,57 @@ class BitmapHandler extends ImageHandler {
imagejpeg( $dst_image, $thumbPath, 95 );
}
-
- function getMetadata( $image, $filename ) {
- global $wgShowEXIF;
- if ( $wgShowEXIF && file_exists( $filename ) ) {
- $exif = new Exif( $filename );
- $data = $exif->getFilteredData();
- if ( $data ) {
- $data['MEDIAWIKI_EXIF_VERSION'] = Exif::version();
- return serialize( $data );
- } else {
- return '0';
- }
- } else {
- return '';
- }
- }
-
- function getMetadataType( $image ) {
- return 'exif';
- }
-
- function isMetadataValid( $image, $metadata ) {
- global $wgShowEXIF;
- if ( !$wgShowEXIF ) {
- # Metadata disabled and so an empty field is expected
- return true;
- }
- if ( $metadata === '0' ) {
- # Special value indicating that there is no EXIF data in the file
- return true;
- }
- wfSuppressWarnings();
- $exif = unserialize( $metadata );
- wfRestoreWarnings();
- if ( !isset( $exif['MEDIAWIKI_EXIF_VERSION'] ) ||
- $exif['MEDIAWIKI_EXIF_VERSION'] != Exif::version() )
- {
- # Wrong version
- wfDebug( __METHOD__ . ": wrong version\n" );
- return false;
- }
- return true;
+ /**
+ * On supporting image formats, try to read out the low-level orientation
+ * of the file and return the angle that the file needs to be rotated to
+ * be viewed.
+ *
+ * This information is only useful when manipulating the original file;
+ * the width and height we normally work with is logical, and will match
+ * any produced output views.
+ *
+ * The base BitmapHandler doesn't understand any metadata formats, so this
+ * is left up to child classes to implement.
+ *
+ * @param $file File
+ * @return int 0, 90, 180 or 270
+ */
+ public function getRotation( $file ) {
+ return 0;
}
/**
- * Get a list of EXIF metadata items which should be displayed when
- * the metadata table is collapsed.
+ * Returns whether the current scaler supports rotation (im and gd do)
*
- * @return array of strings
- * @access private
+ * @return bool
*/
- function visibleMetadataFields() {
- $fields = array();
- $lines = explode( "\n", wfMsgForContent( 'metadata-fields' ) );
- foreach ( $lines as $line ) {
- $matches = array();
- if ( preg_match( '/^\\*\s*(.*?)\s*$/', $line, $matches ) ) {
- $fields[] = $matches[1];
- }
+ public static function canRotate() {
+ $scaler = self::getScalerType( null, false );
+ switch ( $scaler ) {
+ case 'im':
+ # ImageMagick supports autorotation
+ return true;
+ case 'imext':
+ # Imagick::rotateImage
+ return true;
+ case 'gd':
+ # GD's imagerotate function is used to rotate images, but not
+ # all precompiled PHP versions have that function
+ return function_exists( 'imagerotate' );
+ default:
+ # Other scalers don't support rotation
+ return false;
}
- $fields = array_map( 'strtolower', $fields );
- return $fields;
}
- function formatMetadata( $image ) {
- $result = array(
- 'visible' => array(),
- 'collapsed' => array()
- );
- $metadata = $image->getMetadata();
- if ( !$metadata ) {
- return false;
- }
- $exif = unserialize( $metadata );
- if ( !$exif ) {
- return false;
- }
- unset( $exif['MEDIAWIKI_EXIF_VERSION'] );
- $format = new FormatExif( $exif );
-
- $formatted = $format->getFormattedData();
- // Sort fields into visible and collapsed
- $visibleFields = $this->visibleMetadataFields();
- foreach ( $formatted as $name => $value ) {
- $tag = strtolower( $name );
- self::addMeta( $result,
- in_array( $tag, $visibleFields ) ? 'visible' : 'collapsed',
- 'exif',
- $tag,
- $value
- );
- }
- return $result;
+ /**
+ * Rerurns whether the file needs to be rendered. Returns true if the
+ * file requires rotation and we are able to rotate it.
+ *
+ * @param $file File
+ * @return bool
+ */
+ public function mustRender( $file ) {
+ return self::canRotate() && $this->getRotation( $file ) != 0;
}
}
diff --git a/includes/media/BitmapMetadataHandler.php b/includes/media/BitmapMetadataHandler.php
new file mode 100644
index 00000000..d1caa67a
--- /dev/null
+++ b/includes/media/BitmapMetadataHandler.php
@@ -0,0 +1,269 @@
+<?php
+/**
+Class to deal with reconciling and extracting metadata from bitmap images.
+This is meant to comply with http://www.metadataworkinggroup.org/pdf/mwg_guidance.pdf
+
+This sort of acts as an intermediary between MediaHandler::getMetadata
+and the various metadata extractors.
+
+@todo other image formats.
+*/
+class BitmapMetadataHandler {
+
+ private $metadata = array();
+ private $metaPriority = array(
+ 20 => array( 'other' ),
+ 40 => array( 'native' ),
+ 60 => array( 'iptc-good-hash', 'iptc-no-hash' ),
+ 70 => array( 'xmp-deprecated' ),
+ 80 => array( 'xmp-general' ),
+ 90 => array( 'xmp-exif' ),
+ 100 => array( 'iptc-bad-hash' ),
+ 120 => array( 'exif' ),
+ );
+ private $iptcType = 'iptc-no-hash';
+
+ /**
+ * This does the photoshop image resource app13 block
+ * of interest, IPTC-IIM metadata is stored here.
+ *
+ * Mostly just calls doPSIR and doIPTC
+ *
+ * @param String $app13 String containing app13 block from jpeg file
+ */
+ private function doApp13 ( $app13 ) {
+ $this->iptcType = JpegMetadataExtractor::doPSIR( $app13 );
+
+ $iptc = IPTC::parse( $app13 );
+ $this->addMetadata( $iptc, $this->iptcType );
+ }
+
+
+ /**
+ * Get exif info using exif class.
+ * Basically what used to be in BitmapHandler::getMetadata().
+ * Just calls stuff in the Exif class.
+ *
+ * @param $filename string
+ */
+ function getExif ( $filename, $byteOrder ) {
+ global $wgShowEXIF;
+ if ( file_exists( $filename ) && $wgShowEXIF ) {
+ $exif = new Exif( $filename, $byteOrder );
+ $data = $exif->getFilteredData();
+ if ( $data ) {
+ $this->addMetadata( $data, 'exif' );
+ }
+ }
+ }
+ /** Add misc metadata. Warning: atm if the metadata category
+ * doesn't have a priority, it will be silently discarded.
+ *
+ * @param Array $metaArray array of metadata values
+ * @param string $type type. defaults to other. if two things have the same type they're merged
+ */
+ function addMetadata ( $metaArray, $type = 'other' ) {
+ if ( isset( $this->metadata[$type] ) ) {
+ /* merge with old data */
+ $metaArray = $metaArray + $this->metadata[$type];
+ }
+
+ $this->metadata[$type] = $metaArray;
+ }
+
+ /**
+ * Merge together the various types of metadata
+ * the different types have different priorites,
+ * and are merged in order.
+ *
+ * This function is generally called by the media handlers' getMetadata()
+ *
+ * @return Array metadata array
+ */
+ function getMetadataArray () {
+ // this seems a bit ugly... This is all so its merged in right order
+ // based on the MWG recomendation.
+ $temp = Array();
+ krsort( $this->metaPriority );
+ foreach ( $this->metaPriority as $pri ) {
+ foreach ( $pri as $type ) {
+ if ( isset( $this->metadata[$type] ) ) {
+ // Do some special casing for multilingual values.
+ // Don't discard translations if also as a simple value.
+ foreach ( $this->metadata[$type] as $itemName => $item ) {
+ if ( is_array( $item ) && isset( $item['_type'] ) && $item['_type'] === 'lang' ) {
+ if ( isset( $temp[$itemName] ) && !is_array( $temp[$itemName] ) ) {
+ $default = $temp[$itemName];
+ $temp[$itemName] = $item;
+ $temp[$itemName]['x-default'] = $default;
+ unset( $this->metadata[$type][$itemName] );
+ }
+ }
+ }
+
+ $temp = $temp + $this->metadata[$type];
+ }
+ }
+ }
+ return $temp;
+ }
+
+ /** Main entry point for jpeg's.
+ *
+ * @param $filename string filename (with full path)
+ * @return metadata result array.
+ * @throws MWException on invalid file.
+ */
+ static function Jpeg ( $filename ) {
+ $showXMP = function_exists( 'xml_parser_create_ns' );
+ $meta = new self();
+
+ $seg = JpegMetadataExtractor::segmentSplitter( $filename );
+ if ( isset( $seg['COM'] ) && isset( $seg['COM'][0] ) ) {
+ $meta->addMetadata( Array( 'JPEGFileComment' => $seg['COM'] ), 'native' );
+ }
+ if ( isset( $seg['PSIR'] ) ) {
+ $meta->doApp13( $seg['PSIR'] );
+ }
+ if ( isset( $seg['XMP'] ) && $showXMP ) {
+ $xmp = new XMPReader();
+ $xmp->parse( $seg['XMP'] );
+ foreach ( $seg['XMP_ext'] as $xmpExt ) {
+ /* Support for extended xmp in jpeg files
+ * is not well tested and a bit fragile.
+ */
+ $xmp->parseExtended( $xmpExt );
+
+ }
+ $res = $xmp->getResults();
+ foreach ( $res as $type => $array ) {
+ $meta->addMetadata( $array, $type );
+ }
+ }
+ if ( isset( $seg['byteOrder'] ) ) {
+ $meta->getExif( $filename, $seg['byteOrder'] );
+ }
+ return $meta->getMetadataArray();
+ }
+
+ /** Entry point for png
+ * At some point in the future this might
+ * merge the png various tEXt chunks to that
+ * are interesting, but for now it only does XMP
+ *
+ * @param $filename String full path to file
+ * @return Array Array for storage in img_metadata.
+ */
+ static public function PNG ( $filename ) {
+ $showXMP = function_exists( 'xml_parser_create_ns' );
+
+ $meta = new self();
+ $array = PNGMetadataExtractor::getMetadata( $filename );
+ if ( isset( $array['text']['xmp']['x-default'] ) && $array['text']['xmp']['x-default'] !== '' && $showXMP ) {
+ $xmp = new XMPReader();
+ $xmp->parse( $array['text']['xmp']['x-default'] );
+ $xmpRes = $xmp->getResults();
+ foreach ( $xmpRes as $type => $xmpSection ) {
+ $meta->addMetadata( $xmpSection, $type );
+ }
+ }
+ unset( $array['text']['xmp'] );
+ $meta->addMetadata( $array['text'], 'native' );
+ unset( $array['text'] );
+ $array['metadata'] = $meta->getMetadataArray();
+ $array['metadata']['_MW_PNG_VERSION'] = PNGMetadataExtractor::VERSION;
+ return $array;
+ }
+
+ /** function for gif images.
+ *
+ * They don't really have native metadata, so just merges together
+ * XMP and image comment.
+ *
+ * @param $filename full path to file
+ * @return Array metadata array
+ */
+ static public function GIF ( $filename ) {
+
+ $meta = new self();
+ $baseArray = GIFMetadataExtractor::getMetadata( $filename );
+
+ if ( count( $baseArray['comment'] ) > 0 ) {
+ $meta->addMetadata( array( 'GIFFileComment' => $baseArray['comment'] ), 'native' );
+ }
+
+ if ( $baseArray['xmp'] !== '' && function_exists( 'xml_parser_create_ns' ) ) {
+ $xmp = new XMPReader();
+ $xmp->parse( $baseArray['xmp'] );
+ $xmpRes = $xmp->getResults();
+ foreach ( $xmpRes as $type => $xmpSection ) {
+ $meta->addMetadata( $xmpSection, $type );
+ }
+
+ }
+
+ unset( $baseArray['comment'] );
+ unset( $baseArray['xmp'] );
+
+ $baseArray['metadata'] = $meta->getMetadataArray();
+ $baseArray['metadata']['_MW_GIF_VERSION'] = GIFMetadataExtractor::VERSION;
+ return $baseArray;
+ }
+
+ /**
+ * This doesn't do much yet, but eventually I plan to add
+ * XMP support for Tiff. (PHP's exif support already extracts
+ * but needs some further processing because PHP's exif support
+ * is stupid...)
+ *
+ * @todo Add XMP support, so this function actually makes
+ * sense to put here.
+ *
+ * The various exceptions this throws are caught later.
+ * @param $filename String
+ * @return Array The metadata.
+ */
+ static public function Tiff ( $filename ) {
+ if ( file_exists( $filename ) ) {
+ $byteOrder = self::getTiffByteOrder( $filename );
+ if ( !$byteOrder ) {
+ throw new MWException( "Error determining byte order of $filename" );
+ }
+ $exif = new Exif( $filename, $byteOrder );
+ $data = $exif->getFilteredData();
+ if ( $data ) {
+ $data['MEDIAWIKI_EXIF_VERSION'] = Exif::version();
+ return $data;
+ } else {
+ throw new MWException( "Could not extract data from tiff file $filename" );
+ }
+ } else {
+ throw new MWException( "File doesn't exist - $filename" );
+ }
+ }
+ /**
+ * Read the first 2 bytes of a tiff file to figure out
+ * Little Endian or Big Endian. Needed for exif stuff.
+ *
+ * @param $filename String The filename
+ * @return String 'BE' or 'LE' or false
+ */
+ static function getTiffByteOrder( $filename ) {
+ $fh = fopen( $filename, 'rb' );
+ if ( !$fh ) return false;
+ $head = fread( $fh, 2 );
+ fclose( $fh );
+
+ switch( $head ) {
+ case 'II':
+ return 'LE'; // II for intel.
+ case 'MM':
+ return 'BE'; // MM for motorla.
+ default:
+ return false; // Something went wrong.
+
+ }
+ }
+
+
+}
diff --git a/includes/media/Bitmap_ClientOnly.php b/includes/media/Bitmap_ClientOnly.php
index 9f6f7b33..50679229 100644
--- a/includes/media/Bitmap_ClientOnly.php
+++ b/includes/media/Bitmap_ClientOnly.php
@@ -15,10 +15,24 @@
* @ingroup Media
*/
class BitmapHandler_ClientOnly extends BitmapHandler {
+
+ /**
+ * @param $image File
+ * @param $params
+ * @return bool
+ */
function normaliseParams( $image, &$params ) {
return ImageHandler::normaliseParams( $image, $params );
}
+ /**
+ * @param $image File
+ * @param $dstPath
+ * @param $dstUrl
+ * @param $params
+ * @param int $flags
+ * @return ThumbnailImage|TransformParameterError
+ */
function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 ) {
if ( !$this->normaliseParams( $image, $params ) ) {
return new TransformParameterError( $params );
diff --git a/includes/media/DjVu.php b/includes/media/DjVu.php
index cc3f1db5..2833f683 100644
--- a/includes/media/DjVu.php
+++ b/includes/media/DjVu.php
@@ -5,13 +5,17 @@
* @file
* @ingroup Media
*/
-
+
/**
* Handler for DjVu images
*
* @ingroup Media
*/
class DjVuHandler extends ImageHandler {
+
+ /**
+ * @return bool
+ */
function isEnabled() {
global $wgDjvuRenderer, $wgDjvuDump, $wgDjvuToXML;
if ( !$wgDjvuRenderer || ( !$wgDjvuDump && !$wgDjvuToXML ) ) {
@@ -22,9 +26,25 @@ class DjVuHandler extends ImageHandler {
}
}
- function mustRender( $file ) { return true; }
- function isMultiPage( $file ) { return true; }
+ /**
+ * @param $file
+ * @return bool
+ */
+ function mustRender( $file ) {
+ return true;
+ }
+
+ /**
+ * @param $file
+ * @return bool
+ */
+ function isMultiPage( $file ) {
+ return true;
+ }
+ /**
+ * @return array
+ */
function getParamMap() {
return array(
'img_width' => 'width',
@@ -32,6 +52,11 @@ class DjVuHandler extends ImageHandler {
);
}
+ /**
+ * @param $name
+ * @param $value
+ * @return bool
+ */
function validateParam( $name, $value ) {
if ( in_array( $name, array( 'width', 'height', 'page' ) ) ) {
if ( $value <= 0 ) {
@@ -44,6 +69,10 @@ class DjVuHandler extends ImageHandler {
}
}
+ /**
+ * @param $params
+ * @return bool|string
+ */
function makeParamString( $params ) {
$page = isset( $params['page'] ) ? $params['page'] : 1;
if ( !isset( $params['width'] ) ) {
@@ -52,6 +81,10 @@ class DjVuHandler extends ImageHandler {
return "page{$page}-{$params['width']}px";
}
+ /**
+ * @param $str
+ * @return array|bool
+ */
function parseParamString( $str ) {
$m = false;
if ( preg_match( '/^page(\d+)-(\d+)px$/', $str, $m ) ) {
@@ -61,6 +94,10 @@ class DjVuHandler extends ImageHandler {
}
}
+ /**
+ * @param $params
+ * @return array
+ */
function getScriptParams( $params ) {
return array(
'width' => $params['width'],
@@ -68,6 +105,14 @@ class DjVuHandler extends ImageHandler {
);
}
+ /**
+ * @param $image File
+ * @param $dstPath
+ * @param $dstUrl
+ * @param $params
+ * @param int $flags
+ * @return MediaTransformError|ThumbnailImage|TransformParameterError
+ */
function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 ) {
global $wgDjvuRenderer, $wgDjvuPostProcessor;
@@ -75,7 +120,9 @@ class DjVuHandler extends ImageHandler {
// normaliseParams will inevitably give.
$xml = $image->getMetadata();
if ( !$xml ) {
- return new MediaTransformError( 'thumbnail_error', @$params['width'], @$params['height'],
+ $width = isset( $params['width'] ) ? $params['width'] : 0;
+ $height = isset( $params['height'] ) ? $params['height'] : 0;
+ return new MediaTransformError( 'thumbnail_error', $width, $height,
wfMsg( 'djvu_no_xml' ) );
}
@@ -100,7 +147,8 @@ class DjVuHandler extends ImageHandler {
# Use a subshell (brackets) to aggregate stderr from both pipeline commands
# before redirecting it to the overall stdout. This works in both Linux and Windows XP.
- $cmd = '(' . wfEscapeShellArg( $wgDjvuRenderer ) . " -format=ppm -page={$page} -size={$width}x{$height} " .
+ $cmd = '(' . wfEscapeShellArg( $wgDjvuRenderer ) . " -format=ppm -page={$page}" .
+ " -size={$params['physicalWidth']}x{$params['physicalHeight']} " .
wfEscapeShellArg( $srcPath );
if ( $wgDjvuPostProcessor ) {
$cmd .= " | {$wgDjvuPostProcessor}";
@@ -125,6 +173,8 @@ class DjVuHandler extends ImageHandler {
/**
* Cache an instance of DjVuImage in an Image object, return that instance
+ *
+ * @return DjVuImage
*/
function getDjVuImage( $image, $path ) {
if ( !$image ) {
@@ -139,6 +189,7 @@ class DjVuHandler extends ImageHandler {
/**
* Cache a document tree for the DjVu XML metadata
+ * @param $image File
*/
function getMetaTree( $image , $gettext = false ) {
if ( isset( $image->dejaMetaTree ) ) {
@@ -159,11 +210,11 @@ class DjVuHandler extends ImageHandler {
$image->djvuTextTree = false;
$tree = new SimpleXMLElement( $metadata );
if( $tree->getName() == 'mw-djvu' ) {
- foreach($tree->children() as $b){
+ foreach($tree->children() as $b){
if( $b->getName() == 'DjVuTxt' ) {
$image->djvuTextTree = $b;
}
- else if ( $b->getName() == 'DjVuXML' ) {
+ elseif ( $b->getName() == 'DjVuXML' ) {
$image->dejaMetaTree = $b;
}
}
diff --git a/includes/media/Exif.php b/includes/media/Exif.php
new file mode 100644
index 00000000..345a6f19
--- /dev/null
+++ b/includes/media/Exif.php
@@ -0,0 +1,836 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Media
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason, 2009 Brent Garber
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
+ * @see http://exif.org/Exif2-2.PDF The Exif 2.2 specification
+ * @file
+ */
+
+/**
+ * Class to extract and validate Exif data from jpeg (and possibly tiff) files.
+ * @ingroup Media
+ */
+class Exif {
+
+ const BYTE = 1; //!< An 8-bit (1-byte) unsigned integer.
+ const ASCII = 2; //!< An 8-bit byte containing one 7-bit ASCII code. The final byte is terminated with NULL.
+ const SHORT = 3; //!< A 16-bit (2-byte) unsigned integer.
+ const LONG = 4; //!< A 32-bit (4-byte) unsigned integer.
+ const RATIONAL = 5; //!< Two LONGs. The first LONG is the numerator and the second LONG expresses the denominator
+ const UNDEFINED = 7; //!< An 8-bit byte that can take any value depending on the field definition
+ const SLONG = 9; //!< A 32-bit (4-byte) signed integer (2's complement notation),
+ const SRATIONAL = 10; //!< Two SLONGs. The first SLONG is the numerator and the second SLONG is the denominator.
+ const IGNORE = -1; // A fake value for things we don't want or don't support.
+
+ //@{
+ /* @var array
+ * @private
+ */
+
+ /**
+ * Exif tags grouped by category, the tagname itself is the key and the type
+ * is the value, in the case of more than one possible value type they are
+ * separated by commas.
+ */
+ var $mExifTags;
+
+ /**
+ * The raw Exif data returned by exif_read_data()
+ */
+ var $mRawExifData;
+
+ /**
+ * A Filtered version of $mRawExifData that has been pruned of invalid
+ * tags and tags that contain content they shouldn't contain according
+ * to the Exif specification
+ */
+ var $mFilteredExifData;
+
+ /**
+ * Filtered and formatted Exif data, see FormatMetadata::getFormattedData()
+ */
+ var $mFormattedExifData;
+
+ //@}
+
+ //@{
+ /* @var string
+ * @private
+ */
+
+ /**
+ * The file being processed
+ */
+ var $file;
+
+ /**
+ * The basename of the file being processed
+ */
+ var $basename;
+
+ /**
+ * The private log to log to, e.g. 'exif'
+ */
+ var $log = false;
+
+ /**
+ * The byte order of the file. Needed because php's
+ * extension doesn't fully process some obscure props.
+ */
+ private $byteOrder;
+ //@}
+
+ /**
+ * Constructor
+ *
+ * @param $file String: filename.
+ * @todo FIXME: The following are broke:
+ * SubjectArea. Need to test the more obscure tags.
+ *
+ * DigitalZoomRatio = 0/0 is rejected. need to determine if that's valid.
+ * possibly should treat 0/0 = 0. need to read exif spec on that.
+ */
+ function __construct( $file, $byteOrder = '' ) {
+ /**
+ * Page numbers here refer to pages in the EXIF 2.2 standard
+ *
+ * Note, Exif::UNDEFINED is treated as a string, not as an array of bytes
+ * so don't put a count parameter for any UNDEFINED values.
+ *
+ * @link http://exif.org/Exif2-2.PDF The Exif 2.2 specification
+ */
+ $this->mExifTags = array(
+ # TIFF Rev. 6.0 Attribute Information (p22)
+ 'IFD0' => array(
+ # Tags relating to image structure
+ 'ImageWidth' => Exif::SHORT.','.Exif::LONG, # Image width
+ 'ImageLength' => Exif::SHORT.','.Exif::LONG, # Image height
+ 'BitsPerSample' => array( Exif::SHORT, 3 ), # Number of bits per component
+ # "When a primary image is JPEG compressed, this designation is not"
+ # "necessary and is omitted." (p23)
+ 'Compression' => Exif::SHORT, # Compression scheme #p23
+ 'PhotometricInterpretation' => Exif::SHORT, # Pixel composition #p23
+ 'Orientation' => Exif::SHORT, # Orientation of image #p24
+ 'SamplesPerPixel' => Exif::SHORT, # Number of components
+ 'PlanarConfiguration' => Exif::SHORT, # Image data arrangement #p24
+ 'YCbCrSubSampling' => array( Exif::SHORT, 2), # Subsampling ratio of Y to C #p24
+ 'YCbCrPositioning' => Exif::SHORT, # Y and C positioning #p24-25
+ 'XResolution' => Exif::RATIONAL, # Image resolution in width direction
+ 'YResolution' => Exif::RATIONAL, # Image resolution in height direction
+ 'ResolutionUnit' => Exif::SHORT, # Unit of X and Y resolution #(p26)
+
+ # Tags relating to recording offset
+ 'StripOffsets' => Exif::SHORT.','.Exif::LONG, # Image data location
+ 'RowsPerStrip' => Exif::SHORT.','.Exif::LONG, # Number of rows per strip
+ 'StripByteCounts' => Exif::SHORT.','.Exif::LONG, # Bytes per compressed strip
+ 'JPEGInterchangeFormat' => Exif::SHORT.','.Exif::LONG, # Offset to JPEG SOI
+ 'JPEGInterchangeFormatLength' => Exif::SHORT.','.Exif::LONG, # Bytes of JPEG data
+
+ # Tags relating to image data characteristics
+ 'TransferFunction' => Exif::IGNORE, # Transfer function
+ 'WhitePoint' => array( Exif::RATIONAL, 2), # White point chromaticity
+ 'PrimaryChromaticities' => array( Exif::RATIONAL, 6), # Chromaticities of primarities
+ 'YCbCrCoefficients' => array( Exif::RATIONAL, 3), # Color space transformation matrix coefficients #p27
+ 'ReferenceBlackWhite' => array( Exif::RATIONAL, 6), # Pair of black and white reference values
+
+ # Other tags
+ 'DateTime' => Exif::ASCII, # File change date and time
+ 'ImageDescription' => Exif::ASCII, # Image title
+ 'Make' => Exif::ASCII, # Image input equipment manufacturer
+ 'Model' => Exif::ASCII, # Image input equipment model
+ 'Software' => Exif::ASCII, # Software used
+ 'Artist' => Exif::ASCII, # Person who created the image
+ 'Copyright' => Exif::ASCII, # Copyright holder
+ ),
+
+ # Exif IFD Attribute Information (p30-31)
+ 'EXIF' => array(
+ # TODO: NOTE: Nonexistence of this field is taken to mean nonconformance
+ # to the EXIF 2.1 AND 2.2 standards
+ 'ExifVersion' => Exif::UNDEFINED, # Exif version
+ 'FlashPixVersion' => Exif::UNDEFINED, # Supported Flashpix version #p32
+
+ # Tags relating to Image Data Characteristics
+ 'ColorSpace' => Exif::SHORT, # Color space information #p32
+
+ # Tags relating to image configuration
+ 'ComponentsConfiguration' => Exif::UNDEFINED, # Meaning of each component #p33
+ 'CompressedBitsPerPixel' => Exif::RATIONAL, # Image compression mode
+ 'PixelYDimension' => Exif::SHORT.','.Exif::LONG, # Valid image width
+ 'PixelXDimension' => Exif::SHORT.','.Exif::LONG, # Valid image height
+
+ # Tags relating to related user information
+ 'MakerNote' => Exif::IGNORE, # Manufacturer notes
+ 'UserComment' => Exif::UNDEFINED, # User comments #p34
+
+ # Tags relating to related file information
+ 'RelatedSoundFile' => Exif::ASCII, # Related audio file
+
+ # Tags relating to date and time
+ 'DateTimeOriginal' => Exif::ASCII, # Date and time of original data generation #p36
+ 'DateTimeDigitized' => Exif::ASCII, # Date and time of original data generation
+ 'SubSecTime' => Exif::ASCII, # DateTime subseconds
+ 'SubSecTimeOriginal' => Exif::ASCII, # DateTimeOriginal subseconds
+ 'SubSecTimeDigitized' => Exif::ASCII, # DateTimeDigitized subseconds
+
+ # Tags relating to picture-taking conditions (p31)
+ 'ExposureTime' => Exif::RATIONAL, # Exposure time
+ 'FNumber' => Exif::RATIONAL, # F Number
+ 'ExposureProgram' => Exif::SHORT, # Exposure Program #p38
+ 'SpectralSensitivity' => Exif::ASCII, # Spectral sensitivity
+ 'ISOSpeedRatings' => Exif::SHORT, # ISO speed rating
+ 'OECF' => Exif::IGNORE,
+ # Optoelectronic conversion factor. Note: We don't have support for this atm.
+ 'ShutterSpeedValue' => Exif::SRATIONAL, # Shutter speed
+ 'ApertureValue' => Exif::RATIONAL, # Aperture
+ 'BrightnessValue' => Exif::SRATIONAL, # Brightness
+ 'ExposureBiasValue' => Exif::SRATIONAL, # Exposure bias
+ 'MaxApertureValue' => Exif::RATIONAL, # Maximum land aperture
+ 'SubjectDistance' => Exif::RATIONAL, # Subject distance
+ 'MeteringMode' => Exif::SHORT, # Metering mode #p40
+ 'LightSource' => Exif::SHORT, # Light source #p40-41
+ 'Flash' => Exif::SHORT, # Flash #p41-42
+ 'FocalLength' => Exif::RATIONAL, # Lens focal length
+ 'SubjectArea' => array( Exif::SHORT, 4 ), # Subject area
+ 'FlashEnergy' => Exif::RATIONAL, # Flash energy
+ 'SpatialFrequencyResponse' => Exif::IGNORE, # Spatial frequency response. Not supported atm.
+ 'FocalPlaneXResolution' => Exif::RATIONAL, # Focal plane X resolution
+ 'FocalPlaneYResolution' => Exif::RATIONAL, # Focal plane Y resolution
+ 'FocalPlaneResolutionUnit' => Exif::SHORT, # Focal plane resolution unit #p46
+ 'SubjectLocation' => array( Exif::SHORT, 2), # Subject location
+ 'ExposureIndex' => Exif::RATIONAL, # Exposure index
+ 'SensingMethod' => Exif::SHORT, # Sensing method #p46
+ 'FileSource' => Exif::UNDEFINED, # File source #p47
+ 'SceneType' => Exif::UNDEFINED, # Scene type #p47
+ 'CFAPattern' => Exif::IGNORE, # CFA pattern. not supported atm.
+ 'CustomRendered' => Exif::SHORT, # Custom image processing #p48
+ 'ExposureMode' => Exif::SHORT, # Exposure mode #p48
+ 'WhiteBalance' => Exif::SHORT, # White Balance #p49
+ 'DigitalZoomRatio' => Exif::RATIONAL, # Digital zoom ration
+ 'FocalLengthIn35mmFilm' => Exif::SHORT, # Focal length in 35 mm film
+ 'SceneCaptureType' => Exif::SHORT, # Scene capture type #p49
+ 'GainControl' => Exif::SHORT, # Scene control #p49-50
+ 'Contrast' => Exif::SHORT, # Contrast #p50
+ 'Saturation' => Exif::SHORT, # Saturation #p50
+ 'Sharpness' => Exif::SHORT, # Sharpness #p50
+ 'DeviceSettingDescription' => Exif::IGNORE,
+ # Device settings description. This could maybe be supported. Need to find an
+ # example file that uses this to see if it has stuff of interest in it.
+ 'SubjectDistanceRange' => Exif::SHORT, # Subject distance range #p51
+
+ 'ImageUniqueID' => Exif::ASCII, # Unique image ID
+ ),
+
+ # GPS Attribute Information (p52)
+ 'GPS' => array(
+ 'GPSVersion' => Exif::UNDEFINED,
+ # Should be an array of 4 Exif::BYTE's. However php treats it as an undefined
+ # Note exif standard calls this GPSVersionID, but php doesn't like the id suffix
+ 'GPSLatitudeRef' => Exif::ASCII, # North or South Latitude #p52-53
+ 'GPSLatitude' => array( Exif::RATIONAL, 3 ), # Latitude
+ 'GPSLongitudeRef' => Exif::ASCII, # East or West Longitude #p53
+ 'GPSLongitude' => array( Exif::RATIONAL, 3), # Longitude
+ 'GPSAltitudeRef' => Exif::UNDEFINED,
+ # Altitude reference. Note, the exif standard says this should be an EXIF::Byte,
+ # but php seems to disagree.
+ 'GPSAltitude' => Exif::RATIONAL, # Altitude
+ 'GPSTimeStamp' => array( Exif::RATIONAL, 3), # GPS time (atomic clock)
+ 'GPSSatellites' => Exif::ASCII, # Satellites used for measurement
+ 'GPSStatus' => Exif::ASCII, # Receiver status #p54
+ 'GPSMeasureMode' => Exif::ASCII, # Measurement mode #p54-55
+ 'GPSDOP' => Exif::RATIONAL, # Measurement precision
+ 'GPSSpeedRef' => Exif::ASCII, # Speed unit #p55
+ 'GPSSpeed' => Exif::RATIONAL, # Speed of GPS receiver
+ 'GPSTrackRef' => Exif::ASCII, # Reference for direction of movement #p55
+ 'GPSTrack' => Exif::RATIONAL, # Direction of movement
+ 'GPSImgDirectionRef' => Exif::ASCII, # Reference for direction of image #p56
+ 'GPSImgDirection' => Exif::RATIONAL, # Direction of image
+ 'GPSMapDatum' => Exif::ASCII, # Geodetic survey data used
+ 'GPSDestLatitudeRef' => Exif::ASCII, # Reference for latitude of destination #p56
+ 'GPSDestLatitude' => array( Exif::RATIONAL, 3 ), # Latitude destination
+ 'GPSDestLongitudeRef' => Exif::ASCII, # Reference for longitude of destination #p57
+ 'GPSDestLongitude' => array( Exif::RATIONAL, 3 ), # Longitude of destination
+ 'GPSDestBearingRef' => Exif::ASCII, # Reference for bearing of destination #p57
+ 'GPSDestBearing' => Exif::RATIONAL, # Bearing of destination
+ 'GPSDestDistanceRef' => Exif::ASCII, # Reference for distance to destination #p57-58
+ 'GPSDestDistance' => Exif::RATIONAL, # Distance to destination
+ 'GPSProcessingMethod' => Exif::UNDEFINED, # Name of GPS processing method
+ 'GPSAreaInformation' => Exif::UNDEFINED, # Name of GPS area
+ 'GPSDateStamp' => Exif::ASCII, # GPS date
+ 'GPSDifferential' => Exif::SHORT, # GPS differential correction
+ ),
+ );
+
+ $this->file = $file;
+ $this->basename = wfBaseName( $this->file );
+ if ( $byteOrder === 'BE' || $byteOrder === 'LE' ) {
+ $this->byteOrder = $byteOrder;
+ } else {
+ // Only give a warning for b/c, since originally we didn't
+ // require this. The number of things affected by this is
+ // rather small.
+ wfWarn( 'Exif class did not have byte order specified. '
+ . 'Some properties may be decoded incorrectly.' );
+ $this->byteOrder = 'BE'; // BE seems about twice as popular as LE in jpg's.
+ }
+
+ $this->debugFile( $this->basename, __FUNCTION__, true );
+ if( function_exists( 'exif_read_data' ) ) {
+ wfSuppressWarnings();
+ $data = exif_read_data( $this->file, 0, true );
+ wfRestoreWarnings();
+ } else {
+ throw new MWException( "Internal error: exif_read_data not present. \$wgShowEXIF may be incorrectly set or not checked by an extension." );
+ }
+ /**
+ * exif_read_data() will return false on invalid input, such as
+ * when somebody uploads a file called something.jpeg
+ * containing random gibberish.
+ */
+ $this->mRawExifData = $data ? $data : array();
+ $this->makeFilteredData();
+ $this->collapseData();
+ $this->debugFile( __FUNCTION__, false );
+ }
+
+ /**
+ * Make $this->mFilteredExifData
+ */
+ function makeFilteredData() {
+ $this->mFilteredExifData = Array();
+
+ foreach ( array_keys( $this->mRawExifData ) as $section ) {
+ if ( !in_array( $section, array_keys( $this->mExifTags ) ) ) {
+ $this->debug( $section , __FUNCTION__, "'$section' is not a valid Exif section" );
+ continue;
+ }
+
+ foreach ( array_keys( $this->mRawExifData[$section] ) as $tag ) {
+ if ( !in_array( $tag, array_keys( $this->mExifTags[$section] ) ) ) {
+ $this->debug( $tag, __FUNCTION__, "'$tag' is not a valid tag in '$section'" );
+ continue;
+ }
+
+ $this->mFilteredExifData[$tag] = $this->mRawExifData[$section][$tag];
+ // This is ok, as the tags in the different sections do not conflict.
+ // except in computed and thumbnail section, which we don't use.
+
+ $value = $this->mRawExifData[$section][$tag];
+ if ( !$this->validate( $section, $tag, $value ) ) {
+ $this->debug( $value, __FUNCTION__, "'$tag' contained invalid data" );
+ unset( $this->mFilteredExifData[$tag] );
+ }
+ }
+ }
+ }
+
+ /**
+ * Collapse some fields together.
+ * This converts some fields from exif form, to a more friendly form.
+ * For example GPS latitude to a single number.
+ *
+ * The rationale behind this is that we're storing data, not presenting to the user
+ * For example a longitude is a single number describing how far away you are from
+ * the prime meridian. Well it might be nice to split it up into minutes and seconds
+ * for the user, it doesn't really make sense to split a single number into 4 parts
+ * for storage. (degrees, minutes, second, direction vs single floating point number).
+ *
+ * Other things this might do (not really sure if they make sense or not):
+ * Dates -> mediawiki date format.
+ * convert values that can be in different units to be in one standardized unit.
+ *
+ * As an alternative approach, some of this could be done in the validate phase
+ * if we make up our own types like Exif::DATE.
+ */
+ function collapseData( ) {
+
+ $this->exifGPStoNumber( 'GPSLatitude' );
+ $this->exifGPStoNumber( 'GPSDestLatitude' );
+ $this->exifGPStoNumber( 'GPSLongitude' );
+ $this->exifGPStoNumber( 'GPSDestLongitude' );
+
+ if ( isset( $this->mFilteredExifData['GPSAltitude'] ) && isset( $this->mFilteredExifData['GPSAltitudeRef'] ) ) {
+ if ( $this->mFilteredExifData['GPSAltitudeRef'] === "\1" ) {
+ $this->mFilteredExifData['GPSAltitude'] *= - 1;
+ }
+ unset( $this->mFilteredExifData['GPSAltitudeRef'] );
+ }
+
+ $this->exifPropToOrd( 'FileSource' );
+ $this->exifPropToOrd( 'SceneType' );
+
+ $this->charCodeString( 'UserComment' );
+ $this->charCodeString( 'GPSProcessingMethod');
+ $this->charCodeString( 'GPSAreaInformation' );
+
+ //ComponentsConfiguration should really be an array instead of a string...
+ //This turns a string of binary numbers into an array of numbers.
+
+ if ( isset ( $this->mFilteredExifData['ComponentsConfiguration'] ) ) {
+ $val = $this->mFilteredExifData['ComponentsConfiguration'];
+ $ccVals = array();
+ for ($i = 0; $i < strlen($val); $i++) {
+ $ccVals[$i] = ord( substr($val, $i, 1) );
+ }
+ $ccVals['_type'] = 'ol'; //this is for formatting later.
+ $this->mFilteredExifData['ComponentsConfiguration'] = $ccVals;
+ }
+
+ //GPSVersion(ID) is treated as the wrong type by php exif support.
+ //Go through each byte turning it into a version string.
+ //For example: "\x02\x02\x00\x00" -> "2.2.0.0"
+
+ //Also change exif tag name from GPSVersion (what php exif thinks it is)
+ //to GPSVersionID (what the exif standard thinks it is).
+
+ if ( isset ( $this->mFilteredExifData['GPSVersion'] ) ) {
+ $val = $this->mFilteredExifData['GPSVersion'];
+ $newVal = '';
+ for ($i = 0; $i < strlen($val); $i++) {
+ if ( $i !== 0 ) {
+ $newVal .= '.';
+ }
+ $newVal .= ord( substr($val, $i, 1) );
+ }
+ if ( $this->byteOrder === 'LE' ) {
+ // Need to reverse the string
+ $newVal2 = '';
+ for ( $i = strlen( $newVal ) - 1; $i >= 0; $i-- ) {
+ $newVal2 .= substr( $newVal, $i, 1 );
+ }
+ $this->mFilteredExifData['GPSVersionID'] = $newVal2;
+ } else {
+ $this->mFilteredExifData['GPSVersionID'] = $newVal;
+ }
+ unset( $this->mFilteredExifData['GPSVersion'] );
+ }
+
+ }
+ /**
+ * Do userComment tags and similar. See pg. 34 of exif standard.
+ * basically first 8 bytes is charset, rest is value.
+ * This has not been tested on any shift-JIS strings.
+ * @param $prop String prop name.
+ */
+ private function charCodeString ( $prop ) {
+ if ( isset( $this->mFilteredExifData[$prop] ) ) {
+
+ if ( strlen($this->mFilteredExifData[$prop]) <= 8 ) {
+ //invalid. Must be at least 9 bytes long.
+
+ $this->debug( $this->mFilteredExifData[$prop] , __FUNCTION__, false );
+ unset($this->mFilteredExifData[$prop]);
+ return;
+ }
+ $charCode = substr( $this->mFilteredExifData[$prop], 0, 8);
+ $val = substr( $this->mFilteredExifData[$prop], 8);
+
+
+ switch ($charCode) {
+ case "\x4A\x49\x53\x00\x00\x00\x00\x00":
+ //JIS
+ $charset = "Shift-JIS";
+ break;
+ case "UNICODE\x00":
+ $charset = "UTF-16" . $this->byteOrder;
+ break;
+ default: //ascii or undefined.
+ $charset = "";
+ break;
+ }
+ // This could possibly check to see if iconv is really installed
+ // or if we're using the compatibility wrapper in globalFunctions.php
+ if ($charset) {
+ wfSuppressWarnings();
+ $val = iconv($charset, 'UTF-8//IGNORE', $val);
+ wfRestoreWarnings();
+ } else {
+ // if valid utf-8, assume that, otherwise assume windows-1252
+ $valCopy = $val;
+ UtfNormal::quickIsNFCVerify( $valCopy ); //validates $valCopy.
+ if ( $valCopy !== $val ) {
+ wfSuppressWarnings();
+ $val = iconv('Windows-1252', 'UTF-8//IGNORE', $val);
+ wfRestoreWarnings();
+ }
+ }
+
+ //trim and check to make sure not only whitespace.
+ $val = trim($val);
+ if ( strlen( $val ) === 0 ) {
+ //only whitespace.
+ $this->debug( $this->mFilteredExifData[$prop] , __FUNCTION__, "$prop: Is only whitespace" );
+ unset($this->mFilteredExifData[$prop]);
+ return;
+ }
+
+ //all's good.
+ $this->mFilteredExifData[$prop] = $val;
+ }
+ }
+ /**
+ * Convert an Exif::UNDEFINED from a raw binary string
+ * to its value. This is sometimes needed depending on
+ * the type of UNDEFINED field
+ * @param $prop String name of property
+ */
+ private function exifPropToOrd ( $prop ) {
+ if ( isset( $this->mFilteredExifData[$prop] ) ) {
+ $this->mFilteredExifData[$prop] = ord( $this->mFilteredExifData[$prop] );
+ }
+ }
+ /**
+ * Convert gps in exif form to a single floating point number
+ * for example 10 degress 20`40`` S -> -10.34444
+ * @param String $prop a gps coordinate exif tag name (like GPSLongitude)
+ */
+ private function exifGPStoNumber ( $prop ) {
+ $loc =& $this->mFilteredExifData[$prop];
+ $dir =& $this->mFilteredExifData[$prop . 'Ref'];
+ $res = false;
+
+ if ( isset( $loc ) && isset( $dir ) && ( $dir === 'N' || $dir === 'S' || $dir === 'E' || $dir === 'W' ) ) {
+ list( $num, $denom ) = explode( '/', $loc[0] );
+ $res = $num / $denom;
+ list( $num, $denom ) = explode( '/', $loc[1] );
+ $res += ( $num / $denom ) * ( 1 / 60 );
+ list( $num, $denom ) = explode( '/', $loc[2] );
+ $res += ( $num / $denom ) * ( 1 / 3600 );
+
+ if ( $dir === 'S' || $dir === 'W' ) {
+ $res *= - 1; // make negative
+ }
+ }
+
+ // update the exif records.
+
+ if ( $res !== false ) { // using !== as $res could potentially be 0
+ $this->mFilteredExifData[$prop] = $res;
+ unset( $this->mFilteredExifData[$prop . 'Ref'] );
+ } else { // if invalid
+ unset( $this->mFilteredExifData[$prop] );
+ unset( $this->mFilteredExifData[$prop . 'Ref'] );
+ }
+ }
+
+ /**
+ * Use FormatMetadata to create formatted values for display to user
+ * (is this ever used?)
+ *
+ * @deprecated since 1.18
+ */
+ function makeFormattedData( ) {
+ wfDeprecated( __METHOD__ );
+ $this->mFormattedExifData = FormatMetadata::getFormattedData(
+ $this->mFilteredExifData );
+ }
+ /**#@-*/
+
+ /**#@+
+ * @return array
+ */
+ /**
+ * Get $this->mRawExifData
+ */
+ function getData() {
+ return $this->mRawExifData;
+ }
+
+ /**
+ * Get $this->mFilteredExifData
+ */
+ function getFilteredData() {
+ return $this->mFilteredExifData;
+ }
+
+ /**
+ * Get $this->mFormattedExifData
+ *
+ * This returns the data for display to user.
+ * Its unclear if this is ever used.
+ *
+ * @deprecated since 1.18
+ */
+ function getFormattedData() {
+ wfDeprecated( __METHOD__ );
+ if (!$this->mFormattedExifData) {
+ $this->makeFormattedData();
+ }
+ return $this->mFormattedExifData;
+ }
+ /**#@-*/
+
+ /**
+ * The version of the output format
+ *
+ * Before the actual metadata information is saved in the database we
+ * strip some of it since we don't want to save things like thumbnails
+ * which usually accompany Exif data. This value gets saved in the
+ * database along with the actual Exif data, and if the version in the
+ * database doesn't equal the value returned by this function the Exif
+ * data is regenerated.
+ *
+ * @return int
+ */
+ public static function version() {
+ return 2; // We don't need no bloddy constants!
+ }
+
+ /**#@+
+ * Validates if a tag value is of the type it should be according to the Exif spec
+ *
+ * @private
+ *
+ * @param $in Mixed: the input value to check
+ * @return bool
+ */
+ private function isByte( $in ) {
+ if ( !is_array( $in ) && sprintf('%d', $in) == $in && $in >= 0 && $in <= 255 ) {
+ $this->debug( $in, __FUNCTION__, true );
+ return true;
+ } else {
+ $this->debug( $in, __FUNCTION__, false );
+ return false;
+ }
+ }
+
+ /**
+ * @param $in
+ * @return bool
+ */
+ private function isASCII( $in ) {
+ if ( is_array( $in ) ) {
+ return false;
+ }
+
+ if ( preg_match( "/[^\x0a\x20-\x7e]/", $in ) ) {
+ $this->debug( $in, __FUNCTION__, 'found a character not in our whitelist' );
+ return false;
+ }
+
+ if ( preg_match( '/^\s*$/', $in ) ) {
+ $this->debug( $in, __FUNCTION__, 'input consisted solely of whitespace' );
+ return false;
+ }
+
+ return true;
+ }
+
+ /**
+ * @param $in
+ * @return bool
+ */
+ private function isShort( $in ) {
+ if ( !is_array( $in ) && sprintf('%d', $in) == $in && $in >= 0 && $in <= 65536 ) {
+ $this->debug( $in, __FUNCTION__, true );
+ return true;
+ } else {
+ $this->debug( $in, __FUNCTION__, false );
+ return false;
+ }
+ }
+
+ /**
+ * @param $in
+ * @return bool
+ */
+ private function isLong( $in ) {
+ if ( !is_array( $in ) && sprintf('%d', $in) == $in && $in >= 0 && $in <= 4294967296 ) {
+ $this->debug( $in, __FUNCTION__, true );
+ return true;
+ } else {
+ $this->debug( $in, __FUNCTION__, false );
+ return false;
+ }
+ }
+
+ /**
+ * @param $in
+ * @return bool
+ */
+ private function isRational( $in ) {
+ $m = array();
+ if ( !is_array( $in ) && @preg_match( '/^(\d+)\/(\d+[1-9]|[1-9]\d*)$/', $in, $m ) ) { # Avoid division by zero
+ return $this->isLong( $m[1] ) && $this->isLong( $m[2] );
+ } else {
+ $this->debug( $in, __FUNCTION__, 'fed a non-fraction value' );
+ return false;
+ }
+ }
+
+ /**
+ * @param $in
+ * @return bool
+ */
+ private function isUndefined( $in ) {
+ $this->debug( $in, __FUNCTION__, true );
+ return true;
+ }
+
+ /**
+ * @param $in
+ * @return bool
+ */
+ private function isSlong( $in ) {
+ if ( $this->isLong( abs( $in ) ) ) {
+ $this->debug( $in, __FUNCTION__, true );
+ return true;
+ } else {
+ $this->debug( $in, __FUNCTION__, false );
+ return false;
+ }
+ }
+
+ /**
+ * @param $in
+ * @return bool
+ */
+ private function isSrational( $in ) {
+ $m = array();
+ if ( !is_array( $in ) && preg_match( '/^(-?\d+)\/(\d+[1-9]|[1-9]\d*)$/', $in, $m ) ) { # Avoid division by zero
+ return $this->isSlong( $m[0] ) && $this->isSlong( $m[1] );
+ } else {
+ $this->debug( $in, __FUNCTION__, 'fed a non-fraction value' );
+ return false;
+ }
+ }
+ /**#@-*/
+
+ /**
+ * Validates if a tag has a legal value according to the Exif spec
+ *
+ * @private
+ * @param $section String: section where tag is located.
+ * @param $tag String: the tag to check.
+ * @param $val Mixed: the value of the tag.
+ * @param $recursive Boolean: true if called recursively for array types.
+ * @return bool
+ */
+ private function validate( $section, $tag, $val, $recursive = false ) {
+ $debug = "tag is '$tag'";
+ $etype = $this->mExifTags[$section][$tag];
+ $ecount = 1;
+ if( is_array( $etype ) ) {
+ list( $etype, $ecount ) = $etype;
+ if ( $recursive )
+ $ecount = 1; // checking individual elements
+ }
+ $count = count( $val );
+ if( $ecount != $count ) {
+ $this->debug( $val, __FUNCTION__, "Expected $ecount elements for $tag but got $count" );
+ return false;
+ }
+ if( $count > 1 ) {
+ foreach( $val as $v ) {
+ if( !$this->validate( $section, $tag, $v, true ) ) {
+ return false;
+ }
+ }
+ return true;
+ }
+ // Does not work if not typecast
+ switch( (string)$etype ) {
+ case (string)Exif::BYTE:
+ $this->debug( $val, __FUNCTION__, $debug );
+ return $this->isByte( $val );
+ case (string)Exif::ASCII:
+ $this->debug( $val, __FUNCTION__, $debug );
+ return $this->isASCII( $val );
+ case (string)Exif::SHORT:
+ $this->debug( $val, __FUNCTION__, $debug );
+ return $this->isShort( $val );
+ case (string)Exif::LONG:
+ $this->debug( $val, __FUNCTION__, $debug );
+ return $this->isLong( $val );
+ case (string)Exif::RATIONAL:
+ $this->debug( $val, __FUNCTION__, $debug );
+ return $this->isRational( $val );
+ case (string)Exif::UNDEFINED:
+ $this->debug( $val, __FUNCTION__, $debug );
+ return $this->isUndefined( $val );
+ case (string)Exif::SLONG:
+ $this->debug( $val, __FUNCTION__, $debug );
+ return $this->isSlong( $val );
+ case (string)Exif::SRATIONAL:
+ $this->debug( $val, __FUNCTION__, $debug );
+ return $this->isSrational( $val );
+ case (string)Exif::SHORT.','.Exif::LONG:
+ $this->debug( $val, __FUNCTION__, $debug );
+ return $this->isShort( $val ) || $this->isLong( $val );
+ case (string)Exif::IGNORE:
+ $this->debug( $val, __FUNCTION__, $debug );
+ return false;
+ default:
+ $this->debug( $val, __FUNCTION__, "The tag '$tag' is unknown" );
+ return false;
+ }
+ }
+
+ /**
+ * Convenience function for debugging output
+ *
+ * @private
+ *
+ * @param $in Mixed:
+ * @param $fname String:
+ * @param $action Mixed: , default NULL.
+ */
+ private function debug( $in, $fname, $action = null ) {
+ if ( !$this->log ) {
+ return;
+ }
+ $type = gettype( $in );
+ $class = ucfirst( __CLASS__ );
+ if ( $type === 'array' ) {
+ $in = print_r( $in, true );
+ }
+
+ if ( $action === true ) {
+ wfDebugLog( $this->log, "$class::$fname: accepted: '$in' (type: $type)\n");
+ } elseif ( $action === false ) {
+ wfDebugLog( $this->log, "$class::$fname: rejected: '$in' (type: $type)\n");
+ } elseif ( $action === null ) {
+ wfDebugLog( $this->log, "$class::$fname: input was: '$in' (type: $type)\n");
+ } else {
+ wfDebugLog( $this->log, "$class::$fname: $action (type: $type; content: '$in')\n");
+ }
+ }
+
+ /**
+ * Convenience function for debugging output
+ *
+ * @private
+ *
+ * @param $fname String: the name of the function calling this function
+ * @param $io Boolean: Specify whether we're beginning or ending
+ */
+ private function debugFile( $fname, $io ) {
+ if ( !$this->log ) {
+ return;
+ }
+ $class = ucfirst( __CLASS__ );
+ if ( $io ) {
+ wfDebugLog( $this->log, "$class::$fname: begin processing: '{$this->basename}'\n" );
+ } else {
+ wfDebugLog( $this->log, "$class::$fname: end processing: '{$this->basename}'\n" );
+ }
+ }
+}
+
diff --git a/includes/media/ExifBitmap.php b/includes/media/ExifBitmap.php
new file mode 100644
index 00000000..05ce161b
--- /dev/null
+++ b/includes/media/ExifBitmap.php
@@ -0,0 +1,210 @@
+<?php
+/**
+ * @file
+ * @ingroup Media
+ */
+
+/**
+ * Stuff specific to JPEG and (built-in) TIFF handler.
+ * All metadata related, since both JPEG and TIFF support Exif.
+ *
+ * @ingroup Media
+ */
+class ExifBitmapHandler extends BitmapHandler {
+
+ const BROKEN_FILE = '-1'; // error extracting metadata
+ const OLD_BROKEN_FILE = '0'; // outdated error extracting metadata.
+
+ function convertMetadataVersion( $metadata, $version = 1 ) {
+ // basically flattens arrays.
+ $version = explode(';', $version, 2);
+ $version = intval($version[0]);
+ if ( $version < 1 || $version >= 2 ) {
+ return $metadata;
+ }
+
+ $avoidHtml = true;
+
+ if ( !is_array( $metadata ) ) {
+ $metadata = unserialize( $metadata );
+ }
+ if ( !isset( $metadata['MEDIAWIKI_EXIF_VERSION'] ) || $metadata['MEDIAWIKI_EXIF_VERSION'] != 2 ) {
+ return $metadata;
+ }
+
+ // Treat Software as a special case because in can contain
+ // an array of (SoftwareName, Version).
+ if (isset( $metadata['Software'] )
+ && is_array( $metadata['Software'] )
+ && is_array( $metadata['Software'][0])
+ && isset( $metadata['Software'][0][0] )
+ && isset( $metadata['Software'][0][1])
+ ) {
+ $metadata['Software'] = $metadata['Software'][0][0] . ' (Version '
+ . $metadata['Software'][0][1] . ')';
+ }
+
+ // ContactInfo also has to be dealt with specially
+ if ( isset( $metadata['Contact'] ) ) {
+ $metadata['Contact'] =
+ FormatMetadata::collapseContactInfo(
+ $metadata['Contact'] );
+ }
+
+ foreach ( $metadata as &$val ) {
+ if ( is_array( $val ) ) {
+ $val = FormatMetadata::flattenArray( $val, 'ul', $avoidHtml );
+ }
+ }
+ $metadata['MEDIAWIKI_EXIF_VERSION'] = 1;
+ return $metadata;
+ }
+
+ function isMetadataValid( $image, $metadata ) {
+ global $wgShowEXIF;
+ if ( !$wgShowEXIF ) {
+ # Metadata disabled and so an empty field is expected
+ return self::METADATA_GOOD;
+ }
+ if ( $metadata === self::OLD_BROKEN_FILE ) {
+ # Old special value indicating that there is no EXIF data in the file.
+ # or that there was an error well extracting the metadata.
+ wfDebug( __METHOD__ . ": back-compat version\n");
+ return self::METADATA_COMPATIBLE;
+ }
+ if ( $metadata === self::BROKEN_FILE ) {
+ return self::METADATA_GOOD;
+ }
+ wfSuppressWarnings();
+ $exif = unserialize( $metadata );
+ wfRestoreWarnings();
+ if ( !isset( $exif['MEDIAWIKI_EXIF_VERSION'] ) ||
+ $exif['MEDIAWIKI_EXIF_VERSION'] != Exif::version() )
+ {
+ if ( isset( $exif['MEDIAWIKI_EXIF_VERSION'] ) &&
+ $exif['MEDIAWIKI_EXIF_VERSION'] == 1 )
+ {
+ //back-compatible but old
+ wfDebug( __METHOD__.": back-compat version\n" );
+ return self::METADATA_COMPATIBLE;
+ }
+ # Wrong (non-compatible) version
+ wfDebug( __METHOD__.": wrong version\n" );
+ return self::METADATA_BAD;
+ }
+ return self::METADATA_GOOD;
+ }
+
+ /**
+ * @param $image File
+ * @return array|bool
+ */
+ function formatMetadata( $image ) {
+ $metadata = $image->getMetadata();
+ if ( $metadata === self::OLD_BROKEN_FILE ||
+ $metadata === self::BROKEN_FILE ||
+ $this->isMetadataValid( $image, $metadata ) === self::METADATA_BAD )
+ {
+ // So we don't try and display metadata from PagedTiffHandler
+ // for example when using InstantCommons.
+ return false;
+ }
+
+ $exif = unserialize( $metadata );
+ if ( !$exif ) {
+ return false;
+ }
+ unset( $exif['MEDIAWIKI_EXIF_VERSION'] );
+ if ( count( $exif ) == 0 ) {
+ return false;
+ }
+ return $this->formatMetadataHelper( $exif );
+ }
+
+ function getMetadataType( $image ) {
+ return 'exif';
+ }
+
+ /**
+ * Wrapper for base classes ImageHandler::getImageSize() that checks for
+ * rotation reported from metadata and swaps the sizes to match.
+ *
+ * @param File $image
+ * @param string $path
+ * @return array
+ */
+ function getImageSize( $image, $path ) {
+ global $wgEnableAutoRotation;
+ $gis = parent::getImageSize( $image, $path );
+
+ // Don't just call $image->getMetadata(); File::getPropsFromPath() calls us with a bogus object.
+ // This may mean we read EXIF data twice on initial upload.
+ if ( $wgEnableAutoRotation ) {
+ $meta = $this->getMetadata( $image, $path );
+ $rotation = $this->getRotationForExif( $meta );
+ } else {
+ $rotation = 0;
+ }
+
+ if ($rotation == 90 || $rotation == 270) {
+ $width = $gis[0];
+ $gis[0] = $gis[1];
+ $gis[1] = $width;
+ }
+ return $gis;
+ }
+
+ /**
+ * On supporting image formats, try to read out the low-level orientation
+ * of the file and return the angle that the file needs to be rotated to
+ * be viewed.
+ *
+ * This information is only useful when manipulating the original file;
+ * the width and height we normally work with is logical, and will match
+ * any produced output views.
+ *
+ * @param $file File
+ * @return int 0, 90, 180 or 270
+ */
+ public function getRotation( $file ) {
+ global $wgEnableAutoRotation;
+ if ( !$wgEnableAutoRotation ) {
+ return 0;
+ }
+
+ $data = $file->getMetadata();
+ return $this->getRotationForExif( $data );
+ }
+
+ /**
+ * Given a chunk of serialized Exif metadata, return the orientation as
+ * degrees of rotation.
+ *
+ * @param string $data
+ * @return int 0, 90, 180 or 270
+ * @fixme orientation can include flipping as well; see if this is an issue!
+ */
+ protected function getRotationForExif( $data ) {
+ if ( !$data ) {
+ return 0;
+ }
+ wfSuppressWarnings();
+ $data = unserialize( $data );
+ wfRestoreWarnings();
+ if ( isset( $data['Orientation'] ) ) {
+ # See http://sylvana.net/jpegcrop/exif_orientation.html
+ switch ( $data['Orientation'] ) {
+ case 8:
+ return 90;
+ case 3:
+ return 180;
+ case 6:
+ return 270;
+ default:
+ return 0;
+ }
+ }
+ return 0;
+ }
+}
+
diff --git a/includes/media/FormatMetadata.php b/includes/media/FormatMetadata.php
new file mode 100644
index 00000000..47fc1adc
--- /dev/null
+++ b/includes/media/FormatMetadata.php
@@ -0,0 +1,1354 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Media
+ * @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
+ * @copyright Copyright © 2005, Ævar Arnfjörð Bjarmason, 2009 Brent Garber, 2010 Brian Wolff
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License
+ * @see http://exif.org/Exif2-2.PDF The Exif 2.2 specification
+ * @file
+ */
+
+
+/**
+ * Format Image metadata values into a human readable form.
+ *
+ * Note lots of these messages use the prefix 'exif' even though
+ * they may not be exif properties. For example 'exif-ImageDescription'
+ * can be the Exif ImageDescription, or it could be the iptc-iim caption
+ * property, or it could be the xmp dc:description property. This
+ * is because these messages should be independent of how the data is
+ * stored, sine the user doesn't care if the description is stored in xmp,
+ * exif, etc only that its a description. (Additionally many of these properties
+ * are merged together following the MWG standard, such that for example,
+ * exif properties override XMP properties that mean the same thing if
+ * there is a conflict).
+ *
+ * It should perhaps use a prefix like 'metadata' instead, but there
+ * is already a large number of messages using the 'exif' prefix.
+ *
+ * @ingroup Media
+ */
+class FormatMetadata {
+
+ /**
+ * Numbers given by Exif user agents are often magical, that is they
+ * should be replaced by a detailed explanation depending on their
+ * value which most of the time are plain integers. This function
+ * formats Exif (and other metadata) values into human readable form.
+ *
+ * @param $tags Array: the Exif data to format ( as returned by
+ * Exif::getFilteredData() or BitmapMetadataHandler )
+ * @return array
+ */
+ public static function getFormattedData( $tags ) {
+ global $wgLang;
+
+ $resolutionunit = !isset( $tags['ResolutionUnit'] ) || $tags['ResolutionUnit'] == 2 ? 2 : 3;
+ unset( $tags['ResolutionUnit'] );
+
+ foreach ( $tags as $tag => &$vals ) {
+
+ // This seems ugly to wrap non-array's in an array just to unwrap again,
+ // especially when most of the time it is not an array
+ if ( !is_array( $tags[$tag] ) ) {
+ $vals = Array( $vals );
+ }
+
+ // _type is a special value to say what array type
+ if ( isset( $tags[$tag]['_type'] ) ) {
+ $type = $tags[$tag]['_type'];
+ unset( $vals['_type'] );
+ } else {
+ $type = 'ul'; // default unordered list.
+ }
+
+ //This is done differently as the tag is an array.
+ if ($tag == 'GPSTimeStamp' && count($vals) === 3) {
+ //hour min sec array
+
+ $h = explode('/', $vals[0]);
+ $m = explode('/', $vals[1]);
+ $s = explode('/', $vals[2]);
+
+ // this should already be validated
+ // when loaded from file, but it could
+ // come from a foreign repo, so be
+ // paranoid.
+ if ( !isset($h[1])
+ || !isset($m[1])
+ || !isset($s[1])
+ || $h[1] == 0
+ || $m[1] == 0
+ || $s[1] == 0
+ ) {
+ continue;
+ }
+ $tags[$tag] = intval( $h[0] / $h[1] )
+ . ':' . str_pad( intval( $m[0] / $m[1] ), 2, '0', STR_PAD_LEFT )
+ . ':' . str_pad( intval( $s[0] / $s[1] ), 2, '0', STR_PAD_LEFT );
+
+ $time = wfTimestamp( TS_MW, '1971:01:01 ' . $tags[$tag] );
+ // the 1971:01:01 is just a placeholder, and not shown to user.
+ if ( $time && intval( $time ) > 0 ) {
+ $tags[$tag] = $wgLang->time( $time );
+ }
+ continue;
+ }
+
+ // The contact info is a multi-valued field
+ // instead of the other props which are single
+ // valued (mostly) so handle as a special case.
+ if ( $tag === 'Contact' ) {
+ $vals = self::collapseContactInfo( $vals );
+ continue;
+ }
+
+ foreach ( $vals as &$val ) {
+
+ switch( $tag ) {
+ case 'Compression':
+ switch( $val ) {
+ case 1: case 2: case 3: case 4:
+ case 5: case 6: case 7: case 8:
+ case 32773: case 32946: case 34712:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'PhotometricInterpretation':
+ switch( $val ) {
+ case 2: case 6:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'Orientation':
+ switch( $val ) {
+ case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'PlanarConfiguration':
+ switch( $val ) {
+ case 1: case 2:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ // TODO: YCbCrSubSampling
+ case 'YCbCrPositioning':
+ switch ( $val ) {
+ case 1:
+ case 2:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'XResolution':
+ case 'YResolution':
+ switch( $resolutionunit ) {
+ case 2:
+ $val = self::msg( 'XYResolution', 'i', self::formatNum( $val ) );
+ break;
+ case 3:
+ $val = self::msg( 'XYResolution', 'c', self::formatNum( $val ) );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ // TODO: YCbCrCoefficients #p27 (see annex E)
+ case 'ExifVersion': case 'FlashpixVersion':
+ $val = "$val" / 100;
+ break;
+
+ case 'ColorSpace':
+ switch( $val ) {
+ case 1: case 65535:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'ComponentsConfiguration':
+ switch( $val ) {
+ case 0: case 1: case 2: case 3: case 4: case 5: case 6:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'DateTime':
+ case 'DateTimeOriginal':
+ case 'DateTimeDigitized':
+ case 'DateTimeReleased':
+ case 'DateTimeExpires':
+ case 'GPSDateStamp':
+ case 'dc-date':
+ case 'DateTimeMetadata':
+ if ( $val == '0000:00:00 00:00:00' || $val == ' : : : : ' ) {
+ $val = wfMsg( 'exif-unknowndate' );
+ } elseif ( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d) (?:\d\d):(?:\d\d):(?:\d\d)$/D', $val ) ) {
+ $time = wfTimestamp( TS_MW, $val );
+ if ( $time && intval( $time ) > 0 ) {
+ $val = $wgLang->timeanddate( $time );
+ }
+ } elseif ( preg_match( '/^(?:\d{4}):(?:\d\d):(?:\d\d)$/D', $val ) ) {
+ // If only the date but not the time is filled in.
+ $time = wfTimestamp( TS_MW, substr( $val, 0, 4 )
+ . substr( $val, 5, 2 )
+ . substr( $val, 8, 2 )
+ . '000000' );
+ if ( $time && intval( $time ) > 0 ) {
+ $val = $wgLang->date( $time );
+ }
+ }
+ // else it will just output $val without formatting it.
+ break;
+
+ case 'ExposureProgram':
+ switch( $val ) {
+ case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 8:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'SubjectDistance':
+ $val = self::msg( $tag, '', self::formatNum( $val ) );
+ break;
+
+ case 'MeteringMode':
+ switch( $val ) {
+ case 0: case 1: case 2: case 3: case 4: case 5: case 6: case 7: case 255:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'LightSource':
+ switch( $val ) {
+ case 0: case 1: case 2: case 3: case 4: case 9: case 10: case 11:
+ case 12: case 13: case 14: case 15: case 17: case 18: case 19: case 20:
+ case 21: case 22: case 23: case 24: case 255:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'Flash':
+ $flashDecode = array(
+ 'fired' => $val & bindec( '00000001' ),
+ 'return' => ( $val & bindec( '00000110' ) ) >> 1,
+ 'mode' => ( $val & bindec( '00011000' ) ) >> 3,
+ 'function' => ( $val & bindec( '00100000' ) ) >> 5,
+ 'redeye' => ( $val & bindec( '01000000' ) ) >> 6,
+// 'reserved' => ($val & bindec( '10000000' )) >> 7,
+ );
+
+ # We do not need to handle unknown values since all are used.
+ foreach ( $flashDecode as $subTag => $subValue ) {
+ # We do not need any message for zeroed values.
+ if ( $subTag != 'fired' && $subValue == 0 ) {
+ continue;
+ }
+ $fullTag = $tag . '-' . $subTag ;
+ $flashMsgs[] = self::msg( $fullTag, $subValue );
+ }
+ $val = $wgLang->commaList( $flashMsgs );
+ break;
+
+ case 'FocalPlaneResolutionUnit':
+ switch( $val ) {
+ case 2:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'SensingMethod':
+ switch( $val ) {
+ case 1: case 2: case 3: case 4: case 5: case 7: case 8:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'FileSource':
+ switch( $val ) {
+ case 3:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'SceneType':
+ switch( $val ) {
+ case 1:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'CustomRendered':
+ switch( $val ) {
+ case 0: case 1:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'ExposureMode':
+ switch( $val ) {
+ case 0: case 1: case 2:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'WhiteBalance':
+ switch( $val ) {
+ case 0: case 1:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'SceneCaptureType':
+ switch( $val ) {
+ case 0: case 1: case 2: case 3:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'GainControl':
+ switch( $val ) {
+ case 0: case 1: case 2: case 3: case 4:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'Contrast':
+ switch( $val ) {
+ case 0: case 1: case 2:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'Saturation':
+ switch( $val ) {
+ case 0: case 1: case 2:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'Sharpness':
+ switch( $val ) {
+ case 0: case 1: case 2:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'SubjectDistanceRange':
+ switch( $val ) {
+ case 0: case 1: case 2: case 3:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ //The GPS...Ref values are kept for compatibility, probably won't be reached.
+ case 'GPSLatitudeRef':
+ case 'GPSDestLatitudeRef':
+ switch( $val ) {
+ case 'N': case 'S':
+ $val = self::msg( 'GPSLatitude', $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'GPSLongitudeRef':
+ case 'GPSDestLongitudeRef':
+ switch( $val ) {
+ case 'E': case 'W':
+ $val = self::msg( 'GPSLongitude', $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'GPSAltitude':
+ if ( $val < 0 ) {
+ $val = self::msg( 'GPSAltitude', 'below-sealevel', self::formatNum( -$val, 3 ) );
+ } else {
+ $val = self::msg( 'GPSAltitude', 'above-sealevel', self::formatNum( $val, 3 ) );
+ }
+ break;
+
+ case 'GPSStatus':
+ switch( $val ) {
+ case 'A': case 'V':
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'GPSMeasureMode':
+ switch( $val ) {
+ case 2: case 3:
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+
+ case 'GPSTrackRef':
+ case 'GPSImgDirectionRef':
+ case 'GPSDestBearingRef':
+ switch( $val ) {
+ case 'T': case 'M':
+ $val = self::msg( 'GPSDirection', $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'GPSLatitude':
+ case 'GPSDestLatitude':
+ $val = self::formatCoords( $val, 'latitude' );
+ break;
+ case 'GPSLongitude':
+ case 'GPSDestLongitude':
+ $val = self::formatCoords( $val, 'longitude' );
+ break;
+
+ case 'GPSSpeedRef':
+ switch( $val ) {
+ case 'K': case 'M': case 'N':
+ $val = self::msg( 'GPSSpeed', $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'GPSDestDistanceRef':
+ switch( $val ) {
+ case 'K': case 'M': case 'N':
+ $val = self::msg( 'GPSDestDistance', $val );
+ break;
+ default:
+ /* If not recognized, display as is. */
+ break;
+ }
+ break;
+
+ case 'GPSDOP':
+ // See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)
+ if ( $val <= 2 ) {
+ $val = self::msg( $tag, 'excellent', self::formatNum( $val ) );
+ } elseif ( $val <= 5 ) {
+ $val = self::msg( $tag, 'good', self::formatNum( $val ) );
+ } elseif ( $val <= 10 ) {
+ $val = self::msg( $tag, 'moderate', self::formatNum( $val ) );
+ } elseif ( $val <= 20 ) {
+ $val = self::msg( $tag, 'fair', self::formatNum( $val ) );
+ } else {
+ $val = self::msg( $tag, 'poor', self::formatNum( $val ) );
+ }
+ break;
+
+ // This is not in the Exif standard, just a special
+ // case for our purposes which enables wikis to wikify
+ // the make, model and software name to link to their articles.
+ case 'Make':
+ case 'Model':
+ $val = self::msg( $tag, '', $val );
+ break;
+
+ case 'Software':
+ if ( is_array( $val ) ) {
+ //if its a software, version array.
+ $val = wfMsg( 'exif-software-version-value', $val[0], $val[1] );
+ } else {
+ $val = self::msg( $tag, '', $val );
+ }
+ break;
+
+ case 'ExposureTime':
+ // Show the pretty fraction as well as decimal version
+ $val = wfMsg( 'exif-exposuretime-format',
+ self::formatFraction( $val ), self::formatNum( $val ) );
+ break;
+ case 'ISOSpeedRatings':
+ // If its = 65535 that means its at the
+ // limit of the size of Exif::short and
+ // is really higher.
+ if ( $val == '65535' ) {
+ $val = self::msg( $tag, 'overflow' );
+ } else {
+ $val = self::formatNum( $val );
+ }
+ break;
+ case 'FNumber':
+ $val = wfMsg( 'exif-fnumber-format',
+ self::formatNum( $val ) );
+ break;
+
+ case 'FocalLength': case 'FocalLengthIn35mmFilm':
+ $val = wfMsg( 'exif-focallength-format',
+ self::formatNum( $val ) );
+ break;
+
+ case 'MaxApertureValue':
+ if ( strpos( $val, '/' ) !== false ) {
+ // need to expand this earlier to calculate fNumber
+ list($n, $d) = explode('/', $val);
+ if ( is_numeric( $n ) && is_numeric( $d ) ) {
+ $val = $n / $d;
+ }
+ }
+ if ( is_numeric( $val ) ) {
+ $fNumber = pow( 2, $val / 2 );
+ if ( $fNumber !== false ) {
+ $val = wfMsg( 'exif-maxaperturevalue-value',
+ self::formatNum( $val ),
+ self::formatNum( $fNumber, 2 )
+ );
+ }
+ }
+ break;
+
+ case 'iimCategory':
+ switch( strtolower( $val ) ) {
+ // See pg 29 of IPTC photo
+ // metadata standard.
+ case 'ace': case 'clj':
+ case 'dis': case 'fin':
+ case 'edu': case 'evn':
+ case 'hth': case 'hum':
+ case 'lab': case 'lif':
+ case 'pol': case 'rel':
+ case 'sci': case 'soi':
+ case 'spo': case 'war':
+ case 'wea':
+ $val = self::msg(
+ 'iimcategory',
+ $val
+ );
+ }
+ break;
+ case 'SubjectNewsCode':
+ // Essentially like iimCategory.
+ // 8 (numeric) digit hierarchical
+ // classification. We decode the
+ // first 2 digits, which provide
+ // a broad category.
+ $val = self::convertNewsCode( $val );
+ break;
+ case 'Urgency':
+ // 1-8 with 1 being highest, 5 normal
+ // 0 is reserved, and 9 is 'user-defined'.
+ $urgency = '';
+ if ( $val == 0 || $val == 9 ) {
+ $urgency = 'other';
+ } elseif ( $val < 5 && $val > 1 ) {
+ $urgency = 'high';
+ } elseif ( $val == 5 ) {
+ $urgency = 'normal';
+ } elseif ( $val <= 8 && $val > 5) {
+ $urgency = 'low';
+ }
+
+ if ( $urgency !== '' ) {
+ $val = self::msg( 'urgency',
+ $urgency, $val
+ );
+ }
+ break;
+
+ // Things that have a unit of pixels.
+ case 'OriginalImageHeight':
+ case 'OriginalImageWidth':
+ case 'PixelXDimension':
+ case 'PixelYDimension':
+ case 'ImageWidth':
+ case 'ImageLength':
+ $val = self::formatNum( $val ) . ' ' . wfMsg( 'unit-pixel' );
+ break;
+
+ // Do not transform fields with pure text.
+ // For some languages the formatNum()
+ // conversion results to wrong output like
+ // foo,bar@example,com or fooÙ«bar@exampleÙ«com.
+ // Also some 'numeric' things like Scene codes
+ // are included here as we really don't want
+ // commas inserted.
+ case 'ImageDescription':
+ case 'Artist':
+ case 'Copyright':
+ case 'RelatedSoundFile':
+ case 'ImageUniqueID':
+ case 'SpectralSensitivity':
+ case 'GPSSatellites':
+ case 'GPSVersionID':
+ case 'GPSMapDatum':
+ case 'Keywords':
+ case 'WorldRegionDest':
+ case 'CountryDest':
+ case 'CountryCodeDest':
+ case 'ProvinceOrStateDest':
+ case 'CityDest':
+ case 'SublocationDest':
+ case 'WorldRegionCreated':
+ case 'CountryCreated':
+ case 'CountryCodeCreated':
+ case 'ProvinceOrStateCreated':
+ case 'CityCreated':
+ case 'SublocationCreated':
+ case 'ObjectName':
+ case 'SpecialInstructions':
+ case 'Headline':
+ case 'Credit':
+ case 'Source':
+ case 'EditStatus':
+ case 'FixtureIdentifier':
+ case 'LocationDest':
+ case 'LocationDestCode':
+ case 'Writer':
+ case 'JPEGFileComment':
+ case 'iimSupplementalCategory':
+ case 'OriginalTransmissionRef':
+ case 'Identifier':
+ case 'dc-contributor':
+ case 'dc-coverage':
+ case 'dc-publisher':
+ case 'dc-relation':
+ case 'dc-rights':
+ case 'dc-source':
+ case 'dc-type':
+ case 'Lens':
+ case 'SerialNumber':
+ case 'CameraOwnerName':
+ case 'Label':
+ case 'Nickname':
+ case 'RightsCertificate':
+ case 'CopyrightOwner':
+ case 'UsageTerms':
+ case 'WebStatement':
+ case 'OriginalDocumentID':
+ case 'LicenseUrl':
+ case 'MorePermissionsUrl':
+ case 'AttributionUrl':
+ case 'PreferredAttributionName':
+ case 'PNGFileComment':
+ case 'Disclaimer':
+ case 'ContentWarning':
+ case 'GIFFileComment':
+ case 'SceneCode':
+ case 'IntellectualGenre':
+ case 'Event':
+ case 'OrginisationInImage':
+ case 'PersonInImage':
+
+ $val = htmlspecialchars( $val );
+ break;
+
+ case 'ObjectCycle':
+ switch ( $val ) {
+ case 'a': case 'p': case 'b':
+ $val = self::msg( $tag, $val );
+ break;
+ default:
+ $val = htmlspecialchars( $val );
+ break;
+ }
+ break;
+ case 'Copyrighted':
+ switch( $val ) {
+ case 'True': case 'False':
+ $val = self::msg( $tag, $val );
+ break;
+ }
+ break;
+ case 'Rating':
+ if ( $val == '-1' ) {
+ $val = self::msg( $tag, 'rejected' );
+ } else {
+ $val = self::formatNum( $val );
+ }
+ break;
+
+ case 'LanguageCode':
+ $lang = $wgLang->getLanguageName( strtolower( $val ) );
+ if ($lang) {
+ $val = htmlspecialchars( $lang );
+ } else {
+ $val = htmlspecialchars( $val );
+ }
+ break;
+
+ default:
+ $val = self::formatNum( $val );
+ break;
+ }
+ }
+ // End formatting values, start flattening arrays.
+ $vals = self::flattenArray( $vals, $type );
+
+ }
+ return $tags;
+ }
+
+ /**
+ * A function to collapse multivalued tags into a single value.
+ * This turns an array of (for example) authors into a bulleted list.
+ *
+ * This is public on the basis it might be useful outside of this class.
+ *
+ * @param $vals Array array of values
+ * @param $type String Type of array (either lang, ul, ol).
+ * lang = language assoc array with keys being the lang code
+ * ul = unordered list, ol = ordered list
+ * type can also come from the '_type' member of $vals.
+ * @param $noHtml Boolean If to avoid returning anything resembling
+ * html. (Ugly hack for backwards compatibility with old mediawiki).
+ * @return String single value (in wiki-syntax).
+ */
+ public static function flattenArray( $vals, $type = 'ul', $noHtml = false ) {
+ if ( isset( $vals['_type'] ) ) {
+ $type = $vals['_type'];
+ unset( $vals['_type'] );
+ }
+
+ if ( !is_array( $vals ) ) {
+ return $vals; // do nothing if not an array;
+ }
+ elseif ( count( $vals ) === 1 && $type !== 'lang' ) {
+ return $vals[0];
+ }
+ elseif ( count( $vals ) === 0 ) {
+ wfDebug( __METHOD__ . ' metadata array with 0 elements!' );
+ return ""; // paranoia. This should never happen
+ }
+ /* @todo FIXME: This should hide some of the list entries if there are
+ * say more than four. Especially if a field is translated into 20
+ * languages, we don't want to show them all by default
+ */
+ else {
+ global $wgContLang;
+ switch( $type ) {
+ case 'lang':
+ // Display default, followed by ContLang,
+ // followed by the rest in no particular
+ // order.
+
+ // Todo: hide some items if really long list.
+
+ $content = '';
+
+ $cLang = $wgContLang->getCode();
+ $defaultItem = false;
+ $defaultLang = false;
+
+ // If default is set, save it for later,
+ // as we don't know if it's equal to
+ // one of the lang codes. (In xmp
+ // you specify the language for a
+ // default property by having both
+ // a default prop, and one in the language
+ // that are identical)
+ if ( isset( $vals['x-default'] ) ) {
+ $defaultItem = $vals['x-default'];
+ unset( $vals['x-default'] );
+ }
+ // Do contentLanguage.
+ if ( isset( $vals[$cLang] ) ) {
+ $isDefault = false;
+ if ( $vals[$cLang] === $defaultItem ) {
+ $defaultItem = false;
+ $isDefault = true;
+ }
+ $content .= self::langItem(
+ $vals[$cLang], $cLang,
+ $isDefault, $noHtml );
+
+ unset( $vals[$cLang] );
+ }
+
+ // Now do the rest.
+ foreach ( $vals as $lang => $item ) {
+ if ( $item === $defaultItem ) {
+ $defaultLang = $lang;
+ continue;
+ }
+ $content .= self::langItem( $item,
+ $lang, false, $noHtml );
+ }
+ if ( $defaultItem !== false ) {
+ $content = self::langItem( $defaultItem,
+ $defaultLang, true, $noHtml )
+ . $content;
+ }
+ if ( $noHtml ) {
+ return $content;
+ }
+ return '<ul class="metadata-langlist">' .
+ $content .
+ '</ul>';
+ case 'ol':
+ if ( $noHtml ) {
+ return "\n#" . implode( "\n#", $vals );
+ }
+ return "<ol><li>" . implode( "</li>\n<li>", $vals ) . '</li></ol>';
+ case 'ul':
+ default:
+ if ( $noHtml ) {
+ return "\n*" . implode( "\n*", $vals );
+ }
+ return "<ul><li>" . implode( "</li>\n<li>", $vals ) . '</li></ul>';
+ }
+ }
+ }
+
+ /** Helper function for creating lists of translations.
+ *
+ * @param $value String value (this is not escaped)
+ * @param $lang String lang code of item or false
+ * @param $default Boolean if it is default value.
+ * @param $noHtml Boolean If to avoid html (for back-compat)
+ * @return language item (Note: despite how this looks,
+ * this is treated as wikitext not html).
+ */
+ private static function langItem( $value, $lang, $default = false, $noHtml = false ) {
+ global $wgContLang;
+ if ( $lang === false && $default === false) {
+ throw new MWException('$lang and $default cannot both '
+ . 'be false.');
+ }
+
+ if ( $noHtml ) {
+ $wrappedValue = $value;
+ } else {
+ $wrappedValue = '<span class="mw-metadata-lang-value">'
+ . $value . '</span>';
+ }
+
+ if ( $lang === false ) {
+ if ( $noHtml ) {
+ return wfMsg( 'metadata-langitem-default',
+ $wrappedValue ) . "\n\n";
+ } /* else */
+ return '<li class="mw-metadata-lang-default">'
+ . wfMsg( 'metadata-langitem-default',
+ $wrappedValue )
+ . "</li>\n";
+ }
+
+ $lowLang = strtolower( $lang );
+ $langName = $wgContLang->getLanguageName( $lowLang );
+ if ( $langName === '' ) {
+ //try just the base language name. (aka en-US -> en ).
+ list( $langPrefix ) = explode( '-', $lowLang, 2 );
+ $langName = $wgContLang->getLanguageName( $langPrefix );
+ if ( $langName === '' ) {
+ // give up.
+ $langName = $lang;
+ }
+ }
+ // else we have a language specified
+
+ if ( $noHtml ) {
+ return '*' . wfMsg( 'metadata-langitem',
+ $wrappedValue, $langName, $lang );
+ } /* else: */
+
+ $item = '<li class="mw-metadata-lang-code-'
+ . $lang;
+ if ( $default ) {
+ $item .= ' mw-metadata-lang-default';
+ }
+ $item .= '" lang="' . $lang . '">';
+ $item .= wfMsg( 'metadata-langitem',
+ $wrappedValue, $langName, $lang );
+ $item .= "</li>\n";
+ return $item;
+ }
+
+ /**
+ * Convenience function for getFormattedData()
+ *
+ * @private
+ *
+ * @param $tag String: the tag name to pass on
+ * @param $val String: the value of the tag
+ * @param $arg String: an argument to pass ($1)
+ * @param $arg2 String: a 2nd argument to pass ($2)
+ * @return string A wfMsg of "exif-$tag-$val" in lower case
+ */
+ static function msg( $tag, $val, $arg = null, $arg2 = null ) {
+ global $wgContLang;
+
+ if ($val === '')
+ $val = 'value';
+ return wfMsg( $wgContLang->lc( "exif-$tag-$val" ), $arg, $arg2 );
+ }
+
+ /**
+ * Format a number, convert numbers from fractions into floating point
+ * numbers, joins arrays of numbers with commas.
+ *
+ * @private
+ *
+ * @param $num Mixed: the value to format
+ * @param $round digits to round to or false.
+ * @return mixed A floating point number or whatever we were fed
+ */
+ static function formatNum( $num, $round = false ) {
+ global $wgLang;
+ $m = array();
+ if( is_array($num) ) {
+ $out = array();
+ foreach( $num as $number ) {
+ $out[] = self::formatNum($number);
+ }
+ return $wgLang->commaList( $out );
+ }
+ if ( preg_match( '/^(-?\d+)\/(\d+)$/', $num, $m ) ) {
+ if ( $m[2] != 0 ) {
+ $newNum = $m[1] / $m[2];
+ if ( $round !== false ) {
+ $newNum = round( $newNum, $round );
+ }
+ } else {
+ $newNum = $num;
+ }
+
+ return $wgLang->formatNum( $newNum );
+ } else {
+ if ( is_numeric( $num ) && $round !== false ) {
+ $num = round( $num, $round );
+ }
+ return $wgLang->formatNum( $num );
+ }
+ }
+
+ /**
+ * Format a rational number, reducing fractions
+ *
+ * @private
+ *
+ * @param $num Mixed: the value to format
+ * @return mixed A floating point number or whatever we were fed
+ */
+ static function formatFraction( $num ) {
+ $m = array();
+ if ( preg_match( '/^(-?\d+)\/(\d+)$/', $num, $m ) ) {
+ $numerator = intval( $m[1] );
+ $denominator = intval( $m[2] );
+ $gcd = self::gcd( abs( $numerator ), $denominator );
+ if( $gcd != 0 ) {
+ // 0 shouldn't happen! ;)
+ return self::formatNum( $numerator / $gcd ) . '/' . self::formatNum( $denominator / $gcd );
+ }
+ }
+ return self::formatNum( $num );
+ }
+
+ /**
+ * Calculate the greatest common divisor of two integers.
+ *
+ * @param $a Integer: Numerator
+ * @param $b Integer: Denominator
+ * @return int
+ * @private
+ */
+ static function gcd( $a, $b ) {
+ /*
+ // http://en.wikipedia.org/wiki/Euclidean_algorithm
+ // Recursive form would be:
+ if( $b == 0 )
+ return $a;
+ else
+ return gcd( $b, $a % $b );
+ */
+ while( $b != 0 ) {
+ $remainder = $a % $b;
+
+ // tail recursion...
+ $a = $b;
+ $b = $remainder;
+ }
+ return $a;
+ }
+
+ /** Fetch the human readable version of a news code.
+ * A news code is an 8 digit code. The first two
+ * digits are a general classification, so we just
+ * translate that.
+ *
+ * Note, leading 0's are significant, so this is
+ * a string, not an int.
+ *
+ * @param $val String: The 8 digit news code.
+ * @return The human readable form
+ */
+ static private function convertNewsCode( $val ) {
+ if ( !preg_match( '/^\d{8}$/D', $val ) ) {
+ // Not a valid news code.
+ return $val;
+ }
+ $cat = '';
+ switch( substr( $val , 0, 2 ) ) {
+ case '01':
+ $cat = 'ace';
+ break;
+ case '02':
+ $cat = 'clj';
+ break;
+ case '03':
+ $cat = 'dis';
+ break;
+ case '04':
+ $cat = 'fin';
+ break;
+ case '05':
+ $cat = 'edu';
+ break;
+ case '06':
+ $cat = 'evn';
+ break;
+ case '07':
+ $cat = 'hth';
+ break;
+ case '08':
+ $cat = 'hum';
+ break;
+ case '09':
+ $cat = 'lab';
+ break;
+ case '10':
+ $cat = 'lif';
+ break;
+ case '11':
+ $cat = 'pol';
+ break;
+ case '12':
+ $cat = 'rel';
+ break;
+ case '13':
+ $cat = 'sci';
+ break;
+ case '14':
+ $cat = 'soi';
+ break;
+ case '15':
+ $cat = 'spo';
+ break;
+ case '16':
+ $cat = 'war';
+ break;
+ case '17':
+ $cat = 'wea';
+ break;
+ }
+ if ( $cat !== '' ) {
+ $catMsg = self::msg( 'iimcategory', $cat );
+ $val = self::msg( 'subjectnewscode', '', $val, $catMsg );
+ }
+ return $val;
+ }
+
+ /**
+ * Format a coordinate value, convert numbers from floating point
+ * into degree minute second representation.
+ *
+ * @param $coords Array: degrees, minutes and seconds
+ * @param $type String: latitude or longitude (for if its a NWS or E)
+ * @return mixed A floating point number or whatever we were fed
+ */
+ static function formatCoords( $coord, $type ) {
+ $ref = '';
+ if ( $coord < 0 ) {
+ $nCoord = -$coord;
+ if ( $type === 'latitude' ) {
+ $ref = 'S';
+ }
+ elseif ( $type === 'longitude' ) {
+ $ref = 'W';
+ }
+ }
+ else {
+ $nCoord = $coord;
+ if ( $type === 'latitude' ) {
+ $ref = 'N';
+ }
+ elseif ( $type === 'longitude' ) {
+ $ref = 'E';
+ }
+ }
+
+ $deg = floor( $nCoord );
+ $min = floor( ( $nCoord - $deg ) * 60.0 );
+ $sec = round( ( ( $nCoord - $deg ) - $min / 60 ) * 3600, 2 );
+
+ $deg = self::formatNum( $deg );
+ $min = self::formatNum( $min );
+ $sec = self::formatNum( $sec );
+
+ return wfMsg( 'exif-coordinate-format', $deg, $min, $sec, $ref, $coord );
+ }
+
+ /**
+ * Format the contact info field into a single value.
+ *
+ * @param $vals Array array with fields of the ContactInfo
+ * struct defined in the IPTC4XMP spec. Or potentially
+ * an array with one element that is a free form text
+ * value from the older iptc iim 1:118 prop.
+ *
+ * This function might be called from
+ * JpegHandler::convertMetadataVersion which is why it is
+ * public.
+ *
+ * @return String of html-ish looking wikitext
+ */
+ public static function collapseContactInfo( $vals ) {
+ if( ! ( isset( $vals['CiAdrExtadr'] )
+ || isset( $vals['CiAdrCity'] )
+ || isset( $vals['CiAdrCtry'] )
+ || isset( $vals['CiEmailWork'] )
+ || isset( $vals['CiTelWork'] )
+ || isset( $vals['CiAdrPcode'] )
+ || isset( $vals['CiAdrRegion'] )
+ || isset( $vals['CiUrlWork'] )
+ ) ) {
+ // We don't have any sub-properties
+ // This could happen if its using old
+ // iptc that just had this as a free-form
+ // text value.
+ // Note: We run this through htmlspecialchars
+ // partially to be consistent, and partially
+ // because people often insert >, etc into
+ // the metadata which should not be interpreted
+ // but we still want to auto-link urls.
+ foreach( $vals as &$val ) {
+ $val = htmlspecialchars( $val );
+ }
+ return self::flattenArray( $vals );
+ } else {
+ // We have a real ContactInfo field.
+ // Its unclear if all these fields have to be
+ // set, so assume they do not.
+ $url = $tel = $street = $city = $country = '';
+ $email = $postal = $region = '';
+
+ // Also note, some of the class names this uses
+ // are similar to those used by hCard. This is
+ // mostly because they're sensible names. This
+ // does not (and does not attempt to) output
+ // stuff in the hCard microformat. However it
+ // might output in the adr microformat.
+
+ if ( isset( $vals['CiAdrExtadr'] ) ) {
+ // Todo: This can potentially be multi-line.
+ // Need to check how that works in XMP.
+ $street = '<span class="extended-address">'
+ . htmlspecialchars(
+ $vals['CiAdrExtadr'] )
+ . '</span>';
+ }
+ if ( isset( $vals['CiAdrCity'] ) ) {
+ $city = '<span class="locality">'
+ . htmlspecialchars( $vals['CiAdrCity'] )
+ . '</span>';
+ }
+ if ( isset( $vals['CiAdrCtry'] ) ) {
+ $country = '<span class="country-name">'
+ . htmlspecialchars( $vals['CiAdrCtry'] )
+ . '</span>';
+ }
+ if ( isset( $vals['CiEmailWork'] ) ) {
+ $emails = array();
+ // Have to split multiple emails at commas/new lines.
+ $splitEmails = explode( "\n", $vals['CiEmailWork'] );
+ foreach ( $splitEmails as $e1 ) {
+ // Also split on comma
+ foreach ( explode( ',', $e1 ) as $e2 ) {
+ $finalEmail = trim( $e2 );
+ if ( $finalEmail == ',' || $finalEmail == '' ) {
+ continue;
+ }
+ if ( strpos( $finalEmail, '<' ) !== false ) {
+ // Don't do fancy formatting to
+ // "My name" <foo@bar.com> style stuff
+ $emails[] = $finalEmail;
+ } else {
+ $emails[] = '[mailto:'
+ . $finalEmail
+ . ' <span class="email">'
+ . $finalEmail
+ . '</span>]';
+ }
+ }
+ }
+ $email = implode( ', ', $emails );
+ }
+ if ( isset( $vals['CiTelWork'] ) ) {
+ $tel = '<span class="tel">'
+ . htmlspecialchars( $vals['CiTelWork'] )
+ . '</span>';
+ }
+ if ( isset( $vals['CiAdrPcode'] ) ) {
+ $postal = '<span class="postal-code">'
+ . htmlspecialchars(
+ $vals['CiAdrPcode'] )
+ . '</span>';
+ }
+ if ( isset( $vals['CiAdrRegion'] ) ) {
+ // Note this is province/state.
+ $region = '<span class="region">'
+ . htmlspecialchars(
+ $vals['CiAdrRegion'] )
+ . '</span>';
+ }
+ if ( isset( $vals['CiUrlWork'] ) ) {
+ $url = '<span class="url">'
+ . htmlspecialchars( $vals['CiUrlWork'] )
+ . '</span>';
+ }
+ return wfMsg( 'exif-contact-value', $email, $url,
+ $street, $city, $region, $postal, $country,
+ $tel );
+ }
+ }
+}
+
+/** For compatability with old FormatExif class
+ * which some extensions use.
+ *
+ * @deprecated since 1.18
+ *
+**/
+class FormatExif {
+ var $meta;
+ function FormatExif ( $meta ) {
+ wfDeprecated(__METHOD__);
+ $this->meta = $meta;
+ }
+
+ function getFormattedData ( ) {
+ return FormatMetadata::getFormattedData( $this->meta );
+ }
+}
diff --git a/includes/media/GIF.php b/includes/media/GIF.php
index c4ede331..325ceb9a 100644
--- a/includes/media/GIF.php
+++ b/includes/media/GIF.php
@@ -12,56 +12,104 @@
* @ingroup Media
*/
class GIFHandler extends BitmapHandler {
+
+ const BROKEN_FILE = '0'; // value to store in img_metadata if error extracting metadata.
function getMetadata( $image, $filename ) {
- if ( !isset( $image->parsedGIFMetadata ) ) {
- try {
- $image->parsedGIFMetadata = GIFMetadataExtractor::getMetadata( $filename );
- } catch( Exception $e ) {
- // Broken file?
- wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
- return '0';
- }
+ try {
+ $parsedGIFMetadata = BitmapMetadataHandler::GIF( $filename );
+ } catch( Exception $e ) {
+ // Broken file?
+ wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
+ return self::BROKEN_FILE;
}
- return serialize( $image->parsedGIFMetadata );
-
+ return serialize($parsedGIFMetadata);
}
-
+
+ /**
+ * @param $image File
+ * @return array|bool
+ */
function formatMetadata( $image ) {
- return false;
+ $meta = $image->getMetadata();
+
+ if ( !$meta ) {
+ return false;
+ }
+ $meta = unserialize( $meta );
+ if ( !isset( $meta['metadata'] ) || count( $meta['metadata'] ) <= 1 ) {
+ return false;
+ }
+
+ if ( isset( $meta['metadata']['_MW_GIF_VERSION'] ) ) {
+ unset( $meta['metadata']['_MW_GIF_VERSION'] );
+ }
+ return $this->formatMetadataHelper( $meta['metadata'] );
}
-
+
+ /**
+ * @param $image File
+ * @param $width
+ * @param $height
+ * @return
+ */
function getImageArea( $image, $width, $height ) {
$ser = $image->getMetadata();
- if ($ser) {
- $metadata = unserialize($ser);
+ if ( $ser ) {
+ $metadata = unserialize( $ser );
return $width * $height * $metadata['frameCount'];
} else {
return $width * $height;
}
}
+ /**
+ * @param $image File
+ * @return bool
+ */
function isAnimatedImage( $image ) {
$ser = $image->getMetadata();
- if ($ser) {
+ if ( $ser ) {
$metadata = unserialize($ser);
- if( $metadata['frameCount'] > 1 ) return true;
+ if( $metadata['frameCount'] > 1 ) {
+ return true;
+ }
}
return false;
}
-
+
function getMetadataType( $image ) {
return 'parsed-gif';
}
-
+
function isMetadataValid( $image, $metadata ) {
+ if ( $metadata === self::BROKEN_FILE ) {
+ // Do not repetitivly regenerate metadata on broken file.
+ return self::METADATA_GOOD;
+ }
+
wfSuppressWarnings();
$data = unserialize( $metadata );
wfRestoreWarnings();
- return (boolean) $data;
+
+ if ( !$data || !is_array( $data ) ) {
+ wfDebug(__METHOD__ . ' invalid GIF metadata' );
+ return self::METADATA_BAD;
+ }
+
+ if ( !isset( $data['metadata']['_MW_GIF_VERSION'] )
+ || $data['metadata']['_MW_GIF_VERSION'] != GIFMetadataExtractor::VERSION ) {
+ wfDebug(__METHOD__ . ' old but compatible GIF metadata' );
+ return self::METADATA_COMPATIBLE;
+ }
+ return self::METADATA_GOOD;
}
+ /**
+ * @param $image File
+ * @return string
+ */
function getLongDesc( $image ) {
global $wgLang;
@@ -71,20 +119,25 @@ class GIFHandler extends BitmapHandler {
$metadata = unserialize($image->getMetadata());
wfRestoreWarnings();
- if (!$metadata || $metadata['frameCount'] <= 1)
+ if (!$metadata || $metadata['frameCount'] <= 1) {
return $original;
-
+ }
+
+ /* Preserve original image info string, but strip the last char ')' so we can add even more */
$info = array();
$info[] = $original;
- if ($metadata['looped'])
+ if ( $metadata['looped'] ) {
$info[] = wfMsgExt( 'file-info-gif-looped', 'parseinline' );
+ }
- if ($metadata['frameCount'] > 1)
+ if ( $metadata['frameCount'] > 1 ) {
$info[] = wfMsgExt( 'file-info-gif-frames', 'parseinline', $metadata['frameCount'] );
+ }
- if ($metadata['duration'])
+ if ( $metadata['duration'] ) {
$info[] = $wgLang->formatTimePeriod( $metadata['duration'] );
+ }
return $wgLang->commaList( $info );
}
diff --git a/includes/media/GIFMetadataExtractor.php b/includes/media/GIFMetadataExtractor.php
index bc1a4804..5dbeb8f8 100644
--- a/includes/media/GIFMetadataExtractor.php
+++ b/includes/media/GIFMetadataExtractor.php
@@ -21,164 +21,294 @@ class GIFMetadataExtractor {
static $gif_extension_sep;
static $gif_term;
+ const VERSION = 1;
+
+ // Each sub-block is less than or equal to 255 bytes.
+ // Most of the time its 255 bytes, except for in XMP
+ // blocks, where it's usually between 32-127 bytes each.
+ const MAX_SUBBLOCKS = 262144; // 5mb divided by 20.
+
+ /**
+ * @throws Exception
+ * @param $filename string
+ * @return array
+ */
static function getMetadata( $filename ) {
self::$gif_frame_sep = pack( "C", ord("," ) );
self::$gif_extension_sep = pack( "C", ord("!" ) );
self::$gif_term = pack( "C", ord(";" ) );
-
+
$frameCount = 0;
$duration = 0.0;
$isLooped = false;
+ $xmp = "";
+ $comment = array();
- if (!$filename)
+ if ( !$filename ) {
throw new Exception( "No file name specified" );
- elseif ( !file_exists($filename) || is_dir($filename) )
+ } elseif ( !file_exists( $filename ) || is_dir( $filename ) ) {
throw new Exception( "File $filename does not exist" );
-
- $fh = fopen( $filename, 'r' );
-
- if (!$fh)
+ }
+
+ $fh = fopen( $filename, 'rb' );
+
+ if ( !$fh ) {
throw new Exception( "Unable to open file $filename" );
-
+ }
+
// Check for the GIF header
$buf = fread( $fh, 6 );
if ( !($buf == 'GIF87a' || $buf == 'GIF89a') ) {
throw new Exception( "Not a valid GIF file; header: $buf" );
}
-
+
// Skip over width and height.
fread( $fh, 4 );
-
+
// Read BPP
$buf = fread( $fh, 1 );
$bpp = self::decodeBPP( $buf );
-
+
// Skip over background and aspect ratio
fread( $fh, 2 );
-
+
// Skip over the GCT
self::readGCT( $fh, $bpp );
-
+
while( !feof( $fh ) ) {
$buf = fread( $fh, 1 );
-
+
if ($buf == self::$gif_frame_sep) {
// Found a frame
$frameCount++;
-
+
## Skip bounding box
fread( $fh, 8 );
-
+
## Read BPP
$buf = fread( $fh, 1 );
$bpp = self::decodeBPP( $buf );
-
+
## Read GCT
self::readGCT( $fh, $bpp );
fread( $fh, 1 );
self::skipBlock( $fh );
} elseif ( $buf == self::$gif_extension_sep ) {
$buf = fread( $fh, 1 );
+ if ( strlen( $buf ) < 1 ) throw new Exception( "Ran out of input" );
$extension_code = unpack( 'C', $buf );
$extension_code = $extension_code[1];
-
+
if ($extension_code == 0xF9) {
// Graphics Control Extension.
fread( $fh, 1 ); // Block size
-
+
fread( $fh, 1 ); // Transparency, disposal method, user input
-
+
$buf = fread( $fh, 2 ); // Delay, in hundredths of seconds.
+ if ( strlen( $buf ) < 2 ) throw new Exception( "Ran out of input" );
$delay = unpack( 'v', $buf );
$delay = $delay[1];
$duration += $delay * 0.01;
-
+
fread( $fh, 1 ); // Transparent colour index
-
+
$term = fread( $fh, 1 ); // Should be a terminator
+ if ( strlen( $term ) < 1 ) throw new Exception( "Ran out of input" );
$term = unpack( 'C', $term );
$term = $term[1];
- if ($term != 0 )
+ if ($term != 0 ) {
throw new Exception( "Malformed Graphics Control Extension block" );
+ }
+ } elseif ($extension_code == 0xFE) {
+ // Comment block(s).
+ $data = self::readBlock( $fh );
+ if ( $data === "" ) {
+ throw new Exception( 'Read error, zero-length comment block' );
+ }
+
+ // The standard says this should be ASCII, however its unclear if
+ // thats true in practise. Check to see if its valid utf-8, if so
+ // assume its that, otherwise assume its windows-1252 (iso-8859-1)
+ $dataCopy = $data;
+ // quickIsNFCVerify has the side effect of replacing any invalid characters
+ UtfNormal::quickIsNFCVerify( $dataCopy );
+
+ if ( $dataCopy !== $data ) {
+ wfSuppressWarnings();
+ $data = iconv( 'windows-1252', 'UTF-8', $data );
+ wfRestoreWarnings();
+ }
+
+ $commentCount = count( $comment );
+ if ( $commentCount === 0
+ || $comment[$commentCount-1] !== $data )
+ {
+ // Some applications repeat the same comment on each
+ // frame of an animated GIF image, so if this comment
+ // is identical to the last, only extract once.
+ $comment[] = $data;
+ }
} elseif ($extension_code == 0xFF) {
// Application extension (Netscape info about the animated gif)
+ // or XMP (or theoretically any other type of extension block)
$blockLength = fread( $fh, 1 );
+ if ( strlen( $blockLength ) < 1 ) throw new Exception( "Ran out of input" );
$blockLength = unpack( 'C', $blockLength );
$blockLength = $blockLength[1];
$data = fread( $fh, $blockLength );
-
- // NETSCAPE2.0 (application name)
- if ($blockLength != 11 || $data != 'NETSCAPE2.0') {
+
+ if ($blockLength != 11 ) {
+ wfDebug( __METHOD__ . ' GIF application block with wrong length' );
fseek( $fh, -($blockLength + 1), SEEK_CUR );
self::skipBlock( $fh );
continue;
}
+
+ // NETSCAPE2.0 (application name for animated gif)
+ if ( $data == 'NETSCAPE2.0' ) {
- $data = fread( $fh, 2 ); // Block length and introduction, should be 03 01
-
- if ($data != "\x03\x01") {
- throw new Exception( "Expected \x03\x01, got $data" );
- }
-
- // Unsigned little-endian integer, loop count or zero for "forever"
- $loopData = fread( $fh, 2 );
- $loopData = unpack( 'v', $loopData );
- $loopCount = $loopData[1];
-
- if ($loopCount != 1) {
- $isLooped = true;
+ $data = fread( $fh, 2 ); // Block length and introduction, should be 03 01
+
+ if ($data != "\x03\x01") {
+ throw new Exception( "Expected \x03\x01, got $data" );
+ }
+
+ // Unsigned little-endian integer, loop count or zero for "forever"
+ $loopData = fread( $fh, 2 );
+ if ( strlen( $loopData ) < 2 ) throw new Exception( "Ran out of input" );
+ $loopData = unpack( 'v', $loopData );
+ $loopCount = $loopData[1];
+
+ if ($loopCount != 1) {
+ $isLooped = true;
+ }
+
+ // Read out terminator byte
+ fread( $fh, 1 );
+ } elseif ( $data == 'XMP DataXMP' ) {
+ // application name for XMP data.
+ // see pg 18 of XMP spec part 3.
+
+ $xmp = self::readBlock( $fh, true );
+
+ if ( substr( $xmp, -257, 3 ) !== "\x01\xFF\xFE"
+ || substr( $xmp, -4 ) !== "\x03\x02\x01\x00" )
+ {
+ // this is just a sanity check.
+ throw new Exception( "XMP does not have magic trailer!" );
+ }
+
+ // strip out trailer.
+ $xmp = substr( $xmp, 0, -257 );
+
+ } else {
+ // unrecognized extension block
+ fseek( $fh, -($blockLength + 1), SEEK_CUR );
+ self::skipBlock( $fh );
+ continue;
}
-
- // Read out terminator byte
- fread( $fh, 1 );
} else {
self::skipBlock( $fh );
}
} elseif ( $buf == self::$gif_term ) {
break;
} else {
+ if ( strlen( $buf ) < 1 ) throw new Exception( "Ran out of input" );
$byte = unpack( 'C', $buf );
$byte = $byte[1];
throw new Exception( "At position: ".ftell($fh). ", Unknown byte ".$byte );
}
}
-
+
return array(
'frameCount' => $frameCount,
'looped' => $isLooped,
- 'duration' => $duration
+ 'duration' => $duration,
+ 'xmp' => $xmp,
+ 'comment' => $comment,
);
-
}
-
+
+ /**
+ * @param $fh
+ * @param $bpp
+ * @return void
+ */
static function readGCT( $fh, $bpp ) {
- if ($bpp > 0) {
- for( $i=1; $i<=pow(2,$bpp); ++$i ) {
+ if ( $bpp > 0 ) {
+ for( $i=1; $i<=pow( 2, $bpp ); ++$i ) {
fread( $fh, 3 );
}
}
}
-
+
+ /**
+ * @param $data
+ * @return int
+ */
static function decodeBPP( $data ) {
+ if ( strlen( $data ) < 1 ) throw new Exception( "Ran out of input" );
$buf = unpack( 'C', $data );
$buf = $buf[1];
$bpp = ( $buf & 7 ) + 1;
$buf >>= 7;
-
+
$have_map = $buf & 1;
-
+
return $have_map ? $bpp : 0;
}
-
+
+ /**
+ * @param $fh
+ * @return
+ */
static function skipBlock( $fh ) {
while ( !feof( $fh ) ) {
$buf = fread( $fh, 1 );
+ if ( strlen( $buf ) < 1 ) throw new Exception( "Ran out of input" );
$block_len = unpack( 'C', $buf );
$block_len = $block_len[1];
- if ($block_len == 0)
+ if ($block_len == 0) {
return;
+ }
fread( $fh, $block_len );
}
}
+ /**
+ * Read a block. In the GIF format, a block is made up of
+ * several sub-blocks. Each sub block starts with one byte
+ * saying how long the sub-block is, followed by the sub-block.
+ * The entire block is terminated by a sub-block of length
+ * 0.
+ * @param $fh FileHandle
+ * @param $includeLengths Boolean Include the length bytes of the
+ * sub-blocks in the returned value. Normally this is false,
+ * except XMP is weird and does a hack where you need to keep
+ * these length bytes.
+ * @return The data.
+ */
+ static function readBlock( $fh, $includeLengths = false ) {
+ $data = '';
+ $subLength = fread( $fh, 1 );
+ $blocks = 0;
+
+ while( $subLength !== "\0" ) {
+ $blocks++;
+ if ( $blocks > self::MAX_SUBBLOCKS ) {
+ throw new Exception( "MAX_SUBBLOCKS exceeded (over $blocks sub-blocks)" );
+ }
+ if ( feof( $fh ) ) {
+ throw new Exception( "Read error: Unexpected EOF." );
+ }
+ if ( $includeLengths ) {
+ $data .= $subLength;
+ }
+
+ $data .= fread( $fh, ord( $subLength ) );
+ $subLength = fread( $fh, 1 );
+ }
+ return $data;
+ }
}
diff --git a/includes/media/Generic.php b/includes/media/Generic.php
index fa4e731a..48735ebf 100644
--- a/includes/media/Generic.php
+++ b/includes/media/Generic.php
@@ -13,7 +13,9 @@
*/
abstract class MediaHandler {
const TRANSFORM_LATER = 1;
-
+ const METADATA_GOOD = true;
+ const METADATA_BAD = false;
+ const METADATA_COMPATIBLE = 2; // for old but backwards compatible.
/**
* Instance cache
*/
@@ -21,6 +23,10 @@ abstract class MediaHandler {
/**
* Get a MediaHandler for a given MIME type from the instance cache
+ *
+ * @param $type string
+ *
+ * @return MediaHandler
*/
static function getHandler( $type ) {
global $wgMediaHandlers;
@@ -44,20 +50,27 @@ abstract class MediaHandler {
*/
abstract function getParamMap();
- /*
+ /**
* Validate a thumbnail parameter at parse time.
* Return true to accept the parameter, and false to reject it.
* If you return false, the parser will do something quiet and forgiving.
+ *
+ * @param $name
+ * @param $value
*/
abstract function validateParam( $name, $value );
/**
* Merge a parameter array into a string appropriate for inclusion in filenames
+ *
+ * @param $params array
*/
abstract function makeParamString( $params );
/**
* Parse a param string made with makeParamString back into an array
+ *
+ * @param $str string
*/
abstract function parseParamString( $str );
@@ -65,6 +78,8 @@ abstract class MediaHandler {
* Changes the parameter array as necessary, ready for transformation.
* Should be idempotent.
* Returns false if the parameters are unacceptable and the transform should fail
+ * @param $image
+ * @param $params
*/
abstract function normaliseParams( $image, &$params );
@@ -89,15 +104,66 @@ abstract class MediaHandler {
function getMetadata( $image, $path ) { return ''; }
/**
+ * Get metadata version.
+ *
+ * This is not used for validating metadata, this is used for the api when returning
+ * metadata, since api content formats should stay the same over time, and so things
+ * using ForiegnApiRepo can keep backwards compatibility
+ *
+ * All core media handlers share a common version number, and extensions can
+ * use the GetMetadataVersion hook to append to the array (they should append a unique
+ * string so not to get confusing). If there was a media handler named 'foo' with metadata
+ * version 3 it might add to the end of the array the element 'foo=3'. if the core metadata
+ * version is 2, the end version string would look like '2;foo=3'.
+ *
+ * @return string version string
+ */
+ static function getMetadataVersion () {
+ $version = Array( '2' ); // core metadata version
+ wfRunHooks('GetMetadataVersion', Array(&$version));
+ return implode( ';', $version);
+ }
+
+ /**
+ * Convert metadata version.
+ *
+ * By default just returns $metadata, but can be used to allow
+ * media handlers to convert between metadata versions.
+ *
+ * @param $metadata Mixed String or Array metadata array (serialized if string)
+ * @param $version Integer target version
+ * @return Array serialized metadata in specified version, or $metadata on fail.
+ */
+ function convertMetadataVersion( $metadata, $version = 1 ) {
+ if ( !is_array( $metadata ) ) {
+
+ //unserialize to keep return parameter consistent.
+ wfSuppressWarnings();
+ $ret = unserialize( $metadata );
+ wfRestoreWarnings();
+ return $ret;
+ }
+ return $metadata;
+ }
+
+ /**
* Get a string describing the type of metadata, for display purposes.
+ *
+ * @return string
*/
function getMetadataType( $image ) { return false; }
/**
* Check if the metadata string is valid for this handler.
- * If it returns false, Image will reload the metadata from the file and update the database
+ * If it returns MediaHandler::METADATA_BAD (or false), Image
+ * will reload the metadata from the file and update the database.
+ * MediaHandler::METADATA_GOOD for if the metadata is a-ok,
+ * MediaHanlder::METADATA_COMPATIBLE if metadata is old but backwards
+ * compatible (which may or may not trigger a metadata reload).
*/
- function isMetadataValid( $image, $metadata ) { return true; }
+ function isMetadataValid( $image, $metadata ) {
+ return self::METADATA_GOOD;
+ }
/**
@@ -142,6 +208,18 @@ abstract class MediaHandler {
* @return array thumbnail extension and MIME type
*/
function getThumbType( $ext, $mime, $params = null ) {
+ $magic = MimeMagic::singleton();
+ if ( !$ext || $magic->isMatchingExtension( $ext, $mime ) === false ) {
+ // The extension is not valid for this mime type and we do
+ // recognize the mime type
+ $extensions = $magic->getExtensionsForType( $mime );
+ if ( $extensions ) {
+ return array( strtok( $extensions, ' ' ), $mime );
+ }
+ }
+
+ // The extension is correct (true) or the mime type is unknown to
+ // MediaWiki (null)
return array( $ext, $mime );
}
@@ -176,6 +254,8 @@ abstract class MediaHandler {
* Currently "width" and "height" are understood, but this might be
* expanded in the future.
* Returns false if unknown or if the document is not multi-page.
+ *
+ * @param $image File
*/
function getPageDimensions( $image, $page ) {
$gis = $this->getImageSize( $image, $image->getPath() );
@@ -213,7 +293,7 @@ abstract class MediaHandler {
*/
/**
- * FIXME: I don't really like this interface, it's not very flexible
+ * @todo FIXME: I don't really like this interface, it's not very flexible
* I think the media handler should generate HTML instead. It can do
* all the formatting according to some standard. That makes it possible
* to do things like visual indication of grouped and chained streams
@@ -223,22 +303,104 @@ abstract class MediaHandler {
return false;
}
+ /** sorts the visible/invisible field.
+ * Split off from ImageHandler::formatMetadata, as used by more than
+ * one type of handler.
+ *
+ * This is used by the media handlers that use the FormatMetadata class
+ *
+ * @param $metadataArray Array metadata array
+ * @return array for use displaying metadata.
+ */
+ function formatMetadataHelper( $metadataArray ) {
+ $result = array(
+ 'visible' => array(),
+ 'collapsed' => array()
+ );
+
+ $formatted = FormatMetadata::getFormattedData( $metadataArray );
+ // Sort fields into visible and collapsed
+ $visibleFields = $this->visibleMetadataFields();
+ foreach ( $formatted as $name => $value ) {
+ $tag = strtolower( $name );
+ self::addMeta( $result,
+ in_array( $tag, $visibleFields ) ? 'visible' : 'collapsed',
+ 'exif',
+ $tag,
+ $value
+ );
+ }
+ return $result;
+ }
+
+ /**
+ * Get a list of metadata items which should be displayed when
+ * the metadata table is collapsed.
+ *
+ * @return array of strings
+ * @access protected
+ */
+ function visibleMetadataFields() {
+ $fields = array();
+ $lines = explode( "\n", wfMsgForContent( 'metadata-fields' ) );
+ foreach( $lines as $line ) {
+ $matches = array();
+ if( preg_match( '/^\\*\s*(.*?)\s*$/', $line, $matches ) ) {
+ $fields[] = $matches[1];
+ }
+ }
+ $fields = array_map( 'strtolower', $fields );
+ return $fields;
+ }
+
+
/**
- * @todo Fixme: document this!
- * 'value' thingy goes into a wikitext table; it used to be escaped but
- * that was incompatible with previous practice of customized display
+ * This is used to generate an array element for each metadata value
+ * That array is then used to generate the table of metadata values
+ * on the image page
+ *
+ * @param &$array Array An array containing elements for each type of visibility
+ * and each of those elements being an array of metadata items. This function adds
+ * a value to that array.
+ * @param $visbility string ('visible' or 'collapsed') if this value is hidden
+ * by default.
+ * @param $type String type of metadata tag (currently always 'exif')
+ * @param $id String the name of the metadata tag (like 'artist' for example).
+ * its name in the table displayed is the message "$type-$id" (Ex exif-artist ).
+ * @param $value String thingy goes into a wikitext table; it used to be escaped but
+ * that was incompatible with previous practise of customized display
* with wikitext formatting via messages such as 'exif-model-value'.
* So the escaping is taken back out, but generally this seems a confusing
* interface.
+ * @param $param String value to pass to the message for the name of the field
+ * as $1. Currently this parameter doesn't seem to ever be used.
+ *
+ * Note, everything here is passed through the parser later on (!)
*/
protected static function addMeta( &$array, $visibility, $type, $id, $value, $param = false ) {
+ $msgName = "$type-$id";
+ if ( wfEmptyMsg( $msgName ) ) {
+ // This is for future compatibility when using instant commons.
+ // So as to not display as ugly a name if a new metadata
+ // property is defined that we don't know about
+ // (not a major issue since such a property would be collapsed
+ // by default).
+ wfDebug( __METHOD__ . ' Unknown metadata name: ' . $id . "\n" );
+ $name = wfEscapeWikiText( $id );
+ } else {
+ $name = wfMsg( $msgName, $param );
+ }
$array[$visibility][] = array(
'id' => "$type-$id",
- 'name' => wfMsg( "$type-$id", $param ),
+ 'name' => $name,
'value' => $value
);
}
+ /**
+ * @param $file File
+ * @return string
+ */
function getShortDesc( $file ) {
global $wgLang;
$nbytes = wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ),
@@ -246,14 +408,21 @@ abstract class MediaHandler {
return "$nbytes";
}
+ /**
+ * @param $file File
+ * @return string
+ */
function getLongDesc( $file ) {
- global $wgUser;
- $sk = $wgUser->getSkin();
+ global $wgLang;
return wfMsgExt( 'file-info', 'parseinline',
- $sk->formatSize( $file->getSize() ),
+ $wgLang->formatSize( $file->getSize() ),
$file->getMimeType() );
}
-
+
+ /**
+ * @param $file File
+ * @return string
+ */
static function getGeneralShortDesc( $file ) {
global $wgLang;
$nbytes = wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ),
@@ -261,11 +430,14 @@ abstract class MediaHandler {
return "$nbytes";
}
+ /**
+ * @param $file File
+ * @return string
+ */
static function getGeneralLongDesc( $file ) {
- global $wgUser;
- $sk = $wgUser->getSkin();
+ global $wgLang;
return wfMsgExt( 'file-info', 'parseinline',
- $sk->formatSize( $file->getSize() ),
+ $wgLang->formatSize( $file->getSize() ),
$file->getMimeType() );
}
@@ -281,10 +453,10 @@ abstract class MediaHandler {
/**
* File validation hook called on upload.
*
- * If the file at the given local path is not valid, or its MIME type does not
+ * If the file at the given local path is not valid, or its MIME type does not
* match the handler class, a Status object should be returned containing
* relevant errors.
- *
+ *
* @param $fileName The local path to the file.
* @return Status object
*/
@@ -321,12 +493,13 @@ abstract class MediaHandler {
* @ingroup Media
*/
abstract class ImageHandler extends MediaHandler {
+
+ /**
+ * @param $file File
+ * @return bool
+ */
function canRender( $file ) {
- if ( $file->getWidth() && $file->getHeight() ) {
- return true;
- } else {
- return false;
- }
+ return ( $file->getWidth() && $file->getHeight() );
}
function getParamMap() {
@@ -371,6 +544,11 @@ abstract class ImageHandler extends MediaHandler {
return array( 'width' => $params['width'] );
}
+ /**
+ * @param $image File
+ * @param $params
+ * @return bool
+ */
function normaliseParams( $image, &$params ) {
$mimeType = $image->getMimeType();
@@ -392,13 +570,44 @@ abstract class ImageHandler extends MediaHandler {
$srcWidth = $image->getWidth( $params['page'] );
$srcHeight = $image->getHeight( $params['page'] );
+
if ( isset( $params['height'] ) && $params['height'] != -1 ) {
+ # Height & width were both set
if ( $params['width'] * $srcHeight > $params['height'] * $srcWidth ) {
+ # Height is the relative smaller dimension, so scale width accordingly
$params['width'] = wfFitBoxWidth( $srcWidth, $srcHeight, $params['height'] );
+
+ if ( $params['width'] == 0 ) {
+ # Very small image, so we need to rely on client side scaling :(
+ $params['width'] = 1;
+ }
+
+ $params['physicalWidth'] = $params['width'];
+ } else {
+ # Height was crap, unset it so that it will be calculated later
+ unset( $params['height'] );
}
}
- $params['height'] = File::scaleHeight( $srcWidth, $srcHeight, $params['width'] );
- if ( !$this->validateThumbParams( $params['width'], $params['height'], $srcWidth, $srcHeight, $mimeType ) ) {
+
+ if ( !isset( $params['physicalWidth'] ) ) {
+ # Passed all validations, so set the physicalWidth
+ $params['physicalWidth'] = $params['width'];
+ }
+
+ # Because thumbs are only referred to by width, the height always needs
+ # to be scaled by the width to keep the thumbnail sizes consistent,
+ # even if it was set inside the if block above
+ $params['physicalHeight'] = File::scaleHeight( $srcWidth, $srcHeight,
+ $params['physicalWidth'] );
+
+ # Set the height if it was not validated in the if block higher up
+ if ( !isset( $params['height'] ) || $params['height'] == -1 ) {
+ $params['height'] = $params['physicalHeight'];
+ }
+
+
+ if ( !$this->validateThumbParams( $params['physicalWidth'],
+ $params['physicalHeight'], $srcWidth, $srcHeight, $mimeType ) ) {
return false;
}
return true;
@@ -435,9 +644,19 @@ abstract class ImageHandler extends MediaHandler {
}
$height = File::scaleHeight( $srcWidth, $srcHeight, $width );
+ if ( $height == 0 ) {
+ # Force height to be at least 1 pixel
+ $height = 1;
+ }
return true;
}
+ /**
+ * @param $image File
+ * @param $script
+ * @param $params
+ * @return bool|ThumbnailImage
+ */
function getScriptedTransform( $image, $script, $params ) {
if ( !$this->normaliseParams( $image, $params ) ) {
return false;
@@ -461,6 +680,10 @@ abstract class ImageHandler extends MediaHandler {
return false;
}
+ /**
+ * @param $file File
+ * @return string
+ */
function getShortDesc( $file ) {
global $wgLang;
$nbytes = wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ),
@@ -470,15 +693,34 @@ abstract class ImageHandler extends MediaHandler {
return "$widthheight ($nbytes)";
}
+ /**
+ * @param $file File
+ * @return string
+ */
function getLongDesc( $file ) {
global $wgLang;
- return wfMsgExt('file-info-size', 'parseinline',
- $wgLang->formatNum( $file->getWidth() ),
- $wgLang->formatNum( $file->getHeight() ),
- $wgLang->formatSize( $file->getSize() ),
- $file->getMimeType() );
+ $pages = $file->pageCount();
+ if ( $pages === false || $pages <= 1 ) {
+ $msg = wfMsgExt('file-info-size', 'parseinline',
+ $wgLang->formatNum( $file->getWidth() ),
+ $wgLang->formatNum( $file->getHeight() ),
+ $wgLang->formatSize( $file->getSize() ),
+ $file->getMimeType() );
+ } else {
+ $msg = wfMsgExt('file-info-size-pages', 'parseinline',
+ $wgLang->formatNum( $file->getWidth() ),
+ $wgLang->formatNum( $file->getHeight() ),
+ $wgLang->formatSize( $file->getSize() ),
+ $file->getMimeType(),
+ $wgLang->formatNum( $pages ) );
+ }
+ return $msg;
}
+ /**
+ * @param $file File
+ * @return string
+ */
function getDimensionsString( $file ) {
global $wgLang;
$pages = $file->pageCount();
diff --git a/includes/media/IPTC.php b/includes/media/IPTC.php
new file mode 100644
index 00000000..1d19791c
--- /dev/null
+++ b/includes/media/IPTC.php
@@ -0,0 +1,576 @@
+<?php
+/**
+*Class for some IPTC functions.
+
+*/
+class IPTC {
+
+ /**
+ * This takes the results of iptcparse() and puts it into a
+ * form that can be handled by mediawiki. Generally called from
+ * BitmapMetadataHandler::doApp13.
+ *
+ * @see http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf
+ *
+ * @param $rawData String app13 block from jpeg containing iptc/iim data
+ * @return Array iptc metadata array
+ */
+ static function parse( $rawData ) {
+ $parsed = iptcparse( $rawData );
+ $data = Array();
+ if (!is_array($parsed)) {
+ return $data;
+ }
+
+ $c = '';
+ //charset info contained in tag 1:90.
+ if (isset($parsed['1#090']) && isset($parsed['1#090'][0])) {
+ $c = self::getCharset($parsed['1#090'][0]);
+ if ($c === false) {
+ //Unknown charset. refuse to parse.
+ //note: There is a different between
+ //unknown and no charset specified.
+ return array();
+ }
+ unset( $parsed['1#090'] );
+ }
+
+ foreach ( $parsed as $tag => $val ) {
+ if ( isset( $val[0] ) && trim($val[0]) == '' ) {
+ wfDebugLog('iptc', "IPTC tag $tag had only whitespace as its value.");
+ continue;
+ }
+ switch( $tag ) {
+ case '2#120': /*IPTC caption. mapped with exif ImageDescription*/
+ $data['ImageDescription'] = self::convIPTC( $val, $c );
+ break;
+ case '2#116': /* copyright. Mapped with exif copyright */
+ $data['Copyright'] = self::convIPTC( $val, $c );
+ break;
+ case '2#080': /* byline. Mapped with exif Artist */
+ /* merge with byline title (2:85)
+ * like how exif does it with
+ * Title, person. Not sure if this is best
+ * approach since we no longer have the two fields
+ * separate. each byline title entry corresponds to a
+ * specific byline. */
+
+ $bylines = self::convIPTC( $val, $c );
+ if ( isset( $parsed['2#085'] ) ) {
+ $titles = self::convIPTC( $parsed['2#085'], $c );
+ } else {
+ $titles = array();
+ }
+
+ for ( $i = 0; $i < count( $titles ); $i++ ) {
+ if ( isset( $bylines[$i] ) ) {
+ // theoretically this should always be set
+ // but doesn't hurt to be careful.
+ $bylines[$i] = $titles[$i] . ', ' . $bylines[$i];
+ }
+ }
+ $data['Artist'] = $bylines;
+ break;
+ case '2#025': /* keywords */
+ $data['Keywords'] = self::convIPTC( $val, $c );
+ break;
+ case '2#101': /* Country (shown)*/
+ $data['CountryDest'] = self::convIPTC( $val, $c );
+ break;
+ case '2#095': /* state/province (shown) */
+ $data['ProvinceOrStateDest'] = self::convIPTC( $val, $c );
+ break;
+ case '2#090': /* city (Shown) */
+ $data['CityDest'] = self::convIPTC( $val, $c );
+ break;
+ case '2#092': /* sublocation (shown) */
+ $data['SublocationDest'] = self::convIPTC( $val, $c );
+ break;
+ case '2#005': /* object name/title */
+ $data['ObjectName'] = self::convIPTC( $val, $c );
+ break;
+ case '2#040': /* special instructions */
+ $data['SpecialInstructions'] = self::convIPTC( $val, $c );
+ break;
+ case '2#105': /* headline*/
+ $data['Headline'] = self::convIPTC( $val, $c );
+ break;
+ case '2#110': /* credit */
+ /*"Identifies the provider of the objectdata,
+ * not necessarily the owner/creator". */
+ $data['Credit'] = self::convIPTC( $val, $c );
+ break;
+ case '2#115': /* source */
+ /* "Identifies the original owner of the intellectual content of the
+ *objectdata. This could be an agency, a member of an agency or
+ *an individual." */
+ $data['Source'] = self::convIPTC( $val, $c );
+ break;
+
+ case '2#007': /* edit status (lead, correction, etc) */
+ $data['EditStatus'] = self::convIPTC( $val, $c );
+ break;
+ case '2#015': /* category. deprecated. max 3 letters in theory, often more */
+ $data['iimCategory'] = self::convIPTC( $val, $c );
+ break;
+ case '2#020': /* category. deprecated. */
+ $data['iimSupplementalCategory'] = self::convIPTC( $val, $c );
+ break;
+ case '2#010': /*urgency (1-8. 1 most, 5 normal, 8 low priority)*/
+ $data['Urgency'] = self::convIPTC( $val, $c );
+ break;
+ case '2#022':
+ /* "Identifies objectdata that recurs often and predictably...
+ * Example: Euroweather" */
+ $data['FixtureIdentifier'] = self::convIPTC( $val, $c );
+ break;
+ case '2#026':
+ /* Content location code (iso 3166 + some custom things)
+ * ex: TUR (for turkey), XUN (for UN), XSP (outer space)
+ * See wikipedia article on iso 3166 and appendix D of iim std. */
+ $data['LocationDestCode'] = self::convIPTC( $val, $c );
+ break;
+ case '2#027':
+ /* Content location name. Full printable name
+ * of location of photo. */
+ $data['LocationDest'] = self::convIPTC( $val, $c );
+ break;
+ case '2#065':
+ /* Originating Program.
+ * Combine with Program version (2:70) if present.
+ */
+ $software = self::convIPTC( $val, $c );
+
+ if ( count( $software ) !== 1 ) {
+ //according to iim standard this cannot have multiple values
+ //so if there is more than one, something weird is happening,
+ //and we skip it.
+ wfDebugLog( 'iptc', 'IPTC: Wrong count on 2:65 Software field' );
+ break;
+ }
+
+ if ( isset( $parsed['2#070'] ) ) {
+ //if a version is set for the software.
+ $softwareVersion = self::convIPTC( $parsed['2#070'], $c );
+ unset($parsed['2#070']);
+ $data['Software'] = array( array( $software[0], $softwareVersion[0] ) );
+ } else {
+ $data['Software'] = $software;
+ }
+ break;
+ case '2#075':
+ /* Object cycle.
+ * a for morning (am), p for evening, b for both */
+ $data['ObjectCycle'] = self::convIPTC( $val, $c );
+ break;
+ case '2#100':
+ /* Country/Primary location code.
+ * "Indicates the code of the country/primary location where the
+ * intellectual property of the objectdata was created"
+ * unclear how this differs from 2#026
+ */
+ $data['CountryCodeDest'] = self::convIPTC( $val, $c );
+ break;
+ case '2#103':
+ /* original transmission ref.
+ * "A code representing the location of original transmission ac-
+ * cording to practises of the provider."
+ */
+ $data['OriginalTransmissionRef'] = self::convIPTC( $val, $c );
+ break;
+ case '2#118': /*contact*/
+ $data['Contact'] = self::convIPTC( $val, $c );
+ break;
+ case '2#122':
+ /* Writer/Editor
+ * "Identification of the name of the person involved in the writing,
+ * editing or correcting the objectdata or caption/abstract."
+ */
+ $data['Writer'] = self::convIPTC( $val, $c );
+ break;
+ case '2#135': /* lang code */
+ $data['LanguageCode'] = self::convIPTC( $val, $c );
+ break;
+
+ // Start date stuff.
+ // It doesn't accept incomplete dates even though they are valid
+ // according to spec.
+ // Should potentially store timezone as well.
+ case '2#055':
+ //Date created (not date digitized).
+ //Maps to exif DateTimeOriginal
+ if ( isset( $parsed['2#060'] ) ) {
+ $time = $parsed['2#060'];
+ } else {
+ $time = Array();
+ }
+ $timestamp = self::timeHelper( $val, $time, $c );
+ if ($timestamp) {
+ $data['DateTimeOriginal'] = $timestamp;
+ }
+ break;
+
+ case '2#062':
+ //Date converted to digital representation.
+ //Maps to exif DateTimeDigitized
+ if ( isset( $parsed['2#063'] ) ) {
+ $time = $parsed['2#063'];
+ } else {
+ $time = Array();
+ }
+ $timestamp = self::timeHelper( $val, $time, $c );
+ if ($timestamp) {
+ $data['DateTimeDigitized'] = $timestamp;
+ }
+ break;
+
+ case '2#030':
+ //Date released.
+ if ( isset( $parsed['2#035'] ) ) {
+ $time = $parsed['2#035'];
+ } else {
+ $time = Array();
+ }
+ $timestamp = self::timeHelper( $val, $time, $c );
+ if ($timestamp) {
+ $data['DateTimeReleased'] = $timestamp;
+ }
+ break;
+
+ case '2#037':
+ //Date expires.
+ if ( isset( $parsed['2#038'] ) ) {
+ $time = $parsed['2#038'];
+ } else {
+ $time = Array();
+ }
+ $timestamp = self::timeHelper( $val, $time, $c );
+ if ($timestamp) {
+ $data['DateTimeExpires'] = $timestamp;
+ }
+ break;
+
+ case '2#000': /* iim version */
+ // unlike other tags, this is a 2-byte binary number.
+ //technically this is required if there is iptc data
+ //but in practise it isn't always there.
+ if ( strlen( $val[0] ) == 2 ) {
+ //if is just to be paranoid.
+ $versionValue = ord( substr( $val[0], 0, 1 ) ) * 256;
+ $versionValue += ord( substr( $val[0], 1, 1 ) );
+ $data['iimVersion'] = $versionValue;
+ }
+ break;
+
+ case '2#004':
+ // IntellectualGenere.
+ // first 4 characters are an id code
+ // That we're not really interested in.
+
+ // This prop is weird, since it's
+ // allowed to have multiple values
+ // in iim 4.1, but not in the XMP
+ // stuff. We're going to just
+ // extract the first value.
+ $con = self::ConvIPTC( $val, $c );
+ if ( strlen( $con[0] ) < 5 ) {
+ wfDebugLog( 'iptc', 'IPTC: '
+ . '2:04 too short. '
+ . 'Ignoring.' );
+ break;
+ }
+ $extracted = substr( $con[0], 4 );
+ $data['IntellectualGenre'] = $extracted;
+ break;
+
+ case '2#012':
+ // Subject News code - this is a compound field
+ // at the moment we only extract the subject news
+ // code, which is an 8 digit (ascii) number
+ // describing the subject matter of the content.
+ $codes = self::convIPTC( $val, $c );
+ foreach ( $codes as $ic ) {
+ $fields = explode(':', $ic, 3 );
+
+ if ( count( $fields ) < 2 ||
+ $fields[0] !== 'IPTC' )
+ {
+ wfDebugLog( 'IPTC', 'IPTC: '
+ . 'Invalid 2:12 - ' . $ic );
+ break;
+ }
+ $data['SubjectNewsCode'] = $fields[1];
+ }
+ break;
+
+ // purposely does not do 2:125, 2:130, 2:131,
+ // 2:47, 2:50, 2:45, 2:42, 2:8, 2:3
+ // 2:200, 2:201, 2:202
+ // or the audio stuff (2:150 to 2:154)
+
+ case '2#070':
+ case '2#060':
+ case '2#063':
+ case '2#085':
+ case '2#038':
+ case '2#035':
+ //ignore. Handled elsewhere.
+ break;
+
+ default:
+ wfDebugLog( 'iptc', "Unsupported iptc tag: $tag. Value: " . implode( ',', $val ));
+ break;
+ }
+
+ }
+ return $data;
+ }
+
+ /**
+ * Convert an iptc date and time tags into the exif format
+ *
+ * @todo Potentially this should also capture the timezone offset.
+ * @param Array $date The date tag
+ * @param Array $time The time tag
+ * @param $c
+ * @return String Date in exif format.
+ */
+ private static function timeHelper( $date, $time, $c ) {
+ if ( count( $date ) === 1 ) {
+ //the standard says this should always be 1
+ //just double checking.
+ list($date) = self::convIPTC( $date, $c );
+ } else {
+ return null;
+ }
+
+ if ( count( $time ) === 1 ) {
+ list($time) = self::convIPTC( $time, $c );
+ $dateOnly = false;
+ } else {
+ $time = '000000+0000'; //placeholder
+ $dateOnly = true;
+ }
+
+ if ( ! ( preg_match('/\d\d\d\d\d\d[-+]\d\d\d\d/', $time)
+ && preg_match('/\d\d\d\d\d\d\d\d/', $date)
+ && substr($date, 0, 4) !== '0000'
+ && substr($date, 4, 2) !== '00'
+ && substr($date, 6, 2) !== '00'
+ ) ) {
+ //something wrong.
+ // Note, this rejects some valid dates according to iptc spec
+ // for example: the date 00000400 means the photo was taken in
+ // April, but the year and day is unknown. We don't process these
+ // types of incomplete dates atm.
+ wfDebugLog( 'iptc', "IPTC: invalid time ( $time ) or date ( $date )");
+ return null;
+ }
+
+ $unixTS = wfTimestamp( TS_UNIX, $date . substr( $time, 0, 6 ));
+ if ( $unixTS === false ) {
+ wfDebugLog( 'iptc', "IPTC: can't convert date to TS_UNIX: $date $time." );
+ return null;
+ }
+
+ $tz = ( intval( substr( $time, 7, 2 ) ) *60*60 )
+ + ( intval( substr( $time, 9, 2 ) ) * 60 );
+
+ if ( substr( $time, 6, 1 ) === '-' ) {
+ $tz = - $tz;
+ }
+
+ $finalTimestamp = wfTimestamp( TS_EXIF, $unixTS + $tz );
+ if ( $finalTimestamp === false ) {
+ wfDebugLog( 'iptc', "IPTC: can't make final timestamp. Date: " . ( $unixTS + $tz ) );
+ return null;
+ }
+ if ( $dateOnly ) {
+ //return the date only
+ return substr( $finalTimestamp, 0, 10 );
+ } else {
+ return $finalTimestamp;
+ }
+ }
+
+ /**
+ * Helper function to convert charset for iptc values.
+ * @param $data Mixed String or Array: The iptc string
+ * @param $charset String: The charset
+ *
+ * @return string
+ */
+ private static function convIPTC ( $data, $charset ) {
+ if ( is_array( $data ) ) {
+ foreach ($data as &$val) {
+ $val = self::convIPTCHelper( $val, $charset );
+ }
+ } else {
+ $data = self::convIPTCHelper( $data, $charset );
+ }
+
+ return $data;
+ }
+ /**
+ * Helper function of a helper function to convert charset for iptc values.
+ * @param $data Mixed String or Array: The iptc string
+ * @param $charset String: The charset
+ *
+ * @return string
+ */
+ private static function convIPTCHelper ( $data, $charset ) {
+ if ( $charset ) {
+ wfSuppressWarnings();
+ $data = iconv($charset, "UTF-8//IGNORE", $data);
+ wfRestoreWarnings();
+ if ($data === false) {
+ $data = "";
+ wfDebugLog('iptc', __METHOD__ . " Error converting iptc data charset $charset to utf-8");
+ }
+ } else {
+ //treat as utf-8 if is valid utf-8. otherwise pretend its windows-1252
+ // most of the time if there is no 1:90 tag, it is either ascii, latin1, or utf-8
+ $oldData = $data;
+ UtfNormal::quickIsNFCVerify( $data ); //make $data valid utf-8
+ if ($data === $oldData) {
+ return $data; //if validation didn't change $data
+ } else {
+ return self::convIPTCHelper( $oldData, 'Windows-1252' );
+ }
+ }
+ return trim( $data );
+ }
+
+ /**
+ * take the value of 1:90 tag and returns a charset
+ * @param String $tag 1:90 tag.
+ * @return string charset name or "?"
+ * Warning, this function does not (and is not intended to) detect
+ * all iso 2022 escape codes. In practise, the code for utf-8 is the
+ * only code that seems to have wide use. It does detect that code.
+ */
+ static function getCharset($tag) {
+
+ //According to iim standard, charset is defined by the tag 1:90.
+ //in which there are iso 2022 escape sequences to specify the character set.
+ //the iim standard seems to encourage that all necessary escape sequences are
+ //in the 1:90 tag, but says it doesn't have to be.
+
+ //This is in need of more testing probably. This is definitely not complete.
+ //however reading the docs of some other iptc software, it appears that most iptc software
+ //only recognizes utf-8. If 1:90 tag is not present content is
+ // usually ascii or iso-8859-1 (and sometimes utf-8), but no guarantee.
+
+ //This also won't work if there are more than one escape sequence in the 1:90 tag
+ //or if something is put in the G2, or G3 charsets, etc. It will only reliably recognize utf-8.
+
+ // This is just going through the charsets mentioned in appendix C of the iim standard.
+
+ // \x1b = ESC.
+ switch ( $tag ) {
+ case "\x1b%G": //utf-8
+ //Also call things that are compatible with utf-8, utf-8 (e.g. ascii)
+ case "\x1b(B": // ascii
+ case "\x1b(@": // iso-646-IRV (ascii in latest version, $ different in older version)
+ $c = 'UTF-8';
+ break;
+ case "\x1b(A": //like ascii, but british.
+ $c = 'ISO646-GB';
+ break;
+ case "\x1b(C": //some obscure sweedish/finland encoding
+ $c = 'ISO-IR-8-1';
+ break;
+ case "\x1b(D":
+ $c = 'ISO-IR-8-2';
+ break;
+ case "\x1b(E": //some obscure danish/norway encoding
+ $c = 'ISO-IR-9-1';
+ break;
+ case "\x1b(F":
+ $c = 'ISO-IR-9-2';
+ break;
+ case "\x1b(G":
+ $c = 'SEN_850200_B'; // aka iso 646-SE; ascii-like
+ break;
+ case "\x1b(I":
+ $c = "ISO646-IT";
+ break;
+ case "\x1b(L":
+ $c = "ISO646-PT";
+ break;
+ case "\x1b(Z":
+ $c = "ISO646-ES";
+ break;
+ case "\x1b([":
+ $c = "GREEK7-OLD";
+ break;
+ case "\x1b(K":
+ $c = "ISO646-DE";
+ break;
+ case "\x1b(N": //crylic
+ $c = "ISO_5427";
+ break;
+ case "\x1b(`": //iso646-NO
+ $c = "NS_4551-1";
+ break;
+ case "\x1b(f": //iso646-FR
+ $c = "NF_Z_62-010";
+ break;
+ case "\x1b(g":
+ $c = "PT2"; //iso646-PT2
+ break;
+ case "\x1b(h":
+ $c = "ES2";
+ break;
+ case "\x1b(i": //iso646-HU
+ $c = "MSZ_7795.3";
+ break;
+ case "\x1b(w":
+ $c = "CSA_Z243.4-1985-1";
+ break;
+ case "\x1b(x":
+ $c = "CSA_Z243.4-1985-2";
+ break;
+ case "\x1b\$(B":
+ case "\x1b\$B":
+ case "\x1b&@\x1b\$B":
+ case "\x1b&@\x1b\$(B":
+ $c = "JIS_C6226-1983";
+ break;
+ case "\x1b-A": // iso-8859-1. at least for the high code characters.
+ case "\x1b(@\x1b-A":
+ case "\x1b(B\x1b-A":
+ $c = 'ISO-8859-1';
+ break;
+ case "\x1b-B": // iso-8859-2. at least for the high code characters.
+ $c = 'ISO-8859-2';
+ break;
+ case "\x1b-C": // iso-8859-3. at least for the high code characters.
+ $c = 'ISO-8859-3';
+ break;
+ case "\x1b-D": // iso-8859-4. at least for the high code characters.
+ $c = 'ISO-8859-4';
+ break;
+ case "\x1b-E": // iso-8859-5. at least for the high code characters.
+ $c = 'ISO-8859-5';
+ break;
+ case "\x1b-F": // iso-8859-6. at least for the high code characters.
+ $c = 'ISO-8859-6';
+ break;
+ case "\x1b-G": // iso-8859-7. at least for the high code characters.
+ $c = 'ISO-8859-7';
+ break;
+ case "\x1b-H": // iso-8859-8. at least for the high code characters.
+ $c = 'ISO-8859-8';
+ break;
+ case "\x1b-I": // CSN_369103. at least for the high code characters.
+ $c = 'CSN_369103';
+ break;
+ default:
+ wfDebugLog('iptc', __METHOD__ . 'Unknown charset in iptc 1:90: ' . bin2hex( $tag ) );
+ //at this point just give up and refuse to parse iptc?
+ $c = false;
+ }
+ return $c;
+ }
+}
diff --git a/includes/media/Jpeg.php b/includes/media/Jpeg.php
new file mode 100644
index 00000000..7033409b
--- /dev/null
+++ b/includes/media/Jpeg.php
@@ -0,0 +1,46 @@
+<?php
+/**
+ * @file
+ * @ingroup Media
+ */
+
+/**
+ * JPEG specific handler.
+ * Inherits most stuff from BitmapHandler, just here to do the metadata handler differently.
+ *
+ * Metadata stuff common to Jpeg and built-in Tiff (not PagedTiffHandler) is
+ * in ExifBitmapHandler.
+ *
+ * @ingroup Media
+ */
+class JpegHandler extends ExifBitmapHandler {
+
+ function getMetadata ( $image, $filename ) {
+ try {
+ $meta = BitmapMetadataHandler::Jpeg( $filename );
+ if ( !is_array( $meta ) ) {
+ // This should never happen, but doesn't hurt to be paranoid.
+ throw new MWException('Metadata array is not an array');
+ }
+ $meta['MEDIAWIKI_EXIF_VERSION'] = Exif::version();
+ return serialize( $meta );
+ }
+ catch ( MWException $e ) {
+ // BitmapMetadataHandler throws an exception in certain exceptional cases like if file does not exist.
+ wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
+
+ /* This used to use 0 (ExifBitmapHandler::OLD_BROKEN_FILE) for the cases
+ * * No metadata in the file
+ * * Something is broken in the file.
+ * However, if the metadata support gets expanded then you can't tell if the 0 is from
+ * a broken file, or just no props found. A broken file is likely to stay broken, but
+ * a file which had no props could have props once the metadata support is improved.
+ * Thus switch to using -1 to denote only a broken file, and use an array with only
+ * MEDIAWIKI_EXIF_VERSION to denote no props.
+ */
+ return ExifBitmapHandler::BROKEN_FILE;
+ }
+ }
+
+}
+
diff --git a/includes/media/JpegMetadataExtractor.php b/includes/media/JpegMetadataExtractor.php
new file mode 100644
index 00000000..4769bf8e
--- /dev/null
+++ b/includes/media/JpegMetadataExtractor.php
@@ -0,0 +1,252 @@
+<?php
+/**
+* Class for reading jpegs and extracting metadata.
+* see also BitmapMetadataHandler.
+*
+* Based somewhat on GIFMetadataExtrator.
+*/
+class JpegMetadataExtractor {
+
+ const MAX_JPEG_SEGMENTS = 200;
+ // the max segment is a sanity check.
+ // A jpeg file should never even remotely have
+ // that many segments. Your average file has about 10.
+
+ /** Function to extract metadata segments of interest from jpeg files
+ * based on GIFMetadataExtractor.
+ *
+ * we can almost use getimagesize to do this
+ * but gis doesn't support having multiple app1 segments
+ * and those can't extract xmp on files containing both exif and xmp data
+ *
+ * @param String $filename name of jpeg file
+ * @return Array of interesting segments.
+ * @throws MWException if given invalid file.
+ */
+ static function segmentSplitter ( $filename ) {
+ $showXMP = function_exists( 'xml_parser_create_ns' );
+
+ $segmentCount = 0;
+
+ $segments = array(
+ 'XMP_ext' => array(),
+ 'COM' => array(),
+ );
+
+ if ( !$filename ) {
+ throw new MWException( "No filename specified for " . __METHOD__ );
+ }
+ if ( !file_exists( $filename ) || is_dir( $filename ) ) {
+ throw new MWException( "Invalid file $filename passed to " . __METHOD__ );
+ }
+
+ $fh = fopen( $filename, "rb" );
+
+ if ( !$fh ) {
+ throw new MWException( "Could not open file $filename" );
+ }
+
+ $buffer = fread( $fh, 2 );
+ if ( $buffer !== "\xFF\xD8" ) {
+ throw new MWException( "Not a jpeg, no SOI" );
+ }
+ while ( !feof( $fh ) ) {
+ $buffer = fread( $fh, 1 );
+ $segmentCount++;
+ if ( $segmentCount > self::MAX_JPEG_SEGMENTS ) {
+ // this is just a sanity check
+ throw new MWException( 'Too many jpeg segments. Aborting' );
+ }
+ if ( $buffer !== "\xFF" ) {
+ throw new MWException( "Error reading jpeg file marker. Expected 0xFF but got " . bin2hex( $buffer ) );
+ }
+
+ $buffer = fread( $fh, 1 );
+ while( $buffer === "\xFF" && !feof( $fh ) ) {
+ // Skip through any 0xFF padding bytes.
+ $buffer = fread( $fh, 1 );
+ }
+ if ( $buffer === "\xFE" ) {
+
+ // COM section -- file comment
+ // First see if valid utf-8,
+ // if not try to convert it to windows-1252.
+ $com = $oldCom = trim( self::jpegExtractMarker( $fh ) );
+ UtfNormal::quickIsNFCVerify( $com );
+ // turns $com to valid utf-8.
+ // thus if no change, its utf-8, otherwise its something else.
+ if ( $com !== $oldCom ) {
+ wfSuppressWarnings();
+ $com = $oldCom = iconv( 'windows-1252', 'UTF-8//IGNORE', $oldCom );
+ wfRestoreWarnings();
+ }
+ // Try it again, if its still not a valid string, then probably
+ // binary junk or some really weird encoding, so don't extract.
+ UtfNormal::quickIsNFCVerify( $com );
+ if ( $com === $oldCom ) {
+ $segments["COM"][] = $oldCom;
+ } else {
+ wfDebug( __METHOD__ . ' Ignoring JPEG comment as is garbage.' );
+ }
+
+ } elseif ( $buffer === "\xE1" ) {
+ // APP1 section (Exif, XMP, and XMP extended)
+ // only extract if XMP is enabled.
+ $temp = self::jpegExtractMarker( $fh );
+ // check what type of app segment this is.
+ if ( substr( $temp, 0, 29 ) === "http://ns.adobe.com/xap/1.0/\x00" && $showXMP ) {
+ $segments["XMP"] = substr( $temp, 29 );
+ } elseif ( substr( $temp, 0, 35 ) === "http://ns.adobe.com/xmp/extension/\x00" && $showXMP ) {
+ $segments["XMP_ext"][] = substr( $temp, 35 );
+ } elseif ( substr( $temp, 0, 29 ) === "XMP\x00://ns.adobe.com/xap/1.0/\x00" && $showXMP ) {
+ // Some images (especially flickr images) seem to have this.
+ // I really have no idea what the deal is with them, but
+ // whatever...
+ $segments["XMP"] = substr( $temp, 29 );
+ wfDebug( __METHOD__ . ' Found XMP section with wrong app identifier '
+ . "Using anyways.\n" );
+ } elseif ( substr( $temp, 0, 6 ) === "Exif\0\0" ) {
+ // Just need to find out what the byte order is.
+ // because php's exif plugin sucks...
+ // This is a II for little Endian, MM for big. Not a unicode BOM.
+ $byteOrderMarker = substr( $temp, 6, 2 );
+ if ( $byteOrderMarker === 'MM' ) {
+ $segments['byteOrder'] = 'BE';
+ } elseif ( $byteOrderMarker === 'II' ) {
+ $segments['byteOrder'] = 'LE';
+ } else {
+ wfDebug( __METHOD__ . ' Invalid byte ordering?!' );
+ }
+ }
+ } elseif ( $buffer === "\xED" ) {
+ // APP13 - PSIR. IPTC and some photoshop stuff
+ $temp = self::jpegExtractMarker( $fh );
+ if ( substr( $temp, 0, 14 ) === "Photoshop 3.0\x00" ) {
+ $segments["PSIR"] = $temp;
+ }
+ } elseif ( $buffer === "\xD9" || $buffer === "\xDA" ) {
+ // EOI - end of image or SOS - start of scan. either way we're past any interesting segments
+ return $segments;
+ } else {
+ // segment we don't care about, so skip
+ $size = wfUnpack( "nint", fread( $fh, 2 ), 2 );
+ if ( $size['int'] <= 2 ) throw new MWException( "invalid marker size in jpeg" );
+ fseek( $fh, $size['int'] - 2, SEEK_CUR );
+ }
+
+ }
+ // shouldn't get here.
+ throw new MWException( "Reached end of jpeg file unexpectedly" );
+ }
+
+ /**
+ * Helper function for jpegSegmentSplitter
+ * @param &$fh FileHandle for jpeg file
+ * @return data content of segment.
+ */
+ private static function jpegExtractMarker( &$fh ) {
+ $size = wfUnpack( "nint", fread( $fh, 2 ), 2 );
+ if ( $size['int'] <= 2 ) throw new MWException( "invalid marker size in jpeg" );
+ $segment = fread( $fh, $size['int'] - 2 );
+ if ( strlen( $segment ) !== $size['int'] - 2 ) throw new MWException( "Segment shorter than expected" );
+ return $segment;
+ }
+
+ /**
+ * This reads the photoshop image resource.
+ * Currently it only compares the iptc/iim hash
+ * with the stored hash, which is used to determine the precedence
+ * of the iptc data. In future it may extract some other info, like
+ * url of copyright license.
+ *
+ * This should generally be called by BitmapMetadataHandler::doApp13()
+ *
+ * @param String $app13 photoshop psir app13 block from jpg.
+ * @return String if the iptc hash is good or not.
+ */
+ public static function doPSIR ( $app13 ) {
+ if ( !$app13 ) {
+ return;
+ }
+ // First compare hash with real thing
+ // 0x404 contains IPTC, 0x425 has hash
+ // This is used to determine if the iptc is newer than
+ // the xmp data, as xmp programs update the hash,
+ // where non-xmp programs don't.
+
+ $offset = 14; // skip past PHOTOSHOP 3.0 identifier. should already be checked.
+ $appLen = strlen( $app13 );
+ $realHash = "";
+ $recordedHash = "";
+
+ // the +12 is the length of an empty item.
+ while ( $offset + 12 <= $appLen ) {
+ $valid = true;
+ if ( substr( $app13, $offset, 4 ) !== '8BIM' ) {
+ // its supposed to be 8BIM
+ // but apparently sometimes isn't esp. in
+ // really old jpg's
+ $valid = false;
+ }
+ $offset += 4;
+ $id = substr( $app13, $offset, 2 );
+ // id is a 2 byte id number which identifies
+ // the piece of info this record contains.
+
+ $offset += 2;
+
+ // some record types can contain a name, which
+ // is a pascal string 0-padded to be an even
+ // number of bytes. Most times (and any time
+ // we care) this is empty, making it two null bytes.
+
+ $lenName = ord( substr( $app13, $offset, 1 ) ) + 1;
+ // we never use the name so skip it. +1 for length byte
+ if ( $lenName % 2 == 1 ) {
+ $lenName++;
+ } // pad to even.
+ $offset += $lenName;
+
+ // now length of data (unsigned long big endian)
+ $lenData = wfUnpack( 'Nlen', substr( $app13, $offset, 4 ), 4 );
+ // PHP can take issue with very large unsigned ints and make them negative.
+ // Which should never ever happen, as this has to be inside a segment
+ // which is limited to a 16 bit number.
+ if ( $lenData['len'] < 0 ) throw new MWException( "Too big PSIR (" . $lenData['len'] . ')' );
+
+ $offset += 4; // 4bytes length field;
+
+ // this should not happen, but check.
+ if ( $lenData['len'] + $offset > $appLen ) {
+ wfDebug( __METHOD__ . " PSIR data too long.\n" );
+ return 'iptc-no-hash';
+ }
+
+ if ( $valid ) {
+ switch ( $id ) {
+ case "\x04\x04":
+ // IPTC block
+ $realHash = md5( substr( $app13, $offset, $lenData['len'] ), true );
+ break;
+ case "\x04\x25":
+ $recordedHash = substr( $app13, $offset, $lenData['len'] );
+ break;
+ }
+ }
+
+ // if odd, add 1 to length to account for
+ // null pad byte.
+ if ( $lenData['len'] % 2 == 1 ) $lenData['len']++;
+ $offset += $lenData['len'];
+
+ }
+
+ if ( !$realHash || !$recordedHash ) {
+ return 'iptc-no-hash';
+ } elseif ( $realHash === $recordedHash ) {
+ return 'iptc-good-hash';
+ } else { /*$realHash !== $recordedHash */
+ return 'iptc-bad-hash';
+ }
+ }
+}
diff --git a/includes/media/MediaTransformOutput.php b/includes/media/MediaTransformOutput.php
index c441f06c..f170bb9d 100644
--- a/includes/media/MediaTransformOutput.php
+++ b/includes/media/MediaTransformOutput.php
@@ -12,7 +12,12 @@
* @ingroup Media
*/
abstract class MediaTransformOutput {
- var $file, $width, $height, $url, $page, $path;
+ /**
+ * @var File
+ */
+ var $file;
+
+ var $width, $height, $url, $page, $path;
/**
* Get the width of the output box
@@ -45,7 +50,7 @@ abstract class MediaTransformOutput {
/**
* Fetch HTML for this transform output
*
- * @param $options Associative array of options. Boolean options
+ * @param $options array Associative array of options. Boolean options
* should be indicated with a value of true for true, and false or
* absent for false.
*
@@ -73,6 +78,11 @@ abstract class MediaTransformOutput {
/**
* Wrap some XHTML text in an anchor tag with the given attributes
+ *
+ * @param $linkAttribs array
+ * @param $contents string
+ *
+ * @return string
*/
protected function linkWrap( $linkAttribs, $contents ) {
if ( $linkAttribs ) {
@@ -82,6 +92,11 @@ abstract class MediaTransformOutput {
}
}
+ /**
+ * @param $title string
+ * @param $params array
+ * @return array
+ */
function getDescLinkAttribs( $title = null, $params = '' ) {
$query = $this->page ? ( 'page=' . urlencode( $this->page ) ) : '';
if( $params ) {
@@ -98,7 +113,6 @@ abstract class MediaTransformOutput {
}
}
-
/**
* Media transform output for images
*
@@ -131,7 +145,7 @@ class ThumbnailImage extends MediaTransformOutput {
* Return HTML <img ... /> tag for the thumbnail, will include
* width and height attributes and a blank alt text (as required).
*
- * @param $options Associative array of options. Boolean options
+ * @param $options array Associative array of options. Boolean options
* should be indicated with a value of true for true, and false or
* absent for false.
*
@@ -212,8 +226,8 @@ class MediaTransformError extends MediaTransformOutput {
$htmlArgs = array_map( 'htmlspecialchars', $args );
$htmlArgs = array_map( 'nl2br', $htmlArgs );
- $this->htmlMsg = wfMsgReplaceArgs( htmlspecialchars( wfMsgGetKey( $msg, true ) ), $htmlArgs );
- $this->textMsg = wfMsgReal( $msg, $args );
+ $this->htmlMsg = wfMessage( $msg )->rawParams( $htmlArgs )->escaped();
+ $this->textMsg = wfMessage( $msg )->rawParams( $htmlArgs )->text();
$this->width = intval( $width );
$this->height = intval( $height );
$this->url = false;
diff --git a/includes/media/PNG.php b/includes/media/PNG.php
index 5197282c..8fe9ecb4 100644
--- a/includes/media/PNG.php
+++ b/includes/media/PNG.php
@@ -12,26 +12,51 @@
* @ingroup Media
*/
class PNGHandler extends BitmapHandler {
-
+
+ const BROKEN_FILE = '0';
+
+ /**
+ * @param File $image
+ * @param string $filename
+ * @return string
+ */
function getMetadata( $image, $filename ) {
- if ( !isset($image->parsedPNGMetadata) ) {
- try {
- $image->parsedPNGMetadata = PNGMetadataExtractor::getMetadata( $filename );
- } catch( Exception $e ) {
- // Broken file?
- wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
- return '0';
- }
+ try {
+ $metadata = BitmapMetadataHandler::PNG( $filename );
+ } catch( Exception $e ) {
+ // Broken file?
+ wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
+ return self::BROKEN_FILE;
}
- return serialize($image->parsedPNGMetadata);
-
+ return serialize($metadata);
}
-
+
+ /**
+ * @param $image File
+ * @return array|bool
+ */
function formatMetadata( $image ) {
- return false;
+ $meta = $image->getMetadata();
+
+ if ( !$meta ) {
+ return false;
+ }
+ $meta = unserialize( $meta );
+ if ( !isset( $meta['metadata'] ) || count( $meta['metadata'] ) <= 1 ) {
+ return false;
+ }
+
+ if ( isset( $meta['metadata']['_MW_PNG_VERSION'] ) ) {
+ unset( $meta['metadata']['_MW_PNG_VERSION'] );
+ }
+ return $this->formatMetadataHelper( $meta['metadata'] );
}
-
+
+ /**
+ * @param $image File
+ * @return bool
+ */
function isAnimatedImage( $image ) {
$ser = $image->getMetadata();
if ($ser) {
@@ -46,11 +71,33 @@ class PNGHandler extends BitmapHandler {
}
function isMetadataValid( $image, $metadata ) {
+
+ if ( $metadata === self::BROKEN_FILE ) {
+ // Do not repetitivly regenerate metadata on broken file.
+ return self::METADATA_GOOD;
+ }
+
wfSuppressWarnings();
$data = unserialize( $metadata );
wfRestoreWarnings();
- return (boolean) $data;
+
+ if ( !$data || !is_array( $data ) ) {
+ wfDebug(__METHOD__ . ' invalid png metadata' );
+ return self::METADATA_BAD;
+ }
+
+ if ( !isset( $data['metadata']['_MW_PNG_VERSION'] )
+ || $data['metadata']['_MW_PNG_VERSION'] != PNGMetadataExtractor::VERSION ) {
+ wfDebug(__METHOD__ . ' old but compatible png metadata' );
+ return self::METADATA_COMPATIBLE;
+ }
+ return self::METADATA_GOOD;
}
+
+ /**
+ * @param $image File
+ * @return string
+ */
function getLongDesc( $image ) {
global $wgLang;
$original = parent::getLongDesc( $image );
@@ -65,16 +112,19 @@ class PNGHandler extends BitmapHandler {
$info = array();
$info[] = $original;
- if ($metadata['loopCount'] == 0)
+ if ( $metadata['loopCount'] == 0 ) {
$info[] = wfMsgExt( 'file-info-png-looped', 'parseinline' );
- elseif ($metadata['loopCount'] > 1)
+ } elseif ( $metadata['loopCount'] > 1 ) {
$info[] = wfMsgExt( 'file-info-png-repeat', 'parseinline', $metadata['loopCount'] );
+ }
- if ($metadata['frameCount'] > 0)
+ if ( $metadata['frameCount'] > 0 ) {
$info[] = wfMsgExt( 'file-info-png-frames', 'parseinline', $metadata['frameCount'] );
+ }
- if ($metadata['duration'])
+ if ( $metadata['duration'] ) {
$info[] = $wgLang->formatTimePeriod( $metadata['duration'] );
+ }
return $wgLang->commaList( $info );
}
diff --git a/includes/media/PNGMetadataExtractor.php b/includes/media/PNGMetadataExtractor.php
index 6a931e6c..d3c44d4f 100644
--- a/includes/media/PNGMetadataExtractor.php
+++ b/includes/media/PNGMetadataExtractor.php
@@ -1,6 +1,6 @@
<?php
/**
- * PNG frame counter.
+ * PNG frame counter and metadata extractor.
* Slightly derived from GIFMetadataExtractor.php
* Deliberately not using MWExceptions to avoid external dependencies, encouraging
* redistribution.
@@ -17,26 +17,61 @@
class PNGMetadataExtractor {
static $png_sig;
static $CRC_size;
+ static $text_chunks;
+
+ const VERSION = 1;
+ const MAX_CHUNK_SIZE = 3145728; // 3 megabytes
static function getMetadata( $filename ) {
self::$png_sig = pack( "C8", 137, 80, 78, 71, 13, 10, 26, 10 );
self::$CRC_size = 4;
-
+ /* based on list at http://owl.phy.queensu.ca/~phil/exiftool/TagNames/PNG.html#TextualData
+ * and http://www.w3.org/TR/PNG/#11keywords
+ */
+ self::$text_chunks = array(
+ 'xml:com.adobe.xmp' => 'xmp',
+ # Artist is unofficial. Author is the recommended
+ # keyword in the PNG spec. However some people output
+ # Artist so support both.
+ 'artist' => 'Artist',
+ 'model' => 'Model',
+ 'make' => 'Make',
+ 'author' => 'Artist',
+ 'comment' => 'PNGFileComment',
+ 'description' => 'ImageDescription',
+ 'title' => 'ObjectName',
+ 'copyright' => 'Copyright',
+ # Source as in original device used to make image
+ # not as in who gave you the image
+ 'source' => 'Model',
+ 'software' => 'Software',
+ 'disclaimer' => 'Disclaimer',
+ 'warning' => 'ContentWarning',
+ 'url' => 'Identifier', # Not sure if this is best mapping. Maybe WebStatement.
+ 'label' => 'Label',
+ 'creation time' => 'DateTimeDigitized',
+ /* Other potentially useful things - Document */
+ );
+
$frameCount = 0;
$loopCount = 1;
+ $text = array();
$duration = 0.0;
+ $bitDepth = 0;
+ $colorType = 'unknown';
- if (!$filename)
+ if ( !$filename ) {
throw new Exception( __METHOD__ . ": No file name specified" );
- elseif ( !file_exists($filename) || is_dir($filename) )
+ } elseif ( !file_exists( $filename ) || is_dir( $filename ) ) {
throw new Exception( __METHOD__ . ": File $filename does not exist" );
-
- $fh = fopen( $filename, 'r' );
-
- if (!$fh) {
+ }
+
+ $fh = fopen( $filename, 'rb' );
+
+ if ( !$fh ) {
throw new Exception( __METHOD__ . ": Unable to open file $filename" );
}
-
+
// Check for the PNG header
$buf = fread( $fh, 8 );
if ( $buf != self::$png_sig ) {
@@ -44,22 +79,54 @@ class PNGMetadataExtractor {
}
// Read chunks
- while( !feof( $fh ) ) {
+ while ( !feof( $fh ) ) {
$buf = fread( $fh, 4 );
- if( !$buf ) {
+ if ( !$buf || strlen( $buf ) < 4 ) {
throw new Exception( __METHOD__ . ": Read error" );
}
- $chunk_size = unpack( "N", $buf);
+ $chunk_size = unpack( "N", $buf );
$chunk_size = $chunk_size[1];
+ if ( $chunk_size < 0 ) {
+ throw new Exception( __METHOD__ . ": Chunk size too big for unpack" );
+ }
+
$chunk_type = fread( $fh, 4 );
- if( !$chunk_type ) {
+ if ( !$chunk_type || strlen( $chunk_type ) < 4 ) {
throw new Exception( __METHOD__ . ": Read error" );
}
- if ( $chunk_type == "acTL" ) {
+ if ( $chunk_type == "IHDR" ) {
+ $buf = self::read( $fh, $chunk_size );
+ if ( !$buf || strlen( $buf ) < $chunk_size ) {
+ throw new Exception( __METHOD__ . ": Read error" );
+ }
+ $bitDepth = ord( substr( $buf, 8, 1 ) );
+ // Detect the color type in British English as per the spec
+ // http://www.w3.org/TR/PNG/#11IHDR
+ switch ( ord( substr( $buf, 9, 1 ) ) ) {
+ case 0:
+ $colorType = 'greyscale';
+ break;
+ case 2:
+ $colorType = 'truecolour';
+ break;
+ case 3:
+ $colorType = 'index-coloured';
+ break;
+ case 4:
+ $colorType = 'greyscale-alpha';
+ break;
+ case 6:
+ $colorType = 'truecolour-alpha';
+ break;
+ default:
+ $colorType = 'unknown';
+ break;
+ }
+ } elseif ( $chunk_type == "acTL" ) {
$buf = fread( $fh, $chunk_size );
- if( !$buf ) {
+ if( !$buf || strlen( $buf ) < $chunk_size || $chunk_size < 4 ) {
throw new Exception( __METHOD__ . ": Read error" );
}
@@ -67,20 +134,216 @@ class PNGMetadataExtractor {
$frameCount = $actl['frames'];
$loopCount = $actl['plays'];
} elseif ( $chunk_type == "fcTL" ) {
- $buf = fread( $fh, $chunk_size );
- if( !$buf ) {
+ $buf = self::read( $fh, $chunk_size );
+ if ( !$buf || strlen( $buf ) < $chunk_size ) {
+ throw new Exception( __METHOD__ . ": Read error" );
+ }
+ $buf = substr( $buf, 20 );
+ if ( strlen( $buf ) < 4 ) {
throw new Exception( __METHOD__ . ": Read error" );
}
- $buf = substr( $buf, 20 );
$fctldur = unpack( "ndelay_num/ndelay_den", $buf );
- if( $fctldur['delay_den'] == 0 ) $fctldur['delay_den'] = 100;
- if( $fctldur['delay_num'] ) {
+ if ( $fctldur['delay_den'] == 0 ) {
+ $fctldur['delay_den'] = 100;
+ }
+ if ( $fctldur['delay_num'] ) {
$duration += $fctldur['delay_num'] / $fctldur['delay_den'];
}
- } elseif ( ( $chunk_type == "IDAT" || $chunk_type == "IEND" ) && $frameCount == 0 ) {
- // Not a valid animated image. No point in continuing.
- break;
+ } elseif ( $chunk_type == "iTXt" ) {
+ // Extracts iTXt chunks, uncompressing if necessary.
+ $buf = self::read( $fh, $chunk_size );
+ $items = array();
+ if ( preg_match(
+ '/^([^\x00]{1,79})\x00(\x00|\x01)\x00([^\x00]*)(.)[^\x00]*\x00(.*)$/Ds',
+ $buf, $items )
+ ) {
+ /* $items[1] = text chunk name, $items[2] = compressed flag,
+ * $items[3] = lang code (or ""), $items[4]= compression type.
+ * $items[5] = content
+ */
+
+ // Theoretically should be case-sensitive, but in practise...
+ $items[1] = strtolower( $items[1] );
+ if ( !isset( self::$text_chunks[$items[1]] ) ) {
+ // Only extract textual chunks on our list.
+ fseek( $fh, self::$CRC_size, SEEK_CUR );
+ continue;
+ }
+
+ $items[3] = strtolower( $items[3] );
+ if ( $items[3] == '' ) {
+ // if no lang specified use x-default like in xmp.
+ $items[3] = 'x-default';
+ }
+
+ // if compressed
+ if ( $items[2] == "\x01" ) {
+ if ( function_exists( 'gzuncompress' ) && $items[4] === "\x00" ) {
+ wfSuppressWarnings();
+ $items[5] = gzuncompress( $items[5] );
+ wfRestoreWarnings();
+
+ if ( $items[5] === false ) {
+ // decompression failed
+ wfDebug( __METHOD__ . ' Error decompressing iTxt chunk - ' . $items[1] );
+ fseek( $fh, self::$CRC_size, SEEK_CUR );
+ continue;
+ }
+
+ } else {
+ wfDebug( __METHOD__ . ' Skipping compressed png iTXt chunk due to lack of zlib,'
+ . ' or potentially invalid compression method' );
+ fseek( $fh, self::$CRC_size, SEEK_CUR );
+ continue;
+ }
+ }
+ $finalKeyword = self::$text_chunks[ $items[1] ];
+ $text[ $finalKeyword ][ $items[3] ] = $items[5];
+ $text[ $finalKeyword ]['_type'] = 'lang';
+
+ } else {
+ // Error reading iTXt chunk
+ throw new Exception( __METHOD__ . ": Read error on iTXt chunk" );
+ }
+
+ } elseif ( $chunk_type == 'tEXt' ) {
+ $buf = self::read( $fh, $chunk_size );
+
+ // In case there is no \x00 which will make explode fail.
+ if ( strpos( $buf, "\x00" ) === false ) {
+ throw new Exception( __METHOD__ . ": Read error on tEXt chunk" );
+ }
+
+ list( $keyword, $content ) = explode( "\x00", $buf, 2 );
+ if ( $keyword === '' || $content === '' ) {
+ throw new Exception( __METHOD__ . ": Read error on tEXt chunk" );
+ }
+
+ // Theoretically should be case-sensitive, but in practise...
+ $keyword = strtolower( $keyword );
+ if ( !isset( self::$text_chunks[ $keyword ] ) ) {
+ // Don't recognize chunk, so skip.
+ fseek( $fh, self::$CRC_size, SEEK_CUR );
+ continue;
+ }
+ wfSuppressWarnings();
+ $content = iconv( 'ISO-8859-1', 'UTF-8', $content );
+ wfRestoreWarnings();
+
+ if ( $content === false ) {
+ throw new Exception( __METHOD__ . ": Read error (error with iconv)" );
+ }
+
+ $finalKeyword = self::$text_chunks[ $keyword ];
+ $text[ $finalKeyword ][ 'x-default' ] = $content;
+ $text[ $finalKeyword ]['_type'] = 'lang';
+
+ } elseif ( $chunk_type == 'zTXt' ) {
+ if ( function_exists( 'gzuncompress' ) ) {
+ $buf = self::read( $fh, $chunk_size );
+
+ // In case there is no \x00 which will make explode fail.
+ if ( strpos( $buf, "\x00" ) === false ) {
+ throw new Exception( __METHOD__ . ": Read error on zTXt chunk" );
+ }
+
+ list( $keyword, $postKeyword ) = explode( "\x00", $buf, 2 );
+ if ( $keyword === '' || $postKeyword === '' ) {
+ throw new Exception( __METHOD__ . ": Read error on zTXt chunk" );
+ }
+ // Theoretically should be case-sensitive, but in practise...
+ $keyword = strtolower( $keyword );
+
+ if ( !isset( self::$text_chunks[ $keyword ] ) ) {
+ // Don't recognize chunk, so skip.
+ fseek( $fh, self::$CRC_size, SEEK_CUR );
+ continue;
+ }
+ $compression = substr( $postKeyword, 0, 1 );
+ $content = substr( $postKeyword, 1 );
+ if ( $compression !== "\x00" ) {
+ wfDebug( __METHOD__ . " Unrecognized compression method in zTXt ($keyword). Skipping." );
+ fseek( $fh, self::$CRC_size, SEEK_CUR );
+ continue;
+ }
+
+ wfSuppressWarnings();
+ $content = gzuncompress( $content );
+ wfRestoreWarnings();
+
+ if ( $content === false ) {
+ // decompression failed
+ wfDebug( __METHOD__ . ' Error decompressing zTXt chunk - ' . $keyword );
+ fseek( $fh, self::$CRC_size, SEEK_CUR );
+ continue;
+ }
+
+ wfSuppressWarnings();
+ $content = iconv( 'ISO-8859-1', 'UTF-8', $content );
+ wfRestoreWarnings();
+
+ if ( $content === false ) {
+ throw new Exception( __METHOD__ . ": Read error (error with iconv)" );
+ }
+
+ $finalKeyword = self::$text_chunks[ $keyword ];
+ $text[ $finalKeyword ][ 'x-default' ] = $content;
+ $text[ $finalKeyword ]['_type'] = 'lang';
+
+ } else {
+ wfDebug( __METHOD__ . " Cannot decompress zTXt chunk due to lack of zlib. Skipping." );
+ fseek( $fh, $chunk_size, SEEK_CUR );
+ }
+ } elseif ( $chunk_type == 'tIME' ) {
+ // last mod timestamp.
+ if ( $chunk_size !== 7 ) {
+ throw new Exception( __METHOD__ . ": tIME wrong size" );
+ }
+ $buf = self::read( $fh, $chunk_size );
+ if ( !$buf || strlen( $buf ) < $chunk_size ) {
+ throw new Exception( __METHOD__ . ": Read error" );
+ }
+
+ // Note: spec says this should be UTC.
+ $t = unpack( "ny/Cm/Cd/Ch/Cmin/Cs", $buf );
+ $strTime = sprintf( "%04d%02d%02d%02d%02d%02d",
+ $t['y'], $t['m'], $t['d'], $t['h'],
+ $t['min'], $t['s'] );
+
+ $exifTime = wfTimestamp( TS_EXIF, $strTime );
+
+ if ( $exifTime ) {
+ $text['DateTime'] = $exifTime;
+ }
+
+ } elseif ( $chunk_type == 'pHYs' ) {
+ // how big pixels are (dots per meter).
+ if ( $chunk_size !== 9 ) {
+ throw new Exception( __METHOD__ . ": pHYs wrong size" );
+ }
+
+ $buf = self::read( $fh, $chunk_size );
+ if ( !$buf || strlen( $buf ) < $chunk_size ) {
+ throw new Exception( __METHOD__ . ": Read error" );
+ }
+
+ $dim = unpack( "Nwidth/Nheight/Cunit", $buf );
+ if ( $dim['unit'] == 1 ) {
+ // Need to check for negative because php
+ // doesn't deal with super-large unsigned 32-bit ints well
+ if ( $dim['width'] > 0 && $dim['height'] > 0 ) {
+ // unit is meters
+ // (as opposed to 0 = undefined )
+ $text['XResolution'] = $dim['width']
+ . '/100';
+ $text['YResolution'] = $dim['height']
+ . '/100';
+ $text['ResolutionUnit'] = 3;
+ // 3 = dots per cm (from Exif).
+ }
+ }
+
} elseif ( $chunk_type == "IEND" ) {
break;
} else {
@@ -90,15 +353,59 @@ class PNGMetadataExtractor {
}
fclose( $fh );
- if( $loopCount > 1 ) {
+ if ( $loopCount > 1 ) {
$duration *= $loopCount;
}
+ if ( isset( $text['DateTimeDigitized'] ) ) {
+ // Convert date format from rfc2822 to exif.
+ foreach ( $text['DateTimeDigitized'] as $name => &$value ) {
+ if ( $name === '_type' ) {
+ continue;
+ }
+
+ // @todo FIXME: Currently timezones are ignored.
+ // possibly should be wfTimestamp's
+ // responsibility. (at least for numeric TZ)
+ $formatted = wfTimestamp( TS_EXIF, $value );
+ if ( $formatted ) {
+ // Only change if we could convert the
+ // date.
+ // The png standard says it should be
+ // in rfc2822 format, but not required.
+ // In general for the exif stuff we
+ // prettify the date if we can, but we
+ // display as-is if we cannot or if
+ // it is invalid.
+ // So do the same here.
+
+ $value = $formatted;
+ }
+ }
+ }
return array(
'frameCount' => $frameCount,
'loopCount' => $loopCount,
- 'duration' => $duration
+ 'duration' => $duration,
+ 'text' => $text,
+ 'bitDepth' => $bitDepth,
+ 'colorType' => $colorType,
);
-
+
+ }
+ /**
+ * Read a chunk, checking to make sure its not too big.
+ *
+ * @param $fh resource The file handle
+ * @param $size Integer size in bytes.
+ * @throws Exception if too big.
+ * @return String The chunk.
+ */
+ static private function read( $fh, $size ) {
+ if ( $size > self::MAX_CHUNK_SIZE ) {
+ throw new Exception( __METHOD__ . ': Chunk size of ' . $size .
+ ' too big. Max size is: ' . self::MAX_CHUNK_SIZE );
+ }
+ return fread( $fh, $size );
}
}
diff --git a/includes/media/SVG.php b/includes/media/SVG.php
index a78be952..ceffd7c3 100644
--- a/includes/media/SVG.php
+++ b/includes/media/SVG.php
@@ -32,6 +32,10 @@ class SvgHandler extends ImageHandler {
return true;
}
+ /**
+ * @param $file File
+ * @return bool
+ */
function isAnimatedImage( $file ) {
# TODO: detect animated SVGs
$metadata = $file->getMetadata();
@@ -44,14 +48,17 @@ class SvgHandler extends ImageHandler {
return false;
}
+ /**
+ * @param $image File
+ * @param $params
+ * @return bool
+ */
function normaliseParams( $image, &$params ) {
global $wgSVGMaxSize;
if ( !parent::normaliseParams( $image, $params ) ) {
return false;
}
# Don't make an image bigger than wgMaxSVGSize on the smaller side
- $params['physicalWidth'] = $params['width'];
- $params['physicalHeight'] = $params['height'];
if ( $params['physicalWidth'] <= $params['physicalHeight'] ) {
if ( $params['physicalWidth'] > $wgSVGMaxSize ) {
$srcWidth = $image->getWidth( $params['page'] );
@@ -70,6 +77,14 @@ class SvgHandler extends ImageHandler {
return true;
}
+ /**
+ * @param $image File
+ * @param $dstPath
+ * @param $dstUrl
+ * @param $params
+ * @param int $flags
+ * @return bool|MediaTransformError|ThumbnailImage|TransformParameterError
+ */
function doTransform( $image, $dstPath, $dstUrl, $params, $flags = 0 ) {
if ( !$this->normaliseParams( $image, $params ) ) {
return new TransformParameterError( $params );
@@ -97,7 +112,7 @@ class SvgHandler extends ImageHandler {
}
}
- /*
+ /**
* Transform an SVG file to PNG
* This function can be called outside of thumbnail contexts
* @param string $srcPath
@@ -111,19 +126,32 @@ class SvgHandler extends ImageHandler {
$err = false;
$retval = '';
if ( isset( $wgSVGConverters[$wgSVGConverter] ) ) {
- $cmd = str_replace(
- array( '$path/', '$width', '$height', '$input', '$output' ),
- array( $wgSVGConverterPath ? wfEscapeShellArg( "$wgSVGConverterPath/" ) : "",
- intval( $width ),
- intval( $height ),
- wfEscapeShellArg( $srcPath ),
- wfEscapeShellArg( $dstPath ) ),
- $wgSVGConverters[$wgSVGConverter]
- ) . " 2>&1";
- wfProfileIn( 'rsvg' );
- wfDebug( __METHOD__.": $cmd\n" );
- $err = wfShellExec( $cmd, $retval );
- wfProfileOut( 'rsvg' );
+ if ( is_array( $wgSVGConverters[$wgSVGConverter] ) ) {
+ // This is a PHP callable
+ $func = $wgSVGConverters[$wgSVGConverter][0];
+ $args = array_merge( array( $srcPath, $dstPath, $width, $height ),
+ array_slice( $wgSVGConverters[$wgSVGConverter], 1 ) );
+ if ( !is_callable( $func ) ) {
+ throw new MWException( "$func is not callable" );
+ }
+ $err = call_user_func_array( $func, $args );
+ $retval = (bool)$err;
+ } else {
+ // External command
+ $cmd = str_replace(
+ array( '$path/', '$width', '$height', '$input', '$output' ),
+ array( $wgSVGConverterPath ? wfEscapeShellArg( "$wgSVGConverterPath/" ) : "",
+ intval( $width ),
+ intval( $height ),
+ wfEscapeShellArg( $srcPath ),
+ wfEscapeShellArg( $dstPath ) ),
+ $wgSVGConverters[$wgSVGConverter]
+ ) . " 2>&1";
+ wfProfileIn( 'rsvg' );
+ wfDebug( __METHOD__.": $cmd\n" );
+ $err = wfShellExec( $cmd, $retval );
+ wfProfileOut( 'rsvg' );
+ }
}
$removed = $this->removeBadFile( $dstPath, $retval );
if ( $retval != 0 || $removed ) {
@@ -133,7 +161,27 @@ class SvgHandler extends ImageHandler {
}
return true;
}
+
+ public static function rasterizeImagickExt( $srcPath, $dstPath, $width, $height ) {
+ $im = new Imagick( $srcPath );
+ $im->setImageFormat( 'png' );
+ $im->setBackgroundColor( 'transparent' );
+ $im->setImageDepth( 8 );
+
+ if ( !$im->thumbnailImage( intval( $width ), intval( $height ), /* fit */ false ) ) {
+ return 'Could not resize image';
+ }
+ if ( !$im->writeImage( $dstPath ) ) {
+ return "Could not write to $dstPath";
+ }
+ }
+ /**
+ * @param $file File
+ * @param $path
+ * @param bool $metadata
+ * @return array
+ */
function getImageSize( $file, $path, $metadata = false ) {
if ( $metadata === false ) {
$metadata = $file->getMetaData();
@@ -150,6 +198,10 @@ class SvgHandler extends ImageHandler {
return array( 'png', 'image/png' );
}
+ /**
+ * @param $file File
+ * @return string
+ */
function getLongDesc( $file ) {
global $wgLang;
return wfMsgExt( 'svg-long-desc', 'parseinline',
@@ -171,7 +223,9 @@ class SvgHandler extends ImageHandler {
}
function unpackMetadata( $metadata ) {
- $unser = @unserialize( $metadata );
+ wfSuppressWarnings();
+ $unser = unserialize( $metadata );
+ wfRestoreWarnings();
if ( isset( $unser['version'] ) && $unser['version'] == self::SVG_METADATA_VERSION ) {
return $unser;
} else {
@@ -192,6 +246,10 @@ class SvgHandler extends ImageHandler {
return $fields;
}
+ /**
+ * @param $file File
+ * @return array|bool
+ */
function formatMetadata( $file ) {
$result = array(
'visible' => array(),
diff --git a/includes/media/SVGMetadataExtractor.php b/includes/media/SVGMetadataExtractor.php
index 66ae1edf..22ef8e61 100644
--- a/includes/media/SVGMetadataExtractor.php
+++ b/includes/media/SVGMetadataExtractor.php
@@ -55,7 +55,7 @@ class SVGReader {
$size = filesize( $source );
if ( $size === false ) {
throw new MWException( "Error getting filesize of SVG." );
- }
+ }
if ( $size > $wgSVGMetadataCutoff ) {
$this->debug( "SVG is $size bytes, which is bigger than $wgSVGMetadataCutoff. Truncating." );
@@ -84,14 +84,14 @@ class SVGReader {
wfRestoreWarnings();
}
- /*
+ /**
* @return Array with the known metadata
*/
public function getMetadata() {
return $this->metadata;
}
- /*
+ /**
* Read the SVG
*/
public function read() {
@@ -139,10 +139,12 @@ class SVGReader {
$keepReading = $this->reader->next();
}
+ $this->reader->close();
+
return true;
}
- /*
+ /**
* Read a textelement from an element
*
* @param String $name of the element that we are reading from
@@ -155,7 +157,7 @@ class SVGReader {
}
$keepReading = $this->reader->read();
while( $keepReading ) {
- if( $this->reader->localName == $name && $this->namespaceURI == self::NS_SVG && $this->reader->nodeType == XmlReader::END_ELEMENT ) {
+ if( $this->reader->localName == $name && $this->reader->namespaceURI == self::NS_SVG && $this->reader->nodeType == XmlReader::END_ELEMENT ) {
break;
} elseif( $this->reader->nodeType == XmlReader::TEXT ){
$this->metadata[$metafield] = trim( $this->reader->value );
@@ -175,20 +177,27 @@ class SVGReader {
return;
}
// TODO: find and store type of xml snippet. metadata['metadataType'] = "rdf"
- $this->metadata[$metafield] = trim( $this->reader->readInnerXML() );
+ if( method_exists( $this->reader, 'readInnerXML' ) ) {
+ $this->metadata[$metafield] = trim( $this->reader->readInnerXML() );
+ } else {
+ throw new MWException( "The PHP XMLReader extension does not come with readInnerXML() method. Your libxml is probably out of date (need 2.6.20 or later)." );
+ }
$this->reader->next();
}
- /*
+ /**
* Filter all children, looking for animate elements
*
* @param String $name of the element that we are reading from
*/
private function animateFilter( $name ) {
- $this->debug ( "animate filter" );
+ $this->debug ( "animate filter for tag $name" );
if( $this->reader->nodeType != XmlReader::ELEMENT ) {
return;
}
+ if ( $this->reader->isEmptyElement ) {
+ return;
+ }
$exitDepth = $this->reader->depth;
$keepReading = $this->reader->read();
while( $keepReading ) {
@@ -230,7 +239,7 @@ class SVGReader {
wfDebug( "SVGReader WARN: $data\n" );
}
- /*
+ /**
* Parse the attributes of an SVG element
*
* The parser has to be in the start element of <svg>
diff --git a/includes/media/Tiff.php b/includes/media/Tiff.php
index 8773201f..0f317e1a 100644
--- a/includes/media/Tiff.php
+++ b/includes/media/Tiff.php
@@ -11,27 +11,74 @@
*
* @ingroup Media
*/
-class TiffHandler extends BitmapHandler {
+class TiffHandler extends ExifBitmapHandler {
/**
* Conversion to PNG for inline display can be disabled here...
* Note scaling should work with ImageMagick, but may not with GD scaling.
+ *
+ * Files pulled from an another MediaWiki instance via ForeignAPIRepo /
+ * InstantCommons will have thumbnails managed from the remote instance,
+ * so we can skip this check.
+ *
+ * @param $file
+ *
+ * @return bool
*/
function canRender( $file ) {
global $wgTiffThumbnailType;
- return (bool)$wgTiffThumbnailType;
+ return (bool)$wgTiffThumbnailType
+ || ($file->getRepo() instanceof ForeignAPIRepo);
}
/**
* Browsers don't support TIFF inline generally...
* For inline display, we need to convert to PNG.
+ *
+ * @param $file
+ *
+ * @return bool
*/
function mustRender( $file ) {
return true;
}
+ /**
+ * @param $ext
+ * @param $mime
+ * @param $params
+ * @return bool
+ */
function getThumbType( $ext, $mime, $params = null ) {
global $wgTiffThumbnailType;
return $wgTiffThumbnailType;
}
+
+ /**
+ * @param $image
+ * @param $filename
+ * @return string
+ */
+ function getMetadata( $image, $filename ) {
+ global $wgShowEXIF;
+ if ( $wgShowEXIF ) {
+ try {
+ $meta = BitmapMetadataHandler::Tiff( $filename );
+ if ( !is_array( $meta ) ) {
+ // This should never happen, but doesn't hurt to be paranoid.
+ throw new MWException('Metadata array is not an array');
+ }
+ $meta['MEDIAWIKI_EXIF_VERSION'] = Exif::version();
+ return serialize( $meta );
+ }
+ catch ( MWException $e ) {
+ // BitmapMetadataHandler throws an exception in certain exceptional
+ // cases like if file does not exist.
+ wfDebug( __METHOD__ . ': ' . $e->getMessage() . "\n" );
+ return ExifBitmapHandler::BROKEN_FILE;
+ }
+ } else {
+ return '';
+ }
+ }
}
diff --git a/includes/media/XMP.php b/includes/media/XMP.php
new file mode 100644
index 00000000..1e578582
--- /dev/null
+++ b/includes/media/XMP.php
@@ -0,0 +1,1174 @@
+<?php
+/**
+* Class for reading xmp data containing properties relevant to
+* images, and spitting out an array that FormatExif accepts.
+*
+* Note, this is not meant to recognize every possible thing you can
+* encode in XMP. It should recognize all the properties we want.
+* For example it doesn't have support for structures with multiple
+* nesting levels, as none of the properties we're supporting use that
+* feature. If it comes across properties it doesn't recognize, it should
+* ignore them.
+*
+* The public methods one would call in this class are
+* - parse( $content )
+* Reads in xmp content.
+* Can potentially be called multiple times with partial data each time.
+* - parseExtended( $content )
+* Reads XMPExtended blocks (jpeg files only).
+* - getResults
+* Outputs a results array.
+*
+* Note XMP kind of looks like rdf. They are not the same thing - XMP is
+* encoded as a specific subset of rdf. This class can read XMP. It cannot
+* read rdf.
+*
+*/
+class XMPReader {
+
+ private $curItem = array(); // array to hold the current element (and previous element, and so on)
+ private $ancestorStruct = false; // the structure name when processing nested structures.
+ private $charContent = false; // temporary holder for character data that appears in xmp doc.
+ private $mode = array(); // stores the state the xmpreader is in (see MODE_FOO constants)
+ private $results = array(); // array to hold results
+ private $processingArray = false; // if we're doing a seq or bag.
+ private $itemLang = false; // used for lang alts only
+
+ private $xmlParser;
+ private $charset = false;
+ private $extendedXMPOffset = 0;
+
+ protected $items;
+
+ /**
+ * These are various mode constants.
+ * they are used to figure out what to do
+ * with an element when its encountered.
+ *
+ * For example, MODE_IGNORE is used when processing
+ * a property we're not interested in. So if a new
+ * element pops up when we're in that mode, we ignore it.
+ */
+ const MODE_INITIAL = 0;
+ const MODE_IGNORE = 1;
+ const MODE_LI = 2;
+ const MODE_LI_LANG = 3;
+ const MODE_QDESC = 4;
+
+ // The following MODE constants are also used in the
+ // $items array to denote what type of property the item is.
+ const MODE_SIMPLE = 10;
+ const MODE_STRUCT = 11; // structure (associative array)
+ const MODE_SEQ = 12; // ordered list
+ const MODE_BAG = 13; // unordered list
+ const MODE_LANG = 14;
+ const MODE_ALT = 15; // non-language alt. Currently not implemented, and not needed atm.
+ const MODE_BAGSTRUCT = 16; // A BAG of Structs.
+
+ const NS_RDF = 'http://www.w3.org/1999/02/22-rdf-syntax-ns#';
+ const NS_XML = 'http://www.w3.org/XML/1998/namespace';
+
+
+ /**
+ * Constructor.
+ *
+ * Primary job is to initialize the XMLParser
+ */
+ function __construct() {
+
+ if ( !function_exists( 'xml_parser_create_ns' ) ) {
+ // this should already be checked by this point
+ throw new MWException( 'XMP support requires XML Parser' );
+ }
+
+ $this->items = XMPInfo::getItems();
+
+ $this->resetXMLParser();
+
+ }
+ /**
+ * Main use is if a single item has multiple xmp documents describing it.
+ * For example in jpeg's with extendedXMP
+ */
+ private function resetXMLParser() {
+
+ if ($this->xmlParser) {
+ //is this needed?
+ xml_parser_free( $this->xmlParser );
+ }
+
+ $this->xmlParser = xml_parser_create_ns( 'UTF-8', ' ' );
+ xml_parser_set_option( $this->xmlParser, XML_OPTION_CASE_FOLDING, 0 );
+ xml_parser_set_option( $this->xmlParser, XML_OPTION_SKIP_WHITE, 1 );
+
+ xml_set_element_handler( $this->xmlParser,
+ array( $this, 'startElement' ),
+ array( $this, 'endElement' ) );
+
+ xml_set_character_data_handler( $this->xmlParser, array( $this, 'char' ) );
+ }
+
+ /** Destroy the xml parser
+ *
+ * Not sure if this is actually needed.
+ */
+ function __destruct() {
+ // not sure if this is needed.
+ xml_parser_free( $this->xmlParser );
+ }
+
+ /** Get the result array. Do some post-processing before returning
+ * the array, and transform any metadata that is special-cased.
+ *
+ * @return Array array of results as an array of arrays suitable for
+ * FormatMetadata::getFormattedData().
+ */
+ public function getResults() {
+ // xmp-special is for metadata that affects how stuff
+ // is extracted. For example xmpNote:HasExtendedXMP.
+
+ // It is also used to handle photoshop:AuthorsPosition
+ // which is weird and really part of another property,
+ // see 2:85 in IPTC. See also pg 21 of IPTC4XMP standard.
+ // The location fields also use it.
+
+ $data = $this->results;
+
+ wfRunHooks('XMPGetResults', Array(&$data));
+
+ if ( isset( $data['xmp-special']['AuthorsPosition'] )
+ && is_string( $data['xmp-special']['AuthorsPosition'] )
+ && isset( $data['xmp-general']['Artist'][0] )
+ ) {
+ // Note, if there is more than one creator,
+ // this only applies to first. This also will
+ // only apply to the dc:Creator prop, not the
+ // exif:Artist prop.
+
+ $data['xmp-general']['Artist'][0] =
+ $data['xmp-special']['AuthorsPosition'] . ', '
+ . $data['xmp-general']['Artist'][0];
+ }
+
+ // Go through the LocationShown and LocationCreated
+ // changing it to the non-hierarchal form used by
+ // the other location fields.
+
+ if ( isset( $data['xmp-special']['LocationShown'][0] )
+ && is_array( $data['xmp-special']['LocationShown'][0] )
+ ) {
+ // the is_array is just paranoia. It should always
+ // be an array.
+ foreach( $data['xmp-special']['LocationShown'] as $loc ) {
+ if ( !is_array( $loc ) ) {
+ // To avoid copying over the _type meta-fields.
+ continue;
+ }
+ foreach( $loc as $field => $val ) {
+ $data['xmp-general'][$field . 'Dest'][] = $val;
+ }
+ }
+ }
+ if ( isset( $data['xmp-special']['LocationCreated'][0] )
+ && is_array( $data['xmp-special']['LocationCreated'][0] )
+ ) {
+ // the is_array is just paranoia. It should always
+ // be an array.
+ foreach( $data['xmp-special']['LocationCreated'] as $loc ) {
+ if ( !is_array( $loc ) ) {
+ // To avoid copying over the _type meta-fields.
+ continue;
+ }
+ foreach( $loc as $field => $val ) {
+ $data['xmp-general'][$field . 'Created'][] = $val;
+ }
+ }
+ }
+
+
+ // We don't want to return the special values, since they're
+ // special and not info to be stored about the file.
+ unset( $data['xmp-special'] );
+
+ // Convert GPSAltitude to negative if below sea level.
+ if ( isset( $data['xmp-exif']['GPSAltitudeRef'] ) ) {
+ if ( $data['xmp-exif']['GPSAltitudeRef'] == '1'
+ && isset( $data['xmp-exif']['GPSAltitude'] )
+ ) {
+ $data['xmp-exif']['GPSAltitude'] *= -1;
+ }
+ unset( $data['xmp-exif']['GPSAltitudeRef'] );
+ }
+
+ return $data;
+ }
+
+ /**
+ * Main function to call to parse XMP. Use getResults to
+ * get results.
+ *
+ * Also catches any errors during processing, writes them to
+ * debug log, blanks result array and returns false.
+ *
+ * @param String: $content XMP data
+ * @param Boolean: $allOfIt If this is all the data (true) or if its split up (false). Default true
+ * @param Boolean: $reset - does xml parser need to be reset. Default false
+ * @return Boolean success.
+ */
+ public function parse( $content, $allOfIt = true, $reset = false ) {
+ if ( $reset ) {
+ $this->resetXMLParser();
+ }
+ try {
+
+ // detect encoding by looking for BOM which is supposed to be in processing instruction.
+ // see page 12 of http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart3.pdf
+ if ( !$this->charset ) {
+ $bom = array();
+ if ( preg_match( '/\xEF\xBB\xBF|\xFE\xFF|\x00\x00\xFE\xFF|\xFF\xFE\x00\x00|\xFF\xFE/',
+ $content, $bom )
+ ) {
+ switch ( $bom[0] ) {
+ case "\xFE\xFF":
+ $this->charset = 'UTF-16BE';
+ break;
+ case "\xFF\xFE":
+ $this->charset = 'UTF-16LE';
+ break;
+ case "\x00\x00\xFE\xFF":
+ $this->charset = 'UTF-32BE';
+ break;
+ case "\xFF\xFE\x00\x00":
+ $this->charset = 'UTF-32LE';
+ break;
+ case "\xEF\xBB\xBF":
+ $this->charset = 'UTF-8';
+ break;
+ default:
+ //this should be impossible to get to
+ throw new MWException("Invalid BOM");
+ break;
+
+ }
+
+ } else {
+ // standard specifically says, if no bom assume utf-8
+ $this->charset = 'UTF-8';
+ }
+ }
+ if ( $this->charset !== 'UTF-8' ) {
+ //don't convert if already utf-8
+ wfSuppressWarnings();
+ $content = iconv( $this->charset, 'UTF-8//IGNORE', $content );
+ wfRestoreWarnings();
+ }
+
+ $ok = xml_parse( $this->xmlParser, $content, $allOfIt );
+ if ( !$ok ) {
+ $error = xml_error_string( xml_get_error_code( $this->xmlParser ) );
+ $where = 'line: ' . xml_get_current_line_number( $this->xmlParser )
+ . ' column: ' . xml_get_current_column_number( $this->xmlParser )
+ . ' byte offset: ' . xml_get_current_byte_index( $this->xmlParser );
+
+ wfDebugLog( 'XMP', "XMPReader::parse : Error reading XMP content: $error ($where)" );
+ $this->results = array(); // blank if error.
+ return false;
+ }
+ } catch ( MWException $e ) {
+ wfDebugLog( 'XMP', 'XMP parse error: ' . $e );
+ $this->results = array();
+ return false;
+ }
+ return true;
+ }
+
+ /** Entry point for XMPExtended blocks in jpeg files
+ *
+ * @todo In serious need of testing
+ * @see http://www.adobe.ge/devnet/xmp/pdfs/XMPSpecificationPart3.pdf XMP spec part 3 page 20
+ * @param String $content XMPExtended block minus the namespace signature
+ * @return Boolean If it succeeded.
+ */
+ public function parseExtended( $content ) {
+ // @todo FIXME: This is untested. Hard to find example files
+ // or programs that make such files..
+ $guid = substr( $content, 0, 32 );
+ if ( !isset( $this->results['xmp-special']['HasExtendedXMP'] )
+ || $this->results['xmp-special']['HasExtendedXMP'] !== $guid ) {
+ wfDebugLog('XMP', __METHOD__ . " Ignoring XMPExtended block due to wrong guid (guid= '$guid' )");
+ return false;
+ }
+ $len = unpack( 'Nlength/Noffset', substr( $content, 32, 8 ) );
+
+ if (!$len || $len['length'] < 4 || $len['offset'] < 0 || $len['offset'] > $len['length'] ) {
+ wfDebugLog('XMP', __METHOD__ . 'Error reading extended XMP block, invalid length or offset.');
+ return false;
+ }
+
+
+ // we're not very robust here. we should accept it in the wrong order. To quote
+ // the xmp standard:
+ // "A JPEG writer should write the ExtendedXMP marker segments in order, immediately following the
+ // StandardXMP. However, the JPEG standard does not require preservation of marker segment order. A
+ // robust JPEG reader should tolerate the marker segments in any order."
+ //
+ // otoh the probability that an image will have more than 128k of metadata is rather low...
+ // so the probability that it will have > 128k, and be in the wrong order is very low...
+
+ if ( $len['offset'] !== $this->extendedXMPOffset ) {
+ wfDebugLog('XMP', __METHOD__ . 'Ignoring XMPExtended block due to wrong order. (Offset was '
+ . $len['offset'] . ' but expected ' . $this->extendedXMPOffset . ')');
+ return false;
+ }
+
+ if ( $len['offset'] === 0 ) {
+ // if we're starting the extended block, we've probably already
+ // done the XMPStandard block, so reset.
+ $this->resetXMLParser();
+ }
+
+ $this->extendedXMPOffset += $len['length'];
+
+ $actualContent = substr( $content, 40 );
+
+ if ( $this->extendedXMPOffset === strlen( $actualContent ) ) {
+ $atEnd = true;
+ } else {
+ $atEnd = false;
+ }
+
+ wfDebugLog('XMP', __METHOD__ . 'Parsing a XMPExtended block');
+ return $this->parse( $actualContent, $atEnd );
+ }
+
+ /**
+ * Character data handler
+ * Called whenever character data is found in the xmp document.
+ *
+ * does nothing if we're in MODE_IGNORE or if the data is whitespace
+ * throws an error if we're not in MODE_SIMPLE (as we're not allowed to have character
+ * data in the other modes).
+ *
+ * As an example, this happens when we encounter XMP like:
+ * <exif:DigitalZoomRatio>0/10</exif:DigitalZoomRatio>
+ * and are processing the 0/10 bit.
+ *
+ * @param $parser XMLParser reference to the xml parser
+ * @param $data String Character data
+ * @throws MWException on invalid data
+ */
+ function char( $parser, $data ) {
+
+ $data = trim( $data );
+ if ( trim( $data ) === "" ) {
+ return;
+ }
+
+ if ( !isset( $this->mode[0] ) ) {
+ throw new MWException( 'Unexpected character data before first rdf:Description element' );
+ }
+
+ if ( $this->mode[0] === self::MODE_IGNORE ) return;
+
+ if ( $this->mode[0] !== self::MODE_SIMPLE
+ && $this->mode[0] !== self::MODE_QDESC
+ ) {
+ throw new MWException( 'character data where not expected. (mode ' . $this->mode[0] . ')' );
+ }
+
+ // to check, how does this handle w.s.
+ if ( $this->charContent === false ) {
+ $this->charContent = $data;
+ } else {
+ $this->charContent .= $data;
+ }
+
+ }
+
+ /** When we hit a closing element in MODE_IGNORE
+ * Check to see if this is the element we started to ignore,
+ * in which case we get out of MODE_IGNORE
+ *
+ * @param $elm String Namespace of element followed by a space and then tag name of element.
+ */
+ private function endElementModeIgnore ( $elm ) {
+
+ if ( $this->curItem[0] === $elm ) {
+ array_shift( $this->curItem );
+ array_shift( $this->mode );
+ }
+ return;
+
+ }
+
+ /**
+ * Hit a closing element when in MODE_SIMPLE.
+ * This generally means that we finished processing a
+ * property value, and now have to save the result to the
+ * results array
+ *
+ * For example, when processing:
+ * <exif:DigitalZoomRatio>0/10</exif:DigitalZoomRatio>
+ * this deals with when we hit </exif:DigitalZoomRatio>.
+ *
+ * Or it could be if we hit the end element of a property
+ * of a compound data structure (like a member of an array).
+ *
+ * @param $elm String namespace, space, and tag name.
+ */
+ private function endElementModeSimple ( $elm ) {
+ if ( $this->charContent !== false ) {
+ if ( $this->processingArray ) {
+ // if we're processing an array, use the original element
+ // name instead of rdf:li.
+ list( $ns, $tag ) = explode( ' ', $this->curItem[0], 2 );
+ } else {
+ list( $ns, $tag ) = explode( ' ', $elm, 2 );
+ }
+ $this->saveValue( $ns, $tag, $this->charContent );
+
+ $this->charContent = false; // reset
+ }
+ array_shift( $this->curItem );
+ array_shift( $this->mode );
+
+ }
+
+ /**
+ * Hit a closing element in MODE_STRUCT, MODE_SEQ, MODE_BAG
+ * generally means we've finished processing a nested structure.
+ * resets some internal variables to indicate that.
+ *
+ * Note this means we hit the </closing element> not the </rdf:Seq>.
+ *
+ * For example, when processing:
+ * <exif:ISOSpeedRatings> <rdf:Seq> <rdf:li>64</rdf:li>
+ * </rdf:Seq> </exif:ISOSpeedRatings>
+ *
+ * This method is called when we hit the </exif:ISOSpeedRatings> tag.
+ *
+ * @param $elm String namespace . space . tag name.
+ */
+ private function endElementNested( $elm ) {
+
+ /* cur item must be the same as $elm, unless if in MODE_STRUCT
+ in which case it could also be rdf:Description */
+ if ( $this->curItem[0] !== $elm
+ && !( $elm === self::NS_RDF . ' Description'
+ && $this->mode[0] === self::MODE_STRUCT )
+ ) {
+ throw new MWException( "nesting mismatch. got a </$elm> but expected a </" . $this->curItem[0] . '>' );
+ }
+
+ // Validate structures.
+ list( $ns, $tag ) = explode( ' ', $elm, 2 );
+ if ( isset( $this->items[$ns][$tag]['validate'] ) ) {
+
+ $info =& $this->items[$ns][$tag];
+ $finalName = isset( $info['map_name'] )
+ ? $info['map_name'] : $tag;
+
+ $validate = is_array( $info['validate'] ) ? $info['validate']
+ : array( 'XMPValidate', $info['validate'] );
+
+ if ( !isset( $this->results['xmp-' . $info['map_group']][$finalName] ) ) {
+ // This can happen if all the members of the struct failed validation.
+ wfDebugLog( 'XMP', __METHOD__ . " <$ns:$tag> has no valid members." );
+
+ } elseif ( is_callable( $validate ) ) {
+ $val =& $this->results['xmp-' . $info['map_group']][$finalName];
+ call_user_func_array( $validate, array( $info, &$val, false ) );
+ if ( is_null( $val ) ) {
+ // the idea being the validation function will unset the variable if
+ // its invalid.
+ wfDebugLog( 'XMP', __METHOD__ . " <$ns:$tag> failed validation." );
+ unset( $this->results['xmp-' . $info['map_group']][$finalName] );
+ }
+ } else {
+ wfDebugLog( 'XMP', __METHOD__ . " Validation function for $finalName ("
+ . $validate[0] . '::' . $validate[1] . '()) is not callable.' );
+ }
+ }
+
+ array_shift( $this->curItem );
+ array_shift( $this->mode );
+ $this->ancestorStruct = false;
+ $this->processingArray = false;
+ $this->itemLang = false;
+ }
+
+ /**
+ * Hit a closing element in MODE_LI (either rdf:Seq, or rdf:Bag )
+ * Add information about what type of element this is.
+ *
+ * Note we still have to hit the outer </property>
+ *
+ * For example, when processing:
+ * <exif:ISOSpeedRatings> <rdf:Seq> <rdf:li>64</rdf:li>
+ * </rdf:Seq> </exif:ISOSpeedRatings>
+ *
+ * This method is called when we hit the </rdf:Seq>.
+ * (For comparison, we call endElementModeSimple when we
+ * hit the </rdf:li>)
+ *
+ * @param $elm String namespace . ' ' . element name
+ */
+ private function endElementModeLi( $elm ) {
+
+ list( $ns, $tag ) = explode( ' ', $this->curItem[0], 2 );
+ $info = $this->items[$ns][$tag];
+ $finalName = isset( $info['map_name'] )
+ ? $info['map_name'] : $tag;
+
+ array_shift( $this->mode );
+
+ if ( !isset( $this->results['xmp-' . $info['map_group']][$finalName] ) ) {
+ wfDebugLog( 'XMP', __METHOD__ . " Empty compund element $finalName." );
+ return;
+ }
+
+ if ( $elm === self::NS_RDF . ' Seq' ) {
+ $this->results['xmp-' . $info['map_group']][$finalName]['_type'] = 'ol';
+ } elseif ( $elm === self::NS_RDF . ' Bag' ) {
+ $this->results['xmp-' . $info['map_group']][$finalName]['_type'] = 'ul';
+ } elseif ( $elm === self::NS_RDF . ' Alt' ) {
+ // extra if needed as you could theoretically have a non-language alt.
+ if ( $info['mode'] === self::MODE_LANG ) {
+ $this->results['xmp-' . $info['map_group']][$finalName]['_type'] = 'lang';
+ }
+
+ } else {
+ throw new MWException( __METHOD__ . " expected </rdf:seq> or </rdf:bag> but instead got $elm." );
+ }
+ }
+
+ /**
+ * End element while in MODE_QDESC
+ * mostly when ending an element when we have a simple value
+ * that has qualifiers.
+ *
+ * Qualifiers aren't all that common, and we don't do anything
+ * with them.
+ *
+ * @param $elm String namespace and element
+ */
+ private function endElementModeQDesc( $elm ) {
+
+ if ( $elm === self::NS_RDF . ' value' ) {
+ list( $ns, $tag ) = explode( ' ', $this->curItem[0], 2 );
+ $this->saveValue( $ns, $tag, $this->charContent );
+ return;
+ } else {
+ array_shift( $this->mode );
+ array_shift( $this->curItem );
+ }
+
+
+ }
+
+ /**
+ * Handler for hitting a closing element.
+ *
+ * generally just calls a helper function depending on what
+ * mode we're in.
+ *
+ * Ignores the outer wrapping elements that are optional in
+ * xmp and have no meaning.
+ *
+ * @param $parser XMLParser
+ * @param $elm String namespace . ' ' . element name
+ */
+ function endElement( $parser, $elm ) {
+ if ( $elm === ( self::NS_RDF . ' RDF' )
+ || $elm === 'adobe:ns:meta/ xmpmeta'
+ || $elm === 'adobe:ns:meta/ xapmeta' )
+ {
+ // ignore these.
+ return;
+ }
+
+ if ( $elm === self::NS_RDF . ' type' ) {
+ // these aren't really supported properly yet.
+ // However, it appears they almost never used.
+ wfDebugLog( 'XMP', __METHOD__ . ' encountered <rdf:type>' );
+ }
+
+ if ( strpos( $elm, ' ' ) === false ) {
+ // This probably shouldn't happen.
+ // However, there is a bug in an adobe product
+ // that forgets the namespace on some things.
+ // (Luckily they are unimportant things).
+ wfDebugLog( 'XMP', __METHOD__ . " Encountered </$elm> which has no namespace. Skipping." );
+ return;
+ }
+
+ if ( count( $this->mode[0] ) === 0 ) {
+ // This should never ever happen and means
+ // there is a pretty major bug in this class.
+ throw new MWException( 'Encountered end element with no mode' );
+ }
+
+ if ( count( $this->curItem ) == 0 && $this->mode[0] !== self::MODE_INITIAL ) {
+ // just to be paranoid. Should always have a curItem, except for initially
+ // (aka during MODE_INITAL).
+ throw new MWException( "Hit end element </$elm> but no curItem" );
+ }
+
+ switch( $this->mode[0] ) {
+ case self::MODE_IGNORE:
+ $this->endElementModeIgnore( $elm );
+ break;
+ case self::MODE_SIMPLE:
+ $this->endElementModeSimple( $elm );
+ break;
+ case self::MODE_STRUCT:
+ case self::MODE_SEQ:
+ case self::MODE_BAG:
+ case self::MODE_LANG:
+ case self::MODE_BAGSTRUCT:
+ $this->endElementNested( $elm );
+ break;
+ case self::MODE_INITIAL:
+ if ( $elm === self::NS_RDF . ' Description' ) {
+ array_shift( $this->mode );
+ } else {
+ throw new MWException( 'Element ended unexpectedly while in MODE_INITIAL' );
+ }
+ break;
+ case self::MODE_LI:
+ case self::MODE_LI_LANG:
+ $this->endElementModeLi( $elm );
+ break;
+ case self::MODE_QDESC:
+ $this->endElementModeQDesc( $elm );
+ break;
+ default:
+ wfDebugLog( 'XMP', __METHOD__ . " no mode (elm = $elm)" );
+ break;
+ }
+ }
+
+ /**
+ * Hit an opening element while in MODE_IGNORE
+ *
+ * XMP is extensible, so ignore any tag we don't understand.
+ *
+ * Mostly ignores, unless we encounter the element that we are ignoring.
+ * in which case we add it to the item stack, so we can ignore things
+ * that are nested, correctly.
+ *
+ * @param $elm String namespace . ' ' . tag name
+ */
+ private function startElementModeIgnore( $elm ) {
+ if ( $elm === $this->curItem[0] ) {
+ array_unshift( $this->curItem, $elm );
+ array_unshift( $this->mode, self::MODE_IGNORE );
+ }
+ }
+
+ /**
+ * Start element in MODE_BAG (unordered array)
+ * this should always be <rdf:Bag>
+ *
+ * @param $elm String namespace . ' ' . tag
+ * @throws MWException if we have an element that's not <rdf:Bag>
+ */
+ private function startElementModeBag( $elm ) {
+ if ( $elm === self::NS_RDF . ' Bag' ) {
+ array_unshift( $this->mode, self::MODE_LI );
+ } else {
+ throw new MWException( "Expected <rdf:Bag> but got $elm." );
+ }
+
+ }
+
+ /**
+ * Start element in MODE_SEQ (ordered array)
+ * this should always be <rdf:Seq>
+ *
+ * @param $elm String namespace . ' ' . tag
+ * @throws MWException if we have an element that's not <rdf:Seq>
+ */
+ private function startElementModeSeq( $elm ) {
+ if ( $elm === self::NS_RDF . ' Seq' ) {
+ array_unshift( $this->mode, self::MODE_LI );
+ } elseif ( $elm === self::NS_RDF . ' Bag' ) {
+ # bug 27105
+ wfDebugLog( 'XMP', __METHOD__ . ' Expected an rdf:Seq, but got an rdf:Bag. Pretending'
+ . ' it is a Seq, since some buggy software is known to screw this up.' );
+ array_unshift( $this->mode, self::MODE_LI );
+ } else {
+ throw new MWException( "Expected <rdf:Seq> but got $elm." );
+ }
+
+ }
+
+ /**
+ * Start element in MODE_LANG (language alternative)
+ * this should always be <rdf:Alt>
+ *
+ * This tag tends to be used for metadata like describe this
+ * picture, which can be translated into multiple languages.
+ *
+ * XMP supports non-linguistic alternative selections,
+ * which are really only used for thumbnails, which
+ * we don't care about.
+ *
+ * @param $elm String namespace . ' ' . tag
+ * @throws MWException if we have an element that's not <rdf:Alt>
+ */
+ private function startElementModeLang( $elm ) {
+ if ( $elm === self::NS_RDF . ' Alt' ) {
+ array_unshift( $this->mode, self::MODE_LI_LANG );
+ } else {
+ throw new MWException( "Expected <rdf:Seq> but got $elm." );
+ }
+
+ }
+
+ /**
+ * Handle an opening element when in MODE_SIMPLE
+ *
+ * This should not happen often. This is for if a simple element
+ * already opened has a child element. Could happen for a
+ * qualified element.
+ *
+ * For example:
+ * <exif:DigitalZoomRatio><rdf:Description><rdf:value>0/10</rdf:value>
+ * <foo:someQualifier>Bar</foo:someQualifier> </rdf:Description>
+ * </exif:DigitalZoomRatio>
+ *
+ * This method is called when processing the <rdf:Description> element
+ *
+ * @param $elm String namespace and tag names separated by space.
+ * @param $attribs Array Attributes of the element.
+ */
+ private function startElementModeSimple( $elm, $attribs ) {
+ if ( $elm === self::NS_RDF . ' Description' ) {
+ // If this value has qualifiers
+ array_unshift( $this->mode, self::MODE_QDESC );
+ array_unshift( $this->curItem, $this->curItem[0] );
+
+ if ( isset( $attribs[self::NS_RDF . ' value'] ) ) {
+ list( $ns, $tag ) = explode( ' ', $this->curItem[0], 2 );
+ $this->saveValue( $ns, $tag, $attribs[self::NS_RDF . ' value'] );
+ }
+ } elseif ( $elm === self::NS_RDF . ' value' ) {
+ // This should not be here.
+ throw new MWException( __METHOD__ . ' Encountered <rdf:value> where it was unexpected.' );
+
+ } else {
+ // something else we don't recognize, like a qualifier maybe.
+ wfDebugLog( 'XMP', __METHOD__ . " Encountered element <$elm> where only expecting character data as value of " . $this->curItem[0] );
+ array_unshift( $this->mode, self::MODE_IGNORE );
+ array_unshift( $this->curItem, $elm );
+
+ }
+
+ }
+
+ /**
+ * Start an element when in MODE_QDESC.
+ * This generally happens when a simple element has an inner
+ * rdf:Description to hold qualifier elements.
+ *
+ * For example in:
+ * <exif:DigitalZoomRatio><rdf:Description><rdf:value>0/10</rdf:value>
+ * <foo:someQualifier>Bar</foo:someQualifier> </rdf:Description>
+ * </exif:DigitalZoomRatio>
+ * Called when processing the <rdf:value> or <foo:someQualifier>.
+ *
+ * @param $elm String namespace and tag name separated by a space.
+ *
+ */
+ private function startElementModeQDesc( $elm ) {
+ if ( $elm === self::NS_RDF . ' value' ) {
+ return; // do nothing
+ } else {
+ // otherwise its a qualifier, which we ignore
+ array_unshift( $this->mode, self::MODE_IGNORE );
+ array_unshift( $this->curItem, $elm );
+ }
+ }
+
+ /**
+ * Starting an element when in MODE_INITIAL
+ * This usually happens when we hit an element inside
+ * the outer rdf:Description
+ *
+ * This is generally where most properties start.
+ *
+ * @param $ns String Namespace
+ * @param $tag String tag name (without namespace prefix)
+ * @param $attribs Array array of attributes
+ */
+ private function startElementModeInitial( $ns, $tag, $attribs ) {
+ if ( $ns !== self::NS_RDF ) {
+
+ if ( isset( $this->items[$ns][$tag] ) ) {
+ if ( isset( $this->items[$ns][$tag]['structPart'] ) ) {
+ // If this element is supposed to appear only as
+ // a child of a structure, but appears here (not as
+ // a child of a struct), then something weird is
+ // happening, so ignore this element and its children.
+
+ wfDebugLog( 'XMP', "Encountered <$ns:$tag> outside"
+ . " of its expected parent. Ignoring." );
+
+ array_unshift( $this->mode, self::MODE_IGNORE );
+ array_unshift( $this->curItem, $ns . ' ' . $tag );
+ return;
+ }
+ $mode = $this->items[$ns][$tag]['mode'];
+ array_unshift( $this->mode, $mode );
+ array_unshift( $this->curItem, $ns . ' ' . $tag );
+ if ( $mode === self::MODE_STRUCT ) {
+ $this->ancestorStruct = isset( $this->items[$ns][$tag]['map_name'] )
+ ? $this->items[$ns][$tag]['map_name'] : $tag;
+ }
+ if ( $this->charContent !== false ) {
+ // Something weird.
+ // Should not happen in valid XMP.
+ throw new MWException( 'tag nested in non-whitespace characters.' );
+ }
+ } else {
+ // This element is not on our list of allowed elements so ignore.
+ wfDebugLog( 'XMP', __METHOD__ . " Ignoring unrecognized element <$ns:$tag>." );
+ array_unshift( $this->mode, self::MODE_IGNORE );
+ array_unshift( $this->curItem, $ns . ' ' . $tag );
+ return;
+ }
+
+ }
+ // process attributes
+ $this->doAttribs( $attribs );
+ }
+
+ /**
+ * Hit an opening element when in a Struct (MODE_STRUCT)
+ * This is generally for fields of a compound property.
+ *
+ * Example of a struct (abbreviated; flash has more properties):
+ *
+ * <exif:Flash> <rdf:Description> <exif:Fired>True</exif:Fired>
+ * <exif:Mode>1</exif:Mode></rdf:Description></exif:Flash>
+ *
+ * or:
+ *
+ * <exif:Flash rdf:parseType='Resource'> <exif:Fired>True</exif:Fired>
+ * <exif:Mode>1</exif:Mode></exif:Flash>
+ *
+ * @param $ns String namespace
+ * @param $tag String tag name (no ns)
+ * @param $attribs Array array of attribs w/ values.
+ */
+ private function startElementModeStruct( $ns, $tag, $attribs ) {
+ if ( $ns !== self::NS_RDF ) {
+
+ if ( isset( $this->items[$ns][$tag] ) ) {
+ if ( isset( $this->items[$ns][$this->ancestorStruct]['children'] )
+ && !isset( $this->items[$ns][$this->ancestorStruct]['children'][$tag] ) )
+ {
+ // This assumes that we don't have inter-namespace nesting
+ // which we don't in all the properties we're interested in.
+ throw new MWException( " <$tag> appeared nested in <" . $this->ancestorStruct
+ . "> where it is not allowed." );
+ }
+ array_unshift( $this->mode, $this->items[$ns][$tag]['mode'] );
+ array_unshift( $this->curItem, $ns . ' ' . $tag );
+ if ( $this->charContent !== false ) {
+ // Something weird.
+ // Should not happen in valid XMP.
+ throw new MWException( "tag <$tag> nested in non-whitespace characters (" . $this->charContent . ")." );
+ }
+ } else {
+ array_unshift( $this->mode, self::MODE_IGNORE );
+ array_unshift( $this->curItem, $elm );
+ return;
+ }
+
+ }
+
+ if ( $ns === self::NS_RDF && $tag === 'Description' ) {
+ $this->doAttribs( $attribs );
+ array_unshift( $this->mode, self::MODE_STRUCT );
+ array_unshift( $this->curItem, $this->curItem[0] );
+ }
+ }
+
+ /**
+ * opening element in MODE_LI
+ * process elements of arrays.
+ *
+ * Example:
+ * <exif:ISOSpeedRatings> <rdf:Seq> <rdf:li>64</rdf:li>
+ * </rdf:Seq> </exif:ISOSpeedRatings>
+ * This method is called when we hit the <rdf:li> element.
+ *
+ * @param $elm String: namespace . ' ' . tagname
+ * @param $attribs Array: Attributes. (needed for BAGSTRUCTS)
+ * @throws MWException if gets a tag other than <rdf:li>
+ */
+ private function startElementModeLi( $elm, $attribs ) {
+ if ( ( $elm ) !== self::NS_RDF . ' li' ) {
+ throw new MWException( "<rdf:li> expected but got $elm." );
+ }
+
+ if ( !isset( $this->mode[1] ) ) {
+ // This should never ever ever happen. Checking for it
+ // to be paranoid.
+ throw new MWException( 'In mode Li, but no 2xPrevious mode!' );
+ }
+
+ if ( $this->mode[1] === self::MODE_BAGSTRUCT ) {
+ // This list item contains a compound (STRUCT) value.
+ array_unshift( $this->mode, self::MODE_STRUCT );
+ array_unshift( $this->curItem, $elm );
+ $this->processingArray = true;
+
+ if ( !isset( $this->curItem[1] ) ) {
+ // be paranoid.
+ throw new MWException( 'Can not find parent of BAGSTRUCT.' );
+ }
+ list( $curNS, $curTag ) = explode( ' ', $this->curItem[1] );
+ $this->ancestorStruct = isset( $this->items[$curNS][$curTag]['map_name'] )
+ ? $this->items[$curNS][$curTag]['map_name'] : $curTag;
+
+ $this->doAttribs( $attribs );
+
+ } else {
+ // Normal BAG or SEQ containing simple values.
+ array_unshift( $this->mode, self::MODE_SIMPLE );
+ // need to add curItem[0] on again since one is for the specific item
+ // and one is for the entire group.
+ array_unshift( $this->curItem, $this->curItem[0] );
+ $this->processingArray = true;
+ }
+
+ }
+
+ /**
+ * Opening element in MODE_LI_LANG.
+ * process elements of language alternatives
+ *
+ * Example:
+ * <dc:title> <rdf:Alt> <rdf:li xml:lang="x-default">My house
+ * </rdf:li> </rdf:Alt> </dc:title>
+ *
+ * This method is called when we hit the <rdf:li> element.
+ *
+ * @param $elm String namespace . ' ' . tag
+ * @param $attribs array array of elements (most importantly xml:lang)
+ * @throws MWException if gets a tag other than <rdf:li> or if no xml:lang
+ */
+ private function startElementModeLiLang( $elm, $attribs ) {
+ if ( $elm !== self::NS_RDF . ' li' ) {
+ throw new MWException( __METHOD__ . " <rdf:li> expected but got $elm." );
+ }
+ if ( !isset( $attribs[ self::NS_XML . ' lang'] )
+ || !preg_match( '/^[-A-Za-z0-9]{2,}$/D', $attribs[ self::NS_XML . ' lang' ] ) )
+ {
+ throw new MWException( __METHOD__
+ . " <rdf:li> did not contain, or has invalid xml:lang attribute in lang alternative" );
+ }
+
+ // Lang is case-insensitive.
+ $this->itemLang = strtolower( $attribs[ self::NS_XML . ' lang' ] );
+
+ // need to add curItem[0] on again since one is for the specific item
+ // and one is for the entire group.
+ array_unshift( $this->curItem, $this->curItem[0] );
+ array_unshift( $this->mode, self::MODE_SIMPLE );
+ $this->processingArray = true;
+ }
+
+ /**
+ * Hits an opening element.
+ * Generally just calls a helper based on what MODE we're in.
+ * Also does some initial set up for the wrapper element
+ *
+ * @param $parser XMLParser
+ * @param $elm String namespace <space> element
+ * @param $attribs Array attribute name => value
+ */
+ function startElement( $parser, $elm, $attribs ) {
+
+ if ( $elm === self::NS_RDF . ' RDF'
+ || $elm === 'adobe:ns:meta/ xmpmeta'
+ || $elm === 'adobe:ns:meta/ xapmeta')
+ {
+ /* ignore. */
+ return;
+ } elseif ( $elm === self::NS_RDF . ' Description' ) {
+ if ( count( $this->mode ) === 0 ) {
+ // outer rdf:desc
+ array_unshift( $this->mode, self::MODE_INITIAL );
+ }
+ } elseif ( $elm === self::NS_RDF . ' type' ) {
+ // This doesn't support rdf:type properly.
+ // In practise I have yet to see a file that
+ // uses this element, however it is mentioned
+ // on page 25 of part 1 of the xmp standard.
+ //
+ // also it seems as if exiv2 and exiftool do not support
+ // this either (That or I misunderstand the standard)
+ wfDebugLog( 'XMP', __METHOD__ . ' Encountered <rdf:type> which isn\'t currently supported' );
+ }
+
+ if ( strpos( $elm, ' ' ) === false ) {
+ // This probably shouldn't happen.
+ wfDebugLog( 'XMP', __METHOD__ . " Encountered <$elm> which has no namespace. Skipping." );
+ return;
+ }
+
+ list( $ns, $tag ) = explode( ' ', $elm, 2 );
+
+ if ( count( $this->mode ) === 0 ) {
+ // This should not happen.
+ throw new MWException('Error extracting XMP, '
+ . "encountered <$elm> with no mode" );
+ }
+
+ switch( $this->mode[0] ) {
+ case self::MODE_IGNORE:
+ $this->startElementModeIgnore( $elm );
+ break;
+ case self::MODE_SIMPLE:
+ $this->startElementModeSimple( $elm, $attribs );
+ break;
+ case self::MODE_INITIAL:
+ $this->startElementModeInitial( $ns, $tag, $attribs );
+ break;
+ case self::MODE_STRUCT:
+ $this->startElementModeStruct( $ns, $tag, $attribs );
+ break;
+ case self::MODE_BAG:
+ case self::MODE_BAGSTRUCT:
+ $this->startElementModeBag( $elm );
+ break;
+ case self::MODE_SEQ:
+ $this->startElementModeSeq( $elm );
+ break;
+ case self::MODE_LANG:
+ $this->startElementModeLang( $elm );
+ break;
+ case self::MODE_LI_LANG:
+ $this->startElementModeLiLang( $elm, $attribs );
+ break;
+ case self::MODE_LI:
+ $this->startElementModeLi( $elm, $attribs );
+ break;
+ case self::MODE_QDESC:
+ $this->startElementModeQDesc( $elm );
+ break;
+ default:
+ throw new MWException( 'StartElement in unknown mode: ' . $this->mode[0] );
+ break;
+ }
+ }
+
+ /**
+ * Process attributes.
+ * Simple values can be stored as either a tag or attribute
+ *
+ * Often the initial <rdf:Description> tag just has all the simple
+ * properties as attributes.
+ *
+ * Example:
+ * <rdf:Description rdf:about="" xmlns:exif="http://ns.adobe.com/exif/1.0/" exif:DigitalZoomRatio="0/10">
+ *
+ * @param $attribs Array attribute=>value array.
+ */
+ private function doAttribs( $attribs ) {
+
+ // first check for rdf:parseType attribute, as that can change
+ // how the attributes are interperted.
+
+ if ( isset( $attribs[self::NS_RDF . ' parseType'] )
+ && $attribs[self::NS_RDF . ' parseType'] === 'Resource'
+ && $this->mode[0] === self::MODE_SIMPLE )
+ {
+ // this is equivalent to having an inner rdf:Description
+ $this->mode[0] = self::MODE_QDESC;
+ }
+ foreach ( $attribs as $name => $val ) {
+
+
+ if ( strpos( $name, ' ' ) === false ) {
+ // This shouldn't happen, but so far some old software forgets namespace
+ // on rdf:about.
+ wfDebugLog( 'XMP', __METHOD__ . ' Encountered non-namespaced attribute: '
+ . " $name=\"$val\". Skipping. " );
+ continue;
+ }
+ list( $ns, $tag ) = explode( ' ', $name, 2 );
+ if ( $ns === self::NS_RDF ) {
+ if ( $tag === 'value' || $tag === 'resource' ) {
+ // resource is for url.
+ // value attribute is a weird way of just putting the contents.
+ $this->char( $this->xmlParser, $val );
+ }
+ } elseif ( isset( $this->items[$ns][$tag] ) ) {
+ if ( $this->mode[0] === self::MODE_SIMPLE ) {
+ throw new MWException( __METHOD__
+ . " $ns:$tag found as attribute where not allowed" );
+ }
+ $this->saveValue( $ns, $tag, $val );
+ } else {
+ wfDebugLog( 'XMP', __METHOD__ . " Ignoring unrecognized element <$ns:$tag>." );
+ }
+ }
+ }
+
+ /**
+ * Given an extracted value, save it to results array
+ *
+ * note also uses $this->ancestorStruct and
+ * $this->processingArray to determine what name to
+ * save the value under. (in addition to $tag).
+ *
+ * @param $ns String namespace of tag this is for
+ * @param $tag String tag name
+ * @param $val String value to save
+ */
+ private function saveValue( $ns, $tag, $val ) {
+
+ $info =& $this->items[$ns][$tag];
+ $finalName = isset( $info['map_name'] )
+ ? $info['map_name'] : $tag;
+ if ( isset( $info['validate'] ) ) {
+ $validate = is_array( $info['validate'] ) ? $info['validate']
+ : array( 'XMPValidate', $info['validate'] );
+
+ if ( is_callable( $validate ) ) {
+ call_user_func_array( $validate, array( $info, &$val, true ) );
+ // the reasoning behind using &$val instead of using the return value
+ // is to be consistent between here and validating structures.
+ if ( is_null( $val ) ) {
+ wfDebugLog( 'XMP', __METHOD__ . " <$ns:$tag> failed validation." );
+ return;
+ }
+ } else {
+ wfDebugLog( 'XMP', __METHOD__ . " Validation function for $finalName ("
+ . $validate[0] . '::' . $validate[1] . '()) is not callable.' );
+ }
+ }
+
+ if ( $this->ancestorStruct && $this->processingArray ) {
+ // Aka both an array and a struct. ( self::MODE_BAGSTRUCT )
+ $this->results['xmp-' . $info['map_group']][$this->ancestorStruct][][$finalName] = $val;
+ } elseif ( $this->ancestorStruct ) {
+ $this->results['xmp-' . $info['map_group']][$this->ancestorStruct][$finalName] = $val;
+ } elseif ( $this->processingArray ) {
+ if ( $this->itemLang === false ) {
+ // normal array
+ $this->results['xmp-' . $info['map_group']][$finalName][] = $val;
+ } else {
+ // lang array.
+ $this->results['xmp-' . $info['map_group']][$finalName][$this->itemLang] = $val;
+ }
+ } else {
+ $this->results['xmp-' . $info['map_group']][$finalName] = $val;
+ }
+ }
+}
diff --git a/includes/media/XMPInfo.php b/includes/media/XMPInfo.php
new file mode 100644
index 00000000..1d580ff7
--- /dev/null
+++ b/includes/media/XMPInfo.php
@@ -0,0 +1,1139 @@
+<?php
+/**
+* This class is just a container for a big array
+* used by XMPReader to determine which XMP items to
+* extract.
+*/
+class XMPInfo {
+
+ /** get the items array
+ * @return Array XMP item configuration array.
+ */
+ public static function getItems ( ) {
+ if( !self::$ranHooks ) {
+ // This is for if someone makes a custom metadata extension.
+ // For example, a medical wiki might want to decode DICOM xmp properties.
+ wfRunHooks('XMPGetInfo', Array(&self::$items));
+ self::$ranHooks = true; // Only want to do this once.
+ }
+ return self::$items;
+ }
+
+ static private $ranHooks = false;
+
+ /**
+ * XMPInfo::$items keeps a list of all the items
+ * we are interested to extract, as well as
+ * information about the item like what type
+ * it is.
+ *
+ * Format is an array of namespaces,
+ * each containing an array of tags
+ * each tag is an array of information about the
+ * tag, including:
+ * * map_group - what group (used for precedence during conflicts)
+ * * mode - What type of item (self::MODE_SIMPLE usually, see above for all values)
+ * * validate - method to validate input. Could also post-process the input. A string value is assumed to be a static method of XMPValidate. Can also take a array( 'className', 'methodName' ).
+ * * choices - array of potential values (format of 'value' => true ). Only used with validateClosed
+ * * rangeLow and rangeHigh - alternative to choices for numeric ranges. Again for validateClosed only.
+ * * children - for MODE_STRUCT items, allowed children.
+ * * structPart - Indicates that this element can only appear as a member of a structure.
+ *
+ * currently this just has a bunch of exif values as this class is only half-done
+ */
+
+ static private $items = array(
+ 'http://ns.adobe.com/exif/1.0/' => array(
+ 'ApertureValue' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'BrightnessValue' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'CompressedBitsPerPixel' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'DigitalZoomRatio' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'ExposureBiasValue' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'ExposureIndex' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'ExposureTime' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'FlashEnergy' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational',
+ ),
+ 'FNumber' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'FocalLength' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'FocalPlaneXResolution' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'FocalPlaneYResolution' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'GPSAltitude' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational',
+ ),
+ 'GPSDestBearing' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'GPSDestDistance' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'GPSDOP' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'GPSImgDirection' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'GPSSpeed' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'GPSTrack' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'MaxApertureValue' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'ShutterSpeedValue' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ 'SubjectDistance' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational'
+ ),
+ /* Flash */
+ 'Flash' => array(
+ 'mode' => XMPReader::MODE_STRUCT,
+ 'children' => array(
+ 'Fired' => true,
+ 'Function' => true,
+ 'Mode' => true,
+ 'RedEyeMode' => true,
+ 'Return' => true,
+ ),
+ 'validate' => 'validateFlash',
+ 'map_group' => 'exif',
+ ),
+ 'Fired' => array(
+ 'map_group' => 'exif',
+ 'validate' => 'validateBoolean',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ 'Function' => array(
+ 'map_group' => 'exif',
+ 'validate' => 'validateBoolean',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ 'Mode' => array(
+ 'map_group' => 'exif',
+ 'validate' => 'validateClosed',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'choices' => array( '0' => true, '1' => true,
+ '2' => true, '3' => true ),
+ 'structPart'=> true,
+ ),
+ 'Return' => array(
+ 'map_group' => 'exif',
+ 'validate' => 'validateClosed',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'choices' => array( '0' => true,
+ '2' => true, '3' => true ),
+ 'structPart'=> true,
+ ),
+ 'RedEyeMode' => array(
+ 'map_group' => 'exif',
+ 'validate' => 'validateBoolean',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ /* End Flash */
+ 'ISOSpeedRatings' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SEQ,
+ 'validate' => 'validateInteger'
+ ),
+ /* end rational things */
+ 'ColorSpace' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '1' => true, '65535' => true ),
+ ),
+ 'ComponentsConfiguration' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SEQ,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '1' => true, '2' => true, '3' => true, '4' => true,
+ '5' => true, '6' => true )
+ ),
+ 'Contrast' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '0' => true, '1' => true, '2' => true )
+ ),
+ 'CustomRendered' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '0' => true, '1' => true )
+ ),
+ 'DateTimeOriginal' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateDate',
+ ),
+ 'DateTimeDigitized' => array( /* xmp:CreateDate */
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateDate',
+ ),
+ /* todo: there might be interesting information in
+ * exif:DeviceSettingDescription, but need to find an
+ * example
+ */
+ 'ExifVersion' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'ExposureMode' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'rangeLow' => 0,
+ 'rangeHigh' => 2,
+ ),
+ 'ExposureProgram' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'rangeLow' => 0,
+ 'rangeHigh' => 8,
+ ),
+ 'FileSource' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '3' => true )
+ ),
+ 'FlashpixVersion' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'FocalLengthIn35mmFilm' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateInteger',
+ ),
+ 'FocalPlaneResolutionUnit' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '2' => true, '3' => true ),
+ ),
+ 'GainControl' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'rangeLow' => 0,
+ 'rangeHigh' => 4,
+ ),
+ /* this value is post-processed out later */
+ 'GPSAltitudeRef' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '0' => true, '1' => true ),
+ ),
+ 'GPSAreaInformation' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'GPSDestBearingRef' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( 'T' => true, 'M' => true ),
+ ),
+ 'GPSDestDistanceRef' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( 'K' => true, 'M' => true,
+ 'N' => true ),
+ ),
+ 'GPSDestLatitude' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateGPS',
+ ),
+ 'GPSDestLongitude' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateGPS',
+ ),
+ 'GPSDifferential' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '0' => true, '1' => true ),
+ ),
+ 'GPSImgDirectionRef' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( 'T' => true, 'M' => true ),
+ ),
+ 'GPSLatitude' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateGPS',
+ ),
+ 'GPSLongitude' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateGPS',
+ ),
+ 'GPSMapDatum' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'GPSMeasureMode' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '2' => true, '3' => true )
+ ),
+ 'GPSProcessingMethod' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'GPSSatellites' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'GPSSpeedRef' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( 'K' => true, 'M' => true,
+ 'N' => true ),
+ ),
+ 'GPSStatus' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( 'A' => true, 'V' => true )
+ ),
+ 'GPSTimeStamp' => array(
+ 'map_group' => 'exif',
+ // Note: in exif, GPSDateStamp does not include
+ // the time, where here it does.
+ 'map_name' => 'GPSDateStamp',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateDate',
+ ),
+ 'GPSTrackRef' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( 'T' => true, 'M' => true )
+ ),
+ 'GPSVersionID' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'ImageUniqueID' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'LightSource' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ /* can't use a range, as it skips... */
+ 'choices' => array( '0' => true, '1' => true,
+ '2' => true, '3' => true, '4' => true,
+ '9' => true, '10' => true, '11' => true,
+ '12' => true, '13' => true,
+ '14' => true, '15' => true,
+ '17' => true, '18' => true,
+ '19' => true, '20' => true,
+ '21' => true, '22' => true,
+ '23' => true, '24' => true,
+ '255' => true,
+ ),
+ ),
+ 'MeteringMode' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'rangeLow' => 0,
+ 'rangeHigh' => 6,
+ 'choices' => array( '255' => true ),
+ ),
+ /* Pixel(X|Y)Dimension are rather useless, but for
+ * completeness since we do it with exif.
+ */
+ 'PixelXDimension' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateInteger',
+ ),
+ 'PixelYDimension' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateInteger',
+ ),
+ 'Saturation' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'rangeLow' => 0,
+ 'rangeHigh' => 2,
+ ),
+ 'SceneCaptureType' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'rangeLow' => 0,
+ 'rangeHigh' => 3,
+ ),
+ 'SceneType' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '1' => true ),
+ ),
+ // Note, 6 is not valid SensingMethod.
+ 'SensingMethod' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'rangeLow' => 1,
+ 'rangeHigh' => 5,
+ 'choices' => array( '7' => true, 8 => true ),
+ ),
+ 'Sharpness' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'rangeLow' => 0,
+ 'rangeHigh' => 2,
+ ),
+ 'SpectralSensitivity' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ // This tag should perhaps be displayed to user better.
+ 'SubjectArea' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SEQ,
+ 'validate' => 'validateInteger',
+ ),
+ 'SubjectDistanceRange' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'rangeLow' => 0,
+ 'rangeHigh' => 3,
+ ),
+ 'SubjectLocation' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SEQ,
+ 'validate' => 'validateInteger',
+ ),
+ 'UserComment' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_LANG,
+ ),
+ 'WhiteBalance' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '0' => true, '1' => true )
+ ),
+ ),
+ 'http://ns.adobe.com/tiff/1.0/' => array(
+ 'Artist' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'BitsPerSample' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SEQ,
+ 'validate' => 'validateInteger',
+ ),
+ 'Compression' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '1' => true, '6' => true ),
+ ),
+ /* this prop should not be used in XMP. dc:rights is the correct prop */
+ 'Copyright' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_LANG,
+ ),
+ 'DateTime' => array( /* proper prop is xmp:ModifyDate */
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateDate',
+ ),
+ 'ImageDescription' => array( /* proper one is dc:description */
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_LANG,
+ ),
+ 'ImageLength' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateInteger',
+ ),
+ 'ImageWidth' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateInteger',
+ ),
+ 'Make' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'Model' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ /**** Do not extract this property
+ * It interferes with auto exif rotation.
+ * 'Orientation' => array(
+ * 'map_group' => 'exif',
+ * 'mode' => XMPReader::MODE_SIMPLE,
+ * 'validate' => 'validateClosed',
+ * 'choices' => array( '1' => true, '2' => true, '3' => true, '4' => true, 5 => true,
+ * '6' => true, '7' => true, '8' => true ),
+ *),
+ ******/
+ 'PhotometricInterpretation' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '2' => true, '6' => true ),
+ ),
+ 'PlanerConfiguration' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '1' => true, '2' => true ),
+ ),
+ 'PrimaryChromaticities' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SEQ,
+ 'validate' => 'validateRational',
+ ),
+ 'ReferenceBlackWhite' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SEQ,
+ 'validate' => 'validateRational',
+ ),
+ 'ResolutionUnit' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '2' => true, '3' => true ),
+ ),
+ 'SamplesPerPixel' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateInteger',
+ ),
+ 'Software' => array( /* see xmp:CreatorTool */
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ /* ignore TransferFunction */
+ 'WhitePoint' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SEQ,
+ 'validate' => 'validateRational',
+ ),
+ 'XResolution' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational',
+ ),
+ 'YResolution' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRational',
+ ),
+ 'YCbCrCoefficients' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SEQ,
+ 'validate' => 'validateRational',
+ ),
+ 'YCbCrPositioning' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '1' => true, '2' => true ),
+ ),
+ 'YCbCrSubSampling' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SEQ,
+ 'validate' => 'validateClosed',
+ 'choices' => array( '1' => true, '2' => true ),
+ ),
+ ),
+ 'http://ns.adobe.com/exif/1.0/aux/' => array(
+ 'Lens' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'SerialNumber' => array(
+ 'map_group' => 'exif',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'OwnerName' => array(
+ 'map_group' => 'exif',
+ 'map_name' => 'CameraOwnerName',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ ),
+ 'http://purl.org/dc/elements/1.1/' => array(
+ 'title' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'ObjectName',
+ 'mode' => XMPReader::MODE_LANG
+ ),
+ 'description' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'ImageDescription',
+ 'mode' => XMPReader::MODE_LANG
+ ),
+ 'contributor' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'dc-contributor',
+ 'mode' => XMPReader::MODE_BAG
+ ),
+ 'coverage' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'dc-coverage',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'creator' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'Artist', //map with exif Artist, iptc byline (2:80)
+ 'mode' => XMPReader::MODE_SEQ,
+ ),
+ 'date' => array(
+ 'map_group' => 'general',
+ // Note, not mapped with other date properties, as this type of date is
+ // non-specific: "A point or period of time associated with an event in
+ // the lifecycle of the resource"
+ 'map_name' => 'dc-date',
+ 'mode' => XMPReader::MODE_SEQ,
+ 'validate' => 'validateDate',
+ ),
+ /* Do not extract dc:format, as we've got better ways to determine mimetype */
+ 'identifier' => array(
+ 'map_group' => 'deprecated',
+ 'map_name' => 'Identifier',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'language' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'LanguageCode', /* mapped with iptc 2:135 */
+ 'mode' => XMPReader::MODE_BAG,
+ 'validate' => 'validateLangCode',
+ ),
+ 'publisher' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'dc-publisher',
+ 'mode' => XMPReader::MODE_BAG,
+ ),
+ // for related images/resources
+ 'relation' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'dc-relation',
+ 'mode' => XMPReader::MODE_BAG,
+ ),
+ 'rights' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'Copyright',
+ 'mode' => XMPReader::MODE_LANG,
+ ),
+ // Note: source is not mapped with iptc source, since iptc
+ // source describes the source of the image in terms of a person
+ // who provided the image, where this is to describe an image that the
+ // current one is based on.
+ 'source' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'dc-source',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'subject' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'Keywords', /* maps to iptc 2:25 */
+ 'mode' => XMPReader::MODE_BAG,
+ ),
+ 'type' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'dc-type',
+ 'mode' => XMPReader::MODE_BAG,
+ ),
+ ),
+ 'http://ns.adobe.com/xap/1.0/' => array(
+ 'CreateDate' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'DateTimeDigitized',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateDate',
+ ),
+ 'CreatorTool' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'Software',
+ 'mode' => XMPReader::MODE_SIMPLE
+ ),
+ 'Identifier' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_BAG,
+ ),
+ 'Label' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'ModifyDate' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'map_name' => 'DateTime',
+ 'validate' => 'validateDate',
+ ),
+ 'MetadataDate' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ // map_name to be consistent with other date names.
+ 'map_name' => 'DateTimeMetadata',
+ 'validate' => 'validateDate',
+ ),
+ 'Nickname' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'Rating' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateRating',
+ ),
+ ),
+ 'http://ns.adobe.com/xap/1.0/rights/' => array(
+ 'Certificate' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'RightsCertificate',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'Marked' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'Copyrighted',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateBoolean',
+ ),
+ 'Owner' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'CopyrightOwner',
+ 'mode' => XMPReader::MODE_BAG,
+ ),
+ // this seems similar to dc:rights.
+ 'UsageTerms' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_LANG,
+ ),
+ 'WebStatement' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ ),
+ // XMP media management.
+ 'http://ns.adobe.com/xap/1.0/mm/' => array(
+ // if we extract the exif UniqueImageID, might
+ // as well do this too.
+ 'OriginalDocumentID' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ // It might also be useful to do xmpMM:LastURL
+ // and xmpMM:DerivedFrom as you can potentially,
+ // get the url of this document/source for this
+ // document. However whats more likely is you'd
+ // get a file:// url for the path of the doc,
+ // which is somewhat of a privacy issue.
+ ),
+ 'http://creativecommons.org/ns#' => array(
+ 'license' => array(
+ 'map_name' => 'LicenseUrl',
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'morePermissions' => array(
+ 'map_name' => 'MorePermissionsUrl',
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'attributionURL' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'AttributionUrl',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'attributionName' => array(
+ 'map_group' => 'general',
+ 'map_name' => 'PreferredAttributionName',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ ),
+ //Note, this property affects how jpeg metadata is extracted.
+ 'http://ns.adobe.com/xmp/note/' => array(
+ 'HasExtendedXMP' => array(
+ 'map_group' => 'special',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ ),
+ /* Note, in iptc schemas, the legacy properties are denoted
+ * as deprecated, since other properties should used instead,
+ * and properties marked as deprecated in the standard are
+ * are marked as general here as they don't have replacements
+ */
+ 'http://ns.adobe.com/photoshop/1.0/' => array(
+ 'City' => array(
+ 'map_group' => 'deprecated',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'map_name' => 'CityDest',
+ ),
+ 'Country' => array(
+ 'map_group' => 'deprecated',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'map_name' => 'CountryDest',
+ ),
+ 'State' => array(
+ 'map_group' => 'deprecated',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'map_name' => 'ProvinceOrStateDest',
+ ),
+ 'DateCreated' => array(
+ 'map_group' => 'deprecated',
+ // marking as deprecated as the xmp prop preferred
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'map_name' => 'DateTimeOriginal',
+ 'validate' => 'validateDate',
+ // note this prop is an XMP, not IPTC date
+ ),
+ 'CaptionWriter' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'map_name' => 'Writer',
+ ),
+ 'Instructions' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'map_name' => 'SpecialInstructions',
+ ),
+ 'TransmissionReference' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'map_name' => 'OriginalTransmissionRef',
+ ),
+ 'AuthorsPosition' => array(
+ /* This corresponds with 2:85
+ * By-line Title, which needs to be
+ * handled weirdly to correspond
+ * with iptc/exif. */
+ 'map_group' => 'special',
+ 'mode' => XMPReader::MODE_SIMPLE
+ ),
+ 'Credit' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'Source' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'Urgency' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'Category' => array(
+ // Note, this prop is deprecated, but in general
+ // group since it doesn't have a replacement.
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'map_name' => 'iimCategory',
+ ),
+ 'SupplementalCategories' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_BAG,
+ 'map_name' => 'iimSupplementalCategory',
+ ),
+ 'Headline' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE
+ ),
+ ),
+ 'http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/' => array(
+ 'CountryCode' => array(
+ 'map_group' => 'deprecated',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'map_name' => 'CountryCodeDest',
+ ),
+ 'IntellectualGenre' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ // Note, this is a six digit code.
+ // See: http://cv.iptc.org/newscodes/scene/
+ // Since these aren't really all that common,
+ // we just show the number.
+ 'Scene' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_BAG,
+ 'validate' => 'validateInteger',
+ 'map_name' => 'SceneCode',
+ ),
+ /* Note: SubjectCode should be an 8 ascii digits.
+ * it is not really an integer (has leading 0's,
+ * cannot have a +/- sign), but validateInteger
+ * will let it through.
+ */
+ 'SubjectCode' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_BAG,
+ 'map_name' => 'SubjectNewsCode',
+ 'validate' => 'validateInteger'
+ ),
+ 'Location' => array(
+ 'map_group' => 'deprecated',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'map_name' => 'SublocationDest',
+ ),
+ 'CreatorContactInfo' => array(
+ /* Note this maps to 2:118 in iim
+ * (Contact) field. However those field
+ * types are slightly different - 2:118
+ * is free form text field, where this
+ * is more structured.
+ */
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_STRUCT,
+ 'map_name' => 'Contact',
+ 'children' => array(
+ 'CiAdrExtadr' => true,
+ 'CiAdrCity' => true,
+ 'CiAdrCtry' => true,
+ 'CiEmailWork' => true,
+ 'CiTelWork' => true,
+ 'CiAdrPcode' => true,
+ 'CiAdrRegion' => true,
+ 'CiUrlWork' => true,
+ ),
+ ),
+ 'CiAdrExtadr' => array( /* address */
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ 'CiAdrCity' => array( /* city */
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ 'CiAdrCtry' => array( /* country */
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ 'CiEmailWork' => array( /* email (possibly separated by ',') */
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ 'CiTelWork' => array( /* telephone */
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ 'CiAdrPcode' => array( /* postal code */
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ 'CiAdrRegion' => array( /* province/state */
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ 'CiUrlWork' => array( /* url. Multiple may be separated by comma. */
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ /* End contact info struct properties */
+ ),
+ 'http://iptc.org/std/Iptc4xmpExt/2008-02-29/' => array(
+ 'Event' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ ),
+ 'OrganisationInImageName' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_BAG,
+ 'map_name' => 'OrganisationInImage'
+ ),
+ 'PersonInImage' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_BAG,
+ ),
+ 'MaxAvailHeight' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateInteger',
+ 'map_name' => 'OriginalImageHeight',
+ ),
+ 'MaxAvailWidth' => array(
+ 'map_group' => 'general',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'validate' => 'validateInteger',
+ 'map_name' => 'OriginalImageWidth',
+ ),
+ // LocationShown and LocationCreated are handled
+ // specially because they are hierarchical, but we
+ // also want to merge with the old non-hierarchical.
+ 'LocationShown' => array(
+ 'map_group' => 'special',
+ 'mode' => XMPReader::MODE_BAGSTRUCT,
+ 'children' => array(
+ 'WorldRegion' => true,
+ 'CountryCode' => true, /* iso code */
+ 'CountryName' => true,
+ 'ProvinceState' => true,
+ 'City' => true,
+ 'Sublocation' => true,
+ ),
+ ),
+ 'LocationCreated' => array(
+ 'map_group' => 'special',
+ 'mode' => XMPReader::MODE_BAGSTRUCT,
+ 'children' => array(
+ 'WorldRegion' => true,
+ 'CountryCode' => true, /* iso code */
+ 'CountryName' => true,
+ 'ProvinceState' => true,
+ 'City' => true,
+ 'Sublocation' => true,
+ ),
+ ),
+ 'WorldRegion' => array(
+ 'map_group' => 'special',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ 'CountryCode' => array(
+ 'map_group' => 'special',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ 'CountryName' => array(
+ 'map_group' => 'special',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ 'map_name' => 'Country',
+ ),
+ 'ProvinceState' => array(
+ 'map_group' => 'special',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ 'map_name' => 'ProvinceOrState',
+ ),
+ 'City' => array(
+ 'map_group' => 'special',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+ 'Sublocation' => array(
+ 'map_group' => 'special',
+ 'mode' => XMPReader::MODE_SIMPLE,
+ 'structPart'=> true,
+ ),
+
+ /* Other props that might be interesting but
+ * Not currently extracted:
+ * ArtworkOrObject, (info about objects in picture)
+ * DigitalSourceType
+ * RegistryId
+ */
+ ),
+
+ /* Plus props we might want to consider:
+ * (Note: some of these have unclear/incomplete definitions
+ * from the iptc4xmp standard).
+ * ImageSupplier (kind of like iptc source field)
+ * ImageSupplierId (id code for image from supplier)
+ * CopyrightOwner
+ * ImageCreator
+ * Licensor
+ * Various model release fields
+ * Property release fields.
+ */
+ );
+}
diff --git a/includes/media/XMPValidate.php b/includes/media/XMPValidate.php
new file mode 100644
index 00000000..0f1d375c
--- /dev/null
+++ b/includes/media/XMPValidate.php
@@ -0,0 +1,323 @@
+<?php
+/**
+* This contains some static methods for
+* validating XMP properties. See XMPInfo and XMPReader classes.
+*
+* Each of these functions take the same parameters
+* * an info array which is a subset of the XMPInfo::items array
+* * A value (passed as reference) to validate. This can be either a
+* simple value or an array
+* * A boolean to determine if this is validating a simple or complex values
+*
+* It should be noted that when an array is being validated, typically the validation
+* function is called once for each value, and then once at the end for the entire array.
+*
+* These validation functions can also be used to modify the data. See the gps and flash one's
+* for example.
+*
+* @see http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart1.pdf starting at pg 28
+* @see http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart2.pdf starting at pg 11
+*/
+class XMPValidate {
+ /**
+ * function to validate boolean properties ( True or False )
+ *
+ * @param $info Array information about current property
+ * @param &$val Mixed current value to validate
+ * @param $standalone Boolean if this is a simple property or array
+ */
+ public static function validateBoolean( $info, &$val, $standalone ) {
+ if ( !$standalone ) {
+ // this only validates standalone properties, not arrays, etc
+ return;
+ }
+ if ( $val !== 'True' && $val !== 'False' ) {
+ wfDebugLog( 'XMP', __METHOD__ . " Expected True or False but got $val" );
+ $val = null;
+ }
+
+ }
+
+ /**
+ * function to validate rational properties ( 12/10 )
+ *
+ * @param $info Array information about current property
+ * @param &$val Mixed current value to validate
+ * @param $standalone Boolean if this is a simple property or array
+ */
+ public static function validateRational( $info, &$val, $standalone ) {
+ if ( !$standalone ) {
+ // this only validates standalone properties, not arrays, etc
+ return;
+ }
+ if ( !preg_match( '/^(?:-?\d+)\/(?:\d+[1-9]|[1-9]\d*)$/D', $val ) ) {
+ wfDebugLog( 'XMP', __METHOD__ . " Expected rational but got $val" );
+ $val = null;
+ }
+
+ }
+
+ /**
+ * function to validate rating properties -1, 0-5
+ *
+ * if its outside of range put it into range.
+ *
+ * @see MWG spec
+ * @param $info Array information about current property
+ * @param &$val Mixed current value to validate
+ * @param $standalone Boolean if this is a simple property or array
+ */
+ public static function validateRating( $info, &$val, $standalone ) {
+ if ( !$standalone ) {
+ // this only validates standalone properties, not arrays, etc
+ return;
+ }
+ if ( !preg_match( '/^[-+]?\d*(?:\.?\d*)$/D', $val )
+ || !is_numeric($val)
+ ) {
+ wfDebugLog( 'XMP', __METHOD__ . " Expected rating but got $val" );
+ $val = null;
+ return;
+ } else {
+ $nVal = (float) $val;
+ if ( $nVal < 0 ) {
+ // We do < 0 here instead of < -1 here, since
+ // the values between 0 and -1 are also illegal
+ // as -1 is meant as a special reject rating.
+ wfDebugLog( 'XMP', __METHOD__ . " Rating too low, setting to -1 (Rejected)");
+ $val = '-1';
+ return;
+ }
+ if ( $nVal > 5 ) {
+ wfDebugLog( 'XMP', __METHOD__ . " Rating too high, setting to 5");
+ $val = '5';
+ return;
+ }
+ }
+ }
+
+ /**
+ * function to validate integers
+ *
+ * @param $info Array information about current property
+ * @param &$val Mixed current value to validate
+ * @param $standalone Boolean if this is a simple property or array
+ */
+ public static function validateInteger( $info, &$val, $standalone ) {
+ if ( !$standalone ) {
+ // this only validates standalone properties, not arrays, etc
+ return;
+ }
+ if ( !preg_match( '/^[-+]?\d+$/D', $val ) ) {
+ wfDebugLog( 'XMP', __METHOD__ . " Expected integer but got $val" );
+ $val = null;
+ }
+
+ }
+
+ /**
+ * function to validate properties with a fixed number of allowed
+ * choices. (closed choice)
+ *
+ * @param $info Array information about current property
+ * @param &$val Mixed current value to validate
+ * @param $standalone Boolean if this is a simple property or array
+ */
+ public static function validateClosed( $info, &$val, $standalone ) {
+ if ( !$standalone ) {
+ // this only validates standalone properties, not arrays, etc
+ return;
+ }
+
+ //check if its in a numeric range
+ $inRange = false;
+ if ( isset( $info['rangeLow'] )
+ && isset( $info['rangeHigh'] )
+ && is_numeric( $val )
+ && ( intval( $val ) <= $info['rangeHigh'] )
+ && ( intval( $val ) >= $info['rangeLow'] )
+ ) {
+ $inRange = true;
+ }
+
+ if ( !isset( $info['choices'][$val] ) && !$inRange ) {
+ wfDebugLog( 'XMP', __METHOD__ . " Expected closed choice, but got $val" );
+ $val = null;
+ }
+ }
+
+ /**
+ * function to validate and modify flash structure
+ *
+ * @param $info Array information about current property
+ * @param &$val Mixed current value to validate
+ * @param $standalone Boolean if this is a simple property or array
+ */
+ public static function validateFlash( $info, &$val, $standalone ) {
+ if ( $standalone ) {
+ // this only validates flash structs, not individual properties
+ return;
+ }
+ if ( !( isset( $val['Fired'] )
+ && isset( $val['Function'] )
+ && isset( $val['Mode'] )
+ && isset( $val['RedEyeMode'] )
+ && isset( $val['Return'] )
+ ) ) {
+ wfDebugLog( 'XMP', __METHOD__ . " Flash structure did not have all the required components" );
+ $val = null;
+ } else {
+ $val = ( "\0" | ( $val['Fired'] === 'True' )
+ | ( intval( $val['Return'] ) << 1 )
+ | ( intval( $val['Mode'] ) << 3 )
+ | ( ( $val['Function'] === 'True' ) << 5 )
+ | ( ( $val['RedEyeMode'] === 'True' ) << 6 ) );
+ }
+ }
+
+ /**
+ * function to validate LangCode properties ( en-GB, etc )
+ *
+ * This is just a naive check to make sure it somewhat looks like a lang code.
+ *
+ * @see rfc 3066
+ * @see http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart1.pdf page 30 (section 8.2.2.5)
+ *
+ * @param $info Array information about current property
+ * @param &$val Mixed current value to validate
+ * @param $standalone Boolean if this is a simple property or array
+ */
+ public static function validateLangCode( $info, &$val, $standalone ) {
+ if ( !$standalone ) {
+ // this only validates standalone properties, not arrays, etc
+ return;
+ }
+ if ( !preg_match( '/^[-A-Za-z0-9]{2,}$/D', $val) ) {
+ //this is a rather naive check.
+ wfDebugLog( 'XMP', __METHOD__ . " Expected Lang code but got $val" );
+ $val = null;
+ }
+
+ }
+
+ /**
+ * function to validate date properties, and convert to Exif format.
+ *
+ * @param $info Array information about current property
+ * @param &$val Mixed current value to validate. Converts to TS_EXIF as a side-effect.
+ * @param $standalone Boolean if this is a simple property or array
+ */
+ public static function validateDate( $info, &$val, $standalone ) {
+ if ( !$standalone ) {
+ // this only validates standalone properties, not arrays, etc
+ return;
+ }
+ $res = array();
+ if ( !preg_match(
+ /* ahh! scary regex... */
+ '/^([0-3]\d{3})(?:-([01]\d)(?:-([0-3]\d)(?:T([0-2]\d):([0-6]\d)(?::([0-6]\d)(?:\.\d+)?)?([-+]\d{2}:\d{2}|Z)?)?)?)?$/D'
+ , $val, $res)
+ ) {
+ wfDebugLog( 'XMP', __METHOD__ . " Expected date but got $val" );
+ $val = null;
+ } else {
+ /*
+ * $res is formatted as follows:
+ * 0 -> full date.
+ * 1 -> year, 2-> month, 3-> day, 4-> hour, 5-> minute, 6->second
+ * 7-> Timezone specifier (Z or something like +12:30 )
+ * many parts are optional, some aren't. For example if you specify
+ * minute, you must specify hour, day, month, and year but not second or TZ.
+ */
+
+ /*
+ * First of all, if year = 0000, Something is wrongish,
+ * so don't extract. This seems to happen when
+ * some programs convert between metadata formats.
+ */
+ if ( $res[1] === '0000' ) {
+ wfDebugLog( 'XMP', __METHOD__ . " Invalid date (year 0): $val" );
+ $val = null;
+ return;
+ }
+ //if month, etc unspecified, full out as 01.
+ $res[2] = isset( $res[2] ) ? $res[2] : '01'; //month
+ $res[3] = isset( $res[3] ) ? $res[3] : '01'; //day
+ if ( !isset( $res[4] ) ) { //hour
+ //just have the year month day
+ $val = $res[1] . ':' . $res[2] . ':' . $res[3];
+ return;
+ }
+ //if hour is set, so is minute or regex above will fail.
+ //Extra check for empty string necessary due to TZ but no second case.
+ $res[6] = isset( $res[6] ) && $res[6] != '' ? $res[6] : '00';
+
+ if ( !isset( $res[7] ) || $res[7] === 'Z' ) {
+ $val = $res[1] . ':' . $res[2] . ':' . $res[3]
+ . ' ' . $res[4] . ':' . $res[5] . ':' . $res[6];
+ return;
+ }
+
+ //do timezone processing. We've already done the case that tz = Z.
+
+ $unix = wfTimestamp( TS_UNIX, $res[1] . $res[2] . $res[3] . $res[4] . $res[5] . $res[6] );
+ $offset = intval( substr( $res[7], 1, 2 ) ) * 60 * 60;
+ $offset += intval( substr( $res[7], 4, 2 ) ) * 60;
+ if ( substr( $res[7], 0, 1 ) === '-' ) {
+ $offset = -$offset;
+ }
+ $val = wfTimestamp( TS_EXIF, $unix + $offset );
+ }
+
+ }
+
+ /** function to validate, and more importantly
+ * translate the XMP DMS form of gps coords to
+ * the decimal form we use.
+ *
+ * @see http://www.adobe.com/devnet/xmp/pdfs/XMPSpecificationPart2.pdf
+ * section 1.2.7.4 on page 23
+ *
+ * @param $info Array unused (info about prop)
+ * @param &$val String GPS string in either DDD,MM,SSk or
+ * or DDD,MM.mmk form
+ * @param $standalone Boolean if its a simple prop (should always be true)
+ */
+ public static function validateGPS ( $info, &$val, $standalone ) {
+ if ( !$standalone ) {
+ return;
+ }
+
+ $m = array();
+ if ( preg_match(
+ '/(\d{1,3}),(\d{1,2}),(\d{1,2})([NWSE])/D',
+ $val, $m )
+ ) {
+ $coord = intval( $m[1] );
+ $coord += intval( $m[2] ) * (1/60);
+ $coord += intval( $m[3] ) * (1/3600);
+ if ( $m[4] === 'S' || $m[4] === 'W' ) {
+ $coord = -$coord;
+ }
+ $val = $coord;
+ return;
+ } elseif ( preg_match(
+ '/(\d{1,3}),(\d{1,2}(?:.\d*)?)([NWSE])/D',
+ $val, $m )
+ ) {
+ $coord = intval( $m[1] );
+ $coord += floatval( $m[2] ) * (1/60);
+ if ( $m[3] === 'S' || $m[3] === 'W' ) {
+ $coord = -$coord;
+ }
+ $val = $coord;
+ return;
+
+ } else {
+ wfDebugLog( 'XMP', __METHOD__
+ . " Expected GPSCoordinate, but got $val." );
+ $val = null;
+ return;
+ }
+ }
+}
diff --git a/includes/mime.info b/includes/mime.info
index 3a32f5d9..d705715d 100644
--- a/includes/mime.info
+++ b/includes/mime.info
@@ -10,6 +10,7 @@ image/gif [BITMAP]
image/png image/x-png [BITMAP]
image/ief [BITMAP]
image/jpeg [BITMAP]
+image/jp2 [BITMAP]
image/xbm [BITMAP]
image/tiff [BITMAP]
image/x-icon [BITMAP]
@@ -102,4 +103,4 @@ application/vnd.ms-excel.sheet.macroEnabled.12 [OFFICE]
application/vnd.ms-excel.template.macroEnabled.12 [OFFICE]
application/vnd.ms-excel.addin.macroEnabled.12 [OFFICE]
application/vnd.ms-excel.sheet.binary.macroEnabled.12 [OFFICE]
-
+application/acad application/x-acad application/autocad_dwg image/x-dwg application/dwg application/x-dwg application/x-autocad image/vnd.dwg drawing/dwg [DRAWING]
diff --git a/includes/mime.types b/includes/mime.types
index bf8c6dd1..9e640322 100644
--- a/includes/mime.types
+++ b/includes/mime.types
@@ -1,3 +1,4 @@
+application/acad dwg
application/andrew-inset ez
application/mac-binhex40 hqx
application/mac-compactpro cpt
@@ -79,6 +80,7 @@ image/bmp bmp
image/cgm cgm
image/gif gif
image/ief ief
+image/jp2 j2k jp2 jpg2
image/jpeg jpeg jpg jpe
image/png png apng
image/svg+xml svg
diff --git a/includes/normal/Makefile b/includes/normal/Makefile
index 69ff3da1..f0c340f6 100644
--- a/includes/normal/Makefile
+++ b/includes/normal/Makefile
@@ -5,8 +5,8 @@
## when the data was generated from a previous version.
#BASE=http://www.unicode.org/Public/UNIDATA
-# Explicitly using Unicode 5.1
-BASE=http://www.unicode.org/Public/5.1.0/ucd
+# Explicitly using Unicode 6.0
+BASE=http://www.unicode.org/Public/6.0.0/ucd
# Can override to php-cli or php5 or whatevah
PHP=php
@@ -24,21 +24,17 @@ UtfNormalData.inc : UtfNormalGenerate.php UtfNormalUtil.php UnicodeData.txt Comp
Utf8Case.php : Utf8CaseGenerate.php UtfNormalUtil.php UnicodeData.txt
$(PHP) Utf8CaseGenerate.php
-test : testutf8 testclean UtfNormalTest.php UtfNormalData.inc NormalizationTest.txt
+test : testutf8 UtfNormalTest.php UtfNormalData.inc NormalizationTest.txt
$(PHP) UtfNormalTest.php
testutf8 : Utf8Test.php UTF-8-test.txt
$(PHP) Utf8Test.php
-testclean : CleanUpTest.php
- $(PHP) CleanUpTest.php
-
bench : UtfNormalData.inc testdata/washington.txt testdata/berlin.txt testdata/tokyo.txt testdata/young.txt testdata/bulgakov.txt
$(PHP) UtfNormalBench.php
icutest : UtfNormalData.inc NormalizationTest.txt
$(PHP) Utf8Test.php --icu
- $(PHP) CleanUpTest.php --icu
$(PHP) UtfNormalTest.php --icu
icubench : UtfNormalData.inc testdata/washington.txt testdata/berlin.txt testdata/tokyo.txt testdata/young.txt testdata/bulgakov.txt
diff --git a/includes/normal/Utf8Case.php b/includes/normal/Utf8Case.php
index 89b1a892..abc56e4c 100644
--- a/includes/normal/Utf8Case.php
+++ b/includes/normal/Utf8Case.php
@@ -215,6 +215,8 @@ $wikiUpperChars = array(
'ȱ' => 'Ȱ',
'ȳ' => 'Ȳ',
'ȼ' => 'Ȼ',
+ 'È¿' => 'â±¾',
+ 'ɀ' => 'Ɀ',
'É‚' => 'É',
'ɇ' => 'Ɇ',
'ɉ' => 'Ɉ',
@@ -223,6 +225,7 @@ $wikiUpperChars = array(
'É' => 'ÉŽ',
'É' => 'Ɐ',
'É‘' => 'â±­',
+ 'É’' => 'â±°',
'É“' => 'Æ',
'ɔ' => 'Ɔ',
'ɖ' => 'Ɖ',
@@ -231,6 +234,7 @@ $wikiUpperChars = array(
'É›' => 'Æ',
'É ' => 'Æ“',
'É£' => 'Æ”',
+ 'É¥' => 'êž',
'ɨ' => 'Ɨ',
'É©' => 'Æ–',
'É«' => 'â±¢',
@@ -453,6 +457,8 @@ $wikiUpperChars = array(
'ÔŸ' => 'Ôž',
'Ô¡' => 'Ô ',
'Ô£' => 'Ô¢',
+ 'Ô¥' => 'Ô¤',
+ 'Ô§' => 'Ô¦',
'Õ¡' => 'Ô±',
'Õ¢' => 'Ô²',
'Õ£' => 'Ô³',
@@ -863,6 +869,8 @@ $wikiUpperChars = array(
'ⳟ' => 'Ⳟ',
'ⳡ' => 'Ⳡ',
'â³£' => 'â³¢',
+ 'ⳬ' => 'Ⳬ',
+ 'â³®' => 'â³­',
'â´€' => 'á‚ ',
'â´' => 'á‚¡',
'â´‚' => 'á‚¢',
@@ -917,6 +925,7 @@ $wikiUpperChars = array(
'ꙛ' => 'Ꙛ',
'ê™' => 'Ꙝ',
'ꙟ' => 'Ꙟ',
+ 'ꙡ' => 'Ꙡ',
'ꙣ' => 'Ꙣ',
'ꙥ' => 'Ꙥ',
'ꙧ' => 'Ꙧ',
@@ -981,6 +990,12 @@ $wikiUpperChars = array(
'êž…' => 'êž„',
'ꞇ' => 'Ꞇ',
'ꞌ' => 'Ꞌ',
+ 'êž‘' => 'êž',
+ 'êž¡' => 'êž ',
+ 'ꞣ' => 'Ꞣ',
+ 'ꞥ' => 'Ꞥ',
+ 'ꞧ' => 'Ꞧ',
+ 'ꞩ' => 'Ꞩ',
'ï½' => 'A',
'b' => 'B',
'c' => 'C',
@@ -1477,6 +1492,8 @@ $wikiLowerChars = array(
'Ôž' => 'ÔŸ',
'Ô ' => 'Ô¡',
'Ô¢' => 'Ô£',
+ 'Ô¤' => 'Ô¥',
+ 'Ô¦' => 'Ô§',
'Ô±' => 'Õ¡',
'Ô²' => 'Õ¢',
'Ô³' => 'Õ£',
@@ -1877,8 +1894,11 @@ $wikiLowerChars = array(
'â±­' => 'É‘',
'Ɱ' => 'ɱ',
'Ɐ' => 'É',
+ 'â±°' => 'É’',
'â±²' => 'â±³',
'Ⱶ' => 'ⱶ',
+ 'â±¾' => 'È¿',
+ 'Ɀ' => 'ɀ',
'â²€' => 'â²',
'Ⲃ' => 'ⲃ',
'Ⲅ' => 'ⲅ',
@@ -1929,6 +1949,8 @@ $wikiLowerChars = array(
'Ⳟ' => 'ⳟ',
'Ⳡ' => 'ⳡ',
'â³¢' => 'â³£',
+ 'Ⳬ' => 'ⳬ',
+ 'â³­' => 'â³®',
'Ꙁ' => 'ê™',
'Ꙃ' => 'ꙃ',
'Ꙅ' => 'ꙅ',
@@ -1945,6 +1967,7 @@ $wikiLowerChars = array(
'Ꙛ' => 'ꙛ',
'Ꙝ' => 'ê™',
'Ꙟ' => 'ꙟ',
+ 'Ꙡ' => 'ꙡ',
'Ꙣ' => 'ꙣ',
'Ꙥ' => 'ꙥ',
'Ꙧ' => 'ꙧ',
@@ -2010,6 +2033,13 @@ $wikiLowerChars = array(
'êž„' => 'êž…',
'Ꞇ' => 'ꞇ',
'Ꞌ' => 'ꞌ',
+ 'êž' => 'É¥',
+ 'êž' => 'êž‘',
+ 'êž ' => 'êž¡',
+ 'Ꞣ' => 'ꞣ',
+ 'Ꞥ' => 'ꞥ',
+ 'Ꞧ' => 'ꞧ',
+ 'Ꞩ' => 'ꞩ',
'A' => 'ï½',
'B' => 'b',
'C' => 'c',
diff --git a/includes/normal/Utf8CaseGenerate.php b/includes/normal/Utf8CaseGenerate.php
index 8dbff1db..368d0bcd 100644
--- a/includes/normal/Utf8CaseGenerate.php
+++ b/includes/normal/Utf8CaseGenerate.php
@@ -29,6 +29,7 @@ if( php_sapi_name() != 'cli' ) {
die( "Run me from the command line please.\n" );
}
+require_once 'UtfNormalDefines.php';
require_once 'UtfNormalUtil.php';
$in = fopen("UnicodeData.txt", "rt" );
diff --git a/includes/normal/Utf8Test.php b/includes/normal/Utf8Test.php
index 53108bc4..6eae6e72 100644
--- a/includes/normal/Utf8Test.php
+++ b/includes/normal/Utf8Test.php
@@ -26,6 +26,8 @@
*/
/** */
+
+require_once 'UtfNormalDefines.php';
require_once 'UtfNormalUtil.php';
require_once 'UtfNormal.php';
mb_internal_encoding( "utf-8" );
diff --git a/includes/normal/UtfNormal.php b/includes/normal/UtfNormal.php
index 116fb8f0..919278c9 100644
--- a/includes/normal/UtfNormal.php
+++ b/includes/normal/UtfNormal.php
@@ -28,8 +28,6 @@
* @defgroup UtfNormal UtfNormal
*/
-require_once dirname(__FILE__).'/UtfNormalUtil.php';
-
/**
* For using the ICU wrapper
*/
@@ -210,7 +208,7 @@ class UtfNormal {
UtfNormal::loadData();
$len = strlen( $string );
for( $i = 0; $i < $len; $i++ ) {
- $c = $string{$i};
+ $c = $string[$i];
$n = ord( $c );
if( $n < 0x80 ) {
continue;
@@ -301,7 +299,7 @@ class UtfNormal {
foreach( $matches[1] as $str ) {
$chunk = strlen( $str );
- if( $str{0} < "\x80" ) {
+ if( $str[0] < "\x80" ) {
# ASCII chunk: guaranteed to be valid UTF-8
# and in normal form C, so skip over it.
$base += $chunk;
@@ -319,13 +317,13 @@ class UtfNormal {
$len = $chunk + 1; # Counting down is faster. I'm *so* sorry.
for( $i = -1; --$len; ) {
- $remaining = $tailBytes[$c = $str{++$i}];
+ $remaining = $tailBytes[$c = $str[++$i]];
if( $remaining ) {
# UTF-8 head byte!
$sequence = $head = $c;
do {
# Look for the defined number of tail bytes...
- if( --$len && ( $c = $str{++$i} ) >= "\x80" && $c < "\xc0" ) {
+ if( --$len && ( $c = $str[++$i] ) >= "\x80" && $c < "\xc0" ) {
# Legal tail bytes are nice.
$sequence .= $c;
} else {
@@ -513,7 +511,7 @@ class UtfNormal {
$len = strlen( $string );
$out = '';
for( $i = 0; $i < $len; $i++ ) {
- $c = $string{$i};
+ $c = $string[$i];
$n = ord( $c );
if( $n < 0x80 ) {
# ASCII chars never decompose
@@ -540,9 +538,9 @@ class UtfNormal {
# A lookup table would be slightly faster,
# but adds a lot of memory & disk needs.
#
- $index = ( (ord( $c{0} ) & 0x0f) << 12
- | (ord( $c{1} ) & 0x3f) << 6
- | (ord( $c{2} ) & 0x3f) )
+ $index = ( (ord( $c[0] ) & 0x0f) << 12
+ | (ord( $c[1] ) & 0x3f) << 6
+ | (ord( $c[2] ) & 0x3f) )
- UNICODE_HANGUL_FIRST;
$l = intval( $index / UNICODE_HANGUL_NCOUNT );
$v = intval( ($index % UNICODE_HANGUL_NCOUNT) / UNICODE_HANGUL_TCOUNT);
@@ -575,7 +573,7 @@ class UtfNormal {
$combiners = array();
$lastClass = -1;
for( $i = 0; $i < $len; $i++ ) {
- $c = $string{$i};
+ $c = $string[$i];
$n = ord( $c );
if( $n >= 0x80 ) {
if( $n >= 0xf0 ) {
@@ -631,7 +629,7 @@ class UtfNormal {
$x1 = ord(substr(UTF8_HANGUL_VBASE,0,1));
$x2 = ord(substr(UTF8_HANGUL_TEND,0,1));
for( $i = 0; $i < $len; $i++ ) {
- $c = $string{$i};
+ $c = $string[$i];
$n = ord( $c );
if( $n < 0x80 ) {
# No combining characters here...
@@ -691,8 +689,8 @@ class UtfNormal {
#
#$lIndex = utf8ToCodepoint( $startChar ) - UNICODE_HANGUL_LBASE;
#$vIndex = utf8ToCodepoint( $c ) - UNICODE_HANGUL_VBASE;
- $lIndex = ord( $startChar{2} ) - 0x80;
- $vIndex = ord( $c{2} ) - 0xa1;
+ $lIndex = ord( $startChar[2] ) - 0x80;
+ $vIndex = ord( $c[2] ) - 0xa1;
$hangulPoint = UNICODE_HANGUL_FIRST +
UNICODE_HANGUL_TCOUNT *
@@ -710,23 +708,23 @@ class UtfNormal {
$startChar <= UTF8_HANGUL_LAST &&
!$lastHangul ) {
# $tIndex = utf8ToCodepoint( $c ) - UNICODE_HANGUL_TBASE;
- $tIndex = ord( $c{2} ) - 0xa7;
- if( $tIndex < 0 ) $tIndex = ord( $c{2} ) - 0x80 + (0x11c0 - 0x11a7);
+ $tIndex = ord( $c[2] ) - 0xa7;
+ if( $tIndex < 0 ) $tIndex = ord( $c[2] ) - 0x80 + (0x11c0 - 0x11a7);
# Increment the code point by $tIndex, without
# the function overhead of decoding and recoding UTF-8
#
- $tail = ord( $startChar{2} ) + $tIndex;
+ $tail = ord( $startChar[2] ) + $tIndex;
if( $tail > 0xbf ) {
$tail -= 0x40;
- $mid = ord( $startChar{1} ) + 1;
+ $mid = ord( $startChar[1] ) + 1;
if( $mid > 0xbf ) {
- $startChar{0} = chr( ord( $startChar{0} ) + 1 );
+ $startChar[0] = chr( ord( $startChar[0] ) + 1 );
$mid -= 0x40;
}
- $startChar{1} = chr( $mid );
+ $startChar[1] = chr( $mid );
}
- $startChar{2} = chr( $tail );
+ $startChar[2] = chr( $tail );
# If there's another jamo char after this, *don't* try to merge it.
$lastHangul = 1;
@@ -755,7 +753,7 @@ class UtfNormal {
$len = strlen( $string );
$out = '';
for( $i = 0; $i < $len; $i++ ) {
- $out .= $string{$i};
+ $out .= $string[$i];
}
return $out;
}
diff --git a/includes/normal/UtfNormalBench.php b/includes/normal/UtfNormalBench.php
index 2229dbb4..944c4435 100644
--- a/includes/normal/UtfNormalBench.php
+++ b/includes/normal/UtfNormalBench.php
@@ -28,6 +28,7 @@ if( isset( $_SERVER['argv'] ) && in_array( '--icu', $_SERVER['argv'] ) ) {
dl( 'php_utfnormal.so' );
}
+require_once 'UtfNormalDefines.php';
require_once 'UtfNormalUtil.php';
require_once 'UtfNormal.php';
diff --git a/includes/normal/UtfNormalData.inc b/includes/normal/UtfNormalData.inc
index 1d6b4680..68cc1ef4 100644
--- a/includes/normal/UtfNormalData.inc
+++ b/includes/normal/UtfNormalData.inc
@@ -5,9 +5,9 @@
*
* @file
*/
-
-UtfNormal::$utfCombiningClass = unserialize( 'a:501:{s:2:"Ì€";i:230;s:2:"Ì";i:230;s:2:"Ì‚";i:230;s:2:"̃";i:230;s:2:"Ì„";i:230;s:2:"Ì…";i:230;s:2:"̆";i:230;s:2:"̇";i:230;s:2:"̈";i:230;s:2:"̉";i:230;s:2:"ÌŠ";i:230;s:2:"Ì‹";i:230;s:2:"ÌŒ";i:230;s:2:"Ì";i:230;s:2:"ÌŽ";i:230;s:2:"Ì";i:230;s:2:"Ì";i:230;s:2:"Ì‘";i:230;s:2:"Ì’";i:230;s:2:"Ì“";i:230;s:2:"Ì”";i:230;s:2:"Ì•";i:232;s:2:"Ì–";i:220;s:2:"Ì—";i:220;s:2:"̘";i:220;s:2:"Ì™";i:220;s:2:"Ìš";i:232;s:2:"Ì›";i:216;s:2:"Ìœ";i:220;s:2:"Ì";i:220;s:2:"Ìž";i:220;s:2:"ÌŸ";i:220;s:2:"Ì ";i:220;s:2:"Ì¡";i:202;s:2:"Ì¢";i:202;s:2:"Ì£";i:220;s:2:"̤";i:220;s:2:"Ì¥";i:220;s:2:"̦";i:220;s:2:"̧";i:202;s:2:"̨";i:202;s:2:"Ì©";i:220;s:2:"̪";i:220;s:2:"Ì«";i:220;s:2:"̬";i:220;s:2:"Ì­";i:220;s:2:"Ì®";i:220;s:2:"̯";i:220;s:2:"Ì°";i:220;s:2:"̱";i:220;s:2:"̲";i:220;s:2:"̳";i:220;s:2:"Ì´";i:1;s:2:"̵";i:1;s:2:"̶";i:1;s:2:"Ì·";i:1;s:2:"̸";i:1;s:2:"̹";i:220;s:2:"̺";i:220;s:2:"Ì»";i:220;s:2:"̼";i:220;s:2:"̽";i:230;s:2:"̾";i:230;s:2:"Ì¿";i:230;s:2:"Í€";i:230;s:2:"Í";i:230;s:2:"Í‚";i:230;s:2:"̓";i:230;s:2:"Í„";i:230;s:2:"Í…";i:240;s:2:"͆";i:230;s:2:"͇";i:220;s:2:"͈";i:220;s:2:"͉";i:220;s:2:"ÍŠ";i:230;s:2:"Í‹";i:230;s:2:"ÍŒ";i:230;s:2:"Í";i:220;s:2:"ÍŽ";i:220;s:2:"Í";i:230;s:2:"Í‘";i:230;s:2:"Í’";i:230;s:2:"Í“";i:220;s:2:"Í”";i:220;s:2:"Í•";i:220;s:2:"Í–";i:220;s:2:"Í—";i:230;s:2:"͘";i:232;s:2:"Í™";i:220;s:2:"Íš";i:220;s:2:"Í›";i:230;s:2:"Íœ";i:233;s:2:"Í";i:234;s:2:"Íž";i:234;s:2:"ÍŸ";i:233;s:2:"Í ";i:234;s:2:"Í¡";i:234;s:2:"Í¢";i:233;s:2:"Í£";i:230;s:2:"ͤ";i:230;s:2:"Í¥";i:230;s:2:"ͦ";i:230;s:2:"ͧ";i:230;s:2:"ͨ";i:230;s:2:"Í©";i:230;s:2:"ͪ";i:230;s:2:"Í«";i:230;s:2:"ͬ";i:230;s:2:"Í­";i:230;s:2:"Í®";i:230;s:2:"ͯ";i:230;s:2:"Òƒ";i:230;s:2:"Ò„";i:230;s:2:"Ò…";i:230;s:2:"Ò†";i:230;s:2:"Ò‡";i:230;s:2:"Ö‘";i:220;s:2:"Ö’";i:230;s:2:"Ö“";i:230;s:2:"Ö”";i:230;s:2:"Ö•";i:230;s:2:"Ö–";i:220;s:2:"Ö—";i:230;s:2:"Ö˜";i:230;s:2:"Ö™";i:230;s:2:"Öš";i:222;s:2:"Ö›";i:220;s:2:"Öœ";i:230;s:2:"Ö";i:230;s:2:"Öž";i:230;s:2:"ÖŸ";i:230;s:2:"Ö ";i:230;s:2:"Ö¡";i:230;s:2:"Ö¢";i:220;s:2:"Ö£";i:220;s:2:"Ö¤";i:220;s:2:"Ö¥";i:220;s:2:"Ö¦";i:220;s:2:"Ö§";i:220;s:2:"Ö¨";i:230;s:2:"Ö©";i:230;s:2:"Öª";i:220;s:2:"Ö«";i:230;s:2:"Ö¬";i:230;s:2:"Ö­";i:222;s:2:"Ö®";i:228;s:2:"Ö¯";i:230;s:2:"Ö°";i:10;s:2:"Ö±";i:11;s:2:"Ö²";i:12;s:2:"Ö³";i:13;s:2:"Ö´";i:14;s:2:"Öµ";i:15;s:2:"Ö¶";i:16;s:2:"Ö·";i:17;s:2:"Ö¸";i:18;s:2:"Ö¹";i:19;s:2:"Öº";i:19;s:2:"Ö»";i:20;s:2:"Ö¼";i:21;s:2:"Ö½";i:22;s:2:"Ö¿";i:23;s:2:"×";i:24;s:2:"ׂ";i:25;s:2:"ׄ";i:230;s:2:"×…";i:220;s:2:"ׇ";i:18;s:2:"Ø";i:230;s:2:"Ø‘";i:230;s:2:"Ø’";i:230;s:2:"Ø“";i:230;s:2:"Ø”";i:230;s:2:"Ø•";i:230;s:2:"Ø–";i:230;s:2:"Ø—";i:230;s:2:"ؘ";i:30;s:2:"Ø™";i:31;s:2:"Øš";i:32;s:2:"Ù‹";i:27;s:2:"ÙŒ";i:28;s:2:"Ù";i:29;s:2:"ÙŽ";i:30;s:2:"Ù";i:31;s:2:"Ù";i:32;s:2:"Ù‘";i:33;s:2:"Ù’";i:34;s:2:"Ù“";i:230;s:2:"Ù”";i:230;s:2:"Ù•";i:220;s:2:"Ù–";i:220;s:2:"Ù—";i:230;s:2:"Ù˜";i:230;s:2:"Ù™";i:230;s:2:"Ùš";i:230;s:2:"Ù›";i:230;s:2:"Ùœ";i:220;s:2:"Ù";i:230;s:2:"Ùž";i:230;s:2:"Ù°";i:35;s:2:"Û–";i:230;s:2:"Û—";i:230;s:2:"Û˜";i:230;s:2:"Û™";i:230;s:2:"Ûš";i:230;s:2:"Û›";i:230;s:2:"Ûœ";i:230;s:2:"ÛŸ";i:230;s:2:"Û ";i:230;s:2:"Û¡";i:230;s:2:"Û¢";i:230;s:2:"Û£";i:220;s:2:"Û¤";i:230;s:2:"Û§";i:230;s:2:"Û¨";i:230;s:2:"Ûª";i:220;s:2:"Û«";i:230;s:2:"Û¬";i:230;s:2:"Û­";i:220;s:2:"Ü‘";i:36;s:2:"Ü°";i:230;s:2:"ܱ";i:220;s:2:"ܲ";i:230;s:2:"ܳ";i:230;s:2:"Ü´";i:220;s:2:"ܵ";i:230;s:2:"ܶ";i:230;s:2:"Ü·";i:220;s:2:"ܸ";i:220;s:2:"ܹ";i:220;s:2:"ܺ";i:230;s:2:"Ü»";i:220;s:2:"ܼ";i:220;s:2:"ܽ";i:230;s:2:"ܾ";i:220;s:2:"Ü¿";i:230;s:2:"Ý€";i:230;s:2:"Ý";i:230;s:2:"Ý‚";i:220;s:2:"݃";i:230;s:2:"Ý„";i:220;s:2:"Ý…";i:230;s:2:"݆";i:220;s:2:"݇";i:230;s:2:"݈";i:220;s:2:"݉";i:230;s:2:"ÝŠ";i:230;s:2:"ß«";i:230;s:2:"߬";i:230;s:2:"ß­";i:230;s:2:"ß®";i:230;s:2:"߯";i:230;s:2:"ß°";i:230;s:2:"ß±";i:230;s:2:"ß²";i:220;s:2:"ß³";i:230;s:3:"़";i:7;s:3:"à¥";i:9;s:3:"॑";i:230;s:3:"॒";i:220;s:3:"॓";i:230;s:3:"॔";i:230;s:3:"়";i:7;s:3:"à§";i:9;s:3:"਼";i:7;s:3:"à©";i:9;s:3:"઼";i:7;s:3:"à«";i:9;s:3:"଼";i:7;s:3:"à­";i:9;s:3:"à¯";i:9;s:3:"à±";i:9;s:3:"ౕ";i:84;s:3:"à±–";i:91;s:3:"಼";i:7;s:3:"à³";i:9;s:3:"àµ";i:9;s:3:"à·Š";i:9;s:3:"ุ";i:103;s:3:"ู";i:103;s:3:"ฺ";i:9;s:3:"่";i:107;s:3:"้";i:107;s:3:"๊";i:107;s:3:"๋";i:107;s:3:"ຸ";i:118;s:3:"ູ";i:118;s:3:"່";i:122;s:3:"້";i:122;s:3:"໊";i:122;s:3:"໋";i:122;s:3:"༘";i:220;s:3:"༙";i:220;s:3:"༵";i:220;s:3:"༷";i:220;s:3:"༹";i:216;s:3:"ཱ";i:129;s:3:"ི";i:130;s:3:"ུ";i:132;s:3:"ེ";i:130;s:3:"ཻ";i:130;s:3:"ོ";i:130;s:3:"ཽ";i:130;s:3:"ྀ";i:130;s:3:"ྂ";i:230;s:3:"ྃ";i:230;s:3:"྄";i:9;s:3:"྆";i:230;s:3:"྇";i:230;s:3:"࿆";i:220;s:3:"့";i:7;s:3:"္";i:9;s:3:"်";i:9;s:3:"á‚";i:220;s:3:"áŸ";i:230;s:3:"᜔";i:9;s:3:"᜴";i:9;s:3:"្";i:9;s:3:"áŸ";i:230;s:3:"ᢩ";i:228;s:3:"᤹";i:222;s:3:"᤺";i:230;s:3:"᤻";i:220;s:3:"ᨗ";i:230;s:3:"ᨘ";i:220;s:3:"᬴";i:7;s:3:"á­„";i:9;s:3:"á­«";i:230;s:3:"á­¬";i:220;s:3:"á­­";i:230;s:3:"á­®";i:230;s:3:"á­¯";i:230;s:3:"á­°";i:230;s:3:"á­±";i:230;s:3:"á­²";i:230;s:3:"á­³";i:230;s:3:"᮪";i:9;s:3:"á°·";i:7;s:3:"á·€";i:230;s:3:"á·";i:230;s:3:"á·‚";i:220;s:3:"á·ƒ";i:230;s:3:"á·„";i:230;s:3:"á·…";i:230;s:3:"á·†";i:230;s:3:"á·‡";i:230;s:3:"á·ˆ";i:230;s:3:"á·‰";i:230;s:3:"á·Š";i:220;s:3:"á·‹";i:230;s:3:"á·Œ";i:230;s:3:"á·";i:234;s:3:"á·Ž";i:214;s:3:"á·";i:220;s:3:"á·";i:202;s:3:"á·‘";i:230;s:3:"á·’";i:230;s:3:"á·“";i:230;s:3:"á·”";i:230;s:3:"á·•";i:230;s:3:"á·–";i:230;s:3:"á·—";i:230;s:3:"á·˜";i:230;s:3:"á·™";i:230;s:3:"á·š";i:230;s:3:"á·›";i:230;s:3:"á·œ";i:230;s:3:"á·";i:230;s:3:"á·ž";i:230;s:3:"á·Ÿ";i:230;s:3:"á· ";i:230;s:3:"á·¡";i:230;s:3:"á·¢";i:230;s:3:"á·£";i:230;s:3:"á·¤";i:230;s:3:"á·¥";i:230;s:3:"á·¦";i:230;s:3:"á·¾";i:230;s:3:"á·¿";i:220;s:3:"âƒ";i:230;s:3:"⃑";i:230;s:3:"⃒";i:1;s:3:"⃓";i:1;s:3:"⃔";i:230;s:3:"⃕";i:230;s:3:"⃖";i:230;s:3:"⃗";i:230;s:3:"⃘";i:1;s:3:"⃙";i:1;s:3:"⃚";i:1;s:3:"⃛";i:230;s:3:"⃜";i:230;s:3:"⃡";i:230;s:3:"⃥";i:1;s:3:"⃦";i:1;s:3:"⃧";i:230;s:3:"⃨";i:220;s:3:"⃩";i:230;s:3:"⃪";i:1;s:3:"⃫";i:1;s:3:"⃬";i:220;s:3:"⃭";i:220;s:3:"⃮";i:220;s:3:"⃯";i:220;s:3:"⃰";i:230;s:3:"â· ";i:230;s:3:"â·¡";i:230;s:3:"â·¢";i:230;s:3:"â·£";i:230;s:3:"â·¤";i:230;s:3:"â·¥";i:230;s:3:"â·¦";i:230;s:3:"â·§";i:230;s:3:"â·¨";i:230;s:3:"â·©";i:230;s:3:"â·ª";i:230;s:3:"â·«";i:230;s:3:"â·¬";i:230;s:3:"â·­";i:230;s:3:"â·®";i:230;s:3:"â·¯";i:230;s:3:"â·°";i:230;s:3:"â·±";i:230;s:3:"â·²";i:230;s:3:"â·³";i:230;s:3:"â·´";i:230;s:3:"â·µ";i:230;s:3:"â·¶";i:230;s:3:"â··";i:230;s:3:"â·¸";i:230;s:3:"â·¹";i:230;s:3:"â·º";i:230;s:3:"â·»";i:230;s:3:"â·¼";i:230;s:3:"â·½";i:230;s:3:"â·¾";i:230;s:3:"â·¿";i:230;s:3:"〪";i:218;s:3:"〫";i:228;s:3:"〬";i:232;s:3:"〭";i:222;s:3:"〮";i:224;s:3:"〯";i:224;s:3:"ã‚™";i:8;s:3:"ã‚š";i:8;s:3:"꙯";i:230;s:3:"꙼";i:230;s:3:"꙽";i:230;s:3:"ê †";i:9;s:3:"꣄";i:9;s:3:"꤫";i:220;s:3:"꤬";i:220;s:3:"꤭";i:220;s:3:"꥓";i:9;s:3:"ﬞ";i:26;s:3:"︠";i:230;s:3:"︡";i:230;s:3:"︢";i:230;s:3:"︣";i:230;s:3:"︤";i:230;s:3:"︥";i:230;s:3:"︦";i:230;s:4:"ð‡½";i:220;s:4:"ð¨";i:220;s:4:"ð¨";i:230;s:4:"ð¨¸";i:230;s:4:"ð¨¹";i:1;s:4:"ð¨º";i:220;s:4:"ð¨¿";i:9;s:4:"ð…¥";i:216;s:4:"ð…¦";i:216;s:4:"ð…§";i:1;s:4:"ð…¨";i:1;s:4:"ð…©";i:1;s:4:"ð…­";i:226;s:4:"ð…®";i:216;s:4:"ð…¯";i:216;s:4:"ð…°";i:216;s:4:"ð…±";i:216;s:4:"ð…²";i:216;s:4:"ð…»";i:220;s:4:"ð…¼";i:220;s:4:"ð…½";i:220;s:4:"ð…¾";i:220;s:4:"ð…¿";i:220;s:4:"ð†€";i:220;s:4:"ð†";i:220;s:4:"ð†‚";i:220;s:4:"ð†…";i:230;s:4:"ð††";i:230;s:4:"ð†‡";i:230;s:4:"ð†ˆ";i:230;s:4:"ð†‰";i:230;s:4:"ð†Š";i:220;s:4:"ð†‹";i:220;s:4:"ð†ª";i:230;s:4:"ð†«";i:230;s:4:"ð†¬";i:230;s:4:"ð†­";i:230;s:4:"ð‰‚";i:230;s:4:"ð‰ƒ";i:230;s:4:"ð‰„";i:230;}' );
-UtfNormal::$utfCanonicalComp = unserialize( 'a:1862:{s:3:"AÌ€";s:2:"À";s:3:"AÌ";s:2:"Ã";s:3:"AÌ‚";s:2:"Â";s:3:"Ã";s:2:"Ã";s:3:"Ä";s:2:"Ä";s:3:"AÌŠ";s:2:"Ã…";s:3:"Ç";s:2:"Ç";s:3:"EÌ€";s:2:"È";s:3:"EÌ";s:2:"É";s:3:"EÌ‚";s:2:"Ê";s:3:"Ë";s:2:"Ë";s:3:"IÌ€";s:2:"ÃŒ";s:3:"IÌ";s:2:"Ã";s:3:"IÌ‚";s:2:"ÃŽ";s:3:"Ï";s:2:"Ã";s:3:"Ñ";s:2:"Ñ";s:3:"OÌ€";s:2:"Ã’";s:3:"OÌ";s:2:"Ó";s:3:"OÌ‚";s:2:"Ô";s:3:"Õ";s:2:"Õ";s:3:"Ö";s:2:"Ö";s:3:"UÌ€";s:2:"Ù";s:3:"UÌ";s:2:"Ú";s:3:"UÌ‚";s:2:"Û";s:3:"Ü";s:2:"Ãœ";s:3:"YÌ";s:2:"Ã";s:3:"aÌ€";s:2:"à";s:3:"aÌ";s:2:"á";s:3:"aÌ‚";s:2:"â";s:3:"ã";s:2:"ã";s:3:"ä";s:2:"ä";s:3:"aÌŠ";s:2:"Ã¥";s:3:"ç";s:2:"ç";s:3:"eÌ€";s:2:"è";s:3:"eÌ";s:2:"é";s:3:"eÌ‚";s:2:"ê";s:3:"ë";s:2:"ë";s:3:"iÌ€";s:2:"ì";s:3:"iÌ";s:2:"í";s:3:"iÌ‚";s:2:"î";s:3:"ï";s:2:"ï";s:3:"ñ";s:2:"ñ";s:3:"oÌ€";s:2:"ò";s:3:"oÌ";s:2:"ó";s:3:"oÌ‚";s:2:"ô";s:3:"õ";s:2:"õ";s:3:"ö";s:2:"ö";s:3:"uÌ€";s:2:"ù";s:3:"uÌ";s:2:"ú";s:3:"uÌ‚";s:2:"û";s:3:"ü";s:2:"ü";s:3:"yÌ";s:2:"ý";s:3:"ÿ";s:2:"ÿ";s:3:"AÌ„";s:2:"Ä€";s:3:"aÌ„";s:2:"Ä";s:3:"Ă";s:2:"Ä‚";s:3:"ă";s:2:"ă";s:3:"Ą";s:2:"Ä„";s:3:"ą";s:2:"Ä…";s:3:"CÌ";s:2:"Ć";s:3:"cÌ";s:2:"ć";s:3:"CÌ‚";s:2:"Ĉ";s:3:"cÌ‚";s:2:"ĉ";s:3:"Ċ";s:2:"ÄŠ";s:3:"ċ";s:2:"Ä‹";s:3:"CÌŒ";s:2:"ÄŒ";s:3:"cÌŒ";s:2:"Ä";s:3:"DÌŒ";s:2:"ÄŽ";s:3:"dÌŒ";s:2:"Ä";s:3:"EÌ„";s:2:"Ä’";s:3:"eÌ„";s:2:"Ä“";s:3:"Ĕ";s:2:"Ä”";s:3:"ĕ";s:2:"Ä•";s:3:"Ė";s:2:"Ä–";s:3:"ė";s:2:"Ä—";s:3:"Ę";s:2:"Ę";s:3:"ę";s:2:"Ä™";s:3:"EÌŒ";s:2:"Äš";s:3:"eÌŒ";s:2:"Ä›";s:3:"GÌ‚";s:2:"Äœ";s:3:"gÌ‚";s:2:"Ä";s:3:"Ğ";s:2:"Äž";s:3:"ğ";s:2:"ÄŸ";s:3:"Ġ";s:2:"Ä ";s:3:"ġ";s:2:"Ä¡";s:3:"Ģ";s:2:"Ä¢";s:3:"ģ";s:2:"Ä£";s:3:"HÌ‚";s:2:"Ĥ";s:3:"hÌ‚";s:2:"Ä¥";s:3:"Ĩ";s:2:"Ĩ";s:3:"ĩ";s:2:"Ä©";s:3:"IÌ„";s:2:"Ī";s:3:"iÌ„";s:2:"Ä«";s:3:"Ĭ";s:2:"Ĭ";s:3:"ĭ";s:2:"Ä­";s:3:"Į";s:2:"Ä®";s:3:"į";s:2:"į";s:3:"İ";s:2:"Ä°";s:3:"JÌ‚";s:2:"Ä´";s:3:"jÌ‚";s:2:"ĵ";s:3:"Ķ";s:2:"Ķ";s:3:"ķ";s:2:"Ä·";s:3:"LÌ";s:2:"Ĺ";s:3:"lÌ";s:2:"ĺ";s:3:"Ļ";s:2:"Ä»";s:3:"ļ";s:2:"ļ";s:3:"LÌŒ";s:2:"Ľ";s:3:"lÌŒ";s:2:"ľ";s:3:"NÌ";s:2:"Ń";s:3:"nÌ";s:2:"Å„";s:3:"Ņ";s:2:"Å…";s:3:"ņ";s:2:"ņ";s:3:"NÌŒ";s:2:"Ň";s:3:"nÌŒ";s:2:"ň";s:3:"OÌ„";s:2:"ÅŒ";s:3:"oÌ„";s:2:"Å";s:3:"Ŏ";s:2:"ÅŽ";s:3:"ŏ";s:2:"Å";s:3:"OÌ‹";s:2:"Å";s:3:"oÌ‹";s:2:"Å‘";s:3:"RÌ";s:2:"Å”";s:3:"rÌ";s:2:"Å•";s:3:"Ŗ";s:2:"Å–";s:3:"ŗ";s:2:"Å—";s:3:"RÌŒ";s:2:"Ř";s:3:"rÌŒ";s:2:"Å™";s:3:"SÌ";s:2:"Åš";s:3:"sÌ";s:2:"Å›";s:3:"SÌ‚";s:2:"Åœ";s:3:"sÌ‚";s:2:"Å";s:3:"Ş";s:2:"Åž";s:3:"ş";s:2:"ÅŸ";s:3:"SÌŒ";s:2:"Å ";s:3:"sÌŒ";s:2:"Å¡";s:3:"Ţ";s:2:"Å¢";s:3:"ţ";s:2:"Å£";s:3:"TÌŒ";s:2:"Ť";s:3:"tÌŒ";s:2:"Å¥";s:3:"Ũ";s:2:"Ũ";s:3:"ũ";s:2:"Å©";s:3:"UÌ„";s:2:"Ū";s:3:"uÌ„";s:2:"Å«";s:3:"Ŭ";s:2:"Ŭ";s:3:"ŭ";s:2:"Å­";s:3:"UÌŠ";s:2:"Å®";s:3:"uÌŠ";s:2:"ů";s:3:"UÌ‹";s:2:"Å°";s:3:"uÌ‹";s:2:"ű";s:3:"Ų";s:2:"Ų";s:3:"ų";s:2:"ų";s:3:"WÌ‚";s:2:"Å´";s:3:"wÌ‚";s:2:"ŵ";s:3:"YÌ‚";s:2:"Ŷ";s:3:"yÌ‚";s:2:"Å·";s:3:"Ÿ";s:2:"Ÿ";s:3:"ZÌ";s:2:"Ź";s:3:"zÌ";s:2:"ź";s:3:"Ż";s:2:"Å»";s:3:"ż";s:2:"ż";s:3:"ZÌŒ";s:2:"Ž";s:3:"zÌŒ";s:2:"ž";s:3:"OÌ›";s:2:"Æ ";s:3:"oÌ›";s:2:"Æ¡";s:3:"UÌ›";s:2:"Ư";s:3:"uÌ›";s:2:"Æ°";s:3:"AÌŒ";s:2:"Ç";s:3:"aÌŒ";s:2:"ÇŽ";s:3:"IÌŒ";s:2:"Ç";s:3:"iÌŒ";s:2:"Ç";s:3:"OÌŒ";s:2:"Ç‘";s:3:"oÌŒ";s:2:"Ç’";s:3:"UÌŒ";s:2:"Ç“";s:3:"uÌŒ";s:2:"Ç”";s:4:"Ǖ";s:2:"Ç•";s:4:"ǖ";s:2:"Ç–";s:4:"ÃœÌ";s:2:"Ç—";s:4:"üÌ";s:2:"ǘ";s:4:"Ǚ";s:2:"Ç™";s:4:"ǚ";s:2:"Çš";s:4:"Ǜ";s:2:"Ç›";s:4:"ǜ";s:2:"Çœ";s:4:"Ǟ";s:2:"Çž";s:4:"ǟ";s:2:"ÇŸ";s:4:"Ǡ";s:2:"Ç ";s:4:"ǡ";s:2:"Ç¡";s:4:"Ǣ";s:2:"Ç¢";s:4:"ǣ";s:2:"Ç£";s:3:"GÌŒ";s:2:"Ǧ";s:3:"gÌŒ";s:2:"ǧ";s:3:"KÌŒ";s:2:"Ǩ";s:3:"kÌŒ";s:2:"Ç©";s:3:"Ǫ";s:2:"Ǫ";s:3:"ǫ";s:2:"Ç«";s:4:"Ǭ";s:2:"Ǭ";s:4:"Ç«Ì„";s:2:"Ç­";s:4:"Æ·ÌŒ";s:2:"Ç®";s:4:"Ê’ÌŒ";s:2:"ǯ";s:3:"jÌŒ";s:2:"Ç°";s:3:"GÌ";s:2:"Ç´";s:3:"gÌ";s:2:"ǵ";s:3:"NÌ€";s:2:"Ǹ";s:3:"nÌ€";s:2:"ǹ";s:4:"Ã…Ì";s:2:"Ǻ";s:4:"Ã¥Ì";s:2:"Ç»";s:4:"ÆÌ";s:2:"Ǽ";s:4:"æÌ";s:2:"ǽ";s:4:"ØÌ";s:2:"Ǿ";s:4:"øÌ";s:2:"Ç¿";s:3:"AÌ";s:2:"È€";s:3:"aÌ";s:2:"È";s:3:"AÌ‘";s:2:"È‚";s:3:"aÌ‘";s:2:"ȃ";s:3:"EÌ";s:2:"È„";s:3:"eÌ";s:2:"È…";s:3:"EÌ‘";s:2:"Ȇ";s:3:"eÌ‘";s:2:"ȇ";s:3:"IÌ";s:2:"Ȉ";s:3:"iÌ";s:2:"ȉ";s:3:"IÌ‘";s:2:"ÈŠ";s:3:"iÌ‘";s:2:"È‹";s:3:"OÌ";s:2:"ÈŒ";s:3:"oÌ";s:2:"È";s:3:"OÌ‘";s:2:"ÈŽ";s:3:"oÌ‘";s:2:"È";s:3:"RÌ";s:2:"È";s:3:"rÌ";s:2:"È‘";s:3:"RÌ‘";s:2:"È’";s:3:"rÌ‘";s:2:"È“";s:3:"UÌ";s:2:"È”";s:3:"uÌ";s:2:"È•";s:3:"UÌ‘";s:2:"È–";s:3:"uÌ‘";s:2:"È—";s:3:"Ș";s:2:"Ș";s:3:"ș";s:2:"È™";s:3:"Ț";s:2:"Èš";s:3:"ț";s:2:"È›";s:3:"HÌŒ";s:2:"Èž";s:3:"hÌŒ";s:2:"ÈŸ";s:3:"Ȧ";s:2:"Ȧ";s:3:"ȧ";s:2:"ȧ";s:3:"Ȩ";s:2:"Ȩ";s:3:"ȩ";s:2:"È©";s:4:"Ȫ";s:2:"Ȫ";s:4:"ȫ";s:2:"È«";s:4:"Ȭ";s:2:"Ȭ";s:4:"ȭ";s:2:"È­";s:3:"Ȯ";s:2:"È®";s:3:"ȯ";s:2:"ȯ";s:4:"Ȱ";s:2:"È°";s:4:"ȱ";s:2:"ȱ";s:3:"YÌ„";s:2:"Ȳ";s:3:"yÌ„";s:2:"ȳ";s:2:"Ì€";s:2:"Í€";s:2:"Ì";s:2:"Í";s:2:"Ì“";s:2:"̓";s:4:"̈Ì";s:2:"Í„";s:2:"ʹ";s:2:"Í´";s:1:";";s:2:";";s:4:"¨Ì";s:2:"Î…";s:4:"ΑÌ";s:2:"Ά";s:2:"·";s:2:"·";s:4:"ΕÌ";s:2:"Έ";s:4:"ΗÌ";s:2:"Ή";s:4:"ΙÌ";s:2:"Ί";s:4:"ΟÌ";s:2:"ÎŒ";s:4:"Î¥Ì";s:2:"ÎŽ";s:4:"ΩÌ";s:2:"Î";s:4:"ÏŠÌ";s:2:"Î";s:4:"Ϊ";s:2:"Ϊ";s:4:"Ϋ";s:2:"Ϋ";s:4:"αÌ";s:2:"ά";s:4:"εÌ";s:2:"έ";s:4:"ηÌ";s:2:"ή";s:4:"ιÌ";s:2:"ί";s:4:"Ï‹Ì";s:2:"ΰ";s:4:"ϊ";s:2:"ÏŠ";s:4:"ϋ";s:2:"Ï‹";s:4:"οÌ";s:2:"ÏŒ";s:4:"Ï…Ì";s:2:"Ï";s:4:"ωÌ";s:2:"ÏŽ";s:4:"Ï’Ì";s:2:"Ï“";s:4:"ϔ";s:2:"Ï”";s:4:"Ѐ";s:2:"Ѐ";s:4:"Ё";s:2:"Ð";s:4:"ГÌ";s:2:"Ѓ";s:4:"Ї";s:2:"Ї";s:4:"КÌ";s:2:"ÐŒ";s:4:"Ѝ";s:2:"Ð";s:4:"Ў";s:2:"ÐŽ";s:4:"Й";s:2:"Й";s:4:"й";s:2:"й";s:4:"ѐ";s:2:"Ñ";s:4:"ё";s:2:"Ñ‘";s:4:"гÌ";s:2:"Ñ“";s:4:"ї";s:2:"Ñ—";s:4:"кÌ";s:2:"Ñœ";s:4:"ѝ";s:2:"Ñ";s:4:"ў";s:2:"Ñž";s:4:"Ñ´Ì";s:2:"Ѷ";s:4:"ѵÌ";s:2:"Ñ·";s:4:"Ӂ";s:2:"Ó";s:4:"ӂ";s:2:"Ó‚";s:4:"Ð̆";s:2:"Ó";s:4:"ӑ";s:2:"Ó‘";s:4:"Ð̈";s:2:"Ó’";s:4:"ӓ";s:2:"Ó“";s:4:"Ӗ";s:2:"Ó–";s:4:"ӗ";s:2:"Ó—";s:4:"Ӛ";s:2:"Óš";s:4:"ӛ";s:2:"Ó›";s:4:"Ӝ";s:2:"Óœ";s:4:"ӝ";s:2:"Ó";s:4:"Ӟ";s:2:"Óž";s:4:"ӟ";s:2:"ÓŸ";s:4:"Ӣ";s:2:"Ó¢";s:4:"ӣ";s:2:"Ó£";s:4:"Ӥ";s:2:"Ó¤";s:4:"ӥ";s:2:"Ó¥";s:4:"Ӧ";s:2:"Ó¦";s:4:"ӧ";s:2:"Ó§";s:4:"Ӫ";s:2:"Óª";s:4:"ӫ";s:2:"Ó«";s:4:"Ӭ";s:2:"Ó¬";s:4:"Ñ̈";s:2:"Ó­";s:4:"Ӯ";s:2:"Ó®";s:4:"ӯ";s:2:"Ó¯";s:4:"Ӱ";s:2:"Ó°";s:4:"ӱ";s:2:"Ó±";s:4:"Ӳ";s:2:"Ó²";s:4:"ӳ";s:2:"Ó³";s:4:"Ӵ";s:2:"Ó´";s:4:"ӵ";s:2:"Óµ";s:4:"Ӹ";s:2:"Ó¸";s:4:"ӹ";s:2:"Ó¹";s:4:"آ";s:2:"Ø¢";s:4:"أ";s:2:"Ø£";s:4:"ÙˆÙ”";s:2:"ؤ";s:4:"إ";s:2:"Ø¥";s:4:"ÙŠÙ”";s:2:"ئ";s:4:"Û•Ù”";s:2:"Û€";s:4:"ÛÙ”";s:2:"Û‚";s:4:"Û’Ù”";s:2:"Û“";s:6:"ऩ";s:3:"ऩ";s:6:"ऱ";s:3:"ऱ";s:6:"ऴ";s:3:"ऴ";s:6:"ো";s:3:"ো";s:6:"ৌ";s:3:"ৌ";s:6:"ୈ";s:3:"à­ˆ";s:6:"ୋ";s:3:"à­‹";s:6:"ୌ";s:3:"à­Œ";s:6:"ஔ";s:3:"à®”";s:6:"ொ";s:3:"ொ";s:6:"ோ";s:3:"ோ";s:6:"ௌ";s:3:"ௌ";s:6:"ై";s:3:"ై";s:6:"ೀ";s:3:"à³€";s:6:"ೇ";s:3:"ೇ";s:6:"ೈ";s:3:"ೈ";s:6:"ೊ";s:3:"ೊ";s:6:"ೋ";s:3:"ೋ";s:6:"ൊ";s:3:"ൊ";s:6:"ോ";s:3:"ോ";s:6:"ൌ";s:3:"ൌ";s:6:"ේ";s:3:"à·š";s:6:"à·™à·";s:3:"à·œ";s:6:"ෝ";s:3:"à·";s:6:"ෞ";s:3:"à·ž";s:6:"ཱི";s:3:"ཱི";s:6:"ཱུ";s:3:"ཱུ";s:6:"ཱྀ";s:3:"à¾";s:6:"ဦ";s:3:"ဦ";s:6:"ᬆ";s:3:"ᬆ";s:6:"ᬈ";s:3:"ᬈ";s:6:"ᬊ";s:3:"ᬊ";s:6:"ᬌ";s:3:"ᬌ";s:6:"á¬á¬µ";s:3:"ᬎ";s:6:"ᬒ";s:3:"ᬒ";s:6:"ᬻ";s:3:"ᬻ";s:6:"ᬽ";s:3:"ᬽ";s:6:"ᭀ";s:3:"á­€";s:6:"ᭁ";s:3:"á­";s:6:"ᭃ";s:3:"á­ƒ";s:3:"AÌ¥";s:3:"Ḁ";s:3:"aÌ¥";s:3:"á¸";s:3:"Ḃ";s:3:"Ḃ";s:3:"ḃ";s:3:"ḃ";s:3:"BÌ£";s:3:"Ḅ";s:3:"bÌ£";s:3:"ḅ";s:3:"Ḇ";s:3:"Ḇ";s:3:"ḇ";s:3:"ḇ";s:4:"ÇÌ";s:3:"Ḉ";s:4:"çÌ";s:3:"ḉ";s:3:"Ḋ";s:3:"Ḋ";s:3:"ḋ";s:3:"ḋ";s:3:"DÌ£";s:3:"Ḍ";s:3:"dÌ£";s:3:"á¸";s:3:"Ḏ";s:3:"Ḏ";s:3:"ḏ";s:3:"á¸";s:3:"Ḑ";s:3:"á¸";s:3:"ḑ";s:3:"ḑ";s:3:"DÌ­";s:3:"Ḓ";s:3:"dÌ­";s:3:"ḓ";s:4:"Ä’Ì€";s:3:"Ḕ";s:4:"Ä“Ì€";s:3:"ḕ";s:4:"Ä’Ì";s:3:"Ḗ";s:4:"Ä“Ì";s:3:"ḗ";s:3:"EÌ­";s:3:"Ḙ";s:3:"eÌ­";s:3:"ḙ";s:3:"EÌ°";s:3:"Ḛ";s:3:"eÌ°";s:3:"ḛ";s:4:"Ḝ";s:3:"Ḝ";s:4:"ḝ";s:3:"á¸";s:3:"Ḟ";s:3:"Ḟ";s:3:"ḟ";s:3:"ḟ";s:3:"GÌ„";s:3:"Ḡ";s:3:"gÌ„";s:3:"ḡ";s:3:"Ḣ";s:3:"Ḣ";s:3:"ḣ";s:3:"ḣ";s:3:"HÌ£";s:3:"Ḥ";s:3:"hÌ£";s:3:"ḥ";s:3:"Ḧ";s:3:"Ḧ";s:3:"ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"Ḩ";s:3:"ḩ";s:3:"ḩ";s:3:"HÌ®";s:3:"Ḫ";s:3:"hÌ®";s:3:"ḫ";s:3:"IÌ°";s:3:"Ḭ";s:3:"iÌ°";s:3:"ḭ";s:4:"ÃÌ";s:3:"Ḯ";s:4:"ïÌ";s:3:"ḯ";s:3:"KÌ";s:3:"Ḱ";s:3:"kÌ";s:3:"ḱ";s:3:"KÌ£";s:3:"Ḳ";s:3:"kÌ£";s:3:"ḳ";s:3:"Ḵ";s:3:"Ḵ";s:3:"ḵ";s:3:"ḵ";s:3:"LÌ£";s:3:"Ḷ";s:3:"lÌ£";s:3:"ḷ";s:5:"Ḹ";s:3:"Ḹ";s:5:"ḹ";s:3:"ḹ";s:3:"Ḻ";s:3:"Ḻ";s:3:"ḻ";s:3:"ḻ";s:3:"LÌ­";s:3:"Ḽ";s:3:"lÌ­";s:3:"ḽ";s:3:"MÌ";s:3:"Ḿ";s:3:"mÌ";s:3:"ḿ";s:3:"Ṁ";s:3:"á¹€";s:3:"ṁ";s:3:"á¹";s:3:"MÌ£";s:3:"Ṃ";s:3:"mÌ£";s:3:"ṃ";s:3:"Ṅ";s:3:"Ṅ";s:3:"ṅ";s:3:"á¹…";s:3:"NÌ£";s:3:"Ṇ";s:3:"nÌ£";s:3:"ṇ";s:3:"Ṉ";s:3:"Ṉ";s:3:"ṉ";s:3:"ṉ";s:3:"NÌ­";s:3:"Ṋ";s:3:"nÌ­";s:3:"ṋ";s:4:"ÕÌ";s:3:"Ṍ";s:4:"õÌ";s:3:"á¹";s:4:"Ṏ";s:3:"Ṏ";s:4:"ṏ";s:3:"á¹";s:4:"Ṑ";s:3:"á¹";s:4:"ÅÌ€";s:3:"ṑ";s:4:"ÅŒÌ";s:3:"á¹’";s:4:"ÅÌ";s:3:"ṓ";s:3:"PÌ";s:3:"á¹”";s:3:"pÌ";s:3:"ṕ";s:3:"Ṗ";s:3:"á¹–";s:3:"ṗ";s:3:"á¹—";s:3:"Ṙ";s:3:"Ṙ";s:3:"ṙ";s:3:"á¹™";s:3:"RÌ£";s:3:"Ṛ";s:3:"rÌ£";s:3:"á¹›";s:5:"Ṝ";s:3:"Ṝ";s:5:"ṝ";s:3:"á¹";s:3:"Ṟ";s:3:"Ṟ";s:3:"ṟ";s:3:"ṟ";s:3:"Ṡ";s:3:"á¹ ";s:3:"ṡ";s:3:"ṡ";s:3:"SÌ£";s:3:"á¹¢";s:3:"sÌ£";s:3:"á¹£";s:4:"Ṥ";s:3:"Ṥ";s:4:"ṥ";s:3:"á¹¥";s:4:"Ṧ";s:3:"Ṧ";s:4:"ṧ";s:3:"ṧ";s:5:"Ṩ";s:3:"Ṩ";s:5:"ṩ";s:3:"ṩ";s:3:"Ṫ";s:3:"Ṫ";s:3:"ṫ";s:3:"ṫ";s:3:"TÌ£";s:3:"Ṭ";s:3:"tÌ£";s:3:"á¹­";s:3:"Ṯ";s:3:"á¹®";s:3:"ṯ";s:3:"ṯ";s:3:"TÌ­";s:3:"á¹°";s:3:"tÌ­";s:3:"á¹±";s:3:"Ṳ";s:3:"á¹²";s:3:"ṳ";s:3:"á¹³";s:3:"UÌ°";s:3:"á¹´";s:3:"uÌ°";s:3:"á¹µ";s:3:"UÌ­";s:3:"Ṷ";s:3:"uÌ­";s:3:"á¹·";s:4:"ŨÌ";s:3:"Ṹ";s:4:"Å©Ì";s:3:"á¹¹";s:4:"Ṻ";s:3:"Ṻ";s:4:"ṻ";s:3:"á¹»";s:3:"Ṽ";s:3:"á¹¼";s:3:"ṽ";s:3:"á¹½";s:3:"VÌ£";s:3:"á¹¾";s:3:"vÌ£";s:3:"ṿ";s:3:"WÌ€";s:3:"Ẁ";s:3:"wÌ€";s:3:"áº";s:3:"WÌ";s:3:"Ẃ";s:3:"wÌ";s:3:"ẃ";s:3:"Ẅ";s:3:"Ẅ";s:3:"ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"Ẇ";s:3:"ẇ";s:3:"ẇ";s:3:"WÌ£";s:3:"Ẉ";s:3:"wÌ£";s:3:"ẉ";s:3:"Ẋ";s:3:"Ẋ";s:3:"ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"Ẍ";s:3:"ẍ";s:3:"áº";s:3:"Ẏ";s:3:"Ẏ";s:3:"ẏ";s:3:"áº";s:3:"ZÌ‚";s:3:"áº";s:3:"zÌ‚";s:3:"ẑ";s:3:"ZÌ£";s:3:"Ẓ";s:3:"zÌ£";s:3:"ẓ";s:3:"Ẕ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẕ";s:3:"ẖ";s:3:"ẖ";s:3:"ẗ";s:3:"ẗ";s:3:"wÌŠ";s:3:"ẘ";s:3:"yÌŠ";s:3:"ẙ";s:4:"ẛ";s:3:"ẛ";s:3:"AÌ£";s:3:"Ạ";s:3:"aÌ£";s:3:"ạ";s:3:"Ả";s:3:"Ả";s:3:"ả";s:3:"ả";s:4:"ÂÌ";s:3:"Ấ";s:4:"âÌ";s:3:"ấ";s:4:"Ầ";s:3:"Ầ";s:4:"ầ";s:3:"ầ";s:4:"Ẩ";s:3:"Ẩ";s:4:"ẩ";s:3:"ẩ";s:4:"Ẫ";s:3:"Ẫ";s:4:"ẫ";s:3:"ẫ";s:5:"Ậ";s:3:"Ậ";s:5:"ậ";s:3:"ậ";s:4:"Ä‚Ì";s:3:"Ắ";s:4:"ăÌ";s:3:"ắ";s:4:"Ä‚Ì€";s:3:"Ằ";s:4:"ằ";s:3:"ằ";s:4:"Ẳ";s:3:"Ẳ";s:4:"ẳ";s:3:"ẳ";s:4:"Ẵ";s:3:"Ẵ";s:4:"ẵ";s:3:"ẵ";s:5:"Ặ";s:3:"Ặ";s:5:"ặ";s:3:"ặ";s:3:"EÌ£";s:3:"Ẹ";s:3:"eÌ£";s:3:"ẹ";s:3:"Ẻ";s:3:"Ẻ";s:3:"ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"Ẽ";s:3:"ẽ";s:3:"ẽ";s:4:"ÊÌ";s:3:"Ế";s:4:"êÌ";s:3:"ế";s:4:"Ề";s:3:"Ề";s:4:"ề";s:3:"á»";s:4:"Ể";s:3:"Ể";s:4:"ể";s:3:"ể";s:4:"Ễ";s:3:"Ễ";s:4:"ễ";s:3:"á»…";s:5:"Ệ";s:3:"Ệ";s:5:"ệ";s:3:"ệ";s:3:"Ỉ";s:3:"Ỉ";s:3:"ỉ";s:3:"ỉ";s:3:"IÌ£";s:3:"Ị";s:3:"iÌ£";s:3:"ị";s:3:"OÌ£";s:3:"Ọ";s:3:"oÌ£";s:3:"á»";s:3:"Ỏ";s:3:"Ỏ";s:3:"ỏ";s:3:"á»";s:4:"ÔÌ";s:3:"á»";s:4:"ôÌ";s:3:"ố";s:4:"Ồ";s:3:"á»’";s:4:"ồ";s:3:"ồ";s:4:"Ổ";s:3:"á»”";s:4:"ổ";s:3:"ổ";s:4:"Ỗ";s:3:"á»–";s:4:"ỗ";s:3:"á»—";s:5:"Ộ";s:3:"Ộ";s:5:"á»Ì‚";s:3:"á»™";s:4:"Æ Ì";s:3:"Ớ";s:4:"Æ¡Ì";s:3:"á»›";s:4:"Ờ";s:3:"Ờ";s:4:"Æ¡Ì€";s:3:"á»";s:4:"Ở";s:3:"Ở";s:4:"ở";s:3:"ở";s:4:"Ỡ";s:3:"á» ";s:4:"ỡ";s:3:"ỡ";s:4:"Ợ";s:3:"Ợ";s:4:"Æ¡Ì£";s:3:"ợ";s:3:"UÌ£";s:3:"Ụ";s:3:"uÌ£";s:3:"ụ";s:3:"Ủ";s:3:"Ủ";s:3:"ủ";s:3:"ủ";s:4:"ƯÌ";s:3:"Ứ";s:4:"Æ°Ì";s:3:"ứ";s:4:"Ừ";s:3:"Ừ";s:4:"Æ°Ì€";s:3:"ừ";s:4:"Ử";s:3:"Ử";s:4:"ử";s:3:"á»­";s:4:"Ữ";s:3:"á»®";s:4:"ữ";s:3:"ữ";s:4:"Ự";s:3:"á»°";s:4:"Æ°Ì£";s:3:"á»±";s:3:"YÌ€";s:3:"Ỳ";s:3:"yÌ€";s:3:"ỳ";s:3:"YÌ£";s:3:"á»´";s:3:"yÌ£";s:3:"ỵ";s:3:"Ỷ";s:3:"Ỷ";s:3:"ỷ";s:3:"á»·";s:3:"Ỹ";s:3:"Ỹ";s:3:"ỹ";s:3:"ỹ";s:4:"ἀ";s:3:"á¼€";s:4:"ἁ";s:3:"á¼";s:5:"ἂ";s:3:"ἂ";s:5:"á¼Ì€";s:3:"ἃ";s:5:"á¼€Ì";s:3:"ἄ";s:5:"á¼Ì";s:3:"á¼…";s:5:"ἆ";s:3:"ἆ";s:5:"á¼Í‚";s:3:"ἇ";s:4:"Ἀ";s:3:"Ἀ";s:4:"Ἁ";s:3:"Ἁ";s:5:"Ἂ";s:3:"Ἂ";s:5:"Ἃ";s:3:"Ἃ";s:5:"ἈÌ";s:3:"Ἄ";s:5:"ἉÌ";s:3:"á¼";s:5:"Ἆ";s:3:"Ἆ";s:5:"Ἇ";s:3:"á¼";s:4:"ἐ";s:3:"á¼";s:4:"ἑ";s:3:"ἑ";s:5:"á¼Ì€";s:3:"á¼’";s:5:"ἓ";s:3:"ἓ";s:5:"á¼Ì";s:3:"á¼”";s:5:"ἑÌ";s:3:"ἕ";s:4:"Ἐ";s:3:"Ἐ";s:4:"Ἑ";s:3:"á¼™";s:5:"Ἒ";s:3:"Ἒ";s:5:"Ἓ";s:3:"á¼›";s:5:"ἘÌ";s:3:"Ἔ";s:5:"á¼™Ì";s:3:"á¼";s:4:"ἠ";s:3:"á¼ ";s:4:"ἡ";s:3:"ἡ";s:5:"ἢ";s:3:"á¼¢";s:5:"ἣ";s:3:"á¼£";s:5:"á¼ Ì";s:3:"ἤ";s:5:"ἡÌ";s:3:"á¼¥";s:5:"á¼ Í‚";s:3:"ἦ";s:5:"ἧ";s:3:"ἧ";s:4:"Ἠ";s:3:"Ἠ";s:4:"Ἡ";s:3:"Ἡ";s:5:"Ἢ";s:3:"Ἢ";s:5:"Ἣ";s:3:"Ἣ";s:5:"ἨÌ";s:3:"Ἤ";s:5:"ἩÌ";s:3:"á¼­";s:5:"Ἦ";s:3:"á¼®";s:5:"Ἧ";s:3:"Ἧ";s:4:"ἰ";s:3:"á¼°";s:4:"ἱ";s:3:"á¼±";s:5:"á¼°Ì€";s:3:"á¼²";s:5:"ἳ";s:3:"á¼³";s:5:"á¼°Ì";s:3:"á¼´";s:5:"á¼±Ì";s:3:"á¼µ";s:5:"á¼°Í‚";s:3:"ἶ";s:5:"ἷ";s:3:"á¼·";s:4:"Ἰ";s:3:"Ἰ";s:4:"Ἱ";s:3:"á¼¹";s:5:"Ἲ";s:3:"Ἲ";s:5:"Ἳ";s:3:"á¼»";s:5:"ἸÌ";s:3:"á¼¼";s:5:"á¼¹Ì";s:3:"á¼½";s:5:"Ἶ";s:3:"á¼¾";s:5:"Ἷ";s:3:"Ἷ";s:4:"ὀ";s:3:"á½€";s:4:"ὁ";s:3:"á½";s:5:"ὂ";s:3:"ὂ";s:5:"á½Ì€";s:3:"ὃ";s:5:"á½€Ì";s:3:"ὄ";s:5:"á½Ì";s:3:"á½…";s:4:"Ὀ";s:3:"Ὀ";s:4:"Ὁ";s:3:"Ὁ";s:5:"Ὂ";s:3:"Ὂ";s:5:"Ὃ";s:3:"Ὃ";s:5:"ὈÌ";s:3:"Ὄ";s:5:"ὉÌ";s:3:"á½";s:4:"Ï…Ì“";s:3:"á½";s:4:"Ï…Ì”";s:3:"ὑ";s:5:"á½Ì€";s:3:"á½’";s:5:"ὓ";s:3:"ὓ";s:5:"á½Ì";s:3:"á½”";s:5:"ὑÌ";s:3:"ὕ";s:5:"á½Í‚";s:3:"á½–";s:5:"ὗ";s:3:"á½—";s:4:"Ὑ";s:3:"á½™";s:5:"Ὓ";s:3:"á½›";s:5:"á½™Ì";s:3:"á½";s:5:"Ὗ";s:3:"Ὗ";s:4:"ὠ";s:3:"á½ ";s:4:"ὡ";s:3:"ὡ";s:5:"ὢ";s:3:"á½¢";s:5:"ὣ";s:3:"á½£";s:5:"á½ Ì";s:3:"ὤ";s:5:"ὡÌ";s:3:"á½¥";s:5:"á½ Í‚";s:3:"ὦ";s:5:"ὧ";s:3:"ὧ";s:4:"Ὠ";s:3:"Ὠ";s:4:"Ὡ";s:3:"Ὡ";s:5:"Ὢ";s:3:"Ὢ";s:5:"Ὣ";s:3:"Ὣ";s:5:"ὨÌ";s:3:"Ὤ";s:5:"ὩÌ";s:3:"á½­";s:5:"Ὦ";s:3:"á½®";s:5:"Ὧ";s:3:"Ὧ";s:4:"ὰ";s:3:"á½°";s:2:"ά";s:3:"á½±";s:4:"ὲ";s:3:"á½²";s:2:"έ";s:3:"á½³";s:4:"ὴ";s:3:"á½´";s:2:"ή";s:3:"á½µ";s:4:"ὶ";s:3:"ὶ";s:2:"ί";s:3:"á½·";s:4:"ὸ";s:3:"ὸ";s:2:"ÏŒ";s:3:"á½¹";s:4:"Ï…Ì€";s:3:"ὺ";s:2:"Ï";s:3:"á½»";s:4:"ὼ";s:3:"á½¼";s:2:"ÏŽ";s:3:"á½½";s:5:"ᾀ";s:3:"á¾€";s:5:"á¼Í…";s:3:"á¾";s:5:"ᾂ";s:3:"ᾂ";s:5:"ᾃ";s:3:"ᾃ";s:5:"ᾄ";s:3:"ᾄ";s:5:"á¼…Í…";s:3:"á¾…";s:5:"ᾆ";s:3:"ᾆ";s:5:"ᾇ";s:3:"ᾇ";s:5:"ᾈ";s:3:"ᾈ";s:5:"ᾉ";s:3:"ᾉ";s:5:"ᾊ";s:3:"ᾊ";s:5:"ᾋ";s:3:"ᾋ";s:5:"ᾌ";s:3:"ᾌ";s:5:"á¼Í…";s:3:"á¾";s:5:"ᾎ";s:3:"ᾎ";s:5:"á¼Í…";s:3:"á¾";s:5:"á¼ Í…";s:3:"á¾";s:5:"ᾑ";s:3:"ᾑ";s:5:"ᾒ";s:3:"á¾’";s:5:"ᾓ";s:3:"ᾓ";s:5:"ᾔ";s:3:"á¾”";s:5:"ᾕ";s:3:"ᾕ";s:5:"ᾖ";s:3:"á¾–";s:5:"ᾗ";s:3:"á¾—";s:5:"ᾘ";s:3:"ᾘ";s:5:"ᾙ";s:3:"á¾™";s:5:"ᾚ";s:3:"ᾚ";s:5:"ᾛ";s:3:"á¾›";s:5:"ᾜ";s:3:"ᾜ";s:5:"á¼­Í…";s:3:"á¾";s:5:"ᾞ";s:3:"ᾞ";s:5:"ᾟ";s:3:"ᾟ";s:5:"á½ Í…";s:3:"á¾ ";s:5:"ᾡ";s:3:"ᾡ";s:5:"ᾢ";s:3:"á¾¢";s:5:"ᾣ";s:3:"á¾£";s:5:"ᾤ";s:3:"ᾤ";s:5:"ᾥ";s:3:"á¾¥";s:5:"ᾦ";s:3:"ᾦ";s:5:"ᾧ";s:3:"ᾧ";s:5:"ᾨ";s:3:"ᾨ";s:5:"ᾩ";s:3:"ᾩ";s:5:"ᾪ";s:3:"ᾪ";s:5:"ᾫ";s:3:"ᾫ";s:5:"ᾬ";s:3:"ᾬ";s:5:"á½­Í…";s:3:"á¾­";s:5:"ᾮ";s:3:"á¾®";s:5:"ᾯ";s:3:"ᾯ";s:4:"ᾰ";s:3:"á¾°";s:4:"ᾱ";s:3:"á¾±";s:5:"á½°Í…";s:3:"á¾²";s:4:"ᾳ";s:3:"á¾³";s:4:"ᾴ";s:3:"á¾´";s:4:"ᾶ";s:3:"ᾶ";s:5:"ᾷ";s:3:"á¾·";s:4:"Ᾰ";s:3:"Ᾰ";s:4:"Ᾱ";s:3:"á¾¹";s:4:"Ὰ";s:3:"Ὰ";s:2:"Ά";s:3:"á¾»";s:4:"ᾼ";s:3:"á¾¼";s:2:"ι";s:3:"á¾¾";s:4:"῁";s:3:"á¿";s:5:"á½´Í…";s:3:"á¿‚";s:4:"ῃ";s:3:"ῃ";s:4:"ῄ";s:3:"á¿„";s:4:"ῆ";s:3:"ῆ";s:5:"ῇ";s:3:"ῇ";s:4:"Ὲ";s:3:"Ὲ";s:2:"Έ";s:3:"Έ";s:4:"Ὴ";s:3:"á¿Š";s:2:"Ή";s:3:"á¿‹";s:4:"ῌ";s:3:"á¿Œ";s:5:"῍";s:3:"á¿";s:5:"᾿Ì";s:3:"á¿Ž";s:5:"῏";s:3:"á¿";s:4:"ῐ";s:3:"á¿";s:4:"ῑ";s:3:"á¿‘";s:4:"ÏŠÌ€";s:3:"á¿’";s:2:"Î";s:3:"á¿“";s:4:"ῖ";s:3:"á¿–";s:4:"ÏŠÍ‚";s:3:"á¿—";s:4:"Ῐ";s:3:"Ῐ";s:4:"Ῑ";s:3:"á¿™";s:4:"Ὶ";s:3:"á¿š";s:2:"Ί";s:3:"á¿›";s:5:"῝";s:3:"á¿";s:5:"῾Ì";s:3:"á¿ž";s:5:"῟";s:3:"á¿Ÿ";s:4:"ῠ";s:3:"á¿ ";s:4:"Ï…Ì„";s:3:"á¿¡";s:4:"Ï‹Ì€";s:3:"á¿¢";s:2:"ΰ";s:3:"á¿£";s:4:"ÏÌ“";s:3:"ῤ";s:4:"ÏÌ”";s:3:"á¿¥";s:4:"Ï…Í‚";s:3:"ῦ";s:4:"Ï‹Í‚";s:3:"ῧ";s:4:"Ῠ";s:3:"Ῠ";s:4:"Ῡ";s:3:"á¿©";s:4:"Ὺ";s:3:"Ὺ";s:2:"ÎŽ";s:3:"á¿«";s:4:"Ῥ";s:3:"Ῥ";s:4:"῭";s:3:"á¿­";s:2:"Î…";s:3:"á¿®";s:1:"`";s:3:"`";s:5:"ῲ";s:3:"ῲ";s:4:"ῳ";s:3:"ῳ";s:4:"ÏŽÍ…";s:3:"á¿´";s:4:"ῶ";s:3:"ῶ";s:5:"ῷ";s:3:"á¿·";s:4:"Ὸ";s:3:"Ὸ";s:2:"ÎŒ";s:3:"Ό";s:4:"Ὼ";s:3:"Ὼ";s:2:"Î";s:3:"á¿»";s:4:"ῼ";s:3:"ῼ";s:2:"´";s:3:"´";s:3:" ";s:3:" ";s:3:" ";s:3:"â€";s:2:"Ω";s:3:"Ω";s:1:"K";s:3:"K";s:2:"Ã…";s:3:"â„«";s:5:"â†Ì¸";s:3:"↚";s:5:"↛";s:3:"↛";s:5:"↮";s:3:"↮";s:5:"â‡Ì¸";s:3:"â‡";s:5:"⇎";s:3:"⇎";s:5:"⇏";s:3:"â‡";s:5:"∄";s:3:"∄";s:5:"∉";s:3:"∉";s:5:"∌";s:3:"∌";s:5:"∤";s:3:"∤";s:5:"∦";s:3:"∦";s:5:"≁";s:3:"â‰";s:5:"≄";s:3:"≄";s:5:"≇";s:3:"≇";s:5:"≉";s:3:"≉";s:3:"≠";s:3:"≠";s:5:"≢";s:3:"≢";s:5:"â‰Ì¸";s:3:"≭";s:3:"≮";s:3:"≮";s:3:"≯";s:3:"≯";s:5:"≰";s:3:"≰";s:5:"≱";s:3:"≱";s:5:"≴";s:3:"≴";s:5:"≵";s:3:"≵";s:5:"≸";s:3:"≸";s:5:"≹";s:3:"≹";s:5:"⊀";s:3:"⊀";s:5:"⊁";s:3:"âŠ";s:5:"⊄";s:3:"⊄";s:5:"⊅";s:3:"⊅";s:5:"⊈";s:3:"⊈";s:5:"⊉";s:3:"⊉";s:5:"⊬";s:3:"⊬";s:5:"⊭";s:3:"⊭";s:5:"⊮";s:3:"⊮";s:5:"⊯";s:3:"⊯";s:5:"⋠";s:3:"â‹ ";s:5:"⋡";s:3:"â‹¡";s:5:"⋢";s:3:"â‹¢";s:5:"⋣";s:3:"â‹£";s:5:"⋪";s:3:"⋪";s:5:"⋫";s:3:"â‹«";s:5:"⋬";s:3:"⋬";s:5:"⋭";s:3:"â‹­";s:3:"〈";s:3:"〈";s:3:"〉";s:3:"〉";s:6:"ã‹ã‚™";s:3:"ãŒ";s:6:"ãã‚™";s:3:"ãŽ";s:6:"ãã‚™";s:3:"ã";s:6:"ã‘ã‚™";s:3:"ã’";s:6:"ã“ã‚™";s:3:"ã”";s:6:"ã•ã‚™";s:3:"ã–";s:6:"ã—ã‚™";s:3:"ã˜";s:6:"ã™ã‚™";s:3:"ãš";s:6:"ã›ã‚™";s:3:"ãœ";s:6:"ãã‚™";s:3:"ãž";s:6:"ãŸã‚™";s:3:"ã ";s:6:"ã¡ã‚™";s:3:"ã¢";s:6:"ã¤ã‚™";s:3:"ã¥";s:6:"ã¦ã‚™";s:3:"ã§";s:6:"ã¨ã‚™";s:3:"ã©";s:6:"ã¯ã‚™";s:3:"ã°";s:6:"ã¯ã‚š";s:3:"ã±";s:6:"ã²ã‚™";s:3:"ã³";s:6:"ã²ã‚š";s:3:"ã´";s:6:"ãµã‚™";s:3:"ã¶";s:6:"ãµã‚š";s:3:"ã·";s:6:"ã¸ã‚™";s:3:"ã¹";s:6:"ã¸ã‚š";s:3:"ãº";s:6:"ã»ã‚™";s:3:"ã¼";s:6:"ã»ã‚š";s:3:"ã½";s:6:"ã†ã‚™";s:3:"ã‚”";s:6:"ã‚ã‚™";s:3:"ã‚ž";s:6:"ã‚«ã‚™";s:3:"ガ";s:6:"ã‚­ã‚™";s:3:"ã‚®";s:6:"グ";s:3:"ã‚°";s:6:"ゲ";s:3:"ゲ";s:6:"ゴ";s:3:"ã‚´";s:6:"ザ";s:3:"ザ";s:6:"ã‚·ã‚™";s:3:"ジ";s:6:"ズ";s:3:"ズ";s:6:"ゼ";s:3:"ゼ";s:6:"ゾ";s:3:"ゾ";s:6:"ã‚¿ã‚™";s:3:"ダ";s:6:"ãƒã‚™";s:3:"ヂ";s:6:"ヅ";s:3:"ヅ";s:6:"デ";s:3:"デ";s:6:"ド";s:3:"ド";s:6:"ãƒã‚™";s:3:"ãƒ";s:6:"ãƒã‚š";s:3:"パ";s:6:"ビ";s:3:"ビ";s:6:"ピ";s:3:"ピ";s:6:"ブ";s:3:"ブ";s:6:"プ";s:3:"プ";s:6:"ベ";s:3:"ベ";s:6:"ペ";s:3:"ペ";s:6:"ボ";s:3:"ボ";s:6:"ポ";s:3:"ãƒ";s:6:"ヴ";s:3:"ヴ";s:6:"ヷ";s:3:"ヷ";s:6:"ヸ";s:3:"ヸ";s:6:"ヹ";s:3:"ヹ";s:6:"ヺ";s:3:"ヺ";s:6:"ヾ";s:3:"ヾ";s:3:"豈";s:3:"豈";s:3:"æ›´";s:3:"ï¤";s:3:"車";s:3:"車";s:3:"賈";s:3:"賈";s:3:"滑";s:3:"滑";s:3:"串";s:3:"串";s:3:"å¥";s:3:"句";s:3:"龜";s:3:"ï«Ž";s:3:"契";s:3:"契";s:3:"金";s:3:"金";s:3:"å–‡";s:3:"喇";s:3:"奈";s:3:"奈";s:3:"懶";s:4:"懶";s:3:"癩";s:3:"癩";s:3:"ç¾…";s:3:"ï¤";s:3:"蘿";s:3:"ï¤";s:3:"螺";s:3:"螺";s:3:"裸";s:3:"裸";s:3:"é‚";s:3:"邏";s:3:"樂";s:3:"樂";s:3:"æ´›";s:3:"洛";s:3:"烙";s:3:"烙";s:3:"çž";s:3:"珞";s:3:"è½";s:3:"落";s:3:"é…ª";s:3:"酪";s:3:"駱";s:3:"駱";s:3:"亂";s:3:"亂";s:3:"åµ";s:3:"卵";s:3:"欄";s:3:"ï¤";s:3:"爛";s:3:"爛";s:3:"蘭";s:3:"蘭";s:3:"鸞";s:3:"鸞";s:3:"åµ";s:3:"嵐";s:3:"æ¿«";s:3:"濫";s:3:"è—";s:3:"藍";s:3:"襤";s:3:"襤";s:3:"拉";s:3:"拉";s:3:"臘";s:3:"臘";s:3:"è Ÿ";s:3:"蠟";s:3:"廊";s:4:"廊";s:3:"朗";s:4:"朗";s:3:"浪";s:3:"浪";s:3:"狼";s:3:"狼";s:3:"郎";s:3:"郎";s:3:"來";s:3:"來";s:3:"冷";s:3:"冷";s:3:"å‹ž";s:3:"勞";s:3:"æ“„";s:3:"擄";s:3:"æ«“";s:3:"櫓";s:3:"çˆ";s:3:"爐";s:3:"盧";s:3:"盧";s:3:"è€";s:3:"老";s:3:"蘆";s:3:"蘆";s:3:"虜";s:4:"虜";s:3:"è·¯";s:3:"路";s:3:"露";s:3:"露";s:3:"é­¯";s:3:"魯";s:3:"é·º";s:3:"鷺";s:3:"碌";s:4:"ð¯¥";s:3:"祿";s:3:"祿";s:3:"綠";s:3:"綠";s:3:"è‰";s:3:"菉";s:3:"錄";s:3:"錄";s:3:"鹿";s:3:"鹿";s:3:"è«–";s:3:"ï¥";s:3:"壟";s:3:"壟";s:3:"弄";s:3:"弄";s:3:"ç± ";s:3:"籠";s:3:"è¾";s:3:"聾";s:3:"牢";s:3:"牢";s:3:"磊";s:3:"磊";s:3:"賂";s:3:"賂";s:3:"é›·";s:3:"雷";s:3:"壘";s:3:"壘";s:3:"å±¢";s:3:"屢";s:3:"樓";s:3:"樓";s:3:"æ·š";s:3:"ï¥";s:3:"æ¼";s:3:"漏";s:3:"ç´¯";s:3:"ï¥";s:3:"縷";s:3:"ï¥";s:3:"陋";s:3:"陋";s:3:"å‹’";s:3:"勒";s:3:"è‚‹";s:3:"肋";s:3:"凜";s:3:"凜";s:3:"凌";s:3:"凌";s:3:"稜";s:3:"稜";s:3:"綾";s:3:"綾";s:3:"è±";s:3:"菱";s:3:"陵";s:3:"陵";s:3:"讀";s:3:"讀";s:3:"æ‹";s:3:"拏";s:3:"諾";s:3:"諾";s:3:"丹";s:3:"丹";s:3:"寧";s:4:"寧";s:3:"怒";s:3:"怒";s:3:"率";s:3:"率";s:3:"ç•°";s:4:"異";s:3:"北";s:4:"北";s:3:"磻";s:3:"磻";s:3:"便";s:3:"便";s:3:"復";s:3:"復";s:3:"ä¸";s:3:"不";s:3:"泌";s:3:"泌";s:3:"數";s:3:"數";s:3:"ç´¢";s:3:"索";s:3:"åƒ";s:3:"參";s:3:"å¡ž";s:3:"塞";s:3:"çœ";s:3:"省";s:3:"葉";s:3:"葉";s:3:"說";s:3:"說";s:3:"殺";s:4:"殺";s:3:"è¾°";s:3:"辰";s:3:"沈";s:3:"沈";s:3:"拾";s:3:"拾";s:3:"è‹¥";s:4:"若";s:3:"掠";s:3:"掠";s:3:"ç•¥";s:3:"略";s:3:"亮";s:3:"亮";s:3:"å…©";s:3:"兩";s:3:"凉";s:3:"凉";s:3:"æ¢";s:3:"梁";s:3:"糧";s:3:"糧";s:3:"良";s:3:"良";s:3:"è«’";s:3:"諒";s:3:"é‡";s:3:"量";s:3:"勵";s:3:"勵";s:3:"å‘‚";s:3:"呂";s:3:"女";s:3:"ï¦";s:3:"廬";s:3:"廬";s:3:"æ—…";s:3:"旅";s:3:"濾";s:3:"濾";s:3:"礪";s:3:"礪";s:3:"é–­";s:3:"閭";s:3:"驪";s:3:"驪";s:3:"麗";s:3:"麗";s:3:"黎";s:3:"黎";s:3:"力";s:3:"力";s:3:"曆";s:3:"曆";s:3:"æ­·";s:3:"歷";s:3:"è½¢";s:3:"ï¦";s:3:"å¹´";s:3:"年";s:3:"æ†";s:3:"ï¦";s:3:"戀";s:3:"ï¦";s:3:"æ’š";s:3:"撚";s:3:"æ¼£";s:3:"漣";s:3:"ç…‰";s:3:"煉";s:3:"ç’‰";s:3:"璉";s:3:"秊";s:3:"秊";s:3:"ç·´";s:3:"練";s:3:"è¯";s:3:"聯";s:3:"輦";s:3:"輦";s:3:"è“®";s:3:"蓮";s:3:"連";s:3:"連";s:3:"éŠ";s:3:"鍊";s:3:"列";s:3:"列";s:3:"劣";s:3:"ï¦";s:3:"å’½";s:3:"咽";s:3:"烈";s:3:"烈";s:3:"裂";s:3:"裂";s:3:"廉";s:3:"廉";s:3:"念";s:3:"念";s:3:"æ»";s:3:"捻";s:3:"æ®®";s:3:"殮";s:3:"ç°¾";s:3:"簾";s:3:"çµ";s:3:"獵";s:3:"令";s:3:"令";s:3:"囹";s:3:"囹";s:3:"嶺";s:3:"嶺";s:3:"怜";s:3:"怜";s:3:"玲";s:3:"玲";s:3:"ç‘©";s:3:"瑩";s:3:"羚";s:3:"羚";s:3:"è†";s:3:"聆";s:3:"鈴";s:3:"鈴";s:3:"零";s:3:"零";s:3:"éˆ";s:3:"靈";s:3:"é ˜";s:3:"領";s:3:"例";s:3:"例";s:3:"禮";s:3:"禮";s:3:"醴";s:3:"醴";s:3:"隸";s:3:"隸";s:3:"惡";s:3:"惡";s:3:"了";s:3:"了";s:3:"僚";s:3:"僚";s:3:"寮";s:3:"寮";s:3:"å°¿";s:3:"尿";s:3:"æ–™";s:3:"料";s:3:"燎";s:3:"燎";s:3:"療";s:3:"ï§";s:3:"蓼";s:3:"蓼";s:3:"é¼";s:3:"遼";s:3:"é¾";s:3:"龍";s:3:"暈";s:3:"暈";s:3:"阮";s:3:"阮";s:3:"劉";s:3:"劉";s:3:"æ»";s:3:"杻";s:3:"柳";s:3:"柳";s:3:"æµ";s:4:"流";s:3:"溜";s:3:"溜";s:3:"ç‰";s:3:"琉";s:3:"ç•™";s:3:"ï§";s:3:"ç¡«";s:3:"硫";s:3:"ç´";s:3:"ï§";s:3:"é¡ž";s:3:"ï§";s:3:"å…­";s:3:"六";s:3:"戮";s:3:"戮";s:3:"陸";s:3:"陸";s:3:"倫";s:3:"倫";s:3:"å´™";s:3:"崙";s:3:"æ·ª";s:3:"淪";s:3:"輪";s:3:"輪";s:3:"律";s:3:"律";s:3:"æ…„";s:3:"慄";s:3:"æ —";s:3:"栗";s:3:"隆";s:3:"隆";s:3:"利";s:3:"ï§";s:3:"å";s:3:"吏";s:3:"å±¥";s:3:"履";s:3:"易";s:3:"易";s:3:"æŽ";s:3:"李";s:3:"梨";s:3:"梨";s:3:"æ³¥";s:3:"泥";s:3:"ç†";s:3:"理";s:3:"ç—¢";s:3:"痢";s:3:"ç½¹";s:3:"罹";s:3:"è£";s:3:"裏";s:3:"裡";s:3:"裡";s:3:"里";s:3:"里";s:3:"離";s:3:"離";s:3:"匿";s:3:"匿";s:3:"溺";s:3:"溺";s:3:"å";s:3:"吝";s:3:"ç‡";s:3:"燐";s:3:"ç’˜";s:3:"璘";s:3:"è—º";s:3:"藺";s:3:"隣";s:3:"隣";s:3:"é±—";s:3:"鱗";s:3:"麟";s:3:"麟";s:3:"æž—";s:3:"林";s:3:"æ·‹";s:3:"淋";s:3:"臨";s:3:"臨";s:3:"ç«‹";s:3:"立";s:3:"笠";s:3:"笠";s:3:"ç²’";s:3:"粒";s:3:"ç‹€";s:3:"狀";s:3:"ç‚™";s:3:"炙";s:3:"è­˜";s:3:"識";s:3:"什";s:3:"什";s:3:"茶";s:3:"茶";s:3:"刺";s:3:"刺";s:3:"切";s:4:"ð¯¡";s:3:"度";s:3:"ï¨";s:3:"æ‹“";s:3:"拓";s:3:"ç³–";s:3:"糖";s:3:"å®…";s:3:"宅";s:3:"æ´ž";s:3:"洞";s:3:"æš´";s:3:"暴";s:3:"è¼»";s:3:"輻";s:3:"è¡Œ";s:3:"行";s:3:"é™";s:3:"降";s:3:"見";s:3:"見";s:3:"廓";s:3:"廓";s:3:"å…€";s:3:"兀";s:3:"å—€";s:3:"ï¨";s:3:"å¡š";s:3:"塚";s:3:"æ™´";s:3:"晴";s:3:"凞";s:3:"凞";s:3:"猪";s:3:"猪";s:3:"益";s:3:"益";s:3:"礼";s:3:"礼";s:3:"神";s:3:"神";s:3:"祥";s:3:"祥";s:3:"ç¦";s:4:"福";s:3:"é–";s:3:"靖";s:3:"ç²¾";s:3:"ï¨";s:3:"ç¾½";s:3:"羽";s:3:"蘒";s:3:"蘒";s:3:"諸";s:3:"諸";s:3:"逸";s:3:"逸";s:3:"都";s:3:"都";s:3:"飯";s:3:"飯";s:3:"飼";s:3:"飼";s:3:"館";s:3:"館";s:3:"鶴";s:3:"鶴";s:3:"ä¾®";s:4:"侮";s:3:"僧";s:4:"僧";s:3:"å…";s:4:"免";s:3:"勉";s:4:"勉";s:3:"勤";s:4:"勤";s:3:"å‘";s:4:"卑";s:3:"å–";s:3:"喝";s:3:"嘆";s:4:"嘆";s:3:"器";s:3:"器";s:3:"å¡€";s:3:"塀";s:3:"墨";s:3:"墨";s:3:"層";s:3:"層";s:3:"å±®";s:4:"屮";s:3:"æ‚”";s:4:"悔";s:3:"æ…¨";s:3:"慨";s:3:"憎";s:4:"憎";s:3:"懲";s:4:"懲";s:3:"æ•";s:4:"敏";s:3:"æ—¢";s:3:"ï©‚";s:3:"æš‘";s:4:"ð¯£";s:3:"梅";s:4:"梅";s:3:"æµ·";s:4:"ð¯¤";s:3:"渚";s:3:"渚";s:3:"æ¼¢";s:3:"漢";s:3:"ç…®";s:3:"煮";s:3:"爫";s:3:"爫";s:3:"ç¢";s:3:"ï©Š";s:3:"碑";s:3:"ï©‹";s:3:"社";s:3:"ï©Œ";s:3:"祉";s:3:"ï©";s:3:"祈";s:3:"ï©Ž";s:3:"ç¥";s:3:"ï©";s:3:"祖";s:4:"祖";s:3:"ç¥";s:3:"ï©‘";s:3:"ç¦";s:3:"ï©’";s:3:"禎";s:3:"ï©“";s:3:"ç©€";s:4:"穀";s:3:"çª";s:3:"ï©•";s:3:"節";s:3:"節";s:3:"縉";s:3:"縉";s:3:"ç¹";s:3:"ï©™";s:3:"ç½²";s:3:"ï©š";s:3:"者";s:4:"者";s:3:"臭";s:3:"ï©œ";s:3:"艹";s:3:"ï©ž";s:3:"è‘—";s:4:"著";s:3:"è¤";s:3:"ï© ";s:3:"視";s:3:"視";s:3:"è¬";s:3:"謁";s:3:"謹";s:3:"謹";s:3:"賓";s:3:"賓";s:3:"è´ˆ";s:3:"ï«";s:3:"辶";s:3:"辶";s:3:"難";s:3:"難";s:3:"響";s:3:"ï«Š";s:3:"é »";s:3:"ï«Œ";s:3:"並";s:3:"ï©°";s:3:"况";s:4:"况";s:3:"å…¨";s:3:"全";s:3:"ä¾€";s:3:"侀";s:3:"å……";s:3:"ï©´";s:3:"冀";s:3:"冀";s:3:"勇";s:4:"勇";s:3:"勺";s:4:"勺";s:3:"å••";s:3:"啕";s:3:"å–™";s:4:"喙";s:3:"å—¢";s:3:"ï©»";s:3:"墳";s:3:"墳";s:3:"奄";s:3:"奄";s:3:"奔";s:3:"ï©¿";s:3:"å©¢";s:3:"婢";s:3:"嬨";s:3:"ïª";s:3:"å»’";s:3:"廒";s:3:"å»™";s:3:"廙";s:3:"彩";s:3:"彩";s:3:"å¾­";s:3:"徭";s:3:"惘";s:3:"惘";s:3:"æ…Ž";s:4:"慎";s:3:"愈";s:3:"愈";s:3:"æ… ";s:3:"慠";s:3:"戴";s:3:"戴";s:3:"æ„";s:3:"ïª";s:3:"æœ";s:3:"搜";s:3:"æ‘’";s:3:"ïª";s:3:"æ•–";s:3:"ïª";s:3:"望";s:4:"望";s:3:"æ–";s:3:"杖";s:3:"æ­¹";s:3:"歹";s:3:"æ»›";s:3:"滛";s:3:"滋";s:4:"滋";s:3:"瀞";s:4:"瀞";s:3:"瞧";s:3:"ïª";s:3:"爵";s:4:"爵";s:3:"犯";s:3:"犯";s:3:"瑱";s:4:"瑱";s:3:"甆";s:3:"甆";s:3:"ç”»";s:3:"画";s:3:"ç˜";s:3:"瘝";s:3:"瘟";s:3:"瘟";s:3:"ç››";s:3:"盛";s:3:"ç›´";s:4:"直";s:3:"çŠ";s:4:"睊";s:3:"ç€";s:3:"着";s:3:"磌";s:4:"ð¯¥";s:3:"窱";s:3:"窱";s:3:"ç±»";s:3:"类";s:3:"çµ›";s:3:"絛";s:3:"ç¼¾";s:3:"缾";s:3:"è’";s:3:"荒";s:3:"è¯";s:3:"華";s:3:"è¹";s:4:"蝹";s:3:"è¥";s:3:"襁";s:3:"覆";s:3:"覆";s:3:"調";s:3:"調";s:3:"è«‹";s:3:"請";s:3:"è«­";s:4:"ð¯§";s:3:"變";s:4:"變";s:3:"輸";s:4:"輸";s:3:"é²";s:3:"遲";s:3:"醙";s:3:"ï«„";s:3:"鉶";s:3:"ï«…";s:3:"陼";s:3:"陼";s:3:"韛";s:3:"韛";s:3:"é ‹";s:4:"頋";s:3:"鬒";s:4:"鬒";s:4:"𢡊";s:3:"ï«";s:4:"𢡄";s:3:"ï«";s:4:"ð£•";s:3:"ï«‘";s:3:"ã®";s:4:"㮝";s:3:"䀘";s:3:"ï«“";s:3:"䀹";s:4:"䀹";s:4:"𥉉";s:3:"ï«•";s:4:"ð¥³";s:3:"ï«–";s:4:"𧻓";s:3:"ï«—";s:3:"齃";s:3:"齃";s:3:"龎";s:3:"ï«™";s:3:"丽";s:4:"丽";s:3:"丸";s:4:"ð¯ ";s:3:"ä¹";s:4:"乁";s:4:"ð „¢";s:4:"𠄢";s:3:"ä½ ";s:4:"你";s:3:"ä¾»";s:4:"侻";s:3:"倂";s:4:"倂";s:3:"åº";s:4:"偺";s:3:"å‚™";s:4:"備";s:3:"åƒ";s:4:"像";s:3:"ã’ž";s:4:"㒞";s:4:"𠘺";s:4:"ð¯ ";s:3:"å…”";s:4:"ð¯ ";s:3:"å…¤";s:4:"ð¯ ";s:3:"å…·";s:4:"具";s:4:"𠔜";s:4:"𠔜";s:3:"ã’¹";s:4:"㒹";s:3:"å…§";s:4:"內";s:3:"å†";s:4:"再";s:4:"ð •‹";s:4:"𠕋";s:3:"冗";s:4:"冗";s:3:"冤";s:4:"冤";s:3:"仌";s:4:"仌";s:3:"冬";s:4:"冬";s:4:"𩇟";s:4:"𩇟";s:3:"凵";s:4:"ð¯ ";s:3:"刃";s:4:"刃";s:3:"ã“Ÿ";s:4:"㓟";s:3:"刻";s:4:"刻";s:3:"剆";s:4:"剆";s:3:"割";s:4:"割";s:3:"剷";s:4:"剷";s:3:"㔕";s:4:"㔕";s:3:"包";s:4:"包";s:3:"匆";s:4:"匆";s:3:"å‰";s:4:"卉";s:3:"åš";s:4:"博";s:3:"å³";s:4:"即";s:3:"å½";s:4:"卽";s:3:"å¿";s:4:"卿";s:4:"𠨬";s:4:"𠨬";s:3:"ç°";s:4:"灰";s:3:"åŠ";s:4:"及";s:3:"åŸ";s:4:"叟";s:4:"ð ­£";s:4:"𠭣";s:3:"å«";s:4:"叫";s:3:"å±";s:4:"叱";s:3:"å†";s:4:"吆";s:3:"å’ž";s:4:"咞";s:3:"å¸";s:4:"吸";s:3:"呈";s:4:"呈";s:3:"周";s:4:"周";s:3:"å’¢";s:4:"咢";s:3:"哶";s:4:"ð¯¡";s:3:"å”";s:4:"唐";s:3:"å•“";s:4:"啓";s:3:"å•£";s:4:"啣";s:3:"å–„";s:4:"善";s:3:"å–«";s:4:"喫";s:3:"å–³";s:4:"喳";s:3:"å—‚";s:4:"嗂";s:3:"圖";s:4:"圖";s:3:"圗";s:4:"ð¯¡";s:3:"噑";s:4:"噑";s:3:"å™´";s:4:"ð¯¡";s:3:"壮";s:4:"壮";s:3:"城";s:4:"城";s:3:"埴";s:4:"埴";s:3:"å ";s:4:"堍";s:3:"åž‹";s:4:"型";s:3:"å ²";s:4:"堲";s:3:"å ±";s:4:"報";s:3:"墬";s:4:"墬";s:4:"𡓤";s:4:"𡓤";s:3:"売";s:4:"売";s:3:"壷";s:4:"壷";s:3:"夆";s:4:"夆";s:3:"多";s:4:"ð¯¡";s:3:"夢";s:4:"夢";s:3:"奢";s:4:"奢";s:4:"𡚨";s:4:"𡚨";s:4:"𡛪";s:4:"𡛪";s:3:"姬";s:4:"姬";s:3:"娛";s:4:"娛";s:3:"娧";s:4:"娧";s:3:"姘";s:4:"姘";s:3:"婦";s:4:"婦";s:3:"ã›®";s:4:"㛮";s:3:"㛼";s:4:"㛼";s:3:"嬈";s:4:"嬈";s:3:"嬾";s:4:"嬾";s:4:"𡧈";s:4:"𡧈";s:3:"寃";s:4:"寃";s:3:"寘";s:4:"寘";s:3:"寳";s:4:"寳";s:4:"𡬘";s:4:"𡬘";s:3:"寿";s:4:"寿";s:3:"å°†";s:4:"将";s:3:"当";s:4:"当";s:3:"å°¢";s:4:"尢";s:3:"ãž";s:4:"㞁";s:3:"å± ";s:4:"屠";s:3:"å³€";s:4:"峀";s:3:"å²";s:4:"岍";s:4:"ð¡·¤";s:4:"𡷤";s:3:"嵃";s:4:"嵃";s:4:"ð¡·¦";s:4:"𡷦";s:3:"åµ®";s:4:"嵮";s:3:"嵫";s:4:"嵫";s:3:"åµ¼";s:4:"嵼";s:3:"å·¡";s:4:"ð¯¢";s:3:"å·¢";s:4:"巢";s:3:"ã ¯";s:4:"㠯";s:3:"å·½";s:4:"巽";s:3:"帨";s:4:"帨";s:3:"帽";s:4:"帽";s:3:"幩";s:4:"幩";s:3:"ã¡¢";s:4:"㡢";s:4:"𢆃";s:4:"𢆃";s:3:"㡼";s:4:"㡼";s:3:"庰";s:4:"庰";s:3:"庳";s:4:"庳";s:3:"庶";s:4:"ð¯¢";s:4:"𪎒";s:4:"ð¯¢";s:3:"廾";s:4:"ð¯¢";s:4:"𢌱";s:4:"𢌱";s:3:"èˆ";s:4:"舁";s:3:"å¼¢";s:4:"弢";s:3:"㣇";s:4:"㣇";s:4:"𣊸";s:4:"𣊸";s:4:"𦇚";s:4:"𦇚";s:3:"å½¢";s:4:"形";s:3:"彫";s:4:"彫";s:3:"㣣";s:4:"㣣";s:3:"徚";s:4:"徚";s:3:"å¿";s:4:"ð¯¢";s:3:"å¿—";s:4:"志";s:3:"忹";s:4:"忹";s:3:"æ‚";s:4:"悁";s:3:"㤺";s:4:"㤺";s:3:"㤜";s:4:"㤜";s:4:"𢛔";s:4:"𢛔";s:3:"惇";s:4:"惇";s:3:"æ…ˆ";s:4:"慈";s:3:"æ…Œ";s:4:"慌";s:3:"æ…º";s:4:"慺";s:3:"憲";s:4:"憲";s:3:"憤";s:4:"憤";s:3:"憯";s:4:"憯";s:3:"懞";s:4:"懞";s:3:"æˆ";s:4:"成";s:3:"戛";s:4:"戛";s:3:"æ‰";s:4:"扝";s:3:"抱";s:4:"抱";s:3:"æ‹”";s:4:"拔";s:3:"æ";s:4:"捐";s:4:"𢬌";s:4:"𢬌";s:3:"挽";s:4:"挽";s:3:"拼";s:4:"拼";s:3:"æ¨";s:4:"捨";s:3:"掃";s:4:"掃";s:3:"æ¤";s:4:"揤";s:4:"𢯱";s:4:"𢯱";s:3:"æ¢";s:4:"搢";s:3:"æ…";s:4:"揅";s:3:"掩";s:4:"ð¯£";s:3:"㨮";s:4:"㨮";s:3:"æ‘©";s:4:"摩";s:3:"摾";s:4:"摾";s:3:"æ’";s:4:"撝";s:3:"æ‘·";s:4:"摷";s:3:"㩬";s:4:"㩬";s:3:"敬";s:4:"敬";s:4:"𣀊";s:4:"𣀊";s:3:"æ—£";s:4:"旣";s:3:"書";s:4:"書";s:3:"晉";s:4:"ð¯£";s:3:"㬙";s:4:"㬙";s:3:"㬈";s:4:"ð¯£";s:3:"㫤";s:4:"㫤";s:3:"冒";s:4:"冒";s:3:"冕";s:4:"冕";s:3:"最";s:4:"最";s:3:"æšœ";s:4:"暜";s:3:"è‚­";s:4:"肭";s:3:"ä™";s:4:"䏙";s:3:"朡";s:4:"朡";s:3:"æž";s:4:"杞";s:3:"æ“";s:4:"杓";s:4:"ð£ƒ";s:4:"ð¯£";s:3:"ã­‰";s:4:"㭉";s:3:"柺";s:4:"柺";s:3:"æž…";s:4:"枅";s:3:"æ¡’";s:4:"桒";s:4:"𣑭";s:4:"𣑭";s:3:"梎";s:4:"梎";s:3:"æ Ÿ";s:4:"栟";s:3:"椔";s:4:"椔";s:3:"楂";s:4:"楂";s:3:"榣";s:4:"榣";s:3:"槪";s:4:"槪";s:3:"檨";s:4:"檨";s:4:"𣚣";s:4:"𣚣";s:3:"æ«›";s:4:"櫛";s:3:"ã°˜";s:4:"㰘";s:3:"次";s:4:"次";s:4:"𣢧";s:4:"𣢧";s:3:"æ­”";s:4:"歔";s:3:"㱎";s:4:"㱎";s:3:"æ­²";s:4:"歲";s:3:"殟";s:4:"殟";s:3:"æ®»";s:4:"殻";s:4:"ð£ª";s:4:"𣪍";s:4:"ð¡´‹";s:4:"𡴋";s:4:"𣫺";s:4:"𣫺";s:3:"汎";s:4:"汎";s:4:"𣲼";s:4:"𣲼";s:3:"沿";s:4:"沿";s:3:"æ³";s:4:"泍";s:3:"汧";s:4:"汧";s:3:"æ´–";s:4:"洖";s:3:"æ´¾";s:4:"派";s:3:"浩";s:4:"浩";s:3:"浸";s:4:"浸";s:3:"涅";s:4:"涅";s:4:"𣴞";s:4:"𣴞";s:3:"æ´´";s:4:"洴";s:3:"港";s:4:"港";s:3:"æ¹®";s:4:"湮";s:3:"ã´³";s:4:"㴳";s:3:"滇";s:4:"滇";s:4:"𣻑";s:4:"ð¯¤";s:3:"æ·¹";s:4:"淹";s:3:"æ½®";s:4:"ð¯¤";s:4:"𣽞";s:4:"ð¯¤";s:4:"𣾎";s:4:"𣾎";s:3:"濆";s:4:"濆";s:3:"瀹";s:4:"瀹";s:3:"瀛";s:4:"瀛";s:3:"㶖";s:4:"㶖";s:3:"çŠ";s:4:"灊";s:3:"ç½";s:4:"災";s:3:"ç·";s:4:"灷";s:3:"ç‚­";s:4:"炭";s:4:"𠔥";s:4:"𠔥";s:3:"ç……";s:4:"煅";s:4:"𤉣";s:4:"ð¯¤";s:3:"熜";s:4:"熜";s:4:"𤎫";s:4:"𤎫";s:3:"爨";s:4:"爨";s:3:"ç‰";s:4:"牐";s:4:"𤘈";s:4:"𤘈";s:3:"犀";s:4:"犀";s:3:"犕";s:4:"犕";s:4:"𤜵";s:4:"𤜵";s:4:"𤠔";s:4:"𤠔";s:3:"çº";s:4:"獺";s:3:"王";s:4:"王";s:3:"㺬";s:4:"㺬";s:3:"玥";s:4:"玥";s:3:"㺸";s:4:"㺸";s:3:"瑇";s:4:"瑇";s:3:"ç‘œ";s:4:"瑜";s:3:"ç’…";s:4:"璅";s:3:"ç“Š";s:4:"瓊";s:3:"ã¼›";s:4:"㼛";s:3:"甤";s:4:"甤";s:4:"𤰶";s:4:"𤰶";s:3:"甾";s:4:"甾";s:4:"𤲒";s:4:"𤲒";s:4:"𢆟";s:4:"𢆟";s:3:"ç˜";s:4:"瘐";s:4:"𤾡";s:4:"𤾡";s:4:"𤾸";s:4:"𤾸";s:4:"ð¥„";s:4:"𥁄";s:3:"㿼";s:4:"㿼";s:3:"䀈";s:4:"䀈";s:4:"𥃳";s:4:"ð¯¥";s:4:"𥃲";s:4:"𥃲";s:4:"𥄙";s:4:"𥄙";s:4:"𥄳";s:4:"𥄳";s:3:"眞";s:4:"眞";s:3:"真";s:4:"真";s:3:"çž‹";s:4:"瞋";s:3:"ä†";s:4:"䁆";s:3:"ä‚–";s:4:"䂖";s:4:"ð¥";s:4:"ð¯¥";s:3:"ç¡Ž";s:4:"硎";s:3:"䃣";s:4:"䃣";s:4:"𥘦";s:4:"𥘦";s:4:"𥚚";s:4:"𥚚";s:4:"𥛅";s:4:"𥛅";s:3:"秫";s:4:"秫";s:3:"䄯";s:4:"䄯";s:3:"ç©Š";s:4:"穊";s:3:"ç©";s:4:"穏";s:4:"𥥼";s:4:"𥥼";s:4:"𥪧";s:4:"𥪧";s:3:"ç«®";s:4:"竮";s:3:"䈂";s:4:"䈂";s:4:"𥮫";s:4:"𥮫";s:3:"篆";s:4:"篆";s:3:"築";s:4:"築";s:3:"䈧";s:4:"䈧";s:4:"𥲀";s:4:"𥲀";s:3:"ç³’";s:4:"糒";s:3:"䊠";s:4:"䊠";s:3:"糨";s:4:"糨";s:3:"ç³£";s:4:"糣";s:3:"ç´€";s:4:"紀";s:4:"𥾆";s:4:"𥾆";s:3:"çµ£";s:4:"絣";s:3:"äŒ";s:4:"䌁";s:3:"ç·‡";s:4:"緇";s:3:"縂";s:4:"縂";s:3:"ç¹…";s:4:"繅";s:3:"䌴";s:4:"䌴";s:4:"𦈨";s:4:"𦈨";s:4:"𦉇";s:4:"𦉇";s:3:"ä™";s:4:"䍙";s:4:"𦋙";s:4:"𦋙";s:3:"罺";s:4:"罺";s:4:"𦌾";s:4:"𦌾";s:3:"羕";s:4:"羕";s:3:"翺";s:4:"翺";s:4:"𦓚";s:4:"𦓚";s:4:"𦔣";s:4:"𦔣";s:3:"è ";s:4:"聠";s:4:"𦖨";s:4:"𦖨";s:3:"è°";s:4:"聰";s:4:"ð£Ÿ";s:4:"𣍟";s:3:"ä•";s:4:"ð¯¦";s:3:"育";s:4:"育";s:3:"脃";s:4:"脃";s:3:"ä‹";s:4:"䐋";s:3:"脾";s:4:"脾";s:3:"媵";s:4:"媵";s:4:"𦞧";s:4:"𦞧";s:4:"𦞵";s:4:"𦞵";s:4:"𣎓";s:4:"𣎓";s:4:"𣎜";s:4:"𣎜";s:3:"舄";s:4:"舄";s:3:"辞";s:4:"ð¯¦";s:3:"ä‘«";s:4:"䑫";s:3:"芑";s:4:"ð¯¦";s:3:"芋";s:4:"ð¯¦";s:3:"èŠ";s:4:"芝";s:3:"劳";s:4:"劳";s:3:"花";s:4:"花";s:3:"芳";s:4:"芳";s:3:"芽";s:4:"芽";s:3:"苦";s:4:"苦";s:4:"𦬼";s:4:"𦬼";s:3:"èŒ";s:4:"茝";s:3:"è£";s:4:"荣";s:3:"莭";s:4:"莭";s:3:"茣";s:4:"茣";s:3:"莽";s:4:"ð¯¦";s:3:"è§";s:4:"菧";s:3:"è“";s:4:"荓";s:3:"èŠ";s:4:"菊";s:3:"èŒ";s:4:"菌";s:3:"èœ";s:4:"菜";s:4:"𦰶";s:4:"𦰶";s:4:"𦵫";s:4:"𦵫";s:4:"𦳕";s:4:"𦳕";s:3:"䔫";s:4:"䔫";s:3:"蓱";s:4:"蓱";s:3:"蓳";s:4:"蓳";s:3:"è”–";s:4:"蔖";s:4:"ð§Š";s:4:"𧏊";s:3:"蕤";s:4:"蕤";s:4:"𦼬";s:4:"𦼬";s:3:"ä•";s:4:"䕝";s:3:"ä•¡";s:4:"䕡";s:4:"𦾱";s:4:"𦾱";s:4:"𧃒";s:4:"𧃒";s:3:"ä•«";s:4:"䕫";s:3:"è™";s:4:"虐";s:3:"虧";s:4:"虧";s:3:"虩";s:4:"虩";s:3:"èš©";s:4:"蚩";s:3:"蚈";s:4:"蚈";s:3:"蜎";s:4:"蜎";s:3:"蛢";s:4:"蛢";s:3:"蜨";s:4:"蜨";s:3:"è«";s:4:"蝫";s:3:"螆";s:4:"螆";s:3:"ä——";s:4:"䗗";s:3:"蟡";s:4:"蟡";s:3:"è ";s:4:"ð¯§";s:3:"ä—¹";s:4:"䗹";s:3:"è¡ ";s:4:"衠";s:3:"è¡£";s:4:"衣";s:4:"𧙧";s:4:"𧙧";s:3:"裗";s:4:"裗";s:3:"裞";s:4:"裞";s:3:"䘵";s:4:"䘵";s:3:"裺";s:4:"裺";s:3:"ã’»";s:4:"㒻";s:4:"𧢮";s:4:"𧢮";s:4:"𧥦";s:4:"𧥦";s:3:"äš¾";s:4:"ð¯§";s:3:"䛇";s:4:"䛇";s:3:"誠";s:4:"ð¯§";s:3:"豕";s:4:"豕";s:4:"𧲨";s:4:"𧲨";s:3:"貫";s:4:"貫";s:3:"è³";s:4:"賁";s:3:"è´›";s:4:"贛";s:3:"èµ·";s:4:"起";s:4:"𧼯";s:4:"𧼯";s:4:"ð  „";s:4:"𠠄";s:3:"è·‹";s:4:"跋";s:3:"趼";s:4:"趼";s:3:"è·°";s:4:"跰";s:4:"𠣞";s:4:"ð¯§";s:3:"è»”";s:4:"軔";s:4:"𨗒";s:4:"𨗒";s:4:"𨗭";s:4:"𨗭";s:3:"é‚”";s:4:"邔";s:3:"郱";s:4:"郱";s:3:"é„‘";s:4:"鄑";s:4:"𨜮";s:4:"𨜮";s:3:"é„›";s:4:"鄛";s:3:"鈸";s:4:"鈸";s:3:"é‹—";s:4:"鋗";s:3:"鋘";s:4:"鋘";s:3:"鉼";s:4:"鉼";s:3:"é¹";s:4:"鏹";s:3:"é•";s:4:"鐕";s:4:"𨯺";s:4:"𨯺";s:3:"é–‹";s:4:"開";s:3:"䦕";s:4:"䦕";s:3:"é–·";s:4:"閷";s:4:"𨵷";s:4:"𨵷";s:3:"䧦";s:4:"䧦";s:3:"雃";s:4:"雃";s:3:"嶲";s:4:"嶲";s:3:"霣";s:4:"霣";s:4:"ð©……";s:4:"𩅅";s:4:"𩈚";s:4:"𩈚";s:3:"ä©®";s:4:"䩮";s:3:"䩶";s:4:"䩶";s:3:"韠";s:4:"韠";s:4:"ð©Š";s:4:"𩐊";s:3:"䪲";s:4:"䪲";s:4:"ð©’–";s:4:"𩒖";s:3:"é ©";s:4:"頩";s:4:"ð©–¶";s:4:"ð¯¨";s:3:"飢";s:4:"飢";s:3:"䬳";s:4:"䬳";s:3:"餩";s:4:"餩";s:3:"馧";s:4:"馧";s:3:"駂";s:4:"駂";s:3:"駾";s:4:"駾";s:3:"䯎";s:4:"䯎";s:4:"𩬰";s:4:"𩬰";s:3:"é±€";s:4:"鱀";s:3:"é³½";s:4:"鳽";s:3:"䳎";s:4:"ð¯¨";s:3:"ä³­";s:4:"䳭";s:3:"鵧";s:4:"ð¯¨";s:4:"𪃎";s:4:"ð¯¨";s:3:"䳸";s:4:"䳸";s:4:"𪄅";s:4:"𪄅";s:4:"𪈎";s:4:"𪈎";s:4:"𪊑";s:4:"𪊑";s:3:"麻";s:4:"麻";s:3:"äµ–";s:4:"䵖";s:3:"黹";s:4:"黹";s:3:"黾";s:4:"黾";s:3:"é¼…";s:4:"鼅";s:3:"é¼";s:4:"鼏";s:3:"é¼–";s:4:"鼖";s:3:"é¼»";s:4:"鼻";s:4:"𪘀";s:4:"ð¯¨";}' );
-UtfNormal::$utfCanonicalDecomp = unserialize( 'a:2043:{s:2:"À";s:3:"AÌ€";s:2:"Ã";s:3:"AÌ";s:2:"Â";s:3:"AÌ‚";s:2:"Ã";s:3:"Ã";s:2:"Ä";s:3:"Ä";s:2:"Ã…";s:3:"AÌŠ";s:2:"Ç";s:3:"Ç";s:2:"È";s:3:"EÌ€";s:2:"É";s:3:"EÌ";s:2:"Ê";s:3:"EÌ‚";s:2:"Ë";s:3:"Ë";s:2:"ÃŒ";s:3:"IÌ€";s:2:"Ã";s:3:"IÌ";s:2:"ÃŽ";s:3:"IÌ‚";s:2:"Ã";s:3:"Ï";s:2:"Ñ";s:3:"Ñ";s:2:"Ã’";s:3:"OÌ€";s:2:"Ó";s:3:"OÌ";s:2:"Ô";s:3:"OÌ‚";s:2:"Õ";s:3:"Õ";s:2:"Ö";s:3:"Ö";s:2:"Ù";s:3:"UÌ€";s:2:"Ú";s:3:"UÌ";s:2:"Û";s:3:"UÌ‚";s:2:"Ãœ";s:3:"Ü";s:2:"Ã";s:3:"YÌ";s:2:"à";s:3:"aÌ€";s:2:"á";s:3:"aÌ";s:2:"â";s:3:"aÌ‚";s:2:"ã";s:3:"ã";s:2:"ä";s:3:"ä";s:2:"Ã¥";s:3:"aÌŠ";s:2:"ç";s:3:"ç";s:2:"è";s:3:"eÌ€";s:2:"é";s:3:"eÌ";s:2:"ê";s:3:"eÌ‚";s:2:"ë";s:3:"ë";s:2:"ì";s:3:"iÌ€";s:2:"í";s:3:"iÌ";s:2:"î";s:3:"iÌ‚";s:2:"ï";s:3:"ï";s:2:"ñ";s:3:"ñ";s:2:"ò";s:3:"oÌ€";s:2:"ó";s:3:"oÌ";s:2:"ô";s:3:"oÌ‚";s:2:"õ";s:3:"õ";s:2:"ö";s:3:"ö";s:2:"ù";s:3:"uÌ€";s:2:"ú";s:3:"uÌ";s:2:"û";s:3:"uÌ‚";s:2:"ü";s:3:"ü";s:2:"ý";s:3:"yÌ";s:2:"ÿ";s:3:"ÿ";s:2:"Ä€";s:3:"AÌ„";s:2:"Ä";s:3:"aÌ„";s:2:"Ä‚";s:3:"Ă";s:2:"ă";s:3:"ă";s:2:"Ä„";s:3:"Ą";s:2:"Ä…";s:3:"ą";s:2:"Ć";s:3:"CÌ";s:2:"ć";s:3:"cÌ";s:2:"Ĉ";s:3:"CÌ‚";s:2:"ĉ";s:3:"cÌ‚";s:2:"ÄŠ";s:3:"Ċ";s:2:"Ä‹";s:3:"ċ";s:2:"ÄŒ";s:3:"CÌŒ";s:2:"Ä";s:3:"cÌŒ";s:2:"ÄŽ";s:3:"DÌŒ";s:2:"Ä";s:3:"dÌŒ";s:2:"Ä’";s:3:"EÌ„";s:2:"Ä“";s:3:"eÌ„";s:2:"Ä”";s:3:"Ĕ";s:2:"Ä•";s:3:"ĕ";s:2:"Ä–";s:3:"Ė";s:2:"Ä—";s:3:"ė";s:2:"Ę";s:3:"Ę";s:2:"Ä™";s:3:"ę";s:2:"Äš";s:3:"EÌŒ";s:2:"Ä›";s:3:"eÌŒ";s:2:"Äœ";s:3:"GÌ‚";s:2:"Ä";s:3:"gÌ‚";s:2:"Äž";s:3:"Ğ";s:2:"ÄŸ";s:3:"ğ";s:2:"Ä ";s:3:"Ġ";s:2:"Ä¡";s:3:"ġ";s:2:"Ä¢";s:3:"Ģ";s:2:"Ä£";s:3:"ģ";s:2:"Ĥ";s:3:"HÌ‚";s:2:"Ä¥";s:3:"hÌ‚";s:2:"Ĩ";s:3:"Ĩ";s:2:"Ä©";s:3:"ĩ";s:2:"Ī";s:3:"IÌ„";s:2:"Ä«";s:3:"iÌ„";s:2:"Ĭ";s:3:"Ĭ";s:2:"Ä­";s:3:"ĭ";s:2:"Ä®";s:3:"Į";s:2:"į";s:3:"į";s:2:"Ä°";s:3:"İ";s:2:"Ä´";s:3:"JÌ‚";s:2:"ĵ";s:3:"jÌ‚";s:2:"Ķ";s:3:"Ķ";s:2:"Ä·";s:3:"ķ";s:2:"Ĺ";s:3:"LÌ";s:2:"ĺ";s:3:"lÌ";s:2:"Ä»";s:3:"Ļ";s:2:"ļ";s:3:"ļ";s:2:"Ľ";s:3:"LÌŒ";s:2:"ľ";s:3:"lÌŒ";s:2:"Ń";s:3:"NÌ";s:2:"Å„";s:3:"nÌ";s:2:"Å…";s:3:"Ņ";s:2:"ņ";s:3:"ņ";s:2:"Ň";s:3:"NÌŒ";s:2:"ň";s:3:"nÌŒ";s:2:"ÅŒ";s:3:"OÌ„";s:2:"Å";s:3:"oÌ„";s:2:"ÅŽ";s:3:"Ŏ";s:2:"Å";s:3:"ŏ";s:2:"Å";s:3:"OÌ‹";s:2:"Å‘";s:3:"oÌ‹";s:2:"Å”";s:3:"RÌ";s:2:"Å•";s:3:"rÌ";s:2:"Å–";s:3:"Ŗ";s:2:"Å—";s:3:"ŗ";s:2:"Ř";s:3:"RÌŒ";s:2:"Å™";s:3:"rÌŒ";s:2:"Åš";s:3:"SÌ";s:2:"Å›";s:3:"sÌ";s:2:"Åœ";s:3:"SÌ‚";s:2:"Å";s:3:"sÌ‚";s:2:"Åž";s:3:"Ş";s:2:"ÅŸ";s:3:"ş";s:2:"Å ";s:3:"SÌŒ";s:2:"Å¡";s:3:"sÌŒ";s:2:"Å¢";s:3:"Ţ";s:2:"Å£";s:3:"ţ";s:2:"Ť";s:3:"TÌŒ";s:2:"Å¥";s:3:"tÌŒ";s:2:"Ũ";s:3:"Ũ";s:2:"Å©";s:3:"ũ";s:2:"Ū";s:3:"UÌ„";s:2:"Å«";s:3:"uÌ„";s:2:"Ŭ";s:3:"Ŭ";s:2:"Å­";s:3:"ŭ";s:2:"Å®";s:3:"UÌŠ";s:2:"ů";s:3:"uÌŠ";s:2:"Å°";s:3:"UÌ‹";s:2:"ű";s:3:"uÌ‹";s:2:"Ų";s:3:"Ų";s:2:"ų";s:3:"ų";s:2:"Å´";s:3:"WÌ‚";s:2:"ŵ";s:3:"wÌ‚";s:2:"Ŷ";s:3:"YÌ‚";s:2:"Å·";s:3:"yÌ‚";s:2:"Ÿ";s:3:"Ÿ";s:2:"Ź";s:3:"ZÌ";s:2:"ź";s:3:"zÌ";s:2:"Å»";s:3:"Ż";s:2:"ż";s:3:"ż";s:2:"Ž";s:3:"ZÌŒ";s:2:"ž";s:3:"zÌŒ";s:2:"Æ ";s:3:"OÌ›";s:2:"Æ¡";s:3:"oÌ›";s:2:"Ư";s:3:"UÌ›";s:2:"Æ°";s:3:"uÌ›";s:2:"Ç";s:3:"AÌŒ";s:2:"ÇŽ";s:3:"aÌŒ";s:2:"Ç";s:3:"IÌŒ";s:2:"Ç";s:3:"iÌŒ";s:2:"Ç‘";s:3:"OÌŒ";s:2:"Ç’";s:3:"oÌŒ";s:2:"Ç“";s:3:"UÌŒ";s:2:"Ç”";s:3:"uÌŒ";s:2:"Ç•";s:5:"Ǖ";s:2:"Ç–";s:5:"ǖ";s:2:"Ç—";s:5:"ÜÌ";s:2:"ǘ";s:5:"üÌ";s:2:"Ç™";s:5:"Ǚ";s:2:"Çš";s:5:"ǚ";s:2:"Ç›";s:5:"Ǜ";s:2:"Çœ";s:5:"ǜ";s:2:"Çž";s:5:"Ǟ";s:2:"ÇŸ";s:5:"ǟ";s:2:"Ç ";s:5:"Ǡ";s:2:"Ç¡";s:5:"ǡ";s:2:"Ç¢";s:4:"Ǣ";s:2:"Ç£";s:4:"ǣ";s:2:"Ǧ";s:3:"GÌŒ";s:2:"ǧ";s:3:"gÌŒ";s:2:"Ǩ";s:3:"KÌŒ";s:2:"Ç©";s:3:"kÌŒ";s:2:"Ǫ";s:3:"Ǫ";s:2:"Ç«";s:3:"ǫ";s:2:"Ǭ";s:5:"Ǭ";s:2:"Ç­";s:5:"ǭ";s:2:"Ç®";s:4:"Æ·ÌŒ";s:2:"ǯ";s:4:"Ê’ÌŒ";s:2:"Ç°";s:3:"jÌŒ";s:2:"Ç´";s:3:"GÌ";s:2:"ǵ";s:3:"gÌ";s:2:"Ǹ";s:3:"NÌ€";s:2:"ǹ";s:3:"nÌ€";s:2:"Ǻ";s:5:"AÌŠÌ";s:2:"Ç»";s:5:"aÌŠÌ";s:2:"Ǽ";s:4:"ÆÌ";s:2:"ǽ";s:4:"æÌ";s:2:"Ǿ";s:4:"ØÌ";s:2:"Ç¿";s:4:"øÌ";s:2:"È€";s:3:"AÌ";s:2:"È";s:3:"aÌ";s:2:"È‚";s:3:"AÌ‘";s:2:"ȃ";s:3:"aÌ‘";s:2:"È„";s:3:"EÌ";s:2:"È…";s:3:"eÌ";s:2:"Ȇ";s:3:"EÌ‘";s:2:"ȇ";s:3:"eÌ‘";s:2:"Ȉ";s:3:"IÌ";s:2:"ȉ";s:3:"iÌ";s:2:"ÈŠ";s:3:"IÌ‘";s:2:"È‹";s:3:"iÌ‘";s:2:"ÈŒ";s:3:"OÌ";s:2:"È";s:3:"oÌ";s:2:"ÈŽ";s:3:"OÌ‘";s:2:"È";s:3:"oÌ‘";s:2:"È";s:3:"RÌ";s:2:"È‘";s:3:"rÌ";s:2:"È’";s:3:"RÌ‘";s:2:"È“";s:3:"rÌ‘";s:2:"È”";s:3:"UÌ";s:2:"È•";s:3:"uÌ";s:2:"È–";s:3:"UÌ‘";s:2:"È—";s:3:"uÌ‘";s:2:"Ș";s:3:"Ș";s:2:"È™";s:3:"ș";s:2:"Èš";s:3:"Ț";s:2:"È›";s:3:"ț";s:2:"Èž";s:3:"HÌŒ";s:2:"ÈŸ";s:3:"hÌŒ";s:2:"Ȧ";s:3:"Ȧ";s:2:"ȧ";s:3:"ȧ";s:2:"Ȩ";s:3:"Ȩ";s:2:"È©";s:3:"ȩ";s:2:"Ȫ";s:5:"Ȫ";s:2:"È«";s:5:"ȫ";s:2:"Ȭ";s:5:"Ȭ";s:2:"È­";s:5:"ȭ";s:2:"È®";s:3:"Ȯ";s:2:"ȯ";s:3:"ȯ";s:2:"È°";s:5:"Ȱ";s:2:"ȱ";s:5:"ȱ";s:2:"Ȳ";s:3:"YÌ„";s:2:"ȳ";s:3:"yÌ„";s:2:"Í€";s:2:"Ì€";s:2:"Í";s:2:"Ì";s:2:"̓";s:2:"Ì“";s:2:"Í„";s:4:"̈Ì";s:2:"Í´";s:2:"ʹ";s:2:";";s:1:";";s:2:"Î…";s:4:"¨Ì";s:2:"Ά";s:4:"ΑÌ";s:2:"·";s:2:"·";s:2:"Έ";s:4:"ΕÌ";s:2:"Ή";s:4:"ΗÌ";s:2:"Ί";s:4:"ΙÌ";s:2:"ÎŒ";s:4:"ΟÌ";s:2:"ÎŽ";s:4:"Î¥Ì";s:2:"Î";s:4:"ΩÌ";s:2:"Î";s:6:"ϊÌ";s:2:"Ϊ";s:4:"Ϊ";s:2:"Ϋ";s:4:"Ϋ";s:2:"ά";s:4:"αÌ";s:2:"έ";s:4:"εÌ";s:2:"ή";s:4:"ηÌ";s:2:"ί";s:4:"ιÌ";s:2:"ΰ";s:6:"ϋÌ";s:2:"ÏŠ";s:4:"ϊ";s:2:"Ï‹";s:4:"ϋ";s:2:"ÏŒ";s:4:"οÌ";s:2:"Ï";s:4:"Ï…Ì";s:2:"ÏŽ";s:4:"ωÌ";s:2:"Ï“";s:4:"Ï’Ì";s:2:"Ï”";s:4:"ϔ";s:2:"Ѐ";s:4:"Ѐ";s:2:"Ð";s:4:"Ё";s:2:"Ѓ";s:4:"ГÌ";s:2:"Ї";s:4:"Ї";s:2:"ÐŒ";s:4:"КÌ";s:2:"Ð";s:4:"Ѝ";s:2:"ÐŽ";s:4:"Ў";s:2:"Й";s:4:"Й";s:2:"й";s:4:"й";s:2:"Ñ";s:4:"ѐ";s:2:"Ñ‘";s:4:"ё";s:2:"Ñ“";s:4:"гÌ";s:2:"Ñ—";s:4:"ї";s:2:"Ñœ";s:4:"кÌ";s:2:"Ñ";s:4:"ѝ";s:2:"Ñž";s:4:"ў";s:2:"Ѷ";s:4:"Ñ´Ì";s:2:"Ñ·";s:4:"ѵÌ";s:2:"Ó";s:4:"Ӂ";s:2:"Ó‚";s:4:"ӂ";s:2:"Ó";s:4:"Ð̆";s:2:"Ó‘";s:4:"ӑ";s:2:"Ó’";s:4:"Ð̈";s:2:"Ó“";s:4:"ӓ";s:2:"Ó–";s:4:"Ӗ";s:2:"Ó—";s:4:"ӗ";s:2:"Óš";s:4:"Ӛ";s:2:"Ó›";s:4:"ӛ";s:2:"Óœ";s:4:"Ӝ";s:2:"Ó";s:4:"ӝ";s:2:"Óž";s:4:"Ӟ";s:2:"ÓŸ";s:4:"ӟ";s:2:"Ó¢";s:4:"Ӣ";s:2:"Ó£";s:4:"ӣ";s:2:"Ó¤";s:4:"Ӥ";s:2:"Ó¥";s:4:"ӥ";s:2:"Ó¦";s:4:"Ӧ";s:2:"Ó§";s:4:"ӧ";s:2:"Óª";s:4:"Ӫ";s:2:"Ó«";s:4:"ӫ";s:2:"Ó¬";s:4:"Ӭ";s:2:"Ó­";s:4:"Ñ̈";s:2:"Ó®";s:4:"Ӯ";s:2:"Ó¯";s:4:"ӯ";s:2:"Ó°";s:4:"Ӱ";s:2:"Ó±";s:4:"ӱ";s:2:"Ó²";s:4:"Ӳ";s:2:"Ó³";s:4:"ӳ";s:2:"Ó´";s:4:"Ӵ";s:2:"Óµ";s:4:"ӵ";s:2:"Ó¸";s:4:"Ӹ";s:2:"Ó¹";s:4:"ӹ";s:2:"Ø¢";s:4:"آ";s:2:"Ø£";s:4:"أ";s:2:"ؤ";s:4:"ÙˆÙ”";s:2:"Ø¥";s:4:"إ";s:2:"ئ";s:4:"ÙŠÙ”";s:2:"Û€";s:4:"Û•Ù”";s:2:"Û‚";s:4:"ÛÙ”";s:2:"Û“";s:4:"Û’Ù”";s:3:"ऩ";s:6:"ऩ";s:3:"ऱ";s:6:"ऱ";s:3:"ऴ";s:6:"ऴ";s:3:"क़";s:6:"क़";s:3:"ख़";s:6:"ख़";s:3:"ग़";s:6:"ग़";s:3:"ज़";s:6:"ज़";s:3:"ड़";s:6:"ड़";s:3:"à¥";s:6:"ढ़";s:3:"फ़";s:6:"फ़";s:3:"य़";s:6:"य़";s:3:"ো";s:6:"ো";s:3:"ৌ";s:6:"ৌ";s:3:"ড়";s:6:"ড়";s:3:"à§";s:6:"ঢ়";s:3:"য়";s:6:"য়";s:3:"ਲ਼";s:6:"ਲ਼";s:3:"ਸ਼";s:6:"ਸ਼";s:3:"à©™";s:6:"ਖ਼";s:3:"à©š";s:6:"ਗ਼";s:3:"à©›";s:6:"ਜ਼";s:3:"à©ž";s:6:"ਫ਼";s:3:"à­ˆ";s:6:"ୈ";s:3:"à­‹";s:6:"ୋ";s:3:"à­Œ";s:6:"ୌ";s:3:"à­œ";s:6:"ଡ଼";s:3:"à­";s:6:"ଢ଼";s:3:"à®”";s:6:"ஔ";s:3:"ொ";s:6:"ொ";s:3:"ோ";s:6:"ோ";s:3:"ௌ";s:6:"ௌ";s:3:"ై";s:6:"ై";s:3:"à³€";s:6:"ೀ";s:3:"ೇ";s:6:"ೇ";s:3:"ೈ";s:6:"ೈ";s:3:"ೊ";s:6:"ೊ";s:3:"ೋ";s:9:"ೋ";s:3:"ൊ";s:6:"ൊ";s:3:"ോ";s:6:"ോ";s:3:"ൌ";s:6:"ൌ";s:3:"à·š";s:6:"ේ";s:3:"à·œ";s:6:"à·™à·";s:3:"à·";s:9:"à·™à·à·Š";s:3:"à·ž";s:6:"ෞ";s:3:"གྷ";s:6:"གྷ";s:3:"à½";s:6:"ཌྷ";s:3:"དྷ";s:6:"དྷ";s:3:"བྷ";s:6:"བྷ";s:3:"ཛྷ";s:6:"ཛྷ";s:3:"ཀྵ";s:6:"ཀྵ";s:3:"ཱི";s:6:"ཱི";s:3:"ཱུ";s:6:"ཱུ";s:3:"ྲྀ";s:6:"ྲྀ";s:3:"ླྀ";s:6:"ླྀ";s:3:"à¾";s:6:"ཱྀ";s:3:"ྒྷ";s:6:"ྒྷ";s:3:"à¾";s:6:"ྜྷ";s:3:"ྡྷ";s:6:"ྡྷ";s:3:"ྦྷ";s:6:"ྦྷ";s:3:"ྫྷ";s:6:"ྫྷ";s:3:"ྐྵ";s:6:"à¾à¾µ";s:3:"ဦ";s:6:"ဦ";s:3:"ᬆ";s:6:"ᬆ";s:3:"ᬈ";s:6:"ᬈ";s:3:"ᬊ";s:6:"ᬊ";s:3:"ᬌ";s:6:"ᬌ";s:3:"ᬎ";s:6:"á¬á¬µ";s:3:"ᬒ";s:6:"ᬒ";s:3:"ᬻ";s:6:"ᬻ";s:3:"ᬽ";s:6:"ᬽ";s:3:"á­€";s:6:"ᭀ";s:3:"á­";s:6:"ᭁ";s:3:"á­ƒ";s:6:"ᭃ";s:3:"Ḁ";s:3:"AÌ¥";s:3:"á¸";s:3:"aÌ¥";s:3:"Ḃ";s:3:"Ḃ";s:3:"ḃ";s:3:"ḃ";s:3:"Ḅ";s:3:"BÌ£";s:3:"ḅ";s:3:"bÌ£";s:3:"Ḇ";s:3:"Ḇ";s:3:"ḇ";s:3:"ḇ";s:3:"Ḉ";s:5:"ÇÌ";s:3:"ḉ";s:5:"çÌ";s:3:"Ḋ";s:3:"Ḋ";s:3:"ḋ";s:3:"ḋ";s:3:"Ḍ";s:3:"DÌ£";s:3:"á¸";s:3:"dÌ£";s:3:"Ḏ";s:3:"Ḏ";s:3:"á¸";s:3:"ḏ";s:3:"á¸";s:3:"Ḑ";s:3:"ḑ";s:3:"ḑ";s:3:"Ḓ";s:3:"DÌ­";s:3:"ḓ";s:3:"dÌ­";s:3:"Ḕ";s:5:"EÌ„Ì€";s:3:"ḕ";s:5:"eÌ„Ì€";s:3:"Ḗ";s:5:"EÌ„Ì";s:3:"ḗ";s:5:"eÌ„Ì";s:3:"Ḙ";s:3:"EÌ­";s:3:"ḙ";s:3:"eÌ­";s:3:"Ḛ";s:3:"EÌ°";s:3:"ḛ";s:3:"eÌ°";s:3:"Ḝ";s:5:"Ḝ";s:3:"á¸";s:5:"ḝ";s:3:"Ḟ";s:3:"Ḟ";s:3:"ḟ";s:3:"ḟ";s:3:"Ḡ";s:3:"GÌ„";s:3:"ḡ";s:3:"gÌ„";s:3:"Ḣ";s:3:"Ḣ";s:3:"ḣ";s:3:"ḣ";s:3:"Ḥ";s:3:"HÌ£";s:3:"ḥ";s:3:"hÌ£";s:3:"Ḧ";s:3:"Ḧ";s:3:"ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"Ḩ";s:3:"ḩ";s:3:"ḩ";s:3:"Ḫ";s:3:"HÌ®";s:3:"ḫ";s:3:"hÌ®";s:3:"Ḭ";s:3:"IÌ°";s:3:"ḭ";s:3:"iÌ°";s:3:"Ḯ";s:5:"ÏÌ";s:3:"ḯ";s:5:"ïÌ";s:3:"Ḱ";s:3:"KÌ";s:3:"ḱ";s:3:"kÌ";s:3:"Ḳ";s:3:"KÌ£";s:3:"ḳ";s:3:"kÌ£";s:3:"Ḵ";s:3:"Ḵ";s:3:"ḵ";s:3:"ḵ";s:3:"Ḷ";s:3:"LÌ£";s:3:"ḷ";s:3:"lÌ£";s:3:"Ḹ";s:5:"Ḹ";s:3:"ḹ";s:5:"ḹ";s:3:"Ḻ";s:3:"Ḻ";s:3:"ḻ";s:3:"ḻ";s:3:"Ḽ";s:3:"LÌ­";s:3:"ḽ";s:3:"lÌ­";s:3:"Ḿ";s:3:"MÌ";s:3:"ḿ";s:3:"mÌ";s:3:"á¹€";s:3:"Ṁ";s:3:"á¹";s:3:"ṁ";s:3:"Ṃ";s:3:"MÌ£";s:3:"ṃ";s:3:"mÌ£";s:3:"Ṅ";s:3:"Ṅ";s:3:"á¹…";s:3:"ṅ";s:3:"Ṇ";s:3:"NÌ£";s:3:"ṇ";s:3:"nÌ£";s:3:"Ṉ";s:3:"Ṉ";s:3:"ṉ";s:3:"ṉ";s:3:"Ṋ";s:3:"NÌ­";s:3:"ṋ";s:3:"nÌ­";s:3:"Ṍ";s:5:"ÕÌ";s:3:"á¹";s:5:"õÌ";s:3:"Ṏ";s:5:"Ṏ";s:3:"á¹";s:5:"ṏ";s:3:"á¹";s:5:"OÌ„Ì€";s:3:"ṑ";s:5:"oÌ„Ì€";s:3:"á¹’";s:5:"OÌ„Ì";s:3:"ṓ";s:5:"oÌ„Ì";s:3:"á¹”";s:3:"PÌ";s:3:"ṕ";s:3:"pÌ";s:3:"á¹–";s:3:"Ṗ";s:3:"á¹—";s:3:"ṗ";s:3:"Ṙ";s:3:"Ṙ";s:3:"á¹™";s:3:"ṙ";s:3:"Ṛ";s:3:"RÌ£";s:3:"á¹›";s:3:"rÌ£";s:3:"Ṝ";s:5:"Ṝ";s:3:"á¹";s:5:"ṝ";s:3:"Ṟ";s:3:"Ṟ";s:3:"ṟ";s:3:"ṟ";s:3:"á¹ ";s:3:"Ṡ";s:3:"ṡ";s:3:"ṡ";s:3:"á¹¢";s:3:"SÌ£";s:3:"á¹£";s:3:"sÌ£";s:3:"Ṥ";s:5:"SÌ̇";s:3:"á¹¥";s:5:"sÌ̇";s:3:"Ṧ";s:5:"Ṧ";s:3:"ṧ";s:5:"ṧ";s:3:"Ṩ";s:5:"Ṩ";s:3:"ṩ";s:5:"ṩ";s:3:"Ṫ";s:3:"Ṫ";s:3:"ṫ";s:3:"ṫ";s:3:"Ṭ";s:3:"TÌ£";s:3:"á¹­";s:3:"tÌ£";s:3:"á¹®";s:3:"Ṯ";s:3:"ṯ";s:3:"ṯ";s:3:"á¹°";s:3:"TÌ­";s:3:"á¹±";s:3:"tÌ­";s:3:"á¹²";s:3:"Ṳ";s:3:"á¹³";s:3:"ṳ";s:3:"á¹´";s:3:"UÌ°";s:3:"á¹µ";s:3:"uÌ°";s:3:"Ṷ";s:3:"UÌ­";s:3:"á¹·";s:3:"uÌ­";s:3:"Ṹ";s:5:"ŨÌ";s:3:"á¹¹";s:5:"ũÌ";s:3:"Ṻ";s:5:"Ṻ";s:3:"á¹»";s:5:"ṻ";s:3:"á¹¼";s:3:"Ṽ";s:3:"á¹½";s:3:"ṽ";s:3:"á¹¾";s:3:"VÌ£";s:3:"ṿ";s:3:"vÌ£";s:3:"Ẁ";s:3:"WÌ€";s:3:"áº";s:3:"wÌ€";s:3:"Ẃ";s:3:"WÌ";s:3:"ẃ";s:3:"wÌ";s:3:"Ẅ";s:3:"Ẅ";s:3:"ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"Ẇ";s:3:"ẇ";s:3:"ẇ";s:3:"Ẉ";s:3:"WÌ£";s:3:"ẉ";s:3:"wÌ£";s:3:"Ẋ";s:3:"Ẋ";s:3:"ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"Ẍ";s:3:"áº";s:3:"ẍ";s:3:"Ẏ";s:3:"Ẏ";s:3:"áº";s:3:"ẏ";s:3:"áº";s:3:"ZÌ‚";s:3:"ẑ";s:3:"zÌ‚";s:3:"Ẓ";s:3:"ZÌ£";s:3:"ẓ";s:3:"zÌ£";s:3:"Ẕ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẕ";s:3:"ẖ";s:3:"ẖ";s:3:"ẗ";s:3:"ẗ";s:3:"ẘ";s:3:"wÌŠ";s:3:"ẙ";s:3:"yÌŠ";s:3:"ẛ";s:4:"ẛ";s:3:"Ạ";s:3:"AÌ£";s:3:"ạ";s:3:"aÌ£";s:3:"Ả";s:3:"Ả";s:3:"ả";s:3:"ả";s:3:"Ấ";s:5:"AÌ‚Ì";s:3:"ấ";s:5:"aÌ‚Ì";s:3:"Ầ";s:5:"AÌ‚Ì€";s:3:"ầ";s:5:"aÌ‚Ì€";s:3:"Ẩ";s:5:"Ẩ";s:3:"ẩ";s:5:"ẩ";s:3:"Ẫ";s:5:"Ẫ";s:3:"ẫ";s:5:"ẫ";s:3:"Ậ";s:5:"Ậ";s:3:"ậ";s:5:"ậ";s:3:"Ắ";s:5:"ĂÌ";s:3:"ắ";s:5:"ăÌ";s:3:"Ằ";s:5:"Ằ";s:3:"ằ";s:5:"ằ";s:3:"Ẳ";s:5:"Ẳ";s:3:"ẳ";s:5:"ẳ";s:3:"Ẵ";s:5:"Ẵ";s:3:"ẵ";s:5:"ẵ";s:3:"Ặ";s:5:"Ặ";s:3:"ặ";s:5:"ặ";s:3:"Ẹ";s:3:"EÌ£";s:3:"ẹ";s:3:"eÌ£";s:3:"Ẻ";s:3:"Ẻ";s:3:"ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"Ẽ";s:3:"ẽ";s:3:"ẽ";s:3:"Ế";s:5:"EÌ‚Ì";s:3:"ế";s:5:"eÌ‚Ì";s:3:"Ề";s:5:"EÌ‚Ì€";s:3:"á»";s:5:"eÌ‚Ì€";s:3:"Ể";s:5:"Ể";s:3:"ể";s:5:"ể";s:3:"Ễ";s:5:"Ễ";s:3:"á»…";s:5:"ễ";s:3:"Ệ";s:5:"Ệ";s:3:"ệ";s:5:"ệ";s:3:"Ỉ";s:3:"Ỉ";s:3:"ỉ";s:3:"ỉ";s:3:"Ị";s:3:"IÌ£";s:3:"ị";s:3:"iÌ£";s:3:"Ọ";s:3:"OÌ£";s:3:"á»";s:3:"oÌ£";s:3:"Ỏ";s:3:"Ỏ";s:3:"á»";s:3:"ỏ";s:3:"á»";s:5:"OÌ‚Ì";s:3:"ố";s:5:"oÌ‚Ì";s:3:"á»’";s:5:"OÌ‚Ì€";s:3:"ồ";s:5:"oÌ‚Ì€";s:3:"á»”";s:5:"Ổ";s:3:"ổ";s:5:"ổ";s:3:"á»–";s:5:"Ỗ";s:3:"á»—";s:5:"ỗ";s:3:"Ộ";s:5:"Ộ";s:3:"á»™";s:5:"ộ";s:3:"Ớ";s:5:"OÌ›Ì";s:3:"á»›";s:5:"oÌ›Ì";s:3:"Ờ";s:5:"Ờ";s:3:"á»";s:5:"ờ";s:3:"Ở";s:5:"Ở";s:3:"ở";s:5:"ở";s:3:"á» ";s:5:"Ỡ";s:3:"ỡ";s:5:"ỡ";s:3:"Ợ";s:5:"Ợ";s:3:"ợ";s:5:"ợ";s:3:"Ụ";s:3:"UÌ£";s:3:"ụ";s:3:"uÌ£";s:3:"Ủ";s:3:"Ủ";s:3:"ủ";s:3:"ủ";s:3:"Ứ";s:5:"UÌ›Ì";s:3:"ứ";s:5:"uÌ›Ì";s:3:"Ừ";s:5:"Ừ";s:3:"ừ";s:5:"ừ";s:3:"Ử";s:5:"Ử";s:3:"á»­";s:5:"ử";s:3:"á»®";s:5:"Ữ";s:3:"ữ";s:5:"ữ";s:3:"á»°";s:5:"Ự";s:3:"á»±";s:5:"ự";s:3:"Ỳ";s:3:"YÌ€";s:3:"ỳ";s:3:"yÌ€";s:3:"á»´";s:3:"YÌ£";s:3:"ỵ";s:3:"yÌ£";s:3:"Ỷ";s:3:"Ỷ";s:3:"á»·";s:3:"ỷ";s:3:"Ỹ";s:3:"Ỹ";s:3:"ỹ";s:3:"ỹ";s:3:"á¼€";s:4:"ἀ";s:3:"á¼";s:4:"ἁ";s:3:"ἂ";s:6:"ἂ";s:3:"ἃ";s:6:"ἃ";s:3:"ἄ";s:6:"ἀÌ";s:3:"á¼…";s:6:"ἁÌ";s:3:"ἆ";s:6:"ἆ";s:3:"ἇ";s:6:"ἇ";s:3:"Ἀ";s:4:"Ἀ";s:3:"Ἁ";s:4:"Ἁ";s:3:"Ἂ";s:6:"Ἂ";s:3:"Ἃ";s:6:"Ἃ";s:3:"Ἄ";s:6:"ἈÌ";s:3:"á¼";s:6:"ἉÌ";s:3:"Ἆ";s:6:"Ἆ";s:3:"á¼";s:6:"Ἇ";s:3:"á¼";s:4:"ἐ";s:3:"ἑ";s:4:"ἑ";s:3:"á¼’";s:6:"ἒ";s:3:"ἓ";s:6:"ἓ";s:3:"á¼”";s:6:"ἐÌ";s:3:"ἕ";s:6:"ἑÌ";s:3:"Ἐ";s:4:"Ἐ";s:3:"á¼™";s:4:"Ἑ";s:3:"Ἒ";s:6:"Ἒ";s:3:"á¼›";s:6:"Ἓ";s:3:"Ἔ";s:6:"ἘÌ";s:3:"á¼";s:6:"ἙÌ";s:3:"á¼ ";s:4:"ἠ";s:3:"ἡ";s:4:"ἡ";s:3:"á¼¢";s:6:"ἢ";s:3:"á¼£";s:6:"ἣ";s:3:"ἤ";s:6:"ἠÌ";s:3:"á¼¥";s:6:"ἡÌ";s:3:"ἦ";s:6:"ἦ";s:3:"ἧ";s:6:"ἧ";s:3:"Ἠ";s:4:"Ἠ";s:3:"Ἡ";s:4:"Ἡ";s:3:"Ἢ";s:6:"Ἢ";s:3:"Ἣ";s:6:"Ἣ";s:3:"Ἤ";s:6:"ἨÌ";s:3:"á¼­";s:6:"ἩÌ";s:3:"á¼®";s:6:"Ἦ";s:3:"Ἧ";s:6:"Ἧ";s:3:"á¼°";s:4:"ἰ";s:3:"á¼±";s:4:"ἱ";s:3:"á¼²";s:6:"ἲ";s:3:"á¼³";s:6:"ἳ";s:3:"á¼´";s:6:"ἰÌ";s:3:"á¼µ";s:6:"ἱÌ";s:3:"ἶ";s:6:"ἶ";s:3:"á¼·";s:6:"ἷ";s:3:"Ἰ";s:4:"Ἰ";s:3:"á¼¹";s:4:"Ἱ";s:3:"Ἲ";s:6:"Ἲ";s:3:"á¼»";s:6:"Ἳ";s:3:"á¼¼";s:6:"ἸÌ";s:3:"á¼½";s:6:"ἹÌ";s:3:"á¼¾";s:6:"Ἶ";s:3:"Ἷ";s:6:"Ἷ";s:3:"á½€";s:4:"ὀ";s:3:"á½";s:4:"ὁ";s:3:"ὂ";s:6:"ὂ";s:3:"ὃ";s:6:"ὃ";s:3:"ὄ";s:6:"ὀÌ";s:3:"á½…";s:6:"ὁÌ";s:3:"Ὀ";s:4:"Ὀ";s:3:"Ὁ";s:4:"Ὁ";s:3:"Ὂ";s:6:"Ὂ";s:3:"Ὃ";s:6:"Ὃ";s:3:"Ὄ";s:6:"ὈÌ";s:3:"á½";s:6:"ὉÌ";s:3:"á½";s:4:"Ï…Ì“";s:3:"ὑ";s:4:"Ï…Ì”";s:3:"á½’";s:6:"Ï…Ì“Ì€";s:3:"ὓ";s:6:"ὓ";s:3:"á½”";s:6:"Ï…Ì“Ì";s:3:"ὕ";s:6:"Ï…Ì”Ì";s:3:"á½–";s:6:"Ï…Ì“Í‚";s:3:"á½—";s:6:"ὗ";s:3:"á½™";s:4:"Ὑ";s:3:"á½›";s:6:"Ὓ";s:3:"á½";s:6:"ὙÌ";s:3:"Ὗ";s:6:"Ὗ";s:3:"á½ ";s:4:"ὠ";s:3:"ὡ";s:4:"ὡ";s:3:"á½¢";s:6:"ὢ";s:3:"á½£";s:6:"ὣ";s:3:"ὤ";s:6:"ὠÌ";s:3:"á½¥";s:6:"ὡÌ";s:3:"ὦ";s:6:"ὦ";s:3:"ὧ";s:6:"ὧ";s:3:"Ὠ";s:4:"Ὠ";s:3:"Ὡ";s:4:"Ὡ";s:3:"Ὢ";s:6:"Ὢ";s:3:"Ὣ";s:6:"Ὣ";s:3:"Ὤ";s:6:"ὨÌ";s:3:"á½­";s:6:"ὩÌ";s:3:"á½®";s:6:"Ὦ";s:3:"Ὧ";s:6:"Ὧ";s:3:"á½°";s:4:"ὰ";s:3:"á½±";s:4:"αÌ";s:3:"á½²";s:4:"ὲ";s:3:"á½³";s:4:"εÌ";s:3:"á½´";s:4:"ὴ";s:3:"á½µ";s:4:"ηÌ";s:3:"ὶ";s:4:"ὶ";s:3:"á½·";s:4:"ιÌ";s:3:"ὸ";s:4:"ὸ";s:3:"á½¹";s:4:"οÌ";s:3:"ὺ";s:4:"Ï…Ì€";s:3:"á½»";s:4:"Ï…Ì";s:3:"á½¼";s:4:"ὼ";s:3:"á½½";s:4:"ωÌ";s:3:"á¾€";s:6:"ᾀ";s:3:"á¾";s:6:"ᾁ";s:3:"ᾂ";s:8:"ᾂ";s:3:"ᾃ";s:8:"ᾃ";s:3:"ᾄ";s:8:"ἀÌÍ…";s:3:"á¾…";s:8:"ἁÌÍ…";s:3:"ᾆ";s:8:"ᾆ";s:3:"ᾇ";s:8:"ᾇ";s:3:"ᾈ";s:6:"ᾈ";s:3:"ᾉ";s:6:"ᾉ";s:3:"ᾊ";s:8:"ᾊ";s:3:"ᾋ";s:8:"ᾋ";s:3:"ᾌ";s:8:"ἈÌÍ…";s:3:"á¾";s:8:"ἉÌÍ…";s:3:"ᾎ";s:8:"ᾎ";s:3:"á¾";s:8:"ᾏ";s:3:"á¾";s:6:"ᾐ";s:3:"ᾑ";s:6:"ᾑ";s:3:"á¾’";s:8:"ᾒ";s:3:"ᾓ";s:8:"ᾓ";s:3:"á¾”";s:8:"ἠÌÍ…";s:3:"ᾕ";s:8:"ἡÌÍ…";s:3:"á¾–";s:8:"ᾖ";s:3:"á¾—";s:8:"ᾗ";s:3:"ᾘ";s:6:"ᾘ";s:3:"á¾™";s:6:"ᾙ";s:3:"ᾚ";s:8:"ᾚ";s:3:"á¾›";s:8:"ᾛ";s:3:"ᾜ";s:8:"ἨÌÍ…";s:3:"á¾";s:8:"ἩÌÍ…";s:3:"ᾞ";s:8:"ᾞ";s:3:"ᾟ";s:8:"ᾟ";s:3:"á¾ ";s:6:"ᾠ";s:3:"ᾡ";s:6:"ᾡ";s:3:"á¾¢";s:8:"ᾢ";s:3:"á¾£";s:8:"ᾣ";s:3:"ᾤ";s:8:"ὠÌÍ…";s:3:"á¾¥";s:8:"ὡÌÍ…";s:3:"ᾦ";s:8:"ᾦ";s:3:"ᾧ";s:8:"ᾧ";s:3:"ᾨ";s:6:"ᾨ";s:3:"ᾩ";s:6:"ᾩ";s:3:"ᾪ";s:8:"ᾪ";s:3:"ᾫ";s:8:"ᾫ";s:3:"ᾬ";s:8:"ὨÌÍ…";s:3:"á¾­";s:8:"ὩÌÍ…";s:3:"á¾®";s:8:"ᾮ";s:3:"ᾯ";s:8:"ᾯ";s:3:"á¾°";s:4:"ᾰ";s:3:"á¾±";s:4:"ᾱ";s:3:"á¾²";s:6:"ᾲ";s:3:"á¾³";s:4:"ᾳ";s:3:"á¾´";s:6:"αÌÍ…";s:3:"ᾶ";s:4:"ᾶ";s:3:"á¾·";s:6:"ᾷ";s:3:"Ᾰ";s:4:"Ᾰ";s:3:"á¾¹";s:4:"Ᾱ";s:3:"Ὰ";s:4:"Ὰ";s:3:"á¾»";s:4:"ΑÌ";s:3:"á¾¼";s:4:"ᾼ";s:3:"á¾¾";s:2:"ι";s:3:"á¿";s:4:"῁";s:3:"á¿‚";s:6:"ῂ";s:3:"ῃ";s:4:"ῃ";s:3:"á¿„";s:6:"ηÌÍ…";s:3:"ῆ";s:4:"ῆ";s:3:"ῇ";s:6:"ῇ";s:3:"Ὲ";s:4:"Ὲ";s:3:"Έ";s:4:"ΕÌ";s:3:"á¿Š";s:4:"Ὴ";s:3:"á¿‹";s:4:"ΗÌ";s:3:"á¿Œ";s:4:"ῌ";s:3:"á¿";s:5:"῍";s:3:"á¿Ž";s:5:"᾿Ì";s:3:"á¿";s:5:"῏";s:3:"á¿";s:4:"ῐ";s:3:"á¿‘";s:4:"ῑ";s:3:"á¿’";s:6:"ῒ";s:3:"á¿“";s:6:"ϊÌ";s:3:"á¿–";s:4:"ῖ";s:3:"á¿—";s:6:"ῗ";s:3:"Ῐ";s:4:"Ῐ";s:3:"á¿™";s:4:"Ῑ";s:3:"á¿š";s:4:"Ὶ";s:3:"á¿›";s:4:"ΙÌ";s:3:"á¿";s:5:"῝";s:3:"á¿ž";s:5:"῾Ì";s:3:"á¿Ÿ";s:5:"῟";s:3:"á¿ ";s:4:"ῠ";s:3:"á¿¡";s:4:"Ï…Ì„";s:3:"á¿¢";s:6:"ῢ";s:3:"á¿£";s:6:"ϋÌ";s:3:"ῤ";s:4:"ÏÌ“";s:3:"á¿¥";s:4:"ÏÌ”";s:3:"ῦ";s:4:"Ï…Í‚";s:3:"ῧ";s:6:"ῧ";s:3:"Ῠ";s:4:"Ῠ";s:3:"á¿©";s:4:"Ῡ";s:3:"Ὺ";s:4:"Ὺ";s:3:"á¿«";s:4:"Î¥Ì";s:3:"Ῥ";s:4:"Ῥ";s:3:"á¿­";s:4:"῭";s:3:"á¿®";s:4:"¨Ì";s:3:"`";s:1:"`";s:3:"ῲ";s:6:"ῲ";s:3:"ῳ";s:4:"ῳ";s:3:"á¿´";s:6:"ωÌÍ…";s:3:"ῶ";s:4:"ῶ";s:3:"á¿·";s:6:"ῷ";s:3:"Ὸ";s:4:"Ὸ";s:3:"Ό";s:4:"ΟÌ";s:3:"Ὼ";s:4:"Ὼ";s:3:"á¿»";s:4:"ΩÌ";s:3:"ῼ";s:4:"ῼ";s:3:"´";s:2:"´";s:3:" ";s:3:" ";s:3:"â€";s:3:" ";s:3:"Ω";s:2:"Ω";s:3:"K";s:1:"K";s:3:"â„«";s:3:"AÌŠ";s:3:"↚";s:5:"â†Ì¸";s:3:"↛";s:5:"↛";s:3:"↮";s:5:"↮";s:3:"â‡";s:5:"â‡Ì¸";s:3:"⇎";s:5:"⇎";s:3:"â‡";s:5:"⇏";s:3:"∄";s:5:"∄";s:3:"∉";s:5:"∉";s:3:"∌";s:5:"∌";s:3:"∤";s:5:"∤";s:3:"∦";s:5:"∦";s:3:"â‰";s:5:"≁";s:3:"≄";s:5:"≄";s:3:"≇";s:5:"≇";s:3:"≉";s:5:"≉";s:3:"≠";s:3:"≠";s:3:"≢";s:5:"≢";s:3:"≭";s:5:"â‰Ì¸";s:3:"≮";s:3:"≮";s:3:"≯";s:3:"≯";s:3:"≰";s:5:"≰";s:3:"≱";s:5:"≱";s:3:"≴";s:5:"≴";s:3:"≵";s:5:"≵";s:3:"≸";s:5:"≸";s:3:"≹";s:5:"≹";s:3:"⊀";s:5:"⊀";s:3:"âŠ";s:5:"⊁";s:3:"⊄";s:5:"⊄";s:3:"⊅";s:5:"⊅";s:3:"⊈";s:5:"⊈";s:3:"⊉";s:5:"⊉";s:3:"⊬";s:5:"⊬";s:3:"⊭";s:5:"⊭";s:3:"⊮";s:5:"⊮";s:3:"⊯";s:5:"⊯";s:3:"â‹ ";s:5:"⋠";s:3:"â‹¡";s:5:"⋡";s:3:"â‹¢";s:5:"⋢";s:3:"â‹£";s:5:"⋣";s:3:"⋪";s:5:"⋪";s:3:"â‹«";s:5:"⋫";s:3:"⋬";s:5:"⋬";s:3:"â‹­";s:5:"⋭";s:3:"〈";s:3:"〈";s:3:"〉";s:3:"〉";s:3:"â«œ";s:5:"â«Ì¸";s:3:"ãŒ";s:6:"ã‹ã‚™";s:3:"ãŽ";s:6:"ãã‚™";s:3:"ã";s:6:"ãã‚™";s:3:"ã’";s:6:"ã‘ã‚™";s:3:"ã”";s:6:"ã“ã‚™";s:3:"ã–";s:6:"ã•ã‚™";s:3:"ã˜";s:6:"ã—ã‚™";s:3:"ãš";s:6:"ã™ã‚™";s:3:"ãœ";s:6:"ã›ã‚™";s:3:"ãž";s:6:"ãã‚™";s:3:"ã ";s:6:"ãŸã‚™";s:3:"ã¢";s:6:"ã¡ã‚™";s:3:"ã¥";s:6:"ã¤ã‚™";s:3:"ã§";s:6:"ã¦ã‚™";s:3:"ã©";s:6:"ã¨ã‚™";s:3:"ã°";s:6:"ã¯ã‚™";s:3:"ã±";s:6:"ã¯ã‚š";s:3:"ã³";s:6:"ã²ã‚™";s:3:"ã´";s:6:"ã²ã‚š";s:3:"ã¶";s:6:"ãµã‚™";s:3:"ã·";s:6:"ãµã‚š";s:3:"ã¹";s:6:"ã¸ã‚™";s:3:"ãº";s:6:"ã¸ã‚š";s:3:"ã¼";s:6:"ã»ã‚™";s:3:"ã½";s:6:"ã»ã‚š";s:3:"ã‚”";s:6:"ã†ã‚™";s:3:"ã‚ž";s:6:"ã‚ã‚™";s:3:"ガ";s:6:"ã‚«ã‚™";s:3:"ã‚®";s:6:"ã‚­ã‚™";s:3:"ã‚°";s:6:"グ";s:3:"ゲ";s:6:"ゲ";s:3:"ã‚´";s:6:"ゴ";s:3:"ザ";s:6:"ザ";s:3:"ジ";s:6:"ã‚·ã‚™";s:3:"ズ";s:6:"ズ";s:3:"ゼ";s:6:"ゼ";s:3:"ゾ";s:6:"ゾ";s:3:"ダ";s:6:"ã‚¿ã‚™";s:3:"ヂ";s:6:"ãƒã‚™";s:3:"ヅ";s:6:"ヅ";s:3:"デ";s:6:"デ";s:3:"ド";s:6:"ド";s:3:"ãƒ";s:6:"ãƒã‚™";s:3:"パ";s:6:"ãƒã‚š";s:3:"ビ";s:6:"ビ";s:3:"ピ";s:6:"ピ";s:3:"ブ";s:6:"ブ";s:3:"プ";s:6:"プ";s:3:"ベ";s:6:"ベ";s:3:"ペ";s:6:"ペ";s:3:"ボ";s:6:"ボ";s:3:"ãƒ";s:6:"ポ";s:3:"ヴ";s:6:"ヴ";s:3:"ヷ";s:6:"ヷ";s:3:"ヸ";s:6:"ヸ";s:3:"ヹ";s:6:"ヹ";s:3:"ヺ";s:6:"ヺ";s:3:"ヾ";s:6:"ヾ";s:3:"豈";s:3:"豈";s:3:"ï¤";s:3:"æ›´";s:3:"車";s:3:"車";s:3:"賈";s:3:"賈";s:3:"滑";s:3:"滑";s:3:"串";s:3:"串";s:3:"句";s:3:"å¥";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"契";s:3:"契";s:3:"金";s:3:"金";s:3:"喇";s:3:"å–‡";s:3:"奈";s:3:"奈";s:3:"ï¤";s:3:"懶";s:3:"癩";s:3:"癩";s:3:"ï¤";s:3:"ç¾…";s:3:"ï¤";s:3:"蘿";s:3:"螺";s:3:"螺";s:3:"裸";s:3:"裸";s:3:"邏";s:3:"é‚";s:3:"樂";s:3:"樂";s:3:"洛";s:3:"æ´›";s:3:"烙";s:3:"烙";s:3:"珞";s:3:"çž";s:3:"落";s:3:"è½";s:3:"酪";s:3:"é…ª";s:3:"駱";s:3:"駱";s:3:"亂";s:3:"亂";s:3:"卵";s:3:"åµ";s:3:"ï¤";s:3:"欄";s:3:"爛";s:3:"爛";s:3:"蘭";s:3:"蘭";s:3:"鸞";s:3:"鸞";s:3:"嵐";s:3:"åµ";s:3:"濫";s:3:"æ¿«";s:3:"藍";s:3:"è—";s:3:"襤";s:3:"襤";s:3:"拉";s:3:"拉";s:3:"臘";s:3:"臘";s:3:"蠟";s:3:"è Ÿ";s:3:"廊";s:3:"廊";s:3:"朗";s:3:"朗";s:3:"浪";s:3:"浪";s:3:"狼";s:3:"狼";s:3:"郎";s:3:"郎";s:3:"來";s:3:"來";s:3:"冷";s:3:"冷";s:3:"勞";s:3:"å‹ž";s:3:"擄";s:3:"æ“„";s:3:"櫓";s:3:"æ«“";s:3:"爐";s:3:"çˆ";s:3:"盧";s:3:"盧";s:3:"老";s:3:"è€";s:3:"蘆";s:3:"蘆";s:3:"虜";s:3:"虜";s:3:"路";s:3:"è·¯";s:3:"露";s:3:"露";s:3:"魯";s:3:"é­¯";s:3:"鷺";s:3:"é·º";s:3:"碌";s:3:"碌";s:3:"祿";s:3:"祿";s:3:"綠";s:3:"綠";s:3:"菉";s:3:"è‰";s:3:"錄";s:3:"錄";s:3:"鹿";s:3:"鹿";s:3:"ï¥";s:3:"è«–";s:3:"壟";s:3:"壟";s:3:"弄";s:3:"弄";s:3:"籠";s:3:"ç± ";s:3:"聾";s:3:"è¾";s:3:"牢";s:3:"牢";s:3:"磊";s:3:"磊";s:3:"賂";s:3:"賂";s:3:"雷";s:3:"é›·";s:3:"壘";s:3:"壘";s:3:"屢";s:3:"å±¢";s:3:"樓";s:3:"樓";s:3:"ï¥";s:3:"æ·š";s:3:"漏";s:3:"æ¼";s:3:"ï¥";s:3:"ç´¯";s:3:"ï¥";s:3:"縷";s:3:"陋";s:3:"陋";s:3:"勒";s:3:"å‹’";s:3:"肋";s:3:"è‚‹";s:3:"凜";s:3:"凜";s:3:"凌";s:3:"凌";s:3:"稜";s:3:"稜";s:3:"綾";s:3:"綾";s:3:"菱";s:3:"è±";s:3:"陵";s:3:"陵";s:3:"讀";s:3:"讀";s:3:"拏";s:3:"æ‹";s:3:"樂";s:3:"樂";s:3:"ï¥";s:3:"諾";s:3:"丹";s:3:"丹";s:3:"寧";s:3:"寧";s:3:"怒";s:3:"怒";s:3:"率";s:3:"率";s:3:"異";s:3:"ç•°";s:3:"北";s:3:"北";s:3:"磻";s:3:"磻";s:3:"便";s:3:"便";s:3:"復";s:3:"復";s:3:"不";s:3:"ä¸";s:3:"泌";s:3:"泌";s:3:"數";s:3:"數";s:3:"索";s:3:"ç´¢";s:3:"參";s:3:"åƒ";s:3:"塞";s:3:"å¡ž";s:3:"省";s:3:"çœ";s:3:"葉";s:3:"葉";s:3:"說";s:3:"說";s:3:"殺";s:3:"殺";s:3:"辰";s:3:"è¾°";s:3:"沈";s:3:"沈";s:3:"拾";s:3:"拾";s:3:"若";s:3:"è‹¥";s:3:"掠";s:3:"掠";s:3:"略";s:3:"ç•¥";s:3:"亮";s:3:"亮";s:3:"兩";s:3:"å…©";s:3:"凉";s:3:"凉";s:3:"梁";s:3:"æ¢";s:3:"糧";s:3:"糧";s:3:"良";s:3:"良";s:3:"諒";s:3:"è«’";s:3:"量";s:3:"é‡";s:3:"勵";s:3:"勵";s:3:"呂";s:3:"å‘‚";s:3:"ï¦";s:3:"女";s:3:"廬";s:3:"廬";s:3:"旅";s:3:"æ—…";s:3:"濾";s:3:"濾";s:3:"礪";s:3:"礪";s:3:"閭";s:3:"é–­";s:3:"驪";s:3:"驪";s:3:"麗";s:3:"麗";s:3:"黎";s:3:"黎";s:3:"力";s:3:"力";s:3:"曆";s:3:"曆";s:3:"歷";s:3:"æ­·";s:3:"ï¦";s:3:"è½¢";s:3:"年";s:3:"å¹´";s:3:"ï¦";s:3:"æ†";s:3:"ï¦";s:3:"戀";s:3:"撚";s:3:"æ’š";s:3:"漣";s:3:"æ¼£";s:3:"煉";s:3:"ç…‰";s:3:"璉";s:3:"ç’‰";s:3:"秊";s:3:"秊";s:3:"練";s:3:"ç·´";s:3:"聯";s:3:"è¯";s:3:"輦";s:3:"輦";s:3:"蓮";s:3:"è“®";s:3:"連";s:3:"連";s:3:"鍊";s:3:"éŠ";s:3:"列";s:3:"列";s:3:"ï¦";s:3:"劣";s:3:"咽";s:3:"å’½";s:3:"烈";s:3:"烈";s:3:"裂";s:3:"裂";s:3:"說";s:3:"說";s:3:"廉";s:3:"廉";s:3:"念";s:3:"念";s:3:"捻";s:3:"æ»";s:3:"殮";s:3:"æ®®";s:3:"簾";s:3:"ç°¾";s:3:"獵";s:3:"çµ";s:3:"令";s:3:"令";s:3:"囹";s:3:"囹";s:3:"寧";s:3:"寧";s:3:"嶺";s:3:"嶺";s:3:"怜";s:3:"怜";s:3:"玲";s:3:"玲";s:3:"瑩";s:3:"ç‘©";s:3:"羚";s:3:"羚";s:3:"聆";s:3:"è†";s:3:"鈴";s:3:"鈴";s:3:"零";s:3:"零";s:3:"靈";s:3:"éˆ";s:3:"領";s:3:"é ˜";s:3:"例";s:3:"例";s:3:"禮";s:3:"禮";s:3:"醴";s:3:"醴";s:3:"隸";s:3:"隸";s:3:"惡";s:3:"惡";s:3:"了";s:3:"了";s:3:"僚";s:3:"僚";s:3:"寮";s:3:"寮";s:3:"尿";s:3:"å°¿";s:3:"料";s:3:"æ–™";s:3:"樂";s:3:"樂";s:3:"燎";s:3:"燎";s:3:"ï§";s:3:"療";s:3:"蓼";s:3:"蓼";s:3:"遼";s:3:"é¼";s:3:"龍";s:3:"é¾";s:3:"暈";s:3:"暈";s:3:"阮";s:3:"阮";s:3:"劉";s:3:"劉";s:3:"杻";s:3:"æ»";s:3:"柳";s:3:"柳";s:3:"流";s:3:"æµ";s:3:"溜";s:3:"溜";s:3:"琉";s:3:"ç‰";s:3:"ï§";s:3:"ç•™";s:3:"硫";s:3:"ç¡«";s:3:"ï§";s:3:"ç´";s:3:"ï§";s:3:"é¡ž";s:3:"六";s:3:"å…­";s:3:"戮";s:3:"戮";s:3:"陸";s:3:"陸";s:3:"倫";s:3:"倫";s:3:"崙";s:3:"å´™";s:3:"淪";s:3:"æ·ª";s:3:"輪";s:3:"輪";s:3:"律";s:3:"律";s:3:"慄";s:3:"æ…„";s:3:"栗";s:3:"æ —";s:3:"率";s:3:"率";s:3:"隆";s:3:"隆";s:3:"ï§";s:3:"利";s:3:"吏";s:3:"å";s:3:"履";s:3:"å±¥";s:3:"易";s:3:"易";s:3:"李";s:3:"æŽ";s:3:"梨";s:3:"梨";s:3:"泥";s:3:"æ³¥";s:3:"理";s:3:"ç†";s:3:"痢";s:3:"ç—¢";s:3:"罹";s:3:"ç½¹";s:3:"裏";s:3:"è£";s:3:"裡";s:3:"裡";s:3:"里";s:3:"里";s:3:"離";s:3:"離";s:3:"匿";s:3:"匿";s:3:"溺";s:3:"溺";s:3:"吝";s:3:"å";s:3:"燐";s:3:"ç‡";s:3:"璘";s:3:"ç’˜";s:3:"藺";s:3:"è—º";s:3:"隣";s:3:"隣";s:3:"鱗";s:3:"é±—";s:3:"麟";s:3:"麟";s:3:"林";s:3:"æž—";s:3:"淋";s:3:"æ·‹";s:3:"臨";s:3:"臨";s:3:"立";s:3:"ç«‹";s:3:"笠";s:3:"笠";s:3:"粒";s:3:"ç²’";s:3:"狀";s:3:"ç‹€";s:3:"炙";s:3:"ç‚™";s:3:"識";s:3:"è­˜";s:3:"什";s:3:"什";s:3:"茶";s:3:"茶";s:3:"刺";s:3:"刺";s:3:"切";s:3:"切";s:3:"ï¨";s:3:"度";s:3:"拓";s:3:"æ‹“";s:3:"糖";s:3:"ç³–";s:3:"宅";s:3:"å®…";s:3:"洞";s:3:"æ´ž";s:3:"暴";s:3:"æš´";s:3:"輻";s:3:"è¼»";s:3:"行";s:3:"è¡Œ";s:3:"降";s:3:"é™";s:3:"見";s:3:"見";s:3:"廓";s:3:"廓";s:3:"兀";s:3:"å…€";s:3:"ï¨";s:3:"å—€";s:3:"ï¨";s:3:"å¡š";s:3:"晴";s:3:"æ™´";s:3:"凞";s:3:"凞";s:3:"猪";s:3:"猪";s:3:"益";s:3:"益";s:3:"礼";s:3:"礼";s:3:"神";s:3:"神";s:3:"祥";s:3:"祥";s:3:"福";s:3:"ç¦";s:3:"靖";s:3:"é–";s:3:"ï¨";s:3:"ç²¾";s:3:"羽";s:3:"ç¾½";s:3:"蘒";s:3:"蘒";s:3:"諸";s:3:"諸";s:3:"逸";s:3:"逸";s:3:"都";s:3:"都";s:3:"飯";s:3:"飯";s:3:"飼";s:3:"飼";s:3:"館";s:3:"館";s:3:"鶴";s:3:"鶴";s:3:"侮";s:3:"ä¾®";s:3:"僧";s:3:"僧";s:3:"免";s:3:"å…";s:3:"勉";s:3:"勉";s:3:"勤";s:3:"勤";s:3:"卑";s:3:"å‘";s:3:"喝";s:3:"å–";s:3:"嘆";s:3:"嘆";s:3:"器";s:3:"器";s:3:"塀";s:3:"å¡€";s:3:"墨";s:3:"墨";s:3:"層";s:3:"層";s:3:"屮";s:3:"å±®";s:3:"悔";s:3:"æ‚”";s:3:"慨";s:3:"æ…¨";s:3:"憎";s:3:"憎";s:3:"ï©€";s:3:"懲";s:3:"ï©";s:3:"æ•";s:3:"ï©‚";s:3:"æ—¢";s:3:"暑";s:3:"æš‘";s:3:"ï©„";s:3:"梅";s:3:"ï©…";s:3:"æµ·";s:3:"渚";s:3:"渚";s:3:"漢";s:3:"æ¼¢";s:3:"煮";s:3:"ç…®";s:3:"爫";s:3:"爫";s:3:"ï©Š";s:3:"ç¢";s:3:"ï©‹";s:3:"碑";s:3:"ï©Œ";s:3:"社";s:3:"ï©";s:3:"祉";s:3:"ï©Ž";s:3:"祈";s:3:"ï©";s:3:"ç¥";s:3:"ï©";s:3:"祖";s:3:"ï©‘";s:3:"ç¥";s:3:"ï©’";s:3:"ç¦";s:3:"ï©“";s:3:"禎";s:3:"ï©”";s:3:"ç©€";s:3:"ï©•";s:3:"çª";s:3:"ï©–";s:3:"節";s:3:"ï©—";s:3:"ç·´";s:3:"縉";s:3:"縉";s:3:"ï©™";s:3:"ç¹";s:3:"ï©š";s:3:"ç½²";s:3:"ï©›";s:3:"者";s:3:"ï©œ";s:3:"臭";s:3:"ï©";s:3:"艹";s:3:"ï©ž";s:3:"艹";s:3:"ï©Ÿ";s:3:"è‘—";s:3:"ï© ";s:3:"è¤";s:3:"ï©¡";s:3:"視";s:3:"ï©¢";s:3:"è¬";s:3:"ï©£";s:3:"謹";s:3:"賓";s:3:"賓";s:3:"ï©¥";s:3:"è´ˆ";s:3:"辶";s:3:"辶";s:3:"逸";s:3:"逸";s:3:"難";s:3:"難";s:3:"ï©©";s:3:"響";s:3:"頻";s:3:"é »";s:3:"ï©°";s:3:"並";s:3:"况";s:3:"况";s:3:"全";s:3:"å…¨";s:3:"侀";s:3:"ä¾€";s:3:"ï©´";s:3:"å……";s:3:"冀";s:3:"冀";s:3:"勇";s:3:"勇";s:3:"ï©·";s:3:"勺";s:3:"喝";s:3:"å–";s:3:"啕";s:3:"å••";s:3:"喙";s:3:"å–™";s:3:"ï©»";s:3:"å—¢";s:3:"塚";s:3:"å¡š";s:3:"墳";s:3:"墳";s:3:"奄";s:3:"奄";s:3:"ï©¿";s:3:"奔";s:3:"婢";s:3:"å©¢";s:3:"ïª";s:3:"嬨";s:3:"廒";s:3:"å»’";s:3:"廙";s:3:"å»™";s:3:"彩";s:3:"彩";s:3:"徭";s:3:"å¾­";s:3:"惘";s:3:"惘";s:3:"慎";s:3:"æ…Ž";s:3:"愈";s:3:"愈";s:3:"憎";s:3:"憎";s:3:"慠";s:3:"æ… ";s:3:"懲";s:3:"懲";s:3:"戴";s:3:"戴";s:3:"ïª";s:3:"æ„";s:3:"搜";s:3:"æœ";s:3:"ïª";s:3:"æ‘’";s:3:"ïª";s:3:"æ•–";s:3:"晴";s:3:"æ™´";s:3:"朗";s:3:"朗";s:3:"望";s:3:"望";s:3:"杖";s:3:"æ–";s:3:"歹";s:3:"æ­¹";s:3:"殺";s:3:"殺";s:3:"流";s:3:"æµ";s:3:"滛";s:3:"æ»›";s:3:"滋";s:3:"滋";s:3:"漢";s:3:"æ¼¢";s:3:"瀞";s:3:"瀞";s:3:"煮";s:3:"ç…®";s:3:"ïª";s:3:"瞧";s:3:"爵";s:3:"爵";s:3:"犯";s:3:"犯";s:3:"猪";s:3:"猪";s:3:"瑱";s:3:"瑱";s:3:"甆";s:3:"甆";s:3:"画";s:3:"ç”»";s:3:"瘝";s:3:"ç˜";s:3:"瘟";s:3:"瘟";s:3:"益";s:3:"益";s:3:"盛";s:3:"ç››";s:3:"直";s:3:"ç›´";s:3:"睊";s:3:"çŠ";s:3:"着";s:3:"ç€";s:3:"磌";s:3:"磌";s:3:"窱";s:3:"窱";s:3:"節";s:3:"節";s:3:"类";s:3:"ç±»";s:3:"絛";s:3:"çµ›";s:3:"練";s:3:"ç·´";s:3:"缾";s:3:"ç¼¾";s:3:"者";s:3:"者";s:3:"荒";s:3:"è’";s:3:"華";s:3:"è¯";s:3:"蝹";s:3:"è¹";s:3:"襁";s:3:"è¥";s:3:"覆";s:3:"覆";s:3:"視";s:3:"視";s:3:"調";s:3:"調";s:3:"諸";s:3:"諸";s:3:"請";s:3:"è«‹";s:3:"謁";s:3:"è¬";s:3:"諾";s:3:"諾";s:3:"諭";s:3:"è«­";s:3:"謹";s:3:"謹";s:3:"ï«€";s:3:"變";s:3:"ï«";s:3:"è´ˆ";s:3:"ï«‚";s:3:"輸";s:3:"遲";s:3:"é²";s:3:"ï«„";s:3:"醙";s:3:"ï«…";s:3:"鉶";s:3:"陼";s:3:"陼";s:3:"難";s:3:"難";s:3:"靖";s:3:"é–";s:3:"韛";s:3:"韛";s:3:"ï«Š";s:3:"響";s:3:"ï«‹";s:3:"é ‹";s:3:"ï«Œ";s:3:"é »";s:3:"ï«";s:3:"鬒";s:3:"ï«Ž";s:3:"龜";s:3:"ï«";s:4:"𢡊";s:3:"ï«";s:4:"𢡄";s:3:"ï«‘";s:4:"ð£•";s:3:"ï«’";s:3:"ã®";s:3:"ï«“";s:3:"䀘";s:3:"ï«”";s:3:"䀹";s:3:"ï«•";s:4:"𥉉";s:3:"ï«–";s:4:"ð¥³";s:3:"ï«—";s:4:"𧻓";s:3:"齃";s:3:"齃";s:3:"ï«™";s:3:"龎";s:3:"ï¬";s:4:"×™Ö´";s:3:"ײַ";s:4:"ײַ";s:3:"שׁ";s:4:"ש×";s:3:"שׂ";s:4:"שׂ";s:3:"שּׁ";s:6:"שּ×";s:3:"שּׂ";s:6:"שּׂ";s:3:"אַ";s:4:"×Ö·";s:3:"אָ";s:4:"×Ö¸";s:3:"אּ";s:4:"×Ö¼";s:3:"בּ";s:4:"בּ";s:3:"גּ";s:4:"×’Ö¼";s:3:"דּ";s:4:"דּ";s:3:"הּ";s:4:"×”Ö¼";s:3:"וּ";s:4:"וּ";s:3:"זּ";s:4:"×–Ö¼";s:3:"טּ";s:4:"טּ";s:3:"יּ";s:4:"×™Ö¼";s:3:"ךּ";s:4:"ךּ";s:3:"כּ";s:4:"×›Ö¼";s:3:"לּ";s:4:"לּ";s:3:"מּ";s:4:"מּ";s:3:"ï­€";s:4:"× Ö¼";s:3:"ï­";s:4:"סּ";s:3:"ï­ƒ";s:4:"×£Ö¼";s:3:"ï­„";s:4:"פּ";s:3:"ï­†";s:4:"צּ";s:3:"ï­‡";s:4:"קּ";s:3:"ï­ˆ";s:4:"רּ";s:3:"ï­‰";s:4:"שּ";s:3:"ï­Š";s:4:"תּ";s:3:"ï­‹";s:4:"וֹ";s:3:"ï­Œ";s:4:"בֿ";s:3:"ï­";s:4:"×›Ö¿";s:3:"ï­Ž";s:4:"פֿ";s:4:"ð…ž";s:8:"ð…—ð…¥";s:4:"ð…Ÿ";s:8:"ð…˜ð…¥";s:4:"ð… ";s:12:"ð…˜ð…¥ð…®";s:4:"ð…¡";s:12:"ð…˜ð…¥ð…¯";s:4:"ð…¢";s:12:"ð…˜ð…¥ð…°";s:4:"ð…£";s:12:"ð…˜ð…¥ð…±";s:4:"ð…¤";s:12:"ð…˜ð…¥ð…²";s:4:"ð†»";s:8:"ð†¹ð…¥";s:4:"ð†¼";s:8:"ð†ºð…¥";s:4:"ð†½";s:12:"ð†¹ð…¥ð…®";s:4:"ð†¾";s:12:"ð†ºð…¥ð…®";s:4:"ð†¿";s:12:"ð†¹ð…¥ð…¯";s:4:"ð‡€";s:12:"ð†ºð…¥ð…¯";s:4:"丽";s:3:"丽";s:4:"ð¯ ";s:3:"丸";s:4:"乁";s:3:"ä¹";s:4:"𠄢";s:4:"ð „¢";s:4:"你";s:3:"ä½ ";s:4:"侮";s:3:"ä¾®";s:4:"侻";s:3:"ä¾»";s:4:"倂";s:3:"倂";s:4:"偺";s:3:"åº";s:4:"備";s:3:"å‚™";s:4:"僧";s:3:"僧";s:4:"像";s:3:"åƒ";s:4:"㒞";s:3:"ã’ž";s:4:"ð¯ ";s:4:"𠘺";s:4:"免";s:3:"å…";s:4:"ð¯ ";s:3:"å…”";s:4:"ð¯ ";s:3:"å…¤";s:4:"具";s:3:"å…·";s:4:"𠔜";s:4:"𠔜";s:4:"㒹";s:3:"ã’¹";s:4:"內";s:3:"å…§";s:4:"再";s:3:"å†";s:4:"𠕋";s:4:"ð •‹";s:4:"冗";s:3:"冗";s:4:"冤";s:3:"冤";s:4:"仌";s:3:"仌";s:4:"冬";s:3:"冬";s:4:"况";s:3:"况";s:4:"𩇟";s:4:"𩇟";s:4:"ð¯ ";s:3:"凵";s:4:"刃";s:3:"刃";s:4:"㓟";s:3:"ã“Ÿ";s:4:"刻";s:3:"刻";s:4:"剆";s:3:"剆";s:4:"割";s:3:"割";s:4:"剷";s:3:"剷";s:4:"㔕";s:3:"㔕";s:4:"勇";s:3:"勇";s:4:"勉";s:3:"勉";s:4:"勤";s:3:"勤";s:4:"勺";s:3:"勺";s:4:"包";s:3:"包";s:4:"匆";s:3:"匆";s:4:"北";s:3:"北";s:4:"卉";s:3:"å‰";s:4:"卑";s:3:"å‘";s:4:"博";s:3:"åš";s:4:"即";s:3:"å³";s:4:"卽";s:3:"å½";s:4:"卿";s:3:"å¿";s:4:"卿";s:3:"å¿";s:4:"卿";s:3:"å¿";s:4:"𠨬";s:4:"𠨬";s:4:"灰";s:3:"ç°";s:4:"及";s:3:"åŠ";s:4:"叟";s:3:"åŸ";s:4:"𠭣";s:4:"ð ­£";s:4:"叫";s:3:"å«";s:4:"叱";s:3:"å±";s:4:"吆";s:3:"å†";s:4:"咞";s:3:"å’ž";s:4:"吸";s:3:"å¸";s:4:"呈";s:3:"呈";s:4:"周";s:3:"周";s:4:"咢";s:3:"å’¢";s:4:"ð¯¡";s:3:"哶";s:4:"唐";s:3:"å”";s:4:"啓";s:3:"å•“";s:4:"啣";s:3:"å•£";s:4:"善";s:3:"å–„";s:4:"善";s:3:"å–„";s:4:"喙";s:3:"å–™";s:4:"喫";s:3:"å–«";s:4:"喳";s:3:"å–³";s:4:"嗂";s:3:"å—‚";s:4:"圖";s:3:"圖";s:4:"嘆";s:3:"嘆";s:4:"ð¯¡";s:3:"圗";s:4:"噑";s:3:"噑";s:4:"ð¯¡";s:3:"å™´";s:4:"ð¯¡";s:3:"切";s:4:"壮";s:3:"壮";s:4:"城";s:3:"城";s:4:"埴";s:3:"埴";s:4:"堍";s:3:"å ";s:4:"型";s:3:"åž‹";s:4:"堲";s:3:"å ²";s:4:"報";s:3:"å ±";s:4:"墬";s:3:"墬";s:4:"𡓤";s:4:"𡓤";s:4:"売";s:3:"売";s:4:"壷";s:3:"壷";s:4:"夆";s:3:"夆";s:4:"ð¯¡";s:3:"多";s:4:"夢";s:3:"夢";s:4:"奢";s:3:"奢";s:4:"𡚨";s:4:"𡚨";s:4:"𡛪";s:4:"𡛪";s:4:"姬";s:3:"姬";s:4:"娛";s:3:"娛";s:4:"娧";s:3:"娧";s:4:"姘";s:3:"姘";s:4:"婦";s:3:"婦";s:4:"㛮";s:3:"ã›®";s:4:"㛼";s:3:"㛼";s:4:"嬈";s:3:"嬈";s:4:"嬾";s:3:"嬾";s:4:"嬾";s:3:"嬾";s:4:"𡧈";s:4:"𡧈";s:4:"寃";s:3:"寃";s:4:"寘";s:3:"寘";s:4:"寧";s:3:"寧";s:4:"寳";s:3:"寳";s:4:"𡬘";s:4:"𡬘";s:4:"寿";s:3:"寿";s:4:"将";s:3:"å°†";s:4:"当";s:3:"当";s:4:"尢";s:3:"å°¢";s:4:"㞁";s:3:"ãž";s:4:"屠";s:3:"å± ";s:4:"屮";s:3:"å±®";s:4:"峀";s:3:"å³€";s:4:"岍";s:3:"å²";s:4:"𡷤";s:4:"ð¡·¤";s:4:"嵃";s:3:"嵃";s:4:"𡷦";s:4:"ð¡·¦";s:4:"嵮";s:3:"åµ®";s:4:"嵫";s:3:"嵫";s:4:"嵼";s:3:"åµ¼";s:4:"ð¯¢";s:3:"å·¡";s:4:"巢";s:3:"å·¢";s:4:"㠯";s:3:"ã ¯";s:4:"巽";s:3:"å·½";s:4:"帨";s:3:"帨";s:4:"帽";s:3:"帽";s:4:"幩";s:3:"幩";s:4:"㡢";s:3:"ã¡¢";s:4:"𢆃";s:4:"𢆃";s:4:"㡼";s:3:"㡼";s:4:"庰";s:3:"庰";s:4:"庳";s:3:"庳";s:4:"ð¯¢";s:3:"庶";s:4:"廊";s:3:"廊";s:4:"ð¯¢";s:4:"𪎒";s:4:"ð¯¢";s:3:"廾";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"舁";s:3:"èˆ";s:4:"弢";s:3:"å¼¢";s:4:"弢";s:3:"å¼¢";s:4:"㣇";s:3:"㣇";s:4:"𣊸";s:4:"𣊸";s:4:"𦇚";s:4:"𦇚";s:4:"形";s:3:"å½¢";s:4:"彫";s:3:"彫";s:4:"㣣";s:3:"㣣";s:4:"徚";s:3:"徚";s:4:"ð¯¢";s:3:"å¿";s:4:"志";s:3:"å¿—";s:4:"忹";s:3:"忹";s:4:"悁";s:3:"æ‚";s:4:"㤺";s:3:"㤺";s:4:"㤜";s:3:"㤜";s:4:"悔";s:3:"æ‚”";s:4:"𢛔";s:4:"𢛔";s:4:"惇";s:3:"惇";s:4:"慈";s:3:"æ…ˆ";s:4:"慌";s:3:"æ…Œ";s:4:"慎";s:3:"æ…Ž";s:4:"慌";s:3:"æ…Œ";s:4:"慺";s:3:"æ…º";s:4:"憎";s:3:"憎";s:4:"憲";s:3:"憲";s:4:"憤";s:3:"憤";s:4:"憯";s:3:"憯";s:4:"懞";s:3:"懞";s:4:"懲";s:3:"懲";s:4:"懶";s:3:"懶";s:4:"成";s:3:"æˆ";s:4:"戛";s:3:"戛";s:4:"扝";s:3:"æ‰";s:4:"抱";s:3:"抱";s:4:"拔";s:3:"æ‹”";s:4:"捐";s:3:"æ";s:4:"𢬌";s:4:"𢬌";s:4:"挽";s:3:"挽";s:4:"拼";s:3:"拼";s:4:"捨";s:3:"æ¨";s:4:"掃";s:3:"掃";s:4:"揤";s:3:"æ¤";s:4:"𢯱";s:4:"𢯱";s:4:"搢";s:3:"æ¢";s:4:"揅";s:3:"æ…";s:4:"ð¯£";s:3:"掩";s:4:"㨮";s:3:"㨮";s:4:"摩";s:3:"æ‘©";s:4:"摾";s:3:"摾";s:4:"撝";s:3:"æ’";s:4:"摷";s:3:"æ‘·";s:4:"㩬";s:3:"㩬";s:4:"敏";s:3:"æ•";s:4:"敬";s:3:"敬";s:4:"𣀊";s:4:"𣀊";s:4:"旣";s:3:"æ—£";s:4:"書";s:3:"書";s:4:"ð¯£";s:3:"晉";s:4:"㬙";s:3:"㬙";s:4:"ð¯£";s:3:"æš‘";s:4:"ð¯£";s:3:"㬈";s:4:"㫤";s:3:"㫤";s:4:"冒";s:3:"冒";s:4:"冕";s:3:"冕";s:4:"最";s:3:"最";s:4:"暜";s:3:"æšœ";s:4:"肭";s:3:"è‚­";s:4:"䏙";s:3:"ä™";s:4:"朗";s:3:"朗";s:4:"望";s:3:"望";s:4:"朡";s:3:"朡";s:4:"杞";s:3:"æž";s:4:"杓";s:3:"æ“";s:4:"ð¯£";s:4:"ð£ƒ";s:4:"㭉";s:3:"ã­‰";s:4:"柺";s:3:"柺";s:4:"枅";s:3:"æž…";s:4:"桒";s:3:"æ¡’";s:4:"梅";s:3:"梅";s:4:"𣑭";s:4:"𣑭";s:4:"梎";s:3:"梎";s:4:"栟";s:3:"æ Ÿ";s:4:"椔";s:3:"椔";s:4:"㮝";s:3:"ã®";s:4:"楂";s:3:"楂";s:4:"榣";s:3:"榣";s:4:"槪";s:3:"槪";s:4:"檨";s:3:"檨";s:4:"𣚣";s:4:"𣚣";s:4:"櫛";s:3:"æ«›";s:4:"㰘";s:3:"ã°˜";s:4:"次";s:3:"次";s:4:"𣢧";s:4:"𣢧";s:4:"歔";s:3:"æ­”";s:4:"㱎";s:3:"㱎";s:4:"歲";s:3:"æ­²";s:4:"殟";s:3:"殟";s:4:"殺";s:3:"殺";s:4:"殻";s:3:"æ®»";s:4:"𣪍";s:4:"ð£ª";s:4:"𡴋";s:4:"ð¡´‹";s:4:"𣫺";s:4:"𣫺";s:4:"汎";s:3:"汎";s:4:"𣲼";s:4:"𣲼";s:4:"沿";s:3:"沿";s:4:"泍";s:3:"æ³";s:4:"汧";s:3:"汧";s:4:"洖";s:3:"æ´–";s:4:"派";s:3:"æ´¾";s:4:"ð¯¤";s:3:"æµ·";s:4:"流";s:3:"æµ";s:4:"浩";s:3:"浩";s:4:"浸";s:3:"浸";s:4:"涅";s:3:"涅";s:4:"𣴞";s:4:"𣴞";s:4:"洴";s:3:"æ´´";s:4:"港";s:3:"港";s:4:"湮";s:3:"æ¹®";s:4:"㴳";s:3:"ã´³";s:4:"滋";s:3:"滋";s:4:"滇";s:3:"滇";s:4:"ð¯¤";s:4:"𣻑";s:4:"淹";s:3:"æ·¹";s:4:"ð¯¤";s:3:"æ½®";s:4:"ð¯¤";s:4:"𣽞";s:4:"𣾎";s:4:"𣾎";s:4:"濆";s:3:"濆";s:4:"瀹";s:3:"瀹";s:4:"瀞";s:3:"瀞";s:4:"瀛";s:3:"瀛";s:4:"㶖";s:3:"㶖";s:4:"灊";s:3:"çŠ";s:4:"災";s:3:"ç½";s:4:"灷";s:3:"ç·";s:4:"炭";s:3:"ç‚­";s:4:"𠔥";s:4:"𠔥";s:4:"煅";s:3:"ç……";s:4:"ð¯¤";s:4:"𤉣";s:4:"熜";s:3:"熜";s:4:"𤎫";s:4:"𤎫";s:4:"爨";s:3:"爨";s:4:"爵";s:3:"爵";s:4:"牐";s:3:"ç‰";s:4:"𤘈";s:4:"𤘈";s:4:"犀";s:3:"犀";s:4:"犕";s:3:"犕";s:4:"𤜵";s:4:"𤜵";s:4:"𤠔";s:4:"𤠔";s:4:"獺";s:3:"çº";s:4:"王";s:3:"王";s:4:"㺬";s:3:"㺬";s:4:"玥";s:3:"玥";s:4:"㺸";s:3:"㺸";s:4:"㺸";s:3:"㺸";s:4:"瑇";s:3:"瑇";s:4:"瑜";s:3:"ç‘œ";s:4:"瑱";s:3:"瑱";s:4:"璅";s:3:"ç’…";s:4:"瓊";s:3:"ç“Š";s:4:"㼛";s:3:"ã¼›";s:4:"甤";s:3:"甤";s:4:"𤰶";s:4:"𤰶";s:4:"甾";s:3:"甾";s:4:"𤲒";s:4:"𤲒";s:4:"異";s:3:"ç•°";s:4:"𢆟";s:4:"𢆟";s:4:"瘐";s:3:"ç˜";s:4:"𤾡";s:4:"𤾡";s:4:"𤾸";s:4:"𤾸";s:4:"𥁄";s:4:"ð¥„";s:4:"㿼";s:3:"㿼";s:4:"䀈";s:3:"䀈";s:4:"直";s:3:"ç›´";s:4:"ð¯¥";s:4:"𥃳";s:4:"𥃲";s:4:"𥃲";s:4:"𥄙";s:4:"𥄙";s:4:"𥄳";s:4:"𥄳";s:4:"眞";s:3:"眞";s:4:"真";s:3:"真";s:4:"真";s:3:"真";s:4:"睊";s:3:"çŠ";s:4:"䀹";s:3:"䀹";s:4:"瞋";s:3:"çž‹";s:4:"䁆";s:3:"ä†";s:4:"䂖";s:3:"ä‚–";s:4:"ð¯¥";s:4:"ð¥";s:4:"硎";s:3:"ç¡Ž";s:4:"ð¯¥";s:3:"碌";s:4:"ð¯¥";s:3:"磌";s:4:"䃣";s:3:"䃣";s:4:"𥘦";s:4:"𥘦";s:4:"祖";s:3:"祖";s:4:"𥚚";s:4:"𥚚";s:4:"𥛅";s:4:"𥛅";s:4:"福";s:3:"ç¦";s:4:"秫";s:3:"秫";s:4:"䄯";s:3:"䄯";s:4:"穀";s:3:"ç©€";s:4:"穊";s:3:"ç©Š";s:4:"穏";s:3:"ç©";s:4:"𥥼";s:4:"𥥼";s:4:"ð¯¥";s:4:"𥪧";s:4:"𥪧";s:4:"𥪧";s:4:"竮";s:3:"ç«®";s:4:"䈂";s:3:"䈂";s:4:"𥮫";s:4:"𥮫";s:4:"篆";s:3:"篆";s:4:"築";s:3:"築";s:4:"䈧";s:3:"䈧";s:4:"𥲀";s:4:"𥲀";s:4:"糒";s:3:"ç³’";s:4:"䊠";s:3:"䊠";s:4:"糨";s:3:"糨";s:4:"糣";s:3:"ç³£";s:4:"紀";s:3:"ç´€";s:4:"𥾆";s:4:"𥾆";s:4:"絣";s:3:"çµ£";s:4:"䌁";s:3:"äŒ";s:4:"緇";s:3:"ç·‡";s:4:"縂";s:3:"縂";s:4:"繅";s:3:"ç¹…";s:4:"䌴";s:3:"䌴";s:4:"𦈨";s:4:"𦈨";s:4:"𦉇";s:4:"𦉇";s:4:"䍙";s:3:"ä™";s:4:"𦋙";s:4:"𦋙";s:4:"罺";s:3:"罺";s:4:"𦌾";s:4:"𦌾";s:4:"羕";s:3:"羕";s:4:"翺";s:3:"翺";s:4:"者";s:3:"者";s:4:"𦓚";s:4:"𦓚";s:4:"𦔣";s:4:"𦔣";s:4:"聠";s:3:"è ";s:4:"𦖨";s:4:"𦖨";s:4:"聰";s:3:"è°";s:4:"𣍟";s:4:"ð£Ÿ";s:4:"ð¯¦";s:3:"ä•";s:4:"育";s:3:"育";s:4:"脃";s:3:"脃";s:4:"䐋";s:3:"ä‹";s:4:"脾";s:3:"脾";s:4:"媵";s:3:"媵";s:4:"𦞧";s:4:"𦞧";s:4:"𦞵";s:4:"𦞵";s:4:"𣎓";s:4:"𣎓";s:4:"𣎜";s:4:"𣎜";s:4:"舁";s:3:"èˆ";s:4:"舄";s:3:"舄";s:4:"ð¯¦";s:3:"辞";s:4:"䑫";s:3:"ä‘«";s:4:"ð¯¦";s:3:"芑";s:4:"ð¯¦";s:3:"芋";s:4:"芝";s:3:"èŠ";s:4:"劳";s:3:"劳";s:4:"花";s:3:"花";s:4:"芳";s:3:"芳";s:4:"芽";s:3:"芽";s:4:"苦";s:3:"苦";s:4:"𦬼";s:4:"𦬼";s:4:"若";s:3:"è‹¥";s:4:"茝";s:3:"èŒ";s:4:"荣";s:3:"è£";s:4:"莭";s:3:"莭";s:4:"茣";s:3:"茣";s:4:"ð¯¦";s:3:"莽";s:4:"菧";s:3:"è§";s:4:"著";s:3:"è‘—";s:4:"荓";s:3:"è“";s:4:"菊";s:3:"èŠ";s:4:"菌";s:3:"èŒ";s:4:"菜";s:3:"èœ";s:4:"𦰶";s:4:"𦰶";s:4:"𦵫";s:4:"𦵫";s:4:"𦳕";s:4:"𦳕";s:4:"䔫";s:3:"䔫";s:4:"蓱";s:3:"蓱";s:4:"蓳";s:3:"蓳";s:4:"蔖";s:3:"è”–";s:4:"𧏊";s:4:"ð§Š";s:4:"蕤";s:3:"蕤";s:4:"𦼬";s:4:"𦼬";s:4:"䕝";s:3:"ä•";s:4:"䕡";s:3:"ä•¡";s:4:"𦾱";s:4:"𦾱";s:4:"𧃒";s:4:"𧃒";s:4:"䕫";s:3:"ä•«";s:4:"虐";s:3:"è™";s:4:"虜";s:3:"虜";s:4:"虧";s:3:"虧";s:4:"虩";s:3:"虩";s:4:"蚩";s:3:"èš©";s:4:"蚈";s:3:"蚈";s:4:"蜎";s:3:"蜎";s:4:"蛢";s:3:"蛢";s:4:"蝹";s:3:"è¹";s:4:"蜨";s:3:"蜨";s:4:"蝫";s:3:"è«";s:4:"螆";s:3:"螆";s:4:"䗗";s:3:"ä——";s:4:"蟡";s:3:"蟡";s:4:"ð¯§";s:3:"è ";s:4:"䗹";s:3:"ä—¹";s:4:"衠";s:3:"è¡ ";s:4:"衣";s:3:"è¡£";s:4:"𧙧";s:4:"𧙧";s:4:"裗";s:3:"裗";s:4:"裞";s:3:"裞";s:4:"䘵";s:3:"䘵";s:4:"裺";s:3:"裺";s:4:"㒻";s:3:"ã’»";s:4:"𧢮";s:4:"𧢮";s:4:"𧥦";s:4:"𧥦";s:4:"ð¯§";s:3:"äš¾";s:4:"䛇";s:3:"䛇";s:4:"ð¯§";s:3:"誠";s:4:"ð¯§";s:3:"è«­";s:4:"變";s:3:"變";s:4:"豕";s:3:"豕";s:4:"𧲨";s:4:"𧲨";s:4:"貫";s:3:"貫";s:4:"賁";s:3:"è³";s:4:"贛";s:3:"è´›";s:4:"起";s:3:"èµ·";s:4:"𧼯";s:4:"𧼯";s:4:"𠠄";s:4:"ð  „";s:4:"跋";s:3:"è·‹";s:4:"趼";s:3:"趼";s:4:"跰";s:3:"è·°";s:4:"ð¯§";s:4:"𠣞";s:4:"軔";s:3:"è»”";s:4:"輸";s:3:"輸";s:4:"𨗒";s:4:"𨗒";s:4:"𨗭";s:4:"𨗭";s:4:"邔";s:3:"é‚”";s:4:"郱";s:3:"郱";s:4:"鄑";s:3:"é„‘";s:4:"𨜮";s:4:"𨜮";s:4:"鄛";s:3:"é„›";s:4:"鈸";s:3:"鈸";s:4:"鋗";s:3:"é‹—";s:4:"鋘";s:3:"鋘";s:4:"鉼";s:3:"鉼";s:4:"鏹";s:3:"é¹";s:4:"鐕";s:3:"é•";s:4:"𨯺";s:4:"𨯺";s:4:"開";s:3:"é–‹";s:4:"䦕";s:3:"䦕";s:4:"閷";s:3:"é–·";s:4:"𨵷";s:4:"𨵷";s:4:"䧦";s:3:"䧦";s:4:"雃";s:3:"雃";s:4:"嶲";s:3:"嶲";s:4:"霣";s:3:"霣";s:4:"𩅅";s:4:"ð©……";s:4:"𩈚";s:4:"𩈚";s:4:"䩮";s:3:"ä©®";s:4:"䩶";s:3:"䩶";s:4:"韠";s:3:"韠";s:4:"𩐊";s:4:"ð©Š";s:4:"䪲";s:3:"䪲";s:4:"𩒖";s:4:"ð©’–";s:4:"頋";s:3:"é ‹";s:4:"頋";s:3:"é ‹";s:4:"頩";s:3:"é ©";s:4:"ð¯¨";s:4:"ð©–¶";s:4:"飢";s:3:"飢";s:4:"䬳";s:3:"䬳";s:4:"餩";s:3:"餩";s:4:"馧";s:3:"馧";s:4:"駂";s:3:"駂";s:4:"駾";s:3:"駾";s:4:"䯎";s:3:"䯎";s:4:"𩬰";s:4:"𩬰";s:4:"鬒";s:3:"鬒";s:4:"鱀";s:3:"é±€";s:4:"鳽";s:3:"é³½";s:4:"ð¯¨";s:3:"䳎";s:4:"䳭";s:3:"ä³­";s:4:"ð¯¨";s:3:"鵧";s:4:"ð¯¨";s:4:"𪃎";s:4:"䳸";s:3:"䳸";s:4:"𪄅";s:4:"𪄅";s:4:"𪈎";s:4:"𪈎";s:4:"𪊑";s:4:"𪊑";s:4:"麻";s:3:"麻";s:4:"䵖";s:3:"äµ–";s:4:"黹";s:3:"黹";s:4:"黾";s:3:"黾";s:4:"鼅";s:3:"é¼…";s:4:"鼏";s:3:"é¼";s:4:"鼖";s:3:"é¼–";s:4:"鼻";s:3:"é¼»";s:4:"ð¯¨";s:4:"𪘀";}' );
-UtfNormal::$utfCheckNFC = unserialize( 'a:1217:{s:2:"Í€";s:1:"N";s:2:"Í";s:1:"N";s:2:"̓";s:1:"N";s:2:"Í„";s:1:"N";s:2:"Í´";s:1:"N";s:2:";";s:1:"N";s:2:"·";s:1:"N";s:3:"क़";s:1:"N";s:3:"ख़";s:1:"N";s:3:"ग़";s:1:"N";s:3:"ज़";s:1:"N";s:3:"ड़";s:1:"N";s:3:"à¥";s:1:"N";s:3:"फ़";s:1:"N";s:3:"य़";s:1:"N";s:3:"ড়";s:1:"N";s:3:"à§";s:1:"N";s:3:"য়";s:1:"N";s:3:"ਲ਼";s:1:"N";s:3:"ਸ਼";s:1:"N";s:3:"à©™";s:1:"N";s:3:"à©š";s:1:"N";s:3:"à©›";s:1:"N";s:3:"à©ž";s:1:"N";s:3:"à­œ";s:1:"N";s:3:"à­";s:1:"N";s:3:"གྷ";s:1:"N";s:3:"à½";s:1:"N";s:3:"དྷ";s:1:"N";s:3:"བྷ";s:1:"N";s:3:"ཛྷ";s:1:"N";s:3:"ཀྵ";s:1:"N";s:3:"ཱི";s:1:"N";s:3:"ཱུ";s:1:"N";s:3:"ྲྀ";s:1:"N";s:3:"ླྀ";s:1:"N";s:3:"à¾";s:1:"N";s:3:"ྒྷ";s:1:"N";s:3:"à¾";s:1:"N";s:3:"ྡྷ";s:1:"N";s:3:"ྦྷ";s:1:"N";s:3:"ྫྷ";s:1:"N";s:3:"ྐྵ";s:1:"N";s:3:"á½±";s:1:"N";s:3:"á½³";s:1:"N";s:3:"á½µ";s:1:"N";s:3:"á½·";s:1:"N";s:3:"á½¹";s:1:"N";s:3:"á½»";s:1:"N";s:3:"á½½";s:1:"N";s:3:"á¾»";s:1:"N";s:3:"á¾¾";s:1:"N";s:3:"Έ";s:1:"N";s:3:"á¿‹";s:1:"N";s:3:"á¿“";s:1:"N";s:3:"á¿›";s:1:"N";s:3:"á¿£";s:1:"N";s:3:"á¿«";s:1:"N";s:3:"á¿®";s:1:"N";s:3:"`";s:1:"N";s:3:"Ό";s:1:"N";s:3:"á¿»";s:1:"N";s:3:"´";s:1:"N";s:3:" ";s:1:"N";s:3:"â€";s:1:"N";s:3:"Ω";s:1:"N";s:3:"K";s:1:"N";s:3:"â„«";s:1:"N";s:3:"〈";s:1:"N";s:3:"〉";s:1:"N";s:3:"â«œ";s:1:"N";s:3:"豈";s:1:"N";s:3:"ï¤";s:1:"N";s:3:"車";s:1:"N";s:3:"賈";s:1:"N";s:3:"滑";s:1:"N";s:3:"串";s:1:"N";s:3:"句";s:1:"N";s:3:"龜";s:1:"N";s:3:"龜";s:1:"N";s:3:"契";s:1:"N";s:3:"金";s:1:"N";s:3:"喇";s:1:"N";s:3:"奈";s:1:"N";s:3:"ï¤";s:1:"N";s:3:"癩";s:1:"N";s:3:"ï¤";s:1:"N";s:3:"ï¤";s:1:"N";s:3:"螺";s:1:"N";s:3:"裸";s:1:"N";s:3:"邏";s:1:"N";s:3:"樂";s:1:"N";s:3:"洛";s:1:"N";s:3:"烙";s:1:"N";s:3:"珞";s:1:"N";s:3:"落";s:1:"N";s:3:"酪";s:1:"N";s:3:"駱";s:1:"N";s:3:"亂";s:1:"N";s:3:"卵";s:1:"N";s:3:"ï¤";s:1:"N";s:3:"爛";s:1:"N";s:3:"蘭";s:1:"N";s:3:"鸞";s:1:"N";s:3:"嵐";s:1:"N";s:3:"濫";s:1:"N";s:3:"藍";s:1:"N";s:3:"襤";s:1:"N";s:3:"拉";s:1:"N";s:3:"臘";s:1:"N";s:3:"蠟";s:1:"N";s:3:"廊";s:1:"N";s:3:"朗";s:1:"N";s:3:"浪";s:1:"N";s:3:"狼";s:1:"N";s:3:"郎";s:1:"N";s:3:"來";s:1:"N";s:3:"冷";s:1:"N";s:3:"勞";s:1:"N";s:3:"擄";s:1:"N";s:3:"櫓";s:1:"N";s:3:"爐";s:1:"N";s:3:"盧";s:1:"N";s:3:"老";s:1:"N";s:3:"蘆";s:1:"N";s:3:"虜";s:1:"N";s:3:"路";s:1:"N";s:3:"露";s:1:"N";s:3:"魯";s:1:"N";s:3:"鷺";s:1:"N";s:3:"碌";s:1:"N";s:3:"祿";s:1:"N";s:3:"綠";s:1:"N";s:3:"菉";s:1:"N";s:3:"錄";s:1:"N";s:3:"鹿";s:1:"N";s:3:"ï¥";s:1:"N";s:3:"壟";s:1:"N";s:3:"弄";s:1:"N";s:3:"籠";s:1:"N";s:3:"聾";s:1:"N";s:3:"牢";s:1:"N";s:3:"磊";s:1:"N";s:3:"賂";s:1:"N";s:3:"雷";s:1:"N";s:3:"壘";s:1:"N";s:3:"屢";s:1:"N";s:3:"樓";s:1:"N";s:3:"ï¥";s:1:"N";s:3:"漏";s:1:"N";s:3:"ï¥";s:1:"N";s:3:"ï¥";s:1:"N";s:3:"陋";s:1:"N";s:3:"勒";s:1:"N";s:3:"肋";s:1:"N";s:3:"凜";s:1:"N";s:3:"凌";s:1:"N";s:3:"稜";s:1:"N";s:3:"綾";s:1:"N";s:3:"菱";s:1:"N";s:3:"陵";s:1:"N";s:3:"讀";s:1:"N";s:3:"拏";s:1:"N";s:3:"樂";s:1:"N";s:3:"ï¥";s:1:"N";s:3:"丹";s:1:"N";s:3:"寧";s:1:"N";s:3:"怒";s:1:"N";s:3:"率";s:1:"N";s:3:"異";s:1:"N";s:3:"北";s:1:"N";s:3:"磻";s:1:"N";s:3:"便";s:1:"N";s:3:"復";s:1:"N";s:3:"不";s:1:"N";s:3:"泌";s:1:"N";s:3:"數";s:1:"N";s:3:"索";s:1:"N";s:3:"參";s:1:"N";s:3:"塞";s:1:"N";s:3:"省";s:1:"N";s:3:"葉";s:1:"N";s:3:"說";s:1:"N";s:3:"殺";s:1:"N";s:3:"辰";s:1:"N";s:3:"沈";s:1:"N";s:3:"拾";s:1:"N";s:3:"若";s:1:"N";s:3:"掠";s:1:"N";s:3:"略";s:1:"N";s:3:"亮";s:1:"N";s:3:"兩";s:1:"N";s:3:"凉";s:1:"N";s:3:"梁";s:1:"N";s:3:"糧";s:1:"N";s:3:"良";s:1:"N";s:3:"諒";s:1:"N";s:3:"量";s:1:"N";s:3:"勵";s:1:"N";s:3:"呂";s:1:"N";s:3:"ï¦";s:1:"N";s:3:"廬";s:1:"N";s:3:"旅";s:1:"N";s:3:"濾";s:1:"N";s:3:"礪";s:1:"N";s:3:"閭";s:1:"N";s:3:"驪";s:1:"N";s:3:"麗";s:1:"N";s:3:"黎";s:1:"N";s:3:"力";s:1:"N";s:3:"曆";s:1:"N";s:3:"歷";s:1:"N";s:3:"ï¦";s:1:"N";s:3:"年";s:1:"N";s:3:"ï¦";s:1:"N";s:3:"ï¦";s:1:"N";s:3:"撚";s:1:"N";s:3:"漣";s:1:"N";s:3:"煉";s:1:"N";s:3:"璉";s:1:"N";s:3:"秊";s:1:"N";s:3:"練";s:1:"N";s:3:"聯";s:1:"N";s:3:"輦";s:1:"N";s:3:"蓮";s:1:"N";s:3:"連";s:1:"N";s:3:"鍊";s:1:"N";s:3:"列";s:1:"N";s:3:"ï¦";s:1:"N";s:3:"咽";s:1:"N";s:3:"烈";s:1:"N";s:3:"裂";s:1:"N";s:3:"說";s:1:"N";s:3:"廉";s:1:"N";s:3:"念";s:1:"N";s:3:"捻";s:1:"N";s:3:"殮";s:1:"N";s:3:"簾";s:1:"N";s:3:"獵";s:1:"N";s:3:"令";s:1:"N";s:3:"囹";s:1:"N";s:3:"寧";s:1:"N";s:3:"嶺";s:1:"N";s:3:"怜";s:1:"N";s:3:"玲";s:1:"N";s:3:"瑩";s:1:"N";s:3:"羚";s:1:"N";s:3:"聆";s:1:"N";s:3:"鈴";s:1:"N";s:3:"零";s:1:"N";s:3:"靈";s:1:"N";s:3:"領";s:1:"N";s:3:"例";s:1:"N";s:3:"禮";s:1:"N";s:3:"醴";s:1:"N";s:3:"隸";s:1:"N";s:3:"惡";s:1:"N";s:3:"了";s:1:"N";s:3:"僚";s:1:"N";s:3:"寮";s:1:"N";s:3:"尿";s:1:"N";s:3:"料";s:1:"N";s:3:"樂";s:1:"N";s:3:"燎";s:1:"N";s:3:"ï§";s:1:"N";s:3:"蓼";s:1:"N";s:3:"遼";s:1:"N";s:3:"龍";s:1:"N";s:3:"暈";s:1:"N";s:3:"阮";s:1:"N";s:3:"劉";s:1:"N";s:3:"杻";s:1:"N";s:3:"柳";s:1:"N";s:3:"流";s:1:"N";s:3:"溜";s:1:"N";s:3:"琉";s:1:"N";s:3:"ï§";s:1:"N";s:3:"硫";s:1:"N";s:3:"ï§";s:1:"N";s:3:"ï§";s:1:"N";s:3:"六";s:1:"N";s:3:"戮";s:1:"N";s:3:"陸";s:1:"N";s:3:"倫";s:1:"N";s:3:"崙";s:1:"N";s:3:"淪";s:1:"N";s:3:"輪";s:1:"N";s:3:"律";s:1:"N";s:3:"慄";s:1:"N";s:3:"栗";s:1:"N";s:3:"率";s:1:"N";s:3:"隆";s:1:"N";s:3:"ï§";s:1:"N";s:3:"吏";s:1:"N";s:3:"履";s:1:"N";s:3:"易";s:1:"N";s:3:"李";s:1:"N";s:3:"梨";s:1:"N";s:3:"泥";s:1:"N";s:3:"理";s:1:"N";s:3:"痢";s:1:"N";s:3:"罹";s:1:"N";s:3:"裏";s:1:"N";s:3:"裡";s:1:"N";s:3:"里";s:1:"N";s:3:"離";s:1:"N";s:3:"匿";s:1:"N";s:3:"溺";s:1:"N";s:3:"吝";s:1:"N";s:3:"燐";s:1:"N";s:3:"璘";s:1:"N";s:3:"藺";s:1:"N";s:3:"隣";s:1:"N";s:3:"鱗";s:1:"N";s:3:"麟";s:1:"N";s:3:"林";s:1:"N";s:3:"淋";s:1:"N";s:3:"臨";s:1:"N";s:3:"立";s:1:"N";s:3:"笠";s:1:"N";s:3:"粒";s:1:"N";s:3:"狀";s:1:"N";s:3:"炙";s:1:"N";s:3:"識";s:1:"N";s:3:"什";s:1:"N";s:3:"茶";s:1:"N";s:3:"刺";s:1:"N";s:3:"切";s:1:"N";s:3:"ï¨";s:1:"N";s:3:"拓";s:1:"N";s:3:"糖";s:1:"N";s:3:"宅";s:1:"N";s:3:"洞";s:1:"N";s:3:"暴";s:1:"N";s:3:"輻";s:1:"N";s:3:"行";s:1:"N";s:3:"降";s:1:"N";s:3:"見";s:1:"N";s:3:"廓";s:1:"N";s:3:"兀";s:1:"N";s:3:"ï¨";s:1:"N";s:3:"ï¨";s:1:"N";s:3:"晴";s:1:"N";s:3:"凞";s:1:"N";s:3:"猪";s:1:"N";s:3:"益";s:1:"N";s:3:"礼";s:1:"N";s:3:"神";s:1:"N";s:3:"祥";s:1:"N";s:3:"福";s:1:"N";s:3:"靖";s:1:"N";s:3:"ï¨";s:1:"N";s:3:"羽";s:1:"N";s:3:"蘒";s:1:"N";s:3:"諸";s:1:"N";s:3:"逸";s:1:"N";s:3:"都";s:1:"N";s:3:"飯";s:1:"N";s:3:"飼";s:1:"N";s:3:"館";s:1:"N";s:3:"鶴";s:1:"N";s:3:"侮";s:1:"N";s:3:"僧";s:1:"N";s:3:"免";s:1:"N";s:3:"勉";s:1:"N";s:3:"勤";s:1:"N";s:3:"卑";s:1:"N";s:3:"喝";s:1:"N";s:3:"嘆";s:1:"N";s:3:"器";s:1:"N";s:3:"塀";s:1:"N";s:3:"墨";s:1:"N";s:3:"層";s:1:"N";s:3:"屮";s:1:"N";s:3:"悔";s:1:"N";s:3:"慨";s:1:"N";s:3:"憎";s:1:"N";s:3:"ï©€";s:1:"N";s:3:"ï©";s:1:"N";s:3:"ï©‚";s:1:"N";s:3:"暑";s:1:"N";s:3:"ï©„";s:1:"N";s:3:"ï©…";s:1:"N";s:3:"渚";s:1:"N";s:3:"漢";s:1:"N";s:3:"煮";s:1:"N";s:3:"爫";s:1:"N";s:3:"ï©Š";s:1:"N";s:3:"ï©‹";s:1:"N";s:3:"ï©Œ";s:1:"N";s:3:"ï©";s:1:"N";s:3:"ï©Ž";s:1:"N";s:3:"ï©";s:1:"N";s:3:"ï©";s:1:"N";s:3:"ï©‘";s:1:"N";s:3:"ï©’";s:1:"N";s:3:"ï©“";s:1:"N";s:3:"ï©”";s:1:"N";s:3:"ï©•";s:1:"N";s:3:"ï©–";s:1:"N";s:3:"ï©—";s:1:"N";s:3:"縉";s:1:"N";s:3:"ï©™";s:1:"N";s:3:"ï©š";s:1:"N";s:3:"ï©›";s:1:"N";s:3:"ï©œ";s:1:"N";s:3:"ï©";s:1:"N";s:3:"ï©ž";s:1:"N";s:3:"ï©Ÿ";s:1:"N";s:3:"ï© ";s:1:"N";s:3:"ï©¡";s:1:"N";s:3:"ï©¢";s:1:"N";s:3:"ï©£";s:1:"N";s:3:"賓";s:1:"N";s:3:"ï©¥";s:1:"N";s:3:"辶";s:1:"N";s:3:"逸";s:1:"N";s:3:"難";s:1:"N";s:3:"ï©©";s:1:"N";s:3:"頻";s:1:"N";s:3:"ï©°";s:1:"N";s:3:"况";s:1:"N";s:3:"全";s:1:"N";s:3:"侀";s:1:"N";s:3:"ï©´";s:1:"N";s:3:"冀";s:1:"N";s:3:"勇";s:1:"N";s:3:"ï©·";s:1:"N";s:3:"喝";s:1:"N";s:3:"啕";s:1:"N";s:3:"喙";s:1:"N";s:3:"ï©»";s:1:"N";s:3:"塚";s:1:"N";s:3:"墳";s:1:"N";s:3:"奄";s:1:"N";s:3:"ï©¿";s:1:"N";s:3:"婢";s:1:"N";s:3:"ïª";s:1:"N";s:3:"廒";s:1:"N";s:3:"廙";s:1:"N";s:3:"彩";s:1:"N";s:3:"徭";s:1:"N";s:3:"惘";s:1:"N";s:3:"慎";s:1:"N";s:3:"愈";s:1:"N";s:3:"憎";s:1:"N";s:3:"慠";s:1:"N";s:3:"懲";s:1:"N";s:3:"戴";s:1:"N";s:3:"ïª";s:1:"N";s:3:"搜";s:1:"N";s:3:"ïª";s:1:"N";s:3:"ïª";s:1:"N";s:3:"晴";s:1:"N";s:3:"朗";s:1:"N";s:3:"望";s:1:"N";s:3:"杖";s:1:"N";s:3:"歹";s:1:"N";s:3:"殺";s:1:"N";s:3:"流";s:1:"N";s:3:"滛";s:1:"N";s:3:"滋";s:1:"N";s:3:"漢";s:1:"N";s:3:"瀞";s:1:"N";s:3:"煮";s:1:"N";s:3:"ïª";s:1:"N";s:3:"爵";s:1:"N";s:3:"犯";s:1:"N";s:3:"猪";s:1:"N";s:3:"瑱";s:1:"N";s:3:"甆";s:1:"N";s:3:"画";s:1:"N";s:3:"瘝";s:1:"N";s:3:"瘟";s:1:"N";s:3:"益";s:1:"N";s:3:"盛";s:1:"N";s:3:"直";s:1:"N";s:3:"睊";s:1:"N";s:3:"着";s:1:"N";s:3:"磌";s:1:"N";s:3:"窱";s:1:"N";s:3:"節";s:1:"N";s:3:"类";s:1:"N";s:3:"絛";s:1:"N";s:3:"練";s:1:"N";s:3:"缾";s:1:"N";s:3:"者";s:1:"N";s:3:"荒";s:1:"N";s:3:"華";s:1:"N";s:3:"蝹";s:1:"N";s:3:"襁";s:1:"N";s:3:"覆";s:1:"N";s:3:"視";s:1:"N";s:3:"調";s:1:"N";s:3:"諸";s:1:"N";s:3:"請";s:1:"N";s:3:"謁";s:1:"N";s:3:"諾";s:1:"N";s:3:"諭";s:1:"N";s:3:"謹";s:1:"N";s:3:"ï«€";s:1:"N";s:3:"ï«";s:1:"N";s:3:"ï«‚";s:1:"N";s:3:"遲";s:1:"N";s:3:"ï«„";s:1:"N";s:3:"ï«…";s:1:"N";s:3:"陼";s:1:"N";s:3:"難";s:1:"N";s:3:"靖";s:1:"N";s:3:"韛";s:1:"N";s:3:"ï«Š";s:1:"N";s:3:"ï«‹";s:1:"N";s:3:"ï«Œ";s:1:"N";s:3:"ï«";s:1:"N";s:3:"ï«Ž";s:1:"N";s:3:"ï«";s:1:"N";s:3:"ï«";s:1:"N";s:3:"ï«‘";s:1:"N";s:3:"ï«’";s:1:"N";s:3:"ï«“";s:1:"N";s:3:"ï«”";s:1:"N";s:3:"ï«•";s:1:"N";s:3:"ï«–";s:1:"N";s:3:"ï«—";s:1:"N";s:3:"齃";s:1:"N";s:3:"ï«™";s:1:"N";s:3:"ï¬";s:1:"N";s:3:"ײַ";s:1:"N";s:3:"שׁ";s:1:"N";s:3:"שׂ";s:1:"N";s:3:"שּׁ";s:1:"N";s:3:"שּׂ";s:1:"N";s:3:"אַ";s:1:"N";s:3:"אָ";s:1:"N";s:3:"אּ";s:1:"N";s:3:"בּ";s:1:"N";s:3:"גּ";s:1:"N";s:3:"דּ";s:1:"N";s:3:"הּ";s:1:"N";s:3:"וּ";s:1:"N";s:3:"זּ";s:1:"N";s:3:"טּ";s:1:"N";s:3:"יּ";s:1:"N";s:3:"ךּ";s:1:"N";s:3:"כּ";s:1:"N";s:3:"לּ";s:1:"N";s:3:"מּ";s:1:"N";s:3:"ï­€";s:1:"N";s:3:"ï­";s:1:"N";s:3:"ï­ƒ";s:1:"N";s:3:"ï­„";s:1:"N";s:3:"ï­†";s:1:"N";s:3:"ï­‡";s:1:"N";s:3:"ï­ˆ";s:1:"N";s:3:"ï­‰";s:1:"N";s:3:"ï­Š";s:1:"N";s:3:"ï­‹";s:1:"N";s:3:"ï­Œ";s:1:"N";s:3:"ï­";s:1:"N";s:3:"ï­Ž";s:1:"N";s:4:"ð…ž";s:1:"N";s:4:"ð…Ÿ";s:1:"N";s:4:"ð… ";s:1:"N";s:4:"ð…¡";s:1:"N";s:4:"ð…¢";s:1:"N";s:4:"ð…£";s:1:"N";s:4:"ð…¤";s:1:"N";s:4:"ð†»";s:1:"N";s:4:"ð†¼";s:1:"N";s:4:"ð†½";s:1:"N";s:4:"ð†¾";s:1:"N";s:4:"ð†¿";s:1:"N";s:4:"ð‡€";s:1:"N";s:4:"丽";s:1:"N";s:4:"ð¯ ";s:1:"N";s:4:"乁";s:1:"N";s:4:"𠄢";s:1:"N";s:4:"你";s:1:"N";s:4:"侮";s:1:"N";s:4:"侻";s:1:"N";s:4:"倂";s:1:"N";s:4:"偺";s:1:"N";s:4:"備";s:1:"N";s:4:"僧";s:1:"N";s:4:"像";s:1:"N";s:4:"㒞";s:1:"N";s:4:"ð¯ ";s:1:"N";s:4:"免";s:1:"N";s:4:"ð¯ ";s:1:"N";s:4:"ð¯ ";s:1:"N";s:4:"具";s:1:"N";s:4:"𠔜";s:1:"N";s:4:"㒹";s:1:"N";s:4:"內";s:1:"N";s:4:"再";s:1:"N";s:4:"𠕋";s:1:"N";s:4:"冗";s:1:"N";s:4:"冤";s:1:"N";s:4:"仌";s:1:"N";s:4:"冬";s:1:"N";s:4:"况";s:1:"N";s:4:"𩇟";s:1:"N";s:4:"ð¯ ";s:1:"N";s:4:"刃";s:1:"N";s:4:"㓟";s:1:"N";s:4:"刻";s:1:"N";s:4:"剆";s:1:"N";s:4:"割";s:1:"N";s:4:"剷";s:1:"N";s:4:"㔕";s:1:"N";s:4:"勇";s:1:"N";s:4:"勉";s:1:"N";s:4:"勤";s:1:"N";s:4:"勺";s:1:"N";s:4:"包";s:1:"N";s:4:"匆";s:1:"N";s:4:"北";s:1:"N";s:4:"卉";s:1:"N";s:4:"卑";s:1:"N";s:4:"博";s:1:"N";s:4:"即";s:1:"N";s:4:"卽";s:1:"N";s:4:"卿";s:1:"N";s:4:"卿";s:1:"N";s:4:"卿";s:1:"N";s:4:"𠨬";s:1:"N";s:4:"灰";s:1:"N";s:4:"及";s:1:"N";s:4:"叟";s:1:"N";s:4:"𠭣";s:1:"N";s:4:"叫";s:1:"N";s:4:"叱";s:1:"N";s:4:"吆";s:1:"N";s:4:"咞";s:1:"N";s:4:"吸";s:1:"N";s:4:"呈";s:1:"N";s:4:"周";s:1:"N";s:4:"咢";s:1:"N";s:4:"ð¯¡";s:1:"N";s:4:"唐";s:1:"N";s:4:"啓";s:1:"N";s:4:"啣";s:1:"N";s:4:"善";s:1:"N";s:4:"善";s:1:"N";s:4:"喙";s:1:"N";s:4:"喫";s:1:"N";s:4:"喳";s:1:"N";s:4:"嗂";s:1:"N";s:4:"圖";s:1:"N";s:4:"嘆";s:1:"N";s:4:"ð¯¡";s:1:"N";s:4:"噑";s:1:"N";s:4:"ð¯¡";s:1:"N";s:4:"ð¯¡";s:1:"N";s:4:"壮";s:1:"N";s:4:"城";s:1:"N";s:4:"埴";s:1:"N";s:4:"堍";s:1:"N";s:4:"型";s:1:"N";s:4:"堲";s:1:"N";s:4:"報";s:1:"N";s:4:"墬";s:1:"N";s:4:"𡓤";s:1:"N";s:4:"売";s:1:"N";s:4:"壷";s:1:"N";s:4:"夆";s:1:"N";s:4:"ð¯¡";s:1:"N";s:4:"夢";s:1:"N";s:4:"奢";s:1:"N";s:4:"𡚨";s:1:"N";s:4:"𡛪";s:1:"N";s:4:"姬";s:1:"N";s:4:"娛";s:1:"N";s:4:"娧";s:1:"N";s:4:"姘";s:1:"N";s:4:"婦";s:1:"N";s:4:"㛮";s:1:"N";s:4:"㛼";s:1:"N";s:4:"嬈";s:1:"N";s:4:"嬾";s:1:"N";s:4:"嬾";s:1:"N";s:4:"𡧈";s:1:"N";s:4:"寃";s:1:"N";s:4:"寘";s:1:"N";s:4:"寧";s:1:"N";s:4:"寳";s:1:"N";s:4:"𡬘";s:1:"N";s:4:"寿";s:1:"N";s:4:"将";s:1:"N";s:4:"当";s:1:"N";s:4:"尢";s:1:"N";s:4:"㞁";s:1:"N";s:4:"屠";s:1:"N";s:4:"屮";s:1:"N";s:4:"峀";s:1:"N";s:4:"岍";s:1:"N";s:4:"𡷤";s:1:"N";s:4:"嵃";s:1:"N";s:4:"𡷦";s:1:"N";s:4:"嵮";s:1:"N";s:4:"嵫";s:1:"N";s:4:"嵼";s:1:"N";s:4:"ð¯¢";s:1:"N";s:4:"巢";s:1:"N";s:4:"㠯";s:1:"N";s:4:"巽";s:1:"N";s:4:"帨";s:1:"N";s:4:"帽";s:1:"N";s:4:"幩";s:1:"N";s:4:"㡢";s:1:"N";s:4:"𢆃";s:1:"N";s:4:"㡼";s:1:"N";s:4:"庰";s:1:"N";s:4:"庳";s:1:"N";s:4:"ð¯¢";s:1:"N";s:4:"廊";s:1:"N";s:4:"ð¯¢";s:1:"N";s:4:"ð¯¢";s:1:"N";s:4:"𢌱";s:1:"N";s:4:"𢌱";s:1:"N";s:4:"舁";s:1:"N";s:4:"弢";s:1:"N";s:4:"弢";s:1:"N";s:4:"㣇";s:1:"N";s:4:"𣊸";s:1:"N";s:4:"𦇚";s:1:"N";s:4:"形";s:1:"N";s:4:"彫";s:1:"N";s:4:"㣣";s:1:"N";s:4:"徚";s:1:"N";s:4:"ð¯¢";s:1:"N";s:4:"志";s:1:"N";s:4:"忹";s:1:"N";s:4:"悁";s:1:"N";s:4:"㤺";s:1:"N";s:4:"㤜";s:1:"N";s:4:"悔";s:1:"N";s:4:"𢛔";s:1:"N";s:4:"惇";s:1:"N";s:4:"慈";s:1:"N";s:4:"慌";s:1:"N";s:4:"慎";s:1:"N";s:4:"慌";s:1:"N";s:4:"慺";s:1:"N";s:4:"憎";s:1:"N";s:4:"憲";s:1:"N";s:4:"憤";s:1:"N";s:4:"憯";s:1:"N";s:4:"懞";s:1:"N";s:4:"懲";s:1:"N";s:4:"懶";s:1:"N";s:4:"成";s:1:"N";s:4:"戛";s:1:"N";s:4:"扝";s:1:"N";s:4:"抱";s:1:"N";s:4:"拔";s:1:"N";s:4:"捐";s:1:"N";s:4:"𢬌";s:1:"N";s:4:"挽";s:1:"N";s:4:"拼";s:1:"N";s:4:"捨";s:1:"N";s:4:"掃";s:1:"N";s:4:"揤";s:1:"N";s:4:"𢯱";s:1:"N";s:4:"搢";s:1:"N";s:4:"揅";s:1:"N";s:4:"ð¯£";s:1:"N";s:4:"㨮";s:1:"N";s:4:"摩";s:1:"N";s:4:"摾";s:1:"N";s:4:"撝";s:1:"N";s:4:"摷";s:1:"N";s:4:"㩬";s:1:"N";s:4:"敏";s:1:"N";s:4:"敬";s:1:"N";s:4:"𣀊";s:1:"N";s:4:"旣";s:1:"N";s:4:"書";s:1:"N";s:4:"ð¯£";s:1:"N";s:4:"㬙";s:1:"N";s:4:"ð¯£";s:1:"N";s:4:"ð¯£";s:1:"N";s:4:"㫤";s:1:"N";s:4:"冒";s:1:"N";s:4:"冕";s:1:"N";s:4:"最";s:1:"N";s:4:"暜";s:1:"N";s:4:"肭";s:1:"N";s:4:"䏙";s:1:"N";s:4:"朗";s:1:"N";s:4:"望";s:1:"N";s:4:"朡";s:1:"N";s:4:"杞";s:1:"N";s:4:"杓";s:1:"N";s:4:"ð¯£";s:1:"N";s:4:"㭉";s:1:"N";s:4:"柺";s:1:"N";s:4:"枅";s:1:"N";s:4:"桒";s:1:"N";s:4:"梅";s:1:"N";s:4:"𣑭";s:1:"N";s:4:"梎";s:1:"N";s:4:"栟";s:1:"N";s:4:"椔";s:1:"N";s:4:"㮝";s:1:"N";s:4:"楂";s:1:"N";s:4:"榣";s:1:"N";s:4:"槪";s:1:"N";s:4:"檨";s:1:"N";s:4:"𣚣";s:1:"N";s:4:"櫛";s:1:"N";s:4:"㰘";s:1:"N";s:4:"次";s:1:"N";s:4:"𣢧";s:1:"N";s:4:"歔";s:1:"N";s:4:"㱎";s:1:"N";s:4:"歲";s:1:"N";s:4:"殟";s:1:"N";s:4:"殺";s:1:"N";s:4:"殻";s:1:"N";s:4:"𣪍";s:1:"N";s:4:"𡴋";s:1:"N";s:4:"𣫺";s:1:"N";s:4:"汎";s:1:"N";s:4:"𣲼";s:1:"N";s:4:"沿";s:1:"N";s:4:"泍";s:1:"N";s:4:"汧";s:1:"N";s:4:"洖";s:1:"N";s:4:"派";s:1:"N";s:4:"ð¯¤";s:1:"N";s:4:"流";s:1:"N";s:4:"浩";s:1:"N";s:4:"浸";s:1:"N";s:4:"涅";s:1:"N";s:4:"𣴞";s:1:"N";s:4:"洴";s:1:"N";s:4:"港";s:1:"N";s:4:"湮";s:1:"N";s:4:"㴳";s:1:"N";s:4:"滋";s:1:"N";s:4:"滇";s:1:"N";s:4:"ð¯¤";s:1:"N";s:4:"淹";s:1:"N";s:4:"ð¯¤";s:1:"N";s:4:"ð¯¤";s:1:"N";s:4:"𣾎";s:1:"N";s:4:"濆";s:1:"N";s:4:"瀹";s:1:"N";s:4:"瀞";s:1:"N";s:4:"瀛";s:1:"N";s:4:"㶖";s:1:"N";s:4:"灊";s:1:"N";s:4:"災";s:1:"N";s:4:"灷";s:1:"N";s:4:"炭";s:1:"N";s:4:"𠔥";s:1:"N";s:4:"煅";s:1:"N";s:4:"ð¯¤";s:1:"N";s:4:"熜";s:1:"N";s:4:"𤎫";s:1:"N";s:4:"爨";s:1:"N";s:4:"爵";s:1:"N";s:4:"牐";s:1:"N";s:4:"𤘈";s:1:"N";s:4:"犀";s:1:"N";s:4:"犕";s:1:"N";s:4:"𤜵";s:1:"N";s:4:"𤠔";s:1:"N";s:4:"獺";s:1:"N";s:4:"王";s:1:"N";s:4:"㺬";s:1:"N";s:4:"玥";s:1:"N";s:4:"㺸";s:1:"N";s:4:"㺸";s:1:"N";s:4:"瑇";s:1:"N";s:4:"瑜";s:1:"N";s:4:"瑱";s:1:"N";s:4:"璅";s:1:"N";s:4:"瓊";s:1:"N";s:4:"㼛";s:1:"N";s:4:"甤";s:1:"N";s:4:"𤰶";s:1:"N";s:4:"甾";s:1:"N";s:4:"𤲒";s:1:"N";s:4:"異";s:1:"N";s:4:"𢆟";s:1:"N";s:4:"瘐";s:1:"N";s:4:"𤾡";s:1:"N";s:4:"𤾸";s:1:"N";s:4:"𥁄";s:1:"N";s:4:"㿼";s:1:"N";s:4:"䀈";s:1:"N";s:4:"直";s:1:"N";s:4:"ð¯¥";s:1:"N";s:4:"𥃲";s:1:"N";s:4:"𥄙";s:1:"N";s:4:"𥄳";s:1:"N";s:4:"眞";s:1:"N";s:4:"真";s:1:"N";s:4:"真";s:1:"N";s:4:"睊";s:1:"N";s:4:"䀹";s:1:"N";s:4:"瞋";s:1:"N";s:4:"䁆";s:1:"N";s:4:"䂖";s:1:"N";s:4:"ð¯¥";s:1:"N";s:4:"硎";s:1:"N";s:4:"ð¯¥";s:1:"N";s:4:"ð¯¥";s:1:"N";s:4:"䃣";s:1:"N";s:4:"𥘦";s:1:"N";s:4:"祖";s:1:"N";s:4:"𥚚";s:1:"N";s:4:"𥛅";s:1:"N";s:4:"福";s:1:"N";s:4:"秫";s:1:"N";s:4:"䄯";s:1:"N";s:4:"穀";s:1:"N";s:4:"穊";s:1:"N";s:4:"穏";s:1:"N";s:4:"𥥼";s:1:"N";s:4:"ð¯¥";s:1:"N";s:4:"𥪧";s:1:"N";s:4:"竮";s:1:"N";s:4:"䈂";s:1:"N";s:4:"𥮫";s:1:"N";s:4:"篆";s:1:"N";s:4:"築";s:1:"N";s:4:"䈧";s:1:"N";s:4:"𥲀";s:1:"N";s:4:"糒";s:1:"N";s:4:"䊠";s:1:"N";s:4:"糨";s:1:"N";s:4:"糣";s:1:"N";s:4:"紀";s:1:"N";s:4:"𥾆";s:1:"N";s:4:"絣";s:1:"N";s:4:"䌁";s:1:"N";s:4:"緇";s:1:"N";s:4:"縂";s:1:"N";s:4:"繅";s:1:"N";s:4:"䌴";s:1:"N";s:4:"𦈨";s:1:"N";s:4:"𦉇";s:1:"N";s:4:"䍙";s:1:"N";s:4:"𦋙";s:1:"N";s:4:"罺";s:1:"N";s:4:"𦌾";s:1:"N";s:4:"羕";s:1:"N";s:4:"翺";s:1:"N";s:4:"者";s:1:"N";s:4:"𦓚";s:1:"N";s:4:"𦔣";s:1:"N";s:4:"聠";s:1:"N";s:4:"𦖨";s:1:"N";s:4:"聰";s:1:"N";s:4:"𣍟";s:1:"N";s:4:"ð¯¦";s:1:"N";s:4:"育";s:1:"N";s:4:"脃";s:1:"N";s:4:"䐋";s:1:"N";s:4:"脾";s:1:"N";s:4:"媵";s:1:"N";s:4:"𦞧";s:1:"N";s:4:"𦞵";s:1:"N";s:4:"𣎓";s:1:"N";s:4:"𣎜";s:1:"N";s:4:"舁";s:1:"N";s:4:"舄";s:1:"N";s:4:"ð¯¦";s:1:"N";s:4:"䑫";s:1:"N";s:4:"ð¯¦";s:1:"N";s:4:"ð¯¦";s:1:"N";s:4:"芝";s:1:"N";s:4:"劳";s:1:"N";s:4:"花";s:1:"N";s:4:"芳";s:1:"N";s:4:"芽";s:1:"N";s:4:"苦";s:1:"N";s:4:"𦬼";s:1:"N";s:4:"若";s:1:"N";s:4:"茝";s:1:"N";s:4:"荣";s:1:"N";s:4:"莭";s:1:"N";s:4:"茣";s:1:"N";s:4:"ð¯¦";s:1:"N";s:4:"菧";s:1:"N";s:4:"著";s:1:"N";s:4:"荓";s:1:"N";s:4:"菊";s:1:"N";s:4:"菌";s:1:"N";s:4:"菜";s:1:"N";s:4:"𦰶";s:1:"N";s:4:"𦵫";s:1:"N";s:4:"𦳕";s:1:"N";s:4:"䔫";s:1:"N";s:4:"蓱";s:1:"N";s:4:"蓳";s:1:"N";s:4:"蔖";s:1:"N";s:4:"𧏊";s:1:"N";s:4:"蕤";s:1:"N";s:4:"𦼬";s:1:"N";s:4:"䕝";s:1:"N";s:4:"䕡";s:1:"N";s:4:"𦾱";s:1:"N";s:4:"𧃒";s:1:"N";s:4:"䕫";s:1:"N";s:4:"虐";s:1:"N";s:4:"虜";s:1:"N";s:4:"虧";s:1:"N";s:4:"虩";s:1:"N";s:4:"蚩";s:1:"N";s:4:"蚈";s:1:"N";s:4:"蜎";s:1:"N";s:4:"蛢";s:1:"N";s:4:"蝹";s:1:"N";s:4:"蜨";s:1:"N";s:4:"蝫";s:1:"N";s:4:"螆";s:1:"N";s:4:"䗗";s:1:"N";s:4:"蟡";s:1:"N";s:4:"ð¯§";s:1:"N";s:4:"䗹";s:1:"N";s:4:"衠";s:1:"N";s:4:"衣";s:1:"N";s:4:"𧙧";s:1:"N";s:4:"裗";s:1:"N";s:4:"裞";s:1:"N";s:4:"䘵";s:1:"N";s:4:"裺";s:1:"N";s:4:"㒻";s:1:"N";s:4:"𧢮";s:1:"N";s:4:"𧥦";s:1:"N";s:4:"ð¯§";s:1:"N";s:4:"䛇";s:1:"N";s:4:"ð¯§";s:1:"N";s:4:"ð¯§";s:1:"N";s:4:"變";s:1:"N";s:4:"豕";s:1:"N";s:4:"𧲨";s:1:"N";s:4:"貫";s:1:"N";s:4:"賁";s:1:"N";s:4:"贛";s:1:"N";s:4:"起";s:1:"N";s:4:"𧼯";s:1:"N";s:4:"𠠄";s:1:"N";s:4:"跋";s:1:"N";s:4:"趼";s:1:"N";s:4:"跰";s:1:"N";s:4:"ð¯§";s:1:"N";s:4:"軔";s:1:"N";s:4:"輸";s:1:"N";s:4:"𨗒";s:1:"N";s:4:"𨗭";s:1:"N";s:4:"邔";s:1:"N";s:4:"郱";s:1:"N";s:4:"鄑";s:1:"N";s:4:"𨜮";s:1:"N";s:4:"鄛";s:1:"N";s:4:"鈸";s:1:"N";s:4:"鋗";s:1:"N";s:4:"鋘";s:1:"N";s:4:"鉼";s:1:"N";s:4:"鏹";s:1:"N";s:4:"鐕";s:1:"N";s:4:"𨯺";s:1:"N";s:4:"開";s:1:"N";s:4:"䦕";s:1:"N";s:4:"閷";s:1:"N";s:4:"𨵷";s:1:"N";s:4:"䧦";s:1:"N";s:4:"雃";s:1:"N";s:4:"嶲";s:1:"N";s:4:"霣";s:1:"N";s:4:"𩅅";s:1:"N";s:4:"𩈚";s:1:"N";s:4:"䩮";s:1:"N";s:4:"䩶";s:1:"N";s:4:"韠";s:1:"N";s:4:"𩐊";s:1:"N";s:4:"䪲";s:1:"N";s:4:"𩒖";s:1:"N";s:4:"頋";s:1:"N";s:4:"頋";s:1:"N";s:4:"頩";s:1:"N";s:4:"ð¯¨";s:1:"N";s:4:"飢";s:1:"N";s:4:"䬳";s:1:"N";s:4:"餩";s:1:"N";s:4:"馧";s:1:"N";s:4:"駂";s:1:"N";s:4:"駾";s:1:"N";s:4:"䯎";s:1:"N";s:4:"𩬰";s:1:"N";s:4:"鬒";s:1:"N";s:4:"鱀";s:1:"N";s:4:"鳽";s:1:"N";s:4:"ð¯¨";s:1:"N";s:4:"䳭";s:1:"N";s:4:"ð¯¨";s:1:"N";s:4:"ð¯¨";s:1:"N";s:4:"䳸";s:1:"N";s:4:"𪄅";s:1:"N";s:4:"𪈎";s:1:"N";s:4:"𪊑";s:1:"N";s:4:"麻";s:1:"N";s:4:"䵖";s:1:"N";s:4:"黹";s:1:"N";s:4:"黾";s:1:"N";s:4:"鼅";s:1:"N";s:4:"鼏";s:1:"N";s:4:"鼖";s:1:"N";s:4:"鼻";s:1:"N";s:4:"ð¯¨";s:1:"N";s:2:"Ì€";s:1:"M";s:2:"Ì";s:1:"M";s:2:"Ì‚";s:1:"M";s:2:"̃";s:1:"M";s:2:"Ì„";s:1:"M";s:2:"̆";s:1:"M";s:2:"̇";s:1:"M";s:2:"̈";s:1:"M";s:2:"̉";s:1:"M";s:2:"ÌŠ";s:1:"M";s:2:"Ì‹";s:1:"M";s:2:"ÌŒ";s:1:"M";s:2:"Ì";s:1:"M";s:2:"Ì‘";s:1:"M";s:2:"Ì“";s:1:"M";s:2:"Ì”";s:1:"M";s:2:"Ì›";s:1:"M";s:2:"Ì£";s:1:"M";s:2:"̤";s:1:"M";s:2:"Ì¥";s:1:"M";s:2:"̦";s:1:"M";s:2:"̧";s:1:"M";s:2:"̨";s:1:"M";s:2:"Ì­";s:1:"M";s:2:"Ì®";s:1:"M";s:2:"Ì°";s:1:"M";s:2:"̱";s:1:"M";s:2:"̸";s:1:"M";s:2:"Í‚";s:1:"M";s:2:"Í…";s:1:"M";s:2:"Ù“";s:1:"M";s:2:"Ù”";s:1:"M";s:2:"Ù•";s:1:"M";s:3:"़";s:1:"M";s:3:"া";s:1:"M";s:3:"ৗ";s:1:"M";s:3:"ା";s:1:"M";s:3:"à­–";s:1:"M";s:3:"à­—";s:1:"M";s:3:"ா";s:1:"M";s:3:"ௗ";s:1:"M";s:3:"à±–";s:1:"M";s:3:"ೂ";s:1:"M";s:3:"ೕ";s:1:"M";s:3:"à³–";s:1:"M";s:3:"à´¾";s:1:"M";s:3:"ൗ";s:1:"M";s:3:"à·Š";s:1:"M";s:3:"à·";s:1:"M";s:3:"à·Ÿ";s:1:"M";s:3:"ီ";s:1:"M";s:3:"á…¡";s:1:"M";s:3:"á…¢";s:1:"M";s:3:"á…£";s:1:"M";s:3:"á…¤";s:1:"M";s:3:"á…¥";s:1:"M";s:3:"á…¦";s:1:"M";s:3:"á…§";s:1:"M";s:3:"á…¨";s:1:"M";s:3:"á…©";s:1:"M";s:3:"á…ª";s:1:"M";s:3:"á…«";s:1:"M";s:3:"á…¬";s:1:"M";s:3:"á…­";s:1:"M";s:3:"á…®";s:1:"M";s:3:"á…¯";s:1:"M";s:3:"á…°";s:1:"M";s:3:"á…±";s:1:"M";s:3:"á…²";s:1:"M";s:3:"á…³";s:1:"M";s:3:"á…´";s:1:"M";s:3:"á…µ";s:1:"M";s:3:"ᆨ";s:1:"M";s:3:"ᆩ";s:1:"M";s:3:"ᆪ";s:1:"M";s:3:"ᆫ";s:1:"M";s:3:"ᆬ";s:1:"M";s:3:"ᆭ";s:1:"M";s:3:"ᆮ";s:1:"M";s:3:"ᆯ";s:1:"M";s:3:"ᆰ";s:1:"M";s:3:"ᆱ";s:1:"M";s:3:"ᆲ";s:1:"M";s:3:"ᆳ";s:1:"M";s:3:"ᆴ";s:1:"M";s:3:"ᆵ";s:1:"M";s:3:"ᆶ";s:1:"M";s:3:"ᆷ";s:1:"M";s:3:"ᆸ";s:1:"M";s:3:"ᆹ";s:1:"M";s:3:"ᆺ";s:1:"M";s:3:"ᆻ";s:1:"M";s:3:"ᆼ";s:1:"M";s:3:"ᆽ";s:1:"M";s:3:"ᆾ";s:1:"M";s:3:"ᆿ";s:1:"M";s:3:"ᇀ";s:1:"M";s:3:"á‡";s:1:"M";s:3:"ᇂ";s:1:"M";s:3:"ᬵ";s:1:"M";s:3:"ã‚™";s:1:"M";s:3:"ã‚š";s:1:"M";}' );
+
+UtfNormal::$utfCombiningClass = unserialize( 'a:606:{s:2:"Ì€";i:230;s:2:"Ì";i:230;s:2:"Ì‚";i:230;s:2:"̃";i:230;s:2:"Ì„";i:230;s:2:"Ì…";i:230;s:2:"̆";i:230;s:2:"̇";i:230;s:2:"̈";i:230;s:2:"̉";i:230;s:2:"ÌŠ";i:230;s:2:"Ì‹";i:230;s:2:"ÌŒ";i:230;s:2:"Ì";i:230;s:2:"ÌŽ";i:230;s:2:"Ì";i:230;s:2:"Ì";i:230;s:2:"Ì‘";i:230;s:2:"Ì’";i:230;s:2:"Ì“";i:230;s:2:"Ì”";i:230;s:2:"Ì•";i:232;s:2:"Ì–";i:220;s:2:"Ì—";i:220;s:2:"̘";i:220;s:2:"Ì™";i:220;s:2:"Ìš";i:232;s:2:"Ì›";i:216;s:2:"Ìœ";i:220;s:2:"Ì";i:220;s:2:"Ìž";i:220;s:2:"ÌŸ";i:220;s:2:"Ì ";i:220;s:2:"Ì¡";i:202;s:2:"Ì¢";i:202;s:2:"Ì£";i:220;s:2:"̤";i:220;s:2:"Ì¥";i:220;s:2:"̦";i:220;s:2:"̧";i:202;s:2:"̨";i:202;s:2:"Ì©";i:220;s:2:"̪";i:220;s:2:"Ì«";i:220;s:2:"̬";i:220;s:2:"Ì­";i:220;s:2:"Ì®";i:220;s:2:"̯";i:220;s:2:"Ì°";i:220;s:2:"̱";i:220;s:2:"̲";i:220;s:2:"̳";i:220;s:2:"Ì´";i:1;s:2:"̵";i:1;s:2:"̶";i:1;s:2:"Ì·";i:1;s:2:"̸";i:1;s:2:"̹";i:220;s:2:"̺";i:220;s:2:"Ì»";i:220;s:2:"̼";i:220;s:2:"̽";i:230;s:2:"̾";i:230;s:2:"Ì¿";i:230;s:2:"Í€";i:230;s:2:"Í";i:230;s:2:"Í‚";i:230;s:2:"̓";i:230;s:2:"Í„";i:230;s:2:"Í…";i:240;s:2:"͆";i:230;s:2:"͇";i:220;s:2:"͈";i:220;s:2:"͉";i:220;s:2:"ÍŠ";i:230;s:2:"Í‹";i:230;s:2:"ÍŒ";i:230;s:2:"Í";i:220;s:2:"ÍŽ";i:220;s:2:"Í";i:230;s:2:"Í‘";i:230;s:2:"Í’";i:230;s:2:"Í“";i:220;s:2:"Í”";i:220;s:2:"Í•";i:220;s:2:"Í–";i:220;s:2:"Í—";i:230;s:2:"͘";i:232;s:2:"Í™";i:220;s:2:"Íš";i:220;s:2:"Í›";i:230;s:2:"Íœ";i:233;s:2:"Í";i:234;s:2:"Íž";i:234;s:2:"ÍŸ";i:233;s:2:"Í ";i:234;s:2:"Í¡";i:234;s:2:"Í¢";i:233;s:2:"Í£";i:230;s:2:"ͤ";i:230;s:2:"Í¥";i:230;s:2:"ͦ";i:230;s:2:"ͧ";i:230;s:2:"ͨ";i:230;s:2:"Í©";i:230;s:2:"ͪ";i:230;s:2:"Í«";i:230;s:2:"ͬ";i:230;s:2:"Í­";i:230;s:2:"Í®";i:230;s:2:"ͯ";i:230;s:2:"Òƒ";i:230;s:2:"Ò„";i:230;s:2:"Ò…";i:230;s:2:"Ò†";i:230;s:2:"Ò‡";i:230;s:2:"Ö‘";i:220;s:2:"Ö’";i:230;s:2:"Ö“";i:230;s:2:"Ö”";i:230;s:2:"Ö•";i:230;s:2:"Ö–";i:220;s:2:"Ö—";i:230;s:2:"Ö˜";i:230;s:2:"Ö™";i:230;s:2:"Öš";i:222;s:2:"Ö›";i:220;s:2:"Öœ";i:230;s:2:"Ö";i:230;s:2:"Öž";i:230;s:2:"ÖŸ";i:230;s:2:"Ö ";i:230;s:2:"Ö¡";i:230;s:2:"Ö¢";i:220;s:2:"Ö£";i:220;s:2:"Ö¤";i:220;s:2:"Ö¥";i:220;s:2:"Ö¦";i:220;s:2:"Ö§";i:220;s:2:"Ö¨";i:230;s:2:"Ö©";i:230;s:2:"Öª";i:220;s:2:"Ö«";i:230;s:2:"Ö¬";i:230;s:2:"Ö­";i:222;s:2:"Ö®";i:228;s:2:"Ö¯";i:230;s:2:"Ö°";i:10;s:2:"Ö±";i:11;s:2:"Ö²";i:12;s:2:"Ö³";i:13;s:2:"Ö´";i:14;s:2:"Öµ";i:15;s:2:"Ö¶";i:16;s:2:"Ö·";i:17;s:2:"Ö¸";i:18;s:2:"Ö¹";i:19;s:2:"Öº";i:19;s:2:"Ö»";i:20;s:2:"Ö¼";i:21;s:2:"Ö½";i:22;s:2:"Ö¿";i:23;s:2:"×";i:24;s:2:"ׂ";i:25;s:2:"ׄ";i:230;s:2:"×…";i:220;s:2:"ׇ";i:18;s:2:"Ø";i:230;s:2:"Ø‘";i:230;s:2:"Ø’";i:230;s:2:"Ø“";i:230;s:2:"Ø”";i:230;s:2:"Ø•";i:230;s:2:"Ø–";i:230;s:2:"Ø—";i:230;s:2:"ؘ";i:30;s:2:"Ø™";i:31;s:2:"Øš";i:32;s:2:"Ù‹";i:27;s:2:"ÙŒ";i:28;s:2:"Ù";i:29;s:2:"ÙŽ";i:30;s:2:"Ù";i:31;s:2:"Ù";i:32;s:2:"Ù‘";i:33;s:2:"Ù’";i:34;s:2:"Ù“";i:230;s:2:"Ù”";i:230;s:2:"Ù•";i:220;s:2:"Ù–";i:220;s:2:"Ù—";i:230;s:2:"Ù˜";i:230;s:2:"Ù™";i:230;s:2:"Ùš";i:230;s:2:"Ù›";i:230;s:2:"Ùœ";i:220;s:2:"Ù";i:230;s:2:"Ùž";i:230;s:2:"ÙŸ";i:220;s:2:"Ù°";i:35;s:2:"Û–";i:230;s:2:"Û—";i:230;s:2:"Û˜";i:230;s:2:"Û™";i:230;s:2:"Ûš";i:230;s:2:"Û›";i:230;s:2:"Ûœ";i:230;s:2:"ÛŸ";i:230;s:2:"Û ";i:230;s:2:"Û¡";i:230;s:2:"Û¢";i:230;s:2:"Û£";i:220;s:2:"Û¤";i:230;s:2:"Û§";i:230;s:2:"Û¨";i:230;s:2:"Ûª";i:220;s:2:"Û«";i:230;s:2:"Û¬";i:230;s:2:"Û­";i:220;s:2:"Ü‘";i:36;s:2:"Ü°";i:230;s:2:"ܱ";i:220;s:2:"ܲ";i:230;s:2:"ܳ";i:230;s:2:"Ü´";i:220;s:2:"ܵ";i:230;s:2:"ܶ";i:230;s:2:"Ü·";i:220;s:2:"ܸ";i:220;s:2:"ܹ";i:220;s:2:"ܺ";i:230;s:2:"Ü»";i:220;s:2:"ܼ";i:220;s:2:"ܽ";i:230;s:2:"ܾ";i:220;s:2:"Ü¿";i:230;s:2:"Ý€";i:230;s:2:"Ý";i:230;s:2:"Ý‚";i:220;s:2:"݃";i:230;s:2:"Ý„";i:220;s:2:"Ý…";i:230;s:2:"݆";i:220;s:2:"݇";i:230;s:2:"݈";i:220;s:2:"݉";i:230;s:2:"ÝŠ";i:230;s:2:"ß«";i:230;s:2:"߬";i:230;s:2:"ß­";i:230;s:2:"ß®";i:230;s:2:"߯";i:230;s:2:"ß°";i:230;s:2:"ß±";i:230;s:2:"ß²";i:220;s:2:"ß³";i:230;s:3:"à –";i:230;s:3:"à —";i:230;s:3:"à ˜";i:230;s:3:"à ™";i:230;s:3:"à ›";i:230;s:3:"à œ";i:230;s:3:"à ";i:230;s:3:"à ž";i:230;s:3:"à Ÿ";i:230;s:3:"à  ";i:230;s:3:"à ¡";i:230;s:3:"à ¢";i:230;s:3:"à £";i:230;s:3:"à ¥";i:230;s:3:"à ¦";i:230;s:3:"à §";i:230;s:3:"à ©";i:230;s:3:"à ª";i:230;s:3:"à «";i:230;s:3:"à ¬";i:230;s:3:"à ­";i:230;s:3:"à¡™";i:220;s:3:"à¡š";i:220;s:3:"à¡›";i:220;s:3:"़";i:7;s:3:"à¥";i:9;s:3:"॑";i:230;s:3:"॒";i:220;s:3:"॓";i:230;s:3:"॔";i:230;s:3:"়";i:7;s:3:"à§";i:9;s:3:"਼";i:7;s:3:"à©";i:9;s:3:"઼";i:7;s:3:"à«";i:9;s:3:"଼";i:7;s:3:"à­";i:9;s:3:"à¯";i:9;s:3:"à±";i:9;s:3:"ౕ";i:84;s:3:"à±–";i:91;s:3:"಼";i:7;s:3:"à³";i:9;s:3:"àµ";i:9;s:3:"à·Š";i:9;s:3:"ุ";i:103;s:3:"ู";i:103;s:3:"ฺ";i:9;s:3:"่";i:107;s:3:"้";i:107;s:3:"๊";i:107;s:3:"๋";i:107;s:3:"ຸ";i:118;s:3:"ູ";i:118;s:3:"່";i:122;s:3:"້";i:122;s:3:"໊";i:122;s:3:"໋";i:122;s:3:"༘";i:220;s:3:"༙";i:220;s:3:"༵";i:220;s:3:"༷";i:220;s:3:"༹";i:216;s:3:"ཱ";i:129;s:3:"ི";i:130;s:3:"ུ";i:132;s:3:"ེ";i:130;s:3:"ཻ";i:130;s:3:"ོ";i:130;s:3:"ཽ";i:130;s:3:"ྀ";i:130;s:3:"ྂ";i:230;s:3:"ྃ";i:230;s:3:"྄";i:9;s:3:"྆";i:230;s:3:"྇";i:230;s:3:"࿆";i:220;s:3:"့";i:7;s:3:"္";i:9;s:3:"်";i:9;s:3:"á‚";i:220;s:3:"á";i:230;s:3:"áž";i:230;s:3:"áŸ";i:230;s:3:"᜔";i:9;s:3:"᜴";i:9;s:3:"្";i:9;s:3:"áŸ";i:230;s:3:"ᢩ";i:228;s:3:"᤹";i:222;s:3:"᤺";i:230;s:3:"᤻";i:220;s:3:"ᨗ";i:230;s:3:"ᨘ";i:220;s:3:"á© ";i:9;s:3:"᩵";i:230;s:3:"᩶";i:230;s:3:"á©·";i:230;s:3:"᩸";i:230;s:3:"᩹";i:230;s:3:"᩺";i:230;s:3:"á©»";i:230;s:3:"᩼";i:230;s:3:"á©¿";i:220;s:3:"᬴";i:7;s:3:"á­„";i:9;s:3:"á­«";i:230;s:3:"á­¬";i:220;s:3:"á­­";i:230;s:3:"á­®";i:230;s:3:"á­¯";i:230;s:3:"á­°";i:230;s:3:"á­±";i:230;s:3:"á­²";i:230;s:3:"á­³";i:230;s:3:"᮪";i:9;s:3:"᯦";i:7;s:3:"᯲";i:9;s:3:"᯳";i:9;s:3:"á°·";i:7;s:3:"á³";i:230;s:3:"᳑";i:230;s:3:"á³’";i:230;s:3:"á³”";i:1;s:3:"᳕";i:220;s:3:"á³–";i:220;s:3:"á³—";i:220;s:3:"᳘";i:220;s:3:"á³™";i:220;s:3:"᳚";i:230;s:3:"á³›";i:230;s:3:"᳜";i:220;s:3:"á³";i:220;s:3:"᳞";i:220;s:3:"᳟";i:220;s:3:"á³ ";i:230;s:3:"á³¢";i:1;s:3:"á³£";i:1;s:3:"᳤";i:1;s:3:"á³¥";i:1;s:3:"᳦";i:1;s:3:"᳧";i:1;s:3:"᳨";i:1;s:3:"á³­";i:220;s:3:"á·€";i:230;s:3:"á·";i:230;s:3:"á·‚";i:220;s:3:"á·ƒ";i:230;s:3:"á·„";i:230;s:3:"á·…";i:230;s:3:"á·†";i:230;s:3:"á·‡";i:230;s:3:"á·ˆ";i:230;s:3:"á·‰";i:230;s:3:"á·Š";i:220;s:3:"á·‹";i:230;s:3:"á·Œ";i:230;s:3:"á·";i:234;s:3:"á·Ž";i:214;s:3:"á·";i:220;s:3:"á·";i:202;s:3:"á·‘";i:230;s:3:"á·’";i:230;s:3:"á·“";i:230;s:3:"á·”";i:230;s:3:"á·•";i:230;s:3:"á·–";i:230;s:3:"á·—";i:230;s:3:"á·˜";i:230;s:3:"á·™";i:230;s:3:"á·š";i:230;s:3:"á·›";i:230;s:3:"á·œ";i:230;s:3:"á·";i:230;s:3:"á·ž";i:230;s:3:"á·Ÿ";i:230;s:3:"á· ";i:230;s:3:"á·¡";i:230;s:3:"á·¢";i:230;s:3:"á·£";i:230;s:3:"á·¤";i:230;s:3:"á·¥";i:230;s:3:"á·¦";i:230;s:3:"á·¼";i:233;s:3:"á·½";i:220;s:3:"á·¾";i:230;s:3:"á·¿";i:220;s:3:"âƒ";i:230;s:3:"⃑";i:230;s:3:"⃒";i:1;s:3:"⃓";i:1;s:3:"⃔";i:230;s:3:"⃕";i:230;s:3:"⃖";i:230;s:3:"⃗";i:230;s:3:"⃘";i:1;s:3:"⃙";i:1;s:3:"⃚";i:1;s:3:"⃛";i:230;s:3:"⃜";i:230;s:3:"⃡";i:230;s:3:"⃥";i:1;s:3:"⃦";i:1;s:3:"⃧";i:230;s:3:"⃨";i:220;s:3:"⃩";i:230;s:3:"⃪";i:1;s:3:"⃫";i:1;s:3:"⃬";i:220;s:3:"⃭";i:220;s:3:"⃮";i:220;s:3:"⃯";i:220;s:3:"⃰";i:230;s:3:"⳯";i:230;s:3:"â³°";i:230;s:3:"â³±";i:230;s:3:"⵿";i:9;s:3:"â· ";i:230;s:3:"â·¡";i:230;s:3:"â·¢";i:230;s:3:"â·£";i:230;s:3:"â·¤";i:230;s:3:"â·¥";i:230;s:3:"â·¦";i:230;s:3:"â·§";i:230;s:3:"â·¨";i:230;s:3:"â·©";i:230;s:3:"â·ª";i:230;s:3:"â·«";i:230;s:3:"â·¬";i:230;s:3:"â·­";i:230;s:3:"â·®";i:230;s:3:"â·¯";i:230;s:3:"â·°";i:230;s:3:"â·±";i:230;s:3:"â·²";i:230;s:3:"â·³";i:230;s:3:"â·´";i:230;s:3:"â·µ";i:230;s:3:"â·¶";i:230;s:3:"â··";i:230;s:3:"â·¸";i:230;s:3:"â·¹";i:230;s:3:"â·º";i:230;s:3:"â·»";i:230;s:3:"â·¼";i:230;s:3:"â·½";i:230;s:3:"â·¾";i:230;s:3:"â·¿";i:230;s:3:"〪";i:218;s:3:"〫";i:228;s:3:"〬";i:232;s:3:"〭";i:222;s:3:"〮";i:224;s:3:"〯";i:224;s:3:"ã‚™";i:8;s:3:"ã‚š";i:8;s:3:"꙯";i:230;s:3:"꙼";i:230;s:3:"꙽";i:230;s:3:"ê›°";i:230;s:3:"ê›±";i:230;s:3:"ê †";i:9;s:3:"꣄";i:9;s:3:"꣠";i:230;s:3:"꣡";i:230;s:3:"꣢";i:230;s:3:"꣣";i:230;s:3:"꣤";i:230;s:3:"꣥";i:230;s:3:"꣦";i:230;s:3:"꣧";i:230;s:3:"꣨";i:230;s:3:"꣩";i:230;s:3:"꣪";i:230;s:3:"꣫";i:230;s:3:"꣬";i:230;s:3:"꣭";i:230;s:3:"꣮";i:230;s:3:"꣯";i:230;s:3:"꣰";i:230;s:3:"꣱";i:230;s:3:"꤫";i:220;s:3:"꤬";i:220;s:3:"꤭";i:220;s:3:"꥓";i:9;s:3:"꦳";i:7;s:3:"꧀";i:9;s:3:"ꪰ";i:230;s:3:"ꪲ";i:230;s:3:"ꪳ";i:230;s:3:"ꪴ";i:220;s:3:"ꪷ";i:230;s:3:"ꪸ";i:230;s:3:"ꪾ";i:230;s:3:"꪿";i:230;s:3:"ê«";i:230;s:3:"꯭";i:9;s:3:"ﬞ";i:26;s:3:"︠";i:230;s:3:"︡";i:230;s:3:"︢";i:230;s:3:"︣";i:230;s:3:"︤";i:230;s:3:"︥";i:230;s:3:"︦";i:230;s:4:"ð‡½";i:220;s:4:"ð¨";i:220;s:4:"ð¨";i:230;s:4:"ð¨¸";i:230;s:4:"ð¨¹";i:1;s:4:"ð¨º";i:220;s:4:"ð¨¿";i:9;s:4:"ð‘†";i:9;s:4:"ð‘‚¹";i:9;s:4:"𑂺";i:7;s:4:"ð…¥";i:216;s:4:"ð…¦";i:216;s:4:"ð…§";i:1;s:4:"ð…¨";i:1;s:4:"ð…©";i:1;s:4:"ð…­";i:226;s:4:"ð…®";i:216;s:4:"ð…¯";i:216;s:4:"ð…°";i:216;s:4:"ð…±";i:216;s:4:"ð…²";i:216;s:4:"ð…»";i:220;s:4:"ð…¼";i:220;s:4:"ð…½";i:220;s:4:"ð…¾";i:220;s:4:"ð…¿";i:220;s:4:"ð†€";i:220;s:4:"ð†";i:220;s:4:"ð†‚";i:220;s:4:"ð†…";i:230;s:4:"ð††";i:230;s:4:"ð†‡";i:230;s:4:"ð†ˆ";i:230;s:4:"ð†‰";i:230;s:4:"ð†Š";i:220;s:4:"ð†‹";i:220;s:4:"ð†ª";i:230;s:4:"ð†«";i:230;s:4:"ð†¬";i:230;s:4:"ð†­";i:230;s:4:"ð‰‚";i:230;s:4:"ð‰ƒ";i:230;s:4:"ð‰„";i:230;}' );
+UtfNormal::$utfCanonicalComp = unserialize( 'a:1868:{s:3:"AÌ€";s:2:"À";s:3:"AÌ";s:2:"Ã";s:3:"AÌ‚";s:2:"Â";s:3:"Ã";s:2:"Ã";s:3:"Ä";s:2:"Ä";s:3:"AÌŠ";s:2:"Ã…";s:3:"Ç";s:2:"Ç";s:3:"EÌ€";s:2:"È";s:3:"EÌ";s:2:"É";s:3:"EÌ‚";s:2:"Ê";s:3:"Ë";s:2:"Ë";s:3:"IÌ€";s:2:"ÃŒ";s:3:"IÌ";s:2:"Ã";s:3:"IÌ‚";s:2:"ÃŽ";s:3:"Ï";s:2:"Ã";s:3:"Ñ";s:2:"Ñ";s:3:"OÌ€";s:2:"Ã’";s:3:"OÌ";s:2:"Ó";s:3:"OÌ‚";s:2:"Ô";s:3:"Õ";s:2:"Õ";s:3:"Ö";s:2:"Ö";s:3:"UÌ€";s:2:"Ù";s:3:"UÌ";s:2:"Ú";s:3:"UÌ‚";s:2:"Û";s:3:"Ü";s:2:"Ãœ";s:3:"YÌ";s:2:"Ã";s:3:"aÌ€";s:2:"à";s:3:"aÌ";s:2:"á";s:3:"aÌ‚";s:2:"â";s:3:"ã";s:2:"ã";s:3:"ä";s:2:"ä";s:3:"aÌŠ";s:2:"Ã¥";s:3:"ç";s:2:"ç";s:3:"eÌ€";s:2:"è";s:3:"eÌ";s:2:"é";s:3:"eÌ‚";s:2:"ê";s:3:"ë";s:2:"ë";s:3:"iÌ€";s:2:"ì";s:3:"iÌ";s:2:"í";s:3:"iÌ‚";s:2:"î";s:3:"ï";s:2:"ï";s:3:"ñ";s:2:"ñ";s:3:"oÌ€";s:2:"ò";s:3:"oÌ";s:2:"ó";s:3:"oÌ‚";s:2:"ô";s:3:"õ";s:2:"õ";s:3:"ö";s:2:"ö";s:3:"uÌ€";s:2:"ù";s:3:"uÌ";s:2:"ú";s:3:"uÌ‚";s:2:"û";s:3:"ü";s:2:"ü";s:3:"yÌ";s:2:"ý";s:3:"ÿ";s:2:"ÿ";s:3:"AÌ„";s:2:"Ä€";s:3:"aÌ„";s:2:"Ä";s:3:"Ă";s:2:"Ä‚";s:3:"ă";s:2:"ă";s:3:"Ą";s:2:"Ä„";s:3:"ą";s:2:"Ä…";s:3:"CÌ";s:2:"Ć";s:3:"cÌ";s:2:"ć";s:3:"CÌ‚";s:2:"Ĉ";s:3:"cÌ‚";s:2:"ĉ";s:3:"Ċ";s:2:"ÄŠ";s:3:"ċ";s:2:"Ä‹";s:3:"CÌŒ";s:2:"ÄŒ";s:3:"cÌŒ";s:2:"Ä";s:3:"DÌŒ";s:2:"ÄŽ";s:3:"dÌŒ";s:2:"Ä";s:3:"EÌ„";s:2:"Ä’";s:3:"eÌ„";s:2:"Ä“";s:3:"Ĕ";s:2:"Ä”";s:3:"ĕ";s:2:"Ä•";s:3:"Ė";s:2:"Ä–";s:3:"ė";s:2:"Ä—";s:3:"Ę";s:2:"Ę";s:3:"ę";s:2:"Ä™";s:3:"EÌŒ";s:2:"Äš";s:3:"eÌŒ";s:2:"Ä›";s:3:"GÌ‚";s:2:"Äœ";s:3:"gÌ‚";s:2:"Ä";s:3:"Ğ";s:2:"Äž";s:3:"ğ";s:2:"ÄŸ";s:3:"Ġ";s:2:"Ä ";s:3:"ġ";s:2:"Ä¡";s:3:"Ģ";s:2:"Ä¢";s:3:"ģ";s:2:"Ä£";s:3:"HÌ‚";s:2:"Ĥ";s:3:"hÌ‚";s:2:"Ä¥";s:3:"Ĩ";s:2:"Ĩ";s:3:"ĩ";s:2:"Ä©";s:3:"IÌ„";s:2:"Ī";s:3:"iÌ„";s:2:"Ä«";s:3:"Ĭ";s:2:"Ĭ";s:3:"ĭ";s:2:"Ä­";s:3:"Į";s:2:"Ä®";s:3:"į";s:2:"į";s:3:"İ";s:2:"Ä°";s:3:"JÌ‚";s:2:"Ä´";s:3:"jÌ‚";s:2:"ĵ";s:3:"Ķ";s:2:"Ķ";s:3:"ķ";s:2:"Ä·";s:3:"LÌ";s:2:"Ĺ";s:3:"lÌ";s:2:"ĺ";s:3:"Ļ";s:2:"Ä»";s:3:"ļ";s:2:"ļ";s:3:"LÌŒ";s:2:"Ľ";s:3:"lÌŒ";s:2:"ľ";s:3:"NÌ";s:2:"Ń";s:3:"nÌ";s:2:"Å„";s:3:"Ņ";s:2:"Å…";s:3:"ņ";s:2:"ņ";s:3:"NÌŒ";s:2:"Ň";s:3:"nÌŒ";s:2:"ň";s:3:"OÌ„";s:2:"ÅŒ";s:3:"oÌ„";s:2:"Å";s:3:"Ŏ";s:2:"ÅŽ";s:3:"ŏ";s:2:"Å";s:3:"OÌ‹";s:2:"Å";s:3:"oÌ‹";s:2:"Å‘";s:3:"RÌ";s:2:"Å”";s:3:"rÌ";s:2:"Å•";s:3:"Ŗ";s:2:"Å–";s:3:"ŗ";s:2:"Å—";s:3:"RÌŒ";s:2:"Ř";s:3:"rÌŒ";s:2:"Å™";s:3:"SÌ";s:2:"Åš";s:3:"sÌ";s:2:"Å›";s:3:"SÌ‚";s:2:"Åœ";s:3:"sÌ‚";s:2:"Å";s:3:"Ş";s:2:"Åž";s:3:"ş";s:2:"ÅŸ";s:3:"SÌŒ";s:2:"Å ";s:3:"sÌŒ";s:2:"Å¡";s:3:"Ţ";s:2:"Å¢";s:3:"ţ";s:2:"Å£";s:3:"TÌŒ";s:2:"Ť";s:3:"tÌŒ";s:2:"Å¥";s:3:"Ũ";s:2:"Ũ";s:3:"ũ";s:2:"Å©";s:3:"UÌ„";s:2:"Ū";s:3:"uÌ„";s:2:"Å«";s:3:"Ŭ";s:2:"Ŭ";s:3:"ŭ";s:2:"Å­";s:3:"UÌŠ";s:2:"Å®";s:3:"uÌŠ";s:2:"ů";s:3:"UÌ‹";s:2:"Å°";s:3:"uÌ‹";s:2:"ű";s:3:"Ų";s:2:"Ų";s:3:"ų";s:2:"ų";s:3:"WÌ‚";s:2:"Å´";s:3:"wÌ‚";s:2:"ŵ";s:3:"YÌ‚";s:2:"Ŷ";s:3:"yÌ‚";s:2:"Å·";s:3:"Ÿ";s:2:"Ÿ";s:3:"ZÌ";s:2:"Ź";s:3:"zÌ";s:2:"ź";s:3:"Ż";s:2:"Å»";s:3:"ż";s:2:"ż";s:3:"ZÌŒ";s:2:"Ž";s:3:"zÌŒ";s:2:"ž";s:3:"OÌ›";s:2:"Æ ";s:3:"oÌ›";s:2:"Æ¡";s:3:"UÌ›";s:2:"Ư";s:3:"uÌ›";s:2:"Æ°";s:3:"AÌŒ";s:2:"Ç";s:3:"aÌŒ";s:2:"ÇŽ";s:3:"IÌŒ";s:2:"Ç";s:3:"iÌŒ";s:2:"Ç";s:3:"OÌŒ";s:2:"Ç‘";s:3:"oÌŒ";s:2:"Ç’";s:3:"UÌŒ";s:2:"Ç“";s:3:"uÌŒ";s:2:"Ç”";s:4:"Ǖ";s:2:"Ç•";s:4:"ǖ";s:2:"Ç–";s:4:"ÃœÌ";s:2:"Ç—";s:4:"üÌ";s:2:"ǘ";s:4:"Ǚ";s:2:"Ç™";s:4:"ǚ";s:2:"Çš";s:4:"Ǜ";s:2:"Ç›";s:4:"ǜ";s:2:"Çœ";s:4:"Ǟ";s:2:"Çž";s:4:"ǟ";s:2:"ÇŸ";s:4:"Ǡ";s:2:"Ç ";s:4:"ǡ";s:2:"Ç¡";s:4:"Ǣ";s:2:"Ç¢";s:4:"ǣ";s:2:"Ç£";s:3:"GÌŒ";s:2:"Ǧ";s:3:"gÌŒ";s:2:"ǧ";s:3:"KÌŒ";s:2:"Ǩ";s:3:"kÌŒ";s:2:"Ç©";s:3:"Ǫ";s:2:"Ǫ";s:3:"ǫ";s:2:"Ç«";s:4:"Ǭ";s:2:"Ǭ";s:4:"Ç«Ì„";s:2:"Ç­";s:4:"Æ·ÌŒ";s:2:"Ç®";s:4:"Ê’ÌŒ";s:2:"ǯ";s:3:"jÌŒ";s:2:"Ç°";s:3:"GÌ";s:2:"Ç´";s:3:"gÌ";s:2:"ǵ";s:3:"NÌ€";s:2:"Ǹ";s:3:"nÌ€";s:2:"ǹ";s:4:"Ã…Ì";s:2:"Ǻ";s:4:"Ã¥Ì";s:2:"Ç»";s:4:"ÆÌ";s:2:"Ǽ";s:4:"æÌ";s:2:"ǽ";s:4:"ØÌ";s:2:"Ǿ";s:4:"øÌ";s:2:"Ç¿";s:3:"AÌ";s:2:"È€";s:3:"aÌ";s:2:"È";s:3:"AÌ‘";s:2:"È‚";s:3:"aÌ‘";s:2:"ȃ";s:3:"EÌ";s:2:"È„";s:3:"eÌ";s:2:"È…";s:3:"EÌ‘";s:2:"Ȇ";s:3:"eÌ‘";s:2:"ȇ";s:3:"IÌ";s:2:"Ȉ";s:3:"iÌ";s:2:"ȉ";s:3:"IÌ‘";s:2:"ÈŠ";s:3:"iÌ‘";s:2:"È‹";s:3:"OÌ";s:2:"ÈŒ";s:3:"oÌ";s:2:"È";s:3:"OÌ‘";s:2:"ÈŽ";s:3:"oÌ‘";s:2:"È";s:3:"RÌ";s:2:"È";s:3:"rÌ";s:2:"È‘";s:3:"RÌ‘";s:2:"È’";s:3:"rÌ‘";s:2:"È“";s:3:"UÌ";s:2:"È”";s:3:"uÌ";s:2:"È•";s:3:"UÌ‘";s:2:"È–";s:3:"uÌ‘";s:2:"È—";s:3:"Ș";s:2:"Ș";s:3:"ș";s:2:"È™";s:3:"Ț";s:2:"Èš";s:3:"ț";s:2:"È›";s:3:"HÌŒ";s:2:"Èž";s:3:"hÌŒ";s:2:"ÈŸ";s:3:"Ȧ";s:2:"Ȧ";s:3:"ȧ";s:2:"ȧ";s:3:"Ȩ";s:2:"Ȩ";s:3:"ȩ";s:2:"È©";s:4:"Ȫ";s:2:"Ȫ";s:4:"ȫ";s:2:"È«";s:4:"Ȭ";s:2:"Ȭ";s:4:"ȭ";s:2:"È­";s:3:"Ȯ";s:2:"È®";s:3:"ȯ";s:2:"ȯ";s:4:"Ȱ";s:2:"È°";s:4:"ȱ";s:2:"ȱ";s:3:"YÌ„";s:2:"Ȳ";s:3:"yÌ„";s:2:"ȳ";s:2:"Ì€";s:2:"Í€";s:2:"Ì";s:2:"Í";s:2:"Ì“";s:2:"̓";s:4:"̈Ì";s:2:"Í„";s:2:"ʹ";s:2:"Í´";s:1:";";s:2:";";s:4:"¨Ì";s:2:"Î…";s:4:"ΑÌ";s:2:"Ά";s:2:"·";s:2:"·";s:4:"ΕÌ";s:2:"Έ";s:4:"ΗÌ";s:2:"Ή";s:4:"ΙÌ";s:2:"Ί";s:4:"ΟÌ";s:2:"ÎŒ";s:4:"Î¥Ì";s:2:"ÎŽ";s:4:"ΩÌ";s:2:"Î";s:4:"ÏŠÌ";s:2:"Î";s:4:"Ϊ";s:2:"Ϊ";s:4:"Ϋ";s:2:"Ϋ";s:4:"αÌ";s:2:"ά";s:4:"εÌ";s:2:"έ";s:4:"ηÌ";s:2:"ή";s:4:"ιÌ";s:2:"ί";s:4:"Ï‹Ì";s:2:"ΰ";s:4:"ϊ";s:2:"ÏŠ";s:4:"ϋ";s:2:"Ï‹";s:4:"οÌ";s:2:"ÏŒ";s:4:"Ï…Ì";s:2:"Ï";s:4:"ωÌ";s:2:"ÏŽ";s:4:"Ï’Ì";s:2:"Ï“";s:4:"ϔ";s:2:"Ï”";s:4:"Ѐ";s:2:"Ѐ";s:4:"Ё";s:2:"Ð";s:4:"ГÌ";s:2:"Ѓ";s:4:"Ї";s:2:"Ї";s:4:"КÌ";s:2:"ÐŒ";s:4:"Ѝ";s:2:"Ð";s:4:"Ў";s:2:"ÐŽ";s:4:"Й";s:2:"Й";s:4:"й";s:2:"й";s:4:"ѐ";s:2:"Ñ";s:4:"ё";s:2:"Ñ‘";s:4:"гÌ";s:2:"Ñ“";s:4:"ї";s:2:"Ñ—";s:4:"кÌ";s:2:"Ñœ";s:4:"ѝ";s:2:"Ñ";s:4:"ў";s:2:"Ñž";s:4:"Ñ´Ì";s:2:"Ѷ";s:4:"ѵÌ";s:2:"Ñ·";s:4:"Ӂ";s:2:"Ó";s:4:"ӂ";s:2:"Ó‚";s:4:"Ð̆";s:2:"Ó";s:4:"ӑ";s:2:"Ó‘";s:4:"Ð̈";s:2:"Ó’";s:4:"ӓ";s:2:"Ó“";s:4:"Ӗ";s:2:"Ó–";s:4:"ӗ";s:2:"Ó—";s:4:"Ӛ";s:2:"Óš";s:4:"ӛ";s:2:"Ó›";s:4:"Ӝ";s:2:"Óœ";s:4:"ӝ";s:2:"Ó";s:4:"Ӟ";s:2:"Óž";s:4:"ӟ";s:2:"ÓŸ";s:4:"Ӣ";s:2:"Ó¢";s:4:"ӣ";s:2:"Ó£";s:4:"Ӥ";s:2:"Ó¤";s:4:"ӥ";s:2:"Ó¥";s:4:"Ӧ";s:2:"Ó¦";s:4:"ӧ";s:2:"Ó§";s:4:"Ӫ";s:2:"Óª";s:4:"ӫ";s:2:"Ó«";s:4:"Ӭ";s:2:"Ó¬";s:4:"Ñ̈";s:2:"Ó­";s:4:"Ӯ";s:2:"Ó®";s:4:"ӯ";s:2:"Ó¯";s:4:"Ӱ";s:2:"Ó°";s:4:"ӱ";s:2:"Ó±";s:4:"Ӳ";s:2:"Ó²";s:4:"ӳ";s:2:"Ó³";s:4:"Ӵ";s:2:"Ó´";s:4:"ӵ";s:2:"Óµ";s:4:"Ӹ";s:2:"Ó¸";s:4:"ӹ";s:2:"Ó¹";s:4:"آ";s:2:"Ø¢";s:4:"أ";s:2:"Ø£";s:4:"ÙˆÙ”";s:2:"ؤ";s:4:"إ";s:2:"Ø¥";s:4:"ÙŠÙ”";s:2:"ئ";s:4:"Û•Ù”";s:2:"Û€";s:4:"ÛÙ”";s:2:"Û‚";s:4:"Û’Ù”";s:2:"Û“";s:6:"ऩ";s:3:"ऩ";s:6:"ऱ";s:3:"ऱ";s:6:"ऴ";s:3:"ऴ";s:6:"ো";s:3:"ো";s:6:"ৌ";s:3:"ৌ";s:6:"ୈ";s:3:"à­ˆ";s:6:"ୋ";s:3:"à­‹";s:6:"ୌ";s:3:"à­Œ";s:6:"ஔ";s:3:"à®”";s:6:"ொ";s:3:"ொ";s:6:"ோ";s:3:"ோ";s:6:"ௌ";s:3:"ௌ";s:6:"ై";s:3:"ై";s:6:"ೀ";s:3:"à³€";s:6:"ೇ";s:3:"ೇ";s:6:"ೈ";s:3:"ೈ";s:6:"ೊ";s:3:"ೊ";s:6:"ೋ";s:3:"ೋ";s:6:"ൊ";s:3:"ൊ";s:6:"ോ";s:3:"ോ";s:6:"ൌ";s:3:"ൌ";s:6:"ේ";s:3:"à·š";s:6:"à·™à·";s:3:"à·œ";s:6:"ෝ";s:3:"à·";s:6:"ෞ";s:3:"à·ž";s:6:"ཱི";s:3:"ཱི";s:6:"ཱུ";s:3:"ཱུ";s:6:"ཱྀ";s:3:"à¾";s:6:"ဦ";s:3:"ဦ";s:6:"ᬆ";s:3:"ᬆ";s:6:"ᬈ";s:3:"ᬈ";s:6:"ᬊ";s:3:"ᬊ";s:6:"ᬌ";s:3:"ᬌ";s:6:"á¬á¬µ";s:3:"ᬎ";s:6:"ᬒ";s:3:"ᬒ";s:6:"ᬻ";s:3:"ᬻ";s:6:"ᬽ";s:3:"ᬽ";s:6:"ᭀ";s:3:"á­€";s:6:"ᭁ";s:3:"á­";s:6:"ᭃ";s:3:"á­ƒ";s:3:"AÌ¥";s:3:"Ḁ";s:3:"aÌ¥";s:3:"á¸";s:3:"Ḃ";s:3:"Ḃ";s:3:"ḃ";s:3:"ḃ";s:3:"BÌ£";s:3:"Ḅ";s:3:"bÌ£";s:3:"ḅ";s:3:"Ḇ";s:3:"Ḇ";s:3:"ḇ";s:3:"ḇ";s:4:"ÇÌ";s:3:"Ḉ";s:4:"çÌ";s:3:"ḉ";s:3:"Ḋ";s:3:"Ḋ";s:3:"ḋ";s:3:"ḋ";s:3:"DÌ£";s:3:"Ḍ";s:3:"dÌ£";s:3:"á¸";s:3:"Ḏ";s:3:"Ḏ";s:3:"ḏ";s:3:"á¸";s:3:"Ḑ";s:3:"á¸";s:3:"ḑ";s:3:"ḑ";s:3:"DÌ­";s:3:"Ḓ";s:3:"dÌ­";s:3:"ḓ";s:4:"Ä’Ì€";s:3:"Ḕ";s:4:"Ä“Ì€";s:3:"ḕ";s:4:"Ä’Ì";s:3:"Ḗ";s:4:"Ä“Ì";s:3:"ḗ";s:3:"EÌ­";s:3:"Ḙ";s:3:"eÌ­";s:3:"ḙ";s:3:"EÌ°";s:3:"Ḛ";s:3:"eÌ°";s:3:"ḛ";s:4:"Ḝ";s:3:"Ḝ";s:4:"ḝ";s:3:"á¸";s:3:"Ḟ";s:3:"Ḟ";s:3:"ḟ";s:3:"ḟ";s:3:"GÌ„";s:3:"Ḡ";s:3:"gÌ„";s:3:"ḡ";s:3:"Ḣ";s:3:"Ḣ";s:3:"ḣ";s:3:"ḣ";s:3:"HÌ£";s:3:"Ḥ";s:3:"hÌ£";s:3:"ḥ";s:3:"Ḧ";s:3:"Ḧ";s:3:"ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"Ḩ";s:3:"ḩ";s:3:"ḩ";s:3:"HÌ®";s:3:"Ḫ";s:3:"hÌ®";s:3:"ḫ";s:3:"IÌ°";s:3:"Ḭ";s:3:"iÌ°";s:3:"ḭ";s:4:"ÃÌ";s:3:"Ḯ";s:4:"ïÌ";s:3:"ḯ";s:3:"KÌ";s:3:"Ḱ";s:3:"kÌ";s:3:"ḱ";s:3:"KÌ£";s:3:"Ḳ";s:3:"kÌ£";s:3:"ḳ";s:3:"Ḵ";s:3:"Ḵ";s:3:"ḵ";s:3:"ḵ";s:3:"LÌ£";s:3:"Ḷ";s:3:"lÌ£";s:3:"ḷ";s:5:"Ḹ";s:3:"Ḹ";s:5:"ḹ";s:3:"ḹ";s:3:"Ḻ";s:3:"Ḻ";s:3:"ḻ";s:3:"ḻ";s:3:"LÌ­";s:3:"Ḽ";s:3:"lÌ­";s:3:"ḽ";s:3:"MÌ";s:3:"Ḿ";s:3:"mÌ";s:3:"ḿ";s:3:"Ṁ";s:3:"á¹€";s:3:"ṁ";s:3:"á¹";s:3:"MÌ£";s:3:"Ṃ";s:3:"mÌ£";s:3:"ṃ";s:3:"Ṅ";s:3:"Ṅ";s:3:"ṅ";s:3:"á¹…";s:3:"NÌ£";s:3:"Ṇ";s:3:"nÌ£";s:3:"ṇ";s:3:"Ṉ";s:3:"Ṉ";s:3:"ṉ";s:3:"ṉ";s:3:"NÌ­";s:3:"Ṋ";s:3:"nÌ­";s:3:"ṋ";s:4:"ÕÌ";s:3:"Ṍ";s:4:"õÌ";s:3:"á¹";s:4:"Ṏ";s:3:"Ṏ";s:4:"ṏ";s:3:"á¹";s:4:"Ṑ";s:3:"á¹";s:4:"ÅÌ€";s:3:"ṑ";s:4:"ÅŒÌ";s:3:"á¹’";s:4:"ÅÌ";s:3:"ṓ";s:3:"PÌ";s:3:"á¹”";s:3:"pÌ";s:3:"ṕ";s:3:"Ṗ";s:3:"á¹–";s:3:"ṗ";s:3:"á¹—";s:3:"Ṙ";s:3:"Ṙ";s:3:"ṙ";s:3:"á¹™";s:3:"RÌ£";s:3:"Ṛ";s:3:"rÌ£";s:3:"á¹›";s:5:"Ṝ";s:3:"Ṝ";s:5:"ṝ";s:3:"á¹";s:3:"Ṟ";s:3:"Ṟ";s:3:"ṟ";s:3:"ṟ";s:3:"Ṡ";s:3:"á¹ ";s:3:"ṡ";s:3:"ṡ";s:3:"SÌ£";s:3:"á¹¢";s:3:"sÌ£";s:3:"á¹£";s:4:"Ṥ";s:3:"Ṥ";s:4:"ṥ";s:3:"á¹¥";s:4:"Ṧ";s:3:"Ṧ";s:4:"ṧ";s:3:"ṧ";s:5:"Ṩ";s:3:"Ṩ";s:5:"ṩ";s:3:"ṩ";s:3:"Ṫ";s:3:"Ṫ";s:3:"ṫ";s:3:"ṫ";s:3:"TÌ£";s:3:"Ṭ";s:3:"tÌ£";s:3:"á¹­";s:3:"Ṯ";s:3:"á¹®";s:3:"ṯ";s:3:"ṯ";s:3:"TÌ­";s:3:"á¹°";s:3:"tÌ­";s:3:"á¹±";s:3:"Ṳ";s:3:"á¹²";s:3:"ṳ";s:3:"á¹³";s:3:"UÌ°";s:3:"á¹´";s:3:"uÌ°";s:3:"á¹µ";s:3:"UÌ­";s:3:"Ṷ";s:3:"uÌ­";s:3:"á¹·";s:4:"ŨÌ";s:3:"Ṹ";s:4:"Å©Ì";s:3:"á¹¹";s:4:"Ṻ";s:3:"Ṻ";s:4:"ṻ";s:3:"á¹»";s:3:"Ṽ";s:3:"á¹¼";s:3:"ṽ";s:3:"á¹½";s:3:"VÌ£";s:3:"á¹¾";s:3:"vÌ£";s:3:"ṿ";s:3:"WÌ€";s:3:"Ẁ";s:3:"wÌ€";s:3:"áº";s:3:"WÌ";s:3:"Ẃ";s:3:"wÌ";s:3:"ẃ";s:3:"Ẅ";s:3:"Ẅ";s:3:"ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"Ẇ";s:3:"ẇ";s:3:"ẇ";s:3:"WÌ£";s:3:"Ẉ";s:3:"wÌ£";s:3:"ẉ";s:3:"Ẋ";s:3:"Ẋ";s:3:"ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"Ẍ";s:3:"ẍ";s:3:"áº";s:3:"Ẏ";s:3:"Ẏ";s:3:"ẏ";s:3:"áº";s:3:"ZÌ‚";s:3:"áº";s:3:"zÌ‚";s:3:"ẑ";s:3:"ZÌ£";s:3:"Ẓ";s:3:"zÌ£";s:3:"ẓ";s:3:"Ẕ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẕ";s:3:"ẖ";s:3:"ẖ";s:3:"ẗ";s:3:"ẗ";s:3:"wÌŠ";s:3:"ẘ";s:3:"yÌŠ";s:3:"ẙ";s:4:"ẛ";s:3:"ẛ";s:3:"AÌ£";s:3:"Ạ";s:3:"aÌ£";s:3:"ạ";s:3:"Ả";s:3:"Ả";s:3:"ả";s:3:"ả";s:4:"ÂÌ";s:3:"Ấ";s:4:"âÌ";s:3:"ấ";s:4:"Ầ";s:3:"Ầ";s:4:"ầ";s:3:"ầ";s:4:"Ẩ";s:3:"Ẩ";s:4:"ẩ";s:3:"ẩ";s:4:"Ẫ";s:3:"Ẫ";s:4:"ẫ";s:3:"ẫ";s:5:"Ậ";s:3:"Ậ";s:5:"ậ";s:3:"ậ";s:4:"Ä‚Ì";s:3:"Ắ";s:4:"ăÌ";s:3:"ắ";s:4:"Ä‚Ì€";s:3:"Ằ";s:4:"ằ";s:3:"ằ";s:4:"Ẳ";s:3:"Ẳ";s:4:"ẳ";s:3:"ẳ";s:4:"Ẵ";s:3:"Ẵ";s:4:"ẵ";s:3:"ẵ";s:5:"Ặ";s:3:"Ặ";s:5:"ặ";s:3:"ặ";s:3:"EÌ£";s:3:"Ẹ";s:3:"eÌ£";s:3:"ẹ";s:3:"Ẻ";s:3:"Ẻ";s:3:"ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"Ẽ";s:3:"ẽ";s:3:"ẽ";s:4:"ÊÌ";s:3:"Ế";s:4:"êÌ";s:3:"ế";s:4:"Ề";s:3:"Ề";s:4:"ề";s:3:"á»";s:4:"Ể";s:3:"Ể";s:4:"ể";s:3:"ể";s:4:"Ễ";s:3:"Ễ";s:4:"ễ";s:3:"á»…";s:5:"Ệ";s:3:"Ệ";s:5:"ệ";s:3:"ệ";s:3:"Ỉ";s:3:"Ỉ";s:3:"ỉ";s:3:"ỉ";s:3:"IÌ£";s:3:"Ị";s:3:"iÌ£";s:3:"ị";s:3:"OÌ£";s:3:"Ọ";s:3:"oÌ£";s:3:"á»";s:3:"Ỏ";s:3:"Ỏ";s:3:"ỏ";s:3:"á»";s:4:"ÔÌ";s:3:"á»";s:4:"ôÌ";s:3:"ố";s:4:"Ồ";s:3:"á»’";s:4:"ồ";s:3:"ồ";s:4:"Ổ";s:3:"á»”";s:4:"ổ";s:3:"ổ";s:4:"Ỗ";s:3:"á»–";s:4:"ỗ";s:3:"á»—";s:5:"Ộ";s:3:"Ộ";s:5:"á»Ì‚";s:3:"á»™";s:4:"Æ Ì";s:3:"Ớ";s:4:"Æ¡Ì";s:3:"á»›";s:4:"Ờ";s:3:"Ờ";s:4:"Æ¡Ì€";s:3:"á»";s:4:"Ở";s:3:"Ở";s:4:"ở";s:3:"ở";s:4:"Ỡ";s:3:"á» ";s:4:"ỡ";s:3:"ỡ";s:4:"Ợ";s:3:"Ợ";s:4:"Æ¡Ì£";s:3:"ợ";s:3:"UÌ£";s:3:"Ụ";s:3:"uÌ£";s:3:"ụ";s:3:"Ủ";s:3:"Ủ";s:3:"ủ";s:3:"ủ";s:4:"ƯÌ";s:3:"Ứ";s:4:"Æ°Ì";s:3:"ứ";s:4:"Ừ";s:3:"Ừ";s:4:"Æ°Ì€";s:3:"ừ";s:4:"Ử";s:3:"Ử";s:4:"ử";s:3:"á»­";s:4:"Ữ";s:3:"á»®";s:4:"ữ";s:3:"ữ";s:4:"Ự";s:3:"á»°";s:4:"Æ°Ì£";s:3:"á»±";s:3:"YÌ€";s:3:"Ỳ";s:3:"yÌ€";s:3:"ỳ";s:3:"YÌ£";s:3:"á»´";s:3:"yÌ£";s:3:"ỵ";s:3:"Ỷ";s:3:"Ỷ";s:3:"ỷ";s:3:"á»·";s:3:"Ỹ";s:3:"Ỹ";s:3:"ỹ";s:3:"ỹ";s:4:"ἀ";s:3:"á¼€";s:4:"ἁ";s:3:"á¼";s:5:"ἂ";s:3:"ἂ";s:5:"á¼Ì€";s:3:"ἃ";s:5:"á¼€Ì";s:3:"ἄ";s:5:"á¼Ì";s:3:"á¼…";s:5:"ἆ";s:3:"ἆ";s:5:"á¼Í‚";s:3:"ἇ";s:4:"Ἀ";s:3:"Ἀ";s:4:"Ἁ";s:3:"Ἁ";s:5:"Ἂ";s:3:"Ἂ";s:5:"Ἃ";s:3:"Ἃ";s:5:"ἈÌ";s:3:"Ἄ";s:5:"ἉÌ";s:3:"á¼";s:5:"Ἆ";s:3:"Ἆ";s:5:"Ἇ";s:3:"á¼";s:4:"ἐ";s:3:"á¼";s:4:"ἑ";s:3:"ἑ";s:5:"á¼Ì€";s:3:"á¼’";s:5:"ἓ";s:3:"ἓ";s:5:"á¼Ì";s:3:"á¼”";s:5:"ἑÌ";s:3:"ἕ";s:4:"Ἐ";s:3:"Ἐ";s:4:"Ἑ";s:3:"á¼™";s:5:"Ἒ";s:3:"Ἒ";s:5:"Ἓ";s:3:"á¼›";s:5:"ἘÌ";s:3:"Ἔ";s:5:"á¼™Ì";s:3:"á¼";s:4:"ἠ";s:3:"á¼ ";s:4:"ἡ";s:3:"ἡ";s:5:"ἢ";s:3:"á¼¢";s:5:"ἣ";s:3:"á¼£";s:5:"á¼ Ì";s:3:"ἤ";s:5:"ἡÌ";s:3:"á¼¥";s:5:"á¼ Í‚";s:3:"ἦ";s:5:"ἧ";s:3:"ἧ";s:4:"Ἠ";s:3:"Ἠ";s:4:"Ἡ";s:3:"Ἡ";s:5:"Ἢ";s:3:"Ἢ";s:5:"Ἣ";s:3:"Ἣ";s:5:"ἨÌ";s:3:"Ἤ";s:5:"ἩÌ";s:3:"á¼­";s:5:"Ἦ";s:3:"á¼®";s:5:"Ἧ";s:3:"Ἧ";s:4:"ἰ";s:3:"á¼°";s:4:"ἱ";s:3:"á¼±";s:5:"á¼°Ì€";s:3:"á¼²";s:5:"ἳ";s:3:"á¼³";s:5:"á¼°Ì";s:3:"á¼´";s:5:"á¼±Ì";s:3:"á¼µ";s:5:"á¼°Í‚";s:3:"ἶ";s:5:"ἷ";s:3:"á¼·";s:4:"Ἰ";s:3:"Ἰ";s:4:"Ἱ";s:3:"á¼¹";s:5:"Ἲ";s:3:"Ἲ";s:5:"Ἳ";s:3:"á¼»";s:5:"ἸÌ";s:3:"á¼¼";s:5:"á¼¹Ì";s:3:"á¼½";s:5:"Ἶ";s:3:"á¼¾";s:5:"Ἷ";s:3:"Ἷ";s:4:"ὀ";s:3:"á½€";s:4:"ὁ";s:3:"á½";s:5:"ὂ";s:3:"ὂ";s:5:"á½Ì€";s:3:"ὃ";s:5:"á½€Ì";s:3:"ὄ";s:5:"á½Ì";s:3:"á½…";s:4:"Ὀ";s:3:"Ὀ";s:4:"Ὁ";s:3:"Ὁ";s:5:"Ὂ";s:3:"Ὂ";s:5:"Ὃ";s:3:"Ὃ";s:5:"ὈÌ";s:3:"Ὄ";s:5:"ὉÌ";s:3:"á½";s:4:"Ï…Ì“";s:3:"á½";s:4:"Ï…Ì”";s:3:"ὑ";s:5:"á½Ì€";s:3:"á½’";s:5:"ὓ";s:3:"ὓ";s:5:"á½Ì";s:3:"á½”";s:5:"ὑÌ";s:3:"ὕ";s:5:"á½Í‚";s:3:"á½–";s:5:"ὗ";s:3:"á½—";s:4:"Ὑ";s:3:"á½™";s:5:"Ὓ";s:3:"á½›";s:5:"á½™Ì";s:3:"á½";s:5:"Ὗ";s:3:"Ὗ";s:4:"ὠ";s:3:"á½ ";s:4:"ὡ";s:3:"ὡ";s:5:"ὢ";s:3:"á½¢";s:5:"ὣ";s:3:"á½£";s:5:"á½ Ì";s:3:"ὤ";s:5:"ὡÌ";s:3:"á½¥";s:5:"á½ Í‚";s:3:"ὦ";s:5:"ὧ";s:3:"ὧ";s:4:"Ὠ";s:3:"Ὠ";s:4:"Ὡ";s:3:"Ὡ";s:5:"Ὢ";s:3:"Ὢ";s:5:"Ὣ";s:3:"Ὣ";s:5:"ὨÌ";s:3:"Ὤ";s:5:"ὩÌ";s:3:"á½­";s:5:"Ὦ";s:3:"á½®";s:5:"Ὧ";s:3:"Ὧ";s:4:"ὰ";s:3:"á½°";s:2:"ά";s:3:"á½±";s:4:"ὲ";s:3:"á½²";s:2:"έ";s:3:"á½³";s:4:"ὴ";s:3:"á½´";s:2:"ή";s:3:"á½µ";s:4:"ὶ";s:3:"ὶ";s:2:"ί";s:3:"á½·";s:4:"ὸ";s:3:"ὸ";s:2:"ÏŒ";s:3:"á½¹";s:4:"Ï…Ì€";s:3:"ὺ";s:2:"Ï";s:3:"á½»";s:4:"ὼ";s:3:"á½¼";s:2:"ÏŽ";s:3:"á½½";s:5:"ᾀ";s:3:"á¾€";s:5:"á¼Í…";s:3:"á¾";s:5:"ᾂ";s:3:"ᾂ";s:5:"ᾃ";s:3:"ᾃ";s:5:"ᾄ";s:3:"ᾄ";s:5:"á¼…Í…";s:3:"á¾…";s:5:"ᾆ";s:3:"ᾆ";s:5:"ᾇ";s:3:"ᾇ";s:5:"ᾈ";s:3:"ᾈ";s:5:"ᾉ";s:3:"ᾉ";s:5:"ᾊ";s:3:"ᾊ";s:5:"ᾋ";s:3:"ᾋ";s:5:"ᾌ";s:3:"ᾌ";s:5:"á¼Í…";s:3:"á¾";s:5:"ᾎ";s:3:"ᾎ";s:5:"á¼Í…";s:3:"á¾";s:5:"á¼ Í…";s:3:"á¾";s:5:"ᾑ";s:3:"ᾑ";s:5:"ᾒ";s:3:"á¾’";s:5:"ᾓ";s:3:"ᾓ";s:5:"ᾔ";s:3:"á¾”";s:5:"ᾕ";s:3:"ᾕ";s:5:"ᾖ";s:3:"á¾–";s:5:"ᾗ";s:3:"á¾—";s:5:"ᾘ";s:3:"ᾘ";s:5:"ᾙ";s:3:"á¾™";s:5:"ᾚ";s:3:"ᾚ";s:5:"ᾛ";s:3:"á¾›";s:5:"ᾜ";s:3:"ᾜ";s:5:"á¼­Í…";s:3:"á¾";s:5:"ᾞ";s:3:"ᾞ";s:5:"ᾟ";s:3:"ᾟ";s:5:"á½ Í…";s:3:"á¾ ";s:5:"ᾡ";s:3:"ᾡ";s:5:"ᾢ";s:3:"á¾¢";s:5:"ᾣ";s:3:"á¾£";s:5:"ᾤ";s:3:"ᾤ";s:5:"ᾥ";s:3:"á¾¥";s:5:"ᾦ";s:3:"ᾦ";s:5:"ᾧ";s:3:"ᾧ";s:5:"ᾨ";s:3:"ᾨ";s:5:"ᾩ";s:3:"ᾩ";s:5:"ᾪ";s:3:"ᾪ";s:5:"ᾫ";s:3:"ᾫ";s:5:"ᾬ";s:3:"ᾬ";s:5:"á½­Í…";s:3:"á¾­";s:5:"ᾮ";s:3:"á¾®";s:5:"ᾯ";s:3:"ᾯ";s:4:"ᾰ";s:3:"á¾°";s:4:"ᾱ";s:3:"á¾±";s:5:"á½°Í…";s:3:"á¾²";s:4:"ᾳ";s:3:"á¾³";s:4:"ᾴ";s:3:"á¾´";s:4:"ᾶ";s:3:"ᾶ";s:5:"ᾷ";s:3:"á¾·";s:4:"Ᾰ";s:3:"Ᾰ";s:4:"Ᾱ";s:3:"á¾¹";s:4:"Ὰ";s:3:"Ὰ";s:2:"Ά";s:3:"á¾»";s:4:"ᾼ";s:3:"á¾¼";s:2:"ι";s:3:"á¾¾";s:4:"῁";s:3:"á¿";s:5:"á½´Í…";s:3:"á¿‚";s:4:"ῃ";s:3:"ῃ";s:4:"ῄ";s:3:"á¿„";s:4:"ῆ";s:3:"ῆ";s:5:"ῇ";s:3:"ῇ";s:4:"Ὲ";s:3:"Ὲ";s:2:"Έ";s:3:"Έ";s:4:"Ὴ";s:3:"á¿Š";s:2:"Ή";s:3:"á¿‹";s:4:"ῌ";s:3:"á¿Œ";s:5:"῍";s:3:"á¿";s:5:"᾿Ì";s:3:"á¿Ž";s:5:"῏";s:3:"á¿";s:4:"ῐ";s:3:"á¿";s:4:"ῑ";s:3:"á¿‘";s:4:"ÏŠÌ€";s:3:"á¿’";s:2:"Î";s:3:"á¿“";s:4:"ῖ";s:3:"á¿–";s:4:"ÏŠÍ‚";s:3:"á¿—";s:4:"Ῐ";s:3:"Ῐ";s:4:"Ῑ";s:3:"á¿™";s:4:"Ὶ";s:3:"á¿š";s:2:"Ί";s:3:"á¿›";s:5:"῝";s:3:"á¿";s:5:"῾Ì";s:3:"á¿ž";s:5:"῟";s:3:"á¿Ÿ";s:4:"ῠ";s:3:"á¿ ";s:4:"Ï…Ì„";s:3:"á¿¡";s:4:"Ï‹Ì€";s:3:"á¿¢";s:2:"ΰ";s:3:"á¿£";s:4:"ÏÌ“";s:3:"ῤ";s:4:"ÏÌ”";s:3:"á¿¥";s:4:"Ï…Í‚";s:3:"ῦ";s:4:"Ï‹Í‚";s:3:"ῧ";s:4:"Ῠ";s:3:"Ῠ";s:4:"Ῡ";s:3:"á¿©";s:4:"Ὺ";s:3:"Ὺ";s:2:"ÎŽ";s:3:"á¿«";s:4:"Ῥ";s:3:"Ῥ";s:4:"῭";s:3:"á¿­";s:2:"Î…";s:3:"á¿®";s:1:"`";s:3:"`";s:5:"ῲ";s:3:"ῲ";s:4:"ῳ";s:3:"ῳ";s:4:"ÏŽÍ…";s:3:"á¿´";s:4:"ῶ";s:3:"ῶ";s:5:"ῷ";s:3:"á¿·";s:4:"Ὸ";s:3:"Ὸ";s:2:"ÎŒ";s:3:"Ό";s:4:"Ὼ";s:3:"Ὼ";s:2:"Î";s:3:"á¿»";s:4:"ῼ";s:3:"ῼ";s:2:"´";s:3:"´";s:3:" ";s:3:" ";s:3:" ";s:3:"â€";s:2:"Ω";s:3:"Ω";s:1:"K";s:3:"K";s:2:"Ã…";s:3:"â„«";s:5:"â†Ì¸";s:3:"↚";s:5:"↛";s:3:"↛";s:5:"↮";s:3:"↮";s:5:"â‡Ì¸";s:3:"â‡";s:5:"⇎";s:3:"⇎";s:5:"⇏";s:3:"â‡";s:5:"∄";s:3:"∄";s:5:"∉";s:3:"∉";s:5:"∌";s:3:"∌";s:5:"∤";s:3:"∤";s:5:"∦";s:3:"∦";s:5:"≁";s:3:"â‰";s:5:"≄";s:3:"≄";s:5:"≇";s:3:"≇";s:5:"≉";s:3:"≉";s:3:"≠";s:3:"≠";s:5:"≢";s:3:"≢";s:5:"â‰Ì¸";s:3:"≭";s:3:"≮";s:3:"≮";s:3:"≯";s:3:"≯";s:5:"≰";s:3:"≰";s:5:"≱";s:3:"≱";s:5:"≴";s:3:"≴";s:5:"≵";s:3:"≵";s:5:"≸";s:3:"≸";s:5:"≹";s:3:"≹";s:5:"⊀";s:3:"⊀";s:5:"⊁";s:3:"âŠ";s:5:"⊄";s:3:"⊄";s:5:"⊅";s:3:"⊅";s:5:"⊈";s:3:"⊈";s:5:"⊉";s:3:"⊉";s:5:"⊬";s:3:"⊬";s:5:"⊭";s:3:"⊭";s:5:"⊮";s:3:"⊮";s:5:"⊯";s:3:"⊯";s:5:"⋠";s:3:"â‹ ";s:5:"⋡";s:3:"â‹¡";s:5:"⋢";s:3:"â‹¢";s:5:"⋣";s:3:"â‹£";s:5:"⋪";s:3:"⋪";s:5:"⋫";s:3:"â‹«";s:5:"⋬";s:3:"⋬";s:5:"⋭";s:3:"â‹­";s:3:"〈";s:3:"〈";s:3:"〉";s:3:"〉";s:6:"ã‹ã‚™";s:3:"ãŒ";s:6:"ãã‚™";s:3:"ãŽ";s:6:"ãã‚™";s:3:"ã";s:6:"ã‘ã‚™";s:3:"ã’";s:6:"ã“ã‚™";s:3:"ã”";s:6:"ã•ã‚™";s:3:"ã–";s:6:"ã—ã‚™";s:3:"ã˜";s:6:"ã™ã‚™";s:3:"ãš";s:6:"ã›ã‚™";s:3:"ãœ";s:6:"ãã‚™";s:3:"ãž";s:6:"ãŸã‚™";s:3:"ã ";s:6:"ã¡ã‚™";s:3:"ã¢";s:6:"ã¤ã‚™";s:3:"ã¥";s:6:"ã¦ã‚™";s:3:"ã§";s:6:"ã¨ã‚™";s:3:"ã©";s:6:"ã¯ã‚™";s:3:"ã°";s:6:"ã¯ã‚š";s:3:"ã±";s:6:"ã²ã‚™";s:3:"ã³";s:6:"ã²ã‚š";s:3:"ã´";s:6:"ãµã‚™";s:3:"ã¶";s:6:"ãµã‚š";s:3:"ã·";s:6:"ã¸ã‚™";s:3:"ã¹";s:6:"ã¸ã‚š";s:3:"ãº";s:6:"ã»ã‚™";s:3:"ã¼";s:6:"ã»ã‚š";s:3:"ã½";s:6:"ã†ã‚™";s:3:"ã‚”";s:6:"ã‚ã‚™";s:3:"ã‚ž";s:6:"ã‚«ã‚™";s:3:"ガ";s:6:"ã‚­ã‚™";s:3:"ã‚®";s:6:"グ";s:3:"ã‚°";s:6:"ゲ";s:3:"ゲ";s:6:"ゴ";s:3:"ã‚´";s:6:"ザ";s:3:"ザ";s:6:"ã‚·ã‚™";s:3:"ジ";s:6:"ズ";s:3:"ズ";s:6:"ゼ";s:3:"ゼ";s:6:"ゾ";s:3:"ゾ";s:6:"ã‚¿ã‚™";s:3:"ダ";s:6:"ãƒã‚™";s:3:"ヂ";s:6:"ヅ";s:3:"ヅ";s:6:"デ";s:3:"デ";s:6:"ド";s:3:"ド";s:6:"ãƒã‚™";s:3:"ãƒ";s:6:"ãƒã‚š";s:3:"パ";s:6:"ビ";s:3:"ビ";s:6:"ピ";s:3:"ピ";s:6:"ブ";s:3:"ブ";s:6:"プ";s:3:"プ";s:6:"ベ";s:3:"ベ";s:6:"ペ";s:3:"ペ";s:6:"ボ";s:3:"ボ";s:6:"ポ";s:3:"ãƒ";s:6:"ヴ";s:3:"ヴ";s:6:"ヷ";s:3:"ヷ";s:6:"ヸ";s:3:"ヸ";s:6:"ヹ";s:3:"ヹ";s:6:"ヺ";s:3:"ヺ";s:6:"ヾ";s:3:"ヾ";s:3:"豈";s:3:"豈";s:3:"æ›´";s:3:"ï¤";s:3:"車";s:3:"車";s:3:"賈";s:3:"賈";s:3:"滑";s:3:"滑";s:3:"串";s:3:"串";s:3:"å¥";s:3:"句";s:3:"龜";s:3:"ï«Ž";s:3:"契";s:3:"契";s:3:"金";s:3:"金";s:3:"å–‡";s:3:"喇";s:3:"奈";s:3:"奈";s:3:"懶";s:4:"懶";s:3:"癩";s:3:"癩";s:3:"ç¾…";s:3:"ï¤";s:3:"蘿";s:3:"ï¤";s:3:"螺";s:3:"螺";s:3:"裸";s:3:"裸";s:3:"é‚";s:3:"邏";s:3:"樂";s:3:"樂";s:3:"æ´›";s:3:"洛";s:3:"烙";s:3:"烙";s:3:"çž";s:3:"珞";s:3:"è½";s:3:"落";s:3:"é…ª";s:3:"酪";s:3:"駱";s:3:"駱";s:3:"亂";s:3:"亂";s:3:"åµ";s:3:"卵";s:3:"欄";s:3:"ï¤";s:3:"爛";s:3:"爛";s:3:"蘭";s:3:"蘭";s:3:"鸞";s:3:"鸞";s:3:"åµ";s:3:"嵐";s:3:"æ¿«";s:3:"濫";s:3:"è—";s:3:"藍";s:3:"襤";s:3:"襤";s:3:"拉";s:3:"拉";s:3:"臘";s:3:"臘";s:3:"è Ÿ";s:3:"蠟";s:3:"廊";s:4:"廊";s:3:"朗";s:4:"朗";s:3:"浪";s:3:"浪";s:3:"狼";s:3:"狼";s:3:"郎";s:3:"郎";s:3:"來";s:3:"來";s:3:"冷";s:3:"冷";s:3:"å‹ž";s:3:"勞";s:3:"æ“„";s:3:"擄";s:3:"æ«“";s:3:"櫓";s:3:"çˆ";s:3:"爐";s:3:"盧";s:3:"盧";s:3:"è€";s:3:"老";s:3:"蘆";s:3:"蘆";s:3:"虜";s:4:"虜";s:3:"è·¯";s:3:"路";s:3:"露";s:3:"露";s:3:"é­¯";s:3:"魯";s:3:"é·º";s:3:"鷺";s:3:"碌";s:4:"ð¯¥";s:3:"祿";s:3:"祿";s:3:"綠";s:3:"綠";s:3:"è‰";s:3:"菉";s:3:"錄";s:3:"錄";s:3:"鹿";s:3:"鹿";s:3:"è«–";s:3:"ï¥";s:3:"壟";s:3:"壟";s:3:"弄";s:3:"弄";s:3:"ç± ";s:3:"籠";s:3:"è¾";s:3:"聾";s:3:"牢";s:3:"牢";s:3:"磊";s:3:"磊";s:3:"賂";s:3:"賂";s:3:"é›·";s:3:"雷";s:3:"壘";s:3:"壘";s:3:"å±¢";s:3:"屢";s:3:"樓";s:3:"樓";s:3:"æ·š";s:3:"ï¥";s:3:"æ¼";s:3:"漏";s:3:"ç´¯";s:3:"ï¥";s:3:"縷";s:3:"ï¥";s:3:"陋";s:3:"陋";s:3:"å‹’";s:3:"勒";s:3:"è‚‹";s:3:"肋";s:3:"凜";s:3:"凜";s:3:"凌";s:3:"凌";s:3:"稜";s:3:"稜";s:3:"綾";s:3:"綾";s:3:"è±";s:3:"菱";s:3:"陵";s:3:"陵";s:3:"讀";s:3:"讀";s:3:"æ‹";s:3:"拏";s:3:"諾";s:3:"諾";s:3:"丹";s:3:"丹";s:3:"寧";s:4:"寧";s:3:"怒";s:3:"怒";s:3:"率";s:3:"率";s:3:"ç•°";s:4:"異";s:3:"北";s:4:"北";s:3:"磻";s:3:"磻";s:3:"便";s:3:"便";s:3:"復";s:3:"復";s:3:"ä¸";s:3:"不";s:3:"泌";s:3:"泌";s:3:"數";s:3:"數";s:3:"ç´¢";s:3:"索";s:3:"åƒ";s:3:"參";s:3:"å¡ž";s:3:"塞";s:3:"çœ";s:3:"省";s:3:"葉";s:3:"葉";s:3:"說";s:3:"說";s:3:"殺";s:4:"殺";s:3:"è¾°";s:3:"辰";s:3:"沈";s:3:"沈";s:3:"拾";s:3:"拾";s:3:"è‹¥";s:4:"若";s:3:"掠";s:3:"掠";s:3:"ç•¥";s:3:"略";s:3:"亮";s:3:"亮";s:3:"å…©";s:3:"兩";s:3:"凉";s:3:"凉";s:3:"æ¢";s:3:"梁";s:3:"糧";s:3:"糧";s:3:"良";s:3:"良";s:3:"è«’";s:3:"諒";s:3:"é‡";s:3:"量";s:3:"勵";s:3:"勵";s:3:"å‘‚";s:3:"呂";s:3:"女";s:3:"ï¦";s:3:"廬";s:3:"廬";s:3:"æ—…";s:3:"旅";s:3:"濾";s:3:"濾";s:3:"礪";s:3:"礪";s:3:"é–­";s:3:"閭";s:3:"驪";s:3:"驪";s:3:"麗";s:3:"麗";s:3:"黎";s:3:"黎";s:3:"力";s:3:"力";s:3:"曆";s:3:"曆";s:3:"æ­·";s:3:"歷";s:3:"è½¢";s:3:"ï¦";s:3:"å¹´";s:3:"年";s:3:"æ†";s:3:"ï¦";s:3:"戀";s:3:"ï¦";s:3:"æ’š";s:3:"撚";s:3:"æ¼£";s:3:"漣";s:3:"ç…‰";s:3:"煉";s:3:"ç’‰";s:3:"璉";s:3:"秊";s:3:"秊";s:3:"ç·´";s:3:"練";s:3:"è¯";s:3:"聯";s:3:"輦";s:3:"輦";s:3:"è“®";s:3:"蓮";s:3:"連";s:3:"連";s:3:"éŠ";s:3:"鍊";s:3:"列";s:3:"列";s:3:"劣";s:3:"ï¦";s:3:"å’½";s:3:"咽";s:3:"烈";s:3:"烈";s:3:"裂";s:3:"裂";s:3:"廉";s:3:"廉";s:3:"念";s:3:"念";s:3:"æ»";s:3:"捻";s:3:"æ®®";s:3:"殮";s:3:"ç°¾";s:3:"簾";s:3:"çµ";s:3:"獵";s:3:"令";s:3:"令";s:3:"囹";s:3:"囹";s:3:"嶺";s:3:"嶺";s:3:"怜";s:3:"怜";s:3:"玲";s:3:"玲";s:3:"ç‘©";s:3:"瑩";s:3:"羚";s:3:"羚";s:3:"è†";s:3:"聆";s:3:"鈴";s:3:"鈴";s:3:"零";s:3:"零";s:3:"éˆ";s:3:"靈";s:3:"é ˜";s:3:"領";s:3:"例";s:3:"例";s:3:"禮";s:3:"禮";s:3:"醴";s:3:"醴";s:3:"隸";s:3:"隸";s:3:"惡";s:3:"惡";s:3:"了";s:3:"了";s:3:"僚";s:3:"僚";s:3:"寮";s:3:"寮";s:3:"å°¿";s:3:"尿";s:3:"æ–™";s:3:"料";s:3:"燎";s:3:"燎";s:3:"療";s:3:"ï§";s:3:"蓼";s:3:"蓼";s:3:"é¼";s:3:"遼";s:3:"é¾";s:3:"龍";s:3:"暈";s:3:"暈";s:3:"阮";s:3:"阮";s:3:"劉";s:3:"劉";s:3:"æ»";s:3:"杻";s:3:"柳";s:3:"柳";s:3:"æµ";s:4:"流";s:3:"溜";s:3:"溜";s:3:"ç‰";s:3:"琉";s:3:"ç•™";s:3:"ï§";s:3:"ç¡«";s:3:"硫";s:3:"ç´";s:3:"ï§";s:3:"é¡ž";s:3:"ï§";s:3:"å…­";s:3:"六";s:3:"戮";s:3:"戮";s:3:"陸";s:3:"陸";s:3:"倫";s:3:"倫";s:3:"å´™";s:3:"崙";s:3:"æ·ª";s:3:"淪";s:3:"輪";s:3:"輪";s:3:"律";s:3:"律";s:3:"æ…„";s:3:"慄";s:3:"æ —";s:3:"栗";s:3:"隆";s:3:"隆";s:3:"利";s:3:"ï§";s:3:"å";s:3:"吏";s:3:"å±¥";s:3:"履";s:3:"易";s:3:"易";s:3:"æŽ";s:3:"李";s:3:"梨";s:3:"梨";s:3:"æ³¥";s:3:"泥";s:3:"ç†";s:3:"理";s:3:"ç—¢";s:3:"痢";s:3:"ç½¹";s:3:"罹";s:3:"è£";s:3:"裏";s:3:"裡";s:3:"裡";s:3:"里";s:3:"里";s:3:"離";s:3:"離";s:3:"匿";s:3:"匿";s:3:"溺";s:3:"溺";s:3:"å";s:3:"吝";s:3:"ç‡";s:3:"燐";s:3:"ç’˜";s:3:"璘";s:3:"è—º";s:3:"藺";s:3:"隣";s:3:"隣";s:3:"é±—";s:3:"鱗";s:3:"麟";s:3:"麟";s:3:"æž—";s:3:"林";s:3:"æ·‹";s:3:"淋";s:3:"臨";s:3:"臨";s:3:"ç«‹";s:3:"立";s:3:"笠";s:3:"笠";s:3:"ç²’";s:3:"粒";s:3:"ç‹€";s:3:"狀";s:3:"ç‚™";s:3:"炙";s:3:"è­˜";s:3:"識";s:3:"什";s:3:"什";s:3:"茶";s:3:"茶";s:3:"刺";s:3:"刺";s:3:"切";s:4:"ð¯¡";s:3:"度";s:3:"ï¨";s:3:"æ‹“";s:3:"拓";s:3:"ç³–";s:3:"糖";s:3:"å®…";s:3:"宅";s:3:"æ´ž";s:3:"洞";s:3:"æš´";s:3:"暴";s:3:"è¼»";s:3:"輻";s:3:"è¡Œ";s:3:"行";s:3:"é™";s:3:"降";s:3:"見";s:3:"見";s:3:"廓";s:3:"廓";s:3:"å…€";s:3:"兀";s:3:"å—€";s:3:"ï¨";s:3:"å¡š";s:3:"塚";s:3:"æ™´";s:3:"晴";s:3:"凞";s:3:"凞";s:3:"猪";s:3:"猪";s:3:"益";s:3:"益";s:3:"礼";s:3:"礼";s:3:"神";s:3:"神";s:3:"祥";s:3:"祥";s:3:"ç¦";s:4:"福";s:3:"é–";s:3:"靖";s:3:"ç²¾";s:3:"ï¨";s:3:"ç¾½";s:3:"羽";s:3:"蘒";s:3:"蘒";s:3:"諸";s:3:"諸";s:3:"逸";s:3:"逸";s:3:"都";s:3:"都";s:3:"飯";s:3:"飯";s:3:"飼";s:3:"飼";s:3:"館";s:3:"館";s:3:"鶴";s:3:"鶴";s:3:"ä¾®";s:4:"侮";s:3:"僧";s:4:"僧";s:3:"å…";s:4:"免";s:3:"勉";s:4:"勉";s:3:"勤";s:4:"勤";s:3:"å‘";s:4:"卑";s:3:"å–";s:3:"喝";s:3:"嘆";s:4:"嘆";s:3:"器";s:3:"器";s:3:"å¡€";s:3:"塀";s:3:"墨";s:3:"墨";s:3:"層";s:3:"層";s:3:"å±®";s:4:"屮";s:3:"æ‚”";s:4:"悔";s:3:"æ…¨";s:3:"慨";s:3:"憎";s:4:"憎";s:3:"懲";s:4:"懲";s:3:"æ•";s:4:"敏";s:3:"æ—¢";s:3:"ï©‚";s:3:"æš‘";s:4:"ð¯£";s:3:"梅";s:4:"梅";s:3:"æµ·";s:4:"ð¯¤";s:3:"渚";s:3:"渚";s:3:"æ¼¢";s:3:"漢";s:3:"ç…®";s:3:"煮";s:3:"爫";s:3:"爫";s:3:"ç¢";s:3:"ï©Š";s:3:"碑";s:3:"ï©‹";s:3:"社";s:3:"ï©Œ";s:3:"祉";s:3:"ï©";s:3:"祈";s:3:"ï©Ž";s:3:"ç¥";s:3:"ï©";s:3:"祖";s:4:"祖";s:3:"ç¥";s:3:"ï©‘";s:3:"ç¦";s:3:"ï©’";s:3:"禎";s:3:"ï©“";s:3:"ç©€";s:4:"穀";s:3:"çª";s:3:"ï©•";s:3:"節";s:3:"節";s:3:"縉";s:3:"縉";s:3:"ç¹";s:3:"ï©™";s:3:"ç½²";s:3:"ï©š";s:3:"者";s:4:"者";s:3:"臭";s:3:"ï©œ";s:3:"艹";s:3:"ï©ž";s:3:"è‘—";s:4:"著";s:3:"è¤";s:3:"ï© ";s:3:"視";s:3:"視";s:3:"è¬";s:3:"謁";s:3:"謹";s:3:"謹";s:3:"賓";s:3:"賓";s:3:"è´ˆ";s:3:"ï«";s:3:"辶";s:3:"辶";s:3:"難";s:3:"難";s:3:"響";s:3:"ï«Š";s:3:"é »";s:3:"ï«Œ";s:3:"æµ";s:3:"ï©«";s:4:"𤋮";s:3:"𤋮";s:3:"舘";s:3:"ï©­";s:3:"並";s:3:"ï©°";s:3:"况";s:4:"况";s:3:"å…¨";s:3:"全";s:3:"ä¾€";s:3:"侀";s:3:"å……";s:3:"ï©´";s:3:"冀";s:3:"冀";s:3:"勇";s:4:"勇";s:3:"勺";s:4:"勺";s:3:"å••";s:3:"啕";s:3:"å–™";s:4:"喙";s:3:"å—¢";s:3:"ï©»";s:3:"墳";s:3:"墳";s:3:"奄";s:3:"奄";s:3:"奔";s:3:"ï©¿";s:3:"å©¢";s:3:"婢";s:3:"嬨";s:3:"ïª";s:3:"å»’";s:3:"廒";s:3:"å»™";s:3:"廙";s:3:"彩";s:3:"彩";s:3:"å¾­";s:3:"徭";s:3:"惘";s:3:"惘";s:3:"æ…Ž";s:4:"慎";s:3:"愈";s:3:"愈";s:3:"æ… ";s:3:"慠";s:3:"戴";s:3:"戴";s:3:"æ„";s:3:"ïª";s:3:"æœ";s:3:"搜";s:3:"æ‘’";s:3:"ïª";s:3:"æ•–";s:3:"ïª";s:3:"望";s:4:"望";s:3:"æ–";s:3:"杖";s:3:"æ­¹";s:3:"歹";s:3:"æ»›";s:3:"滛";s:3:"滋";s:4:"滋";s:3:"瀞";s:4:"瀞";s:3:"瞧";s:3:"ïª";s:3:"爵";s:4:"爵";s:3:"犯";s:3:"犯";s:3:"瑱";s:4:"瑱";s:3:"甆";s:3:"甆";s:3:"ç”»";s:3:"画";s:3:"ç˜";s:3:"瘝";s:3:"瘟";s:3:"瘟";s:3:"ç››";s:3:"盛";s:3:"ç›´";s:4:"直";s:3:"çŠ";s:4:"睊";s:3:"ç€";s:3:"着";s:3:"磌";s:4:"ð¯¥";s:3:"窱";s:3:"窱";s:3:"ç±»";s:3:"类";s:3:"çµ›";s:3:"絛";s:3:"ç¼¾";s:3:"缾";s:3:"è’";s:3:"荒";s:3:"è¯";s:3:"華";s:3:"è¹";s:4:"蝹";s:3:"è¥";s:3:"襁";s:3:"覆";s:3:"覆";s:3:"調";s:3:"調";s:3:"è«‹";s:3:"請";s:3:"è«­";s:4:"ð¯§";s:3:"變";s:4:"變";s:3:"輸";s:4:"輸";s:3:"é²";s:3:"遲";s:3:"醙";s:3:"ï«„";s:3:"鉶";s:3:"ï«…";s:3:"陼";s:3:"陼";s:3:"韛";s:3:"韛";s:3:"é ‹";s:4:"頋";s:3:"鬒";s:4:"鬒";s:4:"𢡊";s:3:"ï«";s:4:"𢡄";s:3:"ï«";s:4:"ð£•";s:3:"ï«‘";s:3:"ã®";s:4:"㮝";s:3:"䀘";s:3:"ï«“";s:3:"䀹";s:4:"䀹";s:4:"𥉉";s:3:"ï«•";s:4:"ð¥³";s:3:"ï«–";s:4:"𧻓";s:3:"ï«—";s:3:"齃";s:3:"齃";s:3:"龎";s:3:"ï«™";s:8:"𑂚";s:4:"ð‘‚š";s:8:"𑂜";s:4:"ð‘‚œ";s:8:"𑂫";s:4:"ð‘‚«";s:3:"丽";s:4:"丽";s:3:"丸";s:4:"ð¯ ";s:3:"ä¹";s:4:"乁";s:4:"ð „¢";s:4:"𠄢";s:3:"ä½ ";s:4:"你";s:3:"ä¾»";s:4:"侻";s:3:"倂";s:4:"倂";s:3:"åº";s:4:"偺";s:3:"å‚™";s:4:"備";s:3:"åƒ";s:4:"像";s:3:"ã’ž";s:4:"㒞";s:4:"𠘺";s:4:"ð¯ ";s:3:"å…”";s:4:"ð¯ ";s:3:"å…¤";s:4:"ð¯ ";s:3:"å…·";s:4:"具";s:4:"𠔜";s:4:"𠔜";s:3:"ã’¹";s:4:"㒹";s:3:"å…§";s:4:"內";s:3:"å†";s:4:"再";s:4:"ð •‹";s:4:"𠕋";s:3:"冗";s:4:"冗";s:3:"冤";s:4:"冤";s:3:"仌";s:4:"仌";s:3:"冬";s:4:"冬";s:4:"𩇟";s:4:"𩇟";s:3:"凵";s:4:"ð¯ ";s:3:"刃";s:4:"刃";s:3:"ã“Ÿ";s:4:"㓟";s:3:"刻";s:4:"刻";s:3:"剆";s:4:"剆";s:3:"割";s:4:"割";s:3:"剷";s:4:"剷";s:3:"㔕";s:4:"㔕";s:3:"包";s:4:"包";s:3:"匆";s:4:"匆";s:3:"å‰";s:4:"卉";s:3:"åš";s:4:"博";s:3:"å³";s:4:"即";s:3:"å½";s:4:"卽";s:3:"å¿";s:4:"卿";s:4:"𠨬";s:4:"𠨬";s:3:"ç°";s:4:"灰";s:3:"åŠ";s:4:"及";s:3:"åŸ";s:4:"叟";s:4:"ð ­£";s:4:"𠭣";s:3:"å«";s:4:"叫";s:3:"å±";s:4:"叱";s:3:"å†";s:4:"吆";s:3:"å’ž";s:4:"咞";s:3:"å¸";s:4:"吸";s:3:"呈";s:4:"呈";s:3:"周";s:4:"周";s:3:"å’¢";s:4:"咢";s:3:"哶";s:4:"ð¯¡";s:3:"å”";s:4:"唐";s:3:"å•“";s:4:"啓";s:3:"å•£";s:4:"啣";s:3:"å–„";s:4:"善";s:3:"å–«";s:4:"喫";s:3:"å–³";s:4:"喳";s:3:"å—‚";s:4:"嗂";s:3:"圖";s:4:"圖";s:3:"圗";s:4:"ð¯¡";s:3:"噑";s:4:"噑";s:3:"å™´";s:4:"ð¯¡";s:3:"壮";s:4:"壮";s:3:"城";s:4:"城";s:3:"埴";s:4:"埴";s:3:"å ";s:4:"堍";s:3:"åž‹";s:4:"型";s:3:"å ²";s:4:"堲";s:3:"å ±";s:4:"報";s:3:"墬";s:4:"墬";s:4:"𡓤";s:4:"𡓤";s:3:"売";s:4:"売";s:3:"壷";s:4:"壷";s:3:"夆";s:4:"夆";s:3:"多";s:4:"ð¯¡";s:3:"夢";s:4:"夢";s:3:"奢";s:4:"奢";s:4:"𡚨";s:4:"𡚨";s:4:"𡛪";s:4:"𡛪";s:3:"姬";s:4:"姬";s:3:"娛";s:4:"娛";s:3:"娧";s:4:"娧";s:3:"姘";s:4:"姘";s:3:"婦";s:4:"婦";s:3:"ã›®";s:4:"㛮";s:3:"㛼";s:4:"㛼";s:3:"嬈";s:4:"嬈";s:3:"嬾";s:4:"嬾";s:4:"𡧈";s:4:"𡧈";s:3:"寃";s:4:"寃";s:3:"寘";s:4:"寘";s:3:"寳";s:4:"寳";s:4:"𡬘";s:4:"𡬘";s:3:"寿";s:4:"寿";s:3:"å°†";s:4:"将";s:3:"当";s:4:"当";s:3:"å°¢";s:4:"尢";s:3:"ãž";s:4:"㞁";s:3:"å± ";s:4:"屠";s:3:"å³€";s:4:"峀";s:3:"å²";s:4:"岍";s:4:"ð¡·¤";s:4:"𡷤";s:3:"嵃";s:4:"嵃";s:4:"ð¡·¦";s:4:"𡷦";s:3:"åµ®";s:4:"嵮";s:3:"嵫";s:4:"嵫";s:3:"åµ¼";s:4:"嵼";s:3:"å·¡";s:4:"ð¯¢";s:3:"å·¢";s:4:"巢";s:3:"ã ¯";s:4:"㠯";s:3:"å·½";s:4:"巽";s:3:"帨";s:4:"帨";s:3:"帽";s:4:"帽";s:3:"幩";s:4:"幩";s:3:"ã¡¢";s:4:"㡢";s:4:"𢆃";s:4:"𢆃";s:3:"㡼";s:4:"㡼";s:3:"庰";s:4:"庰";s:3:"庳";s:4:"庳";s:3:"庶";s:4:"ð¯¢";s:4:"𪎒";s:4:"ð¯¢";s:3:"廾";s:4:"ð¯¢";s:4:"𢌱";s:4:"𢌱";s:3:"èˆ";s:4:"舁";s:3:"å¼¢";s:4:"弢";s:3:"㣇";s:4:"㣇";s:4:"𣊸";s:4:"𣊸";s:4:"𦇚";s:4:"𦇚";s:3:"å½¢";s:4:"形";s:3:"彫";s:4:"彫";s:3:"㣣";s:4:"㣣";s:3:"徚";s:4:"徚";s:3:"å¿";s:4:"ð¯¢";s:3:"å¿—";s:4:"志";s:3:"忹";s:4:"忹";s:3:"æ‚";s:4:"悁";s:3:"㤺";s:4:"㤺";s:3:"㤜";s:4:"㤜";s:4:"𢛔";s:4:"𢛔";s:3:"惇";s:4:"惇";s:3:"æ…ˆ";s:4:"慈";s:3:"æ…Œ";s:4:"慌";s:3:"æ…º";s:4:"慺";s:3:"憲";s:4:"憲";s:3:"憤";s:4:"憤";s:3:"憯";s:4:"憯";s:3:"懞";s:4:"懞";s:3:"æˆ";s:4:"成";s:3:"戛";s:4:"戛";s:3:"æ‰";s:4:"扝";s:3:"抱";s:4:"抱";s:3:"æ‹”";s:4:"拔";s:3:"æ";s:4:"捐";s:4:"𢬌";s:4:"𢬌";s:3:"挽";s:4:"挽";s:3:"拼";s:4:"拼";s:3:"æ¨";s:4:"捨";s:3:"掃";s:4:"掃";s:3:"æ¤";s:4:"揤";s:4:"𢯱";s:4:"𢯱";s:3:"æ¢";s:4:"搢";s:3:"æ…";s:4:"揅";s:3:"掩";s:4:"ð¯£";s:3:"㨮";s:4:"㨮";s:3:"æ‘©";s:4:"摩";s:3:"摾";s:4:"摾";s:3:"æ’";s:4:"撝";s:3:"æ‘·";s:4:"摷";s:3:"㩬";s:4:"㩬";s:3:"敬";s:4:"敬";s:4:"𣀊";s:4:"𣀊";s:3:"æ—£";s:4:"旣";s:3:"書";s:4:"書";s:3:"晉";s:4:"ð¯£";s:3:"㬙";s:4:"㬙";s:3:"㬈";s:4:"ð¯£";s:3:"㫤";s:4:"㫤";s:3:"冒";s:4:"冒";s:3:"冕";s:4:"冕";s:3:"最";s:4:"最";s:3:"æšœ";s:4:"暜";s:3:"è‚­";s:4:"肭";s:3:"ä™";s:4:"䏙";s:3:"朡";s:4:"朡";s:3:"æž";s:4:"杞";s:3:"æ“";s:4:"杓";s:4:"ð£ƒ";s:4:"ð¯£";s:3:"ã­‰";s:4:"㭉";s:3:"柺";s:4:"柺";s:3:"æž…";s:4:"枅";s:3:"æ¡’";s:4:"桒";s:4:"𣑭";s:4:"𣑭";s:3:"梎";s:4:"梎";s:3:"æ Ÿ";s:4:"栟";s:3:"椔";s:4:"椔";s:3:"楂";s:4:"楂";s:3:"榣";s:4:"榣";s:3:"槪";s:4:"槪";s:3:"檨";s:4:"檨";s:4:"𣚣";s:4:"𣚣";s:3:"æ«›";s:4:"櫛";s:3:"ã°˜";s:4:"㰘";s:3:"次";s:4:"次";s:4:"𣢧";s:4:"𣢧";s:3:"æ­”";s:4:"歔";s:3:"㱎";s:4:"㱎";s:3:"æ­²";s:4:"歲";s:3:"殟";s:4:"殟";s:3:"æ®»";s:4:"殻";s:4:"ð£ª";s:4:"𣪍";s:4:"ð¡´‹";s:4:"𡴋";s:4:"𣫺";s:4:"𣫺";s:3:"汎";s:4:"汎";s:4:"𣲼";s:4:"𣲼";s:3:"沿";s:4:"沿";s:3:"æ³";s:4:"泍";s:3:"汧";s:4:"汧";s:3:"æ´–";s:4:"洖";s:3:"æ´¾";s:4:"派";s:3:"浩";s:4:"浩";s:3:"浸";s:4:"浸";s:3:"涅";s:4:"涅";s:4:"𣴞";s:4:"𣴞";s:3:"æ´´";s:4:"洴";s:3:"港";s:4:"港";s:3:"æ¹®";s:4:"湮";s:3:"ã´³";s:4:"㴳";s:3:"滇";s:4:"滇";s:4:"𣻑";s:4:"ð¯¤";s:3:"æ·¹";s:4:"淹";s:3:"æ½®";s:4:"ð¯¤";s:4:"𣽞";s:4:"ð¯¤";s:4:"𣾎";s:4:"𣾎";s:3:"濆";s:4:"濆";s:3:"瀹";s:4:"瀹";s:3:"瀛";s:4:"瀛";s:3:"㶖";s:4:"㶖";s:3:"çŠ";s:4:"灊";s:3:"ç½";s:4:"災";s:3:"ç·";s:4:"灷";s:3:"ç‚­";s:4:"炭";s:4:"𠔥";s:4:"𠔥";s:3:"ç……";s:4:"煅";s:4:"𤉣";s:4:"ð¯¤";s:3:"熜";s:4:"熜";s:4:"𤎫";s:4:"𤎫";s:3:"爨";s:4:"爨";s:3:"ç‰";s:4:"牐";s:4:"𤘈";s:4:"𤘈";s:3:"犀";s:4:"犀";s:3:"犕";s:4:"犕";s:4:"𤜵";s:4:"𤜵";s:4:"𤠔";s:4:"𤠔";s:3:"çº";s:4:"獺";s:3:"王";s:4:"王";s:3:"㺬";s:4:"㺬";s:3:"玥";s:4:"玥";s:3:"㺸";s:4:"㺸";s:3:"瑇";s:4:"瑇";s:3:"ç‘œ";s:4:"瑜";s:3:"ç’…";s:4:"璅";s:3:"ç“Š";s:4:"瓊";s:3:"ã¼›";s:4:"㼛";s:3:"甤";s:4:"甤";s:4:"𤰶";s:4:"𤰶";s:3:"甾";s:4:"甾";s:4:"𤲒";s:4:"𤲒";s:4:"𢆟";s:4:"𢆟";s:3:"ç˜";s:4:"瘐";s:4:"𤾡";s:4:"𤾡";s:4:"𤾸";s:4:"𤾸";s:4:"ð¥„";s:4:"𥁄";s:3:"㿼";s:4:"㿼";s:3:"䀈";s:4:"䀈";s:4:"𥃳";s:4:"ð¯¥";s:4:"𥃲";s:4:"𥃲";s:4:"𥄙";s:4:"𥄙";s:4:"𥄳";s:4:"𥄳";s:3:"眞";s:4:"眞";s:3:"真";s:4:"真";s:3:"çž‹";s:4:"瞋";s:3:"ä†";s:4:"䁆";s:3:"ä‚–";s:4:"䂖";s:4:"ð¥";s:4:"ð¯¥";s:3:"ç¡Ž";s:4:"硎";s:3:"䃣";s:4:"䃣";s:4:"𥘦";s:4:"𥘦";s:4:"𥚚";s:4:"𥚚";s:4:"𥛅";s:4:"𥛅";s:3:"秫";s:4:"秫";s:3:"䄯";s:4:"䄯";s:3:"ç©Š";s:4:"穊";s:3:"ç©";s:4:"穏";s:4:"𥥼";s:4:"𥥼";s:4:"𥪧";s:4:"𥪧";s:3:"ç«®";s:4:"竮";s:3:"䈂";s:4:"䈂";s:4:"𥮫";s:4:"𥮫";s:3:"篆";s:4:"篆";s:3:"築";s:4:"築";s:3:"䈧";s:4:"䈧";s:4:"𥲀";s:4:"𥲀";s:3:"ç³’";s:4:"糒";s:3:"䊠";s:4:"䊠";s:3:"糨";s:4:"糨";s:3:"ç³£";s:4:"糣";s:3:"ç´€";s:4:"紀";s:4:"𥾆";s:4:"𥾆";s:3:"çµ£";s:4:"絣";s:3:"äŒ";s:4:"䌁";s:3:"ç·‡";s:4:"緇";s:3:"縂";s:4:"縂";s:3:"ç¹…";s:4:"繅";s:3:"䌴";s:4:"䌴";s:4:"𦈨";s:4:"𦈨";s:4:"𦉇";s:4:"𦉇";s:3:"ä™";s:4:"䍙";s:4:"𦋙";s:4:"𦋙";s:3:"罺";s:4:"罺";s:4:"𦌾";s:4:"𦌾";s:3:"羕";s:4:"羕";s:3:"翺";s:4:"翺";s:4:"𦓚";s:4:"𦓚";s:4:"𦔣";s:4:"𦔣";s:3:"è ";s:4:"聠";s:4:"𦖨";s:4:"𦖨";s:3:"è°";s:4:"聰";s:4:"ð£Ÿ";s:4:"𣍟";s:3:"ä•";s:4:"ð¯¦";s:3:"育";s:4:"育";s:3:"脃";s:4:"脃";s:3:"ä‹";s:4:"䐋";s:3:"脾";s:4:"脾";s:3:"媵";s:4:"媵";s:4:"𦞧";s:4:"𦞧";s:4:"𦞵";s:4:"𦞵";s:4:"𣎓";s:4:"𣎓";s:4:"𣎜";s:4:"𣎜";s:3:"舄";s:4:"舄";s:3:"辞";s:4:"ð¯¦";s:3:"ä‘«";s:4:"䑫";s:3:"芑";s:4:"ð¯¦";s:3:"芋";s:4:"ð¯¦";s:3:"èŠ";s:4:"芝";s:3:"劳";s:4:"劳";s:3:"花";s:4:"花";s:3:"芳";s:4:"芳";s:3:"芽";s:4:"芽";s:3:"苦";s:4:"苦";s:4:"𦬼";s:4:"𦬼";s:3:"èŒ";s:4:"茝";s:3:"è£";s:4:"荣";s:3:"莭";s:4:"莭";s:3:"茣";s:4:"茣";s:3:"莽";s:4:"ð¯¦";s:3:"è§";s:4:"菧";s:3:"è“";s:4:"荓";s:3:"èŠ";s:4:"菊";s:3:"èŒ";s:4:"菌";s:3:"èœ";s:4:"菜";s:4:"𦰶";s:4:"𦰶";s:4:"𦵫";s:4:"𦵫";s:4:"𦳕";s:4:"𦳕";s:3:"䔫";s:4:"䔫";s:3:"蓱";s:4:"蓱";s:3:"蓳";s:4:"蓳";s:3:"è”–";s:4:"蔖";s:4:"ð§Š";s:4:"𧏊";s:3:"蕤";s:4:"蕤";s:4:"𦼬";s:4:"𦼬";s:3:"ä•";s:4:"䕝";s:3:"ä•¡";s:4:"䕡";s:4:"𦾱";s:4:"𦾱";s:4:"𧃒";s:4:"𧃒";s:3:"ä•«";s:4:"䕫";s:3:"è™";s:4:"虐";s:3:"虧";s:4:"虧";s:3:"虩";s:4:"虩";s:3:"èš©";s:4:"蚩";s:3:"蚈";s:4:"蚈";s:3:"蜎";s:4:"蜎";s:3:"蛢";s:4:"蛢";s:3:"蜨";s:4:"蜨";s:3:"è«";s:4:"蝫";s:3:"螆";s:4:"螆";s:3:"ä——";s:4:"䗗";s:3:"蟡";s:4:"蟡";s:3:"è ";s:4:"ð¯§";s:3:"ä—¹";s:4:"䗹";s:3:"è¡ ";s:4:"衠";s:3:"è¡£";s:4:"衣";s:4:"𧙧";s:4:"𧙧";s:3:"裗";s:4:"裗";s:3:"裞";s:4:"裞";s:3:"䘵";s:4:"䘵";s:3:"裺";s:4:"裺";s:3:"ã’»";s:4:"㒻";s:4:"𧢮";s:4:"𧢮";s:4:"𧥦";s:4:"𧥦";s:3:"äš¾";s:4:"ð¯§";s:3:"䛇";s:4:"䛇";s:3:"誠";s:4:"ð¯§";s:3:"豕";s:4:"豕";s:4:"𧲨";s:4:"𧲨";s:3:"貫";s:4:"貫";s:3:"è³";s:4:"賁";s:3:"è´›";s:4:"贛";s:3:"èµ·";s:4:"起";s:4:"𧼯";s:4:"𧼯";s:4:"ð  „";s:4:"𠠄";s:3:"è·‹";s:4:"跋";s:3:"趼";s:4:"趼";s:3:"è·°";s:4:"跰";s:4:"𠣞";s:4:"ð¯§";s:3:"è»”";s:4:"軔";s:4:"𨗒";s:4:"𨗒";s:4:"𨗭";s:4:"𨗭";s:3:"é‚”";s:4:"邔";s:3:"郱";s:4:"郱";s:3:"é„‘";s:4:"鄑";s:4:"𨜮";s:4:"𨜮";s:3:"é„›";s:4:"鄛";s:3:"鈸";s:4:"鈸";s:3:"é‹—";s:4:"鋗";s:3:"鋘";s:4:"鋘";s:3:"鉼";s:4:"鉼";s:3:"é¹";s:4:"鏹";s:3:"é•";s:4:"鐕";s:4:"𨯺";s:4:"𨯺";s:3:"é–‹";s:4:"開";s:3:"䦕";s:4:"䦕";s:3:"é–·";s:4:"閷";s:4:"𨵷";s:4:"𨵷";s:3:"䧦";s:4:"䧦";s:3:"雃";s:4:"雃";s:3:"嶲";s:4:"嶲";s:3:"霣";s:4:"霣";s:4:"ð©……";s:4:"𩅅";s:4:"𩈚";s:4:"𩈚";s:3:"ä©®";s:4:"䩮";s:3:"䩶";s:4:"䩶";s:3:"韠";s:4:"韠";s:4:"ð©Š";s:4:"𩐊";s:3:"䪲";s:4:"䪲";s:4:"ð©’–";s:4:"𩒖";s:3:"é ©";s:4:"頩";s:4:"ð©–¶";s:4:"ð¯¨";s:3:"飢";s:4:"飢";s:3:"䬳";s:4:"䬳";s:3:"餩";s:4:"餩";s:3:"馧";s:4:"馧";s:3:"駂";s:4:"駂";s:3:"駾";s:4:"駾";s:3:"䯎";s:4:"䯎";s:4:"𩬰";s:4:"𩬰";s:3:"é±€";s:4:"鱀";s:3:"é³½";s:4:"鳽";s:3:"䳎";s:4:"ð¯¨";s:3:"ä³­";s:4:"䳭";s:3:"鵧";s:4:"ð¯¨";s:4:"𪃎";s:4:"ð¯¨";s:3:"䳸";s:4:"䳸";s:4:"𪄅";s:4:"𪄅";s:4:"𪈎";s:4:"𪈎";s:4:"𪊑";s:4:"𪊑";s:3:"麻";s:4:"麻";s:3:"äµ–";s:4:"䵖";s:3:"黹";s:4:"黹";s:3:"黾";s:4:"黾";s:3:"é¼…";s:4:"鼅";s:3:"é¼";s:4:"鼏";s:3:"é¼–";s:4:"鼖";s:3:"é¼»";s:4:"鼻";s:4:"𪘀";s:4:"ð¯¨";}' );
+UtfNormal::$utfCanonicalDecomp = unserialize( 'a:2049:{s:2:"À";s:3:"AÌ€";s:2:"Ã";s:3:"AÌ";s:2:"Â";s:3:"AÌ‚";s:2:"Ã";s:3:"Ã";s:2:"Ä";s:3:"Ä";s:2:"Ã…";s:3:"AÌŠ";s:2:"Ç";s:3:"Ç";s:2:"È";s:3:"EÌ€";s:2:"É";s:3:"EÌ";s:2:"Ê";s:3:"EÌ‚";s:2:"Ë";s:3:"Ë";s:2:"ÃŒ";s:3:"IÌ€";s:2:"Ã";s:3:"IÌ";s:2:"ÃŽ";s:3:"IÌ‚";s:2:"Ã";s:3:"Ï";s:2:"Ñ";s:3:"Ñ";s:2:"Ã’";s:3:"OÌ€";s:2:"Ó";s:3:"OÌ";s:2:"Ô";s:3:"OÌ‚";s:2:"Õ";s:3:"Õ";s:2:"Ö";s:3:"Ö";s:2:"Ù";s:3:"UÌ€";s:2:"Ú";s:3:"UÌ";s:2:"Û";s:3:"UÌ‚";s:2:"Ãœ";s:3:"Ü";s:2:"Ã";s:3:"YÌ";s:2:"à";s:3:"aÌ€";s:2:"á";s:3:"aÌ";s:2:"â";s:3:"aÌ‚";s:2:"ã";s:3:"ã";s:2:"ä";s:3:"ä";s:2:"Ã¥";s:3:"aÌŠ";s:2:"ç";s:3:"ç";s:2:"è";s:3:"eÌ€";s:2:"é";s:3:"eÌ";s:2:"ê";s:3:"eÌ‚";s:2:"ë";s:3:"ë";s:2:"ì";s:3:"iÌ€";s:2:"í";s:3:"iÌ";s:2:"î";s:3:"iÌ‚";s:2:"ï";s:3:"ï";s:2:"ñ";s:3:"ñ";s:2:"ò";s:3:"oÌ€";s:2:"ó";s:3:"oÌ";s:2:"ô";s:3:"oÌ‚";s:2:"õ";s:3:"õ";s:2:"ö";s:3:"ö";s:2:"ù";s:3:"uÌ€";s:2:"ú";s:3:"uÌ";s:2:"û";s:3:"uÌ‚";s:2:"ü";s:3:"ü";s:2:"ý";s:3:"yÌ";s:2:"ÿ";s:3:"ÿ";s:2:"Ä€";s:3:"AÌ„";s:2:"Ä";s:3:"aÌ„";s:2:"Ä‚";s:3:"Ă";s:2:"ă";s:3:"ă";s:2:"Ä„";s:3:"Ą";s:2:"Ä…";s:3:"ą";s:2:"Ć";s:3:"CÌ";s:2:"ć";s:3:"cÌ";s:2:"Ĉ";s:3:"CÌ‚";s:2:"ĉ";s:3:"cÌ‚";s:2:"ÄŠ";s:3:"Ċ";s:2:"Ä‹";s:3:"ċ";s:2:"ÄŒ";s:3:"CÌŒ";s:2:"Ä";s:3:"cÌŒ";s:2:"ÄŽ";s:3:"DÌŒ";s:2:"Ä";s:3:"dÌŒ";s:2:"Ä’";s:3:"EÌ„";s:2:"Ä“";s:3:"eÌ„";s:2:"Ä”";s:3:"Ĕ";s:2:"Ä•";s:3:"ĕ";s:2:"Ä–";s:3:"Ė";s:2:"Ä—";s:3:"ė";s:2:"Ę";s:3:"Ę";s:2:"Ä™";s:3:"ę";s:2:"Äš";s:3:"EÌŒ";s:2:"Ä›";s:3:"eÌŒ";s:2:"Äœ";s:3:"GÌ‚";s:2:"Ä";s:3:"gÌ‚";s:2:"Äž";s:3:"Ğ";s:2:"ÄŸ";s:3:"ğ";s:2:"Ä ";s:3:"Ġ";s:2:"Ä¡";s:3:"ġ";s:2:"Ä¢";s:3:"Ģ";s:2:"Ä£";s:3:"ģ";s:2:"Ĥ";s:3:"HÌ‚";s:2:"Ä¥";s:3:"hÌ‚";s:2:"Ĩ";s:3:"Ĩ";s:2:"Ä©";s:3:"ĩ";s:2:"Ī";s:3:"IÌ„";s:2:"Ä«";s:3:"iÌ„";s:2:"Ĭ";s:3:"Ĭ";s:2:"Ä­";s:3:"ĭ";s:2:"Ä®";s:3:"Į";s:2:"į";s:3:"į";s:2:"Ä°";s:3:"İ";s:2:"Ä´";s:3:"JÌ‚";s:2:"ĵ";s:3:"jÌ‚";s:2:"Ķ";s:3:"Ķ";s:2:"Ä·";s:3:"ķ";s:2:"Ĺ";s:3:"LÌ";s:2:"ĺ";s:3:"lÌ";s:2:"Ä»";s:3:"Ļ";s:2:"ļ";s:3:"ļ";s:2:"Ľ";s:3:"LÌŒ";s:2:"ľ";s:3:"lÌŒ";s:2:"Ń";s:3:"NÌ";s:2:"Å„";s:3:"nÌ";s:2:"Å…";s:3:"Ņ";s:2:"ņ";s:3:"ņ";s:2:"Ň";s:3:"NÌŒ";s:2:"ň";s:3:"nÌŒ";s:2:"ÅŒ";s:3:"OÌ„";s:2:"Å";s:3:"oÌ„";s:2:"ÅŽ";s:3:"Ŏ";s:2:"Å";s:3:"ŏ";s:2:"Å";s:3:"OÌ‹";s:2:"Å‘";s:3:"oÌ‹";s:2:"Å”";s:3:"RÌ";s:2:"Å•";s:3:"rÌ";s:2:"Å–";s:3:"Ŗ";s:2:"Å—";s:3:"ŗ";s:2:"Ř";s:3:"RÌŒ";s:2:"Å™";s:3:"rÌŒ";s:2:"Åš";s:3:"SÌ";s:2:"Å›";s:3:"sÌ";s:2:"Åœ";s:3:"SÌ‚";s:2:"Å";s:3:"sÌ‚";s:2:"Åž";s:3:"Ş";s:2:"ÅŸ";s:3:"ş";s:2:"Å ";s:3:"SÌŒ";s:2:"Å¡";s:3:"sÌŒ";s:2:"Å¢";s:3:"Ţ";s:2:"Å£";s:3:"ţ";s:2:"Ť";s:3:"TÌŒ";s:2:"Å¥";s:3:"tÌŒ";s:2:"Ũ";s:3:"Ũ";s:2:"Å©";s:3:"ũ";s:2:"Ū";s:3:"UÌ„";s:2:"Å«";s:3:"uÌ„";s:2:"Ŭ";s:3:"Ŭ";s:2:"Å­";s:3:"ŭ";s:2:"Å®";s:3:"UÌŠ";s:2:"ů";s:3:"uÌŠ";s:2:"Å°";s:3:"UÌ‹";s:2:"ű";s:3:"uÌ‹";s:2:"Ų";s:3:"Ų";s:2:"ų";s:3:"ų";s:2:"Å´";s:3:"WÌ‚";s:2:"ŵ";s:3:"wÌ‚";s:2:"Ŷ";s:3:"YÌ‚";s:2:"Å·";s:3:"yÌ‚";s:2:"Ÿ";s:3:"Ÿ";s:2:"Ź";s:3:"ZÌ";s:2:"ź";s:3:"zÌ";s:2:"Å»";s:3:"Ż";s:2:"ż";s:3:"ż";s:2:"Ž";s:3:"ZÌŒ";s:2:"ž";s:3:"zÌŒ";s:2:"Æ ";s:3:"OÌ›";s:2:"Æ¡";s:3:"oÌ›";s:2:"Ư";s:3:"UÌ›";s:2:"Æ°";s:3:"uÌ›";s:2:"Ç";s:3:"AÌŒ";s:2:"ÇŽ";s:3:"aÌŒ";s:2:"Ç";s:3:"IÌŒ";s:2:"Ç";s:3:"iÌŒ";s:2:"Ç‘";s:3:"OÌŒ";s:2:"Ç’";s:3:"oÌŒ";s:2:"Ç“";s:3:"UÌŒ";s:2:"Ç”";s:3:"uÌŒ";s:2:"Ç•";s:5:"Ǖ";s:2:"Ç–";s:5:"ǖ";s:2:"Ç—";s:5:"ÜÌ";s:2:"ǘ";s:5:"üÌ";s:2:"Ç™";s:5:"Ǚ";s:2:"Çš";s:5:"ǚ";s:2:"Ç›";s:5:"Ǜ";s:2:"Çœ";s:5:"ǜ";s:2:"Çž";s:5:"Ǟ";s:2:"ÇŸ";s:5:"ǟ";s:2:"Ç ";s:5:"Ǡ";s:2:"Ç¡";s:5:"ǡ";s:2:"Ç¢";s:4:"Ǣ";s:2:"Ç£";s:4:"ǣ";s:2:"Ǧ";s:3:"GÌŒ";s:2:"ǧ";s:3:"gÌŒ";s:2:"Ǩ";s:3:"KÌŒ";s:2:"Ç©";s:3:"kÌŒ";s:2:"Ǫ";s:3:"Ǫ";s:2:"Ç«";s:3:"ǫ";s:2:"Ǭ";s:5:"Ǭ";s:2:"Ç­";s:5:"ǭ";s:2:"Ç®";s:4:"Æ·ÌŒ";s:2:"ǯ";s:4:"Ê’ÌŒ";s:2:"Ç°";s:3:"jÌŒ";s:2:"Ç´";s:3:"GÌ";s:2:"ǵ";s:3:"gÌ";s:2:"Ǹ";s:3:"NÌ€";s:2:"ǹ";s:3:"nÌ€";s:2:"Ǻ";s:5:"AÌŠÌ";s:2:"Ç»";s:5:"aÌŠÌ";s:2:"Ǽ";s:4:"ÆÌ";s:2:"ǽ";s:4:"æÌ";s:2:"Ǿ";s:4:"ØÌ";s:2:"Ç¿";s:4:"øÌ";s:2:"È€";s:3:"AÌ";s:2:"È";s:3:"aÌ";s:2:"È‚";s:3:"AÌ‘";s:2:"ȃ";s:3:"aÌ‘";s:2:"È„";s:3:"EÌ";s:2:"È…";s:3:"eÌ";s:2:"Ȇ";s:3:"EÌ‘";s:2:"ȇ";s:3:"eÌ‘";s:2:"Ȉ";s:3:"IÌ";s:2:"ȉ";s:3:"iÌ";s:2:"ÈŠ";s:3:"IÌ‘";s:2:"È‹";s:3:"iÌ‘";s:2:"ÈŒ";s:3:"OÌ";s:2:"È";s:3:"oÌ";s:2:"ÈŽ";s:3:"OÌ‘";s:2:"È";s:3:"oÌ‘";s:2:"È";s:3:"RÌ";s:2:"È‘";s:3:"rÌ";s:2:"È’";s:3:"RÌ‘";s:2:"È“";s:3:"rÌ‘";s:2:"È”";s:3:"UÌ";s:2:"È•";s:3:"uÌ";s:2:"È–";s:3:"UÌ‘";s:2:"È—";s:3:"uÌ‘";s:2:"Ș";s:3:"Ș";s:2:"È™";s:3:"ș";s:2:"Èš";s:3:"Ț";s:2:"È›";s:3:"ț";s:2:"Èž";s:3:"HÌŒ";s:2:"ÈŸ";s:3:"hÌŒ";s:2:"Ȧ";s:3:"Ȧ";s:2:"ȧ";s:3:"ȧ";s:2:"Ȩ";s:3:"Ȩ";s:2:"È©";s:3:"ȩ";s:2:"Ȫ";s:5:"Ȫ";s:2:"È«";s:5:"ȫ";s:2:"Ȭ";s:5:"Ȭ";s:2:"È­";s:5:"ȭ";s:2:"È®";s:3:"Ȯ";s:2:"ȯ";s:3:"ȯ";s:2:"È°";s:5:"Ȱ";s:2:"ȱ";s:5:"ȱ";s:2:"Ȳ";s:3:"YÌ„";s:2:"ȳ";s:3:"yÌ„";s:2:"Í€";s:2:"Ì€";s:2:"Í";s:2:"Ì";s:2:"̓";s:2:"Ì“";s:2:"Í„";s:4:"̈Ì";s:2:"Í´";s:2:"ʹ";s:2:";";s:1:";";s:2:"Î…";s:4:"¨Ì";s:2:"Ά";s:4:"ΑÌ";s:2:"·";s:2:"·";s:2:"Έ";s:4:"ΕÌ";s:2:"Ή";s:4:"ΗÌ";s:2:"Ί";s:4:"ΙÌ";s:2:"ÎŒ";s:4:"ΟÌ";s:2:"ÎŽ";s:4:"Î¥Ì";s:2:"Î";s:4:"ΩÌ";s:2:"Î";s:6:"ϊÌ";s:2:"Ϊ";s:4:"Ϊ";s:2:"Ϋ";s:4:"Ϋ";s:2:"ά";s:4:"αÌ";s:2:"έ";s:4:"εÌ";s:2:"ή";s:4:"ηÌ";s:2:"ί";s:4:"ιÌ";s:2:"ΰ";s:6:"ϋÌ";s:2:"ÏŠ";s:4:"ϊ";s:2:"Ï‹";s:4:"ϋ";s:2:"ÏŒ";s:4:"οÌ";s:2:"Ï";s:4:"Ï…Ì";s:2:"ÏŽ";s:4:"ωÌ";s:2:"Ï“";s:4:"Ï’Ì";s:2:"Ï”";s:4:"ϔ";s:2:"Ѐ";s:4:"Ѐ";s:2:"Ð";s:4:"Ё";s:2:"Ѓ";s:4:"ГÌ";s:2:"Ї";s:4:"Ї";s:2:"ÐŒ";s:4:"КÌ";s:2:"Ð";s:4:"Ѝ";s:2:"ÐŽ";s:4:"Ў";s:2:"Й";s:4:"Й";s:2:"й";s:4:"й";s:2:"Ñ";s:4:"ѐ";s:2:"Ñ‘";s:4:"ё";s:2:"Ñ“";s:4:"гÌ";s:2:"Ñ—";s:4:"ї";s:2:"Ñœ";s:4:"кÌ";s:2:"Ñ";s:4:"ѝ";s:2:"Ñž";s:4:"ў";s:2:"Ѷ";s:4:"Ñ´Ì";s:2:"Ñ·";s:4:"ѵÌ";s:2:"Ó";s:4:"Ӂ";s:2:"Ó‚";s:4:"ӂ";s:2:"Ó";s:4:"Ð̆";s:2:"Ó‘";s:4:"ӑ";s:2:"Ó’";s:4:"Ð̈";s:2:"Ó“";s:4:"ӓ";s:2:"Ó–";s:4:"Ӗ";s:2:"Ó—";s:4:"ӗ";s:2:"Óš";s:4:"Ӛ";s:2:"Ó›";s:4:"ӛ";s:2:"Óœ";s:4:"Ӝ";s:2:"Ó";s:4:"ӝ";s:2:"Óž";s:4:"Ӟ";s:2:"ÓŸ";s:4:"ӟ";s:2:"Ó¢";s:4:"Ӣ";s:2:"Ó£";s:4:"ӣ";s:2:"Ó¤";s:4:"Ӥ";s:2:"Ó¥";s:4:"ӥ";s:2:"Ó¦";s:4:"Ӧ";s:2:"Ó§";s:4:"ӧ";s:2:"Óª";s:4:"Ӫ";s:2:"Ó«";s:4:"ӫ";s:2:"Ó¬";s:4:"Ӭ";s:2:"Ó­";s:4:"Ñ̈";s:2:"Ó®";s:4:"Ӯ";s:2:"Ó¯";s:4:"ӯ";s:2:"Ó°";s:4:"Ӱ";s:2:"Ó±";s:4:"ӱ";s:2:"Ó²";s:4:"Ӳ";s:2:"Ó³";s:4:"ӳ";s:2:"Ó´";s:4:"Ӵ";s:2:"Óµ";s:4:"ӵ";s:2:"Ó¸";s:4:"Ӹ";s:2:"Ó¹";s:4:"ӹ";s:2:"Ø¢";s:4:"آ";s:2:"Ø£";s:4:"أ";s:2:"ؤ";s:4:"ÙˆÙ”";s:2:"Ø¥";s:4:"إ";s:2:"ئ";s:4:"ÙŠÙ”";s:2:"Û€";s:4:"Û•Ù”";s:2:"Û‚";s:4:"ÛÙ”";s:2:"Û“";s:4:"Û’Ù”";s:3:"ऩ";s:6:"ऩ";s:3:"ऱ";s:6:"ऱ";s:3:"ऴ";s:6:"ऴ";s:3:"क़";s:6:"क़";s:3:"ख़";s:6:"ख़";s:3:"ग़";s:6:"ग़";s:3:"ज़";s:6:"ज़";s:3:"ड़";s:6:"ड़";s:3:"à¥";s:6:"ढ़";s:3:"फ़";s:6:"फ़";s:3:"य़";s:6:"य़";s:3:"ো";s:6:"ো";s:3:"ৌ";s:6:"ৌ";s:3:"ড়";s:6:"ড়";s:3:"à§";s:6:"ঢ়";s:3:"য়";s:6:"য়";s:3:"ਲ਼";s:6:"ਲ਼";s:3:"ਸ਼";s:6:"ਸ਼";s:3:"à©™";s:6:"ਖ਼";s:3:"à©š";s:6:"ਗ਼";s:3:"à©›";s:6:"ਜ਼";s:3:"à©ž";s:6:"ਫ਼";s:3:"à­ˆ";s:6:"ୈ";s:3:"à­‹";s:6:"ୋ";s:3:"à­Œ";s:6:"ୌ";s:3:"à­œ";s:6:"ଡ଼";s:3:"à­";s:6:"ଢ଼";s:3:"à®”";s:6:"ஔ";s:3:"ொ";s:6:"ொ";s:3:"ோ";s:6:"ோ";s:3:"ௌ";s:6:"ௌ";s:3:"ై";s:6:"ై";s:3:"à³€";s:6:"ೀ";s:3:"ೇ";s:6:"ೇ";s:3:"ೈ";s:6:"ೈ";s:3:"ೊ";s:6:"ೊ";s:3:"ೋ";s:9:"ೋ";s:3:"ൊ";s:6:"ൊ";s:3:"ോ";s:6:"ോ";s:3:"ൌ";s:6:"ൌ";s:3:"à·š";s:6:"ේ";s:3:"à·œ";s:6:"à·™à·";s:3:"à·";s:9:"à·™à·à·Š";s:3:"à·ž";s:6:"ෞ";s:3:"གྷ";s:6:"གྷ";s:3:"à½";s:6:"ཌྷ";s:3:"དྷ";s:6:"དྷ";s:3:"བྷ";s:6:"བྷ";s:3:"ཛྷ";s:6:"ཛྷ";s:3:"ཀྵ";s:6:"ཀྵ";s:3:"ཱི";s:6:"ཱི";s:3:"ཱུ";s:6:"ཱུ";s:3:"ྲྀ";s:6:"ྲྀ";s:3:"ླྀ";s:6:"ླྀ";s:3:"à¾";s:6:"ཱྀ";s:3:"ྒྷ";s:6:"ྒྷ";s:3:"à¾";s:6:"ྜྷ";s:3:"ྡྷ";s:6:"ྡྷ";s:3:"ྦྷ";s:6:"ྦྷ";s:3:"ྫྷ";s:6:"ྫྷ";s:3:"ྐྵ";s:6:"à¾à¾µ";s:3:"ဦ";s:6:"ဦ";s:3:"ᬆ";s:6:"ᬆ";s:3:"ᬈ";s:6:"ᬈ";s:3:"ᬊ";s:6:"ᬊ";s:3:"ᬌ";s:6:"ᬌ";s:3:"ᬎ";s:6:"á¬á¬µ";s:3:"ᬒ";s:6:"ᬒ";s:3:"ᬻ";s:6:"ᬻ";s:3:"ᬽ";s:6:"ᬽ";s:3:"á­€";s:6:"ᭀ";s:3:"á­";s:6:"ᭁ";s:3:"á­ƒ";s:6:"ᭃ";s:3:"Ḁ";s:3:"AÌ¥";s:3:"á¸";s:3:"aÌ¥";s:3:"Ḃ";s:3:"Ḃ";s:3:"ḃ";s:3:"ḃ";s:3:"Ḅ";s:3:"BÌ£";s:3:"ḅ";s:3:"bÌ£";s:3:"Ḇ";s:3:"Ḇ";s:3:"ḇ";s:3:"ḇ";s:3:"Ḉ";s:5:"ÇÌ";s:3:"ḉ";s:5:"çÌ";s:3:"Ḋ";s:3:"Ḋ";s:3:"ḋ";s:3:"ḋ";s:3:"Ḍ";s:3:"DÌ£";s:3:"á¸";s:3:"dÌ£";s:3:"Ḏ";s:3:"Ḏ";s:3:"á¸";s:3:"ḏ";s:3:"á¸";s:3:"Ḑ";s:3:"ḑ";s:3:"ḑ";s:3:"Ḓ";s:3:"DÌ­";s:3:"ḓ";s:3:"dÌ­";s:3:"Ḕ";s:5:"EÌ„Ì€";s:3:"ḕ";s:5:"eÌ„Ì€";s:3:"Ḗ";s:5:"EÌ„Ì";s:3:"ḗ";s:5:"eÌ„Ì";s:3:"Ḙ";s:3:"EÌ­";s:3:"ḙ";s:3:"eÌ­";s:3:"Ḛ";s:3:"EÌ°";s:3:"ḛ";s:3:"eÌ°";s:3:"Ḝ";s:5:"Ḝ";s:3:"á¸";s:5:"ḝ";s:3:"Ḟ";s:3:"Ḟ";s:3:"ḟ";s:3:"ḟ";s:3:"Ḡ";s:3:"GÌ„";s:3:"ḡ";s:3:"gÌ„";s:3:"Ḣ";s:3:"Ḣ";s:3:"ḣ";s:3:"ḣ";s:3:"Ḥ";s:3:"HÌ£";s:3:"ḥ";s:3:"hÌ£";s:3:"Ḧ";s:3:"Ḧ";s:3:"ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"Ḩ";s:3:"ḩ";s:3:"ḩ";s:3:"Ḫ";s:3:"HÌ®";s:3:"ḫ";s:3:"hÌ®";s:3:"Ḭ";s:3:"IÌ°";s:3:"ḭ";s:3:"iÌ°";s:3:"Ḯ";s:5:"ÏÌ";s:3:"ḯ";s:5:"ïÌ";s:3:"Ḱ";s:3:"KÌ";s:3:"ḱ";s:3:"kÌ";s:3:"Ḳ";s:3:"KÌ£";s:3:"ḳ";s:3:"kÌ£";s:3:"Ḵ";s:3:"Ḵ";s:3:"ḵ";s:3:"ḵ";s:3:"Ḷ";s:3:"LÌ£";s:3:"ḷ";s:3:"lÌ£";s:3:"Ḹ";s:5:"Ḹ";s:3:"ḹ";s:5:"ḹ";s:3:"Ḻ";s:3:"Ḻ";s:3:"ḻ";s:3:"ḻ";s:3:"Ḽ";s:3:"LÌ­";s:3:"ḽ";s:3:"lÌ­";s:3:"Ḿ";s:3:"MÌ";s:3:"ḿ";s:3:"mÌ";s:3:"á¹€";s:3:"Ṁ";s:3:"á¹";s:3:"ṁ";s:3:"Ṃ";s:3:"MÌ£";s:3:"ṃ";s:3:"mÌ£";s:3:"Ṅ";s:3:"Ṅ";s:3:"á¹…";s:3:"ṅ";s:3:"Ṇ";s:3:"NÌ£";s:3:"ṇ";s:3:"nÌ£";s:3:"Ṉ";s:3:"Ṉ";s:3:"ṉ";s:3:"ṉ";s:3:"Ṋ";s:3:"NÌ­";s:3:"ṋ";s:3:"nÌ­";s:3:"Ṍ";s:5:"ÕÌ";s:3:"á¹";s:5:"õÌ";s:3:"Ṏ";s:5:"Ṏ";s:3:"á¹";s:5:"ṏ";s:3:"á¹";s:5:"OÌ„Ì€";s:3:"ṑ";s:5:"oÌ„Ì€";s:3:"á¹’";s:5:"OÌ„Ì";s:3:"ṓ";s:5:"oÌ„Ì";s:3:"á¹”";s:3:"PÌ";s:3:"ṕ";s:3:"pÌ";s:3:"á¹–";s:3:"Ṗ";s:3:"á¹—";s:3:"ṗ";s:3:"Ṙ";s:3:"Ṙ";s:3:"á¹™";s:3:"ṙ";s:3:"Ṛ";s:3:"RÌ£";s:3:"á¹›";s:3:"rÌ£";s:3:"Ṝ";s:5:"Ṝ";s:3:"á¹";s:5:"ṝ";s:3:"Ṟ";s:3:"Ṟ";s:3:"ṟ";s:3:"ṟ";s:3:"á¹ ";s:3:"Ṡ";s:3:"ṡ";s:3:"ṡ";s:3:"á¹¢";s:3:"SÌ£";s:3:"á¹£";s:3:"sÌ£";s:3:"Ṥ";s:5:"SÌ̇";s:3:"á¹¥";s:5:"sÌ̇";s:3:"Ṧ";s:5:"Ṧ";s:3:"ṧ";s:5:"ṧ";s:3:"Ṩ";s:5:"Ṩ";s:3:"ṩ";s:5:"ṩ";s:3:"Ṫ";s:3:"Ṫ";s:3:"ṫ";s:3:"ṫ";s:3:"Ṭ";s:3:"TÌ£";s:3:"á¹­";s:3:"tÌ£";s:3:"á¹®";s:3:"Ṯ";s:3:"ṯ";s:3:"ṯ";s:3:"á¹°";s:3:"TÌ­";s:3:"á¹±";s:3:"tÌ­";s:3:"á¹²";s:3:"Ṳ";s:3:"á¹³";s:3:"ṳ";s:3:"á¹´";s:3:"UÌ°";s:3:"á¹µ";s:3:"uÌ°";s:3:"Ṷ";s:3:"UÌ­";s:3:"á¹·";s:3:"uÌ­";s:3:"Ṹ";s:5:"ŨÌ";s:3:"á¹¹";s:5:"ũÌ";s:3:"Ṻ";s:5:"Ṻ";s:3:"á¹»";s:5:"ṻ";s:3:"á¹¼";s:3:"Ṽ";s:3:"á¹½";s:3:"ṽ";s:3:"á¹¾";s:3:"VÌ£";s:3:"ṿ";s:3:"vÌ£";s:3:"Ẁ";s:3:"WÌ€";s:3:"áº";s:3:"wÌ€";s:3:"Ẃ";s:3:"WÌ";s:3:"ẃ";s:3:"wÌ";s:3:"Ẅ";s:3:"Ẅ";s:3:"ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"Ẇ";s:3:"ẇ";s:3:"ẇ";s:3:"Ẉ";s:3:"WÌ£";s:3:"ẉ";s:3:"wÌ£";s:3:"Ẋ";s:3:"Ẋ";s:3:"ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"Ẍ";s:3:"áº";s:3:"ẍ";s:3:"Ẏ";s:3:"Ẏ";s:3:"áº";s:3:"ẏ";s:3:"áº";s:3:"ZÌ‚";s:3:"ẑ";s:3:"zÌ‚";s:3:"Ẓ";s:3:"ZÌ£";s:3:"ẓ";s:3:"zÌ£";s:3:"Ẕ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẕ";s:3:"ẖ";s:3:"ẖ";s:3:"ẗ";s:3:"ẗ";s:3:"ẘ";s:3:"wÌŠ";s:3:"ẙ";s:3:"yÌŠ";s:3:"ẛ";s:4:"ẛ";s:3:"Ạ";s:3:"AÌ£";s:3:"ạ";s:3:"aÌ£";s:3:"Ả";s:3:"Ả";s:3:"ả";s:3:"ả";s:3:"Ấ";s:5:"AÌ‚Ì";s:3:"ấ";s:5:"aÌ‚Ì";s:3:"Ầ";s:5:"AÌ‚Ì€";s:3:"ầ";s:5:"aÌ‚Ì€";s:3:"Ẩ";s:5:"Ẩ";s:3:"ẩ";s:5:"ẩ";s:3:"Ẫ";s:5:"Ẫ";s:3:"ẫ";s:5:"ẫ";s:3:"Ậ";s:5:"Ậ";s:3:"ậ";s:5:"ậ";s:3:"Ắ";s:5:"ĂÌ";s:3:"ắ";s:5:"ăÌ";s:3:"Ằ";s:5:"Ằ";s:3:"ằ";s:5:"ằ";s:3:"Ẳ";s:5:"Ẳ";s:3:"ẳ";s:5:"ẳ";s:3:"Ẵ";s:5:"Ẵ";s:3:"ẵ";s:5:"ẵ";s:3:"Ặ";s:5:"Ặ";s:3:"ặ";s:5:"ặ";s:3:"Ẹ";s:3:"EÌ£";s:3:"ẹ";s:3:"eÌ£";s:3:"Ẻ";s:3:"Ẻ";s:3:"ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"Ẽ";s:3:"ẽ";s:3:"ẽ";s:3:"Ế";s:5:"EÌ‚Ì";s:3:"ế";s:5:"eÌ‚Ì";s:3:"Ề";s:5:"EÌ‚Ì€";s:3:"á»";s:5:"eÌ‚Ì€";s:3:"Ể";s:5:"Ể";s:3:"ể";s:5:"ể";s:3:"Ễ";s:5:"Ễ";s:3:"á»…";s:5:"ễ";s:3:"Ệ";s:5:"Ệ";s:3:"ệ";s:5:"ệ";s:3:"Ỉ";s:3:"Ỉ";s:3:"ỉ";s:3:"ỉ";s:3:"Ị";s:3:"IÌ£";s:3:"ị";s:3:"iÌ£";s:3:"Ọ";s:3:"OÌ£";s:3:"á»";s:3:"oÌ£";s:3:"Ỏ";s:3:"Ỏ";s:3:"á»";s:3:"ỏ";s:3:"á»";s:5:"OÌ‚Ì";s:3:"ố";s:5:"oÌ‚Ì";s:3:"á»’";s:5:"OÌ‚Ì€";s:3:"ồ";s:5:"oÌ‚Ì€";s:3:"á»”";s:5:"Ổ";s:3:"ổ";s:5:"ổ";s:3:"á»–";s:5:"Ỗ";s:3:"á»—";s:5:"ỗ";s:3:"Ộ";s:5:"Ộ";s:3:"á»™";s:5:"ộ";s:3:"Ớ";s:5:"OÌ›Ì";s:3:"á»›";s:5:"oÌ›Ì";s:3:"Ờ";s:5:"Ờ";s:3:"á»";s:5:"ờ";s:3:"Ở";s:5:"Ở";s:3:"ở";s:5:"ở";s:3:"á» ";s:5:"Ỡ";s:3:"ỡ";s:5:"ỡ";s:3:"Ợ";s:5:"Ợ";s:3:"ợ";s:5:"ợ";s:3:"Ụ";s:3:"UÌ£";s:3:"ụ";s:3:"uÌ£";s:3:"Ủ";s:3:"Ủ";s:3:"ủ";s:3:"ủ";s:3:"Ứ";s:5:"UÌ›Ì";s:3:"ứ";s:5:"uÌ›Ì";s:3:"Ừ";s:5:"Ừ";s:3:"ừ";s:5:"ừ";s:3:"Ử";s:5:"Ử";s:3:"á»­";s:5:"ử";s:3:"á»®";s:5:"Ữ";s:3:"ữ";s:5:"ữ";s:3:"á»°";s:5:"Ự";s:3:"á»±";s:5:"ự";s:3:"Ỳ";s:3:"YÌ€";s:3:"ỳ";s:3:"yÌ€";s:3:"á»´";s:3:"YÌ£";s:3:"ỵ";s:3:"yÌ£";s:3:"Ỷ";s:3:"Ỷ";s:3:"á»·";s:3:"ỷ";s:3:"Ỹ";s:3:"Ỹ";s:3:"ỹ";s:3:"ỹ";s:3:"á¼€";s:4:"ἀ";s:3:"á¼";s:4:"ἁ";s:3:"ἂ";s:6:"ἂ";s:3:"ἃ";s:6:"ἃ";s:3:"ἄ";s:6:"ἀÌ";s:3:"á¼…";s:6:"ἁÌ";s:3:"ἆ";s:6:"ἆ";s:3:"ἇ";s:6:"ἇ";s:3:"Ἀ";s:4:"Ἀ";s:3:"Ἁ";s:4:"Ἁ";s:3:"Ἂ";s:6:"Ἂ";s:3:"Ἃ";s:6:"Ἃ";s:3:"Ἄ";s:6:"ἈÌ";s:3:"á¼";s:6:"ἉÌ";s:3:"Ἆ";s:6:"Ἆ";s:3:"á¼";s:6:"Ἇ";s:3:"á¼";s:4:"ἐ";s:3:"ἑ";s:4:"ἑ";s:3:"á¼’";s:6:"ἒ";s:3:"ἓ";s:6:"ἓ";s:3:"á¼”";s:6:"ἐÌ";s:3:"ἕ";s:6:"ἑÌ";s:3:"Ἐ";s:4:"Ἐ";s:3:"á¼™";s:4:"Ἑ";s:3:"Ἒ";s:6:"Ἒ";s:3:"á¼›";s:6:"Ἓ";s:3:"Ἔ";s:6:"ἘÌ";s:3:"á¼";s:6:"ἙÌ";s:3:"á¼ ";s:4:"ἠ";s:3:"ἡ";s:4:"ἡ";s:3:"á¼¢";s:6:"ἢ";s:3:"á¼£";s:6:"ἣ";s:3:"ἤ";s:6:"ἠÌ";s:3:"á¼¥";s:6:"ἡÌ";s:3:"ἦ";s:6:"ἦ";s:3:"ἧ";s:6:"ἧ";s:3:"Ἠ";s:4:"Ἠ";s:3:"Ἡ";s:4:"Ἡ";s:3:"Ἢ";s:6:"Ἢ";s:3:"Ἣ";s:6:"Ἣ";s:3:"Ἤ";s:6:"ἨÌ";s:3:"á¼­";s:6:"ἩÌ";s:3:"á¼®";s:6:"Ἦ";s:3:"Ἧ";s:6:"Ἧ";s:3:"á¼°";s:4:"ἰ";s:3:"á¼±";s:4:"ἱ";s:3:"á¼²";s:6:"ἲ";s:3:"á¼³";s:6:"ἳ";s:3:"á¼´";s:6:"ἰÌ";s:3:"á¼µ";s:6:"ἱÌ";s:3:"ἶ";s:6:"ἶ";s:3:"á¼·";s:6:"ἷ";s:3:"Ἰ";s:4:"Ἰ";s:3:"á¼¹";s:4:"Ἱ";s:3:"Ἲ";s:6:"Ἲ";s:3:"á¼»";s:6:"Ἳ";s:3:"á¼¼";s:6:"ἸÌ";s:3:"á¼½";s:6:"ἹÌ";s:3:"á¼¾";s:6:"Ἶ";s:3:"Ἷ";s:6:"Ἷ";s:3:"á½€";s:4:"ὀ";s:3:"á½";s:4:"ὁ";s:3:"ὂ";s:6:"ὂ";s:3:"ὃ";s:6:"ὃ";s:3:"ὄ";s:6:"ὀÌ";s:3:"á½…";s:6:"ὁÌ";s:3:"Ὀ";s:4:"Ὀ";s:3:"Ὁ";s:4:"Ὁ";s:3:"Ὂ";s:6:"Ὂ";s:3:"Ὃ";s:6:"Ὃ";s:3:"Ὄ";s:6:"ὈÌ";s:3:"á½";s:6:"ὉÌ";s:3:"á½";s:4:"Ï…Ì“";s:3:"ὑ";s:4:"Ï…Ì”";s:3:"á½’";s:6:"Ï…Ì“Ì€";s:3:"ὓ";s:6:"ὓ";s:3:"á½”";s:6:"Ï…Ì“Ì";s:3:"ὕ";s:6:"Ï…Ì”Ì";s:3:"á½–";s:6:"Ï…Ì“Í‚";s:3:"á½—";s:6:"ὗ";s:3:"á½™";s:4:"Ὑ";s:3:"á½›";s:6:"Ὓ";s:3:"á½";s:6:"ὙÌ";s:3:"Ὗ";s:6:"Ὗ";s:3:"á½ ";s:4:"ὠ";s:3:"ὡ";s:4:"ὡ";s:3:"á½¢";s:6:"ὢ";s:3:"á½£";s:6:"ὣ";s:3:"ὤ";s:6:"ὠÌ";s:3:"á½¥";s:6:"ὡÌ";s:3:"ὦ";s:6:"ὦ";s:3:"ὧ";s:6:"ὧ";s:3:"Ὠ";s:4:"Ὠ";s:3:"Ὡ";s:4:"Ὡ";s:3:"Ὢ";s:6:"Ὢ";s:3:"Ὣ";s:6:"Ὣ";s:3:"Ὤ";s:6:"ὨÌ";s:3:"á½­";s:6:"ὩÌ";s:3:"á½®";s:6:"Ὦ";s:3:"Ὧ";s:6:"Ὧ";s:3:"á½°";s:4:"ὰ";s:3:"á½±";s:4:"αÌ";s:3:"á½²";s:4:"ὲ";s:3:"á½³";s:4:"εÌ";s:3:"á½´";s:4:"ὴ";s:3:"á½µ";s:4:"ηÌ";s:3:"ὶ";s:4:"ὶ";s:3:"á½·";s:4:"ιÌ";s:3:"ὸ";s:4:"ὸ";s:3:"á½¹";s:4:"οÌ";s:3:"ὺ";s:4:"Ï…Ì€";s:3:"á½»";s:4:"Ï…Ì";s:3:"á½¼";s:4:"ὼ";s:3:"á½½";s:4:"ωÌ";s:3:"á¾€";s:6:"ᾀ";s:3:"á¾";s:6:"ᾁ";s:3:"ᾂ";s:8:"ᾂ";s:3:"ᾃ";s:8:"ᾃ";s:3:"ᾄ";s:8:"ἀÌÍ…";s:3:"á¾…";s:8:"ἁÌÍ…";s:3:"ᾆ";s:8:"ᾆ";s:3:"ᾇ";s:8:"ᾇ";s:3:"ᾈ";s:6:"ᾈ";s:3:"ᾉ";s:6:"ᾉ";s:3:"ᾊ";s:8:"ᾊ";s:3:"ᾋ";s:8:"ᾋ";s:3:"ᾌ";s:8:"ἈÌÍ…";s:3:"á¾";s:8:"ἉÌÍ…";s:3:"ᾎ";s:8:"ᾎ";s:3:"á¾";s:8:"ᾏ";s:3:"á¾";s:6:"ᾐ";s:3:"ᾑ";s:6:"ᾑ";s:3:"á¾’";s:8:"ᾒ";s:3:"ᾓ";s:8:"ᾓ";s:3:"á¾”";s:8:"ἠÌÍ…";s:3:"ᾕ";s:8:"ἡÌÍ…";s:3:"á¾–";s:8:"ᾖ";s:3:"á¾—";s:8:"ᾗ";s:3:"ᾘ";s:6:"ᾘ";s:3:"á¾™";s:6:"ᾙ";s:3:"ᾚ";s:8:"ᾚ";s:3:"á¾›";s:8:"ᾛ";s:3:"ᾜ";s:8:"ἨÌÍ…";s:3:"á¾";s:8:"ἩÌÍ…";s:3:"ᾞ";s:8:"ᾞ";s:3:"ᾟ";s:8:"ᾟ";s:3:"á¾ ";s:6:"ᾠ";s:3:"ᾡ";s:6:"ᾡ";s:3:"á¾¢";s:8:"ᾢ";s:3:"á¾£";s:8:"ᾣ";s:3:"ᾤ";s:8:"ὠÌÍ…";s:3:"á¾¥";s:8:"ὡÌÍ…";s:3:"ᾦ";s:8:"ᾦ";s:3:"ᾧ";s:8:"ᾧ";s:3:"ᾨ";s:6:"ᾨ";s:3:"ᾩ";s:6:"ᾩ";s:3:"ᾪ";s:8:"ᾪ";s:3:"ᾫ";s:8:"ᾫ";s:3:"ᾬ";s:8:"ὨÌÍ…";s:3:"á¾­";s:8:"ὩÌÍ…";s:3:"á¾®";s:8:"ᾮ";s:3:"ᾯ";s:8:"ᾯ";s:3:"á¾°";s:4:"ᾰ";s:3:"á¾±";s:4:"ᾱ";s:3:"á¾²";s:6:"ᾲ";s:3:"á¾³";s:4:"ᾳ";s:3:"á¾´";s:6:"αÌÍ…";s:3:"ᾶ";s:4:"ᾶ";s:3:"á¾·";s:6:"ᾷ";s:3:"Ᾰ";s:4:"Ᾰ";s:3:"á¾¹";s:4:"Ᾱ";s:3:"Ὰ";s:4:"Ὰ";s:3:"á¾»";s:4:"ΑÌ";s:3:"á¾¼";s:4:"ᾼ";s:3:"á¾¾";s:2:"ι";s:3:"á¿";s:4:"῁";s:3:"á¿‚";s:6:"ῂ";s:3:"ῃ";s:4:"ῃ";s:3:"á¿„";s:6:"ηÌÍ…";s:3:"ῆ";s:4:"ῆ";s:3:"ῇ";s:6:"ῇ";s:3:"Ὲ";s:4:"Ὲ";s:3:"Έ";s:4:"ΕÌ";s:3:"á¿Š";s:4:"Ὴ";s:3:"á¿‹";s:4:"ΗÌ";s:3:"á¿Œ";s:4:"ῌ";s:3:"á¿";s:5:"῍";s:3:"á¿Ž";s:5:"᾿Ì";s:3:"á¿";s:5:"῏";s:3:"á¿";s:4:"ῐ";s:3:"á¿‘";s:4:"ῑ";s:3:"á¿’";s:6:"ῒ";s:3:"á¿“";s:6:"ϊÌ";s:3:"á¿–";s:4:"ῖ";s:3:"á¿—";s:6:"ῗ";s:3:"Ῐ";s:4:"Ῐ";s:3:"á¿™";s:4:"Ῑ";s:3:"á¿š";s:4:"Ὶ";s:3:"á¿›";s:4:"ΙÌ";s:3:"á¿";s:5:"῝";s:3:"á¿ž";s:5:"῾Ì";s:3:"á¿Ÿ";s:5:"῟";s:3:"á¿ ";s:4:"ῠ";s:3:"á¿¡";s:4:"Ï…Ì„";s:3:"á¿¢";s:6:"ῢ";s:3:"á¿£";s:6:"ϋÌ";s:3:"ῤ";s:4:"ÏÌ“";s:3:"á¿¥";s:4:"ÏÌ”";s:3:"ῦ";s:4:"Ï…Í‚";s:3:"ῧ";s:6:"ῧ";s:3:"Ῠ";s:4:"Ῠ";s:3:"á¿©";s:4:"Ῡ";s:3:"Ὺ";s:4:"Ὺ";s:3:"á¿«";s:4:"Î¥Ì";s:3:"Ῥ";s:4:"Ῥ";s:3:"á¿­";s:4:"῭";s:3:"á¿®";s:4:"¨Ì";s:3:"`";s:1:"`";s:3:"ῲ";s:6:"ῲ";s:3:"ῳ";s:4:"ῳ";s:3:"á¿´";s:6:"ωÌÍ…";s:3:"ῶ";s:4:"ῶ";s:3:"á¿·";s:6:"ῷ";s:3:"Ὸ";s:4:"Ὸ";s:3:"Ό";s:4:"ΟÌ";s:3:"Ὼ";s:4:"Ὼ";s:3:"á¿»";s:4:"ΩÌ";s:3:"ῼ";s:4:"ῼ";s:3:"´";s:2:"´";s:3:" ";s:3:" ";s:3:"â€";s:3:" ";s:3:"Ω";s:2:"Ω";s:3:"K";s:1:"K";s:3:"â„«";s:3:"AÌŠ";s:3:"↚";s:5:"â†Ì¸";s:3:"↛";s:5:"↛";s:3:"↮";s:5:"↮";s:3:"â‡";s:5:"â‡Ì¸";s:3:"⇎";s:5:"⇎";s:3:"â‡";s:5:"⇏";s:3:"∄";s:5:"∄";s:3:"∉";s:5:"∉";s:3:"∌";s:5:"∌";s:3:"∤";s:5:"∤";s:3:"∦";s:5:"∦";s:3:"â‰";s:5:"≁";s:3:"≄";s:5:"≄";s:3:"≇";s:5:"≇";s:3:"≉";s:5:"≉";s:3:"≠";s:3:"≠";s:3:"≢";s:5:"≢";s:3:"≭";s:5:"â‰Ì¸";s:3:"≮";s:3:"≮";s:3:"≯";s:3:"≯";s:3:"≰";s:5:"≰";s:3:"≱";s:5:"≱";s:3:"≴";s:5:"≴";s:3:"≵";s:5:"≵";s:3:"≸";s:5:"≸";s:3:"≹";s:5:"≹";s:3:"⊀";s:5:"⊀";s:3:"âŠ";s:5:"⊁";s:3:"⊄";s:5:"⊄";s:3:"⊅";s:5:"⊅";s:3:"⊈";s:5:"⊈";s:3:"⊉";s:5:"⊉";s:3:"⊬";s:5:"⊬";s:3:"⊭";s:5:"⊭";s:3:"⊮";s:5:"⊮";s:3:"⊯";s:5:"⊯";s:3:"â‹ ";s:5:"⋠";s:3:"â‹¡";s:5:"⋡";s:3:"â‹¢";s:5:"⋢";s:3:"â‹£";s:5:"⋣";s:3:"⋪";s:5:"⋪";s:3:"â‹«";s:5:"⋫";s:3:"⋬";s:5:"⋬";s:3:"â‹­";s:5:"⋭";s:3:"〈";s:3:"〈";s:3:"〉";s:3:"〉";s:3:"â«œ";s:5:"â«Ì¸";s:3:"ãŒ";s:6:"ã‹ã‚™";s:3:"ãŽ";s:6:"ãã‚™";s:3:"ã";s:6:"ãã‚™";s:3:"ã’";s:6:"ã‘ã‚™";s:3:"ã”";s:6:"ã“ã‚™";s:3:"ã–";s:6:"ã•ã‚™";s:3:"ã˜";s:6:"ã—ã‚™";s:3:"ãš";s:6:"ã™ã‚™";s:3:"ãœ";s:6:"ã›ã‚™";s:3:"ãž";s:6:"ãã‚™";s:3:"ã ";s:6:"ãŸã‚™";s:3:"ã¢";s:6:"ã¡ã‚™";s:3:"ã¥";s:6:"ã¤ã‚™";s:3:"ã§";s:6:"ã¦ã‚™";s:3:"ã©";s:6:"ã¨ã‚™";s:3:"ã°";s:6:"ã¯ã‚™";s:3:"ã±";s:6:"ã¯ã‚š";s:3:"ã³";s:6:"ã²ã‚™";s:3:"ã´";s:6:"ã²ã‚š";s:3:"ã¶";s:6:"ãµã‚™";s:3:"ã·";s:6:"ãµã‚š";s:3:"ã¹";s:6:"ã¸ã‚™";s:3:"ãº";s:6:"ã¸ã‚š";s:3:"ã¼";s:6:"ã»ã‚™";s:3:"ã½";s:6:"ã»ã‚š";s:3:"ã‚”";s:6:"ã†ã‚™";s:3:"ã‚ž";s:6:"ã‚ã‚™";s:3:"ガ";s:6:"ã‚«ã‚™";s:3:"ã‚®";s:6:"ã‚­ã‚™";s:3:"ã‚°";s:6:"グ";s:3:"ゲ";s:6:"ゲ";s:3:"ã‚´";s:6:"ゴ";s:3:"ザ";s:6:"ザ";s:3:"ジ";s:6:"ã‚·ã‚™";s:3:"ズ";s:6:"ズ";s:3:"ゼ";s:6:"ゼ";s:3:"ゾ";s:6:"ゾ";s:3:"ダ";s:6:"ã‚¿ã‚™";s:3:"ヂ";s:6:"ãƒã‚™";s:3:"ヅ";s:6:"ヅ";s:3:"デ";s:6:"デ";s:3:"ド";s:6:"ド";s:3:"ãƒ";s:6:"ãƒã‚™";s:3:"パ";s:6:"ãƒã‚š";s:3:"ビ";s:6:"ビ";s:3:"ピ";s:6:"ピ";s:3:"ブ";s:6:"ブ";s:3:"プ";s:6:"プ";s:3:"ベ";s:6:"ベ";s:3:"ペ";s:6:"ペ";s:3:"ボ";s:6:"ボ";s:3:"ãƒ";s:6:"ポ";s:3:"ヴ";s:6:"ヴ";s:3:"ヷ";s:6:"ヷ";s:3:"ヸ";s:6:"ヸ";s:3:"ヹ";s:6:"ヹ";s:3:"ヺ";s:6:"ヺ";s:3:"ヾ";s:6:"ヾ";s:3:"豈";s:3:"豈";s:3:"ï¤";s:3:"æ›´";s:3:"車";s:3:"車";s:3:"賈";s:3:"賈";s:3:"滑";s:3:"滑";s:3:"串";s:3:"串";s:3:"句";s:3:"å¥";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"契";s:3:"契";s:3:"金";s:3:"金";s:3:"喇";s:3:"å–‡";s:3:"奈";s:3:"奈";s:3:"ï¤";s:3:"懶";s:3:"癩";s:3:"癩";s:3:"ï¤";s:3:"ç¾…";s:3:"ï¤";s:3:"蘿";s:3:"螺";s:3:"螺";s:3:"裸";s:3:"裸";s:3:"邏";s:3:"é‚";s:3:"樂";s:3:"樂";s:3:"洛";s:3:"æ´›";s:3:"烙";s:3:"烙";s:3:"珞";s:3:"çž";s:3:"落";s:3:"è½";s:3:"酪";s:3:"é…ª";s:3:"駱";s:3:"駱";s:3:"亂";s:3:"亂";s:3:"卵";s:3:"åµ";s:3:"ï¤";s:3:"欄";s:3:"爛";s:3:"爛";s:3:"蘭";s:3:"蘭";s:3:"鸞";s:3:"鸞";s:3:"嵐";s:3:"åµ";s:3:"濫";s:3:"æ¿«";s:3:"藍";s:3:"è—";s:3:"襤";s:3:"襤";s:3:"拉";s:3:"拉";s:3:"臘";s:3:"臘";s:3:"蠟";s:3:"è Ÿ";s:3:"廊";s:3:"廊";s:3:"朗";s:3:"朗";s:3:"浪";s:3:"浪";s:3:"狼";s:3:"狼";s:3:"郎";s:3:"郎";s:3:"來";s:3:"來";s:3:"冷";s:3:"冷";s:3:"勞";s:3:"å‹ž";s:3:"擄";s:3:"æ“„";s:3:"櫓";s:3:"æ«“";s:3:"爐";s:3:"çˆ";s:3:"盧";s:3:"盧";s:3:"老";s:3:"è€";s:3:"蘆";s:3:"蘆";s:3:"虜";s:3:"虜";s:3:"路";s:3:"è·¯";s:3:"露";s:3:"露";s:3:"魯";s:3:"é­¯";s:3:"鷺";s:3:"é·º";s:3:"碌";s:3:"碌";s:3:"祿";s:3:"祿";s:3:"綠";s:3:"綠";s:3:"菉";s:3:"è‰";s:3:"錄";s:3:"錄";s:3:"鹿";s:3:"鹿";s:3:"ï¥";s:3:"è«–";s:3:"壟";s:3:"壟";s:3:"弄";s:3:"弄";s:3:"籠";s:3:"ç± ";s:3:"聾";s:3:"è¾";s:3:"牢";s:3:"牢";s:3:"磊";s:3:"磊";s:3:"賂";s:3:"賂";s:3:"雷";s:3:"é›·";s:3:"壘";s:3:"壘";s:3:"屢";s:3:"å±¢";s:3:"樓";s:3:"樓";s:3:"ï¥";s:3:"æ·š";s:3:"漏";s:3:"æ¼";s:3:"ï¥";s:3:"ç´¯";s:3:"ï¥";s:3:"縷";s:3:"陋";s:3:"陋";s:3:"勒";s:3:"å‹’";s:3:"肋";s:3:"è‚‹";s:3:"凜";s:3:"凜";s:3:"凌";s:3:"凌";s:3:"稜";s:3:"稜";s:3:"綾";s:3:"綾";s:3:"菱";s:3:"è±";s:3:"陵";s:3:"陵";s:3:"讀";s:3:"讀";s:3:"拏";s:3:"æ‹";s:3:"樂";s:3:"樂";s:3:"ï¥";s:3:"諾";s:3:"丹";s:3:"丹";s:3:"寧";s:3:"寧";s:3:"怒";s:3:"怒";s:3:"率";s:3:"率";s:3:"異";s:3:"ç•°";s:3:"北";s:3:"北";s:3:"磻";s:3:"磻";s:3:"便";s:3:"便";s:3:"復";s:3:"復";s:3:"不";s:3:"ä¸";s:3:"泌";s:3:"泌";s:3:"數";s:3:"數";s:3:"索";s:3:"ç´¢";s:3:"參";s:3:"åƒ";s:3:"塞";s:3:"å¡ž";s:3:"省";s:3:"çœ";s:3:"葉";s:3:"葉";s:3:"說";s:3:"說";s:3:"殺";s:3:"殺";s:3:"辰";s:3:"è¾°";s:3:"沈";s:3:"沈";s:3:"拾";s:3:"拾";s:3:"若";s:3:"è‹¥";s:3:"掠";s:3:"掠";s:3:"略";s:3:"ç•¥";s:3:"亮";s:3:"亮";s:3:"兩";s:3:"å…©";s:3:"凉";s:3:"凉";s:3:"梁";s:3:"æ¢";s:3:"糧";s:3:"糧";s:3:"良";s:3:"良";s:3:"諒";s:3:"è«’";s:3:"量";s:3:"é‡";s:3:"勵";s:3:"勵";s:3:"呂";s:3:"å‘‚";s:3:"ï¦";s:3:"女";s:3:"廬";s:3:"廬";s:3:"旅";s:3:"æ—…";s:3:"濾";s:3:"濾";s:3:"礪";s:3:"礪";s:3:"閭";s:3:"é–­";s:3:"驪";s:3:"驪";s:3:"麗";s:3:"麗";s:3:"黎";s:3:"黎";s:3:"力";s:3:"力";s:3:"曆";s:3:"曆";s:3:"歷";s:3:"æ­·";s:3:"ï¦";s:3:"è½¢";s:3:"年";s:3:"å¹´";s:3:"ï¦";s:3:"æ†";s:3:"ï¦";s:3:"戀";s:3:"撚";s:3:"æ’š";s:3:"漣";s:3:"æ¼£";s:3:"煉";s:3:"ç…‰";s:3:"璉";s:3:"ç’‰";s:3:"秊";s:3:"秊";s:3:"練";s:3:"ç·´";s:3:"聯";s:3:"è¯";s:3:"輦";s:3:"輦";s:3:"蓮";s:3:"è“®";s:3:"連";s:3:"連";s:3:"鍊";s:3:"éŠ";s:3:"列";s:3:"列";s:3:"ï¦";s:3:"劣";s:3:"咽";s:3:"å’½";s:3:"烈";s:3:"烈";s:3:"裂";s:3:"裂";s:3:"說";s:3:"說";s:3:"廉";s:3:"廉";s:3:"念";s:3:"念";s:3:"捻";s:3:"æ»";s:3:"殮";s:3:"æ®®";s:3:"簾";s:3:"ç°¾";s:3:"獵";s:3:"çµ";s:3:"令";s:3:"令";s:3:"囹";s:3:"囹";s:3:"寧";s:3:"寧";s:3:"嶺";s:3:"嶺";s:3:"怜";s:3:"怜";s:3:"玲";s:3:"玲";s:3:"瑩";s:3:"ç‘©";s:3:"羚";s:3:"羚";s:3:"聆";s:3:"è†";s:3:"鈴";s:3:"鈴";s:3:"零";s:3:"零";s:3:"靈";s:3:"éˆ";s:3:"領";s:3:"é ˜";s:3:"例";s:3:"例";s:3:"禮";s:3:"禮";s:3:"醴";s:3:"醴";s:3:"隸";s:3:"隸";s:3:"惡";s:3:"惡";s:3:"了";s:3:"了";s:3:"僚";s:3:"僚";s:3:"寮";s:3:"寮";s:3:"尿";s:3:"å°¿";s:3:"料";s:3:"æ–™";s:3:"樂";s:3:"樂";s:3:"燎";s:3:"燎";s:3:"ï§";s:3:"療";s:3:"蓼";s:3:"蓼";s:3:"遼";s:3:"é¼";s:3:"龍";s:3:"é¾";s:3:"暈";s:3:"暈";s:3:"阮";s:3:"阮";s:3:"劉";s:3:"劉";s:3:"杻";s:3:"æ»";s:3:"柳";s:3:"柳";s:3:"流";s:3:"æµ";s:3:"溜";s:3:"溜";s:3:"琉";s:3:"ç‰";s:3:"ï§";s:3:"ç•™";s:3:"硫";s:3:"ç¡«";s:3:"ï§";s:3:"ç´";s:3:"ï§";s:3:"é¡ž";s:3:"六";s:3:"å…­";s:3:"戮";s:3:"戮";s:3:"陸";s:3:"陸";s:3:"倫";s:3:"倫";s:3:"崙";s:3:"å´™";s:3:"淪";s:3:"æ·ª";s:3:"輪";s:3:"輪";s:3:"律";s:3:"律";s:3:"慄";s:3:"æ…„";s:3:"栗";s:3:"æ —";s:3:"率";s:3:"率";s:3:"隆";s:3:"隆";s:3:"ï§";s:3:"利";s:3:"吏";s:3:"å";s:3:"履";s:3:"å±¥";s:3:"易";s:3:"易";s:3:"李";s:3:"æŽ";s:3:"梨";s:3:"梨";s:3:"泥";s:3:"æ³¥";s:3:"理";s:3:"ç†";s:3:"痢";s:3:"ç—¢";s:3:"罹";s:3:"ç½¹";s:3:"裏";s:3:"è£";s:3:"裡";s:3:"裡";s:3:"里";s:3:"里";s:3:"離";s:3:"離";s:3:"匿";s:3:"匿";s:3:"溺";s:3:"溺";s:3:"吝";s:3:"å";s:3:"燐";s:3:"ç‡";s:3:"璘";s:3:"ç’˜";s:3:"藺";s:3:"è—º";s:3:"隣";s:3:"隣";s:3:"鱗";s:3:"é±—";s:3:"麟";s:3:"麟";s:3:"林";s:3:"æž—";s:3:"淋";s:3:"æ·‹";s:3:"臨";s:3:"臨";s:3:"立";s:3:"ç«‹";s:3:"笠";s:3:"笠";s:3:"粒";s:3:"ç²’";s:3:"狀";s:3:"ç‹€";s:3:"炙";s:3:"ç‚™";s:3:"識";s:3:"è­˜";s:3:"什";s:3:"什";s:3:"茶";s:3:"茶";s:3:"刺";s:3:"刺";s:3:"切";s:3:"切";s:3:"ï¨";s:3:"度";s:3:"拓";s:3:"æ‹“";s:3:"糖";s:3:"ç³–";s:3:"宅";s:3:"å®…";s:3:"洞";s:3:"æ´ž";s:3:"暴";s:3:"æš´";s:3:"輻";s:3:"è¼»";s:3:"行";s:3:"è¡Œ";s:3:"降";s:3:"é™";s:3:"見";s:3:"見";s:3:"廓";s:3:"廓";s:3:"兀";s:3:"å…€";s:3:"ï¨";s:3:"å—€";s:3:"ï¨";s:3:"å¡š";s:3:"晴";s:3:"æ™´";s:3:"凞";s:3:"凞";s:3:"猪";s:3:"猪";s:3:"益";s:3:"益";s:3:"礼";s:3:"礼";s:3:"神";s:3:"神";s:3:"祥";s:3:"祥";s:3:"福";s:3:"ç¦";s:3:"靖";s:3:"é–";s:3:"ï¨";s:3:"ç²¾";s:3:"羽";s:3:"ç¾½";s:3:"蘒";s:3:"蘒";s:3:"諸";s:3:"諸";s:3:"逸";s:3:"逸";s:3:"都";s:3:"都";s:3:"飯";s:3:"飯";s:3:"飼";s:3:"飼";s:3:"館";s:3:"館";s:3:"鶴";s:3:"鶴";s:3:"侮";s:3:"ä¾®";s:3:"僧";s:3:"僧";s:3:"免";s:3:"å…";s:3:"勉";s:3:"勉";s:3:"勤";s:3:"勤";s:3:"卑";s:3:"å‘";s:3:"喝";s:3:"å–";s:3:"嘆";s:3:"嘆";s:3:"器";s:3:"器";s:3:"塀";s:3:"å¡€";s:3:"墨";s:3:"墨";s:3:"層";s:3:"層";s:3:"屮";s:3:"å±®";s:3:"悔";s:3:"æ‚”";s:3:"慨";s:3:"æ…¨";s:3:"憎";s:3:"憎";s:3:"ï©€";s:3:"懲";s:3:"ï©";s:3:"æ•";s:3:"ï©‚";s:3:"æ—¢";s:3:"暑";s:3:"æš‘";s:3:"ï©„";s:3:"梅";s:3:"ï©…";s:3:"æµ·";s:3:"渚";s:3:"渚";s:3:"漢";s:3:"æ¼¢";s:3:"煮";s:3:"ç…®";s:3:"爫";s:3:"爫";s:3:"ï©Š";s:3:"ç¢";s:3:"ï©‹";s:3:"碑";s:3:"ï©Œ";s:3:"社";s:3:"ï©";s:3:"祉";s:3:"ï©Ž";s:3:"祈";s:3:"ï©";s:3:"ç¥";s:3:"ï©";s:3:"祖";s:3:"ï©‘";s:3:"ç¥";s:3:"ï©’";s:3:"ç¦";s:3:"ï©“";s:3:"禎";s:3:"ï©”";s:3:"ç©€";s:3:"ï©•";s:3:"çª";s:3:"ï©–";s:3:"節";s:3:"ï©—";s:3:"ç·´";s:3:"縉";s:3:"縉";s:3:"ï©™";s:3:"ç¹";s:3:"ï©š";s:3:"ç½²";s:3:"ï©›";s:3:"者";s:3:"ï©œ";s:3:"臭";s:3:"ï©";s:3:"艹";s:3:"ï©ž";s:3:"艹";s:3:"ï©Ÿ";s:3:"è‘—";s:3:"ï© ";s:3:"è¤";s:3:"ï©¡";s:3:"視";s:3:"ï©¢";s:3:"è¬";s:3:"ï©£";s:3:"謹";s:3:"賓";s:3:"賓";s:3:"ï©¥";s:3:"è´ˆ";s:3:"辶";s:3:"辶";s:3:"逸";s:3:"逸";s:3:"難";s:3:"難";s:3:"ï©©";s:3:"響";s:3:"頻";s:3:"é »";s:3:"ï©«";s:3:"æµ";s:3:"𤋮";s:4:"𤋮";s:3:"ï©­";s:3:"舘";s:3:"ï©°";s:3:"並";s:3:"况";s:3:"况";s:3:"全";s:3:"å…¨";s:3:"侀";s:3:"ä¾€";s:3:"ï©´";s:3:"å……";s:3:"冀";s:3:"冀";s:3:"勇";s:3:"勇";s:3:"ï©·";s:3:"勺";s:3:"喝";s:3:"å–";s:3:"啕";s:3:"å••";s:3:"喙";s:3:"å–™";s:3:"ï©»";s:3:"å—¢";s:3:"塚";s:3:"å¡š";s:3:"墳";s:3:"墳";s:3:"奄";s:3:"奄";s:3:"ï©¿";s:3:"奔";s:3:"婢";s:3:"å©¢";s:3:"ïª";s:3:"嬨";s:3:"廒";s:3:"å»’";s:3:"廙";s:3:"å»™";s:3:"彩";s:3:"彩";s:3:"徭";s:3:"å¾­";s:3:"惘";s:3:"惘";s:3:"慎";s:3:"æ…Ž";s:3:"愈";s:3:"愈";s:3:"憎";s:3:"憎";s:3:"慠";s:3:"æ… ";s:3:"懲";s:3:"懲";s:3:"戴";s:3:"戴";s:3:"ïª";s:3:"æ„";s:3:"搜";s:3:"æœ";s:3:"ïª";s:3:"æ‘’";s:3:"ïª";s:3:"æ•–";s:3:"晴";s:3:"æ™´";s:3:"朗";s:3:"朗";s:3:"望";s:3:"望";s:3:"杖";s:3:"æ–";s:3:"歹";s:3:"æ­¹";s:3:"殺";s:3:"殺";s:3:"流";s:3:"æµ";s:3:"滛";s:3:"æ»›";s:3:"滋";s:3:"滋";s:3:"漢";s:3:"æ¼¢";s:3:"瀞";s:3:"瀞";s:3:"煮";s:3:"ç…®";s:3:"ïª";s:3:"瞧";s:3:"爵";s:3:"爵";s:3:"犯";s:3:"犯";s:3:"猪";s:3:"猪";s:3:"瑱";s:3:"瑱";s:3:"甆";s:3:"甆";s:3:"画";s:3:"ç”»";s:3:"瘝";s:3:"ç˜";s:3:"瘟";s:3:"瘟";s:3:"益";s:3:"益";s:3:"盛";s:3:"ç››";s:3:"直";s:3:"ç›´";s:3:"睊";s:3:"çŠ";s:3:"着";s:3:"ç€";s:3:"磌";s:3:"磌";s:3:"窱";s:3:"窱";s:3:"節";s:3:"節";s:3:"类";s:3:"ç±»";s:3:"絛";s:3:"çµ›";s:3:"練";s:3:"ç·´";s:3:"缾";s:3:"ç¼¾";s:3:"者";s:3:"者";s:3:"荒";s:3:"è’";s:3:"華";s:3:"è¯";s:3:"蝹";s:3:"è¹";s:3:"襁";s:3:"è¥";s:3:"覆";s:3:"覆";s:3:"視";s:3:"視";s:3:"調";s:3:"調";s:3:"諸";s:3:"諸";s:3:"請";s:3:"è«‹";s:3:"謁";s:3:"è¬";s:3:"諾";s:3:"諾";s:3:"諭";s:3:"è«­";s:3:"謹";s:3:"謹";s:3:"ï«€";s:3:"變";s:3:"ï«";s:3:"è´ˆ";s:3:"ï«‚";s:3:"輸";s:3:"遲";s:3:"é²";s:3:"ï«„";s:3:"醙";s:3:"ï«…";s:3:"鉶";s:3:"陼";s:3:"陼";s:3:"難";s:3:"難";s:3:"靖";s:3:"é–";s:3:"韛";s:3:"韛";s:3:"ï«Š";s:3:"響";s:3:"ï«‹";s:3:"é ‹";s:3:"ï«Œ";s:3:"é »";s:3:"ï«";s:3:"鬒";s:3:"ï«Ž";s:3:"龜";s:3:"ï«";s:4:"𢡊";s:3:"ï«";s:4:"𢡄";s:3:"ï«‘";s:4:"ð£•";s:3:"ï«’";s:3:"ã®";s:3:"ï«“";s:3:"䀘";s:3:"ï«”";s:3:"䀹";s:3:"ï«•";s:4:"𥉉";s:3:"ï«–";s:4:"ð¥³";s:3:"ï«—";s:4:"𧻓";s:3:"齃";s:3:"齃";s:3:"ï«™";s:3:"龎";s:3:"ï¬";s:4:"×™Ö´";s:3:"ײַ";s:4:"ײַ";s:3:"שׁ";s:4:"ש×";s:3:"שׂ";s:4:"שׂ";s:3:"שּׁ";s:6:"שּ×";s:3:"שּׂ";s:6:"שּׂ";s:3:"אַ";s:4:"×Ö·";s:3:"אָ";s:4:"×Ö¸";s:3:"אּ";s:4:"×Ö¼";s:3:"בּ";s:4:"בּ";s:3:"גּ";s:4:"×’Ö¼";s:3:"דּ";s:4:"דּ";s:3:"הּ";s:4:"×”Ö¼";s:3:"וּ";s:4:"וּ";s:3:"זּ";s:4:"×–Ö¼";s:3:"טּ";s:4:"טּ";s:3:"יּ";s:4:"×™Ö¼";s:3:"ךּ";s:4:"ךּ";s:3:"כּ";s:4:"×›Ö¼";s:3:"לּ";s:4:"לּ";s:3:"מּ";s:4:"מּ";s:3:"ï­€";s:4:"× Ö¼";s:3:"ï­";s:4:"סּ";s:3:"ï­ƒ";s:4:"×£Ö¼";s:3:"ï­„";s:4:"פּ";s:3:"ï­†";s:4:"צּ";s:3:"ï­‡";s:4:"קּ";s:3:"ï­ˆ";s:4:"רּ";s:3:"ï­‰";s:4:"שּ";s:3:"ï­Š";s:4:"תּ";s:3:"ï­‹";s:4:"וֹ";s:3:"ï­Œ";s:4:"בֿ";s:3:"ï­";s:4:"×›Ö¿";s:3:"ï­Ž";s:4:"פֿ";s:4:"ð‘‚š";s:8:"𑂚";s:4:"ð‘‚œ";s:8:"𑂜";s:4:"ð‘‚«";s:8:"𑂫";s:4:"ð…ž";s:8:"ð…—ð…¥";s:4:"ð…Ÿ";s:8:"ð…˜ð…¥";s:4:"ð… ";s:12:"ð…˜ð…¥ð…®";s:4:"ð…¡";s:12:"ð…˜ð…¥ð…¯";s:4:"ð…¢";s:12:"ð…˜ð…¥ð…°";s:4:"ð…£";s:12:"ð…˜ð…¥ð…±";s:4:"ð…¤";s:12:"ð…˜ð…¥ð…²";s:4:"ð†»";s:8:"ð†¹ð…¥";s:4:"ð†¼";s:8:"ð†ºð…¥";s:4:"ð†½";s:12:"ð†¹ð…¥ð…®";s:4:"ð†¾";s:12:"ð†ºð…¥ð…®";s:4:"ð†¿";s:12:"ð†¹ð…¥ð…¯";s:4:"ð‡€";s:12:"ð†ºð…¥ð…¯";s:4:"丽";s:3:"丽";s:4:"ð¯ ";s:3:"丸";s:4:"乁";s:3:"ä¹";s:4:"𠄢";s:4:"ð „¢";s:4:"你";s:3:"ä½ ";s:4:"侮";s:3:"ä¾®";s:4:"侻";s:3:"ä¾»";s:4:"倂";s:3:"倂";s:4:"偺";s:3:"åº";s:4:"備";s:3:"å‚™";s:4:"僧";s:3:"僧";s:4:"像";s:3:"åƒ";s:4:"㒞";s:3:"ã’ž";s:4:"ð¯ ";s:4:"𠘺";s:4:"免";s:3:"å…";s:4:"ð¯ ";s:3:"å…”";s:4:"ð¯ ";s:3:"å…¤";s:4:"具";s:3:"å…·";s:4:"𠔜";s:4:"𠔜";s:4:"㒹";s:3:"ã’¹";s:4:"內";s:3:"å…§";s:4:"再";s:3:"å†";s:4:"𠕋";s:4:"ð •‹";s:4:"冗";s:3:"冗";s:4:"冤";s:3:"冤";s:4:"仌";s:3:"仌";s:4:"冬";s:3:"冬";s:4:"况";s:3:"况";s:4:"𩇟";s:4:"𩇟";s:4:"ð¯ ";s:3:"凵";s:4:"刃";s:3:"刃";s:4:"㓟";s:3:"ã“Ÿ";s:4:"刻";s:3:"刻";s:4:"剆";s:3:"剆";s:4:"割";s:3:"割";s:4:"剷";s:3:"剷";s:4:"㔕";s:3:"㔕";s:4:"勇";s:3:"勇";s:4:"勉";s:3:"勉";s:4:"勤";s:3:"勤";s:4:"勺";s:3:"勺";s:4:"包";s:3:"包";s:4:"匆";s:3:"匆";s:4:"北";s:3:"北";s:4:"卉";s:3:"å‰";s:4:"卑";s:3:"å‘";s:4:"博";s:3:"åš";s:4:"即";s:3:"å³";s:4:"卽";s:3:"å½";s:4:"卿";s:3:"å¿";s:4:"卿";s:3:"å¿";s:4:"卿";s:3:"å¿";s:4:"𠨬";s:4:"𠨬";s:4:"灰";s:3:"ç°";s:4:"及";s:3:"åŠ";s:4:"叟";s:3:"åŸ";s:4:"𠭣";s:4:"ð ­£";s:4:"叫";s:3:"å«";s:4:"叱";s:3:"å±";s:4:"吆";s:3:"å†";s:4:"咞";s:3:"å’ž";s:4:"吸";s:3:"å¸";s:4:"呈";s:3:"呈";s:4:"周";s:3:"周";s:4:"咢";s:3:"å’¢";s:4:"ð¯¡";s:3:"哶";s:4:"唐";s:3:"å”";s:4:"啓";s:3:"å•“";s:4:"啣";s:3:"å•£";s:4:"善";s:3:"å–„";s:4:"善";s:3:"å–„";s:4:"喙";s:3:"å–™";s:4:"喫";s:3:"å–«";s:4:"喳";s:3:"å–³";s:4:"嗂";s:3:"å—‚";s:4:"圖";s:3:"圖";s:4:"嘆";s:3:"嘆";s:4:"ð¯¡";s:3:"圗";s:4:"噑";s:3:"噑";s:4:"ð¯¡";s:3:"å™´";s:4:"ð¯¡";s:3:"切";s:4:"壮";s:3:"壮";s:4:"城";s:3:"城";s:4:"埴";s:3:"埴";s:4:"堍";s:3:"å ";s:4:"型";s:3:"åž‹";s:4:"堲";s:3:"å ²";s:4:"報";s:3:"å ±";s:4:"墬";s:3:"墬";s:4:"𡓤";s:4:"𡓤";s:4:"売";s:3:"売";s:4:"壷";s:3:"壷";s:4:"夆";s:3:"夆";s:4:"ð¯¡";s:3:"多";s:4:"夢";s:3:"夢";s:4:"奢";s:3:"奢";s:4:"𡚨";s:4:"𡚨";s:4:"𡛪";s:4:"𡛪";s:4:"姬";s:3:"姬";s:4:"娛";s:3:"娛";s:4:"娧";s:3:"娧";s:4:"姘";s:3:"姘";s:4:"婦";s:3:"婦";s:4:"㛮";s:3:"ã›®";s:4:"㛼";s:3:"㛼";s:4:"嬈";s:3:"嬈";s:4:"嬾";s:3:"嬾";s:4:"嬾";s:3:"嬾";s:4:"𡧈";s:4:"𡧈";s:4:"寃";s:3:"寃";s:4:"寘";s:3:"寘";s:4:"寧";s:3:"寧";s:4:"寳";s:3:"寳";s:4:"𡬘";s:4:"𡬘";s:4:"寿";s:3:"寿";s:4:"将";s:3:"å°†";s:4:"当";s:3:"当";s:4:"尢";s:3:"å°¢";s:4:"㞁";s:3:"ãž";s:4:"屠";s:3:"å± ";s:4:"屮";s:3:"å±®";s:4:"峀";s:3:"å³€";s:4:"岍";s:3:"å²";s:4:"𡷤";s:4:"ð¡·¤";s:4:"嵃";s:3:"嵃";s:4:"𡷦";s:4:"ð¡·¦";s:4:"嵮";s:3:"åµ®";s:4:"嵫";s:3:"嵫";s:4:"嵼";s:3:"åµ¼";s:4:"ð¯¢";s:3:"å·¡";s:4:"巢";s:3:"å·¢";s:4:"㠯";s:3:"ã ¯";s:4:"巽";s:3:"å·½";s:4:"帨";s:3:"帨";s:4:"帽";s:3:"帽";s:4:"幩";s:3:"幩";s:4:"㡢";s:3:"ã¡¢";s:4:"𢆃";s:4:"𢆃";s:4:"㡼";s:3:"㡼";s:4:"庰";s:3:"庰";s:4:"庳";s:3:"庳";s:4:"ð¯¢";s:3:"庶";s:4:"廊";s:3:"廊";s:4:"ð¯¢";s:4:"𪎒";s:4:"ð¯¢";s:3:"廾";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"舁";s:3:"èˆ";s:4:"弢";s:3:"å¼¢";s:4:"弢";s:3:"å¼¢";s:4:"㣇";s:3:"㣇";s:4:"𣊸";s:4:"𣊸";s:4:"𦇚";s:4:"𦇚";s:4:"形";s:3:"å½¢";s:4:"彫";s:3:"彫";s:4:"㣣";s:3:"㣣";s:4:"徚";s:3:"徚";s:4:"ð¯¢";s:3:"å¿";s:4:"志";s:3:"å¿—";s:4:"忹";s:3:"忹";s:4:"悁";s:3:"æ‚";s:4:"㤺";s:3:"㤺";s:4:"㤜";s:3:"㤜";s:4:"悔";s:3:"æ‚”";s:4:"𢛔";s:4:"𢛔";s:4:"惇";s:3:"惇";s:4:"慈";s:3:"æ…ˆ";s:4:"慌";s:3:"æ…Œ";s:4:"慎";s:3:"æ…Ž";s:4:"慌";s:3:"æ…Œ";s:4:"慺";s:3:"æ…º";s:4:"憎";s:3:"憎";s:4:"憲";s:3:"憲";s:4:"憤";s:3:"憤";s:4:"憯";s:3:"憯";s:4:"懞";s:3:"懞";s:4:"懲";s:3:"懲";s:4:"懶";s:3:"懶";s:4:"成";s:3:"æˆ";s:4:"戛";s:3:"戛";s:4:"扝";s:3:"æ‰";s:4:"抱";s:3:"抱";s:4:"拔";s:3:"æ‹”";s:4:"捐";s:3:"æ";s:4:"𢬌";s:4:"𢬌";s:4:"挽";s:3:"挽";s:4:"拼";s:3:"拼";s:4:"捨";s:3:"æ¨";s:4:"掃";s:3:"掃";s:4:"揤";s:3:"æ¤";s:4:"𢯱";s:4:"𢯱";s:4:"搢";s:3:"æ¢";s:4:"揅";s:3:"æ…";s:4:"ð¯£";s:3:"掩";s:4:"㨮";s:3:"㨮";s:4:"摩";s:3:"æ‘©";s:4:"摾";s:3:"摾";s:4:"撝";s:3:"æ’";s:4:"摷";s:3:"æ‘·";s:4:"㩬";s:3:"㩬";s:4:"敏";s:3:"æ•";s:4:"敬";s:3:"敬";s:4:"𣀊";s:4:"𣀊";s:4:"旣";s:3:"æ—£";s:4:"書";s:3:"書";s:4:"ð¯£";s:3:"晉";s:4:"㬙";s:3:"㬙";s:4:"ð¯£";s:3:"æš‘";s:4:"ð¯£";s:3:"㬈";s:4:"㫤";s:3:"㫤";s:4:"冒";s:3:"冒";s:4:"冕";s:3:"冕";s:4:"最";s:3:"最";s:4:"暜";s:3:"æšœ";s:4:"肭";s:3:"è‚­";s:4:"䏙";s:3:"ä™";s:4:"朗";s:3:"朗";s:4:"望";s:3:"望";s:4:"朡";s:3:"朡";s:4:"杞";s:3:"æž";s:4:"杓";s:3:"æ“";s:4:"ð¯£";s:4:"ð£ƒ";s:4:"㭉";s:3:"ã­‰";s:4:"柺";s:3:"柺";s:4:"枅";s:3:"æž…";s:4:"桒";s:3:"æ¡’";s:4:"梅";s:3:"梅";s:4:"𣑭";s:4:"𣑭";s:4:"梎";s:3:"梎";s:4:"栟";s:3:"æ Ÿ";s:4:"椔";s:3:"椔";s:4:"㮝";s:3:"ã®";s:4:"楂";s:3:"楂";s:4:"榣";s:3:"榣";s:4:"槪";s:3:"槪";s:4:"檨";s:3:"檨";s:4:"𣚣";s:4:"𣚣";s:4:"櫛";s:3:"æ«›";s:4:"㰘";s:3:"ã°˜";s:4:"次";s:3:"次";s:4:"𣢧";s:4:"𣢧";s:4:"歔";s:3:"æ­”";s:4:"㱎";s:3:"㱎";s:4:"歲";s:3:"æ­²";s:4:"殟";s:3:"殟";s:4:"殺";s:3:"殺";s:4:"殻";s:3:"æ®»";s:4:"𣪍";s:4:"ð£ª";s:4:"𡴋";s:4:"ð¡´‹";s:4:"𣫺";s:4:"𣫺";s:4:"汎";s:3:"汎";s:4:"𣲼";s:4:"𣲼";s:4:"沿";s:3:"沿";s:4:"泍";s:3:"æ³";s:4:"汧";s:3:"汧";s:4:"洖";s:3:"æ´–";s:4:"派";s:3:"æ´¾";s:4:"ð¯¤";s:3:"æµ·";s:4:"流";s:3:"æµ";s:4:"浩";s:3:"浩";s:4:"浸";s:3:"浸";s:4:"涅";s:3:"涅";s:4:"𣴞";s:4:"𣴞";s:4:"洴";s:3:"æ´´";s:4:"港";s:3:"港";s:4:"湮";s:3:"æ¹®";s:4:"㴳";s:3:"ã´³";s:4:"滋";s:3:"滋";s:4:"滇";s:3:"滇";s:4:"ð¯¤";s:4:"𣻑";s:4:"淹";s:3:"æ·¹";s:4:"ð¯¤";s:3:"æ½®";s:4:"ð¯¤";s:4:"𣽞";s:4:"𣾎";s:4:"𣾎";s:4:"濆";s:3:"濆";s:4:"瀹";s:3:"瀹";s:4:"瀞";s:3:"瀞";s:4:"瀛";s:3:"瀛";s:4:"㶖";s:3:"㶖";s:4:"灊";s:3:"çŠ";s:4:"災";s:3:"ç½";s:4:"灷";s:3:"ç·";s:4:"炭";s:3:"ç‚­";s:4:"𠔥";s:4:"𠔥";s:4:"煅";s:3:"ç……";s:4:"ð¯¤";s:4:"𤉣";s:4:"熜";s:3:"熜";s:4:"𤎫";s:4:"𤎫";s:4:"爨";s:3:"爨";s:4:"爵";s:3:"爵";s:4:"牐";s:3:"ç‰";s:4:"𤘈";s:4:"𤘈";s:4:"犀";s:3:"犀";s:4:"犕";s:3:"犕";s:4:"𤜵";s:4:"𤜵";s:4:"𤠔";s:4:"𤠔";s:4:"獺";s:3:"çº";s:4:"王";s:3:"王";s:4:"㺬";s:3:"㺬";s:4:"玥";s:3:"玥";s:4:"㺸";s:3:"㺸";s:4:"㺸";s:3:"㺸";s:4:"瑇";s:3:"瑇";s:4:"瑜";s:3:"ç‘œ";s:4:"瑱";s:3:"瑱";s:4:"璅";s:3:"ç’…";s:4:"瓊";s:3:"ç“Š";s:4:"㼛";s:3:"ã¼›";s:4:"甤";s:3:"甤";s:4:"𤰶";s:4:"𤰶";s:4:"甾";s:3:"甾";s:4:"𤲒";s:4:"𤲒";s:4:"異";s:3:"ç•°";s:4:"𢆟";s:4:"𢆟";s:4:"瘐";s:3:"ç˜";s:4:"𤾡";s:4:"𤾡";s:4:"𤾸";s:4:"𤾸";s:4:"𥁄";s:4:"ð¥„";s:4:"㿼";s:3:"㿼";s:4:"䀈";s:3:"䀈";s:4:"直";s:3:"ç›´";s:4:"ð¯¥";s:4:"𥃳";s:4:"𥃲";s:4:"𥃲";s:4:"𥄙";s:4:"𥄙";s:4:"𥄳";s:4:"𥄳";s:4:"眞";s:3:"眞";s:4:"真";s:3:"真";s:4:"真";s:3:"真";s:4:"睊";s:3:"çŠ";s:4:"䀹";s:3:"䀹";s:4:"瞋";s:3:"çž‹";s:4:"䁆";s:3:"ä†";s:4:"䂖";s:3:"ä‚–";s:4:"ð¯¥";s:4:"ð¥";s:4:"硎";s:3:"ç¡Ž";s:4:"ð¯¥";s:3:"碌";s:4:"ð¯¥";s:3:"磌";s:4:"䃣";s:3:"䃣";s:4:"𥘦";s:4:"𥘦";s:4:"祖";s:3:"祖";s:4:"𥚚";s:4:"𥚚";s:4:"𥛅";s:4:"𥛅";s:4:"福";s:3:"ç¦";s:4:"秫";s:3:"秫";s:4:"䄯";s:3:"䄯";s:4:"穀";s:3:"ç©€";s:4:"穊";s:3:"ç©Š";s:4:"穏";s:3:"ç©";s:4:"𥥼";s:4:"𥥼";s:4:"ð¯¥";s:4:"𥪧";s:4:"𥪧";s:4:"𥪧";s:4:"竮";s:3:"ç«®";s:4:"䈂";s:3:"䈂";s:4:"𥮫";s:4:"𥮫";s:4:"篆";s:3:"篆";s:4:"築";s:3:"築";s:4:"䈧";s:3:"䈧";s:4:"𥲀";s:4:"𥲀";s:4:"糒";s:3:"ç³’";s:4:"䊠";s:3:"䊠";s:4:"糨";s:3:"糨";s:4:"糣";s:3:"ç³£";s:4:"紀";s:3:"ç´€";s:4:"𥾆";s:4:"𥾆";s:4:"絣";s:3:"çµ£";s:4:"䌁";s:3:"äŒ";s:4:"緇";s:3:"ç·‡";s:4:"縂";s:3:"縂";s:4:"繅";s:3:"ç¹…";s:4:"䌴";s:3:"䌴";s:4:"𦈨";s:4:"𦈨";s:4:"𦉇";s:4:"𦉇";s:4:"䍙";s:3:"ä™";s:4:"𦋙";s:4:"𦋙";s:4:"罺";s:3:"罺";s:4:"𦌾";s:4:"𦌾";s:4:"羕";s:3:"羕";s:4:"翺";s:3:"翺";s:4:"者";s:3:"者";s:4:"𦓚";s:4:"𦓚";s:4:"𦔣";s:4:"𦔣";s:4:"聠";s:3:"è ";s:4:"𦖨";s:4:"𦖨";s:4:"聰";s:3:"è°";s:4:"𣍟";s:4:"ð£Ÿ";s:4:"ð¯¦";s:3:"ä•";s:4:"育";s:3:"育";s:4:"脃";s:3:"脃";s:4:"䐋";s:3:"ä‹";s:4:"脾";s:3:"脾";s:4:"媵";s:3:"媵";s:4:"𦞧";s:4:"𦞧";s:4:"𦞵";s:4:"𦞵";s:4:"𣎓";s:4:"𣎓";s:4:"𣎜";s:4:"𣎜";s:4:"舁";s:3:"èˆ";s:4:"舄";s:3:"舄";s:4:"ð¯¦";s:3:"辞";s:4:"䑫";s:3:"ä‘«";s:4:"ð¯¦";s:3:"芑";s:4:"ð¯¦";s:3:"芋";s:4:"芝";s:3:"èŠ";s:4:"劳";s:3:"劳";s:4:"花";s:3:"花";s:4:"芳";s:3:"芳";s:4:"芽";s:3:"芽";s:4:"苦";s:3:"苦";s:4:"𦬼";s:4:"𦬼";s:4:"若";s:3:"è‹¥";s:4:"茝";s:3:"èŒ";s:4:"荣";s:3:"è£";s:4:"莭";s:3:"莭";s:4:"茣";s:3:"茣";s:4:"ð¯¦";s:3:"莽";s:4:"菧";s:3:"è§";s:4:"著";s:3:"è‘—";s:4:"荓";s:3:"è“";s:4:"菊";s:3:"èŠ";s:4:"菌";s:3:"èŒ";s:4:"菜";s:3:"èœ";s:4:"𦰶";s:4:"𦰶";s:4:"𦵫";s:4:"𦵫";s:4:"𦳕";s:4:"𦳕";s:4:"䔫";s:3:"䔫";s:4:"蓱";s:3:"蓱";s:4:"蓳";s:3:"蓳";s:4:"蔖";s:3:"è”–";s:4:"𧏊";s:4:"ð§Š";s:4:"蕤";s:3:"蕤";s:4:"𦼬";s:4:"𦼬";s:4:"䕝";s:3:"ä•";s:4:"䕡";s:3:"ä•¡";s:4:"𦾱";s:4:"𦾱";s:4:"𧃒";s:4:"𧃒";s:4:"䕫";s:3:"ä•«";s:4:"虐";s:3:"è™";s:4:"虜";s:3:"虜";s:4:"虧";s:3:"虧";s:4:"虩";s:3:"虩";s:4:"蚩";s:3:"èš©";s:4:"蚈";s:3:"蚈";s:4:"蜎";s:3:"蜎";s:4:"蛢";s:3:"蛢";s:4:"蝹";s:3:"è¹";s:4:"蜨";s:3:"蜨";s:4:"蝫";s:3:"è«";s:4:"螆";s:3:"螆";s:4:"䗗";s:3:"ä——";s:4:"蟡";s:3:"蟡";s:4:"ð¯§";s:3:"è ";s:4:"䗹";s:3:"ä—¹";s:4:"衠";s:3:"è¡ ";s:4:"衣";s:3:"è¡£";s:4:"𧙧";s:4:"𧙧";s:4:"裗";s:3:"裗";s:4:"裞";s:3:"裞";s:4:"䘵";s:3:"䘵";s:4:"裺";s:3:"裺";s:4:"㒻";s:3:"ã’»";s:4:"𧢮";s:4:"𧢮";s:4:"𧥦";s:4:"𧥦";s:4:"ð¯§";s:3:"äš¾";s:4:"䛇";s:3:"䛇";s:4:"ð¯§";s:3:"誠";s:4:"ð¯§";s:3:"è«­";s:4:"變";s:3:"變";s:4:"豕";s:3:"豕";s:4:"𧲨";s:4:"𧲨";s:4:"貫";s:3:"貫";s:4:"賁";s:3:"è³";s:4:"贛";s:3:"è´›";s:4:"起";s:3:"èµ·";s:4:"𧼯";s:4:"𧼯";s:4:"𠠄";s:4:"ð  „";s:4:"跋";s:3:"è·‹";s:4:"趼";s:3:"趼";s:4:"跰";s:3:"è·°";s:4:"ð¯§";s:4:"𠣞";s:4:"軔";s:3:"è»”";s:4:"輸";s:3:"輸";s:4:"𨗒";s:4:"𨗒";s:4:"𨗭";s:4:"𨗭";s:4:"邔";s:3:"é‚”";s:4:"郱";s:3:"郱";s:4:"鄑";s:3:"é„‘";s:4:"𨜮";s:4:"𨜮";s:4:"鄛";s:3:"é„›";s:4:"鈸";s:3:"鈸";s:4:"鋗";s:3:"é‹—";s:4:"鋘";s:3:"鋘";s:4:"鉼";s:3:"鉼";s:4:"鏹";s:3:"é¹";s:4:"鐕";s:3:"é•";s:4:"𨯺";s:4:"𨯺";s:4:"開";s:3:"é–‹";s:4:"䦕";s:3:"䦕";s:4:"閷";s:3:"é–·";s:4:"𨵷";s:4:"𨵷";s:4:"䧦";s:3:"䧦";s:4:"雃";s:3:"雃";s:4:"嶲";s:3:"嶲";s:4:"霣";s:3:"霣";s:4:"𩅅";s:4:"ð©……";s:4:"𩈚";s:4:"𩈚";s:4:"䩮";s:3:"ä©®";s:4:"䩶";s:3:"䩶";s:4:"韠";s:3:"韠";s:4:"𩐊";s:4:"ð©Š";s:4:"䪲";s:3:"䪲";s:4:"𩒖";s:4:"ð©’–";s:4:"頋";s:3:"é ‹";s:4:"頋";s:3:"é ‹";s:4:"頩";s:3:"é ©";s:4:"ð¯¨";s:4:"ð©–¶";s:4:"飢";s:3:"飢";s:4:"䬳";s:3:"䬳";s:4:"餩";s:3:"餩";s:4:"馧";s:3:"馧";s:4:"駂";s:3:"駂";s:4:"駾";s:3:"駾";s:4:"䯎";s:3:"䯎";s:4:"𩬰";s:4:"𩬰";s:4:"鬒";s:3:"鬒";s:4:"鱀";s:3:"é±€";s:4:"鳽";s:3:"é³½";s:4:"ð¯¨";s:3:"䳎";s:4:"䳭";s:3:"ä³­";s:4:"ð¯¨";s:3:"鵧";s:4:"ð¯¨";s:4:"𪃎";s:4:"䳸";s:3:"䳸";s:4:"𪄅";s:4:"𪄅";s:4:"𪈎";s:4:"𪈎";s:4:"𪊑";s:4:"𪊑";s:4:"麻";s:3:"麻";s:4:"䵖";s:3:"äµ–";s:4:"黹";s:3:"黹";s:4:"黾";s:3:"黾";s:4:"鼅";s:3:"é¼…";s:4:"鼏";s:3:"é¼";s:4:"鼖";s:3:"é¼–";s:4:"鼻";s:3:"é¼»";s:4:"ð¯¨";s:4:"𪘀";}' );
+UtfNormal::$utfCheckNFC = unserialize( 'a:1221:{s:2:"Í€";s:1:"N";s:2:"Í";s:1:"N";s:2:"̓";s:1:"N";s:2:"Í„";s:1:"N";s:2:"Í´";s:1:"N";s:2:";";s:1:"N";s:2:"·";s:1:"N";s:3:"क़";s:1:"N";s:3:"ख़";s:1:"N";s:3:"ग़";s:1:"N";s:3:"ज़";s:1:"N";s:3:"ड़";s:1:"N";s:3:"à¥";s:1:"N";s:3:"फ़";s:1:"N";s:3:"य़";s:1:"N";s:3:"ড়";s:1:"N";s:3:"à§";s:1:"N";s:3:"য়";s:1:"N";s:3:"ਲ਼";s:1:"N";s:3:"ਸ਼";s:1:"N";s:3:"à©™";s:1:"N";s:3:"à©š";s:1:"N";s:3:"à©›";s:1:"N";s:3:"à©ž";s:1:"N";s:3:"à­œ";s:1:"N";s:3:"à­";s:1:"N";s:3:"གྷ";s:1:"N";s:3:"à½";s:1:"N";s:3:"དྷ";s:1:"N";s:3:"བྷ";s:1:"N";s:3:"ཛྷ";s:1:"N";s:3:"ཀྵ";s:1:"N";s:3:"ཱི";s:1:"N";s:3:"ཱུ";s:1:"N";s:3:"ྲྀ";s:1:"N";s:3:"ླྀ";s:1:"N";s:3:"à¾";s:1:"N";s:3:"ྒྷ";s:1:"N";s:3:"à¾";s:1:"N";s:3:"ྡྷ";s:1:"N";s:3:"ྦྷ";s:1:"N";s:3:"ྫྷ";s:1:"N";s:3:"ྐྵ";s:1:"N";s:3:"á½±";s:1:"N";s:3:"á½³";s:1:"N";s:3:"á½µ";s:1:"N";s:3:"á½·";s:1:"N";s:3:"á½¹";s:1:"N";s:3:"á½»";s:1:"N";s:3:"á½½";s:1:"N";s:3:"á¾»";s:1:"N";s:3:"á¾¾";s:1:"N";s:3:"Έ";s:1:"N";s:3:"á¿‹";s:1:"N";s:3:"á¿“";s:1:"N";s:3:"á¿›";s:1:"N";s:3:"á¿£";s:1:"N";s:3:"á¿«";s:1:"N";s:3:"á¿®";s:1:"N";s:3:"`";s:1:"N";s:3:"Ό";s:1:"N";s:3:"á¿»";s:1:"N";s:3:"´";s:1:"N";s:3:" ";s:1:"N";s:3:"â€";s:1:"N";s:3:"Ω";s:1:"N";s:3:"K";s:1:"N";s:3:"â„«";s:1:"N";s:3:"〈";s:1:"N";s:3:"〉";s:1:"N";s:3:"â«œ";s:1:"N";s:3:"豈";s:1:"N";s:3:"ï¤";s:1:"N";s:3:"車";s:1:"N";s:3:"賈";s:1:"N";s:3:"滑";s:1:"N";s:3:"串";s:1:"N";s:3:"句";s:1:"N";s:3:"龜";s:1:"N";s:3:"龜";s:1:"N";s:3:"契";s:1:"N";s:3:"金";s:1:"N";s:3:"喇";s:1:"N";s:3:"奈";s:1:"N";s:3:"ï¤";s:1:"N";s:3:"癩";s:1:"N";s:3:"ï¤";s:1:"N";s:3:"ï¤";s:1:"N";s:3:"螺";s:1:"N";s:3:"裸";s:1:"N";s:3:"邏";s:1:"N";s:3:"樂";s:1:"N";s:3:"洛";s:1:"N";s:3:"烙";s:1:"N";s:3:"珞";s:1:"N";s:3:"落";s:1:"N";s:3:"酪";s:1:"N";s:3:"駱";s:1:"N";s:3:"亂";s:1:"N";s:3:"卵";s:1:"N";s:3:"ï¤";s:1:"N";s:3:"爛";s:1:"N";s:3:"蘭";s:1:"N";s:3:"鸞";s:1:"N";s:3:"嵐";s:1:"N";s:3:"濫";s:1:"N";s:3:"藍";s:1:"N";s:3:"襤";s:1:"N";s:3:"拉";s:1:"N";s:3:"臘";s:1:"N";s:3:"蠟";s:1:"N";s:3:"廊";s:1:"N";s:3:"朗";s:1:"N";s:3:"浪";s:1:"N";s:3:"狼";s:1:"N";s:3:"郎";s:1:"N";s:3:"來";s:1:"N";s:3:"冷";s:1:"N";s:3:"勞";s:1:"N";s:3:"擄";s:1:"N";s:3:"櫓";s:1:"N";s:3:"爐";s:1:"N";s:3:"盧";s:1:"N";s:3:"老";s:1:"N";s:3:"蘆";s:1:"N";s:3:"虜";s:1:"N";s:3:"路";s:1:"N";s:3:"露";s:1:"N";s:3:"魯";s:1:"N";s:3:"鷺";s:1:"N";s:3:"碌";s:1:"N";s:3:"祿";s:1:"N";s:3:"綠";s:1:"N";s:3:"菉";s:1:"N";s:3:"錄";s:1:"N";s:3:"鹿";s:1:"N";s:3:"ï¥";s:1:"N";s:3:"壟";s:1:"N";s:3:"弄";s:1:"N";s:3:"籠";s:1:"N";s:3:"聾";s:1:"N";s:3:"牢";s:1:"N";s:3:"磊";s:1:"N";s:3:"賂";s:1:"N";s:3:"雷";s:1:"N";s:3:"壘";s:1:"N";s:3:"屢";s:1:"N";s:3:"樓";s:1:"N";s:3:"ï¥";s:1:"N";s:3:"漏";s:1:"N";s:3:"ï¥";s:1:"N";s:3:"ï¥";s:1:"N";s:3:"陋";s:1:"N";s:3:"勒";s:1:"N";s:3:"肋";s:1:"N";s:3:"凜";s:1:"N";s:3:"凌";s:1:"N";s:3:"稜";s:1:"N";s:3:"綾";s:1:"N";s:3:"菱";s:1:"N";s:3:"陵";s:1:"N";s:3:"讀";s:1:"N";s:3:"拏";s:1:"N";s:3:"樂";s:1:"N";s:3:"ï¥";s:1:"N";s:3:"丹";s:1:"N";s:3:"寧";s:1:"N";s:3:"怒";s:1:"N";s:3:"率";s:1:"N";s:3:"異";s:1:"N";s:3:"北";s:1:"N";s:3:"磻";s:1:"N";s:3:"便";s:1:"N";s:3:"復";s:1:"N";s:3:"不";s:1:"N";s:3:"泌";s:1:"N";s:3:"數";s:1:"N";s:3:"索";s:1:"N";s:3:"參";s:1:"N";s:3:"塞";s:1:"N";s:3:"省";s:1:"N";s:3:"葉";s:1:"N";s:3:"說";s:1:"N";s:3:"殺";s:1:"N";s:3:"辰";s:1:"N";s:3:"沈";s:1:"N";s:3:"拾";s:1:"N";s:3:"若";s:1:"N";s:3:"掠";s:1:"N";s:3:"略";s:1:"N";s:3:"亮";s:1:"N";s:3:"兩";s:1:"N";s:3:"凉";s:1:"N";s:3:"梁";s:1:"N";s:3:"糧";s:1:"N";s:3:"良";s:1:"N";s:3:"諒";s:1:"N";s:3:"量";s:1:"N";s:3:"勵";s:1:"N";s:3:"呂";s:1:"N";s:3:"ï¦";s:1:"N";s:3:"廬";s:1:"N";s:3:"旅";s:1:"N";s:3:"濾";s:1:"N";s:3:"礪";s:1:"N";s:3:"閭";s:1:"N";s:3:"驪";s:1:"N";s:3:"麗";s:1:"N";s:3:"黎";s:1:"N";s:3:"力";s:1:"N";s:3:"曆";s:1:"N";s:3:"歷";s:1:"N";s:3:"ï¦";s:1:"N";s:3:"年";s:1:"N";s:3:"ï¦";s:1:"N";s:3:"ï¦";s:1:"N";s:3:"撚";s:1:"N";s:3:"漣";s:1:"N";s:3:"煉";s:1:"N";s:3:"璉";s:1:"N";s:3:"秊";s:1:"N";s:3:"練";s:1:"N";s:3:"聯";s:1:"N";s:3:"輦";s:1:"N";s:3:"蓮";s:1:"N";s:3:"連";s:1:"N";s:3:"鍊";s:1:"N";s:3:"列";s:1:"N";s:3:"ï¦";s:1:"N";s:3:"咽";s:1:"N";s:3:"烈";s:1:"N";s:3:"裂";s:1:"N";s:3:"說";s:1:"N";s:3:"廉";s:1:"N";s:3:"念";s:1:"N";s:3:"捻";s:1:"N";s:3:"殮";s:1:"N";s:3:"簾";s:1:"N";s:3:"獵";s:1:"N";s:3:"令";s:1:"N";s:3:"囹";s:1:"N";s:3:"寧";s:1:"N";s:3:"嶺";s:1:"N";s:3:"怜";s:1:"N";s:3:"玲";s:1:"N";s:3:"瑩";s:1:"N";s:3:"羚";s:1:"N";s:3:"聆";s:1:"N";s:3:"鈴";s:1:"N";s:3:"零";s:1:"N";s:3:"靈";s:1:"N";s:3:"領";s:1:"N";s:3:"例";s:1:"N";s:3:"禮";s:1:"N";s:3:"醴";s:1:"N";s:3:"隸";s:1:"N";s:3:"惡";s:1:"N";s:3:"了";s:1:"N";s:3:"僚";s:1:"N";s:3:"寮";s:1:"N";s:3:"尿";s:1:"N";s:3:"料";s:1:"N";s:3:"樂";s:1:"N";s:3:"燎";s:1:"N";s:3:"ï§";s:1:"N";s:3:"蓼";s:1:"N";s:3:"遼";s:1:"N";s:3:"龍";s:1:"N";s:3:"暈";s:1:"N";s:3:"阮";s:1:"N";s:3:"劉";s:1:"N";s:3:"杻";s:1:"N";s:3:"柳";s:1:"N";s:3:"流";s:1:"N";s:3:"溜";s:1:"N";s:3:"琉";s:1:"N";s:3:"ï§";s:1:"N";s:3:"硫";s:1:"N";s:3:"ï§";s:1:"N";s:3:"ï§";s:1:"N";s:3:"六";s:1:"N";s:3:"戮";s:1:"N";s:3:"陸";s:1:"N";s:3:"倫";s:1:"N";s:3:"崙";s:1:"N";s:3:"淪";s:1:"N";s:3:"輪";s:1:"N";s:3:"律";s:1:"N";s:3:"慄";s:1:"N";s:3:"栗";s:1:"N";s:3:"率";s:1:"N";s:3:"隆";s:1:"N";s:3:"ï§";s:1:"N";s:3:"吏";s:1:"N";s:3:"履";s:1:"N";s:3:"易";s:1:"N";s:3:"李";s:1:"N";s:3:"梨";s:1:"N";s:3:"泥";s:1:"N";s:3:"理";s:1:"N";s:3:"痢";s:1:"N";s:3:"罹";s:1:"N";s:3:"裏";s:1:"N";s:3:"裡";s:1:"N";s:3:"里";s:1:"N";s:3:"離";s:1:"N";s:3:"匿";s:1:"N";s:3:"溺";s:1:"N";s:3:"吝";s:1:"N";s:3:"燐";s:1:"N";s:3:"璘";s:1:"N";s:3:"藺";s:1:"N";s:3:"隣";s:1:"N";s:3:"鱗";s:1:"N";s:3:"麟";s:1:"N";s:3:"林";s:1:"N";s:3:"淋";s:1:"N";s:3:"臨";s:1:"N";s:3:"立";s:1:"N";s:3:"笠";s:1:"N";s:3:"粒";s:1:"N";s:3:"狀";s:1:"N";s:3:"炙";s:1:"N";s:3:"識";s:1:"N";s:3:"什";s:1:"N";s:3:"茶";s:1:"N";s:3:"刺";s:1:"N";s:3:"切";s:1:"N";s:3:"ï¨";s:1:"N";s:3:"拓";s:1:"N";s:3:"糖";s:1:"N";s:3:"宅";s:1:"N";s:3:"洞";s:1:"N";s:3:"暴";s:1:"N";s:3:"輻";s:1:"N";s:3:"行";s:1:"N";s:3:"降";s:1:"N";s:3:"見";s:1:"N";s:3:"廓";s:1:"N";s:3:"兀";s:1:"N";s:3:"ï¨";s:1:"N";s:3:"ï¨";s:1:"N";s:3:"晴";s:1:"N";s:3:"凞";s:1:"N";s:3:"猪";s:1:"N";s:3:"益";s:1:"N";s:3:"礼";s:1:"N";s:3:"神";s:1:"N";s:3:"祥";s:1:"N";s:3:"福";s:1:"N";s:3:"靖";s:1:"N";s:3:"ï¨";s:1:"N";s:3:"羽";s:1:"N";s:3:"蘒";s:1:"N";s:3:"諸";s:1:"N";s:3:"逸";s:1:"N";s:3:"都";s:1:"N";s:3:"飯";s:1:"N";s:3:"飼";s:1:"N";s:3:"館";s:1:"N";s:3:"鶴";s:1:"N";s:3:"侮";s:1:"N";s:3:"僧";s:1:"N";s:3:"免";s:1:"N";s:3:"勉";s:1:"N";s:3:"勤";s:1:"N";s:3:"卑";s:1:"N";s:3:"喝";s:1:"N";s:3:"嘆";s:1:"N";s:3:"器";s:1:"N";s:3:"塀";s:1:"N";s:3:"墨";s:1:"N";s:3:"層";s:1:"N";s:3:"屮";s:1:"N";s:3:"悔";s:1:"N";s:3:"慨";s:1:"N";s:3:"憎";s:1:"N";s:3:"ï©€";s:1:"N";s:3:"ï©";s:1:"N";s:3:"ï©‚";s:1:"N";s:3:"暑";s:1:"N";s:3:"ï©„";s:1:"N";s:3:"ï©…";s:1:"N";s:3:"渚";s:1:"N";s:3:"漢";s:1:"N";s:3:"煮";s:1:"N";s:3:"爫";s:1:"N";s:3:"ï©Š";s:1:"N";s:3:"ï©‹";s:1:"N";s:3:"ï©Œ";s:1:"N";s:3:"ï©";s:1:"N";s:3:"ï©Ž";s:1:"N";s:3:"ï©";s:1:"N";s:3:"ï©";s:1:"N";s:3:"ï©‘";s:1:"N";s:3:"ï©’";s:1:"N";s:3:"ï©“";s:1:"N";s:3:"ï©”";s:1:"N";s:3:"ï©•";s:1:"N";s:3:"ï©–";s:1:"N";s:3:"ï©—";s:1:"N";s:3:"縉";s:1:"N";s:3:"ï©™";s:1:"N";s:3:"ï©š";s:1:"N";s:3:"ï©›";s:1:"N";s:3:"ï©œ";s:1:"N";s:3:"ï©";s:1:"N";s:3:"ï©ž";s:1:"N";s:3:"ï©Ÿ";s:1:"N";s:3:"ï© ";s:1:"N";s:3:"ï©¡";s:1:"N";s:3:"ï©¢";s:1:"N";s:3:"ï©£";s:1:"N";s:3:"賓";s:1:"N";s:3:"ï©¥";s:1:"N";s:3:"辶";s:1:"N";s:3:"逸";s:1:"N";s:3:"難";s:1:"N";s:3:"ï©©";s:1:"N";s:3:"頻";s:1:"N";s:3:"ï©«";s:1:"N";s:3:"𤋮";s:1:"N";s:3:"ï©­";s:1:"N";s:3:"ï©°";s:1:"N";s:3:"况";s:1:"N";s:3:"全";s:1:"N";s:3:"侀";s:1:"N";s:3:"ï©´";s:1:"N";s:3:"冀";s:1:"N";s:3:"勇";s:1:"N";s:3:"ï©·";s:1:"N";s:3:"喝";s:1:"N";s:3:"啕";s:1:"N";s:3:"喙";s:1:"N";s:3:"ï©»";s:1:"N";s:3:"塚";s:1:"N";s:3:"墳";s:1:"N";s:3:"奄";s:1:"N";s:3:"ï©¿";s:1:"N";s:3:"婢";s:1:"N";s:3:"ïª";s:1:"N";s:3:"廒";s:1:"N";s:3:"廙";s:1:"N";s:3:"彩";s:1:"N";s:3:"徭";s:1:"N";s:3:"惘";s:1:"N";s:3:"慎";s:1:"N";s:3:"愈";s:1:"N";s:3:"憎";s:1:"N";s:3:"慠";s:1:"N";s:3:"懲";s:1:"N";s:3:"戴";s:1:"N";s:3:"ïª";s:1:"N";s:3:"搜";s:1:"N";s:3:"ïª";s:1:"N";s:3:"ïª";s:1:"N";s:3:"晴";s:1:"N";s:3:"朗";s:1:"N";s:3:"望";s:1:"N";s:3:"杖";s:1:"N";s:3:"歹";s:1:"N";s:3:"殺";s:1:"N";s:3:"流";s:1:"N";s:3:"滛";s:1:"N";s:3:"滋";s:1:"N";s:3:"漢";s:1:"N";s:3:"瀞";s:1:"N";s:3:"煮";s:1:"N";s:3:"ïª";s:1:"N";s:3:"爵";s:1:"N";s:3:"犯";s:1:"N";s:3:"猪";s:1:"N";s:3:"瑱";s:1:"N";s:3:"甆";s:1:"N";s:3:"画";s:1:"N";s:3:"瘝";s:1:"N";s:3:"瘟";s:1:"N";s:3:"益";s:1:"N";s:3:"盛";s:1:"N";s:3:"直";s:1:"N";s:3:"睊";s:1:"N";s:3:"着";s:1:"N";s:3:"磌";s:1:"N";s:3:"窱";s:1:"N";s:3:"節";s:1:"N";s:3:"类";s:1:"N";s:3:"絛";s:1:"N";s:3:"練";s:1:"N";s:3:"缾";s:1:"N";s:3:"者";s:1:"N";s:3:"荒";s:1:"N";s:3:"華";s:1:"N";s:3:"蝹";s:1:"N";s:3:"襁";s:1:"N";s:3:"覆";s:1:"N";s:3:"視";s:1:"N";s:3:"調";s:1:"N";s:3:"諸";s:1:"N";s:3:"請";s:1:"N";s:3:"謁";s:1:"N";s:3:"諾";s:1:"N";s:3:"諭";s:1:"N";s:3:"謹";s:1:"N";s:3:"ï«€";s:1:"N";s:3:"ï«";s:1:"N";s:3:"ï«‚";s:1:"N";s:3:"遲";s:1:"N";s:3:"ï«„";s:1:"N";s:3:"ï«…";s:1:"N";s:3:"陼";s:1:"N";s:3:"難";s:1:"N";s:3:"靖";s:1:"N";s:3:"韛";s:1:"N";s:3:"ï«Š";s:1:"N";s:3:"ï«‹";s:1:"N";s:3:"ï«Œ";s:1:"N";s:3:"ï«";s:1:"N";s:3:"ï«Ž";s:1:"N";s:3:"ï«";s:1:"N";s:3:"ï«";s:1:"N";s:3:"ï«‘";s:1:"N";s:3:"ï«’";s:1:"N";s:3:"ï«“";s:1:"N";s:3:"ï«”";s:1:"N";s:3:"ï«•";s:1:"N";s:3:"ï«–";s:1:"N";s:3:"ï«—";s:1:"N";s:3:"齃";s:1:"N";s:3:"ï«™";s:1:"N";s:3:"ï¬";s:1:"N";s:3:"ײַ";s:1:"N";s:3:"שׁ";s:1:"N";s:3:"שׂ";s:1:"N";s:3:"שּׁ";s:1:"N";s:3:"שּׂ";s:1:"N";s:3:"אַ";s:1:"N";s:3:"אָ";s:1:"N";s:3:"אּ";s:1:"N";s:3:"בּ";s:1:"N";s:3:"גּ";s:1:"N";s:3:"דּ";s:1:"N";s:3:"הּ";s:1:"N";s:3:"וּ";s:1:"N";s:3:"זּ";s:1:"N";s:3:"טּ";s:1:"N";s:3:"יּ";s:1:"N";s:3:"ךּ";s:1:"N";s:3:"כּ";s:1:"N";s:3:"לּ";s:1:"N";s:3:"מּ";s:1:"N";s:3:"ï­€";s:1:"N";s:3:"ï­";s:1:"N";s:3:"ï­ƒ";s:1:"N";s:3:"ï­„";s:1:"N";s:3:"ï­†";s:1:"N";s:3:"ï­‡";s:1:"N";s:3:"ï­ˆ";s:1:"N";s:3:"ï­‰";s:1:"N";s:3:"ï­Š";s:1:"N";s:3:"ï­‹";s:1:"N";s:3:"ï­Œ";s:1:"N";s:3:"ï­";s:1:"N";s:3:"ï­Ž";s:1:"N";s:4:"ð…ž";s:1:"N";s:4:"ð…Ÿ";s:1:"N";s:4:"ð… ";s:1:"N";s:4:"ð…¡";s:1:"N";s:4:"ð…¢";s:1:"N";s:4:"ð…£";s:1:"N";s:4:"ð…¤";s:1:"N";s:4:"ð†»";s:1:"N";s:4:"ð†¼";s:1:"N";s:4:"ð†½";s:1:"N";s:4:"ð†¾";s:1:"N";s:4:"ð†¿";s:1:"N";s:4:"ð‡€";s:1:"N";s:4:"丽";s:1:"N";s:4:"ð¯ ";s:1:"N";s:4:"乁";s:1:"N";s:4:"𠄢";s:1:"N";s:4:"你";s:1:"N";s:4:"侮";s:1:"N";s:4:"侻";s:1:"N";s:4:"倂";s:1:"N";s:4:"偺";s:1:"N";s:4:"備";s:1:"N";s:4:"僧";s:1:"N";s:4:"像";s:1:"N";s:4:"㒞";s:1:"N";s:4:"ð¯ ";s:1:"N";s:4:"免";s:1:"N";s:4:"ð¯ ";s:1:"N";s:4:"ð¯ ";s:1:"N";s:4:"具";s:1:"N";s:4:"𠔜";s:1:"N";s:4:"㒹";s:1:"N";s:4:"內";s:1:"N";s:4:"再";s:1:"N";s:4:"𠕋";s:1:"N";s:4:"冗";s:1:"N";s:4:"冤";s:1:"N";s:4:"仌";s:1:"N";s:4:"冬";s:1:"N";s:4:"况";s:1:"N";s:4:"𩇟";s:1:"N";s:4:"ð¯ ";s:1:"N";s:4:"刃";s:1:"N";s:4:"㓟";s:1:"N";s:4:"刻";s:1:"N";s:4:"剆";s:1:"N";s:4:"割";s:1:"N";s:4:"剷";s:1:"N";s:4:"㔕";s:1:"N";s:4:"勇";s:1:"N";s:4:"勉";s:1:"N";s:4:"勤";s:1:"N";s:4:"勺";s:1:"N";s:4:"包";s:1:"N";s:4:"匆";s:1:"N";s:4:"北";s:1:"N";s:4:"卉";s:1:"N";s:4:"卑";s:1:"N";s:4:"博";s:1:"N";s:4:"即";s:1:"N";s:4:"卽";s:1:"N";s:4:"卿";s:1:"N";s:4:"卿";s:1:"N";s:4:"卿";s:1:"N";s:4:"𠨬";s:1:"N";s:4:"灰";s:1:"N";s:4:"及";s:1:"N";s:4:"叟";s:1:"N";s:4:"𠭣";s:1:"N";s:4:"叫";s:1:"N";s:4:"叱";s:1:"N";s:4:"吆";s:1:"N";s:4:"咞";s:1:"N";s:4:"吸";s:1:"N";s:4:"呈";s:1:"N";s:4:"周";s:1:"N";s:4:"咢";s:1:"N";s:4:"ð¯¡";s:1:"N";s:4:"唐";s:1:"N";s:4:"啓";s:1:"N";s:4:"啣";s:1:"N";s:4:"善";s:1:"N";s:4:"善";s:1:"N";s:4:"喙";s:1:"N";s:4:"喫";s:1:"N";s:4:"喳";s:1:"N";s:4:"嗂";s:1:"N";s:4:"圖";s:1:"N";s:4:"嘆";s:1:"N";s:4:"ð¯¡";s:1:"N";s:4:"噑";s:1:"N";s:4:"ð¯¡";s:1:"N";s:4:"ð¯¡";s:1:"N";s:4:"壮";s:1:"N";s:4:"城";s:1:"N";s:4:"埴";s:1:"N";s:4:"堍";s:1:"N";s:4:"型";s:1:"N";s:4:"堲";s:1:"N";s:4:"報";s:1:"N";s:4:"墬";s:1:"N";s:4:"𡓤";s:1:"N";s:4:"売";s:1:"N";s:4:"壷";s:1:"N";s:4:"夆";s:1:"N";s:4:"ð¯¡";s:1:"N";s:4:"夢";s:1:"N";s:4:"奢";s:1:"N";s:4:"𡚨";s:1:"N";s:4:"𡛪";s:1:"N";s:4:"姬";s:1:"N";s:4:"娛";s:1:"N";s:4:"娧";s:1:"N";s:4:"姘";s:1:"N";s:4:"婦";s:1:"N";s:4:"㛮";s:1:"N";s:4:"㛼";s:1:"N";s:4:"嬈";s:1:"N";s:4:"嬾";s:1:"N";s:4:"嬾";s:1:"N";s:4:"𡧈";s:1:"N";s:4:"寃";s:1:"N";s:4:"寘";s:1:"N";s:4:"寧";s:1:"N";s:4:"寳";s:1:"N";s:4:"𡬘";s:1:"N";s:4:"寿";s:1:"N";s:4:"将";s:1:"N";s:4:"当";s:1:"N";s:4:"尢";s:1:"N";s:4:"㞁";s:1:"N";s:4:"屠";s:1:"N";s:4:"屮";s:1:"N";s:4:"峀";s:1:"N";s:4:"岍";s:1:"N";s:4:"𡷤";s:1:"N";s:4:"嵃";s:1:"N";s:4:"𡷦";s:1:"N";s:4:"嵮";s:1:"N";s:4:"嵫";s:1:"N";s:4:"嵼";s:1:"N";s:4:"ð¯¢";s:1:"N";s:4:"巢";s:1:"N";s:4:"㠯";s:1:"N";s:4:"巽";s:1:"N";s:4:"帨";s:1:"N";s:4:"帽";s:1:"N";s:4:"幩";s:1:"N";s:4:"㡢";s:1:"N";s:4:"𢆃";s:1:"N";s:4:"㡼";s:1:"N";s:4:"庰";s:1:"N";s:4:"庳";s:1:"N";s:4:"ð¯¢";s:1:"N";s:4:"廊";s:1:"N";s:4:"ð¯¢";s:1:"N";s:4:"ð¯¢";s:1:"N";s:4:"𢌱";s:1:"N";s:4:"𢌱";s:1:"N";s:4:"舁";s:1:"N";s:4:"弢";s:1:"N";s:4:"弢";s:1:"N";s:4:"㣇";s:1:"N";s:4:"𣊸";s:1:"N";s:4:"𦇚";s:1:"N";s:4:"形";s:1:"N";s:4:"彫";s:1:"N";s:4:"㣣";s:1:"N";s:4:"徚";s:1:"N";s:4:"ð¯¢";s:1:"N";s:4:"志";s:1:"N";s:4:"忹";s:1:"N";s:4:"悁";s:1:"N";s:4:"㤺";s:1:"N";s:4:"㤜";s:1:"N";s:4:"悔";s:1:"N";s:4:"𢛔";s:1:"N";s:4:"惇";s:1:"N";s:4:"慈";s:1:"N";s:4:"慌";s:1:"N";s:4:"慎";s:1:"N";s:4:"慌";s:1:"N";s:4:"慺";s:1:"N";s:4:"憎";s:1:"N";s:4:"憲";s:1:"N";s:4:"憤";s:1:"N";s:4:"憯";s:1:"N";s:4:"懞";s:1:"N";s:4:"懲";s:1:"N";s:4:"懶";s:1:"N";s:4:"成";s:1:"N";s:4:"戛";s:1:"N";s:4:"扝";s:1:"N";s:4:"抱";s:1:"N";s:4:"拔";s:1:"N";s:4:"捐";s:1:"N";s:4:"𢬌";s:1:"N";s:4:"挽";s:1:"N";s:4:"拼";s:1:"N";s:4:"捨";s:1:"N";s:4:"掃";s:1:"N";s:4:"揤";s:1:"N";s:4:"𢯱";s:1:"N";s:4:"搢";s:1:"N";s:4:"揅";s:1:"N";s:4:"ð¯£";s:1:"N";s:4:"㨮";s:1:"N";s:4:"摩";s:1:"N";s:4:"摾";s:1:"N";s:4:"撝";s:1:"N";s:4:"摷";s:1:"N";s:4:"㩬";s:1:"N";s:4:"敏";s:1:"N";s:4:"敬";s:1:"N";s:4:"𣀊";s:1:"N";s:4:"旣";s:1:"N";s:4:"書";s:1:"N";s:4:"ð¯£";s:1:"N";s:4:"㬙";s:1:"N";s:4:"ð¯£";s:1:"N";s:4:"ð¯£";s:1:"N";s:4:"㫤";s:1:"N";s:4:"冒";s:1:"N";s:4:"冕";s:1:"N";s:4:"最";s:1:"N";s:4:"暜";s:1:"N";s:4:"肭";s:1:"N";s:4:"䏙";s:1:"N";s:4:"朗";s:1:"N";s:4:"望";s:1:"N";s:4:"朡";s:1:"N";s:4:"杞";s:1:"N";s:4:"杓";s:1:"N";s:4:"ð¯£";s:1:"N";s:4:"㭉";s:1:"N";s:4:"柺";s:1:"N";s:4:"枅";s:1:"N";s:4:"桒";s:1:"N";s:4:"梅";s:1:"N";s:4:"𣑭";s:1:"N";s:4:"梎";s:1:"N";s:4:"栟";s:1:"N";s:4:"椔";s:1:"N";s:4:"㮝";s:1:"N";s:4:"楂";s:1:"N";s:4:"榣";s:1:"N";s:4:"槪";s:1:"N";s:4:"檨";s:1:"N";s:4:"𣚣";s:1:"N";s:4:"櫛";s:1:"N";s:4:"㰘";s:1:"N";s:4:"次";s:1:"N";s:4:"𣢧";s:1:"N";s:4:"歔";s:1:"N";s:4:"㱎";s:1:"N";s:4:"歲";s:1:"N";s:4:"殟";s:1:"N";s:4:"殺";s:1:"N";s:4:"殻";s:1:"N";s:4:"𣪍";s:1:"N";s:4:"𡴋";s:1:"N";s:4:"𣫺";s:1:"N";s:4:"汎";s:1:"N";s:4:"𣲼";s:1:"N";s:4:"沿";s:1:"N";s:4:"泍";s:1:"N";s:4:"汧";s:1:"N";s:4:"洖";s:1:"N";s:4:"派";s:1:"N";s:4:"ð¯¤";s:1:"N";s:4:"流";s:1:"N";s:4:"浩";s:1:"N";s:4:"浸";s:1:"N";s:4:"涅";s:1:"N";s:4:"𣴞";s:1:"N";s:4:"洴";s:1:"N";s:4:"港";s:1:"N";s:4:"湮";s:1:"N";s:4:"㴳";s:1:"N";s:4:"滋";s:1:"N";s:4:"滇";s:1:"N";s:4:"ð¯¤";s:1:"N";s:4:"淹";s:1:"N";s:4:"ð¯¤";s:1:"N";s:4:"ð¯¤";s:1:"N";s:4:"𣾎";s:1:"N";s:4:"濆";s:1:"N";s:4:"瀹";s:1:"N";s:4:"瀞";s:1:"N";s:4:"瀛";s:1:"N";s:4:"㶖";s:1:"N";s:4:"灊";s:1:"N";s:4:"災";s:1:"N";s:4:"灷";s:1:"N";s:4:"炭";s:1:"N";s:4:"𠔥";s:1:"N";s:4:"煅";s:1:"N";s:4:"ð¯¤";s:1:"N";s:4:"熜";s:1:"N";s:4:"𤎫";s:1:"N";s:4:"爨";s:1:"N";s:4:"爵";s:1:"N";s:4:"牐";s:1:"N";s:4:"𤘈";s:1:"N";s:4:"犀";s:1:"N";s:4:"犕";s:1:"N";s:4:"𤜵";s:1:"N";s:4:"𤠔";s:1:"N";s:4:"獺";s:1:"N";s:4:"王";s:1:"N";s:4:"㺬";s:1:"N";s:4:"玥";s:1:"N";s:4:"㺸";s:1:"N";s:4:"㺸";s:1:"N";s:4:"瑇";s:1:"N";s:4:"瑜";s:1:"N";s:4:"瑱";s:1:"N";s:4:"璅";s:1:"N";s:4:"瓊";s:1:"N";s:4:"㼛";s:1:"N";s:4:"甤";s:1:"N";s:4:"𤰶";s:1:"N";s:4:"甾";s:1:"N";s:4:"𤲒";s:1:"N";s:4:"異";s:1:"N";s:4:"𢆟";s:1:"N";s:4:"瘐";s:1:"N";s:4:"𤾡";s:1:"N";s:4:"𤾸";s:1:"N";s:4:"𥁄";s:1:"N";s:4:"㿼";s:1:"N";s:4:"䀈";s:1:"N";s:4:"直";s:1:"N";s:4:"ð¯¥";s:1:"N";s:4:"𥃲";s:1:"N";s:4:"𥄙";s:1:"N";s:4:"𥄳";s:1:"N";s:4:"眞";s:1:"N";s:4:"真";s:1:"N";s:4:"真";s:1:"N";s:4:"睊";s:1:"N";s:4:"䀹";s:1:"N";s:4:"瞋";s:1:"N";s:4:"䁆";s:1:"N";s:4:"䂖";s:1:"N";s:4:"ð¯¥";s:1:"N";s:4:"硎";s:1:"N";s:4:"ð¯¥";s:1:"N";s:4:"ð¯¥";s:1:"N";s:4:"䃣";s:1:"N";s:4:"𥘦";s:1:"N";s:4:"祖";s:1:"N";s:4:"𥚚";s:1:"N";s:4:"𥛅";s:1:"N";s:4:"福";s:1:"N";s:4:"秫";s:1:"N";s:4:"䄯";s:1:"N";s:4:"穀";s:1:"N";s:4:"穊";s:1:"N";s:4:"穏";s:1:"N";s:4:"𥥼";s:1:"N";s:4:"ð¯¥";s:1:"N";s:4:"𥪧";s:1:"N";s:4:"竮";s:1:"N";s:4:"䈂";s:1:"N";s:4:"𥮫";s:1:"N";s:4:"篆";s:1:"N";s:4:"築";s:1:"N";s:4:"䈧";s:1:"N";s:4:"𥲀";s:1:"N";s:4:"糒";s:1:"N";s:4:"䊠";s:1:"N";s:4:"糨";s:1:"N";s:4:"糣";s:1:"N";s:4:"紀";s:1:"N";s:4:"𥾆";s:1:"N";s:4:"絣";s:1:"N";s:4:"䌁";s:1:"N";s:4:"緇";s:1:"N";s:4:"縂";s:1:"N";s:4:"繅";s:1:"N";s:4:"䌴";s:1:"N";s:4:"𦈨";s:1:"N";s:4:"𦉇";s:1:"N";s:4:"䍙";s:1:"N";s:4:"𦋙";s:1:"N";s:4:"罺";s:1:"N";s:4:"𦌾";s:1:"N";s:4:"羕";s:1:"N";s:4:"翺";s:1:"N";s:4:"者";s:1:"N";s:4:"𦓚";s:1:"N";s:4:"𦔣";s:1:"N";s:4:"聠";s:1:"N";s:4:"𦖨";s:1:"N";s:4:"聰";s:1:"N";s:4:"𣍟";s:1:"N";s:4:"ð¯¦";s:1:"N";s:4:"育";s:1:"N";s:4:"脃";s:1:"N";s:4:"䐋";s:1:"N";s:4:"脾";s:1:"N";s:4:"媵";s:1:"N";s:4:"𦞧";s:1:"N";s:4:"𦞵";s:1:"N";s:4:"𣎓";s:1:"N";s:4:"𣎜";s:1:"N";s:4:"舁";s:1:"N";s:4:"舄";s:1:"N";s:4:"ð¯¦";s:1:"N";s:4:"䑫";s:1:"N";s:4:"ð¯¦";s:1:"N";s:4:"ð¯¦";s:1:"N";s:4:"芝";s:1:"N";s:4:"劳";s:1:"N";s:4:"花";s:1:"N";s:4:"芳";s:1:"N";s:4:"芽";s:1:"N";s:4:"苦";s:1:"N";s:4:"𦬼";s:1:"N";s:4:"若";s:1:"N";s:4:"茝";s:1:"N";s:4:"荣";s:1:"N";s:4:"莭";s:1:"N";s:4:"茣";s:1:"N";s:4:"ð¯¦";s:1:"N";s:4:"菧";s:1:"N";s:4:"著";s:1:"N";s:4:"荓";s:1:"N";s:4:"菊";s:1:"N";s:4:"菌";s:1:"N";s:4:"菜";s:1:"N";s:4:"𦰶";s:1:"N";s:4:"𦵫";s:1:"N";s:4:"𦳕";s:1:"N";s:4:"䔫";s:1:"N";s:4:"蓱";s:1:"N";s:4:"蓳";s:1:"N";s:4:"蔖";s:1:"N";s:4:"𧏊";s:1:"N";s:4:"蕤";s:1:"N";s:4:"𦼬";s:1:"N";s:4:"䕝";s:1:"N";s:4:"䕡";s:1:"N";s:4:"𦾱";s:1:"N";s:4:"𧃒";s:1:"N";s:4:"䕫";s:1:"N";s:4:"虐";s:1:"N";s:4:"虜";s:1:"N";s:4:"虧";s:1:"N";s:4:"虩";s:1:"N";s:4:"蚩";s:1:"N";s:4:"蚈";s:1:"N";s:4:"蜎";s:1:"N";s:4:"蛢";s:1:"N";s:4:"蝹";s:1:"N";s:4:"蜨";s:1:"N";s:4:"蝫";s:1:"N";s:4:"螆";s:1:"N";s:4:"䗗";s:1:"N";s:4:"蟡";s:1:"N";s:4:"ð¯§";s:1:"N";s:4:"䗹";s:1:"N";s:4:"衠";s:1:"N";s:4:"衣";s:1:"N";s:4:"𧙧";s:1:"N";s:4:"裗";s:1:"N";s:4:"裞";s:1:"N";s:4:"䘵";s:1:"N";s:4:"裺";s:1:"N";s:4:"㒻";s:1:"N";s:4:"𧢮";s:1:"N";s:4:"𧥦";s:1:"N";s:4:"ð¯§";s:1:"N";s:4:"䛇";s:1:"N";s:4:"ð¯§";s:1:"N";s:4:"ð¯§";s:1:"N";s:4:"變";s:1:"N";s:4:"豕";s:1:"N";s:4:"𧲨";s:1:"N";s:4:"貫";s:1:"N";s:4:"賁";s:1:"N";s:4:"贛";s:1:"N";s:4:"起";s:1:"N";s:4:"𧼯";s:1:"N";s:4:"𠠄";s:1:"N";s:4:"跋";s:1:"N";s:4:"趼";s:1:"N";s:4:"跰";s:1:"N";s:4:"ð¯§";s:1:"N";s:4:"軔";s:1:"N";s:4:"輸";s:1:"N";s:4:"𨗒";s:1:"N";s:4:"𨗭";s:1:"N";s:4:"邔";s:1:"N";s:4:"郱";s:1:"N";s:4:"鄑";s:1:"N";s:4:"𨜮";s:1:"N";s:4:"鄛";s:1:"N";s:4:"鈸";s:1:"N";s:4:"鋗";s:1:"N";s:4:"鋘";s:1:"N";s:4:"鉼";s:1:"N";s:4:"鏹";s:1:"N";s:4:"鐕";s:1:"N";s:4:"𨯺";s:1:"N";s:4:"開";s:1:"N";s:4:"䦕";s:1:"N";s:4:"閷";s:1:"N";s:4:"𨵷";s:1:"N";s:4:"䧦";s:1:"N";s:4:"雃";s:1:"N";s:4:"嶲";s:1:"N";s:4:"霣";s:1:"N";s:4:"𩅅";s:1:"N";s:4:"𩈚";s:1:"N";s:4:"䩮";s:1:"N";s:4:"䩶";s:1:"N";s:4:"韠";s:1:"N";s:4:"𩐊";s:1:"N";s:4:"䪲";s:1:"N";s:4:"𩒖";s:1:"N";s:4:"頋";s:1:"N";s:4:"頋";s:1:"N";s:4:"頩";s:1:"N";s:4:"ð¯¨";s:1:"N";s:4:"飢";s:1:"N";s:4:"䬳";s:1:"N";s:4:"餩";s:1:"N";s:4:"馧";s:1:"N";s:4:"駂";s:1:"N";s:4:"駾";s:1:"N";s:4:"䯎";s:1:"N";s:4:"𩬰";s:1:"N";s:4:"鬒";s:1:"N";s:4:"鱀";s:1:"N";s:4:"鳽";s:1:"N";s:4:"ð¯¨";s:1:"N";s:4:"䳭";s:1:"N";s:4:"ð¯¨";s:1:"N";s:4:"ð¯¨";s:1:"N";s:4:"䳸";s:1:"N";s:4:"𪄅";s:1:"N";s:4:"𪈎";s:1:"N";s:4:"𪊑";s:1:"N";s:4:"麻";s:1:"N";s:4:"䵖";s:1:"N";s:4:"黹";s:1:"N";s:4:"黾";s:1:"N";s:4:"鼅";s:1:"N";s:4:"鼏";s:1:"N";s:4:"鼖";s:1:"N";s:4:"鼻";s:1:"N";s:4:"ð¯¨";s:1:"N";s:2:"Ì€";s:1:"M";s:2:"Ì";s:1:"M";s:2:"Ì‚";s:1:"M";s:2:"̃";s:1:"M";s:2:"Ì„";s:1:"M";s:2:"̆";s:1:"M";s:2:"̇";s:1:"M";s:2:"̈";s:1:"M";s:2:"̉";s:1:"M";s:2:"ÌŠ";s:1:"M";s:2:"Ì‹";s:1:"M";s:2:"ÌŒ";s:1:"M";s:2:"Ì";s:1:"M";s:2:"Ì‘";s:1:"M";s:2:"Ì“";s:1:"M";s:2:"Ì”";s:1:"M";s:2:"Ì›";s:1:"M";s:2:"Ì£";s:1:"M";s:2:"̤";s:1:"M";s:2:"Ì¥";s:1:"M";s:2:"̦";s:1:"M";s:2:"̧";s:1:"M";s:2:"̨";s:1:"M";s:2:"Ì­";s:1:"M";s:2:"Ì®";s:1:"M";s:2:"Ì°";s:1:"M";s:2:"̱";s:1:"M";s:2:"̸";s:1:"M";s:2:"Í‚";s:1:"M";s:2:"Í…";s:1:"M";s:2:"Ù“";s:1:"M";s:2:"Ù”";s:1:"M";s:2:"Ù•";s:1:"M";s:3:"़";s:1:"M";s:3:"া";s:1:"M";s:3:"ৗ";s:1:"M";s:3:"ା";s:1:"M";s:3:"à­–";s:1:"M";s:3:"à­—";s:1:"M";s:3:"ா";s:1:"M";s:3:"ௗ";s:1:"M";s:3:"à±–";s:1:"M";s:3:"ೂ";s:1:"M";s:3:"ೕ";s:1:"M";s:3:"à³–";s:1:"M";s:3:"à´¾";s:1:"M";s:3:"ൗ";s:1:"M";s:3:"à·Š";s:1:"M";s:3:"à·";s:1:"M";s:3:"à·Ÿ";s:1:"M";s:3:"ီ";s:1:"M";s:3:"á…¡";s:1:"M";s:3:"á…¢";s:1:"M";s:3:"á…£";s:1:"M";s:3:"á…¤";s:1:"M";s:3:"á…¥";s:1:"M";s:3:"á…¦";s:1:"M";s:3:"á…§";s:1:"M";s:3:"á…¨";s:1:"M";s:3:"á…©";s:1:"M";s:3:"á…ª";s:1:"M";s:3:"á…«";s:1:"M";s:3:"á…¬";s:1:"M";s:3:"á…­";s:1:"M";s:3:"á…®";s:1:"M";s:3:"á…¯";s:1:"M";s:3:"á…°";s:1:"M";s:3:"á…±";s:1:"M";s:3:"á…²";s:1:"M";s:3:"á…³";s:1:"M";s:3:"á…´";s:1:"M";s:3:"á…µ";s:1:"M";s:3:"ᆨ";s:1:"M";s:3:"ᆩ";s:1:"M";s:3:"ᆪ";s:1:"M";s:3:"ᆫ";s:1:"M";s:3:"ᆬ";s:1:"M";s:3:"ᆭ";s:1:"M";s:3:"ᆮ";s:1:"M";s:3:"ᆯ";s:1:"M";s:3:"ᆰ";s:1:"M";s:3:"ᆱ";s:1:"M";s:3:"ᆲ";s:1:"M";s:3:"ᆳ";s:1:"M";s:3:"ᆴ";s:1:"M";s:3:"ᆵ";s:1:"M";s:3:"ᆶ";s:1:"M";s:3:"ᆷ";s:1:"M";s:3:"ᆸ";s:1:"M";s:3:"ᆹ";s:1:"M";s:3:"ᆺ";s:1:"M";s:3:"ᆻ";s:1:"M";s:3:"ᆼ";s:1:"M";s:3:"ᆽ";s:1:"M";s:3:"ᆾ";s:1:"M";s:3:"ᆿ";s:1:"M";s:3:"ᇀ";s:1:"M";s:3:"á‡";s:1:"M";s:3:"ᇂ";s:1:"M";s:3:"ᬵ";s:1:"M";s:3:"ã‚™";s:1:"M";s:3:"ã‚š";s:1:"M";s:4:"𑂺";s:1:"M";}' );
diff --git a/includes/normal/UtfNormalDataK.inc b/includes/normal/UtfNormalDataK.inc
index 9d30f282..661d2cda 100644
--- a/includes/normal/UtfNormalDataK.inc
+++ b/includes/normal/UtfNormalDataK.inc
@@ -6,5 +6,5 @@
* @file
*/
-UtfNormal::$utfCompatibilityDecomp = unserialize( 'a:5405:{s:2:" ";s:1:" ";s:2:"¨";s:3:" ̈";s:2:"ª";s:1:"a";s:2:"¯";s:3:" Ì„";s:2:"²";s:1:"2";s:2:"³";s:1:"3";s:2:"´";s:3:" Ì";s:2:"µ";s:2:"μ";s:2:"¸";s:3:" ̧";s:2:"¹";s:1:"1";s:2:"º";s:1:"o";s:2:"¼";s:5:"1â„4";s:2:"½";s:5:"1â„2";s:2:"¾";s:5:"3â„4";s:2:"À";s:3:"AÌ€";s:2:"Ã";s:3:"AÌ";s:2:"Â";s:3:"AÌ‚";s:2:"Ã";s:3:"Ã";s:2:"Ä";s:3:"Ä";s:2:"Ã…";s:3:"AÌŠ";s:2:"Ç";s:3:"Ç";s:2:"È";s:3:"EÌ€";s:2:"É";s:3:"EÌ";s:2:"Ê";s:3:"EÌ‚";s:2:"Ë";s:3:"Ë";s:2:"ÃŒ";s:3:"IÌ€";s:2:"Ã";s:3:"IÌ";s:2:"ÃŽ";s:3:"IÌ‚";s:2:"Ã";s:3:"Ï";s:2:"Ñ";s:3:"Ñ";s:2:"Ã’";s:3:"OÌ€";s:2:"Ó";s:3:"OÌ";s:2:"Ô";s:3:"OÌ‚";s:2:"Õ";s:3:"Õ";s:2:"Ö";s:3:"Ö";s:2:"Ù";s:3:"UÌ€";s:2:"Ú";s:3:"UÌ";s:2:"Û";s:3:"UÌ‚";s:2:"Ãœ";s:3:"Ü";s:2:"Ã";s:3:"YÌ";s:2:"à";s:3:"aÌ€";s:2:"á";s:3:"aÌ";s:2:"â";s:3:"aÌ‚";s:2:"ã";s:3:"ã";s:2:"ä";s:3:"ä";s:2:"Ã¥";s:3:"aÌŠ";s:2:"ç";s:3:"ç";s:2:"è";s:3:"eÌ€";s:2:"é";s:3:"eÌ";s:2:"ê";s:3:"eÌ‚";s:2:"ë";s:3:"ë";s:2:"ì";s:3:"iÌ€";s:2:"í";s:3:"iÌ";s:2:"î";s:3:"iÌ‚";s:2:"ï";s:3:"ï";s:2:"ñ";s:3:"ñ";s:2:"ò";s:3:"oÌ€";s:2:"ó";s:3:"oÌ";s:2:"ô";s:3:"oÌ‚";s:2:"õ";s:3:"õ";s:2:"ö";s:3:"ö";s:2:"ù";s:3:"uÌ€";s:2:"ú";s:3:"uÌ";s:2:"û";s:3:"uÌ‚";s:2:"ü";s:3:"ü";s:2:"ý";s:3:"yÌ";s:2:"ÿ";s:3:"ÿ";s:2:"Ä€";s:3:"AÌ„";s:2:"Ä";s:3:"aÌ„";s:2:"Ä‚";s:3:"Ă";s:2:"ă";s:3:"ă";s:2:"Ä„";s:3:"Ą";s:2:"Ä…";s:3:"ą";s:2:"Ć";s:3:"CÌ";s:2:"ć";s:3:"cÌ";s:2:"Ĉ";s:3:"CÌ‚";s:2:"ĉ";s:3:"cÌ‚";s:2:"ÄŠ";s:3:"Ċ";s:2:"Ä‹";s:3:"ċ";s:2:"ÄŒ";s:3:"CÌŒ";s:2:"Ä";s:3:"cÌŒ";s:2:"ÄŽ";s:3:"DÌŒ";s:2:"Ä";s:3:"dÌŒ";s:2:"Ä’";s:3:"EÌ„";s:2:"Ä“";s:3:"eÌ„";s:2:"Ä”";s:3:"Ĕ";s:2:"Ä•";s:3:"ĕ";s:2:"Ä–";s:3:"Ė";s:2:"Ä—";s:3:"ė";s:2:"Ę";s:3:"Ę";s:2:"Ä™";s:3:"ę";s:2:"Äš";s:3:"EÌŒ";s:2:"Ä›";s:3:"eÌŒ";s:2:"Äœ";s:3:"GÌ‚";s:2:"Ä";s:3:"gÌ‚";s:2:"Äž";s:3:"Ğ";s:2:"ÄŸ";s:3:"ğ";s:2:"Ä ";s:3:"Ġ";s:2:"Ä¡";s:3:"ġ";s:2:"Ä¢";s:3:"Ģ";s:2:"Ä£";s:3:"ģ";s:2:"Ĥ";s:3:"HÌ‚";s:2:"Ä¥";s:3:"hÌ‚";s:2:"Ĩ";s:3:"Ĩ";s:2:"Ä©";s:3:"ĩ";s:2:"Ī";s:3:"IÌ„";s:2:"Ä«";s:3:"iÌ„";s:2:"Ĭ";s:3:"Ĭ";s:2:"Ä­";s:3:"ĭ";s:2:"Ä®";s:3:"Į";s:2:"į";s:3:"į";s:2:"Ä°";s:3:"İ";s:2:"IJ";s:2:"IJ";s:2:"ij";s:2:"ij";s:2:"Ä´";s:3:"JÌ‚";s:2:"ĵ";s:3:"jÌ‚";s:2:"Ķ";s:3:"Ķ";s:2:"Ä·";s:3:"ķ";s:2:"Ĺ";s:3:"LÌ";s:2:"ĺ";s:3:"lÌ";s:2:"Ä»";s:3:"Ļ";s:2:"ļ";s:3:"ļ";s:2:"Ľ";s:3:"LÌŒ";s:2:"ľ";s:3:"lÌŒ";s:2:"Ä¿";s:3:"L·";s:2:"Å€";s:3:"l·";s:2:"Ń";s:3:"NÌ";s:2:"Å„";s:3:"nÌ";s:2:"Å…";s:3:"Ņ";s:2:"ņ";s:3:"ņ";s:2:"Ň";s:3:"NÌŒ";s:2:"ň";s:3:"nÌŒ";s:2:"ʼn";s:3:"ʼn";s:2:"ÅŒ";s:3:"OÌ„";s:2:"Å";s:3:"oÌ„";s:2:"ÅŽ";s:3:"Ŏ";s:2:"Å";s:3:"ŏ";s:2:"Å";s:3:"OÌ‹";s:2:"Å‘";s:3:"oÌ‹";s:2:"Å”";s:3:"RÌ";s:2:"Å•";s:3:"rÌ";s:2:"Å–";s:3:"Ŗ";s:2:"Å—";s:3:"ŗ";s:2:"Ř";s:3:"RÌŒ";s:2:"Å™";s:3:"rÌŒ";s:2:"Åš";s:3:"SÌ";s:2:"Å›";s:3:"sÌ";s:2:"Åœ";s:3:"SÌ‚";s:2:"Å";s:3:"sÌ‚";s:2:"Åž";s:3:"Ş";s:2:"ÅŸ";s:3:"ş";s:2:"Å ";s:3:"SÌŒ";s:2:"Å¡";s:3:"sÌŒ";s:2:"Å¢";s:3:"Ţ";s:2:"Å£";s:3:"ţ";s:2:"Ť";s:3:"TÌŒ";s:2:"Å¥";s:3:"tÌŒ";s:2:"Ũ";s:3:"Ũ";s:2:"Å©";s:3:"ũ";s:2:"Ū";s:3:"UÌ„";s:2:"Å«";s:3:"uÌ„";s:2:"Ŭ";s:3:"Ŭ";s:2:"Å­";s:3:"ŭ";s:2:"Å®";s:3:"UÌŠ";s:2:"ů";s:3:"uÌŠ";s:2:"Å°";s:3:"UÌ‹";s:2:"ű";s:3:"uÌ‹";s:2:"Ų";s:3:"Ų";s:2:"ų";s:3:"ų";s:2:"Å´";s:3:"WÌ‚";s:2:"ŵ";s:3:"wÌ‚";s:2:"Ŷ";s:3:"YÌ‚";s:2:"Å·";s:3:"yÌ‚";s:2:"Ÿ";s:3:"Ÿ";s:2:"Ź";s:3:"ZÌ";s:2:"ź";s:3:"zÌ";s:2:"Å»";s:3:"Ż";s:2:"ż";s:3:"ż";s:2:"Ž";s:3:"ZÌŒ";s:2:"ž";s:3:"zÌŒ";s:2:"Å¿";s:1:"s";s:2:"Æ ";s:3:"OÌ›";s:2:"Æ¡";s:3:"oÌ›";s:2:"Ư";s:3:"UÌ›";s:2:"Æ°";s:3:"uÌ›";s:2:"Ç„";s:4:"DZÌŒ";s:2:"Ç…";s:4:"DzÌŒ";s:2:"dž";s:4:"dzÌŒ";s:2:"LJ";s:2:"LJ";s:2:"Lj";s:2:"Lj";s:2:"lj";s:2:"lj";s:2:"ÇŠ";s:2:"NJ";s:2:"Ç‹";s:2:"Nj";s:2:"ÇŒ";s:2:"nj";s:2:"Ç";s:3:"AÌŒ";s:2:"ÇŽ";s:3:"aÌŒ";s:2:"Ç";s:3:"IÌŒ";s:2:"Ç";s:3:"iÌŒ";s:2:"Ç‘";s:3:"OÌŒ";s:2:"Ç’";s:3:"oÌŒ";s:2:"Ç“";s:3:"UÌŒ";s:2:"Ç”";s:3:"uÌŒ";s:2:"Ç•";s:5:"Ǖ";s:2:"Ç–";s:5:"ǖ";s:2:"Ç—";s:5:"ÜÌ";s:2:"ǘ";s:5:"üÌ";s:2:"Ç™";s:5:"Ǚ";s:2:"Çš";s:5:"ǚ";s:2:"Ç›";s:5:"Ǜ";s:2:"Çœ";s:5:"ǜ";s:2:"Çž";s:5:"Ǟ";s:2:"ÇŸ";s:5:"ǟ";s:2:"Ç ";s:5:"Ǡ";s:2:"Ç¡";s:5:"ǡ";s:2:"Ç¢";s:4:"Ǣ";s:2:"Ç£";s:4:"ǣ";s:2:"Ǧ";s:3:"GÌŒ";s:2:"ǧ";s:3:"gÌŒ";s:2:"Ǩ";s:3:"KÌŒ";s:2:"Ç©";s:3:"kÌŒ";s:2:"Ǫ";s:3:"Ǫ";s:2:"Ç«";s:3:"ǫ";s:2:"Ǭ";s:5:"Ǭ";s:2:"Ç­";s:5:"ǭ";s:2:"Ç®";s:4:"Æ·ÌŒ";s:2:"ǯ";s:4:"Ê’ÌŒ";s:2:"Ç°";s:3:"jÌŒ";s:2:"DZ";s:2:"DZ";s:2:"Dz";s:2:"Dz";s:2:"dz";s:2:"dz";s:2:"Ç´";s:3:"GÌ";s:2:"ǵ";s:3:"gÌ";s:2:"Ǹ";s:3:"NÌ€";s:2:"ǹ";s:3:"nÌ€";s:2:"Ǻ";s:5:"AÌŠÌ";s:2:"Ç»";s:5:"aÌŠÌ";s:2:"Ǽ";s:4:"ÆÌ";s:2:"ǽ";s:4:"æÌ";s:2:"Ǿ";s:4:"ØÌ";s:2:"Ç¿";s:4:"øÌ";s:2:"È€";s:3:"AÌ";s:2:"È";s:3:"aÌ";s:2:"È‚";s:3:"AÌ‘";s:2:"ȃ";s:3:"aÌ‘";s:2:"È„";s:3:"EÌ";s:2:"È…";s:3:"eÌ";s:2:"Ȇ";s:3:"EÌ‘";s:2:"ȇ";s:3:"eÌ‘";s:2:"Ȉ";s:3:"IÌ";s:2:"ȉ";s:3:"iÌ";s:2:"ÈŠ";s:3:"IÌ‘";s:2:"È‹";s:3:"iÌ‘";s:2:"ÈŒ";s:3:"OÌ";s:2:"È";s:3:"oÌ";s:2:"ÈŽ";s:3:"OÌ‘";s:2:"È";s:3:"oÌ‘";s:2:"È";s:3:"RÌ";s:2:"È‘";s:3:"rÌ";s:2:"È’";s:3:"RÌ‘";s:2:"È“";s:3:"rÌ‘";s:2:"È”";s:3:"UÌ";s:2:"È•";s:3:"uÌ";s:2:"È–";s:3:"UÌ‘";s:2:"È—";s:3:"uÌ‘";s:2:"Ș";s:3:"Ș";s:2:"È™";s:3:"ș";s:2:"Èš";s:3:"Ț";s:2:"È›";s:3:"ț";s:2:"Èž";s:3:"HÌŒ";s:2:"ÈŸ";s:3:"hÌŒ";s:2:"Ȧ";s:3:"Ȧ";s:2:"ȧ";s:3:"ȧ";s:2:"Ȩ";s:3:"Ȩ";s:2:"È©";s:3:"ȩ";s:2:"Ȫ";s:5:"Ȫ";s:2:"È«";s:5:"ȫ";s:2:"Ȭ";s:5:"Ȭ";s:2:"È­";s:5:"ȭ";s:2:"È®";s:3:"Ȯ";s:2:"ȯ";s:3:"ȯ";s:2:"È°";s:5:"Ȱ";s:2:"ȱ";s:5:"ȱ";s:2:"Ȳ";s:3:"YÌ„";s:2:"ȳ";s:3:"yÌ„";s:2:"Ê°";s:1:"h";s:2:"ʱ";s:2:"ɦ";s:2:"ʲ";s:1:"j";s:2:"ʳ";s:1:"r";s:2:"Ê´";s:2:"ɹ";s:2:"ʵ";s:2:"É»";s:2:"ʶ";s:2:"Ê";s:2:"Ê·";s:1:"w";s:2:"ʸ";s:1:"y";s:2:"˘";s:3:" ̆";s:2:"Ë™";s:3:" ̇";s:2:"Ëš";s:3:" ÌŠ";s:2:"Ë›";s:3:" ̨";s:2:"Ëœ";s:3:" ̃";s:2:"Ë";s:3:" Ì‹";s:2:"Ë ";s:2:"É£";s:2:"Ë¡";s:1:"l";s:2:"Ë¢";s:1:"s";s:2:"Ë£";s:1:"x";s:2:"ˤ";s:2:"Ê•";s:2:"Í€";s:2:"Ì€";s:2:"Í";s:2:"Ì";s:2:"̓";s:2:"Ì“";s:2:"Í„";s:4:"̈Ì";s:2:"Í´";s:2:"ʹ";s:2:"ͺ";s:3:" Í…";s:2:";";s:1:";";s:2:"΄";s:3:" Ì";s:2:"Î…";s:5:" ̈Ì";s:2:"Ά";s:4:"ΑÌ";s:2:"·";s:2:"·";s:2:"Έ";s:4:"ΕÌ";s:2:"Ή";s:4:"ΗÌ";s:2:"Ί";s:4:"ΙÌ";s:2:"ÎŒ";s:4:"ΟÌ";s:2:"ÎŽ";s:4:"Î¥Ì";s:2:"Î";s:4:"ΩÌ";s:2:"Î";s:6:"ϊÌ";s:2:"Ϊ";s:4:"Ϊ";s:2:"Ϋ";s:4:"Ϋ";s:2:"ά";s:4:"αÌ";s:2:"έ";s:4:"εÌ";s:2:"ή";s:4:"ηÌ";s:2:"ί";s:4:"ιÌ";s:2:"ΰ";s:6:"ϋÌ";s:2:"ÏŠ";s:4:"ϊ";s:2:"Ï‹";s:4:"ϋ";s:2:"ÏŒ";s:4:"οÌ";s:2:"Ï";s:4:"Ï…Ì";s:2:"ÏŽ";s:4:"ωÌ";s:2:"Ï";s:2:"β";s:2:"Ï‘";s:2:"θ";s:2:"Ï’";s:2:"Î¥";s:2:"Ï“";s:4:"Î¥Ì";s:2:"Ï”";s:4:"Ϋ";s:2:"Ï•";s:2:"φ";s:2:"Ï–";s:2:"Ï€";s:2:"Ï°";s:2:"κ";s:2:"ϱ";s:2:"Ï";s:2:"ϲ";s:2:"Ï‚";s:2:"Ï´";s:2:"Θ";s:2:"ϵ";s:2:"ε";s:2:"Ϲ";s:2:"Σ";s:2:"Ѐ";s:4:"Ѐ";s:2:"Ð";s:4:"Ё";s:2:"Ѓ";s:4:"ГÌ";s:2:"Ї";s:4:"Ї";s:2:"ÐŒ";s:4:"КÌ";s:2:"Ð";s:4:"Ѝ";s:2:"ÐŽ";s:4:"Ў";s:2:"Й";s:4:"Й";s:2:"й";s:4:"й";s:2:"Ñ";s:4:"ѐ";s:2:"Ñ‘";s:4:"ё";s:2:"Ñ“";s:4:"гÌ";s:2:"Ñ—";s:4:"ї";s:2:"Ñœ";s:4:"кÌ";s:2:"Ñ";s:4:"ѝ";s:2:"Ñž";s:4:"ў";s:2:"Ѷ";s:4:"Ñ´Ì";s:2:"Ñ·";s:4:"ѵÌ";s:2:"Ó";s:4:"Ӂ";s:2:"Ó‚";s:4:"ӂ";s:2:"Ó";s:4:"Ð̆";s:2:"Ó‘";s:4:"ӑ";s:2:"Ó’";s:4:"Ð̈";s:2:"Ó“";s:4:"ӓ";s:2:"Ó–";s:4:"Ӗ";s:2:"Ó—";s:4:"ӗ";s:2:"Óš";s:4:"Ӛ";s:2:"Ó›";s:4:"ӛ";s:2:"Óœ";s:4:"Ӝ";s:2:"Ó";s:4:"ӝ";s:2:"Óž";s:4:"Ӟ";s:2:"ÓŸ";s:4:"ӟ";s:2:"Ó¢";s:4:"Ӣ";s:2:"Ó£";s:4:"ӣ";s:2:"Ó¤";s:4:"Ӥ";s:2:"Ó¥";s:4:"ӥ";s:2:"Ó¦";s:4:"Ӧ";s:2:"Ó§";s:4:"ӧ";s:2:"Óª";s:4:"Ӫ";s:2:"Ó«";s:4:"ӫ";s:2:"Ó¬";s:4:"Ӭ";s:2:"Ó­";s:4:"Ñ̈";s:2:"Ó®";s:4:"Ӯ";s:2:"Ó¯";s:4:"ӯ";s:2:"Ó°";s:4:"Ӱ";s:2:"Ó±";s:4:"ӱ";s:2:"Ó²";s:4:"Ӳ";s:2:"Ó³";s:4:"ӳ";s:2:"Ó´";s:4:"Ӵ";s:2:"Óµ";s:4:"ӵ";s:2:"Ó¸";s:4:"Ӹ";s:2:"Ó¹";s:4:"ӹ";s:2:"Ö‡";s:4:"Õ¥Ö‚";s:2:"Ø¢";s:4:"آ";s:2:"Ø£";s:4:"أ";s:2:"ؤ";s:4:"ÙˆÙ”";s:2:"Ø¥";s:4:"إ";s:2:"ئ";s:4:"ÙŠÙ”";s:2:"Ùµ";s:4:"اٴ";s:2:"Ù¶";s:4:"وٴ";s:2:"Ù·";s:4:"Û‡Ù´";s:2:"Ù¸";s:4:"يٴ";s:2:"Û€";s:4:"Û•Ù”";s:2:"Û‚";s:4:"ÛÙ”";s:2:"Û“";s:4:"Û’Ù”";s:3:"ऩ";s:6:"ऩ";s:3:"ऱ";s:6:"ऱ";s:3:"ऴ";s:6:"ऴ";s:3:"क़";s:6:"क़";s:3:"ख़";s:6:"ख़";s:3:"ग़";s:6:"ग़";s:3:"ज़";s:6:"ज़";s:3:"ड़";s:6:"ड़";s:3:"à¥";s:6:"ढ़";s:3:"फ़";s:6:"फ़";s:3:"य़";s:6:"य़";s:3:"ো";s:6:"ো";s:3:"ৌ";s:6:"ৌ";s:3:"ড়";s:6:"ড়";s:3:"à§";s:6:"ঢ়";s:3:"য়";s:6:"য়";s:3:"ਲ਼";s:6:"ਲ਼";s:3:"ਸ਼";s:6:"ਸ਼";s:3:"à©™";s:6:"ਖ਼";s:3:"à©š";s:6:"ਗ਼";s:3:"à©›";s:6:"ਜ਼";s:3:"à©ž";s:6:"ਫ਼";s:3:"à­ˆ";s:6:"ୈ";s:3:"à­‹";s:6:"ୋ";s:3:"à­Œ";s:6:"ୌ";s:3:"à­œ";s:6:"ଡ଼";s:3:"à­";s:6:"ଢ଼";s:3:"à®”";s:6:"ஔ";s:3:"ொ";s:6:"ொ";s:3:"ோ";s:6:"ோ";s:3:"ௌ";s:6:"ௌ";s:3:"ై";s:6:"ై";s:3:"à³€";s:6:"ೀ";s:3:"ೇ";s:6:"ೇ";s:3:"ೈ";s:6:"ೈ";s:3:"ೊ";s:6:"ೊ";s:3:"ೋ";s:9:"ೋ";s:3:"ൊ";s:6:"ൊ";s:3:"ോ";s:6:"ോ";s:3:"ൌ";s:6:"ൌ";s:3:"à·š";s:6:"ේ";s:3:"à·œ";s:6:"à·™à·";s:3:"à·";s:9:"à·™à·à·Š";s:3:"à·ž";s:6:"ෞ";s:3:"ำ";s:6:"à¹à¸²";s:3:"ຳ";s:6:"à»àº²";s:3:"ໜ";s:6:"ຫນ";s:3:"à»";s:6:"ຫມ";s:3:"༌";s:3:"་";s:3:"གྷ";s:6:"གྷ";s:3:"à½";s:6:"ཌྷ";s:3:"དྷ";s:6:"དྷ";s:3:"བྷ";s:6:"བྷ";s:3:"ཛྷ";s:6:"ཛྷ";s:3:"ཀྵ";s:6:"ཀྵ";s:3:"ཱི";s:6:"ཱི";s:3:"ཱུ";s:6:"ཱུ";s:3:"ྲྀ";s:6:"ྲྀ";s:3:"ཷ";s:9:"ྲཱྀ";s:3:"ླྀ";s:6:"ླྀ";s:3:"ཹ";s:9:"ླཱྀ";s:3:"à¾";s:6:"ཱྀ";s:3:"ྒྷ";s:6:"ྒྷ";s:3:"à¾";s:6:"ྜྷ";s:3:"ྡྷ";s:6:"ྡྷ";s:3:"ྦྷ";s:6:"ྦྷ";s:3:"ྫྷ";s:6:"ྫྷ";s:3:"ྐྵ";s:6:"à¾à¾µ";s:3:"ဦ";s:6:"ဦ";s:3:"ჼ";s:3:"ნ";s:3:"ᬆ";s:6:"ᬆ";s:3:"ᬈ";s:6:"ᬈ";s:3:"ᬊ";s:6:"ᬊ";s:3:"ᬌ";s:6:"ᬌ";s:3:"ᬎ";s:6:"á¬á¬µ";s:3:"ᬒ";s:6:"ᬒ";s:3:"ᬻ";s:6:"ᬻ";s:3:"ᬽ";s:6:"ᬽ";s:3:"á­€";s:6:"ᭀ";s:3:"á­";s:6:"ᭁ";s:3:"á­ƒ";s:6:"ᭃ";s:3:"á´¬";s:1:"A";s:3:"á´­";s:2:"Æ";s:3:"á´®";s:1:"B";s:3:"á´°";s:1:"D";s:3:"á´±";s:1:"E";s:3:"á´²";s:2:"ÆŽ";s:3:"á´³";s:1:"G";s:3:"á´´";s:1:"H";s:3:"á´µ";s:1:"I";s:3:"á´¶";s:1:"J";s:3:"á´·";s:1:"K";s:3:"á´¸";s:1:"L";s:3:"á´¹";s:1:"M";s:3:"á´º";s:1:"N";s:3:"á´¼";s:1:"O";s:3:"á´½";s:2:"È¢";s:3:"á´¾";s:1:"P";s:3:"á´¿";s:1:"R";s:3:"áµ€";s:1:"T";s:3:"áµ";s:1:"U";s:3:"ᵂ";s:1:"W";s:3:"ᵃ";s:1:"a";s:3:"ᵄ";s:2:"É";s:3:"áµ…";s:2:"É‘";s:3:"ᵆ";s:3:"á´‚";s:3:"ᵇ";s:1:"b";s:3:"ᵈ";s:1:"d";s:3:"ᵉ";s:1:"e";s:3:"ᵊ";s:2:"É™";s:3:"ᵋ";s:2:"É›";s:3:"ᵌ";s:2:"Éœ";s:3:"áµ";s:1:"g";s:3:"áµ";s:1:"k";s:3:"áµ";s:1:"m";s:3:"ᵑ";s:2:"Å‹";s:3:"áµ’";s:1:"o";s:3:"ᵓ";s:2:"É”";s:3:"áµ”";s:3:"á´–";s:3:"ᵕ";s:3:"á´—";s:3:"áµ–";s:1:"p";s:3:"áµ—";s:1:"t";s:3:"ᵘ";s:1:"u";s:3:"áµ™";s:3:"á´";s:3:"ᵚ";s:2:"ɯ";s:3:"áµ›";s:1:"v";s:3:"ᵜ";s:3:"á´¥";s:3:"áµ";s:2:"β";s:3:"ᵞ";s:2:"γ";s:3:"ᵟ";s:2:"δ";s:3:"áµ ";s:2:"φ";s:3:"ᵡ";s:2:"χ";s:3:"áµ¢";s:1:"i";s:3:"áµ£";s:1:"r";s:3:"ᵤ";s:1:"u";s:3:"áµ¥";s:1:"v";s:3:"ᵦ";s:2:"β";s:3:"ᵧ";s:2:"γ";s:3:"ᵨ";s:2:"Ï";s:3:"ᵩ";s:2:"φ";s:3:"ᵪ";s:2:"χ";s:3:"ᵸ";s:2:"н";s:3:"ᶛ";s:2:"É’";s:3:"ᶜ";s:1:"c";s:3:"á¶";s:2:"É•";s:3:"ᶞ";s:2:"ð";s:3:"ᶟ";s:2:"Éœ";s:3:"ᶠ";s:1:"f";s:3:"ᶡ";s:2:"ÉŸ";s:3:"ᶢ";s:2:"É¡";s:3:"ᶣ";s:2:"É¥";s:3:"ᶤ";s:2:"ɨ";s:3:"ᶥ";s:2:"É©";s:3:"ᶦ";s:2:"ɪ";s:3:"ᶧ";s:3:"áµ»";s:3:"ᶨ";s:2:"Ê";s:3:"ᶩ";s:2:"É­";s:3:"ᶪ";s:3:"ᶅ";s:3:"ᶫ";s:2:"ÊŸ";s:3:"ᶬ";s:2:"ɱ";s:3:"ᶭ";s:2:"É°";s:3:"ᶮ";s:2:"ɲ";s:3:"ᶯ";s:2:"ɳ";s:3:"ᶰ";s:2:"É´";s:3:"ᶱ";s:2:"ɵ";s:3:"ᶲ";s:2:"ɸ";s:3:"ᶳ";s:2:"Ê‚";s:3:"ᶴ";s:2:"ʃ";s:3:"ᶵ";s:2:"Æ«";s:3:"ᶶ";s:2:"ʉ";s:3:"ᶷ";s:2:"ÊŠ";s:3:"ᶸ";s:3:"á´œ";s:3:"ᶹ";s:2:"Ê‹";s:3:"ᶺ";s:2:"ÊŒ";s:3:"ᶻ";s:1:"z";s:3:"ᶼ";s:2:"Ê";s:3:"ᶽ";s:2:"Ê‘";s:3:"ᶾ";s:2:"Ê’";s:3:"ᶿ";s:2:"θ";s:3:"Ḁ";s:3:"AÌ¥";s:3:"á¸";s:3:"aÌ¥";s:3:"Ḃ";s:3:"Ḃ";s:3:"ḃ";s:3:"ḃ";s:3:"Ḅ";s:3:"BÌ£";s:3:"ḅ";s:3:"bÌ£";s:3:"Ḇ";s:3:"Ḇ";s:3:"ḇ";s:3:"ḇ";s:3:"Ḉ";s:5:"ÇÌ";s:3:"ḉ";s:5:"çÌ";s:3:"Ḋ";s:3:"Ḋ";s:3:"ḋ";s:3:"ḋ";s:3:"Ḍ";s:3:"DÌ£";s:3:"á¸";s:3:"dÌ£";s:3:"Ḏ";s:3:"Ḏ";s:3:"á¸";s:3:"ḏ";s:3:"á¸";s:3:"Ḑ";s:3:"ḑ";s:3:"ḑ";s:3:"Ḓ";s:3:"DÌ­";s:3:"ḓ";s:3:"dÌ­";s:3:"Ḕ";s:5:"EÌ„Ì€";s:3:"ḕ";s:5:"eÌ„Ì€";s:3:"Ḗ";s:5:"EÌ„Ì";s:3:"ḗ";s:5:"eÌ„Ì";s:3:"Ḙ";s:3:"EÌ­";s:3:"ḙ";s:3:"eÌ­";s:3:"Ḛ";s:3:"EÌ°";s:3:"ḛ";s:3:"eÌ°";s:3:"Ḝ";s:5:"Ḝ";s:3:"á¸";s:5:"ḝ";s:3:"Ḟ";s:3:"Ḟ";s:3:"ḟ";s:3:"ḟ";s:3:"Ḡ";s:3:"GÌ„";s:3:"ḡ";s:3:"gÌ„";s:3:"Ḣ";s:3:"Ḣ";s:3:"ḣ";s:3:"ḣ";s:3:"Ḥ";s:3:"HÌ£";s:3:"ḥ";s:3:"hÌ£";s:3:"Ḧ";s:3:"Ḧ";s:3:"ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"Ḩ";s:3:"ḩ";s:3:"ḩ";s:3:"Ḫ";s:3:"HÌ®";s:3:"ḫ";s:3:"hÌ®";s:3:"Ḭ";s:3:"IÌ°";s:3:"ḭ";s:3:"iÌ°";s:3:"Ḯ";s:5:"ÏÌ";s:3:"ḯ";s:5:"ïÌ";s:3:"Ḱ";s:3:"KÌ";s:3:"ḱ";s:3:"kÌ";s:3:"Ḳ";s:3:"KÌ£";s:3:"ḳ";s:3:"kÌ£";s:3:"Ḵ";s:3:"Ḵ";s:3:"ḵ";s:3:"ḵ";s:3:"Ḷ";s:3:"LÌ£";s:3:"ḷ";s:3:"lÌ£";s:3:"Ḹ";s:5:"Ḹ";s:3:"ḹ";s:5:"ḹ";s:3:"Ḻ";s:3:"Ḻ";s:3:"ḻ";s:3:"ḻ";s:3:"Ḽ";s:3:"LÌ­";s:3:"ḽ";s:3:"lÌ­";s:3:"Ḿ";s:3:"MÌ";s:3:"ḿ";s:3:"mÌ";s:3:"á¹€";s:3:"Ṁ";s:3:"á¹";s:3:"ṁ";s:3:"Ṃ";s:3:"MÌ£";s:3:"ṃ";s:3:"mÌ£";s:3:"Ṅ";s:3:"Ṅ";s:3:"á¹…";s:3:"ṅ";s:3:"Ṇ";s:3:"NÌ£";s:3:"ṇ";s:3:"nÌ£";s:3:"Ṉ";s:3:"Ṉ";s:3:"ṉ";s:3:"ṉ";s:3:"Ṋ";s:3:"NÌ­";s:3:"ṋ";s:3:"nÌ­";s:3:"Ṍ";s:5:"ÕÌ";s:3:"á¹";s:5:"õÌ";s:3:"Ṏ";s:5:"Ṏ";s:3:"á¹";s:5:"ṏ";s:3:"á¹";s:5:"OÌ„Ì€";s:3:"ṑ";s:5:"oÌ„Ì€";s:3:"á¹’";s:5:"OÌ„Ì";s:3:"ṓ";s:5:"oÌ„Ì";s:3:"á¹”";s:3:"PÌ";s:3:"ṕ";s:3:"pÌ";s:3:"á¹–";s:3:"Ṗ";s:3:"á¹—";s:3:"ṗ";s:3:"Ṙ";s:3:"Ṙ";s:3:"á¹™";s:3:"ṙ";s:3:"Ṛ";s:3:"RÌ£";s:3:"á¹›";s:3:"rÌ£";s:3:"Ṝ";s:5:"Ṝ";s:3:"á¹";s:5:"ṝ";s:3:"Ṟ";s:3:"Ṟ";s:3:"ṟ";s:3:"ṟ";s:3:"á¹ ";s:3:"Ṡ";s:3:"ṡ";s:3:"ṡ";s:3:"á¹¢";s:3:"SÌ£";s:3:"á¹£";s:3:"sÌ£";s:3:"Ṥ";s:5:"SÌ̇";s:3:"á¹¥";s:5:"sÌ̇";s:3:"Ṧ";s:5:"Ṧ";s:3:"ṧ";s:5:"ṧ";s:3:"Ṩ";s:5:"Ṩ";s:3:"ṩ";s:5:"ṩ";s:3:"Ṫ";s:3:"Ṫ";s:3:"ṫ";s:3:"ṫ";s:3:"Ṭ";s:3:"TÌ£";s:3:"á¹­";s:3:"tÌ£";s:3:"á¹®";s:3:"Ṯ";s:3:"ṯ";s:3:"ṯ";s:3:"á¹°";s:3:"TÌ­";s:3:"á¹±";s:3:"tÌ­";s:3:"á¹²";s:3:"Ṳ";s:3:"á¹³";s:3:"ṳ";s:3:"á¹´";s:3:"UÌ°";s:3:"á¹µ";s:3:"uÌ°";s:3:"Ṷ";s:3:"UÌ­";s:3:"á¹·";s:3:"uÌ­";s:3:"Ṹ";s:5:"ŨÌ";s:3:"á¹¹";s:5:"ũÌ";s:3:"Ṻ";s:5:"Ṻ";s:3:"á¹»";s:5:"ṻ";s:3:"á¹¼";s:3:"Ṽ";s:3:"á¹½";s:3:"ṽ";s:3:"á¹¾";s:3:"VÌ£";s:3:"ṿ";s:3:"vÌ£";s:3:"Ẁ";s:3:"WÌ€";s:3:"áº";s:3:"wÌ€";s:3:"Ẃ";s:3:"WÌ";s:3:"ẃ";s:3:"wÌ";s:3:"Ẅ";s:3:"Ẅ";s:3:"ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"Ẇ";s:3:"ẇ";s:3:"ẇ";s:3:"Ẉ";s:3:"WÌ£";s:3:"ẉ";s:3:"wÌ£";s:3:"Ẋ";s:3:"Ẋ";s:3:"ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"Ẍ";s:3:"áº";s:3:"ẍ";s:3:"Ẏ";s:3:"Ẏ";s:3:"áº";s:3:"ẏ";s:3:"áº";s:3:"ZÌ‚";s:3:"ẑ";s:3:"zÌ‚";s:3:"Ẓ";s:3:"ZÌ£";s:3:"ẓ";s:3:"zÌ£";s:3:"Ẕ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẕ";s:3:"ẖ";s:3:"ẖ";s:3:"ẗ";s:3:"ẗ";s:3:"ẘ";s:3:"wÌŠ";s:3:"ẙ";s:3:"yÌŠ";s:3:"ẚ";s:3:"aʾ";s:3:"ẛ";s:3:"ṡ";s:3:"Ạ";s:3:"AÌ£";s:3:"ạ";s:3:"aÌ£";s:3:"Ả";s:3:"Ả";s:3:"ả";s:3:"ả";s:3:"Ấ";s:5:"AÌ‚Ì";s:3:"ấ";s:5:"aÌ‚Ì";s:3:"Ầ";s:5:"AÌ‚Ì€";s:3:"ầ";s:5:"aÌ‚Ì€";s:3:"Ẩ";s:5:"Ẩ";s:3:"ẩ";s:5:"ẩ";s:3:"Ẫ";s:5:"Ẫ";s:3:"ẫ";s:5:"ẫ";s:3:"Ậ";s:5:"Ậ";s:3:"ậ";s:5:"ậ";s:3:"Ắ";s:5:"ĂÌ";s:3:"ắ";s:5:"ăÌ";s:3:"Ằ";s:5:"Ằ";s:3:"ằ";s:5:"ằ";s:3:"Ẳ";s:5:"Ẳ";s:3:"ẳ";s:5:"ẳ";s:3:"Ẵ";s:5:"Ẵ";s:3:"ẵ";s:5:"ẵ";s:3:"Ặ";s:5:"Ặ";s:3:"ặ";s:5:"ặ";s:3:"Ẹ";s:3:"EÌ£";s:3:"ẹ";s:3:"eÌ£";s:3:"Ẻ";s:3:"Ẻ";s:3:"ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"Ẽ";s:3:"ẽ";s:3:"ẽ";s:3:"Ế";s:5:"EÌ‚Ì";s:3:"ế";s:5:"eÌ‚Ì";s:3:"Ề";s:5:"EÌ‚Ì€";s:3:"á»";s:5:"eÌ‚Ì€";s:3:"Ể";s:5:"Ể";s:3:"ể";s:5:"ể";s:3:"Ễ";s:5:"Ễ";s:3:"á»…";s:5:"ễ";s:3:"Ệ";s:5:"Ệ";s:3:"ệ";s:5:"ệ";s:3:"Ỉ";s:3:"Ỉ";s:3:"ỉ";s:3:"ỉ";s:3:"Ị";s:3:"IÌ£";s:3:"ị";s:3:"iÌ£";s:3:"Ọ";s:3:"OÌ£";s:3:"á»";s:3:"oÌ£";s:3:"Ỏ";s:3:"Ỏ";s:3:"á»";s:3:"ỏ";s:3:"á»";s:5:"OÌ‚Ì";s:3:"ố";s:5:"oÌ‚Ì";s:3:"á»’";s:5:"OÌ‚Ì€";s:3:"ồ";s:5:"oÌ‚Ì€";s:3:"á»”";s:5:"Ổ";s:3:"ổ";s:5:"ổ";s:3:"á»–";s:5:"Ỗ";s:3:"á»—";s:5:"ỗ";s:3:"Ộ";s:5:"Ộ";s:3:"á»™";s:5:"ộ";s:3:"Ớ";s:5:"OÌ›Ì";s:3:"á»›";s:5:"oÌ›Ì";s:3:"Ờ";s:5:"Ờ";s:3:"á»";s:5:"ờ";s:3:"Ở";s:5:"Ở";s:3:"ở";s:5:"ở";s:3:"á» ";s:5:"Ỡ";s:3:"ỡ";s:5:"ỡ";s:3:"Ợ";s:5:"Ợ";s:3:"ợ";s:5:"ợ";s:3:"Ụ";s:3:"UÌ£";s:3:"ụ";s:3:"uÌ£";s:3:"Ủ";s:3:"Ủ";s:3:"ủ";s:3:"ủ";s:3:"Ứ";s:5:"UÌ›Ì";s:3:"ứ";s:5:"uÌ›Ì";s:3:"Ừ";s:5:"Ừ";s:3:"ừ";s:5:"ừ";s:3:"Ử";s:5:"Ử";s:3:"á»­";s:5:"ử";s:3:"á»®";s:5:"Ữ";s:3:"ữ";s:5:"ữ";s:3:"á»°";s:5:"Ự";s:3:"á»±";s:5:"ự";s:3:"Ỳ";s:3:"YÌ€";s:3:"ỳ";s:3:"yÌ€";s:3:"á»´";s:3:"YÌ£";s:3:"ỵ";s:3:"yÌ£";s:3:"Ỷ";s:3:"Ỷ";s:3:"á»·";s:3:"ỷ";s:3:"Ỹ";s:3:"Ỹ";s:3:"ỹ";s:3:"ỹ";s:3:"á¼€";s:4:"ἀ";s:3:"á¼";s:4:"ἁ";s:3:"ἂ";s:6:"ἂ";s:3:"ἃ";s:6:"ἃ";s:3:"ἄ";s:6:"ἀÌ";s:3:"á¼…";s:6:"ἁÌ";s:3:"ἆ";s:6:"ἆ";s:3:"ἇ";s:6:"ἇ";s:3:"Ἀ";s:4:"Ἀ";s:3:"Ἁ";s:4:"Ἁ";s:3:"Ἂ";s:6:"Ἂ";s:3:"Ἃ";s:6:"Ἃ";s:3:"Ἄ";s:6:"ἈÌ";s:3:"á¼";s:6:"ἉÌ";s:3:"Ἆ";s:6:"Ἆ";s:3:"á¼";s:6:"Ἇ";s:3:"á¼";s:4:"ἐ";s:3:"ἑ";s:4:"ἑ";s:3:"á¼’";s:6:"ἒ";s:3:"ἓ";s:6:"ἓ";s:3:"á¼”";s:6:"ἐÌ";s:3:"ἕ";s:6:"ἑÌ";s:3:"Ἐ";s:4:"Ἐ";s:3:"á¼™";s:4:"Ἑ";s:3:"Ἒ";s:6:"Ἒ";s:3:"á¼›";s:6:"Ἓ";s:3:"Ἔ";s:6:"ἘÌ";s:3:"á¼";s:6:"ἙÌ";s:3:"á¼ ";s:4:"ἠ";s:3:"ἡ";s:4:"ἡ";s:3:"á¼¢";s:6:"ἢ";s:3:"á¼£";s:6:"ἣ";s:3:"ἤ";s:6:"ἠÌ";s:3:"á¼¥";s:6:"ἡÌ";s:3:"ἦ";s:6:"ἦ";s:3:"ἧ";s:6:"ἧ";s:3:"Ἠ";s:4:"Ἠ";s:3:"Ἡ";s:4:"Ἡ";s:3:"Ἢ";s:6:"Ἢ";s:3:"Ἣ";s:6:"Ἣ";s:3:"Ἤ";s:6:"ἨÌ";s:3:"á¼­";s:6:"ἩÌ";s:3:"á¼®";s:6:"Ἦ";s:3:"Ἧ";s:6:"Ἧ";s:3:"á¼°";s:4:"ἰ";s:3:"á¼±";s:4:"ἱ";s:3:"á¼²";s:6:"ἲ";s:3:"á¼³";s:6:"ἳ";s:3:"á¼´";s:6:"ἰÌ";s:3:"á¼µ";s:6:"ἱÌ";s:3:"ἶ";s:6:"ἶ";s:3:"á¼·";s:6:"ἷ";s:3:"Ἰ";s:4:"Ἰ";s:3:"á¼¹";s:4:"Ἱ";s:3:"Ἲ";s:6:"Ἲ";s:3:"á¼»";s:6:"Ἳ";s:3:"á¼¼";s:6:"ἸÌ";s:3:"á¼½";s:6:"ἹÌ";s:3:"á¼¾";s:6:"Ἶ";s:3:"Ἷ";s:6:"Ἷ";s:3:"á½€";s:4:"ὀ";s:3:"á½";s:4:"ὁ";s:3:"ὂ";s:6:"ὂ";s:3:"ὃ";s:6:"ὃ";s:3:"ὄ";s:6:"ὀÌ";s:3:"á½…";s:6:"ὁÌ";s:3:"Ὀ";s:4:"Ὀ";s:3:"Ὁ";s:4:"Ὁ";s:3:"Ὂ";s:6:"Ὂ";s:3:"Ὃ";s:6:"Ὃ";s:3:"Ὄ";s:6:"ὈÌ";s:3:"á½";s:6:"ὉÌ";s:3:"á½";s:4:"Ï…Ì“";s:3:"ὑ";s:4:"Ï…Ì”";s:3:"á½’";s:6:"Ï…Ì“Ì€";s:3:"ὓ";s:6:"ὓ";s:3:"á½”";s:6:"Ï…Ì“Ì";s:3:"ὕ";s:6:"Ï…Ì”Ì";s:3:"á½–";s:6:"Ï…Ì“Í‚";s:3:"á½—";s:6:"ὗ";s:3:"á½™";s:4:"Ὑ";s:3:"á½›";s:6:"Ὓ";s:3:"á½";s:6:"ὙÌ";s:3:"Ὗ";s:6:"Ὗ";s:3:"á½ ";s:4:"ὠ";s:3:"ὡ";s:4:"ὡ";s:3:"á½¢";s:6:"ὢ";s:3:"á½£";s:6:"ὣ";s:3:"ὤ";s:6:"ὠÌ";s:3:"á½¥";s:6:"ὡÌ";s:3:"ὦ";s:6:"ὦ";s:3:"ὧ";s:6:"ὧ";s:3:"Ὠ";s:4:"Ὠ";s:3:"Ὡ";s:4:"Ὡ";s:3:"Ὢ";s:6:"Ὢ";s:3:"Ὣ";s:6:"Ὣ";s:3:"Ὤ";s:6:"ὨÌ";s:3:"á½­";s:6:"ὩÌ";s:3:"á½®";s:6:"Ὦ";s:3:"Ὧ";s:6:"Ὧ";s:3:"á½°";s:4:"ὰ";s:3:"á½±";s:4:"αÌ";s:3:"á½²";s:4:"ὲ";s:3:"á½³";s:4:"εÌ";s:3:"á½´";s:4:"ὴ";s:3:"á½µ";s:4:"ηÌ";s:3:"ὶ";s:4:"ὶ";s:3:"á½·";s:4:"ιÌ";s:3:"ὸ";s:4:"ὸ";s:3:"á½¹";s:4:"οÌ";s:3:"ὺ";s:4:"Ï…Ì€";s:3:"á½»";s:4:"Ï…Ì";s:3:"á½¼";s:4:"ὼ";s:3:"á½½";s:4:"ωÌ";s:3:"á¾€";s:6:"ᾀ";s:3:"á¾";s:6:"ᾁ";s:3:"ᾂ";s:8:"ᾂ";s:3:"ᾃ";s:8:"ᾃ";s:3:"ᾄ";s:8:"ἀÌÍ…";s:3:"á¾…";s:8:"ἁÌÍ…";s:3:"ᾆ";s:8:"ᾆ";s:3:"ᾇ";s:8:"ᾇ";s:3:"ᾈ";s:6:"ᾈ";s:3:"ᾉ";s:6:"ᾉ";s:3:"ᾊ";s:8:"ᾊ";s:3:"ᾋ";s:8:"ᾋ";s:3:"ᾌ";s:8:"ἈÌÍ…";s:3:"á¾";s:8:"ἉÌÍ…";s:3:"ᾎ";s:8:"ᾎ";s:3:"á¾";s:8:"ᾏ";s:3:"á¾";s:6:"ᾐ";s:3:"ᾑ";s:6:"ᾑ";s:3:"á¾’";s:8:"ᾒ";s:3:"ᾓ";s:8:"ᾓ";s:3:"á¾”";s:8:"ἠÌÍ…";s:3:"ᾕ";s:8:"ἡÌÍ…";s:3:"á¾–";s:8:"ᾖ";s:3:"á¾—";s:8:"ᾗ";s:3:"ᾘ";s:6:"ᾘ";s:3:"á¾™";s:6:"ᾙ";s:3:"ᾚ";s:8:"ᾚ";s:3:"á¾›";s:8:"ᾛ";s:3:"ᾜ";s:8:"ἨÌÍ…";s:3:"á¾";s:8:"ἩÌÍ…";s:3:"ᾞ";s:8:"ᾞ";s:3:"ᾟ";s:8:"ᾟ";s:3:"á¾ ";s:6:"ᾠ";s:3:"ᾡ";s:6:"ᾡ";s:3:"á¾¢";s:8:"ᾢ";s:3:"á¾£";s:8:"ᾣ";s:3:"ᾤ";s:8:"ὠÌÍ…";s:3:"á¾¥";s:8:"ὡÌÍ…";s:3:"ᾦ";s:8:"ᾦ";s:3:"ᾧ";s:8:"ᾧ";s:3:"ᾨ";s:6:"ᾨ";s:3:"ᾩ";s:6:"ᾩ";s:3:"ᾪ";s:8:"ᾪ";s:3:"ᾫ";s:8:"ᾫ";s:3:"ᾬ";s:8:"ὨÌÍ…";s:3:"á¾­";s:8:"ὩÌÍ…";s:3:"á¾®";s:8:"ᾮ";s:3:"ᾯ";s:8:"ᾯ";s:3:"á¾°";s:4:"ᾰ";s:3:"á¾±";s:4:"ᾱ";s:3:"á¾²";s:6:"ᾲ";s:3:"á¾³";s:4:"ᾳ";s:3:"á¾´";s:6:"αÌÍ…";s:3:"ᾶ";s:4:"ᾶ";s:3:"á¾·";s:6:"ᾷ";s:3:"Ᾰ";s:4:"Ᾰ";s:3:"á¾¹";s:4:"Ᾱ";s:3:"Ὰ";s:4:"Ὰ";s:3:"á¾»";s:4:"ΑÌ";s:3:"á¾¼";s:4:"ᾼ";s:3:"á¾½";s:3:" Ì“";s:3:"á¾¾";s:2:"ι";s:3:"᾿";s:3:" Ì“";s:3:"á¿€";s:3:" Í‚";s:3:"á¿";s:5:" ̈͂";s:3:"á¿‚";s:6:"ῂ";s:3:"ῃ";s:4:"ῃ";s:3:"á¿„";s:6:"ηÌÍ…";s:3:"ῆ";s:4:"ῆ";s:3:"ῇ";s:6:"ῇ";s:3:"Ὲ";s:4:"Ὲ";s:3:"Έ";s:4:"ΕÌ";s:3:"á¿Š";s:4:"Ὴ";s:3:"á¿‹";s:4:"ΗÌ";s:3:"á¿Œ";s:4:"ῌ";s:3:"á¿";s:5:" Ì“Ì€";s:3:"á¿Ž";s:5:" Ì“Ì";s:3:"á¿";s:5:" Ì“Í‚";s:3:"á¿";s:4:"ῐ";s:3:"á¿‘";s:4:"ῑ";s:3:"á¿’";s:6:"ῒ";s:3:"á¿“";s:6:"ϊÌ";s:3:"á¿–";s:4:"ῖ";s:3:"á¿—";s:6:"ῗ";s:3:"Ῐ";s:4:"Ῐ";s:3:"á¿™";s:4:"Ῑ";s:3:"á¿š";s:4:"Ὶ";s:3:"á¿›";s:4:"ΙÌ";s:3:"á¿";s:5:" ̔̀";s:3:"á¿ž";s:5:" Ì”Ì";s:3:"á¿Ÿ";s:5:" ̔͂";s:3:"á¿ ";s:4:"ῠ";s:3:"á¿¡";s:4:"Ï…Ì„";s:3:"á¿¢";s:6:"ῢ";s:3:"á¿£";s:6:"ϋÌ";s:3:"ῤ";s:4:"ÏÌ“";s:3:"á¿¥";s:4:"ÏÌ”";s:3:"ῦ";s:4:"Ï…Í‚";s:3:"ῧ";s:6:"ῧ";s:3:"Ῠ";s:4:"Ῠ";s:3:"á¿©";s:4:"Ῡ";s:3:"Ὺ";s:4:"Ὺ";s:3:"á¿«";s:4:"Î¥Ì";s:3:"Ῥ";s:4:"Ῥ";s:3:"á¿­";s:5:" ̈̀";s:3:"á¿®";s:5:" ̈Ì";s:3:"`";s:1:"`";s:3:"ῲ";s:6:"ῲ";s:3:"ῳ";s:4:"ῳ";s:3:"á¿´";s:6:"ωÌÍ…";s:3:"ῶ";s:4:"ῶ";s:3:"á¿·";s:6:"ῷ";s:3:"Ὸ";s:4:"Ὸ";s:3:"Ό";s:4:"ΟÌ";s:3:"Ὼ";s:4:"Ὼ";s:3:"á¿»";s:4:"ΩÌ";s:3:"ῼ";s:4:"ῼ";s:3:"´";s:3:" Ì";s:3:"῾";s:3:" Ì”";s:3:" ";s:1:" ";s:3:"â€";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:"‑";s:3:"â€";s:3:"‗";s:3:" ̳";s:3:"․";s:1:".";s:3:"‥";s:2:"..";s:3:"…";s:3:"...";s:3:" ";s:1:" ";s:3:"″";s:6:"′′";s:3:"‴";s:9:"′′′";s:3:"‶";s:6:"‵‵";s:3:"‷";s:9:"‵‵‵";s:3:"‼";s:2:"!!";s:3:"‾";s:3:" Ì…";s:3:"â‡";s:2:"??";s:3:"âˆ";s:2:"?!";s:3:"â‰";s:2:"!?";s:3:"â—";s:12:"′′′′";s:3:"âŸ";s:1:" ";s:3:"â°";s:1:"0";s:3:"â±";s:1:"i";s:3:"â´";s:1:"4";s:3:"âµ";s:1:"5";s:3:"â¶";s:1:"6";s:3:"â·";s:1:"7";s:3:"â¸";s:1:"8";s:3:"â¹";s:1:"9";s:3:"âº";s:1:"+";s:3:"â»";s:3:"−";s:3:"â¼";s:1:"=";s:3:"â½";s:1:"(";s:3:"â¾";s:1:")";s:3:"â¿";s:1:"n";s:3:"â‚€";s:1:"0";s:3:"â‚";s:1:"1";s:3:"â‚‚";s:1:"2";s:3:"₃";s:1:"3";s:3:"â‚„";s:1:"4";s:3:"â‚…";s:1:"5";s:3:"₆";s:1:"6";s:3:"₇";s:1:"7";s:3:"₈";s:1:"8";s:3:"₉";s:1:"9";s:3:"â‚Š";s:1:"+";s:3:"â‚‹";s:3:"−";s:3:"â‚Œ";s:1:"=";s:3:"â‚";s:1:"(";s:3:"â‚Ž";s:1:")";s:3:"â‚";s:1:"a";s:3:"â‚‘";s:1:"e";s:3:"â‚’";s:1:"o";s:3:"â‚“";s:1:"x";s:3:"â‚”";s:2:"É™";s:3:"₨";s:2:"Rs";s:3:"â„€";s:3:"a/c";s:3:"â„";s:3:"a/s";s:3:"â„‚";s:1:"C";s:3:"℃";s:3:"°C";s:3:"â„…";s:3:"c/o";s:3:"℆";s:3:"c/u";s:3:"ℇ";s:2:"Æ";s:3:"℉";s:3:"°F";s:3:"â„Š";s:1:"g";s:3:"â„‹";s:1:"H";s:3:"â„Œ";s:1:"H";s:3:"â„";s:1:"H";s:3:"â„Ž";s:1:"h";s:3:"â„";s:2:"ħ";s:3:"â„";s:1:"I";s:3:"â„‘";s:1:"I";s:3:"â„’";s:1:"L";s:3:"â„“";s:1:"l";s:3:"â„•";s:1:"N";s:3:"â„–";s:2:"No";s:3:"â„™";s:1:"P";s:3:"â„š";s:1:"Q";s:3:"â„›";s:1:"R";s:3:"â„œ";s:1:"R";s:3:"â„";s:1:"R";s:3:"â„ ";s:2:"SM";s:3:"â„¡";s:3:"TEL";s:3:"â„¢";s:2:"TM";s:3:"ℤ";s:1:"Z";s:3:"Ω";s:2:"Ω";s:3:"ℨ";s:1:"Z";s:3:"K";s:1:"K";s:3:"â„«";s:3:"AÌŠ";s:3:"ℬ";s:1:"B";s:3:"â„­";s:1:"C";s:3:"ℯ";s:1:"e";s:3:"â„°";s:1:"E";s:3:"ℱ";s:1:"F";s:3:"ℳ";s:1:"M";s:3:"â„´";s:1:"o";s:3:"ℵ";s:2:"×";s:3:"ℶ";s:2:"ב";s:3:"â„·";s:2:"×’";s:3:"ℸ";s:2:"ד";s:3:"ℹ";s:1:"i";s:3:"â„»";s:3:"FAX";s:3:"ℼ";s:2:"Ï€";s:3:"ℽ";s:2:"γ";s:3:"ℾ";s:2:"Γ";s:3:"â„¿";s:2:"Π";s:3:"â…€";s:3:"∑";s:3:"â……";s:1:"D";s:3:"â…†";s:1:"d";s:3:"â…‡";s:1:"e";s:3:"â…ˆ";s:1:"i";s:3:"â…‰";s:1:"j";s:3:"â…“";s:5:"1â„3";s:3:"â…”";s:5:"2â„3";s:3:"â…•";s:5:"1â„5";s:3:"â…–";s:5:"2â„5";s:3:"â…—";s:5:"3â„5";s:3:"â…˜";s:5:"4â„5";s:3:"â…™";s:5:"1â„6";s:3:"â…š";s:5:"5â„6";s:3:"â…›";s:5:"1â„8";s:3:"â…œ";s:5:"3â„8";s:3:"â…";s:5:"5â„8";s:3:"â…ž";s:5:"7â„8";s:3:"â…Ÿ";s:4:"1â„";s:3:"â… ";s:1:"I";s:3:"â…¡";s:2:"II";s:3:"â…¢";s:3:"III";s:3:"â…£";s:2:"IV";s:3:"â…¤";s:1:"V";s:3:"â…¥";s:2:"VI";s:3:"â…¦";s:3:"VII";s:3:"â…§";s:4:"VIII";s:3:"â…¨";s:2:"IX";s:3:"â…©";s:1:"X";s:3:"â…ª";s:2:"XI";s:3:"â…«";s:3:"XII";s:3:"â…¬";s:1:"L";s:3:"â…­";s:1:"C";s:3:"â…®";s:1:"D";s:3:"â…¯";s:1:"M";s:3:"â…°";s:1:"i";s:3:"â…±";s:2:"ii";s:3:"â…²";s:3:"iii";s:3:"â…³";s:2:"iv";s:3:"â…´";s:1:"v";s:3:"â…µ";s:2:"vi";s:3:"â…¶";s:3:"vii";s:3:"â…·";s:4:"viii";s:3:"â…¸";s:2:"ix";s:3:"â…¹";s:1:"x";s:3:"â…º";s:2:"xi";s:3:"â…»";s:3:"xii";s:3:"â…¼";s:1:"l";s:3:"â…½";s:1:"c";s:3:"â…¾";s:1:"d";s:3:"â…¿";s:1:"m";s:3:"↚";s:5:"â†Ì¸";s:3:"↛";s:5:"↛";s:3:"↮";s:5:"↮";s:3:"â‡";s:5:"â‡Ì¸";s:3:"⇎";s:5:"⇎";s:3:"â‡";s:5:"⇏";s:3:"∄";s:5:"∄";s:3:"∉";s:5:"∉";s:3:"∌";s:5:"∌";s:3:"∤";s:5:"∤";s:3:"∦";s:5:"∦";s:3:"∬";s:6:"∫∫";s:3:"∭";s:9:"∫∫∫";s:3:"∯";s:6:"∮∮";s:3:"∰";s:9:"∮∮∮";s:3:"â‰";s:5:"≁";s:3:"≄";s:5:"≄";s:3:"≇";s:5:"≇";s:3:"≉";s:5:"≉";s:3:"≠";s:3:"≠";s:3:"≢";s:5:"≢";s:3:"≭";s:5:"â‰Ì¸";s:3:"≮";s:3:"≮";s:3:"≯";s:3:"≯";s:3:"≰";s:5:"≰";s:3:"≱";s:5:"≱";s:3:"≴";s:5:"≴";s:3:"≵";s:5:"≵";s:3:"≸";s:5:"≸";s:3:"≹";s:5:"≹";s:3:"⊀";s:5:"⊀";s:3:"âŠ";s:5:"⊁";s:3:"⊄";s:5:"⊄";s:3:"⊅";s:5:"⊅";s:3:"⊈";s:5:"⊈";s:3:"⊉";s:5:"⊉";s:3:"⊬";s:5:"⊬";s:3:"⊭";s:5:"⊭";s:3:"⊮";s:5:"⊮";s:3:"⊯";s:5:"⊯";s:3:"â‹ ";s:5:"⋠";s:3:"â‹¡";s:5:"⋡";s:3:"â‹¢";s:5:"⋢";s:3:"â‹£";s:5:"⋣";s:3:"⋪";s:5:"⋪";s:3:"â‹«";s:5:"⋫";s:3:"⋬";s:5:"⋬";s:3:"â‹­";s:5:"⋭";s:3:"〈";s:3:"〈";s:3:"〉";s:3:"〉";s:3:"â‘ ";s:1:"1";s:3:"â‘¡";s:1:"2";s:3:"â‘¢";s:1:"3";s:3:"â‘£";s:1:"4";s:3:"⑤";s:1:"5";s:3:"â‘¥";s:1:"6";s:3:"⑦";s:1:"7";s:3:"⑧";s:1:"8";s:3:"⑨";s:1:"9";s:3:"â‘©";s:2:"10";s:3:"⑪";s:2:"11";s:3:"â‘«";s:2:"12";s:3:"⑬";s:2:"13";s:3:"â‘­";s:2:"14";s:3:"â‘®";s:2:"15";s:3:"⑯";s:2:"16";s:3:"â‘°";s:2:"17";s:3:"⑱";s:2:"18";s:3:"⑲";s:2:"19";s:3:"⑳";s:2:"20";s:3:"â‘´";s:3:"(1)";s:3:"⑵";s:3:"(2)";s:3:"⑶";s:3:"(3)";s:3:"â‘·";s:3:"(4)";s:3:"⑸";s:3:"(5)";s:3:"⑹";s:3:"(6)";s:3:"⑺";s:3:"(7)";s:3:"â‘»";s:3:"(8)";s:3:"⑼";s:3:"(9)";s:3:"⑽";s:4:"(10)";s:3:"⑾";s:4:"(11)";s:3:"â‘¿";s:4:"(12)";s:3:"â’€";s:4:"(13)";s:3:"â’";s:4:"(14)";s:3:"â’‚";s:4:"(15)";s:3:"â’ƒ";s:4:"(16)";s:3:"â’„";s:4:"(17)";s:3:"â’…";s:4:"(18)";s:3:"â’†";s:4:"(19)";s:3:"â’‡";s:4:"(20)";s:3:"â’ˆ";s:2:"1.";s:3:"â’‰";s:2:"2.";s:3:"â’Š";s:2:"3.";s:3:"â’‹";s:2:"4.";s:3:"â’Œ";s:2:"5.";s:3:"â’";s:2:"6.";s:3:"â’Ž";s:2:"7.";s:3:"â’";s:2:"8.";s:3:"â’";s:2:"9.";s:3:"â’‘";s:3:"10.";s:3:"â’’";s:3:"11.";s:3:"â’“";s:3:"12.";s:3:"â’”";s:3:"13.";s:3:"â’•";s:3:"14.";s:3:"â’–";s:3:"15.";s:3:"â’—";s:3:"16.";s:3:"â’˜";s:3:"17.";s:3:"â’™";s:3:"18.";s:3:"â’š";s:3:"19.";s:3:"â’›";s:3:"20.";s:3:"â’œ";s:3:"(a)";s:3:"â’";s:3:"(b)";s:3:"â’ž";s:3:"(c)";s:3:"â’Ÿ";s:3:"(d)";s:3:"â’ ";s:3:"(e)";s:3:"â’¡";s:3:"(f)";s:3:"â’¢";s:3:"(g)";s:3:"â’£";s:3:"(h)";s:3:"â’¤";s:3:"(i)";s:3:"â’¥";s:3:"(j)";s:3:"â’¦";s:3:"(k)";s:3:"â’§";s:3:"(l)";s:3:"â’¨";s:3:"(m)";s:3:"â’©";s:3:"(n)";s:3:"â’ª";s:3:"(o)";s:3:"â’«";s:3:"(p)";s:3:"â’¬";s:3:"(q)";s:3:"â’­";s:3:"(r)";s:3:"â’®";s:3:"(s)";s:3:"â’¯";s:3:"(t)";s:3:"â’°";s:3:"(u)";s:3:"â’±";s:3:"(v)";s:3:"â’²";s:3:"(w)";s:3:"â’³";s:3:"(x)";s:3:"â’´";s:3:"(y)";s:3:"â’µ";s:3:"(z)";s:3:"â’¶";s:1:"A";s:3:"â’·";s:1:"B";s:3:"â’¸";s:1:"C";s:3:"â’¹";s:1:"D";s:3:"â’º";s:1:"E";s:3:"â’»";s:1:"F";s:3:"â’¼";s:1:"G";s:3:"â’½";s:1:"H";s:3:"â’¾";s:1:"I";s:3:"â’¿";s:1:"J";s:3:"â“€";s:1:"K";s:3:"â“";s:1:"L";s:3:"â“‚";s:1:"M";s:3:"Ⓝ";s:1:"N";s:3:"â“„";s:1:"O";s:3:"â“…";s:1:"P";s:3:"Ⓠ";s:1:"Q";s:3:"Ⓡ";s:1:"R";s:3:"Ⓢ";s:1:"S";s:3:"Ⓣ";s:1:"T";s:3:"â“Š";s:1:"U";s:3:"â“‹";s:1:"V";s:3:"â“Œ";s:1:"W";s:3:"â“";s:1:"X";s:3:"â“Ž";s:1:"Y";s:3:"â“";s:1:"Z";s:3:"â“";s:1:"a";s:3:"â“‘";s:1:"b";s:3:"â“’";s:1:"c";s:3:"â““";s:1:"d";s:3:"â“”";s:1:"e";s:3:"â“•";s:1:"f";s:3:"â“–";s:1:"g";s:3:"â“—";s:1:"h";s:3:"ⓘ";s:1:"i";s:3:"â“™";s:1:"j";s:3:"â“š";s:1:"k";s:3:"â“›";s:1:"l";s:3:"â“œ";s:1:"m";s:3:"â“";s:1:"n";s:3:"â“ž";s:1:"o";s:3:"â“Ÿ";s:1:"p";s:3:"â“ ";s:1:"q";s:3:"â“¡";s:1:"r";s:3:"â“¢";s:1:"s";s:3:"â“£";s:1:"t";s:3:"ⓤ";s:1:"u";s:3:"â“¥";s:1:"v";s:3:"ⓦ";s:1:"w";s:3:"ⓧ";s:1:"x";s:3:"ⓨ";s:1:"y";s:3:"â“©";s:1:"z";s:3:"⓪";s:1:"0";s:3:"⨌";s:12:"∫∫∫∫";s:3:"â©´";s:3:"::=";s:3:"⩵";s:2:"==";s:3:"⩶";s:3:"===";s:3:"â«œ";s:5:"â«Ì¸";s:3:"â±¼";s:1:"j";s:3:"â±½";s:1:"V";s:3:"ⵯ";s:3:"ⵡ";s:3:"⺟";s:3:"æ¯";s:3:"⻳";s:3:"龟";s:3:"â¼€";s:3:"一";s:3:"â¼";s:3:"丨";s:3:"⼂";s:3:"丶";s:3:"⼃";s:3:"丿";s:3:"⼄";s:3:"ä¹™";s:3:"â¼…";s:3:"亅";s:3:"⼆";s:3:"二";s:3:"⼇";s:3:"亠";s:3:"⼈";s:3:"人";s:3:"⼉";s:3:"å„¿";s:3:"⼊";s:3:"å…¥";s:3:"⼋";s:3:"å…«";s:3:"⼌";s:3:"冂";s:3:"â¼";s:3:"冖";s:3:"⼎";s:3:"冫";s:3:"â¼";s:3:"几";s:3:"â¼";s:3:"凵";s:3:"⼑";s:3:"刀";s:3:"â¼’";s:3:"力";s:3:"⼓";s:3:"勹";s:3:"â¼”";s:3:"匕";s:3:"⼕";s:3:"匚";s:3:"â¼–";s:3:"匸";s:3:"â¼—";s:3:"å";s:3:"⼘";s:3:"åœ";s:3:"â¼™";s:3:"å©";s:3:"⼚";s:3:"厂";s:3:"â¼›";s:3:"厶";s:3:"⼜";s:3:"åˆ";s:3:"â¼";s:3:"å£";s:3:"⼞";s:3:"å›—";s:3:"⼟";s:3:"土";s:3:"â¼ ";s:3:"士";s:3:"⼡";s:3:"夂";s:3:"â¼¢";s:3:"夊";s:3:"â¼£";s:3:"夕";s:3:"⼤";s:3:"大";s:3:"â¼¥";s:3:"女";s:3:"⼦";s:3:"å­";s:3:"⼧";s:3:"宀";s:3:"⼨";s:3:"寸";s:3:"⼩";s:3:"å°";s:3:"⼪";s:3:"å°¢";s:3:"⼫";s:3:"å°¸";s:3:"⼬";s:3:"å±®";s:3:"â¼­";s:3:"å±±";s:3:"â¼®";s:3:"å·›";s:3:"⼯";s:3:"å·¥";s:3:"â¼°";s:3:"å·±";s:3:"â¼±";s:3:"å·¾";s:3:"â¼²";s:3:"å¹²";s:3:"â¼³";s:3:"幺";s:3:"â¼´";s:3:"广";s:3:"â¼µ";s:3:"å»´";s:3:"⼶";s:3:"廾";s:3:"â¼·";s:3:"弋";s:3:"⼸";s:3:"弓";s:3:"â¼¹";s:3:"å½";s:3:"⼺";s:3:"彡";s:3:"â¼»";s:3:"å½³";s:3:"â¼¼";s:3:"心";s:3:"â¼½";s:3:"戈";s:3:"â¼¾";s:3:"戶";s:3:"⼿";s:3:"手";s:3:"â½€";s:3:"支";s:3:"â½";s:3:"æ”´";s:3:"⽂";s:3:"æ–‡";s:3:"⽃";s:3:"æ–—";s:3:"⽄";s:3:"æ–¤";s:3:"â½…";s:3:"æ–¹";s:3:"⽆";s:3:"æ— ";s:3:"⽇";s:3:"æ—¥";s:3:"⽈";s:3:"æ›°";s:3:"⽉";s:3:"月";s:3:"⽊";s:3:"木";s:3:"⽋";s:3:"欠";s:3:"⽌";s:3:"æ­¢";s:3:"â½";s:3:"æ­¹";s:3:"⽎";s:3:"殳";s:3:"â½";s:3:"毋";s:3:"â½";s:3:"比";s:3:"⽑";s:3:"毛";s:3:"â½’";s:3:"æ°";s:3:"⽓";s:3:"æ°”";s:3:"â½”";s:3:"æ°´";s:3:"⽕";s:3:"ç«";s:3:"â½–";s:3:"爪";s:3:"â½—";s:3:"父";s:3:"⽘";s:3:"爻";s:3:"â½™";s:3:"爿";s:3:"⽚";s:3:"片";s:3:"â½›";s:3:"牙";s:3:"⽜";s:3:"牛";s:3:"â½";s:3:"犬";s:3:"⽞";s:3:"玄";s:3:"⽟";s:3:"玉";s:3:"â½ ";s:3:"ç“œ";s:3:"⽡";s:3:"瓦";s:3:"â½¢";s:3:"甘";s:3:"â½£";s:3:"生";s:3:"⽤";s:3:"用";s:3:"â½¥";s:3:"ç”°";s:3:"⽦";s:3:"ç–‹";s:3:"⽧";s:3:"ç–’";s:3:"⽨";s:3:"癶";s:3:"⽩";s:3:"白";s:3:"⽪";s:3:"çš®";s:3:"⽫";s:3:"çš¿";s:3:"⽬";s:3:"ç›®";s:3:"â½­";s:3:"矛";s:3:"â½®";s:3:"矢";s:3:"⽯";s:3:"石";s:3:"â½°";s:3:"示";s:3:"â½±";s:3:"禸";s:3:"â½²";s:3:"禾";s:3:"â½³";s:3:"ç©´";s:3:"â½´";s:3:"ç«‹";s:3:"â½µ";s:3:"竹";s:3:"⽶";s:3:"ç±³";s:3:"â½·";s:3:"糸";s:3:"⽸";s:3:"缶";s:3:"â½¹";s:3:"网";s:3:"⽺";s:3:"羊";s:3:"â½»";s:3:"ç¾½";s:3:"â½¼";s:3:"è€";s:3:"â½½";s:3:"而";s:3:"â½¾";s:3:"耒";s:3:"⽿";s:3:"耳";s:3:"â¾€";s:3:"è¿";s:3:"â¾";s:3:"肉";s:3:"⾂";s:3:"臣";s:3:"⾃";s:3:"自";s:3:"⾄";s:3:"至";s:3:"â¾…";s:3:"臼";s:3:"⾆";s:3:"舌";s:3:"⾇";s:3:"舛";s:3:"⾈";s:3:"舟";s:3:"⾉";s:3:"艮";s:3:"⾊";s:3:"色";s:3:"⾋";s:3:"艸";s:3:"⾌";s:3:"è™";s:3:"â¾";s:3:"虫";s:3:"⾎";s:3:"è¡€";s:3:"â¾";s:3:"è¡Œ";s:3:"â¾";s:3:"è¡£";s:3:"⾑";s:3:"襾";s:3:"â¾’";s:3:"見";s:3:"⾓";s:3:"角";s:3:"â¾”";s:3:"言";s:3:"⾕";s:3:"è°·";s:3:"â¾–";s:3:"豆";s:3:"â¾—";s:3:"豕";s:3:"⾘";s:3:"豸";s:3:"â¾™";s:3:"è²";s:3:"⾚";s:3:"赤";s:3:"â¾›";s:3:"èµ°";s:3:"⾜";s:3:"足";s:3:"â¾";s:3:"身";s:3:"⾞";s:3:"車";s:3:"⾟";s:3:"è¾›";s:3:"â¾ ";s:3:"è¾°";s:3:"⾡";s:3:"è¾µ";s:3:"â¾¢";s:3:"é‚‘";s:3:"â¾£";s:3:"é…‰";s:3:"⾤";s:3:"釆";s:3:"â¾¥";s:3:"里";s:3:"⾦";s:3:"金";s:3:"⾧";s:3:"é•·";s:3:"⾨";s:3:"é–€";s:3:"⾩";s:3:"阜";s:3:"⾪";s:3:"隶";s:3:"⾫";s:3:"éš¹";s:3:"⾬";s:3:"雨";s:3:"â¾­";s:3:"é‘";s:3:"â¾®";s:3:"éž";s:3:"⾯";s:3:"é¢";s:3:"â¾°";s:3:"é©";s:3:"â¾±";s:3:"韋";s:3:"â¾²";s:3:"韭";s:3:"â¾³";s:3:"音";s:3:"â¾´";s:3:"é ";s:3:"â¾µ";s:3:"風";s:3:"⾶";s:3:"飛";s:3:"â¾·";s:3:"食";s:3:"⾸";s:3:"首";s:3:"â¾¹";s:3:"香";s:3:"⾺";s:3:"馬";s:3:"â¾»";s:3:"骨";s:3:"â¾¼";s:3:"高";s:3:"â¾½";s:3:"é«Ÿ";s:3:"â¾¾";s:3:"鬥";s:3:"⾿";s:3:"鬯";s:3:"â¿€";s:3:"鬲";s:3:"â¿";s:3:"鬼";s:3:"â¿‚";s:3:"é­š";s:3:"⿃";s:3:"é³¥";s:3:"â¿„";s:3:"é¹µ";s:3:"â¿…";s:3:"鹿";s:3:"⿆";s:3:"麥";s:3:"⿇";s:3:"麻";s:3:"⿈";s:3:"黃";s:3:"⿉";s:3:"é»";s:3:"â¿Š";s:3:"黑";s:3:"â¿‹";s:3:"黹";s:3:"â¿Œ";s:3:"黽";s:3:"â¿";s:3:"鼎";s:3:"â¿Ž";s:3:"鼓";s:3:"â¿";s:3:"é¼ ";s:3:"â¿";s:3:"é¼»";s:3:"â¿‘";s:3:"齊";s:3:"â¿’";s:3:"é½’";s:3:"â¿“";s:3:"é¾";s:3:"â¿”";s:3:"龜";s:3:"â¿•";s:3:"é¾ ";s:3:" ";s:1:" ";s:3:"〶";s:3:"〒";s:3:"〸";s:3:"å";s:3:"〹";s:3:"å„";s:3:"〺";s:3:"å…";s:3:"ãŒ";s:6:"ã‹ã‚™";s:3:"ãŽ";s:6:"ãã‚™";s:3:"ã";s:6:"ãã‚™";s:3:"ã’";s:6:"ã‘ã‚™";s:3:"ã”";s:6:"ã“ã‚™";s:3:"ã–";s:6:"ã•ã‚™";s:3:"ã˜";s:6:"ã—ã‚™";s:3:"ãš";s:6:"ã™ã‚™";s:3:"ãœ";s:6:"ã›ã‚™";s:3:"ãž";s:6:"ãã‚™";s:3:"ã ";s:6:"ãŸã‚™";s:3:"ã¢";s:6:"ã¡ã‚™";s:3:"ã¥";s:6:"ã¤ã‚™";s:3:"ã§";s:6:"ã¦ã‚™";s:3:"ã©";s:6:"ã¨ã‚™";s:3:"ã°";s:6:"ã¯ã‚™";s:3:"ã±";s:6:"ã¯ã‚š";s:3:"ã³";s:6:"ã²ã‚™";s:3:"ã´";s:6:"ã²ã‚š";s:3:"ã¶";s:6:"ãµã‚™";s:3:"ã·";s:6:"ãµã‚š";s:3:"ã¹";s:6:"ã¸ã‚™";s:3:"ãº";s:6:"ã¸ã‚š";s:3:"ã¼";s:6:"ã»ã‚™";s:3:"ã½";s:6:"ã»ã‚š";s:3:"ã‚”";s:6:"ã†ã‚™";s:3:"ã‚›";s:4:" ã‚™";s:3:"ã‚œ";s:4:" ã‚š";s:3:"ã‚ž";s:6:"ã‚ã‚™";s:3:"ã‚Ÿ";s:6:"より";s:3:"ガ";s:6:"ã‚«ã‚™";s:3:"ã‚®";s:6:"ã‚­ã‚™";s:3:"ã‚°";s:6:"グ";s:3:"ゲ";s:6:"ゲ";s:3:"ã‚´";s:6:"ゴ";s:3:"ザ";s:6:"ザ";s:3:"ジ";s:6:"ã‚·ã‚™";s:3:"ズ";s:6:"ズ";s:3:"ゼ";s:6:"ゼ";s:3:"ゾ";s:6:"ゾ";s:3:"ダ";s:6:"ã‚¿ã‚™";s:3:"ヂ";s:6:"ãƒã‚™";s:3:"ヅ";s:6:"ヅ";s:3:"デ";s:6:"デ";s:3:"ド";s:6:"ド";s:3:"ãƒ";s:6:"ãƒã‚™";s:3:"パ";s:6:"ãƒã‚š";s:3:"ビ";s:6:"ビ";s:3:"ピ";s:6:"ピ";s:3:"ブ";s:6:"ブ";s:3:"プ";s:6:"プ";s:3:"ベ";s:6:"ベ";s:3:"ペ";s:6:"ペ";s:3:"ボ";s:6:"ボ";s:3:"ãƒ";s:6:"ポ";s:3:"ヴ";s:6:"ヴ";s:3:"ヷ";s:6:"ヷ";s:3:"ヸ";s:6:"ヸ";s:3:"ヹ";s:6:"ヹ";s:3:"ヺ";s:6:"ヺ";s:3:"ヾ";s:6:"ヾ";s:3:"ヿ";s:6:"コト";s:3:"ㄱ";s:3:"á„€";s:3:"ㄲ";s:3:"á„";s:3:"ㄳ";s:3:"ᆪ";s:3:"ã„´";s:3:"á„‚";s:3:"ㄵ";s:3:"ᆬ";s:3:"ㄶ";s:3:"ᆭ";s:3:"ã„·";s:3:"ᄃ";s:3:"ㄸ";s:3:"á„„";s:3:"ㄹ";s:3:"á„…";s:3:"ㄺ";s:3:"ᆰ";s:3:"ã„»";s:3:"ᆱ";s:3:"ㄼ";s:3:"ᆲ";s:3:"ㄽ";s:3:"ᆳ";s:3:"ㄾ";s:3:"ᆴ";s:3:"ã„¿";s:3:"ᆵ";s:3:"ã…€";s:3:"á„š";s:3:"ã…";s:3:"ᄆ";s:3:"ã…‚";s:3:"ᄇ";s:3:"ã…ƒ";s:3:"ᄈ";s:3:"ã…„";s:3:"á„¡";s:3:"ã……";s:3:"ᄉ";s:3:"ã…†";s:3:"á„Š";s:3:"ã…‡";s:3:"á„‹";s:3:"ã…ˆ";s:3:"á„Œ";s:3:"ã…‰";s:3:"á„";s:3:"ã…Š";s:3:"á„Ž";s:3:"ã…‹";s:3:"á„";s:3:"ã…Œ";s:3:"á„";s:3:"ã…";s:3:"á„‘";s:3:"ã…Ž";s:3:"á„’";s:3:"ã…";s:3:"á…¡";s:3:"ã…";s:3:"á…¢";s:3:"ã…‘";s:3:"á…£";s:3:"ã…’";s:3:"á…¤";s:3:"ã…“";s:3:"á…¥";s:3:"ã…”";s:3:"á…¦";s:3:"ã…•";s:3:"á…§";s:3:"ã…–";s:3:"á…¨";s:3:"ã…—";s:3:"á…©";s:3:"ã…˜";s:3:"á…ª";s:3:"ã…™";s:3:"á…«";s:3:"ã…š";s:3:"á…¬";s:3:"ã…›";s:3:"á…­";s:3:"ã…œ";s:3:"á…®";s:3:"ã…";s:3:"á…¯";s:3:"ã…ž";s:3:"á…°";s:3:"ã…Ÿ";s:3:"á…±";s:3:"ã… ";s:3:"á…²";s:3:"ã…¡";s:3:"á…³";s:3:"ã…¢";s:3:"á…´";s:3:"ã…£";s:3:"á…µ";s:3:"ã…¤";s:3:"á… ";s:3:"ã…¥";s:3:"á„”";s:3:"ã…¦";s:3:"á„•";s:3:"ã…§";s:3:"ᇇ";s:3:"ã…¨";s:3:"ᇈ";s:3:"ã…©";s:3:"ᇌ";s:3:"ã…ª";s:3:"ᇎ";s:3:"ã…«";s:3:"ᇓ";s:3:"ã…¬";s:3:"ᇗ";s:3:"ã…­";s:3:"ᇙ";s:3:"ã…®";s:3:"á„œ";s:3:"ã…¯";s:3:"á‡";s:3:"ã…°";s:3:"ᇟ";s:3:"ã…±";s:3:"á„";s:3:"ã…²";s:3:"á„ž";s:3:"ã…³";s:3:"á„ ";s:3:"ã…´";s:3:"á„¢";s:3:"ã…µ";s:3:"á„£";s:3:"ã…¶";s:3:"ᄧ";s:3:"ã…·";s:3:"á„©";s:3:"ã…¸";s:3:"á„«";s:3:"ã…¹";s:3:"ᄬ";s:3:"ã…º";s:3:"á„­";s:3:"ã…»";s:3:"á„®";s:3:"ã…¼";s:3:"ᄯ";s:3:"ã…½";s:3:"ᄲ";s:3:"ã…¾";s:3:"ᄶ";s:3:"ã…¿";s:3:"á…€";s:3:"ㆀ";s:3:"á…‡";s:3:"ã†";s:3:"á…Œ";s:3:"ㆂ";s:3:"ᇱ";s:3:"ㆃ";s:3:"ᇲ";s:3:"ㆄ";s:3:"á…—";s:3:"ㆅ";s:3:"á…˜";s:3:"ㆆ";s:3:"á…™";s:3:"ㆇ";s:3:"ᆄ";s:3:"ㆈ";s:3:"ᆅ";s:3:"ㆉ";s:3:"ᆈ";s:3:"ㆊ";s:3:"ᆑ";s:3:"ㆋ";s:3:"ᆒ";s:3:"ㆌ";s:3:"ᆔ";s:3:"ã†";s:3:"ᆞ";s:3:"ㆎ";s:3:"ᆡ";s:3:"㆒";s:3:"一";s:3:"㆓";s:3:"二";s:3:"㆔";s:3:"三";s:3:"㆕";s:3:"å››";s:3:"㆖";s:3:"上";s:3:"㆗";s:3:"中";s:3:"㆘";s:3:"下";s:3:"㆙";s:3:"甲";s:3:"㆚";s:3:"ä¹™";s:3:"㆛";s:3:"丙";s:3:"㆜";s:3:"ä¸";s:3:"ã†";s:3:"天";s:3:"㆞";s:3:"地";s:3:"㆟";s:3:"人";s:3:"㈀";s:5:"(á„€)";s:3:"ãˆ";s:5:"(á„‚)";s:3:"㈂";s:5:"(ᄃ)";s:3:"㈃";s:5:"(á„…)";s:3:"㈄";s:5:"(ᄆ)";s:3:"㈅";s:5:"(ᄇ)";s:3:"㈆";s:5:"(ᄉ)";s:3:"㈇";s:5:"(á„‹)";s:3:"㈈";s:5:"(á„Œ)";s:3:"㈉";s:5:"(á„Ž)";s:3:"㈊";s:5:"(á„)";s:3:"㈋";s:5:"(á„)";s:3:"㈌";s:5:"(á„‘)";s:3:"ãˆ";s:5:"(á„’)";s:3:"㈎";s:8:"(가)";s:3:"ãˆ";s:8:"(á„‚á…¡)";s:3:"ãˆ";s:8:"(다)";s:3:"㈑";s:8:"(á„…á…¡)";s:3:"㈒";s:8:"(마)";s:3:"㈓";s:8:"(바)";s:3:"㈔";s:8:"(사)";s:3:"㈕";s:8:"(á„‹á…¡)";s:3:"㈖";s:8:"(자)";s:3:"㈗";s:8:"(á„Žá…¡)";s:3:"㈘";s:8:"(á„á…¡)";s:3:"㈙";s:8:"(á„á…¡)";s:3:"㈚";s:8:"(á„‘á…¡)";s:3:"㈛";s:8:"(á„’á…¡)";s:3:"㈜";s:8:"(주)";s:3:"ãˆ";s:17:"(오전)";s:3:"㈞";s:14:"(á„‹á…©á„’á…®)";s:3:"㈠";s:5:"(一)";s:3:"㈡";s:5:"(二)";s:3:"㈢";s:5:"(三)";s:3:"㈣";s:5:"(å››)";s:3:"㈤";s:5:"(五)";s:3:"㈥";s:5:"(å…­)";s:3:"㈦";s:5:"(七)";s:3:"㈧";s:5:"(å…«)";s:3:"㈨";s:5:"(ä¹)";s:3:"㈩";s:5:"(å)";s:3:"㈪";s:5:"(月)";s:3:"㈫";s:5:"(ç«)";s:3:"㈬";s:5:"(æ°´)";s:3:"㈭";s:5:"(木)";s:3:"㈮";s:5:"(金)";s:3:"㈯";s:5:"(土)";s:3:"㈰";s:5:"(æ—¥)";s:3:"㈱";s:5:"(æ ª)";s:3:"㈲";s:5:"(有)";s:3:"㈳";s:5:"(社)";s:3:"㈴";s:5:"(å)";s:3:"㈵";s:5:"(特)";s:3:"㈶";s:5:"(財)";s:3:"㈷";s:5:"(ç¥)";s:3:"㈸";s:5:"(労)";s:3:"㈹";s:5:"(代)";s:3:"㈺";s:5:"(呼)";s:3:"㈻";s:5:"(å­¦)";s:3:"㈼";s:5:"(監)";s:3:"㈽";s:5:"(ä¼)";s:3:"㈾";s:5:"(資)";s:3:"㈿";s:5:"(å”)";s:3:"㉀";s:5:"(祭)";s:3:"ã‰";s:5:"(休)";s:3:"㉂";s:5:"(自)";s:3:"㉃";s:5:"(至)";s:3:"ã‰";s:3:"PTE";s:3:"㉑";s:2:"21";s:3:"㉒";s:2:"22";s:3:"㉓";s:2:"23";s:3:"㉔";s:2:"24";s:3:"㉕";s:2:"25";s:3:"㉖";s:2:"26";s:3:"㉗";s:2:"27";s:3:"㉘";s:2:"28";s:3:"㉙";s:2:"29";s:3:"㉚";s:2:"30";s:3:"㉛";s:2:"31";s:3:"㉜";s:2:"32";s:3:"ã‰";s:2:"33";s:3:"㉞";s:2:"34";s:3:"㉟";s:2:"35";s:3:"㉠";s:3:"á„€";s:3:"㉡";s:3:"á„‚";s:3:"㉢";s:3:"ᄃ";s:3:"㉣";s:3:"á„…";s:3:"㉤";s:3:"ᄆ";s:3:"㉥";s:3:"ᄇ";s:3:"㉦";s:3:"ᄉ";s:3:"㉧";s:3:"á„‹";s:3:"㉨";s:3:"á„Œ";s:3:"㉩";s:3:"á„Ž";s:3:"㉪";s:3:"á„";s:3:"㉫";s:3:"á„";s:3:"㉬";s:3:"á„‘";s:3:"㉭";s:3:"á„’";s:3:"㉮";s:6:"가";s:3:"㉯";s:6:"á„‚á…¡";s:3:"㉰";s:6:"다";s:3:"㉱";s:6:"á„…á…¡";s:3:"㉲";s:6:"마";s:3:"㉳";s:6:"바";s:3:"㉴";s:6:"사";s:3:"㉵";s:6:"á„‹á…¡";s:3:"㉶";s:6:"자";s:3:"㉷";s:6:"á„Žá…¡";s:3:"㉸";s:6:"á„á…¡";s:3:"㉹";s:6:"á„á…¡";s:3:"㉺";s:6:"á„‘á…¡";s:3:"㉻";s:6:"á„’á…¡";s:3:"㉼";s:15:"참고";s:3:"㉽";s:12:"주의";s:3:"㉾";s:6:"á„‹á…®";s:3:"㊀";s:3:"一";s:3:"ãŠ";s:3:"二";s:3:"㊂";s:3:"三";s:3:"㊃";s:3:"å››";s:3:"㊄";s:3:"五";s:3:"㊅";s:3:"å…­";s:3:"㊆";s:3:"七";s:3:"㊇";s:3:"å…«";s:3:"㊈";s:3:"ä¹";s:3:"㊉";s:3:"å";s:3:"㊊";s:3:"月";s:3:"㊋";s:3:"ç«";s:3:"㊌";s:3:"æ°´";s:3:"ãŠ";s:3:"木";s:3:"㊎";s:3:"金";s:3:"ãŠ";s:3:"土";s:3:"ãŠ";s:3:"æ—¥";s:3:"㊑";s:3:"æ ª";s:3:"㊒";s:3:"有";s:3:"㊓";s:3:"社";s:3:"㊔";s:3:"å";s:3:"㊕";s:3:"特";s:3:"㊖";s:3:"財";s:3:"㊗";s:3:"ç¥";s:3:"㊘";s:3:"労";s:3:"㊙";s:3:"秘";s:3:"㊚";s:3:"ç”·";s:3:"㊛";s:3:"女";s:3:"㊜";s:3:"é©";s:3:"ãŠ";s:3:"優";s:3:"㊞";s:3:"å°";s:3:"㊟";s:3:"注";s:3:"㊠";s:3:"é …";s:3:"㊡";s:3:"休";s:3:"㊢";s:3:"写";s:3:"㊣";s:3:"æ­£";s:3:"㊤";s:3:"上";s:3:"㊥";s:3:"中";s:3:"㊦";s:3:"下";s:3:"㊧";s:3:"å·¦";s:3:"㊨";s:3:"å³";s:3:"㊩";s:3:"医";s:3:"㊪";s:3:"å®—";s:3:"㊫";s:3:"å­¦";s:3:"㊬";s:3:"監";s:3:"㊭";s:3:"ä¼";s:3:"㊮";s:3:"資";s:3:"㊯";s:3:"å”";s:3:"㊰";s:3:"夜";s:3:"㊱";s:2:"36";s:3:"㊲";s:2:"37";s:3:"㊳";s:2:"38";s:3:"㊴";s:2:"39";s:3:"㊵";s:2:"40";s:3:"㊶";s:2:"41";s:3:"㊷";s:2:"42";s:3:"㊸";s:2:"43";s:3:"㊹";s:2:"44";s:3:"㊺";s:2:"45";s:3:"㊻";s:2:"46";s:3:"㊼";s:2:"47";s:3:"㊽";s:2:"48";s:3:"㊾";s:2:"49";s:3:"㊿";s:2:"50";s:3:"ã‹€";s:4:"1月";s:3:"ã‹";s:4:"2月";s:3:"ã‹‚";s:4:"3月";s:3:"㋃";s:4:"4月";s:3:"ã‹„";s:4:"5月";s:3:"ã‹…";s:4:"6月";s:3:"㋆";s:4:"7月";s:3:"㋇";s:4:"8月";s:3:"㋈";s:4:"9月";s:3:"㋉";s:5:"10月";s:3:"ã‹Š";s:5:"11月";s:3:"ã‹‹";s:5:"12月";s:3:"ã‹Œ";s:2:"Hg";s:3:"ã‹";s:3:"erg";s:3:"ã‹Ž";s:2:"eV";s:3:"ã‹";s:3:"LTD";s:3:"ã‹";s:3:"ã‚¢";s:3:"ã‹‘";s:3:"イ";s:3:"ã‹’";s:3:"ウ";s:3:"ã‹“";s:3:"エ";s:3:"ã‹”";s:3:"オ";s:3:"ã‹•";s:3:"ã‚«";s:3:"ã‹–";s:3:"ã‚­";s:3:"ã‹—";s:3:"ク";s:3:"㋘";s:3:"ケ";s:3:"ã‹™";s:3:"コ";s:3:"ã‹š";s:3:"サ";s:3:"ã‹›";s:3:"ã‚·";s:3:"ã‹œ";s:3:"ス";s:3:"ã‹";s:3:"ã‚»";s:3:"ã‹ž";s:3:"ソ";s:3:"ã‹Ÿ";s:3:"ã‚¿";s:3:"ã‹ ";s:3:"ãƒ";s:3:"ã‹¡";s:3:"ツ";s:3:"ã‹¢";s:3:"テ";s:3:"ã‹£";s:3:"ト";s:3:"㋤";s:3:"ナ";s:3:"ã‹¥";s:3:"ニ";s:3:"㋦";s:3:"ヌ";s:3:"㋧";s:3:"ãƒ";s:3:"㋨";s:3:"ノ";s:3:"ã‹©";s:3:"ãƒ";s:3:"㋪";s:3:"ヒ";s:3:"ã‹«";s:3:"フ";s:3:"㋬";s:3:"ヘ";s:3:"ã‹­";s:3:"ホ";s:3:"ã‹®";s:3:"マ";s:3:"㋯";s:3:"ミ";s:3:"ã‹°";s:3:"ム";s:3:"㋱";s:3:"メ";s:3:"㋲";s:3:"モ";s:3:"㋳";s:3:"ヤ";s:3:"ã‹´";s:3:"ユ";s:3:"㋵";s:3:"ヨ";s:3:"㋶";s:3:"ラ";s:3:"ã‹·";s:3:"リ";s:3:"㋸";s:3:"ル";s:3:"㋹";s:3:"レ";s:3:"㋺";s:3:"ロ";s:3:"ã‹»";s:3:"ワ";s:3:"㋼";s:3:"ヰ";s:3:"㋽";s:3:"ヱ";s:3:"㋾";s:3:"ヲ";s:3:"㌀";s:15:"ã‚¢ãƒã‚šãƒ¼ãƒˆ";s:3:"ãŒ";s:12:"アルファ";s:3:"㌂";s:15:"アンペア";s:3:"㌃";s:9:"アール";s:3:"㌄";s:15:"イニング";s:3:"㌅";s:9:"インãƒ";s:3:"㌆";s:9:"ウォン";s:3:"㌇";s:18:"エスクード";s:3:"㌈";s:12:"エーカー";s:3:"㌉";s:9:"オンス";s:3:"㌊";s:9:"オーム";s:3:"㌋";s:9:"カイリ";s:3:"㌌";s:12:"カラット";s:3:"ãŒ";s:12:"カロリー";s:3:"㌎";s:12:"ガロン";s:3:"ãŒ";s:12:"ガンマ";s:3:"ãŒ";s:12:"ギガ";s:3:"㌑";s:12:"ギニー";s:3:"㌒";s:12:"キュリー";s:3:"㌓";s:18:"ギルダー";s:3:"㌔";s:6:"キロ";s:3:"㌕";s:18:"キログラム";s:3:"㌖";s:18:"キロメートル";s:3:"㌗";s:15:"キロワット";s:3:"㌘";s:12:"グラム";s:3:"㌙";s:18:"グラムトン";s:3:"㌚";s:18:"クルゼイロ";s:3:"㌛";s:12:"クローãƒ";s:3:"㌜";s:9:"ケース";s:3:"ãŒ";s:9:"コルナ";s:3:"㌞";s:12:"コーポ";s:3:"㌟";s:12:"サイクル";s:3:"㌠";s:15:"サンãƒãƒ¼ãƒ ";s:3:"㌡";s:15:"シリング";s:3:"㌢";s:9:"センãƒ";s:3:"㌣";s:9:"セント";s:3:"㌤";s:12:"ダース";s:3:"㌥";s:9:"デシ";s:3:"㌦";s:9:"ドル";s:3:"㌧";s:6:"トン";s:3:"㌨";s:6:"ナノ";s:3:"㌩";s:9:"ノット";s:3:"㌪";s:9:"ãƒã‚¤ãƒ„";s:3:"㌫";s:18:"ãƒã‚šãƒ¼ã‚»ãƒ³ãƒˆ";s:3:"㌬";s:12:"ãƒã‚šãƒ¼ãƒ„";s:3:"㌭";s:15:"ãƒã‚™ãƒ¼ãƒ¬ãƒ«";s:3:"㌮";s:18:"ピアストル";s:3:"㌯";s:12:"ピクル";s:3:"㌰";s:9:"ピコ";s:3:"㌱";s:9:"ビル";s:3:"㌲";s:18:"ファラッド";s:3:"㌳";s:12:"フィート";s:3:"㌴";s:18:"ブッシェル";s:3:"㌵";s:9:"フラン";s:3:"㌶";s:15:"ヘクタール";s:3:"㌷";s:9:"ペソ";s:3:"㌸";s:12:"ペニヒ";s:3:"㌹";s:9:"ヘルツ";s:3:"㌺";s:12:"ペンス";s:3:"㌻";s:15:"ページ";s:3:"㌼";s:12:"ベータ";s:3:"㌽";s:15:"ポイント";s:3:"㌾";s:12:"ボルト";s:3:"㌿";s:6:"ホン";s:3:"ã€";s:15:"ポンド";s:3:"ã";s:9:"ホール";s:3:"ã‚";s:9:"ホーン";s:3:"ãƒ";s:12:"マイクロ";s:3:"ã„";s:9:"マイル";s:3:"ã…";s:9:"マッãƒ";s:3:"ã†";s:9:"マルク";s:3:"ã‡";s:15:"マンション";s:3:"ãˆ";s:12:"ミクロン";s:3:"ã‰";s:6:"ミリ";s:3:"ãŠ";s:18:"ミリãƒã‚™ãƒ¼ãƒ«";s:3:"ã‹";s:9:"メガ";s:3:"ãŒ";s:15:"メガトン";s:3:"ã";s:12:"メートル";s:3:"ãŽ";s:12:"ヤード";s:3:"ã";s:9:"ヤール";s:3:"ã";s:9:"ユアン";s:3:"ã‘";s:12:"リットル";s:3:"ã’";s:6:"リラ";s:3:"ã“";s:12:"ルピー";s:3:"ã”";s:15:"ルーブル";s:3:"ã•";s:6:"レム";s:3:"ã–";s:18:"レントゲン";s:3:"ã—";s:9:"ワット";s:3:"ã˜";s:4:"0点";s:3:"ã™";s:4:"1点";s:3:"ãš";s:4:"2点";s:3:"ã›";s:4:"3点";s:3:"ãœ";s:4:"4点";s:3:"ã";s:4:"5点";s:3:"ãž";s:4:"6点";s:3:"ãŸ";s:4:"7点";s:3:"ã ";s:4:"8点";s:3:"ã¡";s:4:"9点";s:3:"ã¢";s:5:"10点";s:3:"ã£";s:5:"11点";s:3:"ã¤";s:5:"12点";s:3:"ã¥";s:5:"13点";s:3:"ã¦";s:5:"14点";s:3:"ã§";s:5:"15点";s:3:"ã¨";s:5:"16点";s:3:"ã©";s:5:"17点";s:3:"ãª";s:5:"18点";s:3:"ã«";s:5:"19点";s:3:"ã¬";s:5:"20点";s:3:"ã­";s:5:"21点";s:3:"ã®";s:5:"22点";s:3:"ã¯";s:5:"23点";s:3:"ã°";s:5:"24点";s:3:"ã±";s:3:"hPa";s:3:"ã²";s:2:"da";s:3:"ã³";s:2:"AU";s:3:"ã´";s:3:"bar";s:3:"ãµ";s:2:"oV";s:3:"ã¶";s:2:"pc";s:3:"ã·";s:2:"dm";s:3:"ã¸";s:3:"dm2";s:3:"ã¹";s:3:"dm3";s:3:"ãº";s:2:"IU";s:3:"ã»";s:6:"å¹³æˆ";s:3:"ã¼";s:6:"昭和";s:3:"ã½";s:6:"大正";s:3:"ã¾";s:6:"明治";s:3:"ã¿";s:12:"æ ªå¼ä¼šç¤¾";s:3:"㎀";s:2:"pA";s:3:"ãŽ";s:2:"nA";s:3:"㎂";s:3:"μA";s:3:"㎃";s:2:"mA";s:3:"㎄";s:2:"kA";s:3:"㎅";s:2:"KB";s:3:"㎆";s:2:"MB";s:3:"㎇";s:2:"GB";s:3:"㎈";s:3:"cal";s:3:"㎉";s:4:"kcal";s:3:"㎊";s:2:"pF";s:3:"㎋";s:2:"nF";s:3:"㎌";s:3:"μF";s:3:"ãŽ";s:3:"μg";s:3:"㎎";s:2:"mg";s:3:"ãŽ";s:2:"kg";s:3:"ãŽ";s:2:"Hz";s:3:"㎑";s:3:"kHz";s:3:"㎒";s:3:"MHz";s:3:"㎓";s:3:"GHz";s:3:"㎔";s:3:"THz";s:3:"㎕";s:3:"μl";s:3:"㎖";s:2:"ml";s:3:"㎗";s:2:"dl";s:3:"㎘";s:2:"kl";s:3:"㎙";s:2:"fm";s:3:"㎚";s:2:"nm";s:3:"㎛";s:3:"μm";s:3:"㎜";s:2:"mm";s:3:"ãŽ";s:2:"cm";s:3:"㎞";s:2:"km";s:3:"㎟";s:3:"mm2";s:3:"㎠";s:3:"cm2";s:3:"㎡";s:2:"m2";s:3:"㎢";s:3:"km2";s:3:"㎣";s:3:"mm3";s:3:"㎤";s:3:"cm3";s:3:"㎥";s:2:"m3";s:3:"㎦";s:3:"km3";s:3:"㎧";s:5:"m∕s";s:3:"㎨";s:6:"m∕s2";s:3:"㎩";s:2:"Pa";s:3:"㎪";s:3:"kPa";s:3:"㎫";s:3:"MPa";s:3:"㎬";s:3:"GPa";s:3:"㎭";s:3:"rad";s:3:"㎮";s:7:"rad∕s";s:3:"㎯";s:8:"rad∕s2";s:3:"㎰";s:2:"ps";s:3:"㎱";s:2:"ns";s:3:"㎲";s:3:"μs";s:3:"㎳";s:2:"ms";s:3:"㎴";s:2:"pV";s:3:"㎵";s:2:"nV";s:3:"㎶";s:3:"μV";s:3:"㎷";s:2:"mV";s:3:"㎸";s:2:"kV";s:3:"㎹";s:2:"MV";s:3:"㎺";s:2:"pW";s:3:"㎻";s:2:"nW";s:3:"㎼";s:3:"μW";s:3:"㎽";s:2:"mW";s:3:"㎾";s:2:"kW";s:3:"㎿";s:2:"MW";s:3:"ã€";s:3:"kΩ";s:3:"ã";s:3:"MΩ";s:3:"ã‚";s:4:"a.m.";s:3:"ãƒ";s:2:"Bq";s:3:"ã„";s:2:"cc";s:3:"ã…";s:2:"cd";s:3:"ã†";s:6:"C∕kg";s:3:"ã‡";s:3:"Co.";s:3:"ãˆ";s:2:"dB";s:3:"ã‰";s:2:"Gy";s:3:"ãŠ";s:2:"ha";s:3:"ã‹";s:2:"HP";s:3:"ãŒ";s:2:"in";s:3:"ã";s:2:"KK";s:3:"ãŽ";s:2:"KM";s:3:"ã";s:2:"kt";s:3:"ã";s:2:"lm";s:3:"ã‘";s:2:"ln";s:3:"ã’";s:3:"log";s:3:"ã“";s:2:"lx";s:3:"ã”";s:2:"mb";s:3:"ã•";s:3:"mil";s:3:"ã–";s:3:"mol";s:3:"ã—";s:2:"PH";s:3:"ã˜";s:4:"p.m.";s:3:"ã™";s:3:"PPM";s:3:"ãš";s:2:"PR";s:3:"ã›";s:2:"sr";s:3:"ãœ";s:2:"Sv";s:3:"ã";s:2:"Wb";s:3:"ãž";s:5:"V∕m";s:3:"ãŸ";s:5:"A∕m";s:3:"ã ";s:4:"1æ—¥";s:3:"ã¡";s:4:"2æ—¥";s:3:"ã¢";s:4:"3æ—¥";s:3:"ã£";s:4:"4æ—¥";s:3:"ã¤";s:4:"5æ—¥";s:3:"ã¥";s:4:"6æ—¥";s:3:"ã¦";s:4:"7æ—¥";s:3:"ã§";s:4:"8æ—¥";s:3:"ã¨";s:4:"9æ—¥";s:3:"ã©";s:5:"10æ—¥";s:3:"ãª";s:5:"11æ—¥";s:3:"ã«";s:5:"12æ—¥";s:3:"ã¬";s:5:"13æ—¥";s:3:"ã­";s:5:"14æ—¥";s:3:"ã®";s:5:"15æ—¥";s:3:"ã¯";s:5:"16æ—¥";s:3:"ã°";s:5:"17æ—¥";s:3:"ã±";s:5:"18æ—¥";s:3:"ã²";s:5:"19æ—¥";s:3:"ã³";s:5:"20æ—¥";s:3:"ã´";s:5:"21æ—¥";s:3:"ãµ";s:5:"22æ—¥";s:3:"ã¶";s:5:"23æ—¥";s:3:"ã·";s:5:"24æ—¥";s:3:"ã¸";s:5:"25æ—¥";s:3:"ã¹";s:5:"26æ—¥";s:3:"ãº";s:5:"27æ—¥";s:3:"ã»";s:5:"28æ—¥";s:3:"ã¼";s:5:"29æ—¥";s:3:"ã½";s:5:"30æ—¥";s:3:"ã¾";s:5:"31æ—¥";s:3:"ã¿";s:3:"gal";s:3:"ê°";s:3:"ê¯";s:3:"豈";s:3:"豈";s:3:"ï¤";s:3:"æ›´";s:3:"車";s:3:"車";s:3:"賈";s:3:"賈";s:3:"滑";s:3:"滑";s:3:"串";s:3:"串";s:3:"句";s:3:"å¥";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"契";s:3:"契";s:3:"金";s:3:"金";s:3:"喇";s:3:"å–‡";s:3:"奈";s:3:"奈";s:3:"ï¤";s:3:"懶";s:3:"癩";s:3:"癩";s:3:"ï¤";s:3:"ç¾…";s:3:"ï¤";s:3:"蘿";s:3:"螺";s:3:"螺";s:3:"裸";s:3:"裸";s:3:"邏";s:3:"é‚";s:3:"樂";s:3:"樂";s:3:"洛";s:3:"æ´›";s:3:"烙";s:3:"烙";s:3:"珞";s:3:"çž";s:3:"落";s:3:"è½";s:3:"酪";s:3:"é…ª";s:3:"駱";s:3:"駱";s:3:"亂";s:3:"亂";s:3:"卵";s:3:"åµ";s:3:"ï¤";s:3:"欄";s:3:"爛";s:3:"爛";s:3:"蘭";s:3:"蘭";s:3:"鸞";s:3:"鸞";s:3:"嵐";s:3:"åµ";s:3:"濫";s:3:"æ¿«";s:3:"藍";s:3:"è—";s:3:"襤";s:3:"襤";s:3:"拉";s:3:"拉";s:3:"臘";s:3:"臘";s:3:"蠟";s:3:"è Ÿ";s:3:"廊";s:3:"廊";s:3:"朗";s:3:"朗";s:3:"浪";s:3:"浪";s:3:"狼";s:3:"狼";s:3:"郎";s:3:"郎";s:3:"來";s:3:"來";s:3:"冷";s:3:"冷";s:3:"勞";s:3:"å‹ž";s:3:"擄";s:3:"æ“„";s:3:"櫓";s:3:"æ«“";s:3:"爐";s:3:"çˆ";s:3:"盧";s:3:"盧";s:3:"老";s:3:"è€";s:3:"蘆";s:3:"蘆";s:3:"虜";s:3:"虜";s:3:"路";s:3:"è·¯";s:3:"露";s:3:"露";s:3:"魯";s:3:"é­¯";s:3:"鷺";s:3:"é·º";s:3:"碌";s:3:"碌";s:3:"祿";s:3:"祿";s:3:"綠";s:3:"綠";s:3:"菉";s:3:"è‰";s:3:"錄";s:3:"錄";s:3:"鹿";s:3:"鹿";s:3:"ï¥";s:3:"è«–";s:3:"壟";s:3:"壟";s:3:"弄";s:3:"弄";s:3:"籠";s:3:"ç± ";s:3:"聾";s:3:"è¾";s:3:"牢";s:3:"牢";s:3:"磊";s:3:"磊";s:3:"賂";s:3:"賂";s:3:"雷";s:3:"é›·";s:3:"壘";s:3:"壘";s:3:"屢";s:3:"å±¢";s:3:"樓";s:3:"樓";s:3:"ï¥";s:3:"æ·š";s:3:"漏";s:3:"æ¼";s:3:"ï¥";s:3:"ç´¯";s:3:"ï¥";s:3:"縷";s:3:"陋";s:3:"陋";s:3:"勒";s:3:"å‹’";s:3:"肋";s:3:"è‚‹";s:3:"凜";s:3:"凜";s:3:"凌";s:3:"凌";s:3:"稜";s:3:"稜";s:3:"綾";s:3:"綾";s:3:"菱";s:3:"è±";s:3:"陵";s:3:"陵";s:3:"讀";s:3:"讀";s:3:"拏";s:3:"æ‹";s:3:"樂";s:3:"樂";s:3:"ï¥";s:3:"諾";s:3:"丹";s:3:"丹";s:3:"寧";s:3:"寧";s:3:"怒";s:3:"怒";s:3:"率";s:3:"率";s:3:"異";s:3:"ç•°";s:3:"北";s:3:"北";s:3:"磻";s:3:"磻";s:3:"便";s:3:"便";s:3:"復";s:3:"復";s:3:"不";s:3:"ä¸";s:3:"泌";s:3:"泌";s:3:"數";s:3:"數";s:3:"索";s:3:"ç´¢";s:3:"參";s:3:"åƒ";s:3:"塞";s:3:"å¡ž";s:3:"省";s:3:"çœ";s:3:"葉";s:3:"葉";s:3:"說";s:3:"說";s:3:"殺";s:3:"殺";s:3:"辰";s:3:"è¾°";s:3:"沈";s:3:"沈";s:3:"拾";s:3:"拾";s:3:"若";s:3:"è‹¥";s:3:"掠";s:3:"掠";s:3:"略";s:3:"ç•¥";s:3:"亮";s:3:"亮";s:3:"兩";s:3:"å…©";s:3:"凉";s:3:"凉";s:3:"梁";s:3:"æ¢";s:3:"糧";s:3:"糧";s:3:"良";s:3:"良";s:3:"諒";s:3:"è«’";s:3:"量";s:3:"é‡";s:3:"勵";s:3:"勵";s:3:"呂";s:3:"å‘‚";s:3:"ï¦";s:3:"女";s:3:"廬";s:3:"廬";s:3:"旅";s:3:"æ—…";s:3:"濾";s:3:"濾";s:3:"礪";s:3:"礪";s:3:"閭";s:3:"é–­";s:3:"驪";s:3:"驪";s:3:"麗";s:3:"麗";s:3:"黎";s:3:"黎";s:3:"力";s:3:"力";s:3:"曆";s:3:"曆";s:3:"歷";s:3:"æ­·";s:3:"ï¦";s:3:"è½¢";s:3:"年";s:3:"å¹´";s:3:"ï¦";s:3:"æ†";s:3:"ï¦";s:3:"戀";s:3:"撚";s:3:"æ’š";s:3:"漣";s:3:"æ¼£";s:3:"煉";s:3:"ç…‰";s:3:"璉";s:3:"ç’‰";s:3:"秊";s:3:"秊";s:3:"練";s:3:"ç·´";s:3:"聯";s:3:"è¯";s:3:"輦";s:3:"輦";s:3:"蓮";s:3:"è“®";s:3:"連";s:3:"連";s:3:"鍊";s:3:"éŠ";s:3:"列";s:3:"列";s:3:"ï¦";s:3:"劣";s:3:"咽";s:3:"å’½";s:3:"烈";s:3:"烈";s:3:"裂";s:3:"裂";s:3:"說";s:3:"說";s:3:"廉";s:3:"廉";s:3:"念";s:3:"念";s:3:"捻";s:3:"æ»";s:3:"殮";s:3:"æ®®";s:3:"簾";s:3:"ç°¾";s:3:"獵";s:3:"çµ";s:3:"令";s:3:"令";s:3:"囹";s:3:"囹";s:3:"寧";s:3:"寧";s:3:"嶺";s:3:"嶺";s:3:"怜";s:3:"怜";s:3:"玲";s:3:"玲";s:3:"瑩";s:3:"ç‘©";s:3:"羚";s:3:"羚";s:3:"聆";s:3:"è†";s:3:"鈴";s:3:"鈴";s:3:"零";s:3:"零";s:3:"靈";s:3:"éˆ";s:3:"領";s:3:"é ˜";s:3:"例";s:3:"例";s:3:"禮";s:3:"禮";s:3:"醴";s:3:"醴";s:3:"隸";s:3:"隸";s:3:"惡";s:3:"惡";s:3:"了";s:3:"了";s:3:"僚";s:3:"僚";s:3:"寮";s:3:"寮";s:3:"尿";s:3:"å°¿";s:3:"料";s:3:"æ–™";s:3:"樂";s:3:"樂";s:3:"燎";s:3:"燎";s:3:"ï§";s:3:"療";s:3:"蓼";s:3:"蓼";s:3:"遼";s:3:"é¼";s:3:"龍";s:3:"é¾";s:3:"暈";s:3:"暈";s:3:"阮";s:3:"阮";s:3:"劉";s:3:"劉";s:3:"杻";s:3:"æ»";s:3:"柳";s:3:"柳";s:3:"流";s:3:"æµ";s:3:"溜";s:3:"溜";s:3:"琉";s:3:"ç‰";s:3:"ï§";s:3:"ç•™";s:3:"硫";s:3:"ç¡«";s:3:"ï§";s:3:"ç´";s:3:"ï§";s:3:"é¡ž";s:3:"六";s:3:"å…­";s:3:"戮";s:3:"戮";s:3:"陸";s:3:"陸";s:3:"倫";s:3:"倫";s:3:"崙";s:3:"å´™";s:3:"淪";s:3:"æ·ª";s:3:"輪";s:3:"輪";s:3:"律";s:3:"律";s:3:"慄";s:3:"æ…„";s:3:"栗";s:3:"æ —";s:3:"率";s:3:"率";s:3:"隆";s:3:"隆";s:3:"ï§";s:3:"利";s:3:"吏";s:3:"å";s:3:"履";s:3:"å±¥";s:3:"易";s:3:"易";s:3:"李";s:3:"æŽ";s:3:"梨";s:3:"梨";s:3:"泥";s:3:"æ³¥";s:3:"理";s:3:"ç†";s:3:"痢";s:3:"ç—¢";s:3:"罹";s:3:"ç½¹";s:3:"裏";s:3:"è£";s:3:"裡";s:3:"裡";s:3:"里";s:3:"里";s:3:"離";s:3:"離";s:3:"匿";s:3:"匿";s:3:"溺";s:3:"溺";s:3:"吝";s:3:"å";s:3:"燐";s:3:"ç‡";s:3:"璘";s:3:"ç’˜";s:3:"藺";s:3:"è—º";s:3:"隣";s:3:"隣";s:3:"鱗";s:3:"é±—";s:3:"麟";s:3:"麟";s:3:"林";s:3:"æž—";s:3:"淋";s:3:"æ·‹";s:3:"臨";s:3:"臨";s:3:"立";s:3:"ç«‹";s:3:"笠";s:3:"笠";s:3:"粒";s:3:"ç²’";s:3:"狀";s:3:"ç‹€";s:3:"炙";s:3:"ç‚™";s:3:"識";s:3:"è­˜";s:3:"什";s:3:"什";s:3:"茶";s:3:"茶";s:3:"刺";s:3:"刺";s:3:"切";s:3:"切";s:3:"ï¨";s:3:"度";s:3:"拓";s:3:"æ‹“";s:3:"糖";s:3:"ç³–";s:3:"宅";s:3:"å®…";s:3:"洞";s:3:"æ´ž";s:3:"暴";s:3:"æš´";s:3:"輻";s:3:"è¼»";s:3:"行";s:3:"è¡Œ";s:3:"降";s:3:"é™";s:3:"見";s:3:"見";s:3:"廓";s:3:"廓";s:3:"兀";s:3:"å…€";s:3:"ï¨";s:3:"å—€";s:3:"ï¨";s:3:"å¡š";s:3:"晴";s:3:"æ™´";s:3:"凞";s:3:"凞";s:3:"猪";s:3:"猪";s:3:"益";s:3:"益";s:3:"礼";s:3:"礼";s:3:"神";s:3:"神";s:3:"祥";s:3:"祥";s:3:"福";s:3:"ç¦";s:3:"靖";s:3:"é–";s:3:"ï¨";s:3:"ç²¾";s:3:"羽";s:3:"ç¾½";s:3:"蘒";s:3:"蘒";s:3:"諸";s:3:"諸";s:3:"逸";s:3:"逸";s:3:"都";s:3:"都";s:3:"飯";s:3:"飯";s:3:"飼";s:3:"飼";s:3:"館";s:3:"館";s:3:"鶴";s:3:"鶴";s:3:"侮";s:3:"ä¾®";s:3:"僧";s:3:"僧";s:3:"免";s:3:"å…";s:3:"勉";s:3:"勉";s:3:"勤";s:3:"勤";s:3:"卑";s:3:"å‘";s:3:"喝";s:3:"å–";s:3:"嘆";s:3:"嘆";s:3:"器";s:3:"器";s:3:"塀";s:3:"å¡€";s:3:"墨";s:3:"墨";s:3:"層";s:3:"層";s:3:"屮";s:3:"å±®";s:3:"悔";s:3:"æ‚”";s:3:"慨";s:3:"æ…¨";s:3:"憎";s:3:"憎";s:3:"ï©€";s:3:"懲";s:3:"ï©";s:3:"æ•";s:3:"ï©‚";s:3:"æ—¢";s:3:"暑";s:3:"æš‘";s:3:"ï©„";s:3:"梅";s:3:"ï©…";s:3:"æµ·";s:3:"渚";s:3:"渚";s:3:"漢";s:3:"æ¼¢";s:3:"煮";s:3:"ç…®";s:3:"爫";s:3:"爫";s:3:"ï©Š";s:3:"ç¢";s:3:"ï©‹";s:3:"碑";s:3:"ï©Œ";s:3:"社";s:3:"ï©";s:3:"祉";s:3:"ï©Ž";s:3:"祈";s:3:"ï©";s:3:"ç¥";s:3:"ï©";s:3:"祖";s:3:"ï©‘";s:3:"ç¥";s:3:"ï©’";s:3:"ç¦";s:3:"ï©“";s:3:"禎";s:3:"ï©”";s:3:"ç©€";s:3:"ï©•";s:3:"çª";s:3:"ï©–";s:3:"節";s:3:"ï©—";s:3:"ç·´";s:3:"縉";s:3:"縉";s:3:"ï©™";s:3:"ç¹";s:3:"ï©š";s:3:"ç½²";s:3:"ï©›";s:3:"者";s:3:"ï©œ";s:3:"臭";s:3:"ï©";s:3:"艹";s:3:"ï©ž";s:3:"艹";s:3:"ï©Ÿ";s:3:"è‘—";s:3:"ï© ";s:3:"è¤";s:3:"ï©¡";s:3:"視";s:3:"ï©¢";s:3:"è¬";s:3:"ï©£";s:3:"謹";s:3:"賓";s:3:"賓";s:3:"ï©¥";s:3:"è´ˆ";s:3:"辶";s:3:"辶";s:3:"逸";s:3:"逸";s:3:"難";s:3:"難";s:3:"ï©©";s:3:"響";s:3:"頻";s:3:"é »";s:3:"ï©°";s:3:"並";s:3:"况";s:3:"况";s:3:"全";s:3:"å…¨";s:3:"侀";s:3:"ä¾€";s:3:"ï©´";s:3:"å……";s:3:"冀";s:3:"冀";s:3:"勇";s:3:"勇";s:3:"ï©·";s:3:"勺";s:3:"喝";s:3:"å–";s:3:"啕";s:3:"å••";s:3:"喙";s:3:"å–™";s:3:"ï©»";s:3:"å—¢";s:3:"塚";s:3:"å¡š";s:3:"墳";s:3:"墳";s:3:"奄";s:3:"奄";s:3:"ï©¿";s:3:"奔";s:3:"婢";s:3:"å©¢";s:3:"ïª";s:3:"嬨";s:3:"廒";s:3:"å»’";s:3:"廙";s:3:"å»™";s:3:"彩";s:3:"彩";s:3:"徭";s:3:"å¾­";s:3:"惘";s:3:"惘";s:3:"慎";s:3:"æ…Ž";s:3:"愈";s:3:"愈";s:3:"憎";s:3:"憎";s:3:"慠";s:3:"æ… ";s:3:"懲";s:3:"懲";s:3:"戴";s:3:"戴";s:3:"ïª";s:3:"æ„";s:3:"搜";s:3:"æœ";s:3:"ïª";s:3:"æ‘’";s:3:"ïª";s:3:"æ•–";s:3:"晴";s:3:"æ™´";s:3:"朗";s:3:"朗";s:3:"望";s:3:"望";s:3:"杖";s:3:"æ–";s:3:"歹";s:3:"æ­¹";s:3:"殺";s:3:"殺";s:3:"流";s:3:"æµ";s:3:"滛";s:3:"æ»›";s:3:"滋";s:3:"滋";s:3:"漢";s:3:"æ¼¢";s:3:"瀞";s:3:"瀞";s:3:"煮";s:3:"ç…®";s:3:"ïª";s:3:"瞧";s:3:"爵";s:3:"爵";s:3:"犯";s:3:"犯";s:3:"猪";s:3:"猪";s:3:"瑱";s:3:"瑱";s:3:"甆";s:3:"甆";s:3:"画";s:3:"ç”»";s:3:"瘝";s:3:"ç˜";s:3:"瘟";s:3:"瘟";s:3:"益";s:3:"益";s:3:"盛";s:3:"ç››";s:3:"直";s:3:"ç›´";s:3:"睊";s:3:"çŠ";s:3:"着";s:3:"ç€";s:3:"磌";s:3:"磌";s:3:"窱";s:3:"窱";s:3:"節";s:3:"節";s:3:"类";s:3:"ç±»";s:3:"絛";s:3:"çµ›";s:3:"練";s:3:"ç·´";s:3:"缾";s:3:"ç¼¾";s:3:"者";s:3:"者";s:3:"荒";s:3:"è’";s:3:"華";s:3:"è¯";s:3:"蝹";s:3:"è¹";s:3:"襁";s:3:"è¥";s:3:"覆";s:3:"覆";s:3:"視";s:3:"視";s:3:"調";s:3:"調";s:3:"諸";s:3:"諸";s:3:"請";s:3:"è«‹";s:3:"謁";s:3:"è¬";s:3:"諾";s:3:"諾";s:3:"諭";s:3:"è«­";s:3:"謹";s:3:"謹";s:3:"ï«€";s:3:"變";s:3:"ï«";s:3:"è´ˆ";s:3:"ï«‚";s:3:"輸";s:3:"遲";s:3:"é²";s:3:"ï«„";s:3:"醙";s:3:"ï«…";s:3:"鉶";s:3:"陼";s:3:"陼";s:3:"難";s:3:"難";s:3:"靖";s:3:"é–";s:3:"韛";s:3:"韛";s:3:"ï«Š";s:3:"響";s:3:"ï«‹";s:3:"é ‹";s:3:"ï«Œ";s:3:"é »";s:3:"ï«";s:3:"鬒";s:3:"ï«Ž";s:3:"龜";s:3:"ï«";s:4:"𢡊";s:3:"ï«";s:4:"𢡄";s:3:"ï«‘";s:4:"ð£•";s:3:"ï«’";s:3:"ã®";s:3:"ï«“";s:3:"䀘";s:3:"ï«”";s:3:"䀹";s:3:"ï«•";s:4:"𥉉";s:3:"ï«–";s:4:"ð¥³";s:3:"ï«—";s:4:"𧻓";s:3:"齃";s:3:"齃";s:3:"ï«™";s:3:"龎";s:3:"ff";s:2:"ff";s:3:"ï¬";s:2:"fi";s:3:"fl";s:2:"fl";s:3:"ffi";s:3:"ffi";s:3:"ffl";s:3:"ffl";s:3:"ſt";s:2:"st";s:3:"st";s:2:"st";s:3:"ﬓ";s:4:"Õ´Õ¶";s:3:"ﬔ";s:4:"Õ´Õ¥";s:3:"ﬕ";s:4:"Õ´Õ«";s:3:"ﬖ";s:4:"Õ¾Õ¶";s:3:"ﬗ";s:4:"Õ´Õ­";s:3:"ï¬";s:4:"×™Ö´";s:3:"ײַ";s:4:"ײַ";s:3:"ﬠ";s:2:"×¢";s:3:"ﬡ";s:2:"×";s:3:"ﬢ";s:2:"ד";s:3:"ﬣ";s:2:"×”";s:3:"ﬤ";s:2:"×›";s:3:"ﬥ";s:2:"ל";s:3:"ﬦ";s:2:"×";s:3:"ﬧ";s:2:"ר";s:3:"ﬨ";s:2:"ת";s:3:"﬩";s:1:"+";s:3:"שׁ";s:4:"ש×";s:3:"שׂ";s:4:"שׂ";s:3:"שּׁ";s:6:"שּ×";s:3:"שּׂ";s:6:"שּׂ";s:3:"אַ";s:4:"×Ö·";s:3:"אָ";s:4:"×Ö¸";s:3:"אּ";s:4:"×Ö¼";s:3:"בּ";s:4:"בּ";s:3:"גּ";s:4:"×’Ö¼";s:3:"דּ";s:4:"דּ";s:3:"הּ";s:4:"×”Ö¼";s:3:"וּ";s:4:"וּ";s:3:"זּ";s:4:"×–Ö¼";s:3:"טּ";s:4:"טּ";s:3:"יּ";s:4:"×™Ö¼";s:3:"ךּ";s:4:"ךּ";s:3:"כּ";s:4:"×›Ö¼";s:3:"לּ";s:4:"לּ";s:3:"מּ";s:4:"מּ";s:3:"ï­€";s:4:"× Ö¼";s:3:"ï­";s:4:"סּ";s:3:"ï­ƒ";s:4:"×£Ö¼";s:3:"ï­„";s:4:"פּ";s:3:"ï­†";s:4:"צּ";s:3:"ï­‡";s:4:"קּ";s:3:"ï­ˆ";s:4:"רּ";s:3:"ï­‰";s:4:"שּ";s:3:"ï­Š";s:4:"תּ";s:3:"ï­‹";s:4:"וֹ";s:3:"ï­Œ";s:4:"בֿ";s:3:"ï­";s:4:"×›Ö¿";s:3:"ï­Ž";s:4:"פֿ";s:3:"ï­";s:4:"×ל";s:3:"ï­";s:2:"Ù±";s:3:"ï­‘";s:2:"Ù±";s:3:"ï­’";s:2:"Ù»";s:3:"ï­“";s:2:"Ù»";s:3:"ï­”";s:2:"Ù»";s:3:"ï­•";s:2:"Ù»";s:3:"ï­–";s:2:"Ù¾";s:3:"ï­—";s:2:"Ù¾";s:3:"ï­˜";s:2:"Ù¾";s:3:"ï­™";s:2:"Ù¾";s:3:"ï­š";s:2:"Ú€";s:3:"ï­›";s:2:"Ú€";s:3:"ï­œ";s:2:"Ú€";s:3:"ï­";s:2:"Ú€";s:3:"ï­ž";s:2:"Ùº";s:3:"ï­Ÿ";s:2:"Ùº";s:3:"ï­ ";s:2:"Ùº";s:3:"ï­¡";s:2:"Ùº";s:3:"ï­¢";s:2:"Ù¿";s:3:"ï­£";s:2:"Ù¿";s:3:"ï­¤";s:2:"Ù¿";s:3:"ï­¥";s:2:"Ù¿";s:3:"ï­¦";s:2:"Ù¹";s:3:"ï­§";s:2:"Ù¹";s:3:"ï­¨";s:2:"Ù¹";s:3:"ï­©";s:2:"Ù¹";s:3:"ï­ª";s:2:"Ú¤";s:3:"ï­«";s:2:"Ú¤";s:3:"ï­¬";s:2:"Ú¤";s:3:"ï­­";s:2:"Ú¤";s:3:"ï­®";s:2:"Ú¦";s:3:"ï­¯";s:2:"Ú¦";s:3:"ï­°";s:2:"Ú¦";s:3:"ï­±";s:2:"Ú¦";s:3:"ï­²";s:2:"Ú„";s:3:"ï­³";s:2:"Ú„";s:3:"ï­´";s:2:"Ú„";s:3:"ï­µ";s:2:"Ú„";s:3:"ï­¶";s:2:"Úƒ";s:3:"ï­·";s:2:"Úƒ";s:3:"ï­¸";s:2:"Úƒ";s:3:"ï­¹";s:2:"Úƒ";s:3:"ï­º";s:2:"Ú†";s:3:"ï­»";s:2:"Ú†";s:3:"ï­¼";s:2:"Ú†";s:3:"ï­½";s:2:"Ú†";s:3:"ï­¾";s:2:"Ú‡";s:3:"ï­¿";s:2:"Ú‡";s:3:"ﮀ";s:2:"Ú‡";s:3:"ï®";s:2:"Ú‡";s:3:"ﮂ";s:2:"Ú";s:3:"ﮃ";s:2:"Ú";s:3:"ﮄ";s:2:"ÚŒ";s:3:"ï®…";s:2:"ÚŒ";s:3:"ﮆ";s:2:"ÚŽ";s:3:"ﮇ";s:2:"ÚŽ";s:3:"ﮈ";s:2:"Úˆ";s:3:"ﮉ";s:2:"Úˆ";s:3:"ﮊ";s:2:"Ú˜";s:3:"ﮋ";s:2:"Ú˜";s:3:"ﮌ";s:2:"Ú‘";s:3:"ï®";s:2:"Ú‘";s:3:"ﮎ";s:2:"Ú©";s:3:"ï®";s:2:"Ú©";s:3:"ï®";s:2:"Ú©";s:3:"ﮑ";s:2:"Ú©";s:3:"ï®’";s:2:"Ú¯";s:3:"ﮓ";s:2:"Ú¯";s:3:"ï®”";s:2:"Ú¯";s:3:"ﮕ";s:2:"Ú¯";s:3:"ï®–";s:2:"Ú³";s:3:"ï®—";s:2:"Ú³";s:3:"ﮘ";s:2:"Ú³";s:3:"ï®™";s:2:"Ú³";s:3:"ﮚ";s:2:"Ú±";s:3:"ï®›";s:2:"Ú±";s:3:"ﮜ";s:2:"Ú±";s:3:"ï®";s:2:"Ú±";s:3:"ﮞ";s:2:"Úº";s:3:"ﮟ";s:2:"Úº";s:3:"ï® ";s:2:"Ú»";s:3:"ﮡ";s:2:"Ú»";s:3:"ﮢ";s:2:"Ú»";s:3:"ﮣ";s:2:"Ú»";s:3:"ﮤ";s:4:"Û•Ù”";s:3:"ﮥ";s:4:"Û•Ù”";s:3:"ﮦ";s:2:"Û";s:3:"ﮧ";s:2:"Û";s:3:"ﮨ";s:2:"Û";s:3:"ﮩ";s:2:"Û";s:3:"ﮪ";s:2:"Ú¾";s:3:"ﮫ";s:2:"Ú¾";s:3:"ﮬ";s:2:"Ú¾";s:3:"ï®­";s:2:"Ú¾";s:3:"ï®®";s:2:"Û’";s:3:"ﮯ";s:2:"Û’";s:3:"ï®°";s:4:"Û’Ù”";s:3:"ï®±";s:4:"Û’Ù”";s:3:"ﯓ";s:2:"Ú­";s:3:"ﯔ";s:2:"Ú­";s:3:"ﯕ";s:2:"Ú­";s:3:"ﯖ";s:2:"Ú­";s:3:"ﯗ";s:2:"Û‡";s:3:"ﯘ";s:2:"Û‡";s:3:"ﯙ";s:2:"Û†";s:3:"ﯚ";s:2:"Û†";s:3:"ﯛ";s:2:"Ûˆ";s:3:"ﯜ";s:2:"Ûˆ";s:3:"ï¯";s:4:"Û‡Ù´";s:3:"ﯞ";s:2:"Û‹";s:3:"ﯟ";s:2:"Û‹";s:3:"ﯠ";s:2:"Û…";s:3:"ﯡ";s:2:"Û…";s:3:"ﯢ";s:2:"Û‰";s:3:"ﯣ";s:2:"Û‰";s:3:"ﯤ";s:2:"Û";s:3:"ﯥ";s:2:"Û";s:3:"ﯦ";s:2:"Û";s:3:"ﯧ";s:2:"Û";s:3:"ﯨ";s:2:"Ù‰";s:3:"ﯩ";s:2:"Ù‰";s:3:"ﯪ";s:6:"ئا";s:3:"ﯫ";s:6:"ئا";s:3:"ﯬ";s:6:"ÙŠÙ”Û•";s:3:"ﯭ";s:6:"ÙŠÙ”Û•";s:3:"ﯮ";s:6:"ÙŠÙ”Ùˆ";s:3:"ﯯ";s:6:"ÙŠÙ”Ùˆ";s:3:"ﯰ";s:6:"ÙŠÙ”Û‡";s:3:"ﯱ";s:6:"ÙŠÙ”Û‡";s:3:"ﯲ";s:6:"ÙŠÙ”Û†";s:3:"ﯳ";s:6:"ÙŠÙ”Û†";s:3:"ﯴ";s:6:"ÙŠÙ”Ûˆ";s:3:"ﯵ";s:6:"ÙŠÙ”Ûˆ";s:3:"ﯶ";s:6:"ÙŠÙ”Û";s:3:"ﯷ";s:6:"ÙŠÙ”Û";s:3:"ﯸ";s:6:"ÙŠÙ”Û";s:3:"ﯹ";s:6:"ÙŠÙ”Ù‰";s:3:"ﯺ";s:6:"ÙŠÙ”Ù‰";s:3:"ﯻ";s:6:"ÙŠÙ”Ù‰";s:3:"ﯼ";s:2:"ÛŒ";s:3:"ﯽ";s:2:"ÛŒ";s:3:"ﯾ";s:2:"ÛŒ";s:3:"ﯿ";s:2:"ÛŒ";s:3:"ï°€";s:6:"ئج";s:3:"ï°";s:6:"ئح";s:3:"ï°‚";s:6:"ÙŠÙ”Ù…";s:3:"ï°ƒ";s:6:"ÙŠÙ”Ù‰";s:3:"ï°„";s:6:"ÙŠÙ”ÙŠ";s:3:"ï°…";s:4:"بج";s:3:"ï°†";s:4:"بح";s:3:"ï°‡";s:4:"بخ";s:3:"ï°ˆ";s:4:"بم";s:3:"ï°‰";s:4:"بى";s:3:"ï°Š";s:4:"بي";s:3:"ï°‹";s:4:"تج";s:3:"ï°Œ";s:4:"تح";s:3:"ï°";s:4:"تخ";s:3:"ï°Ž";s:4:"تم";s:3:"ï°";s:4:"تى";s:3:"ï°";s:4:"تي";s:3:"ï°‘";s:4:"ثج";s:3:"ï°’";s:4:"ثم";s:3:"ï°“";s:4:"ثى";s:3:"ï°”";s:4:"ثي";s:3:"ï°•";s:4:"جح";s:3:"ï°–";s:4:"جم";s:3:"ï°—";s:4:"حج";s:3:"ï°˜";s:4:"حم";s:3:"ï°™";s:4:"خج";s:3:"ï°š";s:4:"خح";s:3:"ï°›";s:4:"خم";s:3:"ï°œ";s:4:"سج";s:3:"ï°";s:4:"سح";s:3:"ï°ž";s:4:"سخ";s:3:"ï°Ÿ";s:4:"سم";s:3:"ï° ";s:4:"صح";s:3:"ï°¡";s:4:"صم";s:3:"ï°¢";s:4:"ضج";s:3:"ï°£";s:4:"ضح";s:3:"ï°¤";s:4:"ضخ";s:3:"ï°¥";s:4:"ضم";s:3:"ï°¦";s:4:"طح";s:3:"ï°§";s:4:"طم";s:3:"ï°¨";s:4:"ظم";s:3:"ï°©";s:4:"عج";s:3:"ï°ª";s:4:"عم";s:3:"ï°«";s:4:"غج";s:3:"ï°¬";s:4:"غم";s:3:"ï°­";s:4:"Ùج";s:3:"ï°®";s:4:"ÙØ­";s:3:"ï°¯";s:4:"ÙØ®";s:3:"ï°°";s:4:"ÙÙ…";s:3:"ï°±";s:4:"ÙÙ‰";s:3:"ï°²";s:4:"ÙÙŠ";s:3:"ï°³";s:4:"قح";s:3:"ï°´";s:4:"قم";s:3:"ï°µ";s:4:"قى";s:3:"ï°¶";s:4:"قي";s:3:"ï°·";s:4:"كا";s:3:"ï°¸";s:4:"كج";s:3:"ï°¹";s:4:"كح";s:3:"ï°º";s:4:"كخ";s:3:"ï°»";s:4:"كل";s:3:"ï°¼";s:4:"كم";s:3:"ï°½";s:4:"كى";s:3:"ï°¾";s:4:"كي";s:3:"ï°¿";s:4:"لج";s:3:"ï±€";s:4:"لح";s:3:"ï±";s:4:"لخ";s:3:"ﱂ";s:4:"لم";s:3:"ﱃ";s:4:"لى";s:3:"ﱄ";s:4:"لي";s:3:"ï±…";s:4:"مج";s:3:"ﱆ";s:4:"مح";s:3:"ﱇ";s:4:"مخ";s:3:"ﱈ";s:4:"مم";s:3:"ﱉ";s:4:"مى";s:3:"ﱊ";s:4:"مي";s:3:"ﱋ";s:4:"نج";s:3:"ﱌ";s:4:"نح";s:3:"ï±";s:4:"نخ";s:3:"ﱎ";s:4:"نم";s:3:"ï±";s:4:"نى";s:3:"ï±";s:4:"ني";s:3:"ﱑ";s:4:"هج";s:3:"ï±’";s:4:"هم";s:3:"ﱓ";s:4:"هى";s:3:"ï±”";s:4:"هي";s:3:"ﱕ";s:4:"يج";s:3:"ï±–";s:4:"يح";s:3:"ï±—";s:4:"يخ";s:3:"ﱘ";s:4:"يم";s:3:"ï±™";s:4:"يى";s:3:"ﱚ";s:4:"يي";s:3:"ï±›";s:4:"ذٰ";s:3:"ﱜ";s:4:"رٰ";s:3:"ï±";s:4:"ىٰ";s:3:"ﱞ";s:5:" ٌّ";s:3:"ﱟ";s:5:" ÙÙ‘";s:3:"ï± ";s:5:" ÙŽÙ‘";s:3:"ﱡ";s:5:" ÙÙ‘";s:3:"ï±¢";s:5:" ÙÙ‘";s:3:"ï±£";s:5:" ّٰ";s:3:"ﱤ";s:6:"ئر";s:3:"ï±¥";s:6:"ئز";s:3:"ﱦ";s:6:"ÙŠÙ”Ù…";s:3:"ﱧ";s:6:"ÙŠÙ”Ù†";s:3:"ﱨ";s:6:"ÙŠÙ”Ù‰";s:3:"ﱩ";s:6:"ÙŠÙ”ÙŠ";s:3:"ﱪ";s:4:"بر";s:3:"ﱫ";s:4:"بز";s:3:"ﱬ";s:4:"بم";s:3:"ï±­";s:4:"بن";s:3:"ï±®";s:4:"بى";s:3:"ﱯ";s:4:"بي";s:3:"ï±°";s:4:"تر";s:3:"ï±±";s:4:"تز";s:3:"ï±²";s:4:"تم";s:3:"ï±³";s:4:"تن";s:3:"ï±´";s:4:"تى";s:3:"ï±µ";s:4:"تي";s:3:"ﱶ";s:4:"ثر";s:3:"ï±·";s:4:"ثز";s:3:"ﱸ";s:4:"ثم";s:3:"ï±¹";s:4:"ثن";s:3:"ﱺ";s:4:"ثى";s:3:"ï±»";s:4:"ثي";s:3:"ï±¼";s:4:"ÙÙ‰";s:3:"ï±½";s:4:"ÙÙŠ";s:3:"ï±¾";s:4:"قى";s:3:"ﱿ";s:4:"قي";s:3:"ï²€";s:4:"كا";s:3:"ï²";s:4:"كل";s:3:"ﲂ";s:4:"كم";s:3:"ﲃ";s:4:"كى";s:3:"ﲄ";s:4:"كي";s:3:"ï²…";s:4:"لم";s:3:"ﲆ";s:4:"لى";s:3:"ﲇ";s:4:"لي";s:3:"ﲈ";s:4:"ما";s:3:"ﲉ";s:4:"مم";s:3:"ﲊ";s:4:"نر";s:3:"ﲋ";s:4:"نز";s:3:"ﲌ";s:4:"نم";s:3:"ï²";s:4:"نن";s:3:"ﲎ";s:4:"نى";s:3:"ï²";s:4:"ني";s:3:"ï²";s:4:"ىٰ";s:3:"ﲑ";s:4:"ير";s:3:"ï²’";s:4:"يز";s:3:"ﲓ";s:4:"يم";s:3:"ï²”";s:4:"ين";s:3:"ﲕ";s:4:"يى";s:3:"ï²–";s:4:"يي";s:3:"ï²—";s:6:"ئج";s:3:"ﲘ";s:6:"ئح";s:3:"ï²™";s:6:"ئخ";s:3:"ﲚ";s:6:"ÙŠÙ”Ù…";s:3:"ï²›";s:6:"ÙŠÙ”Ù‡";s:3:"ﲜ";s:4:"بج";s:3:"ï²";s:4:"بح";s:3:"ﲞ";s:4:"بخ";s:3:"ﲟ";s:4:"بم";s:3:"ï² ";s:4:"به";s:3:"ﲡ";s:4:"تج";s:3:"ï²¢";s:4:"تح";s:3:"ï²£";s:4:"تخ";s:3:"ﲤ";s:4:"تم";s:3:"ï²¥";s:4:"ته";s:3:"ﲦ";s:4:"ثم";s:3:"ﲧ";s:4:"جح";s:3:"ﲨ";s:4:"جم";s:3:"ﲩ";s:4:"حج";s:3:"ﲪ";s:4:"حم";s:3:"ﲫ";s:4:"خج";s:3:"ﲬ";s:4:"خم";s:3:"ï²­";s:4:"سج";s:3:"ï²®";s:4:"سح";s:3:"ﲯ";s:4:"سخ";s:3:"ï²°";s:4:"سم";s:3:"ï²±";s:4:"صح";s:3:"ï²²";s:4:"صخ";s:3:"ï²³";s:4:"صم";s:3:"ï²´";s:4:"ضج";s:3:"ï²µ";s:4:"ضح";s:3:"ﲶ";s:4:"ضخ";s:3:"ï²·";s:4:"ضم";s:3:"ﲸ";s:4:"طح";s:3:"ï²¹";s:4:"ظم";s:3:"ﲺ";s:4:"عج";s:3:"ï²»";s:4:"عم";s:3:"ï²¼";s:4:"غج";s:3:"ï²½";s:4:"غم";s:3:"ï²¾";s:4:"Ùج";s:3:"ﲿ";s:4:"ÙØ­";s:3:"ï³€";s:4:"ÙØ®";s:3:"ï³";s:4:"ÙÙ…";s:3:"ﳂ";s:4:"قح";s:3:"ﳃ";s:4:"قم";s:3:"ﳄ";s:4:"كج";s:3:"ï³…";s:4:"كح";s:3:"ﳆ";s:4:"كخ";s:3:"ﳇ";s:4:"كل";s:3:"ﳈ";s:4:"كم";s:3:"ﳉ";s:4:"لج";s:3:"ﳊ";s:4:"لح";s:3:"ﳋ";s:4:"لخ";s:3:"ﳌ";s:4:"لم";s:3:"ï³";s:4:"له";s:3:"ﳎ";s:4:"مج";s:3:"ï³";s:4:"مح";s:3:"ï³";s:4:"مخ";s:3:"ﳑ";s:4:"مم";s:3:"ï³’";s:4:"نج";s:3:"ﳓ";s:4:"نح";s:3:"ï³”";s:4:"نخ";s:3:"ﳕ";s:4:"نم";s:3:"ï³–";s:4:"نه";s:3:"ï³—";s:4:"هج";s:3:"ﳘ";s:4:"هم";s:3:"ï³™";s:4:"هٰ";s:3:"ﳚ";s:4:"يج";s:3:"ï³›";s:4:"يح";s:3:"ﳜ";s:4:"يخ";s:3:"ï³";s:4:"يم";s:3:"ﳞ";s:4:"يه";s:3:"ﳟ";s:6:"ÙŠÙ”Ù…";s:3:"ï³ ";s:6:"ÙŠÙ”Ù‡";s:3:"ﳡ";s:4:"بم";s:3:"ï³¢";s:4:"به";s:3:"ï³£";s:4:"تم";s:3:"ﳤ";s:4:"ته";s:3:"ï³¥";s:4:"ثم";s:3:"ﳦ";s:4:"ثه";s:3:"ﳧ";s:4:"سم";s:3:"ﳨ";s:4:"سه";s:3:"ﳩ";s:4:"شم";s:3:"ﳪ";s:4:"شه";s:3:"ﳫ";s:4:"كل";s:3:"ﳬ";s:4:"كم";s:3:"ï³­";s:4:"لم";s:3:"ï³®";s:4:"نم";s:3:"ﳯ";s:4:"نه";s:3:"ï³°";s:4:"يم";s:3:"ï³±";s:4:"يه";s:3:"ï³²";s:6:"Ù€ÙŽÙ‘";s:3:"ï³³";s:6:"Ù€ÙÙ‘";s:3:"ï³´";s:6:"Ù€ÙÙ‘";s:3:"ï³µ";s:4:"طى";s:3:"ﳶ";s:4:"طي";s:3:"ï³·";s:4:"عى";s:3:"ﳸ";s:4:"عي";s:3:"ï³¹";s:4:"غى";s:3:"ﳺ";s:4:"غي";s:3:"ï³»";s:4:"سى";s:3:"ï³¼";s:4:"سي";s:3:"ï³½";s:4:"شى";s:3:"ï³¾";s:4:"شي";s:3:"ﳿ";s:4:"حى";s:3:"ï´€";s:4:"حي";s:3:"ï´";s:4:"جى";s:3:"ï´‚";s:4:"جي";s:3:"ï´ƒ";s:4:"خى";s:3:"ï´„";s:4:"خي";s:3:"ï´…";s:4:"صى";s:3:"ï´†";s:4:"صي";s:3:"ï´‡";s:4:"ضى";s:3:"ï´ˆ";s:4:"ضي";s:3:"ï´‰";s:4:"شج";s:3:"ï´Š";s:4:"شح";s:3:"ï´‹";s:4:"شخ";s:3:"ï´Œ";s:4:"شم";s:3:"ï´";s:4:"شر";s:3:"ï´Ž";s:4:"سر";s:3:"ï´";s:4:"صر";s:3:"ï´";s:4:"ضر";s:3:"ï´‘";s:4:"طى";s:3:"ï´’";s:4:"طي";s:3:"ï´“";s:4:"عى";s:3:"ï´”";s:4:"عي";s:3:"ï´•";s:4:"غى";s:3:"ï´–";s:4:"غي";s:3:"ï´—";s:4:"سى";s:3:"ï´˜";s:4:"سي";s:3:"ï´™";s:4:"شى";s:3:"ï´š";s:4:"شي";s:3:"ï´›";s:4:"حى";s:3:"ï´œ";s:4:"حي";s:3:"ï´";s:4:"جى";s:3:"ï´ž";s:4:"جي";s:3:"ï´Ÿ";s:4:"خى";s:3:"ï´ ";s:4:"خي";s:3:"ï´¡";s:4:"صى";s:3:"ï´¢";s:4:"صي";s:3:"ï´£";s:4:"ضى";s:3:"ï´¤";s:4:"ضي";s:3:"ï´¥";s:4:"شج";s:3:"ï´¦";s:4:"شح";s:3:"ï´§";s:4:"شخ";s:3:"ï´¨";s:4:"شم";s:3:"ï´©";s:4:"شر";s:3:"ï´ª";s:4:"سر";s:3:"ï´«";s:4:"صر";s:3:"ï´¬";s:4:"ضر";s:3:"ï´­";s:4:"شج";s:3:"ï´®";s:4:"شح";s:3:"ï´¯";s:4:"شخ";s:3:"ï´°";s:4:"شم";s:3:"ï´±";s:4:"سه";s:3:"ï´²";s:4:"شه";s:3:"ï´³";s:4:"طم";s:3:"ï´´";s:4:"سج";s:3:"ï´µ";s:4:"سح";s:3:"ï´¶";s:4:"سخ";s:3:"ï´·";s:4:"شج";s:3:"ï´¸";s:4:"شح";s:3:"ï´¹";s:4:"شخ";s:3:"ï´º";s:4:"طم";s:3:"ï´»";s:4:"ظم";s:3:"ï´¼";s:4:"اً";s:3:"ï´½";s:4:"اً";s:3:"ïµ";s:6:"تجم";s:3:"ﵑ";s:6:"تحج";s:3:"ïµ’";s:6:"تحج";s:3:"ﵓ";s:6:"تحم";s:3:"ïµ”";s:6:"تخم";s:3:"ﵕ";s:6:"تمج";s:3:"ïµ–";s:6:"تمح";s:3:"ïµ—";s:6:"تمخ";s:3:"ﵘ";s:6:"جمح";s:3:"ïµ™";s:6:"جمح";s:3:"ﵚ";s:6:"حمي";s:3:"ïµ›";s:6:"حمى";s:3:"ﵜ";s:6:"سحج";s:3:"ïµ";s:6:"سجح";s:3:"ﵞ";s:6:"سجى";s:3:"ﵟ";s:6:"سمح";s:3:"ïµ ";s:6:"سمح";s:3:"ﵡ";s:6:"سمج";s:3:"ïµ¢";s:6:"سمم";s:3:"ïµ£";s:6:"سمم";s:3:"ﵤ";s:6:"صحح";s:3:"ïµ¥";s:6:"صحح";s:3:"ﵦ";s:6:"صمم";s:3:"ﵧ";s:6:"شحم";s:3:"ﵨ";s:6:"شحم";s:3:"ﵩ";s:6:"شجي";s:3:"ﵪ";s:6:"شمخ";s:3:"ﵫ";s:6:"شمخ";s:3:"ﵬ";s:6:"شمم";s:3:"ïµ­";s:6:"شمم";s:3:"ïµ®";s:6:"ضحى";s:3:"ﵯ";s:6:"ضخم";s:3:"ïµ°";s:6:"ضخم";s:3:"ïµ±";s:6:"طمح";s:3:"ïµ²";s:6:"طمح";s:3:"ïµ³";s:6:"طمم";s:3:"ïµ´";s:6:"طمي";s:3:"ïµµ";s:6:"عجم";s:3:"ﵶ";s:6:"عمم";s:3:"ïµ·";s:6:"عمم";s:3:"ﵸ";s:6:"عمى";s:3:"ïµ¹";s:6:"غمم";s:3:"ﵺ";s:6:"غمي";s:3:"ïµ»";s:6:"غمى";s:3:"ïµ¼";s:6:"Ùخم";s:3:"ïµ½";s:6:"Ùخم";s:3:"ïµ¾";s:6:"قمح";s:3:"ﵿ";s:6:"قمم";s:3:"ﶀ";s:6:"لحم";s:3:"ï¶";s:6:"لحي";s:3:"ﶂ";s:6:"لحى";s:3:"ﶃ";s:6:"لجج";s:3:"ﶄ";s:6:"لجج";s:3:"ﶅ";s:6:"لخم";s:3:"ﶆ";s:6:"لخم";s:3:"ﶇ";s:6:"لمح";s:3:"ﶈ";s:6:"لمح";s:3:"ﶉ";s:6:"محج";s:3:"ﶊ";s:6:"محم";s:3:"ﶋ";s:6:"محي";s:3:"ﶌ";s:6:"مجح";s:3:"ï¶";s:6:"مجم";s:3:"ﶎ";s:6:"مخج";s:3:"ï¶";s:6:"مخم";s:3:"ﶒ";s:6:"مجخ";s:3:"ﶓ";s:6:"همج";s:3:"ﶔ";s:6:"همم";s:3:"ﶕ";s:6:"نحم";s:3:"ﶖ";s:6:"نحى";s:3:"ﶗ";s:6:"نجم";s:3:"ﶘ";s:6:"نجم";s:3:"ﶙ";s:6:"نجى";s:3:"ﶚ";s:6:"نمي";s:3:"ﶛ";s:6:"نمى";s:3:"ﶜ";s:6:"يمم";s:3:"ï¶";s:6:"يمم";s:3:"ﶞ";s:6:"بخي";s:3:"ﶟ";s:6:"تجي";s:3:"ﶠ";s:6:"تجى";s:3:"ﶡ";s:6:"تخي";s:3:"ﶢ";s:6:"تخى";s:3:"ﶣ";s:6:"تمي";s:3:"ﶤ";s:6:"تمى";s:3:"ﶥ";s:6:"جمي";s:3:"ﶦ";s:6:"جحى";s:3:"ﶧ";s:6:"جمى";s:3:"ﶨ";s:6:"سخى";s:3:"ﶩ";s:6:"صحي";s:3:"ﶪ";s:6:"شحي";s:3:"ﶫ";s:6:"ضحي";s:3:"ﶬ";s:6:"لجي";s:3:"ﶭ";s:6:"لمي";s:3:"ﶮ";s:6:"يحي";s:3:"ﶯ";s:6:"يجي";s:3:"ﶰ";s:6:"يمي";s:3:"ﶱ";s:6:"ممي";s:3:"ﶲ";s:6:"قمي";s:3:"ﶳ";s:6:"نحي";s:3:"ﶴ";s:6:"قمح";s:3:"ﶵ";s:6:"لحم";s:3:"ﶶ";s:6:"عمي";s:3:"ﶷ";s:6:"كمي";s:3:"ﶸ";s:6:"نجح";s:3:"ﶹ";s:6:"مخي";s:3:"ﶺ";s:6:"لجم";s:3:"ﶻ";s:6:"كمم";s:3:"ﶼ";s:6:"لجم";s:3:"ﶽ";s:6:"نجح";s:3:"ﶾ";s:6:"جحي";s:3:"ﶿ";s:6:"حجي";s:3:"ï·€";s:6:"مجي";s:3:"ï·";s:6:"Ùمي";s:3:"ï·‚";s:6:"بحي";s:3:"ï·ƒ";s:6:"كمم";s:3:"ï·„";s:6:"عجم";s:3:"ï·…";s:6:"صمم";s:3:"ï·†";s:6:"سخي";s:3:"ï·‡";s:6:"نجي";s:3:"ï·°";s:6:"صلے";s:3:"ï·±";s:6:"قلے";s:3:"ï·²";s:8:"الله";s:3:"ï·³";s:8:"اكبر";s:3:"ï·´";s:8:"محمد";s:3:"ï·µ";s:8:"صلعم";s:3:"ï·¶";s:8:"رسول";s:3:"ï··";s:8:"عليه";s:3:"ï·¸";s:8:"وسلم";s:3:"ï·¹";s:6:"صلى";s:3:"ï·º";s:33:"صلى الله عليه وسلم";s:3:"ï·»";s:15:"جل جلاله";s:3:"ï·¼";s:8:"ریال";s:3:"ï¸";s:1:",";s:3:"︑";s:3:"ã€";s:3:"︒";s:3:"。";s:3:"︓";s:1:":";s:3:"︔";s:1:";";s:3:"︕";s:1:"!";s:3:"︖";s:1:"?";s:3:"︗";s:3:"〖";s:3:"︘";s:3:"〗";s:3:"︙";s:3:"...";s:3:"︰";s:2:"..";s:3:"︱";s:3:"—";s:3:"︲";s:3:"–";s:3:"︳";s:1:"_";s:3:"︴";s:1:"_";s:3:"︵";s:1:"(";s:3:"︶";s:1:")";s:3:"︷";s:1:"{";s:3:"︸";s:1:"}";s:3:"︹";s:3:"〔";s:3:"︺";s:3:"〕";s:3:"︻";s:3:"ã€";s:3:"︼";s:3:"】";s:3:"︽";s:3:"《";s:3:"︾";s:3:"》";s:3:"︿";s:3:"〈";s:3:"ï¹€";s:3:"〉";s:3:"ï¹";s:3:"「";s:3:"﹂";s:3:"ã€";s:3:"﹃";s:3:"『";s:3:"﹄";s:3:"ã€";s:3:"﹇";s:1:"[";s:3:"﹈";s:1:"]";s:3:"﹉";s:3:" Ì…";s:3:"﹊";s:3:" Ì…";s:3:"﹋";s:3:" Ì…";s:3:"﹌";s:3:" Ì…";s:3:"ï¹";s:1:"_";s:3:"﹎";s:1:"_";s:3:"ï¹";s:1:"_";s:3:"ï¹";s:1:",";s:3:"﹑";s:3:"ã€";s:3:"ï¹’";s:1:".";s:3:"ï¹”";s:1:";";s:3:"﹕";s:1:":";s:3:"ï¹–";s:1:"?";s:3:"ï¹—";s:1:"!";s:3:"﹘";s:3:"—";s:3:"ï¹™";s:1:"(";s:3:"﹚";s:1:")";s:3:"ï¹›";s:1:"{";s:3:"﹜";s:1:"}";s:3:"ï¹";s:3:"〔";s:3:"﹞";s:3:"〕";s:3:"﹟";s:1:"#";s:3:"ï¹ ";s:1:"&";s:3:"﹡";s:1:"*";s:3:"ï¹¢";s:1:"+";s:3:"ï¹£";s:1:"-";s:3:"﹤";s:1:"<";s:3:"ï¹¥";s:1:">";s:3:"﹦";s:1:"=";s:3:"﹨";s:1:"\\";s:3:"﹩";s:1:"$";s:3:"﹪";s:1:"%";s:3:"﹫";s:1:"@";s:3:"ï¹°";s:3:" Ù‹";s:3:"ï¹±";s:4:"ـً";s:3:"ï¹²";s:3:" ÙŒ";s:3:"ï¹´";s:3:" Ù";s:3:"ﹶ";s:3:" ÙŽ";s:3:"ï¹·";s:4:"Ù€ÙŽ";s:3:"ﹸ";s:3:" Ù";s:3:"ï¹¹";s:4:"Ù€Ù";s:3:"ﹺ";s:3:" Ù";s:3:"ï¹»";s:4:"Ù€Ù";s:3:"ï¹¼";s:3:" Ù‘";s:3:"ï¹½";s:4:"ـّ";s:3:"ï¹¾";s:3:" Ù’";s:3:"ﹿ";s:4:"ـْ";s:3:"ﺀ";s:2:"Ø¡";s:3:"ïº";s:4:"آ";s:3:"ﺂ";s:4:"آ";s:3:"ﺃ";s:4:"أ";s:3:"ﺄ";s:4:"أ";s:3:"ﺅ";s:4:"ÙˆÙ”";s:3:"ﺆ";s:4:"ÙˆÙ”";s:3:"ﺇ";s:4:"إ";s:3:"ﺈ";s:4:"إ";s:3:"ﺉ";s:4:"ÙŠÙ”";s:3:"ﺊ";s:4:"ÙŠÙ”";s:3:"ﺋ";s:4:"ÙŠÙ”";s:3:"ﺌ";s:4:"ÙŠÙ”";s:3:"ïº";s:2:"ا";s:3:"ﺎ";s:2:"ا";s:3:"ïº";s:2:"ب";s:3:"ïº";s:2:"ب";s:3:"ﺑ";s:2:"ب";s:3:"ﺒ";s:2:"ب";s:3:"ﺓ";s:2:"Ø©";s:3:"ﺔ";s:2:"Ø©";s:3:"ﺕ";s:2:"ت";s:3:"ﺖ";s:2:"ت";s:3:"ﺗ";s:2:"ت";s:3:"ﺘ";s:2:"ت";s:3:"ﺙ";s:2:"Ø«";s:3:"ﺚ";s:2:"Ø«";s:3:"ﺛ";s:2:"Ø«";s:3:"ﺜ";s:2:"Ø«";s:3:"ïº";s:2:"ج";s:3:"ﺞ";s:2:"ج";s:3:"ﺟ";s:2:"ج";s:3:"ﺠ";s:2:"ج";s:3:"ﺡ";s:2:"Ø­";s:3:"ﺢ";s:2:"Ø­";s:3:"ﺣ";s:2:"Ø­";s:3:"ﺤ";s:2:"Ø­";s:3:"ﺥ";s:2:"Ø®";s:3:"ﺦ";s:2:"Ø®";s:3:"ﺧ";s:2:"Ø®";s:3:"ﺨ";s:2:"Ø®";s:3:"ﺩ";s:2:"د";s:3:"ﺪ";s:2:"د";s:3:"ﺫ";s:2:"Ø°";s:3:"ﺬ";s:2:"Ø°";s:3:"ﺭ";s:2:"ر";s:3:"ﺮ";s:2:"ر";s:3:"ﺯ";s:2:"ز";s:3:"ﺰ";s:2:"ز";s:3:"ﺱ";s:2:"س";s:3:"ﺲ";s:2:"س";s:3:"ﺳ";s:2:"س";s:3:"ﺴ";s:2:"س";s:3:"ﺵ";s:2:"Ø´";s:3:"ﺶ";s:2:"Ø´";s:3:"ﺷ";s:2:"Ø´";s:3:"ﺸ";s:2:"Ø´";s:3:"ﺹ";s:2:"ص";s:3:"ﺺ";s:2:"ص";s:3:"ﺻ";s:2:"ص";s:3:"ﺼ";s:2:"ص";s:3:"ﺽ";s:2:"ض";s:3:"ﺾ";s:2:"ض";s:3:"ﺿ";s:2:"ض";s:3:"ﻀ";s:2:"ض";s:3:"ï»";s:2:"Ø·";s:3:"ﻂ";s:2:"Ø·";s:3:"ﻃ";s:2:"Ø·";s:3:"ﻄ";s:2:"Ø·";s:3:"ï»…";s:2:"ظ";s:3:"ﻆ";s:2:"ظ";s:3:"ﻇ";s:2:"ظ";s:3:"ﻈ";s:2:"ظ";s:3:"ﻉ";s:2:"ع";s:3:"ﻊ";s:2:"ع";s:3:"ﻋ";s:2:"ع";s:3:"ﻌ";s:2:"ع";s:3:"ï»";s:2:"غ";s:3:"ﻎ";s:2:"غ";s:3:"ï»";s:2:"غ";s:3:"ï»";s:2:"غ";s:3:"ﻑ";s:2:"Ù";s:3:"ï»’";s:2:"Ù";s:3:"ﻓ";s:2:"Ù";s:3:"ï»”";s:2:"Ù";s:3:"ﻕ";s:2:"Ù‚";s:3:"ï»–";s:2:"Ù‚";s:3:"ï»—";s:2:"Ù‚";s:3:"ﻘ";s:2:"Ù‚";s:3:"ï»™";s:2:"Ùƒ";s:3:"ﻚ";s:2:"Ùƒ";s:3:"ï»›";s:2:"Ùƒ";s:3:"ﻜ";s:2:"Ùƒ";s:3:"ï»";s:2:"Ù„";s:3:"ﻞ";s:2:"Ù„";s:3:"ﻟ";s:2:"Ù„";s:3:"ï» ";s:2:"Ù„";s:3:"ﻡ";s:2:"Ù…";s:3:"ﻢ";s:2:"Ù…";s:3:"ﻣ";s:2:"Ù…";s:3:"ﻤ";s:2:"Ù…";s:3:"ﻥ";s:2:"Ù†";s:3:"ﻦ";s:2:"Ù†";s:3:"ﻧ";s:2:"Ù†";s:3:"ﻨ";s:2:"Ù†";s:3:"ﻩ";s:2:"Ù‡";s:3:"ﻪ";s:2:"Ù‡";s:3:"ﻫ";s:2:"Ù‡";s:3:"ﻬ";s:2:"Ù‡";s:3:"ï»­";s:2:"Ùˆ";s:3:"ï»®";s:2:"Ùˆ";s:3:"ﻯ";s:2:"Ù‰";s:3:"ï»°";s:2:"Ù‰";s:3:"ï»±";s:2:"ÙŠ";s:3:"ﻲ";s:2:"ÙŠ";s:3:"ﻳ";s:2:"ÙŠ";s:3:"ï»´";s:2:"ÙŠ";s:3:"ﻵ";s:6:"لآ";s:3:"ﻶ";s:6:"لآ";s:3:"ï»·";s:6:"لأ";s:3:"ﻸ";s:6:"لأ";s:3:"ﻹ";s:6:"لإ";s:3:"ﻺ";s:6:"لإ";s:3:"ï»»";s:4:"لا";s:3:"ﻼ";s:4:"لا";s:3:"ï¼";s:1:"!";s:3:""";s:1:""";s:3:"#";s:1:"#";s:3:"$";s:1:"$";s:3:"ï¼…";s:1:"%";s:3:"&";s:1:"&";s:3:"'";s:1:"\'";s:3:"(";s:1:"(";s:3:")";s:1:")";s:3:"*";s:1:"*";s:3:"+";s:1:"+";s:3:",";s:1:",";s:3:"ï¼";s:1:"-";s:3:".";s:1:".";s:3:"ï¼";s:1:"/";s:3:"ï¼";s:1:"0";s:3:"1";s:1:"1";s:3:"ï¼’";s:1:"2";s:3:"3";s:1:"3";s:3:"ï¼”";s:1:"4";s:3:"5";s:1:"5";s:3:"ï¼–";s:1:"6";s:3:"ï¼—";s:1:"7";s:3:"8";s:1:"8";s:3:"ï¼™";s:1:"9";s:3:":";s:1:":";s:3:"ï¼›";s:1:";";s:3:"<";s:1:"<";s:3:"ï¼";s:1:"=";s:3:">";s:1:">";s:3:"?";s:1:"?";s:3:"ï¼ ";s:1:"@";s:3:"A";s:1:"A";s:3:"ï¼¢";s:1:"B";s:3:"ï¼£";s:1:"C";s:3:"D";s:1:"D";s:3:"ï¼¥";s:1:"E";s:3:"F";s:1:"F";s:3:"G";s:1:"G";s:3:"H";s:1:"H";s:3:"I";s:1:"I";s:3:"J";s:1:"J";s:3:"K";s:1:"K";s:3:"L";s:1:"L";s:3:"ï¼­";s:1:"M";s:3:"ï¼®";s:1:"N";s:3:"O";s:1:"O";s:3:"ï¼°";s:1:"P";s:3:"ï¼±";s:1:"Q";s:3:"ï¼²";s:1:"R";s:3:"ï¼³";s:1:"S";s:3:"ï¼´";s:1:"T";s:3:"ï¼µ";s:1:"U";s:3:"V";s:1:"V";s:3:"ï¼·";s:1:"W";s:3:"X";s:1:"X";s:3:"ï¼¹";s:1:"Y";s:3:"Z";s:1:"Z";s:3:"ï¼»";s:1:"[";s:3:"ï¼¼";s:1:"\\";s:3:"ï¼½";s:1:"]";s:3:"ï¼¾";s:1:"^";s:3:"_";s:1:"_";s:3:"ï½€";s:1:"`";s:3:"ï½";s:1:"a";s:3:"b";s:1:"b";s:3:"c";s:1:"c";s:3:"d";s:1:"d";s:3:"ï½…";s:1:"e";s:3:"f";s:1:"f";s:3:"g";s:1:"g";s:3:"h";s:1:"h";s:3:"i";s:1:"i";s:3:"j";s:1:"j";s:3:"k";s:1:"k";s:3:"l";s:1:"l";s:3:"ï½";s:1:"m";s:3:"n";s:1:"n";s:3:"ï½";s:1:"o";s:3:"ï½";s:1:"p";s:3:"q";s:1:"q";s:3:"ï½’";s:1:"r";s:3:"s";s:1:"s";s:3:"ï½”";s:1:"t";s:3:"u";s:1:"u";s:3:"ï½–";s:1:"v";s:3:"ï½—";s:1:"w";s:3:"x";s:1:"x";s:3:"ï½™";s:1:"y";s:3:"z";s:1:"z";s:3:"ï½›";s:1:"{";s:3:"|";s:1:"|";s:3:"ï½";s:1:"}";s:3:"~";s:1:"~";s:3:"⦅";s:3:"⦅";s:3:"ï½ ";s:3:"⦆";s:3:"。";s:3:"。";s:3:"ï½¢";s:3:"「";s:3:"ï½£";s:3:"ã€";s:3:"、";s:3:"ã€";s:3:"ï½¥";s:3:"・";s:3:"ヲ";s:3:"ヲ";s:3:"ァ";s:3:"ã‚¡";s:3:"ィ";s:3:"ã‚£";s:3:"ゥ";s:3:"ã‚¥";s:3:"ェ";s:3:"ェ";s:3:"ォ";s:3:"ã‚©";s:3:"ャ";s:3:"ャ";s:3:"ï½­";s:3:"ュ";s:3:"ï½®";s:3:"ョ";s:3:"ッ";s:3:"ッ";s:3:"ï½°";s:3:"ー";s:3:"ï½±";s:3:"ã‚¢";s:3:"ï½²";s:3:"イ";s:3:"ï½³";s:3:"ウ";s:3:"ï½´";s:3:"エ";s:3:"ï½µ";s:3:"オ";s:3:"カ";s:3:"ã‚«";s:3:"ï½·";s:3:"ã‚­";s:3:"ク";s:3:"ク";s:3:"ï½¹";s:3:"ケ";s:3:"コ";s:3:"コ";s:3:"ï½»";s:3:"サ";s:3:"ï½¼";s:3:"ã‚·";s:3:"ï½½";s:3:"ス";s:3:"ï½¾";s:3:"ã‚»";s:3:"ソ";s:3:"ソ";s:3:"ï¾€";s:3:"ã‚¿";s:3:"ï¾";s:3:"ãƒ";s:3:"ツ";s:3:"ツ";s:3:"テ";s:3:"テ";s:3:"ト";s:3:"ト";s:3:"ï¾…";s:3:"ナ";s:3:"ニ";s:3:"ニ";s:3:"ヌ";s:3:"ヌ";s:3:"ネ";s:3:"ãƒ";s:3:"ノ";s:3:"ノ";s:3:"ハ";s:3:"ãƒ";s:3:"ヒ";s:3:"ヒ";s:3:"フ";s:3:"フ";s:3:"ï¾";s:3:"ヘ";s:3:"ホ";s:3:"ホ";s:3:"ï¾";s:3:"マ";s:3:"ï¾";s:3:"ミ";s:3:"ム";s:3:"ム";s:3:"ï¾’";s:3:"メ";s:3:"モ";s:3:"モ";s:3:"ï¾”";s:3:"ヤ";s:3:"ユ";s:3:"ユ";s:3:"ï¾–";s:3:"ヨ";s:3:"ï¾—";s:3:"ラ";s:3:"リ";s:3:"リ";s:3:"ï¾™";s:3:"ル";s:3:"レ";s:3:"レ";s:3:"ï¾›";s:3:"ロ";s:3:"ワ";s:3:"ワ";s:3:"ï¾";s:3:"ン";s:3:"゙";s:3:"ã‚™";s:3:"゚";s:3:"ã‚š";s:3:"ï¾ ";s:3:"á… ";s:3:"ᄀ";s:3:"á„€";s:3:"ï¾¢";s:3:"á„";s:3:"ï¾£";s:3:"ᆪ";s:3:"ᄂ";s:3:"á„‚";s:3:"ï¾¥";s:3:"ᆬ";s:3:"ᆭ";s:3:"ᆭ";s:3:"ᄃ";s:3:"ᄃ";s:3:"ᄄ";s:3:"á„„";s:3:"ᄅ";s:3:"á„…";s:3:"ᆰ";s:3:"ᆰ";s:3:"ᆱ";s:3:"ᆱ";s:3:"ᆲ";s:3:"ᆲ";s:3:"ï¾­";s:3:"ᆳ";s:3:"ï¾®";s:3:"ᆴ";s:3:"ᆵ";s:3:"ᆵ";s:3:"ï¾°";s:3:"á„š";s:3:"ï¾±";s:3:"ᄆ";s:3:"ï¾²";s:3:"ᄇ";s:3:"ï¾³";s:3:"ᄈ";s:3:"ï¾´";s:3:"á„¡";s:3:"ï¾µ";s:3:"ᄉ";s:3:"ᄊ";s:3:"á„Š";s:3:"ï¾·";s:3:"á„‹";s:3:"ᄌ";s:3:"á„Œ";s:3:"ï¾¹";s:3:"á„";s:3:"ᄎ";s:3:"á„Ž";s:3:"ï¾»";s:3:"á„";s:3:"ï¾¼";s:3:"á„";s:3:"ï¾½";s:3:"á„‘";s:3:"ï¾¾";s:3:"á„’";s:3:"ï¿‚";s:3:"á…¡";s:3:"ᅢ";s:3:"á…¢";s:3:"ï¿„";s:3:"á…£";s:3:"ï¿…";s:3:"á…¤";s:3:"ᅥ";s:3:"á…¥";s:3:"ᅦ";s:3:"á…¦";s:3:"ï¿Š";s:3:"á…§";s:3:"ï¿‹";s:3:"á…¨";s:3:"ï¿Œ";s:3:"á…©";s:3:"ï¿";s:3:"á…ª";s:3:"ï¿Ž";s:3:"á…«";s:3:"ï¿";s:3:"á…¬";s:3:"ï¿’";s:3:"á…­";s:3:"ï¿“";s:3:"á…®";s:3:"ï¿”";s:3:"á…¯";s:3:"ï¿•";s:3:"á…°";s:3:"ï¿–";s:3:"á…±";s:3:"ï¿—";s:3:"á…²";s:3:"ï¿š";s:3:"á…³";s:3:"ï¿›";s:3:"á…´";s:3:"ï¿œ";s:3:"á…µ";s:3:"ï¿ ";s:2:"¢";s:3:"ï¿¡";s:2:"£";s:3:"ï¿¢";s:2:"¬";s:3:"ï¿£";s:3:" Ì„";s:3:"¦";s:2:"¦";s:3:"ï¿¥";s:2:"Â¥";s:3:"₩";s:3:"â‚©";s:3:"│";s:3:"│";s:3:"ï¿©";s:3:"â†";s:3:"↑";s:3:"↑";s:3:"ï¿«";s:3:"→";s:3:"↓";s:3:"↓";s:3:"ï¿­";s:3:"â– ";s:3:"ï¿®";s:3:"â—‹";s:4:"ð…ž";s:8:"ð…—ð…¥";s:4:"ð…Ÿ";s:8:"ð…˜ð…¥";s:4:"ð… ";s:12:"ð…˜ð…¥ð…®";s:4:"ð…¡";s:12:"ð…˜ð…¥ð…¯";s:4:"ð…¢";s:12:"ð…˜ð…¥ð…°";s:4:"ð…£";s:12:"ð…˜ð…¥ð…±";s:4:"ð…¤";s:12:"ð…˜ð…¥ð…²";s:4:"ð†»";s:8:"ð†¹ð…¥";s:4:"ð†¼";s:8:"ð†ºð…¥";s:4:"ð†½";s:12:"ð†¹ð…¥ð…®";s:4:"ð†¾";s:12:"ð†ºð…¥ð…®";s:4:"ð†¿";s:12:"ð†¹ð…¥ð…¯";s:4:"ð‡€";s:12:"ð†ºð…¥ð…¯";s:4:"ð€";s:1:"A";s:4:"ð";s:1:"B";s:4:"ð‚";s:1:"C";s:4:"ðƒ";s:1:"D";s:4:"ð„";s:1:"E";s:4:"ð…";s:1:"F";s:4:"ð†";s:1:"G";s:4:"ð‡";s:1:"H";s:4:"ðˆ";s:1:"I";s:4:"ð‰";s:1:"J";s:4:"ðŠ";s:1:"K";s:4:"ð‹";s:1:"L";s:4:"ðŒ";s:1:"M";s:4:"ð";s:1:"N";s:4:"ðŽ";s:1:"O";s:4:"ð";s:1:"P";s:4:"ð";s:1:"Q";s:4:"ð‘";s:1:"R";s:4:"ð’";s:1:"S";s:4:"ð“";s:1:"T";s:4:"ð”";s:1:"U";s:4:"ð•";s:1:"V";s:4:"ð–";s:1:"W";s:4:"ð—";s:1:"X";s:4:"ð˜";s:1:"Y";s:4:"ð™";s:1:"Z";s:4:"ðš";s:1:"a";s:4:"ð›";s:1:"b";s:4:"ðœ";s:1:"c";s:4:"ð";s:1:"d";s:4:"ðž";s:1:"e";s:4:"ðŸ";s:1:"f";s:4:"ð ";s:1:"g";s:4:"ð¡";s:1:"h";s:4:"ð¢";s:1:"i";s:4:"ð£";s:1:"j";s:4:"ð¤";s:1:"k";s:4:"ð¥";s:1:"l";s:4:"ð¦";s:1:"m";s:4:"ð§";s:1:"n";s:4:"ð¨";s:1:"o";s:4:"ð©";s:1:"p";s:4:"ðª";s:1:"q";s:4:"ð«";s:1:"r";s:4:"ð¬";s:1:"s";s:4:"ð­";s:1:"t";s:4:"ð®";s:1:"u";s:4:"ð¯";s:1:"v";s:4:"ð°";s:1:"w";s:4:"ð±";s:1:"x";s:4:"ð²";s:1:"y";s:4:"ð³";s:1:"z";s:4:"ð´";s:1:"A";s:4:"ðµ";s:1:"B";s:4:"ð¶";s:1:"C";s:4:"ð·";s:1:"D";s:4:"ð¸";s:1:"E";s:4:"ð¹";s:1:"F";s:4:"ðº";s:1:"G";s:4:"ð»";s:1:"H";s:4:"ð¼";s:1:"I";s:4:"ð½";s:1:"J";s:4:"ð¾";s:1:"K";s:4:"ð¿";s:1:"L";s:4:"ð‘€";s:1:"M";s:4:"ð‘";s:1:"N";s:4:"ð‘‚";s:1:"O";s:4:"ð‘ƒ";s:1:"P";s:4:"ð‘„";s:1:"Q";s:4:"ð‘…";s:1:"R";s:4:"ð‘†";s:1:"S";s:4:"ð‘‡";s:1:"T";s:4:"ð‘ˆ";s:1:"U";s:4:"ð‘‰";s:1:"V";s:4:"ð‘Š";s:1:"W";s:4:"ð‘‹";s:1:"X";s:4:"ð‘Œ";s:1:"Y";s:4:"ð‘";s:1:"Z";s:4:"ð‘Ž";s:1:"a";s:4:"ð‘";s:1:"b";s:4:"ð‘";s:1:"c";s:4:"ð‘‘";s:1:"d";s:4:"ð‘’";s:1:"e";s:4:"ð‘“";s:1:"f";s:4:"ð‘”";s:1:"g";s:4:"ð‘–";s:1:"i";s:4:"ð‘—";s:1:"j";s:4:"ð‘˜";s:1:"k";s:4:"ð‘™";s:1:"l";s:4:"ð‘š";s:1:"m";s:4:"ð‘›";s:1:"n";s:4:"ð‘œ";s:1:"o";s:4:"ð‘";s:1:"p";s:4:"ð‘ž";s:1:"q";s:4:"ð‘Ÿ";s:1:"r";s:4:"ð‘ ";s:1:"s";s:4:"ð‘¡";s:1:"t";s:4:"ð‘¢";s:1:"u";s:4:"ð‘£";s:1:"v";s:4:"ð‘¤";s:1:"w";s:4:"ð‘¥";s:1:"x";s:4:"ð‘¦";s:1:"y";s:4:"ð‘§";s:1:"z";s:4:"ð‘¨";s:1:"A";s:4:"ð‘©";s:1:"B";s:4:"ð‘ª";s:1:"C";s:4:"ð‘«";s:1:"D";s:4:"ð‘¬";s:1:"E";s:4:"ð‘­";s:1:"F";s:4:"ð‘®";s:1:"G";s:4:"ð‘¯";s:1:"H";s:4:"ð‘°";s:1:"I";s:4:"ð‘±";s:1:"J";s:4:"ð‘²";s:1:"K";s:4:"ð‘³";s:1:"L";s:4:"ð‘´";s:1:"M";s:4:"ð‘µ";s:1:"N";s:4:"ð‘¶";s:1:"O";s:4:"ð‘·";s:1:"P";s:4:"ð‘¸";s:1:"Q";s:4:"ð‘¹";s:1:"R";s:4:"ð‘º";s:1:"S";s:4:"ð‘»";s:1:"T";s:4:"ð‘¼";s:1:"U";s:4:"ð‘½";s:1:"V";s:4:"ð‘¾";s:1:"W";s:4:"ð‘¿";s:1:"X";s:4:"ð’€";s:1:"Y";s:4:"ð’";s:1:"Z";s:4:"ð’‚";s:1:"a";s:4:"ð’ƒ";s:1:"b";s:4:"ð’„";s:1:"c";s:4:"ð’…";s:1:"d";s:4:"ð’†";s:1:"e";s:4:"ð’‡";s:1:"f";s:4:"ð’ˆ";s:1:"g";s:4:"ð’‰";s:1:"h";s:4:"ð’Š";s:1:"i";s:4:"ð’‹";s:1:"j";s:4:"ð’Œ";s:1:"k";s:4:"ð’";s:1:"l";s:4:"ð’Ž";s:1:"m";s:4:"ð’";s:1:"n";s:4:"ð’";s:1:"o";s:4:"ð’‘";s:1:"p";s:4:"ð’’";s:1:"q";s:4:"ð’“";s:1:"r";s:4:"ð’”";s:1:"s";s:4:"ð’•";s:1:"t";s:4:"ð’–";s:1:"u";s:4:"ð’—";s:1:"v";s:4:"ð’˜";s:1:"w";s:4:"ð’™";s:1:"x";s:4:"ð’š";s:1:"y";s:4:"ð’›";s:1:"z";s:4:"ð’œ";s:1:"A";s:4:"ð’ž";s:1:"C";s:4:"ð’Ÿ";s:1:"D";s:4:"ð’¢";s:1:"G";s:4:"ð’¥";s:1:"J";s:4:"ð’¦";s:1:"K";s:4:"ð’©";s:1:"N";s:4:"ð’ª";s:1:"O";s:4:"ð’«";s:1:"P";s:4:"ð’¬";s:1:"Q";s:4:"ð’®";s:1:"S";s:4:"ð’¯";s:1:"T";s:4:"ð’°";s:1:"U";s:4:"ð’±";s:1:"V";s:4:"ð’²";s:1:"W";s:4:"ð’³";s:1:"X";s:4:"ð’´";s:1:"Y";s:4:"ð’µ";s:1:"Z";s:4:"ð’¶";s:1:"a";s:4:"ð’·";s:1:"b";s:4:"ð’¸";s:1:"c";s:4:"ð’¹";s:1:"d";s:4:"ð’»";s:1:"f";s:4:"ð’½";s:1:"h";s:4:"ð’¾";s:1:"i";s:4:"ð’¿";s:1:"j";s:4:"ð“€";s:1:"k";s:4:"ð“";s:1:"l";s:4:"ð“‚";s:1:"m";s:4:"ð“ƒ";s:1:"n";s:4:"ð“…";s:1:"p";s:4:"ð“†";s:1:"q";s:4:"ð“‡";s:1:"r";s:4:"ð“ˆ";s:1:"s";s:4:"ð“‰";s:1:"t";s:4:"ð“Š";s:1:"u";s:4:"ð“‹";s:1:"v";s:4:"ð“Œ";s:1:"w";s:4:"ð“";s:1:"x";s:4:"ð“Ž";s:1:"y";s:4:"ð“";s:1:"z";s:4:"ð“";s:1:"A";s:4:"ð“‘";s:1:"B";s:4:"ð“’";s:1:"C";s:4:"ð““";s:1:"D";s:4:"ð“”";s:1:"E";s:4:"ð“•";s:1:"F";s:4:"ð“–";s:1:"G";s:4:"ð“—";s:1:"H";s:4:"ð“˜";s:1:"I";s:4:"ð“™";s:1:"J";s:4:"ð“š";s:1:"K";s:4:"ð“›";s:1:"L";s:4:"ð“œ";s:1:"M";s:4:"ð“";s:1:"N";s:4:"ð“ž";s:1:"O";s:4:"ð“Ÿ";s:1:"P";s:4:"ð“ ";s:1:"Q";s:4:"ð“¡";s:1:"R";s:4:"ð“¢";s:1:"S";s:4:"ð“£";s:1:"T";s:4:"ð“¤";s:1:"U";s:4:"ð“¥";s:1:"V";s:4:"ð“¦";s:1:"W";s:4:"ð“§";s:1:"X";s:4:"ð“¨";s:1:"Y";s:4:"ð“©";s:1:"Z";s:4:"ð“ª";s:1:"a";s:4:"ð“«";s:1:"b";s:4:"ð“¬";s:1:"c";s:4:"ð“­";s:1:"d";s:4:"ð“®";s:1:"e";s:4:"ð“¯";s:1:"f";s:4:"ð“°";s:1:"g";s:4:"ð“±";s:1:"h";s:4:"ð“²";s:1:"i";s:4:"ð“³";s:1:"j";s:4:"ð“´";s:1:"k";s:4:"ð“µ";s:1:"l";s:4:"ð“¶";s:1:"m";s:4:"ð“·";s:1:"n";s:4:"ð“¸";s:1:"o";s:4:"ð“¹";s:1:"p";s:4:"ð“º";s:1:"q";s:4:"ð“»";s:1:"r";s:4:"ð“¼";s:1:"s";s:4:"ð“½";s:1:"t";s:4:"ð“¾";s:1:"u";s:4:"ð“¿";s:1:"v";s:4:"ð”€";s:1:"w";s:4:"ð”";s:1:"x";s:4:"ð”‚";s:1:"y";s:4:"ð”ƒ";s:1:"z";s:4:"ð”„";s:1:"A";s:4:"ð”…";s:1:"B";s:4:"ð”‡";s:1:"D";s:4:"ð”ˆ";s:1:"E";s:4:"ð”‰";s:1:"F";s:4:"ð”Š";s:1:"G";s:4:"ð”";s:1:"J";s:4:"ð”Ž";s:1:"K";s:4:"ð”";s:1:"L";s:4:"ð”";s:1:"M";s:4:"ð”‘";s:1:"N";s:4:"ð”’";s:1:"O";s:4:"ð”“";s:1:"P";s:4:"ð””";s:1:"Q";s:4:"ð”–";s:1:"S";s:4:"ð”—";s:1:"T";s:4:"ð”˜";s:1:"U";s:4:"ð”™";s:1:"V";s:4:"ð”š";s:1:"W";s:4:"ð”›";s:1:"X";s:4:"ð”œ";s:1:"Y";s:4:"ð”ž";s:1:"a";s:4:"ð”Ÿ";s:1:"b";s:4:"ð” ";s:1:"c";s:4:"ð”¡";s:1:"d";s:4:"ð”¢";s:1:"e";s:4:"ð”£";s:1:"f";s:4:"ð”¤";s:1:"g";s:4:"ð”¥";s:1:"h";s:4:"ð”¦";s:1:"i";s:4:"ð”§";s:1:"j";s:4:"ð”¨";s:1:"k";s:4:"ð”©";s:1:"l";s:4:"ð”ª";s:1:"m";s:4:"ð”«";s:1:"n";s:4:"ð”¬";s:1:"o";s:4:"ð”­";s:1:"p";s:4:"ð”®";s:1:"q";s:4:"ð”¯";s:1:"r";s:4:"ð”°";s:1:"s";s:4:"ð”±";s:1:"t";s:4:"ð”²";s:1:"u";s:4:"ð”³";s:1:"v";s:4:"ð”´";s:1:"w";s:4:"ð”µ";s:1:"x";s:4:"ð”¶";s:1:"y";s:4:"ð”·";s:1:"z";s:4:"ð”¸";s:1:"A";s:4:"ð”¹";s:1:"B";s:4:"ð”»";s:1:"D";s:4:"ð”¼";s:1:"E";s:4:"ð”½";s:1:"F";s:4:"ð”¾";s:1:"G";s:4:"ð•€";s:1:"I";s:4:"ð•";s:1:"J";s:4:"ð•‚";s:1:"K";s:4:"ð•ƒ";s:1:"L";s:4:"ð•„";s:1:"M";s:4:"ð•†";s:1:"O";s:4:"ð•Š";s:1:"S";s:4:"ð•‹";s:1:"T";s:4:"ð•Œ";s:1:"U";s:4:"ð•";s:1:"V";s:4:"ð•Ž";s:1:"W";s:4:"ð•";s:1:"X";s:4:"ð•";s:1:"Y";s:4:"ð•’";s:1:"a";s:4:"ð•“";s:1:"b";s:4:"ð•”";s:1:"c";s:4:"ð••";s:1:"d";s:4:"ð•–";s:1:"e";s:4:"ð•—";s:1:"f";s:4:"ð•˜";s:1:"g";s:4:"ð•™";s:1:"h";s:4:"ð•š";s:1:"i";s:4:"ð•›";s:1:"j";s:4:"ð•œ";s:1:"k";s:4:"ð•";s:1:"l";s:4:"ð•ž";s:1:"m";s:4:"ð•Ÿ";s:1:"n";s:4:"ð• ";s:1:"o";s:4:"ð•¡";s:1:"p";s:4:"ð•¢";s:1:"q";s:4:"ð•£";s:1:"r";s:4:"ð•¤";s:1:"s";s:4:"ð•¥";s:1:"t";s:4:"ð•¦";s:1:"u";s:4:"ð•§";s:1:"v";s:4:"ð•¨";s:1:"w";s:4:"ð•©";s:1:"x";s:4:"ð•ª";s:1:"y";s:4:"ð•«";s:1:"z";s:4:"ð•¬";s:1:"A";s:4:"ð•­";s:1:"B";s:4:"ð•®";s:1:"C";s:4:"ð•¯";s:1:"D";s:4:"ð•°";s:1:"E";s:4:"ð•±";s:1:"F";s:4:"ð•²";s:1:"G";s:4:"ð•³";s:1:"H";s:4:"ð•´";s:1:"I";s:4:"ð•µ";s:1:"J";s:4:"ð•¶";s:1:"K";s:4:"ð•·";s:1:"L";s:4:"ð•¸";s:1:"M";s:4:"ð•¹";s:1:"N";s:4:"ð•º";s:1:"O";s:4:"ð•»";s:1:"P";s:4:"ð•¼";s:1:"Q";s:4:"ð•½";s:1:"R";s:4:"ð•¾";s:1:"S";s:4:"ð•¿";s:1:"T";s:4:"ð–€";s:1:"U";s:4:"ð–";s:1:"V";s:4:"ð–‚";s:1:"W";s:4:"ð–ƒ";s:1:"X";s:4:"ð–„";s:1:"Y";s:4:"ð–…";s:1:"Z";s:4:"ð–†";s:1:"a";s:4:"ð–‡";s:1:"b";s:4:"ð–ˆ";s:1:"c";s:4:"ð–‰";s:1:"d";s:4:"ð–Š";s:1:"e";s:4:"ð–‹";s:1:"f";s:4:"ð–Œ";s:1:"g";s:4:"ð–";s:1:"h";s:4:"ð–Ž";s:1:"i";s:4:"ð–";s:1:"j";s:4:"ð–";s:1:"k";s:4:"ð–‘";s:1:"l";s:4:"ð–’";s:1:"m";s:4:"ð–“";s:1:"n";s:4:"ð–”";s:1:"o";s:4:"ð–•";s:1:"p";s:4:"ð––";s:1:"q";s:4:"ð–—";s:1:"r";s:4:"ð–˜";s:1:"s";s:4:"ð–™";s:1:"t";s:4:"ð–š";s:1:"u";s:4:"ð–›";s:1:"v";s:4:"ð–œ";s:1:"w";s:4:"ð–";s:1:"x";s:4:"ð–ž";s:1:"y";s:4:"ð–Ÿ";s:1:"z";s:4:"ð– ";s:1:"A";s:4:"ð–¡";s:1:"B";s:4:"ð–¢";s:1:"C";s:4:"ð–£";s:1:"D";s:4:"ð–¤";s:1:"E";s:4:"ð–¥";s:1:"F";s:4:"ð–¦";s:1:"G";s:4:"ð–§";s:1:"H";s:4:"ð–¨";s:1:"I";s:4:"ð–©";s:1:"J";s:4:"ð–ª";s:1:"K";s:4:"ð–«";s:1:"L";s:4:"ð–¬";s:1:"M";s:4:"ð–­";s:1:"N";s:4:"ð–®";s:1:"O";s:4:"ð–¯";s:1:"P";s:4:"ð–°";s:1:"Q";s:4:"ð–±";s:1:"R";s:4:"ð–²";s:1:"S";s:4:"ð–³";s:1:"T";s:4:"ð–´";s:1:"U";s:4:"ð–µ";s:1:"V";s:4:"ð–¶";s:1:"W";s:4:"ð–·";s:1:"X";s:4:"ð–¸";s:1:"Y";s:4:"ð–¹";s:1:"Z";s:4:"ð–º";s:1:"a";s:4:"ð–»";s:1:"b";s:4:"ð–¼";s:1:"c";s:4:"ð–½";s:1:"d";s:4:"ð–¾";s:1:"e";s:4:"ð–¿";s:1:"f";s:4:"ð—€";s:1:"g";s:4:"ð—";s:1:"h";s:4:"ð—‚";s:1:"i";s:4:"ð—ƒ";s:1:"j";s:4:"ð—„";s:1:"k";s:4:"ð—…";s:1:"l";s:4:"ð—†";s:1:"m";s:4:"ð—‡";s:1:"n";s:4:"ð—ˆ";s:1:"o";s:4:"ð—‰";s:1:"p";s:4:"ð—Š";s:1:"q";s:4:"ð—‹";s:1:"r";s:4:"ð—Œ";s:1:"s";s:4:"ð—";s:1:"t";s:4:"ð—Ž";s:1:"u";s:4:"ð—";s:1:"v";s:4:"ð—";s:1:"w";s:4:"ð—‘";s:1:"x";s:4:"ð—’";s:1:"y";s:4:"ð—“";s:1:"z";s:4:"ð—”";s:1:"A";s:4:"ð—•";s:1:"B";s:4:"ð—–";s:1:"C";s:4:"ð——";s:1:"D";s:4:"ð—˜";s:1:"E";s:4:"ð—™";s:1:"F";s:4:"ð—š";s:1:"G";s:4:"ð—›";s:1:"H";s:4:"ð—œ";s:1:"I";s:4:"ð—";s:1:"J";s:4:"ð—ž";s:1:"K";s:4:"ð—Ÿ";s:1:"L";s:4:"ð— ";s:1:"M";s:4:"ð—¡";s:1:"N";s:4:"ð—¢";s:1:"O";s:4:"ð—£";s:1:"P";s:4:"ð—¤";s:1:"Q";s:4:"ð—¥";s:1:"R";s:4:"ð—¦";s:1:"S";s:4:"ð—§";s:1:"T";s:4:"ð—¨";s:1:"U";s:4:"ð—©";s:1:"V";s:4:"ð—ª";s:1:"W";s:4:"ð—«";s:1:"X";s:4:"ð—¬";s:1:"Y";s:4:"ð—­";s:1:"Z";s:4:"ð—®";s:1:"a";s:4:"ð—¯";s:1:"b";s:4:"ð—°";s:1:"c";s:4:"ð—±";s:1:"d";s:4:"ð—²";s:1:"e";s:4:"ð—³";s:1:"f";s:4:"ð—´";s:1:"g";s:4:"ð—µ";s:1:"h";s:4:"ð—¶";s:1:"i";s:4:"ð—·";s:1:"j";s:4:"ð—¸";s:1:"k";s:4:"ð—¹";s:1:"l";s:4:"ð—º";s:1:"m";s:4:"ð—»";s:1:"n";s:4:"ð—¼";s:1:"o";s:4:"ð—½";s:1:"p";s:4:"ð—¾";s:1:"q";s:4:"ð—¿";s:1:"r";s:4:"ð˜€";s:1:"s";s:4:"ð˜";s:1:"t";s:4:"ð˜‚";s:1:"u";s:4:"ð˜ƒ";s:1:"v";s:4:"ð˜„";s:1:"w";s:4:"ð˜…";s:1:"x";s:4:"ð˜†";s:1:"y";s:4:"ð˜‡";s:1:"z";s:4:"ð˜ˆ";s:1:"A";s:4:"ð˜‰";s:1:"B";s:4:"ð˜Š";s:1:"C";s:4:"ð˜‹";s:1:"D";s:4:"ð˜Œ";s:1:"E";s:4:"ð˜";s:1:"F";s:4:"ð˜Ž";s:1:"G";s:4:"ð˜";s:1:"H";s:4:"ð˜";s:1:"I";s:4:"ð˜‘";s:1:"J";s:4:"ð˜’";s:1:"K";s:4:"ð˜“";s:1:"L";s:4:"ð˜”";s:1:"M";s:4:"ð˜•";s:1:"N";s:4:"ð˜–";s:1:"O";s:4:"ð˜—";s:1:"P";s:4:"ð˜˜";s:1:"Q";s:4:"ð˜™";s:1:"R";s:4:"ð˜š";s:1:"S";s:4:"ð˜›";s:1:"T";s:4:"ð˜œ";s:1:"U";s:4:"ð˜";s:1:"V";s:4:"ð˜ž";s:1:"W";s:4:"ð˜Ÿ";s:1:"X";s:4:"ð˜ ";s:1:"Y";s:4:"ð˜¡";s:1:"Z";s:4:"ð˜¢";s:1:"a";s:4:"ð˜£";s:1:"b";s:4:"ð˜¤";s:1:"c";s:4:"ð˜¥";s:1:"d";s:4:"ð˜¦";s:1:"e";s:4:"ð˜§";s:1:"f";s:4:"ð˜¨";s:1:"g";s:4:"ð˜©";s:1:"h";s:4:"ð˜ª";s:1:"i";s:4:"ð˜«";s:1:"j";s:4:"ð˜¬";s:1:"k";s:4:"ð˜­";s:1:"l";s:4:"ð˜®";s:1:"m";s:4:"ð˜¯";s:1:"n";s:4:"ð˜°";s:1:"o";s:4:"ð˜±";s:1:"p";s:4:"ð˜²";s:1:"q";s:4:"ð˜³";s:1:"r";s:4:"ð˜´";s:1:"s";s:4:"ð˜µ";s:1:"t";s:4:"ð˜¶";s:1:"u";s:4:"ð˜·";s:1:"v";s:4:"ð˜¸";s:1:"w";s:4:"ð˜¹";s:1:"x";s:4:"ð˜º";s:1:"y";s:4:"ð˜»";s:1:"z";s:4:"ð˜¼";s:1:"A";s:4:"ð˜½";s:1:"B";s:4:"ð˜¾";s:1:"C";s:4:"ð˜¿";s:1:"D";s:4:"ð™€";s:1:"E";s:4:"ð™";s:1:"F";s:4:"ð™‚";s:1:"G";s:4:"ð™ƒ";s:1:"H";s:4:"ð™„";s:1:"I";s:4:"ð™…";s:1:"J";s:4:"ð™†";s:1:"K";s:4:"ð™‡";s:1:"L";s:4:"ð™ˆ";s:1:"M";s:4:"ð™‰";s:1:"N";s:4:"ð™Š";s:1:"O";s:4:"ð™‹";s:1:"P";s:4:"ð™Œ";s:1:"Q";s:4:"ð™";s:1:"R";s:4:"ð™Ž";s:1:"S";s:4:"ð™";s:1:"T";s:4:"ð™";s:1:"U";s:4:"ð™‘";s:1:"V";s:4:"ð™’";s:1:"W";s:4:"ð™“";s:1:"X";s:4:"ð™”";s:1:"Y";s:4:"ð™•";s:1:"Z";s:4:"ð™–";s:1:"a";s:4:"ð™—";s:1:"b";s:4:"ð™˜";s:1:"c";s:4:"ð™™";s:1:"d";s:4:"ð™š";s:1:"e";s:4:"ð™›";s:1:"f";s:4:"ð™œ";s:1:"g";s:4:"ð™";s:1:"h";s:4:"ð™ž";s:1:"i";s:4:"ð™Ÿ";s:1:"j";s:4:"ð™ ";s:1:"k";s:4:"ð™¡";s:1:"l";s:4:"ð™¢";s:1:"m";s:4:"ð™£";s:1:"n";s:4:"ð™¤";s:1:"o";s:4:"ð™¥";s:1:"p";s:4:"ð™¦";s:1:"q";s:4:"ð™§";s:1:"r";s:4:"ð™¨";s:1:"s";s:4:"ð™©";s:1:"t";s:4:"ð™ª";s:1:"u";s:4:"ð™«";s:1:"v";s:4:"ð™¬";s:1:"w";s:4:"ð™­";s:1:"x";s:4:"ð™®";s:1:"y";s:4:"ð™¯";s:1:"z";s:4:"ð™°";s:1:"A";s:4:"ð™±";s:1:"B";s:4:"ð™²";s:1:"C";s:4:"ð™³";s:1:"D";s:4:"ð™´";s:1:"E";s:4:"ð™µ";s:1:"F";s:4:"ð™¶";s:1:"G";s:4:"ð™·";s:1:"H";s:4:"ð™¸";s:1:"I";s:4:"ð™¹";s:1:"J";s:4:"ð™º";s:1:"K";s:4:"ð™»";s:1:"L";s:4:"ð™¼";s:1:"M";s:4:"ð™½";s:1:"N";s:4:"ð™¾";s:1:"O";s:4:"ð™¿";s:1:"P";s:4:"ðš€";s:1:"Q";s:4:"ðš";s:1:"R";s:4:"ðš‚";s:1:"S";s:4:"ðšƒ";s:1:"T";s:4:"ðš„";s:1:"U";s:4:"ðš…";s:1:"V";s:4:"ðš†";s:1:"W";s:4:"ðš‡";s:1:"X";s:4:"ðšˆ";s:1:"Y";s:4:"ðš‰";s:1:"Z";s:4:"ðšŠ";s:1:"a";s:4:"ðš‹";s:1:"b";s:4:"ðšŒ";s:1:"c";s:4:"ðš";s:1:"d";s:4:"ðšŽ";s:1:"e";s:4:"ðš";s:1:"f";s:4:"ðš";s:1:"g";s:4:"ðš‘";s:1:"h";s:4:"ðš’";s:1:"i";s:4:"ðš“";s:1:"j";s:4:"ðš”";s:1:"k";s:4:"ðš•";s:1:"l";s:4:"ðš–";s:1:"m";s:4:"ðš—";s:1:"n";s:4:"ðš˜";s:1:"o";s:4:"ðš™";s:1:"p";s:4:"ðšš";s:1:"q";s:4:"ðš›";s:1:"r";s:4:"ðšœ";s:1:"s";s:4:"ðš";s:1:"t";s:4:"ðšž";s:1:"u";s:4:"ðšŸ";s:1:"v";s:4:"ðš ";s:1:"w";s:4:"ðš¡";s:1:"x";s:4:"ðš¢";s:1:"y";s:4:"ðš£";s:1:"z";s:4:"ðš¤";s:2:"ı";s:4:"ðš¥";s:2:"È·";s:4:"ðš¨";s:2:"Α";s:4:"ðš©";s:2:"Î’";s:4:"ðšª";s:2:"Γ";s:4:"ðš«";s:2:"Δ";s:4:"ðš¬";s:2:"Ε";s:4:"ðš­";s:2:"Ζ";s:4:"ðš®";s:2:"Η";s:4:"ðš¯";s:2:"Θ";s:4:"ðš°";s:2:"Ι";s:4:"ðš±";s:2:"Κ";s:4:"ðš²";s:2:"Λ";s:4:"ðš³";s:2:"Îœ";s:4:"ðš´";s:2:"Î";s:4:"ðšµ";s:2:"Ξ";s:4:"ðš¶";s:2:"Ο";s:4:"ðš·";s:2:"Π";s:4:"ðš¸";s:2:"Ρ";s:4:"ðš¹";s:2:"Θ";s:4:"ðšº";s:2:"Σ";s:4:"ðš»";s:2:"Τ";s:4:"ðš¼";s:2:"Î¥";s:4:"ðš½";s:2:"Φ";s:4:"ðš¾";s:2:"Χ";s:4:"ðš¿";s:2:"Ψ";s:4:"ð›€";s:2:"Ω";s:4:"ð›";s:3:"∇";s:4:"ð›‚";s:2:"α";s:4:"ð›ƒ";s:2:"β";s:4:"ð›„";s:2:"γ";s:4:"ð›…";s:2:"δ";s:4:"ð›†";s:2:"ε";s:4:"ð›‡";s:2:"ζ";s:4:"ð›ˆ";s:2:"η";s:4:"ð›‰";s:2:"θ";s:4:"ð›Š";s:2:"ι";s:4:"ð›‹";s:2:"κ";s:4:"ð›Œ";s:2:"λ";s:4:"ð›";s:2:"μ";s:4:"ð›Ž";s:2:"ν";s:4:"ð›";s:2:"ξ";s:4:"ð›";s:2:"ο";s:4:"ð›‘";s:2:"Ï€";s:4:"ð›’";s:2:"Ï";s:4:"ð›“";s:2:"Ï‚";s:4:"ð›”";s:2:"σ";s:4:"ð›•";s:2:"Ï„";s:4:"ð›–";s:2:"Ï…";s:4:"ð›—";s:2:"φ";s:4:"ð›˜";s:2:"χ";s:4:"ð›™";s:2:"ψ";s:4:"ð›š";s:2:"ω";s:4:"ð››";s:3:"∂";s:4:"ð›œ";s:2:"ε";s:4:"ð›";s:2:"θ";s:4:"ð›ž";s:2:"κ";s:4:"ð›Ÿ";s:2:"φ";s:4:"ð› ";s:2:"Ï";s:4:"ð›¡";s:2:"Ï€";s:4:"ð›¢";s:2:"Α";s:4:"ð›£";s:2:"Î’";s:4:"ð›¤";s:2:"Γ";s:4:"ð›¥";s:2:"Δ";s:4:"ð›¦";s:2:"Ε";s:4:"ð›§";s:2:"Ζ";s:4:"ð›¨";s:2:"Η";s:4:"ð›©";s:2:"Θ";s:4:"ð›ª";s:2:"Ι";s:4:"ð›«";s:2:"Κ";s:4:"ð›¬";s:2:"Λ";s:4:"ð›­";s:2:"Îœ";s:4:"ð›®";s:2:"Î";s:4:"ð›¯";s:2:"Ξ";s:4:"ð›°";s:2:"Ο";s:4:"ð›±";s:2:"Π";s:4:"ð›²";s:2:"Ρ";s:4:"ð›³";s:2:"Θ";s:4:"ð›´";s:2:"Σ";s:4:"ð›µ";s:2:"Τ";s:4:"ð›¶";s:2:"Î¥";s:4:"ð›·";s:2:"Φ";s:4:"ð›¸";s:2:"Χ";s:4:"ð›¹";s:2:"Ψ";s:4:"ð›º";s:2:"Ω";s:4:"ð›»";s:3:"∇";s:4:"ð›¼";s:2:"α";s:4:"ð›½";s:2:"β";s:4:"ð›¾";s:2:"γ";s:4:"ð›¿";s:2:"δ";s:4:"ðœ€";s:2:"ε";s:4:"ðœ";s:2:"ζ";s:4:"ðœ‚";s:2:"η";s:4:"ðœƒ";s:2:"θ";s:4:"ðœ„";s:2:"ι";s:4:"ðœ…";s:2:"κ";s:4:"ðœ†";s:2:"λ";s:4:"ðœ‡";s:2:"μ";s:4:"ðœˆ";s:2:"ν";s:4:"ðœ‰";s:2:"ξ";s:4:"ðœŠ";s:2:"ο";s:4:"ðœ‹";s:2:"Ï€";s:4:"ðœŒ";s:2:"Ï";s:4:"ðœ";s:2:"Ï‚";s:4:"ðœŽ";s:2:"σ";s:4:"ðœ";s:2:"Ï„";s:4:"ðœ";s:2:"Ï…";s:4:"ðœ‘";s:2:"φ";s:4:"ðœ’";s:2:"χ";s:4:"ðœ“";s:2:"ψ";s:4:"ðœ”";s:2:"ω";s:4:"ðœ•";s:3:"∂";s:4:"ðœ–";s:2:"ε";s:4:"ðœ—";s:2:"θ";s:4:"ðœ˜";s:2:"κ";s:4:"ðœ™";s:2:"φ";s:4:"ðœš";s:2:"Ï";s:4:"ðœ›";s:2:"Ï€";s:4:"ðœœ";s:2:"Α";s:4:"ðœ";s:2:"Î’";s:4:"ðœž";s:2:"Γ";s:4:"ðœŸ";s:2:"Δ";s:4:"ðœ ";s:2:"Ε";s:4:"ðœ¡";s:2:"Ζ";s:4:"ðœ¢";s:2:"Η";s:4:"ðœ£";s:2:"Θ";s:4:"ðœ¤";s:2:"Ι";s:4:"ðœ¥";s:2:"Κ";s:4:"ðœ¦";s:2:"Λ";s:4:"ðœ§";s:2:"Îœ";s:4:"ðœ¨";s:2:"Î";s:4:"ðœ©";s:2:"Ξ";s:4:"ðœª";s:2:"Ο";s:4:"ðœ«";s:2:"Π";s:4:"ðœ¬";s:2:"Ρ";s:4:"ðœ­";s:2:"Θ";s:4:"ðœ®";s:2:"Σ";s:4:"ðœ¯";s:2:"Τ";s:4:"ðœ°";s:2:"Î¥";s:4:"ðœ±";s:2:"Φ";s:4:"ðœ²";s:2:"Χ";s:4:"ðœ³";s:2:"Ψ";s:4:"ðœ´";s:2:"Ω";s:4:"ðœµ";s:3:"∇";s:4:"ðœ¶";s:2:"α";s:4:"ðœ·";s:2:"β";s:4:"ðœ¸";s:2:"γ";s:4:"ðœ¹";s:2:"δ";s:4:"ðœº";s:2:"ε";s:4:"ðœ»";s:2:"ζ";s:4:"ðœ¼";s:2:"η";s:4:"ðœ½";s:2:"θ";s:4:"ðœ¾";s:2:"ι";s:4:"ðœ¿";s:2:"κ";s:4:"ð€";s:2:"λ";s:4:"ð";s:2:"μ";s:4:"ð‚";s:2:"ν";s:4:"ðƒ";s:2:"ξ";s:4:"ð„";s:2:"ο";s:4:"ð…";s:2:"Ï€";s:4:"ð†";s:2:"Ï";s:4:"ð‡";s:2:"Ï‚";s:4:"ðˆ";s:2:"σ";s:4:"ð‰";s:2:"Ï„";s:4:"ðŠ";s:2:"Ï…";s:4:"ð‹";s:2:"φ";s:4:"ðŒ";s:2:"χ";s:4:"ð";s:2:"ψ";s:4:"ðŽ";s:2:"ω";s:4:"ð";s:3:"∂";s:4:"ð";s:2:"ε";s:4:"ð‘";s:2:"θ";s:4:"ð’";s:2:"κ";s:4:"ð“";s:2:"φ";s:4:"ð”";s:2:"Ï";s:4:"ð•";s:2:"Ï€";s:4:"ð–";s:2:"Α";s:4:"ð—";s:2:"Î’";s:4:"ð˜";s:2:"Γ";s:4:"ð™";s:2:"Δ";s:4:"ðš";s:2:"Ε";s:4:"ð›";s:2:"Ζ";s:4:"ðœ";s:2:"Η";s:4:"ð";s:2:"Θ";s:4:"ðž";s:2:"Ι";s:4:"ðŸ";s:2:"Κ";s:4:"ð ";s:2:"Λ";s:4:"ð¡";s:2:"Îœ";s:4:"ð¢";s:2:"Î";s:4:"ð£";s:2:"Ξ";s:4:"ð¤";s:2:"Ο";s:4:"ð¥";s:2:"Π";s:4:"ð¦";s:2:"Ρ";s:4:"ð§";s:2:"Θ";s:4:"ð¨";s:2:"Σ";s:4:"ð©";s:2:"Τ";s:4:"ðª";s:2:"Î¥";s:4:"ð«";s:2:"Φ";s:4:"ð¬";s:2:"Χ";s:4:"ð­";s:2:"Ψ";s:4:"ð®";s:2:"Ω";s:4:"ð¯";s:3:"∇";s:4:"ð°";s:2:"α";s:4:"ð±";s:2:"β";s:4:"ð²";s:2:"γ";s:4:"ð³";s:2:"δ";s:4:"ð´";s:2:"ε";s:4:"ðµ";s:2:"ζ";s:4:"ð¶";s:2:"η";s:4:"ð·";s:2:"θ";s:4:"ð¸";s:2:"ι";s:4:"ð¹";s:2:"κ";s:4:"ðº";s:2:"λ";s:4:"ð»";s:2:"μ";s:4:"ð¼";s:2:"ν";s:4:"ð½";s:2:"ξ";s:4:"ð¾";s:2:"ο";s:4:"ð¿";s:2:"Ï€";s:4:"ðž€";s:2:"Ï";s:4:"ðž";s:2:"Ï‚";s:4:"ðž‚";s:2:"σ";s:4:"ðžƒ";s:2:"Ï„";s:4:"ðž„";s:2:"Ï…";s:4:"ðž…";s:2:"φ";s:4:"ðž†";s:2:"χ";s:4:"ðž‡";s:2:"ψ";s:4:"ðžˆ";s:2:"ω";s:4:"ðž‰";s:3:"∂";s:4:"ðžŠ";s:2:"ε";s:4:"ðž‹";s:2:"θ";s:4:"ðžŒ";s:2:"κ";s:4:"ðž";s:2:"φ";s:4:"ðžŽ";s:2:"Ï";s:4:"ðž";s:2:"Ï€";s:4:"ðž";s:2:"Α";s:4:"ðž‘";s:2:"Î’";s:4:"ðž’";s:2:"Γ";s:4:"ðž“";s:2:"Δ";s:4:"ðž”";s:2:"Ε";s:4:"ðž•";s:2:"Ζ";s:4:"ðž–";s:2:"Η";s:4:"ðž—";s:2:"Θ";s:4:"ðž˜";s:2:"Ι";s:4:"ðž™";s:2:"Κ";s:4:"ðžš";s:2:"Λ";s:4:"ðž›";s:2:"Îœ";s:4:"ðžœ";s:2:"Î";s:4:"ðž";s:2:"Ξ";s:4:"ðžž";s:2:"Ο";s:4:"ðžŸ";s:2:"Π";s:4:"ðž ";s:2:"Ρ";s:4:"ðž¡";s:2:"Θ";s:4:"ðž¢";s:2:"Σ";s:4:"ðž£";s:2:"Τ";s:4:"ðž¤";s:2:"Î¥";s:4:"ðž¥";s:2:"Φ";s:4:"ðž¦";s:2:"Χ";s:4:"ðž§";s:2:"Ψ";s:4:"ðž¨";s:2:"Ω";s:4:"ðž©";s:3:"∇";s:4:"ðžª";s:2:"α";s:4:"ðž«";s:2:"β";s:4:"ðž¬";s:2:"γ";s:4:"ðž­";s:2:"δ";s:4:"ðž®";s:2:"ε";s:4:"ðž¯";s:2:"ζ";s:4:"ðž°";s:2:"η";s:4:"ðž±";s:2:"θ";s:4:"ðž²";s:2:"ι";s:4:"ðž³";s:2:"κ";s:4:"ðž´";s:2:"λ";s:4:"ðžµ";s:2:"μ";s:4:"ðž¶";s:2:"ν";s:4:"ðž·";s:2:"ξ";s:4:"ðž¸";s:2:"ο";s:4:"ðž¹";s:2:"Ï€";s:4:"ðžº";s:2:"Ï";s:4:"ðž»";s:2:"Ï‚";s:4:"ðž¼";s:2:"σ";s:4:"ðž½";s:2:"Ï„";s:4:"ðž¾";s:2:"Ï…";s:4:"ðž¿";s:2:"φ";s:4:"ðŸ€";s:2:"χ";s:4:"ðŸ";s:2:"ψ";s:4:"ðŸ‚";s:2:"ω";s:4:"ðŸƒ";s:3:"∂";s:4:"ðŸ„";s:2:"ε";s:4:"ðŸ…";s:2:"θ";s:4:"ðŸ†";s:2:"κ";s:4:"ðŸ‡";s:2:"φ";s:4:"ðŸˆ";s:2:"Ï";s:4:"ðŸ‰";s:2:"Ï€";s:4:"ðŸŠ";s:2:"Ïœ";s:4:"ðŸ‹";s:2:"Ï";s:4:"ðŸŽ";s:1:"0";s:4:"ðŸ";s:1:"1";s:4:"ðŸ";s:1:"2";s:4:"ðŸ‘";s:1:"3";s:4:"ðŸ’";s:1:"4";s:4:"ðŸ“";s:1:"5";s:4:"ðŸ”";s:1:"6";s:4:"ðŸ•";s:1:"7";s:4:"ðŸ–";s:1:"8";s:4:"ðŸ—";s:1:"9";s:4:"ðŸ˜";s:1:"0";s:4:"ðŸ™";s:1:"1";s:4:"ðŸš";s:1:"2";s:4:"ðŸ›";s:1:"3";s:4:"ðŸœ";s:1:"4";s:4:"ðŸ";s:1:"5";s:4:"ðŸž";s:1:"6";s:4:"ðŸŸ";s:1:"7";s:4:"ðŸ ";s:1:"8";s:4:"ðŸ¡";s:1:"9";s:4:"ðŸ¢";s:1:"0";s:4:"ðŸ£";s:1:"1";s:4:"ðŸ¤";s:1:"2";s:4:"ðŸ¥";s:1:"3";s:4:"ðŸ¦";s:1:"4";s:4:"ðŸ§";s:1:"5";s:4:"ðŸ¨";s:1:"6";s:4:"ðŸ©";s:1:"7";s:4:"ðŸª";s:1:"8";s:4:"ðŸ«";s:1:"9";s:4:"ðŸ¬";s:1:"0";s:4:"ðŸ­";s:1:"1";s:4:"ðŸ®";s:1:"2";s:4:"ðŸ¯";s:1:"3";s:4:"ðŸ°";s:1:"4";s:4:"ðŸ±";s:1:"5";s:4:"ðŸ²";s:1:"6";s:4:"ðŸ³";s:1:"7";s:4:"ðŸ´";s:1:"8";s:4:"ðŸµ";s:1:"9";s:4:"ðŸ¶";s:1:"0";s:4:"ðŸ·";s:1:"1";s:4:"ðŸ¸";s:1:"2";s:4:"ðŸ¹";s:1:"3";s:4:"ðŸº";s:1:"4";s:4:"ðŸ»";s:1:"5";s:4:"ðŸ¼";s:1:"6";s:4:"ðŸ½";s:1:"7";s:4:"ðŸ¾";s:1:"8";s:4:"ðŸ¿";s:1:"9";s:4:"丽";s:3:"丽";s:4:"ð¯ ";s:3:"丸";s:4:"乁";s:3:"ä¹";s:4:"𠄢";s:4:"ð „¢";s:4:"你";s:3:"ä½ ";s:4:"侮";s:3:"ä¾®";s:4:"侻";s:3:"ä¾»";s:4:"倂";s:3:"倂";s:4:"偺";s:3:"åº";s:4:"備";s:3:"å‚™";s:4:"僧";s:3:"僧";s:4:"像";s:3:"åƒ";s:4:"㒞";s:3:"ã’ž";s:4:"ð¯ ";s:4:"𠘺";s:4:"免";s:3:"å…";s:4:"ð¯ ";s:3:"å…”";s:4:"ð¯ ";s:3:"å…¤";s:4:"具";s:3:"å…·";s:4:"𠔜";s:4:"𠔜";s:4:"㒹";s:3:"ã’¹";s:4:"內";s:3:"å…§";s:4:"再";s:3:"å†";s:4:"𠕋";s:4:"ð •‹";s:4:"冗";s:3:"冗";s:4:"冤";s:3:"冤";s:4:"仌";s:3:"仌";s:4:"冬";s:3:"冬";s:4:"况";s:3:"况";s:4:"𩇟";s:4:"𩇟";s:4:"ð¯ ";s:3:"凵";s:4:"刃";s:3:"刃";s:4:"㓟";s:3:"ã“Ÿ";s:4:"刻";s:3:"刻";s:4:"剆";s:3:"剆";s:4:"割";s:3:"割";s:4:"剷";s:3:"剷";s:4:"㔕";s:3:"㔕";s:4:"勇";s:3:"勇";s:4:"勉";s:3:"勉";s:4:"勤";s:3:"勤";s:4:"勺";s:3:"勺";s:4:"包";s:3:"包";s:4:"匆";s:3:"匆";s:4:"北";s:3:"北";s:4:"卉";s:3:"å‰";s:4:"卑";s:3:"å‘";s:4:"博";s:3:"åš";s:4:"即";s:3:"å³";s:4:"卽";s:3:"å½";s:4:"卿";s:3:"å¿";s:4:"卿";s:3:"å¿";s:4:"卿";s:3:"å¿";s:4:"𠨬";s:4:"𠨬";s:4:"灰";s:3:"ç°";s:4:"及";s:3:"åŠ";s:4:"叟";s:3:"åŸ";s:4:"𠭣";s:4:"ð ­£";s:4:"叫";s:3:"å«";s:4:"叱";s:3:"å±";s:4:"吆";s:3:"å†";s:4:"咞";s:3:"å’ž";s:4:"吸";s:3:"å¸";s:4:"呈";s:3:"呈";s:4:"周";s:3:"周";s:4:"咢";s:3:"å’¢";s:4:"ð¯¡";s:3:"哶";s:4:"唐";s:3:"å”";s:4:"啓";s:3:"å•“";s:4:"啣";s:3:"å•£";s:4:"善";s:3:"å–„";s:4:"善";s:3:"å–„";s:4:"喙";s:3:"å–™";s:4:"喫";s:3:"å–«";s:4:"喳";s:3:"å–³";s:4:"嗂";s:3:"å—‚";s:4:"圖";s:3:"圖";s:4:"嘆";s:3:"嘆";s:4:"ð¯¡";s:3:"圗";s:4:"噑";s:3:"噑";s:4:"ð¯¡";s:3:"å™´";s:4:"ð¯¡";s:3:"切";s:4:"壮";s:3:"壮";s:4:"城";s:3:"城";s:4:"埴";s:3:"埴";s:4:"堍";s:3:"å ";s:4:"型";s:3:"åž‹";s:4:"堲";s:3:"å ²";s:4:"報";s:3:"å ±";s:4:"墬";s:3:"墬";s:4:"𡓤";s:4:"𡓤";s:4:"売";s:3:"売";s:4:"壷";s:3:"壷";s:4:"夆";s:3:"夆";s:4:"ð¯¡";s:3:"多";s:4:"夢";s:3:"夢";s:4:"奢";s:3:"奢";s:4:"𡚨";s:4:"𡚨";s:4:"𡛪";s:4:"𡛪";s:4:"姬";s:3:"姬";s:4:"娛";s:3:"娛";s:4:"娧";s:3:"娧";s:4:"姘";s:3:"姘";s:4:"婦";s:3:"婦";s:4:"㛮";s:3:"ã›®";s:4:"㛼";s:3:"㛼";s:4:"嬈";s:3:"嬈";s:4:"嬾";s:3:"嬾";s:4:"嬾";s:3:"嬾";s:4:"𡧈";s:4:"𡧈";s:4:"寃";s:3:"寃";s:4:"寘";s:3:"寘";s:4:"寧";s:3:"寧";s:4:"寳";s:3:"寳";s:4:"𡬘";s:4:"𡬘";s:4:"寿";s:3:"寿";s:4:"将";s:3:"å°†";s:4:"当";s:3:"当";s:4:"尢";s:3:"å°¢";s:4:"㞁";s:3:"ãž";s:4:"屠";s:3:"å± ";s:4:"屮";s:3:"å±®";s:4:"峀";s:3:"å³€";s:4:"岍";s:3:"å²";s:4:"𡷤";s:4:"ð¡·¤";s:4:"嵃";s:3:"嵃";s:4:"𡷦";s:4:"ð¡·¦";s:4:"嵮";s:3:"åµ®";s:4:"嵫";s:3:"嵫";s:4:"嵼";s:3:"åµ¼";s:4:"ð¯¢";s:3:"å·¡";s:4:"巢";s:3:"å·¢";s:4:"㠯";s:3:"ã ¯";s:4:"巽";s:3:"å·½";s:4:"帨";s:3:"帨";s:4:"帽";s:3:"帽";s:4:"幩";s:3:"幩";s:4:"㡢";s:3:"ã¡¢";s:4:"𢆃";s:4:"𢆃";s:4:"㡼";s:3:"㡼";s:4:"庰";s:3:"庰";s:4:"庳";s:3:"庳";s:4:"ð¯¢";s:3:"庶";s:4:"廊";s:3:"廊";s:4:"ð¯¢";s:4:"𪎒";s:4:"ð¯¢";s:3:"廾";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"舁";s:3:"èˆ";s:4:"弢";s:3:"å¼¢";s:4:"弢";s:3:"å¼¢";s:4:"㣇";s:3:"㣇";s:4:"𣊸";s:4:"𣊸";s:4:"𦇚";s:4:"𦇚";s:4:"形";s:3:"å½¢";s:4:"彫";s:3:"彫";s:4:"㣣";s:3:"㣣";s:4:"徚";s:3:"徚";s:4:"ð¯¢";s:3:"å¿";s:4:"志";s:3:"å¿—";s:4:"忹";s:3:"忹";s:4:"悁";s:3:"æ‚";s:4:"㤺";s:3:"㤺";s:4:"㤜";s:3:"㤜";s:4:"悔";s:3:"æ‚”";s:4:"𢛔";s:4:"𢛔";s:4:"惇";s:3:"惇";s:4:"慈";s:3:"æ…ˆ";s:4:"慌";s:3:"æ…Œ";s:4:"慎";s:3:"æ…Ž";s:4:"慌";s:3:"æ…Œ";s:4:"慺";s:3:"æ…º";s:4:"憎";s:3:"憎";s:4:"憲";s:3:"憲";s:4:"憤";s:3:"憤";s:4:"憯";s:3:"憯";s:4:"懞";s:3:"懞";s:4:"懲";s:3:"懲";s:4:"懶";s:3:"懶";s:4:"成";s:3:"æˆ";s:4:"戛";s:3:"戛";s:4:"扝";s:3:"æ‰";s:4:"抱";s:3:"抱";s:4:"拔";s:3:"æ‹”";s:4:"捐";s:3:"æ";s:4:"𢬌";s:4:"𢬌";s:4:"挽";s:3:"挽";s:4:"拼";s:3:"拼";s:4:"捨";s:3:"æ¨";s:4:"掃";s:3:"掃";s:4:"揤";s:3:"æ¤";s:4:"𢯱";s:4:"𢯱";s:4:"搢";s:3:"æ¢";s:4:"揅";s:3:"æ…";s:4:"ð¯£";s:3:"掩";s:4:"㨮";s:3:"㨮";s:4:"摩";s:3:"æ‘©";s:4:"摾";s:3:"摾";s:4:"撝";s:3:"æ’";s:4:"摷";s:3:"æ‘·";s:4:"㩬";s:3:"㩬";s:4:"敏";s:3:"æ•";s:4:"敬";s:3:"敬";s:4:"𣀊";s:4:"𣀊";s:4:"旣";s:3:"æ—£";s:4:"書";s:3:"書";s:4:"ð¯£";s:3:"晉";s:4:"㬙";s:3:"㬙";s:4:"ð¯£";s:3:"æš‘";s:4:"ð¯£";s:3:"㬈";s:4:"㫤";s:3:"㫤";s:4:"冒";s:3:"冒";s:4:"冕";s:3:"冕";s:4:"最";s:3:"最";s:4:"暜";s:3:"æšœ";s:4:"肭";s:3:"è‚­";s:4:"䏙";s:3:"ä™";s:4:"朗";s:3:"朗";s:4:"望";s:3:"望";s:4:"朡";s:3:"朡";s:4:"杞";s:3:"æž";s:4:"杓";s:3:"æ“";s:4:"ð¯£";s:4:"ð£ƒ";s:4:"㭉";s:3:"ã­‰";s:4:"柺";s:3:"柺";s:4:"枅";s:3:"æž…";s:4:"桒";s:3:"æ¡’";s:4:"梅";s:3:"梅";s:4:"𣑭";s:4:"𣑭";s:4:"梎";s:3:"梎";s:4:"栟";s:3:"æ Ÿ";s:4:"椔";s:3:"椔";s:4:"㮝";s:3:"ã®";s:4:"楂";s:3:"楂";s:4:"榣";s:3:"榣";s:4:"槪";s:3:"槪";s:4:"檨";s:3:"檨";s:4:"𣚣";s:4:"𣚣";s:4:"櫛";s:3:"æ«›";s:4:"㰘";s:3:"ã°˜";s:4:"次";s:3:"次";s:4:"𣢧";s:4:"𣢧";s:4:"歔";s:3:"æ­”";s:4:"㱎";s:3:"㱎";s:4:"歲";s:3:"æ­²";s:4:"殟";s:3:"殟";s:4:"殺";s:3:"殺";s:4:"殻";s:3:"æ®»";s:4:"𣪍";s:4:"ð£ª";s:4:"𡴋";s:4:"ð¡´‹";s:4:"𣫺";s:4:"𣫺";s:4:"汎";s:3:"汎";s:4:"𣲼";s:4:"𣲼";s:4:"沿";s:3:"沿";s:4:"泍";s:3:"æ³";s:4:"汧";s:3:"汧";s:4:"洖";s:3:"æ´–";s:4:"派";s:3:"æ´¾";s:4:"ð¯¤";s:3:"æµ·";s:4:"流";s:3:"æµ";s:4:"浩";s:3:"浩";s:4:"浸";s:3:"浸";s:4:"涅";s:3:"涅";s:4:"𣴞";s:4:"𣴞";s:4:"洴";s:3:"æ´´";s:4:"港";s:3:"港";s:4:"湮";s:3:"æ¹®";s:4:"㴳";s:3:"ã´³";s:4:"滋";s:3:"滋";s:4:"滇";s:3:"滇";s:4:"ð¯¤";s:4:"𣻑";s:4:"淹";s:3:"æ·¹";s:4:"ð¯¤";s:3:"æ½®";s:4:"ð¯¤";s:4:"𣽞";s:4:"𣾎";s:4:"𣾎";s:4:"濆";s:3:"濆";s:4:"瀹";s:3:"瀹";s:4:"瀞";s:3:"瀞";s:4:"瀛";s:3:"瀛";s:4:"㶖";s:3:"㶖";s:4:"灊";s:3:"çŠ";s:4:"災";s:3:"ç½";s:4:"灷";s:3:"ç·";s:4:"炭";s:3:"ç‚­";s:4:"𠔥";s:4:"𠔥";s:4:"煅";s:3:"ç……";s:4:"ð¯¤";s:4:"𤉣";s:4:"熜";s:3:"熜";s:4:"𤎫";s:4:"𤎫";s:4:"爨";s:3:"爨";s:4:"爵";s:3:"爵";s:4:"牐";s:3:"ç‰";s:4:"𤘈";s:4:"𤘈";s:4:"犀";s:3:"犀";s:4:"犕";s:3:"犕";s:4:"𤜵";s:4:"𤜵";s:4:"𤠔";s:4:"𤠔";s:4:"獺";s:3:"çº";s:4:"王";s:3:"王";s:4:"㺬";s:3:"㺬";s:4:"玥";s:3:"玥";s:4:"㺸";s:3:"㺸";s:4:"㺸";s:3:"㺸";s:4:"瑇";s:3:"瑇";s:4:"瑜";s:3:"ç‘œ";s:4:"瑱";s:3:"瑱";s:4:"璅";s:3:"ç’…";s:4:"瓊";s:3:"ç“Š";s:4:"㼛";s:3:"ã¼›";s:4:"甤";s:3:"甤";s:4:"𤰶";s:4:"𤰶";s:4:"甾";s:3:"甾";s:4:"𤲒";s:4:"𤲒";s:4:"異";s:3:"ç•°";s:4:"𢆟";s:4:"𢆟";s:4:"瘐";s:3:"ç˜";s:4:"𤾡";s:4:"𤾡";s:4:"𤾸";s:4:"𤾸";s:4:"𥁄";s:4:"ð¥„";s:4:"㿼";s:3:"㿼";s:4:"䀈";s:3:"䀈";s:4:"直";s:3:"ç›´";s:4:"ð¯¥";s:4:"𥃳";s:4:"𥃲";s:4:"𥃲";s:4:"𥄙";s:4:"𥄙";s:4:"𥄳";s:4:"𥄳";s:4:"眞";s:3:"眞";s:4:"真";s:3:"真";s:4:"真";s:3:"真";s:4:"睊";s:3:"çŠ";s:4:"䀹";s:3:"䀹";s:4:"瞋";s:3:"çž‹";s:4:"䁆";s:3:"ä†";s:4:"䂖";s:3:"ä‚–";s:4:"ð¯¥";s:4:"ð¥";s:4:"硎";s:3:"ç¡Ž";s:4:"ð¯¥";s:3:"碌";s:4:"ð¯¥";s:3:"磌";s:4:"䃣";s:3:"䃣";s:4:"𥘦";s:4:"𥘦";s:4:"祖";s:3:"祖";s:4:"𥚚";s:4:"𥚚";s:4:"𥛅";s:4:"𥛅";s:4:"福";s:3:"ç¦";s:4:"秫";s:3:"秫";s:4:"䄯";s:3:"䄯";s:4:"穀";s:3:"ç©€";s:4:"穊";s:3:"ç©Š";s:4:"穏";s:3:"ç©";s:4:"𥥼";s:4:"𥥼";s:4:"ð¯¥";s:4:"𥪧";s:4:"𥪧";s:4:"𥪧";s:4:"竮";s:3:"ç«®";s:4:"䈂";s:3:"䈂";s:4:"𥮫";s:4:"𥮫";s:4:"篆";s:3:"篆";s:4:"築";s:3:"築";s:4:"䈧";s:3:"䈧";s:4:"𥲀";s:4:"𥲀";s:4:"糒";s:3:"ç³’";s:4:"䊠";s:3:"䊠";s:4:"糨";s:3:"糨";s:4:"糣";s:3:"ç³£";s:4:"紀";s:3:"ç´€";s:4:"𥾆";s:4:"𥾆";s:4:"絣";s:3:"çµ£";s:4:"䌁";s:3:"äŒ";s:4:"緇";s:3:"ç·‡";s:4:"縂";s:3:"縂";s:4:"繅";s:3:"ç¹…";s:4:"䌴";s:3:"䌴";s:4:"𦈨";s:4:"𦈨";s:4:"𦉇";s:4:"𦉇";s:4:"䍙";s:3:"ä™";s:4:"𦋙";s:4:"𦋙";s:4:"罺";s:3:"罺";s:4:"𦌾";s:4:"𦌾";s:4:"羕";s:3:"羕";s:4:"翺";s:3:"翺";s:4:"者";s:3:"者";s:4:"𦓚";s:4:"𦓚";s:4:"𦔣";s:4:"𦔣";s:4:"聠";s:3:"è ";s:4:"𦖨";s:4:"𦖨";s:4:"聰";s:3:"è°";s:4:"𣍟";s:4:"ð£Ÿ";s:4:"ð¯¦";s:3:"ä•";s:4:"育";s:3:"育";s:4:"脃";s:3:"脃";s:4:"䐋";s:3:"ä‹";s:4:"脾";s:3:"脾";s:4:"媵";s:3:"媵";s:4:"𦞧";s:4:"𦞧";s:4:"𦞵";s:4:"𦞵";s:4:"𣎓";s:4:"𣎓";s:4:"𣎜";s:4:"𣎜";s:4:"舁";s:3:"èˆ";s:4:"舄";s:3:"舄";s:4:"ð¯¦";s:3:"辞";s:4:"䑫";s:3:"ä‘«";s:4:"ð¯¦";s:3:"芑";s:4:"ð¯¦";s:3:"芋";s:4:"芝";s:3:"èŠ";s:4:"劳";s:3:"劳";s:4:"花";s:3:"花";s:4:"芳";s:3:"芳";s:4:"芽";s:3:"芽";s:4:"苦";s:3:"苦";s:4:"𦬼";s:4:"𦬼";s:4:"若";s:3:"è‹¥";s:4:"茝";s:3:"èŒ";s:4:"荣";s:3:"è£";s:4:"莭";s:3:"莭";s:4:"茣";s:3:"茣";s:4:"ð¯¦";s:3:"莽";s:4:"菧";s:3:"è§";s:4:"著";s:3:"è‘—";s:4:"荓";s:3:"è“";s:4:"菊";s:3:"èŠ";s:4:"菌";s:3:"èŒ";s:4:"菜";s:3:"èœ";s:4:"𦰶";s:4:"𦰶";s:4:"𦵫";s:4:"𦵫";s:4:"𦳕";s:4:"𦳕";s:4:"䔫";s:3:"䔫";s:4:"蓱";s:3:"蓱";s:4:"蓳";s:3:"蓳";s:4:"蔖";s:3:"è”–";s:4:"𧏊";s:4:"ð§Š";s:4:"蕤";s:3:"蕤";s:4:"𦼬";s:4:"𦼬";s:4:"䕝";s:3:"ä•";s:4:"䕡";s:3:"ä•¡";s:4:"𦾱";s:4:"𦾱";s:4:"𧃒";s:4:"𧃒";s:4:"䕫";s:3:"ä•«";s:4:"虐";s:3:"è™";s:4:"虜";s:3:"虜";s:4:"虧";s:3:"虧";s:4:"虩";s:3:"虩";s:4:"蚩";s:3:"èš©";s:4:"蚈";s:3:"蚈";s:4:"蜎";s:3:"蜎";s:4:"蛢";s:3:"蛢";s:4:"蝹";s:3:"è¹";s:4:"蜨";s:3:"蜨";s:4:"蝫";s:3:"è«";s:4:"螆";s:3:"螆";s:4:"䗗";s:3:"ä——";s:4:"蟡";s:3:"蟡";s:4:"ð¯§";s:3:"è ";s:4:"䗹";s:3:"ä—¹";s:4:"衠";s:3:"è¡ ";s:4:"衣";s:3:"è¡£";s:4:"𧙧";s:4:"𧙧";s:4:"裗";s:3:"裗";s:4:"裞";s:3:"裞";s:4:"䘵";s:3:"䘵";s:4:"裺";s:3:"裺";s:4:"㒻";s:3:"ã’»";s:4:"𧢮";s:4:"𧢮";s:4:"𧥦";s:4:"𧥦";s:4:"ð¯§";s:3:"äš¾";s:4:"䛇";s:3:"䛇";s:4:"ð¯§";s:3:"誠";s:4:"ð¯§";s:3:"è«­";s:4:"變";s:3:"變";s:4:"豕";s:3:"豕";s:4:"𧲨";s:4:"𧲨";s:4:"貫";s:3:"貫";s:4:"賁";s:3:"è³";s:4:"贛";s:3:"è´›";s:4:"起";s:3:"èµ·";s:4:"𧼯";s:4:"𧼯";s:4:"𠠄";s:4:"ð  „";s:4:"跋";s:3:"è·‹";s:4:"趼";s:3:"趼";s:4:"跰";s:3:"è·°";s:4:"ð¯§";s:4:"𠣞";s:4:"軔";s:3:"è»”";s:4:"輸";s:3:"輸";s:4:"𨗒";s:4:"𨗒";s:4:"𨗭";s:4:"𨗭";s:4:"邔";s:3:"é‚”";s:4:"郱";s:3:"郱";s:4:"鄑";s:3:"é„‘";s:4:"𨜮";s:4:"𨜮";s:4:"鄛";s:3:"é„›";s:4:"鈸";s:3:"鈸";s:4:"鋗";s:3:"é‹—";s:4:"鋘";s:3:"鋘";s:4:"鉼";s:3:"鉼";s:4:"鏹";s:3:"é¹";s:4:"鐕";s:3:"é•";s:4:"𨯺";s:4:"𨯺";s:4:"開";s:3:"é–‹";s:4:"䦕";s:3:"䦕";s:4:"閷";s:3:"é–·";s:4:"𨵷";s:4:"𨵷";s:4:"䧦";s:3:"䧦";s:4:"雃";s:3:"雃";s:4:"嶲";s:3:"嶲";s:4:"霣";s:3:"霣";s:4:"𩅅";s:4:"ð©……";s:4:"𩈚";s:4:"𩈚";s:4:"䩮";s:3:"ä©®";s:4:"䩶";s:3:"䩶";s:4:"韠";s:3:"韠";s:4:"𩐊";s:4:"ð©Š";s:4:"䪲";s:3:"䪲";s:4:"𩒖";s:4:"ð©’–";s:4:"頋";s:3:"é ‹";s:4:"頋";s:3:"é ‹";s:4:"頩";s:3:"é ©";s:4:"ð¯¨";s:4:"ð©–¶";s:4:"飢";s:3:"飢";s:4:"䬳";s:3:"䬳";s:4:"餩";s:3:"餩";s:4:"馧";s:3:"馧";s:4:"駂";s:3:"駂";s:4:"駾";s:3:"駾";s:4:"䯎";s:3:"䯎";s:4:"𩬰";s:4:"𩬰";s:4:"鬒";s:3:"鬒";s:4:"鱀";s:3:"é±€";s:4:"鳽";s:3:"é³½";s:4:"ð¯¨";s:3:"䳎";s:4:"䳭";s:3:"ä³­";s:4:"ð¯¨";s:3:"鵧";s:4:"ð¯¨";s:4:"𪃎";s:4:"䳸";s:3:"䳸";s:4:"𪄅";s:4:"𪄅";s:4:"𪈎";s:4:"𪈎";s:4:"𪊑";s:4:"𪊑";s:4:"麻";s:3:"麻";s:4:"䵖";s:3:"äµ–";s:4:"黹";s:3:"黹";s:4:"黾";s:3:"黾";s:4:"鼅";s:3:"é¼…";s:4:"鼏";s:3:"é¼";s:4:"鼖";s:3:"é¼–";s:4:"鼻";s:3:"é¼»";s:4:"ð¯¨";s:4:"𪘀";}' );
+UtfNormal::$utfCompatibilityDecomp = unserialize( 'a:5559:{s:2:" ";s:1:" ";s:2:"¨";s:3:" ̈";s:2:"ª";s:1:"a";s:2:"¯";s:3:" Ì„";s:2:"²";s:1:"2";s:2:"³";s:1:"3";s:2:"´";s:3:" Ì";s:2:"µ";s:2:"μ";s:2:"¸";s:3:" ̧";s:2:"¹";s:1:"1";s:2:"º";s:1:"o";s:2:"¼";s:5:"1â„4";s:2:"½";s:5:"1â„2";s:2:"¾";s:5:"3â„4";s:2:"À";s:3:"AÌ€";s:2:"Ã";s:3:"AÌ";s:2:"Â";s:3:"AÌ‚";s:2:"Ã";s:3:"Ã";s:2:"Ä";s:3:"Ä";s:2:"Ã…";s:3:"AÌŠ";s:2:"Ç";s:3:"Ç";s:2:"È";s:3:"EÌ€";s:2:"É";s:3:"EÌ";s:2:"Ê";s:3:"EÌ‚";s:2:"Ë";s:3:"Ë";s:2:"ÃŒ";s:3:"IÌ€";s:2:"Ã";s:3:"IÌ";s:2:"ÃŽ";s:3:"IÌ‚";s:2:"Ã";s:3:"Ï";s:2:"Ñ";s:3:"Ñ";s:2:"Ã’";s:3:"OÌ€";s:2:"Ó";s:3:"OÌ";s:2:"Ô";s:3:"OÌ‚";s:2:"Õ";s:3:"Õ";s:2:"Ö";s:3:"Ö";s:2:"Ù";s:3:"UÌ€";s:2:"Ú";s:3:"UÌ";s:2:"Û";s:3:"UÌ‚";s:2:"Ãœ";s:3:"Ü";s:2:"Ã";s:3:"YÌ";s:2:"à";s:3:"aÌ€";s:2:"á";s:3:"aÌ";s:2:"â";s:3:"aÌ‚";s:2:"ã";s:3:"ã";s:2:"ä";s:3:"ä";s:2:"Ã¥";s:3:"aÌŠ";s:2:"ç";s:3:"ç";s:2:"è";s:3:"eÌ€";s:2:"é";s:3:"eÌ";s:2:"ê";s:3:"eÌ‚";s:2:"ë";s:3:"ë";s:2:"ì";s:3:"iÌ€";s:2:"í";s:3:"iÌ";s:2:"î";s:3:"iÌ‚";s:2:"ï";s:3:"ï";s:2:"ñ";s:3:"ñ";s:2:"ò";s:3:"oÌ€";s:2:"ó";s:3:"oÌ";s:2:"ô";s:3:"oÌ‚";s:2:"õ";s:3:"õ";s:2:"ö";s:3:"ö";s:2:"ù";s:3:"uÌ€";s:2:"ú";s:3:"uÌ";s:2:"û";s:3:"uÌ‚";s:2:"ü";s:3:"ü";s:2:"ý";s:3:"yÌ";s:2:"ÿ";s:3:"ÿ";s:2:"Ä€";s:3:"AÌ„";s:2:"Ä";s:3:"aÌ„";s:2:"Ä‚";s:3:"Ă";s:2:"ă";s:3:"ă";s:2:"Ä„";s:3:"Ą";s:2:"Ä…";s:3:"ą";s:2:"Ć";s:3:"CÌ";s:2:"ć";s:3:"cÌ";s:2:"Ĉ";s:3:"CÌ‚";s:2:"ĉ";s:3:"cÌ‚";s:2:"ÄŠ";s:3:"Ċ";s:2:"Ä‹";s:3:"ċ";s:2:"ÄŒ";s:3:"CÌŒ";s:2:"Ä";s:3:"cÌŒ";s:2:"ÄŽ";s:3:"DÌŒ";s:2:"Ä";s:3:"dÌŒ";s:2:"Ä’";s:3:"EÌ„";s:2:"Ä“";s:3:"eÌ„";s:2:"Ä”";s:3:"Ĕ";s:2:"Ä•";s:3:"ĕ";s:2:"Ä–";s:3:"Ė";s:2:"Ä—";s:3:"ė";s:2:"Ę";s:3:"Ę";s:2:"Ä™";s:3:"ę";s:2:"Äš";s:3:"EÌŒ";s:2:"Ä›";s:3:"eÌŒ";s:2:"Äœ";s:3:"GÌ‚";s:2:"Ä";s:3:"gÌ‚";s:2:"Äž";s:3:"Ğ";s:2:"ÄŸ";s:3:"ğ";s:2:"Ä ";s:3:"Ġ";s:2:"Ä¡";s:3:"ġ";s:2:"Ä¢";s:3:"Ģ";s:2:"Ä£";s:3:"ģ";s:2:"Ĥ";s:3:"HÌ‚";s:2:"Ä¥";s:3:"hÌ‚";s:2:"Ĩ";s:3:"Ĩ";s:2:"Ä©";s:3:"ĩ";s:2:"Ī";s:3:"IÌ„";s:2:"Ä«";s:3:"iÌ„";s:2:"Ĭ";s:3:"Ĭ";s:2:"Ä­";s:3:"ĭ";s:2:"Ä®";s:3:"Į";s:2:"į";s:3:"į";s:2:"Ä°";s:3:"İ";s:2:"IJ";s:2:"IJ";s:2:"ij";s:2:"ij";s:2:"Ä´";s:3:"JÌ‚";s:2:"ĵ";s:3:"jÌ‚";s:2:"Ķ";s:3:"Ķ";s:2:"Ä·";s:3:"ķ";s:2:"Ĺ";s:3:"LÌ";s:2:"ĺ";s:3:"lÌ";s:2:"Ä»";s:3:"Ļ";s:2:"ļ";s:3:"ļ";s:2:"Ľ";s:3:"LÌŒ";s:2:"ľ";s:3:"lÌŒ";s:2:"Ä¿";s:3:"L·";s:2:"Å€";s:3:"l·";s:2:"Ń";s:3:"NÌ";s:2:"Å„";s:3:"nÌ";s:2:"Å…";s:3:"Ņ";s:2:"ņ";s:3:"ņ";s:2:"Ň";s:3:"NÌŒ";s:2:"ň";s:3:"nÌŒ";s:2:"ʼn";s:3:"ʼn";s:2:"ÅŒ";s:3:"OÌ„";s:2:"Å";s:3:"oÌ„";s:2:"ÅŽ";s:3:"Ŏ";s:2:"Å";s:3:"ŏ";s:2:"Å";s:3:"OÌ‹";s:2:"Å‘";s:3:"oÌ‹";s:2:"Å”";s:3:"RÌ";s:2:"Å•";s:3:"rÌ";s:2:"Å–";s:3:"Ŗ";s:2:"Å—";s:3:"ŗ";s:2:"Ř";s:3:"RÌŒ";s:2:"Å™";s:3:"rÌŒ";s:2:"Åš";s:3:"SÌ";s:2:"Å›";s:3:"sÌ";s:2:"Åœ";s:3:"SÌ‚";s:2:"Å";s:3:"sÌ‚";s:2:"Åž";s:3:"Ş";s:2:"ÅŸ";s:3:"ş";s:2:"Å ";s:3:"SÌŒ";s:2:"Å¡";s:3:"sÌŒ";s:2:"Å¢";s:3:"Ţ";s:2:"Å£";s:3:"ţ";s:2:"Ť";s:3:"TÌŒ";s:2:"Å¥";s:3:"tÌŒ";s:2:"Ũ";s:3:"Ũ";s:2:"Å©";s:3:"ũ";s:2:"Ū";s:3:"UÌ„";s:2:"Å«";s:3:"uÌ„";s:2:"Ŭ";s:3:"Ŭ";s:2:"Å­";s:3:"ŭ";s:2:"Å®";s:3:"UÌŠ";s:2:"ů";s:3:"uÌŠ";s:2:"Å°";s:3:"UÌ‹";s:2:"ű";s:3:"uÌ‹";s:2:"Ų";s:3:"Ų";s:2:"ų";s:3:"ų";s:2:"Å´";s:3:"WÌ‚";s:2:"ŵ";s:3:"wÌ‚";s:2:"Ŷ";s:3:"YÌ‚";s:2:"Å·";s:3:"yÌ‚";s:2:"Ÿ";s:3:"Ÿ";s:2:"Ź";s:3:"ZÌ";s:2:"ź";s:3:"zÌ";s:2:"Å»";s:3:"Ż";s:2:"ż";s:3:"ż";s:2:"Ž";s:3:"ZÌŒ";s:2:"ž";s:3:"zÌŒ";s:2:"Å¿";s:1:"s";s:2:"Æ ";s:3:"OÌ›";s:2:"Æ¡";s:3:"oÌ›";s:2:"Ư";s:3:"UÌ›";s:2:"Æ°";s:3:"uÌ›";s:2:"Ç„";s:4:"DZÌŒ";s:2:"Ç…";s:4:"DzÌŒ";s:2:"dž";s:4:"dzÌŒ";s:2:"LJ";s:2:"LJ";s:2:"Lj";s:2:"Lj";s:2:"lj";s:2:"lj";s:2:"ÇŠ";s:2:"NJ";s:2:"Ç‹";s:2:"Nj";s:2:"ÇŒ";s:2:"nj";s:2:"Ç";s:3:"AÌŒ";s:2:"ÇŽ";s:3:"aÌŒ";s:2:"Ç";s:3:"IÌŒ";s:2:"Ç";s:3:"iÌŒ";s:2:"Ç‘";s:3:"OÌŒ";s:2:"Ç’";s:3:"oÌŒ";s:2:"Ç“";s:3:"UÌŒ";s:2:"Ç”";s:3:"uÌŒ";s:2:"Ç•";s:5:"Ǖ";s:2:"Ç–";s:5:"ǖ";s:2:"Ç—";s:5:"ÜÌ";s:2:"ǘ";s:5:"üÌ";s:2:"Ç™";s:5:"Ǚ";s:2:"Çš";s:5:"ǚ";s:2:"Ç›";s:5:"Ǜ";s:2:"Çœ";s:5:"ǜ";s:2:"Çž";s:5:"Ǟ";s:2:"ÇŸ";s:5:"ǟ";s:2:"Ç ";s:5:"Ǡ";s:2:"Ç¡";s:5:"ǡ";s:2:"Ç¢";s:4:"Ǣ";s:2:"Ç£";s:4:"ǣ";s:2:"Ǧ";s:3:"GÌŒ";s:2:"ǧ";s:3:"gÌŒ";s:2:"Ǩ";s:3:"KÌŒ";s:2:"Ç©";s:3:"kÌŒ";s:2:"Ǫ";s:3:"Ǫ";s:2:"Ç«";s:3:"ǫ";s:2:"Ǭ";s:5:"Ǭ";s:2:"Ç­";s:5:"ǭ";s:2:"Ç®";s:4:"Æ·ÌŒ";s:2:"ǯ";s:4:"Ê’ÌŒ";s:2:"Ç°";s:3:"jÌŒ";s:2:"DZ";s:2:"DZ";s:2:"Dz";s:2:"Dz";s:2:"dz";s:2:"dz";s:2:"Ç´";s:3:"GÌ";s:2:"ǵ";s:3:"gÌ";s:2:"Ǹ";s:3:"NÌ€";s:2:"ǹ";s:3:"nÌ€";s:2:"Ǻ";s:5:"AÌŠÌ";s:2:"Ç»";s:5:"aÌŠÌ";s:2:"Ǽ";s:4:"ÆÌ";s:2:"ǽ";s:4:"æÌ";s:2:"Ǿ";s:4:"ØÌ";s:2:"Ç¿";s:4:"øÌ";s:2:"È€";s:3:"AÌ";s:2:"È";s:3:"aÌ";s:2:"È‚";s:3:"AÌ‘";s:2:"ȃ";s:3:"aÌ‘";s:2:"È„";s:3:"EÌ";s:2:"È…";s:3:"eÌ";s:2:"Ȇ";s:3:"EÌ‘";s:2:"ȇ";s:3:"eÌ‘";s:2:"Ȉ";s:3:"IÌ";s:2:"ȉ";s:3:"iÌ";s:2:"ÈŠ";s:3:"IÌ‘";s:2:"È‹";s:3:"iÌ‘";s:2:"ÈŒ";s:3:"OÌ";s:2:"È";s:3:"oÌ";s:2:"ÈŽ";s:3:"OÌ‘";s:2:"È";s:3:"oÌ‘";s:2:"È";s:3:"RÌ";s:2:"È‘";s:3:"rÌ";s:2:"È’";s:3:"RÌ‘";s:2:"È“";s:3:"rÌ‘";s:2:"È”";s:3:"UÌ";s:2:"È•";s:3:"uÌ";s:2:"È–";s:3:"UÌ‘";s:2:"È—";s:3:"uÌ‘";s:2:"Ș";s:3:"Ș";s:2:"È™";s:3:"ș";s:2:"Èš";s:3:"Ț";s:2:"È›";s:3:"ț";s:2:"Èž";s:3:"HÌŒ";s:2:"ÈŸ";s:3:"hÌŒ";s:2:"Ȧ";s:3:"Ȧ";s:2:"ȧ";s:3:"ȧ";s:2:"Ȩ";s:3:"Ȩ";s:2:"È©";s:3:"ȩ";s:2:"Ȫ";s:5:"Ȫ";s:2:"È«";s:5:"ȫ";s:2:"Ȭ";s:5:"Ȭ";s:2:"È­";s:5:"ȭ";s:2:"È®";s:3:"Ȯ";s:2:"ȯ";s:3:"ȯ";s:2:"È°";s:5:"Ȱ";s:2:"ȱ";s:5:"ȱ";s:2:"Ȳ";s:3:"YÌ„";s:2:"ȳ";s:3:"yÌ„";s:2:"Ê°";s:1:"h";s:2:"ʱ";s:2:"ɦ";s:2:"ʲ";s:1:"j";s:2:"ʳ";s:1:"r";s:2:"Ê´";s:2:"ɹ";s:2:"ʵ";s:2:"É»";s:2:"ʶ";s:2:"Ê";s:2:"Ê·";s:1:"w";s:2:"ʸ";s:1:"y";s:2:"˘";s:3:" ̆";s:2:"Ë™";s:3:" ̇";s:2:"Ëš";s:3:" ÌŠ";s:2:"Ë›";s:3:" ̨";s:2:"Ëœ";s:3:" ̃";s:2:"Ë";s:3:" Ì‹";s:2:"Ë ";s:2:"É£";s:2:"Ë¡";s:1:"l";s:2:"Ë¢";s:1:"s";s:2:"Ë£";s:1:"x";s:2:"ˤ";s:2:"Ê•";s:2:"Í€";s:2:"Ì€";s:2:"Í";s:2:"Ì";s:2:"̓";s:2:"Ì“";s:2:"Í„";s:4:"̈Ì";s:2:"Í´";s:2:"ʹ";s:2:"ͺ";s:3:" Í…";s:2:";";s:1:";";s:2:"΄";s:3:" Ì";s:2:"Î…";s:5:" ̈Ì";s:2:"Ά";s:4:"ΑÌ";s:2:"·";s:2:"·";s:2:"Έ";s:4:"ΕÌ";s:2:"Ή";s:4:"ΗÌ";s:2:"Ί";s:4:"ΙÌ";s:2:"ÎŒ";s:4:"ΟÌ";s:2:"ÎŽ";s:4:"Î¥Ì";s:2:"Î";s:4:"ΩÌ";s:2:"Î";s:6:"ϊÌ";s:2:"Ϊ";s:4:"Ϊ";s:2:"Ϋ";s:4:"Ϋ";s:2:"ά";s:4:"αÌ";s:2:"έ";s:4:"εÌ";s:2:"ή";s:4:"ηÌ";s:2:"ί";s:4:"ιÌ";s:2:"ΰ";s:6:"ϋÌ";s:2:"ÏŠ";s:4:"ϊ";s:2:"Ï‹";s:4:"ϋ";s:2:"ÏŒ";s:4:"οÌ";s:2:"Ï";s:4:"Ï…Ì";s:2:"ÏŽ";s:4:"ωÌ";s:2:"Ï";s:2:"β";s:2:"Ï‘";s:2:"θ";s:2:"Ï’";s:2:"Î¥";s:2:"Ï“";s:4:"Î¥Ì";s:2:"Ï”";s:4:"Ϋ";s:2:"Ï•";s:2:"φ";s:2:"Ï–";s:2:"Ï€";s:2:"Ï°";s:2:"κ";s:2:"ϱ";s:2:"Ï";s:2:"ϲ";s:2:"Ï‚";s:2:"Ï´";s:2:"Θ";s:2:"ϵ";s:2:"ε";s:2:"Ϲ";s:2:"Σ";s:2:"Ѐ";s:4:"Ѐ";s:2:"Ð";s:4:"Ё";s:2:"Ѓ";s:4:"ГÌ";s:2:"Ї";s:4:"Ї";s:2:"ÐŒ";s:4:"КÌ";s:2:"Ð";s:4:"Ѝ";s:2:"ÐŽ";s:4:"Ў";s:2:"Й";s:4:"Й";s:2:"й";s:4:"й";s:2:"Ñ";s:4:"ѐ";s:2:"Ñ‘";s:4:"ё";s:2:"Ñ“";s:4:"гÌ";s:2:"Ñ—";s:4:"ї";s:2:"Ñœ";s:4:"кÌ";s:2:"Ñ";s:4:"ѝ";s:2:"Ñž";s:4:"ў";s:2:"Ѷ";s:4:"Ñ´Ì";s:2:"Ñ·";s:4:"ѵÌ";s:2:"Ó";s:4:"Ӂ";s:2:"Ó‚";s:4:"ӂ";s:2:"Ó";s:4:"Ð̆";s:2:"Ó‘";s:4:"ӑ";s:2:"Ó’";s:4:"Ð̈";s:2:"Ó“";s:4:"ӓ";s:2:"Ó–";s:4:"Ӗ";s:2:"Ó—";s:4:"ӗ";s:2:"Óš";s:4:"Ӛ";s:2:"Ó›";s:4:"ӛ";s:2:"Óœ";s:4:"Ӝ";s:2:"Ó";s:4:"ӝ";s:2:"Óž";s:4:"Ӟ";s:2:"ÓŸ";s:4:"ӟ";s:2:"Ó¢";s:4:"Ӣ";s:2:"Ó£";s:4:"ӣ";s:2:"Ó¤";s:4:"Ӥ";s:2:"Ó¥";s:4:"ӥ";s:2:"Ó¦";s:4:"Ӧ";s:2:"Ó§";s:4:"ӧ";s:2:"Óª";s:4:"Ӫ";s:2:"Ó«";s:4:"ӫ";s:2:"Ó¬";s:4:"Ӭ";s:2:"Ó­";s:4:"Ñ̈";s:2:"Ó®";s:4:"Ӯ";s:2:"Ó¯";s:4:"ӯ";s:2:"Ó°";s:4:"Ӱ";s:2:"Ó±";s:4:"ӱ";s:2:"Ó²";s:4:"Ӳ";s:2:"Ó³";s:4:"ӳ";s:2:"Ó´";s:4:"Ӵ";s:2:"Óµ";s:4:"ӵ";s:2:"Ó¸";s:4:"Ӹ";s:2:"Ó¹";s:4:"ӹ";s:2:"Ö‡";s:4:"Õ¥Ö‚";s:2:"Ø¢";s:4:"آ";s:2:"Ø£";s:4:"أ";s:2:"ؤ";s:4:"ÙˆÙ”";s:2:"Ø¥";s:4:"إ";s:2:"ئ";s:4:"ÙŠÙ”";s:2:"Ùµ";s:4:"اٴ";s:2:"Ù¶";s:4:"وٴ";s:2:"Ù·";s:4:"Û‡Ù´";s:2:"Ù¸";s:4:"يٴ";s:2:"Û€";s:4:"Û•Ù”";s:2:"Û‚";s:4:"ÛÙ”";s:2:"Û“";s:4:"Û’Ù”";s:3:"ऩ";s:6:"ऩ";s:3:"ऱ";s:6:"ऱ";s:3:"ऴ";s:6:"ऴ";s:3:"क़";s:6:"क़";s:3:"ख़";s:6:"ख़";s:3:"ग़";s:6:"ग़";s:3:"ज़";s:6:"ज़";s:3:"ड़";s:6:"ड़";s:3:"à¥";s:6:"ढ़";s:3:"फ़";s:6:"फ़";s:3:"य़";s:6:"य़";s:3:"ো";s:6:"ো";s:3:"ৌ";s:6:"ৌ";s:3:"ড়";s:6:"ড়";s:3:"à§";s:6:"ঢ়";s:3:"য়";s:6:"য়";s:3:"ਲ਼";s:6:"ਲ਼";s:3:"ਸ਼";s:6:"ਸ਼";s:3:"à©™";s:6:"ਖ਼";s:3:"à©š";s:6:"ਗ਼";s:3:"à©›";s:6:"ਜ਼";s:3:"à©ž";s:6:"ਫ਼";s:3:"à­ˆ";s:6:"ୈ";s:3:"à­‹";s:6:"ୋ";s:3:"à­Œ";s:6:"ୌ";s:3:"à­œ";s:6:"ଡ଼";s:3:"à­";s:6:"ଢ଼";s:3:"à®”";s:6:"ஔ";s:3:"ொ";s:6:"ொ";s:3:"ோ";s:6:"ோ";s:3:"ௌ";s:6:"ௌ";s:3:"ై";s:6:"ై";s:3:"à³€";s:6:"ೀ";s:3:"ೇ";s:6:"ೇ";s:3:"ೈ";s:6:"ೈ";s:3:"ೊ";s:6:"ೊ";s:3:"ೋ";s:9:"ೋ";s:3:"ൊ";s:6:"ൊ";s:3:"ോ";s:6:"ോ";s:3:"ൌ";s:6:"ൌ";s:3:"à·š";s:6:"ේ";s:3:"à·œ";s:6:"à·™à·";s:3:"à·";s:9:"à·™à·à·Š";s:3:"à·ž";s:6:"ෞ";s:3:"ำ";s:6:"à¹à¸²";s:3:"ຳ";s:6:"à»àº²";s:3:"ໜ";s:6:"ຫນ";s:3:"à»";s:6:"ຫມ";s:3:"༌";s:3:"་";s:3:"གྷ";s:6:"གྷ";s:3:"à½";s:6:"ཌྷ";s:3:"དྷ";s:6:"དྷ";s:3:"བྷ";s:6:"བྷ";s:3:"ཛྷ";s:6:"ཛྷ";s:3:"ཀྵ";s:6:"ཀྵ";s:3:"ཱི";s:6:"ཱི";s:3:"ཱུ";s:6:"ཱུ";s:3:"ྲྀ";s:6:"ྲྀ";s:3:"ཷ";s:9:"ྲཱྀ";s:3:"ླྀ";s:6:"ླྀ";s:3:"ཹ";s:9:"ླཱྀ";s:3:"à¾";s:6:"ཱྀ";s:3:"ྒྷ";s:6:"ྒྷ";s:3:"à¾";s:6:"ྜྷ";s:3:"ྡྷ";s:6:"ྡྷ";s:3:"ྦྷ";s:6:"ྦྷ";s:3:"ྫྷ";s:6:"ྫྷ";s:3:"ྐྵ";s:6:"à¾à¾µ";s:3:"ဦ";s:6:"ဦ";s:3:"ჼ";s:3:"ნ";s:3:"ᬆ";s:6:"ᬆ";s:3:"ᬈ";s:6:"ᬈ";s:3:"ᬊ";s:6:"ᬊ";s:3:"ᬌ";s:6:"ᬌ";s:3:"ᬎ";s:6:"á¬á¬µ";s:3:"ᬒ";s:6:"ᬒ";s:3:"ᬻ";s:6:"ᬻ";s:3:"ᬽ";s:6:"ᬽ";s:3:"á­€";s:6:"ᭀ";s:3:"á­";s:6:"ᭁ";s:3:"á­ƒ";s:6:"ᭃ";s:3:"á´¬";s:1:"A";s:3:"á´­";s:2:"Æ";s:3:"á´®";s:1:"B";s:3:"á´°";s:1:"D";s:3:"á´±";s:1:"E";s:3:"á´²";s:2:"ÆŽ";s:3:"á´³";s:1:"G";s:3:"á´´";s:1:"H";s:3:"á´µ";s:1:"I";s:3:"á´¶";s:1:"J";s:3:"á´·";s:1:"K";s:3:"á´¸";s:1:"L";s:3:"á´¹";s:1:"M";s:3:"á´º";s:1:"N";s:3:"á´¼";s:1:"O";s:3:"á´½";s:2:"È¢";s:3:"á´¾";s:1:"P";s:3:"á´¿";s:1:"R";s:3:"áµ€";s:1:"T";s:3:"áµ";s:1:"U";s:3:"ᵂ";s:1:"W";s:3:"ᵃ";s:1:"a";s:3:"ᵄ";s:2:"É";s:3:"áµ…";s:2:"É‘";s:3:"ᵆ";s:3:"á´‚";s:3:"ᵇ";s:1:"b";s:3:"ᵈ";s:1:"d";s:3:"ᵉ";s:1:"e";s:3:"ᵊ";s:2:"É™";s:3:"ᵋ";s:2:"É›";s:3:"ᵌ";s:2:"Éœ";s:3:"áµ";s:1:"g";s:3:"áµ";s:1:"k";s:3:"áµ";s:1:"m";s:3:"ᵑ";s:2:"Å‹";s:3:"áµ’";s:1:"o";s:3:"ᵓ";s:2:"É”";s:3:"áµ”";s:3:"á´–";s:3:"ᵕ";s:3:"á´—";s:3:"áµ–";s:1:"p";s:3:"áµ—";s:1:"t";s:3:"ᵘ";s:1:"u";s:3:"áµ™";s:3:"á´";s:3:"ᵚ";s:2:"ɯ";s:3:"áµ›";s:1:"v";s:3:"ᵜ";s:3:"á´¥";s:3:"áµ";s:2:"β";s:3:"ᵞ";s:2:"γ";s:3:"ᵟ";s:2:"δ";s:3:"áµ ";s:2:"φ";s:3:"ᵡ";s:2:"χ";s:3:"áµ¢";s:1:"i";s:3:"áµ£";s:1:"r";s:3:"ᵤ";s:1:"u";s:3:"áµ¥";s:1:"v";s:3:"ᵦ";s:2:"β";s:3:"ᵧ";s:2:"γ";s:3:"ᵨ";s:2:"Ï";s:3:"ᵩ";s:2:"φ";s:3:"ᵪ";s:2:"χ";s:3:"ᵸ";s:2:"н";s:3:"ᶛ";s:2:"É’";s:3:"ᶜ";s:1:"c";s:3:"á¶";s:2:"É•";s:3:"ᶞ";s:2:"ð";s:3:"ᶟ";s:2:"Éœ";s:3:"ᶠ";s:1:"f";s:3:"ᶡ";s:2:"ÉŸ";s:3:"ᶢ";s:2:"É¡";s:3:"ᶣ";s:2:"É¥";s:3:"ᶤ";s:2:"ɨ";s:3:"ᶥ";s:2:"É©";s:3:"ᶦ";s:2:"ɪ";s:3:"ᶧ";s:3:"áµ»";s:3:"ᶨ";s:2:"Ê";s:3:"ᶩ";s:2:"É­";s:3:"ᶪ";s:3:"ᶅ";s:3:"ᶫ";s:2:"ÊŸ";s:3:"ᶬ";s:2:"ɱ";s:3:"ᶭ";s:2:"É°";s:3:"ᶮ";s:2:"ɲ";s:3:"ᶯ";s:2:"ɳ";s:3:"ᶰ";s:2:"É´";s:3:"ᶱ";s:2:"ɵ";s:3:"ᶲ";s:2:"ɸ";s:3:"ᶳ";s:2:"Ê‚";s:3:"ᶴ";s:2:"ʃ";s:3:"ᶵ";s:2:"Æ«";s:3:"ᶶ";s:2:"ʉ";s:3:"ᶷ";s:2:"ÊŠ";s:3:"ᶸ";s:3:"á´œ";s:3:"ᶹ";s:2:"Ê‹";s:3:"ᶺ";s:2:"ÊŒ";s:3:"ᶻ";s:1:"z";s:3:"ᶼ";s:2:"Ê";s:3:"ᶽ";s:2:"Ê‘";s:3:"ᶾ";s:2:"Ê’";s:3:"ᶿ";s:2:"θ";s:3:"Ḁ";s:3:"AÌ¥";s:3:"á¸";s:3:"aÌ¥";s:3:"Ḃ";s:3:"Ḃ";s:3:"ḃ";s:3:"ḃ";s:3:"Ḅ";s:3:"BÌ£";s:3:"ḅ";s:3:"bÌ£";s:3:"Ḇ";s:3:"Ḇ";s:3:"ḇ";s:3:"ḇ";s:3:"Ḉ";s:5:"ÇÌ";s:3:"ḉ";s:5:"çÌ";s:3:"Ḋ";s:3:"Ḋ";s:3:"ḋ";s:3:"ḋ";s:3:"Ḍ";s:3:"DÌ£";s:3:"á¸";s:3:"dÌ£";s:3:"Ḏ";s:3:"Ḏ";s:3:"á¸";s:3:"ḏ";s:3:"á¸";s:3:"Ḑ";s:3:"ḑ";s:3:"ḑ";s:3:"Ḓ";s:3:"DÌ­";s:3:"ḓ";s:3:"dÌ­";s:3:"Ḕ";s:5:"EÌ„Ì€";s:3:"ḕ";s:5:"eÌ„Ì€";s:3:"Ḗ";s:5:"EÌ„Ì";s:3:"ḗ";s:5:"eÌ„Ì";s:3:"Ḙ";s:3:"EÌ­";s:3:"ḙ";s:3:"eÌ­";s:3:"Ḛ";s:3:"EÌ°";s:3:"ḛ";s:3:"eÌ°";s:3:"Ḝ";s:5:"Ḝ";s:3:"á¸";s:5:"ḝ";s:3:"Ḟ";s:3:"Ḟ";s:3:"ḟ";s:3:"ḟ";s:3:"Ḡ";s:3:"GÌ„";s:3:"ḡ";s:3:"gÌ„";s:3:"Ḣ";s:3:"Ḣ";s:3:"ḣ";s:3:"ḣ";s:3:"Ḥ";s:3:"HÌ£";s:3:"ḥ";s:3:"hÌ£";s:3:"Ḧ";s:3:"Ḧ";s:3:"ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"Ḩ";s:3:"ḩ";s:3:"ḩ";s:3:"Ḫ";s:3:"HÌ®";s:3:"ḫ";s:3:"hÌ®";s:3:"Ḭ";s:3:"IÌ°";s:3:"ḭ";s:3:"iÌ°";s:3:"Ḯ";s:5:"ÏÌ";s:3:"ḯ";s:5:"ïÌ";s:3:"Ḱ";s:3:"KÌ";s:3:"ḱ";s:3:"kÌ";s:3:"Ḳ";s:3:"KÌ£";s:3:"ḳ";s:3:"kÌ£";s:3:"Ḵ";s:3:"Ḵ";s:3:"ḵ";s:3:"ḵ";s:3:"Ḷ";s:3:"LÌ£";s:3:"ḷ";s:3:"lÌ£";s:3:"Ḹ";s:5:"Ḹ";s:3:"ḹ";s:5:"ḹ";s:3:"Ḻ";s:3:"Ḻ";s:3:"ḻ";s:3:"ḻ";s:3:"Ḽ";s:3:"LÌ­";s:3:"ḽ";s:3:"lÌ­";s:3:"Ḿ";s:3:"MÌ";s:3:"ḿ";s:3:"mÌ";s:3:"á¹€";s:3:"Ṁ";s:3:"á¹";s:3:"ṁ";s:3:"Ṃ";s:3:"MÌ£";s:3:"ṃ";s:3:"mÌ£";s:3:"Ṅ";s:3:"Ṅ";s:3:"á¹…";s:3:"ṅ";s:3:"Ṇ";s:3:"NÌ£";s:3:"ṇ";s:3:"nÌ£";s:3:"Ṉ";s:3:"Ṉ";s:3:"ṉ";s:3:"ṉ";s:3:"Ṋ";s:3:"NÌ­";s:3:"ṋ";s:3:"nÌ­";s:3:"Ṍ";s:5:"ÕÌ";s:3:"á¹";s:5:"õÌ";s:3:"Ṏ";s:5:"Ṏ";s:3:"á¹";s:5:"ṏ";s:3:"á¹";s:5:"OÌ„Ì€";s:3:"ṑ";s:5:"oÌ„Ì€";s:3:"á¹’";s:5:"OÌ„Ì";s:3:"ṓ";s:5:"oÌ„Ì";s:3:"á¹”";s:3:"PÌ";s:3:"ṕ";s:3:"pÌ";s:3:"á¹–";s:3:"Ṗ";s:3:"á¹—";s:3:"ṗ";s:3:"Ṙ";s:3:"Ṙ";s:3:"á¹™";s:3:"ṙ";s:3:"Ṛ";s:3:"RÌ£";s:3:"á¹›";s:3:"rÌ£";s:3:"Ṝ";s:5:"Ṝ";s:3:"á¹";s:5:"ṝ";s:3:"Ṟ";s:3:"Ṟ";s:3:"ṟ";s:3:"ṟ";s:3:"á¹ ";s:3:"Ṡ";s:3:"ṡ";s:3:"ṡ";s:3:"á¹¢";s:3:"SÌ£";s:3:"á¹£";s:3:"sÌ£";s:3:"Ṥ";s:5:"SÌ̇";s:3:"á¹¥";s:5:"sÌ̇";s:3:"Ṧ";s:5:"Ṧ";s:3:"ṧ";s:5:"ṧ";s:3:"Ṩ";s:5:"Ṩ";s:3:"ṩ";s:5:"ṩ";s:3:"Ṫ";s:3:"Ṫ";s:3:"ṫ";s:3:"ṫ";s:3:"Ṭ";s:3:"TÌ£";s:3:"á¹­";s:3:"tÌ£";s:3:"á¹®";s:3:"Ṯ";s:3:"ṯ";s:3:"ṯ";s:3:"á¹°";s:3:"TÌ­";s:3:"á¹±";s:3:"tÌ­";s:3:"á¹²";s:3:"Ṳ";s:3:"á¹³";s:3:"ṳ";s:3:"á¹´";s:3:"UÌ°";s:3:"á¹µ";s:3:"uÌ°";s:3:"Ṷ";s:3:"UÌ­";s:3:"á¹·";s:3:"uÌ­";s:3:"Ṹ";s:5:"ŨÌ";s:3:"á¹¹";s:5:"ũÌ";s:3:"Ṻ";s:5:"Ṻ";s:3:"á¹»";s:5:"ṻ";s:3:"á¹¼";s:3:"Ṽ";s:3:"á¹½";s:3:"ṽ";s:3:"á¹¾";s:3:"VÌ£";s:3:"ṿ";s:3:"vÌ£";s:3:"Ẁ";s:3:"WÌ€";s:3:"áº";s:3:"wÌ€";s:3:"Ẃ";s:3:"WÌ";s:3:"ẃ";s:3:"wÌ";s:3:"Ẅ";s:3:"Ẅ";s:3:"ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"Ẇ";s:3:"ẇ";s:3:"ẇ";s:3:"Ẉ";s:3:"WÌ£";s:3:"ẉ";s:3:"wÌ£";s:3:"Ẋ";s:3:"Ẋ";s:3:"ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"Ẍ";s:3:"áº";s:3:"ẍ";s:3:"Ẏ";s:3:"Ẏ";s:3:"áº";s:3:"ẏ";s:3:"áº";s:3:"ZÌ‚";s:3:"ẑ";s:3:"zÌ‚";s:3:"Ẓ";s:3:"ZÌ£";s:3:"ẓ";s:3:"zÌ£";s:3:"Ẕ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẕ";s:3:"ẖ";s:3:"ẖ";s:3:"ẗ";s:3:"ẗ";s:3:"ẘ";s:3:"wÌŠ";s:3:"ẙ";s:3:"yÌŠ";s:3:"ẚ";s:3:"aʾ";s:3:"ẛ";s:3:"ṡ";s:3:"Ạ";s:3:"AÌ£";s:3:"ạ";s:3:"aÌ£";s:3:"Ả";s:3:"Ả";s:3:"ả";s:3:"ả";s:3:"Ấ";s:5:"AÌ‚Ì";s:3:"ấ";s:5:"aÌ‚Ì";s:3:"Ầ";s:5:"AÌ‚Ì€";s:3:"ầ";s:5:"aÌ‚Ì€";s:3:"Ẩ";s:5:"Ẩ";s:3:"ẩ";s:5:"ẩ";s:3:"Ẫ";s:5:"Ẫ";s:3:"ẫ";s:5:"ẫ";s:3:"Ậ";s:5:"Ậ";s:3:"ậ";s:5:"ậ";s:3:"Ắ";s:5:"ĂÌ";s:3:"ắ";s:5:"ăÌ";s:3:"Ằ";s:5:"Ằ";s:3:"ằ";s:5:"ằ";s:3:"Ẳ";s:5:"Ẳ";s:3:"ẳ";s:5:"ẳ";s:3:"Ẵ";s:5:"Ẵ";s:3:"ẵ";s:5:"ẵ";s:3:"Ặ";s:5:"Ặ";s:3:"ặ";s:5:"ặ";s:3:"Ẹ";s:3:"EÌ£";s:3:"ẹ";s:3:"eÌ£";s:3:"Ẻ";s:3:"Ẻ";s:3:"ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"Ẽ";s:3:"ẽ";s:3:"ẽ";s:3:"Ế";s:5:"EÌ‚Ì";s:3:"ế";s:5:"eÌ‚Ì";s:3:"Ề";s:5:"EÌ‚Ì€";s:3:"á»";s:5:"eÌ‚Ì€";s:3:"Ể";s:5:"Ể";s:3:"ể";s:5:"ể";s:3:"Ễ";s:5:"Ễ";s:3:"á»…";s:5:"ễ";s:3:"Ệ";s:5:"Ệ";s:3:"ệ";s:5:"ệ";s:3:"Ỉ";s:3:"Ỉ";s:3:"ỉ";s:3:"ỉ";s:3:"Ị";s:3:"IÌ£";s:3:"ị";s:3:"iÌ£";s:3:"Ọ";s:3:"OÌ£";s:3:"á»";s:3:"oÌ£";s:3:"Ỏ";s:3:"Ỏ";s:3:"á»";s:3:"ỏ";s:3:"á»";s:5:"OÌ‚Ì";s:3:"ố";s:5:"oÌ‚Ì";s:3:"á»’";s:5:"OÌ‚Ì€";s:3:"ồ";s:5:"oÌ‚Ì€";s:3:"á»”";s:5:"Ổ";s:3:"ổ";s:5:"ổ";s:3:"á»–";s:5:"Ỗ";s:3:"á»—";s:5:"ỗ";s:3:"Ộ";s:5:"Ộ";s:3:"á»™";s:5:"ộ";s:3:"Ớ";s:5:"OÌ›Ì";s:3:"á»›";s:5:"oÌ›Ì";s:3:"Ờ";s:5:"Ờ";s:3:"á»";s:5:"ờ";s:3:"Ở";s:5:"Ở";s:3:"ở";s:5:"ở";s:3:"á» ";s:5:"Ỡ";s:3:"ỡ";s:5:"ỡ";s:3:"Ợ";s:5:"Ợ";s:3:"ợ";s:5:"ợ";s:3:"Ụ";s:3:"UÌ£";s:3:"ụ";s:3:"uÌ£";s:3:"Ủ";s:3:"Ủ";s:3:"ủ";s:3:"ủ";s:3:"Ứ";s:5:"UÌ›Ì";s:3:"ứ";s:5:"uÌ›Ì";s:3:"Ừ";s:5:"Ừ";s:3:"ừ";s:5:"ừ";s:3:"Ử";s:5:"Ử";s:3:"á»­";s:5:"ử";s:3:"á»®";s:5:"Ữ";s:3:"ữ";s:5:"ữ";s:3:"á»°";s:5:"Ự";s:3:"á»±";s:5:"ự";s:3:"Ỳ";s:3:"YÌ€";s:3:"ỳ";s:3:"yÌ€";s:3:"á»´";s:3:"YÌ£";s:3:"ỵ";s:3:"yÌ£";s:3:"Ỷ";s:3:"Ỷ";s:3:"á»·";s:3:"ỷ";s:3:"Ỹ";s:3:"Ỹ";s:3:"ỹ";s:3:"ỹ";s:3:"á¼€";s:4:"ἀ";s:3:"á¼";s:4:"ἁ";s:3:"ἂ";s:6:"ἂ";s:3:"ἃ";s:6:"ἃ";s:3:"ἄ";s:6:"ἀÌ";s:3:"á¼…";s:6:"ἁÌ";s:3:"ἆ";s:6:"ἆ";s:3:"ἇ";s:6:"ἇ";s:3:"Ἀ";s:4:"Ἀ";s:3:"Ἁ";s:4:"Ἁ";s:3:"Ἂ";s:6:"Ἂ";s:3:"Ἃ";s:6:"Ἃ";s:3:"Ἄ";s:6:"ἈÌ";s:3:"á¼";s:6:"ἉÌ";s:3:"Ἆ";s:6:"Ἆ";s:3:"á¼";s:6:"Ἇ";s:3:"á¼";s:4:"ἐ";s:3:"ἑ";s:4:"ἑ";s:3:"á¼’";s:6:"ἒ";s:3:"ἓ";s:6:"ἓ";s:3:"á¼”";s:6:"ἐÌ";s:3:"ἕ";s:6:"ἑÌ";s:3:"Ἐ";s:4:"Ἐ";s:3:"á¼™";s:4:"Ἑ";s:3:"Ἒ";s:6:"Ἒ";s:3:"á¼›";s:6:"Ἓ";s:3:"Ἔ";s:6:"ἘÌ";s:3:"á¼";s:6:"ἙÌ";s:3:"á¼ ";s:4:"ἠ";s:3:"ἡ";s:4:"ἡ";s:3:"á¼¢";s:6:"ἢ";s:3:"á¼£";s:6:"ἣ";s:3:"ἤ";s:6:"ἠÌ";s:3:"á¼¥";s:6:"ἡÌ";s:3:"ἦ";s:6:"ἦ";s:3:"ἧ";s:6:"ἧ";s:3:"Ἠ";s:4:"Ἠ";s:3:"Ἡ";s:4:"Ἡ";s:3:"Ἢ";s:6:"Ἢ";s:3:"Ἣ";s:6:"Ἣ";s:3:"Ἤ";s:6:"ἨÌ";s:3:"á¼­";s:6:"ἩÌ";s:3:"á¼®";s:6:"Ἦ";s:3:"Ἧ";s:6:"Ἧ";s:3:"á¼°";s:4:"ἰ";s:3:"á¼±";s:4:"ἱ";s:3:"á¼²";s:6:"ἲ";s:3:"á¼³";s:6:"ἳ";s:3:"á¼´";s:6:"ἰÌ";s:3:"á¼µ";s:6:"ἱÌ";s:3:"ἶ";s:6:"ἶ";s:3:"á¼·";s:6:"ἷ";s:3:"Ἰ";s:4:"Ἰ";s:3:"á¼¹";s:4:"Ἱ";s:3:"Ἲ";s:6:"Ἲ";s:3:"á¼»";s:6:"Ἳ";s:3:"á¼¼";s:6:"ἸÌ";s:3:"á¼½";s:6:"ἹÌ";s:3:"á¼¾";s:6:"Ἶ";s:3:"Ἷ";s:6:"Ἷ";s:3:"á½€";s:4:"ὀ";s:3:"á½";s:4:"ὁ";s:3:"ὂ";s:6:"ὂ";s:3:"ὃ";s:6:"ὃ";s:3:"ὄ";s:6:"ὀÌ";s:3:"á½…";s:6:"ὁÌ";s:3:"Ὀ";s:4:"Ὀ";s:3:"Ὁ";s:4:"Ὁ";s:3:"Ὂ";s:6:"Ὂ";s:3:"Ὃ";s:6:"Ὃ";s:3:"Ὄ";s:6:"ὈÌ";s:3:"á½";s:6:"ὉÌ";s:3:"á½";s:4:"Ï…Ì“";s:3:"ὑ";s:4:"Ï…Ì”";s:3:"á½’";s:6:"Ï…Ì“Ì€";s:3:"ὓ";s:6:"ὓ";s:3:"á½”";s:6:"Ï…Ì“Ì";s:3:"ὕ";s:6:"Ï…Ì”Ì";s:3:"á½–";s:6:"Ï…Ì“Í‚";s:3:"á½—";s:6:"ὗ";s:3:"á½™";s:4:"Ὑ";s:3:"á½›";s:6:"Ὓ";s:3:"á½";s:6:"ὙÌ";s:3:"Ὗ";s:6:"Ὗ";s:3:"á½ ";s:4:"ὠ";s:3:"ὡ";s:4:"ὡ";s:3:"á½¢";s:6:"ὢ";s:3:"á½£";s:6:"ὣ";s:3:"ὤ";s:6:"ὠÌ";s:3:"á½¥";s:6:"ὡÌ";s:3:"ὦ";s:6:"ὦ";s:3:"ὧ";s:6:"ὧ";s:3:"Ὠ";s:4:"Ὠ";s:3:"Ὡ";s:4:"Ὡ";s:3:"Ὢ";s:6:"Ὢ";s:3:"Ὣ";s:6:"Ὣ";s:3:"Ὤ";s:6:"ὨÌ";s:3:"á½­";s:6:"ὩÌ";s:3:"á½®";s:6:"Ὦ";s:3:"Ὧ";s:6:"Ὧ";s:3:"á½°";s:4:"ὰ";s:3:"á½±";s:4:"αÌ";s:3:"á½²";s:4:"ὲ";s:3:"á½³";s:4:"εÌ";s:3:"á½´";s:4:"ὴ";s:3:"á½µ";s:4:"ηÌ";s:3:"ὶ";s:4:"ὶ";s:3:"á½·";s:4:"ιÌ";s:3:"ὸ";s:4:"ὸ";s:3:"á½¹";s:4:"οÌ";s:3:"ὺ";s:4:"Ï…Ì€";s:3:"á½»";s:4:"Ï…Ì";s:3:"á½¼";s:4:"ὼ";s:3:"á½½";s:4:"ωÌ";s:3:"á¾€";s:6:"ᾀ";s:3:"á¾";s:6:"ᾁ";s:3:"ᾂ";s:8:"ᾂ";s:3:"ᾃ";s:8:"ᾃ";s:3:"ᾄ";s:8:"ἀÌÍ…";s:3:"á¾…";s:8:"ἁÌÍ…";s:3:"ᾆ";s:8:"ᾆ";s:3:"ᾇ";s:8:"ᾇ";s:3:"ᾈ";s:6:"ᾈ";s:3:"ᾉ";s:6:"ᾉ";s:3:"ᾊ";s:8:"ᾊ";s:3:"ᾋ";s:8:"ᾋ";s:3:"ᾌ";s:8:"ἈÌÍ…";s:3:"á¾";s:8:"ἉÌÍ…";s:3:"ᾎ";s:8:"ᾎ";s:3:"á¾";s:8:"ᾏ";s:3:"á¾";s:6:"ᾐ";s:3:"ᾑ";s:6:"ᾑ";s:3:"á¾’";s:8:"ᾒ";s:3:"ᾓ";s:8:"ᾓ";s:3:"á¾”";s:8:"ἠÌÍ…";s:3:"ᾕ";s:8:"ἡÌÍ…";s:3:"á¾–";s:8:"ᾖ";s:3:"á¾—";s:8:"ᾗ";s:3:"ᾘ";s:6:"ᾘ";s:3:"á¾™";s:6:"ᾙ";s:3:"ᾚ";s:8:"ᾚ";s:3:"á¾›";s:8:"ᾛ";s:3:"ᾜ";s:8:"ἨÌÍ…";s:3:"á¾";s:8:"ἩÌÍ…";s:3:"ᾞ";s:8:"ᾞ";s:3:"ᾟ";s:8:"ᾟ";s:3:"á¾ ";s:6:"ᾠ";s:3:"ᾡ";s:6:"ᾡ";s:3:"á¾¢";s:8:"ᾢ";s:3:"á¾£";s:8:"ᾣ";s:3:"ᾤ";s:8:"ὠÌÍ…";s:3:"á¾¥";s:8:"ὡÌÍ…";s:3:"ᾦ";s:8:"ᾦ";s:3:"ᾧ";s:8:"ᾧ";s:3:"ᾨ";s:6:"ᾨ";s:3:"ᾩ";s:6:"ᾩ";s:3:"ᾪ";s:8:"ᾪ";s:3:"ᾫ";s:8:"ᾫ";s:3:"ᾬ";s:8:"ὨÌÍ…";s:3:"á¾­";s:8:"ὩÌÍ…";s:3:"á¾®";s:8:"ᾮ";s:3:"ᾯ";s:8:"ᾯ";s:3:"á¾°";s:4:"ᾰ";s:3:"á¾±";s:4:"ᾱ";s:3:"á¾²";s:6:"ᾲ";s:3:"á¾³";s:4:"ᾳ";s:3:"á¾´";s:6:"αÌÍ…";s:3:"ᾶ";s:4:"ᾶ";s:3:"á¾·";s:6:"ᾷ";s:3:"Ᾰ";s:4:"Ᾰ";s:3:"á¾¹";s:4:"Ᾱ";s:3:"Ὰ";s:4:"Ὰ";s:3:"á¾»";s:4:"ΑÌ";s:3:"á¾¼";s:4:"ᾼ";s:3:"á¾½";s:3:" Ì“";s:3:"á¾¾";s:2:"ι";s:3:"᾿";s:3:" Ì“";s:3:"á¿€";s:3:" Í‚";s:3:"á¿";s:5:" ̈͂";s:3:"á¿‚";s:6:"ῂ";s:3:"ῃ";s:4:"ῃ";s:3:"á¿„";s:6:"ηÌÍ…";s:3:"ῆ";s:4:"ῆ";s:3:"ῇ";s:6:"ῇ";s:3:"Ὲ";s:4:"Ὲ";s:3:"Έ";s:4:"ΕÌ";s:3:"á¿Š";s:4:"Ὴ";s:3:"á¿‹";s:4:"ΗÌ";s:3:"á¿Œ";s:4:"ῌ";s:3:"á¿";s:5:" Ì“Ì€";s:3:"á¿Ž";s:5:" Ì“Ì";s:3:"á¿";s:5:" Ì“Í‚";s:3:"á¿";s:4:"ῐ";s:3:"á¿‘";s:4:"ῑ";s:3:"á¿’";s:6:"ῒ";s:3:"á¿“";s:6:"ϊÌ";s:3:"á¿–";s:4:"ῖ";s:3:"á¿—";s:6:"ῗ";s:3:"Ῐ";s:4:"Ῐ";s:3:"á¿™";s:4:"Ῑ";s:3:"á¿š";s:4:"Ὶ";s:3:"á¿›";s:4:"ΙÌ";s:3:"á¿";s:5:" ̔̀";s:3:"á¿ž";s:5:" Ì”Ì";s:3:"á¿Ÿ";s:5:" ̔͂";s:3:"á¿ ";s:4:"ῠ";s:3:"á¿¡";s:4:"Ï…Ì„";s:3:"á¿¢";s:6:"ῢ";s:3:"á¿£";s:6:"ϋÌ";s:3:"ῤ";s:4:"ÏÌ“";s:3:"á¿¥";s:4:"ÏÌ”";s:3:"ῦ";s:4:"Ï…Í‚";s:3:"ῧ";s:6:"ῧ";s:3:"Ῠ";s:4:"Ῠ";s:3:"á¿©";s:4:"Ῡ";s:3:"Ὺ";s:4:"Ὺ";s:3:"á¿«";s:4:"Î¥Ì";s:3:"Ῥ";s:4:"Ῥ";s:3:"á¿­";s:5:" ̈̀";s:3:"á¿®";s:5:" ̈Ì";s:3:"`";s:1:"`";s:3:"ῲ";s:6:"ῲ";s:3:"ῳ";s:4:"ῳ";s:3:"á¿´";s:6:"ωÌÍ…";s:3:"ῶ";s:4:"ῶ";s:3:"á¿·";s:6:"ῷ";s:3:"Ὸ";s:4:"Ὸ";s:3:"Ό";s:4:"ΟÌ";s:3:"Ὼ";s:4:"Ὼ";s:3:"á¿»";s:4:"ΩÌ";s:3:"ῼ";s:4:"ῼ";s:3:"´";s:3:" Ì";s:3:"῾";s:3:" Ì”";s:3:" ";s:1:" ";s:3:"â€";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:" ";s:1:" ";s:3:"‑";s:3:"â€";s:3:"‗";s:3:" ̳";s:3:"․";s:1:".";s:3:"‥";s:2:"..";s:3:"…";s:3:"...";s:3:" ";s:1:" ";s:3:"″";s:6:"′′";s:3:"‴";s:9:"′′′";s:3:"‶";s:6:"‵‵";s:3:"‷";s:9:"‵‵‵";s:3:"‼";s:2:"!!";s:3:"‾";s:3:" Ì…";s:3:"â‡";s:2:"??";s:3:"âˆ";s:2:"?!";s:3:"â‰";s:2:"!?";s:3:"â—";s:12:"′′′′";s:3:"âŸ";s:1:" ";s:3:"â°";s:1:"0";s:3:"â±";s:1:"i";s:3:"â´";s:1:"4";s:3:"âµ";s:1:"5";s:3:"â¶";s:1:"6";s:3:"â·";s:1:"7";s:3:"â¸";s:1:"8";s:3:"â¹";s:1:"9";s:3:"âº";s:1:"+";s:3:"â»";s:3:"−";s:3:"â¼";s:1:"=";s:3:"â½";s:1:"(";s:3:"â¾";s:1:")";s:3:"â¿";s:1:"n";s:3:"â‚€";s:1:"0";s:3:"â‚";s:1:"1";s:3:"â‚‚";s:1:"2";s:3:"₃";s:1:"3";s:3:"â‚„";s:1:"4";s:3:"â‚…";s:1:"5";s:3:"₆";s:1:"6";s:3:"₇";s:1:"7";s:3:"₈";s:1:"8";s:3:"₉";s:1:"9";s:3:"â‚Š";s:1:"+";s:3:"â‚‹";s:3:"−";s:3:"â‚Œ";s:1:"=";s:3:"â‚";s:1:"(";s:3:"â‚Ž";s:1:")";s:3:"â‚";s:1:"a";s:3:"â‚‘";s:1:"e";s:3:"â‚’";s:1:"o";s:3:"â‚“";s:1:"x";s:3:"â‚”";s:2:"É™";s:3:"â‚•";s:1:"h";s:3:"â‚–";s:1:"k";s:3:"â‚—";s:1:"l";s:3:"ₘ";s:1:"m";s:3:"â‚™";s:1:"n";s:3:"â‚š";s:1:"p";s:3:"â‚›";s:1:"s";s:3:"â‚œ";s:1:"t";s:3:"₨";s:2:"Rs";s:3:"â„€";s:3:"a/c";s:3:"â„";s:3:"a/s";s:3:"â„‚";s:1:"C";s:3:"℃";s:3:"°C";s:3:"â„…";s:3:"c/o";s:3:"℆";s:3:"c/u";s:3:"ℇ";s:2:"Æ";s:3:"℉";s:3:"°F";s:3:"â„Š";s:1:"g";s:3:"â„‹";s:1:"H";s:3:"â„Œ";s:1:"H";s:3:"â„";s:1:"H";s:3:"â„Ž";s:1:"h";s:3:"â„";s:2:"ħ";s:3:"â„";s:1:"I";s:3:"â„‘";s:1:"I";s:3:"â„’";s:1:"L";s:3:"â„“";s:1:"l";s:3:"â„•";s:1:"N";s:3:"â„–";s:2:"No";s:3:"â„™";s:1:"P";s:3:"â„š";s:1:"Q";s:3:"â„›";s:1:"R";s:3:"â„œ";s:1:"R";s:3:"â„";s:1:"R";s:3:"â„ ";s:2:"SM";s:3:"â„¡";s:3:"TEL";s:3:"â„¢";s:2:"TM";s:3:"ℤ";s:1:"Z";s:3:"Ω";s:2:"Ω";s:3:"ℨ";s:1:"Z";s:3:"K";s:1:"K";s:3:"â„«";s:3:"AÌŠ";s:3:"ℬ";s:1:"B";s:3:"â„­";s:1:"C";s:3:"ℯ";s:1:"e";s:3:"â„°";s:1:"E";s:3:"ℱ";s:1:"F";s:3:"ℳ";s:1:"M";s:3:"â„´";s:1:"o";s:3:"ℵ";s:2:"×";s:3:"ℶ";s:2:"ב";s:3:"â„·";s:2:"×’";s:3:"ℸ";s:2:"ד";s:3:"ℹ";s:1:"i";s:3:"â„»";s:3:"FAX";s:3:"ℼ";s:2:"Ï€";s:3:"ℽ";s:2:"γ";s:3:"ℾ";s:2:"Γ";s:3:"â„¿";s:2:"Π";s:3:"â…€";s:3:"∑";s:3:"â……";s:1:"D";s:3:"â…†";s:1:"d";s:3:"â…‡";s:1:"e";s:3:"â…ˆ";s:1:"i";s:3:"â…‰";s:1:"j";s:3:"â…";s:5:"1â„7";s:3:"â…‘";s:5:"1â„9";s:3:"â…’";s:6:"1â„10";s:3:"â…“";s:5:"1â„3";s:3:"â…”";s:5:"2â„3";s:3:"â…•";s:5:"1â„5";s:3:"â…–";s:5:"2â„5";s:3:"â…—";s:5:"3â„5";s:3:"â…˜";s:5:"4â„5";s:3:"â…™";s:5:"1â„6";s:3:"â…š";s:5:"5â„6";s:3:"â…›";s:5:"1â„8";s:3:"â…œ";s:5:"3â„8";s:3:"â…";s:5:"5â„8";s:3:"â…ž";s:5:"7â„8";s:3:"â…Ÿ";s:4:"1â„";s:3:"â… ";s:1:"I";s:3:"â…¡";s:2:"II";s:3:"â…¢";s:3:"III";s:3:"â…£";s:2:"IV";s:3:"â…¤";s:1:"V";s:3:"â…¥";s:2:"VI";s:3:"â…¦";s:3:"VII";s:3:"â…§";s:4:"VIII";s:3:"â…¨";s:2:"IX";s:3:"â…©";s:1:"X";s:3:"â…ª";s:2:"XI";s:3:"â…«";s:3:"XII";s:3:"â…¬";s:1:"L";s:3:"â…­";s:1:"C";s:3:"â…®";s:1:"D";s:3:"â…¯";s:1:"M";s:3:"â…°";s:1:"i";s:3:"â…±";s:2:"ii";s:3:"â…²";s:3:"iii";s:3:"â…³";s:2:"iv";s:3:"â…´";s:1:"v";s:3:"â…µ";s:2:"vi";s:3:"â…¶";s:3:"vii";s:3:"â…·";s:4:"viii";s:3:"â…¸";s:2:"ix";s:3:"â…¹";s:1:"x";s:3:"â…º";s:2:"xi";s:3:"â…»";s:3:"xii";s:3:"â…¼";s:1:"l";s:3:"â…½";s:1:"c";s:3:"â…¾";s:1:"d";s:3:"â…¿";s:1:"m";s:3:"↉";s:5:"0â„3";s:3:"↚";s:5:"â†Ì¸";s:3:"↛";s:5:"↛";s:3:"↮";s:5:"↮";s:3:"â‡";s:5:"â‡Ì¸";s:3:"⇎";s:5:"⇎";s:3:"â‡";s:5:"⇏";s:3:"∄";s:5:"∄";s:3:"∉";s:5:"∉";s:3:"∌";s:5:"∌";s:3:"∤";s:5:"∤";s:3:"∦";s:5:"∦";s:3:"∬";s:6:"∫∫";s:3:"∭";s:9:"∫∫∫";s:3:"∯";s:6:"∮∮";s:3:"∰";s:9:"∮∮∮";s:3:"â‰";s:5:"≁";s:3:"≄";s:5:"≄";s:3:"≇";s:5:"≇";s:3:"≉";s:5:"≉";s:3:"≠";s:3:"≠";s:3:"≢";s:5:"≢";s:3:"≭";s:5:"â‰Ì¸";s:3:"≮";s:3:"≮";s:3:"≯";s:3:"≯";s:3:"≰";s:5:"≰";s:3:"≱";s:5:"≱";s:3:"≴";s:5:"≴";s:3:"≵";s:5:"≵";s:3:"≸";s:5:"≸";s:3:"≹";s:5:"≹";s:3:"⊀";s:5:"⊀";s:3:"âŠ";s:5:"⊁";s:3:"⊄";s:5:"⊄";s:3:"⊅";s:5:"⊅";s:3:"⊈";s:5:"⊈";s:3:"⊉";s:5:"⊉";s:3:"⊬";s:5:"⊬";s:3:"⊭";s:5:"⊭";s:3:"⊮";s:5:"⊮";s:3:"⊯";s:5:"⊯";s:3:"â‹ ";s:5:"⋠";s:3:"â‹¡";s:5:"⋡";s:3:"â‹¢";s:5:"⋢";s:3:"â‹£";s:5:"⋣";s:3:"⋪";s:5:"⋪";s:3:"â‹«";s:5:"⋫";s:3:"⋬";s:5:"⋬";s:3:"â‹­";s:5:"⋭";s:3:"〈";s:3:"〈";s:3:"〉";s:3:"〉";s:3:"â‘ ";s:1:"1";s:3:"â‘¡";s:1:"2";s:3:"â‘¢";s:1:"3";s:3:"â‘£";s:1:"4";s:3:"⑤";s:1:"5";s:3:"â‘¥";s:1:"6";s:3:"⑦";s:1:"7";s:3:"⑧";s:1:"8";s:3:"⑨";s:1:"9";s:3:"â‘©";s:2:"10";s:3:"⑪";s:2:"11";s:3:"â‘«";s:2:"12";s:3:"⑬";s:2:"13";s:3:"â‘­";s:2:"14";s:3:"â‘®";s:2:"15";s:3:"⑯";s:2:"16";s:3:"â‘°";s:2:"17";s:3:"⑱";s:2:"18";s:3:"⑲";s:2:"19";s:3:"⑳";s:2:"20";s:3:"â‘´";s:3:"(1)";s:3:"⑵";s:3:"(2)";s:3:"⑶";s:3:"(3)";s:3:"â‘·";s:3:"(4)";s:3:"⑸";s:3:"(5)";s:3:"⑹";s:3:"(6)";s:3:"⑺";s:3:"(7)";s:3:"â‘»";s:3:"(8)";s:3:"⑼";s:3:"(9)";s:3:"⑽";s:4:"(10)";s:3:"⑾";s:4:"(11)";s:3:"â‘¿";s:4:"(12)";s:3:"â’€";s:4:"(13)";s:3:"â’";s:4:"(14)";s:3:"â’‚";s:4:"(15)";s:3:"â’ƒ";s:4:"(16)";s:3:"â’„";s:4:"(17)";s:3:"â’…";s:4:"(18)";s:3:"â’†";s:4:"(19)";s:3:"â’‡";s:4:"(20)";s:3:"â’ˆ";s:2:"1.";s:3:"â’‰";s:2:"2.";s:3:"â’Š";s:2:"3.";s:3:"â’‹";s:2:"4.";s:3:"â’Œ";s:2:"5.";s:3:"â’";s:2:"6.";s:3:"â’Ž";s:2:"7.";s:3:"â’";s:2:"8.";s:3:"â’";s:2:"9.";s:3:"â’‘";s:3:"10.";s:3:"â’’";s:3:"11.";s:3:"â’“";s:3:"12.";s:3:"â’”";s:3:"13.";s:3:"â’•";s:3:"14.";s:3:"â’–";s:3:"15.";s:3:"â’—";s:3:"16.";s:3:"â’˜";s:3:"17.";s:3:"â’™";s:3:"18.";s:3:"â’š";s:3:"19.";s:3:"â’›";s:3:"20.";s:3:"â’œ";s:3:"(a)";s:3:"â’";s:3:"(b)";s:3:"â’ž";s:3:"(c)";s:3:"â’Ÿ";s:3:"(d)";s:3:"â’ ";s:3:"(e)";s:3:"â’¡";s:3:"(f)";s:3:"â’¢";s:3:"(g)";s:3:"â’£";s:3:"(h)";s:3:"â’¤";s:3:"(i)";s:3:"â’¥";s:3:"(j)";s:3:"â’¦";s:3:"(k)";s:3:"â’§";s:3:"(l)";s:3:"â’¨";s:3:"(m)";s:3:"â’©";s:3:"(n)";s:3:"â’ª";s:3:"(o)";s:3:"â’«";s:3:"(p)";s:3:"â’¬";s:3:"(q)";s:3:"â’­";s:3:"(r)";s:3:"â’®";s:3:"(s)";s:3:"â’¯";s:3:"(t)";s:3:"â’°";s:3:"(u)";s:3:"â’±";s:3:"(v)";s:3:"â’²";s:3:"(w)";s:3:"â’³";s:3:"(x)";s:3:"â’´";s:3:"(y)";s:3:"â’µ";s:3:"(z)";s:3:"â’¶";s:1:"A";s:3:"â’·";s:1:"B";s:3:"â’¸";s:1:"C";s:3:"â’¹";s:1:"D";s:3:"â’º";s:1:"E";s:3:"â’»";s:1:"F";s:3:"â’¼";s:1:"G";s:3:"â’½";s:1:"H";s:3:"â’¾";s:1:"I";s:3:"â’¿";s:1:"J";s:3:"â“€";s:1:"K";s:3:"â“";s:1:"L";s:3:"â“‚";s:1:"M";s:3:"Ⓝ";s:1:"N";s:3:"â“„";s:1:"O";s:3:"â“…";s:1:"P";s:3:"Ⓠ";s:1:"Q";s:3:"Ⓡ";s:1:"R";s:3:"Ⓢ";s:1:"S";s:3:"Ⓣ";s:1:"T";s:3:"â“Š";s:1:"U";s:3:"â“‹";s:1:"V";s:3:"â“Œ";s:1:"W";s:3:"â“";s:1:"X";s:3:"â“Ž";s:1:"Y";s:3:"â“";s:1:"Z";s:3:"â“";s:1:"a";s:3:"â“‘";s:1:"b";s:3:"â“’";s:1:"c";s:3:"â““";s:1:"d";s:3:"â“”";s:1:"e";s:3:"â“•";s:1:"f";s:3:"â“–";s:1:"g";s:3:"â“—";s:1:"h";s:3:"ⓘ";s:1:"i";s:3:"â“™";s:1:"j";s:3:"â“š";s:1:"k";s:3:"â“›";s:1:"l";s:3:"â“œ";s:1:"m";s:3:"â“";s:1:"n";s:3:"â“ž";s:1:"o";s:3:"â“Ÿ";s:1:"p";s:3:"â“ ";s:1:"q";s:3:"â“¡";s:1:"r";s:3:"â“¢";s:1:"s";s:3:"â“£";s:1:"t";s:3:"ⓤ";s:1:"u";s:3:"â“¥";s:1:"v";s:3:"ⓦ";s:1:"w";s:3:"ⓧ";s:1:"x";s:3:"ⓨ";s:1:"y";s:3:"â“©";s:1:"z";s:3:"⓪";s:1:"0";s:3:"⨌";s:12:"∫∫∫∫";s:3:"â©´";s:3:"::=";s:3:"⩵";s:2:"==";s:3:"⩶";s:3:"===";s:3:"â«œ";s:5:"â«Ì¸";s:3:"â±¼";s:1:"j";s:3:"â±½";s:1:"V";s:3:"ⵯ";s:3:"ⵡ";s:3:"⺟";s:3:"æ¯";s:3:"⻳";s:3:"龟";s:3:"â¼€";s:3:"一";s:3:"â¼";s:3:"丨";s:3:"⼂";s:3:"丶";s:3:"⼃";s:3:"丿";s:3:"⼄";s:3:"ä¹™";s:3:"â¼…";s:3:"亅";s:3:"⼆";s:3:"二";s:3:"⼇";s:3:"亠";s:3:"⼈";s:3:"人";s:3:"⼉";s:3:"å„¿";s:3:"⼊";s:3:"å…¥";s:3:"⼋";s:3:"å…«";s:3:"⼌";s:3:"冂";s:3:"â¼";s:3:"冖";s:3:"⼎";s:3:"冫";s:3:"â¼";s:3:"几";s:3:"â¼";s:3:"凵";s:3:"⼑";s:3:"刀";s:3:"â¼’";s:3:"力";s:3:"⼓";s:3:"勹";s:3:"â¼”";s:3:"匕";s:3:"⼕";s:3:"匚";s:3:"â¼–";s:3:"匸";s:3:"â¼—";s:3:"å";s:3:"⼘";s:3:"åœ";s:3:"â¼™";s:3:"å©";s:3:"⼚";s:3:"厂";s:3:"â¼›";s:3:"厶";s:3:"⼜";s:3:"åˆ";s:3:"â¼";s:3:"å£";s:3:"⼞";s:3:"å›—";s:3:"⼟";s:3:"土";s:3:"â¼ ";s:3:"士";s:3:"⼡";s:3:"夂";s:3:"â¼¢";s:3:"夊";s:3:"â¼£";s:3:"夕";s:3:"⼤";s:3:"大";s:3:"â¼¥";s:3:"女";s:3:"⼦";s:3:"å­";s:3:"⼧";s:3:"宀";s:3:"⼨";s:3:"寸";s:3:"⼩";s:3:"å°";s:3:"⼪";s:3:"å°¢";s:3:"⼫";s:3:"å°¸";s:3:"⼬";s:3:"å±®";s:3:"â¼­";s:3:"å±±";s:3:"â¼®";s:3:"å·›";s:3:"⼯";s:3:"å·¥";s:3:"â¼°";s:3:"å·±";s:3:"â¼±";s:3:"å·¾";s:3:"â¼²";s:3:"å¹²";s:3:"â¼³";s:3:"幺";s:3:"â¼´";s:3:"广";s:3:"â¼µ";s:3:"å»´";s:3:"⼶";s:3:"廾";s:3:"â¼·";s:3:"弋";s:3:"⼸";s:3:"弓";s:3:"â¼¹";s:3:"å½";s:3:"⼺";s:3:"彡";s:3:"â¼»";s:3:"å½³";s:3:"â¼¼";s:3:"心";s:3:"â¼½";s:3:"戈";s:3:"â¼¾";s:3:"戶";s:3:"⼿";s:3:"手";s:3:"â½€";s:3:"支";s:3:"â½";s:3:"æ”´";s:3:"⽂";s:3:"æ–‡";s:3:"⽃";s:3:"æ–—";s:3:"⽄";s:3:"æ–¤";s:3:"â½…";s:3:"æ–¹";s:3:"⽆";s:3:"æ— ";s:3:"⽇";s:3:"æ—¥";s:3:"⽈";s:3:"æ›°";s:3:"⽉";s:3:"月";s:3:"⽊";s:3:"木";s:3:"⽋";s:3:"欠";s:3:"⽌";s:3:"æ­¢";s:3:"â½";s:3:"æ­¹";s:3:"⽎";s:3:"殳";s:3:"â½";s:3:"毋";s:3:"â½";s:3:"比";s:3:"⽑";s:3:"毛";s:3:"â½’";s:3:"æ°";s:3:"⽓";s:3:"æ°”";s:3:"â½”";s:3:"æ°´";s:3:"⽕";s:3:"ç«";s:3:"â½–";s:3:"爪";s:3:"â½—";s:3:"父";s:3:"⽘";s:3:"爻";s:3:"â½™";s:3:"爿";s:3:"⽚";s:3:"片";s:3:"â½›";s:3:"牙";s:3:"⽜";s:3:"牛";s:3:"â½";s:3:"犬";s:3:"⽞";s:3:"玄";s:3:"⽟";s:3:"玉";s:3:"â½ ";s:3:"ç“œ";s:3:"⽡";s:3:"瓦";s:3:"â½¢";s:3:"甘";s:3:"â½£";s:3:"生";s:3:"⽤";s:3:"用";s:3:"â½¥";s:3:"ç”°";s:3:"⽦";s:3:"ç–‹";s:3:"⽧";s:3:"ç–’";s:3:"⽨";s:3:"癶";s:3:"⽩";s:3:"白";s:3:"⽪";s:3:"çš®";s:3:"⽫";s:3:"çš¿";s:3:"⽬";s:3:"ç›®";s:3:"â½­";s:3:"矛";s:3:"â½®";s:3:"矢";s:3:"⽯";s:3:"石";s:3:"â½°";s:3:"示";s:3:"â½±";s:3:"禸";s:3:"â½²";s:3:"禾";s:3:"â½³";s:3:"ç©´";s:3:"â½´";s:3:"ç«‹";s:3:"â½µ";s:3:"竹";s:3:"⽶";s:3:"ç±³";s:3:"â½·";s:3:"糸";s:3:"⽸";s:3:"缶";s:3:"â½¹";s:3:"网";s:3:"⽺";s:3:"羊";s:3:"â½»";s:3:"ç¾½";s:3:"â½¼";s:3:"è€";s:3:"â½½";s:3:"而";s:3:"â½¾";s:3:"耒";s:3:"⽿";s:3:"耳";s:3:"â¾€";s:3:"è¿";s:3:"â¾";s:3:"肉";s:3:"⾂";s:3:"臣";s:3:"⾃";s:3:"自";s:3:"⾄";s:3:"至";s:3:"â¾…";s:3:"臼";s:3:"⾆";s:3:"舌";s:3:"⾇";s:3:"舛";s:3:"⾈";s:3:"舟";s:3:"⾉";s:3:"艮";s:3:"⾊";s:3:"色";s:3:"⾋";s:3:"艸";s:3:"⾌";s:3:"è™";s:3:"â¾";s:3:"虫";s:3:"⾎";s:3:"è¡€";s:3:"â¾";s:3:"è¡Œ";s:3:"â¾";s:3:"è¡£";s:3:"⾑";s:3:"襾";s:3:"â¾’";s:3:"見";s:3:"⾓";s:3:"角";s:3:"â¾”";s:3:"言";s:3:"⾕";s:3:"è°·";s:3:"â¾–";s:3:"豆";s:3:"â¾—";s:3:"豕";s:3:"⾘";s:3:"豸";s:3:"â¾™";s:3:"è²";s:3:"⾚";s:3:"赤";s:3:"â¾›";s:3:"èµ°";s:3:"⾜";s:3:"足";s:3:"â¾";s:3:"身";s:3:"⾞";s:3:"車";s:3:"⾟";s:3:"è¾›";s:3:"â¾ ";s:3:"è¾°";s:3:"⾡";s:3:"è¾µ";s:3:"â¾¢";s:3:"é‚‘";s:3:"â¾£";s:3:"é…‰";s:3:"⾤";s:3:"釆";s:3:"â¾¥";s:3:"里";s:3:"⾦";s:3:"金";s:3:"⾧";s:3:"é•·";s:3:"⾨";s:3:"é–€";s:3:"⾩";s:3:"阜";s:3:"⾪";s:3:"隶";s:3:"⾫";s:3:"éš¹";s:3:"⾬";s:3:"雨";s:3:"â¾­";s:3:"é‘";s:3:"â¾®";s:3:"éž";s:3:"⾯";s:3:"é¢";s:3:"â¾°";s:3:"é©";s:3:"â¾±";s:3:"韋";s:3:"â¾²";s:3:"韭";s:3:"â¾³";s:3:"音";s:3:"â¾´";s:3:"é ";s:3:"â¾µ";s:3:"風";s:3:"⾶";s:3:"飛";s:3:"â¾·";s:3:"食";s:3:"⾸";s:3:"首";s:3:"â¾¹";s:3:"香";s:3:"⾺";s:3:"馬";s:3:"â¾»";s:3:"骨";s:3:"â¾¼";s:3:"高";s:3:"â¾½";s:3:"é«Ÿ";s:3:"â¾¾";s:3:"鬥";s:3:"⾿";s:3:"鬯";s:3:"â¿€";s:3:"鬲";s:3:"â¿";s:3:"鬼";s:3:"â¿‚";s:3:"é­š";s:3:"⿃";s:3:"é³¥";s:3:"â¿„";s:3:"é¹µ";s:3:"â¿…";s:3:"鹿";s:3:"⿆";s:3:"麥";s:3:"⿇";s:3:"麻";s:3:"⿈";s:3:"黃";s:3:"⿉";s:3:"é»";s:3:"â¿Š";s:3:"黑";s:3:"â¿‹";s:3:"黹";s:3:"â¿Œ";s:3:"黽";s:3:"â¿";s:3:"鼎";s:3:"â¿Ž";s:3:"鼓";s:3:"â¿";s:3:"é¼ ";s:3:"â¿";s:3:"é¼»";s:3:"â¿‘";s:3:"齊";s:3:"â¿’";s:3:"é½’";s:3:"â¿“";s:3:"é¾";s:3:"â¿”";s:3:"龜";s:3:"â¿•";s:3:"é¾ ";s:3:" ";s:1:" ";s:3:"〶";s:3:"〒";s:3:"〸";s:3:"å";s:3:"〹";s:3:"å„";s:3:"〺";s:3:"å…";s:3:"ãŒ";s:6:"ã‹ã‚™";s:3:"ãŽ";s:6:"ãã‚™";s:3:"ã";s:6:"ãã‚™";s:3:"ã’";s:6:"ã‘ã‚™";s:3:"ã”";s:6:"ã“ã‚™";s:3:"ã–";s:6:"ã•ã‚™";s:3:"ã˜";s:6:"ã—ã‚™";s:3:"ãš";s:6:"ã™ã‚™";s:3:"ãœ";s:6:"ã›ã‚™";s:3:"ãž";s:6:"ãã‚™";s:3:"ã ";s:6:"ãŸã‚™";s:3:"ã¢";s:6:"ã¡ã‚™";s:3:"ã¥";s:6:"ã¤ã‚™";s:3:"ã§";s:6:"ã¦ã‚™";s:3:"ã©";s:6:"ã¨ã‚™";s:3:"ã°";s:6:"ã¯ã‚™";s:3:"ã±";s:6:"ã¯ã‚š";s:3:"ã³";s:6:"ã²ã‚™";s:3:"ã´";s:6:"ã²ã‚š";s:3:"ã¶";s:6:"ãµã‚™";s:3:"ã·";s:6:"ãµã‚š";s:3:"ã¹";s:6:"ã¸ã‚™";s:3:"ãº";s:6:"ã¸ã‚š";s:3:"ã¼";s:6:"ã»ã‚™";s:3:"ã½";s:6:"ã»ã‚š";s:3:"ã‚”";s:6:"ã†ã‚™";s:3:"ã‚›";s:4:" ã‚™";s:3:"ã‚œ";s:4:" ã‚š";s:3:"ã‚ž";s:6:"ã‚ã‚™";s:3:"ã‚Ÿ";s:6:"より";s:3:"ガ";s:6:"ã‚«ã‚™";s:3:"ã‚®";s:6:"ã‚­ã‚™";s:3:"ã‚°";s:6:"グ";s:3:"ゲ";s:6:"ゲ";s:3:"ã‚´";s:6:"ゴ";s:3:"ザ";s:6:"ザ";s:3:"ジ";s:6:"ã‚·ã‚™";s:3:"ズ";s:6:"ズ";s:3:"ゼ";s:6:"ゼ";s:3:"ゾ";s:6:"ゾ";s:3:"ダ";s:6:"ã‚¿ã‚™";s:3:"ヂ";s:6:"ãƒã‚™";s:3:"ヅ";s:6:"ヅ";s:3:"デ";s:6:"デ";s:3:"ド";s:6:"ド";s:3:"ãƒ";s:6:"ãƒã‚™";s:3:"パ";s:6:"ãƒã‚š";s:3:"ビ";s:6:"ビ";s:3:"ピ";s:6:"ピ";s:3:"ブ";s:6:"ブ";s:3:"プ";s:6:"プ";s:3:"ベ";s:6:"ベ";s:3:"ペ";s:6:"ペ";s:3:"ボ";s:6:"ボ";s:3:"ãƒ";s:6:"ポ";s:3:"ヴ";s:6:"ヴ";s:3:"ヷ";s:6:"ヷ";s:3:"ヸ";s:6:"ヸ";s:3:"ヹ";s:6:"ヹ";s:3:"ヺ";s:6:"ヺ";s:3:"ヾ";s:6:"ヾ";s:3:"ヿ";s:6:"コト";s:3:"ㄱ";s:3:"á„€";s:3:"ㄲ";s:3:"á„";s:3:"ㄳ";s:3:"ᆪ";s:3:"ã„´";s:3:"á„‚";s:3:"ㄵ";s:3:"ᆬ";s:3:"ㄶ";s:3:"ᆭ";s:3:"ã„·";s:3:"ᄃ";s:3:"ㄸ";s:3:"á„„";s:3:"ㄹ";s:3:"á„…";s:3:"ㄺ";s:3:"ᆰ";s:3:"ã„»";s:3:"ᆱ";s:3:"ㄼ";s:3:"ᆲ";s:3:"ㄽ";s:3:"ᆳ";s:3:"ㄾ";s:3:"ᆴ";s:3:"ã„¿";s:3:"ᆵ";s:3:"ã…€";s:3:"á„š";s:3:"ã…";s:3:"ᄆ";s:3:"ã…‚";s:3:"ᄇ";s:3:"ã…ƒ";s:3:"ᄈ";s:3:"ã…„";s:3:"á„¡";s:3:"ã……";s:3:"ᄉ";s:3:"ã…†";s:3:"á„Š";s:3:"ã…‡";s:3:"á„‹";s:3:"ã…ˆ";s:3:"á„Œ";s:3:"ã…‰";s:3:"á„";s:3:"ã…Š";s:3:"á„Ž";s:3:"ã…‹";s:3:"á„";s:3:"ã…Œ";s:3:"á„";s:3:"ã…";s:3:"á„‘";s:3:"ã…Ž";s:3:"á„’";s:3:"ã…";s:3:"á…¡";s:3:"ã…";s:3:"á…¢";s:3:"ã…‘";s:3:"á…£";s:3:"ã…’";s:3:"á…¤";s:3:"ã…“";s:3:"á…¥";s:3:"ã…”";s:3:"á…¦";s:3:"ã…•";s:3:"á…§";s:3:"ã…–";s:3:"á…¨";s:3:"ã…—";s:3:"á…©";s:3:"ã…˜";s:3:"á…ª";s:3:"ã…™";s:3:"á…«";s:3:"ã…š";s:3:"á…¬";s:3:"ã…›";s:3:"á…­";s:3:"ã…œ";s:3:"á…®";s:3:"ã…";s:3:"á…¯";s:3:"ã…ž";s:3:"á…°";s:3:"ã…Ÿ";s:3:"á…±";s:3:"ã… ";s:3:"á…²";s:3:"ã…¡";s:3:"á…³";s:3:"ã…¢";s:3:"á…´";s:3:"ã…£";s:3:"á…µ";s:3:"ã…¤";s:3:"á… ";s:3:"ã…¥";s:3:"á„”";s:3:"ã…¦";s:3:"á„•";s:3:"ã…§";s:3:"ᇇ";s:3:"ã…¨";s:3:"ᇈ";s:3:"ã…©";s:3:"ᇌ";s:3:"ã…ª";s:3:"ᇎ";s:3:"ã…«";s:3:"ᇓ";s:3:"ã…¬";s:3:"ᇗ";s:3:"ã…­";s:3:"ᇙ";s:3:"ã…®";s:3:"á„œ";s:3:"ã…¯";s:3:"á‡";s:3:"ã…°";s:3:"ᇟ";s:3:"ã…±";s:3:"á„";s:3:"ã…²";s:3:"á„ž";s:3:"ã…³";s:3:"á„ ";s:3:"ã…´";s:3:"á„¢";s:3:"ã…µ";s:3:"á„£";s:3:"ã…¶";s:3:"ᄧ";s:3:"ã…·";s:3:"á„©";s:3:"ã…¸";s:3:"á„«";s:3:"ã…¹";s:3:"ᄬ";s:3:"ã…º";s:3:"á„­";s:3:"ã…»";s:3:"á„®";s:3:"ã…¼";s:3:"ᄯ";s:3:"ã…½";s:3:"ᄲ";s:3:"ã…¾";s:3:"ᄶ";s:3:"ã…¿";s:3:"á…€";s:3:"ㆀ";s:3:"á…‡";s:3:"ã†";s:3:"á…Œ";s:3:"ㆂ";s:3:"ᇱ";s:3:"ㆃ";s:3:"ᇲ";s:3:"ㆄ";s:3:"á…—";s:3:"ㆅ";s:3:"á…˜";s:3:"ㆆ";s:3:"á…™";s:3:"ㆇ";s:3:"ᆄ";s:3:"ㆈ";s:3:"ᆅ";s:3:"ㆉ";s:3:"ᆈ";s:3:"ㆊ";s:3:"ᆑ";s:3:"ㆋ";s:3:"ᆒ";s:3:"ㆌ";s:3:"ᆔ";s:3:"ã†";s:3:"ᆞ";s:3:"ㆎ";s:3:"ᆡ";s:3:"㆒";s:3:"一";s:3:"㆓";s:3:"二";s:3:"㆔";s:3:"三";s:3:"㆕";s:3:"å››";s:3:"㆖";s:3:"上";s:3:"㆗";s:3:"中";s:3:"㆘";s:3:"下";s:3:"㆙";s:3:"甲";s:3:"㆚";s:3:"ä¹™";s:3:"㆛";s:3:"丙";s:3:"㆜";s:3:"ä¸";s:3:"ã†";s:3:"天";s:3:"㆞";s:3:"地";s:3:"㆟";s:3:"人";s:3:"㈀";s:5:"(á„€)";s:3:"ãˆ";s:5:"(á„‚)";s:3:"㈂";s:5:"(ᄃ)";s:3:"㈃";s:5:"(á„…)";s:3:"㈄";s:5:"(ᄆ)";s:3:"㈅";s:5:"(ᄇ)";s:3:"㈆";s:5:"(ᄉ)";s:3:"㈇";s:5:"(á„‹)";s:3:"㈈";s:5:"(á„Œ)";s:3:"㈉";s:5:"(á„Ž)";s:3:"㈊";s:5:"(á„)";s:3:"㈋";s:5:"(á„)";s:3:"㈌";s:5:"(á„‘)";s:3:"ãˆ";s:5:"(á„’)";s:3:"㈎";s:8:"(가)";s:3:"ãˆ";s:8:"(á„‚á…¡)";s:3:"ãˆ";s:8:"(다)";s:3:"㈑";s:8:"(á„…á…¡)";s:3:"㈒";s:8:"(마)";s:3:"㈓";s:8:"(바)";s:3:"㈔";s:8:"(사)";s:3:"㈕";s:8:"(á„‹á…¡)";s:3:"㈖";s:8:"(자)";s:3:"㈗";s:8:"(á„Žá…¡)";s:3:"㈘";s:8:"(á„á…¡)";s:3:"㈙";s:8:"(á„á…¡)";s:3:"㈚";s:8:"(á„‘á…¡)";s:3:"㈛";s:8:"(á„’á…¡)";s:3:"㈜";s:8:"(주)";s:3:"ãˆ";s:17:"(오전)";s:3:"㈞";s:14:"(á„‹á…©á„’á…®)";s:3:"㈠";s:5:"(一)";s:3:"㈡";s:5:"(二)";s:3:"㈢";s:5:"(三)";s:3:"㈣";s:5:"(å››)";s:3:"㈤";s:5:"(五)";s:3:"㈥";s:5:"(å…­)";s:3:"㈦";s:5:"(七)";s:3:"㈧";s:5:"(å…«)";s:3:"㈨";s:5:"(ä¹)";s:3:"㈩";s:5:"(å)";s:3:"㈪";s:5:"(月)";s:3:"㈫";s:5:"(ç«)";s:3:"㈬";s:5:"(æ°´)";s:3:"㈭";s:5:"(木)";s:3:"㈮";s:5:"(金)";s:3:"㈯";s:5:"(土)";s:3:"㈰";s:5:"(æ—¥)";s:3:"㈱";s:5:"(æ ª)";s:3:"㈲";s:5:"(有)";s:3:"㈳";s:5:"(社)";s:3:"㈴";s:5:"(å)";s:3:"㈵";s:5:"(特)";s:3:"㈶";s:5:"(財)";s:3:"㈷";s:5:"(ç¥)";s:3:"㈸";s:5:"(労)";s:3:"㈹";s:5:"(代)";s:3:"㈺";s:5:"(呼)";s:3:"㈻";s:5:"(å­¦)";s:3:"㈼";s:5:"(監)";s:3:"㈽";s:5:"(ä¼)";s:3:"㈾";s:5:"(資)";s:3:"㈿";s:5:"(å”)";s:3:"㉀";s:5:"(祭)";s:3:"ã‰";s:5:"(休)";s:3:"㉂";s:5:"(自)";s:3:"㉃";s:5:"(至)";s:3:"㉄";s:3:"å•";s:3:"㉅";s:3:"å¹¼";s:3:"㉆";s:3:"æ–‡";s:3:"㉇";s:3:"ç®";s:3:"ã‰";s:3:"PTE";s:3:"㉑";s:2:"21";s:3:"㉒";s:2:"22";s:3:"㉓";s:2:"23";s:3:"㉔";s:2:"24";s:3:"㉕";s:2:"25";s:3:"㉖";s:2:"26";s:3:"㉗";s:2:"27";s:3:"㉘";s:2:"28";s:3:"㉙";s:2:"29";s:3:"㉚";s:2:"30";s:3:"㉛";s:2:"31";s:3:"㉜";s:2:"32";s:3:"ã‰";s:2:"33";s:3:"㉞";s:2:"34";s:3:"㉟";s:2:"35";s:3:"㉠";s:3:"á„€";s:3:"㉡";s:3:"á„‚";s:3:"㉢";s:3:"ᄃ";s:3:"㉣";s:3:"á„…";s:3:"㉤";s:3:"ᄆ";s:3:"㉥";s:3:"ᄇ";s:3:"㉦";s:3:"ᄉ";s:3:"㉧";s:3:"á„‹";s:3:"㉨";s:3:"á„Œ";s:3:"㉩";s:3:"á„Ž";s:3:"㉪";s:3:"á„";s:3:"㉫";s:3:"á„";s:3:"㉬";s:3:"á„‘";s:3:"㉭";s:3:"á„’";s:3:"㉮";s:6:"가";s:3:"㉯";s:6:"á„‚á…¡";s:3:"㉰";s:6:"다";s:3:"㉱";s:6:"á„…á…¡";s:3:"㉲";s:6:"마";s:3:"㉳";s:6:"바";s:3:"㉴";s:6:"사";s:3:"㉵";s:6:"á„‹á…¡";s:3:"㉶";s:6:"자";s:3:"㉷";s:6:"á„Žá…¡";s:3:"㉸";s:6:"á„á…¡";s:3:"㉹";s:6:"á„á…¡";s:3:"㉺";s:6:"á„‘á…¡";s:3:"㉻";s:6:"á„’á…¡";s:3:"㉼";s:15:"참고";s:3:"㉽";s:12:"주의";s:3:"㉾";s:6:"á„‹á…®";s:3:"㊀";s:3:"一";s:3:"ãŠ";s:3:"二";s:3:"㊂";s:3:"三";s:3:"㊃";s:3:"å››";s:3:"㊄";s:3:"五";s:3:"㊅";s:3:"å…­";s:3:"㊆";s:3:"七";s:3:"㊇";s:3:"å…«";s:3:"㊈";s:3:"ä¹";s:3:"㊉";s:3:"å";s:3:"㊊";s:3:"月";s:3:"㊋";s:3:"ç«";s:3:"㊌";s:3:"æ°´";s:3:"ãŠ";s:3:"木";s:3:"㊎";s:3:"金";s:3:"ãŠ";s:3:"土";s:3:"ãŠ";s:3:"æ—¥";s:3:"㊑";s:3:"æ ª";s:3:"㊒";s:3:"有";s:3:"㊓";s:3:"社";s:3:"㊔";s:3:"å";s:3:"㊕";s:3:"特";s:3:"㊖";s:3:"財";s:3:"㊗";s:3:"ç¥";s:3:"㊘";s:3:"労";s:3:"㊙";s:3:"秘";s:3:"㊚";s:3:"ç”·";s:3:"㊛";s:3:"女";s:3:"㊜";s:3:"é©";s:3:"ãŠ";s:3:"優";s:3:"㊞";s:3:"å°";s:3:"㊟";s:3:"注";s:3:"㊠";s:3:"é …";s:3:"㊡";s:3:"休";s:3:"㊢";s:3:"写";s:3:"㊣";s:3:"æ­£";s:3:"㊤";s:3:"上";s:3:"㊥";s:3:"中";s:3:"㊦";s:3:"下";s:3:"㊧";s:3:"å·¦";s:3:"㊨";s:3:"å³";s:3:"㊩";s:3:"医";s:3:"㊪";s:3:"å®—";s:3:"㊫";s:3:"å­¦";s:3:"㊬";s:3:"監";s:3:"㊭";s:3:"ä¼";s:3:"㊮";s:3:"資";s:3:"㊯";s:3:"å”";s:3:"㊰";s:3:"夜";s:3:"㊱";s:2:"36";s:3:"㊲";s:2:"37";s:3:"㊳";s:2:"38";s:3:"㊴";s:2:"39";s:3:"㊵";s:2:"40";s:3:"㊶";s:2:"41";s:3:"㊷";s:2:"42";s:3:"㊸";s:2:"43";s:3:"㊹";s:2:"44";s:3:"㊺";s:2:"45";s:3:"㊻";s:2:"46";s:3:"㊼";s:2:"47";s:3:"㊽";s:2:"48";s:3:"㊾";s:2:"49";s:3:"㊿";s:2:"50";s:3:"ã‹€";s:4:"1月";s:3:"ã‹";s:4:"2月";s:3:"ã‹‚";s:4:"3月";s:3:"㋃";s:4:"4月";s:3:"ã‹„";s:4:"5月";s:3:"ã‹…";s:4:"6月";s:3:"㋆";s:4:"7月";s:3:"㋇";s:4:"8月";s:3:"㋈";s:4:"9月";s:3:"㋉";s:5:"10月";s:3:"ã‹Š";s:5:"11月";s:3:"ã‹‹";s:5:"12月";s:3:"ã‹Œ";s:2:"Hg";s:3:"ã‹";s:3:"erg";s:3:"ã‹Ž";s:2:"eV";s:3:"ã‹";s:3:"LTD";s:3:"ã‹";s:3:"ã‚¢";s:3:"ã‹‘";s:3:"イ";s:3:"ã‹’";s:3:"ウ";s:3:"ã‹“";s:3:"エ";s:3:"ã‹”";s:3:"オ";s:3:"ã‹•";s:3:"ã‚«";s:3:"ã‹–";s:3:"ã‚­";s:3:"ã‹—";s:3:"ク";s:3:"㋘";s:3:"ケ";s:3:"ã‹™";s:3:"コ";s:3:"ã‹š";s:3:"サ";s:3:"ã‹›";s:3:"ã‚·";s:3:"ã‹œ";s:3:"ス";s:3:"ã‹";s:3:"ã‚»";s:3:"ã‹ž";s:3:"ソ";s:3:"ã‹Ÿ";s:3:"ã‚¿";s:3:"ã‹ ";s:3:"ãƒ";s:3:"ã‹¡";s:3:"ツ";s:3:"ã‹¢";s:3:"テ";s:3:"ã‹£";s:3:"ト";s:3:"㋤";s:3:"ナ";s:3:"ã‹¥";s:3:"ニ";s:3:"㋦";s:3:"ヌ";s:3:"㋧";s:3:"ãƒ";s:3:"㋨";s:3:"ノ";s:3:"ã‹©";s:3:"ãƒ";s:3:"㋪";s:3:"ヒ";s:3:"ã‹«";s:3:"フ";s:3:"㋬";s:3:"ヘ";s:3:"ã‹­";s:3:"ホ";s:3:"ã‹®";s:3:"マ";s:3:"㋯";s:3:"ミ";s:3:"ã‹°";s:3:"ム";s:3:"㋱";s:3:"メ";s:3:"㋲";s:3:"モ";s:3:"㋳";s:3:"ヤ";s:3:"ã‹´";s:3:"ユ";s:3:"㋵";s:3:"ヨ";s:3:"㋶";s:3:"ラ";s:3:"ã‹·";s:3:"リ";s:3:"㋸";s:3:"ル";s:3:"㋹";s:3:"レ";s:3:"㋺";s:3:"ロ";s:3:"ã‹»";s:3:"ワ";s:3:"㋼";s:3:"ヰ";s:3:"㋽";s:3:"ヱ";s:3:"㋾";s:3:"ヲ";s:3:"㌀";s:15:"ã‚¢ãƒã‚šãƒ¼ãƒˆ";s:3:"ãŒ";s:12:"アルファ";s:3:"㌂";s:15:"アンペア";s:3:"㌃";s:9:"アール";s:3:"㌄";s:15:"イニング";s:3:"㌅";s:9:"インãƒ";s:3:"㌆";s:9:"ウォン";s:3:"㌇";s:18:"エスクード";s:3:"㌈";s:12:"エーカー";s:3:"㌉";s:9:"オンス";s:3:"㌊";s:9:"オーム";s:3:"㌋";s:9:"カイリ";s:3:"㌌";s:12:"カラット";s:3:"ãŒ";s:12:"カロリー";s:3:"㌎";s:12:"ガロン";s:3:"ãŒ";s:12:"ガンマ";s:3:"ãŒ";s:12:"ギガ";s:3:"㌑";s:12:"ギニー";s:3:"㌒";s:12:"キュリー";s:3:"㌓";s:18:"ギルダー";s:3:"㌔";s:6:"キロ";s:3:"㌕";s:18:"キログラム";s:3:"㌖";s:18:"キロメートル";s:3:"㌗";s:15:"キロワット";s:3:"㌘";s:12:"グラム";s:3:"㌙";s:18:"グラムトン";s:3:"㌚";s:18:"クルゼイロ";s:3:"㌛";s:12:"クローãƒ";s:3:"㌜";s:9:"ケース";s:3:"ãŒ";s:9:"コルナ";s:3:"㌞";s:12:"コーポ";s:3:"㌟";s:12:"サイクル";s:3:"㌠";s:15:"サンãƒãƒ¼ãƒ ";s:3:"㌡";s:15:"シリング";s:3:"㌢";s:9:"センãƒ";s:3:"㌣";s:9:"セント";s:3:"㌤";s:12:"ダース";s:3:"㌥";s:9:"デシ";s:3:"㌦";s:9:"ドル";s:3:"㌧";s:6:"トン";s:3:"㌨";s:6:"ナノ";s:3:"㌩";s:9:"ノット";s:3:"㌪";s:9:"ãƒã‚¤ãƒ„";s:3:"㌫";s:18:"ãƒã‚šãƒ¼ã‚»ãƒ³ãƒˆ";s:3:"㌬";s:12:"ãƒã‚šãƒ¼ãƒ„";s:3:"㌭";s:15:"ãƒã‚™ãƒ¼ãƒ¬ãƒ«";s:3:"㌮";s:18:"ピアストル";s:3:"㌯";s:12:"ピクル";s:3:"㌰";s:9:"ピコ";s:3:"㌱";s:9:"ビル";s:3:"㌲";s:18:"ファラッド";s:3:"㌳";s:12:"フィート";s:3:"㌴";s:18:"ブッシェル";s:3:"㌵";s:9:"フラン";s:3:"㌶";s:15:"ヘクタール";s:3:"㌷";s:9:"ペソ";s:3:"㌸";s:12:"ペニヒ";s:3:"㌹";s:9:"ヘルツ";s:3:"㌺";s:12:"ペンス";s:3:"㌻";s:15:"ページ";s:3:"㌼";s:12:"ベータ";s:3:"㌽";s:15:"ポイント";s:3:"㌾";s:12:"ボルト";s:3:"㌿";s:6:"ホン";s:3:"ã€";s:15:"ポンド";s:3:"ã";s:9:"ホール";s:3:"ã‚";s:9:"ホーン";s:3:"ãƒ";s:12:"マイクロ";s:3:"ã„";s:9:"マイル";s:3:"ã…";s:9:"マッãƒ";s:3:"ã†";s:9:"マルク";s:3:"ã‡";s:15:"マンション";s:3:"ãˆ";s:12:"ミクロン";s:3:"ã‰";s:6:"ミリ";s:3:"ãŠ";s:18:"ミリãƒã‚™ãƒ¼ãƒ«";s:3:"ã‹";s:9:"メガ";s:3:"ãŒ";s:15:"メガトン";s:3:"ã";s:12:"メートル";s:3:"ãŽ";s:12:"ヤード";s:3:"ã";s:9:"ヤール";s:3:"ã";s:9:"ユアン";s:3:"ã‘";s:12:"リットル";s:3:"ã’";s:6:"リラ";s:3:"ã“";s:12:"ルピー";s:3:"ã”";s:15:"ルーブル";s:3:"ã•";s:6:"レム";s:3:"ã–";s:18:"レントゲン";s:3:"ã—";s:9:"ワット";s:3:"ã˜";s:4:"0点";s:3:"ã™";s:4:"1点";s:3:"ãš";s:4:"2点";s:3:"ã›";s:4:"3点";s:3:"ãœ";s:4:"4点";s:3:"ã";s:4:"5点";s:3:"ãž";s:4:"6点";s:3:"ãŸ";s:4:"7点";s:3:"ã ";s:4:"8点";s:3:"ã¡";s:4:"9点";s:3:"ã¢";s:5:"10点";s:3:"ã£";s:5:"11点";s:3:"ã¤";s:5:"12点";s:3:"ã¥";s:5:"13点";s:3:"ã¦";s:5:"14点";s:3:"ã§";s:5:"15点";s:3:"ã¨";s:5:"16点";s:3:"ã©";s:5:"17点";s:3:"ãª";s:5:"18点";s:3:"ã«";s:5:"19点";s:3:"ã¬";s:5:"20点";s:3:"ã­";s:5:"21点";s:3:"ã®";s:5:"22点";s:3:"ã¯";s:5:"23点";s:3:"ã°";s:5:"24点";s:3:"ã±";s:3:"hPa";s:3:"ã²";s:2:"da";s:3:"ã³";s:2:"AU";s:3:"ã´";s:3:"bar";s:3:"ãµ";s:2:"oV";s:3:"ã¶";s:2:"pc";s:3:"ã·";s:2:"dm";s:3:"ã¸";s:3:"dm2";s:3:"ã¹";s:3:"dm3";s:3:"ãº";s:2:"IU";s:3:"ã»";s:6:"å¹³æˆ";s:3:"ã¼";s:6:"昭和";s:3:"ã½";s:6:"大正";s:3:"ã¾";s:6:"明治";s:3:"ã¿";s:12:"æ ªå¼ä¼šç¤¾";s:3:"㎀";s:2:"pA";s:3:"ãŽ";s:2:"nA";s:3:"㎂";s:3:"μA";s:3:"㎃";s:2:"mA";s:3:"㎄";s:2:"kA";s:3:"㎅";s:2:"KB";s:3:"㎆";s:2:"MB";s:3:"㎇";s:2:"GB";s:3:"㎈";s:3:"cal";s:3:"㎉";s:4:"kcal";s:3:"㎊";s:2:"pF";s:3:"㎋";s:2:"nF";s:3:"㎌";s:3:"μF";s:3:"ãŽ";s:3:"μg";s:3:"㎎";s:2:"mg";s:3:"ãŽ";s:2:"kg";s:3:"ãŽ";s:2:"Hz";s:3:"㎑";s:3:"kHz";s:3:"㎒";s:3:"MHz";s:3:"㎓";s:3:"GHz";s:3:"㎔";s:3:"THz";s:3:"㎕";s:3:"μl";s:3:"㎖";s:2:"ml";s:3:"㎗";s:2:"dl";s:3:"㎘";s:2:"kl";s:3:"㎙";s:2:"fm";s:3:"㎚";s:2:"nm";s:3:"㎛";s:3:"μm";s:3:"㎜";s:2:"mm";s:3:"ãŽ";s:2:"cm";s:3:"㎞";s:2:"km";s:3:"㎟";s:3:"mm2";s:3:"㎠";s:3:"cm2";s:3:"㎡";s:2:"m2";s:3:"㎢";s:3:"km2";s:3:"㎣";s:3:"mm3";s:3:"㎤";s:3:"cm3";s:3:"㎥";s:2:"m3";s:3:"㎦";s:3:"km3";s:3:"㎧";s:5:"m∕s";s:3:"㎨";s:6:"m∕s2";s:3:"㎩";s:2:"Pa";s:3:"㎪";s:3:"kPa";s:3:"㎫";s:3:"MPa";s:3:"㎬";s:3:"GPa";s:3:"㎭";s:3:"rad";s:3:"㎮";s:7:"rad∕s";s:3:"㎯";s:8:"rad∕s2";s:3:"㎰";s:2:"ps";s:3:"㎱";s:2:"ns";s:3:"㎲";s:3:"μs";s:3:"㎳";s:2:"ms";s:3:"㎴";s:2:"pV";s:3:"㎵";s:2:"nV";s:3:"㎶";s:3:"μV";s:3:"㎷";s:2:"mV";s:3:"㎸";s:2:"kV";s:3:"㎹";s:2:"MV";s:3:"㎺";s:2:"pW";s:3:"㎻";s:2:"nW";s:3:"㎼";s:3:"μW";s:3:"㎽";s:2:"mW";s:3:"㎾";s:2:"kW";s:3:"㎿";s:2:"MW";s:3:"ã€";s:3:"kΩ";s:3:"ã";s:3:"MΩ";s:3:"ã‚";s:4:"a.m.";s:3:"ãƒ";s:2:"Bq";s:3:"ã„";s:2:"cc";s:3:"ã…";s:2:"cd";s:3:"ã†";s:6:"C∕kg";s:3:"ã‡";s:3:"Co.";s:3:"ãˆ";s:2:"dB";s:3:"ã‰";s:2:"Gy";s:3:"ãŠ";s:2:"ha";s:3:"ã‹";s:2:"HP";s:3:"ãŒ";s:2:"in";s:3:"ã";s:2:"KK";s:3:"ãŽ";s:2:"KM";s:3:"ã";s:2:"kt";s:3:"ã";s:2:"lm";s:3:"ã‘";s:2:"ln";s:3:"ã’";s:3:"log";s:3:"ã“";s:2:"lx";s:3:"ã”";s:2:"mb";s:3:"ã•";s:3:"mil";s:3:"ã–";s:3:"mol";s:3:"ã—";s:2:"PH";s:3:"ã˜";s:4:"p.m.";s:3:"ã™";s:3:"PPM";s:3:"ãš";s:2:"PR";s:3:"ã›";s:2:"sr";s:3:"ãœ";s:2:"Sv";s:3:"ã";s:2:"Wb";s:3:"ãž";s:5:"V∕m";s:3:"ãŸ";s:5:"A∕m";s:3:"ã ";s:4:"1æ—¥";s:3:"ã¡";s:4:"2æ—¥";s:3:"ã¢";s:4:"3æ—¥";s:3:"ã£";s:4:"4æ—¥";s:3:"ã¤";s:4:"5æ—¥";s:3:"ã¥";s:4:"6æ—¥";s:3:"ã¦";s:4:"7æ—¥";s:3:"ã§";s:4:"8æ—¥";s:3:"ã¨";s:4:"9æ—¥";s:3:"ã©";s:5:"10æ—¥";s:3:"ãª";s:5:"11æ—¥";s:3:"ã«";s:5:"12æ—¥";s:3:"ã¬";s:5:"13æ—¥";s:3:"ã­";s:5:"14æ—¥";s:3:"ã®";s:5:"15æ—¥";s:3:"ã¯";s:5:"16æ—¥";s:3:"ã°";s:5:"17æ—¥";s:3:"ã±";s:5:"18æ—¥";s:3:"ã²";s:5:"19æ—¥";s:3:"ã³";s:5:"20æ—¥";s:3:"ã´";s:5:"21æ—¥";s:3:"ãµ";s:5:"22æ—¥";s:3:"ã¶";s:5:"23æ—¥";s:3:"ã·";s:5:"24æ—¥";s:3:"ã¸";s:5:"25æ—¥";s:3:"ã¹";s:5:"26æ—¥";s:3:"ãº";s:5:"27æ—¥";s:3:"ã»";s:5:"28æ—¥";s:3:"ã¼";s:5:"29æ—¥";s:3:"ã½";s:5:"30æ—¥";s:3:"ã¾";s:5:"31æ—¥";s:3:"ã¿";s:3:"gal";s:3:"ê°";s:3:"ê¯";s:3:"豈";s:3:"豈";s:3:"ï¤";s:3:"æ›´";s:3:"車";s:3:"車";s:3:"賈";s:3:"賈";s:3:"滑";s:3:"滑";s:3:"串";s:3:"串";s:3:"句";s:3:"å¥";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"龜";s:3:"契";s:3:"契";s:3:"金";s:3:"金";s:3:"喇";s:3:"å–‡";s:3:"奈";s:3:"奈";s:3:"ï¤";s:3:"懶";s:3:"癩";s:3:"癩";s:3:"ï¤";s:3:"ç¾…";s:3:"ï¤";s:3:"蘿";s:3:"螺";s:3:"螺";s:3:"裸";s:3:"裸";s:3:"邏";s:3:"é‚";s:3:"樂";s:3:"樂";s:3:"洛";s:3:"æ´›";s:3:"烙";s:3:"烙";s:3:"珞";s:3:"çž";s:3:"落";s:3:"è½";s:3:"酪";s:3:"é…ª";s:3:"駱";s:3:"駱";s:3:"亂";s:3:"亂";s:3:"卵";s:3:"åµ";s:3:"ï¤";s:3:"欄";s:3:"爛";s:3:"爛";s:3:"蘭";s:3:"蘭";s:3:"鸞";s:3:"鸞";s:3:"嵐";s:3:"åµ";s:3:"濫";s:3:"æ¿«";s:3:"藍";s:3:"è—";s:3:"襤";s:3:"襤";s:3:"拉";s:3:"拉";s:3:"臘";s:3:"臘";s:3:"蠟";s:3:"è Ÿ";s:3:"廊";s:3:"廊";s:3:"朗";s:3:"朗";s:3:"浪";s:3:"浪";s:3:"狼";s:3:"狼";s:3:"郎";s:3:"郎";s:3:"來";s:3:"來";s:3:"冷";s:3:"冷";s:3:"勞";s:3:"å‹ž";s:3:"擄";s:3:"æ“„";s:3:"櫓";s:3:"æ«“";s:3:"爐";s:3:"çˆ";s:3:"盧";s:3:"盧";s:3:"老";s:3:"è€";s:3:"蘆";s:3:"蘆";s:3:"虜";s:3:"虜";s:3:"路";s:3:"è·¯";s:3:"露";s:3:"露";s:3:"魯";s:3:"é­¯";s:3:"鷺";s:3:"é·º";s:3:"碌";s:3:"碌";s:3:"祿";s:3:"祿";s:3:"綠";s:3:"綠";s:3:"菉";s:3:"è‰";s:3:"錄";s:3:"錄";s:3:"鹿";s:3:"鹿";s:3:"ï¥";s:3:"è«–";s:3:"壟";s:3:"壟";s:3:"弄";s:3:"弄";s:3:"籠";s:3:"ç± ";s:3:"聾";s:3:"è¾";s:3:"牢";s:3:"牢";s:3:"磊";s:3:"磊";s:3:"賂";s:3:"賂";s:3:"雷";s:3:"é›·";s:3:"壘";s:3:"壘";s:3:"屢";s:3:"å±¢";s:3:"樓";s:3:"樓";s:3:"ï¥";s:3:"æ·š";s:3:"漏";s:3:"æ¼";s:3:"ï¥";s:3:"ç´¯";s:3:"ï¥";s:3:"縷";s:3:"陋";s:3:"陋";s:3:"勒";s:3:"å‹’";s:3:"肋";s:3:"è‚‹";s:3:"凜";s:3:"凜";s:3:"凌";s:3:"凌";s:3:"稜";s:3:"稜";s:3:"綾";s:3:"綾";s:3:"菱";s:3:"è±";s:3:"陵";s:3:"陵";s:3:"讀";s:3:"讀";s:3:"拏";s:3:"æ‹";s:3:"樂";s:3:"樂";s:3:"ï¥";s:3:"諾";s:3:"丹";s:3:"丹";s:3:"寧";s:3:"寧";s:3:"怒";s:3:"怒";s:3:"率";s:3:"率";s:3:"異";s:3:"ç•°";s:3:"北";s:3:"北";s:3:"磻";s:3:"磻";s:3:"便";s:3:"便";s:3:"復";s:3:"復";s:3:"不";s:3:"ä¸";s:3:"泌";s:3:"泌";s:3:"數";s:3:"數";s:3:"索";s:3:"ç´¢";s:3:"參";s:3:"åƒ";s:3:"塞";s:3:"å¡ž";s:3:"省";s:3:"çœ";s:3:"葉";s:3:"葉";s:3:"說";s:3:"說";s:3:"殺";s:3:"殺";s:3:"辰";s:3:"è¾°";s:3:"沈";s:3:"沈";s:3:"拾";s:3:"拾";s:3:"若";s:3:"è‹¥";s:3:"掠";s:3:"掠";s:3:"略";s:3:"ç•¥";s:3:"亮";s:3:"亮";s:3:"兩";s:3:"å…©";s:3:"凉";s:3:"凉";s:3:"梁";s:3:"æ¢";s:3:"糧";s:3:"糧";s:3:"良";s:3:"良";s:3:"諒";s:3:"è«’";s:3:"量";s:3:"é‡";s:3:"勵";s:3:"勵";s:3:"呂";s:3:"å‘‚";s:3:"ï¦";s:3:"女";s:3:"廬";s:3:"廬";s:3:"旅";s:3:"æ—…";s:3:"濾";s:3:"濾";s:3:"礪";s:3:"礪";s:3:"閭";s:3:"é–­";s:3:"驪";s:3:"驪";s:3:"麗";s:3:"麗";s:3:"黎";s:3:"黎";s:3:"力";s:3:"力";s:3:"曆";s:3:"曆";s:3:"歷";s:3:"æ­·";s:3:"ï¦";s:3:"è½¢";s:3:"年";s:3:"å¹´";s:3:"ï¦";s:3:"æ†";s:3:"ï¦";s:3:"戀";s:3:"撚";s:3:"æ’š";s:3:"漣";s:3:"æ¼£";s:3:"煉";s:3:"ç…‰";s:3:"璉";s:3:"ç’‰";s:3:"秊";s:3:"秊";s:3:"練";s:3:"ç·´";s:3:"聯";s:3:"è¯";s:3:"輦";s:3:"輦";s:3:"蓮";s:3:"è“®";s:3:"連";s:3:"連";s:3:"鍊";s:3:"éŠ";s:3:"列";s:3:"列";s:3:"ï¦";s:3:"劣";s:3:"咽";s:3:"å’½";s:3:"烈";s:3:"烈";s:3:"裂";s:3:"裂";s:3:"說";s:3:"說";s:3:"廉";s:3:"廉";s:3:"念";s:3:"念";s:3:"捻";s:3:"æ»";s:3:"殮";s:3:"æ®®";s:3:"簾";s:3:"ç°¾";s:3:"獵";s:3:"çµ";s:3:"令";s:3:"令";s:3:"囹";s:3:"囹";s:3:"寧";s:3:"寧";s:3:"嶺";s:3:"嶺";s:3:"怜";s:3:"怜";s:3:"玲";s:3:"玲";s:3:"瑩";s:3:"ç‘©";s:3:"羚";s:3:"羚";s:3:"聆";s:3:"è†";s:3:"鈴";s:3:"鈴";s:3:"零";s:3:"零";s:3:"靈";s:3:"éˆ";s:3:"領";s:3:"é ˜";s:3:"例";s:3:"例";s:3:"禮";s:3:"禮";s:3:"醴";s:3:"醴";s:3:"隸";s:3:"隸";s:3:"惡";s:3:"惡";s:3:"了";s:3:"了";s:3:"僚";s:3:"僚";s:3:"寮";s:3:"寮";s:3:"尿";s:3:"å°¿";s:3:"料";s:3:"æ–™";s:3:"樂";s:3:"樂";s:3:"燎";s:3:"燎";s:3:"ï§";s:3:"療";s:3:"蓼";s:3:"蓼";s:3:"遼";s:3:"é¼";s:3:"龍";s:3:"é¾";s:3:"暈";s:3:"暈";s:3:"阮";s:3:"阮";s:3:"劉";s:3:"劉";s:3:"杻";s:3:"æ»";s:3:"柳";s:3:"柳";s:3:"流";s:3:"æµ";s:3:"溜";s:3:"溜";s:3:"琉";s:3:"ç‰";s:3:"ï§";s:3:"ç•™";s:3:"硫";s:3:"ç¡«";s:3:"ï§";s:3:"ç´";s:3:"ï§";s:3:"é¡ž";s:3:"六";s:3:"å…­";s:3:"戮";s:3:"戮";s:3:"陸";s:3:"陸";s:3:"倫";s:3:"倫";s:3:"崙";s:3:"å´™";s:3:"淪";s:3:"æ·ª";s:3:"輪";s:3:"輪";s:3:"律";s:3:"律";s:3:"慄";s:3:"æ…„";s:3:"栗";s:3:"æ —";s:3:"率";s:3:"率";s:3:"隆";s:3:"隆";s:3:"ï§";s:3:"利";s:3:"吏";s:3:"å";s:3:"履";s:3:"å±¥";s:3:"易";s:3:"易";s:3:"李";s:3:"æŽ";s:3:"梨";s:3:"梨";s:3:"泥";s:3:"æ³¥";s:3:"理";s:3:"ç†";s:3:"痢";s:3:"ç—¢";s:3:"罹";s:3:"ç½¹";s:3:"裏";s:3:"è£";s:3:"裡";s:3:"裡";s:3:"里";s:3:"里";s:3:"離";s:3:"離";s:3:"匿";s:3:"匿";s:3:"溺";s:3:"溺";s:3:"吝";s:3:"å";s:3:"燐";s:3:"ç‡";s:3:"璘";s:3:"ç’˜";s:3:"藺";s:3:"è—º";s:3:"隣";s:3:"隣";s:3:"鱗";s:3:"é±—";s:3:"麟";s:3:"麟";s:3:"林";s:3:"æž—";s:3:"淋";s:3:"æ·‹";s:3:"臨";s:3:"臨";s:3:"立";s:3:"ç«‹";s:3:"笠";s:3:"笠";s:3:"粒";s:3:"ç²’";s:3:"狀";s:3:"ç‹€";s:3:"炙";s:3:"ç‚™";s:3:"識";s:3:"è­˜";s:3:"什";s:3:"什";s:3:"茶";s:3:"茶";s:3:"刺";s:3:"刺";s:3:"切";s:3:"切";s:3:"ï¨";s:3:"度";s:3:"拓";s:3:"æ‹“";s:3:"糖";s:3:"ç³–";s:3:"宅";s:3:"å®…";s:3:"洞";s:3:"æ´ž";s:3:"暴";s:3:"æš´";s:3:"輻";s:3:"è¼»";s:3:"行";s:3:"è¡Œ";s:3:"降";s:3:"é™";s:3:"見";s:3:"見";s:3:"廓";s:3:"廓";s:3:"兀";s:3:"å…€";s:3:"ï¨";s:3:"å—€";s:3:"ï¨";s:3:"å¡š";s:3:"晴";s:3:"æ™´";s:3:"凞";s:3:"凞";s:3:"猪";s:3:"猪";s:3:"益";s:3:"益";s:3:"礼";s:3:"礼";s:3:"神";s:3:"神";s:3:"祥";s:3:"祥";s:3:"福";s:3:"ç¦";s:3:"靖";s:3:"é–";s:3:"ï¨";s:3:"ç²¾";s:3:"羽";s:3:"ç¾½";s:3:"蘒";s:3:"蘒";s:3:"諸";s:3:"諸";s:3:"逸";s:3:"逸";s:3:"都";s:3:"都";s:3:"飯";s:3:"飯";s:3:"飼";s:3:"飼";s:3:"館";s:3:"館";s:3:"鶴";s:3:"鶴";s:3:"侮";s:3:"ä¾®";s:3:"僧";s:3:"僧";s:3:"免";s:3:"å…";s:3:"勉";s:3:"勉";s:3:"勤";s:3:"勤";s:3:"卑";s:3:"å‘";s:3:"喝";s:3:"å–";s:3:"嘆";s:3:"嘆";s:3:"器";s:3:"器";s:3:"塀";s:3:"å¡€";s:3:"墨";s:3:"墨";s:3:"層";s:3:"層";s:3:"屮";s:3:"å±®";s:3:"悔";s:3:"æ‚”";s:3:"慨";s:3:"æ…¨";s:3:"憎";s:3:"憎";s:3:"ï©€";s:3:"懲";s:3:"ï©";s:3:"æ•";s:3:"ï©‚";s:3:"æ—¢";s:3:"暑";s:3:"æš‘";s:3:"ï©„";s:3:"梅";s:3:"ï©…";s:3:"æµ·";s:3:"渚";s:3:"渚";s:3:"漢";s:3:"æ¼¢";s:3:"煮";s:3:"ç…®";s:3:"爫";s:3:"爫";s:3:"ï©Š";s:3:"ç¢";s:3:"ï©‹";s:3:"碑";s:3:"ï©Œ";s:3:"社";s:3:"ï©";s:3:"祉";s:3:"ï©Ž";s:3:"祈";s:3:"ï©";s:3:"ç¥";s:3:"ï©";s:3:"祖";s:3:"ï©‘";s:3:"ç¥";s:3:"ï©’";s:3:"ç¦";s:3:"ï©“";s:3:"禎";s:3:"ï©”";s:3:"ç©€";s:3:"ï©•";s:3:"çª";s:3:"ï©–";s:3:"節";s:3:"ï©—";s:3:"ç·´";s:3:"縉";s:3:"縉";s:3:"ï©™";s:3:"ç¹";s:3:"ï©š";s:3:"ç½²";s:3:"ï©›";s:3:"者";s:3:"ï©œ";s:3:"臭";s:3:"ï©";s:3:"艹";s:3:"ï©ž";s:3:"艹";s:3:"ï©Ÿ";s:3:"è‘—";s:3:"ï© ";s:3:"è¤";s:3:"ï©¡";s:3:"視";s:3:"ï©¢";s:3:"è¬";s:3:"ï©£";s:3:"謹";s:3:"賓";s:3:"賓";s:3:"ï©¥";s:3:"è´ˆ";s:3:"辶";s:3:"辶";s:3:"逸";s:3:"逸";s:3:"難";s:3:"難";s:3:"ï©©";s:3:"響";s:3:"頻";s:3:"é »";s:3:"ï©«";s:3:"æµ";s:3:"𤋮";s:4:"𤋮";s:3:"ï©­";s:3:"舘";s:3:"ï©°";s:3:"並";s:3:"况";s:3:"况";s:3:"全";s:3:"å…¨";s:3:"侀";s:3:"ä¾€";s:3:"ï©´";s:3:"å……";s:3:"冀";s:3:"冀";s:3:"勇";s:3:"勇";s:3:"ï©·";s:3:"勺";s:3:"喝";s:3:"å–";s:3:"啕";s:3:"å••";s:3:"喙";s:3:"å–™";s:3:"ï©»";s:3:"å—¢";s:3:"塚";s:3:"å¡š";s:3:"墳";s:3:"墳";s:3:"奄";s:3:"奄";s:3:"ï©¿";s:3:"奔";s:3:"婢";s:3:"å©¢";s:3:"ïª";s:3:"嬨";s:3:"廒";s:3:"å»’";s:3:"廙";s:3:"å»™";s:3:"彩";s:3:"彩";s:3:"徭";s:3:"å¾­";s:3:"惘";s:3:"惘";s:3:"慎";s:3:"æ…Ž";s:3:"愈";s:3:"愈";s:3:"憎";s:3:"憎";s:3:"慠";s:3:"æ… ";s:3:"懲";s:3:"懲";s:3:"戴";s:3:"戴";s:3:"ïª";s:3:"æ„";s:3:"搜";s:3:"æœ";s:3:"ïª";s:3:"æ‘’";s:3:"ïª";s:3:"æ•–";s:3:"晴";s:3:"æ™´";s:3:"朗";s:3:"朗";s:3:"望";s:3:"望";s:3:"杖";s:3:"æ–";s:3:"歹";s:3:"æ­¹";s:3:"殺";s:3:"殺";s:3:"流";s:3:"æµ";s:3:"滛";s:3:"æ»›";s:3:"滋";s:3:"滋";s:3:"漢";s:3:"æ¼¢";s:3:"瀞";s:3:"瀞";s:3:"煮";s:3:"ç…®";s:3:"ïª";s:3:"瞧";s:3:"爵";s:3:"爵";s:3:"犯";s:3:"犯";s:3:"猪";s:3:"猪";s:3:"瑱";s:3:"瑱";s:3:"甆";s:3:"甆";s:3:"画";s:3:"ç”»";s:3:"瘝";s:3:"ç˜";s:3:"瘟";s:3:"瘟";s:3:"益";s:3:"益";s:3:"盛";s:3:"ç››";s:3:"直";s:3:"ç›´";s:3:"睊";s:3:"çŠ";s:3:"着";s:3:"ç€";s:3:"磌";s:3:"磌";s:3:"窱";s:3:"窱";s:3:"節";s:3:"節";s:3:"类";s:3:"ç±»";s:3:"絛";s:3:"çµ›";s:3:"練";s:3:"ç·´";s:3:"缾";s:3:"ç¼¾";s:3:"者";s:3:"者";s:3:"荒";s:3:"è’";s:3:"華";s:3:"è¯";s:3:"蝹";s:3:"è¹";s:3:"襁";s:3:"è¥";s:3:"覆";s:3:"覆";s:3:"視";s:3:"視";s:3:"調";s:3:"調";s:3:"諸";s:3:"諸";s:3:"請";s:3:"è«‹";s:3:"謁";s:3:"è¬";s:3:"諾";s:3:"諾";s:3:"諭";s:3:"è«­";s:3:"謹";s:3:"謹";s:3:"ï«€";s:3:"變";s:3:"ï«";s:3:"è´ˆ";s:3:"ï«‚";s:3:"輸";s:3:"遲";s:3:"é²";s:3:"ï«„";s:3:"醙";s:3:"ï«…";s:3:"鉶";s:3:"陼";s:3:"陼";s:3:"難";s:3:"難";s:3:"靖";s:3:"é–";s:3:"韛";s:3:"韛";s:3:"ï«Š";s:3:"響";s:3:"ï«‹";s:3:"é ‹";s:3:"ï«Œ";s:3:"é »";s:3:"ï«";s:3:"鬒";s:3:"ï«Ž";s:3:"龜";s:3:"ï«";s:4:"𢡊";s:3:"ï«";s:4:"𢡄";s:3:"ï«‘";s:4:"ð£•";s:3:"ï«’";s:3:"ã®";s:3:"ï«“";s:3:"䀘";s:3:"ï«”";s:3:"䀹";s:3:"ï«•";s:4:"𥉉";s:3:"ï«–";s:4:"ð¥³";s:3:"ï«—";s:4:"𧻓";s:3:"齃";s:3:"齃";s:3:"ï«™";s:3:"龎";s:3:"ff";s:2:"ff";s:3:"ï¬";s:2:"fi";s:3:"fl";s:2:"fl";s:3:"ffi";s:3:"ffi";s:3:"ffl";s:3:"ffl";s:3:"ſt";s:2:"st";s:3:"st";s:2:"st";s:3:"ﬓ";s:4:"Õ´Õ¶";s:3:"ﬔ";s:4:"Õ´Õ¥";s:3:"ﬕ";s:4:"Õ´Õ«";s:3:"ﬖ";s:4:"Õ¾Õ¶";s:3:"ﬗ";s:4:"Õ´Õ­";s:3:"ï¬";s:4:"×™Ö´";s:3:"ײַ";s:4:"ײַ";s:3:"ﬠ";s:2:"×¢";s:3:"ﬡ";s:2:"×";s:3:"ﬢ";s:2:"ד";s:3:"ﬣ";s:2:"×”";s:3:"ﬤ";s:2:"×›";s:3:"ﬥ";s:2:"ל";s:3:"ﬦ";s:2:"×";s:3:"ﬧ";s:2:"ר";s:3:"ﬨ";s:2:"ת";s:3:"﬩";s:1:"+";s:3:"שׁ";s:4:"ש×";s:3:"שׂ";s:4:"שׂ";s:3:"שּׁ";s:6:"שּ×";s:3:"שּׂ";s:6:"שּׂ";s:3:"אַ";s:4:"×Ö·";s:3:"אָ";s:4:"×Ö¸";s:3:"אּ";s:4:"×Ö¼";s:3:"בּ";s:4:"בּ";s:3:"גּ";s:4:"×’Ö¼";s:3:"דּ";s:4:"דּ";s:3:"הּ";s:4:"×”Ö¼";s:3:"וּ";s:4:"וּ";s:3:"זּ";s:4:"×–Ö¼";s:3:"טּ";s:4:"טּ";s:3:"יּ";s:4:"×™Ö¼";s:3:"ךּ";s:4:"ךּ";s:3:"כּ";s:4:"×›Ö¼";s:3:"לּ";s:4:"לּ";s:3:"מּ";s:4:"מּ";s:3:"ï­€";s:4:"× Ö¼";s:3:"ï­";s:4:"סּ";s:3:"ï­ƒ";s:4:"×£Ö¼";s:3:"ï­„";s:4:"פּ";s:3:"ï­†";s:4:"צּ";s:3:"ï­‡";s:4:"קּ";s:3:"ï­ˆ";s:4:"רּ";s:3:"ï­‰";s:4:"שּ";s:3:"ï­Š";s:4:"תּ";s:3:"ï­‹";s:4:"וֹ";s:3:"ï­Œ";s:4:"בֿ";s:3:"ï­";s:4:"×›Ö¿";s:3:"ï­Ž";s:4:"פֿ";s:3:"ï­";s:4:"×ל";s:3:"ï­";s:2:"Ù±";s:3:"ï­‘";s:2:"Ù±";s:3:"ï­’";s:2:"Ù»";s:3:"ï­“";s:2:"Ù»";s:3:"ï­”";s:2:"Ù»";s:3:"ï­•";s:2:"Ù»";s:3:"ï­–";s:2:"Ù¾";s:3:"ï­—";s:2:"Ù¾";s:3:"ï­˜";s:2:"Ù¾";s:3:"ï­™";s:2:"Ù¾";s:3:"ï­š";s:2:"Ú€";s:3:"ï­›";s:2:"Ú€";s:3:"ï­œ";s:2:"Ú€";s:3:"ï­";s:2:"Ú€";s:3:"ï­ž";s:2:"Ùº";s:3:"ï­Ÿ";s:2:"Ùº";s:3:"ï­ ";s:2:"Ùº";s:3:"ï­¡";s:2:"Ùº";s:3:"ï­¢";s:2:"Ù¿";s:3:"ï­£";s:2:"Ù¿";s:3:"ï­¤";s:2:"Ù¿";s:3:"ï­¥";s:2:"Ù¿";s:3:"ï­¦";s:2:"Ù¹";s:3:"ï­§";s:2:"Ù¹";s:3:"ï­¨";s:2:"Ù¹";s:3:"ï­©";s:2:"Ù¹";s:3:"ï­ª";s:2:"Ú¤";s:3:"ï­«";s:2:"Ú¤";s:3:"ï­¬";s:2:"Ú¤";s:3:"ï­­";s:2:"Ú¤";s:3:"ï­®";s:2:"Ú¦";s:3:"ï­¯";s:2:"Ú¦";s:3:"ï­°";s:2:"Ú¦";s:3:"ï­±";s:2:"Ú¦";s:3:"ï­²";s:2:"Ú„";s:3:"ï­³";s:2:"Ú„";s:3:"ï­´";s:2:"Ú„";s:3:"ï­µ";s:2:"Ú„";s:3:"ï­¶";s:2:"Úƒ";s:3:"ï­·";s:2:"Úƒ";s:3:"ï­¸";s:2:"Úƒ";s:3:"ï­¹";s:2:"Úƒ";s:3:"ï­º";s:2:"Ú†";s:3:"ï­»";s:2:"Ú†";s:3:"ï­¼";s:2:"Ú†";s:3:"ï­½";s:2:"Ú†";s:3:"ï­¾";s:2:"Ú‡";s:3:"ï­¿";s:2:"Ú‡";s:3:"ﮀ";s:2:"Ú‡";s:3:"ï®";s:2:"Ú‡";s:3:"ﮂ";s:2:"Ú";s:3:"ﮃ";s:2:"Ú";s:3:"ﮄ";s:2:"ÚŒ";s:3:"ï®…";s:2:"ÚŒ";s:3:"ﮆ";s:2:"ÚŽ";s:3:"ﮇ";s:2:"ÚŽ";s:3:"ﮈ";s:2:"Úˆ";s:3:"ﮉ";s:2:"Úˆ";s:3:"ﮊ";s:2:"Ú˜";s:3:"ﮋ";s:2:"Ú˜";s:3:"ﮌ";s:2:"Ú‘";s:3:"ï®";s:2:"Ú‘";s:3:"ﮎ";s:2:"Ú©";s:3:"ï®";s:2:"Ú©";s:3:"ï®";s:2:"Ú©";s:3:"ﮑ";s:2:"Ú©";s:3:"ï®’";s:2:"Ú¯";s:3:"ﮓ";s:2:"Ú¯";s:3:"ï®”";s:2:"Ú¯";s:3:"ﮕ";s:2:"Ú¯";s:3:"ï®–";s:2:"Ú³";s:3:"ï®—";s:2:"Ú³";s:3:"ﮘ";s:2:"Ú³";s:3:"ï®™";s:2:"Ú³";s:3:"ﮚ";s:2:"Ú±";s:3:"ï®›";s:2:"Ú±";s:3:"ﮜ";s:2:"Ú±";s:3:"ï®";s:2:"Ú±";s:3:"ﮞ";s:2:"Úº";s:3:"ﮟ";s:2:"Úº";s:3:"ï® ";s:2:"Ú»";s:3:"ﮡ";s:2:"Ú»";s:3:"ﮢ";s:2:"Ú»";s:3:"ﮣ";s:2:"Ú»";s:3:"ﮤ";s:4:"Û•Ù”";s:3:"ﮥ";s:4:"Û•Ù”";s:3:"ﮦ";s:2:"Û";s:3:"ﮧ";s:2:"Û";s:3:"ﮨ";s:2:"Û";s:3:"ﮩ";s:2:"Û";s:3:"ﮪ";s:2:"Ú¾";s:3:"ﮫ";s:2:"Ú¾";s:3:"ﮬ";s:2:"Ú¾";s:3:"ï®­";s:2:"Ú¾";s:3:"ï®®";s:2:"Û’";s:3:"ﮯ";s:2:"Û’";s:3:"ï®°";s:4:"Û’Ù”";s:3:"ï®±";s:4:"Û’Ù”";s:3:"ﯓ";s:2:"Ú­";s:3:"ﯔ";s:2:"Ú­";s:3:"ﯕ";s:2:"Ú­";s:3:"ﯖ";s:2:"Ú­";s:3:"ﯗ";s:2:"Û‡";s:3:"ﯘ";s:2:"Û‡";s:3:"ﯙ";s:2:"Û†";s:3:"ﯚ";s:2:"Û†";s:3:"ﯛ";s:2:"Ûˆ";s:3:"ﯜ";s:2:"Ûˆ";s:3:"ï¯";s:4:"Û‡Ù´";s:3:"ﯞ";s:2:"Û‹";s:3:"ﯟ";s:2:"Û‹";s:3:"ﯠ";s:2:"Û…";s:3:"ﯡ";s:2:"Û…";s:3:"ﯢ";s:2:"Û‰";s:3:"ﯣ";s:2:"Û‰";s:3:"ﯤ";s:2:"Û";s:3:"ﯥ";s:2:"Û";s:3:"ﯦ";s:2:"Û";s:3:"ﯧ";s:2:"Û";s:3:"ﯨ";s:2:"Ù‰";s:3:"ﯩ";s:2:"Ù‰";s:3:"ﯪ";s:6:"ئا";s:3:"ﯫ";s:6:"ئا";s:3:"ﯬ";s:6:"ÙŠÙ”Û•";s:3:"ﯭ";s:6:"ÙŠÙ”Û•";s:3:"ﯮ";s:6:"ÙŠÙ”Ùˆ";s:3:"ﯯ";s:6:"ÙŠÙ”Ùˆ";s:3:"ﯰ";s:6:"ÙŠÙ”Û‡";s:3:"ﯱ";s:6:"ÙŠÙ”Û‡";s:3:"ﯲ";s:6:"ÙŠÙ”Û†";s:3:"ﯳ";s:6:"ÙŠÙ”Û†";s:3:"ﯴ";s:6:"ÙŠÙ”Ûˆ";s:3:"ﯵ";s:6:"ÙŠÙ”Ûˆ";s:3:"ﯶ";s:6:"ÙŠÙ”Û";s:3:"ﯷ";s:6:"ÙŠÙ”Û";s:3:"ﯸ";s:6:"ÙŠÙ”Û";s:3:"ﯹ";s:6:"ÙŠÙ”Ù‰";s:3:"ﯺ";s:6:"ÙŠÙ”Ù‰";s:3:"ﯻ";s:6:"ÙŠÙ”Ù‰";s:3:"ﯼ";s:2:"ÛŒ";s:3:"ﯽ";s:2:"ÛŒ";s:3:"ﯾ";s:2:"ÛŒ";s:3:"ﯿ";s:2:"ÛŒ";s:3:"ï°€";s:6:"ئج";s:3:"ï°";s:6:"ئح";s:3:"ï°‚";s:6:"ÙŠÙ”Ù…";s:3:"ï°ƒ";s:6:"ÙŠÙ”Ù‰";s:3:"ï°„";s:6:"ÙŠÙ”ÙŠ";s:3:"ï°…";s:4:"بج";s:3:"ï°†";s:4:"بح";s:3:"ï°‡";s:4:"بخ";s:3:"ï°ˆ";s:4:"بم";s:3:"ï°‰";s:4:"بى";s:3:"ï°Š";s:4:"بي";s:3:"ï°‹";s:4:"تج";s:3:"ï°Œ";s:4:"تح";s:3:"ï°";s:4:"تخ";s:3:"ï°Ž";s:4:"تم";s:3:"ï°";s:4:"تى";s:3:"ï°";s:4:"تي";s:3:"ï°‘";s:4:"ثج";s:3:"ï°’";s:4:"ثم";s:3:"ï°“";s:4:"ثى";s:3:"ï°”";s:4:"ثي";s:3:"ï°•";s:4:"جح";s:3:"ï°–";s:4:"جم";s:3:"ï°—";s:4:"حج";s:3:"ï°˜";s:4:"حم";s:3:"ï°™";s:4:"خج";s:3:"ï°š";s:4:"خح";s:3:"ï°›";s:4:"خم";s:3:"ï°œ";s:4:"سج";s:3:"ï°";s:4:"سح";s:3:"ï°ž";s:4:"سخ";s:3:"ï°Ÿ";s:4:"سم";s:3:"ï° ";s:4:"صح";s:3:"ï°¡";s:4:"صم";s:3:"ï°¢";s:4:"ضج";s:3:"ï°£";s:4:"ضح";s:3:"ï°¤";s:4:"ضخ";s:3:"ï°¥";s:4:"ضم";s:3:"ï°¦";s:4:"طح";s:3:"ï°§";s:4:"طم";s:3:"ï°¨";s:4:"ظم";s:3:"ï°©";s:4:"عج";s:3:"ï°ª";s:4:"عم";s:3:"ï°«";s:4:"غج";s:3:"ï°¬";s:4:"غم";s:3:"ï°­";s:4:"Ùج";s:3:"ï°®";s:4:"ÙØ­";s:3:"ï°¯";s:4:"ÙØ®";s:3:"ï°°";s:4:"ÙÙ…";s:3:"ï°±";s:4:"ÙÙ‰";s:3:"ï°²";s:4:"ÙÙŠ";s:3:"ï°³";s:4:"قح";s:3:"ï°´";s:4:"قم";s:3:"ï°µ";s:4:"قى";s:3:"ï°¶";s:4:"قي";s:3:"ï°·";s:4:"كا";s:3:"ï°¸";s:4:"كج";s:3:"ï°¹";s:4:"كح";s:3:"ï°º";s:4:"كخ";s:3:"ï°»";s:4:"كل";s:3:"ï°¼";s:4:"كم";s:3:"ï°½";s:4:"كى";s:3:"ï°¾";s:4:"كي";s:3:"ï°¿";s:4:"لج";s:3:"ï±€";s:4:"لح";s:3:"ï±";s:4:"لخ";s:3:"ﱂ";s:4:"لم";s:3:"ﱃ";s:4:"لى";s:3:"ﱄ";s:4:"لي";s:3:"ï±…";s:4:"مج";s:3:"ﱆ";s:4:"مح";s:3:"ﱇ";s:4:"مخ";s:3:"ﱈ";s:4:"مم";s:3:"ﱉ";s:4:"مى";s:3:"ﱊ";s:4:"مي";s:3:"ﱋ";s:4:"نج";s:3:"ﱌ";s:4:"نح";s:3:"ï±";s:4:"نخ";s:3:"ﱎ";s:4:"نم";s:3:"ï±";s:4:"نى";s:3:"ï±";s:4:"ني";s:3:"ﱑ";s:4:"هج";s:3:"ï±’";s:4:"هم";s:3:"ﱓ";s:4:"هى";s:3:"ï±”";s:4:"هي";s:3:"ﱕ";s:4:"يج";s:3:"ï±–";s:4:"يح";s:3:"ï±—";s:4:"يخ";s:3:"ﱘ";s:4:"يم";s:3:"ï±™";s:4:"يى";s:3:"ﱚ";s:4:"يي";s:3:"ï±›";s:4:"ذٰ";s:3:"ﱜ";s:4:"رٰ";s:3:"ï±";s:4:"ىٰ";s:3:"ﱞ";s:5:" ٌّ";s:3:"ﱟ";s:5:" ÙÙ‘";s:3:"ï± ";s:5:" ÙŽÙ‘";s:3:"ﱡ";s:5:" ÙÙ‘";s:3:"ï±¢";s:5:" ÙÙ‘";s:3:"ï±£";s:5:" ّٰ";s:3:"ﱤ";s:6:"ئر";s:3:"ï±¥";s:6:"ئز";s:3:"ﱦ";s:6:"ÙŠÙ”Ù…";s:3:"ﱧ";s:6:"ÙŠÙ”Ù†";s:3:"ﱨ";s:6:"ÙŠÙ”Ù‰";s:3:"ﱩ";s:6:"ÙŠÙ”ÙŠ";s:3:"ﱪ";s:4:"بر";s:3:"ﱫ";s:4:"بز";s:3:"ﱬ";s:4:"بم";s:3:"ï±­";s:4:"بن";s:3:"ï±®";s:4:"بى";s:3:"ﱯ";s:4:"بي";s:3:"ï±°";s:4:"تر";s:3:"ï±±";s:4:"تز";s:3:"ï±²";s:4:"تم";s:3:"ï±³";s:4:"تن";s:3:"ï±´";s:4:"تى";s:3:"ï±µ";s:4:"تي";s:3:"ﱶ";s:4:"ثر";s:3:"ï±·";s:4:"ثز";s:3:"ﱸ";s:4:"ثم";s:3:"ï±¹";s:4:"ثن";s:3:"ﱺ";s:4:"ثى";s:3:"ï±»";s:4:"ثي";s:3:"ï±¼";s:4:"ÙÙ‰";s:3:"ï±½";s:4:"ÙÙŠ";s:3:"ï±¾";s:4:"قى";s:3:"ﱿ";s:4:"قي";s:3:"ï²€";s:4:"كا";s:3:"ï²";s:4:"كل";s:3:"ﲂ";s:4:"كم";s:3:"ﲃ";s:4:"كى";s:3:"ﲄ";s:4:"كي";s:3:"ï²…";s:4:"لم";s:3:"ﲆ";s:4:"لى";s:3:"ﲇ";s:4:"لي";s:3:"ﲈ";s:4:"ما";s:3:"ﲉ";s:4:"مم";s:3:"ﲊ";s:4:"نر";s:3:"ﲋ";s:4:"نز";s:3:"ﲌ";s:4:"نم";s:3:"ï²";s:4:"نن";s:3:"ﲎ";s:4:"نى";s:3:"ï²";s:4:"ني";s:3:"ï²";s:4:"ىٰ";s:3:"ﲑ";s:4:"ير";s:3:"ï²’";s:4:"يز";s:3:"ﲓ";s:4:"يم";s:3:"ï²”";s:4:"ين";s:3:"ﲕ";s:4:"يى";s:3:"ï²–";s:4:"يي";s:3:"ï²—";s:6:"ئج";s:3:"ﲘ";s:6:"ئح";s:3:"ï²™";s:6:"ئخ";s:3:"ﲚ";s:6:"ÙŠÙ”Ù…";s:3:"ï²›";s:6:"ÙŠÙ”Ù‡";s:3:"ﲜ";s:4:"بج";s:3:"ï²";s:4:"بح";s:3:"ﲞ";s:4:"بخ";s:3:"ﲟ";s:4:"بم";s:3:"ï² ";s:4:"به";s:3:"ﲡ";s:4:"تج";s:3:"ï²¢";s:4:"تح";s:3:"ï²£";s:4:"تخ";s:3:"ﲤ";s:4:"تم";s:3:"ï²¥";s:4:"ته";s:3:"ﲦ";s:4:"ثم";s:3:"ﲧ";s:4:"جح";s:3:"ﲨ";s:4:"جم";s:3:"ﲩ";s:4:"حج";s:3:"ﲪ";s:4:"حم";s:3:"ﲫ";s:4:"خج";s:3:"ﲬ";s:4:"خم";s:3:"ï²­";s:4:"سج";s:3:"ï²®";s:4:"سح";s:3:"ﲯ";s:4:"سخ";s:3:"ï²°";s:4:"سم";s:3:"ï²±";s:4:"صح";s:3:"ï²²";s:4:"صخ";s:3:"ï²³";s:4:"صم";s:3:"ï²´";s:4:"ضج";s:3:"ï²µ";s:4:"ضح";s:3:"ﲶ";s:4:"ضخ";s:3:"ï²·";s:4:"ضم";s:3:"ﲸ";s:4:"طح";s:3:"ï²¹";s:4:"ظم";s:3:"ﲺ";s:4:"عج";s:3:"ï²»";s:4:"عم";s:3:"ï²¼";s:4:"غج";s:3:"ï²½";s:4:"غم";s:3:"ï²¾";s:4:"Ùج";s:3:"ﲿ";s:4:"ÙØ­";s:3:"ï³€";s:4:"ÙØ®";s:3:"ï³";s:4:"ÙÙ…";s:3:"ﳂ";s:4:"قح";s:3:"ﳃ";s:4:"قم";s:3:"ﳄ";s:4:"كج";s:3:"ï³…";s:4:"كح";s:3:"ﳆ";s:4:"كخ";s:3:"ﳇ";s:4:"كل";s:3:"ﳈ";s:4:"كم";s:3:"ﳉ";s:4:"لج";s:3:"ﳊ";s:4:"لح";s:3:"ﳋ";s:4:"لخ";s:3:"ﳌ";s:4:"لم";s:3:"ï³";s:4:"له";s:3:"ﳎ";s:4:"مج";s:3:"ï³";s:4:"مح";s:3:"ï³";s:4:"مخ";s:3:"ﳑ";s:4:"مم";s:3:"ï³’";s:4:"نج";s:3:"ﳓ";s:4:"نح";s:3:"ï³”";s:4:"نخ";s:3:"ﳕ";s:4:"نم";s:3:"ï³–";s:4:"نه";s:3:"ï³—";s:4:"هج";s:3:"ﳘ";s:4:"هم";s:3:"ï³™";s:4:"هٰ";s:3:"ﳚ";s:4:"يج";s:3:"ï³›";s:4:"يح";s:3:"ﳜ";s:4:"يخ";s:3:"ï³";s:4:"يم";s:3:"ﳞ";s:4:"يه";s:3:"ﳟ";s:6:"ÙŠÙ”Ù…";s:3:"ï³ ";s:6:"ÙŠÙ”Ù‡";s:3:"ﳡ";s:4:"بم";s:3:"ï³¢";s:4:"به";s:3:"ï³£";s:4:"تم";s:3:"ﳤ";s:4:"ته";s:3:"ï³¥";s:4:"ثم";s:3:"ﳦ";s:4:"ثه";s:3:"ﳧ";s:4:"سم";s:3:"ﳨ";s:4:"سه";s:3:"ﳩ";s:4:"شم";s:3:"ﳪ";s:4:"شه";s:3:"ﳫ";s:4:"كل";s:3:"ﳬ";s:4:"كم";s:3:"ï³­";s:4:"لم";s:3:"ï³®";s:4:"نم";s:3:"ﳯ";s:4:"نه";s:3:"ï³°";s:4:"يم";s:3:"ï³±";s:4:"يه";s:3:"ï³²";s:6:"Ù€ÙŽÙ‘";s:3:"ï³³";s:6:"Ù€ÙÙ‘";s:3:"ï³´";s:6:"Ù€ÙÙ‘";s:3:"ï³µ";s:4:"طى";s:3:"ﳶ";s:4:"طي";s:3:"ï³·";s:4:"عى";s:3:"ﳸ";s:4:"عي";s:3:"ï³¹";s:4:"غى";s:3:"ﳺ";s:4:"غي";s:3:"ï³»";s:4:"سى";s:3:"ï³¼";s:4:"سي";s:3:"ï³½";s:4:"شى";s:3:"ï³¾";s:4:"شي";s:3:"ﳿ";s:4:"حى";s:3:"ï´€";s:4:"حي";s:3:"ï´";s:4:"جى";s:3:"ï´‚";s:4:"جي";s:3:"ï´ƒ";s:4:"خى";s:3:"ï´„";s:4:"خي";s:3:"ï´…";s:4:"صى";s:3:"ï´†";s:4:"صي";s:3:"ï´‡";s:4:"ضى";s:3:"ï´ˆ";s:4:"ضي";s:3:"ï´‰";s:4:"شج";s:3:"ï´Š";s:4:"شح";s:3:"ï´‹";s:4:"شخ";s:3:"ï´Œ";s:4:"شم";s:3:"ï´";s:4:"شر";s:3:"ï´Ž";s:4:"سر";s:3:"ï´";s:4:"صر";s:3:"ï´";s:4:"ضر";s:3:"ï´‘";s:4:"طى";s:3:"ï´’";s:4:"طي";s:3:"ï´“";s:4:"عى";s:3:"ï´”";s:4:"عي";s:3:"ï´•";s:4:"غى";s:3:"ï´–";s:4:"غي";s:3:"ï´—";s:4:"سى";s:3:"ï´˜";s:4:"سي";s:3:"ï´™";s:4:"شى";s:3:"ï´š";s:4:"شي";s:3:"ï´›";s:4:"حى";s:3:"ï´œ";s:4:"حي";s:3:"ï´";s:4:"جى";s:3:"ï´ž";s:4:"جي";s:3:"ï´Ÿ";s:4:"خى";s:3:"ï´ ";s:4:"خي";s:3:"ï´¡";s:4:"صى";s:3:"ï´¢";s:4:"صي";s:3:"ï´£";s:4:"ضى";s:3:"ï´¤";s:4:"ضي";s:3:"ï´¥";s:4:"شج";s:3:"ï´¦";s:4:"شح";s:3:"ï´§";s:4:"شخ";s:3:"ï´¨";s:4:"شم";s:3:"ï´©";s:4:"شر";s:3:"ï´ª";s:4:"سر";s:3:"ï´«";s:4:"صر";s:3:"ï´¬";s:4:"ضر";s:3:"ï´­";s:4:"شج";s:3:"ï´®";s:4:"شح";s:3:"ï´¯";s:4:"شخ";s:3:"ï´°";s:4:"شم";s:3:"ï´±";s:4:"سه";s:3:"ï´²";s:4:"شه";s:3:"ï´³";s:4:"طم";s:3:"ï´´";s:4:"سج";s:3:"ï´µ";s:4:"سح";s:3:"ï´¶";s:4:"سخ";s:3:"ï´·";s:4:"شج";s:3:"ï´¸";s:4:"شح";s:3:"ï´¹";s:4:"شخ";s:3:"ï´º";s:4:"طم";s:3:"ï´»";s:4:"ظم";s:3:"ï´¼";s:4:"اً";s:3:"ï´½";s:4:"اً";s:3:"ïµ";s:6:"تجم";s:3:"ﵑ";s:6:"تحج";s:3:"ïµ’";s:6:"تحج";s:3:"ﵓ";s:6:"تحم";s:3:"ïµ”";s:6:"تخم";s:3:"ﵕ";s:6:"تمج";s:3:"ïµ–";s:6:"تمح";s:3:"ïµ—";s:6:"تمخ";s:3:"ﵘ";s:6:"جمح";s:3:"ïµ™";s:6:"جمح";s:3:"ﵚ";s:6:"حمي";s:3:"ïµ›";s:6:"حمى";s:3:"ﵜ";s:6:"سحج";s:3:"ïµ";s:6:"سجح";s:3:"ﵞ";s:6:"سجى";s:3:"ﵟ";s:6:"سمح";s:3:"ïµ ";s:6:"سمح";s:3:"ﵡ";s:6:"سمج";s:3:"ïµ¢";s:6:"سمم";s:3:"ïµ£";s:6:"سمم";s:3:"ﵤ";s:6:"صحح";s:3:"ïµ¥";s:6:"صحح";s:3:"ﵦ";s:6:"صمم";s:3:"ﵧ";s:6:"شحم";s:3:"ﵨ";s:6:"شحم";s:3:"ﵩ";s:6:"شجي";s:3:"ﵪ";s:6:"شمخ";s:3:"ﵫ";s:6:"شمخ";s:3:"ﵬ";s:6:"شمم";s:3:"ïµ­";s:6:"شمم";s:3:"ïµ®";s:6:"ضحى";s:3:"ﵯ";s:6:"ضخم";s:3:"ïµ°";s:6:"ضخم";s:3:"ïµ±";s:6:"طمح";s:3:"ïµ²";s:6:"طمح";s:3:"ïµ³";s:6:"طمم";s:3:"ïµ´";s:6:"طمي";s:3:"ïµµ";s:6:"عجم";s:3:"ﵶ";s:6:"عمم";s:3:"ïµ·";s:6:"عمم";s:3:"ﵸ";s:6:"عمى";s:3:"ïµ¹";s:6:"غمم";s:3:"ﵺ";s:6:"غمي";s:3:"ïµ»";s:6:"غمى";s:3:"ïµ¼";s:6:"Ùخم";s:3:"ïµ½";s:6:"Ùخم";s:3:"ïµ¾";s:6:"قمح";s:3:"ﵿ";s:6:"قمم";s:3:"ﶀ";s:6:"لحم";s:3:"ï¶";s:6:"لحي";s:3:"ﶂ";s:6:"لحى";s:3:"ﶃ";s:6:"لجج";s:3:"ﶄ";s:6:"لجج";s:3:"ﶅ";s:6:"لخم";s:3:"ﶆ";s:6:"لخم";s:3:"ﶇ";s:6:"لمح";s:3:"ﶈ";s:6:"لمح";s:3:"ﶉ";s:6:"محج";s:3:"ﶊ";s:6:"محم";s:3:"ﶋ";s:6:"محي";s:3:"ﶌ";s:6:"مجح";s:3:"ï¶";s:6:"مجم";s:3:"ﶎ";s:6:"مخج";s:3:"ï¶";s:6:"مخم";s:3:"ﶒ";s:6:"مجخ";s:3:"ﶓ";s:6:"همج";s:3:"ﶔ";s:6:"همم";s:3:"ﶕ";s:6:"نحم";s:3:"ﶖ";s:6:"نحى";s:3:"ﶗ";s:6:"نجم";s:3:"ﶘ";s:6:"نجم";s:3:"ﶙ";s:6:"نجى";s:3:"ﶚ";s:6:"نمي";s:3:"ﶛ";s:6:"نمى";s:3:"ﶜ";s:6:"يمم";s:3:"ï¶";s:6:"يمم";s:3:"ﶞ";s:6:"بخي";s:3:"ﶟ";s:6:"تجي";s:3:"ﶠ";s:6:"تجى";s:3:"ﶡ";s:6:"تخي";s:3:"ﶢ";s:6:"تخى";s:3:"ﶣ";s:6:"تمي";s:3:"ﶤ";s:6:"تمى";s:3:"ﶥ";s:6:"جمي";s:3:"ﶦ";s:6:"جحى";s:3:"ﶧ";s:6:"جمى";s:3:"ﶨ";s:6:"سخى";s:3:"ﶩ";s:6:"صحي";s:3:"ﶪ";s:6:"شحي";s:3:"ﶫ";s:6:"ضحي";s:3:"ﶬ";s:6:"لجي";s:3:"ﶭ";s:6:"لمي";s:3:"ﶮ";s:6:"يحي";s:3:"ﶯ";s:6:"يجي";s:3:"ﶰ";s:6:"يمي";s:3:"ﶱ";s:6:"ممي";s:3:"ﶲ";s:6:"قمي";s:3:"ﶳ";s:6:"نحي";s:3:"ﶴ";s:6:"قمح";s:3:"ﶵ";s:6:"لحم";s:3:"ﶶ";s:6:"عمي";s:3:"ﶷ";s:6:"كمي";s:3:"ﶸ";s:6:"نجح";s:3:"ﶹ";s:6:"مخي";s:3:"ﶺ";s:6:"لجم";s:3:"ﶻ";s:6:"كمم";s:3:"ﶼ";s:6:"لجم";s:3:"ﶽ";s:6:"نجح";s:3:"ﶾ";s:6:"جحي";s:3:"ﶿ";s:6:"حجي";s:3:"ï·€";s:6:"مجي";s:3:"ï·";s:6:"Ùمي";s:3:"ï·‚";s:6:"بحي";s:3:"ï·ƒ";s:6:"كمم";s:3:"ï·„";s:6:"عجم";s:3:"ï·…";s:6:"صمم";s:3:"ï·†";s:6:"سخي";s:3:"ï·‡";s:6:"نجي";s:3:"ï·°";s:6:"صلے";s:3:"ï·±";s:6:"قلے";s:3:"ï·²";s:8:"الله";s:3:"ï·³";s:8:"اكبر";s:3:"ï·´";s:8:"محمد";s:3:"ï·µ";s:8:"صلعم";s:3:"ï·¶";s:8:"رسول";s:3:"ï··";s:8:"عليه";s:3:"ï·¸";s:8:"وسلم";s:3:"ï·¹";s:6:"صلى";s:3:"ï·º";s:33:"صلى الله عليه وسلم";s:3:"ï·»";s:15:"جل جلاله";s:3:"ï·¼";s:8:"ریال";s:3:"ï¸";s:1:",";s:3:"︑";s:3:"ã€";s:3:"︒";s:3:"。";s:3:"︓";s:1:":";s:3:"︔";s:1:";";s:3:"︕";s:1:"!";s:3:"︖";s:1:"?";s:3:"︗";s:3:"〖";s:3:"︘";s:3:"〗";s:3:"︙";s:3:"...";s:3:"︰";s:2:"..";s:3:"︱";s:3:"—";s:3:"︲";s:3:"–";s:3:"︳";s:1:"_";s:3:"︴";s:1:"_";s:3:"︵";s:1:"(";s:3:"︶";s:1:")";s:3:"︷";s:1:"{";s:3:"︸";s:1:"}";s:3:"︹";s:3:"〔";s:3:"︺";s:3:"〕";s:3:"︻";s:3:"ã€";s:3:"︼";s:3:"】";s:3:"︽";s:3:"《";s:3:"︾";s:3:"》";s:3:"︿";s:3:"〈";s:3:"ï¹€";s:3:"〉";s:3:"ï¹";s:3:"「";s:3:"﹂";s:3:"ã€";s:3:"﹃";s:3:"『";s:3:"﹄";s:3:"ã€";s:3:"﹇";s:1:"[";s:3:"﹈";s:1:"]";s:3:"﹉";s:3:" Ì…";s:3:"﹊";s:3:" Ì…";s:3:"﹋";s:3:" Ì…";s:3:"﹌";s:3:" Ì…";s:3:"ï¹";s:1:"_";s:3:"﹎";s:1:"_";s:3:"ï¹";s:1:"_";s:3:"ï¹";s:1:",";s:3:"﹑";s:3:"ã€";s:3:"ï¹’";s:1:".";s:3:"ï¹”";s:1:";";s:3:"﹕";s:1:":";s:3:"ï¹–";s:1:"?";s:3:"ï¹—";s:1:"!";s:3:"﹘";s:3:"—";s:3:"ï¹™";s:1:"(";s:3:"﹚";s:1:")";s:3:"ï¹›";s:1:"{";s:3:"﹜";s:1:"}";s:3:"ï¹";s:3:"〔";s:3:"﹞";s:3:"〕";s:3:"﹟";s:1:"#";s:3:"ï¹ ";s:1:"&";s:3:"﹡";s:1:"*";s:3:"ï¹¢";s:1:"+";s:3:"ï¹£";s:1:"-";s:3:"﹤";s:1:"<";s:3:"ï¹¥";s:1:">";s:3:"﹦";s:1:"=";s:3:"﹨";s:1:"\\";s:3:"﹩";s:1:"$";s:3:"﹪";s:1:"%";s:3:"﹫";s:1:"@";s:3:"ï¹°";s:3:" Ù‹";s:3:"ï¹±";s:4:"ـً";s:3:"ï¹²";s:3:" ÙŒ";s:3:"ï¹´";s:3:" Ù";s:3:"ﹶ";s:3:" ÙŽ";s:3:"ï¹·";s:4:"Ù€ÙŽ";s:3:"ﹸ";s:3:" Ù";s:3:"ï¹¹";s:4:"Ù€Ù";s:3:"ﹺ";s:3:" Ù";s:3:"ï¹»";s:4:"Ù€Ù";s:3:"ï¹¼";s:3:" Ù‘";s:3:"ï¹½";s:4:"ـّ";s:3:"ï¹¾";s:3:" Ù’";s:3:"ﹿ";s:4:"ـْ";s:3:"ﺀ";s:2:"Ø¡";s:3:"ïº";s:4:"آ";s:3:"ﺂ";s:4:"آ";s:3:"ﺃ";s:4:"أ";s:3:"ﺄ";s:4:"أ";s:3:"ﺅ";s:4:"ÙˆÙ”";s:3:"ﺆ";s:4:"ÙˆÙ”";s:3:"ﺇ";s:4:"إ";s:3:"ﺈ";s:4:"إ";s:3:"ﺉ";s:4:"ÙŠÙ”";s:3:"ﺊ";s:4:"ÙŠÙ”";s:3:"ﺋ";s:4:"ÙŠÙ”";s:3:"ﺌ";s:4:"ÙŠÙ”";s:3:"ïº";s:2:"ا";s:3:"ﺎ";s:2:"ا";s:3:"ïº";s:2:"ب";s:3:"ïº";s:2:"ب";s:3:"ﺑ";s:2:"ب";s:3:"ﺒ";s:2:"ب";s:3:"ﺓ";s:2:"Ø©";s:3:"ﺔ";s:2:"Ø©";s:3:"ﺕ";s:2:"ت";s:3:"ﺖ";s:2:"ت";s:3:"ﺗ";s:2:"ت";s:3:"ﺘ";s:2:"ت";s:3:"ﺙ";s:2:"Ø«";s:3:"ﺚ";s:2:"Ø«";s:3:"ﺛ";s:2:"Ø«";s:3:"ﺜ";s:2:"Ø«";s:3:"ïº";s:2:"ج";s:3:"ﺞ";s:2:"ج";s:3:"ﺟ";s:2:"ج";s:3:"ﺠ";s:2:"ج";s:3:"ﺡ";s:2:"Ø­";s:3:"ﺢ";s:2:"Ø­";s:3:"ﺣ";s:2:"Ø­";s:3:"ﺤ";s:2:"Ø­";s:3:"ﺥ";s:2:"Ø®";s:3:"ﺦ";s:2:"Ø®";s:3:"ﺧ";s:2:"Ø®";s:3:"ﺨ";s:2:"Ø®";s:3:"ﺩ";s:2:"د";s:3:"ﺪ";s:2:"د";s:3:"ﺫ";s:2:"Ø°";s:3:"ﺬ";s:2:"Ø°";s:3:"ﺭ";s:2:"ر";s:3:"ﺮ";s:2:"ر";s:3:"ﺯ";s:2:"ز";s:3:"ﺰ";s:2:"ز";s:3:"ﺱ";s:2:"س";s:3:"ﺲ";s:2:"س";s:3:"ﺳ";s:2:"س";s:3:"ﺴ";s:2:"س";s:3:"ﺵ";s:2:"Ø´";s:3:"ﺶ";s:2:"Ø´";s:3:"ﺷ";s:2:"Ø´";s:3:"ﺸ";s:2:"Ø´";s:3:"ﺹ";s:2:"ص";s:3:"ﺺ";s:2:"ص";s:3:"ﺻ";s:2:"ص";s:3:"ﺼ";s:2:"ص";s:3:"ﺽ";s:2:"ض";s:3:"ﺾ";s:2:"ض";s:3:"ﺿ";s:2:"ض";s:3:"ﻀ";s:2:"ض";s:3:"ï»";s:2:"Ø·";s:3:"ﻂ";s:2:"Ø·";s:3:"ﻃ";s:2:"Ø·";s:3:"ﻄ";s:2:"Ø·";s:3:"ï»…";s:2:"ظ";s:3:"ﻆ";s:2:"ظ";s:3:"ﻇ";s:2:"ظ";s:3:"ﻈ";s:2:"ظ";s:3:"ﻉ";s:2:"ع";s:3:"ﻊ";s:2:"ع";s:3:"ﻋ";s:2:"ع";s:3:"ﻌ";s:2:"ع";s:3:"ï»";s:2:"غ";s:3:"ﻎ";s:2:"غ";s:3:"ï»";s:2:"غ";s:3:"ï»";s:2:"غ";s:3:"ﻑ";s:2:"Ù";s:3:"ï»’";s:2:"Ù";s:3:"ﻓ";s:2:"Ù";s:3:"ï»”";s:2:"Ù";s:3:"ﻕ";s:2:"Ù‚";s:3:"ï»–";s:2:"Ù‚";s:3:"ï»—";s:2:"Ù‚";s:3:"ﻘ";s:2:"Ù‚";s:3:"ï»™";s:2:"Ùƒ";s:3:"ﻚ";s:2:"Ùƒ";s:3:"ï»›";s:2:"Ùƒ";s:3:"ﻜ";s:2:"Ùƒ";s:3:"ï»";s:2:"Ù„";s:3:"ﻞ";s:2:"Ù„";s:3:"ﻟ";s:2:"Ù„";s:3:"ï» ";s:2:"Ù„";s:3:"ﻡ";s:2:"Ù…";s:3:"ﻢ";s:2:"Ù…";s:3:"ﻣ";s:2:"Ù…";s:3:"ﻤ";s:2:"Ù…";s:3:"ﻥ";s:2:"Ù†";s:3:"ﻦ";s:2:"Ù†";s:3:"ﻧ";s:2:"Ù†";s:3:"ﻨ";s:2:"Ù†";s:3:"ﻩ";s:2:"Ù‡";s:3:"ﻪ";s:2:"Ù‡";s:3:"ﻫ";s:2:"Ù‡";s:3:"ﻬ";s:2:"Ù‡";s:3:"ï»­";s:2:"Ùˆ";s:3:"ï»®";s:2:"Ùˆ";s:3:"ﻯ";s:2:"Ù‰";s:3:"ï»°";s:2:"Ù‰";s:3:"ï»±";s:2:"ÙŠ";s:3:"ﻲ";s:2:"ÙŠ";s:3:"ﻳ";s:2:"ÙŠ";s:3:"ï»´";s:2:"ÙŠ";s:3:"ﻵ";s:6:"لآ";s:3:"ﻶ";s:6:"لآ";s:3:"ï»·";s:6:"لأ";s:3:"ﻸ";s:6:"لأ";s:3:"ﻹ";s:6:"لإ";s:3:"ﻺ";s:6:"لإ";s:3:"ï»»";s:4:"لا";s:3:"ﻼ";s:4:"لا";s:3:"ï¼";s:1:"!";s:3:""";s:1:""";s:3:"#";s:1:"#";s:3:"$";s:1:"$";s:3:"ï¼…";s:1:"%";s:3:"&";s:1:"&";s:3:"'";s:1:"\'";s:3:"(";s:1:"(";s:3:")";s:1:")";s:3:"*";s:1:"*";s:3:"+";s:1:"+";s:3:",";s:1:",";s:3:"ï¼";s:1:"-";s:3:".";s:1:".";s:3:"ï¼";s:1:"/";s:3:"ï¼";s:1:"0";s:3:"1";s:1:"1";s:3:"ï¼’";s:1:"2";s:3:"3";s:1:"3";s:3:"ï¼”";s:1:"4";s:3:"5";s:1:"5";s:3:"ï¼–";s:1:"6";s:3:"ï¼—";s:1:"7";s:3:"8";s:1:"8";s:3:"ï¼™";s:1:"9";s:3:":";s:1:":";s:3:"ï¼›";s:1:";";s:3:"<";s:1:"<";s:3:"ï¼";s:1:"=";s:3:">";s:1:">";s:3:"?";s:1:"?";s:3:"ï¼ ";s:1:"@";s:3:"A";s:1:"A";s:3:"ï¼¢";s:1:"B";s:3:"ï¼£";s:1:"C";s:3:"D";s:1:"D";s:3:"ï¼¥";s:1:"E";s:3:"F";s:1:"F";s:3:"G";s:1:"G";s:3:"H";s:1:"H";s:3:"I";s:1:"I";s:3:"J";s:1:"J";s:3:"K";s:1:"K";s:3:"L";s:1:"L";s:3:"ï¼­";s:1:"M";s:3:"ï¼®";s:1:"N";s:3:"O";s:1:"O";s:3:"ï¼°";s:1:"P";s:3:"ï¼±";s:1:"Q";s:3:"ï¼²";s:1:"R";s:3:"ï¼³";s:1:"S";s:3:"ï¼´";s:1:"T";s:3:"ï¼µ";s:1:"U";s:3:"V";s:1:"V";s:3:"ï¼·";s:1:"W";s:3:"X";s:1:"X";s:3:"ï¼¹";s:1:"Y";s:3:"Z";s:1:"Z";s:3:"ï¼»";s:1:"[";s:3:"ï¼¼";s:1:"\\";s:3:"ï¼½";s:1:"]";s:3:"ï¼¾";s:1:"^";s:3:"_";s:1:"_";s:3:"ï½€";s:1:"`";s:3:"ï½";s:1:"a";s:3:"b";s:1:"b";s:3:"c";s:1:"c";s:3:"d";s:1:"d";s:3:"ï½…";s:1:"e";s:3:"f";s:1:"f";s:3:"g";s:1:"g";s:3:"h";s:1:"h";s:3:"i";s:1:"i";s:3:"j";s:1:"j";s:3:"k";s:1:"k";s:3:"l";s:1:"l";s:3:"ï½";s:1:"m";s:3:"n";s:1:"n";s:3:"ï½";s:1:"o";s:3:"ï½";s:1:"p";s:3:"q";s:1:"q";s:3:"ï½’";s:1:"r";s:3:"s";s:1:"s";s:3:"ï½”";s:1:"t";s:3:"u";s:1:"u";s:3:"ï½–";s:1:"v";s:3:"ï½—";s:1:"w";s:3:"x";s:1:"x";s:3:"ï½™";s:1:"y";s:3:"z";s:1:"z";s:3:"ï½›";s:1:"{";s:3:"|";s:1:"|";s:3:"ï½";s:1:"}";s:3:"~";s:1:"~";s:3:"⦅";s:3:"⦅";s:3:"ï½ ";s:3:"⦆";s:3:"。";s:3:"。";s:3:"ï½¢";s:3:"「";s:3:"ï½£";s:3:"ã€";s:3:"、";s:3:"ã€";s:3:"ï½¥";s:3:"・";s:3:"ヲ";s:3:"ヲ";s:3:"ァ";s:3:"ã‚¡";s:3:"ィ";s:3:"ã‚£";s:3:"ゥ";s:3:"ã‚¥";s:3:"ェ";s:3:"ェ";s:3:"ォ";s:3:"ã‚©";s:3:"ャ";s:3:"ャ";s:3:"ï½­";s:3:"ュ";s:3:"ï½®";s:3:"ョ";s:3:"ッ";s:3:"ッ";s:3:"ï½°";s:3:"ー";s:3:"ï½±";s:3:"ã‚¢";s:3:"ï½²";s:3:"イ";s:3:"ï½³";s:3:"ウ";s:3:"ï½´";s:3:"エ";s:3:"ï½µ";s:3:"オ";s:3:"カ";s:3:"ã‚«";s:3:"ï½·";s:3:"ã‚­";s:3:"ク";s:3:"ク";s:3:"ï½¹";s:3:"ケ";s:3:"コ";s:3:"コ";s:3:"ï½»";s:3:"サ";s:3:"ï½¼";s:3:"ã‚·";s:3:"ï½½";s:3:"ス";s:3:"ï½¾";s:3:"ã‚»";s:3:"ソ";s:3:"ソ";s:3:"ï¾€";s:3:"ã‚¿";s:3:"ï¾";s:3:"ãƒ";s:3:"ツ";s:3:"ツ";s:3:"テ";s:3:"テ";s:3:"ト";s:3:"ト";s:3:"ï¾…";s:3:"ナ";s:3:"ニ";s:3:"ニ";s:3:"ヌ";s:3:"ヌ";s:3:"ネ";s:3:"ãƒ";s:3:"ノ";s:3:"ノ";s:3:"ハ";s:3:"ãƒ";s:3:"ヒ";s:3:"ヒ";s:3:"フ";s:3:"フ";s:3:"ï¾";s:3:"ヘ";s:3:"ホ";s:3:"ホ";s:3:"ï¾";s:3:"マ";s:3:"ï¾";s:3:"ミ";s:3:"ム";s:3:"ム";s:3:"ï¾’";s:3:"メ";s:3:"モ";s:3:"モ";s:3:"ï¾”";s:3:"ヤ";s:3:"ユ";s:3:"ユ";s:3:"ï¾–";s:3:"ヨ";s:3:"ï¾—";s:3:"ラ";s:3:"リ";s:3:"リ";s:3:"ï¾™";s:3:"ル";s:3:"レ";s:3:"レ";s:3:"ï¾›";s:3:"ロ";s:3:"ワ";s:3:"ワ";s:3:"ï¾";s:3:"ン";s:3:"゙";s:3:"ã‚™";s:3:"゚";s:3:"ã‚š";s:3:"ï¾ ";s:3:"á… ";s:3:"ᄀ";s:3:"á„€";s:3:"ï¾¢";s:3:"á„";s:3:"ï¾£";s:3:"ᆪ";s:3:"ᄂ";s:3:"á„‚";s:3:"ï¾¥";s:3:"ᆬ";s:3:"ᆭ";s:3:"ᆭ";s:3:"ᄃ";s:3:"ᄃ";s:3:"ᄄ";s:3:"á„„";s:3:"ᄅ";s:3:"á„…";s:3:"ᆰ";s:3:"ᆰ";s:3:"ᆱ";s:3:"ᆱ";s:3:"ᆲ";s:3:"ᆲ";s:3:"ï¾­";s:3:"ᆳ";s:3:"ï¾®";s:3:"ᆴ";s:3:"ᆵ";s:3:"ᆵ";s:3:"ï¾°";s:3:"á„š";s:3:"ï¾±";s:3:"ᄆ";s:3:"ï¾²";s:3:"ᄇ";s:3:"ï¾³";s:3:"ᄈ";s:3:"ï¾´";s:3:"á„¡";s:3:"ï¾µ";s:3:"ᄉ";s:3:"ᄊ";s:3:"á„Š";s:3:"ï¾·";s:3:"á„‹";s:3:"ᄌ";s:3:"á„Œ";s:3:"ï¾¹";s:3:"á„";s:3:"ᄎ";s:3:"á„Ž";s:3:"ï¾»";s:3:"á„";s:3:"ï¾¼";s:3:"á„";s:3:"ï¾½";s:3:"á„‘";s:3:"ï¾¾";s:3:"á„’";s:3:"ï¿‚";s:3:"á…¡";s:3:"ᅢ";s:3:"á…¢";s:3:"ï¿„";s:3:"á…£";s:3:"ï¿…";s:3:"á…¤";s:3:"ᅥ";s:3:"á…¥";s:3:"ᅦ";s:3:"á…¦";s:3:"ï¿Š";s:3:"á…§";s:3:"ï¿‹";s:3:"á…¨";s:3:"ï¿Œ";s:3:"á…©";s:3:"ï¿";s:3:"á…ª";s:3:"ï¿Ž";s:3:"á…«";s:3:"ï¿";s:3:"á…¬";s:3:"ï¿’";s:3:"á…­";s:3:"ï¿“";s:3:"á…®";s:3:"ï¿”";s:3:"á…¯";s:3:"ï¿•";s:3:"á…°";s:3:"ï¿–";s:3:"á…±";s:3:"ï¿—";s:3:"á…²";s:3:"ï¿š";s:3:"á…³";s:3:"ï¿›";s:3:"á…´";s:3:"ï¿œ";s:3:"á…µ";s:3:"ï¿ ";s:2:"¢";s:3:"ï¿¡";s:2:"£";s:3:"ï¿¢";s:2:"¬";s:3:"ï¿£";s:3:" Ì„";s:3:"¦";s:2:"¦";s:3:"ï¿¥";s:2:"Â¥";s:3:"₩";s:3:"â‚©";s:3:"│";s:3:"│";s:3:"ï¿©";s:3:"â†";s:3:"↑";s:3:"↑";s:3:"ï¿«";s:3:"→";s:3:"↓";s:3:"↓";s:3:"ï¿­";s:3:"â– ";s:3:"ï¿®";s:3:"â—‹";s:4:"ð‘‚š";s:8:"𑂚";s:4:"ð‘‚œ";s:8:"𑂜";s:4:"ð‘‚«";s:8:"𑂫";s:4:"ð…ž";s:8:"ð…—ð…¥";s:4:"ð…Ÿ";s:8:"ð…˜ð…¥";s:4:"ð… ";s:12:"ð…˜ð…¥ð…®";s:4:"ð…¡";s:12:"ð…˜ð…¥ð…¯";s:4:"ð…¢";s:12:"ð…˜ð…¥ð…°";s:4:"ð…£";s:12:"ð…˜ð…¥ð…±";s:4:"ð…¤";s:12:"ð…˜ð…¥ð…²";s:4:"ð†»";s:8:"ð†¹ð…¥";s:4:"ð†¼";s:8:"ð†ºð…¥";s:4:"ð†½";s:12:"ð†¹ð…¥ð…®";s:4:"ð†¾";s:12:"ð†ºð…¥ð…®";s:4:"ð†¿";s:12:"ð†¹ð…¥ð…¯";s:4:"ð‡€";s:12:"ð†ºð…¥ð…¯";s:4:"ð€";s:1:"A";s:4:"ð";s:1:"B";s:4:"ð‚";s:1:"C";s:4:"ðƒ";s:1:"D";s:4:"ð„";s:1:"E";s:4:"ð…";s:1:"F";s:4:"ð†";s:1:"G";s:4:"ð‡";s:1:"H";s:4:"ðˆ";s:1:"I";s:4:"ð‰";s:1:"J";s:4:"ðŠ";s:1:"K";s:4:"ð‹";s:1:"L";s:4:"ðŒ";s:1:"M";s:4:"ð";s:1:"N";s:4:"ðŽ";s:1:"O";s:4:"ð";s:1:"P";s:4:"ð";s:1:"Q";s:4:"ð‘";s:1:"R";s:4:"ð’";s:1:"S";s:4:"ð“";s:1:"T";s:4:"ð”";s:1:"U";s:4:"ð•";s:1:"V";s:4:"ð–";s:1:"W";s:4:"ð—";s:1:"X";s:4:"ð˜";s:1:"Y";s:4:"ð™";s:1:"Z";s:4:"ðš";s:1:"a";s:4:"ð›";s:1:"b";s:4:"ðœ";s:1:"c";s:4:"ð";s:1:"d";s:4:"ðž";s:1:"e";s:4:"ðŸ";s:1:"f";s:4:"ð ";s:1:"g";s:4:"ð¡";s:1:"h";s:4:"ð¢";s:1:"i";s:4:"ð£";s:1:"j";s:4:"ð¤";s:1:"k";s:4:"ð¥";s:1:"l";s:4:"ð¦";s:1:"m";s:4:"ð§";s:1:"n";s:4:"ð¨";s:1:"o";s:4:"ð©";s:1:"p";s:4:"ðª";s:1:"q";s:4:"ð«";s:1:"r";s:4:"ð¬";s:1:"s";s:4:"ð­";s:1:"t";s:4:"ð®";s:1:"u";s:4:"ð¯";s:1:"v";s:4:"ð°";s:1:"w";s:4:"ð±";s:1:"x";s:4:"ð²";s:1:"y";s:4:"ð³";s:1:"z";s:4:"ð´";s:1:"A";s:4:"ðµ";s:1:"B";s:4:"ð¶";s:1:"C";s:4:"ð·";s:1:"D";s:4:"ð¸";s:1:"E";s:4:"ð¹";s:1:"F";s:4:"ðº";s:1:"G";s:4:"ð»";s:1:"H";s:4:"ð¼";s:1:"I";s:4:"ð½";s:1:"J";s:4:"ð¾";s:1:"K";s:4:"ð¿";s:1:"L";s:4:"ð‘€";s:1:"M";s:4:"ð‘";s:1:"N";s:4:"ð‘‚";s:1:"O";s:4:"ð‘ƒ";s:1:"P";s:4:"ð‘„";s:1:"Q";s:4:"ð‘…";s:1:"R";s:4:"ð‘†";s:1:"S";s:4:"ð‘‡";s:1:"T";s:4:"ð‘ˆ";s:1:"U";s:4:"ð‘‰";s:1:"V";s:4:"ð‘Š";s:1:"W";s:4:"ð‘‹";s:1:"X";s:4:"ð‘Œ";s:1:"Y";s:4:"ð‘";s:1:"Z";s:4:"ð‘Ž";s:1:"a";s:4:"ð‘";s:1:"b";s:4:"ð‘";s:1:"c";s:4:"ð‘‘";s:1:"d";s:4:"ð‘’";s:1:"e";s:4:"ð‘“";s:1:"f";s:4:"ð‘”";s:1:"g";s:4:"ð‘–";s:1:"i";s:4:"ð‘—";s:1:"j";s:4:"ð‘˜";s:1:"k";s:4:"ð‘™";s:1:"l";s:4:"ð‘š";s:1:"m";s:4:"ð‘›";s:1:"n";s:4:"ð‘œ";s:1:"o";s:4:"ð‘";s:1:"p";s:4:"ð‘ž";s:1:"q";s:4:"ð‘Ÿ";s:1:"r";s:4:"ð‘ ";s:1:"s";s:4:"ð‘¡";s:1:"t";s:4:"ð‘¢";s:1:"u";s:4:"ð‘£";s:1:"v";s:4:"ð‘¤";s:1:"w";s:4:"ð‘¥";s:1:"x";s:4:"ð‘¦";s:1:"y";s:4:"ð‘§";s:1:"z";s:4:"ð‘¨";s:1:"A";s:4:"ð‘©";s:1:"B";s:4:"ð‘ª";s:1:"C";s:4:"ð‘«";s:1:"D";s:4:"ð‘¬";s:1:"E";s:4:"ð‘­";s:1:"F";s:4:"ð‘®";s:1:"G";s:4:"ð‘¯";s:1:"H";s:4:"ð‘°";s:1:"I";s:4:"ð‘±";s:1:"J";s:4:"ð‘²";s:1:"K";s:4:"ð‘³";s:1:"L";s:4:"ð‘´";s:1:"M";s:4:"ð‘µ";s:1:"N";s:4:"ð‘¶";s:1:"O";s:4:"ð‘·";s:1:"P";s:4:"ð‘¸";s:1:"Q";s:4:"ð‘¹";s:1:"R";s:4:"ð‘º";s:1:"S";s:4:"ð‘»";s:1:"T";s:4:"ð‘¼";s:1:"U";s:4:"ð‘½";s:1:"V";s:4:"ð‘¾";s:1:"W";s:4:"ð‘¿";s:1:"X";s:4:"ð’€";s:1:"Y";s:4:"ð’";s:1:"Z";s:4:"ð’‚";s:1:"a";s:4:"ð’ƒ";s:1:"b";s:4:"ð’„";s:1:"c";s:4:"ð’…";s:1:"d";s:4:"ð’†";s:1:"e";s:4:"ð’‡";s:1:"f";s:4:"ð’ˆ";s:1:"g";s:4:"ð’‰";s:1:"h";s:4:"ð’Š";s:1:"i";s:4:"ð’‹";s:1:"j";s:4:"ð’Œ";s:1:"k";s:4:"ð’";s:1:"l";s:4:"ð’Ž";s:1:"m";s:4:"ð’";s:1:"n";s:4:"ð’";s:1:"o";s:4:"ð’‘";s:1:"p";s:4:"ð’’";s:1:"q";s:4:"ð’“";s:1:"r";s:4:"ð’”";s:1:"s";s:4:"ð’•";s:1:"t";s:4:"ð’–";s:1:"u";s:4:"ð’—";s:1:"v";s:4:"ð’˜";s:1:"w";s:4:"ð’™";s:1:"x";s:4:"ð’š";s:1:"y";s:4:"ð’›";s:1:"z";s:4:"ð’œ";s:1:"A";s:4:"ð’ž";s:1:"C";s:4:"ð’Ÿ";s:1:"D";s:4:"ð’¢";s:1:"G";s:4:"ð’¥";s:1:"J";s:4:"ð’¦";s:1:"K";s:4:"ð’©";s:1:"N";s:4:"ð’ª";s:1:"O";s:4:"ð’«";s:1:"P";s:4:"ð’¬";s:1:"Q";s:4:"ð’®";s:1:"S";s:4:"ð’¯";s:1:"T";s:4:"ð’°";s:1:"U";s:4:"ð’±";s:1:"V";s:4:"ð’²";s:1:"W";s:4:"ð’³";s:1:"X";s:4:"ð’´";s:1:"Y";s:4:"ð’µ";s:1:"Z";s:4:"ð’¶";s:1:"a";s:4:"ð’·";s:1:"b";s:4:"ð’¸";s:1:"c";s:4:"ð’¹";s:1:"d";s:4:"ð’»";s:1:"f";s:4:"ð’½";s:1:"h";s:4:"ð’¾";s:1:"i";s:4:"ð’¿";s:1:"j";s:4:"ð“€";s:1:"k";s:4:"ð“";s:1:"l";s:4:"ð“‚";s:1:"m";s:4:"ð“ƒ";s:1:"n";s:4:"ð“…";s:1:"p";s:4:"ð“†";s:1:"q";s:4:"ð“‡";s:1:"r";s:4:"ð“ˆ";s:1:"s";s:4:"ð“‰";s:1:"t";s:4:"ð“Š";s:1:"u";s:4:"ð“‹";s:1:"v";s:4:"ð“Œ";s:1:"w";s:4:"ð“";s:1:"x";s:4:"ð“Ž";s:1:"y";s:4:"ð“";s:1:"z";s:4:"ð“";s:1:"A";s:4:"ð“‘";s:1:"B";s:4:"ð“’";s:1:"C";s:4:"ð““";s:1:"D";s:4:"ð“”";s:1:"E";s:4:"ð“•";s:1:"F";s:4:"ð“–";s:1:"G";s:4:"ð“—";s:1:"H";s:4:"ð“˜";s:1:"I";s:4:"ð“™";s:1:"J";s:4:"ð“š";s:1:"K";s:4:"ð“›";s:1:"L";s:4:"ð“œ";s:1:"M";s:4:"ð“";s:1:"N";s:4:"ð“ž";s:1:"O";s:4:"ð“Ÿ";s:1:"P";s:4:"ð“ ";s:1:"Q";s:4:"ð“¡";s:1:"R";s:4:"ð“¢";s:1:"S";s:4:"ð“£";s:1:"T";s:4:"ð“¤";s:1:"U";s:4:"ð“¥";s:1:"V";s:4:"ð“¦";s:1:"W";s:4:"ð“§";s:1:"X";s:4:"ð“¨";s:1:"Y";s:4:"ð“©";s:1:"Z";s:4:"ð“ª";s:1:"a";s:4:"ð“«";s:1:"b";s:4:"ð“¬";s:1:"c";s:4:"ð“­";s:1:"d";s:4:"ð“®";s:1:"e";s:4:"ð“¯";s:1:"f";s:4:"ð“°";s:1:"g";s:4:"ð“±";s:1:"h";s:4:"ð“²";s:1:"i";s:4:"ð“³";s:1:"j";s:4:"ð“´";s:1:"k";s:4:"ð“µ";s:1:"l";s:4:"ð“¶";s:1:"m";s:4:"ð“·";s:1:"n";s:4:"ð“¸";s:1:"o";s:4:"ð“¹";s:1:"p";s:4:"ð“º";s:1:"q";s:4:"ð“»";s:1:"r";s:4:"ð“¼";s:1:"s";s:4:"ð“½";s:1:"t";s:4:"ð“¾";s:1:"u";s:4:"ð“¿";s:1:"v";s:4:"ð”€";s:1:"w";s:4:"ð”";s:1:"x";s:4:"ð”‚";s:1:"y";s:4:"ð”ƒ";s:1:"z";s:4:"ð”„";s:1:"A";s:4:"ð”…";s:1:"B";s:4:"ð”‡";s:1:"D";s:4:"ð”ˆ";s:1:"E";s:4:"ð”‰";s:1:"F";s:4:"ð”Š";s:1:"G";s:4:"ð”";s:1:"J";s:4:"ð”Ž";s:1:"K";s:4:"ð”";s:1:"L";s:4:"ð”";s:1:"M";s:4:"ð”‘";s:1:"N";s:4:"ð”’";s:1:"O";s:4:"ð”“";s:1:"P";s:4:"ð””";s:1:"Q";s:4:"ð”–";s:1:"S";s:4:"ð”—";s:1:"T";s:4:"ð”˜";s:1:"U";s:4:"ð”™";s:1:"V";s:4:"ð”š";s:1:"W";s:4:"ð”›";s:1:"X";s:4:"ð”œ";s:1:"Y";s:4:"ð”ž";s:1:"a";s:4:"ð”Ÿ";s:1:"b";s:4:"ð” ";s:1:"c";s:4:"ð”¡";s:1:"d";s:4:"ð”¢";s:1:"e";s:4:"ð”£";s:1:"f";s:4:"ð”¤";s:1:"g";s:4:"ð”¥";s:1:"h";s:4:"ð”¦";s:1:"i";s:4:"ð”§";s:1:"j";s:4:"ð”¨";s:1:"k";s:4:"ð”©";s:1:"l";s:4:"ð”ª";s:1:"m";s:4:"ð”«";s:1:"n";s:4:"ð”¬";s:1:"o";s:4:"ð”­";s:1:"p";s:4:"ð”®";s:1:"q";s:4:"ð”¯";s:1:"r";s:4:"ð”°";s:1:"s";s:4:"ð”±";s:1:"t";s:4:"ð”²";s:1:"u";s:4:"ð”³";s:1:"v";s:4:"ð”´";s:1:"w";s:4:"ð”µ";s:1:"x";s:4:"ð”¶";s:1:"y";s:4:"ð”·";s:1:"z";s:4:"ð”¸";s:1:"A";s:4:"ð”¹";s:1:"B";s:4:"ð”»";s:1:"D";s:4:"ð”¼";s:1:"E";s:4:"ð”½";s:1:"F";s:4:"ð”¾";s:1:"G";s:4:"ð•€";s:1:"I";s:4:"ð•";s:1:"J";s:4:"ð•‚";s:1:"K";s:4:"ð•ƒ";s:1:"L";s:4:"ð•„";s:1:"M";s:4:"ð•†";s:1:"O";s:4:"ð•Š";s:1:"S";s:4:"ð•‹";s:1:"T";s:4:"ð•Œ";s:1:"U";s:4:"ð•";s:1:"V";s:4:"ð•Ž";s:1:"W";s:4:"ð•";s:1:"X";s:4:"ð•";s:1:"Y";s:4:"ð•’";s:1:"a";s:4:"ð•“";s:1:"b";s:4:"ð•”";s:1:"c";s:4:"ð••";s:1:"d";s:4:"ð•–";s:1:"e";s:4:"ð•—";s:1:"f";s:4:"ð•˜";s:1:"g";s:4:"ð•™";s:1:"h";s:4:"ð•š";s:1:"i";s:4:"ð•›";s:1:"j";s:4:"ð•œ";s:1:"k";s:4:"ð•";s:1:"l";s:4:"ð•ž";s:1:"m";s:4:"ð•Ÿ";s:1:"n";s:4:"ð• ";s:1:"o";s:4:"ð•¡";s:1:"p";s:4:"ð•¢";s:1:"q";s:4:"ð•£";s:1:"r";s:4:"ð•¤";s:1:"s";s:4:"ð•¥";s:1:"t";s:4:"ð•¦";s:1:"u";s:4:"ð•§";s:1:"v";s:4:"ð•¨";s:1:"w";s:4:"ð•©";s:1:"x";s:4:"ð•ª";s:1:"y";s:4:"ð•«";s:1:"z";s:4:"ð•¬";s:1:"A";s:4:"ð•­";s:1:"B";s:4:"ð•®";s:1:"C";s:4:"ð•¯";s:1:"D";s:4:"ð•°";s:1:"E";s:4:"ð•±";s:1:"F";s:4:"ð•²";s:1:"G";s:4:"ð•³";s:1:"H";s:4:"ð•´";s:1:"I";s:4:"ð•µ";s:1:"J";s:4:"ð•¶";s:1:"K";s:4:"ð•·";s:1:"L";s:4:"ð•¸";s:1:"M";s:4:"ð•¹";s:1:"N";s:4:"ð•º";s:1:"O";s:4:"ð•»";s:1:"P";s:4:"ð•¼";s:1:"Q";s:4:"ð•½";s:1:"R";s:4:"ð•¾";s:1:"S";s:4:"ð•¿";s:1:"T";s:4:"ð–€";s:1:"U";s:4:"ð–";s:1:"V";s:4:"ð–‚";s:1:"W";s:4:"ð–ƒ";s:1:"X";s:4:"ð–„";s:1:"Y";s:4:"ð–…";s:1:"Z";s:4:"ð–†";s:1:"a";s:4:"ð–‡";s:1:"b";s:4:"ð–ˆ";s:1:"c";s:4:"ð–‰";s:1:"d";s:4:"ð–Š";s:1:"e";s:4:"ð–‹";s:1:"f";s:4:"ð–Œ";s:1:"g";s:4:"ð–";s:1:"h";s:4:"ð–Ž";s:1:"i";s:4:"ð–";s:1:"j";s:4:"ð–";s:1:"k";s:4:"ð–‘";s:1:"l";s:4:"ð–’";s:1:"m";s:4:"ð–“";s:1:"n";s:4:"ð–”";s:1:"o";s:4:"ð–•";s:1:"p";s:4:"ð––";s:1:"q";s:4:"ð–—";s:1:"r";s:4:"ð–˜";s:1:"s";s:4:"ð–™";s:1:"t";s:4:"ð–š";s:1:"u";s:4:"ð–›";s:1:"v";s:4:"ð–œ";s:1:"w";s:4:"ð–";s:1:"x";s:4:"ð–ž";s:1:"y";s:4:"ð–Ÿ";s:1:"z";s:4:"ð– ";s:1:"A";s:4:"ð–¡";s:1:"B";s:4:"ð–¢";s:1:"C";s:4:"ð–£";s:1:"D";s:4:"ð–¤";s:1:"E";s:4:"ð–¥";s:1:"F";s:4:"ð–¦";s:1:"G";s:4:"ð–§";s:1:"H";s:4:"ð–¨";s:1:"I";s:4:"ð–©";s:1:"J";s:4:"ð–ª";s:1:"K";s:4:"ð–«";s:1:"L";s:4:"ð–¬";s:1:"M";s:4:"ð–­";s:1:"N";s:4:"ð–®";s:1:"O";s:4:"ð–¯";s:1:"P";s:4:"ð–°";s:1:"Q";s:4:"ð–±";s:1:"R";s:4:"ð–²";s:1:"S";s:4:"ð–³";s:1:"T";s:4:"ð–´";s:1:"U";s:4:"ð–µ";s:1:"V";s:4:"ð–¶";s:1:"W";s:4:"ð–·";s:1:"X";s:4:"ð–¸";s:1:"Y";s:4:"ð–¹";s:1:"Z";s:4:"ð–º";s:1:"a";s:4:"ð–»";s:1:"b";s:4:"ð–¼";s:1:"c";s:4:"ð–½";s:1:"d";s:4:"ð–¾";s:1:"e";s:4:"ð–¿";s:1:"f";s:4:"ð—€";s:1:"g";s:4:"ð—";s:1:"h";s:4:"ð—‚";s:1:"i";s:4:"ð—ƒ";s:1:"j";s:4:"ð—„";s:1:"k";s:4:"ð—…";s:1:"l";s:4:"ð—†";s:1:"m";s:4:"ð—‡";s:1:"n";s:4:"ð—ˆ";s:1:"o";s:4:"ð—‰";s:1:"p";s:4:"ð—Š";s:1:"q";s:4:"ð—‹";s:1:"r";s:4:"ð—Œ";s:1:"s";s:4:"ð—";s:1:"t";s:4:"ð—Ž";s:1:"u";s:4:"ð—";s:1:"v";s:4:"ð—";s:1:"w";s:4:"ð—‘";s:1:"x";s:4:"ð—’";s:1:"y";s:4:"ð—“";s:1:"z";s:4:"ð—”";s:1:"A";s:4:"ð—•";s:1:"B";s:4:"ð—–";s:1:"C";s:4:"ð——";s:1:"D";s:4:"ð—˜";s:1:"E";s:4:"ð—™";s:1:"F";s:4:"ð—š";s:1:"G";s:4:"ð—›";s:1:"H";s:4:"ð—œ";s:1:"I";s:4:"ð—";s:1:"J";s:4:"ð—ž";s:1:"K";s:4:"ð—Ÿ";s:1:"L";s:4:"ð— ";s:1:"M";s:4:"ð—¡";s:1:"N";s:4:"ð—¢";s:1:"O";s:4:"ð—£";s:1:"P";s:4:"ð—¤";s:1:"Q";s:4:"ð—¥";s:1:"R";s:4:"ð—¦";s:1:"S";s:4:"ð—§";s:1:"T";s:4:"ð—¨";s:1:"U";s:4:"ð—©";s:1:"V";s:4:"ð—ª";s:1:"W";s:4:"ð—«";s:1:"X";s:4:"ð—¬";s:1:"Y";s:4:"ð—­";s:1:"Z";s:4:"ð—®";s:1:"a";s:4:"ð—¯";s:1:"b";s:4:"ð—°";s:1:"c";s:4:"ð—±";s:1:"d";s:4:"ð—²";s:1:"e";s:4:"ð—³";s:1:"f";s:4:"ð—´";s:1:"g";s:4:"ð—µ";s:1:"h";s:4:"ð—¶";s:1:"i";s:4:"ð—·";s:1:"j";s:4:"ð—¸";s:1:"k";s:4:"ð—¹";s:1:"l";s:4:"ð—º";s:1:"m";s:4:"ð—»";s:1:"n";s:4:"ð—¼";s:1:"o";s:4:"ð—½";s:1:"p";s:4:"ð—¾";s:1:"q";s:4:"ð—¿";s:1:"r";s:4:"ð˜€";s:1:"s";s:4:"ð˜";s:1:"t";s:4:"ð˜‚";s:1:"u";s:4:"ð˜ƒ";s:1:"v";s:4:"ð˜„";s:1:"w";s:4:"ð˜…";s:1:"x";s:4:"ð˜†";s:1:"y";s:4:"ð˜‡";s:1:"z";s:4:"ð˜ˆ";s:1:"A";s:4:"ð˜‰";s:1:"B";s:4:"ð˜Š";s:1:"C";s:4:"ð˜‹";s:1:"D";s:4:"ð˜Œ";s:1:"E";s:4:"ð˜";s:1:"F";s:4:"ð˜Ž";s:1:"G";s:4:"ð˜";s:1:"H";s:4:"ð˜";s:1:"I";s:4:"ð˜‘";s:1:"J";s:4:"ð˜’";s:1:"K";s:4:"ð˜“";s:1:"L";s:4:"ð˜”";s:1:"M";s:4:"ð˜•";s:1:"N";s:4:"ð˜–";s:1:"O";s:4:"ð˜—";s:1:"P";s:4:"ð˜˜";s:1:"Q";s:4:"ð˜™";s:1:"R";s:4:"ð˜š";s:1:"S";s:4:"ð˜›";s:1:"T";s:4:"ð˜œ";s:1:"U";s:4:"ð˜";s:1:"V";s:4:"ð˜ž";s:1:"W";s:4:"ð˜Ÿ";s:1:"X";s:4:"ð˜ ";s:1:"Y";s:4:"ð˜¡";s:1:"Z";s:4:"ð˜¢";s:1:"a";s:4:"ð˜£";s:1:"b";s:4:"ð˜¤";s:1:"c";s:4:"ð˜¥";s:1:"d";s:4:"ð˜¦";s:1:"e";s:4:"ð˜§";s:1:"f";s:4:"ð˜¨";s:1:"g";s:4:"ð˜©";s:1:"h";s:4:"ð˜ª";s:1:"i";s:4:"ð˜«";s:1:"j";s:4:"ð˜¬";s:1:"k";s:4:"ð˜­";s:1:"l";s:4:"ð˜®";s:1:"m";s:4:"ð˜¯";s:1:"n";s:4:"ð˜°";s:1:"o";s:4:"ð˜±";s:1:"p";s:4:"ð˜²";s:1:"q";s:4:"ð˜³";s:1:"r";s:4:"ð˜´";s:1:"s";s:4:"ð˜µ";s:1:"t";s:4:"ð˜¶";s:1:"u";s:4:"ð˜·";s:1:"v";s:4:"ð˜¸";s:1:"w";s:4:"ð˜¹";s:1:"x";s:4:"ð˜º";s:1:"y";s:4:"ð˜»";s:1:"z";s:4:"ð˜¼";s:1:"A";s:4:"ð˜½";s:1:"B";s:4:"ð˜¾";s:1:"C";s:4:"ð˜¿";s:1:"D";s:4:"ð™€";s:1:"E";s:4:"ð™";s:1:"F";s:4:"ð™‚";s:1:"G";s:4:"ð™ƒ";s:1:"H";s:4:"ð™„";s:1:"I";s:4:"ð™…";s:1:"J";s:4:"ð™†";s:1:"K";s:4:"ð™‡";s:1:"L";s:4:"ð™ˆ";s:1:"M";s:4:"ð™‰";s:1:"N";s:4:"ð™Š";s:1:"O";s:4:"ð™‹";s:1:"P";s:4:"ð™Œ";s:1:"Q";s:4:"ð™";s:1:"R";s:4:"ð™Ž";s:1:"S";s:4:"ð™";s:1:"T";s:4:"ð™";s:1:"U";s:4:"ð™‘";s:1:"V";s:4:"ð™’";s:1:"W";s:4:"ð™“";s:1:"X";s:4:"ð™”";s:1:"Y";s:4:"ð™•";s:1:"Z";s:4:"ð™–";s:1:"a";s:4:"ð™—";s:1:"b";s:4:"ð™˜";s:1:"c";s:4:"ð™™";s:1:"d";s:4:"ð™š";s:1:"e";s:4:"ð™›";s:1:"f";s:4:"ð™œ";s:1:"g";s:4:"ð™";s:1:"h";s:4:"ð™ž";s:1:"i";s:4:"ð™Ÿ";s:1:"j";s:4:"ð™ ";s:1:"k";s:4:"ð™¡";s:1:"l";s:4:"ð™¢";s:1:"m";s:4:"ð™£";s:1:"n";s:4:"ð™¤";s:1:"o";s:4:"ð™¥";s:1:"p";s:4:"ð™¦";s:1:"q";s:4:"ð™§";s:1:"r";s:4:"ð™¨";s:1:"s";s:4:"ð™©";s:1:"t";s:4:"ð™ª";s:1:"u";s:4:"ð™«";s:1:"v";s:4:"ð™¬";s:1:"w";s:4:"ð™­";s:1:"x";s:4:"ð™®";s:1:"y";s:4:"ð™¯";s:1:"z";s:4:"ð™°";s:1:"A";s:4:"ð™±";s:1:"B";s:4:"ð™²";s:1:"C";s:4:"ð™³";s:1:"D";s:4:"ð™´";s:1:"E";s:4:"ð™µ";s:1:"F";s:4:"ð™¶";s:1:"G";s:4:"ð™·";s:1:"H";s:4:"ð™¸";s:1:"I";s:4:"ð™¹";s:1:"J";s:4:"ð™º";s:1:"K";s:4:"ð™»";s:1:"L";s:4:"ð™¼";s:1:"M";s:4:"ð™½";s:1:"N";s:4:"ð™¾";s:1:"O";s:4:"ð™¿";s:1:"P";s:4:"ðš€";s:1:"Q";s:4:"ðš";s:1:"R";s:4:"ðš‚";s:1:"S";s:4:"ðšƒ";s:1:"T";s:4:"ðš„";s:1:"U";s:4:"ðš…";s:1:"V";s:4:"ðš†";s:1:"W";s:4:"ðš‡";s:1:"X";s:4:"ðšˆ";s:1:"Y";s:4:"ðš‰";s:1:"Z";s:4:"ðšŠ";s:1:"a";s:4:"ðš‹";s:1:"b";s:4:"ðšŒ";s:1:"c";s:4:"ðš";s:1:"d";s:4:"ðšŽ";s:1:"e";s:4:"ðš";s:1:"f";s:4:"ðš";s:1:"g";s:4:"ðš‘";s:1:"h";s:4:"ðš’";s:1:"i";s:4:"ðš“";s:1:"j";s:4:"ðš”";s:1:"k";s:4:"ðš•";s:1:"l";s:4:"ðš–";s:1:"m";s:4:"ðš—";s:1:"n";s:4:"ðš˜";s:1:"o";s:4:"ðš™";s:1:"p";s:4:"ðšš";s:1:"q";s:4:"ðš›";s:1:"r";s:4:"ðšœ";s:1:"s";s:4:"ðš";s:1:"t";s:4:"ðšž";s:1:"u";s:4:"ðšŸ";s:1:"v";s:4:"ðš ";s:1:"w";s:4:"ðš¡";s:1:"x";s:4:"ðš¢";s:1:"y";s:4:"ðš£";s:1:"z";s:4:"ðš¤";s:2:"ı";s:4:"ðš¥";s:2:"È·";s:4:"ðš¨";s:2:"Α";s:4:"ðš©";s:2:"Î’";s:4:"ðšª";s:2:"Γ";s:4:"ðš«";s:2:"Δ";s:4:"ðš¬";s:2:"Ε";s:4:"ðš­";s:2:"Ζ";s:4:"ðš®";s:2:"Η";s:4:"ðš¯";s:2:"Θ";s:4:"ðš°";s:2:"Ι";s:4:"ðš±";s:2:"Κ";s:4:"ðš²";s:2:"Λ";s:4:"ðš³";s:2:"Îœ";s:4:"ðš´";s:2:"Î";s:4:"ðšµ";s:2:"Ξ";s:4:"ðš¶";s:2:"Ο";s:4:"ðš·";s:2:"Π";s:4:"ðš¸";s:2:"Ρ";s:4:"ðš¹";s:2:"Θ";s:4:"ðšº";s:2:"Σ";s:4:"ðš»";s:2:"Τ";s:4:"ðš¼";s:2:"Î¥";s:4:"ðš½";s:2:"Φ";s:4:"ðš¾";s:2:"Χ";s:4:"ðš¿";s:2:"Ψ";s:4:"ð›€";s:2:"Ω";s:4:"ð›";s:3:"∇";s:4:"ð›‚";s:2:"α";s:4:"ð›ƒ";s:2:"β";s:4:"ð›„";s:2:"γ";s:4:"ð›…";s:2:"δ";s:4:"ð›†";s:2:"ε";s:4:"ð›‡";s:2:"ζ";s:4:"ð›ˆ";s:2:"η";s:4:"ð›‰";s:2:"θ";s:4:"ð›Š";s:2:"ι";s:4:"ð›‹";s:2:"κ";s:4:"ð›Œ";s:2:"λ";s:4:"ð›";s:2:"μ";s:4:"ð›Ž";s:2:"ν";s:4:"ð›";s:2:"ξ";s:4:"ð›";s:2:"ο";s:4:"ð›‘";s:2:"Ï€";s:4:"ð›’";s:2:"Ï";s:4:"ð›“";s:2:"Ï‚";s:4:"ð›”";s:2:"σ";s:4:"ð›•";s:2:"Ï„";s:4:"ð›–";s:2:"Ï…";s:4:"ð›—";s:2:"φ";s:4:"ð›˜";s:2:"χ";s:4:"ð›™";s:2:"ψ";s:4:"ð›š";s:2:"ω";s:4:"ð››";s:3:"∂";s:4:"ð›œ";s:2:"ε";s:4:"ð›";s:2:"θ";s:4:"ð›ž";s:2:"κ";s:4:"ð›Ÿ";s:2:"φ";s:4:"ð› ";s:2:"Ï";s:4:"ð›¡";s:2:"Ï€";s:4:"ð›¢";s:2:"Α";s:4:"ð›£";s:2:"Î’";s:4:"ð›¤";s:2:"Γ";s:4:"ð›¥";s:2:"Δ";s:4:"ð›¦";s:2:"Ε";s:4:"ð›§";s:2:"Ζ";s:4:"ð›¨";s:2:"Η";s:4:"ð›©";s:2:"Θ";s:4:"ð›ª";s:2:"Ι";s:4:"ð›«";s:2:"Κ";s:4:"ð›¬";s:2:"Λ";s:4:"ð›­";s:2:"Îœ";s:4:"ð›®";s:2:"Î";s:4:"ð›¯";s:2:"Ξ";s:4:"ð›°";s:2:"Ο";s:4:"ð›±";s:2:"Π";s:4:"ð›²";s:2:"Ρ";s:4:"ð›³";s:2:"Θ";s:4:"ð›´";s:2:"Σ";s:4:"ð›µ";s:2:"Τ";s:4:"ð›¶";s:2:"Î¥";s:4:"ð›·";s:2:"Φ";s:4:"ð›¸";s:2:"Χ";s:4:"ð›¹";s:2:"Ψ";s:4:"ð›º";s:2:"Ω";s:4:"ð›»";s:3:"∇";s:4:"ð›¼";s:2:"α";s:4:"ð›½";s:2:"β";s:4:"ð›¾";s:2:"γ";s:4:"ð›¿";s:2:"δ";s:4:"ðœ€";s:2:"ε";s:4:"ðœ";s:2:"ζ";s:4:"ðœ‚";s:2:"η";s:4:"ðœƒ";s:2:"θ";s:4:"ðœ„";s:2:"ι";s:4:"ðœ…";s:2:"κ";s:4:"ðœ†";s:2:"λ";s:4:"ðœ‡";s:2:"μ";s:4:"ðœˆ";s:2:"ν";s:4:"ðœ‰";s:2:"ξ";s:4:"ðœŠ";s:2:"ο";s:4:"ðœ‹";s:2:"Ï€";s:4:"ðœŒ";s:2:"Ï";s:4:"ðœ";s:2:"Ï‚";s:4:"ðœŽ";s:2:"σ";s:4:"ðœ";s:2:"Ï„";s:4:"ðœ";s:2:"Ï…";s:4:"ðœ‘";s:2:"φ";s:4:"ðœ’";s:2:"χ";s:4:"ðœ“";s:2:"ψ";s:4:"ðœ”";s:2:"ω";s:4:"ðœ•";s:3:"∂";s:4:"ðœ–";s:2:"ε";s:4:"ðœ—";s:2:"θ";s:4:"ðœ˜";s:2:"κ";s:4:"ðœ™";s:2:"φ";s:4:"ðœš";s:2:"Ï";s:4:"ðœ›";s:2:"Ï€";s:4:"ðœœ";s:2:"Α";s:4:"ðœ";s:2:"Î’";s:4:"ðœž";s:2:"Γ";s:4:"ðœŸ";s:2:"Δ";s:4:"ðœ ";s:2:"Ε";s:4:"ðœ¡";s:2:"Ζ";s:4:"ðœ¢";s:2:"Η";s:4:"ðœ£";s:2:"Θ";s:4:"ðœ¤";s:2:"Ι";s:4:"ðœ¥";s:2:"Κ";s:4:"ðœ¦";s:2:"Λ";s:4:"ðœ§";s:2:"Îœ";s:4:"ðœ¨";s:2:"Î";s:4:"ðœ©";s:2:"Ξ";s:4:"ðœª";s:2:"Ο";s:4:"ðœ«";s:2:"Π";s:4:"ðœ¬";s:2:"Ρ";s:4:"ðœ­";s:2:"Θ";s:4:"ðœ®";s:2:"Σ";s:4:"ðœ¯";s:2:"Τ";s:4:"ðœ°";s:2:"Î¥";s:4:"ðœ±";s:2:"Φ";s:4:"ðœ²";s:2:"Χ";s:4:"ðœ³";s:2:"Ψ";s:4:"ðœ´";s:2:"Ω";s:4:"ðœµ";s:3:"∇";s:4:"ðœ¶";s:2:"α";s:4:"ðœ·";s:2:"β";s:4:"ðœ¸";s:2:"γ";s:4:"ðœ¹";s:2:"δ";s:4:"ðœº";s:2:"ε";s:4:"ðœ»";s:2:"ζ";s:4:"ðœ¼";s:2:"η";s:4:"ðœ½";s:2:"θ";s:4:"ðœ¾";s:2:"ι";s:4:"ðœ¿";s:2:"κ";s:4:"ð€";s:2:"λ";s:4:"ð";s:2:"μ";s:4:"ð‚";s:2:"ν";s:4:"ðƒ";s:2:"ξ";s:4:"ð„";s:2:"ο";s:4:"ð…";s:2:"Ï€";s:4:"ð†";s:2:"Ï";s:4:"ð‡";s:2:"Ï‚";s:4:"ðˆ";s:2:"σ";s:4:"ð‰";s:2:"Ï„";s:4:"ðŠ";s:2:"Ï…";s:4:"ð‹";s:2:"φ";s:4:"ðŒ";s:2:"χ";s:4:"ð";s:2:"ψ";s:4:"ðŽ";s:2:"ω";s:4:"ð";s:3:"∂";s:4:"ð";s:2:"ε";s:4:"ð‘";s:2:"θ";s:4:"ð’";s:2:"κ";s:4:"ð“";s:2:"φ";s:4:"ð”";s:2:"Ï";s:4:"ð•";s:2:"Ï€";s:4:"ð–";s:2:"Α";s:4:"ð—";s:2:"Î’";s:4:"ð˜";s:2:"Γ";s:4:"ð™";s:2:"Δ";s:4:"ðš";s:2:"Ε";s:4:"ð›";s:2:"Ζ";s:4:"ðœ";s:2:"Η";s:4:"ð";s:2:"Θ";s:4:"ðž";s:2:"Ι";s:4:"ðŸ";s:2:"Κ";s:4:"ð ";s:2:"Λ";s:4:"ð¡";s:2:"Îœ";s:4:"ð¢";s:2:"Î";s:4:"ð£";s:2:"Ξ";s:4:"ð¤";s:2:"Ο";s:4:"ð¥";s:2:"Π";s:4:"ð¦";s:2:"Ρ";s:4:"ð§";s:2:"Θ";s:4:"ð¨";s:2:"Σ";s:4:"ð©";s:2:"Τ";s:4:"ðª";s:2:"Î¥";s:4:"ð«";s:2:"Φ";s:4:"ð¬";s:2:"Χ";s:4:"ð­";s:2:"Ψ";s:4:"ð®";s:2:"Ω";s:4:"ð¯";s:3:"∇";s:4:"ð°";s:2:"α";s:4:"ð±";s:2:"β";s:4:"ð²";s:2:"γ";s:4:"ð³";s:2:"δ";s:4:"ð´";s:2:"ε";s:4:"ðµ";s:2:"ζ";s:4:"ð¶";s:2:"η";s:4:"ð·";s:2:"θ";s:4:"ð¸";s:2:"ι";s:4:"ð¹";s:2:"κ";s:4:"ðº";s:2:"λ";s:4:"ð»";s:2:"μ";s:4:"ð¼";s:2:"ν";s:4:"ð½";s:2:"ξ";s:4:"ð¾";s:2:"ο";s:4:"ð¿";s:2:"Ï€";s:4:"ðž€";s:2:"Ï";s:4:"ðž";s:2:"Ï‚";s:4:"ðž‚";s:2:"σ";s:4:"ðžƒ";s:2:"Ï„";s:4:"ðž„";s:2:"Ï…";s:4:"ðž…";s:2:"φ";s:4:"ðž†";s:2:"χ";s:4:"ðž‡";s:2:"ψ";s:4:"ðžˆ";s:2:"ω";s:4:"ðž‰";s:3:"∂";s:4:"ðžŠ";s:2:"ε";s:4:"ðž‹";s:2:"θ";s:4:"ðžŒ";s:2:"κ";s:4:"ðž";s:2:"φ";s:4:"ðžŽ";s:2:"Ï";s:4:"ðž";s:2:"Ï€";s:4:"ðž";s:2:"Α";s:4:"ðž‘";s:2:"Î’";s:4:"ðž’";s:2:"Γ";s:4:"ðž“";s:2:"Δ";s:4:"ðž”";s:2:"Ε";s:4:"ðž•";s:2:"Ζ";s:4:"ðž–";s:2:"Η";s:4:"ðž—";s:2:"Θ";s:4:"ðž˜";s:2:"Ι";s:4:"ðž™";s:2:"Κ";s:4:"ðžš";s:2:"Λ";s:4:"ðž›";s:2:"Îœ";s:4:"ðžœ";s:2:"Î";s:4:"ðž";s:2:"Ξ";s:4:"ðžž";s:2:"Ο";s:4:"ðžŸ";s:2:"Π";s:4:"ðž ";s:2:"Ρ";s:4:"ðž¡";s:2:"Θ";s:4:"ðž¢";s:2:"Σ";s:4:"ðž£";s:2:"Τ";s:4:"ðž¤";s:2:"Î¥";s:4:"ðž¥";s:2:"Φ";s:4:"ðž¦";s:2:"Χ";s:4:"ðž§";s:2:"Ψ";s:4:"ðž¨";s:2:"Ω";s:4:"ðž©";s:3:"∇";s:4:"ðžª";s:2:"α";s:4:"ðž«";s:2:"β";s:4:"ðž¬";s:2:"γ";s:4:"ðž­";s:2:"δ";s:4:"ðž®";s:2:"ε";s:4:"ðž¯";s:2:"ζ";s:4:"ðž°";s:2:"η";s:4:"ðž±";s:2:"θ";s:4:"ðž²";s:2:"ι";s:4:"ðž³";s:2:"κ";s:4:"ðž´";s:2:"λ";s:4:"ðžµ";s:2:"μ";s:4:"ðž¶";s:2:"ν";s:4:"ðž·";s:2:"ξ";s:4:"ðž¸";s:2:"ο";s:4:"ðž¹";s:2:"Ï€";s:4:"ðžº";s:2:"Ï";s:4:"ðž»";s:2:"Ï‚";s:4:"ðž¼";s:2:"σ";s:4:"ðž½";s:2:"Ï„";s:4:"ðž¾";s:2:"Ï…";s:4:"ðž¿";s:2:"φ";s:4:"ðŸ€";s:2:"χ";s:4:"ðŸ";s:2:"ψ";s:4:"ðŸ‚";s:2:"ω";s:4:"ðŸƒ";s:3:"∂";s:4:"ðŸ„";s:2:"ε";s:4:"ðŸ…";s:2:"θ";s:4:"ðŸ†";s:2:"κ";s:4:"ðŸ‡";s:2:"φ";s:4:"ðŸˆ";s:2:"Ï";s:4:"ðŸ‰";s:2:"Ï€";s:4:"ðŸŠ";s:2:"Ïœ";s:4:"ðŸ‹";s:2:"Ï";s:4:"ðŸŽ";s:1:"0";s:4:"ðŸ";s:1:"1";s:4:"ðŸ";s:1:"2";s:4:"ðŸ‘";s:1:"3";s:4:"ðŸ’";s:1:"4";s:4:"ðŸ“";s:1:"5";s:4:"ðŸ”";s:1:"6";s:4:"ðŸ•";s:1:"7";s:4:"ðŸ–";s:1:"8";s:4:"ðŸ—";s:1:"9";s:4:"ðŸ˜";s:1:"0";s:4:"ðŸ™";s:1:"1";s:4:"ðŸš";s:1:"2";s:4:"ðŸ›";s:1:"3";s:4:"ðŸœ";s:1:"4";s:4:"ðŸ";s:1:"5";s:4:"ðŸž";s:1:"6";s:4:"ðŸŸ";s:1:"7";s:4:"ðŸ ";s:1:"8";s:4:"ðŸ¡";s:1:"9";s:4:"ðŸ¢";s:1:"0";s:4:"ðŸ£";s:1:"1";s:4:"ðŸ¤";s:1:"2";s:4:"ðŸ¥";s:1:"3";s:4:"ðŸ¦";s:1:"4";s:4:"ðŸ§";s:1:"5";s:4:"ðŸ¨";s:1:"6";s:4:"ðŸ©";s:1:"7";s:4:"ðŸª";s:1:"8";s:4:"ðŸ«";s:1:"9";s:4:"ðŸ¬";s:1:"0";s:4:"ðŸ­";s:1:"1";s:4:"ðŸ®";s:1:"2";s:4:"ðŸ¯";s:1:"3";s:4:"ðŸ°";s:1:"4";s:4:"ðŸ±";s:1:"5";s:4:"ðŸ²";s:1:"6";s:4:"ðŸ³";s:1:"7";s:4:"ðŸ´";s:1:"8";s:4:"ðŸµ";s:1:"9";s:4:"ðŸ¶";s:1:"0";s:4:"ðŸ·";s:1:"1";s:4:"ðŸ¸";s:1:"2";s:4:"ðŸ¹";s:1:"3";s:4:"ðŸº";s:1:"4";s:4:"ðŸ»";s:1:"5";s:4:"ðŸ¼";s:1:"6";s:4:"ðŸ½";s:1:"7";s:4:"ðŸ¾";s:1:"8";s:4:"ðŸ¿";s:1:"9";s:4:"🄀";s:2:"0.";s:4:"ðŸ„";s:2:"0,";s:4:"🄂";s:2:"1,";s:4:"🄃";s:2:"2,";s:4:"🄄";s:2:"3,";s:4:"🄅";s:2:"4,";s:4:"🄆";s:2:"5,";s:4:"🄇";s:2:"6,";s:4:"🄈";s:2:"7,";s:4:"🄉";s:2:"8,";s:4:"🄊";s:2:"9,";s:4:"ðŸ„";s:3:"(A)";s:4:"🄑";s:3:"(B)";s:4:"🄒";s:3:"(C)";s:4:"🄓";s:3:"(D)";s:4:"🄔";s:3:"(E)";s:4:"🄕";s:3:"(F)";s:4:"🄖";s:3:"(G)";s:4:"🄗";s:3:"(H)";s:4:"🄘";s:3:"(I)";s:4:"🄙";s:3:"(J)";s:4:"🄚";s:3:"(K)";s:4:"🄛";s:3:"(L)";s:4:"🄜";s:3:"(M)";s:4:"ðŸ„";s:3:"(N)";s:4:"🄞";s:3:"(O)";s:4:"🄟";s:3:"(P)";s:4:"🄠";s:3:"(Q)";s:4:"🄡";s:3:"(R)";s:4:"🄢";s:3:"(S)";s:4:"🄣";s:3:"(T)";s:4:"🄤";s:3:"(U)";s:4:"🄥";s:3:"(V)";s:4:"🄦";s:3:"(W)";s:4:"🄧";s:3:"(X)";s:4:"🄨";s:3:"(Y)";s:4:"🄩";s:3:"(Z)";s:4:"🄪";s:7:"〔S〕";s:4:"🄫";s:1:"C";s:4:"🄬";s:1:"R";s:4:"🄭";s:2:"CD";s:4:"🄮";s:2:"WZ";s:4:"🄰";s:1:"A";s:4:"🄱";s:1:"B";s:4:"🄲";s:1:"C";s:4:"🄳";s:1:"D";s:4:"🄴";s:1:"E";s:4:"🄵";s:1:"F";s:4:"🄶";s:1:"G";s:4:"🄷";s:1:"H";s:4:"🄸";s:1:"I";s:4:"🄹";s:1:"J";s:4:"🄺";s:1:"K";s:4:"🄻";s:1:"L";s:4:"🄼";s:1:"M";s:4:"🄽";s:1:"N";s:4:"🄾";s:1:"O";s:4:"🄿";s:1:"P";s:4:"🅀";s:1:"Q";s:4:"ðŸ…";s:1:"R";s:4:"🅂";s:1:"S";s:4:"🅃";s:1:"T";s:4:"🅄";s:1:"U";s:4:"🅅";s:1:"V";s:4:"🅆";s:1:"W";s:4:"🅇";s:1:"X";s:4:"🅈";s:1:"Y";s:4:"🅉";s:1:"Z";s:4:"🅊";s:2:"HV";s:4:"🅋";s:2:"MV";s:4:"🅌";s:2:"SD";s:4:"ðŸ…";s:2:"SS";s:4:"🅎";s:3:"PPV";s:4:"ðŸ…";s:2:"WC";s:4:"ðŸ†";s:2:"DJ";s:4:"🈀";s:6:"ã»ã‹";s:4:"ðŸˆ";s:6:"ココ";s:4:"🈂";s:3:"サ";s:4:"ðŸˆ";s:3:"手";s:4:"🈑";s:3:"å­—";s:4:"🈒";s:3:"åŒ";s:4:"🈓";s:6:"デ";s:4:"🈔";s:3:"二";s:4:"🈕";s:3:"多";s:4:"🈖";s:3:"解";s:4:"🈗";s:3:"天";s:4:"🈘";s:3:"交";s:4:"🈙";s:3:"映";s:4:"🈚";s:3:"ç„¡";s:4:"🈛";s:3:"æ–™";s:4:"🈜";s:3:"å‰";s:4:"ðŸˆ";s:3:"後";s:4:"🈞";s:3:"å†";s:4:"🈟";s:3:"æ–°";s:4:"🈠";s:3:"åˆ";s:4:"🈡";s:3:"終";s:4:"🈢";s:3:"生";s:4:"🈣";s:3:"販";s:4:"🈤";s:3:"声";s:4:"🈥";s:3:"å¹";s:4:"🈦";s:3:"æ¼”";s:4:"🈧";s:3:"投";s:4:"🈨";s:3:"æ•";s:4:"🈩";s:3:"一";s:4:"🈪";s:3:"三";s:4:"🈫";s:3:"éŠ";s:4:"🈬";s:3:"å·¦";s:4:"🈭";s:3:"中";s:4:"🈮";s:3:"å³";s:4:"🈯";s:3:"指";s:4:"🈰";s:3:"èµ°";s:4:"🈱";s:3:"打";s:4:"🈲";s:3:"ç¦";s:4:"🈳";s:3:"空";s:4:"🈴";s:3:"åˆ";s:4:"🈵";s:3:"満";s:4:"🈶";s:3:"有";s:4:"🈷";s:3:"月";s:4:"🈸";s:3:"申";s:4:"🈹";s:3:"割";s:4:"🈺";s:3:"å–¶";s:4:"🉀";s:9:"〔本〕";s:4:"ðŸ‰";s:9:"〔三〕";s:4:"🉂";s:9:"〔二〕";s:4:"🉃";s:9:"〔安〕";s:4:"🉄";s:9:"〔点〕";s:4:"🉅";s:9:"〔打〕";s:4:"🉆";s:9:"〔盗〕";s:4:"🉇";s:9:"〔å‹ã€•";s:4:"🉈";s:9:"〔敗〕";s:4:"ðŸ‰";s:3:"å¾—";s:4:"🉑";s:3:"å¯";s:4:"丽";s:3:"丽";s:4:"ð¯ ";s:3:"丸";s:4:"乁";s:3:"ä¹";s:4:"𠄢";s:4:"ð „¢";s:4:"你";s:3:"ä½ ";s:4:"侮";s:3:"ä¾®";s:4:"侻";s:3:"ä¾»";s:4:"倂";s:3:"倂";s:4:"偺";s:3:"åº";s:4:"備";s:3:"å‚™";s:4:"僧";s:3:"僧";s:4:"像";s:3:"åƒ";s:4:"㒞";s:3:"ã’ž";s:4:"ð¯ ";s:4:"𠘺";s:4:"免";s:3:"å…";s:4:"ð¯ ";s:3:"å…”";s:4:"ð¯ ";s:3:"å…¤";s:4:"具";s:3:"å…·";s:4:"𠔜";s:4:"𠔜";s:4:"㒹";s:3:"ã’¹";s:4:"內";s:3:"å…§";s:4:"再";s:3:"å†";s:4:"𠕋";s:4:"ð •‹";s:4:"冗";s:3:"冗";s:4:"冤";s:3:"冤";s:4:"仌";s:3:"仌";s:4:"冬";s:3:"冬";s:4:"况";s:3:"况";s:4:"𩇟";s:4:"𩇟";s:4:"ð¯ ";s:3:"凵";s:4:"刃";s:3:"刃";s:4:"㓟";s:3:"ã“Ÿ";s:4:"刻";s:3:"刻";s:4:"剆";s:3:"剆";s:4:"割";s:3:"割";s:4:"剷";s:3:"剷";s:4:"㔕";s:3:"㔕";s:4:"勇";s:3:"勇";s:4:"勉";s:3:"勉";s:4:"勤";s:3:"勤";s:4:"勺";s:3:"勺";s:4:"包";s:3:"包";s:4:"匆";s:3:"匆";s:4:"北";s:3:"北";s:4:"卉";s:3:"å‰";s:4:"卑";s:3:"å‘";s:4:"博";s:3:"åš";s:4:"即";s:3:"å³";s:4:"卽";s:3:"å½";s:4:"卿";s:3:"å¿";s:4:"卿";s:3:"å¿";s:4:"卿";s:3:"å¿";s:4:"𠨬";s:4:"𠨬";s:4:"灰";s:3:"ç°";s:4:"及";s:3:"åŠ";s:4:"叟";s:3:"åŸ";s:4:"𠭣";s:4:"ð ­£";s:4:"叫";s:3:"å«";s:4:"叱";s:3:"å±";s:4:"吆";s:3:"å†";s:4:"咞";s:3:"å’ž";s:4:"吸";s:3:"å¸";s:4:"呈";s:3:"呈";s:4:"周";s:3:"周";s:4:"咢";s:3:"å’¢";s:4:"ð¯¡";s:3:"哶";s:4:"唐";s:3:"å”";s:4:"啓";s:3:"å•“";s:4:"啣";s:3:"å•£";s:4:"善";s:3:"å–„";s:4:"善";s:3:"å–„";s:4:"喙";s:3:"å–™";s:4:"喫";s:3:"å–«";s:4:"喳";s:3:"å–³";s:4:"嗂";s:3:"å—‚";s:4:"圖";s:3:"圖";s:4:"嘆";s:3:"嘆";s:4:"ð¯¡";s:3:"圗";s:4:"噑";s:3:"噑";s:4:"ð¯¡";s:3:"å™´";s:4:"ð¯¡";s:3:"切";s:4:"壮";s:3:"壮";s:4:"城";s:3:"城";s:4:"埴";s:3:"埴";s:4:"堍";s:3:"å ";s:4:"型";s:3:"åž‹";s:4:"堲";s:3:"å ²";s:4:"報";s:3:"å ±";s:4:"墬";s:3:"墬";s:4:"𡓤";s:4:"𡓤";s:4:"売";s:3:"売";s:4:"壷";s:3:"壷";s:4:"夆";s:3:"夆";s:4:"ð¯¡";s:3:"多";s:4:"夢";s:3:"夢";s:4:"奢";s:3:"奢";s:4:"𡚨";s:4:"𡚨";s:4:"𡛪";s:4:"𡛪";s:4:"姬";s:3:"姬";s:4:"娛";s:3:"娛";s:4:"娧";s:3:"娧";s:4:"姘";s:3:"姘";s:4:"婦";s:3:"婦";s:4:"㛮";s:3:"ã›®";s:4:"㛼";s:3:"㛼";s:4:"嬈";s:3:"嬈";s:4:"嬾";s:3:"嬾";s:4:"嬾";s:3:"嬾";s:4:"𡧈";s:4:"𡧈";s:4:"寃";s:3:"寃";s:4:"寘";s:3:"寘";s:4:"寧";s:3:"寧";s:4:"寳";s:3:"寳";s:4:"𡬘";s:4:"𡬘";s:4:"寿";s:3:"寿";s:4:"将";s:3:"å°†";s:4:"当";s:3:"当";s:4:"尢";s:3:"å°¢";s:4:"㞁";s:3:"ãž";s:4:"屠";s:3:"å± ";s:4:"屮";s:3:"å±®";s:4:"峀";s:3:"å³€";s:4:"岍";s:3:"å²";s:4:"𡷤";s:4:"ð¡·¤";s:4:"嵃";s:3:"嵃";s:4:"𡷦";s:4:"ð¡·¦";s:4:"嵮";s:3:"åµ®";s:4:"嵫";s:3:"嵫";s:4:"嵼";s:3:"åµ¼";s:4:"ð¯¢";s:3:"å·¡";s:4:"巢";s:3:"å·¢";s:4:"㠯";s:3:"ã ¯";s:4:"巽";s:3:"å·½";s:4:"帨";s:3:"帨";s:4:"帽";s:3:"帽";s:4:"幩";s:3:"幩";s:4:"㡢";s:3:"ã¡¢";s:4:"𢆃";s:4:"𢆃";s:4:"㡼";s:3:"㡼";s:4:"庰";s:3:"庰";s:4:"庳";s:3:"庳";s:4:"ð¯¢";s:3:"庶";s:4:"廊";s:3:"廊";s:4:"ð¯¢";s:4:"𪎒";s:4:"ð¯¢";s:3:"廾";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"𢌱";s:4:"舁";s:3:"èˆ";s:4:"弢";s:3:"å¼¢";s:4:"弢";s:3:"å¼¢";s:4:"㣇";s:3:"㣇";s:4:"𣊸";s:4:"𣊸";s:4:"𦇚";s:4:"𦇚";s:4:"形";s:3:"å½¢";s:4:"彫";s:3:"彫";s:4:"㣣";s:3:"㣣";s:4:"徚";s:3:"徚";s:4:"ð¯¢";s:3:"å¿";s:4:"志";s:3:"å¿—";s:4:"忹";s:3:"忹";s:4:"悁";s:3:"æ‚";s:4:"㤺";s:3:"㤺";s:4:"㤜";s:3:"㤜";s:4:"悔";s:3:"æ‚”";s:4:"𢛔";s:4:"𢛔";s:4:"惇";s:3:"惇";s:4:"慈";s:3:"æ…ˆ";s:4:"慌";s:3:"æ…Œ";s:4:"慎";s:3:"æ…Ž";s:4:"慌";s:3:"æ…Œ";s:4:"慺";s:3:"æ…º";s:4:"憎";s:3:"憎";s:4:"憲";s:3:"憲";s:4:"憤";s:3:"憤";s:4:"憯";s:3:"憯";s:4:"懞";s:3:"懞";s:4:"懲";s:3:"懲";s:4:"懶";s:3:"懶";s:4:"成";s:3:"æˆ";s:4:"戛";s:3:"戛";s:4:"扝";s:3:"æ‰";s:4:"抱";s:3:"抱";s:4:"拔";s:3:"æ‹”";s:4:"捐";s:3:"æ";s:4:"𢬌";s:4:"𢬌";s:4:"挽";s:3:"挽";s:4:"拼";s:3:"拼";s:4:"捨";s:3:"æ¨";s:4:"掃";s:3:"掃";s:4:"揤";s:3:"æ¤";s:4:"𢯱";s:4:"𢯱";s:4:"搢";s:3:"æ¢";s:4:"揅";s:3:"æ…";s:4:"ð¯£";s:3:"掩";s:4:"㨮";s:3:"㨮";s:4:"摩";s:3:"æ‘©";s:4:"摾";s:3:"摾";s:4:"撝";s:3:"æ’";s:4:"摷";s:3:"æ‘·";s:4:"㩬";s:3:"㩬";s:4:"敏";s:3:"æ•";s:4:"敬";s:3:"敬";s:4:"𣀊";s:4:"𣀊";s:4:"旣";s:3:"æ—£";s:4:"書";s:3:"書";s:4:"ð¯£";s:3:"晉";s:4:"㬙";s:3:"㬙";s:4:"ð¯£";s:3:"æš‘";s:4:"ð¯£";s:3:"㬈";s:4:"㫤";s:3:"㫤";s:4:"冒";s:3:"冒";s:4:"冕";s:3:"冕";s:4:"最";s:3:"最";s:4:"暜";s:3:"æšœ";s:4:"肭";s:3:"è‚­";s:4:"䏙";s:3:"ä™";s:4:"朗";s:3:"朗";s:4:"望";s:3:"望";s:4:"朡";s:3:"朡";s:4:"杞";s:3:"æž";s:4:"杓";s:3:"æ“";s:4:"ð¯£";s:4:"ð£ƒ";s:4:"㭉";s:3:"ã­‰";s:4:"柺";s:3:"柺";s:4:"枅";s:3:"æž…";s:4:"桒";s:3:"æ¡’";s:4:"梅";s:3:"梅";s:4:"𣑭";s:4:"𣑭";s:4:"梎";s:3:"梎";s:4:"栟";s:3:"æ Ÿ";s:4:"椔";s:3:"椔";s:4:"㮝";s:3:"ã®";s:4:"楂";s:3:"楂";s:4:"榣";s:3:"榣";s:4:"槪";s:3:"槪";s:4:"檨";s:3:"檨";s:4:"𣚣";s:4:"𣚣";s:4:"櫛";s:3:"æ«›";s:4:"㰘";s:3:"ã°˜";s:4:"次";s:3:"次";s:4:"𣢧";s:4:"𣢧";s:4:"歔";s:3:"æ­”";s:4:"㱎";s:3:"㱎";s:4:"歲";s:3:"æ­²";s:4:"殟";s:3:"殟";s:4:"殺";s:3:"殺";s:4:"殻";s:3:"æ®»";s:4:"𣪍";s:4:"ð£ª";s:4:"𡴋";s:4:"ð¡´‹";s:4:"𣫺";s:4:"𣫺";s:4:"汎";s:3:"汎";s:4:"𣲼";s:4:"𣲼";s:4:"沿";s:3:"沿";s:4:"泍";s:3:"æ³";s:4:"汧";s:3:"汧";s:4:"洖";s:3:"æ´–";s:4:"派";s:3:"æ´¾";s:4:"ð¯¤";s:3:"æµ·";s:4:"流";s:3:"æµ";s:4:"浩";s:3:"浩";s:4:"浸";s:3:"浸";s:4:"涅";s:3:"涅";s:4:"𣴞";s:4:"𣴞";s:4:"洴";s:3:"æ´´";s:4:"港";s:3:"港";s:4:"湮";s:3:"æ¹®";s:4:"㴳";s:3:"ã´³";s:4:"滋";s:3:"滋";s:4:"滇";s:3:"滇";s:4:"ð¯¤";s:4:"𣻑";s:4:"淹";s:3:"æ·¹";s:4:"ð¯¤";s:3:"æ½®";s:4:"ð¯¤";s:4:"𣽞";s:4:"𣾎";s:4:"𣾎";s:4:"濆";s:3:"濆";s:4:"瀹";s:3:"瀹";s:4:"瀞";s:3:"瀞";s:4:"瀛";s:3:"瀛";s:4:"㶖";s:3:"㶖";s:4:"灊";s:3:"çŠ";s:4:"災";s:3:"ç½";s:4:"灷";s:3:"ç·";s:4:"炭";s:3:"ç‚­";s:4:"𠔥";s:4:"𠔥";s:4:"煅";s:3:"ç……";s:4:"ð¯¤";s:4:"𤉣";s:4:"熜";s:3:"熜";s:4:"𤎫";s:4:"𤎫";s:4:"爨";s:3:"爨";s:4:"爵";s:3:"爵";s:4:"牐";s:3:"ç‰";s:4:"𤘈";s:4:"𤘈";s:4:"犀";s:3:"犀";s:4:"犕";s:3:"犕";s:4:"𤜵";s:4:"𤜵";s:4:"𤠔";s:4:"𤠔";s:4:"獺";s:3:"çº";s:4:"王";s:3:"王";s:4:"㺬";s:3:"㺬";s:4:"玥";s:3:"玥";s:4:"㺸";s:3:"㺸";s:4:"㺸";s:3:"㺸";s:4:"瑇";s:3:"瑇";s:4:"瑜";s:3:"ç‘œ";s:4:"瑱";s:3:"瑱";s:4:"璅";s:3:"ç’…";s:4:"瓊";s:3:"ç“Š";s:4:"㼛";s:3:"ã¼›";s:4:"甤";s:3:"甤";s:4:"𤰶";s:4:"𤰶";s:4:"甾";s:3:"甾";s:4:"𤲒";s:4:"𤲒";s:4:"異";s:3:"ç•°";s:4:"𢆟";s:4:"𢆟";s:4:"瘐";s:3:"ç˜";s:4:"𤾡";s:4:"𤾡";s:4:"𤾸";s:4:"𤾸";s:4:"𥁄";s:4:"ð¥„";s:4:"㿼";s:3:"㿼";s:4:"䀈";s:3:"䀈";s:4:"直";s:3:"ç›´";s:4:"ð¯¥";s:4:"𥃳";s:4:"𥃲";s:4:"𥃲";s:4:"𥄙";s:4:"𥄙";s:4:"𥄳";s:4:"𥄳";s:4:"眞";s:3:"眞";s:4:"真";s:3:"真";s:4:"真";s:3:"真";s:4:"睊";s:3:"çŠ";s:4:"䀹";s:3:"䀹";s:4:"瞋";s:3:"çž‹";s:4:"䁆";s:3:"ä†";s:4:"䂖";s:3:"ä‚–";s:4:"ð¯¥";s:4:"ð¥";s:4:"硎";s:3:"ç¡Ž";s:4:"ð¯¥";s:3:"碌";s:4:"ð¯¥";s:3:"磌";s:4:"䃣";s:3:"䃣";s:4:"𥘦";s:4:"𥘦";s:4:"祖";s:3:"祖";s:4:"𥚚";s:4:"𥚚";s:4:"𥛅";s:4:"𥛅";s:4:"福";s:3:"ç¦";s:4:"秫";s:3:"秫";s:4:"䄯";s:3:"䄯";s:4:"穀";s:3:"ç©€";s:4:"穊";s:3:"ç©Š";s:4:"穏";s:3:"ç©";s:4:"𥥼";s:4:"𥥼";s:4:"ð¯¥";s:4:"𥪧";s:4:"𥪧";s:4:"𥪧";s:4:"竮";s:3:"ç«®";s:4:"䈂";s:3:"䈂";s:4:"𥮫";s:4:"𥮫";s:4:"篆";s:3:"篆";s:4:"築";s:3:"築";s:4:"䈧";s:3:"䈧";s:4:"𥲀";s:4:"𥲀";s:4:"糒";s:3:"ç³’";s:4:"䊠";s:3:"䊠";s:4:"糨";s:3:"糨";s:4:"糣";s:3:"ç³£";s:4:"紀";s:3:"ç´€";s:4:"𥾆";s:4:"𥾆";s:4:"絣";s:3:"çµ£";s:4:"䌁";s:3:"äŒ";s:4:"緇";s:3:"ç·‡";s:4:"縂";s:3:"縂";s:4:"繅";s:3:"ç¹…";s:4:"䌴";s:3:"䌴";s:4:"𦈨";s:4:"𦈨";s:4:"𦉇";s:4:"𦉇";s:4:"䍙";s:3:"ä™";s:4:"𦋙";s:4:"𦋙";s:4:"罺";s:3:"罺";s:4:"𦌾";s:4:"𦌾";s:4:"羕";s:3:"羕";s:4:"翺";s:3:"翺";s:4:"者";s:3:"者";s:4:"𦓚";s:4:"𦓚";s:4:"𦔣";s:4:"𦔣";s:4:"聠";s:3:"è ";s:4:"𦖨";s:4:"𦖨";s:4:"聰";s:3:"è°";s:4:"𣍟";s:4:"ð£Ÿ";s:4:"ð¯¦";s:3:"ä•";s:4:"育";s:3:"育";s:4:"脃";s:3:"脃";s:4:"䐋";s:3:"ä‹";s:4:"脾";s:3:"脾";s:4:"媵";s:3:"媵";s:4:"𦞧";s:4:"𦞧";s:4:"𦞵";s:4:"𦞵";s:4:"𣎓";s:4:"𣎓";s:4:"𣎜";s:4:"𣎜";s:4:"舁";s:3:"èˆ";s:4:"舄";s:3:"舄";s:4:"ð¯¦";s:3:"辞";s:4:"䑫";s:3:"ä‘«";s:4:"ð¯¦";s:3:"芑";s:4:"ð¯¦";s:3:"芋";s:4:"芝";s:3:"èŠ";s:4:"劳";s:3:"劳";s:4:"花";s:3:"花";s:4:"芳";s:3:"芳";s:4:"芽";s:3:"芽";s:4:"苦";s:3:"苦";s:4:"𦬼";s:4:"𦬼";s:4:"若";s:3:"è‹¥";s:4:"茝";s:3:"èŒ";s:4:"荣";s:3:"è£";s:4:"莭";s:3:"莭";s:4:"茣";s:3:"茣";s:4:"ð¯¦";s:3:"莽";s:4:"菧";s:3:"è§";s:4:"著";s:3:"è‘—";s:4:"荓";s:3:"è“";s:4:"菊";s:3:"èŠ";s:4:"菌";s:3:"èŒ";s:4:"菜";s:3:"èœ";s:4:"𦰶";s:4:"𦰶";s:4:"𦵫";s:4:"𦵫";s:4:"𦳕";s:4:"𦳕";s:4:"䔫";s:3:"䔫";s:4:"蓱";s:3:"蓱";s:4:"蓳";s:3:"蓳";s:4:"蔖";s:3:"è”–";s:4:"𧏊";s:4:"ð§Š";s:4:"蕤";s:3:"蕤";s:4:"𦼬";s:4:"𦼬";s:4:"䕝";s:3:"ä•";s:4:"䕡";s:3:"ä•¡";s:4:"𦾱";s:4:"𦾱";s:4:"𧃒";s:4:"𧃒";s:4:"䕫";s:3:"ä•«";s:4:"虐";s:3:"è™";s:4:"虜";s:3:"虜";s:4:"虧";s:3:"虧";s:4:"虩";s:3:"虩";s:4:"蚩";s:3:"èš©";s:4:"蚈";s:3:"蚈";s:4:"蜎";s:3:"蜎";s:4:"蛢";s:3:"蛢";s:4:"蝹";s:3:"è¹";s:4:"蜨";s:3:"蜨";s:4:"蝫";s:3:"è«";s:4:"螆";s:3:"螆";s:4:"䗗";s:3:"ä——";s:4:"蟡";s:3:"蟡";s:4:"ð¯§";s:3:"è ";s:4:"䗹";s:3:"ä—¹";s:4:"衠";s:3:"è¡ ";s:4:"衣";s:3:"è¡£";s:4:"𧙧";s:4:"𧙧";s:4:"裗";s:3:"裗";s:4:"裞";s:3:"裞";s:4:"䘵";s:3:"䘵";s:4:"裺";s:3:"裺";s:4:"㒻";s:3:"ã’»";s:4:"𧢮";s:4:"𧢮";s:4:"𧥦";s:4:"𧥦";s:4:"ð¯§";s:3:"äš¾";s:4:"䛇";s:3:"䛇";s:4:"ð¯§";s:3:"誠";s:4:"ð¯§";s:3:"è«­";s:4:"變";s:3:"變";s:4:"豕";s:3:"豕";s:4:"𧲨";s:4:"𧲨";s:4:"貫";s:3:"貫";s:4:"賁";s:3:"è³";s:4:"贛";s:3:"è´›";s:4:"起";s:3:"èµ·";s:4:"𧼯";s:4:"𧼯";s:4:"𠠄";s:4:"ð  „";s:4:"跋";s:3:"è·‹";s:4:"趼";s:3:"趼";s:4:"跰";s:3:"è·°";s:4:"ð¯§";s:4:"𠣞";s:4:"軔";s:3:"è»”";s:4:"輸";s:3:"輸";s:4:"𨗒";s:4:"𨗒";s:4:"𨗭";s:4:"𨗭";s:4:"邔";s:3:"é‚”";s:4:"郱";s:3:"郱";s:4:"鄑";s:3:"é„‘";s:4:"𨜮";s:4:"𨜮";s:4:"鄛";s:3:"é„›";s:4:"鈸";s:3:"鈸";s:4:"鋗";s:3:"é‹—";s:4:"鋘";s:3:"鋘";s:4:"鉼";s:3:"鉼";s:4:"鏹";s:3:"é¹";s:4:"鐕";s:3:"é•";s:4:"𨯺";s:4:"𨯺";s:4:"開";s:3:"é–‹";s:4:"䦕";s:3:"䦕";s:4:"閷";s:3:"é–·";s:4:"𨵷";s:4:"𨵷";s:4:"䧦";s:3:"䧦";s:4:"雃";s:3:"雃";s:4:"嶲";s:3:"嶲";s:4:"霣";s:3:"霣";s:4:"𩅅";s:4:"ð©……";s:4:"𩈚";s:4:"𩈚";s:4:"䩮";s:3:"ä©®";s:4:"䩶";s:3:"䩶";s:4:"韠";s:3:"韠";s:4:"𩐊";s:4:"ð©Š";s:4:"䪲";s:3:"䪲";s:4:"𩒖";s:4:"ð©’–";s:4:"頋";s:3:"é ‹";s:4:"頋";s:3:"é ‹";s:4:"頩";s:3:"é ©";s:4:"ð¯¨";s:4:"ð©–¶";s:4:"飢";s:3:"飢";s:4:"䬳";s:3:"䬳";s:4:"餩";s:3:"餩";s:4:"馧";s:3:"馧";s:4:"駂";s:3:"駂";s:4:"駾";s:3:"駾";s:4:"䯎";s:3:"䯎";s:4:"𩬰";s:4:"𩬰";s:4:"鬒";s:3:"鬒";s:4:"鱀";s:3:"é±€";s:4:"鳽";s:3:"é³½";s:4:"ð¯¨";s:3:"䳎";s:4:"䳭";s:3:"ä³­";s:4:"ð¯¨";s:3:"鵧";s:4:"ð¯¨";s:4:"𪃎";s:4:"䳸";s:3:"䳸";s:4:"𪄅";s:4:"𪄅";s:4:"𪈎";s:4:"𪈎";s:4:"𪊑";s:4:"𪊑";s:4:"麻";s:3:"麻";s:4:"䵖";s:3:"äµ–";s:4:"黹";s:3:"黹";s:4:"黾";s:3:"黾";s:4:"鼅";s:3:"é¼…";s:4:"鼏";s:3:"é¼";s:4:"鼖";s:3:"é¼–";s:4:"鼻";s:3:"é¼»";s:4:"ð¯¨";s:4:"𪘀";}' );
diff --git a/includes/normal/UtfNormalDefines.php b/includes/normal/UtfNormalDefines.php
index d759c64c..6c4d8b76 100644
--- a/includes/normal/UtfNormalDefines.php
+++ b/includes/normal/UtfNormalDefines.php
@@ -1,6 +1,10 @@
<?php
/**
- * Some constant definitions for the unicode normalization module
+ * Some constant definitions for the unicode normalization module.
+ *
+ * Note: these constants must all be resolvable at compile time by HipHop,
+ * since this file will not be executed during request startup for a compiled
+ * MediaWiki.
*
* @file
* @ingroup UtfNormal
diff --git a/includes/normal/UtfNormalGenerate.php b/includes/normal/UtfNormalGenerate.php
index a5e2885a..e4c1138e 100644
--- a/includes/normal/UtfNormalGenerate.php
+++ b/includes/normal/UtfNormalGenerate.php
@@ -29,6 +29,7 @@ if( php_sapi_name() != 'cli' ) {
die( "Run me from the command line please.\n" );
}
+require_once 'UtfNormalDefines.php';
require_once 'UtfNormalUtil.php';
$in = fopen("DerivedNormalizationProps.txt", "rt" );
diff --git a/includes/normal/UtfNormalMemStress.php b/includes/normal/UtfNormalMemStress.php
new file mode 100644
index 00000000..1277dc20
--- /dev/null
+++ b/includes/normal/UtfNormalMemStress.php
@@ -0,0 +1,110 @@
+<?php
+/**
+ * Approximate benchmark for some basic operations.
+ * Runs large chunks of text through cleanup with a lowish memory limit,
+ * to test regression on mem usage (bug 28146)
+ *
+ * Copyright © 2004-2011 Brion Vibber <brion@wikimedia.org>
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup UtfNormal
+ */
+
+if( isset( $_SERVER['argv'] ) && in_array( '--icu', $_SERVER['argv'] ) ) {
+ dl( 'php_utfnormal.so' );
+}
+
+require_once 'UtfNormalDefines.php';
+require_once 'UtfNormalUtil.php';
+require_once 'UtfNormal.php';
+
+define( 'BENCH_CYCLES', 1 );
+define( 'BIGSIZE', 1024 * 1024 * 10); // 10m
+ini_set('memory_limit', BIGSIZE + 120 * 1024 * 1024);
+
+if( php_sapi_name() != 'cli' ) {
+ die( "Run me from the command line please.\n" );
+}
+
+$testfiles = array(
+ 'testdata/washington.txt' => 'English text',
+ 'testdata/berlin.txt' => 'German text',
+ 'testdata/bulgakov.txt' => 'Russian text',
+ 'testdata/tokyo.txt' => 'Japanese text',
+ 'testdata/young.txt' => 'Korean text'
+);
+$normalizer = new UtfNormal;
+UtfNormal::loadData();
+foreach( $testfiles as $file => $desc ) {
+ benchmarkTest( $normalizer, $file, $desc );
+}
+
+# -------
+
+function benchmarkTest( &$u, $filename, $desc ) {
+ print "Testing $filename ($desc)...\n";
+ $data = file_get_contents( $filename );
+ $all = $data;
+ while (strlen($all) < BIGSIZE) {
+ $all .= $all;
+ }
+ $data = $all;
+ echo "Data is " . strlen($data) . " bytes.\n";
+ $forms = array(
+ 'quickIsNFCVerify',
+ 'cleanUp',
+ );
+ foreach( $forms as $form ) {
+ if( is_array( $form ) ) {
+ $str = $data;
+ foreach( $form as $step ) {
+ $str = benchmarkForm( $u, $str, $step );
+ }
+ } else {
+ benchmarkForm( $u, $data, $form );
+ }
+ }
+}
+
+function benchTime(){
+ $st = explode( ' ', microtime() );
+ return (float)$st[0] + (float)$st[1];
+}
+
+function benchmarkForm( &$u, &$data, $form ) {
+ #$start = benchTime();
+ for( $i = 0; $i < BENCH_CYCLES; $i++ ) {
+ $start = benchTime();
+ $out = $u->$form( $data, UtfNormal::$utfCanonicalDecomp );
+ $deltas[] = (benchTime() - $start);
+ }
+ #$delta = (benchTime() - $start) / BENCH_CYCLES;
+ sort( $deltas );
+ $delta = $deltas[0]; # Take shortest time
+
+ $rate = intval( strlen( $data ) / $delta );
+ $same = (0 == strcmp( $data, $out ) );
+
+ printf( " %20s %6.1fms %12s bytes/s (%s)\n",
+ $form,
+ $delta*1000.0,
+ number_format( $rate ),
+ ($same ? 'no change' : 'changed' ) );
+ return $out;
+}
diff --git a/includes/normal/UtfNormalTest.php b/includes/normal/UtfNormalTest.php
index f78775ce..e5ae7f72 100644
--- a/includes/normal/UtfNormalTest.php
+++ b/includes/normal/UtfNormalTest.php
@@ -49,6 +49,7 @@ if( isset( $_SERVER['argv'] ) && in_array( '--icu', $_SERVER['argv'] ) ) {
dl( 'php_utfnormal.so' );
}
+require_once 'UtfNormalDefines.php';
require_once 'UtfNormalUtil.php';
require_once 'UtfNormal.php';
diff --git a/includes/normal/UtfNormalTest2.php b/includes/normal/UtfNormalTest2.php
index fafd5475..28be4838 100644
--- a/includes/normal/UtfNormalTest2.php
+++ b/includes/normal/UtfNormalTest2.php
@@ -194,12 +194,12 @@ echo "done.\n";
function unichr($c) {
if ($c <= 0x7F) {
return chr($c);
- } else if ($c <= 0x7FF) {
+ } elseif ($c <= 0x7FF) {
return chr(0xC0 | $c >> 6) . chr(0x80 | $c & 0x3F);
- } else if ($c <= 0xFFFF) {
+ } elseif ($c <= 0xFFFF) {
return chr(0xE0 | $c >> 12) . chr(0x80 | $c >> 6 & 0x3F)
. chr(0x80 | $c & 0x3F);
- } else if ($c <= 0x10FFFF) {
+ } elseif ($c <= 0x10FFFF) {
return chr(0xF0 | $c >> 18) . chr(0x80 | $c >> 12 & 0x3F)
. chr(0x80 | $c >> 6 & 0x3F)
. chr(0x80 | $c & 0x3F);
diff --git a/includes/normal/UtfNormalUtil.php b/includes/normal/UtfNormalUtil.php
index 0c78e5ec..bfad7095 100644
--- a/includes/normal/UtfNormalUtil.php
+++ b/includes/normal/UtfNormalUtil.php
@@ -25,8 +25,6 @@
* @ingroup UtfNormal
*/
-require_once dirname(__FILE__).'/UtfNormalDefines.php';
-
/**
* Return UTF-8 sequence for a given Unicode code point.
* May die if fed out of range data.
@@ -93,7 +91,7 @@ function utf8ToHexSequence( $str ) {
*/
function utf8ToCodepoint( $char ) {
# Find the length
- $z = ord( $char{0} );
+ $z = ord( $char[0] );
if ( $z & 0x80 ) {
$length = 0;
while ( $z & 0x80 ) {
@@ -118,7 +116,7 @@ function utf8ToCodepoint( $char ) {
# Add in the free bits from subsequent bytes
for ( $i=1; $i<$length; $i++ ) {
$z <<= 6;
- $z |= ord( $char{$i} ) & 0x3f;
+ $z |= ord( $char[$i] ) & 0x3f;
}
return $z;
diff --git a/includes/objectcache/APCBagOStuff.php b/includes/objectcache/APCBagOStuff.php
new file mode 100644
index 00000000..dd4a76e1
--- /dev/null
+++ b/includes/objectcache/APCBagOStuff.php
@@ -0,0 +1,43 @@
+<?php
+
+/**
+ * This is a wrapper for APC's shared memory functions
+ *
+ * @ingroup Cache
+ */
+class APCBagOStuff extends BagOStuff {
+ public function get( $key ) {
+ $val = apc_fetch( $key );
+
+ if ( is_string( $val ) ) {
+ $val = unserialize( $val );
+ }
+
+ return $val;
+ }
+
+ public function set( $key, $value, $exptime = 0 ) {
+ apc_store( $key, serialize( $value ), $exptime );
+
+ return true;
+ }
+
+ public function delete( $key, $time = 0 ) {
+ apc_delete( $key );
+
+ return true;
+ }
+
+ public function keys() {
+ $info = apc_cache_info( 'user' );
+ $list = $info['cache_list'];
+ $keys = array();
+
+ foreach ( $list as $entry ) {
+ $keys[] = $entry['info'];
+ }
+
+ return $keys;
+ }
+}
+
diff --git a/includes/objectcache/BagOStuff.php b/includes/objectcache/BagOStuff.php
new file mode 100644
index 00000000..97b6cb2c
--- /dev/null
+++ b/includes/objectcache/BagOStuff.php
@@ -0,0 +1,164 @@
+<?php
+/**
+ * Classes to cache objects in PHP accelerators, SQL database or DBA files
+ *
+ * Copyright © 2003-2004 Brion Vibber <brion@pobox.com>
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Cache
+ */
+
+/**
+ * @defgroup Cache Cache
+ */
+
+/**
+ * interface is intended to be more or less compatible with
+ * the PHP memcached client.
+ *
+ * backends for local hash array and SQL table included:
+ * <code>
+ * $bag = new HashBagOStuff();
+ * $bag = new SqlBagOStuff(); # connect to db first
+ * </code>
+ *
+ * @ingroup Cache
+ */
+abstract class BagOStuff {
+ private $debugMode = false;
+
+ /**
+ * @param $bool bool
+ */
+ public function setDebug( $bool ) {
+ $this->debugMode = $bool;
+ }
+
+ /* *** THE GUTS OF THE OPERATION *** */
+ /* Override these with functional things in subclasses */
+
+ /**
+ * Get an item with the given key. Returns false if it does not exist.
+ * @param $key string
+ *
+ * @return bool|Object
+ */
+ abstract public function get( $key );
+
+ /**
+ * Set an item.
+ * @param $key string
+ * @param $value mixed
+ * @param $exptime int Either an interval in seconds or a unix timestamp for expiry
+ */
+ abstract public function set( $key, $value, $exptime = 0 );
+
+ /**
+ * Delete an item.
+ * @param $key string
+ * @param $time int Amount of time to delay the operation (mostly memcached-specific)
+ */
+ abstract public function delete( $key, $time = 0 );
+
+ public function lock( $key, $timeout = 0 ) {
+ /* stub */
+ return true;
+ }
+
+ public function unlock( $key ) {
+ /* stub */
+ return true;
+ }
+
+ public function keys() {
+ /* stub */
+ return array();
+ }
+
+ /**
+ * Delete all objects expiring before a certain date.
+ *
+ * @return true on success, false if unimplemented
+ */
+ public function deleteObjectsExpiringBefore( $date ) {
+ // stub
+ return false;
+ }
+
+ /* *** Emulated functions *** */
+
+ public function add( $key, $value, $exptime = 0 ) {
+ if ( !$this->get( $key ) ) {
+ $this->set( $key, $value, $exptime );
+
+ return true;
+ }
+ }
+
+ public function replace( $key, $value, $exptime = 0 ) {
+ if ( $this->get( $key ) !== false ) {
+ $this->set( $key, $value, $exptime );
+ }
+ }
+
+ /**
+ * @param $key String: Key to increase
+ * @param $value Integer: Value to add to $key (Default 1)
+ * @return null if lock is not possible else $key value increased by $value
+ */
+ public function incr( $key, $value = 1 ) {
+ if ( !$this->lock( $key ) ) {
+ return null;
+ }
+
+ $value = intval( $value );
+
+ if ( ( $n = $this->get( $key ) ) !== false ) {
+ $n += $value;
+ $this->set( $key, $n ); // exptime?
+ }
+ $this->unlock( $key );
+
+ return $n;
+ }
+
+ public function decr( $key, $value = 1 ) {
+ return $this->incr( $key, - $value );
+ }
+
+ public function debug( $text ) {
+ if ( $this->debugMode ) {
+ $class = get_class( $this );
+ wfDebug( "$class debug: $text\n" );
+ }
+ }
+
+ /**
+ * Convert an optionally relative time to an absolute time
+ */
+ protected function convertExpiry( $exptime ) {
+ if ( ( $exptime != 0 ) && ( $exptime < 86400 * 3650 /* 10 years */ ) ) {
+ return time() + $exptime;
+ } else {
+ return $exptime;
+ }
+ }
+}
+
+
diff --git a/includes/objectcache/DBABagOStuff.php b/includes/objectcache/DBABagOStuff.php
new file mode 100644
index 00000000..783cd22b
--- /dev/null
+++ b/includes/objectcache/DBABagOStuff.php
@@ -0,0 +1,194 @@
+<?php
+
+/**
+ * Cache that uses DBA as a backend.
+ * Slow due to the need to constantly open and close the file to avoid holding
+ * writer locks. Intended for development use only, as a memcached workalike
+ * for systems that don't have it.
+ *
+ * @ingroup Cache
+ */
+class DBABagOStuff extends BagOStuff {
+ var $mHandler, $mFile, $mReader, $mWriter, $mDisabled;
+
+ public function __construct( $dir = false ) {
+ global $wgDBAhandler;
+
+ if ( $dir === false ) {
+ global $wgTmpDirectory;
+ $dir = $wgTmpDirectory;
+ }
+
+ $this->mFile = "$dir/mw-cache-" . wfWikiID();
+ $this->mFile .= '.db';
+ wfDebug( __CLASS__ . ": using cache file {$this->mFile}\n" );
+ $this->mHandler = $wgDBAhandler;
+ }
+
+ /**
+ * Encode value and expiry for storage
+ * @param $value
+ * @param $expiry
+ *
+ * @return string
+ */
+ function encode( $value, $expiry ) {
+ # Convert to absolute time
+ $expiry = $this->convertExpiry( $expiry );
+
+ return sprintf( '%010u', intval( $expiry ) ) . ' ' . serialize( $value );
+ }
+
+ /**
+ * @return array list containing value first and expiry second
+ */
+ function decode( $blob ) {
+ if ( !is_string( $blob ) ) {
+ return array( null, 0 );
+ } else {
+ return array(
+ unserialize( substr( $blob, 11 ) ),
+ intval( substr( $blob, 0, 10 ) )
+ );
+ }
+ }
+
+ function getReader() {
+ if ( file_exists( $this->mFile ) ) {
+ $handle = dba_open( $this->mFile, 'rl', $this->mHandler );
+ } else {
+ $handle = $this->getWriter();
+ }
+
+ if ( !$handle ) {
+ wfDebug( "Unable to open DBA cache file {$this->mFile}\n" );
+ }
+
+ return $handle;
+ }
+
+ function getWriter() {
+ $handle = dba_open( $this->mFile, 'cl', $this->mHandler );
+
+ if ( !$handle ) {
+ wfDebug( "Unable to open DBA cache file {$this->mFile}\n" );
+ }
+
+ return $handle;
+ }
+
+ function get( $key ) {
+ wfProfileIn( __METHOD__ );
+ wfDebug( __METHOD__ . "($key)\n" );
+
+ $handle = $this->getReader();
+ if ( !$handle ) {
+ wfProfileOut( __METHOD__ );
+ return null;
+ }
+
+ $val = dba_fetch( $key, $handle );
+ list( $val, $expiry ) = $this->decode( $val );
+
+ # Must close ASAP because locks are held
+ dba_close( $handle );
+
+ if ( !is_null( $val ) && $expiry && $expiry < time() ) {
+ # Key is expired, delete it
+ $handle = $this->getWriter();
+ dba_delete( $key, $handle );
+ dba_close( $handle );
+ wfDebug( __METHOD__ . ": $key expired\n" );
+ $val = null;
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $val;
+ }
+
+ function set( $key, $value, $exptime = 0 ) {
+ wfProfileIn( __METHOD__ );
+ wfDebug( __METHOD__ . "($key)\n" );
+
+ $blob = $this->encode( $value, $exptime );
+
+ $handle = $this->getWriter();
+ if ( !$handle ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ $ret = dba_replace( $key, $blob, $handle );
+ dba_close( $handle );
+
+ wfProfileOut( __METHOD__ );
+ return $ret;
+ }
+
+ function delete( $key, $time = 0 ) {
+ wfProfileIn( __METHOD__ );
+ wfDebug( __METHOD__ . "($key)\n" );
+
+ $handle = $this->getWriter();
+ if ( !$handle ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ $ret = dba_delete( $key, $handle );
+ dba_close( $handle );
+
+ wfProfileOut( __METHOD__ );
+ return $ret;
+ }
+
+ function add( $key, $value, $exptime = 0 ) {
+ wfProfileIn( __METHOD__ );
+
+ $blob = $this->encode( $value, $exptime );
+
+ $handle = $this->getWriter();
+
+ if ( !$handle ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ $ret = dba_insert( $key, $blob, $handle );
+
+ # Insert failed, check to see if it failed due to an expired key
+ if ( !$ret ) {
+ list( $value, $expiry ) = $this->decode( dba_fetch( $key, $handle ) );
+
+ if ( $expiry < time() ) {
+ # Yes expired, delete and try again
+ dba_delete( $key, $handle );
+ $ret = dba_insert( $key, $blob, $handle );
+ # This time if it failed then it will be handled by the caller like any other race
+ }
+ }
+
+ dba_close( $handle );
+
+ wfProfileOut( __METHOD__ );
+ return $ret;
+ }
+
+ function keys() {
+ $reader = $this->getReader();
+ $k1 = dba_firstkey( $reader );
+
+ if ( !$k1 ) {
+ return array();
+ }
+
+ $result[] = $k1;
+
+ while ( $key = dba_nextkey( $reader ) ) {
+ $result[] = $key;
+ }
+
+ return $result;
+ }
+}
+
diff --git a/includes/objectcache/EhcacheBagOStuff.php b/includes/objectcache/EhcacheBagOStuff.php
new file mode 100644
index 00000000..75aad27a
--- /dev/null
+++ b/includes/objectcache/EhcacheBagOStuff.php
@@ -0,0 +1,230 @@
+<?php
+
+/**
+ * Client for the Ehcache RESTful web service - http://ehcache.org/documentation/cache_server.html
+ * TODO: Simplify configuration and add to the installer.
+ */
+class EhcacheBagOStuff extends BagOStuff {
+ var $servers, $cacheName, $connectTimeout, $timeout, $curlOptions,
+ $requestData, $requestDataPos;
+
+ var $curls = array();
+
+ function __construct( $params ) {
+ if ( !defined( 'CURLOPT_TIMEOUT_MS' ) ) {
+ throw new MWException( __CLASS__.' requires curl version 7.16.2 or later.' );
+ }
+ if ( !extension_loaded( 'zlib' ) ) {
+ throw new MWException( __CLASS__.' requires the zlib extension' );
+ }
+ if ( !isset( $params['servers'] ) ) {
+ throw new MWException( __METHOD__.': servers parameter is required' );
+ }
+ $this->servers = $params['servers'];
+ $this->cacheName = isset( $params['cache'] ) ? $params['cache'] : 'mw';
+ $this->connectTimeout = isset( $params['connectTimeout'] )
+ ? $params['connectTimeout'] : 1;
+ $this->timeout = isset( $params['timeout'] ) ? $params['timeout'] : 1;
+ $this->curlOptions = array(
+ CURLOPT_CONNECTTIMEOUT_MS => intval( $this->connectTimeout * 1000 ),
+ CURLOPT_TIMEOUT_MS => intval( $this->timeout * 1000 ),
+ CURLOPT_RETURNTRANSFER => 1,
+ CURLOPT_CUSTOMREQUEST => 'GET',
+ CURLOPT_POST => 0,
+ CURLOPT_POSTFIELDS => '',
+ CURLOPT_HTTPHEADER => array(),
+ );
+ }
+
+ public function get( $key ) {
+ wfProfileIn( __METHOD__ );
+ $response = $this->doItemRequest( $key );
+ if ( !$response || $response['http_code'] == 404 ) {
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+ if ( $response['http_code'] >= 300 ) {
+ wfDebug( __METHOD__.": GET failure, got HTTP {$response['http_code']}\n" );
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+ $body = $response['body'];
+ $type = $response['content_type'];
+ if ( $type == 'application/vnd.php.serialized+deflate' ) {
+ $body = gzinflate( $body );
+ if ( !$body ) {
+ wfDebug( __METHOD__.": error inflating $key\n" );
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+ $data = unserialize( $body );
+ } elseif ( $type == 'application/vnd.php.serialized' ) {
+ $data = unserialize( $body );
+ } else {
+ wfDebug( __METHOD__.": unknown content type \"$type\"\n" );
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $data;
+ }
+
+ public function set( $key, $value, $expiry = 0 ) {
+ wfProfileIn( __METHOD__ );
+ $expiry = $this->convertExpiry( $expiry );
+ $ttl = $expiry ? $expiry - time() : 2147483647;
+ $blob = serialize( $value );
+ if ( strlen( $blob ) > 100 ) {
+ $blob = gzdeflate( $blob );
+ $contentType = 'application/vnd.php.serialized+deflate';
+ } else {
+ $contentType = 'application/vnd.php.serialized';
+ }
+
+ $code = $this->attemptPut( $key, $blob, $contentType, $ttl );
+
+ if ( $code == 404 ) {
+ // Maybe the cache does not exist yet, let's try creating it
+ if ( !$this->createCache( $key ) ) {
+ wfDebug( __METHOD__.": cache creation failed\n" );
+ wfProfileOut( __METHOD__ );
+ return false;
+ }
+ $code = $this->attemptPut( $key, $blob, $contentType, $ttl );
+ }
+
+ $result = false;
+ if ( !$code ) {
+ wfDebug( __METHOD__.": PUT failure for key $key\n" );
+ } elseif ( $code >= 300 ) {
+ wfDebug( __METHOD__.": PUT failure for key $key: HTTP $code\n" );
+ } else {
+ $result = true;
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $result;
+ }
+
+ public function delete( $key, $time = 0 ) {
+ wfProfileIn( __METHOD__ );
+ $response = $this->doItemRequest( $key,
+ array( CURLOPT_CUSTOMREQUEST => 'DELETE' ) );
+ $code = isset( $response['http_code'] ) ? $response['http_code'] : 0;
+ if ( !$response || ( $code != 404 && $code >= 300 ) ) {
+ wfDebug( __METHOD__.": DELETE failure for key $key\n" );
+ $result = false;
+ } else {
+ $result = true;
+ }
+ wfProfileOut( __METHOD__ );
+ return $result;
+ }
+
+ protected function getCacheUrl( $key ) {
+ if ( count( $this->servers ) == 1 ) {
+ $server = reset( $this->servers );
+ } else {
+ // Use consistent hashing
+ $hashes = array();
+ foreach ( $this->servers as $server ) {
+ $hashes[$server] = md5( $server . '/' . $key );
+ }
+ asort( $hashes );
+ reset( $hashes );
+ $server = key( $hashes );
+ }
+ return "http://$server/ehcache/rest/{$this->cacheName}";
+ }
+
+ /**
+ * Get a cURL handle for the given cache URL.
+ * We cache the handles to allow keepalive.
+ */
+ protected function getCurl( $cacheUrl ) {
+ if ( !isset( $this->curls[$cacheUrl] ) ) {
+ $this->curls[$cacheUrl] = curl_init();
+ }
+ return $this->curls[$cacheUrl];
+ }
+
+ protected function attemptPut( $key, $data, $type, $ttl ) {
+ // In initial benchmarking, it was 30 times faster to use CURLOPT_POST
+ // than CURLOPT_UPLOAD with CURLOPT_READFUNCTION. This was because
+ // CURLOPT_UPLOAD was pushing the request headers first, then waiting
+ // for an ACK packet, then sending the data, whereas CURLOPT_POST just
+ // sends the headers and the data in a single send().
+ $response = $this->doItemRequest( $key,
+ array(
+ CURLOPT_POST => 1,
+ CURLOPT_CUSTOMREQUEST => 'PUT',
+ CURLOPT_POSTFIELDS => $data,
+ CURLOPT_HTTPHEADER => array(
+ 'Content-Type: ' . $type,
+ 'ehcacheTimeToLiveSeconds: ' . $ttl
+ )
+ )
+ );
+ if ( !$response ) {
+ return 0;
+ } else {
+ return $response['http_code'];
+ }
+ }
+
+ protected function createCache( $key ) {
+ wfDebug( __METHOD__.": creating cache for $key\n" );
+ $response = $this->doCacheRequest( $key,
+ array(
+ CURLOPT_POST => 1,
+ CURLOPT_CUSTOMREQUEST => 'PUT',
+ CURLOPT_POSTFIELDS => '',
+ ) );
+ if ( !$response ) {
+ wfDebug( __CLASS__.": failed to create cache for $key\n" );
+ return false;
+ }
+ if ( $response['http_code'] == 201 /* created */
+ || $response['http_code'] == 409 /* already there */ )
+ {
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ protected function doCacheRequest( $key, $curlOptions = array() ) {
+ $cacheUrl = $this->getCacheUrl( $key );
+ $curl = $this->getCurl( $cacheUrl );
+ return $this->doRequest( $curl, $cacheUrl, $curlOptions );
+ }
+
+ protected function doItemRequest( $key, $curlOptions = array() ) {
+ $cacheUrl = $this->getCacheUrl( $key );
+ $curl = $this->getCurl( $cacheUrl );
+ $url = $cacheUrl . '/' . rawurlencode( $key );
+ return $this->doRequest( $curl, $url, $curlOptions );
+ }
+
+ protected function doRequest( $curl, $url, $curlOptions = array() ) {
+ if ( array_diff_key( $curlOptions, $this->curlOptions ) ) {
+ // var_dump( array_diff_key( $curlOptions, $this->curlOptions ) );
+ throw new MWException( __METHOD__.": to prevent options set in one doRequest() " .
+ "call from affecting subsequent doRequest() calls, only options listed " .
+ "in \$this->curlOptions may be specified in the \$curlOptions parameter." );
+ }
+ $curlOptions += $this->curlOptions;
+ $curlOptions[CURLOPT_URL] = $url;
+
+ curl_setopt_array( $curl, $curlOptions );
+ $result = curl_exec( $curl );
+ if ( $result === false ) {
+ wfDebug( __CLASS__.": curl error: " . curl_error( $curl ) . "\n" );
+ return false;
+ }
+ $info = curl_getinfo( $curl );
+ $info['body'] = $result;
+ return $info;
+ }
+}
diff --git a/includes/objectcache/EmptyBagOStuff.php b/includes/objectcache/EmptyBagOStuff.php
new file mode 100644
index 00000000..e956e2ee
--- /dev/null
+++ b/includes/objectcache/EmptyBagOStuff.php
@@ -0,0 +1,27 @@
+<?php
+
+/**
+ * A BagOStuff object with no objects in it. Used to provide a no-op object to calling code.
+ *
+ * @ingroup Cache
+ */
+class EmptyBagOStuff extends BagOStuff {
+ function get( $key ) {
+ return false;
+ }
+
+ function set( $key, $value, $exp = 0 ) {
+ return true;
+ }
+
+ function delete( $key, $time = 0 ) {
+ return true;
+ }
+}
+
+/**
+ * Backwards compatibility alias for EmptyBagOStuff
+ * @deprecated since 1.18
+ */
+class FakeMemCachedClient extends EmptyBagOStuff {
+}
diff --git a/includes/objectcache/HashBagOStuff.php b/includes/objectcache/HashBagOStuff.php
new file mode 100644
index 00000000..36773306
--- /dev/null
+++ b/includes/objectcache/HashBagOStuff.php
@@ -0,0 +1,58 @@
+<?php
+
+/**
+ * This is a test of the interface, mainly. It stores things in an associative
+ * array, which is not going to persist between program runs.
+ *
+ * @ingroup Cache
+ */
+class HashBagOStuff extends BagOStuff {
+ var $bag;
+
+ function __construct() {
+ $this->bag = array();
+ }
+
+ protected function expire( $key ) {
+ $et = $this->bag[$key][1];
+
+ if ( ( $et == 0 ) || ( $et > time() ) ) {
+ return false;
+ }
+
+ $this->delete( $key );
+
+ return true;
+ }
+
+ function get( $key ) {
+ if ( !isset( $this->bag[$key] ) ) {
+ return false;
+ }
+
+ if ( $this->expire( $key ) ) {
+ return false;
+ }
+
+ return $this->bag[$key][0];
+ }
+
+ function set( $key, $value, $exptime = 0 ) {
+ $this->bag[$key] = array( $value, $this->convertExpiry( $exptime ) );
+ }
+
+ function delete( $key, $time = 0 ) {
+ if ( !isset( $this->bag[$key] ) ) {
+ return false;
+ }
+
+ unset( $this->bag[$key] );
+
+ return true;
+ }
+
+ function keys() {
+ return array_keys( $this->bag );
+ }
+}
+
diff --git a/includes/memcached-client.php b/includes/objectcache/MemcachedClient.php
index 53f0324f..dd4401a8 100644
--- a/includes/memcached-client.php
+++ b/includes/objectcache/MemcachedClient.php
@@ -51,7 +51,7 @@
* '127.0.0.1:10020'),
* 'debug' => false,
* 'compress_threshold' => 10240,
- * 'persistant' => true));
+ * 'persistent' => true));
*
* $mc->add('key', array('some', 'array'));
* $mc->replace('key', 'some random string');
@@ -158,12 +158,12 @@ class MWMemcached {
var $_compress_threshold;
/**
- * Are we using persistant links?
+ * Are we using persistent links?
*
* @var boolean
* @access private
*/
- var $_persistant;
+ var $_persistent;
/**
* If only using one server; contains ip:port to connect to
@@ -245,12 +245,11 @@ class MWMemcached {
* @return mixed
*/
public function __construct( $args ) {
- global $wgMemCachedTimeout;
$this->set_servers( isset( $args['servers'] ) ? $args['servers'] : array() );
$this->_debug = isset( $args['debug'] ) ? $args['debug'] : false;
$this->stats = array();
$this->_compress_threshold = isset( $args['compress_threshold'] ) ? $args['compress_threshold'] : 0;
- $this->_persistant = isset( $args['persistant'] ) ? $args['persistant'] : false;
+ $this->_persistent = isset( $args['persistent'] ) ? $args['persistent'] : false;
$this->_compress_enable = true;
$this->_have_zlib = function_exists( 'gzcompress' );
@@ -258,9 +257,9 @@ class MWMemcached {
$this->_host_dead = array();
$this->_timeout_seconds = 0;
- $this->_timeout_microseconds = $wgMemCachedTimeout;
+ $this->_timeout_microseconds = isset( $args['timeout'] ) ? $args['timeout'] : 100000;
- $this->_connect_timeout = 0.01;
+ $this->_connect_timeout = isset( $args['connect_timeout'] ) ? $args['connect_timeout'] : 0.1;
$this->_connect_attempts = 2;
}
@@ -345,6 +344,16 @@ class MWMemcached {
return false;
}
+ public function lock( $key, $timeout = 0 ) {
+ /* stub */
+ return true;
+ }
+
+ public function unlock( $key ) {
+ /* stub */
+ return true;
+ }
+
// }}}
// {{{ disconnect_all()
@@ -432,8 +441,12 @@ class MWMemcached {
}
}
+ $value = false;
+ if ( isset( $val[$key] ) ) {
+ $value = $val[$key];
+ }
wfProfileOut( __METHOD__ );
- return @$val[$key];
+ return $value;
}
// }}}
@@ -551,7 +564,7 @@ class MWMemcached {
* with a \n. This is with the PHP flag auto_detect_line_endings set
* to falase (the default).
*
- * @param $sock Ressource: socket to send command on
+ * @param $sock Resource: socket to send command on
* @param $cmd String: command to run
*
* @return Array: output array
@@ -695,7 +708,7 @@ class MWMemcached {
$errno = $errstr = null;
for( $i = 0; !$sock && $i < $this->_connect_attempts; $i++ ) {
wfSuppressWarnings();
- if ( $this->_persistant == 1 ) {
+ if ( $this->_persistent == 1 ) {
$sock = pfsockopen( $ip, $port, $errno, $errstr, $timeout );
} else {
$sock = fsockopen( $ip, $port, $errno, $errstr, $timeout );
@@ -854,7 +867,7 @@ class MWMemcached {
/**
* Load items into $ret from $sock
*
- * @param $sock Ressource: socket to read from
+ * @param $sock Resource: socket to read from
* @param $ret Array: returned values
*
* @access private
@@ -945,6 +958,12 @@ class MWMemcached {
} else {
$this->stats[$cmd] = 1;
}
+
+ // Memcached doesn't seem to handle very high TTL values very well,
+ // so clamp them at 30 days
+ if ( $exp > 2592000 ) {
+ $exp = 2592000;
+ }
$flags = 0;
diff --git a/includes/objectcache/MemcachedPhpBagOStuff.php b/includes/objectcache/MemcachedPhpBagOStuff.php
new file mode 100644
index 00000000..14016683
--- /dev/null
+++ b/includes/objectcache/MemcachedPhpBagOStuff.php
@@ -0,0 +1,178 @@
+<?php
+
+/**
+ * A wrapper class for the pure-PHP memcached client, exposing a BagOStuff interface.
+ */
+class MemcachedPhpBagOStuff extends BagOStuff {
+
+ /**
+ * @var MemCachedClientforWiki
+ */
+ protected $client;
+
+ /**
+ * Constructor.
+ *
+ * Available parameters are:
+ * - servers: The list of IP:port combinations holding the memcached servers.
+ * - debug: Whether to set the debug flag in the underlying client.
+ * - persistent: Whether to use a persistent connection
+ * - compress_threshold: The minimum size an object must be before it is compressed
+ * - timeout: The read timeout in microseconds
+ * - connect_timeout: The connect timeout in seconds
+ *
+ * @param $params array
+ */
+ function __construct( $params ) {
+ if ( !isset( $params['servers'] ) ) {
+ $params['servers'] = $GLOBALS['wgMemCachedServers'];
+ }
+ if ( !isset( $params['debug'] ) ) {
+ $params['debug'] = $GLOBALS['wgMemCachedDebug'];
+ }
+ if ( !isset( $params['persistent'] ) ) {
+ $params['persistent'] = $GLOBALS['wgMemCachedPersistent'];
+ }
+ if ( !isset( $params['compress_threshold'] ) ) {
+ $params['compress_threshold'] = 1500;
+ }
+ if ( !isset( $params['timeout'] ) ) {
+ $params['timeout'] = $GLOBALS['wgMemCachedTimeout'];
+ }
+ if ( !isset( $params['connect_timeout'] ) ) {
+ $params['connect_timeout'] = 0.1;
+ }
+
+ $this->client = new MemCachedClientforWiki( $params );
+ $this->client->set_servers( $params['servers'] );
+ $this->client->set_debug( $params['debug'] );
+ }
+
+ /**
+ * @param $debug bool
+ */
+ public function setDebug( $debug ) {
+ $this->client->set_debug( $debug );
+ }
+
+ /**
+ * @param $key string
+ * @return Mixed
+ */
+ public function get( $key ) {
+ return $this->client->get( $this->encodeKey( $key ) );
+ }
+
+ /**
+ * @param $key string
+ * @param $value
+ * @param $exptime int
+ * @return bool
+ */
+ public function set( $key, $value, $exptime = 0 ) {
+ return $this->client->set( $this->encodeKey( $key ), $value, $exptime );
+ }
+
+ /**
+ * @param $key string
+ * @param $time int
+ * @return bool
+ */
+ public function delete( $key, $time = 0 ) {
+ return $this->client->delete( $this->encodeKey( $key ), $time );
+ }
+
+ /**
+ * @param $key
+ * @param $timeout int
+ * @return
+ */
+ public function lock( $key, $timeout = 0 ) {
+ return $this->client->lock( $this->encodeKey( $key ), $timeout );
+ }
+
+ /**
+ * @param $key string
+ * @return Mixed
+ */
+ public function unlock( $key ) {
+ return $this->client->unlock( $this->encodeKey( $key ) );
+ }
+
+ /**
+ * @param $key string
+ * @param $value int
+ * @return Mixed
+ */
+ public function add( $key, $value, $exptime = 0 ) {
+ return $this->client->add( $this->encodeKey( $key ), $value, $exptime );
+ }
+
+ /**
+ * @param $key string
+ * @param $value int
+ * @param $exptime
+ * @return Mixed
+ */
+ public function replace( $key, $value, $exptime = 0 ) {
+ return $this->client->replace( $this->encodeKey( $key ), $value, $exptime );
+ }
+
+ /**
+ * @param $key string
+ * @param $value int
+ * @return Mixed
+ */
+ public function incr( $key, $value = 1 ) {
+ return $this->client->incr( $this->encodeKey( $key ), $value );
+ }
+
+ /**
+ * @param $key string
+ * @param $value int
+ * @return Mixed
+ */
+ public function decr( $key, $value = 1 ) {
+ return $this->client->decr( $this->encodeKey( $key ), $value );
+ }
+
+ /**
+ * Get the underlying client object. This is provided for debugging
+ * purposes.
+ *
+ * @return MemCachedClientforWiki
+ */
+ public function getClient() {
+ return $this->client;
+ }
+
+ /**
+ * Encode a key for use on the wire inside the memcached protocol.
+ *
+ * We encode spaces and line breaks to avoid protocol errors. We encode
+ * the other control characters for compatibility with libmemcached
+ * verify_key. We leave other punctuation alone, to maximise backwards
+ * compatibility.
+ */
+ public function encodeKey( $key ) {
+ return preg_replace_callback( '/[\x00-\x20\x25\x7f]+/',
+ array( $this, 'encodeKeyCallback' ), $key );
+ }
+
+ protected function encodeKeyCallback( $m ) {
+ return rawurlencode( $m[0] );
+ }
+
+ /**
+ * Decode a key encoded with encodeKey(). This is provided as a convenience
+ * function for debugging.
+ *
+ * @param $key string
+ *
+ * @return string
+ */
+ public function decodeKey( $key ) {
+ return urldecode( $key );
+ }
+}
+
diff --git a/includes/objectcache/MultiWriteBagOStuff.php b/includes/objectcache/MultiWriteBagOStuff.php
new file mode 100644
index 00000000..2b88b427
--- /dev/null
+++ b/includes/objectcache/MultiWriteBagOStuff.php
@@ -0,0 +1,113 @@
+<?php
+
+/**
+ * A cache class that replicates all writes to multiple child caches. Reads
+ * are implemented by reading from the caches in the order they are given in
+ * the configuration until a cache gives a positive result.
+ */
+class MultiWriteBagOStuff extends BagOStuff {
+ var $caches;
+
+ /**
+ * Constructor. Parameters are:
+ *
+ * - caches: This should have a numbered array of cache parameter
+ * structures, in the style required by $wgObjectCaches. See
+ * the documentation of $wgObjectCaches for more detail.
+ *
+ * @param $params array
+ */
+ public function __construct( $params ) {
+ if ( !isset( $params['caches'] ) ) {
+ throw new MWException( __METHOD__.': the caches parameter is required' );
+ }
+
+ $this->caches = array();
+ foreach ( $params['caches'] as $cacheInfo ) {
+ $this->caches[] = ObjectCache::newFromParams( $cacheInfo );
+ }
+ }
+
+ public function setDebug( $debug ) {
+ $this->doWrite( 'setDebug', $debug );
+ }
+
+ public function get( $key ) {
+ foreach ( $this->caches as $cache ) {
+ $value = $cache->get( $key );
+ if ( $value !== false ) {
+ return $value;
+ }
+ }
+ return false;
+ }
+
+ public function set( $key, $value, $exptime = 0 ) {
+ return $this->doWrite( 'set', $key, $value, $exptime );
+ }
+
+ public function delete( $key, $time = 0 ) {
+ return $this->doWrite( 'delete', $key, $time );
+ }
+
+ public function add( $key, $value, $exptime = 0 ) {
+ return $this->doWrite( 'add', $key, $value, $exptime );
+ }
+
+ public function replace( $key, $value, $exptime = 0 ) {
+ return $this->doWrite( 'replace', $key, $value, $exptime );
+ }
+
+ public function incr( $key, $value = 1 ) {
+ return $this->doWrite( 'incr', $key, $value );
+ }
+
+ public function decr( $key, $value = 1 ) {
+ return $this->doWrite( 'decr', $key, $value );
+ }
+
+ public function lock( $key, $timeout = 0 ) {
+ // Lock only the first cache, to avoid deadlocks
+ if ( isset( $this->caches[0] ) ) {
+ return $this->caches[0]->lock( $key, $timeout );
+ } else {
+ return true;
+ }
+ }
+
+ public function unlock( $key ) {
+ if ( isset( $this->caches[0] ) ) {
+ return $this->caches[0]->unlock( $key );
+ } else {
+ return true;
+ }
+ }
+
+ protected function doWrite( $method /*, ... */ ) {
+ $ret = true;
+ $args = func_get_args();
+ array_shift( $args );
+
+ foreach ( $this->caches as $cache ) {
+ if ( !call_user_func_array( array( $cache, $method ), $args ) ) {
+ $ret = false;
+ }
+ }
+ return $ret;
+ }
+
+ /**
+ * Delete objects expiring before a certain date.
+ *
+ * Succeed if any of the child caches succeed.
+ */
+ public function deleteObjectsExpiringBefore( $date ) {
+ $ret = false;
+ foreach ( $this->caches as $cache ) {
+ if ( $cache->deleteObjectsExpiringBefore( $date ) ) {
+ $ret = true;
+ }
+ }
+ return $ret;
+ }
+}
diff --git a/includes/objectcache/ObjectCache.php b/includes/objectcache/ObjectCache.php
new file mode 100644
index 00000000..99e38953
--- /dev/null
+++ b/includes/objectcache/ObjectCache.php
@@ -0,0 +1,119 @@
+<?php
+/**
+ * Functions to get cache objects
+ *
+ * @file
+ * @ingroup Cache
+ */
+class ObjectCache {
+ static $instances = array();
+
+ /**
+ * Get a cached instance of the specified type of cache object.
+ *
+ * @param $id
+ *
+ * @return object
+ */
+ static function getInstance( $id ) {
+ if ( isset( self::$instances[$id] ) ) {
+ return self::$instances[$id];
+ }
+
+ $object = self::newFromId( $id );
+ self::$instances[$id] = $object;
+ return $object;
+ }
+
+ /**
+ * Clear all the cached instances.
+ */
+ static function clear() {
+ self::$instances = array();
+ }
+
+ /**
+ * Create a new cache object of the specified type.
+ *
+ * @param $id
+ *
+ * @return ObjectCache
+ */
+ static function newFromId( $id ) {
+ global $wgObjectCaches;
+
+ if ( !isset( $wgObjectCaches[$id] ) ) {
+ throw new MWException( "Invalid object cache type \"$id\" requested. " .
+ "It is not present in \$wgObjectCaches." );
+ }
+
+ return self::newFromParams( $wgObjectCaches[$id] );
+ }
+
+ /**
+ * Create a new cache object from parameters
+ *
+ * @param $params array
+ *
+ * @return ObjectCache
+ */
+ static function newFromParams( $params ) {
+ if ( isset( $params['factory'] ) ) {
+ return call_user_func( $params['factory'], $params );
+ } elseif ( isset( $params['class'] ) ) {
+ $class = $params['class'];
+ return new $class( $params );
+ } else {
+ throw new MWException( "The definition of cache type \"" . print_r( $params, true ) . "\" lacks both " .
+ "factory and class parameters." );
+ }
+ }
+
+ /**
+ * Factory function referenced from DefaultSettings.php for CACHE_ANYTHING
+ */
+ static function newAnything( $params ) {
+ global $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType;
+ $candidates = array( $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType );
+ foreach ( $candidates as $candidate ) {
+ if ( $candidate !== CACHE_NONE && $candidate !== CACHE_ANYTHING ) {
+ return self::getInstance( $candidate );
+ }
+ }
+ return self::getInstance( CACHE_DB );
+ }
+
+ /**
+ * Factory function referenced from DefaultSettings.php for CACHE_ACCEL.
+ *
+ * @return ObjectCache
+ */
+ static function newAccelerator( $params ) {
+ if ( function_exists( 'eaccelerator_get' ) ) {
+ $id = 'eaccelerator';
+ } elseif ( function_exists( 'apc_fetch') ) {
+ $id = 'apc';
+ } elseif( function_exists( 'xcache_get' ) && wfIniGetBool( 'xcache.var_size' ) ) {
+ $id = 'xcache';
+ } elseif( function_exists( 'wincache_ucache_get' ) ) {
+ $id = 'wincache';
+ } else {
+ throw new MWException( "CACHE_ACCEL requested but no suitable object " .
+ "cache is present. You may want to install APC." );
+ }
+ return self::newFromId( $id );
+ }
+
+ /**
+ * Factory function that creates a memcached client object.
+ * The idea of this is that it might eventually detect and automatically
+ * support the PECL extension, assuming someone can get it to compile.
+ *
+ * @param $params array
+ *
+ * @return MemcachedPhpBagOStuff
+ */
+ static function newMemcached( $params ) {
+ return new MemcachedPhpBagOStuff( $params );
+ }
+}
diff --git a/includes/objectcache/SqlBagOStuff.php b/includes/objectcache/SqlBagOStuff.php
new file mode 100644
index 00000000..78817d0b
--- /dev/null
+++ b/includes/objectcache/SqlBagOStuff.php
@@ -0,0 +1,432 @@
+<?php
+
+/**
+ * Class to store objects in the database
+ *
+ * @ingroup Cache
+ */
+class SqlBagOStuff extends BagOStuff {
+
+ /**
+ * @var LoadBalancer
+ */
+ var $lb;
+
+ /**
+ * @var DatabaseBase
+ */
+ var $db;
+ var $serverInfo;
+ var $lastExpireAll = 0;
+ var $purgePeriod = 100;
+ var $shards = 1;
+ var $tableName = 'objectcache';
+
+ /**
+ * Constructor. Parameters are:
+ * - server: A server info structure in the format required by each
+ * element in $wgDBServers.
+ *
+ * - purgePeriod: The average number of object cache requests in between
+ * garbage collection operations, where expired entries
+ * are removed from the database. Or in other words, the
+ * reciprocal of the probability of purging on any given
+ * request. If this is set to zero, purging will never be
+ * done.
+ *
+ * - 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
+ * 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
+ * distributed across all tables by key hash. This is for
+ * MySQL bugs 61735 and 61736.
+ *
+ * @param $params array
+ */
+ public function __construct( $params ) {
+ if ( isset( $params['server'] ) ) {
+ $this->serverInfo = $params['server'];
+ $this->serverInfo['load'] = 1;
+ }
+ if ( isset( $params['purgePeriod'] ) ) {
+ $this->purgePeriod = intval( $params['purgePeriod'] );
+ }
+ if ( isset( $params['tableName'] ) ) {
+ $this->tableName = $params['tableName'];
+ }
+ if ( isset( $params['shards'] ) ) {
+ $this->shards = intval( $params['shards'] );
+ }
+ }
+
+ /**
+ * @return DatabaseBase
+ */
+ protected function getDB() {
+ if ( !isset( $this->db ) ) {
+ # If server connection info was given, use that
+ if ( $this->serverInfo ) {
+ $this->lb = new LoadBalancer( array(
+ 'servers' => array( $this->serverInfo ) ) );
+ $this->db = $this->lb->getConnection( DB_MASTER );
+ $this->db->clearFlag( DBO_TRX );
+ } else {
+ # We must keep a separate connection to MySQL in order to avoid deadlocks
+ # However, SQLite has an opposite behaviour.
+ # @todo Investigate behaviour for other databases
+ if ( wfGetDB( DB_MASTER )->getType() == 'sqlite' ) {
+ $this->db = wfGetDB( DB_MASTER );
+ } else {
+ $this->lb = wfGetLBFactory()->newMainLB();
+ $this->db = $this->lb->getConnection( DB_MASTER );
+ $this->db->clearFlag( DBO_TRX );
+ }
+ }
+ }
+
+ return $this->db;
+ }
+
+ /**
+ * Get the table name for a given key
+ */
+ protected function getTableByKey( $key ) {
+ if ( $this->shards > 1 ) {
+ $hash = hexdec( substr( md5( $key ), 0, 8 ) ) & 0x7fffffff;
+ return $this->getTableByShard( $hash % $this->shards );
+ } else {
+ return $this->tableName;
+ }
+ }
+
+ /**
+ * Get the table name for a given shard index
+ */
+ protected function getTableByShard( $index ) {
+ if ( $this->shards > 1 ) {
+ $decimals = strlen( $this->shards - 1 );
+ return $this->tableName .
+ sprintf( "%0{$decimals}d", $index );
+ } else {
+ return $this->tableName;
+ }
+ }
+
+ public function get( $key ) {
+ # expire old entries if any
+ $this->garbageCollect();
+ $db = $this->getDB();
+ $tableName = $this->getTableByKey( $key );
+ $row = $db->selectRow( $tableName, array( 'value', 'exptime' ),
+ array( 'keyname' => $key ), __METHOD__ );
+
+ if ( !$row ) {
+ $this->debug( 'get: no matching rows' );
+ return false;
+ }
+
+ $this->debug( "get: retrieved data; expiry time is " . $row->exptime );
+
+ if ( $this->isExpired( $row->exptime ) ) {
+ $this->debug( "get: key has expired, deleting" );
+ try {
+ $db->begin();
+ # Put the expiry time in the WHERE condition to avoid deleting a
+ # newly-inserted value
+ $db->delete( $tableName,
+ array(
+ 'keyname' => $key,
+ 'exptime' => $row->exptime
+ ), __METHOD__ );
+ $db->commit();
+ } catch ( DBQueryError $e ) {
+ $this->handleWriteError( $e );
+ }
+
+ return false;
+ }
+
+ return $this->unserialize( $db->decodeBlob( $row->value ) );
+ }
+
+ public function set( $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();
+ // (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 ),
+ array( 'keyname' ),
+ array(
+ 'keyname' => $key,
+ 'value' => $db->encodeBlob( $this->serialize( $value ) ),
+ 'exptime' => $encExpiry
+ ), __METHOD__ );
+ $db->commit();
+ } catch ( DBQueryError $e ) {
+ $this->handleWriteError( $e );
+
+ return false;
+ }
+
+ return true;
+ }
+
+ public function delete( $key, $time = 0 ) {
+ $db = $this->getDB();
+
+ try {
+ $db->begin();
+ $db->delete(
+ $this->getTableByKey( $key ),
+ array( 'keyname' => $key ),
+ __METHOD__ );
+ $db->commit();
+ } catch ( DBQueryError $e ) {
+ $this->handleWriteError( $e );
+
+ return false;
+ }
+
+ return true;
+ }
+
+ public function incr( $key, $step = 1 ) {
+ $db = $this->getDB();
+ $tableName = $this->getTableByKey( $key );
+ $step = intval( $step );
+
+ try {
+ $db->begin();
+ $row = $db->selectRow(
+ $tableName,
+ array( 'value', 'exptime' ),
+ array( 'keyname' => $key ),
+ __METHOD__,
+ array( 'FOR UPDATE' ) );
+ if ( $row === false ) {
+ // Missing
+ $db->commit();
+
+ return null;
+ }
+ $db->delete( $tableName, array( 'keyname' => $key ), __METHOD__ );
+ if ( $this->isExpired( $row->exptime ) ) {
+ // Expired, do not reinsert
+ $db->commit();
+
+ return null;
+ }
+
+ $oldValue = intval( $this->unserialize( $db->decodeBlob( $row->value ) ) );
+ $newValue = $oldValue + $step;
+ $db->insert( $tableName,
+ array(
+ 'keyname' => $key,
+ 'value' => $db->encodeBlob( $this->serialize( $newValue ) ),
+ 'exptime' => $row->exptime
+ ), __METHOD__, 'IGNORE' );
+
+ if ( $db->affectedRows() == 0 ) {
+ // Race condition. See bug 28611
+ $newValue = null;
+ }
+ $db->commit();
+ } catch ( DBQueryError $e ) {
+ $this->handleWriteError( $e );
+
+ return null;
+ }
+
+ return $newValue;
+ }
+
+ public function keys() {
+ $db = $this->getDB();
+ $result = array();
+
+ for ( $i = 0; $i < $this->shards; $i++ ) {
+ $res = $db->select( $this->getTableByShard( $i ),
+ array( 'keyname' ), false, __METHOD__ );
+ foreach ( $res as $row ) {
+ $result[] = $row->keyname;
+ }
+ }
+
+ return $result;
+ }
+
+ protected function isExpired( $exptime ) {
+ return $exptime != $this->getMaxDateTime() && wfTimestamp( TS_UNIX, $exptime ) < time();
+ }
+
+ protected function getMaxDateTime() {
+ if ( time() > 0x7fffffff ) {
+ return $this->getDB()->timestamp( 1 << 62 );
+ } else {
+ return $this->getDB()->timestamp( 0x7fffffff );
+ }
+ }
+
+ protected function garbageCollect() {
+ if ( !$this->purgePeriod ) {
+ // Disabled
+ return;
+ }
+ // Only purge on one in every $this->purgePeriod requests.
+ if ( $this->purgePeriod !== 1 && mt_rand( 0, $this->purgePeriod - 1 ) ) {
+ return;
+ }
+ $now = time();
+ // Avoid repeating the delete within a few seconds
+ if ( $now > ( $this->lastExpireAll + 1 ) ) {
+ $this->lastExpireAll = $now;
+ $this->expireAll();
+ }
+ }
+
+ public function expireAll() {
+ $this->deleteObjectsExpiringBefore( wfTimestampNow() );
+ }
+
+ /**
+ * Delete objects from the database which expire before a certain date.
+ */
+ public function deleteObjectsExpiringBefore( $timestamp ) {
+ $db = $this->getDB();
+ $dbTimestamp = $db->timestamp( $timestamp );
+
+ try {
+ for ( $i = 0; $i < $this->shards; $i++ ) {
+ $db->begin();
+ $db->delete(
+ $this->getTableByShard( $i ),
+ array( 'exptime < ' . $db->addQuotes( $dbTimestamp ) ),
+ __METHOD__ );
+ $db->commit();
+ }
+ } catch ( DBQueryError $e ) {
+ $this->handleWriteError( $e );
+ }
+ return true;
+ }
+
+ public function deleteAll() {
+ $db = $this->getDB();
+
+ try {
+ for ( $i = 0; $i < $this->shards; $i++ ) {
+ $db->begin();
+ $db->delete( $this->getTableByShard( $i ), '*', __METHOD__ );
+ $db->commit();
+ }
+ } catch ( DBQueryError $e ) {
+ $this->handleWriteError( $e );
+ }
+ }
+
+ /**
+ * Serialize an object and, if possible, compress the representation.
+ * On typical message and page data, this can provide a 3X decrease
+ * in storage requirements.
+ *
+ * @param $data mixed
+ * @return string
+ */
+ protected function serialize( &$data ) {
+ $serial = serialize( $data );
+
+ if ( function_exists( 'gzdeflate' ) ) {
+ return gzdeflate( $serial );
+ } else {
+ return $serial;
+ }
+ }
+
+ /**
+ * Unserialize and, if necessary, decompress an object.
+ * @param $serial string
+ * @return mixed
+ */
+ protected function unserialize( $serial ) {
+ if ( function_exists( 'gzinflate' ) ) {
+ wfSuppressWarnings();
+ $decomp = gzinflate( $serial );
+ wfRestoreWarnings();
+
+ if ( false !== $decomp ) {
+ $serial = $decomp;
+ }
+ }
+
+ $ret = unserialize( $serial );
+
+ return $ret;
+ }
+
+ /**
+ * Handle a DBQueryError which occurred during a write operation.
+ * Ignore errors which are due to a read-only database, rethrow others.
+ */
+ protected function handleWriteError( $exception ) {
+ $db = $this->getDB();
+
+ if ( !$db->wasReadOnlyError() ) {
+ throw $exception;
+ }
+
+ try {
+ $db->rollback();
+ } catch ( DBQueryError $e ) {
+ }
+
+ wfDebug( __METHOD__ . ": ignoring query error\n" );
+ $db->ignoreErrors( false );
+ }
+
+ /**
+ * 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 ( $i = 0; $i < $this->shards; $i++ ) {
+ $db->begin();
+ $db->query(
+ 'CREATE TABLE ' . $db->tableName( $this->getTableByShard( $i ) ) .
+ ' LIKE ' . $db->tableName( 'objectcache' ),
+ __METHOD__ );
+ $db->commit();
+ }
+ }
+}
+
+/**
+ * Backwards compatibility alias
+ */
+class MediaWikiBagOStuff extends SqlBagOStuff { }
+
diff --git a/includes/objectcache/WinCacheBagOStuff.php b/includes/objectcache/WinCacheBagOStuff.php
new file mode 100644
index 00000000..7f464946
--- /dev/null
+++ b/includes/objectcache/WinCacheBagOStuff.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * Wrapper for WinCache object caching functions; identical interface
+ * to the APC wrapper
+ *
+ * @ingroup Cache
+ */
+class WinCacheBagOStuff extends BagOStuff {
+
+ /**
+ * Get a value from the WinCache object cache
+ *
+ * @param $key String: cache key
+ * @return mixed
+ */
+ public function get( $key ) {
+ $val = wincache_ucache_get( $key );
+
+ if ( is_string( $val ) ) {
+ $val = unserialize( $val );
+ }
+
+ return $val;
+ }
+
+ /**
+ * Store a value in the WinCache object cache
+ *
+ * @param $key String: cache key
+ * @param $value Mixed: object to store
+ * @param $expire Int: expiration time
+ * @return bool
+ */
+ public function set( $key, $value, $expire = 0 ) {
+ $result = wincache_ucache_set( $key, serialize( $value ), $expire );
+
+ /* wincache_ucache_set returns an empty array on success if $value
+ was an array, bool otherwise */
+ return ( is_array( $result ) && $result === array() ) || $result;
+ }
+
+ /**
+ * Remove a value from the WinCache object cache
+ *
+ * @param $key String: cache key
+ * @param $time Int: not used in this implementation
+ * @return bool
+ */
+ public function delete( $key, $time = 0 ) {
+ wincache_ucache_delete( $key );
+
+ return true;
+ }
+
+ 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;
+ }
+}
diff --git a/includes/objectcache/XCacheBagOStuff.php b/includes/objectcache/XCacheBagOStuff.php
new file mode 100644
index 00000000..0ddf1245
--- /dev/null
+++ b/includes/objectcache/XCacheBagOStuff.php
@@ -0,0 +1,51 @@
+<?php
+
+/**
+ * Wrapper for XCache object caching functions; identical interface
+ * to the APC wrapper
+ *
+ * @ingroup Cache
+ */
+class XCacheBagOStuff extends BagOStuff {
+ /**
+ * Get a value from the XCache object cache
+ *
+ * @param $key String: cache key
+ * @return mixed
+ */
+ public function get( $key ) {
+ $val = xcache_get( $key );
+
+ if ( is_string( $val ) ) {
+ $val = unserialize( $val );
+ }
+
+ return $val;
+ }
+
+ /**
+ * Store a value in the XCache object cache
+ *
+ * @param $key String: cache key
+ * @param $value Mixed: object to store
+ * @param $expire Int: expiration time
+ * @return bool
+ */
+ public function set( $key, $value, $expire = 0 ) {
+ xcache_set( $key, serialize( $value ), $expire );
+ return true;
+ }
+
+ /**
+ * Remove a value from the XCache object cache
+ *
+ * @param $key String: cache key
+ * @param $time Int: not used in this implementation
+ * @return bool
+ */
+ public function delete( $key, $time = 0 ) {
+ xcache_unset( $key );
+ return true;
+ }
+}
+
diff --git a/includes/objectcache/eAccelBagOStuff.php b/includes/objectcache/eAccelBagOStuff.php
new file mode 100644
index 00000000..30d24e80
--- /dev/null
+++ b/includes/objectcache/eAccelBagOStuff.php
@@ -0,0 +1,46 @@
+<?php
+
+/**
+ * This is a wrapper for eAccelerator's shared memory functions.
+ *
+ * This is basically identical to the deceased Turck MMCache version,
+ * mostly because eAccelerator is based on Turck MMCache.
+ *
+ * @ingroup Cache
+ */
+class eAccelBagOStuff extends BagOStuff {
+ public function get( $key ) {
+ $val = eaccelerator_get( $key );
+
+ if ( is_string( $val ) ) {
+ $val = unserialize( $val );
+ }
+
+ return $val;
+ }
+
+ public function set( $key, $value, $exptime = 0 ) {
+ eaccelerator_put( $key, serialize( $value ), $exptime );
+
+ return true;
+ }
+
+ public function delete( $key, $time = 0 ) {
+ eaccelerator_rm( $key );
+
+ return true;
+ }
+
+ public function lock( $key, $waitTimeout = 0 ) {
+ eaccelerator_lock( $key );
+
+ return true;
+ }
+
+ public function unlock( $key ) {
+ eaccelerator_unlock( $key );
+
+ return true;
+ }
+}
+
diff --git a/includes/parser/CoreLinkFunctions.php b/includes/parser/CoreLinkFunctions.php
index 913ec22b..8de13278 100644
--- a/includes/parser/CoreLinkFunctions.php
+++ b/includes/parser/CoreLinkFunctions.php
@@ -10,11 +10,25 @@
* @ingroup Parser
*/
class CoreLinkFunctions {
+ /**
+ * @param $parser Parser_LinkHooks
+ * @return bool
+ */
static function register( $parser ) {
$parser->setLinkHook( NS_CATEGORY, array( __CLASS__, 'categoryLinkHook' ) );
return true;
}
+ /**
+ * @param $parser Parser
+ * @param $holders LinkHolderArray
+ * @param $markers LinkMarkerReplacer
+ * @param Title $title
+ * @param $titleText
+ * @param null $displayText
+ * @param bool $leadingColon
+ * @return bool
+ */
static function defaultLinkHook( $parser, $holders, $markers,
Title $title, $titleText, &$displayText = null, &$leadingColon = false ) {
if( isset($displayText) && $markers->findMarker( $displayText ) ) {
@@ -25,9 +39,19 @@ class CoreLinkFunctions {
# Return false so that this link is reverted back to WikiText
return false;
}
- return $holders->makeHolder( $title, isset($displayText) ? $displayText : $titleText, '', '', '' );
+ return $holders->makeHolder( $title, isset($displayText) ? $displayText : $titleText, array(), '', '' );
}
-
+
+ /**
+ * @param $parser Parser
+ * @param $holders LinkHolderArray
+ * @param $markers LinkMarkerReplacer
+ * @param Title $title
+ * @param $titleText
+ * @param null $sortText
+ * @param bool $leadingColon
+ * @return bool|string
+ */
static function categoryLinkHook( $parser, $holders, $markers,
Title $title, $titleText, &$sortText = null, &$leadingColon = false ) {
global $wgContLang;
@@ -48,5 +72,5 @@ class CoreLinkFunctions {
$parser->mOutput->addCategory( $title->getDBkey(), $sortText );
return '';
}
-
+
}
diff --git a/includes/parser/CoreParserFunctions.php b/includes/parser/CoreParserFunctions.php
index 94949221..eebed44c 100644
--- a/includes/parser/CoreParserFunctions.php
+++ b/includes/parser/CoreParserFunctions.php
@@ -10,6 +10,10 @@
* @ingroup Parser
*/
class CoreParserFunctions {
+ /**
+ * @param $parser Parser
+ * @return void
+ */
static function register( $parser ) {
global $wgAllowDisplayTitle, $wgAllowSlowParserFunctions;
@@ -31,6 +35,8 @@ class CoreParserFunctions {
$parser->setFunctionHook( 'localurle', array( __CLASS__, 'localurle' ), SFH_NO_HASH );
$parser->setFunctionHook( 'fullurl', array( __CLASS__, 'fullurl' ), SFH_NO_HASH );
$parser->setFunctionHook( 'fullurle', array( __CLASS__, 'fullurle' ), SFH_NO_HASH );
+ $parser->setFunctionHook( 'canonicalurl', array( __CLASS__, 'canonicalurl' ), SFH_NO_HASH );
+ $parser->setFunctionHook( 'canonicalurle', array( __CLASS__, 'canonicalurle' ), SFH_NO_HASH );
$parser->setFunctionHook( 'formatnum', array( __CLASS__, 'formatnum' ), SFH_NO_HASH );
$parser->setFunctionHook( 'grammar', array( __CLASS__, 'grammar' ), SFH_NO_HASH );
$parser->setFunctionHook( 'gender', array( __CLASS__, 'gender' ), SFH_NO_HASH );
@@ -83,18 +89,27 @@ class CoreParserFunctions {
}
}
+ /**
+ * @param $parser Parser
+ * @param string $part1
+ * @return array
+ */
static function intFunction( $parser, $part1 = '' /*, ... */ ) {
if ( strval( $part1 ) !== '' ) {
$args = array_slice( func_get_args(), 2 );
- $message = wfMsgGetKey( $part1, true, $parser->getOptions()->getUserLang(), false );
- $message = wfMsgReplaceArgs( $message, $args );
- $message = $parser->replaceVariables( $message ); // like $wgMessageCache->transform()
- return $message;
+ $message = wfMessage( $part1, $args )->inLanguage( $parser->getOptions()->getUserLang() )->plain();
+ return array( $message, 'noparse' => false );
} else {
return array( 'found' => false );
}
}
+ /**
+ * @param $parser Parser
+ * @param $date
+ * @param null $defaultPref
+ * @return mixed|string
+ */
static function formatDate( $parser, $date, $defaultPref = null ) {
$df = DateFormatter::getInstance();
@@ -172,6 +187,11 @@ class CoreParserFunctions {
return $wgContLang->ucfirst( $s );
}
+ /**
+ * @param $parser Parser
+ * @param string $s
+ * @return
+ */
static function lc( $parser, $s = '' ) {
global $wgContLang;
if ( is_callable( array( $parser, 'markerSkipCallback' ) ) ) {
@@ -181,6 +201,11 @@ class CoreParserFunctions {
}
}
+ /**
+ * @param $parser Parser
+ * @param string $s
+ * @return
+ */
static function uc( $parser, $s = '' ) {
global $wgContLang;
if ( is_callable( array( $parser, 'markerSkipCallback' ) ) ) {
@@ -194,6 +219,8 @@ class CoreParserFunctions {
static function localurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeLocalURL', $s, $arg ); }
static function fullurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getFullURL', $s, $arg ); }
static function fullurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeFullURL', $s, $arg ); }
+ static function canonicalurl( $parser, $s = '', $arg = null ) { return self::urlFunction( 'getCanonicalURL', $s, $arg ); }
+ static function canonicalurle( $parser, $s = '', $arg = null ) { return self::urlFunction( 'escapeCanonicalURL', $s, $arg ); }
static function urlFunction( $func, $s = '', $arg = null ) {
$title = Title::newFromText( $s );
@@ -219,6 +246,12 @@ class CoreParserFunctions {
}
}
+ /**
+ * @param $parser Parser
+ * @param string $num
+ * @param null $raw
+ * @return
+ */
static function formatNum( $parser, $num = '', $raw = null) {
if ( self::israw( $raw ) ) {
return $parser->getFunctionLang()->parseFormattedNumber( $num );
@@ -227,35 +260,54 @@ class CoreParserFunctions {
}
}
+ /**
+ * @param $parser Parser
+ * @param string $case
+ * @param string $word
+ * @return
+ */
static function grammar( $parser, $case = '', $word = '' ) {
return $parser->getFunctionLang()->convertGrammar( $word, $case );
}
- static function gender( $parser, $user ) {
+ /**
+ * @param $parser Parser
+ * @param $username string
+ * @return
+ */
+ static function gender( $parser, $username ) {
wfProfileIn( __METHOD__ );
$forms = array_slice( func_get_args(), 2);
+ $username = trim( $username );
+
// default
$gender = User::getDefaultOption( 'gender' );
// allow prefix.
- $title = Title::newFromText( $user );
+ $title = Title::newFromText( $username );
- if ( is_object( $title ) && $title->getNamespace() == NS_USER )
- $user = $title->getText();
+ if ( $title && $title->getNamespace() == NS_USER ) {
+ $username = $title->getText();
+ }
- // check parameter, or use $wgUser if in interface message
- $user = User::newFromName( $user );
+ // check parameter, or use the ParserOptions if in interface message
+ $user = User::newFromName( $username );
if ( $user ) {
$gender = $user->getOption( 'gender' );
- } elseif ( $parser->getOptions()->getInterfaceMessage() ) {
- global $wgUser;
- $gender = $wgUser->getOption( 'gender' );
+ } elseif ( $username === '' && $parser->getOptions()->getInterfaceMessage() ) {
+ $gender = $parser->getOptions()->getUser()->getOption( 'gender' );
}
$ret = $parser->getFunctionLang()->gender( $gender, $forms );
wfProfileOut( __METHOD__ );
return $ret;
}
+
+ /**
+ * @param $parser Parser
+ * @param string $text
+ * @return
+ */
static function plural( $parser, $text = '' ) {
$forms = array_slice( func_get_args(), 2 );
$text = $parser->getFunctionLang()->parseFormattedNumber( $text );
@@ -396,10 +448,11 @@ class CoreParserFunctions {
return '';
return wfUrlencode( $t->getSubjectNsText() );
}
- /*
+
+ /**
* Functions to get and normalize pagenames, corresponding to the magic words
* of the same names
- */
+ */
static function pagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) )
@@ -410,7 +463,7 @@ class CoreParserFunctions {
$t = Title::newFromText( $title );
if ( is_null( $t ) )
return '';
- return $t->getPartialURL();
+ return wfEscapeWikiText( $t->getPartialURL() );
}
static function fullpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
@@ -422,31 +475,31 @@ class CoreParserFunctions {
$t = Title::newFromText( $title );
if ( is_null( $t ) || !$t->canTalk() )
return '';
- return $t->getPrefixedURL();
+ return wfEscapeWikiText( $t->getPrefixedURL() );
}
static function subpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) )
return '';
- return $t->getSubpageText();
+ return wfEscapeWikiText( $t->getSubpageText() );
}
static function subpagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) )
return '';
- return $t->getSubpageUrlForm();
+ return wfEscapeWikiText( $t->getSubpageUrlForm() );
}
static function basepagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) )
return '';
- return $t->getBaseText();
+ return wfEscapeWikiText( $t->getBaseText() );
}
static function basepagenamee( $parser, $title = null ) {
$t = Title::newFromText( $title );
if ( is_null( $t ) )
return '';
- return wfUrlEncode( str_replace( ' ', '_', $t->getBaseText() ) );
+ return wfEscapeWikiText( wfUrlEncode( str_replace( ' ', '_', $t->getBaseText() ) ) );
}
static function talkpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
@@ -458,7 +511,7 @@ class CoreParserFunctions {
$t = Title::newFromText( $title );
if ( is_null( $t ) || !$t->canTalk() )
return '';
- return $t->getTalkPage()->getPrefixedUrl();
+ return wfEscapeWikiText( $t->getTalkPage()->getPrefixedUrl() );
}
static function subjectpagename( $parser, $title = null ) {
$t = Title::newFromText( $title );
@@ -470,7 +523,7 @@ class CoreParserFunctions {
$t = Title::newFromText( $title );
if ( is_null( $t ) )
return '';
- return $t->getSubjectPage()->getPrefixedUrl();
+ return wfEscapeWikiText( $t->getSubjectPage()->getPrefixedUrl() );
}
/**
@@ -503,12 +556,13 @@ class CoreParserFunctions {
* Return the size of the given page, or 0 if it's nonexistent. This is an
* expensive parser function and can't be called too many times per page.
*
- * @todo Fixme: This doesn't work correctly on preview for getting the size
+ * @todo FIXME: This doesn't work correctly on preview for getting the size
* of the current page.
- * @todo Fixme: Title::getLength() documentation claims that it adds things
+ * @todo FIXME: Title::getLength() documentation claims that it adds things
* to the link cache, so the local cache here should be unnecessary, but
* in fact calling getLength() repeatedly for the same $page does seem to
* run one query for each call?
+ * @param $parser Parser
*/
static function pagesize( $parser, $page = '', $raw = null ) {
static $cache = array();
@@ -546,10 +600,25 @@ class CoreParserFunctions {
return implode( $restrictions, ',' );
}
- static function language( $parser, $arg = '' ) {
+ /**
+ * Gives language names.
+ * @param $parser Parser
+ * @param $code String Language code
+ * @param $language String Language code
+ * @return String
+ */
+ static function language( $parser, $code = '', $language = '' ) {
global $wgContLang;
- $lang = $wgContLang->getLanguageName( strtolower( $arg ) );
- return $lang != '' ? $lang : $arg;
+ $code = strtolower( $code );
+ $language = strtolower( $language );
+
+ if ( $language !== '' ) {
+ $names = Language::getTranslatedLanguageNames( $language );
+ return isset( $names[$code] ) ? $names[$code] : wfBCP47( $code );
+ }
+
+ $lang = $wgContLang->getLanguageName( $code );
+ return $lang !== '' ? $lang : wfBCP47( $code );
}
/**
@@ -586,12 +655,17 @@ class CoreParserFunctions {
return self::pad( $string, $length, $padding );
}
+ /**
+ * @param $parser Parser
+ * @param $text
+ * @return string
+ */
static function anchorencode( $parser, $text ) {
return substr( $parser->guessSectionNameFromWikiText( $text ), 1);
}
static function special( $parser, $text ) {
- list( $page, $subpage ) = SpecialPage::resolveAliasWithSubpage( $text );
+ list( $page, $subpage ) = SpecialPageFactory::resolveAlias( $text );
if ( $page ) {
$title = SpecialPage::getTitleFor( $page, $subpage );
return $title;
@@ -600,6 +674,11 @@ class CoreParserFunctions {
}
}
+ /**
+ * @param $parser Parser
+ * @param $text
+ * @return string
+ */
public static function defaultsort( $parser, $text ) {
$text = trim( $text );
if( strlen( $text ) == 0 )
@@ -616,11 +695,41 @@ class CoreParserFunctions {
'</span>' );
}
- public static function filepath( $parser, $name='', $option='' ) {
+ // Usage {{filepath|300}}, {{filepath|nowiki}}, {{filepath|nowiki|300}} or {{filepath|300|nowiki}}
+ public static function filepath( $parser, $name='', $argA='', $argB='' ) {
$file = wfFindFile( $name );
- if( $file ) {
+ $size = '';
+ $argA_int = intval( $argA );
+ $argB_int = intval( $argB );
+
+ if ( $argB_int > 0 ) {
+ // {{filepath: | option | size }}
+ $size = $argB_int;
+ $option = $argA;
+
+ } elseif ( $argA_int > 0 ) {
+ // {{filepath: | size [|option] }}
+ $size = $argA_int;
+ $option = $argB;
+
+ } else {
+ // {{filepath: [|option] }}
+ $option = $argA;
+ }
+
+ if ( $file ) {
$url = $file->getFullUrl();
- if( $option == 'nowiki' ) {
+
+ // If a size is requested...
+ if ( is_integer( $size ) ) {
+ $mto = $file->transform( array( 'width' => $size ) );
+ // ... and we can
+ if ( $mto && !$mto->isError() ) {
+ // ... change the URL to point to a thumbnail.
+ $url = wfExpandUrl( $mto->getUrl(), PROTO_RELATIVE );
+ }
+ }
+ if ( $option == 'nowiki' ) {
return array( $url, 'nowiki' => true );
}
return $url;
diff --git a/includes/parser/CoreTagHooks.php b/includes/parser/CoreTagHooks.php
index 33f3c824..7d488c4b 100644
--- a/includes/parser/CoreTagHooks.php
+++ b/includes/parser/CoreTagHooks.php
@@ -10,19 +10,30 @@
* @ingroup Parser
*/
class CoreTagHooks {
+ /**
+ * @param $parser Parser
+ * @return void
+ */
static function register( $parser ) {
- global $wgRawHtml, $wgUseTeX;
+ global $wgRawHtml;
$parser->setHook( 'pre', array( __CLASS__, 'pre' ) );
$parser->setHook( 'nowiki', array( __CLASS__, 'nowiki' ) );
$parser->setHook( 'gallery', array( __CLASS__, 'gallery' ) );
if ( $wgRawHtml ) {
$parser->setHook( 'html', array( __CLASS__, 'html' ) );
}
- if ( $wgUseTeX ) {
- $parser->setHook( 'math', array( __CLASS__, 'math' ) );
- }
}
+ /**
+ * Core parser tag hook function for 'pre'.
+ * Text is treated roughly as 'nowiki' wrapped in an HTML 'pre' tag;
+ * valid HTML attributes are passed on.
+ *
+ * @param string $text
+ * @param array $attribs
+ * @param Parser $parser
+ * @return string HTML
+ */
static function pre( $text, $attribs, $parser ) {
// Backwards-compatibility hack
$content = StringUtils::delimiterReplace( '<nowiki>', '</nowiki>', '$1', $text, 'i' );
@@ -33,6 +44,20 @@ class CoreTagHooks {
'</pre>';
}
+ /**
+ * Core parser tag hook function for 'html', used only when
+ * $wgRawHtml is enabled.
+ *
+ * This is potentially unsafe and should be used only in very careful
+ * circumstances, as the contents are emitted as raw HTML.
+ *
+ * Uses undocumented extended tag hook return values, introduced in r61913.
+ *
+ * @param $content string
+ * @param $attributes array
+ * @param $parser Parser
+ * @return array
+ */
static function html( $content, $attributes, $parser ) {
global $wgRawHtml;
if( $wgRawHtml ) {
@@ -42,16 +67,38 @@ class CoreTagHooks {
}
}
+ /**
+ * Core parser tag hook function for 'nowiki'. Text within this section
+ * gets interpreted as a string of text with HTML-compatible character
+ * references, and wiki markup within it will not be expanded.
+ *
+ * Uses undocumented extended tag hook return values, introduced in r61913.
+ *
+ * @param $content string
+ * @param $attributes array
+ * @param $parser Parser
+ * @return array
+ */
static function nowiki( $content, $attributes, $parser ) {
$content = strtr( $content, array( '-{' => '-&#123;', '}-' => '&#125;-' ) );
return array( Xml::escapeTagsOnly( $content ), 'markerType' => 'nowiki' );
}
- static function math( $content, $attributes, $parser ) {
- global $wgContLang;
- return $wgContLang->armourMath( MathRenderer::renderMath( $content, $attributes, $parser->getOptions() ) );
- }
-
+ /**
+ * Core parser tag hook function for 'gallery'.
+ *
+ * Renders a thumbnail list of the given images, with optional captions.
+ * Full syntax documented on the wiki:
+ *
+ * http://www.mediawiki.org/wiki/Help:Images#Gallery_syntax
+ *
+ * @todo break Parser::renderImageGallery out here too.
+ *
+ * @param string $content
+ * @param array $attributes
+ * @param Parser $parser
+ * @return string HTML
+ */
static function gallery( $content, $attributes, $parser ) {
return $parser->renderImageGallery( $content, $attributes );
}
diff --git a/includes/parser/DateFormatter.php b/includes/parser/DateFormatter.php
index cf510171..6559e886 100644
--- a/includes/parser/DateFormatter.php
+++ b/includes/parser/DateFormatter.php
@@ -182,8 +182,8 @@ class DateFormatter
$bits = array();
$key = $this->keys[$this->mSource];
for ( $p=0; $p < strlen($key); $p++ ) {
- if ( $key{$p} != ' ' ) {
- $bits[$key{$p}] = $matches[$p+1];
+ if ( $key[$p] != ' ' ) {
+ $bits[$key[$p]] = $matches[$p+1];
}
}
@@ -224,7 +224,7 @@ class DateFormatter
}
for ( $p=0; $p < strlen( $format ); $p++ ) {
- $char = $format{$p};
+ $char = $format[$p];
switch ( $char ) {
case 'd': # ISO day of month
$text .= $bits['d'];
@@ -327,7 +327,7 @@ class DateFormatter
* @todo document
*/
function makeNormalYear( $iso ) {
- if ( $iso{0} == '-' ) {
+ if ( $iso[0] == '-' ) {
$text = (intval( substr( $iso, 1 ) ) + 1) . ' BC';
} else {
$text = intval( $iso );
diff --git a/includes/parser/LinkHolderArray.php b/includes/parser/LinkHolderArray.php
index 19313b80..5418b6e5 100644
--- a/includes/parser/LinkHolderArray.php
+++ b/includes/parser/LinkHolderArray.php
@@ -12,6 +12,7 @@ class LinkHolderArray {
var $internals = array(), $interwikis = array();
var $size = 0;
var $parent;
+ protected $tempIdOffset;
function __construct( $parent ) {
$this->parent = $parent;
@@ -26,8 +27,51 @@ class LinkHolderArray {
}
}
+ /**
+ * Don't serialize the parent object, it is big, and not needed when it is
+ * a parameter to mergeForeign(), which is the only application of
+ * serializing at present.
+ *
+ * Compact the titles, only serialize the text form.
+ */
+ function __sleep() {
+ foreach ( $this->internals as &$nsLinks ) {
+ foreach ( $nsLinks as &$entry ) {
+ unset( $entry['title'] );
+ }
+ }
+ unset( $nsLinks );
+ unset( $entry );
+
+ foreach ( $this->interwikis as &$entry ) {
+ unset( $entry['title'] );
+ }
+ unset( $entry );
+
+ return array( 'internals', 'interwikis', 'size' );
+ }
+
+ /**
+ * Recreate the Title objects
+ */
+ function __wakeup() {
+ foreach ( $this->internals as &$nsLinks ) {
+ foreach ( $nsLinks as &$entry ) {
+ $entry['title'] = Title::newFromText( $entry['pdbk'] );
+ }
+ }
+ unset( $nsLinks );
+ unset( $entry );
+
+ foreach ( $this->interwikis as &$entry ) {
+ $entry['title'] = Title::newFromText( $entry['pdbk'] );
+ }
+ unset( $entry );
+ }
+
/**
* Merge another LinkHolderArray into this one
+ * @param $other LinkHolderArray
*/
function merge( $other ) {
foreach ( $other->internals as $ns => $entries ) {
@@ -42,6 +86,86 @@ class LinkHolderArray {
}
/**
+ * Merge a LinkHolderArray from another parser instance into this one. The
+ * keys will not be preserved. Any text which went with the old
+ * LinkHolderArray and needs to work with the new one should be passed in
+ * the $texts array. The strings in this array will have their link holders
+ * converted for use in the destination link holder. The resulting array of
+ * strings will be returned.
+ *
+ * @param $other LinkHolderArray
+ * @param $texts Array of strings
+ * @return Array
+ */
+ function mergeForeign( $other, $texts ) {
+ $this->tempIdOffset = $idOffset = $this->parent->nextLinkID();
+ $maxId = 0;
+
+ # Renumber internal links
+ foreach ( $other->internals as $ns => $nsLinks ) {
+ foreach ( $nsLinks as $key => $entry ) {
+ $newKey = $idOffset + $key;
+ $this->internals[$ns][$newKey] = $entry;
+ $maxId = $newKey > $maxId ? $newKey : $maxId;
+ }
+ }
+ $texts = preg_replace_callback( '/(<!--LINK \d+:)(\d+)(-->)/',
+ array( $this, 'mergeForeignCallback' ), $texts );
+
+ # Renumber interwiki links
+ foreach ( $other->interwikis as $key => $entry ) {
+ $newKey = $idOffset + $key;
+ $this->interwikis[$newKey] = $entry;
+ $maxId = $newKey > $maxId ? $newKey : $maxId;
+ }
+ $texts = preg_replace_callback( '/(<!--IWLINK )(\d+)(-->)/',
+ array( $this, 'mergeForeignCallback' ), $texts );
+
+ # Set the parent link ID to be beyond the highest used ID
+ $this->parent->setLinkID( $maxId + 1 );
+ $this->tempIdOffset = null;
+ return $texts;
+ }
+
+ protected function mergeForeignCallback( $m ) {
+ return $m[1] . ( $m[2] + $this->tempIdOffset ) . $m[3];
+ }
+
+ /**
+ * Get a subset of the current LinkHolderArray which is sufficient to
+ * interpret the given text.
+ */
+ function getSubArray( $text ) {
+ $sub = new LinkHolderArray( $this->parent );
+
+ # Internal links
+ $pos = 0;
+ while ( $pos < strlen( $text ) ) {
+ if ( !preg_match( '/<!--LINK (\d+):(\d+)-->/',
+ $text, $m, PREG_OFFSET_CAPTURE, $pos ) )
+ {
+ break;
+ }
+ $ns = $m[1][0];
+ $key = $m[2][0];
+ $sub->internals[$ns][$key] = $this->internals[$ns][$key];
+ $pos = $m[0][1] + strlen( $m[0][0] );
+ }
+
+ # Interwiki links
+ $pos = 0;
+ while ( $pos < strlen( $text ) ) {
+ if ( !preg_match( '/<!--IWLINK (\d+)-->/', $text, $m, PREG_OFFSET_CAPTURE, $pos ) ) {
+ break;
+ }
+ $key = $m[1][0];
+ $sub->interwikis[$key] = $this->interwikis[$key];
+ $pos = $m[0][1] + strlen( $m[0][0] );
+ }
+ return $sub;
+ }
+
+ /**
* Returns true if the memory requirements of this object are getting large
*/
function isBig() {
@@ -65,8 +189,9 @@ class LinkHolderArray {
* parsing of interwiki links, and secondly to allow all existence checks and
* article length checks (for stub links) to be bundled into a single query.
*
+ * @param $nt Title
*/
- function makeHolder( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
+ function makeHolder( $nt, $text = '', $query = array(), $trail = '', $prefix = '' ) {
wfProfileIn( __METHOD__ );
if ( ! is_object($nt) ) {
# Fail gracefully
@@ -80,7 +205,7 @@ class LinkHolderArray {
'text' => $prefix.$text.$inside,
'pdbk' => $nt->getPrefixedDBkey(),
);
- if ( $query !== '' ) {
+ if ( $query !== array() ) {
$entry['query'] = $query;
}
@@ -102,18 +227,7 @@ class LinkHolderArray {
}
/**
- * Get the stub threshold
- */
- function getStubThreshold() {
- global $wgUser;
- if ( !isset( $this->stubThreshold ) ) {
- $this->stubThreshold = $wgUser->getStubThreshold();
- }
- return $this->stubThreshold;
- }
-
- /**
- * FIXME: update documentation. makeLinkObj() is deprecated.
+ * @todo FIXME: Update documentation. makeLinkObj() is deprecated.
* Replace <!--LINK--> link placeholders with actual links, in the buffer
* Placeholders created in Skin::makeLinkObj()
* Returns an array of link CSS classes, indexed by PDBK.
@@ -140,14 +254,12 @@ class LinkHolderArray {
global $wgContLang;
$colours = array();
- $sk = $this->parent->getOptions()->getSkin( $this->parent->mTitle );
$linkCache = LinkCache::singleton();
$output = $this->parent->getOutput();
wfProfileIn( __METHOD__.'-check' );
$dbr = wfGetDB( DB_SLAVE );
- $page = $dbr->tableName( 'page' );
- $threshold = $this->getStubThreshold();
+ $threshold = $this->parent->getOptions()->getStubThreshold();
# Sort by namespace
ksort( $this->internals );
@@ -155,8 +267,7 @@ class LinkHolderArray {
$linkcolour_ids = array();
# Generate query
- $query = false;
- $current = null;
+ $queries = array();
foreach ( $this->internals as $ns => $entries ) {
foreach ( $entries as $entry ) {
$title = $entry['title'];
@@ -174,32 +285,35 @@ class LinkHolderArray {
} elseif ( $ns == NS_SPECIAL ) {
$colours[$pdbk] = 'new';
} elseif ( ( $id = $linkCache->getGoodLinkID( $pdbk ) ) != 0 ) {
- $colours[$pdbk] = $sk->getLinkColour( $title, $threshold );
+ $colours[$pdbk] = Linker::getLinkColour( $title, $threshold );
$output->addLink( $title, $id );
$linkcolour_ids[$id] = $pdbk;
} elseif ( $linkCache->isBadLink( $pdbk ) ) {
$colours[$pdbk] = 'new';
} else {
# Not in the link cache, add it to the query
- if ( !isset( $current ) ) {
- $current = $ns;
- $query = "SELECT page_id, page_namespace, page_title, page_is_redirect, page_len, page_latest";
- $query .= " FROM $page WHERE (page_namespace=$ns AND page_title IN(";
- } elseif ( $current != $ns ) {
- $current = $ns;
- $query .= ")) OR (page_namespace=$ns AND page_title IN(";
- } else {
- $query .= ', ';
- }
-
- $query .= $dbr->addQuotes( $title->getDBkey() );
+ $queries[$ns][] = $title->getDBkey();
}
}
}
- if ( $query ) {
- $query .= '))';
+ if ( $queries ) {
+ $where = array();
+ foreach( $queries as $ns => $pages ){
+ $where[] = $dbr->makeList(
+ array(
+ 'page_namespace' => $ns,
+ 'page_title' => $pages,
+ ),
+ LIST_AND
+ );
+ }
- $res = $dbr->query( $query, __METHOD__ );
+ $res = $dbr->select(
+ 'page',
+ array( 'page_id', 'page_namespace', 'page_title', 'page_is_redirect', 'page_len', 'page_latest' ),
+ $dbr->makeList( $where, LIST_OR ),
+ __METHOD__
+ );
# Fetch data and form into an associative array
# non-existent = broken
@@ -208,10 +322,10 @@ class LinkHolderArray {
$pdbk = $title->getPrefixedDBkey();
$linkCache->addGoodLinkObj( $s->page_id, $title, $s->page_len, $s->page_is_redirect, $s->page_latest );
$output->addLink( $title, $s->page_id );
- # FIXME: convoluted data flow
+ # @todo FIXME: Convoluted data flow
# The redirect status and length is passed to getLinkColour via the LinkCache
# Use formal parameters instead
- $colours[$pdbk] = $sk->getLinkColour( $title, $threshold );
+ $colours[$pdbk] = Linker::getLinkColour( $title, $threshold );
//add id to the extension todolist
$linkcolour_ids[$s->page_id] = $pdbk;
}
@@ -235,23 +349,29 @@ class LinkHolderArray {
foreach ( $entries as $index => $entry ) {
$pdbk = $entry['pdbk'];
$title = $entry['title'];
- $query = isset( $entry['query'] ) ? $entry['query'] : '';
+ $query = isset( $entry['query'] ) ? $entry['query'] : array();
$key = "$ns:$index";
$searchkey = "<!--LINK $key-->";
- if ( !isset( $colours[$pdbk] ) || $colours[$pdbk] == 'new' ) {
- $linkCache->addBadLinkObj( $title );
+ $displayText = $entry['text'];
+ if ( $displayText === '' ) {
+ $displayText = null;
+ }
+ if ( !isset( $colours[$pdbk] ) ) {
$colours[$pdbk] = 'new';
+ }
+ $attribs = array();
+ if ( $colours[$pdbk] == 'new' ) {
+ $linkCache->addBadLinkObj( $title );
$output->addLink( $title, 0 );
- // FIXME: replace deprecated makeBrokenLinkObj() by link()
- $replacePairs[$searchkey] = $sk->makeBrokenLinkObj( $title,
- $entry['text'],
- $query );
+ $type = array( 'broken' );
} else {
- // FIXME: replace deprecated makeColouredLinkObj() by link()
- $replacePairs[$searchkey] = $sk->makeColouredLinkObj( $title, $colours[$pdbk],
- $entry['text'],
- $query );
+ if ( $colours[$pdbk] != '' ) {
+ $attribs['class'] = $colours[$pdbk];
+ }
+ $type = array( 'known', 'noclasses' );
}
+ $replacePairs[$searchkey] = Linker::link( $title, $displayText,
+ $attribs, $query, $type );
}
}
$replacer = new HashtableReplacer( $replacePairs, 1 );
@@ -278,11 +398,10 @@ class LinkHolderArray {
wfProfileIn( __METHOD__ );
# Make interwiki link HTML
- $sk = $this->parent->getOptions()->getSkin( $this->parent->mTitle );
$output = $this->parent->getOutput();
$replacePairs = array();
foreach( $this->interwikis as $key => $link ) {
- $replacePairs[$key] = $sk->link( $link['title'], $link['text'] );
+ $replacePairs[$key] = Linker::link( $link['title'], $link['text'] );
$output->addInterwikiLink( $link['title'] );
}
$replacer = new HashtableReplacer( $replacePairs, 1 );
@@ -303,11 +422,10 @@ class LinkHolderArray {
$variantMap = array(); // maps $pdbkey_Variant => $keys (of link holders)
$output = $this->parent->getOutput();
$linkCache = LinkCache::singleton();
- $sk = $this->parent->getOptions()->getSkin( $this->parent->mTitle );
- $threshold = $this->getStubThreshold();
+ $threshold = $this->parent->getOptions()->getStubThreshold();
$titlesToBeConverted = '';
$titlesAttrs = array();
-
+
// Concatenate titles to a single string, thus we only need auto convert the
// single string to all variants. This would improve parser's performance
// significantly.
@@ -322,14 +440,14 @@ class LinkHolderArray {
'ns' => $ns,
'key' => "$ns:$index",
'titleText' => $titleText,
- );
+ );
// separate titles with \0 because it would never appears
// in a valid title
$titlesToBeConverted .= $titleText . "\0";
}
}
}
-
+
// Now do the conversion and explode string to text of titles
$titlesAllVariants = $wgContLang->autoConvertToAllVariants( $titlesToBeConverted );
$allVariantsName = array_keys( $titlesAllVariants );
@@ -341,9 +459,8 @@ class LinkHolderArray {
for ( $i = 0; $i < $l; $i ++ ) {
foreach ( $allVariantsName as $variantName ) {
$textVariant = $titlesAllVariants[$variantName][$i];
- extract( $titlesAttrs[$i] );
- if($textVariant != $titleText){
- $variantTitle = Title::makeTitle( $ns, $textVariant );
+ if ( $textVariant != $titlesAttrs[$i]['titleText'] ) {
+ $variantTitle = Title::makeTitle( $titlesAttrs[$i]['ns'], $textVariant );
if( is_null( $variantTitle ) ) {
continue;
}
@@ -372,11 +489,12 @@ class LinkHolderArray {
if(!$linkBatch->isEmpty()){
// construct query
$dbr = wfGetDB( DB_SLAVE );
- $page = $dbr->tableName( 'page' );
- $titleClause = $linkBatch->constructSet('page', $dbr);
- $variantQuery = "SELECT page_id, page_namespace, page_title, page_is_redirect, page_len";
- $variantQuery .= " FROM $page WHERE $titleClause";
- $varRes = $dbr->query( $variantQuery, __METHOD__ );
+ $varRes = $dbr->select( 'page',
+ array( 'page_id', 'page_namespace', 'page_title', 'page_is_redirect', 'page_len' ),
+ $linkBatch->constructSet( 'page', $dbr ),
+ __METHOD__
+ );
+
$linkcolour_ids = array();
// for each found variants, figure out link holders and replace
@@ -387,14 +505,14 @@ class LinkHolderArray {
$vardbk = $variantTitle->getDBkey();
$holderKeys = array();
- if(isset($variantMap[$varPdbk])){
+ if( isset( $variantMap[$varPdbk] ) ) {
$holderKeys = $variantMap[$varPdbk];
$linkCache->addGoodLinkObj( $s->page_id, $variantTitle, $s->page_len, $s->page_is_redirect );
$output->addLink( $variantTitle, $s->page_id );
}
// loop over link holders
- foreach($holderKeys as $key){
+ foreach( $holderKeys as $key ) {
list( $ns, $index ) = explode( ':', $key, 2 );
$entry =& $this->internals[$ns][$index];
$pdbk = $entry['pdbk'];
@@ -405,10 +523,10 @@ class LinkHolderArray {
$entry['pdbk'] = $varPdbk;
// set pdbk and colour
- # FIXME: convoluted data flow
+ # @todo FIXME: Convoluted data flow
# The redirect status and length is passed to getLinkColour via the LinkCache
# Use formal parameters instead
- $colours[$varPdbk] = $sk->getLinkColour( $variantTitle, $threshold );
+ $colours[$varPdbk] = Linker::getLinkColour( $variantTitle, $threshold );
$linkcolour_ids[$s->page_id] = $pdbk;
}
}
diff --git a/includes/parser/Parser.php b/includes/parser/Parser.php
index 4a3aa03b..8d4c60df 100644
--- a/includes/parser/Parser.php
+++ b/includes/parser/Parser.php
@@ -24,18 +24,20 @@
* removes HTML comments and expands templates
* cleanSig() / cleanSigInSig()
* Cleans a signature before saving it to preferences
- * extractSections()
- * Extracts sections from an article for section editing
+ * getSection()
+ * Return the content of a section from an article for section editing
+ * replaceSection()
+ * Replaces a section by number inside an article
* getPreloadText()
* Removes <noinclude> sections, and <includeonly> tags.
*
* Globals used:
* objects: $wgLang, $wgContLang
*
- * NOT $wgArticle, $wgUser or $wgTitle. Keep them away!
+ * NOT $wgUser or $wgTitle. Keep them away!
*
* settings:
- * $wgUseTex*, $wgUseDynamicDates*, $wgInterwikiMagic*,
+ * $wgUseDynamicDates*, $wgInterwikiMagic*,
* $wgNamespacesWithSubpages, $wgAllowExternalImages*,
* $wgLocaltimezone, $wgAllowSpecialInclusion*,
* $wgMaxArticleSize*
@@ -53,6 +55,12 @@ class Parser {
*/
const VERSION = '1.6.4';
+ /**
+ * Update this version number when the output of serialiseHalfParsedText()
+ * changes in an incompatible way
+ */
+ const HALF_PARSED_VERSION = 2;
+
# Flags for Parser::setFunctionHook
# Also available as global constants from Defines.php
const SFH_NO_HASH = 1;
@@ -89,50 +97,99 @@ class Parser {
const MARKER_SUFFIX = "-QINU\x7f";
# Persistent:
- var $mTagHooks, $mTransparentTagHooks, $mFunctionHooks, $mFunctionSynonyms, $mVariables;
- var $mSubstWords, $mImageParams, $mImageParamsMagicArray, $mStripList, $mMarkerIndex;
- var $mPreprocessor, $mExtLinkBracketedRegex, $mUrlProtocols, $mDefaultStripList;
- var $mVarCache, $mConf, $mFunctionTagHooks;
+ var $mTagHooks = array();
+ var $mTransparentTagHooks = array();
+ var $mFunctionHooks = array();
+ var $mFunctionSynonyms = array( 0 => array(), 1 => array() );
+ var $mFunctionTagHooks = array();
+ var $mStripList = array();
+ var $mDefaultStripList = array();
+ var $mVarCache = array();
+ var $mImageParams = array();
+ var $mImageParamsMagicArray = array();
+ var $mMarkerIndex = 0;
+ var $mFirstCall = true;
+
+ # Initialised by initialiseVariables()
+
+ /**
+ * @var MagicWordArray
+ */
+ var $mVariables;
+ /**
+ * @var MagicWordArray
+ */
+ var $mSubstWords;
+ var $mConf, $mPreprocessor, $mExtLinkBracketedRegex, $mUrlProtocols; # Initialised in constructor
# Cleared with clearState():
- var $mOutput, $mAutonumber, $mDTopen, $mStripState;
+ /**
+ * @var ParserOutput
+ */
+ var $mOutput;
+ var $mAutonumber, $mDTopen;
+
+ /**
+ * @var StripState
+ */
+ var $mStripState;
+
var $mIncludeCount, $mArgStack, $mLastSection, $mInPre;
- var $mLinkHolders, $mLinkID;
+ /**
+ * @var LinkHolderArray
+ */
+ var $mLinkHolders;
+
+ var $mLinkID;
var $mIncludeSizes, $mPPNodeCount, $mDefaultSort;
var $mTplExpandCache; # empty-frame expansion cache
var $mTplRedirCache, $mTplDomCache, $mHeadings, $mDoubleUnderscores;
var $mExpensiveFunctionCount; # number of expensive parser function calls
+ /**
+ * @var User
+ */
+ var $mUser; # User object; only used when doing pre-save transform
+
# Temporary
# These are variables reset at least once per parse regardless of $clearState
- var $mOptions; # ParserOptions object
+
+ /**
+ * @var ParserOptions
+ */
+ var $mOptions;
+
+ /**
+ * @var Title
+ */
var $mTitle; # Title context, used for self-link rendering and similar things
var $mOutputType; # Output type, one of the OT_xxx constants
var $ot; # Shortcut alias, see setOutputType()
+ var $mRevisionObject; # The revision object of the specified revision ID
var $mRevisionId; # ID to display in {{REVISIONID}} tags
var $mRevisionTimestamp; # The timestamp of the specified revision ID
+ var $mRevisionUser; # User to display in {{REVISIONUSER}} tag
var $mRevIdForTs; # The revision ID which was used to fetch the timestamp
/**
+ * @var string
+ */
+ var $mUniqPrefix;
+
+ /**
* Constructor
- *
- * @public
*/
- function __construct( $conf = array() ) {
+ public function __construct( $conf = array() ) {
$this->mConf = $conf;
- $this->mTagHooks = array();
- $this->mTransparentTagHooks = array();
- $this->mFunctionHooks = array();
- $this->mFunctionTagHooks = array();
- $this->mFunctionSynonyms = array( 0 => array(), 1 => array() );
- $this->mDefaultStripList = $this->mStripList = array();
$this->mUrlProtocols = wfUrlProtocols();
- $this->mExtLinkBracketedRegex = '/\[(\b(' . wfUrlProtocols() . ')'.
+ $this->mExtLinkBracketedRegex = '/\[((' . wfUrlProtocols() . ')'.
'[^][<>"\\x00-\\x20\\x7F]+) *([^\]\\x00-\\x08\\x0a-\\x1F]*?)\]/S';
- $this->mVarCache = array();
if ( isset( $conf['preprocessorClass'] ) ) {
$this->mPreprocessorClass = $conf['preprocessorClass'];
+ } elseif ( defined( 'MW_COMPILED' ) ) {
+ # Preprocessor_Hash is much faster than Preprocessor_DOM in compiled mode
+ $this->mPreprocessorClass = 'Preprocessor_Hash';
} elseif ( extension_loaded( 'domxml' ) ) {
# PECL extension that conflicts with the core DOM extension (bug 13770)
wfDebug( "Warning: you have the obsolete domxml extension for PHP. Please remove it!\n" );
@@ -142,8 +199,7 @@ class Parser {
} else {
$this->mPreprocessorClass = 'Preprocessor_Hash';
}
- $this->mMarkerIndex = 0;
- $this->mFirstCall = true;
+ wfDebug( __CLASS__ . ": using preprocessor: {$this->mPreprocessorClass}\n" );
}
/**
@@ -151,7 +207,7 @@ class Parser {
*/
function __destruct() {
if ( isset( $this->mLinkHolders ) ) {
- $this->mLinkHolders->__destruct();
+ unset( $this->mLinkHolders );
}
foreach ( $this as $name => $value ) {
unset( $this->$name );
@@ -193,13 +249,14 @@ class Parser {
$this->mLastSection = '';
$this->mDTopen = false;
$this->mIncludeCount = array();
- $this->mStripState = new StripState;
$this->mArgStack = false;
$this->mInPre = false;
$this->mLinkHolders = new LinkHolderArray( $this );
$this->mLinkID = 0;
- $this->mRevisionTimestamp = $this->mRevisionId = null;
+ $this->mRevisionObject = $this->mRevisionTimestamp =
+ $this->mRevisionId = $this->mRevisionUser = null;
$this->mVarCache = array();
+ $this->mUser = null;
/**
* Prefix for temporary replacement strings for the multipass parser.
@@ -214,6 +271,7 @@ class Parser {
# $this->mUniqPrefix = "\x07UNIQ" . Parser::getRandomString();
# Changed to \x7f to allow XML double-parsing -- TS
$this->mUniqPrefix = "\x7fUNIQ" . self::getRandomString();
+ $this->mStripState = new StripState( $this->mUniqPrefix );
# Clear these on every parse, bug 4549
@@ -245,7 +303,7 @@ class Parser {
* Do not call this function recursively.
*
* @param $text String: text we want to parse
- * @param $title A title object
+ * @param $title Title object
* @param $options ParserOptions
* @param $linestart boolean
* @param $clearState boolean
@@ -263,20 +321,19 @@ class Parser {
wfProfileIn( __METHOD__ );
wfProfileIn( $fname );
- $this->mOptions = $options;
- if ( $clearState ) {
- $this->clearState();
- }
-
- $this->setTitle( $title ); # Page title has to be set for the pre-processor
+ $this->startParse( $title, $options, self::OT_HTML, $clearState );
$oldRevisionId = $this->mRevisionId;
+ $oldRevisionObject = $this->mRevisionObject;
$oldRevisionTimestamp = $this->mRevisionTimestamp;
+ $oldRevisionUser = $this->mRevisionUser;
if ( $revid !== null ) {
$this->mRevisionId = $revid;
+ $this->mRevisionObject = null;
$this->mRevisionTimestamp = null;
+ $this->mRevisionUser = null;
}
- $this->setOutputType( self::OT_HTML );
+
wfRunHooks( 'ParserBeforeStrip', array( &$this, &$text, &$this->mStripState ) );
# No more strip!
wfRunHooks( 'ParserAfterStrip', array( &$this, &$text, &$this->mStripState ) );
@@ -327,7 +384,7 @@ class Parser {
|| $wgDisableTitleConversion
|| isset( $this->mDoubleUnderscores['nocontentconvert'] )
|| isset( $this->mDoubleUnderscores['notitleconvert'] )
- || $this->mOutput->getDisplayTitle() !== false ) )
+ || $this->mOutput->getDisplayTitle() !== false ) )
{
$convruletitle = $wgContLang->getConvRuleTitle();
if ( $convruletitle ) {
@@ -342,23 +399,7 @@ class Parser {
wfRunHooks( 'ParserBeforeTidy', array( &$this, &$text ) );
-//!JF Move to its own function
-
- $uniq_prefix = $this->mUniqPrefix;
- $matches = array();
- $elements = array_keys( $this->mTransparentTagHooks );
- $text = $this->extractTagsAndParams( $elements, $text, $matches, $uniq_prefix );
-
- foreach ( $matches as $marker => $data ) {
- list( $element, $content, $params, $tag ) = $data;
- $tagName = strtolower( $element );
- if ( isset( $this->mTransparentTagHooks[$tagName] ) ) {
- $output = call_user_func_array( $this->mTransparentTagHooks[$tagName], array( $content, $params, $this ) );
- } else {
- $output = $tag;
- }
- $this->mStripState->general->setPair( $marker, $output );
- }
+ $text = $this->replaceTransparentTags( $text );
$text = $this->mStripState->unstripGeneral( $text );
$text = Sanitizer::normalizeCharReferences( $text );
@@ -415,7 +456,9 @@ class Parser {
$this->mOutput->setText( $text );
$this->mRevisionId = $oldRevisionId;
+ $this->mRevisionObject = $oldRevisionObject;
$this->mRevisionTimestamp = $oldRevisionTimestamp;
+ $this->mRevisionUser = $oldRevisionUser;
wfProfileOut( $fname );
wfProfileOut( __METHOD__ );
@@ -430,6 +473,8 @@ class Parser {
*
* @param $text String: text extension wants to have parsed
* @param $frame PPFrame: The frame to use for expanding any template variables
+ *
+ * @return string
*/
function recursiveTagParse( $text, $frame=false ) {
wfProfileIn( __METHOD__ );
@@ -446,10 +491,7 @@ class Parser {
*/
function preprocess( $text, Title $title, ParserOptions $options, $revid = null ) {
wfProfileIn( __METHOD__ );
- $this->mOptions = $options;
- $this->clearState();
- $this->setOutputType( self::OT_PREPROCESS );
- $this->setTitle( $title );
+ $this->startParse( $title, $options, self::OT_PREPROCESS, true );
if ( $revid !== null ) {
$this->mRevisionId = $revid;
}
@@ -469,10 +511,7 @@ class Parser {
*/
public function getPreloadText( $text, Title $title, ParserOptions $options ) {
# Parser (re)initialisation
- $this->mOptions = $options;
- $this->clearState();
- $this->setOutputType( self::OT_PLAIN );
- $this->setTitle( $title );
+ $this->startParse( $title, $options, self::OT_PLAIN, true );
$flags = PPFrame::NO_ARGS | PPFrame::NO_TEMPLATES;
$dom = $this->preprocessToDom( $text, self::PTD_FOR_INCLUSION );
@@ -484,21 +523,30 @@ class Parser {
/**
* Get a random string
*
- * @private
- * @static
+ * @return string
*/
- static private function getRandomString() {
+ static public function getRandomString() {
return dechex( mt_rand( 0, 0x7fffffff ) ) . dechex( mt_rand( 0, 0x7fffffff ) );
}
/**
+ * Set the current user.
+ * Should only be used when doing pre-save transform.
+ *
+ * @param $user Mixed: User object or null (to reset)
+ */
+ function setUser( $user ) {
+ $this->mUser = $user;
+ }
+
+ /**
* Accessor for mUniqPrefix.
*
* @return String
*/
public function uniqPrefix() {
if ( !isset( $this->mUniqPrefix ) ) {
- # @todo Fixme: this is probably *horribly wrong*
+ # @todo FIXME: This is probably *horribly wrong*
# LanguageConverter seems to want $wgParser's uniqPrefix, however
# if this is called for a parser cache hit, the parser may not
# have ever been initialized in the first place.
@@ -511,11 +559,13 @@ class Parser {
/**
* Set the context title
+ *
+ * @param $t Title
*/
function setTitle( $t ) {
- if ( !$t || $t instanceof FakeTitle ) {
- $t = Title::newFromText( 'NO TITLE' );
- }
+ if ( !$t || $t instanceof FakeTitle ) {
+ $t = Title::newFromText( 'NO TITLE' );
+ }
if ( strval( $t->getFragment() ) !== '' ) {
# Strip the fragment to avoid various odd effects
@@ -599,19 +649,47 @@ class Parser {
return wfSetVar( $this->mOptions, $x );
}
+ /**
+ * @return int
+ */
function nextLinkID() {
return $this->mLinkID++;
}
- function getFunctionLang() {
- global $wgLang, $wgContLang;
+ /**
+ * @param $id int
+ */
+ function setLinkID( $id ) {
+ $this->mLinkID = $id;
+ }
+ /**
+ * @return Language
+ */
+ function getFunctionLang() {
$target = $this->mOptions->getTargetLanguage();
if ( $target !== null ) {
return $target;
- } else {
- return $this->mOptions->getInterfaceMessage() ? $wgLang : $wgContLang;
+ } elseif( $this->mOptions->getInterfaceMessage() ) {
+ global $wgLang;
+ return $wgLang;
+ } elseif( is_null( $this->mTitle ) ) {
+ throw new MWException( __METHOD__.': $this->mTitle is null' );
}
+ return $this->mTitle->getPageLanguage();
+ }
+
+ /**
+ * Get a User object either from $this->mUser, if set, or from the
+ * ParserOptions object otherwise
+ *
+ * @return User object
+ */
+ function getUser() {
+ if ( !is_null( $this->mUser ) ) {
+ return $this->mUser;
+ }
+ return $this->mOptions->getUser();
}
/**
@@ -638,15 +716,13 @@ class Parser {
* array( 'param' => 'x' ),
* '<element param="x">tag content</element>' ) )
*
- * @param $elements list of element names. Comments are always extracted.
- * @param $text Source text string.
- * @param $matches Out parameter, Array: extracted tags
- * @param $uniq_prefix
+ * @param $elements array list of element names. Comments are always extracted.
+ * @param $text string Source text string.
+ * @param $matches array Out parameter, Array: extracted tags
+ * @param $uniq_prefix string
* @return String: stripped text
- *
- * @static
*/
- public function extractTagsAndParams( $elements, $text, &$matches, $uniq_prefix = '' ) {
+ public static function extractTagsAndParams( $elements, $text, &$matches, $uniq_prefix = '' ) {
static $n = 1;
$stripped = '';
$matches = array();
@@ -710,77 +786,33 @@ class Parser {
/**
* Get a list of strippable XML-like elements
+ *
+ * @return array
*/
function getStripList() {
return $this->mStripList;
}
/**
- * @deprecated use replaceVariables
- */
- function strip( $text, $state, $stripcomments = false , $dontstrip = array() ) {
- return $text;
- }
-
- /**
- * Restores pre, math, and other extensions removed by strip()
- *
- * always call unstripNoWiki() after this one
- * @private
- * @deprecated use $this->mStripState->unstrip()
- */
- function unstrip( $text, $state ) {
- return $state->unstripGeneral( $text );
- }
-
- /**
- * Always call this after unstrip() to preserve the order
- *
- * @private
- * @deprecated use $this->mStripState->unstrip()
- */
- function unstripNoWiki( $text, $state ) {
- return $state->unstripNoWiki( $text );
- }
-
- /**
- * @deprecated use $this->mStripState->unstripBoth()
- */
- function unstripForHTML( $text ) {
- return $this->mStripState->unstripBoth( $text );
- }
-
- /**
* Add an item to the strip state
* Returns the unique tag which must be inserted into the stripped text
* The tag will be replaced with the original text in unstrip()
- *
- * @private
*/
function insertStripItem( $text ) {
$rnd = "{$this->mUniqPrefix}-item-{$this->mMarkerIndex}-" . self::MARKER_SUFFIX;
$this->mMarkerIndex++;
- $this->mStripState->general->setPair( $rnd, $text );
+ $this->mStripState->addGeneral( $rnd, $text );
return $rnd;
}
/**
- * Interface with html tidy
- * @deprecated Use MWTidy::tidy()
- */
- public static function tidy( $text ) {
- wfDeprecated( __METHOD__ );
- return MWTidy::tidy( $text );
- }
-
- /**
* parse the wiki syntax used to render tables
*
* @private
*/
function doTableStuff( $text ) {
wfProfileIn( __METHOD__ );
-
+
$lines = StringUtils::explode( "\n", $text );
$out = '';
$td_history = array(); # Is currently a td tag open?
@@ -793,7 +825,7 @@ class Parser {
foreach ( $lines as $outLine ) {
$line = trim( $outLine );
- if ( $line === '' ) { # empty line, go to next line
+ if ( $line === '' ) { # empty line, go to next line
$out .= $outLine."\n";
continue;
}
@@ -1043,7 +1075,7 @@ class Parser {
*/
function doMagicLinks( $text ) {
wfProfileIn( __METHOD__ );
- $prots = $this->mUrlProtocols;
+ $prots = wfUrlProtocolsWithoutProtRel();
$urlChar = self::EXT_LINK_URL_CLASS;
$text = preg_replace_callback(
'!(?: # Start cases
@@ -1052,15 +1084,20 @@ class Parser {
(\\b(?:$prots)$urlChar+) | # m[3]: Free external links" . '
(?:RFC|PMID)\s+([0-9]+) | # m[4]: RFC or PMID, capture number
ISBN\s+(\b # m[5]: ISBN, capture number
- (?: 97[89] [\ \-]? )? # optional 13-digit ISBN prefix
- (?: [0-9] [\ \-]? ){9} # 9 digits with opt. delimiters
- [0-9Xx] # check digit
- \b)
+ (?: 97[89] [\ \-]? )? # optional 13-digit ISBN prefix
+ (?: [0-9] [\ \-]? ){9} # 9 digits with opt. delimiters
+ [0-9Xx] # check digit
+ \b)
)!x', array( &$this, 'magicLinkCallback' ), $text );
wfProfileOut( __METHOD__ );
return $text;
}
+ /**
+ * @throws MWException
+ * @param $m array
+ * @return HTML|string
+ */
function magicLinkCallback( $m ) {
if ( isset( $m[1] ) && $m[1] !== '' ) {
# Skip anchor
@@ -1087,10 +1124,8 @@ class Parser {
throw new MWException( __METHOD__.': unrecognised match type "' .
substr( $m[0], 0, 20 ) . '"' );
}
- $url = wfMsgForContent( $urlmsg, $id);
- $sk = $this->mOptions->getSkin( $this->mTitle );
- $la = $sk->getExternalLinkAttributes( "external $CssClass" );
- return "<a href=\"{$url}\"{$la}>{$keyword} {$id}</a>";
+ $url = wfMsgForContent( $urlmsg, $id );
+ return Linker::makeExternalLink( $url, "{$keyword} {$id}", true, $CssClass );
} elseif ( isset( $m[5] ) && $m[5] !== '' ) {
# ISBN
$isbn = $m[5];
@@ -1117,7 +1152,6 @@ class Parser {
global $wgContLang;
wfProfileIn( __METHOD__ );
- $sk = $this->mOptions->getSkin( $this->mTitle );
$trail = '';
# The characters '<' and '>' (which were escaped by
@@ -1148,7 +1182,7 @@ class Parser {
$text = $this->maybeMakeExternalImage( $url );
if ( $text === false ) {
# Not an image, make a link
- $text = $sk->makeExternalLink( $url, $wgContLang->markNoConversion($url), true, 'free',
+ $text = Linker::makeExternalLink( $url, $wgContLang->markNoConversion($url), true, 'free',
$this->getExternalLinkAttribs( $url ) );
# Register it in the output object...
# Replace unnecessary URL escape codes with their equivalent characters
@@ -1355,7 +1389,7 @@ class Parser {
/**
* Replace external links (REL)
*
- * Note: this is all very hackish and the order of execution matters a lot.
+ * Note: this is all very hackish and the order of execution matters a lot.
* Make sure to run maintenance/parserTests.php if you change this code.
*
* @private
@@ -1364,8 +1398,6 @@ class Parser {
global $wgContLang;
wfProfileIn( __METHOD__ );
- $sk = $this->mOptions->getSkin( $this->mTitle );
-
$bits = preg_split( $this->mExtLinkBracketedRegex, $text, -1, PREG_SPLIT_DELIM_CAPTURE );
$s = array_shift( $bits );
@@ -1399,16 +1431,10 @@ class Parser {
# No link text, e.g. [http://domain.tld/some.link]
if ( $text == '' ) {
- # Autonumber if allowed. See bug #5918
- if ( strpos( wfUrlProtocols(), substr( $protocol, 0, strpos( $protocol, ':' ) ) ) !== false ) {
- $langObj = $this->getFunctionLang();
- $text = '[' . $langObj->formatNum( ++$this->mAutonumber ) . ']';
- $linktype = 'autonumber';
- } else {
- # Otherwise just use the URL
- $text = htmlspecialchars( $url );
- $linktype = 'free';
- }
+ # Autonumber
+ $langObj = $this->getFunctionLang();
+ $text = '[' . $langObj->formatNum( ++$this->mAutonumber ) . ']';
+ $linktype = 'autonumber';
} else {
# Have link text, e.g. [http://domain.tld/some.link text]s
# Check for trail
@@ -1423,7 +1449,7 @@ class Parser {
# This means that users can paste URLs directly into the text
# Funny characters like ö aren't valid in URLs anyway
# This was changed in August 2004
- $s .= $sk->makeExternalLink( $url, $text, false, $linktype,
+ $s .= Linker::makeExternalLink( $url, $text, false, $linktype,
$this->getExternalLinkAttribs( $url ) ) . $dtrail . $trail;
# Register link in the output object.
@@ -1449,23 +1475,12 @@ class Parser {
*/
function getExternalLinkAttribs( $url = false ) {
$attribs = array();
- global $wgNoFollowLinks, $wgNoFollowNsExceptions;
+ global $wgNoFollowLinks, $wgNoFollowNsExceptions, $wgNoFollowDomainExceptions;
$ns = $this->mTitle->getNamespace();
- if ( $wgNoFollowLinks && !in_array( $ns, $wgNoFollowNsExceptions ) ) {
+ if ( $wgNoFollowLinks && !in_array( $ns, $wgNoFollowNsExceptions ) &&
+ !wfMatchesDomainList( $url, $wgNoFollowDomainExceptions ) )
+ {
$attribs['rel'] = 'nofollow';
-
- global $wgNoFollowDomainExceptions;
- if ( $wgNoFollowDomainExceptions ) {
- $bits = wfParseUrl( $url );
- if ( is_array( $bits ) && isset( $bits['host'] ) ) {
- foreach ( $wgNoFollowDomainExceptions as $domain ) {
- if ( substr( $bits['host'], -strlen( $domain ) ) == $domain ) {
- unset( $attribs['rel'] );
- break;
- }
- }
- }
- }
}
if ( $this->mOptions->getExternalLinkTarget() ) {
$attribs['target'] = $this->mOptions->getExternalLinkTarget();
@@ -1473,7 +1488,6 @@ class Parser {
return $attribs;
}
-
/**
* Replace unusual URL escape codes with their equivalent characters
*
@@ -1513,7 +1527,6 @@ class Parser {
* @private
*/
function maybeMakeExternalImage( $url ) {
- $sk = $this->mOptions->getSkin( $this->mTitle );
$imagesfrom = $this->mOptions->getAllowExternalImagesFrom();
$imagesexception = !empty( $imagesfrom );
$text = false;
@@ -1532,10 +1545,10 @@ class Parser {
$imagematch = false;
}
if ( $this->mOptions->getAllowExternalImages()
- || ( $imagesexception && $imagematch ) ) {
+ || ( $imagesexception && $imagematch ) ) {
if ( preg_match( self::EXT_IMAGE_REGEX, $url ) ) {
# Image found
- $text = $sk->makeExternalImage( $url );
+ $text = Linker::makeExternalImage( $url );
}
}
if ( !$text && $this->mOptions->getEnableImageWhitelist()
@@ -1548,7 +1561,7 @@ class Parser {
}
if ( preg_match( '/' . str_replace( '/', '\\/', $entry ) . '/i', $url ) ) {
# Image matches a whitelist entry
- $text = $sk->makeExternalImage( $url );
+ $text = Linker::makeExternalImage( $url );
break;
}
}
@@ -1589,10 +1602,9 @@ class Parser {
$e1_img = "/^([{$tc}]+)\\|(.*)\$/sD";
}
- $sk = $this->mOptions->getSkin( $this->mTitle );
$holders = new LinkHolderArray( $this );
- # split the entire text string on occurences of [[
+ # split the entire text string on occurences of [[
$a = StringUtils::explode( '[[', ' ' . $s );
# get the first element (all text up to first [[), and remove the space we added
$s = $a->current();
@@ -1684,14 +1696,14 @@ class Parser {
# fix up urlencoded title texts
if ( strpos( $m[1], '%' ) !== false ) {
# Should anchors '#' also be rejected?
- $m[1] = str_replace( array('<', '>'), array('&lt;', '&gt;'), urldecode( $m[1] ) );
+ $m[1] = str_replace( array('<', '>'), array('&lt;', '&gt;'), rawurldecode( $m[1] ) );
}
$trail = $m[3];
} elseif ( preg_match( $e1_img, $line, $m ) ) { # Invalid, but might be an image with a link in its caption
$might_be_img = true;
$text = $m[2];
if ( strpos( $m[1], '%' ) !== false ) {
- $m[1] = urldecode( $m[1] );
+ $m[1] = rawurldecode( $m[1] );
}
$trail = "";
} else { # Invalid form; output directly
@@ -1705,7 +1717,7 @@ class Parser {
# 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(?:' . wfUrlProtocols() . ')/', $m[1] ) ) {
+ if ( preg_match( '/^(?:' . wfUrlProtocols() . ')/', $m[1] ) ) {
$s .= $prefix . '[[' . $line ;
wfProfileOut( __METHOD__."-misc" );
continue;
@@ -1787,9 +1799,10 @@ class Parser {
$text = $link;
} else {
# Bug 4598 madness. Handle the quotes only if they come from the alternate part
- # [[Lista d''e paise d''o munno]] -> <a href="">Lista d''e paise d''o munno</a>
- # [[Criticism of Harry Potter|Criticism of ''Harry Potter'']] -> <a href="Criticism of Harry Potter">Criticism of <i>Harry Potter</i></a>
- $text = $this->doQuotes($text);
+ # [[Lista d''e paise d''o munno]] -> <a href="...">Lista d''e paise d''o munno</a>
+ # [[Criticism of Harry Potter|Criticism of ''Harry Potter'']]
+ # -> <a href="Criticism of Harry Potter">Criticism of <i>Harry Potter</i></a>
+ $text = $this->doQuotes( $text );
}
# Link not escaped by : , create the various objects
@@ -1823,14 +1836,13 @@ class Parser {
$holders->merge( $this->replaceInternalLinks2( $text ) );
}
# cloak any absolute URLs inside the image markup, so replaceExternalLinks() won't touch them
- $s .= $prefix . $this->armorLinks( $this->makeImage( $nt, $text, $holders ) ) . $trail;
+ $s .= $prefix . $this->armorLinks(
+ $this->makeImage( $nt, $text, $holders ) ) . $trail;
} else {
$s .= $prefix . $trail;
}
- $this->mOutput->addImage( $nt->getDBkey() );
wfProfileOut( __METHOD__."-image" );
continue;
-
}
if ( $ns == NS_CATEGORY ) {
@@ -1851,7 +1863,7 @@ class Parser {
* Strip the whitespace Category links produce, see bug 87
* @todo We might want to use trim($tmp, "\n") here.
*/
- $s .= trim( $prefix . $trail, "\n" ) == '' ? '': $prefix . $trail;
+ $s .= trim( $prefix . $trail, "\n" ) == '' ? '' : $prefix . $trail;
wfProfileOut( __METHOD__."-category" );
continue;
@@ -1861,26 +1873,24 @@ class Parser {
# Self-link checking
if ( $nt->getFragment() === '' && $ns != NS_SPECIAL ) {
if ( in_array( $nt->getPrefixedText(), $selflink, true ) ) {
- $s .= $prefix . $sk->makeSelfLinkObj( $nt, $text, '', $trail );
+ $s .= $prefix . Linker::makeSelfLinkObj( $nt, $text, '', $trail );
continue;
}
}
# NS_MEDIA is a pseudo-namespace for linking directly to a file
- # FIXME: Should do batch file existence checks, see comment below
+ # @todo FIXME: Should do batch file existence checks, see comment below
if ( $ns == NS_MEDIA ) {
wfProfileIn( __METHOD__."-media" );
# Give extensions a chance to select the file revision for us
- $skip = $time = false;
- wfRunHooks( 'BeforeParserMakeImageLinkObj', array( &$this, &$nt, &$skip, &$time ) );
- if ( $skip ) {
- $link = $sk->link( $nt );
- } else {
- $link = $sk->makeMediaLinkObj( $nt, $text, $time );
- }
+ $time = $sha1 = $descQuery = false;
+ wfRunHooks( 'BeforeParserFetchFileAndTitle',
+ array( $this, $nt, &$time, &$sha1, &$descQuery ) );
+ # Fetch and register the file (file title may be different via hooks)
+ list( $file, $nt ) = $this->fetchFileAndTitle( $nt, $time, $sha1 );
# Cloak with NOPARSE to avoid replacement in replaceExternalLinks
- $s .= $prefix . $this->armorLinks( $link ) . $trail;
- $this->mOutput->addImage( $nt->getDBkey() );
+ $s .= $prefix . $this->armorLinks(
+ Linker::makeMediaLinkFile( $nt, $file, $text ) ) . $trail;
wfProfileOut( __METHOD__."-media" );
continue;
}
@@ -1889,14 +1899,14 @@ class Parser {
# Some titles, such as valid special pages or files in foreign repos, should
# be shown as bluelinks even though they're not included in the page table
#
- # FIXME: isAlwaysKnown() can be expensive for file links; we should really do
+ # @todo FIXME: isAlwaysKnown() can be expensive for file links; we should really do
# batch file existence checks for NS_FILE and NS_MEDIA
if ( $iw == '' && $nt->isAlwaysKnown() ) {
$this->mOutput->addLink( $nt );
- $s .= $this->makeKnownLinkHolder( $nt, $text, '', $trail, $prefix );
+ $s .= $this->makeKnownLinkHolder( $nt, $text, array(), $trail, $prefix );
} else {
# Links will be added to the output link list after checking
- $s .= $holders->makeHolder( $nt, $text, '', $trail, $prefix );
+ $s .= $holders->makeHolder( $nt, $text, array(), $trail, $prefix );
}
wfProfileOut( __METHOD__."-always_known" );
}
@@ -1905,18 +1915,6 @@ class Parser {
}
/**
- * Make a link placeholder. The text returned can be later resolved to a real link with
- * replaceLinkHolders(). This is done for two reasons: firstly to avoid further
- * parsing of interwiki links, and secondly to allow all existence checks and
- * article length checks (for stub links) to be bundled into a single query.
- *
- * @deprecated
- */
- function makeLinkHolder( &$nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
- return $this->mLinkHolders->makeHolder( $nt, $text, $query, $trail, $prefix );
- }
-
- /**
* Render a forced-blue link inline; protect against double expansion of
* URLs if we're in a mode that prepends full URL prefixes to internal links.
* Since this little disaster has to split off the trail text to avoid
@@ -1925,16 +1923,23 @@ class Parser {
*
* @param $nt Title
* @param $text String
- * @param $query String
+ * @param $query Array or String
* @param $trail String
* @param $prefix String
* @return String: HTML-wikitext mix oh yuck
*/
- function makeKnownLinkHolder( $nt, $text = '', $query = '', $trail = '', $prefix = '' ) {
+ function makeKnownLinkHolder( $nt, $text = '', $query = array(), $trail = '', $prefix = '' ) {
list( $inside, $trail ) = Linker::splitTrail( $trail );
- $sk = $this->mOptions->getSkin( $this->mTitle );
- # FIXME: use link() instead of deprecated makeKnownLinkObj()
- $link = $sk->makeKnownLinkObj( $nt, $text, $query, $inside, $prefix );
+
+ if ( is_string( $query ) ) {
+ $query = wfCgiToArray( $query );
+ }
+ if ( $text == '' ) {
+ $text = htmlspecialchars( $nt->getPrefixedText() );
+ }
+
+ $link = Linker::linkKnown( $nt, "$prefix$text$inside", array(), $query );
+
return $this->armorLinks( $link ) . $trail;
}
@@ -1977,6 +1982,8 @@ class Parser {
/**#@+
* Used by doBlockLevels()
* @private
+ *
+ * @return string
*/
function closeParagraph() {
$result = '';
@@ -2001,7 +2008,7 @@ class Parser {
}
for ( $i = 0; $i < $shorter; ++$i ) {
- if ( $st1{$i} != $st2{$i} ) {
+ if ( $st1[$i] != $st2[$i] ) {
break;
}
}
@@ -2012,6 +2019,8 @@ class Parser {
* These next three functions open, continue, and close the list
* element appropriate to the prefix character passed into them.
* @private
+ *
+ * @return string
*/
function openList( $char ) {
$result = $this->closeParagraph();
@@ -2036,6 +2045,8 @@ class Parser {
* TODO: document
* @param $char String
* @private
+ *
+ * @return string
*/
function nextItem( $char ) {
if ( '*' === $char || '#' === $char ) {
@@ -2060,6 +2071,8 @@ class Parser {
* TODO: document
* @param $char String
* @private
+ *
+ * @return string
*/
function closeList( $char ) {
if ( '*' === $char ) {
@@ -2178,7 +2191,7 @@ class Parser {
$output .= $this->openList( $char );
if ( ';' === $char ) {
- # FIXME: This is dupe of code above
+ # @todo FIXME: This is dupe of code above
if ( $this->findColonNoLinks( $t, $term, $t2 ) !== false ) {
$t = $t2;
$output .= $term . $this->nextItem( ':' );
@@ -2200,7 +2213,7 @@ class Parser {
'<td|<th|<\\/?div|<hr|<\\/pre|<\\/p|'.$this->mUniqPrefix.'-pre|<\\/li|<\\/ul|<\\/ol|<\\/?center)/iS', $t );
if ( $openmatch or $closematch ) {
$paragraphStack = false;
- # TODO bug 5718: paragraph closed
+ # TODO bug 5718: paragraph closed
$output .= $this->closeParagraph();
if ( $preOpenMatch and !$preCloseMatch ) {
$this->mInPre = true;
@@ -2299,7 +2312,7 @@ class Parser {
$stack = 0;
$len = strlen( $str );
for( $i = 0; $i < $len; $i++ ) {
- $c = $str{$i};
+ $c = $str[$i];
switch( $state ) {
# (Using the number is a performance hack for common cases)
@@ -2435,6 +2448,9 @@ class Parser {
* Return value of a magic variable (like PAGENAME)
*
* @private
+ *
+ * @param $index integer
+ * @param $frame PPFrame
*/
function getVariableValue( $index, $frame=false ) {
global $wgContLang, $wgSitename, $wgServer;
@@ -2521,25 +2537,25 @@ class Parser {
$value = wfEscapeWikiText( $this->mTitle->getText() );
break;
case 'pagenamee':
- $value = $this->mTitle->getPartialURL();
+ $value = wfEscapeWikiText( $this->mTitle->getPartialURL() );
break;
case 'fullpagename':
$value = wfEscapeWikiText( $this->mTitle->getPrefixedText() );
break;
case 'fullpagenamee':
- $value = $this->mTitle->getPrefixedURL();
+ $value = wfEscapeWikiText( $this->mTitle->getPrefixedURL() );
break;
case 'subpagename':
$value = wfEscapeWikiText( $this->mTitle->getSubpageText() );
break;
case 'subpagenamee':
- $value = $this->mTitle->getSubpageUrlForm();
+ $value = wfEscapeWikiText( $this->mTitle->getSubpageUrlForm() );
break;
case 'basepagename':
$value = wfEscapeWikiText( $this->mTitle->getBaseText() );
break;
case 'basepagenamee':
- $value = wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getBaseText() ) );
+ $value = wfEscapeWikiText( wfUrlEncode( str_replace( ' ', '_', $this->mTitle->getBaseText() ) ) );
break;
case 'talkpagename':
if ( $this->mTitle->canTalk() ) {
@@ -2552,7 +2568,7 @@ class Parser {
case 'talkpagenamee':
if ( $this->mTitle->canTalk() ) {
$talkPage = $this->mTitle->getTalkPage();
- $value = $talkPage->getPrefixedUrl();
+ $value = wfEscapeWikiText( $talkPage->getPrefixedUrl() );
} else {
$value = '';
}
@@ -2563,7 +2579,7 @@ class Parser {
break;
case 'subjectpagenamee':
$subjPage = $this->mTitle->getSubjectPage();
- $value = $subjPage->getPrefixedUrl();
+ $value = wfEscapeWikiText( $subjPage->getPrefixedUrl() );
break;
case 'revisionid':
# Let the edit saving system know we should parse the page
@@ -2719,10 +2735,8 @@ class Parser {
case 'server':
return $wgServer;
case 'servername':
- wfSuppressWarnings(); # May give an E_WARNING in PHP < 5.3.3
- $serverName = parse_url( $wgServer, PHP_URL_HOST );
- wfRestoreWarnings();
- return $serverName ? $serverName : $wgServer;
+ $serverParts = wfParseUrl( $wgServer );
+ return $serverParts && isset( $serverParts['host'] ) ? $serverParts['host'] : $wgServer;
case 'scriptpath':
return $wgScriptPath;
case 'stylepath':
@@ -2783,6 +2797,8 @@ class Parser {
* dependency requirements.
*
* @private
+ *
+ * @return PPNode
*/
function preprocessToDom( $text, $flags = 0 ) {
$dom = $this->getPreprocessor()->preprocessToObj( $text, $flags );
@@ -2791,6 +2807,8 @@ class Parser {
/**
* Return a three-element array: leading whitespace, string contents, trailing whitespace
+ *
+ * @return array
*/
public static function splitWhitespace( $s ) {
$ltrimmed = ltrim( $s );
@@ -2821,6 +2839,8 @@ class Parser {
* Providing arguments this way may be useful for extensions wishing to perform variable replacement explicitly.
* @param $argsOnly Boolean: only do argument (triple-brace) expansion, not double-brace expansion
* @private
+ *
+ * @return string
*/
function replaceVariables( $text, $frame = false, $argsOnly = false ) {
# Is there any text? Also, Prevent too big inclusions!
@@ -2844,7 +2864,11 @@ class Parser {
return $text;
}
- # Clean up argument array - refactored in 1.9 so parserfunctions can use it, too.
+ /**
+ * Clean up argument array - refactored in 1.9 so parserfunctions can use it, too.
+ *
+ * @return array
+ */
static function createAssocArgs( $args ) {
$assocArgs = array();
$index = 1;
@@ -2918,7 +2942,7 @@ class Parser {
$isLocalObj = false; # $text is a DOM node needing expansion in the current frame
# Title object, where $text came from
- $title = null;
+ $title = false;
# $part1 is the bit before the first |, and must contain only title characters.
# Various prefixes will be stripped from it later.
@@ -2930,8 +2954,10 @@ class Parser {
$originalTitle = $part1;
# $args is a list of argument nodes, starting from index 0, not including $part1
+ # @todo FIXME: If piece['parts'] is null then the call to getLength() below won't work b/c this $args isn't an object
$args = ( null == $piece['parts'] ) ? array() : $piece['parts'];
wfProfileOut( __METHOD__.'-setup' );
+ wfProfileIn( __METHOD__."-title-$originalTitle" );
# SUBST
wfProfileIn( __METHOD__.'-modifiers' );
@@ -3100,7 +3126,7 @@ class Parser {
&& $this->mOptions->getAllowSpecialInclusion()
&& $this->ot['html'] )
{
- $text = SpecialPage::capturePath( $title );
+ $text = SpecialPageFactory::capturePath( $title );
if ( is_string( $text ) ) {
$found = true;
$isHTML = true;
@@ -3150,6 +3176,7 @@ class Parser {
# Recover the source wikitext and return it
if ( !$found ) {
$text = $frame->virtualBracketedImplode( '{{', '|', '}}', $titleWithSpaces, $args );
+ wfProfileOut( __METHOD__."-title-$originalTitle" );
wfProfileOut( __METHOD__ );
return array( 'object' => $text );
}
@@ -3218,6 +3245,7 @@ class Parser {
$ret = array( 'text' => $text );
}
+ wfProfileOut( __METHOD__."-title-$originalTitle" );
wfProfileOut( __METHOD__ );
return $ret;
}
@@ -3225,6 +3253,8 @@ class Parser {
/**
* Get the semi-parsed DOM representation of a template with a given title,
* and its redirect destination title. Cached.
+ *
+ * @return array
*/
function getTemplateDom( $title ) {
$cacheTitle = $title;
@@ -3260,6 +3290,8 @@ class Parser {
/**
* Fetch the unparsed text of a template and register a reference to it.
+ * @param Title $title
+ * @return Array ( string or false, Title )
*/
function fetchTemplateAndTitle( $title ) {
$templateCb = $this->mOptions->getTemplateCallback(); # Defaults to Parser::statelessFetchTemplate()
@@ -3274,6 +3306,11 @@ class Parser {
return array( $text, $finalTitle );
}
+ /**
+ * Fetch the unparsed text of a template and register a reference to it.
+ * @param Title $title
+ * @return mixed string or false
+ */
function fetchTemplate( $title ) {
$rv = $this->fetchTemplateAndTitle( $title );
return $rv[0];
@@ -3282,8 +3319,10 @@ class Parser {
/**
* Static function to get a template
* Can be overridden via ParserOptions::setTemplateCallback().
+ *
+ * @return array
*/
- static function statelessFetchTemplate( $title, $parser=false ) {
+ static function statelessFetchTemplate( $title, $parser = false ) {
$text = $skip = false;
$finalTitle = $title;
$deps = array();
@@ -3292,17 +3331,22 @@ class Parser {
for ( $i = 0; $i < 2 && is_object( $title ); $i++ ) {
# Give extensions a chance to select the revision instead
$id = false; # Assume current
- wfRunHooks( 'BeforeParserFetchTemplateAndtitle', array( $parser, &$title, &$skip, &$id ) );
+ wfRunHooks( 'BeforeParserFetchTemplateAndtitle',
+ array( $parser, $title, &$skip, &$id ) );
if ( $skip ) {
$text = false;
$deps[] = array(
- 'title' => $title,
- 'page_id' => $title->getArticleID(),
- 'rev_id' => null );
+ 'title' => $title,
+ 'page_id' => $title->getArticleID(),
+ 'rev_id' => null
+ );
break;
}
- $rev = $id ? Revision::newFromId( $id ) : Revision::newFromTitle( $title );
+ # Get the revision
+ $rev = $id
+ ? Revision::newFromId( $id )
+ : Revision::newFromTitle( $title );
$rev_id = $rev ? $rev->getId() : 0;
# If there is no current revision, there is no page
if ( $id === false && !$rev ) {
@@ -3311,20 +3355,27 @@ class Parser {
}
$deps[] = array(
- 'title' => $title,
- 'page_id' => $title->getArticleID(),
- 'rev_id' => $rev_id );
+ 'title' => $title,
+ 'page_id' => $title->getArticleID(),
+ 'rev_id' => $rev_id );
+ if ( $rev && !$title->equals( $rev->getTitle() ) ) {
+ # We fetched a rev from a different title; register it too...
+ $deps[] = array(
+ 'title' => $rev->getTitle(),
+ 'page_id' => $rev->getPage(),
+ 'rev_id' => $rev_id );
+ }
if ( $rev ) {
$text = $rev->getText();
} elseif ( $title->getNamespace() == NS_MEDIAWIKI ) {
global $wgContLang;
- $message = $wgContLang->lcfirst( $title->getText() );
- $text = wfMsgForContentNoTrans( $message );
- if ( wfEmptyMsg( $message, $text ) ) {
+ $message = wfMessage( $wgContLang->lcfirst( $title->getText() ) )->inContentLanguage();
+ if ( !$message->exists() ) {
$text = false;
break;
}
+ $text = $message->plain();
} else {
break;
}
@@ -3342,7 +3393,56 @@ class Parser {
}
/**
+ * Fetch a file and its title and register a reference to it.
+ * @param Title $title
+ * @param string $time MW timestamp
+ * @param string $sha1 base 36 SHA-1
+ * @return mixed File or false
+ */
+ function fetchFile( $title, $time = false, $sha1 = false ) {
+ $res = $this->fetchFileAndTitle( $title, $time, $sha1 );
+ return $res[0];
+ }
+
+ /**
+ * Fetch a file and its title and register a reference to it.
+ * @param Title $title
+ * @param string $time MW timestamp
+ * @param string $sha1 base 36 SHA-1
+ * @return Array ( File or false, Title of file )
+ */
+ function fetchFileAndTitle( $title, $time = false, $sha1 = false ) {
+ if ( $time === '0' ) {
+ $file = false; // broken thumbnail forced by hook
+ } elseif ( $sha1 ) { // get by (sha1,timestamp)
+ $file = RepoGroup::singleton()->findFileFromKey( $sha1, array( 'time' => $time ) );
+ } else { // get by (name,timestamp)
+ $file = wfFindFile( $title, array( 'time' => $time ) );
+ }
+ $time = $file ? $file->getTimestamp() : false;
+ $sha1 = $file ? $file->getSha1() : false;
+ # Register the file as a dependency...
+ $this->mOutput->addImage( $title->getDBkey(), $time, $sha1 );
+ if ( $file && !$title->equals( $file->getTitle() ) ) {
+ # Update fetched file title
+ $title = $file->getTitle();
+ if ( is_null( $file->getRedirectedTitle() ) ) {
+ # This file was not a redirect, but the title does not match.
+ # Register under the new name because otherwise the link will
+ # get lost.
+ $this->mOutput->addImage( $title->getDBkey(), $time, $sha1 );
+ }
+ }
+ return array( $file, $title );
+ }
+
+ /**
* Transclude an interwiki link.
+ *
+ * @param $title Title
+ * @param $action
+ *
+ * @return string
*/
function interwikiTransclude( $title, $action ) {
global $wgEnableScaryTranscluding;
@@ -3359,6 +3459,10 @@ class Parser {
return $this->fetchScaryTemplateMaybeFromCache( $url );
}
+ /**
+ * @param $url string
+ * @return Mixed|String
+ */
function fetchScaryTemplateMaybeFromCache( $url ) {
global $wgTranscludeCacheExpiry;
$dbr = wfGetDB( DB_SLAVE );
@@ -3383,10 +3487,14 @@ class Parser {
return $text;
}
-
/**
* Triple brace replacement -- used for template arguments
* @private
+ *
+ * @param $peice array
+ * @param $frame PPFrame
+ *
+ * @return array
*/
function argSubstitution( $piece, $frame ) {
wfProfileIn( __METHOD__ );
@@ -3399,9 +3507,9 @@ class Parser {
$text = $frame->getArgument( $argName );
if ( $text === false && $parts->getLength() > 0
&& (
- $this->ot['html']
- || $this->ot['pre']
- || ( $this->ot['wiki'] && $frame->isTemplate() )
+ $this->ot['html']
+ || $this->ot['pre']
+ || ( $this->ot['wiki'] && $frame->isTemplate() )
)
) {
# No match in frame, use the supplied default
@@ -3440,6 +3548,8 @@ class Parser {
* inner Contents of extension element
* noClose Original text did not have a close tag
* @param $frame PPFrame
+ *
+ * @return string
*/
function extensionSubstitution( $params, $frame ) {
$name = $frame->expand( $params['name'] );
@@ -3508,9 +3618,9 @@ class Parser {
if ( $markerType === 'none' ) {
return $output;
} elseif ( $markerType === 'nowiki' ) {
- $this->mStripState->nowiki->setPair( $marker, $output );
+ $this->mStripState->addNoWiki( $marker, $output );
} elseif ( $markerType === 'general' ) {
- $this->mStripState->general->setPair( $marker, $output );
+ $this->mStripState->addGeneral( $marker, $output );
} else {
throw new MWException( __METHOD__.': invalid marker type' );
}
@@ -3525,7 +3635,7 @@ class Parser {
* @return Boolean: false if this inclusion would take it over the maximum, true otherwise
*/
function incrementIncludeSize( $type, $size ) {
- if ( $this->mIncludeSizes[$type] + $size > $this->mOptions->getMaxIncludeSize( $type ) ) {
+ if ( $this->mIncludeSizes[$type] + $size > $this->mOptions->getMaxIncludeSize() ) {
return false;
} else {
$this->mIncludeSizes[$type] += $size;
@@ -3582,7 +3692,7 @@ class Parser {
}
# (bug 8068) Allow control over whether robots index a page.
#
- # FIXME (bug 14899): __INDEX__ always overrides __NOINDEX__ here! This
+ # @todo FIXME: Bug 14899: __INDEX__ always overrides __NOINDEX__ here! This
# is not desirable, the last one on the page should win.
if ( isset( $this->mDoubleUnderscores['noindex'] ) && $this->mTitle->canUseNoindex() ) {
$this->mOutput->setIndexPolicy( 'noindex' );
@@ -3592,7 +3702,7 @@ class Parser {
$this->mOutput->setIndexPolicy( 'index' );
$this->addTrackingCategory( 'index-category' );
}
-
+
# Cache all double underscores in the database
foreach ( $this->mDoubleUnderscores as $key => $val ) {
$this->mOutput->setProperty( $key, '' );
@@ -3610,6 +3720,10 @@ class Parser {
* @return Boolean: whether the addition was successful
*/
protected function addTrackingCategory( $msg ) {
+ if ( $this->mTitle->getNamespace() === NS_SPECIAL ) {
+ wfDebug( __METHOD__.": Not adding tracking category $msg to special page!\n" );
+ return false;
+ }
$cat = wfMsgForContent( $msg );
# Allow tracking categories to be disabled by setting them to "-"
@@ -3643,16 +3757,17 @@ class Parser {
* @private
*/
function formatHeadings( $text, $origText, $isMain=true ) {
- global $wgMaxTocLevel, $wgContLang, $wgHtml5, $wgExperimentalHtmlIds;
+ global $wgMaxTocLevel, $wgHtml5, $wgExperimentalHtmlIds;
- $doNumberHeadings = $this->mOptions->getNumberHeadings();
-
# Inhibit editsection links if requested in the page
if ( isset( $this->mDoubleUnderscores['noeditsection'] ) ) {
$showEditLink = 0;
} else {
$showEditLink = $this->mOptions->getEditSection();
}
+ if ( $showEditLink ) {
+ $this->mOutput->setEditSectionTokens( true );
+ }
# Get all headlines for numbering them and adding funky stuff like [edit]
# links - this is for later, but we need the number of headlines right now
@@ -3683,9 +3798,6 @@ class Parser {
$enoughToc = true;
}
- # We need this to perform operations on the HTML
- $sk = $this->mOptions->getSkin( $this->mTitle );
-
# headline counter
$headlineCount = 0;
$numVisible = 0;
@@ -3736,7 +3848,7 @@ class Parser {
$sublevelCount[$toclevel] = 0;
if ( $toclevel<$wgMaxTocLevel ) {
$prevtoclevel = $toclevel;
- $toc .= $sk->tocIndent();
+ $toc .= Linker::tocIndent();
$numVisible++;
}
} elseif ( $level < $prevlevel && $toclevel > 1 ) {
@@ -3759,16 +3871,16 @@ class Parser {
if ( $toclevel<$wgMaxTocLevel ) {
if ( $prevtoclevel < $wgMaxTocLevel ) {
# Unindent only if the previous toc level was shown :p
- $toc .= $sk->tocUnindent( $prevtoclevel - $toclevel );
+ $toc .= Linker::tocUnindent( $prevtoclevel - $toclevel );
$prevtoclevel = $toclevel;
} else {
- $toc .= $sk->tocLineEnd();
+ $toc .= Linker::tocLineEnd();
}
}
} else {
# No change in level, end TOC line
if ( $toclevel<$wgMaxTocLevel ) {
- $toc .= $sk->tocLineEnd();
+ $toc .= Linker::tocLineEnd();
}
}
@@ -3782,7 +3894,7 @@ class Parser {
if ( $dot ) {
$numbering .= '.';
}
- $numbering .= $wgContLang->formatNum( $sublevelCount[$i] );
+ $numbering .= $this->getFunctionLang()->formatNum( $sublevelCount[$i] );
$dot = 1;
}
}
@@ -3837,10 +3949,10 @@ class Parser {
'noninitial' );
}
- # HTML names must be case-insensitively unique (bug 10721).
- # This does not apply to Unicode characters per
+ # HTML names must be case-insensitively unique (bug 10721).
+ # This does not apply to Unicode characters per
# http://dev.w3.org/html5/spec/infrastructure.html#case-sensitivity-and-string-comparison
- # FIXME: We may be changing them depending on the current locale.
+ # @todo FIXME: We may be changing them depending on the current locale.
$arrayKey = strtolower( $safeHeadline );
if ( $legacyHeadline === false ) {
$legacyArrayKey = false;
@@ -3861,7 +3973,7 @@ class Parser {
}
# Don't number the heading if it is the only one (looks silly)
- if ( $doNumberHeadings && count( $matches[3] ) > 1) {
+ if ( count( $matches[3] ) > 1 && $this->mOptions->getNumberHeadings() ) {
# the two are different if the line contains a link
$headline = $numbering . ' ' . $headline;
}
@@ -3876,7 +3988,7 @@ class Parser {
$legacyAnchor .= '_' . $refers[$legacyArrayKey];
}
if ( $enoughToc && ( !isset( $wgMaxTocLevel ) || $toclevel < $wgMaxTocLevel ) ) {
- $toc .= $sk->tocLine( $anchor, $tocline,
+ $toc .= Linker::tocLine( $anchor, $tocline,
$numbering, $toclevel, ( $isTemplate ? false : $sectionIndex ) );
}
@@ -3905,18 +4017,33 @@ class Parser {
);
# give headline the correct <h#> tag
- if ( $showEditLink && $sectionIndex !== false ) {
+ if ( $sectionIndex !== false ) {
+ // Output edit section links as markers with styles that can be customized by skins
if ( $isTemplate ) {
# Put a T flag in the section identifier, to indicate to extractSections()
# that sections inside <includeonly> should be counted.
- $editlink = $sk->doEditSectionLink( Title::newFromText( $titleText ), "T-$sectionIndex", null, $this->mOptions->getUserLang() );
+ $editlinkArgs = array( $titleText, "T-$sectionIndex"/*, null */ );
+ } else {
+ $editlinkArgs = array( $this->mTitle->getPrefixedText(), $sectionIndex, $headlineHint );
+ }
+ // We use a bit of pesudo-xml for editsection markers. The language converter is run later on
+ // Using a UNIQ style marker leads to the converter screwing up the tokens when it converts stuff
+ // And trying to insert strip tags fails too. At this point all real inputted tags have already been escaped
+ // so we don't have to worry about a user trying to input one of these markers directly.
+ // We use a page and section attribute to stop the language converter from converting these important bits
+ // of data, but put the headline hint inside a content block because the language converter is supposed to
+ // be able to convert that piece of data.
+ $editlink = '<mw:editsection page="' . htmlspecialchars($editlinkArgs[0]);
+ $editlink .= '" section="' . htmlspecialchars($editlinkArgs[1]) .'"';
+ if ( isset($editlinkArgs[2]) ) {
+ $editlink .= '>' . $editlinkArgs[2] . '</mw:editsection>';
} else {
- $editlink = $sk->doEditSectionLink( $this->mTitle, $sectionIndex, $headlineHint, $this->mOptions->getUserLang() );
+ $editlink .= '/>';
}
} else {
$editlink = '';
}
- $head[$headlineCount] = $sk->makeHeadline( $level,
+ $head[$headlineCount] = Linker::makeHeadline( $level,
$matches['attrib'][$headlineCount], $anchor, $headline,
$editlink, $legacyAnchor );
@@ -3932,9 +4059,9 @@ class Parser {
if ( $enoughToc ) {
if ( $prevtoclevel > 0 && $prevtoclevel < $wgMaxTocLevel ) {
- $toc .= $sk->tocUnindent( $prevtoclevel - 1 );
+ $toc .= Linker::tocUnindent( $prevtoclevel - 1 );
}
- $toc = $sk->tocList( $toc, $this->mOptions->getUserLang() );
+ $toc = Linker::tocList( $toc, $this->mOptions->getUserLang() );
$this->mOutput->setTOCHTML( $toc );
}
@@ -3985,21 +4112,21 @@ class Parser {
* @param $clearState Boolean: whether to clear the parser state first
* @return String: the altered wiki markup
*/
- public function preSaveTransform( $text, Title $title, $user, $options, $clearState = true ) {
- $this->mOptions = $options;
- $this->setTitle( $title );
- $this->setOutputType( self::OT_WIKI );
-
- if ( $clearState ) {
- $this->clearState();
- }
+ public function preSaveTransform( $text, Title $title, User $user, ParserOptions $options, $clearState = true ) {
+ $this->startParse( $title, $options, self::OT_WIKI, $clearState );
+ $this->setUser( $user );
$pairs = array(
"\r\n" => "\n",
);
$text = str_replace( array_keys( $pairs ), array_values( $pairs ), $text );
- $text = $this->pstPass2( $text, $user );
+ if( $options->getPreSaveTransform() ) {
+ $text = $this->pstPass2( $text, $user );
+ }
$text = $this->mStripState->unstripBoth( $text );
+
+ $this->setUser( null ); #Reset
+
return $text;
}
@@ -4032,9 +4159,9 @@ class Parser {
# whatever crap the system uses, localised or not, so we cannot
# ship premade translations.
$key = 'timezone-' . strtolower( trim( $tzMsg ) );
- $value = wfMsgForContent( $key );
- if ( !wfEmptyMsg( $key, $value ) ) {
- $tzMsg = $value;
+ $msg = wfMessage( $key )->inContentLanguage();
+ if ( $msg->exists() ) {
+ $tzMsg = $msg->text();
}
date_default_timezone_set( $oldtz );
@@ -4093,6 +4220,8 @@ class Parser {
* validated, ready-to-insert wikitext.
* If you have pre-fetched the nickname or the fancySig option, you can
* specify them here to save a database query.
+ * Do not reuse this parser instance after calling getUserSig(),
+ * as it may have changed if it's the $wgParser.
*
* @param $user User
* @param $nickname String: nickname to use or false to use user's default nickname
@@ -4136,11 +4265,9 @@ class Parser {
# If we're still here, make it a link to the user page
$userText = wfEscapeWikiText( $username );
$nickText = wfEscapeWikiText( $nickname );
- if ( $user->isAnon() ) {
- return wfMsgExt( 'signature-anon', array( 'content', 'parsemag' ), $userText, $nickText );
- } else {
- return wfMsgExt( 'signature', array( 'content', 'parsemag' ), $userText, $nickText );
- }
+ $msgName = $user->isAnon() ? 'signature-anon' : 'signature';
+
+ return wfMessage( $msgName, $userText, $nickText )->inContentLanguage()->title( $this->getTitle() )->text();
}
/**
@@ -4177,7 +4304,7 @@ class Parser {
return $text;
}
- # FIXME: regex doesn't respect extension tags or nowiki
+ # @todo FIXME: Regex doesn't respect extension tags or nowiki
# => Move this logic to braceSubstitution()
$substWord = MagicWord::get( 'subst' );
$substRegex = '/\{\{(?!(?:' . $substWord->getBaseRegex() . '))/x' . $substWord->getRegexCase();
@@ -4212,6 +4339,10 @@ class Parser {
* so that an external function can call some class members with confidence
*/
public function startExternalParse( Title $title = null, ParserOptions $options, $outputType, $clearState = true ) {
+ $this->startParse( $title, $options, $outputType, $clearState );
+ }
+
+ private function startParse( Title $title = null, ParserOptions $options, $outputType, $clearState = true ) {
$this->setTitle( $title );
$this->mOptions = $options;
$this->setOutputType( $outputType );
@@ -4225,10 +4356,10 @@ class Parser {
*
* @param $text String: the text to preprocess
* @param $options ParserOptions: options
+ * @param $title Title object or null to use $wgTitle
* @return String
*/
- public function transformMsg( $text, $options ) {
- global $wgTitle;
+ public function transformMsg( $text, $options, $title = null ) {
static $executing = false;
# Guard against infinite recursion
@@ -4238,7 +4369,10 @@ class Parser {
$executing = true;
wfProfileIn( __METHOD__ );
- $title = $wgTitle;
+ if ( !$title ) {
+ global $wgTitle;
+ $title = $wgTitle;
+ }
if ( !$title ) {
# It's not uncommon having a null $wgTitle in scripts. See r80898
# Create a ghost title in such case
@@ -4254,17 +4388,29 @@ class Parser {
/**
* Create an HTML-style tag, e.g. <yourtag>special text</yourtag>
* The callback should have the following form:
- * function myParserHook( $text, $params, $parser ) { ... }
+ * function myParserHook( $text, $params, $parser, $frame ) { ... }
*
* Transform and return $text. Use $parser for any required context, e.g. use
* $parser->getTitle() and $parser->getOptions() not $wgTitle or $wgOut->mParserOptions
*
+ * Hooks may return extended information by returning an array, of which the
+ * first numbered element (index 0) must be the return string, and all other
+ * entries are extracted into local variables within an internal function
+ * in the Parser class.
+ *
+ * This interface (introduced r61913) appears to be undocumented, but
+ * 'markerName' is used by some core tag hooks to override which strip
+ * array their results are placed in. **Use great caution if attempting
+ * this interface, as it is not documented and injudicious use could smash
+ * private variables.**
+ *
* @param $tag Mixed: the tag to use, e.g. 'hook' for <hook>
* @param $callback Mixed: the callback function (and object) to use for the tag
* @return The old value of the mTagHooks array associated with the hook
*/
public function setHook( $tag, $callback ) {
$tag = strtolower( $tag );
+ if ( preg_match( '/[<>\r\n]/', $tag, $m ) ) throw new MWException( "Invalid character {$m[0]} in setHook('$tag', ...) call" );
$oldVal = isset( $this->mTagHooks[$tag] ) ? $this->mTagHooks[$tag] : null;
$this->mTagHooks[$tag] = $callback;
if ( !in_array( $tag, $this->mStripList ) ) {
@@ -4274,8 +4420,25 @@ class Parser {
return $oldVal;
}
+ /**
+ * As setHook(), but letting the contents be parsed.
+ *
+ * Transparent tag hooks are like regular XML-style tag hooks, except they
+ * operate late in the transformation sequence, on HTML instead of wikitext.
+ *
+ * This is probably obsoleted by things dealing with parser frames?
+ * The only extension currently using it is geoserver.
+ *
+ * @since 1.10
+ * @todo better document or deprecate this
+ *
+ * @param $tag Mixed: the tag to use, e.g. 'hook' for <hook>
+ * @param $callback Mixed: the callback function (and object) to use for the tag
+ * @return The old value of the mTagHooks array associated with the hook
+ */
function setTransparentTagHook( $tag, $callback ) {
$tag = strtolower( $tag );
+ if ( preg_match( '/[<>\r\n]/', $tag, $m ) ) throw new MWException( "Invalid character {$m[0]} in setTransparentHook('$tag', ...) call" );
$oldVal = isset( $this->mTransparentTagHooks[$tag] ) ? $this->mTransparentTagHooks[$tag] : null;
$this->mTransparentTagHooks[$tag] = $callback;
@@ -4380,6 +4543,7 @@ class Parser {
*/
function setFunctionTagHook( $tag, $callback, $flags ) {
$tag = strtolower( $tag );
+ if ( preg_match( '/[<>\r\n]/', $tag, $m ) ) throw new MWException( "Invalid character {$m[0]} in setFunctionTagHook('$tag', ...) call" );
$old = isset( $this->mFunctionTagHooks[$tag] ) ?
$this->mFunctionTagHooks[$tag] : null;
$this->mFunctionTagHooks[$tag] = array( $callback, $flags );
@@ -4392,7 +4556,7 @@ class Parser {
}
/**
- * FIXME: update documentation. makeLinkObj() is deprecated.
+ * @todo FIXME: Update documentation. makeLinkObj() is deprecated.
* Replace <!--LINK--> link placeholders with actual links, in the buffer
* Placeholders created in Skin::makeLinkObj()
* Returns an array of link CSS classes, indexed by PDBK.
@@ -4420,6 +4584,10 @@ class Parser {
* given as text will return the HTML of a gallery with two images,
* labeled 'The number "1"' and
* 'A tree'.
+ *
+ * @param string $text
+ * @param array $param
+ * @return string HTML
*/
function renderImageGallery( $text, $params ) {
$ig = new ImageGallery();
@@ -4429,8 +4597,6 @@ class Parser {
$ig->setParser( $this );
$ig->setHideBadImages();
$ig->setAttributes( Sanitizer::validateTagAttributes( $params, 'table' ) );
- $ig->useSkin( $this->mOptions->getSkin( $this->mTitle ) );
- $ig->mRevisionId = $this->mRevisionId;
if ( isset( $params['showfilename'] ) ) {
$ig->setShowFilename( true );
@@ -4467,28 +4633,40 @@ class Parser {
}
if ( strpos( $matches[0], '%' ) !== false ) {
- $matches[1] = urldecode( $matches[1] );
+ $matches[1] = rawurldecode( $matches[1] );
}
- $tp = Title::newFromText( $matches[1] );
- $nt =& $tp;
- if ( is_null( $nt ) ) {
+ $title = Title::newFromText( $matches[1], NS_FILE );
+ if ( is_null( $title ) ) {
# Bogus title. Ignore these so we don't bomb out later.
continue;
}
+
+ $label = '';
+ $alt = '';
if ( isset( $matches[3] ) ) {
- $label = $matches[3];
- } else {
- $label = '';
+ // look for an |alt= definition while trying not to break existing
+ // captions with multiple pipes (|) in it, until a more sensible grammar
+ // is defined for images in galleries
+
+ $matches[3] = $this->recursiveTagParse( trim( $matches[3] ) );
+ $altmatches = StringUtils::explode('|', $matches[3]);
+ $magicWordAlt = MagicWord::get( 'img_alt' );
+
+ foreach ( $altmatches as $altmatch ) {
+ $match = $magicWordAlt->matchVariableStartToEnd( $altmatch );
+ if ( $match ) {
+ $alt = $this->stripAltText( $match, false );
+ }
+ else {
+ // concatenate all other pipes
+ $label .= '|' . $altmatch;
+ }
+ }
+ // remove the first pipe
+ $label = substr( $label, 1 );
}
- $html = $this->recursiveTagParse( trim( $label ) );
-
- $ig->add( $nt, $html );
-
- # Only add real images (bug #5586)
- if ( $nt->getNamespace() == NS_FILE ) {
- $this->mOutput->addImage( $nt->getDBkey() );
- }
+ $ig->add( $title, $label, $alt );
}
return $ig->toHTML();
}
@@ -4539,6 +4717,7 @@ class Parser {
* @param $title Title
* @param $options String
* @param $holders LinkHolderArray
+ * @return string HTML
*/
function makeImage( $title, $options, $holders = false ) {
# Check if the options text is of the form "options|alt text"
@@ -4567,23 +4746,23 @@ class Parser {
# * text-bottom
$parts = StringUtils::explode( "|", $options );
- $sk = $this->mOptions->getSkin( $this->mTitle );
# Give extensions a chance to select the file revision for us
- $skip = $time = $descQuery = false;
- wfRunHooks( 'BeforeParserMakeImageLinkObj', array( &$this, &$title, &$skip, &$time, &$descQuery ) );
+ $time = $sha1 = $descQuery = false;
+ wfRunHooks( 'BeforeParserFetchFileAndTitle',
+ array( $this, $title, &$time, &$sha1, &$descQuery ) );
+ # Fetch and register the file (file title may be different via hooks)
+ list( $file, $title ) = $this->fetchFileAndTitle( $title, $time, $sha1 );
- if ( $skip ) {
- return $sk->link( $title );
- }
-
- # Get the file
- $file = wfFindFile( $title, array( 'time' => $time ) );
# Get parameter map
$handler = $file ? $file->getHandler() : false;
list( $paramMap, $mwArray ) = $this->getImageParams( $handler );
+ if ( !$file ) {
+ $this->addTrackingCategory( 'broken-file-category' );
+ }
+
# Process the input parameters
$caption = '';
$params = array( 'frame' => array(), 'handler' => array(),
@@ -4627,7 +4806,7 @@ class Parser {
switch( $paramName ) {
case 'manualthumb':
case 'alt':
- # @todo Fixme: possibly check validity here for
+ # @todo FIXME: Possibly check validity here for
# manualthumb? downstream behavior seems odd with
# missing manual thumbs.
$validated = true;
@@ -4687,9 +4866,9 @@ class Parser {
# Will the image be presented in a frame, with the caption below?
$imageIsFramed = isset( $params['frame']['frame'] ) ||
- isset( $params['frame']['framed'] ) ||
- isset( $params['frame']['thumbnail'] ) ||
- isset( $params['frame']['manualthumb'] );
+ isset( $params['frame']['framed'] ) ||
+ isset( $params['frame']['thumbnail'] ) ||
+ isset( $params['frame']['manualthumb'] );
# In the old days, [[Image:Foo|text...]] would set alt text. Later it
# came to also set the caption, ordinary text after the image -- which
@@ -4733,7 +4912,8 @@ class Parser {
wfRunHooks( 'ParserMakeImageParams', array( $title, $file, &$params ) );
# Linker does the rest
- $ret = $sk->makeImageLink2( $title, $file, $params['frame'], $params['handler'], $time, $descQuery, $this->mOptions->getThumbSize() );
+ $ret = Linker::makeImageLink2( $title, $file, $params['frame'], $params['handler'],
+ $time, $descQuery, $this->mOptions->getThumbSize() );
# Give the handler a chance to modify the parser object
if ( $handler ) {
@@ -4743,6 +4923,11 @@ class Parser {
return $ret;
}
+ /**
+ * @param $caption
+ * @param $holders LinkHolderArray
+ * @return mixed|String
+ */
protected function stripAltText( $caption, $holders ) {
# Strip bad stuff out of the title (tooltip). We can't just use
# replaceLinkHoldersText() here, because if this function is called
@@ -4779,7 +4964,6 @@ class Parser {
* @param $text String
* @param $frame PPFrame
* @return String
- * @private
*/
function attributeStripCallback( &$text, $frame = false ) {
$text = $this->replaceVariables( $text, $frame );
@@ -4789,12 +4973,39 @@ class Parser {
/**
* Accessor
+ *
+ * @return array
*/
function getTags() {
return array_merge( array_keys( $this->mTransparentTagHooks ), array_keys( $this->mTagHooks ) );
}
/**
+ * Replace transparent tags in $text with the values given by the callbacks.
+ *
+ * Transparent tag hooks are like regular XML-style tag hooks, except they
+ * operate late in the transformation sequence, on HTML instead of wikitext.
+ */
+ function replaceTransparentTags( $text ) {
+ $matches = array();
+ $elements = array_keys( $this->mTransparentTagHooks );
+ $text = self::extractTagsAndParams( $elements, $text, $matches, $this->mUniqPrefix );
+ $replacements = array();
+
+ foreach ( $matches as $marker => $data ) {
+ list( $element, $content, $params, $tag ) = $data;
+ $tagName = strtolower( $element );
+ if ( isset( $this->mTransparentTagHooks[$tagName] ) ) {
+ $output = call_user_func_array( $this->mTransparentTagHooks[$tagName], array( $content, $params, $this ) );
+ } else {
+ $output = $tag;
+ }
+ $replacements[$marker] = $output;
+ }
+ return strtr( $text, $replacements );
+ }
+
+ /**
* Break wikitext input into sections, and either pull or replace
* some particular section's text.
*
@@ -4814,17 +5025,18 @@ class Parser {
* pull the given section along with its lower-level subsections. If the section is
* not found, $mode=get will return $newtext, and $mode=replace will return $text.
*
+ * Section 0 is always considered to exist, even if it only contains the empty
+ * string. If $text is the empty string and section 0 is replaced, $newText is
+ * returned.
+ *
* @param $mode String: one of "get" or "replace"
* @param $newText String: replacement text for section data.
* @return String: for "get", the extracted section text.
* for "replace", the whole page with the section replaced.
*/
private function extractSections( $text, $section, $mode, $newText='' ) {
- global $wgTitle;
- $this->mOptions = new ParserOptions;
- $this->clearState();
- $this->setTitle( $wgTitle ); # not generally used but removes an ugly failure mode
- $this->setOutputType( self::OT_PLAIN );
+ global $wgTitle; # not generally used but removes an ugly failure mode
+ $this->startParse( $wgTitle, new ParserOptions, self::OT_PLAIN, true );
$outText = '';
$frame = $this->getPreprocessor()->newFrame();
@@ -4837,6 +5049,25 @@ class Parser {
$flags |= self::PTD_FOR_INCLUSION;
}
}
+
+ # Check for empty input
+ if ( strval( $text ) === '' ) {
+ # Only sections 0 and T-0 exist in an empty document
+ if ( $sectionIndex == 0 ) {
+ if ( $mode === 'get' ) {
+ return '';
+ } else {
+ return $newText;
+ }
+ } else {
+ if ( $mode === 'get' ) {
+ return $newText;
+ } else {
+ return $text;
+ }
+ }
+ }
+
# Preprocess the text
$root = $this->preprocessToDom( $text, $flags );
@@ -4930,12 +5161,13 @@ class Parser {
/**
* This function returns $oldtext after the content of the section
- * specified by $section has been replaced with $text.
+ * specified by $section has been replaced with $text. If the target
+ * section does not exist, $oldtext is returned unchanged.
*
- * @param $text String: former text of the article
+ * @param $oldtext String: former text of the article
* @param $section Numeric: section identifier
* @param $text String: replacing text
- * #return String: modified text
+ * @return String: modified text
*/
public function replaceSection( $oldtext, $section, $text ) {
return $this->extractSections( $oldtext, $section, "replace", $text );
@@ -4951,30 +5183,44 @@ class Parser {
}
/**
+ * Get the revision object for $this->mRevisionId
+ *
+ * @return Revision|null either a Revision object or null
+ */
+ protected function getRevisionObject() {
+ if ( !is_null( $this->mRevisionObject ) ) {
+ return $this->mRevisionObject;
+ }
+ if ( is_null( $this->mRevisionId ) ) {
+ return null;
+ }
+
+ $this->mRevisionObject = Revision::newFromId( $this->mRevisionId );
+ return $this->mRevisionObject;
+ }
+
+ /**
* Get the timestamp associated with the current revision, adjusted for
* the default server-local timestamp
*/
function getRevisionTimestamp() {
if ( is_null( $this->mRevisionTimestamp ) ) {
wfProfileIn( __METHOD__ );
- global $wgContLang;
- $dbr = wfGetDB( DB_SLAVE );
- $timestamp = $dbr->selectField( 'revision', 'rev_timestamp',
- array( 'rev_id' => $this->mRevisionId ), __METHOD__ );
-
- # Normalize timestamp to internal MW format for timezone processing.
- # This has the added side-effect of replacing a null value with
- # the current time, which gives us more sensible behavior for
- # previews.
- $timestamp = wfTimestamp( TS_MW, $timestamp );
-
- # The cryptic '' timezone parameter tells to use the site-default
- # timezone offset instead of the user settings.
- #
- # Since this value will be saved into the parser cache, served
- # to other users, and potentially even used inside links and such,
- # it needs to be consistent for all visitors.
- $this->mRevisionTimestamp = $wgContLang->userAdjust( $timestamp, '' );
+
+ $revObject = $this->getRevisionObject();
+ $timestamp = $revObject ? $revObject->getTimestamp() : false;
+
+ if( $timestamp !== false ) {
+ global $wgContLang;
+
+ # The cryptic '' timezone parameter tells to use the site-default
+ # timezone offset instead of the user settings.
+ #
+ # Since this value will be saved into the parser cache, served
+ # to other users, and potentially even used inside links and such,
+ # it needs to be consistent for all visitors.
+ $this->mRevisionTimestamp = $wgContLang->userAdjust( $timestamp, '' );
+ }
wfProfileOut( __METHOD__ );
}
@@ -4987,16 +5233,18 @@ class Parser {
* @return String: user name
*/
function getRevisionUser() {
- # if this template is subst: the revision id will be blank,
- # so just use the current user's name
- if ( $this->mRevisionId ) {
- $revision = Revision::newFromId( $this->mRevisionId );
- $revuser = $revision->getUserText();
- } else {
- global $wgUser;
- $revuser = $wgUser->getName();
+ if( is_null( $this->mRevisionUser ) ) {
+ $revObject = $this->getRevisionObject();
+
+ # if this template is subst: the revision id will be blank,
+ # so just use the current user's name
+ if( $revObject ) {
+ $this->mRevisionUser = $revObject->getUserText();
+ } elseif( $this->ot['wiki'] || $this->mOptions->getIsPreview() ) {
+ $this->mRevisionUser = $this->getUser()->getName();
+ }
}
- return $revuser;
+ return $this->mRevisionUser;
}
/**
@@ -5083,7 +5331,8 @@ class Parser {
$text = preg_replace( '/\[\[:?([^[|]+)\|([^[]+)\]\]/', '$2', $text );
$text = preg_replace( '/\[\[:?([^[]+)\|?\]\]/', '$1', $text );
- # Strip external link markup (FIXME: Not Tolerant to blank link text
+ # Strip external link markup
+ # @todo FIXME: Not tolerant to blank link text
# I.E. [http://www.mediawiki.org] will render as [1] or something depending
# on how many empty links there are on the page - need to figure that out.
$text = preg_replace( '/\[(?:' . wfUrlProtocols() . ')([^ ]+?) ([^[]+)\]/', '$2', $text );
@@ -5098,36 +5347,39 @@ class Parser {
/**
* strip/replaceVariables/unstrip for preprocessor regression testing
+ *
+ * @return string
*/
- function testSrvus( $text, $title, ParserOptions $options, $outputType = self::OT_HTML ) {
- $this->mOptions = $options;
- $this->clearState();
- if ( !$title instanceof Title ) {
- $title = Title::newFromText( $title );
- }
- $this->mTitle = $title;
- $this->setOutputType( $outputType );
+ function testSrvus( $text, Title $title, ParserOptions $options, $outputType = self::OT_HTML ) {
+ $this->startParse( $title, $options, $outputType, true );
+
$text = $this->replaceVariables( $text );
$text = $this->mStripState->unstripBoth( $text );
$text = Sanitizer::removeHTMLtags( $text );
return $text;
}
- function testPst( $text, $title, $options ) {
- global $wgUser;
- if ( !$title instanceof Title ) {
- $title = Title::newFromText( $title );
- }
- return $this->preSaveTransform( $text, $title, $wgUser, $options );
+ function testPst( $text, Title $title, ParserOptions $options ) {
+ return $this->preSaveTransform( $text, $title, $options->getUser(), $options );
}
- function testPreprocess( $text, $title, $options ) {
- if ( !$title instanceof Title ) {
- $title = Title::newFromText( $title );
- }
+ function testPreprocess( $text, Title $title, ParserOptions $options ) {
return $this->testSrvus( $text, $title, $options, self::OT_PREPROCESS );
}
+ /**
+ * Call a callback function on all regions of the given text that are not
+ * inside strip markers, and replace those regions with the return value
+ * of the callback. For example, with input:
+ *
+ * aaa<MARKER>bbb
+ *
+ * This will call the callback function twice, with 'aaa' and 'bbb'. Those
+ * two strings will be replaced with the value returned by the callback in
+ * each case.
+ *
+ * @return string
+ */
function markerSkipCallback( $s, $callback ) {
$i = 0;
$out = '';
@@ -5152,168 +5404,72 @@ class Parser {
return $out;
}
- function serialiseHalfParsedText( $text ) {
- $data = array();
- $data['text'] = $text;
-
- # First, find all strip markers, and store their
- # data in an array.
- $stripState = new StripState;
- $pos = 0;
- while ( ( $start_pos = strpos( $text, $this->mUniqPrefix, $pos ) )
- && ( $end_pos = strpos( $text, self::MARKER_SUFFIX, $pos ) ) )
- {
- $end_pos += strlen( self::MARKER_SUFFIX );
- $marker = substr( $text, $start_pos, $end_pos-$start_pos );
-
- if ( !empty( $this->mStripState->general->data[$marker] ) ) {
- $replaceArray = $stripState->general;
- $stripText = $this->mStripState->general->data[$marker];
- } elseif ( !empty( $this->mStripState->nowiki->data[$marker] ) ) {
- $replaceArray = $stripState->nowiki;
- $stripText = $this->mStripState->nowiki->data[$marker];
- } else {
- throw new MWException( "Hanging strip marker: '$marker'." );
- }
-
- $replaceArray->setPair( $marker, $stripText );
- $pos = $end_pos;
- }
- $data['stripstate'] = $stripState;
-
- # Now, find all of our links, and store THEIR
- # data in an array! :)
- $links = array( 'internal' => array(), 'interwiki' => array() );
- $pos = 0;
-
- # Internal links
- while ( ( $start_pos = strpos( $text, '<!--LINK ', $pos ) ) ) {
- list( $ns, $trail ) = explode( ':', substr( $text, $start_pos + strlen( '<!--LINK ' ) ), 2 );
-
- $ns = trim( $ns );
- if ( empty( $links['internal'][$ns] ) ) {
- $links['internal'][$ns] = array();
- }
-
- $key = trim( substr( $trail, 0, strpos( $trail, '-->' ) ) );
- $links['internal'][$ns][] = $this->mLinkHolders->internals[$ns][$key];
- $pos = $start_pos + strlen( "<!--LINK $ns:$key-->" );
- }
-
- $pos = 0;
-
- # Interwiki links
- while ( ( $start_pos = strpos( $text, '<!--IWLINK ', $pos ) ) ) {
- $data = substr( $text, $start_pos );
- $key = trim( substr( $data, 0, strpos( $data, '-->' ) ) );
- $links['interwiki'][] = $this->mLinkHolders->interwiki[$key];
- $pos = $start_pos + strlen( "<!--IWLINK $key-->" );
- }
-
- $data['linkholder'] = $links;
-
+ /**
+ * Save the parser state required to convert the given half-parsed text to
+ * HTML. "Half-parsed" in this context means the output of
+ * recursiveTagParse() or internalParse(). This output has strip markers
+ * from replaceVariables (extensionSubstitution() etc.), and link
+ * placeholders from replaceLinkHolders().
+ *
+ * Returns an array which can be serialized and stored persistently. This
+ * array can later be loaded into another parser instance with
+ * unserializeHalfParsedText(). The text can then be safely incorporated into
+ * the return value of a parser hook.
+ *
+ * @return array
+ */
+ function serializeHalfParsedText( $text ) {
+ wfProfileIn( __METHOD__ );
+ $data = array(
+ 'text' => $text,
+ 'version' => self::HALF_PARSED_VERSION,
+ 'stripState' => $this->mStripState->getSubState( $text ),
+ 'linkHolders' => $this->mLinkHolders->getSubArray( $text )
+ );
+ wfProfileOut( __METHOD__ );
return $data;
}
/**
- * TODO: document
- * @param $data Array
- * @param $intPrefix String unique identifying prefix
+ * Load the parser state given in the $data array, which is assumed to
+ * have been generated by serializeHalfParsedText(). The text contents is
+ * extracted from the array, and its markers are transformed into markers
+ * appropriate for the current Parser instance. This transformed text is
+ * returned, and can be safely included in the return value of a parser
+ * hook.
+ *
+ * If the $data array has been stored persistently, the caller should first
+ * check whether it is still valid, by calling isValidHalfParsedText().
+ *
+ * @param $data Serialized data
* @return String
*/
- function unserialiseHalfParsedText( $data, $intPrefix = null ) {
- if ( !$intPrefix ) {
- $intPrefix = self::getRandomString();
+ function unserializeHalfParsedText( $data ) {
+ if ( !isset( $data['version'] ) || $data['version'] != self::HALF_PARSED_VERSION ) {
+ throw new MWException( __METHOD__.': invalid version' );
}
# First, extract the strip state.
- $stripState = $data['stripstate'];
- $this->mStripState->general->merge( $stripState->general );
- $this->mStripState->nowiki->merge( $stripState->nowiki );
-
- # Now, extract the text, and renumber links
- $text = $data['text'];
- $links = $data['linkholder'];
-
- # Internal...
- foreach ( $links['internal'] as $ns => $nsLinks ) {
- foreach ( $nsLinks as $key => $entry ) {
- $newKey = $intPrefix . '-' . $key;
- $this->mLinkHolders->internals[$ns][$newKey] = $entry;
-
- $text = str_replace( "<!--LINK $ns:$key-->", "<!--LINK $ns:$newKey-->", $text );
- }
- }
+ $texts = array( $data['text'] );
+ $texts = $this->mStripState->merge( $data['stripState'], $texts );
- # Interwiki...
- foreach ( $links['interwiki'] as $key => $entry ) {
- $newKey = "$intPrefix-$key";
- $this->mLinkHolders->interwikis[$newKey] = $entry;
-
- $text = str_replace( "<!--IWLINK $key-->", "<!--IWLINK $newKey-->", $text );
- }
+ # Now renumber links
+ $texts = $this->mLinkHolders->mergeForeign( $data['linkHolders'], $texts );
# Should be good to go.
- return $text;
- }
-}
-
-/**
- * @todo document, briefly.
- * @ingroup Parser
- */
-class StripState {
- var $general, $nowiki;
-
- function __construct() {
- $this->general = new ReplacementArray;
- $this->nowiki = new ReplacementArray;
- }
-
- function unstripGeneral( $text ) {
- wfProfileIn( __METHOD__ );
- do {
- $oldText = $text;
- $text = $this->general->replace( $text );
- } while ( $text !== $oldText );
- wfProfileOut( __METHOD__ );
- return $text;
- }
-
- function unstripNoWiki( $text ) {
- wfProfileIn( __METHOD__ );
- do {
- $oldText = $text;
- $text = $this->nowiki->replace( $text );
- } while ( $text !== $oldText );
- wfProfileOut( __METHOD__ );
- return $text;
- }
-
- function unstripBoth( $text ) {
- wfProfileIn( __METHOD__ );
- do {
- $oldText = $text;
- $text = $this->general->replace( $text );
- $text = $this->nowiki->replace( $text );
- } while ( $text !== $oldText );
- wfProfileOut( __METHOD__ );
- return $text;
+ return $texts[0];
}
-}
-/**
- * @todo document, briefly.
- * @ingroup Parser
- */
-class OnlyIncludeReplacer {
- var $output = '';
-
- function replace( $matches ) {
- if ( substr( $matches[1], -1 ) === "\n" ) {
- $this->output .= substr( $matches[1], 0, -1 );
- } else {
- $this->output .= $matches[1];
- }
+ /**
+ * Returns true if the given array, presumed to be generated by
+ * serializeHalfParsedText(), is compatible with the current version of the
+ * parser.
+ *
+ * @param $data Array
+ *
+ * @return bool
+ */
+ function isValidHalfParsedText( $data ) {
+ return isset( $data['version'] ) && $data['version'] == self::HALF_PARSED_VERSION;
}
}
diff --git a/includes/parser/ParserCache.php b/includes/parser/ParserCache.php
index 1e028ae5..dcbf7a4d 100644
--- a/includes/parser/ParserCache.php
+++ b/includes/parser/ParserCache.php
@@ -31,13 +31,18 @@ class ParserCache {
*
* @param $memCached Object
*/
- function __construct( $memCached ) {
+ protected function __construct( $memCached ) {
if ( !$memCached ) {
throw new MWException( "Tried to create a ParserCache with an invalid memcached" );
}
$this->mMemc = $memCached;
}
+ /**
+ * @param $article Article
+ * @param $hash string
+ * @return mixed|string
+ */
protected function getParserOutputKey( $article, $hash ) {
global $wgRequest;
@@ -49,6 +54,10 @@ class ParserCache {
return $key;
}
+ /**
+ * @param $article Article
+ * @return mixed|string
+ */
protected function getOptionsKey( $article ) {
$pageid = $article->getID();
return wfMemcKey( 'pcache', 'idoptions', "{$pageid}" );
@@ -63,6 +72,9 @@ class ParserCache {
* $article. For example give a Chinese interface to a user with
* English preferences. That's why we take into account *all* user
* options. (r70809 CR)
+ *
+ * @param $article Article
+ * @param $popts ParserOptions
*/
function getETag( $article, $popts ) {
return 'W/"' . $this->getParserOutputKey( $article,
@@ -72,6 +84,9 @@ class ParserCache {
/**
* Retrieve the ParserOutput from ParserCache, even if it's outdated.
+ * @param $article Article
+ * @param $popts ParserOptions
+ * @return ParserOutput|false
*/
public function getDirty( $article, $popts ) {
$value = $this->get( $article, $popts, true );
@@ -82,6 +97,9 @@ class ParserCache {
* Used to provide a unique id for the PoolCounter.
* It would be preferable to have this code in get()
* instead of having Article looking in our internals.
+ *
+ * @param $article Article
+ * @param $popts ParserOptions
*/
public function getKey( $article, $popts, $useOutdated = true ) {
global $wgCacheEpoch;
@@ -116,6 +134,12 @@ class ParserCache {
/**
* Retrieve the ParserOutput from ParserCache.
* false if not found or outdated.
+ *
+ * @param $article Article
+ * @param $popts ParserOptions
+ * @param $useOutdated
+ *
+ * @return ParserOutput|false
*/
public function get( $article, $popts, $useOutdated = false ) {
global $wgCacheEpoch;
@@ -150,6 +174,11 @@ class ParserCache {
}
wfDebug( "Found.\n" );
+
+ // The edit section preference may not be the appropiate one in
+ // the ParserOutput, as we are not storing it in the parsercache
+ // key. Force it here. See bug 31445.
+ $value->setEditSectionTokens( $popts->getEditSection() );
if ( !$useOutdated && $value->expired( $touched ) ) {
wfIncrStats( "pcache_miss_expired" );
@@ -157,9 +186,6 @@ class ParserCache {
wfDebug( "ParserOutput key expired, touched $touched, epoch $wgCacheEpoch, cached $cacheTime\n" );
$value = false;
} else {
- if ( isset( $value->mTimestamp ) ) {
- $article->mTimestamp = $value->mTimestamp;
- }
wfIncrStats( "pcache_hit" );
}
@@ -167,7 +193,12 @@ class ParserCache {
return $value;
}
-
+ /**
+ * @param $parserOutput ParserOutput
+ * @param $article Article
+ * @param $popts ParserOptions
+ * @return void
+ */
public function save( $parserOutput, $article, $popts ) {
$expire = $parserOutput->getCacheExpiry();
@@ -183,7 +214,8 @@ class ParserCache {
$optionsKey->setContainsOldMagic( $parserOutput->containsOldMagic() );
- $parserOutputKey = $this->getParserOutputKey( $article, $popts->optionsHash( $optionsKey->mUsedOptions ) );
+ $parserOutputKey = $this->getParserOutputKey( $article,
+ $popts->optionsHash( $optionsKey->mUsedOptions ) );
// Save the timestamp so that we don't have to load the revision row on view
$parserOutput->mTimestamp = $article->getTimestamp();
diff --git a/includes/parser/ParserOptions.php b/includes/parser/ParserOptions.php
index 1bda0792..07752768 100644
--- a/includes/parser/ParserOptions.php
+++ b/includes/parser/ParserOptions.php
@@ -5,7 +5,7 @@
* @file
* @ingroup Parser
*/
-
+
/**
* Set options of the Parser
* @todo document
@@ -18,46 +18,51 @@ class ParserOptions {
var $mAllowExternalImages; # Allow external images inline
var $mAllowExternalImagesFrom; # If not, any exception?
var $mEnableImageWhitelist; # If not or it doesn't match, should we check an on-wiki whitelist?
- var $mSkin; # Reference to the preferred skin
- var $mDateFormat; # Date format index
- var $mEditSection; # Create "edit section" links
- var $mNumberHeadings; # Automatically number headings
+ var $mDateFormat = null; # Date format index
+ var $mEditSection = true; # Create "edit section" links
var $mAllowSpecialInclusion; # Allow inclusion of special pages
- var $mTidy; # Ask for tidy cleanup
- var $mInterfaceMessage; # Which lang to call for PLURAL and GRAMMAR
- var $mTargetLanguage; # Overrides above setting with arbitrary language
+ var $mTidy = false; # Ask for tidy cleanup
+ var $mInterfaceMessage = false; # Which lang to call for PLURAL and GRAMMAR
+ var $mTargetLanguage = null; # Overrides above setting with arbitrary language
var $mMaxIncludeSize; # Maximum size of template expansions, in bytes
var $mMaxPPNodeCount; # Maximum number of nodes touched by PPFrame::expand()
var $mMaxPPExpandDepth; # Maximum recursion depth in PPFrame::expand()
var $mMaxTemplateDepth; # Maximum recursion depth for templates within templates
- var $mRemoveComments; # Remove HTML comments. ONLY APPLIES TO PREPROCESS OPERATIONS
- var $mTemplateCallback; # Callback for template fetching
- var $mEnableLimitReport; # Enable limit report in an HTML comment on output
+ var $mRemoveComments = true; # Remove HTML comments. ONLY APPLIES TO PREPROCESS OPERATIONS
+ var $mTemplateCallback = # Callback for template fetching
+ array( 'Parser', 'statelessFetchTemplate' );
+ var $mEnableLimitReport = false; # Enable limit report in an HTML comment on output
var $mTimestamp; # Timestamp used for {{CURRENTDAY}} etc.
var $mExternalLinkTarget; # Target attribute for external links
+ var $mCleanSignatures; #
+ var $mPreSaveTransform = true; # Transform wiki markup when saving the page.
+
+ var $mNumberHeadings; # Automatically number headings
var $mMath; # User math preference (as integer)
- var $mUserLang; # Language code of the User language.
var $mThumbSize; # Thumb size preferred by the user.
- var $mCleanSignatures; #
+ private $mStubThreshold; # Maximum article size of an article to be marked as "stub"
+ var $mUserLang; # Language code of the User language.
+
+ /**
+ * @var User
+ */
+ var $mUser; # Stored user object
+ var $mIsPreview = false; # Parsing the page for a "preview" operation
+ var $mIsSectionPreview = false; # Parsing the page for a "preview" operation on a single section
+ var $mIsPrintable = false; # Parsing the printable version of the page
- var $mUser; # Stored user object, just used to initialise the skin
- var $mIsPreview; # Parsing the page for a "preview" operation
- var $mIsSectionPreview; # Parsing the page for a "preview" operation on a single section
- var $mIsPrintable; # Parsing the printable version of the page
-
var $mExtraKey = ''; # Extra key that should be present in the caching key.
-
+
protected $onAccessCallback = null;
-
+
function getUseDynamicDates() { return $this->mUseDynamicDates; }
function getInterwikiMagic() { return $this->mInterwikiMagic; }
function getAllowExternalImages() { return $this->mAllowExternalImages; }
function getAllowExternalImagesFrom() { return $this->mAllowExternalImagesFrom; }
function getEnableImageWhitelist() { return $this->mEnableImageWhitelist; }
- function getEditSection() { $this->optionUsed('editsection');
- return $this->mEditSection; }
- function getNumberHeadings() { $this->optionUsed('numberheadings');
- return $this->mNumberHeadings; }
+ function getEditSection() { return $this->mEditSection; }
+ function getNumberHeadings() { $this->optionUsed( 'numberheadings' );
+ return $this->mNumberHeadings; }
function getAllowSpecialInclusion() { return $this->mAllowSpecialInclusion; }
function getTidy() { return $this->mTidy; }
function getInterfaceMessage() { return $this->mInterfaceMessage; }
@@ -71,25 +76,32 @@ class ParserOptions {
function getEnableLimitReport() { return $this->mEnableLimitReport; }
function getCleanSignatures() { return $this->mCleanSignatures; }
function getExternalLinkTarget() { return $this->mExternalLinkTarget; }
- function getMath() { $this->optionUsed('math');
- return $this->mMath; }
- function getThumbSize() { $this->optionUsed('thumbsize');
- return $this->mThumbSize; }
-
+ function getMath() { $this->optionUsed( 'math' );
+ return $this->mMath; }
+ function getThumbSize() { $this->optionUsed( 'thumbsize' );
+ return $this->mThumbSize; }
+ function getStubThreshold() { $this->optionUsed( 'stubthreshold' );
+ return $this->mStubThreshold; }
+
function getIsPreview() { return $this->mIsPreview; }
function getIsSectionPreview() { return $this->mIsSectionPreview; }
- function getIsPrintable() { $this->optionUsed('printable');
- return $this->mIsPrintable; }
+ function getIsPrintable() { $this->optionUsed( 'printable' );
+ return $this->mIsPrintable; }
+ function getUser() { return $this->mUser; }
+ function getPreSaveTransform() { return $this->mPreSaveTransform; }
+ /**
+ * @param $title Title
+ * @return Skin
+ * @deprecated since 1.18 Use Linker::* instead
+ */
function getSkin( $title = null ) {
- if ( !isset( $this->mSkin ) ) {
- $this->mSkin = $this->mUser->getSkin( $title );
- }
- return $this->mSkin;
+ wfDeprecated( __METHOD__ );
+ return new DummyLinker;
}
function getDateFormat() {
- $this->optionUsed('dateformat');
+ $this->optionUsed( 'dateformat' );
if ( !isset( $this->mDateFormat ) ) {
$this->mDateFormat = $this->mUser->getDatePreference();
}
@@ -107,9 +119,11 @@ class ParserOptions {
* You shouldn't use this. Really. $parser->getFunctionLang() is all you need.
* Using this fragments the cache and is discouraged. Yes, {{int: }} uses this,
* producing inconsistent tables (Bug 14404).
+ * @return String Language code
+ * @since 1.17
*/
function getUserLang() {
- $this->optionUsed('userlang');
+ $this->optionUsed( 'userlang' );
return $this->mUserLang;
}
@@ -122,9 +136,9 @@ class ParserOptions {
function setEditSection( $x ) { return wfSetVar( $this->mEditSection, $x ); }
function setNumberHeadings( $x ) { return wfSetVar( $this->mNumberHeadings, $x ); }
function setAllowSpecialInclusion( $x ) { return wfSetVar( $this->mAllowSpecialInclusion, $x ); }
- function setTidy( $x ) { return wfSetVar( $this->mTidy, $x); }
+ function setTidy( $x ) { return wfSetVar( $this->mTidy, $x ); }
function setSkin( $x ) { $this->mSkin = $x; }
- function setInterfaceMessage( $x ) { return wfSetVar( $this->mInterfaceMessage, $x); }
+ function setInterfaceMessage( $x ) { return wfSetVar( $this->mInterfaceMessage, $x ); }
function setTargetLanguage( $x ) { return wfSetVar( $this->mTargetLanguage, $x, true ); }
function setMaxIncludeSize( $x ) { return wfSetVar( $this->mMaxIncludeSize, $x ); }
function setMaxPPNodeCount( $x ) { return wfSetVar( $this->mMaxPPNodeCount, $x ); }
@@ -136,9 +150,16 @@ class ParserOptions {
function setCleanSignatures( $x ) { return wfSetVar( $this->mCleanSignatures, $x ); }
function setExternalLinkTarget( $x ) { return wfSetVar( $this->mExternalLinkTarget, $x ); }
function setMath( $x ) { return wfSetVar( $this->mMath, $x ); }
- function setUserLang( $x ) { return wfSetVar( $this->mUserLang, $x ); }
+ function setUserLang( $x ) {
+ if ( $x instanceof Language ) {
+ $x = $x->getCode();
+ }
+ return wfSetVar( $this->mUserLang, $x );
+ }
function setThumbSize( $x ) { return wfSetVar( $this->mThumbSize, $x ); }
-
+ function setStubThreshold( $x ) { return wfSetVar( $this->mStubThreshold, $x ); }
+ function setPreSaveTransform( $x ) { return wfSetVar( $this->mPreSaveTransform, $x ); }
+
function setIsPreview( $x ) { return wfSetVar( $this->mIsPreview, $x ); }
function setIsSectionPreview( $x ) { return wfSetVar( $this->mIsSectionPreview, $x ); }
function setIsPrintable( $x ) { return wfSetVar( $this->mIsPrintable, $x ); }
@@ -191,30 +212,19 @@ class ParserOptions {
$this->mAllowExternalImages = $wgAllowExternalImages;
$this->mAllowExternalImagesFrom = $wgAllowExternalImagesFrom;
$this->mEnableImageWhitelist = $wgEnableImageWhitelist;
- $this->mSkin = null; # Deferred
- $this->mDateFormat = null; # Deferred
- $this->mEditSection = true;
- $this->mNumberHeadings = $user->getOption( 'numberheadings' );
$this->mAllowSpecialInclusion = $wgAllowSpecialInclusion;
- $this->mTidy = false;
- $this->mInterfaceMessage = false;
- $this->mTargetLanguage = null; // default depends on InterfaceMessage setting
$this->mMaxIncludeSize = $wgMaxArticleSize * 1024;
$this->mMaxPPNodeCount = $wgMaxPPNodeCount;
$this->mMaxPPExpandDepth = $wgMaxPPExpandDepth;
$this->mMaxTemplateDepth = $wgMaxTemplateDepth;
- $this->mRemoveComments = true;
- $this->mTemplateCallback = array( 'Parser', 'statelessFetchTemplate' );
- $this->mEnableLimitReport = false;
$this->mCleanSignatures = $wgCleanSignatures;
$this->mExternalLinkTarget = $wgExternalLinkTarget;
+
+ $this->mNumberHeadings = $user->getOption( 'numberheadings' );
$this->mMath = $user->getOption( 'math' );
- $this->mUserLang = $wgLang->getCode();
$this->mThumbSize = $user->getOption( 'thumbsize' );
-
- $this->mIsPreview = false;
- $this->mIsSectionPreview = false;
- $this->mIsPrintable = false;
+ $this->mStubThreshold = $user->getStubThreshold();
+ $this->mUserLang = $wgLang->getCode();
wfProfileOut( __METHOD__ );
}
@@ -226,7 +236,7 @@ class ParserOptions {
function registerWatcher( $callback ) {
$this->onAccessCallback = $callback;
}
-
+
/**
* Called when an option is accessed.
*/
@@ -235,9 +245,9 @@ class ParserOptions {
call_user_func( $this->onAccessCallback, $optionName );
}
}
-
+
/**
- * Returns the full array of options that would have been used by
+ * Returns the full array of options that would have been used by
* in 1.16.
* Used to get the old parser cache entries when available.
*/
@@ -249,14 +259,14 @@ class ParserOptions {
}
return $legacyOpts;
}
-
+
/**
* Generate a hash string with the values set on these ParserOptions
* for the keys given in the array.
* This will be used as part of the hash key for the parser cache,
- * so users sharign the options with vary for the same page share
+ * so users sharign the options with vary for the same page share
* the same cached data safely.
- *
+ *
* Replaces User::getPageRenderingHash()
*
* Extensions which require it should install 'PageRenderingHash' hook,
@@ -270,48 +280,49 @@ class ParserOptions {
global $wgContLang, $wgRenderHashAppend;
$confstr = '';
-
- if ( in_array( 'math', $forOptions ) )
+
+ if ( in_array( 'math', $forOptions ) ) {
$confstr .= $this->mMath;
- else
+ } else {
$confstr .= '*';
-
+ }
+
// Space assigned for the stubthreshold but unused
- // since it disables the parser cache, its value will always
+ // since it disables the parser cache, its value will always
// be 0 when this function is called by parsercache.
- // The conditional is here to avoid a confusing 0
- if ( true || in_array( 'stubthreshold', $forOptions ) )
- $confstr .= '!0' ;
- else
+ if ( in_array( 'stubthreshold', $forOptions ) ) {
+ $confstr .= '!' . $this->mStubThreshold;
+ } else {
$confstr .= '!*' ;
+ }
- if ( in_array( 'dateformat', $forOptions ) )
+ if ( in_array( 'dateformat', $forOptions ) ) {
$confstr .= '!' . $this->getDateFormat();
-
- if ( in_array( 'numberheadings', $forOptions ) )
+ }
+
+ if ( in_array( 'numberheadings', $forOptions ) ) {
$confstr .= '!' . ( $this->mNumberHeadings ? '1' : '' );
- else
+ } else {
$confstr .= '!*';
-
- if ( in_array( 'userlang', $forOptions ) )
+ }
+
+ if ( in_array( 'userlang', $forOptions ) ) {
$confstr .= '!' . $this->mUserLang;
- else
+ } else {
$confstr .= '!*';
+ }
- if ( in_array( 'thumbsize', $forOptions ) )
+ if ( in_array( 'thumbsize', $forOptions ) ) {
$confstr .= '!' . $this->mThumbSize;
- else
+ } else {
$confstr .= '!*';
+ }
// add in language specific options, if any
- // FIXME: This is just a way of retrieving the url/user preferred variant
+ // @todo FIXME: This is just a way of retrieving the url/user preferred variant
$confstr .= $wgContLang->getExtraHashOptions();
- // Since the skin could be overloading link(), it should be
- // included here but in practice, none of our skins do that.
- // $confstr .= "!" . $this->mSkin->getSkinName();
-
$confstr .= $wgRenderHashAppend;
if ( !in_array( 'editsection', $forOptions ) ) {
@@ -319,20 +330,21 @@ class ParserOptions {
} elseif ( !$this->mEditSection ) {
$confstr .= '!edit=0';
}
-
- if ( $this->mIsPrintable && in_array( 'printable', $forOptions ) )
+
+ if ( $this->mIsPrintable && in_array( 'printable', $forOptions ) ) {
$confstr .= '!printable=1';
-
+ }
+
if ( $this->mExtraKey != '' )
$confstr .= $this->mExtraKey;
-
+
// Give a chance for extensions to modify the hash, if they have
// extra options or other effects on the parser cache.
wfRunHooks( 'PageRenderingHash', array( &$confstr ) );
// Make it a valid memcached key fragment
$confstr = str_replace( ' ', '_', $confstr );
-
+
return $confstr;
}
}
diff --git a/includes/parser/ParserOutput.php b/includes/parser/ParserOutput.php
index 1e4765db..403b6625 100644
--- a/includes/parser/ParserOutput.php
+++ b/includes/parser/ParserOutput.php
@@ -21,14 +21,15 @@ class CacheTime {
function containsOldMagic() { return $this->mContainsOldMagic; }
function setContainsOldMagic( $com ) { return wfSetVar( $this->mContainsOldMagic, $com ); }
-
- /**
- * setCacheTime() sets the timestamp expressing when the page has been rendered.
+
+ /**
+ * setCacheTime() sets the timestamp expressing when the page has been rendered.
* This doesn not control expiry, see updateCacheExpiry() for that!
+ * @param $t string
+ * @return string
*/
- function setCacheTime( $t ) { return wfSetVar( $this->mCacheTime, $t ); }
+ function setCacheTime( $t ) { return wfSetVar( $this->mCacheTime, $t ); }
-
/**
* Sets the number of seconds after which this object should expire.
* This value is used with the ParserCache.
@@ -36,16 +37,20 @@ class CacheTime {
* the new call has no effect. The value returned by getCacheExpiry is smaller
* or equal to the smallest number that was provided as an argument to
* updateCacheExpiry().
+ *
+ * @param $seconds number
*/
function updateCacheExpiry( $seconds ) {
$seconds = (int)$seconds;
- if ( $this->mCacheExpiry === null || $this->mCacheExpiry > $seconds )
- $this->mCacheExpiry = $seconds;
+ if ( $this->mCacheExpiry === null || $this->mCacheExpiry > $seconds ) {
+ $this->mCacheExpiry = $seconds;
+ }
// hack: set old-style marker for uncacheable entries.
- if ( $this->mCacheExpiry !== null && $this->mCacheExpiry <= 0 )
+ if ( $this->mCacheExpiry !== null && $this->mCacheExpiry <= 0 ) {
$this->mCacheTime = -1;
+ }
}
/**
@@ -59,28 +64,36 @@ class CacheTime {
function getCacheExpiry() {
global $wgParserCacheExpireTime;
- if ( $this->mCacheTime < 0 ) return 0; // old-style marker for "not cachable"
+ if ( $this->mCacheTime < 0 ) {
+ return 0;
+ } // old-style marker for "not cachable"
$expire = $this->mCacheExpiry;
- if ( $expire === null )
+ if ( $expire === null ) {
$expire = $wgParserCacheExpireTime;
- else
+ } else {
$expire = min( $expire, $wgParserCacheExpireTime );
+ }
if( $this->containsOldMagic() ) { //compatibility hack
$expire = min( $expire, 3600 ); # 1 hour
}
- if ( $expire <= 0 ) return 0; // not cachable
- else return $expire;
+ if ( $expire <= 0 ) {
+ return 0; // not cachable
+ } else {
+ return $expire;
+ }
}
-
+ /**
+ * @return bool
+ */
function isCacheable() {
return $this->getCacheExpiry() > 0;
}
-
+
/**
* Return true if this cached output object predates the global or
* per-article cache invalidation timestamps, or if it comes from
@@ -100,8 +113,7 @@ class CacheTime {
}
}
-class ParserOutput extends CacheTime
-{
+class ParserOutput extends CacheTime {
var $mText, # The output text
$mLanguageLinks, # List of the full text of language links, in the order they appear
$mCategories, # Map of category names to sort keys
@@ -110,6 +122,7 @@ class ParserOutput extends CacheTime
$mTemplates = array(), # 2-D map of NS/DBK to ID for the template references. ID=zero for broken.
$mTemplateIds = array(), # 2-D map of NS/DBK to rev ID for the template references. ID=zero for broken.
$mImages = array(), # DB keys of the images used, in the array key only
+ $mImageTimeKeys = array(), # DB keys of the images used mapped to sha1 and MW timestamp
$mExternalLinks = array(), # External link URLs, in the key only
$mInterwikiLinks = array(), # 2-D map of prefix/DBK (in keys only) for the inline interwiki links in the document.
$mNewSection = false, # Show a new section link?
@@ -117,13 +130,19 @@ class ParserOutput extends CacheTime
$mNoGallery = false, # No gallery on category page? (__NOGALLERY__)
$mHeadItems = array(), # Items to put in the <head> section
$mModules = array(), # Modules to be loaded by the resource loader
+ $mModuleScripts = array(), # Modules of which only the JS will be loaded by the resource loader
+ $mModuleStyles = array(), # Modules of which only the CSSS will be loaded by the resource loader
+ $mModuleMessages = array(), # Modules of which only the messages will be loaded by the resource loader
$mOutputHooks = array(), # Hook tags as per $wgParserOutputHooks
$mWarnings = array(), # Warning text to be returned to the user. Wikitext formatted, in the key only
$mSections = array(), # Table of contents
+ $mEditSectionTokens = false, # prefix/suffix markers if edit sections were output as tokens
$mProperties = array(), # Name/value pairs to be cached in the DB
$mTOCHTML = ''; # HTML of the TOC
private $mIndexPolicy = ''; # 'index' or 'noindex'? Any other value will result in no change.
- private $mAccessedOptions = null; # List of ParserOptions (stored in the keys)
+ private $mAccessedOptions = array(); # List of ParserOptions (stored in the keys)
+
+ const EDITSECTION_REGEX = '#<(?:mw:)?editsection page="(.*?)" section="(.*?)"(?:/>|>(.*?)(</(?:mw:)?editsection>))#';
function __construct( $text = '', $languageLinks = array(), $categoryLinks = array(),
$containsOldMagic = false, $titletext = '' )
@@ -135,21 +154,55 @@ class ParserOutput extends CacheTime
$this->mTitleText = $titletext;
}
- function getText() { return $this->mText; }
+ function getText() {
+ if ( $this->mEditSectionTokens ) {
+ return preg_replace_callback( ParserOutput::EDITSECTION_REGEX,
+ array( &$this, 'replaceEditSectionLinksCallback' ), $this->mText );
+ } else {
+ return preg_replace( ParserOutput::EDITSECTION_REGEX, '', $this->mText );
+ }
+ return $this->mText;
+ }
+
+ /**
+ * callback used by getText to replace editsection tokens
+ * @private
+ */
+ function replaceEditSectionLinksCallback( $m ) {
+ global $wgOut, $wgLang;
+ $args = array(
+ htmlspecialchars_decode($m[1]),
+ htmlspecialchars_decode($m[2]),
+ isset($m[4]) ? $m[3] : null,
+ );
+ $args[0] = Title::newFromText( $args[0] );
+ if ( !is_object($args[0]) ) {
+ throw new MWException("Bad parser output text.");
+ }
+ $args[] = $wgLang->getCode();
+ $skin = $wgOut->getSkin();
+ return call_user_func_array( array( $skin, 'doEditSectionLink' ), $args );
+ }
+
function &getLanguageLinks() { return $this->mLanguageLinks; }
function getInterwikiLinks() { return $this->mInterwikiLinks; }
function getCategoryLinks() { return array_keys( $this->mCategories ); }
function &getCategories() { return $this->mCategories; }
function getTitleText() { return $this->mTitleText; }
function getSections() { return $this->mSections; }
+ function getEditSectionTokens() { return $this->mEditSectionTokens; }
function &getLinks() { return $this->mLinks; }
function &getTemplates() { return $this->mTemplates; }
+ function &getTemplateIds() { return $this->mTemplateIds; }
function &getImages() { return $this->mImages; }
+ function &getImageTimeKeys() { return $this->mImageTimeKeys; }
function &getExternalLinks() { return $this->mExternalLinks; }
function getNoGallery() { return $this->mNoGallery; }
function getHeadItems() { return $this->mHeadItems; }
function getModules() { return $this->mModules; }
- function getSubtitle() { return $this->mSubtitle; }
+ function getModuleScripts() { return $this->mModuleScripts; }
+ function getModuleStyles() { return $this->mModuleStyles; }
+ function getModuleMessages() { return $this->mModuleMessages; }
function getOutputHooks() { return (array)$this->mOutputHooks; }
function getWarnings() { return array_keys( $this->mWarnings ); }
function getIndexPolicy() { return $this->mIndexPolicy; }
@@ -161,6 +214,7 @@ class ParserOutput extends CacheTime
function setTitleText( $t ) { return wfSetVar( $this->mTitleText, $t ); }
function setSections( $toc ) { return wfSetVar( $this->mSections, $toc ); }
+ function setEditSectionTokens( $t ) { return wfSetVar( $this->mEditSectionTokens, $t ); }
function setIndexPolicy( $policy ) { return wfSetVar( $this->mIndexPolicy, $policy ); }
function setTOCHTML( $tochtml ) { return wfSetVar( $this->mTOCHTML, $tochtml ); }
@@ -226,10 +280,27 @@ class ParserOutput extends CacheTime
$this->mLinks[$ns][$dbk] = $id;
}
- function addImage( $name ) {
+ /**
+ * Register a file dependency for this output
+ * @param $name string Title dbKey
+ * @param $timestamp string MW timestamp of file creation (or false if non-existing)
+ * @param $sha string base 36 SHA-1 of file (or false if non-existing)
+ * @return void
+ */
+ function addImage( $name, $timestamp = null, $sha1 = null ) {
$this->mImages[$name] = 1;
+ if ( $timestamp !== null && $sha1 !== null ) {
+ $this->mImageTimeKeys[$name] = array( 'time' => $timestamp, 'sha1' => $sha1 );
+ }
}
+ /**
+ * Register a template dependency for this output
+ * @param $title Title
+ * @param $page_id
+ * @param $rev_id
+ * @return void
+ */
function addTemplate( $title, $page_id, $rev_id ) {
$ns = $title->getNamespace();
$dbk = $title->getDBkey();
@@ -271,10 +342,22 @@ class ParserOutput extends CacheTime
}
}
- function addModules( $modules ) {
+ public function addModules( $modules ) {
$this->mModules = array_merge( $this->mModules, (array) $modules );
}
+ public function addModuleScripts( $modules ) {
+ $this->mModuleScripts = array_merge( $this->mModuleScripts, (array)$modules );
+ }
+
+ public function addModuleStyles( $modules ) {
+ $this->mModuleStyles = array_merge( $this->mModuleStyles, (array)$modules );
+ }
+
+ public function addModuleMessages( $modules ) {
+ $this->mModuleMessages = array_merge( $this->mModuleMessages, (array)$modules );
+ }
+
/**
* Override the title to be used for display
* -- this is assumed to have been validated
@@ -293,7 +376,7 @@ class ParserOutput extends CacheTime
* @return String
*/
public function getDisplayTitle() {
- $t = $this->getTitleText( );
+ $t = $this->getTitleText();
if( $t === '' ) {
return false;
}
@@ -333,11 +416,11 @@ class ParserOutput extends CacheTime
/**
* Returns the options from its ParserOptions which have been taken
* into account to produce this output or false if not available.
- * @return mixed Array/false
+ * @return mixed Array
*/
public function getUsedOptions() {
if ( !isset( $this->mAccessedOptions ) ) {
- return false;
+ return array();
}
return array_keys( $this->mAccessedOptions );
}
diff --git a/includes/parser/Parser_DiffTest.php b/includes/parser/Parser_DiffTest.php
index c6dd76e5..efad33f9 100644
--- a/includes/parser/Parser_DiffTest.php
+++ b/includes/parser/Parser_DiffTest.php
@@ -111,6 +111,10 @@ class Parser_DiffTest
}
}
+ /**
+ * @param $parser Parser
+ * @return bool
+ */
function onClearState( &$parser ) {
// hack marker prefixes to get identical output
if ( !isset( $this->dtUniqPrefix ) ) {
diff --git a/includes/parser/Parser_LinkHooks.php b/includes/parser/Parser_LinkHooks.php
index 7c17ce4e..90e44943 100644
--- a/includes/parser/Parser_LinkHooks.php
+++ b/includes/parser/Parser_LinkHooks.php
@@ -9,8 +9,7 @@
* Parser with LinkHooks experiment
* @ingroup Parser
*/
-class Parser_LinkHooks extends Parser
-{
+class Parser_LinkHooks extends Parser {
/**
* Update this version number when the ParserOutput format
* changes in an incompatible way, so the parser cache
@@ -38,10 +37,8 @@ class Parser_LinkHooks extends Parser
/**
* Constructor
- *
- * @public
*/
- function __construct( $conf = array() ) {
+ public function __construct( $conf = array() ) {
parent::__construct( $conf );
$this->mLinkHooks = array();
}
@@ -82,8 +79,6 @@ class Parser_LinkHooks extends Parser
* True) (Treat as link) Parse the link according to normal link rules
* False) (Bad link) Just output the raw wikitext (You may modify the text first)
*
- * @public
- *
* @param $ns Integer or String: the Namespace ID or regex pattern if SLH_PATTERN is set
* @param $callback Mixed: the callback function (and object) to use
* @param $flags Integer: a combination of the following flags:
@@ -91,7 +86,7 @@ class Parser_LinkHooks extends Parser
*
* @return The old callback function for this name, if any
*/
- function setLinkHook( $ns, $callback, $flags = 0 ) {
+ public function setLinkHook( $ns, $callback, $flags = 0 ) {
if( $flags & SLH_PATTERN && !is_string($ns) )
throw new MWException( __METHOD__.'() expecting a regex string pattern.' );
elseif( $flags | ~SLH_PATTERN && !is_int($ns) )
@@ -232,7 +227,7 @@ class Parser_LinkHooks extends Parser
wfProfileOut( __METHOD__."-misc" );
# Make title object
wfProfileIn( __METHOD__."-title" );
- $title = Title::newFromText( $this->mStripState->unstripNoWiki($titleText) );
+ $title = Title::newFromText( $this->mStripState->unstripNoWiki( $titleText ) );
if( !$title ) {
wfProfileOut( __METHOD__."-title" );
wfProfileOut( __METHOD__ );
@@ -244,7 +239,7 @@ class Parser_LinkHooks extends Parser
# Default for Namespaces is a default link
# ToDo: Default for patterns is plain wikitext
$return = true;
- if( isset($this->mLinkHooks[$ns]) ) {
+ if( isset( $this->mLinkHooks[$ns] ) ) {
list( $callback, $flags ) = $this->mLinkHooks[$ns];
if( $flags & SLH_PATTERN ) {
$args = array( $parser, $holders, $markers, $titleText, &$paramText, &$leadingColon );
@@ -253,14 +248,14 @@ class Parser_LinkHooks extends Parser
}
# Workaround for PHP bug 35229 and similar
if ( !is_callable( $callback ) ) {
- throw new MWException( "Tag hook for $name is not callable\n" );
+ throw new MWException( "Tag hook for namespace $ns is not callable\n" );
}
$return = call_user_func_array( $callback, $args );
}
if( $return === true ) {
# True (treat as plain link) was returned, call the defaultLinkHook
- $args = array( $parser, $holders, $markers, $title, $titleText, &$paramText, &$leadingColon );
- $return = call_user_func_array( array( 'CoreLinkFunctions', 'defaultLinkHook' ), $args );
+ $return = CoreLinkFunctions::defaultLinkHook( $parser, $holders, $markers, $title,
+ $titleText, $paramText, $leadingColon );
}
if( $return === false ) {
# False (no link) was returned, output plain wikitext
diff --git a/includes/parser/Preprocessor.php b/includes/parser/Preprocessor.php
index c31f37bf..d6328aa7 100644
--- a/includes/parser/Preprocessor.php
+++ b/includes/parser/Preprocessor.php
@@ -9,19 +9,44 @@
* @ingroup Parser
*/
interface Preprocessor {
- /** Create a new preprocessor object based on an initialised Parser object */
+ /**
+ * Create a new preprocessor object based on an initialised Parser object
+ *
+ * @param $parser Parser
+ */
function __construct( $parser );
- /** Create a new top-level frame for expansion of a page */
+ /**
+ * Create a new top-level frame for expansion of a page
+ *
+ * @return PPFrame
+ */
function newFrame();
- /** Create a new custom frame for programmatic use of parameter replacement as used in some extensions */
+ /**
+ * Create a new custom frame for programmatic use of parameter replacement as used in some extensions
+ *
+ * @param $args array
+ *
+ * @return PPFrame
+ */
function newCustomFrame( $args );
- /** Create a new custom node for programmatic use of parameter replacement as used in some extensions */
+ /**
+ * Create a new custom node for programmatic use of parameter replacement as used in some extensions
+ *
+ * @param $values
+ */
function newPartNodeArray( $values );
- /** Preprocess text to a PPNode */
+ /**
+ * Preprocess text to a PPNode
+ *
+ * @param $text
+ * @param $flags
+ *
+ * @return PPNode
+ */
function preprocessToObj( $text, $flags = 0 );
}
@@ -39,6 +64,11 @@ interface PPFrame {
/**
* Create a child frame
+ *
+ * @param $args array
+ * @param $title Title
+ *
+ * @return PPFrame
*/
function newChild( $args = false, $title = false );
@@ -70,6 +100,8 @@ interface PPFrame {
/**
* Returns true if there are no arguments in this frame
+ *
+ * @return bool
*/
function isEmpty();
@@ -95,6 +127,10 @@ interface PPFrame {
/**
* Returns true if the infinite loop check is OK, false if a loop is detected
+ *
+ * @param $title
+ *
+ * @return bool
*/
function loopCheck( $title );
@@ -126,6 +162,8 @@ interface PPNode {
/**
* Get the first child of a tree node. False if there isn't one.
+ *
+ * @return PPNode
*/
function getFirstChild();
diff --git a/includes/parser/Preprocessor_DOM.php b/includes/parser/Preprocessor_DOM.php
index 2b635f7c..755563a0 100644
--- a/includes/parser/Preprocessor_DOM.php
+++ b/includes/parser/Preprocessor_DOM.php
@@ -5,12 +5,18 @@
* @file
* @ingroup Parser
*/
-
+
/**
* @ingroup Parser
*/
class Preprocessor_DOM implements Preprocessor {
- var $parser, $memoryLimit;
+
+ /**
+ * @var Parser
+ */
+ var $parser;
+
+ var $memoryLimit;
const CACHE_VERSION = 1;
@@ -27,21 +33,31 @@ class Preprocessor_DOM implements Preprocessor {
}
}
+ /**
+ * @return PPFrame_DOM
+ */
function newFrame() {
return new PPFrame_DOM( $this );
}
+ /**
+ * @param $args
+ * @return PPCustomFrame_DOM
+ */
function newCustomFrame( $args ) {
return new PPCustomFrame_DOM( $this, $args );
}
+ /**
+ * @param $values
+ * @return PPNode_DOM
+ */
function newPartNodeArray( $values ) {
//NOTE: DOM manipulation is slower than building & parsing XML! (or so Tim sais)
- $xml = "";
- $xml .= "<list>";
+ $xml = "<list>";
foreach ( $values as $k => $val ) {
-
+
if ( is_int( $k ) ) {
$xml .= "<part><name index=\"$k\"/><value>" . htmlspecialchars( $val ) ."</value></part>";
} else {
@@ -59,6 +75,10 @@ class Preprocessor_DOM implements Preprocessor {
return $node;
}
+ /**
+ * @throws MWException
+ * @return bool
+ */
function memCheck() {
if ( $this->memoryLimit === false ) {
return;
@@ -91,14 +111,15 @@ class Preprocessor_DOM implements Preprocessor {
* cache may be implemented at a later date which takes further advantage of these strict
* dependency requirements.
*
- * @private
+ * @return PPNode_DOM
*/
function preprocessToObj( $text, $flags = 0 ) {
wfProfileIn( __METHOD__ );
global $wgMemc, $wgPreprocessorCacheThreshold;
-
+
$xml = false;
- $cacheable = strlen( $text ) > $wgPreprocessorCacheThreshold;
+ $cacheable = ( $wgPreprocessorCacheThreshold !== false
+ && strlen( $text ) > $wgPreprocessorCacheThreshold );
if ( $cacheable ) {
wfProfileIn( __METHOD__.'-cacheable' );
@@ -134,7 +155,8 @@ class Preprocessor_DOM implements Preprocessor {
if ( !$result ) {
// Try running the XML through UtfNormal to get rid of invalid characters
$xml = UtfNormal::cleanUp( $xml );
- $result = $dom->loadXML( $xml );
+ // 1 << 19 == XML_PARSE_HUGE, needed so newer versions of libxml2 don't barf when the XML is >256 levels deep
+ $result = $dom->loadXML( $xml, 1 << 19 );
if ( !$result ) {
throw new MWException( __METHOD__.' generated invalid XML' );
}
@@ -147,7 +169,12 @@ class Preprocessor_DOM implements Preprocessor {
wfProfileOut( __METHOD__ );
return $obj;
}
-
+
+ /**
+ * @param $text string
+ * @param $flags int
+ * @return string
+ */
function preprocessToXml( $text, $flags = 0 ) {
wfProfileIn( __METHOD__ );
$rules = array(
@@ -317,7 +344,7 @@ class Preprocessor_DOM implements Preprocessor {
// Search backwards for leading whitespace
$wsStart = $i ? ( $i - strspn( $revText, ' ', strlen( $text ) - $i ) ) : 0;
// Search forwards for trailing whitespace
- // $wsEnd will be the position of the last space
+ // $wsEnd will be the position of the last space (or the '>' if there's none)
$wsEnd = $endPos + 2 + strspn( $text, ' ', $endPos + 3 );
// Eat the line if possible
// TODO: This could theoretically be done if $wsStart == 0, i.e. for comments at
@@ -344,13 +371,11 @@ class Preprocessor_DOM implements Preprocessor {
if ( $stack->top ) {
$part = $stack->top->getCurrentPart();
- if ( isset( $part->commentEnd ) && $part->commentEnd == $wsStart - 1 ) {
- // Comments abutting, no change in visual end
- $part->commentEnd = $wsEnd;
- } else {
+ if ( ! (isset( $part->commentEnd ) && $part->commentEnd == $wsStart - 1 )) {
$part->visualEnd = $wsStart;
- $part->commentEnd = $endPos;
}
+ // Else comments abutting, no change in visual end
+ $part->commentEnd = $endPos;
}
$i = $endPos + 1;
$inner = substr( $text, $startPos, $endPos - $startPos + 1 );
@@ -389,8 +414,8 @@ class Preprocessor_DOM implements Preprocessor {
} else {
$attrEnd = $tagEndPos;
// Find closing tag
- if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
- $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 ) )
+ if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
+ $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 ) )
{
$inner = substr( $text, $tagEndPos + 1, $matches[0][1] - $tagEndPos - 1 );
$i = $matches[0][1] + strlen( $matches[0][0] );
@@ -423,9 +448,7 @@ class Preprocessor_DOM implements Preprocessor {
$accum .= '<inner>' . htmlspecialchars( $inner ) . '</inner>';
}
$accum .= $close . '</ext>';
- }
-
- elseif ( $found == 'line-start' ) {
+ } elseif ( $found == 'line-start' ) {
// Is this the start of a heading?
// Line break belongs before the heading element in any case
if ( $fakeLineStart ) {
@@ -453,9 +476,7 @@ class Preprocessor_DOM implements Preprocessor {
extract( $flags );
$i += $count;
}
- }
-
- elseif ( $found == 'line-end' ) {
+ } elseif ( $found == 'line-end' ) {
$piece = $stack->top;
// A heading must be open, otherwise \n wouldn't have been in the search list
assert( $piece->open == "\n" );
@@ -522,7 +543,7 @@ class Preprocessor_DOM implements Preprocessor {
'open' => $curChar,
'close' => $rule['end'],
'count' => $count,
- 'lineStart' => ($i > 0 && $text[$i-1] == "\n"),
+ 'lineStart' => ($i == 0 || $text[$i-1] == "\n"),
);
$stack->push( $piece );
@@ -557,7 +578,7 @@ class Preprocessor_DOM implements Preprocessor {
}
}
- if ($matchingCount <= 0) {
+ if ( $matchingCount <= 0 ) {
# No matching element found in callback array
# Output a literal closing brace and continue
$accum .= htmlspecialchars( str_repeat( $curChar, $count ) );
@@ -607,7 +628,7 @@ class Preprocessor_DOM implements Preprocessor {
$accum =& $stack->getAccum();
# Re-add the old stack element if it still has unmatched opening characters remaining
- if ($matchingCount < $piece->count) {
+ if ( $matchingCount < $piece->count ) {
$piece->parts = array( new PPDPart );
$piece->count -= $matchingCount;
# do we still qualify for any callback with remaining count?
@@ -630,16 +651,12 @@ class Preprocessor_DOM implements Preprocessor {
# Add XML element to the enclosing accumulator
$accum .= $element;
- }
-
- elseif ( $found == 'pipe' ) {
+ } elseif ( $found == 'pipe' ) {
$findEquals = true; // shortcut for getFlags()
$stack->addPart();
$accum =& $stack->getAccum();
++$i;
- }
-
- elseif ( $found == 'equals' ) {
+ } elseif ( $found == 'equals' ) {
$findEquals = false; // shortcut for getFlags()
$stack->getCurrentPart()->eqpos = strlen( $accum );
$accum .= '=';
@@ -655,7 +672,7 @@ class Preprocessor_DOM implements Preprocessor {
$xml = $stack->rootAccum;
wfProfileOut( __METHOD__ );
-
+
return $xml;
}
}
@@ -665,7 +682,12 @@ class Preprocessor_DOM implements Preprocessor {
* @ingroup Parser
*/
class PPDStack {
- var $stack, $rootAccum, $top;
+ var $stack, $rootAccum;
+
+ /**
+ * @var PPDStack
+ */
+ var $top;
var $out;
var $elementClass = 'PPDStackElement';
@@ -678,6 +700,9 @@ class PPDStack {
$this->accum =& $this->rootAccum;
}
+ /**
+ * @return int
+ */
function count() {
return count( $this->stack );
}
@@ -726,6 +751,9 @@ class PPDStack {
$this->accum =& $this->top->getAccum();
}
+ /**
+ * @return array
+ */
function getFlags() {
if ( !count( $this->stack ) ) {
return array(
@@ -773,6 +801,9 @@ class PPDStackElement {
return $this->parts[count($this->parts) - 1];
}
+ /**
+ * @return array
+ */
function getFlags() {
$partCount = count( $this->parts );
$findPipe = $this->open != "\n" && $this->open != '[';
@@ -785,6 +816,8 @@ class PPDStackElement {
/**
* Get the output string that would result if the close is not found.
+ *
+ * @return string
*/
function breakSyntax( $openingCount = false ) {
if ( $this->open == "\n" ) {
@@ -829,7 +862,21 @@ class PPDPart {
* @ingroup Parser
*/
class PPFrame_DOM implements PPFrame {
- var $preprocessor, $parser, $title;
+
+ /**
+ * @var Preprocessor
+ */
+ var $preprocessor;
+
+ /**
+ * @var Parser
+ */
+ var $parser;
+
+ /**
+ * @var Title
+ */
+ var $title;
var $titleCache;
/**
@@ -847,7 +894,7 @@ class PPFrame_DOM implements PPFrame {
/**
* Construct a new preprocessor frame.
- * @param $preprocessor Preprocessor: The parent preprocessor
+ * @param $preprocessor Preprocessor The parent preprocessor
*/
function __construct( $preprocessor ) {
$this->preprocessor = $preprocessor;
@@ -861,6 +908,8 @@ class PPFrame_DOM implements PPFrame {
/**
* Create a new child frame
* $args is optionally a multi-root PPNode or array containing the template arguments
+ *
+ * @return PPTemplateFrame_DOM
*/
function newChild( $args = false, $title = false ) {
$namedArgs = array();
@@ -896,6 +945,12 @@ class PPFrame_DOM implements PPFrame {
return new PPTemplateFrame_DOM( $this->preprocessor, $this, $numberedArgs, $namedArgs, $title );
}
+ /**
+ * @throws MWException
+ * @param $root
+ * @param $flags int
+ * @return string
+ */
function expand( $root, $flags = 0 ) {
static $expansionDepth = 0;
if ( is_string( $root ) ) {
@@ -1058,11 +1113,11 @@ class PPFrame_DOM implements PPFrame {
# Heading
$s = $this->expand( $contextNode->childNodes, $flags );
- # Insert a heading marker only for <h> children of <root>
- # This is to stop extractSections from going over multiple tree levels
- if ( $contextNode->parentNode->nodeName == 'root'
- && $this->parser->ot['html'] )
- {
+ # Insert a heading marker only for <h> children of <root>
+ # This is to stop extractSections from going over multiple tree levels
+ if ( $contextNode->parentNode->nodeName == 'root'
+ && $this->parser->ot['html'] )
+ {
# Insert heading index marker
$headingIndex = $contextNode->getAttribute( 'i' );
$titleText = $this->title->getPrefixedDBkey();
@@ -1071,7 +1126,7 @@ class PPFrame_DOM implements PPFrame {
$marker = "{$this->parser->mUniqPrefix}-h-$serial-" . Parser::MARKER_SUFFIX;
$count = $contextNode->getAttribute( 'level' );
$s = substr( $s, 0, $count ) . $marker . substr( $s, $count );
- $this->parser->mStripState->general->setPair( $marker, '' );
+ $this->parser->mStripState->addGeneral( $marker, '' );
}
$out .= $s;
} else {
@@ -1107,6 +1162,11 @@ class PPFrame_DOM implements PPFrame {
return $outStack[0];
}
+ /**
+ * @param $sep
+ * @param $flags
+ * @return string
+ */
function implodeWithFlags( $sep, $flags /*, ... */ ) {
$args = array_slice( func_get_args(), 2 );
@@ -1132,6 +1192,8 @@ class PPFrame_DOM implements PPFrame {
/**
* Implode with no flags specified
* This previously called implodeWithFlags but has now been inlined to reduce stack depth
+ *
+ * @return string
*/
function implode( $sep /*, ... */ ) {
$args = array_slice( func_get_args(), 1 );
@@ -1160,6 +1222,8 @@ class PPFrame_DOM implements PPFrame {
/**
* Makes an object that, when expand()ed, will be the same as one obtained
* with implode()
+ *
+ * @return array
*/
function virtualImplode( $sep /*, ... */ ) {
$args = array_slice( func_get_args(), 1 );
@@ -1225,20 +1289,31 @@ class PPFrame_DOM implements PPFrame {
}
}
+ /**
+ * @return array
+ */
function getArguments() {
return array();
}
+ /**
+ * @return array
+ */
function getNumberedArguments() {
return array();
}
+ /**
+ * @return array
+ */
function getNamedArguments() {
return array();
}
/**
* Returns true if there are no arguments in this frame
+ *
+ * @return bool
*/
function isEmpty() {
return true;
@@ -1250,6 +1325,8 @@ class PPFrame_DOM implements PPFrame {
/**
* Returns true if the infinite loop check is OK, false if a loop is detected
+ *
+ * @return bool
*/
function loopCheck( $title ) {
return !isset( $this->loopCheckHash[$title->getPrefixedDBkey()] );
@@ -1257,6 +1334,8 @@ class PPFrame_DOM implements PPFrame {
/**
* Return true if the frame is a template frame
+ *
+ * @return bool
*/
function isTemplate() {
return false;
@@ -1268,9 +1347,21 @@ class PPFrame_DOM implements PPFrame {
* @ingroup Parser
*/
class PPTemplateFrame_DOM extends PPFrame_DOM {
- var $numberedArgs, $namedArgs, $parent;
+ var $numberedArgs, $namedArgs;
+
+ /**
+ * @var PPFrame_DOM
+ */
+ var $parent;
var $numberedExpansionCache, $namedExpansionCache;
+ /**
+ * @param $preprocessor
+ * @param $parent PPFrame_DOM
+ * @param $numberedArgs array
+ * @param $namedArgs array
+ * @param $title Title
+ */
function __construct( $preprocessor, $parent = false, $numberedArgs = array(), $namedArgs = array(), $title = false ) {
parent::__construct( $preprocessor );
@@ -1305,8 +1396,11 @@ class PPTemplateFrame_DOM extends PPFrame_DOM {
$s .= '}';
return $s;
}
+
/**
* Returns true if there are no arguments in this frame
+ *
+ * @return bool
*/
function isEmpty() {
return !count( $this->numberedArgs ) && !count( $this->namedArgs );
@@ -1321,7 +1415,7 @@ class PPTemplateFrame_DOM extends PPFrame_DOM {
}
return $arguments;
}
-
+
function getNumberedArguments() {
$arguments = array();
foreach ( array_keys($this->numberedArgs) as $key ) {
@@ -1329,7 +1423,7 @@ class PPTemplateFrame_DOM extends PPFrame_DOM {
}
return $arguments;
}
-
+
function getNamedArguments() {
$arguments = array();
foreach ( array_keys($this->namedArgs) as $key ) {
@@ -1371,6 +1465,8 @@ class PPTemplateFrame_DOM extends PPFrame_DOM {
/**
* Return true if the frame is a template frame
+ *
+ * @return bool
*/
function isTemplate() {
return true;
@@ -1405,6 +1501,9 @@ class PPCustomFrame_DOM extends PPFrame_DOM {
return $s;
}
+ /**
+ * @return bool
+ */
function isEmpty() {
return !count( $this->args );
}
@@ -1421,14 +1520,22 @@ class PPCustomFrame_DOM extends PPFrame_DOM {
* @ingroup Parser
*/
class PPNode_DOM implements PPNode {
+
+ /**
+ * @var DOMElement
+ */
var $node;
+ var $xpath;
function __construct( $node, $xpath = false ) {
$this->node = $node;
}
- function __get( $name ) {
- if ( $name == 'xpath' ) {
+ /**
+ * @return DOMXPath
+ */
+ function getXPath() {
+ if ( $this->xpath === null ) {
$this->xpath = new DOMXPath( $this->node->ownerDocument );
}
return $this->xpath;
@@ -1446,22 +1553,39 @@ class PPNode_DOM implements PPNode {
return $s;
}
+ /**
+ * @return bool|PPNode_DOM
+ */
function getChildren() {
return $this->node->childNodes ? new self( $this->node->childNodes ) : false;
}
+ /**
+ * @return bool|PPNode_DOM
+ */
function getFirstChild() {
return $this->node->firstChild ? new self( $this->node->firstChild ) : false;
}
+ /**
+ * @return bool|PPNode_DOM
+ */
function getNextSibling() {
return $this->node->nextSibling ? new self( $this->node->nextSibling ) : false;
}
+ /**
+ * @param $type
+ *
+ * @return bool|PPNode_DOM
+ */
function getChildrenOfType( $type ) {
- return new self( $this->xpath->query( $type, $this->node ) );
+ return new self( $this->getXPath()->query( $type, $this->node ) );
}
+ /**
+ * @return int
+ */
function getLength() {
if ( $this->node instanceof DOMNodeList ) {
return $this->node->length;
@@ -1470,11 +1594,18 @@ class PPNode_DOM implements PPNode {
}
}
+ /**
+ * @param $i
+ * @return bool|PPNode_DOM
+ */
function item( $i ) {
$item = $this->node->item( $i );
return $item ? new self( $item ) : false;
}
+ /**
+ * @return string
+ */
function getName() {
if ( $this->node instanceof DOMNodeList ) {
return '#nodelist';
@@ -1488,10 +1619,13 @@ class PPNode_DOM implements PPNode {
* name PPNode name
* index String index
* value PPNode value
+ *
+ * @return array
*/
function splitArg() {
- $names = $this->xpath->query( 'name', $this->node );
- $values = $this->xpath->query( 'value', $this->node );
+ $xpath = $this->getXPath();
+ $names = $xpath->query( 'name', $this->node );
+ $values = $xpath->query( 'value', $this->node );
if ( !$names->length || !$values->length ) {
throw new MWException( 'Invalid brace node passed to ' . __METHOD__ );
}
@@ -1506,12 +1640,15 @@ class PPNode_DOM implements PPNode {
/**
* Split an <ext> node into an associative array containing name, attr, inner and close
* All values in the resulting array are PPNodes. Inner and close are optional.
+ *
+ * @return array
*/
function splitExt() {
- $names = $this->xpath->query( 'name', $this->node );
- $attrs = $this->xpath->query( 'attr', $this->node );
- $inners = $this->xpath->query( 'inner', $this->node );
- $closes = $this->xpath->query( 'close', $this->node );
+ $xpath = $this->getXPath();
+ $names = $xpath->query( 'name', $this->node );
+ $attrs = $xpath->query( 'attr', $this->node );
+ $inners = $xpath->query( 'inner', $this->node );
+ $closes = $xpath->query( 'close', $this->node );
if ( !$names->length || !$attrs->length ) {
throw new MWException( 'Invalid ext node passed to ' . __METHOD__ );
}
@@ -1531,7 +1668,7 @@ class PPNode_DOM implements PPNode {
* Split a <h> node
*/
function splitHeading() {
- if ( !$this->nodeName == 'h' ) {
+ if ( $this->getName() !== 'h' ) {
throw new MWException( 'Invalid h node passed to ' . __METHOD__ );
}
return array(
diff --git a/includes/parser/Preprocessor_Hash.php b/includes/parser/Preprocessor_Hash.php
index 6cb2febc..c2d7d3d8 100644
--- a/includes/parser/Preprocessor_Hash.php
+++ b/includes/parser/Preprocessor_Hash.php
@@ -5,7 +5,7 @@
* @file
* @ingroup Parser
*/
-
+
/**
* Differences from DOM schema:
* * attribute nodes are children
@@ -13,22 +13,36 @@
* @ingroup Parser
*/
class Preprocessor_Hash implements Preprocessor {
+ /**
+ * @var Parser
+ */
var $parser;
-
+
const CACHE_VERSION = 1;
function __construct( $parser ) {
$this->parser = $parser;
}
+ /**
+ * @return PPFrame_Hash
+ */
function newFrame() {
return new PPFrame_Hash( $this );
}
+ /**
+ * @param $args
+ * @return PPCustomFrame_Hash
+ */
function newCustomFrame( $args ) {
return new PPCustomFrame_Hash( $this, $args );
}
+ /**
+ * @param $values array
+ * @return PPNode_Hash_Array
+ */
function newPartNodeArray( $values ) {
$list = array();
@@ -76,16 +90,15 @@ class Preprocessor_Hash implements Preprocessor {
* cache may be implemented at a later date which takes further advantage of these strict
* dependency requirements.
*
- * @private
+ * @return PPNode_Hash_Tree
*/
function preprocessToObj( $text, $flags = 0 ) {
wfProfileIn( __METHOD__ );
-
-
+
// Check cache.
global $wgMemc, $wgPreprocessorCacheThreshold;
-
- $cacheable = strlen( $text ) > $wgPreprocessorCacheThreshold;
+
+ $cacheable = $wgPreprocessorCacheThreshold !== false && strlen( $text ) > $wgPreprocessorCacheThreshold;
if ( $cacheable ) {
wfProfileIn( __METHOD__.'-cacheable' );
@@ -272,7 +285,7 @@ class Preprocessor_Hash implements Preprocessor {
// Search backwards for leading whitespace
$wsStart = $i ? ( $i - strspn( $revText, ' ', strlen( $text ) - $i ) ) : 0;
// Search forwards for trailing whitespace
- // $wsEnd will be the position of the last space
+ // $wsEnd will be the position of the last space (or the '>' if there's none)
$wsEnd = $endPos + 2 + strspn( $text, ' ', $endPos + 3 );
// Eat the line if possible
// TODO: This could theoretically be done if $wsStart == 0, i.e. for comments at
@@ -302,13 +315,11 @@ class Preprocessor_Hash implements Preprocessor {
if ( $stack->top ) {
$part = $stack->top->getCurrentPart();
- if ( isset( $part->commentEnd ) && $part->commentEnd == $wsStart - 1 ) {
- // Comments abutting, no change in visual end
- $part->commentEnd = $wsEnd;
- } else {
+ if ( ! (isset( $part->commentEnd ) && $part->commentEnd == $wsStart - 1 )) {
$part->visualEnd = $wsStart;
- $part->commentEnd = $endPos;
}
+ // Else comments abutting, no change in visual end
+ $part->commentEnd = $endPos;
}
$i = $endPos + 1;
$inner = substr( $text, $startPos, $endPos - $startPos + 1 );
@@ -348,8 +359,8 @@ class Preprocessor_Hash implements Preprocessor {
} else {
$attrEnd = $tagEndPos;
// Find closing tag
- if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
- $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 ) )
+ if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
+ $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 ) )
{
$inner = substr( $text, $tagEndPos + 1, $matches[0][1] - $tagEndPos - 1 );
$i = $matches[0][1] + strlen( $matches[0][0] );
@@ -414,9 +425,7 @@ class Preprocessor_Hash implements Preprocessor {
extract( $stack->getFlags() );
$i += $count;
}
- }
-
- elseif ( $found == 'line-end' ) {
+ } elseif ( $found == 'line-end' ) {
$piece = $stack->top;
// A heading must be open, otherwise \n wouldn't have been in the search list
assert( $piece->open == "\n" );
@@ -478,9 +487,7 @@ class Preprocessor_Hash implements Preprocessor {
// another heading. Infinite loops are avoided because the next iteration MUST
// hit the heading open case above, which unconditionally increments the
// input pointer.
- }
-
- elseif ( $found == 'open' ) {
+ } elseif ( $found == 'open' ) {
# count opening brace characters
$count = strspn( $text, $curChar, $i );
@@ -491,7 +498,7 @@ class Preprocessor_Hash implements Preprocessor {
'open' => $curChar,
'close' => $rule['end'],
'count' => $count,
- 'lineStart' => ($i > 0 && $text[$i-1] == "\n"),
+ 'lineStart' => ($i == 0 || $text[$i-1] == "\n"),
);
$stack->push( $piece );
@@ -502,9 +509,7 @@ class Preprocessor_Hash implements Preprocessor {
$accum->addLiteral( str_repeat( $curChar, $count ) );
}
$i += $count;
- }
-
- elseif ( $found == 'close' ) {
+ } elseif ( $found == 'close' ) {
$piece = $stack->top;
# lets check if there are enough characters for closing brace
$maxCount = $piece->count;
@@ -644,16 +649,12 @@ class Preprocessor_Hash implements Preprocessor {
} else {
$accum->addAccum( $element );
}
- }
-
- elseif ( $found == 'pipe' ) {
+ } elseif ( $found == 'pipe' ) {
$findEquals = true; // shortcut for getFlags()
$stack->addPart();
$accum =& $stack->getAccum();
++$i;
- }
-
- elseif ( $found == 'equals' ) {
+ } elseif ( $found == 'equals' ) {
$findEquals = false; // shortcut for getFlags()
$accum->addNodeWithText( 'equals', '=' );
$stack->getCurrentPart()->eqpos = $accum->lastNode;
@@ -676,7 +677,7 @@ class Preprocessor_Hash implements Preprocessor {
$rootNode = new PPNode_Hash_Tree( 'root' );
$rootNode->firstChild = $stack->rootAccum->firstNode;
$rootNode->lastChild = $stack->rootAccum->lastNode;
-
+
// Cache
if ($cacheable) {
$cacheValue = sprintf( "%08d", self::CACHE_VERSION ) . serialize( $rootNode );
@@ -685,7 +686,7 @@ class Preprocessor_Hash implements Preprocessor {
wfProfileOut( __METHOD__.'-cacheable' );
wfDebugLog( "Preprocessor", "Saved preprocessor Hash to memcached (key $cacheKey)" );
}
-
+
wfProfileOut( __METHOD__ );
return $rootNode;
}
@@ -714,6 +715,8 @@ class PPDStackElement_Hash extends PPDStackElement {
/**
* Get the accumulator that would result if the close is not found.
+ *
+ * @return PPDAccum_Hash
*/
function breakSyntax( $openingCount = false ) {
if ( $this->open == "\n" ) {
@@ -818,7 +821,21 @@ class PPDAccum_Hash {
* @ingroup Parser
*/
class PPFrame_Hash implements PPFrame {
- var $preprocessor, $parser, $title;
+
+ /**
+ * @var Parser
+ */
+ var $parser;
+
+ /**
+ * @var Preprocessor
+ */
+ var $preprocessor;
+
+ /**
+ * @var Title
+ */
+ var $title;
var $titleCache;
/**
@@ -850,6 +867,11 @@ class PPFrame_Hash implements PPFrame {
/**
* Create a new child frame
* $args is optionally a multi-root PPNode or array containing the template arguments
+ *
+ * @param $args PPNode_Hash_Array|array
+ * @param $title Title|false
+ *
+ * @return PPTemplateFrame_Hash
*/
function newChild( $args = false, $title = false ) {
$namedArgs = array();
@@ -880,14 +902,19 @@ class PPFrame_Hash implements PPFrame {
return new PPTemplateFrame_Hash( $this->preprocessor, $this, $numberedArgs, $namedArgs, $title );
}
+ /**
+ * @throws MWException
+ * @param $root
+ * @param $flags int
+ * @return string
+ */
function expand( $root, $flags = 0 ) {
static $expansionDepth = 0;
if ( is_string( $root ) ) {
return $root;
}
- if ( ++$this->parser->mPPNodeCount > $this->parser->mOptions->getMaxPPNodeCount() )
- {
+ if ( ++$this->parser->mPPNodeCount > $this->parser->mOptions->getMaxPPNodeCount() ) {
return '<span class="error">Node-count limit exceeded</span>';
}
if ( $expansionDepth > $this->parser->mOptions->getMaxPPExpandDepth() ) {
@@ -1016,7 +1043,7 @@ class PPFrame_Hash implements PPFrame {
$serial = count( $this->parser->mHeadings ) - 1;
$marker = "{$this->parser->mUniqPrefix}-h-$serial-" . Parser::MARKER_SUFFIX;
$s = substr( $s, 0, $bits['level'] ) . $marker . substr( $s, $bits['level'] );
- $this->parser->mStripState->general->setPair( $marker, '' );
+ $this->parser->mStripState->addGeneral( $marker, '' );
$out .= $s;
} else {
# Expand in virtual stack
@@ -1050,6 +1077,11 @@ class PPFrame_Hash implements PPFrame {
return $outStack[0];
}
+ /**
+ * @param $sep
+ * @param $flags
+ * @return string
+ */
function implodeWithFlags( $sep, $flags /*, ... */ ) {
$args = array_slice( func_get_args(), 2 );
@@ -1077,6 +1109,7 @@ class PPFrame_Hash implements PPFrame {
/**
* Implode with no flags specified
* This previously called implodeWithFlags but has now been inlined to reduce stack depth
+ * @return string
*/
function implode( $sep /*, ... */ ) {
$args = array_slice( func_get_args(), 1 );
@@ -1105,6 +1138,8 @@ class PPFrame_Hash implements PPFrame {
/**
* Makes an object that, when expand()ed, will be the same as one obtained
* with implode()
+ *
+ * @return PPNode_Hash_Array
*/
function virtualImplode( $sep /*, ... */ ) {
$args = array_slice( func_get_args(), 1 );
@@ -1132,6 +1167,8 @@ class PPFrame_Hash implements PPFrame {
/**
* Virtual implode with brackets
+ *
+ * @return PPNode_Hash_Array
*/
function virtualBracketedImplode( $start, $sep, $end /*, ... */ ) {
$args = array_slice( func_get_args(), 3 );
@@ -1162,6 +1199,10 @@ class PPFrame_Hash implements PPFrame {
return 'frame{}';
}
+ /**
+ * @param $level bool
+ * @return array|bool|String
+ */
function getPDBK( $level = false ) {
if ( $level === false ) {
return $this->title->getPrefixedDBkey();
@@ -1170,31 +1211,50 @@ class PPFrame_Hash implements PPFrame {
}
}
+ /**
+ * @return array
+ */
function getArguments() {
return array();
}
+ /**
+ * @return array
+ */
function getNumberedArguments() {
return array();
}
+ /**
+ * @return array
+ */
function getNamedArguments() {
return array();
}
/**
* Returns true if there are no arguments in this frame
+ *
+ * @return bool
*/
function isEmpty() {
return true;
}
+ /**
+ * @param $name
+ * @return bool
+ */
function getArgument( $name ) {
return false;
}
/**
* Returns true if the infinite loop check is OK, false if a loop is detected
+ *
+ * @param $title Title
+ *
+ * @return bool
*/
function loopCheck( $title ) {
return !isset( $this->loopCheckHash[$title->getPrefixedDBkey()] );
@@ -1202,6 +1262,8 @@ class PPFrame_Hash implements PPFrame {
/**
* Return true if the frame is a template frame
+ *
+ * @return bool
*/
function isTemplate() {
return false;
@@ -1216,6 +1278,13 @@ class PPTemplateFrame_Hash extends PPFrame_Hash {
var $numberedArgs, $namedArgs, $parent;
var $numberedExpansionCache, $namedExpansionCache;
+ /**
+ * @param $preprocessor
+ * @param $parent
+ * @param $numberedArgs array
+ * @param $namedArgs array
+ * @param $title Title
+ */
function __construct( $preprocessor, $parent = false, $numberedArgs = array(), $namedArgs = array(), $title = false ) {
parent::__construct( $preprocessor );
@@ -1252,11 +1321,16 @@ class PPTemplateFrame_Hash extends PPFrame_Hash {
}
/**
* Returns true if there are no arguments in this frame
+ *
+ * @return bool
*/
function isEmpty() {
return !count( $this->numberedArgs ) && !count( $this->namedArgs );
}
+ /**
+ * @return array
+ */
function getArguments() {
$arguments = array();
foreach ( array_merge(
@@ -1266,7 +1340,10 @@ class PPTemplateFrame_Hash extends PPFrame_Hash {
}
return $arguments;
}
-
+
+ /**
+ * @return array
+ */
function getNumberedArguments() {
$arguments = array();
foreach ( array_keys($this->numberedArgs) as $key ) {
@@ -1274,7 +1351,10 @@ class PPTemplateFrame_Hash extends PPFrame_Hash {
}
return $arguments;
}
-
+
+ /**
+ * @return array
+ */
function getNamedArguments() {
$arguments = array();
foreach ( array_keys($this->namedArgs) as $key ) {
@@ -1283,6 +1363,10 @@ class PPTemplateFrame_Hash extends PPFrame_Hash {
return $arguments;
}
+ /**
+ * @param $index
+ * @return array|bool
+ */
function getNumberedArgument( $index ) {
if ( !isset( $this->numberedArgs[$index] ) ) {
return false;
@@ -1294,6 +1378,10 @@ class PPTemplateFrame_Hash extends PPFrame_Hash {
return $this->numberedExpansionCache[$index];
}
+ /**
+ * @param $name
+ * @return bool
+ */
function getNamedArgument( $name ) {
if ( !isset( $this->namedArgs[$name] ) ) {
return false;
@@ -1306,6 +1394,10 @@ class PPTemplateFrame_Hash extends PPFrame_Hash {
return $this->namedExpansionCache[$name];
}
+ /**
+ * @param $name
+ * @return array|bool
+ */
function getArgument( $name ) {
$text = $this->getNumberedArgument( $name );
if ( $text === false ) {
@@ -1316,6 +1408,8 @@ class PPTemplateFrame_Hash extends PPFrame_Hash {
/**
* Return true if the frame is a template frame
+ *
+ * @return bool
*/
function isTemplate() {
return true;
@@ -1350,10 +1444,17 @@ class PPCustomFrame_Hash extends PPFrame_Hash {
return $s;
}
+ /**
+ * @return bool
+ */
function isEmpty() {
return !count( $this->args );
}
+ /**
+ * @param $index
+ * @return bool
+ */
function getArgument( $index ) {
if ( !isset( $this->args[$index] ) ) {
return false;
@@ -1390,6 +1491,11 @@ class PPNode_Hash_Tree implements PPNode {
}
}
+ /**
+ * @param $name
+ * @param $text
+ * @return PPNode_Hash_Tree
+ */
static function newWithText( $name, $text ) {
$obj = new self( $name );
$obj->addChild( new PPNode_Hash_Text( $text ) );
@@ -1405,6 +1511,9 @@ class PPNode_Hash_Tree implements PPNode {
}
}
+ /**
+ * @return PPNode_Hash_Array
+ */
function getChildren() {
$children = array();
for ( $child = $this->firstChild; $child; $child = $child->nextSibling ) {
@@ -1431,9 +1540,24 @@ class PPNode_Hash_Tree implements PPNode {
return $children;
}
- function getLength() { return false; }
- function item( $i ) { return false; }
+ /**
+ * @return bool
+ */
+ function getLength() {
+ return false;
+ }
+ /**
+ * @param $i
+ * @return bool
+ */
+ function item( $i ) {
+ return false;
+ }
+
+ /**
+ * @return string
+ */
function getName() {
return $this->name;
}
@@ -1443,6 +1567,8 @@ class PPNode_Hash_Tree implements PPNode {
* name PPNode name
* index String index
* value PPNode value
+ *
+ * @return array
*/
function splitArg() {
$bits = array();
@@ -1474,6 +1600,8 @@ class PPNode_Hash_Tree implements PPNode {
/**
* Split an <ext> node into an associative array containing name, attr, inner and close
* All values in the resulting array are PPNodes. Inner and close are optional.
+ *
+ * @return array
*/
function splitExt() {
$bits = array();
@@ -1499,6 +1627,8 @@ class PPNode_Hash_Tree implements PPNode {
/**
* Split an <h> node
+ *
+ * @return array
*/
function splitHeading() {
if ( $this->name !== 'h' ) {
@@ -1523,6 +1653,8 @@ class PPNode_Hash_Tree implements PPNode {
/**
* Split a <template> or <tplarg> node
+ *
+ * @return array
*/
function splitTemplate() {
$parts = array();
diff --git a/includes/parser/Preprocessor_HipHop.hphp b/includes/parser/Preprocessor_HipHop.hphp
new file mode 100644
index 00000000..dc404f7c
--- /dev/null
+++ b/includes/parser/Preprocessor_HipHop.hphp
@@ -0,0 +1,1941 @@
+<?php
+/**
+ * A preprocessor optimised for HipHop, using HipHop-specific syntax.
+ * vim: ft=php
+ *
+ * @file
+ * @ingroup Parser
+ */
+
+/**
+ * @ingroup Parser
+ */
+class Preprocessor_HipHop implements Preprocessor {
+ /**
+ * @var Parser
+ */
+ var $parser;
+
+ const CACHE_VERSION = 1;
+
+ function __construct( $parser ) {
+ $this->parser = $parser;
+ }
+
+ /**
+ * @return PPFrame_HipHop
+ */
+ function newFrame() {
+ return new PPFrame_HipHop( $this );
+ }
+
+ /**
+ * @param $args
+ * @return PPCustomFrame_HipHop
+ */
+ function newCustomFrame( array $args ) {
+ return new PPCustomFrame_HipHop( $this, $args );
+ }
+
+ /**
+ * @param $values array
+ * @return PPNode_HipHop_Array
+ */
+ function newPartNodeArray( $values ) {
+ $list = array();
+
+ foreach ( $values as $k => $val ) {
+ $partNode = new PPNode_HipHop_Tree( 'part' );
+ $nameNode = new PPNode_HipHop_Tree( 'name' );
+
+ if ( is_int( $k ) ) {
+ $nameNode->addChild( new PPNode_HipHop_Attr( 'index', $k ) );
+ $partNode->addChild( $nameNode );
+ } else {
+ $nameNode->addChild( new PPNode_HipHop_Text( $k ) );
+ $partNode->addChild( $nameNode );
+ $partNode->addChild( new PPNode_HipHop_Text( '=' ) );
+ }
+
+ $valueNode = new PPNode_HipHop_Tree( 'value' );
+ $valueNode->addChild( new PPNode_HipHop_Text( $val ) );
+ $partNode->addChild( $valueNode );
+
+ $list[] = $partNode;
+ }
+
+ $node = new PPNode_HipHop_Array( $list );
+ return $node;
+ }
+
+ /**
+ * Preprocess some wikitext and return the document tree.
+ * This is the ghost of Parser::replace_variables().
+ *
+ * @param $text String: the text to parse
+ * @param $flags Integer: bitwise combination of:
+ * Parser::PTD_FOR_INCLUSION Handle <noinclude>/<includeonly> as if the text is being
+ * included. Default is to assume a direct page view.
+ *
+ * The generated DOM tree must depend only on the input text and the flags.
+ * The DOM tree must be the same in OT_HTML and OT_WIKI mode, to avoid a regression of bug 4899.
+ *
+ * Any flag added to the $flags parameter here, or any other parameter liable to cause a
+ * change in the DOM tree for a given text, must be passed through the section identifier
+ * in the section edit link and thus back to extractSections().
+ *
+ * The output of this function is currently only cached in process memory, but a persistent
+ * cache may be implemented at a later date which takes further advantage of these strict
+ * dependency requirements.
+ *
+ * @return PPNode_HipHop_Tree
+ */
+ function preprocessToObj( string $text, int $flags = 0 ) {
+ wfProfileIn( __METHOD__ );
+
+ // Check cache.
+ global $wgMemc, $wgPreprocessorCacheThreshold;
+
+ $cacheable = ($wgPreprocessorCacheThreshold !== false && strlen( $text ) > $wgPreprocessorCacheThreshold);
+ if ( $cacheable ) {
+ wfProfileIn( __METHOD__.'-cacheable' );
+
+ $cacheKey = strval( wfMemcKey( 'preprocess-hash', md5($text), $flags ) );
+ $cacheValue = strval( $wgMemc->get( $cacheKey ) );
+ if ( $cacheValue !== '' ) {
+ $version = substr( $cacheValue, 0, 8 );
+ if ( intval( $version ) == self::CACHE_VERSION ) {
+ $hash = unserialize( substr( $cacheValue, 8 ) );
+ // From the cache
+ wfDebugLog( "Preprocessor",
+ "Loaded preprocessor hash from memcached (key $cacheKey)" );
+ wfProfileOut( __METHOD__.'-cacheable' );
+ wfProfileOut( __METHOD__ );
+ return $hash;
+ }
+ }
+ wfProfileIn( __METHOD__.'-cache-miss' );
+ }
+
+ $rules = array(
+ '{' => array(
+ 'end' => '}',
+ 'names' => array(
+ 2 => 'template',
+ 3 => 'tplarg',
+ ),
+ 'min' => 2,
+ 'max' => 3,
+ ),
+ '[' => array(
+ 'end' => ']',
+ 'names' => array( 2 => 'LITERAL' ),
+ 'min' => 2,
+ 'max' => 2,
+ )
+ );
+
+ $forInclusion = (bool)( $flags & Parser::PTD_FOR_INCLUSION );
+
+ $xmlishElements = (array)$this->parser->getStripList();
+ $enableOnlyinclude = false;
+ if ( $forInclusion ) {
+ $ignoredTags = array( 'includeonly', '/includeonly' );
+ $ignoredElements = array( 'noinclude' );
+ $xmlishElements[] = 'noinclude';
+ if ( strpos( $text, '<onlyinclude>' ) !== false && strpos( $text, '</onlyinclude>' ) !== false ) {
+ $enableOnlyinclude = true;
+ }
+ } else if ( $this->parser->ot['wiki'] ) {
+ $ignoredTags = array( 'noinclude', '/noinclude', 'onlyinclude', '/onlyinclude', 'includeonly', '/includeonly' );
+ $ignoredElements = array();
+ } else {
+ $ignoredTags = array( 'noinclude', '/noinclude', 'onlyinclude', '/onlyinclude' );
+ $ignoredElements = array( 'includeonly' );
+ $xmlishElements[] = 'includeonly';
+ }
+ $xmlishRegex = implode( '|', array_merge( $xmlishElements, $ignoredTags ) );
+
+ // Use "A" modifier (anchored) instead of "^", because ^ doesn't work with an offset
+ $elementsRegex = "~($xmlishRegex)(?:\s|\/>|>)|(!--)~iA";
+
+ $stack = new PPDStack_HipHop;
+
+ $searchBase = "[{<\n";
+ $revText = strrev( $text ); // For fast reverse searches
+
+ $i = 0; # Input pointer, starts out pointing to a pseudo-newline before the start
+ $accum = $stack->getAccum(); # Current accumulator
+ $headingIndex = 1;
+ $stackFlags = array(
+ 'findPipe' => false, # True to take notice of pipe characters
+ 'findEquals' => false, # True to find equals signs in arguments
+ 'inHeading' => false, # True if $i is inside a possible heading
+ );
+ $noMoreGT = false; # True if there are no more greater-than (>) signs right of $i
+ $findOnlyinclude = $enableOnlyinclude; # True to ignore all input up to the next <onlyinclude>
+ $fakeLineStart = true; # Do a line-start run without outputting an LF character
+
+ while ( true ) {
+ //$this->memCheck();
+
+ if ( $findOnlyinclude ) {
+ // Ignore all input up to the next <onlyinclude>
+ $variantStartPos = strpos( $text, '<onlyinclude>', $i );
+ if ( $variantStartPos === false ) {
+ // Ignored section runs to the end
+ $accum->addNodeWithText( 'ignore', strval( substr( $text, $i ) ) );
+ break;
+ }
+ $startPos1 = intval( $variantStartPos );
+ $tagEndPos = $startPos1 + strlen( '<onlyinclude>' ); // past-the-end
+ $accum->addNodeWithText( 'ignore', strval( substr( $text, $i, $tagEndPos - $i ) ) );
+ $i = $tagEndPos;
+ $findOnlyinclude = false;
+ }
+
+ if ( $fakeLineStart ) {
+ $found = 'line-start';
+ $curChar = '';
+ } else {
+ # Find next opening brace, closing brace or pipe
+ $search = $searchBase;
+ if ( $stack->top === false ) {
+ $currentClosing = '';
+ } else {
+ $currentClosing = strval( $stack->getTop()->close );
+ $search .= $currentClosing;
+ }
+ if ( $stackFlags['findPipe'] ) {
+ $search .= '|';
+ }
+ if ( $stackFlags['findEquals'] ) {
+ // First equals will be for the template
+ $search .= '=';
+ }
+ $rule = null;
+ # Output literal section, advance input counter
+ $literalLength = intval( strcspn( $text, $search, $i ) );
+ if ( $literalLength > 0 ) {
+ $accum->addLiteral( strval( substr( $text, $i, $literalLength ) ) );
+ $i += $literalLength;
+ }
+ if ( $i >= strlen( $text ) ) {
+ if ( $currentClosing === "\n" ) {
+ // Do a past-the-end run to finish off the heading
+ $curChar = '';
+ $found = 'line-end';
+ } else {
+ # All done
+ break;
+ }
+ } else {
+ $curChar = $text[$i];
+ if ( $curChar === '|' ) {
+ $found = 'pipe';
+ } elseif ( $curChar === '=' ) {
+ $found = 'equals';
+ } elseif ( $curChar === '<' ) {
+ $found = 'angle';
+ } elseif ( $curChar === "\n" ) {
+ if ( $stackFlags['inHeading'] ) {
+ $found = 'line-end';
+ } else {
+ $found = 'line-start';
+ }
+ } elseif ( $curChar === $currentClosing ) {
+ $found = 'close';
+ } elseif ( isset( $rules[$curChar] ) ) {
+ $found = 'open';
+ $rule = $rules[$curChar];
+ } else {
+ # Some versions of PHP have a strcspn which stops on null characters
+ # Ignore and continue
+ ++$i;
+ continue;
+ }
+ }
+ }
+
+ if ( $found === 'angle' ) {
+ $matches = false;
+ // Handle </onlyinclude>
+ if ( $enableOnlyinclude
+ && substr( $text, $i, strlen( '</onlyinclude>' ) ) === '</onlyinclude>' )
+ {
+ $findOnlyinclude = true;
+ continue;
+ }
+
+ // Determine element name
+ if ( !preg_match( $elementsRegex, $text, $matches, 0, $i + 1 ) ) {
+ // Element name missing or not listed
+ $accum->addLiteral( '<' );
+ ++$i;
+ continue;
+ }
+ // Handle comments
+ if ( isset( $matches[2] ) && $matches[2] === '!--' ) {
+ // To avoid leaving blank lines, when a comment is both preceded
+ // and followed by a newline (ignoring spaces), trim leading and
+ // trailing spaces and one of the newlines.
+
+ // Find the end
+ $variantEndPos = strpos( $text, '-->', $i + 4 );
+ if ( $variantEndPos === false ) {
+ // Unclosed comment in input, runs to end
+ $inner = strval( substr( $text, $i ) );
+ $accum->addNodeWithText( 'comment', $inner );
+ $i = strlen( $text );
+ } else {
+ $endPos = intval( $variantEndPos );
+ // Search backwards for leading whitespace
+ if ( $i ) {
+ $wsStart = $i - intval( strspn( $revText, ' ', strlen( $text ) - $i ) );
+ } else {
+ $wsStart = 0;
+ }
+ // Search forwards for trailing whitespace
+ // $wsEnd will be the position of the last space (or the '>' if there's none)
+ $wsEnd = $endPos + 2 + intval( strspn( $text, ' ', $endPos + 3 ) );
+ // Eat the line if possible
+ // TODO: This could theoretically be done if $wsStart == 0, i.e. for comments at
+ // the overall start. That's not how Sanitizer::removeHTMLcomments() did it, but
+ // it's a possible beneficial b/c break.
+ if ( $wsStart > 0 && substr( $text, $wsStart - 1, 1 ) === "\n"
+ && substr( $text, $wsEnd + 1, 1 ) === "\n" )
+ {
+ $startPos2 = $wsStart;
+ $endPos = $wsEnd + 1;
+ // Remove leading whitespace from the end of the accumulator
+ // Sanity check first though
+ $wsLength = $i - $wsStart;
+ if ( $wsLength > 0
+ && $accum->lastNode instanceof PPNode_HipHop_Text
+ && substr( $accum->lastNode->value, -$wsLength ) === str_repeat( ' ', $wsLength ) )
+ {
+ $accum->lastNode->value = strval( substr( $accum->lastNode->value, 0, -$wsLength ) );
+ }
+ // Do a line-start run next time to look for headings after the comment
+ $fakeLineStart = true;
+ } else {
+ // No line to eat, just take the comment itself
+ $startPos2 = $i;
+ $endPos += 2;
+ }
+
+ if ( $stack->top ) {
+ $part = $stack->getTop()->getCurrentPart();
+ if ( ! (isset( $part->commentEnd ) && $part->commentEnd == $wsStart - 1 )) {
+ $part->visualEnd = $wsStart;
+ }
+ // Else comments abutting, no change in visual end
+ $part->commentEnd = $endPos;
+ }
+ $i = $endPos + 1;
+ $inner = strval( substr( $text, $startPos2, $endPos - $startPos2 + 1 ) );
+ $accum->addNodeWithText( 'comment', $inner );
+ }
+ continue;
+ }
+ $name = strval( $matches[1] );
+ $lowerName = strtolower( $name );
+ $attrStart = $i + strlen( $name ) + 1;
+
+ // Find end of tag
+ $variantTagEndPos = $noMoreGT ? false : strpos( $text, '>', $attrStart );
+ if ( $variantTagEndPos === false ) {
+ // Infinite backtrack
+ // Disable tag search to prevent worst-case O(N^2) performance
+ $noMoreGT = true;
+ $accum->addLiteral( '<' );
+ ++$i;
+ continue;
+ }
+ $tagEndPos = intval( $variantTagEndPos );
+
+ // Handle ignored tags
+ if ( in_array( $lowerName, $ignoredTags ) ) {
+ $accum->addNodeWithText( 'ignore', strval( substr( $text, $i, $tagEndPos - $i + 1 ) ) );
+ $i = $tagEndPos + 1;
+ continue;
+ }
+
+ $tagStartPos = $i;
+ $inner = $close = '';
+ if ( $text[$tagEndPos-1] === '/' ) {
+ // Short end tag
+ $attrEnd = $tagEndPos - 1;
+ $shortEnd = true;
+ $inner = '';
+ $i = $tagEndPos + 1;
+ $haveClose = false;
+ } else {
+ $attrEnd = $tagEndPos;
+ $shortEnd = false;
+ // Find closing tag
+ if ( preg_match( "/<\/" . preg_quote( $name, '/' ) . "\s*>/i",
+ $text, $matches, PREG_OFFSET_CAPTURE, $tagEndPos + 1 ) )
+ {
+ $inner = strval( substr( $text, $tagEndPos + 1, $matches[0][1] - $tagEndPos - 1 ) );
+ $i = intval( $matches[0][1] ) + strlen( $matches[0][0] );
+ $close = strval( $matches[0][0] );
+ $haveClose = true;
+ } else {
+ // No end tag -- let it run out to the end of the text.
+ $inner = strval( substr( $text, $tagEndPos + 1 ) );
+ $i = strlen( $text );
+ $haveClose = false;
+ }
+ }
+ // <includeonly> and <noinclude> just become <ignore> tags
+ if ( in_array( $lowerName, $ignoredElements ) ) {
+ $accum->addNodeWithText( 'ignore', strval( substr( $text, $tagStartPos, $i - $tagStartPos ) ) );
+ continue;
+ }
+
+ if ( $attrEnd <= $attrStart ) {
+ $attr = '';
+ } else {
+ // Note that the attr element contains the whitespace between name and attribute,
+ // this is necessary for precise reconstruction during pre-save transform.
+ $attr = strval( substr( $text, $attrStart, $attrEnd - $attrStart ) );
+ }
+
+ $extNode = new PPNode_HipHop_Tree( 'ext' );
+ $extNode->addChild( PPNode_HipHop_Tree::newWithText( 'name', $name ) );
+ $extNode->addChild( PPNode_HipHop_Tree::newWithText( 'attr', $attr ) );
+ if ( !$shortEnd ) {
+ $extNode->addChild( PPNode_HipHop_Tree::newWithText( 'inner', $inner ) );
+ }
+ if ( $haveClose ) {
+ $extNode->addChild( PPNode_HipHop_Tree::newWithText( 'close', $close ) );
+ }
+ $accum->addNode( $extNode );
+ }
+
+ elseif ( $found === 'line-start' ) {
+ // Is this the start of a heading?
+ // Line break belongs before the heading element in any case
+ if ( $fakeLineStart ) {
+ $fakeLineStart = false;
+ } else {
+ $accum->addLiteral( $curChar );
+ $i++;
+ }
+
+ $count = intval( strspn( $text, '=', $i, 6 ) );
+ if ( $count == 1 && $stackFlags['findEquals'] ) {
+ // DWIM: This looks kind of like a name/value separator
+ // Let's let the equals handler have it and break the potential heading
+ // This is heuristic, but AFAICT the methods for completely correct disambiguation are very complex.
+ } elseif ( $count > 0 ) {
+ $partData = array(
+ 'open' => "\n",
+ 'close' => "\n",
+ 'parts' => array( new PPDPart_HipHop( str_repeat( '=', $count ) ) ),
+ 'startPos' => $i,
+ 'count' => $count );
+ $stack->push( $partData );
+ $accum = $stack->getAccum();
+ $stackFlags = $stack->getFlags();
+ $i += $count;
+ }
+ } elseif ( $found === 'line-end' ) {
+ $piece = $stack->getTop();
+ // A heading must be open, otherwise \n wouldn't have been in the search list
+ assert( $piece->open === "\n" );
+ $part = $piece->getCurrentPart();
+ // Search back through the input to see if it has a proper close
+ // Do this using the reversed string since the other solutions (end anchor, etc.) are inefficient
+ $wsLength = intval( strspn( $revText, " \t", strlen( $text ) - $i ) );
+ $searchStart = $i - $wsLength;
+ if ( isset( $part->commentEnd ) && $searchStart - 1 == $part->commentEnd ) {
+ // Comment found at line end
+ // Search for equals signs before the comment
+ $searchStart = intval( $part->visualEnd );
+ $searchStart -= intval( strspn( $revText, " \t", strlen( $text ) - $searchStart ) );
+ }
+ $count = intval( $piece->count );
+ $equalsLength = intval( strspn( $revText, '=', strlen( $text ) - $searchStart ) );
+ $isTreeNode = false;
+ $resultAccum = $accum;
+ if ( $equalsLength > 0 ) {
+ if ( $searchStart - $equalsLength == $piece->startPos ) {
+ // This is just a single string of equals signs on its own line
+ // Replicate the doHeadings behaviour /={count}(.+)={count}/
+ // First find out how many equals signs there really are (don't stop at 6)
+ $count = $equalsLength;
+ if ( $count < 3 ) {
+ $count = 0;
+ } else {
+ $count = intval( ( $count - 1 ) / 2 );
+ if ( $count > 6 ) {
+ $count = 6;
+ }
+ }
+ } else {
+ if ( $count > $equalsLength ) {
+ $count = $equalsLength;
+ }
+ }
+ if ( $count > 0 ) {
+ // Normal match, output <h>
+ $tree = new PPNode_HipHop_Tree( 'possible-h' );
+ $tree->addChild( new PPNode_HipHop_Attr( 'level', $count ) );
+ $tree->addChild( new PPNode_HipHop_Attr( 'i', $headingIndex++ ) );
+ $tree->lastChild->nextSibling = $accum->firstNode;
+ $tree->lastChild = $accum->lastNode;
+ $isTreeNode = true;
+ } else {
+ // Single equals sign on its own line, count=0
+ // Output $resultAccum
+ }
+ } else {
+ // No match, no <h>, just pass down the inner text
+ // Output $resultAccum
+ }
+ // Unwind the stack
+ $stack->pop();
+ $accum = $stack->getAccum();
+ $stackFlags = $stack->getFlags();
+
+ // Append the result to the enclosing accumulator
+ if ( $isTreeNode ) {
+ $accum->addNode( $tree );
+ } else {
+ $accum->addAccum( $resultAccum );
+ }
+ // Note that we do NOT increment the input pointer.
+ // This is because the closing linebreak could be the opening linebreak of
+ // another heading. Infinite loops are avoided because the next iteration MUST
+ // hit the heading open case above, which unconditionally increments the
+ // input pointer.
+ } elseif ( $found === 'open' ) {
+ # count opening brace characters
+ $count = intval( strspn( $text, $curChar, $i ) );
+
+ # we need to add to stack only if opening brace count is enough for one of the rules
+ if ( $count >= $rule['min'] ) {
+ # Add it to the stack
+ $partData = array(
+ 'open' => $curChar,
+ 'close' => $rule['end'],
+ 'count' => $count,
+ 'lineStart' => ($i == 0 || $text[$i-1] === "\n"),
+ );
+
+ $stack->push( $partData );
+ $accum = $stack->getAccum();
+ $stackFlags = $stack->getFlags();
+ } else {
+ # Add literal brace(s)
+ $accum->addLiteral( str_repeat( $curChar, $count ) );
+ }
+ $i += $count;
+ } elseif ( $found === 'close' ) {
+ $piece = $stack->getTop();
+ # lets check if there are enough characters for closing brace
+ $maxCount = intval( $piece->count );
+ $count = intval( strspn( $text, $curChar, $i, $maxCount ) );
+
+ # check for maximum matching characters (if there are 5 closing
+ # characters, we will probably need only 3 - depending on the rules)
+ $rule = $rules[$piece->open];
+ if ( $count > $rule['max'] ) {
+ # The specified maximum exists in the callback array, unless the caller
+ # has made an error
+ $matchingCount = intval( $rule['max'] );
+ } else {
+ # Count is less than the maximum
+ # Skip any gaps in the callback array to find the true largest match
+ # Need to use array_key_exists not isset because the callback can be null
+ $matchingCount = $count;
+ while ( $matchingCount > 0 && !array_key_exists( $matchingCount, $rule['names'] ) ) {
+ --$matchingCount;
+ }
+ }
+
+ if ($matchingCount <= 0) {
+ # No matching element found in callback array
+ # Output a literal closing brace and continue
+ $accum->addLiteral( str_repeat( $curChar, $count ) );
+ $i += $count;
+ continue;
+ }
+ $name = strval( $rule['names'][$matchingCount] );
+ $isTreeNode = false;
+ if ( $name === 'LITERAL' ) {
+ // No element, just literal text
+ $resultAccum = $piece->breakSyntax( $matchingCount );
+ $resultAccum->addLiteral( str_repeat( $rule['end'], $matchingCount ) );
+ } else {
+ # Create XML element
+ # Note: $parts is already XML, does not need to be encoded further
+ $isTreeNode = true;
+ $parts = $piece->parts;
+ $titleAccum = PPDAccum_HipHop::cast( $parts[0]->out );
+ unset( $parts[0] );
+
+ $tree = new PPNode_HipHop_Tree( $name );
+
+ # The invocation is at the start of the line if lineStart is set in
+ # the stack, and all opening brackets are used up.
+ if ( $maxCount == $matchingCount && !empty( $piece->lineStart ) ) {
+ $tree->addChild( new PPNode_HipHop_Attr( 'lineStart', 1 ) );
+ }
+ $titleNode = new PPNode_HipHop_Tree( 'title' );
+ $titleNode->firstChild = $titleAccum->firstNode;
+ $titleNode->lastChild = $titleAccum->lastNode;
+ $tree->addChild( $titleNode );
+ $argIndex = 1;
+ foreach ( $parts as $variantPart ) {
+ $part = PPDPart_HipHop::cast( $variantPart );
+ if ( isset( $part->eqpos ) ) {
+ // Find equals
+ $lastNode = false;
+ for ( $node = $part->out->firstNode; $node; $node = $node->nextSibling ) {
+ if ( $node === $part->eqpos ) {
+ break;
+ }
+ $lastNode = $node;
+ }
+ if ( !$node ) {
+ throw new MWException( __METHOD__. ': eqpos not found' );
+ }
+ if ( $node->name !== 'equals' ) {
+ throw new MWException( __METHOD__ .': eqpos is not equals' );
+ }
+ $equalsNode = $node;
+
+ // Construct name node
+ $nameNode = new PPNode_HipHop_Tree( 'name' );
+ if ( $lastNode !== false ) {
+ $lastNode->nextSibling = false;
+ $nameNode->firstChild = $part->out->firstNode;
+ $nameNode->lastChild = $lastNode;
+ }
+
+ // Construct value node
+ $valueNode = new PPNode_HipHop_Tree( 'value' );
+ if ( $equalsNode->nextSibling !== false ) {
+ $valueNode->firstChild = $equalsNode->nextSibling;
+ $valueNode->lastChild = $part->out->lastNode;
+ }
+ $partNode = new PPNode_HipHop_Tree( 'part' );
+ $partNode->addChild( $nameNode );
+ $partNode->addChild( $equalsNode->firstChild );
+ $partNode->addChild( $valueNode );
+ $tree->addChild( $partNode );
+ } else {
+ $partNode = new PPNode_HipHop_Tree( 'part' );
+ $nameNode = new PPNode_HipHop_Tree( 'name' );
+ $nameNode->addChild( new PPNode_HipHop_Attr( 'index', $argIndex++ ) );
+ $valueNode = new PPNode_HipHop_Tree( 'value' );
+ $valueNode->firstChild = $part->out->firstNode;
+ $valueNode->lastChild = $part->out->lastNode;
+ $partNode->addChild( $nameNode );
+ $partNode->addChild( $valueNode );
+ $tree->addChild( $partNode );
+ }
+ }
+ }
+
+ # Advance input pointer
+ $i += $matchingCount;
+
+ # Unwind the stack
+ $stack->pop();
+ $accum = $stack->getAccum();
+
+ # Re-add the old stack element if it still has unmatched opening characters remaining
+ if ($matchingCount < $piece->count) {
+ $piece->parts = array( new PPDPart_HipHop );
+ $piece->count -= $matchingCount;
+ # do we still qualify for any callback with remaining count?
+ $names = $rules[$piece->open]['names'];
+ $skippedBraces = 0;
+ $enclosingAccum = $accum;
+ while ( $piece->count ) {
+ if ( array_key_exists( $piece->count, $names ) ) {
+ $stack->push( $piece );
+ $accum = $stack->getAccum();
+ break;
+ }
+ --$piece->count;
+ $skippedBraces ++;
+ }
+ $enclosingAccum->addLiteral( str_repeat( $piece->open, $skippedBraces ) );
+ }
+
+ $stackFlags = $stack->getFlags();
+
+ # Add XML element to the enclosing accumulator
+ if ( $isTreeNode ) {
+ $accum->addNode( $tree );
+ } else {
+ $accum->addAccum( $resultAccum );
+ }
+ } elseif ( $found === 'pipe' ) {
+ $stackFlags['findEquals'] = true; // shortcut for getFlags()
+ $stack->addPart();
+ $accum = $stack->getAccum();
+ ++$i;
+ } elseif ( $found === 'equals' ) {
+ $stackFlags['findEquals'] = false; // shortcut for getFlags()
+ $accum->addNodeWithText( 'equals', '=' );
+ $stack->getCurrentPart()->eqpos = $accum->lastNode;
+ ++$i;
+ }
+ }
+
+ # Output any remaining unclosed brackets
+ foreach ( $stack->stack as $variantPiece ) {
+ $piece = PPDStackElement_HipHop::cast( $variantPiece );
+ $stack->rootAccum->addAccum( $piece->breakSyntax() );
+ }
+
+ # Enable top-level headings
+ for ( $node = $stack->rootAccum->firstNode; $node; $node = $node->nextSibling ) {
+ if ( isset( $node->name ) && $node->name === 'possible-h' ) {
+ $node->name = 'h';
+ }
+ }
+
+ $rootNode = new PPNode_HipHop_Tree( 'root' );
+ $rootNode->firstChild = $stack->rootAccum->firstNode;
+ $rootNode->lastChild = $stack->rootAccum->lastNode;
+
+ // Cache
+ if ($cacheable) {
+ $cacheValue = sprintf( "%08d", self::CACHE_VERSION ) . serialize( $rootNode );
+ $wgMemc->set( $cacheKey, $cacheValue, 86400 );
+ wfProfileOut( __METHOD__.'-cache-miss' );
+ wfProfileOut( __METHOD__.'-cacheable' );
+ wfDebugLog( "Preprocessor", "Saved preprocessor Hash to memcached (key $cacheKey)" );
+ }
+
+ wfProfileOut( __METHOD__ );
+ return $rootNode;
+ }
+}
+
+
+
+/**
+ * Stack class to help Preprocessor::preprocessToObj()
+ * @ingroup Parser
+ */
+class PPDStack_HipHop {
+ var $stack, $rootAccum;
+
+ /**
+ * @var PPDStack
+ */
+ var $top;
+ var $out;
+
+ static $false = false;
+
+ function __construct() {
+ $this->stack = array();
+ $this->top = false;
+ $this->rootAccum = new PPDAccum_HipHop;
+ $this->accum = $this->rootAccum;
+ }
+
+ /**
+ * @return int
+ */
+ function count() {
+ return count( $this->stack );
+ }
+
+ function getAccum() {
+ return PPDAccum_HipHop::cast( $this->accum );
+ }
+
+ function getCurrentPart() {
+ return $this->getTop()->getCurrentPart();
+ }
+
+ function getTop() {
+ return PPDStackElement_HipHop::cast( $this->top );
+ }
+
+ function push( $data ) {
+ if ( $data instanceof PPDStackElement_HipHop ) {
+ $this->stack[] = $data;
+ } else {
+ $this->stack[] = new PPDStackElement_HipHop( $data );
+ }
+ $this->top = $this->stack[ count( $this->stack ) - 1 ];
+ $this->accum = $this->top->getAccum();
+ }
+
+ function pop() {
+ if ( !count( $this->stack ) ) {
+ throw new MWException( __METHOD__.': no elements remaining' );
+ }
+ $temp = array_pop( $this->stack );
+
+ if ( count( $this->stack ) ) {
+ $this->top = $this->stack[ count( $this->stack ) - 1 ];
+ $this->accum = $this->top->getAccum();
+ } else {
+ $this->top = self::$false;
+ $this->accum = $this->rootAccum;
+ }
+ return $temp;
+ }
+
+ function addPart( $s = '' ) {
+ $this->top->addPart( $s );
+ $this->accum = $this->top->getAccum();
+ }
+
+ /**
+ * @return array
+ */
+ function getFlags() {
+ if ( !count( $this->stack ) ) {
+ return array(
+ 'findEquals' => false,
+ 'findPipe' => false,
+ 'inHeading' => false,
+ );
+ } else {
+ return $this->top->getFlags();
+ }
+ }
+}
+
+/**
+ * @ingroup Parser
+ */
+class PPDStackElement_HipHop {
+ var $open, // Opening character (\n for heading)
+ $close, // Matching closing character
+ $count, // Number of opening characters found (number of "=" for heading)
+ $parts, // Array of PPDPart objects describing pipe-separated parts.
+ $lineStart; // True if the open char appeared at the start of the input line. Not set for headings.
+
+ static function cast( PPDStackElement_HipHop $obj ) {
+ return $obj;
+ }
+
+ function __construct( $data = array() ) {
+ $this->parts = array( new PPDPart_HipHop );
+
+ foreach ( $data as $name => $value ) {
+ $this->$name = $value;
+ }
+ }
+
+ function getAccum() {
+ return PPDAccum_HipHop::cast( $this->parts[count($this->parts) - 1]->out );
+ }
+
+ function addPart( $s = '' ) {
+ $this->parts[] = new PPDPart_HipHop( $s );
+ }
+
+ function getCurrentPart() {
+ return PPDPart_HipHop::cast( $this->parts[count($this->parts) - 1] );
+ }
+
+ /**
+ * @return array
+ */
+ function getFlags() {
+ $partCount = count( $this->parts );
+ $findPipe = $this->open !== "\n" && $this->open !== '[';
+ return array(
+ 'findPipe' => $findPipe,
+ 'findEquals' => $findPipe && $partCount > 1 && !isset( $this->parts[$partCount - 1]->eqpos ),
+ 'inHeading' => $this->open === "\n",
+ );
+ }
+
+ /**
+ * Get the accumulator that would result if the close is not found.
+ *
+ * @return PPDAccum_HipHop
+ */
+ function breakSyntax( $openingCount = false ) {
+ if ( $this->open === "\n" ) {
+ $accum = PPDAccum_HipHop::cast( $this->parts[0]->out );
+ } else {
+ if ( $openingCount === false ) {
+ $openingCount = $this->count;
+ }
+ $accum = new PPDAccum_HipHop;
+ $accum->addLiteral( str_repeat( $this->open, $openingCount ) );
+ $first = true;
+ foreach ( $this->parts as $part ) {
+ if ( $first ) {
+ $first = false;
+ } else {
+ $accum->addLiteral( '|' );
+ }
+ $accum->addAccum( $part->out );
+ }
+ }
+ return $accum;
+ }
+}
+
+/**
+ * @ingroup Parser
+ */
+class PPDPart_HipHop {
+ var $out; // Output accumulator object
+
+ // Optional member variables:
+ // eqpos Position of equals sign in output accumulator
+ // commentEnd Past-the-end input pointer for the last comment encountered
+ // visualEnd Past-the-end input pointer for the end of the accumulator minus comments
+
+ function __construct( $out = '' ) {
+ $this->out = new PPDAccum_HipHop;
+ if ( $out !== '' ) {
+ $this->out->addLiteral( $out );
+ }
+ }
+
+ static function cast( PPDPart_HipHop $obj ) {
+ return $obj;
+ }
+}
+
+/**
+ * @ingroup Parser
+ */
+class PPDAccum_HipHop {
+ var $firstNode, $lastNode;
+
+ function __construct() {
+ $this->firstNode = $this->lastNode = false;
+ }
+
+ static function cast( PPDAccum_HipHop $obj ) {
+ return $obj;
+ }
+
+ /**
+ * Append a string literal
+ */
+ function addLiteral( string $s ) {
+ if ( $this->lastNode === false ) {
+ $this->firstNode = $this->lastNode = new PPNode_HipHop_Text( $s );
+ } elseif ( $this->lastNode instanceof PPNode_HipHop_Text ) {
+ $this->lastNode->value .= $s;
+ } else {
+ $this->lastNode->nextSibling = new PPNode_HipHop_Text( $s );
+ $this->lastNode = $this->lastNode->nextSibling;
+ }
+ }
+
+ /**
+ * Append a PPNode
+ */
+ function addNode( PPNode $node ) {
+ if ( $this->lastNode === false ) {
+ $this->firstNode = $this->lastNode = $node;
+ } else {
+ $this->lastNode->nextSibling = $node;
+ $this->lastNode = $node;
+ }
+ }
+
+ /**
+ * Append a tree node with text contents
+ */
+ function addNodeWithText( string $name, string $value ) {
+ $node = PPNode_HipHop_Tree::newWithText( $name, $value );
+ $this->addNode( $node );
+ }
+
+ /**
+ * Append a PPDAccum_HipHop
+ * Takes over ownership of the nodes in the source argument. These nodes may
+ * subsequently be modified, especially nextSibling.
+ */
+ function addAccum( PPDAccum_HipHop $accum ) {
+ if ( $accum->lastNode === false ) {
+ // nothing to add
+ } elseif ( $this->lastNode === false ) {
+ $this->firstNode = $accum->firstNode;
+ $this->lastNode = $accum->lastNode;
+ } else {
+ $this->lastNode->nextSibling = $accum->firstNode;
+ $this->lastNode = $accum->lastNode;
+ }
+ }
+}
+
+/**
+ * An expansion frame, used as a context to expand the result of preprocessToObj()
+ * @ingroup Parser
+ */
+class PPFrame_HipHop implements PPFrame {
+
+ /**
+ * @var Parser
+ */
+ var $parser;
+
+ /**
+ * @var Preprocessor
+ */
+ var $preprocessor;
+
+ /**
+ * @var Title
+ */
+ var $title;
+ var $titleCache;
+
+ /**
+ * Hashtable listing templates which are disallowed for expansion in this frame,
+ * having been encountered previously in parent frames.
+ */
+ var $loopCheckHash;
+
+ /**
+ * Recursion depth of this frame, top = 0
+ * Note that this is NOT the same as expansion depth in expand()
+ */
+ var $depth;
+
+
+ /**
+ * Construct a new preprocessor frame.
+ * @param $preprocessor Preprocessor: the parent preprocessor
+ */
+ function __construct( $preprocessor ) {
+ $this->preprocessor = $preprocessor;
+ $this->parser = $preprocessor->parser;
+ $this->title = $this->parser->mTitle;
+ $this->titleCache = array( $this->title ? $this->title->getPrefixedDBkey() : false );
+ $this->loopCheckHash = array();
+ $this->depth = 0;
+ }
+
+ /**
+ * Create a new child frame
+ * $args is optionally a multi-root PPNode or array containing the template arguments
+ *
+ * @param $args PPNode_HipHop_Array|array
+ * @param $title Title|false
+ *
+ * @return PPTemplateFrame_HipHop
+ */
+ function newChild( $args = false, $title = false ) {
+ $namedArgs = array();
+ $numberedArgs = array();
+ if ( $title === false ) {
+ $title = $this->title;
+ }
+ if ( $args !== false ) {
+ if ( $args instanceof PPNode_HipHop_Array ) {
+ $args = $args->value;
+ } elseif ( !is_array( $args ) ) {
+ throw new MWException( __METHOD__ . ': $args must be array or PPNode_HipHop_Array' );
+ }
+ foreach ( $args as $arg ) {
+ $bits = $arg->splitArg();
+ if ( $bits['index'] !== '' ) {
+ // Numbered parameter
+ $numberedArgs[$bits['index']] = $bits['value'];
+ unset( $namedArgs[$bits['index']] );
+ } else {
+ // Named parameter
+ $name = trim( $this->expand( $bits['name'], PPFrame::STRIP_COMMENTS ) );
+ $namedArgs[$name] = $bits['value'];
+ unset( $numberedArgs[$name] );
+ }
+ }
+ }
+ return new PPTemplateFrame_HipHop( $this->preprocessor, $this, $numberedArgs, $namedArgs, $title );
+ }
+
+ /**
+ * @throws MWException
+ * @param $root
+ * @param $flags int
+ * @return string
+ */
+ function expand( $root, $flags = 0 ) {
+ static $expansionDepth = 0;
+ if ( is_string( $root ) ) {
+ return $root;
+ }
+
+ if ( ++$this->parser->mPPNodeCount > $this->parser->mOptions->getMaxPPNodeCount() ) {
+ return '<span class="error">Node-count limit exceeded</span>';
+ }
+ if ( $expansionDepth > $this->parser->mOptions->getMaxPPExpandDepth() ) {
+ return '<span class="error">Expansion depth limit exceeded</span>';
+ }
+ ++$expansionDepth;
+
+ $outStack = array( '', '' );
+ $iteratorStack = array( false, $root );
+ $indexStack = array( 0, 0 );
+
+ while ( count( $iteratorStack ) > 1 ) {
+ $level = count( $outStack ) - 1;
+ $iteratorNode =& $iteratorStack[ $level ];
+ $out =& $outStack[$level];
+ $index =& $indexStack[$level];
+
+ if ( is_array( $iteratorNode ) ) {
+ if ( $index >= count( $iteratorNode ) ) {
+ // All done with this iterator
+ $iteratorStack[$level] = false;
+ $contextNode = false;
+ } else {
+ $contextNode = $iteratorNode[$index];
+ $index++;
+ }
+ } elseif ( $iteratorNode instanceof PPNode_HipHop_Array ) {
+ if ( $index >= $iteratorNode->getLength() ) {
+ // All done with this iterator
+ $iteratorStack[$level] = false;
+ $contextNode = false;
+ } else {
+ $contextNode = $iteratorNode->item( $index );
+ $index++;
+ }
+ } else {
+ // Copy to $contextNode and then delete from iterator stack,
+ // because this is not an iterator but we do have to execute it once
+ $contextNode = $iteratorStack[$level];
+ $iteratorStack[$level] = false;
+ }
+
+ $newIterator = false;
+
+ if ( $contextNode === false ) {
+ // nothing to do
+ } elseif ( is_string( $contextNode ) ) {
+ $out .= $contextNode;
+ } elseif ( is_array( $contextNode ) || $contextNode instanceof PPNode_HipHop_Array ) {
+ $newIterator = $contextNode;
+ } elseif ( $contextNode instanceof PPNode_HipHop_Attr ) {
+ // No output
+ } elseif ( $contextNode instanceof PPNode_HipHop_Text ) {
+ $out .= $contextNode->value;
+ } elseif ( $contextNode instanceof PPNode_HipHop_Tree ) {
+ if ( $contextNode->name === 'template' ) {
+ # Double-brace expansion
+ $bits = $contextNode->splitTemplate();
+ if ( $flags & PPFrame::NO_TEMPLATES ) {
+ $newIterator = $this->virtualBracketedImplode( '{{', '|', '}}', $bits['title'], $bits['parts'] );
+ } else {
+ $ret = $this->parser->braceSubstitution( $bits, $this );
+ if ( isset( $ret['object'] ) ) {
+ $newIterator = $ret['object'];
+ } else {
+ $out .= $ret['text'];
+ }
+ }
+ } elseif ( $contextNode->name === 'tplarg' ) {
+ # Triple-brace expansion
+ $bits = $contextNode->splitTemplate();
+ if ( $flags & PPFrame::NO_ARGS ) {
+ $newIterator = $this->virtualBracketedImplode( '{{{', '|', '}}}', $bits['title'], $bits['parts'] );
+ } else {
+ $ret = $this->parser->argSubstitution( $bits, $this );
+ if ( isset( $ret['object'] ) ) {
+ $newIterator = $ret['object'];
+ } else {
+ $out .= $ret['text'];
+ }
+ }
+ } elseif ( $contextNode->name === 'comment' ) {
+ # HTML-style comment
+ # Remove it in HTML, pre+remove and STRIP_COMMENTS modes
+ if ( $this->parser->ot['html']
+ || ( $this->parser->ot['pre'] && $this->parser->mOptions->getRemoveComments() )
+ || ( $flags & PPFrame::STRIP_COMMENTS ) )
+ {
+ $out .= '';
+ }
+ # Add a strip marker in PST mode so that pstPass2() can run some old-fashioned regexes on the result
+ # Not in RECOVER_COMMENTS mode (extractSections) though
+ elseif ( $this->parser->ot['wiki'] && ! ( $flags & PPFrame::RECOVER_COMMENTS ) ) {
+ $out .= $this->parser->insertStripItem( $contextNode->firstChild->value );
+ }
+ # Recover the literal comment in RECOVER_COMMENTS and pre+no-remove
+ else {
+ $out .= $contextNode->firstChild->value;
+ }
+ } elseif ( $contextNode->name === 'ignore' ) {
+ # Output suppression used by <includeonly> etc.
+ # OT_WIKI will only respect <ignore> in substed templates.
+ # The other output types respect it unless NO_IGNORE is set.
+ # extractSections() sets NO_IGNORE and so never respects it.
+ if ( ( !isset( $this->parent ) && $this->parser->ot['wiki'] ) || ( $flags & PPFrame::NO_IGNORE ) ) {
+ $out .= $contextNode->firstChild->value;
+ } else {
+ //$out .= '';
+ }
+ } elseif ( $contextNode->name === 'ext' ) {
+ # Extension tag
+ $bits = $contextNode->splitExt() + array( 'attr' => null, 'inner' => null, 'close' => null );
+ $out .= $this->parser->extensionSubstitution( $bits, $this );
+ } elseif ( $contextNode->name === 'h' ) {
+ # Heading
+ if ( $this->parser->ot['html'] ) {
+ # Expand immediately and insert heading index marker
+ $s = '';
+ for ( $node = $contextNode->firstChild; $node; $node = $node->nextSibling ) {
+ $s .= $this->expand( $node, $flags );
+ }
+
+ $bits = $contextNode->splitHeading();
+ $titleText = $this->title->getPrefixedDBkey();
+ $this->parser->mHeadings[] = array( $titleText, $bits['i'] );
+ $serial = count( $this->parser->mHeadings ) - 1;
+ $marker = "{$this->parser->mUniqPrefix}-h-$serial-" . Parser::MARKER_SUFFIX;
+ $s = substr( $s, 0, $bits['level'] ) . $marker . substr( $s, $bits['level'] );
+ $this->parser->mStripState->addGeneral( $marker, '' );
+ $out .= $s;
+ } else {
+ # Expand in virtual stack
+ $newIterator = $contextNode->getChildren();
+ }
+ } else {
+ # Generic recursive expansion
+ $newIterator = $contextNode->getChildren();
+ }
+ } else {
+ throw new MWException( __METHOD__.': Invalid parameter type' );
+ }
+
+ if ( $newIterator !== false ) {
+ $outStack[] = '';
+ $iteratorStack[] = $newIterator;
+ $indexStack[] = 0;
+ } elseif ( $iteratorStack[$level] === false ) {
+ // Return accumulated value to parent
+ // With tail recursion
+ while ( $iteratorStack[$level] === false && $level > 0 ) {
+ $outStack[$level - 1] .= $out;
+ array_pop( $outStack );
+ array_pop( $iteratorStack );
+ array_pop( $indexStack );
+ $level--;
+ }
+ }
+ }
+ --$expansionDepth;
+ return $outStack[0];
+ }
+
+ /**
+ * @param $sep
+ * @param $flags
+ * @return string
+ */
+ function implodeWithFlags( $sep, $flags /*, ... */ ) {
+ $args = array_slice( func_get_args(), 2 );
+
+ $first = true;
+ $s = '';
+ foreach ( $args as $root ) {
+ if ( $root instanceof PPNode_HipHop_Array ) {
+ $root = $root->value;
+ }
+ if ( !is_array( $root ) ) {
+ $root = array( $root );
+ }
+ foreach ( $root as $node ) {
+ if ( $first ) {
+ $first = false;
+ } else {
+ $s .= $sep;
+ }
+ $s .= $this->expand( $node, $flags );
+ }
+ }
+ return $s;
+ }
+
+ /**
+ * Implode with no flags specified
+ * This previously called implodeWithFlags but has now been inlined to reduce stack depth
+ * @return string
+ */
+ function implode( $sep /*, ... */ ) {
+ $args = array_slice( func_get_args(), 1 );
+
+ $first = true;
+ $s = '';
+ foreach ( $args as $root ) {
+ if ( $root instanceof PPNode_HipHop_Array ) {
+ $root = $root->value;
+ }
+ if ( !is_array( $root ) ) {
+ $root = array( $root );
+ }
+ foreach ( $root as $node ) {
+ if ( $first ) {
+ $first = false;
+ } else {
+ $s .= $sep;
+ }
+ $s .= $this->expand( $node );
+ }
+ }
+ return $s;
+ }
+
+ /**
+ * Makes an object that, when expand()ed, will be the same as one obtained
+ * with implode()
+ *
+ * @return PPNode_HipHop_Array
+ */
+ function virtualImplode( $sep /*, ... */ ) {
+ $args = array_slice( func_get_args(), 1 );
+ $out = array();
+ $first = true;
+
+ foreach ( $args as $root ) {
+ if ( $root instanceof PPNode_HipHop_Array ) {
+ $root = $root->value;
+ }
+ if ( !is_array( $root ) ) {
+ $root = array( $root );
+ }
+ foreach ( $root as $node ) {
+ if ( $first ) {
+ $first = false;
+ } else {
+ $out[] = $sep;
+ }
+ $out[] = $node;
+ }
+ }
+ return new PPNode_HipHop_Array( $out );
+ }
+
+ /**
+ * Virtual implode with brackets
+ *
+ * @return PPNode_HipHop_Array
+ */
+ function virtualBracketedImplode( $start, $sep, $end /*, ... */ ) {
+ $args = array_slice( func_get_args(), 3 );
+ $out = array( $start );
+ $first = true;
+
+ foreach ( $args as $root ) {
+ if ( $root instanceof PPNode_HipHop_Array ) {
+ $root = $root->value;
+ }
+ if ( !is_array( $root ) ) {
+ $root = array( $root );
+ }
+ foreach ( $root as $node ) {
+ if ( $first ) {
+ $first = false;
+ } else {
+ $out[] = $sep;
+ }
+ $out[] = $node;
+ }
+ }
+ $out[] = $end;
+ return new PPNode_HipHop_Array( $out );
+ }
+
+ function __toString() {
+ return 'frame{}';
+ }
+
+ /**
+ * @param $level bool
+ * @return array|bool|String
+ */
+ function getPDBK( $level = false ) {
+ if ( $level === false ) {
+ return $this->title->getPrefixedDBkey();
+ } else {
+ return isset( $this->titleCache[$level] ) ? $this->titleCache[$level] : false;
+ }
+ }
+
+ /**
+ * @return array
+ */
+ function getArguments() {
+ return array();
+ }
+
+ /**
+ * @return array
+ */
+ function getNumberedArguments() {
+ return array();
+ }
+
+ /**
+ * @return array
+ */
+ function getNamedArguments() {
+ return array();
+ }
+
+ /**
+ * Returns true if there are no arguments in this frame
+ *
+ * @return bool
+ */
+ function isEmpty() {
+ return true;
+ }
+
+ /**
+ * @param $name
+ * @return bool
+ */
+ function getArgument( $name ) {
+ return false;
+ }
+
+ /**
+ * Returns true if the infinite loop check is OK, false if a loop is detected
+ *
+ * @param $title Title
+ *
+ * @return bool
+ */
+ function loopCheck( $title ) {
+ return !isset( $this->loopCheckHash[$title->getPrefixedDBkey()] );
+ }
+
+ /**
+ * Return true if the frame is a template frame
+ *
+ * @return bool
+ */
+ function isTemplate() {
+ return false;
+ }
+}
+
+/**
+ * Expansion frame with template arguments
+ * @ingroup Parser
+ */
+class PPTemplateFrame_HipHop extends PPFrame_HipHop {
+ var $numberedArgs, $namedArgs, $parent;
+ var $numberedExpansionCache, $namedExpansionCache;
+
+ /**
+ * @param $preprocessor
+ * @param $parent
+ * @param $numberedArgs array
+ * @param $namedArgs array
+ * @param $title Title
+ */
+ function __construct( $preprocessor, $parent = false, $numberedArgs = array(), $namedArgs = array(), $title = false ) {
+ parent::__construct( $preprocessor );
+
+ $this->parent = $parent;
+ $this->numberedArgs = $numberedArgs;
+ $this->namedArgs = $namedArgs;
+ $this->title = $title;
+ $pdbk = $title ? $title->getPrefixedDBkey() : false;
+ $this->titleCache = $parent->titleCache;
+ $this->titleCache[] = $pdbk;
+ $this->loopCheckHash = /*clone*/ $parent->loopCheckHash;
+ if ( $pdbk !== false ) {
+ $this->loopCheckHash[$pdbk] = true;
+ }
+ $this->depth = $parent->depth + 1;
+ $this->numberedExpansionCache = $this->namedExpansionCache = array();
+ }
+
+ function __toString() {
+ $s = 'tplframe{';
+ $first = true;
+ $args = $this->numberedArgs + $this->namedArgs;
+ foreach ( $args as $name => $value ) {
+ if ( $first ) {
+ $first = false;
+ } else {
+ $s .= ', ';
+ }
+ $s .= "\"$name\":\"" .
+ str_replace( '"', '\\"', $value->__toString() ) . '"';
+ }
+ $s .= '}';
+ return $s;
+ }
+ /**
+ * Returns true if there are no arguments in this frame
+ *
+ * @return bool
+ */
+ function isEmpty() {
+ return !count( $this->numberedArgs ) && !count( $this->namedArgs );
+ }
+
+ /**
+ * @return array
+ */
+ function getArguments() {
+ $arguments = array();
+ foreach ( array_merge(
+ array_keys($this->numberedArgs),
+ array_keys($this->namedArgs)) as $key ) {
+ $arguments[$key] = $this->getArgument($key);
+ }
+ return $arguments;
+ }
+
+ /**
+ * @return array
+ */
+ function getNumberedArguments() {
+ $arguments = array();
+ foreach ( array_keys($this->numberedArgs) as $key ) {
+ $arguments[$key] = $this->getArgument($key);
+ }
+ return $arguments;
+ }
+
+ /**
+ * @return array
+ */
+ function getNamedArguments() {
+ $arguments = array();
+ foreach ( array_keys($this->namedArgs) as $key ) {
+ $arguments[$key] = $this->getArgument($key);
+ }
+ return $arguments;
+ }
+
+ /**
+ * @param $index
+ * @return array|bool
+ */
+ function getNumberedArgument( $index ) {
+ if ( !isset( $this->numberedArgs[$index] ) ) {
+ return false;
+ }
+ if ( !isset( $this->numberedExpansionCache[$index] ) ) {
+ # No trimming for unnamed arguments
+ $this->numberedExpansionCache[$index] = $this->parent->expand( $this->numberedArgs[$index], PPFrame::STRIP_COMMENTS );
+ }
+ return $this->numberedExpansionCache[$index];
+ }
+
+ /**
+ * @param $name
+ * @return bool
+ */
+ function getNamedArgument( $name ) {
+ if ( !isset( $this->namedArgs[$name] ) ) {
+ return false;
+ }
+ if ( !isset( $this->namedExpansionCache[$name] ) ) {
+ # Trim named arguments post-expand, for backwards compatibility
+ $this->namedExpansionCache[$name] = trim(
+ $this->parent->expand( $this->namedArgs[$name], PPFrame::STRIP_COMMENTS ) );
+ }
+ return $this->namedExpansionCache[$name];
+ }
+
+ /**
+ * @param $name
+ * @return array|bool
+ */
+ function getArgument( $name ) {
+ $text = $this->getNumberedArgument( $name );
+ if ( $text === false ) {
+ $text = $this->getNamedArgument( $name );
+ }
+ return $text;
+ }
+
+ /**
+ * Return true if the frame is a template frame
+ *
+ * @return bool
+ */
+ function isTemplate() {
+ return true;
+ }
+}
+
+/**
+ * Expansion frame with custom arguments
+ * @ingroup Parser
+ */
+class PPCustomFrame_HipHop extends PPFrame_HipHop {
+ var $args;
+
+ function __construct( $preprocessor, $args ) {
+ parent::__construct( $preprocessor );
+ $this->args = $args;
+ }
+
+ function __toString() {
+ $s = 'cstmframe{';
+ $first = true;
+ foreach ( $this->args as $name => $value ) {
+ if ( $first ) {
+ $first = false;
+ } else {
+ $s .= ', ';
+ }
+ $s .= "\"$name\":\"" .
+ str_replace( '"', '\\"', $value->__toString() ) . '"';
+ }
+ $s .= '}';
+ return $s;
+ }
+
+ /**
+ * @return bool
+ */
+ function isEmpty() {
+ return !count( $this->args );
+ }
+
+ /**
+ * @param $index
+ * @return bool
+ */
+ function getArgument( $index ) {
+ if ( !isset( $this->args[$index] ) ) {
+ return false;
+ }
+ return $this->args[$index];
+ }
+}
+
+/**
+ * @ingroup Parser
+ */
+class PPNode_HipHop_Tree implements PPNode {
+ var $name, $firstChild, $lastChild, $nextSibling;
+
+ function __construct( $name ) {
+ $this->name = $name;
+ $this->firstChild = $this->lastChild = $this->nextSibling = false;
+ }
+
+ function __toString() {
+ $inner = '';
+ $attribs = '';
+ for ( $node = $this->firstChild; $node; $node = $node->nextSibling ) {
+ if ( $node instanceof PPNode_HipHop_Attr ) {
+ $attribs .= ' ' . $node->name . '="' . htmlspecialchars( $node->value ) . '"';
+ } else {
+ $inner .= $node->__toString();
+ }
+ }
+ if ( $inner === '' ) {
+ return "<{$this->name}$attribs/>";
+ } else {
+ return "<{$this->name}$attribs>$inner</{$this->name}>";
+ }
+ }
+
+ /**
+ * @param $name
+ * @param $text
+ * @return PPNode_HipHop_Tree
+ */
+ static function newWithText( $name, $text ) {
+ $obj = new self( $name );
+ $obj->addChild( new PPNode_HipHop_Text( $text ) );
+ return $obj;
+ }
+
+ function addChild( $node ) {
+ if ( $this->lastChild === false ) {
+ $this->firstChild = $this->lastChild = $node;
+ } else {
+ $this->lastChild->nextSibling = $node;
+ $this->lastChild = $node;
+ }
+ }
+
+ /**
+ * @return PPNode_HipHop_Array
+ */
+ function getChildren() {
+ $children = array();
+ for ( $child = $this->firstChild; $child; $child = $child->nextSibling ) {
+ $children[] = $child;
+ }
+ return new PPNode_HipHop_Array( $children );
+ }
+
+ function getFirstChild() {
+ return $this->firstChild;
+ }
+
+ function getNextSibling() {
+ return $this->nextSibling;
+ }
+
+ function getChildrenOfType( $name ) {
+ $children = array();
+ for ( $child = $this->firstChild; $child; $child = $child->nextSibling ) {
+ if ( isset( $child->name ) && $child->name === $name ) {
+ $children[] = $name;
+ }
+ }
+ return $children;
+ }
+
+ /**
+ * @return bool
+ */
+ function getLength() {
+ return false;
+ }
+
+ /**
+ * @param $i
+ * @return bool
+ */
+ function item( $i ) {
+ return false;
+ }
+
+ /**
+ * @return string
+ */
+ function getName() {
+ return $this->name;
+ }
+
+ /**
+ * Split a <part> node into an associative array containing:
+ * name PPNode name
+ * index String index
+ * value PPNode value
+ *
+ * @return array
+ */
+ function splitArg() {
+ $bits = array();
+ for ( $child = $this->firstChild; $child; $child = $child->nextSibling ) {
+ if ( !isset( $child->name ) ) {
+ continue;
+ }
+ if ( $child->name === 'name' ) {
+ $bits['name'] = $child;
+ if ( $child->firstChild instanceof PPNode_HipHop_Attr
+ && $child->firstChild->name === 'index' )
+ {
+ $bits['index'] = $child->firstChild->value;
+ }
+ } elseif ( $child->name === 'value' ) {
+ $bits['value'] = $child;
+ }
+ }
+
+ if ( !isset( $bits['name'] ) ) {
+ throw new MWException( 'Invalid brace node passed to ' . __METHOD__ );
+ }
+ if ( !isset( $bits['index'] ) ) {
+ $bits['index'] = '';
+ }
+ return $bits;
+ }
+
+ /**
+ * Split an <ext> node into an associative array containing name, attr, inner and close
+ * All values in the resulting array are PPNodes. Inner and close are optional.
+ *
+ * @return array
+ */
+ function splitExt() {
+ $bits = array();
+ for ( $child = $this->firstChild; $child; $child = $child->nextSibling ) {
+ if ( !isset( $child->name ) ) {
+ continue;
+ }
+ if ( $child->name === 'name' ) {
+ $bits['name'] = $child;
+ } elseif ( $child->name === 'attr' ) {
+ $bits['attr'] = $child;
+ } elseif ( $child->name === 'inner' ) {
+ $bits['inner'] = $child;
+ } elseif ( $child->name === 'close' ) {
+ $bits['close'] = $child;
+ }
+ }
+ if ( !isset( $bits['name'] ) ) {
+ throw new MWException( 'Invalid ext node passed to ' . __METHOD__ );
+ }
+ return $bits;
+ }
+
+ /**
+ * Split an <h> node
+ *
+ * @return array
+ */
+ function splitHeading() {
+ if ( $this->name !== 'h' ) {
+ throw new MWException( 'Invalid h node passed to ' . __METHOD__ );
+ }
+ $bits = array();
+ for ( $child = $this->firstChild; $child; $child = $child->nextSibling ) {
+ if ( !isset( $child->name ) ) {
+ continue;
+ }
+ if ( $child->name === 'i' ) {
+ $bits['i'] = $child->value;
+ } elseif ( $child->name === 'level' ) {
+ $bits['level'] = $child->value;
+ }
+ }
+ if ( !isset( $bits['i'] ) ) {
+ throw new MWException( 'Invalid h node passed to ' . __METHOD__ );
+ }
+ return $bits;
+ }
+
+ /**
+ * Split a <template> or <tplarg> node
+ *
+ * @return array
+ */
+ function splitTemplate() {
+ $parts = array();
+ $bits = array( 'lineStart' => '' );
+ for ( $child = $this->firstChild; $child; $child = $child->nextSibling ) {
+ if ( !isset( $child->name ) ) {
+ continue;
+ }
+ if ( $child->name === 'title' ) {
+ $bits['title'] = $child;
+ }
+ if ( $child->name === 'part' ) {
+ $parts[] = $child;
+ }
+ if ( $child->name === 'lineStart' ) {
+ $bits['lineStart'] = '1';
+ }
+ }
+ if ( !isset( $bits['title'] ) ) {
+ throw new MWException( 'Invalid node passed to ' . __METHOD__ );
+ }
+ $bits['parts'] = new PPNode_HipHop_Array( $parts );
+ return $bits;
+ }
+}
+
+/**
+ * @ingroup Parser
+ */
+class PPNode_HipHop_Text implements PPNode {
+ var $value, $nextSibling;
+
+ function __construct( $value ) {
+ if ( is_object( $value ) ) {
+ throw new MWException( __CLASS__ . ' given object instead of string' );
+ }
+ $this->value = $value;
+ }
+
+ function __toString() {
+ return htmlspecialchars( $this->value );
+ }
+
+ function getNextSibling() {
+ return $this->nextSibling;
+ }
+
+ function getChildren() { return false; }
+ function getFirstChild() { return false; }
+ function getChildrenOfType( $name ) { return false; }
+ function getLength() { return false; }
+ function item( $i ) { return false; }
+ function getName() { return '#text'; }
+ function splitArg() { throw new MWException( __METHOD__ . ': not supported' ); }
+ function splitExt() { throw new MWException( __METHOD__ . ': not supported' ); }
+ function splitHeading() { throw new MWException( __METHOD__ . ': not supported' ); }
+}
+
+/**
+ * @ingroup Parser
+ */
+class PPNode_HipHop_Array implements PPNode {
+ var $value, $nextSibling;
+
+ function __construct( $value ) {
+ $this->value = $value;
+ }
+
+ function __toString() {
+ return var_export( $this, true );
+ }
+
+ function getLength() {
+ return count( $this->value );
+ }
+
+ function item( $i ) {
+ return $this->value[$i];
+ }
+
+ function getName() { return '#nodelist'; }
+
+ function getNextSibling() {
+ return $this->nextSibling;
+ }
+
+ function getChildren() { return false; }
+ function getFirstChild() { return false; }
+ function getChildrenOfType( $name ) { return false; }
+ function splitArg() { throw new MWException( __METHOD__ . ': not supported' ); }
+ function splitExt() { throw new MWException( __METHOD__ . ': not supported' ); }
+ function splitHeading() { throw new MWException( __METHOD__ . ': not supported' ); }
+}
+
+/**
+ * @ingroup Parser
+ */
+class PPNode_HipHop_Attr implements PPNode {
+ var $name, $value, $nextSibling;
+
+ function __construct( $name, $value ) {
+ $this->name = $name;
+ $this->value = $value;
+ }
+
+ function __toString() {
+ return "<@{$this->name}>" . htmlspecialchars( $this->value ) . "</@{$this->name}>";
+ }
+
+ function getName() {
+ return $this->name;
+ }
+
+ function getNextSibling() {
+ return $this->nextSibling;
+ }
+
+ function getChildren() { return false; }
+ function getFirstChild() { return false; }
+ function getChildrenOfType( $name ) { return false; }
+ function getLength() { return false; }
+ function item( $i ) { return false; }
+ function splitArg() { throw new MWException( __METHOD__ . ': not supported' ); }
+ function splitExt() { throw new MWException( __METHOD__ . ': not supported' ); }
+ function splitHeading() { throw new MWException( __METHOD__ . ': not supported' ); }
+}
diff --git a/includes/parser/StripState.php b/includes/parser/StripState.php
new file mode 100644
index 00000000..c7bd1e77
--- /dev/null
+++ b/includes/parser/StripState.php
@@ -0,0 +1,175 @@
+<?php
+
+/**
+ * @todo document, briefly.
+ * @ingroup Parser
+ */
+class StripState {
+ protected $prefix;
+ protected $data;
+ protected $regex;
+
+ protected $tempType, $tempMergePrefix;
+
+ function __construct( $prefix ) {
+ $this->prefix = $prefix;
+ $this->data = array(
+ 'nowiki' => array(),
+ 'general' => array()
+ );
+ $this->regex = "/{$this->prefix}([^\x7f]+)" . Parser::MARKER_SUFFIX . '/';
+ }
+
+ /**
+ * Add a nowiki strip item
+ * @param $marker
+ * @param $value
+ */
+ function addNoWiki( $marker, $value ) {
+ $this->addItem( 'nowiki', $marker, $value );
+ }
+
+ /**
+ * @param $marker
+ * @param $value
+ */
+ function addGeneral( $marker, $value ) {
+ $this->addItem( 'general', $marker, $value );
+ }
+
+ /**
+ * @throws MWException
+ * @param $type
+ * @param $marker
+ * @param $value
+ */
+ protected function addItem( $type, $marker, $value ) {
+ if ( !preg_match( $this->regex, $marker, $m ) ) {
+ throw new MWException( "Invalid marker: $marker" );
+ }
+
+ $this->data[$type][$m[1]] = $value;
+ }
+
+ /**
+ * @param $text
+ * @return mixed
+ */
+ function unstripGeneral( $text ) {
+ return $this->unstripType( 'general', $text );
+ }
+
+ /**
+ * @param $text
+ * @return mixed
+ */
+ function unstripNoWiki( $text ) {
+ return $this->unstripType( 'nowiki', $text );
+ }
+
+ /**
+ * @param $text
+ * @return mixed
+ */
+ function unstripBoth( $text ) {
+ $text = $this->unstripType( 'general', $text );
+ $text = $this->unstripType( 'nowiki', $text );
+ return $text;
+ }
+
+ /**
+ * @param $type
+ * @param $text
+ * @return mixed
+ */
+ protected function unstripType( $type, $text ) {
+ // Shortcut
+ if ( !count( $this->data[$type] ) ) {
+ return $text;
+ }
+
+ wfProfileIn( __METHOD__ );
+ $this->tempType = $type;
+ $out = preg_replace_callback( $this->regex, array( $this, 'unstripCallback' ), $text );
+ $this->tempType = null;
+ wfProfileOut( __METHOD__ );
+ return $out;
+ }
+
+ /**
+ * @param $m array
+ * @return array
+ */
+ protected function unstripCallback( $m ) {
+ if ( isset( $this->data[$this->tempType][$m[1]] ) ) {
+ return $this->data[$this->tempType][$m[1]];
+ } else {
+ return $m[0];
+ }
+ }
+
+ /**
+ * Get a StripState object which is sufficient to unstrip the given text.
+ * It will contain the minimum subset of strip items necessary.
+ *
+ * @param $text string
+ *
+ * @return StripState
+ */
+ function getSubState( $text ) {
+ $subState = new StripState( $this->prefix );
+ $pos = 0;
+ while ( true ) {
+ $startPos = strpos( $text, $this->prefix, $pos );
+ $endPos = strpos( $text, Parser::MARKER_SUFFIX, $pos );
+ if ( $startPos === false || $endPos === false ) {
+ break;
+ }
+
+ $endPos += strlen( Parser::MARKER_SUFFIX );
+ $marker = substr( $text, $startPos, $endPos - $startPos );
+ if ( !preg_match( $this->regex, $marker, $m ) ) {
+ continue;
+ }
+
+ $key = $m[1];
+ if ( isset( $this->data['nowiki'][$key] ) ) {
+ $subState->data['nowiki'][$key] = $this->data['nowiki'][$key];
+ } elseif ( isset( $this->data['general'][$key] ) ) {
+ $subState->data['general'][$key] = $this->data['general'][$key];
+ }
+ $pos = $endPos;
+ }
+ return $subState;
+ }
+
+ /**
+ * Merge another StripState object into this one. The strip marker keys
+ * will not be preserved. The strings in the $texts array will have their
+ * strip markers rewritten, the resulting array of strings will be returned.
+ *
+ * @param $otherState StripState
+ * @param $texts Array
+ * @return Array
+ */
+ function merge( $otherState, $texts ) {
+ $mergePrefix = Parser::getRandomString();
+
+ foreach ( $otherState->data as $type => $items ) {
+ foreach ( $items as $key => $value ) {
+ $this->data[$type]["$mergePrefix-$key"] = $value;
+ }
+ }
+
+ $this->tempMergePrefix = $mergePrefix;
+ $texts = preg_replace_callback( $otherState->regex, array( $this, 'mergeCallback' ), $texts );
+ $this->tempMergePrefix = null;
+ return $texts;
+ }
+
+ protected function mergeCallback( $m ) {
+ $key = $m[1];
+ return "{$this->prefix}{$this->tempMergePrefix}-$key" . Parser::MARKER_SUFFIX;
+ }
+}
+
diff --git a/includes/parser/Tidy.php b/includes/parser/Tidy.php
index 38f22fd8..3a6d3e9c 100644
--- a/includes/parser/Tidy.php
+++ b/includes/parser/Tidy.php
@@ -6,6 +6,74 @@
*/
/**
+ * Class used to hide mw:editsection tokens from Tidy so that it doesn't break them
+ * or break on them. This is a bit of a hack for now, but hopefully in the future
+ * we may create a real postprocessor or something that will replace this.
+ * It's called wrapper because for now it basically takes over MWTidy::tidy's task
+ * of wrapping the text in a xhtml block
+ *
+ * This re-uses some of the parser's UNIQ tricks, though some of it is private so it's
+ * duplicated. Perhaps we should create an abstract marker hiding class.
+ */
+class MWTidyWrapper {
+
+ /**
+ * @var ReplacementArray
+ */
+ protected $mTokens;
+
+ protected $mUniqPrefix;
+
+ protected $mMarkerIndex;
+
+ public function __construct() {
+ $this->mTokens = null;
+ $this->mUniqPrefix = null;
+ }
+
+ /**
+ * @param $text string
+ * @return string
+ */
+ public function getWrapped( $text ) {
+ $this->mTokens = new ReplacementArray;
+ $this->mUniqPrefix = "\x7fUNIQ" .
+ dechex( mt_rand( 0, 0x7fffffff ) ) . dechex( mt_rand( 0, 0x7fffffff ) );
+ $this->mMarkerIndex = 0;
+
+ $wrappedtext = preg_replace_callback( ParserOutput::EDITSECTION_REGEX,
+ array( &$this, 'replaceEditSectionLinksCallback' ), $text );
+
+ $wrappedtext = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"'.
+ ' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>'.
+ '<head><title>test</title></head><body>'.$wrappedtext.'</body></html>';
+
+ return $wrappedtext;
+ }
+
+ /**
+ * @param $m array
+ *
+ * @return string
+ */
+ function replaceEditSectionLinksCallback( $m ) {
+ $marker = "{$this->mUniqPrefix}-item-{$this->mMarkerIndex}" . Parser::MARKER_SUFFIX;
+ $this->mMarkerIndex++;
+ $this->mTokens->setPair( $marker, $m[0] );
+ return $marker;
+ }
+
+ /**
+ * @param $text string
+ * @return string
+ */
+ public function postprocess( $text ) {
+ return $this->mTokens->replace( $text );
+ }
+
+}
+
+/**
* Class to interact with HTML tidy
*
* Either the external tidy program or the in-process tidy extension
@@ -15,7 +83,6 @@
* @ingroup Parser
*/
class MWTidy {
-
/**
* Interface with html tidy, used if $wgUseTidy = true.
* If tidy isn't able to correct the markup, the original will be
@@ -27,20 +94,26 @@ class MWTidy {
public static function tidy( $text ) {
global $wgTidyInternal;
- $wrappedtext = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"'.
-' "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html>'.
-'<head><title>test</title></head><body>'.$text.'</body></html>';
+ $wrapper = new MWTidyWrapper;
+ $wrappedtext = $wrapper->getWrapped( $text );
- if( $wgTidyInternal ) {
- $correctedtext = self::execInternalTidy( $wrappedtext );
+ $retVal = null;
+ if ( $wgTidyInternal ) {
+ $correctedtext = self::execInternalTidy( $wrappedtext, false, $retVal );
} else {
- $correctedtext = self::execExternalTidy( $wrappedtext );
+ $correctedtext = self::execExternalTidy( $wrappedtext, false, $retVal );
}
- if( is_null( $correctedtext ) ) {
+
+ if ( $retVal < 0 ) {
+ wfDebug( "Possible tidy configuration error!\n" );
+ return $text . "\n<!-- Tidy was unable to run -->\n";
+ } elseif ( is_null( $correctedtext ) ) {
wfDebug( "Tidy error detected!\n" );
return $text . "\n<!-- Tidy found serious XHTML errors -->\n";
}
+ $correctedtext = $wrapper->postprocess( $correctedtext ); // restore any hidden tokens
+
return $correctedtext;
}
@@ -60,6 +133,7 @@ class MWTidy {
} else {
$errorStr = self::execExternalTidy( $text, true, $retval );
}
+
return ( $retval < 0 && $errorStr == '' ) || $retval == 0;
}
@@ -68,7 +142,7 @@ class MWTidy {
* Also called in OutputHandler.php for full page validation
*
* @param $text String: HTML to check
- * @param $stderr Boolean: Whether to read from STDERR rather than STDOUT
+ * @param $stderr Boolean: Whether to read result from STDERR rather than STDOUT
* @param &$retval Exit code (-1 on internal error)
* @return mixed String or null
*/
@@ -79,7 +153,7 @@ class MWTidy {
$cleansource = '';
$opts = ' -utf8';
- if( $stderr ) {
+ if ( $stderr ) {
$descriptorspec = array(
0 => array( 'pipe', 'r' ),
1 => array( 'file', wfGetNull(), 'a' ),
@@ -96,73 +170,84 @@ class MWTidy {
$readpipe = $stderr ? 2 : 1;
$pipes = array();
- if( function_exists( 'proc_open' ) ) {
- $process = proc_open( "$wgTidyBin -config $wgTidyConf $wgTidyOpts$opts", $descriptorspec, $pipes );
- if ( is_resource( $process ) ) {
- // Theoretically, this style of communication could cause a deadlock
- // here. If the stdout buffer fills up, then writes to stdin could
- // block. This doesn't appear to happen with tidy, because tidy only
- // writes to stdout after it's finished reading from stdin. Search
- // for tidyParseStdin and tidySaveStdout in console/tidy.c
- fwrite( $pipes[0], $text );
- fclose( $pipes[0] );
- while ( !feof( $pipes[$readpipe] ) ) {
- $cleansource .= fgets( $pipes[$readpipe], 1024 );
- }
- fclose( $pipes[$readpipe] );
- $retval = proc_close( $process );
- } else {
- $retval = -1;
+ $process = proc_open(
+ "$wgTidyBin -config $wgTidyConf $wgTidyOpts$opts", $descriptorspec, $pipes );
+
+ if ( is_resource( $process ) ) {
+ // Theoretically, this style of communication could cause a deadlock
+ // here. If the stdout buffer fills up, then writes to stdin could
+ // block. This doesn't appear to happen with tidy, because tidy only
+ // writes to stdout after it's finished reading from stdin. Search
+ // for tidyParseStdin and tidySaveStdout in console/tidy.c
+ fwrite( $pipes[0], $text );
+ fclose( $pipes[0] );
+ while ( !feof( $pipes[$readpipe] ) ) {
+ $cleansource .= fgets( $pipes[$readpipe], 1024 );
}
+ fclose( $pipes[$readpipe] );
+ $retval = proc_close( $process );
} else {
- $retval = -1;
+ wfWarn( "Unable to start external tidy process" );
+ $retval = -1;
}
- if( !$stderr && $cleansource == '' && $text != '' ) {
+ if ( !$stderr && $cleansource == '' && $text != '' ) {
// Some kind of error happened, so we couldn't get the corrected text.
// Just give up; we'll use the source text and append a warning.
$cleansource = null;
}
+
wfProfileOut( __METHOD__ );
return $cleansource;
}
/**
- * Use the HTML tidy PECL extension to use the tidy library in-process,
+ * Use the HTML tidy extension to use the tidy library in-process,
* saving the overhead of spawning a new process.
*
- * 'pear install tidy' should be able to compile the extension module.
+ * @param $text String: HTML to check
+ * @param $stderr Boolean: Whether to read result from error status instead of output
+ * @param &$retval Exit code (-1 on internal error)
+ * @return mixed String or null
*/
private static function execInternalTidy( $text, $stderr = false, &$retval = null ) {
global $wgTidyConf, $wgDebugTidy;
wfProfileIn( __METHOD__ );
+ if ( !MWInit::classExists( 'tidy' ) ) {
+ wfWarn( "Unable to load internal tidy class." );
+ $retval = -1;
+
+ wfProfileOut( __METHOD__ );
+ return null;
+ }
+
$tidy = new tidy;
$tidy->parseString( $text, $wgTidyConf, 'utf8' );
- if( $stderr ) {
+ if ( $stderr ) {
$retval = $tidy->getStatus();
+
wfProfileOut( __METHOD__ );
return $tidy->errorBuffer;
} else {
$tidy->cleanRepair();
$retval = $tidy->getStatus();
- if( $retval == 2 ) {
+ 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-->";
+ if ( $wgDebugTidy && $retval > 0 ) {
+ $cleansource .= "<!--\nTidy reports:\n" .
+ str_replace( '-->', '--&gt;', $tidy->errorBuffer ) .
+ "\n-->";
+ }
}
wfProfileOut( __METHOD__ );
return $cleansource;
}
}
-
}
diff --git a/includes/Profiler.php b/includes/profiler/Profiler.php
index 6deb742e..93b03f59 100644
--- a/includes/Profiler.php
+++ b/includes/profiler/Profiler.php
@@ -7,16 +7,15 @@
* This file is only included if profiling is enabled
*/
-/** backward compatibility */
-$wgProfiling = true;
-
/**
* Begin profiling of a function
* @param $functionname String: name of the function we will profile
*/
function wfProfileIn( $functionname ) {
global $wgProfiler;
- $wgProfiler->profileIn( $functionname );
+ if ( $wgProfiler instanceof Profiler || isset( $wgProfiler['class'] ) ) {
+ Profiler::instance()->profileIn( $functionname );
+ }
}
/**
@@ -25,32 +24,8 @@ function wfProfileIn( $functionname ) {
*/
function wfProfileOut( $functionname = 'missing' ) {
global $wgProfiler;
- $wgProfiler->profileOut( $functionname );
-}
-
-/**
- * Returns a profiling output to be stored in debug file
- *
- * @param $start Float
- * @param $elapsed Float: time elapsed since the beginning of the request
- */
-function wfGetProfilingOutput( $start, $elapsed ) {
- global $wgProfiler;
- return $wgProfiler->getOutput( $start, $elapsed );
-}
-
-/**
- * Close opened profiling sections
- */
-function wfProfileClose() {
- global $wgProfiler;
- $wgProfiler->close();
-}
-
-if (!function_exists('memory_get_usage')) {
- # Old PHP or --enable-memory-limit not compiled in
- function memory_get_usage() {
- return 0;
+ if ( $wgProfiler instanceof Profiler || isset( $wgProfiler['class'] ) ) {
+ Profiler::instance()->profileOut( $functionname );
}
}
@@ -62,8 +37,12 @@ class Profiler {
var $mStack = array (), $mWorkStack = array (), $mCollated = array ();
var $mCalls = array (), $mTotals = array ();
var $mTemplated = false;
+ var $mTimeMetric = 'wall';
+ private $mCollateDone = false;
+ protected $mProfileID = false;
+ private static $__instance = null;
- function __construct() {
+ function __construct( $params ) {
// Push an entry for the pre-profile setup time onto the stack
global $wgRequestTime;
if ( !empty( $wgRequestTime ) ) {
@@ -72,6 +51,57 @@ class Profiler {
} else {
$this->profileIn( '-total' );
}
+ if ( isset( $params['timeMetric'] ) ) {
+ $this->mTimeMetric = $params['timeMetric'];
+ }
+ }
+
+ /**
+ * Singleton
+ * @return Profiler
+ */
+ public static function instance() {
+ if( is_null( self::$__instance ) ) {
+ global $wgProfiler;
+ if( is_array( $wgProfiler ) ) {
+ $class = isset( $wgProfiler['class'] ) ? $wgProfiler['class'] : 'ProfilerStub';
+ self::$__instance = new $class( $wgProfiler );
+ } elseif( $wgProfiler instanceof Profiler ) {
+ self::$__instance = $wgProfiler; // back-compat
+ } else {
+ self::$__instance = new ProfilerStub( $wgProfiler );
+ }
+ }
+ return self::$__instance;
+ }
+
+ /**
+ * Set the profiler to a specific profiler instance. Mostly for dumpHTML
+ * @param $p Profiler object
+ */
+ public static function setInstance( Profiler $p ) {
+ self::$__instance = $p;
+ }
+
+ /**
+ * Return whether this a stub profiler
+ *
+ * @return Boolean
+ */
+ public function isStub() {
+ return false;
+ }
+
+ public function setProfileID( $id ) {
+ $this->mProfileID = $id;
+ }
+
+ public function getProfileID() {
+ if ( $this->mProfileID === false ) {
+ return wfWikiID();
+ } else {
+ return $this->mProfileID;
+ }
}
/**
@@ -79,9 +109,8 @@ class Profiler {
*
* @param $functionname String
*/
- function profileIn( $functionname ) {
- global $wgDebugFunctionEntry, $wgProfiling;
- if( !$wgProfiling ) return;
+ public function profileIn( $functionname ) {
+ global $wgDebugFunctionEntry;
if( $wgDebugFunctionEntry ){
$this->debug( str_repeat( ' ', count( $this->mWorkStack ) ) . 'Entering ' . $functionname . "\n" );
}
@@ -94,9 +123,8 @@ class Profiler {
*
* @param $functionname String
*/
- function profileOut($functionname) {
- global $wgDebugFunctionEntry, $wgProfiling;
- if( !$wgProfiling ) return;
+ public function profileOut( $functionname ) {
+ global $wgDebugFunctionEntry;
$memory = memory_get_usage();
$time = $this->getTime();
@@ -128,15 +156,9 @@ class Profiler {
}
/**
- * called by wfProfileClose()
+ * Close opened profiling sections
*/
- function close() {
- global $wgProfiling;
-
- # Avoid infinite loop
- if( !$wgProfiling )
- return;
-
+ public function close() {
while( count( $this->mWorkStack ) ){
$this->profileOut( 'close' );
}
@@ -152,23 +174,19 @@ class Profiler {
}
/**
- * Called by wfGetProfilingOutput()
+ * Returns a profiling output to be stored in debug file
+ *
+ * @return String
*/
- function getOutput() {
+ public function getOutput() {
global $wgDebugFunctionEntry, $wgProfileCallTree;
$wgDebugFunctionEntry = false;
if( !count( $this->mStack ) && !count( $this->mCollated ) ){
return "No profiling output\n";
}
- $this->close();
if( $wgProfileCallTree ) {
- global $wgProfileToDatabase;
- # XXX: We must call $this->getFunctionReport() to log to the DB
- if( $wgProfileToDatabase ) {
- $this->getFunctionReport();
- }
return $this->getCallTree();
} else {
return $this->getFunctionReport();
@@ -235,8 +253,11 @@ class Profiler {
}
function getTime() {
- return microtime(true);
- #return $this->getUserTime();
+ if ( $this->mTimeMetric === 'user' ) {
+ return $this->getUserTime();
+ } else {
+ return microtime(true);
+ }
}
function getUserTime() {
@@ -244,31 +265,21 @@ class Profiler {
return $ru['ru_utime.tv_sec'].' '.$ru['ru_utime.tv_usec'] / 1e6;
}
- /**
- * Returns a list of profiled functions.
- * Also log it into the database if $wgProfileToDatabase is set to true.
- */
- function getFunctionReport() {
- global $wgProfileToDatabase;
+ protected function collateData() {
+ if ( $this->mCollateDone ) {
+ return;
+ }
+ $this->mCollateDone = true;
- $width = 140;
- $nameWidth = $width - 65;
- $format = "%-{$nameWidth}s %6d %13.3f %13.3f %13.3f%% %9d (%13.3f -%13.3f) [%d]\n";
- $titleFormat = "%-{$nameWidth}s %6s %13s %13s %13s %9s\n";
- $prof = "\nProfiling data\n";
- $prof .= sprintf( $titleFormat, 'Name', 'Calls', 'Total', 'Each', '%', 'Mem' );
- $this->mCollated = array ();
- $this->mCalls = array ();
- $this->mMemory = array ();
+ $this->close();
+
+ $this->mCollated = array();
+ $this->mCalls = array();
+ $this->mMemory = array();
# Estimate profiling overhead
$profileCount = count($this->mStack);
- wfProfileIn( '-overhead-total' );
- for( $i = 0; $i < $profileCount; $i ++ ){
- wfProfileIn( '-overhead-internal' );
- wfProfileOut( '-overhead-internal' );
- }
- wfProfileOut( '-overhead-total' );
+ self::calculateOverhead( $profileCount );
# First, subtract the overhead!
$overheadTotal = $overheadMemory = $overheadInternal = array();
@@ -327,20 +338,31 @@ class Profiler {
$this->mOverhead[$fname] += $subcalls;
}
- $total = @$this->mCollated['-total'];
$this->mCalls['-overhead-total'] = $profileCount;
-
- # Output
arsort( $this->mCollated, SORT_NUMERIC );
+ }
+
+ /**
+ * Returns a list of profiled functions.
+ * Also log it into the database if $wgProfileToDatabase is set to true.
+ */
+ function getFunctionReport() {
+ $this->collateData();
+
+ $width = 140;
+ $nameWidth = $width - 65;
+ $format = "%-{$nameWidth}s %6d %13.3f %13.3f %13.3f%% %9d (%13.3f -%13.3f) [%d]\n";
+ $titleFormat = "%-{$nameWidth}s %6s %13s %13s %13s %9s\n";
+ $prof = "\nProfiling data\n";
+ $prof .= sprintf( $titleFormat, 'Name', 'Calls', 'Total', 'Each', '%', 'Mem' );
+
+ $total = isset( $this->mCollated['-total'] ) ? $this->mCollated['-total'] : 0;
+
foreach( $this->mCollated as $fname => $elapsed ){
$calls = $this->mCalls[$fname];
$percent = $total ? 100. * $elapsed / $total : 0;
$memory = $this->mMemory[$fname];
$prof .= sprintf($format, substr($fname, 0, $nameWidth), $calls, (float) ($elapsed * 1000), (float) ($elapsed * 1000) / $calls, $percent, $memory, ($this->mMin[$fname] * 1000.0), ($this->mMax[$fname] * 1000.0), $this->mOverhead[$fname]);
- # Log to the DB
- if( $wgProfileToDatabase ) {
- self::logToDB($fname, (float) ($elapsed * 1000), $calls, (float) ($memory) );
- }
}
$prof .= "\nTotal: $total\n\n";
@@ -348,6 +370,18 @@ class Profiler {
}
/**
+ * Dummy calls to wfProfileIn/wfProfileOut to calculate its overhead
+ */
+ protected static function calculateOverhead( $profileCount ) {
+ wfProfileIn( '-overhead-total' );
+ for( $i = 0; $i < $profileCount; $i++ ){
+ wfProfileIn( '-overhead-internal' );
+ wfProfileOut( '-overhead-internal' );
+ }
+ wfProfileOut( '-overhead-total' );
+ }
+
+ /**
* Counts the number of profiled function calls sitting under
* the given point in the call graph. Not the most efficient algo.
*
@@ -366,60 +400,66 @@ class Profiler {
}
/**
- * Log a function into the database.
- *
- * @param $name String: function name
- * @param $timeSum Float
- * @param $eventCount Integer: number of times that function was called
- * @param $memorySum Integer: memory used by the function
+ * Log the whole profiling data into the database.
*/
- static function logToDB( $name, $timeSum, $eventCount, $memorySum ){
- # Do not log anything if database is readonly (bug 5375)
- if( wfReadOnly() ) { return; }
+ public function logData(){
+ global $wgProfilePerHost, $wgProfileToDatabase;
- global $wgProfilePerHost;
+ # Do not log anything if database is readonly (bug 5375)
+ if( wfReadOnly() || !$wgProfileToDatabase ) {
+ return;
+ }
$dbw = wfGetDB( DB_MASTER );
- if( !is_object( $dbw ) )
- return false;
- $errorState = $dbw->ignoreErrors( true );
+ if( !is_object( $dbw ) ) {
+ return;
+ }
- $name = substr($name, 0, 255);
+ $errorState = $dbw->ignoreErrors( true );
if( $wgProfilePerHost ){
$pfhost = wfHostname();
} else {
$pfhost = '';
}
-
- // Kludge
- $timeSum = ($timeSum >= 0) ? $timeSum : 0;
- $memorySum = ($memorySum >= 0) ? $memorySum : 0;
-
- $dbw->update( 'profiling',
- array(
- "pf_count=pf_count+{$eventCount}",
- "pf_time=pf_time+{$timeSum}",
- "pf_memory=pf_memory+{$memorySum}",
- ),
- array(
- 'pf_name' => $name,
- 'pf_server' => $pfhost,
- ),
- __METHOD__ );
-
-
- $rc = $dbw->affectedRows();
- if ($rc == 0) {
- $dbw->insert('profiling', array ('pf_name' => $name, 'pf_count' => $eventCount,
- 'pf_time' => $timeSum, 'pf_memory' => $memorySum, 'pf_server' => $pfhost ),
- __METHOD__, array ('IGNORE'));
+
+ $this->collateData();
+
+ foreach( $this->mCollated as $name => $elapsed ){
+ $eventCount = $this->mCalls[$name];
+ $timeSum = (float) ($elapsed * 1000);
+ $memorySum = (float)$this->mMemory[$name];
+ $name = substr($name, 0, 255);
+
+ // Kludge
+ $timeSum = ($timeSum >= 0) ? $timeSum : 0;
+ $memorySum = ($memorySum >= 0) ? $memorySum : 0;
+
+ $dbw->update( 'profiling',
+ array(
+ "pf_count=pf_count+{$eventCount}",
+ "pf_time=pf_time+{$timeSum}",
+ "pf_memory=pf_memory+{$memorySum}",
+ ),
+ array(
+ 'pf_name' => $name,
+ 'pf_server' => $pfhost,
+ ),
+ __METHOD__ );
+
+ $rc = $dbw->affectedRows();
+ if ( $rc == 0 ) {
+ $dbw->insert('profiling', array ('pf_name' => $name, 'pf_count' => $eventCount,
+ 'pf_time' => $timeSum, 'pf_memory' => $memorySum, 'pf_server' => $pfhost ),
+ __METHOD__, array ('IGNORE'));
+ }
+ // When we upgrade to mysql 4.1, the insert+update
+ // can be merged into just a insert with this construct added:
+ // "ON DUPLICATE KEY UPDATE ".
+ // "pf_count=pf_count + VALUES(pf_count), ".
+ // "pf_time=pf_time + VALUES(pf_time)";
}
- // When we upgrade to mysql 4.1, the insert+update
- // can be merged into just a insert with this construct added:
- // "ON DUPLICATE KEY UPDATE ".
- // "pf_count=pf_count + VALUES(pf_count), ".
- // "pf_time=pf_time + VALUES(pf_time)";
+
$dbw->ignoreErrors( $errorState );
}
@@ -432,31 +472,12 @@ class Profiler {
}
/**
- * Get function caller
- *
- * @param $level Integer
- */
- static function getCaller( $level ) {
- $backtrace = wfDebugBacktrace();
- if ( isset( $backtrace[$level] ) ) {
- if ( isset( $backtrace[$level]['class'] ) ) {
- $caller = $backtrace[$level]['class'] . '::' . $backtrace[$level]['function'];
- } else {
- $caller = $backtrace[$level]['function'];
- }
- } else {
- $caller = 'unknown';
- }
- return $caller;
- }
-
- /**
* Add an entry in the debug log file
*
* @param $s String to output
*/
function debug( $s ) {
- if( function_exists( 'wfDebug' ) ) {
+ if( defined( 'MW_COMPILED' ) || function_exists( 'wfDebug' ) ) {
wfDebug( $s );
}
}
diff --git a/includes/ProfilerSimple.php b/includes/profiler/ProfilerSimple.php
index 8aab1ecc..bbdbec8e 100644
--- a/includes/ProfilerSimple.php
+++ b/includes/profiler/ProfilerSimple.php
@@ -4,10 +4,6 @@
* @ingroup Profiler
*/
-if ( !class_exists( 'Profiler' ) ) {
- require_once(dirname(__FILE__).'/Profiler.php');
-}
-
/**
* Simple profiler base class.
* @todo document methods (?)
@@ -15,11 +11,21 @@ if ( !class_exists( 'Profiler' ) ) {
*/
class ProfilerSimple extends Profiler {
var $mMinimumTime = 0;
- var $mProfileID = false;
- function __construct() {
+ var $zeroEntry = array('cpu'=> 0.0, 'cpu_sq' => 0.0, 'real' => 0.0, 'real_sq' => 0.0, 'count' => 0);
+ var $errorEntry;
+
+ function __construct( $params ) {
global $wgRequestTime, $wgRUstart;
+ parent::__construct( $params );
+
+ $this->errorEntry = $this->zeroEntry;
+ $this->errorEntry['count'] = 1;
+
if (!empty($wgRequestTime) && !empty($wgRUstart)) {
+ # Remove the -total entry from parent::__construct
+ $this->mWorkStack = array();
+
$this->mWorkStack[] = array( '-total', 0, $wgRequestTime,$this->getCpuTime($wgRUstart));
$elapsedcpu = $this->getCpuTime() - $this->getCpuTime($wgRUstart);
@@ -27,7 +33,7 @@ class ProfilerSimple extends Profiler {
$entry =& $this->mCollated["-setup"];
if (!is_array($entry)) {
- $entry = array('cpu'=> 0.0, 'cpu_sq' => 0.0, 'real' => 0.0, 'real_sq' => 0.0, 'count' => 0);
+ $entry = $this->zeroEntry;
$this->mCollated["-setup"] =& $entry;
}
$entry['cpu'] += $elapsedcpu;
@@ -42,18 +48,6 @@ class ProfilerSimple extends Profiler {
$this->mMinimumTime = $min;
}
- function setProfileID( $id ) {
- $this->mProfileID = $id;
- }
-
- function getProfileID() {
- if ( $this->mProfileID === false ) {
- return wfWikiID();
- } else {
- return $this->mProfileID;
- }
- }
-
function profileIn($functionname) {
global $wgDebugFunctionEntry;
if ($wgDebugFunctionEntry) {
@@ -78,20 +72,18 @@ class ProfilerSimple extends Profiler {
$message = "Profile section ended by close(): {$ofname}";
$functionname = $ofname;
$this->debug( "$message\n" );
- $this->mCollated[$message] = array(
- 'real' => 0.0, 'count' => 1);
+ $this->mCollated[$message] = $this->errorEntry;
}
elseif ($ofname != $functionname) {
$message = "Profiling error: in({$ofname}), out($functionname)";
$this->debug( "$message\n" );
- $this->mCollated[$message] = array(
- 'real' => 0.0, 'count' => 1);
+ $this->mCollated[$message] = $this->errorEntry;
}
$entry =& $this->mCollated[$functionname];
$elapsedcpu = $this->getCpuTime() - $octime;
$elapsedreal = microtime(true) - $ortime;
if (!is_array($entry)) {
- $entry = array('cpu'=> 0.0, 'cpu_sq' => 0.0, 'real' => 0.0, 'real_sq' => 0.0, 'count' => 0);
+ $entry = $this->zeroEntry;
$this->mCollated[$functionname] =& $entry;
}
$entry['cpu'] += $elapsedcpu;
@@ -103,8 +95,13 @@ class ProfilerSimple extends Profiler {
}
}
- function getFunctionReport() {
+ public function getFunctionReport() {
/* Implement in output subclasses */
+ return '';
+ }
+
+ public function logData() {
+ /* Implement in subclasses */
}
function getCpuTime($ru=null) {
diff --git a/includes/profiler/ProfilerSimpleText.php b/includes/profiler/ProfilerSimpleText.php
new file mode 100644
index 00000000..ef9049fa
--- /dev/null
+++ b/includes/profiler/ProfilerSimpleText.php
@@ -0,0 +1,54 @@
+<?php
+/**
+ * @file
+ * @ingroup Profiler
+ */
+
+/**
+ * The least sophisticated profiler output class possible, view your source! :)
+ *
+ * Put the following 2 lines in StartProfiler.php:
+ *
+ * $wgProfiler['class'] = 'ProfilerSimpleText';
+ * $wgProfiler['visible'] = true;
+ *
+ * @ingroup Profiler
+ */
+class ProfilerSimpleText extends ProfilerSimple {
+ public $visible = false; /* Show as <PRE> or <!-- ? */
+ static private $out;
+
+ public function __construct( $profileConfig ) {
+ if ( isset( $profileConfig['visible'] ) && $profileConfig['visible'] ) {
+ $this->visible = true;
+ }
+ parent::__construct( $profileConfig );
+ }
+
+ public function logData() {
+ if ( $this->mTemplated ) {
+ $this->close();
+ $totalReal = isset( $this->mCollated['-total'] )
+ ? $this->mCollated['-total']['real']
+ : 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 {
+ print "<!--\n".self::$out."\n-->\n";
+ }
+ }
+ }
+
+ /* dense is good */
+ static function sort( $a, $b ) {
+ return $a['real'] < $b['real']; /* sort descending by time elapsed */
+ }
+
+ static function format( $item, $key, $totalReal ) {
+ $perc = $totalReal ? $item['real']/$totalReal*100 : 0;
+ self::$out .= sprintf( "%6.2f%% %3.6f %6d - %s\n",
+ $perc, $item['real'], $item['count'], $key );
+ }
+}
diff --git a/includes/ProfilerSimpleTrace.php b/includes/profiler/ProfilerSimpleTrace.php
index 8f6a2a1c..ba41babc 100644
--- a/includes/ProfilerSimpleTrace.php
+++ b/includes/profiler/ProfilerSimpleTrace.php
@@ -4,10 +4,6 @@
* @ingroup Profiler
*/
-if ( !class_exists( 'ProfilerSimple' ) ) {
- require_once(dirname(__FILE__).'/ProfilerSimple.php');
-}
-
/**
* Execution trace
* @todo document methods (?)
@@ -15,12 +11,12 @@ if ( !class_exists( 'ProfilerSimple' ) ) {
*/
class ProfilerSimpleTrace extends ProfilerSimple {
var $mMinimumTime = 0;
- var $mProfileID = false;
var $trace = "";
var $memory = 0;
- function __construct() {
+ function __construct( $params ) {
global $wgRequestTime, $wgRUstart;
+ parent::__construct( $params );
if ( !empty( $wgRequestTime ) && !empty( $wgRUstart ) ) {
$this->mWorkStack[] = array( '-total', 0, $wgRequestTime, $this->getCpuTime( $wgRUstart ) );
}
@@ -65,7 +61,7 @@ class ProfilerSimpleTrace extends ProfilerSimple {
return $diff / 1024;
}
- function getOutput() {
+ function logData() {
print "<!-- \n {$this->trace} \n -->";
}
}
diff --git a/includes/ProfilerSimpleUDP.php b/includes/profiler/ProfilerSimpleUDP.php
index 67ad97f6..ed49d5a2 100644
--- a/includes/ProfilerSimpleUDP.php
+++ b/includes/profiler/ProfilerSimpleUDP.php
@@ -4,18 +4,18 @@
* @ingroup Profiler
*/
-require_once(dirname(__FILE__).'/ProfilerSimple.php');
-
/**
* ProfilerSimpleUDP class, that sends out messages for 'udpprofile' daemon
* (the one from mediawiki/trunk/udpprofile SVN )
* @ingroup Profiler
*/
class ProfilerSimpleUDP extends ProfilerSimple {
- function getFunctionReport() {
+ public function logData() {
global $wgUDPProfilerHost, $wgUDPProfilerPort;
- if ( $this->mCollated['-total']['real'] < $this->mMinimumTime ) {
+ $this->close();
+
+ if ( isset( $this->mCollated['-total'] ) && $this->mCollated['-total']['real'] < $this->mMinimumTime ) {
# Less than minimum, ignore
return;
}
diff --git a/includes/profiler/ProfilerStub.php b/includes/profiler/ProfilerStub.php
new file mode 100644
index 00000000..58c1975c
--- /dev/null
+++ b/includes/profiler/ProfilerStub.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * Stub profiling functions
+ * @file
+ * @ingroup Profiler
+ */
+class ProfilerStub extends Profiler {
+ public function isStub() {
+ return true;
+ }
+ public function profileIn( $fn ) {}
+ public function profileOut( $fn ) {}
+ public function getOutput() {}
+ public function close() {}
+}
diff --git a/includes/resourceloader/ResourceLoader.php b/includes/resourceloader/ResourceLoader.php
index 191bc9f0..2a2e2981 100644
--- a/includes/resourceloader/ResourceLoader.php
+++ b/includes/resourceloader/ResourceLoader.php
@@ -29,7 +29,7 @@
class ResourceLoader {
/* Protected Static Members */
- protected static $filterCacheVersion = 2;
+ protected static $filterCacheVersion = 4;
/** Array: List of module name/ResourceLoaderModule object pairs */
protected $modules = array();
@@ -40,15 +40,15 @@ class ResourceLoader {
/**
* Loads information stored in the database about modules.
- *
- * This method grabs modules dependencies from the database and updates modules
+ *
+ * This method grabs modules dependencies from the database and updates modules
* objects.
- *
- * This is not inside the module code because it is much faster to
- * request all of the information at once than it is to have each module
+ *
+ * This is not inside the module code because it is much faster to
+ * request all of the information at once than it is to have each module
* requests its own information. This sacrifice of modularity yields a substantial
* performance improvement.
- *
+ *
* @param $modules Array: List of module names to preload information for
* @param $context ResourceLoaderContext: Context to load the information within
*/
@@ -59,11 +59,11 @@ class ResourceLoader {
$dbr = wfGetDB( DB_SLAVE );
$skin = $context->getSkin();
$lang = $context->getLanguage();
-
+
// Get file dependency information
$res = $dbr->select( 'module_deps', array( 'md_module', 'md_deps' ), array(
'md_module' => $modules,
- 'md_skin' => $context->getSkin()
+ 'md_skin' => $skin
), __METHOD__
);
@@ -80,7 +80,7 @@ class ResourceLoader {
foreach ( array_diff( $modules, $modulesWithDeps ) as $name ) {
$this->getModule( $name )->setFileDependencies( $skin, array() );
}
-
+
// Get message blob mtimes. Only do this for modules with messages
$modulesWithMessages = array();
foreach ( $modules as $name ) {
@@ -96,11 +96,11 @@ class ResourceLoader {
), __METHOD__
);
foreach ( $res as $row ) {
- $this->getModule( $row->mr_resource )->setMsgBlobMtime( $lang,
+ $this->getModule( $row->mr_resource )->setMsgBlobMtime( $lang,
wfTimestamp( TS_UNIX, $row->mr_timestamp ) );
unset( $modulesWithoutMessages[$row->mr_resource] );
}
- }
+ }
foreach ( array_keys( $modulesWithoutMessages ) as $name ) {
$this->getModule( $name )->setMsgBlobMtime( $lang, 0 );
}
@@ -108,14 +108,14 @@ class ResourceLoader {
/**
* Runs JavaScript or CSS data through a filter, caching the filtered result for future calls.
- *
+ *
* Available filters are:
* - minify-js \see JavaScriptMinifier::minify
* - minify-css \see CSSMin::minify
- *
- * If $data is empty, only contains whitespace or the filter was unknown,
+ *
+ * If $data is empty, only contains whitespace or the filter was unknown,
* $data is returned unmodified.
- *
+ *
* @param $filter String: Name of filter to run
* @param $data String: Text to filter, such as JavaScript or CSS text
* @return String: Filtered data, or a comment containing an error message
@@ -124,10 +124,10 @@ class ResourceLoader {
global $wgResourceLoaderMinifierStatementsOnOwnLine, $wgResourceLoaderMinifierMaxLineLength;
wfProfileIn( __METHOD__ );
- // For empty/whitespace-only data or for unknown filters, don't perform
+ // For empty/whitespace-only data or for unknown filters, don't perform
// any caching or processing
- if ( trim( $data ) === ''
- || !in_array( $filter, array( 'minify-js', 'minify-css' ) ) )
+ if ( trim( $data ) === ''
+ || !in_array( $filter, array( 'minify-js', 'minify-css' ) ) )
{
wfProfileOut( __METHOD__ );
return $data;
@@ -135,7 +135,7 @@ class ResourceLoader {
// Try for cache hit
// Use CACHE_ANYTHING since filtering is very slow compared to DB queries
- $key = wfMemcKey( 'resourceloader', 'filter', $filter, md5( $data ) );
+ $key = wfMemcKey( 'resourceloader', 'filter', $filter, self::$filterCacheVersion, md5( $data ) );
$cache = wfGetCache( CACHE_ANYTHING );
$cacheEntry = $cache->get( $key );
if ( is_string( $cacheEntry ) ) {
@@ -143,6 +143,7 @@ class ResourceLoader {
return $cacheEntry;
}
+ $result = '';
// Run the filter - we've already verified one of these will work
try {
switch ( $filter ) {
@@ -151,9 +152,11 @@ class ResourceLoader {
$wgResourceLoaderMinifierStatementsOnOwnLine,
$wgResourceLoaderMinifierMaxLineLength
);
+ $result .= "\n\n/* cache key: $key */\n";
break;
case 'minify-css':
$result = CSSMin::minify( $data );
+ $result .= "\n\n/* cache key: $key */\n";
break;
}
@@ -165,7 +168,7 @@ class ResourceLoader {
}
wfProfileOut( __METHOD__ );
-
+
return $result;
}
@@ -176,24 +179,24 @@ class ResourceLoader {
*/
public function __construct() {
global $IP, $wgResourceModules;
-
+
wfProfileIn( __METHOD__ );
-
+
// Register core modules
$this->register( include( "$IP/resources/Resources.php" ) );
// Register extension modules
wfRunHooks( 'ResourceLoaderRegisterModules', array( &$this ) );
$this->register( $wgResourceModules );
-
+
wfProfileOut( __METHOD__ );
}
/**
* Registers a module with the ResourceLoader system.
- *
+ *
* @param $name Mixed: Name of module as a string or List of name/object pairs as an array
- * @param $info Module info array. For backwards compatibility with 1.17alpha,
- * this may also be a ResourceLoaderModule object. Optional when using
+ * @param $info Module info array. For backwards compatibility with 1.17alpha,
+ * this may also be a ResourceLoaderModule object. Optional when using
* multiple-registration calling style.
* @throws MWException: If a duplicate module registration is attempted
* @throws MWException: If a module name contains illegal characters (pipes or commas)
@@ -217,14 +220,14 @@ class ResourceLoader {
if ( isset( $this->moduleInfos[$name] ) ) {
// A module has already been registered by this name
throw new MWException(
- 'ResourceLoader duplicate registration error. ' .
+ 'ResourceLoader duplicate registration error. ' .
'Another module has already been registered as ' . $name
);
}
-
+
// Check $name for illegal characters
- if ( preg_match( '/[|,]/', $name ) ) {
- throw new MWException( "ResourceLoader module name '$name' is invalid. Names may not contain pipes (|) or commas (,)" );
+ if ( preg_match( '/[|,!]/', $name ) ) {
+ throw new MWException( "ResourceLoader module name '$name' is invalid. Names may not contain pipes (|), commas (,) or exclamation marks (!)" );
}
// Attach module
@@ -232,7 +235,7 @@ class ResourceLoader {
// Old calling convention
// Validate the input
if ( !( $info instanceof ResourceLoaderModule ) ) {
- throw new MWException( 'ResourceLoader invalid module error. ' .
+ throw new MWException( 'ResourceLoader invalid module error. ' .
'Instances of ResourceLoaderModule expected.' );
}
@@ -260,7 +263,7 @@ class ResourceLoader {
* Get the ResourceLoaderModule object for a given module name.
*
* @param $name String: Module name
- * @return Mixed: ResourceLoaderModule if module has been registered, null otherwise
+ * @return ResourceLoaderModule if module has been registered, null otherwise
*/
public function getModule( $name ) {
if ( !isset( $this->modules[$name] ) ) {
@@ -295,7 +298,7 @@ class ResourceLoader {
*/
public function respond( ResourceLoaderContext $context ) {
global $wgResourceLoaderMaxage, $wgCacheEpoch;
-
+
// Buffer output to catch warnings. Normally we'd use ob_clean() on the
// top-level output buffer to clear warnings, but that breaks when ob_gzhandler
// is used: ob_clean() will clear the GZIP header in that case and it won't come
@@ -319,13 +322,13 @@ class ResourceLoader {
}
}
- // If a version wasn't specified we need a shorter expiry time for updates
+ // If a version wasn't specified we need a shorter expiry time for updates
// to propagate to clients quickly
if ( is_null( $context->getVersion() ) ) {
$maxage = $wgResourceLoaderMaxage['unversioned']['client'];
$smaxage = $wgResourceLoaderMaxage['unversioned']['server'];
}
- // If a version was specified we can use a longer expiry time since changing
+ // If a version was specified we can use a longer expiry time since changing
// version numbers causes cache misses
else {
$maxage = $wgResourceLoaderMaxage['versioned']['client'];
@@ -343,7 +346,7 @@ class ResourceLoader {
wfProfileIn( __METHOD__.'-getModifiedTime' );
$private = false;
- // To send Last-Modified and support If-Modified-Since, we need to detect
+ // To send Last-Modified and support If-Modified-Since, we need to detect
// the last modified time
$mtime = wfTimestamp( TS_UNIX, $wgCacheEpoch );
foreach ( $modules as $module ) {
@@ -387,7 +390,8 @@ class ResourceLoader {
// Some clients send "timestamp;length=123". Strip the part after the first ';'
// so we get a valid timestamp.
$ims = $context->getRequest()->getHeader( 'If-Modified-Since' );
- if ( $ims !== false ) {
+ // Never send 304s in debug mode
+ if ( $ims !== false && !$context->getDebug() ) {
$imsTS = strtok( $ims, ';' );
if ( $mtime <= wfTimestamp( TS_UNIX, $imsTS ) ) {
// There's another bug in ob_gzhandler (see also the comment at
@@ -406,17 +410,17 @@ class ResourceLoader {
for ( $i = 0; $i < ob_get_level(); $i++ ) {
ob_end_clean();
}
-
+
header( 'HTTP/1.0 304 Not Modified' );
header( 'Status: 304 Not Modified' );
wfProfileOut( __METHOD__ );
return;
}
}
-
+
// Generate a response
$response = $this->makeModuleResponse( $context, $modules, $missing );
-
+
// Prepend comments indicating exceptions
$response = $exceptions . $response;
@@ -435,21 +439,21 @@ class ResourceLoader {
/**
* Generates code for a response
- *
+ *
* @param $context ResourceLoaderContext: Context in which to generate a response
* @param $modules Array: List of module objects keyed by module name
* @param $missing Array: List of unavailable modules (optional)
* @return String: Response data
*/
- public function makeModuleResponse( ResourceLoaderContext $context,
- array $modules, $missing = array() )
+ public function makeModuleResponse( ResourceLoaderContext $context,
+ array $modules, $missing = array() )
{
$out = '';
$exceptions = '';
if ( $modules === array() && $missing === array() ) {
return '/* No modules requested. Max made me put this here */';
}
-
+
wfProfileIn( __METHOD__ );
// Pre-fetch blobs
if ( $context->shouldIncludeMessages() ) {
@@ -467,18 +471,33 @@ class ResourceLoader {
foreach ( $modules as $name => $module ) {
wfProfileIn( __METHOD__ . '-' . $name );
try {
- // Scripts
$scripts = '';
if ( $context->shouldIncludeScripts() ) {
- // bug 27054: Append semicolon to prevent weird bugs
- // caused by files not terminating their statements right
- $scripts .= $module->getScript( $context ) . ";\n";
+ // If we are in debug mode, we'll want to return an array of URLs if possible
+ // However, we can't do this if the module doesn't support it
+ // We also can't do this if there is an only= parameter, because we have to give
+ // the module a way to return a load.php URL without causing an infinite loop
+ if ( $context->getDebug() && !$context->getOnly() && $module->supportsURLLoading() ) {
+ $scripts = $module->getScriptURLsForDebug( $context );
+ } else {
+ $scripts = $module->getScript( $context );
+ if ( is_string( $scripts ) ) {
+ // bug 27054: Append semicolon to prevent weird bugs
+ // caused by files not terminating their statements right
+ $scripts .= ";\n";
+ }
+ }
}
-
// Styles
$styles = array();
if ( $context->shouldIncludeStyles() ) {
- $styles = $module->getStyles( $context );
+ // If we are in debug mode, we'll want to return an array of URLs
+ // See comment near shouldIncludeScripts() for more details
+ if ( $context->getDebug() && !$context->getOnly() && $module->supportsURLLoading() ) {
+ $styles = $module->getStyleURLsForDebug( $context );
+ } else {
+ $styles = $module->getStyles( $context );
+ }
}
// Messages
@@ -487,7 +506,11 @@ class ResourceLoader {
// Append output
switch ( $context->getOnly() ) {
case 'scripts':
- $out .= $scripts;
+ if ( is_string( $scripts ) ) {
+ $out .= $scripts;
+ } elseif ( is_array( $scripts ) ) {
+ $out .= self::makeLoaderImplementScript( $name, $scripts, array(), array() );
+ }
break;
case 'styles':
$out .= self::makeCombinedStyles( $styles );
@@ -496,11 +519,13 @@ class ResourceLoader {
$out .= self::makeMessageSetScript( new XmlJsCode( $messagesBlob ) );
break;
default:
- // Minify CSS before embedding in mediaWiki.loader.implement call
+ // Minify CSS before embedding in mw.loader.implement call
// (unless in debug mode)
if ( !$context->getDebug() ) {
foreach ( $styles as $media => $style ) {
- $styles[$media] = $this->filter( 'minify-css', $style );
+ if ( is_string( $style ) ) {
+ $styles[$media] = $this->filter( 'minify-css', $style );
+ }
}
}
$out .= self::makeLoaderImplementScript( $name, $scripts, $styles,
@@ -521,10 +546,10 @@ class ResourceLoader {
// Update module states
if ( $context->shouldIncludeScripts() ) {
// Set the state of modules loaded as only scripts to ready
- if ( count( $modules ) && $context->getOnly() === 'scripts'
- && !isset( $modules['startup'] ) )
+ if ( count( $modules ) && $context->getOnly() === 'scripts'
+ && !isset( $modules['startup'] ) )
{
- $out .= self::makeLoaderStateScript(
+ $out .= self::makeLoaderStateScript(
array_fill_keys( array_keys( $modules ), 'ready' ) );
}
// Set the state of modules which were requested but unavailable as missing
@@ -540,7 +565,7 @@ class ResourceLoader {
$out = $this->filter( 'minify-js', $out );
}
}
-
+
wfProfileOut( __METHOD__ );
return $exceptions . $out;
}
@@ -548,26 +573,30 @@ class ResourceLoader {
/* Static Methods */
/**
- * Returns JS code to call to mediaWiki.loader.implement for a module with
+ * Returns JS code to call to mw.loader.implement for a module with
* given properties.
*
* @param $name Module name
- * @param $scripts Array: List of JavaScript code snippets to be executed after the
- * module is loaded
- * @param $styles Array: List of CSS strings keyed by media type
- * @param $messages Mixed: List of messages associated with this module. May either be an
+ * @param $scripts Mixed: List of URLs to JavaScript files or String of JavaScript code
+ * @param $styles Mixed: List of CSS strings keyed by media type, or list of lists of URLs to
+ * CSS files keyed by media type
+ * @param $messages Mixed: List of messages associated with this module. May either be an
* associative array mapping message key to value, or a JSON-encoded message blob containing
* the same data, wrapped in an XmlJsCode object.
+ *
+ * @return string
*/
public static function makeLoaderImplementScript( $name, $scripts, $styles, $messages ) {
- if ( is_array( $scripts ) ) {
- $scripts = implode( $scripts, "\n" );
+ if ( is_string( $scripts ) ) {
+ $scripts = new XmlJsCode( "function( $ ) {{$scripts}}" );
+ } elseif ( !is_array( $scripts ) ) {
+ throw new MWException( 'Invalid scripts error. Array of URLs or string of code expected.' );
}
- return Xml::encodeJsCall(
- 'mediaWiki.loader.implement',
+ return Xml::encodeJsCall(
+ 'mw.loader.implement',
array(
$name,
- new XmlJsCode( "function( $, mw ) {{$scripts}}" ),
+ $scripts,
(object)$styles,
(object)$messages
) );
@@ -578,16 +607,20 @@ class ResourceLoader {
*
* @param $messages Mixed: Either an associative array mapping message key to value, or a
* JSON-encoded message blob containing the same data, wrapped in an XmlJsCode object.
+ *
+ * @return string
*/
public static function makeMessageSetScript( $messages ) {
- return Xml::encodeJsCall( 'mediaWiki.messages.set', array( (object)$messages ) );
+ return Xml::encodeJsCall( 'mw.messages.set', array( (object)$messages ) );
}
/**
- * Combines an associative array mapping media type to CSS into a
+ * Combines an associative array mapping media type to CSS into a
* single stylesheet with @media blocks.
*
* @param $styles Array: List of CSS strings keyed by media type
+ *
+ * @return string
*/
public static function makeCombinedStyles( array $styles ) {
$out = '';
@@ -595,10 +628,10 @@ class ResourceLoader {
// Transform the media type based on request params and config
// The way that this relies on $wgRequest to propagate request params is slightly evil
$media = OutputPage::transformCssMedia( $media );
-
+
if ( $media === null ) {
// Skip
- } else if ( $media === '' || $media == 'all' ) {
+ } elseif ( $media === '' || $media == 'all' ) {
// Don't output invalid or frivolous @media statements
$out .= "$style\n";
} else {
@@ -609,7 +642,7 @@ class ResourceLoader {
}
/**
- * Returns a JS call to mediaWiki.loader.state, which sets the state of a
+ * Returns a JS call to mw.loader.state, which sets the state of a
* module or modules to a given value. Has two calling conventions:
*
* - ResourceLoader::makeLoaderStateScript( $name, $state ):
@@ -617,36 +650,43 @@ class ResourceLoader {
*
* - ResourceLoader::makeLoaderStateScript( array( $name => $state, ... ) ):
* Set the state of modules with the given names to the given states
+ *
+ * @param $name string
+ * @param $state
+ *
+ * @return string
*/
public static function makeLoaderStateScript( $name, $state = null ) {
if ( is_array( $name ) ) {
- return Xml::encodeJsCall( 'mediaWiki.loader.state', array( $name ) );
+ return Xml::encodeJsCall( 'mw.loader.state', array( $name ) );
} else {
- return Xml::encodeJsCall( 'mediaWiki.loader.state', array( $name, $state ) );
+ return Xml::encodeJsCall( 'mw.loader.state', array( $name, $state ) );
}
}
/**
* Returns JS code which calls the script given by $script. The script will
- * be called with local variables name, version, dependencies and group,
- * which will have values corresponding to $name, $version, $dependencies
- * and $group as supplied.
+ * be called with local variables name, version, dependencies and group,
+ * which will have values corresponding to $name, $version, $dependencies
+ * and $group as supplied.
*
* @param $name String: Module name
* @param $version Integer: Module version number as a timestamp
* @param $dependencies Array: List of module names on which this module depends
* @param $group String: Group which the module is in.
* @param $script String: JavaScript code
+ *
+ * @return string
*/
public static function makeCustomLoaderScript( $name, $version, $dependencies, $group, $script ) {
$script = str_replace( "\n", "\n\t", trim( $script ) );
- return Xml::encodeJsCall(
+ return Xml::encodeJsCall(
"( function( name, version, dependencies, group ) {\n\t$script\n} )",
array( $name, $version, $dependencies, $group ) );
}
/**
- * Returns JS code which calls mediaWiki.loader.register with the given
+ * Returns JS code which calls mw.loader.register with the given
* parameters. Has three calling conventions:
*
* - ResourceLoader::makeLoaderRegisterScript( $name, $version, $dependencies, $group ):
@@ -666,43 +706,49 @@ class ResourceLoader {
* @param $version Integer: Module version number as a timestamp
* @param $dependencies Array: List of module names on which this module depends
* @param $group String: group which the module is in.
+ *
+ * @return string
*/
- public static function makeLoaderRegisterScript( $name, $version = null,
- $dependencies = null, $group = null )
+ public static function makeLoaderRegisterScript( $name, $version = null,
+ $dependencies = null, $group = null )
{
if ( is_array( $name ) ) {
- return Xml::encodeJsCall( 'mediaWiki.loader.register', array( $name ) );
+ return Xml::encodeJsCall( 'mw.loader.register', array( $name ) );
} else {
$version = (int) $version > 1 ? (int) $version : 1;
- return Xml::encodeJsCall( 'mediaWiki.loader.register',
+ return Xml::encodeJsCall( 'mw.loader.register',
array( $name, $version, $dependencies, $group ) );
}
}
/**
- * Returns JS code which runs given JS code if the client-side framework is
+ * Returns JS code which runs given JS code if the client-side framework is
* present.
*
* @param $script String: JavaScript code
+ *
+ * @return string
*/
public static function makeLoaderConditionalScript( $script ) {
$script = str_replace( "\n", "\n\t", trim( $script ) );
- return "if ( window.mediaWiki ) {\n\t$script\n}\n";
+ return "if(window.mw){\n\t$script\n}\n";
}
/**
- * Returns JS code which will set the MediaWiki configuration array to
+ * Returns JS code which will set the MediaWiki configuration array to
* the given value.
*
* @param $configuration Array: List of configuration values keyed by variable name
+ *
+ * @return string
*/
public static function makeConfigSetScript( array $configuration ) {
- return Xml::encodeJsCall( 'mediaWiki.config.set', array( $configuration ) );
+ return Xml::encodeJsCall( 'mw.config.set', array( $configuration ) );
}
-
+
/**
* Convert an array of module names to a packed query string.
- *
+ *
* For example, array( 'foo.bar', 'foo.baz', 'bar.baz', 'bar.quux' )
* becomes 'foo.bar,baz|bar.baz,quux'
* @param $modules array of module names (strings)
@@ -716,15 +762,16 @@ class ResourceLoader {
$suffix = $pos === false ? $module : substr( $module, $pos + 1 );
$groups[$prefix][] = $suffix;
}
-
+
$arr = array();
foreach ( $groups as $prefix => $suffixes ) {
$p = $prefix === '' ? '' : $prefix . '.';
$arr[] = $p . implode( ',', $suffixes );
}
- return implode( '|', $arr );
+ $str = implode( '|', $arr );
+ return $str;
}
-
+
/**
* Determine whether debug mode was requested
* Order of priority is 1) request param, 2) cookie, 3) $wg setting
@@ -733,9 +780,71 @@ class ResourceLoader {
public static function inDebugMode() {
global $wgRequest, $wgResourceLoaderDebug;
static $retval = null;
- if ( !is_null( $retval ) )
+ if ( !is_null( $retval ) ) {
return $retval;
+ }
return $retval = $wgRequest->getFuzzyBool( 'debug',
$wgRequest->getCookie( 'resourceLoaderDebug', '', $wgResourceLoaderDebug ) );
}
+
+ /**
+ * Build a load.php URL
+ * @param $modules array of module names (strings)
+ * @param $lang string Language code
+ * @param $skin string Skin name
+ * @param $user string|null User name. If null, the &user= parameter is omitted
+ * @param $version string|null Versioning timestamp
+ * @param $debug bool Whether the request should be in debug mode
+ * @param $only string|null &only= parameter
+ * @param $printable bool Printable mode
+ * @param $handheld bool Handheld mode
+ * @param $extraQuery array Extra query parameters to add
+ * @return string URL to load.php. May be protocol-relative (if $wgLoadScript is procol-relative)
+ */
+ public static function makeLoaderURL( $modules, $lang, $skin, $user = null, $version = null, $debug = false, $only = null,
+ $printable = false, $handheld = false, $extraQuery = array() ) {
+ global $wgLoadScript;
+ $query = self::makeLoaderQuery( $modules, $lang, $skin, $user, $version, $debug,
+ $only, $printable, $handheld, $extraQuery
+ );
+
+ // Prevent the IE6 extension check from being triggered (bug 28840)
+ // by appending a character that's invalid in Windows extensions ('*')
+ return wfExpandUrl( wfAppendQuery( $wgLoadScript, $query ) . '&*', PROTO_RELATIVE );
+ }
+
+ /**
+ * Build a query array (array representation of query string) for load.php. Helper
+ * function for makeLoaderURL().
+ * @return array
+ */
+ public static function makeLoaderQuery( $modules, $lang, $skin, $user = null, $version = null, $debug = false, $only = null,
+ $printable = false, $handheld = false, $extraQuery = array() ) {
+ $query = array(
+ 'modules' => self::makePackedModulesString( $modules ),
+ 'lang' => $lang,
+ 'skin' => $skin,
+ 'debug' => $debug ? 'true' : 'false',
+ );
+ if ( $user !== null ) {
+ $query['user'] = $user;
+ }
+ if ( $version !== null ) {
+ $query['version'] = $version;
+ }
+ if ( $only !== null ) {
+ $query['only'] = $only;
+ }
+ if ( $printable ) {
+ $query['printable'] = 1;
+ }
+ if ( $handheld ) {
+ $query['handheld'] = 1;
+ }
+ $query += $extraQuery;
+
+ // Make queries uniform in order
+ ksort( $query );
+ return $query;
+ }
}
diff --git a/includes/resourceloader/ResourceLoaderContext.php b/includes/resourceloader/ResourceLoaderContext.php
index bf059b46..326b7c4a 100644
--- a/includes/resourceloader/ResourceLoaderContext.php
+++ b/includes/resourceloader/ResourceLoaderContext.php
@@ -73,6 +73,8 @@ class ResourceLoaderContext {
*/
public static function expandModuleNames( $modules ) {
$retval = array();
+ // For backwards compatibility with an earlier hack, replace ! with .
+ $modules = str_replace( '!', '.', $modules );
$exploded = explode( '|', $modules );
foreach ( $exploded as $group ) {
if ( strpos( $group, ',' ) === false ) {
@@ -98,18 +100,30 @@ class ResourceLoaderContext {
return $retval;
}
+ /**
+ * @return ResourceLoader
+ */
public function getResourceLoader() {
return $this->resourceLoader;
}
-
+
+ /**
+ * @return WebRequest
+ */
public function getRequest() {
return $this->request;
}
+ /**
+ * @return array
+ */
public function getModules() {
return $this->modules;
}
+ /**
+ * @return string
+ */
public function getLanguage() {
if ( $this->language === null ) {
global $wgLang;
@@ -121,49 +135,79 @@ class ResourceLoaderContext {
return $this->language;
}
+ /**
+ * @return string
+ */
public function getDirection() {
if ( $this->direction === null ) {
$this->direction = $this->request->getVal( 'dir' );
if ( !$this->direction ) {
- global $wgContLang;
- $this->direction = $wgContLang->getDir();
+ # directionality based on user language (see bug 6100)
+ $this->direction = Language::factory( $this->language )->getDir();
}
}
return $this->direction;
}
+ /**
+ * @return string
+ */
public function getSkin() {
return $this->skin;
}
+ /**
+ * @return string
+ */
public function getUser() {
return $this->user;
}
+ /**
+ * @return bool
+ */
public function getDebug() {
return $this->debug;
}
+ /**
+ * @return String
+ */
public function getOnly() {
return $this->only;
}
+ /**
+ * @return String
+ */
public function getVersion() {
return $this->version;
}
+ /**
+ * @return bool
+ */
public function shouldIncludeScripts() {
return is_null( $this->only ) || $this->only === 'scripts';
}
+ /**
+ * @return bool
+ */
public function shouldIncludeStyles() {
return is_null( $this->only ) || $this->only === 'styles';
}
+ /**
+ * @return bool
+ */
public function shouldIncludeMessages() {
return is_null( $this->only ) || $this->only === 'messages';
}
+ /**
+ * @return string
+ */
public function getHash() {
if ( !isset( $this->hash ) ) {
$this->hash = implode( '|', array(
diff --git a/includes/resourceloader/ResourceLoaderFileModule.php b/includes/resourceloader/ResourceLoaderFileModule.php
index 1c37eb07..f38c60ae 100644
--- a/includes/resourceloader/ResourceLoaderFileModule.php
+++ b/includes/resourceloader/ResourceLoaderFileModule.php
@@ -78,6 +78,8 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
protected $messages = array();
/** String: Name of group to load this module in */
protected $group;
+ /** String: Position on the page to load this module at */
+ protected $position = 'bottom';
/** Boolean: Link to raw files in debug mode */
protected $debugRaw = true;
/**
@@ -95,15 +97,16 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
/**
* Constructs a new module from an options array.
- *
+ *
* @param $options Array: List of options; if not given or empty, an empty module will be
* constructed
* @param $localBasePath String: Base path to prepend to all local paths in $options. Defaults
* to $IP
* @param $remoteBasePath String: Base path to prepend to all remote paths in $options. Defaults
* to $wgScriptPath
- *
- * @example $options
+ *
+ * Below is a description for the $options array:
+ * @code
* array(
* // Base path to prepend to all local paths in $options. Defaults to $IP
* 'localBasePath' => [base path],
@@ -137,14 +140,21 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
* 'messages' => [array of message key strings],
* // Group which this module should be loaded together with
* 'group' => [group name string],
+ * // Position on the page to load this module at
+ * 'position' => ['bottom' (default) or 'top']
* )
+ * @endcode
*/
- public function __construct( $options = array(), $localBasePath = null,
- $remoteBasePath = null )
+ public function __construct( $options = array(), $localBasePath = null,
+ $remoteBasePath = null )
{
- global $IP, $wgScriptPath;
+ global $IP, $wgScriptPath, $wgResourceBasePath;
$this->localBasePath = $localBasePath === null ? $IP : $localBasePath;
- $this->remoteBasePath = $remoteBasePath === null ? $wgScriptPath : $remoteBasePath;
+ if ( $remoteBasePath !== null ) {
+ $this->remoteBasePath = $remoteBasePath;
+ } else {
+ $this->remoteBasePath = $wgResourceBasePath === null ? $wgScriptPath : $wgResourceBasePath;
+ }
if ( isset( $options['remoteExtPath'] ) ) {
global $wgExtensionAssetsPath;
@@ -166,14 +176,14 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
case 'skinStyles':
if ( !is_array( $option ) ) {
throw new MWException(
- "Invalid collated file path list error. " .
+ "Invalid collated file path list error. " .
"'$option' given, array expected."
);
}
foreach ( $option as $key => $value ) {
if ( !is_string( $key ) ) {
throw new MWException(
- "Invalid collated file path list key error. " .
+ "Invalid collated file path list key error. " .
"'$key' given, string expected."
);
}
@@ -187,6 +197,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
break;
// Single strings
case 'group':
+ case 'position':
case 'localBasePath':
case 'remoteBasePath':
$this->{$member} = (string) $option;
@@ -197,39 +208,37 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
break;
}
}
- // Make sure the remote base path is a complete valid url
- $this->remoteBasePath = wfExpandUrl( $this->remoteBasePath );
+ // Make sure the remote base path is a complete valid URL,
+ // but possibly protocol-relative to avoid cache pollution
+ $this->remoteBasePath = wfExpandUrl( $this->remoteBasePath, PROTO_RELATIVE );
}
/**
* Gets all scripts for a given context concatenated together.
- *
+ *
* @param $context ResourceLoaderContext: Context in which to generate script
* @return String: JavaScript code for $context
*/
public function getScript( ResourceLoaderContext $context ) {
- $files = array_merge(
- $this->scripts,
- self::tryForKey( $this->languageScripts, $context->getLanguage() ),
- self::tryForKey( $this->skinScripts, $context->getSkin(), 'default' )
- );
- if ( $context->getDebug() ) {
- $files = array_merge( $files, $this->debugScripts );
- if ( $this->debugRaw ) {
- $script = '';
- foreach ( $files as $file ) {
- $path = $this->getRemotePath( $file );
- $script .= "\n\t" . Xml::encodeJsCall( 'mediaWiki.loader.load', array( $path ) );
- }
- return $script;
- }
- }
+ $files = $this->getScriptFiles( $context );
return $this->readScriptFiles( $files );
}
+
+ public function getScriptURLsForDebug( ResourceLoaderContext $context ) {
+ $urls = array();
+ foreach ( $this->getScriptFiles( $context ) as $file ) {
+ $urls[] = $this->getRemotePath( $file );
+ }
+ return $urls;
+ }
+
+ public function supportsURLLoading() {
+ return $this->debugRaw;
+ }
/**
* Gets loader script.
- *
+ *
* @return String: JavaScript code to be added to startup module
*/
public function getLoaderScript() {
@@ -241,29 +250,19 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
/**
* Gets all styles for a given context concatenated together.
- *
+ *
* @param $context ResourceLoaderContext: Context in which to generate styles
* @return String: CSS code for $context
*/
public function getStyles( ResourceLoaderContext $context ) {
- // Merge general styles and skin specific styles, retaining media type collation
- $styles = $this->readStyleFiles( $this->styles, $this->getFlip( $context ) );
- $skinStyles = $this->readStyleFiles(
- self::tryForKey( $this->skinStyles, $context->getSkin(), 'default' ),
+ $styles = $this->readStyleFiles(
+ $this->getStyleFiles( $context ),
$this->getFlip( $context )
);
-
- foreach ( $skinStyles as $media => $style ) {
- if ( isset( $styles[$media] ) ) {
- $styles[$media] .= $style;
- } else {
- $styles[$media] = $style;
- }
- }
// 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() ) ) {
+ if ( $this->localFileRefs !== $this->getFileDependencies( $context->getSkin() ) && !wfReadOnly() ) {
$dbw = wfGetDB( DB_MASTER );
$dbw->replace( 'module_deps',
array( array( 'md_module', 'md_skin' ) ), array(
@@ -276,9 +275,20 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
return $styles;
}
+ public function getStyleURLsForDebug( ResourceLoaderContext $context ) {
+ $urls = array();
+ foreach ( $this->getStyleFiles( $context ) as $mediaType => $list ) {
+ $urls[$mediaType] = array();
+ foreach ( $list as $file ) {
+ $urls[$mediaType][] = $this->getRemotePath( $file );
+ }
+ }
+ return $urls;
+ }
+
/**
* Gets list of message keys used by this module.
- *
+ *
* @return Array: List of message keys
*/
public function getMessages() {
@@ -287,7 +297,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
/**
* Gets the name of the group this module should be loaded in.
- *
+ *
* @return String: Group name
*/
public function getGroup() {
@@ -295,8 +305,15 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
}
/**
+ * @return string
+ */
+ public function getPosition() {
+ return $this->position;
+ }
+
+ /**
* Gets list of names of modules this module depends on.
- *
+ *
* @return Array: List of module names
*/
public function getDependencies() {
@@ -305,14 +322,14 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
/**
* Get the last modified timestamp of this module.
- *
- * Last modified timestamps are calculated from the highest last modified
- * timestamp of this module's constituent files as well as the files it
- * depends on. This function is context-sensitive, only performing
- * calculations on files relevant to the given language, skin and debug
+ *
+ * Last modified timestamps are calculated from the highest last modified
+ * timestamp of this module's constituent files as well as the files it
+ * depends on. This function is context-sensitive, only performing
+ * calculations on files relevant to the given language, skin and debug
* mode.
- *
- * @param $context ResourceLoaderContext: Context in which to calculate
+ *
+ * @param $context ResourceLoaderContext: Context in which to calculate
* the modified time
* @return Integer: UNIX timestamp
* @see ResourceLoaderModule::getFileDependencies
@@ -322,23 +339,23 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
return $this->modifiedTime[$context->getHash()];
}
wfProfileIn( __METHOD__ );
-
+
$files = array();
-
+
// Flatten style files into $files
$styles = self::collateFilePathListByOption( $this->styles, 'media', 'all' );
foreach ( $styles as $styleFiles ) {
$files = array_merge( $files, $styleFiles );
}
$skinFiles = self::tryForKey(
- self::collateFilePathListByOption( $this->skinStyles, 'media', 'all' ),
- $context->getSkin(),
+ self::collateFilePathListByOption( $this->skinStyles, 'media', 'all' ),
+ $context->getSkin(),
'default'
);
foreach ( $skinFiles as $styleFiles ) {
$files = array_merge( $files, $styleFiles );
}
-
+
// Final merge, this should result in a master list of dependent files
$files = array_merge(
$files,
@@ -351,39 +368,47 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
$files = array_map( array( $this, 'getLocalPath' ), $files );
// File deps need to be treated separately because they're already prefixed
$files = array_merge( $files, $this->getFileDependencies( $context->getSkin() ) );
-
- // If a module is nothing but a list of dependencies, we need to avoid
+
+ // If a module is nothing but a list of dependencies, we need to avoid
// giving max() an empty array
if ( count( $files ) === 0 ) {
wfProfileOut( __METHOD__ );
return $this->modifiedTime[$context->getHash()] = 1;
}
-
+
wfProfileIn( __METHOD__.'-filemtime' );
- $filesMtime = max( array_map( array( __CLASS__, 'safeFilemtime' ), $files ) );
+ $filesMtime = max( array_map( 'filemtime', $files ) );
wfProfileOut( __METHOD__.'-filemtime' );
- $this->modifiedTime[$context->getHash()] = max(
- $filesMtime,
+ $this->modifiedTime[$context->getHash()] = max(
+ $filesMtime,
$this->getMsgBlobMtime( $context->getLanguage() ) );
wfProfileOut( __METHOD__ );
return $this->modifiedTime[$context->getHash()];
}
- /* Protected Members */
+ /* Protected Methods */
+ /**
+ * @param $path string
+ * @return string
+ */
protected function getLocalPath( $path ) {
return "{$this->localBasePath}/$path";
}
-
+
+ /**
+ * @param $path string
+ * @return string
+ */
protected function getRemotePath( $path ) {
return "{$this->remoteBasePath}/$path";
}
/**
* Collates file paths by option (where provided).
- *
- * @param $list Array: List of file paths in any combination of index/path
+ *
+ * @param $list Array: List of file paths in any combination of index/path
* or path/options pairs
* @param $option String: option name
* @param $default Mixed: default value if the option isn't set
@@ -398,7 +423,7 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
$collatedFiles[$default] = array();
}
$collatedFiles[$default][] = $value;
- } else if ( is_array( $value ) ) {
+ } elseif ( is_array( $value ) ) {
// File name as the key, options array as the value
$optionValue = isset( $value[$option] ) ? $value[$option] : $default;
if ( !isset( $collatedFiles[$optionValue] ) ) {
@@ -412,19 +437,19 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
/**
* Gets a list of element that match a key, optionally using a fallback key.
- *
+ *
* @param $list Array: List of lists to select from
* @param $key String: Key to look for in $map
* @param $fallback String: Key to look for in $list if $key doesn't exist
- * @return Array: List of elements from $map which matched $key or $fallback,
+ * @return Array: List of elements from $map which matched $key or $fallback,
* or an empty list in case of no match
*/
protected static function tryForKey( array $list, $key, $fallback = null ) {
if ( isset( $list[$key] ) && is_array( $list[$key] ) ) {
return $list[$key];
- } else if ( is_string( $fallback )
- && isset( $list[$fallback] )
- && is_array( $list[$fallback] ) )
+ } elseif ( is_string( $fallback )
+ && isset( $list[$fallback] )
+ && is_array( $list[$fallback] ) )
{
return $list[$fallback];
}
@@ -432,23 +457,56 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
}
/**
+ * Gets a list of file paths for all scripts in this module, in order of propper execution.
+ *
+ * @param $context ResourceLoaderContext: Context
+ * @return Array: List of file paths
+ */
+ protected function getScriptFiles( ResourceLoaderContext $context ) {
+ $files = array_merge(
+ $this->scripts,
+ self::tryForKey( $this->languageScripts, $context->getLanguage() ),
+ self::tryForKey( $this->skinScripts, $context->getSkin(), 'default' )
+ );
+ if ( $context->getDebug() ) {
+ $files = array_merge( $files, $this->debugScripts );
+ }
+ return $files;
+ }
+
+ /**
+ * Gets a list of file paths for all styles in this module, in order of propper inclusion.
+ *
+ * @param $context ResourceLoaderContext: Context
+ * @return Array: List of file paths
+ */
+ protected function getStyleFiles( ResourceLoaderContext $context ) {
+ return array_merge_recursive(
+ self::collateFilePathListByOption( $this->styles, 'media', 'all' ),
+ self::collateFilePathListByOption(
+ self::tryForKey( $this->skinStyles, $context->getSkin(), 'default' ), 'media', 'all'
+ )
+ );
+ }
+
+ /**
* Gets the contents of a list of JavaScript files.
- *
+ *
* @param $scripts Array: List of file paths to scripts to read, remap and concetenate
* @return String: Concatenated and remapped JavaScript data from $scripts
*/
protected function readScriptFiles( array $scripts ) {
+ global $wgResourceLoaderValidateStaticJS;
if ( empty( $scripts ) ) {
return '';
}
- global $wgResourceLoaderValidateStaticJS;
$js = '';
foreach ( array_unique( $scripts ) as $fileName ) {
$localPath = $this->getLocalPath( $fileName );
- if ( !file_exists( $localPath ) ) {
+ $contents = file_get_contents( $localPath );
+ if ( $contents === false ) {
throw new MWException( __METHOD__.": script file not found: \"$localPath\"" );
}
- $contents = file_get_contents( $localPath );
if ( $wgResourceLoaderValidateStaticJS ) {
// Static files don't really need to be checked as often; unlike
// on-wiki module they shouldn't change unexpectedly without
@@ -462,16 +520,19 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
/**
* Gets the contents of a list of CSS files.
- *
- * @param $styles Array: List of file paths to styles to read, remap and concetenate
- * @return Array: List of concatenated and remapped CSS data from $styles,
+ *
+ * @param $styles Array: List of media type/list of file paths pairs, to read, remap and
+ * concetenate
+ *
+ * @param $flip bool
+ *
+ * @return Array: List of concatenated and remapped CSS data from $styles,
* keyed by media type
*/
protected function readStyleFiles( array $styles, $flip ) {
if ( empty( $styles ) ) {
return array();
}
- $styles = self::collateFilePathListByOption( $styles, 'media', 'all' );
foreach ( $styles as $media => $files ) {
$uniqueFiles = array_unique( $files );
$styles[$media] = implode(
@@ -488,49 +549,38 @@ class ResourceLoaderFileModule extends ResourceLoaderModule {
/**
* Reads a style file.
- *
+ *
* This method can be used as a callback for array_map()
- *
- * @param $path String: File path of style file to read
+ *
+ * @param $path String: File path of script file to read
+ * @param $flip bool
+ *
* @return String: CSS data in script file
- * @throws MWException if the file doesn't exist
*/
- protected function readStyleFile( $path, $flip ) {
+ protected function readStyleFile( $path, $flip ) {
$localPath = $this->getLocalPath( $path );
- if ( !file_exists( $localPath ) ) {
+ $style = file_get_contents( $localPath );
+ if ( $style === false ) {
throw new MWException( __METHOD__.": style file not found: \"$localPath\"" );
}
- $style = file_get_contents( $localPath );
if ( $flip ) {
$style = CSSJanus::transform( $style, true, false );
}
- $dir = $this->getLocalPath( dirname( $path ) );
- $remoteDir = $this->getRemotePath( dirname( $path ) );
+ $dirname = dirname( $path );
+ if ( $dirname == '.' ) {
+ // If $path doesn't have a directory component, don't prepend a dot
+ $dirname = '';
+ }
+ $dir = $this->getLocalPath( $dirname );
+ $remoteDir = $this->getRemotePath( $dirname );
// Get and register local file references
- $this->localFileRefs = array_merge(
- $this->localFileRefs,
+ $this->localFileRefs = array_merge(
+ $this->localFileRefs,
CSSMin::getLocalFileReferences( $style, $dir ) );
return CSSMin::remap(
$style, $dir, $remoteDir, true
);
}
-
- /**
- * Safe version of filemtime(), which doesn't throw a PHP warning if the file doesn't exist
- * but returns 1 instead.
- * @param $filename string File name
- * @return int UNIX timestamp, or 1 if the file doesn't exist
- */
- protected static function safeFilemtime( $filename ) {
- if ( file_exists( $filename ) ) {
- return filemtime( $filename );
- } else {
- // We only ever map this function on an array if we're gonna call max() after,
- // so return our standard minimum timestamps here. This is 1, not 0, because
- // wfTimestamp(0) == NOW
- return 1;
- }
- }
/**
* Get whether CSS for this module should be flipped
diff --git a/includes/resourceloader/ResourceLoaderFilePageModule.php b/includes/resourceloader/ResourceLoaderFilePageModule.php
new file mode 100644
index 00000000..fc9aef1b
--- /dev/null
+++ b/includes/resourceloader/ResourceLoaderFilePageModule.php
@@ -0,0 +1,11 @@
+<?php
+/*
+ * ResourceLoader definition for MediaWiki:Filepage.css
+ */
+class ResourceLoaderFilePageModule extends ResourceLoaderWikiModule {
+ protected function getPages( ResourceLoaderContext $context ) {
+ return array(
+ 'MediaWiki:Filepage.css' => array( 'type' => 'style' ),
+ );
+ }
+}
diff --git a/includes/resourceloader/ResourceLoaderModule.php b/includes/resourceloader/ResourceLoaderModule.php
index 77d230c9..ae1be5af 100644
--- a/includes/resourceloader/ResourceLoaderModule.php
+++ b/includes/resourceloader/ResourceLoaderModule.php
@@ -24,6 +24,34 @@
* Abstraction for resource loader modules, with name registration and maxage functionality.
*/
abstract class ResourceLoaderModule {
+
+ # Type of resource
+ const TYPE_SCRIPTS = 'scripts';
+ const TYPE_STYLES = 'styles';
+ const TYPE_MESSAGES = 'messages';
+ const TYPE_COMBINED = 'combined';
+
+ # sitewide core module like a skin file or jQuery component
+ const ORIGIN_CORE_SITEWIDE = 1;
+
+ # per-user module generated by the software
+ const ORIGIN_CORE_INDIVIDUAL = 2;
+
+ # sitewide module generated from user-editable files, like MediaWiki:Common.js, or
+ # modules accessible to multiple users, such as those generated by the Gadgets extension.
+ const ORIGIN_USER_SITEWIDE = 3;
+
+ # per-user module generated from user-editable files, like User:Me/vector.js
+ const ORIGIN_USER_INDIVIDUAL = 4;
+
+ # an access constant; make sure this is kept as the largest number in this group
+ const ORIGIN_ALL = 10;
+
+ # script and style modules form a hierarchy of trustworthiness, with core modules like
+ # skins and jQuery as most trustworthy, and user scripts as least trustworthy. We can
+ # limit the types of scripts and styles we allow to load on, say, sensitive special
+ # pages like Special:UserLogin and Special:Preferences
+ protected $origin = self::ORIGIN_CORE_SITEWIDE;
/* Protected Members */
@@ -57,10 +85,34 @@ abstract class ResourceLoaderModule {
}
/**
- * Get whether CSS for this module should be flipped
+ * Get this module's origin. This is set when the module is registered
+ * with ResourceLoader::register()
+ *
+ * @return Int ResourceLoaderModule class constant, the subclass default
+ * if not set manuall
+ */
+ public function getOrigin() {
+ return $this->origin;
+ }
+
+ /**
+ * Set this module's origin. This is called by ResourceLodaer::register()
+ * when registering the module. Other code should not call this.
+ *
+ * @param $origin Int origin
+ */
+ public function setOrigin( $origin ) {
+ $this->origin = $origin;
+ }
+
+ /**
+ * @param $context ResourceLoaderContext
+ * @return bool
*/
public function getFlip( $context ) {
- return $context->getDirection() === 'rtl';
+ global $wgContLang;
+
+ return $wgContLang->getDir() !== $context->getDirection();
}
/**
@@ -74,6 +126,44 @@ abstract class ResourceLoaderModule {
// Stub, override expected
return '';
}
+
+ /**
+ * Get the URL or URLs to load for this module's JS in debug mode.
+ * The default behavior is to return a load.php?only=scripts URL for
+ * the module, but file-based modules will want to override this to
+ * load the files directly.
+ *
+ * This function is called only when 1) we're in debug mode, 2) there
+ * is no only= parameter and 3) supportsURLLoading() returns true.
+ * #2 is important to prevent an infinite loop, therefore this function
+ * MUST return either an only= URL or a non-load.php URL.
+ *
+ * @param $context ResourceLoaderContext: Context object
+ * @return Array of URLs
+ */
+ public function getScriptURLsForDebug( ResourceLoaderContext $context ) {
+ global $wgLoadScript; // TODO factor out to ResourceLoader static method and deduplicate from makeResourceLoaderLink()
+ $query = array(
+ 'modules' => $this->getName(),
+ 'only' => 'scripts',
+ 'skin' => $context->getSkin(),
+ 'user' => $context->getUser(),
+ 'debug' => 'true',
+ 'version' => $context->getVersion()
+ );
+ ksort( $query );
+ return array( wfAppendQuery( $wgLoadScript, $query ) . '&*' );
+ }
+
+ /**
+ * Whether this module supports URL loading. If this function returns false,
+ * getScript() will be used even in cases (debug mode, no only param) where
+ * getScriptURLsForDebug() would normally be used instead.
+ * @return bool
+ */
+ public function supportsURLLoading() {
+ return true;
+ }
/**
* Get all CSS for this module for a given skin.
@@ -83,7 +173,30 @@ abstract class ResourceLoaderModule {
*/
public function getStyles( ResourceLoaderContext $context ) {
// Stub, override expected
- return '';
+ return array();
+ }
+
+ /**
+ * Get the URL or URLs to load for this module's CSS in debug mode.
+ * The default behavior is to return a load.php?only=styles URL for
+ * the module, but file-based modules will want to override this to
+ * load the files directly. See also getScriptURLsForDebug()
+ *
+ * @param $context ResourceLoaderContext: Context object
+ * @return Array: array( mediaType => array( URL1, URL2, ... ), ... )
+ */
+ public function getStyleURLsForDebug( ResourceLoaderContext $context ) {
+ global $wgLoadScript; // TODO factor out to ResourceLoader static method and deduplicate from makeResourceLoaderLink()
+ $query = array(
+ 'modules' => $this->getName(),
+ 'only' => 'styles',
+ 'skin' => $context->getSkin(),
+ 'user' => $context->getUser(),
+ 'debug' => 'true',
+ 'version' => $context->getVersion()
+ );
+ ksort( $query );
+ return array( 'all' => array( wfAppendQuery( $wgLoadScript, $query ) . '&*' ) );
}
/**
@@ -107,6 +220,17 @@ abstract class ResourceLoaderModule {
// Stub, override expected
return null;
}
+
+ /**
+ * Where on the HTML page should this module's JS be loaded?
+ * 'top': in the <head>
+ * 'bottom': at the bottom of the <body>
+ *
+ * @return string
+ */
+ public function getPosition() {
+ return 'bottom';
+ }
/**
* Get the loader JS for this module, if set.
@@ -179,7 +303,7 @@ abstract class ResourceLoaderModule {
* Get the last modification timestamp of the message blob for this
* module in a given language.
* @param $lang String: Language code
- * @return Integer: UNIX timestamp, or 0 if no blob found
+ * @return Integer: UNIX timestamp, or 0 if the module doesn't have messages
*/
public function getMsgBlobMtime( $lang ) {
if ( !isset( $this->msgBlobMtime[$lang] ) ) {
@@ -192,7 +316,12 @@ abstract class ResourceLoaderModule {
'mr_lang' => $lang
), __METHOD__
);
- $this->msgBlobMtime[$lang] = $msgBlobMtime ? wfTimestamp( TS_UNIX, $msgBlobMtime ) : 0;
+ // If no blob was found, but the module does have messages, that means we need
+ // to regenerate it. Return NOW
+ if ( $msgBlobMtime === false ) {
+ $msgBlobMtime = wfTimestampNow();
+ }
+ $this->msgBlobMtime[$lang] = wfTimestamp( TS_UNIX, $msgBlobMtime );
}
return $this->msgBlobMtime[$lang];
}
@@ -236,4 +365,54 @@ abstract class ResourceLoaderModule {
public function isKnownEmpty( ResourceLoaderContext $context ) {
return false;
}
+
+
+ /** @var JSParser lazy-initialized; use self::javaScriptParser() */
+ private static $jsParser;
+ private static $parseCacheVersion = 1;
+
+ /**
+ * Validate a given script file; if valid returns the original source.
+ * If invalid, returns replacement JS source that throws an exception.
+ *
+ * @param string $fileName
+ * @param string $contents
+ * @return string JS with the original, or a replacement error
+ */
+ protected function validateScriptFile( $fileName, $contents ) {
+ global $wgResourceLoaderValidateJS;
+ if ( $wgResourceLoaderValidateJS ) {
+ // Try for cache hit
+ // Use CACHE_ANYTHING since filtering is very slow compared to DB queries
+ $key = wfMemcKey( 'resourceloader', 'jsparse', self::$parseCacheVersion, md5( $contents ) );
+ $cache = wfGetCache( CACHE_ANYTHING );
+ $cacheEntry = $cache->get( $key );
+ if ( is_string( $cacheEntry ) ) {
+ return $cacheEntry;
+ }
+
+ $parser = self::javaScriptParser();
+ try {
+ $parser->parse( $contents, $fileName, 1 );
+ $result = $contents;
+ } catch (Exception $e) {
+ // We'll save this to cache to avoid having to validate broken JS over and over...
+ $err = $e->getMessage();
+ $result = "throw new Error(" . Xml::encodeJsVar("JavaScript parse error: $err") . ");";
+ }
+
+ $cache->set( $key, $result );
+ return $result;
+ } else {
+ return $contents;
+ }
+ }
+
+ protected static function javaScriptParser() {
+ if ( !self::$jsParser ) {
+ self::$jsParser = new JSParser();
+ }
+ return self::$jsParser;
+ }
+
}
diff --git a/includes/resourceloader/ResourceLoaderNoscriptModule.php b/includes/resourceloader/ResourceLoaderNoscriptModule.php
new file mode 100644
index 00000000..28f629a2
--- /dev/null
+++ b/includes/resourceloader/ResourceLoaderNoscriptModule.php
@@ -0,0 +1,52 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Trevor Parscal
+ * @author Roan Kattouw
+ */
+
+/**
+ * Module for site customizations
+ */
+class ResourceLoaderNoscriptModule extends ResourceLoaderWikiModule {
+
+ /* Protected Methods */
+
+ /**
+ * Gets list of pages used by this module. Obviously, it makes absolutely no
+ * sense to include JavaScript files here... :D
+ *
+ * @param $context ResourceLoaderContext
+ *
+ * @return Array: List of pages
+ */
+ protected function getPages( ResourceLoaderContext $context ) {
+ return array( 'MediaWiki:Noscript.css' => array( 'type' => 'style' ) );
+ }
+
+ /* Methods */
+
+ /**
+ * Gets group name
+ *
+ * @return String: Name of group
+ */
+ public function getGroup() {
+ return 'noscript';
+ }
+}
diff --git a/includes/resourceloader/ResourceLoaderSiteModule.php b/includes/resourceloader/ResourceLoaderSiteModule.php
index 977d16bb..2527a0a3 100644
--- a/includes/resourceloader/ResourceLoaderSiteModule.php
+++ b/includes/resourceloader/ResourceLoaderSiteModule.php
@@ -29,7 +29,9 @@ class ResourceLoaderSiteModule extends ResourceLoaderWikiModule {
/**
* Gets list of pages used by this module
- *
+ *
+ * @param $context ResourceLoaderContext
+ *
* @return Array: List of pages
*/
protected function getPages( ResourceLoaderContext $context ) {
diff --git a/includes/resourceloader/ResourceLoaderStartUpModule.php b/includes/resourceloader/ResourceLoaderStartUpModule.php
index f3117378..43f1dbd2 100644
--- a/includes/resourceloader/ResourceLoaderStartUpModule.php
+++ b/includes/resourceloader/ResourceLoaderStartUpModule.php
@@ -21,20 +21,24 @@
*/
class ResourceLoaderStartUpModule extends ResourceLoaderModule {
-
+
/* Protected Members */
protected $modifiedTime = array();
/* Protected Methods */
-
+
+ /**
+ * @param $context ResourceLoaderContext
+ * @return array
+ */
protected function getConfig( $context ) {
- global $wgLoadScript, $wgScript, $wgStylePath, $wgScriptExtension,
- $wgArticlePath, $wgScriptPath, $wgServer, $wgContLang,
- $wgVariantArticlePath, $wgActionPaths, $wgUseAjax, $wgVersion,
- $wgEnableAPI, $wgEnableWriteAPI, $wgDBname, $wgEnableMWSuggest,
+ global $wgLoadScript, $wgScript, $wgStylePath, $wgScriptExtension,
+ $wgArticlePath, $wgScriptPath, $wgServer, $wgContLang,
+ $wgVariantArticlePath, $wgActionPaths, $wgUseAjax, $wgVersion,
+ $wgEnableAPI, $wgEnableWriteAPI, $wgDBname, $wgEnableMWSuggest,
$wgSitename, $wgFileExtensions, $wgExtensionAssetsPath,
- $wgResourceLoaderMaxQueryLength;
+ $wgCookiePrefix, $wgResourceLoaderMaxQueryLength, $wgLegacyJavaScriptGlobals;
// Pre-process information
$separatorTransTable = $wgContLang->separatorTransformTable();
@@ -50,7 +54,21 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
implode( "\t", $digitTransTable ),
);
$mainPage = Title::newMainPage();
-
+
+ /**
+ * Namespace related preparation
+ * - wgNamespaceIds: Key-value pairs of all localized, canonical and aliases for namespaces.
+ * - wgCaseSensitiveNamespaces: Array of namespaces that are case-sensitive.
+ */
+ $namespaceIds = $wgContLang->getNamespaceIds();
+ $caseSensitiveNamespaces = array();
+ foreach( MWNamespace::getCanonicalNamespaces() as $index => $name ) {
+ $namespaceIds[$wgContLang->lc( $name )] = $index;
+ if ( !MWNamespace::isCapitalized( $index ) ) {
+ $caseSensitiveNamespaces[] = $index;
+ }
+ }
+
// Build list of variables
$vars = array(
'wgLoadScript' => $wgLoadScript,
@@ -70,29 +88,37 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
'wgVersion' => $wgVersion,
'wgEnableAPI' => $wgEnableAPI,
'wgEnableWriteAPI' => $wgEnableWriteAPI,
+ 'wgDefaultDateFormat' => $wgContLang->getDefaultDateFormat(),
+ 'wgMonthNames' => $wgContLang->getMonthNamesArray(),
+ 'wgMonthNamesShort' => $wgContLang->getMonthAbbreviationsArray(),
'wgSeparatorTransformTable' => $compactSeparatorTransTable,
'wgDigitTransformTable' => $compactDigitTransTable,
'wgMainPageTitle' => $mainPage ? $mainPage->getPrefixedText() : null,
'wgFormattedNamespaces' => $wgContLang->getFormattedNamespaces(),
- 'wgNamespaceIds' => $wgContLang->getNamespaceIds(),
+ 'wgNamespaceIds' => $namespaceIds,
'wgSiteName' => $wgSitename,
'wgFileExtensions' => array_values( $wgFileExtensions ),
'wgDBname' => $wgDBname,
+ // This sucks, it is only needed on Special:Upload, but I could
+ // not find a way to add vars only for a certain module
+ 'wgFileCanRotate' => BitmapHandler::canRotate(),
+ 'wgAvailableSkins' => Skin::getSkinNames(),
'wgExtensionAssetsPath' => $wgExtensionAssetsPath,
+ // MediaWiki sets cookies to have this prefix by default
+ 'wgCookiePrefix' => $wgCookiePrefix,
'wgResourceLoaderMaxQueryLength' => $wgResourceLoaderMaxQueryLength,
+ 'wgLegacyJavaScriptGlobals' => $wgLegacyJavaScriptGlobals,
+ 'wgCaseSensitiveNamespaces' => $caseSensitiveNamespaces,
);
- if ( $wgContLang->hasVariants() ) {
- $vars['wgUserVariant'] = $wgContLang->getPreferredVariant();
- }
if ( $wgUseAjax && $wgEnableMWSuggest ) {
$vars['wgMWSuggestTemplate'] = SearchEngine::getMWSuggestTemplate();
}
-
+
wfRunHooks( 'ResourceLoaderGetConfigVars', array( &$vars ) );
-
+
return $vars;
}
-
+
/**
* Gets registration code for all modules
*
@@ -102,7 +128,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
public static function getModuleRegistrations( ResourceLoaderContext $context ) {
global $wgCacheEpoch;
wfProfileIn( __METHOD__ );
-
+
$out = '';
$registrations = array();
$resourceLoader = $context->getResourceLoader();
@@ -113,8 +139,8 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
if ( $loader !== false ) {
$deps = $module->getDependencies();
$group = $module->getGroup();
- $version = wfTimestamp( TS_ISO_8601_BASIC,
- round( $module->getModifiedTime( $context ), -2 ) );
+ $version = wfTimestamp( TS_ISO_8601_BASIC,
+ $module->getModifiedTime( $context ) );
$out .= ResourceLoader::makeCustomLoaderScript( $name, $version, $deps, $group, $loader );
}
// Automatically register module
@@ -123,19 +149,19 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
// seem to do that, and custom implementations might forget. Coerce it to TS_UNIX
$moduleMtime = wfTimestamp( TS_UNIX, $module->getModifiedTime( $context ) );
$mtime = max( $moduleMtime, wfTimestamp( TS_UNIX, $wgCacheEpoch ) );
- // Modules without dependencies or a group pass two arguments (name, timestamp) to
- // mediaWiki.loader.register()
+ // Modules without dependencies or a group pass two arguments (name, timestamp) to
+ // mw.loader.register()
if ( !count( $module->getDependencies() && $module->getGroup() === null ) ) {
$registrations[] = array( $name, $mtime );
}
- // Modules with dependencies but no group pass three arguments
- // (name, timestamp, dependencies) to mediaWiki.loader.register()
- else if ( $module->getGroup() === null ) {
+ // Modules with dependencies but no group pass three arguments
+ // (name, timestamp, dependencies) to mw.loader.register()
+ elseif ( $module->getGroup() === null ) {
$registrations[] = array(
$name, $mtime, $module->getDependencies() );
}
- // Modules with dependencies pass four arguments (name, timestamp, dependencies, group)
- // to mediaWiki.loader.register()
+ // Modules with dependencies pass four arguments (name, timestamp, dependencies, group)
+ // to mw.loader.register()
else {
$registrations[] = array(
$name, $mtime, $module->getDependencies(), $module->getGroup() );
@@ -143,52 +169,74 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
}
}
$out .= ResourceLoader::makeLoaderRegisterScript( $registrations );
-
+
wfProfileOut( __METHOD__ );
return $out;
}
/* Methods */
+ /**
+ * @param $context ResourceLoaderContext
+ * @return string
+ */
public function getScript( ResourceLoaderContext $context ) {
- global $IP, $wgLoadScript;
+ global $IP, $wgLoadScript, $wgLegacyJavaScriptGlobals;
$out = file_get_contents( "$IP/resources/startup.js" );
if ( $context->getOnly() === 'scripts' ) {
- // Build load query for jquery and mediawiki modules
+
+ // The core modules:
+ $modules = array( 'jquery', 'mediawiki' );
+ wfRunHooks( 'ResourceLoaderGetStartupModules', array( &$modules ) );
+
+ // Get the latest version
+ $version = 0;
+ foreach ( $modules as $moduleName ) {
+ $version = max( $version,
+ $context->getResourceLoader()->getModule( $moduleName )->getModifiedTime( $context )
+ );
+ }
+ // Build load query for StartupModules
$query = array(
- 'modules' => implode( '|', array( 'jquery', 'mediawiki' ) ),
+ 'modules' => ResourceLoader::makePackedModulesString( $modules ),
'only' => 'scripts',
'lang' => $context->getLanguage(),
'skin' => $context->getSkin(),
'debug' => $context->getDebug() ? 'true' : 'false',
- 'version' => wfTimestamp( TS_ISO_8601_BASIC, round( max(
- $context->getResourceLoader()->getModule( 'jquery' )->getModifiedTime( $context ),
- $context->getResourceLoader()->getModule( 'mediawiki' )->getModifiedTime( $context )
- ), -2 ) )
+ 'version' => wfTimestamp( TS_ISO_8601_BASIC, $version )
);
// Ensure uniform query order
ksort( $query );
-
+
// Startup function
$configuration = $this->getConfig( $context );
$registrations = self::getModuleRegistrations( $context );
- $out .= "var startUp = function() {\n" .
- "\t$registrations\n" .
- "\t" . Xml::encodeJsCall( 'mediaWiki.config.set', array( $configuration ) ) .
+ $out .= "var startUp = function() {\n" .
+ "\tmw.config = new " . Xml::encodeJsCall( 'mw.Map', array( $wgLegacyJavaScriptGlobals ) ) . "\n" .
+ "\t$registrations\n" .
+ "\t" . Xml::encodeJsCall( 'mw.config.set', array( $configuration ) ) .
"};\n";
-
+
// Conditional script injection
$scriptTag = Html::linkedScript( $wgLoadScript . '?' . wfArrayToCGI( $query ) );
- $out .= "if ( isCompatible() ) {\n" .
- "\t" . Xml::encodeJsCall( 'document.write', array( $scriptTag ) ) .
- "}\n" .
+ $out .= "if ( isCompatible() ) {\n" .
+ "\t" . Xml::encodeJsCall( 'document.write', array( $scriptTag ) ) .
+ "}\n" .
"delete isCompatible;";
}
return $out;
}
+ public function supportsURLLoading() {
+ return false;
+ }
+
+ /**
+ * @param $context ResourceLoaderContext
+ * @return array|mixed
+ */
public function getModifiedTime( ResourceLoaderContext $context ) {
global $IP, $wgCacheEpoch;
@@ -204,7 +252,7 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
$this->modifiedTime[$hash] = filemtime( "$IP/resources/startup.js" );
// ATTENTION!: Because of the line above, this is not going to cause
- // infinite recursion - think carefully before making changes to this
+ // infinite recursion - think carefully before making changes to this
// code!
$time = wfTimestamp( TS_UNIX, $wgCacheEpoch );
foreach ( $loader->getModuleNames() as $name ) {
@@ -214,14 +262,11 @@ class ResourceLoaderStartUpModule extends ResourceLoaderModule {
return $this->modifiedTime[$hash] = $time;
}
- public function getFlip( $context ) {
- global $wgContLang;
-
- return $wgContLang->getDir() !== $context->getDirection();
- }
-
/* Methods */
-
+
+ /**
+ * @return string
+ */
public function getGroup() {
return 'startup';
}
diff --git a/includes/resourceloader/ResourceLoaderUserGroupsModule.php b/includes/resourceloader/ResourceLoaderUserGroupsModule.php
new file mode 100644
index 00000000..733dfa04
--- /dev/null
+++ b/includes/resourceloader/ResourceLoaderUserGroupsModule.php
@@ -0,0 +1,59 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ */
+
+/**
+ * Module for user customizations
+ */
+class ResourceLoaderUserGroupsModule extends ResourceLoaderWikiModule {
+
+ /* Protected Methods */
+ protected $origin = self::ORIGIN_USER_SITEWIDE;
+
+ /**
+ * @param $context ResourceLoaderContext
+ * @return array
+ */
+ protected function getPages( ResourceLoaderContext $context ) {
+ if ( $context->getUser() ) {
+ $user = User::newFromName( $context->getUser() );
+ if ( $user instanceof User ) {
+ $pages = array();
+ foreach( $user->getEffectiveGroups() as $group ) {
+ if ( in_array( $group, array( '*', 'user' ) ) ) {
+ continue;
+ }
+ $pages["MediaWiki:Group-$group.js"] = array( 'type' => 'script' );
+ $pages["MediaWiki:Group-$group.css"] = array( 'type' => 'style' );
+ }
+ return $pages;
+ }
+ }
+ return array();
+ }
+
+ /* Methods */
+
+ /**
+ * @return string
+ */
+ public function getGroup() {
+ return 'user';
+ }
+}
diff --git a/includes/resourceloader/ResourceLoaderUserModule.php b/includes/resourceloader/ResourceLoaderUserModule.php
index c7186653..892e8462 100644
--- a/includes/resourceloader/ResourceLoaderUserModule.php
+++ b/includes/resourceloader/ResourceLoaderUserModule.php
@@ -26,7 +26,12 @@
class ResourceLoaderUserModule extends ResourceLoaderWikiModule {
/* Protected Methods */
+ protected $origin = self::ORIGIN_USER_INDIVIDUAL;
+ /**
+ * @param $context ResourceLoaderContext
+ * @return array
+ */
protected function getPages( ResourceLoaderContext $context ) {
if ( $context->getUser() ) {
$username = $context->getUser();
@@ -41,9 +46,12 @@ class ResourceLoaderUserModule extends ResourceLoaderWikiModule {
}
return array();
}
-
+
/* Methods */
-
+
+ /**
+ * @return string
+ */
public function getGroup() {
return 'user';
}
diff --git a/includes/resourceloader/ResourceLoaderUserOptionsModule.php b/includes/resourceloader/ResourceLoaderUserOptionsModule.php
index 61c76940..8f28eb8d 100644
--- a/includes/resourceloader/ResourceLoaderUserOptionsModule.php
+++ b/includes/resourceloader/ResourceLoaderUserOptionsModule.php
@@ -29,8 +29,14 @@ class ResourceLoaderUserOptionsModule extends ResourceLoaderModule {
protected $modifiedTime = array();
+ protected $origin = self::ORIGIN_CORE_INDIVIDUAL;
+
/* Methods */
+ /**
+ * @param $context ResourceLoaderContext
+ * @return array|int|Mixed
+ */
public function getModifiedTime( ResourceLoaderContext $context ) {
$hash = $context->getHash();
if ( isset( $this->modifiedTime[$hash] ) ) {
@@ -64,11 +70,19 @@ class ResourceLoaderUserOptionsModule extends ResourceLoaderModule {
}
}
+ /**
+ * @param $context ResourceLoaderContext
+ * @return string
+ */
public function getScript( ResourceLoaderContext $context ) {
- return Xml::encodeJsCall( 'mediaWiki.user.options.set',
+ return Xml::encodeJsCall( 'mw.user.options.set',
array( $this->contextUserOptions( $context ) ) );
}
+ /**
+ * @param $context ResourceLoaderContext
+ * @return array
+ */
public function getStyles( ResourceLoaderContext $context ) {
global $wgAllowUserCssPrefs;
@@ -80,6 +94,10 @@ class ResourceLoaderUserOptionsModule extends ResourceLoaderModule {
if ( $options['underline'] < 2 ) {
$rules[] = "a { text-decoration: " .
( $options['underline'] ? 'underline' : 'none' ) . "; }";
+ } else {
+ # The scripts of these languages are very hard to read with underlines
+ $rules[] = 'a:lang(ar), a:lang(ckb), a:lang(fa),a:lang(kk-arab), ' .
+ 'a:lang(mzn), a:lang(ps), a:lang(ur) { text-decoration: none; }';
}
if ( $options['highlightbroken'] ) {
$rules[] = "a.new, #quickbar a.new { color: #ba0000; }\n";
@@ -109,12 +127,9 @@ class ResourceLoaderUserOptionsModule extends ResourceLoaderModule {
return array();
}
- public function getFlip( $context ) {
- global $wgContLang;
-
- return $wgContLang->getDir() !== $context->getDirection();
- }
-
+ /**
+ * @return string
+ */
public function getGroup() {
return 'private';
}
diff --git a/includes/resourceloader/ResourceLoaderUserTokensModule.php b/includes/resourceloader/ResourceLoaderUserTokensModule.php
new file mode 100644
index 00000000..9403534c
--- /dev/null
+++ b/includes/resourceloader/ResourceLoaderUserTokensModule.php
@@ -0,0 +1,63 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Krinkle
+ */
+
+/**
+ * Module for user tokens
+ */
+class ResourceLoaderUserTokensModule extends ResourceLoaderModule {
+
+ /* Protected Members */
+
+ protected $origin = self::ORIGIN_CORE_INDIVIDUAL;
+
+ /* Methods */
+
+ /**
+ * Fetch the tokens for the current user.
+ *
+ * @param $context ResourceLoaderContext: Context object
+ * @return Array: List of tokens keyed by token type
+ */
+ protected function contextUserTokens( ResourceLoaderContext $context ) {
+ global $wgUser;
+
+ return array(
+ 'editToken' => $wgUser->edittoken(),
+ 'watchToken' => ApiQueryInfo::getWatchToken(null, null),
+ );
+ }
+
+ /**
+ * @param $context ResourceLoaderContext
+ * @return string
+ */
+ public function getScript( ResourceLoaderContext $context ) {
+ return Xml::encodeJsCall( 'mw.user.tokens.set',
+ array( $this->contextUserTokens( $context ) ) );
+ }
+
+ /**
+ * @return string
+ */
+ public function getGroup() {
+ return 'private';
+ }
+}
diff --git a/includes/resourceloader/ResourceLoaderWikiModule.php b/includes/resourceloader/ResourceLoaderWikiModule.php
index 93e66eb0..bad61cb9 100644
--- a/includes/resourceloader/ResourceLoaderWikiModule.php
+++ b/includes/resourceloader/ResourceLoaderWikiModule.php
@@ -32,6 +32,9 @@ defined( 'MEDIAWIKI' ) || die( 1 );
abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
/* Protected Members */
+
+ # Origin is user-supplied code
+ protected $origin = self::ORIGIN_USER_SITEWIDE;
// In-object cache for title mtimes
protected $titleMtimes = array();
@@ -41,11 +44,15 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
abstract protected function getPages( ResourceLoaderContext $context );
/* Protected Methods */
-
+
+ /**
+ * @param $title Title
+ * @return null|string
+ */
protected function getContent( $title ) {
if ( $title->getNamespace() === NS_MEDIAWIKI ) {
- $dbkey = $title->getDBkey();
- return wfEmptyMsg( $dbkey ) ? '' : wfMsgExt( $dbkey, 'content' );
+ $message = wfMessage( $title->getDBkey() )->inContentLanguage();
+ return $message->exists() ? $message->plain() : '';
}
if ( !$title->isCssJsSubpage() ) {
return null;
@@ -59,6 +66,10 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
/* Methods */
+ /**
+ * @param $context ResourceLoaderContext
+ * @return string
+ */
public function getScript( ResourceLoaderContext $context ) {
$scripts = '';
foreach ( $this->getPages( $context ) as $titleText => $options ) {
@@ -66,11 +77,12 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
continue;
}
$title = Title::newFromText( $titleText );
- if ( !$title ) {
+ if ( !$title || $title->isRedirect() ) {
continue;
}
$script = $this->getContent( $title );
if ( strval( $script ) !== '' ) {
+ $script = $this->validateScriptFile( $titleText, $script );
if ( strpos( $titleText, '*/' ) === false ) {
$scripts .= "/* $titleText */\n";
}
@@ -80,6 +92,10 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
return $scripts;
}
+ /**
+ * @param $context ResourceLoaderContext
+ * @return array
+ */
public function getStyles( ResourceLoaderContext $context ) {
global $wgScriptPath;
@@ -89,7 +105,7 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
continue;
}
$title = Title::newFromText( $titleText );
- if ( !$title ) {
+ if ( !$title || $title->isRedirect() ) {
continue;
}
$media = isset( $options['media'] ) ? $options['media'] : 'all';
@@ -112,6 +128,10 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
return $styles;
}
+ /**
+ * @param $context ResourceLoaderContext
+ * @return int|mixed
+ */
public function getModifiedTime( ResourceLoaderContext $context ) {
$modifiedTime = 1; // wfTimestamp() interprets 0 as "now"
$mtimes = $this->getTitleMtimes( $context );
@@ -120,21 +140,15 @@ abstract class ResourceLoaderWikiModule extends ResourceLoaderModule {
}
return $modifiedTime;
}
-
- public function isKnownEmpty( ResourceLoaderContext $context ) {
- return count( $this->getTitleMtimes( $context ) ) == 0;
- }
-
+
/**
* @param $context ResourceLoaderContext
* @return bool
*/
- public function getFlip( $context ) {
- global $wgContLang;
-
- return $wgContLang->getDir() !== $context->getDirection();
+ public function isKnownEmpty( ResourceLoaderContext $context ) {
+ return count( $this->getTitleMtimes( $context ) ) == 0;
}
-
+
/**
* Get the modification times of all titles that would be loaded for
* a given context.
diff --git a/includes/revisiondelete/RevisionDelete.php b/includes/revisiondelete/RevisionDelete.php
index 00afb053..b329fc4b 100644
--- a/includes/revisiondelete/RevisionDelete.php
+++ b/includes/revisiondelete/RevisionDelete.php
@@ -1,18 +1,31 @@
<?php
/**
* List for revision table items
+ *
+ * This will check both the 'revision' table for live revisions and the
+ * 'archive' table for traditionally-deleted revisions that have an
+ * ar_rev_id saved.
+ *
+ * See RevDel_RevisionItem and RevDel_ArchivedRevisionItem for items.
*/
class RevDel_RevisionList extends RevDel_List {
var $currentRevId;
- var $type = 'revision';
- var $idField = 'rev_id';
- var $dateField = 'rev_timestamp';
- var $authorIdField = 'rev_user';
- var $authorNameField = 'rev_user_text';
+ public function getType() {
+ return 'revision';
+ }
+
+ public static function getRelationType() {
+ return 'rev_id';
+ }
+
+ /**
+ * @param $db DatabaseBase
+ * @return mixed
+ */
public function doQuery( $db ) {
$ids = array_map( 'intval', $this->ids );
- return $db->select( array('revision','page'), '*',
+ $live = $db->select( array('revision','page'), '*',
array(
'rev_page' => $this->title->getArticleID(),
'rev_id' => $ids,
@@ -21,16 +34,54 @@ class RevDel_RevisionList extends RevDel_List {
__METHOD__,
array( 'ORDER BY' => 'rev_id DESC' )
);
+
+ if ( $live->numRows() >= count( $ids ) ) {
+ // All requested revisions are live, keeps things simple!
+ return $live;
+ }
+
+ // Check if any requested revisions are available fully deleted.
+ $archived = $db->select( array( 'archive' ), '*',
+ array(
+ 'ar_rev_id' => $ids
+ ),
+ __METHOD__,
+ array( 'ORDER BY' => 'ar_rev_id DESC' )
+ );
+
+ if ( $archived->numRows() == 0 ) {
+ return $live;
+ } elseif ( $live->numRows() == 0 ) {
+ return $archived;
+ } else {
+ // Combine the two! Whee
+ $rows = array();
+ foreach ( $live as $row ) {
+ $rows[$row->rev_id] = $row;
+ }
+ foreach ( $archived as $row ) {
+ $rows[$row->ar_rev_id] = $row;
+ }
+ krsort( $rows );
+ return new FakeResultWrapper( array_values( $rows ) );
+ }
}
public function newItem( $row ) {
- return new RevDel_RevisionItem( $this, $row );
+ if ( isset( $row->rev_id ) ) {
+ return new RevDel_RevisionItem( $this, $row );
+ } elseif ( isset( $row->ar_rev_id ) ) {
+ return new RevDel_ArchivedRevisionItem( $this, $row );
+ } else {
+ // This shouldn't happen. :)
+ throw new MWException( 'Invalid row type in RevDel_RevisionList' );
+ }
}
public function getCurrent() {
if ( is_null( $this->currentRevId ) ) {
$dbw = wfGetDB( DB_MASTER );
- $this->currentRevId = $dbw->selectField(
+ $this->currentRevId = $dbw->selectField(
'page', 'page_latest', $this->title->pageCond(), __METHOD__ );
}
return $this->currentRevId;
@@ -54,7 +105,7 @@ class RevDel_RevisionList extends RevDel_List {
}
/**
- * Item class for a revision table row
+ * Item class for a live revision table row
*/
class RevDel_RevisionItem extends RevDel_Item {
var $revision;
@@ -64,10 +115,26 @@ class RevDel_RevisionItem extends RevDel_Item {
$this->revision = new Revision( $row );
}
+ public function getIdField() {
+ return 'rev_id';
+ }
+
+ public function getTimestampField() {
+ return 'rev_timestamp';
+ }
+
+ public function getAuthorIdField() {
+ return 'rev_user';
+ }
+
+ public function getAuthorNameField() {
+ return 'rev_user_text';
+ }
+
public function canView() {
return $this->revision->userCan( Revision::DELETED_RESTRICTED );
}
-
+
public function canViewContent() {
return $this->revision->userCan( Revision::DELETED_TEXT );
}
@@ -81,8 +148,8 @@ class RevDel_RevisionItem extends RevDel_Item {
// Update revision table
$dbw->update( 'revision',
array( 'rev_deleted' => $bits ),
- array(
- 'rev_id' => $this->revision->getId(),
+ array(
+ 'rev_id' => $this->revision->getId(),
'rev_page' => $this->revision->getPage(),
'rev_deleted' => $this->getBits()
),
@@ -94,7 +161,7 @@ class RevDel_RevisionItem extends RevDel_Item {
}
// Update recentchanges table
$dbw->update( 'recentchanges',
- array(
+ array(
'rc_deleted' => $bits,
'rc_patrolled' => 1
),
@@ -113,7 +180,7 @@ class RevDel_RevisionItem extends RevDel_Item {
}
public function isHideCurrentOp( $newBits ) {
- return ( $newBits & Revision::DELETED_TEXT )
+ return ( $newBits & Revision::DELETED_TEXT )
&& $this->list->getCurrent() == $this->getId();
}
@@ -122,14 +189,13 @@ class RevDel_RevisionItem extends RevDel_Item {
* Overridden by RevDel_ArchiveItem.
*/
protected function getRevisionLink() {
- global $wgLang;
- $date = $wgLang->timeanddate( $this->revision->getTimestamp(), true );
+ $date = $this->list->getLang()->timeanddate( $this->revision->getTimestamp(), true );
if ( $this->isDeleted() && !$this->canViewContent() ) {
return $date;
}
- return $this->special->skin->link(
+ return Linker::link(
$this->list->title,
- $date,
+ $date,
array(),
array(
'oldid' => $this->revision->getId(),
@@ -146,9 +212,9 @@ class RevDel_RevisionItem extends RevDel_Item {
if ( $this->isDeleted() && !$this->canViewContent() ) {
return wfMsgHtml('diff');
} else {
- return
- $this->special->skin->link(
- $this->list->title,
+ return
+ Linker::link(
+ $this->list->title,
wfMsgHtml('diff'),
array(),
array(
@@ -167,8 +233,8 @@ class RevDel_RevisionItem extends RevDel_Item {
public function getHTML() {
$difflink = $this->getDiffLink();
$revlink = $this->getRevisionLink();
- $userlink = $this->special->skin->revUserLink( $this->revision );
- $comment = $this->special->skin->revComment( $this->revision );
+ $userlink = Linker::revUserLink( $this->revision );
+ $comment = Linker::revComment( $this->revision );
if ( $this->isDeleted() ) {
$revlink = "<span class=\"history-deleted\">$revlink</span>";
}
@@ -180,12 +246,18 @@ class RevDel_RevisionItem extends RevDel_Item {
* List for archive table items, i.e. revisions deleted via action=delete
*/
class RevDel_ArchiveList extends RevDel_RevisionList {
- var $type = 'archive';
- var $idField = 'ar_timestamp';
- var $dateField = 'ar_timestamp';
- var $authorIdField = 'ar_user';
- var $authorNameField = 'ar_user_text';
+ public function getType() {
+ return 'archive';
+ }
+
+ public static function getRelationType() {
+ return 'ar_timestamp';
+ }
+ /**
+ * @param $db DatabaseBase
+ * @return mixed
+ */
public function doQuery( $db ) {
$timestamps = array();
foreach ( $this->ids as $id ) {
@@ -225,34 +297,50 @@ class RevDel_ArchiveItem extends RevDel_RevisionItem {
array( 'page' => $this->list->title->getArticleId() ) );
}
+ public function getIdField() {
+ return 'ar_timestamp';
+ }
+
+ public function getTimestampField() {
+ return 'ar_timestamp';
+ }
+
+ public function getAuthorIdField() {
+ return 'ar_user';
+ }
+
+ public function getAuthorNameField() {
+ return 'ar_user_text';
+ }
+
public function getId() {
# Convert DB timestamp to MW timestamp
return $this->revision->getTimestamp();
}
-
+
public function setBits( $bits ) {
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'archive',
array( 'ar_deleted' => $bits ),
- array( 'ar_namespace' => $this->list->title->getNamespace(),
- 'ar_title' => $this->list->title->getDBkey(),
+ array(
+ 'ar_namespace' => $this->list->title->getNamespace(),
+ 'ar_title' => $this->list->title->getDBkey(),
// use timestamp for index
- 'ar_timestamp' => $this->row->ar_timestamp,
- 'ar_rev_id' => $this->row->ar_rev_id,
- 'ar_deleted' => $this->getBits()
+ 'ar_timestamp' => $this->row->ar_timestamp,
+ 'ar_rev_id' => $this->row->ar_rev_id,
+ 'ar_deleted' => $this->getBits()
),
__METHOD__ );
return (bool)$dbw->affectedRows();
}
protected function getRevisionLink() {
- global $wgLang;
$undelete = SpecialPage::getTitleFor( 'Undelete' );
- $date = $wgLang->timeanddate( $this->revision->getTimestamp(), true );
+ $date = $this->list->getLang()->timeanddate( $this->revision->getTimestamp(), true );
if ( $this->isDeleted() && !$this->canViewContent() ) {
return $date;
}
- return $this->special->skin->link( $undelete, $date, array(),
+ return Linker::link( $undelete, $date, array(),
array(
'target' => $this->list->title->getPrefixedText(),
'timestamp' => $this->revision->getTimestamp()
@@ -263,8 +351,8 @@ class RevDel_ArchiveItem extends RevDel_RevisionItem {
if ( $this->isDeleted() && !$this->canViewContent() ) {
return wfMsgHtml( 'diff' );
}
- $undelete = SpecialPage::getTitleFor( 'Undelete' );
- return $this->special->skin->link( $undelete, wfMsgHtml('diff'), array(),
+ $undelete = SpecialPage::getTitleFor( 'Undelete' );
+ return Linker::link( $undelete, wfMsgHtml('diff'), array(),
array(
'target' => $this->list->title->getPrefixedText(),
'diff' => 'prev',
@@ -273,17 +361,57 @@ class RevDel_ArchiveItem extends RevDel_RevisionItem {
}
}
+
+/**
+ * Item class for a archive table row by ar_rev_id -- actually
+ * used via RevDel_RevisionList.
+ */
+class RevDel_ArchivedRevisionItem extends RevDel_ArchiveItem {
+ public function __construct( $list, $row ) {
+ RevDel_Item::__construct( $list, $row );
+
+ $this->revision = Revision::newFromArchiveRow( $row,
+ array( 'page' => $this->list->title->getArticleId() ) );
+ }
+
+ public function getIdField() {
+ return 'ar_rev_id';
+ }
+
+ public function getId() {
+ return $this->revision->getId();
+ }
+
+ public function setBits( $bits ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->update( 'archive',
+ array( 'ar_deleted' => $bits ),
+ array( 'ar_rev_id' => $this->row->ar_rev_id,
+ 'ar_deleted' => $this->getBits()
+ ),
+ __METHOD__ );
+ return (bool)$dbw->affectedRows();
+ }
+}
+
/**
* List for oldimage table items
*/
class RevDel_FileList extends RevDel_List {
- var $type = 'oldimage';
- var $idField = 'oi_archive_name';
- var $dateField = 'oi_timestamp';
- var $authorIdField = 'oi_user';
- var $authorNameField = 'oi_user_text';
+ public function getType() {
+ return 'oldimage';
+ }
+
+ public static function getRelationType() {
+ return 'oi_archive_name';
+ }
+
var $storeBatch, $deleteBatch, $cleanupBatch;
+ /**
+ * @param $db DatabaseBase
+ * @return mixed
+ */
public function doQuery( $db ) {
$archiveNames = array();
foreach( $this->ids as $timestamp ) {
@@ -348,6 +476,10 @@ class RevDel_FileList extends RevDel_List {
* Item class for an oldimage table row
*/
class RevDel_FileItem extends RevDel_Item {
+
+ /**
+ * @var File
+ */
var $file;
public function __construct( $list, $row ) {
@@ -355,6 +487,22 @@ class RevDel_FileItem extends RevDel_Item {
$this->file = RepoGroup::singleton()->getLocalRepo()->newFileFromRow( $row );
}
+ public function getIdField() {
+ return 'oi_archive_name';
+ }
+
+ public function getTimestampField() {
+ return 'oi_timestamp';
+ }
+
+ public function getAuthorIdField() {
+ return 'oi_user';
+ }
+
+ public function getAuthorNameField() {
+ return 'oi_user_text';
+ }
+
public function getId() {
$parts = explode( '!', $this->row->oi_archive_name );
return $parts[0];
@@ -363,7 +511,7 @@ class RevDel_FileItem extends RevDel_Item {
public function canView() {
return $this->file->userCan( File::DELETED_RESTRICTED );
}
-
+
public function canViewContent() {
return $this->file->userCan( File::DELETED_FILE );
}
@@ -374,7 +522,7 @@ class RevDel_FileItem extends RevDel_Item {
public function setBits( $bits ) {
# Queue the file op
- # FIXME: move to LocalFile.php
+ # @todo FIXME: Move to LocalFile.php
if ( $this->isDeleted() ) {
if ( $bits & File::DELETED_FILE ) {
# Still deleted
@@ -395,12 +543,12 @@ class RevDel_FileItem extends RevDel_Item {
$dstRel = $this->file->repo->getDeletedHashPath( $key ) . $key;
$this->list->deleteBatch[] = array( $this->file->getRel(), $dstRel );
}
-
+
# Do the database operations
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'oldimage',
array( 'oi_deleted' => $bits ),
- array(
+ array(
'oi_name' => $this->row->oi_name,
'oi_timestamp' => $this->row->oi_timestamp,
'oi_deleted' => $this->getBits()
@@ -415,24 +563,25 @@ class RevDel_FileItem extends RevDel_Item {
}
/**
- * Get the link to the file.
+ * Get the link to the file.
* Overridden by RevDel_ArchivedFileItem.
*/
protected function getLink() {
- global $wgLang, $wgUser;
- $date = $wgLang->timeanddate( $this->file->getTimestamp(), true );
+ $date = $this->list->getLang()->timeanddate( $this->file->getTimestamp(), true );
if ( $this->isDeleted() ) {
# Hidden files...
if ( !$this->canViewContent() ) {
$link = $date;
} else {
- $link = $this->special->skin->link(
- $this->special->getTitle(),
- $date, array(),
+ $revdelete = SpecialPage::getTitleFor( 'Revisiondelete' );
+ $link = Linker::link(
+ $revdelete,
+ $date, array(),
array(
'target' => $this->list->title->getPrefixedText(),
'file' => $this->file->getArchiveName(),
- 'token' => $wgUser->editToken( $this->file->getArchiveName() )
+ 'token' => $this->list->getUser()->editToken(
+ $this->file->getArchiveName() )
)
);
}
@@ -448,8 +597,8 @@ class RevDel_FileItem extends RevDel_Item {
*/
protected function getUserTools() {
if( $this->file->userCan( Revision::DELETED_USER ) ) {
- $link = $this->special->skin->userLink( $this->file->user, $this->file->user_text ) .
- $this->special->skin->userToolLinks( $this->file->user, $this->file->user_text );
+ $link = Linker::userLink( $this->file->user, $this->file->user_text ) .
+ Linker::userToolLinks( $this->file->user, $this->file->user_text );
} else {
$link = wfMsgHtml( 'rev-deleted-user' );
}
@@ -467,7 +616,7 @@ class RevDel_FileItem extends RevDel_Item {
*/
protected function getComment() {
if( $this->file->userCan( File::DELETED_COMMENT ) ) {
- $block = $this->special->skin->commentBlock( $this->file->description );
+ $block = Linker::commentBlock( $this->file->description );
} else {
$block = ' ' . wfMsgHtml( 'rev-deleted-comment' );
}
@@ -478,15 +627,14 @@ class RevDel_FileItem extends RevDel_Item {
}
public function getHTML() {
- global $wgLang;
- $data =
+ $data =
wfMsg(
- 'widthheight',
- $wgLang->formatNum( $this->file->getWidth() ),
- $wgLang->formatNum( $this->file->getHeight() )
+ 'widthheight',
+ $this->list->getLang()->formatNum( $this->file->getWidth() ),
+ $this->list->getLang()->formatNum( $this->file->getHeight() )
) .
- ' (' .
- wfMsgExt( 'nbytes', 'parsemag', $wgLang->formatNum( $this->file->getSize() ) ) .
+ ' (' .
+ wfMsgExt( 'nbytes', 'parsemag', $this->list->getLang()->formatNum( $this->file->getSize() ) ) .
')';
return '<li>' . $this->getLink() . ' ' . $this->getUserTools() . ' ' .
@@ -498,12 +646,18 @@ class RevDel_FileItem extends RevDel_Item {
* List for filearchive table items
*/
class RevDel_ArchivedFileList extends RevDel_FileList {
- var $type = 'filearchive';
- var $idField = 'fa_id';
- var $dateField = 'fa_timestamp';
- var $authorIdField = 'fa_user';
- var $authorNameField = 'fa_user_text';
-
+ public function getType() {
+ return 'filearchive';
+ }
+
+ public static function getRelationType() {
+ return 'fa_id';
+ }
+
+ /**
+ * @param $db DatabaseBase
+ * @return mixed
+ */
public function doQuery( $db ) {
$ids = array_map( 'intval', $this->ids );
return $db->select( 'filearchive', '*',
@@ -530,6 +684,22 @@ class RevDel_ArchivedFileItem extends RevDel_FileItem {
$this->file = ArchivedFile::newFromRow( $row );
}
+ public function getIdField() {
+ return 'fa_id';
+ }
+
+ public function getTimestampField() {
+ return 'fa_timestamp';
+ }
+
+ public function getAuthorIdField() {
+ return 'fa_user';
+ }
+
+ public function getAuthorNameField() {
+ return 'fa_user_text';
+ }
+
public function getId() {
return $this->row->fa_id;
}
@@ -548,19 +718,18 @@ class RevDel_ArchivedFileItem extends RevDel_FileItem {
}
protected function getLink() {
- global $wgLang, $wgUser;
- $date = $wgLang->timeanddate( $this->file->getTimestamp(), true );
+ $date = $this->list->getLang()->timeanddate( $this->file->getTimestamp(), true );
$undelete = SpecialPage::getTitleFor( 'Undelete' );
$key = $this->file->getKey();
# Hidden files...
if( !$this->canViewContent() ) {
$link = $date;
} else {
- $link = $this->special->skin->link( $undelete, $date, array(),
+ $link = Linker::link( $undelete, $date, array(),
array(
'target' => $this->list->title->getPrefixedText(),
'file' => $key,
- 'token' => $wgUser->editToken( $key )
+ 'token' => $this->list->getUser()->editToken( $key )
)
);
}
@@ -575,12 +744,18 @@ class RevDel_ArchivedFileItem extends RevDel_FileItem {
* List for logging table items
*/
class RevDel_LogList extends RevDel_List {
- var $type = 'logging';
- var $idField = 'log_id';
- var $dateField = 'log_timestamp';
- var $authorIdField = 'log_user';
- var $authorNameField = 'log_user_text';
+ public function getType() {
+ return 'logging';
+ }
+
+ public static function getRelationType() {
+ return 'log_id';
+ }
+ /**
+ * @param $db DatabaseBase
+ * @return mixed
+ */
public function doQuery( $db ) {
$ids = array_map( 'intval', $this->ids );
return $db->select( 'logging', '*',
@@ -615,10 +790,26 @@ class RevDel_LogList extends RevDel_List {
* Item class for a logging table row
*/
class RevDel_LogItem extends RevDel_Item {
+ public function getIdField() {
+ return 'log_id';
+ }
+
+ public function getTimestampField() {
+ return 'log_timestamp';
+ }
+
+ public function getAuthorIdField() {
+ return 'log_user';
+ }
+
+ public function getAuthorNameField() {
+ return 'log_user_text';
+ }
+
public function canView() {
return LogEventsList::userCan( $this->row, Revision::DELETED_RESTRICTED );
}
-
+
public function canViewContent() {
return true; // none
}
@@ -630,9 +821,9 @@ class RevDel_LogItem extends RevDel_Item {
public function setBits( $bits ) {
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'recentchanges',
- array(
- 'rc_deleted' => $bits,
- 'rc_patrolled' => 1
+ array(
+ 'rc_deleted' => $bits,
+ 'rc_patrolled' => 1
),
array(
'rc_logid' => $this->row->log_id,
@@ -652,14 +843,12 @@ class RevDel_LogItem extends RevDel_Item {
}
public function getHTML() {
- global $wgLang;
-
- $date = htmlspecialchars( $wgLang->timeanddate( $this->row->log_timestamp ) );
+ $date = htmlspecialchars( $this->list->getLang()->timeanddate( $this->row->log_timestamp ) );
$paramArray = LogPage::extractParams( $this->row->log_params );
$title = Title::makeTitle( $this->row->log_namespace, $this->row->log_title );
// Log link for this page
- $loglink = $this->special->skin->link(
+ $loglink = Linker::link(
SpecialPage::getTitleFor( 'Log' ),
wfMsgHtml( 'log' ),
array(),
@@ -669,19 +858,20 @@ class RevDel_LogItem extends RevDel_Item {
if( !$this->canView() ) {
$action = '<span class="history-deleted">' . wfMsgHtml('rev-deleted-event') . '</span>';
} else {
- $action = LogPage::actionText( $this->row->log_type, $this->row->log_action, $title,
- $this->special->skin, $paramArray, true, true );
+ $skin = $this->list->getUser()->getSkin();
+ $action = LogPage::actionText( $this->row->log_type, $this->row->log_action,
+ $title, $skin, $paramArray, true, true );
if( $this->row->log_deleted & LogPage::DELETED_ACTION )
$action = '<span class="history-deleted">' . $action . '</span>';
}
// User links
- $userLink = $this->special->skin->userLink( $this->row->log_user,
+ $userLink = Linker::userLink( $this->row->log_user,
User::WhoIs( $this->row->log_user ) );
if( LogEventsList::isDeleted($this->row,LogPage::DELETED_USER) ) {
$userLink = '<span class="history-deleted">' . $userLink . '</span>';
}
// Comment
- $comment = $wgLang->getDirMark() . $this->special->skin->commentBlock( $this->row->log_comment );
+ $comment = $this->list->getLang()->getDirMark() . Linker::commentBlock( $this->row->log_comment );
if( LogEventsList::isDeleted($this->row,LogPage::DELETED_COMMENT) ) {
$comment = '<span class="history-deleted">' . $comment . '</span>';
}
diff --git a/includes/revisiondelete/RevisionDeleteAbstracts.php b/includes/revisiondelete/RevisionDeleteAbstracts.php
index 073c25ba..73af1e5f 100644
--- a/includes/revisiondelete/RevisionDeleteAbstracts.php
+++ b/includes/revisiondelete/RevisionDeleteAbstracts.php
@@ -1,63 +1,28 @@
<?php
/**
- * Abstract base class for a list of deletable items
+ * Abstract base class for a list of deletable items. The list class
+ * needs to be able to make a query from a set of identifiers to pull
+ * relevant rows, to return RevDel_Item subclasses wrapping them, and
+ * to wrap bulk update operations.
*/
-abstract class RevDel_List {
- var $special, $title, $ids, $res, $current;
- var $type = null; // override this
- var $idField = null; // override this
- var $dateField = false; // override this
- var $authorIdField = false; // override this
- var $authorNameField = false; // override this
-
- /**
- * @param $special The parent SpecialPage
- * @param $title The target title
- * @param $ids Array of IDs
- */
- public function __construct( $special, $title, $ids ) {
- $this->special = $special;
- $this->title = $title;
+abstract class RevDel_List extends Rev_List {
+ function __construct( IContextSource $context, Title $title, array $ids ) {
+ parent::__construct( $context, $title );
$this->ids = $ids;
}
/**
- * Get the internal type name of this list. Equal to the table name.
- */
- public function getType() {
- return $this->type;
- }
-
- /**
- * Get the DB field name associated with the ID list
- */
- public function getIdField() {
- return $this->idField;
- }
-
- /**
- * Get the DB field name storing timestamps
+ * Get the DB field name associated with the ID list.
+ * This used to populate the log_search table for finding log entries.
+ * Override this function.
*/
- public function getTimestampField() {
- return $this->dateField;
+ public static function getRelationType() {
+ return null;
}
/**
- * Get the DB field name storing user ids
- */
- public function getAuthorIdField() {
- return $this->authorIdField;
- }
-
- /**
- * Get the DB field name storing user names
- */
- public function getAuthorNameField() {
- return $this->authorNameField;
- }
- /**
- * Set the visibility for the revisions in this list. Logging and
+ * Set the visibility for the revisions in this list. Logging and
* transactions are done here.
*
* @param $params Associative array of parameters. Members are:
@@ -118,7 +83,7 @@ abstract class RevDel_List {
$status->warning( 'revdelete-only-restricted', $item->formatDate(), $item->formatTime() );
$status->failCount++;
continue;
- }
+ }
// Update the revision
$ok = $item->setBits( $newBits );
@@ -128,7 +93,7 @@ abstract class RevDel_List {
$status->successCount++;
if( $item->getAuthorId() > 0 ) {
$authorIds[] = $item->getAuthorId();
- } else if( IP::isIPAddress( $item->getAuthorName() ) ) {
+ } elseif( IP::isIPAddress( $item->getAuthorName() ) ) {
$authorIPs[] = $item->getAuthorName();
}
} else {
@@ -149,7 +114,7 @@ abstract class RevDel_List {
return $status;
}
- // Save success count
+ // Save success count
$successCount = $status->successCount;
// Move files, if there are any
@@ -162,9 +127,9 @@ abstract class RevDel_List {
// Log it
$this->updateLog( array(
- 'title' => $this->title,
- 'count' => $successCount,
- 'newBits' => $newBits,
+ 'title' => $this->title,
+ 'count' => $successCount,
+ 'newBits' => $newBits,
'oldBits' => $oldBits,
'comment' => $comment,
'ids' => $idsForLog,
@@ -191,7 +156,7 @@ abstract class RevDel_List {
* Record a log entry on the action
* @param $params Associative array of parameters:
* newBits: The new value of the *_deleted bitfield
- * oldBits: The old value of the *_deleted bitfield.
+ * oldBits: The old value of the *_deleted bitfield.
* title: The target title
* ids: The ID list
* comment: The log comment
@@ -244,66 +209,13 @@ abstract class RevDel_List {
}
/**
- * Initialise the current iteration pointer
- */
- protected function initCurrent() {
- $row = $this->res->current();
- if ( $row ) {
- $this->current = $this->newItem( $row );
- } else {
- $this->current = false;
- }
- }
-
- /**
- * Start iteration. This must be called before current() or next().
- * @return First list item
- */
- public function reset() {
- if ( !$this->res ) {
- $this->res = $this->doQuery( wfGetDB( DB_SLAVE ) );
- } else {
- $this->res->rewind();
- }
- $this->initCurrent();
- return $this->current;
- }
-
- /**
- * Get the current list item, or false if we are at the end
- */
- public function current() {
- return $this->current;
- }
-
- /**
- * Move the iteration pointer to the next list item, and return it.
- */
- public function next() {
- $this->res->next();
- $this->initCurrent();
- return $this->current;
- }
-
- /**
- * Get the number of items in the list.
- */
- public function length() {
- if( !$this->res ) {
- return 0;
- } else {
- return $this->res->numRows();
- }
- }
-
- /**
* Clear any data structures needed for doPreCommitUpdates() and doPostCommitUpdates()
* STUB
*/
public function clearFileOps() {
}
- /**
+ /**
* A hook for setVisibility(): do batch updates pre-commit.
* STUB
* @return Status
@@ -313,27 +225,15 @@ abstract class RevDel_List {
}
/**
- * A hook for setVisibility(): do any necessary updates post-commit.
+ * A hook for setVisibility(): do any necessary updates post-commit.
* STUB
- * @return Status
+ * @return Status
*/
public function doPostCommitUpdates() {
return Status::newGood();
}
/**
- * Create an item object from a DB result row
- * @param $row stdclass
- */
- abstract public function newItem( $row );
-
- /**
- * Do the DB query to iterate through the objects.
- * @param $db Database object to use for the query
- */
- abstract public function doQuery( $db );
-
- /**
* Get the integer value of the flag used for suppression
*/
abstract public function getSuppressBit();
@@ -342,75 +242,8 @@ abstract class RevDel_List {
/**
* Abstract base class for deletable items
*/
-abstract class RevDel_Item {
- /** The parent SpecialPage */
- var $special;
-
- /** The parent RevDel_List */
- var $list;
-
- /** The DB result row */
- var $row;
-
- /**
- * @param $list RevDel_List
- * @param $row DB result row
- */
- public function __construct( $list, $row ) {
- $this->special = $list->special;
- $this->list = $list;
- $this->row = $row;
- }
-
+abstract class RevDel_Item extends Rev_Item {
/**
- * Get the ID, as it would appear in the ids URL parameter
- */
- public function getId() {
- $field = $this->list->getIdField();
- return $this->row->$field;
- }
-
- /**
- * Get the date, formatted with $wgLang
- */
- public function formatDate() {
- global $wgLang;
- return $wgLang->date( $this->getTimestamp() );
- }
-
- /**
- * Get the time, formatted with $wgLang
- */
- public function formatTime() {
- global $wgLang;
- return $wgLang->time( $this->getTimestamp() );
- }
-
- /**
- * Get the timestamp in MW 14-char form
- */
- public function getTimestamp() {
- $field = $this->list->getTimestampField();
- return wfTimestamp( TS_MW, $this->row->$field );
- }
-
- /**
- * Get the author user ID
- */
- public function getAuthorId() {
- $field = $this->list->getAuthorIdField();
- return intval( $this->row->$field );
- }
-
- /**
- * Get the author user name
- */
- public function getAuthorName() {
- $field = $this->list->getAuthorNameField();
- return strval( $this->row->$field );
- }
-
- /**
* Returns true if the item is "current", and the operation to set the given
* bits can't be executed for that reason
* STUB
@@ -420,32 +253,16 @@ abstract class RevDel_Item {
}
/**
- * Returns true if the current user can view the item
- */
- abstract public function canView();
-
- /**
- * Returns true if the current user can view the item text/file
- */
- abstract public function canViewContent();
-
- /**
* Get the current deletion bitfield value
*/
abstract public function getBits();
/**
- * Get the HTML of the list item. Should be include <li></li> tags.
- * This is used to show the list in HTML form, by the special page.
- */
- abstract public function getHTML();
-
- /**
* Set the visibility of the item. This should do any necessary DB queries.
*
* The DB update query should have a condition which forces it to only update
- * if the value in the DB matches the value fetched earlier with the SELECT.
- * If the update fails because it did not match, the function should return
+ * if the value in the DB matches the value fetched earlier with the SELECT.
+ * If the update fails because it did not match, the function should return
* false. This prevents concurrency problems.
*
* @return boolean success
diff --git a/includes/revisiondelete/RevisionDeleteUser.php b/includes/revisiondelete/RevisionDeleteUser.php
new file mode 100644
index 00000000..c88b4d91
--- /dev/null
+++ b/includes/revisiondelete/RevisionDeleteUser.php
@@ -0,0 +1,130 @@
+<?php
+/**
+ * Backend functions for suppressing and unsuppressing all references to a given user,
+ * used when blocking with HideUser enabled. This was spun out of SpecialBlockip.php
+ * in 1.18; at some point it needs to be rewritten to either use RevisionDelete abstraction,
+ * or at least schema abstraction.
+ *
+ * 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 RevisionDelete
+ */
+class RevisionDeleteUser {
+
+ /**
+ * Update *_deleted bitfields in various tables to hide or unhide usernames
+ * @param $name String username
+ * @param $userId Int user id
+ * @param $op String operator '|' or '&'
+ * @param $dbw null|Database, if you happen to have one lying around
+ * @return bool
+ */
+ private static function setUsernameBitfields( $name, $userId, $op, $dbw ) {
+ if( $op !== '|' && $op !== '&' ){
+ return false; // sanity check
+ }
+ if( !$dbw instanceof DatabaseBase ){
+ $dbw = wfGetDB( DB_MASTER );
+ }
+
+ # To suppress, we OR the current bitfields with Revision::DELETED_USER
+ # to put a 1 in the username *_deleted bit. To unsuppress we AND the
+ # current bitfields with the inverse of Revision::DELETED_USER. The
+ # username bit is made to 0 (x & 0 = 0), while others are unchanged (x & 1 = x).
+ # The same goes for the sysop-restricted *_deleted bit.
+ $delUser = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
+ $delAction = LogPage::DELETED_ACTION | Revision::DELETED_RESTRICTED;
+ if( $op == '&' ) {
+ $delUser = "~{$delUser}";
+ $delAction = "~{$delAction}";
+ }
+
+ # Normalize user name
+ $userTitle = Title::makeTitleSafe( NS_USER, $name );
+ $userDbKey = $userTitle->getDBkey();
+
+ # Hide name from live edits
+ $dbw->update(
+ 'revision',
+ array( "rev_deleted = rev_deleted $op $delUser" ),
+ array( 'rev_user' => $userId ),
+ __METHOD__ );
+
+ # Hide name from deleted edits
+ $dbw->update(
+ 'archive',
+ array( "ar_deleted = ar_deleted $op $delUser" ),
+ array( 'ar_user_text' => $name ),
+ __METHOD__
+ );
+
+ # Hide name from logs
+ $dbw->update(
+ 'logging',
+ array( "log_deleted = log_deleted $op $delUser" ),
+ array( 'log_user' => $userId, "log_type != 'suppress'" ),
+ __METHOD__
+ );
+ $dbw->update(
+ 'logging',
+ array( "log_deleted = log_deleted $op $delAction" ),
+ array( 'log_namespace' => NS_USER, 'log_title' => $userDbKey,
+ "log_type != 'suppress'" ),
+ __METHOD__
+ );
+
+ # Hide name from RC
+ $dbw->update(
+ 'recentchanges',
+ array( "rc_deleted = rc_deleted $op $delUser" ),
+ array( 'rc_user_text' => $name ),
+ __METHOD__
+ );
+ $dbw->update(
+ 'recentchanges',
+ array( "rc_deleted = rc_deleted $op $delAction" ),
+ array( 'rc_namespace' => NS_USER, 'rc_title' => $userDbKey, 'rc_logid > 0' ),
+ __METHOD__
+ );
+
+ # Hide name from live images
+ $dbw->update(
+ 'oldimage',
+ array( "oi_deleted = oi_deleted $op $delUser" ),
+ array( 'oi_user_text' => $name ),
+ __METHOD__
+ );
+
+ # Hide name from deleted images
+ $dbw->update(
+ 'filearchive',
+ array( "fa_deleted = fa_deleted $op $delUser" ),
+ array( 'fa_user_text' => $name ),
+ __METHOD__
+ );
+ # Done!
+ return true;
+ }
+
+ public static function suppressUserName( $name, $userId, $dbw = null ) {
+ return self::setUsernameBitfields( $name, $userId, '|', $dbw );
+ }
+
+ public static function unsuppressUserName( $name, $userId, $dbw = null ) {
+ return self::setUsernameBitfields( $name, $userId, '&', $dbw );
+ }
+} \ No newline at end of file
diff --git a/includes/revisiondelete/RevisionDeleter.php b/includes/revisiondelete/RevisionDeleter.php
index d47fcecf..bde586c5 100644
--- a/includes/revisiondelete/RevisionDeleter.php
+++ b/includes/revisiondelete/RevisionDeleter.php
@@ -18,7 +18,7 @@ class RevisionDeleter {
* enabled / disabled.
* @param $field Integer: the bitmask describing the single option.
* @param $diff Integer: the xor of the old and new bitfields.
- * @param $new Integer: the new bitfield
+ * @param $new Integer: the new bitfield
* @param $arr Array: the array to update.
*/
protected static function checkItem( $desc, $field, $diff, $new, &$arr ) {
@@ -29,10 +29,10 @@ class RevisionDeleter {
/**
* Gets an array of message keys describing the changes made to the visibility
- * of the revision. If the resulting array is $arr, then $arr[0] will contain an
- * array of strings describing the items that were hidden, $arr[2] will contain
- * an array of strings describing the items that were unhidden, and $arr[3] will
- * contain an array with a single string, which can be one of "applied
+ * of the revision. If the resulting array is $arr, then $arr[0] will contain an
+ * array of strings describing the items that were hidden, $arr[2] will contain
+ * an array of strings describing the items that were unhidden, and $arr[3] will
+ * contain an array with a single string, which can be one of "applied
* restrictions to sysops", "removed restrictions from sysops", or null.
*
* @param $n Integer: the new bitfield.
@@ -67,48 +67,39 @@ class RevisionDeleter {
* @param $count Integer: The number of effected revisions.
* @param $nbitfield Integer: The new bitfield for the revision.
* @param $obitfield Integer: The old bitfield for the revision.
+ * @param $language Language object to use
* @param $isForLog Boolean
- * @param $forContent Boolean
*/
- public static function getLogMessage( $count, $nbitfield, $obitfield, $isForLog = false, $forContent = false ) {
- global $wgLang, $wgContLang;
-
- $lang = $forContent ? $wgContLang : $wgLang;
- $msgFunc = $forContent ? "wfMsgForContent" : "wfMsg";
-
+ public static function getLogMessage( $count, $nbitfield, $obitfield, $language, $isForLog = false ) {
$changes = self::getChanges( $nbitfield, $obitfield );
- array_walk($changes, 'RevisionDeleter::expandMessageArray', $forContent);
-
+ array_walk( $changes, array( __CLASS__, 'expandMessageArray' ), $language );
+
$changesText = array();
-
+
if( count( $changes[0] ) ) {
- $changesText[] = $msgFunc( 'revdelete-hid', $lang->commaList( $changes[0] ) );
+ $changesText[] = wfMsgExt( 'revdelete-hid', array( 'parsemag', 'language' => $language ), $language->commaList( $changes[0] ) );
}
if( count( $changes[1] ) ) {
- $changesText[] = $msgFunc( 'revdelete-unhid', $lang->commaList( $changes[1] ) );
+ $changesText[] = wfMsgExt( 'revdelete-unhid', array( 'parsemag', 'language' => $language ), $language->commaList( $changes[1] ) );
}
-
- $s = $lang->semicolonList( $changesText );
+
+ $s = $language->semicolonList( $changesText );
if( count( $changes[2] ) ) {
$s .= $s ? ' (' . $changes[2][0] . ')' : ' ' . $changes[2][0];
}
-
+
$msg = $isForLog ? 'logdelete-log-message' : 'revdelete-log-message';
- return wfMsgExt( $msg, $forContent ? array( 'parsemag', 'content' ) : array( 'parsemag' ), $s, $lang->formatNum($count) );
+ return wfMsgExt( $msg, array( 'parsemag', 'language' => $language ), $s, $language->formatNum($count) );
}
-
- private static function expandMessageArray(& $msg, $key, $forContent) {
- if ( is_array ($msg) ) {
- array_walk($msg, 'RevisionDeleter::expandMessageArray', $forContent);
+
+ private static function expandMessageArray( &$msg, $key, $language ) {
+ if ( is_array ( $msg ) ) {
+ array_walk( $msg, array( __CLASS__, 'expandMessageArray' ), $language );
} else {
- if ( $forContent ) {
- $msg = wfMsgForContent($msg);
- } else {
- $msg = wfMsg($msg);
- }
+ $msg = wfMsgExt( $msg, array( 'parsemag', 'language' => $language ) );
}
}
-
+
// Get DB field name for URL param...
// Future code for other things may also track
// other types of revision-specific changes.
@@ -119,75 +110,62 @@ class RevisionDeleter {
}
if ( isset( SpecialRevisionDelete::$allowedTypes[$typeName] ) ) {
$class = SpecialRevisionDelete::$allowedTypes[$typeName]['list-class'];
- $list = new $class( null, null, null );
- return $list->getIdField();
+ return call_user_func( array( $class, 'getRelationType' ) );
} else {
return null;
}
}
-
- // Checks if a revision still exists in the revision table.
- // If it doesn't, returns the corresponding ar_timestamp field
- // so that this key can be used instead.
+
+ /**
+ * Checks if a revision still exists in the revision table.
+ * If it doesn't, returns the corresponding ar_timestamp field
+ * so that this key can be used instead.
+ *
+ * @param $title Title
+ * @param $revid
+ * @return bool|mixed
+ */
public static function checkRevisionExistence( $title, $revid ) {
$dbr = wfGetDB( DB_SLAVE );
$exists = $dbr->selectField( 'revision', '1',
array( 'rev_id' => $revid ), __METHOD__ );
-
+
if ( $exists ) {
return true;
}
-
+
$timestamp = $dbr->selectField( 'archive', 'ar_timestamp',
array( 'ar_namespace' => $title->getNamespace(),
'ar_title' => $title->getDBkey(),
'ar_rev_id' => $revid ), __METHOD__ );
-
+
return $timestamp;
}
-
- // Creates utility links for log entries.
+
+ /**
+ * Creates utility links for log entries.
+ *
+ * @param $title Title
+ * @param $paramArray Array
+ * @param $skin Skin
+ * @param $messages
+ * @return String
+ */
public static function getLogLinks( $title, $paramArray, $skin, $messages ) {
global $wgLang;
-
- if( count($paramArray) >= 2 ) {
+
+ if ( count( $paramArray ) >= 2 ) {
// Different revision types use different URL params...
$originalKey = $key = $paramArray[0];
// $paramArray[1] is a CSV of the IDs
$Ids = explode( ',', $paramArray[1] );
$revert = array();
-
- // For if undeleted revisions are found amidst deleted ones.
- $undeletedRevisions = array();
-
- // This is not going to work if some revs are deleted and some
- // aren't.
- if ($key == 'revision') {
- foreach( $Ids as $k => $id ) {
- $existResult =
- self::checkRevisionExistence( $title, $id );
-
- if ($existResult !== true) {
- $key = 'archive';
- $Ids[$k] = $existResult;
- } else {
- // Undeleted revision amidst deleted ones
- unset($Ids[$k]);
- $undeletedRevisions[] = $id;
- }
- }
-
- if ( $key == $originalKey ) {
- $Ids = $undeletedRevisions;
- $undeletedRevisions = array();
- }
- }
-
+
// Diff link for single rev deletions
- if( count($Ids) == 1 && !count($undeletedRevisions) ) {
+ if ( count( $Ids ) == 1 ) {
// Live revision diffs...
- if( in_array( $key, array( 'oldid', 'revision' ) ) ) {
+ if ( in_array( $key, array( 'oldid', 'revision' ) ) ) {
$revert[] = $skin->link(
$title,
$messages['diff'],
@@ -199,10 +177,10 @@ class RevisionDeleter {
array( 'known', 'noclasses' )
);
// Deleted revision diffs...
- } else if( in_array( $key, array( 'artimestamp','archive' ) ) ) {
+ } elseif ( in_array( $key, array( 'artimestamp','archive' ) ) ) {
$revert[] = $skin->link(
SpecialPage::getTitleFor( 'Undelete' ),
- $messages['diff'],
+ $messages['diff'],
array(),
array(
'target' => $title->getPrefixedDBKey(),
@@ -213,58 +191,23 @@ class RevisionDeleter {
);
}
}
-
+
// View/modify link...
- if ( count($undeletedRevisions) ) {
- // FIXME THIS IS A HORRIBLE HORRIBLE HACK AND SHOULD DIE
- // It's not possible to pass a list of both deleted and
- // undeleted revisions to SpecialRevisionDelete, so we're
- // stuck with two links. See bug 23363.
- $restoreLinks = array();
-
- $restoreLinks[] = $skin->link(
- SpecialPage::getTitleFor( 'Revisiondelete' ),
- $messages['revdel-restore-visible'],
- array(),
- array(
- 'target' => $title->getPrefixedText(),
- 'type' => $originalKey,
- 'ids' => implode(',', $undeletedRevisions),
- ),
- array( 'known', 'noclasses' )
- );
-
- $restoreLinks[] = $skin->link(
- SpecialPage::getTitleFor( 'Revisiondelete' ),
- $messages['revdel-restore-deleted'],
- array(),
- array(
- 'target' => $title->getPrefixedText(),
- 'type' => $key,
- 'ids' => implode(',', $Ids),
- ),
- array( 'known', 'noclasses' )
- );
-
- $revert[] = $messages['revdel-restore'] . ' [' .
- $wgLang->pipeList( $restoreLinks ) . ']';
- } else {
- $revert[] = $skin->link(
- SpecialPage::getTitleFor( 'Revisiondelete' ),
- $messages['revdel-restore'],
- array(),
- array(
- 'target' => $title->getPrefixedText(),
- 'type' => $key,
- 'ids' => implode(',', $Ids),
- ),
- array( 'known', 'noclasses' )
- );
- }
-
+ $revert[] = $skin->link(
+ SpecialPage::getTitleFor( 'Revisiondelete' ),
+ $messages['revdel-restore'],
+ array(),
+ array(
+ 'target' => $title->getPrefixedText(),
+ 'type' => $key,
+ 'ids' => implode(',', $Ids),
+ ),
+ array( 'known', 'noclasses' )
+ );
+
// Pipe links
return wfMsg( 'parentheses', $wgLang->pipeList( $revert ) );
}
return '';
}
-} \ No newline at end of file
+}
diff --git a/includes/search/SearchEngine.php b/includes/search/SearchEngine.php
index 17482da2..40b992de 100644
--- a/includes/search/SearchEngine.php
+++ b/includes/search/SearchEngine.php
@@ -22,6 +22,14 @@ class SearchEngine {
var $namespaces = array( NS_MAIN );
var $showRedirects = false;
+ /// Feature values
+ protected $features = array();
+
+ /**
+ * @var DatabaseBase
+ */
+ protected $db;
+
function __construct($db = null) {
if ( $db ) {
$this->db = $db;
@@ -54,9 +62,38 @@ class SearchEngine {
return null;
}
- /** If this search backend can list/unlist redirects */
+ /**
+ * If this search backend can list/unlist redirects
+ * @deprecated since 1.18 Call supports( 'list-redirects' );
+ */
function acceptListRedirects() {
- return true;
+ return $this->supports( 'list-redirects' );
+ }
+
+ /**
+ * @since 1.18
+ * @param $feature String
+ * @return Boolean
+ */
+ public function supports( $feature ) {
+ switch( $feature ) {
+ case 'list-redirects':
+ return true;
+ case 'title-suffix-filter':
+ default:
+ return false;
+ }
+ }
+
+ /**
+ * Way to pass custom data for engines
+ * @since 1.18
+ * @param $feature String
+ * @param $data Mixed
+ * @return Noolean
+ */
+ public function setFeatureData( $feature, $data ) {
+ $this->features[$feature] = $data;
}
/**
@@ -95,11 +132,11 @@ class SearchEngine {
wfRunHooks( 'SearchGetNearMatchComplete', array( $searchterm, &$title ) );
return $title;
}
-
+
/**
- * Do a near match (see SearchEngine::getNearMatch) and wrap it into a
+ * Do a near match (see SearchEngine::getNearMatch) and wrap it into a
* SearchResultSet.
- *
+ *
* @param $searchterm string
* @return SearchResultSet
*/
@@ -124,19 +161,23 @@ class SearchEngine {
return $titleResult;
}
+ $context = new RequestContext;
+
foreach ( $allSearchTerms as $term ) {
# Exact match? No need to look further.
$title = Title::newFromText( $term );
- if ( is_null( $title ) )
+ if ( is_null( $title ) ){
return null;
+ }
if ( $title->getNamespace() == NS_SPECIAL || $title->isExternal() || $title->exists() ) {
return $title;
}
# See if it still otherwise has content is some sane sense
- $article = MediaWiki::articleFromTitle( $title );
+ $context->setTitle( $title );
+ $article = Article::newFromTitle( $title, $context );
if ( $article->hasViewableContent() ) {
return $title;
}
@@ -259,7 +300,7 @@ class SearchEngine {
if ( strncmp( $query, $allkeyword, strlen( $allkeyword ) ) == 0 ) {
$this->namespaces = null;
$parsed = substr( $query, strlen( $allkeyword ) );
- } else if ( strpos( $query, ':' ) !== false ) {
+ } elseif ( strpos( $query, ':' ) !== false ) {
$prefix = substr( $query, 0, strpos( $query, ':' ) );
$index = $wgContLang->getNsIndex( $prefix );
if ( $index !== false ) {
@@ -321,14 +362,11 @@ class SearchEngine {
}
/**
- * Find snippet highlight settings for a given user
+ * Find snippet highlight settings for all users
*
- * @param $user User
* @return Array contextlines, contextchars
*/
- public static function userHighlightPrefs( &$user ) {
- // $contextlines = $user->getOption( 'contextlines', 5 );
- // $contextchars = $user->getOption( 'contextchars', 50 );
+ public static function userHighlightPrefs() {
$contextlines = 2; // Hardcode this. Old defaults sucked. :)
$contextchars = 75; // same as above.... :P
return array( $contextlines, $contextchars );
@@ -434,13 +472,15 @@ class SearchEngine {
* @return String
*/
public static function getOpenSearchTemplate() {
- global $wgOpenSearchTemplate, $wgServer;
- if ( $wgOpenSearchTemplate ) {
+ global $wgOpenSearchTemplate, $wgCanonicalServer;
+ if ( $wgOpenSearchTemplate ) {
return $wgOpenSearchTemplate;
} else {
$ns = implode( '|', SearchEngine::defaultNamespaces() );
- if ( !$ns ) $ns = "0";
- return $wgServer . wfScript( 'api' ) . '?action=opensearch&search={searchTerms}&namespace=' . $ns;
+ if ( !$ns ) {
+ $ns = "0";
+ }
+ return $wgCanonicalServer . wfScript( 'api' ) . '?action=opensearch&search={searchTerms}&namespace=' . $ns;
}
}
@@ -575,6 +615,9 @@ class SearchResultSet {
* This class is used for different SQL-based search engines shipped with MediaWiki
*/
class SqlSearchResultSet extends SearchResultSet {
+
+ protected $mResultSet;
+
function __construct( $resultSet, $terms ) {
$this->mResultSet = $resultSet;
$this->mTerms = $terms;
@@ -598,7 +641,7 @@ class SqlSearchResultSet extends SearchResultSet {
$row = $this->mResultSet->fetchObject();
if ( $row === false )
return false;
-
+
return SearchResult::newFromRow( $row );
}
@@ -619,19 +662,33 @@ class SearchResultTooMany {
/**
- * @todo Fixme: This class is horribly factored. It would probably be better to
+ * @todo FIXME: This class is horribly factored. It would probably be better to
* have a useful base class to which you pass some standard information, then
* let the fancy self-highlighters extend that.
* @ingroup Search
*/
class SearchResult {
+
+ /**
+ * @var Revision
+ */
var $mRevision = null;
var $mImage = null;
/**
+ * @var Title
+ */
+ var $mTitle;
+
+ /**
+ * @var String
+ */
+ var $mText;
+
+ /**
* Return a new SearchResult and initializes it with a title.
- *
- * @param $title Title
+ *
+ * @param $title Title
* @return SearchResult
*/
public static function newFromTitle( $title ) {
@@ -641,7 +698,7 @@ class SearchResult {
}
/**
* Return a new SearchResult and initializes it with a row.
- *
+ *
* @param $row object
* @return SearchResult
*/
@@ -650,28 +707,28 @@ class SearchResult {
$result->initFromRow( $row );
return $result;
}
-
+
public function __construct( $row = null ) {
if ( !is_null( $row ) ) {
// Backwards compatibility with pre-1.17 callers
$this->initFromRow( $row );
}
}
-
+
/**
* Initialize from a database row. Makes a Title and passes that to
* initFromTitle.
- *
+ *
* @param $row object
*/
protected function initFromRow( $row ) {
$this->initFromTitle( Title::makeTitle( $row->page_namespace, $row->page_title ) );
}
-
+
/**
* Initialize from a Title and if possible initializes a corresponding
* Revision and File.
- *
+ *
* @param $title Title
*/
protected function initFromTitle( $title ) {
@@ -788,7 +845,7 @@ class SearchResult {
function getTimestamp() {
if ( $this->mRevision )
return $this->mRevision->getTimestamp();
- else if ( $this->mImage )
+ elseif ( $this->mImage )
return $this->mImage->getTimestamp();
return '';
}
@@ -886,7 +943,7 @@ class SearchHighlighter {
2 => '/(\[\[)|(\]\])/', // image
3 => "/(\n\\{\\|)|(\n\\|\\})/" ); // table
- // FIXME: this should prolly be a hook or something
+ // @todo FIXME: This should prolly be a hook or something
if ( function_exists( 'wfCite' ) ) {
$spat .= '|(<ref>)'; // references via cite extension
$endPatterns[4] = '/(<ref>)|(<\/ref>)/';
@@ -972,7 +1029,7 @@ class SearchHighlighter {
$anyterm = implode( '|', $terms );
$phrase = implode( "$wgSearchHighlightBoundaries+", $terms );
- // FIXME: a hack to scale contextchars, a correct solution
+ // @todo FIXME: A hack to scale contextchars, a correct solution
// would be to have contextchars actually be char and not byte
// length, and do proper utf-8 substrings and lengths everywhere,
// but PHP is making that very hard and unclean to implement :(
@@ -1318,12 +1375,13 @@ class SearchHighlighter {
continue;
}
--$contextlines;
- $pre = $wgContLang->truncate( $m[1], - $contextchars );
+ // truncate function changes ... to relevant i18n message.
+ $pre = $wgContLang->truncate( $m[1], - $contextchars, '...', false );
if ( count( $m ) < 3 ) {
$post = '';
} else {
- $post = $wgContLang->truncate( $m[3], $contextchars );
+ $post = $wgContLang->truncate( $m[3], $contextchars, '...', false );
}
$found = $m[2];
@@ -1344,7 +1402,7 @@ class SearchHighlighter {
/**
* Dummy class to be used when non-supported Database engine is present.
- * @todo Fixme: dummy class should probably try something at least mildly useful,
+ * @todo FIXME: Dummy class should probably try something at least mildly useful,
* such as a LIKE search through titles.
* @ingroup Search
*/
diff --git a/includes/search/SearchIBM_DB2.php b/includes/search/SearchIBM_DB2.php
index 8cedd6f2..c02a009d 100644
--- a/includes/search/SearchIBM_DB2.php
+++ b/includes/search/SearchIBM_DB2.php
@@ -91,7 +91,7 @@ class SearchIBM_DB2 extends SearchEngine {
* Return a LIMIT clause to limit results on the query.
* @return String
*/
- function queryLimit($sql) {
+ function queryLimit( $sql ) {
return $this->db->limitResult($sql, $this->limit, $this->offset);
}
@@ -151,7 +151,7 @@ class SearchIBM_DB2 extends SearchEngine {
$lc = SearchEngine::legalSearchChars();
$this->searchTerms = array();
- # FIXME: This doesn't handle parenthetical expressions.
+ # @todo FIXME: This doesn't handle parenthetical expressions.
$m = array();
$q = array();
diff --git a/includes/search/SearchMssql.php b/includes/search/SearchMssql.php
index 8b850fae..ebf19d3a 100644
--- a/includes/search/SearchMssql.php
+++ b/includes/search/SearchMssql.php
@@ -91,8 +91,9 @@ class SearchMssql extends SearchEngine {
/**
* Return a LIMIT clause to limit results on the query.
*
+ * @param $sql string
+ *
* @return String
- * @private
*/
function queryLimit( $sql ) {
return $this->db->limitResult( $sql, $this->limit, $this->offset );
@@ -103,7 +104,6 @@ class SearchMssql extends SearchEngine {
* subclasses may define this though
*
* @return String
- * @private
*/
function queryRanking( $filteredTerm, $fulltext ) {
return ' ORDER BY ftindex.[RANK] DESC'; // return ' ORDER BY score(1)';
@@ -115,7 +115,6 @@ class SearchMssql extends SearchEngine {
*
* @param $filteredTerm String
* @param $fulltext Boolean
- * @private
*/
function getQuery( $filteredTerm, $fulltext ) {
return $this->queryLimit( $this->queryMain( $filteredTerm, $fulltext ) . ' ' .
@@ -124,7 +123,6 @@ class SearchMssql extends SearchEngine {
$this->queryRanking( $filteredTerm, $fulltext ) . ' ' );
}
-
/**
* Picks which field to index on, depending on what type of query.
*
@@ -159,7 +157,7 @@ class SearchMssql extends SearchEngine {
$lc = SearchEngine::legalSearchChars();
$this->searchTerms = array();
- # FIXME: This doesn't handle parenthetical expressions.
+ # @todo FIXME: This doesn't handle parenthetical expressions.
$m = array();
$q = array();
diff --git a/includes/search/SearchMySQL.php b/includes/search/SearchMySQL.php
index b92682ad..c52c9e5b 100644
--- a/includes/search/SearchMySQL.php
+++ b/includes/search/SearchMySQL.php
@@ -40,9 +40,14 @@ class SearchMySQL extends SearchEngine {
parent::__construct( $db );
}
- /**
- * Parse the user's query and transform it into an SQL fragment which will
+ /**
+ * Parse the user's query and transform it into an SQL fragment which will
* become part of a WHERE clause
+ *
+ * @param $filteredText string
+ * @param $fullText string
+ *
+ * @return string
*/
function parseQuery( $filteredText, $fulltext ) {
global $wgContLang;
@@ -50,13 +55,13 @@ class SearchMySQL extends SearchEngine {
$searchon = '';
$this->searchTerms = array();
- # FIXME: This doesn't handle parenthetical expressions.
+ # @todo FIXME: This doesn't handle parenthetical expressions.
$m = array();
if( preg_match_all( '/([-+<>~]?)(([' . $lc . ']+)(\*?)|"[^"]*")/',
$filteredText, $m, PREG_SET_ORDER ) ) {
foreach( $m as $bits ) {
@list( /* all */, $modifier, $term, $nonQuoted, $wildcard ) = $bits;
-
+
if( $nonQuoted != '' ) {
$term = $nonQuoted;
$quote = '';
@@ -64,13 +69,13 @@ class SearchMySQL extends SearchEngine {
$term = str_replace( '"', '', $term );
$quote = '"';
}
-
+
if( $searchon !== '' ) $searchon .= ' ';
if( $this->strictMatching && ($modifier == '') ) {
// If we leave this out, boolean op defaults to OR which is rarely helpful.
$modifier = '+';
}
-
+
// Some languages such as Serbian store the input form in the search index,
// so we may need to search for matches in multiple writing system variants.
$convertedVariants = $wgContLang->autoConvertToAllVariants( $term );
@@ -79,7 +84,7 @@ class SearchMySQL extends SearchEngine {
} else {
$variants = array( $term );
}
-
+
// The low-level search index does some processing on input to work
// around problems with minimum lengths and encoding in MySQL's
// fulltext engine.
@@ -87,12 +92,12 @@ class SearchMySQL extends SearchEngine {
$strippedVariants = array_map(
array( $wgContLang, 'normalizeForSearch' ),
$variants );
-
+
// Some languages such as Chinese force all variants to a canonical
// form when stripping to the low-level search index, so to be sure
// let's check our variants list for unique items after stripping.
$strippedVariants = array_unique( $strippedVariants );
-
+
$searchon .= $modifier;
if( count( $strippedVariants) > 1 )
$searchon .= '(';
@@ -108,7 +113,7 @@ class SearchMySQL extends SearchEngine {
}
if( count( $strippedVariants) > 1 )
$searchon .= ')';
-
+
// Match individual terms or quoted phrase in result highlighting...
// Note that variants will be introduced in a later stage for highlighting!
$regexp = $this->regexTerm( $term, $wildcard );
@@ -124,10 +129,10 @@ class SearchMySQL extends SearchEngine {
$field = $this->getIndexField( $fulltext );
return " MATCH($field) AGAINST('$searchon' IN BOOLEAN MODE) ";
}
-
+
function regexTerm( $string, $wildcard ) {
global $wgContLang;
-
+
$regex = preg_quote( $string, '/' );
if( $wgContLang->hasWordBreaks() ) {
if( $wildcard ) {
@@ -167,85 +172,112 @@ class SearchMySQL extends SearchEngine {
function searchTitle( $term ) {
return $this->searchInternal( $term, false );
}
-
+
protected function searchInternal( $term, $fulltext ) {
global $wgCountTotalSearchHits;
-
+
+ // This seems out of place, why is this called with empty term?
+ if ( trim( $term ) === '' ) return null;
+
$filteredTerm = $this->filter( $term );
- $resultSet = $this->db->query( $this->getQuery( $filteredTerm, $fulltext ) );
-
+ $query = $this->getQuery( $filteredTerm, $fulltext );
+ $resultSet = $this->db->select(
+ $query['tables'], $query['fields'], $query['conds'],
+ __METHOD__, $query['options'], $query['joins']
+ );
+
$total = null;
if( $wgCountTotalSearchHits ) {
- $totalResult = $this->db->query( $this->getCountQuery( $filteredTerm, $fulltext ) );
+ $query = $this->getCountQuery( $filteredTerm, $fulltext );
+ $totalResult = $this->db->select(
+ $query['tables'], $query['fields'], $query['conds'],
+ __METHOD__, $query['options'], $query['joins']
+ );
+
$row = $totalResult->fetchObject();
if( $row ) {
$total = intval( $row->c );
}
$totalResult->free();
}
-
+
return new MySQLSearchResultSet( $resultSet, $this->searchTerms, $total );
}
-
- /**
- * Return a partial WHERE clause to exclude redirects, if so set
- * @return String
- */
- function queryRedirect() {
- if( $this->showRedirects ) {
- return '';
- } else {
- return 'AND page_is_redirect=0';
+ public function supports( $feature ) {
+ switch( $feature ) {
+ case 'list-redirects':
+ case 'title-suffix-filter':
+ return true;
+ default:
+ return false;
}
}
/**
- * Return a partial WHERE clause to limit the search to the given namespaces
- * @return String
+ * Add special conditions
+ * @param $query Array
+ * @since 1.18
*/
- function queryNamespaces() {
- if( is_null($this->namespaces) )
- return ''; # search all
- if ( !count( $this->namespaces ) ) {
- $namespaces = '0';
- } else {
- $namespaces = $this->db->makeList( $this->namespaces );
+ protected function queryFeatures( &$query ) {
+ foreach ( $this->features as $feature => $value ) {
+ if ( $feature === 'list-redirects' && !$value ) {
+ $query['conds']['page_is_redirect'] = 0;
+ } elseif( $feature === 'title-suffix-filter' && $value ) {
+ $query['conds'][] = 'page_title' . $this->db->buildLike( $this->db->anyString(), $value );
+ }
}
- return 'AND page_namespace IN (' . $namespaces . ')';
}
/**
- * Return a LIMIT clause to limit results on the query.
- * @return String
+ * Add namespace conditions
+ * @param $query Array
+ * @since 1.18 (changed)
*/
- function queryLimit() {
- return $this->db->limitResult( '', $this->limit, $this->offset );
+ function queryNamespaces( &$query ) {
+ if ( is_array( $this->namespaces ) ) {
+ if ( count( $this->namespaces ) === 0 ) {
+ $this->namespaces[] = '0';
+ }
+ $query['conds']['page_namespace'] = $this->namespaces;
+ }
}
/**
- * Does not do anything for generic search engine
- * subclasses may define this though
- * @return String
+ * Add limit options
+ * @param $query Array
+ * @since 1.18
*/
- function queryRanking( $filteredTerm, $fulltext ) {
- return '';
+ protected function limitResult( &$query ) {
+ $query['options']['LIMIT'] = $this->limit;
+ $query['options']['OFFSET'] = $this->offset;
}
/**
- * Construct the full SQL query to do the search.
+ * Construct the SQL query to do the search.
* The guts shoulds be constructed in queryMain()
* @param $filteredTerm String
* @param $fulltext Boolean
+ * @return Array
+ * @since 1.18 (changed)
*/
function getQuery( $filteredTerm, $fulltext ) {
- return $this->queryMain( $filteredTerm, $fulltext ) . ' ' .
- $this->queryRedirect() . ' ' .
- $this->queryNamespaces() . ' ' .
- $this->queryRanking( $filteredTerm, $fulltext ) . ' ' .
- $this->queryLimit();
+ $query = array(
+ 'tables' => array(),
+ 'fields' => array(),
+ 'conds' => array(),
+ 'options' => array(),
+ 'joins' => array(),
+ );
+
+ $this->queryMain( $query, $filteredTerm, $fulltext );
+ $this->queryFeatures( $query );
+ $this->queryNamespaces( $query );
+ $this->limitResult( $query );
+
+ return $query;
}
-
+
/**
* Picks which field to index on, depending on what type of query.
* @param $fulltext Boolean
@@ -257,32 +289,40 @@ class SearchMySQL extends SearchEngine {
/**
* Get the base part of the search query.
- * The actual match syntax will depend on the server
- * version; MySQL 3 and MySQL 4 have different capabilities
- * in their fulltext search indexes.
*
* @param $filteredTerm String
* @param $fulltext Boolean
- * @return String
+ * @since 1.18 (changed)
*/
- function queryMain( $filteredTerm, $fulltext ) {
+ function queryMain( &$query, $filteredTerm, $fulltext ) {
$match = $this->parseQuery( $filteredTerm, $fulltext );
- $page = $this->db->tableName( 'page' );
- $searchindex = $this->db->tableName( 'searchindex' );
- return 'SELECT page_id, page_namespace, page_title ' .
- "FROM $page,$searchindex " .
- 'WHERE page_id=si_page AND ' . $match;
+ $query['tables'][] = 'page';
+ $query['tables'][] = 'searchindex';
+ $query['fields'][] = 'page_id';
+ $query['fields'][] = 'page_namespace';
+ $query['fields'][] = 'page_title';
+ $query['conds'][] = 'page_id=si_page';
+ $query['conds'][] = $match;
}
+ /**
+ * @since 1.18 (changed)
+ */
function getCountQuery( $filteredTerm, $fulltext ) {
$match = $this->parseQuery( $filteredTerm, $fulltext );
- $page = $this->db->tableName( 'page' );
- $searchindex = $this->db->tableName( 'searchindex' );
- return "SELECT COUNT(*) AS c " .
- "FROM $page,$searchindex " .
- 'WHERE page_id=si_page AND ' . $match .
- $this->queryRedirect() . ' ' .
- $this->queryNamespaces();
+
+ $query = array(
+ 'tables' => array( 'page', 'searchindex' ),
+ 'fields' => array( 'COUNT(*) as c' ),
+ 'conds' => array( 'page_id=si_page', $match ),
+ 'options' => array(),
+ 'joins' => array(),
+ );
+
+ $this->queryFeatures( $query );
+ $this->queryNamespaces( $query );
+
+ return $query;
}
/**
@@ -311,7 +351,7 @@ class SearchMySQL extends SearchEngine {
* @param $id Integer
* @param $title String
*/
- function updateTitle( $id, $title ) {
+ function updateTitle( $id, $title ) {
$dbw = wfGetDB( DB_MASTER );
$dbw->update( 'searchindex',
@@ -329,7 +369,7 @@ class SearchMySQL extends SearchEngine {
global $wgContLang;
wfProfileIn( __METHOD__ );
-
+
$out = parent::normalizeText( $string );
// MySQL fulltext index doesn't grok utf-8, so we
@@ -363,7 +403,7 @@ class SearchMySQL extends SearchEngine {
$out );
wfProfileOut( __METHOD__ );
-
+
return $out;
}
@@ -379,7 +419,7 @@ class SearchMySQL extends SearchEngine {
/**
* Check MySQL server's ft_min_word_len setting so we know
* if we need to pad short words...
- *
+ *
* @return int
*/
protected function minSearchLength() {
diff --git a/includes/search/SearchOracle.php b/includes/search/SearchOracle.php
index 15c386ce..85337ca1 100644
--- a/includes/search/SearchOracle.php
+++ b/includes/search/SearchOracle.php
@@ -123,18 +123,22 @@ class SearchOracle extends SearchEngine {
/**
* Return a LIMIT clause to limit results on the query.
+ *
+ * @param string
+ *
* @return String
*/
- function queryLimit($sql) {
+ function queryLimit( $sql ) {
return $this->db->limitResult($sql, $this->limit, $this->offset);
}
/**
* Does not do anything for generic search engine
* subclasses may define this though
+ *
* @return String
*/
- function queryRanking($filteredTerm, $fulltext) {
+ function queryRanking( $filteredTerm, $fulltext ) {
return ' ORDER BY score(1)';
}
@@ -186,7 +190,7 @@ class SearchOracle extends SearchEngine {
$lc = SearchEngine::legalSearchChars();
$this->searchTerms = array();
- # FIXME: This doesn't handle parenthetical expressions.
+ # @todo FIXME: This doesn't handle parenthetical expressions.
$m = array();
$searchon = '';
if (preg_match_all('/([-+<>~]?)(([' . $lc . ']+)(\*?)|"[^"]*")/',
@@ -253,9 +257,9 @@ class SearchOracle extends SearchEngine {
// ALTER SESSION SET CURRENT_SCHEMA = ...
// was used.
$dbw->query( "CALL ctx_ddl.sync_index(" .
- $dbw->addQuotes( $dbw->getDBname() . '.' . trim( $dbw->tableName( 'si_text_idx' ), '"' ) ) . ")" );
+ $dbw->addQuotes( $dbw->getDBname() . '.' . $dbw->tableName( 'si_text_idx', false ) ) . ")" );
$dbw->query( "CALL ctx_ddl.sync_index(" .
- $dbw->addQuotes( $dbw->getDBname() . '.' . trim( $dbw->tableName( 'si_title_idx' ), '"' ) ) . ")" );
+ $dbw->addQuotes( $dbw->getDBname() . '.' . $dbw->tableName( 'si_title_idx', false ) ) . ")" );
}
/**
diff --git a/includes/search/SearchPostgres.php b/includes/search/SearchPostgres.php
index 9d6d1539..cfe283b2 100644
--- a/includes/search/SearchPostgres.php
+++ b/includes/search/SearchPostgres.php
@@ -29,6 +29,11 @@
* @ingroup Search
*/
class SearchPostgres extends SearchEngine {
+
+ /**
+ * @var DatabasePostgres
+ */
+ protected $db;
/**
* Creates an instance of this class
* @param $db DatabaseSqlite: database object
@@ -56,6 +61,7 @@ class SearchPostgres extends SearchEngine {
}
return new PostgresSearchResultSet( $resultSet, $this->searchTerms );
}
+
function searchText( $term ) {
$q = $this->searchQuery( $term, 'textvector', 'old_text' );
$olderror = error_reporting(E_ERROR);
@@ -67,11 +73,14 @@ class SearchPostgres extends SearchEngine {
return new PostgresSearchResultSet( $resultSet, $this->searchTerms );
}
-
- /*
+ /**
* Transform the user's search string into a better form for tsearch2
* Returns an SQL fragment consisting of quoted text to search for.
- */
+ *
+ * @param $term string
+ *
+ * @return string
+ */
function parseQuery( $term ) {
wfDebug( "parseQuery received: $term \n" );
@@ -96,10 +105,10 @@ class SearchPostgres extends SearchEngine {
if (strtolower($terms[2]) === 'and') {
$searchstring .= ' & ';
}
- else if (strtolower($terms[2]) === 'or' or $terms[2] === '|') {
+ elseif (strtolower($terms[2]) === 'or' or $terms[2] === '|') {
$searchstring .= ' | ';
}
- else if (strtolower($terms[2]) === 'not') {
+ elseif (strtolower($terms[2]) === 'not') {
$searchstring .= ' & !';
}
else {
@@ -139,21 +148,18 @@ class SearchPostgres extends SearchEngine {
* @param $colname
*/
function searchQuery( $term, $fulltext, $colname ) {
- $postgresVersion = $this->db->getServerVersion();
-
- $prefix = $postgresVersion < 8.3 ? "'default'," : '';
-
# Get the SQL fragment for the given term
$searchstring = $this->parseQuery( $term );
## We need a separate query here so gin does not complain about empty searches
- $SQL = "SELECT to_tsquery($prefix $searchstring)";
+ $SQL = "SELECT to_tsquery($searchstring)";
$res = $this->db->query($SQL);
if (!$res) {
## TODO: Better output (example to catch: one 'two)
die ("Sorry, that was not a valid search string. Please go back and try again");
}
- $top = pg_fetch_result($res,0,0);
+ $top = $res->fetchRow();
+ $top = $top[0];
if ($top === "") { ## e.g. if only stopwords are used XXX return something better
$query = "SELECT page_id, page_namespace, page_title, 0 AS score ".
@@ -168,12 +174,10 @@ class SearchPostgres extends SearchEngine {
}
}
- $rankscore = $postgresVersion > 8.2 ? 5 : 1;
- $rank = $postgresVersion < 8.3 ? 'rank' : 'ts_rank';
$query = "SELECT page_id, page_namespace, page_title, ".
- "$rank($fulltext, to_tsquery($prefix $searchstring), $rankscore) AS score ".
+ "ts_rank($fulltext, to_tsquery($searchstring), 5) AS score ".
"FROM page p, revision r, pagecontent c WHERE p.page_latest = r.rev_id " .
- "AND r.rev_text_id = c.old_id AND $fulltext @@ to_tsquery($prefix $searchstring)";
+ "AND r.rev_text_id = c.old_id AND $fulltext @@ to_tsquery($searchstring)";
}
## Redirects
@@ -204,7 +208,7 @@ class SearchPostgres extends SearchEngine {
function update( $pageid, $title, $text ) {
## We don't want to index older revisions
$SQL = "UPDATE pagecontent SET textvector = NULL WHERE old_id IN ".
- "(SELECT rev_text_id FROM revision WHERE rev_page = " . intval( $pageid ) .
+ "(SELECT rev_text_id FROM revision WHERE rev_page = " . intval( $pageid ) .
" ORDER BY rev_text_id DESC OFFSET 1)";
$this->db->query($SQL);
return true;
diff --git a/includes/search/SearchSqlite.php b/includes/search/SearchSqlite.php
index 6accc31b..cd59eea9 100644
--- a/includes/search/SearchSqlite.php
+++ b/includes/search/SearchSqlite.php
@@ -26,6 +26,12 @@
* @ingroup Search
*/
class SearchSqlite extends SearchEngine {
+
+ /**
+ * @var DatabaseSqlite
+ */
+ protected $db;
+
/**
* Creates an instance of this class
* @param $db DatabaseSqlite: database object
@@ -45,6 +51,8 @@ class SearchSqlite extends SearchEngine {
/**
* Parse the user's query and transform it into an SQL fragment which will
* become part of a WHERE clause
+ *
+ * @return string
*/
function parseQuery( $filteredText, $fulltext ) {
global $wgContLang;
@@ -66,7 +74,9 @@ class SearchSqlite extends SearchEngine {
$quote = '"';
}
- if( $searchon !== '' ) $searchon .= ' ';
+ if( $searchon !== '' ) {
+ $searchon .= ' ';
+ }
// Some languages such as Serbian store the input form in the search index,
// so we may need to search for matches in multiple writing system variants.
diff --git a/includes/search/SearchUpdate.php b/includes/search/SearchUpdate.php
index 5262faa4..77146ebb 100644
--- a/includes/search/SearchUpdate.php
+++ b/includes/search/SearchUpdate.php
@@ -15,8 +15,8 @@
*/
class SearchUpdate {
- /* private */ var $mId = 0, $mNamespace, $mTitle, $mText;
- /* private */ var $mTitleWords;
+ private $mId = 0, $mNamespace, $mTitle, $mText;
+ private $mTitleWords;
function __construct( $id, $title, $text = false ) {
$nt = Title::newFromText( $title );
diff --git a/includes/specials/SpecialActiveusers.php b/includes/specials/SpecialActiveusers.php
index f016ab92..e4bf42d3 100644
--- a/includes/specials/SpecialActiveusers.php
+++ b/includes/specials/SpecialActiveusers.php
@@ -32,6 +32,16 @@
*/
class ActiveUsersPager extends UsersPager {
+ /**
+ * @var FormOptions
+ */
+ protected $opts;
+
+ /**
+ * @var Array
+ */
+ protected $groups;
+
function __construct( $group = null ) {
global $wgRequest, $wgActiveUserDays;
$this->RCMaxAge = $wgActiveUserDays;
@@ -49,6 +59,10 @@ class ActiveUsersPager extends UsersPager {
parent::__construct();
}
+ function getTitle() {
+ return SpecialPage::getTitleFor( 'Activeusers' );
+ }
+
public function setupOptions() {
global $wgRequest;
diff --git a/includes/specials/SpecialAllmessages.php b/includes/specials/SpecialAllmessages.php
index 296c6f50..2214b4ab 100644
--- a/includes/specials/SpecialAllmessages.php
+++ b/includes/specials/SpecialAllmessages.php
@@ -30,6 +30,11 @@
class SpecialAllmessages extends SpecialPage {
/**
+ * @var AllmessagesTablePager
+ */
+ protected $table;
+
+ /**
* Constructor
*/
public function __construct() {
@@ -42,37 +47,102 @@ class SpecialAllmessages extends SpecialPage {
* @param $par Mixed: parameter passed to the page or null
*/
public function execute( $par ) {
- global $wgOut, $wgRequest;
+ $request = $this->getRequest();
+ $out = $this->getOutput();
$this->setHeaders();
global $wgUseDatabaseMessages;
if( !$wgUseDatabaseMessages ) {
- $wgOut->addWikiMsg( 'allmessagesnotsupportedDB' );
+ $out->addWikiMsg( 'allmessagesnotsupportedDB' );
return;
} else {
$this->outputHeader( 'allmessagestext' );
}
- $this->filter = $wgRequest->getVal( 'filter', 'all' );
- $this->prefix = $wgRequest->getVal( 'prefix', '' );
+ $out->addModuleStyles( 'mediawiki.special' );
+
+ $this->filter = $request->getVal( 'filter', 'all' );
+ $this->prefix = $request->getVal( 'prefix', '' );
$this->table = new AllmessagesTablePager(
$this,
- $conds = array(),
- wfGetLangObj( $wgRequest->getVal( 'lang', $par ) )
+ array(),
+ wfGetLangObj( $request->getVal( 'lang', $par ) )
);
- $this->langCode = $this->table->lang->getCode();
+ $this->langcode = $this->table->lang->getCode();
- $wgOut->addHTML( $this->buildForm() .
+ $out->addHTML( $this->table->buildForm() .
$this->table->getNavigationBar() .
- $this->table->getLimitForm() .
$this->table->getBody() .
$this->table->getNavigationBar() );
}
+}
+
+/**
+ * Use TablePager for prettified output. We have to pretend that we're
+ * getting data from a table when in fact not all of it comes from the database.
+ */
+class AllmessagesTablePager extends TablePager {
+
+ protected $filter, $prefix, $langcode, $displayPrefix;
+
+ public $mLimitsShown;
+
+ /**
+ * @var Language
+ */
+ public $lang;
+
+ /**
+ * @var null|bool
+ */
+ public $custom;
+
+ function __construct( $page, $conds, $langObj = null ) {
+ parent::__construct();
+ $this->mIndexField = 'am_title';
+ $this->mPage = $page;
+ $this->mConds = $conds;
+ $this->mDefaultDirection = true; // always sort ascending
+ $this->mLimitsShown = array( 20, 50, 100, 250, 500, 5000 );
+
+ global $wgLang, $wgContLang, $wgRequest;
+
+ $this->talk = htmlspecialchars( wfMsg( 'talkpagelinktext' ) );
+
+ $this->lang = ( $langObj ? $langObj : $wgContLang );
+ $this->langcode = $this->lang->getCode();
+ $this->foreign = $this->langcode != $wgContLang->getCode();
+
+ if( $wgRequest->getVal( 'filter', 'all' ) === 'all' ){
+ $this->custom = null; // So won't match in either case
+ } else {
+ $this->custom = ($wgRequest->getVal( 'filter' ) == 'unmodified');
+ }
+
+ $prefix = $wgLang->ucfirst( $wgRequest->getVal( 'prefix', '' ) );
+ $prefix = $prefix != '' ? Title::makeTitleSafe( NS_MEDIAWIKI, $wgRequest->getVal( 'prefix', null ) ) : null;
+ if( $prefix !== null ){
+ $this->displayPrefix = $prefix->getDBkey();
+ $this->prefix = '/^' . preg_quote( $this->displayPrefix ) . '/i';
+ } else {
+ $this->displayPrefix = false;
+ $this->prefix = false;
+ }
+
+ // The suffix that may be needed for message names if we're in a
+ // different language (eg [[MediaWiki:Foo/fr]]: $suffix = '/fr'
+ if( $this->foreign ) {
+ $this->suffix = '/' . $this->langcode;
+ } else {
+ $this->suffix = '';
+ }
+ }
+
function buildForm() {
global $wgScript;
@@ -88,7 +158,7 @@ class SpecialAllmessages extends SpecialPage {
Xml::label( wfMsg( 'allmessages-prefix' ), 'mw-allmessages-form-prefix' ) .
"</td>\n
<td class=\"mw-input\">" .
- Xml::input( 'prefix', 20, str_replace( '_', ' ', $this->prefix ), array( 'id' => 'mw-allmessages-form-prefix' ) ) .
+ Xml::input( 'prefix', 20, str_replace( '_', ' ', $this->displayPrefix ), array( 'id' => 'mw-allmessages-form-prefix' ) ) .
"</td>\n
</tr>
<tr>\n
@@ -124,72 +194,33 @@ class SpecialAllmessages extends SpecialPage {
Xml::openElement( 'select', array( 'id' => 'mw-allmessages-form-lang', 'name' => 'lang' ) );
foreach( $languages as $lang => $name ) {
- $selected = $lang == $this->langCode;
+ $selected = $lang == $this->langcode;
$out .= Xml::option( $lang . ' - ' . $name, $lang, $selected ) . "\n";
}
$out .= Xml::closeElement( 'select' ) .
"</td>\n
- </tr>
- <tr>\n
+ </tr>" .
+
+ '<tr>
+ <td class="mw-label">' .
+ Xml::label( wfMsg( 'table_pager_limit_label'), 'mw-table_pager_limit_label' ) .
+ '</td>
+ <td class="mw-input">' .
+ $this->getLimitSelect() .
+ '</td>
+ <tr>
<td></td>
- <td>" .
+ <td>' .
Xml::submitButton( wfMsg( 'allmessages-filter-submit' ) ) .
"</td>\n
</tr>" .
+
Xml::closeElement( 'table' ) .
- $this->table->getHiddenFields( array( 'title', 'prefix', 'filter', 'lang' ) ) .
+ $this->getHiddenFields( array( 'title', 'prefix', 'filter', 'lang', 'limit' ) ) .
Xml::closeElement( 'fieldset' ) .
Xml::closeElement( 'form' );
return $out;
}
-}
-
-/* use TablePager for prettified output. We have to pretend that we're
- * getting data from a table when in fact not all of it comes from the database.
- */
-class AllmessagesTablePager extends TablePager {
-
- public $mLimitsShown;
-
- function __construct( $page, $conds, $langObj = null ) {
- parent::__construct();
- $this->mIndexField = 'am_title';
- $this->mPage = $page;
- $this->mConds = $conds;
- $this->mDefaultDirection = true; // always sort ascending
- $this->mLimitsShown = array( 20, 50, 100, 250, 500, 5000 );
-
- global $wgLang, $wgContLang, $wgRequest;
-
- $this->talk = htmlspecialchars( wfMsg( 'talkpagelinktext' ) );
-
- $this->lang = ( $langObj ? $langObj : $wgContLang );
- $this->langcode = $this->lang->getCode();
- $this->foreign = $this->langcode != $wgContLang->getCode();
-
- if( $wgRequest->getVal( 'filter', 'all' ) === 'all' ){
- $this->custom = null; // So won't match in either case
- } else {
- $this->custom = ($wgRequest->getVal( 'filter' ) == 'unmodified');
- }
-
- $prefix = $wgLang->ucfirst( $wgRequest->getVal( 'prefix', '' ) );
- $prefix = $prefix != '' ? Title::makeTitleSafe( NS_MEDIAWIKI, $wgRequest->getVal( 'prefix', null ) ) : null;
- if( $prefix !== null ){
- $this->prefix = '/^' . preg_quote( $prefix->getDBkey() ) . '/i';
- } else {
- $this->prefix = false;
- }
- $this->getSkin();
-
- // The suffix that may be needed for message names if we're in a
- // different language (eg [[MediaWiki:Foo/fr]]: $suffix = '/fr'
- if( $this->foreign ) {
- $this->suffix = '/' . $this->langcode;
- } else {
- $this->suffix = '';
- }
- }
function getAllMessages( $descending ) {
wfProfileIn( __METHOD__ );
@@ -208,12 +239,16 @@ class AllmessagesTablePager extends TablePager {
}
/**
- * Determine which of the MediaWiki and MediaWiki_talk namespace pages exist.
- * Returns array( 'pages' => ..., 'talks' => ... ), where the subarrays have
- * an entry for each existing page, with the key being the message name and
+ * Determine which of the MediaWiki and MediaWiki_talk namespace pages exist.
+ * Returns array( 'pages' => ..., 'talks' => ... ), where the subarrays have
+ * an entry for each existing page, with the key being the message name and
* value arbitrary.
+ *
+ * @param array $messageNames
+ * @param string $langcode What language code
+ * @param bool $foreign Whether the $langcode is not the content language
*/
- function getCustomisedStatuses( $messageNames ) {
+ public static function getCustomisedStatuses( $messageNames, $langcode = 'en', $foreign = false ) {
wfProfileIn( __METHOD__ . '-db' );
$dbr = wfGetDB( DB_SLAVE );
@@ -226,20 +261,19 @@ class AllmessagesTablePager extends TablePager {
$xNames = array_flip( $messageNames );
$pageFlags = $talkFlags = array();
-
+
foreach ( $res as $s ) {
if( $s->page_namespace == NS_MEDIAWIKI ) {
- if( $this->foreign ) {
+ if( $foreign ) {
$title = explode( '/', $s->page_title );
- if( count( $title ) === 2 && $this->langcode == $title[1]
- && isset( $xNames[$title[0]] ) )
- {
+ if( count( $title ) === 2 && $langcode == $title[1]
+ && isset( $xNames[$title[0]] ) ) {
$pageFlags["{$title[0]}"] = true;
}
} elseif( isset( $xNames[$s->page_title] ) ) {
$pageFlags[$s->page_title] = true;
}
- } else if( $s->page_namespace == NS_MEDIAWIKI_TALK ){
+ } elseif( $s->page_namespace == NS_MEDIAWIKI_TALK ){
$talkFlags[$s->page_title] = true;
}
}
@@ -249,14 +283,15 @@ class AllmessagesTablePager extends TablePager {
return array( 'pages' => $pageFlags, 'talks' => $talkFlags );
}
- /* This function normally does a database query to get the results; we need
+ /**
+ * This function normally does a database query to get the results; we need
* to make a pretend result using a FakeResultWrapper.
*/
function reallyDoQuery( $offset, $limit, $descending ) {
$result = new FakeResultWrapper( array() );
$messageNames = $this->getAllMessages( $descending );
- $statuses = $this->getCustomisedStatuses( $messageNames );
+ $statuses = self::getCustomisedStatuses( $messageNames, $this->langcode, $this->foreign );
$count = 0;
foreach( $messageNames as $key ) {
@@ -264,17 +299,21 @@ class AllmessagesTablePager extends TablePager {
if( $customised !== $this->custom &&
( $descending && ( $key < $offset || !$offset ) || !$descending && $key > $offset ) &&
( ( $this->prefix && preg_match( $this->prefix, $key ) ) || $this->prefix === false )
- ){
+ ) {
+ $actual = wfMessage( $key )->inLanguage( $this->langcode )->plain();
+ $default = wfMessage( $key )->inLanguage( $this->langcode )->useDatabase( false )->plain();
$result->result[] = array(
'am_title' => $key,
- 'am_actual' => wfMsgGetKey( $key, /*useDB*/true, $this->langcode, false ),
- 'am_default' => wfMsgGetKey( $key, /*useDB*/false, $this->langcode, false ),
+ 'am_actual' => $actual,
+ 'am_default' => $default,
'am_customised' => $customised,
'am_talk_exists' => isset( $statuses['talks'][$key] )
);
$count++;
}
- if( $count == $limit ) break;
+ if( $count == $limit ) {
+ break;
+ }
}
return $result;
}
@@ -306,9 +345,9 @@ class AllmessagesTablePager extends TablePager {
$talk = Title::makeTitle( NS_MEDIAWIKI_TALK, $value . $this->suffix );
if( $this->mCurrentRow->am_customised ){
- $title = $this->mSkin->linkKnown( $title, $wgLang->lcfirst( $value ) );
+ $title = Linker::linkKnown( $title, $wgLang->lcfirst( $value ) );
} else {
- $title = $this->mSkin->link(
+ $title = Linker::link(
$title,
$wgLang->lcfirst( $value ),
array(),
@@ -317,9 +356,9 @@ class AllmessagesTablePager extends TablePager {
);
}
if ( $this->mCurrentRow->am_talk_exists ) {
- $talk = $this->mSkin->linkKnown( $talk , $this->talk );
+ $talk = Linker::linkKnown( $talk , $this->talk );
} else {
- $talk = $this->mSkin->link(
+ $talk = Linker::link(
$talk,
$this->talk,
array(),
@@ -330,7 +369,6 @@ class AllmessagesTablePager extends TablePager {
return $title . ' (' . $talk . ')';
case 'am_default' :
- return Sanitizer::escapeHtmlAllowEntities( $value, ENT_QUOTES );
case 'am_actual' :
return Sanitizer::escapeHtmlAllowEntities( $value, ENT_QUOTES );
}
@@ -369,8 +407,10 @@ class AllmessagesTablePager extends TablePager {
function getCellAttrs( $field, $value ){
if( $this->mCurrentRow->am_customised && $field == 'am_title' ){
return array( 'rowspan' => '2', 'class' => $field );
- } else {
+ } else if( $field == 'am_title' ) {
return array( 'class' => $field );
+ } else {
+ return array( 'lang' => $this->langcode, 'dir' => $this->lang->getDir(), 'class' => $field );
}
}
@@ -381,15 +421,19 @@ class AllmessagesTablePager extends TablePager {
'am_default' => wfMsg( 'allmessagesdefault' )
);
}
+
function getTitle() {
return SpecialPage::getTitleFor( 'Allmessages', false );
}
+
function isFieldSortable( $x ){
return false;
}
+
function getDefaultSort(){
return '';
}
+
function getQueryInfo(){
return '';
}
diff --git a/includes/specials/SpecialAllpages.php b/includes/specials/SpecialAllpages.php
index 5fa1aa47..a9cbf3ab 100644
--- a/includes/specials/SpecialAllpages.php
+++ b/includes/specials/SpecialAllpages.php
@@ -20,7 +20,7 @@
* @file
* @ingroup SpecialPage
*/
-
+
/**
* Implements Special:Allpages
*
@@ -58,24 +58,27 @@ class SpecialAllpages extends IncludableSpecialPage {
* @param $par String: becomes "FOO" when called like Special:Allpages/FOO (default NULL)
*/
function execute( $par ) {
- global $wgRequest, $wgOut, $wgContLang;
+ global $wgContLang;
+ $request = $this->getRequest();
+ $out = $this->getOutput();
$this->setHeaders();
$this->outputHeader();
- $wgOut->allowClickjacking();
+ $out->allowClickjacking();
# GET values
- $from = $wgRequest->getVal( 'from', null );
- $to = $wgRequest->getVal( 'to', null );
- $namespace = $wgRequest->getInt( 'namespace' );
+ $from = $request->getVal( 'from', null );
+ $to = $request->getVal( 'to', null );
+ $namespace = $request->getInt( 'namespace' );
$namespaces = $wgContLang->getNamespaces();
- $wgOut->setPagetitle(
+ $out->setPagetitle(
( $namespace > 0 && in_array( $namespace, array_keys( $namespaces) ) ) ?
wfMsg( 'allinnamespace', str_replace( '_', ' ', $namespaces[$namespace] ) ) :
wfMsg( 'allarticles' )
);
+ $out->addModuleStyles( 'mediawiki.special' );
if( isset($par) ) {
$this->showChunk( $namespace, $par, $to );
@@ -96,7 +99,7 @@ class SpecialAllpages extends IncludableSpecialPage {
function namespaceForm( $namespace = NS_MAIN, $from = '', $to = '' ) {
global $wgScript;
$t = $this->getTitle();
-
+
$out = Xml::openElement( 'div', array( 'class' => 'namespaceoptions' ) );
$out .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
$out .= Html::hidden( 'title', $t->getPrefixedText() );
@@ -141,7 +144,7 @@ class SpecialAllpages extends IncludableSpecialPage {
* @param $to String: list all pages to this name
*/
function showToplevel( $namespace = NS_MAIN, $from = '', $to = '' ) {
- global $wgOut;
+ $output = $this->getOutput();
# TODO: Either make this *much* faster or cache the title index points
# in the querycache table.
@@ -220,7 +223,7 @@ class SpecialAllpages extends IncludableSpecialPage {
if( !empty($lines) ) {
$this->showChunk( $namespace, $from, $to );
} else {
- $wgOut->addHTML( $this->namespaceForm( $namespace, $from, $to ) );
+ $output->addHTML( $this->namespaceForm( $namespace, $from, $to ) );
}
return;
}
@@ -240,14 +243,13 @@ class SpecialAllpages extends IncludableSpecialPage {
$out2 = '';
} else {
if( isset($from) || isset($to) ) {
- global $wgUser;
$out2 = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-form' ) ).
'<tr>
<td>' .
$nsForm .
'</td>
<td class="mw-allpages-nav">' .
- $wgUser->getSkin()->link( $this->getTitle(), wfMsgHtml ( 'allpages' ),
+ $this->getSkin()->link( $this->getTitle(), wfMsgHtml ( 'allpages' ),
array(), array(), 'known' ) .
"</td>
</tr>" .
@@ -256,7 +258,7 @@ class SpecialAllpages extends IncludableSpecialPage {
$out2 = $nsForm;
}
}
- $wgOut->addHTML( $out2 . $out );
+ $output->addHTML( $out2 . $out );
}
/**
@@ -291,9 +293,9 @@ class SpecialAllpages extends IncludableSpecialPage {
* @param $to String: list all pages to this name (default FALSE)
*/
function showChunk( $namespace = NS_MAIN, $from = false, $to = false ) {
- global $wgOut, $wgUser, $wgContLang, $wgLang;
-
- $sk = $wgUser->getSkin();
+ global $wgContLang, $wgLang;
+ $output = $this->getOutput();
+ $sk = $this->getSkin();
$fromList = $this->getNamespaceKeyAndText($namespace, $from);
$toList = $this->getNamespaceKeyAndText( $namespace, $to );
@@ -301,7 +303,7 @@ class SpecialAllpages extends IncludableSpecialPage {
$n = 0;
if ( !$fromList || !$toList ) {
- $out = wfMsgWikiHtml( 'allpagesbadtitle' );
+ $out = wfMsgExt( 'allpagesbadtitle', 'parse' );
} elseif ( !in_array( $namespace, array_keys( $namespaces ) ) ) {
// Show errormessage and reset to NS_MAIN
$out = wfMsgExt( 'allpages-bad-ns', array( 'parseinline' ), $namespace );
@@ -320,7 +322,7 @@ class SpecialAllpages extends IncludableSpecialPage {
}
$res = $dbr->select( 'page',
- array( 'page_namespace', 'page_title', 'page_is_redirect' ),
+ array( 'page_namespace', 'page_title', 'page_is_redirect', 'page_id' ),
$conds,
__METHOD__,
array(
@@ -333,10 +335,10 @@ class SpecialAllpages extends IncludableSpecialPage {
if( $res->numRows() > 0 ) {
$out = Xml::openElement( 'table', array( 'class' => 'mw-allpages-table-chunk' ) );
while( ( $n < $this->maxPerPage ) && ( $s = $res->fetchObject() ) ) {
- $t = Title::makeTitle( $s->page_namespace, $s->page_title );
+ $t = Title::newFromRow( $s );
if( $t ) {
$link = ( $s->page_is_redirect ? '<div class="allpagesredirect">' : '' ) .
- $sk->linkKnown( $t, htmlspecialchars( $t->getText() ) ) .
+ $sk->link( $t ) .
($s->page_is_redirect ? '</div>' : '' );
} else {
$link = '[[' . htmlspecialchars( $s->page_title ) . ']]';
@@ -373,7 +375,7 @@ class SpecialAllpages extends IncludableSpecialPage {
'page_title',
array( 'page_namespace' => $namespace, 'page_title < '.$dbr->addQuotes($from) ),
__METHOD__,
- array( 'ORDER BY' => 'page_title DESC',
+ array( 'ORDER BY' => 'page_title DESC',
'LIMIT' => $this->maxPerPage, 'OFFSET' => ($this->maxPerPage - 1 )
)
);
@@ -409,7 +411,7 @@ class SpecialAllpages extends IncludableSpecialPage {
$nsForm .
'</td>
<td class="mw-allpages-nav">' .
- $sk->link( $self, wfMsgHtml ( 'allpages' ), array(), array(), 'known' );
+ $sk->link( $self, wfMsgHtml ( 'allpages' ) );
# Do we put a previous link ?
if( isset( $prevTitle ) && $pt = $prevTitle->getText() ) {
@@ -420,7 +422,7 @@ class SpecialAllpages extends IncludableSpecialPage {
$prevLink = $sk->linkKnown(
$self,
- htmlspecialchars( wfMsg( 'prevpage', $pt ) ),
+ wfMessage( 'prevpage', $pt )->escaped(),
array(),
$query
);
@@ -437,7 +439,7 @@ class SpecialAllpages extends IncludableSpecialPage {
$nextLink = $sk->linkKnown(
$self,
- htmlspecialchars( wfMsg( 'nextpage', $t->getText() ) ),
+ wfMessage( 'nextpage', $t->getText() )->escaped(),
array(),
$query
);
@@ -446,20 +448,18 @@ class SpecialAllpages extends IncludableSpecialPage {
$out2 .= "</td></tr></table>";
}
- $wgOut->addHTML( $out2 . $out );
- if( isset($prevLink) or isset($nextLink) ) {
- $wgOut->addHTML( '<hr /><p class="mw-allpages-nav">' );
- if( isset( $prevLink ) ) {
- $wgOut->addHTML( $prevLink );
- }
- if( isset( $prevLink ) && isset( $nextLink ) ) {
- $wgOut->addHTML( wfMsgExt( 'pipe-separator' , 'escapenoentities' ) );
- }
- if( isset( $nextLink ) ) {
- $wgOut->addHTML( $nextLink );
- }
- $wgOut->addHTML( '</p>' );
+ $output->addHTML( $out2 . $out );
+
+ $links = array();
+ if ( isset( $prevLink ) ) $links[] = $prevLink;
+ if ( isset( $nextLink ) ) $links[] = $nextLink;
+ if ( count( $links ) ) {
+ $output->addHTML(
+ Html::element( 'hr' ) .
+ Html::rawElement( 'div', array( 'class' => 'mw-allpages-nav' ),
+ $wgLang->pipeList( $links )
+ ) );
}
}
@@ -468,17 +468,15 @@ class SpecialAllpages extends IncludableSpecialPage {
* @param $ns Integer: the namespace of the article
* @param $text String: the name of the article
* @return array( int namespace, string dbkey, string pagename ) or NULL on error
- * @static (sort of)
- * @access private
*/
- function getNamespaceKeyAndText($ns, $text) {
+ protected function getNamespaceKeyAndText($ns, $text) {
if ( $text == '' )
return array( $ns, '', '' ); # shortcut for common case
$t = Title::makeTitleSafe($ns, $text);
if ( $t && $t->isLocal() ) {
return array( $t->getNamespace(), $t->getDBkey(), $t->getText() );
- } else if ( $t ) {
+ } elseif ( $t ) {
return null;
}
diff --git a/includes/specials/SpecialAncientpages.php b/includes/specials/SpecialAncientpages.php
index 2d5047d2..cbb5df80 100644
--- a/includes/specials/SpecialAncientpages.php
+++ b/includes/specials/SpecialAncientpages.php
@@ -28,8 +28,8 @@
*/
class AncientPagesPage extends QueryPage {
- function getName() {
- return "Ancientpages";
+ function __construct( $name = 'Ancientpages' ) {
+ parent::__construct( $name );
}
function isExpensive() {
@@ -38,20 +38,20 @@ class AncientPagesPage extends QueryPage {
function isSyndicated() { return false; }
- function getSQL() {
- $db = wfGetDB( DB_SLAVE );
- $page = $db->tableName( 'page' );
- $revision = $db->tableName( 'revision' );
- $epoch = $db->unixTimestamp( 'rev_timestamp' );
+ function getQueryInfo() {
+ return array(
+ 'tables' => array( 'page', 'revision' ),
+ 'fields' => array( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'rev_timestamp AS value' ),
+ 'conds' => array( 'page_namespace' => MWNamespace::getContentNamespaces(),
+ 'page_is_redirect' => 0,
+ 'page_latest=rev_id' )
+ );
+ }
- return
- "SELECT 'Ancientpages' as type,
- page_namespace as namespace,
- page_title as title,
- $epoch as value
- FROM $page, $revision
- WHERE page_namespace=".NS_MAIN." AND page_is_redirect=0
- AND page_latest=rev_id";
+ function usesTimestamps() {
+ return true;
}
function sortDescending() {
@@ -67,14 +67,6 @@ class AncientPagesPage extends QueryPage {
$title,
htmlspecialchars( $wgContLang->convert( $title->getPrefixedText() ) )
);
- return wfSpecialList($link, htmlspecialchars($d) );
+ return wfSpecialList( $link, htmlspecialchars($d) );
}
}
-
-function wfSpecialAncientpages() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $app = new AncientPagesPage();
-
- $app->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialBlankpage.php b/includes/specials/SpecialBlankpage.php
index aaa45a80..42d33779 100644
--- a/includes/specials/SpecialBlankpage.php
+++ b/includes/specials/SpecialBlankpage.php
@@ -32,8 +32,7 @@ class SpecialBlankpage extends UnlistedSpecialPage {
parent::__construct( 'Blankpage' );
}
public function execute( $par ) {
- global $wgOut;
$this->setHeaders();
- $wgOut->addWikiMsg('intentionallyblankpage');
+ $this->getOutput()->addWikiMsg('intentionallyblankpage');
}
}
diff --git a/includes/specials/SpecialBlock.php b/includes/specials/SpecialBlock.php
new file mode 100644
index 00000000..f1fe8386
--- /dev/null
+++ b/includes/specials/SpecialBlock.php
@@ -0,0 +1,855 @@
+<?php
+/**
+ * Implements Special:Block
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * A special page that allows users with 'block' right to block users from
+ * editing pages and other actions
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialBlock extends SpecialPage {
+
+ /** The maximum number of edits a user can have and still be hidden
+ * TODO: config setting? */
+ const HIDEUSER_CONTRIBLIMIT = 1000;
+
+ /** @var User user to be blocked, as passed either by parameter (url?wpTarget=Foo)
+ * or as subpage (Special:Block/Foo) */
+ protected $target;
+
+ /// @var Block::TYPE_ constant
+ protected $type;
+
+ /// @var User|String the previous block target
+ protected $previousTarget;
+
+ /// @var Bool whether the previous submission of the form asked for HideUser
+ protected $requestedHideUser;
+
+ /// @var Bool
+ protected $alreadyBlocked;
+
+ /// @var Array
+ protected $preErrors = array();
+
+ public function __construct() {
+ parent::__construct( 'Block', 'block' );
+ }
+
+ public function execute( $par ) {
+ global $wgUser, $wgOut, $wgRequest;
+
+ # Permission check
+ if( !$this->userCanExecute( $wgUser ) ) {
+ $this->displayRestrictionError();
+ return;
+ }
+
+ # Can't block when the database is locked
+ if( wfReadOnly() ) {
+ throw new ReadOnlyError;
+ }
+
+ # Extract variables from the request. Try not to get into a situation where we
+ # need to extract *every* variable from the form just for processing here, but
+ # there are legitimate uses for some variables
+ list( $this->target, $this->type ) = self::getTargetAndType( $par, $wgRequest );
+ if ( $this->target instanceof User ) {
+ # Set the 'relevant user' in the skin, so it displays links like Contributions,
+ # User logs, UserRights, etc.
+ $this->getSkin()->setRelevantUser( $this->target );
+ }
+
+ list( $this->previousTarget, /*...*/ ) = Block::parseTarget( $wgRequest->getVal( 'wpPreviousTarget' ) );
+ $this->requestedHideUser = $wgRequest->getBool( 'wpHideUser' );
+
+ # bug 15810: blocked admins should have limited access here
+ $status = self::checkUnblockSelf( $this->target );
+ if ( $status !== true ) {
+ throw new ErrorPageError( 'badaccess', $status );
+ }
+
+ $wgOut->setPageTitle( wfMsg( 'blockip-title' ) );
+ $wgOut->addModules( 'mediawiki.special', 'mediawiki.special.block' );
+
+ $out = $this->getOutput();
+ $out->setPageTitle( wfMsg( 'blockip-title' ) );
+ $out->addModules( array( 'mediawiki.special', 'mediawiki.special.block' ) );
+
+ $fields = $this->getFormFields();
+ $this->maybeAlterFormDefaults( $fields );
+
+ $form = new HTMLForm( $fields, $this->getContext() );
+ $form->setWrapperLegend( wfMsg( 'blockip-legend' ) );
+ $form->setSubmitCallback( array( __CLASS__, 'processForm' ) );
+
+ $t = $this->alreadyBlocked
+ ? wfMsg( 'ipb-change-block' )
+ : wfMsg( 'ipbsubmit' );
+ $form->setSubmitText( $t );
+
+ $this->doPreText( $form );
+ $this->doHeadertext( $form );
+ $this->doPostText( $form );
+
+ if( $form->show() ){
+ $wgOut->setPageTitle( wfMsg( 'blockipsuccesssub' ) );
+ $wgOut->addWikiMsg( 'blockipsuccesstext', $this->target );
+ }
+ }
+
+ /**
+ * Get the HTMLForm descriptor array for the block form
+ * @return Array
+ */
+ protected static function getFormFields(){
+ global $wgUser, $wgBlockAllowsUTEdit;
+
+ $a = array(
+ 'Target' => array(
+ 'type' => 'text',
+ 'label-message' => 'ipadressorusername',
+ 'tabindex' => '1',
+ 'id' => 'mw-bi-target',
+ 'size' => '45',
+ 'required' => true,
+ 'validation-callback' => array( __CLASS__, 'validateTargetField' ),
+ ),
+ 'Expiry' => array(
+ 'type' => !count( self::getSuggestedDurations() ) ? 'text' : 'selectorother',
+ 'label-message' => 'ipbexpiry',
+ 'required' => true,
+ 'tabindex' => '2',
+ 'options' => self::getSuggestedDurations(),
+ 'other' => wfMsg( 'ipbother' ),
+ ),
+ 'Reason' => array(
+ 'type' => 'selectandother',
+ 'label-message' => 'ipbreason',
+ 'options-message' => 'ipbreason-dropdown',
+ ),
+ 'CreateAccount' => array(
+ 'type' => 'check',
+ 'label-message' => 'ipbcreateaccount',
+ 'default' => true,
+ ),
+ );
+
+ if( self::canBlockEmail( $wgUser ) ) {
+ $a['DisableEmail'] = array(
+ 'type' => 'check',
+ 'label-message' => 'ipbemailban',
+ );
+ }
+
+ if( $wgBlockAllowsUTEdit ){
+ $a['DisableUTEdit'] = array(
+ 'type' => 'check',
+ 'label-message' => 'ipb-disableusertalk',
+ 'default' => false,
+ );
+ }
+
+ $a['AutoBlock'] = array(
+ 'type' => 'check',
+ 'label-message' => 'ipbenableautoblock',
+ 'default' => true,
+ );
+
+ # Allow some users to hide name from block log, blocklist and listusers
+ if( $wgUser->isAllowed( 'hideuser' ) ) {
+ $a['HideUser'] = array(
+ 'type' => 'check',
+ 'label-message' => 'ipbhidename',
+ 'cssclass' => 'mw-block-hideuser',
+ );
+ }
+
+ # Watchlist their user page? (Only if user is logged in)
+ if( $wgUser->isLoggedIn() ) {
+ $a['Watch'] = array(
+ 'type' => 'check',
+ 'label-message' => 'ipbwatchuser',
+ );
+ }
+
+ $a['HardBlock'] = array(
+ 'type' => 'check',
+ 'label-message' => 'ipb-hardblock',
+ 'default' => false,
+ );
+
+ # This is basically a copy of the Target field, but the user can't change it, so we
+ # can see if the warnings we maybe showed to the user before still apply
+ $a['PreviousTarget'] = array(
+ 'type' => 'hidden',
+ 'default' => false,
+ );
+
+ # We'll turn this into a checkbox if we need to
+ $a['Confirm'] = array(
+ 'type' => 'hidden',
+ 'default' => '',
+ 'label-message' => 'ipb-confirm',
+ );
+
+ return $a;
+ }
+
+ /**
+ * If the user has already been blocked with similar settings, load that block
+ * and change the defaults for the form fields to match the existing settings.
+ * @param &$fields Array HTMLForm descriptor array
+ * @return Bool whether fields were altered (that is, whether the target is
+ * already blocked)
+ */
+ protected function maybeAlterFormDefaults( &$fields ){
+ global $wgRequest, $wgUser;
+
+ # This will be overwritten by request data
+ $fields['Target']['default'] = (string)$this->target;
+
+ # This won't be
+ $fields['PreviousTarget']['default'] = (string)$this->target;
+
+ $block = Block::newFromTarget( $this->target );
+
+ if( $block instanceof Block && !$block->mAuto # The block exists and isn't an autoblock
+ && ( $this->type != Block::TYPE_RANGE # The block isn't a rangeblock
+ || $block->getTarget() == $this->target ) # or if it is, the range is what we're about to block
+ )
+ {
+ $fields['HardBlock']['default'] = $block->isHardblock();
+ $fields['CreateAccount']['default'] = $block->prevents( 'createaccount' );
+ $fields['AutoBlock']['default'] = $block->isAutoblocking();
+ if( isset( $fields['DisableEmail'] ) ){
+ $fields['DisableEmail']['default'] = $block->prevents( 'sendemail' );
+ }
+ if( isset( $fields['HideUser'] ) ){
+ $fields['HideUser']['default'] = $block->mHideName;
+ }
+ if( isset( $fields['DisableUTEdit'] ) ){
+ $fields['DisableUTEdit']['default'] = $block->prevents( 'editownusertalk' );
+ }
+ $fields['Reason']['default'] = $block->mReason;
+
+ if( $wgRequest->wasPosted() ){
+ # Ok, so we got a POST submission asking us to reblock a user. So show the
+ # confirm checkbox; the user will only see it if they haven't previously
+ $fields['Confirm']['type'] = 'check';
+ } else {
+ # We got a target, but it wasn't a POST request, so the user must have gone
+ # to a link like [[Special:Block/User]]. We don't need to show the checkbox
+ # as long as they go ahead and block *that* user
+ $fields['Confirm']['default'] = 1;
+ }
+
+ if( $block->mExpiry == 'infinity' ) {
+ $fields['Expiry']['default'] = 'indefinite';
+ } else {
+ $fields['Expiry']['default'] = wfTimestamp( TS_RFC2822, $block->mExpiry );
+ }
+
+ $this->alreadyBlocked = true;
+ $this->preErrors[] = array( 'ipb-needreblock', (string)$block->getTarget() );
+ }
+
+ # We always need confirmation to do HideUser
+ if( $this->requestedHideUser ){
+ $fields['Confirm']['type'] = 'check';
+ unset( $fields['Confirm']['default'] );
+ $this->preErrors[] = 'ipb-confirmhideuser';
+ }
+
+ # Or if the user is trying to block themselves
+ if( (string)$this->target === $wgUser->getName() ){
+ $fields['Confirm']['type'] = 'check';
+ unset( $fields['Confirm']['default'] );
+ $this->preErrors[] = 'ipb-blockingself';
+ }
+ }
+
+ /**
+ * Add header elements like block log entries, etc.
+ * @param $form HTMLForm
+ * @return void
+ */
+ protected function doPreText( HTMLForm &$form ){
+ $form->addPreText( wfMsgExt( 'blockiptext', 'parse' ) );
+
+ $otherBlockMessages = array();
+ if( $this->target !== null ) {
+ # Get other blocks, i.e. from GlobalBlocking or TorBlock extension
+ wfRunHooks( 'OtherBlockLogLink', array( &$otherBlockMessages, $this->target ) );
+
+ if( count( $otherBlockMessages ) ) {
+ $s = Html::rawElement(
+ 'h2',
+ array(),
+ wfMsgExt( 'ipb-otherblocks-header', 'parseinline', count( $otherBlockMessages ) )
+ ) . "\n";
+ $list = '';
+ foreach( $otherBlockMessages as $link ) {
+ $list .= Html::rawElement( 'li', array(), $link ) . "\n";
+ }
+ $s .= Html::rawElement(
+ 'ul',
+ array( 'class' => 'mw-blockip-alreadyblocked' ),
+ $list
+ ) . "\n";
+ $form->addPreText( $s );
+ }
+ }
+ }
+
+ /**
+ * Add header text inside the form, just underneath where the errors would go
+ * @param $form HTMLForm
+ * @return void
+ */
+ protected function doHeaderText( HTMLForm &$form ){
+ global $wgRequest;
+ # Don't need to do anything if the form has been posted
+ if( !$wgRequest->wasPosted() && $this->preErrors ){
+ $s = HTMLForm::formatErrors( $this->preErrors );
+ if( $s ){
+ $form->addHeaderText( Html::rawElement(
+ 'div',
+ array( 'class' => 'error' ),
+ $s
+ ) );
+ }
+ }
+ }
+
+ /**
+ * Add footer elements to the form
+ * @param $form HTMLForm
+ * @return void
+ */
+ protected function doPostText( HTMLForm &$form ){
+ global $wgUser, $wgLang;
+
+ # Link to the user's contributions, if applicable
+ if( $this->target instanceof User ){
+ $contribsPage = SpecialPage::getTitleFor( 'Contributions', $this->target->getName() );
+ $links[] = Linker::link(
+ $contribsPage,
+ wfMsgExt( 'ipb-blocklist-contribs', 'escape', $this->target->getName() )
+ );
+ }
+
+ # Link to unblock the specified user, or to a blank unblock form
+ if( $this->target instanceof User ) {
+ $message = wfMsgExt( 'ipb-unblock-addr', array( 'parseinline' ), $this->target->getName() );
+ $list = SpecialPage::getTitleFor( 'Unblock', $this->target->getName() );
+ } else {
+ $message = wfMsgExt( 'ipb-unblock', array( 'parseinline' ) );
+ $list = SpecialPage::getTitleFor( 'Unblock' );
+ }
+ $links[] = Linker::linkKnown( $list, $message, array() );
+
+ # Link to the block list
+ $links[] = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'BlockList' ),
+ wfMsg( 'ipb-blocklist' )
+ );
+
+ # Link to edit the block dropdown reasons, if applicable
+ if ( $wgUser->isAllowed( 'editinterface' ) ) {
+ $links[] = Linker::link(
+ Title::makeTitle( NS_MEDIAWIKI, 'Ipbreason-dropdown' ),
+ wfMsgHtml( 'ipb-edit-dropdown' ),
+ array(),
+ array( 'action' => 'edit' )
+ );
+ }
+
+ $form->addPostText( Html::rawElement(
+ 'p',
+ array( 'class' => 'mw-ipb-conveniencelinks' ),
+ $wgLang->pipeList( $links )
+ ) );
+
+ if( $this->target instanceof User ){
+ # Get relevant extracts from the block and suppression logs, if possible
+ $userpage = $this->target->getUserPage();
+ $out = '';
+
+ LogEventsList::showLogExtract(
+ $out,
+ 'block',
+ $userpage->getPrefixedText(),
+ '',
+ array(
+ 'lim' => 10,
+ 'msgKey' => array( 'blocklog-showlog', $userpage->getText() ),
+ 'showIfEmpty' => false
+ )
+ );
+ $form->addPostText( $out );
+
+ # Add suppression block entries if allowed
+ if( $wgUser->isAllowed( 'suppressionlog' ) ) {
+ LogEventsList::showLogExtract(
+ $out,
+ 'suppress',
+ $userpage->getPrefixedText(),
+ '',
+ array(
+ 'lim' => 10,
+ 'conds' => array( 'log_action' => array( 'block', 'reblock', 'unblock' ) ),
+ 'msgKey' => array( 'blocklog-showsuppresslog', $userpage->getText() ),
+ 'showIfEmpty' => false
+ )
+ );
+ $form->addPostText( $out );
+ }
+ }
+ }
+
+ /**
+ * Determine the target of the block, and the type of target
+ * TODO: should be in Block.php?
+ * @param $par String subpage parameter passed to setup, or data value from
+ * the HTMLForm
+ * @param $request WebRequest optionally try and get data from a request too
+ * @return void
+ */
+ public static function getTargetAndType( $par, WebRequest $request = null ){
+ $i = 0;
+ $target = null;
+ while( true ){
+ switch( $i++ ){
+ case 0:
+ # The HTMLForm will check wpTarget first and only if it doesn't get
+ # a value use the default, which will be generated from the options
+ # below; so this has to have a higher precedence here than $par, or
+ # we could end up with different values in $this->target and the HTMLForm!
+ if( $request instanceof WebRequest ){
+ $target = $request->getText( 'wpTarget', null );
+ }
+ break;
+ case 1:
+ $target = $par;
+ break;
+ case 2:
+ if( $request instanceof WebRequest ){
+ $target = $request->getText( 'ip', null );
+ }
+ break;
+ case 3:
+ # B/C @since 1.18
+ if( $request instanceof WebRequest ){
+ $target = $request->getText( 'wpBlockAddress', null );
+ }
+ break;
+ case 4:
+ break 2;
+ }
+ list( $target, $type ) = Block::parseTarget( $target );
+ if( $type !== null ){
+ return array( $target, $type );
+ }
+ }
+ return array( null, null );
+ }
+
+ /**
+ * HTMLForm field validation-callback for Target field.
+ * @since 1.18
+ * @param $value String
+ * @param $alldata Array
+ * @return Message
+ */
+ public static function validateTargetField( $value, $alldata = null ) {
+ global $wgBlockCIDRLimit;
+
+ list( $target, $type ) = self::getTargetAndType( $value );
+
+ if( $type == Block::TYPE_USER ){
+ # TODO: why do we not have a User->exists() method?
+ if( !$target->getId() ){
+ return wfMessage( 'nosuchusershort',
+ wfEscapeWikiText( $target->getName() ) );
+ }
+
+ $status = self::checkUnblockSelf( $target );
+ if ( $status !== true ) {
+ return wfMessage( 'badaccess', $status );
+ }
+
+ } elseif( $type == Block::TYPE_RANGE ){
+ list( $ip, $range ) = explode( '/', $target, 2 );
+
+ if( ( IP::isIPv4( $ip ) && $wgBlockCIDRLimit['IPv4'] == 32 )
+ || ( IP::isIPv6( $ip ) && $wgBlockCIDRLimit['IPv6'] == 128 ) )
+ {
+ # Range block effectively disabled
+ return wfMessage( 'range_block_disabled' );
+ }
+
+ if( ( IP::isIPv4( $ip ) && $range > 32 )
+ || ( IP::isIPv6( $ip ) && $range > 128 ) )
+ {
+ # Dodgy range
+ return wfMessage( 'ip_range_invalid' );
+ }
+
+ if( IP::isIPv4( $ip ) && $range < $wgBlockCIDRLimit['IPv4'] ) {
+ return wfMessage( 'ip_range_toolarge', $wgBlockCIDRLimit['IPv4'] );
+ }
+
+ if( IP::isIPv6( $ip ) && $range < $wgBlockCIDRLimit['IPv6'] ) {
+ return wfMessage( 'ip_range_toolarge', $wgBlockCIDRLimit['IPv6'] );
+ }
+
+ } elseif( $type == Block::TYPE_IP ){
+ # All is well
+
+ } else {
+ return wfMessage( 'badipaddress' );
+ }
+
+ return true;
+ }
+
+ /**
+ * Given the form data, actually implement a block
+ * @param $data Array
+ * @return Bool|String
+ */
+ public static function processForm( array $data ){
+ global $wgUser, $wgBlockAllowsUTEdit;
+
+ // Handled by field validator callback
+ // self::validateTargetField( $data['Target'] );
+
+ # This might have been a hidden field or a checkbox, so interesting data
+ # can come from it
+ $data['Confirm'] = !in_array( $data['Confirm'], array( '', '0', null, false ), true );
+
+ list( $target, $type ) = self::getTargetAndType( $data['Target'] );
+ if( $type == Block::TYPE_USER ){
+ $user = $target;
+ $target = $user->getName();
+ $userId = $user->getId();
+
+ # Give admins a heads-up before they go and block themselves. Much messier
+ # to do this for IPs, but it's pretty unlikely they'd ever get the 'block'
+ # permission anyway, although the code does allow for it
+ if( $target === $wgUser->getName() &&
+ ( $data['PreviousTarget'] !== $data['Target'] || !$data['Confirm'] ) )
+ {
+ return array( 'ipb-blockingself' );
+ }
+
+ } elseif( $type == Block::TYPE_RANGE ){
+ $userId = 0;
+
+ } elseif( $type == Block::TYPE_IP ){
+ $target = $target->getName();
+ $userId = 0;
+
+ } else {
+ # This should have been caught in the form field validation
+ return array( 'badipaddress' );
+ }
+
+ if( ( strlen( $data['Expiry'] ) == 0) || ( strlen( $data['Expiry'] ) > 50 )
+ || !self::parseExpiryInput( $data['Expiry'] ) )
+ {
+ return array( 'ipb_expiry_invalid' );
+ }
+
+ if( !isset( $data['DisableEmail'] ) ){
+ $data['DisableEmail'] = false;
+ }
+
+ # If the user has done the form 'properly', they won't even have been given the
+ # option to suppress-block unless they have the 'hideuser' permission
+ if( !isset( $data['HideUser'] ) ){
+ $data['HideUser'] = false;
+ }
+ if( $data['HideUser'] ) {
+ if( !$wgUser->isAllowed('hideuser') ){
+ # this codepath is unreachable except by a malicious user spoofing forms,
+ # or by race conditions (user has oversight and sysop, loads block form,
+ # and is de-oversighted before submission); so need to fail completely
+ # rather than just silently disable hiding
+ return array( 'badaccess-group0' );
+ }
+
+ # Recheck params here...
+ if( $type != Block::TYPE_USER ) {
+ $data['HideUser'] = false; # IP users should not be hidden
+
+ } elseif( !in_array( $data['Expiry'], array( 'infinite', 'infinity', 'indefinite' ) ) ) {
+ # Bad expiry.
+ return array( 'ipb_expiry_temp' );
+
+ } elseif( $user->getEditCount() > self::HIDEUSER_CONTRIBLIMIT ) {
+ # Typically, the user should have a handful of edits.
+ # Disallow hiding users with many edits for performance.
+ return array( 'ipb_hide_invalid' );
+
+ } elseif( !$data['Confirm'] ){
+ return array( 'ipb-confirmhideuser' );
+ }
+ }
+
+ # Create block object.
+ $block = new Block();
+ $block->setTarget( $target );
+ $block->setBlocker( $wgUser );
+ $block->mReason = $data['Reason'][0];
+ $block->mExpiry = self::parseExpiryInput( $data['Expiry'] );
+ $block->prevents( 'createaccount', $data['CreateAccount'] );
+ $block->prevents( 'editownusertalk', ( !$wgBlockAllowsUTEdit || $data['DisableUTEdit'] ) );
+ $block->prevents( 'sendemail', $data['DisableEmail'] );
+ $block->isHardblock( $data['HardBlock'] );
+ $block->isAutoblocking( $data['AutoBlock'] );
+ $block->mHideName = $data['HideUser'];
+
+ if( !wfRunHooks( 'BlockIp', array( &$block, &$wgUser ) ) ) {
+ return array( 'hookaborted' );
+ }
+
+ # Try to insert block. Is there a conflicting block?
+ $status = $block->insert();
+ if( !$status ) {
+ # Show form unless the user is already aware of this...
+ if( !$data['Confirm'] || ( array_key_exists( 'PreviousTarget', $data )
+ && $data['PreviousTarget'] !== $target ) )
+ {
+ return array( array( 'ipb_already_blocked', $block->getTarget() ) );
+ # Otherwise, try to update the block...
+ } else {
+ # This returns direct blocks before autoblocks/rangeblocks, since we should
+ # be sure the user is blocked by now it should work for our purposes
+ $currentBlock = Block::newFromTarget( $target );
+
+ if( $block->equals( $currentBlock ) ) {
+ return array( array( 'ipb_already_blocked', $block->getTarget() ) );
+ }
+
+ # If the name was hidden and the blocking user cannot hide
+ # names, then don't allow any block changes...
+ if( $currentBlock->mHideName && !$wgUser->isAllowed( 'hideuser' ) ) {
+ return array( 'cant-see-hidden-user' );
+ }
+
+ $currentBlock->delete();
+ $status = $block->insert();
+ $logaction = 'reblock';
+
+ # Unset _deleted fields if requested
+ if( $currentBlock->mHideName && !$data['HideUser'] ) {
+ RevisionDeleteUser::unsuppressUserName( $target, $userId );
+ }
+
+ # If hiding/unhiding a name, this should go in the private logs
+ if( (bool)$currentBlock->mHideName ){
+ $data['HideUser'] = true;
+ }
+ }
+ } else {
+ $logaction = 'block';
+ }
+
+ wfRunHooks( 'BlockIpComplete', array( $block, $wgUser ) );
+
+ # Set *_deleted fields if requested
+ if( $data['HideUser'] ) {
+ RevisionDeleteUser::suppressUserName( $target, $userId );
+ }
+
+ # Can't watch a rangeblock
+ if( $type != Block::TYPE_RANGE && $data['Watch'] ) {
+ $wgUser->addWatch( Title::makeTitle( NS_USER, $target ) );
+ }
+
+ # Block constructor sanitizes certain block options on insert
+ $data['BlockEmail'] = $block->prevents( 'sendemail' );
+ $data['AutoBlock'] = $block->isAutoblocking();
+
+ # Prepare log parameters
+ $logParams = array();
+ $logParams[] = $data['Expiry'];
+ $logParams[] = self::blockLogFlags( $data, $type );
+
+ # Make log entry, if the name is hidden, put it in the oversight log
+ $log_type = $data['HideUser'] ? 'suppress' : 'block';
+ $log = new LogPage( $log_type );
+ $log_id = $log->addEntry(
+ $logaction,
+ Title::makeTitle( NS_USER, $target ),
+ $data['Reason'][0],
+ $logParams
+ );
+ # Relate log ID to block IDs (bug 25763)
+ $blockIds = array_merge( array( $status['id'] ), $status['autoIds'] );
+ $log->addRelations( 'ipb_id', $blockIds, $log_id );
+
+ # Report to the user
+ return true;
+ }
+
+ /**
+ * Get an array of suggested block durations from MediaWiki:Ipboptions
+ * @todo FIXME: This uses a rather odd syntax for the options, should it be converted
+ * to the standard "**<duration>|<displayname>" format?
+ * @param $lang Language|null the language to get the durations in, or null to use
+ * the wiki's content language
+ * @return Array
+ */
+ public static function getSuggestedDurations( $lang = null ){
+ $a = array();
+ $msg = $lang === null
+ ? wfMessage( 'ipboptions' )->inContentLanguage()->text()
+ : wfMessage( 'ipboptions' )->inLanguage( $lang )->text();
+
+ if( $msg == '-' ){
+ return array();
+ }
+
+ foreach( explode( ',', $msg ) as $option ) {
+ if( strpos( $option, ':' ) === false ){
+ $option = "$option:$option";
+ }
+ list( $show, $value ) = explode( ':', $option );
+ $a[htmlspecialchars( $show )] = htmlspecialchars( $value );
+ }
+ return $a;
+ }
+
+ /**
+ * Convert a submitted expiry time, which may be relative ("2 weeks", etc) or absolute
+ * ("24 May 2034", etc), into an absolute timestamp we can put into the database.
+ * @param $expiry String: whatever was typed into the form
+ * @return String: timestamp or "infinity" string for the DB implementation
+ */
+ public static function parseExpiryInput( $expiry ) {
+ static $infinity;
+ if( $infinity == null ){
+ $infinity = wfGetDB( DB_SLAVE )->getInfinity();
+ }
+ if ( $expiry == 'infinite' || $expiry == 'indefinite' ) {
+ $expiry = $infinity;
+ } else {
+ $expiry = strtotime( $expiry );
+ if ( $expiry < 0 || $expiry === false ) {
+ return false;
+ }
+ $expiry = wfTimestamp( TS_MW, $expiry );
+ }
+ return $expiry;
+ }
+
+ /**
+ * Can we do an email block?
+ * @param $user User: the sysop wanting to make a block
+ * @return Boolean
+ */
+ public static function canBlockEmail( $user ) {
+ global $wgEnableUserEmail, $wgSysopEmailBans;
+ return ( $wgEnableUserEmail && $wgSysopEmailBans && $user->isAllowed( 'blockemail' ) );
+ }
+
+ /**
+ * bug 15810: blocked admins should not be able to block/unblock
+ * others, and probably shouldn't be able to unblock themselves
+ * either.
+ * @param $user User|Int|String
+ * @return Bool|String true or error message key
+ */
+ public static function checkUnblockSelf( $user ) {
+ global $wgUser;
+ if ( is_int( $user ) ) {
+ $user = User::newFromId( $user );
+ } elseif ( is_string( $user ) ) {
+ $user = User::newFromName( $user );
+ }
+ if( $wgUser->isBlocked() ){
+ if( $user instanceof User && $user->getId() == $wgUser->getId() ) {
+ # User is trying to unblock themselves
+ if ( $wgUser->isAllowed( 'unblockself' ) ) {
+ return true;
+ # User blocked themselves and is now trying to reverse it
+ } elseif ( $wgUser->blockedBy() === $wgUser->getName() ) {
+ return true;
+ } else {
+ return 'ipbnounblockself';
+ }
+ } else {
+ # User is trying to block/unblock someone else
+ return 'ipbblocked';
+ }
+ } else {
+ return true;
+ }
+ }
+
+ /**
+ * Return a comma-delimited list of "flags" to be passed to the log
+ * reader for this block, to provide more information in the logs
+ * @param $data Array from HTMLForm data
+ * @param $type Block::TYPE_ constant
+ * @return array
+ */
+ protected static function blockLogFlags( array $data, $type ) {
+ global $wgBlockAllowsUTEdit;
+ $flags = array();
+
+ # when blocking a user the option 'anononly' is not available/has no effect -> do not write this into log
+ if( !$data['HardBlock'] && $type != Block::TYPE_USER ){
+ $flags[] = 'anononly';
+ }
+
+ if( $data['CreateAccount'] ){
+ $flags[] = 'nocreate';
+ }
+
+ # Same as anononly, this is not displayed when blocking an IP address
+ if( !$data['AutoBlock'] && $type != Block::TYPE_IP ){
+ $flags[] = 'noautoblock';
+ }
+
+ if( $data['DisableEmail'] ){
+ $flags[] = 'noemail';
+ }
+
+ if( $wgBlockAllowsUTEdit && $data['DisableUTEdit'] ){
+ $flags[] = 'nousertalk';
+ }
+
+ if( $data['HideUser'] ){
+ $flags[] = 'hiddenname';
+ }
+
+ return implode( ',', $flags );
+ }
+}
+
+# BC @since 1.18
+class IPBlockForm extends SpecialBlock {}
diff --git a/includes/specials/SpecialBlockList.php b/includes/specials/SpecialBlockList.php
new file mode 100644
index 00000000..ebeb5874
--- /dev/null
+++ b/includes/specials/SpecialBlockList.php
@@ -0,0 +1,437 @@
+<?php
+/**
+ * Implements Special:BlockList
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * A special page that lists existing blocks
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialBlockList extends SpecialPage {
+
+ protected $target, $options;
+
+ function __construct() {
+ parent::__construct( 'BlockList' );
+ }
+
+ /**
+ * Main execution point
+ *
+ * @param $par String title fragment
+ */
+ public function execute( $par ) {
+ global $wgOut, $wgRequest, $wgLang;
+
+ $this->setHeaders();
+ $this->outputHeader();
+ $wgOut->setPageTitle( wfMsg( 'ipblocklist' ) );
+ $wgOut->addModuleStyles( 'mediawiki.special' );
+
+ $par = $wgRequest->getVal( 'ip', $par );
+ $this->target = trim( $wgRequest->getVal( 'wpTarget', $par ) );
+
+ $this->options = $wgRequest->getArray( 'wpOptions', array() );
+
+ $action = $wgRequest->getText( 'action' );
+
+ if( $action == 'unblock' || $action == 'submit' && $wgRequest->wasPosted() ) {
+ # B/C @since 1.18: Unblock interface is now at Special:Unblock
+ $title = SpecialPage::getTitleFor( 'Unblock', $this->target );
+ $wgOut->redirect( $title->getFullUrl() );
+ return;
+ }
+
+ # Just show the block list
+ $fields = array(
+ 'Target' => array(
+ 'type' => 'text',
+ 'label-message' => 'ipadressorusername',
+ 'tabindex' => '1',
+ 'size' => '45',
+ ),
+ 'Options' => array(
+ 'type' => 'multiselect',
+ 'options' => array(
+ wfMsg( 'blocklist-userblocks' ) => 'userblocks',
+ wfMsg( 'blocklist-tempblocks' ) => 'tempblocks',
+ wfMsg( 'blocklist-addressblocks' ) => 'addressblocks',
+ ),
+ 'flatlist' => true,
+ ),
+ 'Limit' => array(
+ 'class' => 'HTMLBlockedUsersItemSelect',
+ 'label-message' => 'table_pager_limit_label',
+ 'options' => array(
+ $wgLang->formatNum( 20 ) => 20,
+ $wgLang->formatNum( 50 ) => 50,
+ $wgLang->formatNum( 100 ) => 100,
+ $wgLang->formatNum( 250 ) => 250,
+ $wgLang->formatNum( 500 ) => 500,
+ ),
+ 'name' => 'limit',
+ 'default' => 50,
+ ),
+ );
+ $form = new HTMLForm( $fields, $this->getContext() );
+ $form->setMethod( 'get' );
+ $form->setWrapperLegend( wfMsg( 'ipblocklist-legend' ) );
+ $form->setSubmitText( wfMsg( 'ipblocklist-submit' ) );
+ $form->prepareForm();
+
+ $form->displayForm( '' );
+ $this->showList();
+ }
+
+ function showList() {
+ global $wgOut, $wgUser;
+
+ # Purge expired entries on one in every 10 queries
+ if ( !mt_rand( 0, 10 ) ) {
+ Block::purgeExpired();
+ }
+
+ $conds = array();
+ # Is the user allowed to see hidden blocks?
+ if ( !$wgUser->isAllowed( 'hideuser' ) ){
+ $conds['ipb_deleted'] = 0;
+ }
+
+ if ( $this->target !== '' ){
+ list( $target, $type ) = Block::parseTarget( $this->target );
+
+ switch( $type ){
+ case Block::TYPE_ID:
+ $conds['ipb_id'] = $target;
+ break;
+
+ case Block::TYPE_IP:
+ case Block::TYPE_RANGE:
+ list( $start, $end ) = IP::parseRange( $target );
+ $dbr = wfGetDB( DB_SLAVE );
+ $conds[] = $dbr->makeList(
+ array(
+ 'ipb_address' => $target,
+ Block::getRangeCond( $start, $end )
+ ),
+ LIST_OR
+ );
+ $conds['ipb_auto'] = 0;
+ break;
+
+ case Block::TYPE_USER:
+ $conds['ipb_address'] = (string)$this->target;
+ $conds['ipb_auto'] = 0;
+ break;
+ }
+ }
+
+ # Apply filters
+ if( in_array( 'userblocks', $this->options ) ) {
+ $conds['ipb_user'] = 0;
+ }
+ if( in_array( 'tempblocks', $this->options ) ) {
+ $conds['ipb_expiry'] = 'infinity';
+ }
+ if( in_array( 'addressblocks', $this->options ) ) {
+ $conds[] = "ipb_user != 0 OR ipb_range_end > ipb_range_start";
+ }
+
+ # Check for other blocks, i.e. global/tor blocks
+ $otherBlockLink = array();
+ wfRunHooks( 'OtherBlockLogLink', array( &$otherBlockLink, $this->target ) );
+
+ # Show additional header for the local block only when other blocks exists.
+ # Not necessary in a standard installation without such extensions enabled
+ if( count( $otherBlockLink ) ) {
+ $wgOut->addHTML(
+ Html::rawElement( 'h2', array(), wfMsg( 'ipblocklist-localblock' ) ) . "\n"
+ );
+ }
+
+ $pager = new BlockListPager( $this, $conds );
+ if ( $pager->getNumRows() ) {
+ $wgOut->addHTML(
+ $pager->getNavigationBar() .
+ $pager->getBody().
+ $pager->getNavigationBar()
+ );
+
+ } elseif ( $this->target ) {
+ $wgOut->addWikiMsg( 'ipblocklist-no-results' );
+
+ } else {
+ $wgOut->addWikiMsg( 'ipblocklist-empty' );
+ }
+
+ if( count( $otherBlockLink ) ) {
+ $wgOut->addHTML(
+ Html::rawElement(
+ 'h2',
+ array(),
+ wfMsgExt(
+ 'ipblocklist-otherblocks',
+ 'parseinline',
+ count( $otherBlockLink )
+ )
+ ) . "\n"
+ );
+ $list = '';
+ foreach( $otherBlockLink as $link ) {
+ $list .= Html::rawElement( 'li', array(), $link ) . "\n";
+ }
+ $wgOut->addHTML( Html::rawElement( 'ul', array( 'class' => 'mw-ipblocklist-otherblocks' ), $list ) . "\n" );
+ }
+ }
+}
+
+class BlockListPager extends TablePager {
+ protected $conds;
+ protected $page;
+
+ function __construct( $page, $conds ) {
+ $this->page = $page;
+ $this->conds = $conds;
+ $this->mDefaultDirection = true;
+ parent::__construct();
+ }
+
+ function getFieldNames() {
+ static $headers = null;
+
+ if ( $headers == array() ) {
+ $headers = array(
+ 'ipb_timestamp' => 'blocklist-timestamp',
+ 'ipb_target' => 'blocklist-target',
+ 'ipb_expiry' => 'blocklist-expiry',
+ 'ipb_by' => 'blocklist-by',
+ 'ipb_params' => 'blocklist-params',
+ 'ipb_reason' => 'blocklist-reason',
+ );
+ $headers = array_map( 'wfMsg', $headers );
+ }
+
+ return $headers;
+ }
+
+ function formatValue( $name, $value ) {
+ global $wgLang, $wgUser;
+
+ static $sk, $msg;
+ if ( empty( $sk ) ) {
+ $sk = $this->getSkin();
+ $msg = array(
+ 'anononlyblock',
+ 'createaccountblock',
+ 'noautoblockblock',
+ 'emailblock',
+ 'blocklist-nousertalk',
+ 'unblocklink',
+ 'change-blocklink',
+ 'infiniteblock',
+ );
+ $msg = array_combine( $msg, array_map( 'wfMessage', $msg ) );
+ }
+
+ $row = $this->mCurrentRow;
+ $formatted = '';
+
+ switch( $name ) {
+ case 'ipb_timestamp':
+ $formatted = $wgLang->timeanddate( $value, /* User preference timezone */ true );
+ break;
+
+ case 'ipb_target':
+ if( $row->ipb_auto ){
+ $formatted = wfMessage( 'autoblockid', $row->ipb_id )->parse();
+ } else {
+ list( $target, $type ) = Block::parseTarget( $row->ipb_address );
+ switch( $type ){
+ case Block::TYPE_USER:
+ case Block::TYPE_IP:
+ $formatted = $sk->userLink( $target->getId(), $target );
+ $formatted .= $sk->userToolLinks(
+ $target->getId(),
+ $target,
+ false,
+ Linker::TOOL_LINKS_NOBLOCK
+ );
+ break;
+ case Block::TYPE_RANGE:
+ $formatted = htmlspecialchars( $target );
+ }
+ }
+ break;
+
+ case 'ipb_expiry':
+ $formatted = $wgLang->formatExpiry( $value, /* User preference timezone */ true );
+ if( $wgUser->isAllowed( 'block' ) ){
+ if( $row->ipb_auto ){
+ $links[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Unblock' ),
+ $msg['unblocklink'],
+ array(),
+ array( 'wpTarget' => "#{$row->ipb_id}" )
+ );
+ } else {
+ $links[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Unblock', $row->ipb_address ),
+ $msg['unblocklink']
+ );
+ $links[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Block', $row->ipb_address ),
+ $msg['change-blocklink']
+ );
+ }
+ $formatted .= ' ' . Html::rawElement(
+ 'span',
+ array( 'class' => 'mw-blocklist-actions' ),
+ wfMsg( 'parentheses', $wgLang->pipeList( $links ) )
+ );
+ }
+ break;
+
+ case 'ipb_by':
+ $user = User::newFromId( $value );
+ if( $user instanceof User ){
+ $formatted = $sk->userLink( $user->getId(), $user->getName() );
+ $formatted .= $sk->userToolLinks( $user->getId(), $user->getName() );
+ }
+ break;
+
+ case 'ipb_reason':
+ $formatted = $sk->commentBlock( $value );
+ break;
+
+ case 'ipb_params':
+ $properties = array();
+ if ( $row->ipb_anon_only ) {
+ $properties[] = $msg['anononlyblock'];
+ }
+ if ( $row->ipb_create_account ) {
+ $properties[] = $msg['createaccountblock'];
+ }
+ if ( $row->ipb_user && !$row->ipb_enable_autoblock ) {
+ $properties[] = $msg['noautoblockblock'];
+ }
+
+ if ( $row->ipb_block_email ) {
+ $properties[] = $msg['emailblock'];
+ }
+
+ if ( !$row->ipb_allow_usertalk ) {
+ $properties[] = $msg['blocklist-nousertalk'];
+ }
+
+ $formatted = $wgLang->commaList( $properties );
+ break;
+
+ default:
+ $formatted = "Unable to format $name";
+ break;
+ }
+
+ return $formatted;
+ }
+
+ function getQueryInfo() {
+ $info = array(
+ 'tables' => array( 'ipblocks' ),
+ 'fields' => array(
+ 'ipb_id',
+ 'ipb_address',
+ 'ipb_user',
+ 'ipb_by',
+ 'ipb_reason',
+ 'ipb_timestamp',
+ 'ipb_auto',
+ 'ipb_anon_only',
+ 'ipb_create_account',
+ 'ipb_enable_autoblock',
+ 'ipb_expiry',
+ 'ipb_range_start',
+ 'ipb_range_end',
+ 'ipb_deleted',
+ 'ipb_block_email',
+ 'ipb_allow_usertalk',
+ ),
+ 'conds' => $this->conds,
+ );
+
+ global $wgUser;
+ # Is the user allowed to see hidden blocks?
+ if ( !$wgUser->isAllowed( 'hideuser' ) ){
+ $conds['ipb_deleted'] = 0;
+ }
+
+ return $info;
+ }
+
+ public function getTableClass(){
+ return 'TablePager mw-blocklist';
+ }
+
+ function getIndexField() {
+ return 'ipb_timestamp';
+ }
+
+ function getDefaultSort() {
+ return 'ipb_timestamp';
+ }
+
+ function isFieldSortable( $name ) {
+ return false;
+ }
+
+ function getTitle() {
+ return $this->page->getTitle();
+ }
+}
+
+/**
+ * Items per page dropdown. Essentially a crap workaround for bug 32603.
+ *
+ * @todo Do not release 1.19 with this.
+ */
+class HTMLBlockedUsersItemSelect extends HTMLSelectField {
+ /**
+ * Basically don't do any validation. If it's a number that's fine. Also,
+ * add it to the list if it's not there already
+ *
+ * @param $value
+ * @param $alldata
+ * @return bool
+ */
+ function validate( $value, $alldata ) {
+ if ( $value == '' ) {
+ return true;
+ }
+
+ if ( !in_array( $value, $this->mParams['options'] ) ) {
+ $this->mParams['options'][ $this->mParent->getLanguage()->formatNum( $value ) ] = intval($value);
+ asort( $this->mParams['options'] );
+ }
+
+ return true;
+ }
+
+}
diff --git a/includes/specials/SpecialBlockip.php b/includes/specials/SpecialBlockip.php
deleted file mode 100644
index 28a0f3f1..00000000
--- a/includes/specials/SpecialBlockip.php
+++ /dev/null
@@ -1,892 +0,0 @@
-<?php
-/**
- * Implements Special:Blockip
- *
- * 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 SpecialPage
- */
-
-/**
- * A special page that allows users with 'block' right to block users from
- * editing pages and other actions
- *
- * @ingroup SpecialPage
- */
-class IPBlockForm extends SpecialPage {
- var $BlockAddress, $BlockExpiry, $BlockReason, $BlockReasonList, $BlockOther, $BlockAnonOnly, $BlockCreateAccount,
- $BlockEnableAutoblock, $BlockEmail, $BlockHideName, $BlockAllowUsertalk, $BlockReblock;
- // The maximum number of edits a user can have and still be hidden
- const HIDEUSER_CONTRIBLIMIT = 1000;
-
- public function __construct() {
- parent::__construct( 'Blockip', 'block' );
- }
-
- public function execute( $par ) {
- global $wgUser, $wgOut, $wgRequest;
-
- # Can't block when the database is locked
- if( wfReadOnly() ) {
- $wgOut->readOnlyPage();
- return;
- }
- # Permission check
- if( !$this->userCanExecute( $wgUser ) ) {
- $wgOut->permissionRequired( 'block' );
- return;
- }
-
- $this->setup( $par );
-
- # bug 15810: blocked admins should have limited access here
- if ( $wgUser->isBlocked() ) {
- $status = IPBlockForm::checkUnblockSelf( $this->BlockAddress );
- if ( $status !== true ) {
- throw new ErrorPageError( 'badaccess', $status );
- }
- }
-
- $action = $wgRequest->getVal( 'action' );
- if( 'success' == $action ) {
- $this->showSuccess();
- } elseif( $wgRequest->wasPosted() && 'submit' == $action &&
- $wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ) ) {
- $this->doSubmit();
- } else {
- $this->showForm( '' );
- }
- }
-
- private function setup( $par ) {
- global $wgRequest, $wgUser, $wgBlockAllowsUTEdit;
-
- $this->BlockAddress = $wgRequest->getVal( 'wpBlockAddress', $wgRequest->getVal( 'ip', $par ) );
- $this->BlockAddress = strtr( $this->BlockAddress, '_', ' ' );
- $this->BlockReason = $wgRequest->getText( 'wpBlockReason' );
- $this->BlockReasonList = $wgRequest->getText( 'wpBlockReasonList' );
- $this->BlockExpiry = $wgRequest->getVal( 'wpBlockExpiry', wfMsg( 'ipbotheroption' ) );
- $this->BlockOther = $wgRequest->getVal( 'wpBlockOther', '' );
-
- # Unchecked checkboxes are not included in the form data at all, so having one
- # that is true by default is a bit tricky
- $byDefault = !$wgRequest->wasPosted();
- $this->BlockAnonOnly = $wgRequest->getBool( 'wpAnonOnly', $byDefault );
- $this->BlockCreateAccount = $wgRequest->getBool( 'wpCreateAccount', $byDefault );
- $this->BlockEnableAutoblock = $wgRequest->getBool( 'wpEnableAutoblock', $byDefault );
- $this->BlockEmail = false;
- if( self::canBlockEmail( $wgUser ) ) {
- $this->BlockEmail = $wgRequest->getBool( 'wpEmailBan', false );
- }
- $this->BlockWatchUser = $wgRequest->getBool( 'wpWatchUser', false ) && $wgUser->isLoggedIn();
- # Re-check user's rights to hide names, very serious, defaults to null
- if( $wgUser->isAllowed( 'hideuser' ) ) {
- $this->BlockHideName = $wgRequest->getBool( 'wpHideName', null );
- } else {
- $this->BlockHideName = false;
- }
- $this->BlockAllowUsertalk = ( $wgRequest->getBool( 'wpAllowUsertalk', $byDefault ) && $wgBlockAllowsUTEdit );
- $this->BlockReblock = $wgRequest->getBool( 'wpChangeBlock', false );
-
- $this->wasPosted = $wgRequest->wasPosted();
- }
-
- public function showForm( $err ) {
- global $wgOut, $wgUser, $wgSysopUserBans;
-
- $wgOut->setPageTitle( wfMsg( 'blockip-title' ) );
- $wgOut->addWikiMsg( 'blockiptext' );
-
- if( $wgSysopUserBans ) {
- $mIpaddress = Xml::label( wfMsg( 'ipadressorusername' ), 'mw-bi-target' );
- } else {
- $mIpaddress = Xml::label( wfMsg( 'ipaddress' ), 'mw-bi-target' );
- }
- $mIpbexpiry = Xml::label( wfMsg( 'ipbexpiry' ), 'wpBlockExpiry' );
- $mIpbother = Xml::label( wfMsg( 'ipbother' ), 'mw-bi-other' );
- $mIpbreasonother = Xml::label( wfMsg( 'ipbreason' ), 'wpBlockReasonList' );
- $mIpbreason = Xml::label( wfMsg( 'ipbotherreason' ), 'mw-bi-reason' );
-
- $titleObj = SpecialPage::getTitleFor( 'Blockip' );
- $user = User::newFromName( $this->BlockAddress );
-
- $alreadyBlocked = false;
- $otherBlockedMsgs = array();
- if( $err && $err[0] != 'ipb_already_blocked' ) {
- $key = array_shift( $err );
- $msg = wfMsgReal( $key, $err );
- $wgOut->setSubtitle( wfMsgHtml( 'formerror' ) );
- $wgOut->addHTML( Xml::tags( 'p', array( 'class' => 'error' ), $msg ) );
- } elseif( $this->BlockAddress !== null ) {
- # Get other blocks, i.e. from GlobalBlocking or TorBlock extension
- wfRunHooks( 'OtherBlockLogLink', array( &$otherBlockedMsgs, $this->BlockAddress ) );
-
- $userId = is_object( $user ) ? $user->getId() : 0;
- $currentBlock = Block::newFromDB( $this->BlockAddress, $userId );
- if( !is_null( $currentBlock ) && !$currentBlock->mAuto && # The block exists and isn't an autoblock
- ( $currentBlock->mRangeStart == $currentBlock->mRangeEnd || # The block isn't a rangeblock
- # or if it is, the range is what we're about to block
- ( $currentBlock->mAddress == $this->BlockAddress ) )
- ) {
- $alreadyBlocked = true;
- # Set the block form settings to the existing block
- if( !$this->wasPosted ) {
- $this->BlockAnonOnly = $currentBlock->mAnonOnly;
- $this->BlockCreateAccount = $currentBlock->mCreateAccount;
- $this->BlockEnableAutoblock = $currentBlock->mEnableAutoblock;
- $this->BlockEmail = $currentBlock->mBlockEmail;
- $this->BlockHideName = $currentBlock->mHideName;
- $this->BlockAllowUsertalk = $currentBlock->mAllowUsertalk;
- if( $currentBlock->mExpiry == 'infinity' ) {
- $this->BlockOther = 'indefinite';
- } else {
- $this->BlockOther = wfTimestamp( TS_ISO_8601, $currentBlock->mExpiry );
- }
- $this->BlockReason = $currentBlock->mReason;
- }
- }
- }
-
- # Show other blocks from extensions, i.e. GlockBlocking and TorBlock
- if( count( $otherBlockedMsgs ) ) {
- $wgOut->addHTML(
- Html::rawElement( 'h2', array(), wfMsgExt( 'ipb-otherblocks-header', 'parseinline', count( $otherBlockedMsgs ) ) ) . "\n"
- );
- $list = '';
- foreach( $otherBlockedMsgs as $link ) {
- $list .= Html::rawElement( 'li', array(), $link ) . "\n";
- }
- $wgOut->addHTML( Html::rawElement( 'ul', array( 'class' => 'mw-blockip-alreadyblocked' ), $list ) . "\n" );
- }
-
- # Username/IP is blocked already locally
- if( $alreadyBlocked ) {
- $wgOut->wrapWikiMsg( "<div class='mw-ipb-needreblock'>\n$1\n</div>", array( 'ipb-needreblock', $this->BlockAddress ) );
- }
-
- $scBlockExpiryOptions = wfMsgForContent( 'ipboptions' );
-
- $showblockoptions = $scBlockExpiryOptions != '-';
- if( !$showblockoptions ) $mIpbother = $mIpbexpiry;
-
- $blockExpiryFormOptions = Xml::option( wfMsg( 'ipbotheroption' ), 'other' );
- foreach( explode( ',', $scBlockExpiryOptions ) as $option ) {
- if( strpos( $option, ':' ) === false ) $option = "$option:$option";
- list( $show, $value ) = explode( ':', $option );
- $show = htmlspecialchars( $show );
- $value = htmlspecialchars( $value );
- $blockExpiryFormOptions .= Xml::option( $show, $value, $this->BlockExpiry === $value ) . "\n";
- }
-
- $reasonDropDown = Xml::listDropDown( 'wpBlockReasonList',
- wfMsgForContent( 'ipbreason-dropdown' ),
- wfMsgForContent( 'ipbreasonotherlist' ), $this->BlockReasonList, 'wpBlockDropDown', 4 );
-
- $wgOut->addModules( 'mediawiki.legacy.block' );
- $wgOut->addHTML(
- Xml::openElement( 'form', array( 'method' => 'post', 'action' => $titleObj->getLocalURL( 'action=submit' ), 'id' => 'blockip' ) ) .
- Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, wfMsg( 'blockip-legend' ) ) .
- Xml::openElement( 'table', array( 'border' => '0', 'id' => 'mw-blockip-table' ) ) .
- "<tr>
- <td class='mw-label'>
- {$mIpaddress}
- </td>
- <td class='mw-input'>" .
- Html::input( 'wpBlockAddress', $this->BlockAddress, 'text', array(
- 'tabindex' => '1',
- 'id' => 'mw-bi-target',
- 'onchange' => 'updateBlockOptions()',
- 'size' => '45',
- 'required' => ''
- ) + ( $this->BlockAddress ? array() : array( 'autofocus' ) ) ). "
- </td>
- </tr>
- <tr>"
- );
- if( $showblockoptions ) {
- $wgOut->addHTML("
- <td class='mw-label'>
- {$mIpbexpiry}
- </td>
- <td class='mw-input'>" .
- Xml::tags( 'select',
- array(
- 'id' => 'wpBlockExpiry',
- 'name' => 'wpBlockExpiry',
- 'onchange' => 'considerChangingExpiryFocus()',
- 'tabindex' => '2' ),
- $blockExpiryFormOptions ) .
- "</td>"
- );
- }
- $wgOut->addHTML("
- </tr>
- <tr id='wpBlockOther'>
- <td class='mw-label'>
- {$mIpbother}
- </td>
- <td class='mw-input'>" .
- Xml::input( 'wpBlockOther', 45, $this->BlockOther,
- array( 'tabindex' => '3', 'id' => 'mw-bi-other' ) ) . "
- </td>
- </tr>
- <tr>
- <td class='mw-label'>
- {$mIpbreasonother}
- </td>
- <td class='mw-input'>
- {$reasonDropDown}
- </td>
- </tr>
- <tr id=\"wpBlockReason\">
- <td class='mw-label'>
- {$mIpbreason}
- </td>
- <td class='mw-input'>" .
- Html::input( 'wpBlockReason', $this->BlockReason, 'text', array(
- 'tabindex' => '5',
- 'id' => 'mw-bi-reason',
- 'maxlength' => '200',
- 'size' => '45'
- ) + ( $this->BlockAddress ? array( 'autofocus' ) : array() ) ) . "
- </td>
- </tr>
- <tr id='wpAnonOnlyRow'>
- <td>&#160;</td>
- <td class='mw-input'>" .
- Xml::checkLabel( wfMsg( 'ipbanononly' ),
- 'wpAnonOnly', 'wpAnonOnly', $this->BlockAnonOnly,
- array( 'tabindex' => '6' ) ) . "
- </td>
- </tr>
- <tr id='wpCreateAccountRow'>
- <td>&#160;</td>
- <td class='mw-input'>" .
- Xml::checkLabel( wfMsg( 'ipbcreateaccount' ),
- 'wpCreateAccount', 'wpCreateAccount', $this->BlockCreateAccount,
- array( 'tabindex' => '7' ) ) . "
- </td>
- </tr>
- <tr id='wpEnableAutoblockRow'>
- <td>&#160;</td>
- <td class='mw-input'>" .
- Xml::checkLabel( wfMsg( 'ipbenableautoblock' ),
- 'wpEnableAutoblock', 'wpEnableAutoblock', $this->BlockEnableAutoblock,
- array( 'tabindex' => '8' ) ) . "
- </td>
- </tr>"
- );
-
- if( self::canBlockEmail( $wgUser ) ) {
- $wgOut->addHTML("
- <tr id='wpEnableEmailBan'>
- <td>&#160;</td>
- <td class='mw-input'>" .
- Xml::checkLabel( wfMsg( 'ipbemailban' ),
- 'wpEmailBan', 'wpEmailBan', $this->BlockEmail,
- array( 'tabindex' => '9' ) ) . "
- </td>
- </tr>"
- );
- }
-
- // Allow some users to hide name from block log, blocklist and listusers
- if( $wgUser->isAllowed( 'hideuser' ) ) {
- $wgOut->addHTML("
- <tr id='wpEnableHideUser'>
- <td>&#160;</td>
- <td class='mw-input'><strong>" .
- Xml::checkLabel( wfMsg( 'ipbhidename' ),
- 'wpHideName', 'wpHideName', $this->BlockHideName,
- array( 'tabindex' => '10' )
- ) . "
- </strong></td>
- </tr>"
- );
- }
-
- # Watchlist their user page? (Only if user is logged in)
- if( $wgUser->isLoggedIn() ) {
- $wgOut->addHTML("
- <tr id='wpEnableWatchUser'>
- <td>&#160;</td>
- <td class='mw-input'>" .
- Xml::checkLabel( wfMsg( 'ipbwatchuser' ),
- 'wpWatchUser', 'wpWatchUser', $this->BlockWatchUser,
- array( 'tabindex' => '11' ) ) . "
- </td>
- </tr>"
- );
- }
-
- # Can we explicitly disallow the use of user_talk?
- global $wgBlockAllowsUTEdit;
- if( $wgBlockAllowsUTEdit ){
- $wgOut->addHTML("
- <tr id='wpAllowUsertalkRow'>
- <td>&#160;</td>
- <td class='mw-input'>" .
- Xml::checkLabel( wfMsg( 'ipballowusertalk' ),
- 'wpAllowUsertalk', 'wpAllowUsertalk', $this->BlockAllowUsertalk,
- array( 'tabindex' => '12' ) ) . "
- </td>
- </tr>"
- );
- }
-
- $wgOut->addHTML("
- <tr>
- <td style='padding-top: 1em'>&#160;</td>
- <td class='mw-submit' style='padding-top: 1em'>" .
- Xml::submitButton( wfMsg( $alreadyBlocked ? 'ipb-change-block' : 'ipbsubmit' ),
- array( 'name' => 'wpBlock', 'tabindex' => '13' )
- + $wgUser->getSkin()->tooltipAndAccessKeyAttribs( 'blockip-block' ) ). "
- </td>
- </tr>" .
- Xml::closeElement( 'table' ) .
- Html::hidden( 'wpEditToken', $wgUser->editToken() ) .
- ( $alreadyBlocked ? Html::hidden( 'wpChangeBlock', 1 ) : "" ) .
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' )
- );
-
- $wgOut->addHTML( $this->getConvenienceLinks() );
-
- if( is_object( $user ) ) {
- $this->showLogFragment( $wgOut, $user->getUserPage() );
- } elseif( preg_match( '/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/', $this->BlockAddress ) ) {
- $this->showLogFragment( $wgOut, Title::makeTitle( NS_USER, $this->BlockAddress ) );
- } elseif( preg_match( '/^\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}/', $this->BlockAddress ) ) {
- $this->showLogFragment( $wgOut, Title::makeTitle( NS_USER, $this->BlockAddress ) );
- }
- }
-
- /**
- * Can we do an email block?
- * @param $user User: the sysop wanting to make a block
- * @return Boolean
- */
- public static function canBlockEmail( $user ) {
- global $wgEnableUserEmail, $wgSysopEmailBans;
- return ( $wgEnableUserEmail && $wgSysopEmailBans && $user->isAllowed( 'blockemail' ) );
- }
-
- /**
- * bug 15810: blocked admins should not be able to block/unblock
- * others, and probably shouldn't be able to unblock themselves
- * either.
- * @param $user User, Int or String
- */
- public static function checkUnblockSelf( $user ) {
- global $wgUser;
- if ( is_int( $user ) ) {
- $user = User::newFromId( $user );
- } elseif ( is_string( $user ) ) {
- $user = User::newFromName( $user );
- }
- if( $user instanceof User && $user->getId() == $wgUser->getId() ) {
- # User is trying to unblock themselves
- if ( $wgUser->isAllowed( 'unblockself' ) ) {
- return true;
- } else {
- return 'ipbnounblockself';
- }
- } else {
- # User is trying to block/unblock someone else
- return 'ipbblocked';
- }
- }
-
- /**
- * Backend block code.
- * $userID and $expiry will be filled accordingly
- * @return array(message key, arguments) on failure, empty array on success
- */
- function doBlock( &$userId = null, &$expiry = null ) {
- global $wgUser, $wgSysopUserBans, $wgSysopRangeBans, $wgBlockAllowsUTEdit, $wgBlockCIDRLimit;
-
- $userId = 0;
- # Expand valid IPv6 addresses, usernames are left as is
- $this->BlockAddress = IP::sanitizeIP( $this->BlockAddress );
- # isIPv4() and IPv6() are used for final validation
- $rxIP4 = '\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}';
- $rxIP6 = '\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}:\w{1,4}';
- $rxIP = "($rxIP4|$rxIP6)";
-
- # Check for invalid specifications
- if( !preg_match( "/^$rxIP$/", $this->BlockAddress ) ) {
- $matches = array();
- if( preg_match( "/^($rxIP4)\\/(\\d{1,2})$/", $this->BlockAddress, $matches ) ) {
- # IPv4
- if( $wgSysopRangeBans && $wgBlockCIDRLimit['IPv4'] != 32 ) {
- if( !IP::isIPv4( $this->BlockAddress ) || $matches[2] > 32 ) {
- return array( 'ip_range_invalid' );
- } elseif ( $matches[2] < $wgBlockCIDRLimit['IPv4'] ) {
- return array( 'ip_range_toolarge', $wgBlockCIDRLimit['IPv4'] );
- }
- $this->BlockAddress = Block::normaliseRange( $this->BlockAddress );
- } else {
- # Range block illegal
- return array( 'range_block_disabled' );
- }
- } elseif( preg_match( "/^($rxIP6)\\/(\\d{1,3})$/", $this->BlockAddress, $matches ) ) {
- # IPv6
- if( $wgSysopRangeBans && $wgBlockCIDRLimit['IPv6'] != 128 ) {
- if( !IP::isIPv6( $this->BlockAddress ) || $matches[2] > 128 ) {
- return array( 'ip_range_invalid' );
- } elseif( $matches[2] < $wgBlockCIDRLimit['IPv6'] ) {
- return array( 'ip_range_toolarge', $wgBlockCIDRLimit['IPv6'] );
- }
- $this->BlockAddress = Block::normaliseRange( $this->BlockAddress );
- } else {
- # Range block illegal
- return array('range_block_disabled');
- }
- } else {
- # Username block
- if( $wgSysopUserBans ) {
- $user = User::newFromName( $this->BlockAddress );
- if( $user instanceof User && $user->getId() ) {
- # Use canonical name
- $userId = $user->getId();
- $this->BlockAddress = $user->getName();
- } else {
- return array( 'nosuchusershort', htmlspecialchars( $user ? $user->getName() : $this->BlockAddress ) );
- }
- } else {
- return array( 'badipaddress' );
- }
- }
- }
-
- if( $wgUser->isBlocked() && ( $wgUser->getId() !== $userId ) ) {
- return array( 'cant-block-while-blocked' );
- }
-
- $reasonstr = $this->BlockReasonList;
- if( $reasonstr != 'other' && $this->BlockReason != '' ) {
- // Entry from drop down menu + additional comment
- $reasonstr .= wfMsgForContent( 'colon-separator' ) . $this->BlockReason;
- } elseif( $reasonstr == 'other' ) {
- $reasonstr = $this->BlockReason;
- }
-
- $expirestr = $this->BlockExpiry;
- if( $expirestr == 'other' )
- $expirestr = $this->BlockOther;
-
- if( ( strlen( $expirestr ) == 0) || ( strlen( $expirestr ) > 50 ) ) {
- return array( 'ipb_expiry_invalid' );
- }
-
- if( false === ( $expiry = Block::parseExpiryInput( $expirestr ) ) ) {
- // Bad expiry.
- return array( 'ipb_expiry_invalid' );
- }
-
- if( $this->BlockHideName ) {
- // Recheck params here...
- if( !$userId || !$wgUser->isAllowed('hideuser') ) {
- $this->BlockHideName = false; // IP users should not be hidden
- } elseif( $expiry !== 'infinity' ) {
- // Bad expiry.
- return array( 'ipb_expiry_temp' );
- } elseif( User::edits( $userId ) > self::HIDEUSER_CONTRIBLIMIT ) {
- // Typically, the user should have a handful of edits.
- // Disallow hiding users with many edits for performance.
- return array( 'ipb_hide_invalid' );
- }
- }
-
- # Create block object
- # Note: for a user block, ipb_address is only for display purposes
- $block = new Block( $this->BlockAddress, $userId, $wgUser->getId(),
- $reasonstr, wfTimestampNow(), 0, $expiry, $this->BlockAnonOnly,
- $this->BlockCreateAccount, $this->BlockEnableAutoblock, $this->BlockHideName,
- $this->BlockEmail,
- isset( $this->BlockAllowUsertalk ) ? $this->BlockAllowUsertalk : $wgBlockAllowsUTEdit
- );
-
- # Should this be privately logged?
- $suppressLog = (bool)$this->BlockHideName;
- if( wfRunHooks( 'BlockIp', array( &$block, &$wgUser ) ) ) {
- # Try to insert block. Is there a conflicting block?
- if( !$block->insert() ) {
- # Show form unless the user is already aware of this...
- if( !$this->BlockReblock ) {
- return array( 'ipb_already_blocked' );
- # Otherwise, try to update the block...
- } else {
- # This returns direct blocks before autoblocks/rangeblocks, since we should
- # be sure the user is blocked by now it should work for our purposes
- $currentBlock = Block::newFromDB( $this->BlockAddress, $userId );
- if( $block->equals( $currentBlock ) ) {
- return array( 'ipb_already_blocked' );
- }
- # If the name was hidden and the blocking user cannot hide
- # names, then don't allow any block changes...
- if( $currentBlock->mHideName && !$wgUser->isAllowed( 'hideuser' ) ) {
- return array( 'cant-see-hidden-user' );
- }
- $currentBlock->delete();
- $block->insert();
- # If hiding/unhiding a name, this should go in the private logs
- $suppressLog = $suppressLog || (bool)$currentBlock->mHideName;
- $log_action = 'reblock';
- # Unset _deleted fields if requested
- if( $currentBlock->mHideName && !$this->BlockHideName ) {
- self::unsuppressUserName( $this->BlockAddress, $userId );
- }
- }
- } else {
- $log_action = 'block';
- }
- wfRunHooks( 'BlockIpComplete', array( $block, $wgUser ) );
-
- # Set *_deleted fields if requested
- if( $this->BlockHideName ) {
- self::suppressUserName( $this->BlockAddress, $userId );
- }
-
- # Only show watch link when this is no range block
- if( $this->BlockWatchUser && $block->mRangeStart == $block->mRangeEnd ) {
- $wgUser->addWatch( Title::makeTitle( NS_USER, $this->BlockAddress ) );
- }
-
- # Block constructor sanitizes certain block options on insert
- $this->BlockEmail = $block->mBlockEmail;
- $this->BlockEnableAutoblock = $block->mEnableAutoblock;
-
- # Prepare log parameters
- $logParams = array();
- $logParams[] = $expirestr;
- $logParams[] = $this->blockLogFlags();
-
- # Make log entry, if the name is hidden, put it in the oversight log
- $log_type = $suppressLog ? 'suppress' : 'block';
- $log = new LogPage( $log_type );
- $log->addEntry( $log_action, Title::makeTitle( NS_USER, $this->BlockAddress ),
- $reasonstr, $logParams );
-
- # Report to the user
- return array();
- } else {
- return array( 'hookaborted' );
- }
- }
-
- public static function suppressUserName( $name, $userId, $dbw = null ) {
- $op = '|'; // bitwise OR
- return self::setUsernameBitfields( $name, $userId, $op, $dbw );
- }
-
- public static function unsuppressUserName( $name, $userId, $dbw = null ) {
- $op = '&'; // bitwise AND
- return self::setUsernameBitfields( $name, $userId, $op, $dbw );
- }
-
- private static function setUsernameBitfields( $name, $userId, $op, $dbw ) {
- if( $op !== '|' && $op !== '&' ) return false; // sanity check
- if( !$dbw )
- $dbw = wfGetDB( DB_MASTER );
- $delUser = Revision::DELETED_USER | Revision::DELETED_RESTRICTED;
- $delAction = LogPage::DELETED_ACTION | Revision::DELETED_RESTRICTED;
- # Normalize user name
- $userTitle = Title::makeTitleSafe( NS_USER, $name );
- $userDbKey = $userTitle->getDBkey();
- # To suppress, we OR the current bitfields with Revision::DELETED_USER
- # to put a 1 in the username *_deleted bit. To unsuppress we AND the
- # current bitfields with the inverse of Revision::DELETED_USER. The
- # username bit is made to 0 (x & 0 = 0), while others are unchanged (x & 1 = x).
- # The same goes for the sysop-restricted *_deleted bit.
- if( $op == '&' ) {
- $delUser = "~{$delUser}";
- $delAction = "~{$delAction}";
- }
- # Hide name from live edits
- $dbw->update( 'revision', array( "rev_deleted = rev_deleted $op $delUser" ),
- array( 'rev_user' => $userId ), __METHOD__ );
- # Hide name from deleted edits
- $dbw->update( 'archive', array( "ar_deleted = ar_deleted $op $delUser" ),
- array( 'ar_user_text' => $name ), __METHOD__ );
- # Hide name from logs
- $dbw->update( 'logging', array( "log_deleted = log_deleted $op $delUser" ),
- array( 'log_user' => $userId, "log_type != 'suppress'" ), __METHOD__ );
- $dbw->update( 'logging', array( "log_deleted = log_deleted $op $delAction" ),
- array( 'log_namespace' => NS_USER, 'log_title' => $userDbKey,
- "log_type != 'suppress'" ), __METHOD__ );
- # Hide name from RC
- $dbw->update( 'recentchanges', array( "rc_deleted = rc_deleted $op $delUser" ),
- array( 'rc_user_text' => $name ), __METHOD__ );
- $dbw->update( 'recentchanges', array( "rc_deleted = rc_deleted $op $delAction" ),
- array( 'rc_namespace' => NS_USER, 'rc_title' => $userDbKey, 'rc_logid > 0' ), __METHOD__ );
- # Hide name from live images
- $dbw->update( 'oldimage', array( "oi_deleted = oi_deleted $op $delUser" ),
- array( 'oi_user_text' => $name ), __METHOD__ );
- # Hide name from deleted images
- # WMF - schema change pending
- # $dbw->update( 'filearchive', array( "fa_deleted = fa_deleted $op $delUser" ),
- # array( 'fa_user_text' => $name ), __METHOD__ );
- # Done!
- return true;
- }
-
- /**
- * UI entry point for blocking
- * Wraps around doBlock()
- */
- public function doSubmit() {
- global $wgOut;
- $retval = $this->doBlock();
- if( empty( $retval ) ) {
- $titleObj = SpecialPage::getTitleFor( 'Blockip' );
- $wgOut->redirect( $titleObj->getFullURL( 'action=success&ip=' .
- urlencode( $this->BlockAddress ) ) );
- return;
- }
- $this->showForm( $retval );
- }
-
- public function showSuccess() {
- global $wgOut;
-
- $wgOut->setPageTitle( wfMsg( 'blockip-title' ) );
- $wgOut->setSubtitle( wfMsg( 'blockipsuccesssub' ) );
- $text = wfMsgExt( 'blockipsuccesstext', array( 'parse' ), $this->BlockAddress );
- $wgOut->addHTML( $text );
- }
-
- private function showLogFragment( $out, $title ) {
- global $wgUser;
-
- // Used to support GENDER in 'blocklog-showlog' and 'blocklog-showsuppresslog'
- $userBlocked = $title->getText();
-
- LogEventsList::showLogExtract(
- $out,
- 'block',
- $title->getPrefixedText(),
- '',
- array(
- 'lim' => 10,
- 'msgKey' => array(
- 'blocklog-showlog',
- $userBlocked
- ),
- 'showIfEmpty' => false
- )
- );
-
- // Add suppression block entries if allowed
- if( $wgUser->isAllowed( 'suppressionlog' ) ) {
- LogEventsList::showLogExtract( $out, 'suppress', $title->getPrefixedText(), '',
- array(
- 'lim' => 10,
- 'conds' => array(
- 'log_action' => array(
- 'block',
- 'reblock',
- 'unblock'
- )
- ),
- 'msgKey' => array(
- 'blocklog-showsuppresslog',
- $userBlocked
- ),
- 'showIfEmpty' => false
- )
- );
- }
- }
-
- /**
- * Return a comma-delimited list of "flags" to be passed to the log
- * reader for this block, to provide more information in the logs
- *
- * @return array
- */
- private function blockLogFlags() {
- global $wgBlockAllowsUTEdit;
- $flags = array();
- if( $this->BlockAnonOnly && IP::isIPAddress( $this->BlockAddress ) )
- // when blocking a user the option 'anononly' is not available/has no effect -> do not write this into log
- $flags[] = 'anononly';
- if( $this->BlockCreateAccount )
- $flags[] = 'nocreate';
- if( !$this->BlockEnableAutoblock && !IP::isIPAddress( $this->BlockAddress ) )
- // Same as anononly, this is not displayed when blocking an IP address
- $flags[] = 'noautoblock';
- if( $this->BlockEmail )
- $flags[] = 'noemail';
- if( !$this->BlockAllowUsertalk && $wgBlockAllowsUTEdit )
- $flags[] = 'nousertalk';
- if( $this->BlockHideName )
- $flags[] = 'hiddenname';
- return implode( ',', $flags );
- }
-
- /**
- * Builds unblock and block list links
- *
- * @return string
- */
- private function getConvenienceLinks() {
- global $wgUser, $wgLang;
- $skin = $wgUser->getSkin();
- if( $this->BlockAddress )
- $links[] = $this->getContribsLink( $skin );
- $links[] = $this->getUnblockLink( $skin );
- $links[] = $this->getBlockListLink( $skin );
- if ( $wgUser->isAllowed( 'editinterface' ) ) {
- $title = Title::makeTitle( NS_MEDIAWIKI, 'Ipbreason-dropdown' );
- $links[] = $skin->link(
- $title,
- wfMsgHtml( 'ipb-edit-dropdown' ),
- array(),
- array( 'action' => 'edit' )
- );
- }
- return '<p class="mw-ipb-conveniencelinks">' . $wgLang->pipeList( $links ) . '</p>';
- }
-
- /**
- * Build a convenient link to a user or IP's contribs
- * form
- *
- * @param $skin Skin to use
- * @return string
- */
- private function getContribsLink( $skin ) {
- $contribsPage = SpecialPage::getTitleFor( 'Contributions', $this->BlockAddress );
- return $skin->link( $contribsPage, wfMsgExt( 'ipb-blocklist-contribs', 'escape', $this->BlockAddress ) );
- }
-
- /**
- * Build a convenient link to unblock the given username or IP
- * address, if available; otherwise link to a blank unblock
- * form
- *
- * @param $skin Skin to use
- * @return string
- */
- private function getUnblockLink( $skin ) {
- $list = SpecialPage::getTitleFor( 'Ipblocklist' );
- $query = array( 'action' => 'unblock' );
-
- if( $this->BlockAddress ) {
- $addr = strtr( $this->BlockAddress, '_', ' ' );
- $message = wfMsg( 'ipb-unblock-addr', $addr );
- $query['ip'] = $this->BlockAddress;
- } else {
- $message = wfMsg( 'ipb-unblock' );
- }
- return $skin->linkKnown(
- $list,
- htmlspecialchars( $message ),
- array(),
- $query
- );
- }
-
- /**
- * Build a convenience link to the block list
- *
- * @param $skin Skin to use
- * @return string
- */
- private function getBlockListLink( $skin ) {
- return $skin->linkKnown(
- SpecialPage::getTitleFor( 'Ipblocklist' ),
- wfMsg( 'ipb-blocklist' )
- );
- }
-
- /**
- * Block a list of selected users
- *
- * @param $users Array
- * @param $reason String
- * @param $tag String: replaces user pages
- * @param $talkTag String: replaces user talk pages
- * @return Array: list of html-safe usernames
- */
- public static function doMassUserBlock( $users, $reason = '', $tag = '', $talkTag = '' ) {
- global $wgUser;
- $counter = $blockSize = 0;
- $safeUsers = array();
- $log = new LogPage( 'block' );
- foreach( $users as $name ) {
- # Enforce limits
- $counter++;
- $blockSize++;
- # Lets not go *too* fast
- if( $blockSize >= 20 ) {
- $blockSize = 0;
- wfWaitForSlaves( 5 );
- }
- $u = User::newFromName( $name, false );
- // If user doesn't exist, it ought to be an IP then
- if( is_null( $u ) || ( !$u->getId() && !IP::isIPAddress( $u->getName() ) ) ) {
- continue;
- }
- $userTitle = $u->getUserPage();
- $userTalkTitle = $u->getTalkPage();
- $userpage = new Article( $userTitle );
- $usertalk = new Article( $userTalkTitle );
- $safeUsers[] = '[[' . $userTitle->getPrefixedText() . '|' . $userTitle->getText() . ']]';
- $expirestr = $u->getId() ? 'indefinite' : '1 week';
- $expiry = Block::parseExpiryInput( $expirestr );
- $anonOnly = IP::isIPAddress( $u->getName() ) ? 1 : 0;
- // Create the block
- $block = new Block( $u->getName(), // victim
- $u->getId(), // uid
- $wgUser->getId(), // blocker
- $reason, // comment
- wfTimestampNow(), // block time
- 0, // auto ?
- $expiry, // duration
- $anonOnly, // anononly?
- 1, // block account creation?
- 1, // autoblocking?
- 0, // suppress name?
- 0 // block from sending email?
- );
- $oldblock = Block::newFromDB( $u->getName(), $u->getId() );
- if( !$oldblock ) {
- $block->insert();
- # Prepare log parameters
- $logParams = array();
- $logParams[] = $expirestr;
- if( $anonOnly ) {
- $logParams[] = 'anononly';
- }
- $logParams[] = 'nocreate';
- # Add log entry
- $log->addEntry( 'block', $userTitle, $reason, $logParams );
- }
- # Tag userpage! (check length to avoid mistakes)
- if( strlen( $tag ) > 2 ) {
- $userpage->doEdit( $tag, $reason, EDIT_MINOR );
- }
- if( strlen( $talkTag ) > 2 ) {
- $usertalk->doEdit( $talkTag, $reason, EDIT_MINOR );
- }
- }
- return $safeUsers;
- }
-}
diff --git a/includes/specials/SpecialBlockme.php b/includes/specials/SpecialBlockme.php
index f5131f5f..40747667 100644
--- a/includes/specials/SpecialBlockme.php
+++ b/includes/specials/SpecialBlockme.php
@@ -48,10 +48,12 @@ class SpecialBlockme extends UnlistedSpecialPage {
if ( !$user->isLoggedIn() ) {
$user->addToDatabase();
}
- $id = $user->getId();
- $reason = wfMsg( 'proxyblockreason' );
- $block = new Block( $ip, 0, $id, $reason, wfTimestampNow() );
+ $block = new Block();
+ $block->setTarget( $ip );
+ $block->setBlocker( $user );
+ $block->mReason = wfMsg( 'proxyblockreason' );
+
$block->insert();
$wgOut->addWikiMsg( 'proxyblocksuccess' );
diff --git a/includes/specials/SpecialBooksources.php b/includes/specials/SpecialBooksources.php
index 67fb5404..20819329 100644
--- a/includes/specials/SpecialBooksources.php
+++ b/includes/specials/SpecialBooksources.php
@@ -49,14 +49,13 @@ class SpecialBookSources extends SpecialPage {
* @param $isbn ISBN passed as a subpage parameter
*/
public function execute( $isbn ) {
- global $wgOut, $wgRequest;
$this->setHeaders();
- $this->isbn = self::cleanIsbn( $isbn ? $isbn : $wgRequest->getText( 'isbn' ) );
- $wgOut->addWikiMsg( 'booksources-summary' );
- $wgOut->addHTML( $this->makeForm() );
+ $this->outputHeader();
+ $this->isbn = self::cleanIsbn( $isbn ? $isbn : $this->getRequest()->getText( 'isbn' ) );
+ $this->getOutput()->addHTML( $this->makeForm() );
if( strlen( $this->isbn ) > 0 ) {
if( !self::isValidISBN( $this->isbn ) ) {
- $wgOut->wrapWikiMsg( "<div class=\"error\">\n$1\n</div>", 'booksources-invalid-isbn' );
+ $this->getOutput()->wrapWikiMsg( "<div class=\"error\">\n$1\n</div>", 'booksources-invalid-isbn' );
}
$this->showList();
}
@@ -72,26 +71,26 @@ class SpecialBookSources extends SpecialPage {
if( strlen( $isbn ) == 13 ) {
for( $i = 0; $i < 12; $i++ ) {
if($i % 2 == 0) {
- $sum += $isbn{$i};
+ $sum += $isbn[$i];
} else {
- $sum += 3 * $isbn{$i};
+ $sum += 3 * $isbn[$i];
}
}
-
+
$check = (10 - ($sum % 10)) % 10;
- if ($check == $isbn{12}) {
+ if ($check == $isbn[12]) {
return true;
}
} elseif( strlen( $isbn ) == 10 ) {
for($i = 0; $i < 9; $i++) {
- $sum += $isbn{$i} * ($i + 1);
+ $sum += $isbn[$i] * ($i + 1);
}
-
+
$check = $sum % 11;
if($check == 10) {
$check = "X";
}
- if($check == $isbn{9}) {
+ if($check == $isbn[9]) {
return true;
}
}
@@ -115,10 +114,10 @@ class SpecialBookSources extends SpecialPage {
*/
private function makeForm() {
global $wgScript;
- $title = self::getTitleFor( 'Booksources' );
+
$form = '<fieldset><legend>' . wfMsgHtml( 'booksources-search-legend' ) . '</legend>';
$form .= Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) );
- $form .= Html::hidden( 'title', $title->getPrefixedText() );
+ $form .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() );
$form .= '<p>' . Xml::inputLabel( wfMsg( 'booksources-isbn' ), 'isbn', 'isbn', 20, $this->isbn );
$form .= '&#160;' . Xml::submitButton( wfMsg( 'booksources-go' ) ) . '</p>';
$form .= Xml::closeElement( 'form' );
@@ -133,27 +132,27 @@ class SpecialBookSources extends SpecialPage {
* @return string
*/
private function showList() {
- global $wgOut, $wgContLang;
+ global $wgContLang;
# Hook to allow extensions to insert additional HTML,
# e.g. for API-interacting plugins and so on
- wfRunHooks( 'BookInformation', array( $this->isbn, &$wgOut ) );
+ wfRunHooks( 'BookInformation', array( $this->isbn, $this->getOutput() ) );
# Check for a local page such as Project:Book_sources and use that if available
$title = Title::makeTitleSafe( NS_PROJECT, wfMsgForContent( 'booksources' ) ); # Show list in content language
if( is_object( $title ) && $title->exists() ) {
$rev = Revision::newFromTitle( $title );
- $wgOut->addWikiText( str_replace( 'MAGICNUMBER', $this->isbn, $rev->getText() ) );
+ $this->getOutput()->addWikiText( str_replace( 'MAGICNUMBER', $this->isbn, $rev->getText() ) );
return true;
}
# Fall back to the defaults given in the language file
- $wgOut->addWikiMsg( 'booksources-text' );
- $wgOut->addHTML( '<ul>' );
+ $this->getOutput()->addWikiMsg( 'booksources-text' );
+ $this->getOutput()->addHTML( '<ul>' );
$items = $wgContLang->getBookstoreList();
foreach( $items as $label => $url )
- $wgOut->addHTML( $this->makeListItem( $label, $url ) );
- $wgOut->addHTML( '</ul>' );
+ $this->getOutput()->addHTML( $this->makeListItem( $label, $url ) );
+ $this->getOutput()->addHTML( '</ul>' );
return true;
}
diff --git a/includes/specials/SpecialBrokenRedirects.php b/includes/specials/SpecialBrokenRedirects.php
index 98b02126..2330c896 100644
--- a/includes/specials/SpecialBrokenRedirects.php
+++ b/includes/specials/SpecialBrokenRedirects.php
@@ -28,42 +28,56 @@
* @ingroup SpecialPage
*/
class BrokenRedirectsPage extends PageQueryPage {
- var $targets = array();
- function getName() {
- return 'BrokenRedirects';
+ function __construct( $name = 'BrokenRedirects' ) {
+ parent::__construct( $name );
}
- function isExpensive( ) { return true; }
+ function isExpensive() { return true; }
function isSyndicated() { return false; }
+ function sortDescending() { return false; }
- function getPageHeader( ) {
+ function getPageHeader() {
return wfMsgExt( 'brokenredirectstext', array( 'parse' ) );
}
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $page, $redirect ) = $dbr->tableNamesN( 'page', 'redirect' );
-
- $sql = "SELECT 'BrokenRedirects' AS type,
- p1.page_namespace AS namespace,
- p1.page_title AS title,
- rd_namespace,
- rd_title
- FROM $redirect AS rd
- JOIN $page p1 ON (rd.rd_from=p1.page_id)
- LEFT JOIN $page AS p2 ON (rd_namespace=p2.page_namespace AND rd_title=p2.page_title )
- WHERE rd_namespace >= 0
- AND p2.page_namespace IS NULL";
- return $sql;
+ function getQueryInfo() {
+ return array(
+ 'tables' => array( 'redirect', 'p1' => 'page',
+ 'p2' => 'page' ),
+ 'fields' => array( 'p1.page_namespace AS namespace',
+ 'p1.page_title AS title',
+ 'rd_namespace',
+ 'rd_title'
+ ),
+ 'conds' => array( 'rd_namespace >= 0',
+ 'p2.page_namespace IS NULL'
+ ),
+ 'join_conds' => array( 'p1' => array( 'JOIN', array(
+ 'rd_from=p1.page_id',
+ ) ),
+ 'p2' => array( 'LEFT JOIN', array(
+ 'rd_namespace=p2.page_namespace',
+ 'rd_title=p2.page_title'
+ ) )
+ )
+ );
}
- function getOrder() {
- return '';
+ /**
+ * @return array
+ */
+ function getOrderFields() {
+ return array ( 'rd_namespace', 'rd_title', 'rd_from' );
}
+ /**
+ * @param $skin Skin
+ * @param $result
+ * @return String
+ */
function formatResult( $skin, $result ) {
- global $wgUser, $wgContLang, $wgLang;
+ global $wgUser, $wgLang;
$fromObj = Title::makeTitle( $result->namespace, $result->title );
if ( isset( $result->rd_title ) ) {
@@ -95,14 +109,14 @@ class BrokenRedirectsPage extends PageQueryPage {
array(),
array( 'action' => 'edit' )
);
- $to = $skin->link(
+ $to = $skin->link(
$toObj,
null,
array(),
array(),
array( 'broken' )
);
- $arr = $wgContLang->getArrow();
+ $arr = $wgLang->getArrow();
$out = $from . wfMsg( 'word-separator' );
@@ -120,14 +134,3 @@ class BrokenRedirectsPage extends PageQueryPage {
return $out;
}
}
-
-/**
- * constructor
- */
-function wfSpecialBrokenRedirects() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $sbr = new BrokenRedirectsPage();
-
- return $sbr->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialCategories.php b/includes/specials/SpecialCategories.php
index c2dd40cd..91d98b86 100644
--- a/includes/specials/SpecialCategories.php
+++ b/includes/specials/SpecialCategories.php
@@ -69,16 +69,20 @@ class CategoryPager extends AlphabeticPager {
$this->mOffset = $from;
}
}
-
+
function getQueryInfo() {
return array(
'tables' => array( 'category' ),
'fields' => array( 'cat_title','cat_pages' ),
- 'conds' => array( 'cat_pages > 0' ),
+ 'conds' => array( 'cat_pages > 0' ),
'options' => array( 'USE INDEX' => 'cat_title' ),
);
}
+ function getTitle() {
+ return SpecialPage::getTitleFor( 'Categories' );
+ }
+
function getIndexField() {
# return array( 'abc' => 'cat_title', 'count' => 'cat_pages' );
return 'cat_title';
@@ -116,19 +120,18 @@ class CategoryPager extends AlphabeticPager {
function formatRow($result) {
global $wgLang;
$title = Title::makeTitle( NS_CATEGORY, $result->cat_title );
- $titleText = $this->getSkin()->link( $title, htmlspecialchars( $title->getText() ) );
+ $titleText = Linker::link( $title, htmlspecialchars( $title->getText() ) );
$count = wfMsgExt( 'nmembers', array( 'parsemag', 'escape' ),
$wgLang->formatNum( $result->cat_pages ) );
- return Xml::tags('li', null, "$titleText ($count)" ) . "\n";
+ return Xml::tags('li', null, wfSpecialList( $titleText, $count ) ) . "\n";
}
-
+
public function getStartForm( $from ) {
global $wgScript;
- $t = SpecialPage::getTitleFor( 'Categories' );
-
+
return
Xml::tags( 'form', array( 'method' => 'get', 'action' => $wgScript ),
- Html::hidden( 'title', $t->getPrefixedText() ) .
+ Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
Xml::fieldset( wfMsg( 'categories' ),
Xml::inputLabel( wfMsg( 'categoriesfrom' ),
'from', 'from', 20, $from ) .
diff --git a/includes/specials/SpecialResetpass.php b/includes/specials/SpecialChangePassword.php
index 0af6fbf0..46562b36 100644
--- a/includes/specials/SpecialResetpass.php
+++ b/includes/specials/SpecialChangePassword.php
@@ -1,6 +1,6 @@
<?php
/**
- * Implements Special:Resetpass
+ * Implements Special:ChangePassword
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
@@ -26,9 +26,9 @@
*
* @ingroup SpecialPage
*/
-class SpecialResetpass extends SpecialPage {
+class SpecialChangePassword extends SpecialPage {
public function __construct() {
- parent::__construct( 'Resetpass' );
+ parent::__construct( 'ChangePassword' );
}
/**
@@ -46,16 +46,12 @@ class SpecialResetpass extends SpecialPage {
$this->mOldpass = $wgRequest->getVal( 'wpPassword' );
$this->mNewpass = $wgRequest->getVal( 'wpNewPassword' );
$this->mRetype = $wgRequest->getVal( 'wpRetype' );
-
+ $this->mDomain = $wgRequest->getVal( 'wpDomain' );
+
$this->setHeaders();
$this->outputHeader();
$wgOut->disallowUserJs();
- if( !$wgAuth->allowPasswordChange() ) {
- $this->error( wfMsg( 'resetpass_forbidden' ) );
- return;
- }
-
if( !$wgRequest->wasPosted() && !$wgUser->isLoggedIn() ) {
$this->error( wfMsg( 'resetpass-no-info' ) );
return;
@@ -66,22 +62,35 @@ class SpecialResetpass extends SpecialPage {
return;
}
- if( $wgRequest->wasPosted() && $wgUser->matchEditToken( $wgRequest->getVal('token') ) ) {
+ if( $wgRequest->wasPosted() && $wgUser->matchEditToken( $wgRequest->getVal( 'token' ) ) ) {
try {
+ if ( isset( $_SESSION['wsDomain'] ) ) {
+ $this->mDomain = $_SESSION['wsDomain'];
+ }
+ $wgAuth->setDomain( $this->mDomain );
+ if( !$wgAuth->allowPasswordChange() ) {
+ $this->error( wfMsg( 'resetpass_forbidden' ) );
+ return;
+ }
+
$this->attemptReset( $this->mNewpass, $this->mRetype );
$wgOut->addWikiMsg( 'resetpass_success' );
if( !$wgUser->isLoggedIn() ) {
+ LoginForm::setLoginToken();
+ $token = LoginForm::getLoginToken();
$data = array(
- 'action' => 'submitlogin',
- 'wpName' => $this->mUserName,
- 'wpPassword' => $this->mNewpass,
- 'returnto' => $wgRequest->getVal( 'returnto' ),
+ 'action' => 'submitlogin',
+ 'wpName' => $this->mUserName,
+ 'wpDomain' => $this->mDomain,
+ 'wpLoginToken' => $token,
+ 'wpPassword' => $this->mNewpass,
+ 'returnto' => $wgRequest->getVal( 'returnto' ),
);
if( $wgRequest->getCheck( 'wpRemember' ) ) {
$data['wpRemember'] = 1;
}
$login = new LoginForm( new FauxRequest( $data, true ) );
- $login->execute();
+ $login->execute( null );
}
$this->doReturnTo();
} catch( PasswordError $e ) {
@@ -90,7 +99,7 @@ class SpecialResetpass extends SpecialPage {
}
$this->showForm();
}
-
+
function doReturnTo() {
global $wgRequest, $wgOut;
$titleObj = Title::newFromText( $wgRequest->getVal( 'returnto' ) );
@@ -118,7 +127,7 @@ class SpecialResetpass extends SpecialPage {
$rememberMe = '<tr>' .
'<td></td>' .
'<td class="mw-input">' .
- Xml::checkLabel(
+ Xml::checkLabel(
wfMsgExt( 'remembermypassword', 'parsemag', $wgLang->formatNum( ceil( $wgCookieExpiration / ( 3600 * 24 ) ) ) ),
'wpRemember', 'wpRemember',
$wgRequest->getCheck( 'wpRemember' ) ) .
@@ -139,6 +148,7 @@ class SpecialResetpass extends SpecialPage {
'id' => 'mw-resetpass-form' ) ) . "\n" .
Html::hidden( 'token', $wgUser->editToken() ) . "\n" .
Html::hidden( 'wpName', $this->mUserName ) . "\n" .
+ Html::hidden( 'wpDomain', $this->mDomain ) . "\n" .
Html::hidden( 'returnto', $wgRequest->getVal( 'returnto' ) ) . "\n" .
wfMsgExt( 'resetpass_text', array( 'parse' ) ) . "\n" .
Xml::openElement( 'table', array( 'id' => 'mw-resetpass-table' ) ) . "\n" .
@@ -183,7 +193,7 @@ class SpecialResetpass extends SpecialPage {
$out .= "\t<td class='mw-label'>";
if ( $type != 'text' )
$out .= Xml::label( wfMsg( $label ), $name );
- else
+ else
$out .= wfMsgHtml( $label );
$out .= "</td>\n";
$out .= "\t<td class='mw-input'>";
@@ -200,19 +210,29 @@ class SpecialResetpass extends SpecialPage {
protected function attemptReset( $newpass, $retype ) {
$user = User::newFromName( $this->mUserName );
if( !$user || $user->isAnon() ) {
- throw new PasswordError( 'no such user' );
+ throw new PasswordError( wfMsg( 'nosuchusershort', $this->mUserName ) );
}
-
+
if( $newpass !== $retype ) {
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'badretype' ) );
throw new PasswordError( wfMsg( 'badretype' ) );
}
+ $throttleCount = LoginForm::incLoginThrottle( $this->mUserName );
+ if ( $throttleCount === true ) {
+ throw new PasswordError( wfMsg( 'login-throttled' ) );
+ }
+
if( !$user->checkTemporaryPassword($this->mOldpass) && !$user->checkPassword($this->mOldpass) ) {
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'wrongpassword' ) );
throw new PasswordError( wfMsg( 'resetpass-wrong-oldpass' ) );
}
-
+
+ // Please reset throttle for successful logins, thanks!
+ if ( $throttleCount ) {
+ LoginForm::clearLoginThrottle( $this->mUserName );
+ }
+
try {
$user->setPassword( $this->mNewpass );
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'success' ) );
@@ -221,7 +241,7 @@ class SpecialResetpass extends SpecialPage {
wfRunHooks( 'PrefsPasswordAudit', array( $user, $newpass, 'error' ) );
throw new PasswordError( $e->getMessage() );
}
-
+
$user->setCookies();
$user->saveSettings();
}
diff --git a/includes/specials/SpecialComparePages.php b/includes/specials/SpecialComparePages.php
index 4650fc94..6b9ef0a9 100644
--- a/includes/specials/SpecialComparePages.php
+++ b/includes/specials/SpecialComparePages.php
@@ -40,47 +40,6 @@ class SpecialComparePages extends SpecialPage {
parent::__construct( 'ComparePages' );
}
- protected function setup( $par ) {
- global $wgRequest, $wgUser;
-
- // Options
- $opts = new FormOptions();
- $this->opts = $opts; // bind
- $opts->add( 'page1', '' );
- $opts->add( 'page2', '' );
- $opts->add( 'rev1', '' );
- $opts->add( 'rev2', '' );
- $opts->add( 'action', '' );
-
- // Set values
- $opts->fetchValuesFromRequest( $wgRequest );
-
- $title1 = Title::newFromText( $opts->getValue( 'page1' ) );
- $title2 = Title::newFromText( $opts->getValue( 'page2' ) );
-
- if( $title1 && $title1->exists() && $opts->getValue( 'rev1' ) == '' ) {
- $pda = new Article( $title1 );
- $pdi = $pda->getID();
- $pdLastRevision = Revision::loadFromPageId( wfGetDB( DB_SLAVE ), $pdi );
- $opts->setValue( 'rev1', $pdLastRevision->getId() );
- } elseif ( $opts->getValue( 'rev1' ) != '' ) {
- $pdrev = Revision::newFromId( $opts->getValue( 'rev1' ) );
- if( $pdrev ) $opts->setValue( 'page1', $pdrev->getTitle()->getPrefixedText() );
- }
- if( $title2 && $title2->exists() && $opts->getValue( 'rev2' ) == '' ) {
- $pda = new Article( $title2 );
- $pdi = $pda->getID();
- $pdLastRevision = Revision::loadFromPageId( wfGetDB( DB_SLAVE ), $pdi );
- $opts->setValue('rev2', $pdLastRevision->getId() );
- } elseif ( $opts->getValue( 'rev2' ) != '' ) {
- $pdrev = Revision::newFromId( $opts->getValue( 'rev2' ) );
- if( $pdrev ) $opts->setValue( 'page2', $pdrev->getTitle()->getPrefixedText() );
- }
-
- // Store some objects
- $this->skin = $wgUser->getSkin();
- }
-
/**
* Show a form for filtering namespace and username
*
@@ -91,80 +50,79 @@ class SpecialComparePages extends SpecialPage {
$this->setHeaders();
$this->outputHeader();
- $this->setup( $par );
+ $form = new HTMLForm( array(
+ 'Page1' => array(
+ 'type' => 'text',
+ 'name' => 'page1',
+ 'label-message' => 'compare-page1',
+ 'size' => '40',
+ 'section' => 'page1',
+ ),
+ 'Revision1' => array(
+ 'type' => 'int',
+ 'name' => 'rev1',
+ 'label-message' => 'compare-rev1',
+ 'size' => '8',
+ 'section' => 'page1',
+ ),
+ 'Page2' => array(
+ 'type' => 'text',
+ 'name' => 'page2',
+ 'label-message' => 'compare-page2',
+ 'size' => '40',
+ 'section' => 'page2',
+ ),
+ 'Revision2' => array(
+ 'type' => 'int',
+ 'name' => 'rev2',
+ 'label-message' => 'compare-rev2',
+ 'size' => '8',
+ 'section' => 'page2',
+ ),
+ 'Action' => array(
+ 'type' => 'hidden',
+ 'name' => 'action',
+ ),
+ 'Diffonly' => array(
+ 'type' => 'hidden',
+ 'name' => 'diffonly',
+ ),
+ ), 'compare' );
+ $form->setSubmitText( wfMsg( 'compare-submit' ) );
+ $form->suppressReset();
+ $form->setMethod( 'get' );
+ $form->setTitle( $this->getTitle() );
+
+ $form->loadData();
+ $form->displayForm( '' );
+
+ self::showDiff( $form->mFieldData );
+ }
- // Settings
- $this->form();
+ public static function showDiff( $data ){
+ $rev1 = self::revOrTitle( $data['Revision1'], $data['Page1'] );
+ $rev2 = self::revOrTitle( $data['Revision2'], $data['Page2'] );
- if( $this->opts->getValue( 'rev1' ) && $this->opts->getValue( 'rev2' ) ) {
+ if( $rev1 && $rev2 ) {
$de = new DifferenceEngine( null,
- $this->opts->getValue( 'rev1' ),
- $this->opts->getValue( 'rev2' ),
+ $rev1,
+ $rev2,
null, // rcid
- ( $this->opts->getValue( 'action' ) == 'purge' ),
+ ( $data["Action"] == 'purge' ),
false );
$de->showDiffPage( true );
}
}
- protected function form() {
- global $wgOut, $wgScript;
-
- // Consume values
- $page1 = $this->opts->consumeValue( 'page1' );
- $page2 = $this->opts->consumeValue( 'page2' );
- $rev1 = $this->opts->consumeValue( 'rev1' );
- $rev2 = $this->opts->consumeValue( 'rev2' );
-
- // Store query values in hidden fields so that form submission doesn't lose them
- $hidden = array();
- foreach ( $this->opts->getUnconsumedValues() as $key => $value ) {
- $hidden[] = Html::hidden( $key, $value );
+ public static function revOrTitle( $revision, $title ) {
+ if( $revision ){
+ return $revision;
+ } elseif( $title ) {
+ $title = Title::newFromText( $title );
+ if( $title instanceof Title ){
+ return $title->getLatestRevID();
+ }
}
- $hidden = implode( "\n", $hidden );
-
- $form = Html::openElement( 'form', array( 'action' => $wgScript ) ) .
- Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
- Xml::fieldset( wfMsg( 'compare-selector' ) ) .
- Html::openElement( 'table', array( 'id' => 'mw-diff-table', 'style' => 'width:100%' ) ) .
- "<tr>
- <td class='mw-label' style='width:10%'>" .
- Html::element( 'label', array( 'for' => 'page1' ), wfMsg( 'compare-page1' ) ) .
- "</td>
- <td class='mw-input' style='width:40%'>" .
- Html::input( 'page1', $page1, 'text', array( 'size' => 40, 'id' => 'page1' ) ) .
- "</td>
- <td class='mw-label' style='width:10%'>" .
- Html::element( 'label', array( 'for' => 'page2' ), wfMsg( 'compare-page2' ) ) .
- "</td>
- <td class='mw-input' style='width:40%'>" .
- Html::input( 'page2', $page2, 'text', array( 'size' => 40, 'id' => 'page2' ) ) .
- "</td>
- </tr>" .
- "<tr>
- <td class='mw-label'>" .
- Html::element( 'label', array( 'for' => 'rev1' ), wfMsg( 'compare-rev1' ) ) .
- "</td>
- <td class='mw-input'>" .
- Html::input( 'rev1', $rev1, 'text', array( 'size' => 8, 'id' => 'rev1' ) ) .
- "</td>
- <td class='mw-label'>" .
- Html::element( 'label', array( 'for' => 'rev2' ), wfMsg( 'compare-rev2' ) ) .
- "</td>
- <td class='mw-input'>" .
- Html::input( 'rev2', $rev2, 'text', array( 'size' => 8, 'id' => 'rev2' ) ) .
- "</td>
- </tr>" .
- "<tr> <td></td>
- <td class='mw-submit' colspan='3'>" .
- Xml::submitButton( wfMsg( 'compare-submit' ) ) .
- "</td>
- </tr>" .
- Html::closeElement( 'table' ) .
- Html::closeElement( 'fieldset' ) .
- $hidden .
- Html::closeElement( 'form' );
-
- $wgOut->addHTML( $form );
+ return null;
}
}
diff --git a/includes/specials/SpecialConfirmemail.php b/includes/specials/SpecialConfirmemail.php
index e556a60b..70bbfe39 100644
--- a/includes/specials/SpecialConfirmemail.php
+++ b/includes/specials/SpecialConfirmemail.php
@@ -44,31 +44,27 @@ class EmailConfirmation extends UnlistedSpecialPage {
* @param $code Confirmation code passed to the page
*/
function execute( $code ) {
- global $wgUser, $wgOut;
$this->setHeaders();
-
+
if ( wfReadOnly() ) {
- $wgOut->readOnlyPage();
- return;
+ throw new ReadOnlyError;
}
-
+
if( empty( $code ) ) {
- if( $wgUser->isLoggedIn() ) {
- if( User::isValidEmailAddr( $wgUser->getEmail() ) ) {
+ if( $this->getUser()->isLoggedIn() ) {
+ if( Sanitizer::validateEmail( $this->getUser()->getEmail() ) ) {
$this->showRequestForm();
} else {
- $wgOut->addWikiMsg( 'confirmemail_noemail' );
+ $this->getOutput()->addWikiMsg( 'confirmemail_noemail' );
}
} else {
- $title = SpecialPage::getTitleFor( 'Userlogin' );
- $skin = $wgUser->getSkin();
- $llink = $skin->linkKnown(
- $title,
+ $llink = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Userlogin' ),
wfMsgHtml( 'loginreqlink' ),
array(),
array( 'returnto' => $this->getTitle()->getPrefixedText() )
);
- $wgOut->addHTML( wfMsgWikiHtml( 'confirmemail_needlogin', $llink ) );
+ $this->getOutput()->addHTML( wfMessage( 'confirmemail_needlogin' )->rawParams( $llink )->parse() );
}
} else {
$this->attemptConfirm( $code );
@@ -79,33 +75,34 @@ class EmailConfirmation extends UnlistedSpecialPage {
* Show a nice form for the user to request a confirmation mail
*/
function showRequestForm() {
- global $wgOut, $wgUser, $wgLang, $wgRequest;
- if( $wgRequest->wasPosted() && $wgUser->matchEditToken( $wgRequest->getText( 'token' ) ) ) {
- $status = $wgUser->sendConfirmationMail();
+ $user = $this->getUser();
+ $out = $this->getOutput();
+ if( $this->getRequest()->wasPosted() && $user->matchEditToken( $this->getRequest()->getText( 'token' ) ) ) {
+ $status = $user->sendConfirmationMail();
if ( $status->isGood() ) {
- $wgOut->addWikiMsg( 'confirmemail_sent' );
+ $out->addWikiMsg( 'confirmemail_sent' );
} else {
- $wgOut->addWikiText( $status->getWikiText( 'confirmemail_sendfailed' ) );
+ $out->addWikiText( $status->getWikiText( 'confirmemail_sendfailed' ) );
}
} else {
- if( $wgUser->isEmailConfirmed() ) {
+ if( $user->isEmailConfirmed() ) {
// date and time are separate parameters to facilitate localisation.
// $time is kept for backward compat reasons.
// 'emailauthenticated' is also used in SpecialPreferences.php
- $time = $wgLang->timeAndDate( $wgUser->mEmailAuthenticated, true );
- $d = $wgLang->date( $wgUser->mEmailAuthenticated, true );
- $t = $wgLang->time( $wgUser->mEmailAuthenticated, true );
- $wgOut->addWikiMsg( 'emailauthenticated', $time, $d, $t );
+ $time = $this->getLang()->timeAndDate( $user->mEmailAuthenticated, true );
+ $d = $this->getLang()->date( $user->mEmailAuthenticated, true );
+ $t = $this->getLang()->time( $user->mEmailAuthenticated, true );
+ $out->addWikiMsg( 'emailauthenticated', $time, $d, $t );
}
- if( $wgUser->isEmailConfirmationPending() ) {
- $wgOut->wrapWikiMsg( "<div class=\"error mw-confirmemail-pending\">\n$1\n</div>", 'confirmemail_pending' );
+ if( $user->isEmailConfirmationPending() ) {
+ $out->wrapWikiMsg( "<div class=\"error mw-confirmemail-pending\">\n$1\n</div>", 'confirmemail_pending' );
}
- $wgOut->addWikiMsg( 'confirmemail_text' );
+ $out->addWikiMsg( 'confirmemail_text' );
$form = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getTitle()->getLocalUrl() ) );
- $form .= Html::hidden( 'token', $wgUser->editToken() );
+ $form .= Html::hidden( 'token', $user->editToken() );
$form .= Xml::submitButton( wfMsg( 'confirmemail_send' ) );
$form .= Xml::closeElement( 'form' );
- $wgOut->addHTML( $form );
+ $out->addHTML( $form );
}
}
@@ -116,19 +113,18 @@ class EmailConfirmation extends UnlistedSpecialPage {
* @param $code Confirmation code
*/
function attemptConfirm( $code ) {
- global $wgUser, $wgOut;
$user = User::newFromConfirmationCode( $code );
if( is_object( $user ) ) {
$user->confirmEmail();
$user->saveSettings();
- $message = $wgUser->isLoggedIn() ? 'confirmemail_loggedin' : 'confirmemail_success';
- $wgOut->addWikiMsg( $message );
- if( !$wgUser->isLoggedIn() ) {
+ $message = $this->getUser()->isLoggedIn() ? 'confirmemail_loggedin' : 'confirmemail_success';
+ $this->getOutput()->addWikiMsg( $message );
+ if( !$this->getUser()->isLoggedIn() ) {
$title = SpecialPage::getTitleFor( 'Userlogin' );
- $wgOut->returnToMain( true, $title );
+ $this->getOutput()->returnToMain( true, $title );
}
} else {
- $wgOut->addWikiMsg( 'confirmemail_invalid' );
+ $this->getOutput()->addWikiMsg( 'confirmemail_invalid' );
}
}
@@ -150,11 +146,9 @@ class EmailInvalidation extends UnlistedSpecialPage {
$this->setHeaders();
if ( wfReadOnly() ) {
- global $wgOut;
- $wgOut->readOnlyPage();
- return;
+ throw new ReadOnlyError;
}
-
+
$this->attemptInvalidate( $code );
}
@@ -165,17 +159,16 @@ class EmailInvalidation extends UnlistedSpecialPage {
* @param $code Confirmation code
*/
function attemptInvalidate( $code ) {
- global $wgUser, $wgOut;
$user = User::newFromConfirmationCode( $code );
if( is_object( $user ) ) {
$user->invalidateEmail();
$user->saveSettings();
- $wgOut->addWikiMsg( 'confirmemail_invalidated' );
- if( !$wgUser->isLoggedIn() ) {
- $wgOut->returnToMain();
+ $this->getOutput()->addWikiMsg( 'confirmemail_invalidated' );
+ if( !$this->getUser()->isLoggedIn() ) {
+ $this->getOutput()->returnToMain();
}
} else {
- $wgOut->addWikiMsg( 'confirmemail_invalid' );
+ $this->getOutput()->addWikiMsg( 'confirmemail_invalid' );
}
}
}
diff --git a/includes/specials/SpecialContributions.php b/includes/specials/SpecialContributions.php
index cee01a7f..fea27bfd 100644
--- a/includes/specials/SpecialContributions.php
+++ b/includes/specials/SpecialContributions.php
@@ -29,6 +29,8 @@
class SpecialContributions extends SpecialPage {
+ protected $opts;
+
public function __construct() {
parent::__construct( 'Contributions' );
}
@@ -38,6 +40,7 @@ class SpecialContributions extends SpecialPage {
$this->setHeaders();
$this->outputHeader();
+ $wgOut->addModuleStyles( 'mediawiki.special' );
$this->opts = array();
@@ -78,6 +81,10 @@ class SpecialContributions extends SpecialPage {
$target = $nt->getText();
$wgOut->setSubtitle( $this->contributionsSub( $nt, $id ) );
$wgOut->setHTMLTitle( wfMsg( 'pagetitle', wfMsgExt( 'contributions-title', array( 'parsemag' ),$target ) ) );
+ $user = User::newFromName( $target, false );
+ if ( is_object( $user ) ) {
+ $this->getSkin()->setRelevantUser( $user );
+ }
} else {
$wgOut->setSubtitle( wfMsgHtml( 'sp-contributions-newbies-sub') );
$wgOut->setHTMLTitle( wfMsg( 'pagetitle', wfMsg( 'sp-contributions-newbies-title' ) ) );
@@ -107,13 +114,43 @@ class SpecialContributions extends SpecialPage {
$this->opts['month'] = $wgRequest->getIntOrNull( 'month' );
}
- // Add RSS/atom links
- $this->setSyndicated();
$feedType = $wgRequest->getVal( 'feed' );
if( $feedType ) {
- return $this->feed( $feedType );
+ // Maintain some level of backwards compatability
+ // If people request feeds using the old parameters, redirect to API
+ $apiParams = array(
+ 'action' => 'feedcontributions',
+ 'feedformat' => $feedType,
+ 'user' => $target,
+ );
+ if ( $this->opts['topOnly'] ) {
+ $apiParams['toponly'] = true;
+ }
+ if ( $this->opts['deletedOnly'] ) {
+ $apiParams['deletedonly'] = true;
+ }
+ if ( $this->opts['tagFilter'] !== '' ) {
+ $apiParams['tagfilter'] = $this->opts['tagFilter'];
+ }
+ if ( $this->opts['namespace'] !== '' ) {
+ $apiParams['namespace'] = $this->opts['namespace'];
+ }
+ if ( $this->opts['year'] !== null ) {
+ $apiParams['year'] = $this->opts['year'];
+ }
+ if ( $this->opts['month'] !== null ) {
+ $apiParams['month'] = $this->opts['month'];
+ }
+
+ $url = wfScript( 'api' ) . '?' . wfArrayToCGI( $apiParams );
+
+ $wgOut->redirect( $url, '301' );
+ return;
}
+ // Add RSS/atom links
+ $this->addFeedLinks( array( 'action' => 'feedcontributions', 'user' => $target ) );
+
if ( wfRunHooks( 'SpecialContributionsBeforeMainOutput', array( $id ) ) ) {
$wgOut->addHTML( $this->getForm() );
@@ -130,7 +167,8 @@ class SpecialContributions extends SpecialPage {
$wgOut->addWikiMsg( 'nocontribs', $target );
} else {
# Show a message about slave lag, if applicable
- if( ( $lag = $pager->getDatabase()->getLag() ) > 0 )
+ $lag = wfGetLB()->safeGetLag( $pager->getDatabase() );
+ if( $lag > 0 )
$wgOut->showLagWarning( $lag );
$wgOut->addHTML(
@@ -141,7 +179,6 @@ class SpecialContributions extends SpecialPage {
}
$wgOut->preventClickjacking( $pager->getPreventClickjacking() );
-
# Show the appropriate "footer" message - WHOIS tools, etc.
if( $target != 'newbies' ) {
$message = 'sp-contributions-footer';
@@ -155,8 +192,7 @@ class SpecialContributions extends SpecialPage {
}
}
- $text = wfMsgNoTrans( $message, $target );
- if( !wfEmptyMsg( $message, $text ) && $text != '-' ) {
+ if( !wfMessage( $message, $target )->isDisabled() ) {
$wgOut->wrapWikiMsg(
"<div class='mw-contributions-footer'>\n$1\n</div>",
array( $message, $target ) );
@@ -165,23 +201,17 @@ class SpecialContributions extends SpecialPage {
}
}
- protected function setSyndicated() {
- global $wgOut;
- $wgOut->setSyndicated( true );
- $wgOut->setFeedAppendQuery( wfArrayToCGI( $this->opts ) );
- }
-
/**
* Generates the subheading with links
* @param $nt Title object for the target
* @param $id Integer: User ID for the target
* @return String: appropriately-escaped HTML to be output literally
- * @todo Fixme: almost the same as getSubTitle in SpecialDeletedContributions.php. Could be combined.
+ * @todo FIXME: Almost the same as getSubTitle in SpecialDeletedContributions.php. Could be combined.
*/
protected function contributionsSub( $nt, $id ) {
- global $wgSysopUserBans, $wgLang, $wgUser, $wgOut;
+ global $wgLang, $wgUser, $wgOut;
- $sk = $wgUser->getSkin();
+ $sk = $this->getSkin();
if ( $id === null ) {
$user = htmlspecialchars( $nt->getText() );
@@ -191,78 +221,7 @@ class SpecialContributions extends SpecialPage {
$userObj = User::newFromName( $nt->getText(), /* check for username validity not needed */ false );
$talk = $nt->getTalkPage();
if( $talk ) {
- # Talk page link
- $tools[] = $sk->link( $talk, wfMsgHtml( 'sp-contributions-talk' ) );
- if( ( $id !== null && $wgSysopUserBans ) || ( $id === null && IP::isIPAddress( $nt->getText() ) ) ) {
- if( $wgUser->isAllowed( 'block' ) ) { # Block / Change block / Unblock links
- if ( $userObj->isBlocked() ) {
- $tools[] = $sk->linkKnown( # Change block link
- SpecialPage::getTitleFor( 'Blockip', $nt->getDBkey() ),
- wfMsgHtml( 'change-blocklink' )
- );
- $tools[] = $sk->linkKnown( # Unblock link
- SpecialPage::getTitleFor( 'Ipblocklist' ),
- wfMsgHtml( 'unblocklink' ),
- array(),
- array(
- 'action' => 'unblock',
- 'ip' => $nt->getDBkey()
- )
- );
- }
- else { # User is not blocked
- $tools[] = $sk->linkKnown( # Block link
- SpecialPage::getTitleFor( 'Blockip', $nt->getDBkey() ),
- wfMsgHtml( 'blocklink' )
- );
- }
- }
- # Block log link
- $tools[] = $sk->linkKnown(
- SpecialPage::getTitleFor( 'Log' ),
- wfMsgHtml( 'sp-contributions-blocklog' ),
- array(),
- array(
- 'type' => 'block',
- 'page' => $nt->getPrefixedText()
- )
- );
- }
- # Uploads
- $tools[] = $sk->linkKnown(
- SpecialPage::getTitleFor( 'Listfiles' ),
- wfMsgHtml( 'sp-contributions-uploads' ),
- array(),
- array( 'user' => $nt->getText() )
- );
-
- # Other logs link
- $tools[] = $sk->linkKnown(
- SpecialPage::getTitleFor( 'Log' ),
- wfMsgHtml( 'sp-contributions-logs' ),
- array(),
- array( 'user' => $nt->getText() )
- );
-
- # Add link to deleted user contributions for priviledged users
- if( $wgUser->isAllowed( 'deletedhistory' ) ) {
- $tools[] = $sk->linkKnown(
- SpecialPage::getTitleFor( 'DeletedContributions', $nt->getDBkey() ),
- wfMsgHtml( 'sp-contributions-deleted' )
- );
- }
-
- # Add a link to change user rights for privileged users
- $userrightsPage = new UserrightsPage();
- if( $id !== null && $userrightsPage->userCanChangeRights( User::newFromId( $id ) ) ) {
- $tools[] = $sk->linkKnown(
- SpecialPage::getTitleFor( 'Userrights', $nt->getDBkey() ),
- wfMsgHtml( 'sp-contributions-userrights' )
- );
- }
-
- wfRunHooks( 'ContributionsToolLinks', array( $id, $nt, &$tools ) );
-
+ $tools = self::getUserLinks( $nt, $talk, $userObj, $wgUser );
$links = $wgLang->pipeList( $tools );
// Show a note if the user is blocked and display the last block log entry.
@@ -291,7 +250,7 @@ class SpecialContributions extends SpecialPage {
// languages that want to put the "for" bit right after $user but before
// $links. If 'contribsub' is around, use it for reverse compatibility,
// otherwise use 'contribsub2'.
- if( wfEmptyMsg( 'contribsub', wfMsg( 'contribsub' ) ) ) {
+ if( wfEmptyMsg( 'contribsub' ) ) {
return wfMsgHtml( 'contribsub2', $user, $links );
} else {
return wfMsgHtml( 'contribsub', "$user ($links)" );
@@ -299,6 +258,82 @@ class SpecialContributions extends SpecialPage {
}
/**
+ * Links to different places.
+ * @param $userpage Title: Target user page
+ * @param $talkpage Title: Talk page
+ * @param $target User: Target user object
+ * @param $subject User: The viewing user ($wgUser is still checked in some cases, like userrights page!!)
+ */
+ public static function getUserLinks( Title $userpage, Title $talkpage, User $target, User $subject ) {
+
+ $sk = $subject->getSkin();
+ $id = $target->getId();
+ $username = $target->getName();
+
+ $tools[] = $sk->link( $talkpage, wfMsgHtml( 'sp-contributions-talk' ) );
+
+ if( ( $id !== null ) || ( $id === null && IP::isIPAddress( $username ) ) ) {
+ if( $subject->isAllowed( 'block' ) ) { # Block / Change block / Unblock links
+ if ( $target->isBlocked() ) {
+ $tools[] = $sk->linkKnown( # Change block link
+ SpecialPage::getTitleFor( 'Block', $username ),
+ wfMsgHtml( 'change-blocklink' )
+ );
+ $tools[] = $sk->linkKnown( # Unblock link
+ SpecialPage::getTitleFor( 'Unblock', $username ),
+ wfMsgHtml( 'unblocklink' )
+ );
+ } else { # User is not blocked
+ $tools[] = $sk->linkKnown( # Block link
+ SpecialPage::getTitleFor( 'Block', $username ),
+ wfMsgHtml( 'blocklink' )
+ );
+ }
+ }
+ # Block log link
+ $tools[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Log', 'block' ),
+ wfMsgHtml( 'sp-contributions-blocklog' ),
+ array(),
+ array(
+ 'page' => $userpage->getPrefixedText()
+ )
+ );
+ }
+ # Uploads
+ $tools[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Listfiles', $username ),
+ wfMsgHtml( 'sp-contributions-uploads' )
+ );
+
+ # Other logs link
+ $tools[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Log', $username ),
+ wfMsgHtml( 'sp-contributions-logs' )
+ );
+
+ # Add link to deleted user contributions for priviledged users
+ if( $subject->isAllowed( 'deletedhistory' ) ) {
+ $tools[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'DeletedContributions', $username ),
+ wfMsgHtml( 'sp-contributions-deleted' )
+ );
+ }
+
+ # Add a link to change user rights for privileged users
+ $userrightsPage = new UserrightsPage();
+ if( $id !== null && $userrightsPage->userCanChangeRights( $target ) ) {
+ $tools[] = $sk->linkKnown(
+ SpecialPage::getTitleFor( 'Userrights', $username ),
+ wfMsgHtml( 'sp-contributions-userrights' )
+ );
+ }
+
+ wfRunHooks( 'ContributionsToolLinks', array( $id, $userpage, &$tools ) );
+ return $tools;
+ }
+
+ /**
* Generates the namespace selector form with hidden attributes.
* @return String: HTML fragment
*/
@@ -374,104 +409,15 @@ class SpecialContributions extends SpecialPage {
Html::rawElement( 'p', array( 'style' => 'white-space: nowrap' ),
Xml::dateMenu( $this->opts['year'], $this->opts['month'] ) . ' ' .
Xml::submitButton( wfMsg( 'sp-contributions-submit' ) )
- ) . ' ';
- $explain = wfMsgExt( 'sp-contributions-explain', 'parseinline' );
- if( !wfEmptyMsg( 'sp-contributions-explain', $explain ) ) {
+ ) . ' ';
+ $explain = wfMessage( 'sp-contributions-explain' );
+ if ( $explain->exists() ) {
$f .= "<p id='mw-sp-contributions-explain'>{$explain}</p>";
}
$f .= Xml::closeElement('fieldset' ) .
Xml::closeElement( 'form' );
return $f;
}
-
- /**
- * Output a subscription feed listing recent edits to this page.
- * @param $type String
- */
- protected function feed( $type ) {
- global $wgFeed, $wgFeedClasses, $wgFeedLimit, $wgOut;
-
- if( !$wgFeed ) {
- $wgOut->addWikiMsg( 'feed-unavailable' );
- return;
- }
-
- if( !isset( $wgFeedClasses[$type] ) ) {
- $wgOut->addWikiMsg( 'feed-invalid' );
- return;
- }
-
- $feed = new $wgFeedClasses[$type](
- $this->feedTitle(),
- wfMsgExt( 'tagline', 'parsemag' ),
- $this->getTitle()->getFullUrl() . "/" . urlencode($this->opts['target'])
- );
-
- // Already valid title
- $nt = Title::makeTitleSafe( NS_USER, $this->opts['target'] );
- $target = $this->opts['target'] == 'newbies' ? 'newbies' : $nt->getText();
-
- $pager = new ContribsPager( array(
- 'target' => $target,
- 'namespace' => $this->opts['namespace'],
- 'year' => $this->opts['year'],
- 'month' => $this->opts['month'],
- 'tagFilter' => $this->opts['tagFilter'],
- 'deletedOnly' => $this->opts['deletedOnly'],
- 'topOnly' => $this->opts['topOnly'],
- ) );
-
- $pager->mLimit = min( $this->opts['limit'], $wgFeedLimit );
-
- $feed->outHeader();
- if( $pager->getNumRows() > 0 ) {
- foreach ( $pager->mResult as $row ) {
- $feed->outItem( $this->feedItem( $row ) );
- }
- }
- $feed->outFooter();
- }
-
- protected function feedTitle() {
- global $wgLanguageCode, $wgSitename;
- $page = SpecialPage::getPage( 'Contributions' );
- $desc = $page->getDescription();
- return "$wgSitename - $desc [$wgLanguageCode]";
- }
-
- protected function feedItem( $row ) {
- $title = Title::MakeTitle( intval( $row->page_namespace ), $row->page_title );
- if( $title ) {
- $date = $row->rev_timestamp;
- $comments = $title->getTalkPage()->getFullURL();
- $revision = Revision::newFromTitle( $title, $row->rev_id );
-
- return new FeedItem(
- $title->getPrefixedText(),
- $this->feedItemDesc( $revision ),
- $title->getFullURL(),
- $date,
- $this->feedItemAuthor( $revision ),
- $comments
- );
- } else {
- return null;
- }
- }
-
- protected function feedItemAuthor( $revision ) {
- return $revision->getUserText();
- }
-
- protected function feedItemDesc( $revision ) {
- if( $revision ) {
- return '<p>' . htmlspecialchars( $revision->getUserText() ) . wfMsgForContent( 'colon-separator' ) .
- htmlspecialchars( FeedItem::stripComment( $revision->getComment() ) ) .
- "</p>\n<hr />\n<div>" .
- nl2br( htmlspecialchars( $revision->getText() ) ) . "</div>";
- }
- return '';
- }
}
/**
@@ -513,6 +459,10 @@ class ContribsPager extends ReverseChronologicalPager {
return $query;
}
+ function getTitle() {
+ return SpecialPage::getTitleFor( 'Contributions' );
+ }
+
function getQueryInfo() {
global $wgUser;
list( $tables, $index, $userCond, $join_cond ) = $this->getUserCond();
@@ -521,7 +471,7 @@ class ContribsPager extends ReverseChronologicalPager {
// Paranoia: avoid brute force searches (bug 17342)
if( !$wgUser->isAllowed( 'deletedhistory' ) ) {
$conds[] = $this->mDb->bitAnd('rev_deleted',Revision::DELETED_USER) . ' = 0';
- } else if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
+ } elseif( !$wgUser->isAllowed( 'suppressrevision' ) ) {
$conds[] = $this->mDb->bitAnd('rev_deleted',Revision::SUPPRESSED_USER) .
' != ' . Revision::SUPPRESSED_USER;
}
@@ -561,7 +511,7 @@ class ContribsPager extends ReverseChronologicalPager {
$condition[] = 'rev_user >' . (int)($max - $max / 100);
$condition[] = 'ug_group IS NULL';
$index = 'user_timestamp';
- # FIXME: other groups may have 'bot' rights
+ # @todo FIXME: Other groups may have 'bot' rights
$join_conds['user_groups'] = array( 'LEFT JOIN', "ug_user = rev_user AND ug_group = 'bot'" );
} else {
$tables = array( 'page', 'revision' );
@@ -608,7 +558,7 @@ class ContribsPager extends ReverseChronologicalPager {
* @todo This would probably look a lot nicer in a table.
*/
function formatRow( $row ) {
- global $wgUser, $wgLang, $wgContLang;
+ global $wgUser, $wgLang;
wfProfileIn( __METHOD__ );
$sk = $this->getSkin();
@@ -655,7 +605,7 @@ class ContribsPager extends ReverseChronologicalPager {
array( 'action' => 'history' )
);
- $comment = $wgContLang->getDirMark() . $sk->revComment( $rev, false, true );
+ $comment = $wgLang->getDirMark() . $sk->revComment( $rev, false, true );
$date = $wgLang->timeanddate( wfTimestamp( TS_MW, $row->rev_timestamp ), true );
if( $rev->userCan( Revision::DELETED_TEXT ) ) {
$d = $sk->linkKnown(
@@ -734,7 +684,7 @@ class ContribsPager extends ReverseChronologicalPager {
/**
* Get the Database object in use
*
- * @return Database
+ * @return DatabaseBase
*/
public function getDatabase() {
return $this->mDb;
diff --git a/includes/specials/SpecialDeadendpages.php b/includes/specials/SpecialDeadendpages.php
index dfa053aa..f8ef4d44 100644
--- a/includes/specials/SpecialDeadendpages.php
+++ b/includes/specials/SpecialDeadendpages.php
@@ -28,8 +28,8 @@
*/
class DeadendPagesPage extends PageQueryPage {
- function getName( ) {
- return "Deadendpages";
+ function __construct( $name = 'Deadendpages' ) {
+ parent::__construct( $name );
}
function getPageHeader() {
@@ -41,11 +41,13 @@ class DeadendPagesPage extends PageQueryPage {
*
* @return true
*/
- function isExpensive( ) {
- return 1;
+ function isExpensive() {
+ return true;
}
- function isSyndicated() { return false; }
+ function isSyndicated() {
+ return false;
+ }
/**
* @return false
@@ -54,28 +56,30 @@ class DeadendPagesPage extends PageQueryPage {
return false;
}
- /**
- * @return string an sqlquery
- */
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $page, $pagelinks ) = $dbr->tableNamesN( 'page', 'pagelinks' );
- return "SELECT 'Deadendpages' as type, page_namespace AS namespace, page_title as title, page_title AS value " .
- "FROM $page LEFT JOIN $pagelinks ON page_id = pl_from " .
- "WHERE pl_from IS NULL " .
- "AND page_namespace = 0 " .
- "AND page_is_redirect = 0";
+ function getQueryInfo() {
+ return array(
+ 'tables' => array( 'page', 'pagelinks' ),
+ 'fields' => array( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'page_title AS value'
+ ),
+ 'conds' => array( 'pl_from IS NULL',
+ 'page_namespace' => MWNamespace::getContentNamespaces(),
+ 'page_is_redirect' => 0
+ ),
+ 'join_conds' => array( 'pagelinks' => array( 'LEFT JOIN', array(
+ 'page_id=pl_from'
+ ) ) )
+ );
}
-}
-/**
- * Constructor
- */
-function wfSpecialDeadendpages() {
-
- list( $limit, $offset ) = wfCheckLimits();
-
- $depp = new DeadendPagesPage();
-
- return $depp->doQuery( $offset, $limit );
+ function getOrderFields() {
+ // For some crazy reason ordering by a constant
+ // causes a filesort
+ if( count( MWNamespace::getContentNamespaces() ) > 1 ) {
+ return array( 'page_namespace', 'page_title' );
+ } else {
+ return array( 'page_title' );
+ }
+ }
}
diff --git a/includes/specials/SpecialDeletedContributions.php b/includes/specials/SpecialDeletedContributions.php
index 92e22586..65858482 100644
--- a/includes/specials/SpecialDeletedContributions.php
+++ b/includes/specials/SpecialDeletedContributions.php
@@ -55,7 +55,7 @@ class DeletedContribsPager extends IndexPager {
// Paranoia: avoid brute force searches (bug 17792)
if( !$wgUser->isAllowed( 'deletedhistory' ) ) {
$conds[] = $this->mDb->bitAnd('ar_deleted',Revision::DELETED_USER) . ' = 0';
- } else if( !$wgUser->isAllowed( 'suppressrevision' ) ) {
+ } elseif( !$wgUser->isAllowed( 'suppressrevision' ) ) {
$conds[] = $this->mDb->bitAnd('ar_deleted',Revision::SUPPRESSED_USER) .
' != ' . Revision::SUPPRESSED_USER;
}
@@ -211,7 +211,7 @@ class DeletedContribsPager extends IndexPager {
} else {
$mflag = '';
}
-
+
// Revision delete link
$canHide = $wgUser->isAllowed( 'deleterevision' );
if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) {
@@ -234,9 +234,9 @@ class DeletedContribsPager extends IndexPager {
array( 'class' => 'mw-deletedcontribs-tools' ),
wfMsg( 'parentheses', $wgLang->pipeList( array( $last, $dellog, $reviewlink ) ) )
);
-
+
$ret = "{$del}{$link} {$tools} . . {$mflag} {$pagelink} {$comment}";
-
+
# Denote if username is redacted for this edit
if( $rev->isDeleted( Revision::DELETED_USER ) ) {
$ret .= " <strong>" . wfMsgHtml('rev-deleted-user-contribs') . "</strong>";
@@ -325,7 +325,8 @@ class DeletedContributionsPage extends SpecialPage {
}
# Show a message about slave lag, if applicable
- if( ( $lag = $pager->getDatabase()->getLag() ) > 0 )
+ $lag = wfGetLB()->safeGetLag( $pager->getDatabase() );
+ if( $lag > 0 )
$wgOut->showLagWarning( $lag );
$wgOut->addHTML(
@@ -340,9 +341,7 @@ class DeletedContributionsPage extends SpecialPage {
? 'sp-contributions-footer-anon'
: 'sp-contributions-footer';
-
- $text = wfMsgNoTrans( $message, $target );
- if( !wfEmptyMsg( $message, $text ) && $text != '-' ) {
+ if( !wfMessage( $message )->isDisabled() ) {
$wgOut->wrapWikiMsg( "<div class='mw-contributions-footer'>\n$1\n</div>", array( $message, $target ) );
}
}
@@ -353,12 +352,12 @@ class DeletedContributionsPage extends SpecialPage {
* @param $nt Title object for the target
* @param $id Integer: User ID for the target
* @return String: appropriately-escaped HTML to be output literally
- * @todo Fixme: almost the same as contributionsSub in SpecialContributions.php. Could be combined.
+ * @todo FIXME: Almost the same as contributionsSub in SpecialContributions.php. Could be combined.
*/
function getSubTitle( $nt, $id ) {
- global $wgSysopUserBans, $wgLang, $wgUser, $wgOut;
+ global $wgLang, $wgUser, $wgOut;
- $sk = $wgUser->getSkin();
+ $sk = $this->getSkin();
if ( $id === null ) {
$user = htmlspecialchars( $nt->getText() );
@@ -370,11 +369,11 @@ class DeletedContributionsPage extends SpecialPage {
if( $talk ) {
# Talk page link
$tools[] = $sk->link( $talk, wfMsgHtml( 'sp-contributions-talk' ) );
- if( ( $id !== null && $wgSysopUserBans ) || ( $id === null && IP::isIPAddress( $nt->getText() ) ) ) {
+ if( ( $id !== null ) || ( $id === null && IP::isIPAddress( $nt->getText() ) ) ) {
if( $wgUser->isAllowed( 'block' ) ) { # Block / Change block / Unblock links
if ( $userObj->isBlocked() ) {
$tools[] = $sk->linkKnown( # Change block link
- SpecialPage::getTitleFor( 'Blockip', $nt->getDBkey() ),
+ SpecialPage::getTitleFor( 'Block', $nt->getDBkey() ),
wfMsgHtml( 'change-blocklink' )
);
$tools[] = $sk->linkKnown( # Unblock link
@@ -383,13 +382,13 @@ class DeletedContributionsPage extends SpecialPage {
array(),
array(
'action' => 'unblock',
- 'ip' => $nt->getDBkey()
+ 'ip' => $nt->getDBkey()
)
);
}
else { # User is not blocked
$tools[] = $sk->linkKnown( # Block link
- SpecialPage::getTitleFor( 'Blockip', $nt->getDBkey() ),
+ SpecialPage::getTitleFor( 'Block', $nt->getDBkey() ),
wfMsgHtml( 'blocklink' )
);
}
@@ -455,7 +454,7 @@ class DeletedContributionsPage extends SpecialPage {
// languages that want to put the "for" bit right after $user but before
// $links. If 'contribsub' is around, use it for reverse compatibility,
// otherwise use 'contribsub2'.
- if( wfEmptyMsg( 'contribsub', wfMsg( 'contribsub' ) ) ) {
+ if( wfEmptyMsg( 'contribsub' ) ) {
return wfMsgHtml( 'contribsub2', $user, $links );
} else {
return wfMsgHtml( 'contribsub', "$user ($links)" );
diff --git a/includes/specials/SpecialDisambiguations.php b/includes/specials/SpecialDisambiguations.php
index 3e706189..431dfe76 100644
--- a/includes/specials/SpecialDisambiguations.php
+++ b/includes/specials/SpecialDisambiguations.php
@@ -28,33 +28,28 @@
*/
class DisambiguationsPage extends PageQueryPage {
- function getName() {
- return 'Disambiguations';
+ function __construct( $name = 'Disambiguations' ) {
+ parent::__construct( $name );
}
- function isExpensive( ) { return true; }
+ function isExpensive() { return true; }
function isSyndicated() { return false; }
-
- function getPageHeader( ) {
+ function getPageHeader() {
return wfMsgExt( 'disambiguations-text', array( 'parse' ) );
}
- function getSQL() {
- global $wgContentNamespaces;
-
+ function getQueryInfo() {
$dbr = wfGetDB( DB_SLAVE );
-
- $dMsgText = wfMsgForContent('disambiguationspage');
-
+ $dMsgText = wfMsgForContent( 'disambiguationspage' );
$linkBatch = new LinkBatch;
# If the text can be treated as a title, use it verbatim.
# Otherwise, pull the titles from the links table
$dp = Title::newFromText($dMsgText);
if( $dp ) {
- if($dp->getNamespace() != NS_TEMPLATE) {
- # FIXME we assume the disambiguation message is a template but
+ if( $dp->getNamespace() != NS_TEMPLATE ) {
+ # @todo FIXME: We assume the disambiguation message is a template but
# the page can potentially be from another namespace :/
wfDebug("Mediawiki:disambiguationspage message does not refer to a template!\n");
}
@@ -65,69 +60,79 @@ class DisambiguationsPage extends PageQueryPage {
$res = $dbr->select(
array('pagelinks', 'page'),
'pl_title',
- array('page_id = pl_from', 'pl_namespace' => NS_TEMPLATE,
- 'page_namespace' => $disPageObj->getNamespace(), 'page_title' => $disPageObj->getDBkey()),
+ array('page_id = pl_from',
+ 'pl_namespace' => NS_TEMPLATE,
+ 'page_namespace' => $disPageObj->getNamespace(),
+ 'page_title' => $disPageObj->getDBkey()),
__METHOD__ );
foreach ( $res as $row ) {
$linkBatch->addObj( Title::makeTitle( NS_TEMPLATE, $row->pl_title ));
}
}
-
- $set = $linkBatch->constructSet( 'lb.tl', $dbr );
+ $set = $linkBatch->constructSet( 'tl', $dbr );
if( $set === false ) {
- # We must always return a valid sql query, but this way DB will always quicly return an empty result
+ # We must always return a valid SQL query, but this way
+ # the DB will always quickly return an empty result
$set = 'FALSE';
wfDebug("Mediawiki:disambiguationspage message does not link to any templates!\n");
}
- list( $page, $pagelinks, $templatelinks) = $dbr->tableNamesN( 'page', 'pagelinks', 'templatelinks' );
+ // @todo FIXME: What are pagelinks and p2 doing here?
+ return array (
+ 'tables' => array( 'templatelinks', 'p1' => 'page', 'pagelinks', 'p2' => 'page' ),
+ 'fields' => array( 'p1.page_namespace AS namespace',
+ 'p1.page_title AS title',
+ 'pl_from AS value' ),
+ 'conds' => array( $set,
+ 'p1.page_id = tl_from',
+ 'pl_namespace = p1.page_namespace',
+ 'pl_title = p1.page_title',
+ 'p2.page_id = pl_from',
+ 'p2.page_namespace' => MWNamespace::getContentNamespaces() )
+ );
+ }
- if ( $wgContentNamespaces ) {
- $nsclause = 'IN (' . $dbr->makeList( $wgContentNamespaces ) . ')';
- } else {
- $nsclause = '= ' . NS_MAIN;
- }
+ function getOrderFields() {
+ return array( 'tl_namespace', 'tl_title', 'value' );
+ }
- $sql = "SELECT 'Disambiguations' AS \"type\", pb.page_namespace AS namespace,"
- ." pb.page_title AS title, la.pl_from AS value"
- ." FROM {$templatelinks} AS lb, {$page} AS pb, {$pagelinks} AS la, {$page} AS pa"
- ." WHERE $set" # disambiguation template(s)
- .' AND pa.page_id = la.pl_from'
- .' AND pa.page_namespace ' . $nsclause
- .' AND pb.page_id = lb.tl_from'
- .' AND pb.page_namespace = la.pl_namespace'
- .' AND pb.page_title = la.pl_title'
- .' ORDER BY lb.tl_namespace, lb.tl_title';
-
- return $sql;
+ function sortDescending() {
+ return false;
}
- function getOrder() {
- return '';
+ /**
+ * Fetch links and cache their existence
+ *
+ * @param $db DatabaseBase
+ * @param $res
+ */
+ function preprocessResults( $db, $res ) {
+ $batch = new LinkBatch;
+ foreach ( $res as $row ) {
+ $batch->add( $row->namespace, $row->title );
+ }
+ $batch->execute();
+
+ // Back to start for display
+ if ( $db->numRows( $res ) > 0 ) {
+ // If there are no rows we get an error seeking.
+ $db->dataSeek( $res, 0 );
+ }
}
function formatResult( $skin, $result ) {
- global $wgContLang;
+ global $wgLang;
+
$title = Title::newFromID( $result->value );
$dp = Title::makeTitle( $result->namespace, $result->title );
$from = $skin->link( $title );
- $edit = $skin->link( $title, wfMsgExt( 'parentheses', array( 'escape' ), wfMsg( 'editlink' ) ) , array(), array( 'redirect' => 'no', 'action' => 'edit' ) );
- $arr = $wgContLang->getArrow();
+ $edit = $skin->link( $title, wfMsgExt( 'parentheses', array( 'escape' ), wfMsg( 'editlink' ) ) ,
+ array(), array( 'redirect' => 'no', 'action' => 'edit' ) );
+ $arr = $wgLang->getArrow();
$to = $skin->link( $dp );
return "$from $edit $arr $to";
}
}
-
-/**
- * Constructor
- */
-function wfSpecialDisambiguations() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $sd = new DisambiguationsPage();
-
- return $sd->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialDoubleRedirects.php b/includes/specials/SpecialDoubleRedirects.php
index c7f63210..ec899d8a 100644
--- a/includes/specials/SpecialDoubleRedirects.php
+++ b/includes/specials/SpecialDoubleRedirects.php
@@ -29,63 +29,63 @@
*/
class DoubleRedirectsPage extends PageQueryPage {
- function getName() {
- return 'DoubleRedirects';
+ function __construct( $name = 'DoubleRedirects' ) {
+ parent::__construct( $name );
}
- function isExpensive( ) { return true; }
+ function isExpensive() { return true; }
function isSyndicated() { return false; }
+ function sortDescending() { return false; }
- function getPageHeader( ) {
+ function getPageHeader() {
return wfMsgExt( 'doubleredirectstext', array( 'parse' ) );
}
- function getSQLText( &$dbr, $namespace = null, $title = null ) {
-
- list( $page, $redirect ) = $dbr->tableNamesN( 'page', 'redirect' );
-
+ function reallyGetQueryInfo( $namespace = null, $title = null ) {
$limitToTitle = !( $namespace === null && $title === null );
- $sql = $limitToTitle ? "SELECT" : "SELECT 'DoubleRedirects' as type," ;
- $sql .=
- " pa.page_namespace as namespace, pa.page_title as title," .
- " pb.page_namespace as nsb, pb.page_title as tb," .
- " pc.page_namespace as nsc, pc.page_title as tc" .
- " FROM $redirect AS ra, $redirect AS rb, $page AS pa, $page AS pb, $page AS pc" .
- " WHERE ra.rd_from=pa.page_id" .
- " AND ra.rd_namespace=pb.page_namespace" .
- " AND ra.rd_title=pb.page_title" .
- " AND rb.rd_from=pb.page_id" .
- " AND rb.rd_namespace=pc.page_namespace" .
- " AND rb.rd_title=pc.page_title";
-
- if( $limitToTitle ) {
- $encTitle = $dbr->addQuotes( $title );
- $sql .= " AND pa.page_namespace=$namespace" .
- " AND pa.page_title=$encTitle";
+ $retval = array (
+ 'tables' => array ( 'ra' => 'redirect',
+ 'rb' => 'redirect', 'pa' => 'page',
+ 'pb' => 'page', 'pc' => 'page' ),
+ 'fields' => array ( 'pa.page_namespace AS namespace',
+ 'pa.page_title AS title',
+ 'pb.page_namespace AS nsb',
+ 'pb.page_title AS tb',
+ 'pc.page_namespace AS nsc',
+ 'pc.page_title AS tc' ),
+ 'conds' => array ( 'ra.rd_from = pa.page_id',
+ 'pb.page_namespace = ra.rd_namespace',
+ 'pb.page_title = ra.rd_title',
+ 'rb.rd_from = pb.page_id',
+ 'pc.page_namespace = rb.rd_namespace',
+ 'pc.page_title = rb.rd_title' )
+ );
+ if ( $limitToTitle ) {
+ $retval['conds']['pa.page_namespace'] = $namespace;
+ $retval['conds']['pa.page_title'] = $title;
}
-
- return $sql;
+ return $retval;
}
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- return $this->getSQLText( $dbr );
+ function getQueryInfo() {
+ return $this->reallyGetQueryInfo();
}
- function getOrder() {
- return '';
+ function getOrderFields() {
+ return array ( 'ra.rd_namespace', 'ra.rd_title' );
}
function formatResult( $skin, $result ) {
- global $wgContLang;
+ global $wgLang;
- $fname = 'DoubleRedirectsPage::formatResult';
$titleA = Title::makeTitle( $result->namespace, $result->title );
if ( $result && !isset( $result->nsb ) ) {
$dbr = wfGetDB( DB_SLAVE );
- $sql = $this->getSQLText( $dbr, $result->namespace, $result->title );
- $res = $dbr->query( $sql, $fname );
+ $qi = $this->reallyGetQueryInfo( $result->namespace,
+ $result->title );
+ $res = $dbr->select($qi['tables'], $qi['fields'],
+ $qi['conds'], __METHOD__ );
if ( $res ) {
$result = $dbr->fetchObject( $res );
}
@@ -119,20 +119,8 @@ class DoubleRedirectsPage extends PageQueryPage {
array( 'redirect' => 'no' )
);
$linkC = $skin->linkKnown( $titleC );
- $arr = $wgContLang->getArrow() . $wgContLang->getDirMark();
+ $arr = $wgLang->getArrow() . $wgLang->getDirMark();
return( "{$linkA} {$edit} {$arr} {$linkB} {$arr} {$linkC}" );
}
}
-
-/**
- * constructor
- */
-function wfSpecialDoubleRedirects() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $sdr = new DoubleRedirectsPage();
-
- return $sdr->doQuery( $offset, $limit );
-
-}
diff --git a/includes/specials/SpecialEditWatchlist.php b/includes/specials/SpecialEditWatchlist.php
new file mode 100644
index 00000000..bb2ecd80
--- /dev/null
+++ b/includes/specials/SpecialEditWatchlist.php
@@ -0,0 +1,596 @@
+<?php
+
+/**
+ * Provides the UI through which users can perform editing
+ * operations on their watchlist
+ *
+ * @ingroup Watchlist
+ * @author Rob Church <robchur@gmail.com>
+ */
+class SpecialEditWatchlist extends UnlistedSpecialPage {
+
+ /**
+ * Editing modes
+ */
+ const EDIT_CLEAR = 1;
+ const EDIT_RAW = 2;
+ const EDIT_NORMAL = 3;
+
+ protected $successMessage;
+
+ protected $toc;
+
+ public function __construct(){
+ parent::__construct( 'EditWatchlist' );
+ }
+
+ /**
+ * Main execution point
+ *
+ * @param $mode int
+ */
+ public function execute( $mode ) {
+ if( wfReadOnly() ) {
+ throw new ReadOnlyError;
+ }
+
+ $out = $this->getOutput();
+
+ # Anons don't get a watchlist
+ if( $this->getUser()->isAnon() ) {
+ $out->setPageTitle( wfMsg( 'watchnologin' ) );
+ $llink = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Userlogin' ),
+ wfMsgHtml( 'loginreqlink' ),
+ array(),
+ array( 'returnto' => $this->getTitle()->getPrefixedText() )
+ );
+ $out->addHTML( wfMessage( 'watchlistanontext' )->rawParams( $llink )->parse() );
+ return;
+ }
+
+ $sub = wfMsgExt(
+ 'watchlistfor2',
+ array( 'parseinline', 'replaceafter' ),
+ $this->getUser()->getName(),
+ SpecialEditWatchlist::buildTools( null )
+ );
+ $out->setSubtitle( $sub );
+
+ # B/C: $mode used to be waaay down the parameter list, and the first parameter
+ # was $wgUser
+ if( $mode instanceof User ){
+ $args = func_get_args();
+ if( count( $args >= 4 ) ){
+ $mode = $args[3];
+ }
+ }
+ $mode = self::getMode( $this->getRequest(), $mode );
+
+ switch( $mode ) {
+ case self::EDIT_CLEAR:
+ // The "Clear" link scared people too much.
+ // Pass on to the raw editor, from which it's very easy to clear.
+
+ case self::EDIT_RAW:
+ $out->setPageTitle( wfMsg( 'watchlistedit-raw-title' ) );
+ $form = $this->getRawForm();
+ if( $form->show() ){
+ $out->addHTML( $this->successMessage );
+ $out->returnToMain();
+ }
+ break;
+
+ case self::EDIT_NORMAL:
+ default:
+ $out->setPageTitle( wfMsg( 'watchlistedit-normal-title' ) );
+ $form = $this->getNormalForm();
+ if( $form->show() ){
+ $out->addHTML( $this->successMessage );
+ $out->returnToMain();
+ } elseif ( $this->toc !== false ) {
+ $out->prependHTML( $this->toc );
+ }
+ break;
+ }
+ }
+
+ /**
+ * Extract a list of titles from a blob of text, returning
+ * (prefixed) strings; unwatchable titles are ignored
+ *
+ * @param $list String
+ * @return array
+ */
+ private function extractTitles( $list ) {
+ $titles = array();
+ $list = explode( "\n", trim( $list ) );
+ if( !is_array( $list ) ) {
+ return array();
+ }
+ foreach( $list as $text ) {
+ $text = trim( $text );
+ if( strlen( $text ) > 0 ) {
+ $title = Title::newFromText( $text );
+ if( $title instanceof Title && $title->isWatchable() ) {
+ $titles[] = $title->getPrefixedText();
+ }
+ }
+ }
+ return array_unique( $titles );
+ }
+
+ public function submitRaw( $data ){
+ $wanted = $this->extractTitles( $data['Titles'] );
+ $current = $this->getWatchlist();
+
+ if( count( $wanted ) > 0 ) {
+ $toWatch = array_diff( $wanted, $current );
+ $toUnwatch = array_diff( $current, $wanted );
+ $this->watchTitles( $toWatch );
+ $this->unwatchTitles( $toUnwatch );
+ $this->getUser()->invalidateCache();
+
+ if( count( $toWatch ) > 0 || count( $toUnwatch ) > 0 ){
+ $this->successMessage = wfMessage( 'watchlistedit-raw-done' )->parse();
+ } else {
+ return false;
+ }
+
+ if( count( $toWatch ) > 0 ) {
+ $this->successMessage .= wfMessage(
+ 'watchlistedit-raw-added',
+ $this->getLang()->formatNum( count( $toWatch ) )
+ );
+ $this->showTitles( $toWatch, $this->successMessage );
+ }
+
+ if( count( $toUnwatch ) > 0 ) {
+ $this->successMessage .= wfMessage(
+ 'watchlistedit-raw-removed',
+ $this->getLang()->formatNum( count( $toUnwatch ) )
+ );
+ $this->showTitles( $toUnwatch, $this->successMessage );
+ }
+ } else {
+ $this->clearWatchlist();
+ $this->getUser()->invalidateCache();
+ $this->successMessage .= wfMessage(
+ 'watchlistedit-raw-removed',
+ $this->getLang()->formatNum( count( $current ) )
+ );
+ $this->showTitles( $current, $this->successMessage );
+ }
+ return true;
+ }
+
+ /**
+ * Print out a list of linked titles
+ *
+ * $titles can be an array of strings or Title objects; the former
+ * is preferred, since Titles are very memory-heavy
+ *
+ * @param $titles array of strings, or Title objects
+ * @param $output String
+ */
+ private function showTitles( $titles, &$output ) {
+ $talk = wfMsgHtml( 'talkpagelinktext' );
+ // Do a batch existence check
+ $batch = new LinkBatch();
+ foreach( $titles as $title ) {
+ if( !$title instanceof Title ) {
+ $title = Title::newFromText( $title );
+ }
+ if( $title instanceof Title ) {
+ $batch->addObj( $title );
+ $batch->addObj( $title->getTalkPage() );
+ }
+ }
+ $batch->execute();
+ // Print out the list
+ $output .= "<ul>\n";
+ foreach( $titles as $title ) {
+ if( !$title instanceof Title ) {
+ $title = Title::newFromText( $title );
+ }
+ if( $title instanceof Title ) {
+ $output .= "<li>"
+ . Linker::link( $title )
+ . ' (' . Linker::link( $title->getTalkPage(), $talk )
+ . ")</li>\n";
+ }
+ }
+ $output .= "</ul>\n";
+ }
+
+ /**
+ * Prepare a list of titles on a user's watchlist (excluding talk pages)
+ * and return an array of (prefixed) strings
+ *
+ * @return array
+ */
+ private function getWatchlist() {
+ $list = array();
+ $dbr = wfGetDB( DB_MASTER );
+ $res = $dbr->select(
+ 'watchlist',
+ '*',
+ array(
+ 'wl_user' => $this->getUser()->getId(),
+ ),
+ __METHOD__
+ );
+ if( $res->numRows() > 0 ) {
+ foreach ( $res as $row ) {
+ $title = Title::makeTitleSafe( $row->wl_namespace, $row->wl_title );
+ if( $title instanceof Title && !$title->isTalkPage() )
+ $list[] = $title->getPrefixedText();
+ }
+ $res->free();
+ }
+ return $list;
+ }
+
+ /**
+ * Get a list of titles on a user's watchlist, excluding talk pages,
+ * and return as a two-dimensional array with namespace, title and
+ * redirect status
+ *
+ * @return array
+ */
+ private function getWatchlistInfo() {
+ $titles = array();
+ $dbr = wfGetDB( DB_MASTER );
+
+ $res = $dbr->select(
+ array( 'watchlist', 'page' ),
+ array(
+ 'wl_namespace',
+ 'wl_title',
+ 'page_id',
+ 'page_len',
+ 'page_is_redirect',
+ 'page_latest'
+ ),
+ array( 'wl_user' => $this->getUser()->getId() ),
+ __METHOD__,
+ array( 'ORDER BY' => 'wl_namespace, wl_title' ),
+ array( 'page' => array(
+ 'LEFT JOIN',
+ 'wl_namespace = page_namespace AND wl_title = page_title'
+ ) )
+ );
+
+ if( $res && $dbr->numRows( $res ) > 0 ) {
+ $cache = LinkCache::singleton();
+ foreach ( $res as $row ) {
+ $title = Title::makeTitleSafe( $row->wl_namespace, $row->wl_title );
+ if( $title instanceof Title ) {
+ // Update the link cache while we're at it
+ if( $row->page_id ) {
+ $cache->addGoodLinkObj( $row->page_id, $title, $row->page_len, $row->page_is_redirect, $row->page_latest );
+ } else {
+ $cache->addBadLinkObj( $title );
+ }
+ // Ignore non-talk
+ if( !$title->isTalkPage() ) {
+ $titles[$row->wl_namespace][$row->wl_title] = $row->page_is_redirect;
+ }
+ }
+ }
+ }
+ return $titles;
+ }
+
+ /**
+ * Remove all titles from a user's watchlist
+ */
+ private function clearWatchlist() {
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->delete(
+ 'watchlist',
+ array( 'wl_user' => $this->getUser()->getId() ),
+ __METHOD__
+ );
+ }
+
+ /**
+ * Add a list of titles to a user's watchlist
+ *
+ * $titles can be an array of strings or Title objects; the former
+ * is preferred, since Titles are very memory-heavy
+ *
+ * @param $titles Array of strings, or Title objects
+ */
+ private function watchTitles( $titles ) {
+ $dbw = wfGetDB( DB_MASTER );
+ $rows = array();
+ foreach( $titles as $title ) {
+ if( !$title instanceof Title ) {
+ $title = Title::newFromText( $title );
+ }
+ if( $title instanceof Title ) {
+ $rows[] = array(
+ 'wl_user' => $this->getUser()->getId(),
+ 'wl_namespace' => ( $title->getNamespace() & ~1 ),
+ 'wl_title' => $title->getDBkey(),
+ 'wl_notificationtimestamp' => null,
+ );
+ $rows[] = array(
+ 'wl_user' => $this->getUser()->getId(),
+ 'wl_namespace' => ( $title->getNamespace() | 1 ),
+ 'wl_title' => $title->getDBkey(),
+ 'wl_notificationtimestamp' => null,
+ );
+ }
+ }
+ $dbw->insert( 'watchlist', $rows, __METHOD__, 'IGNORE' );
+ }
+
+ /**
+ * Remove a list of titles from a user's watchlist
+ *
+ * $titles can be an array of strings or Title objects; the former
+ * is preferred, since Titles are very memory-heavy
+ *
+ * @param $titles Array of strings, or Title objects
+ */
+ private function unwatchTitles( $titles ) {
+ $dbw = wfGetDB( DB_MASTER );
+ foreach( $titles as $title ) {
+ if( !$title instanceof Title ) {
+ $title = Title::newFromText( $title );
+ }
+ if( $title instanceof Title ) {
+ $dbw->delete(
+ 'watchlist',
+ array(
+ 'wl_user' => $this->getUser()->getId(),
+ 'wl_namespace' => ( $title->getNamespace() & ~1 ),
+ 'wl_title' => $title->getDBkey(),
+ ),
+ __METHOD__
+ );
+ $dbw->delete(
+ 'watchlist',
+ array(
+ 'wl_user' => $this->getUser()->getId(),
+ 'wl_namespace' => ( $title->getNamespace() | 1 ),
+ 'wl_title' => $title->getDBkey(),
+ ),
+ __METHOD__
+ );
+ $article = new Article( $title, 0 );
+ wfRunHooks( 'UnwatchArticleComplete', array( $this->getUser(), &$article ) );
+ }
+ }
+ }
+
+ public function submitNormal( $data ) {
+ $removed = array();
+
+ foreach( $data as $titles ) {
+ $this->unwatchTitles( $titles );
+ $removed += $titles;
+ }
+
+ if( count( $removed ) > 0 ) {
+ $this->successMessage = wfMessage(
+ 'watchlistedit-normal-done',
+ $this->getLang()->formatNum( count( $removed ) )
+ );
+ $this->showTitles( $removed, $this->successMessage );
+ return true;
+ } else {
+ return false;
+ }
+ }
+
+ /**
+ * Get the standard watchlist editing form
+ *
+ * @return HTMLForm
+ */
+ protected function getNormalForm(){
+ global $wgContLang;
+
+ $fields = array();
+ $count = 0;
+
+ $haveInvalidNamespaces = false;
+ foreach( $this->getWatchlistInfo() as $namespace => $pages ){
+ if ( $namespace < 0 ) {
+ $haveInvalidNamespaces = true;
+ continue;
+ }
+
+ $fields['TitlesNs'.$namespace] = array(
+ 'class' => 'EditWatchlistCheckboxSeriesField',
+ 'options' => array(),
+ 'section' => "ns$namespace",
+ );
+
+ foreach( $pages as $dbkey => $redirect ){
+ $title = Title::makeTitleSafe( $namespace, $dbkey );
+ $text = $this->buildRemoveLine( $title, $redirect );
+ $fields['TitlesNs'.$namespace]['options'][$text] = $title->getEscapedText();
+ $count++;
+ }
+ }
+ if ( $haveInvalidNamespaces ) {
+ wfDebug( "User {$this->getContext()->getUser()->getId()} has invalid watchlist entries, clening up...\n" );
+ $this->getContext()->getUser()->cleanupWatchlist();
+ }
+
+ if ( count( $fields ) > 1 && $count > 30 ) {
+ $this->toc = Linker::tocIndent();
+ $tocLength = 0;
+ foreach( $fields as $key => $data ) {
+ $ns = substr( $data['section'], 2 );
+ $nsText = $ns == NS_MAIN
+ ? wfMsgHtml( 'blanknamespace' )
+ : htmlspecialchars( $wgContLang->getFormattedNsText( $ns ) );
+ $this->toc .= Linker::tocLine( "editwatchlist-{$data['section']}", $nsText, ++$tocLength, 1 ) . Linker::tocLineEnd();
+ }
+ $this->toc = Linker::tocList( $this->toc );
+ } else {
+ $this->toc = false;
+ }
+
+ $form = new EditWatchlistNormalHTMLForm( $fields, $this->getContext() );
+ $form->setTitle( $this->getTitle() );
+ $form->setSubmitText( wfMessage( 'watchlistedit-normal-submit' )->text() );
+ $form->setWrapperLegend( wfMessage( 'watchlistedit-normal-legend' )->text() );
+ $form->addHeaderText( wfMessage( 'watchlistedit-normal-explain' )->parse() );
+ $form->setSubmitCallback( array( $this, 'submitNormal' ) );
+ return $form;
+ }
+
+ /**
+ * Build the label for a checkbox, with a link to the title, and various additional bits
+ *
+ * @param $title Title
+ * @param $redirect bool
+ * @return string
+ */
+ private function buildRemoveLine( $title, $redirect ) {
+ $link = Linker::link( $title );
+ if( $redirect ) {
+ $link = '<span class="watchlistredir">' . $link . '</span>';
+ }
+ $tools[] = Linker::link( $title->getTalkPage(), wfMsgHtml( 'talkpagelinktext' ) );
+ if( $title->exists() ) {
+ $tools[] = Linker::linkKnown(
+ $title,
+ wfMsgHtml( 'history_short' ),
+ array(),
+ array( 'action' => 'history' )
+ );
+ }
+ if( $title->getNamespace() == NS_USER && !$title->isSubpage() ) {
+ $tools[] = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Contributions', $title->getText() ),
+ wfMsgHtml( 'contributions' )
+ );
+ }
+
+ wfRunHooks( 'WatchlistEditorBuildRemoveLine', array( &$tools, $title, $redirect, $this->getSkin() ) );
+
+ return $link . " (" . $this->getLang()->pipeList( $tools ) . ")";
+ }
+
+ /**
+ * Get a form for editing the watchlist in "raw" mode
+ *
+ * @return HTMLForm
+ */
+ protected function getRawForm(){
+ $titles = implode( $this->getWatchlist(), "\n" );
+ $fields = array(
+ 'Titles' => array(
+ 'type' => 'textarea',
+ 'label-message' => 'watchlistedit-raw-titles',
+ 'default' => $titles,
+ ),
+ );
+ $form = new HTMLForm( $fields );
+ $form->setTitle( $this->getTitle( 'raw' ) );
+ $form->setSubmitText( wfMessage( 'watchlistedit-raw-submit' )->text() );
+ $form->setWrapperLegend( wfMessage( 'watchlistedit-raw-legend' )->text() );
+ $form->addHeaderText( wfMessage( 'watchlistedit-raw-explain' )->parse() );
+ $form->setSubmitCallback( array( $this, 'submitRaw' ) );
+ return $form;
+ }
+
+ /**
+ * Determine whether we are editing the watchlist, and if so, what
+ * kind of editing operation
+ *
+ * @param $request WebRequest
+ * @param $par mixed
+ * @return int
+ */
+ public static function getMode( $request, $par ) {
+ $mode = strtolower( $request->getVal( 'action', $par ) );
+ switch( $mode ) {
+ case 'clear':
+ case self::EDIT_CLEAR:
+ return self::EDIT_CLEAR;
+
+ case 'raw':
+ case self::EDIT_RAW:
+ return self::EDIT_RAW;
+
+ case 'edit':
+ case self::EDIT_NORMAL:
+ return self::EDIT_NORMAL;
+
+ default:
+ return false;
+ }
+ }
+
+ /**
+ * Build a set of links for convenient navigation
+ * between watchlist viewing and editing modes
+ *
+ * @param $unused Unused
+ * @return string
+ */
+ public static function buildTools( $unused ) {
+ global $wgLang;
+
+ $tools = array();
+ $modes = array(
+ 'view' => array( 'Watchlist', false ),
+ 'edit' => array( 'EditWatchlist', false ),
+ 'raw' => array( 'EditWatchlist', 'raw' ),
+ );
+ foreach( $modes as $mode => $arr ) {
+ // can use messages 'watchlisttools-view', 'watchlisttools-edit', 'watchlisttools-raw'
+ $tools[] = Linker::linkKnown(
+ SpecialPage::getTitleFor( $arr[0], $arr[1] ),
+ wfMsgHtml( "watchlisttools-{$mode}" )
+ );
+ }
+ return Html::rawElement( 'span',
+ array( 'class' => 'mw-watchlist-toollinks' ),
+ wfMsg( 'parentheses', $wgLang->pipeList( $tools ) ) );
+ }
+}
+
+# B/C since 1.18
+class WatchlistEditor extends SpecialEditWatchlist {}
+
+/**
+ * Extend HTMLForm purely so we can have a more sane way of getting the section headers
+ */
+class EditWatchlistNormalHTMLForm extends HTMLForm {
+ public function getLegend( $namespace ){
+ $namespace = substr( $namespace, 2 );
+ return $namespace == NS_MAIN
+ ? wfMsgHtml( 'blanknamespace' )
+ : htmlspecialchars( $this->getContext()->getLang()->getFormattedNsText( $namespace ) );
+ }
+ public function getBody() {
+ return $this->displaySection( $this->mFieldTree, '', 'editwatchlist-' );
+ }
+}
+
+class EditWatchlistCheckboxSeriesField extends HTMLMultiSelectField {
+ /**
+ * HTMLMultiSelectField throws validation errors if we get input data
+ * that doesn't match the data set in the form setup. This causes
+ * problems if something gets removed from the watchlist while the
+ * form is open (bug 32126), but we know that invalid items will
+ * be harmless so we can override it here.
+ *
+ * @param $value String the value the field was submitted with
+ * @param $alldata Array the data collected from the form
+ * @return Mixed Bool true on success, or String error to display.
+ */
+ function validate( $value, $alldata ) {
+ // Need to call into grandparent to be a good citizen. :)
+ return HTMLFormField::validate( $value, $alldata );
+ }
+}
diff --git a/includes/specials/SpecialEmailuser.php b/includes/specials/SpecialEmailuser.php
index 61271227..7c2ba570 100644
--- a/includes/specials/SpecialEmailuser.php
+++ b/includes/specials/SpecialEmailuser.php
@@ -28,20 +28,20 @@
*/
class SpecialEmailUser extends UnlistedSpecialPage {
protected $mTarget;
-
- public function __construct(){
+
+ public function __construct() {
parent::__construct( 'Emailuser' );
}
-
- protected function getFormFields(){
+
+ protected function getFormFields() {
global $wgUser;
return array(
'From' => array(
'type' => 'info',
'raw' => 1,
- 'default' => $wgUser->getSkin()->link(
- $wgUser->getUserPage(),
- htmlspecialchars( $wgUser->getName() )
+ 'default' => $this->getSkin()->link(
+ $wgUser->getUserPage(),
+ htmlspecialchars( $wgUser->getName() )
),
'label-message' => 'emailfrom',
'id' => 'mw-emailuser-sender',
@@ -49,8 +49,8 @@ class SpecialEmailUser extends UnlistedSpecialPage {
'To' => array(
'type' => 'info',
'raw' => 1,
- 'default' => $wgUser->getSkin()->link(
- $this->mTargetObj->getUserPage(),
+ 'default' => $this->getSkin()->link(
+ $this->mTargetObj->getUserPage(),
htmlspecialchars( $this->mTargetObj->getName() )
),
'label-message' => 'emailto',
@@ -82,25 +82,17 @@ class SpecialEmailUser extends UnlistedSpecialPage {
),
);
}
-
+
public function execute( $par ) {
global $wgRequest, $wgOut, $wgUser;
$this->setHeaders();
$this->outputHeader();
-
+ $wgOut->addModuleStyles( 'mediawiki.special' );
$this->mTarget = is_null( $par )
? $wgRequest->getVal( 'wpTarget', $wgRequest->getVal( 'target', '' ) )
: $par;
-
- $ret = self::getTarget( $this->mTarget );
- if( $ret instanceof User ){
- $this->mTargetObj = $ret;
- } else {
- $wgOut->showErrorPage( "{$ret}title", "{$ret}text" );
- return false;
- }
-
+ // error out if sending user cannot do this
$error = self::getPermissionsError( $wgUser, $wgRequest->getVal( 'wpEditToken' ) );
switch ( $error ) {
case null:
@@ -125,7 +117,19 @@ class SpecialEmailUser extends UnlistedSpecialPage {
$wgOut->showErrorPage( $title, $msg, $params );
return;
}
-
+ // Got a valid target user name? Else ask for one.
+ $ret = self::getTarget( $this->mTarget );
+ if( !$ret instanceof User ) {
+ if( $this->mTarget != '' ) {
+ $ret = ( $ret == 'notarget' ) ? 'emailnotarget' : ( $ret . 'text' );
+ $wgOut->wrapWikiMsg( "<p class='error'>$1</p>", $ret );
+ }
+ $wgOut->addHTML( self::userForm( $this->mTarget ) );
+ return false;
+ }
+
+ $this->mTargetObj = $ret;
+
$form = new HTMLForm( $this->getFormFields() );
$form->addPreText( wfMsgExt( 'emailpagetext', 'parseinline' ) );
$form->setSubmitText( wfMsg( 'emailsend' ) );
@@ -133,16 +137,16 @@ class SpecialEmailUser extends UnlistedSpecialPage {
$form->setSubmitCallback( array( __CLASS__, 'submit' ) );
$form->setWrapperLegend( wfMsgExt( 'email-legend', 'parsemag' ) );
$form->loadData();
-
- if( !wfRunHooks( 'EmailUserForm', array( &$form ) ) ){
+
+ if( !wfRunHooks( 'EmailUserForm', array( &$form ) ) ) {
return false;
}
-
- $wgOut->setPagetitle( wfMsg( 'emailpage' ) );
+
+ $wgOut->setPageTitle( wfMsg( 'emailpage' ) );
$result = $form->show();
-
- if( $result === true || ( $result instanceof Status && $result->isGood() ) ){
- $wgOut->setPagetitle( wfMsg( 'emailsent' ) );
+
+ if( $result === true || ( $result instanceof Status && $result->isGood() ) ) {
+ $wgOut->setPageTitle( wfMsg( 'emailsent' ) );
$wgOut->addWikiMsg( 'emailsenttext' );
$wgOut->returnToMain( false, $this->mTargetObj->getUserPage() );
}
@@ -159,15 +163,15 @@ class SpecialEmailUser extends UnlistedSpecialPage {
wfDebug( "Target is empty.\n" );
return 'notarget';
}
-
+
$nu = User::newFromName( $target );
if( !$nu instanceof User || !$nu->getId() ) {
wfDebug( "Target is invalid user.\n" );
return 'notarget';
- } else if ( !$nu->isEmailConfirmed() ) {
+ } elseif ( !$nu->isEmailConfirmed() ) {
wfDebug( "User has no valid email.\n" );
return 'noemail';
- } else if ( !$nu->canReceiveEmail() ) {
+ } elseif ( !$nu->canReceiveEmail() ) {
wfDebug( "User does not allow user emails.\n" );
return 'nowikiemail';
}
@@ -184,15 +188,15 @@ class SpecialEmailUser extends UnlistedSpecialPage {
*/
public static function getPermissionsError( $user, $editToken ) {
global $wgEnableEmail, $wgEnableUserEmail;
- if( !$wgEnableEmail || !$wgEnableUserEmail ){
+ if( !$wgEnableEmail || !$wgEnableUserEmail ) {
return 'usermaildisabled';
}
-
+
if( !$user->isAllowed( 'sendemail' ) ) {
return 'badaccess';
}
-
- if( !$user->isEmailConfirmed() ){
+
+ if( !$user->isEmailConfirmed() ) {
return 'mailnologin';
}
@@ -217,8 +221,28 @@ class SpecialEmailUser extends UnlistedSpecialPage {
}
/**
+ * Form to ask for target user name.
+ *
+ * @param $name String: user name submitted.
+ * @return String: form asking for user name.
+ */
+
+ function userForm( $name ) {
+ global $wgScript ;
+ $string = Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript, 'id' => 'askusername' ) ) .
+ Html::hidden( 'title', $this->getTitle()->getPrefixedText() ) .
+ Xml::openElement( 'fieldset' ) .
+ Html::rawElement( 'legend', null, wfMessage( 'emailtarget' )->parse() ) .
+ Xml::inputLabel( wfMessage( 'emailusername' )->text(), 'target', 'emailusertarget', 30, $name ) . ' ' .
+ Xml::submitButton( wfMessage( 'emailusernamesubmit' )->text() ) .
+ Xml::closeElement( 'fieldset' ) .
+ Xml::closeElement( 'form' ) . "\n";
+ return $string;
+ }
+
+ /**
* Really send a mail. Permissions should have been checked using
- * getPermissionsError(). It is probably also a good
+ * getPermissionsError(). It is probably also a good
* idea to check the edit token and ping limiter in advance.
*
* @return Mixed: Status object, or potentially a String on error
@@ -228,7 +252,7 @@ class SpecialEmailUser extends UnlistedSpecialPage {
global $wgUser, $wgUserEmailUseReplyTo;
$target = self::getTarget( $data['Target'] );
- if( !$target instanceof User ){
+ if( !$target instanceof User ) {
return wfMsgExt( $target . 'text', 'parse' );
}
$to = new MailAddress( $target );
@@ -238,17 +262,17 @@ class SpecialEmailUser extends UnlistedSpecialPage {
// Add a standard footer and trim up trailing newlines
$text = rtrim( $text ) . "\n\n-- \n";
- $text .= wfMsgExt(
+ $text .= wfMsgExt(
'emailuserfooter',
- array( 'content', 'parsemag' ),
- array( $from->name, $to->name )
+ array( 'content', 'parsemag' ),
+ array( $from->name, $to->name )
);
$error = '';
if( !wfRunHooks( 'EmailUser', array( &$to, &$from, &$subject, &$text, &$error ) ) ) {
return $error;
}
-
+
if( $wgUserEmailUseReplyTo ) {
// Put the generic wiki autogenerated address in the From:
// header and reserve the user for Reply-To.
@@ -283,12 +307,12 @@ class SpecialEmailUser extends UnlistedSpecialPage {
return $status;
} else {
// if the user requested a copy of this mail, do this now,
- // unless they are emailing themselves, in which case one
+ // unless they are emailing themselves, in which case one
// copy of the message is sufficient.
if ( $data['CCMe'] && $to != $from ) {
$cc_subject = wfMsg(
- 'emailccsubject',
- $target->getName(),
+ 'emailccsubject',
+ $target->getName(),
$subject
);
wfRunHooks( 'EmailUserCC', array( &$from, &$from, &$cc_subject, &$text ) );
diff --git a/includes/specials/SpecialExport.php b/includes/specials/SpecialExport.php
index eaed2393..50754b6a 100644
--- a/includes/specials/SpecialExport.php
+++ b/includes/specials/SpecialExport.php
@@ -40,7 +40,7 @@ class SpecialExport extends SpecialPage {
public function execute( $par ) {
global $wgOut, $wgRequest, $wgSitename, $wgExportAllowListContributors;
global $wgExportAllowHistory, $wgExportMaxHistory, $wgExportMaxLinkDepth;
- global $wgExportFromNamespaces, $wgUser;
+ global $wgExportFromNamespaces;
$this->setHeaders();
$this->outputHeader();
@@ -63,16 +63,18 @@ class SpecialExport extends SpecialPage {
$t = Title::makeTitleSafe( NS_MAIN, $catname );
if ( $t ) {
/**
- * @todo Fixme: this can lead to hitting memory limit for very large
+ * @todo FIXME: This can lead to hitting memory limit for very large
* categories. Ideally we would do the lookup synchronously
* during the export in a single query.
*/
$catpages = $this->getPagesFromCategory( $t );
- if ( $catpages ) $page .= "\n" . implode( "\n", $catpages );
+ if ( $catpages ) {
+ $page .= "\n" . implode( "\n", $catpages );
+ }
}
}
}
- else if( $wgRequest->getCheck( 'addns' ) && $wgExportFromNamespaces ) {
+ elseif( $wgRequest->getCheck( 'addns' ) && $wgExportFromNamespaces ) {
$page = $wgRequest->getText( 'pages' );
$nsindex = $wgRequest->getText( 'nsindex', '' );
@@ -81,20 +83,22 @@ class SpecialExport extends SpecialPage {
* Same implementation as above, so same @todo
*/
$nspages = $this->getPagesFromNamespace( $nsindex );
- if ( $nspages ) $page .= "\n" . implode( "\n", $nspages );
+ if ( $nspages ) {
+ $page .= "\n" . implode( "\n", $nspages );
+ }
}
}
- else if( $wgRequest->wasPosted() && $par == '' ) {
+ elseif( $wgRequest->wasPosted() && $par == '' ) {
$page = $wgRequest->getText( 'pages' );
$this->curonly = $wgRequest->getCheck( 'curonly' );
$rawOffset = $wgRequest->getVal( 'offset' );
-
+
if( $rawOffset ) {
$offset = wfTimestamp( TS_MW, $rawOffset );
} else {
$offset = null;
}
-
+
$limit = $wgRequest->getInt( 'limit' );
$dir = $wgRequest->getVal( 'dir' );
$history = array(
@@ -103,7 +107,7 @@ class SpecialExport extends SpecialPage {
'limit' => $wgExportMaxHistory,
);
$historyCheck = $wgRequest->getCheck( 'history' );
-
+
if ( $this->curonly ) {
$history = WikiExporter::CURRENT;
} elseif ( !$historyCheck ) {
@@ -118,19 +122,23 @@ class SpecialExport extends SpecialPage {
}
}
- if( $page != '' ) $this->doExport = true;
+ if( $page != '' ) {
+ $this->doExport = true;
+ }
} else {
// Default to current-only for GET requests.
$page = $wgRequest->getText( 'pages', $par );
$historyCheck = $wgRequest->getCheck( 'history' );
-
+
if( $historyCheck ) {
$history = WikiExporter::FULL;
} else {
$history = WikiExporter::CURRENT;
}
- if( $page != '' ) $this->doExport = true;
+ if( $page != '' ) {
+ $this->doExport = true;
+ }
}
if( !$wgExportAllowHistory ) {
@@ -139,24 +147,26 @@ class SpecialExport extends SpecialPage {
}
$list_authors = $wgRequest->getCheck( 'listauthors' );
- if ( !$this->curonly || !$wgExportAllowListContributors ) $list_authors = false ;
+ if ( !$this->curonly || !$wgExportAllowListContributors ) {
+ $list_authors = false ;
+ }
if ( $this->doExport ) {
$wgOut->disable();
-
+
// Cancel output buffering and gzipping if set
// This should provide safer streaming for pages with history
wfResetOutputBuffers();
$wgRequest->response()->header( "Content-type: application/xml; charset=utf-8" );
-
+
if( $wgRequest->getCheck( 'wpDownload' ) ) {
// Provide a sane filename suggestion
$filename = urlencode( $wgSitename . '-' . wfTimestampNow() . '.xml' );
$wgRequest->response()->header( "Content-disposition: attachment;filename={$filename}" );
}
-
+
$this->doExport( $page, $history, $list_authors );
-
+
return;
}
@@ -176,23 +186,38 @@ class SpecialExport extends SpecialPage {
$form .= '<br />';
if( $wgExportAllowHistory ) {
- $form .= Xml::checkLabel( wfMsg( 'exportcuronly' ), 'curonly', 'curonly', true ) . '<br />';
+ $form .= Xml::checkLabel(
+ wfMsg( 'exportcuronly' ),
+ 'curonly',
+ 'curonly',
+ $wgRequest->wasPosted() ? $wgRequest->getCheck( 'curonly' ) : true
+ ) . '<br />';
} else {
$wgOut->addHTML( wfMsgExt( 'exportnohistory', 'parse' ) );
}
-
- $form .= Xml::checkLabel( wfMsg( 'export-templates' ), 'templates', 'wpExportTemplates', false ) . '<br />';
-
+
+ $form .= Xml::checkLabel(
+ wfMsg( 'export-templates' ),
+ 'templates',
+ 'wpExportTemplates',
+ $wgRequest->wasPosted() ? $wgRequest->getCheck( 'templates' ) : false
+ ) . '<br />';
+
if( $wgExportMaxLinkDepth || $this->userCanOverrideExportDepth() ) {
$form .= Xml::inputLabel( wfMsg( 'export-pagelinks' ), 'pagelink-depth', 'pagelink-depth', 20, 0 ) . '<br />';
}
// Enable this when we can do something useful exporting/importing image information. :)
//$form .= Xml::checkLabel( wfMsg( 'export-images' ), 'images', 'wpExportImages', false ) . '<br />';
- $form .= Xml::checkLabel( wfMsg( 'export-download' ), 'wpDownload', 'wpDownload', true ) . '<br />';
-
- $form .= Xml::submitButton( wfMsg( 'export-submit' ), $wgUser->getSkin()->tooltipAndAccessKeyAttribs( 'export' ) );
+ $form .= Xml::checkLabel(
+ wfMsg( 'export-download' ),
+ 'wpDownload',
+ 'wpDownload',
+ $wgRequest->wasPosted() ? $wgRequest->getCheck( 'wpDownload' ) : true
+ ) . '<br />';
+
+ $form .= Xml::submitButton( wfMsg( 'export-submit' ), Linker::tooltipAndAccesskeyAttribs( 'export' ) );
$form .= Xml::closeElement( 'form' );
-
+
$wgOut->addHTML( $form );
}
@@ -247,7 +272,7 @@ class SpecialExport extends SpecialPage {
foreach( $pages as $k => $v ) {
$pages[$k] = str_replace( " ", "_", $v );
}
-
+
$pages = array_unique( $pages );
/* Ok, let's get to it... */
@@ -266,11 +291,11 @@ class SpecialExport extends SpecialPage {
set_time_limit(0);
wfRestoreWarnings();
}
-
+
$exporter = new WikiExporter( $db, $history, $buffer );
$exporter->list_authors = $list_authors;
$exporter->openStream();
-
+
foreach( $pages as $page ) {
/*
if( $wgExportMaxHistory && !$this->curonly ) {
@@ -286,14 +311,18 @@ class SpecialExport extends SpecialPage {
}*/
#Bug 8824: Only export pages the user can read
$title = Title::newFromText( $page );
- if( is_null( $title ) ) continue; #TODO: perhaps output an <error> tag or something.
- if( !$title->userCanRead() ) continue; #TODO: perhaps output an <error> tag or something.
+ if( is_null( $title ) ) {
+ continue; #TODO: perhaps output an <error> tag or something.
+ }
+ if( !$title->userCanRead() ) {
+ continue; #TODO: perhaps output an <error> tag or something.
+ }
$exporter->pageByTitle( $title );
}
$exporter->closeStream();
-
+
if( $lb ) {
$lb->closeAll();
}
@@ -314,7 +343,7 @@ class SpecialExport extends SpecialPage {
);
$pages = array();
-
+
foreach ( $res as $row ) {
$n = $row->page_title;
if ($row->page_namespace) {
@@ -340,10 +369,10 @@ class SpecialExport extends SpecialPage {
);
$pages = array();
-
+
foreach ( $res as $row ) {
$n = $row->page_title;
-
+
if ( $row->page_namespace ) {
$ns = $wgContLang->getNsText( $row->page_namespace );
$n = $ns . ':' . $n;
@@ -373,17 +402,17 @@ class SpecialExport extends SpecialPage {
*/
private function validateLinkDepth( $depth ) {
global $wgExportMaxLinkDepth;
-
+
if( $depth < 0 ) {
return 0;
}
-
+
if ( !$this->userCanOverrideExportDepth() ) {
if( $depth > $wgExportMaxLinkDepth ) {
return $wgExportMaxLinkDepth;
}
}
-
+
/*
* There's a HARD CODED limit of 5 levels of recursion here to prevent a
* crazy-big export from being done by someone setting the depth
@@ -394,24 +423,24 @@ class SpecialExport extends SpecialPage {
/** Expand a list of pages to include pages linked to from that page. */
private function getPageLinks( $inputPages, $pageSet, $depth ) {
- for(; $depth > 0; --$depth ) {
+ for( ; $depth > 0; --$depth ) {
$pageSet = $this->getLinks(
$inputPages, $pageSet, 'pagelinks',
- array( 'pl_namespace AS namespace', 'pl_title AS title' ),
+ array( 'pl_namespace AS namespace', 'pl_title AS title' ),
array( 'page_id=pl_from' )
);
$inputPages = array_keys( $pageSet );
}
-
+
return $pageSet;
}
/**
* Expand a list of pages to include images used in those pages.
- *
+ *
* @param $inputPages array, list of titles to look up
* @param $pageSet array, associative array indexed by titles for output
- *
+ *
* @return array associative array index by titles
*/
private function getImages( $inputPages, $pageSet ) {
@@ -429,13 +458,13 @@ class SpecialExport extends SpecialPage {
*/
private function getLinks( $inputPages, $pageSet, $table, $fields, $join ) {
$dbr = wfGetDB( DB_SLAVE );
-
+
foreach( $inputPages as $page ) {
$title = Title::newFromText( $page );
-
+
if( $title ) {
$pageSet[$title->getPrefixedText()] = true;
- /// @todo Fixme: May or may not be more efficient to batch these
+ /// @todo FIXME: May or may not be more efficient to batch these
/// by namespace when given multiple input pages.
$result = $dbr->select(
array( 'page', $table ),
@@ -449,15 +478,15 @@ class SpecialExport extends SpecialPage {
),
__METHOD__
);
-
+
foreach( $result as $row ) {
$template = Title::makeTitle( $row->namespace, $row->title );
$pageSet[$template->getPrefixedText()] = true;
}
}
}
-
+
return $pageSet;
}
-
-} \ No newline at end of file
+
+}
diff --git a/includes/specials/SpecialFewestrevisions.php b/includes/specials/SpecialFewestrevisions.php
index c265ed38..6d621a2e 100644
--- a/includes/specials/SpecialFewestrevisions.php
+++ b/includes/specials/SpecialFewestrevisions.php
@@ -29,8 +29,8 @@
*/
class FewestrevisionsPage extends QueryPage {
- function getName() {
- return 'Fewestrevisions';
+ function __construct( $name = 'Fewestrevisions' ) {
+ parent::__construct( $name );
}
function isExpensive() {
@@ -41,31 +41,34 @@ class FewestrevisionsPage extends QueryPage {
return false;
}
- function getSql() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $revision, $page ) = $dbr->tableNamesN( 'revision', 'page' );
-
- return "SELECT 'Fewestrevisions' as type,
- page_namespace as namespace,
- page_title as title,
- page_is_redirect as redirect,
- COUNT(*) as value
- FROM $revision
- JOIN $page ON page_id = rev_page
- WHERE page_namespace = " . NS_MAIN . "
- GROUP BY page_namespace, page_title, page_is_redirect
- HAVING COUNT(*) > 1";
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'revision', 'page' ),
+ 'fields' => array ( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'COUNT(*) AS value',
+ 'page_is_redirect AS redirect' ),
+ 'conds' => array ( 'page_namespace' => MWNamespace::getContentNamespaces(),
+ 'page_id = rev_page' ),
+ 'options' => array ( 'HAVING' => 'COUNT(*) > 1',
// ^^^ This was probably here to weed out redirects.
// Since we mark them as such now, it might be
// useful to remove this. People _do_ create pages
// and never revise them, they aren't necessarily
// redirects.
+ 'GROUP BY' => 'page_namespace, page_title, page_is_redirect' )
+ );
}
+
function sortDescending() {
return false;
}
+ /**
+ * @param $skin Skin object
+ * @param $result Object: database row
+ */
function formatResult( $skin, $result ) {
global $wgLang, $wgContLang;
@@ -94,9 +97,3 @@ class FewestrevisionsPage extends QueryPage {
return wfSpecialList( $plink, $nlink );
}
}
-
-function wfSpecialFewestrevisions() {
- list( $limit, $offset ) = wfCheckLimits();
- $frp = new FewestrevisionsPage();
- $frp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialFileDuplicateSearch.php b/includes/specials/SpecialFileDuplicateSearch.php
index 172e92ad..a296fd95 100644
--- a/includes/specials/SpecialFileDuplicateSearch.php
+++ b/includes/specials/SpecialFileDuplicateSearch.php
@@ -29,123 +29,161 @@
* @ingroup SpecialPage
*/
class FileDuplicateSearchPage extends QueryPage {
- var $hash, $filename;
+ protected $hash = '', $filename = '';
- function __construct( $hash, $filename ) {
- $this->hash = $hash;
- $this->filename = $filename;
+ /**
+ * @var File $file selected reference file, if present
+ */
+ protected $file = null;
+
+ function __construct( $name = 'FileDuplicateSearch' ) {
+ parent::__construct( $name );
}
- function getName() { return 'FileDuplicateSearch'; }
- function isExpensive() { return false; }
function isSyndicated() { return false; }
+ function isCacheable() { return false; }
+ function isCached() { return false; }
function linkParameters() {
return array( 'filename' => $this->filename );
}
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- $image = $dbr->tableName( 'image' );
- $hash = $dbr->addQuotes( $this->hash );
-
- return "SELECT 'FileDuplicateSearch' AS type,
- img_name AS title,
- img_sha1 AS value,
- img_user_text,
- img_timestamp
- FROM $image
- WHERE img_sha1 = $hash
- ";
+ /**
+ * Fetch dupes from all connected file repositories.
+ *
+ * @return Array of File objects
+ */
+ function getDupes() {
+ return RepoGroup::singleton()->findBySha1( $this->hash );
}
- function formatResult( $skin, $result ) {
- global $wgContLang, $wgLang;
+ /**
+ *
+ * @param $dupes Array of File objects
+ */
+ function showList( $dupes ) {
+ global $wgOut;
+ $skin = $this->getSkin();
- $nt = Title::makeTitle( NS_FILE, $result->title );
- $text = $wgContLang->convert( $nt->getText() );
- $plink = $skin->link(
- Title::newFromText( $nt->getPrefixedText() ),
- $text
- );
+ $html = array();
+ $html[] = $this->openList( 0 );
- $user = $skin->link( Title::makeTitle( NS_USER, $result->img_user_text ), $result->img_user_text );
- $time = $wgLang->timeanddate( $result->img_timestamp );
+ foreach ( $dupes as $dupe ) {
+ $line = $this->formatResult( $skin, $dupe );
+ $html[] = "<li>" . $line . "</li>";
+ }
+ $html[] = $this->closeList();
- return "$plink . . $user . . $time";
+ $wgOut->addHtml( implode( "\n", $html ) );
}
-}
-/**
- * Output the HTML search form, and constructs the FileDuplicateSearch object.
- */
-function wfSpecialFileDuplicateSearch( $par = null ) {
- global $wgRequest, $wgOut, $wgLang, $wgContLang, $wgScript;
-
- $hash = '';
- $filename = isset( $par ) ? $par : $wgRequest->getText( 'filename' );
-
- $title = Title::makeTitleSafe( NS_FILE, $filename );
- if( $title && $title->getText() != '' ) {
- $dbr = wfGetDB( DB_SLAVE );
- $image = $dbr->tableName( 'image' );
- $encFilename = $dbr->addQuotes( htmlspecialchars( $title->getDBkey() ) );
- $sql = "SELECT img_sha1 from $image where img_name = $encFilename";
- $res = $dbr->query( $sql );
- $row = $dbr->fetchRow( $res );
- if( $row !== false ) {
- $hash = $row[0];
- }
+ function getQueryInfo() {
+ return array(
+ 'tables' => array( 'image' ),
+ 'fields' => array(
+ 'img_name AS title',
+ 'img_sha1 AS value',
+ 'img_user_text',
+ 'img_timestamp'
+ ),
+ 'conds' => array( 'img_sha1' => $this->hash )
+ );
}
- # Create the input form
- $wgOut->addHTML(
- Xml::openElement( 'form', array( 'id' => 'fileduplicatesearch', 'method' => 'get', 'action' => $wgScript ) ) .
- Html::hidden( 'title', SpecialPage::getTitleFor( 'FileDuplicateSearch' )->getPrefixedDbKey() ) .
- Xml::openElement( 'fieldset' ) .
- Xml::element( 'legend', null, wfMsg( 'fileduplicatesearch-legend' ) ) .
- Xml::inputLabel( wfMsg( 'fileduplicatesearch-filename' ), 'filename', 'filename', 50, $filename ) . ' ' .
- Xml::submitButton( wfMsg( 'fileduplicatesearch-submit' ) ) .
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' )
- );
-
- if( $hash != '' ) {
- $align = $wgContLang->alignEnd();
-
- # Show a thumbnail of the file
- $img = wfFindFile( $title );
- if ( $img ) {
- $thumb = $img->transform( array( 'width' => 120, 'height' => 120 ) );
- if( $thumb ) {
- $wgOut->addHTML( '<div style="float:' . $align . '" id="mw-fileduplicatesearch-icon">' .
- $thumb->toHtml( array( 'desc-link' => false ) ) . '<br />' .
- wfMsgExt( 'fileduplicatesearch-info', array( 'parse' ),
- $wgLang->formatNum( $img->getWidth() ),
- $wgLang->formatNum( $img->getHeight() ),
- $wgLang->formatSize( $img->getSize() ),
- $img->getMimeType()
- ) .
- '</div>' );
- }
+ function execute( $par ) {
+ global $wgRequest, $wgOut, $wgLang, $wgScript;
+
+ $this->setHeaders();
+ $this->outputHeader();
+
+ $this->filename = isset( $par ) ? $par : $wgRequest->getText( 'filename' );
+ $this->file = null;
+ $this->hash = '';
+ $title = Title::newFromText( $this->filename, NS_FILE );
+ if( $title && $title->getText() != '' ) {
+ $this->file = wfFindFile( $title );
}
- # Do the query
- $wpp = new FileDuplicateSearchPage( $hash, $filename );
- list( $limit, $offset ) = wfCheckLimits();
- $count = $wpp->doQuery( $offset, $limit );
+ # Create the input form
+ $wgOut->addHTML(
+ Xml::openElement( 'form', array( 'id' => 'fileduplicatesearch', 'method' => 'get', 'action' => $wgScript ) ) .
+ Html::hidden( 'title', $this->getTitle()->getPrefixedDbKey() ) .
+ Xml::openElement( 'fieldset' ) .
+ Xml::element( 'legend', null, wfMsg( 'fileduplicatesearch-legend' ) ) .
+ Xml::inputLabel( wfMsg( 'fileduplicatesearch-filename' ), 'filename', 'filename', 50, $this->filename ) . ' ' .
+ Xml::submitButton( wfMsg( 'fileduplicatesearch-submit' ) ) .
+ Xml::closeElement( 'fieldset' ) .
+ Xml::closeElement( 'form' )
+ );
- # Show a short summary
- if( $count == 1 ) {
- $wgOut->wrapWikiMsg(
- "<p class='mw-fileduplicatesearch-result-1'>\n$1\n</p>",
- array( 'fileduplicatesearch-result-1', $filename )
- );
- } elseif ( $count > 1 ) {
+ if( $this->file ) {
+ $this->hash = $this->file->getSha1();
+ } elseif( $this->filename !== '' ) {
$wgOut->wrapWikiMsg(
- "<p class='mw-fileduplicatesearch-result-n'>\n$1\n</p>",
- array( 'fileduplicatesearch-result-n', $filename, $wgLang->formatNum( $count - 1 ) )
+ "<p class='mw-fileduplicatesearch-noresults'>\n$1\n</p>",
+ array( 'fileduplicatesearch-noresults', wfEscapeWikiText( $this->filename ) )
);
}
+
+ if( $this->hash != '' ) {
+ # Show a thumbnail of the file
+ $img = $this->file;
+ if ( $img ) {
+ $thumb = $img->transform( array( 'width' => 120, 'height' => 120 ) );
+ if( $thumb ) {
+ $wgOut->addHTML( '<div id="mw-fileduplicatesearch-icon">' .
+ $thumb->toHtml( array( 'desc-link' => false ) ) . '<br />' .
+ wfMsgExt( 'fileduplicatesearch-info', array( 'parse' ),
+ $wgLang->formatNum( $img->getWidth() ),
+ $wgLang->formatNum( $img->getHeight() ),
+ $wgLang->formatSize( $img->getSize() ),
+ $img->getMimeType()
+ ) .
+ '</div>' );
+ }
+ }
+
+ $dupes = $this->getDupes();
+ $numRows = count( $dupes );
+
+ # Show a short summary
+ if( $numRows == 1 ) {
+ $wgOut->wrapWikiMsg(
+ "<p class='mw-fileduplicatesearch-result-1'>\n$1\n</p>",
+ array( 'fileduplicatesearch-result-1', wfEscapeWikiText( $this->filename ) )
+ );
+ } elseif ( $numRows ) {
+ $wgOut->wrapWikiMsg(
+ "<p class='mw-fileduplicatesearch-result-n'>\n$1\n</p>",
+ array( 'fileduplicatesearch-result-n', wfEscapeWikiText( $this->filename ),
+ $wgLang->formatNum( $numRows - 1 ) )
+ );
+ }
+
+ $this->showList( $dupes );
+ }
+ }
+
+ /**
+ *
+ * @param Skin $skin
+ * @param File $result
+ * @return string
+ */
+ function formatResult( $skin, $result ) {
+ global $wgContLang, $wgLang;
+
+ $nt = $result->getTitle();
+ $text = $wgContLang->convert( $nt->getText() );
+ $plink = $skin->link(
+ Title::newFromText( $nt->getPrefixedText() ),
+ $text
+ );
+
+ $userText = $result->getUser( 'text' );
+ $user = $skin->link( Title::makeTitle( NS_USER, $userText ), $userText );
+ $time = $wgLang->timeanddate( $result->getTimestamp() );
+
+ return "$plink . . $user . . $time";
}
}
diff --git a/includes/specials/SpecialFilepath.php b/includes/specials/SpecialFilepath.php
index 8bb0890c..08f90fd2 100644
--- a/includes/specials/SpecialFilepath.php
+++ b/includes/specials/SpecialFilepath.php
@@ -40,19 +40,25 @@ class SpecialFilepath extends SpecialPage {
$file = !is_null( $par ) ? $par : $wgRequest->getText( 'file' );
- $title = Title::makeTitleSafe( NS_FILE, $file );
+ $title = Title::newFromText( $file, NS_FILE );
if ( ! $title instanceof Title || $title->getNamespace() != NS_FILE ) {
$this->showForm( $title );
} else {
$file = wfFindFile( $title );
+
if ( $file && $file->exists() ) {
+ // Default behaviour: Use the direct link to the file.
$url = $file->getURL();
$width = $wgRequest->getInt( 'width', -1 );
$height = $wgRequest->getInt( 'height', -1 );
+
+ // If a width is requested...
if ( $width != -1 ) {
$mto = $file->transform( array( 'width' => $width, 'height' => $height ) );
+ // ... and we can
if ( $mto && !$mto->isError() ) {
+ // ... change the URL to point to a thumbnail.
$url = $mto->getURL();
}
}
@@ -64,6 +70,9 @@ class SpecialFilepath extends SpecialPage {
}
}
+ /**
+ * @param $title Title
+ */
function showForm( $title ) {
global $wgOut, $wgScript;
diff --git a/includes/specials/SpecialImport.php b/includes/specials/SpecialImport.php
index 7d1cf0dd..fc904a23 100644
--- a/includes/specials/SpecialImport.php
+++ b/includes/specials/SpecialImport.php
@@ -30,14 +30,15 @@
* @ingroup SpecialPage
*/
class SpecialImport extends SpecialPage {
-
+
private $interwiki = false;
private $namespace;
private $frompage = '';
private $logcomment= false;
private $history = true;
private $includeTemplates = false;
-
+ private $pageLinkDepth;
+
/**
* Constructor
*/
@@ -46,26 +47,27 @@ class SpecialImport extends SpecialPage {
global $wgImportTargetNamespace;
$this->namespace = $wgImportTargetNamespace;
}
-
+
/**
* Execute
*/
function execute( $par ) {
global $wgRequest, $wgUser, $wgOut;
-
+
$this->setHeaders();
$this->outputHeader();
-
+
if ( wfReadOnly() ) {
$wgOut->readOnlyPage();
return;
}
-
- if( !$wgUser->isAllowed( 'import' ) && !$wgUser->isAllowed( 'importupload' ) )
+
+ if( !$wgUser->isAllowedAny( 'import', 'importupload' ) ) {
return $wgOut->permissionRequired( 'import' );
+ }
- # TODO: allow Title::getUserPermissionsErrors() to take an array
- # FIXME: Title::checkSpecialsAndNSPermissions() has a very wierd expectation of what
+ # @todo Allow Title::getUserPermissionsErrors() to take an array
+ # @todo FIXME: Title::checkSpecialsAndNSPermissions() has a very wierd expectation of what
# getUserPermissionsErrors() might actually be used for, hence the 'ns-specialprotected'
$errors = wfMergeErrorArrays(
$this->getTitle()->getUserPermissionsErrors(
@@ -88,7 +90,7 @@ class SpecialImport extends SpecialPage {
}
$this->showForm();
}
-
+
/**
* Do the actual import
*/
@@ -162,7 +164,7 @@ class SpecialImport extends SpecialPage {
# Success!
$wgOut->addWikiMsg( 'importsuccess' );
}
- $wgOut->addWikiText( '<hr />' );
+ $wgOut->addHTML( '<hr />' );
}
}
@@ -290,7 +292,7 @@ class SpecialImport extends SpecialPage {
<td>
</td>
<td class='mw-submit'>" .
- Xml::submitButton( wfMsg( 'import-interwiki-submit' ), $wgUser->getSkin()->tooltipAndAccessKeyAttribs( 'import' ) ) .
+ Xml::submitButton( wfMsg( 'import-interwiki-submit' ), Linker::tooltipAndAccesskeyAttribs( 'import' ) ) .
"</td>
</tr>" .
Xml::closeElement( 'table' ).
@@ -312,8 +314,8 @@ class ImportReporter {
private $mLogItemCount = 0;
function __construct( $importer, $upload, $interwiki , $reason=false ) {
- $this->mOriginalPageOutCallback =
- $importer->setPageOutCallback( array( $this, 'reportPage' ) );
+ $this->mOriginalPageOutCallback =
+ $importer->setPageOutCallback( array( $this, 'reportPage' ) );
$this->mOriginalLogCallback =
$importer->setLogItemCallback( array( $this, 'reportLogItem' ) );
$this->mPageCount = 0;
@@ -326,7 +328,7 @@ class ImportReporter {
global $wgOut;
$wgOut->addHTML( "<ul>\n" );
}
-
+
function reportLogItem( /* ... */ ) {
$this->mLogItemCount++;
if ( is_callable( $this->mOriginalLogCallback ) ) {
@@ -334,21 +336,27 @@ class ImportReporter {
}
}
+ /**
+ * @param Title $title
+ * @param Title $origTitle
+ * @param int $revisionCount
+ * @param $successCount
+ * @param $pageInfo
+ * @return void
+ */
function reportPage( $title, $origTitle, $revisionCount, $successCount, $pageInfo ) {
global $wgOut, $wgUser, $wgLang, $wgContLang;
-
+
$args = func_get_args();
call_user_func_array( $this->mOriginalPageOutCallback, $args );
- $skin = $wgUser->getSkin();
-
$this->mPageCount++;
$localCount = $wgLang->formatNum( $successCount );
$contentCount = $wgContLang->formatNum( $successCount );
if( $successCount > 0 ) {
- $wgOut->addHTML( "<li>" . $skin->linkKnown( $title ) . " " .
+ $wgOut->addHTML( "<li>" . Linker::linkKnown( $title ) . " " .
wfMsgExt( 'import-revision-count', array( 'parsemag', 'escape' ), $localCount ) .
"</li>\n"
);
@@ -382,14 +390,14 @@ class ImportReporter {
$article->updateRevisionOn( $dbw, $nullRevision );
wfRunHooks( 'NewRevisionFromEditComplete', array($article, $nullRevision, $latest, $wgUser) );
} else {
- $wgOut->addHTML( "<li>" . $skin->linkKnown( $title ) . " " .
+ $wgOut->addHTML( "<li>" . Linker::linkKnown( $title ) . " " .
wfMsgHtml( 'import-nonewrevisions' ) . "</li>\n" );
}
}
function close() {
global $wgOut, $wgLang;
-
+
if ( $this->mLogItemCount > 0 ) {
$msg = wfMsgExt( 'imported-log-entries', 'parseinline',
$wgLang->formatNum( $this->mLogItemCount ) );
diff --git a/includes/specials/SpecialIpblocklist.php b/includes/specials/SpecialIpblocklist.php
deleted file mode 100644
index 24d7f008..00000000
--- a/includes/specials/SpecialIpblocklist.php
+++ /dev/null
@@ -1,581 +0,0 @@
-<?php
-/**
- * Implements Special:ipblocklist
- *
- * 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 SpecialPage
- */
-
-/**
- * A special page that lists existing blocks and allows users with the 'block'
- * permission to remove blocks
- *
- * @ingroup SpecialPage
- */
-class IPUnblockForm extends SpecialPage {
- var $ip, $reason, $id;
- var $hideuserblocks, $hidetempblocks, $hideaddressblocks;
-
- function __construct() {
- parent::__construct( 'Ipblocklist' );
- }
-
- /**
- * Main execution point
- *
- * @param $ip part of title: Special:Ipblocklist/<ip>.
- */
- function execute( $ip ) {
- global $wgUser, $wgOut, $wgRequest;
-
- $this->setHeaders();
- $this->outputHeader();
-
- $ip = $wgRequest->getVal( 'ip', $ip );
- $this->ip = trim( $wgRequest->getVal( 'wpUnblockAddress', $ip ) );
- $this->id = $wgRequest->getVal( 'id' );
- $this->reason = $wgRequest->getText( 'wpUnblockReason' );
- $this->hideuserblocks = $wgRequest->getBool( 'hideuserblocks' );
- $this->hidetempblocks = $wgRequest->getBool( 'hidetempblocks' );
- $this->hideaddressblocks = $wgRequest->getBool( 'hideaddressblocks' );
-
- $action = $wgRequest->getText( 'action' );
- $successip = $wgRequest->getVal( 'successip' );
-
- if( $action == 'unblock' || $action == 'submit' && $wgRequest->wasPosted() ) {
- # Check permissions
- if( !$wgUser->isAllowed( 'block' ) ) {
- $wgOut->permissionRequired( 'block' );
- return;
- }
- # Check for database lock
- if( wfReadOnly() ) {
- $wgOut->readOnlyPage();
- return;
- }
-
- # bug 15810: blocked admins should have limited access here
- if ( $wgUser->isBlocked() ) {
- if ( $this->id ) {
- # This doesn't pick up on autoblocks, but admins
- # should have the ipblock-exempt permission anyway
- $block = Block::newFromID( $this->id );
- $user = User::newFromName( $block->mAddress );
- } else {
- $user = User::newFromName( $this->ip );
- }
- $status = IPBlockForm::checkUnblockSelf( $user );
- if ( $status !== true ) {
- throw new ErrorPageError( 'badaccess', $status );
- }
- }
-
- if( $action == 'unblock' ){
- # Show unblock form
- $this->showForm( '' );
- } elseif( $action == 'submit'
- && $wgRequest->wasPosted()
- && $wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ) )
- {
- # Remove blocks and redirect user to success page
- $this->doSubmit();
- }
-
- } elseif( $action == 'success' ) {
- # Inform the user of a successful unblock
- # (No need to check permissions or locks here,
- # if something was done, then it's too late!)
- if ( substr( $successip, 0, 1) == '#' ) {
- // A block ID was unblocked
- $this->showList( $wgOut->parse( wfMsg( 'unblocked-id', $successip ) ) );
- } else {
- // A username/IP was unblocked
- $this->showList( $wgOut->parse( wfMsg( 'unblocked', $successip ) ) );
- }
- } else {
- # Just show the block list
- $this->showList( '' );
- }
- }
-
- /**
- * Generates the unblock form
- *
- * @param $err string: error message
- * @return $out string: HTML form
- */
- function showForm( $err ) {
- global $wgOut, $wgUser, $wgSysopUserBans;
-
- $wgOut->addWikiMsg( 'unblockiptext' );
-
- $action = $this->getTitle()->getLocalURL( 'action=submit' );
-
- if ( $err != '' ) {
- $wgOut->setSubtitle( wfMsg( 'formerror' ) );
- $wgOut->addWikiText( Html::rawElement( 'span', array( 'class' => 'error' ), $err ) . "\n" );
- }
-
- $addressPart = false;
- if ( $this->id ) {
- $block = Block::newFromID( $this->id );
- if ( $block ) {
- $encName = htmlspecialchars( $block->getRedactedName() );
- $encId = $this->id;
- $addressPart = $encName . Html::hidden( 'id', $encId );
- $ipa = wfMsgHtml( $wgSysopUserBans ? 'ipadressorusername' : 'ipaddress' );
- }
- }
- if ( !$addressPart ) {
- $addressPart = Xml::input( 'wpUnblockAddress', 40, $this->ip, array( 'type' => 'text', 'tabindex' => '1' ) );
- $ipa = Xml::label( wfMsg( $wgSysopUserBans ? 'ipadressorusername' : 'ipaddress' ), 'wpUnblockAddress' );
- }
-
- $wgOut->addHTML(
- Html::openElement( 'form', array( 'method' => 'post', 'action' => $action, 'id' => 'unblockip' ) ) .
- Html::openElement( 'fieldset' ) .
- Html::element( 'legend', null, wfMsg( 'ipb-unblock' ) ) .
- Html::openElement( 'table', array( 'id' => 'mw-unblock-table' ) ).
- "<tr>
- <td class='mw-label'>
- {$ipa}
- </td>
- <td class='mw-input'>
- {$addressPart}
- </td>
- </tr>
- <tr>
- <td class='mw-label'>" .
- Xml::label( wfMsg( 'ipbreason' ), 'wpUnblockReason' ) .
- "</td>
- <td class='mw-input'>" .
- Xml::input( 'wpUnblockReason', 40, $this->reason, array( 'type' => 'text', 'tabindex' => '2' ) ) .
- "</td>
- </tr>
- <tr>
- <td>&#160;</td>
- <td class='mw-submit'>" .
- Xml::submitButton( wfMsg( 'ipusubmit' ), array( 'name' => 'wpBlock', 'tabindex' => '3' ) ) .
- "</td>
- </tr>" .
- Html::closeElement( 'table' ) .
- Html::closeElement( 'fieldset' ) .
- Html::hidden( 'wpEditToken', $wgUser->editToken() ) .
- Html::closeElement( 'form' ) . "\n"
- );
-
- }
-
- const UNBLOCK_SUCCESS = 0; // Success
- const UNBLOCK_NO_SUCH_ID = 1; // No such block ID
- const UNBLOCK_USER_NOT_BLOCKED = 2; // IP wasn't blocked
- const UNBLOCK_BLOCKED_AS_RANGE = 3; // IP is part of a range block
- const UNBLOCK_UNKNOWNERR = 4; // Unknown error
-
- /**
- * Backend code for unblocking. doSubmit() wraps around this.
- * $range is only used when UNBLOCK_BLOCKED_AS_RANGE is returned, in which
- * case it contains the range $ip is part of.
- * @return array array(message key, parameters) on failure, empty array on success
- */
- public static function doUnblock( &$id, &$ip, &$reason, &$range = null, $blocker = null ) {
- if ( $id ) {
- $block = Block::newFromID( $id );
- if ( !$block ) {
- return array( 'ipb_cant_unblock', htmlspecialchars( $id ) );
- }
- $ip = $block->getRedactedName();
- } else {
- $ip = trim( $ip );
- if ( substr( $ip, 0, 1 ) == "#" ) {
- $id = substr( $ip, 1 );
- $block = Block::newFromID( $id );
- if( !$block ) {
- return array( 'ipb_cant_unblock', htmlspecialchars( $id ) );
- }
- $ip = $block->getRedactedName();
- } else {
- # FIXME: do proper sanitisation/cleanup here
- $ip = str_replace( '_', ' ', $ip );
-
- $block = Block::newFromDB( $ip );
- if ( !$block ) {
- return array( 'ipb_cant_unblock', htmlspecialchars( $id ) );
- }
- if( $block->mRangeStart != $block->mRangeEnd && !strstr( $ip, "/" ) ) {
- /* If the specified IP is a single address, and the block is
- * a range block, don't unblock the range. */
- $range = $block->mAddress;
- return array( 'ipb_blocked_as_range', $ip, $range );
- }
- }
- }
- // Yes, this is really necessary
- $id = $block->mId;
-
- # If the name was hidden and the blocking user cannot hide
- # names, then don't allow any block removals...
- if( $blocker && $block->mHideName && !$blocker->isAllowed( 'hideuser' ) ) {
- return array( 'ipb_cant_unblock', htmlspecialchars( $id ) );
- }
-
- # Delete block
- if ( !$block->delete() ) {
- return array( 'ipb_cant_unblock', htmlspecialchars( $id ) );
- }
-
- # Unset _deleted fields as needed
- if( $block->mHideName ) {
- IPBlockForm::unsuppressUserName( $block->mAddress, $block->mUser );
- }
-
- # Make log entry
- $log = new LogPage( 'block' );
- $log->addEntry( 'unblock', Title::makeTitle( NS_USER, $ip ), $reason );
- return array();
- }
-
- function doSubmit() {
- global $wgOut, $wgUser;
-
- $retval = self::doUnblock( $this->id, $this->ip, $this->reason, $range, $wgUser );
- if( !empty( $retval ) ) {
- $key = array_shift( $retval );
- $this->showForm( wfMsgReal( $key, $retval ) );
- return;
- }
-
- # Report to the user
- $success = $this->getTitle()->getFullURL( 'action=success&successip=' . urlencode( $this->ip ) );
- $wgOut->redirect( $success );
- }
-
- function showList( $msg ) {
- global $wgOut, $wgUser;
-
- if ( $msg != '' ) {
- $wgOut->setSubtitle( $msg );
- }
-
- // Purge expired entries on one in every 10 queries
- if ( !mt_rand( 0, 10 ) ) {
- Block::purgeExpired();
- }
-
- $conds = array();
- // Is user allowed to see all the blocks?
- if ( !$wgUser->isAllowed( 'hideuser' ) )
- $conds['ipb_deleted'] = 0;
- if ( $this->ip == '' ) {
- // No extra conditions
- } elseif ( substr( $this->ip, 0, 1 ) == '#' ) {
- $conds['ipb_id'] = substr( $this->ip, 1 );
- // Single IPs
- } elseif ( IP::isIPAddress( $this->ip ) && strpos( $this->ip, '/' ) === false ) {
- $iaddr = IP::toHex( $this->ip );
- if( $iaddr ) {
- # Only scan ranges which start in this /16, this improves search speed
- # Blocks should not cross a /16 boundary.
- $range = substr( $iaddr, 0, 4 );
- // Fixme -- encapsulate this sort of query-building.
- $dbr = wfGetDB( DB_SLAVE );
- $encIp = $dbr->addQuotes( IP::sanitizeIP( $this->ip ) );
- $encAddr = $dbr->addQuotes( $iaddr );
- $conds[] = "(ipb_address = $encIp) OR
- (ipb_range_start" . $dbr->buildLike( $range, $dbr->anyString() ) . " AND
- ipb_range_start <= $encAddr
- AND ipb_range_end >= $encAddr)";
- } else {
- $conds['ipb_address'] = IP::sanitizeIP( $this->ip );
- }
- $conds['ipb_auto'] = 0;
- // IP range
- } elseif ( IP::isIPAddress( $this->ip ) ) {
- $conds['ipb_address'] = Block::normaliseRange( $this->ip );
- $conds['ipb_auto'] = 0;
- } else {
- $user = User::newFromName( $this->ip );
- if ( $user && ( $id = $user->getId() ) != 0 ) {
- $conds['ipb_user'] = $id;
- } else {
- // Uh...?
- $conds['ipb_address'] = $this->ip;
- $conds['ipb_auto'] = 0;
- }
- }
- // Apply filters
- if( $this->hideuserblocks ) {
- $conds['ipb_user'] = 0;
- }
- if( $this->hidetempblocks ) {
- $conds['ipb_expiry'] = 'infinity';
- }
- if( $this->hideaddressblocks ) {
- $conds[] = "ipb_user != 0 OR ipb_range_end > ipb_range_start";
- }
-
- // Search form
- $wgOut->addHTML( $this->searchForm() );
-
- // Check for other blocks, i.e. global/tor blocks
- $otherBlockLink = array();
- wfRunHooks( 'OtherBlockLogLink', array( &$otherBlockLink, $this->ip ) );
-
- // Show additional header for the local block only when other blocks exists.
- // Not necessary in a standard installation without such extensions enabled
- if( count( $otherBlockLink ) ) {
- $wgOut->addHTML(
- Html::rawElement( 'h2', array(), wfMsg( 'ipblocklist-localblock' ) ) . "\n"
- );
- }
- $pager = new IPBlocklistPager( $this, $conds );
- if ( $pager->getNumRows() ) {
- $wgOut->addHTML(
- $pager->getNavigationBar() .
- Html::rawElement( 'ul', null, $pager->getBody() ) .
- $pager->getNavigationBar()
- );
- } elseif ( $this->ip != '') {
- $wgOut->addWikiMsg( 'ipblocklist-no-results' );
- } else {
- $wgOut->addWikiMsg( 'ipblocklist-empty' );
- }
-
- if( count( $otherBlockLink ) ) {
- $wgOut->addHTML(
- Html::rawElement( 'h2', array(), wfMsgExt( 'ipblocklist-otherblocks', 'parseinline', count( $otherBlockLink ) ) ) . "\n"
- );
- $list = '';
- foreach( $otherBlockLink as $link ) {
- $list .= Html::rawElement( 'li', array(), $link ) . "\n";
- }
- $wgOut->addHTML( Html::rawElement( 'ul', array( 'class' => 'mw-ipblocklist-otherblocks' ), $list ) . "\n" );
- }
-
- }
-
- function searchForm() {
- global $wgScript, $wgLang;
-
- $showhide = array( wfMsg( 'show' ), wfMsg( 'hide' ) );
- $nondefaults = array();
- if( $this->hideuserblocks ) {
- $nondefaults['hideuserblocks'] = $this->hideuserblocks;
- }
- if( $this->hidetempblocks ) {
- $nondefaults['hidetempblocks'] = $this->hidetempblocks;
- }
- if( $this->hideaddressblocks ) {
- $nondefaults['hideaddressblocks'] = $this->hideaddressblocks;
- }
- $ubLink = $this->makeOptionsLink( $showhide[1-$this->hideuserblocks],
- array( 'hideuserblocks' => 1-$this->hideuserblocks ), $nondefaults);
- $tbLink = $this->makeOptionsLink( $showhide[1-$this->hidetempblocks],
- array( 'hidetempblocks' => 1-$this->hidetempblocks ), $nondefaults);
- $sipbLink = $this->makeOptionsLink( $showhide[1-$this->hideaddressblocks],
- array( 'hideaddressblocks' => 1-$this->hideaddressblocks ), $nondefaults);
-
- $links = array();
- $links[] = wfMsgHtml( 'ipblocklist-sh-userblocks', $ubLink );
- $links[] = wfMsgHtml( 'ipblocklist-sh-tempblocks', $tbLink );
- $links[] = wfMsgHtml( 'ipblocklist-sh-addressblocks', $sipbLink );
- $hl = $wgLang->pipeList( $links );
-
- return
- Html::rawElement( 'form', array( 'action' => $wgScript ),
- Html::hidden( 'title', $this->getTitle()->getPrefixedDbKey() ) .
- Html::openElement( 'fieldset' ) .
- Html::element( 'legend', null, wfMsg( 'ipblocklist-legend' ) ) .
- Xml::inputLabel( wfMsg( 'ipblocklist-username' ), 'ip', 'ip', /* size */ false, $this->ip ) .
- '&#160;' .
- Xml::submitButton( wfMsg( 'ipblocklist-submit' ) ) . '<br />' .
- $hl .
- Html::closeElement( 'fieldset' )
- );
- }
-
- /**
- * Makes change an option link which carries all the other options
- *
- * @param $title see Title
- * @param $override Array: special query string options, will override the
- * ones in $options
- * @param $options Array: query string options
- * @param $active Boolean: whether to display the link in bold
- */
- function makeOptionsLink( $title, $override, $options, $active = false ) {
- global $wgUser;
- $sk = $wgUser->getSkin();
- $params = $override + $options;
- return $sk->link( $this->getTitle(), htmlspecialchars( $title ),
- ( $active ? array( 'style'=>'font-weight: bold;' ) : array() ), $params, array( 'known' ) );
- }
-
- /**
- * Callback function to output a block
- */
- function formatRow( $block ) {
- global $wgUser, $wgLang, $wgBlockAllowsUTEdit;
-
- wfProfileIn( __METHOD__ );
-
- static $sk=null, $msg=null;
-
- if( is_null( $sk ) )
- $sk = $wgUser->getSkin();
- if( is_null( $msg ) ) {
- $msg = array();
- $keys = array( 'infiniteblock', 'expiringblock', 'unblocklink', 'change-blocklink',
- 'anononlyblock', 'createaccountblock', 'noautoblockblock', 'emailblock', 'blocklist-nousertalk', 'blocklistline' );
- foreach( $keys as $key ) {
- $msg[$key] = wfMsgHtml( $key );
- }
- }
-
- # Prepare links to the blocker's user and talk pages
- $blocker_id = $block->getBy();
- $blocker_name = $block->getByName();
- $blocker = $sk->userLink( $blocker_id, $blocker_name );
- $blocker .= $sk->userToolLinks( $blocker_id, $blocker_name );
-
- # Prepare links to the block target's user and contribs. pages (as applicable, don't do it for autoblocks)
- if( $block->mAuto ) {
- $target = $block->getRedactedName(); # Hide the IP addresses of auto-blocks; privacy
- } else {
- $target = $sk->userLink( $block->mUser, $block->mAddress )
- . $sk->userToolLinks( $block->mUser, $block->mAddress, false, Linker::TOOL_LINKS_NOBLOCK );
- }
-
- $formattedTime = htmlspecialchars( $wgLang->timeanddate( $block->mTimestamp, true ) );
-
- $properties = array();
- $properties[] = Block::formatExpiry( $block->mExpiry );
- if ( $block->mAnonOnly ) {
- $properties[] = $msg['anononlyblock'];
- }
- if ( $block->mCreateAccount ) {
- $properties[] = $msg['createaccountblock'];
- }
- if (!$block->mEnableAutoblock && $block->mUser ) {
- $properties[] = $msg['noautoblockblock'];
- }
-
- if ( $block->mBlockEmail && $block->mUser ) {
- $properties[] = $msg['emailblock'];
- }
-
- if ( !$block->mAllowUsertalk && $wgBlockAllowsUTEdit ) {
- $properties[] = $msg['blocklist-nousertalk'];
- }
-
- $properties = $wgLang->commaList( $properties );
-
- $line = wfMsgReplaceArgs( $msg['blocklistline'], array( $formattedTime, $blocker, $target, $properties ) );
-
- $changeblocklink = '';
- $toolLinks = '';
- if ( $wgUser->isAllowed( 'block' ) ) {
- $unblocklink = $sk->link( $this->getTitle(),
- $msg['unblocklink'],
- array(),
- array( 'action' => 'unblock', 'id' => $block->mId ),
- 'known' );
-
- # Create changeblocklink for all blocks with exception of autoblocks
- if( !$block->mAuto ) {
- $changeblocklink = wfMsgExt( 'pipe-separator', 'escapenoentities' ) .
- $sk->link( SpecialPage::getTitleFor( 'Blockip', $block->mAddress ),
- $msg['change-blocklink'],
- array(), array(), 'known' );
- }
- $toolLinks = "($unblocklink$changeblocklink)";
- }
-
- $comment = $sk->commentBlock( htmlspecialchars($block->mReason) );
-
- $s = "{$line} $comment";
- if ( $block->mHideName )
- $s = '<span class="history-deleted">' . $s . '</span>';
-
- wfProfileOut( __METHOD__ );
- return "<li>$s $toolLinks</li>\n";
- }
-}
-
-/**
- * @todo document
- * @ingroup Pager
- */
-class IPBlocklistPager extends ReverseChronologicalPager {
- public $mForm, $mConds;
-
- function __construct( $form, $conds = array() ) {
- $this->mForm = $form;
- $this->mConds = $conds;
- parent::__construct();
- }
-
- function getStartBody() {
- wfProfileIn( __METHOD__ );
- # Do a link batch query
- $this->mResult->seek( 0 );
- $lb = new LinkBatch;
-
- /*
- while ( $row = $this->mResult->fetchObject() ) {
- $lb->addObj( Title::makeTitleSafe( NS_USER, $row->user_name ) );
- $lb->addObj( Title::makeTitleSafe( NS_USER_TALK, $row->user_name ) );
- $lb->addObj( Title::makeTitleSafe( NS_USER, $row->ipb_address ) );
- $lb->addObj( Title::makeTitleSafe( NS_USER_TALK, $row->ipb_address ) );
- }*/
- # Faster way
- # Usernames and titles are in fact related by a simple substitution of space -> underscore
- # The last few lines of Title::secureAndSplit() tell the story.
- foreach ( $this->mResult as $row ) {
- $name = str_replace( ' ', '_', $row->ipb_by_text );
- $lb->add( NS_USER, $name );
- $lb->add( NS_USER_TALK, $name );
- $name = str_replace( ' ', '_', $row->ipb_address );
- $lb->add( NS_USER, $name );
- $lb->add( NS_USER_TALK, $name );
- }
- $lb->execute();
- wfProfileOut( __METHOD__ );
- return '';
- }
-
- function formatRow( $row ) {
- $block = new Block;
- $block->initFromRow( $row );
- return $this->mForm->formatRow( $block );
- }
-
- function getQueryInfo() {
- $conds = $this->mConds;
- $conds[] = 'ipb_expiry>' . $this->mDb->addQuotes( $this->mDb->timestamp() );
- return array(
- 'tables' => 'ipblocks',
- 'fields' => '*',
- 'conds' => $conds,
- );
- }
-
- function getIndexField() {
- return 'ipb_timestamp';
- }
-}
diff --git a/includes/specials/SpecialLinkSearch.php b/includes/specials/SpecialLinkSearch.php
index 9dee9d5a..bef859a2 100644
--- a/includes/specials/SpecialLinkSearch.php
+++ b/includes/specials/SpecialLinkSearch.php
@@ -21,74 +21,10 @@
* @ingroup SpecialPage
* @author Brion Vibber
*/
-
-/**
- * Special:LinkSearch to search the external-links table.
- */
-function wfSpecialLinkSearch( $par ) {
-
- list( $limit, $offset ) = wfCheckLimits();
- global $wgOut, $wgUrlProtocols, $wgMiserMode, $wgLang;
- $target = $GLOBALS['wgRequest']->getVal( 'target', $par );
- $namespace = $GLOBALS['wgRequest']->getIntorNull( 'namespace', null );
-
- $protocols_list[] = '';
- foreach( $wgUrlProtocols as $prot ) {
- $protocols_list[] = $prot;
- }
-
- $target2 = $target;
- $protocol = '';
- $pr_sl = strpos($target2, '//' );
- $pr_cl = strpos($target2, ':' );
- if ( $pr_sl ) {
- // For protocols with '//'
- $protocol = substr( $target2, 0 , $pr_sl+2 );
- $target2 = substr( $target2, $pr_sl+2 );
- } elseif ( !$pr_sl && $pr_cl ) {
- // For protocols without '//' like 'mailto:'
- $protocol = substr( $target2, 0 , $pr_cl+1 );
- $target2 = substr( $target2, $pr_cl+1 );
- } elseif ( $protocol == '' && $target2 != '' ) {
- // default
- $protocol = 'http://';
- }
- if ( !in_array( $protocol, $protocols_list ) ) {
- // unsupported protocol, show original search request
- $target2 = $target;
- $protocol = '';
- }
-
- $self = Title::makeTitle( NS_SPECIAL, 'Linksearch' );
-
- $wgOut->allowClickjacking();
- $wgOut->addWikiMsg( 'linksearch-text', '<nowiki>' . $wgLang->commaList( $wgUrlProtocols ) . '</nowiki>' );
- $s = Xml::openElement( 'form', array( 'id' => 'mw-linksearch-form', 'method' => 'get', 'action' => $GLOBALS['wgScript'] ) ) .
- Html::hidden( 'title', $self->getPrefixedDbKey() ) .
- '<fieldset>' .
- Xml::element( 'legend', array(), wfMsg( 'linksearch' ) ) .
- Xml::inputLabel( wfMsg( 'linksearch-pat' ), 'target', 'target', 50, $target ) . ' ';
- if ( !$wgMiserMode ) {
- $s .= Xml::label( wfMsg( 'linksearch-ns' ), 'namespace' ) . ' ' .
- Xml::namespaceSelector( $namespace, '' );
- }
- $s .= Xml::submitButton( wfMsg( 'linksearch-ok' ) ) .
- '</fieldset>' .
- Xml::closeElement( 'form' );
- $wgOut->addHTML( $s );
-
- if( $target != '' ) {
- $searcher = new LinkSearchPage;
- $searcher->setParams( array(
- 'query' => $target2,
- 'namespace' => $namespace,
- 'protocol' => $protocol ) );
- $searcher->doQuery( $offset, $limit );
- }
-}
/**
+ * Special:LinkSearch to search the external-links table.
* @ingroup SpecialPage
*/
class LinkSearchPage extends QueryPage {
@@ -98,8 +34,75 @@ class LinkSearchPage extends QueryPage {
$this->mProt = $params['protocol'];
}
- function getName() {
- return 'LinkSearch';
+ function __construct( $name = 'LinkSearch' ) {
+ parent::__construct( $name );
+ }
+
+ function isCacheable() {
+ return false;
+ }
+
+ function execute( $par ) {
+ global $wgOut, $wgRequest, $wgUrlProtocols, $wgMiserMode, $wgLang;
+ $this->setHeaders();
+ $wgOut->allowClickjacking();
+
+ $target = $wgRequest->getVal( 'target', $par );
+ $namespace = $wgRequest->getIntorNull( 'namespace', null );
+
+ $protocols_list = array();
+ foreach( $wgUrlProtocols as $prot ) {
+ if ( $prot !== '//' ) {
+ $protocols_list[] = $prot;
+ }
+ }
+
+ $target2 = $target;
+ $protocol = '';
+ $pr_sl = strpos($target2, '//' );
+ $pr_cl = strpos($target2, ':' );
+ if ( $pr_sl ) {
+ // For protocols with '//'
+ $protocol = substr( $target2, 0 , $pr_sl+2 );
+ $target2 = substr( $target2, $pr_sl+2 );
+ } elseif ( !$pr_sl && $pr_cl ) {
+ // For protocols without '//' like 'mailto:'
+ $protocol = substr( $target2, 0 , $pr_cl+1 );
+ $target2 = substr( $target2, $pr_cl+1 );
+ } elseif ( $protocol == '' && $target2 != '' ) {
+ // default
+ $protocol = 'http://';
+ }
+ if ( $protocol != '' && !in_array( $protocol, $protocols_list ) ) {
+ // unsupported protocol, show original search request
+ $target2 = $target;
+ $protocol = '';
+ }
+
+ $out->addWikiMsg( 'linksearch-text', '<nowiki>' . $this->getLanguage()->commaList( $protocols_list ) . '</nowiki>' );
+ $s = Xml::openElement( 'form', array( 'id' => 'mw-linksearch-form', 'method' => 'get', 'action' => $GLOBALS['wgScript'] ) ) .
+ Html::hidden( 'title', $self->getPrefixedDbKey() ) .
+ '<fieldset>' .
+ Xml::element( 'legend', array(), wfMsg( 'linksearch' ) ) .
+ Xml::inputLabel( wfMsg( 'linksearch-pat' ), 'target', 'target', 50, $target ) . ' ';
+ if ( !$wgMiserMode ) {
+ $s .= Xml::label( wfMsg( 'linksearch-ns' ), 'namespace' ) . ' ' .
+ Xml::namespaceSelector( $namespace, '' );
+ }
+ $s .= Xml::submitButton( wfMsg( 'linksearch-ok' ) ) .
+ '</fieldset>' .
+ Xml::closeElement( 'form' );
+ $wgOut->addHTML( $s );
+
+ if( $target != '' ) {
+ $this->setParams( array(
+ 'query' => $target2,
+ 'namespace' => $namespace,
+ 'protocol' => $protocol ) );
+ parent::execute( $par );
+ if( $this->mMungedQuery === false )
+ $wgOut->addWikiMsg( 'linksearch-error' );
+ }
}
/**
@@ -111,15 +114,17 @@ class LinkSearchPage extends QueryPage {
/**
* Return an appropriately formatted LIKE query and the clause
+ *
+ * @return array
*/
- static function mungeQuery( $query , $prot ) {
+ static function mungeQuery( $query, $prot ) {
$field = 'el_index';
$rv = LinkFilter::makeLikeArray( $query , $prot );
- if ($rv === false) {
+ if ( $rv === false ) {
// LinkFilter doesn't handle wildcard in IP, so we'll have to munge here.
if (preg_match('/^(:?[0-9]{1,3}\.)+\*\s*$|^(:?[0-9]{1,3}\.){3}[0-9]{1,3}:[0-9]*\*\s*$/', $query)) {
$dbr = wfGetDB( DB_SLAVE );
- $rv = array( $prot . rtrim($query, " \t*"), $dbr->anyString() );
+ $rv = array( $prot . rtrim( $query, " \t*" ), $dbr->anyString() );
$field = 'el_to';
}
}
@@ -136,35 +141,32 @@ class LinkSearchPage extends QueryPage {
return $params;
}
- function getSQL() {
+ function getQueryInfo() {
global $wgMiserMode;
$dbr = wfGetDB( DB_SLAVE );
- $page = $dbr->tableName( 'page' );
- $externallinks = $dbr->tableName( 'externallinks' );
-
- /* strip everything past first wildcard, so that index-based-only lookup would be done */
- list( $munged, $clause ) = self::mungeQuery( $this->mQuery, $this->mProt );
- $stripped = LinkFilter::keepOneWildcard( $munged );
+ // strip everything past first wildcard, so that
+ // index-based-only lookup would be done
+ list( $this->mMungedQuery, $clause ) = self::mungeQuery(
+ $this->mQuery, $this->mProt );
+ if( $this->mMungedQuery === false )
+ // Invalid query; return no results
+ return array( 'tables' => 'page', 'fields' => 'page_id', 'conds' => '0=1' );
+
+ $stripped = LinkFilter::keepOneWildcard( $this->mMungedQuery );
$like = $dbr->buildLike( $stripped );
-
- $encSQL = '';
- if ( isset ($this->mNs) && !$wgMiserMode )
- $encSQL = 'AND page_namespace=' . $dbr->addQuotes( $this->mNs );
-
- $use_index = $dbr->useIndexClause( $clause );
- return
- "SELECT
- page_namespace AS namespace,
- page_title AS title,
- el_index AS value,
- el_to AS url
- FROM
- $page,
- $externallinks $use_index
- WHERE
- page_id=el_from
- AND $clause $like
- $encSQL";
+ $retval = array (
+ 'tables' => array ( 'page', 'externallinks' ),
+ 'fields' => array ( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'el_index AS value', 'el_to AS url' ),
+ 'conds' => array ( 'page_id = el_from',
+ "$clause $like" ),
+ 'options' => array( 'USE INDEX' => $clause )
+ );
+ if ( isset( $this->mNs ) && !$wgMiserMode ) {
+ $retval['conds']['page_namespace'] = $this->mNs;
+ }
+ return $retval;
}
function formatResult( $skin, $result ) {
@@ -179,7 +181,7 @@ class LinkSearchPage extends QueryPage {
/**
* Override to check query validity.
*/
- function doQuery( $offset, $limit, $shownavigation=true ) {
+ function doQuery( $offset = false, $limit = false ) {
global $wgOut;
list( $this->mMungedQuery, ) = LinkSearchPage::mungeQuery( $this->mQuery, $this->mProt );
if( $this->mMungedQuery === false ) {
@@ -188,7 +190,7 @@ class LinkSearchPage extends QueryPage {
// For debugging
// Generates invalid xhtml with patterns that contain --
//$wgOut->addHTML( "\n<!-- " . htmlspecialchars( $this->mMungedQuery ) . " -->\n" );
- parent::doQuery( $offset, $limit, $shownavigation );
+ parent::doQuery( $offset, $limit );
}
}
@@ -198,7 +200,7 @@ class LinkSearchPage extends QueryPage {
* it as good enough for optimizing sort. The implicit ordering
* from the scan will usually do well enough for our needs.
*/
- function getOrder() {
- return '';
+ function getOrderFields() {
+ return array();
}
}
diff --git a/includes/specials/SpecialListfiles.php b/includes/specials/SpecialListfiles.php
index 350e833b..427de167 100644
--- a/includes/specials/SpecialListfiles.php
+++ b/includes/specials/SpecialListfiles.php
@@ -20,16 +20,38 @@
* @file
* @ingroup SpecialPage
*/
-
-function wfSpecialListfiles( $par = null ) {
- global $wgOut;
- $pager = new ImageListPager( $par );
+class SpecialListFiles extends IncludableSpecialPage {
- $limit = $pager->getForm();
- $body = $pager->getBody();
- $nav = $pager->getNavigationBar();
- $wgOut->addHTML( "$limit<br />\n$body<br />\n$nav" );
+ public function __construct(){
+ parent::__construct( 'Listfiles' );
+ }
+
+ public function execute( $par ){
+ global $wgOut, $wgRequest;
+ $this->setHeaders();
+ $this->outputHeader();
+
+ if ( $this->including() ) {
+ $userName = $par;
+ $search = '';
+ } else {
+ $userName = $wgRequest->getText( 'user', $par );
+ $search = $wgRequest->getText( 'ilsearch', '' );
+ }
+
+ $pager = new ImageListPager( $userName, $search, $this->including() );
+
+ if ( $this->including() ) {
+ $html = $pager->getBody();
+ } else {
+ $form = $pager->getForm();
+ $body = $pager->getBody();
+ $nav = $pager->getNavigationBar();
+ $html = "$form<br />\n$body<br />\n$nav";
+ }
+ $wgOut->addHTML( $html );
+ }
}
/**
@@ -39,46 +61,62 @@ class ImageListPager extends TablePager {
var $mFieldNames = null;
var $mQueryConds = array();
var $mUserName = null;
-
- function __construct( $par = null ) {
+ var $mSearch = '';
+ var $mIncluding = false;
+
+ function __construct( $userName = null, $search = '', $including = false ) {
global $wgRequest, $wgMiserMode;
- if ( $wgRequest->getText( 'sort', 'img_date' ) == 'img_date' ) {
- $this->mDefaultDirection = true;
- } else {
- $this->mDefaultDirection = false;
- }
-
- $userName = $wgRequest->getText( 'user', $par );
+
+ $this->mIncluding = $including;
+
if ( $userName ) {
$nt = Title::newFromText( $userName, NS_USER );
if ( !is_null( $nt ) ) {
$this->mUserName = $nt->getText();
$this->mQueryConds['img_user_text'] = $this->mUserName;
}
- }
-
- $search = $wgRequest->getText( 'ilsearch' );
+ }
+
if ( $search != '' && !$wgMiserMode ) {
- $nt = Title::newFromURL( $search );
+ $this->mSearch = $search;
+ $nt = Title::newFromURL( $this->mSearch );
if ( $nt ) {
$dbr = wfGetDB( DB_SLAVE );
- $this->mQueryConds[] = 'LOWER(img_name)' . $dbr->buildLike( $dbr->anyString(),
- strtolower( $nt->getDBkey() ), $dbr->anyString() );
+ $this->mQueryConds[] = 'LOWER(img_name)' .
+ $dbr->buildLike( $dbr->anyString(),
+ strtolower( $nt->getDBkey() ), $dbr->anyString() );
}
}
+ if ( !$including ) {
+ if ( $wgRequest->getText( 'sort', 'img_date' ) == 'img_date' ) {
+ $this->mDefaultDirection = true;
+ } else {
+ $this->mDefaultDirection = false;
+ }
+ } else {
+ $this->mDefaultDirection = true;
+ }
+
parent::__construct();
}
+ function getTitle() {
+ return SpecialPage::getTitleFor( 'Listfiles' );
+ }
+
+ /**
+ * @return Array
+ */
function getFieldNames() {
if ( !$this->mFieldNames ) {
global $wgMiserMode;
$this->mFieldNames = array(
- 'thumb' => wfMsg( 'listfiles_thumb' ),
'img_timestamp' => wfMsg( 'listfiles_date' ),
'img_name' => wfMsg( 'listfiles_name' ),
- 'img_user_text' => wfMsg( 'listfiles_user' ),
+ 'thumb' => wfMsg( 'listfiles_thumb' ),
'img_size' => wfMsg( 'listfiles_size' ),
+ 'img_user_text' => wfMsg( 'listfiles_user' ),
'img_description' => wfMsg( 'listfiles_description' ),
);
if( !$wgMiserMode ) {
@@ -89,6 +127,9 @@ class ImageListPager extends TablePager {
}
function isFieldSortable( $field ) {
+ if ( $this->mIncluding ) {
+ return false;
+ }
static $sortable = array( 'img_timestamp', 'img_name' );
if ( $field == 'img_size' ) {
# No index for both img_size and img_user_text
@@ -101,7 +142,7 @@ class ImageListPager extends TablePager {
$tables = array( 'image' );
$fields = array_keys( $this->getFieldNames() );
$fields[] = 'img_user';
- $fields[array_search('thumb', $fields)] = 'img_name as thumb';
+ $fields[array_search('thumb', $fields)] = 'img_name AS thumb';
$options = $join_conds = array();
# Depends on $wgMiserMode
@@ -111,7 +152,7 @@ class ImageListPager extends TablePager {
# Need to rewrite this one
foreach ( $fields as &$field ) {
if ( $field == 'count' ) {
- $field = 'COUNT(oi_archive_name) as count';
+ $field = 'COUNT(oi_archive_name) AS count';
}
}
unset( $field );
@@ -120,7 +161,8 @@ class ImageListPager extends TablePager {
if( $dbr->implicitGroupby() ) {
$options = array( 'GROUP BY' => 'img_name' );
} else {
- $columnlist = implode( ',', preg_grep( '/^img/', array_keys( $this->getFieldNames() ) ) );
+ $columnlist = implode( ',',
+ preg_grep( '/^img/', array_keys( $this->getFieldNames() ) ) );
$options = array( 'GROUP BY' => "img_user, $columnlist" );
}
$join_conds = array( 'oldimage' => array( 'LEFT JOIN', 'oi_name = img_name' ) );
@@ -159,7 +201,7 @@ class ImageListPager extends TablePager {
switch ( $field ) {
case 'thumb':
$file = wfLocalFile( $value );
- $thumb = $file->transform( array( 'width' => 180 ) );
+ $thumb = $file->transform( array( 'width' => 180, 'height' => 360 ) );
return $thumb->toHtml( array( 'desc-link' => true ) );
case 'img_timestamp':
return htmlspecialchars( $wgLang->timeanddate( $value, true ) );
@@ -167,12 +209,18 @@ class ImageListPager extends TablePager {
static $imgfile = null;
if ( $imgfile === null ) $imgfile = wfMsg( 'imgfile' );
- $filePage = Title::makeTitle( NS_FILE, $value );
- $link = $this->getSkin()->linkKnown( $filePage, htmlspecialchars( $filePage->getText() ) );
- $image = wfLocalFile( $value );
- $url = $image->getURL();
- $download = Xml::element('a', array( 'href' => $url ), $imgfile );
- return "$link ($download)";
+ // Weird files can maybe exist? Bug 22227
+ $filePage = Title::makeTitleSafe( NS_FILE, $value );
+ if( $filePage ) {
+ $link = $this->getSkin()->linkKnown( $filePage, htmlspecialchars( $filePage->getText() ) );
+ $download = Xml::element( 'a',
+ array( 'href' => wfLocalFile( $filePage )->getURL() ),
+ $imgfile
+ );
+ return "$link ($download)";
+ } else {
+ return htmlspecialchars( $value );
+ }
case 'img_user_text':
if ( $this->mCurrentRow->img_user ) {
$link = $this->getSkin()->link(
@@ -188,34 +236,34 @@ class ImageListPager extends TablePager {
case 'img_description':
return $this->getSkin()->commentBlock( $value );
case 'count':
- return intval($value)+1;
+ return intval( $value ) + 1;
}
}
function getForm() {
- global $wgRequest, $wgScript, $wgMiserMode;
- $search = $wgRequest->getText( 'ilsearch' );
+ global $wgScript, $wgMiserMode;
$inputForm = array();
$inputForm['table_pager_limit_label'] = $this->getLimitSelect();
if ( !$wgMiserMode ) {
- $inputForm['listfiles_search_for'] = Html::input( 'ilsearch', $search, 'text', array(
- 'size' => '40',
- 'maxlength' => '255',
- 'id' => 'mw-ilsearch',
+ $inputForm['listfiles_search_for'] = Html::input( 'ilsearch', $this->mSearch, 'text',
+ array(
+ 'size' => '40',
+ 'maxlength' => '255',
+ 'id' => 'mw-ilsearch',
) );
}
$inputForm['username'] = Html::input( 'user', $this->mUserName, 'text', array(
- 'size' => '40',
- 'maxlength' => '255',
- 'id' => 'mw-listfiles-user',
+ 'size' => '40',
+ 'maxlength' => '255',
+ 'id' => 'mw-listfiles-user',
) );
- $s = Html::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript, 'id' => 'mw-listfiles-form' ) ) .
+ return Html::openElement( 'form',
+ array( 'method' => 'get', 'action' => $wgScript, 'id' => 'mw-listfiles-form' ) ) .
Xml::fieldset( wfMsg( 'listfiles' ) ) .
Xml::buildForm( $inputForm, 'table_pager_limit_submit' ) .
$this->getHiddenFields( array( 'limit', 'ilsearch', 'user' ) ) .
Html::closeElement( 'fieldset' ) .
Html::closeElement( 'form' ) . "\n";
- return $s;
}
function getTableClass() {
@@ -229,7 +277,7 @@ class ImageListPager extends TablePager {
function getSortHeaderClass() {
return 'listfiles_sort ' . parent::getSortHeaderClass();
}
-
+
function getPagingQueries() {
$queries = parent::getPagingQueries();
if ( !is_null( $this->mUserName ) ) {
@@ -243,9 +291,7 @@ class ImageListPager extends TablePager {
function getDefaultQuery() {
$queries = parent::getDefaultQuery();
- if ( !isset( $queries['user'] )
- && !is_null( $this->mUserName ) )
- {
+ if ( !isset( $queries['user'] ) && !is_null( $this->mUserName ) ) {
$queries['user'] = $this->mUserName;
}
return $queries;
diff --git a/includes/specials/SpecialListgrouprights.php b/includes/specials/SpecialListgrouprights.php
index 910ffd08..07e08e77 100644
--- a/includes/specials/SpecialListgrouprights.php
+++ b/includes/specials/SpecialListgrouprights.php
@@ -30,29 +30,27 @@
*/
class SpecialListGroupRights extends SpecialPage {
- var $skin;
-
/**
* Constructor
*/
function __construct() {
- global $wgUser;
parent::__construct( 'Listgrouprights' );
- $this->skin = $wgUser->getSkin();
}
/**
* Show the special page
*/
public function execute( $par ) {
- global $wgOut, $wgImplicitGroups;
+ global $wgImplicitGroups;
global $wgGroupPermissions, $wgRevokePermissions, $wgAddGroups, $wgRemoveGroups;
global $wgGroupsAddToSelf, $wgGroupsRemoveFromSelf;
+ $out = $this->getOutput();
$this->setHeaders();
$this->outputHeader();
+ $out->addModuleStyles( 'mediawiki.special' );
- $wgOut->addHTML(
+ $out->addHTML(
Xml::openElement( 'table', array( 'class' => 'wikitable mw-listgrouprights-table' ) ) .
'<tr>' .
Xml::element( 'th', null, wfMsg( 'listgrouprights-group' ) ) .
@@ -60,7 +58,7 @@ class SpecialListGroupRights extends SpecialPage {
'</tr>'
);
- $allGroups = array_unique( array_merge(
+ $allGroups = array_unique( array_merge(
array_keys( $wgGroupPermissions ),
array_keys( $wgRevokePermissions ),
array_keys( $wgAddGroups ),
@@ -69,34 +67,28 @@ class SpecialListGroupRights extends SpecialPage {
array_keys( $wgGroupsRemoveFromSelf )
) );
asort( $allGroups );
-
+
foreach ( $allGroups as $group ) {
- $permissions = isset( $wgGroupPermissions[$group] )
- ? $wgGroupPermissions[$group]
+ $permissions = isset( $wgGroupPermissions[$group] )
+ ? $wgGroupPermissions[$group]
: array();
$groupname = ( $group == '*' ) // Replace * with a more descriptive groupname
- ? 'all'
- : $group;
+ ? 'all'
+ : $group;
- $msg = wfMsg( 'group-' . $groupname );
- if ( wfEmptyMsg( 'group-' . $groupname, $msg ) || $msg == '' ) {
- $groupnameLocalized = $groupname;
- } else {
- $groupnameLocalized = $msg;
- }
+ $msg = wfMessage( 'group-' . $groupname );
+ $groupnameLocalized = !$msg->isBlank() ? $msg->text() : $groupname;
- $msg = wfMsgForContent( 'grouppage-' . $groupname );
- if ( wfEmptyMsg( 'grouppage-' . $groupname, $msg ) || $msg == '' ) {
- $grouppageLocalized = MWNamespace::getCanonicalName( NS_PROJECT ) . ':' . $groupname;
- } else {
- $grouppageLocalized = $msg;
- }
+ $msg = wfMessage( 'grouppage-' . $groupname )->inContentLanguage();
+ $grouppageLocalized = !$msg->isBlank() ?
+ $msg->text() :
+ MWNamespace::getCanonicalName( NS_PROJECT ) . ':' . $groupname;
if( $group == '*' ) {
// Do not make a link for the generic * group
$grouppage = htmlspecialchars( $groupnameLocalized );
} else {
- $grouppage = $this->skin->link(
+ $grouppage = Linker::link(
Title::newFromText( $grouppageLocalized ),
htmlspecialchars( $groupnameLocalized )
);
@@ -104,7 +96,7 @@ class SpecialListGroupRights extends SpecialPage {
if ( $group === 'user' ) {
// Link to Special:listusers for implicit group 'user'
- $grouplink = '<br />' . $this->skin->link(
+ $grouplink = '<br />' . Linker::link(
SpecialPage::getTitleFor( 'Listusers' ),
wfMsgHtml( 'listgrouprights-members' ),
array(),
@@ -112,7 +104,7 @@ class SpecialListGroupRights extends SpecialPage {
array( 'known', 'noclasses' )
);
} elseif ( !in_array( $group, $wgImplicitGroups ) ) {
- $grouplink = '<br />' . $this->skin->link(
+ $grouplink = '<br />' . Linker::link(
SpecialPage::getTitleFor( 'Listusers' ),
wfMsgHtml( 'listgrouprights-members' ),
array(),
@@ -131,7 +123,7 @@ class SpecialListGroupRights extends SpecialPage {
$removegroupsSelf = isset( $wgGroupsRemoveFromSelf[$group] ) ? $wgGroupsRemoveFromSelf[$group] : array();
$id = $group == '*' ? false : Sanitizer::escapeId( $group );
- $wgOut->addHTML( Html::rawElement( 'tr', array( 'id' => $id ),
+ $out->addHTML( Html::rawElement( 'tr', array( 'id' => $id ),
"
<td>$grouppage$grouplink</td>
<td>" .
@@ -140,10 +132,10 @@ class SpecialListGroupRights extends SpecialPage {
'
) );
}
- $wgOut->addHTML(
+ $out->addHTML(
Xml::closeElement( 'table' ) . "\n<br /><hr />\n"
);
- $wgOut->wrapWikiMsg( "<div class=\"mw-listgrouprights-key\">\n$1\n</div>", 'listgrouprights-key' );
+ $out->wrapWikiMsg( "<div class=\"mw-listgrouprights-key\">\n$1\n</div>", 'listgrouprights-key' );
}
/**
@@ -158,7 +150,7 @@ class SpecialListGroupRights extends SpecialPage {
* @return string List of all granted permissions, separated by comma separator
*/
private static function formatPermissions( $permissions, $revoke, $add, $remove, $addSelf, $removeSelf ) {
- global $wgLang;
+ global $wgLang;
$r = array();
foreach( $permissions as $permission => $granted ) {
@@ -183,25 +175,25 @@ class SpecialListGroupRights extends SpecialPage {
sort( $r );
if( $add === true ){
$r[] = wfMsgExt( 'listgrouprights-addgroup-all', array( 'escape' ) );
- } else if( is_array( $add ) && count( $add ) ) {
+ } elseif( is_array( $add ) && count( $add ) ) {
$add = array_values( array_unique( $add ) );
$r[] = wfMsgExt( 'listgrouprights-addgroup', array( 'parseinline' ), $wgLang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $add ) ), count( $add ) );
}
if( $remove === true ){
$r[] = wfMsgExt( 'listgrouprights-removegroup-all', array( 'escape' ) );
- } else if( is_array( $remove ) && count( $remove ) ) {
+ } elseif( is_array( $remove ) && count( $remove ) ) {
$remove = array_values( array_unique( $remove ) );
$r[] = wfMsgExt( 'listgrouprights-removegroup', array( 'parseinline' ), $wgLang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $remove ) ), count( $remove ) );
}
if( $addSelf === true ){
$r[] = wfMsgExt( 'listgrouprights-addgroup-self-all', array( 'escape' ) );
- } else if( is_array( $addSelf ) && count( $addSelf ) ) {
+ } elseif( is_array( $addSelf ) && count( $addSelf ) ) {
$addSelf = array_values( array_unique( $addSelf ) );
$r[] = wfMsgExt( 'listgrouprights-addgroup-self', array( 'parseinline' ), $wgLang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $addSelf ) ), count( $addSelf ) );
}
if( $removeSelf === true ){
$r[] = wfMsgExt( 'listgrouprights-removegroup-self-all', array( 'escape' ) );
- } else if( is_array( $removeSelf ) && count( $removeSelf ) ) {
+ } elseif( is_array( $removeSelf ) && count( $removeSelf ) ) {
$removeSelf = array_values( array_unique( $removeSelf ) );
$r[] = wfMsgExt( 'listgrouprights-removegroup-self', array( 'parseinline' ), $wgLang->listToText( array_map( array( 'User', 'makeGroupLinkWiki' ), $removeSelf ) ), count( $removeSelf ) );
}
diff --git a/includes/specials/SpecialListredirects.php b/includes/specials/SpecialListredirects.php
index 315047da..acf5fbd9 100644
--- a/includes/specials/SpecialListredirects.php
+++ b/includes/specials/SpecialListredirects.php
@@ -30,22 +30,72 @@
*/
class ListredirectsPage extends QueryPage {
- function getName() { return( 'Listredirects' ); }
- function isExpensive() { return( true ); }
- function isSyndicated() { return( false ); }
- function sortDescending() { return( false ); }
+ function __construct( $name = 'Listredirects' ) {
+ parent::__construct( $name );
+ }
+
+ function isExpensive() { return true; }
+ function isSyndicated() { return false; }
+ function sortDescending() { return false; }
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- $page = $dbr->tableName( 'page' );
- $sql = "SELECT 'Listredirects' AS type, page_title AS title, page_namespace AS namespace,
- 0 AS value FROM $page WHERE page_is_redirect = 1";
- return( $sql );
+ function getQueryInfo() {
+ return array(
+ 'tables' => array( 'p1' => 'page', 'redirect', 'p2' => 'page' ),
+ 'fields' => array( 'p1.page_namespace AS namespace',
+ 'p1.page_title AS title',
+ 'rd_namespace',
+ 'rd_title',
+ 'rd_fragment',
+ 'rd_interwiki',
+ 'p2.page_id AS redirid' ),
+ 'conds' => array( 'p1.page_is_redirect' => 1 ),
+ 'join_conds' => array( 'redirect' => array(
+ 'LEFT JOIN', 'rd_from=p1.page_id' ),
+ 'p2' => array( 'LEFT JOIN', array(
+ 'p2.page_namespace=rd_namespace',
+ 'p2.page_title=rd_title' ) ) )
+ );
}
- function formatResult( $skin, $result ) {
- global $wgContLang;
+ function getOrderFields() {
+ return array ( 'p1.page_namespace', 'p1.page_title' );
+ }
+ /**
+ * Cache page existence for performance
+ *
+ * @param $db DatabaseBase
+ * @param $res ResultWrapper
+ */
+ function preprocessResults( $db, $res ) {
+ $batch = new LinkBatch;
+ foreach ( $res as $row ) {
+ $batch->add( $row->namespace, $row->title );
+ $batch->addObj( $this->getRedirectTarget( $row ) );
+ }
+ $batch->execute();
+
+ // Back to start for display
+ if ( $db->numRows( $res ) > 0 ) {
+ // If there are no rows we get an error seeking.
+ $db->dataSeek( $res, 0 );
+ }
+ }
+
+ protected function getRedirectTarget( $row ) {
+ if ( isset( $row->rd_title ) ) {
+ return Title::makeTitle( $row->rd_namespace,
+ $row->rd_title, $row->rd_fragment,
+ $row->rd_interwiki
+ );
+ } else {
+ $title = Title::makeTitle( $row->namespace, $row->title );
+ $article = new Article( $title );
+ return $article->getRedirectTarget();
+ }
+ }
+
+ function formatResult( $skin, $result ) {
# Make a link to the redirect itself
$rd_title = Title::makeTitle( $result->namespace, $result->title );
$rd_link = $skin->link(
@@ -56,25 +106,15 @@ class ListredirectsPage extends QueryPage {
);
# Find out where the redirect leads
- $revision = Revision::newFromTitle( $rd_title );
- if( $revision ) {
+ $target = $this->getRedirectTarget( $result );
+ if( $target ) {
+ global $wgLang;
# Make a link to the destination page
- $target = Title::newFromRedirect( $revision->getText() );
- if( $target ) {
- $arr = $wgContLang->getArrow() . $wgContLang->getDirMark();
- $targetLink = $skin->link( $target );
- return "$rd_link $arr $targetLink";
- } else {
- return "<del>$rd_link</del>";
- }
+ $arr = $wgLang->getArrow() . $wgLang->getDirMark();
+ $targetLink = $skin->link( $target );
+ return "$rd_link $arr $targetLink";
} else {
return "<del>$rd_link</del>";
}
}
}
-
-function wfSpecialListredirects() {
- list( $limit, $offset ) = wfCheckLimits();
- $lrp = new ListredirectsPage();
- $lrp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialListusers.php b/includes/specials/SpecialListusers.php
index abc0363a..0531444a 100644
--- a/includes/specials/SpecialListusers.php
+++ b/includes/specials/SpecialListusers.php
@@ -41,7 +41,7 @@ class UsersPager extends AlphabeticPager {
if ( $parms[0] != '' && ( in_array( $par, User::getAllGroups() ) || in_array( $par, $symsForAll ) ) ) {
$this->requestedGroup = $par;
$un = $wgRequest->getText( 'username' );
- } else if ( count( $parms ) == 2 ) {
+ } elseif ( count( $parms ) == 2 ) {
$this->requestedGroup = $parms[0];
$un = $parms[1];
} else {
@@ -64,6 +64,9 @@ class UsersPager extends AlphabeticPager {
parent::__construct();
}
+ function getTitle() {
+ return SpecialPage::getTitleFor( 'Listusers' );
+ }
function getIndexField() {
return $this->creationSort ? 'user_id' : 'user_name';
@@ -74,13 +77,16 @@ class UsersPager extends AlphabeticPager {
$dbr = wfGetDB( DB_SLAVE );
$conds = array();
// Don't show hidden names
- if( !$wgUser->isAllowed('hideuser') )
+ if( !$wgUser->isAllowed('hideuser') ) {
$conds[] = 'ipb_deleted IS NULL';
+ }
+
+ $options = array();
+
if( $this->requestedGroup != '' ) {
$conds['ug_group'] = $this->requestedGroup;
- $useIndex = '';
} else {
- $useIndex = $dbr->useIndexClause( $this->creationSort ? 'PRIMARY' : 'user_name');
+ //$options['USE INDEX'] = $this->creationSort ? 'PRIMARY' : 'user_name';
}
if( $this->requestedUser != '' ) {
# Sorted either by account creation or name
@@ -94,11 +100,10 @@ class UsersPager extends AlphabeticPager {
$conds[] = 'user_editcount > 0';
}
- list ($user,$user_groups,$ipblocks) = $dbr->tableNamesN('user','user_groups','ipblocks');
+ $options['GROUP BY'] = $this->creationSort ? 'user_id' : 'user_name';
$query = array(
- 'tables' => " $user $useIndex LEFT JOIN $user_groups ON user_id=ug_user
- LEFT JOIN $ipblocks ON user_id=ipb_user AND ipb_deleted=1 AND ipb_auto=0 ",
+ 'tables' => array( 'user', 'user_groups', 'ipblocks'),
'fields' => array(
$this->creationSort ? 'MAX(user_name) AS user_name' : 'user_name',
$this->creationSort ? 'user_id' : 'MAX(user_id) AS user_id',
@@ -108,7 +113,11 @@ class UsersPager extends AlphabeticPager {
'MIN(user_registration) AS creation',
'MAX(ipb_deleted) AS ipb_deleted' // block/hide status
),
- 'options' => array('GROUP BY' => $this->creationSort ? 'user_id' : 'user_name'),
+ 'options' => $options,
+ 'join_conds' => array(
+ 'user_groups' => array( 'LEFT JOIN', 'user_id=ug_user' ),
+ 'ipblocks' => array( 'LEFT JOIN', 'user_id=ipb_user AND ipb_deleted=1 AND ipb_auto=0' ),
+ ),
'conds' => $conds
);
@@ -123,7 +132,7 @@ class UsersPager extends AlphabeticPager {
return '';
$userPage = Title::makeTitle( NS_USER, $row->user_name );
- $name = $this->getSkin()->link( $userPage, htmlspecialchars( $userPage->getText() ) );
+ $name = Linker::link( $userPage, htmlspecialchars( $userPage->getText() ) );
$groups_list = self::getGroups( $row->user_id );
if( count( $groups_list ) > 0 ) {
@@ -247,7 +256,7 @@ class UsersPager extends AlphabeticPager {
*/
protected static function getGroups( $uid ) {
$user = User::newFromId( $uid );
- $groups = array_diff( $user->getEffectiveGroups(), $user->getImplicitGroups() );
+ $groups = array_diff( $user->getEffectiveGroups(), User::getImplicitGroups() );
return $groups;
}
@@ -266,25 +275,42 @@ class UsersPager extends AlphabeticPager {
}
/**
- * constructor
- * $par string (optional) A group to list users from
+ * @ingroup SpecialPage
*/
-function wfSpecialListusers( $par = null ) {
- global $wgOut;
-
- $up = new UsersPager($par);
-
- # getBody() first to check, if empty
- $usersbody = $up->getBody();
- $s = Xml::openElement( 'div', array('class' => 'mw-spcontent') );
- $s .= $up->getPageHeader();
- if( $usersbody ) {
- $s .= $up->getNavigationBar();
- $s .= '<ul>' . $usersbody . '</ul>';
- $s .= $up->getNavigationBar() ;
- } else {
- $s .= '<p>' . wfMsgHTML('listusers-noresult') . '</p>';
- };
- $s .= Xml::closeElement( 'div' );
- $wgOut->addHTML( $s );
+class SpecialListUsers extends SpecialPage {
+
+ /**
+ * Constructor
+ */
+ public function __construct() {
+ parent::__construct( 'Listusers' );
+ }
+
+ /**
+ * Show the special page
+ *
+ * @param $par string (optional) A group to list users from
+ */
+ public function execute( $par ) {
+ global $wgOut;
+
+ $this->setHeaders();
+ $this->outputHeader();
+
+ $up = new UsersPager( $par );
+
+ # getBody() first to check, if empty
+ $usersbody = $up->getBody();
+
+ $s = $up->getPageHeader();
+ if( $usersbody ) {
+ $s .= $up->getNavigationBar();
+ $s .= Html::rawElement( 'ul', array(), $usersbody );
+ $s .= $up->getNavigationBar();
+ } else {
+ $s .= wfMessage( 'listusers-noresult' )->parseAsBlock();
+ }
+
+ $wgOut->addHTML( $s );
+ }
}
diff --git a/includes/specials/SpecialLockdb.php b/includes/specials/SpecialLockdb.php
index aad3cea4..5c861b31 100644
--- a/includes/specials/SpecialLockdb.php
+++ b/includes/specials/SpecialLockdb.php
@@ -34,12 +34,13 @@ class SpecialLockdb extends SpecialPage {
}
public function execute( $par ) {
- global $wgUser, $wgOut, $wgRequest;
+ global $wgUser, $wgRequest;
$this->setHeaders();
- if( !$wgUser->isAllowed( 'siteadmin' ) ) {
- $wgOut->permissionRequired( 'siteadmin' );
+ # Permission check
+ if( !$this->userCanExecute( $wgUser ) ) {
+ $this->displayRestrictionError();
return;
}
@@ -57,7 +58,7 @@ class SpecialLockdb extends SpecialPage {
if ( $action == 'success' ) {
$this->showSuccess();
- } else if ( $action == 'submit' && $wgRequest->wasPosted() &&
+ } elseif ( $action == 'submit' && $wgRequest->wasPosted() &&
$wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ) ) {
$this->doSubmit();
} else {
@@ -109,7 +110,10 @@ class SpecialLockdb extends SpecialPage {
$this->showForm( wfMsg( 'locknoconfirm' ) );
return;
}
- $fp = @fopen( $wgReadOnlyFile, 'w' );
+
+ wfSuppressWarnings();
+ $fp = fopen( $wgReadOnlyFile, 'w' );
+ wfRestoreWarnings();
if ( false === $fp ) {
# This used to show a file not found error, but the likeliest reason for fopen()
@@ -119,8 +123,14 @@ class SpecialLockdb extends SpecialPage {
return;
}
fwrite( $fp, $this->reason );
- fwrite( $fp, "\n<p>(by " . $wgUser->getName() . " at " .
- $wgContLang->timeanddate( wfTimestampNow() ) . ")</p>\n" );
+ $timestamp = wfTimestampNow();
+ fwrite( $fp, "\n<p>" . wfMsgExt(
+ 'lockedbyandtime',
+ array( 'content', 'parsemag' ),
+ $wgUser->getName(),
+ $wgContLang->date( $timestamp ),
+ $wgContLang->time( $timestamp )
+ ) . "</p>\n" );
fclose( $fp );
$wgOut->redirect( $this->getTitle()->getFullURL( 'action=success' ) );
diff --git a/includes/specials/SpecialLog.php b/includes/specials/SpecialLog.php
index a2af8de5..d8f6d8cf 100644
--- a/includes/specials/SpecialLog.php
+++ b/includes/specials/SpecialLog.php
@@ -95,10 +95,10 @@ class SpecialLog extends SpecialPage {
}
private function show( FormOptions $opts, array $extraConds ) {
- global $wgOut, $wgUser;
+ global $wgOut;
# Create a LogPager item to get the results and a LogEventsList item to format them...
- $loglist = new LogEventsList( $wgUser->getSkin(), $wgOut, 0 );
+ $loglist = new LogEventsList( $this->getSkin(), $wgOut, 0 );
$pager = new LogPager( $loglist, $opts->getValue( 'type' ), $opts->getValue( 'user' ),
$opts->getValue( 'page' ), $opts->getValue( 'pattern' ), $extraConds, $opts->getValue( 'year' ),
$opts->getValue( 'month' ), $opts->getValue( 'tagfilter' ) );
@@ -106,6 +106,11 @@ class SpecialLog extends SpecialPage {
# Set title and add header
$loglist->showHeader( $pager->getType() );
+ # Set relevant user
+ if ( $pager->getUser() ) {
+ $this->getSkin()->setRelevantUser( User::newFromName( $pager->getUser() ) );
+ }
+
# Show form options
$loglist->showOptions( $pager->getType(), $pager->getUser(), $pager->getPage(), $pager->getPattern(),
$pager->getYear(), $pager->getMonth(), $pager->getFilterParams(), $opts->getValue( 'tagfilter' ) );
diff --git a/includes/specials/SpecialLonelypages.php b/includes/specials/SpecialLonelypages.php
index 0788037f..0800e43c 100644
--- a/includes/specials/SpecialLonelypages.php
+++ b/includes/specials/SpecialLonelypages.php
@@ -29,9 +29,10 @@
*/
class LonelyPagesPage extends PageQueryPage {
- function getName() {
- return "Lonelypages";
+ function __construct( $name = 'Lonelypages' ) {
+ parent::__construct( $name );
}
+
function getPageHeader() {
return wfMsgExt( 'lonelypagestext', array( 'parse' ) );
}
@@ -45,35 +46,36 @@ class LonelyPagesPage extends PageQueryPage {
}
function isSyndicated() { return false; }
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $page, $pagelinks, $templatelinks ) = $dbr->tableNamesN( 'page', 'pagelinks', 'templatelinks' );
-
- return
- "SELECT 'Lonelypages' AS type,
- page_namespace AS namespace,
- page_title AS title,
- page_title AS value
- FROM $page
- LEFT JOIN $pagelinks
- ON page_namespace=pl_namespace AND page_title=pl_title
- LEFT JOIN $templatelinks
- ON page_namespace=tl_namespace AND page_title=tl_title
- WHERE pl_namespace IS NULL
- AND page_namespace=".NS_MAIN."
- AND page_is_redirect=0
- AND tl_namespace IS NULL";
-
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'page', 'pagelinks',
+ 'templatelinks' ),
+ 'fields' => array ( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'page_title AS value' ),
+ 'conds' => array ( 'pl_namespace IS NULL',
+ 'page_namespace' => MWNamespace::getContentNamespaces(),
+ 'page_is_redirect' => 0,
+ 'tl_namespace IS NULL' ),
+ 'join_conds' => array (
+ 'pagelinks' => array (
+ 'LEFT JOIN', array (
+ 'pl_namespace = page_namespace',
+ 'pl_title = page_title' ) ),
+ 'templatelinks' => array (
+ 'LEFT JOIN', array (
+ 'tl_namespace = page_namespace',
+ 'tl_title = page_title' ) ) )
+ );
}
-}
-/**
- * Constructor
- */
-function wfSpecialLonelypages() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $lpp = new LonelyPagesPage();
-
- return $lpp->doQuery( $offset, $limit );
+ function getOrderFields() {
+ // For some crazy reason ordering by a constant
+ // causes a filesort in MySQL 5
+ if( count( MWNamespace::getContentNamespaces() ) > 1 ) {
+ return array( 'page_namespace', 'page_title' );
+ } else {
+ return array( 'page_title' );
+ }
+ }
}
diff --git a/includes/specials/SpecialLongpages.php b/includes/specials/SpecialLongpages.php
index cd0f3090..dd60e37d 100644
--- a/includes/specials/SpecialLongpages.php
+++ b/includes/specials/SpecialLongpages.php
@@ -27,22 +27,11 @@
*/
class LongPagesPage extends ShortPagesPage {
- function getName() {
- return "Longpages";
+ function __construct( $name = 'Longpages' ) {
+ parent::__construct( $name );
}
function sortDescending() {
return true;
}
}
-
-/**
- * constructor
- */
-function wfSpecialLongpages() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $lpp = new LongPagesPage();
-
- $lpp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialMIMEsearch.php b/includes/specials/SpecialMIMEsearch.php
index 79683a35..aefe7bf5 100644
--- a/includes/specials/SpecialMIMEsearch.php
+++ b/includes/specials/SpecialMIMEsearch.php
@@ -28,50 +28,62 @@
* @ingroup SpecialPage
*/
class MIMEsearchPage extends QueryPage {
- var $major, $minor;
+ protected $major, $minor;
- function __construct( $major, $minor ) {
- $this->major = $major;
- $this->minor = $minor;
+ function __construct( $name = 'MIMEsearch' ) {
+ parent::__construct( $name );
}
- function getName() { return 'MIMEsearch'; }
-
- /**
- * Due to this page relying upon extra fields being passed in the SELECT it
- * will fail if it's set as expensive and misermode is on
- */
function isExpensive() { return true; }
function isSyndicated() { return false; }
+ function isCacheable() { return false; }
function linkParameters() {
- $arr = array( $this->major, $this->minor );
- $mime = implode( '/', $arr );
- return array( 'mime' => $mime );
+ return array( 'mime' => "{$this->major}/{$this->minor}" );
}
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- $image = $dbr->tableName( 'image' );
- $major = $dbr->addQuotes( $this->major );
- $minor = $dbr->addQuotes( $this->minor );
+ public function getQueryInfo() {
+ return array(
+ 'tables' => array( 'image' ),
+ 'fields' => array( "'" . NS_FILE . "' AS namespace",
+ 'img_name AS title',
+ 'img_major_mime AS value',
+ 'img_size',
+ 'img_width',
+ 'img_height',
+ 'img_user_text',
+ 'img_timestamp' ),
+ 'conds' => array( 'img_major_mime' => $this->major,
+ 'img_minor_mime' => $this->minor )
+ );
+ }
- return
- "SELECT 'MIMEsearch' AS type,
- " . NS_FILE . " AS namespace,
- img_name AS title,
- img_major_mime AS value,
+ function execute( $par ) {
+ global $wgRequest, $wgOut;
+ $mime = $par ? $par : $wgRequest->getText( 'mime' );
+
+ $this->setHeaders();
+ $this->outputHeader();
+ $wgOut->addHTML(
+ Xml::openElement( 'form', array( 'id' => 'specialmimesearch', 'method' => 'get', 'action' => SpecialPage::getTitleFor( 'MIMEsearch' )->getLocalUrl() ) ) .
+ Xml::openElement( 'fieldset' ) .
+ Html::hidden( 'title', SpecialPage::getTitleFor( 'MIMEsearch' )->getPrefixedText() ) .
+ Xml::element( 'legend', null, wfMsg( 'mimesearch' ) ) .
+ Xml::inputLabel( wfMsg( 'mimetype' ), 'mime', 'mime', 20, $mime ) . ' ' .
+ Xml::submitButton( wfMsg( 'ilsubmit' ) ) .
+ Xml::closeElement( 'fieldset' ) .
+ Xml::closeElement( 'form' )
+ );
- img_size,
- img_width,
- img_height,
- img_user_text,
- img_timestamp
- FROM $image
- WHERE img_major_mime = $major AND img_minor_mime = $minor
- ";
+ list( $this->major, $this->minor ) = File::splitMime( $mime );
+ if ( $this->major == '' || $this->minor == '' || $this->minor == 'unknown' ||
+ !self::isValidType( $this->major ) ) {
+ return;
+ }
+ parent::execute( $par );
}
+
function formatResult( $skin, $result ) {
global $wgContLang, $wgLang;
@@ -83,7 +95,7 @@ class MIMEsearchPage extends QueryPage {
);
$download = $skin->makeMediaLinkObj( $nt, wfMsgHtml( 'download' ) );
- $bytes = wfMsgExt( 'nbytes', array( 'parsemag', 'escape'),
+ $bytes = wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ),
$wgLang->formatNum( $result->img_size ) );
$dimensions = htmlspecialchars( wfMsg( 'widthheight',
$wgLang->formatNum( $result->img_width ),
@@ -94,63 +106,24 @@ class MIMEsearchPage extends QueryPage {
return "($download) $plink . . $dimensions . . $bytes . . $user . . $time";
}
-}
-
-/**
- * Output the HTML search form, and constructs the MIMEsearchPage object.
- */
-function wfSpecialMIMEsearch( $par = null ) {
- global $wgRequest, $wgOut;
-
- $mime = isset( $par ) ? $par : $wgRequest->getText( 'mime' );
- $wgOut->addHTML(
- Xml::openElement( 'form', array( 'id' => 'specialmimesearch', 'method' => 'get', 'action' => SpecialPage::getTitleFor( 'MIMEsearch' )->getLocalUrl() ) ) .
- Xml::openElement( 'fieldset' ) .
- Html::hidden( 'title', SpecialPage::getTitleFor( 'MIMEsearch' )->getPrefixedText() ) .
- Xml::element( 'legend', null, wfMsg( 'mimesearch' ) ) .
- Xml::inputLabel( wfMsg( 'mimetype' ), 'mime', 'mime', 20, $mime ) . ' ' .
- Xml::submitButton( wfMsg( 'ilsubmit' ) ) .
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' )
- );
-
- list( $major, $minor ) = wfSpecialMIMEsearchParse( $mime );
- if ( $major == '' or $minor == '' or !wfSpecialMIMEsearchValidType( $major ) )
- return;
- $wpp = new MIMEsearchPage( $major, $minor );
-
- list( $limit, $offset ) = wfCheckLimits();
- $wpp->doQuery( $offset, $limit );
-}
-
-function wfSpecialMIMEsearchParse( $str ) {
- // searched for an invalid MIME type.
- if( strpos( $str, '/' ) === false) {
- return array ('', '');
+ /**
+ * @param $type string
+ * @return bool
+ */
+ protected static function isValidType( $type ) {
+ // From maintenance/tables.sql => img_major_mime
+ $types = array(
+ 'unknown',
+ 'application',
+ 'audio',
+ 'image',
+ 'text',
+ 'video',
+ 'message',
+ 'model',
+ 'multipart'
+ );
+ return in_array( $type, $types );
}
-
- list( $major, $minor ) = explode( '/', $str, 2 );
-
- return array(
- ltrim( $major, ' ' ),
- rtrim( $minor, ' ' )
- );
-}
-
-function wfSpecialMIMEsearchValidType( $type ) {
- // From maintenance/tables.sql => img_major_mime
- $types = array(
- 'unknown',
- 'application',
- 'audio',
- 'image',
- 'text',
- 'video',
- 'message',
- 'model',
- 'multipart'
- );
-
- return in_array( $type, $types );
}
diff --git a/includes/specials/SpecialMergeHistory.php b/includes/specials/SpecialMergeHistory.php
index 43b4ef6a..88e90ee5 100644
--- a/includes/specials/SpecialMergeHistory.php
+++ b/includes/specials/SpecialMergeHistory.php
@@ -29,14 +29,23 @@
*/
class SpecialMergeHistory extends SpecialPage {
var $mAction, $mTarget, $mDest, $mTimestamp, $mTargetID, $mDestID, $mComment;
+
+ /**
+ * @var Title
+ */
var $mTargetObj, $mDestObj;
public function __construct() {
parent::__construct( 'MergeHistory', 'mergehistory' );
}
+ /**
+ * @param $request WebRequest
+ * @return void
+ */
private function loadRequestParams( $request ) {
global $wgUser;
+
$this->mAction = $request->getVal( 'action' );
$this->mTarget = $request->getVal( 'target' );
$this->mDest = $request->getVal( 'dest' );
@@ -45,7 +54,7 @@ class SpecialMergeHistory extends SpecialPage {
$this->mTargetID = intval( $request->getVal( 'targetID' ) );
$this->mDestID = intval( $request->getVal( 'destID' ) );
$this->mTimestamp = $request->getVal( 'mergepoint' );
- if( !preg_match("/[0-9]{14}/",$this->mTimestamp) ) {
+ if( !preg_match( '/[0-9]{14}/', $this->mTimestamp ) ) {
$this->mTimestamp = '';
}
$this->mComment = $request->getText( 'wpComment' );
@@ -73,7 +82,7 @@ class SpecialMergeHistory extends SpecialPage {
}
}
- function execute( $par ) {
+ public function execute( $par ) {
global $wgOut, $wgRequest, $wgUser;
if ( wfReadOnly() ) {
@@ -91,7 +100,7 @@ class SpecialMergeHistory extends SpecialPage {
$this->setHeaders();
$this->outputHeader();
- if( $this->mTargetID && $this->mDestID && $this->mAction=="submit" && $this->mMerge ) {
+ if( $this->mTargetID && $this->mDestID && $this->mAction == 'submit' && $this->mMerge ) {
return $this->merge();
}
@@ -109,14 +118,14 @@ class SpecialMergeHistory extends SpecialPage {
);
}
- if ( !$this->mDestObj instanceof Title) {
+ if ( !$this->mDestObj instanceof Title ) {
$errors[] = wfMsgExt( 'mergehistory-invalid-destination', array( 'parse' ) );
} elseif( !$this->mDestObj->exists() ) {
$errors[] = wfMsgExt( 'mergehistory-no-destination', array( 'parse' ),
wfEscapeWikiText( $this->mDestObj->getPrefixedText() )
);
}
-
+
if ( $this->mTargetObj && $this->mDestObj && $this->mTargetObj->equals( $this->mDestObj ) ) {
$errors[] = wfMsgExt( 'mergehistory-same-destination', array( 'parse' ) );
}
@@ -146,37 +155,47 @@ class SpecialMergeHistory extends SpecialPage {
Html::hidden( 'submitted', '1' ) .
Html::hidden( 'mergepoint', $this->mTimestamp ) .
Xml::openElement( 'table' ) .
- "<tr>
- <td>".Xml::label( wfMsg( 'mergehistory-from' ), 'target' )."</td>
- <td>".Xml::input( 'target', 30, $this->mTarget, array('id'=>'target') )."</td>
+ '<tr>
+ <td>' . Xml::label( wfMsg( 'mergehistory-from' ), 'target' ) . '</td>
+ <td>' . Xml::input( 'target', 30, $this->mTarget, array( 'id' => 'target' ) ) . '</td>
</tr><tr>
- <td>".Xml::label( wfMsg( 'mergehistory-into' ), 'dest' )."</td>
- <td>".Xml::input( 'dest', 30, $this->mDest, array('id'=>'dest') )."</td>
- </tr><tr><td>" .
+ <td>' . Xml::label( wfMsg( 'mergehistory-into' ), 'dest' ) . '</td>
+ <td>' . Xml::input( 'dest', 30, $this->mDest, array( 'id' => 'dest' ) ) . '</td>
+ </tr><tr><td>' .
Xml::submitButton( wfMsg( 'mergehistory-go' ) ) .
- "</td></tr>" .
+ '</td></tr>' .
Xml::closeElement( 'table' ) .
'</fieldset>' .
- '</form>' );
+ '</form>'
+ );
}
private function showHistory() {
global $wgUser, $wgOut;
- $this->sk = $wgUser->getSkin();
+ $this->sk = $this->getSkin();
- $wgOut->setPagetitle( wfMsg( "mergehistory" ) );
+ $wgOut->setPageTitle( wfMsg( 'mergehistory' ) );
$this->showMergeForm();
# List all stored revisions
- $revisions = new MergeHistoryPager( $this, array(), $this->mTargetObj, $this->mDestObj );
+ $revisions = new MergeHistoryPager(
+ $this, array(), $this->mTargetObj, $this->mDestObj
+ );
$haveRevisions = $revisions && $revisions->getNumRows() > 0;
$titleObj = $this->getTitle();
$action = $titleObj->getLocalURL( array( 'action' => 'submit' ) );
# Start the form here
- $top = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $action, 'id' => 'merge' ) );
+ $top = Xml::openElement(
+ 'form',
+ array(
+ 'method' => 'post',
+ 'action' => $action,
+ 'id' => 'merge'
+ )
+ );
$wgOut->addHTML( $top );
if( $haveRevisions ) {
@@ -184,43 +203,46 @@ class SpecialMergeHistory extends SpecialPage {
# in a nice little table
$table =
Xml::openElement( 'fieldset' ) .
- wfMsgExt( 'mergehistory-merge', array('parseinline'),
+ wfMsgExt( 'mergehistory-merge', array( 'parseinline' ),
$this->mTargetObj->getPrefixedText(), $this->mDestObj->getPrefixedText() ) .
Xml::openElement( 'table', array( 'id' => 'mw-mergehistory-table' ) ) .
- "<tr>
- <td class='mw-label'>" .
+ '<tr>
+ <td class="mw-label">' .
Xml::label( wfMsg( 'mergehistory-reason' ), 'wpComment' ) .
- "</td>
- <td class='mw-input'>" .
- Xml::input( 'wpComment', 50, $this->mComment, array('id' => 'wpComment') ) .
- "</td>
+ '</td>
+ <td class="mw-input">' .
+ Xml::input( 'wpComment', 50, $this->mComment, array( 'id' => 'wpComment' ) ) .
+ '</td>
</tr>
<tr>
<td>&#160;</td>
- <td class='mw-submit'>" .
+ <td class="mw-submit">' .
Xml::submitButton( wfMsg( 'mergehistory-submit' ), array( 'name' => 'merge', 'id' => 'mw-merge-submit' ) ) .
- "</td>
- </tr>" .
+ '</td>
+ </tr>' .
Xml::closeElement( 'table' ) .
Xml::closeElement( 'fieldset' );
$wgOut->addHTML( $table );
}
- $wgOut->addHTML( "<h2 id=\"mw-mergehistory\">" . wfMsgHtml( "mergehistory-list" ) . "</h2>\n" );
+ $wgOut->addHTML(
+ '<h2 id="mw-mergehistory">' .
+ wfMsgHtml( 'mergehistory-list' ) . "</h2>\n"
+ );
if( $haveRevisions ) {
$wgOut->addHTML( $revisions->getNavigationBar() );
- $wgOut->addHTML( "<ul>" );
+ $wgOut->addHTML( '<ul>' );
$wgOut->addHTML( $revisions->getBody() );
- $wgOut->addHTML( "</ul>" );
+ $wgOut->addHTML( '</ul>' );
$wgOut->addHTML( $revisions->getNavigationBar() );
} else {
- $wgOut->addWikiMsg( "mergehistory-empty" );
+ $wgOut->addWikiMsg( 'mergehistory-empty' );
}
# Show relevant lines from the deletion log:
- $wgOut->addHTML( "<h2>" . htmlspecialchars( LogPage::logName( 'merge' ) ) . "</h2>\n" );
+ $wgOut->addHTML( '<h2>' . htmlspecialchars( LogPage::logName( 'merge' ) ) . "</h2>\n" );
LogEventsList::showLogExtract( $wgOut, 'merge', $this->mTargetObj->getPrefixedText() );
# When we submit, go by page ID to avoid some nasty but unlikely collisions.
@@ -245,7 +267,7 @@ class SpecialMergeHistory extends SpecialPage {
$last = $this->message['last'];
$ts = wfTimestamp( TS_MW, $row->rev_timestamp );
- $checkBox = Xml::radio( "mergepoint", $ts, false );
+ $checkBox = Xml::radio( 'mergepoint', $ts, false );
$pageLink = $this->sk->linkKnown(
$rev->getTitle(),
@@ -258,9 +280,9 @@ class SpecialMergeHistory extends SpecialPage {
}
# Last link
- if( !$rev->userCan( Revision::DELETED_TEXT ) )
+ if( !$rev->userCan( Revision::DELETED_TEXT ) ) {
$last = $this->message['last'];
- else if( isset($this->prevId[$row->rev_id]) )
+ } elseif( isset( $this->prevId[$row->rev_id] ) ) {
$last = $this->sk->linkKnown(
$rev->getTitle(),
$this->message['last'],
@@ -270,10 +292,12 @@ class SpecialMergeHistory extends SpecialPage {
'oldid' => $this->prevId[$row->rev_id]
)
);
+ }
$userLink = $this->sk->revUserTools( $rev );
- if(!is_null($size = $row->rev_len)) {
+ $size = $row->rev_len;
+ if( !is_null( $size ) ) {
$stxt = $this->sk->formatRevisionSize( $size );
}
$comment = $this->sk->revComment( $rev );
@@ -288,8 +312,9 @@ class SpecialMergeHistory extends SpecialPage {
function getPageLink( $row, $titleObj, $ts, $target ) {
global $wgLang;
- if( !$this->userCan($row, Revision::DELETED_TEXT) ) {
- return '<span class="history-deleted">' . $wgLang->timeanddate( $ts, true ) . '</span>';
+ if( !$this->userCan( $row, Revision::DELETED_TEXT ) ) {
+ return '<span class="history-deleted">' .
+ $wgLang->timeanddate( $ts, true ) . '</span>';
} else {
$link = $this->sk->linkKnown(
$titleObj,
@@ -300,8 +325,9 @@ class SpecialMergeHistory extends SpecialPage {
'timestamp' => $ts
)
);
- if( $this->isDeleted($row, Revision::DELETED_TEXT) )
+ if( $this->isDeleted( $row, Revision::DELETED_TEXT ) ) {
$link = '<span class="history-deleted">' . $link . '</span>';
+ }
return $link;
}
}
@@ -313,63 +339,80 @@ class SpecialMergeHistory extends SpecialPage {
# keep it consistent...
$targetTitle = Title::newFromID( $this->mTargetID );
$destTitle = Title::newFromID( $this->mDestID );
- if( is_null($targetTitle) || is_null($destTitle) )
+ if( is_null( $targetTitle ) || is_null( $destTitle ) ) {
return false; // validate these
- if( $targetTitle->getArticleId() == $destTitle->getArticleId() )
+ }
+ if( $targetTitle->getArticleId() == $destTitle->getArticleId() ) {
return false;
+ }
# Verify that this timestamp is valid
# Must be older than the destination page
$dbw = wfGetDB( DB_MASTER );
# Get timestamp into DB format
- $this->mTimestamp = $this->mTimestamp ? $dbw->timestamp($this->mTimestamp) : '';
+ $this->mTimestamp = $this->mTimestamp ? $dbw->timestamp( $this->mTimestamp ) : '';
# Max timestamp should be min of destination page
- $maxtimestamp = $dbw->selectField( 'revision', 'MIN(rev_timestamp)',
- array('rev_page' => $this->mDestID ),
- __METHOD__ );
+ $maxtimestamp = $dbw->selectField(
+ 'revision',
+ 'MIN(rev_timestamp)',
+ array( 'rev_page' => $this->mDestID ),
+ __METHOD__
+ );
# Destination page must exist with revisions
if( !$maxtimestamp ) {
- $wgOut->addWikiMsg('mergehistory-fail');
+ $wgOut->addWikiMsg( 'mergehistory-fail' );
return false;
}
# Get the latest timestamp of the source
- $lasttimestamp = $dbw->selectField( array('page','revision'),
+ $lasttimestamp = $dbw->selectField(
+ array( 'page', 'revision' ),
'rev_timestamp',
- array('page_id' => $this->mTargetID, 'page_latest = rev_id' ),
- __METHOD__ );
+ array( 'page_id' => $this->mTargetID, 'page_latest = rev_id' ),
+ __METHOD__
+ );
# $this->mTimestamp must be older than $maxtimestamp
if( $this->mTimestamp >= $maxtimestamp ) {
- $wgOut->addWikiMsg('mergehistory-fail');
+ $wgOut->addWikiMsg( 'mergehistory-fail' );
return false;
}
# Update the revisions
if( $this->mTimestamp ) {
$timewhere = "rev_timestamp <= {$this->mTimestamp}";
- $TimestampLimit = wfTimestamp(TS_MW,$this->mTimestamp);
+ $timestampLimit = wfTimestamp( TS_MW, $this->mTimestamp );
} else {
$timewhere = "rev_timestamp <= {$maxtimestamp}";
- $TimestampLimit = wfTimestamp(TS_MW,$lasttimestamp);
+ $timestampLimit = wfTimestamp( TS_MW, $lasttimestamp );
}
# Do the moving...
- $dbw->update( 'revision',
+ $dbw->update(
+ 'revision',
array( 'rev_page' => $this->mDestID ),
- array( 'rev_page' => $this->mTargetID,
- $timewhere ),
- __METHOD__ );
+ array( 'rev_page' => $this->mTargetID, $timewhere ),
+ __METHOD__
+ );
$count = $dbw->affectedRows();
# Make the source page a redirect if no revisions are left
- $haveRevisions = $dbw->selectField( 'revision',
+ $haveRevisions = $dbw->selectField(
+ 'revision',
'rev_timestamp',
array( 'rev_page' => $this->mTargetID ),
__METHOD__,
- array( 'FOR UPDATE' ) );
+ array( 'FOR UPDATE' )
+ );
if( !$haveRevisions ) {
if( $this->mComment ) {
- $comment = wfMsgForContent( 'mergehistory-comment', $targetTitle->getPrefixedText(),
- $destTitle->getPrefixedText(), $this->mComment );
+ $comment = wfMsgForContent(
+ 'mergehistory-comment',
+ $targetTitle->getPrefixedText(),
+ $destTitle->getPrefixedText(),
+ $this->mComment
+ );
} else {
- $comment = wfMsgForContent( 'mergehistory-autocomment', $targetTitle->getPrefixedText(),
- $destTitle->getPrefixedText() );
+ $comment = wfMsgForContent(
+ 'mergehistory-autocomment',
+ $targetTitle->getPrefixedText(),
+ $destTitle->getPrefixedText()
+ );
}
$mwRedir = MagicWord::get( 'redirect' );
$redirectText = $mwRedir->getSynonym( 0 ) . ' [[' . $destTitle->getPrefixedText() . "]]\n";
@@ -389,22 +432,26 @@ class SpecialMergeHistory extends SpecialPage {
'pl_from' => $this->mDestID,
'pl_namespace' => $destTitle->getNamespace(),
'pl_title' => $destTitle->getDBkey() ),
- __METHOD__ );
+ __METHOD__
+ );
} else {
$targetTitle->invalidateCache(); // update histories
}
$destTitle->invalidateCache(); // update histories
# Check if this did anything
if( !$count ) {
- $wgOut->addWikiMsg('mergehistory-fail');
+ $wgOut->addWikiMsg( 'mergehistory-fail' );
return false;
}
# Update our logs
$log = new LogPage( 'merge' );
- $log->addEntry( 'merge', $targetTitle, $this->mComment,
- array($destTitle->getPrefixedText(),$TimestampLimit) );
+ $log->addEntry(
+ 'merge', $targetTitle, $this->mComment,
+ array( $destTitle->getPrefixedText(), $timestampLimit )
+ );
- $wgOut->addHTML( wfMsgExt( 'mergehistory-success', array('parseinline'),
+ $wgOut->addHTML(
+ wfMsgExt( 'mergehistory-success', array('parseinline'),
$targetTitle->getPrefixedText(), $destTitle->getPrefixedText(), $count ) );
wfRunHooks( 'ArticleMergeComplete', array( $targetTitle, $destTitle ) );
@@ -423,14 +470,21 @@ class MergeHistoryPager extends ReverseChronologicalPager {
$this->articleID = $source->getArticleID();
$dbr = wfGetDB( DB_SLAVE );
- $maxtimestamp = $dbr->selectField( 'revision', 'MIN(rev_timestamp)',
- array('rev_page' => $dest->getArticleID() ),
- __METHOD__ );
+ $maxtimestamp = $dbr->selectField(
+ 'revision',
+ 'MIN(rev_timestamp)',
+ array( 'rev_page' => $dest->getArticleID() ),
+ __METHOD__
+ );
$this->maxTimestamp = $maxtimestamp;
parent::__construct();
}
+ function getTitle() {
+ return SpecialPage::getTitleFor( 'Contributions' );
+ }
+
function getStartBody() {
wfProfileIn( __METHOD__ );
# Do a link batch query
@@ -442,11 +496,12 @@ class MergeHistoryPager extends ReverseChronologicalPager {
$batch->addObj( Title::makeTitleSafe( NS_USER, $row->rev_user_text ) );
$batch->addObj( Title::makeTitleSafe( NS_USER_TALK, $row->rev_user_text ) );
- $rev_id = isset($rev_id) ? $rev_id : $row->rev_id;
- if( $rev_id > $row->rev_id )
+ $rev_id = isset( $rev_id ) ? $rev_id : $row->rev_id;
+ if( $rev_id > $row->rev_id ) {
$this->mForm->prevId[$rev_id] = $row->rev_id;
- else if( $rev_id < $row->rev_id )
+ } elseif( $rev_id < $row->rev_id ) {
$this->mForm->prevId[$row->rev_id] = $rev_id;
+ }
$rev_id = $row->rev_id;
}
@@ -468,9 +523,12 @@ class MergeHistoryPager extends ReverseChronologicalPager {
$conds[] = 'page_id = rev_page';
$conds[] = "rev_timestamp < {$this->maxTimestamp}";
return array(
- 'tables' => array('revision','page'),
- 'fields' => array( 'rev_minor_edit', 'rev_timestamp', 'rev_user', 'rev_user_text', 'rev_comment',
- 'rev_id', 'rev_page', 'rev_parent_id', 'rev_text_id', 'rev_len', 'rev_deleted' ),
+ 'tables' => array( 'revision', 'page' ),
+ 'fields' => array(
+ 'rev_minor_edit', 'rev_timestamp', 'rev_user', 'rev_user_text',
+ 'rev_comment', 'rev_id', 'rev_page', 'rev_parent_id',
+ 'rev_text_id', 'rev_len', 'rev_deleted'
+ ),
'conds' => $conds
);
}
diff --git a/includes/specials/SpecialMostcategories.php b/includes/specials/SpecialMostcategories.php
index 124f0bd5..2e437196 100644
--- a/includes/specials/SpecialMostcategories.php
+++ b/includes/specials/SpecialMostcategories.php
@@ -31,28 +31,32 @@
*/
class MostcategoriesPage extends QueryPage {
- function getName() { return 'Mostcategories'; }
+ function __construct( $name = 'Mostcategories' ) {
+ parent::__construct( $name );
+ }
+
function isExpensive() { return true; }
function isSyndicated() { return false; }
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $categorylinks, $page) = $dbr->tableNamesN( 'categorylinks', 'page' );
- return
- "
- SELECT
- 'Mostcategories' as type,
- page_namespace as namespace,
- page_title as title,
- COUNT(*) as value
- FROM $categorylinks
- LEFT JOIN $page ON cl_from = page_id
- WHERE page_namespace = " . NS_MAIN . "
- GROUP BY page_namespace, page_title
- HAVING COUNT(*) > 1
- ";
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'categorylinks', 'page' ),
+ 'fields' => array ( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'COUNT(*) AS value' ),
+ 'conds' => array ( 'page_namespace' => MWNamespace::getContentNamespaces() ),
+ 'options' => array ( 'HAVING' => 'COUNT(*) > 1',
+ 'GROUP BY' => 'page_namespace, page_title' ),
+ 'join_conds' => array ( 'page' => array ( 'LEFT JOIN',
+ 'page_id = cl_from' ) )
+ );
}
+ /**
+ * @param $skin Skin
+ * @param $result
+ * @return string
+ */
function formatResult( $skin, $result ) {
global $wgLang;
$title = Title::makeTitleSafe( $result->namespace, $result->title );
@@ -62,14 +66,3 @@ class MostcategoriesPage extends QueryPage {
return wfSpecialList( $link, $count );
}
}
-
-/**
- * constructor
- */
-function wfSpecialMostcategories() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $wpp = new MostcategoriesPage();
-
- $wpp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialMostimages.php b/includes/specials/SpecialMostimages.php
index 411a281b..ac2b5206 100644
--- a/includes/specials/SpecialMostimages.php
+++ b/includes/specials/SpecialMostimages.php
@@ -31,24 +31,22 @@
*/
class MostimagesPage extends ImageQueryPage {
- function getName() { return 'Mostimages'; }
+ function __construct( $name = 'Mostimages' ) {
+ parent::__construct( $name );
+ }
+
function isExpensive() { return true; }
function isSyndicated() { return false; }
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- $imagelinks = $dbr->tableName( 'imagelinks' );
- return
- "
- SELECT
- 'Mostimages' as type,
- " . NS_FILE . " as namespace,
- il_to as title,
- COUNT(*) as value
- FROM $imagelinks
- GROUP BY il_to
- HAVING COUNT(*) > 1
- ";
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'imagelinks' ),
+ 'fields' => array ( "'" . NS_FILE . "' AS namespace",
+ 'il_to AS title',
+ 'COUNT(*) AS value' ),
+ 'options' => array ( 'GROUP BY' => 'il_to',
+ 'HAVING' => 'COUNT(*) > 1' )
+ );
}
function getCellHtml( $row ) {
@@ -58,14 +56,3 @@ class MostimagesPage extends ImageQueryPage {
}
}
-
-/**
- * Constructor
- */
-function wfSpecialMostimages() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $wpp = new MostimagesPage();
-
- $wpp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialMostlinked.php b/includes/specials/SpecialMostlinked.php
index c731588a..58f686e8 100644
--- a/includes/specials/SpecialMostlinked.php
+++ b/includes/specials/SpecialMostlinked.php
@@ -32,43 +32,34 @@
*/
class MostlinkedPage extends QueryPage {
- function getName() { return 'Mostlinked'; }
+ function __construct( $name = 'Mostlinked' ) {
+ parent::__construct( $name );
+ }
+
function isExpensive() { return true; }
function isSyndicated() { return false; }
- function getSQL() {
- global $wgMiserMode;
-
- $dbr = wfGetDB( DB_SLAVE );
-
- # In miser mode, reduce the query cost by adding a threshold for large wikis
- if ( $wgMiserMode ) {
- $numPages = SiteStats::pages();
- if ( $numPages > 10000 ) {
- $cutoff = 100;
- } elseif ( $numPages > 100 ) {
- $cutoff = intval( sqrt( $numPages ) );
- } else {
- $cutoff = 1;
- }
- } else {
- $cutoff = 1;
- }
-
- list( $pagelinks, $page ) = $dbr->tableNamesN( 'pagelinks', 'page' );
- return
- "SELECT 'Mostlinked' AS type,
- pl_namespace AS namespace,
- pl_title AS title,
- COUNT(*) AS value
- FROM $pagelinks
- LEFT JOIN $page ON pl_namespace=page_namespace AND pl_title=page_title
- GROUP BY pl_namespace, pl_title
- HAVING COUNT(*) > $cutoff";
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'pagelinks', 'page' ),
+ 'fields' => array ( 'pl_namespace AS namespace',
+ 'pl_title AS title',
+ 'COUNT(*) AS value',
+ 'page_namespace' ),
+ 'options' => array ( 'HAVING' => 'COUNT(*) > 1',
+ 'GROUP BY' => 'pl_namespace, pl_title, '.
+ 'page_namespace' ),
+ 'join_conds' => array ( 'page' => array ( 'LEFT JOIN',
+ array ( 'page_namespace = pl_namespace',
+ 'page_title = pl_title' ) ) )
+ );
}
/**
* Pre-fill the link cache
+ *
+ * @param $db DatabaseBase
+ * @param $res
*/
function preprocessResults( $db, $res ) {
if( $db->numRows( $res ) > 0 ) {
@@ -114,14 +105,3 @@ class MostlinkedPage extends QueryPage {
return wfSpecialList( $link, $wlh );
}
}
-
-/**
- * constructor
- */
-function wfSpecialMostlinked() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $wpp = new MostlinkedPage();
-
- $wpp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialMostlinkedcategories.php b/includes/specials/SpecialMostlinkedcategories.php
index e1fc1d95..195282f7 100644
--- a/includes/specials/SpecialMostlinkedcategories.php
+++ b/includes/specials/SpecialMostlinkedcategories.php
@@ -31,65 +31,60 @@
*/
class MostlinkedCategoriesPage extends QueryPage {
- function getName() { return 'Mostlinkedcategories'; }
+ function __construct( $name = 'Mostlinkedcategories' ) {
+ parent::__construct( $name );
+ }
+
function isExpensive() { return true; }
function isSyndicated() { return false; }
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- $categorylinks = $dbr->tableName( 'categorylinks' );
- $name = $dbr->addQuotes( $this->getName() );
- return
- "
- SELECT
- $name as type,
- " . NS_CATEGORY . " as namespace,
- cl_to as title,
- COUNT(*) as value
- FROM $categorylinks
- GROUP BY cl_to
- ";
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'categorylinks' ),
+ 'fields' => array ( 'cl_to AS title',
+ NS_CATEGORY . ' AS namespace',
+ 'COUNT(*) AS value' ),
+ 'options' => array ( 'GROUP BY' => 'cl_to' )
+ );
}
function sortDescending() { return true; }
/**
* Fetch user page links and cache their existence
+ *
+ * @param $db DatabaseBase
+ * @param $res DatabaseResult
*/
function preprocessResults( $db, $res ) {
$batch = new LinkBatch;
foreach ( $res as $row ) {
- $batch->add( $row->namespace, $row->title );
+ $batch->add( NS_CATEGORY, $row->title );
}
$batch->execute();
// Back to start for display
- if ( $db->numRows( $res ) > 0 )
+ if ( $db->numRows( $res ) > 0 ) {
// If there are no rows we get an error seeking.
$db->dataSeek( $res, 0 );
+ }
}
+ /**
+ * @param $skin Skin
+ * @param $result
+ * @return string
+ */
function formatResult( $skin, $result ) {
global $wgLang, $wgContLang;
- $nt = Title::makeTitle( $result->namespace, $result->title );
+ $nt = Title::makeTitle( NS_CATEGORY, $result->title );
$text = $wgContLang->convert( $nt->getText() );
$plink = $skin->link( $nt, htmlspecialchars( $text ) );
- $nlinks = wfMsgExt( 'nmembers', array( 'parsemag', 'escape'),
+ $nlinks = wfMsgExt( 'nmembers', array( 'parsemag', 'escape' ),
$wgLang->formatNum( $result->value ) );
- return wfSpecialList($plink, $nlinks);
+ return wfSpecialList( $plink, $nlinks );
}
}
-
-/**
- * constructor
- */
-function wfSpecialMostlinkedCategories() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $wpp = new MostlinkedCategoriesPage();
-
- $wpp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialMostlinkedtemplates.php b/includes/specials/SpecialMostlinkedtemplates.php
index 822d6bc9..69771925 100644
--- a/includes/specials/SpecialMostlinkedtemplates.php
+++ b/includes/specials/SpecialMostlinkedtemplates.php
@@ -21,22 +21,17 @@
* @ingroup SpecialPage
* @author Rob Church <robchur@gmail.com>
*/
-
+
/**
* Special page lists templates with a large number of
* transclusion links, i.e. "most used" templates
*
* @ingroup SpecialPage
*/
-class SpecialMostlinkedtemplates extends QueryPage {
+class MostlinkedTemplatesPage extends QueryPage {
- /**
- * Name of the report
- *
- * @return String
- */
- public function getName() {
- return 'Mostlinkedtemplates';
+ function __construct( $name = 'Mostlinkedtemplates' ) {
+ parent::__construct( $name );
}
/**
@@ -66,22 +61,15 @@ class SpecialMostlinkedtemplates extends QueryPage {
return true;
}
- /**
- * Generate SQL for the report
- *
- * @return String
- */
- public function getSql() {
- $dbr = wfGetDB( DB_SLAVE );
- $templatelinks = $dbr->tableName( 'templatelinks' );
- $name = $dbr->addQuotes( $this->getName() );
- return "SELECT {$name} AS type,
- " . NS_TEMPLATE . " AS namespace,
- tl_title AS title,
- COUNT(*) AS value
- FROM {$templatelinks}
- WHERE tl_namespace = " . NS_TEMPLATE . "
- GROUP BY tl_title";
+ public function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'templatelinks' ),
+ 'fields' => array ( 'tl_namespace AS namespace',
+ 'tl_title AS title',
+ 'COUNT(*) AS value' ),
+ 'conds' => array ( 'tl_namespace' => NS_TEMPLATE ),
+ 'options' => array( 'GROUP BY' => 'tl_namespace, tl_title' )
+ );
}
/**
@@ -108,7 +96,7 @@ class SpecialMostlinkedtemplates extends QueryPage {
* @return String
*/
public function formatResult( $skin, $result ) {
- $title = Title::makeTitleSafe( $result->namespace, $result->title );
+ $title = Title::makeTitle( $result->namespace, $result->title );
return wfSpecialList(
$skin->link( $title ),
@@ -133,13 +121,3 @@ class SpecialMostlinkedtemplates extends QueryPage {
}
}
-/**
- * Execution function
- *
- * @param $par Mixed: parameters passed to the page
- */
-function wfSpecialMostlinkedtemplates( $par = false ) {
- list( $limit, $offset ) = wfCheckLimits();
- $mlt = new SpecialMostlinkedtemplates();
- $mlt->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialMostrevisions.php b/includes/specials/SpecialMostrevisions.php
index f9bafabc..b0253316 100644
--- a/includes/specials/SpecialMostrevisions.php
+++ b/includes/specials/SpecialMostrevisions.php
@@ -23,64 +23,12 @@
* @ingroup SpecialPage
* @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
*/
-
-/**
- * A special page to show pages with highest revision count
- *
- * @ingroup SpecialPage
- */
-class MostrevisionsPage extends QueryPage {
-
- function getName() { return 'Mostrevisions'; }
- function isExpensive() { return true; }
- function isSyndicated() { return false; }
-
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $revision, $page ) = $dbr->tableNamesN( 'revision', 'page' );
- return
- "
- SELECT
- 'Mostrevisions' as type,
- page_namespace as namespace,
- page_title as title,
- COUNT(*) as value
- FROM $revision
- JOIN $page ON page_id = rev_page
- WHERE page_namespace = " . NS_MAIN . "
- GROUP BY page_namespace, page_title
- HAVING COUNT(*) > 1
- ";
+class MostrevisionsPage extends FewestrevisionsPage {
+ function __construct( $name = 'Mostrevisions' ) {
+ parent::__construct( $name );
}
- function formatResult( $skin, $result ) {
- global $wgLang, $wgContLang;
-
- $nt = Title::makeTitle( $result->namespace, $result->title );
- $text = $wgContLang->convert( $nt->getPrefixedText() );
-
- $plink = $skin->linkKnown( $nt, $text );
-
- $nl = wfMsgExt( 'nrevisions', array( 'parsemag', 'escape'),
- $wgLang->formatNum( $result->value ) );
- $nlink = $skin->linkKnown(
- $nt,
- $nl,
- array(),
- array( 'action' => 'history' )
- );
-
- return wfSpecialList($plink, $nlink);
+ function sortDescending() {
+ return true;
}
}
-
-/**
- * constructor
- */
-function wfSpecialMostrevisions() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $wpp = new MostrevisionsPage();
-
- $wpp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialMovepage.php b/includes/specials/SpecialMovepage.php
index 2f156c65..7ac7eba4 100644
--- a/includes/specials/SpecialMovepage.php
+++ b/includes/specials/SpecialMovepage.php
@@ -27,6 +27,10 @@
* @ingroup SpecialPage
*/
class MovePageForm extends UnlistedSpecialPage {
+
+ /**
+ * @var Title
+ */
var $oldTitle, $newTitle; # Objects
var $reason; # Text input
var $moveTalk, $deleteAndMove, $moveSubpages, $fixRedirects, $leaveRedirect, $moveOverShared; # Checks
@@ -70,7 +74,9 @@ class MovePageForm extends UnlistedSpecialPage {
# Check rights
$permErrors = $this->oldTitle->getUserPermissionsErrors( 'move', $wgUser );
if( !empty( $permErrors ) ) {
- $wgOut->showPermissionsErrorPage( $permErrors );
+ // Auto-block user's IP if the account was "hard" blocked
+ $user->spreadAnyEditBlock();
+ $this->getOutput()->showPermissionsErrorPage( $permErrors );
return;
}
@@ -103,12 +109,14 @@ class MovePageForm extends UnlistedSpecialPage {
function showForm( $err ) {
global $wgOut, $wgUser, $wgContLang, $wgFixDoubleRedirects;
- $skin = $wgUser->getSkin();
+ $skin = $this->getSkin();
$oldTitleLink = $skin->link( $this->oldTitle );
$wgOut->setPagetitle( wfMsg( 'move-page', $this->oldTitle->getPrefixedText() ) );
- $wgOut->setSubtitle( wfMsg( 'move-page-backlink', $oldTitleLink ) );
+ $skin->setRelevantTitle( $this->oldTitle );
+
+ $wgOut->addModules( 'mediawiki.special.movePage' );
$newTitle = $this->newTitle;
@@ -211,7 +219,7 @@ class MovePageForm extends UnlistedSpecialPage {
Xml::element( 'legend', null, wfMsg( 'move-page-legend' ) ) .
Xml::openElement( 'table', array( 'border' => '0', 'id' => 'mw-movepage-table' ) ) .
"<tr>
- <td class='mw-label'>" .
+ <td class='mw-label'>" .
wfMsgHtml( 'movearticle' ) .
"</td>
<td class='mw-input'>
@@ -233,7 +241,7 @@ class MovePageForm extends UnlistedSpecialPage {
"</td>
<td class='mw-input'>" .
Html::element( 'textarea', array( 'name' => 'wpReason', 'id' => 'wpReason', 'cols' => 60, 'rows' => 2,
- 'maxlength' => 200 ), $this->reason ) .
+ 'maxlength' => 200 ), $this->reason ) . // maxlength byte limit is enforce in mediawiki.special.movePage.js
"</td>
</tr>"
);
@@ -398,7 +406,7 @@ class MovePageForm extends UnlistedSpecialPage {
# Do the actual move.
$error = $ot->moveTo( $nt, true, $this->reason, $createRedirect );
if ( $error !== true ) {
- # FIXME: show all the errors in a list, not just the first one
+ # @todo FIXME: Show all the errors in a list, not just the first one
$this->showForm( reset( $error ) );
return;
}
@@ -407,7 +415,7 @@ class MovePageForm extends UnlistedSpecialPage {
DoubleRedirectJob::fixRedirects( 'move', $ot, $nt );
}
- wfRunHooks( 'SpecialMovepageAfterMove', array( &$this , &$ot , &$nt ) ) ;
+ wfRunHooks( 'SpecialMovepageAfterMove', array( &$this, &$ot, &$nt ) );
$wgOut->setPagetitle( wfMsg( 'pagemovedsub' ) );
@@ -442,10 +450,10 @@ class MovePageForm extends UnlistedSpecialPage {
#
# If the target namespace doesn't allow subpages, moving with subpages
# would mean that you couldn't move them back in one operation, which
- # is bad. FIXME: A specific error message should be given in this
- # case.
+ # is bad.
+ # @todo FIXME: A specific error message should be given in this case.
- // FIXME: Use Title::moveSubpages() here
+ // @todo FIXME: Use Title::moveSubpages() here
$dbr = wfGetDB( DB_MASTER );
if( $this->moveSubpages && (
MWNamespace::hasSubpages( $nt->getNamespace() ) || (
@@ -486,7 +494,7 @@ class MovePageForm extends UnlistedSpecialPage {
}
$extraOutput = array();
- $skin = $wgUser->getSkin();
+ $skin = $this->getSkin();
$count = 1;
foreach( $extraPages as $oldSubpage ) {
if( $ot->equals( $oldSubpage ) ) {
@@ -561,7 +569,7 @@ class MovePageForm extends UnlistedSpecialPage {
# Re-clear the file redirect cache, which may have been polluted by
# parsing in messages above. See CR r56745.
- # FIXME: needs a more robust solution inside FileRepo.
+ # @todo FIXME: Needs a more robust solution inside FileRepo.
if( $ot->getNamespace() == NS_FILE ) {
RepoGroup::singleton()->getLocalRepo()->invalidateImageRedirect( $ot );
}
@@ -573,7 +581,7 @@ class MovePageForm extends UnlistedSpecialPage {
}
function showSubpages( $title, $out ) {
- global $wgUser, $wgLang;
+ global $wgLang;
if( !MWNamespace::hasSubpages( $title->getNamespace() ) )
return;
@@ -590,7 +598,7 @@ class MovePageForm extends UnlistedSpecialPage {
}
$out->addWikiMsg( 'movesubpagetext', $wgLang->formatNum( $count ) );
- $skin = $wgUser->getSkin();
+ $skin = $this->getSkin();
$out->addHTML( "<ul>\n" );
foreach( $subpages as $subpage ) {
diff --git a/includes/specials/SpecialNewimages.php b/includes/specials/SpecialNewimages.php
index cecd7dfd..ea20c2f7 100644
--- a/includes/specials/SpecialNewimages.php
+++ b/includes/specials/SpecialNewimages.php
@@ -20,244 +20,152 @@
* @file
* @ingroup SpecialPage
*/
+class SpecialNewFiles extends IncludableSpecialPage {
-/**
- * @todo FIXME: this code is crap, should use Pager and Database::select().
- */
-function wfSpecialNewimages( $par, $specialPage ) {
- global $wgUser, $wgOut, $wgLang, $wgRequest, $wgMiserMode;
-
- $wpIlMatch = $wgRequest->getText( 'wpIlMatch' );
- $dbr = wfGetDB( DB_SLAVE );
- $sk = $wgUser->getSkin();
- $shownav = !$specialPage->including();
- $hidebots = $wgRequest->getBool( 'hidebots' , 1 );
+ public function __construct(){
+ parent::__construct( 'Newimages' );
+ }
- $hidebotsql = '';
- if ( $hidebots ) {
- # Make a list of group names which have the 'bot' flag set.
- $botconds = array();
- foreach ( User::getGroupsWithPermission('bot') as $groupname ) {
- $botconds[] = 'ug_group = ' . $dbr->addQuotes( $groupname );
- }
+ public function execute( $par ){
+ $this->setHeaders();
+ $this->outputHeader();
- # If not bot groups, do not set $hidebotsql
- if ( $botconds ) {
- $isbotmember = $dbr->makeList( $botconds, LIST_OR );
+ $pager = new NewFilesPager( $par );
- # This join, in conjunction with WHERE ug_group IS NULL, returns
- # only those rows from IMAGE where the uploading user is not a mem-
- # ber of a group which has the 'bot' permission set.
- $ug = $dbr->tableName( 'user_groups' );
- $hidebotsql = " LEFT JOIN $ug ON img_user=ug_user AND ($isbotmember)";
+ if ( !$this->including() ) {
+ $form = $pager->getForm();
+ $form->prepareForm();
+ $form->displayForm( '' );
+ }
+ $this->getOutput()->addHTML( $pager->getBody() );
+ if ( !$this->including() ) {
+ $this->getOutput()->addHTML( $pager->getNavigationBar() );
}
}
+}
- $image = $dbr->tableName( 'image' );
- $sql = "SELECT img_timestamp from $image";
- if ($hidebotsql) {
- $sql .= "$hidebotsql WHERE ug_group IS NULL";
- }
- $sql .= ' ORDER BY img_timestamp DESC';
- $sql = $dbr->limitResult($sql, 1, false);
- $res = $dbr->query( $sql, __FUNCTION__ );
- $row = $dbr->fetchRow( $res );
- if( $row !== false ) {
- $ts = $row[0];
- } else {
- $ts = false;
- }
+/**
+ * @ingroup SpecialPage Pager
+ */
+class NewFilesPager extends ReverseChronologicalPager {
- # If we were clever, we'd use this to cache.
- $latestTimestamp = wfTimestamp( TS_MW, $ts );
+ function __construct( $par = null ) {
+ global $wgRequest;
- # Hardcode this for now.
- $limit = 48;
- $parval = intval( $par );
- if ( $parval ) {
- if ( $parval <= $limit && $parval > 0 ) {
- $limit = $parval;
- }
- }
+ $this->like = $wgRequest->getText( 'like' );
+ $this->showbots = $wgRequest->getBool( 'showbots' , 0 );
+ $this->skin = $this->getSkin();
- $where = array();
- $searchpar = array();
- if ( $wpIlMatch != '' && !$wgMiserMode) {
- $nt = Title::newFromURL( $wpIlMatch );
- if( $nt ) {
- $where[] = 'LOWER(img_name) ' . $dbr->buildLike( $dbr->anyString(), strtolower( $nt->getDBkey() ), $dbr->anyString() );
- $searchpar['wpIlMatch'] = $wpIlMatch;
- }
+ parent::__construct();
}
- $invertSort = false;
- $until = $wgRequest->getVal( 'until' );
- if( $until ) {
- $where[] = "img_timestamp < '" . $dbr->timestamp( $until ) . "'";
+ function getTitle() {
+ return SpecialPage::getTitleFor( 'Newimages' );
}
- $from = $wgRequest->getVal( 'from' );
- if( $from ) {
- $where[] = "img_timestamp >= '" . $dbr->timestamp( $from ) . "'";
- $invertSort = true;
- }
- $sql = 'SELECT img_size, img_name, img_user, img_user_text,'.
- "img_description,img_timestamp FROM $image";
- if( $hidebotsql ) {
- $sql .= $hidebotsql;
- $where[] = 'ug_group IS NULL';
- }
- if( count( $where ) ) {
- $sql .= ' WHERE ' . $dbr->makeList( $where, LIST_AND );
- }
- $sql.=' ORDER BY img_timestamp '. ( $invertSort ? '' : ' DESC' );
- $sql = $dbr->limitResult($sql, ( $limit + 1 ), false);
- $res = $dbr->query( $sql, __FUNCTION__ );
+ function getQueryInfo() {
+ global $wgMiserMode;
+ $conds = $jconds = array();
+ $tables = array( 'image' );
- /**
- * We have to flip things around to get the last N after a certain date
- */
- $images = array();
- foreach ( $res as $s ) {
- if( $invertSort ) {
- array_unshift( $images, $s );
- } else {
- array_push( $images, $s );
+ if( !$this->showbots ) {
+ $tables[] = 'user_groups';
+ $conds[] = 'ug_group IS NULL';
+ $jconds['user_groups'] = array(
+ 'LEFT JOIN',
+ array(
+ 'ug_group' => User::getGroupsWithPermission( 'bot' ),
+ 'ug_user = img_user'
+ )
+ );
}
- }
- $gallery = new ImageGallery();
- $firstTimestamp = null;
- $lastTimestamp = null;
- $shownImages = 0;
- foreach( $images as $s ) {
- $shownImages++;
- if( $shownImages > $limit ) {
- # One extra just to test for whether to show a page link;
- # don't actually show it.
- break;
+ if( !$wgMiserMode && $this->like !== null ){
+ $dbr = wfGetDB( DB_SLAVE );
+ $likeObj = Title::newFromURL( $this->like );
+ if( $likeObj instanceof Title ){
+ $like = $dbr->buildLike( $dbr->anyString(), strtolower( $likeObj->getDBkey() ), $dbr->anyString() );
+ $conds[] = "LOWER(img_name) $like";
+ }
}
- $name = $s->img_name;
- $ut = $s->img_user_text;
-
- $nt = Title::newFromText( $name, NS_FILE );
- $ul = $sk->link( Title::makeTitle( NS_USER, $ut ), $ut );
-
- $gallery->add( $nt, "$ul<br />\n<i>".htmlspecialchars($wgLang->timeanddate( $s->img_timestamp, true ))."</i><br />\n" );
+ $query = array(
+ 'tables' => $tables,
+ 'fields' => '*',
+ 'join_conds' => $jconds,
+ 'conds' => $conds
+ );
- $timestamp = wfTimestamp( TS_MW, $s->img_timestamp );
- if( empty( $firstTimestamp ) ) {
- $firstTimestamp = $timestamp;
- }
- $lastTimestamp = $timestamp;
+ return $query;
}
- $titleObj = SpecialPage::getTitleFor( 'Newimages' );
- $action = $titleObj->getLocalURL( $hidebots ? '' : 'hidebots=0' );
- if ( $shownav && !$wgMiserMode ) {
- $wgOut->addHTML(
- Xml::openElement( 'form', array( 'action' => $action, 'method' => 'post', 'id' => 'imagesearch' ) ) .
- Xml::fieldset( wfMsg( 'newimages-legend' ) ) .
- Xml::inputLabel( wfMsg( 'newimages-label' ), 'wpIlMatch', 'wpIlMatch', 20, $wpIlMatch ) . ' ' .
- Xml::submitButton( wfMsg( 'ilsubmit' ), array( 'name' => 'wpIlSubmit' ) ) .
- Xml::closeElement( 'fieldset' ) .
- Xml::closeElement( 'form' )
- );
+ function getIndexField(){
+ return 'img_timestamp';
}
- $bydate = wfMsg( 'bydate' );
- $lt = $wgLang->formatNum( min( $shownImages, $limit ) );
- if ( $shownav ) {
- $text = wfMsgExt( 'imagelisttext', array('parse'), $lt, $bydate );
- $wgOut->addHTML( $text . "\n" );
+ function getStartBody(){
+ $this->gallery = new ImageGallery();
}
- /**
- * Paging controls...
- */
-
- # If we change bot visibility, this needs to be carried along.
- if( !$hidebots ) {
- $botpar = array( 'hidebots' => 0 );
- } else {
- $botpar = array();
+ function getEndBody(){
+ return $this->gallery->toHTML();
}
- $now = wfTimestampNow();
- $d = $wgLang->date( $now, true );
- $t = $wgLang->time( $now, true );
- $query = array_merge(
- array( 'from' => $now ),
- $botpar,
- $searchpar
- );
-
- $dateLink = $sk->linkKnown(
- $titleObj,
- htmlspecialchars( wfMsg( 'sp-newimages-showfrom', $d, $t ) ),
- array(),
- $query
- );
- $query = array_merge(
- array( 'hidebots' => ( $hidebots ? 0 : 1 ) ),
- $searchpar
- );
+ function formatRow( $row ) {
+ global $wgLang;
- $showhide = $hidebots ? wfMsg( 'show' ) : wfMsg( 'hide' );
+ $name = $row->img_name;
+ $user = User::newFromId( $row->img_user );
- $botLink = $sk->linkKnown(
- $titleObj,
- htmlspecialchars( wfMsg( 'showhidebots', $showhide ) ),
- array(),
- $query
- );
+ $title = Title::makeTitle( NS_FILE, $name );
+ $ul = $this->skin->link( $user->getUserpage(), $user->getName() );
- $opts = array( 'parsemag', 'escapenoentities' );
- $prevLink = wfMsgExt( 'pager-newer-n', $opts, $wgLang->formatNum( $limit ) );
- if( $firstTimestamp && $firstTimestamp != $latestTimestamp ) {
- $query = array_merge(
- array( 'from' => $firstTimestamp ),
- $botpar,
- $searchpar
- );
-
- $prevLink = $sk->linkKnown(
- $titleObj,
- $prevLink,
- array(),
- $query
+ $this->gallery->add(
+ $title,
+ "$ul<br />\n<i>"
+ . htmlspecialchars( $wgLang->timeanddate( $row->img_timestamp, true ) )
+ . "</i><br />\n"
);
}
- $nextLink = wfMsgExt( 'pager-older-n', $opts, $wgLang->formatNum( $limit ) );
- if( $invertSort || ( $shownImages > $limit && $lastTimestamp ) ) {
- $query = array_merge(
- array( 'until' => ( $lastTimestamp ? $lastTimestamp : "" ) ),
- $botpar,
- $searchpar
- );
-
- $nextLink = $sk->linkKnown(
- $titleObj,
- $nextLink,
- array(),
- $query
+ function getForm() {
+ global $wgRequest, $wgMiserMode;
+
+ $fields = array(
+ 'like' => array(
+ 'type' => 'text',
+ 'label-message' => 'newimages-label',
+ 'name' => 'like',
+ ),
+ 'showbots' => array(
+ 'type' => 'check',
+ 'label' => wfMessage( 'showhidebots', wfMsg( 'show' ) ),
+ 'name' => 'showbots',
+ # 'default' => $wgRequest->getBool( 'showbots', 0 ),
+ ),
+ 'limit' => array(
+ 'type' => 'hidden',
+ 'default' => $wgRequest->getText( 'limit' ),
+ 'name' => 'limit',
+ ),
+ 'offset' => array(
+ 'type' => 'hidden',
+ 'default' => $wgRequest->getText( 'offset' ),
+ 'name' => 'offset',
+ ),
);
- }
-
- $prevnext = '<p>' . $botLink . ' '. wfMsgHtml( 'viewprevnext', $prevLink, $nextLink, $dateLink ) .'</p>';
+ if( $wgMiserMode ){
+ unset( $fields['like'] );
+ }
- if ($shownav)
- $wgOut->addHTML( $prevnext );
+ $form = new HTMLForm( $fields );
+ $form->setTitle( $this->getTitle() );
+ $form->setSubmitText( wfMsg( 'ilsubmit' ) );
+ $form->setMethod( 'get' );
+ $form->setWrapperLegend( wfMsg( 'newimages-legend' ) );
- if( count( $images ) ) {
- $wgOut->addHTML( $gallery->toHTML() );
- if ($shownav)
- $wgOut->addHTML( $prevnext );
- } else {
- $wgOut->addWikiMsg( 'noimages' );
+ return $form;
}
}
diff --git a/includes/specials/SpecialNewpages.php b/includes/specials/SpecialNewpages.php
index 3235436a..bf9fb9f7 100644
--- a/includes/specials/SpecialNewpages.php
+++ b/includes/specials/SpecialNewpages.php
@@ -29,7 +29,12 @@
class SpecialNewpages extends IncludableSpecialPage {
// Stored objects
- protected $opts, $skin;
+
+ /**
+ * @var FormOptions
+ */
+ protected $opts;
+ protected $customFilters;
// Some internal settings
protected $showNavigation = false;
@@ -39,24 +44,30 @@ class SpecialNewpages extends IncludableSpecialPage {
}
protected function setup( $par ) {
- global $wgRequest, $wgUser, $wgEnableNewpagesUserFilter;
+ global $wgEnableNewpagesUserFilter;
// Options
$opts = new FormOptions();
$this->opts = $opts; // bind
$opts->add( 'hideliu', false );
- $opts->add( 'hidepatrolled', $wgUser->getBoolOption( 'newpageshidepatrolled' ) );
+ $opts->add( 'hidepatrolled', $this->getUser()->getBoolOption( 'newpageshidepatrolled' ) );
$opts->add( 'hidebots', false );
$opts->add( 'hideredirs', true );
- $opts->add( 'limit', (int)$wgUser->getOption( 'rclimit' ) );
+ $opts->add( 'limit', (int)$this->getUser()->getOption( 'rclimit' ) );
$opts->add( 'offset', '' );
$opts->add( 'namespace', '0' );
$opts->add( 'username', '' );
$opts->add( 'feed', '' );
$opts->add( 'tagfilter', '' );
+ $this->customFilters = array();
+ wfRunHooks( 'SpecialNewPagesFilters', array( $this, &$this->customFilters ) );
+ foreach( $this->customFilters as $key => $params ) {
+ $opts->add( $key, $params['default'] );
+ }
+
// Set values
- $opts->fetchValuesFromRequest( $wgRequest );
+ $opts->fetchValuesFromRequest( $this->getRequest() );
if ( $par ) $this->parseParams( $par );
// Validate
@@ -64,36 +75,42 @@ class SpecialNewpages extends IncludableSpecialPage {
if( !$wgEnableNewpagesUserFilter ) {
$opts->setValue( 'username', '' );
}
-
- // Store some objects
- $this->skin = $wgUser->getSkin();
}
protected function parseParams( $par ) {
global $wgLang;
$bits = preg_split( '/\s*,\s*/', trim( $par ) );
foreach ( $bits as $bit ) {
- if ( 'shownav' == $bit )
+ if ( 'shownav' == $bit ) {
$this->showNavigation = true;
- if ( 'hideliu' === $bit )
+ }
+ if ( 'hideliu' === $bit ) {
$this->opts->setValue( 'hideliu', true );
- if ( 'hidepatrolled' == $bit )
+ }
+ if ( 'hidepatrolled' == $bit ) {
$this->opts->setValue( 'hidepatrolled', true );
- if ( 'hidebots' == $bit )
+ }
+ if ( 'hidebots' == $bit ) {
$this->opts->setValue( 'hidebots', true );
- if ( 'showredirs' == $bit )
+ }
+ if ( 'showredirs' == $bit ) {
$this->opts->setValue( 'hideredirs', false );
- if ( is_numeric( $bit ) )
+ }
+ if ( is_numeric( $bit ) ) {
$this->opts->setValue( 'limit', intval( $bit ) );
+ }
$m = array();
- if ( preg_match( '/^limit=(\d+)$/', $bit, $m ) )
- $this->opts->setValue( 'limit', intval($m[1]) );
+ if ( preg_match( '/^limit=(\d+)$/', $bit, $m ) ) {
+ $this->opts->setValue( 'limit', intval( $m[1] ) );
+ }
// PG offsets not just digits!
- if ( preg_match( '/^offset=([^=]+)$/', $bit, $m ) )
- $this->opts->setValue( 'offset', intval($m[1]) );
- if ( preg_match( '/^username=(.*)$/', $bit, $m ) )
+ if ( preg_match( '/^offset=([^=]+)$/', $bit, $m ) ) {
+ $this->opts->setValue( 'offset', intval( $m[1] ) );
+ }
+ if ( preg_match( '/^username=(.*)$/', $bit, $m ) ) {
$this->opts->setValue( 'username', $m[1] );
+ }
if ( preg_match( '/^namespace=(.*)$/', $bit, $m ) ) {
$ns = $wgLang->getNsIndex( $m[1] );
if( $ns !== false ) {
@@ -110,7 +127,7 @@ class SpecialNewpages extends IncludableSpecialPage {
* @return String
*/
public function execute( $par ) {
- global $wgOut;
+ $out = $this->getOutput();
$this->setHeaders();
$this->outputHeader();
@@ -135,15 +152,17 @@ class SpecialNewpages extends IncludableSpecialPage {
if( $pager->getNumRows() ) {
$navigation = '';
- if ( $this->showNavigation ) $navigation = $pager->getNavigationBar();
- $wgOut->addHTML( $navigation . $pager->getBody() . $navigation );
+ if ( $this->showNavigation ) {
+ $navigation = $pager->getNavigationBar();
+ }
+ $out->addHTML( $navigation . $pager->getBody() . $navigation );
} else {
- $wgOut->addWikiMsg( 'specialpage-empty' );
+ $out->addWikiMsg( 'specialpage-empty' );
}
}
protected function filterLinks() {
- global $wgGroupPermissions, $wgUser, $wgLang;
+ global $wgGroupPermissions, $wgLang;
// show/hide links
$showhide = array( wfMsgHtml( 'show' ), wfMsgHtml( 'hide' ) );
@@ -155,24 +174,28 @@ class SpecialNewpages extends IncludableSpecialPage {
'hidebots' => 'rcshowhidebots',
'hideredirs' => 'whatlinkshere-hideredirs'
);
+ foreach ( $this->customFilters as $key => $params ) {
+ $filters[$key] = $params['msg'];
+ }
// Disable some if needed
- # FIXME: throws E_NOTICEs if not set; and doesn't obey hooks etc
- if ( $wgGroupPermissions['*']['createpage'] !== true )
- unset($filters['hideliu']);
-
- if ( !$wgUser->useNPPatrol() )
- unset($filters['hidepatrolled']);
+ # @todo FIXME: Throws E_NOTICEs if not set; and doesn't obey hooks etc.
+ if ( $wgGroupPermissions['*']['createpage'] !== true ) {
+ unset( $filters['hideliu'] );
+ }
+ if ( !$this->getUser()->useNPPatrol() ) {
+ unset( $filters['hidepatrolled'] );
+ }
$links = array();
$changed = $this->opts->getChangedValues();
- unset($changed['offset']); // Reset offset if query type changes
+ unset( $changed['offset'] ); // Reset offset if query type changes
$self = $this->getTitle();
foreach ( $filters as $key => $msg ) {
- $onoff = 1 - $this->opts->getValue($key);
- $link = $this->skin->link( $self, $showhide[$onoff], array(),
- array( $key => $onoff ) + $changed
+ $onoff = 1 - $this->opts->getValue( $key );
+ $link = $this->getSkin()->link( $self, $showhide[$onoff], array(),
+ array( $key => $onoff ) + $changed
);
$links[$key] = wfMsgHtml( $msg, $link );
}
@@ -181,7 +204,7 @@ class SpecialNewpages extends IncludableSpecialPage {
}
protected function form() {
- global $wgOut, $wgEnableNewpagesUserFilter, $wgScript;
+ global $wgEnableNewpagesUserFilter, $wgScript;
// Consume values
$this->opts->consumeValue( 'offset' ); // don't carry offset, DWIW
@@ -201,61 +224,62 @@ class SpecialNewpages extends IncludableSpecialPage {
$hidden = implode( "\n", $hidden );
$tagFilter = ChangeTags::buildTagFilterSelector( $tagFilterVal );
- if ($tagFilter)
+ if ( $tagFilter ) {
list( $tagFilterLabel, $tagFilterSelector ) = $tagFilter;
+ }
$form = Xml::openElement( 'form', array( 'action' => $wgScript ) ) .
Html::hidden( 'title', $this->getTitle()->getPrefixedDBkey() ) .
Xml::fieldset( wfMsg( 'newpages' ) ) .
Xml::openElement( 'table', array( 'id' => 'mw-newpages-table' ) ) .
- "<tr>
- <td class='mw-label'>" .
+ '<tr>
+ <td class="mw-label">' .
Xml::label( wfMsg( 'namespace' ), 'namespace' ) .
- "</td>
- <td class='mw-input'>" .
+ '</td>
+ <td class="mw-input">' .
Xml::namespaceSelector( $namespace, 'all' ) .
- "</td>
- </tr>" . ( $tagFilter ? (
- "<tr>
- <td class='mw-label'>" .
+ '</td>
+ </tr>' . ( $tagFilter ? (
+ '<tr>
+ <td class="mw-label">' .
$tagFilterLabel .
- "</td>
- <td class='mw-input'>" .
+ '</td>
+ <td class="mw-input">' .
$tagFilterSelector .
- "</td>
- </tr>" ) : '' ) .
- ($wgEnableNewpagesUserFilter ?
- "<tr>
- <td class='mw-label'>" .
+ '</td>
+ </tr>' ) : '' ) .
+ ( $wgEnableNewpagesUserFilter ?
+ '<tr>
+ <td class="mw-label">' .
Xml::label( wfMsg( 'newpages-username' ), 'mw-np-username' ) .
- "</td>
- <td class='mw-input'>" .
+ '</td>
+ <td class="mw-input">' .
Xml::input( 'username', 30, $userText, array( 'id' => 'mw-np-username' ) ) .
- "</td>
- </tr>" : "" ) .
- "<tr> <td></td>
- <td class='mw-submit'>" .
+ '</td>
+ </tr>' : '' ) .
+ '<tr> <td></td>
+ <td class="mw-submit">' .
Xml::submitButton( wfMsg( 'allpagessubmit' ) ) .
- "</td>
- </tr>" .
- "<tr>
+ '</td>
+ </tr>' .
+ '<tr>
<td></td>
- <td class='mw-input'>" .
+ <td class="mw-input">' .
$this->filterLinks() .
- "</td>
- </tr>" .
+ '</td>
+ </tr>' .
Xml::closeElement( 'table' ) .
Xml::closeElement( 'fieldset' ) .
$hidden .
Xml::closeElement( 'form' );
- $wgOut->addHTML( $form );
+ $this->getOutput()->addHTML( $form );
}
protected function setSyndicated() {
- global $wgOut;
- $wgOut->setSyndicated( true );
- $wgOut->setFeedAppendQuery( wfArrayToCGI( $this->opts->getAllValues() ) );
+ $out = $this->getOutput();
+ $out->setSyndicated( true );
+ $out->setFeedAppendQuery( wfArrayToCGI( $this->opts->getAllValues() ) );
}
/**
@@ -265,11 +289,20 @@ class SpecialNewpages extends IncludableSpecialPage {
* @return String
*/
public function formatRow( $result ) {
- global $wgLang, $wgContLang;
+ global $wgLang;
+
+ # Revision deletion works on revisions, so we should cast one
+ $row = array(
+ 'comment' => $result->rc_comment,
+ 'deleted' => $result->rc_deleted,
+ 'user_text' => $result->rc_user_text,
+ 'user' => $result->rc_user,
+ );
+ $rev = new Revision( $row );
$classes = array();
-
- $dm = $wgContLang->getDirMark();
+
+ $dm = $wgLang->getDirMark();
$title = Title::makeTitleSafe( $result->rc_namespace, $result->rc_title );
$time = Html::element( 'span', array( 'class' => 'mw-newpages-time' ),
@@ -278,17 +311,18 @@ class SpecialNewpages extends IncludableSpecialPage {
$query = array( 'redirect' => 'no' );
- if( $this->patrollable( $result ) )
+ if( $this->patrollable( $result ) ) {
$query['rcid'] = $result->rc_id;
+ }
- $plink = $this->skin->linkKnown(
+ $plink = $this->getSkin()->linkKnown(
$title,
null,
array( 'class' => 'mw-newpages-pagename' ),
$query,
array( 'known' ) // Set explicitly to avoid the default of 'known','noclasses'. This breaks the colouration for stubs
);
- $histLink = $this->skin->linkKnown(
+ $histLink = $this->getSkin()->linkKnown(
$title,
wfMsgHtml( 'hist' ),
array(),
@@ -300,10 +334,10 @@ class SpecialNewpages extends IncludableSpecialPage {
'[' . wfMsgExt( 'nbytes', array( 'parsemag', 'escape' ), $wgLang->formatNum( $result->length ) ) .
']'
);
- $ulink = $this->skin->userLink( $result->rc_user, $result->rc_user_text ) . ' ' .
- $this->skin->userToolLinks( $result->rc_user, $result->rc_user_text );
- $comment = $this->skin->commentBlock( $result->rc_comment );
-
+
+ $ulink = $this->getSkin()->revUserTools( $rev );
+ $comment = $this->getSkin()->revComment( $rev );
+
if ( $this->patrollable( $result ) ) {
$classes[] = 'not-patrolled';
}
@@ -321,7 +355,7 @@ class SpecialNewpages extends IncludableSpecialPage {
$tagDisplay = '';
}
- $css = count($classes) ? ' class="'.implode( " ", $classes).'"' : '';
+ $css = count( $classes ) ? ' class="' . implode( ' ', $classes ) . '"' : '';
return "<li{$css}>{$time} {$dm}{$plink} {$hist} {$dm}{$length} {$dm}{$ulink} {$comment} {$tagDisplay}</li>\n";
}
@@ -333,8 +367,7 @@ class SpecialNewpages extends IncludableSpecialPage {
* @return Boolean
*/
protected function patrollable( $result ) {
- global $wgUser;
- return ( $wgUser->useNPPatrol() && !$result->rc_patrolled );
+ return ( $this->getUser()->useNPPatrol() && !$result->rc_patrolled );
}
/**
@@ -343,22 +376,23 @@ class SpecialNewpages extends IncludableSpecialPage {
* @param $type String
*/
protected function feed( $type ) {
- global $wgFeed, $wgFeedClasses, $wgFeedLimit, $wgOut;
+ global $wgFeed, $wgFeedClasses, $wgFeedLimit;
if ( !$wgFeed ) {
- $wgOut->addWikiMsg( 'feed-unavailable' );
+ $this->getOutput()->addWikiMsg( 'feed-unavailable' );
return;
}
if( !isset( $wgFeedClasses[$type] ) ) {
- $wgOut->addWikiMsg( 'feed-invalid' );
+ $this->getOutput()->addWikiMsg( 'feed-invalid' );
return;
}
$feed = new $wgFeedClasses[$type](
$this->feedTitle(),
wfMsgExt( 'tagline', 'parsemag' ),
- $this->getTitle()->getFullUrl() );
+ $this->getTitle()->getFullUrl()
+ );
$pager = new NewPagesPager( $this, $this->opts );
$limit = $this->opts->getValue( 'limit' );
@@ -375,8 +409,7 @@ class SpecialNewpages extends IncludableSpecialPage {
protected function feedTitle() {
global $wgLanguageCode, $wgSitename;
- $page = SpecialPage::getPage( 'Newpages' );
- $desc = $page->getDescription();
+ $desc = $this->getDescription();
return "$wgSitename - $desc [$wgLanguageCode]";
}
@@ -392,7 +425,8 @@ class SpecialNewpages extends IncludableSpecialPage {
$title->getFullURL(),
$date,
$this->feedItemAuthor( $row ),
- $comments);
+ $comments
+ );
} else {
return null;
}
@@ -406,7 +440,7 @@ class SpecialNewpages extends IncludableSpecialPage {
$revision = Revision::newFromId( $row->rev_id );
if( $revision ) {
return '<p>' . htmlspecialchars( $revision->getUserText() ) . wfMsgForContent( 'colon-separator' ) .
- htmlspecialchars( FeedItem::stripComment( $revision->getComment() ) ) .
+ htmlspecialchars( FeedItem::stripComment( $revision->getComment() ) ) .
"</p>\n<hr />\n<div>" .
nl2br( htmlspecialchars( $revision->getText() ) ) . "</div>";
}
@@ -419,7 +453,12 @@ class SpecialNewpages extends IncludableSpecialPage {
*/
class NewPagesPager extends ReverseChronologicalPager {
// Stored opts
- protected $opts, $mForm;
+ protected $opts;
+
+ /**
+ * @var HtmlForm
+ */
+ protected $mForm;
function __construct( $form, FormOptions $opts ) {
parent::__construct();
@@ -427,15 +466,30 @@ class NewPagesPager extends ReverseChronologicalPager {
$this->opts = $opts;
}
+ /**
+ * @return Title
+ */
function getTitle() {
static $title = null;
- if ( $title === null )
+ if ( $title === null ) {
$title = $this->mForm->getTitle();
+ }
return $title;
}
+ /**
+ * @return User
+ */
+ function getUser() {
+ static $user = null;
+ if ( $user === null ) {
+ $user = $this->mForm->getUser();
+ }
+ return $user;
+ }
+
function getQueryInfo() {
- global $wgEnableNewpagesUserFilter, $wgGroupPermissions, $wgUser;
+ global $wgEnableNewpagesUserFilter, $wgGroupPermissions;
$conds = array();
$conds['rc_new'] = 1;
@@ -461,7 +515,7 @@ class NewPagesPager extends ReverseChronologicalPager {
$conds['rc_user'] = 0;
}
# If this user cannot see patrolled edits or they are off, don't do dumb queries!
- if( $this->opts->getValue( 'hidepatrolled' ) && $wgUser->useNPPatrol() ) {
+ if( $this->opts->getValue( 'hidepatrolled' ) && $this->getUser()->useNPPatrol() ) {
$conds['rc_patrolled'] = 0;
}
if( $this->opts->getValue( 'hidebots' ) ) {
@@ -471,31 +525,39 @@ class NewPagesPager extends ReverseChronologicalPager {
if ( $this->opts->getValue( 'hideredirs' ) ) {
$conds['page_is_redirect'] = 0;
}
-
+
// Allow changes to the New Pages query
- wfRunHooks('SpecialNewpagesConditions', array(&$this, $this->opts, &$conds));
+ $tables = array( 'recentchanges', 'page' );
+ $fields = array(
+ 'rc_namespace', 'rc_title', 'rc_cur_id', 'rc_user', 'rc_user_text',
+ 'rc_comment', 'rc_timestamp', 'rc_patrolled','rc_id', 'rc_deleted',
+ 'page_len AS length', 'page_latest AS rev_id', 'ts_tags'
+ );
+ $join_conds = array( 'page' => array( 'INNER JOIN', 'page_id=rc_cur_id' ) );
+
+ wfRunHooks( 'SpecialNewpagesConditions',
+ array( &$this, $this->opts, &$conds, &$tables, &$fields, &$join_conds ) );
$info = array(
- 'tables' => array( 'recentchanges', 'page' ),
- 'fields' => 'rc_namespace,rc_title, rc_cur_id, rc_user,rc_user_text,rc_comment,
- rc_timestamp,rc_patrolled,rc_id,page_len as length, page_latest as rev_id, ts_tags',
- 'conds' => $conds,
- 'options' => array( 'USE INDEX' => array('recentchanges' => $rcIndexes) ),
- 'join_conds' => array(
- 'page' => array('INNER JOIN', 'page_id=rc_cur_id'),
- ),
+ 'tables' => $tables,
+ 'fields' => $fields,
+ 'conds' => $conds,
+ 'options' => array( 'USE INDEX' => array( 'recentchanges' => $rcIndexes ) ),
+ 'join_conds' => $join_conds
);
- ## Empty array for fields, it'll be set by us anyway.
+ // Empty array for fields, it'll be set by us anyway.
$fields = array();
- ## Modify query for tags
- ChangeTags::modifyDisplayQuery( $info['tables'],
- $fields,
- $info['conds'],
- $info['join_conds'],
- $info['options'],
- $this->opts['tagfilter'] );
+ // Modify query for tags
+ ChangeTags::modifyDisplayQuery(
+ $info['tables'],
+ $fields,
+ $info['conds'],
+ $info['join_conds'],
+ $info['options'],
+ $this->opts['tagfilter']
+ );
return $info;
}
@@ -517,10 +579,10 @@ class NewPagesPager extends ReverseChronologicalPager {
$linkBatch->add( $row->rc_namespace, $row->rc_title );
}
$linkBatch->execute();
- return "<ul>";
+ return '<ul>';
}
function getEndBody() {
- return "</ul>";
+ return '</ul>';
}
}
diff --git a/includes/specials/SpecialPasswordReset.php b/includes/specials/SpecialPasswordReset.php
new file mode 100644
index 00000000..1caa2c51
--- /dev/null
+++ b/includes/specials/SpecialPasswordReset.php
@@ -0,0 +1,273 @@
+<?php
+/**
+ * Implements Special:Blankpage
+ *
+ * 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 SpecialPage
+ */
+
+/**
+ * Special page for requesting a password reset email
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialPasswordReset extends FormSpecialPage {
+
+ public function __construct() {
+ parent::__construct( 'PasswordReset' );
+ }
+
+ public function userCanExecute( User $user ) {
+ $error = $this->canChangePassword( $user );
+ if ( is_string( $error ) ) {
+ throw new ErrorPageError( 'internalerror', $error );
+ } else if ( !$error ) {
+ throw new ErrorPageError( 'internalerror', 'resetpass_forbidden' );
+ }
+
+ return parent::userCanExecute( $user );
+ }
+
+ protected function getFormFields() {
+ global $wgPasswordResetRoutes, $wgAuth;
+ $a = array();
+ if ( isset( $wgPasswordResetRoutes['username'] ) && $wgPasswordResetRoutes['username'] ) {
+ $a['Username'] = array(
+ 'type' => 'text',
+ 'label-message' => 'passwordreset-username',
+ );
+ }
+
+ if ( isset( $wgPasswordResetRoutes['email'] ) && $wgPasswordResetRoutes['email'] ) {
+ $a['Email'] = array(
+ 'type' => 'email',
+ 'label-message' => 'passwordreset-email',
+ );
+ }
+
+ if ( isset( $wgPasswordResetRoutes['domain'] ) && $wgPasswordResetRoutes['domain'] ) {
+ $domains = $wgAuth->domainList();
+ $a['Domain'] = array(
+ 'type' => 'select',
+ 'options' => $domains,
+ 'label-message' => 'passwordreset-domain',
+ );
+ }
+
+ return $a;
+ }
+
+ public function alterForm( HTMLForm $form ) {
+ $form->setSubmitText( wfMessage( "mailmypassword" ) );
+ }
+
+ protected function preText() {
+ global $wgPasswordResetRoutes;
+ $i = 0;
+ if ( isset( $wgPasswordResetRoutes['username'] ) && $wgPasswordResetRoutes['username'] ) {
+ $i++;
+ }
+ if ( isset( $wgPasswordResetRoutes['email'] ) && $wgPasswordResetRoutes['email'] ) {
+ $i++;
+ }
+ if ( isset( $wgPasswordResetRoutes['domain'] ) && $wgPasswordResetRoutes['domain'] ) {
+ $i++;
+ }
+ return wfMessage( 'passwordreset-pretext', $i )->parseAsBlock();
+ }
+
+ /**
+ * Process the form. At this point we know that the user passes all the criteria in
+ * userCanExecute(), and if the data array contains 'Username', etc, then Username
+ * resets are allowed.
+ * @param $data array
+ * @return Bool|Array
+ */
+ public function onSubmit( array $data ) {
+ global $wgAuth;
+
+ if ( isset( $data['Domain'] ) ) {
+ if ( $wgAuth->validDomain( $data['Domain'] ) ) {
+ $wgAuth->setDomain( $data['Domain'] );
+ } else {
+ $wgAuth->setDomain( 'invaliddomain' );
+ }
+ }
+
+ if ( isset( $data['Username'] ) && $data['Username'] !== '' ) {
+ $method = 'username';
+ $users = array( User::newFromName( $data['Username'] ) );
+ } elseif ( isset( $data['Email'] )
+ && $data['Email'] !== ''
+ && Sanitizer::validateEmail( $data['Email'] ) )
+ {
+ $method = 'email';
+ $res = wfGetDB( DB_SLAVE )->select(
+ 'user',
+ '*',
+ array( 'user_email' => $data['Email'] ),
+ __METHOD__
+ );
+ if ( $res ) {
+ $users = array();
+ foreach( $res as $row ){
+ $users[] = User::newFromRow( $row );
+ }
+ } else {
+ // Some sort of database error, probably unreachable
+ throw new MWException( 'Unknown database error in ' . __METHOD__ );
+ }
+ } else {
+ // The user didn't supply any data
+ return false;
+ }
+
+ // Check for hooks (captcha etc), and allow them to modify the users list
+ $error = array();
+ if ( !wfRunHooks( 'SpecialPasswordResetOnSubmit', array( &$users, $data, &$error ) ) ) {
+ return array( $error );
+ }
+
+ if( count( $users ) == 0 ){
+ if( $method == 'email' ){
+ // Don't reveal whether or not an email address is in use
+ return true;
+ } else {
+ return array( 'noname' );
+ }
+ }
+
+ $firstUser = $users[0];
+
+ if ( !$firstUser instanceof User || !$firstUser->getID() ) {
+ return array( array( 'nosuchuser', $data['Username'] ) );
+ }
+
+ // Check against the rate limiter
+ if ( $this->getUser()->pingLimiter( 'mailpassword' ) ) {
+ throw new ThrottledError;
+ }
+
+ // Check against password throttle
+ foreach ( $users as $user ) {
+ if ( $user->isPasswordReminderThrottled() ) {
+ global $wgPasswordReminderResendTime;
+ # Round the time in hours to 3 d.p., in case someone is specifying
+ # minutes or seconds.
+ return array( array( 'throttled-mailpassword', round( $wgPasswordReminderResendTime, 3 ) ) );
+ }
+ }
+
+ global $wgNewPasswordExpiry;
+
+ // All the users will have the same email address
+ if ( $firstUser->getEmail() == '' ) {
+ // This won't be reachable from the email route, so safe to expose the username
+ return array( array( 'noemail', $firstUser->getName() ) );
+ }
+
+ // We need to have a valid IP address for the hook, but per bug 18347, we should
+ // send the user's name if they're logged in.
+ $ip = wfGetIP();
+ if ( !$ip ) {
+ return array( 'badipaddress' );
+ }
+ $caller = $this->getUser();
+ wfRunHooks( 'User::mailPasswordInternal', array( &$caller, &$ip, &$firstUser ) );
+ $username = $caller->getName();
+ $msg = IP::isValid( $username )
+ ? 'passwordreset-emailtext-ip'
+ : 'passwordreset-emailtext-user';
+
+ $passwords = array();
+ foreach ( $users as $user ) {
+ $password = $user->randomPassword();
+ $user->setNewpassword( $password );
+ $user->saveSettings();
+ $passwords[] = wfMessage( 'passwordreset-emailelement', $user->getName(), $password );
+ }
+ $passwordBlock = implode( "\n\n", $passwords );
+
+ // Send in the user's language; which should hopefully be the same
+ $userLanguage = $firstUser->getOption( 'language' );
+
+ $body = wfMessage( $msg )->inLanguage( $userLanguage );
+ $body->params(
+ $username,
+ $passwordBlock,
+ count( $passwords ),
+ Title::newMainPage()->getCanonicalUrl(),
+ round( $wgNewPasswordExpiry / 86400 )
+ );
+
+ $title = wfMessage( 'passwordreset-emailtitle' );
+
+ $result = $firstUser->sendMail( $title->text(), $body->text() );
+
+ if ( $result->isGood() ) {
+ return true;
+ } else {
+ // @todo FIXME: The email didn't send, but we have already set the password throttle
+ // timestamp, so they won't be able to try again until it expires... :(
+ return array( array( 'mailerror', $result->getMessage() ) );
+ }
+ }
+
+ public function onSuccess() {
+ $this->getOutput()->addWikiMsg( 'passwordreset-emailsent' );
+ $this->getOutput()->returnToMain();
+ }
+
+ function canChangePassword(User $user) {
+ global $wgPasswordResetRoutes, $wgAuth;
+
+ // Maybe password resets are disabled, or there are no allowable routes
+ if ( !is_array( $wgPasswordResetRoutes ) ||
+ !in_array( true, array_values( $wgPasswordResetRoutes ) ) ) {
+ return 'passwordreset-disabled';
+ }
+
+ // Maybe the external auth plugin won't allow local password changes
+ if ( !$wgAuth->allowPasswordChange() ) {
+ return 'resetpass_forbidden';
+ }
+
+ // Maybe the user is blocked (check this here rather than relying on the parent
+ // method as we have a more specific error message to use here
+ if ( $user->isBlocked() ) {
+ return 'blocked-mailpassword';
+ }
+
+ return true;
+ }
+
+
+ /**
+ * Hide the password reset page if resets are disabled.
+ * @return Bool
+ */
+ function isListed() {
+ global $wgUser;
+
+ if ( $this->canChangePassword( $wgUser ) === true ) {
+ return parent::isListed();
+ }
+
+ return false;
+ }
+} \ No newline at end of file
diff --git a/includes/specials/SpecialPopularpages.php b/includes/specials/SpecialPopularpages.php
index 375cefdf..7c7190ad 100644
--- a/includes/specials/SpecialPopularpages.php
+++ b/includes/specials/SpecialPopularpages.php
@@ -28,8 +28,8 @@
*/
class PopularPagesPage extends QueryPage {
- function getName() {
- return "Popularpages";
+ function __construct( $name = 'Popularpages' ) {
+ parent::__construct( $name );
}
function isExpensive() {
@@ -38,31 +38,21 @@ class PopularPagesPage extends QueryPage {
}
function isSyndicated() { return false; }
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- $page = $dbr->tableName( 'page' );
-
- $query =
- "SELECT 'Popularpages' as type,
- page_namespace as namespace,
- page_title as title,
- page_counter as value
- FROM $page ";
- $where =
- "WHERE page_is_redirect=0 AND page_namespace";
-
- global $wgContentNamespaces;
- if( empty( $wgContentNamespaces ) ) {
- $where .= '='.NS_MAIN;
- } else if( count( $wgContentNamespaces ) > 1 ) {
- $where .= ' in (' . implode( ', ', $wgContentNamespaces ) . ')';
- } else {
- $where .= '='.$wgContentNamespaces[0];
- }
-
- return $query . $where;
+ function getQueryInfo() {
+ return array (
+ 'tables' => array( 'page' ),
+ 'fields' => array( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'page_counter AS value'),
+ 'conds' => array( 'page_is_redirect' => 0,
+ 'page_namespace' => MWNamespace::getContentNamespaces() ) );
}
+ /**
+ * @param $skin Skin
+ * @param $result
+ * @return string
+ */
function formatResult( $skin, $result ) {
global $wgLang, $wgContLang;
$title = Title::makeTitle( $result->namespace, $result->title );
@@ -78,14 +68,3 @@ class PopularPagesPage extends QueryPage {
return wfSpecialList($link, $nv);
}
}
-
-/**
- * Constructor
- */
-function wfSpecialPopularpages() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $ppp = new PopularPagesPage();
-
- return $ppp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialPreferences.php b/includes/specials/SpecialPreferences.php
index e63aeee6..edc26bc1 100644
--- a/includes/specials/SpecialPreferences.php
+++ b/includes/specials/SpecialPreferences.php
@@ -52,7 +52,6 @@ class SpecialPreferences extends SpecialPage {
return;
}
- $wgOut->addModules( 'mediawiki.legacy.prefs' );
$wgOut->addModules( 'mediawiki.special.preferences' );
if ( $wgRequest->getCheck( 'success' ) ) {
@@ -61,7 +60,7 @@ class SpecialPreferences extends SpecialPage {
'savedprefs'
);
}
-
+
if ( $wgRequest->getCheck( 'eauth' ) ) {
$wgOut->wrapWikiMsg( "<div class='error' style='clear: both;'>\n$1\n</div>",
'eauthentsent', $wgUser->getName() );
@@ -78,7 +77,7 @@ class SpecialPreferences extends SpecialPage {
$wgOut->addWikiMsg( 'prefs-reset-intro' );
- $htmlForm = new HTMLForm( array(), 'prefs-restore' );
+ $htmlForm = new HTMLForm( array(), $this->getContext(), 'prefs-restore' );
$htmlForm->setSubmitText( wfMsg( 'restoreprefs' ) );
$htmlForm->setTitle( $this->getTitle( 'reset' ) );
diff --git a/includes/specials/SpecialPrefixindex.php b/includes/specials/SpecialPrefixindex.php
index 09e7734c..28be4daf 100644
--- a/includes/specials/SpecialPrefixindex.php
+++ b/includes/specials/SpecialPrefixindex.php
@@ -28,11 +28,11 @@
*/
class SpecialPrefixindex extends SpecialAllpages {
// Inherit $maxPerPage
-
+
function __construct(){
parent::__construct( 'Prefixindex' );
}
-
+
/**
* Entry point : initialise variables and call subfunctions.
* @param $par String: becomes "FOO" when called like Special:Prefixindex/FOO (default null)
@@ -42,34 +42,39 @@ class SpecialPrefixindex extends SpecialAllpages {
$this->setHeaders();
$this->outputHeader();
+ $wgOut->addModuleStyles( 'mediawiki.special' );
# GET values
$from = $wgRequest->getVal( 'from', '' );
$prefix = $wgRequest->getVal( 'prefix', '' );
- $namespace = $wgRequest->getInt( 'namespace' );
- $namespaces = $wgContLang->getNamespaces();
+ $ns = $wgRequest->getIntOrNull( 'namespace' );
+ $namespace = (int)$ns; // if no namespace given, use 0 (NS_MAIN).
- $wgOut->setPagetitle( ( $namespace > 0 && in_array( $namespace, array_keys( $namespaces ) ) )
- ? wfMsg( 'allinnamespace', str_replace( '_', ' ', $namespaces[$namespace] ) )
- : wfMsg( 'prefixindex' )
+ $namespaces = $wgContLang->getNamespaces();
+ $wgOut->setPagetitle(
+ ( $namespace > 0 && in_array( $namespace, array_keys( $namespaces ) ) )
+ ? wfMsg( 'allinnamespace', str_replace( '_', ' ', $namespaces[$namespace] ) )
+ : wfMsg( 'prefixindex' )
);
$showme = '';
- if( isset( $par ) ){
+ if( isset( $par ) ) {
$showme = $par;
- } elseif( $prefix != '' ){
+ } elseif( $prefix != '' ) {
$showme = $prefix;
- } elseif( $from != '' ){
+ } elseif( $from != '' ) {
// For back-compat with Special:Allpages
$showme = $from;
}
- if ($showme != '' || $namespace) {
+
+ // Bug 27864: if transcluded, show all pages instead of the form.
+ if ( $this->including() || $showme != '' || $ns !== null ) {
$this->showPrefixChunk( $namespace, $showme, $from );
} else {
$wgOut->addHTML( $this->namespacePrefixForm( $namespace, null ) );
}
}
-
+
/**
* HTML for the top form
* @param $namespace Integer: a namespace constant (default NS_MAIN).
@@ -115,9 +120,9 @@ class SpecialPrefixindex extends SpecialAllpages {
* @param $from String: list all pages from this name (default FALSE)
*/
function showPrefixChunk( $namespace = NS_MAIN, $prefix, $from = null ) {
- global $wgOut, $wgUser, $wgContLang, $wgLang;
+ global $wgOut, $wgContLang, $wgLang;
- $sk = $wgUser->getSkin();
+ $sk = $this->getSkin();
if (!isset($from)) $from = $prefix;
@@ -126,7 +131,7 @@ class SpecialPrefixindex extends SpecialAllpages {
$namespaces = $wgContLang->getNamespaces();
if ( !$prefixList || !$fromList ) {
- $out = wfMsgWikiHtml( 'allpagesbadtitle' );
+ $out = wfMsgExt( 'allpagesbadtitle', 'parse' );
} elseif ( !in_array( $namespace, array_keys( $namespaces ) ) ) {
// Show errormessage and reset to NS_MAIN
$out = wfMsgExt( 'allpages-bad-ns', array( 'parseinline' ), $namespace );
@@ -135,7 +140,7 @@ class SpecialPrefixindex extends SpecialAllpages {
list( $namespace, $prefixKey, $prefix ) = $prefixList;
list( /* $fromNS */, $fromKey, ) = $fromList;
- ### FIXME: should complain if $fromNs != $namespace
+ ### @todo FIXME: Should complain if $fromNs != $namespace
$dbr = wfGetDB( DB_SLAVE );
@@ -154,12 +159,12 @@ class SpecialPrefixindex extends SpecialAllpages {
)
);
- ### FIXME: side link to previous
+ ### @todo FIXME: Side link to previous
$n = 0;
if( $res->numRows() > 0 ) {
$out = Xml::openElement( 'table', array( 'border' => '0', 'id' => 'mw-prefixindex-list-table' ) );
-
+
while( ( $n < $this->maxPerPage ) && ( $s = $res->fetchObject() ) ) {
$t = Title::makeTitle( $s->page_namespace, $s->page_title );
if( $t ) {
@@ -190,6 +195,7 @@ class SpecialPrefixindex extends SpecialAllpages {
}
}
+ $footer = '';
if ( $this->including() ) {
$out2 = '';
} else {
@@ -200,8 +206,7 @@ class SpecialPrefixindex extends SpecialAllpages {
<td>' .
$nsForm .
'</td>
- <td id="mw-prefixindex-nav-form">' .
- $sk->linkKnown( $self, wfMsgHtml( 'allpages' ) );
+ <td id="mw-prefixindex-nav-form" class="mw-prefixindex-nav">';
if( isset( $res ) && $res && ( $n == $this->maxPerPage ) && ( $s = $res->fetchObject() ) ) {
$query = array(
@@ -213,20 +218,21 @@ class SpecialPrefixindex extends SpecialAllpages {
$query['namespace'] = $namespace;
}
- $out2 = $wgLang->pipeList( array(
- $out2,
- $sk->linkKnown(
+ $nextLink = Linker::linkKnown(
$self,
wfMsgHtml( 'nextpage', str_replace( '_',' ', htmlspecialchars( $s->page_title ) ) ),
array(),
$query
- )
- ) );
+ );
+ $out2 .= $nextLink;
+
+ $footer = "\n" . Html::element( "hr" )
+ . Html::rawElement( "div", array( "class" => "mw-prefixindex-nav" ), $nextLink );
}
$out2 .= "</td></tr>" .
Xml::closeElement( 'table' );
}
- $wgOut->addHTML( $out2 . $out );
+ $this->getOutput()->addHTML( $out2 . $out . $footer );
}
}
diff --git a/includes/specials/SpecialProtectedpages.php b/includes/specials/SpecialProtectedpages.php
index c676aa00..b1f61f09 100644
--- a/includes/specials/SpecialProtectedpages.php
+++ b/includes/specials/SpecialProtectedpages.php
@@ -76,14 +76,16 @@ class SpecialProtectedpages extends SpecialPage {
* @return string Formatted <li> element
*/
public function formatRow( $row ) {
- global $wgUser, $wgLang, $wgContLang;
+ global $wgUser, $wgLang;
wfProfileIn( __METHOD__ );
- static $skin=null;
+ static $skin = null, $infinity = null;
- if( is_null( $skin ) )
+ if( is_null( $skin ) ){
$skin = $wgUser->getSkin();
+ $infinity = wfGetDB( DB_SLAVE )->getInfinity();
+ }
$title = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
$link = $skin->link( $title );
@@ -100,17 +102,21 @@ class SpecialProtectedpages extends SpecialPage {
$stxt = '';
- if( $row->pr_expiry != 'infinity' && strlen($row->pr_expiry) ) {
- $expiry = Block::decodeExpiry( $row->pr_expiry );
+ $expiry = $wgLang->formatExpiry( $row->pr_expiry, TS_MW );
+ if( $expiry != $infinity ) {
- $expiry_description = wfMsg( 'protect-expiring' , $wgLang->timeanddate( $expiry ) ,
- $wgLang->date( $expiry ) , $wgLang->time( $expiry ) );
+ $expiry_description = wfMsg(
+ 'protect-expiring',
+ $wgLang->timeanddate( $expiry ),
+ $wgLang->date( $expiry ),
+ $wgLang->time( $expiry )
+ );
$description_items[] = htmlspecialchars($expiry_description);
}
if(!is_null($size = $row->page_len)) {
- $stxt = $wgContLang->getDirMark() . ' ' . $skin->formatRevisionSize( $size );
+ $stxt = $wgLang->getDirMark() . ' ' . $skin->formatRevisionSize( $size );
}
# Show a link to the change protection form for allowed users otherwise a link to the protection log
@@ -139,7 +145,7 @@ class SpecialProtectedpages extends SpecialPage {
return Html::rawElement(
'li',
array(),
- wfSpecialList( $link . $stxt, $wgLang->commaList( $description_items ) ) . $changeProtection ) . "\n";
+ wfSpecialList( $link . $stxt, $wgLang->commaList( $description_items ), false ) . $changeProtection ) . "\n";
}
/**
@@ -193,7 +199,7 @@ class SpecialProtectedpages extends SpecialPage {
return
Xml::checkLabel( wfMsg('protectedpages-indef'), 'indefonly', 'indefonly', $indefOnly ) . "\n";
}
-
+
/**
* @return string Formatted HTML
*/
@@ -288,7 +294,7 @@ class ProtectedPagesPager extends AlphabeticPager {
public $mForm, $mConds;
private $type, $level, $namespace, $sizetype, $size, $indefonly;
- function __construct( $form, $conds = array(), $type, $level, $namespace, $sizetype='', $size=0,
+ function __construct( $form, $conds = array(), $type, $level, $namespace, $sizetype='', $size=0,
$indefonly = false, $cascadeonly = false )
{
$this->mForm = $form;
@@ -313,6 +319,10 @@ class ProtectedPagesPager extends AlphabeticPager {
return '';
}
+ function getTitle() {
+ return SpecialPage::getTitleFor( 'Protectedpages' );
+ }
+
function formatRow( $row ) {
return $this->mForm->formatRow( $row );
}
@@ -323,15 +333,16 @@ class ProtectedPagesPager extends AlphabeticPager {
'OR pr_expiry IS NULL)';
$conds[] = 'page_id=pr_page';
$conds[] = 'pr_type=' . $this->mDb->addQuotes( $this->type );
-
+
if( $this->sizetype=='min' ) {
$conds[] = 'page_len>=' . $this->size;
- } else if( $this->sizetype=='max' ) {
+ } elseif( $this->sizetype=='max' ) {
$conds[] = 'page_len<=' . $this->size;
}
if( $this->indefonly ) {
- $conds[] = "pr_expiry = 'infinity' OR pr_expiry IS NULL";
+ $db = wfGetDB( DB_SLAVE );
+ $conds[] = "pr_expiry = {$db->addQuotes( $db->getInfinity() )} OR pr_expiry IS NULL";
}
if( $this->cascadeonly ) {
$conds[] = "pr_cascade = '1'";
diff --git a/includes/specials/SpecialProtectedtitles.php b/includes/specials/SpecialProtectedtitles.php
index 5b18d87f..5fb91af7 100644
--- a/includes/specials/SpecialProtectedtitles.php
+++ b/includes/specials/SpecialProtectedtitles.php
@@ -70,16 +70,20 @@ class SpecialProtectedtitles extends SpecialPage {
/**
* Callback function to output a restriction
+ *
+ * @return string
*/
function formatRow( $row ) {
- global $wgUser, $wgLang;
+ global $wgLang;
wfProfileIn( __METHOD__ );
- static $skin=null;
+ static $skin = null, $infinity = null;
- if( is_null( $skin ) )
- $skin = $wgUser->getSkin();
+ if( is_null( $skin ) ){
+ $skin = $this->getSkin();
+ $infinity = wfGetDB( DB_SLAVE )->getInfinity();
+ }
$title = Title::makeTitleSafe( $row->pt_namespace, $row->pt_title );
$link = $skin->link( $title );
@@ -90,19 +94,17 @@ class SpecialProtectedtitles extends SpecialPage {
$description_items[] = $protType;
- $stxt = '';
-
- if ( $row->pt_expiry != 'infinity' && strlen($row->pt_expiry) ) {
- $expiry = Block::decodeExpiry( $row->pt_expiry );
+ $expiry = strlen( $row->pt_expiry ) ? $wgLang->formatExpiry( $row->pt_expiry, TS_MW ) : $infinity;
+ if( $expiry != $infinity ) {
$expiry_description = wfMsg( 'protect-expiring', $wgLang->timeanddate( $expiry ) , $wgLang->date( $expiry ) , $wgLang->time( $expiry ) );
- $description_items[] = $expiry_description;
+ $description_items[] = htmlspecialchars($expiry_description);
}
wfProfileOut( __METHOD__ );
- return '<li>' . wfSpecialList( $link . $stxt, implode( $description_items, ', ' ) ) . "</li>\n";
+ return '<li>' . wfSpecialList( $link, implode( $description_items, ', ' ) ) . "</li>\n";
}
/**
@@ -205,6 +207,10 @@ class ProtectedTitlesPager extends AlphabeticPager {
return '';
}
+ function getTitle() {
+ return SpecialPage::getTitleFor( 'Protectedtitles' );
+ }
+
function formatRow( $row ) {
return $this->mForm->formatRow( $row );
}
diff --git a/includes/specials/SpecialRandompage.php b/includes/specials/SpecialRandompage.php
index 6299f384..e299dc77 100644
--- a/includes/specials/SpecialRandompage.php
+++ b/includes/specials/SpecialRandompage.php
@@ -43,7 +43,9 @@ class RandomPage extends SpecialPage {
}
public function setNamespace ( $ns ) {
- if( !$ns || $ns < NS_MAIN ) $ns = NS_MAIN;
+ if( !$ns || $ns < NS_MAIN ) {
+ $ns = NS_MAIN;
+ }
$this->namespaces = array( $ns );
}
@@ -63,7 +65,7 @@ class RandomPage extends SpecialPage {
if( is_null( $title ) ) {
$this->setHeaders();
- $wgOut->addWikiMsg( strtolower( $this->mName ) . '-nopages',
+ $wgOut->addWikiMsg( strtolower( $this->mName ) . '-nopages',
$this->getNsList(), count( $this->namespaces ) );
return;
}
@@ -83,15 +85,15 @@ class RandomPage extends SpecialPage {
global $wgContLang;
$nsNames = array();
foreach( $this->namespaces as $n ) {
- if( $n === NS_MAIN )
- $nsNames[] = wfMsgForContent( 'blanknamespace' );
- else
+ if( $n === NS_MAIN ) {
+ $nsNames[] = wfMsgNoTrans( 'blanknamespace' );
+ } else {
$nsNames[] = $wgContLang->getNsText( $n );
+ }
}
return $wgContLang->commaList( $nsNames );
}
-
/**
* Choose a random title.
* @return Title object (or null if nothing to choose from)
@@ -99,7 +101,8 @@ class RandomPage extends SpecialPage {
public function getRandomTitle() {
$randstr = wfRandom();
$title = null;
- if ( !wfRunHooks( 'SpecialRandomGetRandomTitle', array( &$randstr, &$this->isRedir, &$this->namespaces, &$this->extra, &$title ) ) ) {
+ if ( !wfRunHooks( 'SpecialRandomGetRandomTitle', array( &$randstr, &$this->isRedir, &$this->namespaces,
+ &$this->extra, &$title ) ) ) {
return $title;
}
$row = $this->selectRandomPageFromDB( $randstr );
@@ -111,53 +114,50 @@ class RandomPage extends SpecialPage {
* any more bias than what the page_random scheme
* causes anyway. Trust me, I'm a mathematician. :)
*/
- if( !$row )
+ if( !$row ) {
$row = $this->selectRandomPageFromDB( "0" );
+ }
- if( $row )
+ if( $row ) {
return Title::makeTitleSafe( $row->page_namespace, $row->page_title );
- else
+ } else {
return null;
+ }
+ }
+
+ protected function getQueryInfo( $randstr ) {
+ $redirect = $this->isRedirect() ? 1 : 0;
+
+ return array(
+ 'tables' => array( 'page' ),
+ 'fields' => array( 'page_title', 'page_namespace' ),
+ 'conds' => array_merge( array(
+ 'page_namespace' => $this->namespaces,
+ 'page_is_redirect' => $redirect,
+ 'page_random >= ' . $randstr
+ ), $this->extra ),
+ 'options' => array(
+ 'ORDER BY' => 'page_random',
+ 'USE INDEX' => 'page_random',
+ 'LIMIT' => 1,
+ ),
+ 'join_conds' => array()
+ );
}
- private function selectRandomPageFromDB( $randstr ) {
- global $wgExtraRandompageSQL;
+ private function selectRandomPageFromDB( $randstr, $fname = __METHOD__ ) {
$dbr = wfGetDB( DB_SLAVE );
- $use_index = $dbr->useIndexClause( 'page_random' );
- $page = $dbr->tableName( 'page' );
+ $query = $this->getQueryInfo( $randstr );
+ $res = $dbr->select(
+ $query['tables'],
+ $query['fields'],
+ $query['conds'],
+ $fname,
+ $query['options'],
+ $query['join_conds']
+ );
- $ns = implode( ",", $this->namespaces );
- $redirect = $this->isRedirect() ? 1 : 0;
-
- if ( $wgExtraRandompageSQL ) {
- $this->extra[] = $wgExtraRandompageSQL;
- }
- if ( $this->addExtraSQL() ) {
- $this->extra[] = $this->addExtraSQL();
- }
- $extra = '';
- if ( $this->extra ) {
- $extra = 'AND (' . implode( ') AND (', $this->extra ) . ')';
- }
- $sql = "SELECT page_title, page_namespace
- FROM $page $use_index
- WHERE page_namespace IN ( $ns )
- AND page_is_redirect = $redirect
- AND page_random >= $randstr
- $extra
- ORDER BY page_random";
-
- $sql = $dbr->limitResult( $sql, 1, 0 );
- $res = $dbr->query( $sql, __METHOD__ );
return $dbr->fetchObject( $res );
}
-
- /* an alternative to $wgExtraRandompageSQL so subclasses
- * can add their own SQL by overriding this function
- * @deprecated, append to $this->extra instead
- */
- public function addExtraSQL() {
- return '';
- }
}
diff --git a/includes/specials/SpecialRecentchanges.php b/includes/specials/SpecialRecentchanges.php
index c012beca..6c78ced0 100644
--- a/includes/specials/SpecialRecentchanges.php
+++ b/includes/specials/SpecialRecentchanges.php
@@ -28,6 +28,7 @@
*/
class SpecialRecentChanges extends IncludableSpecialPage {
var $rcOptions, $rcSubpage;
+ protected $customFilters;
public function __construct( $name = 'Recentchanges' ) {
parent::__construct( $name );
@@ -39,22 +40,22 @@ class SpecialRecentChanges extends IncludableSpecialPage {
* @return FormOptions
*/
public function getDefaultOptions() {
- global $wgUser;
$opts = new FormOptions();
- $opts->add( 'days', (int)$wgUser->getOption( 'rcdays' ) );
- $opts->add( 'limit', (int)$wgUser->getOption( 'rclimit' ) );
+ $opts->add( 'days', (int)$this->getUser()->getOption( 'rcdays' ) );
+ $opts->add( 'limit', (int)$this->getUser()->getOption( 'rclimit' ) );
$opts->add( 'from', '' );
- $opts->add( 'hideminor', $wgUser->getBoolOption( 'hideminor' ) );
+ $opts->add( 'hideminor', $this->getUser()->getBoolOption( 'hideminor' ) );
$opts->add( 'hidebots', true );
$opts->add( 'hideanons', false );
$opts->add( 'hideliu', false );
- $opts->add( 'hidepatrolled', $wgUser->getBoolOption( 'hidepatrolled' ) );
+ $opts->add( 'hidepatrolled', $this->getUser()->getBoolOption( 'hidepatrolled' ) );
$opts->add( 'hidemyself', false );
$opts->add( 'namespace', '', FormOptions::INTNULL );
$opts->add( 'invert', false );
+ $opts->add( 'associated', false );
$opts->add( 'categories', '' );
$opts->add( 'categories_any', false );
@@ -65,13 +66,20 @@ class SpecialRecentChanges extends IncludableSpecialPage {
/**
* Create a FormOptions object with options as specified by the user
*
+ * @param $parameters array
+ *
* @return FormOptions
*/
public function setup( $parameters ) {
- global $wgRequest;
-
$opts = $this->getDefaultOptions();
- $opts->fetchValuesFromRequest( $wgRequest );
+
+ $this->customFilters = array();
+ wfRunHooks( 'SpecialRecentChangesFilters', array( $this, &$this->customFilters ) );
+ foreach( $this->customFilters as $key => $params ) {
+ $opts->add( $key, $params['default'] );
+ }
+
+ $opts->fetchValuesFromRequest( $this->getRequest() );
// Give precedence to subpage syntax
if( $parameters !== null ) {
@@ -88,10 +96,10 @@ class SpecialRecentChanges extends IncludableSpecialPage {
* @return FormOptions
*/
public function feedSetup() {
- global $wgFeedLimit, $wgRequest;
+ global $wgFeedLimit;
$opts = $this->getDefaultOptions();
# Feed is cached on limit,hideminor,namespace; other params would randomly not work
- $opts->fetchValuesFromRequest( $wgRequest, array( 'limit', 'hideminor', 'namespace' ) );
+ $opts->fetchValuesFromRequest( $this->getRequest(), array( 'limit', 'hideminor', 'namespace' ) );
$opts->validateIntBounds( 'limit', 0, $wgFeedLimit );
return $opts;
}
@@ -101,9 +109,12 @@ class SpecialRecentChanges extends IncludableSpecialPage {
*/
public function getOptions() {
if ( $this->rcOptions === null ) {
- global $wgRequest;
- $feedFormat = $wgRequest->getVal( 'feed' );
- $this->rcOptions = $feedFormat ? $this->feedSetup() : $this->setup( $this->rcSubpage );
+ if ( $this->including() ) {
+ $isFeed = false;
+ } else {
+ $isFeed = (bool)$this->getRequest()->getVal( 'feed' );
+ }
+ $this->rcOptions = $isFeed ? $this->feedSetup() : $this->setup( $this->rcSubpage );
}
return $this->rcOptions;
}
@@ -115,12 +126,11 @@ class SpecialRecentChanges extends IncludableSpecialPage {
* @param $subpage String
*/
public function execute( $subpage ) {
- global $wgRequest, $wgOut;
$this->rcSubpage = $subpage;
- $feedFormat = $wgRequest->getVal( 'feed' );
+ $feedFormat = $this->including() ? null : $this->getRequest()->getVal( 'feed' );
# 10 seconds server-side caching max
- $wgOut->setSquidMaxage( 10 );
+ $this->getOutput()->setSquidMaxage( 10 );
# Check if the client has a cached version
$lastmod = $this->checkLastModified( $feedFormat );
if( $lastmod === false ) {
@@ -130,6 +140,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
$opts = $this->getOptions();
$this->setHeaders();
$this->outputHeader();
+ $this->addRecentChangesJS();
// Fetch results, prepare a batch link existence check query
$conds = $this->buildMainQueryConds( $opts );
@@ -144,8 +155,8 @@ class SpecialRecentChanges extends IncludableSpecialPage {
if( !$feedFormat ) {
$batch = new LinkBatch;
foreach( $rows as $row ) {
- $batch->add( NS_USER, $row->rc_user_text );
- $batch->add( NS_USER_TALK, $row->rc_user_text );
+ $batch->add( NS_USER, $row->rc_user_text );
+ $batch->add( NS_USER_TALK, $row->rc_user_text );
$batch->add( $row->rc_namespace, $row->rc_title );
}
$batch->execute();
@@ -169,7 +180,8 @@ class SpecialRecentChanges extends IncludableSpecialPage {
$changesFeed = new ChangesFeed( $feedFormat, 'rcfeed' );
$formatter = $changesFeed->getFeedObject(
wfMsgForContent( 'recentchanges' ),
- wfMsgForContent( 'recentchanges-feed-description' )
+ wfMsgForContent( 'recentchanges-feed-description' ),
+ $this->getTitle()->getFullURL()
);
return array( $changesFeed, $formatter );
}
@@ -184,20 +196,42 @@ class SpecialRecentChanges extends IncludableSpecialPage {
public function parseParameters( $par, FormOptions $opts ) {
$bits = preg_split( '/\s*,\s*/', trim( $par ) );
foreach( $bits as $bit ) {
- if( 'hidebots' === $bit ) $opts['hidebots'] = true;
- if( 'bots' === $bit ) $opts['hidebots'] = false;
- if( 'hideminor' === $bit ) $opts['hideminor'] = true;
- if( 'minor' === $bit ) $opts['hideminor'] = false;
- if( 'hideliu' === $bit ) $opts['hideliu'] = true;
- if( 'hidepatrolled' === $bit ) $opts['hidepatrolled'] = true;
- if( 'hideanons' === $bit ) $opts['hideanons'] = true;
- if( 'hidemyself' === $bit ) $opts['hidemyself'] = true;
+ if( 'hidebots' === $bit ) {
+ $opts['hidebots'] = true;
+ }
+ if( 'bots' === $bit ) {
+ $opts['hidebots'] = false;
+ }
+ if( 'hideminor' === $bit ) {
+ $opts['hideminor'] = true;
+ }
+ if( 'minor' === $bit ) {
+ $opts['hideminor'] = false;
+ }
+ if( 'hideliu' === $bit ) {
+ $opts['hideliu'] = true;
+ }
+ if( 'hidepatrolled' === $bit ) {
+ $opts['hidepatrolled'] = true;
+ }
+ if( 'hideanons' === $bit ) {
+ $opts['hideanons'] = true;
+ }
+ if( 'hidemyself' === $bit ) {
+ $opts['hidemyself'] = true;
+ }
- if( is_numeric( $bit ) ) $opts['limit'] = $bit;
+ if( is_numeric( $bit ) ) {
+ $opts['limit'] = $bit;
+ }
$m = array();
- if( preg_match( '/^limit=(\d+)$/', $bit, $m ) ) $opts['limit'] = $m[1];
- if( preg_match( '/^days=(\d+)$/', $bit, $m ) ) $opts['days'] = $m[1];
+ if( preg_match( '/^limit=(\d+)$/', $bit, $m ) ) {
+ $opts['limit'] = $m[1];
+ }
+ if( preg_match( '/^days=(\d+)$/', $bit, $m ) ) {
+ $opts['days'] = $m[1];
+ }
}
}
@@ -210,11 +244,10 @@ class SpecialRecentChanges extends IncludableSpecialPage {
* @return String or false
*/
public function checkLastModified( $feedFormat ) {
- global $wgUseRCPatrol, $wgOut;
$dbr = wfGetDB( DB_SLAVE );
$lastmod = $dbr->selectField( 'recentchanges', 'MAX(rc_timestamp)', false, __METHOD__ );
- if( $feedFormat || !$wgUseRCPatrol ) {
- if( $lastmod && $wgOut->checkLastModified( $lastmod ) ) {
+ if( $feedFormat || !$this->getUser()->useRCPatrol() ) {
+ if( $lastmod && $this->getOutput()->checkLastModified( $lastmod ) ) {
# Client cache fresh and headers sent, nothing more to do.
return false;
}
@@ -229,8 +262,6 @@ class SpecialRecentChanges extends IncludableSpecialPage {
* @return array
*/
public function buildMainQueryConds( FormOptions $opts ) {
- global $wgUser;
-
$dbr = wfGetDB( DB_SLAVE );
$conds = array();
@@ -261,35 +292,58 @@ class SpecialRecentChanges extends IncludableSpecialPage {
$conds[] = 'rc_timestamp >= ' . $dbr->addQuotes( $cutoff );
-
- $hidePatrol = $wgUser->useRCPatrol() && $opts['hidepatrolled'];
+ $hidePatrol = $this->getUser()->useRCPatrol() && $opts['hidepatrolled'];
$hideLoggedInUsers = $opts['hideliu'] && !$forcebot;
$hideAnonymousUsers = $opts['hideanons'] && !$forcebot;
- if( $opts['hideminor'] ) $conds['rc_minor'] = 0;
- if( $opts['hidebots'] ) $conds['rc_bot'] = 0;
- if( $hidePatrol ) $conds['rc_patrolled'] = 0;
- if( $forcebot ) $conds['rc_bot'] = 1;
- if( $hideLoggedInUsers ) $conds[] = 'rc_user = 0';
- if( $hideAnonymousUsers ) $conds[] = 'rc_user != 0';
+ if( $opts['hideminor'] ) {
+ $conds['rc_minor'] = 0;
+ }
+ if( $opts['hidebots'] ) {
+ $conds['rc_bot'] = 0;
+ }
+ if( $hidePatrol ) {
+ $conds['rc_patrolled'] = 0;
+ }
+ if( $forcebot ) {
+ $conds['rc_bot'] = 1;
+ }
+ if( $hideLoggedInUsers ) {
+ $conds[] = 'rc_user = 0';
+ }
+ if( $hideAnonymousUsers ) {
+ $conds[] = 'rc_user != 0';
+ }
if( $opts['hidemyself'] ) {
- if( $wgUser->getId() ) {
- $conds[] = 'rc_user != ' . $dbr->addQuotes( $wgUser->getId() );
+ if( $this->getUser()->getId() ) {
+ $conds[] = 'rc_user != ' . $dbr->addQuotes( $this->getUser()->getId() );
} else {
- $conds[] = 'rc_user_text != ' . $dbr->addQuotes( $wgUser->getName() );
+ $conds[] = 'rc_user_text != ' . $dbr->addQuotes( $this->getUser()->getName() );
}
}
# Namespace filtering
if( $opts['namespace'] !== '' ) {
- if( !$opts['invert'] ) {
- $conds[] = 'rc_namespace = ' . $dbr->addQuotes( $opts['namespace'] );
+ $selectedNS = $dbr->addQuotes( $opts['namespace'] );
+ $operator = $opts['invert'] ? '!=' : '=';
+ $boolean = $opts['invert'] ? 'AND' : 'OR';
+
+ # namespace association (bug 2429)
+ if( !$opts['associated'] ) {
+ $condition = "rc_namespace $operator $selectedNS";
} else {
- $conds[] = 'rc_namespace != ' . $dbr->addQuotes( $opts['namespace'] );
+ # Also add the associated namespace
+ $associatedNS = $dbr->addQuotes(
+ MWNamespace::getAssociated( $opts['namespace'] )
+ );
+ $condition = "(rc_namespace $operator $selectedNS "
+ . $boolean
+ . " rc_namespace $operator $associatedNS)";
}
- }
+ $conds[] = $condition;
+ }
return $conds;
}
@@ -301,75 +355,94 @@ class SpecialRecentChanges extends IncludableSpecialPage {
* @return database result or false (for Recentchangeslinked only)
*/
public function doMainQuery( $conds, $opts ) {
- global $wgUser;
-
$tables = array( 'recentchanges' );
$join_conds = array();
- $query_options = array( 'USE INDEX' => array('recentchanges' => 'rc_timestamp') );
+ $query_options = array(
+ 'USE INDEX' => array( 'recentchanges' => 'rc_timestamp' )
+ );
- $uid = $wgUser->getId();
+ $uid = $this->getUser()->getId();
$dbr = wfGetDB( DB_SLAVE );
$limit = $opts['limit'];
$namespace = $opts['namespace'];
- $select = '*';
$invert = $opts['invert'];
+ $associated = $opts['associated'];
+ $fields = array( $dbr->tableName( 'recentchanges' ) . '.*' ); // all rc columns
// JOIN on watchlist for users
- if( $uid ) {
+ if ( $uid ) {
$tables[] = 'watchlist';
+ $fields[] = 'wl_user';
+ $fields[] = 'wl_notificationtimestamp';
$join_conds['watchlist'] = array('LEFT JOIN',
"wl_user={$uid} AND wl_title=rc_title AND wl_namespace=rc_namespace");
}
- if ($wgUser->isAllowed("rollback")) {
+ if ( $this->getUser()->isAllowed( 'rollback' ) ) {
$tables[] = 'page';
+ $fields[] = 'page_latest';
$join_conds['page'] = array('LEFT JOIN', 'rc_cur_id=page_id');
}
if ( !$this->including() ) {
// Tag stuff.
// Doesn't work when transcluding. See bug 23293
- $fields = array();
- // Fields are * in this case, so let the function modify an empty array to keep it happy.
ChangeTags::modifyDisplayQuery(
- $tables, $fields, $conds, $join_conds, $query_options, $opts['tagfilter']
+ $tables, $fields, $conds, $join_conds, $query_options,
+ $opts['tagfilter']
);
}
- if ( !wfRunHooks( 'SpecialRecentChangesQuery', array( &$conds, &$tables, &$join_conds, $opts, &$query_options, &$select ) ) )
+ if ( !wfRunHooks( 'SpecialRecentChangesQuery',
+ array( &$conds, &$tables, &$join_conds, $opts, &$query_options, &$fields ) ) )
+ {
return false;
+ }
// Don't use the new_namespace_time timestamp index if:
// (a) "All namespaces" selected
- // (b) We want all pages NOT in a certain namespaces (inverted)
+ // (b) We want pages in more than one namespace (inverted/associated)
// (c) There is a tag to filter on (use tag index instead)
// (d) UNION + sort/limit is not an option for the DBMS
- if( is_null( $namespace )
- || ( $invert && !is_null( $namespace ) )
+ if( $namespace === ''
+ || ( $invert || $associated )
|| $opts['tagfilter'] != ''
|| !$dbr->unionSupportsOrderAndLimit() )
{
- $res = $dbr->select( $tables, '*', $conds, __METHOD__,
+ $res = $dbr->select( $tables, $fields, $conds, __METHOD__,
array( 'ORDER BY' => 'rc_timestamp DESC', 'LIMIT' => $limit ) +
$query_options,
$join_conds );
// We have a new_namespace_time index! UNION over new=(0,1) and sort result set!
} else {
// New pages
- $sqlNew = $dbr->selectSQLText( $tables, $select,
+ $sqlNew = $dbr->selectSQLText(
+ $tables,
+ $fields,
array( 'rc_new' => 1 ) + $conds,
__METHOD__,
- array( 'ORDER BY' => 'rc_timestamp DESC', 'LIMIT' => $limit,
- 'USE INDEX' => array('recentchanges' => 'rc_timestamp') ),
- $join_conds );
+ array(
+ 'ORDER BY' => 'rc_timestamp DESC',
+ 'LIMIT' => $limit,
+ 'USE INDEX' => array( 'recentchanges' => 'new_name_timestamp' )
+ ),
+ $join_conds
+ );
// Old pages
- $sqlOld = $dbr->selectSQLText( $tables, '*',
+ $sqlOld = $dbr->selectSQLText(
+ $tables,
+ $fields,
array( 'rc_new' => 0 ) + $conds,
__METHOD__,
- array( 'ORDER BY' => 'rc_timestamp DESC', 'LIMIT' => $limit,
- 'USE INDEX' => array('recentchanges' => 'rc_timestamp') ),
- $join_conds );
+ array(
+ 'ORDER BY' => 'rc_timestamp DESC',
+ 'LIMIT' => $limit,
+ 'USE INDEX' => array( 'recentchanges' => 'new_name_timestamp' )
+ ),
+ $join_conds
+ );
# Join the two fast queries, and sort the result set
- $sql = $dbr->unionQueries(array($sqlNew, $sqlOld), false).' ORDER BY rc_timestamp DESC';
- $sql = $dbr->limitResult($sql, $limit, false);
+ $sql = $dbr->unionQueries( array( $sqlNew, $sqlOld ), false ) .
+ ' ORDER BY rc_timestamp DESC';
+ $sql = $dbr->limitResult( $sql, $limit, false );
$res = $dbr->query( $sql, __METHOD__ );
}
@@ -377,14 +450,13 @@ class SpecialRecentChanges extends IncludableSpecialPage {
}
/**
- * Send output to $wgOut, only called if not used feeds
+ * Send output to the OutputPage object, only called if not used feeds
*
* @param $rows Array of database rows
* @param $opts FormOptions
*/
public function webOutput( $rows, $opts ) {
- global $wgOut, $wgUser, $wgRCShowWatchingUsers, $wgShowUpdatedMarker;
- global $wgAllowCategorizedRecentChanges;
+ global $wgRCShowWatchingUsers, $wgShowUpdatedMarker, $wgAllowCategorizedRecentChanges;
$limit = $opts['limit'];
@@ -394,43 +466,47 @@ class SpecialRecentChanges extends IncludableSpecialPage {
}
// And now for the content
- $wgOut->setFeedAppendQuery( $this->getFeedQuery() );
+ $this->getOutput()->setFeedAppendQuery( $this->getFeedQuery() );
if( $wgAllowCategorizedRecentChanges ) {
$this->filterByCategories( $rows, $opts );
}
- $showWatcherCount = $wgRCShowWatchingUsers && $wgUser->getOption( 'shownumberswatching' );
+ $showWatcherCount = $wgRCShowWatchingUsers && $this->getUser()->getOption( 'shownumberswatching' );
$watcherCache = array();
$dbr = wfGetDB( DB_SLAVE );
$counter = 1;
- $list = ChangesList::newFromUser( $wgUser );
+ $list = ChangesList::newFromContext( $this->getContext() );
$s = $list->beginRecentChangesList();
foreach( $rows as $obj ) {
- if( $limit == 0 ) break;
+ if( $limit == 0 ) {
+ break;
+ }
$rc = RecentChange::newFromRow( $obj );
$rc->counter = $counter++;
# Check if the page has been updated since the last visit
- if( $wgShowUpdatedMarker && !empty($obj->wl_notificationtimestamp) ) {
- $rc->notificationtimestamp = ($obj->rc_timestamp >= $obj->wl_notificationtimestamp);
+ if( $wgShowUpdatedMarker && !empty( $obj->wl_notificationtimestamp ) ) {
+ $rc->notificationtimestamp = ( $obj->rc_timestamp >= $obj->wl_notificationtimestamp );
} else {
$rc->notificationtimestamp = false; // Default
}
# Check the number of users watching the page
$rc->numberofWatchingusers = 0; // Default
if( $showWatcherCount && $obj->rc_namespace >= 0 ) {
- if( !isset($watcherCache[$obj->rc_namespace][$obj->rc_title]) ) {
+ if( !isset( $watcherCache[$obj->rc_namespace][$obj->rc_title] ) ) {
$watcherCache[$obj->rc_namespace][$obj->rc_title] =
- $dbr->selectField( 'watchlist',
+ $dbr->selectField(
+ 'watchlist',
'COUNT(*)',
array(
'wl_namespace' => $obj->rc_namespace,
'wl_title' => $obj->rc_title,
),
- __METHOD__ . '-watchers' );
+ __METHOD__ . '-watchers'
+ );
}
$rc->numberofWatchingusers = $watcherCache[$obj->rc_namespace][$obj->rc_title];
}
@@ -438,7 +514,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
--$limit;
}
$s .= $list->endRecentChangesList();
- $wgOut->addHTML( $s );
+ $this->getOutput()->addHTML( $s );
}
/**
@@ -456,14 +532,16 @@ class SpecialRecentChanges extends IncludableSpecialPage {
* @return String: XHTML
*/
public function doHeader( $opts ) {
- global $wgScript, $wgOut;
+ global $wgScript;
- $this->setTopText( $wgOut, $opts );
+ $this->setTopText( $opts );
$defaults = $opts->getAllValues();
$nondefaults = $opts->getChangedValues();
- $opts->consumeValues( array( 'namespace', 'invert', 'tagfilter',
- 'categories', 'categories_any' ) );
+ $opts->consumeValues( array(
+ 'namespace', 'invert', 'associated', 'tagfilter',
+ 'categories', 'categories_any'
+ ) );
$panel = array();
$panel[] = $this->optionsPanel( $defaults, $nondefaults );
@@ -502,11 +580,11 @@ class SpecialRecentChanges extends IncludableSpecialPage {
$panel[] = $form;
$panelString = implode( "\n", $panel );
- $wgOut->addHTML(
+ $this->getOutput()->addHTML(
Xml::fieldset( wfMsg( 'recentchanges-legend' ), $panelString, array( 'class' => 'rcoptions' ) )
);
- $this->setBottomText( $wgOut, $opts );
+ $this->setBottomText( $opts );
}
/**
@@ -515,7 +593,7 @@ class SpecialRecentChanges extends IncludableSpecialPage {
* @param $opts FormOptions
* @return Array
*/
- function getExtraOptions( $opts ){
+ function getExtraOptions( $opts ) {
$extraOpts = array();
$extraOpts['namespace'] = $this->namespaceFilterForm( $opts );
@@ -525,8 +603,9 @@ class SpecialRecentChanges extends IncludableSpecialPage {
}
$tagFilter = ChangeTags::buildTagFilterSelector( $opts['tagfilter'] );
- if ( count($tagFilter) )
+ if ( count( $tagFilter ) ) {
$extraOpts['tagfilter'] = $tagFilter;
+ }
wfRunHooks( 'SpecialRecentChangesPanel', array( &$extraOpts, $opts ) );
return $extraOpts;
@@ -535,33 +614,41 @@ class SpecialRecentChanges extends IncludableSpecialPage {
/**
* Send the text to be displayed above the options
*
- * @param $out OutputPage
* @param $opts FormOptions
*/
- function setTopText( OutputPage $out, FormOptions $opts ){
- $out->addWikiText( wfMsgForContentNoTrans( 'recentchangestext' ) );
+ function setTopText( FormOptions $opts ) {
+ $this->getOutput()->addWikiText( wfMsgForContentNoTrans( 'recentchangestext' ) );
}
/**
* Send the text to be displayed after the options, for use in
* Recentchangeslinked
*
- * @param $out OutputPage
* @param $opts FormOptions
*/
- function setBottomText( OutputPage $out, FormOptions $opts ){}
+ function setBottomText( FormOptions $opts ) {}
/**
* Creates the choose namespace selection
*
+ * @todo Uses radio buttons (HASHAR)
* @param $opts FormOptions
* @return String
*/
protected function namespaceFilterForm( FormOptions $opts ) {
$nsSelect = Xml::namespaceSelector( $opts['namespace'], '' );
- $nsLabel = Xml::label( wfMsg('namespace'), 'namespace' );
- $invert = Xml::checkLabel( wfMsg('invert'), 'invert', 'nsinvert', $opts['invert'] );
- return array( $nsLabel, "$nsSelect $invert" );
+ $nsLabel = Xml::label( wfMsg( 'namespace' ), 'namespace' );
+ $invert = Xml::checkLabel(
+ wfMsg( 'invert' ), 'invert', 'nsinvert',
+ $opts['invert'],
+ array( 'title' => wfMsg( 'tooltip-invert' ) )
+ );
+ $associated = Xml::checkLabel(
+ wfMsg( 'namespace_association' ), 'associated', 'nsassociated',
+ $opts['associated'],
+ array( 'title' => wfMsg( 'tooltip-namespace_association' ) )
+ );
+ return array( $nsLabel, "$nsSelect $invert $associated" );
}
/**
@@ -571,10 +658,10 @@ class SpecialRecentChanges extends IncludableSpecialPage {
* @return Array
*/
protected function categoryFilterForm( FormOptions $opts ) {
- list( $label, $input ) = Xml::inputLabelSep( wfMsg('rc_categories'),
+ list( $label, $input ) = Xml::inputLabelSep( wfMsg( 'rc_categories' ),
'categories', 'mw-categories', false, $opts['categories'] );
- $input .= ' ' . Xml::checkLabel( wfMsg('rc_categories_any'),
+ $input .= ' ' . Xml::checkLabel( wfMsg( 'rc_categories_any' ),
'categories_any', 'mw-categories_any', $opts['categories_any'] );
return array( $label, $input );
@@ -597,7 +684,9 @@ class SpecialRecentChanges extends IncludableSpecialPage {
$cats = array();
foreach( $categories as $cat ) {
$cat = trim( $cat );
- if( $cat == '' ) continue;
+ if( $cat == '' ) {
+ continue;
+ }
$cats[] = $cat;
}
@@ -605,10 +694,12 @@ class SpecialRecentChanges extends IncludableSpecialPage {
$articles = array();
$a2r = array();
$rowsarr = array();
- foreach( $rows AS $k => $r ) {
+ foreach( $rows as $k => $r ) {
$nt = Title::makeTitle( $r->rc_namespace, $r->rc_title );
$id = $nt->getArticleID();
- if( $id == 0 ) continue; # Page might have been deleted...
+ if( $id == 0 ) {
+ continue; # Page might have been deleted...
+ }
if( !in_array( $id, $articles ) ) {
$articles[] = $id;
}
@@ -620,18 +711,19 @@ class SpecialRecentChanges extends IncludableSpecialPage {
}
# Shortcut?
- if( !count( $articles ) || !count( $cats ) )
- return ;
+ if( !count( $articles ) || !count( $cats ) ) {
+ return;
+ }
# Look up
$c = new Categoryfinder;
- $c->seed( $articles, $cats, $opts['categories_any'] ? "OR" : "AND" ) ;
+ $c->seed( $articles, $cats, $opts['categories_any'] ? 'OR' : 'AND' );
$match = $c->run();
# Filter
$newrows = array();
- foreach( $match AS $id ) {
- foreach( $a2r[$id] AS $rev ) {
+ foreach( $match as $id ) {
+ foreach( $a2r[$id] as $rev ) {
$k = $rev;
$newrows[$k] = $rowsarr[$k];
}
@@ -648,15 +740,12 @@ class SpecialRecentChanges extends IncludableSpecialPage {
* @param $active Boolean: whether to show the link in bold
*/
function makeOptionsLink( $title, $override, $options, $active = false ) {
- global $wgUser;
- $sk = $wgUser->getSkin();
$params = $override + $options;
+ $text = htmlspecialchars( $title );
if ( $active ) {
- return $sk->link( $this->getTitle(), '<strong>' . htmlspecialchars( $title ) . '</strong>',
- array(), $params, array( 'known' ) );
- } else {
- return $sk->link( $this->getTitle(), htmlspecialchars( $title ), array() , $params, array( 'known' ) );
+ $text = '<strong>' . $text . '</strong>';
}
+ return Linker::linkKnown( $this->getTitle(), $text, array(), $params );
}
/**
@@ -666,20 +755,21 @@ class SpecialRecentChanges extends IncludableSpecialPage {
* @param $nondefaults Array
*/
function optionsPanel( $defaults, $nondefaults ) {
- global $wgLang, $wgUser, $wgRCLinkLimits, $wgRCLinkDays;
+ global $wgRCLinkLimits, $wgRCLinkDays;
$options = $nondefaults + $defaults;
$note = '';
- if( !wfEmptyMsg( 'rclegend', wfMsg('rclegend') ) ) {
- $note .= '<div class="mw-rclegend">' . wfMsgExt( 'rclegend', array('parseinline') ) . "</div>\n";
+ if( !wfEmptyMsg( 'rclegend' ) ) {
+ $note .= '<div class="mw-rclegend">' .
+ wfMsgExt( 'rclegend', array( 'parseinline' ) ) . "</div>\n";
}
if( $options['from'] ) {
$note .= wfMsgExt( 'rcnotefrom', array( 'parseinline' ),
- $wgLang->formatNum( $options['limit'] ),
- $wgLang->timeanddate( $options['from'], true ),
- $wgLang->date( $options['from'], true ),
- $wgLang->time( $options['from'], true ) ) . '<br />';
+ $this->getLang()->formatNum( $options['limit'] ),
+ $this->getLang()->timeanddate( $options['from'], true ),
+ $this->getLang()->date( $options['from'], true ),
+ $this->getLang()->time( $options['from'], true ) ) . '<br />';
}
# Sort data for display and make sure it's unique after we've added user data.
@@ -692,50 +782,63 @@ class SpecialRecentChanges extends IncludableSpecialPage {
// limit links
foreach( $wgRCLinkLimits as $value ) {
- $cl[] = $this->makeOptionsLink( $wgLang->formatNum( $value ),
- array( 'limit' => $value ), $nondefaults, $value == $options['limit'] ) ;
+ $cl[] = $this->makeOptionsLink( $this->getLang()->formatNum( $value ),
+ array( 'limit' => $value ), $nondefaults, $value == $options['limit'] );
}
- $cl = $wgLang->pipeList( $cl );
+ $cl = $this->getLang()->pipeList( $cl );
// day links, reset 'from' to none
foreach( $wgRCLinkDays as $value ) {
- $dl[] = $this->makeOptionsLink( $wgLang->formatNum( $value ),
- array( 'days' => $value, 'from' => '' ), $nondefaults, $value == $options['days'] ) ;
+ $dl[] = $this->makeOptionsLink( $this->getLang()->formatNum( $value ),
+ array( 'days' => $value, 'from' => '' ), $nondefaults, $value == $options['days'] );
}
- $dl = $wgLang->pipeList( $dl );
+ $dl = $this->getLang()->pipeList( $dl );
// show/hide links
$showhide = array( wfMsg( 'show' ), wfMsg( 'hide' ) );
- $minorLink = $this->makeOptionsLink( $showhide[1-$options['hideminor']],
- array( 'hideminor' => 1-$options['hideminor'] ), $nondefaults);
- $botLink = $this->makeOptionsLink( $showhide[1-$options['hidebots']],
- array( 'hidebots' => 1-$options['hidebots'] ), $nondefaults);
- $anonsLink = $this->makeOptionsLink( $showhide[ 1 - $options['hideanons'] ],
- array( 'hideanons' => 1 - $options['hideanons'] ), $nondefaults );
- $liuLink = $this->makeOptionsLink( $showhide[1-$options['hideliu']],
- array( 'hideliu' => 1-$options['hideliu'] ), $nondefaults);
- $patrLink = $this->makeOptionsLink( $showhide[1-$options['hidepatrolled']],
- array( 'hidepatrolled' => 1-$options['hidepatrolled'] ), $nondefaults);
- $myselfLink = $this->makeOptionsLink( $showhide[1-$options['hidemyself']],
- array( 'hidemyself' => 1-$options['hidemyself'] ), $nondefaults);
-
- $links[] = wfMsgHtml( 'rcshowhideminor', $minorLink );
- $links[] = wfMsgHtml( 'rcshowhidebots', $botLink );
- $links[] = wfMsgHtml( 'rcshowhideanons', $anonsLink );
- $links[] = wfMsgHtml( 'rcshowhideliu', $liuLink );
- if( $wgUser->useRCPatrol() )
- $links[] = wfMsgHtml( 'rcshowhidepatr', $patrLink );
- $links[] = wfMsgHtml( 'rcshowhidemine', $myselfLink );
- $hl = $wgLang->pipeList( $links );
+ $filters = array(
+ 'hideminor' => 'rcshowhideminor',
+ 'hidebots' => 'rcshowhidebots',
+ 'hideanons' => 'rcshowhideanons',
+ 'hideliu' => 'rcshowhideliu',
+ 'hidepatrolled' => 'rcshowhidepatr',
+ 'hidemyself' => 'rcshowhidemine'
+ );
+ foreach ( $this->customFilters as $key => $params ) {
+ $filters[$key] = $params['msg'];
+ }
+ // Disable some if needed
+ if ( !$this->getUser()->useRCPatrol() ) {
+ unset( $filters['hidepatrolled'] );
+ }
+
+ $links = array();
+ foreach ( $filters as $key => $msg ) {
+ $link = $this->makeOptionsLink( $showhide[1 - $options[$key]],
+ array( $key => 1-$options[$key] ), $nondefaults );
+ $links[] = wfMsgHtml( $msg, $link );
+ }
// show from this onward link
- $now = $wgLang->timeanddate( wfTimestampNow(), true );
- $tl = $this->makeOptionsLink( $now, array( 'from' => wfTimestampNow() ), $nondefaults );
+ $timestamp = wfTimestampNow();
+ $now = $this->getLang()->timeanddate( $timestamp, true );
+ $tl = $this->makeOptionsLink(
+ $now, array( 'from' => $timestamp ), $nondefaults
+ );
$rclinks = wfMsgExt( 'rclinks', array( 'parseinline', 'replaceafter' ),
- $cl, $dl, $hl );
+ $cl, $dl, $this->getLang()->pipeList( $links ) );
$rclistfrom = wfMsgExt( 'rclistfrom', array( 'parseinline', 'replaceafter' ), $tl );
return "{$note}$rclinks<br />$rclistfrom";
}
+
+ /**
+ * add javascript specific to the [[Special:RecentChanges]] page
+ */
+ function addRecentChangesJS() {
+ $this->getOutput()->addModules( array(
+ 'mediawiki.special.recentchanges',
+ ) );
+ }
}
diff --git a/includes/specials/SpecialRecentchangeslinked.php b/includes/specials/SpecialRecentchangeslinked.php
index db0f554d..8b8369b5 100644
--- a/includes/specials/SpecialRecentchangeslinked.php
+++ b/includes/specials/SpecialRecentchangeslinked.php
@@ -46,9 +46,8 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
}
public function feedSetup() {
- global $wgRequest;
$opts = parent::feedSetup();
- $opts['target'] = $wgRequest->getVal( 'target' );
+ $opts['target'] = $this->getRequest()->getVal( 'target' );
return $opts;
}
@@ -56,14 +55,13 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
$feed = new ChangesFeed( $feedFormat, false );
$feedObj = $feed->getFeedObject(
wfMsgForContent( 'recentchangeslinked-title', $this->getTargetTitle()->getPrefixedText() ),
- wfMsgForContent( 'recentchangeslinked-feed' )
+ wfMsgForContent( 'recentchangeslinked-feed' ),
+ $this->getTitle()->getFullUrl()
);
return array( $feed, $feedObj );
}
public function doMainQuery( $conds, $opts ) {
- global $wgUser, $wgOut;
-
$target = $opts['target'];
$showlinkedto = $opts['showlinkedto'];
$limit = $opts['limit'];
@@ -73,11 +71,11 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
}
$title = Title::newFromURL( $target );
if( !$title || $title->getInterwiki() != '' ){
- $wgOut->wrapWikiMsg( "<div class=\"errorbox\">\n$1\n</div><br style=\"clear: both\" />", 'allpagesbadtitle' );
+ $this->getOutput()->wrapWikiMsg( "<div class=\"errorbox\">\n$1\n</div><br style=\"clear: both\" />", 'allpagesbadtitle' );
return false;
}
- $wgOut->setPageTitle( wfMsg( 'recentchangeslinked-title', $title->getPrefixedText() ) );
+ $this->getOutput()->setPageTitle( wfMsg( 'recentchangeslinked-title', $title->getPrefixedText() ) );
/*
* Ordinary links are in the pagelinks table, while transclusions are
@@ -99,13 +97,13 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
$query_options = array();
// left join with watchlist table to highlight watched rows
- $uid = $wgUser->getId();
+ $uid = $this->getUser()->getId();
if( $uid ) {
$tables[] = 'watchlist';
$select[] = 'wl_user';
$join_conds['watchlist'] = array( 'LEFT JOIN', "wl_user={$uid} AND wl_title=rc_title AND wl_namespace=rc_namespace" );
}
- if ( $wgUser->isAllowed( 'rollback' ) ) {
+ if ( $this->getUser()->isAllowed( 'rollback' ) ) {
$tables[] = 'page';
$join_conds['page'] = array('LEFT JOIN', 'rc_cur_id=page_id');
$select[] = 'page_latest';
@@ -143,7 +141,7 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
// imagelinks and categorylinks tables have no xx_namespace field, and have xx_to instead of xx_title
if( $link_table == 'imagelinks' ) $link_ns = NS_FILE;
- else if( $link_table == 'categorylinks' ) $link_ns = NS_CATEGORY;
+ elseif( $link_table == 'categorylinks' ) $link_ns = NS_CATEGORY;
else $link_ns = 0;
if( $showlinkedto ) {
@@ -171,16 +169,16 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
else
$order = array();
-
- $query = $dbr->selectSQLText(
- array_merge( $tables, array( $link_table ) ),
- $select,
+
+ $query = $dbr->selectSQLText(
+ array_merge( $tables, array( $link_table ) ),
+ $select,
$conds + $subconds,
- __METHOD__,
+ __METHOD__,
$order + $query_options,
$join_conds + array( $link_table => array( 'INNER JOIN', $subjoin ) )
);
-
+
if( $dbr->unionSupportsOrderAndLimit())
$query = $dbr->limitResult( $query, $limit );
@@ -196,7 +194,7 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
$sql = $dbr->unionQueries($subsql, false).' ORDER BY rc_timestamp DESC';
$sql = $dbr->limitResult($sql, $limit, false);
}
-
+
$res = $dbr->query( $sql, __METHOD__ );
if( $res->numRows() == 0 )
@@ -204,7 +202,7 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
return $res;
}
-
+
function getExtraOptions( $opts ){
$opts->consumeValues( array( 'showlinkedto', 'target', 'tagfilter' ) );
$extraOpts = array();
@@ -219,6 +217,9 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
return $extraOpts;
}
+ /**
+ * @return Title
+ */
function getTargetTitle() {
if ( $this->rclTargetTitle === null ) {
$opts = $this->getOptions();
@@ -231,13 +232,12 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
return $this->rclTargetTitle;
}
- function setTopText( OutputPage $out, FormOptions $opts ) {
- global $wgUser;
- $skin = $wgUser->getSkin();
+ function setTopText( FormOptions $opts ) {
$target = $this->getTargetTitle();
- if( $target )
- $out->setSubtitle( wfMsg( 'recentchangeslinked-backlink', $skin->link( $target,
+ if( $target ) {
+ $this->getOutput()->setSubtitle( wfMsg( 'recentchangeslinked-backlink', Linker::link( $target,
$target->getPrefixedText(), array(), array( 'redirect' => 'no' ) ) ) );
+ }
}
public function getFeedQuery() {
@@ -249,9 +249,9 @@ class SpecialRecentchangeslinked extends SpecialRecentChanges {
}
}
- function setBottomText( OutputPage $out, FormOptions $opts ) {
- if( isset( $this->mResultEmpty ) && $this->mResultEmpty ){
- $out->addWikiMsg( 'recentchangeslinked-noresult' );
+ function setBottomText( FormOptions $opts ) {
+ if( isset( $this->mResultEmpty ) && $this->mResultEmpty ) {
+ $this->getOutput()->addWikiMsg( 'recentchangeslinked-noresult' );
}
}
}
diff --git a/includes/specials/SpecialRevisiondelete.php b/includes/specials/SpecialRevisiondelete.php
index f77fc347..3c643253 100644
--- a/includes/specials/SpecialRevisiondelete.php
+++ b/includes/specials/SpecialRevisiondelete.php
@@ -28,9 +28,6 @@
* @ingroup SpecialPage
*/
class SpecialRevisionDelete extends UnlistedSpecialPage {
- /** Skin object */
- var $skin;
-
/** True if the submit button was clicked, and the form was posted */
var $submitClicked;
@@ -64,39 +61,39 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
*/
static $allowedTypes = array(
'revision' => array(
- 'check-label' => 'revdelete-hide-text',
+ 'check-label' => 'revdelete-hide-text',
'deletion-bits' => Revision::DELETED_TEXT,
- 'success' => 'revdelete-success',
- 'failure' => 'revdelete-failure',
- 'list-class' => 'RevDel_RevisionList',
+ 'success' => 'revdelete-success',
+ 'failure' => 'revdelete-failure',
+ 'list-class' => 'RevDel_RevisionList',
),
'archive' => array(
- 'check-label' => 'revdelete-hide-text',
+ 'check-label' => 'revdelete-hide-text',
'deletion-bits' => Revision::DELETED_TEXT,
- 'success' => 'revdelete-success',
- 'failure' => 'revdelete-failure',
- 'list-class' => 'RevDel_ArchiveList',
+ 'success' => 'revdelete-success',
+ 'failure' => 'revdelete-failure',
+ 'list-class' => 'RevDel_ArchiveList',
),
'oldimage'=> array(
- 'check-label' => 'revdelete-hide-image',
+ 'check-label' => 'revdelete-hide-image',
'deletion-bits' => File::DELETED_FILE,
- 'success' => 'revdelete-success',
- 'failure' => 'revdelete-failure',
- 'list-class' => 'RevDel_FileList',
+ 'success' => 'revdelete-success',
+ 'failure' => 'revdelete-failure',
+ 'list-class' => 'RevDel_FileList',
),
'filearchive' => array(
- 'check-label' => 'revdelete-hide-image',
+ 'check-label' => 'revdelete-hide-image',
'deletion-bits' => File::DELETED_FILE,
- 'success' => 'revdelete-success',
- 'failure' => 'revdelete-failure',
- 'list-class' => 'RevDel_ArchivedFileList',
+ 'success' => 'revdelete-success',
+ 'failure' => 'revdelete-failure',
+ 'list-class' => 'RevDel_ArchivedFileList',
),
'logging' => array(
- 'check-label' => 'revdelete-hide-name',
+ 'check-label' => 'revdelete-hide-name',
'deletion-bits' => LogPage::DELETED_ACTION,
- 'success' => 'logdelete-success',
- 'failure' => 'logdelete-failure',
- 'list-class' => 'RevDel_LogList',
+ 'success' => 'logdelete-success',
+ 'failure' => 'logdelete-failure',
+ 'list-class' => 'RevDel_LogList',
),
);
@@ -114,43 +111,46 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
}
public function execute( $par ) {
- global $wgOut, $wgUser, $wgRequest;
- if( !$wgUser->isAllowed( 'deletedhistory' ) ) {
- $wgOut->permissionRequired( 'deletedhistory' );
+ $output = $this->getOutput();
+ $user = $this->getUser();
+ if( !$user->isAllowed( 'deletedhistory' ) ) {
+ $output->permissionRequired( 'deletedhistory' );
return;
- } else if( wfReadOnly() ) {
- $wgOut->readOnlyPage();
+ } elseif( wfReadOnly() ) {
+ $output->readOnlyPage();
return;
}
- $this->mIsAllowed = $wgUser->isAllowed('deleterevision'); // for changes
- $this->skin = $wgUser->getSkin();
+ $this->mIsAllowed = $user->isAllowed('deleterevision'); // for changes
$this->setHeaders();
$this->outputHeader();
- $this->submitClicked = $wgRequest->wasPosted() && $wgRequest->getBool( 'wpSubmit' );
+ $request = $this->getRequest();
+ $this->submitClicked = $request->wasPosted() && $request->getBool( 'wpSubmit' );
# Handle our many different possible input types.
- $ids = $wgRequest->getVal( 'ids' );
+ $ids = $request->getVal( 'ids' );
if ( !is_null( $ids ) ) {
# Allow CSV, for backwards compatibility, or a single ID for show/hide links
$this->ids = explode( ',', $ids );
} else {
# Array input
- $this->ids = array_keys( $wgRequest->getArray('ids',array()) );
+ $this->ids = array_keys( $request->getArray('ids',array()) );
}
// $this->ids = array_map( 'intval', $this->ids );
$this->ids = array_unique( array_filter( $this->ids ) );
- if ( $wgRequest->getVal( 'action' ) == 'historysubmit' ) {
- # For show/hide form submission from history page
- $this->targetObj = $GLOBALS['wgTitle'];
+ if ( $request->getVal( 'action' ) == 'historysubmit' ) {
+ // For show/hide form submission from history page
+ // Since we are access through index.php?title=XXX&action=historysubmit
+ // getFullTitle() will contain the target title and not our title
+ $this->targetObj = $this->getFullTitle();
$this->typeName = 'revision';
} else {
- $this->typeName = $wgRequest->getVal( 'type' );
- $this->targetObj = Title::newFromText( $wgRequest->getText( 'target' ) );
+ $this->typeName = $request->getVal( 'type' );
+ $this->targetObj = Title::newFromText( $request->getText( 'target' ) );
}
# For reviewing deleted files...
- $this->archiveName = $wgRequest->getVal( 'file' );
- $this->token = $wgRequest->getVal( 'token' );
+ $this->archiveName = $request->getVal( 'file' );
+ $this->token = $request->getVal( 'token' );
if ( $this->archiveName && $this->targetObj ) {
$this->tryShowFile( $this->archiveName );
return;
@@ -162,23 +162,23 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
# No targets?
if( !isset( self::$allowedTypes[$this->typeName] ) || count( $this->ids ) == 0 ) {
- $wgOut->showErrorPage( 'revdelete-nooldid-title', 'revdelete-nooldid-text' );
+ $output->showErrorPage( 'revdelete-nooldid-title', 'revdelete-nooldid-text' );
return;
}
$this->typeInfo = self::$allowedTypes[$this->typeName];
# If we have revisions, get the title from the first one
- # since they should all be from the same page. This allows
+ # since they should all be from the same page. This allows
# for more flexibility with page moves...
if( $this->typeName == 'revision' ) {
$rev = Revision::newFromId( $this->ids[0] );
$this->targetObj = $rev ? $rev->getTitle() : $this->targetObj;
}
-
- $this->otherReason = $wgRequest->getVal( 'wpReason' );
+
+ $this->otherReason = $request->getVal( 'wpReason' );
# We need a target page!
if( is_null($this->targetObj) ) {
- $wgOut->addWikiMsg( 'undelete-header' );
+ $output->addWikiMsg( 'undelete-header' );
return;
}
# Give a link to the logs/hist for this page
@@ -190,27 +190,27 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
array( 'revdelete-hide-comment', 'wpHideComment', Revision::DELETED_COMMENT ),
array( 'revdelete-hide-user', 'wpHideUser', Revision::DELETED_USER )
);
- if( $wgUser->isAllowed('suppressrevision') ) {
+ if( $user->isAllowed('suppressrevision') ) {
$this->checks[] = array( 'revdelete-hide-restricted',
'wpHideRestricted', Revision::DELETED_RESTRICTED );
}
# Either submit or create our form
if( $this->mIsAllowed && $this->submitClicked ) {
- $this->submit( $wgRequest );
+ $this->submit( $request );
} else {
$this->showForm();
}
-
+
$qc = $this->getLogQueryCond();
# Show relevant lines from the deletion log
- $wgOut->addHTML( "<h2>" . htmlspecialchars( LogPage::logName( 'delete' ) ) . "</h2>\n" );
- LogEventsList::showLogExtract( $wgOut, 'delete',
+ $output->addHTML( "<h2>" . htmlspecialchars( LogPage::logName( 'delete' ) ) . "</h2>\n" );
+ LogEventsList::showLogExtract( $output, 'delete',
$this->targetObj->getPrefixedText(), '', array( 'lim' => 25, 'conds' => $qc ) );
# Show relevant lines from the suppression log
- if( $wgUser->isAllowed( 'suppressionlog' ) ) {
- $wgOut->addHTML( "<h2>" . htmlspecialchars( LogPage::logName( 'suppress' ) ) . "</h2>\n" );
- LogEventsList::showLogExtract( $wgOut, 'suppress',
+ if( $user->isAllowed( 'suppressionlog' ) ) {
+ $output->addHTML( "<h2>" . htmlspecialchars( LogPage::logName( 'suppress' ) ) . "</h2>\n" );
+ LogEventsList::showLogExtract( $output, 'suppress',
$this->targetObj->getPrefixedText(), '', array( 'lim' => 25, 'conds' => $qc ) );
}
}
@@ -219,11 +219,10 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
* Show some useful links in the subtitle
*/
protected function showConvenienceLinks() {
- global $wgOut, $wgUser, $wgLang;
# Give a link to the logs/hist for this page
if( $this->targetObj ) {
$links = array();
- $links[] = $this->skin->linkKnown(
+ $links[] = Linker::linkKnown(
SpecialPage::getTitleFor( 'Log' ),
wfMsgHtml( 'viewpagelogs' ),
array(),
@@ -231,16 +230,16 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
);
if ( $this->targetObj->getNamespace() != NS_SPECIAL ) {
# Give a link to the page history
- $links[] = $this->skin->linkKnown(
+ $links[] = Linker::linkKnown(
$this->targetObj,
wfMsgHtml( 'pagehist' ),
array(),
array( 'action' => 'history' )
);
# Link to deleted edits
- if( $wgUser->isAllowed('undelete') ) {
+ if( $this->getUser()->isAllowed('undelete') ) {
$undelete = SpecialPage::getTitleFor( 'Undelete' );
- $links[] = $this->skin->linkKnown(
+ $links[] = Linker::linkKnown(
$undelete,
wfMsgHtml( 'deletedhist' ),
array(),
@@ -249,7 +248,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
}
}
# Logs themselves don't have histories or archived revisions
- $wgOut->setSubtitle( '<p>' . $wgLang->pipeList( $links ) . '</p>' );
+ $this->getOutput()->setSubtitle( '<p>' . $this->getLang()->pipeList( $links ) . '</p>' );
}
}
@@ -259,7 +258,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
protected function getLogQueryCond() {
$conds = array();
// Revision delete logs for these item
- $conds['log_type'] = array('delete','suppress');
+ $conds['log_type'] = array( 'delete', 'suppress' );
$conds['log_action'] = $this->getList()->getLogAction();
$conds['ls_field'] = RevisionDeleter::getRelationType( $this->typeName );
$conds['ls_value'] = $this->ids;
@@ -271,36 +270,34 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
* TODO Mostly copied from Special:Undelete. Refactor.
*/
protected function tryShowFile( $archiveName ) {
- global $wgOut, $wgRequest, $wgUser, $wgLang;
-
$repo = RepoGroup::singleton()->getLocalRepo();
$oimage = $repo->newFromArchiveName( $this->targetObj, $archiveName );
$oimage->load();
// Check if user is allowed to see this file
if ( !$oimage->exists() ) {
- $wgOut->addWikiMsg( 'revdelete-no-file' );
+ $this->getOutput()->addWikiMsg( 'revdelete-no-file' );
return;
}
if( !$oimage->userCan(File::DELETED_FILE) ) {
if( $oimage->isDeleted( File::DELETED_RESTRICTED ) ) {
- $wgOut->permissionRequired( 'suppressrevision' );
+ $this->getOutput()->permissionRequired( 'suppressrevision' );
} else {
- $wgOut->permissionRequired( 'deletedtext' );
+ $this->getOutput()->permissionRequired( 'deletedtext' );
}
return;
}
- if ( !$wgUser->matchEditToken( $this->token, $archiveName ) ) {
- $wgOut->addWikiMsg( 'revdelete-show-file-confirm',
+ if ( !$this->getUser()->matchEditToken( $this->token, $archiveName ) ) {
+ $this->getOutput()->addWikiMsg( 'revdelete-show-file-confirm',
$this->targetObj->getText(),
- $wgLang->date( $oimage->getTimestamp() ),
- $wgLang->time( $oimage->getTimestamp() ) );
- $wgOut->addHTML(
+ $this->getLang()->date( $oimage->getTimestamp() ),
+ $this->getLang()->time( $oimage->getTimestamp() ) );
+ $this->getOutput()->addHTML(
Xml::openElement( 'form', array(
'method' => 'POST',
'action' => $this->getTitle()->getLocalUrl(
'target=' . urlencode( $oimage->getName() ) .
'&file=' . urlencode( $archiveName ) .
- '&token=' . urlencode( $wgUser->editToken( $archiveName ) ) )
+ '&token=' . urlencode( $this->getUser()->editToken( $archiveName ) ) )
)
) .
Xml::submitButton( wfMsg( 'revdelete-show-file-submit' ) ) .
@@ -308,14 +305,14 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
);
return;
}
- $wgOut->disable();
+ $this->getOutput()->disable();
# We mustn't allow the output to be Squid cached, otherwise
# if an admin previews a deleted image, and it's cached, then
# a user without appropriate permissions can toddle off and
# nab the image, and Squid will serve it
- $wgRequest->response()->header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', 0 ) . ' GMT' );
- $wgRequest->response()->header( 'Cache-Control: no-cache, no-store, max-age=0, must-revalidate' );
- $wgRequest->response()->header( 'Pragma: no-cache' );
+ $this->getRequest()->response()->header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', 0 ) . ' GMT' );
+ $this->getRequest()->response()->header( 'Cache-Control: no-cache, no-store, max-age=0, must-revalidate' );
+ $this->getRequest()->response()->header( 'Pragma: no-cache' );
# Stream the file to the client
global $IP;
@@ -331,27 +328,26 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
protected function getList() {
if ( is_null( $this->list ) ) {
$class = $this->typeInfo['list-class'];
- $this->list = new $class( $this, $this->targetObj, $this->ids );
+ $this->list = new $class( $this->getContext(), $this->targetObj, $this->ids );
}
return $this->list;
}
/**
- * Show a list of items that we will operate on, and show a form with checkboxes
+ * Show a list of items that we will operate on, and show a form with checkboxes
* which will allow the user to choose new visibility settings.
*/
protected function showForm() {
- global $wgOut, $wgUser, $wgLang;
$UserAllowed = true;
if ( $this->typeName == 'logging' ) {
- $wgOut->addWikiMsg( 'logdelete-selected', $wgLang->formatNum( count($this->ids) ) );
+ $this->getOutput()->addWikiMsg( 'logdelete-selected', $this->getLang()->formatNum( count($this->ids) ) );
} else {
- $wgOut->addWikiMsg( 'revdelete-selected',
+ $this->getOutput()->addWikiMsg( 'revdelete-selected',
$this->targetObj->getPrefixedText(), count( $this->ids ) );
}
- $wgOut->addHTML( "<ul>" );
+ $this->getOutput()->addHTML( "<ul>" );
$numRevisions = 0;
// Live revisions...
@@ -360,21 +356,21 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
$item = $list->current();
if ( !$item->canView() ) {
if( !$this->submitClicked ) {
- $wgOut->permissionRequired( 'suppressrevision' );
+ $this->getOutput()->permissionRequired( 'suppressrevision' );
return;
}
$UserAllowed = false;
}
$numRevisions++;
- $wgOut->addHTML( $item->getHTML() );
+ $this->getOutput()->addHTML( $item->getHTML() );
}
if( !$numRevisions ) {
- $wgOut->showErrorPage( 'revdelete-nooldid-title', 'revdelete-nooldid-text' );
+ $this->getOutput()->showErrorPage( 'revdelete-nooldid-title', 'revdelete-nooldid-text' );
return;
}
-
- $wgOut->addHTML( "</ul>" );
+
+ $this->getOutput()->addHTML( "</ul>" );
// Explanation text
$this->addUsageText();
@@ -384,7 +380,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
// Show form if the user can submit
if( $this->mIsAllowed ) {
$out = Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $this->getTitle()->getLocalUrl( array( 'action' => 'submit' ) ),
+ 'action' => $this->getTitle()->getLocalUrl( array( 'action' => 'submit' ) ),
'id' => 'mw-revdel-form-revisions' ) ) .
Xml::fieldset( wfMsg( 'revdelete-legend' ) ) .
$this->buildCheckBoxes() .
@@ -404,7 +400,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
Xml::label( wfMsg( 'revdelete-otherreason' ), 'wpReason' ) .
'</td>' .
'<td class="mw-input">' .
- Xml::input( 'wpReason', 60, $this->otherReason, array( 'id' => 'wpReason' ) ) .
+ Xml::input( 'wpReason', 60, $this->otherReason, array( 'id' => 'wpReason', 'maxlength' => 100 ) ) .
'</td>' .
"</tr><tr>\n" .
'<td></td>' .
@@ -414,7 +410,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
'</td>' .
"</tr>\n" .
Xml::closeElement( 'table' ) .
- Html::hidden( 'wpEditToken', $wgUser->editToken() ) .
+ Html::hidden( 'wpEditToken', $this->getUser()->editToken() ) .
Html::hidden( 'target', $this->targetObj->getPrefixedText() ) .
Html::hidden( 'type', $this->typeName ) .
Html::hidden( 'ids', implode( ',', $this->ids ) ) .
@@ -425,9 +421,9 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
if( $this->mIsAllowed ) {
$out .= Xml::closeElement( 'form' ) . "\n";
// Show link to edit the dropdown reasons
- if( $wgUser->isAllowed( 'editinterface' ) ) {
+ if( $this->getUser()->isAllowed( 'editinterface' ) ) {
$title = Title::makeTitle( NS_MEDIAWIKI, 'revdelete-reason-dropdown' );
- $link = $wgUser->getSkin()->link(
+ $link = Linker::link(
$title,
wfMsgHtml( 'revdelete-edit-reasonlist' ),
array(),
@@ -436,30 +432,27 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
$out .= Xml::tags( 'p', array( 'class' => 'mw-revdel-editreasons' ), $link ) . "\n";
}
}
- $wgOut->addHTML( $out );
+ $this->getOutput()->addHTML( $out );
}
/**
* Show some introductory text
- * FIXME Wikimedia-specific policy text
+ * @todo FIXME: Wikimedia-specific policy text
*/
protected function addUsageText() {
- global $wgOut, $wgUser;
- $wgOut->addWikiMsg( 'revdelete-text' );
- if( $wgUser->isAllowed( 'suppressrevision' ) ) {
- $wgOut->addWikiMsg( 'revdelete-suppress-text' );
+ $this->getOutput()->addWikiMsg( 'revdelete-text' );
+ if( $this->getUser()->isAllowed( 'suppressrevision' ) ) {
+ $this->getOutput()->addWikiMsg( 'revdelete-suppress-text' );
}
if( $this->mIsAllowed ) {
- $wgOut->addWikiMsg( 'revdelete-confirm' );
+ $this->getOutput()->addWikiMsg( 'revdelete-confirm' );
}
}
-
+
/**
* @return String: HTML
*/
protected function buildCheckBoxes() {
- global $wgRequest;
-
$html = '<table>';
// If there is just one item, use checkboxes
$list = $this->getList();
@@ -467,7 +460,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
$list->reset();
$bitfield = $list->current()->getBits(); // existing field
if( $this->submitClicked ) {
- $bitfield = $this->extractBitfield( $this->extractBitParams($wgRequest), $bitfield );
+ $bitfield = $this->extractBitfield( $this->extractBitParams(), $bitfield );
}
foreach( $this->checks as $item ) {
list( $message, $name, $field ) = $item;
@@ -488,7 +481,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
list( $message, $name, $field ) = $item;
// If there are several items, use third state by default...
if( $this->submitClicked ) {
- $selected = $wgRequest->getInt( $name, 0 /* unchecked */ );
+ $selected = $this->getRequest()->getInt( $name, 0 /* unchecked */ );
} else {
$selected = -1; // use existing field
}
@@ -503,24 +496,23 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
$html .= "<tr>$line</tr>\n";
}
}
-
+
$html .= '</table>';
return $html;
}
/**
* UI entry point for form submission.
- * @param $request WebRequest
*/
- protected function submit( $request ) {
- global $wgUser, $wgOut;
+ protected function submit() {
# Check edit token on submission
- if( $this->submitClicked && !$wgUser->matchEditToken( $request->getVal('wpEditToken') ) ) {
- $wgOut->addWikiMsg( 'sessionfailure' );
+ $token = $this->getRequest()->getVal('wpEditToken');
+ if( $this->submitClicked && !$this->getUser()->matchEditToken( $token ) ) {
+ $this->getOutput()->addWikiMsg( 'sessionfailure' );
return false;
}
- $bitParams = $this->extractBitParams( $request );
- $listReason = $request->getText( 'wpRevDeleteReasonList', 'other' ); // from dropdown
+ $bitParams = $this->extractBitParams();
+ $listReason = $this->getRequest()->getText( 'wpRevDeleteReasonList', 'other' ); // from dropdown
$comment = $listReason;
if( $comment != 'other' && $this->otherReason != '' ) {
// Entry from drop down menu + additional comment
@@ -529,8 +521,8 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
$comment = $this->otherReason;
}
# Can the user set this field?
- if( $bitParams[Revision::DELETED_RESTRICTED]==1 && !$wgUser->isAllowed('suppressrevision') ) {
- $wgOut->permissionRequired( 'suppressrevision' );
+ if( $bitParams[Revision::DELETED_RESTRICTED]==1 && !$this->getUser()->isAllowed('suppressrevision') ) {
+ $this->getOutput()->permissionRequired( 'suppressrevision' );
return false;
}
# If the save went through, go to success message...
@@ -549,9 +541,8 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
* Report that the submit operation succeeded
*/
protected function success() {
- global $wgOut;
- $wgOut->setPagetitle( wfMsg( 'actioncomplete' ) );
- $wgOut->wrapWikiMsg( "<span class=\"success\">\n$1\n</span>", $this->typeInfo['success'] );
+ $this->getOutput()->setPagetitle( wfMsg( 'actioncomplete' ) );
+ $this->getOutput()->wrapWikiMsg( "<span class=\"success\">\n$1\n</span>", $this->typeInfo['success'] );
$this->list->reloadFromMaster();
$this->showForm();
}
@@ -560,22 +551,21 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
* Report that the submit operation failed
*/
protected function failure( $status ) {
- global $wgOut;
- $wgOut->setPagetitle( wfMsg( 'actionfailed' ) );
- $wgOut->addWikiText( $status->getWikiText( $this->typeInfo['failure'] ) );
+ $this->getOutput()->setPagetitle( wfMsg( 'actionfailed' ) );
+ $this->getOutput()->addWikiText( $status->getWikiText( $this->typeInfo['failure'] ) );
$this->showForm();
}
/**
* Put together an array that contains -1, 0, or the *_deleted const for each bit
- * @param $request WebRequest
+ *
* @return array
*/
- protected function extractBitParams( $request ) {
+ protected function extractBitParams() {
$bitfield = array();
foreach( $this->checks as $item ) {
list( /* message */ , $name, $field ) = $item;
- $val = $request->getInt( $name, 0 /* unchecked */ );
+ $val = $this->getRequest()->getInt( $name, 0 /* unchecked */ );
if( $val < -1 || $val > 1) {
$val = -1; // -1 for existing value
}
@@ -586,7 +576,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
}
return $bitfield;
}
-
+
/**
* Put together a rev_deleted bitfield
* @param $bitPars array extractBitParams() params
@@ -599,7 +589,7 @@ class SpecialRevisionDelete extends UnlistedSpecialPage {
foreach( $bitPars as $const => $val ) {
if( $val == 1 ) {
$newBits |= $const; // $const is the *_deleted const
- } else if( $val == -1 ) {
+ } elseif( $val == -1 ) {
$newBits |= ($oldfield & $const); // use existing
}
}
diff --git a/includes/specials/SpecialSearch.php b/includes/specials/SpecialSearch.php
index fd6e858e..ba9d378a 100644
--- a/includes/specials/SpecialSearch.php
+++ b/includes/specials/SpecialSearch.php
@@ -24,35 +24,66 @@
*/
/**
- * Entry point
- *
- * @param $par String: (default '')
- */
-function wfSpecialSearch( $par = '' ) {
- global $wgRequest, $wgUser, $wgOut;
- $wgOut->allowClickjacking();
-
- // Strip underscores from title parameter; most of the time we'll want
- // text form here. But don't strip underscores from actual text params!
- $titleParam = str_replace( '_', ' ', $par );
- // Fetch the search term
- $search = str_replace( "\n", " ", $wgRequest->getText( 'search', $titleParam ) );
- $searchPage = new SpecialSearch( $wgRequest, $wgUser );
- if( $wgRequest->getVal( 'fulltext' )
- || !is_null( $wgRequest->getVal( 'offset' ))
- || !is_null( $wgRequest->getVal( 'searchx' )) )
- {
- $searchPage->showResults( $search );
- } else {
- $searchPage->goResult( $search );
- }
-}
-
-/**
* implements Special:Search - Run text & title search and display the output
* @ingroup SpecialPage
*/
-class SpecialSearch {
+class SpecialSearch extends SpecialPage {
+ /**
+ * Current search profile. Search profile is just a name that identifies
+ * the active search tab on the search page (content, help, discussions...)
+ * For users tt replaces the set of enabled namespaces from the query
+ * string when applicable. Extensions can add new profiles with hooks
+ * with custom search options just for that profile.
+ * null|string
+ */
+ protected $profile;
+
+ /// Search engine
+ protected $searchEngine;
+
+ /// For links
+ protected $extraParams = array();
+
+ /// No idea, apparently used by some other classes
+ protected $mPrefix;
+
+ const NAMESPACES_CURRENT = 'sense';
+
+ public function __construct() {
+ parent::__construct( 'Search' );
+ }
+
+ /**
+ * Entry point
+ *
+ * @param $par String or null
+ */
+ public function execute( $par ) {
+ global $wgRequest, $wgUser, $wgOut;
+
+ $this->setHeaders();
+ $this->outputHeader();
+ $wgOut->allowClickjacking();
+ $wgOut->addModuleStyles( 'mediawiki.special' );
+
+ // Strip underscores from title parameter; most of the time we'll want
+ // text form here. But don't strip underscores from actual text params!
+ $titleParam = str_replace( '_', ' ', $par );
+
+ // Fetch the search term
+ $search = str_replace( "\n", " ", $wgRequest->getText( 'search', $titleParam ) );
+
+ $this->load( $wgRequest, $wgUser );
+
+ if ( $wgRequest->getVal( 'fulltext' )
+ || !is_null( $wgRequest->getVal( 'offset' ) )
+ || !is_null( $wgRequest->getVal( 'searchx' ) ) )
+ {
+ $this->showResults( $search );
+ } else {
+ $this->goResult( $search );
+ }
+ }
/**
* Set up basic search parameters from the request and user settings.
@@ -61,18 +92,44 @@ class SpecialSearch {
* @param $request WebRequest
* @param $user User
*/
- public function __construct( &$request, &$user ) {
+ public function load( &$request, &$user ) {
list( $this->limit, $this->offset ) = $request->getLimitOffset( 20, 'searchlimit' );
- $this->mPrefix = $request->getVal('prefix', '');
- # Extract requested namespaces
- $this->namespaces = $this->powerSearch( $request );
- if( empty( $this->namespaces ) ) {
- $this->namespaces = SearchEngine::userNamespaces( $user );
+ $this->mPrefix = $request->getVal( 'prefix', '' );
+
+
+ # Extract manually requested namespaces
+ $nslist = $this->powerSearch( $request );
+ $this->profile = $profile = $request->getVal( 'profile', null );
+ $profiles = $this->getSearchProfiles();
+ if ( $profile === null) {
+ // BC with old request format
+ $this->profile = 'advanced';
+ if ( count( $nslist ) ) {
+ foreach( $profiles as $key => $data ) {
+ if ( $nslist === $data['namespaces'] && $key !== 'advanced') {
+ $this->profile = $key;
+ }
+ }
+ $this->namespaces = $nslist;
+ } else {
+ $this->namespaces = SearchEngine::userNamespaces( $user );
+ }
+ } elseif ( $profile === 'advanced' ) {
+ $this->namespaces = $nslist;
+ } else {
+ if ( isset( $profiles[$profile]['namespaces'] ) ) {
+ $this->namespaces = $profiles[$profile]['namespaces'];
+ } else {
+ // Unknown profile requested
+ $this->profile = 'default';
+ $this->namespaces = $profiles['default']['namespaces'];
+ }
}
- $this->searchRedirects = $request->getCheck( 'redirs' );
- $this->searchAdvanced = $request->getVal( 'advanced' );
- $this->active = 'advanced';
- $this->sk = $user->getSkin();
+
+ // Redirects defaults to true, but we don't know whether it was ticked of or just missing
+ $default = $request->getBool( 'profile' ) ? 0 : 1;
+ $this->searchRedirects = $request->getBool( 'redirs', $default ) ? 1 : 0;
+ $this->sk = $this->getSkin();
$this->didYouMeanHtml = ''; # html of did you mean... link
$this->fulltext = $request->getVal('fulltext');
}
@@ -93,12 +150,12 @@ class SpecialSearch {
}
# If there's an exact or very near match, jump right there.
$t = SearchEngine::getNearMatch( $term );
-
+
if ( !wfRunHooks( 'SpecialSearchGo', array( &$t, &$term ) ) ) {
# Hook requested termination
return;
}
-
+
if( !is_null( $t ) ) {
$wgOut->redirect( $t->getFullURL() );
return;
@@ -123,19 +180,21 @@ class SpecialSearch {
* @param $term String
*/
public function showResults( $term ) {
- global $wgOut, $wgUser, $wgDisableTextSearch, $wgContLang, $wgScript;
+ global $wgOut, $wgDisableTextSearch, $wgContLang, $wgScript;
wfProfileIn( __METHOD__ );
- $sk = $wgUser->getSkin();
+ $sk = $this->getSkin();
- $this->searchEngine = SearchEngine::create();
- $search =& $this->searchEngine;
+ $search = $this->getSearchEngine();
$search->setLimitOffset( $this->limit, $this->offset );
$search->setNamespaces( $this->namespaces );
- $search->showRedirects = $this->searchRedirects;
+ $search->showRedirects = $this->searchRedirects; // BC
+ $search->setFeatureData( 'list-redirects', $this->searchRedirects );
$search->prefix = $this->mPrefix;
$term = $search->transformSearchTerm($term);
+ wfRunHooks( 'SpecialSearchSetupEngine', array( $this, $this->profile, $search ) );
+
$this->setupPage( $term );
if( $wgDisableTextSearch ) {
@@ -146,14 +205,13 @@ class SpecialSearch {
wfProfileOut( __METHOD__ );
return;
}
- global $wgInputEncoding;
$wgOut->addHTML(
Xml::openElement( 'fieldset' ) .
Xml::element( 'legend', null, wfMsg( 'search-external' ) ) .
Xml::element( 'p', array( 'class' => 'mw-searchdisabled' ), wfMsg( 'searchdisabled' ) ) .
wfMsg( 'googlesearch',
htmlspecialchars( $term ),
- htmlspecialchars( $wgInputEncoding ),
+ htmlspecialchars( 'UTF-8' ),
htmlspecialchars( wfMsg( 'searchbutton' ) )
) .
Xml::closeElement( 'fieldset' )
@@ -205,7 +263,7 @@ class SpecialSearch {
Xml::openElement(
'form',
array(
- 'id' => ( $this->searchAdvanced ? 'powersearch' : 'search' ),
+ 'id' => ( $this->profile === 'advanced' ? 'powersearch' : 'search' ),
'method' => 'get',
'action' => $wgScript
)
@@ -214,7 +272,7 @@ class SpecialSearch {
$wgOut->addHtml(
Xml::openElement( 'table', array( 'id'=>'mw-search-top-table', 'border'=>0, 'cellpadding'=>0, 'cellspacing'=>0 ) ) .
Xml::openElement( 'tr' ) .
- Xml::openElement( 'td' ) . "\n" .
+ Xml::openElement( 'td' ) . "\n" .
$this->shortDialog( $term ) .
Xml::closeElement('td') .
Xml::closeElement('tr') .
@@ -223,17 +281,15 @@ class SpecialSearch {
// Sometimes the search engine knows there are too many hits
if( $titleMatches instanceof SearchResultTooMany ) {
- $wgOut->addWikiText( '==' . wfMsg( 'toomanymatches' ) . "==\n" );
+ $wgOut->wrapWikiMsg( "==$1==\n", 'toomanymatches' );
wfProfileOut( __METHOD__ );
return;
}
$filePrefix = $wgContLang->getFormattedNsText(NS_FILE).':';
if( trim( $term ) === '' || $filePrefix === trim( $term ) ) {
- $wgOut->addHTML( $this->formHeader($term, 0, 0));
- if( $this->searchAdvanced ) {
- $wgOut->addHTML( $this->powerSearchBox( $term ) );
- }
+ $wgOut->addHTML( $this->formHeader( $term, 0, 0 ) );
+ $wgOut->addHtml( $this->getProfileForm( $this->profile, $term ) );
$wgOut->addHTML( '</form>' );
// Empty query -- straight view of search form
wfProfileOut( __METHOD__ );
@@ -245,7 +301,7 @@ class SpecialSearch {
$textMatchesNum = $textMatches ? $textMatches->numRows() : 0;
// Total initial query matches (possible false positives)
$num = $titleMatchesNum + $textMatchesNum;
-
+
// Get total actual results (after second filtering, if any)
$numTitleMatches = $titleMatches && !is_null( $titleMatches->getTotalHits() ) ?
$titleMatches->getTotalHits() : $titleMatchesNum;
@@ -258,13 +314,12 @@ class SpecialSearch {
$totalRes += $titleMatches->getTotalHits();
if($textMatches && !is_null( $textMatches->getTotalHits() ))
$totalRes += $textMatches->getTotalHits();
-
+
// show number of results and current offset
- $wgOut->addHTML( $this->formHeader($term, $num, $totalRes));
- if( $this->searchAdvanced ) {
- $wgOut->addHTML( $this->powerSearchBox( $term ) );
- }
-
+ $wgOut->addHTML( $this->formHeader( $term, $num, $totalRes ) );
+ $wgOut->addHtml( $this->getProfileForm( $this->profile, $term ) );
+
+
$wgOut->addHtml( Xml::closeElement( 'form' ) );
$wgOut->addHtml( "<div class='searchresults'>" );
@@ -281,8 +336,9 @@ class SpecialSearch {
wfRunHooks( 'SpecialSearchResults', array( $term, &$titleMatches, &$textMatches ) );
} else {
wfRunHooks( 'SpecialSearchNoResults', array( $term ) );
- }
+ }
+ $wgOut->parserOptions()->setEditSection( false );
if( $titleMatches ) {
if( $numTitleMatches > 0 ) {
$wgOut->wrapWikiMsg( "==$1==\n", 'titlematches' );
@@ -321,23 +377,33 @@ class SpecialSearch {
}
wfProfileOut( __METHOD__ );
}
-
+
protected function showCreateLink( $t ) {
global $wgOut;
-
+
// show direct page/create link if applicable
- $messageName = null;
- if( !is_null($t) ) {
- if( $t->isKnown() ) {
- $messageName = 'searchmenu-exists';
- } elseif( $t->userCan( 'create' ) ) {
- $messageName = 'searchmenu-new';
- } else {
- $messageName = 'searchmenu-new-nocreate';
- }
- }
+
+ // Check DBkey !== '' in case of fragment link only.
+ if( is_null( $t ) || $t->getDBkey() === '' ) {
+ // invalid title
+ // preserve the paragraph for margins etc...
+ $this->getOutput()->addHtml( '<p></p>' );
+ return;
+ }
+ $messageName = '';
+ if( $t->isKnown() ) {
+ $messageName = 'searchmenu-exists';
+ } elseif( $t->userCan( 'create' ) ) {
+ $messageName = 'searchmenu-new';
+ } else {
+ $messageName = 'searchmenu-new-nocreate';
+ }
+ $params = array( $messageName, wfEscapeWikiText( $t->getPrefixedText() ) );
+ wfRunHooks( 'SpecialSearchCreateLink', array( $t, &$params ) );
+
+ // Extensions using the hook might still return an empty $messageName
if( $messageName ) {
- $wgOut->wrapWikiMsg( "<p class=\"mw-search-createlink\">\n$1</p>", array( $messageName, wfEscapeWikiText( $t->getPrefixedText() ) ) );
+ $this->getOutput()->wrapWikiMsg( "<p class=\"mw-search-createlink\">\n$1</p>", $params );
} else {
// preserve the paragraph for margins etc...
$wgOut->addHtml( '<p></p>' );
@@ -349,28 +415,14 @@ class SpecialSearch {
*/
protected function setupPage( $term ) {
global $wgOut;
- // Figure out the active search profile header
- if( $this->searchAdvanced ) {
- $this->active = 'advanced';
- } else {
- $profiles = $this->getSearchProfiles();
-
- foreach( $profiles as $key => $data ) {
- if ( $this->namespaces == $data['namespaces'] && $key != 'advanced')
- $this->active = $key;
- }
-
- }
+
# Should advanced UI be used?
- $this->searchAdvanced = ($this->active === 'advanced');
- if( !empty( $term ) ) {
+ $this->searchAdvanced = ($this->profile === 'advanced');
+ if( strval( $term ) !== '' ) {
$wgOut->setPageTitle( wfMsg( 'searchresults') );
$wgOut->setHTMLTitle( wfMsg( 'pagetitle', wfMsg( 'searchresults-title', $term ) ) );
}
- $wgOut->setArticleRelated( false );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
// add javascript specific to special:search
- $wgOut->addModules( 'mediawiki.legacy.search' );
$wgOut->addModules( 'mediawiki.special.search' );
}
@@ -388,6 +440,7 @@ class SpecialSearch {
$arr[] = $ns;
}
}
+
return $arr;
}
@@ -398,14 +451,15 @@ class SpecialSearch {
*/
protected function powerSearchOptions() {
$opt = array();
- foreach( $this->namespaces as $n ) {
- $opt['ns' . $n] = 1;
- }
$opt['redirs'] = $this->searchRedirects ? 1 : 0;
- if( $this->searchAdvanced ) {
- $opt['advanced'] = $this->searchAdvanced;
+ if( $this->profile !== 'advanced' ) {
+ $opt['profile'] = $this->profile;
+ } else {
+ foreach( $this->namespaces as $n ) {
+ $opt['ns' . $n] = 1;
+ }
}
- return $opt;
+ return $opt + $this->extraParams;
}
/**
@@ -443,7 +497,7 @@ class SpecialSearch {
* @param $terms Array: terms to highlight
*/
protected function showHit( $result, $terms ) {
- global $wgLang, $wgUser;
+ global $wgLang;
wfProfileIn( __METHOD__ );
if( $result->isBrokenTitle() ) {
@@ -451,16 +505,16 @@ class SpecialSearch {
return "<!-- Broken link in search result -->\n";
}
- $sk = $wgUser->getSkin();
+ $sk = $this->getSkin();
$t = $result->getTitle();
$titleSnippet = $result->getTitleSnippet($terms);
if( $titleSnippet == '' )
$titleSnippet = null;
-
+
$link_t = clone $t;
-
+
wfRunHooks( 'ShowSearchHitTitle',
array( &$link_t, &$titleSnippet, $result, $terms, $this ) );
@@ -509,7 +563,6 @@ class SpecialSearch {
$section = '';
-
if( !is_null($sectionTitle) ) {
if( $sectionText == '' )
$sectionText = null;
@@ -544,7 +597,7 @@ class SpecialSearch {
$size = wfMsgExt(
'search-result-size',
array( 'parsemag', 'escape' ),
- $this->sk->formatSize( $byteSize ),
+ $wgLang->formatSize( $byteSize ),
$wgLang->formatNum( $wordCount )
);
@@ -706,13 +759,13 @@ class SpecialSearch {
$out = "";
// display project name
if(is_null($lastInterwiki) || $lastInterwiki != $t->getInterwiki()) {
- if( key_exists($t->getInterwiki(),$customCaptions) )
+ if( array_key_exists($t->getInterwiki(),$customCaptions) ) {
// captions from 'search-interwiki-custom'
$caption = $customCaptions[$t->getInterwiki()];
- else{
+ } else {
// default is to show the hostname of the other wiki which might suck
// if there are many wikis on one hostname
- $parsed = parse_url($t->getFullURL());
+ $parsed = wfParseUrl( $t->getFullURL() );
$caption = wfMsg('search-interwiki-default', $parsed['host']);
}
// "more results" link (special page stuff could be localized, but we might not know target lang)
@@ -735,14 +788,28 @@ class SpecialSearch {
return $out;
}
+ protected function getProfileForm( $profile, $term ) {
+ // Hidden stuff
+ $opts = array();
+ $opts['redirs'] = $this->searchRedirects;
+ $opts['profile'] = $this->profile;
+
+ if ( $profile === 'advanced' ) {
+ return $this->powerSearchBox( $term, $opts );
+ } else {
+ $form = '';
+ wfRunHooks( 'SpecialSearchProfileForm', array( $this, &$form, $profile, $term, $opts ) );
+ return $form;
+ }
+ }
/**
- * Generates the power search box at bottom of [[Special:Search]]
+ * Generates the power search box at [[Special:Search]]
*
* @param $term String: search term
* @return String: HTML form
*/
- protected function powerSearchBox( $term ) {
+ protected function powerSearchBox( $term, $opts ) {
// Groups namespaces into rows according to subject
$rows = array();
foreach( SearchEngine::searchableNamespaces() as $namespace => $name ) {
@@ -768,7 +835,7 @@ class SpecialSearch {
}
$rows = array_values( $rows );
$numRows = count( $rows );
-
+
// Lays out namespaces in multiple floating two-column tables so they'll
// be arranged nicely while still accommodating different screen widths
$namespaceTables = '';
@@ -782,15 +849,21 @@ class SpecialSearch {
}
$namespaceTables .= Xml::closeElement( 'table' );
}
+
+ $showSections = array( 'namespaceTables' => $namespaceTables );
+
// Show redirects check only if backend supports it
- $redirects = '';
- if( $this->searchEngine->acceptListRedirects() ) {
- $redirects =
- Xml::check(
- 'redirs', $this->searchRedirects, array( 'value' => '1', 'id' => 'redirs' )
- ) .
- ' ' .
- Xml::label( wfMsg( 'powersearch-redir' ), 'redirs' );
+ if( $this->getSearchEngine()->supports( 'list-redirects' ) ) {
+ $showSections['redirects'] =
+ Xml::checkLabel( wfMsg( 'powersearch-redir' ), 'redirs', 'redirs', $this->searchRedirects );
+ }
+
+ wfRunHooks( 'SpecialSearchPowerBox', array( &$showSections, $term, $opts ) );
+
+ $hidden = '';
+ unset( $opts['redirs'] );
+ foreach( $opts as $key => $value ) {
+ $hidden .= Html::hidden( $key, $value );
}
// Return final output
return
@@ -809,7 +882,6 @@ class SpecialSearch {
array(
'type'=>'button',
'id' => 'mw-search-toggleall',
- 'onclick' => 'mwToggleSearchCheckboxes("all");',
'value' => wfMsg( 'powersearch-toggleall' )
)
) .
@@ -818,25 +890,20 @@ class SpecialSearch {
array(
'type'=>'button',
'id' => 'mw-search-togglenone',
- 'onclick' => 'mwToggleSearchCheckboxes("none");',
'value' => wfMsg( 'powersearch-togglenone' )
)
)
) .
Xml::element( 'div', array( 'class' => 'divider' ), '', false ) .
- $namespaceTables .
- Xml::element( 'div', array( 'class' => 'divider' ), '', false ) .
- $redirects .
- Html::hidden( 'title', SpecialPage::getTitleFor( 'Search' )->getPrefixedText() ) .
- Html::hidden( 'advanced', $this->searchAdvanced ) .
- Html::hidden( 'fulltext', 'Advanced search' ) .
+ implode( Xml::element( 'div', array( 'class' => 'divider' ), '', false ), $showSections ) .
+ $hidden .
Xml::closeElement( 'fieldset' );
}
-
+
protected function getSearchProfiles() {
// Builds list of Search Types (profiles)
$nsAllSet = array_keys( SearchEngine::searchableNamespaces() );
-
+
$profiles = array(
'default' => array(
'message' => 'searchprofile-articles',
@@ -867,25 +934,25 @@ class SpecialSearch {
'advanced' => array(
'message' => 'searchprofile-advanced',
'tooltip' => 'searchprofile-advanced-tooltip',
- 'namespaces' => $this->namespaces,
- 'parameters' => array( 'advanced' => 1 ),
+ 'namespaces' => self::NAMESPACES_CURRENT,
)
);
-
+
wfRunHooks( 'SpecialSearchProfiles', array( &$profiles ) );
foreach( $profiles as &$data ) {
- sort($data['namespaces']);
+ if ( !is_array( $data['namespaces'] ) ) continue;
+ sort( $data['namespaces'] );
}
-
+
return $profiles;
}
protected function formHeader( $term, $resultsShown, $totalNum ) {
global $wgLang;
-
+
$out = Xml::openElement('div', array( 'class' => 'mw-search-formheader' ) );
-
+
$bareterm = $term;
if( $this->startsWithImage( $term ) ) {
// Deletes prefixes
@@ -893,24 +960,29 @@ class SpecialSearch {
}
$profiles = $this->getSearchProfiles();
-
+
// Outputs XML for Search Types
$out .= Xml::openElement( 'div', array( 'class' => 'search-types' ) );
$out .= Xml::openElement( 'ul' );
foreach ( $profiles as $id => $profile ) {
+ if ( !isset( $profile['parameters'] ) ) {
+ $profile['parameters'] = array();
+ }
+ $profile['parameters']['profile'] = $id;
+
$tooltipParam = isset( $profile['namespace-messages'] ) ?
$wgLang->commaList( $profile['namespace-messages'] ) : null;
$out .= Xml::tags(
'li',
array(
- 'class' => $this->active == $id ? 'current' : 'normal'
+ 'class' => $this->profile === $id ? 'current' : 'normal'
),
$this->makeSearchLink(
$bareterm,
- $profile['namespaces'],
+ array(),
wfMsg( $profile['message'] ),
wfMsg( $profile['tooltip'], $tooltipParam ),
- isset( $profile['parameters'] ) ? $profile['parameters'] : array()
+ $profile['parameters']
)
);
}
@@ -930,60 +1002,54 @@ class SpecialSearch {
} elseif ( $resultsShown >= $this->limit ) {
$top = wfShowingResults( $this->offset, $this->limit );
} else {
- $top = wfShowingResultsNum( $this->offset, $this->limit, $resultsShown );
+ $top = wfMsgExt( 'showingresultsnum', array( 'parseinline' ),
+ $wgLang->formatNum( $this->limit ),
+ $wgLang->formatNum( $this->offset + 1 ),
+ $wgLang->formatNum( $resultsShown )
+ );
}
$out .= Xml::tags( 'div', array( 'class' => 'results-info' ),
Xml::tags( 'ul', null, Xml::tags( 'li', null, $top ) )
);
}
-
+
$out .= Xml::element( 'div', array( 'style' => 'clear:both' ), '', false );
$out .= Xml::closeElement('div');
-
- // Adds hidden namespace fields
- if ( !$this->searchAdvanced ) {
- foreach( $this->namespaces as $ns ) {
- $out .= Html::hidden( "ns{$ns}", '1' );
- }
- }
-
+
return $out;
}
protected function shortDialog( $term ) {
- $searchTitle = SpecialPage::getTitleFor( 'Search' );
- $out = Html::hidden( 'title', $searchTitle->getPrefixedText() ) . "\n";
- // Keep redirect setting
- $out .= Html::hidden( "redirs", (int)$this->searchRedirects ) . "\n";
+ $out = Html::hidden( 'title', $this->getTitle()->getPrefixedText() );
+ $out .= Html::hidden( 'profile', $this->profile ) . "\n";
// Term box
$out .= Html::input( 'search', $term, 'search', array(
- 'id' => $this->searchAdvanced ? 'powerSearchText' : 'searchText',
+ 'id' => $this->profile === 'advanced' ? 'powerSearchText' : 'searchText',
'size' => '50',
'autofocus'
) ) . "\n";
$out .= Html::hidden( 'fulltext', 'Search' ) . "\n";
$out .= Xml::submitButton( wfMsg( 'searchbutton' ) ) . "\n";
- return $out . $this->didYouMeanHtml;
+ return $out . $this->didYouMeanHtml;
}
/**
* Make a search link with some target namespaces
*
* @param $term String
- * @param $namespaces Array
+ * @param $namespaces Array ignored
* @param $label String: link's text
* @param $tooltip String: link's tooltip
* @param $params Array: query string parameters
* @return String: HTML fragment
*/
- protected function makeSearchLink( $term, $namespaces, $label, $tooltip, $params=array() ) {
+ protected function makeSearchLink( $term, $namespaces, $label, $tooltip, $params = array() ) {
$opt = $params;
foreach( $namespaces as $n ) {
$opt['ns' . $n] = 1;
}
- $opt['redirs'] = $this->searchRedirects ? 1 : 0;
+ $opt['redirs'] = $this->searchRedirects;
- $st = SpecialPage::getTitleFor( 'Search' );
$stParams = array_merge(
array(
'search' => $term,
@@ -995,10 +1061,8 @@ class SpecialSearch {
return Xml::element(
'a',
array(
- 'href' => $st->getLocalURL( $stParams ),
- 'title' => $tooltip,
- 'onmousedown' => 'mwSearchHeaderClick(this);',
- 'onkeydown' => 'mwSearchHeaderClick(this);'),
+ 'href' => $this->getTitle()->getLocalURL( $stParams ),
+ 'title' => $tooltip),
$label
);
}
@@ -1018,7 +1082,7 @@ class SpecialSearch {
}
return false;
}
-
+
/**
* Check if query starts with all: prefix
*
@@ -1028,12 +1092,32 @@ class SpecialSearch {
protected function startsWithAll( $term ) {
$allkeyword = wfMsgForContent('searchall');
-
+
$p = explode( ':', $term );
if( count( $p ) > 1 ) {
return $p[0] == $allkeyword;
}
return false;
}
-}
+ /**
+ * @since 1.18
+ */
+ public function getSearchEngine() {
+ if ( $this->searchEngine === null ) {
+ $this->searchEngine = SearchEngine::create();
+ }
+ return $this->searchEngine;
+ }
+
+ /**
+ * Users of hook SpecialSearchSetupEngine can use this to
+ * add more params to links to not lose selection when
+ * user navigates search results.
+ * @since 1.18
+ */
+ public function setExtraParam( $key, $value ) {
+ $this->extraParams[$key] = $value;
+ }
+
+}
diff --git a/includes/specials/SpecialShortpages.php b/includes/specials/SpecialShortpages.php
index 989e4c07..3b785018 100644
--- a/includes/specials/SpecialShortpages.php
+++ b/includes/specials/SpecialShortpages.php
@@ -29,10 +29,11 @@
*/
class ShortPagesPage extends QueryPage {
- function getName() {
- return 'Shortpages';
+ function __construct( $name = 'Shortpages' ) {
+ parent::__construct( $name );
}
+ // inexpensive?
/**
* This query is indexed as of 1.5
*/
@@ -44,29 +45,27 @@ class ShortPagesPage extends QueryPage {
return false;
}
- function getSQL() {
- global $wgContentNamespaces;
-
- $dbr = wfGetDB( DB_SLAVE );
- $page = $dbr->tableName( 'page' );
- $name = $dbr->addQuotes( $this->getName() );
-
- $forceindex = $dbr->useIndexClause("page_len");
-
- if ($wgContentNamespaces)
- $nsclause = "page_namespace IN (" . $dbr->makeList($wgContentNamespaces) . ")";
- else
- $nsclause = "page_namespace = " . NS_MAIN;
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'page' ),
+ 'fields' => array ( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'page_len AS value' ),
+ 'conds' => array ( 'page_namespace' => MWNamespace::getContentNamespaces(),
+ 'page_is_redirect' => 0 ),
+ 'options' => array ( 'USE INDEX' => 'page_len' )
+ );
+ }
- return
- "SELECT $name as type,
- page_namespace as namespace,
- page_title as title,
- page_len AS value
- FROM $page $forceindex
- WHERE $nsclause AND page_is_redirect=0";
+ function getOrderFields() {
+ return array( 'page_len' );
}
+ /**
+ * @param $db DatabaseBase
+ * @param $res
+ * @return void
+ */
function preprocessResults( $db, $res ) {
# There's no point doing a batch check if we aren't caching results;
# the page must exist for it to have been pulled out of the table
@@ -87,10 +86,10 @@ class ShortPagesPage extends QueryPage {
}
function formatResult( $skin, $result ) {
- global $wgLang, $wgContLang;
- $dm = $wgContLang->getDirMark();
+ global $wgLang;
+ $dm = $wgLang->getDirMark();
- $title = Title::makeTitleSafe( $result->namespace, $result->title );
+ $title = Title::makeTitle( $result->namespace, $result->title );
if ( !$title ) {
return '<!-- Invalid title ' . htmlspecialchars( "{$result->namespace}:{$result->title}" ). '-->';
}
@@ -110,14 +109,3 @@ class ShortPagesPage extends QueryPage {
: "<del>({$hlink}) {$dm}{$plink} {$dm}[{$size}]</del>";
}
}
-
-/**
- * constructor
- */
-function wfSpecialShortpages() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $spp = new ShortPagesPage();
-
- return $spp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialSpecialpages.php b/includes/specials/SpecialSpecialpages.php
index 19bc6b00..13bc4c2b 100644
--- a/includes/specials/SpecialSpecialpages.php
+++ b/includes/specials/SpecialSpecialpages.php
@@ -33,10 +33,11 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
}
function execute( $par ) {
- global $wgOut;
+ $out = $this->getOutput();
$this->setHeaders();
$this->outputHeader();
- $wgOut->allowClickjacking();
+ $out->allowClickjacking();
+ $out->addModuleStyles( 'mediawiki.special' );
$groups = $this->getPageGroups();
@@ -50,7 +51,7 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
private function getPageGroups() {
global $wgSortSpecialPages;
- $pages = SpecialPage::getUsablePages();
+ $pages = SpecialPageFactory::getUsablePages();
if( !count( $pages ) ) {
# Yeah, that was pointless. Thanks for coming.
@@ -61,11 +62,11 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
$groups = array();
foreach ( $pages as $page ) {
if ( $page->isListed() ) {
- $group = SpecialPage::getGroup( $page );
+ $group = SpecialPageFactory::getGroup( $page );
if( !isset( $groups[$group] ) ) {
$groups[$group] = array();
}
- $groups[$group][$page->getDescription()] = array( $page->getTitle(), $page->isRestricted() );
+ $groups[$group][$page->getDescription()] = array( $page->getTitle(), $page->isRestricted(), $page->isExpensive() );
}
}
@@ -87,52 +88,59 @@ class SpecialSpecialpages extends UnlistedSpecialPage {
}
private function outputPageList( $groups ) {
- global $wgUser, $wgOut;
+ global $wgMiserMode;
+ $out = $this->getOutput();
- $sk = $wgUser->getSkin();
$includesRestrictedPages = false;
+ $includesCachedPages = false;
foreach ( $groups as $group => $sortedPages ) {
$middle = ceil( count( $sortedPages )/2 );
$total = count( $sortedPages );
$count = 0;
- $wgOut->wrapWikiMsg( "<h4 class=\"mw-specialpagesgroup\" id=\"mw-specialpagesgroup-$group\">$1</h4>\n", "specialpages-group-$group" );
- $wgOut->addHTML(
+ $out->wrapWikiMsg( "<h2 class=\"mw-specialpagesgroup\" id=\"mw-specialpagesgroup-$group\">$1</h2>\n", "specialpages-group-$group" );
+ $out->addHTML(
Html::openElement( 'table', array( 'style' => 'width:100%;', 'class' => 'mw-specialpages-table' ) ) ."\n" .
Html::openElement( 'tr' ) . "\n" .
Html::openElement( 'td', array( 'style' => 'width:30%;vertical-align:top' ) ) . "\n" .
Html::openElement( 'ul' ) . "\n"
);
foreach( $sortedPages as $desc => $specialpage ) {
- list( $title, $restricted ) = $specialpage;
- $link = $sk->linkKnown( $title , htmlspecialchars( $desc ) );
+ list( $title, $restricted, $expensive) = $specialpage;
+
+ $pageClasses = array();
+ if ( $expensive && $wgMiserMode ){
+ $includesCachedPages = true;
+ $pageClasses[] = 'mw-specialpagecached';
+ }
if( $restricted ) {
$includesRestrictedPages = true;
- $wgOut->addHTML( Html::rawElement( 'li', array( 'class' => 'mw-specialpages-page mw-specialpagerestricted' ), Html::rawElement( 'strong', array(), $link ) ) . "\n" );
- } else {
- $wgOut->addHTML( Html::rawElement( 'li', array(), $link ) . "\n" );
+ $pageClasses[] = 'mw-specialpagerestricted';
}
+ $link = Linker::linkKnown( $title , htmlspecialchars( $desc ) );
+ $out->addHTML( Html::rawElement( 'li', array( 'class' => implode( ' ', $pageClasses ) ), $link ) . "\n" );
+
# Split up the larger groups
$count++;
if( $total > 3 && $count == $middle ) {
- $wgOut->addHTML(
+ $out->addHTML(
Html::closeElement( 'ul' ) . Html::closeElement( 'td' ) .
Html::element( 'td', array( 'style' => 'width:10%' ), '' ) .
Html::openElement( 'td', array( 'style' => 'width:30%' ) ) . Html::openElement( 'ul' ) . "\n"
);
}
}
- $wgOut->addHTML(
+ $out->addHTML(
Html::closeElement( 'ul' ) . Html::closeElement( 'td' ) .
Html::element( 'td', array( 'style' => 'width:30%' ), '' ) .
Html::closeElement( 'tr' ) . Html::closeElement( 'table' ) . "\n"
);
}
- if ( $includesRestrictedPages ) {
- $wgOut->wrapWikiMsg( "<div class=\"mw-specialpages-notes\">\n$1\n</div>", 'specialpages-note' );
+ if ( $includesRestrictedPages || $includesCachedPages ) {
+ $out->wrapWikiMsg( "<div class=\"mw-specialpages-notes\">\n$1\n</div>", 'specialpages-note' );
}
}
}
diff --git a/includes/specials/SpecialStatistics.php b/includes/specials/SpecialStatistics.php
index b0d0246e..5def4da5 100644
--- a/includes/specials/SpecialStatistics.php
+++ b/includes/specials/SpecialStatistics.php
@@ -28,20 +28,20 @@
* @ingroup SpecialPage
*/
class SpecialStatistics extends SpecialPage {
-
+
private $views, $edits, $good, $images, $total, $users,
- $activeUsers, $admins = 0;
-
+ $activeUsers = 0;
+
public function __construct() {
parent::__construct( 'Statistics' );
}
-
+
public function execute( $par ) {
- global $wgOut, $wgMemc;
- global $wgDisableCounters, $wgMiserMode;
-
+ global $wgMemc, $wgDisableCounters, $wgMiserMode;
+
$this->setHeaders();
-
+ $this->getOutput()->addModuleStyles( 'mediawiki.special' );
+
$this->views = SiteStats::views();
$this->edits = SiteStats::edits();
$this->good = SiteStats::articles();
@@ -49,15 +49,14 @@ class SpecialStatistics extends SpecialPage {
$this->total = SiteStats::pages();
$this->users = SiteStats::users();
$this->activeUsers = SiteStats::activeUsers();
- $this->admins = SiteStats::numberingroup('sysop');
$this->hook = '';
-
+
# Staticic - views
$viewsStats = '';
if( !$wgDisableCounters ) {
$viewsStats = $this->getViewsStats();
}
-
+
# Set active user count
if( !$wgMiserMode ) {
$key = wfMemcKey( 'sitestats', 'activeusers-updated' );
@@ -88,7 +87,7 @@ class SpecialStatistics extends SpecialPage {
if( !$wgDisableCounters && !$wgMiserMode ) {
$text .= $this->getMostViewedPages();
}
-
+
# Statistic - other
$extraStats = array();
if( wfRunHooks( 'SpecialStatsAddExtra', array( &$extraStats ) ) ) {
@@ -98,12 +97,12 @@ class SpecialStatistics extends SpecialPage {
$text .= Xml::closeElement( 'table' );
# Customizable footer
- $footer = wfMsgExt( 'statistics-footer', array('parseinline') );
- if( !wfEmptyMsg( 'statistics-footer', $footer ) && $footer != '' ) {
- $text .= "\n" . $footer;
+ $footer = wfMessage( 'statistics-footer' );
+ if ( !$footer->isBlank() ) {
+ $text .= "\n" . $footer->parse();
}
- $wgOut->addHTML( $text );
+ $this->getOutput()->addHTML( $text );
}
/**
@@ -117,80 +116,72 @@ class SpecialStatistics extends SpecialPage {
*/
private function formatRow( $text, $number, $trExtraParams = array(), $descMsg = '', $descMsgParam = '' ) {
if( $descMsg ) {
- $descriptionText = wfMsgExt( $descMsg, array( 'parseinline' ), $descMsgParam );
- if ( !wfEmptyMsg( $descMsg, $descriptionText ) ) {
- $descriptionText = " ($descriptionText)";
- $text .= "<br />" . Xml::element( 'small', array( 'class' => 'mw-statistic-desc'),
- $descriptionText );
+ $msg = wfMessage( $descMsg, $descMsgParam );
+ if ( $msg->exists() ) {
+ $descriptionText = $msg->parse();
+ $text .= "<br />" . Xml::element( 'small', array( 'class' => 'mw-statistic-desc'),
+ " ($descriptionText)" );
}
}
- return
- Html::rawElement( 'tr', $trExtraParams,
+ return Html::rawElement( 'tr', $trExtraParams,
Html::rawElement( 'td', array(), $text ) .
Html::rawElement( 'td', array( 'class' => 'mw-statistics-numbers' ), $number )
);
}
-
+
/**
* Each of these methods is pretty self-explanatory, get a particular
* row for the table of statistics
* @return string
*/
private function getPageStats() {
- global $wgLang;
return Xml::openElement( 'tr' ) .
Xml::tags( 'th', array( 'colspan' => '2' ), wfMsgExt( 'statistics-header-pages', array( 'parseinline' ) ) ) .
Xml::closeElement( 'tr' ) .
$this->formatRow( wfMsgExt( 'statistics-articles', array( 'parseinline' ) ),
- $wgLang->formatNum( $this->good ),
+ $this->getLang()->formatNum( $this->good ),
array( 'class' => 'mw-statistics-articles' ) ) .
$this->formatRow( wfMsgExt( 'statistics-pages', array( 'parseinline' ) ),
- $wgLang->formatNum( $this->total ),
+ $this->getLang()->formatNum( $this->total ),
array( 'class' => 'mw-statistics-pages' ),
'statistics-pages-desc' ) .
$this->formatRow( wfMsgExt( 'statistics-files', array( 'parseinline' ) ),
- $wgLang->formatNum( $this->images ),
+ $this->getLang()->formatNum( $this->images ),
array( 'class' => 'mw-statistics-files' ) );
}
private function getEditStats() {
- global $wgLang;
return Xml::openElement( 'tr' ) .
Xml::tags( 'th', array( 'colspan' => '2' ), wfMsgExt( 'statistics-header-edits', array( 'parseinline' ) ) ) .
Xml::closeElement( 'tr' ) .
$this->formatRow( wfMsgExt( 'statistics-edits', array( 'parseinline' ) ),
- $wgLang->formatNum( $this->edits ),
+ $this->getLang()->formatNum( $this->edits ),
array( 'class' => 'mw-statistics-edits' ) ) .
$this->formatRow( wfMsgExt( 'statistics-edits-average', array( 'parseinline' ) ),
- $wgLang->formatNum( sprintf( '%.2f', $this->total ? $this->edits / $this->total : 0 ) ),
+ $this->getLang()->formatNum( sprintf( '%.2f', $this->total ? $this->edits / $this->total : 0 ) ),
array( 'class' => 'mw-statistics-edits-average' ) );
}
private function getUserStats() {
- global $wgLang, $wgUser, $wgActiveUserDays;
- $sk = $wgUser->getSkin();
+ global $wgActiveUserDays;
return Xml::openElement( 'tr' ) .
Xml::tags( 'th', array( 'colspan' => '2' ), wfMsgExt( 'statistics-header-users', array( 'parseinline' ) ) ) .
Xml::closeElement( 'tr' ) .
$this->formatRow( wfMsgExt( 'statistics-users', array( 'parseinline' ) ),
- $wgLang->formatNum( $this->users ),
+ $this->getLang()->formatNum( $this->users ),
array( 'class' => 'mw-statistics-users' ) ) .
$this->formatRow( wfMsgExt( 'statistics-users-active', array( 'parseinline' ) ) . ' ' .
- $sk->link(
+ Linker::linkKnown(
SpecialPage::getTitleFor( 'Activeusers' ),
- wfMsgHtml( 'listgrouprights-members' ),
- array(),
- array(),
- 'known'
+ wfMsgHtml( 'listgrouprights-members' )
),
- $wgLang->formatNum( $this->activeUsers ),
+ $this->getLang()->formatNum( $this->activeUsers ),
array( 'class' => 'mw-statistics-users-active' ),
'statistics-users-active-desc',
- $wgLang->formatNum( $wgActiveUserDays ) );
+ $this->getLang()->formatNum( $wgActiveUserDays ) );
}
private function getGroupStats() {
- global $wgGroupPermissions, $wgImplicitGroups, $wgLang, $wgUser;
- $sk = $wgUser->getSkin();
+ global $wgGroupPermissions, $wgImplicitGroups;
$text = '';
foreach( $wgGroupPermissions as $group => $permissions ) {
# Skip generic * and implicit groups
@@ -198,29 +189,28 @@ class SpecialStatistics extends SpecialPage {
continue;
}
$groupname = htmlspecialchars( $group );
- $msg = wfMsg( 'group-' . $groupname );
- if ( wfEmptyMsg( 'group-' . $groupname, $msg ) || $msg == '' ) {
+ $msg = wfMessage( 'group-' . $groupname );
+ if ( $msg->isBlank() ) {
$groupnameLocalized = $groupname;
} else {
- $groupnameLocalized = $msg;
+ $groupnameLocalized = $msg->text();
}
- $msg = wfMsgForContent( 'grouppage-' . $groupname );
- if ( wfEmptyMsg( 'grouppage-' . $groupname, $msg ) || $msg == '' ) {
+ $msg = wfMessage( 'grouppage-' . $groupname )->inContentLanguage();
+ if ( $msg->isBlank() ) {
$grouppageLocalized = MWNamespace::getCanonicalName( NS_PROJECT ) . ':' . $groupname;
} else {
- $grouppageLocalized = $msg;
+ $grouppageLocalized = $msg->text();
}
$linkTarget = Title::newFromText( $grouppageLocalized );
- $grouppage = $sk->link(
+ $grouppage = Linker::link(
$linkTarget,
htmlspecialchars( $groupnameLocalized )
);
- $grouplink = $sk->link(
+ $grouplink = Linker::linkKnown(
SpecialPage::getTitleFor( 'Listusers' ),
wfMsgHtml( 'listgrouprights-members' ),
array(),
- array( 'group' => $group ),
- 'known'
+ array( 'group' => $group )
);
# Add a class when a usergroup contains no members to allow hiding these rows
$classZero = '';
@@ -229,31 +219,28 @@ class SpecialStatistics extends SpecialPage {
$classZero = ' statistics-group-zero';
}
$text .= $this->formatRow( $grouppage . ' ' . $grouplink,
- $wgLang->formatNum( $countUsers ),
+ $this->getLang()->formatNum( $countUsers ),
array( 'class' => 'statistics-group-' . Sanitizer::escapeClass( $group ) . $classZero ) );
}
return $text;
}
private function getViewsStats() {
- global $wgLang;
return Xml::openElement( 'tr' ) .
Xml::tags( 'th', array( 'colspan' => '2' ), wfMsgExt( 'statistics-header-views', array( 'parseinline' ) ) ) .
Xml::closeElement( 'tr' ) .
$this->formatRow( wfMsgExt( 'statistics-views-total', array( 'parseinline' ) ),
- $wgLang->formatNum( $this->views ),
+ $this->getLang()->formatNum( $this->views ),
array ( 'class' => 'mw-statistics-views-total' ), 'statistics-views-total-desc' ) .
$this->formatRow( wfMsgExt( 'statistics-views-peredit', array( 'parseinline' ) ),
- $wgLang->formatNum( sprintf( '%.2f', $this->edits ?
+ $this->getLang()->formatNum( sprintf( '%.2f', $this->edits ?
$this->views / $this->edits : 0 ) ),
array ( 'class' => 'mw-statistics-views-peredit' ) );
}
private function getMostViewedPages() {
- global $wgLang, $wgUser;
$text = '';
$dbr = wfGetDB( DB_SLAVE );
- $sk = $wgUser->getSkin();
$res = $dbr->select(
'page',
array(
@@ -278,9 +265,9 @@ class SpecialStatistics extends SpecialPage {
foreach ( $res as $row ) {
$title = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
if( $title instanceof Title ) {
- $text .= $this->formatRow( $sk->link( $title ),
- $wgLang->formatNum( $row->page_counter ) );
-
+ $text .= $this->formatRow( Linker::link( $title ),
+ $this->getLang()->formatNum( $row->page_counter ) );
+
}
}
$res->free();
@@ -289,22 +276,20 @@ class SpecialStatistics extends SpecialPage {
}
private function getOtherStats( $stats ) {
- global $wgLang;
-
if ( !count( $stats ) )
return '';
$return = Xml::openElement( 'tr' ) .
Xml::tags( 'th', array( 'colspan' => '2' ), wfMsgExt( 'statistics-header-hooks', array( 'parseinline' ) ) ) .
Xml::closeElement( 'tr' );
-
+
foreach( $stats as $name => $number ) {
$name = htmlspecialchars( $name );
$number = htmlspecialchars( $number );
-
- $return .= $this->formatRow( $name, $wgLang->formatNum( $number ), array( 'class' => 'mw-statistics-hook' ) );
+
+ $return .= $this->formatRow( $name, $this->getLang()->formatNum( $number ), array( 'class' => 'mw-statistics-hook' ) );
}
-
+
return $return;
}
}
diff --git a/includes/specials/SpecialTags.php b/includes/specials/SpecialTags.php
index c2aecf47..66a89e94 100644
--- a/includes/specials/SpecialTags.php
+++ b/includes/specials/SpecialTags.php
@@ -48,7 +48,8 @@ class SpecialTags extends SpecialPage {
Xml::tags( 'th', null, wfMsgExt( 'tags-hitcount-header', 'parseinline' ) )
);
$dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->select( 'change_tag', array( 'ct_tag', 'count(*) as hitcount' ), array(), __METHOD__, array( 'GROUP BY' => 'ct_tag', 'ORDER BY' => 'hitcount DESC' ) );
+ $res = $dbr->select( 'change_tag', array( 'ct_tag', 'count(*) AS hitcount' ),
+ array(), __METHOD__, array( 'GROUP BY' => 'ct_tag', 'ORDER BY' => 'hitcount DESC' ) );
foreach ( $res as $row ) {
$html .= $this->doTagRow( $row->ct_tag, $row->hitcount );
@@ -62,10 +63,9 @@ class SpecialTags extends SpecialPage {
}
function doTagRow( $tag, $hitcount ) {
- static $sk=null, $doneTags=array();
- if (!$sk) {
- global $wgUser;
- $sk = $wgUser->getSkin();
+ static $sk = null, $doneTags = array();
+ if ( !$sk ) {
+ $sk = $this->getSkin();
}
if ( in_array( $tag, $doneTags ) ) {
@@ -73,7 +73,7 @@ class SpecialTags extends SpecialPage {
}
global $wgLang;
-
+
$newRow = '';
$newRow .= Xml::tags( 'td', null, Xml::element( 'tt', null, $tag ) );
@@ -81,8 +81,8 @@ class SpecialTags extends SpecialPage {
$disp .= ' (' . $sk->link( Title::makeTitle( NS_MEDIAWIKI, "Tag-$tag" ), wfMsgHtml( 'tags-edit' ) ) . ')';
$newRow .= Xml::tags( 'td', null, $disp );
- $desc = wfMsgExt( "tag-$tag-description", 'parseinline' );
- $desc = wfEmptyMsg( "tag-$tag-description", $desc ) ? '' : $desc;
+ $msg = wfMessage( "tag-$tag-description" );
+ $desc = !$msg->exists() ? '' : $msg->parse();
$desc .= ' (' . $sk->link( Title::makeTitle( NS_MEDIAWIKI, "Tag-$tag-description" ), wfMsgHtml( 'tags-edit' ) ) . ')';
$newRow .= Xml::tags( 'td', null, $desc );
diff --git a/includes/specials/SpecialUnblock.php b/includes/specials/SpecialUnblock.php
new file mode 100644
index 00000000..521c1775
--- /dev/null
+++ b/includes/specials/SpecialUnblock.php
@@ -0,0 +1,209 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup SpecialPage
+ */
+
+/**
+ * A special page for unblocking users
+ *
+ * @ingroup SpecialPage
+ */
+class SpecialUnblock extends SpecialPage {
+
+ protected $target;
+ protected $type;
+ protected $block;
+
+ public function __construct(){
+ parent::__construct( 'Unblock', 'block' );
+ }
+
+ public function execute( $par ){
+ global $wgUser, $wgOut, $wgRequest;
+
+ # Check permissions
+ if( !$this->userCanExecute( $wgUser ) ) {
+ $this->displayRestrictionError();
+ return;
+ }
+
+ # Check for database lock
+ if( wfReadOnly() ) {
+ throw new ReadOnlyError;
+ }
+
+ list( $this->target, $this->type ) = SpecialBlock::getTargetAndType( $par, $wgRequest );
+ $this->block = Block::newFromTarget( $this->target );
+
+ # bug 15810: blocked admins should have limited access here. This won't allow sysops
+ # to remove autoblocks on themselves, but they should have ipblock-exempt anyway
+ $status = SpecialBlock::checkUnblockSelf( $this->target );
+ if ( $status !== true ) {
+ throw new ErrorPageError( 'badaccess', $status );
+ }
+
+ $wgOut->setPageTitle( wfMsg( 'unblockip' ) );
+ $wgOut->addModules( 'mediawiki.special' );
+
+ $form = new HTMLForm( $this->getFields(), $this->getContext() );
+ $form->setWrapperLegend( wfMsg( 'unblockip' ) );
+ $form->setSubmitCallback( array( __CLASS__, 'processUnblock' ) );
+ $form->setSubmitText( wfMsg( 'ipusubmit' ) );
+ $form->addPreText( wfMsgExt( 'unblockiptext', 'parse' ) );
+
+ if( $form->show() ){
+ switch( $this->type ){
+ case Block::TYPE_USER:
+ case Block::TYPE_IP:
+ $wgOut->addWikiMsg( 'unblocked', $this->target );
+ break;
+ case Block::TYPE_RANGE:
+ $wgOut->addWikiMsg( 'unblocked-range', $this->target );
+ break;
+ case Block::TYPE_ID:
+ case Block::TYPE_AUTO:
+ $wgOut->addWikiMsg( 'unblocked-id', $this->target );
+ break;
+ }
+ }
+ }
+
+ protected function getFields(){
+ $fields = array(
+ 'Target' => array(
+ 'type' => 'text',
+ 'label-message' => 'ipadressorusername',
+ 'tabindex' => '1',
+ 'size' => '45',
+ 'required' => true,
+ ),
+ 'Name' => array(
+ 'type' => 'info',
+ 'label-message' => 'ipadressorusername',
+ ),
+ 'Reason' => array(
+ 'type' => 'text',
+ 'label-message' => 'ipbreason',
+ )
+ );
+
+ if( $this->block instanceof Block ){
+ list( $target, $type ) = $this->block->getTargetAndType();
+
+ # Autoblocks are logged as "autoblock #123 because the IP was recently used by
+ # User:Foo, and we've just got any block, auto or not, that applies to a target
+ # the user has specified. Someone could be fishing to connect IPs to autoblocks,
+ # so don't show any distinction between unblocked IPs and autoblocked IPs
+ if( $type == Block::TYPE_AUTO && $this->type == Block::TYPE_IP ){
+ $fields['Target']['default'] = $this->target;
+ unset( $fields['Name'] );
+
+ } else {
+ $fields['Target']['default'] = $target;
+ $fields['Target']['type'] = 'hidden';
+ switch( $type ){
+ case Block::TYPE_USER:
+ case Block::TYPE_IP:
+ $skin = $this->getSkin();
+ $fields['Name']['default'] = $skin->link(
+ $target->getUserPage(),
+ $target->getName()
+ );
+ $fields['Name']['raw'] = true;
+ break;
+
+ case Block::TYPE_RANGE:
+ $fields['Name']['default'] = $target;
+ break;
+
+ case Block::TYPE_AUTO:
+ $fields['Name']['default'] = $this->block->getRedactedName();
+ $fields['Name']['raw'] = true;
+ # Don't expose the real target of the autoblock
+ $fields['Target']['default'] = "#{$this->target}";
+ break;
+ }
+ }
+
+ } else {
+ $fields['Target']['default'] = $this->target;
+ unset( $fields['Name'] );
+ }
+ return $fields;
+ }
+
+ /**
+ * Process the form
+ * @return Array( Array(message key, parameters) ) on failure, True on success
+ */
+ public static function processUnblock( array $data ){
+ global $wgUser;
+
+ $target = $data['Target'];
+ $block = Block::newFromTarget( $data['Target'] );
+
+ if( !$block instanceof Block ){
+ return array( array( 'ipb_cant_unblock', $target ) );
+ }
+
+ # If the specified IP is a single address, and the block is a range block, don't
+ # unblock the whole range.
+ list( $target, $type ) = SpecialBlock::getTargetAndType( $target );
+ if( $block->getType() == Block::TYPE_RANGE && $type == Block::TYPE_IP ) {
+ $range = $block->getTarget();
+ return array( array( 'ipb_blocked_as_range', $target, $range ) );
+ }
+
+ # If the name was hidden and the blocking user cannot hide
+ # names, then don't allow any block removals...
+ if( !$wgUser->isAllowed( 'hideuser' ) && $block->mHideName ) {
+ return array( 'unblock-hideuser' );
+ }
+
+ # Delete block
+ if ( !$block->delete() ) {
+ return array( 'ipb_cant_unblock', htmlspecialchars( $block->getTarget() ) );
+ }
+
+ # Unset _deleted fields as needed
+ if( $block->mHideName ) {
+ # Something is deeply FUBAR if this is not a User object, but who knows?
+ $id = $block->getTarget() instanceof User
+ ? $block->getTarget()->getID()
+ : User::idFromName( $block->getTarget() );
+
+ RevisionDeleteUser::unsuppressUserName( $block->getTarget(), $id );
+ }
+
+ # Redact the name (IP address) for autoblocks
+ if ( $block->getType() == Block::TYPE_AUTO ) {
+ $page = Title::makeTitle( NS_USER, '#' . $block->getId() );
+ } else {
+ $page = $block->getTarget() instanceof User
+ ? $block->getTarget()->getUserpage()
+ : Title::makeTitle( NS_USER, $block->getTarget() );
+ }
+
+ # Make log entry
+ $log = new LogPage( 'block' );
+ $log->addEntry( 'unblock', $page, $data['Reason'] );
+
+ return true;
+ }
+}
diff --git a/includes/specials/SpecialUncategorizedcategories.php b/includes/specials/SpecialUncategorizedcategories.php
index 9574af70..70d98df9 100644
--- a/includes/specials/SpecialUncategorizedcategories.php
+++ b/includes/specials/SpecialUncategorizedcategories.php
@@ -27,22 +27,8 @@
* @ingroup SpecialPage
*/
class UncategorizedCategoriesPage extends UncategorizedPagesPage {
- function __construct() {
+ function __construct( $name = 'Uncategorizedcategories' ) {
+ parent::__construct( $name );
$this->requestedNamespace = NS_CATEGORY;
}
-
- function getName() {
- return "Uncategorizedcategories";
- }
-}
-
-/**
- * constructor
- */
-function wfSpecialUncategorizedcategories() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $lpp = new UncategorizedCategoriesPage();
-
- return $lpp->doQuery( $offset, $limit );
}
diff --git a/includes/specials/SpecialUncategorizedimages.php b/includes/specials/SpecialUncategorizedimages.php
index c4254039..3efed747 100644
--- a/includes/specials/SpecialUncategorizedimages.php
+++ b/includes/specials/SpecialUncategorizedimages.php
@@ -27,10 +27,11 @@
*
* @ingroup SpecialPage
*/
+// @todo FIXME: Use an instance of UncategorizedPagesPage or something
class UncategorizedImagesPage extends ImageQueryPage {
- function getName() {
- return 'Uncategorizedimages';
+ function __construct( $name = 'Uncategorizedimages' ) {
+ parent::__construct( $name );
}
function sortDescending() {
@@ -45,21 +46,18 @@ class UncategorizedImagesPage extends ImageQueryPage {
return false;
}
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $page, $categorylinks ) = $dbr->tableNamesN( 'page', 'categorylinks' );
- $ns = NS_FILE;
-
- return "SELECT 'Uncategorizedimages' AS type, page_namespace AS namespace,
- page_title AS title, page_title AS value
- FROM {$page} LEFT JOIN {$categorylinks} ON page_id = cl_from
- WHERE cl_from IS NULL AND page_namespace = {$ns} AND page_is_redirect = 0";
+ function getQueryInfo() {
+ return array (
+ 'tables' => array( 'page', 'categorylinks' ),
+ 'fields' => array( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'page_title AS value' ),
+ 'conds' => array( 'cl_from IS NULL',
+ 'page_namespace' => NS_FILE,
+ 'page_is_redirect' => 0 ),
+ 'join_conds' => array( 'categorylinks' => array(
+ 'LEFT JOIN', 'cl_from=page_id' ) )
+ );
}
}
-
-function wfSpecialUncategorizedimages() {
- $uip = new UncategorizedImagesPage();
- list( $limit, $offset ) = wfCheckLimits();
- return $uip->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialUncategorizedpages.php b/includes/specials/SpecialUncategorizedpages.php
index c7fef5d2..08a69448 100644
--- a/includes/specials/SpecialUncategorizedpages.php
+++ b/includes/specials/SpecialUncategorizedpages.php
@@ -26,11 +26,12 @@
*
* @ingroup SpecialPage
*/
+// @todo FIXME: Make $requestedNamespace selectable, unify all subclasses into one
class UncategorizedPagesPage extends PageQueryPage {
- var $requestedNamespace = NS_MAIN;
+ protected $requestedNamespace = false;
- function getName() {
- return "Uncategorizedpages";
+ function __construct( $name = 'Uncategorizedpages' ) {
+ parent::__construct( $name );
}
function sortDescending() {
@@ -42,32 +43,27 @@ class UncategorizedPagesPage extends PageQueryPage {
}
function isSyndicated() { return false; }
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $page, $categorylinks ) = $dbr->tableNamesN( 'page', 'categorylinks' );
- $name = $dbr->addQuotes( $this->getName() );
-
- return
- "
- SELECT
- $name as type,
- page_namespace AS namespace,
- page_title AS title,
- page_title AS value
- FROM $page
- LEFT JOIN $categorylinks ON page_id=cl_from
- WHERE cl_from IS NULL AND page_namespace={$this->requestedNamespace} AND page_is_redirect=0
- ";
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'page', 'categorylinks' ),
+ 'fields' => array ( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'page_title AS value' ),
+ // default for page_namespace is all content namespaces (if requestedNamespace is false)
+ // otherwise, page_namespace is requestedNamespace
+ 'conds' => array ( 'cl_from IS NULL',
+ 'page_namespace' => ( $this->requestedNamespace!==false ? $this->requestedNamespace : MWNamespace::getContentNamespaces() ),
+ 'page_is_redirect' => 0 ),
+ 'join_conds' => array ( 'categorylinks' => array (
+ 'LEFT JOIN', 'cl_from = page_id' ) )
+ );
}
-}
-/**
- * constructor
- */
-function wfSpecialUncategorizedpages() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $lpp = new UncategorizedPagesPage();
-
- return $lpp->doQuery( $offset, $limit );
+ function getOrderFields() {
+ // For some crazy reason ordering by a constant
+ // causes a filesort
+ if( $this->requestedNamespace === false && count( MWNamespace::getContentNamespaces() ) > 1 )
+ return array( 'page_namespace', 'page_title' );
+ return array( 'page_title' );
+ }
}
diff --git a/includes/specials/SpecialUncategorizedtemplates.php b/includes/specials/SpecialUncategorizedtemplates.php
index aa4e979d..af038fa8 100644
--- a/includes/specials/SpecialUncategorizedtemplates.php
+++ b/includes/specials/SpecialUncategorizedtemplates.php
@@ -29,20 +29,8 @@
* @ingroup SpecialPage
*/
class UncategorizedTemplatesPage extends UncategorizedPagesPage {
-
- var $requestedNamespace = NS_TEMPLATE;
-
- public function getName() {
- return 'Uncategorizedtemplates';
+ public function __construct( $name = 'Uncategorizedtemplates' ) {
+ parent::__construct( $name );
+ $this->requestedNamespace = NS_TEMPLATE;
}
-
-}
-
-/**
- * Main execution point
- */
-function wfSpecialUncategorizedtemplates() {
- list( $limit, $offset ) = wfCheckLimits();
- $utp = new UncategorizedTemplatesPage();
- $utp->doQuery( $offset, $limit );
}
diff --git a/includes/specials/SpecialUndelete.php b/includes/specials/SpecialUndelete.php
index 1cf61d26..d4636e74 100644
--- a/includes/specials/SpecialUndelete.php
+++ b/includes/specials/SpecialUndelete.php
@@ -27,6 +27,10 @@
* @ingroup SpecialPage
*/
class PageArchive {
+
+ /**
+ * @var Title
+ */
protected $title;
var $fileStatus;
@@ -76,6 +80,11 @@ class PageArchive {
return self::listPages( $dbr, $conds );
}
+ /**
+ * @param $dbr DatabaseBase
+ * @param $condition
+ * @return bool|ResultWrapper
+ */
protected static function listPages( $dbr, $condition ) {
return $dbr->resultObject(
$dbr->select(
@@ -105,9 +114,12 @@ class PageArchive {
function listRevisions() {
$dbr = wfGetDB( DB_SLAVE );
$res = $dbr->select( 'archive',
- array( 'ar_minor_edit', 'ar_timestamp', 'ar_user', 'ar_user_text', 'ar_comment', 'ar_len', 'ar_deleted' ),
+ array(
+ 'ar_minor_edit', 'ar_timestamp', 'ar_user', 'ar_user_text',
+ 'ar_comment', 'ar_len', 'ar_deleted', 'ar_rev_id'
+ ),
array( 'ar_namespace' => $this->title->getNamespace(),
- 'ar_title' => $this->title->getDBkey() ),
+ 'ar_title' => $this->title->getDBkey() ),
'PageArchive::listRevisions',
array( 'ORDER BY' => 'ar_timestamp DESC' ) );
$ret = $dbr->resultObject( $res );
@@ -155,19 +167,6 @@ class PageArchive {
}
/**
- * Fetch (and decompress if necessary) the stored text for the deleted
- * revision of the page with the given timestamp.
- *
- * @param $timestamp String
- * @return String
- * @deprecated Use getRevision() for more flexible information
- */
- function getRevisionText( $timestamp ) {
- $rev = $this->getRevision( $timestamp );
- return $rev ? $rev->getText() : null;
- }
-
- /**
* Return a Revision object containing data for the deleted revision.
* Note that the result *may* or *may not* have a null page ID.
*
@@ -190,8 +189,8 @@ class PageArchive {
'ar_deleted',
'ar_len' ),
array( 'ar_namespace' => $this->title->getNamespace(),
- 'ar_title' => $this->title->getDBkey(),
- 'ar_timestamp' => $dbr->timestamp( $timestamp ) ),
+ 'ar_title' => $this->title->getDBkey(),
+ 'ar_timestamp' => $dbr->timestamp( $timestamp ) ),
__METHOD__ );
if( $row ) {
return Revision::newFromArchiveRow( $row, array( 'page' => $this->title->getArticleId() ) );
@@ -217,8 +216,8 @@ class PageArchive {
$row = $dbr->selectRow( 'archive',
'ar_timestamp',
array( 'ar_namespace' => $this->title->getNamespace(),
- 'ar_title' => $this->title->getDBkey(),
- 'ar_timestamp < ' .
+ 'ar_title' => $this->title->getDBkey(),
+ 'ar_timestamp < ' .
$dbr->addQuotes( $dbr->timestamp( $timestamp ) ) ),
__METHOD__,
array(
@@ -263,7 +262,7 @@ class PageArchive {
if( is_null( $row->ar_text_id ) ) {
// An old row from MediaWiki 1.4 or previous.
// Text is embedded in this row in classic compression format.
- return Revision::getRevisionText( $row, "ar_" );
+ return Revision::getRevisionText( $row, 'ar_' );
} else {
// New-style: keyed to the text storage backend.
$dbr = wfGetDB( DB_SLAVE );
@@ -275,7 +274,6 @@ class PageArchive {
}
}
-
/**
* Fetch (and decompress if necessary) the stored text of the most
* recently edited deleted revision of the page.
@@ -289,7 +287,7 @@ class PageArchive {
$row = $dbr->selectRow( 'archive',
array( 'ar_text', 'ar_flags', 'ar_text_id' ),
array( 'ar_namespace' => $this->title->getNamespace(),
- 'ar_title' => $this->title->getDBkey() ),
+ 'ar_title' => $this->title->getDBkey() ),
__METHOD__,
array( 'ORDER BY' => 'ar_timestamp DESC' ) );
if( $row ) {
@@ -308,8 +306,8 @@ class PageArchive {
$dbr = wfGetDB( DB_SLAVE );
$n = $dbr->selectField( 'archive', 'COUNT(ar_title)',
array( 'ar_namespace' => $this->title->getNamespace(),
- 'ar_title' => $this->title->getDBkey() ) );
- return ($n > 0);
+ 'ar_title' => $this->title->getDBkey() ) );
+ return ( $n > 0 );
}
/**
@@ -336,6 +334,9 @@ class PageArchive {
if( $restoreFiles && $this->title->getNamespace() == NS_FILE ) {
$img = wfLocalFile( $this->title );
$this->fileStatus = $img->restore( $fileVersions, $unsuppress );
+ if ( !$this->fileStatus->isOk() ) {
+ return false;
+ }
$filesRestored = $this->fileStatus->successCount;
} else {
$filesRestored = 0;
@@ -343,8 +344,9 @@ class PageArchive {
if( $restoreText ) {
$textRestored = $this->undeleteRevisions( $timestamps, $unsuppress, $comment );
- if($textRestored === false) // It must be one of UNDELETE_*
+ if( $textRestored === false ) { // It must be one of UNDELETE_*
return false;
+ }
} else {
$textRestored = 0;
}
@@ -368,11 +370,12 @@ class PageArchive {
return false;
}
- if( trim( $comment ) != '' )
+ if( trim( $comment ) != '' ) {
$reason .= wfMsgForContent( 'colon-separator' ) . $comment;
+ }
$log->addEntry( 'restore', $this->title, $reason );
- return array($textRestored, $filesRestored, $reason);
+ return array( $textRestored, $filesRestored, $reason );
}
/**
@@ -387,19 +390,24 @@ class PageArchive {
* @return Mixed: number of revisions restored or false on failure
*/
private function undeleteRevisions( $timestamps, $unsuppress = false, $comment = '' ) {
- if ( wfReadOnly() )
+ if ( wfReadOnly() ) {
return false;
+ }
$restoreAll = empty( $timestamps );
$dbw = wfGetDB( DB_MASTER );
# Does this page already exist? We'll have to update it...
$article = new Article( $this->title );
+ # Load latest data for the current page (bug 31179)
+ $article->loadPageData( 'fromdbmaster' );
+ $oldcountable = $article->isCountable();
+
$options = 'FOR UPDATE'; // lock page
$page = $dbw->selectRow( 'page',
array( 'page_id', 'page_latest' ),
array( 'page_namespace' => $this->title->getNamespace(),
- 'page_title' => $this->title->getDBkey() ),
+ 'page_title' => $this->title->getDBkey() ),
__METHOD__,
$options
);
@@ -463,7 +471,7 @@ class PageArchive {
$ret = $dbw->resultObject( $result );
$rev_count = $dbw->numRows( $result );
if( !$rev_count ) {
- wfDebug( __METHOD__.": no revisions to restore\n" );
+ wfDebug( __METHOD__ . ": no revisions to restore\n" );
return false; // ???
}
@@ -473,7 +481,7 @@ class PageArchive {
if( $makepage ) {
// Check the state of the newest to-be version...
- if( !$unsuppress && ($row->ar_deleted & Revision::DELETED_TEXT) ) {
+ if( !$unsuppress && ( $row->ar_deleted & Revision::DELETED_TEXT ) ) {
return false; // we can't leave the current revision like this!
}
// Safe to insert now...
@@ -483,7 +491,7 @@ class PageArchive {
// Check if a deleted revision will become the current revision...
if( $row->ar_timestamp > $previousTimestamp ) {
// Check the state of the newest to-be version...
- if( !$unsuppress && ($row->ar_deleted & Revision::DELETED_TEXT) ) {
+ if( !$unsuppress && ( $row->ar_deleted & Revision::DELETED_TEXT ) ) {
return false; // we can't leave the current revision like this!
}
}
@@ -495,8 +503,11 @@ class PageArchive {
foreach ( $ret as $row ) {
// Check for key dupes due to shitty archive integrity.
if( $row->ar_rev_id ) {
- $exists = $dbw->selectField( 'revision', '1', array('rev_id' => $row->ar_rev_id), __METHOD__ );
- if( $exists ) continue; // don't throw DB errors
+ $exists = $dbw->selectField( 'revision', '1',
+ array( 'rev_id' => $row->ar_rev_id ), __METHOD__ );
+ if( $exists ) {
+ continue; // don't throw DB errors
+ }
}
// Insert one revision at a time...maintaining deletion status
// unless we are specifically removing all restrictions...
@@ -520,38 +531,33 @@ class PageArchive {
__METHOD__ );
// Was anything restored at all?
- if( $restored == 0 )
+ if ( $restored == 0 ) {
return 0;
+ }
- if( $revision ) {
- // Attach the latest revision to the page...
- $wasnew = $article->updateIfNewerOn( $dbw, $revision, $previousRevId );
- if( $newid || $wasnew ) {
- // Update site stats, link tables, etc
- $article->createUpdates( $revision );
- }
+ $created = (bool)$newid;
- if( $newid ) {
- wfRunHooks( 'ArticleUndelete', array( &$this->title, true, $comment ) );
- Article::onArticleCreate( $this->title );
- } else {
- wfRunHooks( 'ArticleUndelete', array( &$this->title, false, $comment ) );
- Article::onArticleEdit( $this->title );
- }
+ // Attach the latest revision to the page...
+ $wasnew = $article->updateIfNewerOn( $dbw, $revision, $previousRevId );
+ if ( $created || $wasnew ) {
+ // Update site stats, link tables, etc
+ $user = User::newFromName( $revision->getRawUserText(), false );
+ $article->doEditUpdates( $revision, $user, array( 'created' => $created, 'oldcountable' => $oldcountable ) );
+ }
- if( $this->title->getNamespace() == NS_FILE ) {
- $update = new HTMLCacheUpdate( $this->title, 'imagelinks' );
- $update->doUpdate();
- }
- } else {
- // Revision couldn't be created. This is very weird
- wfDebug( "Undelete: unknown error...\n" );
- return false;
+ wfRunHooks( 'ArticleUndelete', array( &$this->title, $created, $comment ) );
+
+ if( $this->title->getNamespace() == NS_FILE ) {
+ $update = new HTMLCacheUpdate( $this->title, 'imagelinks' );
+ $update->doUpdate();
}
return $restored;
}
+ /**
+ * @return Status
+ */
function getFileStatus() { return $this->fileStatus; }
}
@@ -561,47 +567,47 @@ class PageArchive {
*
* @ingroup SpecialPage
*/
-class UndeleteForm extends SpecialPage {
- var $mAction, $mTarget, $mTimestamp, $mRestore, $mInvert, $mTargetObj;
- var $mTargetTimestamp, $mAllowed, $mCanView, $mComment, $mToken, $mRequest;
+class SpecialUndelete extends SpecialPage {
+ var $mAction, $mTarget, $mTimestamp, $mRestore, $mInvert, $mFilename;
+ var $mTargetTimestamp, $mAllowed, $mCanView, $mComment, $mToken;
- function __construct( $request = null ) {
- parent::__construct( 'Undelete', 'deletedhistory' );
+ /**
+ * @var Title
+ */
+ var $mTargetObj;
- if ( $request === null ) {
- global $wgRequest;
- $this->mRequest = $wgRequest;
- } else {
- $this->mRequest = $request;
- }
+ function __construct() {
+ parent::__construct( 'Undelete', 'deletedhistory' );
}
function loadRequest() {
- global $wgUser;
- $this->mAction = $this->mRequest->getVal( 'action' );
- $this->mTarget = $this->mRequest->getVal( 'target' );
- $this->mSearchPrefix = $this->mRequest->getText( 'prefix' );
- $time = $this->mRequest->getVal( 'timestamp' );
+ $request = $this->getRequest();
+ $user = $this->getUser();
+
+ $this->mAction = $request->getVal( 'action' );
+ $this->mTarget = $request->getVal( 'target' );
+ $this->mSearchPrefix = $request->getText( 'prefix' );
+ $time = $request->getVal( 'timestamp' );
$this->mTimestamp = $time ? wfTimestamp( TS_MW, $time ) : '';
- $this->mFile = $this->mRequest->getVal( 'file' );
-
- $posted = $this->mRequest->wasPosted() &&
- $wgUser->matchEditToken( $this->mRequest->getVal( 'wpEditToken' ) );
- $this->mRestore = $this->mRequest->getCheck( 'restore' ) && $posted;
- $this->mInvert = $this->mRequest->getCheck( 'invert' ) && $posted;
- $this->mPreview = $this->mRequest->getCheck( 'preview' ) && $posted;
- $this->mDiff = $this->mRequest->getCheck( 'diff' );
- $this->mComment = $this->mRequest->getText( 'wpComment' );
- $this->mUnsuppress = $this->mRequest->getVal( 'wpUnsuppress' ) && $wgUser->isAllowed( 'suppressrevision' );
- $this->mToken = $this->mRequest->getVal( 'token' );
-
- if ( $wgUser->isAllowed( 'undelete' ) && !$wgUser->isBlocked() ) {
+ $this->mFilename = $request->getVal( 'file' );
+
+ $posted = $request->wasPosted() &&
+ $user->matchEditToken( $request->getVal( 'wpEditToken' ) );
+ $this->mRestore = $request->getCheck( 'restore' ) && $posted;
+ $this->mInvert = $request->getCheck( 'invert' ) && $posted;
+ $this->mPreview = $request->getCheck( 'preview' ) && $posted;
+ $this->mDiff = $request->getCheck( 'diff' );
+ $this->mComment = $request->getText( 'wpComment' );
+ $this->mUnsuppress = $request->getVal( 'wpUnsuppress' ) && $user->isAllowed( 'suppressrevision' );
+ $this->mToken = $request->getVal( 'token' );
+
+ if ( $user->isAllowed( 'undelete' ) && !$user->isBlocked() ) {
$this->mAllowed = true; // user can restore
$this->mCanView = true; // user can view content
- } elseif ( $wgUser->isAllowed( 'deletedtext' ) ) {
+ } elseif ( $user->isAllowed( 'deletedtext' ) ) {
$this->mAllowed = false; // user cannot restore
$this->mCanView = true; // user can view content
- } else { // user can only view the list of revisions
+ } else { // user can only view the list of revisions
$this->mAllowed = false;
$this->mCanView = false;
$this->mTimestamp = '';
@@ -611,7 +617,7 @@ class UndeleteForm extends SpecialPage {
if( $this->mRestore || $this->mInvert ) {
$timestamps = array();
$this->mFileVersions = array();
- foreach( $_REQUEST as $key => $val ) {
+ foreach( $request->getValues() as $key => $val ) {
$matches = array();
if( preg_match( '/^ts(\d{14})$/', $key, $matches ) ) {
array_push( $timestamps, $matches[1] );
@@ -627,10 +633,8 @@ class UndeleteForm extends SpecialPage {
}
function execute( $par ) {
- global $wgOut, $wgUser;
-
$this->setHeaders();
- if ( !$this->userCanExecute( $wgUser ) ) {
+ if ( !$this->userCanExecute( $this->getUser() ) ) {
$this->displayRestrictionError();
return;
}
@@ -638,10 +642,12 @@ class UndeleteForm extends SpecialPage {
$this->loadRequest();
+ $out = $this->getOutput();
+
if ( $this->mAllowed ) {
- $wgOut->setPagetitle( wfMsg( "undeletepage" ) );
+ $out->setPageTitle( wfMsg( 'undeletepage' ) );
} else {
- $wgOut->setPagetitle( wfMsg( "viewdeletedpage" ) );
+ $out->setPageTitle( wfMsg( 'viewdeletedpage' ) );
}
if( $par != '' ) {
@@ -649,13 +655,14 @@ class UndeleteForm extends SpecialPage {
}
if ( $this->mTarget !== '' ) {
$this->mTargetObj = Title::newFromURL( $this->mTarget );
+ $this->getSkin()->setRelevantTitle( $this->mTargetObj );
} else {
$this->mTargetObj = null;
}
if( is_null( $this->mTargetObj ) ) {
- # Not all users can just browse every deleted page from the list
- if( $wgUser->isAllowed( 'browsearchive' ) ) {
+ # Not all users can just browse every deleted page from the list
+ if( $this->getUser()->isAllowed( 'browsearchive' ) ) {
$this->showSearchForm();
# List undeletable articles
@@ -664,52 +671,53 @@ class UndeleteForm extends SpecialPage {
$this->showList( $result );
}
} else {
- $wgOut->addWikiMsg( 'undelete-header' );
+ $out->addWikiMsg( 'undelete-header' );
}
return;
}
if( $this->mTimestamp !== '' ) {
return $this->showRevision( $this->mTimestamp );
}
- if( $this->mFile !== null ) {
- $file = new ArchivedFile( $this->mTargetObj, '', $this->mFile );
+ if( $this->mFilename !== null ) {
+ $file = new ArchivedFile( $this->mTargetObj, '', $this->mFilename );
// Check if user is allowed to see this file
if ( !$file->exists() ) {
- $wgOut->addWikiMsg( 'filedelete-nofile', $this->mFile );
+ $out->addWikiMsg( 'filedelete-nofile', $this->mFilename );
return;
- } else if( !$file->userCan( File::DELETED_FILE ) ) {
+ } elseif( !$file->userCan( File::DELETED_FILE ) ) {
if( $file->isDeleted( File::DELETED_RESTRICTED ) ) {
- $wgOut->permissionRequired( 'suppressrevision' );
+ $out->permissionRequired( 'suppressrevision' );
} else {
- $wgOut->permissionRequired( 'deletedtext' );
+ $out->permissionRequired( 'deletedtext' );
}
return false;
- } elseif ( !$wgUser->matchEditToken( $this->mToken, $this->mFile ) ) {
- $this->showFileConfirmationForm( $this->mFile );
+ } elseif ( !$this->getUser()->matchEditToken( $this->mToken, $this->mFilename ) ) {
+ $this->showFileConfirmationForm( $this->mFilename );
return false;
} else {
- return $this->showFile( $this->mFile );
+ return $this->showFile( $this->mFilename );
}
}
- if( $this->mRestore && $this->mAction == "submit" ) {
+ if( $this->mRestore && $this->mAction == 'submit' ) {
global $wgUploadMaintenance;
if( $wgUploadMaintenance && $this->mTargetObj && $this->mTargetObj->getNamespace() == NS_FILE ) {
- $wgOut->wrapWikiMsg( "<div class='error'>\n$1\n</div>\n", array( 'filedelete-maintenance' ) );
+ $out->wrapWikiMsg( "<div class='error'>\n$1\n</div>\n", array( 'filedelete-maintenance' ) );
return;
}
return $this->undelete();
}
- if( $this->mInvert && $this->mAction == "submit" ) {
- return $this->showHistory( );
+ if( $this->mInvert && $this->mAction == 'submit' ) {
+ return $this->showHistory();
}
return $this->showHistory();
}
function showSearchForm() {
- global $wgOut, $wgScript;
- $wgOut->addWikiMsg( 'undelete-header' );
+ global $wgScript;
+
+ $this->getOutput()->addWikiMsg( 'undelete-header' );
- $wgOut->addHTML(
+ $this->getOutput()->addHTML(
Xml::openElement( 'form', array(
'method' => 'get',
'action' => $wgScript ) ) .
@@ -725,23 +733,27 @@ class UndeleteForm extends SpecialPage {
);
}
- // Generic list of deleted pages
+ /**
+ * Generic list of deleted pages
+ *
+ * @param $result ResultWrapper
+ * @return bool
+ */
private function showList( $result ) {
- global $wgLang, $wgUser, $wgOut;
+ $out = $this->getOutput();
if( $result->numRows() == 0 ) {
- $wgOut->addWikiMsg( 'undelete-no-results' );
+ $out->addWikiMsg( 'undelete-no-results' );
return;
}
- $wgOut->addWikiMsg( 'undeletepagetext', $wgLang->formatNum( $result->numRows() ) );
+ $out->addWikiMsg( 'undeletepagetext', $this->getLang()->formatNum( $result->numRows() ) );
- $sk = $wgUser->getSkin();
$undelete = $this->getTitle();
- $wgOut->addHTML( "<ul>\n" );
+ $out->addHTML( "<ul>\n" );
foreach ( $result as $row ) {
$title = Title::makeTitleSafe( $row->ar_namespace, $row->ar_title );
- $link = $sk->linkKnown(
+ $link = Linker::linkKnown(
$undelete,
htmlspecialchars( $title->getPrefixedText() ),
array(),
@@ -749,111 +761,102 @@ class UndeleteForm extends SpecialPage {
);
$revs = wfMsgExt( 'undeleterevisions',
array( 'parseinline' ),
- $wgLang->formatNum( $row->count ) );
- $wgOut->addHTML( "<li>{$link} ({$revs})</li>\n" );
+ $this->getLang()->formatNum( $row->count ) );
+ $out->addHTML( "<li>{$link} ({$revs})</li>\n" );
}
$result->free();
- $wgOut->addHTML( "</ul>\n" );
+ $out->addHTML( "</ul>\n" );
return true;
}
private function showRevision( $timestamp ) {
- global $wgLang, $wgUser, $wgOut;
-
- $skin = $wgUser->getSkin();
+ $out = $this->getOutput();
- if(!preg_match("/[0-9]{14}/",$timestamp)) return 0;
+ if( !preg_match( '/[0-9]{14}/', $timestamp ) ) {
+ return 0;
+ }
$archive = new PageArchive( $this->mTargetObj );
+ wfRunHooks( 'UndeleteForm::showRevision', array( &$archive, $this->mTargetObj ) );
$rev = $archive->getRevision( $timestamp );
if( !$rev ) {
- $wgOut->addWikiMsg( 'undeleterevision-missing' );
+ $out->addWikiMsg( 'undeleterevision-missing' );
return;
}
- if( $rev->isDeleted(Revision::DELETED_TEXT) ) {
- if( !$rev->userCan(Revision::DELETED_TEXT) ) {
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-permission' );
+ if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
+ if( !$rev->userCan( Revision::DELETED_TEXT ) ) {
+ $out->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-permission' );
return;
} else {
- $wgOut->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-view' );
- $wgOut->addHTML( '<br />' );
+ $out->wrapWikiMsg( "<div class='mw-warning plainlinks'>\n$1\n</div>\n", 'rev-deleted-text-view' );
+ $out->addHTML( '<br />' );
// and we are allowed to see...
}
}
- $wgOut->setPageTitle( wfMsg( 'undeletepage' ) );
-
- $link = $skin->linkKnown(
- $this->getTitle( $this->mTargetObj->getPrefixedDBkey() ),
- htmlspecialchars( $this->mTargetObj->getPrefixedText() )
- );
+ $out->setPageTitle( wfMsg( 'undeletepage' ) );
if( $this->mDiff ) {
$previousRev = $archive->getPreviousRevision( $timestamp );
if( $previousRev ) {
$this->showDiff( $previousRev, $rev );
- if( $wgUser->getOption( 'diffonly' ) ) {
+ if( $this->getUser()->getOption( 'diffonly' ) ) {
return;
} else {
- $wgOut->addHTML( '<hr />' );
+ $out->addHTML( '<hr />' );
}
} else {
- $wgOut->addWikiMsg( 'undelete-nodiff' );
+ $out->addWikiMsg( 'undelete-nodiff' );
}
}
+ $link = Linker::linkKnown(
+ $this->getTitle( $this->mTargetObj->getPrefixedDBkey() ),
+ htmlspecialchars( $this->mTargetObj->getPrefixedText() )
+ );
+
// date and time are separate parameters to facilitate localisation.
// $time is kept for backward compat reasons.
- $time = htmlspecialchars( $wgLang->timeAndDate( $timestamp, true ) );
- $d = htmlspecialchars( $wgLang->date( $timestamp, true ) );
- $t = htmlspecialchars( $wgLang->time( $timestamp, true ) );
- $user = $skin->revUserTools( $rev );
+ $time = $this->getLang()->timeAndDate( $timestamp, true );
+ $d = $this->getLang()->date( $timestamp, true );
+ $t = $this->getLang()->time( $timestamp, true );
+ $user = Linker::revUserTools( $rev );
if( $this->mPreview ) {
$openDiv = '<div id="mw-undelete-revision" class="mw-warning">';
} else {
$openDiv = '<div id="mw-undelete-revision">';
}
+ $out->addHTML( $openDiv );
// Revision delete links
- $canHide = $wgUser->isAllowed( 'deleterevision' );
- if( $this->mDiff ) {
- $revdlink = ''; // diffs already have revision delete links
- } else if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) {
- if( !$rev->userCan(Revision::DELETED_RESTRICTED ) ) {
- $revdlink = $skin->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
- } else {
- $query = array(
- 'type' => 'archive',
- 'target' => $this->mTargetObj->getPrefixedDBkey(),
- 'ids' => $rev->getTimestamp()
- );
- $revdlink = $skin->revDeleteLink( $query,
- $rev->isDeleted( File::DELETED_RESTRICTED ), $canHide );
+ if ( !$this->mDiff ) {
+ $revdel = $this->revDeleteLink( $rev );
+ if ( $revdel ) {
+ $out->addHTML( $revdel );
}
- } else {
- $revdlink = '';
}
- $wgOut->addHTML( $openDiv . $revdlink . wfMsgWikiHtml( 'undelete-revision', $link, $time, $user, $d, $t ) . '</div>' );
+ $out->addHTML( wfMessage( 'undelete-revision' )->rawParams( $link )->params(
+ $time )->rawParams( $user )->params( $d, $t )->parse() . '</div>' );
wfRunHooks( 'UndeleteShowRevision', array( $this->mTargetObj, $rev ) );
if( $this->mPreview ) {
- //Hide [edit]s
- $popts = $wgOut->parserOptions();
+ // Hide [edit]s
+ $popts = $out->parserOptions();
$popts->setEditSection( false );
- $wgOut->parserOptions( $popts );
- $wgOut->addWikiTextTitleTidy( $rev->getText( Revision::FOR_THIS_USER ), $this->mTargetObj, true );
+ $out->parserOptions( $popts );
+ $out->addWikiTextTitleTidy( $rev->getText( Revision::FOR_THIS_USER ), $this->mTargetObj, true );
}
- $wgOut->addHTML(
+ $out->addHTML(
Xml::element( 'textarea', array(
'readonly' => 'readonly',
- 'cols' => intval( $wgUser->getOption( 'cols' ) ),
- 'rows' => intval( $wgUser->getOption( 'rows' ) ) ),
+ 'cols' => intval( $this->getUser()->getOption( 'cols' ) ),
+ 'rows' => intval( $this->getUser()->getOption( 'rows' ) ) ),
$rev->getText( Revision::FOR_THIS_USER ) . "\n" ) .
Xml::openElement( 'div' ) .
Xml::openElement( 'form', array(
@@ -870,7 +873,7 @@ class UndeleteForm extends SpecialPage {
Xml::element( 'input', array(
'type' => 'hidden',
'name' => 'wpEditToken',
- 'value' => $wgUser->editToken() ) ) .
+ 'value' => $this->getUser()->editToken() ) ) .
Xml::element( 'input', array(
'type' => 'submit',
'name' => 'preview',
@@ -884,6 +887,48 @@ class UndeleteForm extends SpecialPage {
}
/**
+ * Get a revision-deletion link, or disabled link, or nothing, depending
+ * on user permissions & the settings on the revision.
+ *
+ * Will use forward-compatible revision ID in the Special:RevDelete link
+ * if possible, otherwise the timestamp-based ID which may break after
+ * undeletion.
+ *
+ * @param Revision $rev
+ * @return string HTML fragment
+ */
+ function revDeleteLink( $rev ) {
+ $canHide = $this->getUser()->isAllowed( 'deleterevision' );
+ if( $canHide || ( $rev->getVisibility() && $this->getUser()->isAllowed( 'deletedhistory' ) ) ) {
+ if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
+ $revdlink = Linker::revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
+ } else {
+ if ( $rev->getId() ) {
+ // RevDelete links using revision ID are stable across
+ // page deletion and undeletion; use when possible.
+ $query = array(
+ 'type' => 'revision',
+ 'target' => $this->mTargetObj->getPrefixedDBkey(),
+ 'ids' => $rev->getId()
+ );
+ } else {
+ // Older deleted entries didn't save a revision ID.
+ // We have to refer to these by timestamp, ick!
+ $query = array(
+ 'type' => 'archive',
+ 'target' => $this->mTargetObj->getPrefixedDBkey(),
+ 'ids' => $rev->getTimestamp()
+ );
+ }
+ return Linker::revDeleteLink( $query,
+ $rev->isDeleted( File::DELETED_RESTRICTED ), $canHide );
+ }
+ } else {
+ return '';
+ }
+ }
+
+ /**
* Build a diff display between this and the previous either deleted
* or non-deleted edit.
*
@@ -892,11 +937,9 @@ class UndeleteForm extends SpecialPage {
* @return String: HTML
*/
function showDiff( $previousRev, $currentRev ) {
- global $wgOut;
-
$diffEngine = new DifferenceEngine( $previousRev->getTitle() );
$diffEngine->showDiffStyle();
- $wgOut->addHTML(
+ $this->getOutput()->addHTML(
"<div>" .
"<table border='0' width='98%' cellpadding='0' cellspacing='4' class='diff'>" .
"<col class='diff-marker' />" .
@@ -918,59 +961,47 @@ class UndeleteForm extends SpecialPage {
);
}
+ /**
+ * @param $rev Revision
+ * @param $prefix
+ * @return string
+ */
private function diffHeader( $rev, $prefix ) {
- global $wgUser, $wgLang;
- $sk = $wgUser->getSkin();
$isDeleted = !( $rev->getId() && $rev->getTitle() );
if( $isDeleted ) {
- /// @todo Fixme: $rev->getTitle() is null for deleted revs...?
+ /// @todo FIXME: $rev->getTitle() is null for deleted revs...?
$targetPage = $this->getTitle();
$targetQuery = array(
'target' => $this->mTargetObj->getPrefixedText(),
'timestamp' => wfTimestamp( TS_MW, $rev->getTimestamp() )
);
} else {
- /// @todo Fixme getId() may return non-zero for deleted revs...
+ /// @todo FIXME: getId() may return non-zero for deleted revs...
$targetPage = $rev->getTitle();
$targetQuery = array( 'oldid' => $rev->getId() );
}
// Add show/hide deletion links if available
- $canHide = $wgUser->isAllowed( 'deleterevision' );
- if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) {
- $del = ' ';
- if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
- $del .= $sk->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
- } else {
- $query = array(
- 'type' => 'archive',
- 'target' => $this->mTargetObj->getPrefixedDbkey(),
- 'ids' => $rev->getTimestamp()
- );
- $del .= $sk->revDeleteLink( $query,
- $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide );
- }
- } else {
- $del = '';
- }
+ $del = $this->revDeleteLink( $rev );
return
- '<div id="mw-diff-'.$prefix.'title1"><strong>' .
- $sk->link(
+ '<div id="mw-diff-' . $prefix . 'title1"><strong>' .
+ Linker::link(
$targetPage,
- wfMsgHtml(
+ wfMsgExt(
'revisionasof',
- htmlspecialchars( $wgLang->timeanddate( $rev->getTimestamp(), true ) ),
- htmlspecialchars( $wgLang->date( $rev->getTimestamp(), true ) ),
- htmlspecialchars( $wgLang->time( $rev->getTimestamp(), true ) )
+ array( 'escape' ),
+ $this->getLang()->timeanddate( $rev->getTimestamp(), true ),
+ $this->getLang()->date( $rev->getTimestamp(), true ),
+ $this->getLang()->time( $rev->getTimestamp(), true )
),
array(),
$targetQuery
) .
'</strong></div>' .
'<div id="mw-diff-'.$prefix.'title2">' .
- $sk->revUserTools( $rev ) . '<br />' .
+ Linker::revUserTools( $rev ) . '<br />' .
'</div>' .
'<div id="mw-diff-'.$prefix.'title3">' .
- $sk->revComment( $rev ) . $del . '<br />' .
+ Linker::revComment( $rev ) . $del . '<br />' .
'</div>';
}
@@ -978,19 +1009,18 @@ class UndeleteForm extends SpecialPage {
* Show a form confirming whether a tokenless user really wants to see a file
*/
private function showFileConfirmationForm( $key ) {
- global $wgOut, $wgUser, $wgLang;
- $file = new ArchivedFile( $this->mTargetObj, '', $this->mFile );
- $wgOut->addWikiMsg( 'undelete-show-file-confirm',
+ $file = new ArchivedFile( $this->mTargetObj, '', $this->mFilename );
+ $this->getOutput()->addWikiMsg( 'undelete-show-file-confirm',
$this->mTargetObj->getText(),
- $wgLang->date( $file->getTimestamp() ),
- $wgLang->time( $file->getTimestamp() ) );
- $wgOut->addHTML(
+ $this->getLang()->date( $file->getTimestamp() ),
+ $this->getLang()->time( $file->getTimestamp() ) );
+ $this->getOutput()->addHTML(
Xml::openElement( 'form', array(
'method' => 'POST',
- 'action' => $this->getTitle()->getLocalUrl(
+ 'action' => $this->getTitle()->getLocalURL(
'target=' . urlencode( $this->mTarget ) .
'&file=' . urlencode( $key ) .
- '&token=' . urlencode( $wgUser->editToken( $key ) ) )
+ '&token=' . urlencode( $this->getUser()->editToken( $key ) ) )
)
) .
Xml::submitButton( wfMsg( 'undelete-show-file-submit' ) ) .
@@ -1002,16 +1032,16 @@ class UndeleteForm extends SpecialPage {
* Show a deleted file version requested by the visitor.
*/
private function showFile( $key ) {
- global $wgOut, $wgRequest;
- $wgOut->disable();
+ $this->getOutput()->disable();
# We mustn't allow the output to be Squid cached, otherwise
# if an admin previews a deleted image, and it's cached, then
# a user without appropriate permissions can toddle off and
# nab the image, and Squid will serve it
- $wgRequest->response()->header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', 0 ) . ' GMT' );
- $wgRequest->response()->header( 'Cache-Control: no-cache, no-store, max-age=0, must-revalidate' );
- $wgRequest->response()->header( 'Pragma: no-cache' );
+ $response = $this->getRequest()->response();
+ $response->header( 'Expires: ' . gmdate( 'D, d M Y H:i:s', 0 ) . ' GMT' );
+ $response->header( 'Cache-Control: no-cache, no-store, max-age=0, must-revalidate' );
+ $response->header( 'Pragma: no-cache' );
global $IP;
require_once( "$IP/includes/StreamFile.php" );
@@ -1020,34 +1050,36 @@ class UndeleteForm extends SpecialPage {
wfStreamFile( $path );
}
- private function showHistory( ) {
- global $wgUser, $wgOut;
-
- $sk = $wgUser->getSkin();
+ private function showHistory() {
+ $out = $this->getOutput();
if( $this->mAllowed ) {
- $wgOut->setPagetitle( wfMsg( "undeletepage" ) );
+ $out->addModules( 'mediawiki.special.undelete' );
+ $out->setPageTitle( wfMsg( 'undeletepage' ) );
} else {
- $wgOut->setPagetitle( wfMsg( 'viewdeletedpage' ) );
+ $out->setPageTitle( wfMsg( 'viewdeletedpage' ) );
}
-
- $wgOut->wrapWikiMsg( "<div class='mw-undelete-pagetitle'>\n$1\n</div>\n", array ( 'undeletepagetitle', $this->mTargetObj->getPrefixedText() ) );
+ $out->wrapWikiMsg(
+ "<div class='mw-undelete-pagetitle'>\n$1\n</div>\n",
+ array( 'undeletepagetitle', $this->mTargetObj->getPrefixedText() )
+ );
$archive = new PageArchive( $this->mTargetObj );
+ wfRunHooks( 'UndeleteForm::showHistory', array( &$archive, $this->mTargetObj ) );
/*
$text = $archive->getLastRevisionText();
if( is_null( $text ) ) {
- $wgOut->addWikiMsg( "nohistory" );
+ $out->addWikiMsg( 'nohistory' );
return;
}
*/
- $wgOut->addHTML( '<div class="mw-undelete-history">' );
+ $out->addHTML( '<div class="mw-undelete-history">' );
if ( $this->mAllowed ) {
- $wgOut->addWikiMsg( "undeletehistory" );
- $wgOut->addWikiMsg( "undeleterevdel" );
+ $out->addWikiMsg( 'undeletehistory' );
+ $out->addWikiMsg( 'undeleterevdel' );
} else {
- $wgOut->addWikiMsg( "undeletehistorynoadmin" );
+ $out->addWikiMsg( 'undeletehistorynoadmin' );
}
- $wgOut->addHTML( '</div>' );
+ $out->addHTML( '</div>' );
# List all stored revisions
$revisions = $archive->listRevisions();
@@ -1080,39 +1112,39 @@ class UndeleteForm extends SpecialPage {
$action = $this->getTitle()->getLocalURL( array( 'action' => 'submit' ) );
# Start the form here
$top = Xml::openElement( 'form', array( 'method' => 'post', 'action' => $action, 'id' => 'undelete' ) );
- $wgOut->addHTML( $top );
+ $out->addHTML( $top );
}
# Show relevant lines from the deletion log:
- $wgOut->addHTML( Xml::element( 'h2', null, LogPage::logName( 'delete' ) ) . "\n" );
- LogEventsList::showLogExtract( $wgOut, 'delete', $this->mTargetObj->getPrefixedText() );
+ $out->addHTML( Xml::element( 'h2', null, LogPage::logName( 'delete' ) ) . "\n" );
+ LogEventsList::showLogExtract( $out, 'delete', $this->mTargetObj->getPrefixedText() );
# Show relevant lines from the suppression log:
- if( $wgUser->isAllowed( 'suppressionlog' ) ) {
- $wgOut->addHTML( Xml::element( 'h2', null, LogPage::logName( 'suppress' ) ) . "\n" );
- LogEventsList::showLogExtract( $wgOut, 'suppress', $this->mTargetObj->getPrefixedText() );
+ if( $this->getUser()->isAllowed( 'suppressionlog' ) ) {
+ $out->addHTML( Xml::element( 'h2', null, LogPage::logName( 'suppress' ) ) . "\n" );
+ LogEventsList::showLogExtract( $out, 'suppress', $this->mTargetObj->getPrefixedText() );
}
if( $this->mAllowed && ( $haveRevisions || $haveFiles ) ) {
# Format the user-visible controls (comment field, submission button)
# in a nice little table
- if( $wgUser->isAllowed( 'suppressrevision' ) ) {
+ if( $this->getUser()->isAllowed( 'suppressrevision' ) ) {
$unsuppressBox =
"<tr>
<td>&#160;</td>
<td class='mw-input'>" .
- Xml::checkLabel( wfMsg('revdelete-unsuppress'), 'wpUnsuppress',
+ Xml::checkLabel( wfMsg( 'revdelete-unsuppress' ), 'wpUnsuppress',
'mw-undelete-unsuppress', $this->mUnsuppress ).
"</td>
</tr>";
} else {
- $unsuppressBox = "";
+ $unsuppressBox = '';
}
$table =
Xml::fieldset( wfMsg( 'undelete-fieldset-title' ) ) .
Xml::openElement( 'table', array( 'id' => 'mw-undelete-table' ) ) .
"<tr>
<td colspan='2' class='mw-undelete-extrahelp'>" .
- wfMsgWikiHtml( 'undeleteextrahelp' ) .
+ wfMsgExt( 'undeleteextrahelp', 'parse' ) .
"</td>
</tr>
<tr>
@@ -1127,7 +1159,6 @@ class UndeleteForm extends SpecialPage {
<td>&#160;</td>
<td class='mw-submit'>" .
Xml::submitButton( wfMsg( 'undeletebtn' ), array( 'name' => 'restore', 'id' => 'mw-undelete-submit' ) ) . ' ' .
- Xml::element( 'input', array( 'type' => 'reset', 'value' => wfMsg( 'undeletereset' ), 'id' => 'mw-undelete-reset' ) ) . ' ' .
Xml::submitButton( wfMsg( 'undeleteinvert' ), array( 'name' => 'invert', 'id' => 'mw-undelete-invert' ) ) .
"</td>
</tr>" .
@@ -1135,51 +1166,49 @@ class UndeleteForm extends SpecialPage {
Xml::closeElement( 'table' ) .
Xml::closeElement( 'fieldset' );
- $wgOut->addHTML( $table );
+ $out->addHTML( $table );
}
- $wgOut->addHTML( Xml::element( 'h2', null, wfMsg( 'history' ) ) . "\n" );
+ $out->addHTML( Xml::element( 'h2', null, wfMsg( 'history' ) ) . "\n" );
if( $haveRevisions ) {
# The page's stored (deleted) history:
- $wgOut->addHTML("<ul>");
+ $out->addHTML( '<ul>' );
$remaining = $revisions->numRows();
$earliestLiveTime = $this->mTargetObj->getEarliestRevTime();
foreach ( $revisions as $row ) {
$remaining--;
- $wgOut->addHTML( $this->formatRevisionRow( $row, $earliestLiveTime, $remaining, $sk ) );
+ $out->addHTML( $this->formatRevisionRow( $row, $earliestLiveTime, $remaining ) );
}
$revisions->free();
- $wgOut->addHTML("</ul>");
+ $out->addHTML( '</ul>' );
} else {
- $wgOut->addWikiMsg( "nohistory" );
+ $out->addWikiMsg( 'nohistory' );
}
if( $haveFiles ) {
- $wgOut->addHTML( Xml::element( 'h2', null, wfMsg( 'filehist' ) ) . "\n" );
- $wgOut->addHTML( "<ul>" );
+ $out->addHTML( Xml::element( 'h2', null, wfMsg( 'filehist' ) ) . "\n" );
+ $out->addHTML( '<ul>' );
foreach ( $files as $row ) {
- $wgOut->addHTML( $this->formatFileRow( $row, $sk ) );
+ $out->addHTML( $this->formatFileRow( $row ) );
}
$files->free();
- $wgOut->addHTML( "</ul>" );
+ $out->addHTML( '</ul>' );
}
if ( $this->mAllowed ) {
# Slip in the hidden controls here
$misc = Html::hidden( 'target', $this->mTarget );
- $misc .= Html::hidden( 'wpEditToken', $wgUser->editToken() );
+ $misc .= Html::hidden( 'wpEditToken', $this->getUser()->editToken() );
$misc .= Xml::closeElement( 'form' );
- $wgOut->addHTML( $misc );
+ $out->addHTML( $misc );
}
return true;
}
- private function formatRevisionRow( $row, $earliestLiveTime, $remaining, $sk ) {
- global $wgUser, $wgLang;
-
+ private function formatRevisionRow( $row, $earliestLiveTime, $remaining ) {
$rev = Revision::newFromArchiveRow( $row,
array( 'page' => $this->mTargetObj->getArticleId() ) );
$stxt = '';
@@ -1188,7 +1217,7 @@ class UndeleteForm extends SpecialPage {
if( $this->mAllowed ) {
if( $this->mInvert ) {
if( in_array( $ts, $this->mTargetTimestamp ) ) {
- $checkBox = Xml::check( "ts$ts");
+ $checkBox = Xml::check( "ts$ts" );
} else {
$checkBox = Xml::check( "ts$ts", true );
}
@@ -1203,13 +1232,13 @@ class UndeleteForm extends SpecialPage {
$titleObj = $this->getTitle();
# Last link
if( !$rev->userCan( Revision::DELETED_TEXT ) ) {
- $pageLink = htmlspecialchars( $wgLang->timeanddate( $ts, true ) );
- $last = wfMsgHtml('diff');
- } else if( $remaining > 0 || ($earliestLiveTime && $ts > $earliestLiveTime) ) {
- $pageLink = $this->getPageLink( $rev, $titleObj, $ts, $sk );
- $last = $sk->linkKnown(
+ $pageLink = htmlspecialchars( $this->getLang()->timeanddate( $ts, true ) );
+ $last = wfMsgHtml( 'diff' );
+ } elseif( $remaining > 0 || ( $earliestLiveTime && $ts > $earliestLiveTime ) ) {
+ $pageLink = $this->getPageLink( $rev, $titleObj, $ts );
+ $last = Linker::linkKnown(
$titleObj,
- wfMsgHtml('diff'),
+ wfMsgHtml( 'diff' ),
array(),
array(
'target' => $this->mTargetObj->getPrefixedText(),
@@ -1218,77 +1247,61 @@ class UndeleteForm extends SpecialPage {
)
);
} else {
- $pageLink = $this->getPageLink( $rev, $titleObj, $ts, $sk );
- $last = wfMsgHtml('diff');
+ $pageLink = $this->getPageLink( $rev, $titleObj, $ts );
+ $last = wfMsgHtml( 'diff' );
}
} else {
- $pageLink = htmlspecialchars( $wgLang->timeanddate( $ts, true ) );
- $last = wfMsgHtml('diff');
+ $pageLink = htmlspecialchars( $this->getLang()->timeanddate( $ts, true ) );
+ $last = wfMsgHtml( 'diff' );
}
// User links
- $userLink = $sk->revUserTools( $rev );
+ $userLink = Linker::revUserTools( $rev );
// Revision text size
- if( !is_null($size = $row->ar_len) ) {
- $stxt = $sk->formatRevisionSize( $size );
+ $size = $row->ar_len;
+ if( !is_null( $size ) ) {
+ $stxt = Linker::formatRevisionSize( $size );
}
// Edit summary
- $comment = $sk->revComment( $rev );
+ $comment = Linker::revComment( $rev );
// Revision delete links
- $canHide = $wgUser->isAllowed( 'deleterevision' );
- if( $canHide || ($rev->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) {
- if( !$rev->userCan( Revision::DELETED_RESTRICTED ) ) {
- $revdlink = $sk->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
- } else {
- $query = array(
- 'type' => 'archive',
- 'target' => $this->mTargetObj->getPrefixedDBkey(),
- 'ids' => $ts
- );
- $revdlink = $sk->revDeleteLink( $query,
- $rev->isDeleted( Revision::DELETED_RESTRICTED ), $canHide );
- }
- } else {
- $revdlink = '';
- }
+ $revdlink = $this->revDeleteLink( $rev );
return "<li>$checkBox $revdlink ($last) $pageLink . . $userLink $stxt $comment</li>";
}
- private function formatFileRow( $row, $sk ) {
- global $wgUser, $wgLang;
-
+ private function formatFileRow( $row ) {
$file = ArchivedFile::newFromRow( $row );
$ts = wfTimestamp( TS_MW, $row->fa_timestamp );
if( $this->mAllowed && $row->fa_storage_key ) {
- $checkBox = Xml::check( "fileid" . $row->fa_id );
+ $checkBox = Xml::check( 'fileid' . $row->fa_id );
$key = urlencode( $row->fa_storage_key );
- $pageLink = $this->getFileLink( $file, $this->getTitle(), $ts, $key, $sk );
+ $pageLink = $this->getFileLink( $file, $this->getTitle(), $ts, $key );
} else {
$checkBox = '';
- $pageLink = $wgLang->timeanddate( $ts, true );
+ $pageLink = $this->getLang()->timeanddate( $ts, true );
}
- $userLink = $this->getFileUser( $file, $sk );
+ $userLink = $this->getFileUser( $file );
$data =
wfMsg( 'widthheight',
- $wgLang->formatNum( $row->fa_width ),
- $wgLang->formatNum( $row->fa_height ) ) .
+ $this->getLang()->formatNum( $row->fa_width ),
+ $this->getLang()->formatNum( $row->fa_height ) ) .
' (' .
- wfMsg( 'nbytes', $wgLang->formatNum( $row->fa_size ) ) .
+ wfMsg( 'nbytes', $this->getLang()->formatNum( $row->fa_size ) ) .
')';
$data = htmlspecialchars( $data );
- $comment = $this->getFileComment( $file, $sk );
+ $comment = $this->getFileComment( $file );
// Add show/hide deletion links if available
- $canHide = $wgUser->isAllowed( 'deleterevision' );
- if( $canHide || ($file->getVisibility() && $wgUser->isAllowed('deletedhistory')) ) {
- if( !$file->userCan(File::DELETED_RESTRICTED ) ) {
- $revdlink = $sk->revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
+ $canHide = $this->getUser()->isAllowed( 'deleterevision' );
+ if( $canHide || ( $file->getVisibility() && $this->getUser()->isAllowed( 'deletedhistory' ) ) ) {
+ if( !$file->userCan( File::DELETED_RESTRICTED ) ) {
+ $revdlink = Linker::revDeleteLinkDisabled( $canHide ); // revision was hidden from sysops
} else {
$query = array(
'type' => 'filearchive',
'target' => $this->mTargetObj->getPrefixedDBkey(),
'ids' => $row->fa_id
);
- $revdlink = $sk->revDeleteLink( $query,
+ $revdlink = Linker::revDeleteLink( $query,
$file->isDeleted( File::DELETED_RESTRICTED ), $canHide );
}
} else {
@@ -1299,17 +1312,17 @@ class UndeleteForm extends SpecialPage {
/**
* Fetch revision text link if it's available to all users
+ *
+ * @param $rev Revision
* @return string
*/
- function getPageLink( $rev, $titleObj, $ts, $sk ) {
- global $wgLang;
-
- $time = htmlspecialchars( $wgLang->timeanddate( $ts, true ) );
+ function getPageLink( $rev, $titleObj, $ts ) {
+ $time = htmlspecialchars( $this->getLang()->timeanddate( $ts, true ) );
- if( !$rev->userCan(Revision::DELETED_TEXT) ) {
+ if( !$rev->userCan( Revision::DELETED_TEXT ) ) {
return '<span class="history-deleted">' . $time . '</span>';
} else {
- $link = $sk->linkKnown(
+ $link = Linker::linkKnown(
$titleObj,
$time,
array(),
@@ -1318,8 +1331,9 @@ class UndeleteForm extends SpecialPage {
'timestamp' => $ts
)
);
- if( $rev->isDeleted(Revision::DELETED_TEXT) )
+ if( $rev->isDeleted( Revision::DELETED_TEXT ) ) {
$link = '<span class="history-deleted">' . $link . '</span>';
+ }
return $link;
}
}
@@ -1327,26 +1341,26 @@ class UndeleteForm extends SpecialPage {
/**
* Fetch image view link if it's available to all users
*
+ * @param $file File
* @return String: HTML fragment
*/
- function getFileLink( $file, $titleObj, $ts, $key, $sk ) {
- global $wgLang, $wgUser;
-
- if( !$file->userCan(File::DELETED_FILE) ) {
- return '<span class="history-deleted">' . $wgLang->timeanddate( $ts, true ) . '</span>';
+ function getFileLink( $file, $titleObj, $ts, $key ) {
+ if( !$file->userCan( File::DELETED_FILE ) ) {
+ return '<span class="history-deleted">' . $this->getLang()->timeanddate( $ts, true ) . '</span>';
} else {
- $link = $sk->linkKnown(
+ $link = Linker::linkKnown(
$titleObj,
- $wgLang->timeanddate( $ts, true ),
+ $this->getLang()->timeanddate( $ts, true ),
array(),
array(
'target' => $this->mTargetObj->getPrefixedText(),
'file' => $key,
- 'token' => $wgUser->editToken( $key )
+ 'token' => $this->getUser()->editToken( $key )
)
);
- if( $file->isDeleted(File::DELETED_FILE) )
+ if( $file->isDeleted( File::DELETED_FILE ) ) {
$link = '<span class="history-deleted">' . $link . '</span>';
+ }
return $link;
}
}
@@ -1354,16 +1368,18 @@ class UndeleteForm extends SpecialPage {
/**
* Fetch file's user id if it's available to this user
*
+ * @param $file File
* @return String: HTML fragment
*/
- function getFileUser( $file, $sk ) {
- if( !$file->userCan(File::DELETED_USER) ) {
+ function getFileUser( $file ) {
+ if( !$file->userCan( File::DELETED_USER ) ) {
return '<span class="history-deleted">' . wfMsgHtml( 'rev-deleted-user' ) . '</span>';
} else {
- $link = $sk->userLink( $file->getRawUser(), $file->getRawUserText() ) .
- $sk->userToolLinks( $file->getRawUser(), $file->getRawUserText() );
- if( $file->isDeleted(File::DELETED_USER) )
+ $link = Linker::userLink( $file->getRawUser(), $file->getRawUserText() ) .
+ Linker::userToolLinks( $file->getRawUser(), $file->getRawUserText() );
+ if( $file->isDeleted( File::DELETED_USER ) ) {
$link = '<span class="history-deleted">' . $link . '</span>';
+ }
return $link;
}
}
@@ -1371,54 +1387,57 @@ class UndeleteForm extends SpecialPage {
/**
* Fetch file upload comment if it's available to this user
*
+ * @param $file File
* @return String: HTML fragment
*/
- function getFileComment( $file, $sk ) {
- if( !$file->userCan(File::DELETED_COMMENT) ) {
- return '<span class="history-deleted"><span class="comment">' . wfMsgHtml( 'rev-deleted-comment' ) . '</span></span>';
+ function getFileComment( $file ) {
+ if( !$file->userCan( File::DELETED_COMMENT ) ) {
+ return '<span class="history-deleted"><span class="comment">' .
+ wfMsgHtml( 'rev-deleted-comment' ) . '</span></span>';
} else {
- $link = $sk->commentBlock( $file->getRawDescription() );
- if( $file->isDeleted(File::DELETED_COMMENT) )
+ $link = Linker::commentBlock( $file->getRawDescription() );
+ if( $file->isDeleted( File::DELETED_COMMENT ) ) {
$link = '<span class="history-deleted">' . $link . '</span>';
+ }
return $link;
}
}
function undelete() {
- global $wgOut, $wgUser;
if ( wfReadOnly() ) {
- $wgOut->readOnlyPage();
- return;
+ throw new ReadOnlyError;
}
+
if( !is_null( $this->mTargetObj ) ) {
$archive = new PageArchive( $this->mTargetObj );
+ wfRunHooks( 'UndeleteForm::undelete', array( &$archive, $this->mTargetObj ) );
$ok = $archive->undelete(
$this->mTargetTimestamp,
$this->mComment,
$this->mFileVersions,
$this->mUnsuppress );
- if( is_array($ok) ) {
- if ( $ok[1] ) // Undeleted file count
+ if( is_array( $ok ) ) {
+ if ( $ok[1] ) { // Undeleted file count
wfRunHooks( 'FileUndeleteComplete', array(
$this->mTargetObj, $this->mFileVersions,
- $wgUser, $this->mComment) );
+ $this->getUser(), $this->mComment ) );
+ }
- $skin = $wgUser->getSkin();
- $link = $skin->linkKnown( $this->mTargetObj );
- $wgOut->addHTML( wfMsgWikiHtml( 'undeletedpage', $link ) );
+ $link = Linker::linkKnown( $this->mTargetObj );
+ $this->getOutput()->addHTML( wfMessage( 'undeletedpage' )->rawParams( $link )->parse() );
} else {
- $wgOut->showFatalError( wfMsg( "cannotundelete" ) );
- $wgOut->addHTML( '<p>' . wfMsgHtml( "undeleterevdel" ) . '</p>' );
+ $this->getOutput()->showFatalError( wfMsg( 'cannotundelete' ) );
+ $this->getOutput()->addWikiMsg( 'undeleterevdel' );
}
// Show file deletion warnings and errors
$status = $archive->getFileStatus();
if( $status && !$status->isGood() ) {
- $wgOut->addWikiText( $status->getWikiText( 'undelete-error-short', 'undelete-error-long' ) );
+ $this->getOutput()->addWikiText( $status->getWikiText( 'undelete-error-short', 'undelete-error-long' ) );
}
} else {
- $wgOut->showFatalError( wfMsg( "cannotundelete" ) );
+ $this->getOutput()->showFatalError( wfMsg( 'cannotundelete' ) );
}
return false;
}
diff --git a/includes/specials/SpecialUnlockdb.php b/includes/specials/SpecialUnlockdb.php
index c71b554b..95ad0bf5 100644
--- a/includes/specials/SpecialUnlockdb.php
+++ b/includes/specials/SpecialUnlockdb.php
@@ -33,12 +33,13 @@ class SpecialUnlockdb extends SpecialPage {
}
public function execute( $par ) {
- global $wgUser, $wgOut, $wgRequest;
+ global $wgUser, $wgRequest;
$this->setHeaders();
- if( !$wgUser->isAllowed( 'siteadmin' ) ) {
- $wgOut->permissionRequired( 'siteadmin' );
+ # Permission check
+ if( !$this->userCanExecute( $wgUser ) ) {
+ $this->displayRestrictionError();
return;
}
@@ -48,7 +49,7 @@ class SpecialUnlockdb extends SpecialPage {
if ( $action == 'success' ) {
$this->showSuccess();
- } else if ( $action == 'submit' && $wgRequest->wasPosted() &&
+ } elseif ( $action == 'submit' && $wgRequest->wasPosted() &&
$wgUser->matchEditToken( $wgRequest->getVal( 'wpEditToken' ) ) ) {
$this->doSubmit();
} else {
@@ -104,7 +105,12 @@ class SpecialUnlockdb extends SpecialPage {
$this->showForm( wfMsg( 'locknoconfirm' ) );
return;
}
- if ( @!unlink( $wgReadOnlyFile ) ) {
+
+ wfSuppressWarnings();
+ $res = unlink( $wgReadOnlyFile );
+ wfRestoreWarnings();
+
+ if ( !$res ) {
$wgOut->showFileDeleteError( $wgReadOnlyFile );
return;
}
diff --git a/includes/specials/SpecialUnusedcategories.php b/includes/specials/SpecialUnusedcategories.php
index ff2a66e1..e4b8e544 100644
--- a/includes/specials/SpecialUnusedcategories.php
+++ b/includes/specials/SpecialUnusedcategories.php
@@ -28,25 +28,26 @@ class UnusedCategoriesPage extends QueryPage {
function isExpensive() { return true; }
- function getName() {
- return 'Unusedcategories';
+ function __construct( $name = 'Unusedcategories' ) {
+ parent::__construct( $name );
}
function getPageHeader() {
return wfMsgExt( 'unusedcategoriestext', array( 'parse' ) );
}
- function getSQL() {
- $NScat = NS_CATEGORY;
- $dbr = wfGetDB( DB_SLAVE );
- list( $categorylinks, $page ) = $dbr->tableNamesN( 'categorylinks', 'page' );
- return "SELECT 'Unusedcategories' as type,
- {$NScat} as namespace, page_title as title, page_title as value
- FROM $page
- LEFT JOIN $categorylinks ON page_title=cl_to
- WHERE cl_from IS NULL
- AND page_namespace = {$NScat}
- AND page_is_redirect = 0";
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'page', 'categorylinks' ),
+ 'fields' => array ( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'page_title AS value' ),
+ 'conds' => array ( 'cl_from IS NULL',
+ 'page_namespace' => NS_CATEGORY,
+ 'page_is_redirect' => 0 ),
+ 'join_conds' => array ( 'categorylinks' => array (
+ 'LEFT JOIN', 'cl_to = page_title' ) )
+ );
}
/**
@@ -61,10 +62,3 @@ class UnusedCategoriesPage extends QueryPage {
return $skin->link( $title, $title->getText() );
}
}
-
-/** constructor */
-function wfSpecialUnusedCategories() {
- list( $limit, $offset ) = wfCheckLimits();
- $uc = new UnusedCategoriesPage();
- return $uc->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialUnusedimages.php b/includes/specials/SpecialUnusedimages.php
index 091ec3a3..6407de44 100644
--- a/includes/specials/SpecialUnusedimages.php
+++ b/includes/specials/SpecialUnusedimages.php
@@ -27,41 +27,53 @@
* @ingroup SpecialPage
*/
class UnusedimagesPage extends ImageQueryPage {
+ function __construct( $name = 'Unusedimages' ) {
+ parent::__construct( $name );
+ }
- function isExpensive() { return true; }
-
- function getName() {
- return 'Unusedimages';
+ function isExpensive() {
+ return true;
}
function sortDescending() {
return false;
}
- function isSyndicated() { return false; }
-
- function getSQL() {
- global $wgCountCategorizedImagesAsUsed;
- $dbr = wfGetDB( DB_SLAVE );
+ function isSyndicated() {
+ return false;
+ }
- $epoch = $dbr->unixTimestamp( 'img_timestamp' );
+ function getQueryInfo() {
+ global $wgCountCategorizedImagesAsUsed;
+ $retval = array (
+ 'tables' => array ( 'image', 'imagelinks' ),
+ 'fields' => array ( "'" . NS_FILE . "' AS namespace",
+ 'img_name AS title',
+ 'img_timestamp AS value',
+ 'img_user', 'img_user_text',
+ 'img_description' ),
+ 'conds' => array ( 'il_to IS NULL' ),
+ 'join_conds' => array ( 'imagelinks' => array (
+ 'LEFT JOIN', 'il_to = img_name' ) )
+ );
if ( $wgCountCategorizedImagesAsUsed ) {
- list( $page, $image, $imagelinks, $categorylinks ) = $dbr->tableNamesN( 'page', 'image', 'imagelinks', 'categorylinks' );
-
- return "SELECT 'Unusedimages' as type, 6 as namespace, img_name as title, $epoch as value,
- img_user, img_user_text, img_description
- FROM ((($page AS I LEFT JOIN $categorylinks AS L ON I.page_id = L.cl_from)
- LEFT JOIN $imagelinks AS P ON I.page_title = P.il_to)
- INNER JOIN $image AS G ON I.page_title = G.img_name)
- WHERE I.page_namespace = ".NS_FILE." AND L.cl_from IS NULL AND P.il_to IS NULL";
- } else {
- list( $image, $imagelinks ) = $dbr->tableNamesN( 'image','imagelinks' );
-
- return "SELECT 'Unusedimages' as type, 6 as namespace, img_name as title, $epoch as value,
- img_user, img_user_text, img_description
- FROM $image LEFT JOIN $imagelinks ON img_name=il_to WHERE il_to IS NULL ";
+ // Order is significant
+ $retval['tables'] = array ( 'image', 'page', 'categorylinks',
+ 'imagelinks' );
+ $retval['conds']['page_namespace'] = NS_FILE;
+ $retval['conds'][] = 'cl_from IS NULL';
+ $retval['conds'][] = 'img_name = page_title';
+ $retval['join_conds']['categorylinks'] = array (
+ 'LEFT JOIN', 'cl_from = page_id' );
+ $retval['join_conds']['imagelinks'] = array (
+ 'LEFT JOIN', 'il_to = page_title' );
}
+ return $retval;
+ }
+
+ function usesTimestamps() {
+ return true;
}
function getPageHeader() {
@@ -69,13 +81,3 @@ class UnusedimagesPage extends ImageQueryPage {
}
}
-
-/**
- * Entry point
- */
-function wfSpecialUnusedimages() {
- list( $limit, $offset ) = wfCheckLimits();
- $uip = new UnusedimagesPage();
-
- return $uip->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialUnusedtemplates.php b/includes/specials/SpecialUnusedtemplates.php
index 68bf95a2..da501605 100644
--- a/includes/specials/SpecialUnusedtemplates.php
+++ b/includes/specials/SpecialUnusedtemplates.php
@@ -31,24 +31,34 @@
*/
class UnusedtemplatesPage extends QueryPage {
- function getName() { return( 'Unusedtemplates' ); }
+ function __construct( $name = 'Unusedtemplates' ) {
+ parent::__construct( $name );
+ }
+
function isExpensive() { return true; }
function isSyndicated() { return false; }
function sortDescending() { return false; }
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $page, $templatelinks) = $dbr->tableNamesN( 'page', 'templatelinks' );
- $sql = "SELECT 'Unusedtemplates' AS type, page_title AS title,
- page_namespace AS namespace, 0 AS value
- FROM $page
- LEFT JOIN $templatelinks
- ON page_namespace = tl_namespace AND page_title = tl_title
- WHERE page_namespace = 10 AND tl_from IS NULL
- AND page_is_redirect = 0";
- return $sql;
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'page', 'templatelinks' ),
+ 'fields' => array ( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'page_title AS value' ),
+ 'conds' => array ( 'page_namespace' => NS_TEMPLATE,
+ 'tl_from IS NULL',
+ 'page_is_redirect' => 0 ),
+ 'join_conds' => array ( 'templatelinks' => array (
+ 'LEFT JOIN', array ( 'tl_title = page_title',
+ 'tl_namespace = page_namespace' ) ) )
+ );
}
+ /**
+ * @param $skin Skin
+ * @param $result
+ * @return string
+ */
function formatResult( $skin, $result ) {
$title = Title::makeTitle( NS_TEMPLATE, $result->title );
$pageLink = $skin->linkKnown(
@@ -72,8 +82,3 @@ class UnusedtemplatesPage extends QueryPage {
}
-function wfSpecialUnusedtemplates() {
- list( $limit, $offset ) = wfCheckLimits();
- $utp = new UnusedtemplatesPage();
- $utp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialUnwatchedpages.php b/includes/specials/SpecialUnwatchedpages.php
index ecd62cb7..0f11140b 100644
--- a/includes/specials/SpecialUnwatchedpages.php
+++ b/includes/specials/SpecialUnwatchedpages.php
@@ -31,62 +31,58 @@
*/
class UnwatchedpagesPage extends QueryPage {
- function getName() { return 'Unwatchedpages'; }
+ function __construct( $name = 'Unwatchedpages' ) {
+ parent::__construct( $name, 'unwatchedpages' );
+ }
+
function isExpensive() { return true; }
function isSyndicated() { return false; }
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $page, $watchlist ) = $dbr->tableNamesN( 'page', 'watchlist' );
- $mwns = NS_MEDIAWIKI;
- return
- "
- SELECT
- 'Unwatchedpages' as type,
- page_namespace as namespace,
- page_title as title,
- page_namespace as value
- FROM $page
- LEFT JOIN $watchlist ON wl_namespace = page_namespace AND page_title = wl_title
- WHERE wl_title IS NULL AND page_is_redirect = 0 AND page_namespace<>$mwns
- ";
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'page', 'watchlist' ),
+ 'fields' => array ( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'page_namespace AS value' ),
+ 'conds' => array ( 'wl_title IS NULL',
+ 'page_is_redirect' => 0,
+ "page_namespace != '" . NS_MEDIAWIKI .
+ "'" ),
+ 'join_conds' => array ( 'watchlist' => array (
+ 'LEFT JOIN', array ( 'wl_title = page_title',
+ 'wl_namespace = page_namespace' ) ) )
+ );
}
function sortDescending() { return false; }
+ function getOrderFields() {
+ return array( 'page_namespace', 'page_title' );
+ }
+
+ /**
+ * @param $skin Skin
+ * @param $result
+ * @return string
+ */
function formatResult( $skin, $result ) {
global $wgContLang;
$nt = Title::makeTitle( $result->namespace, $result->title );
$text = $wgContLang->convert( $nt->getPrefixedText() );
- $plink = $skin->linkKnown(
+ $plink = Linker::linkKnown(
$nt,
htmlspecialchars( $text )
);
- $wlink = $skin->linkKnown(
+ $token = WatchAction::getWatchToken( $nt, $this->getUser() );
+ $wlink = Linker::linkKnown(
$nt,
wfMsgHtml( 'watch' ),
array(),
- array( 'action' => 'watch' )
+ array( 'action' => 'watch', 'token' => $token )
);
return wfSpecialList( $plink, $wlink );
}
}
-
-/**
- * constructor
- */
-function wfSpecialUnwatchedpages() {
- global $wgUser, $wgOut;
-
- if ( ! $wgUser->isAllowed( 'unwatchedpages' ) )
- return $wgOut->permissionRequired( 'unwatchedpages' );
-
- list( $limit, $offset ) = wfCheckLimits();
-
- $wpp = new UnwatchedpagesPage();
-
- $wpp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialUpload.php b/includes/specials/SpecialUpload.php
index 893e4be2..8eeca5d5 100644
--- a/includes/specials/SpecialUpload.php
+++ b/includes/specials/SpecialUpload.php
@@ -45,7 +45,15 @@ class SpecialUpload extends SpecialPage {
/** Misc variables **/
public $mRequest; // The WebRequest or FauxRequest this form is supposed to handle
public $mSourceType;
+
+ /**
+ * @var UploadBase
+ */
public $mUpload;
+
+ /**
+ * @var LocalFile
+ */
public $mLocalFile;
public $mUploadClicked;
@@ -71,6 +79,8 @@ class SpecialUpload extends SpecialPage {
public $uploadFormTextTop;
public $uploadFormTextAfterSummary;
+ public $mWatchthis;
+
/**
* Initialize instance variables from request and create an Upload handler
*
@@ -105,7 +115,7 @@ class SpecialUpload extends SpecialPage {
$this->mForReUpload = $request->getBool( 'wpForReUpload' ); // updating a file
$this->mCancelUpload = $request->getCheck( 'wpCancelUpload' )
- || $request->getCheck( 'wpReUpload' ); // b/w compat
+ || $request->getCheck( 'wpReUpload' ); // b/w compat
// If it was posted check for the token (no remote POST'ing with user credentials)
$token = $request->getVal( 'wpEditToken' );
@@ -130,7 +140,7 @@ class SpecialUpload extends SpecialPage {
* @param $user User object
* @return Boolean
*/
- public function userCanExecute( $user ) {
+ public function userCanExecute( User $user ) {
return UploadBase::isEnabled() && parent::userCanExecute( $user );
}
@@ -196,7 +206,7 @@ class SpecialUpload extends SpecialPage {
wfDebug( "Hook 'UploadForm:initial' broke output of the upload form" );
return;
}
-
+
$this->showUploadForm( $this->getUploadForm() );
}
@@ -214,7 +224,7 @@ class SpecialUpload extends SpecialPage {
*/
protected function showUploadForm( $form ) {
# Add links if file was previously deleted
- if ( !$this->mDesiredDestName ) {
+ if ( $this->mDesiredDestName ) {
$this->showViewDeletedLinks();
}
@@ -267,7 +277,7 @@ class SpecialUpload extends SpecialPage {
$desiredTitleObj = Title::makeTitleSafe( NS_FILE, $this->mDesiredDestName );
$delNotice = ''; // empty by default
if ( $desiredTitleObj instanceof Title && !$desiredTitleObj->exists() ) {
- LogEventsList::showLogExtract( $delNotice, array( 'delete', 'move' ),
+ LogEventsList::showLogExtract( $delNotice, array( 'delete', 'move' ),
$desiredTitleObj->getPrefixedText(),
'', array( 'lim' => 10,
'conds' => array( "log_action != 'revision'" ),
@@ -278,17 +288,17 @@ class SpecialUpload extends SpecialPage {
$form->addPreText( $delNotice );
# Add text to form
- $form->addPreText( '<div id="uploadtext">' .
- wfMsgExt( 'uploadtext', 'parse', array( $this->mDesiredDestName ) ) .
+ $form->addPreText( '<div id="uploadtext">' .
+ wfMsgExt( 'uploadtext', 'parse', array( $this->mDesiredDestName ) ) .
'</div>' );
# Add upload error message
$form->addPreText( $message );
# Add footer to form
- $uploadFooter = wfMsgNoTrans( 'uploadfooter' );
- if ( $uploadFooter != '-' && !wfEmptyMsg( 'uploadfooter', $uploadFooter ) ) {
+ $uploadFooter = wfMessage( 'uploadfooter' );
+ if ( !$uploadFooter->isDisabled() ) {
$form->addPostText( '<div id="mw-upload-footer-message">'
- . $wgOut->parse( $uploadFooter ) . "</div>\n" );
+ . $wgOut->parse( $uploadFooter->plain() ) . "</div>\n" );
}
return $form;
@@ -309,7 +319,7 @@ class SpecialUpload extends SpecialPage {
$link = wfMsgExt(
$wgUser->isAllowed( 'delete' ) ? 'thisisdeleted' : 'viewdeleted',
array( 'parse', 'replaceafter' ),
- $wgUser->getSkin()->linkKnown(
+ $this->getSkin()->linkKnown(
SpecialPage::getTitleFor( 'Undelete', $title->getPrefixedText() ),
wfMsgExt( 'restorelink', array( 'parsemag', 'escape' ), $count )
)
@@ -317,11 +327,6 @@ class SpecialUpload extends SpecialPage {
$wgOut->addHTML( "<div id=\"contentSub2\">{$link}</div>" );
}
}
-
- // Show the relevant lines from deletion log (for still deleted files only)
- if( $title instanceof Title && $title->isDeletedQuick() && !$title->exists() ) {
- $this->showDeletionLog( $wgOut, $title->getPrefixedText() );
- }
}
/**
@@ -337,7 +342,7 @@ class SpecialUpload extends SpecialPage {
*/
protected function showRecoverableUploadError( $message ) {
$sessionKey = $this->mUpload->stashSession();
- $message = '<h2>' . wfMsgHtml( 'uploadwarning' ) . "</h2>\n" .
+ $message = '<h2>' . wfMsgHtml( 'uploaderror' ) . "</h2>\n" .
'<div class="error">' . $message . "</div>\n";
$form = $this->getUploadForm( $message, $sessionKey );
@@ -357,8 +362,8 @@ class SpecialUpload extends SpecialPage {
# mDestWarningAck is set when some javascript has shown the warning
# to the user. mForReUpload is set when the user clicks the "upload a
# new version" link.
- if ( !$warnings || ( count( $warnings ) == 1 &&
- isset( $warnings['exists'] ) &&
+ if ( !$warnings || ( count( $warnings ) == 1 &&
+ isset( $warnings['exists'] ) &&
( $this->mDestWarningAck || $this->mForReUpload ) ) )
{
return false;
@@ -436,16 +441,15 @@ class SpecialUpload extends SpecialPage {
return;
}
-
// Upload verification
$details = $this->mUpload->verifyUpload();
if ( $details['status'] != UploadBase::OK ) {
$this->processVerificationError( $details );
return;
}
-
+
// Verify permissions for this title
- $permErrors = $this->mUpload->verifyPermissions( $wgUser );
+ $permErrors = $this->mUpload->verifyTitlePermissions( $wgUser );
if( $permErrors !== true ) {
$code = array_shift( $permErrors[0] );
$this->showRecoverableUploadError( wfMsgExt( $code,
@@ -574,6 +578,10 @@ class SpecialUpload extends SpecialPage {
$this->showRecoverableUploadError( wfMsgExt( 'filetype-missing',
'parseinline' ) );
break;
+ case UploadBase::WINDOWS_NONASCII_FILENAME:
+ $this->showRecoverableUploadError( wfMsgExt( 'windows-nonascii-filename',
+ 'parseinline' ) );
+ break;
/** Statuses that require reuploading **/
case UploadBase::EMPTY_FILE:
@@ -583,18 +591,25 @@ class SpecialUpload extends SpecialPage {
$this->showUploadError( wfMsgHtml( 'largefileserver' ) );
break;
case UploadBase::FILETYPE_BADTYPE:
- $finalExt = $details['finalExt'];
- $this->showUploadError(
- wfMsgExt( 'filetype-banned-type',
- array( 'parseinline' ),
- htmlspecialchars( $finalExt ),
- implode(
- wfMsgExt( 'comma-separator', array( 'escapenoentities' ) ),
- $wgFileExtensions
- ),
- $wgLang->formatNum( count( $wgFileExtensions ) )
- )
- );
+ $msg = wfMessage( 'filetype-banned-type' );
+ if ( isset( $details['blacklistedExt'] ) ) {
+ $msg->params( $wgLang->commaList( $details['blacklistedExt'] ) );
+ } else {
+ $msg->params( $details['finalExt'] );
+ }
+ $msg->params( $wgLang->commaList( $wgFileExtensions ),
+ count( $wgFileExtensions ) );
+
+ // Add PLURAL support for the first parameter. This results
+ // in a bit unlogical parameter sequence, but does not break
+ // old translations
+ if ( isset( $details['blacklistedExt'] ) ) {
+ $msg->params( count( $details['blacklistedExt'] ) );
+ } else {
+ $msg->params( 1 );
+ }
+
+ $this->showUploadError( $msg->parse() );
break;
case UploadBase::VERIFICATION_ERROR:
unset( $details['status'] );
@@ -690,7 +705,7 @@ class SpecialUpload extends SpecialPage {
'page' => $filename
)
);
- $warning = wfMsgWikiHtml( 'filewasdeleted', $llink );
+ $warning = wfMsgExt( 'filewasdeleted', array( 'parse', 'replaceafter' ), $llink );
}
return $warning;
@@ -761,6 +776,8 @@ class UploadForm extends HTMLForm {
protected $mSourceIds;
+ protected $mMaxFileSize = array();
+
public function __construct( $options = array() ) {
$this->mWatch = !empty( $options['watch'] );
$this->mForReUpload = !empty( $options['forreupload'] );
@@ -777,7 +794,7 @@ class UploadForm extends HTMLForm {
? $options['texttop'] : '';
$this->mTextAfterSummary = isset( $options['textaftersummary'] )
- ? $options['textaftersummary'] : '';
+ ? $options['textaftersummary'] : '';
$sourceDescriptor = $this->getSourceSection();
$descriptor = $sourceDescriptor
@@ -812,7 +829,6 @@ class UploadForm extends HTMLForm {
*/
protected function getSourceSection() {
global $wgLang, $wgUser, $wgRequest;
- global $wgMaxUploadSize;
if ( $this->mSessionKey ) {
return array(
@@ -841,6 +857,14 @@ class UploadForm extends HTMLForm {
);
}
+ $this->mMaxUploadSize['file'] = UploadBase::getMaxUploadSize( 'file' );
+ # Limit to upload_max_filesize unless we are running under HipHop and
+ # that setting doesn't exist
+ if ( !wfIsHipHop() ) {
+ $this->mMaxUploadSize['file'] = min( $this->mMaxUploadSize['file'],
+ wfShorthandToInteger( ini_get( 'upload_max_filesize' ) ) );
+ }
+
$descriptor['UploadFile'] = array(
'class' => 'UploadSourceField',
'section' => 'source',
@@ -851,17 +875,12 @@ class UploadForm extends HTMLForm {
'radio' => &$radio,
'help' => wfMsgExt( 'upload-maxfilesize',
array( 'parseinline', 'escapenoentities' ),
- $wgLang->formatSize(
- wfShorthandToInteger( min(
- wfShorthandToInteger(
- ini_get( 'upload_max_filesize' )
- ), $wgMaxUploadSize
- ) )
- )
+ $wgLang->formatSize( $this->mMaxUploadSize['file'] )
) . ' ' . wfMsgHtml( 'upload_source_file' ),
'checked' => $selectedSourceType == 'file',
);
if ( $canUploadByUrl ) {
+ $this->mMaxUploadSize['url'] = UploadBase::getMaxUploadSize( 'url' );
$descriptor['UploadFileURL'] = array(
'class' => 'UploadSourceField',
'section' => 'source',
@@ -871,7 +890,7 @@ class UploadForm extends HTMLForm {
'radio' => &$radio,
'help' => wfMsgExt( 'upload-maxfilesize',
array( 'parseinline', 'escapenoentities' ),
- $wgLang->formatSize( $wgMaxUploadSize )
+ $wgLang->formatSize( $this->mMaxUploadSize['url'] )
) . ' ' . wfMsgHtml( 'upload_source_url' ),
'checked' => $selectedSourceType == 'url',
);
@@ -903,16 +922,16 @@ class UploadForm extends HTMLForm {
# Everything not permitted is banned
$extensionsList =
'<div id="mw-upload-permitted">' .
- wfMsgWikiHtml( 'upload-permitted', $wgLang->commaList( $wgFileExtensions ) ) .
+ wfMsgExt( 'upload-permitted', 'parse', $wgLang->commaList( $wgFileExtensions ) ) .
"</div>\n";
} else {
# We have to list both preferred and prohibited
$extensionsList =
'<div id="mw-upload-preferred">' .
- wfMsgWikiHtml( 'upload-preferred', $wgLang->commaList( $wgFileExtensions ) ) .
+ wfMsgExt( 'upload-preferred', 'parse', $wgLang->commaList( $wgFileExtensions ) ) .
"</div>\n" .
'<div id="mw-upload-prohibited">' .
- wfMsgWikiHtml( 'upload-prohibited', $wgLang->commaList( $wgFileBlacklist ) ) .
+ wfMsgExt( 'upload-prohibited', 'parse', $wgLang->commaList( $wgFileBlacklist ) ) .
"</div>\n";
}
} else {
@@ -931,6 +950,26 @@ class UploadForm extends HTMLForm {
protected function getDescriptionSection() {
global $wgUser;
+ if ( $this->mSessionKey ) {
+ $stash = RepoGroup::singleton()->getLocalRepo()->getUploadStash();
+ try {
+ $file = $stash->getFile( $this->mSessionKey );
+ } catch ( MWException $e ) {
+ $file = null;
+ }
+ if ( $file ) {
+ global $wgContLang;
+
+ $mto = $file->transform( array( 'width' => 120 ) );
+ $this->addHeaderText(
+ '<div class="thumb t' . $wgContLang->alignEnd() . '">' .
+ Html::element( 'img', array(
+ 'src' => $mto->getUrl(),
+ 'class' => 'thumbimage',
+ ) ) . '</div>', 'description' );
+ }
+ }
+
$descriptor = array(
'DestFile' => array(
'type' => 'text',
@@ -939,7 +978,7 @@ class UploadForm extends HTMLForm {
'label-message' => 'destfilename',
'size' => 60,
'default' => $this->mDestFile,
- # FIXME: hack to work around poor handling of the 'default' option in HTMLForm
+ # @todo FIXME: Hack to work around poor handling of the 'default' option in HTMLForm
'nodata' => strval( $this->mDestFile ) !== '',
),
'UploadDescription' => array(
@@ -967,6 +1006,7 @@ class UploadForm extends HTMLForm {
'EditTools' => array(
'type' => 'edittools',
'section' => 'description',
+ 'message' => 'edittools-upload',
)
);
@@ -1035,7 +1075,7 @@ class UploadForm extends HTMLForm {
'id' => 'wpDestFileWarningAck',
'default' => $this->mDestWarningAck ? '1' : '',
);
-
+
if ( $this->mForReUpload ) {
$descriptor['ForReUpload'] = array(
'type' => 'hidden',
@@ -1064,6 +1104,7 @@ class UploadForm extends HTMLForm {
$useAjaxDestCheck = $wgUseAjax && $wgAjaxUploadDestCheck;
$useAjaxLicensePreview = $wgUseAjax && $wgAjaxLicensePreview && $wgEnableAPI;
+ $this->mMaxUploadSize['*'] = UploadBase::getMaxUploadSize();
$scriptVars = array(
'wgAjaxUploadDestCheck' => $useAjaxDestCheck,
@@ -1075,12 +1116,17 @@ class UploadForm extends HTMLForm {
'wgUploadSourceIds' => $this->mSourceIds,
'wgStrictFileExtensions' => $wgStrictFileExtensions,
'wgCapitalizeUploads' => MWNamespace::isCapitalized( NS_FILE ),
+ 'wgMaxUploadSize' => $this->mMaxUploadSize,
);
$wgOut->addScript( Skin::makeVariablesScript( $scriptVars ) );
- // For <charinsert> support
- $wgOut->addModules( array( 'mediawiki.legacy.edit', 'mediawiki.legacy.upload' ) );
+
+ $wgOut->addModules( array(
+ 'mediawiki.action.edit', // For <charinsert> support
+ 'mediawiki.legacy.upload', // Old form stuff...
+ 'mediawiki.special.upload', // Newer extras for thumbnail preview.
+ ) );
}
/**
diff --git a/includes/specials/SpecialUploadStash.php b/includes/specials/SpecialUploadStash.php
index 48a41a5e..20a37f0b 100644
--- a/includes/specials/SpecialUploadStash.php
+++ b/includes/specials/SpecialUploadStash.php
@@ -20,13 +20,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
// UploadStash
private $stash;
- // is the edit request authorized? boolean
- private $isEditAuthorized;
-
- // did the user request us to clear the stash? boolean
- private $requestedClear;
-
- // Since we are directly writing the file to STDOUT,
+ // Since we are directly writing the file to STDOUT,
// we should not be reading in really big files and serving them out.
//
// We also don't want people using this as a file drop, even if they
@@ -34,19 +28,15 @@ class SpecialUploadStash extends UnlistedSpecialPage {
//
// This service is really for thumbnails and other such previews while
// uploading.
- const MAX_SERVE_BYTES = 262144; // 256K
-
- public function __construct( $request = null ) {
- global $wgRequest;
+ const MAX_SERVE_BYTES = 1048576; // 1MB
+ public function __construct() {
parent::__construct( 'UploadStash', 'upload' );
try {
$this->stash = RepoGroup::singleton()->getLocalRepo()->getUploadStash();
} catch ( UploadStashNotAvailableException $e ) {
return null;
}
-
- $this->loadRequest( is_null( $request ) ? $wgRequest : $request );
}
/**
@@ -91,7 +81,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
return $this->outputLocalFile( $params['file'] );
}
} catch( UploadStashFileNotFoundException $e ) {
- $code = 404;
+ $code = 404;
$message = $e->getMessage();
} catch( UploadStashZeroLengthFileException $e ) {
$code = 500;
@@ -107,15 +97,15 @@ class SpecialUploadStash extends UnlistedSpecialPage {
$message = $e->getMessage();
}
- wfHttpError( $code, OutputPage::getStatusMessage( $code ), $message );
+ wfHttpError( $code, HttpStatus::getMessage( $code ), $message );
return false;
}
-
+
/**
- * Parse the key passed to the SpecialPage. Returns an array containing
- * the associated file object, the type ('file' or 'thumb') and if
+ * Parse the key passed to the SpecialPage. Returns an array containing
+ * the associated file object, the type ('file' or 'thumb') and if
* application the transform parameters
- *
+ *
* @param string $key
* @return array
*/
@@ -132,28 +122,27 @@ class SpecialUploadStash extends UnlistedSpecialPage {
$srcNamePos = strrpos( $thumbPart, $fileName );
if ( $srcNamePos === false || $srcNamePos < 1 ) {
throw new UploadStashBadPathException( 'Unrecognized thumb name' );
- }
+ }
$paramString = substr( $thumbPart, 0, $srcNamePos - 1 );
-
+
$handler = $file->getHandler();
- $params = $handler->parseParamString( $paramString );
- return array( 'file' => $file, 'type' => $type, 'params' => $params );
+ $params = $handler->parseParamString( $paramString );
+ return array( 'file' => $file, 'type' => $type, 'params' => $params );
}
-
+
return array( 'file' => $file, 'type' => $type );
}
-
-
-
/**
* Get a thumbnail for file, either generated locally or remotely, and stream it out
- * @param String $key: key for the file in the stash
- * @param int $width: width of desired thumbnail
- * @return boolean success
- */
+ *
+ * @param $file
+ * @param $params array
+ *
+ * @return boolean success
+ */
private function outputThumbFromStash( $file, $params ) {
-
+
// this global, if it exists, points to a "scaler", as you might find in the Wikimedia Foundation cluster. See outputRemoteScaledThumb()
// this is part of our horrible NFS-based system, we create a file on a mount point here, but fetch the scaled file from somewhere else that
// happens to share it over NFS
@@ -165,16 +154,13 @@ class SpecialUploadStash extends UnlistedSpecialPage {
} else {
$this->outputLocallyScaledThumb( $file, $params, $flags );
}
-
-
}
-
/**
* Scale a file (probably with a locally installed imagemagick, or similar) and output it to STDOUT.
- * @param $file: File object
+ * @param $file: File object
* @param $params: scaling parameters ( e.g. array( width => '50' ) );
- * @param $flags: scaling flags ( see File:: constants )
+ * @param $flags: scaling flags ( see File:: constants )
* @throws MWException
* @return boolean success
*/
@@ -182,7 +168,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
// n.b. this is stupid, we insist on re-transforming the file every time we are invoked. We rely
// on HTTP caching to ensure this doesn't happen.
-
+
$flags |= File::RENDER_NOW;
$thumbnailImage = $file->transform( $params, $flags );
@@ -203,41 +189,47 @@ class SpecialUploadStash extends UnlistedSpecialPage {
}
return $this->outputLocalFile( $thumbFile );
-
+
}
-
+
/**
* Scale a file with a remote "scaler", as exists on the Wikimedia Foundation cluster, and output it to STDOUT.
- * Note: unlike the usual thumbnail process, the web client never sees the cluster URL; we do the whole HTTP transaction to the scaler ourselves
+ * Note: unlike the usual thumbnail process, the web client never sees the cluster URL; we do the whole HTTP transaction to the scaler ourselves
* and cat the results out.
- * Note: We rely on NFS to have propagated the file contents to the scaler. However, we do not rely on the thumbnail being created in NFS and then
- * propagated back to our filesystem. Instead we take the results of the HTTP request instead.
+ * Note: We rely on NFS to have propagated the file contents to the scaler. However, we do not rely on the thumbnail being created in NFS and then
+ * propagated back to our filesystem. Instead we take the results of the HTTP request instead.
* Note: no caching is being done here, although we are instructing the client to cache it forever.
- * @param $file: File object
+ * @param $file: File object
* @param $params: scaling parameters ( e.g. array( width => '50' ) );
- * @param $flags: scaling flags ( see File:: constants )
+ * @param $flags: scaling flags ( see File:: constants )
* @throws MWException
* @return boolean success
*/
private function outputRemoteScaledThumb( $file, $params, $flags ) {
-
+
// this global probably looks something like 'http://upload.wikimedia.org/wikipedia/test/thumb/temp'
// do not use trailing slash
global $wgUploadStashScalerBaseUrl;
- $scalerThumbName = $file->getParamThumbName( $file->name, $params );
- $scalerThumbUrl = $wgUploadStashScalerBaseUrl . '/' . $file->getRel() . '/' . $scalerThumbName;
-
+ // We need to use generateThumbName() instead of thumbName(), because
+ // the suffix needs to match the file name for the remote thumbnailer
+ // to work
+ $scalerThumbName = $file->generateThumbName( $file->getName(), $params );
+ $scalerThumbUrl = $wgUploadStashScalerBaseUrl . '/' . $file->getUrlRel() .
+ '/' . rawurlencode( $scalerThumbName );
+
// make a curl call to the scaler to create a thumbnail
- $httpOptions = array(
+ $httpOptions = array(
'method' => 'GET',
'timeout' => 'default'
);
$req = MWHttpRequest::factory( $scalerThumbUrl, $httpOptions );
$status = $req->execute();
if ( ! $status->isOK() ) {
- $errors = $status->getErrorsArray();
- throw new MWException( "Fetching thumbnail failed: " . join( ", ", $errors ) );
+ $errors = $status->getErrorsArray();
+ $errorStr = "Fetching thumbnail failed: " . print_r( $errors, 1 );
+ $errorStr .= "\nurl = $scalerThumbUrl\n";
+ throw new MWException( $errorStr );
}
$contentType = $req->getResponseHeader( "content-type" );
if ( ! $contentType ) {
@@ -257,13 +249,13 @@ class SpecialUploadStash extends UnlistedSpecialPage {
private function outputLocalFile( $file ) {
if ( $file->getSize() > self::MAX_SERVE_BYTES ) {
throw new SpecialUploadStashTooLargeException();
- }
+ }
self::outputFileHeaders( $file->getMimeType(), $file->getSize() );
readfile( $file->getPath() );
return true;
}
- /**
+ /**
* Output HTTP response of raw content
* Side effect: writes HTTP response to STDOUT.
* @param String $content: content
@@ -275,11 +267,11 @@ class SpecialUploadStash extends UnlistedSpecialPage {
throw new SpecialUploadStashTooLargeException();
}
self::outputFileHeaders( $contentType, $size );
- print $content;
+ print $content;
return true;
}
- /**
+ /**
* Output headers for streaming
* XXX unsure about encoding as binary; if we received from HTTP perhaps we should use that encoding, concatted with semicolon to mimeType as it usually is.
* Side effect: preps PHP to write headers to STDOUT.
@@ -290,38 +282,20 @@ class SpecialUploadStash extends UnlistedSpecialPage {
header( "Content-Type: $contentType", true );
header( 'Content-Transfer-Encoding: binary', true );
header( 'Expires: Sun, 17-Jan-2038 19:14:07 GMT', true );
- header( "Content-Length: $size", true );
- }
-
-
- /**
- * Initialize authorization & actions to take, from the request
- * @param $request: WebRequest
- */
- private function loadRequest( $request ) {
- global $wgUser;
- if ( $request->wasPosted() ) {
-
- $token = $request->getVal( 'wpEditToken' );
- $this->isEditAuthorized = $wgUser->matchEditToken( $token );
-
- $this->requestedClear = $request->getBool( 'clear' );
-
- }
+ header( "Content-Length: $size", true );
}
/**
- * Static callback for the HTMLForm in showUploads, to process
+ * Static callback for the HTMLForm in showUploads, to process
* Note the stash has to be recreated since this is being called in a static context.
* This works, because there really is only one stash per logged-in user, despite appearances.
*
* @return Status
- */
+ */
public static function tryClearStashedUploads( $formData ) {
- wfDebug( __METHOD__ . " form data : " . print_r( $formData, 1 ) );
- if ( isset( $formData['clear'] ) and $formData['clear'] ) {
- $stash = new UploadStash();
- wfDebug( "stash has: " . print_r( $stash->listFiles(), 1 ) );
+ if ( isset( $formData['Clear'] ) ) {
+ $stash = RepoGroup::singleton()->getLocalRepo()->getUploadStash();
+ wfDebug( "stash has: " . print_r( $stash->listFiles(), true ) );
if ( ! $stash->clear() ) {
return Status::newFatal( 'uploadstash-errclear' );
}
@@ -333,7 +307,7 @@ class SpecialUploadStash extends UnlistedSpecialPage {
* Default action when we don't have a subpage -- just show links to the uploads we have,
* Also show a button to clear stashed files
* @param Status : $status - the result of processRequest
- */
+ */
private function showUploads( $status = null ) {
global $wgOut;
if ( $status === null ) {
@@ -344,49 +318,49 @@ class SpecialUploadStash extends UnlistedSpecialPage {
$this->setHeaders();
$this->outputHeader();
-
// create the form, which will also be used to execute a callback to process incoming form data
// this design is extremely dubious, but supposedly HTMLForm is our standard now?
- $form = new HTMLForm( array(
- 'Clear' => array(
- 'type' => 'hidden',
+ $form = new HTMLForm( array(
+ 'Clear' => array(
+ 'type' => 'hidden',
'default' => true,
'name' => 'clear',
- )
+ )
), 'clearStashedUploads' );
- $form->setSubmitCallback( array( __CLASS__, 'tryClearStashedUploads' ) );
+ $form->setSubmitCallback( array( __CLASS__ , 'tryClearStashedUploads' ) );
$form->setTitle( $this->getTitle() );
- $form->addHiddenField( 'clear', true, array( 'type' => 'boolean' ) );
$form->setSubmitText( wfMsg( 'uploadstash-clear' ) );
- $form->prepareForm();
- $formResult = $form->tryAuthorizedSubmit();
-
+ $form->prepareForm();
+ $formResult = $form->tryAuthorizedSubmit();
// show the files + form, if there are any, or just say there are none
- $refreshHtml = Html::element( 'a', array( 'href' => $this->getTitle()->getLocalURL() ), wfMsg( 'uploadstash-refresh' ) );
+ $refreshHtml = Html::element( 'a',
+ array( 'href' => $this->getTitle()->getLocalURL() ),
+ wfMsg( 'uploadstash-refresh' ) );
$files = $this->stash->listFiles();
if ( count( $files ) ) {
sort( $files );
$fileListItemsHtml = '';
foreach ( $files as $file ) {
+ // TODO: Use Linker::link or even construct the list in plain wikitext
$fileListItemsHtml .= Html::rawElement( 'li', array(),
- Html::element( 'a', array( 'href' =>
+ Html::element( 'a', array( 'href' =>
$this->getTitle( "file/$file" )->getLocalURL() ), $file )
);
}
$wgOut->addHtml( Html::rawElement( 'ul', array(), $fileListItemsHtml ) );
- $form->displayForm( $formResult );
+ $form->displayForm( $formResult );
$wgOut->addHtml( Html::rawElement( 'p', array(), $refreshHtml ) );
} else {
- $wgOut->addHtml( Html::rawElement( 'p', array(),
+ $wgOut->addHtml( Html::rawElement( 'p', array(),
Html::element( 'span', array(), wfMsg( 'uploadstash-nofiles' ) )
- . ' '
+ . ' '
. $refreshHtml
) );
}
-
+
return true;
}
}
diff --git a/includes/specials/SpecialUserlogin.php b/includes/specials/SpecialUserlogin.php
index ccace79d..01dc9a1c 100644
--- a/includes/specials/SpecialUserlogin.php
+++ b/includes/specials/SpecialUserlogin.php
@@ -22,24 +22,11 @@
*/
/**
- * Constructor
- */
-function wfSpecialUserlogin( $par = '' ) {
- global $wgRequest;
- if( session_id() == '' ) {
- wfSetupSession();
- }
-
- $form = new LoginForm( $wgRequest, $par );
- $form->execute();
-}
-
-/**
* Implements Special:UserLogin
*
* @ingroup SpecialPage
*/
-class LoginForm {
+class LoginForm extends SpecialPage {
const SUCCESS = 0;
const NO_NAME = 1;
@@ -56,23 +43,42 @@ class LoginForm {
const NEED_TOKEN = 12;
const WRONG_TOKEN = 13;
- var $mName, $mPassword, $mRetype, $mReturnTo, $mCookieCheck, $mPosted;
- var $mAction, $mCreateaccount, $mCreateaccountMail, $mMailmypassword;
+ var $mUsername, $mPassword, $mRetype, $mReturnTo, $mCookieCheck, $mPosted;
+ var $mAction, $mCreateaccount, $mCreateaccountMail;
var $mLoginattempt, $mRemember, $mEmail, $mDomain, $mLanguage;
var $mSkipCookieCheck, $mReturnToQuery, $mToken, $mStickHTTPS;
+ var $mType, $mReason, $mRealName;
+ var $mAbortLoginErrorMsg = 'login-abort-generic';
+ /**
+ * @var ExternalUser
+ */
private $mExtUser = null;
/**
- * Constructor
- * @param $request WebRequest: a WebRequest object passed by reference
- * @param $par String: subpage parameter
+ * @param WebRequest $request
+ */
+ public function __construct( $request = null ) {
+ parent::__construct( 'Userlogin' );
+
+ if ( $request === null ) {
+ global $wgRequest;
+ $this->load( $wgRequest );
+ } else {
+ $this->load( $request );
+ }
+ }
+
+ /**
+ * Loader
+ *
+ * @param $request WebRequest object
*/
- function __construct( &$request, $par = '' ) {
+ function load( $request ) {
global $wgAuth, $wgHiddenPrefs, $wgEnableEmail, $wgRedirectOnLogin;
- $this->mType = ( $par == 'signup' ) ? $par : $request->getText( 'type' ); # Check for [[Special:Userlogin/signup]]
- $this->mName = $request->getText( 'wpName' );
+ $this->mType = $request->getText( 'type' );
+ $this->mUsername = $request->getText( 'wpName' );
$this->mPassword = $request->getText( 'wpPassword' );
$this->mRetype = $request->getText( 'wpRetype' );
$this->mDomain = $request->getText( 'wpDomain' );
@@ -83,9 +89,7 @@ class LoginForm {
$this->mPosted = $request->wasPosted();
$this->mCreateaccount = $request->getCheck( 'wpCreateaccount' );
$this->mCreateaccountMail = $request->getCheck( 'wpCreateaccountMail' )
- && $wgEnableEmail;
- $this->mMailmypassword = $request->getCheck( 'wpMailmypassword' )
- && $wgEnableEmail;
+ && $wgEnableEmail;
$this->mLoginattempt = $request->getCheck( 'wpLoginattempt' );
$this->mAction = $request->getVal( 'action' );
$this->mRemember = $request->getCheck( 'wpRemember' );
@@ -105,9 +109,9 @@ class LoginForm {
$this->mEmail = '';
}
if( !in_array( 'realname', $wgHiddenPrefs ) ) {
- $this->mRealName = $request->getText( 'wpRealName' );
+ $this->mRealName = $request->getText( 'wpRealName' );
} else {
- $this->mRealName = '';
+ $this->mRealName = '';
}
if( !$wgAuth->validDomain( $this->mDomain ) ) {
@@ -123,7 +127,15 @@ class LoginForm {
}
}
- function execute() {
+ public function execute( $par ) {
+ if ( session_id() == '' ) {
+ wfSetupSession();
+ }
+
+ if ( $par == 'signup' ) { # Check for [[Special:Userlogin/signup]]
+ $this->mType = 'signup';
+ }
+
if ( !is_null( $this->mCookieCheck ) ) {
$this->onCookieRedirectCheck( $this->mCookieCheck );
return;
@@ -132,8 +144,6 @@ class LoginForm {
return $this->addNewAccount();
} elseif ( $this->mCreateaccountMail ) {
return $this->addNewAccountMailPassword();
- } elseif ( $this->mMailmypassword ) {
- return $this->mailPassword();
} elseif ( ( 'submitlogin' == $this->mAction ) || $this->mLoginattempt ) {
return $this->processLogin();
}
@@ -167,8 +177,6 @@ class LoginForm {
$u->addNewUserLogEntry( true, $this->mReason );
$wgOut->setPageTitle( wfMsg( 'accmailtitle' ) );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->setArticleRelated( false );
if( !$result->isGood() ) {
$this->mainLoginForm( wfMsg( 'mailerror', $result->getWikiText() ) );
@@ -198,7 +206,7 @@ class LoginForm {
}
# Send out an email authentication message if needed
- if( $wgEmailAuthentication && User::isValidEmailAddr( $u->getEmail() ) ) {
+ if( $wgEmailAuthentication && Sanitizer::validateEmail( $u->getEmail() ) ) {
$status = $u->sendConfirmationMail();
if( $status->isGood() ) {
$wgOut->addWikiMsg( 'confirmemail_oncreate' );
@@ -216,6 +224,10 @@ class LoginForm {
if( $wgUser->isAnon() ) {
$wgUser = $u;
$wgUser->setCookies();
+ // This should set it for OutputPage and the Skin
+ // which is needed or the personal links will be
+ // wrong.
+ RequestContext::getMain()->setUser( $u );
wfRunHooks( 'AddNewAccount', array( $wgUser, false ) );
$wgUser->addNewUserLogEntry();
if( $this->hasSessionCookie() ) {
@@ -227,9 +239,7 @@ class LoginForm {
# Confirm that the account was created
$self = SpecialPage::getTitleFor( 'Userlogin' );
$wgOut->setPageTitle( wfMsgHtml( 'accountcreated' ) );
- $wgOut->setArticleRelated( false );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->addHTML( wfMsgWikiHtml( 'accountcreatedtext', $u->getName() ) );
+ $wgOut->addWikiMsg( 'accountcreatedtext', $u->getName() );
$wgOut->returnToMain( false, $self );
wfRunHooks( 'AddNewAccount', array( $u, false ) );
$u->addNewUserLogEntry( false, $this->mReason );
@@ -258,7 +268,8 @@ class LoginForm {
// create a local account and login as any domain user). We only need
// to check this for domains that aren't local.
if( 'local' != $this->mDomain && $this->mDomain != '' ) {
- if( !$wgAuth->canCreateAccounts() && ( !$wgAuth->userExists( $this->mName ) || !$wgAuth->authenticate( $this->mName, $this->mPassword ) ) ) {
+ if( !$wgAuth->canCreateAccounts() && ( !$wgAuth->userExists( $this->mUsername )
+ || !$wgAuth->authenticate( $this->mUsername, $this->mPassword ) ) ) {
$this->mainLoginForm( wfMsg( 'wrongpassword' ) );
return false;
}
@@ -272,7 +283,7 @@ class LoginForm {
# Request forgery checks.
if ( !self::getCreateaccountToken() ) {
self::setCreateaccountToken();
- $this->mainLoginForm( wfMsgExt( 'nocookiesnew', array( 'parseinline' ) ) );
+ $this->mainLoginForm( wfMsgExt( 'nocookiesfornew', array( 'parseinline' ) ) );
return false;
}
@@ -293,7 +304,7 @@ class LoginForm {
$wgOut->permissionRequired( 'createaccount' );
return false;
} elseif ( $wgUser->isBlockedFromCreateAccount() ) {
- $this->userBlockedMessage();
+ $this->userBlockedMessage( $wgUser->isBlockedFromCreateAccount() );
return false;
}
@@ -304,7 +315,7 @@ class LoginForm {
}
# Now create a dummy user ($u) and check if it is valid
- $name = trim( $this->mName );
+ $name = trim( $this->mUsername );
$u = User::newFromName( $name, 'creatable' );
if ( !is_object( $u ) ) {
$this->mainLoginForm( wfMsg( 'noname' ) );
@@ -325,7 +336,14 @@ class LoginForm {
$valid = $u->getPasswordValidity( $this->mPassword );
if ( $valid !== true ) {
if ( !$this->mCreateaccountMail ) {
- $this->mainLoginForm( wfMsgExt( $valid, array( 'parsemag' ), $wgMinimalPasswordLength ) );
+ if ( is_array( $valid ) ) {
+ $message = array_shift( $valid );
+ $params = $valid;
+ } else {
+ $message = $valid;
+ $params = array( $wgMinimalPasswordLength );
+ }
+ $this->mainLoginForm( wfMsgExt( $message, array( 'parsemag' ), $params ) );
return false;
} else {
# do not force a password for account creation by email
@@ -341,7 +359,7 @@ class LoginForm {
return false;
}
- if( !empty( $this->mEmail ) && !User::isValidEmailAddr( $this->mEmail ) ) {
+ if( !empty( $this->mEmail ) && !Sanitizer::validateEmail( $this->mEmail ) ) {
$this->mainLoginForm( wfMsg( 'invalidemailaddress' ) );
return false;
}
@@ -431,9 +449,9 @@ class LoginForm {
* creation.
*/
public function authenticateUserData() {
- global $wgUser, $wgAuth, $wgMemc;
+ global $wgUser, $wgAuth;
- if ( $this->mName == '' ) {
+ if ( $this->mUsername == '' ) {
return self::NO_NAME;
}
@@ -452,22 +470,9 @@ class LoginForm {
return self::NEED_TOKEN;
}
- global $wgPasswordAttemptThrottle;
-
- $throttleCount = 0;
- if ( is_array( $wgPasswordAttemptThrottle ) ) {
- $throttleKey = wfMemcKey( 'password-throttle', wfGetIP(), md5( $this->mName ) );
- $count = $wgPasswordAttemptThrottle['count'];
- $period = $wgPasswordAttemptThrottle['seconds'];
-
- $throttleCount = $wgMemc->get( $throttleKey );
- if ( !$throttleCount ) {
- $wgMemc->add( $throttleKey, 1, $period ); // start counter
- } elseif ( $throttleCount < $count ) {
- $wgMemc->incr( $throttleKey );
- } elseif ( $throttleCount >= $count ) {
- return self::THROTTLED;
- }
+ $throttleCount = self::incLoginThrottle( $this->mUsername );
+ if ( $throttleCount === true ) {
+ return self::THROTTLED;
}
// Validate the login token
@@ -481,16 +486,16 @@ class LoginForm {
// creates the user in the database. Until we load $wgUser, checking
// for user existence using User::newFromName($name)->getId() below
// will effectively be using stale data.
- if ( $wgUser->getName() === $this->mName ) {
- wfDebug( __METHOD__ . ": already logged in as {$this->mName}\n" );
+ if ( $wgUser->getName() === $this->mUsername ) {
+ wfDebug( __METHOD__ . ": already logged in as {$this->mUsername}\n" );
return self::SUCCESS;
}
- $this->mExtUser = ExternalUser::newFromName( $this->mName );
+ $this->mExtUser = ExternalUser::newFromName( $this->mUsername );
# TODO: Allow some magic here for invalid external names, e.g., let the
# user choose a different wiki name.
- $u = User::newFromName( $this->mName );
+ $u = User::newFromName( $this->mUsername );
if( !( $u instanceof User ) || !User::isUsableName( $u->getName() ) ) {
return self::ILLEGAL;
}
@@ -518,7 +523,7 @@ class LoginForm {
// Give general extensions, such as a captcha, a chance to abort logins
$abort = self::ABORTED;
- if( !wfRunHooks( 'AbortLogin', array( $u, $this->mPassword, &$abort ) ) ) {
+ if( !wfRunHooks( 'AbortLogin', array( $u, $this->mPassword, &$abort, &$this->mAbortLoginErrorMsg ) ) ) {
return $abort;
}
@@ -559,10 +564,14 @@ class LoginForm {
} else {
$wgAuth->updateUser( $u );
$wgUser = $u;
+ // This should set it for OutputPage and the Skin
+ // which is needed or the personal links will be
+ // wrong.
+ RequestContext::getMain()->setUser( $u );
// Please reset throttle for successful logins, thanks!
- if( $throttleCount ) {
- $wgMemc->delete( $throttleKey );
+ if ( $throttleCount ) {
+ self::clearLoginThrottle( $this->mUsername );
}
if ( $isAutoCreated ) {
@@ -576,9 +585,52 @@ class LoginForm {
return $retval;
}
+ /*
+ * Increment the login attempt throttle hit count for the (username,current IP)
+ * tuple unless the throttle was already reached.
+ * @param $username string The user name
+ * @return Bool|Integer The integer hit count or True if it is already at the limit
+ */
+ public static function incLoginThrottle( $username ) {
+ global $wgPasswordAttemptThrottle, $wgMemc;
+
+ $throttleCount = 0;
+ if ( is_array( $wgPasswordAttemptThrottle ) ) {
+ $throttleKey = wfMemcKey( 'password-throttle', wfGetIP(), md5( $username ) );
+ $count = $wgPasswordAttemptThrottle['count'];
+ $period = $wgPasswordAttemptThrottle['seconds'];
+
+ $throttleCount = $wgMemc->get( $throttleKey );
+ if ( !$throttleCount ) {
+ $wgMemc->add( $throttleKey, 1, $period ); // start counter
+ } elseif ( $throttleCount < $count ) {
+ $wgMemc->incr( $throttleKey );
+ } elseif ( $throttleCount >= $count ) {
+ return true;
+ }
+ }
+
+ return $throttleCount;
+ }
+
+ /*
+ * Clear the login attempt throttle hit count for the (username,current IP) tuple.
+ * @param $username string The user name
+ * @return void
+ */
+ public static function clearLoginThrottle( $username ) {
+ global $wgMemc;
+
+ $throttleKey = wfMemcKey( 'password-throttle', wfGetIP(), md5( $username ) );
+ $wgMemc->delete( $throttleKey );
+ }
+
/**
* Attempt to automatically create a user on login. Only succeeds if there
* is an external authentication method which allows it.
+ *
+ * @param $user User
+ *
* @return integer Status code
*/
function attemptAutoCreate( $user ) {
@@ -618,6 +670,14 @@ class LoginForm {
}
}
+ $abortError = '';
+ if( !wfRunHooks( 'AbortAutoAccount', array( $user, &$abortError ) ) ) {
+ // Hook point to add extra creation throttles and blocks
+ wfDebug( "LoginForm::attemptAutoCreate: a hook blocked creation: $abortError\n" );
+ $this->mAbortLoginErrorMsg = $abortError;
+ return self::ABORTED;
+ }
+
wfDebug( __METHOD__ . ": creating account\n" );
$this->initUser( $user, true );
return self::SUCCESS;
@@ -639,7 +699,7 @@ class LoginForm {
self::clearLoginToken();
// Reset the throttle
- $key = wfMemcKey( 'password-throttle', wfGetIP(), md5( $this->mName ) );
+ $key = wfMemcKey( 'password-throttle', wfGetIP(), md5( $this->mUsername ) );
global $wgMemc;
$wgMemc->delete( $key );
@@ -657,7 +717,7 @@ class LoginForm {
break;
case self::NEED_TOKEN:
- $this->mainLoginForm( wfMsgExt( 'nocookieslogin', array( 'parseinline' ) ) );
+ $this->mainLoginForm( wfMsgExt( 'nocookiesforlogin', array( 'parseinline' ) ) );
break;
case self::WRONG_TOKEN:
$this->mainLoginForm( wfMsg( 'sessionfailure' ) );
@@ -671,9 +731,11 @@ class LoginForm {
break;
case self::NOT_EXISTS:
if( $wgUser->isAllowed( 'createaccount' ) ) {
- $this->mainLoginForm( wfMsgWikiHtml( 'nosuchuser', htmlspecialchars( $this->mName ) ) );
+ $this->mainLoginForm( wfMsgExt( 'nosuchuser', 'parseinline',
+ wfEscapeWikiText( $this->mUsername ) ) );
} else {
- $this->mainLoginForm( wfMsg( 'nosuchusershort', htmlspecialchars( $this->mName ) ) );
+ $this->mainLoginForm( wfMsg( 'nosuchusershort',
+ wfEscapeWikiText( $this->mUsername ) ) );
}
break;
case self::WRONG_PASS:
@@ -686,14 +748,17 @@ class LoginForm {
$this->resetLoginForm( wfMsg( 'resetpass_announce' ) );
break;
case self::CREATE_BLOCKED:
- $this->userBlockedMessage();
+ $this->userBlockedMessage( $wgUser->mBlock );
break;
case self::THROTTLED:
$this->mainLoginForm( wfMsg( 'login-throttled' ) );
break;
case self::USER_BLOCKED:
$this->mainLoginForm( wfMsgExt( 'login-userblocked',
- array( 'parsemag', 'escape' ), $this->mName ) );
+ array( 'parsemag', 'escape' ), $this->mUsername ) );
+ break;
+ case self::ABORTED:
+ $this->mainLoginForm( wfMsg( $this->mAbortLoginErrorMsg ) );
break;
default:
throw new MWException( 'Unhandled case value' );
@@ -703,100 +768,11 @@ class LoginForm {
function resetLoginForm( $error ) {
global $wgOut;
$wgOut->addHTML( Xml::element('p', array( 'class' => 'error' ), $error ) );
- $reset = new SpecialResetpass();
+ $reset = new SpecialChangePassword();
$reset->execute( null );
}
/**
- * @private
- */
- function mailPassword() {
- global $wgUser, $wgOut, $wgAuth;
-
- if ( wfReadOnly() ) {
- $wgOut->readOnlyPage();
- return false;
- }
-
- if( !$wgAuth->allowPasswordChange() ) {
- $this->mainLoginForm( wfMsg( 'resetpass_forbidden' ) );
- return;
- }
-
- # Check against blocked IPs so blocked users can't flood admins
- # with password resets
- if( $wgUser->isBlocked() ) {
- $this->mainLoginForm( wfMsg( 'blocked-mailpassword' ) );
- return;
- }
-
- # Check for hooks
- $error = null;
- if ( !wfRunHooks( 'UserLoginMailPassword', array( $this->mName, &$error ) ) ) {
- $this->mainLoginForm( $error );
- return;
- }
-
- # If the user doesn't have a login token yet, set one.
- if ( !self::getLoginToken() ) {
- self::setLoginToken();
- $this->mainLoginForm( wfMsg( 'sessionfailure' ) );
- return;
- }
-
- # If the user didn't pass a login token, tell them we need one
- if ( !$this->mToken ) {
- $this->mainLoginForm( wfMsg( 'sessionfailure' ) );
- return;
- }
-
- # Check against the rate limiter
- if( $wgUser->pingLimiter( 'mailpassword' ) ) {
- $wgOut->rateLimited();
- return;
- }
-
- if ( $this->mName == '' ) {
- $this->mainLoginForm( wfMsg( 'noname' ) );
- return;
- }
- $u = User::newFromName( $this->mName );
- if( !$u instanceof User ) {
- $this->mainLoginForm( wfMsg( 'noname' ) );
- return;
- }
- if ( 0 == $u->getID() ) {
- $this->mainLoginForm( wfMsgWikiHtml( 'nosuchuser', htmlspecialchars( $u->getName() ) ) );
- return;
- }
-
- # Validate the login token
- if ( $this->mToken !== self::getLoginToken() ) {
- $this->mainLoginForm( wfMsg( 'sessionfailure' ) );
- return;
- }
-
- # Check against password throttle
- if ( $u->isPasswordReminderThrottled() ) {
- global $wgPasswordReminderResendTime;
- # Round the time in hours to 3 d.p., in case someone is specifying
- # minutes or seconds.
- $this->mainLoginForm( wfMsgExt( 'throttled-mailpassword', array( 'parsemag' ),
- round( $wgPasswordReminderResendTime, 3 ) ) );
- return;
- }
-
- $result = $this->mailPasswordInternal( $u, true, 'passwordremindertitle', 'passwordremindertext' );
- if( $result->isGood() ) {
- $this->mainLoginForm( wfMsg( 'passwordsent', $u->getName() ), 'success' );
- self::clearLoginToken();
- } else {
- $this->mainLoginForm( $result->getWikiText( 'mailerror' ) );
- }
- }
-
-
- /**
* @param $u User object
* @param $throttle Boolean
* @param $emailTitle String: message name of email title
@@ -872,9 +848,14 @@ class LoginForm {
global $wgUser;
# Run any hooks; display injected HTML
$injected_html = '';
+ $welcome_creation_msg = 'welcomecreation';
+
wfRunHooks( 'UserLoginComplete', array( &$wgUser, &$injected_html ) );
- $this->displaySuccessfulLogin( 'welcomecreation', $injected_html );
+ //let any extensions change what message is shown
+ wfRunHooks( 'BeforeWelcomeCreation', array( &$welcome_creation_msg, &$injected_html ) );
+
+ $this->displaySuccessfulLogin( $welcome_creation_msg, $injected_html );
}
/**
@@ -884,9 +865,10 @@ class LoginForm {
global $wgOut, $wgUser;
$wgOut->setPageTitle( wfMsg( 'loginsuccesstitle' ) );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->setArticleRelated( false );
- $wgOut->addWikiMsg( $msgname, $wgUser->getName() );
+ if( $msgname ){
+ $wgOut->addWikiMsg( $msgname, wfEscapeWikiText( $wgUser->getName() ) );
+ }
+
$wgOut->addHTML( $injected_html );
if ( !empty( $this->mReturnTo ) ) {
@@ -896,9 +878,15 @@ class LoginForm {
}
}
- /** */
- function userBlockedMessage() {
- global $wgOut, $wgUser;
+ /**
+ * Output a message that informs the user that they cannot create an account because
+ * there is a block on them or their IP which prevents account creation. Note that
+ * User::isBlockedFromCreateAccount(), which gets this block, ignores the 'hardblock'
+ * setting on blocks (bug 13611).
+ * @param $block Block the block causing this error
+ */
+ function userBlockedMessage( Block $block ) {
+ global $wgOut;
# Let's be nice about this, it's likely that this feature will be used
# for blocking large numbers of innocent people, e.g. range blocks on
@@ -909,17 +897,19 @@ class LoginForm {
# out.
$wgOut->setPageTitle( wfMsg( 'cantcreateaccounttitle' ) );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->setArticleRelated( false );
-
- $ip = wfGetIP();
- $blocker = User::whoIs( $wgUser->mBlock->mBy );
- $block_reason = $wgUser->mBlock->mReason;
+ $block_reason = $block->mReason;
if ( strval( $block_reason ) === '' ) {
$block_reason = wfMsg( 'blockednoreason' );
}
- $wgOut->addWikiMsg( 'cantcreateaccount-text', $ip, $block_reason, $blocker );
+
+ $wgOut->addWikiMsg(
+ 'cantcreateaccount-text',
+ $block->getTarget(),
+ $block_reason,
+ $block->getBlocker()->getName()
+ );
+
$wgOut->returnToMain( false );
}
@@ -927,10 +917,11 @@ class LoginForm {
* @private
*/
function mainLoginForm( $msg, $msgtype = 'error' ) {
- global $wgUser, $wgOut, $wgHiddenPrefs, $wgEnableEmail;
+ global $wgUser, $wgOut, $wgHiddenPrefs;
+ global $wgEnableEmail, $wgEnableUserEmail;
global $wgRequest, $wgLoginLanguageSelector;
global $wgAuth, $wgEmailConfirmToEdit, $wgCookieExpiration;
- global $wgSecureLogin;
+ global $wgSecureLogin, $wgPasswordResetRoutes;
$titleObj = SpecialPage::getTitleFor( 'Userlogin' );
@@ -942,7 +933,7 @@ class LoginForm {
$wgOut->readOnlyPage();
return;
} elseif ( $wgUser->isBlockedFromCreateAccount() ) {
- $this->userBlockedMessage();
+ $this->userBlockedMessage( $wgUser->isBlockedFromCreateAccount() );
return;
} elseif ( count( $permErrors = $titleObj->getUserPermissionsErrors( 'createaccount', $wgUser, true ) )>0 ) {
$wgOut->showPermissionsErrorPage( $permErrors, 'createaccount' );
@@ -950,11 +941,11 @@ class LoginForm {
}
}
- if ( $this->mName == '' ) {
+ if ( $this->mUsername == '' ) {
if ( $wgUser->isLoggedIn() ) {
- $this->mName = $wgUser->getName();
+ $this->mUsername = $wgUser->getName();
} else {
- $this->mName = $wgRequest->getCookie( 'UserName' );
+ $this->mUsername = $wgRequest->getCookie( 'UserName' );
}
}
@@ -996,8 +987,12 @@ class LoginForm {
$template->set( 'link', '' );
}
+ $resetLink = $this->mType == 'signup'
+ ? null
+ : is_array( $wgPasswordResetRoutes ) && in_array( true, array_values( $wgPasswordResetRoutes ) );
+
$template->set( 'header', '' );
- $template->set( 'name', $this->mName );
+ $template->set( 'name', $this->mUsername );
$template->set( 'password', $this->mPassword );
$template->set( 'retype', $this->mRetype );
$template->set( 'email', $this->mEmail );
@@ -1012,7 +1007,9 @@ class LoginForm {
$template->set( 'userealname', !in_array( 'realname', $wgHiddenPrefs ) );
$template->set( 'useemail', $wgEnableEmail );
$template->set( 'emailrequired', $wgEmailConfirmToEdit );
+ $template->set( 'emailothers', $wgEnableUserEmail );
$template->set( 'canreset', $wgAuth->allowPasswordChange() );
+ $template->set( 'resetlink', $resetLink );
$template->set( 'canremember', ( $wgCookieExpiration > 0 ) );
$template->set( 'usereason', $wgUser->isLoggedIn() );
$template->set( 'remember', $wgUser->getOption( 'rememberpassword' ) || $this->mRemember );
@@ -1037,6 +1034,22 @@ class LoginForm {
if( $this->mLanguage )
$template->set( 'uselang', $this->mLanguage );
}
+
+ // Use loginend-https for HTTPS requests if it's not blank, loginend otherwise
+ // Ditto for signupend
+ $usingHTTPS = WebRequest::detectProtocol() == 'https';
+ $loginendHTTPS = wfMessage( 'loginend-https' );
+ $signupendHTTPS = wfMessage( 'signupend-https' );
+ if ( $usingHTTPS && !$loginendHTTPS->isBlank() ) {
+ $template->set( 'loginend', $loginendHTTPS->parse() );
+ } else {
+ $template->set( 'loginend', wfMessage( 'loginend' )->parse() );
+ }
+ if ( $usingHTTPS && !$signupendHTTPS->isBlank() ) {
+ $template->set( 'signupend', $signupendHTTPS->parse() );
+ } else {
+ $template->set( 'signupend', wfMessage( 'signupend' )->parse() );
+ }
// Give authentication and captcha plugins a chance to modify the form
$wgAuth->modifyUITemplate( $template, $this->mType );
@@ -1053,22 +1066,24 @@ class LoginForm {
$wgOut->setPageTitle( wfMsg( 'userloginnocreate' ) );
}
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- $wgOut->setArticleRelated( false );
$wgOut->disallowUserJs(); // just in case...
$wgOut->addTemplate( $template );
}
/**
* @private
+ *
+ * @param $user User
+ *
+ * @return Boolean
*/
function showCreateOrLoginLink( &$user ) {
if( $this->mType == 'signup' ) {
- return( true );
+ return true;
} elseif( $user->isAllowed( 'createaccount' ) ) {
- return( true );
+ return true;
} else {
- return( false );
+ return false;
}
}
@@ -1186,15 +1201,15 @@ class LoginForm {
function makeLanguageSelector() {
global $wgLang;
- $msg = wfMsgForContent( 'loginlanguagelinks' );
- if( $msg != '' && !wfEmptyMsg( 'loginlanguagelinks', $msg ) ) {
- $langs = explode( "\n", $msg );
+ $msg = wfMessage( 'loginlanguagelinks' )->inContentLanguage();
+ if( !$msg->isBlank() ) {
+ $langs = explode( "\n", $msg->text() );
$links = array();
foreach( $langs as $lang ) {
$lang = trim( $lang, '* ' );
$parts = explode( '|', $lang );
if ( count( $parts ) >= 2 ) {
- $links[] = $this->makeLanguageSelectorLink( $parts[0], $parts[1] );
+ $links[] = $this->makeLanguageSelectorLink( $parts[0], trim( $parts[1] ) );
}
}
return count( $links ) > 0 ? wfMsgHtml( 'loginlanguagelabel', $wgLang->pipeList( $links ) ) : '';
@@ -1211,7 +1226,6 @@ class LoginForm {
* @param $lang Language code
*/
function makeLanguageSelectorLink( $text, $lang ) {
- global $wgUser;
$self = SpecialPage::getTitleFor( 'Userlogin' );
$attr = array( 'uselang' => $lang );
if( $this->mType == 'signup' ) {
@@ -1220,8 +1234,7 @@ class LoginForm {
if( $this->mReturnTo ) {
$attr['returnto'] = $this->mReturnTo;
}
- $skin = $wgUser->getSkin();
- return $skin->linkKnown(
+ return Linker::linkKnown(
$self,
htmlspecialchars( $text ),
array(),
diff --git a/includes/specials/SpecialUserrights.php b/includes/specials/SpecialUserrights.php
index 6ea8668b..4de048c0 100644
--- a/includes/specials/SpecialUserrights.php
+++ b/includes/specials/SpecialUserrights.php
@@ -41,7 +41,7 @@ class UserrightsPage extends SpecialPage {
return true;
}
- public function userCanExecute( $user ) {
+ public function userCanExecute( User $user ) {
return $this->userCanChangeRights( $user, false );
}
@@ -98,7 +98,7 @@ class UserrightsPage extends SpecialPage {
}
if( !$this->userCanChangeRights( $wgUser, true ) ) {
- // fixme... there may be intermediate groups we can mention.
+ // @todo FIXME: There may be intermediate groups we can mention.
$wgOut->showPermissionsErrorPage( array( array(
$wgUser->isAnon()
? 'userrights-nologin'
@@ -112,7 +112,7 @@ class UserrightsPage extends SpecialPage {
}
$this->outputHeader();
-
+ $wgOut->addModuleStyles( 'mediawiki.special' );
$this->setHeaders();
// show the general form
@@ -222,7 +222,7 @@ class UserrightsPage extends SpecialPage {
$user->removeGroup( $group );
}
}
- if( $add ) {
+ if( $add ) {
$newGroups = array_merge( $newGroups, $add );
foreach( $add as $group ) {
$user->addGroup( $group );
@@ -317,7 +317,7 @@ class UserrightsPage extends SpecialPage {
return Status::newFatal( 'nouserspecified' );
}
- if( $name{0} == '#' ) {
+ if( $name[0] == '#' ) {
// Numeric ID can be specified...
// We'll do a lookup for the name internally.
$id = intval( substr( $name, 1 ) );
@@ -414,7 +414,7 @@ class UserrightsPage extends SpecialPage {
* @param $groups Array: Array of groups the user is in
*/
protected function showEditUserGroupsForm( $user, $groups ) {
- global $wgOut, $wgUser, $wgLang;
+ global $wgOut, $wgUser, $wgLang, $wgRequest;
$list = array();
foreach( $groups as $group ) {
@@ -429,12 +429,14 @@ class UserrightsPage extends SpecialPage {
}
$grouplist = '';
- if( count( $list ) > 0 ) {
- $grouplist = wfMsgHtml( 'userrights-groupsmember' );
+ $count = count( $list );
+ if( $count > 0 ) {
+ $grouplist = wfMessage( 'userrights-groupsmember', $count)->parse();
$grouplist = '<p>' . $grouplist . ' ' . $wgLang->listToText( $list ) . "</p>\n";
}
- if( count( $autolist ) > 0 ) {
- $autogrouplistintro = wfMsgHtml( 'userrights-groupsmember-auto' );
+ $count = count( $autolist );
+ if( $count > 0 ) {
+ $autogrouplistintro = wfMessage( 'userrights-groupsmember-auto', $count)->parse();
$grouplist .= '<p>' . $autogrouplistintro . ' ' . $wgLang->listToText( $autolist ) . "</p>\n";
}
$wgOut->addHTML(
@@ -453,14 +455,15 @@ class UserrightsPage extends SpecialPage {
Xml::label( wfMsg( 'userrights-reason' ), 'wpReason' ) .
"</td>
<td class='mw-input'>" .
- Xml::input( 'user-reason', 60, false, array( 'id' => 'wpReason', 'maxlength' => 255 ) ) .
+ Xml::input( 'user-reason', 60, $wgRequest->getVal( 'user-reason', false ),
+ array( 'id' => 'wpReason', 'maxlength' => 255 ) ) .
"</td>
</tr>
<tr>
<td></td>
<td class='mw-submit'>" .
Xml::submitButton( wfMsg( 'saveusergroups' ),
- array( 'name' => 'saveusergroups' ) + $wgUser->getSkin()->tooltipAndAccessKeyAttribs( 'userrights-set' ) ) .
+ array( 'name' => 'saveusergroups' ) + Linker::tooltipAndAccesskeyAttribs( 'userrights-set' ) ) .
"</td>
</tr>" .
Xml::closeElement( 'table' ) . "\n" .
@@ -534,7 +537,7 @@ class UserrightsPage extends SpecialPage {
foreach( $columns as $name => $column ) {
if( $column === array() )
continue;
- $ret .= Xml::element( 'th', null, wfMsg( 'userrights-' . $name . '-col' ) );
+ $ret .= Xml::element( 'th', null, wfMessage( 'userrights-' . $name . '-col', count( $column ) )->text() );
}
$ret.= "</tr>\n<tr>\n";
foreach( $columns as $column ) {
diff --git a/includes/specials/SpecialVersion.php b/includes/specials/SpecialVersion.php
index 101823db..0331f056 100644
--- a/includes/specials/SpecialVersion.php
+++ b/includes/specials/SpecialVersion.php
@@ -29,15 +29,15 @@
* @ingroup SpecialPage
*/
class SpecialVersion extends SpecialPage {
-
+
protected $firstExtOpened = false;
protected static $extensionTypes = false;
-
+
protected static $viewvcUrls = array(
'svn+ssh://svn.wikimedia.org/svnroot/mediawiki' => 'http://svn.wikimedia.org/viewvc/mediawiki',
'http://svn.wikimedia.org/svnroot/mediawiki' => 'http://svn.wikimedia.org/viewvc/mediawiki',
- # Doesn't work at the time of writing but maybe some day:
+ # Doesn't work at the time of writing but maybe some day:
'https://svn.wikimedia.org/viewvc/mediawiki' => 'http://svn.wikimedia.org/viewvc/mediawiki',
);
@@ -49,30 +49,33 @@ class SpecialVersion extends SpecialPage {
* main()
*/
public function execute( $par ) {
- global $wgOut, $wgSpecialVersionShowHooks, $wgContLang;
-
+ global $wgOut, $wgSpecialVersionShowHooks, $wgRequest;
+
$this->setHeaders();
$this->outputHeader();
$wgOut->allowClickjacking();
- $wgOut->addHTML( Xml::openElement( 'div',
- array( 'dir' => $wgContLang->getDir() ) ) );
- $text =
+ $text =
$this->getMediaWikiCredits() .
$this->softwareInformation() .
$this->getExtensionCredits();
if ( $wgSpecialVersionShowHooks ) {
$text .= $this->getWgHooks();
}
-
+
$wgOut->addWikiText( $text );
$wgOut->addHTML( $this->IPInfo() );
- $wgOut->addHTML( '</div>' );
+
+ if ( $wgRequest->getVal( 'easteregg' ) ) {
+ if ( $this->showEasterEgg() ) {
+ // TODO: put something interesting here
+ }
+ }
}
/**
* Returns wiki text showing the license information.
- *
+ *
* @return string
*/
private static function getMediaWikiCredits() {
@@ -113,7 +116,7 @@ class SpecialVersion extends SpecialPage {
/**
* Returns wiki text showing the third party software versions (apache, php, mysql).
- *
+ *
* @return string
*/
static function softwareInformation() {
@@ -136,14 +139,14 @@ class SpecialVersion extends SpecialPage {
<th>" . wfMsg( 'version-software-product' ) . "</th>
<th>" . wfMsg( 'version-software-version' ) . "</th>
</tr>\n";
-
+
foreach( $software as $name => $version ) {
$out .= "<tr>
<td>" . $name . "</td>
- <td>" . $version . "</td>
+ <td class=\"ltr\">" . $version . "</td>
</tr>\n";
}
-
+
return $out . Xml::closeElement( 'table' );
}
@@ -163,8 +166,8 @@ class SpecialVersion extends SpecialPage {
$version = "$wgVersion (r{$info['checkout-rev']})";
} else {
$version = $wgVersion . ' ' .
- wfMsg(
- 'version-svn-revision',
+ wfMsg(
+ 'version-svn-revision',
isset( $info['directory-rev'] ) ? $info['directory-rev'] : '',
$info['checkout-rev']
);
@@ -173,7 +176,7 @@ class SpecialVersion extends SpecialPage {
wfProfileOut( __METHOD__ );
return $version;
}
-
+
/**
* Return a wikitext-formatted string of the MediaWiki version with a link to
* the SVN revision if available.
@@ -183,16 +186,16 @@ class SpecialVersion extends SpecialPage {
public static function getVersionLinked() {
global $wgVersion, $IP;
wfProfileIn( __METHOD__ );
-
+
$info = self::getSvnInfo( $IP );
-
+
if ( isset( $info['checkout-rev'] ) ) {
$linkText = wfMsg(
'version-svn-revision',
isset( $info['directory-rev'] ) ? $info['directory-rev'] : '',
$info['checkout-rev']
);
-
+
if ( isset( $info['viewvc-url'] ) ) {
$version = "$wgVersion [{$info['viewvc-url']} $linkText]";
} else {
@@ -201,7 +204,7 @@ class SpecialVersion extends SpecialPage {
} else {
$version = $wgVersion;
}
-
+
wfProfileOut( __METHOD__ );
return $version;
}
@@ -209,13 +212,13 @@ class SpecialVersion extends SpecialPage {
/**
* Returns an array with the base extension types.
* Type is stored as array key, the message as array value.
- *
+ *
* TODO: ideally this would return all extension types, including
* those added by SpecialVersionExtensionTypes. This is not possible
* since this hook is passing along $this though.
- *
+ *
* @since 1.17
- *
+ *
* @return array
*/
public static function getExtensionTypes() {
@@ -225,44 +228,46 @@ class SpecialVersion extends SpecialPage {
'parserhook' => wfMsg( 'version-parserhooks' ),
'variable' => wfMsg( 'version-variables' ),
'media' => wfMsg( 'version-mediahandlers' ),
+ 'antispam' => wfMsg( 'version-antispam' ),
'skin' => wfMsg( 'version-skins' ),
+ 'api' => wfMsg( 'version-api' ),
'other' => wfMsg( 'version-other' ),
);
-
+
wfRunHooks( 'ExtensionTypes', array( &self::$extensionTypes ) );
}
-
+
return self::$extensionTypes;
}
-
+
/**
* Returns the internationalized name for an extension type.
- *
+ *
* @since 1.17
- *
+ *
* @param $type String
- *
+ *
* @return string
*/
public static function getExtensionTypeName( $type ) {
$types = self::getExtensionTypes();
return isset( $types[$type] ) ? $types[$type] : $types['other'];
}
-
+
/**
* Generate wikitext showing extensions name, URL, author and description.
*
* @return String: Wikitext
*/
function getExtensionCredits() {
- global $wgExtensionCredits, $wgExtensionFunctions, $wgParser, $wgSkinExtensionFunctions;
+ global $wgExtensionCredits, $wgExtensionFunctions, $wgParser;
- if ( !count( $wgExtensionCredits ) && !count( $wgExtensionFunctions ) && !count( $wgSkinExtensionFunctions ) ) {
+ if ( !count( $wgExtensionCredits ) && !count( $wgExtensionFunctions ) ) {
return '';
}
$extensionTypes = self::getExtensionTypes();
-
+
/**
* @deprecated as of 1.17, use hook ExtensionTypes instead.
*/
@@ -271,25 +276,25 @@ class SpecialVersion extends SpecialPage {
$out = Xml::element( 'h2', array( 'id' => 'mw-version-ext' ), wfMsg( 'version-extensions' ) ) .
Xml::openElement( 'table', array( 'class' => 'wikitable', 'id' => 'sv-ext' ) );
- // Make sure the 'other' type is set to an array.
+ // Make sure the 'other' type is set to an array.
if ( !array_key_exists( 'other', $wgExtensionCredits ) ) {
$wgExtensionCredits['other'] = array();
}
-
+
// Find all extensions that do not have a valid type and give them the type 'other'.
foreach ( $wgExtensionCredits as $type => $extensions ) {
if ( !array_key_exists( $type, $extensionTypes ) ) {
$wgExtensionCredits['other'] = array_merge( $wgExtensionCredits['other'], $extensions );
}
}
-
+
// Loop through the extension categories to display their extensions in the list.
foreach ( $extensionTypes as $type => $message ) {
if ( $type != 'other' ) {
$out .= $this->getExtensionCategory( $type, $message );
}
}
-
+
// We want the 'other' type to be last in the list.
$out .= $this->getExtensionCategory( 'other', $extensionTypes['other'] );
@@ -309,36 +314,32 @@ class SpecialVersion extends SpecialPage {
$out .= '<tr><td colspan="4">' . $this->listToText( $tags ). "</td></tr>\n";
}
- if( count( $fhooks = $wgParser->getFunctionHooks() ) ) {
+ $fhooks = $wgParser->getFunctionHooks();
+ if( count( $fhooks ) ) {
$out .= $this->openExtType( wfMsg( 'version-parser-function-hooks' ), 'parser-function-hooks' );
$out .= '<tr><td colspan="4">' . $this->listToText( $fhooks ) . "</td></tr>\n";
}
- if ( count( $wgSkinExtensionFunctions ) ) {
- $out .= $this->openExtType( wfMsg( 'version-skin-extension-functions' ), 'skin-extension-functions' );
- $out .= '<tr><td colspan="4">' . $this->listToText( $wgSkinExtensionFunctions ) . "</td></tr>\n";
- }
-
$out .= Xml::closeElement( 'table' );
-
+
return $out;
}
-
+
/**
* Creates and returns the HTML for a single extension category.
- *
+ *
* @since 1.17
- *
+ *
* @param $type String
* @param $message String
- *
+ *
* @return string
*/
protected function getExtensionCategory( $type, $message ) {
- global $wgExtensionCredits;
-
+ global $wgExtensionCredits;
+
$out = '';
-
+
if ( array_key_exists( $type, $wgExtensionCredits ) && count( $wgExtensionCredits[$type] ) > 0 ) {
$out .= $this->openExtType( $message, 'credits-' . $type );
@@ -350,7 +351,7 @@ class SpecialVersion extends SpecialPage {
}
return $out;
- }
+ }
/**
* Callback to sort extensions by type.
@@ -368,14 +369,14 @@ class SpecialVersion extends SpecialPage {
/**
* Creates and formats the creidts for a single extension and returns this.
- *
+ *
* @param $extension Array
- *
+ *
* @return string
*/
function getCreditsForExtension( array $extension ) {
$name = isset( $extension['name'] ) ? $extension['name'] : '[no name]';
-
+
if ( isset( $extension['path'] ) ) {
$svnInfo = self::getSvnInfo( dirname($extension['path']) );
$directoryRev = isset( $svnInfo['directory-rev'] ) ? $svnInfo['directory-rev'] : null;
@@ -393,10 +394,10 @@ class SpecialVersion extends SpecialPage {
} else {
$mainLink = $name;
}
-
+
if ( isset( $extension['version'] ) ) {
- $versionText = '<span class="mw-version-ext-version">' .
- wfMsg( 'version-version', $extension['version'] ) .
+ $versionText = '<span class="mw-version-ext-version">' .
+ wfMsg( 'version-version', $extension['version'] ) .
'</span>';
} else {
$versionText = '';
@@ -412,22 +413,19 @@ class SpecialVersion extends SpecialPage {
# Make description text.
$description = isset ( $extension['description'] ) ? $extension['description'] : '';
-
+
if( isset ( $extension['descriptionmsg'] ) ) {
# Look for a localized description.
$descriptionMsg = $extension['descriptionmsg'];
-
+
if( is_array( $descriptionMsg ) ) {
$descriptionMsgKey = $descriptionMsg[0]; // Get the message key
array_shift( $descriptionMsg ); // Shift out the message key to get the parameters only
array_map( "htmlspecialchars", $descriptionMsg ); // For sanity
- $msg = wfMsg( $descriptionMsgKey, $descriptionMsg );
+ $description = wfMsg( $descriptionMsgKey, $descriptionMsg );
} else {
- $msg = wfMsg( $descriptionMsg );
+ $description = wfMsg( $descriptionMsg );
}
- if ( !wfEmptyMsg( $descriptionMsg, $msg ) && $msg != '' ) {
- $description = $msg;
- }
}
if ( $svnText !== false ) {
@@ -438,12 +436,12 @@ class SpecialVersion extends SpecialPage {
$extNameVer = "<tr>
<td colspan=\"2\"><em>$mainLink $versionText</em></td>";
}
-
+
$author = isset ( $extension['author'] ) ? $extension['author'] : array();
$extDescAuthor = "<td>$description</td>
- <td>" . $this->listToText( (array)$author, false ) . "</td>
+ <td>" . $this->listAuthors( $author, false ) . "</td>
</tr>\n";
-
+
return $extNameVer . $extDescAuthor;
}
@@ -466,11 +464,12 @@ class SpecialVersion extends SpecialPage {
<th>" . wfMsg( 'version-hook-subscribedby' ) . "</th>
</tr>\n";
- foreach ( $myWgHooks as $hook => $hooks )
+ foreach ( $myWgHooks as $hook => $hooks ) {
$ret .= "<tr>
<td>$hook</td>
<td>" . $this->listToText( $hooks ) . "</td>
</tr>\n";
+ }
$ret .= Xml::closeElement( 'table' );
return $ret;
@@ -487,13 +486,13 @@ class SpecialVersion extends SpecialPage {
$out .= '<tr class="sv-space">' . Html::element( 'td', $opt ) . "</tr>\n";
}
$this->firstExtOpened = true;
-
+
if( $name ) {
$opt['id'] = "sv-$name";
}
$out .= "<tr>" . Xml::element( 'th', $opt, $text ) . "</tr>\n";
-
+
return $out;
}
@@ -509,11 +508,29 @@ class SpecialVersion extends SpecialPage {
}
/**
+ * Return a formatted unsorted list of authors
+ *
+ * @param $authors mixed: string or array of strings
+ * @return String: HTML fragment
+ */
+ function listAuthors( $authors ) {
+ $list = array();
+ foreach( (array)$authors as $item ) {
+ if( $item == '...' ) {
+ $list[] = wfMsg( 'version-poweredby-others' );
+ } else {
+ $list[] = $item;
+ }
+ }
+ return $this->listToText( $list, false );
+ }
+
+ /**
* Convert an array of items into a list for display.
*
* @param $list Array of elements to display
* @param $sort Boolean: whether to sort the items in $list
- *
+ *
* @return String
*/
function listToText( $list, $sort = true ) {
@@ -538,29 +555,31 @@ class SpecialVersion extends SpecialPage {
*
* @param $list Mixed: will convert an array to string if given and return
* the paramater unaltered otherwise
- *
+ *
* @return Mixed
*/
- static function arrayToString( $list ) {
- if( is_array( $list ) && count( $list ) == 1 )
+ public static function arrayToString( $list ) {
+ if( is_array( $list ) && count( $list ) == 1 ) {
$list = $list[0];
+ }
if( is_object( $list ) ) {
$class = get_class( $list );
return "($class)";
} elseif ( !is_array( $list ) ) {
return $list;
} else {
- if( is_object( $list[0] ) )
+ if( is_object( $list[0] ) ) {
$class = get_class( $list[0] );
- else
+ } else {
$class = $list[0];
+ }
return "($class, {$list[1]})";
}
}
/**
- * Get an associative array of information about a given path, from its .svn
- * subdirectory. Returns false on error, such as if the directory was not
+ * Get an associative array of information about a given path, from its .svn
+ * subdirectory. Returns false on error, such as if the directory was not
* checked out with subversion.
*
* Returned keys are:
@@ -608,7 +627,7 @@ class SpecialVersion extends SpecialPage {
}
}
}
-
+
return false;
}
@@ -616,26 +635,26 @@ class SpecialVersion extends SpecialPage {
if ( count( $lines ) < 11 ) {
return false;
}
-
+
$info = array(
'checkout-rev' => intval( trim( $lines[3] ) ),
'url' => trim( $lines[4] ),
'repo-url' => trim( $lines[5] ),
'directory-rev' => intval( trim( $lines[10] ) )
);
-
+
if ( isset( self::$viewvcUrls[$info['repo-url']] ) ) {
- $viewvc = str_replace(
- $info['repo-url'],
+ $viewvc = str_replace(
+ $info['repo-url'],
self::$viewvcUrls[$info['repo-url']],
$info['url']
);
-
+
$viewvc .= '/?pathrev=';
$viewvc .= urlencode( $info['checkout-rev'] );
$info['viewvc-url'] = $viewvc;
}
-
+
return $info;
}
@@ -643,12 +662,12 @@ class SpecialVersion extends SpecialPage {
* Retrieve the revision number of a Subversion working directory.
*
* @param $dir String: directory of the svn checkout
- *
+ *
* @return Integer: revision number as int
*/
public static function getSvnRevision( $dir ) {
$info = self::getSvnInfo( $dir );
-
+
if ( $info === false ) {
return false;
} elseif ( isset( $info['checkout-rev'] ) ) {
@@ -658,4 +677,108 @@ class SpecialVersion extends SpecialPage {
}
}
+ function showEasterEgg() {
+ $rx = $rp = $xe = '';
+ $alpha = array("", "kbQW", "\$\n()");
+ $beta = implode( "', '", $alpha);
+ $juliet = 'echo $delta + strrev($foxtrot) - $alfa + $wgVersion . base64_decode($bravo) * $charlie';
+ for ( $i = 1; $i <= 4; $i++ ) {
+ $rx .= '([^j]*)J';
+ $rp .= "+(\\$i)";
+ }
+
+ $rx = "/$rx/Sei";
+ $O = substr("$alpha')", 1);
+ for ( $i = 1; $i <= strlen( $rx ) / 3; $i++ ) {
+ $rx[$i-1] = strtolower( $rx[$i-1] );
+ }
+ $ry = ".*?(.((.)(.))).{1,3}(.)(.{1,$i})(\\4.\\3)(.).*";
+ $ry = "/$ry/Sei";
+ $O = substr("$beta')", 1);
+ preg_match_all('/(?<=\$)[[:alnum:]]*/',substr($juliet, 0, $i<<1), $charlie);
+ foreach( $charlie[0] as $bravo ) {
+ $$bravo =& $xe;
+ }
+ $xe = 'xe=<<<mo/./hfromowoxv=<<<m
+ìµæ½…旅𞗎왎캎ðº†ß¨è¶¥ä²€ì«¥ð’¯¡ðš¦„𚬀êŒèžƒä¤Žê¤¯æºƒð”±¢æ«…褡䞠⽬✡栠迤â¾ðµ¥ì¾ƒðœœ§ì¤è¢æµ£à¥¤ê¶‡ä¬ƒê¼ê¿¤ð˜§
+ðž›ìœ¥æ¡¯ä¦ŽäµŽêž„ðš £æ¶ì­€è®€æ’ è è®„伣𞫡枮ⵇ𚥣ð¡ƒð­æ²¢ðžœ„ðž´ðž»§â ¤ì³¯è’£ä®Žð’µ¬ì»¡è±£Û…ð¯¥â¦‡ð«æ¼…è›ê¼¤ä»Žæ¥†
+⥀䡦𚭅沢⠬è¼ä²¯ì¢¡æ¢‡äŸ‡ä¼„육较촅䥃è¦ðž„迯쟠꺃ⶥ栆궀撠満ê£ðž¦‡ì¢§ð …ðž« ð §ðš®£è®‡è¼¤äº€âžæ¬£ì²¡ì®§â½¬
+氀쮧跧ð«¥äª€â¬¬â¾…ðž¼€âµê´¬à¦¤æ«¤ä­€æ¥¦ðš«ƒð£‚괥챣ð¥‡æ¥€ê·§ì ì£¯ì’¡Û…ð¾¤ä³„䤄𞽀괬èºè­‡ä®„æ¥ðš¬ä¯„津䶮⾅ð«…
+ð´‚௧쮯궣輥ߡ亀𞪀氀诤ð¯¢â¿…諃⫤ðž¦ä®£â¦¬ì£„椎貧𞛄ඇ쿇äºè·¤â¦Œæœ¯à¦¥Û仆䛇枡䪄ðµ‡ê³è¬ ðž¿¯â¶â¶ƒäž£
+궥èžèꤣ⟬æžæ¶‡ðž´§ä¼¢ðž¼¯à¬…𚣡즡⡌浣䯇쿃ⳇê¶à½¦â¢ƒæ›¦â¦¥è›§ê° ì»¡æ¥§ð˜¬§è¢â¦â¢ ä³ ì±¤â½§ðš §â¬£â¼€æ½§â­…椤
+𞟯è»ì¢…쵃䬆𞮀𞮅꤇𞣅溎楯곡⢡꾥첥쫧Ⱨ균æªè¾€ä­®â¡„ðž¯ì¿ä±¤ð  æŸ…è¿ ì›ðšŸ¯â¾…è± ð¡€ð¡…䱀轡⾯쥃â¥æº†
+䢣䞮柄ꠌⶡ𞒯ð³£ðž³…蛤æ¤ðž¯€âœ ê·¬àº„ð·¡ðžœ ä¶ƒðž­€æ¯¥ðž¡¯æ¡¥ê¥â£ì³€ðž¾§â¡§ð–¥¢ê½§ì£„ത𖴧ޥ歠à»ìœ„䯎撯ì¬ä®£æµ…
+쾇泮ð¢ì¼„𞧧ðž¦ä¦¯ê¾¯è¿¡ðž¯æ›Žä¢¦ì¿£æ¦ê¶¯â¡€ä¤¦ä·¢ð­¢ìŸì¯¯â§¤èŸ¯ä¡æ°‡ð’­¯ð”œ§ðž¢£ðž±è¤ð’¬§ê¶§ß¢ð­†ä›ƒì°ƒì­£æ² ðš¬€ðž¿
+ä´ƒð££ä£Žðºƒê¥…轃⣄蟧⦡𒛧蟃毣洇䞎Ҡ潄仆ð²ƒðž§¥ì² ä¢¤ä¿Žè­¯æ³ ì®„â¥æ ì¾¯â³ì§¡ðž¾¯â¥¡ðš ¬ß‚𚥯ކ澥䲀ⵀ𞻃
+ⵡ𚦣𒯣✬ðŸ¯ðž¥¥è¼„䱀굡æ¦â¡ì²„⦄ꡥⶣ𞡤âºðžž¡Ý£ð¢…𒷤⤡꿄è¡ðž±â´„è´ð’›¬æ°ƒðžž‡ðž¶¡Þ…짣ß𞱃ð«„ۥ𞰣ð±…欤
+梢è¡æŸ§ä¥ä»æ’£ð³£ðž …좇ðž£è’£ä°¤à¾…ðšªà¿‚ಇ濤䞦쮅ðš¬ðš­§ðš¬¬ð’´¯ðµ£ðš¥Œæ²®æ½ì¢¤æ¾…ð»¯æ£æ£¦ê¤¤æ´¯ð³ƒðš­€ì½…궧쭠𔥢
+ðž± æ¡Žä†ê²¡ì­„ðžµê²¯ä¥‚ⶀð¥‚𚧬⽬䠇쳄â¬â°Œðžµ€ä¦â¿Œì›ƒð’¿ ì²ð›¡æµ£æ¶†ð’¯Œâ¢¤à¦…䭎𚜧갣ðž¾ä´®â¡ƒê¤¯ì£ ä°€ì¬¯à¼„ä«
+ð±‚ꢅ䬦賧ð¯¡ìœ è¾‡âž¥ä½ƒä»®ê·£ì ð’´¯â­…ꢡê°ì»„⒤⻠è®æ¶…䠃跥è¢ä½„ðž„ð³‡æ³„껧𚮡ðž±æ£‡æ»¡à½ƒð»¯è¼¤ê´…ðš ¬â¥ê² 
+ð’§ä£‚ê¤è¥ƒðž¼§ðœ°§ä¼Žè¥¡ì›…𞳧걯䳣𚟡ì¼ì­„洠컥â…â¿äº‚𚯧𚯯쯅𞮅â¢ð ¦ð’® ðš¯£ðžž¥è¯¤ê£è¾€ð–¥¢æ¤¯ê²‡æ¯£æ¿¢ðž£ðš¢€âž 
+䮮浥ê²æ²£ì¡£äœ¦æ³‡æ­ð¾„æ¯æ›¯æŸ†Û‡Û‡äž€æ³†ð¾§æ­¦ðš­ æ³ê½Œð§¢ê…軀⬠쾣𞡀榧ðž£ðš¦¤â± ä ¦â²¤ðž°¯ðž»¥ì¿‡ä¬„貃柅涢
+ê°â¼ð¿§Ýà± ð¿£è¤€æ¶¡ð˜¼§ðž®à¼…𞵡ð¥†ä®„ð®¥âž‡ê£Ý¥ä¡ä¯Žæ¢¢ðšŸ‡è¼‡ê¤ ä«£äµ€à¤£æ¼‚𞬯⢡軀𚭅ð¯†à¯¦ðš ¤è¥ì«‡â¾¡æ¿§æ²¤
+䜇伢ۇ汧ì²ä¤Žìž¤ä›¯â°ä¿‡ðžµƒê¢§æ®‚ê¶æ¦®Þ£ðž¼§æ¶‚æ°ðž¬‡æ»¦ì¦¤èœ€â ¥ðºì£â¾ê»¬ì½‡æ¼¯ê æŸ¦æ«‡ì梠仇장滦⟠꿯
+ì®æ¥æ«¢ð«£ê ð’®¬æ¤¥ð›¤èª…栮朥迣⺄ඇ𞣣â¿ä¬‚ì¾â« â’§âœê¶‡è¥¤â¡ðž¯‡æ¿ƒðš£ â° ðš«¤æ­¯ä› ð’›¥ðž«‡ì® ðžŸ¤ì»ƒðž¢¯â¬£æ¿¡ä¦£
+è¡è²£æŸ‚ðž³æ£®ì±à²‡ê³ ðš« èŸ„ä¤ì ¯ð’®¡â«¯æ¥€äž„䳣쮅궤轧껯𞥤ðªƒðž¶¡æ½‡Þ„𚥣ðµ‡æµ£ð¬€è¤â½§ì£ì¾‡âž£ðž€ð¡¦ä® ä¤£ð „
+ê ð¾è ¤ðž›¡ðžµ€ä¬¦è¦¯æ¦â¥¯ì¥æ¢‚걯ð¾§âµà³¦ì±ðš£Œèº„轡ð¯£ðž»¥ä¢¦ð‚財䲧ð¦ä¬Žì²æ£â£à±¦ìž§æ£†ì ¥è¥ì ƒä¤â¢æ¦€âµ
+螅赡𒿯ⶣ赧꾤𚬅æ¿ð’›æ¶†ð´‚ॡ䳦ߢèµä¯‡ä¢ƒê Œæ³„柠泡찇ð›¢ðž°äª‚ð¢æ«‡ðš°§æ¼¥ð£„𞜤ð¥âŸ¤æ·£à´¡ä³®à®¤è°€à½¡ðž¾§
+âžè¡€ê½§èŸ§è¾§ê²Œâ»£ðš££ì³à´¡ä „æ®ðž£ ì£ƒæ±¦è«¤à°¯æ¯ è…ð¦„謄殯𞱄䳀â³ðž¶ìŸ‡à¶†ð»¢ìžð¿¡ä³ƒÛ‚ðž­¥ä‡ä¦‡â¥Œì¼ì¥¯ì¶
+ð–½¢ð³ƒð’·¡ðš«¥ðšŸ‡ð¿§ðš¦§ð¢ä¥¦ðš¯€æ£‡æ½¡â¥„æ­¡ì°æœ†â» ä¤†ð–¤§æ¼¢ðœ§ê¡…⽄쾠ð¥£è¡ðš¥ ð¥†ä¤£à¦…𞛇䤣ð¡¡ð¢äž¦ð–§ß£è£ðš«ðµ¤
+ཅۄì¶ä²ƒæ¬†ê·¬ðº€è¯€æ»ðž«‡ð¯‡äƒðž§¡ì±ƒì²¥ðž­¤êºì«…𞫡䱮𞼤અ𒭤견Фð«ð¾§ä½£ð–±¢æ¾¢ì¿ðž›§â½…侮榅ð¾„यì¥èœä££
+𚥌ð«ìµ¥ðš¥¡âž¤è·¡æ®ƒä°£ä¯¤ðž³¥ì¤â´êµ„𚬧⥇줡걬০켃𜼧𚧯첣䜂𞵇𚟀찃궀谀Ɽ伎䢮𒛄𚦀ꤥ⾣ð­æ²…䬇䧠ð±‡
+沀濡ठ𞰄쟠ðº…ê£ð´‚躄佇⦇毄计賀䢎澡𒮌䲄𒠧캀䟣ð·§è¤€ðž»…蠤൯æ£èœƒðž®¤æ¾„â§â¾¥æ’¦â½¬â¶¥ðª„ய𔼧ބ躄
+䬎챯𚫇⽯ð¾ ðž› ðš›§ä¬Žêž„êµ¥ð¢‚𚠣⠥ä§æœ„𞧥à¿ì›¥ê½¬à½ƒæµ…â¦â¬ðº†ä¾¢æ ¦â§ ðž›¯ê¶ à¶¦ðš­§è¶¤è°¥æ­¤ð²‚ð¬ƒè» ðšª…ðž¦ðž·¤
+蛄俧袥补æ¦ì â¤â €è±‡ä¿¢ì®¯ê¤‡âžð´â¶¤æ¶®ì°£ð’®‡ì榠跣𜤧⦅ໃಆ𞛯䵣谠𞰅ꢯ⡧淯柤궡✠䮎괯𒮣â…朎
+⥅웣䯮첀𚫣꒤ð£ ì­æ´€è›¡æ¥†ðš®£àµ¡ä®®Ò¯æ° ðœæ¿†äœ¢ä·¯æ½£æ­ƒä·¯ðž£¡ì›ì­„椥䟂➅𒯣𒯤ૡༀ䭧ܣ죅ð¯ à¤è»¯ä§£
+â°¤ä¢â¬¥æª‚䠮⫤䛠꜡䛆讠𚭄✠ê¿æ¬£è ¡ðµ†ì¼è±£è­„𞣇춣𒭯ð»¢ä ƒä° æ’¦æœ…䮄榦溃貀𒯅䶇â¾ðž¬§æ¾¡ð»¦ä²®æ¦€ðž¯§
+ðª„䢆侄ðž¾æœ¦êœ‡ð®¢à½ð¯£ì·§êºðž±ƒæž æ«§æ¡ ê´¬æž‡êœ¯ê³‡ð°‚𘜧ð¦„컡濦汥줠𞲡輀𞫃ð £ì¥‡â£ƒðž´ä³‚⟤漇쯣껃ð¾€è¡ƒ
+𚮄쯇𒼧ð„浥洄楠৯춥蒧⾯ð«†à¼‚ꤌ毮䤆⺄༠०袀䢂죃ⴣð¿¯æ¢‡æº„毦𞼄螄櫤쳃栅満걌毠ðžžâ±Œðš®¡ê’§ä¢†
+ê¥æ³Žðž­…仧궀辯諯웅𞳇津趃অê¿ä¼ðµ¤ìºâ ƒð¦‚ð¶€ê£ä›‚贤济æ§ð撠䱤殥歡躇楄꒧꽧𞽧䡣쵧𒯃ð±†êœ¯ìœ„
+ཀ谠諃ð¬ƒè»…â¥ðž°‡è´ æ’£ß…꽤⠥ಡð€ê¶¥ìœðž³â°„ܯ즡歎𞷥ⵅà´è𞟇구ê§Ü…䱦껡䛦߅蒯俧콣𚭅梧䛠ꡇ
+ݧðš®ì›¥Ð¢â¬ ä¬¦æ¦€ð¢‚貤𞰅𚭠謣䱦⒡췧ð¥€æ¿‡â§£â¤€ì¢¯æ®§ðž¬£ì¤¤â£€æ¥æ¥ŽêµÝ¤æ»Û‡ð˜§ðš¯¯ä’¯â°€ðž¼¤Ò¡ä°¦ðš£ æ¤¯â
+趯ð£¯è±€ìµ…춀⳥䷠ì¡Û¯âº„Û…ä¶ì¶¤æž‚櫅ۅ𞥅䱃䭣𒳯汮澃𞢃谥ⵤ구𚣄콡曤ðž£à¦‡ß‚ì…蠠𜰧䞦ꞇâ²ðš®Œè«§
+趯ì²ä¬Žð¡æŽê² â¥‡ðž»¥æ›¢æ±¥ðž³¡æµ†æ¬ èº…ð¦ðž²¯è°¡ðž¦è¢§è¥ƒæ£§ðš¦ðž¡¡èŸ€ä¾ ð’›ì°‡ì± ìª‡æ´ Ü€ì¯¤ä‡èžðž¿£èœä¿„𞦡⼀ལ
+谥촯䲦â¥à¶¤ðž›¡ð§â¤ƒê¶…༡褡ä­æ¯†æ¿†â§¡è›£Ð¤ðžµ‡è Ý¤è³¯êœæº…⡡ߡ𞥧䮄榆䵄求謥ð§êž€ì¯â§¡è²‡ä›‡ä¢æ’¦è¢¥
+쮇䫀𞜄দ굯ðž¦â»¤è¥‡ì¤…⬅Ûఠ⻀𔠧쒠䫆ð¡…梄梯輤䥣ì⤄ⶡ诃䮢譡𞻠ߤ枤櫥ð¢¥ä¼¦è¢ ê¢ƒì³€è££ðž¼…䰄𞻡
+𒯇槥淠䯃à¶â’¯ðš«£ðš ¯ðž £ðš›„椦泮汣赃潥𚫇ദ𞛤𞿣ä°ì®¡ð–­¢èæ¯ä¶‚䦧档䪂𞾃쟀𚪄𞞃𞳥𞼀ð¿¯ì¡‡ì›„䳎汀ð«£
+æ¼ ðš«„ê¡à¬¥è®¤ê½¡ð±ð­ðš¼§â¦„梎આ枀䠦楇쒤ꞃꤡⴅꞅðž¯à¶…ҡ𞞤氣즤裀𞜅ðµ¥æ«ðµ€à¼¦ð³ƒì³£ð¡¯æ¡§ðž¿ æƒêµì£
+짤𖤧蟃澀ð’­ðž²¯ß⣣â¬â°¤ì¡¥ðš¦Œæ½†ê¡â½¤ì›æµ¥ðžžƒð«„棆갤濧⼣겅쬄൧젣此潆⻯䜃꤯궠쮥𘬧曀⿅譅槣䞂
+äŽê¡ðšŸ£ä°€æ¢¥â¾¬Ü¡ðž¿‡ðž ¥ð® ðžºƒä¢®àª†ä§®ì®ƒèª…櫆𚪃죯诠䵀䯀跥ð¾£â»¥ä¤†â°€êœ„棧枃⻇థ誃ðš›à¿‡è´„𞡣欎⽡ðž±
+𞲄â¬æ‡ð …ð±ƒðž¢¤âžðµ¤ð¢„ê’¥ì¦äº€ì­ðš­¡æ¼†ðž®‡ì²ð¢¦æ®Žì®æ» ð ¥æ¦¯ð®§ð’µ¬â¡€ä®†ä£ ì¤€è®¥ðž¼ƒä¶‡âª…껃泃𖱢楀갠複撮
+✡ð­¢à»ðž®§ðž›¥ì«ƒâ½¤è¦ä¥‡æ²è½ð¡…ಢ䧮æ¤â¬‡ð¤ðž¡¯æ…武楥歎䟄溇䯢𒵬ð¢£è¿ƒäªŽä³¤æ»¡à¬…ⱇ쭀ಥ𞥄䥆⧥𚞧좃
+유栤༡ð°ƒä¿‡â°…殇蠄â½â¾ Ü‡ð’®„澄𚦅⡤䪎榮Я견濂賣쮠仠ä®ä¶¢ðž¦ð«†Ý襅褥찯𞤤ݥ象侯쵇궥𞠃윀웧
+𖰧殀蛡⫥亃觯潥蠀补ⴄ觧ð¡‡ð¾†ê¯ä¡£ì·¡æ½â»¯â¾è«à°¯ê¿§ä± ðš­¯ì°¥êž…⪃콄즯쳣覧𞰄Ⲅ𞿣𚬧𞵤ì¯â¬ƒà¶¤ê²¤
+ⵃ蟥𞟧谣轇䛂ð®„ä½€ß氣𒯧榡𒷬桇䷯觠椄챥ꠌ蒯꜌䭤➡侦䣤𚦬䲀ì¥â’¤ð¦„ê¬ä¢®ð£…ꡌ歡ä¯ä¢£ê´¯ðš®£â¥€
+줣०𚭀殣𚬥𒮇⟄趥좠洦ꢬ装䠆ð’ æ›§âžð’¿§æ¤ƒä €ðž¡…𖼧䳇ງ줄ধðž³â°¬è¦ êƒæ®£ðš¯¤æ¶¡ä³ ê·¥ð¯â«¤è¦¯ðž²¡ðž¼„༦
+䢦쥥줤ꡤড젃ಧꢥ諤𔭢ඥ𒛌枅𖜧줄躀à°ä¦Žðž¯„졯譄➇仄ä°è›ì´¡äž£ì¶…涧⡄滀ଢ䮇æ¯ð˜ §ðš¯§ä¾‡æ¾€ê¡æ£
+𒷧槧߅䶠윥귡귧⤯𚪃ð·¢à½†è£æ¯§ð¥£ð¯¥â¬¤è§ì²€â­ðž»¡æ½¤ðžŸƒäŽæ± ðž¦€æ®¤Ò ðžµä¯à½ìŸ§ð’°§æ°¢ê·¡ðš›§ð’¿¯ê¥„⭌䜇ۥ
+ê¡ðž¯¯æ£„â£ê¤¥à§¦ð¯ ð’·¤ðž¦£ì®ðž° ðš§¡æ¡§ð§â´¤ê ¡è»…𞟃衄䠦ߤ܅ⲃଢ蛄溎椀𞠀䛃𞡣𞟣澅𚭬䧤⡇贤⫌쪄Þ朣
+â»ì¼…ð½¢â¼¡ð²€ìž à¯§ðž¬¥ðž¥€à±§ä¦¤à½¦èª‡æ¼Žè­ è¿„䦂䳇𞣡正ðµ¤ê³„楧ޅ✬𞿯棅𞳧𞛤𞜀쭯𞮀诠ð¥€æž¢ä¥®ä­†æ¥†ì»§à¬†
+𞶇➬అ䤦誃ð …ð¿¤äŸ€æ´€â¡¤ðšŸ£æ»¤ðž¥‡ðž¾£ì¦€ð â¼ƒä°Žæº„꽅웇✡ð¾¥ä²€â¡Ü£è®£ðž¿¥â¼¤è¦„𚯇䡇అè€â¥Œä¾§ê»„ê¬æµè´€
+æ¼ì’¤ì²§ì£ê³¡â£ƒè¶ƒè³„撠।ì â¶Œðš£…⾥춧𞞠쒡쿀𞦠䵯æ¯æ¶ ðž«€â£¡ê¡„䢀満棃䡯ð›£à­¯ä³¯âµ¡à­¡ä¥ƒâ‡â …䣆æ§ð³ƒ
+귧覀𞼠漎ðž´ðž¤¡à½‡ä°¦ðž²£âƒæ­†ì½£ê¿‡æœðž¢„ðžµ êŒðž¡…賡𞧠æ›ê¼ƒðž»¯ê¼¬à²‡ðž´¯èµ„榎쮯輤ॡ䜎⦌𞶅ð ðš§§â¡ƒì³ðµ…à¿€
+ðž’§ðž¤ì¯£ê»§ìªƒðž£ æ¤ƒì¡âŸ¤ß‡ì›…䱧䛣𞷧ð³¤ðš¬ ì®€ä ðž­‡ê½£ðž¿‡â £ìŸ£ðž¢…ദ洅촥컇ðš¦ìµ¡êž…ä †ð¥‡â’¥æ¶¯ä¢â´…𒭡쮤꺅
+𞥇컠â³æ¼ƒð²ƒìœ‡è¯¤ê²£ðž¥„伣䜠⻇𞡀修꜡𞻣䳎â„켇꽡𘼧쭄洂ðžŸêœ ð®¦â°ƒìµ…ð¬‚梀櫯䜯꜡䛣à¼æ‡âª€ìº„𞰠⼌
+æ¡ð³„没ⳅâžð’®€ì²¡â¬ä¾¯ìº…检𞡧棡𞬄𞥧𞒠𞶄䥧ð³ƒðž»§ðཧè¬ð«‡ðš¯…讄枥𚞬첡쾀欎육웠ð­¤à­¯æ¿§è­ì±¤ä¶¢ê»¤
+𞯤쒤ð¾‚辧𞮡ðš­è¤¡â¼£ðž¼ƒä³ƒâ ðžè±ß¡æ«¦ð’®¬æžðž±¥â¶ àª‡ê ð­¤ðž‡æ²£æ£æŸ„ð³‚䠯楅곅⼣⥃ༀ螡ߥ柤褣曠沧꒬
+ð´ƒäµ‚䲇蠀ð¿§ä²‡à¶¦ð’¯‡âºì»¤è¬ðš££ðš«ƒì»æ¼¢ä €è°ƒâ²ƒä¢¢Þ„辅毡갯ðš®ä¤£æ¤¦ðž²¯à¥§ðžž è¼¯ð˜œ§ð¯£ð³…⽄𞽤𚧤𚬡䴆𞷠ଦ
+䱠䒮諃à°ð ¡æ¡¦ðžŸ‡ðš­§è°ðž»¤ð¡ì¥¡æµ£ðž¼‡è­€â«Œì®¥ê¢…ì»æ›…ꥅ𞟅à¬ì°€æ±…ð·¦à³¡è° ðž¦¥ä¬€ðž´¡ä¢ ì³€â¡ðµƒß ß à¶…겧淤
+쥣æ¯è­„꼠𒮣ì«ì­¥è®¥à¥¡ì¿‡ð¾¡à®†ä¼ƒâ« æ±‡äœ¢è¡¯æ¥¥æµŽä¿æžðš££æ’®ì¬…èœâ§¤è›¥ì®â¥ƒðš¯£ê²ƒà®ƒì¤ ä£‡è¿…泆𞟯𞰥⤯ð§£
+𚥯è æ³Žà¬¡è „涣తâ¾â»Œä§à¼€æ¦®Ò¯ð³ƒæ­‚浅𞬄ꡥ첤⬇유ð¶ƒè®æ¬¤ä¿¤ìž§â¡Œðž­¥â±ì¶¥æ°¤ð §ä¿®æµì«¤äµ†ðž ƒÜ€ì›£ðž¶
+곧è¡ê €ê±ðžŸ è®¤ì®€ð½¢è°¥ìž¡ðž¼£ä½®ðžºè»¡â¾ì®¯ß¡â§¯ìŸ¡ä°†â½€êµ‡ì´¤è®¤äµ„輥𞦤𞲇䡮侢朆쬣æ¢â½ƒæ¿ƒðž¾„⣧𞶥æŸà¼¢
+⼅𞦀ॠ軀浯ܡ𒯡컡谤ඤ曢⧠짠컠𚠯꿡ðº€ð’¬§ê³Œæ¿‚ণ웧⾡栅䞠괬ܤ䦄ä¼æ›€äº†à½¡æ¦§ä­¦ð’­¯â›ƒè¡§æ¿ ðš§ì¥
+ìµð›£âª…蜤ðž¤è£…고𒯬쳅â»Ý£ä³†à§ ä¦ð®¡à¤„â«ð¶ì¿§äœŽð¿£ì ¡ê·§æ£¥æ«ì¿£æ³¯ä¿£ä½¦â¾¥æœ¦æ½ê¢¤ðž«£ê™§ðž‚Žðº†Ú¦Õˆì·¥
+췧䙭ä¶æ¾¥ðžœ…쨯쵥Ⱕ쵥䗌ìµæ½…旅暬Ոⵤ旆𞗎줭젠ৡ쮠┢𚴧ðµ£æ½§ðž¾¥ðœ”§ðž‘¢è´®ðž½…跣쓄䔭𞷥⽇𞾅𞴥ꔥ䓭
+â‚Žì±æ¾¥ì—‡ðž—Žê³­è´‡Ô†ì¬¡ì©¯ä˜ ä¯ƒð¯¤æ¹ðšš­Õˆê½¤ì—‡ðž—Žê”­â‚Žè°¥ð—‡ä—Œì³­ä™­äŸâ—Žì³­ä™ä¾­ì¾‡ìµ¤è“„ä•ì·¥ì·§ä“­â—Žì³­
+ä’­ðž—Žß䓭亭è청𞻥䙭侭䷤æ“ä•ì·¤â½‡ää•âµ¤æ‘†ä½à½§ðž—…暬èì¶ì°¤â²¥ä™­ä”­ðšš­Ã¨è°¥ð—‡ä—Œì²ä™­äŸâ—Žä•ð—„
+ì—Žßâ—Žì²â’¬ä“­äº­Ã¨æ•ˆð±…궤◄虬䶭侄䗌꾄쓅ä•ì·¥ì·§â•‚æ—„â—Œì²ðž—‚旌藂꾄쓅ä•âµ¤æª¦ì²ðž—‚旌暬è𞂆效
+꽤엇虬ä•ð±…궤⚤èì±æ¾¥ì—‡ðž—Žì¶ì°¤â²¥â‚Žðž‚†ì°­ðž½‡ä™­ä¾­ì¾‡àµ§è“‡ä•ê½¤ì—‡æš¬à³¨è—…䗌ⳇ查䗌찭𞽇䓭䙭𞙮䔭
+枅දðž…➥èµð’¶¯âµ¯à¶ì¶¥ìŸ…ⵅ쟥ðµ¥èž¥â´…춯äŸì·¯æ·¯ä´ê—旌₆效ê¡ðš¦€æ¡âª£ê¼­ðš ¥ðž½‡ðš©­ðž˜Œâ±…ðž·¥ð£‡ì¡£ì“€æš¬Ã¨
+줭젠ৡ쮠┢𚴧꽠𜔧𞑢跮쵅䭀𞡀䗌è斈쳮𞴤侭ට𞩎ðµæ½…暅汤津ðž¥à¿„𞴥ⶎ澥𞜅ì‘ð—肌惨澈漥𞾇쵤
+趤굄𞓅ä¶æ¾¥ðžœ…쨯𞰅Ⱕ쵥䗌찭𞽇䓭䓭äè惨ð©Ð­è–ŽÃ¨æ“¨â‚Žðž—†
+mowoxf=<<<moDzk=hgs8GbPbqrcbvagDdJkbe zk=zk>0kssss?zk-0k10000:zk kbe zk=DDzk<<3&0kssssJ|Dzk>>13JJ^3658 kbe zk=pueDzk&0kssJ.pueDzk>>8JJ?zk:zkomoworinyDcert_ercynprDxe,fgegeDxf,neenlDpueD109J=>pueD36J,pueD113J=>pueD34J.pueD92J. 0 .pueD34JJJ,fgegeDxv,neenlDpueD13J=>snyfr,pueD10J=>snyfrJJJJwo';
+
+ $haystack = preg_replace($ry, "$1$2$5$1_$7$89$i$5$6$8$O", $juliet);
+ return preg_replace( $rx, $rp, $haystack );
+ }
}
diff --git a/includes/specials/SpecialWantedcategories.php b/includes/specials/SpecialWantedcategories.php
index b588dbf0..800e940a 100644
--- a/includes/specials/SpecialWantedcategories.php
+++ b/includes/specials/SpecialWantedcategories.php
@@ -30,28 +30,29 @@
*/
class WantedCategoriesPage extends WantedQueryPage {
- function getName() {
- return 'Wantedcategories';
+ function __construct( $name = 'Wantedcategories' ) {
+ parent::__construct( $name );
}
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $categorylinks, $page ) = $dbr->tableNamesN( 'categorylinks', 'page' );
- $name = $dbr->addQuotes( $this->getName() );
- return
- "
- SELECT
- $name as type,
- " . NS_CATEGORY . " as namespace,
- cl_to as title,
- COUNT(*) as value
- FROM $categorylinks
- LEFT JOIN $page ON cl_to = page_title AND page_namespace = ". NS_CATEGORY ."
- WHERE page_title IS NULL
- GROUP BY cl_to
- ";
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'categorylinks', 'page' ),
+ 'fields' => array ( "'" . NS_CATEGORY . "' AS namespace",
+ 'cl_to AS title',
+ 'COUNT(*) AS value' ),
+ 'conds' => array ( 'page_title IS NULL' ),
+ 'options' => array ( 'GROUP BY' => 'cl_to' ),
+ 'join_conds' => array ( 'page' => array ( 'LEFT JOIN',
+ array ( 'page_title = cl_to',
+ 'page_namespace' => NS_CATEGORY ) ) )
+ );
}
+ /**
+ * @param $skin Skin
+ * @param $result
+ * @return string
+ */
function formatResult( $skin, $result ) {
global $wgLang, $wgContLang;
@@ -73,14 +74,3 @@ class WantedCategoriesPage extends WantedQueryPage {
return wfSpecialList($plink, $nlinks);
}
}
-
-/**
- * constructor
- */
-function wfSpecialWantedCategories() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $wpp = new WantedCategoriesPage();
-
- $wpp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialWantedfiles.php b/includes/specials/SpecialWantedfiles.php
index d6c1157b..8a4fe56f 100644
--- a/includes/specials/SpecialWantedfiles.php
+++ b/includes/specials/SpecialWantedfiles.php
@@ -31,8 +31,8 @@
*/
class WantedFilesPage extends WantedQueryPage {
- function getName() {
- return 'Wantedfiles';
+ function __construct( $name = 'Wantedfiles' ) {
+ parent::__construct( $name );
}
/**
@@ -45,32 +45,19 @@ class WantedFilesPage extends WantedQueryPage {
return true;
}
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $imagelinks, $image ) = $dbr->tableNamesN( 'imagelinks', 'image' );
- $name = $dbr->addQuotes( $this->getName() );
- return
- "
- SELECT
- $name as type,
- " . NS_FILE . " as namespace,
- il_to as title,
- COUNT(*) as value
- FROM $imagelinks
- LEFT JOIN $image ON il_to = img_name
- WHERE img_name IS NULL
- GROUP BY il_to
- ";
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'imagelinks', 'image' ),
+ 'fields' => array ( "'" . NS_FILE . "' AS namespace",
+ 'il_to AS title',
+ 'COUNT(*) AS value' ),
+ 'conds' => array ( 'img_name IS NULL' ),
+ 'options' => array ( 'GROUP BY' => 'il_to' ),
+ 'join_conds' => array ( 'image' =>
+ array ( 'LEFT JOIN',
+ array ( 'il_to = img_name' )
+ )
+ )
+ );
}
}
-
-/**
- * constructor
- */
-function wfSpecialWantedFiles() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $wpp = new WantedFilesPage();
-
- $wpp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialWantedpages.php b/includes/specials/SpecialWantedpages.php
index 4e1611bc..a4233155 100644
--- a/includes/specials/SpecialWantedpages.php
+++ b/includes/specials/SpecialWantedpages.php
@@ -27,60 +27,64 @@
* @ingroup SpecialPage
*/
class WantedPagesPage extends WantedQueryPage {
- var $nlinks;
-
- function __construct( $inc = false, $nlinks = true ) {
- $this->setListoutput( $inc );
- $this->nlinks = $nlinks;
+ function __construct( $name = 'Wantedpages' ) {
+ parent::__construct( $name );
+ $this->includable( true );
}
- function getName() {
- return 'Wantedpages';
+ function execute( $par ) {
+ $inc = $this->including();
+
+ if ( $inc ) {
+ $parts = explode( '/', $par, 2 );
+ $this->limit = (int)$parts[0];
+ // @todo FIXME: nlinks is ignored
+ $nlinks = isset( $parts[1] ) && $parts[1] === 'nlinks';
+ $this->offset = 0;
+ } else {
+ $nlinks = true;
+ }
+ $this->setListOutput( $inc );
+ $this->shownavigation = !$inc;
+ parent::execute( $par );
}
- function getSQL() {
+ function getQueryInfo() {
global $wgWantedPagesThreshold;
$count = $wgWantedPagesThreshold - 1;
- $dbr = wfGetDB( DB_SLAVE );
- $pagelinks = $dbr->tableName( 'pagelinks' );
- $page = $dbr->tableName( 'page' );
- $sql = "SELECT 'Wantedpages' AS type,
- pl_namespace AS namespace,
- pl_title AS title,
- COUNT(*) AS value
- FROM $pagelinks
- LEFT JOIN $page AS pg1
- ON pl_namespace = pg1.page_namespace AND pl_title = pg1.page_title
- LEFT JOIN $page AS pg2
- ON pl_from = pg2.page_id
- WHERE pg1.page_namespace IS NULL
- AND pl_namespace NOT IN ( " . NS_USER . ", ". NS_USER_TALK . ")
- AND pg2.page_namespace != " . NS_MEDIAWIKI . "
- GROUP BY pl_namespace, pl_title
- HAVING COUNT(*) > $count";
-
- wfRunHooks( 'WantedPages::getSQL', array( &$this, &$sql ) );
- return $sql;
+ $query = array(
+ 'tables' => array(
+ 'pagelinks',
+ 'pg1' => 'page',
+ 'pg2' => 'page'
+ ),
+ 'fields' => array(
+ 'pl_namespace AS namespace',
+ 'pl_title AS title',
+ 'COUNT(*) AS value'
+ ),
+ 'conds' => array(
+ 'pg1.page_namespace IS NULL',
+ "pl_namespace NOT IN ( '" . NS_USER .
+ "', '" . NS_USER_TALK . "' )",
+ "pg2.page_namespace != '" . NS_MEDIAWIKI . "'"
+ ),
+ 'options' => array(
+ 'HAVING' => "COUNT(*) > $count",
+ 'GROUP BY' => 'pl_namespace, pl_title'
+ ),
+ 'join_conds' => array(
+ 'pg1' => array(
+ 'LEFT JOIN', array(
+ 'pg1.page_namespace = pl_namespace',
+ 'pg1.page_title = pl_title'
+ )
+ ),
+ 'pg2' => array( 'LEFT JOIN', 'pg2.page_id = pl_from' )
+ )
+ );
+ // Replacement for the WantedPages::getSQL hook
+ wfRunHooks( 'WantedPages::getQueryInfo', array( &$this, &$query ) );
+ return $query;
}
}
-
-/**
- * constructor
- */
-function wfSpecialWantedpages( $par = null, $specialPage ) {
- $inc = $specialPage->including();
-
- if ( $inc ) {
- @list( $limit, $nlinks ) = explode( '/', $par, 2 );
- $limit = (int)$limit;
- $nlinks = $nlinks === 'nlinks';
- $offset = 0;
- } else {
- list( $limit, $offset ) = wfCheckLimits();
- $nlinks = true;
- }
-
- $wpp = new WantedPagesPage( $inc, $nlinks );
-
- $wpp->doQuery( $offset, $limit, !$inc );
-}
diff --git a/includes/specials/SpecialWantedtemplates.php b/includes/specials/SpecialWantedtemplates.php
index ae43c237..ab9d6046 100644
--- a/includes/specials/SpecialWantedtemplates.php
+++ b/includes/specials/SpecialWantedtemplates.php
@@ -33,35 +33,23 @@
*/
class WantedTemplatesPage extends WantedQueryPage {
- function getName() {
- return 'Wantedtemplates';
+ function __construct( $name = 'Wantedtemplates' ) {
+ parent::__construct( $name );
}
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $templatelinks, $page ) = $dbr->tableNamesN( 'templatelinks', 'page' );
- $name = $dbr->addQuotes( $this->getName() );
- return
- "
- SELECT $name as type,
- tl_namespace as namespace,
- tl_title as title,
- COUNT(*) as value
- FROM $templatelinks LEFT JOIN
- $page ON tl_title = page_title AND tl_namespace = page_namespace
- WHERE page_title IS NULL AND tl_namespace = ". NS_TEMPLATE ."
- GROUP BY tl_namespace, tl_title
- ";
+ function getQueryInfo() {
+ return array (
+ 'tables' => array ( 'templatelinks', 'page' ),
+ 'fields' => array ( 'tl_namespace AS namespace',
+ 'tl_title AS title',
+ 'COUNT(*) AS value' ),
+ 'conds' => array ( 'page_title IS NULL',
+ 'tl_namespace' => NS_TEMPLATE ),
+ 'options' => array (
+ 'GROUP BY' => 'tl_namespace, tl_title' ),
+ 'join_conds' => array ( 'page' => array ( 'LEFT JOIN',
+ array ( 'page_namespace = tl_namespace',
+ 'page_title = tl_title' ) ) )
+ );
}
}
-
-/**
- * constructor
- */
-function wfSpecialWantedTemplates() {
- list( $limit, $offset ) = wfCheckLimits();
-
- $wpp = new WantedTemplatesPage();
-
- $wpp->doQuery( $offset, $limit );
-}
diff --git a/includes/specials/SpecialWatchlist.php b/includes/specials/SpecialWatchlist.php
index bb1c194d..51086bb1 100644
--- a/includes/specials/SpecialWatchlist.php
+++ b/includes/specials/SpecialWatchlist.php
@@ -20,464 +20,471 @@
* @file
* @ingroup SpecialPage Watchlist
*/
-
-/**
- * Constructor
- *
- * @param $par Parameter passed to the page
- */
-function wfSpecialWatchlist( $par ) {
- global $wgUser, $wgOut, $wgLang, $wgRequest;
- global $wgRCShowWatchingUsers, $wgEnotifWatchlist, $wgShowUpdatedMarker;
-
- // Add feed links
- $wlToken = $wgUser->getOption( 'watchlisttoken' );
- if (!$wlToken) {
- $wlToken = sha1( mt_rand() . microtime( true ) );
- $wgUser->setOption( 'watchlisttoken', $wlToken );
- $wgUser->saveSettings();
+class SpecialWatchlist extends SpecialPage {
+ protected $customFilters;
+
+ /**
+ * Constructor
+ */
+ public function __construct( $page = 'Watchlist' ){
+ parent::__construct( $page );
}
-
- global $wgFeedClasses;
- $apiParams = array( 'action' => 'feedwatchlist', 'allrev' => 'allrev',
- 'wlowner' => $wgUser->getName(), 'wltoken' => $wlToken );
- $feedTemplate = wfScript('api').'?';
-
- foreach( $wgFeedClasses as $format => $class ) {
- $theseParams = $apiParams + array( 'feedformat' => $format );
- $url = $feedTemplate . wfArrayToCGI( $theseParams );
- $wgOut->addFeedLink( $format, $url );
- }
-
- $skin = $wgUser->getSkin();
- $specialTitle = SpecialPage::getTitleFor( 'Watchlist' );
- $wgOut->setRobotPolicy( 'noindex,nofollow' );
- # Anons don't get a watchlist
- if( $wgUser->isAnon() ) {
- $wgOut->setPageTitle( wfMsg( 'watchnologin' ) );
- $llink = $skin->linkKnown(
- SpecialPage::getTitleFor( 'Userlogin' ),
- wfMsgHtml( 'loginreqlink' ),
- array(),
- array( 'returnto' => $specialTitle->getPrefixedText() )
- );
- $wgOut->addHTML( wfMsgWikiHtml( 'watchlistanontext', $llink ) );
- return;
- }
+ /**
+ * Execute
+ * @param $par Parameter passed to the page
+ */
+ function execute( $par ) {
+ global $wgRCShowWatchingUsers, $wgEnotifWatchlist, $wgShowUpdatedMarker;
+
+ $user = $this->getUser();
+ $output = $this->getOutput();
+
+ // Add feed links
+ $wlToken = $user->getOption( 'watchlisttoken' );
+ if ( !$wlToken ) {
+ $wlToken = sha1( mt_rand() . microtime( true ) );
+ $user->setOption( 'watchlisttoken', $wlToken );
+ $user->saveSettings();
+ }
- $wgOut->setPageTitle( wfMsg( 'watchlist' ) );
+ $this->addFeedLinks( array( 'action' => 'feedwatchlist', 'allrev' => 'allrev',
+ 'wlowner' => $user->getName(), 'wltoken' => $wlToken ) );
+
+ $output->setRobotPolicy( 'noindex,nofollow' );
+
+ # Anons don't get a watchlist
+ if( $user->isAnon() ) {
+ $output->setPageTitle( wfMsg( 'watchnologin' ) );
+ $llink = Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Userlogin' ),
+ wfMsgHtml( 'loginreqlink' ),
+ array(),
+ array( 'returnto' => $this->getTitle()->getPrefixedText() )
+ );
+ $output->addHTML( wfMessage( 'watchlistanontext' )->rawParams( $llink )->parse() );
+ return;
+ }
- $sub = wfMsgExt( 'watchlistfor2', array( 'parseinline', 'replaceafter' ), $wgUser->getName(), WatchlistEditor::buildTools( $wgUser->getSkin() ) );
- $wgOut->setSubtitle( $sub );
+ $this->setHeaders();
+ $this->outputHeader();
- if( ( $mode = WatchlistEditor::getMode( $wgRequest, $par ) ) !== false ) {
- $editor = new WatchlistEditor();
- $editor->execute( $wgUser, $wgOut, $wgRequest, $mode );
- return;
- }
+ $sub = wfMsgExt(
+ 'watchlistfor2',
+ array( 'parseinline', 'replaceafter' ),
+ $user->getName(),
+ SpecialEditWatchlist::buildTools( $this->getSkin() )
+ );
+ $output->setSubtitle( $sub );
+
+ $request = $this->getRequest();
+
+ $mode = SpecialEditWatchlist::getMode( $request, $par );
+ if( $mode !== false ) {
+ # TODO: localise?
+ switch( $mode ){
+ case SpecialEditWatchlist::EDIT_CLEAR:
+ $mode = 'clear';
+ break;
+ case SpecialEditWatchlist::EDIT_RAW:
+ $mode = 'raw';
+ break;
+ default:
+ $mode = null;
+ }
+ $title = SpecialPage::getTitleFor( 'EditWatchlist', $mode );
+ $output->redirect( $title->getLocalUrl() );
+ return;
+ }
- $uid = $wgUser->getId();
- if( ($wgEnotifWatchlist || $wgShowUpdatedMarker) && $wgRequest->getVal( 'reset' ) &&
- $wgRequest->wasPosted() )
- {
- $wgUser->clearAllNotifications( $uid );
- $wgOut->redirect( $specialTitle->getFullUrl() );
- return;
- }
+ if( ( $wgEnotifWatchlist || $wgShowUpdatedMarker ) && $request->getVal( 'reset' ) &&
+ $request->wasPosted() )
+ {
+ $user->clearAllNotifications();
+ $output->redirect( $this->getTitle()->getFullUrl() );
+ return;
+ }
- $defaults = array(
- /* float */ 'days' => floatval( $wgUser->getOption( 'watchlistdays' ) ), /* 3.0 or 0.5, watch further below */
- /* bool */ 'hideMinor' => (int)$wgUser->getBoolOption( 'watchlisthideminor' ),
- /* bool */ 'hideBots' => (int)$wgUser->getBoolOption( 'watchlisthidebots' ),
- /* bool */ 'hideAnons' => (int)$wgUser->getBoolOption( 'watchlisthideanons' ),
- /* bool */ 'hideLiu' => (int)$wgUser->getBoolOption( 'watchlisthideliu' ),
- /* bool */ 'hidePatrolled' => (int)$wgUser->getBoolOption( 'watchlisthidepatrolled' ),
- /* bool */ 'hideOwn' => (int)$wgUser->getBoolOption( 'watchlisthideown' ),
- /* ? */ 'namespace' => 'all',
- /* ? */ 'invert' => false,
- );
-
- extract($defaults);
-
- # Extract variables from the request, falling back to user preferences or
- # other default values if these don't exist
- $prefs['days'] = floatval( $wgUser->getOption( 'watchlistdays' ) );
- $prefs['hideminor'] = $wgUser->getBoolOption( 'watchlisthideminor' );
- $prefs['hidebots'] = $wgUser->getBoolOption( 'watchlisthidebots' );
- $prefs['hideanons'] = $wgUser->getBoolOption( 'watchlisthideanons' );
- $prefs['hideliu'] = $wgUser->getBoolOption( 'watchlisthideliu' );
- $prefs['hideown' ] = $wgUser->getBoolOption( 'watchlisthideown' );
- $prefs['hidepatrolled' ] = $wgUser->getBoolOption( 'watchlisthidepatrolled' );
-
- # Get query variables
- $days = $wgRequest->getVal( 'days' , $prefs['days'] );
- $hideMinor = $wgRequest->getBool( 'hideMinor', $prefs['hideminor'] );
- $hideBots = $wgRequest->getBool( 'hideBots' , $prefs['hidebots'] );
- $hideAnons = $wgRequest->getBool( 'hideAnons', $prefs['hideanons'] );
- $hideLiu = $wgRequest->getBool( 'hideLiu' , $prefs['hideliu'] );
- $hideOwn = $wgRequest->getBool( 'hideOwn' , $prefs['hideown'] );
- $hidePatrolled = $wgRequest->getBool( 'hidePatrolled' , $prefs['hidepatrolled'] );
-
- # Get namespace value, if supplied, and prepare a WHERE fragment
- $nameSpace = $wgRequest->getIntOrNull( 'namespace' );
- $invert = $wgRequest->getIntOrNull( 'invert' );
- if( !is_null( $nameSpace ) ) {
- $nameSpace = intval( $nameSpace );
- if( $invert && $nameSpace !== 'all' )
- $nameSpaceClause = "rc_namespace != $nameSpace";
- else
- $nameSpaceClause = "rc_namespace = $nameSpace";
- } else {
- $nameSpace = '';
- $nameSpaceClause = '';
- }
+ $nitems = $this->countItems();
+ if ( $nitems == 0 ) {
+ $output->addWikiMsg( 'nowatchlist' );
+ return;
+ }
- $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
- $recentchanges = $dbr->tableName( 'recentchanges' );
+ // @TODO: use FormOptions!
+ $defaults = array(
+ /* float */ 'days' => floatval( $user->getOption( 'watchlistdays' ) ), /* 3.0 or 0.5, watch further below */
+ /* bool */ 'hideMinor' => (int)$user->getBoolOption( 'watchlisthideminor' ),
+ /* bool */ 'hideBots' => (int)$user->getBoolOption( 'watchlisthidebots' ),
+ /* bool */ 'hideAnons' => (int)$user->getBoolOption( 'watchlisthideanons' ),
+ /* bool */ 'hideLiu' => (int)$user->getBoolOption( 'watchlisthideliu' ),
+ /* bool */ 'hidePatrolled' => (int)$user->getBoolOption( 'watchlisthidepatrolled' ),
+ /* bool */ 'hideOwn' => (int)$user->getBoolOption( 'watchlisthideown' ),
+ /* ? */ 'namespace' => 'all',
+ /* ? */ 'invert' => false,
+ );
+ $this->customFilters = array();
+ wfRunHooks( 'SpecialWatchlistFilters', array( $this, &$this->customFilters ) );
+ foreach( $this->customFilters as $key => $params ) {
+ $defaults[$key] = $params['msg'];
+ }
- $watchlistCount = $dbr->selectField( 'watchlist', 'COUNT(*)',
- array( 'wl_user' => $uid ), __METHOD__ );
- // Adjust for page X, talk:page X, which are both stored separately,
- // but treated together
- $nitems = floor($watchlistCount / 2);
+ # Extract variables from the request, falling back to user preferences or
+ # other default values if these don't exist
+ $prefs['days'] = floatval( $user->getOption( 'watchlistdays' ) );
+ $prefs['hideminor'] = $user->getBoolOption( 'watchlisthideminor' );
+ $prefs['hidebots'] = $user->getBoolOption( 'watchlisthidebots' );
+ $prefs['hideanons'] = $user->getBoolOption( 'watchlisthideanons' );
+ $prefs['hideliu'] = $user->getBoolOption( 'watchlisthideliu' );
+ $prefs['hideown' ] = $user->getBoolOption( 'watchlisthideown' );
+ $prefs['hidepatrolled' ] = $user->getBoolOption( 'watchlisthidepatrolled' );
+
+ # Get query variables
+ $values = array();
+ $values['days'] = $request->getVal( 'days', $prefs['days'] );
+ $values['hideMinor'] = (int)$request->getBool( 'hideMinor', $prefs['hideminor'] );
+ $values['hideBots'] = (int)$request->getBool( 'hideBots' , $prefs['hidebots'] );
+ $values['hideAnons'] = (int)$request->getBool( 'hideAnons', $prefs['hideanons'] );
+ $values['hideLiu'] = (int)$request->getBool( 'hideLiu' , $prefs['hideliu'] );
+ $values['hideOwn'] = (int)$request->getBool( 'hideOwn' , $prefs['hideown'] );
+ $values['hidePatrolled'] = (int)$request->getBool( 'hidePatrolled', $prefs['hidepatrolled'] );
+ foreach( $this->customFilters as $key => $params ) {
+ $values[$key] = (int)$request->getBool( $key );
+ }
- if( is_null($days) || !is_numeric($days) ) {
- $big = 1000; /* The magical big */
- if($nitems > $big) {
- # Set default cutoff shorter
- $days = $defaults['days'] = (12.0 / 24.0); # 12 hours...
+ # Get namespace value, if supplied, and prepare a WHERE fragment
+ $nameSpace = $request->getIntOrNull( 'namespace' );
+ $invert = $request->getIntOrNull( 'invert' );
+ if ( !is_null( $nameSpace ) ) {
+ $nameSpace = intval( $nameSpace ); // paranioa
+ if ( $invert ) {
+ $nameSpaceClause = "rc_namespace != $nameSpace";
+ } else {
+ $nameSpaceClause = "rc_namespace = $nameSpace";
+ }
} else {
- $days = $defaults['days']; # default cutoff for shortlisters
+ $nameSpace = '';
+ $nameSpaceClause = '';
+ }
+ $values['namespace'] = $nameSpace;
+ $values['invert'] = $invert;
+
+ if( is_null( $values['days'] ) || !is_numeric( $values['days'] ) ) {
+ $big = 1000; /* The magical big */
+ if( $nitems > $big ) {
+ # Set default cutoff shorter
+ $values['days'] = $defaults['days'] = (12.0 / 24.0); # 12 hours...
+ } else {
+ $values['days'] = $defaults['days']; # default cutoff for shortlisters
+ }
+ } else {
+ $values['days'] = floatval( $values['days'] );
}
- } else {
- $days = floatval($days);
- }
-
- // Dump everything here
- $nondefaults = array();
-
- wfAppendToArrayIfNotDefault( 'days' , $days , $defaults, $nondefaults);
- wfAppendToArrayIfNotDefault( 'hideMinor', (int)$hideMinor, $defaults, $nondefaults );
- wfAppendToArrayIfNotDefault( 'hideBots' , (int)$hideBots , $defaults, $nondefaults);
- wfAppendToArrayIfNotDefault( 'hideAnons', (int)$hideAnons, $defaults, $nondefaults );
- wfAppendToArrayIfNotDefault( 'hideLiu' , (int)$hideLiu , $defaults, $nondefaults );
- wfAppendToArrayIfNotDefault( 'hideOwn' , (int)$hideOwn , $defaults, $nondefaults);
- wfAppendToArrayIfNotDefault( 'namespace', $nameSpace , $defaults, $nondefaults);
- wfAppendToArrayIfNotDefault( 'hidePatrolled', (int)$hidePatrolled, $defaults, $nondefaults );
-
- if( $nitems == 0 ) {
- $wgOut->addWikiMsg( 'nowatchlist' );
- return;
- }
-
- # Possible where conditions
- $conds = array();
-
- if( $days > 0 ) {
- $conds[] = "rc_timestamp > '".$dbr->timestamp( time() - intval( $days * 86400 ) )."'";
- }
-
- # If the watchlist is relatively short, it's simplest to zip
- # down its entirety and then sort the results.
-
- # If it's relatively long, it may be worth our while to zip
- # through the time-sorted page list checking for watched items.
-
- # Up estimate of watched items by 15% to compensate for talk pages...
- # Toggles
- if( $hideOwn ) {
- $conds[] = "rc_user != $uid";
- }
- if( $hideBots ) {
- $conds[] = 'rc_bot = 0';
- }
- if( $hideMinor ) {
- $conds[] = 'rc_minor = 0';
- }
- if( $hideLiu ) {
- $conds[] = 'rc_user = 0';
- }
- if( $hideAnons ) {
- $conds[] = 'rc_user != 0';
- }
- if ( $wgUser->useRCPatrol() && $hidePatrolled ) {
- $conds[] = 'rc_patrolled != 1';
- }
- if( $nameSpaceClause ) {
- $conds[] = $nameSpaceClause;
- }
+ // Dump everything here
+ $nondefaults = array();
+ foreach ( $defaults as $name => $defValue ) {
+ wfAppendToArrayIfNotDefault( $name, $values[$name], $defaults, $nondefaults );
+ }
- # Toggle watchlist content (all recent edits or just the latest)
- if( $wgUser->getOption( 'extendwatchlist' )) {
- $limitWatchlist = intval( $wgUser->getOption( 'wllimit' ) );
- $usePage = false;
- } else {
- # Top log Ids for a page are not stored
- $conds[] = 'rc_this_oldid=page_latest OR rc_type=' . RC_LOG;
- $limitWatchlist = 0;
- $usePage = true;
- }
+ $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
- # Show a message about slave lag, if applicable
- if( ( $lag = $dbr->getLag() ) > 0 )
- $wgOut->showLagWarning( $lag );
+ # Possible where conditions
+ $conds = array();
- # Create output form
- $form = Xml::fieldset( wfMsg( 'watchlist-options' ), false, array( 'id' => 'mw-watchlist-options' ) );
+ if( $values['days'] > 0 ) {
+ $conds[] = "rc_timestamp > '".$dbr->timestamp( time() - intval( $values['days'] * 86400 ) )."'";
+ }
- # Show watchlist header
- $form .= wfMsgExt( 'watchlist-details', array( 'parseinline' ), $wgLang->formatNum( $nitems ) );
+ # If the watchlist is relatively short, it's simplest to zip
+ # down its entirety and then sort the results.
- if( $wgUser->getOption( 'enotifwatchlistpages' ) && $wgEnotifWatchlist) {
- $form .= wfMsgExt( 'wlheader-enotif', 'parse' ) . "\n";
- }
- if( $wgShowUpdatedMarker ) {
- $form .= Xml::openElement( 'form', array( 'method' => 'post',
- 'action' => $specialTitle->getLocalUrl(),
- 'id' => 'mw-watchlist-resetbutton' ) ) .
- wfMsgExt( 'wlheader-showupdated', array( 'parseinline' ) ) . ' ' .
- Xml::submitButton( wfMsg( 'enotif_reset' ), array( 'name' => 'dummy' ) ) .
- Html::hidden( 'reset', 'all' ) .
- Xml::closeElement( 'form' );
- }
- $form .= '<hr />';
-
- $tables = array( 'recentchanges', 'watchlist' );
- $fields = array( "{$recentchanges}.*" );
- $join_conds = array(
- 'watchlist' => array('INNER JOIN',"wl_user='{$uid}' AND wl_namespace=rc_namespace AND wl_title=rc_title"),
- );
- $options = array( 'ORDER BY' => 'rc_timestamp DESC' );
- if( $wgShowUpdatedMarker ) {
- $fields[] = 'wl_notificationtimestamp';
- }
- if( $limitWatchlist ) {
- $options['LIMIT'] = $limitWatchlist;
- }
+ # If it's relatively long, it may be worth our while to zip
+ # through the time-sorted page list checking for watched items.
- $rollbacker = $wgUser->isAllowed('rollback');
- if ( $usePage || $rollbacker ) {
- $tables[] = 'page';
- $join_conds['page'] = array('LEFT JOIN','rc_cur_id=page_id');
- if ($rollbacker)
- $fields[] = 'page_latest';
- }
+ # Up estimate of watched items by 15% to compensate for talk pages...
- ChangeTags::modifyDisplayQuery( $tables, $fields, $conds, $join_conds, $options, '' );
- wfRunHooks('SpecialWatchlistQuery', array(&$conds,&$tables,&$join_conds,&$fields) );
-
- $res = $dbr->select( $tables, $fields, $conds, __METHOD__, $options, $join_conds );
- $numRows = $dbr->numRows( $res );
-
- /* Start bottom header */
-
- $wlInfo = '';
- if( $days >= 1 ) {
- $wlInfo = wfMsgExt( 'rcnote', 'parseinline',
- $wgLang->formatNum( $numRows ),
- $wgLang->formatNum( $days ),
- $wgLang->timeAndDate( wfTimestampNow(), true ),
- $wgLang->date( wfTimestampNow(), true ),
- $wgLang->time( wfTimestampNow(), true )
- ) . '<br />';
- } elseif( $days > 0 ) {
- $wlInfo = wfMsgExt( 'wlnote', 'parseinline',
- $wgLang->formatNum( $numRows ),
- $wgLang->formatNum( round($days*24) )
- ) . '<br />';
- }
- $cutofflinks = "\n" . wlCutoffLinks( $days, 'Watchlist', $nondefaults ) . "<br />\n";
+ # Toggles
+ if( $values['hideOwn'] ) {
+ $conds[] = 'rc_user != ' . $user->getId();
+ }
+ if( $values['hideBots'] ) {
+ $conds[] = 'rc_bot = 0';
+ }
+ if( $values['hideMinor'] ) {
+ $conds[] = 'rc_minor = 0';
+ }
+ if( $values['hideLiu'] ) {
+ $conds[] = 'rc_user = 0';
+ }
+ if( $values['hideAnons'] ) {
+ $conds[] = 'rc_user != 0';
+ }
+ if ( $user->useRCPatrol() && $values['hidePatrolled'] ) {
+ $conds[] = 'rc_patrolled != 1';
+ }
+ if ( $nameSpaceClause ) {
+ $conds[] = $nameSpaceClause;
+ }
- $thisTitle = SpecialPage::getTitleFor( 'Watchlist' );
+ # Toggle watchlist content (all recent edits or just the latest)
+ if( $user->getOption( 'extendwatchlist' ) ) {
+ $limitWatchlist = intval( $user->getOption( 'wllimit' ) );
+ $usePage = false;
+ } else {
+ # Top log Ids for a page are not stored
+ $conds[] = 'rc_this_oldid=page_latest OR rc_type=' . RC_LOG;
+ $limitWatchlist = 0;
+ $usePage = true;
+ }
- # Spit out some control panel links
- $links[] = wlShowHideLink( $nondefaults, 'rcshowhideminor', 'hideMinor', $hideMinor );
- $links[] = wlShowHideLink( $nondefaults, 'rcshowhidebots', 'hideBots', $hideBots );
- $links[] = wlShowHideLink( $nondefaults, 'rcshowhideanons', 'hideAnons', $hideAnons );
- $links[] = wlShowHideLink( $nondefaults, 'rcshowhideliu', 'hideLiu', $hideLiu );
- $links[] = wlShowHideLink( $nondefaults, 'rcshowhidemine', 'hideOwn', $hideOwn );
+ # Show a message about slave lag, if applicable
+ $lag = wfGetLB()->safeGetLag( $dbr );
+ if( $lag > 0 ) {
+ $output->showLagWarning( $lag );
+ }
- if( $wgUser->useRCPatrol() ) {
- $links[] = wlShowHideLink( $nondefaults, 'rcshowhidepatr', 'hidePatrolled', $hidePatrolled );
- }
+ $lang = $this->getLang();
- # Namespace filter and put the whole form together.
- $form .= $wlInfo;
- $form .= $cutofflinks;
- $form .= $wgLang->pipeList( $links );
- $form .= Xml::openElement( 'form', array( 'method' => 'post', 'action' => $thisTitle->getLocalUrl(), 'id' => 'mw-watchlist-form-namespaceselector' ) );
- $form .= '<hr /><p>';
- $form .= Xml::label( wfMsg( 'namespace' ), 'namespace' ) . '&#160;';
- $form .= Xml::namespaceSelector( $nameSpace, '' ) . '&#160;';
- $form .= Xml::checkLabel( wfMsg('invert'), 'invert', 'nsinvert', $invert ) . '&#160;';
- $form .= Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . '</p>';
- $form .= Html::hidden( 'days', $days );
- if( $hideMinor )
- $form .= Html::hidden( 'hideMinor', 1 );
- if( $hideBots )
- $form .= Html::hidden( 'hideBots', 1 );
- if( $hideAnons )
- $form .= Html::hidden( 'hideAnons', 1 );
- if( $hideLiu )
- $form .= Html::hidden( 'hideLiu', 1 );
- if( $hideOwn )
- $form .= Html::hidden( 'hideOwn', 1 );
- $form .= Xml::closeElement( 'form' );
- $form .= Xml::closeElement( 'fieldset' );
- $wgOut->addHTML( $form );
-
- # If there's nothing to show, stop here
- if( $numRows == 0 ) {
- $wgOut->addWikiMsg( 'watchnochange' );
- return;
- }
+ # Create output form
+ $form = Xml::fieldset( wfMsg( 'watchlist-options' ), false, array( 'id' => 'mw-watchlist-options' ) );
- /* End bottom header */
+ # Show watchlist header
+ $form .= wfMsgExt( 'watchlist-details', array( 'parseinline' ), $lang->formatNum( $nitems ) );
- /* Do link batch query */
- $linkBatch = new LinkBatch;
- foreach ( $res as $row ) {
- $userNameUnderscored = str_replace( ' ', '_', $row->rc_user_text );
- if ( $row->rc_user != 0 ) {
- $linkBatch->add( NS_USER, $userNameUnderscored );
+ if( $user->getOption( 'enotifwatchlistpages' ) && $wgEnotifWatchlist) {
+ $form .= wfMsgExt( 'wlheader-enotif', 'parse' ) . "\n";
}
- $linkBatch->add( NS_USER_TALK, $userNameUnderscored );
-
- $linkBatch->add( $row->rc_namespace, $row->rc_title );
- }
- $linkBatch->execute();
- $dbr->dataSeek( $res, 0 );
-
- $list = ChangesList::newFromUser( $wgUser );
- $list->setWatchlistDivs();
-
- $s = $list->beginRecentChangesList();
- $counter = 1;
- foreach ( $res as $obj ) {
- # Make RC entry
- $rc = RecentChange::newFromRow( $obj );
- $rc->counter = $counter++;
-
- if ( $wgShowUpdatedMarker ) {
- $updated = $obj->wl_notificationtimestamp;
- } else {
- $updated = false;
+ if( $wgShowUpdatedMarker ) {
+ $form .= Xml::openElement( 'form', array( 'method' => 'post',
+ 'action' => $this->getTitle()->getLocalUrl(),
+ 'id' => 'mw-watchlist-resetbutton' ) ) .
+ wfMsgExt( 'wlheader-showupdated', array( 'parseinline' ) ) . ' ' .
+ Xml::submitButton( wfMsg( 'enotif_reset' ), array( 'name' => 'dummy' ) ) .
+ Html::hidden( 'reset', 'all' ) .
+ Xml::closeElement( 'form' );
}
+ $form .= '<hr />';
- if ($wgRCShowWatchingUsers && $wgUser->getOption( 'shownumberswatching' )) {
- $rc->numberofWatchingusers = $dbr->selectField( 'watchlist',
- 'COUNT(*)',
- array(
- 'wl_namespace' => $obj->rc_namespace,
- 'wl_title' => $obj->rc_title,
- ),
- __METHOD__ );
- } else {
- $rc->numberofWatchingusers = 0;
+ $tables = array( 'recentchanges', 'watchlist' );
+ $fields = array( $dbr->tableName( 'recentchanges' ) . '.*' );
+ $join_conds = array(
+ 'watchlist' => array('INNER JOIN',"wl_user='{$user->getId()}' AND wl_namespace=rc_namespace AND wl_title=rc_title"),
+ );
+ $options = array( 'ORDER BY' => 'rc_timestamp DESC' );
+ if( $wgShowUpdatedMarker ) {
+ $fields[] = 'wl_notificationtimestamp';
+ }
+ if( $limitWatchlist ) {
+ $options['LIMIT'] = $limitWatchlist;
}
- $s .= $list->recentChangesLine( $rc, $updated, $counter );
- }
- $s .= $list->endRecentChangesList();
-
- $wgOut->addHTML( $s );
-}
+ $rollbacker = $user->isAllowed('rollback');
+ if ( $usePage || $rollbacker ) {
+ $tables[] = 'page';
+ $join_conds['page'] = array('LEFT JOIN','rc_cur_id=page_id');
+ if ( $rollbacker ) {
+ $fields[] = 'page_latest';
+ }
+ }
-function wlShowHideLink( $options, $message, $name, $value ) {
- global $wgUser;
+ ChangeTags::modifyDisplayQuery( $tables, $fields, $conds, $join_conds, $options, '' );
+ wfRunHooks('SpecialWatchlistQuery', array(&$conds,&$tables,&$join_conds,&$fields) );
+
+ $res = $dbr->select( $tables, $fields, $conds, __METHOD__, $options, $join_conds );
+ $numRows = $dbr->numRows( $res );
+
+ /* Start bottom header */
+
+ $wlInfo = '';
+ if( $values['days'] >= 1 ) {
+ $timestamp = wfTimestampNow();
+ $wlInfo = wfMsgExt( 'rcnote', 'parseinline',
+ $lang->formatNum( $numRows ),
+ $lang->formatNum( $values['days'] ),
+ $lang->timeAndDate( $timestamp, true ),
+ $lang->date( $timestamp, true ),
+ $lang->time( $timestamp, true )
+ ) . '<br />';
+ } elseif( $values['days'] > 0 ) {
+ $wlInfo = wfMsgExt( 'wlnote', 'parseinline',
+ $lang->formatNum( $numRows ),
+ $lang->formatNum( round( $values['days'] * 24 ) )
+ ) . '<br />';
+ }
- $showLinktext = wfMsgHtml( 'show' );
- $hideLinktext = wfMsgHtml( 'hide' );
- $title = SpecialPage::getTitleFor( 'Watchlist' );
- $skin = $wgUser->getSkin();
+ $cutofflinks = "\n" . $this->cutoffLinks( $values['days'], $nondefaults ) . "<br />\n";
- $label = $value ? $showLinktext : $hideLinktext;
- $options[$name] = 1 - (int) $value;
+ # Spit out some control panel links
+ $filters = array(
+ 'hideMinor' => 'rcshowhideminor',
+ 'hideBots' => 'rcshowhidebots',
+ 'hideAnons' => 'rcshowhideanons',
+ 'hideLiu' => 'rcshowhideliu',
+ 'hideOwn' => 'rcshowhidemine',
+ 'hidePatrolled' => 'rcshowhidepatr'
+ );
+ foreach ( $this->customFilters as $key => $params ) {
+ $filters[$key] = $params['msg'];
+ }
+ // Disable some if needed
+ if ( !$user->useNPPatrol() ) {
+ unset( $filters['hidePatrolled'] );
+ }
- return wfMsgHtml( $message, $skin->linkKnown( $title, $label, array(), $options ) );
-}
+ $links = array();
+ foreach( $filters as $name => $msg ) {
+ $links[] = $this->showHideLink( $nondefaults, $msg, $name, $values[$name] );
+ }
+ # Namespace filter and put the whole form together.
+ $form .= $wlInfo;
+ $form .= $cutofflinks;
+ $form .= $lang->pipeList( $links );
+ $form .= Xml::openElement( 'form', array( 'method' => 'post', 'action' => $this->getTitle()->getLocalUrl(), 'id' => 'mw-watchlist-form-namespaceselector' ) );
+ $form .= '<hr /><p>';
+ $form .= Xml::label( wfMsg( 'namespace' ), 'namespace' ) . '&#160;';
+ $form .= Xml::namespaceSelector( $nameSpace, '' ) . '&#160;';
+ $form .= Xml::checkLabel( wfMsg('invert'), 'invert', 'nsinvert', $invert ) . '&#160;';
+ $form .= Xml::submitButton( wfMsg( 'allpagessubmit' ) ) . '</p>';
+ $form .= Html::hidden( 'days', $values['days'] );
+ foreach ( $filters as $key => $msg ) {
+ if ( $values[$key] ) {
+ $form .= Html::hidden( $key, 1 );
+ }
+ }
+ $form .= Xml::closeElement( 'form' );
+ $form .= Xml::closeElement( 'fieldset' );
+ $output->addHTML( $form );
+
+ # If there's nothing to show, stop here
+ if( $numRows == 0 ) {
+ $output->addWikiMsg( 'watchnochange' );
+ return;
+ }
-function wlHoursLink( $h, $page, $options = array() ) {
- global $wgUser, $wgLang, $wgContLang;
+ /* End bottom header */
- $sk = $wgUser->getSkin();
- $title = Title::newFromText( $wgContLang->specialPage( $page ) );
- $options['days'] = ($h / 24.0);
+ /* Do link batch query */
+ $linkBatch = new LinkBatch;
+ foreach ( $res as $row ) {
+ $userNameUnderscored = str_replace( ' ', '_', $row->rc_user_text );
+ if ( $row->rc_user != 0 ) {
+ $linkBatch->add( NS_USER, $userNameUnderscored );
+ }
+ $linkBatch->add( NS_USER_TALK, $userNameUnderscored );
- $s = $sk->linkKnown(
- $title,
- $wgLang->formatNum( $h ),
- array(),
- $options
- );
+ $linkBatch->add( $row->rc_namespace, $row->rc_title );
+ }
+ $linkBatch->execute();
+ $dbr->dataSeek( $res, 0 );
+
+ $list = ChangesList::newFromContext( $this->getContext() );
+ $list->setWatchlistDivs();
+
+ $s = $list->beginRecentChangesList();
+ $counter = 1;
+ foreach ( $res as $obj ) {
+ # Make RC entry
+ $rc = RecentChange::newFromRow( $obj );
+ $rc->counter = $counter++;
+
+ if ( $wgShowUpdatedMarker ) {
+ $updated = $obj->wl_notificationtimestamp;
+ } else {
+ $updated = false;
+ }
+
+ if ( $wgRCShowWatchingUsers && $user->getOption( 'shownumberswatching' ) ) {
+ $rc->numberofWatchingusers = $dbr->selectField( 'watchlist',
+ 'COUNT(*)',
+ array(
+ 'wl_namespace' => $obj->rc_namespace,
+ 'wl_title' => $obj->rc_title,
+ ),
+ __METHOD__ );
+ } else {
+ $rc->numberofWatchingusers = 0;
+ }
+
+ $s .= $list->recentChangesLine( $rc, $updated, $counter );
+ }
+ $s .= $list->endRecentChangesList();
- return $s;
-}
+ $output->addHTML( $s );
+ }
-function wlDaysLink( $d, $page, $options = array() ) {
- global $wgUser, $wgLang, $wgContLang;
+ protected function showHideLink( $options, $message, $name, $value ) {
+ $showLinktext = wfMsgHtml( 'show' );
+ $hideLinktext = wfMsgHtml( 'hide' );
- $sk = $wgUser->getSkin();
- $title = Title::newFromText( $wgContLang->specialPage( $page ) );
- $options['days'] = $d;
- $message = ($d ? $wgLang->formatNum( $d ) : wfMsgHtml( 'watchlistall2' ) );
+ $label = $value ? $showLinktext : $hideLinktext;
+ $options[$name] = 1 - (int) $value;
- $s = $sk->linkKnown(
- $title,
- $message,
- array(),
- $options
- );
+ return wfMsgHtml( $message, Linker::linkKnown( $this->getTitle(), $label, array(), $options ) );
+ }
- return $s;
-}
+ protected function hoursLink( $h, $options = array() ) {
+ $options['days'] = ( $h / 24.0 );
-/**
- * Returns html
- */
-function wlCutoffLinks( $days, $page = 'Watchlist', $options = array() ) {
- global $wgLang;
-
- $hours = array( 1, 2, 6, 12 );
- $days = array( 1, 3, 7 );
- $i = 0;
- foreach( $hours as $h ) {
- $hours[$i++] = wlHoursLink( $h, $page, $options );
- }
- $i = 0;
- foreach( $days as $d ) {
- $days[$i++] = wlDaysLink( $d, $page, $options );
+ return Linker::linkKnown(
+ $this->getTitle(),
+ $this->getLang()->formatNum( $h ),
+ array(),
+ $options
+ );
}
- return wfMsgExt('wlshowlast',
- array('parseinline', 'replaceafter'),
- $wgLang->pipeList( $hours ),
- $wgLang->pipeList( $days ),
- wlDaysLink( 0, $page, $options ) );
-}
-/**
- * Count the number of items on a user's watchlist
- *
- * @param $user User object
- * @param $talk Boolean: include talk pages
- * @return Integer
- */
-function wlCountItems( &$user, $talk = true ) {
- $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
+ protected function daysLink( $d, $options = array() ) {
+ $options['days'] = $d;
+ $message = ( $d ? $this->getLang()->formatNum( $d ) : wfMsgHtml( 'watchlistall2' ) );
- # Fetch the raw count
- $res = $dbr->select( 'watchlist', 'COUNT(*) AS count',
- array( 'wl_user' => $user->mId ), 'wlCountItems' );
- $row = $dbr->fetchObject( $res );
- $count = $row->count;
+ return Linker::linkKnown(
+ $this->getTitle(),
+ $message,
+ array(),
+ $options
+ );
+ }
- # Halve to remove talk pages if needed
- if( !$talk )
- $count = floor( $count / 2 );
+ /**
+ * Returns html
+ *
+ * @return string
+ */
+ protected function cutoffLinks( $days, $options = array() ) {
+ $hours = array( 1, 2, 6, 12 );
+ $days = array( 1, 3, 7 );
+ $i = 0;
+ foreach( $hours as $h ) {
+ $hours[$i++] = $this->hoursLink( $h, $options );
+ }
+ $i = 0;
+ foreach( $days as $d ) {
+ $days[$i++] = $this->daysLink( $d, $options );
+ }
+ return wfMsgExt('wlshowlast',
+ array('parseinline', 'replaceafter'),
+ $this->getLang()->pipeList( $hours ),
+ $this->getLang()->pipeList( $days ),
+ $this->daysLink( 0, $options ) );
+ }
- return( $count );
+ /**
+ * Count the number of items on a user's watchlist
+ *
+ * @return Integer
+ */
+ protected function countItems() {
+ $dbr = wfGetDB( DB_SLAVE, 'watchlist' );
+
+ # Fetch the raw count
+ $res = $dbr->select( 'watchlist', 'COUNT(*) AS count',
+ array( 'wl_user' => $this->getUser()->getId() ), __METHOD__ );
+ $row = $dbr->fetchObject( $res );
+ $count = $row->count;
+
+ return floor( $count / 2 );
+ }
}
diff --git a/includes/specials/SpecialWhatlinkshere.php b/includes/specials/SpecialWhatlinkshere.php
index 360f3f68..5cdaad6a 100644
--- a/includes/specials/SpecialWhatlinkshere.php
+++ b/includes/specials/SpecialWhatlinkshere.php
@@ -28,23 +28,27 @@
*/
class SpecialWhatLinksHere extends SpecialPage {
- // Stored objects
- protected $opts, $target, $selfTitle;
+ /**
+ * @var FormOptions
+ */
+ protected $opts;
- // Stored globals
- protected $skin;
+ protected $selfTitle;
+
+ /**
+ * @var Title
+ */
+ protected $target;
protected $limits = array( 20, 50, 100, 250, 500 );
public function __construct() {
parent::__construct( 'Whatlinkshere' );
- global $wgUser;
- $this->skin = $wgUser->getSkin();
}
function execute( $par ) {
- global $wgOut, $wgRequest;
-
+ $out = $this->getOutput();
+
$this->setHeaders();
$opts = new FormOptions();
@@ -59,7 +63,7 @@ class SpecialWhatLinksHere extends SpecialPage {
$opts->add( 'hidelinks', false );
$opts->add( 'hideimages', false );
- $opts->fetchValuesFromRequest( $wgRequest );
+ $opts->fetchValuesFromRequest( $this->getRequest() );
$opts->validateIntBounds( 'limit', 0, 5000 );
// Give precedence to subpage syntax
@@ -72,29 +76,32 @@ class SpecialWhatLinksHere extends SpecialPage {
$this->target = Title::newFromURL( $opts->getValue( 'target' ) );
if( !$this->target ) {
- $wgOut->addHTML( $this->whatlinkshereForm() );
+ $out->addHTML( $this->whatlinkshereForm() );
return;
}
+ $this->getSkin()->setRelevantTitle( $this->target );
+
+
$this->selfTitle = $this->getTitle( $this->target->getPrefixedDBkey() );
- $wgOut->setPageTitle( wfMsg( 'whatlinkshere-title', $this->target->getPrefixedText() ) );
- $wgOut->setSubtitle( wfMsg( 'whatlinkshere-backlink', $this->skin->link( $this->target, $this->target->getPrefixedText(), array(), array( 'redirect' => 'no' ) ) ) );
+ $out->setPageTitle( wfMsg( 'whatlinkshere-title', $this->target->getPrefixedText() ) );
+ $out->setSubtitle( wfMsg( 'whatlinkshere-backlink', Linker::link( $this->target, $this->target->getPrefixedText(), array(), array( 'redirect' => 'no' ) ) ) );
$this->showIndirectLinks( 0, $this->target, $opts->getValue( 'limit' ),
$opts->getValue( 'from' ), $opts->getValue( 'back' ) );
}
/**
- * @param $level int Recursion level
+ * @param $level int Recursion level
* @param $target Title Target title
- * @param $limit int Number of entries to display
- * @param $from Title Display from this article ID
- * @param $back Title Display from this article ID at backwards scrolling
- * @private
+ * @param $limit int Number of entries to display
+ * @param $from Title Display from this article ID
+ * @param $back Title Display from this article ID at backwards scrolling
*/
function showIndirectLinks( $level, $target, $limit, $from = 0, $back = 0 ) {
- global $wgOut, $wgMaxRedirectLinksRetrieved;
+ global $wgMaxRedirectLinksRetrieved;
+ $out = $this->getOutput();
$dbr = wfGetDB( DB_SLAVE );
$options = array();
@@ -171,14 +178,14 @@ class SpecialWhatLinksHere extends SpecialPage {
if( ( !$fetchlinks || !$dbr->numRows($plRes) ) && ( $hidetrans || !$dbr->numRows($tlRes) ) && ( $hideimages || !$dbr->numRows($ilRes) ) ) {
if ( 0 == $level ) {
- $wgOut->addHTML( $this->whatlinkshereForm() );
+ $out->addHTML( $this->whatlinkshereForm() );
// Show filters only if there are links
if( $hidelinks || $hidetrans || $hideredirs || $hideimages )
- $wgOut->addHTML( $this->getFilterPanel() );
+ $out->addHTML( $this->getFilterPanel() );
$errMsg = is_int($namespace) ? 'nolinkshere-ns' : 'nolinkshere';
- $wgOut->addWikiMsg( $errMsg, $this->target->getPrefixedText() );
+ $out->addWikiMsg( $errMsg, $this->target->getPrefixedText() );
}
return;
}
@@ -228,31 +235,31 @@ class SpecialWhatLinksHere extends SpecialPage {
$prevId = $from;
if ( $level == 0 ) {
- $wgOut->addHTML( $this->whatlinkshereForm() );
- $wgOut->addHTML( $this->getFilterPanel() );
- $wgOut->addWikiMsg( 'linkshere', $this->target->getPrefixedText() );
+ $out->addHTML( $this->whatlinkshereForm() );
+ $out->addHTML( $this->getFilterPanel() );
+ $out->addWikiMsg( 'linkshere', $this->target->getPrefixedText() );
$prevnext = $this->getPrevNext( $prevId, $nextId );
- $wgOut->addHTML( $prevnext );
+ $out->addHTML( $prevnext );
}
- $wgOut->addHTML( $this->listStart( $level ) );
+ $out->addHTML( $this->listStart( $level ) );
foreach ( $rows as $row ) {
$nt = Title::makeTitle( $row->page_namespace, $row->page_title );
if ( $row->page_is_redirect && $level < 2 ) {
- $wgOut->addHTML( $this->listItem( $row, $nt, true ) );
+ $out->addHTML( $this->listItem( $row, $nt, true ) );
$this->showIndirectLinks( $level + 1, $nt, $wgMaxRedirectLinksRetrieved );
- $wgOut->addHTML( Xml::closeElement( 'li' ) );
+ $out->addHTML( Xml::closeElement( 'li' ) );
} else {
- $wgOut->addHTML( $this->listItem( $row, $nt ) );
+ $out->addHTML( $this->listItem( $row, $nt ) );
}
}
- $wgOut->addHTML( $this->listEnd() );
+ $out->addHTML( $this->listEnd() );
if( $level == 0 ) {
- $wgOut->addHTML( $prevnext );
+ $out->addHTML( $prevnext );
}
}
@@ -261,6 +268,9 @@ class SpecialWhatLinksHere extends SpecialPage {
}
protected function listItem( $row, $nt, $notClose = false ) {
+ global $wgLang;
+ $dirmark = $wgLang->getDirMark();
+
# local message cache
static $msgcache = null;
if ( $msgcache === null ) {
@@ -278,7 +288,7 @@ class SpecialWhatLinksHere extends SpecialPage {
$query = array();
}
- $link = $this->skin->linkKnown(
+ $link = Linker::linkKnown(
$nt,
null,
array(),
@@ -304,8 +314,8 @@ class SpecialWhatLinksHere extends SpecialPage {
$wlh = Xml::wrapClass( "($wlhLink)", 'mw-whatlinkshere-tools' );
return $notClose ?
- Xml::openElement( 'li' ) . "$link $propsText $wlh\n" :
- Xml::tags( 'li', null, "$link $propsText $wlh" ) . "\n";
+ Xml::openElement( 'li' ) . "$link $propsText $dirmark $wlh\n" :
+ Xml::tags( 'li', null, "$link $propsText $dirmark $wlh" ) . "\n";
}
protected function listEnd() {
@@ -317,7 +327,7 @@ class SpecialWhatLinksHere extends SpecialPage {
if ( $title === null )
$title = $this->getTitle();
- return $this->skin->linkKnown(
+ return Linker::linkKnown(
$title,
$text,
array(),
@@ -326,7 +336,7 @@ class SpecialWhatLinksHere extends SpecialPage {
}
function makeSelfLink( $text, $query ) {
- return $this->skin->linkKnown(
+ return Linker::linkKnown(
$this->selfTitle,
$text,
array(),
@@ -378,7 +388,7 @@ class SpecialWhatLinksHere extends SpecialPage {
# Build up the form
$f = Xml::openElement( 'form', array( 'action' => $wgScript ) );
-
+
# Values that should not be forgotten
$f .= Html::hidden( 'title', $this->getTitle()->getPrefixedText() );
foreach ( $this->opts->getUnconsumedValues() as $name => $value ) {
@@ -410,7 +420,7 @@ class SpecialWhatLinksHere extends SpecialPage {
/**
* Create filter panel
- *
+ *
* @return string HTML fieldset and filter panel with the show/hide links
*/
function getFilterPanel() {
diff --git a/includes/specials/SpecialWithoutinterwiki.php b/includes/specials/SpecialWithoutinterwiki.php
index 90c1f441..9d91b833 100644
--- a/includes/specials/SpecialWithoutinterwiki.php
+++ b/includes/specials/SpecialWithoutinterwiki.php
@@ -30,8 +30,14 @@
class WithoutInterwikiPage extends PageQueryPage {
private $prefix = '';
- function getName() {
- return 'Withoutinterwiki';
+ function __construct( $name = 'Withoutinterwiki' ) {
+ parent::__construct( $name );
+ }
+
+ function execute( $par ) {
+ global $wgRequest;
+ $this->prefix = Title::capitalize( $wgRequest->getVal( 'prefix', $par ), NS_MAIN );
+ parent::execute( $par );
}
function getPageHeader() {
@@ -43,9 +49,9 @@ class WithoutInterwikiPage extends PageQueryPage {
}
$prefix = $this->prefix;
- $t = SpecialPage::getTitleFor( $this->getName() );
+ $t = $this->getTitle();
- return Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) .
+ return Xml::openElement( 'form', array( 'method' => 'get', 'action' => $wgScript ) ) .
Xml::openElement( 'fieldset' ) .
Xml::element( 'legend', null, wfMsg( 'withoutinterwiki-legend' ) ) .
Html::hidden( 'title', $t->getPrefixedText() ) .
@@ -59,6 +65,10 @@ class WithoutInterwikiPage extends PageQueryPage {
return false;
}
+ function getOrderFields() {
+ return array( 'page_namespace', 'page_title' );
+ }
+
function isExpensive() {
return true;
}
@@ -67,36 +77,22 @@ class WithoutInterwikiPage extends PageQueryPage {
return false;
}
- function getSQL() {
- $dbr = wfGetDB( DB_SLAVE );
- list( $page, $langlinks ) = $dbr->tableNamesN( 'page', 'langlinks' );
- $prefix = $this->prefix ? 'AND page_title' . $dbr->buildLike( $this->prefix , $dbr->anyString() ) : '';
- return
- "SELECT 'Withoutinterwiki' AS type,
- page_namespace AS namespace,
- page_title AS title,
- page_title AS value
- FROM $page
- LEFT JOIN $langlinks
- ON ll_from = page_id
- WHERE ll_title IS NULL
- AND page_namespace=" . NS_MAIN . "
- AND page_is_redirect = 0
- {$prefix}";
- }
-
- function setPrefix( $prefix = '' ) {
- $this->prefix = $prefix;
+ function getQueryInfo() {
+ $query = array (
+ 'tables' => array ( 'page', 'langlinks' ),
+ 'fields' => array ( 'page_namespace AS namespace',
+ 'page_title AS title',
+ 'page_title AS value' ),
+ 'conds' => array ( 'll_title IS NULL',
+ 'page_namespace' => NS_MAIN,
+ 'page_is_redirect' => 0 ),
+ 'join_conds' => array ( 'langlinks' => array (
+ 'LEFT JOIN', 'll_from = page_id' ) )
+ );
+ if ( $this->prefix ) {
+ $dbr = wfGetDB( DB_SLAVE );
+ $query['conds'][] = 'page_title ' . $dbr->buildLike( $this->prefix, $dbr->anyString() );
+ }
+ return $query;
}
-
-}
-
-function wfSpecialWithoutinterwiki() {
- global $wgRequest;
- list( $limit, $offset ) = wfCheckLimits();
- // Only searching the mainspace anyway
- $prefix = Title::capitalize( $wgRequest->getVal( 'prefix' ), NS_MAIN );
- $wip = new WithoutInterwikiPage();
- $wip->setPrefix( $prefix );
- $wip->doQuery( $offset, $limit );
}
diff --git a/includes/templates/PHP4.php b/includes/templates/PHP4.php
deleted file mode 100644
index 69f7d55d..00000000
--- a/includes/templates/PHP4.php
+++ /dev/null
@@ -1,102 +0,0 @@
-<?php
-/**
- * Template used when the installer detects that this is PHP 4
- *
- * @file
- * @ingroup Templates
- */
-
-if( !defined( 'MW_PHP4' ) ) {
- die( "Not an entry point.");
-}
-
-if( isset( $_SERVER['SCRIPT_NAME'] ) ) {
- // Probably IIS; doesn't set REQUEST_URI
- $scriptUrl = $_SERVER['SCRIPT_NAME'];
-} elseif( isset( $_SERVER['REQUEST_URI'] ) ) {
- // We're trying SCRIPT_NAME first because it won't include PATH_INFO... hopefully
- $scriptUrl = $_SERVER['REQUEST_URI'];
-} else {
- $scriptUrl = '';
-}
-if ( preg_match( '!^(.*)/(mw-)?config/[^/]*.php$!', $scriptUrl, $m ) ) {
- $baseUrl = $m[1];
-} elseif ( preg_match( '!^(.*)/[^/]*.php$!', $scriptUrl, $m ) ) {
- $baseUrl = $m[1];
-} else {
- $baseUrl = dirname( $scriptUrl );
-}
-
-?>
-<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
-<html xmlns='http://www.w3.org/1999/xhtml' lang='en'>
- <head>
- <title>MediaWiki <?php echo htmlspecialchars( $wgVersion ); ?></title>
- <meta http-equiv='Content-Type' content='text/html; charset=utf-8' />
- <style type='text/css' media='screen'>
- html, body {
- color: #000;
- background-color: #fff;
- font-family: sans-serif;
- text-align: center;
- }
-
- p {
- text-align: left;
- margin-left: 2em;
- margin-right: 2em;
- }
-
- h1 {
- font-size: 150%;
- }
- </style>
- </head>
- <body>
- <img src="<?php echo htmlspecialchars( $baseUrl ) ?>/skins/common/images/mediawiki.png" alt='The MediaWiki logo' />
-
- <h1>MediaWiki <?php echo htmlspecialchars( $wgVersion ); ?></h1>
- <div class='error'>
-<p>
- MediaWiki requires PHP 5.1.x or higher. You are running PHP
- <?php echo htmlspecialchars( phpversion() ); ?>.
-</p>
-<?php
-flush();
-/**
- * Test the *.php5 extension
- */
-$downloadOther = true;
-if ( $baseUrl ) {
- $testUrl = "$wgServer$baseUrl/php5.php5";
- if( function_exists( 'file_get_contents' ) ) {
- $errorLevel = error_reporting();
- error_reporting( $errorLevel & !E_WARNING );
-
- ini_set( 'allow_url_fopen', '1' );
- $s = file_get_contents( $testUrl );
-
- error_reporting( $errorLevel );
- }
-
- if ( strpos( $s, 'yes' ) !== false ) {
- $encUrl = htmlspecialchars( str_replace( '.php', '.php5', $scriptUrl ) );
- echo "<p>You may be able to use MediaWiki using a <a href=\"$encUrl\">.php5</a> file extension.</p>";
- $downloadOther = false;
- }
-}
-if ( $downloadOther ) {
-?>
-<p>Please consider
-<a href="http://www.php.net/downloads.php">upgrading your copy of PHP</a>.
-PHP 4 is at the end of its lifecycle and will not receive further security updates.</p>
-<p>If for some reason you really really need to run MediaWiki on PHP 4, you will need to
-<a href="http://www.mediawiki.org/wiki/Download">download version 1.6.x</a>
-from our website. </p>
-<?php
-}
-?>
-
- </div>
- </body>
-</html>
diff --git a/includes/templates/Userlogin.php b/includes/templates/Userlogin.php
index 99ab2d8e..0bfd9737 100644
--- a/includes/templates/Userlogin.php
+++ b/includes/templates/Userlogin.php
@@ -36,7 +36,7 @@ class UserloginTemplate extends QuickTemplate {
<p id="userloginlink"><?php $this->html('link') ?></p>
<?php $this->html('header'); /* pre-table point for form plugins... */ ?>
<div id="userloginprompt"><?php $this->msgWiki('loginprompt') ?></div>
- <?php if( @$this->haveData( 'languages' ) ) { ?><div id="languagelinks"><p><?php $this->html( 'languages' ); ?></p></div><?php } ?>
+ <?php if( $this->haveData( 'languages' ) ) { ?><div id="languagelinks"><p><?php $this->html( 'languages' ); ?></p></div><?php } ?>
<table>
<tr>
<td class="mw-label"><label for='wpName1'><?php $this->msg('yourname') ?></label></td>
@@ -130,21 +130,29 @@ class UserloginTemplate extends QuickTemplate {
'tabindex' => '9'
) );
if ( $this->data['useemail'] && $this->data['canreset'] ) {
- echo '&#160;';
- echo Html::input( 'wpMailmypassword', wfMsg( 'mailmypassword' ), 'submit', array(
- 'id' => 'wpMailmypassword',
- 'tabindex' => '10'
- ) );
+ if( $this->data['resetlink'] === true ){
+ echo '&#160;';
+ echo Linker::link(
+ SpecialPage::getTitleFor( 'PasswordReset' ),
+ wfMessage( 'userlogin-resetlink' )
+ );
+ } elseif( $this->data['resetlink'] === null ) {
+ echo '&#160;';
+ echo Html::input( 'wpMailmypassword', wfMsg( 'mailmypassword' ), 'submit', array(
+ 'id' => 'wpMailmypassword',
+ 'tabindex' => '10'
+ ) );
+ }
} ?>
</td>
</tr>
</table>
-<?php if( @$this->haveData( 'uselang' ) ) { ?><input type="hidden" name="uselang" value="<?php $this->text( 'uselang' ); ?>" /><?php } ?>
-<?php if( @$this->haveData( 'token' ) ) { ?><input type="hidden" name="wpLoginToken" value="<?php $this->text( 'token' ); ?>" /><?php } ?>
+<?php if( $this->haveData( 'uselang' ) ) { ?><input type="hidden" name="uselang" value="<?php $this->text( 'uselang' ); ?>" /><?php } ?>
+<?php if( $this->haveData( 'token' ) ) { ?><input type="hidden" name="wpLoginToken" value="<?php $this->text( 'token' ); ?>" /><?php } ?>
</form>
</div>
-<div id="loginend"><?php $this->msgWiki( 'loginend' ); ?></div>
+<div id="loginend"><?php $this->html( 'loginend' ); ?></div>
<?php
}
@@ -183,7 +191,7 @@ class UsercreateTemplate extends QuickTemplate {
<h2><?php $this->msg('createaccount') ?></h2>
<p id="userloginlink"><?php $this->html('link') ?></p>
<?php $this->html('header'); /* pre-table point for form plugins... */ ?>
- <?php if( @$this->haveData( 'languages' ) ) { ?><div id="languagelinks"><p><?php $this->html( 'languages' ); ?></p></div><?php } ?>
+ <?php if( $this->haveData( 'languages' ) ) { ?><div id="languagelinks"><p><?php $this->html( 'languages' ); ?></p></div><?php } ?>
<table>
<tr>
<td class="mw-label"><label for='wpName2'><?php $this->msg('yourname') ?></label></td>
@@ -251,11 +259,15 @@ class UsercreateTemplate extends QuickTemplate {
'size' => '20'
) ); ?>
<div class="prefsectiontip">
- <?php if( $this->data['emailrequired'] ) {
- $this->msgWiki('prefs-help-email-required');
- } else {
- $this->msgWiki('prefs-help-email');
- } ?>
+ <?php // duplicated in Preferences.php profilePreferences()
+ if( $this->data['emailrequired'] ) {
+ $this->msgWiki('prefs-help-email-required');
+ } else {
+ $this->msgWiki('prefs-help-email');
+ }
+ if( $this->data['emailothers'] ) {
+ $this->msgWiki('prefs-help-email-others');
+ } ?>
</div>
</td>
<?php } ?>
@@ -361,11 +373,11 @@ class UsercreateTemplate extends QuickTemplate {
</td>
</tr>
</table>
-<?php if( @$this->haveData( 'uselang' ) ) { ?><input type="hidden" name="uselang" value="<?php $this->text( 'uselang' ); ?>" /><?php } ?>
-<?php if( @$this->haveData( 'token' ) ) { ?><input type="hidden" name="wpCreateaccountToken" value="<?php $this->text( 'token' ); ?>" /><?php } ?>
+<?php if( $this->haveData( 'uselang' ) ) { ?><input type="hidden" name="uselang" value="<?php $this->text( 'uselang' ); ?>" /><?php } ?>
+<?php if( $this->haveData( 'token' ) ) { ?><input type="hidden" name="wpCreateaccountToken" value="<?php $this->text( 'token' ); ?>" /><?php } ?>
</form>
</div>
-<div id="signupend"><?php $this->msgWiki( 'signupend' ); ?></div>
+<div id="signupend"><?php $this->html( 'signupend' ); ?></div>
<?php
}
diff --git a/includes/upload/UploadBase.php b/includes/upload/UploadBase.php
index 546b9db8..a97edbc7 100644
--- a/includes/upload/UploadBase.php
+++ b/includes/upload/UploadBase.php
@@ -18,14 +18,16 @@ abstract class UploadBase {
protected $mDesiredDestName, $mDestName, $mRemoveTempFile, $mSourceType;
protected $mTitle = false, $mTitleError = 0;
protected $mFilteredName, $mFinalExtension;
- protected $mLocalFile;
+ protected $mLocalFile, $mFileSize, $mFileProps;
+ protected $mBlackListedExtensions;
+ protected $mJavaDetected;
const SUCCESS = 0;
const OK = 0;
const EMPTY_FILE = 3;
const MIN_LENGTH_PARTNAME = 4;
const ILLEGAL_FILENAME = 5;
- const OVERWRITE_EXISTING_FILE = 7; # Not used anymore; handled by verifyPermissions()
+ const OVERWRITE_EXISTING_FILE = 7; # Not used anymore; handled by verifyTitlePermissions()
const FILETYPE_MISSING = 8;
const FILETYPE_BADTYPE = 9;
const VERIFICATION_ERROR = 10;
@@ -34,13 +36,7 @@ abstract class UploadBase {
const UPLOAD_VERIFICATION_ERROR = 11;
const HOOK_ABORTED = 11;
const FILE_TOO_LARGE = 12;
-
- const SESSION_VERSION = 2;
- const SESSION_KEYNAME = 'wsUploadData';
-
- static public function getSessionKeyname() {
- return self::SESSION_KEYNAME;
- }
+ const WINDOWS_NONASCII_FILENAME = 13;
public function getVerificationErrorCode( $error ) {
$code_to_status = array(self::EMPTY_FILE => 'empty-file',
@@ -52,6 +48,7 @@ abstract class UploadBase {
self::OVERWRITE_EXISTING_FILE => 'overwrite',
self::VERIFICATION_ERROR => 'verification-error',
self::HOOK_ABORTED => 'hookaborted',
+ self::WINDOWS_NONASCII_FILENAME => 'windows-nonascii-filename',
);
if( isset( $code_to_status[$error] ) ) {
return $code_to_status[$error];
@@ -66,21 +63,21 @@ abstract class UploadBase {
*/
public static function isEnabled() {
global $wgEnableUploads;
+
if ( !$wgEnableUploads ) {
return false;
}
# Check php's file_uploads setting
- if( !wfIniGetBool( 'file_uploads' ) ) {
- return false;
- }
- return true;
+ return wfIsHipHop() || wfIniGetBool( 'file_uploads' );
}
/**
* Returns true if the user can use this upload module or else a string
* identifying the missing permission.
* Can be overriden by subclasses.
+ *
+ * @param $user User
*/
public static function isAllowed( $user ) {
foreach ( array( 'upload', 'edit' ) as $permission ) {
@@ -96,6 +93,9 @@ abstract class UploadBase {
/**
* Create a form of UploadBase depending on wpSourceType and initializes it
+ *
+ * @param $request WebRequest
+ * @param $type
*/
public static function createFromRequest( &$request, $type = null ) {
$type = $type ? $type : $request->getVal( 'wpSourceType', 'File' );
@@ -144,6 +144,14 @@ abstract class UploadBase {
public function __construct() {}
/**
+ * Returns the upload type. Should be overridden by child classes
+ *
+ * @since 1.18
+ * @return string
+ */
+ public function getSourceType() { return null; }
+
+ /**
* Initialize the path information
* @param $name string the desired destination name
* @param $tempPath string the temporary path
@@ -200,6 +208,19 @@ abstract class UploadBase {
}
/**
+ * Finish appending to the Repo file
+ *
+ * @param $toAppendPath String: path to the Repo file that will be appended to.
+ * @return Status Status
+ */
+ protected function appendFinish( $toAppendPath ) {
+ $repo = RepoGroup::singleton()->getLocalRepo();
+ $status = $repo->appendFinish( $toAppendPath );
+ return $status;
+ }
+
+
+ /**
* @param $srcPath String: the source path
* @return the real path if it was a virtual URL
*/
@@ -226,11 +247,11 @@ abstract class UploadBase {
/**
* Honor $wgMaxUploadSize
*/
- global $wgMaxUploadSize;
- if( $this->mFileSize > $wgMaxUploadSize ) {
- return array(
+ $maxSize = self::getMaxUploadSize( $this->getSourceType() );
+ if( $this->mFileSize > $maxSize ) {
+ return array(
'status' => self::FILE_TOO_LARGE,
- 'max' => $wgMaxUploadSize,
+ 'max' => $maxSize,
);
}
@@ -279,6 +300,9 @@ abstract class UploadBase {
}
if ( $this->mTitleError == self::FILETYPE_BADTYPE ) {
$result['finalExt'] = $this->mFinalExtension;
+ if ( count( $this->mBlackListedExtensions ) ) {
+ $result['blacklistedExt'] = $this->mBlackListedExtensions;
+ }
}
return $result;
}
@@ -297,15 +321,16 @@ abstract class UploadBase {
global $wgVerifyMimeType;
if ( $wgVerifyMimeType ) {
wfDebug ( "\n\nmime: <$mime> extension: <{$this->mFinalExtension}>\n\n");
- if ( !$this->verifyExtension( $mime, $this->mFinalExtension ) ) {
- return array( 'filetype-mime-mismatch' );
- }
-
global $wgMimeTypeBlacklist;
if ( $this->checkFileExtension( $mime, $wgMimeTypeBlacklist ) ) {
return array( 'filetype-badmime', $mime );
}
+ # XXX: Missing extension will be caught by validateName() via getTitle()
+ if ( $this->mFinalExtension != '' && !$this->verifyExtension( $mime, $this->mFinalExtension ) ) {
+ return array( 'filetype-mime-mismatch', $this->mFinalExtension, $mime );
+ }
+
# Check IE type
$fp = fopen( $this->mTempPath, 'rb' );
$chunk = fread( $fp, 256 );
@@ -330,12 +355,12 @@ abstract class UploadBase {
* @return mixed true of the file is verified, array otherwise.
*/
protected function verifyFile() {
+ global $wgAllowJavaUploads;
# get the title, even though we are doing nothing with it, because
- # we need to populate mFinalExtension
+ # we need to populate mFinalExtension
$this->getTitle();
-
+
$this->mFileProps = File::getPropsFromPath( $this->mTempPath, $this->mFinalExtension );
- $this->checkMacBinary();
# check mime type, if desired
$mime = $this->mFileProps[ 'file-mime' ];
@@ -354,9 +379,25 @@ abstract class UploadBase {
}
}
- /**
- * Scan the uploaded file for viruses
- */
+ # Check for Java applets, which if uploaded can bypass cross-site
+ # restrictions.
+ if ( !$wgAllowJavaUploads ) {
+ $this->mJavaDetected = false;
+ $zipStatus = ZipDirectoryReader::read( $this->mTempPath,
+ array( $this, 'zipEntryCallback' ) );
+ if ( !$zipStatus->isOK() ) {
+ $errors = $zipStatus->getErrorsArray();
+ $error = reset( $errors );
+ if ( $error[0] !== 'zip-wrong-format' ) {
+ return $error;
+ }
+ }
+ if ( $this->mJavaDetected ) {
+ return array( 'uploadjava' );
+ }
+ }
+
+ # Scan the uploaded file for viruses
$virus = $this->detectVirus( $this->mTempPath );
if ( $virus ) {
return array( 'uploadvirus', $virus );
@@ -381,17 +422,51 @@ abstract class UploadBase {
}
/**
+ * Callback for ZipDirectoryReader to detect Java class files.
+ */
+ function zipEntryCallback( $entry ) {
+ $names = array( $entry['name'] );
+
+ // If there is a null character, cut off the name at it, because JDK's
+ // ZIP_GetEntry() uses strcmp() if the name hashes match. If a file name
+ // were constructed which had ".class\0" followed by a string chosen to
+ // make the hash collide with the truncated name, that file could be
+ // returned in response to a request for the .class file.
+ $nullPos = strpos( $entry['name'], "\000" );
+ if ( $nullPos !== false ) {
+ $names[] = substr( $entry['name'], 0, $nullPos );
+ }
+
+ // If there is a trailing slash in the file name, we have to strip it,
+ // because that's what ZIP_GetEntry() does.
+ if ( preg_grep( '!\.class/?$!', $names ) ) {
+ $this->mJavaDetected = true;
+ }
+ }
+
+ /**
+ * Alias for verifyTitlePermissions. The function was originally 'verifyPermissions'
+ * but that suggests it's checking the user, when it's really checking the title + user combination.
+ * @param $user User object to verify the permissions against
+ * @return mixed An array as returned by getUserPermissionsErrors or true
+ * in case the user has proper permissions.
+ */
+ public function verifyPermissions( $user ) {
+ return $this->verifyTitlePermissions( $user );
+ }
+
+ /**
* Check whether the user can edit, upload and create the image. This
* checks only against the current title; if it returns errors, it may
* very well be that another title will not give errors. Therefore
* isAllowed() should be called as well for generic is-user-blocked or
* can-user-upload checking.
*
- * @param $user the User object to verify the permissions against
+ * @param $user User object to verify the permissions against
* @return mixed An array as returned by getUserPermissionsErrors or true
* in case the user has proper permissions.
*/
- public function verifyPermissions( $user ) {
+ public function verifyTitlePermissions( $user ) {
/**
* If the image is protected, non-sysop users won't be able
* to modify it by uploading a new revision.
@@ -412,12 +487,12 @@ abstract class UploadBase {
$permErrors = array_merge( $permErrors, wfArrayDiff2( $permErrorsCreate, $permErrors ) );
return $permErrors;
}
-
+
$overwriteError = $this->checkOverwrite( $user );
if ( $overwriteError !== true ) {
return array( $overwriteError );
}
-
+
return true;
}
@@ -427,11 +502,12 @@ abstract class UploadBase {
* @return Array of warnings
*/
public function checkWarnings() {
+ global $wgLang;
+
$warnings = array();
$localFile = $this->getLocalFile();
$filename = $localFile->getName();
- $n = strrpos( $filename, '.' );
/**
* Check whether the resulting filename is different from the desired one,
@@ -448,7 +524,8 @@ abstract class UploadBase {
global $wgCheckFileExtensions, $wgFileExtensions;
if ( $wgCheckFileExtensions ) {
if ( !$this->checkFileExtension( $this->mFinalExtension, $wgFileExtensions ) ) {
- $warnings['filetype-unwanted-type'] = $this->mFinalExtension;
+ $warnings['filetype-unwanted-type'] = array( $this->mFinalExtension,
+ $wgLang->commaList( $wgFileExtensions ), count( $wgFileExtensions ) );
}
}
@@ -493,24 +570,26 @@ abstract class UploadBase {
* Really perform the upload. Stores the file in the local repo, watches
* if necessary and runs the UploadComplete hook.
*
- * @return mixed Status indicating the whether the upload succeeded.
+ * @param $user User
+ *
+ * @return Status indicating the whether the upload succeeded.
*/
public function performUpload( $comment, $pageText, $watch, $user ) {
- $status = $this->getLocalFile()->upload(
- $this->mTempPath,
- $comment,
+ $status = $this->getLocalFile()->upload(
+ $this->mTempPath,
+ $comment,
$pageText,
File::DELETE_SOURCE,
- $this->mFileProps,
- false,
- $user
+ $this->mFileProps,
+ false,
+ $user
);
if( $status->isGood() ) {
if ( $watch ) {
$user->addWatch( $this->getLocalFile()->getTitle() );
}
-
+
wfRunHooks( 'UploadComplete', array( &$this ) );
}
@@ -527,13 +606,23 @@ abstract class UploadBase {
if ( $this->mTitle !== false ) {
return $this->mTitle;
}
+
+ /* Assume that if a user specified File:Something.jpg, this is an error
+ * and that the namespace prefix needs to be stripped of.
+ */
+ $title = Title::newFromText( $this->mDesiredDestName );
+ if ( $title && $title->getNamespace() == NS_FILE ) {
+ $this->mFilteredName = $title->getDBkey();
+ } else {
+ $this->mFilteredName = $this->mDesiredDestName;
+ }
/**
* Chop off any directories in the given filename. Then
* filter out illegal characters, and try to make a legible name
* out of it. We'll strip some silently that Title would die on.
*/
- $this->mFilteredName = wfStripIllegalFilenameChars( $this->mDesiredDestName );
+ $this->mFilteredName = wfStripIllegalFilenameChars( $this->mFilteredName );
/* Normalize to title form before we do any further processing */
$nt = Title::makeTitleSafe( NS_FILE, $this->mFilteredName );
if( is_null( $nt ) ) {
@@ -552,20 +641,48 @@ abstract class UploadBase {
$this->mFinalExtension = trim( $ext[count( $ext ) - 1] );
} else {
$this->mFinalExtension = '';
+
+ # No extension, try guessing one
+ $magic = MimeMagic::singleton();
+ $mime = $magic->guessMimeType( $this->mTempPath );
+ if ( $mime !== 'unknown/unknown' ) {
+ # Get a space separated list of extensions
+ $extList = $magic->getExtensionsForType( $mime );
+ if ( $extList ) {
+ # Set the extension to the canonical extension
+ $this->mFinalExtension = strtok( $extList, ' ' );
+
+ # Fix up the other variables
+ $this->mFilteredName .= ".{$this->mFinalExtension}";
+ $nt = Title::makeTitleSafe( NS_FILE, $this->mFilteredName );
+ $ext = array( $this->mFinalExtension );
+ }
+ }
+
}
/* Don't allow users to override the blacklist (check file extension) */
global $wgCheckFileExtensions, $wgStrictFileExtensions;
global $wgFileExtensions, $wgFileBlacklist;
+
+ $blackListedExtensions = $this->checkFileExtensionList( $ext, $wgFileBlacklist );
+
if ( $this->mFinalExtension == '' ) {
$this->mTitleError = self::FILETYPE_MISSING;
return $this->mTitle = null;
- } elseif ( $this->checkFileExtensionList( $ext, $wgFileBlacklist ) ||
+ } elseif ( $blackListedExtensions ||
( $wgCheckFileExtensions && $wgStrictFileExtensions &&
- !$this->checkFileExtension( $this->mFinalExtension, $wgFileExtensions ) ) ) {
+ !$this->checkFileExtensionList( $ext, $wgFileExtensions ) ) ) {
+ $this->mBlackListedExtensions = $blackListedExtensions;
$this->mTitleError = self::FILETYPE_BADTYPE;
return $this->mTitle = null;
}
+
+ // Windows may be broken with special characters, see bug XXX
+ if ( wfIsWindows() && !preg_match( '/^[\x0-\x7f]*$/', $nt->getText() ) ) {
+ $this->mTitleError = self::WINDOWS_NONASCII_FILENAME;
+ return $this->mTitle = null;
+ }
# If there was more than one "extension", reassemble the base
# filename to prevent bogus complaints about length
@@ -585,6 +702,8 @@ abstract class UploadBase {
/**
* Return the local file and initializes if necessary.
+ *
+ * @return LocalFile
*/
public function getLocalFile() {
if( is_null( $this->mLocalFile ) ) {
@@ -619,31 +738,40 @@ abstract class UploadBase {
* by design) then we may want to stash the file temporarily, get more information, and publish the file later.
*
* This method will stash a file in a temporary directory for later processing, and save the necessary descriptive info
- * into the user's session.
- * This method returns the file object, which also has a 'sessionKey' property which can be passed through a form or
+ * into the database.
+ * This method returns the file object, which also has a 'fileKey' property which can be passed through a form or
* API request to find this stashed file again.
*
- * @param $key String: (optional) the session key used to find the file info again. If not supplied, a key will be autogenerated.
- * @return File: stashed file
+ * @param $key String: (optional) the file key used to find the file info again. If not supplied, a key will be autogenerated.
+ * @return UploadStashFile stashed file
*/
- public function stashSessionFile( $key = null ) {
+ public function stashFile( $key = null ) {
+ // was stashSessionFile
$stash = RepoGroup::singleton()->getLocalRepo()->getUploadStash();
- $data = array(
- 'mFileProps' => $this->mFileProps
- );
- $file = $stash->stashFile( $this->mTempPath, $data, $key );
+
+ $file = $stash->stashFile( $this->mTempPath, $this->getSourceType(), $key );
$this->mLocalFile = $file;
return $file;
}
/**
- * Stash a file in a temporary directory, returning a key which can be used to find the file again. See stashSessionFile().
+ * Stash a file in a temporary directory, returning a key which can be used to find the file again. See stashFile().
*
- * @param $key String: (optional) the session key used to find the file info again. If not supplied, a key will be autogenerated.
- * @return String: session key
+ * @param $key String: (optional) the file key used to find the file info again. If not supplied, a key will be autogenerated.
+ * @return String: file key
+ */
+ public function stashFileGetKey( $key = null ) {
+ return $this->stashFile( $key )->getFileKey();
+ }
+
+ /**
+ * alias for stashFileGetKey, for backwards compatibility
+ *
+ * @param $key String: (optional) the file key used to find the file info again. If not supplied, a key will be autogenerated.
+ * @return String: file key
*/
public function stashSession( $key = null ) {
- return $this->stashSessionFile( $key )->getSessionKey();
+ return $this->stashFileGetKey( $key );
}
/**
@@ -689,19 +817,14 @@ abstract class UploadBase {
/**
* Perform case-insensitive match against a list of file extensions.
- * Returns true if any of the extensions are in the list.
+ * Returns an array of matching extensions.
*
* @param $ext Array
* @param $list Array
* @return Boolean
*/
public static function checkFileExtensionList( $ext, $list ) {
- foreach( $ext as $e ) {
- if( in_array( strtolower( $e ), $list ) ) {
- return true;
- }
- }
- return false;
+ return array_intersect( array_map( 'strtolower', $ext ), $list );
}
/**
@@ -788,7 +911,7 @@ abstract class UploadBase {
$chunk = trim( $chunk );
- # FIXME: convert from UTF-16 if necessarry!
+ # @todo FIXME: Convert from UTF-16 if necessarry!
wfDebug( __METHOD__ . ": checking for embedded scripts and HTML stuff\n" );
# check for HTML doctype
@@ -828,6 +951,7 @@ abstract class UploadBase {
foreach( $tags as $tag ) {
if( false !== strpos( $chunk, $tag ) ) {
+ wfDebug( __METHOD__ . ": found something that may make it be mistaken for html: $tag\n" );
return true;
}
}
@@ -841,16 +965,19 @@ abstract class UploadBase {
# look for script-types
if( preg_match( '!type\s*=\s*[\'"]?\s*(?:\w*/)?(?:ecma|java)!sim', $chunk ) ) {
+ wfDebug( __METHOD__ . ": found script types\n" );
return true;
}
# look for html-style script-urls
if( preg_match( '!(?:href|src|data)\s*=\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk ) ) {
+ wfDebug( __METHOD__ . ": found html-style script urls\n" );
return true;
}
# look for css-style script-urls
if( preg_match( '!url\s*\(\s*[\'"]?\s*(?:ecma|java)script:!sim', $chunk ) ) {
+ wfDebug( __METHOD__ . ": found css-style script urls\n" );
return true;
}
@@ -989,33 +1116,11 @@ abstract class UploadBase {
}
/**
- * Check if the temporary file is MacBinary-encoded, as some uploads
- * from Internet Explorer on Mac OS Classic and Mac OS X will be.
- * If so, the data fork will be extracted to a second temporary file,
- * which will then be checked for validity and either kept or discarded.
- */
- private function checkMacBinary() {
- $macbin = new MacBinary( $this->mTempPath );
- if( $macbin->isValid() ) {
- $dataFile = tempnam( wfTempDir(), 'WikiMacBinary' );
- $dataHandle = fopen( $dataFile, 'wb' );
-
- wfDebug( __METHOD__ . ": Extracting MacBinary data fork to $dataFile\n" );
- $macbin->extractData( $dataHandle );
-
- $this->mTempPath = $dataFile;
- $this->mFileSize = $macbin->dataForkLength();
-
- // We'll have to manually remove the new file if it's not kept.
- $this->mRemoveTempFile = true;
- }
- $macbin->close();
- }
-
- /**
* Check if there's an overwrite conflict and, if so, if restrictions
* forbid this user from performing the upload.
*
+ * @param $user User
+ *
* @return mixed true on success, array on failure
*/
private function checkOverwrite( $user ) {
@@ -1072,7 +1177,7 @@ abstract class UploadBase {
* - File exists with normalized extension
* - The file looks like a thumbnail and the original exists
*
- * @param $file The File object to check
+ * @param $file File The File object to check
* @return mixed False if the file does not exists, else an array
*/
public static function getExistsWarning( $file ) {
@@ -1170,9 +1275,9 @@ abstract class UploadBase {
*/
public static function getFilenamePrefixBlacklist() {
$blacklist = array();
- $message = wfMsgForContent( 'filename-prefix-blacklist' );
- if( $message && !( wfEmptyMsg( 'filename-prefix-blacklist', $message ) || $message == '-' ) ) {
- $lines = explode( "\n", $message );
+ $message = wfMessage( 'filename-prefix-blacklist' )->inContentLanguage();
+ if( !$message->isDisabled() ) {
+ $lines = explode( "\n", $message->plain() );
foreach( $lines as $line ) {
// Remove comment lines
$comment = substr( trim( $line ), 0, 1 );
@@ -1191,18 +1296,18 @@ abstract class UploadBase {
}
/**
- * Gets image info about the file just uploaded.
+ * Gets image info about the file just uploaded.
*
- * Also has the effect of setting metadata to be an 'indexed tag name' in returned API result if
+ * Also has the effect of setting metadata to be an 'indexed tag name' in returned API result if
* 'metadata' was requested. Oddly, we have to pass the "result" object down just so it can do that
- * with the appropriate format, presumably.
+ * with the appropriate format, presumably.
*
* @param $result ApiResult:
* @return Array: image info
*/
public function getImageInfo( $result ) {
$file = $this->getLocalFile();
- // TODO This cries out for refactoring. We really want to say $file->getAllInfo(); here.
+ // TODO This cries out for refactoring. We really want to say $file->getAllInfo(); here.
// Perhaps "info" methods should be moved into files, and the API should just wrap them in queries.
if ( $file instanceof UploadStashFile ) {
$imParam = ApiQueryStashImageInfo::getPropertyNames();
@@ -1220,4 +1325,19 @@ abstract class UploadBase {
unset( $code['status'] );
return Status::newFatal( $this->getVerificationErrorCode( $code ), $error );
}
+
+ public static function getMaxUploadSize( $forType = null ) {
+ global $wgMaxUploadSize;
+
+ if ( is_array( $wgMaxUploadSize ) ) {
+ if ( !is_null( $forType ) && isset( $wgMaxUploadSize[$forType] ) ) {
+ return $wgMaxUploadSize[$forType];
+ } else {
+ return $wgMaxUploadSize['*'];
+ }
+ } else {
+ return intval( $wgMaxUploadSize );
+ }
+
+ }
}
diff --git a/includes/upload/UploadFromFile.php b/includes/upload/UploadFromFile.php
index e67ec191..c2ab6467 100644
--- a/includes/upload/UploadFromFile.php
+++ b/includes/upload/UploadFromFile.php
@@ -8,8 +8,15 @@
*/
class UploadFromFile extends UploadBase {
+
+ /**
+ * @var WebRequestUpload
+ */
protected $mUpload = null;
+ /**
+ * @param $request WebRequest
+ */
function initializeFromRequest( &$request ) {
$upload = $request->getUpload( 'wpUploadFile' );
$desiredDestName = $request->getText( 'wpDestFile' );
@@ -18,31 +25,47 @@ class UploadFromFile extends UploadBase {
return $this->initialize( $desiredDestName, $upload );
}
-
+
/**
* Initialize from a filename and a WebRequestUpload
+ * @param $name
+ * @param $webRequestUpload
*/
function initialize( $name, $webRequestUpload ) {
$this->mUpload = $webRequestUpload;
return $this->initializePathInfo( $name,
$this->mUpload->getTempName(), $this->mUpload->getSize() );
}
+
+ /**
+ * @param $request
+ * @return bool
+ */
static function isValidRequest( $request ) {
# Allow all requests, even if no file is present, so that an error
# because a post_max_size or upload_max_filesize overflow
return true;
}
-
+
+ /**
+ * @return string
+ */
+ public function getSourceType() {
+ return 'file';
+ }
+
+ /**
+ * @return array
+ */
public function verifyUpload() {
# Check for a post_max_size or upload_max_size overflow, so that a
# proper error can be shown to the user
if ( is_null( $this->mTempPath ) || $this->isEmptyFile() ) {
if ( $this->mUpload->isIniSizeOverflow() ) {
- global $wgMaxUploadSize;
return array(
'status' => UploadBase::FILE_TOO_LARGE,
'max' => min(
- $wgMaxUploadSize,
+ self::getMaxUploadSize( $this->getSourceType() ),
wfShorthandToInteger( ini_get( 'upload_max_filesize' ) ),
wfShorthandToInteger( ini_get( 'post_max_size' ) )
),
@@ -60,6 +83,4 @@ class UploadFromFile extends UploadBase {
public function getFileTempname() {
return $this->mUpload->getTempname();
}
-
-
}
diff --git a/includes/upload/UploadFromStash.php b/includes/upload/UploadFromStash.php
index 156781e9..feb14a87 100644
--- a/includes/upload/UploadFromStash.php
+++ b/includes/upload/UploadFromStash.php
@@ -8,66 +8,109 @@
*/
class UploadFromStash extends UploadBase {
- public static function isValidSessionKey( $key, $sessionData ) {
- return !empty( $key ) &&
- is_array( $sessionData ) &&
- isset( $sessionData[$key] ) &&
- isset( $sessionData[$key]['version'] ) &&
- $sessionData[$key]['version'] == UploadBase::SESSION_VERSION;
+ protected $mFileKey, $mVirtualTempPath, $mFileProps, $mSourceType;
+
+ // an instance of UploadStash
+ private $stash;
+
+ //LocalFile repo
+ private $repo;
+
+ public function __construct( $user = false, $stash = false, $repo = false ) {
+ // user object. sometimes this won't exist, as when running from cron.
+ $this->user = $user;
+
+ if( $repo ) {
+ $this->repo = $repo;
+ } else {
+ $this->repo = RepoGroup::singleton()->getLocalRepo();
+ }
+
+ if( $stash ) {
+ $this->stash = $stash;
+ } else {
+ wfDebug( __METHOD__ . " creating new UploadStash instance for " . $user->getId() . "\n" );
+ $this->stash = new UploadStash( $this->repo, $this->user );
+ }
+
+ return true;
+ }
+
+ public static function isValidKey( $key ) {
+ // this is checked in more detail in UploadStash
+ return preg_match( UploadStash::KEY_FORMAT_REGEX, $key );
}
+ /**
+ * @param $request WebRequest
+ *
+ * @return Boolean
+ */
public static function isValidRequest( $request ) {
- $sessionData = $request->getSessionData( UploadBase::SESSION_KEYNAME );
- return self::isValidSessionKey(
- $request->getText( 'wpSessionKey' ),
- $sessionData
- );
+ return self::isValidKey( $request->getText( 'wpFileKey' ) || $request->getText( 'wpSessionKey' ) );
}
- public function initialize( $name, $sessionKey, $sessionData ) {
- /**
- * Confirming a temporarily stashed upload.
- * We don't want path names to be forged, so we keep
- * them in the session on the server and just give
- * an opaque key to the user agent.
- */
-
- $this->initializePathInfo( $name,
- $this->getRealPath ( $sessionData['mTempPath'] ),
- $sessionData['mFileSize'],
- false
- );
-
- $this->mSessionKey = $sessionKey;
- $this->mVirtualTempPath = $sessionData['mTempPath'];
- $this->mFileProps = $sessionData['mFileProps'];
+ public function initialize( $key, $name = 'upload_file' ) {
+ /**
+ * Confirming a temporarily stashed upload.
+ * We don't want path names to be forged, so we keep
+ * them in the session on the server and just give
+ * an opaque key to the user agent.
+ */
+ $metadata = $this->stash->getMetadata( $key );
+ $this->initializePathInfo( $name,
+ $this->getRealPath ( $metadata['us_path'] ),
+ $metadata['us_size'],
+ false
+ );
+
+ $this->mFileKey = $key;
+ $this->mVirtualTempPath = $metadata['us_path'];
+ $this->mFileProps = $this->stash->getFileProps( $key );
+ $this->mSourceType = $metadata['us_source_type'];
}
+ /**
+ * @param $request WebRequest
+ */
public function initializeFromRequest( &$request ) {
- $sessionKey = $request->getText( 'wpSessionKey' );
- $sessionData = $request->getSessionData( UploadBase::SESSION_KEYNAME );
+ $fileKey = $request->getText( 'wpFileKey' ) || $request->getText( 'wpSessionKey' );
$desiredDestName = $request->getText( 'wpDestFile' );
- if( !$desiredDestName )
- $desiredDestName = $request->getText( 'wpUploadFile' );
- return $this->initialize( $desiredDestName, $sessionKey, $sessionData[$sessionKey] );
+ if( !$desiredDestName ) {
+ $desiredDestName = $request->getText( 'wpUploadFile' ) || $request->getText( 'filename' );
+ }
+ return $this->initialize( $fileKey, $desiredDestName );
+ }
+
+ public function getSourceType() {
+ return $this->mSourceType;
}
/**
* File has been previously verified so no need to do so again.
+ *
+ * @return bool
*/
protected function verifyFile() {
return true;
}
-
/**
* There is no need to stash the image twice
*/
+ public function stashFile( $key = null ) {
+ if ( !empty( $this->mLocalFile ) ) {
+ return $this->mLocalFile;
+ }
+ return parent::stashFile( $key );
+ }
+
+ /**
+ * Alias for stashFile
+ */
public function stashSession( $key = null ) {
- if ( !empty( $this->mSessionKey ) )
- return $this->mSessionKey;
- return parent::stashSession();
+ return $this->stashFile( $key );
}
/**
@@ -75,9 +118,16 @@ class UploadFromStash extends UploadBase {
* @return success
*/
public function unsaveUploadedFile() {
- $repo = RepoGroup::singleton()->getLocalRepo();
- $success = $repo->freeTemp( $this->mVirtualTempPath );
- return $success;
+ return $this->stash->removeFile( $this->mFileKey );
+ }
+
+ /**
+ * Perform the upload, then remove the database record afterward.
+ */
+ public function performUpload( $comment, $pageText, $watch, $user ) {
+ $rv = parent::performUpload( $comment, $pageText, $watch, $user );
+ $this->unsaveUploadedFile();
+ return $rv;
}
} \ No newline at end of file
diff --git a/includes/upload/UploadFromUrl.php b/includes/upload/UploadFromUrl.php
index c28fd7da..8178988f 100644
--- a/includes/upload/UploadFromUrl.php
+++ b/includes/upload/UploadFromUrl.php
@@ -12,9 +12,13 @@ class UploadFromUrl extends UploadBase {
protected $mAsync, $mUrl;
protected $mIgnoreWarnings = true;
+ protected $mTempPath;
+
/**
* Checks if the user is allowed to use the upload-by-URL feature. If the
* user is allowed, pass on permissions checking to the parent.
+ *
+ * @param $user User
*/
public static function isAllowed( $user ) {
if ( !$user->isAllowed( 'upload_by_url' ) )
@@ -45,6 +49,9 @@ class UploadFromUrl extends UploadBase {
$this->mUrl = $url;
$this->mAsync = $wgAllowAsyncCopyUploads ? $async : false;
+ if ( $async ) {
+ throw new MWException( 'Asynchronous copy uploads are no longer possible as of r81612.' );
+ }
$tempPath = $this->mAsync ? null : $this->makeTemporaryFile();
# File size and removeTempFile will be filled in later
@@ -53,7 +60,7 @@ class UploadFromUrl extends UploadBase {
/**
* Entry point for SpecialUpload
- * @param $request Object: WebRequest object
+ * @param $request WebRequest object
*/
public function initializeFromRequest( &$request ) {
$desiredDestName = $request->getText( 'wpDestFile' );
@@ -61,13 +68,13 @@ class UploadFromUrl extends UploadBase {
$desiredDestName = $request->getText( 'wpUploadFileURL' );
return $this->initialize(
$desiredDestName,
- $request->getVal( 'wpUploadFileURL' ),
+ trim( $request->getVal( 'wpUploadFileURL' ) ),
false
);
}
/**
- * @param $request Object: WebRequest object
+ * @param $request WebRequest object
*/
public static function isValidRequest( $request ) {
global $wgUser;
@@ -78,6 +85,7 @@ class UploadFromUrl extends UploadBase {
&& $wgUser->isAllowed( 'upload_by_url' );
}
+ public function getSourceType() { return 'url'; }
public function fetchFile() {
if ( !Http::isValidURI( $this->mUrl ) ) {
@@ -137,7 +145,9 @@ class UploadFromUrl extends UploadBase {
$this->mRemoveTempFile = true;
$this->mFileSize = 0;
- $req = MWHttpRequest::factory( $this->mUrl );
+ $req = MWHttpRequest::factory( $this->mUrl, array(
+ 'followRedirects' => true
+ ) );
$req->setCallback( array( $this, 'saveTempFileChunk' ) );
$status = $req->execute();
@@ -184,11 +194,11 @@ class UploadFromUrl extends UploadBase {
* Wrapper around the parent function in order to defer checking protection
* until we are sure that the file can actually be uploaded
*/
- public function verifyPermissions( $user ) {
+ public function verifyTitlePermissions( $user ) {
if ( $this->mAsync ) {
return true;
}
- return parent::verifyPermissions( $user );
+ return parent::verifyTitlePermissions( $user );
}
/**
@@ -207,7 +217,13 @@ class UploadFromUrl extends UploadBase {
return parent::performUpload( $comment, $pageText, $watch, $user );
}
-
+ /**
+ * @param $comment
+ * @param $pageText
+ * @param $watch
+ * @param $user User
+ * @return
+ */
protected function insertJob( $comment, $pageText, $watch, $user ) {
$sessionKey = $this->stashSession();
$job = new UploadFromUrlJob( $this->getTitle(), array(
@@ -226,5 +242,4 @@ class UploadFromUrl extends UploadBase {
return $sessionKey;
}
-
}
diff --git a/includes/upload/UploadStash.php b/includes/upload/UploadStash.php
index 1765925d..9304ce5f 100644
--- a/includes/upload/UploadStash.php
+++ b/includes/upload/UploadStash.php
@@ -1,110 +1,190 @@
<?php
-/**
+/**
* UploadStash is intended to accomplish a few things:
* - enable applications to temporarily stash files without publishing them to the wiki.
* - Several parts of MediaWiki do this in similar ways: UploadBase, UploadWizard, and FirefoggChunkedExtension
* And there are several that reimplement stashing from scratch, in idiosyncratic ways. The idea is to unify them all here.
* Mostly all of them are the same except for storing some custom fields, which we subsume into the data array.
- * - enable applications to find said files later, as long as the session or temp files haven't been purged.
+ * - enable applications to find said files later, as long as the db table or temp files haven't been purged.
* - enable the uploading user (and *ONLY* the uploading user) to access said files, and thumbnails of said files, via a URL.
- * We accomplish this by making the session serve as a URL->file mapping, on the assumption that nobody else can access
- * the session, even the uploading user. See SpecialUploadStash, which implements a web interface to some files stored this way.
+ * We accomplish this using a database table, with ownership checking as you might expect. See SpecialUploadStash, which
+ * implements a web interface to some files stored this way.
*
+ * UploadStash represents the entire stash of temporary files.
+ * UploadStashFile is a filestore for the actual physical disk files.
+ * UploadFromStash extends UploadBase, and represents a single stashed file as it is moved from the stash to the regular file repository
*/
class UploadStash {
// Format of the key for files -- has to be suitable as a filename itself (e.g. ab12cd34ef.jpg)
- const KEY_FORMAT_REGEX = '/^[\w-]+\.\w*$/';
+ const KEY_FORMAT_REGEX = '/^[\w-\.]+\.\w*$/';
- // repository that this uses to store temp files
- // public because we sometimes need to get a LocalFile within the same repo.
- public $repo;
-
- // array of initialized objects obtained from session (lazily initialized upon getFile())
- private $files = array();
+ // When a given stashed file can't be loaded, wait for the slaves to catch up. If they're more than MAX_LAG
+ // behind, throw an exception instead. (at what point is broken better than slow?)
+ const MAX_LAG = 30;
- // TODO: Once UploadBase starts using this, switch to use these constants rather than UploadBase::SESSION*
- // const SESSION_VERSION = 2;
- // const SESSION_KEYNAME = 'wsUploadData';
+ // Age of the repository in hours. That is, after how long will files be assumed abandoned and deleted?
+ const REPO_AGE = 6;
/**
- * Represents the session which contains temporarily stored files.
- * Designed to be compatible with the session stashing code in UploadBase (should replace it eventually)
+ * repository that this uses to store temp files
+ * public because we sometimes need to get a LocalFile within the same repo.
*
- * @param $repo FileRepo: optional -- repo in which to store files. Will choose LocalRepo if not supplied.
+ * @var LocalRepo
*/
- public function __construct( $repo ) {
+ public $repo;
+
+ // array of initialized repo objects
+ protected $files = array();
+
+ // cache of the file metadata that's stored in the database
+ protected $fileMetadata = array();
+
+ // fileprops cache
+ protected $fileProps = array();
+
+ // current user
+ protected $user, $userId, $isLoggedIn;
+ /**
+ * Represents a temporary filestore, with metadata in the database.
+ * Designed to be compatible with the session stashing code in UploadBase (should replace it eventually)
+ *
+ * @param $repo FileRepo
+ */
+ public function __construct( $repo, $user = null ) {
// this might change based on wiki's configuration.
$this->repo = $repo;
- if ( ! isset( $_SESSION ) ) {
- throw new UploadStashNotAvailableException( 'no session variable' );
+ // if a user was passed, use it. otherwise, attempt to use the global.
+ // this keeps FileRepo from breaking when it creates an UploadStash object
+ if ( $user ) {
+ $this->user = $user;
+ } else {
+ global $wgUser;
+ $this->user = $wgUser;
}
- if ( !isset( $_SESSION[UploadBase::SESSION_KEYNAME] ) ) {
- $_SESSION[UploadBase::SESSION_KEYNAME] = array();
+ if ( is_object( $this->user ) ) {
+ $this->userId = $this->user->getId();
+ $this->isLoggedIn = $this->user->isLoggedIn();
}
-
}
/**
* Get a file and its metadata from the stash.
- * May throw exception if session data cannot be parsed due to schema change, or key not found.
*
- * @param $key Integer: key
+ * @param $key String: key under which file information is stored
+ * @param $noAuth Boolean (optional) Don't check authentication. Used by maintenance scripts.
* @throws UploadStashFileNotFoundException
- * @throws UploadStashBadVersionException
+ * @throws UploadStashNotLoggedInException
+ * @throws UploadStashWrongOwnerException
+ * @throws UploadStashBadPathException
* @return UploadStashFile
*/
- public function getFile( $key ) {
+ public function getFile( $key, $noAuth = false ) {
+
if ( ! preg_match( self::KEY_FORMAT_REGEX, $key ) ) {
throw new UploadStashBadPathException( "key '$key' is not in a proper format" );
- }
-
- if ( !isset( $this->files[$key] ) ) {
- if ( !isset( $_SESSION[UploadBase::SESSION_KEYNAME][$key] ) ) {
- throw new UploadStashFileNotFoundException( "key '$key' not found in stash" );
+ }
+
+ if ( !$noAuth ) {
+ if ( !$this->isLoggedIn ) {
+ throw new UploadStashNotLoggedInException( __METHOD__ . ' No user is logged in, files must belong to users' );
+ }
+ }
+
+ $dbr = $this->repo->getSlaveDb();
+
+ if ( !isset( $this->fileMetadata[$key] ) ) {
+ // try this first. if it fails to find the row, check for lag, wait, try again. if its still missing, throw an exception.
+ // this more complex solution keeps things moving for page loads with many requests
+ // (ie. validating image ownership) when replag is high
+ if ( !$this->fetchFileMetadata( $key ) ) {
+ $lag = $dbr->getLag();
+ if ( $lag > 0 && $lag <= self::MAX_LAG ) {
+ // if there's not too much replication lag, just wait for the slave to catch up to our last insert.
+ sleep( ceil( $lag ) );
+ } elseif ( $lag > self::MAX_LAG ) {
+ // that's a lot of lag to introduce into the middle of the UI.
+ throw new UploadStashMaxLagExceededException(
+ 'Couldn\'t load stashed file metadata, and replication lag is above threshold: (MAX_LAG=' . self::MAX_LAG . ')'
+ );
+ }
+
+ // now that the waiting has happened, try again
+ $this->fetchFileMetadata( $key );
}
- $data = $_SESSION[UploadBase::SESSION_KEYNAME][$key];
- // guards against PHP class changing while session data doesn't
- if ($data['version'] !== UploadBase::SESSION_VERSION ) {
- throw new UploadStashBadVersionException( $data['version'] . " does not match current version " . UploadBase::SESSION_VERSION );
+ if ( !isset( $this->fileMetadata[$key] ) ) {
+ throw new UploadStashFileNotFoundException( "key '$key' not found in stash" );
}
-
- // separate the stashData into the path, and then the rest of the data
- $path = $data['mTempPath'];
- unset( $data['mTempPath'] );
-
- $file = new UploadStashFile( $this, $this->repo, $path, $key, $data );
- if ( $file->getSize === 0 ) {
- throw new UploadStashZeroLengthFileException( "File is zero length" );
+
+ // create $this->files[$key]
+ $this->initFile( $key );
+
+ // fetch fileprops
+ $path = $this->fileMetadata[$key]['us_path'];
+ if ( $this->repo->isVirtualUrl( $path ) ) {
+ $path = $this->repo->resolveVirtualUrl( $path );
}
- $this->files[$key] = $file;
+ $this->fileProps[$key] = File::getPropsFromPath( $path );
+ }
+
+ if ( ! $this->files[$key]->exists() ) {
+ wfDebug( __METHOD__ . " tried to get file at $key, but it doesn't exist\n" );
+ throw new UploadStashBadPathException( "path doesn't exist" );
+ }
+ if ( !$noAuth ) {
+ if ( $this->fileMetadata[$key]['us_user'] != $this->userId ) {
+ throw new UploadStashWrongOwnerException( "This file ($key) doesn't belong to the current user." );
+ }
}
+
return $this->files[$key];
}
/**
- * Stash a file in a temp directory and record that we did this in the session, along with other metadata.
- * We store data in a flat key-val namespace because that's how UploadBase did it. This also means we have to
- * ensure that the key-val pairs in $data do not overwrite other required fields.
+ * Getter for file metadata.
+ *
+ * @param key String: key under which file information is stored
+ * @return Array
+ */
+ public function getMetadata ( $key ) {
+ $this->getFile( $key );
+ return $this->fileMetadata[$key];
+ }
+
+ /**
+ * Getter for fileProps
+ *
+ * @param key String: key under which file information is stored
+ * @return Array
+ */
+ public function getFileProps ( $key ) {
+ $this->getFile( $key );
+ return $this->fileProps[$key];
+ }
+
+ /**
+ * Stash a file in a temp directory and record that we did this in the database, along with other metadata.
*
* @param $path String: path to file you want stashed
- * @param $data Array: optional, other data you want associated with the file. Do not use 'mTempPath', 'mFileProps', 'mFileSize', or 'version' as keys here
- * @param $key String: optional, unique key for this file in this session. Used for directory hashing when storing, otherwise not important
+ * @param $sourceType String: the type of upload that generated this file (currently, I believe, 'file' or null)
+ * @param $key String: optional, unique key for this file. Used for directory hashing when storing, otherwise not important
* @throws UploadStashBadPathException
* @throws UploadStashFileException
+ * @throws UploadStashNotLoggedInException
* @return UploadStashFile: file, or null on failure
*/
- public function stashFile( $path, $data = array(), $key = null ) {
+ public function stashFile( $path, $sourceType = null, $key = null ) {
if ( ! file_exists( $path ) ) {
- wfDebug( "UploadStash: tried to stash file at '$path', but it doesn't exist\n" );
+ wfDebug( __METHOD__ . " tried to stash file at '$path', but it doesn't exist\n" );
throw new UploadStashBadPathException( "path doesn't exist" );
}
- $fileProps = File::getPropsFromPath( $path );
+ $fileProps = File::getPropsFromPath( $path );
+ wfDebug( __METHOD__ . " stashing file at '$path'\n" );
// we will be initializing from some tmpnam files that don't have extensions.
// most of MediaWiki assumes all uploaded files have good extensions. So, we fix this.
@@ -115,65 +195,251 @@ class UploadStash {
throw new UploadStashFileException( "couldn't rename $path to have a better extension at $pathWithGoodExtension" );
}
$path = $pathWithGoodExtension;
- }
+ }
- // If no key was supplied, use content hash. Also has the nice property of collapsing multiple identical files
- // uploaded this session, which could happen if uploads had failed.
+ // If no key was supplied, make one. a mysql insertid would be totally reasonable here, except
+ // that some users of this function might expect to supply the key instead of using the generated one.
if ( is_null( $key ) ) {
- $key = $fileProps['sha1'] . "." . $extension;
+ // some things that when combined will make a suitably unique key.
+ // see: http://www.jwz.org/doc/mid.html
+ list ($usec, $sec) = explode( ' ', microtime() );
+ $usec = substr($usec, 2);
+ $key = wfBaseConvert( $sec . $usec, 10, 36 ) . '.' .
+ wfBaseConvert( mt_rand(), 10, 36 ) . '.'.
+ $this->userId . '.' .
+ $extension;
}
+ $this->fileProps[$key] = $fileProps;
+
if ( ! preg_match( self::KEY_FORMAT_REGEX, $key ) ) {
throw new UploadStashBadPathException( "key '$key' is not in a proper format" );
- }
+ }
+ wfDebug( __METHOD__ . " key for '$path': $key\n" );
// if not already in a temporary area, put it there
- $status = $this->repo->storeTemp( basename( $path ), $path );
+ $storeStatus = $this->repo->storeTemp( basename( $path ), $path );
- if( ! $status->isOK() ) {
+ if ( ! $storeStatus->isOK() ) {
// It is a convention in MediaWiki to only return one error per API exception, even if multiple errors
// are available. We use reset() to pick the "first" thing that was wrong, preferring errors to warnings.
- // This is a bit lame, as we may have more info in the $status and we're throwing it away, but to fix it means
+ // This is a bit lame, as we may have more info in the $storeStatus and we're throwing it away, but to fix it means
// redesigning API errors significantly.
- // $status->value just contains the virtual URL (if anything) which is probably useless to the caller
- $error = reset( $status->getErrorsArray() );
+ // $storeStatus->value just contains the virtual URL (if anything) which is probably useless to the caller
+ $error = $storeStatus->getErrorsArray();
+ $error = reset( $error );
if ( ! count( $error ) ) {
- $error = reset( $status->getWarningsArray() );
+ $error = $storeStatus->getWarningsArray();
+ $error = reset( $error );
if ( ! count( $error ) ) {
$error = array( 'unknown', 'no error recorded' );
}
}
throw new UploadStashFileException( "error storing file in '$path': " . implode( '; ', $error ) );
}
- $stashPath = $status->value;
-
- // required info we always store. Must trump any other application info in $data
- // 'mTempPath', 'mFileSize', and 'mFileProps' are arbitrary names
- // chosen for compatibility with UploadBase's way of doing this.
- $requiredData = array(
- 'mTempPath' => $stashPath,
- 'mFileSize' => $fileProps['size'],
- 'mFileProps' => $fileProps,
- 'version' => UploadBase::SESSION_VERSION
+ $stashPath = $storeStatus->value;
+
+ // fetch the current user ID
+ if ( !$this->isLoggedIn ) {
+ throw new UploadStashNotLoggedInException( __METHOD__ . ' No user is logged in, files must belong to users' );
+ }
+
+ // insert the file metadata into the db.
+ wfDebug( __METHOD__ . " inserting $stashPath under $key\n" );
+ $dbw = $this->repo->getMasterDb();
+
+ // select happens on the master so this can all be in a transaction, which
+ // avoids a race condition that's likely with multiple people uploading from the same
+ // set of files
+ $dbw->begin();
+ // first, check to see if it's already there.
+ $row = $dbw->selectRow(
+ 'uploadstash',
+ 'us_user, us_timestamp',
+ array( 'us_key' => $key ),
+ __METHOD__
+ );
+
+ // The current user can't have this key if:
+ // - the key is owned by someone else and
+ // - the age of the key is less than REPO_AGE
+ if ( is_object( $row ) ) {
+ if ( $row->us_user != $this->userId &&
+ $row->wfTimestamp( TS_UNIX, $row->us_timestamp ) > time() - UploadStash::REPO_AGE * 3600
+ ) {
+ $dbw->rollback();
+ throw new UploadStashWrongOwnerException( "Attempting to upload a duplicate of a file that someone else has stashed" );
+ }
+ }
+
+ $this->fileMetadata[$key] = array(
+ 'us_user' => $this->userId,
+ 'us_key' => $key,
+ 'us_orig_path' => $path,
+ 'us_path' => $stashPath,
+ 'us_size' => $fileProps['size'],
+ 'us_sha1' => $fileProps['sha1'],
+ 'us_mime' => $fileProps['mime'],
+ 'us_media_type' => $fileProps['media_type'],
+ 'us_image_width' => $fileProps['width'],
+ 'us_image_height' => $fileProps['height'],
+ 'us_image_bits' => $fileProps['bits'],
+ 'us_source_type' => $sourceType,
+ 'us_timestamp' => $dbw->timestamp(),
+ 'us_status' => 'finished'
);
- // now, merge required info and extra data into the session. (The extra data changes from application to application.
- // UploadWizard wants different things than say FirefoggChunkedUpload.)
- wfDebug( __METHOD__ . " storing under $key\n" );
- $_SESSION[UploadBase::SESSION_KEYNAME][$key] = array_merge( $data, $requiredData );
-
+ // if a row exists but previous checks on it passed, let the current user take over this key.
+ $dbw->replace(
+ 'uploadstash',
+ 'us_key',
+ $this->fileMetadata[$key],
+ __METHOD__
+ );
+ $dbw->commit();
+
+ // store the insertid in the class variable so immediate retrieval (possibly laggy) isn't necesary.
+ $this->fileMetadata[$key]['us_id'] = $dbw->insertId();
+
+ # create the UploadStashFile object for this file.
+ $this->initFile( $key );
+
return $this->getFile( $key );
}
/**
+ * Remove all files from the stash.
+ * Does not clean up files in the repo, just the record of them.
+ *
+ * @throws UploadStashNotLoggedInException
+ * @return boolean: success
+ */
+ public function clear() {
+ if ( !$this->isLoggedIn ) {
+ throw new UploadStashNotLoggedInException( __METHOD__ . ' No user is logged in, files must belong to users' );
+ }
+
+ wfDebug( __METHOD__ . " clearing all rows for user $userId\n" );
+ $dbw = $this->repo->getMasterDb();
+ $dbw->delete(
+ 'uploadstash',
+ array( 'us_user' => $this->userId ),
+ __METHOD__
+ );
+
+ # destroy objects.
+ $this->files = array();
+ $this->fileMetadata = array();
+
+ return true;
+ }
+
+ /**
+ * Remove a particular file from the stash. Also removes it from the repo.
+ *
+ * @throws UploadStashNotLoggedInException
+ * @throws UploadStashWrongOwnerException
+ * @return boolean: success
+ */
+ public function removeFile( $key ) {
+ if ( !$this->isLoggedIn ) {
+ throw new UploadStashNotLoggedInException( __METHOD__ . ' No user is logged in, files must belong to users' );
+ }
+
+ $dbw = $this->repo->getMasterDb();
+
+ // this is a cheap query. it runs on the master so that this function still works when there's lag.
+ // it won't be called all that often.
+ $row = $dbw->selectRow(
+ 'uploadstash',
+ 'us_user',
+ array( 'us_key' => $key ),
+ __METHOD__
+ );
+
+ if( !$row ) {
+ throw new UploadStashNoSuchKeyException( "No such key ($key), cannot remove" );
+ }
+
+ if ( $row->us_user != $this->userId ) {
+ throw new UploadStashWrongOwnerException( "Can't delete: the file ($key) doesn't belong to this user." );
+ }
+
+ return $this->removeFileNoAuth( $key );
+ }
+
+
+ /**
+ * Remove a file (see removeFile), but doesn't check ownership first.
+ *
+ * @return boolean: success
+ */
+ public function removeFileNoAuth( $key ) {
+ wfDebug( __METHOD__ . " clearing row $key\n" );
+
+ $dbw = $this->repo->getMasterDb();
+
+ // this gets its own transaction since it's called serially by the cleanupUploadStash maintenance script
+ $dbw->begin();
+ $dbw->delete(
+ 'uploadstash',
+ array( 'us_key' => $key ),
+ __METHOD__
+ );
+ $dbw->commit();
+
+ // TODO: look into UnregisteredLocalFile and find out why the rv here is sometimes wrong (false when file was removed)
+ // for now, ignore.
+ $this->files[$key]->remove();
+
+ unset( $this->files[$key] );
+ unset( $this->fileMetadata[$key] );
+
+ return true;
+ }
+
+ /**
+ * List all files in the stash.
+ *
+ * @throws UploadStashNotLoggedInException
+ * @return Array
+ */
+ public function listFiles() {
+ if ( !$this->isLoggedIn ) {
+ throw new UploadStashNotLoggedInException( __METHOD__ . ' No user is logged in, files must belong to users' );
+ }
+
+ $dbr = $this->repo->getSlaveDb();
+ $res = $dbr->select(
+ 'uploadstash',
+ 'us_key',
+ array( 'us_key' => $key ),
+ __METHOD__
+ );
+
+ if ( !is_object( $res ) || $res->numRows() == 0 ) {
+ // nothing to do.
+ return false;
+ }
+
+ // finish the read before starting writes.
+ $keys = array();
+ foreach ( $res as $row ) {
+ array_push( $keys, $row->us_key );
+ }
+
+ return $keys;
+ }
+
+ /**
* Find or guess extension -- ensuring that our extension matches our mime type.
- * Since these files are constructed from php tempnames they may not start off
+ * Since these files are constructed from php tempnames they may not start off
* with an extension.
- * XXX this is somewhat redundant with the checks that ApiUpload.php does with incoming
+ * XXX this is somewhat redundant with the checks that ApiUpload.php does with incoming
* uploads versus the desired filename. Maybe we can get that passed to us...
*/
- public static function getExtensionForPath( $path ) {
+ public static function getExtensionForPath( $path ) {
// Does this have an extension?
$n = strrpos( $path, '.' );
$extension = null;
@@ -184,8 +450,8 @@ class UploadStash {
$magic = MimeMagic::singleton();
$mimeType = $magic->guessMimeType( $path );
$extensions = explode( ' ', MimeMagic::singleton()->getExtensionsForType( $mimeType ) );
- if ( count( $extensions ) ) {
- $extension = $extensions[0];
+ if ( count( $extensions ) ) {
+ $extension = $extensions[0];
}
}
@@ -196,52 +462,103 @@ class UploadStash {
return File::normalizeExtension( $extension );
}
+ /**
+ * Helper function: do the actual database query to fetch file metadata.
+ *
+ * @param $key String: key
+ * @return boolean
+ */
+ protected function fetchFileMetadata( $key ) {
+ // populate $fileMetadata[$key]
+ $dbr = $this->repo->getSlaveDb();
+ $row = $dbr->selectRow(
+ 'uploadstash',
+ '*',
+ array( 'us_key' => $key ),
+ __METHOD__
+ );
+
+ if ( !is_object( $row ) ) {
+ // key wasn't present in the database. this will happen sometimes.
+ return false;
+ }
+
+ $this->fileMetadata[$key] = array(
+ 'us_user' => $row->us_user,
+ 'us_key' => $row->us_key,
+ 'us_orig_path' => $row->us_orig_path,
+ 'us_path' => $row->us_path,
+ 'us_size' => $row->us_size,
+ 'us_sha1' => $row->us_sha1,
+ 'us_mime' => $row->us_mime,
+ 'us_media_type' => $row->us_media_type,
+ 'us_image_width' => $row->us_image_width,
+ 'us_image_height' => $row->us_image_height,
+ 'us_image_bits' => $row->us_image_bits,
+ 'us_source_type' => $row->us_source_type,
+ 'us_timestamp' => $row->us_timestamp,
+ 'us_status' => $row->us_status
+ );
+
+ return true;
+ }
+
+ /**
+ * Helper function: Initialize the UploadStashFile for a given file.
+ *
+ * @param $path String: path to file
+ * @param $key String: key under which to store the object
+ * @throws UploadStashZeroLengthFileException
+ * @return bool
+ */
+ protected function initFile( $key ) {
+ $file = new UploadStashFile( $this->repo, $this->fileMetadata[$key]['us_path'], $key );
+ if ( $file->getSize() === 0 ) {
+ throw new UploadStashZeroLengthFileException( "File is zero length" );
+ }
+ $this->files[$key] = $file;
+ return true;
+ }
}
class UploadStashFile extends UnregisteredLocalFile {
- private $sessionStash;
- private $sessionKey;
- private $sessionData;
+ private $fileKey;
private $urlName;
+ protected $url;
/**
* A LocalFile wrapper around a file that has been temporarily stashed, so we can do things like create thumbnails for it
* Arguably UnregisteredLocalFile should be handling its own file repo but that class is a bit retarded currently
*
- * @param $stash UploadStash: useful for obtaining config, stashing transformed files
- * @param $repo FileRepo: repository where we should find the path
+ * @param $repo FSRepo: repository where we should find the path
* @param $path String: path to file
* @param $key String: key to store the path and any stashed data under
- * @param $data String: any other data we want stored with this file
* @throws UploadStashBadPathException
* @throws UploadStashFileNotFoundException
*/
- public function __construct( $stash, $repo, $path, $key, $data ) {
- $this->sessionStash = $stash;
- $this->sessionKey = $key;
- $this->sessionData = $data;
+ public function __construct( $repo, $path, $key ) {
+ $this->fileKey = $key;
// resolve mwrepo:// urls
if ( $repo->isVirtualUrl( $path ) ) {
- $path = $repo->resolveVirtualUrl( $path );
- }
+ $path = $repo->resolveVirtualUrl( $path );
+ } else {
- // check if path appears to be sane, no parent traversals, and is in this repo's temp zone.
- $repoTempPath = $repo->getZonePath( 'temp' );
- if ( ( ! $repo->validateFilename( $path ) ) ||
- ( strpos( $path, $repoTempPath ) !== 0 ) ) {
- wfDebug( "UploadStash: tried to construct an UploadStashFile from a file that should already exist at '$path', but path is not valid\n" );
- throw new UploadStashBadPathException( 'path is not valid' );
- }
+ // check if path appears to be sane, no parent traversals, and is in this repo's temp zone.
+ $repoTempPath = $repo->getZonePath( 'temp' );
+ if ( ( ! $repo->validateFilename( $path ) ) ||
+ ( strpos( $path, $repoTempPath ) !== 0 ) ) {
+ wfDebug( "UploadStash: tried to construct an UploadStashFile from a file that should already exist at '$path', but path is not valid\n" );
+ throw new UploadStashBadPathException( 'path is not valid' );
+ }
- // check if path exists! and is a plain file.
- if ( ! $repo->fileExists( $path, FileRepo::FILES_ONLY ) ) {
- wfDebug( "UploadStash: tried to construct an UploadStashFile from a file that should already exist at '$path', but path is not found\n" );
- throw new UploadStashFileNotFoundException( 'cannot find path, or not a plain file' );
+ // check if path exists! and is a plain file.
+ if ( ! $repo->fileExists( $path, FileRepo::FILES_ONLY ) ) {
+ wfDebug( "UploadStash: tried to construct an UploadStashFile from a file that should already exist at '$path', but path is not found\n" );
+ throw new UploadStashFileNotFoundException( 'cannot find path, or not a plain file' );
+ }
}
-
-
parent::__construct( false, $repo, $path, false );
$this->name = basename( $this->path );
@@ -261,13 +578,13 @@ class UploadStashFile extends UnregisteredLocalFile {
/**
* Get the path for the thumbnail (actually any transformation of this file)
- * The actual argument is the result of thumbName although we seem to have
+ * The actual argument is the result of thumbName although we seem to have
* buggy code elsewhere that expects a boolean 'suffix'
*
* @param $thumbName String: name of thumbnail (e.g. "120px-123456.jpg" ), or false to just get the path
* @return String: path thumbnail should take on filesystem, or containing directory if thumbname is false
*/
- public function getThumbPath( $thumbName = false ) {
+ public function getThumbPath( $thumbName = false ) {
$path = dirname( $this->path );
if ( $thumbName !== false ) {
$path .= "/$thumbName";
@@ -276,71 +593,49 @@ class UploadStashFile extends UnregisteredLocalFile {
}
/**
- * Return the file/url base name of a thumbnail with the specified parameters
+ * Return the file/url base name of a thumbnail with the specified parameters.
+ * We override this because we want to use the pretty url name instead of the
+ * ugly file name.
*
* @param $params Array: handler-specific parameters
* @return String: base name for URL, like '120px-12345.jpg', or null if there is no handler
*/
function thumbName( $params ) {
- return $this->getParamThumbName( $this->getUrlName(), $params );
- }
-
-
- /**
- * Given the name of the original, i.e. Foo.jpg, and scaling parameters, returns filename with appropriate extension
- * This is abstracted from getThumbName because we also use it to calculate the thumbname the file should have on
- * remote image scalers
- *
- * @param String $urlName: A filename, like MyMovie.ogx
- * @param Array $parameters: scaling parameters, like array( 'width' => '120' );
- * @return String|null parameterized thumb name, like 120px-MyMovie.ogx.jpg, or null if no handler found
- */
- function getParamThumbName( $urlName, $params ) {
- if ( !$this->getHandler() ) {
- return null;
- }
- $extension = $this->getExtension();
- list( $thumbExt, ) = $this->handler->getThumbType( $extension, $this->getMimeType(), $params );
- $thumbName = $this->getHandler()->makeParamString( $params ) . '-' . $urlName;
- if ( $thumbExt != $extension ) {
- $thumbName .= ".$thumbExt";
- }
- return $thumbName;
+ return $this->generateThumbName( $this->getUrlName(), $params );
}
/**
* Helper function -- given a 'subpage', return the local URL e.g. /wiki/Special:UploadStash/subpage
* @param {String} $subPage
- * @return {String} local URL for this subpage in the Special:UploadStash space.
+ * @return {String} local URL for this subpage in the Special:UploadStash space.
*/
private function getSpecialUrl( $subPage ) {
return SpecialPage::getTitleFor( 'UploadStash', $subPage )->getLocalURL();
}
-
- /**
- * Get a URL to access the thumbnail
- * This is required because the model of how files work requires that
+ /**
+ * Get a URL to access the thumbnail
+ * This is required because the model of how files work requires that
* the thumbnail urls be predictable. However, in our model the URL is not based on the filename
- * (that's hidden in the session)
+ * (that's hidden in the db)
*
* @param $thumbName String: basename of thumbnail file -- however, we don't want to use the file exactly
* @return String: URL to access thumbnail, or URL with partial path
*/
- public function getThumbUrl( $thumbName = false ) {
+ public function getThumbUrl( $thumbName = false ) {
wfDebug( __METHOD__ . " getting for $thumbName \n" );
return $this->getSpecialUrl( 'thumb/' . $this->getUrlName() . '/' . $thumbName );
}
- /**
+ /**
* The basename for the URL, which we want to not be related to the filename.
* Will also be used as the lookup key for a thumbnail file.
*
* @return String: base url name, like '120px-123456.jpg'
*/
- public function getUrlName() {
+ public function getUrlName() {
if ( ! $this->urlName ) {
- $this->urlName = $this->sessionKey;
+ $this->urlName = $this->fileKey;
}
return $this->urlName;
}
@@ -359,23 +654,22 @@ class UploadStashFile extends UnregisteredLocalFile {
}
/**
- * Parent classes use this method, for no obvious reason, to return the path (relative to wiki root, I assume).
+ * Parent classes use this method, for no obvious reason, to return the path (relative to wiki root, I assume).
* But with this class, the URL is unrelated to the path.
*
* @return String: url
*/
- public function getFullUrl() {
+ public function getFullUrl() {
return $this->getUrl();
}
-
/**
- * Getter for session key (the session-unique id by which this file's location & metadata is stored in the session)
+ * Getter for file key (the unique id by which this file's location & metadata is stored in the db)
*
- * @return String: session key
+ * @return String: file key
*/
- public function getSessionKey() {
- return $this->sessionKey;
+ public function getFileKey() {
+ return $this->fileKey;
}
/**
@@ -383,15 +677,26 @@ class UploadStashFile extends UnregisteredLocalFile {
* @return Status: success
*/
public function remove() {
+ if ( !$this->repo->fileExists( $this->path, FileRepo::FILES_ONLY ) ) {
+ // Maybe the file's already been removed? This could totally happen in UploadBase.
+ return true;
+ }
+
return $this->repo->freeTemp( $this->path );
}
+ public function exists() {
+ return $this->repo->fileExists( $this->path, FileRepo::FILES_ONLY );
+ }
+
}
class UploadStashNotAvailableException extends MWException {};
class UploadStashFileNotFoundException extends MWException {};
class UploadStashBadPathException extends MWException {};
-class UploadStashBadVersionException extends MWException {};
class UploadStashFileException extends MWException {};
class UploadStashZeroLengthFileException extends MWException {};
-
+class UploadStashNotLoggedInException extends MWException {};
+class UploadStashWrongOwnerException extends MWException {};
+class UploadStashMaxLagExceededException extends MWException {};
+class UploadStashNoSuchKeyException extends MWException {};
diff --git a/includes/zhtable/Makefile.py b/includes/zhtable/Makefile.py
index a7822b0b..305422bd 100644
--- a/includes/zhtable/Makefile.py
+++ b/includes/zhtable/Makefile.py
@@ -1,5 +1,5 @@
#!/usr/bin/python
-# -*- coding: utf-8 -*-
+# -*- coding: utf-8 -*-
# @author Philip
import tarfile as tf
import zipfile as zf
@@ -30,8 +30,9 @@ def unichr3( *args ):
return [unichr( int( i[2:7], 16 ) ) for i in args if i[2:7]]
# DEFINE
-SF_MIRROR = 'easynews'
-SCIM_TABLES_VER = '0.5.9'
+UNIHAN_VER = '5.2.0'
+SF_MIRROR = 'cdnetworks-kr-2'
+SCIM_TABLES_VER = '0.5.10'
SCIM_PINYIN_VER = '0.5.91'
LIBTABE_VER = '0.2.3'
# END OF DEFINE
@@ -44,7 +45,7 @@ def download( url, dest ):
if islinux:
# we use wget instead urlretrieve under Linux,
# because wget could display details like download progress
- os.system('wget %s' % url)
+ os.system( 'wget %s -O %s' % ( url, dest ) )
else:
print( 'Downloading from [%s] ...' % url )
urllib_request.urlretrieve( url, dest )
@@ -81,7 +82,8 @@ def parserCore( fp, pos, beginmark = None, endmark = None ):
elems = line.split()
if len( elems ) < 2:
continue
- elif len( elems[0] ) > 1:
+ elif len( elems[0] ) > 1 and \
+ len( elems[pos] ) > 1: # words only
mlist.add( elems[pos] )
return mlist
@@ -258,7 +260,7 @@ def PHPArray( table ):
def main():
#Get Unihan.zip:
- url = 'http://www.unicode.org/Public/UNIDATA/Unihan.zip'
+ url = 'http://www.unicode.org/Public/%s/ucd/Unihan.zip' % UNIHAN_VER
han_dest = 'Unihan.zip'
download( url, han_dest )
diff --git a/includes/zhtable/simp2trad_noconvert.manual b/includes/zhtable/simp2trad_noconvert.manual
index 5ad656b3..a46560a7 100644
--- a/includes/zhtable/simp2trad_noconvert.manual
+++ b/includes/zhtable/simp2trad_noconvert.manual
@@ -1,4 +1,139 @@
è‘—
竈
彞
-ä½™
+=>"ä½™"
+=>"ð«—­"
+=>"𪨧"
+=>"ð«š­"
+=>"𫔀"
+=>"ð«Š»"
+=>"𫋌"
+=>"蚃"
+=>"𩾂"
+=>"𫚜"
+=>"𫚢"
+=>"𧉰"
+=>"䙌"
+=>"ð«Š®"
+=>"𫋇"
+=>"𫉄"
+=>"𫘛"
+=>"𫘜"
+=>"ð«˜"
+=>"𫘟"
+=>"𩧨"
+=>"𩧫"
+=>"𫘞"
+=>"𫘠"
+=>"𩧲"
+=>"𩧴"
+=>"𫘡"
+=>"𩧺"
+=>"𫘣"
+=>"𫘤"
+=>"𫘧"
+=>"𫘥"
+=>"𫘦"
+=>"𩨀"
+=>"𩨊"
+=>"𫘩"
+=>"𩨃"
+=>"𫘪"
+=>"𫘪"
+=>"𫘫"
+=>"𫘬"
+=>"𩨈"
+=>"𫘨"
+=>"𩨄"
+=>"𫘭"
+=>"𩧯"
+=>"𫘯"
+=>"𫘰"
+=>"𫘱"
+=>"𫘽"
+=>"𫚉"
+=>"𩽹"
+=>"𫚌"
+=>"ð«š"
+=>"ð«š’"
+=>"ð«š‘"
+=>"ð«š–"
+=>"𩽾"
+=>"䲟"
+=>"ð«š“"
+=>"ð«š—"
+=>"ð«š”"
+=>"ð«š›"
+=>"𩾃"
+=>"ð«šš"
+=>"ð©¾"
+=>"ð«š™"
+=>"ð«š¡"
+=>"ð«šž"
+=>"𩾇"
+=>"𩽼"
+=>"𫚣"
+=>"ä² "
+=>"䲡"
+=>"𫚊"
+=>"𫚥"
+=>"ð«š•"
+=>"𫚤"
+=>"ä²¢"
+=>"𫚦"
+=>"𫚧"
+=>"ð«š‹"
+=>"𩾌"
+=>"𫚪"
+=>"ð«š«"
+=>"𫚈"
+=>"ð«š­"
+=>"ð«››"
+=>"𪉃"
+=>"𫛚"
+=>"𫛜"
+=>"𫛞"
+=>"ð«›"
+=>"𫛤"
+=>"ð«›¡"
+=>"ð«¡"
+=>"𪉈"
+=>"𫛣"
+=>"𫛦"
+=>"𪉆"
+=>"ð«›©"
+=>"𫛪"
+=>"𫛥"
+=>"ðª‰"
+=>"ð«›­"
+=>"𫛨"
+=>"ð«›³"
+=>"ð«›±"
+=>"ð«›²"
+=>"ð«›µ"
+=>"𫛶"
+=>"𫛸"
+=>"ð«›·"
+=>"𫛯"
+=>"ð«›«"
+=>"ð«›½"
+=>"𫜀"
+=>"𪉑"
+=>"𫜃"
+=>"ð«›´"
+=>"𪉊"
+=>"ð«œ"
+=>"𫜄"
+=>"𫛢"
+=>"𫛟"
+=>"𪎊"
+=>"𤿲"
+=>"𪎉"
+=>"𪎌"
+=>"𫜑"
+=>"𫜩"
+=>"𫜪"
+=>"𫜭"
+=>"𫜬"
+=>"𫜮"
+=>"𫜰"
diff --git a/includes/zhtable/simpphrases.manual b/includes/zhtable/simpphrases.manual
index 4b699e26..d8602fec 100644
--- a/includes/zhtable/simpphrases.manual
+++ b/includes/zhtable/simpphrases.manual
@@ -2169,6 +2169,7 @@
å—…å¾—ç€
å—…ä¸ç€
å—…ç€
+警戒ç€
於乎
æ–¼æˆ
é­å¾µ
@@ -2232,4 +2233,7 @@
苧烯
近角èªä¿¡
米泽瑠美
-å³¯å²¸å— \ No newline at end of file
+峯岸å—
+僧伽å’
+王é“ä¹¾
+後姓
diff --git a/includes/zhtable/toCN.manual b/includes/zhtable/toCN.manual
index 54e95765..41680d1f 100644
--- a/includes/zhtable/toCN.manual
+++ b/includes/zhtable/toCN.manual
@@ -54,6 +54,7 @@
軟碟機 软驱
快閃記憶體 快闪存储器
滑鼠 鼠标
+滑鼠蛇 滑鼠蛇
äºŒé€²ä½ äºŒè¿›åˆ¶
æ»¿äºŒé€²ä½ æ»¡äºŒè¿›ä½
å…­é€²ä½ å…­è¿›åˆ¶
@@ -77,7 +78,6 @@
資訊ç†è«– ä¿¡æ¯è®º
迴圈 循环
防寫 写ä¿æŠ¤
-åˆ†æ•£å¼ åˆ†å¸ƒå¼
解æžåº¦ 分辨率
伺æœå™¨ æœåŠ¡å™¨
等於 等于
@@ -86,14 +86,11 @@
掃瞄器 扫瞄仪
寬頻 宽带
資料庫 æ•°æ®åº“
-鉅賈 巨商
è¬æ›† 万历
永曆 永历
è¾­å½™ è¯æ±‡
æ¯éŸ³ 元音
-è‡ªç”±çƒ ä»»æ„çƒ
-自由çƒå‘˜ 自由çƒå‘˜
-自由çƒå“¡ 自由çƒå‘˜
+å­—æ¯ å­—æ¯
頭槌 头çƒ
é€²çƒ å…¥çƒ
é¡†é€²çƒ ç²’å…¥çƒ
@@ -232,8 +229,6 @@
åŽä¹è¡— åŽä¹è¡—
屋价 房价
計程車 出租车
-公車 公共汽车
-公車上書 公车上书
單車 自行车
節慶 节日
èŠå£« 乾酪
diff --git a/includes/zhtable/toHK.manual b/includes/zhtable/toHK.manual
index 53b354c7..2ebb7504 100644
--- a/includes/zhtable/toHK.manual
+++ b/includes/zhtable/toHK.manual
@@ -133,7 +133,6 @@
马自达 è¬äº‹å¾—
é¦¬è‡ªé” è¬äº‹å¾—
å¯¶ç… æ¨™è‡´
-æ‹¿ç ´å´™ æ‹¿ç ´ä¾–
布什 布殊
布希 布殊
布希亞 布希亞
@@ -2123,6 +2122,7 @@
å—…å¾—è‘— å—…å¾—ç€
å—…ä¸è‘— å—…ä¸ç€
å—…è‘— å—…ç€
+警戒著 警戒ç€
榴莲 榴槤
榴蓮 榴槤
å‘布 發佈
@@ -2239,4 +2239,4 @@
分布 分佈
分布于 分佈於
分布於 分佈於
-想象 æƒ³åƒ \ No newline at end of file
+想象 想åƒ
diff --git a/includes/zhtable/toSimp.manual b/includes/zhtable/toSimp.manual
index da04b82e..739d04c3 100644
--- a/includes/zhtable/toSimp.manual
+++ b/includes/zhtable/toSimp.manual
@@ -159,4 +159,7 @@
近角èªä¿¡ 近角èªä¿¡
ä¿®éŠ ä¿®ç‚¼
米泽瑠美 米泽瑠美
-太閤 太é˜
+太閤 太é˜
+候覆 候å¤
+待覆 å¾…å¤
+批覆 批å¤
diff --git a/includes/zhtable/toTW.manual b/includes/zhtable/toTW.manual
index a638e86b..35b62689 100644
--- a/includes/zhtable/toTW.manual
+++ b/includes/zhtable/toTW.manual
@@ -86,6 +86,7 @@
远程控制 é ç¨‹æŽ§åˆ¶
é ç¨‹æŽ§åˆ¶ é ç¨‹æŽ§åˆ¶
行程控制 行程控制
+æµç¨‹æŽ§åˆ¶ æµç¨‹æŽ§åˆ¶
ç«¯å£ åŸ 
ç®—å­ é‹ç®—å…ƒ
算法 演算法
@@ -105,7 +106,6 @@
便æºå¼ 攜帶型
ä¿¡æ¯è®º 資訊ç†è«–
写ä¿æŠ¤ 防寫
-åˆ†å¸ƒå¼ åˆ†æ•£å¼
分辨率 解æžåº¦
æœåŠ¡å™¨ 伺æœå™¨
等于 等於
@@ -114,7 +114,6 @@
宽带 寬頻
æ•°æ®åº“ 資料庫
奶酪 乳酪
-巨商 鉅賈
手电 手電筒
手电筒 手電筒
万历 è¬æ›†
@@ -125,9 +124,6 @@
新纪元 新紀元
新紀元 新紀元
宋元 宋元
-ä»»æ„çƒ è‡ªç”±çƒ
-ä»»æ„çƒå‘˜ ä»»æ„çƒå“¡
-ä»»æ„çƒå“¡ ä»»æ„çƒå“¡
å¤´çƒ é ­æ§Œ
å…¥çƒ é€²çƒ
ç²’å…¥çƒ é¡†é€²çƒ
@@ -410,3 +406,5 @@
æ‘å­è£ æ‘å­è£¡
é’霉素 é’é»´ç´ 
想象 想åƒ
+锎 鉲
+ä¿¡é“ ä¿¡é“
diff --git a/includes/zhtable/toTrad.manual b/includes/zhtable/toTrad.manual
index 0c79178f..b0efd28e 100644
--- a/includes/zhtable/toTrad.manual
+++ b/includes/zhtable/toTrad.manual
@@ -179,4 +179,8 @@
黎å‰é›² 黎å‰é›²
于飛島 于飛島
鄉愿 鄉愿
-奇迹 奇蹟
+奇迹 奇蹟
+å€™å¤ å€™è¦†
+å¾…å¤ å¾…è¦†
+æ‰¹å¤ æ‰¹è¦†
+划槳 划槳
diff --git a/includes/zhtable/trad2simp.manual b/includes/zhtable/trad2simp.manual
index 6cbc3ee5..692c74b5 100644
--- a/includes/zhtable/trad2simp.manual
+++ b/includes/zhtable/trad2simp.manual
@@ -1,26 +1,3 @@
-U+03473㑳|U+03447㑇|
-U+04308䌈|U+26216𦈖|
-U+04A8Fäª|U+293FCð©¼|
-U+04A97䪗|U+29400ð©€|
-U+04A98䪘|U+293FFð©¿|
-U+04AF4ä«´|U+29597ð©–—|
-U+04B18䬘|U+2966E𩙮|
-U+04B1Dä¬|U+2966F𩙯|
-U+04B40ä­€|U+29807ð© ‡|
-U+04B43ä­ƒ|U+29808ð© ˆ|
-U+04B7F䭿|U+299ED𩧭|
-U+04B9Dä®|U+299F0𩧰|
-U+04B9E䮞|U+29A01ð©¨|
-U+04BA0䮠|U+299FF𩧿|
-U+04BB3䮳|U+29A0Fð©¨|
-U+04BBE䮾|U+299EA𩧪|
-U+04C59䱙|U+29F88𩾈|
-U+04C6C䱬|U+29F8A𩾊|
-U+04C70䱰|U+29F8B𩾋|
-U+04C77ä±·|U+04CA3ä²£|
-U+04CB0䲰|U+2A242𪉂|
-U+04D2C䴬|U+2A388𪎈|
-U+04D34䴴|U+2A38B𪎋|
U+04E99亙|U+04E98亘|
U+04F48佈|U+05E03布|
U+04F48佈|U+05E03布|
@@ -35,7 +12,6 @@ U+052F3勳|U+052CB勋|
U+0537Då½|U+05373å³|
U+053A4厤|U+05386历|
U+055ABå–«|U+05403åƒ|
-U+055F0嗰|U+20BB6𠮶|
U+05641å™|U+06076æ¶|
U+05690åš|U+05C1Då°|
U+056A5嚥|U+054BD咽|
@@ -140,36 +116,12 @@ U+0904AéŠ|U+06E38游|
U+09061é¡|U+06EAF溯|
U+091A3醣|U+07CD6糖|
U+091AF醯|U+09170酰|
-U+091F3釳|U+28C3F𨰿|
-U+091FE釾|U+0497A䥺|
-U+0920B鈋|U+28C42𨱂|
-U+09220鈠|U+28C41ð¨±|
-U+0922F鈯|U+28C44𨱄|
-U+09232鈲|U+28C43𨱃|
-U+09241é‰|U+28C45𨱅|
-U+092B6銶|U+28C47𨱇|
-U+092C9鋉|U+28C48𨱈|
-U+09302錂|U+28C4B𨱋|
-U+09344é„|U+28C49𨱉|
U+0934AéŠ|U+070BC炼|U+094FE链|
-U+0936Eé®|U+28C4E𨱎|
U+0938C鎌|U+09570镰|
-U+0939DéŽ|U+28C4Fð¨±|
U+093AD鎭|U+093AE镇|
-U+093AF鎯|U+28C4Dð¨±|
-U+093B7鎷|U+28C3E𨰾|
-U+093C6é†|U+28C4C𨱌|
-U+093C9é‰|U+28C52𨱒|
U+093DAéš|U+0621A戚|
-U+093FAéº|U+0497D䥽|
-U+0940EéŽ|U+28C53𨱓|
-U+0940Fé|U+28C54𨱔|
-U+09425é¥|U+04985䦅|
-U+0942Fé¯|U+04983䦃|
U+09451鑑|U+09274鉴|
U+0955Fé•Ÿ|U+065CBæ—‹|
-U+0958Dé–|U+28E02𨸂|
-U+09590é–|U+28E03𨸃|
U+09592é–’|U+095F2é—²|
U+095A4é–¤|U+05408åˆ|
U+095E2闢|U+08F9F辟|
@@ -178,53 +130,17 @@ U+0965E陞|U+05347å‡|
U+097A6鞦|U+079CB秋|U+097A7鞧|
U+097C6韆|U+05343åƒ|
U+097DDéŸ|U+097B2éž²|
-U+09843顃|U+29596𩖖|
-U+098B0颰|U+29665𩙥|
-U+098B7颷|U+2966A𩙪|
-U+098BE颾|U+2966B𩙫|
+U+09858願|U+0613F愿|
U+098F1飱|U+098E7飧|
U+09918餘|U+04F59余|U+09980馀|
+U+09931餱|U+07CC7糇|
U+09935餵|U+05582喂|
-U+09938餸|U+2980C𩠌|
-U+099CE駎|U+299E8𩧨|
-U+099DA駚|U+299EB𩧫|
-U+099E7駧|U+299F2𩧲|
-U+099E9駩|U+299F4𩧴|
-U+099F6駶|U+299FA𩧺|
-U+09A14騔|U+29A00𩨀|
-U+09A1A騚|U+29A0A𩨊|
-U+09A1Dé¨|U+29A03𩨃|
-U+09A1F騟|U+29A08𩨈|
-U+09A2A騪|U+29A04𩨄|
-U+09A4B驋|U+299EF𩧯|
U+09B28鬨|U+054C4哄|
-U+09B65魥|U+29F79𩽹|
-U+09B95鮕|U+29F80𩾀|
-U+09B9F鮟|U+29F7E𩽾|
-U+09BA3鮣|U+04C9F䲟|
-U+09BB8鮸|U+29F83𩾃|
-U+09BC4鯄|U+29F81ð©¾|
-U+09BF1鯱|U+29F87𩾇|
-U+09BF6鯶|U+29F7C𩽼|
-U+09C06é°†|U+04CA0ä² |
-U+09C0C鰌|U+04CA1䲡|
-U+09C27é°§|U+04CA2ä²¢|
-U+09C47鱇|U+29F8C𩾌|
-U+09C47鱇|U+29F8C𩾌|
-U+09CFC鳼|U+2A243𪉃|
-U+09D1C鴜|U+2A248𪉈|
-U+09D32鴲|U+2A246𪉆|
-U+09D5A鵚|U+2A24Dðª‰|
U+09D70鵰|U+096D5雕|U+05F6B彫|
-U+09DD4鷔|U+2A251𪉑|
-U+09DE8鷨|U+2A24A𪉊|
U+09E7C鹼|U+078B1碱|U+07877硷|
-U+09EA8麨|U+2A38A𪎊|
U+09EAA麪|U+09762é¢|
U+09EAB麫|U+09762é¢|
U+09EAF麯|U+066F2曲|
-U+09EB2麲|U+2A389𪎉|
-U+09EB3麳|U+2A38C𪎌|
U+09EB4麴|U+066F2曲|U+09EB4麴|
U+09EF4黴|U+09709霉|
U+09F15鼕|U+051AC冬|
@@ -232,60 +148,4 @@ U+09F47齇|U+09F44齄|
U+09F63齣|U+051FA出|
U+09F91龑|U+04DAE䶮|
U+21ED5ð¡»•|U+05C81å²|
-U+26A99𦪙|U+0447D䑽|
-U+2895B𨥛|U+28C40𨱀|
-U+289F1𨧱|U+28C4A𨱊|
-U+28AD2𨫒|U+28C50ð¨±|
-U+28B82𨮂|U+28C55𨱕|
-U+293A2ð©Ž¢|U+293FEð©¾|
-U+293EAð©ª|U+293FDð©½|
-U+294E3ð©“£|U+29595ð©–•|
-U+295C0𩗀|U+29666𩙦|
-U+295E1𩗡|U+29667𩙧|
-U+29600𩘀|U+29669𩙩|
-U+2961Dð©˜|U+2966Dð©™­|
-U+29639𩘹|U+29668𩙨|
-U+2963A𩘺|U+2966C𩙬|
-U+29648𩙈|U+29670𩙰|
-U+29726𩜦|U+29806𩠆|
-U+29754ð©”|U+2980Bð© ‹|
-U+297AF𩞯|U+04B6A䭪|
-U+297D0ð©Ÿ|U+29805ð© …|
-U+2987A𩡺|U+299E6𩧦|
-U+298A1𩢡|U+299EC𩧬|
-U+298B4𩢴|U+299F5𩧵|
-U+298B8𩢸|U+299F3𩧳|
-U+298BE𩢾|U+299EE𩧮|
-U+298CFð©£|U+299F6𩧶|
U+298F5𩣵|U+299FB𩧻|
-U+298FA𩣺|U+299FC𩧼|
-U+2990A𩤊|U+299E9𩧩|
-U+29919𩤙|U+29A06𩨆|
-U+29932𩤲|U+29A09𩨉|
-U+29938𩤸|U+29A05𩨅|
-U+29944𩥄|U+29A0B𩨋|
-U+29947𩥇|U+29A0Dð©¨|
-U+29949𩥉|U+299F1𩧱|
-U+29951𩥑|U+29A0C𩨌|
-U+299C6𩧆|U+29A10ð©¨|
-U+29D69𩵩|U+29F7A𩽺|
-U+29D79𩵹|U+29F7B𩽻|
-U+29DB0𩶰|U+29F7F𩽿|
-U+29DB1𩶱|U+29F7D𩽽|
-U+29DF0𩷰|U+29F84𩾄|
-U+29E03𩸃|U+29F85𩾅|
-U+29E26𩸦|U+29F86𩾆|
-U+29F47𩽇|U+29F8E𩾎|
-U+29FEA𩿪|U+2A244𪉄|
-U+2A026𪀦|U+2A245𪉅|
-U+2A03E𪀾|U+2A24B𪉋|
-U+2A048ðªˆ|U+2A249𪉉|
-U+2A056ðª–|U+2A24C𪉌|
-U+2A086𪂆|U+2A24E𪉎|
-U+2A0CDðªƒ|U+2A250ðª‰|
-U+2A0CFðªƒ|U+2A24Fðª‰|
-U+2A106𪄆|U+2A254𪉔|
-U+2A115𪄕|U+2A252𪉒|
-U+2A1F3𪇳|U+2A255𪉕|
-U+2A600𪘀|U+2A68Fðªš|
-U+2A62F𪘯|U+2A690ðªš| \ No newline at end of file
diff --git a/includes/zhtable/trad2simp_noconvert.manual b/includes/zhtable/trad2simp_noconvert.manual
index 6efab3d4..052bab69 100644
--- a/includes/zhtable/trad2simp_noconvert.manual
+++ b/includes/zhtable/trad2simp_noconvert.manual
@@ -2,3 +2,4 @@
ç¢
è—‰
=>"çƒ"
+ð«š­
diff --git a/includes/zhtable/tradphrases.manual b/includes/zhtable/tradphrases.manual
index 5a832a60..ee3bc69f 100644
--- a/includes/zhtable/tradphrases.manual
+++ b/includes/zhtable/tradphrases.manual
@@ -66,6 +66,20 @@
åƒå¤šéš»
è¬å¤šéš»
億多隻
+這åªèƒ½
+這åªå¯
+這åªåœ¨
+這åªæ˜¯
+這åªéœ€
+這åªæœƒ
+這åªç”¨
+é‚£åªèƒ½
+é‚£åªå¯
+é‚£åªåœ¨
+é‚£åªæ˜¯
+é‚£åªéœ€
+é‚£åªæœƒ
+é‚£åªç”¨
多åªèƒ½
多åªå¯
多åªåœ¨
@@ -917,6 +931,7 @@
國歷任
國歷屆
國歷經
+國歷來
æ–°æ­·å²
å¤æ­·å²
百花曆
@@ -1299,6 +1314,7 @@
府干å¿
一干人
未乾
+未干涉
抹乾
餅乾
æ‹­ä¹¾
@@ -2294,6 +2310,7 @@
多餘
剩餘
餘生
+餘歡
有餘
一餘
二餘
@@ -3381,7 +3398,6 @@
çƒæ†
腊之以為餌
腊毒
-è‰å¹¿
蜡月
蜡祭
言云
@@ -3776,6 +3792,7 @@
于å‰
于堅
于姓
+于æ°
于娜
于娟
于山
@@ -4010,6 +4027,7 @@
染殿åŽ
准三åŽ
風åŽ
+åŽæ¯æˆŠ
風後,
人如風後入江雲
中風後
@@ -4024,6 +4042,7 @@
順風後
大風後
馬格里布
+伊里布
劃入
中庄å­
埔è£ç¤¾æ’«å¢¾å±€
@@ -4257,3 +4276,32 @@
一頭長髮
çš„é•·é«®
黑色長髮
+å‰å¤©
+昨天
+今天
+明天
+後天
+數學家
+科學家
+物ç†å­¸å®¶
+化學家
+生物學家
+天文學家
+游離
+å­æ™³
+ç´…åŽå‡èªª
+書é¢
+ä¸åª
+高涌泉
+請求
+考試
+測試
+筆試
+å£è©¦
+冰冷
+王田里
+åŽå§“
+å°å·ž
+田庄英雄
+計劃
+抑制劑
diff --git a/includes/zhtable/tradphrases_exclude.manual b/includes/zhtable/tradphrases_exclude.manual
index 6ed245c3..e6abb4e1 100644
--- a/includes/zhtable/tradphrases_exclude.manual
+++ b/includes/zhtable/tradphrases_exclude.manual
@@ -327,3 +327,4 @@
好家伙
姦污
併發
+è¡šè¡•
diff --git a/index.php b/index.php
index 8b4e2f7d..8b53e2ca 100644
--- a/index.php
+++ b/index.php
@@ -1,5 +1,4 @@
<?php
-
/**
* This is the main web entry point for MediaWiki.
*
@@ -13,7 +12,7 @@
*
* ----------
*
- * Copyright (C) 2001-2010 Magnus Manske, Brion Vibber, Lee Daniel Crocker,
+ * Copyright (C) 2001-2011 Magnus Manske, Brion Vibber, Lee Daniel Crocker,
* Tim Starling, Erik Möller, Gabriel Wicke, Ævar Arnfjörð Bjarmason,
* Niklas Laxström, Domas Mituzas, Rob Church, Yuri Astrakhan, Aryeh Gregor,
* Aaron Schulz, Andrew Garrett, Raimond Spekking, Alexandre Emsenhuber
@@ -37,82 +36,22 @@
* @file
*/
-# Initialise common code
-$preIP = dirname( __FILE__ );
-require_once( "$preIP/includes/WebStart.php" );
-
-# Initialize MediaWiki base class
-$mediaWiki = new MediaWiki();
-
-wfProfileIn( 'main-misc-setup' );
-OutputPage::setEncodings(); # Not really used yet
-
-$maxLag = $wgRequest->getVal( 'maxlag' );
-if( !is_null( $maxLag ) && !$mediaWiki->checkMaxLag( $maxLag ) ) {
- exit;
+// Bail on old versions of PHP. Pretty much every other file in the codebase
+// has structures (try/catch, foo()->bar(), etc etc) which throw parse errors in PHP 4.
+// Setup.php and ObjectCache.php have structures invalid in PHP 5.0 and 5.1, respectively.
+if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.2.3' ) < 0 ) {
+ require( dirname( __FILE__ ) . '/includes/PHPVersionError.php' );
+ wfPHPVersionError( 'index.php' );
}
-# Query string fields
-$action = $wgRequest->getVal( 'action', 'view' );
-$title = $wgRequest->getVal( 'title' );
-
-# Set title from request parameters
-$wgTitle = $mediaWiki->checkInitialQueries( $title, $action );
-if( $wgTitle === null ) {
- unset( $wgTitle );
+# Initialise common code. This gives us access to GlobalFunctions, the AutoLoader, and
+# the globals $wgRequest, $wgOut, $wgUser, $wgLang and $wgContLang, amongst others; it
+# does *not* load $wgTitle
+if ( isset( $_SERVER['MW_COMPILED'] ) ) {
+ require ( 'phase3/includes/WebStart.php' );
+} else {
+ require ( dirname( __FILE__ ) . '/includes/WebStart.php' );
}
-wfProfileOut( 'main-misc-setup' );
-
-#
-# Send Ajax requests to the Ajax dispatcher.
-#
-if( $wgUseAjax && $action == 'ajax' ) {
- require_once( $IP . '/includes/AjaxDispatcher.php' );
- $dispatcher = new AjaxDispatcher();
- $dispatcher->performAction();
- $mediaWiki->restInPeace();
- exit;
-}
-
-if( $wgUseFileCache && isset( $wgTitle ) ) {
- wfProfileIn( 'main-try-filecache' );
- // Raw pages should handle cache control on their own,
- // even when using file cache. This reduces hits from clients.
- if( $action != 'raw' && HTMLFileCache::useFileCache() ) {
- /* Try low-level file cache hit */
- $cache = new HTMLFileCache( $wgTitle, $action );
- if( $cache->isFileCacheGood( /* Assume up to date */ ) ) {
- /* Check incoming headers to see if client has this cached */
- if( !$wgOut->checkLastModified( $cache->fileCacheTime() ) ) {
- $cache->loadFromFileCache();
- }
- # Do any stats increment/watchlist stuff
- $wgArticle = MediaWiki::articleFromTitle( $wgTitle );
- $wgArticle->viewUpdates();
- # Tell $wgOut that output is taken care of
- wfProfileOut( 'main-try-filecache' );
- $mediaWiki->restInPeace();
- exit;
- }
- }
- wfProfileOut( 'main-try-filecache' );
-}
-
-# Setting global variables in mediaWiki
-$mediaWiki->setVal( 'action', $action );
-$mediaWiki->setVal( 'DisabledActions', $wgDisabledActions );
-$mediaWiki->setVal( 'DisableHardRedirects', $wgDisableHardRedirects );
-$mediaWiki->setVal( 'EnableCreativeCommonsRdf', $wgEnableCreativeCommonsRdf );
-$mediaWiki->setVal( 'EnableDublinCoreRdf', $wgEnableDublinCoreRdf );
-$mediaWiki->setVal( 'JobRunRate', $wgJobRunRate );
-$mediaWiki->setVal( 'Server', $wgServer );
-$mediaWiki->setVal( 'SquidMaxage', $wgSquidMaxage );
-$mediaWiki->setVal( 'UseExternalEditor', $wgUseExternalEditor );
-$mediaWiki->setVal( 'UsePathInfo', $wgUsePathInfo );
-
-$mediaWiki->performRequestForTitle( $wgTitle, $wgArticle, $wgOut, $wgUser, $wgRequest );
-$mediaWiki->finalCleanup( $wgOut );
-
-$mediaWiki->restInPeace();
-
+$mediaWiki = new MediaWiki();
+$mediaWiki->run();
diff --git a/languages/Language.php b/languages/Language.php
index fee5aec3..ac921403 100644
--- a/languages/Language.php
+++ b/languages/Language.php
@@ -19,14 +19,6 @@ if ( !defined( 'MEDIAWIKI' ) ) {
global $wgLanguageNames;
require_once( dirname( __FILE__ ) . '/Names.php' );
-global $wgInputEncoding, $wgOutputEncoding;
-
-/**
- * These are always UTF-8, they exist only for backwards compatibility
- */
-$wgInputEncoding = 'UTF-8';
-$wgOutputEncoding = 'UTF-8';
-
if ( function_exists( 'mb_strtoupper' ) ) {
mb_internal_encoding( 'UTF-8' );
}
@@ -73,7 +65,11 @@ class Language {
*/
var $transformData = array();
+ /**
+ * @var LocalisationCache
+ */
static public $dataCache;
+
static public $mLangObjCache = array();
static public $mWeekdayMsgs = array(
@@ -132,6 +128,8 @@ class Language {
/**
* Get a cached language object for a given language code
+ * @param $code String
+ * @return Language
*/
static function factory( $code ) {
if ( !isset( self::$mLangObjCache[$code] ) ) {
@@ -146,28 +144,40 @@ class Language {
/**
* Create a language object for a given language code
+ * @param $code String
+ * @return Language
*/
protected static function newFromCode( $code ) {
global $IP;
static $recursionLevel = 0;
// Protect against path traversal below
- if ( !Language::isValidCode( $code )
- || strcspn( $code, "/\\\000" ) !== strlen( $code ) )
+ if ( !Language::isValidCode( $code )
+ || strcspn( $code, ":/\\\000" ) !== strlen( $code ) )
{
throw new MWException( "Invalid language code \"$code\"" );
}
+ if ( !Language::isValidBuiltInCode( $code ) ) {
+ // It's not possible to customise this code with class files, so
+ // just return a Language object. This is to support uselang= hacks.
+ $lang = new Language;
+ $lang->setCode( $code );
+ return $lang;
+ }
+
if ( $code == 'en' ) {
$class = 'Language';
} else {
$class = 'Language' . str_replace( '-', '_', ucfirst( $code ) );
- // Preload base classes to work around APC/PHP5 bug
- if ( file_exists( "$IP/languages/classes/$class.deps.php" ) ) {
- include_once( "$IP/languages/classes/$class.deps.php" );
- }
- if ( file_exists( "$IP/languages/classes/$class.php" ) ) {
- include_once( "$IP/languages/classes/$class.php" );
+ if ( !defined( 'MW_COMPILED' ) ) {
+ // Preload base classes to work around APC/PHP5 bug
+ if ( file_exists( "$IP/languages/classes/$class.deps.php" ) ) {
+ include_once( "$IP/languages/classes/$class.deps.php" );
+ }
+ if ( file_exists( "$IP/languages/classes/$class.php" ) ) {
+ include_once( "$IP/languages/classes/$class.php" );
+ }
}
}
@@ -175,7 +185,7 @@ class Language {
throw new MWException( "Language fallback loop detected when creating class $class\n" );
}
- if ( !class_exists( $class ) ) {
+ if ( !MWInit::classExists( $class ) ) {
$fallback = Language::getFallbackFor( $code );
++$recursionLevel;
$lang = Language::newFromCode( $fallback );
@@ -188,15 +198,37 @@ class Language {
}
/**
- * Returns true if a language code string is of a valid form, whether or
- * not it exists.
+ * Returns true if a language code string is of a valid form, whether or
+ * not it exists. This includes codes which are used solely for
+ * customisation via the MediaWiki namespace.
+ *
+ * @param $code string
+ *
+ * @return bool
*/
public static function isValidCode( $code ) {
- return strcspn( $code, "/\\\000" ) === strlen( $code );
+ return
+ strcspn( $code, ":/\\\000" ) === strlen( $code )
+ && !preg_match( Title::getTitleInvalidRegex(), $code );
+ }
+
+ /**
+ * Returns true if a language code is of a valid form for the purposes of
+ * internal customisation of MediaWiki, via Messages*.php.
+ *
+ * @param $code string
+ *
+ * @since 1.18
+ * @return bool
+ */
+ public static function isValidBuiltInCode( $code ) {
+ return preg_match( '/^[a-z0-9-]*$/i', $code );
}
/**
* Get the LocalisationCache instance
+ *
+ * @return LocalisationCache
*/
public static function getLocalisationCache() {
if ( is_null( self::$dataCache ) ) {
@@ -234,14 +266,8 @@ class Language {
function initContLang() { }
/**
- * @deprecated Use User::getDefaultOptions()
- * @return array
+ * @return array|bool
*/
- function getDefaultUserOptions() {
- wfDeprecated( __METHOD__ );
- return User::getDefaultOptions();
- }
-
function getFallbackLanguageCode() {
if ( $this->mCode === 'en' ) {
return false;
@@ -278,7 +304,7 @@ class Language {
$this->namespaceNames[NS_PROJECT_TALK] =
$this->fixVariableInNamespace( $talk );
}
-
+
# Sometimes a language will be localised but not actually exist on this wiki.
foreach( $this->namespaceNames as $key => $text ) {
if ( !isset( $validNamespaces[$key] ) ) {
@@ -329,6 +355,8 @@ class Language {
* getNsText() except with '_' changed to ' ', useful for
* producing output.
*
+ * @param $index string
+ *
* @return array
*/
function getFormattedNsText( $index ) {
@@ -337,6 +365,42 @@ class Language {
}
/**
+ * Returns gender-dependent namespace alias if available.
+ * @param $index Int: namespace index
+ * @param $gender String: gender key (male, female... )
+ * @return String
+ * @since 1.18
+ */
+ function getGenderNsText( $index, $gender ) {
+ global $wgExtraGenderNamespaces;
+
+ $ns = $wgExtraGenderNamespaces + self::$dataCache->getItem( $this->mCode, 'namespaceGenderAliases' );
+ return isset( $ns[$index][$gender] ) ? $ns[$index][$gender] : $this->getNsText( $index );
+ }
+
+ /**
+ * Whether this language makes distinguishes genders for example in
+ * namespaces.
+ * @return bool
+ * @since 1.18
+ */
+ function needsGenderDistinction() {
+ global $wgExtraGenderNamespaces, $wgExtraNamespaces;
+ if ( count( $wgExtraGenderNamespaces ) > 0 ) {
+ // $wgExtraGenderNamespaces overrides everything
+ return true;
+ } elseif( isset( $wgExtraNamespaces[NS_USER] ) && isset( $wgExtraNamespaces[NS_USER_TALK] ) ) {
+ /// @todo There may be other gender namespace than NS_USER & NS_USER_TALK in the future
+ // $wgExtraNamespaces overrides any gender aliases specified in i18n files
+ return false;
+ } else {
+ // Check what is in i18n files
+ $aliases = self::$dataCache->getItem( $this->mCode, 'namespaceGenderAliases' );
+ return count( $aliases ) > 0;
+ }
+ }
+
+ /**
* Get a namespace key by value, case insensitive.
* Only matches namespace names for the current language, not the
* canonical ones defined in Namespace.php.
@@ -350,6 +414,9 @@ class Language {
return isset( $ids[$lctext] ) ? $ids[$lctext] : false;
}
+ /**
+ * @return array
+ */
function getNamespaceAliases() {
if ( is_null( $this->namespaceAliases ) ) {
$aliases = self::$dataCache->getItem( $this->mCode, 'namespaceAliases' );
@@ -364,11 +431,23 @@ class Language {
}
}
}
+
+ global $wgExtraGenderNamespaces;
+ $genders = $wgExtraGenderNamespaces + (array)self::$dataCache->getItem( $this->mCode, 'namespaceGenderAliases' );
+ foreach ( $genders as $index => $forms ) {
+ foreach ( $forms as $alias ) {
+ $aliases[$alias] = $index;
+ }
+ }
+
$this->namespaceAliases = $aliases;
}
return $this->namespaceAliases;
}
+ /**
+ * @return array
+ */
function getNamespaceIds() {
if ( is_null( $this->mNamespaceIds ) ) {
global $wgNamespaceAliases;
@@ -419,6 +498,10 @@ class Language {
return $this->getMessageFromDB( "variantname-$code" );
}
+ /**
+ * @param $name string
+ * @return string
+ */
function specialPage( $name ) {
$aliases = $this->getSpecialPageAliases();
if ( isset( $aliases[$name][0] ) ) {
@@ -427,28 +510,37 @@ class Language {
return $this->getNsText( NS_SPECIAL ) . ':' . $name;
}
+ /**
+ * @return array
+ */
function getQuickbarSettings() {
return array(
$this->getMessage( 'qbsettings-none' ),
$this->getMessage( 'qbsettings-fixedleft' ),
$this->getMessage( 'qbsettings-fixedright' ),
$this->getMessage( 'qbsettings-floatingleft' ),
- $this->getMessage( 'qbsettings-floatingright' )
+ $this->getMessage( 'qbsettings-floatingright' ),
+ $this->getMessage( 'qbsettings-directionality' )
);
}
- function getMathNames() {
- return self::$dataCache->getItem( $this->mCode, 'mathNames' );
- }
-
+ /**
+ * @return array
+ */
function getDatePreferences() {
return self::$dataCache->getItem( $this->mCode, 'datePreferences' );
}
+ /**
+ * @return array
+ */
function getDateFormats() {
return self::$dataCache->getItem( $this->mCode, 'dateFormats' );
}
+ /**
+ * @return array|string
+ */
function getDefaultDateFormat() {
$df = self::$dataCache->getItem( $this->mCode, 'defaultDateFormat' );
if ( $df === 'dmy or mdy' ) {
@@ -459,22 +551,32 @@ class Language {
}
}
+ /**
+ * @return array
+ */
function getDatePreferenceMigrationMap() {
return self::$dataCache->getItem( $this->mCode, 'datePreferenceMigrationMap' );
}
+ /**
+ * @param $image
+ * @return array|null
+ */
function getImageFile( $image ) {
return self::$dataCache->getSubitem( $this->mCode, 'imageFiles', $image );
}
- function getDefaultUserOptionOverrides() {
- return self::$dataCache->getItem( $this->mCode, 'defaultUserOptionOverrides' );
- }
-
+ /**
+ * @return array
+ */
function getExtraUserToggles() {
return self::$dataCache->getItem( $this->mCode, 'extraUserToggles' );
}
+ /**
+ * @param $tog
+ * @return string
+ */
function getUserToggle( $tog ) {
return $this->getMessageFromDB( "tog-$tog" );
}
@@ -482,10 +584,20 @@ class Language {
/**
* Get language names, indexed by code.
* If $customisedOnly is true, only returns codes with a messages file
+ *
+ * @param $customisedOnly bool
+ *
+ * @return array
*/
public static function getLanguageNames( $customisedOnly = false ) {
- global $wgLanguageNames, $wgExtraLanguageNames;
- $allNames = $wgExtraLanguageNames + $wgLanguageNames;
+ global $wgExtraLanguageNames;
+ static $coreLanguageNames;
+
+ if ( $coreLanguageNames === null ) {
+ include( MWInit::compiledPath( 'languages/Names.php' ) );
+ }
+
+ $allNames = $wgExtraLanguageNames + $coreLanguageNames;
if ( !$customisedOnly ) {
return $allNames;
}
@@ -504,6 +616,25 @@ class Language {
}
/**
+ * Get translated language names. This is done on best effort and
+ * by default this is exactly the same as Language::getLanguageNames.
+ * The CLDR extension provides translated names.
+ * @param $code String Language code.
+ * @return Array language code => language name
+ * @since 1.18.0
+ */
+ public static function getTranslatedLanguageNames( $code ) {
+ $names = array();
+ wfRunHooks( 'LanguageGetTranslatedLanguageNames', array( &$names, $code ) );
+
+ foreach ( self::getLanguageNames() as $code => $name ) {
+ if ( !isset( $names[$code] ) ) $names[$code] = $name;
+ }
+
+ return $names;
+ }
+
+ /**
* Get a message from the MediaWiki namespace.
*
* @param $msg String: message name
@@ -513,6 +644,10 @@ class Language {
return wfMsgExt( $msg, array( 'parsemag', 'language' => $this ) );
}
+ /**
+ * @param $code string
+ * @return string
+ */
function getLanguageName( $code ) {
$names = self::getLanguageNames();
if ( !array_key_exists( $code, $names ) ) {
@@ -521,38 +656,96 @@ class Language {
return $names[$code];
}
+ /**
+ * @param $key string
+ * @return string
+ */
function getMonthName( $key ) {
return $this->getMessageFromDB( self::$mMonthMsgs[$key - 1] );
}
+ /**
+ * @return array
+ */
+ function getMonthNamesArray() {
+ $monthNames = array( '' );
+ for ( $i=1; $i < 13; $i++ ) {
+ $monthNames[] = $this->getMonthName( $i );
+ }
+ return $monthNames;
+ }
+
+ /**
+ * @param $key string
+ * @return string
+ */
function getMonthNameGen( $key ) {
return $this->getMessageFromDB( self::$mMonthGenMsgs[$key - 1] );
}
+ /**
+ * @param $key string
+ * @return string
+ */
function getMonthAbbreviation( $key ) {
return $this->getMessageFromDB( self::$mMonthAbbrevMsgs[$key - 1] );
}
+ /**
+ * @return array
+ */
+ function getMonthAbbreviationsArray() {
+ $monthNames = array( '' );
+ for ( $i=1; $i < 13; $i++ ) {
+ $monthNames[] = $this->getMonthAbbreviation( $i );
+ }
+ return $monthNames;
+ }
+
+ /**
+ * @param $key string
+ * @return string
+ */
function getWeekdayName( $key ) {
return $this->getMessageFromDB( self::$mWeekdayMsgs[$key - 1] );
}
+ /**
+ * @param $key string
+ * @return string
+ */
function getWeekdayAbbreviation( $key ) {
return $this->getMessageFromDB( self::$mWeekdayAbbrevMsgs[$key - 1] );
}
+ /**
+ * @param $key string
+ * @return string
+ */
function getIranianCalendarMonthName( $key ) {
return $this->getMessageFromDB( self::$mIranianCalendarMonthMsgs[$key - 1] );
}
+ /**
+ * @param $key string
+ * @return string
+ */
function getHebrewCalendarMonthName( $key ) {
return $this->getMessageFromDB( self::$mHebrewCalendarMonthMsgs[$key - 1] );
}
+ /**
+ * @param $key string
+ * @return string
+ */
function getHebrewCalendarMonthNameGen( $key ) {
return $this->getMessageFromDB( self::$mHebrewCalendarMonthGenMsgs[$key - 1] );
}
+ /**
+ * @param $key string
+ * @return string
+ */
function getHijriCalendarMonthName( $key ) {
return $this->getMessageFromDB( self::$mHijriCalendarMonthMsgs[$key - 1] );
}
@@ -575,9 +768,12 @@ class Language {
$data = explode( '|', $tz, 3 );
if ( $data[0] == 'ZoneInfo' ) {
- if ( function_exists( 'timezone_open' ) && @timezone_open( $data[2] ) !== false ) {
+ wfSuppressWarnings();
+ $userTZ = timezone_open( $data[2] );
+ wfRestoreWarnings();
+ if ( $userTZ !== false ) {
$date = date_create( $ts, timezone_open( 'UTC' ) );
- date_timezone_set( $date, timezone_open( $data[2] ) );
+ date_timezone_set( $date, $userTZ );
$date = date_format( $date, 'YmdHis' );
return $date;
}
@@ -591,7 +787,7 @@ class Language {
if ( isset( $wgLocalTZoffset ) ) {
$minDiff = $wgLocalTZoffset;
}
- } else if ( $data[0] == 'Offset' ) {
+ } elseif ( $data[0] == 'Offset' ) {
$minDiff = intval( $data[1] );
} else {
$data = explode( ':', $tz );
@@ -688,6 +884,8 @@ class Language {
* YYYYMMDDHHMMSS
* 01234567890123
* @todo handling of "o" format character for Iranian, Hebrew, Hijri & Thai?
+ *
+ * @return string
*/
function sprintfDate( $format, $ts ) {
$s = '';
@@ -1000,6 +1198,7 @@ class Language {
private static $GREG_DAYS = array( 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 );
private static $IRANIAN_DAYS = array( 31, 31, 31, 31, 31, 31, 30, 30, 30, 30, 30, 29 );
+
/**
* Algorithm by Roozbeh Pournader and Mohammad Toossi to convert
* Gregorian dates to Iranian dates. Originally written in C, it
@@ -1007,6 +1206,10 @@ class Language {
* License. Conversion to PHP was performed by Niklas Laxström.
*
* Link: http://www.farsiweb.info/jalali/jalali.c
+ *
+ * @param $ts string
+ *
+ * @return string
*/
private static function tsToIranian( $ts ) {
$gy = substr( $ts, 0, 4 ) -1600;
@@ -1062,6 +1265,10 @@ class Language {
* Based on a PHP-Nuke block by Sharjeel which is released under GNU/GPL license
*
* @link http://phpnuke.org/modules.php?name=News&file=article&sid=8234&mode=thread&order=0&thold=0
+ *
+ * @param $ts string
+ *
+ * @return string
*/
private static function tsToHijri( $ts ) {
$year = substr( $ts, 0, 4 );
@@ -1109,6 +1316,10 @@ class Language {
*
* The months are counted from Tishrei = 1. In a leap year, Adar I is 13
* and Adar II is 14. In a non-leap year, Adar is 6.
+ *
+ * @param $ts string
+ *
+ * @return string
*/
private static function tsToHebrew( $ts ) {
# Parse date
@@ -1246,6 +1457,10 @@ class Language {
* This calculates the Hebrew year start, as days since 1 September.
* Based on Carl Friedrich Gauss algorithm for finding Easter date.
* Used for Hebrew date.
+ *
+ * @param $year int
+ *
+ * @return string
*/
private static function hebrewYearStart( $year ) {
$a = intval( ( 12 * ( $year - 1 ) + 17 ) % 19 );
@@ -1263,9 +1478,9 @@ class Language {
$c = intval( ( $Mar + 3 * ( $year - 1 ) + 5 * $b + 5 ) % 7 );
if ( $c == 0 && $a > 11 && $m >= 0.89772376543210 ) {
$Mar++;
- } else if ( $c == 1 && $a > 6 && $m >= 0.63287037037037 ) {
+ } elseif ( $c == 1 && $a > 6 && $m >= 0.63287037037037 ) {
$Mar += 2;
- } else if ( $c == 2 || $c == 4 || $c == 6 ) {
+ } elseif ( $c == 2 || $c == 4 || $c == 6 ) {
$Mar++;
}
@@ -1295,12 +1510,12 @@ class Language {
# Add 543 years to the Gregorian calendar
# Months and days are identical
$gy_offset = $gy + 543;
- } else if ( ( !strcmp( $cName, 'minguo' ) ) || !strcmp( $cName, 'juche' ) ) {
+ } elseif ( ( !strcmp( $cName, 'minguo' ) ) || !strcmp( $cName, 'juche' ) ) {
# Minguo dates
# Deduct 1911 years from the Gregorian calendar
# Months and days are identical
$gy_offset = $gy - 1911;
- } else if ( !strcmp( $cName, 'tenno' ) ) {
+ } elseif ( !strcmp( $cName, 'tenno' ) ) {
# NengÅ dates up to Meiji period
# Deduct years from the Gregorian calendar
# depending on the nengo periods
@@ -1313,7 +1528,7 @@ class Language {
$gy_offset = 'å…ƒ';
}
$gy_offset = '明治' . $gy_offset;
- } else if (
+ } elseif (
( ( $gy == 1912 ) && ( $gm == 7 ) && ( $gd == 31 ) ) ||
( ( $gy == 1912 ) && ( $gm >= 8 ) ) ||
( ( $gy > 1912 ) && ( $gy < 1926 ) ) ||
@@ -1328,7 +1543,7 @@ class Language {
$gy_offset = 'å…ƒ';
}
$gy_offset = '大正' . $gy_offset;
- } else if (
+ } elseif (
( ( $gy == 1926 ) && ( $gm == 12 ) && ( $gd >= 26 ) ) ||
( ( $gy > 1926 ) && ( $gy < 1989 ) ) ||
( ( $gy == 1989 ) && ( $gm == 1 ) && ( $gd < 8 ) )
@@ -1359,6 +1574,10 @@ class Language {
/**
* Roman number formatting up to 3000
+ *
+ * @param $num int
+ *
+ * @return string
*/
static function romanNumeral( $num ) {
static $table = array(
@@ -1383,8 +1602,12 @@ class Language {
return $s;
}
- /**
+ /**
* Hebrew Gematria number formatting up to 9999
+ *
+ * @param $num int
+ *
+ * @return string
*/
static function hebrewNumeral( $num ) {
static $table = array(
@@ -1482,8 +1705,10 @@ class Language {
/**
* Get a format string for a given type and preference
- * @param $type May be date, time or both
- * @param $pref The format name as it appears in Messages*.php
+ * @param $type string May be date, time or both
+ * @param $pref string The format name as it appears in Messages*.php
+ *
+ * @return string
*/
function getDateFormatString( $type, $pref ) {
if ( !isset( $this->dateFormatStrings[$type][$pref] ) ) {
@@ -1508,7 +1733,7 @@ class Language {
* @param $adj Bool: whether to adjust the time output according to the
* user configured offset ($timecorrection)
* @param $format Mixed: true to use user's date format preference
- * @param $timecorrection String: the time offset as returned by
+ * @param $timecorrection String|bool the time offset as returned by
* validateTimeZone() in Special:Preferences
* @return string
*/
@@ -1527,7 +1752,7 @@ class Language {
* @param $adj Bool: whether to adjust the time output according to the
* user configured offset ($timecorrection)
* @param $format Mixed: true to use user's date format preference
- * @param $timecorrection String: the time offset as returned by
+ * @param $timecorrection String|bool the time offset as returned by
* validateTimeZone() in Special:Preferences
* @return string
*/
@@ -1547,7 +1772,7 @@ class Language {
* user configured offset ($timecorrection)
* @param $format Mixed: what format to return, if it's false output the
* default one (default true)
- * @param $timecorrection String: the time offset as returned by
+ * @param $timecorrection String|bool the time offset as returned by
* validateTimeZone() in Special:Preferences
* @return string
*/
@@ -1560,24 +1785,27 @@ class Language {
return $this->sprintfDate( $df, $ts );
}
+ /**
+ * @param $key string
+ * @return array|null
+ */
function getMessage( $key ) {
- // Don't change getPreferredVariant() to getCode() / mCode, because:
-
- // 1. Some language like Chinese has multiple variant languages. Only
- // getPreferredVariant() (in LanguageConverter) could return a
- // sub-language which would be more suitable for the user.
- // 2. To languages without multiple variants, getPreferredVariant()
- // (in FakeConverter) functions exactly same as getCode() / mCode,
- // it won't break anything.
-
- // The same below.
- return self::$dataCache->getSubitem( $this->getPreferredVariant(), 'messages', $key );
+ return self::$dataCache->getSubitem( $this->mCode, 'messages', $key );
}
+ /**
+ * @return array
+ */
function getAllMessages() {
- return self::$dataCache->getItem( $this->getPreferredVariant(), 'messages' );
+ return self::$dataCache->getItem( $this->mCode, 'messages' );
}
+ /**
+ * @param $in
+ * @param $out
+ * @param $string
+ * @return string
+ */
function iconv( $in, $out, $string ) {
# This is a wrapper for iconv in all languages except esperanto,
# which does some nasty x-conversions beforehand
@@ -1593,28 +1821,53 @@ class Language {
}
// callback functions for uc(), lc(), ucwords(), ucwordbreaks()
+
+ /**
+ * @param $matches array
+ * @return mixed|string
+ */
function ucwordbreaksCallbackAscii( $matches ) {
return $this->ucfirst( $matches[1] );
}
+ /**
+ * @param $matches array
+ * @return string
+ */
function ucwordbreaksCallbackMB( $matches ) {
return mb_strtoupper( $matches[0] );
}
+ /**
+ * @param $matches array
+ * @return string
+ */
function ucCallback( $matches ) {
list( $wikiUpperChars ) = self::getCaseMaps();
return strtr( $matches[1], $wikiUpperChars );
}
+ /**
+ * @param $matches array
+ * @return string
+ */
function lcCallback( $matches ) {
list( , $wikiLowerChars ) = self::getCaseMaps();
return strtr( $matches[1], $wikiLowerChars );
}
+ /**
+ * @param $matches array
+ * @return string
+ */
function ucwordsCallbackMB( $matches ) {
return mb_strtoupper( $matches[0] );
}
+ /**
+ * @param $matches array
+ * @return string
+ */
function ucwordsCallbackWiki( $matches ) {
list( $wikiUpperChars ) = self::getCaseMaps();
return strtr( $matches[0], $wikiUpperChars );
@@ -1622,6 +1875,10 @@ class Language {
/**
* Make a string's first character uppercase
+ *
+ * @param $str string
+ *
+ * @return string
*/
function ucfirst( $str ) {
$o = ord( $str );
@@ -1637,6 +1894,11 @@ class Language {
/**
* Convert a string to uppercase
+ *
+ * @param $str string
+ * @param $first bool
+ *
+ * @return string
*/
function uc( $str, $first = false ) {
if ( function_exists( 'mb_strtoupper' ) ) {
@@ -1663,6 +1925,10 @@ class Language {
}
}
+ /**
+ * @param $str string
+ * @return mixed|string
+ */
function lcfirst( $str ) {
$o = ord( $str );
if ( !$o ) {
@@ -1677,6 +1943,11 @@ class Language {
}
}
+ /**
+ * @param $str string
+ * @param $first bool
+ * @return mixed|string
+ */
function lc( $str, $first = false ) {
if ( function_exists( 'mb_strtolower' ) ) {
if ( $first ) {
@@ -1702,10 +1973,18 @@ class Language {
}
}
+ /**
+ * @param $str string
+ * @return bool
+ */
function isMultibyte( $str ) {
return (bool)preg_match( '/[\x80-\xff]/', $str );
}
+ /**
+ * @param $str string
+ * @return mixed|string
+ */
function ucwords( $str ) {
if ( $this->isMultibyte( $str ) ) {
$str = $this->lc( $str );
@@ -1732,7 +2011,12 @@ class Language {
}
}
- # capitalize words at word breaks
+ /**
+ * capitalize words at word breaks
+ *
+ * @param $str string
+ * @return mixed
+ */
function ucwordbreaks( $str ) {
if ( $this->isMultibyte( $str ) ) {
$str = $this->lc( $str );
@@ -1775,11 +2059,19 @@ class Language {
* Do *not* perform any other normalisation in this function. If a caller
* uses this function when it should be using a more general normalisation
* function, then fix the caller.
+ *
+ * @param $s string
+ *
+ * @return string
*/
function caseFold( $s ) {
return $this->uc( $s );
}
+ /**
+ * @param $s string
+ * @return string
+ */
function checkTitleEncoding( $s ) {
if ( is_array( $s ) ) {
wfDebugDieBacktrace( 'Given array to checkTitleEncoding.' );
@@ -1791,7 +2083,7 @@ class Language {
}
$isutf8 = preg_match( '/^([\x00-\x7f]|[\xc0-\xdf][\x80-\xbf]|' .
- '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
+ '[\xe0-\xef][\x80-\xbf]{2}|[\xf0-\xf7][\x80-\xbf]{3})+$/', $s );
if ( $isutf8 ) {
return $s;
}
@@ -1799,6 +2091,9 @@ class Language {
return $this->iconv( $this->fallback8bitEncoding(), 'utf-8', $s );
}
+ /**
+ * @return array
+ */
function fallback8bitEncoding() {
return self::$dataCache->getItem( $this->mCode, 'fallback8bitEncoding' );
}
@@ -1808,6 +2103,8 @@ class Language {
* Some languages such as Chinese don't conventionally do this,
* which requires special handling when breaking up words for
* searching etc.
+ *
+ * @return bool
*/
function hasWordBreaks() {
return true;
@@ -1838,6 +2135,10 @@ class Language {
/**
* convert double-width roman characters to single-width.
* range: ff00-ff5f ~= 0020-007f
+ *
+ * @param $string string
+ *
+ * @return string
*/
protected static function convertDoubleWidth( $string ) {
static $full = null;
@@ -1854,12 +2155,21 @@ class Language {
return $string;
}
+ /**
+ * @param $string string
+ * @param $pattern string
+ * @return string
+ */
protected static function insertSpace( $string, $pattern ) {
$string = preg_replace( $pattern, " $1 ", $string );
$string = preg_replace( '/ +/', ' ', $string );
return $string;
}
+ /**
+ * @param $termsArray array
+ * @return array
+ */
function convertForSearchResult( $termsArray ) {
# some languages, e.g. Chinese, need to do a conversion
# in order for search results to be displayed correctly
@@ -1931,13 +2241,14 @@ class Language {
# an override to the defaults can be set here on startup.
}
+ /**
+ * @param $s string
+ * @return string
+ */
function recodeForEdit( $s ) {
# For some languages we'll want to explicitly specify
# which characters make it into the edit box raw
# or are converted in some way or another.
- # Note that if wgOutputEncoding is different from
- # wgInputEncoding, this text will be further converted
- # to wgOutputEncoding.
global $wgEditEncoding;
if ( $wgEditEncoding == '' || $wgEditEncoding == 'UTF-8' ) {
return $s;
@@ -1946,6 +2257,10 @@ class Language {
}
}
+ /**
+ * @param $s string
+ * @return string
+ */
function recodeInput( $s ) {
# Take the previous into account.
global $wgEditEncoding;
@@ -1967,6 +2282,10 @@ class Language {
* to the modern Unicode equivalent.
*
* This is language-specific for performance reasons only.
+ *
+ * @param $s string
+ *
+ * @return string
*/
function normalize( $s ) {
global $wgAllUnicodeFixes;
@@ -1986,6 +2305,11 @@ class Language {
*
* The data is cached in process memory. This will go faster if you have the
* FastStringSearch extension.
+ *
+ * @param $file string
+ * @param $string string
+ *
+ * @return string
*/
function transformUsingPairFile( $file, $string ) {
if ( !isset( $this->transformData[$file] ) ) {
@@ -2042,12 +2366,19 @@ class Language {
/**
* A hidden direction mark (LRM or RLM), depending on the language direction
*
+ * @param $opposite Boolean Get the direction mark opposite to your language
* @return string
*/
- function getDirMark() {
- return $this->isRTL() ? "\xE2\x80\x8F" : "\xE2\x80\x8E";
+ function getDirMark( $opposite = false ) {
+ $rtl = "\xE2\x80\x8F";
+ $ltr = "\xE2\x80\x8E";
+ if( $opposite ) { return $this->isRTL() ? $ltr : $rtl; }
+ return $this->isRTL() ? $rtl : $ltr;
}
+ /**
+ * @return array
+ */
function capitalizeAllNouns() {
return self::$dataCache->getItem( $this->mCode, 'capitalizeAllNouns' );
}
@@ -2070,18 +2401,31 @@ class Language {
return self::$dataCache->getItem( $this->mCode, 'linkPrefixExtension' );
}
+ /**
+ * @return array
+ */
function getMagicWords() {
return self::$dataCache->getItem( $this->mCode, 'magicWords' );
}
- # Fill a MagicWord object with data from here
- function getMagic( $mw ) {
- if ( !$this->mMagicHookDone ) {
- $this->mMagicHookDone = true;
- wfProfileIn( 'LanguageGetMagic' );
- wfRunHooks( 'LanguageGetMagic', array( &$this->mMagicExtensions, $this->getCode() ) );
- wfProfileOut( 'LanguageGetMagic' );
+ protected function doMagicHook() {
+ if ( $this->mMagicHookDone ) {
+ return;
}
+ $this->mMagicHookDone = true;
+ wfProfileIn( 'LanguageGetMagic' );
+ wfRunHooks( 'LanguageGetMagic', array( &$this->mMagicExtensions, $this->getCode() ) );
+ wfProfileOut( 'LanguageGetMagic' );
+ }
+
+ /**
+ * Fill a MagicWord object with data from here
+ *
+ * @param $mw
+ */
+ function getMagic( $mw ) {
+ $this->doMagicHook();
+
if ( isset( $this->mMagicExtensions[$mw->mId] ) ) {
$rawEntry = $this->mMagicExtensions[$mw->mId];
} else {
@@ -2094,7 +2438,7 @@ class Language {
}
if ( !is_array( $rawEntry ) ) {
- error_log( "\"$rawEntry\" is not a valid magic thingie for \"$mw->mId\"" );
+ error_log( "\"$rawEntry\" is not a valid magic word for \"$mw->mId\"" );
} else {
$mw->mCaseSensitive = $rawEntry[0];
$mw->mSynonyms = array_slice( $rawEntry, 1 );
@@ -2103,6 +2447,8 @@ class Language {
/**
* Add magic words to the extension array
+ *
+ * @param $newWords array
*/
function addMagicWordsByLang( $newWords ) {
$code = $this->getCode();
@@ -2193,6 +2539,10 @@ class Language {
return $number;
}
+ /**
+ * @param $number string
+ * @return string
+ */
function parseFormattedNumber( $number ) {
$s = $this->digitTransformTable();
if ( $s ) {
@@ -2218,10 +2568,16 @@ class Language {
return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) );
}
+ /**
+ * @return array
+ */
function digitTransformTable() {
return self::$dataCache->getItem( $this->mCode, 'digitTransformTable' );
}
+ /**
+ * @return array
+ */
function separatorTransformTable() {
return self::$dataCache->getItem( $this->mCode, 'separatorTransformTable' );
}
@@ -2243,7 +2599,7 @@ class Language {
for ( $i = $m; $i >= 0; $i-- ) {
if ( $i == $m ) {
$s = $l[$i];
- } else if ( $i == $m - 1 ) {
+ } elseif ( $i == $m - 1 ) {
$s = $l[$i] . $this->getMessageFromDB( 'and' ) . $this->getMessageFromDB( 'word-separator' ) . $s;
} else {
$s = $l[$i] . $this->getMessageFromDB( 'comma-separator' ) . $s;
@@ -2311,32 +2667,45 @@ class Language {
* If $length is negative, the string will be truncated from the beginning
*
* @param $string String to truncate
- * @param $length Int: maximum length (excluding ellipses)
+ * @param $length Int: maximum length (including ellipses)
* @param $ellipsis String to append to the truncated text
+ * @param $adjustLength Boolean: Subtract length of ellipsis from $length.
+ * $adjustLength was introduced in 1.18, before that behaved as if false.
* @return string
*/
- function truncate( $string, $length, $ellipsis = '...' ) {
+ function truncate( $string, $length, $ellipsis = '...', $adjustLength = true ) {
# Use the localized ellipsis character
if ( $ellipsis == '...' ) {
$ellipsis = wfMsgExt( 'ellipsis', array( 'escapenoentities', 'language' => $this ) );
}
# Check if there is no need to truncate
if ( $length == 0 ) {
- return $ellipsis;
+ return $ellipsis; // convention
} elseif ( strlen( $string ) <= abs( $length ) ) {
- return $string;
+ return $string; // no need to truncate
}
$stringOriginal = $string;
- if ( $length > 0 ) {
- $string = substr( $string, 0, $length ); // xyz...
- $string = $this->removeBadCharLast( $string );
- $string = $string . $ellipsis;
+ # If ellipsis length is >= $length then we can't apply $adjustLength
+ if ( $adjustLength && strlen( $ellipsis ) >= abs( $length ) ) {
+ $string = $ellipsis; // this can be slightly unexpected
+ # Otherwise, truncate and add ellipsis...
} else {
- $string = substr( $string, $length ); // ...xyz
- $string = $this->removeBadCharFirst( $string );
- $string = $ellipsis . $string;
+ $eLength = $adjustLength ? strlen( $ellipsis ) : 0;
+ if ( $length > 0 ) {
+ $length -= $eLength;
+ $string = substr( $string, 0, $length ); // xyz...
+ $string = $this->removeBadCharLast( $string );
+ $string = $string . $ellipsis;
+ } else {
+ $length += $eLength;
+ $string = substr( $string, $length ); // ...xyz
+ $string = $this->removeBadCharFirst( $string );
+ $string = $ellipsis . $string;
+ }
}
- # Do not truncate if the ellipsis makes the string longer/equal (bug 22181)
+ # Do not truncate if the ellipsis makes the string longer/equal (bug 22181).
+ # This check is *not* redundant if $adjustLength, due to the single case where
+ # LEN($ellipsis) > ABS($limit arg); $stringOriginal could be shorter than $string.
if ( strlen( $string ) < strlen( $stringOriginal ) ) {
return $string;
} else {
@@ -2352,17 +2721,19 @@ class Language {
* @return string
*/
protected function removeBadCharLast( $string ) {
- $char = ord( $string[strlen( $string ) - 1] );
- $m = array();
- if ( $char >= 0xc0 ) {
- # We got the first byte only of a multibyte char; remove it.
- $string = substr( $string, 0, -1 );
- } elseif ( $char >= 0x80 &&
- preg_match( '/^(.*)(?:[\xe0-\xef][\x80-\xbf]|' .
- '[\xf0-\xf7][\x80-\xbf]{1,2})$/', $string, $m ) )
- {
- # We chopped in the middle of a character; remove it
- $string = $m[1];
+ if ( $string != '' ) {
+ $char = ord( $string[strlen( $string ) - 1] );
+ $m = array();
+ if ( $char >= 0xc0 ) {
+ # We got the first byte only of a multibyte char; remove it.
+ $string = substr( $string, 0, -1 );
+ } elseif ( $char >= 0x80 &&
+ preg_match( '/^(.*)(?:[\xe0-\xef][\x80-\xbf]|' .
+ '[\xf0-\xf7][\x80-\xbf]{1,2})$/', $string, $m ) )
+ {
+ # We chopped in the middle of a character; remove it
+ $string = $m[1];
+ }
}
return $string;
}
@@ -2375,49 +2746,77 @@ class Language {
* @return string
*/
protected function removeBadCharFirst( $string ) {
- $char = ord( $string[0] );
- if ( $char >= 0x80 && $char < 0xc0 ) {
- # We chopped in the middle of a character; remove the whole thing
- $string = preg_replace( '/^[\x80-\xbf]+/', '', $string );
+ if ( $string != '' ) {
+ $char = ord( $string[0] );
+ if ( $char >= 0x80 && $char < 0xc0 ) {
+ # We chopped in the middle of a character; remove the whole thing
+ $string = preg_replace( '/^[\x80-\xbf]+/', '', $string );
+ }
}
return $string;
}
- /*
+ /**
* Truncate a string of valid HTML to a specified length in bytes,
* appending an optional string (e.g. for ellipses), and return valid HTML
*
* This is only intended for styled/linked text, such as HTML with
- * tags like <span> and <a>, were the tags are self-contained (valid HTML)
+ * tags like <span> and <a>, were the tags are self-contained (valid HTML).
+ * Also, this will not detect things like "display:none" CSS.
*
- * Note: tries to fix broken HTML with MWTidy
+ * Note: since 1.18 you do not need to leave extra room in $length for ellipses.
*
* @param string $text HTML string to truncate
- * @param int $length (zero/positive) Maximum length (excluding ellipses)
+ * @param int $length (zero/positive) Maximum length (including ellipses)
* @param string $ellipsis String to append to the truncated text
- * @returns string
+ * @return string
*/
function truncateHtml( $text, $length, $ellipsis = '...' ) {
# Use the localized ellipsis character
if ( $ellipsis == '...' ) {
$ellipsis = wfMsgExt( 'ellipsis', array( 'escapenoentities', 'language' => $this ) );
}
- # Check if there is no need to truncate
+ # Check if there is clearly no need to truncate
if ( $length <= 0 ) {
- return $ellipsis; // no text shown, nothing to format
+ return $ellipsis; // no text shown, nothing to format (convention)
} elseif ( strlen( $text ) <= $length ) {
- return $text; // string short enough even *with* HTML
+ return $text; // string short enough even *with* HTML (short-circuit)
}
- $text = MWTidy::tidy( $text ); // fix tags
- $displayLen = 0; // innerHTML legth so far
+
+ $dispLen = 0; // innerHTML legth so far
$testingEllipsis = false; // checking if ellipses will make string longer/equal?
$tagType = 0; // 0-open, 1-close
$bracketState = 0; // 1-tag start, 2-tag name, 0-neither
$entityState = 0; // 0-not entity, 1-entity
- $tag = $ret = '';
+ $tag = $ret = ''; // accumulated tag name, accumulated result string
$openTags = array(); // open tag stack
+ $maybeState = null; // possible truncation state
+
$textLen = strlen( $text );
- for ( $pos = 0; $pos < $textLen; ++$pos ) {
+ $neLength = max( 0, $length - strlen( $ellipsis ) ); // non-ellipsis len if truncated
+ for ( $pos = 0; true; ++$pos ) {
+ # Consider truncation once the display length has reached the maximim.
+ # We check if $dispLen > 0 to grab tags for the $neLength = 0 case.
+ # Check that we're not in the middle of a bracket/entity...
+ if ( $dispLen && $dispLen >= $neLength && $bracketState == 0 && !$entityState ) {
+ if ( !$testingEllipsis ) {
+ $testingEllipsis = true;
+ # Save where we are; we will truncate here unless there turn out to
+ # be so few remaining characters that truncation is not necessary.
+ if ( !$maybeState ) { // already saved? ($neLength = 0 case)
+ $maybeState = array( $ret, $openTags ); // save state
+ }
+ } elseif ( $dispLen > $length && $dispLen > strlen( $ellipsis ) ) {
+ # String in fact does need truncation, the truncation point was OK.
+ list( $ret, $openTags ) = $maybeState; // reload state
+ $ret = $this->removeBadCharLast( $ret ); // multi-byte char fix
+ $ret .= $ellipsis; // add ellipsis
+ break;
+ }
+ }
+ if ( $pos >= $textLen ) break; // extra iteration just for above checks
+
+ # Read the next char...
$ch = $text[$pos];
$lastCh = $pos ? $text[$pos - 1] : '';
$ret .= $ch; // add to result string
@@ -2448,41 +2847,26 @@ class Language {
if ( $entityState ) {
if ( $ch == ';' ) {
$entityState = 0;
- $displayLen++; // entity is one displayed char
+ $dispLen++; // entity is one displayed char
}
} else {
+ if ( $neLength == 0 && !$maybeState ) {
+ // Save state without $ch. We want to *hit* the first
+ // display char (to get tags) but not *use* it if truncating.
+ $maybeState = array( substr( $ret, 0, -1 ), $openTags );
+ }
if ( $ch == '&' ) {
$entityState = 1; // entity found, (e.g. "&#160;")
} else {
- $displayLen++; // this char is displayed
- // Add on the other display text after this...
- $skipped = $this->truncate_skip(
- $ret, $text, "<>&", $pos + 1, $length - $displayLen );
- $displayLen += $skipped;
+ $dispLen++; // this char is displayed
+ // Add the next $max display text chars after this in one swoop...
+ $max = ( $testingEllipsis ? $length : $neLength ) - $dispLen;
+ $skipped = $this->truncate_skip( $ret, $text, "<>&", $pos + 1, $max );
+ $dispLen += $skipped;
$pos += $skipped;
}
}
}
- # Consider truncation once the display length has reached the maximim.
- # Double-check that we're not in the middle of a bracket/entity...
- if ( $displayLen >= $length && $bracketState == 0 && $entityState == 0 ) {
- if ( !$testingEllipsis ) {
- $testingEllipsis = true;
- # Save where we are; we will truncate here unless
- # the ellipsis actually makes the string longer.
- $pOpenTags = $openTags; // save state
- $pRet = $ret; // save state
- } elseif ( $displayLen > ( $length + strlen( $ellipsis ) ) ) {
- # Ellipsis won't make string longer/equal, the truncation point was OK.
- $openTags = $pOpenTags; // reload state
- $ret = $this->removeBadCharLast( $pRet ); // reload state, multi-byte char fix
- $ret .= $ellipsis; // add ellipsis
- break;
- }
- }
- }
- if ( $displayLen == 0 ) {
- return ''; // no text shown, nothing to format
}
// Close the last tag if left unclosed by bad HTML
$this->truncate_endBracket( $tag, $text[$textLen - 1], $tagType, $openTags );
@@ -2492,9 +2876,23 @@ class Language {
return $ret;
}
- // truncateHtml() helper function
- // like strcspn() but adds the skipped chars to $ret
- private function truncate_skip( &$ret, $text, $search, $start, $len = -1 ) {
+ /**
+ * truncateHtml() helper function
+ * like strcspn() but adds the skipped chars to $ret
+ *
+ * @param $ret
+ * @param $text
+ * @param $search
+ * @param $start
+ * @param $len
+ * @return int
+ */
+ private function truncate_skip( &$ret, $text, $search, $start, $len = null ) {
+ if ( $len === null ) {
+ $len = -1; // -1 means "no limit" for strcspn
+ } elseif ( $len < 0 ) {
+ $len = 0; // sanity
+ }
$skipCount = 0;
if ( $start < strlen( $text ) ) {
$skipCount = strcspn( $text, $search, $start, $len );
@@ -2503,7 +2901,7 @@ class Language {
return $skipCount;
}
- /*
+ /**
* truncateHtml() helper function
* (a) push or pop $tag from $openTags as needed
* (b) clear $tag value
@@ -2517,7 +2915,7 @@ class Language {
if ( $tag != '' ) {
if ( $tagType == 0 && $lastCh != '/' ) {
$openTags[] = $tag; // tag opened (didn't close itself)
- } else if ( $tagType == 1 ) {
+ } elseif ( $tagType == 1 ) {
if ( $openTags && $tag == $openTags[count( $openTags ) - 1] ) {
array_pop( $openTags ); // tag closed
}
@@ -2549,6 +2947,11 @@ class Language {
* but only in (some) interface messages; otherwise default gender is used.
* If second or third parameter are not specified, masculine is used.
* These details may be overriden per language.
+ *
+ * @param $gender string
+ * @param $forms array
+ *
+ * @return string
*/
function gender( $gender, $forms ) {
if ( !count( $forms ) ) {
@@ -2590,7 +2993,7 @@ class Language {
/**
* Checks that convertPlural was given an array and pads it to requested
- * amound of forms by copying the last one.
+ * amount of forms by copying the last one.
*
* @param $count Integer: How many forms should there be at least
* @param $forms Array of forms given to convertPlural
@@ -2604,28 +3007,36 @@ class Language {
}
/**
- * For translating of expiry times
- * @param $str String: the validated block time in English
- * @return Somehow translated block time
+ * @todo Maybe translate block durations. Note that this function is somewhat misnamed: it
+ * deals with translating the *duration* ("1 week", "4 days", etc), not the expiry time
+ * (which is an absolute timestamp). Please note: do NOT add this blindly, as it is used
+ * on old expiry lengths recorded in log entries. You'd need to provide the start date to
+ * match up with it.
+ *
+ * @param $str String: the validated block duration in English
+ * @return Somehow translated block duration
* @see LanguageFi.php for example implementation
*/
function translateBlockExpiry( $str ) {
- $scBlockExpiryOptions = $this->getMessageFromDB( 'ipboptions' );
-
- if ( $scBlockExpiryOptions == '-' ) {
- return $str;
- }
-
- foreach ( explode( ',', $scBlockExpiryOptions ) as $option ) {
- if ( strpos( $option, ':' ) === false ) {
- continue;
- }
- list( $show, $value ) = explode( ':', $option );
+ $duration = SpecialBlock::getSuggestedDurations( $this );
+ foreach( $duration as $show => $value ){
if ( strcmp( $str, $value ) == 0 ) {
return htmlspecialchars( trim( $show ) );
}
}
+ // Since usually only infinite or indefinite is only on list, so try
+ // equivalents if still here.
+ $indefs = array( 'infinite', 'infinity', 'indefinite' );
+ if ( in_array( $str, $indefs ) ) {
+ foreach( $indefs as $val ) {
+ $show = array_search( $val, $duration, true );
+ if ( $show !== false ) {
+ return htmlspecialchars( trim( $show ) );
+ }
+ }
+ }
+ // If all else fails, return the original string.
return $str;
}
@@ -2650,27 +3061,52 @@ class Language {
return $text;
}
- # convert text to all supported variants
+ /**
+ * convert text to all supported variants
+ *
+ * @param $text string
+ * @return array
+ */
function autoConvertToAllVariants( $text ) {
return $this->mConverter->autoConvertToAllVariants( $text );
}
- # convert text to different variants of a language.
+ /**
+ * convert text to different variants of a language.
+ *
+ * @param $text string
+ * @return string
+ */
function convert( $text ) {
return $this->mConverter->convert( $text );
}
- # Convert a Title object to a string in the preferred variant
+
+ /**
+ * Convert a Title object to a string in the preferred variant
+ *
+ * @param $title Title
+ * @return string
+ */
function convertTitle( $title ) {
return $this->mConverter->convertTitle( $title );
}
- # Check if this is a language with variants
+ /**
+ * Check if this is a language with variants
+ *
+ * @return bool
+ */
function hasVariants() {
return sizeof( $this->getVariants() ) > 1;
}
- # Put custom tags (e.g. -{ }-) around math to prevent conversion
+ /**
+ * Put custom tags (e.g. -{ }-) around math to prevent conversion
+ *
+ * @param $text string
+ * @return string
+ */
function armourMath( $text ) {
return $this->mConverter->armourMath( $text );
}
@@ -2686,12 +3122,16 @@ class Language {
return htmlspecialchars( $this->convert( $text, $isTitle ) );
}
+ /**
+ * @param $key string
+ * @return string
+ */
function convertCategoryKey( $key ) {
return $this->mConverter->convertCategoryKey( $key );
}
/**
- * Get the list of variants supported by this langauge
+ * Get the list of variants supported by this language
* see sample implementation in LanguageZh.php
*
* @return array an array of language codes
@@ -2700,14 +3140,23 @@ class Language {
return $this->mConverter->getVariants();
}
+ /**
+ * @return string
+ */
function getPreferredVariant() {
return $this->mConverter->getPreferredVariant();
}
-
+
+ /**
+ * @return string
+ */
function getDefaultVariant() {
return $this->mConverter->getDefaultVariant();
}
-
+
+ /**
+ * @return string
+ */
function getURLVariant() {
return $this->mConverter->getURLVariant();
}
@@ -2733,7 +3182,11 @@ class Language {
* into an array of all possible variants of the text:
* 'variant' => text in that variant
*
- * @deprecated Use autoConvertToAllVariants()
+ * @deprecated since 1.17 Use autoConvertToAllVariants()
+ *
+ * @param $text string
+ *
+ * @return string
*/
function convertLinkToAllVariants( $text ) {
return $this->mConverter->convertLinkToAllVariants( $text );
@@ -2765,7 +3218,7 @@ class Language {
* various functions in the Parser
*
* @param $text String: text to be tagged for no conversion
- * @param $noParse
+ * @param $noParse bool
* @return string the tagged text
*/
function markNoConversion( $text, $noParse = false ) {
@@ -2782,17 +3235,25 @@ class Language {
return self::$dataCache->getItem( $this->mCode, 'linkTrail' );
}
+ /**
+ * @return Language
+ */
function getLangObj() {
return $this;
}
/**
* Get the RFC 3066 code for this language object
+ *
+ * @return string
*/
function getCode() {
return $this->mCode;
}
+ /**
+ * @param $code string
+ */
function setCode( $code ) {
$this->mCode = $code;
}
@@ -2806,12 +3267,12 @@ class Language {
*/
static function getFileName( $prefix = 'Language', $code, $suffix = '.php' ) {
// Protect against path traversal
- if ( !Language::isValidCode( $code )
- || strcspn( $code, "/\\\000" ) !== strlen( $code ) )
+ if ( !Language::isValidCode( $code )
+ || strcspn( $code, ":/\\\000" ) !== strlen( $code ) )
{
throw new MWException( "Invalid language code \"$code\"" );
}
-
+
return $prefix . str_replace( '-', '_', ucfirst( $code ) ) . $suffix;
}
@@ -2820,7 +3281,7 @@ class Language {
* @param $filename string $prefix . $languageCode . $suffix
* @param $prefix string Prefix before the language code
* @param $suffix string Suffix after the language code
- * @return Language code, or false if $prefix or $suffix isn't found
+ * @return string Language code, or false if $prefix or $suffix isn't found
*/
static function getCodeFromFileName( $filename, $prefix = 'Language', $suffix = '.php' ) {
$m = null;
@@ -2832,11 +3293,19 @@ class Language {
return str_replace( '_', '-', strtolower( $m[1] ) );
}
+ /**
+ * @param $code string
+ * @return string
+ */
static function getMessagesFileName( $code ) {
global $IP;
return self::getFileName( "$IP/languages/messages/Messages", $code, '.php' );
}
+ /**
+ * @param $code string
+ * @return string
+ */
static function getClassFileName( $code ) {
global $IP;
return self::getFileName( "$IP/languages/classes/Language", $code, '.php' );
@@ -2844,6 +3313,10 @@ class Language {
/**
* Get the fallback for a given language
+ *
+ * @param $code string
+ *
+ * @return false|string
*/
static function getFallbackFor( $code ) {
if ( $code === 'en' ) {
@@ -2857,6 +3330,10 @@ class Language {
/**
* Get all messages for a given language
* WARNING: this may take a long time
+ *
+ * @param $code string
+ *
+ * @return array
*/
static function getMessagesFor( $code ) {
return self::getLocalisationCache()->getItem( $code, 'messages' );
@@ -2864,11 +3341,20 @@ class Language {
/**
* Get a message for a given language
+ *
+ * @param $key string
+ * @param $code string
+ *
+ * @return string
*/
static function getMessageFor( $key, $code ) {
return self::getLocalisationCache()->getSubitem( $code, 'messages', $key );
}
+ /**
+ * @param $talk
+ * @return mixed
+ */
function fixVariableInNamespace( $talk ) {
if ( strpos( $talk, '$1' ) === false ) {
return $talk;
@@ -2886,10 +3372,18 @@ class Language {
return str_replace( ' ', '_', $talk );
}
+ /**
+ * @param $m string
+ * @return string
+ */
function replaceGrammarInNamespace( $m ) {
return $this->convertGrammar( trim( $m[2] ), trim( $m[1] ) );
}
+ /**
+ * @throws MWException
+ * @return array
+ */
static function getCaseMaps() {
static $wikiUpperChars, $wikiLowerChars;
if ( isset( $wikiUpperChars ) ) {
@@ -2902,16 +3396,53 @@ class Language {
throw new MWException(
"Utf8Case.ser is missing, please run \"make\" in the serialized directory\n" );
}
- extract( $arr );
+ $wikiUpperChars = $arr['wikiUpperChars'];
+ $wikiLowerChars = $arr['wikiLowerChars'];
wfProfileOut( __METHOD__ );
return array( $wikiUpperChars, $wikiLowerChars );
}
- function formatTimePeriod( $seconds ) {
+ /**
+ * Decode an expiry (block, protection, etc) which has come from the DB
+ *
+ * @param $expiry String: Database expiry String
+ * @param $format Bool|Int true to process using language functions, or TS_ constant
+ * to return the expiry in a given timestamp
+ * @return String
+ */
+ public function formatExpiry( $expiry, $format = true ) {
+ static $infinity, $infinityMsg;
+ if( $infinity === null ){
+ $infinityMsg = wfMessage( 'infiniteblock' );
+ $infinity = wfGetDB( DB_SLAVE )->getInfinity();
+ }
+
+ if ( $expiry == '' || $expiry == $infinity ) {
+ return $format === true
+ ? $infinityMsg
+ : $infinity;
+ } else {
+ return $format === true
+ ? $this->timeanddate( $expiry, /* User preference timezone */ true )
+ : wfTimestamp( $format, $expiry );
+ }
+ }
+
+ /**
+ * @todo Document
+ * @param $seconds int|float
+ * @param $format String Optional, one of ("avoidseconds","avoidminutes"):
+ * "avoidseconds" - don't mention seconds if $seconds >= 1 hour
+ * "avoidminutes" - don't mention seconds/minutes if $seconds > 48 hours
+ * @return string
+ */
+ function formatTimePeriod( $seconds, $format = false ) {
if ( round( $seconds * 10 ) < 100 ) {
- return $this->formatNum( sprintf( "%.1f", round( $seconds * 10 ) / 10 ) ) . $this->getMessageFromDB( 'seconds-abbrev' );
+ $s = $this->formatNum( sprintf( "%.1f", round( $seconds * 10 ) / 10 ) );
+ $s .= $this->getMessageFromDB( 'seconds-abbrev' );
} elseif ( round( $seconds ) < 60 ) {
- return $this->formatNum( round( $seconds ) ) . $this->getMessageFromDB( 'seconds-abbrev' );
+ $s = $this->formatNum( round( $seconds ) );
+ $s .= $this->getMessageFromDB( 'seconds-abbrev' );
} elseif ( round( $seconds ) < 3600 ) {
$minutes = floor( $seconds / 60 );
$secondsPart = round( fmod( $seconds, 60 ) );
@@ -2919,9 +3450,10 @@ class Language {
$secondsPart = 0;
$minutes++;
}
- return $this->formatNum( $minutes ) . $this->getMessageFromDB( 'minutes-abbrev' ) . ' ' .
- $this->formatNum( $secondsPart ) . $this->getMessageFromDB( 'seconds-abbrev' );
- } else {
+ $s = $this->formatNum( $minutes ) . $this->getMessageFromDB( 'minutes-abbrev' );
+ $s .= ' ';
+ $s .= $this->formatNum( $secondsPart ) . $this->getMessageFromDB( 'seconds-abbrev' );
+ } elseif ( round( $seconds ) <= 2*86400 ) {
$hours = floor( $seconds / 3600 );
$minutes = floor( ( $seconds - $hours * 3600 ) / 60 );
$secondsPart = round( $seconds - $hours * 3600 - $minutes * 60 );
@@ -2933,12 +3465,53 @@ class Language {
$minutes = 0;
$hours++;
}
- return $this->formatNum( $hours ) . $this->getMessageFromDB( 'hours-abbrev' ) . ' ' .
- $this->formatNum( $minutes ) . $this->getMessageFromDB( 'minutes-abbrev' ) . ' ' .
- $this->formatNum( $secondsPart ) . $this->getMessageFromDB( 'seconds-abbrev' );
+ $s = $this->formatNum( $hours ) . $this->getMessageFromDB( 'hours-abbrev' );
+ $s .= ' ';
+ $s .= $this->formatNum( $minutes ) . $this->getMessageFromDB( 'minutes-abbrev' );
+ if ( !in_array( $format, array( 'avoidseconds', 'avoidminutes' ) ) ) {
+ $s .= ' ' . $this->formatNum( $secondsPart ) .
+ $this->getMessageFromDB( 'seconds-abbrev' );
+ }
+ } else {
+ $days = floor( $seconds / 86400 );
+ if ( $format === 'avoidminutes' ) {
+ $hours = round( ( $seconds - $days * 86400 ) / 3600 );
+ if ( $hours == 24 ) {
+ $hours = 0;
+ $days++;
+ }
+ $s = $this->formatNum( $days ) . $this->getMessageFromDB( 'days-abbrev' );
+ $s .= ' ';
+ $s .= $this->formatNum( $hours ) . $this->getMessageFromDB( 'hours-abbrev' );
+ } elseif ( $format === 'avoidseconds' ) {
+ $hours = floor( ( $seconds - $days * 86400 ) / 3600 );
+ $minutes = round( ( $seconds - $days * 86400 - $hours * 3600 ) / 60 );
+ if ( $minutes == 60 ) {
+ $minutes = 0;
+ $hours++;
+ }
+ if ( $hours == 24 ) {
+ $hours = 0;
+ $days++;
+ }
+ $s = $this->formatNum( $days ) . $this->getMessageFromDB( 'days-abbrev' );
+ $s .= ' ';
+ $s .= $this->formatNum( $hours ) . $this->getMessageFromDB( 'hours-abbrev' );
+ $s .= ' ';
+ $s .= $this->formatNum( $minutes ) . $this->getMessageFromDB( 'minutes-abbrev' );
+ } else {
+ $s = $this->formatNum( $days ) . $this->getMessageFromDB( 'days-abbrev' );
+ $s .= ' ';
+ $s .= $this->formatTimePeriod( $seconds - $days * 86400, $format );
+ }
}
+ return $s;
}
+ /**
+ * @param $bps int
+ * @return string
+ */
function formatBitrate( $bps ) {
$units = array( 'bps', 'kbps', 'Mbps', 'Gbps' );
if ( $bps <= 0 ) {
@@ -2989,6 +3562,8 @@ class Language {
/**
* Get the conversion rule title, if any.
+ *
+ * @return string
*/
function getConvRuleTitle() {
return $this->mConverter->getConvRuleTitle();
diff --git a/languages/LanguageConverter.php b/languages/LanguageConverter.php
index f5b5492d..ba89be74 100644
--- a/languages/LanguageConverter.php
+++ b/languages/LanguageConverter.php
@@ -35,7 +35,12 @@ class LanguageConverter {
var $mTables;
// 'bidirectional' 'unidirectional' 'disable' for each variant
var $mManualLevel;
+
+ /**
+ * @var String: memcached key name
+ */
var $mCacheKey;
+
var $mLangObj;
var $mFlags;
var $mDescCodeSep = ':', $mDescVarSep = ';';
@@ -52,24 +57,22 @@ class LanguageConverter {
/**
* Constructor
*
- * @param $langobj The Language Object
+ * @param $langobj Language: the Language Object
* @param $maincode String: the main language code of this language
* @param $variants Array: the supported variants of this language
* @param $variantfallbacks Array: the fallback language of each variant
* @param $flags Array: defining the custom strings that maps to the flags
* @param $manualLevel Array: limit for supported variants
*/
- public function __construct( $langobj, $maincode,
- $variants = array(),
- $variantfallbacks = array(),
- $flags = array(),
+ public function __construct( $langobj, $maincode, $variants = array(),
+ $variantfallbacks = array(), $flags = array(),
$manualLevel = array() ) {
- global $wgDisabledVariants, $wgLanguageNames;
+ global $wgDisabledVariants;
$this->mLangObj = $langobj;
$this->mMainLanguageCode = $maincode;
$this->mVariants = array_diff( $variants, $wgDisabledVariants );
$this->mVariantFallbacks = $variantfallbacks;
- $this->mVariantNames = $wgLanguageNames;
+ $this->mVariantNames = Language::getLanguageNames();
$this->mCacheKey = wfMemcKey( 'conversiontables', $maincode );
$defaultflags = array(
// 'S' show converted text
@@ -82,7 +85,7 @@ class LanguageConverter {
'D' => 'D', // convert description (subclass implement)
'-' => '-', // remove convert (not implement)
'H' => 'H', // add rule for convert code
- // (but no display in placed code )
+ // (but no display in placed code)
'N' => 'N' // current variant name
);
$this->mFlags = array_merge( $defaultflags, $flags );
@@ -143,9 +146,7 @@ class LanguageConverter {
if ( $wgUser->isLoggedIn() && !$req ) {
$req = $this->getUserVariant();
- }
-
- elseif ( !$req ) {
+ } elseif ( !$req ) {
$req = $this->getHeaderVariant();
}
@@ -189,8 +190,7 @@ class LanguageConverter {
* @return Mixed: returns the variant if it is valid, null otherwise
*/
protected function validateVariant( $variant = null ) {
- if ( $variant !== null &&
- in_array( $variant, $this->mVariants ) ) {
+ if ( $variant !== null && in_array( $variant, $this->mVariants ) ) {
return $variant;
}
return null;
@@ -227,17 +227,18 @@ class LanguageConverter {
global $wgUser;
// memoizing this function wreaks havoc on parserTest.php
- /* if ( $this->mUserVariant ) { */
- /* return $this->mUserVariant; */
- /* } */
+ /*
+ if ( $this->mUserVariant ) {
+ return $this->mUserVariant;
+ }
+ */
- // get language variant preference from logged in users
+ // Get language variant preference from logged in users
// Don't call this on stub objects because that causes infinite
// recursion during initialisation
if ( $wgUser->isLoggedIn() ) {
$ret = $wgUser->getOption( 'variant' );
- }
- else {
+ } else {
// figure out user lang without constructing wgLang to avoid
// infinite recursion
$ret = $wgUser->getOption( 'language' );
@@ -259,13 +260,13 @@ class LanguageConverter {
}
// see if some supported language variant is set in the
- // http header.
+ // HTTP header.
$languages = array_keys( $wgRequest->getAcceptLang() );
if ( empty( $languages ) ) {
return null;
}
- $fallback_languages = array();
+ $fallbackLanguages = array();
foreach ( $languages as $language ) {
$this->mHeaderVariant = $this->validateVariant( $language );
if ( $this->mHeaderVariant ) {
@@ -277,17 +278,16 @@ class LanguageConverter {
// them later.
$fallbacks = $this->getVariantFallbacks( $language );
if ( is_string( $fallbacks ) ) {
- $fallback_languages[] = $fallbacks;
+ $fallbackLanguages[] = $fallbacks;
} elseif ( is_array( $fallbacks ) ) {
- $fallback_languages =
- array_merge( $fallback_languages,
- $fallbacks );
+ $fallbackLanguages =
+ array_merge( $fallbackLanguages, $fallbacks );
}
}
if ( !$this->mHeaderVariant ) {
// process fallback languages now
- $fallback_languages = array_unique( $fallback_languages );
+ $fallback_languages = array_unique( $fallbackLanguages );
foreach ( $fallback_languages as $language ) {
$this->mHeaderVariant = $this->validateVariant( $language );
if ( $this->mHeaderVariant ) {
@@ -305,9 +305,9 @@ class LanguageConverter {
* If you want to parse rules, try to use convert() or
* convertTo().
*
- * @param $text String: the text to be converted
- * @param $toVariant String: the target language code
- * @return String: the converted text
+ * @param $text String the text to be converted
+ * @param $toVariant bool|string the target language code
+ * @return String the converted text
*/
public function autoConvert( $text, $toVariant = false ) {
wfProfileIn( __METHOD__ );
@@ -323,9 +323,9 @@ class LanguageConverter {
}
/* we convert everything except:
- 1. html markups (anything between < and >)
- 2. html entities
- 3. place holders created by the parser
+ 1. HTML markups (anything between < and >)
+ 2. HTML entities
+ 3. placeholders created by the parser
*/
global $wgParser;
if ( isset( $wgParser ) && $wgParser->UniqPrefix() != '' ) {
@@ -334,7 +334,7 @@ class LanguageConverter {
$marker = '';
}
- // this one is needed when the text is inside an html markup
+ // this one is needed when the text is inside an HTML markup
$htmlfix = '|<[^>]+$|^[^<>]*>';
// disable convert to variants between <code></code> tags
@@ -353,6 +353,8 @@ class LanguageConverter {
// Guard against delimiter nulls in the input
$text = str_replace( "\000", '', $text );
+ $markupMatches = null;
+ $elementMatches = null;
while ( $startPos < strlen( $text ) ) {
if ( preg_match( $reg, $text, $markupMatches, PREG_OFFSET_CAPTURE, $startPos ) ) {
$elementPos = $markupMatches[0][1];
@@ -370,7 +372,7 @@ class LanguageConverter {
// Translate any alt or title attributes inside the matched element
if ( $element !== '' && preg_match( '/^(<[^>\s]*)\s([^>]*)(.*)$/', $element,
- $elementMatches ) )
+ $elementMatches ) )
{
$attrs = Sanitizer::decodeTagAttributes( $elementMatches[2] );
$changed = false;
@@ -466,7 +468,7 @@ class LanguageConverter {
*
* @param $text String: the text to be converted
* @return Array: variant => converted text
- * @deprecated Use autoConvertToAllVariants() instead
+ * @deprecated since 1.17 Use autoConvertToAllVariants() instead
*/
public function convertLinkToAllVariants( $text ) {
return $this->autoConvertToAllVariants( $text );
@@ -475,7 +477,7 @@ class LanguageConverter {
/**
* Apply manual conversion rules.
*
- * @param $convRule Object: Object of ConverterRule
+ * @param $convRule ConverterRule Object of ConverterRule
*/
protected function applyManualConv( $convRule ) {
// Use syntax -{T|zh-cn:TitleCN; zh-tw:TitleTw}- to custom
@@ -515,8 +517,8 @@ class LanguageConverter {
* Auto convert a Title object to a readable string in the
* preferred variant.
*
- *@param $title Object: a object of Title
- *@return String: converted title text
+ * @param $title Title a object of Title
+ * @return String: converted title text
*/
public function convertTitle( $title ) {
$variant = $this->getPreferredVariant();
@@ -525,9 +527,9 @@ class LanguageConverter {
$text = '';
} else {
// first let's check if a message has given us a converted name
- $nsConvKey = 'conversion-ns' . $index;
- if ( !wfEmptyMsg( $nsConvKey ) ) {
- $text = wfMsgForContentNoTrans( $nsConvKey );
+ $nsConvMsg = wfMessage( 'conversion-ns' . $index )->inContentLanguage();
+ if ( $nsConvMsg->exists() ) {
+ $text = $nsConvMsg->plain();
} else {
// the message does not exist, try retrieve it from the current
// variant's namespace names.
@@ -569,7 +571,9 @@ class LanguageConverter {
*/
public function convertTo( $text, $variant ) {
global $wgDisableLangConversion;
- if ( $wgDisableLangConversion ) return $text;
+ if ( $wgDisableLangConversion ) {
+ return $text;
+ }
return $this->recursiveConvertTopLevel( $text, $variant );
}
@@ -614,7 +618,9 @@ class LanguageConverter {
*
* @param $text String: text to be converted
* @param $variant String: the target variant code
+ * @param $startPos int
* @param $depth Integer: depth of recursion
+ *
* @return String: converted text
*/
protected function recursiveConvertRule( $text, $variant, &$startPos, $depth = 0 ) {
@@ -685,10 +691,9 @@ class LanguageConverter {
}
/**
- * If a language supports multiple variants, it is
- * possible that non-existing link in one variant
- * actually exists in another variant. This function
- * tries to find it. See e.g. LanguageZh.php
+ * If a language supports multiple variants, it is possible that
+ * non-existing link in one variant actually exists in another variant.
+ * This function tries to find it. See e.g. LanguageZh.php
*
* @param $link String: the name of the link
* @param $nt Mixed: the title object of the link
@@ -759,10 +764,12 @@ class LanguageConverter {
/**
* Returns language specific hash options.
+ *
+ * @return string
*/
public function getExtraHashOptions() {
$variant = $this->getPreferredVariant();
- return '!' . $variant ;
+ return '!' . $variant;
}
/**
@@ -773,14 +780,15 @@ class LanguageConverter {
*/
function loadDefaultTables() {
$name = get_class( $this );
- wfDie( "Must implement loadDefaultTables() method in class $name" );
+ throw new MWException( "Must implement loadDefaultTables() method in class $name" );
}
/**
* Load conversion tables either from the cache or the disk.
* @private
+ * @param $fromCache Boolean: load from memcached? Defaults to true.
*/
- function loadTables( $fromcache = true ) {
+ function loadTables( $fromCache = true ) {
if ( $this->mTablesLoaded ) {
return;
}
@@ -788,7 +796,7 @@ class LanguageConverter {
wfProfileIn( __METHOD__ );
$this->mTablesLoaded = true;
$this->mTables = false;
- if ( $fromcache ) {
+ if ( $fromCache ) {
wfProfileIn( __METHOD__ . '-cache' );
$this->mTables = $wgMemc->get( $this->mCacheKey );
wfProfileOut( __METHOD__ . '-cache' );
@@ -797,8 +805,8 @@ class LanguageConverter {
|| !array_key_exists( self::CACHE_VERSION_KEY, $this->mTables ) ) {
wfProfileIn( __METHOD__ . '-recache' );
// not in cache, or we need a fresh reload.
- // we will first load the default tables
- // then update them using things in MediaWiki:Zhconversiontable/*
+ // We will first load the default tables
+ // then update them using things in MediaWiki:Conversiontable/*
$this->loadDefaultTables();
foreach ( $this->mVariants as $var ) {
$cached = $this->parseCachedTable( $var );
@@ -815,8 +823,7 @@ class LanguageConverter {
}
/**
- * Hook for post processig after conversion tables are loaded.
- *
+ * Hook for post processing after conversion tables are loaded.
*/
function postLoadTables() { }
@@ -833,7 +840,6 @@ class LanguageConverter {
$this->loadTables( false );
}
-
/**
* Parse the conversion table stored in the cache.
*
@@ -844,18 +850,18 @@ class LanguageConverter {
* ...
* }-
*
- * To make the tables more manageable, subpages are allowed
- * and will be parsed recursively if $recursive == true.
+ * To make the tables more manageable, subpages are allowed
+ * and will be parsed recursively if $recursive == true.
*
+ * @param $code String: language code
+ * @param $subpage String: subpage name
+ * @param $recursive Boolean: parse subpages recursively? Defaults to true.
+ *
+ * @return array
*/
function parseCachedTable( $code, $subpage = '', $recursive = true ) {
- global $wgMessageCache;
static $parsed = array();
- if ( !is_object( $wgMessageCache ) ) {
- return array();
- }
-
$key = 'Conversiontable/' . $code;
if ( $subpage ) {
$key .= '/' . $subpage;
@@ -865,15 +871,17 @@ class LanguageConverter {
}
if ( strpos( $code, '/' ) === false ) {
- $txt = $wgMessageCache->get( 'Conversiontable', true, $code );
+ $txt = MessageCache::singleton()->get( 'Conversiontable', true, $code );
if ( $txt === false ) {
- # FIXME: this method doesn't seem to be expecting
+ # @todo FIXME: This method doesn't seem to be expecting
# this possible outcome...
$txt = '&lt;Conversiontable&gt;';
}
} else {
- $title = Title::makeTitleSafe( NS_MEDIAWIKI,
- "Conversiontable/$code" );
+ $title = Title::makeTitleSafe(
+ NS_MEDIAWIKI,
+ "Conversiontable/$code"
+ );
if ( $title && $title->exists() ) {
$article = new Article( $title );
$txt = $article->getContents();
@@ -883,7 +891,7 @@ class LanguageConverter {
}
// get all subpage links of the form
- // [[MediaWiki:conversiontable/zh-xx/...|...]]
+ // [[MediaWiki:Conversiontable/zh-xx/...|...]]
$linkhead = $this->mLangObj->getNsText( NS_MEDIAWIKI ) .
':Conversiontable';
$subs = StringUtils::explode( '[[', $txt );
@@ -922,8 +930,9 @@ class LanguageConverter {
$table = StringUtils::explode( ';', $stripped );
foreach ( $table as $t ) {
$m = explode( '=>', $t, 3 );
- if ( count( $m ) != 2 )
+ if ( count( $m ) != 2 ) {
continue;
+ }
// trim any trailling comments starting with '//'
$tt = explode( '//', $m[1], 2 );
$ret[trim( $m[0] )] = trim( $tt[0] );
@@ -952,7 +961,7 @@ class LanguageConverter {
* various functions in the Parser.
*
* @param $text String: text to be tagged for no conversion
- * @param $noParse Unused (?)
+ * @param $noParse Boolean: unused
* @return String: the tagged text
*/
public function markNoConversion( $text, $noParse = false ) {
@@ -968,6 +977,10 @@ class LanguageConverter {
/**
* Convert the sorting key for category links. This should make different
* keys that are variants of each other map to the same key.
+ *
+ * @param $key string
+ *
+ * @return string
*/
function convertCategoryKey( $key ) {
return $key;
@@ -975,11 +988,22 @@ class LanguageConverter {
/**
* Hook to refresh the cache of conversion tables when
- * MediaWiki:conversiontable* is updated.
+ * MediaWiki:Conversiontable* is updated.
* @private
+ *
+ * @param $article Article object
+ * @param $user Object: User object for the current user
+ * @param $text String: article text (?)
+ * @param $summary String: edit summary of the edit
+ * @param $isMinor Boolean: was the edit marked as minor?
+ * @param $isWatch Boolean: did the user watch this page or not?
+ * @param $section Unused
+ * @param $flags Bitfield
+ * @param $revision Object: new Revision object or null
+ * @return Boolean: true
*/
- function OnArticleSaveComplete( $article, $user, $text, $summary, $isminor,
- $iswatch, $section, $flags, $revision ) {
+ function OnArticleSaveComplete( $article, $user, $text, $summary, $isMinor,
+ $isWatch, $section, $flags, $revision ) {
$titleobj = $article->getTitle();
if ( $titleobj->getNamespace() == NS_MEDIAWIKI ) {
$title = $titleobj->getDBkey();
@@ -996,7 +1020,11 @@ class LanguageConverter {
/**
* Armour rendered math against conversion.
- * Escape special chars in parsed math text.(in most cases are img elements)
+ * Escape special chars in parsed math text. (in most cases are img elements)
+ *
+ * @param $text String: text to armour against conversion
+ * @return String: armoured text where { and } have been converted to
+ * &#123; and &#125;
*/
public function armourMath( $text ) {
// convert '-{' and '}-' to '-&#123;' and '&#125;-' to prevent
@@ -1197,6 +1225,8 @@ class ConverterRule {
/**
* @private
+ *
+ * @return string
*/
function getRulesDesc() {
$codesep = $this->mConverter->mDescCodeSep;
@@ -1217,6 +1247,10 @@ class ConverterRule {
/**
* Parse rules conversion.
* @private
+ *
+ * @param $variant
+ *
+ * @return string
*/
function getRuleConvertedStr( $variant ) {
$bidtable = $this->mBidtable;
@@ -1298,7 +1332,7 @@ class ConverterRule {
}
$vmarked[] = $v;
}
- /*for unidirectional array fill to convert tables */
+ /* for unidirectional array fill to convert tables */
if ( ( $manLevel[$v] == 'bidirectional' || $manLevel[$v] == 'unidirectional' )
&& isset( $unidtable[$v] ) )
{
@@ -1313,9 +1347,9 @@ class ConverterRule {
/**
* Parse rules and flags.
- * @public
+ * @param $variant String: variant language code
*/
- function parse( $variant = NULL ) {
+ public function parse( $variant = null ) {
if ( !$variant ) {
$variant = $this->mConverter->getPreferredVariant();
}
@@ -1418,58 +1452,58 @@ class ConverterRule {
}
/**
- * @public
+ * @todo FIXME: code this function :)
*/
- function hasRules() {
+ public function hasRules() {
// TODO:
}
/**
* Get display text on markup -{...}-
- * @public
+ * @return string
*/
- function getDisplay() {
+ public function getDisplay() {
return $this->mRuleDisplay;
}
/**
* Get converted title.
- * @public
+ * @return string
*/
- function getTitle() {
+ public function getTitle() {
return $this->mRuleTitle;
}
/**
* Return how deal with conversion rules.
- * @public
+ * @return string
*/
- function getRulesAction() {
+ public function getRulesAction() {
return $this->mRulesAction;
}
/**
- * Get conversion table. ( bidirectional and unidirectional
- * conversion table )
- * @public
+ * Get conversion table. (bidirectional and unidirectional
+ * conversion table)
+ * @return array
*/
- function getConvTable() {
+ public function getConvTable() {
return $this->mConvTable;
}
/**
* Get conversion rules string.
- * @public
+ * @return string
*/
- function getRules() {
+ public function getRules() {
return $this->mRules;
}
/**
* Get conversion flags.
- * @public
+ * @return array
*/
- function getFlags() {
+ public function getFlags() {
return $this->mFlags;
}
}
diff --git a/languages/Names.php b/languages/Names.php
index 742cb06a..adf758f7 100644
--- a/languages/Names.php
+++ b/languages/Names.php
@@ -5,7 +5,7 @@
*
* @ingroup Language
*/
-/* private */ $wgLanguageNames = array(
+/* private */ $coreLanguageNames = array(
'aa' => 'Qafár af', # Afar
'ab' => 'ÐÒ§Ñуа', # Abkhaz, should possibly add ' быÑжѡа'
'ace' => 'Acèh', # Aceh
@@ -16,6 +16,7 @@
'am' => 'አማርኛ', # Amharic
'an' => 'Aragonés', # Aragonese
'ang' => 'Ænglisc', # Old English (Bug 23283)
+ 'anp' => 'अङà¥à¤—िका', # Angika
'ar' => 'العربية', # Arabic
'arc' => 'ÜܪܡÜÜ', # Aramaic
'arn' => 'Mapudungun', # Mapuche, Mapudungu, Araucanian (Araucano)
@@ -36,7 +37,8 @@
'be-tarask' => "\xE2\x80\xAAБеларуÑÐºÐ°Ñ (тарашкевіца)\xE2\x80\xAC", # Belarusian in Taraskievica orthography
'be-x-old' => "\xE2\x80\xAAБеларуÑÐºÐ°Ñ (тарашкевіца)\xE2\x80\xAC", # Belarusian in Taraskievica orthography; compat link
'bg' => 'БългарÑки', # Bulgarian
- 'bh' => 'भोजपà¥à¤°à¥€', # Bhojpuri
+ 'bh' => 'भोजपà¥à¤°à¥€', # Bihari marco language. Falls back to Bhojpuri (bho).
+ 'bho' => 'भोजपà¥à¤°à¥€', # Bhojpuri
'bi' => 'Bislama', # Bislama
'bjn' => 'Bahasa Banjar', # Banjarese
'bm' => 'Bamanankan', # Bambara
@@ -45,6 +47,7 @@
'bpy' => 'ইমার ঠার/বিষà§à¦£à§à¦ªà§à¦°à¦¿à¦¯à¦¼à¦¾ মণিপà§à¦°à§€', # Bishnupriya Manipuri
'bqi' => 'بختياري', # Bakthiari
'br' => 'Brezhoneg', # Breton
+ 'brh' => 'Bráhuí', # Brahui
'bs' => 'Bosanski', # Bosnian
'bug' => 'ᨅᨔ ᨕᨘá¨á¨—', # Bugis
'bxr' => 'БурÑад', # Buryat (Russia)
@@ -76,6 +79,7 @@
'de-formal' => "\xE2\x80\xAADeutsch (Sie-Form)\xE2\x80\xAC", # German - formal address ("Sie")
'diq' => 'Zazaki', # Zazaki
'dsb' => 'Dolnoserbski', # Lower Sorbian
+ 'dtp' => 'Dusun Bundu-liwan', # Central Dusun
'dv' => 'Þ‹Þ¨ÞˆÞ¬Þ€Þ¨Þ„Þ¦ÞÞ°', # Dhivehi
'dz' => 'ཇོང་à½', # Bhutani
'ee' => 'Eʋegbe', # Éwé
@@ -144,15 +148,17 @@
'it' => 'Italiano', # Italian
'iu' => 'áƒá“„ᒃᑎá‘ᑦ/inuktitut', # Inuktitut (macro language - do no localise, see ike/ikt - falls back to ike-cans)
'ja' => '日本語', # Japanese
+ 'jam' => 'Patois', # Jamaican Creole English
'jbo' => 'Lojban', # Lojban
'jut' => 'Jysk', # Jutish / Jutlandic
'jv' => 'Basa Jawa', # Javanese
'ka' => 'ქáƒáƒ áƒ—ული', # Georgian
'kaa' => 'Qaraqalpaqsha', # Karakalpak
'kab' => 'Taqbaylit', # Kabyle
- 'kbd' => 'КъÑбÑÑ€Ð´ÐµÐ¸Ð±Ð·Ñ / QabardjajÉ™bza', # Kabardian (multiple scripts - defaults to Cyrillic)
- 'kbd-cyrl' => 'къÑбÑрдеибзÑ', # Kabardian (Cyrillic)
+ 'kbd' => 'ÐдыгÑбзÑ', # Kabardian
+ 'kbd-cyrl' => 'ÐдыгÑбзÑ', # Kabardian (Cyrillic)
'kg' => 'Kongo', # Kongo, (FIXME!) should probaly be KiKongo or KiKoongo
+ 'khw' => 'کھوار', # Khowar
'ki' => 'Gĩkũyũ', # Gikuyu
'kiu' => 'Kırmancki', # Kirmanjki
'kj' => 'Kwanyama', # Kwanyama
@@ -173,7 +179,9 @@
'krc' => 'Къарачай-Малкъар', # Karachay-Balkar
'kri' => 'Krio', # Krio
'krj' => 'Kinaray-a', # Kinaray-a
- 'ks' => 'कशà¥à¤®à¥€à¤°à¥€ - (كشميري)', # Kashmiri
+ 'ks' => 'कशà¥à¤®à¥€à¤°à¥€ - (كشميري)', # Kashmiri (multiple scripts - defaults to Perso-Arabic)
+ 'ks-arab' => 'كشميري', # Kashmiri (Perso-Arabic script)
+ 'ks-deva' => 'कशà¥à¤®à¥€à¤°à¥€', # Kashmiri (Devanagari script)
'ksh' => 'Ripoarisch', # Ripuarian
'ku' => 'Kurdî', # Kurdish (multiple scripts - defaults to Latin)
'ku-latn' => "\xE2\x80\xAAKurdî (latînî)\xE2\x80\xAC", # Northern Kurdish (Latin script)
@@ -189,7 +197,8 @@
'lfn' => 'Lingua Franca Nova', # Lingua Franca Nova
'lg' => 'Luganda', # Ganda
'li' => 'Limburgs', # Limburgian
- 'lij' => 'Líguru', # Ligurian
+ 'lij' => 'Ligure', # Ligurian
+ 'liv' => 'Līvõ kēļ', # Livonian
'lmo' => 'Lumbaart', # Lombard
'ln' => 'Lingála', # Lingala
'lo' => 'ລາວ',# Laotian
@@ -262,17 +271,19 @@
'ps' => 'پښتو', # Pashto, Northern/Paktu/Pakhtu/Pakhtoo/Afghan/Pakhto/Pashtu/Pushto/Yusufzai Pashto
'pt' => 'Português', # Portuguese
'pt-br' => 'Português do Brasil', # Brazilian Portuguese
- 'qu' => 'Runa Simi', # Quechua
+ 'qu' => 'Runa Simi', # Southern Quechua
+ 'qug' => 'Runa shimi', # Kichwa/Northern Quechua (one of the codes it covers; temporarily used until Kichwa has its own)
'rgn' => 'Rumagnôl', # Romagnol
'rif' => 'Tarifit', # Tarifit
'rm' => 'Rumantsch', # Raeto-Romance
'rmy' => 'Romani', # Vlax Romany
'rn' => 'Kirundi', # Rundi/Kirundi/Urundi
'ro' => 'Română', # Romanian
- 'roa-rup' => 'Armãneashce', # Aromanian
+ 'roa-rup' => 'Armãneashce', # Aromanian (deprecated code, 'rup' exists in ISO 693-3)
'roa-tara' => 'Tarandíne', # Tarantino
'ru' => 'РуÑÑкий', # Russian
'rue' => 'РуÑиньÑкый', # Rusyn
+ 'rup' => 'Armãneashce', # Aromanian
'ruq' => 'Vlăheşte', # Megleno-Romanian (multiple scripts - defaults to Latin)
'ruq-cyrl' => 'ВлахеÑте', # Megleno-Romanian (Cyrillic script)
# 'ruq-grek' => 'Βλαεστε', # Megleno-Romanian (Greek script)
@@ -326,7 +337,6 @@
'tn' => 'Setswana', # Setswana
'to' => 'lea faka-Tonga', # Tonga (Tonga Islands)
'tokipona' => 'Toki Pona', # Toki Pona
- 'tp' => 'Toki Pona (deprecated:tokipona)', # Toki Pona - non-standard language code
'tpi' => 'Tok Pisin', # Tok Pisin
'tr' => 'Türkçe', # Turkish
'ts' => 'Xitsonga', # Tsonga
diff --git a/languages/classes/LanguageAm.php b/languages/classes/LanguageAm.php
index 77374d3c..29ae9c11 100644
--- a/languages/classes/LanguageAm.php
+++ b/languages/classes/LanguageAm.php
@@ -7,6 +7,11 @@
class LanguageAm extends Language {
/**
* Use singular form for zero
+ *
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
*/
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageAr.php b/languages/classes/LanguageAr.php
index 77c46025..95e76392 100644
--- a/languages/classes/LanguageAr.php
+++ b/languages/classes/LanguageAr.php
@@ -6,6 +6,12 @@
* @author Niklas Laxström
*/
class LanguageAr extends Language {
+
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 6 );
@@ -30,8 +36,12 @@ class LanguageAr extends Language {
* Temporary hack for bug 9413: replace Arabic presentation forms with their
* standard equivalents.
*
- * FIXME: This is language-specific for now only to avoid the negative
+ * @todo FIXME: This is language-specific for now only to avoid the negative
* performance impact of enabling it for all languages.
+ *
+ * @param $s string
+ *
+ * @return string
*/
function normalize( $s ) {
global $wgFixArabicUnicode;
diff --git a/languages/classes/LanguageAz.php b/languages/classes/LanguageAz.php
index 13c50547..947e6560 100644
--- a/languages/classes/LanguageAz.php
+++ b/languages/classes/LanguageAz.php
@@ -4,6 +4,11 @@
* @ingroup Language
*/
class LanguageAz extends Language {
+
+ /**
+ * @param $string string
+ * @return mixed|string
+ */
function ucfirst ( $string ) {
if ( $string[0] == 'i' ) {
return 'Ä°' . substr( $string, 1 );
diff --git a/languages/classes/LanguageBe.php b/languages/classes/LanguageBe.php
index 0b147333..bb0ba9e8 100644
--- a/languages/classes/LanguageBe.php
+++ b/languages/classes/LanguageBe.php
@@ -14,9 +14,15 @@
class LanguageBe extends Language {
+ /**
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
- // FIXME: CLDR defines 4 plural forms instead of 3
+ // @todo FIXME: CLDR defines 4 plural forms instead of 3
// http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
$forms = $this->preConvertPlural( $forms, 3 );
diff --git a/languages/classes/LanguageBe_tarask.php b/languages/classes/LanguageBe_tarask.php
index b29d8770..25c3f700 100644
--- a/languages/classes/LanguageBe_tarask.php
+++ b/languages/classes/LanguageBe_tarask.php
@@ -11,20 +11,26 @@
class LanguageBe_tarask extends Language {
/**
- * Plural form transformations
- *
- * $wordform1 - singular form (for 1, 21, 31, 41...)
- * $wordform2 - plural form (for 2, 3, 4, 22, 23, 24, 32, 33, 34...)
- * $wordform3 - plural form (for 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26...)
- */
+ * Plural form transformations
+ *
+ * $wordform1 - singular form (for 1, 21, 31, 41...)
+ * $wordform2 - plural form (for 2, 3, 4, 22, 23, 24, 32, 33, 34...)
+ * $wordform3 - plural form (for 0, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 25, 26...)
+ */
+ /**
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
// if no number with word, then use $form[0] for singular and $form[1] for plural or zero
if ( count( $forms ) === 2 ) return $count == 1 ? $forms[0] : $forms[1];
- // FIXME: CLDR defines 4 plural forms instead of 3
+ // @todo FIXME: CLDR defines 4 plural forms instead of 3
// http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
$forms = $this->preConvertPlural( $forms, 3 );
@@ -41,11 +47,15 @@ class LanguageBe_tarask extends Language {
}
}
- /*
+ /**
* The Belarusian language uses apostrophe sign,
* but the characters used for this could be both U+0027 and U+2019.
* This function unifies apostrophe sign in search index values
* to enable seach using both apostrophe signs.
+ *
+ * @param $string string
+ *
+ * @return string
*/
function normalizeForSearch( $string ) {
wfProfileIn( __METHOD__ );
@@ -62,9 +72,13 @@ class LanguageBe_tarask extends Language {
return $s;
}
- /*
+ /**
* Four-digit number should be without group commas (spaces)
* So "1 234 567", "12 345" but "1234"
+ *
+ * @param $_ string
+ *
+ * @return string
*/
function commafy( $_ ) {
if ( preg_match( '/^-?\d{1,4}(\.\d*)?$/', $_ ) ) {
diff --git a/languages/classes/LanguageBg.php b/languages/classes/LanguageBg.php
index d6d34090..9ccb9a85 100644
--- a/languages/classes/LanguageBg.php
+++ b/languages/classes/LanguageBg.php
@@ -8,6 +8,10 @@ class LanguageBg extends Language {
/**
* ISO number formatting: 123 456 789,99.
* Avoid tripple grouping by numbers with whole part up to 4 digits.
+ *
+ * @param $_ string
+ *
+ * @return string
*/
function commafy( $_ ) {
if ( !preg_match( '/^\d{1,4}$/', $_ ) ) {
diff --git a/languages/classes/LanguageBh.php b/languages/classes/LanguageBh.php
index 3272e2f3..46e4418c 100644
--- a/languages/classes/LanguageBh.php
+++ b/languages/classes/LanguageBh.php
@@ -7,6 +7,11 @@
class LanguageBh extends Language {
/**
* Use singular form for zero
+ *
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
*/
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageBs.php b/languages/classes/LanguageBs.php
index 6432109d..c501b35a 100644
--- a/languages/classes/LanguageBs.php
+++ b/languages/classes/LanguageBs.php
@@ -6,11 +6,16 @@
*/
class LanguageBs extends Language {
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 3 );
- // FIXME: CLDR defines 4 plural forms instead of 3. Plural for decimals is missing.
+ // @todo FIXME: CLDR defines 4 plural forms instead of 3. Plural for decimals is missing.
// http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
if ( $count > 10 && floor( ( $count % 100 ) / 10 ) == 1 ) {
return $forms[2];
@@ -29,6 +34,11 @@ class LanguageBs extends Language {
# Invoked with {{GRAMMAR:case|word}}
/**
* Cases: genitiv, dativ, akuzativ, vokativ, instrumental, lokativ
+ *
+ * @param $word string
+ * @param $case string
+ *
+ * @return string
*/
function convertGrammar( $word, $case ) {
global $wgGrammarForms;
diff --git a/languages/classes/LanguageCs.php b/languages/classes/LanguageCs.php
index 935aed4e..f50a7e70 100644
--- a/languages/classes/LanguageCs.php
+++ b/languages/classes/LanguageCs.php
@@ -6,11 +6,16 @@
*/
class LanguageCs extends Language {
- # Plural transformations
- # Invoked by putting
- # {{plural:count|form1|form2-4|form0,5+}} for two forms plurals
- # {{plural:count|form1|form0,2+}} for single form plurals
- # in a message
+ /**
+ * Plural transformations
+ * Invoked by putting
+ * {{plural:count|form1|form2-4|form0,5+}} for two forms plurals
+ * {{plural:count|form1|form0,2+}} for single form plurals
+ * in a message
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 3 );
diff --git a/languages/classes/LanguageCu.php b/languages/classes/LanguageCu.php
index 1aecbca5..af42d2c2 100644
--- a/languages/classes/LanguageCu.php
+++ b/languages/classes/LanguageCu.php
@@ -5,8 +5,15 @@
* @ingroup Language
*/
class LanguageCu extends Language {
- # Convert from the nominative form of a noun to some other case
- # Invoked with {{grammar:case|word}}
+
+ /**
+ * Convert from the nominative form of a noun to some other case
+ * Invoked with {{grammar:case|word}}
+ *
+ * @param $word string
+ * @param $case string
+ * @return string
+ */
function convertGrammar( $word, $case ) {
global $wgGrammarForms;
if ( isset( $wgGrammarForms['Ñu'][$case][$word] ) ) {
@@ -34,6 +41,11 @@ class LanguageCu extends Language {
return $word;
}
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 4 );
diff --git a/languages/classes/LanguageCy.php b/languages/classes/LanguageCy.php
index d7727de2..a3a28689 100644
--- a/languages/classes/LanguageCy.php
+++ b/languages/classes/LanguageCy.php
@@ -6,10 +6,16 @@
* @author Niklas Laxström
*/
class LanguageCy extends Language {
+
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
- // FIXME: CLDR defines 4 plural forms; very different, actually.
+ // @todo FIXME: CLDR defines 4 plural forms; very different, actually.
// See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#cy
$forms = $this->preConvertPlural( $forms, 6 );
$count = abs( $count );
diff --git a/languages/classes/LanguageDsb.php b/languages/classes/LanguageDsb.php
index 1c97c8ad..1fae25cf 100644
--- a/languages/classes/LanguageDsb.php
+++ b/languages/classes/LanguageDsb.php
@@ -6,9 +6,14 @@
*/
class LanguageDsb extends Language {
- # Convert from the nominative form of a noun to some other case
- # Invoked with {{GRAMMAR:case|word}}
-
+ /**
+ * Convert from the nominative form of a noun to some other case
+ * Invoked with {{grammar:case|word}}
+ *
+ * @param $word string
+ * @param $case string
+ * @return string
+ */
function convertGrammar( $word, $case ) {
global $wgGrammarForms;
if ( isset( $wgGrammarForms['dsb'][$case][$word] ) ) {
@@ -26,6 +31,11 @@ class LanguageDsb extends Language {
return $word; # this will return the original value for 'nominatiw' (nominativ) and all undefined case values
}
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 4 );
diff --git a/languages/classes/LanguageEo.php b/languages/classes/LanguageEo.php
index 7ec447e7..af058a3e 100644
--- a/languages/classes/LanguageEo.php
+++ b/languages/classes/LanguageEo.php
@@ -42,7 +42,7 @@ class LanguageEo extends Language {
return preg_replace_callback (
'/([cghjsu]x?)((?:xx)*)(?!x)/i',
array( $this, 'strrtxuCallback' ), $string );
- } else if ( strcasecmp( $in, 'UTF-8' ) == 0 && strcasecmp( $out, 'x' ) == 0 ) {
+ } elseif ( strcasecmp( $in, 'UTF-8' ) == 0 && strcasecmp( $out, 'x' ) == 0 ) {
# Double Xs only if they follow cxapelutaj literoj.
return preg_replace_callback(
'/((?:[cghjsu]|\xc4[\x88\x89\x9c\x9d\xa4\xa5\xb4\xb5]|\xc5[\x9c\x9d\xac\xad])x*)/i',
@@ -51,6 +51,10 @@ class LanguageEo extends Language {
return parent::iconv( $in, $out, $string );
}
+ /**
+ * @param $matches array
+ * @return string
+ */
function strrtuxCallback( $matches ) {
static $ux = array (
'x' => 'xx' , 'X' => 'Xx' ,
@@ -64,6 +68,10 @@ class LanguageEo extends Language {
return strtr( $matches[1], $ux );
}
+ /**
+ * @param $matches array
+ * @return string
+ */
function strrtxuCallback( $matches ) {
static $xu = array (
'xx' => 'x' , 'xX' => 'x' ,
@@ -84,6 +92,10 @@ class LanguageEo extends Language {
return strtr( $matches[1], $xu ) . strtr( $matches[2], $xu );
}
+ /**
+ * @param $s string
+ * @return string
+ */
function checkTitleEncoding( $s ) {
# Check for X-system backwards-compatibility URLs
$ishigh = preg_match( '/[\x80-\xff]/', $s );
diff --git a/languages/classes/LanguageEt.php b/languages/classes/LanguageEt.php
index 226c2d73..b469dec9 100644
--- a/languages/classes/LanguageEt.php
+++ b/languages/classes/LanguageEt.php
@@ -8,6 +8,10 @@
class LanguageEt extends Language {
/**
* Avoid grouping whole numbers between 0 to 9999
+ *
+ * @param $_ string
+ *
+ * @return string
*/
function commafy( $_ ) {
if ( !preg_match( '/^\d{1,4}$/', $_ ) ) {
diff --git a/languages/classes/LanguageFi.php b/languages/classes/LanguageFi.php
index e3d922c4..7156b65a 100644
--- a/languages/classes/LanguageFi.php
+++ b/languages/classes/LanguageFi.php
@@ -8,8 +8,14 @@
*/
class LanguageFi extends Language {
- # Convert from the nominative form of a noun to some other case
- # Invoked with {{GRAMMAR:case|word}}
+ /**
+ * Convert from the nominative form of a noun to some other case
+ * Invoked with {{grammar:case|word}}
+ *
+ * @param $word string
+ * @param $case string
+ * @return string
+ */
function convertGrammar( $word, $case ) {
global $wgGrammarForms;
if ( isset( $wgGrammarForms['fi'][$case][$word] ) ) {
@@ -55,6 +61,11 @@ class LanguageFi extends Language {
return $word;
}
+ /**
+ * @param $str string
+ * @param $forContent bool
+ * @return string
+ */
function translateBlockExpiry( $str, $forContent = false ) {
/*
'ago', 'now', 'today', 'this', 'next',
diff --git a/languages/classes/LanguageFr.php b/languages/classes/LanguageFr.php
index dec1204c..3e7c970d 100644
--- a/languages/classes/LanguageFr.php
+++ b/languages/classes/LanguageFr.php
@@ -7,6 +7,11 @@
class LanguageFr extends Language {
/**
* Use singular form for zero (see bug 7309)
+ *
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
*/
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageGa.php b/languages/classes/LanguageGa.php
index a55e5f30..43050e16 100644
--- a/languages/classes/LanguageGa.php
+++ b/languages/classes/LanguageGa.php
@@ -5,8 +5,15 @@
* @ingroup Language
*/
class LanguageGa extends Language {
- # Convert day names
- # Invoked with {{GRAMMAR:transformation|word}}
+
+ /**
+ * Convert day names
+ * Invoked with {{GRAMMAR:transformation|word}}
+ *
+ * @param $word string
+ * @param $case string
+ * @return string
+ */
function convertGrammar( $word, $case ) {
global $wgGrammarForms;
if ( isset( $wgGrammarForms['ga'][$case][$word] ) ) {
@@ -35,6 +42,11 @@ class LanguageGa extends Language {
return $word;
}
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageGan.php b/languages/classes/LanguageGan.php
index da5e1d22..99b4c29e 100644
--- a/languages/classes/LanguageGan.php
+++ b/languages/classes/LanguageGan.php
@@ -8,6 +8,14 @@ require_once( dirname( __FILE__ ) . '/LanguageZh.php' );
*/
class GanConverter extends LanguageConverter {
+ /**
+ * @param $langobj Language
+ * @param $maincode string
+ * @param $variants array
+ * @param $variantfallbacks array
+ * @param $flags array
+ * @param $manualLevel array
+ */
function __construct( $langobj, $maincode,
$variants = array(),
$variantfallbacks = array(),
@@ -37,14 +45,24 @@ class GanConverter extends LanguageConverter {
);
}
- /* there shouldn't be any latin text in Chinese conversion, so no need
- to mark anything.
- $noParse is there for compatibility with LanguageConvert::markNoConversion
+ /**
+ * there shouldn't be any latin text in Chinese conversion, so no need
+ * to mark anything.
+ * $noParse is there for compatibility with LanguageConvert::markNoConversion
+ *
+ * @param $text string
+ * @param $noParse bool
+ *
+ * @return string
*/
function markNoConversion( $text, $noParse = false ) {
return $text;
}
+ /**
+ * @param $key string
+ * @return String
+ */
function convertCategoryKey( $key ) {
return $this->autoConvert( $key, 'gan' );
}
@@ -80,25 +98,44 @@ class LanguageGan extends LanguageZh {
$wgHooks['ArticleSaveComplete'][] = $this->mConverter;
}
- # this should give much better diff info
+ /**
+ * this should give much better diff info
+ *
+ * @param $text string
+ * @return string
+ */
function segmentForDiff( $text ) {
return preg_replace(
"/([\\xc0-\\xff][\\x80-\\xbf]*)/e",
"' ' .\"$1\"", $text );
}
+ /**
+ * @param $text string
+ * @return string
+ */
function unsegmentForDiff( $text ) {
return preg_replace(
"/ ([\\xc0-\\xff][\\x80-\\xbf]*)/e",
"\"$1\"", $text );
}
- // word segmentation
+ /**
+ * word segmentation
+ *
+ * @param $string string
+ * @param $autoVariant string
+ * @return String
+ */
function normalizeForSearch( $string, $autoVariant = 'gan-hans' ) {
// LanguageZh::normalizeForSearch
return parent::normalizeForSearch( $string, $autoVariant );
}
+ /**
+ * @param $termsArray array
+ * @return array
+ */
function convertForSearchResult( $termsArray ) {
$terms = implode( '|', $termsArray );
$terms = self::convertDoubleWidth( $terms );
diff --git a/languages/classes/LanguageGd.php b/languages/classes/LanguageGd.php
index 1b1b278e..5fe3d058 100644
--- a/languages/classes/LanguageGd.php
+++ b/languages/classes/LanguageGd.php
@@ -4,32 +4,43 @@
* @ingroup Language
*
* @author Raimond Spekking
+ * @author Niklas Laxström
*/
class LanguageGd extends Language {
/**
* Plural form transformations
- * Based on this discussion: http://translatewiki.net/w/i.php?title=Portal_talk:Gd&oldid=1094065#%C3%80ireamhan
+ * Based on this discussion: http://translatewiki.net/wiki/Thread:Support/New_plural_rules_for_Scots_Gaelic_(gd)
*
- * $forms[0] - singular form (for 1)
- * $forms[1] - dual form (for 2)
- * $forms[2] - plural form 1 (for 3-10)
- * $forms[3] - plural form 2 (for >= 11)
+ * $forms[0] - 1
+ * $forms[1] - 2
+ * $forms[2] - 11
+ * $forms[3] - 12
+ * $forms[4] - 3-10, 13-19
+ * $forms[5] - 0, 20, rest
*
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
*/
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
- $forms = $this->preConvertPlural( $forms, 4 );
+ $forms = $this->preConvertPlural( $forms, 6 );
$count = abs( $count );
if ( $count === 1 ) {
return $forms[0];
} elseif ( $count === 2 ) {
return $forms[1];
- } elseif ( $count >= 3 && $count <= 10 ) {
+ } elseif ( $count === 11 ) {
return $forms[2];
- } else {
+ } elseif ( $count === 12 ) {
return $forms[3];
+ } elseif ( ($count >= 3 && $count <= 10) || ($count >= 13 && $count <= 19) ) {
+ return $forms[4];
+ } else {
+ return $forms[5];
}
}
}
diff --git a/languages/classes/LanguageGv.php b/languages/classes/LanguageGv.php
index 6e25e21c..4defffda 100644
--- a/languages/classes/LanguageGv.php
+++ b/languages/classes/LanguageGv.php
@@ -8,6 +8,11 @@
*/
class LanguageGv extends Language {
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageHe.php b/languages/classes/LanguageHe.php
index 95beca79..e65feee9 100644
--- a/languages/classes/LanguageHe.php
+++ b/languages/classes/LanguageHe.php
@@ -17,6 +17,8 @@ class LanguageHe extends Language {
*
* @param $word String: the word to convert
* @param $case String: the case
+ *
+ * @return string
*/
public function convertGrammar( $word, $case ) {
global $wgGrammarForms;
diff --git a/languages/classes/LanguageHi.php b/languages/classes/LanguageHi.php
index fc9d0de8..53a0fc18 100644
--- a/languages/classes/LanguageHi.php
+++ b/languages/classes/LanguageHi.php
@@ -7,6 +7,11 @@
class LanguageHi extends Language {
/**
* Use singular form for zero
+ *
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
*/
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageHr.php b/languages/classes/LanguageHr.php
index 888029be..e18c8d3a 100644
--- a/languages/classes/LanguageHr.php
+++ b/languages/classes/LanguageHr.php
@@ -6,9 +6,14 @@
class LanguageHr extends Language {
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
- // FIXME: CLDR defines 4 plural forms instead of 3. Plural for for decimals is missing.
+ // @todo FIXME: CLDR defines 4 plural forms instead of 3. Plural for for decimals is missing.
// http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html
$forms = $this->preConvertPlural( $forms, 3 );
diff --git a/languages/classes/LanguageHsb.php b/languages/classes/LanguageHsb.php
index 1b83f5ab..1b67aa0d 100644
--- a/languages/classes/LanguageHsb.php
+++ b/languages/classes/LanguageHsb.php
@@ -6,9 +6,14 @@
class LanguageHsb extends Language {
- # Convert from the nominative form of a noun to some other case
- # Invoked with {{GRAMMAR:case|word}}
-
+ /**
+ * Convert from the nominative form of a noun to some other case
+ * Invoked with {{grammar:case|word}}
+ *
+ * @param $word string
+ * @param $case string
+ * @return string
+ */
function convertGrammar( $word, $case ) {
global $wgGrammarForms;
if ( isset( $wgGrammarForms['hsb'][$case][$word] ) ) {
@@ -27,6 +32,11 @@ class LanguageHsb extends Language {
return $word; # this will return the original value for 'nominatiw' (nominativ) and all undefined case values
}
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 4 );
diff --git a/languages/classes/LanguageHu.php b/languages/classes/LanguageHu.php
index 44ce330c..f82bab2f 100644
--- a/languages/classes/LanguageHu.php
+++ b/languages/classes/LanguageHu.php
@@ -5,6 +5,12 @@
* @ingroup Language
*/
class LanguageHu extends Language {
+
+ /**
+ * @param $word string
+ * @param $case
+ * @return string
+ */
function convertGrammar( $word, $case ) {
global $wgGrammarForms;
if ( isset( $wgGrammarForms[$this->getCode()][$case][$word] ) ) {
diff --git a/languages/classes/LanguageHy.php b/languages/classes/LanguageHy.php
index 527a55f5..c14106c8 100644
--- a/languages/classes/LanguageHy.php
+++ b/languages/classes/LanguageHy.php
@@ -6,8 +6,15 @@
* @author Ruben Vardanyan (Me@RubenVardanyan.com)
*/
class LanguageHy extends Language {
- # Convert from the nominative form of a noun to some other case
- # Invoked with {{grammar:case|word}}
+
+ /**
+ * Convert from the nominative form of a noun to some other case
+ * Invoked with {{grammar:case|word}}
+ *
+ * @param $word string
+ * @param $case string
+ * @return string
+ */
function convertGrammar( $word, $case ) {
global $wgGrammarForms;
if ( isset( $wgGrammarForms['hy'][$case][$word] ) ) {
@@ -48,6 +55,12 @@ class LanguageHy extends Language {
return $word;
}
+ /**
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 2 );
@@ -55,10 +68,13 @@ class LanguageHy extends Language {
return ( abs( $count ) <= 1 ) ? $forms[0] : $forms[1];
}
- /*
+ /**
* Armenian numeric format is "12 345,67" but "1234,56"
+ *
+ * @param $_ string
+ *
+ * @return string
*/
-
function commafy( $_ ) {
if ( !preg_match( '/^\d{1,4}$/', $_ ) ) {
return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) );
diff --git a/languages/classes/LanguageIu.deps.php b/languages/classes/LanguageIu.deps.php
new file mode 100644
index 00000000..3b78d875
--- /dev/null
+++ b/languages/classes/LanguageIu.deps.php
@@ -0,0 +1,8 @@
+<?php
+// This file exists to ensure that base classes are preloaded before
+// LanguageIu.php is compiled, working around a bug in the APC opcode
+// cache on PHP 5, where cached code can break if the include order
+// changed on a subsequent page view.
+// see http://mail.wikipedia.org/pipermail/wikitech-l/2006-January/033660.html
+
+require_once( dirname(__FILE__).'/../LanguageConverter.php' );
diff --git a/languages/classes/LanguageIu.php b/languages/classes/LanguageIu.php
new file mode 100644
index 00000000..c6221dee
--- /dev/null
+++ b/languages/classes/LanguageIu.php
@@ -0,0 +1,224 @@
+<?php
+/**
+ * @addtogroup Language
+ */
+
+/*
+* Conversion script between Latin and Syllabics for Inuktitut.
+* - Syllabics -> lowercase Latin
+* - lowercase/uppercase Latin -> Syllabics
+*
+*
+* Based on:
+* - http://commons.wikimedia.org/wiki/Image:Inuktitut.png
+* - LanguageSr.php
+*
+* @ingroup Language
+*/
+require_once( dirname( __FILE__ ) . '/../LanguageConverter.php' );
+
+/**
+ *
+ */
+class IuConverter extends LanguageConverter {
+ var $mToLatin = array(
+ 'á¦' => 'h', 'áƒ' => 'i', 'á„' => 'ii', 'á…' => 'u', 'á†' => 'uu', 'áŠ' => 'a', 'á‹' => 'aa',
+ 'ᑉ' => 'p', 'á±' => 'pi', 'á²' => 'pii', 'á³' => 'pu', 'á´' => 'puu', 'á¸' => 'pa', 'á¹' => 'paa',
+ 'ᑦ' => 't', 'á‘Ž' => 'ti', 'á‘' => 'tii', 'á‘' => 'tu', 'á‘‘' => 'tuu', 'á‘•' => 'ta', 'á‘–' => 'taa',
+ 'ᒃ' => 'k', 'ᑭ' => 'ki', 'ᑮ' => 'kii', 'ᑯ' => 'ku', 'ᑰ' => 'kuu', 'ᑲ' => 'ka', 'ᑳ' => 'kaa',
+ 'ᖅᒃ' => 'qq', 'ᖅᑭ' => 'qqi', 'ᖅᑮ' => 'qqii', 'ᖅᑯ' => 'qqu', 'ᖅᑰ' => 'ᖅqquu', 'ᖅᑲ' => 'qqa', 'ᖅᑳ' => 'qqaa',
+ 'á’¡' => 'g', 'á’‹' => 'gi', 'á’Œ' => 'gii', 'á’' => 'gu', 'á’Ž' => 'guu', 'á’' => 'ga', 'á’‘' => 'gaa',
+ 'á’»' => 'm', 'á’¥' => 'mi', 'á’¦' => 'mii', 'á’§' => 'mu', 'á’¨' => 'muu', 'á’ª' => 'ma', 'á’«' => 'maa',
+ 'á“' => 'n', 'á“‚' => 'ni', 'ᓃ' => 'nii', 'á“„' => 'nu', 'á“…' => 'nuu', 'ᓇ' => 'na', 'ᓈ' => 'naa',
+ 'ᔅ' => 's', 'ᓯ' => 'si', 'ᓰ' => 'sii', 'ᓱ' => 'su', 'ᓲ' => 'suu', 'ᓴ' => 'sa', 'ᓵ' => 'saa',
+ 'ᓪ' => 'l', 'ᓕ' => 'li', 'ᓖ' => 'lii', 'ᓗ' => 'lu', 'ᓘ' => 'luu', 'ᓚ' => 'la', 'ᓛ' => 'laa',
+ 'ᔾ' => 'j', 'ᔨ' => 'ji', 'ᔩ' => 'jii', 'ᔪ' => 'ju', 'ᔫ' => 'juu', 'ᔭ' => 'ja', 'ᔮ' => 'jaa',
+ 'á•' => 'v', 'á••' => 'vi', 'á•–' => 'vii', 'á•—' => 'vu', 'ᕘ' => 'vuu', 'á•™' => 'va', 'á•š' => 'vaa',
+ 'á•' => 'r', 'ᕆ' => 'ri', 'ᕇ' => 'rii', 'ᕈ' => 'ru', 'ᕉ' => 'ruu', 'á•‹' => 'ra', 'á•Œ' => 'raa',
+ 'á–…' => 'q', 'á•¿' => 'qi', 'á–€' => 'qii', 'á–' => 'qu', 'á–‚' => 'quu', 'á–ƒ' => 'qa', 'á–„' => 'qaa',
+ 'á–•' => 'ng', 'á–' => 'ngi', 'á–' => 'ngii', 'á–‘' => 'ngu', 'á–’' => 'nguu', 'á–“' => 'nga', 'á–”' => 'ngaa',
+ 'ᖖ' => 'nng', 'ᙱ' => 'nngi', 'ᙲ' => 'nngii', 'ᙳ' => 'nngu', 'ᙴ' => 'nnguu', 'ᙵ' => 'nnga', 'ᙶ' => 'nngaa',
+ 'á–¦' => 'É«', 'á– ' => 'É«i', 'á–¡' => 'É«ii', 'á–¢' => 'É«u', 'á–£' => 'É«uu', 'á–¤' => 'É«a', 'á–¥' => 'É«aa',
+ );
+
+ var $mUpperToLowerCaseLatin = array(
+ 'A' => 'a', 'B' => 'b', 'C' => 'c', 'D' => 'd', 'E' => 'e',
+ 'F' => 'f', 'G' => 'g', 'H' => 'h', 'I' => 'i', 'J' => 'j',
+ 'K' => 'k', 'L' => 'l', 'M' => 'm', 'N' => 'n', 'O' => 'o',
+ 'P' => 'p', 'Q' => 'q', 'R' => 'r', 'S' => 's', 'T' => 't',
+ 'U' => 'u', 'V' => 'v', 'W' => 'w', 'X' => 'x', 'Y' => 'y',
+ 'Z' => 'z',
+ );
+
+ var $mToSyllabics = array(
+ 'h' => 'á¦', 'i' => 'áƒ', 'ii' => 'á„', 'u' => 'á…', 'uu' => 'á†', 'a' => 'áŠ', 'aa' => 'á‹',
+ 'p' => 'ᑉ', 'pi' => 'á±', 'pii' => 'á²', 'pu' => 'á³', 'puu' => 'á´', 'pa' => 'á¸', 'paa' => 'á¹',
+ 't' => 'ᑦ', 'ti' => 'á‘Ž', 'tii' => 'á‘', 'tu' => 'á‘', 'tuu' => 'á‘‘', 'ta' => 'á‘•', 'taa' => 'á‘–',
+ 'k' => 'ᒃ', 'ki' => 'ᑭ', 'kii' => 'ᑮ', 'ku' => 'ᑯ', 'kuu' => 'ᑰ', 'ka' => 'ᑲ', 'kaa' => 'ᑳ',
+ 'g' => 'á’¡', 'gi' => 'á’‹', 'gii' => 'á’Œ', 'gu' => 'á’', 'guu' => 'á’Ž', 'ga' => 'á’', 'gaa' => 'á’‘',
+ 'm' => 'á’»', 'mi' => 'á’¥', 'mii' => 'á’¦', 'mu' => 'á’§', 'muu' => 'á’¨', 'ma' => 'á’ª', 'maa' => 'á’«',
+ 'n' => 'á“', 'ni' => 'á“‚', 'nii' => 'ᓃ', 'nu' => 'á“„', 'nuu' => 'á“…', 'na' => 'ᓇ', 'naa' => 'ᓈ',
+ 's' => 'ᔅ', 'si' => 'ᓯ', 'sii' => 'ᓰ', 'su' => 'ᓱ', 'suu' => 'ᓲ', 'sa' => 'ᓴ', 'saa' => 'ᓵ',
+ 'l' => 'ᓪ', 'li' => 'ᓕ', 'lii' => 'ᓖ', 'lu' => 'ᓗ', 'luu' => 'ᓘ', 'la' => 'ᓚ', 'laa' => 'ᓛ',
+ 'j' => 'ᔾ', 'ji' => 'ᔨ', 'jii' => 'ᔩ', 'ju' => 'ᔪ', 'juu' => 'ᔫ', 'ja' => 'ᔭ', 'jaa' => 'ᔮ',
+ 'v' => 'á•', 'vi' => 'á••', 'vii' => 'á•–', 'vu' => 'á•—', 'vuu' => 'ᕘ', 'va' => 'á•™', 'vaa' => 'á•š',
+ 'r' => 'á•', 'ri' => 'ᕆ', 'rii' => 'ᕇ', 'ru' => 'ᕈ', 'ruu' => 'ᕉ', 'ra' => 'á•‹', 'raa' => 'á•Œ',
+ 'qq' => 'ᖅᒃ', 'qqi' => 'ᖅᑭ', 'qqii' => 'ᖅᑮ', 'qqu' => 'ᖅᑯ', 'qquu' => 'ᖅᑰ', 'qqa' => 'ᖅᑲ', 'qqaa' => 'ᖅᑳ',
+ 'q' => 'á–…', 'qi' => 'á•¿', 'qii' => 'á–€', 'qu' => 'á–', 'quu' => 'á–‚', 'qa' => 'á–ƒ', 'qaa' => 'á–„',
+ 'ng' => 'á–•', 'ngi' => 'á–', 'ngii' => 'á–', 'ngu' => 'á–‘', 'nguu' => 'á–’', 'nga' => 'á–“', 'ngaa' => 'á–”',
+ 'nng' => 'ᖖ', 'nngi' => 'ᙱ', 'nngii' => 'ᙲ', 'nngu' => 'ᙳ', 'nnguu' => 'ᙴ', 'nnga' => 'ᙵ', 'nngaa' => 'ᙶ',
+ 'É«' => 'á–¦', 'É«i' => 'á– ', 'É«ii' => 'á–¡', 'É«u' => 'á–¢', 'É«uu' => 'á–£', 'É«a' => 'á–¤', 'É«aa' => 'á–¥',
+ );
+
+ function loadDefaultTables() {
+ $this->mTables = array(
+ 'lowercase' => new ReplacementArray( $this->mUpperToLowerCaseLatin ),
+ 'ike-cans' => new ReplacementArray( $this->mToSyllabics ),
+ 'ike-latn' => new ReplacementArray( $this->mToLatin ),
+ 'iu' => new ReplacementArray()
+ );
+ }
+
+ /**
+ * rules should be defined as -{Syllabic | Latin-} -or-
+ * -{code:text | code:text | ...}-
+ * update: delete all rule parsing because it's not used
+ * currently, and just produces a couple of bugs
+ *
+ * @param $rule string
+ * @param $flags array
+ * @return array
+ */
+ function parseManualRule( $rule, $flags = array() ) {
+ if ( in_array( 'T', $flags ) ) {
+ return parent::parseManualRule( $rule, $flags );
+ }
+
+ $carray = array();
+ // otherwise ignore all formatting
+ foreach ( $this->mVariants as $v ) {
+ $carray[$v] = $rule;
+ }
+
+ return $carray;
+ }
+
+ /**
+ * Do not convert content on talk pages
+ *
+ * @param $text string
+ * @param $parser Parser
+ * @return string
+ */
+ function parserConvert( $text, &$parser ) {
+ if ( is_object( $parser->getTitle() ) && $parser->getTitle()->isTalkPage() )
+ $this->mDoContentConvert = false;
+ else
+ $this->mDoContentConvert = true;
+
+ return parent::parserConvert( $text, $parser );
+ }
+
+ /**
+ * A function wrapper:
+ * - if there is no selected variant, leave the link
+ * names as they were
+ * - do not try to find variants for usernames
+ *
+ * @param $link string
+ * @param $nt Title
+ * @param $ignoreOtherCond bool
+ */
+ function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
+ // check for user namespace
+ if ( is_object( $nt ) ) {
+ $ns = $nt->getNamespace();
+ if ( $ns == NS_USER || $ns == NS_USER_TALK )
+ return;
+ }
+
+ $oldlink = $link;
+ parent::findVariantLink( $link, $nt, $ignoreOtherCond );
+ if ( $this->getPreferredVariant() == $this->mMainLanguageCode )
+ $link = $oldlink;
+ }
+
+ /**
+ * We want our external link captions to be converted in variants,
+ * so we return the original text instead -{$text}-, except for URLs
+ *
+ * @param $text string
+ * @param $noParse bool
+ *
+ * @return string
+ */
+ function markNoConversion( $text, $noParse = false ) {
+ if ( $noParse || preg_match( "/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) )
+ return parent::markNoConversion( $text );
+ return $text;
+ }
+
+ /**
+ * An ugly function wrapper for parsing Image titles
+ * (to prevent image name conversion)
+ *
+ * @param $text string
+ * @param $toVariant bool
+ *
+ * @return string
+ */
+ function autoConvert( $text, $toVariant = false ) {
+ global $wgTitle;
+ if ( is_object( $wgTitle ) && $wgTitle->getNameSpace() == NS_FILE ) {
+ $imagename = $wgTitle->getNsText();
+ if ( preg_match( "/^$imagename:/", $text ) ) return $text;
+ }
+ return parent::autoConvert( $text, $toVariant );
+ }
+
+ /**
+ * It translates text into variant
+ *
+ * @param $text string
+ * @param $toVariant bool
+ *
+ * @return string
+ */
+ function translate( $text, $toVariant ) {
+ // If $text is empty or only includes spaces, do nothing
+ // Otherwise translate it
+ if ( trim( $text ) ) {
+ $this->loadTables();
+ // To syllabics, first translate uppercase to lowercase Latin
+ if($toVariant == 'ike-cans') {
+ $text = $this->mTables['lowercase']->replace( $text );
+ }
+ $text = $this->mTables[$toVariant]->replace( $text );
+ }
+ return $text;
+ }
+}
+
+/**
+ * Inuktitut
+ *
+ * @ingroup Language
+ */
+class LanguageIu extends Language {
+ function __construct() {
+ global $wgHooks;
+
+ parent::__construct();
+
+ $variants = array( 'iu', 'ike-cans', 'ike-latn' );
+ $variantfallbacks = array(
+ 'iu' => 'ike-cans',
+ 'ike-cans' => 'iu',
+ 'ike-latn' => 'iu',
+ );
+
+ $flags = array();
+ $this->mConverter = new IuConverter( $this, 'iu', $variants, $variantfallbacks, $flags );
+ $wgHooks['ArticleSaveComplete'][] = $this->mConverter;
+ }
+}
diff --git a/languages/classes/LanguageJa.php b/languages/classes/LanguageJa.php
index c5a992d5..510a3976 100644
--- a/languages/classes/LanguageJa.php
+++ b/languages/classes/LanguageJa.php
@@ -6,6 +6,11 @@
* @ingroup Language
*/
class LanguageJa extends Language {
+
+ /**
+ * @param $string string
+ * @return string
+ */
function segmentByWord( $string ) {
// Strip known punctuation ?
// $s = preg_replace( '/\xe3\x80[\x80-\xbf]/', '', $s ); # U3000-303f
@@ -23,8 +28,13 @@ class LanguageJa extends Language {
return $s;
}
- # Italic is not appropriate for Japanese script
- # Unfortunately most browsers do not recognise this, and render <em> as italic
+ /**
+ * Italic is not appropriate for Japanese script
+ * Unfortunately most browsers do not recognise this, and render <em> as italic
+ *
+ * @param $text string
+ * @return string
+ */
function emphasize( $text ) {
return $text;
}
diff --git a/languages/classes/LanguageKaa.php b/languages/classes/LanguageKaa.php
index 4c6710ed..a40fb7ae 100644
--- a/languages/classes/LanguageKaa.php
+++ b/languages/classes/LanguageKaa.php
@@ -10,6 +10,11 @@ class LanguageKaa extends Language {
# Invoked with {{GRAMMAR:case|word}}
/**
* Cases: genitive, dative, accusative, locative, ablative, comitative + possessive forms
+ *
+ * @param $word string
+ * @param $case string
+ *
+ * @return string
*/
function convertGrammar( $word, $case ) {
global $wgGrammarForms;
@@ -19,35 +24,43 @@ class LanguageKaa extends Language {
/* Full code of function convertGrammar() is in development. Updates coming soon. */
return $word;
}
- /*
+
+ /**
* It fixes issue with ucfirst for transforming 'i' to 'Ä°'
*
+ * @param $string string
+ *
+ * @return string
*/
function ucfirst ( $string ) {
- if ( $string[0] == 'i' ) {
- $string = 'Ä°' . substr( $string, 1 );
+ if ( substr( $string, 0, 1 ) === 'i' ) {
+ return 'Ä°' . substr( $string, 1 );
} else {
- $string = parent::ucfirst( $string );
+ return parent::ucfirst( $string );
}
- return $string;
-
}
- /*
+ /**
* It fixes issue with lcfirst for transforming 'I' to 'ı'
*
+ * @param $string string
+ *
+ * @return string
*/
function lcfirst ( $string ) {
- if ( $string[0] == 'I' ) {
- $string = 'ı' . substr( $string, 1 );
+ if ( substr( $string, 0, 1 ) === 'I' ) {
+ return 'ı' . substr( $string, 1 );
} else {
- $string = parent::lcfirst( $string );
+ return parent::lcfirst( $string );
}
- return $string;
}
/**
* Avoid grouping whole numbers between 0 to 9999
+ *
+ * @param $_ string
+ *
+ * @return string
*/
function commafy( $_ ) {
if ( !preg_match( '/^\d{1,4}$/', $_ ) ) {
diff --git a/languages/classes/LanguageKk.php b/languages/classes/LanguageKk.php
index e3caacc8..953a3f97 100644
--- a/languages/classes/LanguageKk.php
+++ b/languages/classes/LanguageKk.php
@@ -18,6 +18,15 @@ define( 'H_HAMZA', 'Ù´' ); # U+0674 ARABIC LETTER HIGH HAMZA
*/
class KkConverter extends LanguageConverter {
+ protected $mCyrl2Latn, $mLatn2Cyrl, $mCyLa2Arab;
+
+ /**
+ * @param $langobj Language
+ * @param $maincode string
+ * @param $variants array
+ * @param $variantfallbacks array
+ * @param $flags array
+ */
function __construct( $langobj, $maincode,
$variants = array(),
$variantfallbacks = array(),
@@ -190,16 +199,23 @@ class KkConverter extends LanguageConverter {
);
}
- /* rules should be defined as -{ekavian | iyekavian-} -or-
- -{code:text | code:text | ...}-
- update: delete all rule parsing because it's not used
- currently, and just produces a couple of bugs
- */
+ /**
+ * rules should be defined as -{ekavian | iyekavian-} -or-
+ * -{code:text | code:text | ...}-
+ *
+ * update: delete all rule parsing because it's not used
+ * currently, and just produces a couple of bugs
+ *
+ * @param $rule string
+ * @param $flags array
+ * @return array
+ */
function parseManualRule( $rule, $flags = array() ) {
if ( in_array( 'T', $flags ) ) {
return parent::parseManualRule( $rule, $flags );
}
+ $carray = array();
// otherwise ignore all formatting
foreach ( $this->mVariants as $v ) {
$carray[$v] = $rule;
@@ -208,11 +224,15 @@ class KkConverter extends LanguageConverter {
return $carray;
}
- /*
+ /**
* A function wrapper:
* - if there is no selected variant, leave the link
* names as they were
* - do not try to find variants for usernames
+ *
+ * @param $link string
+ * @param $nt Title
+ * @param bool $ignoreOtherCond
*/
function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
// check for user namespace
@@ -228,9 +248,14 @@ class KkConverter extends LanguageConverter {
$link = $oldlink;
}
- /*
+ /**
* An ugly function wrapper for parsing Image titles
* (to prevent image name conversion)
+ *
+ * @param $text string
+ * @param $toVariant bool
+ *
+ * @return string
*/
function autoConvert( $text, $toVariant = false ) {
global $wgTitle;
@@ -243,6 +268,11 @@ class KkConverter extends LanguageConverter {
/**
* It translates text into variant
+ *
+ * @param $text string
+ * @param $toVariant string
+ *
+ * @return string
*/
function translate( $text, $toVariant ) {
global $wgLanguageCode;
@@ -282,6 +312,11 @@ class KkConverter extends LanguageConverter {
return $ret;
}
+ /**
+ * @param $text string
+ * @param $toVariant string
+ * @return mixed|string
+ */
function regsConverter( $text, $toVariant ) {
if ( $text == '' ) {
return $text;
@@ -334,9 +369,14 @@ class KkConverter extends LanguageConverter {
}
}
- /*
+ /**
* We want our external link captions to be converted in variants,
* so we return the original text instead -{$text}-, except for URLs
+ *
+ * @param $text string
+ * @param $noParse string|bool
+ *
+ * @return string
*/
function markNoConversion( $text, $noParse = false ) {
if ( $noParse || preg_match( "/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) )
@@ -344,6 +384,10 @@ class KkConverter extends LanguageConverter {
return $text;
}
+ /**
+ * @param $key string
+ * @return String
+ */
function convertCategoryKey( $key ) {
return $this->autoConvert( $key, 'kk' );
}
@@ -392,9 +436,12 @@ class LanguageKk extends LanguageKk_cyrl {
}
}
- /*
+ /**
* It fixes issue with ucfirst for transforming 'i' to 'Ä°'
*
+ * @param $string string
+ *
+ * @return string
*/
function ucfirst ( $string ) {
$variant = $this->getPreferredVariant();
@@ -406,9 +453,12 @@ class LanguageKk extends LanguageKk_cyrl {
return $string;
}
- /*
+ /**
* It fixes issue with lcfirst for transforming 'I' to 'ı'
*
+ * @param $string string
+ *
+ * @return string
*/
function lcfirst ( $string ) {
$variant = $this->getPreferredVariant();
@@ -420,6 +470,11 @@ class LanguageKk extends LanguageKk_cyrl {
return $string;
}
+ /**
+ * @param $word string
+ * @param $case string
+ * @return string
+ */
function convertGrammar( $word, $case ) {
wfProfileIn( __METHOD__ );
diff --git a/languages/classes/LanguageKk_cyrl.php b/languages/classes/LanguageKk_cyrl.php
index 78febae1..ba84bf93 100644
--- a/languages/classes/LanguageKk_cyrl.php
+++ b/languages/classes/LanguageKk_cyrl.php
@@ -10,8 +10,12 @@ class LanguageKk_cyrl extends Language {
# Invoked with {{GRAMMAR:case|word}}
/**
* Cases: genitive, dative, accusative, locative, ablative, comitative + possessive forms
+ *
+ * @param $word string
+ * @param $case stirng
+ *
+ * @return string
*/
-
function convertGrammarKk_cyrl( $word, $case ) {
global $wgGrammarForms;
if ( isset( $wgGrammarForms['kk-kz'][$case][$word] ) ) {
@@ -232,6 +236,11 @@ class LanguageKk_cyrl extends Language {
return $word;
}
+ /**
+ * @param $word string
+ * @param $case string
+ * @return string
+ */
function convertGrammarKk_latn( $word, $case ) {
global $wgGrammarForms;
if ( isset( $wgGrammarForms['kk-tr'][$case][$word] ) ) {
@@ -452,6 +461,11 @@ class LanguageKk_cyrl extends Language {
return $word;
}
+ /**
+ * @param $word string
+ * @param $case string
+ * @return string
+ */
function convertGrammarKk_arab( $word, $case ) {
global $wgGrammarForms;
if ( isset( $wgGrammarForms['kk-cn'][$case][$word] ) ) {
@@ -672,6 +686,11 @@ class LanguageKk_cyrl extends Language {
return $word;
}
+ /**
+ * @param $word string
+ * @param $allVowels array
+ * @return array
+ */
function lastLetter( $word, $allVowels ) {
$lastLetter = array();
@@ -708,6 +727,10 @@ class LanguageKk_cyrl extends Language {
/**
* Avoid grouping whole numbers between 0 to 9999
+ *
+ * @param $_ string
+ *
+ * @return string
*/
function commafy( $_ ) {
if ( !preg_match( '/^\d{1,4}$/', $_ ) ) {
diff --git a/languages/classes/LanguageKm.php b/languages/classes/LanguageKm.php
index 128152f7..105e6ed3 100644
--- a/languages/classes/LanguageKm.php
+++ b/languages/classes/LanguageKm.php
@@ -6,6 +6,11 @@
* @author Niklas Laxström
*/
class LanguageKm extends Language {
+
+ /**
+ * @param $_ string
+ * @return string
+ */
function commafy( $_ ) {
/* NO-op for Khmer. Cannot use
* $separatorTransformTable = array( ',' => '' )
diff --git a/languages/classes/LanguageKsh.php b/languages/classes/LanguageKsh.php
index 6d70b896..dc37656c 100644
--- a/languages/classes/LanguageKsh.php
+++ b/languages/classes/LanguageKsh.php
@@ -20,6 +20,7 @@ class LanguageKsh extends Language {
'wikia' => 'f',
'translatewiki.net' => 'n',
);
+
/**
* Convert from the nominative form of a noun to other cases.
* Invoked with {{GRAMMAR:case|word}} inside messages.
@@ -39,7 +40,7 @@ class LanguageKsh extends Language {
* Betoont focussed or stressed article
* -omitted- unstressed or unfocussed article
*
- * Possible values for for the type of genitive are:
+ * Possible values for the type of genitive are:
* Sing, Iehr prepositioned genitive = possessive dative
* Vun, Fon, -omitted- postpositioned genitive
* = preposition "vun" with dative
@@ -61,114 +62,94 @@ class LanguageKsh extends Language {
* Contents of the leftmost table column can be copied and pasted as
* "case" values.
*
+ * @param $word String
+ * @param $case String
+ *
+ * @return string
*/
- function convertGrammar( $word, $case )
- {
- $lord = strtolower($word);
+ function convertGrammar( $word, $case ) {
+ $lord = strtolower( $word );
$gender = 'm'; // Nuutnaarel // default
- if ( preg_match ( '/wiki$/', $lord ) )
- {
+ if ( preg_match ( '/wiki$/', $lord ) ) {
$gender = 'n'; // Dat xyz-wiki
}
- if ( isset( self::$familygender[$lord] ) )
- {
- $gender = (self::$familygender[$lord]);
+ if ( isset( self::$familygender[$lord] ) ) {
+ $gender = self::$familygender[$lord];
}
- $case = (' '.strtolower($case));
- if ( preg_match( '/ [is]/', $case ) )
- {
+ $case = ' ' . strtolower( $case );
+ if ( preg_match( '/ [is]/', $case ) ) {
# däm WikiMaatplaz singe, dä Wikipeedija iere, däm Wikiwööterbooch singe
# dem/em WikiMaatplaz singe, de Wikipeedija iere, dem/em Wikiwööterbooch singe
# däm WikiMaatplaz sing, dä Wikipeedija ier, däm Wikiwööterbooch sing
# dem/em WikiMaatplaz sing, de Wikipeedija ier, dem/em Wikiwööterbooch sing
$word = ( preg_match( '/ b/', $case )
- ? ($gender=='f'
- ? 'dä'
- : 'däm'
- )
- : ($gender=='f'
- ? 'de'
- : 'dem'
- )
- ).
- ' '.$word.' '.
- ( $gender=='f'
- ? 'ier'
- : 'sing'
- ).
- ( preg_match( '/ m/', $case )
- ? 'e'
- : ''
+ ? ( $gender=='f' ? 'dä' : 'däm' )
+ : ( $gender=='f' ? 'de' : 'dem' )
+ ) . ' ' . $word . ' ' .
+ ( $gender=='f' ? 'ier' : 'sing' ) .
+ ( preg_match( '/ m/', $case ) ? 'e' : ''
);
- }
- elseif ( preg_match( '/ e/', $case ) )
- {
+ } elseif ( preg_match( '/ e/', $case ) ) {
# en dämm WikiMaatPlaz, en dä Wikipeedija, en dämm Wikiwööterbooch
# em WikiMaatplaz, en de Wikipeedija, em Wikiwööterbooch
- if ( preg_match( '/ b/', $case ) )
- {
- $word = ('en '.($gender=='f'?'dä':'däm').' '.$word);
- }
- else
- {
- $word = (($gender=='f'?'en de':'em').' '.$word);
+ if ( preg_match( '/ b/', $case ) ) {
+ $word = 'en '.( $gender == 'f' ? 'dä' : 'däm' ) . ' ' . $word;
+ } else {
+ $word = ( $gender == 'f' ? 'en de' : 'em' ) . ' ' . $word;
}
- }
- elseif ( preg_match( '/ [fv]/', $case ) || preg_match( '/ [2jg]/', $case ) )
- {
+ } elseif ( preg_match( '/ [fv]/', $case ) || preg_match( '/ [2jg]/', $case ) ) {
# vun däm WikiMaatplaz, vun dä Wikipeedija, vun däm Wikiwööterbooch
# vum WikiMaatplaz, vun de Wikipeedija, vum Wikiwööterbooch
- if ( preg_match( '/ b/', $case ) )
- {
- $word = ('vun '.($gender=='f'?'dä':'däm').' '.$word);
- }
- else
- {
- $word = (($gender=='f'?'vun de':'vum').' '.$word);
+ if ( preg_match( '/ b/', $case ) ) {
+ $word = 'vun ' . ( $gender == 'f' ? 'dä' : 'däm' ) . ' ' . $word;
+ } else {
+ $word = ( $gender== 'f' ? 'vun de' : 'vum' ) . ' ' . $word;
}
- }
- elseif ( preg_match( '/ [3d]/', $case ) )
- {
+ } elseif ( preg_match( '/ [3d]/', $case ) ) {
# dämm WikiMaatPlaz, dä Wikipeedija, dämm Wikiwööterbooch
# dem/em WikiMaatplaz, de Wikipeedija, dem/em Wikiwööterbooch
- if ( preg_match( '/ b/', $case ) )
- {
- $word = (($gender=='f'?'dää':'dämm').' '.$word);
- }
- else
- {
- $word = (($gender=='f'?'de':'dem').' '.$word);
+ if ( preg_match( '/ b/', $case ) ) {
+ $word = ( $gender == 'f' ? 'dää' : 'dämm' ) .' ' . $word;
+ } else {
+ $word = ( $gender == 'f' ? 'de' : 'dem' ) . ' ' . $word;
}
- }
- else
- {
+ } else {
# dä WikiMaatPlaz, di Wikipeedija, dat Wikiwööterbooch
# der WikiMaatplaz, de Wikipeedija, et Wikiwööterbooch
- if ( preg_match( '/ b/', $case ) )
- {
- switch ( $gender )
- {
- case 'm' : $lord = 'dä' ; break ;
- case 'f' : $lord = 'di' ; break ;
- default : $lord = 'dat' ; break ;
+ if ( preg_match( '/ b/', $case ) ) {
+ switch ( $gender ) {
+ case 'm':
+ $lord = 'dä';
+ break ;
+ case 'f':
+ $lord = 'di';
+ break;
+ default:
+ $lord = 'dat';
}
- }
- else
- {
- switch ( $gender )
- {
- case 'm' : $lord = 'der' ; break ;
- case 'f' : $lord = 'de' ; break ;
- default : $lord = 'et' ; break ;
+ } else {
+ switch ( $gender ) {
+ case 'm':
+ $lord = 'der';
+ break;
+ case 'f':
+ $lord = 'de';
+ break;
+ default:
+ $lord = 'et';
}
}
- $word = ($lord.' '.$word);
+ $word = $lord.' '.$word;
}
- return($word);
+ return $word;
}
/**
* Avoid grouping whole numbers between 0 to 9999
+ *
+ * @param $_ string
+ *
+ * @return string
*/
public function commafy( $_ ) {
if ( !preg_match( '/^\d{1,4}$/', $_ ) ) {
@@ -180,6 +161,11 @@ class LanguageKsh extends Language {
/**
* Handle cases of (1, other, 0) or (1, other)
+ *
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
*/
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageKu.php b/languages/classes/LanguageKu.php
index 1cc4f017..92bca095 100644
--- a/languages/classes/LanguageKu.php
+++ b/languages/classes/LanguageKu.php
@@ -132,11 +132,15 @@ class KuConverter extends LanguageConverter {
);
}
- /*
+ /**
* A function wrapper:
* - if there is no selected variant, leave the link
* names as they were
* - do not try to find variants for usernames
+ *
+ * @param $link string
+ * @param $nt Title
+ * @param $ignoreOtherCond bool
*/
function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
// check for user namespace
@@ -152,9 +156,14 @@ class KuConverter extends LanguageConverter {
$link = $oldlink;
}
- /*
+ /**
* We want our external link captions to be converted in variants,
* so we return the original text instead -{$text}-, except for URLs
+ *
+ * @param $text string
+ * @param $noParse bool
+ *
+ * @return string
*/
function markNoConversion( $text, $noParse = false ) {
if ( $noParse || preg_match( "/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) )
@@ -162,9 +171,14 @@ class KuConverter extends LanguageConverter {
return $text;
}
- /*
+ /**
* An ugly function wrapper for parsing Image titles
* (to prevent image name conversion)
+ *
+ * @param $text string
+ * @param $toVariant bool
+ *
+ * @return string
*/
function autoConvert( $text, $toVariant = false ) {
global $wgTitle;
@@ -178,6 +192,11 @@ class KuConverter extends LanguageConverter {
/**
* It translates text into variant, specials:
* - ommiting roman numbers
+ *
+ * @param $text string
+ * @param $toVariant bool
+ *
+ * @return string
*/
function translate( $text, $toVariant ) {
/* From Kazakh interface, maybe we need it later
diff --git a/languages/classes/LanguageKu_ku.php b/languages/classes/LanguageKu_ku.php
index a9ec64e6..e4332928 100644
--- a/languages/classes/LanguageKu_ku.php
+++ b/languages/classes/LanguageKu_ku.php
@@ -8,6 +8,10 @@ class LanguageKu_ku extends Language {
/**
* Avoid grouping whole numbers between 0 to 9999
+ *
+ * @param $_ string
+ *
+ * @return string
*/
function commafy( $_ ) {
diff --git a/languages/classes/LanguageLa.php b/languages/classes/LanguageLa.php
index 81fc30cf..657ac6e4 100644
--- a/languages/classes/LanguageLa.php
+++ b/languages/classes/LanguageLa.php
@@ -12,6 +12,11 @@ class LanguageLa extends Language {
* Rules are far from complete.
*
* Cases: genitive, accusative, ablative
+ *
+ * @param $word string
+ * @param $case string
+ *
+ * @return string
*/
function convertGrammar( $word, $case ) {
global $wgGrammarForms;
diff --git a/languages/classes/LanguageLn.php b/languages/classes/LanguageLn.php
index 11d276d8..b96cf619 100644
--- a/languages/classes/LanguageLn.php
+++ b/languages/classes/LanguageLn.php
@@ -8,7 +8,11 @@ class LanguageLn extends Language {
/**
* Use singular form for zero
* http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ln
-
+ *
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
*/
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageLt.php b/languages/classes/LanguageLt.php
index 4291e797..09cacae0 100644
--- a/languages/classes/LanguageLt.php
+++ b/languages/classes/LanguageLt.php
@@ -10,6 +10,13 @@ class LanguageLt extends Language {
2 - trys (3) lapai
3 - penkiolika (15) lapų
*/
+
+ /**
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageLv.php b/languages/classes/LanguageLv.php
index fea2d21f..8a78303c 100644
--- a/languages/classes/LanguageLv.php
+++ b/languages/classes/LanguageLv.php
@@ -22,7 +22,7 @@ class LanguageLv extends Language {
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
- // FIXME: CLDR defines 3 plural forms instead of 2. Form for 0 is missing.
+ // @todo FIXME: CLDR defines 3 plural forms instead of 2. Form for 0 is missing.
// http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#lv
$forms = $this->preConvertPlural( $forms, 2 );
diff --git a/languages/classes/LanguageMg.php b/languages/classes/LanguageMg.php
index 54ef408f..111dda35 100644
--- a/languages/classes/LanguageMg.php
+++ b/languages/classes/LanguageMg.php
@@ -7,6 +7,11 @@
class LanguageMg extends Language {
/**
* Use singular form for zero
+ *
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
*/
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageMk.php b/languages/classes/LanguageMk.php
index 9dc8a560..4ae7f412 100644
--- a/languages/classes/LanguageMk.php
+++ b/languages/classes/LanguageMk.php
@@ -8,6 +8,11 @@ class LanguageMk extends Language {
/**
* Plural forms per
* http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#mk
+ *
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
*/
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageMl.php b/languages/classes/LanguageMl.php
index 3cd30eb2..aeca3621 100644
--- a/languages/classes/LanguageMl.php
+++ b/languages/classes/LanguageMl.php
@@ -13,8 +13,12 @@ class LanguageMl extends Language {
* bug 9413. Also fixes miscellaneous problems due to mishandling of ZWJ,
* e.g. bug 11162.
*
- * FIXME: This is language-specific for now only to avoid the negative
+ * @todo FIXME: This is language-specific for now only to avoid the negative
* performance impact of enabling it for all languages.
+ *
+ * @param $s string
+ *
+ * @return string
*/
function normalize( $s ) {
global $wgFixMalayalamUnicode;
diff --git a/languages/classes/LanguageMo.php b/languages/classes/LanguageMo.php
index beeb04f8..5d78a502 100644
--- a/languages/classes/LanguageMo.php
+++ b/languages/classes/LanguageMo.php
@@ -5,6 +5,12 @@
* @ingroup Language
*/
class LanguageMo extends Language {
+
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
// Plural rules per
// http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#mo
diff --git a/languages/classes/LanguageMt.php b/languages/classes/LanguageMt.php
index fb271bf6..ef143da5 100644
--- a/languages/classes/LanguageMt.php
+++ b/languages/classes/LanguageMt.php
@@ -8,6 +8,12 @@
*/
class LanguageMt extends Language {
+
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageMy.php b/languages/classes/LanguageMy.php
index 4fa5b05e..b12e4585 100644
--- a/languages/classes/LanguageMy.php
+++ b/languages/classes/LanguageMy.php
@@ -7,6 +7,11 @@
* @author Niklas Laxström, 2008
*/
class LanguageMy extends Language {
+
+ /**
+ * @param $_ string
+ * @return string
+ */
function commafy( $_ ) {
/* NO-op. Cannot use
* $separatorTransformTable = array( ',' => '' )
diff --git a/languages/classes/LanguageNso.php b/languages/classes/LanguageNso.php
index 9ff89039..40263320 100644
--- a/languages/classes/LanguageNso.php
+++ b/languages/classes/LanguageNso.php
@@ -7,6 +7,11 @@
class LanguageNso extends Language {
/**
* Use singular form for zero
+ *
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
*/
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageOs.php b/languages/classes/LanguageOs.php
new file mode 100644
index 00000000..f3b5d8a4
--- /dev/null
+++ b/languages/classes/LanguageOs.php
@@ -0,0 +1,87 @@
+<?php
+
+/** Ossetian (Ирон)
+ *
+ * @author Soslan Khubulov
+ *
+ * @ingroup Language
+ */
+class LanguageOs extends Language {
+
+ /**
+ * Convert from the nominative form of a noun to other cases
+ * Invoked with {{grammar:case|word}}
+ *
+ * Depending on word there are four different ways of converting to other cases.
+ * 1) Word consist of not cyrillic letters or is an abbreviation.
+ * Then result word is: word + hyphen + case ending.
+ *
+ * 2) Word consist of cyrillic letters.
+ * 2.1) Word is in plural.
+ * Then result word is: word - last letter + case ending. Ending of allative case here is 'æм'.
+ *
+ * 2.2) Word is in singular.
+ * 2.2.1) Word ends on consonant.
+ * Then result word is: word + case ending.
+ *
+ * 2.2.2) Word ends on vowel.
+ * Then result word is: word + 'й' + case ending for cases != allative or comitative
+ * and word + case ending for allative or comitative. Ending of allative case here is 'æ'.
+ *
+ * @param $word string
+ * @param $case string
+ * @return string
+ */
+ function convertGrammar( $word, $case ) {
+ global $wgGrammarForms;
+ if ( isset( $wgGrammarForms['os'][$case][$word] ) ) {
+ return $wgGrammarForms['os'][$case][$word];
+ }
+ # Ending for allative case
+ $end_allative = 'мæ';
+ # Variable for 'j' beetwen vowels
+ $jot = '';
+ # Variable for "-" for not Ossetic words
+ $hyphen = '';
+ # Variable for ending
+ $ending = '';
+
+
+ # CHecking if the $word is in plural form
+ if ( preg_match( '/тæ$/u', $word ) ) {
+ $word = mb_substr( $word, 0, -1 );
+ $end_allative = 'æм';
+ }
+ # Works if $word is in singular form.
+ # Checking if $word ends on one of the vowels: е, Ñ‘, и, о, Ñ‹, Ñ, ÑŽ, Ñ.
+ elseif ( preg_match( "/[аæеёиоыÑÑŽÑ]$/u", $word ) ) {
+ $jot = 'й';
+ }
+ # Checking if $word ends on 'у'. 'У' can be either consonant 'W' or vowel 'U' in cyrillic Ossetic.
+ # Examples: {{grammar:genitive|аунеу}} = аунеуы, {{grammar:genitive|лæппу}} = лæппуйы.
+ elseif ( preg_match( "/у$/u", $word ) ) {
+ if ( !preg_match( "/[аæеёиоыÑÑŽÑ]$/u", mb_substr( $word, -2, 1 ) ) )
+ $jot = 'й';
+ } elseif ( !preg_match( "/[бвгджзйклмнопрÑтфхцчшщьъ]$/u", $word ) ) {
+ $hyphen = '-';
+ }
+
+ switch ( $case ) {
+ case 'genitive': $ending = $hyphen . $jot . 'Ñ‹'; break;
+ case 'dative': $ending = $hyphen . $jot . 'æн'; break;
+ case 'allative': $ending = $hyphen . $end_allative; break;
+ case 'ablative':
+ if ( $jot == 'й' ) {
+ $ending = $hyphen . $jot . 'æ'; break;
+ }
+ else {
+ $ending = $hyphen . $jot . 'æй'; break;
+ }
+ case 'inessive': break;
+ case 'superessive': $ending = $hyphen . $jot . 'ыл'; break;
+ case 'equative': $ending = $hyphen . $jot . 'ау'; break;
+ case 'comitative': $ending = $hyphen . 'имæ'; break;
+ }
+ return $word . $ending;
+ }
+}
diff --git a/languages/classes/LanguagePl.php b/languages/classes/LanguagePl.php
index 40477f42..59c8d5c2 100644
--- a/languages/classes/LanguagePl.php
+++ b/languages/classes/LanguagePl.php
@@ -5,6 +5,12 @@
* @ingroup Language
*/
class LanguagePl extends Language {
+
+ /**
+ * @param $count string
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 3 );
@@ -22,6 +28,10 @@ class LanguagePl extends Language {
}
}
+ /**
+ * @param $_ string
+ * @return string
+ */
function commafy( $_ ) {
if ( !preg_match( '/^\-?\d{1,4}(\.\d+)?$/', $_ ) ) {
return strrev( (string)preg_replace( '/(\d{3})(?=\d)(?!\d*\.)/', '$1,', strrev( $_ ) ) );
diff --git a/languages/classes/LanguageQqx.php b/languages/classes/LanguageQqx.php
new file mode 100644
index 00000000..88d38f59
--- /dev/null
+++ b/languages/classes/LanguageQqx.php
@@ -0,0 +1,15 @@
+<?php
+/**
+ * For all translated messages, this returns the name of the message bracketed.
+ * This does not affect untranslated messages.
+ *
+ * NOTE: It returns a valid title, because there are some poorly written
+ * extentions that assume the contents of some messages are valid.
+ *
+ * @ingroup Language
+ */
+class LanguageQqx extends Language {
+ function getMessage( $key ) {
+ return "($key)";
+ }
+}
diff --git a/languages/classes/LanguageRo.php b/languages/classes/LanguageRo.php
index 89edce11..9cfd8b57 100644
--- a/languages/classes/LanguageRo.php
+++ b/languages/classes/LanguageRo.php
@@ -5,6 +5,12 @@
* @ingroup Language
*/
class LanguageRo extends Language {
+
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
// Plural rules per
// http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ro
diff --git a/languages/classes/LanguageRu.php b/languages/classes/LanguageRu.php
index 8f027048..e16761ad 100644
--- a/languages/classes/LanguageRu.php
+++ b/languages/classes/LanguageRu.php
@@ -7,8 +7,15 @@
* @ingroup Language
*/
class LanguageRu extends Language {
- # Convert from the nominative form of a noun to some other case
- # Invoked with {{grammar:case|word}}
+
+ /**
+ * Convert from the nominative form of a noun to some other case
+ * Invoked with {{grammar:case|word}}
+ *
+ * @param $word string
+ * @param $case string
+ * @return string
+ */
function convertGrammar( $word, $case ) {
global $wgGrammarForms;
if ( isset( $wgGrammarForms['ru'][$case][$word] ) ) {
@@ -67,16 +74,18 @@ class LanguageRu extends Language {
* "Сделано $1 {{PLURAL:$1|изменение|изменениÑ|изменений}}"
* message without number
* "ДейÑтвие не может быть выполнено по {{PLURAL:$1|Ñледующей причине|Ñледующим причинам}}:"
+ * @param $count int
+ * @param $forms array
*
+ * @return string
*/
-
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
// if no number with word, then use $form[0] for singular and $form[1] for plural or zero
if ( count( $forms ) === 2 ) return $count == 1 ? $forms[0] : $forms[1];
- // FIXME: CLDR defines 4 plural forms. Form with decimals missing.
+ // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
// See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
$forms = $this->preConvertPlural( $forms, 3 );
@@ -93,10 +102,14 @@ class LanguageRu extends Language {
}
}
- /*
+ /**
* Four-digit number should be without group commas (spaces)
* See manual of style at http://ru.wikipedia.org/wiki/ВикипедиÑ:Оформление_Ñтатей
* So "1 234 567", "12 345" but "1234"
+ *
+ * @param $_ string
+ *
+ * @return string
*/
function commafy( $_ ) {
if ( preg_match( '/^-?\d{1,4}(\.\d*)?$/', $_ ) ) {
diff --git a/languages/classes/LanguageSe.php b/languages/classes/LanguageSe.php
index 3011bc7f..a66957f0 100644
--- a/languages/classes/LanguageSe.php
+++ b/languages/classes/LanguageSe.php
@@ -5,6 +5,12 @@
* @ingroup Language
*/
class LanguageSe extends Language {
+
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageBat_smg.php b/languages/classes/LanguageSgs.php
index 5b6c92a6..8c10182d 100644
--- a/languages/classes/LanguageBat_smg.php
+++ b/languages/classes/LanguageSgs.php
@@ -5,8 +5,13 @@
*
* @author Niklas Laxström
*/
-class LanguageBat_smg extends Language {
+class LanguageSgs extends Language {
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 4 );
diff --git a/languages/classes/LanguageSh.php b/languages/classes/LanguageSh.php
index e62d7ba3..139ad0b6 100644
--- a/languages/classes/LanguageSh.php
+++ b/languages/classes/LanguageSh.php
@@ -5,13 +5,19 @@
* @ingroup Language
*/
class LanguageSh extends Language {
+
+ /**
+ * @param $count string
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
// if no number with word, then use $form[0] for singular and $form[1] for plural or zero
if ( count( $forms ) === 2 ) return $count == 1 ? $forms[0] : $forms[1];
- // FIXME: CLDR defines 4 plural forms. Form with decimals missing.
+ // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
// See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#sh
$forms = $this->preConvertPlural( $forms, 3 );
diff --git a/languages/classes/LanguageSk.php b/languages/classes/LanguageSk.php
index ea74d1ba..eac25f4f 100644
--- a/languages/classes/LanguageSk.php
+++ b/languages/classes/LanguageSk.php
@@ -5,6 +5,12 @@
* @ingroup Language
*/
class LanguageSk extends Language {
+
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 3 );
diff --git a/languages/classes/LanguageSl.php b/languages/classes/LanguageSl.php
index 09138ea5..3e2ca90e 100644
--- a/languages/classes/LanguageSl.php
+++ b/languages/classes/LanguageSl.php
@@ -9,6 +9,11 @@ class LanguageSl extends Language {
# Invoked with {{GRAMMAR:case|word}}
/**
* Cases: rodilnik, dajalnik, tožilnik, mestnik, orodnik
+ *
+ * @param $word string
+ * @param $case string
+ *
+ * @return string
*/
function convertGrammar( $word, $case ) {
global $wgGrammarForms;
@@ -26,6 +31,12 @@ class LanguageSl extends Language {
return $word; # this will return the original value for 'imenovalnik' (nominativ) and all undefined case values
}
+ /**
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 5 );
diff --git a/languages/classes/LanguageSma.php b/languages/classes/LanguageSma.php
index a04c77da..72ca98a1 100644
--- a/languages/classes/LanguageSma.php
+++ b/languages/classes/LanguageSma.php
@@ -5,6 +5,12 @@
* @ingroup Language
*/
class LanguageSma extends Language {
+
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
@@ -12,11 +18,11 @@ class LanguageSma extends Language {
$forms = $this->preConvertPlural( $forms, 3 );
if ( $count == 1 ) {
- $index = 1;
+ $index = 0;
} elseif ( $count == 2 ) {
- $index = 2;
+ $index = 1;
} else {
- $index = 3;
+ $index = 2;
}
return $forms[$index];
}
diff --git a/languages/classes/LanguageSr.php b/languages/classes/LanguageSr.php
index 35c90102..b26a2543 100644
--- a/languages/classes/LanguageSr.php
+++ b/languages/classes/LanguageSr.php
@@ -58,16 +58,23 @@ class SrConverter extends LanguageConverter {
);
}
- /* rules should be defined as -{ekavian | iyekavian-} -or-
- -{code:text | code:text | ...}-
- update: delete all rule parsing because it's not used
- currently, and just produces a couple of bugs
- */
+ /**
+ * rules should be defined as -{ekavian | iyekavian-} -or-
+ * -{code:text | code:text | ...}-
+ *
+ * update: delete all rule parsing because it's not used
+ * currently, and just produces a couple of bugs
+ *
+ * @param $rule string
+ * @param $flags array
+ * @return array
+ */
function parseManualRule( $rule, $flags = array() ) {
if ( in_array( 'T', $flags ) ) {
return parent::parseManualRule( $rule, $flags );
}
+ $carray = array();
// otherwise ignore all formatting
foreach ( $this->mVariants as $v ) {
$carray[$v] = $rule;
@@ -76,11 +83,15 @@ class SrConverter extends LanguageConverter {
return $carray;
}
- /*
+ /**
* A function wrapper:
* - if there is no selected variant, leave the link
* names as they were
* - do not try to find variants for usernames
+ *
+ * @param $link string
+ * @param $nt Title
+ * @param $ignoreOtherCond bool
*/
function findVariantLink( &$link, &$nt, $ignoreOtherCond = false ) {
// check for user namespace
@@ -96,9 +107,14 @@ class SrConverter extends LanguageConverter {
$link = $oldlink;
}
- /*
+ /**
* We want our external link captions to be converted in variants,
* so we return the original text instead -{$text}-, except for URLs
+ *
+ * @param $text string
+ * @param $noParse bool
+ *
+ * @return string
*/
function markNoConversion( $text, $noParse = false ) {
if ( $noParse || preg_match( "/^https?:\/\/|ftp:\/\/|irc:\/\//", $text ) )
@@ -106,9 +122,14 @@ class SrConverter extends LanguageConverter {
return $text;
}
- /*
+ /**
* An ugly function wrapper for parsing Image titles
* (to prevent image name conversion)
+ *
+ * @param $text string
+ * @param $toVariant bool
+ *
+ * @return string
*/
function autoConvert( $text, $toVariant = false ) {
global $wgTitle;
@@ -122,6 +143,11 @@ class SrConverter extends LanguageConverter {
/**
* It translates text into variant, specials:
* - ommiting roman numbers
+ *
+ * @param $text string
+ * @param $toVariant string
+ *
+ * @return string
*/
function translate( $text, $toVariant ) {
$breaks = '[^\w\x80-\xff]';
@@ -175,13 +201,23 @@ class LanguageSr extends LanguageSr_ec {
$wgHooks['ArticleSaveComplete'][] = $this->mConverter;
}
+ /**
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
+ */
function convertPlural( $count, $forms ) {
- if ( !count( $forms ) ) { return ''; }
+ if ( !count( $forms ) ) {
+ return '';
+ }
// if no number with word, then use $form[0] for singular and $form[1] for plural or zero
- if ( count( $forms ) === 2 ) return $count == 1 ? $forms[0] : $forms[1];
+ if ( count( $forms ) === 2 ) {
+ return $count == 1 ? $forms[0] : $forms[1];
+ }
- // FIXME: CLDR defines 4 plural forms. Form with decimals missing.
+ // @todo FIXME: CLDR defines 4 plural forms. Form with decimals missing.
// See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#ru
$forms = $this->preConvertPlural( $forms, 3 );
diff --git a/languages/classes/LanguageSr_ec.php b/languages/classes/LanguageSr_ec.php
index ed447e5e..572a5f3b 100644
--- a/languages/classes/LanguageSr_ec.php
+++ b/languages/classes/LanguageSr_ec.php
@@ -6,6 +6,12 @@
* @ingroup Language
*/
class LanguageSr_ec extends Language {
+
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 3 );
diff --git a/languages/classes/LanguageSr_el.php b/languages/classes/LanguageSr_el.php
index d43772af..3a1f6a6d 100644
--- a/languages/classes/LanguageSr_el.php
+++ b/languages/classes/LanguageSr_el.php
@@ -6,6 +6,12 @@
* @ingroup Language
*/
class LanguageSr_el extends Language {
+
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
$forms = $this->preConvertPlural( $forms, 3 );
diff --git a/languages/classes/LanguageTi.php b/languages/classes/LanguageTi.php
index e37116b1..46a776bf 100644
--- a/languages/classes/LanguageTi.php
+++ b/languages/classes/LanguageTi.php
@@ -7,6 +7,11 @@
class LanguageTi extends Language {
/**
* Use singular form for zero
+ *
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
*/
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageTl.php b/languages/classes/LanguageTl.php
index 4495ddcc..f976bed1 100644
--- a/languages/classes/LanguageTl.php
+++ b/languages/classes/LanguageTl.php
@@ -7,6 +7,11 @@
class LanguageTl extends Language {
/**
* Use singular form for zero
+ *
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
*/
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
diff --git a/languages/classes/LanguageTr.php b/languages/classes/LanguageTr.php
index 245b5b06..cbc1b7e4 100644
--- a/languages/classes/LanguageTr.php
+++ b/languages/classes/LanguageTr.php
@@ -3,9 +3,19 @@
/**
* Turkish (Türkçe)
*
+ * Turkish has two different i, one with a dot and another without a dot. They
+ * are totally different letters in this language, so we have to override the
+ * ucfirst and lcfirst methods.
+ * See http://en.wikipedia.org/wiki/Dotted_and_dotless_I
+ * and @bug 28040
* @ingroup Language
*/
class LanguageTr extends Language {
+
+ /**
+ * @param $string string
+ * @return string
+ */
function ucfirst ( $string ) {
if ( !empty( $string ) && $string[0] == 'i' ) {
return 'Ä°' . substr( $string, 1 );
@@ -13,4 +23,17 @@ class LanguageTr extends Language {
return parent::ucfirst( $string );
}
}
+
+ /**
+ * @param $string string
+ * @return mixed|string
+ */
+ function lcfirst ( $string ) {
+ if ( !empty( $string ) && $string[0] == 'I' ) {
+ return 'ı' . substr( $string, 1 );
+ } else {
+ return parent::lcfirst( $string );
+ }
+ }
+
}
diff --git a/languages/classes/LanguageTyv.php b/languages/classes/LanguageTyv.php
index 9e5b6453..8bca11b2 100644
--- a/languages/classes/LanguageTyv.php
+++ b/languages/classes/LanguageTyv.php
@@ -28,7 +28,7 @@ class LanguageTyv extends Language {
$roundFrontVowels = array( "ө", "ү", "ö", "ü" );
$unroundBackVowels = array( "а", "Ñ‹", "Ñ", "a", "y" );
$roundBackVowels = array( "ё", "о", "у", "ю", "o", "u" );
- $voicedPhonemes = array( "д", "б", "з", "ж", "г", "d", "b", "z", "g" );
+ //$voicedPhonemes = array( "д", "б", "з", "ж", "г", "d", "b", "z", "g" );
$unvoicedPhonemes = array( "Ñ‚", "п", "Ñ", "ш", "к", "ч", "Ñ…", "t", "p", "s", "k", "x" );
$directiveUnvoicedStems = array( "Ñ‚", "п", "Ñ", "ш", "к", "ч", "Ñ…", "л", "м", "н", "Ò£", "t", "p", "s", "k", "x", "l", "m", "n", "Å‹" );
$directiveVoicedStems = array( "д", "б", "з", "ж", "г", "р", "й", "d", "b", "z", "g", "r", "j" );
diff --git a/languages/classes/LanguageUk.php b/languages/classes/LanguageUk.php
index 6c0cf8da..206c5aa3 100644
--- a/languages/classes/LanguageUk.php
+++ b/languages/classes/LanguageUk.php
@@ -5,8 +5,15 @@
* @ingroup Language
*/
class LanguageUk extends Language {
- # Convert from the nominative form of a noun to some other case
- # Invoked with {{grammar:case|word}}
+
+ /**
+ * Convert from the nominative form of a noun to some other case
+ * Invoked with {{grammar:case|word}}
+ *
+ * @param $word string
+ * @param $case string
+ * @return string
+ */
function convertGrammar( $word, $case ) {
global $wgGrammarForms;
if ( isset( $wgGrammarForms['uk'][$case][$word] ) ) {
@@ -56,13 +63,18 @@ class LanguageUk extends Language {
return $word;
}
+ /**
+ * @param $count int
+ * @param $forms array
+ * @return string
+ */
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
// if no number with word, then use $form[0] for singular and $form[1] for plural or zero
if ( count( $forms ) === 2 ) return $count == 1 ? $forms[0] : $forms[1];
- // FIXME: CLDR defines 4 plural forms. Form for decimals is missing/
+ // @todo FIXME: CLDR defines 4 plural forms. Form for decimals is missing/
// See http://unicode.org/repos/cldr-tmp/trunk/diff/supplemental/language_plural_rules.html#uk
$forms = $this->preConvertPlural( $forms, 3 );
@@ -79,8 +91,12 @@ class LanguageUk extends Language {
}
}
- /*
+ /**
* Ukrainian numeric format is "12 345,67" but "1234,56"
+ *
+ * @param $_ string
+ *
+ * @return string
*/
function commafy( $_ ) {
if ( !preg_match( '/^\-?\d{1,4}(\.\d+)?$/', $_ ) ) {
diff --git a/languages/classes/LanguageWa.php b/languages/classes/LanguageWa.php
index 0cb439d0..4a186638 100644
--- a/languages/classes/LanguageWa.php
+++ b/languages/classes/LanguageWa.php
@@ -11,6 +11,11 @@
class LanguageWa extends Language {
/**
* Use singular form for zero
+ *
+ * @param $count int
+ * @param $forms array
+ *
+ * @return string
*/
function convertPlural( $count, $forms ) {
if ( !count( $forms ) ) { return ''; }
@@ -19,11 +24,17 @@ class LanguageWa extends Language {
return ( $count <= 1 ) ? $forms[0] : $forms[1];
}
- ## #
- ## # Dates in Walloon are "1î d' <monthname>" for 1st of the month,
- ## # "<day> di <monthname>" for months starting by a consoun, and
- ## # "<day> d' <monthname>" for months starting with a vowel
- ## #
+ /**
+ * Dates in Walloon are "1î d' <monthname>" for 1st of the month,
+ * "<day> di <monthname>" for months starting by a consoun, and
+ * "<day> d' <monthname>" for months starting with a vowel
+ *
+ * @param $ts string
+ * @param $adj bool
+ * @param $format bool
+ * @param $tc bool
+ * @return string
+ */
function date( $ts, $adj = false, $format = true, $tc = false ) {
$ts = wfTimestamp( TS_MW, $ts );
if ( $adj ) { $ts = $this->userAdjust( $ts, $tc ); }
@@ -51,10 +62,10 @@ class LanguageWa extends Language {
if ( $n == 1 ) {
$d = "1î d' " . $this->getMonthName( $m ) .
" " . substr( $ts, 0, 4 );
- } else if ( $n == 2 || $n == 3 || $n == 20 || $n == 22 || $n == 23 ) {
+ } elseif ( $n == 2 || $n == 3 || $n == 20 || $n == 22 || $n == 23 ) {
$d = ( 0 + $n ) . " d' " . $this->getMonthName( $m ) .
" " . substr( $ts, 0, 4 );
- } else if ( $m == 4 || $m == 8 || $m == 10 ) {
+ } elseif ( $m == 4 || $m == 8 || $m == 10 ) {
$d = ( 0 + $n ) . " d' " . $this->getMonthName( $m ) .
" " . substr( $ts, 0, 4 );
} else {
@@ -64,6 +75,13 @@ class LanguageWa extends Language {
return $d;
}
+ /**
+ * @param $ts string
+ * @param $adj bool
+ * @param $format bool
+ * @param $tc bool
+ * @return string
+ */
function timeanddate( $ts, $adj = false, $format = true, $tc = false ) {
if ( $adj ) { $ts = $this->userAdjust( $ts, $tc ); }
$datePreference = $this->dateFormat( $format );
diff --git a/languages/classes/LanguageYue.php b/languages/classes/LanguageYue.php
index aff3d29e..5492529e 100644
--- a/languages/classes/LanguageYue.php
+++ b/languages/classes/LanguageYue.php
@@ -5,6 +5,10 @@
* @ingroup Language
*/
class LanguageYue extends Language {
+
+ /**
+ * @return bool
+ */
function hasWordBreaks() {
return false;
}
@@ -12,7 +16,10 @@ class LanguageYue extends Language {
/**
* Eventually this should be a word segmentation;
* for now just treat each character as a word.
- * @todo Fixme: only do this for Han characters...
+ * @todo FIXME: Only do this for Han characters...
+ *
+ * @param $string string
+ * @return string
*/
function segmentByWord( $string ) {
$reg = "/([\\xc0-\\xff][\\x80-\\xbf]*)/";
@@ -20,6 +27,10 @@ class LanguageYue extends Language {
return $s;
}
+ /**
+ * @param $string
+ * @return string
+ */
function normalizeForSearch( $string ) {
wfProfileIn( __METHOD__ );
diff --git a/languages/classes/LanguageZh.php b/languages/classes/LanguageZh.php
index 0055a33b..d69929de 100644
--- a/languages/classes/LanguageZh.php
+++ b/languages/classes/LanguageZh.php
@@ -8,6 +8,14 @@ require_once( dirname( __FILE__ ) . '/LanguageZh_hans.php' );
*/
class ZhConverter extends LanguageConverter {
+ /**
+ * @param $langobj Language
+ * @param $maincode string
+ * @param $variants array
+ * @param $variantfallbacks array
+ * @param $flags array
+ * @param $manualLevel array
+ */
function __construct( $langobj, $maincode,
$variants = array(),
$variantfallbacks = array(),
@@ -58,14 +66,24 @@ class ZhConverter extends LanguageConverter {
$this->mTables['zh-tw']->merge( $this->mTables['zh-hant'] );
}
- /* there shouldn't be any latin text in Chinese conversion, so no need
- to mark anything.
- $noParse is there for compatibility with LanguageConvert::markNoConversion
+ /**
+ * there shouldn't be any latin text in Chinese conversion, so no need
+ * to mark anything.
+ * $noParse is there for compatibility with LanguageConvert::markNoConversion
+ *
+ * @param $text string
+ * @param $noParse bool
+ *
+ * @return string
*/
function markNoConversion( $text, $noParse = false ) {
return $text;
}
+ /**
+ * @param $key string
+ * @return String
+ */
function convertCategoryKey( $key ) {
return $this->autoConvert( $key, 'zh' );
}
@@ -110,13 +128,22 @@ class LanguageZh extends LanguageZh_hans {
$wgHooks['ArticleSaveComplete'][] = $this->mConverter;
}
- # this should give much better diff info
+ /**
+ * this should give much better diff info
+ *
+ * @param $text string
+ * @return string
+ */
function segmentForDiff( $text ) {
return preg_replace(
"/([\\xc0-\\xff][\\x80-\\xbf]*)/e",
"' ' .\"$1\"", $text );
}
+ /**
+ * @param $text string
+ * @return string
+ */
function unsegmentForDiff( $text ) {
return preg_replace(
"/ ([\\xc0-\\xff][\\x80-\\xbf]*)/e",
@@ -145,6 +172,10 @@ class LanguageZh extends LanguageZh_hans {
}
+ /**
+ * @param $termsArray array
+ * @return array
+ */
function convertForSearchResult( $termsArray ) {
$terms = implode( '|', $termsArray );
$terms = self::convertDoubleWidth( $terms );
diff --git a/languages/classes/LanguageZh_hans.php b/languages/classes/LanguageZh_hans.php
index a65162bc..671a16e7 100644
--- a/languages/classes/LanguageZh_hans.php
+++ b/languages/classes/LanguageZh_hans.php
@@ -6,6 +6,10 @@
* @ingroup Language
*/
class LanguageZh_hans extends Language {
+
+ /**
+ * @return bool
+ */
function hasWordBreaks() {
return false;
}
@@ -13,7 +17,11 @@ class LanguageZh_hans extends Language {
/**
* Eventually this should be a word segmentation;
* for now just treat each character as a word.
- * @todo Fixme: only do this for Han characters...
+ * @todo FIXME: Only do this for Han characters...
+ *
+ * @param $string string
+ *
+ * @return string
*/
function segmentByWord( $string ) {
$reg = "/([\\xc0-\\xff][\\x80-\\xbf]*)/";
@@ -21,6 +29,10 @@ class LanguageZh_hans extends Language {
return $s;
}
+ /**
+ * @param $s
+ * @return string
+ */
function normalizeForSearch( $s ) {
wfProfileIn( __METHOD__ );
diff --git a/languages/messages/MessagesAb.php b/languages/messages/MessagesAb.php
index efb0c01a..1fd2c9c7 100644
--- a/languages/messages/MessagesAb.php
+++ b/languages/messages/MessagesAb.php
@@ -57,17 +57,17 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Recentchanges' => array( 'ÐрҽеираҾыцқәа' ),
- 'Upload' => array( 'Ðҭагалара' ),
- 'Newimages' => array( 'ÐфаилқәаҾыц' ),
- 'Randompage' => array( 'Машәырлатәи' ),
- 'Newpages' => array( 'ÐдаҟьақәаҾыц' ),
- 'Specialpages' => array( 'ЦаÑтәиÐдаҟьақәа' ),
'Categories' => array( 'Ðкатегориақәа' ),
+ 'Mycontributions' => array( 'Ðрхиарақәа' ),
'Mypage' => array( 'Садаҟьа' ),
'Mytalk' => array( 'Сахцәажәара' ),
- 'Mycontributions' => array( 'Ðрхиарақәа' ),
+ 'Newimages' => array( 'ÐфаилқәаҾыц' ),
+ 'Newpages' => array( 'ÐдаҟьақәаҾыц' ),
+ 'Randompage' => array( 'Машәырлатәи' ),
+ 'Recentchanges' => array( 'ÐрҽеираҾыцқәа' ),
'Search' => array( 'Ðҧшаара' ),
+ 'Specialpages' => array( 'ЦаÑтәиÐдаҟьақәа' ),
+ 'Upload' => array( 'Ðҭагалара' ),
);
$magicWords = array(
diff --git a/languages/messages/MessagesAce.php b/languages/messages/MessagesAce.php
index 5467eeee..a3209216 100644
--- a/languages/messages/MessagesAce.php
+++ b/languages/messages/MessagesAce.php
@@ -63,94 +63,94 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Peuninah_ganda' ),
+ 'Activeusers' => array( 'Ureueng_nguy_udep' ),
+ 'Allmessages' => array( 'MandumPeusan' ),
+ 'Allpages' => array( 'Dapeuta_on' ),
+ 'Ancientpages' => array( 'Teunuleh_trep' ),
+ 'Blankpage' => array( 'On_soh' ),
+ 'Block' => array( 'Theun_ureueng_nguy' ),
+ 'Blockme' => array( 'Theun_lon' ),
+ 'Booksources' => array( 'Ne_kitab' ),
'BrokenRedirects' => array( 'Peuninah_reuloh' ),
- 'Disambiguations' => array( 'Hana_jeulaih' ),
- 'Userlogin' => array( 'Tamong_log' ),
- 'Userlogout' => array( 'Teubiet_log' ),
+ 'Categories' => array( 'Dapeuta_kawan' ),
+ 'ChangePassword' => array( 'Gantoe_lageuem_rahsia' ),
+ 'Confirmemail' => array( 'Peunyo_surat-e' ),
+ 'Contributions' => array( 'Peuneugot_ureueng_nguy' ),
'CreateAccount' => array( 'Peugot_nan' ),
- 'Preferences' => array( 'Geunalak' ),
- 'Watchlist' => array( 'Dapeuta_kalon' ),
- 'Recentchanges' => array( 'Neuubah_baro' ),
- 'Upload' => array( 'Pasoe' ),
+ 'Deadendpages' => array( 'On_mate' ),
+ 'DeletedContributions' => array( 'Peuneugot_nyang_geusampoh' ),
+ 'Disambiguations' => array( 'Hana_jeulaih' ),
+ 'DoubleRedirects' => array( 'Peuninah_ganda' ),
+ 'Emailuser' => array( 'Surat-e_ureueng_nguy' ),
+ 'Export' => array( 'Peuteubiet' ),
+ 'Fewestrevisions' => array( 'Neuubah_paleng_dit' ),
+ 'FileDuplicateSearch' => array( 'Mita_beureukaih_saban' ),
+ 'Filepath' => array( 'Neuduek_beureukaih' ),
+ 'Import' => array( 'Peutamong' ),
+ 'Invalidateemail' => array( 'Peubateue_peusah_surat-e' ),
+ 'BlockList' => array( 'Dapeuta_neutheun' ),
+ 'LinkSearch' => array( 'Mita_hubong' ),
+ 'Listadmins' => array( 'Dapeuta_ureueng_uroh' ),
+ 'Listbots' => array( 'Dapeuta_bot' ),
'Listfiles' => array( 'Dapeuta_beureukaih' ),
- 'Newimages' => array( 'Beureukaih_baro' ),
- 'Listusers' => array( 'Dapeuta_ureueng_nguy' ),
'Listgrouprights' => array( 'Dapeuta_khut_(hak)_kawan' ),
- 'Statistics' => array( 'Keunira' ),
- 'Randompage' => array( 'On_beurangkari' ),
+ 'Listredirects' => array( 'Dapeuta_peuninah' ),
+ 'Listusers' => array( 'Dapeuta_ureueng_nguy' ),
+ 'Lockdb' => array( 'Gunci_basis_data' ),
+ 'Log' => array( 'Ceunatat' ),
'Lonelypages' => array( 'On_hana_soe_po' ),
- 'Uncategorizedpages' => array( 'On_hana_roh_lam_kawan' ),
- 'Uncategorizedcategories' => array( 'Kawan_hana_roh_lam_kawan' ),
- 'Uncategorizedimages' => array( 'Beureukaih_hana_roh_lam_kawan' ),
- 'Uncategorizedtemplates' => array( 'Templat_hana_roh_lam_kawan' ),
- 'Unusedcategories' => array( 'Kawan_soh' ),
- 'Unusedimages' => array( 'Beureukaih_hana_teunguy' ),
- 'Wantedpages' => array( 'On_nyang_geuh\'eut' ),
- 'Wantedcategories' => array( 'Kawan_nyang_geuh\'eut' ),
- 'Wantedfiles' => array( 'Beureukaih_nyang_geuh\'eut' ),
- 'Wantedtemplates' => array( 'Templat_nyang_geuh\'eut' ),
+ 'Longpages' => array( 'On_panyang' ),
+ 'MergeHistory' => array( 'Riwayat_peusapat' ),
+ 'MIMEsearch' => array( 'Mita_MIME' ),
+ 'Mostcategories' => array( 'Kawan_paleng_le' ),
+ 'Mostimages' => array( 'Beureukaih_nyang_paleng_le_geunguy' ),
'Mostlinked' => array( 'On_nyang_paleng_le_geunguy' ),
'Mostlinkedcategories' => array( 'Kawan_nyang_paleng_le_geunguy' ),
'Mostlinkedtemplates' => array( 'Templat_nyang_paleng_le_geunguy' ),
- 'Mostimages' => array( 'Beureukaih_nyang_paleng_le_geunguy' ),
- 'Mostcategories' => array( 'Kawan_paleng_le' ),
'Mostrevisions' => array( 'Neuubah_paleng_le' ),
- 'Fewestrevisions' => array( 'Neuubah_paleng_dit' ),
- 'Shortpages' => array( 'On_paneuek' ),
- 'Longpages' => array( 'On_panyang' ),
+ 'Movepage' => array( 'Peupinah_on' ),
+ 'Mycontributions' => array( 'Atra_lon_peugot' ),
+ 'Mypage' => array( 'On_lon' ),
+ 'Mytalk' => array( 'Peugah_haba_lon' ),
+ 'Newimages' => array( 'Beureukaih_baro' ),
'Newpages' => array( 'On_baro' ),
- 'Ancientpages' => array( 'Teunuleh_trep' ),
- 'Deadendpages' => array( 'On_mate' ),
+ 'Popularpages' => array( 'On_meuceuhu' ),
+ 'Preferences' => array( 'Geunalak' ),
+ 'Prefixindex' => array( 'Dapeuta_neuaway' ),
'Protectedpages' => array( 'On_nyang_geupeulindong' ),
'Protectedtitles' => array( 'Nan_nyang_geupeulindong' ),
- 'Allpages' => array( 'Dapeuta_on' ),
- 'Prefixindex' => array( 'Dapeuta_neuaway' ),
- 'Ipblocklist' => array( 'Dapeuta_neutheun' ),
- 'Specialpages' => array( 'On_khusoih' ),
- 'Contributions' => array( 'Peuneugot_ureueng_nguy' ),
- 'Emailuser' => array( 'Surat-e_ureueng_nguy' ),
- 'Confirmemail' => array( 'Peunyo_surat-e' ),
- 'Whatlinkshere' => array( 'Hubong_gisa' ),
+ 'Randompage' => array( 'On_beurangkari' ),
+ 'Randomredirect' => array( 'Peuninah_beurangkari' ),
+ 'Recentchanges' => array( 'Neuubah_baro' ),
'Recentchangeslinked' => array( 'Neuubah_meuhubong' ),
- 'Movepage' => array( 'Peupinah_on' ),
- 'Blockme' => array( 'Theun_lon' ),
- 'Booksources' => array( 'Ne_kitab' ),
- 'Categories' => array( 'Dapeuta_kawan' ),
- 'Export' => array( 'Peuteubiet' ),
- 'Version' => array( 'Seunalen' ),
- 'Allmessages' => array( 'MandumPeusan' ),
- 'Log' => array( 'Ceunatat' ),
- 'Blockip' => array( 'Theun_ureueng_nguy' ),
+ 'Revisiondelete' => array( 'Sampoh_peugot_ulang' ),
+ 'Search' => array( 'Mita' ),
+ 'Shortpages' => array( 'On_paneuek' ),
+ 'Specialpages' => array( 'On_khusoih' ),
+ 'Statistics' => array( 'Keunira' ),
+ 'Tags' => array( 'Tag' ),
+ 'Uncategorizedcategories' => array( 'Kawan_hana_roh_lam_kawan' ),
+ 'Uncategorizedimages' => array( 'Beureukaih_hana_roh_lam_kawan' ),
+ 'Uncategorizedpages' => array( 'On_hana_roh_lam_kawan' ),
+ 'Uncategorizedtemplates' => array( 'Templat_hana_roh_lam_kawan' ),
'Undelete' => array( 'Peubateue_sampoh' ),
- 'Import' => array( 'Peutamong' ),
- 'Lockdb' => array( 'Gunci_basis_data' ),
'Unlockdb' => array( 'Peuhah_gunci_basis_data' ),
- 'Userrights' => array( 'Khut_(hak)_ureueng_nguy' ),
- 'MIMEsearch' => array( 'Mita_MIME' ),
- 'FileDuplicateSearch' => array( 'Mita_beureukaih_saban' ),
- 'Unwatchedpages' => array( 'On_hana_soe_kalon' ),
- 'Listredirects' => array( 'Dapeuta_peuninah' ),
- 'Revisiondelete' => array( 'Sampoh_peugot_ulang' ),
+ 'Unusedcategories' => array( 'Kawan_soh' ),
+ 'Unusedimages' => array( 'Beureukaih_hana_teunguy' ),
'Unusedtemplates' => array( 'Templat_hana_soe_nguy' ),
- 'Randomredirect' => array( 'Peuninah_beurangkari' ),
- 'Mypage' => array( 'On_lon' ),
- 'Mytalk' => array( 'Peugah_haba_lon' ),
- 'Mycontributions' => array( 'Atra_lon_peugot' ),
- 'Listadmins' => array( 'Dapeuta_ureueng_uroh' ),
- 'Listbots' => array( 'Dapeuta_bot' ),
- 'Popularpages' => array( 'On_meuceuhu' ),
- 'Search' => array( 'Mita' ),
- 'Resetpass' => array( 'Gantoe_lageuem_rahsia' ),
+ 'Unwatchedpages' => array( 'On_hana_soe_kalon' ),
+ 'Upload' => array( 'Pasoe' ),
+ 'Userlogin' => array( 'Tamong_log' ),
+ 'Userlogout' => array( 'Teubiet_log' ),
+ 'Userrights' => array( 'Khut_(hak)_ureueng_nguy' ),
+ 'Version' => array( 'Seunalen' ),
+ 'Wantedcategories' => array( 'Kawan_nyang_geuh\'eut' ),
+ 'Wantedfiles' => array( 'Beureukaih_nyang_geuh\'eut' ),
+ 'Wantedpages' => array( 'On_nyang_geuh\'eut' ),
+ 'Wantedtemplates' => array( 'Templat_nyang_geuh\'eut' ),
+ 'Watchlist' => array( 'Dapeuta_kalon' ),
+ 'Whatlinkshere' => array( 'Hubong_gisa' ),
'Withoutinterwiki' => array( 'Hana_interwiki' ),
- 'MergeHistory' => array( 'Riwayat_peusapat' ),
- 'Filepath' => array( 'Neuduek_beureukaih' ),
- 'Invalidateemail' => array( 'Peubateue_peusah_surat-e' ),
- 'Blankpage' => array( 'On_soh' ),
- 'LinkSearch' => array( 'Mita_hubong' ),
- 'DeletedContributions' => array( 'Peuneugot_nyang_geusampoh' ),
- 'Tags' => array( 'Tag' ),
- 'Activeusers' => array( 'Ureueng_nguy_udep' ),
);
$messages = array(
@@ -313,7 +313,6 @@ $messages = array(
'searcharticle' => 'Jak u',
'history' => 'Atra u likot',
'history_short' => 'Atra u likôt',
-'info_short' => 'Haba',
'printableversion' => 'Seunalén citak',
'permalink' => 'Hubông teutap',
'print' => 'Rakam',
@@ -440,7 +439,7 @@ Nan Droeneuh ka teupeugot. Neuato laju [[Special:Preferences|peue nyang neugalak
'nosuchuser' => 'Hana ureuëng nguy ngön nan "$1".
Nan ureuëng nguy jipeubida harah rayek.
Tulông neuparéksa keulayi neuija Droëneuh, atawa [[Special:UserLogin/signup|neudapeuta barô]].',
-'nosuchusershort' => 'Hana ureuëng nguy ngön nan "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Hana ureuëng nguy ngön nan "$1".
Préksa keulayi neu’ija Droëneuh.',
'nouserspecified' => 'Neupasoë nan Droëneuh.',
'wrongpassword' => 'Lageuëm nyang neupasoë salah. Neuci lom.',
@@ -456,7 +455,7 @@ Droëneuh geupeusaran keu neutamong sigra, lheuëh nyan neugantoë lageuëm rahs
'eauthentsent' => 'Saboh surat èlèktronik keu peunyoë ka geukirém u alamat surat èlèktronik Droëneuh. Droëneuh beuneuseutöt préntah lam surat nyan keu neupeunyoë meunyo alamat nyan nakeuh beutôy atra Droëneuh. {{SITENAME}} h‘an geupeuudép surat Droëneuh meunyo langkah nyoë hana neupeulaku lom.',
'loginlanguagelabel' => 'Bahsa: $1',
-# Password reset dialog
+# Change password dialog
'retypenew' => 'Pasoë teuma lageuëm barô:',
# Edit page toolbar
@@ -470,8 +469,6 @@ Droëneuh geupeusaran keu neutamong sigra, lheuëh nyan neugantoë lageuëm rahs
'extlink_tip' => 'Hubông luwa (bèk tuwoë bôh http:// bak away)',
'headline_sample' => 'Naseukah nan',
'headline_tip' => 'Aneuk beunagi tingkat 1',
-'math_sample' => 'Pasoë rumuh nyoë pat',
-'math_tip' => 'Rumuh matematik (LaTeX)',
'nowiki_sample' => 'Bèk format naseukah nyoë',
'nowiki_tip' => 'Bèk seutot beuntuk wiki',
'image_tip' => 'Pasoë beureukah',
@@ -778,9 +775,7 @@ Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë
# Watchlist
'watchlist' => 'Dapeuta keunalön lôn',
'mywatchlist' => 'Keunalön',
-'addedwatch' => 'Ka geupeutamah u dapeuta kalön',
'addedwatchtext' => "Ôn \"[[:\$1]]\" ka geupeutamah u [[Special:Watchlist|dapeuta keunalön]] Droëneuh. Neu’ubah-neu’ubah bak masa u keuë bak ôn nyan ngön bak ôn peugah habajih, euntreuk leumah nyoë pat. Ôn nyan euntreuk geupeuleumah ''teubay'' bak [[Special:RecentChanges|dapeuta neu’ubah paléng barô]] mangat leubèh mudah leumah.",
-'removedwatch' => 'Ka geusampôh nibak dapeuta keunalön',
'removedwatchtext' => 'Ôn "[[:$1]]" ka geusampôh nibak [[Special:Watchlist|dapeuta keunalön]] Droëneuh.',
'watch' => 'Kalön',
'watchthispage' => 'Kalön ôn nyoë',
@@ -798,7 +793,7 @@ Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë
'historywarning' => 'Ingat: Ôn nyang hawa neusampôh na riwayat:',
'confirmdeletetext' => 'Droëneuh neuk neusampôh ôn atawa beureukah nyoë keu sabé. Meunan cit ban mandum riwayatjih nibak basis data. Neupeupaseuti meunyo Droëneuh cit keubiët meung neusampôh, neutupeuë ban mandum akébatjih, ngön peuë nyang neupeulaku nyoë nakeuh meunurôt [[{{MediaWiki:Policy-url}}|kebijakan{{SITENAME}}]].',
'actioncomplete' => 'Seuleusoë',
-'deletedtext' => '"<nowiki>$1</nowiki>" ka geusampôh. Eu $2 keu log paléng barô bak ôn nyang ka geusampôh.',
+'deletedtext' => '"$1" ka geusampôh. Eu $2 keu log paléng barô bak ôn nyang ka geusampôh.',
'deletedarticle' => 'sampôh "[[$1]]"',
'dellogpage' => 'Log seunampoh',
'deletecomment' => 'Choë:',
@@ -817,7 +812,7 @@ Meunyo neupasoë, euntreuk nan Droëneuh nyan geupeuleumah mangat jitupeuë soë
'protectexpiry' => 'Maté tanggay:',
'protect_expiry_invalid' => 'Watèë maté tanggay hana sah.',
'protect_expiry_old' => 'Watèë maté tanggay nakeuh bak masa u likôt.',
-'protect-text' => "Droëneuh jeuët neu’eu atawa neugantoë tingkat lindông keu ôn '''<nowiki>$1</nowiki>''' nyoë pat.",
+'protect-text' => "Droëneuh jeuët neu’eu atawa neugantoë tingkat lindông keu ôn '''$1''' nyoë pat.",
'protect-locked-access' => "Nan dapeuta Droëneuh hana hak keu jak gantoë tingkat lindông ôn. Nyoë pat nakeuh konfigurasi atra jinoë keu ôn '''$1''':",
'protect-cascadeon' => 'Ôn nyoë teungöh geulindông kareuna geupeuseureuta lam {{PLURAL:$1|ôn|ôn-ôn}} nyoë nyang ka geulindông ngön peuniléh lindông meuturôt geupeuudép.
Droëneuh jeuët neugantoë tingkat lindông keu ôn nyoë, tapi nyan hana peungarôh keu lindông meuturôt.',
@@ -995,11 +990,10 @@ Hubông teutap keu revisi ôn nyoë',
'nextdiff' => 'Geunantoë lheuëh nyan →',
# Media information
-'file-info-size' => '$1 × $2 piksel, rayek beureukah: $3, MIME jeunèh: $4',
-'file-nohires' => '<small>Hana resolusi nyang leubèh manyang.</small>',
-'svg-long-desc' => 'Beureukah SVG, nominal $1 x $2 piksel, rayek beureukah: $3',
-'show-big-image' => 'Resolusi peunoh',
-'show-big-image-thumb' => '<small>Rayek atra nyoë: $1 x $2 piksel</small>',
+'file-info-size' => '$1 × $2 piksel, rayek beureukah: $3, MIME jeunèh: $4',
+'file-nohires' => '<small>Hana resolusi nyang leubèh manyang.</small>',
+'svg-long-desc' => 'Beureukah SVG, nominal $1 x $2 piksel, rayek beureukah: $3',
+'show-big-image' => 'Resolusi peunoh',
# Special:NewFiles
'newimages' => 'Beureukah barô',
@@ -1023,11 +1017,17 @@ Hubông-hubông lheuëh nyan bak baréh nyang saban geukira sibagoë keucuali, n
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Andam beureukah nyoë ngön aplikasi luwa',
-'edit-externally-help' => '(Ngiëng [http://meta.wikimedia.org/wiki/Help:External_editors arah atô] keu beurita leubèh lanjôt)',
+'edit-externally-help' => '(Ngiëng [//meta.wikimedia.org/wiki/Help:External_editors arah atô] keu beurita leubèh lanjôt)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ban dum',
diff --git a/languages/messages/MessagesAf.php b/languages/messages/MessagesAf.php
index 3631d8e7..d7b4777d 100644
--- a/languages/messages/MessagesAf.php
+++ b/languages/messages/MessagesAf.php
@@ -18,6 +18,7 @@
* @author Reedy
* @author SPQRobin
* @author Spacebirdy
+ * @author Xethron
*/
$namespaceNames = array(
@@ -107,102 +108,102 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Dubbele_aansture', 'Dubbeleaansture' ),
+ 'Activeusers' => array( 'AktieweGebruikers' ),
+ 'Allmessages' => array( 'Stelselboodskappe', 'Alle_stelselboodskappe', 'Allestelselboodskappe', 'Boodskappe' ),
+ 'Allpages' => array( 'Alle_bladsye', 'Allebladsye' ),
+ 'Ancientpages' => array( 'OuBladsye' ),
+ 'Blankpage' => array( 'SkoonBladsy' ),
+ 'Block' => array( 'BlokIP' ),
+ 'Blockme' => array( 'BlokMy' ),
+ 'Booksources' => array( 'Boekbronne' ),
'BrokenRedirects' => array( 'Stukkende_aansture', 'Stukkendeaansture' ),
- 'Disambiguations' => array( 'Dubbelsinnig' ),
- 'Userlogin' => array( 'Teken_in', 'Tekenin' ),
- 'Userlogout' => array( 'Teken_uit', 'Tekenuit' ),
+ 'Categories' => array( 'Kategorieë' ),
+ 'ChangePassword' => array( 'HerstelWagwoord' ),
+ 'Confirmemail' => array( 'Bevestig_e-posadres', 'Bevestige-posadres', 'Bevestig_eposadres', 'Bevestigeposadres' ),
+ 'Contributions' => array( 'Bydraes', 'Gebruikersbydraes' ),
'CreateAccount' => array( 'SkepRekening', 'MaakGebruiker' ),
- 'Preferences' => array( 'Voorkeure' ),
- 'Watchlist' => array( 'Dophoulys' ),
- 'Recentchanges' => array( 'Onlangse_wysigings', 'Onlangsewysigings' ),
- 'Upload' => array( 'Laai', 'Oplaai' ),
+ 'Deadendpages' => array( 'DoodloopBladsye' ),
+ 'DeletedContributions' => array( 'GeskrapteBydraes' ),
+ 'Disambiguations' => array( 'Dubbelsinnig' ),
+ 'DoubleRedirects' => array( 'Dubbele_aansture', 'Dubbeleaansture' ),
+ 'Emailuser' => array( 'Stuur_e-pos', 'Stuure-pos', 'Stuur_epos', 'Stuurepos' ),
+ 'Export' => array( 'Eksporteer' ),
+ 'Fewestrevisions' => array( 'MinsteWysigings' ),
+ 'FileDuplicateSearch' => array( 'LerDuplikaatSoek' ),
+ 'Filepath' => array( 'Lêerpad' ),
+ 'Import' => array( 'Importeer' ),
+ 'Invalidateemail' => array( 'OngeldigeEpos' ),
+ 'BlockList' => array( 'IPBlokLys' ),
+ 'LinkSearch' => array( 'SkakelSoektog' ),
+ 'Listadmins' => array( 'LysAdministrateurs' ),
+ 'Listbots' => array( 'LysRobotte' ),
'Listfiles' => array( 'Beeldelys', 'Prentelys', 'Lêerslys' ),
- 'Newimages' => array( 'Nuwe_beelde', 'Nuwebeelde', 'Nuwe_lêers', 'Nuwelêers' ),
- 'Listusers' => array( 'Gebruikerslys', 'Lysgebruikers' ),
'Listgrouprights' => array( 'LysGroepRegte' ),
- 'Statistics' => array( 'Statistiek' ),
- 'Randompage' => array( 'Lukraak', 'Lukrakebladsy' ),
+ 'Listredirects' => array( 'LysAansture' ),
+ 'Listusers' => array( 'Gebruikerslys', 'Lysgebruikers' ),
+ 'Lockdb' => array( 'SluitDB' ),
+ 'Log' => array( 'Logboek', 'Logboeke' ),
'Lonelypages' => array( 'EensaamBladsye' ),
- 'Uncategorizedpages' => array( 'OngekategoriseerdeBladsye' ),
- 'Uncategorizedcategories' => array( 'OngekategoriseerdeKategorieë' ),
- 'Uncategorizedimages' => array( 'OngekategoriseerdeBeelde' ),
- 'Uncategorizedtemplates' => array( 'OngekategoriseerdeSjablone' ),
- 'Unusedcategories' => array( 'OngebruikdeKategorieë' ),
- 'Unusedimages' => array( 'OngebruikdeBeelde' ),
- 'Wantedpages' => array( 'GesoekdeBladsye', 'GebreekteSkakels' ),
- 'Wantedcategories' => array( 'GesoekteKategorieë' ),
- 'Wantedfiles' => array( 'GesoekteLêers' ),
- 'Wantedtemplates' => array( 'GesoekteSjablone' ),
+ 'Longpages' => array( 'LangBladsye' ),
+ 'MergeHistory' => array( 'VersmeltGeskiedenis' ),
+ 'MIMEsearch' => array( 'MIME-soek', 'MIMEsoek', 'MIME_soek' ),
+ 'Mostcategories' => array( 'MeesteKategorieë' ),
+ 'Mostimages' => array( 'MeesteBeelde' ),
'Mostlinked' => array( 'MeeteGeskakel' ),
'Mostlinkedcategories' => array( 'MeesGeskakeldeKategorieë' ),
'Mostlinkedtemplates' => array( 'MeesGeskakeldeSjablone' ),
- 'Mostimages' => array( 'MeesteBeelde' ),
- 'Mostcategories' => array( 'MeesteKategorieë' ),
'Mostrevisions' => array( 'MeesteWysigings' ),
- 'Fewestrevisions' => array( 'MinsteWysigings' ),
- 'Shortpages' => array( 'KortBladsye' ),
- 'Longpages' => array( 'LangBladsye' ),
+ 'Movepage' => array( 'Skuif_bladsy', 'Skuifbladsy' ),
+ 'Mycontributions' => array( 'Mybydrae' ),
+ 'Mypage' => array( 'MyBladsy' ),
+ 'Mytalk' => array( 'Mybespreking', 'Mybesprekings' ),
+ 'Newimages' => array( 'Nuwe_beelde', 'Nuwebeelde', 'Nuwe_lêers', 'Nuwelêers' ),
'Newpages' => array( 'Nuwe_bladsye', 'Nuwebladsye' ),
- 'Ancientpages' => array( 'OuBladsye' ),
- 'Deadendpages' => array( 'DoodloopBladsye' ),
+ 'Popularpages' => array( 'PopulêreBladsye' ),
+ 'Preferences' => array( 'Voorkeure' ),
+ 'Prefixindex' => array( 'VoorvoegselIndeks' ),
'Protectedpages' => array( 'BeskermdeBladsye' ),
'Protectedtitles' => array( 'BeskermdeTitels' ),
- 'Allpages' => array( 'Alle_bladsye', 'Allebladsye' ),
- 'Prefixindex' => array( 'VoorvoegselIndeks' ),
- 'Ipblocklist' => array( 'IPBlokLys' ),
- 'Unblock' => array( 'Deblokkeer' ),
- 'Specialpages' => array( 'Spesiale_bladsye', 'Spesialebladsye' ),
- 'Contributions' => array( 'Bydraes', 'Gebruikersbydraes' ),
- 'Emailuser' => array( 'Stuur_e-pos', 'Stuure-pos', 'Stuur_epos', 'Stuurepos' ),
- 'Confirmemail' => array( 'Bevestig_e-posadres', 'Bevestige-posadres', 'Bevestig_eposadres', 'Bevestigeposadres' ),
- 'Whatlinkshere' => array( 'Skakels_hierheen', 'Skakelshierheen' ),
+ 'Randompage' => array( 'Lukraak', 'Lukrakebladsy' ),
+ 'Randomredirect' => array( 'Lukrake_aanstuur', 'Lukrakeaanstuur' ),
+ 'Recentchanges' => array( 'Onlangse_wysigings', 'Onlangsewysigings' ),
'Recentchangeslinked' => array( 'OnlangseVeranderingsMetSkakels', 'VerwanteVeranderings' ),
- 'Movepage' => array( 'Skuif_bladsy', 'Skuifbladsy' ),
- 'Blockme' => array( 'BlokMy' ),
- 'Booksources' => array( 'Boekbronne' ),
- 'Categories' => array( 'Kategorieë' ),
- 'Export' => array( 'Eksporteer' ),
- 'Version' => array( 'Weergawe' ),
- 'Allmessages' => array( 'Stelselboodskappe', 'Alle_stelselboodskappe', 'Allestelselboodskappe', 'Boodskappe' ),
- 'Log' => array( 'Logboek', 'Logboeke' ),
- 'Blockip' => array( 'BlokIP' ),
+ 'Revisiondelete' => array( 'WeergaweSkrap' ),
+ 'Search' => array( 'Soek' ),
+ 'Shortpages' => array( 'KortBladsye' ),
+ 'Specialpages' => array( 'Spesiale_bladsye', 'Spesialebladsye' ),
+ 'Statistics' => array( 'Statistiek' ),
+ 'Tags' => array( 'Etikette' ),
+ 'Unblock' => array( 'Deblokkeer' ),
+ 'Uncategorizedcategories' => array( 'OngekategoriseerdeKategorieë' ),
+ 'Uncategorizedimages' => array( 'OngekategoriseerdeBeelde' ),
+ 'Uncategorizedpages' => array( 'OngekategoriseerdeBladsye' ),
+ 'Uncategorizedtemplates' => array( 'OngekategoriseerdeSjablone' ),
'Undelete' => array( 'Ontskrap' ),
- 'Import' => array( 'Importeer' ),
- 'Lockdb' => array( 'SluitDB' ),
'Unlockdb' => array( 'OntsluitDB' ),
- 'Userrights' => array( 'GebruikersRegte' ),
- 'MIMEsearch' => array( 'MIME-soek', 'MIMEsoek', 'MIME_soek' ),
- 'FileDuplicateSearch' => array( 'LerDuplikaatSoek' ),
- 'Unwatchedpages' => array( 'NieDopgehoudeBladsye' ),
- 'Listredirects' => array( 'LysAansture' ),
- 'Revisiondelete' => array( 'WeergaweSkrap' ),
+ 'Unusedcategories' => array( 'OngebruikdeKategorieë' ),
+ 'Unusedimages' => array( 'OngebruikdeBeelde' ),
'Unusedtemplates' => array( 'OngebruikteSjablone' ),
- 'Randomredirect' => array( 'Lukrake_aanstuur', 'Lukrakeaanstuur' ),
- 'Mypage' => array( 'MyBladsy' ),
- 'Mytalk' => array( 'Mybespreking', 'Mybesprekings' ),
- 'Mycontributions' => array( 'Mybydrae' ),
- 'Listadmins' => array( 'LysAdministrateurs' ),
- 'Listbots' => array( 'LysRobotte' ),
- 'Popularpages' => array( 'PopulêreBladsye' ),
- 'Search' => array( 'Soek' ),
- 'Resetpass' => array( 'HerstelWagwoord' ),
+ 'Unwatchedpages' => array( 'NieDopgehoudeBladsye' ),
+ 'Upload' => array( 'Laai', 'Oplaai' ),
+ 'Userlogin' => array( 'Teken_in', 'Tekenin' ),
+ 'Userlogout' => array( 'Teken_uit', 'Tekenuit' ),
+ 'Userrights' => array( 'GebruikersRegte' ),
+ 'Version' => array( 'Weergawe' ),
+ 'Wantedcategories' => array( 'GesoekteKategorieë' ),
+ 'Wantedfiles' => array( 'GesoekteLêers' ),
+ 'Wantedpages' => array( 'GesoekdeBladsye', 'GebreekteSkakels' ),
+ 'Wantedtemplates' => array( 'GesoekteSjablone' ),
+ 'Watchlist' => array( 'Dophoulys' ),
+ 'Whatlinkshere' => array( 'Skakels_hierheen', 'Skakelshierheen' ),
'Withoutinterwiki' => array( 'Sonder_taalskakels', 'Sondertaalskakels' ),
- 'MergeHistory' => array( 'VersmeltGeskiedenis' ),
- 'Filepath' => array( 'Lêerpad' ),
- 'Invalidateemail' => array( 'OngeldigeEpos' ),
- 'Blankpage' => array( 'SkoonBladsy' ),
- 'LinkSearch' => array( 'SkakelSoektog' ),
- 'DeletedContributions' => array( 'GeskrapteBydraes' ),
- 'Tags' => array( 'Etikette' ),
- 'Activeusers' => array( 'AktieweGebruikers' ),
);
# South Africa uses space for thousands and comma for decimal
# Reference: AWS Reël 7.4 p. 52, 2002 edition
# glibc is wrong in this respect in some versions
$separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
-$linkTrail = "/^([a-z]+)(.*)\$/sD";
+$linkTrail = "/^([a-z]+)(.*)$/sD";
$messages = array(
# User preference toggles
@@ -236,7 +237,7 @@ $messages = array(
'tog-shownumberswatching' => 'Wys die aantal gebruikers wat dophou',
'tog-oldsig' => 'Bestaande handtekening:',
'tog-fancysig' => 'Hanteer handtekening as wikiteks (sonder outomatiese skakels)',
-'tog-externaleditor' => "Gebruik outomaties 'n eksterne redigeringsprogram (net vir kundiges - benodig spesiale verstellings op u rekenaar. [http://www.mediawiki.org/wiki/Manual:External_editors Meer inligting.])",
+'tog-externaleditor' => "Gebruik outomaties 'n eksterne redigeringsprogram (net vir kundiges - benodig spesiale verstellings op u rekenaar. [//www.mediawiki.org/wiki/Manual:External_editors Meer inligting.])",
'tog-externaldiff' => "Gebruik outomaties 'n eksterne vergelykingsprogram (net vir kundiges - benodig spesiale verstellings op u rekenaar)",
'tog-showjumplinks' => 'Wys "spring na"-skakels vir toeganklikheid',
'tog-uselivepreview' => 'Gebruik lewendige voorskou (JavaScript) (eksperimenteel)',
@@ -332,14 +333,7 @@ $messages = array(
'listingcontinuesabbrev' => 'vervolg',
'index-category' => 'Geïndekseerde bladsye',
'noindex-category' => 'Ongeïndekseerde bladsye',
-
-'mainpagetext' => "'''MediaWiki is suksesvol geïnstalleer.'''",
-'mainpagedocfooter' => "Konsulteer '''[http://meta.wikimedia.org/wiki/Help:Contents User's Guide]''' vir inligting oor hoe om die wikisagteware te gebruik.
-
-== Hoe om te Begin ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+'broken-file-category' => 'Bladsye met gebreekte lêer skakels',
'about' => 'Aangaande',
'article' => 'Inhoudbladsy',
@@ -391,10 +385,10 @@ $messages = array(
'history' => 'Ouer weergawes',
'history_short' => 'Geskiedenis',
'updatedmarker' => 'opgedateer sedert my laaste besoek',
-'info_short' => 'Inligting',
'printableversion' => 'Drukbare weergawe',
'permalink' => 'Permanente skakel',
'print' => 'Druk',
+'view' => 'Wys',
'edit' => 'Wysig',
'create' => 'Skep',
'editthispage' => 'Wysig hierdie bladsy',
@@ -402,6 +396,7 @@ $messages = array(
'delete' => 'Skrap',
'deletethispage' => 'Skrap die bladsy',
'undelete_short' => 'Herstel {{PLURAL:$1|een wysiging|$1 wysigings}}',
+'viewdeleted_short' => 'Wys {{PLURAL:$1|een geskrapte wysiging|$1 geskrapte wysigings}}',
'protect' => 'Beskerm',
'protect_change' => 'wysig',
'protectthispage' => 'Beskerm hierdie bladsy',
@@ -485,6 +480,8 @@ $1",
'toc' => 'Inhoud',
'showtoc' => 'wys',
'hidetoc' => 'versteek',
+'collapsible-collapse' => 'Vou toe',
+'collapsible-expand' => 'Vou oop',
'thisisdeleted' => 'Wys of herstel $1?',
'viewdeleted' => 'Bekyk $1?',
'restorelink' => '{{PLURAL:$1|die geskrapte wysiging|$1 geskrapte wysigings}}',
@@ -496,6 +493,8 @@ $1",
'page-rss-feed' => '"$1" RSS-voer',
'page-atom-feed' => '"$1" Atom-voer',
'red-link-title' => '$1 (bladsy bestaan nie)',
+'sort-descending' => 'Sorteer aflopend',
+'sort-ascending' => 'Sorteer oplopend',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Bladsy',
@@ -583,11 +582,12 @@ Probeer asseblief weer oor 'n paar minute.",
'protectedpagetext' => 'Hierdie bladsy is beskerm om redigering te verhoed.',
'viewsourcetext' => 'U mag die bronteks van hierdie bladsy lees en kopieer:',
'protectedinterface' => 'Hierdie bladsy verskaf teks vir die koppelvlak van die sagteware, en is beskerm om misbruik te voorkom.',
-'editinginterface' => "'''Waarskuwing:''' U is besig om 'n bladsy te redigeer wat koppelvlakinligting aan die programmatuur voorsien. Wysigings aan hierdie bladsy sal die voorkoms van die gebruikerskoppelvlak vir ander gebruikers beïnvloed. Vir vertalings, oorweeg om eerder [http://translatewiki.net/wiki/Main_Page?setlang=af translatewiki.net] (die vertalingsprojek vir MediaWiki) te gebruik.",
+'editinginterface' => "'''Waarskuwing:''' U is besig om 'n bladsy te redigeer wat koppelvlakinligting aan die programmatuur voorsien. Wysigings aan hierdie bladsy sal die voorkoms van die gebruikerskoppelvlak vir ander gebruikers beïnvloed. Vir vertalings, oorweeg om eerder [//translatewiki.net/wiki/Main_Page?setlang=af translatewiki.net] (die vertalingsprojek vir MediaWiki) te gebruik.",
'sqlhidden' => '(SQL navraag versteek)',
'cascadeprotected' => 'Hierdie bladsy is beskerm teen redigering omdat dit ingesluit is in die volgende {{PLURAL:$1|bladsy|bladsye}} wat beskerm is met die "kaskade" opsie aangeskakel: $2',
'namespaceprotected' => "U het nie toestemming om bladsye in die '''$1'''-naamruimte te wysig nie.",
-'customcssjsprotected' => "U het nie toestemming om hierdie bladsy te redigeer nie, want dit bevat 'n ander gebruiker se persoonlike verstellings.",
+'customcssprotected' => "U het nie toestemming om hierdie CSS-bladsy te redigeer nie, want dit bevat 'n ander gebruiker se persoonlike verstellings.",
+'customjsprotected' => "U het nie toestemming om hierdie JavaScript-bladsy te redigeer nie, want dit bevat 'n ander gebruiker se persoonlike verstellings.",
'ns-specialprotected' => 'Spesiale bladsye kan nie geredigeer word nie.',
'titleprotected' => "Hierdie titel is beskerm teen skepping deur [[User:$1|$1]].
Die rede gegee is ''$2''.",
@@ -625,6 +625,7 @@ moenie vergeet om u [[Special:Preferences|persoonlike voorkeure vir {{SITENAME}}
'createaccount' => 'Skep nuwe rekening',
'gotaccount' => "Het u reeds 'n rekening? '''$1'''.",
'gotaccountlink' => 'Teken in',
+'userlogin-resetlink' => 'U aanmeld besonderhede vergeet?',
'createaccountmail' => 'deur e-pos',
'createaccountreason' => 'Rede:',
'badretype' => 'Die ingetikte wagwoorde is nie dieselfde nie.',
@@ -637,13 +638,15 @@ Kies asseblief 'n ander naam.",
U rekenaar laat tans nie koekies toe nie.
Stel u rekenaar om dit te aanvaar, dan kan u met u nuwe naam en wagwoord inteken.',
'nocookieslogin' => '{{SITENAME}} gebruik koekies vir die aanteken van gebruikers, maar u blaaier laat dit nie toe nie. Skakel dit asseblief aan en probeer weer.',
+'nocookiesfornew' => 'Die gebruiker is nie geskep nie omdat die oorsprong nie bevestig kon word nie.
+Maak seker dat u koekies aangeskakel het, herlaai die bladsy en probeer dan weer.',
'noname' => 'Ongeldige gebruikersnaam.',
'loginsuccesstitle' => 'Suksesvolle intekening',
'loginsuccess' => 'U is nou by {{SITENAME}} as "$1" ingeteken.',
'nosuchuser' => 'Die gebruiker "$1" bestaan nie.
Gebruikersname is gevoelig vir hoofletters.
Maak seker dit is reg gespel of [[Special:UserLogin/signup|skep \'n nuwe rekening]].',
-'nosuchusershort' => 'Daar is geen gebruikersnaam "<nowiki>$1</nowiki>" nie. Maak seker dit is reg gespel.',
+'nosuchusershort' => 'Daar is geen gebruikersnaam "$1" nie. Maak seker dit is reg gespel.',
'nouserspecified' => "U moet 'n gebruikersnaam spesifiseer.",
'login-userblocked' => 'Hierdie gebruiker is geblokkeer.
Intekening word verbied.',
@@ -685,16 +688,18 @@ Indien hierdie rekening foutief geskep is, kan u hierdie boodskap ignoreer.',
'usernamehasherror' => "'n Gebruikersnaam mag nie 'n hekkie-karakter (#) in hê nie",
'login-throttled' => "U het al te veel kere met 'n ongeldige wagwoord probeer aanteken.
Wag asseblief alvorens u weer probeer.",
+'login-abort-generic' => 'U is nie aangemeld nie. Die prosedure is gestaak.',
'loginlanguagelabel' => 'Taal: $1',
'suspicious-userlogout' => "U versoek om af te teken is geïgnoreer omdat dit lyk asof dit deur 'n gebreekte webleser of instaanbediener gestuur is.",
# E-mail sending
'php-mail-error-unknown' => 'Onbekende fout in PHP se mail()-funksie',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Verander wagwoord',
'resetpass_announce' => "U het aangeteken met 'n tydelike e-poskode.
Om voort te gaan moet u 'n nuwe wagwoord hier kies:",
+'resetpass_text' => '<!-- Voeg teks hier by -->',
'resetpass_header' => 'Verander wagwoord',
'oldpassword' => 'Ou wagwoord',
'newpassword' => 'Nuwe wagwoord',
@@ -709,6 +714,34 @@ Om voort te gaan moet u 'n nuwe wagwoord hier kies:",
U het moontlik reeds u wagwoord gewysig of 'n nuwe tydelike wagwoord aangevra.",
'resetpass-temp-password' => 'Tydelike wagwoord:',
+# Special:PasswordReset
+'passwordreset' => 'Wagwoord herstel',
+'passwordreset-text' => "Voltooi hierdie vorm om 'n e-pos herinnering van jou rekening besonderhede te ontvang.",
+'passwordreset-legend' => 'Kry nuwe wagwoord',
+'passwordreset-disabled' => 'Die herskik van U wagwoord is gedeaktiveer op hierdie wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1| | Voer een van die onderstaande velde in}}',
+'passwordreset-username' => 'Gebruiker:',
+'passwordreset-domain' => 'Domein:',
+'passwordreset-email' => 'E-posadres:',
+'passwordreset-emailtitle' => 'Gebruiker se details op {{site name}}',
+'passwordreset-emailtext-ip' => 'Iemand, waarskynlik u vanaf die IP-adres $1, het u gebruikersgegewens vir {{SITENAME}} ($4) opgevra.
+Die volgende {{PLURAL:$3|gebruiker is|gebruikers is}} aan die e-posadres gekoppel:
+
+$2
+
+{{PLURAL:$3|Die tydelike wagwoord verval|Hierdie tydelike wagwoorde verval}} oor {{PLURAL:$5|een dag|$5 dae}}.
+Meld asseblief nou aan en wysig u wagwoord. As u dit nie versoek het nie, of as u die oorspronklike wagwoord nog ken en dit nie wil verander nie, ignoreer die berig en hou aan om u ou wagwoord te gebruik.',
+'passwordreset-emailtext-user' => 'Gebruiker $1 op die webtuiste {{SITENAME}} het u gebruikersgegewens vir {{SITENAME}} ($4) opgevra.
+Die volgende {{PLURAL:$3|gebruiker is|gebruikers is}} aan die e-posadres gekoppel:
+
+$2
+
+{{PLURAL:$3|Die tydelike wagwoord verval|Hierdie tydelike wagwoorde verval}} oor {{PLURAL:$5|een dag|$5 dae}}.
+Meld asseblief aan en verander u wagwoord nou. As u dit nie versoek het nie, of as u die oorspronklike wagwoord nog ken en dit nie wil verander nie, ignoreer die berig en hou aan om u ou wagwoord te gebruik.',
+'passwordreset-emailelement' => 'Gebruikersnaam: $1
+Tydelike wagwoord: $2',
+'passwordreset-emailsent' => "'n E-pos ter herhindering is gestuur.",
+
# Edit page toolbar
'bold_sample' => 'Vetgedrukte teks',
'bold_tip' => 'Vetdruk',
@@ -720,8 +753,6 @@ U het moontlik reeds u wagwoord gewysig of 'n nuwe tydelike wagwoord aangevra.",
'extlink_tip' => 'Eksterne skakel (onthou http:// vooraan)',
'headline_sample' => 'Opskrif',
'headline_tip' => 'Vlak 2-opskrif',
-'math_sample' => 'Plaas formule hier',
-'math_tip' => 'Wiskundige formule (LaTeX)',
'nowiki_sample' => 'Plaas ongeformatteerde teks hier',
'nowiki_tip' => 'Ignoreer wiki-formattering',
'image_sample' => 'Voorbeeld.jpg',
@@ -805,7 +836,7 @@ U kan [[Special:Search/{{PAGENAME}}|vir die bladsytitel in ander bladsye soek]],
of [{{fullurl:{{FULLPAGENAME}}|action=edit}} hierdie bladsy wysig]</span>.',
'noarticletext-nopermission' => 'Daar is tans geen teks in hierdie bladsy nie. U kan vir die bladsytitel [[Special:Search/{{PAGENAME}}|in ander bladsye soek]] of
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} die verwante logboeke deursoek]</span>.',
-'userpage-userdoesnotexist' => 'U is besig om \'n gebruikersblad wat nie bestaan nie te wysig (gebruiker "$1"). Maak asseblief seker of u die bladsy wil skep/ wysig.',
+'userpage-userdoesnotexist' => 'U is besig om \'n gebruikersblad wat nie bestaan nie te wysig (gebruiker "<nowiki>$1</nowiki>"). Maak asseblief seker of u die bladsy wil skep/ wysig.',
'userpage-userdoesnotexist-view' => 'Die gebruiker "$1" is nie geregistreer nie.',
'blocked-notice-logextract' => 'Hierdie gebruiker is tans geblokkeer.
Die laaste inskrywing in die blokkeerlogboek word hieronder vertoon:',
@@ -840,6 +871,7 @@ Probeer asseblief weer. As dit steeds nie werk nie, probeer om [[Special:UserLog
'token_suffix_mismatch' => "'''U wysiging is geweier omdat u webblaaier leestekens in die wysigingsveld verkeerdelik geïnterpreteer het.
Die bewerking is geweier om verminking van die bladsy se teks te voorkom.
Dit gebeur soms as 'n webgebaseerde instaandiens (proxy) gebruik word wat foute bevat.",
+'edit_form_incomplete' => "'''Dele van die vorm het nie die bediener bereik nie. Kyk of alles reg lyk en probeer weer.'''",
'editing' => 'Besig om $1 te wysig',
'editingsection' => 'Besig om $1 (onderafdeling) te wysig',
'editingcomment' => 'Besig om $1 te wysig (nuwe opskrif)',
@@ -1185,12 +1217,13 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.",
'searchdisabled' => '{{SITENAME}} se soekfunksie is tans afgeskakel ter wille van werkverrigting. Gebruik gerus intussen Google of Yahoo! Let daarop dat hulle indekse van die {{SITENAME}}-inhoud verouderd mag wees.',
# Quickbar
-'qbsettings' => 'Snelbalkvoorkeure',
-'qbsettings-none' => 'Geen',
-'qbsettings-fixedleft' => 'Links vas.',
-'qbsettings-fixedright' => 'Regs vas.',
-'qbsettings-floatingleft' => 'Dryf links.',
-'qbsettings-floatingright' => 'Dryf regs.',
+'qbsettings' => 'Snelbalkvoorkeure',
+'qbsettings-none' => 'Geen',
+'qbsettings-fixedleft' => 'Links vas.',
+'qbsettings-fixedright' => 'Regs vas.',
+'qbsettings-floatingleft' => 'Dryf links.',
+'qbsettings-floatingright' => 'Dryf regs.',
+'qbsettings-directionality' => 'Vas, afhanklik van die skryfrigting van u taal',
# Preferences page
'preferences' => 'Voorkeure',
@@ -1201,9 +1234,10 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.",
'changepassword' => 'Verander wagwoord',
'prefs-skin' => 'Omslag',
'skin-preview' => 'Voorskou',
-'prefs-math' => 'Wiskunde',
'datedefault' => 'Geen voorkeur',
+'prefs-beta' => 'Beta-funksies',
'prefs-datetime' => 'Datum en tyd',
+'prefs-labs' => 'Labs-funksies',
'prefs-personal' => 'Gebruikersdata',
'prefs-rc' => 'Onlangse wysigings',
'prefs-watchlist' => 'Dophoulys',
@@ -1225,8 +1259,6 @@ U kan ook 'n naamruimte as voorvoegsel gebruik.",
'columns' => 'Kolomme',
'searchresultshead' => 'Soekresultate',
'resultsperpage' => 'Aantal resultate om te wys',
-'contextlines' => 'Aantal lyne per resultaat',
-'contextchars' => 'Karakters konteks per lyn',
'stub-threshold' => 'Drempel vir merk as <a href="#" class="stub">saadjie</a> (grepe):',
'stub-threshold-disabled' => 'Afgeskakel',
'recentchangesdays' => 'Aantal dae wat in onlangse wysigings vertoon word:',
@@ -1239,7 +1271,7 @@ Hier volg 'n lukraak gegenereerde waarde wat u kan gebruik: $1",
'savedprefs' => 'U voorkeure is gestoor.',
'timezonelegend' => 'Tydsone:',
'localtime' => 'Plaaslike tyd:',
-'timezoneuseserverdefault' => 'Bedienerverstek',
+'timezoneuseserverdefault' => 'Gebruik wiki se verstekwaarde ($1)',
'timezoneuseoffset' => 'Ander (spesifiseer tydsverskil)',
'timezoneoffset' => 'Tydsverskil¹:',
'servertime' => 'Bedienertyd:',
@@ -1274,6 +1306,7 @@ Die aksie kan nie ongedaan gemaak word nie.',
'prefs-registration' => 'Registrasiedatum:',
'yourrealname' => 'Regte naam:',
'yourlanguage' => 'Taal:',
+'yourvariant' => 'Taalvariant vir inhoud:',
'yournick' => 'Bynaam (vir handtekening)',
'prefs-help-signature' => 'Kommentaar op besprekingsbladsye moet met "<nowiki>~~~~</nowiki>" onderteken word.
Die tildes word in u handtekening omgeskakel en die datum en tyd word insluit.',
@@ -1288,8 +1321,8 @@ Dit mag nie meer as $1 {{PLURAL:$1|karakter|karakters}} bevat nie.',
Die inligting is vir ander gebruikers sigbaar.',
'email' => 'E-pos',
'prefs-help-realname' => 'Regte naam (opsioneel): as u hierdie verskaf, kan dit gebruik word om erkenning vir u werk te gee.',
-'prefs-help-email' => 'E-posadres is opsioneel, maar maak dit moontlik om u wagwoord aan u te pos sou u dit vergeet.
-U kan ook besluit om e-pos te ontvang as ander gebruikers u gebruikers- of besprekingsblad wysig sonder om u identiteit te verraai.',
+'prefs-help-email' => 'E-posadres is opsioneel, maar is nodig om u wagwoord aan u te stuur sou u dit vergeet.',
+'prefs-help-email-others' => 'U kan ook kies om ander toe te laat om u deur u gebruikers- en besprekingsbladsy te kontak sonder om u identiteit te openbaar.',
'prefs-help-email-required' => 'E-pos adres word benodig.',
'prefs-info' => 'Basiese inligting',
'prefs-i18n' => 'Taalinstellings',
@@ -1414,15 +1447,15 @@ U kan ook besluit om e-pos te ontvang as ander gebruikers u gebruikers- of bespr
'right-userrights' => 'Wysig alle gebruiker regte',
'right-userrights-interwiki' => 'Wysig gebruikersregte van gebruikers op ander wikis',
'right-siteadmin' => 'Sluit en ontsluit die datbasis',
-'right-reset-passwords' => 'Herstel ander gebruikers se wagwoorde',
'right-override-export-depth' => "Eksporteer bladsye insluitend geskakelde bladsye tot 'n diepte van 5",
'right-sendemail' => 'Stuur e-pos aan ander gebruikers',
# 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',
-'rightsnone' => '(geen)',
+'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',
@@ -1552,13 +1585,13 @@ Om die lêer in 'n artikel te gebruik, plaas 'n skakel in een van die volgende f
'minlength1' => 'Prentname moet ten minste een letter lank wees.',
'illegalfilename' => 'Die lêernaam "$1" bevat karakters wat nie toegelaat word in bladsytitels nie. Verander asseblief die naam en probeer die lêer weer laai.',
'badfilename' => 'Prentnaam is verander na "$1".',
-'filetype-mime-mismatch' => 'Lêer-uitbreiding stem nie met die MIME-tipe ooreen nie.',
+'filetype-mime-mismatch' => 'Lêer-uitbreiding ".$1" stem nie met die MIME-tipe van die lêer ($2) ooreen nie.',
'filetype-badmime' => 'Lêers met MIME-tipe "$1" word nie toegelaat nie.',
'filetype-bad-ie-mime' => 'Die lêer kan nie opgelaai word nie omdat Internet Explorer dit sal identifiseer as "$1", \'n nie toegelate lêertipe wat moontlik skadelik is.',
'filetype-unwanted-type' => "'''\".\$1\"''' is 'n ongewenste lêertipe.
Aanbevole {{PLURAL:\$3|lêertipe|lêertipes}} is \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' is nie 'n toegelate lêertipe nie.
-Toelaatbare {{PLURAL:\$3|lêertipes|lêertipes}} is \$2.",
+'filetype-banned-type' => 'Die {{PLURAL:$4|lêertipe|lêertipes}} word \'\'\'".$1"\'\'\' nie toegelaat nie.
+Toelaatbare {{PLURAL:$3|lêertipes|lêertipes}} is $2.',
'filetype-missing' => 'Die lêer het geen uitbreiding (soos ".jpg").',
'empty-file' => 'Die lêer wat u probeer oplaai is leeg.',
'file-too-large' => 'Die lêer wat u probeer oplaai is te groot.',
@@ -1575,6 +1608,7 @@ Toelaatbare {{PLURAL:\$3|lêertipes|lêertipes}} is \$2.",
die lêer is $2.',
'largefileserver' => 'Hierdie lêer is groter as wat die bediener se opstelling toelaat.',
'emptyfile' => "Die lêer wat u probeer oplaai het blyk leeg te wees. Dit mag wees omdat u 'n tikfout in die lêernaam gemaak het. Gaan asseblief na en probeer weer.",
+'windows-nonascii-filename' => 'Hierdie wiki ondersteun nie lêername met spesiale karakters nie.',
'fileexists' => "'n Lêer met die naam bestaan reeds, kyk na '''<tt>[[:$1]]</tt>''' as u nie seker is dat u dit wil wysig nie.
[[$1|thumb]]",
'filepageexists' => "Die beskrywingsbladsy vir hierdie lêer bestaan reeds by '''<tt>[[:$1]]</tt>''', maar daar is nie 'n lêer met hierdie naam nie.
@@ -1615,6 +1649,8 @@ Dit word aanbeveel dat u die lêer se skrapgeskiedenis besigtig voor u poog om d
Kyk na die "file_uploads"-instelling.',
'uploadscripted' => "Hierdie lêer bevat HTML- en scriptkode wat verkeerdelik deur 'n webblaaier geïnterpreteer kan word.",
'uploadvirus' => "Hierdie lêer bevat 'n virus! Inligting: $1",
+'uploadjava' => "Die lêer is 'n ZIP wat 'n Java .class-lêer bevat.
+Die oplaai van Java-lêers word nie toegelaat nie, omdat dit sekuriteit kan omseil.",
'upload-source' => 'Bronlêer',
'sourcefilename' => 'Bronlêernaam:',
'sourceurl' => 'Bron-URL:',
@@ -1625,10 +1661,6 @@ Kyk na die "file_uploads"-instelling.',
'watchthisupload' => 'Hou die lêer dop',
'filewasdeleted' => "'n Lêer met hierdie naam is al voorheen opgelaai en daarna geskrap.
Kyk asseblief na die $1 voor u aangaan om dit weer op te laai.",
-'upload-wasdeleted' => "'''Waarskuwing: U is besig om 'n lêer op te laai wat voorheen verwyder is.'''
-
-Dink twee keer na of dit wel gepas is om die lêer hier op te laai.
-Die verwyderingsinligting van die lêer word vir u gemak hier herhaal:",
'filename-bad-prefix' => "Die naam van die lêer wat u besig is om op te laai begin met '''\"\$1\"''', wat 'n nie-beskrywende term is, gewoonlik outomaties toegedien deur digitale kameras.
Kies asseblief 'n meer beskrywende naam vir die lêer.",
'upload-success-subj' => 'Laai suksesvol',
@@ -1654,12 +1686,29 @@ As daar steeds probleme is, kontak 'n [[Special:ListUsers/sysop|administrateur]]
'upload-unknown-size' => 'Onbekende grootte',
'upload-http-error' => "'n HTTP-fout het voorgekom: $1",
+# ZipDirectoryReader
+'zip-file-open-error' => "'n Fout het voorgekom met die opening van die lêer vir ZIP toetsing.",
+'zip-wrong-format' => "Die gespesifiseerde lêer was nie 'n zip-lêer nie.",
+'zip-bad' => 'Die ZIP-lêer is korrup of andersins onleesbaar.
+Dit kan nie behoorlik vir sekuriteit nagegaan word nie.',
+'zip-unsupported' => "Die is 'n ZIP-lêer wat funksies gebruik wat nie deur MediaWiki ondersteun word nie.
+Dit kan nie behoorlik vir sekuriteit nagegaan word nie.",
+
+# Special:UploadStash
+'uploadstash' => 'Verborge oplaaie',
+'uploadstash-summary' => 'Die bladsy wys lêers wat opgelaai is (of tans opgelaai word), maar nog nie op die wiki gepubliseer is nie. Hierdie lêers is slegs vir die gebruikers wat hulle opgelaai het sigbaar.',
+'uploadstash-clear' => 'Gooi verborge lêers weg',
+'uploadstash-nofiles' => 'U het geen verborge lêers nie.',
+'uploadstash-badtoken' => 'Uitvoering van die aksie het misluk, moontlik omdat u "editing credentials" verstryk het. Probeer asseblief weer.',
+'uploadstash-errclear' => 'Die skoonmaak van lêers het misluk.',
+'uploadstash-refresh' => 'Verfris die lys van lêers',
+
# img_auth script messages
'img-auth-accessdenied' => 'Toegang geweier',
'img-auth-nopathinfo' => 'PATH_INFO word vermis.
U bediener is nie ingestel om hierdie inligting deur te stuur nie.
Miskien gebruik dit CGI, waartydens img_auth nie ondersteun word nie.
-Sien http://www.mediawiki.org/wiki/Manual:Image_Authorization vir meer inligting.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Sien regte vir beelde] vir meer inligting.',
'img-auth-notindir' => 'Die aangevraagde pad is nie die ingestelde oplaaigids nie.',
'img-auth-badtitle' => 'Dit was nie moontlik om \'n geldige bladsynaam van "$1" te maak nie.',
'img-auth-nologinnWL' => 'U is nie aangeteken en "$1" is nie op die witlys nie.',
@@ -1731,14 +1780,14 @@ Kliek op die opskrifte om die tabel te hersorteer.',
'filehist-filesize' => 'Lêergrootte',
'filehist-comment' => 'Opmerking',
'filehist-missing' => 'Die lêer kon nie gevind word nie',
-'imagelinks' => 'Lêerskakels',
+'imagelinks' => 'Lêergebruik',
'linkstoimage' => 'Die volgende {{PLURAL:$1|bladsy|$1 bladsye}} gebruik hierdie prent:',
'linkstoimage-more' => "Daar is meer as $1 {{PLURAL:$1|skakel|skakels}} na hierdie lêer.
Die volgende lys vertoon slegs die eerste {{PLURAL:$1|skakel|$1 skakels}} wat na die lêer verwys.
'n [[Special:WhatLinksHere/$2|Volledige lys]] is ook beskikbaar.",
'nolinkstoimage' => 'Daar is geen bladsye wat hierdie prent gebruik nie.',
'morelinkstoimage' => 'Wys [[Special:WhatLinksHere/$1|meer skakels]] na die lêer.',
-'redirectstofile' => "Die volgende {{PLURAL:$1|lêer is 'n aanstuur|$1 lêers is aansture}} na die lêer:",
+'linkstoimage-redirect' => '$1 (lêeraanstuur) $2',
'duplicatesoffile' => "Die volgende {{PLURAL:$1|lêer is 'n duplikaat|$1 lêers is duplikate}} van die lêer ([[Special:FileDuplicateSearch/$2|meer details]]):",
'sharedupload' => 'Die lêer kom vanaf $1 en mag moontlik ook op ander projekte gebruik word.',
'sharedupload-desc-there' => 'Hierdie lêer kom vanaf $1 en kan ook in ander projekte gebruik word.
@@ -1826,18 +1875,19 @@ Die beskrywing op die [$2 lêer se inligtingsblad] word hieronder weergegee.',
'statistics-users-active-desc' => "Gebruikers wat in die afgelope {{PLURAL:$1|dag|$1 dae}} 'n handeling uitgevoer het",
'statistics-mostpopular' => 'Mees bekykte bladsye',
-'disambiguations' => 'Bladsye wat onduidelikhede opklaar',
+'disambiguations' => 'Bladsye wat na dubbelsinnigheidsbladsye skakel',
'disambiguationspage' => 'Template:Dubbelsinnig',
'disambiguations-text' => "Die volgende bladsye skakel na '''dubbelsinnigheidsbladsye'''.
Die bladsye moet gewysig word om eerder direk na die regte onderwerpe te skakel.<br />
'n Bladsy word beskou as 'n dubbelsinnigheidsbladsy as dit 'n sjabloon bevat wat geskakel is vanaf [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Dubbele aansture',
-'doubleredirectstext' => 'Hierdie lys bevat bladsye wat aansture na ander aanstuurblaaie is.
+'doubleredirects' => 'Dubbele aansture',
+'doubleredirectstext' => 'Hierdie lys bevat bladsye wat aansture na ander aanstuurblaaie is.
Elke ry bevat skakels na die eerste en die tweede aanstuur, asook die eerste reël van van die tweede aanstuur se teks, wat gewoonlik die "regte" teiken-bladsy gee waarna die eerste aanstuur behoort te wys.
<del>Doodgekrapte reëls</del> dui aan dat die probleem reeds opgelos is.',
-'double-redirect-fixed-move' => "[[$1]] was geskuif en is nou 'n deurverwysing na [[$2]].",
-'double-redirect-fixer' => 'Aanstuur hersteller',
+'double-redirect-fixed-move' => "[[$1]] was geskuif en is nou 'n deurverwysing na [[$2]].",
+'double-redirect-fixed-maintenance' => 'Maak dubbele aanstuur vanaf [[$1]] na [[$2]] reg.',
+'double-redirect-fixer' => 'Aanstuur hersteller',
'brokenredirects' => 'Stukkende aansture',
'brokenredirectstext' => 'Die volgende aansture skakel na bladsye wat nie bestaan nie.',
@@ -1915,6 +1965,7 @@ Dit is dus moontlik dat 'n lêer hier gelys word terwyl dit tog in gebruik is.",
'pager-newer-n' => '{{PLURAL:$1|nuwer 1|nuwer $1}}',
'pager-older-n' => '{{PLURAL:$1|ouer 1|ouer $1}}',
'suppress' => 'Toesig',
+'querypage-disabled' => 'Hierdie spesiale bladsy is afgeskakel om werkverrigting te verbeter (bediener is oorlaai).',
# Book sources
'booksources' => 'Boekbronne',
@@ -1966,7 +2017,7 @@ Sie ook [[Special:WantedCategories|nie-bestaande kategorieë met verwysings]].',
'sp-deletedcontributions-contribs' => 'bydraes',
# Special:LinkSearch
-'linksearch' => 'Eksterne skakels',
+'linksearch' => 'Eksterne skakels soek',
'linksearch-pat' => 'Soekpatroon:',
'linksearch-ns' => 'Naamruimte:',
'linksearch-ok' => 'Soek',
@@ -2031,6 +2082,10 @@ Daar kan [[{{MediaWiki:Listgrouprights-helppage}}|extra inligting]] oor individu
'noemailtext' => "Hierdie gebruiker het nie 'n geldige e-posadres gespesifiseer nie.",
'nowikiemailtitle' => 'Geen E-pos toegelaat nie',
'nowikiemailtext' => 'Hierdie gebruiker wil geen e-pos van andere gebruikers ontvang nie.',
+'emailnotarget' => 'Nie-bestaande of ongeldige gebruikernaam vir ontvanger.',
+'emailtarget' => 'Verskaf ontvanger se gebruikersnaam',
+'emailusername' => 'Gebruikernaam:',
+'emailusernamesubmit' => 'Dien in',
'email-legend' => "Stuur 'n E-pos na 'n ander gebruiker van {{SITENAME}}",
'emailfrom' => 'Van:',
'emailto' => 'Aan:',
@@ -2056,11 +2111,11 @@ Daar kan [[{{MediaWiki:Listgrouprights-helppage}}|extra inligting]] oor individu
'watchnologin' => 'Nie ingeteken nie',
'watchnologintext' => 'U moet [[Special:UserLogin|ingeteken]]
wees om u dophoulys te verander.',
-'addedwatch' => 'Bygevoeg tot dophoulys',
+'addwatch' => 'Voeg by dophoulys',
'addedwatchtext' => "Die bladsy \"[[:\$1]]\" is by u [[Special:Watchlist|dophoulys]] bygevoeg. Toekomstige wysigings aan hierdie bladsy en sy verwante besprekingsblad sal op [[Special:Watchlist|u dophoulys]] gelys word en sal in '''vetdruk''' in die [[Special:RecentChanges|lys van onlangse wysigings]] vertoon word, sodat u dit makliker kan raaksien.
As u die bladsy later van u dophoulys wil verwyder, kliek \"verwyder van dophoulys\" in die kieslys bo-aan die bladsy.",
-'removedwatch' => 'Afgehaal van dophoulys',
+'removewatch' => 'Verwyder van dophoulys',
'removedwatchtext' => 'Die bladsy "[[:$1]]" is van [[Special:Watchlist|u dophoulys]] afgehaal.',
'watch' => 'Hou dop',
'watchthispage' => 'Hou hierdie bladsy dop',
@@ -2081,8 +2136,9 @@ As u die bladsy later van u dophoulys wil verwyder, kliek \"verwyder van dophoul
'watchlist-options' => 'Opsies vir dophoulys',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Plaas op dophoulys...',
-'unwatching' => 'Verwyder van dophoulys...',
+'watching' => 'Plaas op dophoulys...',
+'unwatching' => 'Verwyder van dophoulys...',
+'watcherrortext' => '\'n Fout het voorgekom met die wysiging van u dophoulys-instelling vir "$1".',
'enotif_mailer' => '{{SITENAME}} E-pos kennisgewings',
'enotif_reset' => 'Merk alle bladsye as besoek',
@@ -2109,17 +2165,20 @@ Wiki: $PAGEEDITOR_WIKI
Tensy u hierdie bladsy besoek, sal u geen verdere kennisgewings ontvang nie.
U kan ook die waarskuwingsvlag op u dophoulys verstel.
- Groete van {{SITENAME}} se waarskuwingssisteem.
+Groete van {{SITENAME}} se waarskuwingssisteem.
--
+U kan u e-posvoorkeure stel by:
+{{canonicalurl:{{#special:Preferences}}}}
+
U kan u dophoulys wysig by:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Om die bladsy vanaf u dophoulys te verwyder, besoek:
$UNWATCHURL
Terugvoer en verdere bystand:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Skrap bladsy',
@@ -2135,7 +2194,7 @@ Terugvoer en verdere bystand:
Bevestig asseblief dat u dit wil doen, dat u die gevolge verstaan en dat u dit doen in ooreenstemming met die [[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Aksie uitgevoer',
'actionfailed' => 'Aksie het gefaal',
-'deletedtext' => '"<nowiki>$1</nowiki>" is geskrap.
+'deletedtext' => '"$1" is geskrap.
Kyk na $2 vir \'n rekord van onlangse skrappings.',
'deletedarticle' => '"[[$1]]" geskrap',
'suppressedarticle' => 'het "[[$1]]" verberg',
@@ -2194,7 +2253,7 @@ Sien die [[Special:ProtectedPages|lys van beveiligde bladsye]] vir alle bladsye
'protect_expiry_invalid' => 'Vervaltyd is ongeldig.',
'protect_expiry_old' => 'Vervaltyd is in die verlede.',
'protect-unchain-permissions' => 'Ontsluit verdere beskermingsopsies',
-'protect-text' => "U kan die veiligheidsvlak vir blad '''<nowiki>$1</nowiki>''' hier bekyk of verander.",
+'protect-text' => "U kan die veiligheidsvlak vir blad '''$1''' hier bekyk of verander.",
'protect-locked-blocked' => "U kan nie beskermingsvlakke verander terwyl u geblok is nie.
Hier volg die huidige oprigtings vir die bladsy '''$1''':",
'protect-locked-dblock' => "Die beskermingsvlak kan nie tans gewysig word nie omdat die databasis gesluit is.
@@ -2247,9 +2306,8 @@ Hier is die huidige verstellings vir bladsy '''$1''':",
'viewdeletedpage' => 'Bekyk geskrapte bladsye',
'undeletepagetext' => 'Die volgende {{PLURAL:$1|bladsy|$1 bladsye}} is geskrap, maar is nog in die argief en kan teruggeplaas word. Die argief van geskrapte blaaie kan periodiek skoongemaak word.',
'undelete-fieldset-title' => 'Plaas weergawes terug',
-'undeleteextrahelp' => "Om die hele bladsy, inklusief alle vroeër weergawes, terug te plaas: laat alle blokkies gedeselekteer en kliek op '''''Plaas terug'''''.
-Om slegs bepaalde weergawes terug te sit: kies die weergawes om terug te plaas en kliek op '''''Plaas terug'''''.
-As u op '''''Herinstel''''' kliek word die kommentaarveld leeggemaak en word alle weergawes gedeselekteer.",
+'undeleteextrahelp' => "Om die hele bladsy, inklusief alle vroeër weergawes, terug te plaas: laat alle blokkies gedeselekteer en kliek op '''''{{int:undeletebtn}}'''''.
+Om slegs bepaalde weergawes terug te sit: kies die weergawes om terug te plaas en kliek op '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|weergawe|weergawes}} in argief',
'undeletehistory' => "As u die bladsy herstel, sal alle weergawes herstel word.
As 'n nuwe bladsy met dieselfde naam sedert die skrapping geskep is, sal die herstelde weergawes in die nuwe bladsy se voorgeskiedenis verskyn en die huidige weergawe van die lewendige bladsy sal nie outomaties vervang word nie.",
@@ -2294,9 +2352,12 @@ $1',
'undelete-show-file-submit' => 'Ja',
# Namespace form on various pages
-'namespace' => 'Naamruimte:',
-'invert' => 'Omgekeerde seleksie',
-'blanknamespace' => '(Hoof)',
+'namespace' => 'Naamruimte:',
+'invert' => 'Omgekeerde seleksie',
+'tooltip-invert' => 'Merk die boks om bladsye in die gekose naamruimte (en die gepaardgaande naamruimtes as gekies) te versteek',
+'namespace_association' => 'Gekoppelde naamruimte',
+'tooltip-namespace_association' => 'Merk die boks om die besprekings- en onderwerpnaamruimte die by die geselekteerde naamruimte in te sluit',
+'blanknamespace' => '(Hoof)',
# Contributions
'contributions' => 'Gebruikersbydraes',
@@ -2345,13 +2406,15 @@ Die laaste inskrywing uit die blokkeerlogboek word hier ter inligting weergegee:
'whatlinkshere-filters' => 'Filters',
# Block/unblock
+'autoblockid' => 'Outomatiese blokkade #$1',
+'block' => 'Blok gebruiker',
+'unblock' => 'Deblokkeer gebruiker',
'blockip' => 'Blokkeer gebruiker',
'blockip-title' => 'Blokkeer gebruiker',
'blockip-legend' => 'Blokkeer gebruiker of IP-adres',
'blockiptext' => "Gebruik die vorm hier onder om skryftoegang van 'n sekere IP-adres te blok.
Dit moet net gedoen word om vandalisme te voorkom en in ooreenstemming met [[{{MediaWiki:Policy-url}}|{{SITENAME}}-beleid]].
Vul 'n spesifieke rede hier onder in (haal byvoorbeeld spesifieke bladsye wat gevandaliseer is, aan).",
-'ipaddress' => 'IP-adres:',
'ipadressorusername' => 'IP-adres of gebruikersnaam:',
'ipbexpiry' => 'Duur:',
'ipbreason' => 'Rede:',
@@ -2364,7 +2427,7 @@ Vul 'n spesifieke rede hier onder in (haal byvoorbeeld spesifieke bladsye wat ge
** Intimiderende gedrag (teistering)
** Misbruik van veelvuldige rekeninge
** Onaanvaarbare gebruikersnaam',
-'ipbanononly' => 'Blokkeer slegs anonieme gebruikers',
+'ipb-hardblock' => 'Voorkom dat aangetekende gebruikers vanaf die IP-adres kan wysig',
'ipbcreateaccount' => 'Blokkeer registrasie van gebruikers',
'ipbemailban' => 'Verbied gebruiker om e-pos te stuur',
'ipbenableautoblock' => 'Outomaties die IP-adresse van die gebruiker blokkeer',
@@ -2375,12 +2438,15 @@ Vul 'n spesifieke rede hier onder in (haal byvoorbeeld spesifieke bladsye wat ge
'ipbotherreason' => 'Ander/ekstra rede:',
'ipbhidename' => 'Verberg gebruiker van wysigings en lyste',
'ipbwatchuser' => 'Hou die gebruiker se bladsy en besprekingsbladsy dop.',
-'ipballowusertalk' => 'Laat gebruiker toe om sy eie besprekingsblad tydens die blokkade te wysig',
+'ipb-disableusertalk' => 'Voorkom dat die gebruiker tydens die blokkade sy eie besprekingsblad kan wysig',
'ipb-change-block' => 'Herblokkeer die gebruiker met hierdie instellings',
+'ipb-confirm' => 'Bevestig blokkade',
'badipaddress' => 'Die IP-adres is nie in die regte formaat nie.',
'blockipsuccesssub' => 'Blokkering het geslaag',
'blockipsuccesstext' => "[[Special:Contributions/$1|$1]] is geblokkeer.<br />
Sien die [[Special:IPBlockList|IP-bloklys]] vir 'n oorsig van blokkerings.",
+'ipb-blockingself' => 'U is besig om uself te blokkeer! Is u seker u wil dit doen?',
+'ipb-confirmhideuser' => 'U staan op die punt om \'n "versteekte gebruiker" te blokkeer. Dit sal die gebruiker se naam vanaf alle lyste en logboeke onderdruk. Is u seker u wil om dit te doen?',
'ipb-edit-dropdown' => 'Werk lys van redes by',
'ipb-unblock-addr' => 'Deblokkeer $1',
'ipb-unblock' => "Deblokkeer 'n gebruiker of IP-adres",
@@ -2390,17 +2456,23 @@ Sien die [[Special:IPBlockList|IP-bloklys]] vir 'n oorsig van blokkerings.",
'unblockiptext' => "Gebruik die vorm hier onder om skryftoegang te herstel vir 'n voorheen geblokkeerde IP-adres.",
'ipusubmit' => 'Hef blokkade op',
'unblocked' => 'Blokkade van [[User:$1|$1]] is opgehef',
+'unblocked-range' => '$1 is gedeblokkeer',
'unblocked-id' => 'Blokkade $1 is opgehef',
+'blocklist' => 'Geblokkeerde gebruikers',
'ipblocklist' => 'Geblokkeerde IP-adresse en gebruikers',
'ipblocklist-legend' => "Soek 'n geblokkeerde gebruiker",
-'ipblocklist-username' => 'Gebruikersnaam of IP adres:',
-'ipblocklist-sh-userblocks' => 'gebruikersblokkades $1',
-'ipblocklist-sh-tempblocks' => 'tydelike blokkades $1',
-'ipblocklist-sh-addressblocks' => 'enkel IP-blokkades $1',
+'blocklist-userblocks' => 'Versteek geblokkeerde gebruikers',
+'blocklist-tempblocks' => 'Versteek tydelike blokkades',
+'blocklist-addressblocks' => 'Versteek blokkades met een IP-adres',
+'blocklist-timestamp' => 'Tydstip',
+'blocklist-target' => 'Doel',
+'blocklist-expiry' => 'Verval',
+'blocklist-by' => 'Geblokkeer deur',
+'blocklist-params' => 'Blokkadeparameters',
+'blocklist-reason' => 'Rede',
'ipblocklist-submit' => 'Soek',
'ipblocklist-localblock' => 'Lokale blokkade',
'ipblocklist-otherblocks' => 'Ander {{PLURAL:$1|blokkade|blokkades}}',
-'blocklistline' => '$1, $2 het $3 geblok ($4)',
'infiniteblock' => 'vir altyd',
'expiringblock' => 'verval op $1 om $2',
'anononlyblock' => 'anoniem-alleen',
@@ -2423,7 +2495,7 @@ Die verbergingslogboek word hieronder ter verwysing weergegee:',
'blocklogentry' => '"[[$1]]" is vir \'n periode van $2 $3 geblok',
'reblock-logentry' => 'het die instellings vir die blokkade vir [[$1]] gewysig. Dit verval nou op $2 om $3',
'blocklogtext' => "Hier is 'n lys van onlangse blokkeer en deblokkeer aksies. Outomaties geblokkeerde IP-adresse word nie vertoon nie.
-Sien die [[Special:IPBlockList|IP-bloklys]] vir geblokkeerde adresse.",
+Sien die [[Special:BlockList|IP-bloklys]] vir geblokkeerde adresse.",
'unblocklogentry' => 'blokkade van $1 is opgehef:',
'block-log-flags-anononly' => 'anonieme gebruikers alleenlik',
'block-log-flags-nocreate' => 'registrasie van gebruikers geblokkeer',
@@ -2437,10 +2509,10 @@ Sien die [[Special:IPBlockList|IP-bloklys]] vir geblokkeerde adresse.",
'ipb_expiry_temp' => 'Blokkades vir versteekte gebruikers moet permanent wees.',
'ipb_hide_invalid' => 'Dit is nie moontlik om hierdie gebruiker te verberg nie; miskien het hy al te veel wysigings gemaak.',
'ipb_already_blocked' => '"$1" is reeds geblok',
-'ipb-needreblock' => '== Hierdie gebruiker is reeds geblokkeer ==
-$1 is al geblokkeer.
+'ipb-needreblock' => '$1 is al geblokkeer.
Wil u die instellings wysig?',
'ipb-otherblocks-header' => 'Ander {{PLURAL:$1|blokkade|blokkades}}',
+'unblock-hideuser' => 'U kan nie die gebruiker deblokkeer nie, omdat die gebruikersnaam versteek is.',
'ipb_cant_unblock' => 'Fout: Blokkade-ID $1 kan nie gevind word nie.
Die blokkade is moontlik reeds opgehef.',
'ipb_blocked_as_range' => "Fout: die IP-adres $1 is nie direk geblokkeer nie en die blokkade kan nie opgehef word nie.
@@ -2482,6 +2554,7 @@ Bevestig asseblief dat dit is wat u wil doen.',
'lockfilenotwritable' => 'Kan nie na die databasis se sperlêer (lock file) skryf nie.
Om die databasis te ontsluit moet u skyfregte aan die lêer op die webbediener toeken.',
'databasenotlocked' => 'Die databasis is nie gesluit nie.',
+'lockedbyandtime' => '(deur $1 om $3 op $2)',
# Move page
'move-page' => 'Skuif "$1"',
@@ -2601,7 +2674,7 @@ In die laatste geval kan u ook \'n verwysing gebruik, byvoorbeeld [[{{#Special:E
'allmessagesdefault' => 'Verstekteks',
'allmessagescurrent' => 'Huidige teks',
'allmessagestext' => "Hier is 'n lys boodskappe wat in die ''MediaWiki''-naamspasie beskikbaar is.
-Gaan na [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisasie] en [http://translatewiki.net translatewiki.net] as u wil help om MediaWiki te vertaal.",
+Gaan na [//www.mediawiki.org/wiki/Localisation MediaWiki-lokalisasie] en [//translatewiki.net translatewiki.net] as u wil help om MediaWiki te vertaal.",
'allmessagesnotsupportedDB' => "Daar is geen ondersteuning vir '''{{ns:special}}:Allmessages''' omdat '''\$wgUseDatabaseMessages''' uitgeskakel is.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filtreer op staat van verandering:',
@@ -2746,9 +2819,7 @@ U kan daar \'n wysigingsopsomming byvoeg.',
'common.css' => '/** Gemeenskaplike CSS vir alle omslae */',
# Metadata
-'nodublincore' => 'Dublin Core RDF-metadata is afgeskakel op hierdie bediener.',
-'nocreativecommons' => 'Creative Commons RDF-metadata is afgeskakel op hierdie bediener.',
-'notacceptable' => "Die wikibediener kan nie data in 'n formaat wat jou kliënt kan lees verskaf nie.",
+'notacceptable' => "Die wikibediener kan nie data in 'n formaat wat jou kliënt kan lees verskaf nie.",
# Attribution
'anonymous' => 'Anonieme {{PLURAL:$1|gebruiker|gebruikers}} van {{SITENAME}}',
@@ -2772,39 +2843,23 @@ Hierdie situasie was waarskynlik deur 'n skakel na 'n eksterne webtuiste op ons
'spam_blanking' => "Alle weergawes met 'n skakel na $1 word verwyder",
# Info page
-'infosubtitle' => 'Inligting vir bladsy',
-'numedits' => 'Aantal wysigings (bladsy): $1',
-'numtalkedits' => 'Aantal wysigings (besprekingsblad): $1',
-'numwatchers' => 'Aantal dophouers: $1',
-'numauthors' => 'Aantal outeurs (bladsy): $1',
-'numtalkauthors' => 'Aantal outeurs (besprekingsblad): $1',
+'pageinfo-title' => 'Inligting oor "$1"',
+'pageinfo-header-edits' => 'Wysigings',
+'pageinfo-header-watchlist' => 'Dophoulys',
+'pageinfo-header-views' => 'Kere gewys',
+'pageinfo-subjectpage' => 'Bladsy',
+'pageinfo-talkpage' => 'Besprekingsblad',
+'pageinfo-watchers' => 'Aantal dophouers',
+'pageinfo-edits' => 'Aantal wysigings',
+'pageinfo-authors' => 'Aantal verskillende outeurs',
+'pageinfo-views' => 'Aantal kere gewys',
+'pageinfo-viewsperedit' => 'Kere gewys per wysiging',
# Skin names
'skinname-standard' => 'Standaard',
'skinname-nostalgia' => 'Nostalgie',
'skinname-cologneblue' => 'Keulen blou',
-# Math options
-'mw_math_png' => 'Gebruik altyd PNG.',
-'mw_math_simple' => 'Gebruik HTML indien dit eenvoudig is, andersins PNG.',
-'mw_math_html' => 'Gebruik HTML wanneer moontlik, andersins PNG.',
-'mw_math_source' => 'Los as TeX (vir teksblaaiers).',
-'mw_math_modern' => 'Moderne blaaiers.',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'Kon nie verbeeld nie',
-'math_unknown_error' => 'onbekende fout',
-'math_unknown_function' => 'onbekende funksie',
-'math_lexing_error' => 'leksikale fout',
-'math_syntax_error' => 'sintaksfout',
-'math_image_error' => 'PNG-omskakeling het gefaal.
-Kontroleer of LaTeX en dvipng (of dvips + gs + convert) korrek geïnstalleer is.',
-'math_bad_tmpdir' => 'Die gids vir tydelike lêers vir wiskundige formules bestaan nie of kan nie geskep word nie',
-'math_bad_output' => 'Die gids vir lêers met wiskundige formules bestaan nie of kan nie geskep word nie',
-'math_notexvc' => 'Kan nie die texvc program vind nie;
-stel asseblief op volgens die beskrywing in math/README.',
-
# Patrolling
'markaspatrolleddiff' => 'Merk as gekontroleerd',
'markaspatrolledtext' => 'Merk hierdie bladsy as gekontroleerd',
@@ -2840,21 +2895,24 @@ $1',
'nextdiff' => 'Nuwer wysiging →',
# Media information
-'mediawarning' => "'''Waarskuwing''': hierdie lêertipe bevat moontlik programkode wat u stelsel skade kan berokken.",
-'imagemaxsize' => "Beperk beeldgrootte tot:<br />''(vir lêerbeskrywingsbladsye)''",
-'thumbsize' => 'Grootte van duimnaelskets:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|bladsy|bladsye}}',
-'file-info' => 'lêergrootte: $1, MIME-tipe: $2',
-'file-info-size' => '$1 × $2 pixels, lêergrootte: $3, MIME type: $4',
-'file-nohires' => '<small>Geen hoër resolusie is beskikbaar nie.</small>',
-'svg-long-desc' => 'SVG-lêer, nominaal $1 × $2 pixels, lêergrootte: $3',
-'show-big-image' => 'Volle resolusie',
-'show-big-image-thumb' => '<small>Grootte van hierdie voorskou: $1 × $2 pixels</small>',
-'file-info-gif-looped' => 'herhalend',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|raam|rame}}',
-'file-info-png-looped' => 'herhalend',
-'file-info-png-repeat' => '$1 {{PLURAL:$1|keer|kere}} gespeel',
-'file-info-png-frames' => '$1 {{PLURAL:$1|raam|rame}}',
+'mediawarning' => "'''Waarskuwing''': hierdie lêertipe bevat moontlik programkode wat u stelsel skade kan berokken.",
+'imagemaxsize' => "Beperk beeldgrootte tot:<br />''(vir lêerbeskrywingsbladsye)''",
+'thumbsize' => 'Grootte van duimnaelskets:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|bladsy|bladsye}}',
+'file-info' => 'lêergrootte: $1, MIME-tipe: $2',
+'file-info-size' => '$1 × $2 pixels, lêergrootte: $3, MIME type: $4',
+'file-info-size-pages' => '$1 × $2 pikels, lêergrootte: $3, MIME-tipe: $4, $5 {{PLURAL:$5|bladsy|bladsye}}',
+'file-nohires' => '<small>Geen hoër resolusie is beskikbaar nie.</small>',
+'svg-long-desc' => 'SVG-lêer, nominaal $1 × $2 pixels, lêergrootte: $3',
+'show-big-image' => 'Volle resolusie',
+'show-big-image-preview' => '<small>Grootte van hierdie voorskou: $1.</small>',
+'show-big-image-other' => '<small>Ander resolusies: $1.</small>',
+'show-big-image-size' => '$1 × $2 piksels',
+'file-info-gif-looped' => 'herhalend',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|raam|rame}}',
+'file-info-png-looped' => 'herhalend',
+'file-info-png-repeat' => '$1 {{PLURAL:$1|keer|kere}} gespeel',
+'file-info-png-frames' => '$1 {{PLURAL:$1|raam|rame}}',
# Special:NewFiles
'newimages' => 'Gallery van nuwe beelde',
@@ -2881,7 +2939,7 @@ Enige opeenvolgende skakels op dieselfde lyn word as uitsonderings beskou, bv. b
As die lêer verander is, mag sekere inligting nie meer ooreenkom met die van die gewysigde lêer nie.",
'metadata-expand' => 'Wys uitgebreide gegewens',
'metadata-collapse' => 'Steek uitgebreide gegewens weg',
-'metadata-fields' => 'Die EXIF-metadatavelde wat in die boodskap gelys is sal op die beeld se bladsy ingesluit word as die metadatabel ingevou is.
+'metadata-fields' => "Die velde in die boodskap word ook gewys op 'n beeldbladsy as die metadatatabel toegevou is.
Ander velde sal versteek wees.
* make
* model
@@ -2889,7 +2947,13 @@ Ander velde sal versteek wees.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Breedte',
@@ -2904,13 +2968,11 @@ Ander velde sal versteek wees.
'exif-ycbcrpositioning' => 'Y- en C-posisionering',
'exif-xresolution' => 'Horisontale resolusie',
'exif-yresolution' => 'Vertikale resolusie',
-'exif-resolutionunit' => 'Eenheid X en Y resolusie',
'exif-stripoffsets' => 'Ligging van beeldgegewens',
'exif-rowsperstrip' => 'Rye per strook',
'exif-stripbytecounts' => 'Grepe per gekompakteerde strook',
'exif-jpeginterchangeformat' => 'Afstand na JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Grepe van JPEG-gegewens',
-'exif-transferfunction' => 'Oordragfunksie',
'exif-whitepoint' => 'Witpuntchromasiteit',
'exif-primarychromaticities' => 'Chromasiteit van primêre kleure',
'exif-ycbcrcoefficients' => 'Transformasiematriks-koëffisiënte vir die kleurruimte',
@@ -2929,7 +2991,6 @@ Ander velde sal versteek wees.
'exif-compressedbitsperpixel' => 'Beeldkompressiemetode',
'exif-pixelydimension' => 'Beeldwydte',
'exif-pixelxdimension' => 'Beeldhoogte',
-'exif-makernote' => 'Notas van vervaardiger',
'exif-usercomment' => 'Opmerkings',
'exif-relatedsoundfile' => 'Verwante klanklêer',
'exif-datetimeoriginal' => 'Gegewens opgestel op',
@@ -2943,7 +3004,6 @@ Ander velde sal versteek wees.
'exif-exposureprogram' => 'Beligtingsprogram',
'exif-spectralsensitivity' => 'Spektrale gevoeligheid',
'exif-isospeedratings' => 'ISO/ASA-waarde',
-'exif-oecf' => 'Opto-elektroniese konversiefaktor',
'exif-shutterspeedvalue' => 'Sluitersnelheid in APEX',
'exif-aperturevalue' => 'Diafragma in APEX',
'exif-brightnessvalue' => 'Helderheid in APEX',
@@ -2956,7 +3016,6 @@ Ander velde sal versteek wees.
'exif-focallength' => 'Brandpuntsafstand',
'exif-subjectarea' => 'Objekruimte',
'exif-flashenergy' => 'Flitssterkte',
-'exif-spatialfrequencyresponse' => 'Ruimtelike frekwensiereaksie',
'exif-focalplanexresolution' => 'Brandpuntsvlak-X-resolusie',
'exif-focalplaneyresolution' => 'Brandpuntsvlak-Y-resolusie',
'exif-focalplaneresolutionunit' => 'Eenheid CCD-resolusie',
@@ -2965,7 +3024,6 @@ Ander velde sal versteek wees.
'exif-sensingmethod' => 'Meetmetode',
'exif-filesource' => 'Lêerbron',
'exif-scenetype' => 'Soort toneel',
-'exif-cfapattern' => 'CFA-patroon',
'exif-customrendered' => 'Aangepaste beeldverwerking',
'exif-exposuremode' => 'Beligtingsinstelling',
'exif-whitebalance' => 'Witbalans',
@@ -3010,10 +3068,79 @@ Ander velde sal versteek wees.
'exif-gpsareainformation' => 'Naam van GPS-gebied',
'exif-gpsdatestamp' => 'GPS-datum',
'exif-gpsdifferential' => 'Differensiële GPS-korreksie',
+'exif-jpegfilecomment' => 'Opmerking in JPEG-lêer',
+'exif-keywords' => 'Sleutelwoorde',
+'exif-worldregioncreated' => 'Wêreldstreek waar die foto geneem is',
+'exif-countrycreated' => 'Land waar die foto geneem is',
+'exif-countrycodecreated' => 'Kode van land waar die foto geneem is',
+'exif-provinceorstatecreated' => 'Provinsie of staat waar die foto geneem is',
+'exif-citycreated' => 'Stad waar die foto geneem is',
+'exif-sublocationcreated' => 'Voorstad van die stad waar die beeld geneem is',
+'exif-worldregiondest' => 'Wêrelddeel getoon',
+'exif-countrydest' => 'Land getoon',
+'exif-countrycodedest' => 'Kode vir die land getoon',
+'exif-provinceorstatedest' => 'Provinsie of staat getoon',
+'exif-citydest' => 'Stad getoon',
+'exif-sublocationdest' => 'Deel van stad getoon',
'exif-objectname' => 'Kort titel',
+'exif-specialinstructions' => 'Spesiale instruksies',
+'exif-headline' => 'Opskrif',
+'exif-credit' => 'Krediet/Verskaffer',
+'exif-source' => 'Bron',
+'exif-editstatus' => 'Redaksionele status van beeld',
+'exif-urgency' => 'Dringendheid',
+'exif-fixtureidentifier' => 'Groepsnaam',
+'exif-locationdest' => 'Plek uitgebeeld',
+'exif-locationdestcode' => 'Kode van die uitgebeelde ligging',
+'exif-objectcycle' => 'Tyd van die dag waarvoor die media bedoel is',
+'exif-contact' => 'Kontak inligting',
+'exif-writer' => 'Skrywer',
+'exif-languagecode' => 'Taal',
+'exif-iimversion' => 'IIM-weergawe',
+'exif-iimcategory' => 'Kategorie',
+'exif-iimsupplementalcategory' => 'Aanvullende kategorieë',
+'exif-datetimeexpires' => 'Moenie gebruik na',
+'exif-datetimereleased' => 'Vrygestel op',
+'exif-originaltransmissionref' => 'Oorspronklike transmissie-liggingskode',
+'exif-identifier' => 'Id',
+'exif-lens' => 'Lens gebruik',
+'exif-serialnumber' => 'Reeksnommer van die kamera',
+'exif-cameraownername' => 'Eienaar van kamera',
+'exif-label' => 'Etiket',
+'exif-datetimemetadata' => 'Datum waarop metadata laas verander is',
+'exif-nickname' => 'Informele naam van die beeld',
+'exif-rating' => 'Waardering (uit 5)',
+'exif-rightscertificate' => 'Regtebeheersertifikaat',
+'exif-copyrighted' => 'Outeursregstus:',
+'exif-copyrightowner' => 'Kopiereghouer',
+'exif-usageterms' => 'Gebruiksvoorwaardes',
+'exif-webstatement' => 'Aanlyn outeursregteverklaring',
+'exif-originaldocumentid' => 'Unieke ID van die oorspronklike dokument',
+'exif-licenseurl' => 'URL vir kopiereg-lisensie',
+'exif-morepermissionsurl' => 'Alternatiewe lisensie-inligting',
+'exif-attributionurl' => 'Gebruik die volgende skakel as die werk hergebruik word',
+'exif-preferredattributionname' => 'Krediteer die volgende persone as die werk hergebruik word',
+'exif-pngfilecomment' => 'Opmerking in PNG-lêer',
+'exif-disclaimer' => 'Voorbehoud',
+'exif-contentwarning' => 'Waarskuwing oor inhoud',
+'exif-giffilecomment' => 'Opmerking in GIF-lêer',
+'exif-intellectualgenre' => 'Tipe item',
+'exif-subjectnewscode' => 'Onderwerpkode',
+'exif-scenecode' => 'IPTC toneelkode',
+'exif-event' => 'Gebeurtenis uitgebeeld',
+'exif-organisationinimage' => 'Organisasie uitgebeeld',
+'exif-personinimage' => 'Persoon uitgebeeld',
+'exif-originalimageheight' => 'Hoogte van beeld voor dit besny is',
+'exif-originalimagewidth' => 'Wydte van beeld voor dit besny is',
# EXIF attributes
'exif-compression-1' => 'Ongekompakteerd',
+'exif-compression-2' => 'CCITT Groep 3 1-dimensionale aangepaste "Huffman run length"-kodering',
+'exif-compression-3' => 'CCITT Groep 3 fakskodering',
+'exif-compression-4' => 'CCITT Groep 4 fakskodering',
+
+'exif-copyrighted-true' => 'Onder kopiereg',
+'exif-copyrighted-false' => 'Publieke Domein',
'exif-unknowndate' => 'Datum onbekend',
@@ -3029,6 +3156,8 @@ Ander velde sal versteek wees.
'exif-planarconfiguration-1' => 'chunky dataformaat',
'exif-planarconfiguration-2' => 'planar dataformat',
+'exif-colorspace-65535' => 'Nie gekalibreer',
+
'exif-componentsconfiguration-0' => 'bestaan nie',
'exif-exposureprogram-0' => 'Nie bepaal',
@@ -3142,6 +3271,10 @@ Ander velde sal versteek wees.
'exif-gpslongitude-e' => 'Oosterlengte',
'exif-gpslongitude-w' => 'Westerlengte',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|meter}} bo seespieël',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|meter}} onder seespieël',
+
'exif-gpsstatus-a' => 'Besig met meting',
'exif-gpsstatus-v' => 'Meetinteroperabiliteit',
@@ -3153,21 +3286,73 @@ Ander velde sal versteek wees.
'exif-gpsspeed-m' => 'Myl per huur',
'exif-gpsspeed-n' => 'Knope',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometers',
+'exif-gpsdestdistance-m' => 'Myle',
+'exif-gpsdestdistance-n' => 'Seemyle',
+
+'exif-gpsdop-excellent' => 'Uitstekend ($1)',
+'exif-gpsdop-good' => 'Goed ($1)',
+'exif-gpsdop-moderate' => 'Gemiddeld ($1)',
+'exif-gpsdop-fair' => 'Redelik ($1)',
+'exif-gpsdop-poor' => 'Sleg ($1)',
+
+'exif-objectcycle-a' => 'Slegs oggend',
+'exif-objectcycle-p' => 'Slegs aand',
+'exif-objectcycle-b' => 'Beide môre en die aand',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Regte rigting',
'exif-gpsdirection-m' => 'Magnetiese rigting',
+'exif-ycbcrpositioning-1' => 'Gesentreerd',
+'exif-ycbcrpositioning-2' => 'Val saam',
+
+'exif-dc-contributor' => 'Medewerkers',
+'exif-dc-coverage' => 'Ruimtelike of temporale omvang van die media',
+'exif-dc-date' => 'Datum(s)',
+'exif-dc-publisher' => 'Uitgewer',
+'exif-dc-relation' => 'Verwante media',
+'exif-dc-rights' => 'Regte',
+'exif-dc-source' => 'Bronmedia',
+'exif-dc-type' => 'Mediatipe',
+
+'exif-rating-rejected' => 'Afgewys',
+
+'exif-isospeedratings-overflow' => 'Groter as 65535',
+
+'exif-iimcategory-ace' => 'Kuns, kultuur en vermaak',
+'exif-iimcategory-clj' => 'Misdaad en die reg',
+'exif-iimcategory-dis' => 'Rampe en ongelukke',
+'exif-iimcategory-fin' => 'Ekonomie en besigheid',
+'exif-iimcategory-edu' => 'Onderwys',
+'exif-iimcategory-evn' => 'Omgewing',
+'exif-iimcategory-hth' => 'Gesondheid',
+'exif-iimcategory-hum' => 'Menslike belang',
+'exif-iimcategory-lab' => 'Arbeid',
+'exif-iimcategory-lif' => 'Leefstyl en ontspanning',
+'exif-iimcategory-pol' => 'Politiek',
+'exif-iimcategory-rel' => 'Godsdiens en geloof',
+'exif-iimcategory-sci' => 'Wetenskap en tegnologie',
+'exif-iimcategory-soi' => 'Sosiale kwessies',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Oorlog, konflik en onrus',
+'exif-iimcategory-wea' => 'Weer',
+
+'exif-urgency-normal' => 'Normaal ($1)',
+'exif-urgency-low' => 'Laag ( $1 )',
+'exif-urgency-high' => 'Hoog ($1)',
+'exif-urgency-other' => 'Gebruiker-gedefinieerde prioriteit ($1)',
+
# External editor support
'edit-externally' => "Wysig hierdie lêer met 'n eksterne program",
-'edit-externally-help' => '(Sien [http://www.mediawiki.org/wiki/Manual:External_editors instruksies] vir meer inligting)',
+'edit-externally-help' => '(Sien [//www.mediawiki.org/wiki/Manual:External_editors instruksies] vir meer inligting)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'alles',
-'imagelistall' => 'alle',
-'watchlistall2' => 'alles',
-'namespacesall' => 'alle',
-'monthsall' => 'alle',
-'limitall' => 'alle',
+'watchlistall2' => 'alles',
+'namespacesall' => 'alle',
+'monthsall' => 'alle',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'Bevestig e-posadres',
@@ -3241,16 +3426,24 @@ $1',
'trackbackdeleteok' => 'Die verwysende bladsy is suksesvol verwyder.',
# Delete conflict
-'deletedwhileediting' => "'''Let op''': die bladsy is verwyder terwyl u besig was om dit te wysig!",
-'confirmrecreate' => "Gebruiker [[User:$1|$1]] ([[User talk:$1|bespreek]]) het hierdie blad uitgevee ná u begin redigeer het met rede: : ''$2''
+'deletedwhileediting' => "'''Let op''': die bladsy is verwyder terwyl u besig was om dit te wysig!",
+'confirmrecreate' => "Gebruiker [[User:$1|$1]] ([[User talk:$1|bespreek]]) het hierdie blad uitgevee ná u begin redigeer het met rede: : ''$2''
Bevestig asseblief dat u regtig hierdie blad oor wil skep.",
-'recreate' => 'Herskep',
+'confirmrecreate-noreason' => 'Gebruiker [[User:$1|$1]] ([[User talk:$1|bespreking]]) het die bladsy geskrap nadat u dit begin wysig het.
+Bevestig dat u die bladsy wil herskep.',
+'recreate' => 'Herskep',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Verwyder die kas van hierdie blad?',
'confirm-purge-bottom' => "Die opruiming van die kas sorg daarvoor dat die mees onlangse weergawe van 'n bladsy vertoon word.",
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Voeg hierdie bladsy by u dophoulys?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Verwyder hierdie bladsy van u dophoulys?',
+
# Multipage image navigation
'imgmultipageprev' => '↠vorige bladsy',
'imgmultipagenext' => 'volgende bladsy →',
@@ -3300,7 +3493,7 @@ Probeer normale voorskou.',
'watchlistedit-normal-legend' => 'Verwyder titels van dophoulys',
'watchlistedit-normal-explain' => 'Die bladsye in u dophoulys word hier onder vertoon.
Selekteer die titels wat verwyder moet word en kliek op {{int:Watchlistedit-normal-submit}}" onder aan die bladsy.
-Alternatiewelik kan u die [[Special:Watchlist/raw|bronkode wysig]].',
+Alternatiewelik kan u die [[Special:EditWatchlist/raw|bronkode wysig]].',
'watchlistedit-normal-submit' => 'Verwyder Titels',
'watchlistedit-normal-done' => 'Daar is {{PLURAL:$1|1 bladsy|$1 bladsye}} van u dophoulys verwyder:',
'watchlistedit-raw-title' => 'Wysig u dophoulys se bronkode',
@@ -3308,7 +3501,7 @@ Alternatiewelik kan u die [[Special:Watchlist/raw|bronkode wysig]].',
'watchlistedit-raw-explain' => 'Die bladsye in u dophoulys word hier onder vertoon.
U kan die lys wysig deur titels by te sit of te verwyder (een bladsy per lyn).
As u klaar is, klik op "{{int:Watchlistedit-raw-submit}}" onder aan die bladsy.
-U kan ook die [[Special:Watchlist/edit|standaard opdaterigskerm gebruik]].',
+U kan ook die [[Special:EditWatchlist|standaard opdaterigskerm gebruik]].',
'watchlistedit-raw-titles' => 'Titels:',
'watchlistedit-raw-submit' => 'Opdateer dophoulys',
'watchlistedit-raw-done' => 'U dophoulys is opgedateer.',
@@ -3325,33 +3518,33 @@ U kan ook die [[Special:Watchlist/edit|standaard opdaterigskerm gebruik]].',
'duplicate-defaultsort' => 'Waarskuwing: Die standaardsortering "$2" kry voorrang voor die sortering "$1".',
# Special:Version
-'version' => 'Weergawe',
-'version-extensions' => 'Uitbreidings geïnstalleer',
-'version-specialpages' => 'Spesiale bladsye',
-'version-parserhooks' => 'Ontlederhoeke',
-'version-variables' => 'Veranderlikes',
-'version-skins' => 'Omslae',
-'version-other' => 'Ander',
-'version-mediahandlers' => 'Mediaverwerkers',
-'version-hooks' => 'Hoeke',
-'version-extension-functions' => 'Uitbreidingsfunksies',
-'version-parser-extensiontags' => 'Ontleder-uitbreidingsetikette',
-'version-parser-function-hooks' => 'Ontleder-funksiehoeke',
-'version-skin-extension-functions' => 'Omslag-uitbreidingsfunksies',
-'version-hook-name' => 'Hoek naam',
-'version-hook-subscribedby' => 'Gebruik deur',
-'version-version' => '(Weergawe $1)',
-'version-license' => 'Lisensie',
-'version-poweredby-credits' => "Hierdie wiki word aangedryf deur '''[http://www.mediawiki.org/ MediaWiki]''', kopiereg © 2001-$1 $2.",
-'version-poweredby-others' => 'andere',
-'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.
+'version' => 'Weergawe',
+'version-extensions' => 'Uitbreidings geïnstalleer',
+'version-specialpages' => 'Spesiale bladsye',
+'version-parserhooks' => 'Ontlederhoeke',
+'version-variables' => 'Veranderlikes',
+'version-antispam' => 'Spam-voorkoming',
+'version-skins' => 'Omslae',
+'version-other' => 'Ander',
+'version-mediahandlers' => 'Mediaverwerkers',
+'version-hooks' => 'Hoeke',
+'version-extension-functions' => 'Uitbreidingsfunksies',
+'version-parser-extensiontags' => 'Ontleder-uitbreidingsetikette',
+'version-parser-function-hooks' => 'Ontleder-funksiehoeke',
+'version-hook-name' => 'Hoek naam',
+'version-hook-subscribedby' => 'Gebruik deur',
+'version-version' => '(Weergawe $1)',
+'version-license' => 'Lisensie',
+'version-poweredby-credits' => "Hierdie wiki word aangedryf deur '''[//www.mediawiki.org/ MediaWiki]''', kopiereg © 2001-$1 $2.",
+'version-poweredby-others' => 'andere',
+'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.
-Saam met die program moes u \'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van van die "GNU Algemene Publieke Lisensie"] ontvang het, indien nie, skryf aan die "Free Software Foundation, Inc", 51 Franklin-straat, Vyfde Vloer, Boston, MA 02110-1301, Verenigde State van Amerika of [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html lees dit hier aanlyn].',
-'version-software' => 'Geïnstalleerde sagteware',
-'version-software-product' => 'Produk',
-'version-software-version' => 'Weergawe',
+Saam met die program moes u \'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van van die "GNU Algemene Publieke Lisensie"] ontvang het, indien nie, skryf aan die "Free Software Foundation, Inc", 51 Franklin-straat, Vyfde Vloer, Boston, MA 02110-1301, Verenigde State van Amerika of [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lees dit hier aanlyn].',
+'version-software' => 'Geïnstalleerde sagteware',
+'version-software-product' => 'Produk',
+'version-software-version' => 'Weergawe',
# Special:FilePath
'filepath' => 'Lêerpad',
@@ -3361,22 +3554,22 @@ Saam met die program moes u \'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van van
Beelde word in hulle volle resolusie gewys. Ander lêertipes word direk met hulle MIME-geskakelde programme geopen.",
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Soek duplikaat lêers',
-'fileduplicatesearch-summary' => 'Soek na duplikaat lêers volgends hul hashwaardes.
-
-Verskaf die lêernaam sonder die "{{ns:file}}:" voorvoegsel.',
-'fileduplicatesearch-legend' => "Soek vir 'n duplikaat",
-'fileduplicatesearch-filename' => 'Lêernaam:',
-'fileduplicatesearch-submit' => 'Soek',
-'fileduplicatesearch-info' => '$1 × $2 pixels<br />Lêergrootte: $3<br />MIME-tipe: $4',
-'fileduplicatesearch-result-1' => 'Die lêer "$1" het geen identiese duplikate nie.',
-'fileduplicatesearch-result-n' => 'Die lêer "$1" het {{PLURAL:$2|een identiese duplikaat|$2 identiese duplikate}}.',
+'fileduplicatesearch' => 'Soek duplikaat lêers',
+'fileduplicatesearch-summary' => 'Soek na duplikaat lêers volgends hul hashwaardes.',
+'fileduplicatesearch-legend' => "Soek vir 'n duplikaat",
+'fileduplicatesearch-filename' => 'Lêernaam:',
+'fileduplicatesearch-submit' => 'Soek',
+'fileduplicatesearch-info' => '$1 × $2 pixels<br />Lêergrootte: $3<br />MIME-tipe: $4',
+'fileduplicatesearch-result-1' => 'Die lêer "$1" het geen identiese duplikate nie.',
+'fileduplicatesearch-result-n' => 'Die lêer "$1" het {{PLURAL:$2|een identiese duplikaat|$2 identiese duplikate}}.',
+'fileduplicatesearch-noresults' => 'Daar is nie \'n lêer met die naam "$1" nie.',
# Special:SpecialPages
'specialpages' => 'Spesiale bladsye',
'specialpages-note' => '----
* Normale spesiale bladsye.
-* <strong class="mw-specialpagerestricted">Beperkte spesiale bladsye.</strong>',
+* <span class="mw-specialpagerestricted">Spesiale bladsye met beperkte toegang.</span>
+* <span class="mw-specialpagecached">Spesiale bladsye met gegewens uit die kas (kan verouderd wees).</span>',
'specialpages-group-maintenance' => 'Onderhoud verslae',
'specialpages-group-other' => 'Ander spesiale bladsye',
'specialpages-group-login' => 'Inteken / aansluit',
diff --git a/languages/messages/MessagesAln.php b/languages/messages/MessagesAln.php
index 1aa670cf..14467551 100644
--- a/languages/messages/MessagesAln.php
+++ b/languages/messages/MessagesAln.php
@@ -49,8 +49,8 @@ $specialPageAliases = array(
);
$magicWords = array(
- 'currentmonth' => array( '1', 'MUEJIAKTUAL', 'MUEJIAKTUAL2', 'MUAJIMOMENTAL', 'CURRENTMONTH', 'CURRENTMONTH2' ),
- 'currentmonth1' => array( '1', 'MUEJIAKTUAL1', 'CURRENTMONTH1' ),
+ 'currentmonth' => array( '1', 'MUEJIAKTUAL', 'MUEJIAKTUAL2', 'MUAJIMOMENTAL', 'MUAJIMOMENTAL2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'MUEJIAKTUAL1', 'MUAJIMOMENTAL1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'EMNIMUEJITAKTUAL', 'EMRIIMUAJITMOMENTAL', 'CURRENTMONTHNAME' ),
'currenttime' => array( '1', 'KOHATASH', 'KOHATANI', 'CURRENTTIME' ),
'currenthour' => array( '1', 'ORATASH', 'ORATANI', 'CURRENTHOUR' ),
@@ -192,16 +192,6 @@ $messages = array(
'index-category' => 'Faqe e indeksume',
'noindex-category' => 'Faqe e paindeksume',
-'mainpagetext' => "'''MediaWiki software u instalue me sukses.'''",
-'mainpagedocfooter' => 'Për mâ shumë informata rreth përdorimit të softwareit wiki, ju lutem shikoni [http://meta.wikimedia.org/wiki/Help:Contents dokumentacionin].
-
-
-== Për fillim ==
-
-* [http://www.mediawiki.org/wiki/Help:Configuration_settings Konfigurimi i MediaWikit]
-* [http://www.mediawiki.org/wiki/Help:FAQ Pyetjet e shpeshta rreth MediaWikit]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Njoftime rreth MediaWikit]',
-
'about' => 'Rreth',
'article' => 'Artikulli',
'newwindow' => '(çelet në nji dritare të re)',
@@ -252,7 +242,6 @@ $messages = array(
'history' => 'Historiku i faqes',
'history_short' => 'Të përparshmet',
'updatedmarker' => 'ndryshue nga vizita jeme e fundit',
-'info_short' => 'Informacion',
'printableversion' => 'Version për shtyp',
'permalink' => 'Vegëz e përhershme',
'print' => 'Shtyp',
@@ -443,12 +432,11 @@ Ju lutemi provoni prap mbas disa minutave.',
'protectedinterface' => 'Kjo faqe përmban tekst të interfaceit të softwareit dhe âsht e mbrojtun për me pengue keqpërdorimin.',
'editinginterface' => "'''Kujdes:''' Po redaktoni nji faqe që përdoret për me ofrue tekst të interfaceit të softwareit.
Ndryshimet në këtë faqe do të prekin pamjen e interfaceit për të gjithë përdoruesit tjerë.
-Për përkthim, konsideroni ju lutem përdorimin e [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], projektin e MediaWiki për përshtatje gjuhësore.",
+Për përkthim, konsideroni ju lutem përdorimin e [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], projektin e MediaWiki për përshtatje gjuhësore.",
'sqlhidden' => '(Kërkesa SQL e msheftë)',
'cascadeprotected' => 'Kjo faqe âsht e mbrojtun prej redaktimit, për shkak se âsht e përfshime në {{PLURAL:$1|faqen, e cila âsht e mbrojtun|faqet, të cilat janë të mbrojtuna}} me opcionin "zinxhir" të zgjedhun:
$2',
'namespaceprotected' => "Nuk keni tagër me redaktue faqe në hapësinën '''$1'''.",
-'customcssjsprotected' => 'Nuk keni tagër me redaktue këtë faqe, sepse përmban përcaktime personale të nji përdoruesi tjetër.',
'ns-specialprotected' => 'Faqet speciale nuk mujnë me u redaktue.',
'titleprotected' => 'Ky titull âsht i mbrojtun për krijim prej përdoruesit [[User:$1|$1]].
Arsyeja e dhânë âsht "\'\'$2\'\'".',
@@ -506,7 +494,7 @@ Të lutem aktivizoji dhe provo prap.',
'nosuchuser' => 'Nuk ka përdorues me emnin "$1".
Emnat janë senzitiv në madhësi të germës.
Kontrollo drejtshkrimin ose [[Special:UserLogin/signup|krijo llogari]].',
-'nosuchusershort' => 'Nuk ka përdorues me emnin "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Nuk ka përdorues me emnin "$1".
Kontrollo drejtshkrimin.',
'nouserspecified' => 'Duhesh me dhânë nji nofkë.',
'login-userblocked' => 'Ky përdorues është bllokuar. Identifikohu nuk lejohet',
@@ -559,7 +547,7 @@ Ju lutemi pritni pak për me provue prap.',
'loginlanguagelabel' => 'Gjuha: $1',
'suspicious-userlogout' => 'Kërkesa juaj për të shkëputet u mohua sepse duket sikur është dërguar nga një shfletues të thyer ose caching proxy',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Ndrysho fjalëkalimin',
'resetpass_announce' => 'Jeni kyçë me nji kod të përkohshëm të dërguem me email.
Për me krye kyçjen, specifikoni fjalëkalimin e ri këtu:',
@@ -578,6 +566,10 @@ Për me krye kyçjen, specifikoni fjalëkalimin e ri këtu:',
Ndoshta tashmâ e keni ndryshue fjalëkalimin me sukses, apo keni kërkue nji fjalëkalim të përkohshëm.',
'resetpass-temp-password' => 'Fjalëkalimi i përkohshëm:',
+# Special:PasswordReset
+'passwordreset' => 'reset Fjalëkalimi',
+'passwordreset-username' => 'Emri i përdoruesit:',
+
# Edit page toolbar
'bold_sample' => 'Tekst i trashë',
'bold_tip' => 'Tekst i nximë',
@@ -589,8 +581,6 @@ Ndoshta tashmâ e keni ndryshue fjalëkalimin me sukses, apo keni kërkue nji fj
'extlink_tip' => 'Vegëz e jashtme (mos e harro prefiksin http://)',
'headline_sample' => 'Teksti i kryetitullit',
'headline_tip' => 'Kryetitull i nivelit 2',
-'math_sample' => 'Vendos formulën këtu',
-'math_tip' => 'Formulë matematikore (LaTeX)',
'nowiki_sample' => 'Vendos tekst të paformatueshëm këtu',
'nowiki_tip' => 'Shpërfille formatimin wiki',
'image_sample' => 'Shembull.jpg',
@@ -677,7 +667,7 @@ Nëse jeni përdorues anonim dhe keni përshtypjen se po ju drejtohen komente jo
Ju mundeni [[Special:Search/{{PAGENAME}}|me kërkue këtë titull]] në faqe tjera,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} me kërkue në regjistrat tematikisht të afërm],
apo [{{fullurl:{{FULLPAGENAME}}|action=edit}} me redaktue këtë faqe]</span>.',
-'userpage-userdoesnotexist' => 'Llogaria e përdoruesit "$1" nuk âsht regjistrue.
+'userpage-userdoesnotexist' => 'Llogaria e përdoruesit "<nowiki>$1</nowiki>" nuk âsht regjistrue.
Ju lutemi kontrolloni nëse doni me krijue/redaktue këtë faqe.',
'clearyourcache' => "'''Shenim - Mbas ruejtjes, ka mundësi që duheni me shmângë memorizimin në cache për me i pâ ndryshimet.'''
'''Mozilla / Firefox / Safari:''' mbani ''Shift'' tue klikue në ''Reload'', ose trusni ''Ctrl-F5'' ose ''Ctrl-R'' (''Command-R'' në Mac);
@@ -995,9 +985,10 @@ Vini re se indeksat e tyne të përmbajtjes së {{SITENAME}} munden me qenë të
'changepassword' => 'Ndërrimi i fjalëkalimit',
'prefs-skin' => 'Doka',
'skin-preview' => 'Parapâmja',
-'prefs-math' => 'Formulë',
'datedefault' => "S'ka parapëlqim",
+'prefs-beta' => 'karakteristika Beta',
'prefs-datetime' => 'Data dhe ora',
+'prefs-labs' => 'Laboratorë karakteristika',
'prefs-personal' => 'Profili i përdoruesit',
'prefs-rc' => 'Ndryshimet e freskëta',
'prefs-watchlist' => 'Lista e mbikëqyrjeve',
@@ -1018,8 +1009,6 @@ Vini re se indeksat e tyne të përmbajtjes së {{SITENAME}} munden me qenë të
'columns' => 'Kolona:',
'searchresultshead' => 'Kërkimi',
'resultsperpage' => 'Gjetje për faqe:',
-'contextlines' => 'Rreshta për gjetje:',
-'contextchars' => 'Konteksti për rresht:',
'stub-threshold' => 'Pragu për formatimin e <a href="#" class="stub">vegzave të cungueme</a> në (byte):',
'recentchangesdays' => 'Numri i ditëve për me i tregue te ndryshimet e freskëta:',
'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|ditë|ditë}})',
@@ -1316,10 +1305,8 @@ Faqet në [[Special:Watchlist|listën tuej të mbikëqyrjes]] janë '''të theks
# Watchlist
'watchlist' => 'Mbikëqyrjet e mija',
'mywatchlist' => 'Lista mbikqyrëse',
-'addedwatch' => 'U shtu te lista mbikqyrëse',
'addedwatchtext' => "Faqja \"[[:\$1]]\" iu shtue [[Special:Watchlist|listës suej të mbikëqyrjes]].
Ndryshimet e ardhshme të kësaj faqeje dhe të faqes gjegjëse të diskutimit kanë me u listue këte, dhe faqja do të tregohet '''e theksueme''' në [[Special:RecentChanges|listën e ndryshimeve të fundit]] për me râ në sy.",
-'removedwatch' => 'U hjek nga lista mibkqyrëse',
'removedwatchtext' => 'Faqja "[[:$1]]" âsht hjekë prej [[Special:Watchlist|listës së mbikëqyrjes]].',
'watch' => 'Mbikqyre',
'watchthispage' => 'Mbikëqyr këtë faqe',
@@ -1337,7 +1324,7 @@ Ndryshimet e ardhshme të kësaj faqeje dhe të faqes gjegjëse të diskutimit k
'confirmdeletetext' => 'Jeni tue fshi nji faqe bashkë me krejt historikun e saj.
Ju lutemi konfirmoni që kjo âsht ajo që deshtët me bâ, që i keni të njoftuna konsekuencat, dhe që këtë jeni tue e bâ në përputhje me [[{{MediaWiki:Policy-url}}|politikat]].',
'actioncomplete' => 'Veprimi u kry',
-'deletedtext' => '"<nowiki>$1</nowiki>" âsht fshi.
+'deletedtext' => '"$1" âsht fshi.
Shih $2 për regjistrin e fshimjeve të fundit.',
'deletedarticle' => 'grisi "[[$1]]"',
'dellogpage' => 'Regjistri i fshimjeve',
@@ -1357,7 +1344,7 @@ Shih $2 për regjistrin e fshimjeve të fundit.',
'protectexpiry' => 'Afáti',
'protect_expiry_invalid' => 'Data e skadimit asht e pasaktë.',
'protect_expiry_old' => 'Data e skadimit asht në kohën kalueme.',
-'protect-text' => "Këtu muneni me shiku dhe me ndryshu nivelin e mbrojtjes për faqen '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Këtu muneni me shiku dhe me ndryshu nivelin e mbrojtjes për faqen '''$1'''.",
'protect-locked-access' => "Llogaria juej nuk ka privilegjet e nevojitme për me ndryshu nivelin e mbrojtjes. Kufizimet e kësaj faqe janë '''$1''':",
'protect-cascadeon' => 'Kjo faqe aktualisht âsht e mbrojtun sepse përfshihet në {{PLURAL:$1|faqen që ka|faqet, të cilat kanë}} mbrojtje të përfshimjes.
Mundeni me ndryshue nivelin e mbrojtjes për këtë faqe, por kjo nuk ka me prekë mbrojtjen e përfshimjes.',
@@ -1568,9 +1555,7 @@ Lejon dhânien e arsyes në përmbledhje.',
'vector.js' => '/* Çdo JavaScript këtu ka me u ngarkue për shfrytëzuesit që përdorin dukjen Vector */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata nuk janë aktivizue në këtë server.',
-'nocreativecommons' => 'Creative Commons RDF metadata nuk janë aktivizue në këtë server.',
-'notacceptable' => 'Serveri i wikit nuk mundet me i ofrue të dhânat në formatin që kish mujtë me i lexue klienti juej.',
+'notacceptable' => 'Serveri i wikit nuk mundet me i ofrue të dhânat në formatin që kish mujtë me i lexue klienti juej.',
# Attribution
'anonymous' => '{{PLURAL:$1|Përdorues|Përdorues}} anonim të {{SITENAME}}',
@@ -1586,11 +1571,10 @@ Lejon dhânien e arsyes në përmbledhje.',
'nextdiff' => 'Redaktim ma i ri →',
# Media information
-'file-info-size' => '$1 × $2 pixela, madhësia e skedës: $3, tipi MIME: $4',
-'file-nohires' => '<small>Rezolucioni i plotë.</small>',
-'svg-long-desc' => 'skeda SVG, $1 × $2 pixela, madhësia: $3',
-'show-big-image' => 'Rezolucion i plotë',
-'show-big-image-thumb' => '<small>Madhësia e parapâmjes: $1 × $2 pixela</small>',
+'file-info-size' => '$1 × $2 pixela, madhësia e skedës: $3, tipi MIME: $4',
+'file-nohires' => '<small>Rezolucioni i plotë.</small>',
+'svg-long-desc' => 'skeda SVG, $1 × $2 pixela, madhësia: $3',
+'show-big-image' => 'Rezolucion i plotë',
# Bad image list
'bad_image_list' => 'Formati asht si vijon:
@@ -1625,11 +1609,17 @@ Tjerat kanë me mbetë të mshefuna.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Ndryshoni kët figurë/skedë me një mjet të jashtëm',
-'edit-externally-help' => '(Shih [http://www.mediawiki.org/wiki/Manual:External_editors udhëzimet e instalimit] për mâ shumë informata)',
+'edit-externally-help' => '(Shih [//www.mediawiki.org/wiki/Manual:External_editors udhëzimet e instalimit] për mâ shumë informata)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'krejt',
diff --git a/languages/messages/MessagesAm.php b/languages/messages/MessagesAm.php
index b914623e..fbdedd28 100644
--- a/languages/messages/MessagesAm.php
+++ b/languages/messages/MessagesAm.php
@@ -41,9 +41,9 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Shortpages' => array( 'አጫጭር_ገጾች' ),
'Longpages' => array( 'ረጃጅáˆ_ገጾች' ),
'Newpages' => array( 'አዳዲስ_ገጾች' ),
+ 'Shortpages' => array( 'አጫጭር_ገጾች' ),
);
$messages = array(
@@ -165,15 +165,7 @@ $messages = array(
'category-file-count-limited' => 'በዚሠመደብ á‹áˆµáŒ¥ {{PLURAL:$1|የሚከተለዠá‹á‹­áˆ አለ|የሚከተሉት $1 á‹á‹­áˆŽá‰½ አሉ}}á¢',
'listingcontinuesabbrev' => '(ተቀጥáˆáˆ)',
'index-category' => ' ማá‹áŒ«á‹ ላይ የተመዘገብ ገጾች',
-
-'mainpagetext' => "'''MediaWiki በትክክሠማስገባቱ ተከናወáŠá¢'''",
-'mainpagedocfooter' => "ስለ ዊኪ ሶáትዌር ጥቅሠለመረዳትᣠ[http://meta.wikimedia.org/wiki/Help:Contents User's Guide] ያንብቡá¢
-
-== ለመጀመር ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+'broken-file-category' => 'የማይኖሩ á‹á‹­áˆŽá‰½ ያሉባቸዠገጾች',
'about' => 'ስለ',
'article' => 'መጣጥá',
@@ -207,7 +199,7 @@ $messages = array(
'vector-view-create' => 'አዲስ áጠር',
'vector-view-edit' => 'አርáˆ',
'vector-view-history' => ' ታሪኩን አሳይ',
-'vector-view-view' => ' የተáŠá‰ á‰ ',
+'vector-view-view' => 'ለማንበብ',
'vector-view-viewsource' => 'ጥሬ ኮድ ለመመáˆáŠ¨á‰µ',
'errorpagetitle' => 'ስህተት',
@@ -221,7 +213,6 @@ $messages = array(
'history' => 'የገጽ ታሪክ',
'history_short' => 'ታሪክ',
'updatedmarker' => 'ከመጨረሻዠጉብáŠá‰´ በኋላ የተሻሻለ',
-'info_short' => 'መረጃ',
'printableversion' => 'ለህትመት የተዘጋጀ',
'permalink' => 'ቋሚ መያያዣ',
'print' => 'ይታተáˆ',
@@ -291,7 +282,7 @@ $1',
'badaccess' => 'á‹«áˆá‰°áˆá‰€á‹° - አይቻáˆáˆ',
'badaccess-group0' => 'የጠየá‰á‰µ አድራጎት እንዲáˆáŒ¸áˆ áˆá‰ƒá‹µ የለዎáˆá¢',
-'badaccess-groups' => ' ጥያቂዎት ለሚተሉት ተጥቃሚዎች የተገደበ áŠá‹ {{PLURAL:$2|ማህበር|ከማህበራት ላንዱ}}: $1.',
+'badaccess-groups' => 'የጠየá‰á‰µ አድራጎት ለ$1 {{PLURAL:$2|ማዕረጠላላቸá‹|ማዕረጎች ላáˆá‰¸á‹}} አባላት ብቻ á‹­áˆá‰€á‹³áˆá¢',
'versionrequired' => 'የMediaWiki á‹áˆ­á‹« $1 ያስáˆáˆáŒ‹áˆá¢',
'versionrequiredtext' => 'ይህንን ገጽ ለመጠቀሠየMediaWiki á‹áˆ­á‹« $1 ያስáˆáˆáŒ‹áˆá¢ [[Special:Version|የá‹áˆ­á‹«á‹áŠ• ገጽ]] á‹­á‹©á¢',
@@ -384,12 +375,11 @@ $1',
'protectedpagetext' => 'ይኸዠገጽ እንዳይታረሠተጠብቋáˆá¢',
'viewsourcetext' => 'የዚህን ገጽ áˆáŠ•áŒ­ ማየትና መቅዳት ይችላሉá¢',
'protectedinterface' => 'ይህ ገጽ ለስáˆá‰± ገጽታ ጽሑáን ያቀርባáˆá£á¡ ስለዚህ እንዳይበላሽ ተጠብቋáˆá¢',
-'editinginterface' => "'''ማስጠንቀቂያá¦''' ይህ ገጽ ለድረገጹ መáˆáŠ­ ጽሕáˆá‰µ ይሰጣáˆá¢ በዊኪ áˆáˆ‰ ላይ መላá‹áŠ• የድረገጽ መáˆáŠ­ በቀላሠለማስተርጎሠ[http://translatewiki.net/wiki/Main_Page?setlang=am translatewiki.net] ይጎብኙá¢",
+'editinginterface' => "'''ማስጠንቀቂያá¦''' ይህ ገጽ ለድረገጹ መáˆáŠ­ ጽሕáˆá‰µ ይሰጣáˆá¢ በዊኪ áˆáˆ‰ ላይ መላá‹áŠ• የድረገጽ መáˆáŠ­ በቀላሠለማስተርጎሠ[//translatewiki.net/wiki/Main_Page?setlang=am translatewiki.net] ይጎብኙá¢",
'sqlhidden' => '(የመደበኛ-የመጠይቅ-ቋንቋ (SQL) ጥያቄ ተደበቀ)',
'cascadeprotected' => "'''ማስጠንቀቂያá¦''' ይህ አርእስት ሊáˆáŒ áˆ­ ወይሠሊቀየር አይቻáˆáˆá¢ áˆáŠ­áŠ•á‹«á‰±áˆ ወደ {{PLURAL:$1|ተከታተለዠአርዕስት|ተከታተሉት አርእስቶች}} ተጨáˆáˆ¯áˆá¢
$2",
'namespaceprotected' => "በ'''$1''' ክáለ-ዊኪ ያሉትን ገጾች ለማዘጋጀት áˆá‰ƒá‹µ የለዎáˆá¢",
-'customcssjsprotected' => 'ይህ ገጽ የሌላ ተጠቃሚ áˆáˆ­áŒ«á‹Žá‰½ ስላሉበት እሱን ለማዘጋጀት áˆá‰ƒá‹µ የለዎáˆá¢',
'ns-specialprotected' => 'áˆá‹© ገጾችን ማረሠአይáˆá‰€á‹µáˆá¢',
'titleprotected' => "ይህ አርዕስት እንዳይáˆáŒ áˆ­ በ[[User:$1|$1]] ተጠብቋáˆá¢ የተሰጠዠáˆáŠ­áŠ•á‹«á‰µ ''$2'' áŠá‹á¢",
@@ -432,7 +422,7 @@ $2",
'loginsuccesstitle' => 'መáŒá‰£á‰µá‹Ž ተከናወáŠ!',
'loginsuccess' => 'እንደ «$1» ሆáŠá‹ አáˆáŠ• {{SITENAME}}ን ገብተዋáˆá¢',
'nosuchuser' => '«$1» የሚሠብዕር ስሠአáˆá‰°áŒˆáŠ˜áˆá¢ አጻጻá‰áŠ• ይመáˆáŠ¨á‰± ወይሠአዲስ ብዕር ስሠያá‹áŒ¡á¢',
-'nosuchusershort' => '«<nowiki>$1</nowiki>» የሚሠብዕር ስሠአáˆá‰°áŒˆáŠ˜áˆá¢ አጻጻá‰áŠ• ይመáˆáŠ¨á‰±á¢',
+'nosuchusershort' => '«$1» የሚሠብዕር ስሠአáˆá‰°áŒˆáŠ˜áˆá¢ አጻጻá‰áŠ• ይመáˆáŠ¨á‰±á¢',
'nouserspecified' => 'አንድ ብዕር ስሠመጠቆሠያስáˆáˆáŒ‹áˆá¢',
'wrongpassword' => 'የተሰጠዠመáŒá‰¢á‹« ቃሠáˆáŠ­ አáˆáŠá‰ áˆ¨áˆá¢ ዳáŒáˆ˜áŠ› ይሞክሩá¢',
'wrongpasswordempty' => 'áˆáŠ•áˆ መáŒá‰¢á‹« ቃሠአáˆá‰°áˆ°áŒ áˆá¢ ዳáŒáˆ˜áŠ› ይሞክሩá¢',
@@ -465,7 +455,7 @@ $2",
እባክዎ እንደገና ሳይሞክሩ ለጥቂት ደቂቃ ይቆዩá¢',
'loginlanguagelabel' => 'ቋáˆá‰‹á¦ $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'የአባሠመáŒá‰¢á‹« ቃሠለመቀየር',
'resetpass_announce' => 'በኢ-ሜሠበተላከ ጊዜያዊ ኮድ ገብተዋáˆá¢ መáŒá‰£á‰µá‹ŽáŠ• ለመጨርስᣠአዲስ መáŒá‰¢á‹« ቃሠእዚህ መáˆáˆ¨áŒ¥ አለብዎá¢',
'resetpass_header' => 'መáŒá‰¢á‹« ቃሠለመቀየር',
@@ -493,8 +483,6 @@ $2",
'extlink_tip' => "የá‹áŒ­ መያያዣ ለመáጠር (በ'http://' የሚቀደáˆ)",
'headline_sample' => 'ንዑስ ክááˆ',
'headline_tip' => 'የንዑስ-ክáሠአርዕስት ለመáጠር',
-'math_sample' => 'የሒሳብ ቀመር በዚህ á‹­áŒá‰£',
-'math_tip' => 'የሒሳብ ቀመር (LaTeX) ለመጨመር',
'nowiki_sample' => 'በዚህ á‹áˆµáŒ¥ የሚከተት áˆáˆ‰ የዊኪ-ሥርአተ ቋንቋን ቸሠይላáˆ',
'nowiki_tip' => 'የዊኪ-ሥርአተ ቋንቋን ቸሠለማድረáŒ',
'image_tip' => 'የስዕሠመያያዣ ለመáጠር',
@@ -560,7 +548,7 @@ $1ን ወይሠማንሠሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
ወደዚህ በስሕተት ከሆአየመጡትᣠየቃáŠá‹áŠ• «Back» á‰áˆá ይጫኑá¢',
'anontalkpagetext' => "----''ይኸዠገጽ ገና á‹«áˆáŒˆá‰£ ወይሠብዕር ስሠየሌለዠተጠቃሚ á‹á‹­á‹­á‰µ ገጽ áŠá‹á¢ መታወቂያዠበ[[á‰áŒ¥áˆ­ አድራሻ]] እንዲሆን ያስáˆáˆáŒ‹áˆá¢ አንዳንዴ áŒáŠ• አንድ የá‰áŒ¥áˆ­ አድራሻ በáˆáˆˆá‰µ ወይሠበብዙ ተጠቃሚዎች የጋራ ሊሆን ይችላáˆá¢ ስለዚህ ለርስዎ የማይገባ á‹á‹­á‹­á‰µ እንዳይደርስáˆá‹Žá£ [[Special:UserLogin|«መáŒá‰¢á‹«Â»]] በመጫን የብዕር ስሠለማá‹áŒ£á‰µ ይችላሉá¢''",
'noarticletext' => 'በአáˆáŠ‘ ወቅት በዚህ ገጽ ላይ ጽሑá የለáˆá¤ áŠáŒˆáˆ­ áŒáŠ• በሌሎች ገጾች ላይ [[Special:Search/{{PAGENAME}}|ይህን አርዕስት መáˆáˆˆáŒ]]ᣠ<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ከርዕሱ ጋር የተዛመዱ መá‹áŒˆá‰¦á‰½áŠ• መáˆáˆáŒ]ᣠወይሠ[{{fullurl:{{FULLPAGENAME}}|action=edit}} አዲስ áŒˆá… áˆŠá‹«á‹˜áŒ‹áŒ] ይችላሉ</span>á¢',
-'userpage-userdoesnotexist' => 'የብዕር ስሠ«$1» አáˆá‰°áˆ˜á‹˜áŒˆá‰ áˆá¢ እባክዎ ይህን ገጽ ለመáጠር/ ለማስተካከሠየáˆáˆˆáŒ‰ እንደ ሆአያረጋáŒáŒ¡á¢',
+'userpage-userdoesnotexist' => 'የብዕር ስሠ«<nowiki>$1</nowiki>» አáˆá‰°áˆ˜á‹˜áŒˆá‰ áˆá¢ እባክዎ ይህን ገጽ ለመáጠር/ ለማስተካከሠየáˆáˆˆáŒ‰ እንደ ሆአያረጋáŒáŒ¡á¢',
'usercssyoucanpreview' => "'''áˆáŠ­áˆ­á¦''' ሳይቆጠብ አዲስ CSSዎን ለመሞከር 'ቅድመ እይታ' የሚለá‹áŠ• ይጫኑá¢",
'userjsyoucanpreview' => "'''áˆáŠ­áˆ­á¦''' ሳይቆጠብ አዲስ JSዎን ለመሞከር 'ቅድመ እይታ' የሚለá‹áŠ• ይጫኑá¢",
'usercsspreview' => "'''ማስታወሻᦠCSS-ዎን ለሙከራ ብቻ እያዩ áŠá‹á¤ ገና አáˆá‰°á‰†áŒ á‰ áˆ!'''",
@@ -796,7 +784,6 @@ $1ን ወይሠማንሠሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'changepassword' => 'መáŒá‰¢á‹« ቃáˆá‹ŽáŠ• ለመቀየር',
'prefs-skin' => 'የድህረ-ገጽ መáˆáŠ­',
'skin-preview' => 'ቅድመ-ዕይታ',
-'prefs-math' => 'የሂሳብ መáˆáŠ­',
'datedefault' => 'áŒá‹µ የለáŠáˆ',
'prefs-datetime' => 'ዘመንና ሰዓት',
'prefs-personal' => 'ያባሠዶሴ',
@@ -817,8 +804,6 @@ $1ን ወይሠማንሠሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'columns' => 'ስንት á‹“áˆá‹¶á‰½áˆµ?',
'searchresultshead' => 'áለጋ',
'resultsperpage' => 'ስንት á‹áŒ¤á‰¶á‰½ በየገጹ?',
-'contextlines' => 'ስንት መስመሮች በየá‹áŒ¤á‰±?',
-'contextchars' => 'ስንት áŠá‹°áˆ‹á‰µ በየመስመሩ?',
'recentchangesdays' => 'በቅርቡ ለá‹áŒ¦á‰½ á‹áˆ­á‹áˆ­ ስንት ቀን ይታይ?',
'recentchangesdays-max' => '(እስከ $1 {{PLURAL:$1|ቀን|ቀን}} ድረስ)',
'recentchangescount' => 'በá‹áˆ­á‹áˆ­á‹Ž ላይ ስንት ለá‹áŒ¥ ይታይ? (እስከ 500)',
@@ -1072,9 +1057,6 @@ $1ን ወይሠማንሠሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'destfilename' => 'የá‹á‹­áˆ‰ አዲስ ስáˆá¦',
'watchthisupload' => 'ይህንን ገጽ ለመከታተáˆ',
'filewasdeleted' => 'በዚሠስሠያለዠá‹á‹­áˆ ከዚህ በáŠá‰µ ተáˆáŠ® እንደገና ጠáቷáˆá¢ ዳáŒáˆ˜áŠ› ሳይáˆáŠ©á‰µ $1 ማመáˆáŠ¨á‰µ ያሻላáˆá¢',
-'upload-wasdeleted' => "'''ማስጠንቀቂያᦠቀድሞ የተደለዘ á‹á‹­áˆ እየላኩ áŠá‹á¢'''
-
-ይህን á‹á‹­áˆ መላክ የሚገባ መሆኑን ይቆጠሩᢠየá‹á‹­áˆ‰ ማጥá‹á‰µ መá‹áŒˆá‰¥ ከዚህ ታች ይታያáˆá¦",
'filename-bad-prefix' => "የሚáˆáŠ©á‰µ á‹á‹­áˆ ስሠበ'''«$1»''' ይጀመራáˆá¤ ይህ ብዙ ጊዜ በá‰áŒ¥áˆ«á‹Š ካሜራ የተወሰአገላጭ á‹«áˆáˆ†áŠ ስሠይሆናáˆá¢ እባክዎ ለá‹á‹­áˆá‹Ž ገላጭ የሆአስሠይáˆáˆ¨áŒ¡á¢",
'upload-success-subj' => 'መላኩ ተከናወáŠ',
@@ -1131,7 +1113,6 @@ $1ን ወይሠማንሠሌላ [[{{MediaWiki:Grouppage-sysop}}|መጋቢ]] ስ
'linkstoimage' => '{{PLURAL:$1|የሚከተለዠገጽ ወደዚሠá‹á‹­áˆ ተያይዟáˆ|የሚከተሉ $1 ገጾች ወደዚሠá‹á‹­áˆ ተያይዘዋáˆ}}á¦',
'nolinkstoimage' => 'ወዲህ á‹á‹­áˆ የተያያዘ ገጽ የለáˆá¢',
'morelinkstoimage' => 'ለዚህ á‹á‹­áˆ [[Special:WhatLinksHere/$1|ተጨማሪ መያያዣዎችን]] ለማየትá¢',
-'redirectstofile' => 'ለዚህ á‹á‹­áˆ {{PLURAL:$1|የሚከተለዠá‹á‹­áˆ መáˆáˆªá‹« መንገድ አለ|የሚከተሉት $1 á‹á‹­áˆŽá‰½ መáˆáˆªá‹« መንገዶች አሉ}}á¦',
'duplicatesoffile' => '{{PLURAL:$1|የሚከተለዠá‹á‹­áˆ የዚህ á‹á‹­áˆ ቅጂ áŠá‹|የሚከተሉት $1 á‹á‹­áˆŽá‰½ የዚሠá‹á‹­áˆ ቅጂዎች ናቸá‹}}á¦',
'sharedupload' => 'ይህ á‹á‹­áˆ ከጋራ áˆáŠ•áŒ­ ($1) የተቀሰመ áŠá‹á¢ በማንኛá‹áˆ ዊኪ ላይ ሊጠቅሠይቻላáˆá¢',
'uploadnewversion-linktext' => 'ለዚሠá‹á‹­áˆ አዲስ ዕትሠለመላክ',
@@ -1372,11 +1353,9 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlistanontext' => 'የሚከታተሉት ገጾች á‹áˆ­á‹áˆ­á‹ŽáŠ• ለመመáˆáŠ¨á‰µ ወይሠለማስተካከሠእባክዎ $1á¢',
'watchnologin' => 'ገና አáˆáŒˆá‰¡áˆ',
'watchnologintext' => 'የሚከታተáˆá‰¸á‹áŠ• ገጾች á‹áˆ­á‹áˆ­ ለመቀየር [[Special:UserLogin|መáŒá‰£á‰µ]] ይኖርብዎታáˆá¢',
-'addedwatch' => 'ወደሚከታተሉት ገጾች ተጨመረ',
'addedwatchtext' => "ገጹ «$1» [[Special:Watchlist|ለሚከታተሉት ገጾች]] ተጨáˆáˆ¯áˆá¢ ወደáŠá‰µ ይህ ገጽ ወይሠየá‹á‹­á‹­á‰± ገጽ ሲቀየርᣠበዚያ á‹áˆ­á‹áˆ­ ላይ ይታያáˆá¢ በተጨማሪሠ[[Special:RecentChanges|«በቅርብ ጊዜ በተለወጡ» ገጾች]] á‹áˆ­á‹áˆ­á£ በቀላሉ እንዲታይ በ'''ጉáˆáˆ… áŠá‹°áˆ‹á‰µ''' ተጽᎠይገኛáˆá¢
በኋላ ጊዜ ገጹን ከሚከታተሉት ገጾች ለማስወáŒá‹µ የáˆáˆˆáŒ‰ እንደሆáŠá£ በጫበዳርቻ «አለመከታተáˆÂ» የሚለá‹áŠ• ይጫኑá¢",
-'removedwatch' => 'ከሚከታተሉት ገጾች ተወገደ',
'removedwatchtext' => 'ይህ áŒˆá… "[[:$1]]" ከ [[Special:Watchlist|your watchlist]] ተወáŒá‹·áˆá¢',
'watch' => 'ለመከታተáˆ',
'watchthispage' => 'ይህንን ገጽ ለመከታተáˆ',
@@ -1427,10 +1406,10 @@ $NEWPAGE
ከክብር ጋርᣠየ{{SITENAME}} ኢሜáˆ-ማስታወቂያ መርሃáŒá‰¥áˆ­á¢
--
-የሚከታተሉት ገጾች á‹áˆ­á‹áˆ­ ለመቀየርᣠ{{fullurl:{{#special:Watchlist}}/edit}} ይጎበኙá¢
+የሚከታተሉት ገጾች á‹áˆ­á‹áˆ­ ለመቀየርᣠ{{canonicalurl:{{#special:EditWatchlist}}}} ይጎበኙá¢
በተጨማሪ ለመረዳትá¦
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'ገጹ ይጥá‹',
@@ -1445,7 +1424,7 @@ $NEWPAGE
'confirmdeletetext' => 'ይህን ገጽ ከአሙሉ የለá‹áŒ¥ ታሪኩ ሊያጠá‰á‰µ áŠá‹á¢
እባክዎን ይህን የሚያደርጉት አስበá‹á‰ á‰µá£ በ[[{{MediaWiki:Policy-url}}|መተዳደሪያ ደንብáˆ]] መሰረት መሆኑን ያረጋáŒáŒ¡á¢',
'actioncomplete' => 'ተáˆáŒ½áˆŸáˆ',
-'deletedtext' => '«<nowiki>$1</nowiki>» ጠáቷáˆá¢
+'deletedtext' => '«$1» ጠáቷáˆá¢
(የጠá‰á‰µáŠ• ገጾች áˆáˆ‰ ለመመáˆáŠ¨á‰µ $2 á‹­á‹©á¢)',
'deletedarticle' => '«[[$1]]» አጠá‹',
@@ -1490,7 +1469,7 @@ $NEWPAGE
'protectexpiry' => 'የሚያáˆá‰…በት áŒá‹œá¦',
'protect_expiry_invalid' => "የተሰጠዠ'የሚያáˆá‰…በት ጊዜ' áˆáŠ­ አይደለáˆá¢",
'protect_expiry_old' => "የተሰጠዠ'የሚያáˆá‰…በት ጊዜ' ባለáˆá‹ áŒá‹œ áŠá‰ áˆ­á¢",
-'protect-text' => "እዚህ ለገጹ «'''<nowiki>$1</nowiki>'''» የመቆለá ደረጃ መመáˆáŠ¨á‰µ ወይሠመቀይር ይችላሉá¢",
+'protect-text' => "እዚህ ለገጹ «'''$1'''» የመቆለá ደረጃ መመáˆáŠ¨á‰µ ወይሠመቀይር ይችላሉá¢",
'protect-locked-blocked' => "ማገጃ እያለብዎት የመቆለá ደረጃ ለመቀየር አይችሉáˆá¢ ለገጹ '''$1''' የአáˆáŠ‘ኑ ደረጃ እንዲህ áŠá‹á¦",
'protect-locked-dblock' => "መረጃ-ቤቱ እራሱ አáˆáŠ• ስለሚቆለáᣠየገጽ መቆለá ደረጃ ሊቀየር አይችáˆáˆá¢ ለገጹ '''$1''' የአáˆáŠ‘ኑ ደረጃ እንዲህ áŠá‹á¦",
'protect-locked-access' => "እርስዎ ገጽ የመቆለá ወይሠየመáታት áˆá‰ƒá‹µ የለዎáˆá¢<br />አáˆáŠ‘ የዚሠገጽ መቆለá ደረጃ እንዲህ áŠá‹á¦ '''$1''':",
@@ -1609,7 +1588,6 @@ $1',
'blockip' => 'ተጠቃሚá‹áŠ• ለማገድ',
'blockip-legend' => 'ተጠቃሚ ለማገድ',
'blockiptext' => 'ከዚህ ታች ያለዠማመáˆáŠ¨á‰» በአንድ á‰áŒ¥áˆ­ አድርሻ ወይሠብዕር ስሠላይ ማገጃ (ማዕቀብ) ለመጣሠይጠቀማáˆá¢ ይህ በ[[{{MediaWiki:Policy-url}}|መርመርያዎቻችን]] መሠረት ተንኮሠወይሠጉዳት ለመከáˆáŠ¨áˆ ብቻ እንዲደረጠይገባáˆá¢ ከዚህ ታች የተለየ áˆáŠ­áŠ•á‹«á‰µ (ለáˆáˆ£áˆŒ የተጎዳዠገጽ በማጠቆáˆ) ይጻá‰á¢',
-'ipaddress' => 'የá‰. አድራሻá¦',
'ipadressorusername' => 'የá‰. አድራሻ ወይሠየብዕር ስáˆá¦',
'ipbexpiry' => 'የሚያáˆá‰…በትá¦',
'ipbreason' => 'áˆáŠ­áŠ•á‹«á‰±á¦',
@@ -1622,7 +1600,6 @@ $1',
** ዛቻ ማብዛት
** በአድራሻዎች ብዛት መተንኮáˆ
** የማይገባ ብዕር ስáˆ",
-'ipbanononly' => 'በá‰.# የሚታወቅ ተጠቃሚ ብቻ ለመከáˆáŠ¨áˆ',
'ipbcreateaccount' => 'ብዕር ስሠእንዳያá‹áŒ£ ለመከáˆáŠ¨áˆ',
'ipbemailban' => 'ተጠቃሚዠኢ-ሜሠከመላክ ይከለከáˆ',
'ipbenableautoblock' => 'በተጠቃሚዠመጨረሻ á‰.# እና ካáˆáŠ• ወዲያ በሚጠቀመዠአድራሻ ላይ ማገጃ ይጣáˆá¢',
@@ -1647,9 +1624,7 @@ $1',
'unblocked-id' => 'ማገጃ $1 ተáŠáˆ£',
'ipblocklist' => 'የድህረ áŒˆá… áˆ˜áˆˆá‹«á‹Žá‰½áŠ•áŠ“ (IP addresses) እና የተጠቃሚዎችን የብዕር ስሠአáŒá‹µá¢',
'ipblocklist-legend' => 'አንድ የታገደá‹áŠ• ተጠቃሚ ለመáˆáˆˆáŒá¦',
-'ipblocklist-username' => 'ይህ ብዕር ስሠወይሠየá‰áŒ¥áˆ­ አድራሻ #á¡',
'ipblocklist-submit' => 'á‹­áˆáˆˆáŒ',
-'blocklistline' => '$1 (እ.ኤ.አ.)ᦠ$2 በ$3 ላይ ማገጃ ጣለ ($4)',
'infiniteblock' => 'መቸሠይማያáˆá‰…',
'expiringblock' => 'በ$1 $2 እ.ኤ.አ. á‹«áˆá‰ƒáˆ',
'anononlyblock' => 'á‹«áˆáŒˆá‰¡á‰µ የá‰.# ብቻ',
@@ -1665,7 +1640,7 @@ $1',
'contribslink' => 'አስተዋጽኦች',
'blocklogpage' => 'የማገጃ መá‹áŒˆá‰¥',
'blocklogentry' => 'እስከ $2 ድረስ [[$1]] አገዳ $3',
-'blocklogtext' => 'ይህ መá‹áŒˆá‰¥ ተጠቃሚዎች መቸሠሲታገዱ ወይሠማገጃ ሲáŠáˆ£ የሚዘረá‹áˆ­ áŠá‹á¢ ለአáˆáŠ‘ የታገዱት ሰዎች [[Special:IPBlockList|በአáˆáŠ‘ ማገጃዎች á‹áˆ­á‹áˆ­]] ይታያሉá¢',
+'blocklogtext' => 'ይህ መá‹áŒˆá‰¥ ተጠቃሚዎች መቸሠሲታገዱ ወይሠማገጃ ሲáŠáˆ£ የሚዘረá‹áˆ­ áŠá‹á¢ ለአáˆáŠ‘ የታገዱት ሰዎች [[Special:BlockList|በአáˆáŠ‘ ማገጃዎች á‹áˆ­á‹áˆ­]] ይታያሉá¢',
'unblocklogentry' => 'የ$1 ማገጃ አáŠáˆ£',
'block-log-flags-anononly' => 'á‹«áˆáŒˆá‰¡á‰µ የá‰. አድራሻዎች ብቻ',
'block-log-flags-nocreate' => 'አዲስ ብዕር ስሠከማá‹áŒ£á‰µ ተከለከለ',
@@ -1674,8 +1649,7 @@ $1',
'block-log-flags-nousertalk' => 'የገዛ á‹á‹­á‹­á‰µ ገጹን ማዘጋጀት አይችáˆáˆ',
'ipb_expiry_invalid' => 'የሚያáˆá‰…በት áŒá‹œ አይሆንáˆá¢',
'ipb_already_blocked' => '«$1» ገና ከዚህ በáŠá‰µ ታáŒá‹¶ áŠá‹á¢',
-'ipb-needreblock' => '== ገና ታáŒá‹·áˆ ==
-$1 አáˆáŠ• ገና ታáŒá‹·áˆá¢ á‹áˆ­á‹áˆ©áŠ• ማስተካከሠáˆáˆˆáŒ‰?',
+'ipb-needreblock' => '$1 አáˆáŠ• ገና ታáŒá‹·áˆá¢ á‹áˆ­á‹áˆ©áŠ• ማስተካከሠáˆáˆˆáŒ‰?',
'blockme' => 'áˆá‰³áŒˆá‹µ',
'proxyblocker-disabled' => 'ይህ ተáŒá‰£áˆ­ እንደማይሠራ ተደርጓáˆá¢',
'proxyblocksuccess' => 'ተደርጓáˆá¢',
@@ -1776,7 +1750,7 @@ $1 አáˆáŠ• ገና ታáŒá‹·áˆá¢ á‹áˆ­á‹áˆ©áŠ• ማስተካከሠáˆáˆˆáŒ‰
'allmessagesdefault' => 'የቆየዠጽሕáˆá‰µ',
'allmessagescurrent' => 'á‹«áˆáŠ‘ ጽሕáˆá‰µ',
'allmessagestext' => 'በ«MediaWiki» ክáለ-ዊኪ ያሉት የድረገጽ መáˆáŠ­ መáˆáŠ¥áŠ­á‰¶á‰½ ሙሉ á‹áˆ­á‹áˆ­ ይህ áŠá‹á¢
-Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' ስለ ተዘጋ '''{{ns:special}}:Allmessages''' ሊጠቀሠአይችáˆáˆá¢",
# Thumbnails
@@ -1874,10 +1848,6 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-rollback' => 'ROLLBACK የመጨረሻá‹áŠ• አዛጋጅ ለá‹áŒ¦á‰½ በáጥáŠá‰µ ይገáˆá‰ áŒ£áˆá¢',
'tooltip-undo' => '"መáˆáˆµ" ይህን ቅድመ እይታ ወደ ቀድሞዠየእርማት ቦታዠመáˆáˆµá¢ ማጠቃለያዠላይ áˆáŠ­áŠ•á‹«á‰³á‰½áŠ•áŠ• ለማስገባት á‹­áˆá‰…ድáˆáŠ“áˆá¢',
-# Metadata
-'nodublincore' => 'Dublin Core RDF metadata ለዚህ ሰርቨር እንደማይሠራ ተደርጓáˆá¢',
-'nocreativecommons' => 'Creative Commons RDF metadata ለዚህ ሰርቨር እንደማይሠራ ተደርጓáˆá¢',
-
# Attribution
'anonymous' => 'የ{{SITENAME}} á‰. አድራሻ ተጠቃሚ(ዎች)',
'siteuser' => '{{SITENAME}} ተጠቃሚ $1',
@@ -1890,29 +1860,6 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'spambot_username' => 'MediaWiki የስá“ሠማá…ዳት',
'spam_reverting' => 'ወደ $1 የሚወስድ መያያዣ ወደሌለበት መጨረሻ ዕትሠመለሰá‹',
-# Info page
-'infosubtitle' => 'መረጃ ለገጹ',
-'numedits' => 'የእትሞች á‰áŒ¥áˆ­ (ገጽ)ᦠ$1',
-'numtalkedits' => 'የእትሞች á‰áŒ¥áˆ­ (የá‹á‹­á‹­á‰µ ገጽ)ᦠ$1',
-'numwatchers' => 'የሚከታተሉት ተጠቃሚዎች á‰áŒ¥áˆ­á¦ $1',
-'numauthors' => 'የተለዩ አቅራቢዎች á‰áŒ¥áˆ­ (ገጽ)ᦠ$1',
-'numtalkauthors' => 'የተለዩ አቅራቢዎች á‰áŒ¥áˆ­ (የá‹á‹­á‹­á‰µ ገጽ)ᦠ$1',
-
-# Math options
-'mw_math_png' => 'áˆáˆáŒŠá‹œ እንደ PNG',
-'mw_math_simple' => 'HTML ቀላሠከሆአአለዚያ PNG',
-'mw_math_html' => 'HTML ከተቻለ አለዚያ PNG',
-'mw_math_modern' => 'ለዘመናዊ ብራá‹á‹˜áˆ­ የተሻለ',
-'mw_math_mathml' => 'MathML ከተቻለ (የሙከራ)',
-
-# Math errors
-'math_failure' => 'ዘርዛሪዠተሳáŠá‹',
-'math_unknown_error' => 'የማይታወቅ ስኅተት',
-'math_unknown_function' => 'የማይታወቅ ተáŒá‰£áˆ­',
-'math_lexing_error' => 'የlexing ስህተት',
-'math_syntax_error' => 'የሰዋሰዠስህተት',
-'math_bad_output' => 'ወደ math á‹áŒ¤á‰µ ዶሴ መጻá ወይሠመáጠር አይቻáˆáˆ',
-
# Patrolling
'markaspatrolleddiff' => 'የተሳለሠሆኖ ማመáˆáŠ¨á‰µ',
'markaspatrolledtext' => 'ይህን ገጽ የተመለከተ ሆኖ ለማሳለá',
@@ -1944,15 +1891,14 @@ $1',
'nextdiff' => 'የሚቀጥለዠለá‹áŒ¥ →',
# Media information
-'imagemaxsize' => 'በá‹á‹­áˆ መáŒáˆˆáŒ« ገጽ ላይ የስዕሠመጠን ወሰን ቢበዛá¦',
-'thumbsize' => 'የናሙና መጠንá¦',
-'widthheightpage' => '$1 በ$2ᣠ$3 ገጾች',
-'file-info' => 'የá‹á‹­áˆ መጠንᦠ$1ᣠየMIME አይáŠá‰µá¦ $2',
-'file-info-size' => '$1 × $2 á’ክስáˆá¤ መጠንᦠ$3ᤠየMIME á‹“á‹­áŠá‰µá¦ $4',
-'file-nohires' => '<small>ከዚህ በላይ ማጉላት አይቻáˆáˆá¢</small>',
-'svg-long-desc' => 'የSVG á‹á‹­áˆá¡ በተáŒá‰£áˆ­ $1 × $2 á’ክስáˆá¤ መጠንᦠ$3',
-'show-big-image' => 'በሙሉ ጒáˆáˆ…áŠá‰µ ለመመáˆáŠ¨á‰µ',
-'show-big-image-thumb' => '<small>የዚህ ናሙና ቅጂ ክáˆáˆá¦ $1 × $2 á’ክሰáˆ</small>',
+'imagemaxsize' => 'በá‹á‹­áˆ መáŒáˆˆáŒ« ገጽ ላይ የስዕሠመጠን ወሰን ቢበዛá¦',
+'thumbsize' => 'የናሙና መጠንá¦',
+'widthheightpage' => '$1 በ$2ᣠ$3 ገጾች',
+'file-info' => 'የá‹á‹­áˆ መጠንᦠ$1ᣠየMIME አይáŠá‰µá¦ $2',
+'file-info-size' => '$1 × $2 á’ክስáˆá¤ መጠንᦠ$3ᤠየMIME á‹“á‹­áŠá‰µá¦ $4',
+'file-nohires' => '<small>ከዚህ በላይ ማጉላት አይቻáˆáˆá¢</small>',
+'svg-long-desc' => 'የSVG á‹á‹­áˆá¡ በተáŒá‰£áˆ­ $1 × $2 á’ክስáˆá¤ መጠንᦠ$3',
+'show-big-image' => 'በሙሉ ጒáˆáˆ…áŠá‰µ ለመመáˆáŠ¨á‰µ',
# Special:NewFiles
'newimages' => 'የአዳዲስ ሥዕሎች ማሳያ አዳራሽ',
@@ -1980,7 +1926,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'ስá‹á‰µ',
@@ -1993,12 +1945,10 @@ $1',
'exif-ycbcrpositioning' => 'የY ና C አቀማመጥ',
'exif-xresolution' => 'አድማሳዊ ማጉላት',
'exif-yresolution' => 'á‰áˆ ማጉላት',
-'exif-resolutionunit' => 'የX ና Y ማጉላት መስáˆáˆ­á‹«',
'exif-stripoffsets' => 'የስዕሠመረጃ ሥáራ',
'exif-rowsperstrip' => 'የተርታዎች á‰áŒ¥áˆ­ በየá‰áˆ«áŒ©',
'exif-stripbytecounts' => 'byte በየተጨመቀ á‰áˆ«áŒ©',
'exif-jpeginterchangeformatlength' => 'የJPEG መረጃ byte',
-'exif-transferfunction' => 'የማሻገር ተáŒá‰£áˆ­',
'exif-datetime' => 'á‹á‹­áˆ‰ የተቀየረበት ቀንና ሰዓት',
'exif-imagedescription' => 'የስዕሠአርዕስት',
'exif-make' => 'የካሜራዠሠሪ ድርጅት',
@@ -2012,7 +1962,6 @@ $1',
'exif-compressedbitsperpixel' => 'የስዕሠመጨመቅ ዘዴ',
'exif-pixelydimension' => 'እá‹áŠá‰°áŠ› የስዕሠስá‹á‰µ',
'exif-pixelxdimension' => 'እá‹áŠá‰°áŠ› የስዕሠá‰áˆ˜á‰µ',
-'exif-makernote' => 'የሠሪዠማሳሰቢያዎች',
'exif-usercomment' => 'የተጠቃሚዠማጠቃለያ',
'exif-relatedsoundfile' => 'የተዛመደ የድáˆáŒ½ á‹á‹­áˆ',
'exif-datetimeoriginal' => 'መረጃዠየተáˆáŒ áˆ¨á‰ á‰µ ቀንና ሰዓት',
@@ -2185,14 +2134,12 @@ $1',
# External editor support
'edit-externally' => 'ይህንን á‹á‹­áˆ በአáአዊ ሶáትዌር ለማዘጋጀት',
-'edit-externally-help' => '(ለተጨማሪ መረጃ ይህን áŒˆá… á‰°áˆ˜áˆáŠ¨á‰± [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
+'edit-externally-help' => '(ለተጨማሪ መረጃ ይህን áŒˆá… á‰°áˆ˜áˆáŠ¨á‰± [//www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'áˆáˆ‰',
-'imagelistall' => 'áˆáˆ‰',
-'watchlistall2' => 'áˆáˆ‰',
-'namespacesall' => 'áˆáˆ‰ (all)',
-'monthsall' => 'áˆáˆ‰',
+'watchlistall2' => 'áˆáˆ‰',
+'namespacesall' => 'áˆáˆ‰ (all)',
+'monthsall' => 'áˆáˆ‰',
# E-mail address confirmation
'confirmemail' => 'ኢ-ሜáˆá‹ŽáŠ• ለማረጋገጥ',
@@ -2280,12 +2227,12 @@ $3
አንዳንድ ገጽ ከዚህ á‹áˆ­á‹áˆ­ ለማስወáŒá‹µ ያሠቡ እንደሆáŠá£ በሳጥኑ á‹áˆµáŒ¥ áˆáˆáŠ­á‰µ አድርገዠበስተáŒáˆ­áŒŒ በሚገኘዠ«ማስወáŒáŒƒÂ» የሚለá‹áŠ• ተጭáŠá‹ ከዚህ á‹áˆ­á‹áˆ­ ሊያስወáŒá‹·á‰¸á‹ ይቻላáˆá¢ (ይህን በማድረáŒá‹Ž ከገጹ ጋር የሚገናኘዠá‹á‹­á‹­á‰µ ገጽ ድáŒáˆž ከá‹áˆ­á‹áˆ­á‹Ž ይጠá‹áˆá¢)
-ከዚህ ዘዴ ሌላ [[Special:Watchlist/raw|ጥሬá‹áŠ• ኮድ መቅዳት ወይሠማዘጋጀት]] ይቻላáˆá¢',
+ከዚህ ዘዴ ሌላ [[Special:EditWatchlist/raw|ጥሬá‹áŠ• ኮድ መቅዳት ወይሠማዘጋጀት]] ይቻላáˆá¢',
'watchlistedit-normal-submit' => 'ማስወገጃ',
'watchlistedit-normal-done' => 'ከá‹áˆ­á‹áˆ­á‹Ž {{PLURAL:$1|1 አርዕስት ተወáŒá‹·áˆ|$1 አርእስቶች ተወáŒá‹°á‹‹áˆ}}á¦',
'watchlistedit-raw-title' => 'የá‹áˆ­á‹áˆ© ጥሬ ኮድ',
'watchlistedit-raw-legend' => 'የá‹áˆ­á‹áˆ©áŠ• ጥሬ ኮድ ለማዘጋጀት...',
-'watchlistedit-raw-explain' => 'በተከታተሉት ገጾች á‹áˆ­á‹áˆ­ ላይ ያሉት አርእስቶች áˆáˆ‰ ከዚህ ታች ይታያሉᢠበየመስመሩ አንድ አርእስት እንደሚኖርᣠይህን á‹áˆ­á‹áˆ­ ለማዘጋጀት ይችላሉᢠአዘጋጅተá‹á‰µ ከጨረሱ በኋላ በስተáŒáˆ­áŒŒ «á‹áˆ­á‹áˆ©áŠ• ለማሳደስ» የሚለá‹áŠ• ይጫኑᢠአለበለዚያ ቢሻáˆá‹Žá‰µá£ የተለመደá‹áŠ• ዘዴ ([[Special:Watchlist/edit|«á‹áˆ­á‹áˆ©áŠ• ለማስተካከáˆÂ»]]) ይጠቀሙá¢',
+'watchlistedit-raw-explain' => 'በተከታተሉት ገጾች á‹áˆ­á‹áˆ­ ላይ ያሉት አርእስቶች áˆáˆ‰ ከዚህ ታች ይታያሉᢠበየመስመሩ አንድ አርእስት እንደሚኖርᣠይህን á‹áˆ­á‹áˆ­ ለማዘጋጀት ይችላሉᢠአዘጋጅተá‹á‰µ ከጨረሱ በኋላ በስተáŒáˆ­áŒŒ «á‹áˆ­á‹áˆ©áŠ• ለማሳደስ» የሚለá‹áŠ• ይጫኑᢠአለበለዚያ ቢሻáˆá‹Žá‰µá£ የተለመደá‹áŠ• ዘዴ ([[Special:EditWatchlist|«á‹áˆ­á‹áˆ©áŠ• ለማስተካከáˆÂ»]]) ይጠቀሙá¢',
'watchlistedit-raw-titles' => 'የተከታተሉት አርእስቶችá¦',
'watchlistedit-raw-submit' => 'á‹áˆ­á‹áˆ©áŠ• ለማሳደስ',
'watchlistedit-raw-done' => 'á‹áˆ­á‹áˆ­á‹Ž ታድሷáˆá¢',
@@ -2301,24 +2248,23 @@ $3
'unknown_extension_tag' => 'á‹«áˆá‰³á‹ˆá‰€ የቅጥያ áˆáˆáŠ­á‰µ «$1»',
# Special:Version
-'version' => 'á‹áˆ­á‹«',
-'version-extensions' => 'የተሳኩ ቅጥያዎች',
-'version-specialpages' => 'áˆá‹© ገጾች',
-'version-parserhooks' => 'የዘርዛሪ ሜንጦዎች',
-'version-variables' => 'ተለዋጮች',
-'version-other' => 'ሌላ',
-'version-hooks' => 'ሜንጦዎች',
-'version-extension-functions' => 'የቅጥያ ሥራዎች',
-'version-parser-extensiontags' => 'የá‹áˆ­á‹›áˆª ቅጥያ áˆáˆáŠ­á‰¶á‰½',
-'version-parser-function-hooks' => 'የዘርዛሪ ተáŒá‰£áˆ­ ሜጦዎች',
-'version-skin-extension-functions' => 'የመáˆáŠ­ ቅጥያ ተáŒá‰£áˆ®á‰½',
-'version-hook-name' => 'የሜንጦ ስáˆ',
-'version-hook-subscribedby' => 'የተጨመረበት',
-'version-version' => '(á‹áˆ­á‹« $1)',
-'version-license' => 'áˆá‰ƒá‹µ',
-'version-software' => 'የተሳካ ሶáትዌር',
-'version-software-product' => 'ሶáትዌር',
-'version-software-version' => 'á‹áˆ­á‹«',
+'version' => 'á‹áˆ­á‹«',
+'version-extensions' => 'የተሳኩ ቅጥያዎች',
+'version-specialpages' => 'áˆá‹© ገጾች',
+'version-parserhooks' => 'የዘርዛሪ ሜንጦዎች',
+'version-variables' => 'ተለዋጮች',
+'version-other' => 'ሌላ',
+'version-hooks' => 'ሜንጦዎች',
+'version-extension-functions' => 'የቅጥያ ሥራዎች',
+'version-parser-extensiontags' => 'የá‹áˆ­á‹›áˆª ቅጥያ áˆáˆáŠ­á‰¶á‰½',
+'version-parser-function-hooks' => 'የዘርዛሪ ተáŒá‰£áˆ­ ሜጦዎች',
+'version-hook-name' => 'የሜንጦ ስáˆ',
+'version-hook-subscribedby' => 'የተጨመረበት',
+'version-version' => '(á‹áˆ­á‹« $1)',
+'version-license' => 'áˆá‰ƒá‹µ',
+'version-software' => 'የተሳካ ሶáትዌር',
+'version-software-product' => 'ሶáትዌር',
+'version-software-version' => 'á‹áˆ­á‹«',
# Special:FilePath
'filepath' => 'የá‹á‹­áˆ መንገድ',
diff --git a/languages/messages/MessagesAn.php b/languages/messages/MessagesAn.php
index 80d8108c..3f598985 100644
--- a/languages/messages/MessagesAn.php
+++ b/languages/messages/MessagesAn.php
@@ -21,7 +21,7 @@ $fallback = 'es';
$namespaceNames = array(
NS_MEDIA => 'Media',
- NS_SPECIAL => 'Espezial',
+ NS_SPECIAL => 'Especial',
NS_TALK => 'Descusión',
NS_USER => 'Usuario',
NS_USER_TALK => 'Descusión_usuario',
@@ -38,6 +38,10 @@ $namespaceNames = array(
NS_CATEGORY_TALK => 'Descusión_categoría',
);
+$namespaceAliases = array(
+ 'Espezial' => NS_SPECIAL,
+);
+
$magicWords = array(
'redirect' => array( '0', '#ENDRECERA', '#REENDRECERA', '#REDIRECCIÓN', '#REDIRECCION', '#REDIRECT' ),
'namespace' => array( '1', 'ESPACIODENOMBRES', 'ESPACIODENOMBRE', 'NAMESPACE' ),
@@ -48,78 +52,78 @@ $magicWords = array(
'displaytitle' => array( '1', 'TÃTOL', 'MOSTRARTÃTULO', 'MOSTRARTITULO', 'DISPLAYTITLE' ),
'currentversion' => array( '1', 'BERSIÓNAUTUAL', 'BERSIONAUTUAL', 'REVISIÓNACTUAL', 'VERSIONACTUAL', 'VERSIÓNACTUAL', 'CURRENTVERSION' ),
'language' => array( '0', '#LUENGA:', '#IDIOMA:', '#LANGUAGE:' ),
- 'special' => array( '0', 'espezial', 'especial', 'special' ),
+ 'special' => array( '0', 'especial', 'espezial', 'special' ),
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Endreceras_doples', 'Reendrezeras_dobles', 'Dobles_reendrezeras', 'Endrezeras_dobles', 'Dobles_endrezeras' ),
+ 'Allmessages' => array( 'Totz_os_mensaches', 'Toz_os_mensaches' ),
+ 'Allpages' => array( 'Todas_as_pachinas' ),
+ 'Ancientpages' => array( 'Pachinas_mas_viellas', 'Pachinas_mas_antigas', 'Pachinas_más_biellas', 'Pachinas_biellas', 'Pachinas_antigas' ),
+ 'Block' => array( 'Bloqueyar' ),
+ 'Blockme' => array( 'Bloqueya-me' ),
+ 'Booksources' => array( 'Fuents_de_libros' ),
'BrokenRedirects' => array( 'Endreceras_trencatas', 'Endreceras_trencadas', 'Reendrezeras_trencatas', 'Endrezeras_trencatas', 'Reendrezeras_crebatas', 'Endrezeras_crebatas', 'Endrezeras_trencadas', 'Endrezeras_crebadas' ),
- 'Disambiguations' => array( 'Desambigacions', 'Desambigazions', 'Pachinas_de_desambigazión' ),
- 'Userlogin' => array( 'Encetar_sesión', 'Enzetar_sesión', 'Dentrar' ),
- 'Userlogout' => array( 'Salir', 'Rematar_sesión' ),
+ 'Categories' => array( 'Categorías' ),
+ 'ChangePassword' => array( 'Cambiar_contrasenya' ),
+ 'Confirmemail' => array( 'Confirmar_e-mail' ),
+ 'Contributions' => array( 'Contrebucions', 'Contrebuzions' ),
'CreateAccount' => array( 'Creyar_cuenta' ),
- 'Preferences' => array( 'Preferencias' ),
- 'Watchlist' => array( 'Lista_de_seguimiento' ),
- 'Recentchanges' => array( 'Zaguers_cambeos', 'Cambeos_recients' ),
- 'Upload' => array( 'Cargar', 'Puyar' ),
+ 'Deadendpages' => array( 'Pachinas_sin_salida', 'Pachinas_sin_de_salida' ),
+ 'Disambiguations' => array( 'Desambigacions', 'Desambigazions', 'Pachinas_de_desambigazión' ),
+ 'DoubleRedirects' => array( 'Endreceras_doples', 'Reendrezeras_dobles', 'Dobles_reendrezeras', 'Endrezeras_dobles', 'Dobles_endrezeras' ),
+ 'Emailuser' => array( 'Ninvía_mensache', 'Nimbía_mensache' ),
+ 'Export' => array( 'Exportar' ),
+ 'Fewestrevisions' => array( 'Pachinas_con_menos_edicions', 'Pachinas_con_menos_edizions', 'Pachinas_menos_editatas', 'Pachinas_con_menos_bersions' ),
+ 'Import' => array( 'Importar' ),
+ 'BlockList' => array( 'Lista_d\'IPs_bloqueyatas', 'Lista_d\'IPs_bloquiatas', 'Lista_d\'adrezas_IP_bloqueyatas', 'Lista_d\'adrezas_IP_bloquiatas' ),
+ 'Listadmins' => array( 'Lista_d\'almenistradors' ),
+ 'Listbots' => array( 'Lista_de_botz', 'Lista_de_bots' ),
'Listfiles' => array( 'Lista_de_fichers', 'Lista_d\'imáchens', 'Lista_d\'imachens' ),
- 'Newimages' => array( 'Nuevos_fichers', 'Nuevas_imáchens', 'Nuevas_imachens', 'Nuebas_imachens' ),
- 'Listusers' => array( 'Lista_d\'usuarios' ),
'Listgrouprights' => array( 'ListaDreitosGrupos' ),
- 'Statistics' => array( 'Estatisticas', 'Estadisticas' ),
- 'Randompage' => array( 'Pachina_a_l\'azar', 'Pachina_aleatoria', 'Pachina_aliatoria' ),
+ 'Listusers' => array( 'Lista_d\'usuarios' ),
+ 'Log' => array( 'Rechistro', 'Rechistros' ),
'Lonelypages' => array( 'Pachinas_popiellas' ),
- 'Uncategorizedpages' => array( 'Pachinas_sin_categorizar', 'Pachinas_sin_categorías' ),
+ 'Longpages' => array( 'Pachinas_mas_largas' ),
+ 'Mostcategories' => array( 'Pachinas_con_mas_categorías' ),
+ 'Mostimages' => array( 'Fichers_mas_emplegatos', 'Imáchens_mas_emplegatas', 'Imachens_más_emplegatas' ),
+ 'Mostlinked' => array( 'Pachinas_mas_enlazatas', 'Pachinas_mas_vinculatas' ),
+ 'Mostlinkedcategories' => array( 'Categorías_mas_emplegatas', 'Categorías_más_enlazatas', 'Categorías_más_binculatas' ),
+ 'Mostlinkedtemplates' => array( 'Plantillas_mas_emplegatas', 'Plantillas_mas_enlazatas', 'Plantillas_más_binculatas' ),
+ 'Mostrevisions' => array( 'Pachinas_con_más_edicions', 'Pachinas_con_más_edizions', 'Pachinas_más_editatas', 'Pachinas_con_más_bersions' ),
+ 'Movepage' => array( 'TresladarPachina', 'Renombrar_pachina', 'Mober_pachina', 'Tresladar_pachina' ),
+ 'Mycontributions' => array( 'As_mías_contrebucions', 'As_mías_contrebuzions' ),
+ 'Mypage' => array( 'A_mía_pachina', 'A_mía_pachina_d\'usuario' ),
+ 'Mytalk' => array( 'A_mía_descusión', 'A_mía_pachina_de_descusión' ),
+ 'Newimages' => array( 'Nuevos_fichers', 'Nuevas_imáchens', 'Nuevas_imachens', 'Nuebas_imachens' ),
+ 'Newpages' => array( 'Pachinas_nuevas', 'Pachinas_recients', 'Pachinas_nuebas', 'Pachinas_más_nuebas', 'Pachinas_más_rezients', 'Pachinas_rezients' ),
+ 'Popularpages' => array( 'Pachinas_populars', 'Pachinas_más_populars' ),
+ 'Preferences' => array( 'Preferencias' ),
+ 'Prefixindex' => array( 'Pachinas_por_prefixo', 'Mirar_por_prefixo' ),
+ 'Protectedpages' => array( 'Pachinas_protechitas', 'Pachinas_protechidas' ),
+ 'Protectedtitles' => array( 'Títols_protechitos', 'Títols_protexitos', 'Títols_protechius' ),
+ 'Randompage' => array( 'Pachina_a_l\'azar', 'Pachina_aleatoria', 'Pachina_aliatoria' ),
+ 'Recentchanges' => array( 'Zaguers_cambeos', 'Cambeos_recients' ),
+ 'Search' => array( 'Mirar' ),
+ 'Shortpages' => array( 'Pachinas_más_curtas' ),
+ 'Specialpages' => array( 'Pachinas_especials', 'Pachinas_espezials' ),
+ 'Statistics' => array( 'Estatisticas', 'Estadisticas' ),
'Uncategorizedcategories' => array( 'Categorías_sin_categorizar._Categorías_sin_categorías' ),
'Uncategorizedimages' => array( 'Fichers_sin_categorizar', 'Fichers_sin_categorías', 'Imáchens_sin_categorías', 'Imachens_sin_categorizar', 'Imáchens_sin_categorizar' ),
+ 'Uncategorizedpages' => array( 'Pachinas_sin_categorizar', 'Pachinas_sin_categorías' ),
'Uncategorizedtemplates' => array( 'Plantillas_sin_categorizar._Plantillas_sin_categorías' ),
+ 'Undelete' => array( 'Restaurar' ),
'Unusedcategories' => array( 'Categorías_no_emplegatas', 'Categorías_sin_emplegar' ),
'Unusedimages' => array( 'Fichers_no_emplegatos', 'Fichers_sin_emplegar', 'Imáchens_no_emplegatas', 'Imáchens_sin_emplegar' ),
- 'Wantedpages' => array( 'Pachinas_requiestas', 'Pachinas_demandatas', 'Binclos_crebatos', 'Binclos_trencatos' ),
+ 'Unwatchedpages' => array( 'Pachinas_no_cosiratas', 'Pachinas_sin_cosirar' ),
+ 'Upload' => array( 'Cargar', 'Puyar' ),
+ 'Userlogin' => array( 'Encetar_sesión', 'Enzetar_sesión', 'Dentrar' ),
+ 'Userlogout' => array( 'Salir', 'Rematar_sesión' ),
+ 'Version' => array( 'Versión', 'Bersión' ),
'Wantedcategories' => array( 'Categorías_requiestas', 'Categorías_demandatas' ),
'Wantedfiles' => array( 'Fichers_requiestos', 'Fichers_demandaus', 'Archibos_requiestos', 'Archibos_demandatos' ),
+ 'Wantedpages' => array( 'Pachinas_requiestas', 'Pachinas_demandatas', 'Binclos_crebatos', 'Binclos_trencatos' ),
'Wantedtemplates' => array( 'Plantillas_requiestas', 'Plantillas_demandatas' ),
- 'Mostlinked' => array( 'Pachinas_más_enlazatas', 'Pachinas_más_vinculatas' ),
- 'Mostlinkedcategories' => array( 'Categorías_más_emplegatas', 'Categorías_más_enlazatas', 'Categorías_más_binculatas' ),
- 'Mostlinkedtemplates' => array( 'Plantillas_más_emplegatas', 'Plantillas_más_enlazatas', 'Plantillas_más_binculatas' ),
- 'Mostimages' => array( 'Fichers_más_emplegatos', 'Imáchens_más_emplegatas', 'Imachens_más_emplegatas' ),
- 'Mostcategories' => array( 'Pachinas_con_más_categorías' ),
- 'Mostrevisions' => array( 'Pachinas_con_más_edicions', 'Pachinas_con_más_edizions', 'Pachinas_más_editatas', 'Pachinas_con_más_bersions' ),
- 'Fewestrevisions' => array( 'Pachinas_con_menos_edicions', 'Pachinas_con_menos_edizions', 'Pachinas_menos_editatas', 'Pachinas_con_menos_bersions' ),
- 'Shortpages' => array( 'Pachinas_más_curtas' ),
- 'Longpages' => array( 'Pachinas_más_largas' ),
- 'Newpages' => array( 'Pachinas_nuevas', 'Pachinas_recients', 'Pachinas_nuebas', 'Pachinas_más_nuebas', 'Pachinas_más_rezients', 'Pachinas_rezients' ),
- 'Ancientpages' => array( 'Pachinas_más_viellas', 'Pachinas_más_antigas', 'Pachinas_más_biellas', 'Pachinas_biellas', 'Pachinas_antigas' ),
- 'Deadendpages' => array( 'Pachinas_sin_salida', 'Pachinas_sin_de_salida' ),
- 'Protectedpages' => array( 'Pachinas_protechitas', 'Pachinas_protechidas' ),
- 'Protectedtitles' => array( 'Títols_protechitos', 'Títols_protexitos', 'Títols_protechius' ),
- 'Allpages' => array( 'Todas_as_pachinas' ),
- 'Prefixindex' => array( 'Pachinas_por_prefixo', 'Mirar_por_prefixo' ),
- 'Ipblocklist' => array( 'Lista_d\'IPs_bloqueyatas', 'Lista_d\'IPs_bloquiatas', 'Lista_d\'adrezas_IP_bloqueyatas', 'Lista_d\'adrezas_IP_bloquiatas' ),
- 'Specialpages' => array( 'Pachinas_especials', 'Pachinas_espezials' ),
- 'Contributions' => array( 'Contrebucions', 'Contrebuzions' ),
- 'Emailuser' => array( 'Ninvía_mensache', 'Nimbía_mensache' ),
- 'Confirmemail' => array( 'Confirmar_e-mail' ),
- 'Movepage' => array( 'TresladarPachina', 'Renombrar_pachina', 'Mober_pachina', 'Tresladar_pachina' ),
- 'Blockme' => array( 'Bloqueya-me' ),
- 'Booksources' => array( 'Fuents_de_libros' ),
- 'Categories' => array( 'Categorías' ),
- 'Export' => array( 'Exportar' ),
- 'Version' => array( 'Versión', 'Bersión' ),
- 'Allmessages' => array( 'Totz_os_mensaches', 'Toz_os_mensaches' ),
- 'Log' => array( 'Rechistro', 'Rechistros' ),
- 'Blockip' => array( 'Bloqueyar' ),
- 'Undelete' => array( 'Restaurar' ),
- 'Import' => array( 'Importar' ),
- 'Unwatchedpages' => array( 'Pachinas_no_cosiratas', 'Pachinas_sin_cosirar' ),
- 'Mypage' => array( 'A_mía_pachina', 'A_mía_pachina_d\'usuario' ),
- 'Mytalk' => array( 'A_mía_descusión', 'A_mía_pachina_de_descusión' ),
- 'Mycontributions' => array( 'As_mías_contrebucions', 'As_mías_contrebuzions' ),
- 'Listadmins' => array( 'Lista_d\'almenistradors' ),
- 'Listbots' => array( 'Lista_de_botz', 'Lista_de_bots' ),
- 'Popularpages' => array( 'Pachinas_populars', 'Pachinas_más_populars' ),
- 'Search' => array( 'Mirar' ),
- 'Resetpass' => array( 'Cambiar_contrasenya' ),
+ 'Watchlist' => array( 'Lista_de_seguimiento' ),
);
$messages = array(
@@ -154,8 +158,8 @@ $messages = array(
'tog-shownumberswatching' => "Amostrar o numero d'usuarios que cosiran un articlo",
'tog-oldsig' => "Vista previa d'a sinyadura:",
'tog-fancysig' => 'Tratar as sinyaduras como wikitexto (sin de vinclo automatico)',
-'tog-externaleditor' => "Fer servir l'editor externo por defecto (nomás ta espiertos, cal que faiga achustes especials en o suyo ordenador. [http://www.mediawiki.org/wiki/Manual:External_editors Mas información.])",
-'tog-externaldiff' => 'Fer servir o visualizador de diferencias externo por defecto (nomás ta expertos, cal que faiga achustes especials en o suyo ordenador. [http://www.mediawiki.org/wiki/Manual:External_editors Mas información.])',
+'tog-externaleditor' => "Fer servir l'editor externo por defecto (nomás ta espiertos, cal que faiga achustes especials en o suyo ordenador. [//www.mediawiki.org/wiki/Manual:External_editors Mas información.])",
+'tog-externaldiff' => 'Fer servir o visualizador de diferencias externo por defecto (nomás ta expertos, cal que faiga achustes especials en o suyo ordenador. [//www.mediawiki.org/wiki/Manual:External_editors Mas información.])',
'tog-showjumplinks' => 'Activar vinclos d\'accesibilidat "blincar enta"',
'tog-uselivepreview' => 'Activar previsualización automatica (cal JavaScript) (Esperimental)',
'tog-forceeditsummary' => 'Avisar-me quan o campo de resumen siga buedo.',
@@ -251,15 +255,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Pachinas indexadas',
'noindex-category' => 'Pachinas sin indexar',
-
-'mainpagetext' => "'''O programa MediaWiki s'ha instalato correctament.'''",
-'mainpagedocfooter' => "Consulta a [http://meta.wikimedia.org/wiki/Help:Contents Guía d'usuario] ta mirar información sobre cómo usar o software wiki.
-
-== Ta prencipiar ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista de caracteristicas confegurables]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Preguntas cutianas sobre MediaWiki (FAQ)]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correu sobre ta anuncios de MediaWiki]",
+'broken-file-category' => 'Pachinas con vinclos a fichero trencaus',
'about' => 'Información sobre',
'article' => 'Articlo',
@@ -311,10 +307,10 @@ $messages = array(
'history' => "Historial d'a pachina",
'history_short' => 'Historial',
'updatedmarker' => 'esviellato dende a zaguera vesita',
-'info_short' => 'Información',
'printableversion' => 'Versión ta imprentar',
'permalink' => 'Vinclo permanent',
'print' => 'Imprentar',
+'view' => 'Veyer',
'edit' => 'Editar',
'create' => 'Creyar',
'editthispage' => 'Editar ista pachina',
@@ -322,6 +318,7 @@ $messages = array(
'delete' => 'Borrar',
'deletethispage' => 'Borrar ista pachina',
'undelete_short' => 'Restaurar {{PLURAL:$1|una edición|$1 edicions}}',
+'viewdeleted_short' => 'Veyer {{PLURAL:$1|una edición borrata|$1 edicions borratas}}',
'protect' => 'Protecher',
'protect_change' => 'cambiar',
'protectthispage' => 'Protecher ista pachina',
@@ -405,6 +402,8 @@ $1",
'toc' => 'Contenius',
'showtoc' => 'amostrar',
'hidetoc' => 'amagar',
+'collapsible-collapse' => 'Replegar',
+'collapsible-expand' => 'Ixamplar',
'thisisdeleted' => 'Quiere amostrar u restaurar $1?',
'viewdeleted' => 'Quiere amostrar $1?',
'restorelink' => '{{PLURAL:$1|una edición borrata|$1 edicions borratas}}',
@@ -416,6 +415,8 @@ $1",
'page-rss-feed' => 'Canal RSS "$1"',
'page-atom-feed' => 'Canal Atom "$1"',
'red-link-title' => '$1 (a pachina encara no existe)',
+'sort-descending' => 'Ordena en orden descendent',
+'sort-ascending' => 'Ordena en orden ascendent',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Pachina',
@@ -497,11 +498,12 @@ Consulta: $2',
'protectedpagetext' => 'Ista pachina ha estato protechita ta aprevenir a suya edición.',
'viewsourcetext' => "Puede veyer y copiar o codigo fuent d'ista pachina:",
'protectedinterface' => "Ista pachina furne o texto d'a interfaz ta o software. Ye protechita ta privar o vandalismo. Si creye que bi ha bella error, contacte con un administrador.",
-'editinginterface' => "'''Pare cuenta:''' Ye editando una pachina emplegata ta furnir o texto d'a interfaz de {{SITENAME}}. Os cambeos en ista pachina tendrán efecto en l'aparencia d'a interfaz ta os atros usuarios. Ta fer traduccions d'a interfaz, puede considerar fer servir [http://translatewiki.net/wiki/Main_Page?setlang=an translatewiki.net], o prochecto de localización de MediaWiki.",
+'editinginterface' => "'''Pare cuenta:''' Ye editando una pachina emplegata ta furnir o texto d'a interfaz de {{SITENAME}}. Os cambeos en ista pachina tendrán efecto en l'aparencia d'a interfaz ta os atros usuarios. Ta fer traduccions d'a interfaz, puede considerar fer servir [//translatewiki.net/wiki/Main_Page?setlang=an translatewiki.net], o prochecto de localización de MediaWiki.",
'sqlhidden' => '(Consulta SQL amagata)',
'cascadeprotected' => 'Ista pachina ye protechita y no se puede editar porque ye incluyita en {{PLURAL:$1|a siguient pachina|as siguients pachinas}}, que son protechitas con a opción de "cascada": $2',
'namespaceprotected' => "No tiene premiso ta editar as pachinas d'o espacio de nombres '''$1'''.",
-'customcssjsprotected' => "No tiene premiso ta editar ista pachina porque contiene a confeguración presonal d'atro usuario.",
+'customcssprotected' => 'No tiene permisos ta editar a pachina CSS porque contién parametros personal de belatro usuario.',
+'customjsprotected' => 'No tien permisos ta editar a pachina JavaScript porque contién os parametros personas de belatro usuario.',
'ns-specialprotected' => "No ye posible editar as pachinas d'o espacio de nombres {{ns:special}}.",
'titleprotected' => "Iste títol no puede creyar-se porque ye estato protechito por [[User:$1|$1]].
A razón data ye ''$2''.",
@@ -538,6 +540,7 @@ No xublide de presonalizar [[Special:Preferences|as suyas preferencias en {{SITE
'createaccount' => 'Creyar una nueva cuenta',
'gotaccount' => "Tiene ya una cuenta? '''$1'''.",
'gotaccountlink' => 'Identificar-se y encetar sesión',
+'userlogin-resetlink' => "Ha xublidau os suyos datos d'acceso?",
'createaccountmail' => 'por correu electronico',
'createaccountreason' => 'Razón:',
'badretype' => 'As contrasenyas que ha escrito no son iguals.',
@@ -547,13 +550,14 @@ Por favor, meta-ne uno diferent.",
'createaccounterror' => "No s'ha puesto creyar a cuenta: $1",
'nocookiesnew' => "A cuenta d'usuario s'ha creyata, pero encara no ye indentificato. {{SITENAME}} fa servir <em>cookies</em> ta identificar a os usuario rechistratos, pero pareix que las tiene desactivatas. Por favor, active-las e identifique-se con o suyo nombre d'usuario y contrasenya.",
'nocookieslogin' => "{{SITENAME}} fa servir <em>cookies</em> ta la identificación d'usuarios. Tiene as <em>cookies</em> desactivatas en o suyo navegador. Por favor, active-las y prebe d'identificar-se de nuevas.",
+'nocookiesfornew' => "No se puet creyar a cuenta d'usuario, porque no hemos puesto confimar o suyo orichen. Asegure-se que tien as galletas (cookies) activatas, dimpués cargue de nuevas ista pachina y torne a intentar-lo.",
'noname' => "No ha escrito un nombre d'usuario correcto.",
'loginsuccesstitle' => "S'ha identificato correctament",
'loginsuccess' => 'Ha encetato una sesión en {{SITENAME}} como "$1".',
'nosuchuser' => 'No bi ha garra usuario clamato "$1".
Os nombres d\'usuario son sensibles a las mayusclas.
Comprebe si ha escrito bien o nombre u [[Special:UserLogin/signup|creye una nueva cuenta d\'usuario]].',
-'nosuchusershort' => 'No bi ha garra usuario con o nombre "<nowiki>$1</nowiki>". Comprebe si o nombre ye bien escrito.',
+'nosuchusershort' => 'No bi ha garra usuario con o nombre "$1". Comprebe si o nombre ye bien escrito.',
'nouserspecified' => "Ha d'escribir un nombre d'usuario.",
'login-userblocked' => "Iste usuario ye bloqueyau. No se permite l'inicio de sesión.",
'wrongpassword' => 'A contrasenya indicata no ye correcta. Prebe unatra vegada.',
@@ -591,13 +595,14 @@ Por ixo, no se pueden creyar más cuentas por agora dende ixa adreza IP.",
Si a cuenta s\'ha creyato por error, simplament ignore iste mensache.',
'usernamehasherror' => "O nombre d'usuario no puet contener simbolos hash",
'login-throttled' => 'Ha feito masiaus intentos ta encetar una sesión. Por favor, aspere antes de prebar de fer-lo unatra vegada.',
+'login-abort-generic' => "A dentrada a la cuenta d'usuario ha fallato - Cancelato",
'loginlanguagelabel' => 'Idioma: $1',
'suspicious-userlogout' => "S'ha denegau a suya demanda de zarrar a sesión ya que pareix que la ninvió un navegador defectuoso u bell proxy amagau.",
# E-mail sending
'php-mail-error-unknown' => 'Error desconoixito en a función mail() de PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Cambiar a contrasenya',
'resetpass_announce' => 'Ha encetato una sesión con una contrasenya temporal que se le ninvió por correu. Por favor, escriba aquí una nueva contrasenya:',
'resetpass_text' => '<!-- Adiba aquí o testo -->',
@@ -615,6 +620,29 @@ Si a cuenta s\'ha creyato por error, simplament ignore iste mensache.',
Talment ya ha cambiato a suya contrasenya u ha demandato una nueva contrasenya temporal.',
'resetpass-temp-password' => 'Contrasenya temporal:',
+# Special:PasswordReset
+'passwordreset' => 'Restablir a parola de paso',
+'passwordreset-text' => "Completar ista forma ta recibir un recordatorio por correu con os detalles d'a suya cuenta.",
+'passwordreset-legend' => 'Restablir a parola de paso',
+'passwordreset-disabled' => "S'ha desactivau o restablimiento de parolas de paso en ista wiki.",
+'passwordreset-pretext' => "{{PLURAL:$1||Introduzca uno d'os siguients datos}}",
+'passwordreset-username' => "Nombre d'usuario:",
+'passwordreset-email' => 'Adreza de correu electronico:',
+'passwordreset-emailtitle' => "Detalles d'a cuenta en {{SITENAME}}",
+'passwordreset-emailtext-ip' => "Belún (probablement vusté, dende l'adreza IP $1) ha demandau un recordatorio d'a información d'a suya cuenta en {{SITENAME}} ($4). {{PLURAL:$3|A cuenta d'usuario siguient ye asociata|As cuentas d'usuario siguients son asociatas}} a ista adreza de correu-e:
+
+$2
+
+{{PLURAL:$3|Ista parola de paso temporal circumducirá|Istas parolas de paso temporals circumducirán}} en {{PLURAL:$5|un día|$5 días}}. Habría de connectar-se agora y trigar una nueva parola de paso. Si ista demanda no dimana de vusté, u ya se'n ha acordau d'a suya parolas de paso inicial y ya no deseya modificar-la, puet ignorar iste mensache y continar emplegando a suya viella parola de paso.",
+'passwordreset-emailtext-user' => "L'usuario $1 en {{SITENAME}} ha demandau un recordatorio d'a información d'a suya cuenta en {{SITENAME}} ($4). {{PLURAL:$3|A cuenta d'usuario siguient ye asociata|As cuentas d'usuario siguients son asociatas}} a ista adreza de correu-e:
+
+$2
+
+{{PLURAL:$3|Ista parola de paso temporal circumducirá|Istas parolas de paso temporals circumducirán}} en {{PLURAL:$5|un día|$5 días}}. Habría de connectar-se agora y trigar una nueva parola de paso. Si ista demanda no dimana de vusté, u ya se'n ha acordau d'a suya parolas de paso inicial y ya no deseya modificar-la, puet ignorar iste mensache y continar emplegando a suya viella parola de paso.",
+'passwordreset-emailelement' => 'Nombre de usuario: $1
+Parola de paso temporal: $2',
+'passwordreset-emailsent' => "S'ha ninviau un recordatorio por correu-e.",
+
# Edit page toolbar
'bold_sample' => 'Texto en negreta',
'bold_tip' => 'Texto en negreta',
@@ -626,8 +654,6 @@ Talment ya ha cambiato a suya contrasenya u ha demandato una nueva contrasenya t
'extlink_tip' => 'Vinclo externo (recuerde o prefixo http://)',
'headline_sample' => 'Texto de subtítol',
'headline_tip' => 'Soztítol de livel 2',
-'math_sample' => 'Escriba aquí a formula',
-'math_tip' => 'Formula matematica (LaTeX)',
'nowiki_sample' => 'Escriba aquí texto sin formateyar',
'nowiki_tip' => 'Ignorar o formato wiki',
'image_sample' => 'Exemplo.jpg',
@@ -708,7 +734,7 @@ Si vusté ye un usuario anonimo y creye que l'han escrito comentarios no relevan
'noarticletext-nopermission' => 'Por l\'inte no i hai garra texto en ista pachina.
Puet [[Special:Search/{{PAGENAME}}|mirar iste títol]] en atras páginas,
u bien <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mirar en os rechistros relacionatos]</span>.',
-'userpage-userdoesnotexist' => 'A cuenta d\'usuario "$1" no ye rechistrada. Piense si quiere creyar u editar ista pachina.',
+'userpage-userdoesnotexist' => 'A cuenta d\'usuario "<nowiki>$1</nowiki>" no ye rechistrada. Piense si quiere creyar u editar ista pachina.',
'userpage-userdoesnotexist-view' => 'A cuenta d\'usuario "$1" no ye rechistrada.',
'blocked-notice-logextract' => "Ista cuenta d'usuario ye actualment bloqueyata.
A zaguera dentrada d'o rechistro de bloqueyos s'amuestra contino:",
@@ -739,6 +765,7 @@ A zaguera dentrada d'o rechistro de bloqueyos s'amuestra contino:",
'''Si ye mirando d'editar lechitimament, por favor, prebe una atra vegada. Si encara no funcionase alavez, prebe de [[Special:UserLogout|zarrar a sesión]] y dentrar-ie identificando-se de nuevas.'''",
'token_suffix_mismatch' => "'''S'ha refusato a suya edición porque o suyo client ha esbarafundiato os carácters de puntuación en o editor. A edición s'ha refusata ta privar a corrompición d'a pachina de texto. Isto gosa escaixer quan se fa servir un servicio de proxy defectuoso alazetato en a web.'''",
+'edit_form_incomplete' => "'''Bellas partes d'o formulario de modificación no han plegato en o servidor, verifique que as suyas modificacions son intactas y mire de fer-lo de nuevas.'''",
'editing' => 'Editando $1',
'editingsection' => 'Editando $1 (sección)',
'editingcomment' => 'Editando $1 (nueva sección)',
@@ -1071,12 +1098,13 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
'searchdisabled' => 'A busca en {{SITENAME}} ye temporalment desactivata. Entremistanto, puede mirar en {{SITENAME}} fendo servir buscadors externos, pero pare cuenta que os suyos endices de {{SITENAME}} puede no estar esviellatos.',
# Quickbar
-'qbsettings' => 'Preferencias de "Quickbar"',
-'qbsettings-none' => 'Garra',
-'qbsettings-fixedleft' => 'Fixa a la zurda',
-'qbsettings-fixedright' => 'Fixa a la dreita',
-'qbsettings-floatingleft' => 'Flotant a la zurda',
-'qbsettings-floatingright' => 'Flotant a la dreita',
+'qbsettings' => 'Preferencias de "Quickbar"',
+'qbsettings-none' => 'Garra',
+'qbsettings-fixedleft' => 'Fixa a la zurda',
+'qbsettings-fixedright' => 'Fixa a la dreita',
+'qbsettings-floatingleft' => 'Flotant a la zurda',
+'qbsettings-floatingright' => 'Flotant a la dreita',
+'qbsettings-directionality' => "Fixato, pendendo en a direccionalidat d'o suyo script y o suyo luengache",
# Preferences page
'preferences' => 'Preferencias',
@@ -1087,9 +1115,10 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
'changepassword' => 'Cambiar a contrasenya',
'prefs-skin' => 'Aparencia',
'skin-preview' => 'Fer una prebatina',
-'prefs-math' => 'Esprisions matematicas',
'datedefault' => 'Sin de preferencias',
+'prefs-beta' => 'Caracteristicas beta',
'prefs-datetime' => 'Calendata y hora',
+'prefs-labs' => 'Caracteristicas experimentals',
'prefs-personal' => 'Datos presonals',
'prefs-rc' => 'Zaguers cambeos',
'prefs-watchlist' => 'Lista de seguimiento',
@@ -1111,8 +1140,6 @@ Asegure-se que iste cambio no trencará a continidat de l'historial d'a pachina.
'columns' => 'Columnas:',
'searchresultshead' => 'Mirar',
'resultsperpage' => "Resultaus que s'amostrarán por pachina:",
-'contextlines' => "Linias de contexto que s'amostrarán por resultau",
-'contextchars' => 'Carácters de contexto por linia',
'stub-threshold' => 'Branquil superior ta o formateyo de <a href="#" class="stub">vinclos ta borradors</a> (en bytes):',
'stub-threshold-disabled' => 'Desactivato',
'recentchangesdays' => "Días que s'amostrarán en ''zaguers cambeos'':",
@@ -1125,7 +1152,7 @@ Contino se i amuestra una calu chenerata de traza aleatoria que puede fer servir
'savedprefs' => "S'han alzato as suyas preferencias.",
'timezonelegend' => 'Fuso horario:',
'localtime' => 'Hora local:',
-'timezoneuseserverdefault' => "Usar a zona d'o servidor",
+'timezoneuseserverdefault' => "Usar a zona d'o servidor ($1)",
'timezoneuseoffset' => 'Atra (especifica a esferencia)',
'timezoneoffset' => 'Esferencia¹:',
'servertime' => 'A hora en o servidor ye:',
@@ -1173,7 +1200,8 @@ Habría de tener menos de $1 {{PLURAL:$1|carácter|carácters}}.',
'prefs-help-gender' => 'Opcional: Emplegada ta corrección de chenero por o software. Ista información será publica.',
'email' => 'Adreza de correu-e',
'prefs-help-realname' => "* Nombre reyal (opcional): si esliche escribir-lo, se ferá servir ta l'atribución d'a suya faina.",
-'prefs-help-email' => "L'adreza de correu-e ye opcional, pero ye precisa ta que le ninviemos una nueva contrasenya si nunc la xublidase. Tamién puede fer que atros usuarios puedan contactar con vusté dende a suya pachina d'usuario u de descusión d'usuario sin haber de revelar a suya identidat.",
+'prefs-help-email' => "L'adreza de correu-e ye opcional, pero ye precisa ta que le ninviemos una nueva contrasenya si nunca la xublidase.",
+'prefs-help-email-others' => "Tamién puet esleir deixar que atros usuarios contacten con vusté por correu-e a traviés d'a pachina personal de discusión, sin necesidat de desveilar a suya identidat.",
'prefs-help-email-required' => 'Cal una adreza de correu-e.',
'prefs-info' => 'Información basica',
'prefs-i18n' => 'Internacionalización',
@@ -1298,15 +1326,15 @@ Habría de tener menos de $1 {{PLURAL:$1|carácter|carácters}}.',
'right-userrights' => "Editar totz os dreitos d'usuario",
'right-userrights-interwiki' => "Editar os dreitos d'usuario d'os usuarios d'atros wikis",
'right-siteadmin' => 'Trancar y destrancar a base de datos',
-'right-reset-passwords' => "Reiniciar a contrasenya d'atros usuarios",
'right-override-export-depth' => 'Exporta pachinas que incluigan as enlazadas dica un fundaria de 5',
'right-sendemail' => 'Ninviar un correu electronico a atros 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",
-'rightsnone' => '(garra)',
+'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',
@@ -1426,11 +1454,11 @@ Ta incluyir un fichero en una pachina, emplegue un vinclo d'una d'istas trazas
'minlength1' => 'Os nombres de fichero han de tener a lo menos una letra.',
'illegalfilename' => "O nombre de fichero «$1» tiene carácters no premititos en títols de pachinas. Por favor, cambee o nombre d'o fichero y mire de tornar a cargarlo.",
'badfilename' => 'O nombre d\'a imachen s\'ha cambiato por "$1".',
-'filetype-mime-mismatch' => "A extensión d'o fichero no coincide con o suyo tipo MIME.",
+'filetype-mime-mismatch' => 'A extensión ".$1" no coincide con o tipo MIME detectato en o fichero ($2).',
'filetype-badmime' => 'No se premite cargar fichers de tipo MIME "$1".',
'filetype-bad-ie-mime' => 'No puet cargar iste fichero porque o Internet Explorer lo consideraría como "$1", que ye un tipo de fichero no premitito y potencialment perigloso.',
'filetype-unwanted-type' => "Os '''\".\$1\"''' son un tipo de fichero no deseyato. Se prefieren os fichers {{PLURAL:\$3|de tipo|d'os tipos}} \$2.",
-'filetype-banned-type' => "No se premiten os fichers de tipo '''\".\$1\"'''. {{PLURAL:\$3|O tipo premitito ye|Os tipos premititos son}} \$2.",
+'filetype-banned-type' => "{{PLURAL:$4|Os fichers de tipo «'''.$1'''»|Os fichers d'os tipos '''$1'''}} no se permiten. {{PLURAL:$3|Nomás s'admeten os fichers d'o tipo|Nomás s'admeten os fichers d'os tipos}} $2.",
'filetype-missing' => 'O fichero no tiene garra estensión (como ".jpg").',
'empty-file' => 'O fichero que ninvió yera buedo.',
'file-too-large' => 'O fichero que ninvió ye masiau gran.',
@@ -1488,9 +1516,6 @@ Si encara quiere cargar ixe fichero, torne y faiga servir un nuevo nombre. [[Fil
'upload-options' => 'Opcions de carga',
'watchthisupload' => 'Cosirar iste fichero',
'filewasdeleted' => 'Una fichero con iste mesmo nombre ya se cargó denantes y estió borrato dimpués. Habría de comprebar $1 antes de tornar a cargar-lo una atra vegada.',
-'upload-wasdeleted' => "'''Pare cuenta: Ye cargando un fichero que ya estió borrato d'antes más.'''
-
-Habría de repensar si ye apropiato continar con a carga d'iste fichero. Aquí tiene o rechistro de borrau d'iste fichero ta que pueda comprebar a razón que se dio ta borrar-lo:",
'filename-bad-prefix' => "O nombre d'o fichero que ye cargando prencipia por '''\"\$1\"''', que ye un nombre no descriptivo que gosa clabar automaticament as camaras dichitals. Por favor, trigue un nombre más descriptivo ta iste fichero.",
'filename-prefix-blacklist' => ' #<!-- dixe ista linia esautament igual como ye --> <pre>
# A sintacsis ye asinas:
@@ -1525,6 +1550,9 @@ $1',
'upload-unknown-size' => 'Grandaria desconoixid',
'upload-http-error' => 'Ha ocorriu una error HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => "S'ha trobato una error en ubrir o ficherto ta fer-ie comprebacions ZIP.",
+
# img_auth script messages
'img-auth-accessdenied' => 'Acceso refusau',
'img-auth-nopathinfo' => 'Falta PATH_INFO.
@@ -1606,7 +1634,6 @@ A lista siguient nomás amuestra {{PLURAL:$1|a primer pachina con vinclos|as pri
Tamién puetz consultar a [[Special:WhatLinksHere/$2|lista completa]].',
'nolinkstoimage' => 'Garra pachina tiene un vinclo ta ista imachen.',
'morelinkstoimage' => 'Amostrar [[Special:WhatLinksHere/$1|más vinclos]] ta iste fichero.',
-'redirectstofile' => '{{PLURAL:$1|O siguient fichero reendreza|Os siguients $1 fichers reendrezan}} enta iste fichero:',
'duplicatesoffile' => "{{PLURAL:$1|O siguient fichero ye un duplicato|Os siguients $1 fichers son duplicatos}} d'iste fichero ([[Special:FileDuplicateSearch/$2|más detalles]]):",
'sharedupload' => 'Iste fichero provién de $1 y talment siga emplegato en atros prochectos.',
'sharedupload-desc-there' => "Iste fichero ye de $1 y puet estar emplegau por atros prochectos.
@@ -1920,9 +1947,7 @@ L\'adreza de correu-e que endicó en as suyas [[Special:Preferences|preferencias
'watchlistanontext' => "Ha de $1 ta veyer u editar as dentradas d'a suya lista de seguimiento.",
'watchnologin' => 'No ha encetato a sesión',
'watchnologintext' => "Ha d'estar [[Special:UserLogin|identificato]] ta poder cambiar a suya lista de seguimiento.",
-'addedwatch' => 'Adhibiu a la suya lista de seguimiento',
'addedwatchtext' => "A pachina «[[:\$1]]» s'ha adhibito t'a suya [[Special:Watchlist|lista de seguimiento]]. Os cambios esdevenideros en ista pachina y en a suya pachina de descusión asociata s'indicarán astí, y a pachina amanixerá '''en negreta''' en a [[Special:RecentChanges|lista de cambios recients]] ta que se veiga millor. <p>Si nunca quiere borrar a pachina d'a suya lista de seguimiento, punche \"Deixar de cosirar\" en o menú.",
-'removedwatch' => "Borrata d'a lista de seguimiento",
'removedwatchtext' => 'A pachina "[[:$1]]" s\'ha sacau d\'a suya [[Special:Watchlist|lista de seguimiento]].',
'watch' => 'Cosirar',
'watchthispage' => 'Cosirar ista pachina',
@@ -1976,13 +2001,13 @@ O sistema de notificación de {{SITENAME}}.
--
Ta cambiar as opcions d\'a suya lista de seguimiento, punche:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Ta borrar ista pachina d\'a suya lista de seguimiento, punche:
$UNWATCHURL
Ta obtenir más información y aduya:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Borrar ista pachina',
@@ -1998,7 +2023,7 @@ Ta obtenir más información y aduya:
Por favor, confirme que reyalment ye mirando de fer ixo, que entiende as conseqüencias, y que lo fa d'alcuerdo con as [[{{MediaWiki:Policy-url}}|politicas]] d'o wiki.",
'actioncomplete' => 'Acción rematada',
'actionfailed' => "L'acción ha feito fallita",
-'deletedtext' => 'S\'ha borrau "<nowiki>$1</nowiki>".
+'deletedtext' => 'S\'ha borrau "$1".
Se veiga en $2 un rechistro d\'os borraus recients.',
'deletedarticle' => 'ha borrato "[[$1]]"',
'suppressedarticle' => 's\'ha supreso "[[$1]]"',
@@ -2052,7 +2077,7 @@ Torne t'a pachina anterior, recargue a pachina y torne a prebar alavez.",
'protect_expiry_invalid' => 'O tiempo de circumducción ye incorrecto.',
'protect_expiry_old' => 'O tiempo de circumducción ye una calendata ya pasata.',
'protect-unchain-permissions' => 'Desbloqueyar opcions de protección abanzatas',
-'protect-text' => "Puetz veyer y cambiar o livel e protección d'a pachina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Puetz veyer y cambiar o livel e protección d'a pachina '''$1'''.",
'protect-locked-blocked' => "No puede cambiar os livels de protección mientres ye bloqueyato. Contino se i amuestran as opcions actuals d'a pachina '''$1''':",
'protect-locked-dblock' => "Os livels de protección no se pueden cambiar por un bloqueyo activo d'a base de datos.
Contino se i amuestran as opcions actuals d'a pachina '''$1''':",
@@ -2203,7 +2228,6 @@ Isto habría de fer-se nomás ta privar vandalismos, y d'alcuerdo con
as [[{{MediaWiki:Policy-url}}|politicas]].
Escriba a razón especifica ta o bloqueyo (por exemplo, quaternando
as pachinas que s'han vandalizato).",
-'ipaddress' => 'Adreza IP',
'ipadressorusername' => "Adreza IP u nombre d'usuario",
'ipbexpiry' => 'Circumducción:',
'ipbreason' => 'Razón:',
@@ -2216,7 +2240,6 @@ as pachinas que s'han vandalizato).",
** Portar-se de traza intimidatoria u violenta / atosegar
** Abusar de multiples cuentas
** Nombre d'usuario inacceptable",
-'ipbanononly' => 'Bloqueyar nomás os usuarios anonimos',
'ipbcreateaccount' => "Aprevenir a creyación de cuentas d'usuario.",
'ipbemailban' => 'Privar que os usuarios ninvíen correus electronicos',
'ipbenableautoblock' => "bloqueyar automaticament l'adreza IP emplegata por iste usuario, y qualsiquier IP posterior dende a que prebe d'editar",
@@ -2227,7 +2250,6 @@ as pachinas que s'han vandalizato).",
'ipbotherreason' => 'Razons diferens u adicionals',
'ipbhidename' => "Amagar o nombre d'usuario en edicions y listas",
'ipbwatchuser' => "Cosirar as pachinas d'usuario y de descusión d'iste usuario",
-'ipballowusertalk' => 'Premitir que iste usuario edite a suya pachina de descusión en o tiempo que ye bloqueyato',
'ipb-change-block' => "Rebloqueyear a l'usuario con istas condicions",
'badipaddress' => "L'adreza IP no ye conforme.",
'blockipsuccesssub' => "O bloqueyo s'ha feito correctament",
@@ -2244,14 +2266,9 @@ as pachinas que s'han vandalizato).",
'unblocked-id' => "S'ha sacato o bloqueyo $1",
'ipblocklist' => 'Usuarios bloqueyatos',
'ipblocklist-legend' => 'Mirar un usuario bloqueyato',
-'ipblocklist-username' => "Nombre d'usuario u adreza IP:",
-'ipblocklist-sh-userblocks' => '$1 bloqueyos de cuentas',
-'ipblocklist-sh-tempblocks' => '$1 bloqueyos temporals',
-'ipblocklist-sh-addressblocks' => "$1 bloqueyos d'adrezas IP individuals",
'ipblocklist-submit' => 'Mirar',
'ipblocklist-localblock' => 'Bloqueyo local',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Atro bloqueyo|Atros bloqueyos}}',
-'blocklistline' => '$1, $2 ha bloqueyato a $3 ($4)',
'infiniteblock' => 'infinito',
'expiringblock' => 'circumduz o $1 a las $2',
'anononlyblock' => 'nomás anon.',
@@ -2273,7 +2290,7 @@ Ta más detalles, debaixo s'amuestro o rechistro de bloqueyos:",
Ta más detalles, debaixo s'amuestra o rechistro de supresions:",
'blocklogentry' => "S'ha bloqueyato a [[$1]] con una durada de $2 $3",
'reblock-logentry' => 'cambiato o bloqueyo de [[$1]] con circumducción o $3 a las $2',
-'blocklogtext' => "Isto ye un rechistro de bloqueyos y desbloqueyos d'usuarios. As adrezas bloqueyatas automaticament no amaneixen aquí. Mire-se a [[Special:IPBlockList|lista d'adrezas IP bloqueyatas]] ta veyer a lista actual de vedas y bloqueyos.",
+'blocklogtext' => "Isto ye un rechistro de bloqueyos y desbloqueyos d'usuarios. As adrezas bloqueyatas automaticament no amaneixen aquí. Mire-se a [[Special:BlockList|lista d'adrezas IP bloqueyatas]] ta veyer a lista actual de vedas y bloqueyos.",
'unblocklogentry' => 'ha desbloqueyato a "$1"',
'block-log-flags-anononly' => 'nomás os usuarios anonimos',
'block-log-flags-nocreate' => "s'ha desactivato a creyación de cuentas",
@@ -2287,8 +2304,7 @@ Ta más detalles, debaixo s'amuestra o rechistro de supresions:",
'ipb_expiry_temp' => "Os bloqueyos con nombre d'usuario amagato habría d'estar ta cutio.",
'ipb_hide_invalid' => "No s'ha puesto eliminar a cuenta; talment tiene masiadas edicions.",
'ipb_already_blocked' => '"$1" ya yera bloqueyato',
-'ipb-needreblock' => "== Ya ye bloqueyato ==
-$1 ya ye bloqueyato. Quiere cambiar as condicions d'o bloqueyo?",
+'ipb-needreblock' => "$1 ya ye bloqueyato. Quiere cambiar as condicions d'o bloqueyo?",
'ipb-otherblocks-header' => '{{PLURAL:$1|Atro bloqueyo|Atros bloqueyos}}',
'ipb_cant_unblock' => "'''Error''': no s'ha trobato o ID de bloqueyo $1. Talment sía ya desbloqueyato.",
'ipb_blocked_as_range' => "Error: L'adreza IP $1 no s'ha bloqueyato dreitament y por ixo no se puede desbloqueyar. Manimenos, ye bloqueyata por estar parte d'o rango $2, que sí puede desbloqueyar-se de conchunta.",
@@ -2323,6 +2339,7 @@ Alcuerde-se-ne d'[[Special:UnlockDB|destrancar a base de datos]] dimpués de rem
'unlockdbsuccesstext' => "S'ha destrancato a base de datos de {{SITENAME}}.",
'lockfilenotwritable' => "O rechistro de trancamientos d'a base de datos no tiene premiso d'escritura. Ta trancar u destrancar a base de datos, iste fichero ha de tener premisos d'escritura en o servidor web.",
'databasenotlocked' => 'A base de datos no ye trancata.',
+'lockedbyandtime' => '(por $1 o $2 a las $3)',
# Move page
'move-page' => 'Tresladar $1',
@@ -2430,7 +2447,7 @@ En iste zaguer caso tamién puede usar un vinclo, por eixemplo [[{{#Special:Expo
'allmessagesdefault' => 'texto por defecto',
'allmessagescurrent' => 'texto actual',
'allmessagestext' => "Ista ye una lista de totz os mensaches disponibles en o espacio de nombres MediaWiki.
-Vesite por favor [http://www.mediawiki.org/wiki/Localisation a pachina sobre localización de MediaWiki] y [http://translatewiki.net translatewiki.net] si deseya contrebuyir t'a localización cheneral de MediaWiki.",
+Vesite por favor [//www.mediawiki.org/wiki/Localisation a pachina sobre localización de MediaWiki] y [//translatewiki.net translatewiki.net] si deseya contrebuyir t'a localización cheneral de MediaWiki.",
'allmessagesnotsupportedDB' => 'Ista pachina no ye disponible porque wgUseDatabaseMessages ye desactivato.',
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtrar por estau de personalización:',
@@ -2568,9 +2585,7 @@ Puede veyer-ne, manimenos, o codigo fuent.',
'tooltip-summary' => 'Escribir un breu resumen',
# Metadata
-'nodublincore' => 'Metadatos Dublin Core RDF desactivatos en iste servidor.',
-'nocreativecommons' => 'Metadatos Creative Commons RDF desactivatos en iste servidor.',
-'notacceptable' => 'O servidor wiki no puede ufrir os datos en un formato que o suyo client (navegador) pueda leyer.',
+'notacceptable' => 'O servidor wiki no puede ufrir os datos en un formato que o suyo client (navegador) pueda leyer.',
# Attribution
'anonymous' => '{{PLURAL:$1|Usuario anónimo|Usuarios anónimos}} de {{SITENAME}}',
@@ -2593,12 +2608,8 @@ Puede veyer-ne, manimenos, o codigo fuent.',
'spam_blanking' => 'Todas as versions teneban vinclos ta $1, se deixa en blanco',
# Info page
-'infosubtitle' => "Información d'a pachina",
-'numedits' => "Numero d'edicions (articlo): $1",
-'numtalkedits' => "Numero d'edicions (pachina de descusión): $1",
-'numwatchers' => "Número d'usuario cosirando: $1",
-'numauthors' => "Numero d'autors (articlo): $1",
-'numtalkauthors' => "Numero d'autors (pachina de descusión): $1",
+'pageinfo-subjectpage' => 'Pachina',
+'pageinfo-talkpage' => 'Pachina de descusión',
# Skin names
'skinname-standard' => 'Clasica (Classic)',
@@ -2607,26 +2618,6 @@ Puede veyer-ne, manimenos, o codigo fuent.',
'skinname-myskin' => 'A mía aparenzia (MySkin)',
'skinname-simple' => 'Simpla (Simple)',
-# Math options
-'mw_math_png' => 'Producir siempre PNG',
-'mw_math_simple' => "HTML si ye muit simple, si no'n ye, PNG",
-'mw_math_html' => "HTML si ye posible, si no'n ye, PNG",
-'mw_math_source' => 'Deixar como TeX (ta navegadores en formato texto)',
-'mw_math_modern' => 'Recomendato ta navegadors modernos',
-'mw_math_mathml' => 'MathML si ye posible (esperimental)',
-
-# Math errors
-'math_failure' => 'Error en o codigo',
-'math_unknown_error' => 'error esconoxita',
-'math_unknown_function' => 'función esconoxita',
-'math_lexing_error' => 'error de lexico',
-'math_syntax_error' => 'error de sintaxi',
-'math_image_error' => 'A conversión enta PNG ha tenito errors;
-comprebe si latex, dvips, gs y convert son bien instalatos.',
-'math_bad_tmpdir' => "No s'ha puesto escribir u creyar o directorio temporal d'esprisions matematicas",
-'math_bad_output' => "No s'ha puesto escribir u creyar o directorio de salida d'esprisions matematicas",
-'math_notexvc' => "No s'ha trobato o fichero executable ''texvc''. Por favor, leiga <em>math/README</em> ta confegurar-lo correctament.",
-
# Patrolling
'markaspatrolleddiff' => 'Sinyalar como ya controlato',
'markaspatrolledtext' => 'Sinyalar iste articlo como controlato',
@@ -2672,7 +2663,6 @@ En executar-lo, podría meter en un contornillo a seguridat d'o suyo sistema.",
'file-nohires' => '<small>No bi ha garra versión con resolución más gran.</small>',
'svg-long-desc' => 'fichero SVG, nominalment $1 × $2 píxels, grandaria: $3',
'show-big-image' => 'Imachen en a maxima resolución',
-'show-big-image-thumb' => "<small>Grandaria d'ista anvista previa: $1 × $2 píxels</small>",
'file-info-gif-looped' => 'embuclau',
'file-info-gif-frames' => '$1 {{PLURAL:$1|imachen|imáchens}}',
'file-info-png-looped' => 'embuclau',
@@ -2701,14 +2691,21 @@ Nomás se consideran os elementos de lista (ringleras que escomienzan por *). O
'metadata-help' => 'Iste fichero contiene información adicional, probablement adhibida dende a camara dichital, o escáner u o programa emplegato ta creyar-lo u dichitalizar-lo. Si o fichero ha estato modificato dende o suyo estau orichinal, bells detalles podrían no refleixar de tot o fichero modificato.',
'metadata-expand' => 'Amostrar información detallata',
'metadata-collapse' => 'Amagar a información detallata',
-'metadata-fields' => "Os campos de metadatos EXIF que amaneixen en iste mensache s'amostrarán en a pachina de descripción d'a imachen, mesmo si a tabla ye plegata. Bi ha atros campos que remanirán amagatos por defecto.
+'metadata-fields' => "Els camps de metadades de la imatge llistats en aquest missatge s'inclouran en la pàgina de descripció de la imatge fins i tot quan la taula estigui plegada. La resta estaran ocults però es podran desplegar.
+Os campos de metadatos d'a imachen que amaneixen en iste mensache s'amostrarán en a pachina de descripción d'a imachen, mesmo si a tabla ye plegata. A resta de campos remanirán amagatos pero se podrán desplegar.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Amplaria',
@@ -2723,13 +2720,11 @@ Nomás se consideran os elementos de lista (ringleras que escomienzan por *). O
'exif-ycbcrpositioning' => 'Posición de Y y C',
'exif-xresolution' => 'Resolución horizontal',
'exif-yresolution' => 'Resolución vertical',
-'exif-resolutionunit' => "Unidatz d'as resolucions en X e Y",
'exif-stripoffsets' => "Localización d'os datos d'a imachen",
'exif-rowsperstrip' => 'Numero de ringleras por faixa',
'exif-stripbytecounts' => 'Bytes por faixa comprimita',
'exif-jpeginterchangeformat' => "Offset d'o JPEG SOI",
'exif-jpeginterchangeformatlength' => 'Bytes de datos JPEG',
-'exif-transferfunction' => 'Función de transferencia',
'exif-whitepoint' => "Coordinatas cromaticas d'o punto blanco",
'exif-primarychromaticities' => "Coordinatas cromaticas d'as colors primarias",
'exif-ycbcrcoefficients' => "Coeficients d'a matriz de transformación d'o espacio de colors",
@@ -2748,7 +2743,6 @@ Nomás se consideran os elementos de lista (ringleras que escomienzan por *). O
'exif-compressedbitsperpixel' => "Modo de compresión d'a imachen",
'exif-pixelydimension' => "Amplaria conforme d'a imachen",
'exif-pixelxdimension' => "Altaria conforme d'a imachen",
-'exif-makernote' => "Notas d'o fabriquero",
'exif-usercomment' => "Comentarios de l'usuario",
'exif-relatedsoundfile' => "Fichero d'audio relacionato",
'exif-datetimeoriginal' => "Calendata y hora de cheneración d'os datos",
@@ -2762,7 +2756,6 @@ Nomás se consideran os elementos de lista (ringleras que escomienzan por *). O
'exif-exposureprogram' => "Programa d'exposición",
'exif-spectralsensitivity' => 'Sensibilidat espectral',
'exif-isospeedratings' => 'Sensibilidat ISO',
-'exif-oecf' => 'Factor de conversión optoelectronica',
'exif-shutterspeedvalue' => "Velocidat de l'obturador",
'exif-aperturevalue' => 'Obredura',
'exif-brightnessvalue' => 'Brilor',
@@ -2775,7 +2768,6 @@ Nomás se consideran os elementos de lista (ringleras que escomienzan por *). O
'exif-focallength' => "Longaria d'o lente focal",
'exif-subjectarea' => "Aria d'o sucheto",
'exif-flashenergy' => "Enerchía d'o flash",
-'exif-spatialfrequencyresponse' => 'Respuesta en freqüencia espacial',
'exif-focalplanexresolution' => 'Resolución en o plano focal X',
'exif-focalplaneyresolution' => 'Resolución en o plano focal Y',
'exif-focalplaneresolutionunit' => "Unidatz d'a resolución en o plano focal",
@@ -2784,7 +2776,6 @@ Nomás se consideran os elementos de lista (ringleras que escomienzan por *). O
'exif-sensingmethod' => 'Metodo de sensache',
'exif-filesource' => "Fuent d'o fichero",
'exif-scenetype' => "Mena d'escena",
-'exif-cfapattern' => 'Patrón CFA',
'exif-customrendered' => "Procesau d'imachen presonalizato",
'exif-exposuremode' => "Modo d'exposición",
'exif-whitebalance' => 'Balance de blancos',
@@ -2829,6 +2820,7 @@ Nomás se consideran os elementos de lista (ringleras que escomienzan por *). O
'exif-gpsareainformation' => "Nombre d'aria GPS",
'exif-gpsdatestamp' => 'Calendata GPS',
'exif-gpsdifferential' => 'Corrección diferencial de GPS',
+'exif-urgency' => 'Urchencia',
# EXIF attributes
'exif-compression-1' => 'Sin de compresión',
@@ -2975,15 +2967,13 @@ Nomás se consideran os elementos de lista (ringleras que escomienzan por *). O
# External editor support
'edit-externally' => 'Editar iste fichero fendo servir una aplicación externa',
-'edit-externally-help' => '(Ta más información, leiga as [http://www.mediawiki.org/wiki/Manual:External_editors instruccions de configuración])',
+'edit-externally-help' => '(Ta más información, leiga as [//www.mediawiki.org/wiki/Manual:External_editors instruccions de configuración])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'totz',
-'imagelistall' => 'todas',
-'watchlistall2' => 'totz',
-'namespacesall' => 'totz',
-'monthsall' => 'totz',
-'limitall' => 'Totz',
+'watchlistall2' => 'totz',
+'namespacesall' => 'totz',
+'monthsall' => 'totz',
+'limitall' => 'Totz',
# E-mail address confirmation
'confirmemail' => 'Confirmar adreza de correu-e',
@@ -3094,14 +3084,14 @@ Prebe con a previsualización normal.",
'watchlistedit-normal-legend' => "Borrar títols d'a lista de seguimiento",
'watchlistedit-normal-explain' => "Contino s'amuestran os títols de pachinas d'a suya lista de seguimiento.
Ta sacar-ne una pachina, marque o quatrón que ye a o canto d'o suyo títol, y punche con o ratet en \"{{int:Watchlistedit-normal-submit}}\".
-Tamién puede [[Special:Watchlist/raw|editar dreitament a lista]].",
+Tamién puede [[Special:EditWatchlist/raw|editar dreitament a lista]].",
'watchlistedit-normal-submit' => 'Borrar pachinas',
'watchlistedit-normal-done' => "{{PLURAL:$1|S'ha borrato 1 pachina|s'han borrato $1 pachinas}} d'a suya lista de seguimiento:",
'watchlistedit-raw-title' => 'Editar a lista de seguimiento en formato texto',
'watchlistedit-raw-legend' => 'Editar a lista de seguimiento en formato texto',
'watchlistedit-raw-explain' => "Contino s'amuestran os títols d'as pachinas d'a suya lista de seguimiento. Puede editar ista lista adhibiendo u borrando líneas d'a lista; una pachina por linia.
Quan remate, punche \"{{int:Watchlistedit-raw-submit}}\".
-Tamién puede fer servir o [[Special:Watchlist/edit|editor estándar]].",
+Tamién puede fer servir o [[Special:EditWatchlist|editor estándar]].",
'watchlistedit-raw-titles' => 'Pachinas:',
'watchlistedit-raw-submit' => 'Esviellar lista de seguimiento',
'watchlistedit-raw-done' => "S'ha esviellato a suya lista de seguimiento.",
@@ -3118,32 +3108,31 @@ Tamién puede fer servir o [[Special:Watchlist/edit|editor estándar]].",
'duplicate-defaultsort' => "Pare cuenta: A clau d'ordenación por defecto «$2» anula l'anterior clau d'ordenación por defecto «$1».",
# Special:Version
-'version' => 'Versión',
-'version-extensions' => 'Estensions instalatas',
-'version-specialpages' => 'Pachinas especials',
-'version-parserhooks' => "Grifios d'o parser (parser hooks)",
-'version-variables' => 'Variables',
-'version-other' => 'Atros',
-'version-mediahandlers' => 'Maneyador de fichers multimedia',
-'version-hooks' => 'Grifios (Hooks)',
-'version-extension-functions' => "Funcions d'a estensión",
-'version-parser-extensiontags' => "Etiquetas d'estensión d'o parseyador",
-'version-parser-function-hooks' => "Grifios d'as funcions d'o parseyador",
-'version-skin-extension-functions' => "Funcions d'estensión de l'aparencia (Skin)",
-'version-hook-name' => "Nombre d'o grifio",
-'version-hook-subscribedby' => 'Suscrito por',
-'version-version' => '(Versión $1)',
-'version-license' => 'Licencia',
-'version-poweredby-credits' => "Iste wiki funciona gracias a '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'atros',
-'version-license-info' => "MediaWiki ye software libre, puet redistribuyir-lo y/u modificar-lo baixo os terminos d'a Licencia Publica Cheneral GNU publicada por a Free Software Foundation, ya siga d'a suya versión 2 u (a la suya esleción) qualsiquier versión posterior.
+'version' => 'Versión',
+'version-extensions' => 'Estensions instalatas',
+'version-specialpages' => 'Pachinas especials',
+'version-parserhooks' => "Grifios d'o parser (parser hooks)",
+'version-variables' => 'Variables',
+'version-other' => 'Atros',
+'version-mediahandlers' => 'Maneyador de fichers multimedia',
+'version-hooks' => 'Grifios (Hooks)',
+'version-extension-functions' => "Funcions d'a estensión",
+'version-parser-extensiontags' => "Etiquetas d'estensión d'o parseyador",
+'version-parser-function-hooks' => "Grifios d'as funcions d'o parseyador",
+'version-hook-name' => "Nombre d'o grifio",
+'version-hook-subscribedby' => 'Suscrito por',
+'version-version' => '(Versión $1)',
+'version-license' => 'Licencia',
+'version-poweredby-credits' => "Iste wiki funciona gracias a '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'atros',
+'version-license-info' => "MediaWiki ye software libre, puet redistribuyir-lo y/u modificar-lo baixo os terminos d'a Licencia Publica Cheneral GNU publicada por a Free Software Foundation, ya siga d'a suya versión 2 u (a la suya esleción) qualsiquier versión posterior.
MediaWiki se distribuye con l'asperanza d'estar d'utilidat, pero SIN GARRA GUARANCIA; nian a guarancia implicita de COMERCIALIZACIÓN u ADEQUACIÓN TA UNA FINALIDAT DETERMINADA. En trobará más detalles en a Licencia Publica General GNU.
-Con iste programa ha d'haber recibiu [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia d'a Licencia Publica Cheneral GNU]; si no ye asinas, endrece-se a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA u bien [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html la leiga en linia].",
-'version-software' => 'Software instalato',
-'version-software-product' => 'Producto',
-'version-software-version' => 'Versión',
+Con iste programa ha d'haber recibiu [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia d'a Licencia Publica Cheneral GNU]; si no ye asinas, endrece-se a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA u bien [//www.gnu.org/licenses/old-licenses/gpl-2.0.html la leiga en linia].",
+'version-software' => 'Software instalato',
+'version-software-product' => 'Producto',
+'version-software-version' => 'Versión',
# Special:FilePath
'filepath' => "Camín d'o fichero",
@@ -3154,9 +3143,7 @@ As imachens s'amuestran en resolución completa, a resta de fichers fan encetar
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Mirar fichers duplicatos',
-'fileduplicatesearch-summary' => 'Mirar archivos duplicatos basatos en a suya valura hash.
-
-Escriba o nombre d\'o fichero sin o prefixo "{{ns:file}}:".',
+'fileduplicatesearch-summary' => 'Mirar archivos duplicatos basatos en a suya valura hash.',
'fileduplicatesearch-legend' => 'Mirar duplicatos',
'fileduplicatesearch-filename' => "Nombre d'o fichero:",
'fileduplicatesearch-submit' => 'Mirar',
diff --git a/languages/messages/MessagesAng.php b/languages/messages/MessagesAng.php
index 2e7331ec..e73777b4 100644
--- a/languages/messages/MessagesAng.php
+++ b/languages/messages/MessagesAng.php
@@ -159,14 +159,6 @@ $messages = array(
'index-category' => 'Ȝebēacniende trametas',
'noindex-category' => 'UnÈebÄ“acniende trametas',
-'mainpagetext' => "'''MediaÇ·iki hafaþ ÈeÆ¿orden spÄ“diÈe inseted.'''",
-'mainpagedocfooter' => 'Þeahta þone [http://meta.wikimedia.org/wiki/Help:Contents BrÅ«cenda LÇ£dend] on helpe mid þǣre nytte of Æ¿ikisÅftÆ¿are.
-
-== BeÈinnunÈ ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings OnfæstnunÈa Èesetednessa Èetæl]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Èœetæl oft ascodra ascunÈa ymb MediaÇ·iki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Ç¢rendunÈÈetæl nÄ«Æ¿ra MediaÇ·iki forþsendnessa]',
-
'about' => 'Ymbe',
'article' => 'InnunÈsÄ«de',
'newwindow' => '(openaþ in nÄ«Æ¿um Ä“aÈþyrelum)',
@@ -217,7 +209,6 @@ $messages = array(
'history' => 'Sīdan stǣr',
'history_short' => 'Stǣr',
'updatedmarker' => 'nÄ«Æ¿od æfter ic cÅm hider Ç£ror',
-'info_short' => 'Cȳþþu',
'printableversion' => 'ŪtmÇ£lendlicu fadunÈ',
'permalink' => 'Fæst hlenċe',
'print' => 'Ūtmǣl',
@@ -406,14 +397,14 @@ Bidde þē, lǣt hīe tŠtwyrcenne, and þǣræfter inmelda þurh þīnne nīwa
'nosuchuser' => 'Þǣr nis nÄn brÅ«cere þe hæfþ þone naman "$1".
Stafena micelnesse sind hefige and Änlica on brÅ«cendnamum.
ScÄ“awa þīne wrÄ«tunge eft, oþþe brÅ«c Ã¾Ä cartan þe is hÄ“runder tÅ [[Special:UserLogin/signup|settene nÄ«wne brÅ«cendreccend]].',
-'nosuchusershort' => 'Þǣr is nÄn brÅ«cend mid þǣm naman "<nowiki>$1</nowiki>". EdscÄ“awa on þīne wrÄ«tunge.',
+'nosuchusershort' => 'Þǣr is nÄn brÅ«cend mid þǣm naman "$1". EdscÄ“awa on þīne wrÄ«tunge.',
'passwordtooshort' => 'Gelēafword sculon habban læst {{PLURAL:$1|1 stafan|$1 stafan}}.',
'mailmypassword' => 'Nīƿe þafungƿord bȳ e-mail sendan',
'acct_creation_throttle_hit' => 'Hwæt, þu hæfst gÄ“o geseted {{PLURAL:$1|1 hordcleofan|$1 -}}. Þu ne canst settan Ç£nige mÄran.',
'accountcreated' => 'Hordcleofan Èescapen',
'loginlanguagelabel' => 'Sprǣċ: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Þafungƿord hƿeorfan',
'oldpassword' => 'Eald þafungƿord:',
'newpassword' => 'Nīƿu þafungƿord:',
@@ -432,8 +423,6 @@ ScÄ“awa þīne wrÄ«tunge eft, oþþe brÅ«c Ã¾Ä cartan þe is hÄ“runder tÅ [[Sp
'extlink_tip' => 'ŪtanÆ¿eard hlenÄ‹e (Èemune http:// foredÇ£l)',
'headline_sample' => 'Hēafodlīnan traht',
'headline_tip' => 'Emnet 2 hēafodlīn',
-'math_sample' => 'Ƿiċunge hēr ēacian',
-'math_tip' => 'Rīmcræftisc ƿiċung (LaTeX)',
'nowiki_sample' => 'UnÈeÆ¿orhtne traht hÄ“r stellan',
'nowiki_tip' => 'Ç·iki ÈeÆ¿eorc forÈietan',
'image_sample' => 'Bisen.jpg',
@@ -608,7 +597,6 @@ folcliÄ‹um Ägnunge oþþe ÈelÄ«Ä‹um frÄ“om horde (sÄ“o $1 for Äscungum).
'prefsnologin' => 'Ne inÈemelded',
'prefs-skin' => 'Scynn',
'skin-preview' => 'Forescēaƿian',
-'prefs-math' => 'Rīmcræft',
'prefs-datetime' => 'Tælmearc and tīd',
'prefs-rc' => 'Nīƿe hƿearfas',
'prefs-watchlist' => 'ǷæccÈetalu',
@@ -617,7 +605,6 @@ folcliÄ‹um Ägnunge oþþe ÈelÄ«Ä‹um frÄ“om horde (sÄ“o $1 for Äscungum).
'columns' => 'Sȳla:',
'searchresultshead' => 'SÅcnfintan',
'resultsperpage' => 'TÅhÄ«gunga tÅ Ä«ewenne for tramete',
-'contextlines' => 'LÄ«nan tÅ Ä«ewenne in tÅhÄ«gunge',
'recentchangescount' => 'HÅ« mæniÈ Ädihtas to scÄ“aÆ¿enne ÈeþēaÆ¿e:',
'savedprefs' => 'Þīna foreberunga Æ¿urdon Èespared.',
'timezonelegend' => 'TÄ«dstell',
@@ -757,7 +744,6 @@ Cnæpp on sÆ¿eorhÄ“afde hÆ¿eorfþ Ã¾Ä endebyrdnessa.',
'linkstoimage' => 'ÃžÄ folgendan {{PLURAL:$1|sÄ«de hæfþ hlenÄ‹e|sÄ«dan habbaþ hlenÄ‹an}} for þissum fÄ«le:',
'nolinkstoimage' => 'Þǣr sind nÄne trametas þe bindaþ tŠþissum biliðe.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|MÄ hlenÄ‹an]] sÄ“on tŠþissum fÄ«le.',
-'redirectstofile' => '{{PLURAL:$1|Þēos fÄ«l edlÇ£deþ|$1 ÞÄs fÄ«lan hÄ“r edlÇ£daþ}} tŠþissum fÄ«le:',
'duplicatesoffile' => '{{PLURAL:$1|SÄ“o folgende fÄ«l is ÈelÄ«Ä‹nes|ÃžÄ folgende fÄ«lan sind ÈelÄ«Ä‹nessa}} þisses fÄ«les (sÄ“o [[Special:FileDuplicateSearch/$2|mÄ ÈeÆ¿itnesse hÄ“rymb]]):',
'sharedupload' => 'Þēos fÄ«l is fram $1 and man mÃ¦È hÄ«e brÅ«can on Åðrum Æ¿eorcum.',
'uploadnewversion-linktext' => 'Nīƿe fadunge þisse fīlan forþsendan',
@@ -887,8 +873,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
# Watchlist
'watchlist' => 'MÄ«nu ƿæcceÈetalu',
'mywatchlist' => 'MÄ«nu ƿæcceÈetalu',
-'addedwatch' => 'To ƿæcceÈetale Ä“acod',
-'removedwatch' => 'FornÅm fram ƿæccÈetale',
'removedwatchtext' => 'SÄ“o sÄ«de "[[:$1]]" ƿæs fram [[Special:Watchlist|þīnre ƿæccÈetale]] fornÅm.',
'watch' => 'Ƿæccan',
'watchthispage' => 'ÞÄs sÄ«dan ƿæccan',
@@ -943,7 +927,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'protectexpiry' => 'Endaþ:',
'protect_expiry_invalid' => 'Endende tīde is unriht.',
'protect_expiry_old' => 'Endende tÄ«de is in ÈÄ“ara dagum.',
-'protect-text' => "Þū meaht þæt beorges emnet sēon and hƿeorfan hēr for þǣre sīdan '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Þū meaht þæt beorges emnet sēon and hƿeorfan hēr for þǣre sīdan '''$1'''.",
'protect-default' => 'Eall brūcendas þafian',
'protect-fallback' => '"$1" þafunge Äbiddan',
'protect-level-autoconfirmed' => 'NÄ«Æ¿e and unbÅcen brÅ«cendas fortȳnan',
@@ -1143,14 +1127,6 @@ Bidde cÄ“os Åðerne naman.',
'others' => 'Åðru',
'anonusers' => '{{SITENAME}} {{PLURAL:$2|uncūþ brūcend|uncūðe brūcendas}} $1',
-# Info page
-'numedits' => 'HÅ« mæniÈ Ädihtas (sÄ«de): $1',
-'numtalkedits' => 'HÅ« mæniÈ Ädihtas (ÈespreÄ‹sÄ«de): $1',
-'numwatchers' => 'HÅ« mæniÈ Æ¿Ã¦cceras: $1',
-
-# Math errors
-'math_unknown_error' => 'uncūþ Æ¿Åh',
-
# Patrol log
'patrol-log-auto' => '(selffremmende)',
'patrol-log-diff' => 'nīƿung $1',
@@ -1160,13 +1136,12 @@ Bidde cÄ“os Åðerne naman.',
'nextdiff' => 'NÄ«Æ¿ra Ädiht',
# Media information
-'imagemaxsize' => 'Settan biliðu on biliþgemearcungtrametum tÅ:',
-'thumbsize' => 'Þumannæglmicelnes:',
-'file-info-size' => '$1 × $2 pixels, fīlmiċelu: $3, MIMEcynn: $4',
-'file-nohires' => '<small>Þǣr nis nÇ£niÈ mÄ miÄ‹elu.</small>',
-'svg-long-desc' => 'SVG fīl, rihte $1 × $2 pixels, fīlmiċelu: $3',
-'show-big-image' => 'Fulmiċelu',
-'show-big-image-thumb' => '<small>Þēos forescēaƿe miċelu: $1 × $2 pixels</small>',
+'imagemaxsize' => 'Settan biliðu on biliþgemearcungtrametum tÅ:',
+'thumbsize' => 'Þumannæglmicelnes:',
+'file-info-size' => '$1 × $2 pixels, fīlmiċelu: $3, MIMEcynn: $4',
+'file-nohires' => '<small>Þǣr nis nÇ£niÈ mÄ miÄ‹elu.</small>',
+'svg-long-desc' => 'SVG fīl, rihte $1 × $2 pixels, fīlmiċelu: $3',
+'show-big-image' => 'Fulmiċelu',
# Special:NewFiles
'imagelisttext' => 'Under is getalu $1 biliða gedæfted $2.',
@@ -1244,15 +1219,13 @@ Bidde cÄ“os Åðerne naman.',
'exif-gpsdirection-t' => 'SÅþ rihtung',
# External editor support
-'edit-externally-help' => '(ÃžÄ [http://www.mediawiki.org/wiki/Manual:External_editors ÈearÆ¿unga tyhtas] sÄ“on for mÄ cȳþþe)',
+'edit-externally-help' => '(ÃžÄ [//www.mediawiki.org/wiki/Manual:External_editors ÈearÆ¿unga tyhtas] sÄ“on for mÄ cȳþþe)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'eall',
-'imagelistall' => 'eall',
-'watchlistall2' => 'eall',
-'namespacesall' => 'eall',
-'monthsall' => 'eall',
-'limitall' => 'eall',
+'watchlistall2' => 'eall',
+'namespacesall' => 'eall',
+'monthsall' => 'eall',
+'limitall' => 'eall',
# E-mail address confirmation
'confirmemail_body' => 'Hwilchwega, gewÄ“ne þu of IP stÅwe $1, hæfþ in namanbÄ“c gestt Ç£nne hordcleofan
diff --git a/languages/messages/MessagesAnp.php b/languages/messages/MessagesAnp.php
new file mode 100644
index 00000000..11a4dbb4
--- /dev/null
+++ b/languages/messages/MessagesAnp.php
@@ -0,0 +1,743 @@
+<?php
+/** Angika (अङà¥à¤—िका)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Angpradesh
+ * @author Vinitutpal
+ */
+
+$fallback = 'hi';
+
+$messages = array(
+# User preference toggles
+'tog-underline' => ' कड़ी अधोरेखित करना:',
+'tog-highlightbroken' => 'टूटलॊ कड़ी सीनी <a href="" class="new">इ तरह दरà¥à¤¶à¤¾à¤¬à¥Š</a> (या फिर: इ तरह दरà¥à¤¶à¤¾à¤¬à¥Š<a href="" class="internal">?</a>).',
+'tog-justify' => 'परिचà¥à¤›à¥‡à¤¦ समान करॊ',
+'tog-hideminor' => 'हाल के बदलाव सॆं छोटॊ बदलाव छà¥à¤ªà¤¾à¤¬à¥Š',
+'tog-hidepatrolled' => 'निगरानी मॆं करलॊ गेलॊ संपादनॊ कॆ हाल के बदलावॊ मॆं नै देखाबॊ',
+'tog-newpageshidepatrolled' => 'निगरानी वाला पनà¥à¤¨à¤¾ कॆ नया पनà¥à¤¨à¥‡ वाला सूची मॆं नै देखाबॊ',
+'tog-extendwatchlist' => 'धà¥à¤¯à¤¾à¤¨ सूची मॆं सबà¥à¤­à¥‡ बदलाव दरà¥à¤¶à¤¾à¤¬à¥Š, सिरà¥à¤« हाले के नै',
+'tog-usenewrc' => 'हाल मॆं होलॊ वरà¥à¤§à¤¿à¤¤ बदलाव (जावासà¥à¤•à¥à¤°à¥€à¤ªà¥à¤Ÿ के जरूरत छै)',
+'tog-numberheadings' => 'शीरà¥à¤·à¤• सà¥à¤µà¤¯à¤‚-कà¥à¤°à¤®à¤¾à¤‚कित करॊ',
+'tog-showtoolbar' => 'à¤à¤¡à¤¿à¤Ÿ टूलबार दरà¥à¤¶à¤¾à¤¬à¥Š (जावासà¥à¤•à¥à¤°à¥€à¤ªà¥à¤Ÿ)',
+'tog-editondblclick' => 'दू-बार कà¥à¤²à¥€à¤• करी कॆ पनà¥à¤¨à¤¾ संपादित करॊ (जावासà¥à¤•à¥à¤°à¥€à¤ªà¥à¤Ÿ)',
+'tog-editsection' => '[संपादित करॊ] कड़ी दà¥à¤µà¤¾à¤°à¤¾ विभाग संपादन करै के अनà¥à¤®à¤¤à¥€ दहॊ',
+'tog-editsectiononrightclick' => 'विभाग शीरà¥à¤·à¤• पर दायाठकà¥à¤²à¥€à¤• करीकॆ संपादन करै के अनà¥à¤®à¤¤à¥€ दॆ (जावासà¥à¤•à¥à¤°à¥€à¤ªà¥à¤Ÿ)',
+'tog-showtoc' => 'अनà¥à¤•à¥à¤°à¤® दरà¥à¤¶à¤¾à¤¬à¥Š (जोन पनà¥à¤¨à¤¾ पर तीन सॆं जà¥à¤¯à¤¾à¤¦à¤¾ विभाग छै)',
+'tog-rememberpassword' => 'इ कंपà¥à¤¯à¥‚टर पर हमरॊ लॉग-इन सूचना याद रखॊ (अधिकतम $1 {{PLURAL:$1|दिन|दिन}} लेली)',
+'tog-watchcreations' => 'हमरॊ तैयार करलॊ पनà¥à¤¨à¤¾ हमरॊ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚चीमॆं रखियै',
+'tog-watchdefault' => 'हमरॊ संपादित करलॊ पनà¥à¤¨à¤¾ हमरॊ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚चीमॆं रखियै',
+'tog-watchmoves' => 'हमरॊ हटैलॊ पनà¥à¤¨à¤¾ हमरॊ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚चीमॆं रखियै',
+'tog-watchdeletion' => 'हमरॊ हटैलॊ पनà¥à¤¨à¤¾ हमरॊ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚चीमॆं रखियै',
+'tog-previewontop' => 'à¤à¤¡à¤¿à¤Ÿ बॉकà¥à¤¸ के उपर à¤à¤²à¤• दिखाबॊ',
+'tog-previewonfirst' => 'पहलॊ समà¥à¤ªà¤¾à¤¦à¤¨ पर पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨ देखॊ',
+'tog-nocache' => 'बà¥à¤°à¤¾à¤‰à¤œà¤° पनà¥à¤¨à¤¾ केचिंग अकà¥à¤·à¤® करॊ',
+'tog-enotifwatchlistpages' => 'हमरॊ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची मॆं दरà¥à¤œà¤¼ पनà¥à¤¨à¤¾ बदलला के बाद हमरा इ-मेल करॊ',
+'tog-enotifusertalkpages' => 'हमरॊ सदसà¥à¤¯ वारà¥à¤¤à¤¾ पृषà¥à¤  पर बदलाव होला सॆं हमरा इ-मेल करॊ',
+'tog-enotifminoredits' => 'तनी-मनी बदलावॊ लेली भी हमरा इ-मेल भेजॊ',
+
+'underline-never' => 'कहियो नै',
+
+# Dates
+'sunday' => 'रविवार',
+'monday' => 'सोमवार',
+'tuesday' => 'मंगलवार',
+'wednesday' => 'बà¥à¤§à¤µà¤¾à¤°',
+'thursday' => 'गà¥à¤°à¥à¤µà¤¾à¤°',
+'friday' => 'शà¥à¤•à¥à¤°à¤µà¤¾à¤°',
+'saturday' => 'शनिचर',
+'january' => 'जनवरी',
+'february' => 'फ़रवरी',
+'march' => 'मारà¥à¤š',
+'april' => 'अपà¥à¤°à¥ˆà¤²',
+'may_long' => 'मई',
+'june' => 'जून',
+'july' => 'जà¥à¤²à¤¾à¤ˆ',
+'august' => 'अगसà¥à¤¤',
+'september' => 'सितंबर',
+'october' => 'अकà¥à¤¤à¥‚बर',
+'november' => 'नवंबर',
+'december' => 'दिसंबर',
+'january-gen' => 'जनवरी',
+'february-gen' => 'फरवरी',
+'march-gen' => 'मारà¥à¤š',
+'april-gen' => 'अपà¥à¤°à¥ˆà¤²',
+'may-gen' => 'मई',
+'june-gen' => 'जून',
+'july-gen' => 'जà¥à¤²à¤¾à¤ˆ',
+'august-gen' => 'अगसà¥à¤¤',
+'september-gen' => 'सितंबर',
+'october-gen' => 'अकà¥à¤Ÿà¥‚बर',
+'november-gen' => 'नवà¥à¤¹à¤‚बर',
+'december-gen' => 'दिसंबर',
+'jan' => 'जन.',
+'feb' => 'फर.',
+'mar' => 'मारà¥à¤š',
+'apr' => 'अपà¥à¤°à¥ˆ.',
+'may' => 'मई',
+'jun' => 'जून',
+'jul' => 'जà¥à¤²à¤¾.',
+'aug' => 'अग.',
+'sep' => 'सितं.',
+'oct' => 'अकà¥à¤¤à¥‚.',
+'nov' => 'नवं.',
+'dec' => 'दिसं.',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|शà¥à¤°à¥‡à¤£à¥€|शà¥à¤°à¥‡à¤£à¥€}}',
+'category_header' => '"$1" शà¥à¤°à¥‡à¤£à¥€ में लेख',
+'subcategories' => 'उपविभाग',
+'hidden-categories' => '{{PLURAL:$1|छà¥à¤ªà¥ˆà¤²à¥Š शà¥à¤°à¥‡à¤£à¥€|छà¥à¤ªà¥ˆà¤²à¥Š शà¥à¤°à¥‡à¤£à¥€ सीनी}}',
+'category-subcat-count' => '{{PLURAL:$2|इ शà¥à¤°à¥‡à¤£à¥€ मॆं सिरà¥à¤« निमà¥à¤¨à¤²à¤¿à¤–ित उपशà¥à¤°à¥‡à¤£à¥€ छै|इ शà¥à¤°à¥‡à¤£à¥€ मॆं निमà¥à¤¨à¤²à¤¿à¤–ित {{PLURAL:$1|उपशà¥à¤°à¥‡à¤£à¥€|$1 उपशà¥à¤°à¥‡à¤£à¥€ सीनी}} छै, कà¥à¤² उपशà¥à¤°à¥‡à¤£à¥€ सीनी $2}}',
+'category-article-count' => '{{PLURAL:$2|इ शà¥à¤°à¥‡à¤£à¥€ मॆं सिरà¥à¤« निमà¥à¤¨à¤²à¤¿à¤–ित लेख छै.|इ शà¥à¤°à¥‡à¤£à¥€ मॆं निमà¥à¤¨à¤²à¤¿à¤–ित {{PLURAL:$1|लेख छै |$1 लेख सीनी छै.}}, कà¥à¤² लेख $2 }}',
+'listingcontinuesabbrev' => 'आगे.',
+
+'newwindow' => '(नया विंडो मॆं खà¥à¤²à¥ˆ छै)',
+'cancel' => 'निरसà¥à¤¤',
+'mytalk' => 'हमरॊ बात',
+'navigation' => 'भà¥à¤°à¤®à¤£',
+
+# Cologne Blue skin
+'qbfind' => 'खोजॊ',
+
+'errorpagetitle' => 'तà¥à¤°à¥à¤Ÿà¤¿',
+'returnto' => 'लौटॊ $1.',
+'tagline' => '{{SITENAME}} केरॊ बारे मॆं',
+'help' => 'सहायता',
+'search' => 'खोजॊ',
+'searchbutton' => 'खोज',
+'searcharticle' => 'जा',
+'history' => 'पनà¥à¤¨à¤¾ के इतिहास',
+'history_short' => 'इतिहास',
+'printableversion' => 'छापै योगà¥à¤¯ उदà¥à¤§à¤°à¤£',
+'permalink' => 'सà¥à¤¥à¤¾à¤¯à¥€ कड़ी',
+'edit' => 'संपादन',
+'create' => 'सृजन करॊ',
+'editthispage' => 'ई पनà¥à¤¨à¤¾ के समà¥à¤ªà¤¾à¤¦à¤¨ करॊ',
+'delete' => 'हटाबॊ',
+'protect' => 'सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करॊ',
+'protect_change' => 'बदलॊ',
+'newpage' => 'नया पनà¥à¤¨à¤¾',
+'talkpage' => 'इ पनà¥à¤¨à¤¾ पर चरà¥à¤šà¤¾ करॊ',
+'talkpagelinktext' => 'वारà¥à¤¤à¤¾',
+'personaltools' => 'वैयकà¥à¤¤à¤¿à¤• औज़ार',
+'talk' => 'चरà¥à¤šà¤¾',
+'views' => 'दरà¥à¤¶à¤¾à¤µ',
+'toolbox' => 'साधनपेटी',
+'otherlanguages' => 'इतर भाषा',
+'redirectedfrom' => '($1 सॆं भेजनॊ गेलॊ)',
+'redirectpagesub' => 'पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤ पनà¥à¤¨à¤¾',
+'lastmodifiedat' => '$1 के $2 पर इ पनà¥à¤¨à¤¾ पर अनà¥à¤¤à¤¿à¤® बार परिवरà¥à¤¤à¤¨ भेलै.',
+'jumpto' => 'हिनà¥à¤¨à¥† जा:',
+'jumptonavigation' => 'भà¥à¤°à¤®à¤£ करॊ',
+'jumptosearch' => 'खोजै लॆ चलॊ',
+
+# 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:परिचय',
+'copyright' => 'सामगà¥à¤°à¥€ $1 के तहत उपलबà¥à¤§ छै.',
+'copyrightpage' => '{{ns:project}}:सरà¥à¤µà¤¾à¤§à¤¿à¤•à¤¾à¤°',
+'disclaimers' => 'असà¥à¤µà¥€à¤•à¤°à¤£',
+'disclaimerpage' => 'Project:साधारण असà¥à¤µà¥€à¤•à¤°à¤£',
+'edithelp' => 'संपादन मॆं सहायता',
+'edithelppage' => 'Help:संपादन',
+'helppage' => 'Help:सहायता',
+'mainpage' => 'मà¥à¤–à¥à¤¯ पृषà¥à¤ ',
+'privacy' => 'गोपनीयता नीति',
+'privacypage' => 'Project:गोपनीयता नीति',
+
+'badaccess' => 'अनà¥à¤®à¤¤à¤¿ तà¥à¤°à¥à¤Ÿà¤¿',
+
+'retrievedfrom' => '"$1" सॆं लेलॊ गेलॊ',
+'youhavenewmessages' => 'तोरा लेली छै $1 ($2)',
+'newmessageslink' => 'नया संदेश',
+'newmessagesdifflink' => 'पिछला बदलाव',
+'editsection' => 'संपादन',
+'editold' => 'संपादन',
+'editlink' => 'संपादन',
+'viewsourcelink' => 'सà¥à¤°à¥‹à¤¤ देखॊ.',
+'editsectionhint' => 'विभाग संपादन: $1',
+'toc' => 'विषय सूची',
+'showtoc' => 'देखाबॊ',
+'hidetoc' => 'छà¥à¤ªà¤¾à¤¬à¥Š',
+'site-rss-feed' => '$1 केरॊ आरà¤à¤¸à¤à¤¸ फ़ीड',
+'site-atom-feed' => '$1 केरॊ अणॠफ़ीड',
+'page-rss-feed' => '$1 केरॊ आरà¤à¤¸à¤à¤¸ फ़ीड',
+'page-atom-feed' => '"$1" अणॠफ़ीड',
+'red-link-title' => '$1 (पृषà¥à¤  मौजूद नै छै)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'पनà¥à¤¨à¤¾',
+'nstab-user' => 'सदसà¥à¤¯ पनà¥à¤¨à¤¾',
+'nstab-special' => 'खास पनà¥à¤¨à¤¾',
+'nstab-project' => 'परियोजना पृषà¥à¤ ',
+'nstab-image' => 'फाईल',
+'nstab-template' => 'टेमà¥à¤ªà¥à¤²à¥‡à¤Ÿ',
+'nstab-category' => 'शà¥à¤°à¥‡à¤£à¥€',
+
+# General errors
+'missing-article' => 'आà¤à¤•à¤¡à¤¼à¤¾à¤•à¥‹à¤· मॆं $2 के अंदर कहीं भी "$1" नै मिललै.
+
+आमतौर पर मिटैलॊ जाय चà¥à¤•à¤²à¥Š पनà¥à¤¨à¤¾ के इतिहास कड़ी के इसà¥à¤¤à¥‡à¤®à¤¾à¤² करला पर à¤à¤¸à¤¨à¥Š होय छै.
+
+अगर à¤à¤¸à¤¨à¥Š नै छै, तॆ शायद आपनॆ तंतà¥à¤°à¤¾à¤‚श केरॊ तà¥à¤°à¥à¤Ÿà¤¿ खोजी लेनॆ छियॊ.
+कृपया पता समेत [[Special:ListUsers/sysop|administrator]] कॆ à¤à¤•à¤°à¥Š बà¥à¤¯à¥Œà¤°à¤¾ दहॊ.',
+'missingarticle-rev' => '(आवृतà¥à¤¤à¥€#: $1)',
+'badtitletext' => 'आपनॆ दà¥à¤µà¤¾à¤°à¤¾ आगà¥à¤°à¤¹à¤¤ लेख केरॊ शीरà¥à¤·à¤• अयोगà¥à¤¯, ख़ाली या गलती सॆं जà¥à¤¡à¤²à¥Š आंतर-भाषिय या आंतर-विकि शीरà¥à¤·à¤• छेकै . à¤à¤•à¤°à¤¾ मॆ à¤à¤• या à¤à¤• सॆं जà¥à¤¯à¤¾à¤¦à¤¾ à¤à¤¨à¤¹à¥Š कॅरेकà¥à¤Ÿà¤° छै जे शीरà¥à¤·à¤• मॆं इसà¥à¤¤à¥‡à¤®à¤¾à¤² नै करलॊ जाबॆ सकॆ छै.',
+'viewsource' => 'सà¥à¤°à¥‹à¤¤ देखॊ',
+
+# Login and logout pages
+'yourname' => 'सदसà¥à¤¯à¤¨à¤¾à¤®:',
+'yourpassword' => 'कूटशबà¥à¤¦ :',
+'remembermypassword' => 'इ कंपà¥à¤¯à¥‚टर पर हमरॊ लॉग-इन सूचना याद रखॊ (अधिकतम $1 {{PLURAL:$1|दिन|दिन}} लेली)',
+'login' => 'लॉग इन',
+'nav-login-createaccount' => 'सतà¥à¤°à¤¾à¤°à¤‚भ / खाता खोलॊ',
+'userlogin' => 'लॉग इन / खाता बनाबॊ',
+'logout' => ' सतà¥à¤°à¤¾à¤‚त (लॉग आउट)',
+'userlogout' => 'सतà¥à¤°à¤¾à¤‚त (लॉग आउट)',
+'nologinlink' => 'à¤à¤—ो खाता बनाबॊ',
+'mailmypassword' => 'इमेल दà¥à¤µà¤¾à¤°à¤¾ नया कूटशबà¥à¤¦ भेजॊ',
+
+# Edit page toolbar
+'bold_sample' => 'मोटा पाठ',
+'bold_tip' => 'मोटे अकà¥à¤·à¤°',
+'italic_sample' => 'तिरछा अकà¥à¤·à¤°',
+'italic_tip' => 'तिरछा अकà¥à¤·à¤°',
+'link_sample' => 'कड़ी शीरà¥à¤·à¤•',
+'link_tip' => 'आंतरिक कड़ी',
+'extlink_sample' => 'http://www.example.com कड़ी शीरà¥à¤·à¤•',
+'extlink_tip' => 'बाहरी कड़ी (उपसरà¥à¤— http:// जरूर लगाबॊ)',
+'headline_sample' => 'शीरà¥à¤·à¤•',
+'headline_tip' => 'दà¥à¤µà¤¿à¤¤à¥€à¤¯-सà¥à¤¤à¤° शीरà¥à¤·à¤•',
+'nowiki_sample' => 'अपà¥à¤°à¤¾à¤°à¥‚पित सामगà¥à¤°à¥€ यहाठडालॊ',
+'nowiki_tip' => 'विकि पà¥à¤°à¤¾à¤°à¥‚पण नज़रंदाज़ करॊ',
+'image_tip' => 'संलगà¥à¤¨ संचिका',
+'media_tip' => 'फाईल लिंक',
+'sig_tip' => 'आपनॆ के हसà¥à¤¤à¤¾à¤•à¥à¤·à¤° व समय',
+'hr_tip' => 'हॉरिà¤à¥‰à¤‚टल लाईन (कम इसà¥à¤¤à¥‡à¤®à¤¾à¤² करॊ)',
+
+# Edit pages
+'summary' => 'सारांश:',
+'subject' => 'विषय/शीरà¥à¤·à¤•',
+'minoredit' => 'इ à¤à¤—ॊ छोटा परिवरà¥à¤¤à¤¨ छेकै',
+'watchthis' => 'इ पनà¥à¤¨à¤¾ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में डालॊ',
+'savearticle' => 'पनà¥à¤¨à¤¾ सà¤à¤œà¥‹à¤µà¥Š',
+'preview' => 'पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨',
+'showpreview' => 'पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨ देखाबॊ',
+'showdiff' => 'बदलाव देखाबॊ',
+'anoneditwarning' => "'''सावधान:''' आपनॆ लॉग-इन नै करनॆ छियै. इ पृषà¥à¤  के संपादन इतिहास मॆं आपनॆ के आइ.पी. पता अंकित करलॊ जैतै.",
+'summary-preview' => 'सारांश पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨:',
+'newarticle' => '(नया)',
+'newarticletext' => 'आपनॆ जे लेख चाहै छियै वू अखनी तलक लिखलॊ नै गेलॊ छै. इ लेख लिखै लेली नीचे टाइप करॊ. सहायता लेली [[{{MediaWiki:Helppage}}|à¤à¤¨à¥à¤œà¤¾à¤‚]] कà¥à¤²à¥€à¤• करॊ.
+
+जों आपनॆ यहां पर गलती सॆं आबी गेलॊ छियै तॆ आपनॊ बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤° कॆ बॅक (back) पर कà¥à¤²à¥€à¤• करॊ.',
+'noarticletext' => '
+Hindi (hi)फ़िलहाल इस पनà¥à¤¨à¥‡ पर कोई सामगà¥à¤°à¥€ नहीं है।
+आपनॆ अनà¥à¤¯ पनà¥à¤¨à¤¾ मॆं [[Special:Search/{{PAGENAME}}|इ सामगà¥à¤°à¥€ के खोज]] करॆ सकॆ छियै,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} संबंधित चिटà¥à¤ à¤¾ मॆं खोज करॆ सकै छियै],
+या [{{fullurl:{{FULLPAGENAME}}|action=edit}} इ पनà¥à¤¨à¤¾ कॆ संपादित करॆ सकॆ छियै]</span>.',
+'previewnote' => "'''याद रखॊ, इ केवल à¤à¤—ॊ à¤à¤²à¤• छेकै आरू अभी तलक सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ नै करलॊ गेलॊ छै!'''",
+'editing' => '$1 केरॊ समà¥à¤ªà¤¾à¤¦à¤¨ चली रहलॊ छै.',
+'editingsection' => '$1 समà¥à¤ªà¤¾à¤¦à¤¨ (अनà¥à¤­à¤¾à¤—)',
+'copyrightwarning' => "कृपया धà¥à¤¯à¤¾à¤¨ दहॊ कि {{SITENAME}} कॆ करलॊ गेलॊ सबà¥à¤­à¥† योगदान $2 के शरà¥à¤¤à¥‹à¤‚ के तहत होतै (अधिक जानकारी लेली $1 देखॊ)।
+अगर आप योगदान कॆ लगातार बदलतॆं आरू पà¥à¤¨à¤ƒ वितरित होतॆं नै देखॆ सकॆ छियै तॆ यहाठयोगदान नै करॊ. <br />
+आपनॆ इ भी पà¥à¤°à¤®à¤¾à¤£à¤¿à¤¤ करी रहलॊ छियै कि इ आपनॆ खà¥à¤¦ लिखनॆ छियै या जनारà¥à¤ªà¥€à¤¤ या कोनो अनà¥à¤¯ मà¥à¤•à¥à¤¤ सà¥à¤°à¥‹à¤¤ सॆं पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿à¤¤ करलॊ गेलॊ छै. '''सरà¥à¤µà¤¾à¤§à¤¿à¤•à¤¾à¤°à¤¯à¥à¤•à¥à¤¤ लेखॊ कॆ, बिना अनà¥à¤®à¤¤à¤¿ के, यहाठनै डालॊ!'''",
+'templatesused' => ' {{PLURAL:$1|Template|Templates}} इ पृषà¥à¤  पर पà¥à¤°à¤¯à¥à¤•à¥à¤¤ साà¤à¤šà¤¾:',
+'templatesusedpreview' => '{{PLURAL:$1|Template|Templates}} इ à¤à¤²à¤• मॆ पà¥à¤°à¤¯à¥à¤•à¥à¤¤ साà¤à¤šà¤¾:',
+'template-protected' => '(सà¥à¤°à¤•à¥à¤·à¤¿à¤¤)',
+'template-semiprotected' => '(अरà¥à¤§-सà¥à¤°à¤•à¥à¤·à¥€à¤¤)',
+'hiddencategories' => 'इ लेख निमà¥à¤¨à¤²à¤¿à¤–ित {{PLURAL:$1|1 छà¥à¤ªà¥ˆà¤²à¥Š शà¥à¤°à¥‡à¤£à¥€ मॆ|$1 छà¥à¤ªà¥ˆà¤²à¥Š शà¥à¤°à¥‡à¤£à¥€ मॆ}} छै:',
+'permissionserrorstext-withaction' => 'आपनॆकॆ $2 केरॊ अनà¥à¤®à¤¤à¤¿ नै छै, निमà¥à¤¨à¤²à¤¿à¤–ित {{PLURAL:$1|कारण लेली|कारणॊ लेली}}:',
+
+# History pages
+'viewpagelogs' => 'इ पनà¥à¤¨à¤¾ के लॉग देखॊ',
+'currentrev-asof' => '$1 केरॊ समय के संसà¥à¤•à¤°à¤£',
+'revisionasof' => '$1 केरॊ संसà¥à¤•à¤°à¤£',
+'previousrevision' => 'पà¥à¤°à¤¾à¤¨à¥Š संशोधन',
+'nextrevision' => 'नया संशोधन →',
+'currentrevisionlink' => 'हाल के संशोधन',
+'cur' => 'चालू',
+'last' => 'पिछला',
+'histlegend' => 'फरà¥à¤• चयन: फरà¥à¤• देखै लेली पà¥à¤°à¤¾à¤¨à¤¾ अवतरणॊ के आगे देलॊ गेलॊ रेडियो बॉकà¥à¤¸à¤ªà¤° कà¥à¤²à¥€à¤• करॊ तथा à¤à¤¨à¥à¤Ÿà¤° करॊ अथवा नीचॆं देलॊ बटन पर कà¥à¤²à¥€à¤• करॊ<br />
+लिजेंड: (चालू) = सदà¥à¤¯ अवतरण के बीच मॆ फरà¥à¤•,
+(आखिरी) = पिछला अवतरण के बीच मॆं फरà¥à¤•, छो = छोटा बदलाव',
+'history-fieldset-title' => 'इतिहास के विचरण करॊ',
+'histfirst' => 'बहà¥à¤¤ पहिले के',
+'histlast' => 'à¤à¤•à¤¦à¤® हाल के',
+
+# Revision deletion
+'rev-delundel' => 'दिखाबॊ/छà¥à¤ªà¤¾à¤¬à¥Š',
+'revdel-restore' => 'दृशà¥à¤¯à¤¤à¤¾ बदलॊ',
+
+# Merge log
+'revertmerge' => 'अलग करॊ',
+
+# Diffs
+'history-title' => '"$1" के अवतरण इतिहास',
+'difference' => '(संसà¥à¤•à¤°à¤£à¥Š मॆ अंतर)',
+'lineno' => 'पंकà¥à¤¤à¤¿ $1:',
+'compareselectedversions' => 'च़यन करलॊ अवतरणों मॆं फरà¥à¤• देखियै',
+'editundo' => 'पूरà¥à¤µà¤µà¤¤ करॊ',
+
+# Search results
+'searchresults' => 'खोज परिणाम',
+'searchresults-title' => '"$1" लेली खोज परिणाम',
+'searchresulttext' => '{{SITENAME}} मॆं खोज करै लेली सहायता खातिर [[{{MediaWiki:Helppage}}|{{int:help}}]] देखॊ.',
+'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' खातिर आपनॆ करलॊ गेलॊ खोज ([[Special:Prefixindex/$1| "$1" सॆं शà¥à¤°à¥ होय वाला सब पनà¥à¤¨à¤¾]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])',
+'searchsubtitleinvalid' => "तोरॊ खोज '''$1''' के परिणाम",
+'notitlematches' => 'पनà¥à¤¨à¤¾ केरॊ शीरà¥à¤·à¤• मेल नै खाय छै.',
+'notextmatches' => 'कोनो पनà¥à¤¨à¤¾ मॆं इ सामगà¥à¤°à¥€ नै मिललै.',
+'prevn' => 'पिछला {{PLURAL:$1|$1}}',
+'nextn' => 'अगला {{PLURAL:$1|$1}}',
+'viewprevnext' => 'देख़ॊ ($1 {{int:pipe-separator}} $2) ($3)',
+'search-result-size' => '$1 ({{PLURAL:$2|1 शबà¥à¤¦|$2 शबà¥à¤¦}})',
+'search-redirect' => '($1 कॆ अनà¥à¤ªà¥à¤°à¥‡à¤·à¤¿à¤¤)',
+'search-section' => '(विभाग $1)',
+'search-suggest' => 'की आपनॆ के मतलब $1 छै ?',
+'search-interwiki-caption' => 'अनà¥à¤¯ पà¥à¤°à¤•à¤²à¥à¤ª',
+'search-interwiki-default' => '$1 के रिज़लà¥à¤Ÿ:',
+'search-interwiki-more' => '(आरू)',
+'search-mwsuggest-enabled' => 'सà¥à¤à¤¾à¤µ सहित',
+'search-mwsuggest-disabled' => 'कोनो सà¥à¤à¤¾à¤µ नै',
+'nonefound' => "'''सूचना''': मूलतः कà¥à¤› ही नामसà¥à¤¥à¤¾à¤¨à¥Š मॆं खोजलॊ जाय छै. अगर आपने कॆ सब नामसà¥à¤¥à¤¾à¤¨à¥Š मॆं खोजना छै तॆ खोजशबà¥à¤¦à¥Š के पहले ''all:'' लगायकॆ खोजै के कोशिश करॊ या फिर कोनो नामसà¥à¤¥à¤¾à¤¨ के नाम लिखॊ.",
+'powersearch' => 'उनà¥à¤¨à¤¤ खोज',
+'powersearch-legend' => 'उनà¥à¤¨à¤¤ खोज',
+'powersearch-ns' => 'नामसà¥à¤¥à¤¾à¤¨à¥Š मॆ खोजॊ:',
+'powersearch-redir' => 'अनà¥à¤ªà¥à¤°à¥‡à¤·à¤¿à¤¤à¥Š के सूची दरà¥à¤¶à¤¾à¤¬à¥Š.',
+'powersearch-field' => 'लेली खोजॊ',
+
+# Preferences page
+'preferences' => 'वरीयता',
+'mypreferences' => 'हमरॊ वरीयता',
+
+# Groups
+'group-sysop' => 'पà¥à¤°à¤šà¤¾à¤²à¤•',
+
+'grouppage-sysop' => '{{ns:project}}:पà¥à¤°à¤šà¤¾à¤²à¤•',
+
+# User rights log
+'rightslog' => 'सदसà¥à¤¯ अधिकार सूची',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => ' ई पनà¥à¤¨à¤¾ के समà¥à¤ªà¤¾à¤¦à¤¨ करॊ',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|बदलाव|बदलाव}}',
+'recentchanges' => 'हाल मॆं होलॊ बदलाव',
+'recentchanges-legend' => 'हाल केरॊ परिवरà¥à¤¤à¤¨ संबंधी विकलà¥à¤ª',
+'recentchanges-feed-description' => 'इ फ़ीड मॆ होय वाला विकि पर हाल मॆ होलॊ बदलाव देखियै.',
+'rcnote' => "$5, $4 के पहले के {{PLURAL:$2|'''१''' दिन|'''$2''' दिनों}} मॆं {{PLURAL:$1|होलॊ '''१''' बदलाव इ पà¥à¤°à¤•à¤¾à¤° छै.| होलॊ '''$1''' बदलाव इ पà¥à¤°à¤•à¤¾à¤° छै}}",
+'rclistfrom' => '$1 सॆं नया बदलाव देखलाबॊ',
+'rcshowhideminor' => 'छोटॊ बदलाव $1',
+'rcshowhidebots' => 'बोट सीनी $1',
+'rcshowhideliu' => 'लॉगà¥à¤¡ इन सदसà¥à¤¯à¥Š के बदलाव $1',
+'rcshowhideanons' => 'अनामक सदसà¥à¤¯à¥Š के बदलाव $1',
+'rcshowhidemine' => 'हमरॊ बदलाव $1',
+'rclinks' => 'पिछला $2 दिना मॆं होलॊ $1 बदलाव देखियै.<br />$3',
+'diff' => 'अंतर',
+'hist' => 'इतिहास',
+'hide' => 'छà¥à¤ªà¤¾à¤¬à¥Š',
+'show' => 'देखाबॊ',
+'minoreditletter' => ' छो.',
+'newpageletter' => 'न',
+'boteditletter' => 'बो',
+'rc-enhanced-expand' => 'विसà¥à¤¤à¥ƒà¤¤ जानकारी देखाबॊ (à¤à¤•à¤°à¤¾ लेली जावासà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ चाहियॊ)',
+'rc-enhanced-hide' => 'विसà¥à¤¤à¥ƒà¤¤ जानकारी छिपाबॊ',
+
+# Recent changes linked
+'recentchangeslinked' => 'इ पृषà¥à¤  संबंधी बदलाव',
+'recentchangeslinked-title' => '"$1" मॆं होलॊ बदलाव',
+'recentchangeslinked-summary' => "कोनो पनà¥à¤¨à¤¾ के हवाले कतà¥à¤¤à¥† भी पनà¥à¤¨à¤¾ मौजूद हà¥à¤Ž सकॆ छै, इ सूची उ पनà¥à¤¨à¤¾ (या कोनो शà¥à¤°à¥‡à¤£à¥€ के सदसà¥à¤¯à¥Š) मॆं होलॊ हाल के बदलाव देखाबै छै.
+[[Special:Watchlist|आपनॆ के धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची]] मॆं मौजूद पनà¥à¤¨à¤¾ '''मोटा''' अकà¥à¤·à¤°à¥Š मॆं दिखतै.",
+'recentchangeslinked-page' => 'पृषà¥à¤  नाम:',
+'recentchangeslinked-to' => 'à¤à¤•à¤°à¥Š बदला मॆं देलॊ पनà¥à¤¨à¤¾ सीनी सॆं जà¥à¤¡à¤²à¥Š पनà¥à¤¨à¤¾ सीनी के बदलाव दिखलाबॊ',
+
+# Upload
+'upload' => 'फाईल अपलोड',
+'uploadlogpage' => 'अपलोड सूची',
+'uploadedimage' => '"[[$1]]" कॆ अपलोड करलॊ गेलै',
+
+# File description page
+'filehist' => 'फाइल के इतिहास',
+'filehist-help' => 'संचिका पà¥à¤°à¤¾à¤¨à¥Š समय में कैनà¥à¤¹à¥Š दिखै रहै इ जानै लेली वांछित दिनांक/समय पर चटका लगाबॊ.',
+'filehist-current' => 'मौजूदा',
+'filehist-datetime' => 'तारीख/समय',
+'filehist-thumb' => 'थमà¥à¤¬à¤¨à¥‡à¤²',
+'filehist-thumbtext' => '$1 केरॊ समय के संसà¥à¤•à¤°à¤£ के अà¤à¤—ूठाकार पà¥à¤°à¤¾à¤°à¥‚प',
+'filehist-user' => 'सदसà¥à¤¯',
+'filehist-dimensions' => 'आयाम',
+'filehist-comment' => 'टिपà¥à¤ªà¤£à¥€',
+'imagelinks' => 'फाईल लिंक',
+'linkstoimage' => 'निमà¥à¤¨à¥‹à¤•à¥à¤¤ {{PLURAL:$1|पनà¥à¤¨à¥‡|$1 पनà¥à¤¨à¤¾ सीनी}} मॆं इ संचिका के हवाले छै:',
+'sharedupload' => 'ई फाईल $1 सॆ छै आरू संभवतः अनà¥à¤¯ परियोजना भी à¤à¤•à¤°à¥Š इसà¥à¤¤à¥‡à¤®à¤¾à¤² करी रहलॊ होतै.',
+'uploadnewversion-linktext' => 'इ फाईल के नया संसà¥à¤•à¤°à¤£ अपलॊड करॊ',
+
+# Statistics
+'statistics' => 'आà¤à¤•à¤¡à¤¼à¤¾',
+
+# Miscellaneous special pages
+'nbytes' => '{{PLURAL:$1|बाइट|बाइट}}',
+'nmembers' => '{{PLURAL:$1|à¤à¤—ॊ सदसà¥à¤¯|$1 सदसà¥à¤¯}}',
+'prefixindex' => 'इ उपसरà¥à¤— वाल सबà¥à¤­à¥‡ पनà¥à¤¨à¤¾',
+'newpages' => 'नया पनà¥à¤¨à¤¾',
+'move' => 'सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरण',
+'movethispage' => 'इ पनà¥à¤¨à¤¾ सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरित करॊ',
+'pager-newer-n' => '{{PLURAL:$1|नया 1|नया सीनी $1}}',
+'pager-older-n' => '{{PLURAL:$1|पà¥à¤°à¤¾à¤¨à¤¾ 1|पà¥à¤°à¤¾à¤¨à¥Š सीनी $1}}',
+
+# Book sources
+'booksources' => 'पà¥à¤¸à¥à¤¤à¤• सà¥à¤°à¥‹à¤¤',
+'booksources-search-legend' => 'पà¥à¤¸à¥à¤¤à¤• सà¥à¤°à¥‹à¤¤ खोजॊ',
+'booksources-go' => 'जा',
+
+# Special:Log
+'log' => 'लॉग सूची',
+
+# Special:AllPages
+'allpages' => 'सबà¥à¤­à¥‡ पनà¥à¤¨à¤¾',
+'alphaindexline' => '$1 सॆ $2 तलक',
+'prevpage' => 'पिछला पनà¥à¤¨à¤¾ ($1)',
+'allpagesfrom' => 'देलॊ गेलॊ अकà¥à¤·à¤° सॆं आरंभ होयवाला लेख दरà¥à¤¶à¤¾à¤¬à¥Š:',
+'allpagesto' => 'à¤à¤¨à¤¾ समापà¥à¤¤ होय वाला पनà¥à¤¨à¤¾ दिखाबॊ:',
+'allarticles' => 'सबà¥à¤­à¥‡ पनà¥à¤¨à¤¾',
+'allpagessubmit' => 'चलॊ',
+
+# Special:LinkSearch
+'linksearch' => 'बाहरी कड़ी',
+
+# Special:Log/newusers
+'newuserlogpage' => 'नया सदसà¥à¤¯à¥Š के सूची',
+'newuserlog-create-entry' => 'नवीन सदसà¥à¤¯',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(सदसà¥à¤¯ सूची)',
+
+# E-mail user
+'emailuser' => 'इ सदसà¥à¤¯ कॆ ई-मेल भेजॊ',
+
+# Watchlist
+'watchlist' => 'हमरॊ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची',
+'mywatchlist' => 'हमरॊ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची',
+'addedwatchtext' => '"[[:$1]]" आपनॆके [[Special:Watchlist|धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची]] मॆं "<nowiki>$1</nowiki>" केरॊ समावेश करी देलॊ गेलॊ छै.
+भविषà¥à¤¯ मॆं इ पनà¥à¤¨à¤¾ तथा इ पनà¥à¤¨à¥‡ केरॊ वारà¥à¤¤à¤¾ मॆं होय वाला बदलाव आपनॆकॆ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची मॆं दिखतै तथा [[Special:RecentChanges|हाल मॆं होलॊ बदलावॊ के सूची]] मॆं ई पनà¥à¤¨à¤¾ बोलà¥à¤¡ दिखतै ताकि आपनॆ आसानी सॆं à¤à¤•à¤°à¥Š धà¥à¤¯à¤¾à¤¨ रखॆ सकियै.
+
+<p>अगर आपनॆकॆ इ पनà¥à¤¨à¤¾ कॆ अपनॊ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची सॆं निकालना छै तॆ [[Special:RecentChanges|टटका परिवरà¥à¤¤à¤¨]] पर कà¥à¤²à¤¿à¤• करॊ.',
+'removedwatchtext' => '"[[:$1]]" नामक पनà¥à¤¨à¤¾ कॆ आपनॆ के [[Special:Watchlist|धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची]] सॆं हटाय देलॊ गेलॊ छै.',
+'watch' => 'धà¥à¤¯à¤¾à¤¨ रखॊ',
+'watchthispage' => 'ई पनà¥à¤¨à¤¾ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में डालॊ',
+'unwatch' => 'धà¥à¤¯à¤¾à¤¨ हटाबॊ',
+'watchlist-details' => 'वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾ केरॊ अलावा {{PLURAL:$1|$1 पनà¥à¤¨à¤¾|$1 पनà¥à¤¨à¥‡}} आपने के धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची मॆं छै.',
+'wlshowlast' => 'पिछला $1 घंटा $2 दिन $3 देखॊ',
+'watchlist-options' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची विकलà¥à¤ª',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'धà¥à¤¯à¤¾à¤¨ दय रहलॊ छै...',
+'unwatching' => 'धà¥à¤¯à¤¾à¤¨ हटाय रहलॊ छियै...',
+
+# Delete
+'deletepage' => 'पनà¥à¤¨à¤¾ हटाबॊ',
+'confirmdeletetext' => 'आपनॆ à¤à¤—ॊ लेख ओकरॊ सबà¥à¤­à¥† अवतरणॊ के साथ हटाय लॆ चाहै छहॊ.
+आपनॆ सॆं अनà¥à¤°à¥‹à¤§ छै कि आपनॆ जे करी रहलॊ छियै वू मीडिया विकि के [[{{MediaWiki:Policy-url}}|नीतिनà¥à¤¸à¤¾à¤°]] छै इ बात के पà¥à¤·à¥à¤Ÿà¤¿ करी लॆ तथा कà¥à¤°à¤¿à¤¯à¤¾ करला सॆं पहले आपनॊ कà¥à¤°à¤¿à¤¯à¤¾ के परिणाम जानी लॆ.',
+'actioncomplete' => 'कारà¥à¤¯ पूरà¥à¤£',
+'actionfailed' => 'कà¥à¤°à¤¿à¤¯à¤¾ विफल',
+'deletedtext' => '"$1" कॆ हटैलॊ गेलॊ छै.
+हाल में हटैलॊ गेलॊ लेखॊ के सूची लेली $2 देखॊ.',
+'deletedarticle' => '"[[$1]]" कॆ हटैलॊ गेलॊ छै.',
+'suppressedarticle' => 'दबैलॊ "[[$1]]"',
+'dellogpage' => 'हटाबै के सूची',
+'dellogpagetext' => 'नीचॆ हाल मॆं हटैलॊ गेलॊ पनà¥à¤¨à¤¾ के सूची छै.',
+'deletionlog' => 'हटाबै के सूची',
+'reverted' => 'पà¥à¤°à¤¾à¤¨à¥‡ अवतरण कॆ पूरà¥à¤µà¤µà¤¤ करलॊ गेलै',
+'deletecomment' => 'कारण:',
+'deleteotherreason' => 'दोसरॊ/अतिरिकà¥à¤¤ कारण:',
+'deletereasonotherlist' => 'दोसरॊ कारण',
+'deletereason-dropdown' => '*हटाबै के सामानà¥à¤¯ कारण
+** लेखक के बिनती
+** कॉपीराईट
+** वॅनà¥à¤¡à¥…लिजम',
+'delete-edit-reasonlist' => 'हटाबै के कारण कॆ संपादित करॊ',
+'delete-toobig' => 'इ पनà¥à¤¨à¤¾ केरॊ संपादन इतिहास $1 सॆं अधिक {{PLURAL:$1|संसà¥à¤•à¤°à¤£|संसà¥à¤•à¤°à¤£}} होला के वजह सॆं बहà¥à¤¤ बड़ा छै.
+{{SITENAME}} के अनपेकà¥à¤·à¤¿à¤¤ रूप सॆं बंद होला सॆं रोकै लेली à¤à¤¸à¤¨à¥Š पनà¥à¤¨à¤¾ कॆ हटाबै के अनà¥à¤®à¤¤à¤¿ नै छै.',
+'delete-warning-toobig' => 'इस लेख केरॊ संपादन इतिहास काफ़ी लंबा चौड़ा छै, à¤à¤•à¤°à¥Š $1 सॆं अधिक {{PLURAL:$1|संसà¥à¤•à¤°à¤£|संसà¥à¤•à¤°à¤£}} छै.
+à¤à¤•à¤°à¤¾ हटैला सॆं {{SITENAME}} के आà¤à¤•à¤¡à¤¼à¤¾à¤•à¥‹à¤· के गतिविधियॊ मॆं वà¥à¤¯à¤µà¤§à¤¾à¤¨ आबॆ सकॆ छै;
+कृपया सोची समà¤à¥€ कॆ आगू बढ़ॊ.',
+
+# Rollback
+'rollback' => 'संपादन पीछू लॆ जाय',
+'rollback_short' => 'पूरà¥à¤µà¤µà¤¤ करॊ',
+'rollbacklink' => 'वापस लॆ',
+'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' => "संपादन टिपà¥à¤ªà¤£à¥€ छेलै: \"''\$1''\".",
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|Talk]]) केरॊ संपादनॊ कॆ हटायकॆ [[User:$1|$1]] के आखिरी अवतरण कॆ पूरà¥à¤µà¤µà¤¤ करलॊ गेलै.',
+'revertpage-nouser' => '(पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ नाम हटैलॊ गेलॊ छै) दà¥à¤µà¤¾à¤°à¤¾ करलॊ संपादन कॆ वापस पà¥à¤°à¤¾à¤¨à¥Š सà¥à¤¥à¤¿à¤¤à¤¿ मॆं लाना कॆ à¤à¤•à¤°à¥Š पहले केरॊ [[User:$1|$1]] दà¥à¤µà¤¾à¤°à¤¾ बनैलॊ संसà¥à¤•à¤°à¤£ कॆ फिर सॆं ताज़ा संसà¥à¤•à¤°à¤£ बनाबॊ.',
+'rollback-success' => '$1 केरॊ संपादन हटाबॊ;
+$2 दà¥à¤µà¤¾à¤°à¤¾ संपादित आखिरी अवतरण कॆ पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ करलॊ गेलै.',
+
+# Edit tokens
+'sessionfailure-title' => 'निषà¥à¤«à¤² सतà¥à¤°',
+'sessionfailure' => 'à¤à¤¸à¤¨à¥Š पà¥à¤°à¤¤à¥€à¤¤ होय छै कि आपनॆ के लोगिन सतà¥à¤° के साथ कोनो समसà¥à¤¯à¤¾ छै.
+सतà¥à¤° अपहरण सॆं बचाबै लेली सावधानी के तौर पर आपनॆ के इ कà¥à¤°à¤¿à¤¯à¤¾à¤•à¤²à¤¾à¤ª रदà¥à¤¦ करी देलॊ गेलॊ छै.
+कृपया "back" पर वार करॊ आरू पृषà¥à¤  कॆ दà¥à¤¬à¤¾à¤°à¤¾ सॆं लोड करॊ, तबॆ दà¥à¤¬à¤¾à¤°à¤¾ कोशिश करॊ.',
+
+# Protect
+'protectlogpage' => 'सà¥à¤°à¤•à¥à¤·à¤¾ सूची',
+'protectedarticle' => '"[[$1]]" सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करलका',
+'modifiedarticleprotection' => '"[[$1]]" के बदललॊ सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤°',
+'protectcomment' => 'कारण:',
+'protectexpiry' => 'कालावधि समापà¥à¤¤à¤¿:',
+'protect_expiry_invalid' => 'समापà¥à¤¤à¥€ समय गलत छै.',
+'protect_expiry_old' => 'समापà¥à¤¤à¥€ समय पहिनै बीती चà¥à¤•à¤²à¥Š छै.',
+'protect-text' => "'''$1''' पनà¥à¤¨à¤¾ के सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤° आपनॆ यहां देखॆ सकॆ छियै आरू ओकरा बदलॆ भी सकॆ छियै.",
+'protect-locked-access' => "आपनॆ कॆ इ पनà¥à¤¨à¤¾ के सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤° बदलै के अनà¥à¤®à¤¤à¤¿ नै छै.
+'''$1''' केरॊ अखनकॊ सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤°:",
+'protect-cascadeon' => 'ई पनà¥à¤¨à¤¾ अभी सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ छै कैनà¥à¤¹à¥‡à¤‚कि वू {{PLURAL:$1|इ पनà¥à¤¨à¤¾ के | इ पनà¥à¤¨à¤¾ के}} सà¥à¤°à¤•à¥à¤·à¤¾-सीढीपर छै. आपनॆ इ पनà¥à¤¨à¤¾ के सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤° बदलॆ सकॆ छियै, पर à¤à¤•à¤°à¤¾ सॆं सà¥à¤°à¤•à¥à¤·à¤¾-सीढी मॆं बदलाव नै होतै.',
+'protect-default' => 'सबà¥à¤­à¥† सदसà¥à¤¯à¥Š कॆ अनà¥à¤®à¤¤à¤¿ दॆ',
+'protect-fallback' => '"$1" इजाज़त जरूरी छै',
+'protect-level-autoconfirmed' => 'नयॊ व अपंजीकृत सदसà¥à¤¯à¥Š कॆ अवरोधित करॊ',
+'protect-level-sysop' => 'सिरà¥à¤« पà¥à¤°à¤šà¤¾à¤²à¤•',
+'protect-summary-cascade' => 'सीढी',
+'protect-expiring' => 'समापà¥à¤¤à¥€ $1 (UTC)',
+'protect-expiry-indefinite' => 'बेमियादी',
+'protect-cascade' => 'इस पनà¥à¤¨à¤¾ सॆं जà¥à¤¡à¤²à¥Š पनà¥à¤¨à¤¾ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करॊ (सà¥à¤°à¤•à¥à¤·à¤¾-सीढी)',
+'protect-cantedit' => 'आपनॆ इ पनà¥à¤¨à¤¾ के सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤° बदलॆ नै सकॆ छियै कैनà¥à¤¹à¥‡à¤•à¤¿ आपनॆ कॆ à¤à¤¸à¤¨à¥Š करै के अनà¥à¤®à¤¤à¤¿ नै छै.',
+'restriction-type' => 'इजाज़त:',
+'restriction-level' => 'सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤°',
+'minimum-size' => 'कम सॆं कम आकार',
+'maximum-size' => 'जादा सॆं जादा आकार:',
+'pagesize' => '(बाईटà¥à¤¸)',
+
+# Restrictions (nouns)
+'restriction-edit' => 'संपादन',
+'restriction-move' => 'सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरण',
+'restriction-create' => 'सृजन करॊ',
+'restriction-upload' => 'अपलोड',
+
+# Restriction levels
+'restriction-level-sysop' => 'पूरà¥à¤£ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤',
+'restriction-level-autoconfirmed' => 'अरà¥à¤§ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤',
+'restriction-level-all' => 'कोयà¥à¤¯à¥Š लेवल(सà¥à¤¤à¤°)',
+
+# Undelete
+'undelete' => 'हटैलॊ पनà¥à¤¨à¤¾ वापस लानॊ',
+'undeletepage' => 'हटैलॊ पनà¥à¤¨à¤¾ देखॊ आरू पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ करॊ',
+'undeletepagetitle' => "'''नीचे [[:$1]] केरॊ हटैलॊ गेलॊ अवतरण भी दरà¥à¤¶à¥ˆà¤²à¥Š गेलॊ छै.'''",
+'viewdeletedpage' => 'हटैलॊ पनà¥à¤¨à¤¾ वापस लानॊ',
+'undeletelink' => 'देखॊ/पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ करॊ',
+'undeletedarticle' => '"[[$1]]" पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ करलॊ गेलै',
+
+# Namespace form on various pages
+'namespace' => 'नामसà¥à¤¥à¤¾à¤¨:',
+'invert' => 'विपरीत पà¥à¤°à¤µà¤°à¤£',
+'blanknamespace' => '(मà¥à¤–à¥à¤¯)',
+
+# Contributions
+'contributions' => 'सदसà¥à¤¯ योगदान',
+'contributions-title' => '$1 लेली सदसà¥à¤¯à¥Š के योगदान',
+'mycontris' => 'हमरॊ योगदान',
+'contribsub2' => '$1 लेली ($2)',
+'uctop' => '(उपर)',
+'month' => 'इ महिना सॆं (आरू पà¥à¤°à¤¾à¤¨à¥Š):',
+'year' => 'इ साल सॆं (आरू पà¥à¤°à¤¾à¤¨à¥Š):',
+
+'sp-contributions-newbies' => 'सिरà¥à¤« नया सदसà¥à¤¯à¥Š के योगदान दरà¥à¤¶à¤¾à¤¬à¥Š',
+'sp-contributions-blocklog' => 'बà¥à¤²à¥‰à¤• सूची',
+'sp-contributions-search' => 'योगदान लेली खोज',
+'sp-contributions-username' => 'आईपी à¤à¤¡à¥à¤°à¥‡à¤¸ या सदसà¥à¤¯à¤¨à¤¾à¤®:',
+'sp-contributions-submit' => 'खोज',
+
+# What links here
+'whatlinkshere' => 'à¤à¤¨à¥à¤œà¤¾à¤‚ की जà¥à¤¡à¤¼à¤¤à¥ˆ',
+'whatlinkshere-title' => '$1 सॆं जà¥à¤¡à¤¼à¤²à¥Š पनà¥à¤¨à¤¾',
+'whatlinkshere-page' => 'पनà¥à¤¨à¤¾:',
+'linkshere' => "नीचे के सब पनà¥à¤¨à¤¾ '''[[:$1]]''' सॆं जà¥à¤¡à¤¼à¤²à¥Š:",
+'isredirect' => 'पà¥à¤¨: निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ पनà¥à¤¨à¤¾',
+'istemplate' => 'मिलाबॊ',
+'isimage' => 'तसà¥à¤µà¥€à¤° लिंक',
+'whatlinkshere-prev' => '{{PLURAL:$1|पिछला|पिछला सीनी $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|अगला|अगला $1}}',
+'whatlinkshere-links' => '↠लिंक',
+'whatlinkshere-hideredirs' => '$1 अनà¥à¤ªà¥à¤°à¥‡à¤·à¤¿à¤¤à¥‡à¤‚',
+'whatlinkshere-hidetrans' => '$1 टà¥à¤°à¤¾à¤¨à¥à¤¸à¥à¤•à¥à¤²à¥à¤¯à¥à¤œà¤¨à¥à¤¸',
+'whatlinkshere-hidelinks' => '$1 लिंक',
+'whatlinkshere-filters' => 'फिलà¥à¤Ÿà¤°à¥à¤¸',
+
+# Block/unblock
+'blockip' => 'अवरोधित करॊ',
+'ipboptions' => '२ घंटा:2 hours,१ दिन:1 day,३ दिन:3 days,१ हफà¥à¤¤à¤¾:1 week,२ हफà¥à¤¤à¤¾:2 weeks,१ महिना:1 month,३ महिना:3 months,६ महिना:6 months,१ साल:1 year,अनंत:infinite',
+'ipblocklist' => 'अवरोधित आईपी पता व सदसà¥à¤¯à¤¨à¤¾à¤®',
+'blocklink' => 'अवरोधित करॊ',
+'unblocklink' => 'अवरोध हटाà¤à¤ (अनबà¥à¤²à¥‰à¤•)',
+'change-blocklink' => 'बà¥à¤²à¥‰à¤• बदलॊ',
+'contribslink' => 'योगदान',
+'blocklogpage' => 'बà¥à¤²à¥‰à¤• सूची',
+'blocklogentry' => '"[[$1]]" कॆ $2 $3 तलक बदलाव करै सॆं रोकी देलॊ गेलॊ छै.',
+'unblocklogentry' => '$1 बà¥à¤²à¥‰à¤• निकाली देलॊ गेलॊ छै.',
+'block-log-flags-nocreate' => 'खाता निरà¥à¤®à¤¾à¤£ पर रोक',
+
+# Move page
+'movepagetext' => "नीचॆं देलॊ परà¥à¤šà¤¾ पनà¥à¤¨à¤¾ के नाम बदली देतै, à¤à¤•à¤°à¥Š सारा इतिहास भी नयॊ नाम सॆं दिखना शà¥à¤°à¥‚ होय जैतै.
+पà¥à¤°à¤¾à¤¨à¤¾ शीरà¥à¤·à¤• नया नाम कॆ अनà¥à¤ªà¥à¤°à¥‡à¤·à¤¿à¤¤ करी लेतै.
+मूल शीरà¥à¤·à¤• दनà¥à¤¨à¥† जाय वाला अगà¥à¤°à¥‡à¤·à¤£à¥Š कॆ आपनॆ सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤ रूपॊ सॆं बदलॆ सकॆ छियै.
+यदि आपनॆ à¤à¤¨à¥à¤¹à¥Š नै करै छियै तॆ कृपया [[Special:DoubleRedirects|दोहरा]] पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤£ या [[Special:BrokenRedirects|टूटलॊ पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨]] लेली ज़रूर जाà¤à¤š करॊ.
+कड़ी सीनी सही जगह इंगित करी रहलॊ छै, ई सà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ करना आपनॆ कॆ जिमà¥à¤®à¥‡à¤¦à¤¾à¤°à¥€ छै.
+
+अगर नयॊ शीरà¥à¤·à¤• के लेख पहलै सॆं छै तॆ सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरण '''नै''' होतै. पर अगर नयॊ शीरà¥à¤·à¤• वाला लेख खाली छै अथवा कहीं आरू अनà¥à¤ªà¥à¤°à¥‡à¤·à¤¿à¤¤ करै छियै आरू साथ ही ओकरॊ पà¥à¤°à¤¾à¤¨à¥Š संसà¥à¤•à¤°à¤£ नै छै तॆ सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरण होय जैतै.
+à¤à¤•à¤°à¥Š मतलब कि यदि आपनॆ सॆं गलती हो जाय तॆ आपनॆ वापस पà¥à¤°à¤¾à¤¨à¥Š नाम पर इ पनà¥à¤¨à¤¾ कॆ सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरण करॆ सकॆ छियै, आरू साथ ही आपनॆ कोनॊ मौजूदा पनà¥à¤¨à¤¾ के बदले ई सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरण नै करॆ सकॆ छियै.
+
+'''चेतावनी!'''
+यदि पनà¥à¤¨à¤¾ काफ़ी लोकपà¥à¤°à¤¿à¤¯ छै तॆ ओकरा लेली ई à¤à¤• बहà¥à¤¤ बड़ा व अकसà¥à¤®à¤¾à¤¤à¥ परिवरà¥à¤¤à¤¨ हà¥à¤Ž सकॆ छै;
+आगू बढ़ला सॆं पहले अंजाम अचà¥à¤›à¤¾ सॆं समà¤à¥€ लॆ.
+
+'''सूचना!'''
+सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरण करला सॆं कोय भी महतà¥à¤µà¤ªà¥‚रà¥à¤£ लेख मॆं अनपेकà¥à¤·à¤¿à¤¤ बदलाव हà¥à¤Ž सकॆ छै
+आपनॆ सॆं अनà¥à¤°à¥‹à¤§ छै कि आपनॆ à¤à¤•à¤°à¥Š परिणाम जानी लियै.",
+'movepagetalktext' => "संबंधित वारà¥à¤¤à¤¾ पृषà¥à¤  à¤à¤•à¤°à¥Š साथ सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरीत नै होतै '''अगर:'''
+* आपनॆ पनà¥à¤¨à¤¾ दोसरॊ नामसà¥à¤¥à¤¾à¤¨ मॆं सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरीत करी रहलॊ छहॊ.
+* इ नाम के वारà¥à¤¤à¤¾ पृषà¥à¤  पहलॆ सॆं बनलॊ छै, या
+* नीचॆं देलॊ गेलॊ चेक बॉकà¥à¤¸ आपनॆ निकाली देनॆ छियै.
+
+इ मामला मॆं आपनॆकॆ सà¥à¤µà¤¯à¤‚ इ पनà¥à¤¨à¤¾ जोडै लॆ पड़तै.",
+'movearticle' => 'पनà¥à¤¨à¤¾ केरॊ सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरण',
+'newtitle' => 'नया शीरà¥à¤·à¤• दनà¥à¤¨à¥†:',
+'move-watch' => 'धà¥à¤¯à¤¾à¤¨ रखॊ सà¥à¤°à¥‹à¤¤ आरू लकà¥à¤·à¥à¤¯ फाइल के',
+'movepagebtn' => 'पनà¥à¤¨à¤¾ सà¥à¤¥à¤¾à¤‚तरण करॊ',
+'pagemovedsub' => 'सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरण सफल रहलै',
+'movepage-moved' => '\'\'\'"$1" कॆ "$2" पर सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरीत करलॊ गेलै\'\'\'',
+'articleexists' => 'इ नाम के à¤à¤—ॊ पनà¥à¤¨à¤¾ पहले सॆं मौजूद छै,या फेरू आपनॆ अमानà¥à¤¯ नाम चà¥à¤¨à¤¨à¥† छियै. कृपया दोसरॊ नाम चà¥à¤¨à¥Š.',
+'talkexists' => "'''पनà¥à¤¨à¤¾ के नाम बदली देलॊ गेलॊ छै, पर ओकरा सॆं संबंधित वारà¥à¤¤à¤¾ पृषà¥à¤  नै बदललॊ गेलॊ छै कैनà¥à¤¹à¥‡à¤‚कि वू पहले सॆं बनलॊ छै.
+कृपया à¤à¤•à¤°à¤¾ सà¥à¤µà¤¯à¤‚ बदली दहॊ'''",
+'movedto' => ' सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरीत करलॊ गेलै',
+'movetalk' => 'संबंधित वारà¥à¤¤à¤¾ पृषà¥à¤  भी बदलॊ',
+'1movedto2' => '[[$1]] सॆ[[$2]] पर सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरित करलॊ गेलै',
+'1movedto2_redir' => '[[$1]] इ लेख के नाम बदली कॆ [[$2]] करी देलॊ गेलॊ छै (अनà¥à¤ªà¥à¤°à¥‡à¤·à¤¿à¤¤)',
+'movelogpage' => 'सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरण सूची',
+'movereason' => 'कारण:',
+'revertmove' => 'पà¥à¤°à¤¾à¤¨à¥Š अवतरण पर लॆ चलॊ (रिवरà¥à¤Ÿ)',
+
+# Export
+'export' => 'पनà¥à¤¨à¤¾ कॆ निरà¥à¤¯à¤¾à¤¤ करॊ',
+
+# Thumbnails
+'thumbnail-more' => 'बड़ा करॊ',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'आपनॆ के पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ पनà¥à¤¨à¤¾',
+'tooltip-pt-mytalk' => 'आपनॆ के वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾',
+'tooltip-pt-preferences' => 'आपनॆ के वरीयता',
+'tooltip-pt-watchlist' => 'आपनॆ के धà¥à¤¯à¤¾à¤¨ देलॊ पनà¥à¤¨à¤¾ के सूची',
+'tooltip-pt-mycontris' => 'आपनॆ के योगदानॊ के सूची',
+'tooltip-pt-login' => 'आपनॆ सॆं सतà¥à¤°à¤¾à¤°à¤‚भ करै के गà¥à¤œà¤¼à¤¾à¤°à¤¿à¤¶ छै; लेकिन इ अनिवारà¥à¤¯ नै छै.',
+'tooltip-pt-logout' => 'सतà¥à¤°à¤¾à¤‚त',
+'tooltip-ca-talk' => 'सामगà¥à¤°à¥€ पनà¥à¤¨à¤¾ केरॊ बारे मॆं वारà¥à¤¤à¤¾à¤²à¤¾à¤ª',
+'tooltip-ca-edit' => 'आपनॆ इ पनà¥à¤¨à¤¾ बदलॆ सकै छौ, कृपया बदलाव संजोवै सॆं पहलॆ à¤à¤²à¤• देखॊ.',
+'tooltip-ca-addsection' => 'नया विभाग शà¥à¤°à¥‚ करॊ',
+'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-go' => 'अगर इ शीरà¥à¤·à¤• के पनà¥à¤¨à¤¾ छै तॆ ओकरा पॆ चलॊ',
+'tooltip-search-fulltext' => 'इ वाकà¥à¤¯à¤¾à¤‚श कॆ पनà¥à¤¨à¤¾ मॆं खोजॊ',
+'tooltip-n-mainpage' => 'मà¥à¤–पृषà¥à¤  पॆ जा',
+'tooltip-n-mainpage-description' => 'मà¥à¤–à¥à¤¯ पनà¥à¤¨à¤¾ पर पधारॊ',
+'tooltip-n-portal' => 'पà¥à¤°à¤•à¤²à¥à¤ª के बारे मेà¤, आपनॆ की करॆ सकॆ छियै, मदद कहाठसे लेभॆ',
+'tooltip-n-currentevents' => 'हाल के घटना के पृषà¥à¤ à¤­à¥‚मि पà¥à¤°à¤¾à¤ªà¥à¤¤ करॊ.',
+'tooltip-n-recentchanges' => 'विकि मॆं हाल मॆं होलॊ बदलावॊ के फ़ेहरिसà¥à¤¤',
+'tooltip-n-randompage' => 'कोनो à¤à¤• लेख पर जा',
+'tooltip-n-help' => 'मदत मिलै केरॊ ठिकानॊ',
+'tooltip-t-whatlinkshere' => 'यहाà¤à¤•à¤°à¥Š हवाला दै वाला सबभॆ विकि पनà¥à¤¨à¤¾ के सूची',
+'tooltip-t-recentchangeslinked' => 'इ पनà¥à¤¨à¤¾ से जà¥à¤¡à¤¼à¤²à¥Š पनà¥à¤¨à¤¾ पर होलॊ हाल के बदलाव',
+'tooltip-feed-rss' => 'इ पनà¥à¤¨à¤¾ के आरà¤à¤¸à¤à¤¸ फ़ीड',
+'tooltip-feed-atom' => 'इ पनà¥à¤¨à¤¾ के अणॠफ़ीड',
+'tooltip-t-contributions' => 'इ सदसà¥à¤¯ के योगदान केरॊ सूची देखियै',
+'tooltip-t-emailuser' => 'इस सदसà¥à¤¯ कॆ इमेल भेजॊ',
+'tooltip-t-upload' => 'फाईल लादॊ (अपलोड )',
+'tooltip-t-specialpages' => 'ख़ास पनà¥à¤¨à¤¾ केरॊ सूची',
+'tooltip-t-print' => 'इ पनà¥à¤¨à¤¾ के छापे लायक संसà¥à¤•à¤°à¤£.',
+'tooltip-t-permalink' => 'इ पनà¥à¤¨à¤¾ के संसोधन खातिर सà¥à¤¥à¤¾à¤¯à¥€ लिंक',
+'tooltip-ca-nstab-main' => 'सामगà¥à¤°à¥€ पनà¥à¤¨à¤¾ देखॊ',
+'tooltip-ca-nstab-user' => 'सदसà¥à¤¯ पनà¥à¤¨à¤¾ देखियै',
+'tooltip-ca-nstab-special' => 'इ à¤à¤—ॊ खास पनà¥à¤¨à¤¾ छै, आपनॆ à¤à¤•à¤°à¤¾ बदलॆ नो सकै छियै.',
+'tooltip-ca-nstab-project' => 'पà¥à¤°à¥‹à¤œà¥‡à¤•à¥à¤Ÿ पनà¥à¤¨à¤¾ देखियै',
+'tooltip-ca-nstab-image' => 'फाइल के पनà¥à¤¨à¤¾ देखॊ',
+'tooltip-ca-nstab-template' => 'टेमà¥à¤ªà¥à¤²à¥‡à¤Ÿ देखियें',
+'tooltip-ca-nstab-category' => 'शà¥à¤°à¥‡à¤£à¥€ पनà¥à¤¨à¤¾ देखॊ',
+'tooltip-minoredit' => 'à¤à¤•à¤°à¤¾ छोटा बदलाव के तौर पर दरà¥à¤œ करॊ',
+'tooltip-save' => 'आपनॊ बदलाव कॆ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करॊ',
+'tooltip-preview' => 'आपनॊ बदलावॊ के à¤à¤²à¤• देखॊ, कृपया सà¤à¤œà¥‹à¤²à¤¾ सॆं पहिनै à¤à¤•à¤°à¥Š इसà¥à¤¤à¥‡à¤®à¤¾à¤² करॊ !',
+'tooltip-diff' => 'इ पाठà¥à¤¯ मॆं आपनॊ दà¥à¤µà¤¾à¤°à¤¾ करलॊ बदलाव देखॊ.',
+'tooltip-compareselectedversions' => 'इ पनà¥à¤¨à¤¾ के चà¥à¤¨à¤²à¥Š अवतरणॊ मॆं फरà¥à¤• देखाबॊ.',
+'tooltip-watch' => 'इ पनà¥à¤¨à¤¾ कॆ आपनॊ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची मॆं डालॊ.',
+'tooltip-rollback' => ' "वापस लॆ चलॊ" इ पनà¥à¤¨à¤¾ के पिछला योगदाता के बदलाव à¤à¤•à¥à¤•à¥‡ चटका में ग़ायब करी दै छै.',
+'tooltip-undo' => '"पà¥à¤°à¤¾à¤¨à¥Š सà¥à¤¥à¤¿à¤¤à¤¿ पर लानॊ" इ बदलाव कॆ वापस लॆ जाय कॆ संपादन परà¥à¤šà¤¾ कॆ à¤à¤²à¤• रीति मॆं दिखलाबै छै.
+à¤à¤•à¤°à¥Š जरिया सारांश मॆं पà¥à¤°à¤¾à¤¨à¥Š सà¥à¤¥à¤¿à¤¤à¤¿ मॆं लानै के कारण लिखलॊ जाबॆ पारॆ.',
+
+# Browsing diffs
+'previousdiff' => ' पà¥à¤°à¤¾à¤¨à¤¾ संपादन',
+'nextdiff' => 'टटका संपादन',
+
+# Media information
+'file-info-size' => '$1 × $2 चितà¥à¤°à¤¤à¤¤à¥à¤µ, संचिका के आकार: $3, MIME पà¥à¤°à¤•à¤¾à¤°: $4',
+'file-nohires' => '<small>सॆं जà¥à¤¯à¤¾à¤¦à¤¾ रिज़ोलà¥à¤¯à¥‚शन उपलबà¥à¤§ नै छै.</small>',
+'svg-long-desc' => 'SVG फ़ाईल, साधारणत: $1 × $2 पीकà¥à¤¸à¥‡à¤²à¥à¤¸, फ़ाईल केरॊ आकार: $3',
+'show-big-image' => 'संपूरà¥à¤£ रिजोलà¥à¤¯à¥‚शन',
+
+# Bad image list
+'bad_image_list' => 'फोरà¥à¤®à¥‡à¤Ÿ निमà¥à¤¨ अनà¥à¤¸à¤¾à¤° छै:
+खाली सूची सामगà¥à¤°à¥€ (* सॆं शà¥à¤°à¥ होय वाला पंकà¥à¤¤à¤¿ ) चà¥à¤¨à¤²à¥Š जैतै.
+पंकà¥à¤¤à¤¿ पर पहिला लिंक à¤à¤—ो खराब फाईल के साथ जà¥à¤¡à¤¼à¤² होना चाहियॊ.
+कोय भी बाद वाला लिंक ओही पंकà¥à¤¤à¤¿ पर अईला पर ओकरा अपवाद मानलॊ जैतै, अरà¥à¤¥à¤¾à¤¤ वू पनà¥à¤¨à¤¾ जेकरॊ अंदर इ फाईल जà¥à¤™à¤²à¥Š हà¥à¤Ž सकॆ छै.',
+
+# Metadata
+'metadata' => 'मेटाडाटा',
+'metadata-help' => 'इ फ़ाईल मॆ अतिरिकà¥à¤¤ जानकारी छै, हà¥à¤Ž सकॆ छै कि इ फ़ाईल बनाबै मॆं इसà¥à¤¤à¥‡à¤®à¤¾à¤² करलॊ गेलॊ सà¥à¤•à¥ˆà¤¨à¤° अथवा कैमरा सॆं इ पà¥à¤°à¤¾à¤ªà¥à¤¤ होलॊ हà¥à¤’. अगर इ फ़ाईल बदली देलॊ गेलॊ छै तॆ ई जानकारी नया फ़ाईल सॆं मेल नै खाबै के आशंका छै.',
+'metadata-expand' => 'अतिरिकà¥à¤¤ जानकारी दिखाबॊ',
+'metadata-collapse' => 'विसà¥à¤¤à¤¾à¤°à¤¿à¤¤ जानकारी छà¥à¤ªà¤¾à¤¬à¥Š',
+'metadata-fields' => 'इ सूची मॆं देलॊ गेलॊ जानकारी फ़ाईल केरॊ नीचे मेटाडाटा जानकारी मॆं हमेशा दिखतै.
+बचलॊ जानकारी हमेशा छà¥à¤ªà¤²à¥Š रहतै
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
+# External editor support
+'edit-externally' => 'बाहरी पà¥à¤°à¤£à¤¾à¤²à¥€ केरॊ इसà¥à¤¤à¥‡à¤®à¤¾à¤² करतें इ फ़ाईल कॆ संपादित करॊ.',
+'edit-externally-help' => '(आरू जानकारी लेली[//www.mediawiki.org/wiki/Manual:External_editors जमाव निरà¥à¤¦à¥‡à¤¶] देखॊ)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'सबà¥à¤­à¥‡',
+'namespacesall' => 'सबà¥à¤­à¥‡',
+'monthsall' => 'सबà¥à¤­à¥‡',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'पà¥à¤°à¤¾à¤¸à¤‚गिक बदलाव देखॊ',
+'watchlisttools-edit' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची देखॊ आरू संपादित करॊ.',
+'watchlisttools-raw' => 'अनिरà¥à¤®à¤¿à¤¤ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची देखॊ à¤à¤µà¤®à¥â€Œ संपादित करॊ',
+
+# Special:SpecialPages
+'specialpages' => 'खास पनà¥à¤¨à¤¾',
+
+);
diff --git a/languages/messages/MessagesAr.php b/languages/messages/MessagesAr.php
index 9d461a2e..4cd2795c 100644
--- a/languages/messages/MessagesAr.php
+++ b/languages/messages/MessagesAr.php
@@ -28,6 +28,7 @@
* @author Lord Anubis
* @author MK
* @author Majid Al-Dharrab
+ * @author Malhargan
* @author Menasim
* @author Meno25
* @author Mido
@@ -58,12 +59,6 @@ $linkPrefixExtension = true;
$fallback8bitEncoding = 'windows-1256';
$rtl = true;
-$defaultUserOptionOverrides = array(
- # Swap sidebar to right side by default
- 'quickbar' => 2,
- # Underlines seriously harm legibility. Force off:
- 'underline' => 0,
-);
/**
* A list of date format preference keys which can be selected in user
@@ -172,6 +167,17 @@ $namespaceAliases = array(
'نقاش_الصورة' => NS_FILE_TALK,
);
+$namespaceGenderAliases = array(
+ NS_USER => array(
+ 'male' => 'مستخدم',
+ 'female' => 'مستخدمة'
+ ),
+ NS_USER_TALK => array(
+ 'male' => 'نقاش_المستخدم',
+ 'female' => 'نقاش_المستخدمة'
+ ),
+);
+
$magicWords = array(
'redirect' => array( '0', '#تحويل', '#REDIRECT' ),
'notoc' => array( '0', '__لاÙهرس__', '__NOTOC__' ),
@@ -324,100 +330,102 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'تحويلات_مزدوجة' ),
+ 'Activeusers' => array( 'مستخدمون_نشطون' ),
+ 'Allmessages' => array( 'كل_الرسائل' ),
+ 'Allpages' => array( 'كل_الصÙحات' ),
+ 'Ancientpages' => array( 'صÙحات_قديمة' ),
+ 'Blankpage' => array( 'صÙحة_Ùارغة' ),
+ 'Block' => array( 'منع', 'منع_أيبي', 'منع_مستخدم' ),
+ 'Blockme' => array( 'منعي' ),
+ 'Booksources' => array( 'مصادر_كتاب' ),
'BrokenRedirects' => array( 'تحويلات_مكسورة' ),
- 'Disambiguations' => array( 'توضيحات' ),
- 'Userlogin' => array( 'دخول_المستخدم' ),
- 'Userlogout' => array( 'خروج_المستخدم' ),
+ 'Categories' => array( 'تصنيÙات' ),
+ 'ChangePassword' => array( 'تغيير_كلمة_السر', 'ضبط_كلمة_السر' ),
+ 'ComparePages' => array( 'مقارنة_الصÙحات' ),
+ 'Confirmemail' => array( 'تأكيد_البريد' ),
+ 'Contributions' => array( 'مساهمات' ),
'CreateAccount' => array( 'إنشاء_حساب' ),
- 'Preferences' => array( 'تÙضيلات' ),
- 'Watchlist' => array( 'قائمة_المراقبة' ),
- 'Recentchanges' => array( 'أحدث_التغييرات' ),
- 'Upload' => array( 'رÙع' ),
- 'UploadStash' => array( 'رÙع_مخÙÙŠ' ),
+ 'Deadendpages' => array( 'صÙحات_نهاية_مسدودة' ),
+ 'DeletedContributions' => array( 'مساهمات_محذوÙØ©' ),
+ 'Disambiguations' => array( 'توضيحات' ),
+ 'DoubleRedirects' => array( 'تحويلات_مزدوجة' ),
+ 'EditWatchlist' => array( 'تعديل_قائمة_المراقبة' ),
+ 'Emailuser' => array( 'مراسلة_المستخدم' ),
+ 'Export' => array( 'تصدير' ),
+ 'Fewestrevisions' => array( 'الأقل_تعديلا' ),
+ 'FileDuplicateSearch' => array( 'بحث_ملÙ_مكرر' ),
+ 'Filepath' => array( 'مسار_ملÙ' ),
+ 'Import' => array( 'استيراد' ),
+ 'Invalidateemail' => array( 'تعطيل_البريد_الإلكتروني' ),
+ 'BlockList' => array( 'قائمة_المنع', 'عرض_المنع', 'قائمة_منع_أيبي' ),
+ 'LinkSearch' => array( 'بحث_الوصلات' ),
+ 'Listadmins' => array( 'عرض_الإداريين' ),
+ 'Listbots' => array( 'عرض_البوتات' ),
'Listfiles' => array( 'عرض_الملÙات', 'قائمة_الملÙات', 'قائمة_الصور' ),
- 'Newimages' => array( 'ملÙات_جديدة', 'صور_جديدة' ),
- 'Listusers' => array( 'عرض_المستخدمين', 'قائمة_المستخدمين' ),
'Listgrouprights' => array( 'عرض_صلاحيات_المجموعات', 'صلاحيات_مجموعات_المستخدمين' ),
- 'Statistics' => array( 'إحصاءات' ),
- 'Randompage' => array( 'عشوائي', 'صÙحة_عشوائية' ),
+ 'Listredirects' => array( 'عرض_التحويلات' ),
+ 'Listusers' => array( 'عرض_المستخدمين', 'قائمة_المستخدمين' ),
+ 'Lockdb' => array( 'غلق_قب' ),
+ 'Log' => array( 'سجل', 'سجلات' ),
'Lonelypages' => array( 'صÙحات_وحيدة', 'صÙحات_يتيمة' ),
- 'Uncategorizedpages' => array( 'صÙحات_غير_مصنÙØ©' ),
- 'Uncategorizedcategories' => array( 'تصنيÙات_غير_مصنÙØ©' ),
- 'Uncategorizedimages' => array( 'ملÙات_غير_مصنÙØ©', 'صور_غير_مصنÙØ©' ),
- 'Uncategorizedtemplates' => array( 'قوالب_غير_مصنÙØ©' ),
- 'Unusedcategories' => array( 'تصنيÙات_غير_مستخدمة' ),
- 'Unusedimages' => array( 'ملÙات_غير_مستخدمة', 'صور_غير_مستخدمة' ),
- 'Wantedpages' => array( 'صÙحات_مطلوبة', 'وصلات_مكسورة' ),
- 'Wantedcategories' => array( 'تصنيÙات_مطلوبة' ),
- 'Wantedfiles' => array( 'ملÙات_مطلوبة' ),
- 'Wantedtemplates' => array( 'قوالب_مطلوبة' ),
+ 'Longpages' => array( 'صÙحات_طويلة' ),
+ 'MergeHistory' => array( 'دمج_التاريخ' ),
+ 'MIMEsearch' => array( 'بحث_ميم' ),
+ 'Mostcategories' => array( 'الأكثر_تصنيÙا' ),
+ 'Mostimages' => array( 'أكثر_الملÙات_وصلا', 'أكثر_الملÙات', 'أكثر_الصور' ),
'Mostlinked' => array( 'أكثر_الصÙحات_وصلا', 'الأكثر_وصلا' ),
'Mostlinkedcategories' => array( 'أكثر_التصنيÙات_وصلا', 'أكثر_التصنيÙات_استخداما' ),
'Mostlinkedtemplates' => array( 'أكثر_القوالب_وصلا', 'أكثر_القوالب_استخداما' ),
- 'Mostimages' => array( 'أكثر_الملÙات_وصلا', 'أكثر_الملÙات', 'أكثر_الصور' ),
- 'Mostcategories' => array( 'الأكثر_تصنيÙا' ),
'Mostrevisions' => array( 'الأكثر_تعديلا' ),
- 'Fewestrevisions' => array( 'الأقل_تعديلا' ),
- 'Shortpages' => array( 'صÙحات_قصيرة' ),
- 'Longpages' => array( 'صÙحات_طويلة' ),
+ 'Movepage' => array( 'نقل_صÙحة' ),
+ 'Mycontributions' => array( 'مساهماتي' ),
+ 'Mypage' => array( 'صÙحتي' ),
+ 'Mytalk' => array( 'نقاشي' ),
+ 'Myuploads' => array( 'رÙوعاتي' ),
+ 'Newimages' => array( 'ملÙات_جديدة', 'صور_جديدة' ),
'Newpages' => array( 'صÙحات_جديدة' ),
- 'Ancientpages' => array( 'صÙحات_قديمة' ),
- 'Deadendpages' => array( 'صÙحات_نهاية_مسدودة' ),
+ 'PasswordReset' => array( 'إعادة_ضبط_كلمة_السر' ),
+ 'PermanentLink' => array( 'وصلة_دائمة', 'رابط_دائم' ),
+ 'Popularpages' => array( 'صÙحات_مشهورة' ),
+ 'Preferences' => array( 'تÙضيلات' ),
+ 'Prefixindex' => array( 'Ùهرس_بادئة' ),
'Protectedpages' => array( 'صÙحات_محمية' ),
'Protectedtitles' => array( 'عناوين_محمية' ),
- 'Allpages' => array( 'كل_الصÙحات' ),
- 'Prefixindex' => array( 'Ùهرس_بادئة' ),
- 'Ipblocklist' => array( 'قائمة_المنع', 'عرض_المنع', 'قائمة_منع_أيبي' ),
- 'Unblock' => array( 'رÙع_منع' ),
- 'Specialpages' => array( 'صÙحات_خاصة' ),
- 'Contributions' => array( 'مساهمات' ),
- 'Emailuser' => array( 'مراسلة_المستخدم' ),
- 'Confirmemail' => array( 'تأكيد_البريد' ),
- 'Whatlinkshere' => array( 'ماذا_يصل_هنا' ),
+ 'Randompage' => array( 'عشوائي', 'صÙحة_عشوائية' ),
+ 'Randomredirect' => array( 'تحويلة_عشوائية' ),
+ 'Recentchanges' => array( 'أحدث_التغييرات' ),
'Recentchangeslinked' => array( 'أحدث_التغييرات_الموصولة', 'تغييرات_مرتبطة' ),
- 'Movepage' => array( 'نقل_صÙحة' ),
- 'Blockme' => array( 'منعي' ),
- 'Booksources' => array( 'مصادر_كتاب' ),
- 'Categories' => array( 'تصنيÙات' ),
- 'Export' => array( 'تصدير' ),
- 'Version' => array( 'نسخة' ),
- 'Allmessages' => array( 'كل_الرسائل' ),
- 'Log' => array( 'سجل', 'سجلات' ),
- 'Blockip' => array( 'منع', 'منع_أيبي', 'منع_مستخدم' ),
+ 'Revisiondelete' => array( 'حذÙ_مراجعة' ),
+ 'RevisionMove' => array( 'نقل_مراجعة' ),
+ 'Search' => array( 'بحث' ),
+ 'Shortpages' => array( 'صÙحات_قصيرة' ),
+ 'Specialpages' => array( 'صÙحات_خاصة' ),
+ 'Statistics' => array( 'إحصاءات' ),
+ 'Tags' => array( 'وسوم' ),
+ 'Unblock' => array( 'رÙع_منع' ),
+ 'Uncategorizedcategories' => array( 'تصنيÙات_غير_مصنÙØ©' ),
+ 'Uncategorizedimages' => array( 'ملÙات_غير_مصنÙØ©', 'صور_غير_مصنÙØ©' ),
+ 'Uncategorizedpages' => array( 'صÙحات_غير_مصنÙØ©' ),
+ 'Uncategorizedtemplates' => array( 'قوالب_غير_مصنÙØ©' ),
'Undelete' => array( 'استرجاع' ),
- 'Import' => array( 'استيراد' ),
- 'Lockdb' => array( 'غلق_قب' ),
'Unlockdb' => array( 'Ùتح_قب' ),
- 'Userrights' => array( 'صلاحيات_المستخدم', 'ترقية_مدير_نظام', 'ترقية_بوت' ),
- 'MIMEsearch' => array( 'بحث_ميم' ),
- 'FileDuplicateSearch' => array( 'بحث_ملÙ_مكرر' ),
- 'Unwatchedpages' => array( 'صÙحات_غير_مراقبة' ),
- 'Listredirects' => array( 'عرض_التحويلات' ),
- 'Revisiondelete' => array( 'حذÙ_مراجعة' ),
+ 'Unusedcategories' => array( 'تصنيÙات_غير_مستخدمة' ),
+ 'Unusedimages' => array( 'ملÙات_غير_مستخدمة', 'صور_غير_مستخدمة' ),
'Unusedtemplates' => array( 'قوالب_غير_مستخدمة' ),
- 'Randomredirect' => array( 'تحويلة_عشوائية' ),
- 'Mypage' => array( 'صÙحتي' ),
- 'Mytalk' => array( 'نقاشي' ),
- 'Mycontributions' => array( 'مساهماتي' ),
- 'Myuploads' => array( 'رÙوعاتي' ),
- 'Listadmins' => array( 'عرض_الإداريين' ),
- 'Listbots' => array( 'عرض_البوتات' ),
- 'Popularpages' => array( 'صÙحات_مشهورة' ),
- 'Search' => array( 'بحث' ),
- 'Resetpass' => array( 'تغيير_كلمة_السر', 'ضبط_كلمة_السر' ),
+ 'Unwatchedpages' => array( 'صÙحات_غير_مراقبة' ),
+ 'Upload' => array( 'رÙع' ),
+ 'UploadStash' => array( 'رÙع_مخÙÙŠ' ),
+ 'Userlogin' => array( 'دخول_المستخدم' ),
+ 'Userlogout' => array( 'خروج_المستخدم' ),
+ 'Userrights' => array( 'صلاحيات_المستخدم', 'ترقية_مدير_نظام', 'ترقية_بوت' ),
+ 'Version' => array( 'نسخة' ),
+ 'Wantedcategories' => array( 'تصنيÙات_مطلوبة' ),
+ 'Wantedfiles' => array( 'ملÙات_مطلوبة' ),
+ 'Wantedpages' => array( 'صÙحات_مطلوبة', 'وصلات_مكسورة' ),
+ 'Wantedtemplates' => array( 'قوالب_مطلوبة' ),
+ 'Watchlist' => array( 'قائمة_المراقبة' ),
+ 'Whatlinkshere' => array( 'ماذا_يصل_هنا' ),
'Withoutinterwiki' => array( 'بدون_إنترويكي' ),
- 'MergeHistory' => array( 'دمج_التاريخ' ),
- 'Filepath' => array( 'مسار_ملÙ' ),
- 'Invalidateemail' => array( 'تعطيل_البريد_الإلكتروني' ),
- 'Blankpage' => array( 'صÙحة_Ùارغة' ),
- 'LinkSearch' => array( 'بحث_الوصلات' ),
- 'DeletedContributions' => array( 'مساهمات_محذوÙØ©' ),
- 'Tags' => array( 'وسوم' ),
- 'Activeusers' => array( 'مستخدمون_نشطون' ),
- 'ComparePages' => array( 'مقارنة_الصÙحات' ),
- 'Badtitle' => array( 'عوان_سئ' ),
- 'DisableAccount' => array( 'تعطيل_الحساب' ),
);
/**
@@ -467,8 +475,8 @@ $messages = array(
'tog-shownumberswatching' => 'اعرض عدد المستخدمين المراقبين',
'tog-oldsig' => 'التوقيع الحالي:',
'tog-fancysig' => 'عامل التوقيع كنص ويكي (بدون وصلة أوتوماتيكية)',
-'tog-externaleditor' => 'استخدم محررا خارجيا بشكل اÙتراضي (للخبراء Ùقط، يحتاج إعدادات خاصة على حاسوبك) ([http://www.mediawiki.org/wiki/Manual:External_editors مزيد من المعلومات.])',
-'tog-externaldiff' => 'استخدم Ùرقا خارجيا بشكل اÙتراضي (للخبراء Ùقط، يحتاج إعدادات خاصة على حاسوبك) ([http://www.mediawiki.org/wiki/Manual:External_editors للمزيد من المعلومات.])',
+'tog-externaleditor' => 'استخدم محررا خارجيا بشكل اÙتراضي (للخبراء Ùقط، يحتاج إعدادات خاصة على حاسوبك) ([//www.mediawiki.org/wiki/Manual:External_editors مزيد من المعلومات.])',
+'tog-externaldiff' => 'استخدم Ùرقا خارجيا بشكل اÙتراضي (للخبراء Ùقط، يحتاج إعدادات خاصة على حاسوبك) ([//www.mediawiki.org/wiki/Manual:External_editors للمزيد من المعلومات.])',
'tog-showjumplinks' => 'مكن وصلات "اذهب إلى" المساعدة',
'tog-uselivepreview' => 'استخدم الاستعراض السريع (جاÙاسكريبت) (تجريبي)',
'tog-forceeditsummary' => 'نبهني عند إدخال ملخص تعديل Ùارغ',
@@ -550,7 +558,7 @@ $messages = array(
# Categories related messages
'pagecategories' => '{{PLURAL:$1|لا تصانيÙ|التصنيÙ|التصنيÙان|التصنيÙات}}',
-'category_header' => 'الصÙحات ÙÙŠ التصني٠"$1"',
+'category_header' => 'صÙحات تصني٠"$1"',
'subcategories' => 'التصنيÙات الÙرعية',
'category-media-header' => 'الوسائط ÙÙŠ التصني٠"$1"',
'category-empty' => "''هذا التصني٠لا يحتوي حاليا على صÙحات أو وسائط.''",
@@ -561,19 +569,11 @@ $messages = array(
'category-article-count' => '{{PLURAL:$2|لا يحتوي هذا التصني٠أي صÙحات.|هذا التصني٠يحتوي على الصÙحة التالية Ùقط.|{{PLURAL:$1||الصÙحة التالية|الصÙحتان التاليتان|ال$1 صÙحات التالية|ال$1 صÙحة التالية|ال$1 صÙحة التالية}} ÙÙŠ هذا التصنيÙØŒ من إجمالي $2.}}',
'category-article-count-limited' => '{{PLURAL:$1||الصÙحة التالية|الصÙحتان التاليتان|ال$1 صÙحات التالية|ال$1 صÙحة التالية|ال$1 صÙحة التالية}} ÙÙŠ التصني٠الحالي.',
'category-file-count' => '{{PLURAL:$2|هذا التصني٠يحتوي Ùقط على المل٠التالي.|{{PLURAL:$1|الملÙ|ال$1 ملÙ}} التالية ÙÙŠ هذا التصنيÙØŒ من إجمالي $2.}}',
-'category-file-count-limited' => 'بالأسÙÙ„ {{PLURAL:$1|ملÙ|$1 ملÙ}} ÙÙŠ التصني٠الحالي.',
+'category-file-count-limited' => '{{PLURAL:$1|المل٠التالي|الملÙان التاليان|ال$1 ملÙات التالية|ال$1 ملÙًا تاليًا|ال$1 مل٠تالÙ}}) ÙÙŠ التصني٠الحالي.',
'listingcontinuesabbrev' => 'متابعة',
'index-category' => 'صÙحات Ù…Ùهرسة',
'noindex-category' => 'صÙحات غير Ù…Ùهرسة',
-
-'mainpagetext' => "'''تم تثبيت ميدياويكي بنجاح.'''",
-'mainpagedocfooter' => 'استشر [http://meta.wikimedia.org/wiki/Help:Contents دليل المستخدم] لمعلومات حول استخدام برنامج الويكي.
-
-== البداية ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings قائمة إعدادات الضبط]
-* [http://www.mediawiki.org/wiki/Manual:FAQ أسئلة متكررة حول ميدياويكي]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce القائمة البريدية الخاصة بإصدار ميدياويكي]',
+'broken-file-category' => 'صÙحات تحتوي وصلات ملÙات معطوبة',
'about' => 'عن',
'article' => 'صÙحة محتوى',
@@ -625,10 +625,10 @@ $messages = array(
'history' => 'تاريخ الصÙحة',
'history_short' => 'تاريخ',
'updatedmarker' => 'تم تحديثها منذ زيارتي الأخيرة',
-'info_short' => 'معلومات',
'printableversion' => 'نسخة للطباعة',
'permalink' => 'وصلة دائمة',
'print' => 'اطبع',
+'view' => 'عرض',
'edit' => 'عدل',
'create' => 'أنشئ',
'editthispage' => 'عدل هذه الصÙحة',
@@ -636,6 +636,7 @@ $messages = array(
'delete' => 'احذÙ',
'deletethispage' => 'احذ٠هذه الصÙحة',
'undelete_short' => 'استرجاع {{PLURAL:$1|تعديل واحد|تعديلين|$1 تعديلات|$1 تعديل|$1 تعديلا}}',
+'viewdeleted_short' => 'عرض {{PLURAL:$1|تعديل محذوÙ|$1 تعديلات محذوÙØ©}}',
'protect' => 'احم',
'protect_change' => 'غير',
'protectthispage' => 'احم هذه الصÙحة',
@@ -719,6 +720,8 @@ $1',
'toc' => 'محتويات',
'showtoc' => 'اعرض',
'hidetoc' => 'أخÙ',
+'collapsible-collapse' => 'اطو',
+'collapsible-expand' => 'وسع',
'thisisdeleted' => 'أأعرض أو أسترجع $1؟',
'viewdeleted' => 'أأعرض $1؟',
'restorelink' => '{{PLURAL:$1|$1 تعديل محذوÙ|تعديلا واحدا محذوÙا|تعديلين محذوÙين|$1 تعديلات محذوÙØ©|$1 تعديلا محذوÙا|$1 تعديلا محذوÙا}}',
@@ -732,6 +735,8 @@ $1',
'feed-atom' => 'أتوم',
'feed-rss' => 'أر إس إس',
'red-link-title' => '$1 (الصÙحة غير موجودة)',
+'sort-descending' => 'ترتيب تنازلي',
+'sort-ascending' => 'ترتيب تصاعدي',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'صÙحة',
@@ -819,12 +824,13 @@ $1',
'protectedinterface' => 'هذه الصÙحة توÙر نص الواجهة للبرنامج، وهي مقÙلة لمنع التخريب.',
'editinginterface' => "'''تحذير:''' أنت تقوم بتحرير صÙحة تستخدم ÙÙŠ الواجهة النصية للبرنامج.
سو٠تؤثر التغييرات على هذه الصÙحة على مظهر واجهة المستخدم للمستخدمين الآخرين.
-للترجمات، من Ùضلك استخدم مشروع ترجمة ميدياويكي [http://translatewiki.net/wiki/Main_Page?setlang=ar translatewiki.net].",
+للترجمات، من Ùضلك استخدم مشروع ترجمة ميدياويكي [//translatewiki.net/wiki/Main_Page?setlang=ar translatewiki.net].",
'sqlhidden' => '(استعلام SQL مخÙÙŠ)',
'cascadeprotected' => 'تمت حماية هذه الصÙحة من التعديل لأنها مدمجة ÙÙŠ {{PLURAL:$1||الصÙحة التالية، والتي|الصÙحتين التاليتين، واللتين|الصÙحات التالية، والتي}} تم استعمال خاصية "حماية الصÙحات المدمجة" {{PLURAL:$1||بها|بهما|بها}}:
$2',
'namespaceprotected' => "لا تمتلك الصلاحية لتعديل الصÙحات ÙÙŠ نطاق '''$1'''.",
-'customcssjsprotected' => 'لا تمتلك الصلاحية لتعديل هذه الصÙحة، لأنها تحتوي على الإعدادات الشخصية لمستخدم آخر.',
+'customcssprotected' => 'أنت لا تمتلك السماح لتعديل صÙحة الCSS هذه، لأنها تحتوي على الإعدادات الشخصية لمستخدم آخر.',
+'customjsprotected' => 'أنت لا تمتلك السماح لتعديل صÙحة الجاÙاسكريبت هذه، لأنها تحتوي على الإعدادات الشخصية لمستخدم آخر.',
'ns-specialprotected' => 'الصÙحات الخاصة لا يمكن تعديلها.',
'titleprotected' => "{{GENDER:$1|حمى|حمت}} [[User:$1|$1]] هذا العنوان من الإنشاء.
السبب المعطى هو ''$2''.",
@@ -862,6 +868,7 @@ $2',
'createaccount' => 'أنشئ حسابا',
'gotaccount' => "تمتلك حسابا بالÙعل؟ '''$1'''.",
'gotaccountlink' => 'Ù„Ùج',
+'userlogin-resetlink' => 'أنسيت بيانات الولوج؟',
'createaccountmail' => 'بواسطة البريد الإلكتروني',
'createaccountreason' => 'السبب:',
'badretype' => 'كلمات السر التي أدخلتها لا تتطابق.',
@@ -876,13 +883,15 @@ $2',
'nocookieslogin' => 'يستخدم {{SITENAME}} الكوكيز لتسجيل الدخول.
الكوكيز معطلة لديك.
من Ùضلك Ùعلها ثم حاول مرة أخرى.',
+'nocookiesfornew' => 'لم يتم إنشاء حساب المستخدم ، ونحن لا يستطيع تأكيد مصدره.
+تأكد من أن ملÙات تعري٠الارتباط (كوكيز) Ù…Ùعلة، ثم أعد تحديث الصÙحة وحاول مرة أخرى.',
'noname' => 'لم تحدد اسم مستخدم صحيح.',
'loginsuccesstitle' => 'تم الدخول بشكل صحيح',
'loginsuccess' => "'''لقد قمت بتسجيل الدخول ل{{SITENAME}} باسم \"\$1\".'''",
'nosuchuser' => 'لا يوجد مستخدم بالاسم "$1".
أسماء المستخدمين حساسة لحالة الحروÙ.
تأكد من إملاء الاسم، أو [[Special:UserLogin/signup|قم بإنشاء حساب جديد]].',
-'nosuchusershort' => 'لا يوجد مستخدم باسم <nowiki>$1</nowiki>".
+'nosuchusershort' => 'لا يوجد مستخدم باسم $1".
تأكد من إملاء الاسم.',
'nouserspecified' => 'يجب عليك تحديد اسم مستخدم.',
'login-userblocked' => 'هذا المستخدم ممنوع. لا يسمح بالولوج.',
@@ -930,13 +939,14 @@ $2',
'usernamehasherror' => 'لا يمكن أن يحتوي اسم المستخدم على محار٠هاش',
'login-throttled' => 'لقد قمت بمحاولات دخول كثيرة جدا مؤخرا.
من Ùضلك انتظر قبل المحاولة مرة أخرى.',
+'login-abort-generic' => 'لم ينجح ولوجك - إجهاض',
'loginlanguagelabel' => 'اللغة: $1',
'suspicious-userlogout' => 'رÙض طلب خروجك لأنه يبدو كأنه أرسل عن طريق متصÙØ­ معطوب أو وسيط تخزين.',
# E-mail sending
'php-mail-error-unknown' => "خطأ غير معرو٠ÙÙŠ وظيÙØ© البريد PHP's mail()",
-# Password reset dialog
+# Change password dialog
'resetpass' => 'تغيير كلمة السر',
'resetpass_announce' => 'تم تسجيل دخولك بكلمة سر مؤقتة.
للدخول بشكل نهائي، يجب عليك ضبط كلمة سر جديدة هنا:',
@@ -955,6 +965,34 @@ $2',
ربما تكون غيرت كلمة السر الخاصة بك بنجاح أو طلبت كلمة سر مؤقتة جديدة.',
'resetpass-temp-password' => 'كلمة سر مؤقتة:',
+# Special:PasswordReset
+'passwordreset' => 'تمت إعادة ضبط كلمة السر',
+'passwordreset-text' => 'أكمل هذا النموذج لتتلقى بريدا إلكترونيا يذكر بتÙاصيل حسابك.',
+'passwordreset-legend' => 'إعادة تعيين كلمة السر',
+'passwordreset-disabled' => 'عÙطّلت إعادة تعيين كلمة السر على هذه الويكي.',
+'passwordreset-pretext' => '{{PLURAL:$1||أدخل أحد أجزاء البيانات أدناه}}',
+'passwordreset-username' => 'اسم المستخدم:',
+'passwordreset-domain' => 'النطاق:',
+'passwordreset-email' => 'عنوان البريد الإلكتروني:',
+'passwordreset-emailtitle' => 'تÙاصيل حساب {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'احد ما (قد يكون انت$1)طلب مذكرة تÙاصيل الحساب Ù„{{SITENAME}} ($4).المستخدم الاتي {{PLURAL:$3|الحساب هو|الحسابات هي}} قد قرن بهذا العنوان :
+
+$2
+
+{{PLURAL:$3|كلمة المرور المؤقتة|كلمات المرور المؤقة}}سينتهي ÙÙŠ {{PLURAL:$5|يوم|ايام$5 }}
+من الاÙضل ان تسجل الدخول وتختار كلمة مرور جديدة الان .
+إذا قام شخص آخر بهذا الطلب، أو إذا تذكرت كلمة المرور الأصلية الخاصة بك،ولم تعد ترغب ÙÙŠ تغييره، يمكنك تجاهل هذه الرسالة ومتابعة استخدام كلمة المرورالقديمة.',
+'passwordreset-emailtext-user' => 'احد ما (قد يكون انت$1)طلب مذكرة تÙاصيل الحساب Ù„{{SITENAME}} ($4).المستخدم الاتي {{PLURAL:$3|الحساب هو|الحسابات هي}} قد قرن بهذا العنوان :
+
+$2
+
+{{PLURAL:$3|كلمة المرور المؤقتة|كلمات المرور المؤقة}}سينتهي ÙÙŠ {{PLURAL:$5|يوم|ايام$5 }}
+من الاÙضل ان تسجل الدخول وتختار كلمة مرور جديدة الان .
+إذا قام شخص آخر بهذا الطلب، أو إذا تذكرت كلمة المرور الأصلية الخاصة بك،ولم تعد ترغب ÙÙŠ تغييره، يمكنك تجاهل هذه الرسالة ومتابعة استخدام كلمة المرورالقديمة.',
+'passwordreset-emailelement' => 'اسم المستخدم: $1
+كلمة السر المؤقتة: $2',
+'passwordreset-emailsent' => 'أرسل بريد إلكتروني تذكيري',
+
# Edit page toolbar
'bold_sample' => 'نص غليظ',
'bold_tip' => 'نص غليظ',
@@ -966,8 +1004,6 @@ $2',
'extlink_tip' => 'وصلة خارجية (تذكر بادئة http://)',
'headline_sample' => 'نص عنوان رئيسي',
'headline_tip' => 'عنوان من المستوى الثاني',
-'math_sample' => 'أدخل الصيغة هنا',
-'math_tip' => 'صيغة رياضية (لا تك)',
'nowiki_sample' => 'أدخل النص غير المنسق هنا',
'nowiki_tip' => 'أهمل تهيئة الويكي',
'image_tip' => 'مل٠مدرج',
@@ -1054,7 +1090,7 @@ $2',
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} البحث ÙÙŠ السجلات المتعلقة]ØŒ
أو [{{fullurl:{{FULLPAGENAME}}|action=edit}} تعديل هذه الصÙحة]</span>.',
'noarticletext-nopermission' => 'لا يوجد حاليا أي نص ÙÙŠ هذه الصÙحة.يمكنك [[Special:Search/{{PAGENAME}}|البحث عن عنوان هذه الصÙحة]] ÙÙŠ الصÙحات الأخرى,أو <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} بحث السجلات المتصلة]</span>.',
-'userpage-userdoesnotexist' => 'حساب المستخدم "$1" غير مسجل.
+'userpage-userdoesnotexist' => 'حساب المستخدم "<nowiki>$1</nowiki>" غير مسجل.
من Ùضلك تأكد أنك تريد إنشاء/تعديل هذه الصÙحة.',
'userpage-userdoesnotexist-view' => 'حساب المستخدم "$1" غير مسجل.',
'blocked-notice-logextract' => 'هذا المستخدم ممنوع حاليا.
@@ -1094,6 +1130,7 @@ $2',
'token_suffix_mismatch' => "'''تعديلك تم رÙضه لأن عميلك أخطأ ÙÙŠ علامات الترقيم
ÙÙŠ نص التعديل. تم رÙض التعديل لمنع Ùساد نص المقالة.
هذا يحدث أحيانا عندما تستخدم خدمة بروكسي مجهول معيبة مبنية على الوب.'''",
+'edit_form_incomplete' => "'''بعض أجزاء من نموذج التعديل لم تصل إلى الخادم؛ تأكد من أن تعديلاتك لم تمس وحاول مجددا.'''",
'editing' => 'تحرير $1',
'editingsection' => 'تحرير $1 (قسم)',
'editingcomment' => 'تعديل $1 (قسم جديد)',
@@ -1333,8 +1370,8 @@ $1",
# Suppression log
'suppressionlog' => 'سجل الإخÙاء',
-'suppressionlogtext' => 'بالأسÙÙ„ قائمة بعمليات الحذ٠والمنع التي تتضمن محتوى مخÙÙŠ من الإداريين.
-انظر [[Special:IPBlockList|لقائمة المنع]] لترى عمليات المنع القائمة الآن.',
+'suppressionlogtext' => 'بالأسÙÙ„ قائمة بعمليات الحذ٠والمنع التي تتضمن محتوى مخÙيا عن الإداريين.
+انظر [[Special:BlockList|قائمة منع الآيبي]] لترى عمليات المنع القائمة الآن.',
# History merging
'mergehistory' => 'دمج تواريخ الصÙحة',
@@ -1446,12 +1483,13 @@ $1",
لاحظ أن Ùهارسه لمحتوى {{SITENAME}} ربما تكون غير محدثة.',
# Quickbar
-'qbsettings' => 'لوح سريع',
-'qbsettings-none' => 'بلا تحديد',
-'qbsettings-fixedleft' => 'مثبت لليسار',
-'qbsettings-fixedright' => 'مثبت لليمين',
-'qbsettings-floatingleft' => 'حر لليسار',
-'qbsettings-floatingright' => 'حر لليمين',
+'qbsettings' => 'لوح سريع',
+'qbsettings-none' => 'بلا تحديد',
+'qbsettings-fixedleft' => 'مثبت لليسار',
+'qbsettings-fixedright' => 'مثبت لليمين',
+'qbsettings-floatingleft' => 'حر لليسار',
+'qbsettings-floatingright' => 'حر لليمين',
+'qbsettings-directionality' => 'ثابت، بناءً على اتجاه كتابة لغتك',
# Preferences page
'preferences' => 'تÙضيلات',
@@ -1462,9 +1500,10 @@ $1",
'changepassword' => 'غير كلمة السر',
'prefs-skin' => 'واجهة',
'skin-preview' => 'عاين',
-'prefs-math' => 'رياضيات',
'datedefault' => 'لا تÙضيل',
+'prefs-beta' => 'مزايا بيتا',
'prefs-datetime' => 'وقت وتاريخ',
+'prefs-labs' => 'مزايا Ù…Ùختَبرية',
'prefs-personal' => 'مل٠المستخدم',
'prefs-rc' => 'أحدث التغييرات',
'prefs-watchlist' => 'قائمة المراقبة',
@@ -1486,8 +1525,6 @@ $1",
'columns' => 'أعمدة:',
'searchresultshead' => 'ابحث',
'resultsperpage' => 'عدد النتائج ÙÙŠ الصÙحة:',
-'contextlines' => 'عدد الأسطر ÙÙŠ كل نتيجة:',
-'contextchars' => 'عدد الأحر٠ÙÙŠ كل سطر',
'stub-threshold' => 'الحد لتنسيق <a href="#" class="stub">وصلة البذرة</a>:',
'stub-threshold-disabled' => 'معطل',
'recentchangesdays' => 'عدد الأيام المعروضة ÙÙŠ أحدث التغييرات:',
@@ -1500,7 +1537,7 @@ $1",
'savedprefs' => 'تم Ø­Ùظ تÙضيلاتك.',
'timezonelegend' => 'المنطقة الزمنية:',
'localtime' => 'الوقت المحلي:',
-'timezoneuseserverdefault' => 'استخدم اÙتراض الخادوم',
+'timezoneuseserverdefault' => 'استخدام الويكي الاÙتراضي ($1)',
'timezoneuseoffset' => 'آخر (حدد الÙرق)',
'timezoneoffset' => 'الÙرق¹:',
'servertime' => 'وقت الخادوم:',
@@ -1549,8 +1586,8 @@ $1",
'email' => 'البريد الإلكتروني',
'prefs-help-realname' => 'الاسم الحقيقي اختياري.
لو اخترت أن توÙره، Ùسيستخدم ÙÙŠ الإشارة إلى عملك.',
-'prefs-help-email' => 'عنوان البريد الإلكتروني اختياري، لكن يسمح بأن يتم إرسال كلمة السر الخاصة بك إليك لو نسيتها.
-يمكنك أيضا اختيار السماح للآخرين بالاتصال بك عن طريق صÙحتك أو صÙحة نقاشك من دون معرÙØ© هويتك.',
+'prefs-help-email' => 'عنوان البريد الإلكتروني هو أمر اختياري، ولكن ستحتاج لإعادة تعيين كلمة المرور، إن نسيت كلمة المرور الخاصة بك.',
+'prefs-help-email-others' => 'يمكنك أيضا اختيار للسماح للآخرين الاتصال بك عن طريق صÙحة المستخدم أو نقاش المستخدم الخاص بك دون الحاجة إلى الكش٠عن الهوية الخاصة بك.',
'prefs-help-email-required' => 'عنوان البريد الإلكتروني مطلوب.',
'prefs-info' => 'المعلومات الأساسية',
'prefs-i18n' => 'الترجمة',
@@ -1675,15 +1712,15 @@ $1",
'right-userrights' => 'تعديل كل صلاحيات المستخدمين',
'right-userrights-interwiki' => 'تعديل صلاحيات المستخدم للمستخدمين ÙÙŠ الويكيات الأخرى',
'right-siteadmin' => 'غلق ورÙع غلق قاعدة البيانات',
-'right-reset-passwords' => 'إعادة ضبط كلمة السر للمستخدمين الآخرين',
'right-override-export-depth' => 'تصدير الصÙحات متضمنة الصÙحات الموصولة حتى عمق 5',
'right-sendemail' => 'إرسال رسائل بريد إلكتروني إلى مستخدمين آخرين',
# User rights log
-'rightslog' => 'سجل صلاحيات المستخدمين',
-'rightslogtext' => 'هذا سجل بالتغييرات ÙÙŠ صلاحيات المستخدمين.',
-'rightslogentry' => 'غير صلاحيات $1 من $2 إلى $3',
-'rightsnone' => '(لا شيء)',
+'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' => 'قراءة هذه الصÙحة',
@@ -1754,7 +1791,7 @@ $1",
'rc_categories_any' => 'أي',
'newsectionsummary' => '/* $1 */ قسم جديد',
'rc-enhanced-expand' => 'عرض التÙاصيل (يتطلب جاÙاسكريبت)',
-'rc-enhanced-hide' => 'إخÙاء التÙاصيل',
+'rc-enhanced-hide' => 'أخÙ٠التÙاصيل',
# Recent changes linked
'recentchangeslinked' => 'تغييرات ذات علاقة',
@@ -1807,13 +1844,13 @@ $1",
'illegalfilename' => 'اسم المل٠"$1" يحتوي على حرو٠غير مسموح بها ÙÙŠ عناوين الصÙحات.
من Ùضلك أعد تسمية المل٠وحاول رÙعه مرة أخرى.',
'badfilename' => 'تم تغيير اسم المل٠إلى "$1".',
-'filetype-mime-mismatch' => 'امتداد المل٠لا يطابق نوع MIME.',
+'filetype-mime-mismatch' => 'امتداد المل٠".$1" لا يطابق نوع MIME للمل٠($2).',
'filetype-badmime' => 'من غير المسموح به رÙع ملÙات من النوع "$1".',
'filetype-bad-ie-mime' => 'لم يمكن رÙع هذا الم٠لأن إنترنت إكسبلورر سيكتشÙÙ‡ Ùƒ"$1", وهو نوع مل٠ممنوع ومن المحتمل أن يكون خطرا.',
'filetype-unwanted-type' => "'''\".\$1\"''' هو نوع مل٠غير مرغوب Ùيه.
{{PLURAL:\$3|نوع المل٠المÙضل هو|أنواع الملÙات المÙضلة هي}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' ليس نوع مل٠مسموح به.
-{{PLURAL:\$3|نوع المل٠المسموح به هو|أنواع الملÙات المسموح بها هي}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|ليس نوع مل٠مسموح به|ليسوا أنواع ملÙات مسموح بها}}.
+{{PLURAL:$3|نوع المل٠المسموح به هو|أنواع الملÙات المسموح بها هي}} $2.',
'filetype-missing' => 'المل٠بدون امتداد (مثل ".jpg").',
'empty-file' => 'المل٠الذي أرسلته كان Ùارغا.',
'file-too-large' => 'المل٠الذي أرسلته كان كبيرا جدا.',
@@ -1831,6 +1868,7 @@ $1",
'emptyfile' => 'يبدو أن المل٠الذي رÙعته Ùارغ.
قد يكون سبب ذلك خطأ ÙÙŠ كتابة الاسم.
من Ùضلك تأكد من أنك تريد Ùعلا رÙع هذا الملÙ.',
+'windows-nonascii-filename' => 'هذا ويكي لا يعتمد أسماء الملÙات مع الأحر٠الخاصة.',
'fileexists' => "هناك مل٠موجود يحمل Ù†Ùس هذا الاسم الرجاء التأكد من هذا المل٠باتباع الوصلة التالية '''<tt>[[:$1]]</tt>''' قبل القيام بتغييره.
[[$1|thumb]]",
'filepageexists' => "أنشئت صÙحة وص٠هذا المل٠ÙÙŠ '''<tt>[[:$1]]</tt>'''ØŒ لكن لا يوجد مل٠بهذا الاسم حاليا.
@@ -1866,6 +1904,8 @@ $1",
'php-uploaddisabledtext' => 'رÙع ملÙات PHP معطل. من Ùضلك تحقق من إعدادات رÙع الملÙات.',
'uploadscripted' => 'هذا المل٠يضم كود HTML أو كود آخر يمكن أن ÙŠÙسره متصÙØ­ الوب بطريقة خاطئة.',
'uploadvirus' => 'المل٠يحتوي على Ùيروس! التÙاصيل: $1',
+'uploadjava' => 'يحتوي مل٠ZIP هذا على ملÙات جاÙا .class.
+لا يسمح برÙع ملÙات جاÙا لأنها تتيح تخطي القيود الأمنية.',
'upload-source' => 'المل٠المصدر',
'sourcefilename' => 'اسم مل٠المصدر:',
'sourceurl' => 'مسار المصدر:',
@@ -1876,10 +1916,6 @@ $1",
'watchthisupload' => 'راقب هذا الملÙ',
'filewasdeleted' => 'تم رÙع ثم حذ٠مل٠بهذا الاسم من قبل.
من الأÙضل مراجعة $1 قبل رÙعه مرة أخرى.',
-'upload-wasdeleted' => "'''تحذير: أنت تقوم برÙع مل٠تم حذÙÙ‡ ÙÙŠ السابق.'''
-
-يجب عليك التيقن من أن الاستمرار برÙع هذا المل٠ملائم.
-سجل الحذ٠لهذا المل٠معروض هنا للتيسير:",
'filename-bad-prefix' => "اسم المل٠الذي ترÙعه يبدأ ب'''\"\$1\"'''ØŒ وهو اسم غير وصÙÙŠ عادة يوضع تلقائيا من الكاميرات الرقمية.
من Ùضلك اختر اسما أكثر وصÙا لملÙÙƒ.",
'filename-prefix-blacklist' => ' #<!-- اترك هذا السطر تماما كما هو --> <pre>
@@ -1918,12 +1954,29 @@ $1',
'upload-unknown-size' => 'حجم غير معروÙ',
'upload-http-error' => 'صود٠خطأ HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'صود٠خطأ أثناء Ùتح المل٠لÙحوصات ZIP.',
+'zip-wrong-format' => 'المل٠المحدد ليس مل٠ZIP.',
+'zip-bad' => 'مل٠ZIP هذا معطوب أو لا يمكن قراءته لسبب آخر.
+لا يمكن التحقق من سلامته.',
+'zip-unsupported' => 'هذا مل٠ZIP يستخدم بعض مزايا ZIP التي لا يدعمها ميدياويكي.
+لا يمكن التحقق من سلامته.',
+
+# Special:UploadStash
+'uploadstash' => 'تحميل مخبأ',
+'uploadstash-summary' => ' توÙر هذه الصÙحة الوصول إلى الملÙات التي يتم تحميلها (أو ÙÙŠ أثناء عملية التحميل) ولكنها لم تنشر بعد. هذه الملÙات هي غير مرئية لأحد إلا للمستخدم الذين تم الرÙع لهم.',
+'uploadstash-clear' => 'مسح الملÙات المخبأة',
+'uploadstash-nofiles' => 'ليس لديك أي ملÙات مخبأة.',
+'uploadstash-badtoken' => 'لم ينجح أداء ذلك العمل، ربما لأن وثائق تÙويض التحرير الخاصة بك منتهية الصلاحية. حاول مرة أخرى.',
+'uploadstash-errclear' => 'لم تنجح عملية مسح الملÙات.',
+'uploadstash-refresh' => 'تحديث قائمة الملÙات',
+
# img_auth script messages
'img-auth-accessdenied' => 'رÙض الوصول',
-'img-auth-nopathinfo' => 'PATH_INFO Ù…Ùقودة.
-خادمك ليس مضبوطا لتمرير هذه المعلومات.
-ربما يكون CGI-based ولا يمكنه دعم img_auth.
-انظر http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-nopathinfo' => 'PATH_INFO Ù…Ùقود.
+خادومك ليس مضبوطا لتمرير هذه المعلومات.
+ربما يكون مبني على CGI ولا يمكنه دعم img_auth.
+[//www.mediawiki.org/wiki/Manual:Image_Authorization راجع تصريح الصور].',
'img-auth-notindir' => 'المسار المطلوب غير موجود ÙÙŠ مجلد الرÙع المضبوط.',
'img-auth-badtitle' => 'تعذر تشكيل عنوان صالح من "$1".',
'img-auth-nologinnWL' => 'لست والجا Ùˆ"$1" ليست ÙÙŠ القائمة البيضاء.',
@@ -2001,7 +2054,7 @@ $1',
[[Special:WhatLinksHere/$2|قائمة كاملة]] متوÙرة.',
'nolinkstoimage' => 'لا توجد صÙحات تصل لهذا الملÙ.',
'morelinkstoimage' => 'عرض [[Special:WhatLinksHere/$1|المزيد من الوصلات]] إلى هذا الملÙ.',
-'redirectstofile' => '{{PLURAL:$1|الملÙ|ال$1 ملÙ}} التالي يحول إلى هذا الملÙ:',
+'linkstoimage-redirect' => '$1 (تحويلة ملÙ) $2',
'duplicatesoffile' => '{{PLURAL:$1|المل٠التالي مكرر|ال$1 مل٠التالي مكررات}} لهذا الملÙ
([[Special:FileDuplicateSearch/$2|المزيد من التÙاصيل]]):',
'sharedupload' => 'هذا المل٠من $1 ويمكن استخدامه بواسطة المشاريع الأخرى.',
@@ -2094,18 +2147,19 @@ $1',
'statistics-users-active-desc' => 'المستخدمون الذين قاموا بÙعل ÙÙŠ آخر {{PLURAL:$1|يوم|$1 يوم}}',
'statistics-mostpopular' => 'أكثر الصÙحات مشاهدة',
-'disambiguations' => 'صÙحات التوضيح',
+'disambiguations' => 'الصÙحات التي ترتبط بصÙحات توضيح',
'disambiguationspage' => 'Template:توضيح',
'disambiguations-text' => "الصÙحات التالية تصل إلى '''صÙحة توضيح'''.
ينبغي ÙÙŠ المقابل أن تصل إلى الصÙحة الملائمة. <br />
تعامل الصÙحة كصÙحة توضيح إذا كان بها قالب موجود ÙÙŠ [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'تحويلات مزدوجة',
-'doubleredirectstext' => 'هذه الصÙحة تعرض الصÙحات التي تحول إلى صÙحات تحويل أخرى.
+'doubleredirects' => 'تحويلات مزدوجة',
+'doubleredirectstext' => 'هذه الصÙحة تعرض الصÙحات التي تحول إلى صÙحات تحويل أخرى.
كل سطر يحتوي على وصلات للتحويلة الأولى والثانية وهد٠التحويلة الثانية، والذي عادة ما يشير إلى صÙحة الهد٠"الحقيقية"ØŒ التي من المÙترض أن تحول إليها التحويلة الأولى.
المدخلات <del>المشطوبة</del> صححت.',
-'double-redirect-fixed-move' => '[[$1]] تم نقلها، هي الآن تحويلة إلى [[$2]]',
-'double-redirect-fixer' => 'مصلح التحويل',
+'double-redirect-fixed-move' => '[[$1]] تم نقلها، هي الآن تحويلة إلى [[$2]]',
+'double-redirect-fixed-maintenance' => 'تصليح تحويلة مزدوجة من [[$1]] إلى [[$2]].',
+'double-redirect-fixer' => 'مصلح التحويل',
'brokenredirects' => 'تحويلات مكسورة',
'brokenredirectstext' => 'التحويلات التالية تصل لصÙحات غير موجودة:',
@@ -2124,7 +2178,7 @@ $1',
'ncategories' => '$1 {{PLURAL:$1|تصني٠واحد|تصنيÙان|تصنيÙات|تصنيÙ|تصنيÙا}}',
'nlinks' => '{{PLURAL:$1|لا وصلات|وصلة واحدة|وصلتان|$1 وصلات|$1 وصلة}}',
'nmembers' => '{{PLURAL:$1|لا أعضاء|عضو واحد|عضوان|$1 أعضاء|$1 عضوا|$1 عضو}}',
-'nrevisions' => '{{PLURAL:$1|تعديل وحيد|تعديلان|$1 تعديلات|$1 تعديل|$1 تعديلا}}',
+'nrevisions' => '{{PLURAL:$1|لا مراجعات|مراجعة واحدة|مراجعتان|$1 مراجعات|$1 مراجعة}}',
'nviews' => '{{PLURAL:$1|مشاهدة واحدة|مشاهدتان|$1 مشاهدات|$1 مشاهدة}}',
'nimagelinks' => 'مستخدم ÙÙŠ {{PLURAL:$1||صÙحة واحدة|صÙحتين|$1 صÙحات|$1 صÙحة}}',
'ntransclusions' => 'مستخدم ÙÙŠ {{PLURAL:$1||صÙحة واحدة|صÙحتين|$1 صÙحات|$1 صÙحة}}',
@@ -2165,7 +2219,7 @@ $1',
'listusers' => 'قائمة الأعضاء',
'listusers-editsonly' => 'اعرض المستخدمين الذين قاموا بتعديلات Ùقط',
'listusers-creationsort' => 'رتب حسب تاريخ الإنشاء',
-'usereditcount' => '$1 {{PLURAL:$1|تعديل|تعديل}}',
+'usereditcount' => '{{PLURAL:$1|لا تعديلات|تعديل واحد|تعديلان|$1 تعديلات|$1 تعديلًا|$1 تعديل}}',
'usercreated' => 'تم إنشاؤه ÙÙŠ $1 الساعة $2',
'newpages' => 'صÙحات جديدة',
'newpages-username' => 'اسم المستخدم:',
@@ -2182,6 +2236,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|أجدد 1|أجدد $1}}',
'pager-older-n' => '{{PLURAL:$1|أقدم 1|أقدم $1}}',
'suppress' => 'أوÙرسايت',
+'querypage-disabled' => 'تم تعطيل هذه الصÙحة الخاصة لأسباب تتعلق بالأداء.',
# Book sources
'booksources' => 'مصادر كتاب',
@@ -2234,7 +2289,7 @@ $1',
'sp-deletedcontributions-contribs' => 'مساهمات',
# Special:LinkSearch
-'linksearch' => 'وصلات خارجية',
+'linksearch' => 'بحث ÙÙŠ الوصلات الخارجية',
'linksearch-pat' => 'نمط البحث:',
'linksearch-ns' => 'النطاق:',
'linksearch-ok' => 'ابحث',
@@ -2300,6 +2355,10 @@ $1',
'noemailtext' => 'لم يحدد هذا المستخدم عنوان بريد إلكتروني صحيح.',
'nowikiemailtitle' => 'لا بريد إلكتروني مسموح به',
'nowikiemailtext' => 'هذا المستخدم اختار ألا يستقبل البريد الإلكتروني من المستخدمين الآخرين.',
+'emailnotarget' => 'المستلم ليس مستخدمًا موجودًا أو ليس مستخدمًا صحيحًا.',
+'emailtarget' => 'أدخل اسم مستخدم المستلم',
+'emailusername' => 'اسم المستخدم:',
+'emailusernamesubmit' => 'أرسل',
'email-legend' => 'إرسال بريد إلكتروني إلى مستخدم {{SITENAME}} آخر',
'emailfrom' => 'من:',
'emailto' => 'إلى:',
@@ -2324,10 +2383,10 @@ $1',
'watchlistanontext' => 'الرجاء $1 لعرض أو تعديل الصÙحات ÙÙŠ قائمة مراقبتك.',
'watchnologin' => 'غير مسجل',
'watchnologintext' => 'يجب أن تكون [[Special:UserLogin|مسجلا الدخول]] لتعدل قائمة مراقبتك.',
-'addedwatch' => 'تمت الإضاÙØ© لقائمة المراقبة',
+'addwatch' => 'إضاÙØ© إلى قائمة المراقبة',
'addedwatchtext' => "أضيÙت الصÙحة \"[[:\$1]]\" إلى [[Special:Watchlist|قائمة مراقبتك]].
التغييرات القادمة على هذه الصÙحة وصÙحة نقاشها سيتم وضعها هناك، وسيتم إظهار اسم الصÙحة بخط '''غليظ''' ÙÙŠ صÙحة [[Special:RecentChanges|أحدث التغييرات]] لتسهيل تحديدها واكتشاÙها.",
-'removedwatch' => 'تمت الإزالة من قائمة المراقبة',
+'removewatch' => 'إزالة من قائمة المراقبة',
'removedwatchtext' => 'الصÙحة "[[:$1]]" تمت إزالتها من [[Special:Watchlist|قائمة مراقبتك]].',
'watch' => 'راقب',
'watchthispage' => 'راقب هذه الصÙحة',
@@ -2341,15 +2400,16 @@ $1',
'wlheader-showupdated' => "* الصÙحات التي تم تحريرها بعد زيارتك لها لآخر مرة معروضة بالخط '''الغليظ'''",
'watchmethod-recent' => 'Ùحص التعديلات الأخيرة للصÙحات المراقبة',
'watchmethod-list' => 'Ùحص الصÙحات المراقبة للتعديلات الحديثة',
-'watchlistcontains' => 'تحتوي قائمة مراقبتك على $1 {{PLURAL:$1|صÙحة|صÙحة}}.',
+'watchlistcontains' => 'تحتوي قائمة مراقبتك على {{PLURAL:$1|لا صÙحات|صÙحة واحدة|صÙحتان|$1 صÙحات|$1 صÙحة}}.',
'iteminvalidname' => "مشكلة ÙÙŠ المدخل '$1'ØŒ اسم غير صحيح...",
'wlnote' => "بالأسÙÙ„ {{PLURAL:$1|لا توجد تغييرات|التغيير الأخير|آخر تغييرين|آخر '''$1''' تغييرات|آخر '''$1''' تغييرا|آخر '''$1''' تغيير}} ÙÙŠ {{PLURAL:$2||'''الساعة''' الماضية|'''الساعتين''' الماضيتين|ال'''$2''' ساعات الماضية|ال'''$2''' ساعة الماضية}}.",
'wlshowlast' => 'عرض آخر $1 ساعات $2 أيام $3',
'watchlist-options' => 'خيارات قائمة المراقبة',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'يراقب...',
-'unwatching' => 'إزالة المراقبة...',
+'watching' => 'يراقب...',
+'unwatching' => 'إزالة المراقبة...',
+'watcherrortext' => 'حدث خطأ أثناء تغيير إعدادات الرصد الخاصة بك "$1".',
'enotif_mailer' => 'نظام {{SITENAME}} البريدي للإخطارات',
'enotif_reset' => 'علم على كل الصÙحات كمزارة',
@@ -2361,32 +2421,32 @@ $1',
'enotif_lastvisited' => 'انظر $1 لكل التغييرات منذ زيارتك الأخيرة.',
'enotif_lastdiff' => 'انظر $1 لرؤية هذا التغيير.',
'enotif_anon_editor' => 'مستخدم مجهول $1',
-'enotif_body' => 'عزيزي $ WATCHINGUSERNAMEE
-صÙحة $PAGETITLE قد $ CHANGEDORCREATEDÙÙŠ $PAGEEDITDATE ب$PAGEEDITOR, انظر$PAGETITLE_URL للمراجعة الحالية
-موجز للمحرر: $PAGESUMMARY $PAGEMINOREDIT
+'enotif_body' => 'عزيزي $WATCHINGUSERNAME
+صÙحة $PAGETITLE قد $CHANGEDORCREATED ÙÙŠ $PAGEEDITDATE بواسطة $PAGEEDITOR, انظر $PAGETITLE_URL للنسخة الحالية
+ملخص التعديل: $PAGESUMMARY $PAGEMINOREDIT
الاتصال بالمحرر:
- البريد: $PAGEEDITOR_EMAIL
- ويكي: $PAGEEDITOR_WIKI
+البريد: $PAGEEDITOR_EMAIL
+ويكي: $PAGEEDITOR_WIKI
-لن يكون هناك لا إخطارات أخرى ÙÙŠ حالة حدوث مزيد من التغييرات إلا إذا قمت بزيارة هذه الصÙحة.
+لن يكون هناك إخطارات أخرى ÙÙŠ حالة حدوث مزيد من التغييرات إلا إذا قمت بزيارة تلك الصÙحة.
يمكن أيضا تعيين إشارات الإعلام لجميع صÙحات شاهد على هيئة الرصد الخاصة بك.
- {{SITENAME}} إعلام النظام الخاص بك ودية
+ {{SITENAME}} إعلام البريد الإلكتروني لموقع
--
لتغيير إعدادات إعلام البريد الإلكتروني الخاص بك، قم بزيارة
-{{fullurl: {{# الخاص: تÙضيلات}}}}
+{{canonicalurl:{{#special:Preferences}}}}
-لتغيير إعدادات الرصد الخاصة بك، قم بزيارة
-{{fullurl: {{# الخاص: الرصد}}/تحرير}}
+لتغيير إعدادات المراقبة الخاصة بك، قم بزيارة
+{{canonicalurl:{{#special:EditWatchlist}}}}
-لحذ٠الصÙحة من هيئة الرصد الخاصة بك، قم بزيارة
-$ أونواتشورل
+لحذ٠الصÙحة من قائمة المراقبة الخاصة بك، قم بزيارة
+$UNWATCHURL
التغذية المرتدة، والحصول على مساعدة إضاÙية:
-{{fullurl: {{MediaWiki:Helppage}}}}',
+{{canonicalurl: {{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'حذ٠الصÙحة',
@@ -2402,7 +2462,7 @@ $ أونواتشورل
من Ùضلك التأكد من عزمك على الحذÙØŒ وبأنك مدرك للعواقب، وبأنك تقوم بهذا بالتواÙÙ‚ مع [[{{MediaWiki:Policy-url}}|السياسة]].',
'actioncomplete' => 'انتهاء العملية',
'actionfailed' => 'الÙعل Ùشل',
-'deletedtext' => '"<nowiki>$1</nowiki>" تم حذÙها.
+'deletedtext' => '"$1" تم حذÙها.
انظر ÙÙŠ $2 لسجل آخر عمليات الحذÙ.',
'deletedarticle' => 'حذ٠"[[$1]]"',
'suppressedarticle' => 'أخÙÙ‰ "[[$1]]"',
@@ -2418,10 +2478,10 @@ $ أونواتشورل
** خرق لحقوق التألي٠والنشر
** تخريب',
'delete-edit-reasonlist' => 'عدل أسباب الحذÙ',
-'delete-toobig' => 'هذه الصÙحة لها تاريخ تعديل كبير، أكثر من $1 {{PLURAL:$1|مراجعة|مراجعة}}.
-حذ٠مثل هذه الصÙحات تم تحديده لمنع الاضطراب العرضي ÙÙŠ {{SITENAME}}.',
-'delete-warning-toobig' => 'هذه الصÙحة لها تاريخ تعديل كبير، أكثر من $1 {{PLURAL:$1|مراجعة|مراجعة}}.
-حذÙها ربما يؤدي إلى اضطراب عمليات قاعدة البيانات ÙÙŠ {{SITENAME}}Ø›
+'delete-toobig' => 'لهذه الصÙحة تاريخ تعديل طويل، أكثر من {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}}.
+Ù‚Ùيّد محذ٠مثل هذه الصÙحات لمنع الاضطراب المÙاجئة ÙÙŠ {{SITENAME}}.',
+'delete-warning-toobig' => 'لهذه الصÙحة تاريخ تعديل طويل، أكثر من {{PLURAL:$1||مراجعة واحدة|مراجعتين|$1 مراجعات|$1 مراجعة}}.
+قد يؤدي حذÙها إلى اضطراب عمليات قاعدة البيانات ÙÙŠ {{SITENAME}}Ø›
استمر مع الحذر.',
# Rollback
@@ -2463,7 +2523,7 @@ $ أونواتشورل
'protect_expiry_invalid' => 'وقت الانتهاء غير صحيح.',
'protect_expiry_old' => 'وقت انتهاء المنع يقع ÙÙŠ الماضي.',
'protect-unchain-permissions' => 'ألغ Ù‚ÙÙ„ خيارات الحماية الأخرى',
-'protect-text' => "يمكنك هنا أن تعرض وتغير مستوى الحماية للصÙحة '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "يمكنك هنا أن تعرض وتغير مستوى الحماية للصÙحة '''$1'''.",
'protect-locked-blocked' => "لا يمكنك تغيير مستويات الحماية وأنت ممنوع.
الإعدادات الحالية للصÙحة '''$1''' هي:",
'protect-locked-dblock' => "لا يمكن تغيير مستويات الحماية بسبب غلق قاعدة البيانات حاليا.
@@ -2518,9 +2578,8 @@ $ أونواتشورل
'undeletepagetext' => 'Ø­ÙØ°Ùت {{PLURAL:$1||الصÙحة التالية|الصÙحتان التاليتان|$1 الصÙحات التالية|ال$1 صÙحة التالية}} ولكنها مازالت ÙÙŠ الأرشي٠ويمكن استرجاعها.
قد يمسح الأرشي٠دوريا.',
'undelete-fieldset-title' => 'استرجاع المراجعات',
-'undeleteextrahelp' => "لاسترجاع تاريخ الصÙحة كاملا، اترك جميع الصناديق Ùارغة واضغط '''''استرجاع'''''.
-للاسترجاع بشكل انتقائي، ضع علامة ÙÙŠ الصناديق أمام المراجعات التي تريد استرجاعها، واضغط '''''استرجاع'''''.
-الضغط على '''''إلغاء''''' سيؤدي إلى Ø¥Ùراغ حقل التعليق وكل العلامات من الصناديق.",
+'undeleteextrahelp' => "لاسترجاع تاريخ الصÙحة كاملا، اترك جميع الصناديق Ùارغة واضغط '''''{{int:undeletebtn}}'''''..
+للاسترجاع بشكل انتقائي، ضع علامة ÙÙŠ الصناديق أمام المراجعات التي تريد استرجاعها، واضغط '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '{{PLURAL:$1|لم تؤرش٠أي مراجعة|أرشÙت مراجعة واحدة|أرشÙت مراجعتان|أرشÙت $1 مراجعات|أرشÙت $1 مراجعة}}',
'undeletehistory' => 'لو استرجعت الصÙحة، كل المراجعات سيتم استرجاعها إلى التاريخ.
لو كان قد تم إنشاء صÙحة جديدة بالاسم Ù†Ùسه بعد الحذÙØŒ المراجعات المسترجعة ستظهر ÙÙŠ التاريخ السابق.',
@@ -2566,9 +2625,12 @@ $1',
'undelete-show-file-submit' => 'نعم',
# Namespace form on various pages
-'namespace' => 'النطاق:',
-'invert' => 'اعكس الاختيار',
-'blanknamespace' => '(رئيسي)',
+'namespace' => 'النطاق:',
+'invert' => 'اعكس الاختيار',
+'tooltip-invert' => 'علم على هذا الصندوق لإخÙاء التغييرات للصÙحات ÙÙŠ النطاق المختار (والنطاق المصاحب لو معلم عليها)',
+'namespace_association' => 'النطاق المقترن',
+'tooltip-namespace_association' => 'علم على هذا الصندوق لتضمين نطاق النقاش أو الموضوع لالمصاحب للنطاق المختار',
+'blanknamespace' => '(رئيسي)',
# Contributions
'contributions' => 'مساهمات المستخدم',
@@ -2618,11 +2680,13 @@ $1',
'whatlinkshere-filters' => 'مرشحات',
# Block/unblock
+'autoblockid' => 'منع تلقائي #$1',
+'block' => 'امنع المستخدم',
+'unblock' => 'إلغاء منع مستخدم',
'blockip' => 'منع مستخدم',
'blockip-title' => 'منع مستخدم',
'blockip-legend' => 'منع المستخدم',
'blockiptext' => 'استخدم النموذج التالي لمنع مستخدم، أو عنوان آيبي، معين من التعديل أو إنشاء حسابات جديدة. تÙستخدم هذه العملية لمنع التخريب Ùقط، ويجب أن تتماشى مع [[{{MediaWiki:Policy-url}}|سياسة المنع]]. أدخل تعليلاً واضحًا لسبب المنع ÙÙŠ الخانة المخصصة لذلك (مثلاً: ذكر صÙحات محددة تمّ تخريبها من قبل المستخدم).',
-'ipaddress' => 'عنوان الأيبي:',
'ipadressorusername' => 'عنوان الأيبي أو اسم المستخدم:',
'ipbexpiry' => 'مدة المنع:',
'ipbreason' => 'السبب:',
@@ -2635,7 +2699,7 @@ $1',
** سلوك عدواني
** إساءة استخدام حسابات متعددة
** اسم مستخدم غير مقبول',
-'ipbanononly' => 'امنع المستخدمين المجهولين Ùقط',
+'ipb-hardblock' => 'امنع المستخدمين الوالجين من التعديل بعنوان الآيبي هذا',
'ipbcreateaccount' => 'امنع إنشاء الحسابات',
'ipbemailban' => 'امنع المستخدم من إرسال بريد إلكتروني',
'ipbenableautoblock' => 'تلقائيا امنع آخر عنوان أيبي تم استعماله بواسطة هذا المستخدم، وأي عناوين أيبي أخرى يحاول التحرير من خلالها',
@@ -2646,12 +2710,15 @@ $1',
'ipbotherreason' => 'سبب إضاÙÙŠ/آخر:',
'ipbhidename' => 'أخ٠اسم المستخدم من التعديلات والقوائم',
'ipbwatchuser' => 'راقب صÙحتي المستخدم والنقاش لهذا المستخدم',
-'ipballowusertalk' => 'اسمح لهذا المستخدم بتعديل صÙحة نقاشه أثناء المنع',
+'ipb-disableusertalk' => 'امنع هذا المستخدم من تعديل صÙحة نقاشه ما دام ممنوعا',
'ipb-change-block' => 'أعد منع المستخدم بهذه الإعدادات',
+'ipb-confirm' => 'أكّد المنع',
'badipaddress' => 'عنوان أيبي غير صحيح',
'blockipsuccesssub' => 'تم المنع بنجاح',
'blockipsuccesstext' => 'تم منع [[Special:Contributions/$1|$1]].<br />
انظر [[Special:IPBlockList|قائمة منع الأيبي]] لمراجعة حالات المنع.',
+'ipb-blockingself' => 'أنت على وشك منع Ù†Ùسك! أمتأكد من رغبتك ÙÙŠ القيام بذلك؟',
+'ipb-confirmhideuser' => 'أنت على وشك منع مستخدم مع تÙعيل خيار "أخ٠المستخدم". سو٠يخÙÙŠ هذا الخيار اسم المستخدم من جميل القوائم ومدخلات السجلات. أمتأكد من رغبتك ÙÙŠ القيام بذلك؟',
'ipb-edit-dropdown' => 'عدل أسباب المنع',
'ipb-unblock-addr' => 'رÙع منع $1',
'ipb-unblock' => 'رÙع المنع عن مستخدم أو عنوان أيبي',
@@ -2661,17 +2728,23 @@ $1',
'unblockiptext' => 'استخدم الاستمارة أدناه لاسترجاع صلاحية الكتابة الخاصة بعنوان أيبي أو مستخدم تم سحبها منه مسبقا.',
'ipusubmit' => 'ارÙع هذا المنع',
'unblocked' => '[[User:$1|$1]] تم رÙع منعه',
+'unblocked-range' => 'تم إلغاء منع $1',
'unblocked-id' => 'منع $1 تم رÙعه',
+'blocklist' => 'المستخدمون الممنوعون',
'ipblocklist' => 'المستخدمون الممنوعون',
'ipblocklist-legend' => 'إيجاد مستخدم ممنوع',
-'ipblocklist-username' => 'اسم المستخدم أو عنوان الأيبي:',
-'ipblocklist-sh-userblocks' => '$1 عمليات منع الحسابات',
-'ipblocklist-sh-tempblocks' => '$1 عمليات المنع المؤقتة',
-'ipblocklist-sh-addressblocks' => '$1 عمليات منع الأيبي المÙردة',
+'blocklist-userblocks' => 'أخÙ٠منع الحسابات',
+'blocklist-tempblocks' => 'أخÙ٠المنع المؤقت',
+'blocklist-addressblocks' => 'أخÙ٠منع عنوان آيبي واحد',
+'blocklist-timestamp' => 'الزمن',
+'blocklist-target' => 'الهدÙ',
+'blocklist-expiry' => 'ينتهي ÙÙŠ',
+'blocklist-by' => 'حظر المشرÙ',
+'blocklist-params' => 'معطيات المنع',
+'blocklist-reason' => 'السبب',
'ipblocklist-submit' => 'ابحث',
'ipblocklist-localblock' => 'المنع المحلي',
-'ipblocklist-otherblocks' => '{{PLURAL:$1||المنع الآخر|المنعان الآخران|المنوعات الأخريات}}',
-'blocklistline' => '$1, $2 منع $3 ($4)',
+'ipblocklist-otherblocks' => '{{PLURAL:$1||المنع الآخر|المنعان الآخران|المنوعات الأخرى}}',
'infiniteblock' => 'لا نهائي',
'expiringblock' => 'ينتهي ÙÙŠ يوم $1 عند الساعة $2',
'anononlyblock' => 'مجهول Ùقط',
@@ -2682,7 +2755,7 @@ $1',
'ipblocklist-empty' => 'قائمة المنع Ùارغة.',
'ipblocklist-no-results' => 'عنوان الأيبي أو اسم المستخدم المطلوب غير ممنوع.',
'blocklink' => 'امنع',
-'unblocklink' => 'رÙع المنع',
+'unblocklink' => 'ارÙع المنع',
'change-blocklink' => 'تغيير المنع',
'contribslink' => 'مساهمات',
'autoblocker' => 'تم منعك تلقائيا لأن الأيبي الخاص بك تم استخدامه مؤخرا بواسطة "[[User:$1|$1]]".
@@ -2696,7 +2769,7 @@ $1',
'reblock-logentry' => 'غير إعدادات المنع ل[[$1]] بتاريخ انتهاء $2 $3',
'blocklogtext' => 'هذا سجل بعمليات المنع ورÙع المنع.
عناوين الأيبي الممنوعة تلقائيا ليست معروضة.
-انظر [[Special:IPBlockList|عناوين الأيبي الممنوعة]] لرؤية عمليات المنع المÙعلة حاليا.',
+انظر [[Special:BlockList|عناوين الأيبي الممنوعة]] لرؤية عمليات المنع المÙعلة حاليا.',
'unblocklogentry' => 'رÙع منع $1',
'block-log-flags-anononly' => 'المستخدمون المجهولون Ùقط',
'block-log-flags-nocreate' => 'إنشاء الحسابات ممنوع',
@@ -2710,9 +2783,9 @@ $1',
'ipb_expiry_temp' => 'عمليات منع أسماء المستخدمين المخÙية يجب أن تكون دائمة.',
'ipb_hide_invalid' => 'غير قادر على إخÙاء هذا الحساب؛ ربما يكون قد قام بالكثير من التعديلات.',
'ipb_already_blocked' => '"$1" ممنوع بالÙعل',
-'ipb-needreblock' => '== ممنوع بالÙعل ==
-$1 ممنوع بالÙعل. هل تريد تغيير الإعدادات؟',
-'ipb-otherblocks-header' => '{{PLURAL:$1||المنع الآخر|المنعان الآخران|المنوعات الأخريات}}',
+'ipb-needreblock' => '$1 ممنوع بالÙعل. هل تريد تغيير الإعدادات؟',
+'ipb-otherblocks-header' => '{{PLURAL:$1||المنع الآخر|المنعان الآخران|المنوعات الأخرى}}',
+'unblock-hideuser' => 'لا يمكنك إلغاء منع هذا المستخدم لأن اسم مستخدمه Ø£ÙØ®ÙÙŠ.',
'ipb_cant_unblock' => 'خطأ: لم يتم إيجاد الممنوع $1.
ربما تم رÙع منعه بالÙعل.',
'ipb_blocked_as_range' => 'خطأ: الأيبي $1 ليس ممنوعا مباشرة ولا يمكن رÙع المنع عنه.
@@ -2741,8 +2814,8 @@ $1 ممنوع بالÙعل. هل تريد تغيير الإعدادات؟',
من Ùضلك تأكد من أن هذا حقا ما ترغب القيام به، ومن أنك سو٠تقوم بإزالة الغلق بعد الانتهاء من الصيانة.',
'unlockdbtext' => 'Ùتح قاعدة البيانات سيسترجع قدرة كل المستخدمين على تحرير الصÙحات، تغيير تÙضيلاتهم، تعديل قوائم المراقبة الخاصة بهم، وأشياء أخرى تحتاج التغيير ÙÙŠ قاعدة البيانات.
من Ùضلك أكد أن هذا هو ما تريده.',
-'lockconfirm' => 'نعم، أنا أريد Ùعلا Ù‚ÙÙ„ قاعدة البيانات.',
-'unlockconfirm' => 'نعم، أنا أريد Ùعلا Ùتح قاعدة البيانات.',
+'lockconfirm' => 'نعم، أريد Ùعلا Ù‚ÙÙ„ قاعدة البيانات.',
+'unlockconfirm' => 'نعم، أريد Ùعلا Ùتح قاعدة البيانات.',
'lockbtn' => 'Ù‚ÙÙ„ قاعدة البيانات',
'unlockbtn' => 'رÙع غلق قاعدة البيانات',
'locknoconfirm' => 'لم تقم بتعليم صندوق التأكيد.',
@@ -2754,6 +2827,7 @@ $1 ممنوع بالÙعل. هل تريد تغيير الإعدادات؟',
'lockfilenotwritable' => 'مل٠غلق قاعدة البيانات لا يمكن الكتابة عليه.
لغلق قاعدة البيانات أو إزالة الغلق يجب أن يكون هذا المل٠قابلا للكتابة من قبل خادوم الوب.',
'databasenotlocked' => 'قاعدة البيانات ليست مغلقة.',
+'lockedbyandtime' => '(من $1 على $2 ÙÙŠ $3 )',
# Move page
'move-page' => 'نقل $1',
@@ -2799,7 +2873,7 @@ $1 ممنوع بالÙعل. هل تريد تغيير الإعدادات؟',
'move-watch' => 'راقب هذه الصÙحة',
'movepagebtn' => 'انقل الصÙحة',
'pagemovedsub' => 'تم النقل بنجاح',
-'movepage-moved' => '\'\'\'"$1" تم نقلها إلى "$2"\'\'\'',
+'movepage-moved' => '\'\'\'Ù†ÙÙ‚Ùلت "$1" إلى "$2"\'\'\'',
'movepage-moved-redirect' => 'تم إنشاء تحويلة.',
'movepage-moved-noredirect' => 'إنشاء التحويلة تم التغاضي عنه.',
'articleexists' => 'توجد صÙحة بهذا الاسم، أو أن الاسم الذي تم اختياره غير صالح.
@@ -2807,22 +2881,22 @@ $1 ممنوع بالÙعل. هل تريد تغيير الإعدادات؟',
'cantmove-titleprotected' => 'لا يمكنك نقل صÙحة إلى هذا الموقع، لأن العنوان الجديد تمت حمايته ضد الإنشاء',
'talkexists' => "'''الصÙحة Ù†Ùسها تم نقلها بنجاح، ولكن صÙحة النقاش لم يمكن نقلها لوجود صÙحة مسبقا تحت العنوان الجديد.
من Ùضلك ادمجهما يدويا.'''",
-'movedto' => 'تم نقلها إلى',
+'movedto' => 'Ù†ÙÙ‚Ùلت إلى',
'movetalk' => 'انقل صÙحة النقاش المرÙقة',
'move-subpages' => 'انقل الصÙحات الÙرعية (حتى $1)',
'move-talk-subpages' => 'انقل الصÙحات الÙرعية لصÙحة النقاش (حتى $1)',
'movepage-page-exists' => 'الصÙحة $1 موجودة بالÙعل ولا يمكن الكتابة عليها تلقائيا.',
-'movepage-page-moved' => 'تم نقل الصÙحة $1 إلى $2.',
-'movepage-page-unmoved' => 'لم يمكن نقل الصÙحة $1 إلى $2.',
-'movepage-max-pages' => 'الحد الأقصى $1 {{PLURAL:$1|صÙحة|صÙحة}} تم نقله ولن يتم نقل المزيد تلقائيا.',
+'movepage-page-moved' => 'Ù†ÙÙ‚Ùلت صÙحة $1 إلى $2.',
+'movepage-page-unmoved' => 'لم يمكن نقل صÙحة $1 إلى $2.',
+'movepage-max-pages' => 'تم نقل الحد الأقصى وهو {{PLURAL:$1||صÙحة واحدة|صÙحتان|$1 صÙحات|$1 صÙحة}} ولن يتم نقل المزيد تلقائيا.',
'1movedto2' => '[[$1]] تم نقلها إلى [[$2]]',
'1movedto2_redir' => '[[$1]] تم نقلها إلى [[$2]] Ùوق التحويلة',
'move-redirect-suppressed' => 'تم التغاضي عن التحويلة',
'movelogpage' => 'سجل النقل',
'movelogpagetext' => 'بالأسÙÙ„ قائمة بالصÙحات التي تم نقلها.',
-'movesubpage' => '{{PLURAL:$1|صÙحة Ùرعية|صÙحات Ùرعية}}',
-'movesubpagetext' => 'هذه الصÙحة لديها $1 {{PLURAL:$1|صÙحة Ùرعية|صÙحة Ùرعية}} معروضة بالأسÙÙ„.',
-'movenosubpage' => 'هذه الصÙحة ليس لديها صÙحات Ùرعية.',
+'movesubpage' => '{{PLURAL:$1||الصÙحة الÙرعية|الصÙحتان الÙرعيتان|الصÙحات الÙرعية}}',
+'movesubpagetext' => 'لهذه الصÙحة {{PLURAL:$1||صÙحة Ùرعية واحدة معروضة|صÙحتان Ùرعيتان معروضتان|$1 صÙحات Ùرعية معروضة|$1 صÙحة Ùرعية معروضة}} بالأسÙÙ„.',
+'movenosubpage' => 'ليس لهذه الصÙحة صÙحات Ùرعية.',
'movereason' => 'السبب:',
'revertmove' => 'استرجع',
'delete_and_move' => 'حذ٠ونقل',
@@ -2878,7 +2952,7 @@ $1 ممنوع بالÙعل. هل تريد تغيير الإعدادات؟',
'allmessagesdefault' => 'النص الاÙتراضي',
'allmessagescurrent' => 'النص الحالي',
'allmessagestext' => 'هذه قائمة برسائل النظام المتوÙرة ÙÙŠ نطاق ميدياويكي.
-من Ùضلك زر [http://www.mediawiki.org/wiki/Localisation ترجمة ميدياويكي] Ùˆ [http://translatewiki.net بيتاويكي] لو كنت ترغب ÙÙŠ المساهمة ÙÙŠ ترجمة ميدياويكي الأساسية.',
+من Ùضلك زر [//www.mediawiki.org/wiki/Localisation ترجمة ميدياويكي] Ùˆ [//translatewiki.net بيتاويكي] لو كنت ترغب ÙÙŠ المساهمة ÙÙŠ ترجمة ميدياويكي الأساسية.',
'allmessagesnotsupportedDB' => "هذه الصÙحة لا يمكن استخدامها لأن '''\$wgUseDatabaseMessages''' تم تعطيله.",
'allmessages-filter-legend' => 'المرشح',
'allmessages-filter' => 'رشح حسب حالة التخصيص:',
@@ -2946,9 +3020,9 @@ $1 ممنوع بالÙعل. هل تريد تغيير الإعدادات؟',
'importlogpage' => 'سجل الاستيراد',
'importlogpagetext' => 'عمليات الاستيراد الإدارية للصÙحات مع تاريخ التعديل من ويكيات أخرى.',
'import-logentry-upload' => 'استورد [[$1]] بواسطة رÙع ملÙ',
-'import-logentry-upload-detail' => '$1 {{PLURAL:$1|مراجعة واحدة|مراجعة}}',
+'import-logentry-upload-detail' => '{{PLURAL:$1|لا مراجعات|مراجعة واحدة|مراجعتان|$1 مراجعات|$1 مراجعة}}',
'import-logentry-interwiki' => 'استورد عبر الويكي $1',
-'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|مراجعة واحدة|مراجعة}} من $2',
+'import-logentry-interwiki-detail' => '{{PLURAL:$1||مراجعة واحدة|مراجعتان|$1 مراجعات|$1 مراجعة}} من $2',
# Tooltip help for the actions
'tooltip-pt-userpage' => 'صÙحة المستخدم الخاصة بك',
@@ -3020,35 +3094,42 @@ $1 ممنوع بالÙعل. هل تريد تغيير الإعدادات؟',
'tooltip-summary' => 'أدخل ملخصا قصيرا',
# Stylesheets
-'common.css' => '/* ستؤثر الأنماط المتراصة (CSS) المعروضة هنا على كل الواجهات */',
-'standard.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة ستاندرد */',
-'nostalgia.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة نوستالشيا */',
-'cologneblue.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة كولون بلو */',
-'monobook.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة مونوبوك */',
-'myskin.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة ماي سكين */',
-'chick.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة تشيك */',
-'simple.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة سيمبل */',
-'modern.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة مودرن */',
-'vector.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة Ùكتور */',
-'print.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على ناتج الطباعة */',
-'handheld.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على الأجهزة المحمولة بالاعتماد على الواجهة المضبوطة ÙÙŠ $wgHandheldStyle */',
+'common.css' => '/* ستؤثر الأنماط المتراصة (CSS) المعروضة هنا على كل الواجهات */',
+'standard.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة ستاندرد */',
+'nostalgia.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة نوستالشيا */',
+'cologneblue.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة كولون بلو */',
+'monobook.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة مونوبوك */',
+'myskin.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة ماي سكين */',
+'chick.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة تشيك */',
+'simple.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة سيمبل */',
+'modern.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة مودرن */',
+'vector.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على مستخدمي واجهة Ùكتور */',
+'print.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على ناتج الطباعة */',
+'handheld.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على الأجهزة المحمولة بالاعتماد على الواجهة المضبوطة ÙÙŠ $wgHandheldStyle */',
+'noscript.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على المستخدمين الذين الجاÙاسكريبت لديهم معطلة */',
+'group-autoconfirmed.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على المستخدمين المؤكدين تلقائيا Ùقط */',
+'group-bot.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على البوتات Ùقط */',
+'group-sysop.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على الإداريين Ùقط */',
+'group-bureaucrat.css' => '/* الأنماط المتراصة CSS المعروضة هنا ستؤثر على البيروقراطيين Ùقط */',
# Scripts
-'common.js' => '/* الجاÙاسكريبت الموضوع هنا سيتم تحميله لكل المستخدمين مع كل تحميل للصÙحة. */',
-'standard.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة ستاندرد */',
-'nostalgia.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة نوستالشيا */',
-'cologneblue.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة كولون بلو */',
-'monobook.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة مونوبوك */',
-'myskin.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة ماي سكين */',
-'chick.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة تشيك */',
-'simple.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة سيمبل */',
-'modern.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة مودرن */',
-'vector.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة Ùكتور */',
+'common.js' => '/* الجاÙاسكريبت الموضوع هنا سيتم تحميله لكل المستخدمين مع كل تحميل للصÙحة. */',
+'standard.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة ستاندرد */',
+'nostalgia.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة نوستالشيا */',
+'cologneblue.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة كولون بلو */',
+'monobook.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة مونوبوك */',
+'myskin.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة ماي سكين */',
+'chick.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة تشيك */',
+'simple.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة سيمبل */',
+'modern.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة مودرن */',
+'vector.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين الذين يستعملون واجهة Ùكتور */',
+'group-autoconfirmed.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للمستخدمين المؤكدين تلقائيا Ùقط */',
+'group-bot.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للبوتات Ùقط */',
+'group-sysop.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للإداريين Ùقط */',
+'group-bureaucrat.js' => '/* أي جاÙاسكريبت هنا سيتم تحميلها للبيروقراطيين Ùقط */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata معطلة لهذا الخادوم.',
-'nocreativecommons' => 'Creative Commons RDF metadata معطلة لهذا الخادوم.',
-'notacceptable' => 'لا يمكن لخادوم الويكي تزويدك ببيانات بصيغة يستطيع عميلك قراءتها.',
+'notacceptable' => 'لا يمكن لخادوم الويكي تزويدك ببيانات بصيغة يستطيع عميلك قراءتها.',
# Attribution
'anonymous' => '{{PLURAL:$1|مستخدم مجهول|مستخدمون مجهولون}} ل{{SITENAME}}',
@@ -3072,12 +3153,17 @@ $1 ممنوع بالÙعل. هل تريد تغيير الإعدادات؟',
'spam_blanking' => 'كل النسخ احتوت على وصلات Ù„ $1ØŒ Ø¥Ùراغ',
# Info page
-'infosubtitle' => 'المعلومات للصÙحة',
-'numedits' => 'عدد التعديلات (صÙحة): $1',
-'numtalkedits' => 'عدد التعديلات (صÙحة نقاش): $1',
-'numwatchers' => 'عدد المراقبين: $1',
-'numauthors' => 'عدد المحررين (صÙحة): $1',
-'numtalkauthors' => 'عدد المحررين (صحÙØ© نقاش): $1',
+'pageinfo-title' => 'المعلومات ل"$1"',
+'pageinfo-header-edits' => 'التعديلات',
+'pageinfo-header-watchlist' => 'قائمة المراقبة',
+'pageinfo-header-views' => 'مشاهدات',
+'pageinfo-subjectpage' => 'الصÙحة',
+'pageinfo-talkpage' => 'صÙحة نقاش',
+'pageinfo-watchers' => 'عدد المراقبين',
+'pageinfo-edits' => 'عدد التعديلات',
+'pageinfo-authors' => 'عدد المؤلÙين المختلÙين',
+'pageinfo-views' => 'عدد المشاهدات',
+'pageinfo-viewsperedit' => 'المشاهدات لكل تعديل',
# Skin names
'skinname-standard' => 'كلاسيك',
@@ -3090,26 +3176,6 @@ $1 ممنوع بالÙعل. هل تريد تغيير الإعدادات؟',
'skinname-modern' => 'مودرن',
'skinname-vector' => 'Ùكتور',
-# Math options
-'mw_math_png' => 'دائما اعرض على هيئة PNG',
-'mw_math_simple' => 'اعرض على هيئة HTML للصيغ البسيطة جدا، وإلا Ùاعرض بهئية PNG',
-'mw_math_html' => 'اعرض بصيغة HTML إن أمكن، وإلا Ùاعرض كهيئة PNG',
-'mw_math_source' => 'اعرض على هيئة TeX (للمتصÙحات النصية)',
-'mw_math_modern' => 'مستحسن للمتصÙحات الحديثة',
-'mw_math_mathml' => 'اعرض بصيغة MathML إن أمكن (تجريبي)',
-
-# Math errors
-'math_failure' => 'خطأ رياضيات',
-'math_unknown_error' => 'خطأ غير معروÙ',
-'math_unknown_function' => 'وظيÙØ© غير معروÙØ©',
-'math_lexing_error' => 'خطأ ÙÙŠ الصيغة',
-'math_syntax_error' => 'خطأ ÙÙŠ الصياغة',
-'math_image_error' => 'Ùشل التحويل إلى صيغة PNGØ› تحقق من تثبيت كل من Latex Ùˆ dvipng (أو dvips + gs + محول)',
-'math_bad_tmpdir' => 'لا يمكن الكتابة إلى أو إنشاء مجلد الرياضيات المؤقت',
-'math_bad_output' => 'لا يمكن الكتابة إلى أو إنشاء مجلد الخرج للرياضيات',
-'math_notexvc' => 'Ù…Ùقود texvc executableØ›
-من Ùضلك انظر math/README للضبط.',
-
# Patrolling
'markaspatrolleddiff' => 'علم كمراجعة',
'markaspatrolledtext' => 'علم على هذه الصÙحة كمراجعة',
@@ -3145,21 +3211,24 @@ $1',
'nextdiff' => 'التعديل اللاحق â†',
# Media information
-'mediawarning' => "'''تحذير''': قد يحتوي نوع هذا المل٠على كود خبيث، يمكن عند تشغيله السيطرة على نظامك.",
-'imagemaxsize' => "حد حجم الصور:<br />''(لصÙحات وص٠الملÙات)''",
-'thumbsize' => 'حجم العرض المصغر:',
-'widthheightpage' => '$1×$2ØŒ $3 {{PLURAL:$3|صÙحة|صÙحة}}',
-'file-info' => 'حجم الملÙ: $1ØŒ نوع MIME: $2',
-'file-info-size' => '$1 × $2 بكسل حجم الملÙ: $3ØŒ نوع MIME: $4',
-'file-nohires' => '<small>لا توجد دقة أعلى متوÙرة.</small>',
-'svg-long-desc' => 'مل٠SVGØŒ أبعاده $1 × $2 بكسل، حجم الملÙ: $3',
-'show-big-image' => 'دقة كاملة',
-'show-big-image-thumb' => '<small>حجم هذا العرض: $1 × $2 بكسل</small>',
-'file-info-gif-looped' => 'ملÙÙˆÙ',
-'file-info-gif-frames' => '{{PLURAL:$1||إطار واحد|إطاران|$1 إطارات|$1 إطارا|$1 إطار}}',
-'file-info-png-looped' => 'ملÙÙˆÙ',
-'file-info-png-repeat' => 'عرضت {{PLURAL:$1||مرة واحدة|مرتين|$1 مرات|$1 مرة}}',
-'file-info-png-frames' => '{{PLURAL:$1||إطار واحد|إطاران|$1 إطارات|$1 إطارًا|$1 إطار}}',
+'mediawarning' => "'''تحذير''': قد يحتوي نوع هذا المل٠على كود خبيث، يمكن عند تشغيله السيطرة على نظامك.",
+'imagemaxsize' => "حد حجم الصور:<br />''(لصÙحات وص٠الملÙات)''",
+'thumbsize' => 'حجم العرض المصغر:',
+'widthheightpage' => '$1×$2ØŒ {{PLURAL:$1|لا صÙحات|صÙحة واحدة|صÙحتان|$1 صÙحات|$1 صÙحة}}',
+'file-info' => 'حجم الملÙ: $1ØŒ نوع MIME: $2',
+'file-info-size' => '$1 × $2 بكسل حجم الملÙ: $3ØŒ نوع MIME: $4',
+'file-info-size-pages' => '$1 × $2 بكسل, حجم المل٠: $3 ØŒ نوع المل٠: $4 ØŒ $5 {{PLURAL:$5| صÙحة | صÙحات}}',
+'file-nohires' => '<small>لا توجد دقة أعلى متوÙرة.</small>',
+'svg-long-desc' => 'مل٠SVGØŒ أبعاده $1 × $2 بكسل، حجم الملÙ: $3',
+'show-big-image' => 'دقة كاملة',
+'show-big-image-preview' => '<small>حجم هذه المعاينة: $1.</small>',
+'show-big-image-other' => '<small>الأبعاد الأخرى: $1.</small>',
+'show-big-image-size' => '$1 × $2 بكسل',
+'file-info-gif-looped' => 'ملÙÙˆÙ',
+'file-info-gif-frames' => '{{PLURAL:$1||إطار واحد|إطاران|$1 إطارات|$1 إطارا|$1 إطار}}',
+'file-info-png-looped' => 'ملÙÙˆÙ',
+'file-info-png-repeat' => 'عرضت {{PLURAL:$1||مرة واحدة|مرتين|$1 مرات|$1 مرة}}',
+'file-info-png-frames' => '{{PLURAL:$1||إطار واحد|إطاران|$1 إطارات|$1 إطارًا|$1 إطار}}',
# Special:NewFiles
'newimages' => 'معرض الملÙات الجديدة',
@@ -3192,7 +3261,7 @@ $1',
إذا كان المل٠قد عدل عن حالته الأصلية، Ùبعض التÙاصيل قد لا تعبر عن المل٠المعدل.',
'metadata-expand' => 'عرض التÙاصيل الممتدة',
'metadata-collapse' => 'إخÙاء التÙاصيل الممتدة',
-'metadata-fields' => 'حقول معطيات الميتا EXIF الموجودة ÙÙŠ هذه الرسالة سو٠تعرض ÙÙŠ صÙحة الصورة عندما يكون جدول معطيات الميتا مضغوطا.
+'metadata-fields' => 'حقول معطيات الميتا الموجودة ÙÙŠ هذه الرسالة سو٠تعرض ÙÙŠ صÙحة الصورة عندما يكون جدول معطيات الميتا مضغوطا.
الحقول الأخرى ستكون مخÙية اÙتراضيا.
* make
* model
@@ -3200,7 +3269,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'العرض',
@@ -3215,13 +3290,11 @@ $1',
'exif-ycbcrpositioning' => 'وضع Y و C',
'exif-xresolution' => 'الدقة الأÙقية',
'exif-yresolution' => 'الدقة الرأسية',
-'exif-resolutionunit' => 'وحدة تحليل X و Y',
'exif-stripoffsets' => 'موقع بيانات الصورة',
'exif-rowsperstrip' => 'عدد الصÙو٠لكل شريحة',
'exif-stripbytecounts' => 'بايت لكل شريحة مضغوطة',
'exif-jpeginterchangeformat' => 'الحد ل JPEG SOI',
'exif-jpeginterchangeformatlength' => 'بايت من بيانات JPEG',
-'exif-transferfunction' => 'وظيÙØ© النقل',
'exif-whitepoint' => 'ألوان النقطة البيضاء',
'exif-primarychromaticities' => 'ألوان الأساسيات',
'exif-ycbcrcoefficients' => 'معاملات مصÙÙˆÙØ© تحويل Ùراغ اللون',
@@ -3240,7 +3313,6 @@ $1',
'exif-compressedbitsperpixel' => 'طور ضغط الصورة',
'exif-pixelydimension' => 'عرض الصورة',
'exif-pixelxdimension' => 'ارتÙاع الصورة',
-'exif-makernote' => 'ملاحظات المصنع',
'exif-usercomment' => 'تعليقات المستخدم',
'exif-relatedsoundfile' => 'مل٠صوتي مرتبط',
'exif-datetimeoriginal' => 'تاريخ ووقت توليد البيانات',
@@ -3255,7 +3327,6 @@ $1',
'exif-exposureprogram' => 'برنامج التعرض',
'exif-spectralsensitivity' => 'الحساسية الطيÙية',
'exif-isospeedratings' => 'تقييم سرعة أيزو',
-'exif-oecf' => 'عامل التحويل الكهروضوئي',
'exif-shutterspeedvalue' => 'سرعة الغالق APEX',
'exif-aperturevalue' => 'Ùتحة الغالق APEX',
'exif-brightnessvalue' => 'سطوع APEX',
@@ -3269,7 +3340,6 @@ $1',
'exif-focallength-format' => '$1 ملم',
'exif-subjectarea' => 'مساحة الجسم',
'exif-flashenergy' => 'طاقة الÙلاش',
-'exif-spatialfrequencyresponse' => 'استجابة التردد الÙراغي',
'exif-focalplanexresolution' => 'تحليل المستوى البؤري X',
'exif-focalplaneyresolution' => 'تحليل المستوى البؤري Y',
'exif-focalplaneresolutionunit' => 'وحدة تحليل المستوى البؤري',
@@ -3278,7 +3348,6 @@ $1',
'exif-sensingmethod' => 'وسيلة الاستشعار',
'exif-filesource' => 'مصدر الملÙ',
'exif-scenetype' => 'نوع المشهد',
-'exif-cfapattern' => 'نمط CFA',
'exif-customrendered' => 'معالجة الصورة حسب الطلب',
'exif-exposuremode' => 'طور التعرض',
'exif-whitebalance' => 'توازن الأبيض',
@@ -3323,11 +3392,88 @@ $1',
'exif-gpsareainformation' => 'اسم مساحة GPS',
'exif-gpsdatestamp' => 'تاريخ GPS',
'exif-gpsdifferential' => 'تصحيح GPS التÙاضلي',
+'exif-jpegfilecomment' => 'تعليق مل٠JPEG',
+'exif-keywords' => 'الكلمات المÙتاحية',
+'exif-worldregioncreated' => ' المنطقة التي التقطت الصورة Ùيها',
+'exif-countrycreated' => 'الدولة التي التقطت الصورة Ùيها',
+'exif-countrycodecreated' => 'رمز البلد التي أخذت الصورة Ùيه',
+'exif-provinceorstatecreated' => 'المقاطعة أو الدولة اين تم التقاط هذه الصورة',
+'exif-citycreated' => ' المدينة التي التقطت الصورة Ùيها',
+'exif-sublocationcreated' => 'موقع من المدينة التي تم التقاط هذه الصورة Ùيها',
+'exif-worldregiondest' => 'مناطق العالم المعروضة',
+'exif-countrydest' => 'الدولة المصورة',
+'exif-countrycodedest' => 'رمز الدولة المصورة',
+'exif-provinceorstatedest' => 'المقاطعة أو الولاية المصورة',
+'exif-citydest' => 'المدينة المصورة',
+'exif-sublocationdest' => 'موقع من المدينة المعروضة',
'exif-objectname' => 'عنوان قصير',
+'exif-specialinstructions' => 'تعليمات خاصة',
+'exif-headline' => 'عنوان',
+'exif-credit' => 'الرصيد/المزود',
+'exif-source' => 'المصدر',
+'exif-editstatus' => 'الحالة التحريرية للصورة',
+'exif-urgency' => 'إلحاح',
+'exif-fixtureidentifier' => 'اسم العنصر',
+'exif-locationdest' => 'اسم الموقع مصورا',
+'exif-locationdestcode' => 'رمز الموقع مصورا',
+'exif-objectcycle' => 'الوقت من اليوم المتعلق بوسائل الإعلام',
+'exif-contact' => 'معلومات الاتصال',
+'exif-writer' => 'الكاتب',
+'exif-languagecode' => 'اللغة',
+'exif-iimversion' => 'نسخة IIM',
+'exif-iimcategory' => 'التصنيÙ',
+'exif-iimsupplementalcategory' => 'تصنيÙات تكميلية',
+'exif-datetimeexpires' => 'لا تستخدم بعد',
+'exif-datetimereleased' => 'صدر ÙÙŠ يوم',
+'exif-originaltransmissionref' => 'رمز موقع الإرسال الأصلي',
+'exif-identifier' => 'معرÙ',
+'exif-lens' => 'العدسة المستخدمة',
+'exif-serialnumber' => 'الرقم التسلسلي للكاميرا',
+'exif-cameraownername' => 'مالك الكاميرا',
+'exif-label' => 'علامة',
+'exif-datetimemetadata' => 'آخر تعديل للبيانات التعريÙية',
+'exif-nickname' => 'الاسم غير الرسمي للصورة',
+'exif-rating' => 'التقييم (من 5)',
+'exif-rightscertificate' => 'شهادة إدارة الحقوق',
+'exif-copyrighted' => 'حالة حقوق النشر',
+'exif-copyrightowner' => 'مالك حقوق النشر',
+'exif-usageterms' => 'شروط الاستخدام',
+'exif-webstatement' => 'بيان حقوق التألي٠والنشر على شبكة الإنترنت',
+'exif-originaldocumentid' => 'المعر٠الÙريد للمستند الأصلي',
+'exif-licenseurl' => 'عنوان الموقع لرخصة حقوق الطبع والنشر',
+'exif-morepermissionsurl' => 'معلومات الرخصة البديلة',
+'exif-attributionurl' => 'عند إعادة استخدام الملÙØŒ رجاءً ضع وصلة إلى',
+'exif-preferredattributionname' => 'عند إعادة استخدام الملÙØŒ رجاءً انسبه إلى',
+'exif-pngfilecomment' => 'تعليق مل٠PNG',
+'exif-disclaimer' => 'إخلاء مسؤولية',
+'exif-contentwarning' => 'تحذير محتوى',
+'exif-giffilecomment' => 'تعليق مل٠GIF',
+'exif-intellectualgenre' => 'نوع العنصر',
+'exif-subjectnewscode' => 'رمز الموضوع',
+'exif-scenecode' => 'رمز مشهد IPTC',
+'exif-event' => 'اسم الحدث مصورا',
+'exif-organisationinimage' => 'المنظمة مصورة',
+'exif-personinimage' => 'الشخص مصورا',
+'exif-originalimageheight' => 'ارتÙاع الصورة قبل أن تقتطع',
+'exif-originalimagewidth' => 'عرض الصورة قبل أن تقتطع',
+
+# Make & model, can be wikified in order to link to the camera and model name
+'exif-subjectnewscode-value' => '$2 ($1)',
# EXIF attributes
-'exif-compression-1' => 'غير مضغوط',
-'exif-compression-6' => 'جيه بي إي جي',
+'exif-compression-1' => 'غير مضغوط',
+'exif-compression-2' => 'CCITT المجموعة 3 -1 تعديل طول تشغيل ترميز هوÙمان البعدي',
+'exif-compression-3' => 'ترميز Ùاكس المجموعة 3 CCITT',
+'exif-compression-4' => 'ترميز Ùاكس المجموعة 4 CCITT',
+'exif-compression-6' => 'JPEG (قديم)',
+'exif-compression-7' => 'جيه بي إي جي',
+'exif-compression-8' => 'Deflate (أدوبي)',
+'exif-compression-32773' => 'PackBits (ماكنتوش RLE)',
+'exif-compression-32946' => 'Deflate (بي كيه زيب)',
+'exif-compression-34712' => 'جيه بي إي جي2000',
+
+'exif-copyrighted-true' => 'محÙوظ الحقوق',
+'exif-copyrighted-false' => 'ملكية عامة',
'exif-photometricinterpretation-2' => 'آر جي بي',
'exif-photometricinterpretation-6' => 'واي سب سر',
@@ -3349,8 +3495,8 @@ $1',
'exif-xyresolution-i' => '$1 نقطة لكل بوصة',
'exif-xyresolution-c' => '$1 دي بي سي',
-'exif-colorspace-1' => 'إس آر جي بي',
-'exif-colorspace-ffff.h' => 'إ٠إ٠إ٠إÙ.إتش',
+'exif-colorspace-1' => 'إس آر جي بي',
+'exif-colorspace-65535' => 'غير معاير',
'exif-componentsconfiguration-0' => 'غير موجود',
'exif-componentsconfiguration-1' => 'واي',
@@ -3475,6 +3621,10 @@ $1',
'exif-gpslongitude-e' => 'خط الطول الشرقي',
'exif-gpslongitude-w' => 'خط الطول الغربي',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '{{PLURAL:$1||متر|متران|$1 أمتار|$1 مترًا|$1 متر}} Ùوق سطح البحر',
+'exif-gpsaltitude-below-sealevel' => '{{PLURAL:$1||متر|متران|$1 أمتار|$1 مترًا|$1 متر}} تحت سطح البحر',
+
'exif-gpsstatus-a' => 'عملية القياس الحالية',
'exif-gpsstatus-v' => 'شمول القياس',
@@ -3486,21 +3636,73 @@ $1',
'exif-gpsspeed-m' => 'ميل ÙÙŠ الساعة',
'exif-gpsspeed-n' => 'عقد',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'كيلومتر',
+'exif-gpsdestdistance-m' => 'ميل',
+'exif-gpsdestdistance-n' => 'ميل بحري',
+
+'exif-gpsdop-excellent' => 'ممتاز ($1)',
+'exif-gpsdop-good' => 'جيد ($1)',
+'exif-gpsdop-moderate' => 'متوسط ($1)',
+'exif-gpsdop-fair' => 'مقبول ($1)',
+'exif-gpsdop-poor' => 'ضعي٠($1)',
+
+'exif-objectcycle-a' => 'صباحا Ùقط',
+'exif-objectcycle-p' => 'مساء Ùقط',
+'exif-objectcycle-b' => 'صباحا ومساء',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'الاتجاه الحقيقي',
'exif-gpsdirection-m' => 'الاتجاه المغناطيسي',
+'exif-ycbcrpositioning-1' => 'توسيط',
+'exif-ycbcrpositioning-2' => 'مذكورة ÙÙŠ أكثر من موقع',
+
+'exif-dc-contributor' => 'المساهمون',
+'exif-dc-coverage' => 'النطاق المكاني أو الزماني لوسائل الإعلام',
+'exif-dc-date' => 'التاريخ (التواريخ)',
+'exif-dc-publisher' => 'الناشر',
+'exif-dc-relation' => 'وسائط متعلقة',
+'exif-dc-rights' => 'الحقوق',
+'exif-dc-source' => 'مصدر الوسائط',
+'exif-dc-type' => 'نوع الوسيط',
+
+'exif-rating-rejected' => 'مرÙوض',
+
+'exif-isospeedratings-overflow' => 'أكبر من 65535',
+
+'exif-iimcategory-ace' => 'Ùنون وثقاÙØ© وترÙيه',
+'exif-iimcategory-clj' => 'جريمة وقانون',
+'exif-iimcategory-dis' => 'كوارث وحوادث',
+'exif-iimcategory-fin' => 'اقتصاد وتجارة',
+'exif-iimcategory-edu' => 'تعليم',
+'exif-iimcategory-evn' => 'بيئة',
+'exif-iimcategory-hth' => 'صحة',
+'exif-iimcategory-hum' => '# اهتمام البشرية',
+'exif-iimcategory-lab' => 'عمل',
+'exif-iimcategory-lif' => 'أسلوب الحياة وأوقات الÙراغ',
+'exif-iimcategory-pol' => 'سياسة',
+'exif-iimcategory-rel' => 'دين ومعتقدات',
+'exif-iimcategory-sci' => 'علم وتقنية',
+'exif-iimcategory-soi' => 'قضايا اجتماعية',
+'exif-iimcategory-spo' => 'رياضة',
+'exif-iimcategory-war' => 'حروب وصراعات واضطرابات',
+'exif-iimcategory-wea' => 'الطقس',
+
+'exif-urgency-normal' => 'عادي ($1)',
+'exif-urgency-low' => 'منخÙض ( $1 )',
+'exif-urgency-high' => 'عالي ( $1 )',
+'exif-urgency-other' => 'الأولوية المعرÙØ© من قبل المستخدم ($1)',
+
# External editor support
'edit-externally' => 'عدل هذا المل٠باستخدام تطبيق خارجي',
-'edit-externally-help' => '(انظر [http://www.mediawiki.org/wiki/Manual:External_editors تعليمات الإعداد] لمزيد من المعلومات)',
+'edit-externally-help' => '(انظر [//www.mediawiki.org/wiki/Manual:External_editors تعليمات الإعداد] لمزيد من المعلومات)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'الكل',
-'imagelistall' => 'الكل',
-'watchlistall2' => 'الكل',
-'namespacesall' => 'الكل',
-'monthsall' => 'الكل',
-'limitall' => 'الكل',
+'watchlistall2' => 'الكل',
+'namespacesall' => 'الكل',
+'monthsall' => 'الكل',
+'limitall' => 'الكل',
# E-mail address confirmation
'confirmemail' => 'تأكيد عنوان البريد الإلكتروني',
@@ -3586,11 +3788,12 @@ $1',
'trackbackdeleteok' => 'المتابعة تم حذÙها بنجاح.',
# Delete conflict
-'deletedwhileediting' => "'''تحذير''': هذه الصÙحة تم حذÙها بعد أن بدأت أنت بتعديلها!",
-'confirmrecreate' => "حذ٠المستخدم [[User:$1|$1]] ([[User talk:$1|نقاش]]) هذه الصÙحة بعد أن بدأت أنت بتحريرها للسبب التالي:
+'deletedwhileediting' => "'''تحذير''': هذه الصÙحة تم حذÙها بعد أن بدأت أنت بتعديلها!",
+'confirmrecreate' => "حذ٠المستخدم [[User:$1|$1]] ([[User talk:$1|نقاش]]) هذه الصÙحة بعد أن بدأت أنت بتحريرها للسبب التالي:
:''$2''
الرجاء التأكد من أنك تريد إعادة إنشاء هذه الصÙحة.",
-'recreate' => 'أعد الإنشاء',
+'confirmrecreate-noreason' => 'حذ٠المستخدم [[User:$1|$1]] ([[User talk:$1|نقاش]]) هذه الصÙحة بعد أن بدأت أنت بتحريرها. الرجاء التأكد من أنك تريد إعادة إنشاء هذه الصÙحة.',
+'recreate' => 'أعد الإنشاء',
'unit-pixel' => 'بك',
@@ -3599,6 +3802,12 @@ $1',
'confirm-purge-top' => 'امسح مختزن هذه الصÙحة؟',
'confirm-purge-bottom' => 'Ø¥Ùراغ مختزن الصÙحة يمحو المختزن ويجبر أحدث نسخة على الظهور.',
+# action=watch/unwatch
+'confirm-watch-button' => 'مواÙÙ‚',
+'confirm-watch-top' => 'إضاÙØ© هذه الصÙحة إلى قائمة مراقبتك؟',
+'confirm-unwatch-button' => 'مواÙÙ‚',
+'confirm-unwatch-top' => 'إزالة هذه الصÙحة من قائمة مراقبتك؟',
+
# Separators for various lists, etc.
'semicolon-separator' => 'Ø›&#32;',
'comma-separator' => '،&#32;',
@@ -3617,7 +3826,7 @@ $1',
'table_pager_first' => 'الصÙحة الأولى',
'table_pager_last' => 'الصÙحة الأخيرة',
'table_pager_limit' => 'اعرض $1 مدخلة ÙÙŠ الصÙحة',
-'table_pager_limit_label' => 'العناصر لكل صÙحة:',
+'table_pager_limit_label' => 'العناصر ÙÙŠ كل صÙحة:',
'table_pager_limit_submit' => 'اذهب',
'table_pager_empty' => 'لا نتائج',
@@ -3634,36 +3843,36 @@ $1',
'size-gigabytes' => '$1 جيجابايت',
# Live preview
-'livepreview-loading' => 'تحميل…',
-'livepreview-ready' => 'تحميل… جاهز!',
+'livepreview-loading' => 'ÙŠÙحمّل...',
+'livepreview-ready' => 'ÙŠÙحمّل… جاهز!',
'livepreview-failed' => 'Ùشل العرض المباشر!
حاول تجربة العرض العادي.',
'livepreview-error' => 'لم ينجح الاتصال: $1 "$2"
حاول تجربة العرض العادي.',
# Friendlier slave lag warnings
-'lag-warn-normal' => 'التغييرات الأحدث من $1 {{PLURAL:$1|ثانية|ثانية}} قد لا تظهر ÙÙŠ هذه القائمة.',
+'lag-warn-normal' => 'التغييرات الأحدث من {{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتين|$1 ثوانÙ|$1 ثانية}} قد لا تظهر ÙÙŠ هذه القائمة.',
'lag-warn-high' => 'نتيجة لوجود تأخر كبير ÙÙŠ تحديث قاعدة بيانات الخادوم، التغييرات الأحدث من {{PLURAL:$1|أقل من ثانية|ثانية واحدة|ثانيتين|$1 ثوانÙ|$1 ثانية}} ربما لا تكون ظاهرة ÙÙŠ هذه القائمة.',
# Watchlist editor
-'watchlistedit-numitems' => 'قائمة مراقبتك تحتوي على {{PLURAL:$1|عنوان واحد|$1 عنوان}}ØŒ بدون احتساب صÙحات النقاش.',
+'watchlistedit-numitems' => 'قائمة مراقبتك تحتوي على {{PLURAL:$1||عنوان واحد|عنوانين|$1 عناوين|$1 عنوانًا|$1 عنوان}}ØŒ بدون احتساب صÙحات النقاش.',
'watchlistedit-noitems' => 'قائمة مراقبتك لا تحتوي على أية عناوين.',
'watchlistedit-normal-title' => 'تعديل قائمة المراقبة',
'watchlistedit-normal-legend' => 'إزالة عناوين من قائمة المراقبة',
'watchlistedit-normal-explain' => 'العناوين ÙÙŠ قائمة مراقبتك معروضة بالأسÙÙ„.
لإزالة عنوان، اضغط على الصندوق بجواره، واضغط "{{int:Watchlistedit-normal-submit}}".
-يمكنك أيضا [[Special:Watchlist/raw|تعديل القائمة الخام]].',
+يمكنك أيضا [[Special:EditWatchlist/raw|تعديل القائمة الخام]].',
'watchlistedit-normal-submit' => 'أزل العناوين',
-'watchlistedit-normal-done' => '{{PLURAL:$1|عنوان واحد|$1 عنوان}} تمت إزالته من قائمة مراقبتك:',
+'watchlistedit-normal-done' => 'تمت إزالة {{PLURAL:$1||عنوان واحد|عنوانين|$1 عناوين|$1 عنوانا|$1 عنوان}} من قائمة مراقبتك:',
'watchlistedit-raw-title' => 'تعديل قائمة المراقبة الخام',
'watchlistedit-raw-legend' => 'عدل قائمة المراقبة الخام',
'watchlistedit-raw-explain' => 'العناوين ÙÙŠ قائمة مراقبتك معروضة بالأسÙÙ„ØŒ ويمكن تعديلها عن طريق الإضاÙØ© والإزالة من القائمة؛ عنوان واحد لكل سطر.
عند الانتهاء، اضغط "{{int:Watchlistedit-raw-submit}}".
-يمكنك أيضا [[Special:Watchlist/edit|استخدام المحرر القياسي]].',
+يمكنك أيضا [[Special:EditWatchlist|استخدام المحرر القياسي]].',
'watchlistedit-raw-titles' => 'العناوين:',
'watchlistedit-raw-submit' => 'حدث قائمة المراقبة',
'watchlistedit-raw-done' => 'قائمة مراقبتك تم تحديثها.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|عنوان واحد|$1 عنوان}} تمت إضاÙته:',
+'watchlistedit-raw-added' => 'تمت إضاÙØ© {{PLURAL:$1||عنوان واحد|عنوانين|$1 عناوين|$1 عنوانا|$1 عنوان}}:',
'watchlistedit-raw-removed' => 'تمت إزالة {{PLURAL:$1||عنوان واحد|عنوانين|$1 عناوين|$1 عنوانا|$1 عنوان}}:',
# Watchlist editing tools
@@ -3737,34 +3946,34 @@ $1',
'duplicate-defaultsort' => '\'\'\'تحذير:\'\'\' Ù…Ùتاح الترتيب الاÙتراضي "$2" يتجاوز Ù…Ùتاح الترتيب الاÙتراضي السابق "$1".',
# Special:Version
-'version' => 'نسخة',
-'version-extensions' => 'الامتدادات المثبتة',
-'version-specialpages' => 'صÙحات خاصة',
-'version-parserhooks' => 'خطاطي٠المحلل',
-'version-variables' => 'المتغيرات',
-'version-skins' => 'واجهات',
-'version-other' => 'أخرى',
-'version-mediahandlers' => 'متحكمات الميديا',
-'version-hooks' => 'الخطاطيÙ',
-'version-extension-functions' => 'وظائ٠الامتداد',
-'version-parser-extensiontags' => 'وسوم امتداد المحلل',
-'version-parser-function-hooks' => 'خطاطي٠دالة المحلل',
-'version-skin-extension-functions' => 'دوال امتداد الواجهة',
-'version-hook-name' => 'اسم الخطاÙ',
-'version-hook-subscribedby' => 'يستخدم بواسطة',
-'version-version' => '(نسخة $1)',
-'version-svn-revision' => '(&رلم;r$2)',
-'version-license' => 'الرخصة',
-'version-poweredby-credits' => "تدار هذه الويكي ب'''[http://www.mediawiki.org/ ميدياويكي]''', حقوق النشر © 2001-$1 $2.",
-'version-poweredby-others' => 'آخرون',
-'version-license-info' => "ميدياويكي برنامج حر، يحق لك توزيعه Ùˆ/أو تعديله ÙˆÙقاً لبنود رخصة غنو العمومية كما نشرتها مؤسسة البرمجيات الحرة، الإصدار الثاني أو (ÙˆÙقا لاختيارك أنت) أي إصدار لاحق.
+'version' => 'نسخة',
+'version-extensions' => 'الامتدادات المثبتة',
+'version-specialpages' => 'صÙحات خاصة',
+'version-parserhooks' => 'خطاطي٠المحلل',
+'version-variables' => 'المتغيرات',
+'version-antispam' => 'منع البريد المزعج',
+'version-skins' => 'واجهات',
+'version-other' => 'أخرى',
+'version-mediahandlers' => 'متحكمات الميديا',
+'version-hooks' => 'الخطاطيÙ',
+'version-extension-functions' => 'وظائ٠الامتداد',
+'version-parser-extensiontags' => 'وسوم امتداد المحلل',
+'version-parser-function-hooks' => 'خطاطي٠دالة المحلل',
+'version-hook-name' => 'اسم الخطاÙ',
+'version-hook-subscribedby' => 'يستخدم بواسطة',
+'version-version' => '(نسخة $1)',
+'version-svn-revision' => '(&رلم;r$2)',
+'version-license' => 'الرخصة',
+'version-poweredby-credits' => "تدار هذه الويكي ب'''[//www.mediawiki.org/ ميدياويكي]''', حقوق النشر © 2001-$1 $2.",
+'version-poweredby-others' => 'آخرون',
+'version-license-info' => "ميدياويكي برنامج حر، يحق لك توزيعه Ùˆ/أو تعديله ÙˆÙقاً لبنود رخصة غنو العمومية كما نشرتها مؤسسة البرمجيات الحرة، الإصدار الثاني أو (ÙˆÙقا لاختيارك أنت) أي إصدار لاحق.
هذا البرنامج يوزع على أمل أن يكون Ù…Ùيداً، ولكن '''دون أية ضمانات'''ØŒ بما ÙÙŠ ذلك ضمانات '''التسويق''' أو '''الملاءمة لغرض معين'''. انظر رخصة غنو العمومية لمزيد من التÙاصيل.
-ينبغي أن تكون قد تلقيت نسخة من رخصة غنو العمومية إذا لم يتم ذلك، اكتب إلى: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA أو [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html اقرأ على الإنترنت].",
-'version-software' => 'البرنامج المثبت',
-'version-software-product' => 'المنتج',
-'version-software-version' => 'النسخة',
+ينبغي أن تكون قد تلقيت نسخة من رخصة غنو العمومية إذا لم يتم ذلك، اكتب إلى: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA أو [//www.gnu.org/licenses/old-licenses/gpl-2.0.html اقرأ على الإنترنت].",
+'version-software' => 'البرنامج المثبت',
+'version-software-product' => 'المنتج',
+'version-software-version' => 'النسخة',
# Special:FilePath
'filepath' => 'مسار ملÙ',
@@ -3774,22 +3983,22 @@ $1',
ستعرض الصور بأقصى دقة، ستعمل أنواع الملÙات الأخرى بالبرنامج المخصص لهم مباشرة.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'بحث عن ملÙات مكررة',
-'fileduplicatesearch-summary' => 'ابحث عن الملÙات المكررة بناء على قيمة الهاش الخاصة بها.
-
-أدخل اسم المل٠بدون بادئة "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'بحث عن مكرر',
-'fileduplicatesearch-filename' => 'اسم الملÙ:',
-'fileduplicatesearch-submit' => 'ابحث',
-'fileduplicatesearch-info' => '$1 × $2 بكسل<br />حجم الملÙ: $3<br />نوع MIME: $4',
-'fileduplicatesearch-result-1' => 'المل٠"$1" ليس له تكرار مطابق.',
-'fileduplicatesearch-result-n' => 'المل٠"$1" له {{PLURAL:$2|1 تكرار مطابق|$2 تكرار مطابق}}.',
+'fileduplicatesearch' => 'بحث عن ملÙات مكررة',
+'fileduplicatesearch-summary' => 'ابحث عن الملÙات المكررة بناء على قيم الهاش.',
+'fileduplicatesearch-legend' => 'بحث عن مكرر',
+'fileduplicatesearch-filename' => 'اسم الملÙ:',
+'fileduplicatesearch-submit' => 'ابحث',
+'fileduplicatesearch-info' => '$1 × $2 بكسل<br />حجم الملÙ: $3<br />نوع MIME: $4',
+'fileduplicatesearch-result-1' => 'المل٠"$1" ليس له تكرار مطابق.',
+'fileduplicatesearch-result-n' => 'المل٠"$1" له {{PLURAL:$2|1 تكرار مطابق|$2 تكرار مطابق}}.',
+'fileduplicatesearch-noresults' => 'لا مل٠بالاسم "$1" تم العثور عليه.',
# Special:SpecialPages
'specialpages' => 'الصÙحات الخاصة',
'specialpages-note' => '----
* صÙحات خاصة عادية.
-* <strong class="mw-specialpagerestricted">صÙحات خاصة للمخولين.</strong>',
+* <span class="mw-specialpagerestricted">صÙحات خاصة للمخولين.</span>
+* <span class="mw-specialpagecached">صÙحات خاصة لبيانات مخزنة Ùقط (قد تكون مهجورة).</span>',
'specialpages-group-maintenance' => 'تقارير الصيانة',
'specialpages-group-other' => 'صÙحات خاصة أخرى',
'specialpages-group-login' => 'دخول / تسجيل',
diff --git a/languages/messages/MessagesArc.php b/languages/messages/MessagesArc.php
index f213e88e..7dcb6503 100644
--- a/languages/messages/MessagesArc.php
+++ b/languages/messages/MessagesArc.php
@@ -10,10 +10,13 @@
* @author 334a
* @author A2raya07
* @author Basharh
+ * @author Man2fly2002
* @author Michaelovic
* @author The Thadman
*/
+$rtl = true;
+
$namespaceNames = array(
NS_MEDIA => 'Ü¡ÜÜ•ÜÜ',
NS_SPECIAL => 'Ü•ÜܠܢÜÜ',
@@ -40,29 +43,29 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
+ 'Allmessages' => array( 'ÜŸÜ _Üܓܪ̈ܬÜ' ),
+ 'Allpages' => array( 'ÜŸÜ _ܦÜܬܬ̈Ü' ),
+ 'Blankpage' => array( 'ܦÜܬÜ_ܣܦÜܩܬÜ' ),
+ 'Categories' => array( 'ܣܕܪ̈Ü' ),
+ 'Contributions' => array( 'ܫܘܬܦܘÜܬ̈Ü' ),
'CreateAccount' => array( 'ܒܪÜ_ܚܘܫܒܢÜ' ),
- 'Preferences' => array( 'Ü“Ü’Üܬ̈Ü' ),
- 'Watchlist' => array( 'ܪ̈ܗÜܬÜ' ),
- 'Recentchanges' => array( 'ܫܘܚܠܦ̈Ü_ܚܕ̈ܬÜ' ),
- 'Upload' => array( 'Üܣܩ' ),
- 'Shortpages' => array( 'ܦÜܬܬ̈Ü_ܟܪ̈ÜܬÜ' ),
+ 'DeletedContributions' => array( 'ܫܘܬܦܘÜܬ̈Ü_Ü«Üܦܬ̈Ü' ),
+ 'Filepath' => array( 'Ü«Ü’ÜÜ Ü_ܕܦÜܬÜ' ),
+ 'Log' => array( 'ܣܓܠ̈Ü' ),
'Longpages' => array( 'ܦÜܬܬ̈Ü_Üܪ̈ÜܟܬÜ' ),
+ 'Movepage' => array( 'Ü«Ü¢Ü_ܦÜܬÜ' ),
+ 'Mycontributions' => array( 'ܫܘܬܦܘÜܬ̈Ü' ),
'Newpages' => array( 'ܦÜܬܬ̈Ü_ܚܕ̈ܬܬÜ' ),
+ 'Preferences' => array( 'Ü“Ü’Üܬ̈Ü' ),
'Protectedpages' => array( 'ܦÜܬܬ̈Ü_ܢܛÜܪ̈ܬÜ' ),
'Protectedtitles' => array( 'ܟܘܢÜ̈Ü_ܢܛÜܪ̈Ü' ),
- 'Allpages' => array( 'ÜŸÜ _ܦÜܬܬ̈Ü' ),
+ 'Recentchanges' => array( 'ܫܘܚܠܦ̈Ü_ܚܕ̈ܬÜ' ),
+ 'Search' => array( 'ܒܨÜÜ' ),
+ 'Shortpages' => array( 'ܦÜܬܬ̈Ü_ܟܪ̈ÜܬÜ' ),
'Specialpages' => array( 'ܦÜܬܬ̈Ü_ܕ̈ÜܠܢÜܬÜ' ),
- 'Contributions' => array( 'ܫܘܬܦܘÜܬ̈Ü' ),
+ 'Upload' => array( 'Üܣܩ' ),
+ 'Watchlist' => array( 'ܪ̈ܗÜܬÜ' ),
'Whatlinkshere' => array( 'Ü¡Ü_Üܣܪ_ܠܗܪܟÜ' ),
- 'Movepage' => array( 'Ü«Ü¢Ü_ܦÜܬÜ' ),
- 'Categories' => array( 'ܣܕܪ̈Ü' ),
- 'Allmessages' => array( 'ÜŸÜ _Üܓܪ̈ܬÜ' ),
- 'Log' => array( 'ܣܓܠ̈Ü' ),
- 'Mycontributions' => array( 'ܫܘܬܦܘÜܬ̈Ü' ),
- 'Search' => array( 'ܒܨÜÜ' ),
- 'Filepath' => array( 'Ü«Ü’ÜÜ Ü_ܕܦÜܬÜ' ),
- 'Blankpage' => array( 'ܦÜܬÜ_ܣܦÜܩܬÜ' ),
- 'DeletedContributions' => array( 'ܫܘܬܦܘÜܬ̈Ü_Ü«Üܦܬ̈Ü' ),
);
$magicWords = array(
@@ -92,13 +95,6 @@ $magicWords = array(
'url_wiki' => array( '0', 'ܘÜÜ©Ü', 'WIKI' ),
);
-$rtl = true;
-
-$defaultUserOptionOverrides = array(
- # Swap sidebar to right side by default
- 'quickbar' => 2,
-);
-
$messages = array(
# User preference toggles
'tog-underline' => 'ܪܫܘܡ Ü£ÜªÜ›Ü Ü¬ÜšÜܬ ÜܣܘܪÜ:',
@@ -232,7 +228,7 @@ $messages = array(
'searcharticle' => 'ܙܠ',
'history' => 'ܬܫܥÜÜ¬Ü Ü•Ü¦ÜܬÜ',
'history_short' => 'ܬܫܥÜܬÜ',
-'info_short' => 'Üܕ̈ܥܬÜ',
+'updatedmarker' => 'Üܬܚܕܬ Ü—Ü Ü¡Ü¢ Ü¬Ü¦Ü©Ü¬Ü ÜܚܪÜܬÜ',
'printableversion' => 'Ü¨ÜšÜšÜ Ü¡Ü¬Ü›Ü’Ü¥Ü¢Ü',
'permalink' => 'ÜÜ£Ü˜ÜªÜ Ü¦ÜܘܫÜ',
'print' => 'ܛܒܘܥ',
@@ -243,6 +239,7 @@ $messages = array(
'delete' => 'ܫܘܦ',
'deletethispage' => 'ܫܘܦ ܦÜÜ¬Ü Ü—Ü•Ü',
'undelete_short' => 'Ü Ü Ü«Ü˜Ü¦ {{PLURAL:$1|ܚܕ ܫܘܚܠܦÜ|$1 ܫܘܚܠܦ̈Ü}}',
+'viewdeleted_short' => 'ÜšÜ™Ü {{PLURAL:$1|ܚܕ Ü«Ü˜ÜšÜ Ü¦Ü Ü«ÜܦÜ|$1 Ü«Ü˜ÜšÜ Ü¦ÌˆÜ Ü«Üܦ̈Ü}}',
'protect' => 'ܢܛܘܪ',
'protect_change' => 'ܫܚܠܦ',
'protectthispage' => 'ܢܛܘܪ Ü—Ü•Ü Ü¦ÜܬÜ',
@@ -275,6 +272,11 @@ $messages = array(
'jumpto' => 'ܫܘܪ ܠ:',
'jumptonavigation' => 'ÜܠܦܪܘܬÜ',
'jumptosearch' => 'ܒܨÜÜ',
+'view-pool-error' => 'ܬܘÜÜšÜØŒ ÜšÜ•Ü¡ÌˆÜ Ü—Ü˜Ü Ü“Ü—ÌˆÜÜ Ü—Ü«ÜÜܬ
+Ü£Ü“Ü Ü¡Ü¦Ü ÜšÜ¢ÌˆÜ Ü©Ü«Ü•Ü˜ÜªÜ Ü Ü¡Ü›Ü Ü Ü—Ü¢Ü Ü¦ÜܬÜ
+ܦÜÜ£Ü Ü¡Ü¢ÜŸ Ü£ÜŸÜ Ü©Ü ÜÜ  Ü¡Ü¢ Ü©Ü•Ü¡ ܕܓܪܒܬ Ü Ü¡Ü›ÜÜ Ü ÜÜ—Ü Ü¦ÜÜ¬Ü Ü¬Ü¢Üܢܘܬ.
+
+$1',
'pool-errorunknown' => 'Ü¦Ü˜Ü•Ü Ü Ü ÜÜ•ÜÜ¥Ü',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
@@ -345,6 +347,13 @@ $messages = array(
'badtitle' => 'ܟܘܢÜÜ Ü Ü Ü›Ü’Ü',
'viewsource' => 'ÜšÜ™Ü Ü¡Ü’Ü˜Ü¥Ü',
'viewsourcefor' => 'Ü• $1',
+'actionthrottled' => 'Ü Ü Ü˜ÜªÜ• ܠܡܥܒܕ ÜܬÜܪ Ü¡Ü¢ ÜÜ—Ü Ü¥Ü’Ü•Ü',
+'viewsourcetext' => 'Ü¡Ü¨Ü Üܢܬ ܠܚܙÜÜ Ü˜Ü¢Ü£ÜšÜ Ü Ü¡Ü’Ü˜Ü¥ÌˆÜ Ü•ÜÜ—Ü Ü¦ÜܬÜ:',
+'protectedinterface' => 'ÜÜ—Ü Ü¦ÜÜ¬Ü Ü¡Ü˜Ü¬ÜªÜ ÜŸÜ¬ÜÜ’Ü¬Ü Ü•Ü¦ÜÜ¬Ü Ü ÜšÜ˜ÜªÜ™Ü, ܘÜÜÜ Ü— Ü¢Ü›ÜªÜ¬Ü Ü Ü¡Ü˜Ü¢Ü¥Ü ÜšÜªÜ’Ü.',
+'editinginterface' => "''ܙܘܗܪÜ:''' Üܢܬ ܥܒܕܬ Ü«ÜšÜ Ü¦Ü¬Ü Ü’Ü¦ÜÜ¬Ü Ü¡Ü¬Ü¦Ü ÜšÜ¬ Ü Ü¡Ü˜Ü¬Ü˜ÜªÌˆÜ Ü¦ÜÜ¬Ü˜Ü¬ÌˆÜ ÜŸÜ¬ÜÜ’ÌˆÜ Ü ÜšÜ˜ÜªÜ™Ü.
+ÜŸÜ  Ü«Ü˜ÜšÜ Ü¦Ü Ü’ÜÜ—Ü Ü¦ÜÜ¬Ü Ü’Ü• ܥܒܕ ܟܪ ܥܠ ܡܚܙÜÜ¬Ü Ü¦ÜÜ¬Ü Ü•Ü¡Ü¦Ü ÜšÜ¢Ü Ü Ü¡Ü¦Ü ÜšÜ¢ÌˆÜ Üܚܪ̈ÜÜ¢Ü.
+ܠܬܘܪ̈ܓܡÜØŒ ܡܦܠܚ ܬܪܡÜÜ¬Ü Ü¬Ü˜ÜªÜ“Ü¡Ü Ü•Ü¡ÜÜ•ÜÜܘÜÜ©Ü [//translatewiki.net/wiki/Main_Page?setlang=ar translatewiki.net].",
+'sqlhidden' => '(Ü’Ü˜Ü¬Ü¬Ü SQL ܛܫÜÜ)',
'namespaceprotected' => "Ü Üܬ Ü ÜŸ Ü¦Ü£Ü£Ü Ü Ü«ÜšÜ Ü¦Ü¬Ü Ü•Ü¦ÜÜ¬Ü¬ÌˆÜ Ü’ÜšÜ©Ü Ü Ü•'''$1'''.",
# Login and logout pages
@@ -373,12 +382,14 @@ $messages = array(
'createaccount' => 'Ü’ÜªÜ ÜšÜ˜Ü«Ü’Ü¢Ü',
'gotaccount' => "ÜÜܬ Ü ÜŸ ܚܘܫܒܢÜØŸ '''$1'''.",
'gotaccountlink' => 'ܥܘܠ',
+'userlogin-resetlink' => 'ÜܬܢܫÜܬ ÜÜ•ÌˆÜ¥Ü¬Ü Ü•Ü¥Ü Ü ÜØŸ',
'createaccountmail' => 'Ü’ÜÜ• Ü’ÜÜ Ü•ÜªÜ ÜܠܩܛܪܘܢÜÜ',
'createaccountreason' => 'ܥܠܬÜ',
'badretype' => 'Ü¡Ü Ü¬Ü Ü•Ü¥Ü Ü Ü ÜŸÜ¬Ü’Ü¬ Üܢܬ Ü Ü ÜܘÜܢܬÜ.',
'userexists' => 'Ü«Ü¡Ü Ü•Ü¡Ü¦Ü ÜšÜ¢Ü Ü•Üܥܠܬ Ü«Ü©ÜÜ Ü ÜÜܬܘܗÜ.
ܫܦÜܪÜÜܬ Ü“Ü’Ü Ü«Ü¡Ü ÜܚܪܢÜ.',
'loginerror' => 'Ü¦Ü˜Ü•Ü Ü’Ü¥Ü Ü Ü',
+'createaccounterror' => 'Ü Ü Ü¡Ü«ÜŸÜš ܠܒܪÜÜ ÜšÜ˜Ü«Ü’Ü¢Ü: $1',
'noname' => 'Ü Ü Ü¦ÜªÜ« Üܢܬ Ü«Ü¡Ü Ü•Ü¡Ü¦Ü ÜšÜ¢Ü Ü¬ÜªÜܨÜ',
'loginsuccesstitle' => 'Ü¥Ü Ü Ü Ü“Ü¡Üª',
'loginsuccess' => "'''Ü—Ü«Ü Ü¥Ü ÜÜ Ü Üܢܬ Ü’{{SITENAME}} Ü’Ü«Ü¡ \"\$1\".'''",
@@ -393,7 +404,7 @@ $messages = array(
'createaccount-title' => 'ܒܪÜÜ Ü•ÜšÜ˜Ü«Ü’Ü¢Ü Ü’ {{SITENAME}}',
'loginlanguagelabel' => 'Ü Ü«Ü¢Ü: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ܫܚܠܦ Ü¡Ü Ü¬Ü Ü•Ü¥Ü Ü Ü',
'resetpass_header' => 'ܫܚܠܦ Ü¡Ü Ü¬Ü Ü•Ü¥Ü Ü Ü Ü•ÜšÜ˜Ü«Ü’Ü¢Ü',
'oldpassword' => 'Ü¡Ü Ü¬Ü Ü•Ü¥Ü Ü Ü Ü¥Ü¬ÜܩܬÜ:',
@@ -403,6 +414,9 @@ $messages = array(
'resetpass-submit-cancel' => 'ܒܛܘܠ',
'resetpass-temp-password' => 'Ü¡Ü Ü¬Ü Ü•Ü¥Ü Ü Ü Ü™Ü’Ü¢Ü¢ÜܬÜ:',
+# Special:PasswordReset
+'passwordreset-username' => 'Ü«Ü¡Ü Ü•Ü¡Ü¦Ü ÜšÜ¢Ü:',
+
# Edit page toolbar
'bold_sample' => 'ÜŸÜ¬Ü’Ü¬Ü Ü¥Ü’ÜܬÜ',
'bold_tip' => 'ÜŸÜ¬Ü’Ü¬Ü Ü¥Ü’ÜܬÜ',
@@ -572,7 +586,7 @@ $messages = array(
'searchprofile-images' => 'Ü¡Üܕ̈ÜÜ Ü£Ü“ÜÜÌˆÜ (Multimedia)',
'searchprofile-everything' => 'ÜŸÜ  Ü¡Ü•Ü¡',
'searchprofile-advanced' => 'ܡܬܩܕܡܢÜ',
-'searchprofile-articles-tooltip' => 'Search in $1',
+'searchprofile-articles-tooltip' => '',
'searchprofile-project-tooltip' => '',
'search-result-size' => '$1 ({{PLURAL:$2|1 ܡܠܬÜ|$2 ܡܠ̈Ü}})',
'search-redirect' => '(ܨÜÜ’ $1)',
@@ -611,7 +625,6 @@ $messages = array(
'changepassword' => 'ܫܚܠܦ Ü¡Ü Ü¬Ü Ü•Ü¥Ü Ü Ü',
'prefs-skin' => 'Ü“Ü Ü•Ü',
'skin-preview' => 'ÜšÜÜªÜ Ü©Ü•Ü¡ÜÜ',
-'prefs-math' => 'ܡܬܡÜÜ›ÜܩܘܬÜ',
'datedefault' => 'Ü Ü Ü“Ü’ÜܬÜ',
'prefs-datetime' => 'Ü£ÜÜ©Ü˜Ü¡Ü Ü˜Ü™Ü’Ü¢Ü',
'prefs-personal' => 'Ü¦Ü˜Ü“ÜªÜ¦Ü Ü•Ü¡Ü¦Ü ÜšÜ¢Ü',
@@ -861,7 +874,6 @@ $1',
'imagelinks' => 'ÜšÜ«ÜšÜ¬Ü Ü•Ü Ü¦Ü¦Ü',
'linkstoimage' => '{{PLURAL:$1|ܦÜÜ¬Ü Ü—Ü•Ü Üܣܪ|$1 ܦÜÜ¬Ü¬ÌˆÜ Ü—Ü ÜÜ¢ ÜܣܪÜÜ¢}} ܥܡ Ü—Ü¢Ü Ü Ü¦Ü¦Ü:',
'nolinkstoimage' => 'Ü Üܬ ܦÜÜ¬Ü Ü•Üܣܪ Ü Ü—Ü¢Ü Ü Ü¦Ü¦Ü.',
-'redirectstofile' => '{{PLURAL:$1|ܠܦܦÜ|$1 ܠܦܦ̈Ü}} Ü•ÜÜ¬Ü Üܣܪ Ü Ü—Ü¢Ü Ü Ü¦Ü¦Ü:',
'uploadnewversion-linktext' => 'Üܣܩ Ü¨ÜšÜšÜ ÜšÜ•Ü¬Ü Ü¡Ü¢ Ü—Ü¢Ü Ü Ü¦Ü¦Ü',
'shared-repo-from' => 'Ü¡Ü¢ $1',
@@ -1005,7 +1017,7 @@ $1',
'sp-deletedcontributions-contribs' => 'ܫܘܬܦܘÜܬ̈Ü',
# Special:LinkSearch
-'linksearch' => 'ÜÜ£Ü˜ÜªÜ Ü’ÜªÜÜ',
+'linksearch' => 'ÜÜ£Ü˜ÜªÌˆÜ Ü’ÜªÌˆÜÜ Ü’Ü¨ÜÜ',
'linksearch-ns' => 'ܚܩܠÜ:',
'linksearch-ok' => 'ܒܨÜ',
@@ -1068,8 +1080,6 @@ $1',
'watchlistfor2' => 'Ü  $1 $2',
'nowatchlist' => 'Ü Üܬ Ü ÜŸ Ü¡Ü•Ü¡ ܒܪ̈ܗÜÜ¬Ü Ü•ÜÜ ÜŸ',
'watchnologin' => 'Ü ÜܬÜÜŸ ܥܠÜÜ Ü',
-'addedwatch' => 'Üܘܣܦ ܠܪ̈ܗÜܬÜ',
-'removedwatch' => 'Ü ÜšÜܬ Ü¡Ü¢ ܪ̈ܗÜܬܟ',
'removedwatchtext' => 'ܦÜÜ¬Ü "[[:$1]]" Üܫܬܩܠܬ Ü¡Ü¢ [[Special:Watchlist|ܪ̈ܗÜܬܟ]].',
'watch' => 'ܪܗÜ',
'watchthispage' => 'ÜªÜ—Ü Ü—Ü•Ü Ü¦ÜܬÜ',
@@ -1222,11 +1232,9 @@ $1',
'blockip' => 'ܚܪܘܡ ܡܦܠܚܢÜ',
'blockip-title' => 'ܚܪܘܡ ܡܦܠܚܢÜ',
'blockip-legend' => 'ܚܪܘܡ ܡܦܠܚܢÜ',
-'ipaddress' => 'ÜÜ Ü¦Ü (IP):',
'ipadressorusername' => 'ÜÜ Ü¦Ü (IP) Üܘ Ü«Ü¡Ü Ü•Ü¡Ü¦Ü ÜšÜ¢Ü:',
'ipbreason' => 'ܥܠܬÜ:',
'ipbreasonotherlist' => 'Ü¥Ü Ü¬Ü ÜܚܪܬÜ',
-'ipbanononly' => 'ܚܪܘܡ Ü¡Ü¦Ü ÜšÜ¢ÌˆÜ Ü Ü Üܕ̈ÜÜ¥Ü Ü’Ü ÜšÜ˜Ü•',
'ipbsubmit' => 'ܚܪܘܡ Ü¡Ü¦Ü ÜšÜ¢Ü Ü—Ü¢Ü',
'ipbother' => 'Ü¥Ü•Ü¢Ü ÜܚܪܬÜ',
'ipboptions' => '2 ܫܥܬ̈Ü:2 hours,1 ÜܘܡÜ:1 day,3 Üܘܡܬ̈Ü:3 days,1 ܫܒܘܥÜ:1 week,2 ܫܒܘܥ̈Ü:2 weeks,1 ÜܪܚÜ:1 month,3 Üܪ̈ܚÜ:3 months,6 Üܪ̈ܚÜ:6 months,1 ܫܢܬÜ:1 year,Ü•Ü Ü Ü£ÜŸ:infinite',
@@ -1244,12 +1252,8 @@ $1',
'unblocked' => 'Üܫܬܩܠ ÜšÜªÜ¡Ü Ü¡Ü¢ [[User:$1|$1]]',
'ipblocklist' => 'Ü¡Ü¦Ü ÜšÜ¢ÌˆÜ Ü¡ÜšÜªÌˆÜ¡Ü',
'ipblocklist-legend' => 'ÜÜ«ÜŸÜš Ü¡Ü¦Ü ÜšÜ¢Ü Ü¡ÜšÜªÜ¡Ü',
-'ipblocklist-username' => 'ÜÜ Ü¦Ü (IP) Üܘ Ü«Ü¡Ü Ü•Ü¡Ü¦Ü ÜšÜ¢Ü:',
-'ipblocklist-sh-userblocks' => '$1 ÜšÜªÌˆÜ¡Ü Ü•ÜšÜ˜Ü«Ü’Ü¢Ü',
-'ipblocklist-sh-tempblocks' => '$1 ÜšÜªÌˆÜ¡Ü Ü™Ü’Ü¢Ü¢Ü̈Ü',
'ipblocklist-submit' => 'ܒܨÜ',
'ipblocklist-localblock' => 'ÜšÜªÜ¡Ü Ü•Ü˜ÜŸÜ¬Ü¢ÜÜ',
-'blocklistline' => '$1, $2 ܚܪܡ $3 ($4)',
'infiniteblock' => 'Ü•Ü Ü Ü£ÜŸ',
'anononlyblock' => 'Ü Ü Üܕ̈ÜÜ¥Ü Ü’Ü ÜšÜ˜Ü•',
'ipblocklist-empty' => 'Ü£Ü“Ü Ü Ü•ÜšÜªÜ¡Ü Ü£Ü¦ÜÜ©Ü.',
@@ -1263,8 +1267,7 @@ $1',
'block-log-flags-anononly' => 'Ü¡Ü¦Ü ÜšÜ¢ÌˆÜ Ü Ü Üܕ̈ÜÜ¥Ü Ü’Ü ÜšÜ˜Ü•',
'block-log-flags-hiddenname' => 'Ü«Ü¡Ü Ü•Ü¡Ü¦Ü ÜšÜ¢Ü Ü›Ü˜Ü«ÜÜ',
'ipb_already_blocked' => '"$1" Ü¡ÜšÜªÜ¡Ü Ü—Ü˜ Ü¡Ü¢ ܟܕܘ',
-'ipb-needreblock' => '==Ü¡ÜšÜªÜ¡Ü Ü¡Ü¢ ܟܕܘ==
-"$1" Ü¡ÜšÜªÜ¡Ü Ü—Ü˜ Ü¡Ü¢ ܟܕܘ
+'ipb-needreblock' => '"$1" Ü¡ÜšÜªÜ¡Ü Ü—Ü˜ Ü¡Ü¢ ܟܕܘ
Do you want to change the settings?',
'blockme' => 'ܚܪܘܡ Ü Ü',
'proxyblocksuccess' => 'ܒܪÜ',
@@ -1338,17 +1341,6 @@ Do you want to change the settings?',
'anonusers' => '{{SITENAME}} {{PLURAL:$2|Ü¡Ü¦Ü ÜšÜ¢Ü Ü Ü ÜÜ•ÜÜ¥Ü|Ü¡Ü¦Ü ÜšÜ¢ÌˆÜ Ü Ü Üܕ̈ÜÜ¥Ü}} $1',
'creditspage' => 'Ü™Ü•ÌˆÜ©Ü Ü•Ü¦ÜܬÜ',
-# Info page
-'infosubtitle' => 'ÜÜ•ÌˆÜ¥Ü¬Ü Ü•Ü¦ÜܬÜ',
-'numedits' => 'Ü¡Ü¢ÜÜ¢Ü Ü•Ü«Ü˜ÜšÜ Ü¦ÌˆÜ (ܦÜܬÜ): $1',
-'numtalkedits' => 'Ü¡Ü¢ÜÜ¢Ü Ü•Ü«Ü˜ÜšÜ Ü¦ÌˆÜ (ܦÜÜ¬Ü Ü•Ü•Ü˜ÜªÜ«Ü): $1',
-'numwatchers' => 'Ü¡Ü¢ÜÜ¢Ü Ü•ÜªÌˆÜ—ÜÜ: $1',
-'numauthors' => 'Ü¡Ü¢ÜÜ¢Ü Ü•Ü¡Ü«ÜšÜ Ü¦Ü¢ÌˆÜ (ܦÜܬÜ): $1',
-'numtalkauthors' => 'Ü¡Ü¢ÜÜ¢Ü Ü•Ü¡Ü«ÜšÜ Ü¦Ü¢ÌˆÜ (ܦÜÜ¬Ü Ü•Ü•Ü˜ÜªÜ«Ü): $1',
-
-# Math errors
-'math_unknown_error' => 'Ü¦Ü˜Ü•Ü Ü Ü ÜÜ•ÜÜ¥Ü',
-
# Patrol log
'patrol-log-auto' => '(ÜܬÜÜܬ)',
'patrol-log-diff' => 'ܬܢÜÜ¬Ü $1',
@@ -1386,7 +1378,6 @@ $1',
'exif-imagelength' => 'ÜܘܪܟÜ',
'exif-xresolution' => 'Ü¢Ü©Ü•Ü˜Ü¬Ü ÜܘܦܩÜܬÜ',
'exif-yresolution' => 'Ü¢Ü©Ü•Ü˜Ü¬Ü Ü¥Ü¡Ü˜Ü•ÜܬÜ',
-'exif-resolutionunit' => 'ܚܕÜÜ˜Ü¬Ü Ü• X ܘ Y ܕܢܩܕܘܬÜ',
'exif-imagedescription' => 'ܟܘܢÜÜ Ü•Ü¨Ü˜ÜªÜ¬Ü',
'exif-artist' => 'Ü£ÜܘܡÜ',
'exif-exposuretime-format' => '$1 ÜªÜ¦Ü¦Ü ($2)',
@@ -1395,6 +1386,7 @@ $1',
'exif-gpstrack' => 'Ü¨Ü˜Ü’Ü Ü•Ü«Ü˜Ü¢ÜÜ',
'exif-gpsimgdirectionref' => 'Ü“Ü’ÜÜ¬Ü Ü•Ü¨Ü˜Ü’Ü Ü•Ü«Ü˜Ü¢ÜÜ',
'exif-gpsimgdirection' => 'Ü¨Ü˜Ü’Ü Ü•Ü¨Ü˜ÜªÜ¬Ü',
+'exif-languagecode' => 'Ü Ü«Ü¢Ü',
'exif-unknowndate' => 'Ü£ÜÜ©Ü˜Ü¡Ü Ü Ü ÜÜ•ÜÜ¥Ü',
@@ -1436,17 +1428,18 @@ $1',
'exif-gpsspeed-m' => 'Ü¡ÜÜ Ü Ü’Ü«Ü¥Ü¬Ü',
'exif-gpsspeed-n' => 'ܩܛܪ̈Ü',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-m' => 'Ü¡Üܠ̈Ü',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Ü¨Ü˜Ü’Ü Ü¬ÜªÜܨÜ',
'exif-gpsdirection-m' => 'Ü¨Ü˜Ü’Ü Ü¡Ü“Ü¢Ü›ÜÜ£ÜÜ',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ÜŸÜ ',
-'imagelistall' => 'ÜŸÜ ',
-'watchlistall2' => 'ÜŸÜ ',
-'namespacesall' => 'ÜŸÜ ',
-'monthsall' => 'ÜŸÜ ',
-'limitall' => 'ÜŸÜ ',
+'watchlistall2' => 'ÜŸÜ ',
+'namespacesall' => 'ÜŸÜ ',
+'monthsall' => 'ÜŸÜ ',
+'limitall' => 'ÜŸÜ ',
# E-mail address confirmation
'confirmemail' => 'ܚܬܬ Ü’ÜÜ Ü•ÜªÜ ÜܠܩܛܪܘܢÜÜ',
diff --git a/languages/messages/MessagesArn.php b/languages/messages/MessagesArn.php
index e6257b38..90c25db9 100644
--- a/languages/messages/MessagesArn.php
+++ b/languages/messages/MessagesArn.php
@@ -8,6 +8,7 @@
* @file
*
* @author Clerc
+ * @author Fiestoforo
* @author Kaniw
* @author Lin linao
* @author Poquil
@@ -78,8 +79,10 @@ $messages = array(
'dec' => 'konlu disiempüre küyeṉ mew',
# Categories related messages
+'category-empty' => "''Tüfachi trokiñ fewla nielay wülngiñ kam fill dungu no rume.''",
'listingcontinuesabbrev' => 'ramt.',
+'about' => 'Ñi dungu',
'moredotdotdot' => 'Doy...',
'mypage' => 'tañi nütramkawe',
'mytalk' => 'Tañi nütramkawe',
@@ -96,12 +99,14 @@ $messages = array(
'faqpage' => 'Project:FAQ',
# Vector skin
-'vector-action-delete' => 'Ñamümün',
-'vector-view-create' => 'Zewmape',
-'vector-view-edit' => 'Pepikan',
-'vector-view-history' => 'Pegelpe rupañmael',
-'vector-view-view' => 'Chillkatun',
-
+'vector-action-delete' => 'Ñamümün',
+'vector-action-protect' => 'Kuñiwtun',
+'vector-view-create' => 'Zewmape',
+'vector-view-edit' => 'Pepikan',
+'vector-view-history' => 'Pegelpe rupañmael',
+'vector-view-view' => 'Chillkatun',
+
+'errorpagetitle' => 'Welulkan',
'returnto' => 'Amutun $1 püle.',
'tagline' => '{{SITENAME}} mew',
'help' => 'Kejuaqen',
@@ -121,6 +126,7 @@ $messages = array(
'delete' => 'Ñamümün',
'deletethispage' => 'Ñamümün tüfachi pakina',
'protect' => 'Elulan ñi wiriael',
+'protect_change' => 'kalekünun',
'unprotect' => 'Elun ñi wiriael',
'newpage' => 'We Pakina',
'talkpage' => 'Nütramkafinge tüfachi pakina',
@@ -145,6 +151,10 @@ $messages = array(
'jumptosearch' => 'kintupe',
# 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}} ñi dungu',
+'aboutpage' => 'Project:Dungu',
+'currentevents' => 'Fantepu chemkün',
+'disclaimers' => 'Tukulzugun ñi pin ley',
'edithelp' => 'Kellü wirin',
'edithelppage' => 'Help:Chum wiringekey pakina',
'helppage' => 'Help:Kellu',
@@ -152,6 +162,7 @@ $messages = array(
'mainpage-description' => 'Ñizol Wvbgiñ',
'portal' => 'Lofce ñi wvbgiñ',
'portal-url' => 'Project:Lofce ñi wvbgiñ',
+'privacy' => 'Kuñiwtun kimel dungu',
'ok' => 'Feley',
'youhavenewmessages' => 'Nieymi $1 ($2).',
@@ -159,7 +170,9 @@ $messages = array(
'youhavenewmessagesmulti' => 'Nieymi we yefalzugu $1 mew.',
'editsection' => 'pepikan',
'editold' => 'pepikan',
+'viewsourceold' => 'Kimam chew küpan chi wirin',
'editlink' => 'pepikan',
+'viewsourcelink' => 'kimam chew küpan chi wirin',
'editsectionhint' => 'Ñom ñi pepikan: $1',
'showtoc' => 'pegelpe',
'hidetoc' => 'ellkan',
@@ -171,7 +184,10 @@ $messages = array(
'nstab-main' => 'Pakina',
'nstab-user' => 'Kellufe',
'nstab-special' => 'Kangelu',
+'nstab-project' => 'Zeumanzugu wülngiñ',
+'nstab-image' => 'Eltukawün',
'nstab-mediawiki' => 'Yefalzugu',
+'nstab-template' => 'Aztükupeyüm',
'nstab-help' => 'Kelluwe',
'nstab-category' => 'Xokiñ',
@@ -183,17 +199,29 @@ $messages = array(
# Login and logout pages
'yourname' => 'Tami üy',
'yourpassword' => 'Tami kondungu',
+'yourpasswordagain' => 'Rüf feypinge nülawe:',
'login' => 'Konvn',
'nav-login-createaccount' => 'Cijkantvkuwvn/Konvn',
'userlogin' => 'Cijkantvkuwvn/Konvn',
'logout' => 'Tripan',
'userlogout' => 'Tripan',
'notloggedin' => 'Petu konlaymi.',
-'nologin' => "Nielaymi kiñe lludüwe? '''$1'''.",
-'nologinlink' => 'Dewmafinge',
+'nologin' => 'Nielaymi kiñe lludüwe? $1.',
+'nologinlink' => 'Dewmafinge konün',
+'createaccount' => 'Dewmafinge konün',
+'gotaccount' => 'Dew nieymi konün? $1.',
'gotaccountlink' => 'Konün',
+'userlogin-resetlink' => 'Ngoyüniengetuymi chumngechi konün?',
'loginlanguagelabel' => 'Cezugun: $1',
+# Edit page toolbar
+'bold_sample' => 'Kurükünualu wirin',
+'bold_tip' => 'Kurükünualu wirin',
+'italic_sample' => 'Küllüke wirin',
+'italic_tip' => 'Küllüke wirin',
+'link_sample' => 'Lasun ñi üy',
+'extlink_sample' => 'http://www.example.com Lasun ñi üy',
+
# Edit pages
'subject' => 'Dungu/üy:',
'minoredit' => 'Tüfachi ta kiñe pichi wirin',
@@ -202,12 +230,17 @@ $messages = array(
'showpreview' => 'Pen chum müley',
'loginreqlink' => 'Koni',
'newarticle' => '(We)',
+'previewnote' => "'''Ngüneduamimi tüfachi wüne pen petu eltukawam!'''
+Eltukawlelay feychi kalekünun!",
'editing' => 'Wirimekey $1',
'editingcomment' => 'Wirin $1 (Dungu)',
'yourtext' => 'Tami wirin',
'template-protected' => '(Ngünaytun)',
# History pages
+'previousrevision' => '↠Rupachi malün',
+'nextrevision' => 'Kangelu malün →',
+'currentrevisionlink' => 'Fantepu malün',
'page_first' => 'wünen',
'history-fieldset-title' => 'Kintun pünon mew',
'historyempty' => '(welli)',
@@ -219,6 +252,9 @@ $messages = array(
'rev-delundel' => 'pegelpe/ejkape',
'rev-showdeleted' => 'pegelpe',
'revdelete-show-file-submit' => 'May',
+'revdel-restore' => 'kalekünun pengengen',
+'revdel-restore-deleted' => 'liftugepelu malün',
+'revdel-restore-visible' => 'pengengekelu malün',
'pagehist' => 'pünon pakina',
'deletedhist' => 'Ñamümüngelu pünon',
'revdelete-uname' => 'Ãœy kellufe',
@@ -228,11 +264,19 @@ $messages = array(
# History merging
'mergehistory-reason' => 'Dungu:',
+# Merge log
+'revertmerge' => 'Wüñoeltun nülkün',
+
# Diffs
'lineno' => 'Wirin $1:',
'editundo' => 'wüñoeltun',
# Search results
+'searchresults' => 'Tripalu chi kintun mew',
+'prevn' => 'rupachi {{PLURAL:$1|$1}}',
+'nextn' => 'kangelu {{PLURAL:$1|$1}}',
+'prevn-title' => 'Rupachi {{PLURAL:$1|tripalu}}',
+'nextn-title' => 'Kangelu $1 {{PLURAL:$1|tripalu}}',
'viewprevnext' => 'Pen ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-exists' => "'''Mvley kiñe cijka «[[:$1]]» pigelu faci wiki mew'''",
'searchmenu-new' => "'''¡Llitun pakina «[[:$1]]» tüfachi wiki mew!'''",
@@ -240,8 +284,10 @@ $messages = array(
'searchprofile-articles-tooltip' => 'kintu $1 mew',
'searchprofile-project-tooltip' => 'Kintun $1 mew',
'search-result-size' => '$1 ({{PLURAL:$2|1 hemvl|$2 hemvl}})',
+'search-redirect' => '(wüñogünegey $1 mew)',
'search-interwiki-more' => '(Doy)',
'searchall' => 'kom',
+'showingresultsheader' => "{{PLURAL:$5|'''$1''' ñi tripalu '''$3''' mew|'''$1-$2''' ñi tripalu '''$3''' mew}} '''$4''' ngealu",
'powersearch' => 'Kintun',
'powersearch-field' => 'Kintun',
@@ -256,11 +302,13 @@ $messages = array(
'timezoneregion-arctic' => 'Artiku',
'timezoneregion-asia' => 'Asia',
'timezoneregion-europe' => 'Ewropa',
+'youremail' => 'Werküwe:',
'username' => 'Ãœy kellufe:',
'yourrealname' => 'Tami mupiñ üy *',
'yourlanguage' => 'Cezugun:',
'gender-male' => 'Wentru',
'gender-female' => 'Domo',
+'prefs-help-email' => 'Mülelay mi eluael feychi werküwe, welu zuamafimi wüñoeltuael tami nülawe ngoyünienngelu.',
# User rights
'userrights-user-editname' => 'Wirin kiñe üy kellufe mew:',
@@ -298,7 +346,10 @@ $messages = array(
'action-undelete' => 'Namümlay tüfachi pakina',
# Recent changes
+'nchanges' => '{{PLURAL:$1|kalekünuy|kalekünuy}} $1',
+'recentchanges' => 'Weke kalekünun',
'rcshowhideminor' => '$1 pichi wirin',
+'rcshowhidepatr' => '$1 pukintulu kalekünun',
'rcshowhidemine' => '$1 tañi wirin',
'hist' => 'rupañ',
'hide' => 'Ejkape',
@@ -311,10 +362,14 @@ $messages = array(
'recentchangeslinked-page' => 'Pakina ñi üy:',
# Upload
+'upload' => 'Püramün eltukawün',
'uploadnologin' => 'Petu konlaymi',
+'uploadlogpage' => 'Püramülu eltukawün ñi wirintukun',
+'uploadedimage' => 'Püramüngey "[[$1]]"',
'watchthisupload' => 'Llaytun tüfachi pakina',
-'nolicense' => 'Chemnorume dullinnongey',
+'license-header' => 'Dungunentuwün',
+'nolicense' => 'Chemnorume dullinnongey',
# Special:ListFiles
'listfiles_search_for' => 'Kintun üy ad:',
@@ -322,9 +377,17 @@ $messages = array(
'listfiles_user' => 'Kellufe',
# File description page
+'file-anchor-link' => 'Eltukawün',
+'filehist' => 'Pegelpe rupañmael',
'filehist-deleteall' => 'kom ñamümün',
'filehist-deleteone' => 'ñamümün tüfa',
+'filehist-current' => 'Fantepu',
+'filehist-datetime' => 'Antü/Ora',
+'filehist-thumb' => 'Pichi pegel',
'filehist-user' => 'Kellufe',
+'filehist-comment' => 'Ngütramkawün',
+'imagelinks' => 'Eltukawün ñi pünelelu',
+'linkstoimage' => 'Tüfachi {{PLURAL:$1|wülngiñ nülkükawley|$1 wülngiñ nülkükawleyngün}} tüfachi eltukawün:',
# File deletion
'filedelete' => '$1 ñamümün',
@@ -339,7 +402,11 @@ $messages = array(
# Unused templates
'unusedtemplateswlh' => 'Kake lasun',
+# Random page
+'randompage' => 'Tuchi wülngiñ rume',
+
# Statistics
+'statistics' => 'Chuntelen',
'statistics-pages' => 'Pakina',
'brokenredirects-edit' => 'pepikan',
@@ -377,17 +444,21 @@ $messages = array(
'listusers-submit' => 'Pengelün',
# E-mail user
+'emailuser' => 'Amulün werküwe tüfachi kellufe',
'emailsubject' => 'Dungu',
'emailmessage' => 'Dungu',
'emailsend' => 'Werkün',
# Watchlist
-'watchnologin' => 'Petu konlaymi',
-'watch' => 'Llaytun',
-'watchthispage' => 'Llaytun tüfachi pakina',
-'unwatch' => 'Llaytuwelan',
-'unwatchthispage' => 'Llaytuwelan',
-'notanarticle' => 'Ngelay kiñe pakina',
+'watchlistfor2' => '$1 ($2)',
+'watchnologin' => 'Petu konlaymi',
+'watch' => 'Llaytun',
+'watchthispage' => 'Llaytun tüfachi pakina',
+'unwatch' => 'Llaytuwelan',
+'unwatchthispage' => 'Llaytuwelan',
+'notanarticle' => 'Ngelay kiñe pakina',
+'wlshowlast' => 'Pengelpe kalekünun rupalu $1 ora, $2 antü $3',
+'watchlist-options' => 'Llaytun wif ñi dullin',
# Displayed when you click the "watch" button and it is in the process of watching
'watching' => 'Llaytumekey...',
@@ -406,6 +477,7 @@ $messages = array(
'deletereasonotherlist' => 'Kake dungu',
# Protect
+'protectedarticle' => 'kuñiwtungey "[[$1]]"',
'prot_1movedto2' => '[[$1]] wiñamngey [[$2]] püle',
'protectexpiry' => 'Afi:',
'protect-level-sysop' => 'Pu ngünefe müṯen',
@@ -419,6 +491,7 @@ $messages = array(
# Undelete
'viewdeletedpage' => 'Pen pakina ñamümüngelu',
+'undeletelink' => 'pen/kümeeltun',
'undeleteviewlink' => 'Pen',
'undelete-search-box' => 'Kintun ñamümüngelu pakina',
'undelete-search-submit' => 'Kintun',
@@ -436,9 +509,10 @@ $messages = array(
'sp-contributions-submit' => 'Kintun',
# What links here
-'whatlinkshere' => 'Lasulu fa pvle',
-'whatlinkshere-page' => 'Pakina:',
-'whatlinkshere-prev' => '{{PLURAL:$1|Pen chum müley|Pen chum müluey $1}}',
+'whatlinkshere' => 'Lasulu fa pvle',
+'whatlinkshere-page' => 'Pakina:',
+'whatlinkshere-prev' => '{{PLURAL:$1|Pen chum müley|Pen chum müluey $1}}',
+'whatlinkshere-hideimages' => '$1 nülkükawley adentun',
# Block/unblock
'ipbexpiry' => 'Afi',
@@ -446,8 +520,14 @@ $messages = array(
'ipbreasonotherlist' => 'Kake dungu:',
'ipboptions' => '2 ora:2 hours,1 aṉtü:1 day,3 aṉtü:3 days,1 semana:1 week,2 semana:2 weeks,1 küyeṉ:1 month,3 küyeṉ:3 months,6 küyeṉ:6 months,1 tripantu:1 year,rumel:infinite',
'ipbotheroption' => 'Kakelu',
+'ipblocklist' => 'Katrütulelu kellufe',
'ipblocklist-submit' => 'Kintun',
'expiringblock' => 'afi $1 $2',
+'unblocklink' => 'katrüntukulan',
+'change-blocklink' => 'Kalekünun katxüntukun',
+'contribslink' => 'kellukontun',
+'blocklogpage' => 'Katxüntukun ñi wirintukun',
+'block-log-flags-nocreate' => 'Pepi dewmangelay konün',
'block-log-flags-hiddenname' => 'Ãœy kellufe ellkan',
'proxyblocksuccess' => 'Dewmangey.',
@@ -461,6 +541,7 @@ $messages = array(
'movepagebtn' => 'Nengümün pakina',
'movedto' => 'Nengümün',
'1movedto2' => '[[$1]] wiñamngey [[$2]] püle',
+'revertmove' => 'wüñoeltun',
'delete_and_move' => 'Ñamümün ka nengümün',
'delete_and_move_confirm' => 'May, ñamümün pakina',
@@ -472,27 +553,44 @@ $messages = array(
'allmessages-language' => 'Cezugun:',
# Tooltip help for the actions
-'tooltip-pt-userpage' => 'Tami pakina',
-'tooltip-pt-mytalk' => 'Tami nütramkawe',
-'tooltip-pt-logout' => 'Tripan',
-'tooltip-ca-delete' => 'Ñamümün tüfachi pakina',
-'tooltip-ca-move' => 'Nengümün tüfachi pakina',
-'tooltip-search' => 'Kintun tüfachi wiki mew',
-'tooltip-p-logo' => 'Wüne pakina',
-'tooltip-n-mainpage' => 'Tripan Wüne Pakina mew',
-'tooltip-ca-nstab-user' => 'Pen kellufe pakina',
-'tooltip-ca-nstab-image' => 'Pen pakina ad mew',
-'tooltip-ca-nstab-help' => 'Pen kellupakina',
+'tooltip-pt-userpage' => 'Tami pakina',
+'tooltip-pt-mytalk' => 'Tami nütramkawe',
+'tooltip-pt-preferences' => 'Tami dullin',
+'tooltip-pt-watchlist' => 'Mi llaytulu wülngiñ ñi wif',
+'tooltip-pt-mycontris' => 'Tami kellukontun ñi wif',
+'tooltip-pt-login' => 'Feypingey tami cillkantükuwün, welu mülelay mi femael',
+'tooltip-pt-logout' => 'Tripan',
+'tooltip-ca-talk' => 'Ngütramkawün wülgiñ ñi zungu mew',
+'tooltip-ca-edit' => 'Kümeelaymi tüfachi wülngiñ. Elmekeaymi wüne pen petu eltukawam.',
+'tooltip-ca-delete' => 'Ñamümün tüfachi pakina',
+'tooltip-ca-move' => 'Nengümün tüfachi pakina',
+'tooltip-ca-watch' => 'Püñamtun tüfachi wülngiñ tami llaytun wif mew',
+'tooltip-search' => 'Kintun {{SITENAME}} mew',
+'tooltip-search-fulltext' => 'Kintun wülngiñ tüfachi dungu mew',
+'tooltip-p-logo' => 'Wüne pakina',
+'tooltip-n-mainpage' => 'Tripan Wüne Pakina mew',
+'tooltip-n-mainpage-description' => 'Tripan wüne wülgiñ mew',
+'tooltip-n-portal' => 'Chumngen ñi zeumanzugu, chem pepi dewmaymi, chew müley dungu',
+'tooltip-n-currentevents' => 'Fantepu chemkün ñi dungu',
+'tooltip-n-recentchanges' => 'Weke kalekünun ñi wif wiki mew',
+'tooltip-n-randompage' => 'Amunge tuchi wülngiñ rume',
+'tooltip-n-help' => 'Azümnge küdawael',
+'tooltip-t-whatlinkshere' => 'Kom wiki ñi wülgiñ nülkükawlelu tüfa mew',
+'tooltip-feed-atom' => 'Atom ñi amuldungu tüfachi wülngiñ ngealu',
+'tooltip-t-emailuser' => 'Amulün werküwe tüfachi kellufe',
+'tooltip-t-upload' => 'Püramün adentun',
+'tooltip-t-specialpages' => 'Kom wichuke wülngiñ ñi wif',
+'tooltip-ca-nstab-main' => 'Adkintun trokiñdungu wülngiñ',
+'tooltip-ca-nstab-user' => 'Pen kellufe pakina',
+'tooltip-ca-nstab-project' => 'Adkintun deumandungu wülngiñ',
+'tooltip-ca-nstab-image' => 'Pen pakina ad mew',
+'tooltip-ca-nstab-help' => 'Pen kellupakina',
# Attribution
'siteuser' => 'Kellufe $1 {{SITENAME}}',
'others' => 'fill',
'siteusers' => '{{PLURAL:$2|Kellufe|Kellufe}} $1 {{SITENAME}}',
-# Info page
-'numedits' => 'Rakin wirin (pakina): $1',
-'numtalkedits' => 'Rakin wirin (pakina nütramkawe): $1',
-
# Patrol log
'patrol-log-diff' => 'ng$1',
@@ -526,12 +624,10 @@ $messages = array(
'exif-subjectdistancerange-0' => 'Kimnoelchi',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'kom',
-'imagelistall' => 'kom',
-'watchlistall2' => 'kom',
-'namespacesall' => 'kom',
-'monthsall' => '(kom)',
-'limitall' => 'Kom',
+'watchlistall2' => 'kom',
+'namespacesall' => 'kom',
+'monthsall' => '(kom)',
+'limitall' => 'Kom',
# Trackbacks
'trackbackremove' => '([$1 Ñamümün])',
@@ -552,6 +648,14 @@ $messages = array(
'size-megabytes' => '$1 Mb',
'size-gigabytes' => '$1 Gb',
+# Watchlist editing tools
+'watchlisttools-view' => 'Adkintun kalekünun',
+'watchlisttools-edit' => 'Pengelün ka kalekünun llaytun wif',
+'watchlisttools-raw' => 'Pepikan llaytulu wülngiñ rüfngen mew',
+
+# Core parser functions
+'duplicate-defaultsort' => '\'\'\'Ngüneltun:\'\'\': Wünezullin ñi kümeelgen lonkolelu "$2" nentutuy rupalu wünezullin ñi kümeelgen lonkolelu "$1".',
+
# Special:Version
'version-other' => 'Kakelu',
@@ -559,6 +663,7 @@ $messages = array(
'fileduplicatesearch-submit' => 'Kintun',
# Special:SpecialPages
+'specialpages' => 'Wichuke wülngiñ',
'specialpages-group-login' => 'Konün',
'specialpages-group-pagetools' => 'Küsawkawe pakina mew',
diff --git a/languages/messages/MessagesAry.php b/languages/messages/MessagesAry.php
index 2471d9d1..2b0176ba 100644
--- a/languages/messages/MessagesAry.php
+++ b/languages/messages/MessagesAry.php
@@ -144,15 +144,9 @@ $messages = array(
'listingcontinuesabbrev' => 'L-Kmala',
'index-category' => 'sfahi mfhrssa',
'noindex-category' => 'shat mamfhtsach',
+'broken-file-category' => 'ṣfaḫi fiha wṣlat milffaṫ mhrrsa',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''MediaWiki ṫ'instala be najaḫ.'''",
-'mainpagedocfooter' => 'Ila bÄ¡iṫiw meÄlomaṫ Ä¥rin baÄ‹ ṫesṫeÄmlo had l-lojisyél siro Ä‹ofo [http://meta.wikimedia.org/wiki/Aide:Contenu Gid dyal l-mosṫeÄ¥dim]
-
-== L-bdaya mÄa MediaWiki ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista dyal l-paramétraṫ dyal l-konfigurasyon]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ fe MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista dyal l-modakaraṫ Äla versyonaṫ jdad dyal MediaWiki]',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'ala',
'article' => 'sfht mohtawa',
@@ -204,10 +198,10 @@ $messages = array(
'history' => 'Ṫariĥ ṣ-ṣefḫa',
'history_short' => 'Historik',
'updatedmarker' => 'tam thditha ala akhir ziyara liya',
-'info_short' => 'mÄlomaṫ',
'printableversion' => 'Vérsyon imkenliha ṫṫetbeÄ',
'permalink' => 'Lyan dayem',
'print' => 'tbeÄ',
+'view' => 'Ä‹of',
'edit' => 'á¹¢ayeb',
'create' => 'ĤṫareÄ',
'editthispage' => 'Ĝeddel had ṣ-ṣefḫa',
@@ -215,6 +209,7 @@ $messages = array(
'delete' => 'Mḫi',
'deletethispage' => "Suprimi had 'ṣ-ṣefḫa",
'undelete_short' => 'strjaa {{PLURAL:$1|wahd taadil|$1 taadil}}',
+'viewdeleted_short' => 'wrri {{PLURAL:$1|ṫÄdil mḫdof waḫd|$1 ṫÄdil(at) mḫdof(a)}}',
'protect' => 'Ḫami',
'protect_change' => 'Beddel',
'protectthispage' => "Ḫmi had 's-sefḫa",
@@ -302,6 +297,8 @@ chof [[Special:Version|sfht lversion]]',
'toc' => 'L-Meá¸mon',
'showtoc' => 'Werri',
'hidetoc' => 'Ḫebbi',
+'collapsible-collapse' => 'twi',
+'collapsible-expand' => 'wsseÄ',
'thisisdeleted' => 'nÄŠof onstarjaa $1?',
'viewdeleted' => 'nchof $1?',
'restorelink' => '{{PLURAL:$1|wahd taadil tmsh|$1 taadilat tmshat}}',
@@ -315,6 +312,8 @@ chof [[Special:Version|sfht lversion]]',
'feed-atom' => 'Atom',
'feed-rss' => 'RSS',
'red-link-title' => '$1 (ṣefḫa ma kaynaċ)',
+'sort-descending' => 'ṛṫṫḅ b-ttloÄ',
+'sort-ascending' => 'ṛṫṫḅ b-lhḅot',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'ṣfḫa',
@@ -402,11 +401,13 @@ Query: $2',
'protectedpagetext' => 'had sfha mhmiya bach mataadlch baqi',
'viewsourcetext' => 'imkn lik tchof otcopie lmasdar dyak had sfha',
'protectedinterface' => 'had á¹£fḫa ka-ṫÄti n-naṣṣ dl-interface dial l-logiciel, o-raḫa mḫmiyya baÄ‹ maymknÄ‹ ṫṫĥrab.',
-'editinginterface' => "'''ṫḫdir:''' rak ka-Äddal waḫd á¹£-á¹£fḫa lli msṫÄmla baÄ‹ ṫÄti n-naṣṣ dl-interface dial l-logiciel. ṫĥyiraṫ fiha Ä¡adi ṫ'aṫṫar Äla l-má¸hr dial l-interface dl-mosṫaÄ¥dim Änd l-mosṫaÄ¥dimin l-aÄ¥rin. l-ttarjamaṫ, Ä‹oflik mÄa [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], the MediaWiki localisation project.",
+'editinginterface' => "'''ṫḫdir:''' rak ka-Äddal waḫd á¹£-á¹£fḫa lli msṫÄmla baÄ‹ ṫÄti n-naṣṣ dl-interface dial l-logiciel. ṫĥyiraṫ fiha Ä¡adi ṫ'aṫṫar Äla l-má¸hr dial l-interface dl-mosṫaÄ¥dim Änd l-mosṫaÄ¥dimin l-aÄ¥rin. l-ttarjamaṫ, Ä‹oflik mÄa [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], the MediaWiki localisation project.",
'sqlhidden' => '(talab SQL mĥfi)',
'cascadeprotected' => 'had á¹£fḫa mḫmiyya mn ṫÄdil, ḫqaÄ‹ fiha {{PLURAL:$1|á¹£fḫa|á¹£faḫi}} mḫmiyya mÄa l-option "cascading" Ä¥á¸á¸ama:
$2',
'namespaceprotected' => "ma msmoh-likÄ‹ baÄ‹ ṫÄddl á¹£fahi mn n-nitaq '''$1'''.",
+'customcssprotected' => 'ma msmoh-likÄ‹ baÄ‹ ṫÄddl had á¹£fḫa d-CSS, ḫqaÄ‹ fiha iÄdadaṫ ċĥṣiyya dial Ä‹i mosṫĥdim aÄ¥oá¹›.',
+'customjsprotected' => 'ma msmoh-likÄ‹ baÄ‹ ṫÄddl had á¹£fḫa d-JavaScript, ḫqaÄ‹ fiha iÄdadaṫ ċĥṣiyya dial Ä‹i mosṫĥdim aÄ¥oá¹›.',
'ns-specialprotected' => 'sfahi lkhassa maymknch taadlha',
'titleprotected' => 'had l-Äonwan mnÄo [[User:$1|$1]] mn l-inÄ‹a\'.
ossabab lli Ätah hwwa "\'\'$2\'\'".',
@@ -445,6 +446,7 @@ matnsach tbddl[[Special:Preferences|{{SITENAME}} tfdilat dyal]].',
'createaccount' => 'Ḫell ċi ḫsab',
'gotaccount' => 'aandk deja cont ? $1',
'gotaccountlink' => 'Ṫkonékta',
+'userlogin-resetlink' => 'yak-ma nsiṫi ṫ-ṫafaá¹£il dial d-doÄ¥ol taÄk?',
'createaccountmail' => "b l'email",
'createaccountreason' => 'sabab:',
'badretype' => 'klmaṫ ṣ-ṣeṛṛ lli dĥĥalṫi maċi b-ḫal b-ḫal.',
@@ -459,12 +461,16 @@ l-cookies ma Ä¥ddam-Ä‹ Ändk.
'nocookieslogin' => '{{SITENAME}} d-doĥol dialo ka-yĥdam bl-cookies.
l-cookies ma Ä¥ddam-Ä‹ Ändk.
ĥeddmo, o-jṛṛḅ.',
+'nocookiesfornew' => "l-ḫisab dialk ma tá¹£ayb-Ä‹, o-ma qdrna-Ä‹ n'akkdo l-má¹£á¸á¹› ṫaÄo.
+ṫyqen billa l-cookies Ä¥ddam Ändk, reÄ‹arji had á¹£fḫa o-Äawd jṛṛḅ.",
'noname' => 'Ma kṫebṫiċ ċi smiyṫ l-mosṫeĥdim mqadda.',
'loginsuccesstitle' => 'dkhlti mzyan',
'loginsuccess' => 'Dĥelṫi mezyan fe {{SITENAME}} be smiyṫ "$1".',
'nosuchuser' => 'ma kayn-ċ ċi mosṫĥdim smiṫo "$1".
s-smiyyaṫ l-mosṫĥdimin raha ḫssasa lla caz (yÄni majuscule o-minuscule).
ċof l-kṫaḅa waċ hia hadik, wlla [[Special:UserLogin/signup|ṣayb ċi ḫisab jdid]].',
+'nosuchusershort' => 'ma kayn-ċ ċi mosṫĥdim smiṫo "$1".
+ċof l-kṫaḅa waċ hia hadik.',
'nouserspecified' => 'khassk tdkhl ism lmostakhdim.',
'login-userblocked' => 'Had l-mosṫeÄ¥dim meḫbos. Konnéksyon memnoÄa.',
'wrongpassword' => 'S-Saroṫ Äendek Ä¡alet.
@@ -513,13 +519,14 @@ ma ṫá¸reb ḫsab l-had l-mesaj ila ṫṣÄyb had l-ḫisab Äen tariq l-Ä¥at
'usernamehasherror' => 'smiṫ l-mosṫĥdim ma ymkn-ċ ikon fiha karakterat dial l-hachage.',
'login-throttled' => 'drṫi bẓẓaf dial l-moḫawalaṫ ṫaÄ d-doÄ¥ol.
ṫsnna Ä‹wiya o-Äawd.',
+'login-abort-generic' => "d-doÄ¥ol ṫaÄk ma njaḫ-Ä‹ — ilÄ¡a'",
'loginlanguagelabel' => 'Loġa: $1',
'suspicious-userlogout' => 't-talab dialk baÄ‹ ṫdÄ¥ol mrfoḠḫqqaÄ‹ tayá¸há¹› billa rah ṫsift mn moṫaá¹£ffiḫ mÄtob wlla caching proxy.',
# E-mail sending
'php-mail-error-unknown' => "Ä¥ata' ma mÄrof-Ä‹ fl-mail() function taÄ l-PHP.",
-# Password reset dialog
+# Change password dialog
'resetpass' => 'tbdl lmot de passe',
'resetpass_announce' => "rak daĥol b-code mo'qqat mṣift bl-email.
baċ ṫsali d-doĥol, ĥask ddir ċi klmṫ s-srr jdida hna:",
@@ -539,6 +546,35 @@ daba hanta ka-tdĥol...',
ymkn ṫkon bddalṫiha bÄda wlla ṫlbti klmṫ srr mo'qaṫa jdida.",
'resetpass-temp-password' => 'mot de passe moaqata',
+# Special:PasswordReset
+'passwordreset' => 'Äawd klmṫ s-srr',
+'passwordreset-text' => 'Ämmer had l-istimara baÄ‹ iwá¹£lek email ṫaÄ á¹«dkir b-ṫṫafaá¹£il dl-ḫisab ṫaÄk.',
+'passwordreset-legend' => 'Äawd klmṫ s-srr',
+'passwordreset-disabled' => 'maymkn-Ä‹ ṫÄawd klmṫ s-srr f-had l-wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||kṫb wḫda mn l-bayanaṫ l-ṫḫṫ}}',
+'passwordreset-username' => 'smiṫ l-mosṫĥdim:',
+'passwordreset-email' => 'Äonwan l-email:',
+'passwordreset-emailtitle' => 'ṫafaṣil l-ḫisab f-{{SITENAME}}',
+'passwordreset-emailtext-ip' => "Ä‹i waḫd (Ä¡aliban nṫa, mn Äonwan l-IP $1) tlḅ ṫdkir
+b-ṫṫafaá¹£il dial l-ḫisab ṫaÄk f-{{SITENAME}} ($4). {{PLURAL:$3|l-ḫisab lli mrṫabt|l-ḫisabat lli mrṫabta}}
+b-had l-Äonwan dl-email {{PLURAL:$3|howa|hiya}}:
+
+$2
+
+had {{PLURAL:$3|klmṫ|klmaṫ}} s-srr l-mo'qaṫa Ä¡adi ṫṫḫyyad mn bÄd {{PLURAL:$5|nhar waḫd|$5 yyam/yom}}.
+ĥaṣṣk ṫdĥol o-ṫbddal klmṫ s-srr. ila kan ċi waḫd aĥor hwwa lli dar had
+talab, wlla ila ṫfkkarṫi klmṫ s-srr l-qdima, o-ma bqiti-Ä‹ baÄ¡i ṫbddalha, Ä¡ir bqa Ä¥ddam biha o-nsa Älik had l-mesaj.",
+'passwordreset-emailtext-user' => "l_mosṫĥdim $1 f-{{SITENAME}} tlḅ ṫdkir b-ṫṫafaá¹£il dial l-ḫisab ṫaÄk f-{{SITENAME}} ($4). {{PLURAL:$3|l-ḫisab lli mrṫabt|l-ḫisabat lli mrṫabta}} b-had l-Äonwan dl-email {{PLURAL:$3|howa|hiya}}:
+
+$2
+
+had {{PLURAL:$3|klmṫ|klmaṫ}} s-srr l-mo'qaṫa Ä¡adi ṫṫḫyyad mn bÄd {{PLURAL:$5|nhar waḫd|$5 yyam/yom}}.
+ĥaṣṣk ṫdĥol o-ṫbddal klmṫ s-srr. ila kan ċi waḫd aĥor hwwa lli dar had
+talab, wlla ila ṫfkkarṫi klmṫ s-srr l-qdima, o-ma bqiti-Ä‹ baÄ¡i ṫbddalha, Ä¡ir bqa Ä¥ddam biha o-nsa Älik had l-mesaj.",
+'passwordreset-emailelement' => "smiṫ l-mosṫĥdim: $1
+klmṫ s-srr l-mo'qaṫa: $2",
+'passwordreset-emailsent' => 'ṫsift email liṫ-ṫdkir.',
+
# Edit page toolbar
'bold_sample' => 'Kṫaba Ä¡liá¸a',
'bold_tip' => 'Kṫaba Ä¡liá¸a',
@@ -550,8 +586,6 @@ ymkn ṫkon bddalṫiha bÄda wlla ṫlbti klmṫ srr mo'qaṫa jdida.",
'extlink_tip' => 'Lyan Ä¥ariji (Äqel Äla http:// préfiks)',
'headline_sample' => 'Neá¹£ de l-Äonwan.',
'headline_tip' => 'Ĝonwan mosṫawa 2',
-'math_sample' => 'Kṫeb Äalaqa de l-mat hnaya',
-'math_tip' => 'Äœalaqa de l-mat (LaTeX)',
'nowiki_sample' => 'N-Neṣ li ma mformatéċ keṫbo hna',
'nowiki_tip' => 'Ĝti n-neĥĥal le l-formataj',
'image_sample' => 'Example.jpg',
@@ -643,6 +677,8 @@ ola [{{fullurl:{{FULLPAGENAME}}|action=edit}} ṫsayeb ṣ-ṣefḫa]</span>.',
Imken lek [[Special:Search/{{PAGENAME}}|ṫqelleb Äla á¹£efḫa be had l-Äonwan]] fe á¹£-á¹£efḫaṫ l-Ä¥rin,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ṫqelleb fe l-Äamaliyaṫ l-mlaqyin]
ola [{{fullurl:{{FULLPAGENAME}}|action=edit}} ṫsayeb ṣ-ṣefḫa]</span>.',
+'userpage-userdoesnotexist' => 'ḫisab l-mosṫĥdim "$1" ma msjjal-ċ.
+Ä‹of waÄ‹ baÄ¡i ṫṣayb/ṫÄddal had á¹£fḫa.',
'userpage-userdoesnotexist-view' => 'L-Ḫsab dyal l-mosṫeĥdim "$1" ma mċejjelċ.',
'blocked-notice-logextract' => 'had l-mosṫĥdim mbloki daba.
aÄ¥ir mdÄ¥l f-sijill l-blok mÄti lṫḫṫ:',
@@ -681,6 +717,7 @@ ila ma Ä¥dmaṫ-Ä‹, jṛṛeb [[Special:UserLogout|l-Ä¥oroj]] o-ddoÄ¥ol Äawṫá
'token_suffix_mismatch' => "'''ṫ-ṫÄdil ṫaÄk ṫrfḠḫiṫ l-moṫaá¹£ffih taÄk Ä¥llaṫ bin Äalamaṫ ṫ-ṫrqim fl-moÄrrif ṫaÄ á¹«-á¹›Ädil.'''
ṫ-ṫÄdil ṫrfḠḫiṫ baÄ‹ ma yĥṣr-Ä‹ n-naṣṣ lli f-á¹£fḫa.
ṫaṫwqÄ Ä‹i mṛṛa mlli ka-ṫĥdam b-Ä‹i ''serveur mandataire anonyme problématique basé sur le web''.",
+'edit_form_incomplete' => "'''Ä‹i ḫwayj f-istimarṫ ṫ-ṫÄdil ma wslaṫ-Ä‹ l_serveur; Ä‹of waá¹£ mazala hiyya hiyya o-Äawd jṛṛab.'''",
'editing' => 'Ṫ-ṪeÄdil dyal $1',
'editingsection' => 'Ṣayeb $1 (séksyon)',
'editingcomment' => 'Ṣayeb $1 (séksyon jdida)',
@@ -953,12 +990,13 @@ Imken lik ṫqeleb fe google.
Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫin.',
# Quickbar
-'qbsettings' => "L-lawḫa 's-sariÄa",
-'qbsettings-none' => 'Ma kaynċ',
-'qbsettings-fixedleft' => "Meḫbos fe 'ċ-ċmal",
-'qbsettings-fixedright' => "Meḫbos fe 'l-limin",
-'qbsettings-floatingleft' => "Ḫor fe 'ċ-ċmal",
-'qbsettings-floatingright' => "Ḫor fe 'l-limen",
+'qbsettings' => "L-lawḫa 's-sariÄa",
+'qbsettings-none' => 'Ma kaynċ',
+'qbsettings-fixedleft' => "Meḫbos fe 'ċ-ċmal",
+'qbsettings-fixedright' => "Meḫbos fe 'l-limin",
+'qbsettings-floatingleft' => "Ḫor fe 'ċ-ċmal",
+'qbsettings-floatingright' => "Ḫor fe 'l-limen",
+'qbsettings-directionality' => 'ṫabṫ, Äla ḫasab ṫṫijah l-kṫaba b-loġṫk',
# Preferences page
'preferences' => 'ṫfá¸ilaṫ',
@@ -969,9 +1007,10 @@ Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫi
'changepassword' => 'tbdl lmot de passe',
'prefs-skin' => 'skin',
'skin-preview' => 'L-Prévizualizasyon',
-'prefs-math' => 'mat',
'datedefault' => 'la tafdil',
+'prefs-beta' => 'ĥaṣṣiyaṫ ṫjribiyya (Beta)',
'prefs-datetime' => 'tarikh o ssaa',
+'prefs-labs' => 'ĥaṣṣiyaṫ ĥṫibariyya (Labs)',
'prefs-personal' => 'milf lmostakhdim',
'prefs-rc' => 'Ṫ-ṪeÄdilaṫ l-leĥĥra',
'prefs-watchlist' => "qa'imaṫ l-ṃoṛaqaba",
@@ -993,8 +1032,6 @@ Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫi
'columns' => 'aaamida:',
'searchresultshead' => 'Qelleb',
'resultsperpage' => 'adad nataij f sfha',
-'contextlines' => 'adad lastor f kol natija',
-'contextchars' => 'adad lahrof f satr:',
'stub-threshold' => 'l-ḫadd l-aqá¹£a ṫaÄ <a href="#" class="stub">wá¹£laṫ l-bidraṫ</a> (ḅayṫaṫ):',
'stub-threshold-disabled' => 'makhdamch',
'recentchangesdays' => 'n-nharaṫ lli twrri f-ṫġyiraṫ j-jdida:',
@@ -1160,7 +1197,6 @@ Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫi
'right-userrights' => 'taadil kol salahiyat lmostkhdimin',
'right-userrights-interwiki' => 'taadil salahiyat lmostkhdim lmostkhdimin f lwikiyat lkhrin',
'right-siteadmin' => 'sd o zl qaidat lbayant',
-'right-reset-passwords' => 'awd rigli lmot de passe dyal lmostkhdimin lkhrin',
'right-override-export-depth' => 'tsdir sfahi obinha sfahi lmawsola hta lomq 5',
'right-sendemail' => 'sift email lmostkhdimin lkhrin',
@@ -1277,6 +1313,7 @@ Laḫed ana imken ikono l-indexaṫ dial {{SITENAME}} qdam o ma bqaoċ ṣalḫi
'ignorewarnings' => 'tjahl thdirat',
'minlength1' => 'smiyyaṫ l-milffaṫ Ä¥a ṫkon mkwna mn ḫṛf waḫd Äl aqll.',
'badfilename' => 'smiṫ l-milef ṫġeyyraṫ l-"$1".',
+'filetype-mime-mismatch' => 'mṫidad l-milef ".$1" ma ṫaytabq-Ä‹ noÄ MIME dl-milef ($2).',
'empty-file' => 'l-milef lli sifṫṫi ĥawi.',
'file-too-large' => 'lfichier kbir bzzaf',
'filename-tooshort' => 'smiyt lfichier qssira bzaf',
@@ -1332,6 +1369,12 @@ $1',
'upload-unknown-size' => 'hakm mamaarofch',
'upload-http-error' => "lgina wahd khata' HTTP : $1",
+# Special:UploadStash
+'uploadstash' => 'l-kaċ d-ṫṫḫmil',
+'uploadstash-clear' => 'ĥwi l-milffaṫ l-mkaċia',
+'uploadstash-errclear' => 'l-msiḫ dl-milffaṫ ma njḫ-ċ.',
+'uploadstash-refresh' => "aktwalizi qa'imaṫ l-milffaṫ",
+
# img_auth script messages
'img-auth-accessdenied' => 'lwosol trfd',
'img-auth-badtitle' => 'ma ymkn-Ä‹ ṫsayb Ä‹i Äonwan ṣḫiḫ mn "$1".',
@@ -1457,10 +1500,11 @@ $1',
'disambiguations' => 'sfahi dyal tawdih',
'disambiguationspage' => 'Template:tawdih',
-'doubleredirects' => 'ṫḫwila má¸oḅla',
-'double-redirect-fixed-move' => '[[$1]] ṫnqlaṫ.
+'doubleredirects' => 'ṫḫwila má¸oḅla',
+'double-redirect-fixed-move' => '[[$1]] ṫnqlaṫ.
daba ka ṫḫwwal l-[[$2]].',
-'double-redirect-fixer' => 'mosslih tahwil',
+'double-redirect-fixed-maintenance' => 'iá¹£laḫ ṫḫwil má¸obl mon [[$1]] l-[[$2]].',
+'double-redirect-fixer' => 'mosslih tahwil',
'brokenredirects' => 'tahwilat makhddamach',
'brokenredirects-edit' => 'Äœedel',
@@ -1618,6 +1662,9 @@ daba ka ṫḫwwal l-[[$2]].',
'noemailtext' => 'Had l-mosṫeÄ¥dim ma ÄendoÄ‹ imayl mqadd.',
'nowikiemailtitle' => 'makaynch email msmoh bih',
'nowikiemailtext' => 'Had l-mosṫeĥdim ma bġa iṫweṣṣel be ḫṫa ċi imayl men ay mosṫeḫdim.',
+'emailtarget' => 'kṫb smiṫ l-mosṫĥdim l-morsal ilayh',
+'emailusername' => 'smiṫ l-mosṫĥdim:',
+'emailusernamesubmit' => 'á¹£ift',
'email-legend' => 'Sifet ċi imayl le ċi mosṫeĥdim aĥor dyal {{SITENAME}}',
'emailfrom' => 'mn:',
'emailto' => 'l:',
@@ -1642,11 +1689,11 @@ daba ka ṫḫwwal l-[[$2]].',
'watchlistanontext' => 'Ĝafak $1 baċ ṫċof ola baċ ṫṣayeb ṣ-ṣefḫaṫ li fe l-lista dyal s-suivi.',
'watchnologin' => 'nta mamkoniktich',
'watchnologintext' => 'Ĥaṣṣek ṫkon [[Special:UserLogin|dĥelṫi le ḫsabek]] baċ ṫṣayeb l-lista dyal s-suivi.',
-'addedwatch' => "ṫzadeṫ l-qa'imaṫ l-moṛaqaḅa",
+'addwatch' => "zid l-qa'imaṫ l-moṛaqaḅa",
'addedwatchtext' => "Ṣ-Ṣefḫa \"[[:\$1]]\" ṫzadeṫ le [[Special:Watchlist|l-lista dyal s-suivi dyalṫek]].
Ṫ-Ṫeġyiraṫ j-jayyin dyal had ṣ-ṣefḫa o dyal ṣ-ṣefḫa de n-niqaċ l-mnasba ġayṫċejjlo fiha.
L-Kṫaba dyal had á¹£-á¹£efḫa Ä¡aṫban '''Ä¡liá¸a''' fe [[Special:RecentChanges|l-lista dyal ṫ-ṫeÄdilaṫ l-leĥĥrin]] baÄ‹ ṫeshal Älik l-qadiya.",
-'removedwatch' => 'Mmḫiya men l-lista dyal s-suivi',
+'removewatch' => "hyyed mn qa'imaṫ l-moṛaqaḅa",
'removedwatchtext' => 'Ṫemḫaṫ ṣ-ṣefḫa "[[:$1]]" men [[Special:Watchlist|ṣ-ṣefḫa de s-suivi dyalṫek]].',
'watch' => 'Ḫá¸i',
'watchthispage' => 'ṪebbeÄ had á¹£-á¹£efḫa',
@@ -1687,7 +1734,7 @@ L-Kṫaba dyal had á¹£-á¹£efḫa Ä¡aṫban '''Ä¡liá¸a''' fe [[Special:RecentCha
Äœafak ekked belli hadÄ‹i howa li baÄ¡i ṫdir, belli nṫa fahem l-ahammiya dyalo, o belli kaṫdir hadÄ‹i be ṫ-ṫowfiq dyal [[{{MediaWiki:Policy-url}}|l-qawaÄid d-daÄ¥iliya]].',
'actioncomplete' => 'Ṫsalaṫ l-Äamaliya',
'actionfailed' => 'Ma á¹£eá¸qaṫċ',
-'deletedtext' => '« <nowiki>$1</nowiki> » ṫemḫa.
+'deletedtext' => '« $1 » ṫemḫa.
Ċof $2 ila bġiṫi ċi lista dyal kolċi li ṫemḫa aĥiran.',
'deletedarticle' => 'memḫi "[[$1]]"',
'suppressedarticle' => 'mḫa "[[$1]]"',
@@ -1719,7 +1766,7 @@ L-Kṫaba dyal had á¹£-á¹£efḫa Ä¡aṫban '''Ä¡liá¸a''' fe [[Special:RecentCha
'protectexpiry' => 'ytsala:',
'protect_expiry_invalid' => 'Daz Älih l-oqeṫ.',
'protect_expiry_old' => 'L-oqeṫ dyal n-nihaya fe l-maá¸i.',
-'protect-text' => "Hnaya ṫeqá¸er tÄ‹of o ṫbeddel l-mostawa de l-ḫimaya dyal á¹£-á¹£efḫa '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Hnaya ṫeqá¸er tÄ‹of o ṫbeddel l-mostawa de l-ḫimaya dyal á¹£-á¹£efḫa '''$1'''.",
'protect-locked-access' => "Ḫsabek ma ÄendoÄ‹ l-ḫaqq baÄ‹ ibeddel l-mosṫawa de l-ḫimaya dyal á¹£-á¹£efḫa.
Hnaya ġadi ṫelqa lé-ééglaj l-leĥĥrin dyal ṣ-ṣefḫa '''$1''':",
'protect-cascadeon' => 'Had á¹£-á¹£efḫa raha meḫmiya ḫiṫ hiya daÄ¥el {{PLURAL:$1|had á¹£-á¹£efḫa, li ṫṫeḫmaṫ|had á¹£-á¹£efḫaṫ, li ṫṫeḫmaw}} be l-opsyon "ḫimaya moá¸mana" Ä¥eddama.
@@ -1781,9 +1828,10 @@ Imken lek ṫbeddel l-mosṫawa de l-ḫimaya dyal had ṣ-ṣefḫa bla ma i\'e
'undelete-show-file-submit' => 'iyih',
# Namespace form on various pages
-'namespace' => 'Maḫel s-smiyyaṫ :',
-'invert' => "Qleb 's-séléksyon",
-'blanknamespace' => "(Re'si)",
+'namespace' => 'Maḫel s-smiyyaṫ :',
+'invert' => "Qleb 's-séléksyon",
+'namespace_association' => 'nitaq mqṫarn',
+'blanknamespace' => "(Re'si)",
# Contributions
'contributions' => 'L-mosahamaṫ dyal l-mosṫeĥdim',
@@ -1831,12 +1879,10 @@ Imken lek ṫbeddel l-mosṫawa de l-ḫimaya dyal had ṣ-ṣefḫa bla ma i\'e
'blockip' => 'Bloké l-mosṫeĥdim',
'blockip-title' => 'Bloki l-mosṫeḫdim',
'blockip-legend' => 'Bloki l-mosṫeḫdim',
-'ipaddress' => 'Äœonwan IP:',
'ipadressorusername' => 'Ĝonwan IP ola smiyṫ l-mosṫeĥdim',
'ipbexpiry' => 'Ġayṫqada fe :',
'ipbreason' => 'sabab:',
'ipbreasonotherlist' => 'Sabab weḫdaĥor',
-'ipbanononly' => 'Bloki ġir l-mosṫeḫdimin li ma mċejjlinċ',
'ipbcreateaccount' => 'MneÄ Ä¥á¹«iraÄ Ä‹i ḫsab',
'ipbemailban' => 'ma ṫĥelli-ċ l-mosṫĥdim yṣifet ċi imayl',
'ipbenableautoblock' => 'Bloki otomaṫikiyan l-Äonwan IP l-leĥĥrani li sṫeÄmlo l-mosṫeḫdim o l-Äanawin IP li qbel mennha li ymken lo yÄawed ysṫeÄmelhom.',
@@ -1847,7 +1893,6 @@ Imken lek ṫbeddel l-mosṫawa de l-ḫimaya dyal had ṣ-ṣefḫa bla ma i\'e
'ipbotherreason' => 'Sabab weḫdaĥor/zayed:',
'ipbhidename' => 'Ĥebbi smiyṫ l-mosṫeĥdim men ṫ-ṫeġyiraṫ o men l-listaṫ',
'ipbwatchuser' => 'ṪbeÄ á¹£-á¹£efḫaṫ dyal l-mosṫeḫdim o de n-niqaÄ‹ dyal had l-mosṫeÄ¥dim',
-'ipballowusertalk' => 'Ĥelli had l-mosṫeĥdim yṣayeb ṣfeḫṫo dyal n-niqaċ faċ ykon mbloki',
'ipb-change-block' => "Äœawed bloki had l-mosṫeÄ¥dim be had l-'iÄdadaṫ",
'badipaddress' => 'Äœonwan IP Ä¡alet',
'blockipsuccesssub' => 'Blokaj najeḫ',
@@ -1859,17 +1904,22 @@ Imken lek ṫbeddel l-mosṫawa de l-ḫimaya dyal had ṣ-ṣefḫa bla ma i\'e
'unblockip' => 'Débloki Ä‹i mosṫeÄ¥dim ola Ä‹i Äonwan IP',
'ipusubmit' => 'Mḫi l-blokaj',
'unblocked' => '[[User:$1|$1]] ma bqaċ mbloki',
+'unblocked-range' => '$1 ddebloka',
'unblocked-id' => 'L-Blokaj $1 ṫṫemḫa',
+'blocklist' => 'l-mosṫĥdimin lli ṫblokaw',
'ipblocklist' => 'Ĝanawin IP o smiyyaṫ l-mosṫeĥdim meḫbosin',
'ipblocklist-legend' => 'Qelleb Äla Ä‹i mosṫeÄ¥dim memḫi',
-'ipblocklist-username' => 'Smiyṫ l-mosṫeÄ¥dim ola l-Äonwan IP',
-'ipblocklist-sh-userblocks' => '$1 lé-blokaj dyal l-ḫsabaṫ',
-'ipblocklist-sh-tempblocks' => "$1 lé-blokaj l-mo'eqqaṫa",
-'ipblocklist-sh-addressblocks' => '$1 lé-blokaj dyal l-Äanawin IP boḫdhom',
+'blocklist-userblocks' => 'ĥbbi blokaṫ l-ḫisab',
+'blocklist-tempblocks' => "ĥbbi l-blokaṫ l-mo'qqaṫa",
+'blocklist-timestamp' => 'tabÄ zamani',
+'blocklist-target' => 'hadaf',
+'blocklist-expiry' => 'ytsala',
+'blocklist-by' => 'l-idari lli dar l-blok',
+'blocklist-params' => 'paṛametraṫ l-blok',
+'blocklist-reason' => 'sabab',
'ipblocklist-submit' => 'Qelleb',
'ipblocklist-localblock' => 'Blokaj maḫalli',
'ipblocklist-otherblocks' => 'Blokaj {{PLURAL:$1|weḫdaĥor|weḫdaĥrin}}',
-'blocklistline' => '$1 : $2 bloka $3 ; $4',
'infiniteblock' => 'ma kayṫsalaċ',
'expiringblock' => 'Ä¡ayṫqada nhar $1 mÄa $2',
'anononlyblock' => 'ġir l-mosṫeĥdim li ma mċejjelċ',
@@ -1915,10 +1965,10 @@ Imken lek ṫbeddel l-mosṫawa de l-ḫimaya dyal had ṣ-ṣefḫa bla ma i\'e
'unlockdbsuccesssub' => 'Iqfal l-bazdødoné ṫṫemḫa',
'unlockdbsuccesstext' => 'L-Bazdødoné raha ṫṫḫellaṫ.',
'databasenotlocked' => 'L-Bazdødoné raha ma meġloqaċ.',
+'lockedbyandtime' => '(mn {{GENDER:$1|$1}} f-$2 mÄa $3)',
# Move page
'move-page' => 'Neqqel $1',
-'move-page-backlink' => '↠$1',
'move-page-legend' => 'Neqqel ṣ-ṣefḫa',
'movepagetext' => "Ila sṫeÄmelṫi l-formulér li l-ṫeḫṫ, Ä‹i á¹£efḫa Ä¡adi ṫÄawed ṫṫsemma o Ä¡adi ṫneqqel ṫ-ṫariÄ¥ kollo le s-smiya j-jdida.
L-Äœonwan l-qdim Ä¡adi iwelli á¹£efḫa jdida li Ä¡adi ṫḫowwlek le l-Äonwan j-jdid.
@@ -2101,19 +2151,17 @@ Imken lek ṫċof l-Äin dyalha.',
'spambot_username' => 'tandif spam mediawiki',
# Info page
-'numedits' => 'adad taadilat (sfha) : $1',
-'numtalkedits' => 'adad taadilat (sfht niqach): $1',
-'numwatchers' => 'Äadad l-moraqibin: $1',
-
-# Math options
-'mw_math_png' => 'dima biyn bhal PNG',
-
-# Math errors
-'math_failure' => 'khata flmat',
-'math_unknown_error' => 'khat mjhol',
-'math_unknown_function' => 'wadifa mjhola',
-'math_lexing_error' => 'khata fsigha',
-'math_syntax_error' => 'khata fsiyagha',
+'pageinfo-title' => 'mÄlomaṫ l-"$1"',
+'pageinfo-header-edits' => 'ṫÄdilaṫ',
+'pageinfo-header-watchlist' => "qa'imaṫ l-ṃoṛaqaba",
+'pageinfo-header-views' => 'moċahadaṫ',
+'pageinfo-subjectpage' => 'ṣfḫa',
+'pageinfo-talkpage' => 'ṣfḫṫ n-niqaċ',
+'pageinfo-watchers' => 'Äadad l-moraqibin',
+'pageinfo-edits' => 'Äadad ṫ-ṫÄdilaṫ',
+'pageinfo-authors' => "Äadad l-mo'llifin l-mĥṫalfin",
+'pageinfo-views' => 'Äadad l-moÄ‹ahadaṫ',
+'pageinfo-viewsperedit' => 'l-moÄ‹ahadaÄ l-koll ṫÄdil',
# Patrolling
'markaspatrolleddiff' => 'marki kamorajaaa',
@@ -2135,7 +2183,7 @@ Imken lek ṫċof l-Äin dyalha.',
'file-nohires' => '<small>Ma kayenċ ċi rézolusyon kber men hadi.</small>',
'svg-long-desc' => 'Fiċyé SVG, rézolusyon $1 × $2 pikselaṫ, ḫajm : $3',
'show-big-image' => 'Rézolusyon kamla',
-'show-big-image-thumb' => '<small>L-Ḫajm dyal had l-prévizualizasyon : $1 × $2 pikselaṫ</small>',
+'show-big-image-size' => '$1 × $2 dl-ppiksilaṫ',
'file-info-gif-looped' => 'mlfoof',
'file-info-png-looped' => 'mlfof',
@@ -2209,7 +2257,13 @@ Ila ṫbeddel l-fiċyé men ḫalṫo l-'aṣliya, kaynin ċi ṫafaṣil ma mna
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'laard',
@@ -2224,13 +2278,11 @@ Ila ṫbeddel l-fiċyé men ḫalṫo l-'aṣliya, kaynin ċi ṫafaṣil ma mna
'exif-ycbcrpositioning' => 'lwada dyal Y o C',
'exif-xresolution' => 'ddiqa lofoqia',
'exif-yresolution' => 'diqa raissia',
-'exif-resolutionunit' => 'wihdat tahlil X o Y',
'exif-stripoffsets' => 'mawqiaa bayanat sora',
'exif-rowsperstrip' => 'adad sofof lkol chariha',
'exif-stripbytecounts' => 'byte lkol chariha mdghota',
'exif-jpeginterchangeformat' => 'lhad l JPEG SOI',
'exif-jpeginterchangeformatlength' => 'bytes dyal JPEG',
-'exif-transferfunction' => 'wadifat naql',
'exif-whitepoint' => 'alwan noqta lbida',
'exif-primarychromaticities' => 'alwan assasia',
'exif-ycbcrcoefficients' => 'moamalat masfofa tahwil farigh lon',
@@ -2249,7 +2301,6 @@ Ila ṫbeddel l-fiċyé men ḫalṫo l-'aṣliya, kaynin ċi ṫafaṣil ma mna
'exif-compressedbitsperpixel' => 'tor daght sora',
'exif-pixelydimension' => 'ard sora sahih',
'exif-pixelxdimension' => 'tol sora sahih',
-'exif-makernote' => 'molahadat lmasnaa',
'exif-usercomment' => 'taaliqat lmostakhdim',
'exif-relatedsoundfile' => 'milf sawti mortabit',
'exif-datetimeoriginal' => 'tarikh o wqt tawlid lbayanat',
@@ -2292,7 +2343,38 @@ Ila ṫbeddel l-fiċyé men ḫalṫo l-'aṣliya, kaynin ċi ṫafaṣil ma mna
'exif-gpsareainformation' => 'smiṫ mintaqat GPS',
'exif-gpsdatestamp' => 'ṫariĥ GPS',
'exif-gpsdifferential' => 'ṫ-ṫṣḫiḫ ṫ-ṫafaá¸oli dial GPS',
+'exif-jpegfilecomment' => 'ṫ-ṫÄliq dial milef JPEG',
+'exif-keywords' => 'mo-kléaṫ',
+'exif-worldregioncreated' => 'j-jiha lli ṫĥdaṫ fiha had ṫṣwira',
+'exif-countrycreated' => 'l-blad lli ṫĥdaṫ fiha had ṫṣwira',
+'exif-countrycodecreated' => 'l-code dial l-blad lli ṫĥdaṫ fiha had ṫṣwira',
+'exif-provinceorstatecreated' => "l-'iqlim wlla d-dwla lli ṫĥdaṫ fihom had ṫṣwira",
+'exif-citycreated' => 'l-mdina lli ṫĥdaṫ fiha had ṫṣwira',
+'exif-worldregiondest' => 'j-jiha lli mbyyna',
+'exif-countrydest' => 'l-blad l-mbyyna',
+'exif-countrycodedest' => 'l-code dial l-blad lli mbyyna',
+'exif-citydest' => 'l-mdina l-mbyyna',
'exif-objectname' => 'Äonwan qá¹£ir',
+'exif-credit' => 'mosahim/mozwwid',
+'exif-source' => 'má¹£á¸r:',
+'exif-urgency' => 'urjons',
+'exif-objectcycle' => 'l-wqṫ dial n-nḫar lli mĥṣṣaṣ lih had l-media',
+'exif-contact' => 'mÄlomat l-iṫṫiá¹£al',
+'exif-writer' => 'l-katib',
+'exif-languagecode' => 'loġa',
+'exif-iimversion' => 'nosĥat IIM',
+'exif-iimcategory' => 'ṫṣnif',
+'exif-iimsupplementalcategory' => 'ṫṣnifaṫ iá¸afiyya',
+'exif-datetimeexpires' => 'ma tÄ¥ddemÄ‹ mn bÄd',
+'exif-datetimereleased' => 'ṫtlqaṫ f-',
+'exif-identifier' => 'l-moÄrrif',
+'exif-lens' => 'l-Äadasa l-mosṫÄmala',
+'exif-serialnumber' => 'r-raqm ṫ-ṫaslsoli dial l-camera',
+'exif-cameraownername' => 'mol(at) l-camera',
+'exif-pngfilecomment' => 'ṫ-ṫÄliq dial milef PNG',
+'exif-giffilecomment' => 'ṫ-ṫÄliq dial milef GIF',
+'exif-intellectualgenre' => 'noÄ l-madda',
+'exif-scenecode' => 'cod mċhd IPTC',
'exif-orientation-4' => 'má¸wwer ofoqiyyen',
'exif-orientation-8' => 'má¸wwer 90° <abbr title="Äœks (ṫ-ṫijah) Äœaqarib s-SaÄa">ĜĜS</abbr>',
@@ -2392,6 +2474,10 @@ Ila ṫbeddel l-fiċyé men ḫalṫo l-'aṣliya, kaynin ċi ṫafaṣil ma mna
'exif-gpslongitude-e' => 'khatt tol charqi',
'exif-gpslongitude-w' => 'khatt toll lgharbi',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|mitro|mitroaṫ}} foq ṣtḫ l-ḅḫṛ',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|mitro|mitroaṫ}} ṫḫṫ ṣtḫ l-ḅḫṛ',
+
'exif-gpsstatus-a' => 'amaliyat lqiyas lhaliya',
'exif-gpsstatus-v' => 'chomol lqiyass',
@@ -2403,21 +2489,72 @@ Ila ṫbeddel l-fiċyé men ḫalṫo l-'aṣliya, kaynin ċi ṫafaṣil ma mna
'exif-gpsspeed-m' => 'mil f saa',
'exif-gpsspeed-n' => 'aqd',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'kilometrat',
+'exif-gpsdestdistance-m' => 'mial',
+'exif-gpsdestdistance-n' => 'mial ḅḫriyya',
+
+'exif-gpsdop-excellent' => 'naá¸i ($1)',
+'exif-gpsdop-good' => 'mzyan ($1)',
+'exif-gpsdop-moderate' => 'bin o-bin ($1)',
+'exif-gpsdop-fair' => 'ma bih-Ä‹',
+'exif-gpsdop-poor' => 'Äyyan ($1)',
+
+'exif-objectcycle-a' => 'ġi ṣbaḫ',
+'exif-objectcycle-p' => 'Ä¡i ÄÄ‹iyya',
+'exif-objectcycle-b' => 'á¹£baḫ o-ÄÄ‹iyya',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'litijah lhaqiqi',
'exif-gpsdirection-m' => 'littijah lmighnatissi',
+'exif-ycbcrpositioning-1' => 'centré',
+'exif-ycbcrpositioning-2' => 'co-sité',
+
+'exif-dc-contributor' => 'l-mosahimin',
+'exif-dc-date' => 't(aw)ariĥ',
+'exif-dc-publisher' => 'n-naċir',
+'exif-dc-relation' => 'media mrṫabta',
+'exif-dc-rights' => 'l-ḫoqoq',
+'exif-dc-source' => 'má¹£á¸á¹› l-media',
+'exif-dc-type' => 'noÄ l-media',
+
+'exif-rating-rejected' => 'má¹›foá¸',
+
+'exif-isospeedratings-overflow' => 'kṫr mn 65535',
+
+'exif-iimcategory-ace' => 'fonon, ṫaqafa o-ṫrfih',
+'exif-iimcategory-clj' => 'l-jarima o-lqanon',
+'exif-iimcategory-dis' => 'l-kawariṫ o-lḫawadiṫ',
+'exif-iimcategory-fin' => "l-iqṫiá¹£ad o-l'aÄmal",
+'exif-iimcategory-edu' => 'ṫrbiya',
+'exif-iimcategory-evn' => "bi'a",
+'exif-iimcategory-hth' => 's-sḫḫa',
+'exif-iimcategory-hum' => 'l-ihtimam l-baċari',
+'exif-iimcategory-lab' => 'l-Ä¥dma',
+'exif-iimcategory-lif' => 'l-ÄiÄ‹a o-lfaraÄ¡',
+'exif-iimcategory-pol' => 's-siyasa',
+'exif-iimcategory-rel' => 'd-din o-lÄaqida',
+'exif-iimcategory-sci' => 'l-Äolom o-ṫṫiknolojia',
+'exif-iimcategory-soi' => "Ä‹o'on jtimaÄiyya",
+'exif-iimcategory-spo' => 'á¹›-á¹›iyaá¸a',
+'exif-iimcategory-war' => 'l-hṛḅ, n-niẓaÄaṫ o-lttirabaṫ',
+'exif-iimcategory-wea' => 't-taqá¹£',
+
+'exif-urgency-normal' => 'Äadiyya ($1)',
+'exif-urgency-low' => 'mnÄ¥afá¸a ($1)',
+'exif-urgency-high' => 'Äalia ($1)',
+'exif-urgency-other' => 'l-awlawiyya lli ḫddadha l-mosṫĥdim ($1)',
+
# External editor support
'edit-externally' => 'Ṣayeb had l-fiċyé be ċi aplikasyon ĥarijiya',
-'edit-externally-help' => '(ÄŠof [http://www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] ila ḫṫajiṫi meÄlomaṫ Ä¥rin)',
+'edit-externally-help' => '(ÄŠof [//www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] ila ḫṫajiṫi meÄlomaṫ Ä¥rin)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'kolċi',
-'imagelistall' => 'kolċi',
-'watchlistall2' => 'kolċi',
-'namespacesall' => 'kolċi',
-'monthsall' => 'kolhom',
-'limitall' => 'kolċi',
+'watchlistall2' => 'kolċi',
+'namespacesall' => 'kolċi',
+'monthsall' => 'kolhom',
+'limitall' => 'kolċi',
# E-mail address confirmation
'confirmemail' => "konfirmasyon dyal l'email",
@@ -2454,6 +2591,12 @@ $1',
'confirm_purge_button' => 'waĥĥa',
'confirm-purge-top' => 'bghiti tmsh lcache dyal had sfha ?',
+# action=watch/unwatch
+'confirm-watch-button' => 'waĥĥa',
+'confirm-watch-top' => "zid had ṣ-ṣfḫa l-qa'imaṫ l-ṃoṛaqaba?",
+'confirm-unwatch-button' => 'waĥĥa',
+'confirm-unwatch-top' => "hyyed had ṣ-ṣfḫa mn qa'imaṫ l-ṃoṛaqaba?",
+
# Multipage image navigation
'imgmultipageprev' => 'sfha li sbqat',
'imgmultipagenext' => 'sfha jaya →',
@@ -2511,27 +2654,27 @@ jrreb l-ÄṛḠl-Äadi.',
'duplicate-defaultsort' => '\'\'\'ṫḫdir:\'\'\' saroṫ ṫrṫib fṫiá¹›aá¸i "$2" faṫ saroṫ ṫrṫib fṫiá¹›aá¸i "$1".',
# Special:Version
-'version' => 'Noskha',
-'version-extensions' => 'limtidadat lmotabbata',
-'version-specialpages' => 'Ṣefḫa ĥaṣa',
-'version-parserhooks' => 'khatatif lmohllil',
-'version-variables' => 'lmotaghayyirat',
-'version-skins' => 'skinat',
-'version-other' => 'okhra',
-'version-mediahandlers' => 'motahakkimat lmedia',
-'version-hooks' => 'lkhtatif',
-'version-extension-functions' => 'wadaif lmohallil',
-'version-parser-extensiontags' => 'wossom imtidad lmohallil',
-'version-parser-function-hooks' => 'khtatif dyal dalat lmohllil',
-'version-skin-extension-functions' => 'fonctionat dyal lfrssada',
-'version-hook-name' => 'smiyt lkhttaf',
-'version-hook-subscribedby' => 'kaytstaml mn taraf',
-'version-version' => '(Noskha $1)',
-'version-license' => 'rokhssa',
-'version-poweredby-others' => 'khrin',
-'version-software' => "lbarnamaj li m'anstalli",
-'version-software-product' => 'lmntoj',
-'version-software-version' => 'noskha',
+'version' => 'Noskha',
+'version-extensions' => 'limtidadat lmotabbata',
+'version-specialpages' => 'Ṣefḫa ĥaṣa',
+'version-parserhooks' => 'khatatif lmohllil',
+'version-variables' => 'lmotaghayyirat',
+'version-antispam' => 'wiqaya mn á¹£-á¹£pam',
+'version-skins' => 'skinat',
+'version-other' => 'okhra',
+'version-mediahandlers' => 'motahakkimat lmedia',
+'version-hooks' => 'lkhtatif',
+'version-extension-functions' => 'wadaif lmohallil',
+'version-parser-extensiontags' => 'wossom imtidad lmohallil',
+'version-parser-function-hooks' => 'khtatif dyal dalat lmohllil',
+'version-hook-name' => 'smiyt lkhttaf',
+'version-hook-subscribedby' => 'kaytstaml mn taraf',
+'version-version' => '(Noskha $1)',
+'version-license' => 'rokhssa',
+'version-poweredby-others' => 'khrin',
+'version-software' => "lbarnamaj li m'anstalli",
+'version-software-product' => 'lmntoj',
+'version-software-version' => 'noskha',
# Special:FilePath
'filepath' => 'massar lfichier',
@@ -2539,13 +2682,15 @@ jrreb l-ÄṛḠl-Äadi.',
'filepath-submit' => 'Sir',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'qlleb Äla milffaṫ má¸oḅla',
-'fileduplicatesearch-legend' => 'qllb ala lmdoublin',
-'fileduplicatesearch-filename' => 'smiyt lfichier',
-'fileduplicatesearch-submit' => 'Qelleb',
-'fileduplicatesearch-info' => '$1 × $2 piksel<br />ṫqel l-fiÄ‹yé: $3<br />noÄ MIME : $4',
-'fileduplicatesearch-result-1' => 'ḫṫṫa ċi ṫakṛaṛ ma mtabq ll-milef "$1".',
-'fileduplicatesearch-result-n' => 'l-milef "$1" fih {{PLURAL:$2|1 ṫ-ṫakṛaṛ lli mtabq|$2 d-ṫakṛaṛaṫ lli mtabqa}}.',
+'fileduplicatesearch' => 'qlleb Äla milffaṫ má¸oḅla',
+'fileduplicatesearch-summary' => 'qlleb Äla milffaṫ má¸oḅla Äla asas l-qyam dl-haÄ‹.',
+'fileduplicatesearch-legend' => 'qllb ala lmdoublin',
+'fileduplicatesearch-filename' => 'smiyt lfichier',
+'fileduplicatesearch-submit' => 'Qelleb',
+'fileduplicatesearch-info' => '$1 × $2 piksel<br />ṫqel l-fiÄ‹yé: $3<br />noÄ MIME : $4',
+'fileduplicatesearch-result-1' => 'ḫṫṫa ċi ṫakṛaṛ ma mtabq ll-milef "$1".',
+'fileduplicatesearch-result-n' => 'l-milef "$1" fih {{PLURAL:$2|1 ṫ-ṫakṛaṛ lli mtabq|$2 d-ṫakṛaṛaṫ lli mtabqa}}.',
+'fileduplicatesearch-noresults' => 'ma lqina ḫṫṫa ċi milef ṣmito "$1".',
# Special:SpecialPages
'specialpages' => 'Ṣefḫaṫ ĥaṣṣin',
diff --git a/languages/messages/MessagesArz.php b/languages/messages/MessagesArz.php
index 8992088a..2e948510 100644
--- a/languages/messages/MessagesArz.php
+++ b/languages/messages/MessagesArz.php
@@ -209,95 +209,95 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'تحويلات_دوبل' ),
+ 'Activeusers' => array( 'يوزرات_نشطا' ),
+ 'Allmessages' => array( 'كل_الرسايل' ),
+ 'Allpages' => array( 'كل_الصÙØ­' ),
+ 'Ancientpages' => array( 'صÙØ­_قديمه' ),
+ 'Blankpage' => array( 'صÙحه_Ùارضيه' ),
+ 'Block' => array( 'بلوك', 'بلوك_IP', 'بلوك_يوزر' ),
+ 'Blockme' => array( 'بلوك_لنÙسى' ),
+ 'Booksources' => array( 'مصادر_كتاب' ),
'BrokenRedirects' => array( 'تحويلات_مكسوره' ),
- 'Disambiguations' => array( 'توضيحات' ),
- 'Userlogin' => array( 'دخول_اليوزر' ),
- 'Userlogout' => array( 'خروج_اليوزر' ),
+ 'Categories' => array( 'تصانيÙ' ),
+ 'ChangePassword' => array( 'تغيير_الپاسوورد', 'ظبط_الپاسوورد' ),
+ 'Confirmemail' => array( 'تأكيد_الايميل' ),
+ 'Contributions' => array( 'مساهمات' ),
'CreateAccount' => array( 'ابتدى_حساب' ),
- 'Preferences' => array( 'تÙضيلات' ),
- 'Watchlist' => array( 'ليستة_المراقبه' ),
- 'Recentchanges' => array( 'اخر_تعديلات' ),
- 'Upload' => array( 'رÙع' ),
+ 'Deadendpages' => array( 'صÙØ­_نهايه_مسدوده' ),
+ 'DeletedContributions' => array( 'مساهمات_ممسوحه' ),
+ 'Disambiguations' => array( 'توضيحات' ),
+ 'DoubleRedirects' => array( 'تحويلات_دوبل' ),
+ 'Emailuser' => array( 'ابعت_ايميل_لليوزر' ),
+ 'Export' => array( 'تصدير' ),
+ 'Fewestrevisions' => array( 'اقل_مراجعات' ),
+ 'FileDuplicateSearch' => array( 'تدوير_Ùايل_متكرر' ),
+ 'Filepath' => array( 'مسار_ملÙ' ),
+ 'Import' => array( 'استوراد' ),
+ 'Invalidateemail' => array( 'تعطيل_الايميل' ),
+ 'BlockList' => array( 'ليستة_البلوك', 'بيّن_البلوك', 'ليستة_بلوك_IP' ),
+ 'LinkSearch' => array( 'تدوير_اللينكات' ),
+ 'Listadmins' => array( 'عرض_الاداريين' ),
+ 'Listbots' => array( 'عرض_البوتات' ),
'Listfiles' => array( 'عرض_الÙايلات', 'ليستة_الÙايلات', 'ليستة_الصور' ),
- 'Newimages' => array( 'Ùايلات_جديده', 'صور_جديده' ),
- 'Listusers' => array( 'عرض_اليوزرات', 'ليستة_اليوزرات' ),
'Listgrouprights' => array( 'عرض_حقوق_الجروپات' ),
- 'Statistics' => array( 'احصائيات' ),
- 'Randompage' => array( 'عشوائى', 'صÙحه_عشوائيه' ),
+ 'Listredirects' => array( 'عرض_التحويلات' ),
+ 'Listusers' => array( 'عرض_اليوزرات', 'ليستة_اليوزرات' ),
+ 'Lockdb' => array( 'Ù‚ÙÙ„_قب' ),
+ 'Log' => array( 'سجل', 'سجلات' ),
'Lonelypages' => array( 'صÙØ­_وحدانيه', 'صÙØ­_يتيمه' ),
- 'Uncategorizedpages' => array( 'صÙØ­_مش_متصنÙÙ‡' ),
- 'Uncategorizedcategories' => array( 'تصانيÙ_مش_متصنÙÙ‡' ),
- 'Uncategorizedimages' => array( 'Ùايلات_مش_متصنÙÙ‡', 'صور_مش_متصنÙÙ‡' ),
- 'Uncategorizedtemplates' => array( 'قوالب_مش_متصنÙÙ‡' ),
- 'Unusedcategories' => array( 'تصانيÙ_مش_مستعمله' ),
- 'Unusedimages' => array( 'Ùايلات_مش_مستعمله', 'صور_مش_مستعمله' ),
- 'Wantedpages' => array( 'صÙØ­_مطلوبه', 'لينكات_مكسوره' ),
- 'Wantedcategories' => array( 'تصانيÙ_مطلوبه' ),
- 'Wantedfiles' => array( 'Ùايلات_مطلوبه' ),
- 'Wantedtemplates' => array( 'قوالب_مطلوبه' ),
+ 'Longpages' => array( 'صÙØ­_طويله' ),
+ 'MergeHistory' => array( 'دمج_التاريخ' ),
+ 'MIMEsearch' => array( 'تدوير_MIME' ),
+ 'Mostcategories' => array( 'اكتر_تصانيÙ' ),
+ 'Mostimages' => array( 'اكتر_Ùايلات_معمول_ليها_لينك', 'اكتر_Ùايلات', 'اكتر_صور' ),
'Mostlinked' => array( 'اكتر_صÙØ­_معمول_ليها_لينك' ),
'Mostlinkedcategories' => array( 'اكتر_تصانيÙ_معمول_ليها_لينك', 'اكتر_تصانيÙ_مستعمله' ),
'Mostlinkedtemplates' => array( 'اكتر_قوالب_معمول_ليها_لينك', 'اكتر_قوالب_مستعمله' ),
- 'Mostimages' => array( 'اكتر_Ùايلات_معمول_ليها_لينك', 'اكتر_Ùايلات', 'اكتر_صور' ),
- 'Mostcategories' => array( 'اكتر_تصانيÙ' ),
'Mostrevisions' => array( 'اكتر_مراجعات' ),
- 'Fewestrevisions' => array( 'اقل_مراجعات' ),
- 'Shortpages' => array( 'صÙØ­_قصيره' ),
- 'Longpages' => array( 'صÙØ­_طويله' ),
+ 'Movepage' => array( 'نقل_صÙحه' ),
+ 'Mycontributions' => array( 'مساهماتى' ),
+ 'Mypage' => array( 'صÙحتى' ),
+ 'Mytalk' => array( 'مناقشتى' ),
+ 'Newimages' => array( 'Ùايلات_جديده', 'صور_جديده' ),
'Newpages' => array( 'صÙØ­_جديده' ),
- 'Ancientpages' => array( 'صÙØ­_قديمه' ),
- 'Deadendpages' => array( 'صÙØ­_نهايه_مسدوده' ),
+ 'Popularpages' => array( 'صÙØ­_مشهوره' ),
+ 'Preferences' => array( 'تÙضيلات' ),
+ 'Prefixindex' => array( 'Ùهرس_بدايه' ),
'Protectedpages' => array( 'صÙØ­_محميه' ),
'Protectedtitles' => array( 'عناوين_محميه' ),
- 'Allpages' => array( 'كل_الصÙØ­' ),
- 'Prefixindex' => array( 'Ùهرس_بدايه' ),
- 'Ipblocklist' => array( 'ليستة_البلوك', 'بيّن_البلوك', 'ليستة_بلوك_IP' ),
- 'Unblock' => array( 'رÙع_منع' ),
- 'Specialpages' => array( 'صÙØ­_مخصوصه' ),
- 'Contributions' => array( 'مساهمات' ),
- 'Emailuser' => array( 'ابعت_ايميل_لليوزر' ),
- 'Confirmemail' => array( 'تأكيد_الايميل' ),
- 'Whatlinkshere' => array( 'ايه_بيوصل_هنا' ),
+ 'Randompage' => array( 'عشوائى', 'صÙحه_عشوائيه' ),
+ 'Randomredirect' => array( 'تحويله_عشوائيه' ),
+ 'Recentchanges' => array( 'اخر_تعديلات' ),
'Recentchangeslinked' => array( 'اجدد_التغييرات_اللى_معمول_ليها_لينك', 'تغييرات_مرتبطه' ),
- 'Movepage' => array( 'نقل_صÙحه' ),
- 'Blockme' => array( 'بلوك_لنÙسى' ),
- 'Booksources' => array( 'مصادر_كتاب' ),
- 'Categories' => array( 'تصانيÙ' ),
- 'Export' => array( 'تصدير' ),
- 'Version' => array( 'نسخه' ),
- 'Allmessages' => array( 'كل_الرسايل' ),
- 'Log' => array( 'سجل', 'سجلات' ),
- 'Blockip' => array( 'بلوك', 'بلوك_IP', 'بلوك_يوزر' ),
+ 'Revisiondelete' => array( 'مسح_نسخه' ),
+ 'Search' => array( 'تدوير' ),
+ 'Shortpages' => array( 'صÙØ­_قصيره' ),
+ 'Specialpages' => array( 'صÙØ­_مخصوصه' ),
+ 'Statistics' => array( 'احصائيات' ),
+ 'Tags' => array( 'وسوم' ),
+ 'Unblock' => array( 'رÙع_منع' ),
+ 'Uncategorizedcategories' => array( 'تصانيÙ_مش_متصنÙÙ‡' ),
+ 'Uncategorizedimages' => array( 'Ùايلات_مش_متصنÙÙ‡', 'صور_مش_متصنÙÙ‡' ),
+ 'Uncategorizedpages' => array( 'صÙØ­_مش_متصنÙÙ‡' ),
+ 'Uncategorizedtemplates' => array( 'قوالب_مش_متصنÙÙ‡' ),
'Undelete' => array( 'استرجاع' ),
- 'Import' => array( 'استوراد' ),
- 'Lockdb' => array( 'Ù‚ÙÙ„_قب' ),
'Unlockdb' => array( 'Ùتح_قب' ),
- 'Userrights' => array( 'حقوق_اليوزر', 'ترقية_سيسوپ', 'ترقية_بوت' ),
- 'MIMEsearch' => array( 'تدوير_MIME' ),
- 'FileDuplicateSearch' => array( 'تدوير_Ùايل_متكرر' ),
- 'Unwatchedpages' => array( 'صÙØ­_مش_متراقبه' ),
- 'Listredirects' => array( 'عرض_التحويلات' ),
- 'Revisiondelete' => array( 'مسح_نسخه' ),
+ 'Unusedcategories' => array( 'تصانيÙ_مش_مستعمله' ),
+ 'Unusedimages' => array( 'Ùايلات_مش_مستعمله', 'صور_مش_مستعمله' ),
'Unusedtemplates' => array( 'قوالب_مش_مستعمله' ),
- 'Randomredirect' => array( 'تحويله_عشوائيه' ),
- 'Mypage' => array( 'صÙحتى' ),
- 'Mytalk' => array( 'مناقشتى' ),
- 'Mycontributions' => array( 'مساهماتى' ),
- 'Listadmins' => array( 'عرض_الاداريين' ),
- 'Listbots' => array( 'عرض_البوتات' ),
- 'Popularpages' => array( 'صÙØ­_مشهوره' ),
- 'Search' => array( 'تدوير' ),
- 'Resetpass' => array( 'تغيير_الپاسوورد', 'ظبط_الپاسوورد' ),
+ 'Unwatchedpages' => array( 'صÙØ­_مش_متراقبه' ),
+ 'Upload' => array( 'رÙع' ),
+ 'Userlogin' => array( 'دخول_اليوزر' ),
+ 'Userlogout' => array( 'خروج_اليوزر' ),
+ 'Userrights' => array( 'حقوق_اليوزر', 'ترقية_سيسوپ', 'ترقية_بوت' ),
+ 'Version' => array( 'نسخه' ),
+ 'Wantedcategories' => array( 'تصانيÙ_مطلوبه' ),
+ 'Wantedfiles' => array( 'Ùايلات_مطلوبه' ),
+ 'Wantedpages' => array( 'صÙØ­_مطلوبه', 'لينكات_مكسوره' ),
+ 'Wantedtemplates' => array( 'قوالب_مطلوبه' ),
+ 'Watchlist' => array( 'ليستة_المراقبه' ),
+ 'Whatlinkshere' => array( 'ايه_بيوصل_هنا' ),
'Withoutinterwiki' => array( 'من-غير_interwiki' ),
- 'MergeHistory' => array( 'دمج_التاريخ' ),
- 'Filepath' => array( 'مسار_ملÙ' ),
- 'Invalidateemail' => array( 'تعطيل_الايميل' ),
- 'Blankpage' => array( 'صÙحه_Ùارضيه' ),
- 'LinkSearch' => array( 'تدوير_اللينكات' ),
- 'DeletedContributions' => array( 'مساهمات_ممسوحه' ),
- 'Tags' => array( 'وسوم' ),
- 'Activeusers' => array( 'يوزرات_نشطا' ),
);
$messages = array(
@@ -431,15 +431,6 @@ $messages = array(
'index-category' => 'صÙحات متÙهرسه',
'noindex-category' => 'صÙحات مش متÙهرسه',
-'mainpagetext' => "''' ميدياويكى اتنزلت بنجاح.'''",
-'mainpagedocfooter' => 'اسال [http://meta.wikimedia.org/wiki/Help:Contents دليل اليوزر] للمعلومات حوالين استخدام برنامج الويكى.
-
-== البداية ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings لستة اعدادات الضبط]
-* [http://www.mediawiki.org/wiki/Manual:FAQ أسئلة بتكرر حوالين الميدياويكى]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce لستة الايميلات بتاعة اعلانات الميدياويكى]',
-
'about' => 'عن',
'article' => 'صÙحة محتوى',
'newwindow' => '(بتÙتح ويندو جديده)',
@@ -489,7 +480,6 @@ $messages = array(
'history' => 'تاريخ الصÙحه',
'history_short' => 'تاريخ',
'updatedmarker' => 'اتحدثت بعد زيارتى الأخيرة',
-'info_short' => 'معلومات',
'printableversion' => 'نسخه للطبع',
'permalink' => 'لينك دايم',
'print' => 'اطبع',
@@ -676,12 +666,11 @@ $1',
'protectedpagetext' => 'الصÙحة دى اتقÙلت ÙÙ‰ وش التعديل.',
'viewsourcetext' => 'ممكن تشو٠وتنسخ مصدر الصÙحه دى:',
'protectedinterface' => 'الصÙحة دى هى اللى بتوÙر نص الواجهة بتاعة البرنامج،وهى مقÙولة لمنع التخريب.',
-'editinginterface' => "'''تحذير''': أنت بتعدل صÙحة بتستخدم ÙÙ‰ الواجهة النصية بتاعة البرنامج. التغييرات ÙÙ‰ الصÙحة دى ها تأثر على مظهر واجهة اليوزر لليوزرز التانيين. للترجمات، لو سمحت استخدم [http://translatewiki.net/wiki/Main_Page?setlang=ar بيتاويكى]ØŒ مشروع ترجمة الميدياويكى.",
+'editinginterface' => "'''تحذير''': أنت بتعدل صÙحة بتستخدم ÙÙ‰ الواجهة النصية بتاعة البرنامج. التغييرات ÙÙ‰ الصÙحة دى ها تأثر على مظهر واجهة اليوزر لليوزرز التانيين. للترجمات، لو سمحت استخدم [//translatewiki.net/wiki/Main_Page?setlang=ar بيتاويكى]ØŒ مشروع ترجمة الميدياويكى.",
'sqlhidden' => '(استعلام إس‌كيو‌إل متخبي)',
'cascadeprotected' => 'الصÙحة دى محمية من التعديل، بسبب انها مدمجة ÙÙ‰ {{PLURAL:$1|الصÙحة|الصÙحات}} دي، اللى مستعمل Ùيها خاصية "حماية الصÙحات المدمجة" :
$2',
'namespaceprotected' => "ما عندكش صلاحية تعديل الصÙحات اللى ÙÙ‰ نطاق '''$1'''.",
-'customcssjsprotected' => 'ماعندكش صلاحية تعديل الصÙحة دي، علشان Ùيها الإعدادات الشخصية بتاعة يوزر تاني.',
'ns-specialprotected' => 'الصÙحات المخصوصة مش ممكن تعديلها.',
'titleprotected' => "العنوان دا محمى من الإنشاء بـ[[User:$1|$1]]. السبب هو ''$2''.",
@@ -737,7 +726,7 @@ $2',
'nosuchuser' => 'ماÙيش يوزر اسمه "$1".
اسامى اليوزر بتبقى حساسه لحالة الحرÙ.
اتأكد من التهجيه, او [[Special:UserLogin/signup|اÙتح حساب جديد]].',
-'nosuchusershort' => 'ماÙيش يوزر باسم <nowiki>$1</nowiki>".
+'nosuchusershort' => 'ماÙيش يوزر باسم $1".
اتاكد من تهجية الاسم.',
'nouserspecified' => 'لازم تحدد اسم يوزر.',
'login-userblocked' => 'اليوزر دا ممنوع من الدخول.',
@@ -785,7 +774,7 @@ $2',
من Ùضلك استنى قبل المحاولة مرة تانيه.',
'loginlanguagelabel' => 'اللغة: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'غيّر الباسورد',
'resetpass_announce' => 'اتسجل دخولك دلوقتى بالكود اللى اتبعتلك ÙÙ‰ الايميل. علشان تخلص عملية الدخول ،لازم تعملك باسورد جديدة هنا:',
'resetpass_text' => '<!-- أض٠نصا هنا -->',
@@ -803,6 +792,10 @@ $2',
انتا ممكن تكون بالÙعل غيرت الباسورد بتاعتك بنجاح يا إما تكون طلبت باسورد مؤقته جديدة..',
'resetpass-temp-password' => 'باسورد مؤقته:',
+# Special:PasswordReset
+'passwordreset' => 'تمت إعادة ضبط كلمة السر',
+'passwordreset-username' => 'اسم اليوزر:',
+
# Edit page toolbar
'bold_sample' => 'حرو٠عريضه',
'bold_tip' => 'حرو٠عريضه',
@@ -814,8 +807,6 @@ $2',
'extlink_tip' => 'وصله خارجيه (اÙتكر تحط http:// قبل عنوان الوصله)',
'headline_sample' => 'راس الموضوع',
'headline_tip' => 'عنوان Ùرعى من المستوى التانى',
-'math_sample' => 'اكتب المعادله هنا',
-'math_tip' => 'معادله رياضيه (لا تكس )',
'nowiki_sample' => 'حط الكلام اللى مش متنسق هنا',
'nowiki_tip' => 'ما تستعملش Ùورمات الويكى',
'image_tip' => 'مل٠مغروس',
@@ -901,7 +892,7 @@ $2',
'noarticletext-nopermission' => 'Ù…Ùيش اى نص دلوقتى ÙÙ‰ الصÙحه دى.
ممكن [[Special:Search/{{PAGENAME}}|تدور على عنوان الصÙحه دى]] ÙÙ‰ الصÙحات التانيه,
او <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} تدور ÙÙ‰ السجلات بتاعتها]</span>.',
-'userpage-userdoesnotexist' => 'حساب اليوزر "$1" مش متسجل. لو سمحت تشو٠لو عايز تبتدي/تعدل الصÙحة دي.',
+'userpage-userdoesnotexist' => 'حساب اليوزر "<nowiki>$1</nowiki>" مش متسجل. لو سمحت تشو٠لو عايز تبتدي/تعدل الصÙحة دي.',
'userpage-userdoesnotexist-view' => 'حساب اليوزر "$1" مش متسجل',
'blocked-notice-logextract' => 'اليوزر ده معمول له بلوك دلوقتى.
اخر بلوك ÙÙ‰ السجل موجود تحت للمراجعه:',
@@ -1284,9 +1275,10 @@ $1",
'changepassword' => 'غير الباسورد',
'prefs-skin' => 'الوش',
'skin-preview' => 'بروÙÙ‡',
-'prefs-math' => 'رياضة',
'datedefault' => 'ماÙبش تÙضيل',
+'prefs-beta' => 'خصايص Beta',
'prefs-datetime' => 'وقت وتاريخ',
+'prefs-labs' => 'خصايص Labs',
'prefs-personal' => 'الپروÙيل بتاع اليوزر',
'prefs-rc' => 'اخر التغييرات',
'prefs-watchlist' => 'ليستة المراقبه',
@@ -1308,8 +1300,6 @@ $1",
'columns' => 'عمدان:',
'searchresultshead' => 'تدوير',
'resultsperpage' => 'عدد النتايج ÙÙ‰ الصÙحة:',
-'contextlines' => 'عدد السطور ÙÙ‰ كل نتيجة:',
-'contextchars' => 'عدد الحرو٠ÙÙ‰ كل سطر',
'stub-threshold' => 'الحد لتنسيق <a href="#" class="stub">لينك البذرة</a>:',
'stub-threshold-disabled' => 'معطل',
'recentchangesdays' => 'عدد الأيام المعروضة ÙÙ‰ اخرالتغييرات:',
@@ -1492,7 +1482,6 @@ $1",
'right-userrights' => 'تعديل كل الحقوق بتاعة اليوزر',
'right-userrights-interwiki' => 'تعديل صلاحيات اليوزر لليوزرز ÙÙ‰ مواقع الويكى التانيه',
'right-siteadmin' => 'Ù‚ÙÙ„ ÙˆÙتح قاعدة البيانات',
-'right-reset-passwords' => 'تغيير الباوسورد بتاعة اليوزرات التانيين',
'right-override-export-depth' => 'تصدير الصÙحات مع الصÙحات الموصوله لحد عمق 5',
'right-sendemail' => 'يبعت إيميل لليوزرز التانيين',
@@ -1676,10 +1665,6 @@ $1",
'watchthisupload' => 'حط المل٠دا تحت المراقبه',
'filewasdeleted' => 'Ùيه Ùايل بنÙس الاسم دا اتأپلود قبل كدا Ùˆ بعدين اتمسح.
لازم تشيّك على $1 قبل ما تأپلود الÙايل كمان مره.',
-'upload-wasdeleted' => "'''تحذير: انت بتحمل مل٠اتمسح قبل كدا.'''
-
-لازم تتاكد من انك عايز تستمر ÙÙ‰ تحميل المل٠دا.
-سجل المسح بتاع المل٠دا معروض هنا علشان تبص عليه:",
'filename-bad-prefix' => "اسم المل٠اللى بتحمله بيبتدى بـ'''\"\$1\"'''ØŒ واللى هو اسم مش وصÙÙ‰ بيتحط غالبا من الكاميرات الديجيتال اوتوماتيكي.
لو سمحت تختار اسم يكون بيوص٠المل٠بتاعك احسن من كدا.",
'filename-prefix-blacklist' => ' #<!-- سيب السطر ده زى ما هوه --> <pre>
@@ -1794,7 +1779,6 @@ PICT # misc.
[[Special:WhatLinksHere/$2|قائمة كاملة]] متوÙرة.',
'nolinkstoimage' => 'ماÙيش صÙحات بتوصل للÙايل ده.',
'morelinkstoimage' => 'عرض [[Special:WhatLinksHere/$1|لينكات اكتر]] للمل٠دا.',
-'redirectstofile' => '{{PLURAL:$1| الملÙ|ال$1 ملÙ}} اللى جاى بيحول للمل٠دا:',
'duplicatesoffile' => '{{PLURAL:$1| الملÙ|ال$1 مل٠اللى بعده}} متكررين من المل٠ده:
([[Special:FileDuplicateSearch/$2| تÙاصيل اكتر]]):',
'sharedupload' => 'المل٠دا من $1 و ممكن تستعمله مشاريع تانيه.',
@@ -2106,10 +2090,8 @@ PICT # misc.
'watchlistanontext' => 'لو سمحت $1 لعرض أو تعديل الصÙحات ÙÙ‰ لستة مراقبتك.',
'watchnologin' => 'مش متسجل',
'watchnologintext' => 'لازم تكون [[Special:UserLogin|مسجل الدخول]] علشان تعدل لستة المراقبة بتاعتك.',
-'addedwatch' => 'تمت الاضاÙÙ‡ للستة الصÙحات اللى بتراقبها',
'addedwatchtext' => 'تمت إضاÙØ© الصÙحه "$1" [[Special:Watchlist|للستة الصÙحات اللى بتراقبها]].
التعديلات اللى بعد كده ها تتحط على الصÙحه دى، وصÙحة المناقش الخاصه بها ها تتحط هناك. واسم الصÙحة هايظهر بخط <b>عريض</b> ÙÙ‰ صÙحة [[Special:RecentChanges|أحدث التعديلات]] لتسهيل تحديدها واكتشاÙها.',
-'removedwatch' => 'اتشالت من لستة الصÙحات اللى بتراقبها',
'removedwatchtext' => 'الصÙحه دى اتشالت "[[:$1]]" من [[Special:Watchlist|لستة الصÙحات اللى بتراقبها]].',
'watch' => 'راقب',
'watchthispage' => 'راقب الصÙحه دى',
@@ -2164,13 +2146,13 @@ $NEWPAGE
--
علشان تغيّر ليستة المراقبه بتاعتك, زور
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
علشان تمسح الصÙحه من على ليستة مراقبتك, زور
$UNWATCHURL
الfeedback و مساعده اكتر:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'امسح الصÙحه',
@@ -2186,7 +2168,7 @@ $UNWATCHURL
من Ùضلك اتأكد انك عايز المسح وبأنك Ùاهم نتايج العمليه دى. عمليات الحذ٠لازم تتم بناء على [[{{MediaWiki:Policy-url}}|القواعد المتÙÙ‚ عليها]].',
'actioncomplete' => 'العمليه خلصت',
'actionfailed' => 'الÙعل Ùشل',
-'deletedtext' => '"<nowiki>$1</nowiki>" اتمسحت.
+'deletedtext' => '"$1" اتمسحت.
بص على $2 علشان تشو٠سجل آخر عمليات المسح.',
'deletedarticle' => 'اتمسحت "[[$1]]"',
'suppressedarticle' => 'خببى "[[$1]]"',
@@ -2245,7 +2227,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'وقت الانتهاء مش صحيح.',
'protect_expiry_old' => 'وقت انتهاء المنع قديم.',
'protect-unchain-permissions' => 'شيل حماية أوبشنات الحمايه التانيه',
-'protect-text' => "ممكن هنا تعرض Ùˆ تغير مستوى الحمايه للصÙحه '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "ممكن هنا تعرض Ùˆ تغير مستوى الحمايه للصÙحه '''$1'''.",
'protect-locked-blocked' => "انت مش ممكن تغير مستويات الحماية وأنت ممنوع.
الإعدادات بتاعة الصÙحة '''$1''' دلوقتى هي:",
'protect-locked-dblock' => "ما ينÙعش تغير مستويات الحماية بسبب Ù‚ÙÙ„ قاعدة البيانات دلوقتي.
@@ -2404,7 +2386,6 @@ $1',
دا لازم يحصل بس علشان تمنع التخريب ،و على حسب
[[{{MediaWiki:Policy-url}}|السياسة]].
اكتب سبب محدد تحت (يعنى مثلا، اكتب الصÙحات المعينة اللى اتخربت بسببه).',
-'ipaddress' => 'عنوان الأيبي:',
'ipadressorusername' => 'عنوان الأيبى أو اسم اليوزر:',
'ipbexpiry' => 'مدة المنع:',
'ipbreason' => 'السبب:',
@@ -2417,7 +2398,6 @@ $1',
** سلوك عدواني/تحرش
** إساءة استخدام اكتر من حسابات
** اسم يوزر مش مقبول',
-'ipbanononly' => 'امنع اليوزرز المجهولين بس',
'ipbcreateaccount' => 'امنع Ùتح الحسابات',
'ipbemailban' => 'منع اليوزر ده من بعتان إيميل',
'ipbenableautoblock' => ' امنع آخر عنوان أيبى استخدمه اليوزر دا اوتوماتيكي، وأى عناوين أيبى تانية يحاول التحرير منها',
@@ -2428,7 +2408,6 @@ $1',
'ipbotherreason' => 'سبب تاني:',
'ipbhidename' => 'خبى اسم اليوزر من التعديلات و الليستات.',
'ipbwatchuser' => 'راقب صÙحات اليوزر Ùˆ النقاش بتوع اليوزر دا',
-'ipballowusertalk' => 'السماح لليوزر ده بتعديل صÙحة نقاشه الخاصة أثناء المنع',
'ipb-change-block' => 'عيد منع اليوزر بالإعدادات دى',
'badipaddress' => 'عنوان أيبى مش صحيح',
'blockipsuccesssub' => 'المنع حصل بنجاح',
@@ -2446,14 +2425,9 @@ $1',
'unblocked-id' => 'منع $1 اترÙع',
'ipblocklist' => 'لستة عناوين الااى بى واسامى اليوزر الممنوعه',
'ipblocklist-legend' => 'دور على يوزر ممنوع',
-'ipblocklist-username' => 'اسم اليوزر او عنوان ال اى بي.',
-'ipblocklist-sh-userblocks' => '$1 عمليات منع الحسابات',
-'ipblocklist-sh-tempblocks' => '$1 عمليات المنع المؤقتة',
-'ipblocklist-sh-addressblocks' => '$1 عمليات منع الأيبى المÙردة',
'ipblocklist-submit' => 'تدوير',
'ipblocklist-localblock' => 'منع محلى',
'ipblocklist-otherblocks' => '{{PLURAL:$1|المنع|المنع}} التانى',
-'blocklistline' => '$1, $2 منع $3 ($4)',
'infiniteblock' => 'دايم',
'expiringblock' => 'بيخلص يوم $1 الساعه $2',
'anononlyblock' => 'مجهول بس',
@@ -2478,7 +2452,7 @@ $1',
'reblock-logentry' => 'غير إعدادات المنع ل[[$1]] بتاريخ انتهاء $2 $3',
'blocklogtext' => 'دا سجل بعمليات المنع ورÙع المنع.
عناوين الأيبى اللى اتمنعت اوتوماتيكى مش معروضة.
-شو٠[[Special:IPBlockList|عناوين الأيبى الممنوعة]] علشان تشو٠عمليات المنع الشغالة دلوقتي.',
+شو٠[[Special:BlockList|عناوين الأيبى الممنوعة]] علشان تشو٠عمليات المنع الشغالة دلوقتي.',
'unblocklogentry' => 'رÙع منع $1',
'block-log-flags-anononly' => 'اليوزرز المجهولين بس',
'block-log-flags-nocreate' => ' Ùتح الحسابات ممنوع',
@@ -2492,8 +2466,7 @@ $1',
'ipb_expiry_temp' => 'عمليات منع أسماء اليوزرز المستخبية لازم تكون على طول.',
'ipb_hide_invalid' => 'ماقدرناش نخÙÙ‰ الحساب دا; يمكن يكون عنده تعديلات كتيره قوى.',
'ipb_already_blocked' => '"$1" ممنوع Ùعلا',
-'ipb-needreblock' => '== ممنوع بالÙعل ==
-$1 ممنوع Ùعلا. عايز تغير الإعدادات؟',
+'ipb-needreblock' => '$1 ممنوع Ùعلا. عايز تغير الإعدادات؟',
'ipb-otherblocks-header' => '{{PLURAL:$1||المنع التانى|المنعين التانيين|المنوعات التانيين}}',
'ipb_cant_unblock' => 'غلطه: عنوان الااى بى الممنوع مش موجود $1.
يمكن اترÙع منعه Ùعلا.',
@@ -2642,7 +2615,7 @@ $1 ممنوع Ùعلا. عايز تغير الإعدادات؟',
'allmessagesdefault' => 'النص الاوتوماتيكي',
'allmessagescurrent' => 'النص دلوقتى',
'allmessagestext' => 'دى لستة برسايل النظام المتوÙرة ÙÙ‰ نطاق ميدياويكي.
-لو سمحت تزور[http://www.mediawiki.org/wiki/Localisation ترجمة ميدياويكي] Ùˆ [http://translatewiki.net بيتاويكي] لو كنت عايز تساهم ÙÙ‰ ترجمة ميدياويكى الاصلية.',
+لو سمحت تزور[//www.mediawiki.org/wiki/Localisation ترجمة ميدياويكي] Ùˆ [//translatewiki.net بيتاويكي] لو كنت عايز تساهم ÙÙ‰ ترجمة ميدياويكى الاصلية.',
'allmessagesnotsupportedDB' => "الصÙحة دى مش يمكن حد يستعملها علشان'''\$wgUseDatabaseMessages''' متعطل.",
'allmessages-filter-legend' => 'Ùيلتر',
'allmessages-filter' => 'Ùلتره بحالة التهيئه:',
@@ -2808,9 +2781,7 @@ $1 ممنوع Ùعلا. عايز تغير الإعدادات؟',
'vector.js' => '/* اى جاÙاسكريبت هنا حتتحمل لكل يوزر بيستخدم واجهة Ùكتور */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata متعطلة للسيرÙر دا.',
-'nocreativecommons' => 'Creative Commons RDF metadata متعطلة للسيرÙر دا.',
-'notacceptable' => 'السيرÙر بتاع الويكى مش ممكن يديلك بيانات بصيغة ممكن عميلك يقراها.',
+'notacceptable' => 'السيرÙر بتاع الويكى مش ممكن يديلك بيانات بصيغة ممكن عميلك يقراها.',
# Attribution
'anonymous' => '{{PLURAL:$1|يوزر مجهول|يوزرز مجهولين}} ل {{SITENAME}}',
@@ -2833,14 +2804,6 @@ $1 ممنوع Ùعلا. عايز تغير الإعدادات؟',
'spam_reverting' => 'ترجيع آخر نسخة ماÙيهاش لينكات لـ $1',
'spam_blanking' => 'كل النسخ Ùيها لينكات Ù„ $1ØŒ Ùضيها',
-# Info page
-'infosubtitle' => 'معلومات للصÙحه',
-'numedits' => 'عدد التعديلات (صÙحة): $1',
-'numtalkedits' => 'عدد التعديلات (صÙحة نقاش): $1',
-'numwatchers' => 'عدد المراقبين: $1',
-'numauthors' => 'عدد المؤلÙين المميزين (صÙحة): $1',
-'numtalkauthors' => 'عدد المؤلÙين المميزين (صحÙØ© نقاش): $1',
-
# Skin names
'skinname-standard' => 'كلاسيك',
'skinname-nostalgia' => 'نوستالجيا',
@@ -2851,26 +2814,6 @@ $1 ممنوع Ùعلا. عايز تغير الإعدادات؟',
'skinname-simple' => 'سيمبل',
'skinname-modern' => 'مودرن',
-# Math options
-'mw_math_png' => 'دايما اعرض PNG',
-'mw_math_simple' => 'يا إما HTML لو بسيطة قوى أو PNG',
-'mw_math_html' => 'ياإما HTML لو ممكن أو PNG',
-'mw_math_source' => 'اعرض على هيئة TeX (للبراوزرات النصية)',
-'mw_math_modern' => 'أحسن للبراوزرات الحديثة',
-'mw_math_mathml' => 'اعرض بصيغة MathML لو ممكن (تحت التجريب)',
-
-# Math errors
-'math_failure' => 'الاعراب Ùشل',
-'math_unknown_error' => 'غلط مش معروÙ',
-'math_unknown_function' => 'وظيÙØ© مش معروÙØ©',
-'math_lexing_error' => 'غلط ÙÙ‰ الكلمة',
-'math_syntax_error' => 'غلط ÙÙ‰ تركيب الجملة',
-'math_image_error' => 'Ùشل التحويل لـ PNG Ø›
-اتاكد من التثبيت المضبوط لـ :Latex و dvips و gs و convert.',
-'math_bad_tmpdir' => 'مش ممكن الكتابة أو انشاء مجلد الرياضة الموؤقت',
-'math_bad_output' => 'مش ممكن الكتابة لـ أو إنشاء مجلد الخرج للرياضيات',
-'math_notexvc' => 'ضايعtexvc executable Ø› لو سمحت شوÙmath/README للضبط.',
-
# Patrolling
'markaspatrolleddiff' => 'علم عليها انها متراجعة',
'markaspatrolledtext' => 'علم على المقاله دى إنها متراجعة',
@@ -2916,7 +2859,6 @@ $1',
'file-nohires' => '<small>ماÙيش ريزوليوشن اعلى متوÙر.</small>',
'svg-long-desc' => 'مل٠SVGØŒ اساسا $1 × $2 بكسل، حجم الملÙ: $3',
'show-big-image' => 'الصورة بدقه كامله',
-'show-big-image-thumb' => '<small>حجم البروÙÙ‡ دى: $1 × $2 بكسل</small>',
'file-info-gif-looped' => 'ملÙÙˆÙ',
'file-info-gif-frames' => '$1 {{PLURAL:$1|برواز|براويز}}',
@@ -2958,7 +2900,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'العرض',
@@ -2973,13 +2921,11 @@ $1',
'exif-ycbcrpositioning' => 'وضع Y و C',
'exif-xresolution' => 'الدقة الأÙقية',
'exif-yresolution' => 'الدقة الرأسية',
-'exif-resolutionunit' => 'وحدة تحليل X و Y',
'exif-stripoffsets' => 'موقع بيانات الصورة',
'exif-rowsperstrip' => 'عدد الصÙو٠لكل ستريب',
'exif-stripbytecounts' => 'بايت لكل ستريب مضغوط',
'exif-jpeginterchangeformat' => 'الحد ل JPEG SOI',
'exif-jpeginterchangeformatlength' => 'بايت من بيانات JPEG',
-'exif-transferfunction' => 'وظيÙØ© النقل',
'exif-whitepoint' => 'ألوان النقطة البيضا',
'exif-primarychromaticities' => 'ألوان الأساسيات',
'exif-ycbcrcoefficients' => 'معاملات مصÙÙˆÙØ© تحويل Ùراغ اللون',
@@ -2998,7 +2944,6 @@ $1',
'exif-compressedbitsperpixel' => 'طور ضغط الصورة',
'exif-pixelydimension' => 'عرض صورة صحيح',
'exif-pixelxdimension' => 'ارتÙاع صورة صحيح',
-'exif-makernote' => 'ملاحظات الصانع',
'exif-usercomment' => 'تعليقات اليوزر',
'exif-relatedsoundfile' => 'مل٠صوت مرتبط',
'exif-datetimeoriginal' => 'تاريخ و وقت الإنتاج',
@@ -3013,7 +2958,6 @@ $1',
'exif-exposureprogram' => 'برنامج التعرض',
'exif-spectralsensitivity' => 'الحساسية الطيÙية',
'exif-isospeedratings' => 'تقييم سرعة أيزو',
-'exif-oecf' => 'عامل التحويل الكهروضوئى',
'exif-shutterspeedvalue' => 'سرعة القاÙÙ„',
'exif-aperturevalue' => 'Ùتحة القاÙÙ„',
'exif-brightnessvalue' => 'الضي',
@@ -3027,7 +2971,6 @@ $1',
'exif-focallength-format' => '$1 ملم',
'exif-subjectarea' => 'منطقة الجسم',
'exif-flashenergy' => 'طاقة الÙلاش',
-'exif-spatialfrequencyresponse' => 'استجابة التردد الÙراغي',
'exif-focalplanexresolution' => 'تحليل المستوى البؤرى X',
'exif-focalplaneyresolution' => 'تحليل المستوى البؤرى Y',
'exif-focalplaneresolutionunit' => 'وحدة تحليل المستوى البؤرى',
@@ -3036,7 +2979,6 @@ $1',
'exif-sensingmethod' => 'وسيلة الاستشعار',
'exif-filesource' => 'مصدر الملÙ',
'exif-scenetype' => 'نوع المشهد',
-'exif-cfapattern' => 'نمط سى إ٠إيه',
'exif-customrendered' => 'تظبيط الصورة حسب الطلب',
'exif-exposuremode' => 'طريقة التعرض',
'exif-whitebalance' => 'توازن الأبيض',
@@ -3237,15 +3179,13 @@ $1',
# External editor support
'edit-externally' => 'استعمل تطبيق من بره علشان تعدل المل٠دا',
-'edit-externally-help' => '(بص على [http://www.mediawiki.org/wiki/Manual:External_editors تعليمات الاعداد] علشان معلومات اكتر.)',
+'edit-externally-help' => '(بص على [//www.mediawiki.org/wiki/Manual:External_editors تعليمات الاعداد] علشان معلومات اكتر.)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'الكل',
-'imagelistall' => 'الكل',
-'watchlistall2' => 'الكل',
-'namespacesall' => 'الكل',
-'monthsall' => 'الكل',
-'limitall' => 'الكل',
+'watchlistall2' => 'الكل',
+'namespacesall' => 'الكل',
+'monthsall' => 'الكل',
+'limitall' => 'الكل',
# E-mail address confirmation
'confirmemail' => 'اعمل تأكيد للأيميل بتاعك',
@@ -3367,7 +3307,7 @@ $1',
'watchlistedit-normal-legend' => 'شيل العناوين من لستة المراقبة',
'watchlistedit-normal-explain' => 'العناوين ÙÙ‰ لستة المراقبة بتاعتك معروضة تحت.
علشان تشيل عنوان، دوس على الصندوق اللى جنبه، ودوس على شيل العناوين"{{int:Watchlistedit-normal-submit}}".
-ممكن كمان [[Special:Watchlist/raw|تعديل اللستة الخام]].',
+ممكن كمان [[Special:EditWatchlist/raw|تعديل اللستة الخام]].',
'watchlistedit-normal-submit' => 'شيل العناوين',
'watchlistedit-normal-done' => '{{PLURAL:$1|عنوان واحد|$1 عنوان}} اتشال من لستة المراقبة بتاعتك:',
'watchlistedit-raw-title' => 'تعديل لستة المراقبة الخام',
@@ -3375,7 +3315,7 @@ $1',
'watchlistedit-raw-explain' => 'العناوين ÙÙ‰ لستة مراقبتك معروضه تحت، وممكن تعدلها لما تزود او تشيل من اللستة؛
عنوان واحد ÙÙ‰ السطر.
لما تخلص، دوس تحديث لستة المراقبه "{{int:Watchlistedit-raw-submit}}".
-ممكن كمان [[Special:Watchlist/edit|تستعمل المحرر القياسي]].',
+ممكن كمان [[Special:EditWatchlist|تستعمل المحرر القياسي]].',
'watchlistedit-raw-titles' => 'العناوين:',
'watchlistedit-raw-submit' => 'تحديث لستة المراقبة',
'watchlistedit-raw-done' => 'لستة المراقبة بتاعتك اتحدثت خلاص.',
@@ -3453,25 +3393,24 @@ $1',
'duplicate-defaultsort' => 'تحزير: زرار الترتيب الاوتوماتيكي"$2" بيوق٠زرار الترتيب الاوتوماتيكي"$1" القديم.',
# Special:Version
-'version' => 'نسخه',
-'version-extensions' => 'الامتدادات المتثبتة',
-'version-specialpages' => 'صÙحات مخصوصة',
-'version-parserhooks' => 'خطاطي٠البريزر',
-'version-variables' => 'المتغيرات',
-'version-other' => 'تانية',
-'version-mediahandlers' => 'متحكمات الميديا',
-'version-hooks' => 'الخطاطيÙ',
-'version-extension-functions' => 'وظاي٠الامتداد',
-'version-parser-extensiontags' => 'التاجز بتوع امتداد البريزر',
-'version-parser-function-hooks' => 'خطاطي٠دالة المحلل',
-'version-skin-extension-functions' => 'الوظاي٠بتاعة امتداد الواجهة',
-'version-hook-name' => 'اسم الخطاÙ',
-'version-hook-subscribedby' => 'اشتراك باسم',
-'version-version' => '(نسخه $1)',
-'version-license' => 'الترخيص',
-'version-software' => 'السوÙتوير المتستاب',
-'version-software-product' => 'المنتج',
-'version-software-version' => 'النسخه',
+'version' => 'نسخه',
+'version-extensions' => 'الامتدادات المتثبتة',
+'version-specialpages' => 'صÙحات مخصوصة',
+'version-parserhooks' => 'خطاطي٠البريزر',
+'version-variables' => 'المتغيرات',
+'version-other' => 'تانية',
+'version-mediahandlers' => 'متحكمات الميديا',
+'version-hooks' => 'الخطاطيÙ',
+'version-extension-functions' => 'وظاي٠الامتداد',
+'version-parser-extensiontags' => 'التاجز بتوع امتداد البريزر',
+'version-parser-function-hooks' => 'خطاطي٠دالة المحلل',
+'version-hook-name' => 'اسم الخطاÙ',
+'version-hook-subscribedby' => 'اشتراك باسم',
+'version-version' => '(نسخه $1)',
+'version-license' => 'الترخيص',
+'version-software' => 'السوÙتوير المتستاب',
+'version-software-product' => 'المنتج',
+'version-software-version' => 'النسخه',
# Special:FilePath
'filepath' => 'مسار ملÙ',
@@ -3482,9 +3421,7 @@ $1',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'دور على الملÙات المتكررة',
-'fileduplicatesearch-summary' => 'دور على الملÙات المتكررة على اساس قيمة الهاش بتاعتها.
-
-دخل اسم المل٠من غير البريÙكس "{{ns:file}}:".',
+'fileduplicatesearch-summary' => 'دور على الملÙات المتكررة على اساس قيمة الهاش بتاعتها.',
'fileduplicatesearch-legend' => 'تدوير على متكرر',
'fileduplicatesearch-filename' => 'اسم الملÙ:',
'fileduplicatesearch-submit' => 'تدوير',
diff --git a/languages/messages/MessagesAs.php b/languages/messages/MessagesAs.php
index e2b7aa42..fc9b8b4e 100644
--- a/languages/messages/MessagesAs.php
+++ b/languages/messages/MessagesAs.php
@@ -11,15 +11,15 @@
* @author Gahori
* @author Gitartha.bordoloi
* @author Jaminianurag
+ * @author Nilamdyuti
* @author Priyankoo
* @author Psneog
* @author Rajuonline
* @author Reedy
+ * @author Simbu123
* @author Urhixidur
*/
-$fallback = 'bn';
-
$namespaceNames = array(
NS_MEDIA => 'মাধà§à¦¯à¦®',
NS_SPECIAL => 'বিশেষ',
@@ -64,35 +64,35 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Userlogin' => array( 'সদসà§à¦¯à§°_পà§à§°à¦¬à§‡à¦¶' ),
- 'Userlogout' => array( 'সদসà§à¦¯à§°_পà§à§°à¦¸à§à¦¥à¦¾à¦¨' ),
+ 'Allpages' => array( 'সকলোবোৰ_পৃষà§à¦ à¦¾' ),
+ 'Contributions' => array( 'অৱদানবোৰ' ),
'CreateAccount' => array( 'সদসà§à¦¯à¦­à§à¦•à§à¦¤à¦¿' ),
- 'Preferences' => array( 'পচনà§à¦¦' ),
- 'Watchlist' => array( 'লকà§à¦·à§à¦¯à¦¤à¦¾à¦²à¦¿à¦•à¦¾' ),
- 'Recentchanges' => array( 'শেহতীয়া_কাম' ),
- 'Upload' => array( 'বোজাই' ),
'Listfiles' => array( 'চিতà§à§°-তালিকা' ),
- 'Newimages' => array( 'নতà§à¦¨_চিতà§à§°' ),
- 'Listusers' => array( 'সদসà§à¦¯-তালিকা' ),
'Listgrouprights' => array( 'গোটৰ_অধিকাৰসমূহ' ),
- 'Statistics' => array( 'পৰিসংখà§à¦¯à¦¾' ),
- 'Randompage' => array( 'আকসà§à¦®à¦¿à¦•' ),
+ 'Listusers' => array( 'সদসà§à¦¯-তালিকা' ),
'Lonelypages' => array( 'অকলশৰীয়া_পৃষà§à¦ à¦¾' ),
- 'Uncategorizedpages' => array( 'অবিনà§à¦¯à¦¸à§à¦¤_পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ' ),
+ 'Mycontributions' => array( 'মোৰ_অৱদান' ),
+ 'Mypage' => array( 'মোৰ_পৃষà§à¦ à¦¾' ),
+ 'Mytalk' => array( 'মোৰ_কথোপকথন' ),
+ 'Newimages' => array( 'নতà§à¦¨_চিতà§à§°' ),
+ 'Popularpages' => array( 'জনপà§à§°à¦¿à¦¯à¦¼_পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ' ),
+ 'Preferences' => array( 'পচনà§à¦¦' ),
+ 'Randompage' => array( 'আকসà§à¦®à¦¿à¦•' ),
+ 'Recentchanges' => array( 'শেহতীয়া_কাম' ),
+ 'Specialpages' => array( 'বিশেষ_পৃষà§à¦ à¦¾à¦¬à§‹à§°' ),
+ 'Statistics' => array( 'পৰিসংখà§à¦¯à¦¾' ),
'Uncategorizedcategories' => array( 'অবিনà§à¦¯à¦¸à§à¦¤_শà§à§°à§‡à¦£à§€à¦¸à¦®à§‚হ' ),
'Uncategorizedimages' => array( 'অবিনà§à¦¯à¦¸à§à¦¤_চিতà§à§°à¦¬à§‹à§°' ),
+ 'Uncategorizedpages' => array( 'অবিনà§à¦¯à¦¸à§à¦¤_পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ' ),
'Uncategorizedtemplates' => array( 'অবিনà§à¦¯à¦¸à§à¦¤_সাà¦à¦šà¦¬à§‹à§°' ),
'Unusedcategories' => array( 'অবà§à¦¯à§±à¦¹à§ƒà¦¤_শà§à§°à§‡à¦£à§€à¦¸à¦®à§‚হ' ),
'Unusedimages' => array( 'অবà§à¦¯à§±à¦¹à§ƒà¦¤_চিতà§à§°à¦¬à§‹à§°' ),
- 'Wantedpages' => array( 'আকাংকà§à¦·à¦¿à¦¤_পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ' ),
+ 'Upload' => array( 'বোজাই' ),
+ 'Userlogin' => array( 'সদসà§à¦¯à§°_পà§à§°à¦¬à§‡à¦¶' ),
+ 'Userlogout' => array( 'সদসà§à¦¯à§°_পà§à§°à¦¸à§à¦¥à¦¾à¦¨' ),
'Wantedcategories' => array( 'আকাংকà§à¦·à¦¿à¦¤_শà§à§°à§‡à¦£à§€à¦¸à¦®à§‚হ' ),
- 'Allpages' => array( 'সকলোবোৰ_পৃষà§à¦ à¦¾' ),
- 'Specialpages' => array( 'বিশেষ_পৃষà§à¦ à¦¾à¦¬à§‹à§°' ),
- 'Contributions' => array( 'অৱদানবোৰ' ),
- 'Mypage' => array( 'মোৰ_পৃষà§à¦ à¦¾' ),
- 'Mytalk' => array( 'মোৰ_কথোপকথন' ),
- 'Mycontributions' => array( 'মোৰ_অৱদান' ),
- 'Popularpages' => array( 'জনপà§à§°à¦¿à¦¯à¦¼_পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ' ),
+ 'Wantedpages' => array( 'আকাংকà§à¦·à¦¿à¦¤_পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ' ),
+ 'Watchlist' => array( 'লকà§à¦·à§à¦¯à¦¤à¦¾à¦²à¦¿à¦•à¦¾' ),
);
$digitTransformTable = array(
@@ -140,8 +140,8 @@ $messages = array(
'tog-shownumberswatching' => 'লকà§à¦·à§à¦¯ কৰি থকা সদসà§à¦¯ সমূহৰ সংখà§à¦¯à¦¾ দেখà§à§±à¦¾à¦“ক',
'tog-oldsig' => 'বৰà§à¦¤à¦®à¦¾à¦¨à§° সà§à¦¬à¦¾à¦•à§à¦·à§°:',
'tog-fancysig' => 'সà§à¦¬à¦¾à¦•à§à¦·à§° ৱিকিটেকà§à¦¸à¦Ÿ হিচাপে বà§à¦¯à§±à¦¹à¦¾à§° কৰক (সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à¦¿à¦¯à¦¼ সংযোগ অবিহনে)',
-'tog-externaleditor' => 'ডিফ’লà§à¦Ÿ ভাবে বাহà§à¦¯à¦¿à¦• সমà§à¦ªà¦¾à¦¦à¦¨-সà¦à¦œà§à¦²à¦¿ বà§à¦¯à§±à¦¹à¦¾à§° কৰক (দকà§à¦·à§à¦¯ জনৰ বাবেহে, আপোনাৰ কমà§à¦ªà¦¿à¦‰à¦Ÿà¦¾à§°à¦¤ বিশেষ বà§à¦¯à§±à¦¸à§à¦¥à¦¾ থাকিব লাগিব । [http://www.mediawiki.org/wiki/Manual:External_editors সবিশেষ ।])',
-'tog-externaldiff' => 'ডিফ’লà§à¦Ÿ ভাবে বাহà§à¦¯à¦¿à¦• তফাৎ (diff) বà§à¦¯à§±à¦¹à¦¾à§° কৰক (দকà§à¦·à§à¦¯ জনৰ বাবেহে, আপোনাৰ কমà§à¦ªà¦¿à¦‰à¦Ÿà¦¾à§°à¦¤ বিশেষ বà§à¦¯à§±à¦¸à§à¦¥à¦¾ থাকিব লাগিব । [http://www.mediawiki.org/wiki/Manual:External_editors সবিশেষ ।])',
+'tog-externaleditor' => 'ডিফ’লà§à¦Ÿ ভাবে বাহà§à¦¯à¦¿à¦• সমà§à¦ªà¦¾à¦¦à¦¨-সà¦à¦œà§à¦²à¦¿ বà§à¦¯à§±à¦¹à¦¾à§° কৰক (দকà§à¦·à§à¦¯ জনৰ বাবেহে, আপোনাৰ কমà§à¦ªà¦¿à¦‰à¦Ÿà¦¾à§°à¦¤ বিশেষ বà§à¦¯à§±à¦¸à§à¦¥à¦¾ থাকিব লাগিব । [//www.mediawiki.org/wiki/Manual:External_editors সবিশেষ ।])',
+'tog-externaldiff' => 'ডিফ’লà§à¦Ÿ ভাবে বাহà§à¦¯à¦¿à¦• তফাৎ (diff) বà§à¦¯à§±à¦¹à¦¾à§° কৰক (দকà§à¦·à§à¦¯ জনৰ বাবেহে, আপোনাৰ কমà§à¦ªà¦¿à¦‰à¦Ÿà¦¾à§°à¦¤ বিশেষ বà§à¦¯à§±à¦¸à§à¦¥à¦¾ থাকিব লাগিব । [//www.mediawiki.org/wiki/Manual:External_editors সবিশেষ ।])',
'tog-showjumplinks' => '"জà¦à¦ªà¦¿à¦¯à¦¼à¦¾à¦‡ যাওক" সংযোগ সকà§à§°à¦¿à¦¯à¦¼ কৰক',
'tog-uselivepreview' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à§° লগে লগে খচৰা দেখà§à§±à¦¾à¦“ক (JavaScript) (পৰীকà§à¦·à¦¾à¦®à§‚লক)',
'tog-forceeditsummary' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à§° সাৰাংশ নিদিলে মোক জনাব',
@@ -164,7 +164,7 @@ $messages = array(
'editfont-style' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à§° ফনà§à¦Ÿ ষà§à¦Ÿà¦¾à¦‡à¦²',
'editfont-default' => "বà§à§°à¦¾à¦‰à¦œà¦¾à§° ডিফ'লà§à¦Ÿ",
'editfont-monospace' => 'মনোসà§à¦ªà§‡à¦š ফনà§à¦Ÿ',
-'editfont-sansserif' => 'চেৰিফ-বিহীন ফনà§à¦Ÿ',
+'editfont-sansserif' => 'চেনà§â€Œà¦šà§‡à§°à¦¿à¦« ফনà§à¦Ÿ',
'editfont-serif' => 'চেৰিফ ফনà§à¦Ÿ',
# Dates
@@ -226,7 +226,7 @@ $messages = array(
'category-media-header' => '"$1" শà§à§°à§‡à¦£à§€à§° মিডিয়া',
'category-empty' => "''à¦à¦‡ শà§à§°à§‡à¦£à§€à¦¤ বৰà§à¦¤à¦®à¦¾à¦¨ কোনো পৃষà§à¦ à¦¾ বা মিডিয়া ফাইল নাই ।''",
'hidden-categories' => '{{PLURAL:$1|নিহিত শà§à§°à§‡à¦£à§€|নিহিত শà§à§°à§‡à¦£à§€à¦¸à¦®à§‚হ}}',
-'hidden-category-category' => 'নিহিত শà§à§°à§‡à¦£à§€ সমূহ',
+'hidden-category-category' => 'অদৃশà§à¦¯ শà§à§°à§‡à¦£à§€ সমূহ',
'category-subcat-count' => '{{PLURAL:$2|à¦à¦‡ শà§à§°à§‡à¦£à§€à¦¤ নিমà§à¦¨à¦²à¦¿à¦–িত উপশà§à§°à§‡à¦£à§€à¦¸à¦®à§‚হ আছে । মà§à¦  $2টা উপশà§à§°à§‡à¦£à§€à§° ভিতৰত à¦à¦‡ শà§à§°à§‡à¦£à§€à¦¤ নিমà§à¦¨à¦²à¦¿à¦–িত {{PLURAL:$1|à¦à¦Ÿà¦¾ উপশà§à§°à§‡à¦£à§€|$1 টা উপশà§à§°à§‡à¦£à§€}} আছে, }}',
'category-subcat-count-limited' => 'à¦à¦‡ শà§à§°à§‡à¦£à§€à¦¤ নিমà§à¦¨à¦²à¦¿à¦–িত {{PLURAL:$1|টা উপশà§à§°à§‡à¦£à§€ আছে|$1টা উপশà§à§°à§‡à¦£à§€ আছে}}।',
'category-article-count' => '{{PLURAL:$2|à¦à¦‡ শà§à§°à§‡à¦£à§€à¦Ÿà§‹à¦¤ কেৱল তলত দিয়া পৃষà§à¦ à¦¾à¦¹à§‡ আছে । মà§à¦  $2 খনৰ ভিতৰত à¦à¦‡ শà§à§°à§‡à¦£à§€à¦Ÿà§‹à¦¤ তলৰ {{PLURAL:$1|à¦à¦–ন পৃষà§à¦ à¦¾ আছে|$1 খন পৃষà§à¦ à¦¾ আছে}}।}}',
@@ -236,14 +236,7 @@ $messages = array(
'listingcontinuesabbrev' => 'আগলৈ',
'index-category' => 'সূচীকৃত পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ',
'noindex-category' => 'অসূচীকৃত পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ',
-
-'mainpagetext' => "'''মিডিয়াৱিকি সফলভাবে ইনà§à¦¸à¦Ÿà¦² কৰা হ'ল ।'''",
-'mainpagedocfooter' => "ৱিকি চ'ফটৱেৰ কেনেকৈ বà§à¦¯à§±à¦¹à¦¾à§° কৰিব [http://meta.wikimedia.org/wiki/Help:Contents সদসà§à¦¯à§° সহায়িকা] চাওà¦à¦• ।
-
-== আৰমà§à¦­à¦£à¦¿ কৰিবলৈ ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+'broken-file-category' => 'অবৈধ ফাইল সংযোগযà§à¦•à§à¦¤ পৃষà§à¦ à¦¾à¦¬à§‹à§°',
'about' => 'বিষয়ে',
'article' => 'বিষয়বসà§à¦¤à§ পৃষà§à¦ à¦¾',
@@ -258,14 +251,14 @@ $messages = array(
# Cologne Blue skin
'qbfind' => 'বিচৰা হওক',
-'qbbrowse' => 'বিচৰণ',
+'qbbrowse' => 'বà§à¦°à¦¾à¦“জ',
'qbedit' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾',
'qbpageoptions' => 'à¦à¦‡ পৃষà§à¦ à¦¾',
'qbpageinfo' => 'পà§à§°à¦¸à¦‚গ',
'qbmyoptions' => 'মোৰ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ',
'qbspecialpages' => 'বিশেষ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ',
-'faq' => 'পà§à§°à¦¾à¦¯à¦¼à§‡ উঠা পà§à§°à¦¶à§à¦¨',
-'faqpage' => 'Project:পà§à§°à¦¾à¦¯à¦¼à§‡ উঠা পà§à§°à¦¶à§à¦¨',
+'faq' => 'সততে উঠা পà§à§°à¦¶à§à¦¨ (FAQ)',
+'faqpage' => 'Project:সততে উঠা পà§à§°à¦¶à§à¦¨',
# Vector skin
'vector-action-addsection' => 'বিষয় যোগ',
@@ -295,10 +288,10 @@ $messages = array(
'history' => 'খতিয়ান',
'history_short' => 'খতিয়ান',
'updatedmarker' => 'মোৰ শেহতীয়া আগমনৰ পাছৰ পৰিৱৰà§à¦¤à¦¨à¦¬à¦¿à¦²à¦¾à¦•',
-'info_short' => 'বিবৰণ',
'printableversion' => 'পà§à§°à¦¿à¦£à§à¦Ÿ কৰাৰ উপযোগী',
'permalink' => 'সà§à¦¥à¦¾à¦¯à¦¼à§€ সà§à¦¤à§à§°(লিংক)',
'print' => 'পà§à§°à¦¿à¦¨à§à¦Ÿ কৰিবলৈ',
+'view' => 'দেখà§à§±à¦¾à¦“ক',
'edit' => 'সমà§à¦ªà¦¾à¦¦à¦¨',
'create' => 'সৃষà§à¦Ÿà¦¿ কৰক',
'editthispage' => 'বৰà§à¦¤à¦®à¦¾à¦¨ পৃষà§à¦ à¦¾à¦Ÿà§‹ সমà§à¦ªà¦¾à¦¦à¦¨ কৰিবলৈ',
@@ -306,6 +299,7 @@ $messages = array(
'delete' => 'বিলোপন(ডিলিট)',
'deletethispage' => 'বৰà§à¦¤à¦®à¦¾à¦¨ পৃষà§à¦ à¦¾à§° বিলোপন(ডিলিট)',
'undelete_short' => '{{PLURAL:$1|বিলোপিত পৃষà§à¦ à¦¾à§°|$1 সংখà§à¦¯à¦• বিলোপিত পৃষà§à¦ à¦¾à§°}} পূৰà§à¦¬à¦¬à§Žà¦•à§°à¦£',
+'viewdeleted_short' => '{{PLURAL:$1| à¦à¦Ÿà¦¾ বিলà§à¦ªà§à¦¤ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾|$1 টা বিলà§à¦ªà§à¦¤ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾}} দেখà§à§±à¦¾à¦“ক',
'protect' => 'সà§à§°à¦•à§à¦·à¦¿à¦¤ কৰক',
'protect_change' => 'সলাওক',
'protectthispage' => 'বৰà§à¦¤à¦®à¦¾à¦¨ পৃষà§à¦ à¦¾à§° সংৰকà§à¦·à¦£à¦¬à¦¿à¦§à¦¿à§° পৰিবৰà§à¦¤à¦¨',
@@ -389,6 +383,8 @@ $1',
'toc' => 'সূচী',
'showtoc' => 'দেখà§à§±à¦¾à¦“ক',
'hidetoc' => 'দেখà§à§±à¦¾à¦¬ নালাগে',
+'collapsible-collapse' => 'সংকোচন',
+'collapsible-expand' => 'বহলাওক',
'thisisdeleted' => '$1 চাওক বা সলনি কৰক?',
'viewdeleted' => '$1 চাওক?',
'restorelink' => '{{PLURAL:$1| à¦à¦Ÿà¦¾ বিলà§à¦ªà§à¦¤ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾|$1 টা বিলà§à¦ªà§à¦¤ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾}}',
@@ -400,6 +396,8 @@ $1',
'page-rss-feed' => '"$1" আৰ-à¦à¦š-à¦à¦š ফীড',
'page-atom-feed' => '"$1" à¦à¦Ÿà¦® ফিড',
'red-link-title' => '$1 (পৃষà§à¦ à¦¾à¦Ÿà§‹ নাই)',
+'sort-descending' => 'কà§à§°à¦®à¦¹à§à§°à¦¸à§à¦¬à¦®à¦¾à¦¨ ভাৱে কà§à§°à¦®à¦¬à¦¦à§à¦§ কৰক',
+'sort-ascending' => 'কà§à§°à¦®à¦¬à§°à§à¦¦à§à¦§à¦®à¦¾à¦¨ ভাৱে কà§à§°à¦®à¦¬à¦¦à§à¦§ কৰক',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'পৃষà§à¦ à¦¾',
@@ -482,12 +480,13 @@ $1',
'protectedpagetext' => 'à¦à¦‡ পৃষà§à¦ à¦¾à¦Ÿà§‹à§° সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ ৰোধ কৰিবলৈ সà§à§°à¦•à§à¦·à¦¿à¦¤ কৰা হৈছে।',
'viewsourcetext' => 'আপà§à¦¨à¦¿ à¦à¦‡ পৃষà§à¦ à¦¾à¦Ÿà§‹à§° উতà§â€à¦¸ চাব আৰৠনকল কৰিব পাৰে',
'protectedinterface' => 'à¦à¦‡ পৃষà§à¦ à¦¾à¦‡ ৱিকি ছফà§à¦Ÿà§±à§‡à§°à§° ইণà§à¦Ÿà¦¾à§°à¦«à§‡â€™à¦š বাৰà§à¦¤à¦¾ পà§à§°à¦¦à¦¾à¦¨ কৰে, আৰৠইয়াক সà§à§°à¦•à§à¦·à¦¿à¦¤ কৰি ৰখা হৈছে ।',
-'editinginterface' => "'''সাৱধানবাণী:''' আপà§à¦¨à¦¿ যিখন পৃষà§à¦ à¦¾ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰিছে সেইখন ৱিকি ছফà§à¦Ÿà§±à§‡à§°à§° ইণà§à¦Ÿà¦¾à§°à¦«à§‡â€™à¦š বাৰà§à¦¤à¦¾ দিবলৈ বà§à¦¯à§±à¦¹à¦¾à§° হয় । à¦à¦‡ পৃষà§à¦ à¦¾à§° সাল-সলনিয়ে আন বà§à¦¯à§±à¦¹à¦¾à§°à¦•à¦¾à§°à§€à§° বাবে ইণà§à¦Ÿà¦¾à§°à¦«à§‡â€™à¦šà¦¤ পà§à§°à¦­à¦¾à§± পেলাব । অনà§à¦¬à¦¾à¦¦à§° বাবে অনà§à¦—à§à§°à¦¹ কৰি মিডিয়াৱিকি সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à§°à¦£ পà§à§°à¦•à¦²à§à¦ª [http://translatewiki.net/wiki/Main_Page?setlang=bn translatewiki.net] বà§à¦¯à§±à¦¹à¦¾à§° কৰক ।",
+'editinginterface' => "'''সাৱধানবাণী:''' আপà§à¦¨à¦¿ যিখন পৃষà§à¦ à¦¾ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰিছে সেইখন ৱিকি ছফà§à¦Ÿà§±à§‡à§°à§° ইণà§à¦Ÿà¦¾à§°à¦«à§‡â€™à¦š বাৰà§à¦¤à¦¾ দিবলৈ বà§à¦¯à§±à¦¹à¦¾à§° হয় । à¦à¦‡ পৃষà§à¦ à¦¾à§° সাল-সলনিয়ে আন বà§à¦¯à§±à¦¹à¦¾à§°à¦•à¦¾à§°à§€à§° বাবে ইণà§à¦Ÿà¦¾à§°à¦«à§‡â€™à¦šà¦¤ পà§à§°à¦­à¦¾à§± পেলাব । অনà§à¦¬à¦¾à¦¦à§° বাবে অনà§à¦—à§à§°à¦¹ কৰি মিডিয়াৱিকি সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à§°à¦£ পà§à§°à¦•à¦²à§à¦ª [//translatewiki.net/wiki/Main_Page?setlang=bn translatewiki.net] বà§à¦¯à§±à¦¹à¦¾à§° কৰক ।",
'sqlhidden' => '(নিহিত SQL query)',
'cascadeprotected' => 'à¦à¦‡ পৃষà§à¦ à¦¾à¦–ন সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à§° পৰা সà§à§°à¦•à§à¦·à¦¿à¦¤ কাৰণ à¦à¦‡ {{PLURAL:$1|পৃষà§à¦ à¦¾, যিখন|পৃষà§à¦ à¦¾, যিবোৰ}} "পà§à§°à¦ªà¦¾à¦¤à¦¾à¦•à¦¾à§°" (cascading) বিকলà§à¦ªà§° সহযোগত সà§à§°à¦•à§à¦·à¦¿à¦¤ কৰা হৈছে:
$2',
'namespaceprotected' => "আপোনাৰ '''$1''' নামসà§à¦¥à¦¾à¦¨à§° পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰাৰ অধিকাৰ নাই।",
-'customcssjsprotected' => 'à¦à¦‡ পৃষà§à¦ à¦¾ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰাৰ আধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদসà§à¦¯à§° বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত চেটিংচ আছে।',
+'customcssprotected' => 'à¦à¦‡ পৃষà§à¦ à¦¾ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদসà§à¦¯à§° বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত চেটিংচ আছে ।',
+'customjsprotected' => 'à¦à¦‡ জাভালিপিৰ পৃষà§à¦ à¦¾ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰাৰ অধিকাৰ আপোনাৰ নাই, কাৰণ ইয়াত আন সদসà§à¦¯à§° বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত চেটিংচ আছে ।',
'ns-specialprotected' => 'বিশেষ পৃষà§à¦ à¦¾ সমà§à¦ªà¦¾à¦¦à¦¿à¦¤ কৰিব নোৱাৰি।',
'titleprotected' => "[[User:$1|$1]] সদসà§à¦¯à¦œà¦¨à§‡ à¦à¦‡ শিৰোণামাৰ লিখনী লিখা ৰোধ কৰিছে ।
ইয়াৰ কাৰণ হৈছে ''$2'' ।",
@@ -525,6 +524,7 @@ $2',
'createaccount' => 'সভà§à¦¯à¦­à§à¦•à§à¦¤ হবলৈ',
'gotaccount' => "আপà§à¦¨à¦¿ সদসà§à¦¯ হয়নে? '''$1'''",
'gotaccountlink' => 'পà§à§°à§±à§‡à¦¶',
+'userlogin-resetlink' => 'আপোনাৰ লগ-ইন তথà§à¦¯ পাহৰিছে?',
'createaccountmail' => 'ই-মেইলেৰে',
'createaccountreason' => 'কাৰণ:',
'badretype' => 'আপà§à¦¨à¦¿ দিয়া গà§à¦ªà§à¦¤ শবà§à¦¦ দà§à¦Ÿà¦¾ মিলা নাই।',
@@ -539,13 +539,15 @@ $2',
'nocookieslogin' => '{{SITENAME}} ত পà§à§°à§±à§‡à¦¶ কৰিবলৈ কà§à¦•à¦¿ সকà§à§°à¦¿à¦¯à¦¼ থাকিব লাগিব।
আপà§à¦¨à¦¿ কà§à¦•à¦¿ নিসà§à¦•à§à§°à¦¿à¦¯à¦¼ কৰি থৈছে।
অনà§à¦—à§à§°à¦¹ কৰি কà§à¦•à¦¿ সকà§à§°à¦¿à¦¯à¦¼ কৰক, আৰৠতাৰ পাছত চেষà§à¦Ÿà¦¾ কৰক।',
+'nocookiesfornew' => 'সদসà§à¦¯ à¦à¦•à¦¾à¦‰à¦¨à§à¦Ÿ সৃষà§à¦Ÿà¦¿ কৰা নহল, কাৰণ তাৰ উৎস অনিশà§à¦šà¦¿à¦¤ ।
+আপোনাৰ কà§à¦•à¦¿ সকà§à§°à¦¿à¦¯à¦¼ ৰাখক, à¦à¦‡ পৃষà§à¦ à¦¾ ৰি-লোড কৰি পà§à¦¨à§° চেষà§à¦Ÿà¦¾ কৰক ।',
'noname' => 'আপà§à¦¨à¦¿ বৈধ সদসà§à¦¯à¦¨à¦¾à¦® à¦à¦Ÿà¦¾ দিয়া নাই।',
'loginsuccesstitle' => "পà§à§°à¦¬à§‡à¦¶ অনà§à¦®à§‹à¦¦à¦¿à¦¤ হ'ল",
'loginsuccess' => "''' আপà§à¦¨à¦¿ {{SITENAME}}ত \"\$1\" নামেৰে পà§à§°à¦¬à§‡à¦¶ কৰিলে '''",
'nosuchuser' => '"$1" নামৰ কোনো সদসà§à¦¯ নাই।
সদসà§à¦¯ নাম আকাৰ সংবেদনশীল।
আপোনাৰ বানানতো চাওক, বা [[Special:UserLogin/signup|নতà§à¦¨ সদসà§à¦¯à¦­à§à¦•à§à¦¤à¦¿ কৰক]]।',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" à¦à¦‡ নামৰ কোনো সদসà§à¦¯ নাই ।
+'nosuchusershort' => '"$1" à¦à¦‡ নামৰ কোনো সদসà§à¦¯ নাই ।
বানানতো আকৌ à¦à¦¬à¦¾à§° ভালদৰে চাওক ।',
'nouserspecified' => 'সদসà§à¦¯à¦¨à¦¾à¦® দিয়া বাধà§à¦¯à¦¤à¦¾à¦®à§‚লক।',
'login-userblocked' => 'à¦à¦‡ সদসà§à¦¯à¦• নিষেধ কৰা হৈছে । লগà§à¦‡à¦¨à§ অসমà§à¦­à§± ।',
@@ -590,13 +592,14 @@ $2',
'usernamehasherror' => 'সদসà§à¦¯à¦¨à¦¾à¦®à¦¤ হেচà§â€Œ আখৰ থাকিব নোৱাৰে',
'login-throttled' => 'আপà§à¦¨à¦¿ সâ€à¦®à§à¦ªà§à§°à¦¤à¦¿ অজসà§à§°à¦¬à¦¾à§° লগà§â€Œ-ইনà§â€Œà§° পà§à§°à¦¯à¦¼à¦¾à¦¸ কৰিছে ।
অনà§à¦—à§à§°à¦¹ কৰি কিছৠসময় অপেকà§à¦·à¦¾ কৰি আকৌ পà§à§°à¦¯à¦¼à¦¾à¦¸ কৰক ।',
+'login-abort-generic' => 'আপোনাৰ পà§à§°à§±à§‡à¦¶ অসফল-বাতিল কৰা হ’ল',
'loginlanguagelabel' => 'ভাষা: $1',
'suspicious-userlogout' => 'আপোনাৰ পà§à§°à¦¸à§à¦¥à¦¾à¦¨à§° অনà§à§°à§‹à¦§ বাতিল কৰা হৈছে কাৰণ হয়তো আপোনাৰ বà§à§°à¦¾à¦‰à¦œà¦¾à§° অসমà§à¦ªà§‚ৰà§à¦£ নতà§à¦¬à¦¾ পূবৰà§à¦¬à¦¤à§€ তথà§à¦¯ পঠাইছে ।',
# E-mail sending
'php-mail-error-unknown' => 'পি.à¦à¦‡à¦›.পি মেইল() কাৰà§à¦¯à¦¤ অজà§à¦žà¦¾à¦¤ তà§à§°à§à¦Ÿà¦¿ ।',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ সলনি কৰক',
'resetpass_announce' => 'আপà§à¦¨à¦¿ ই-মেইলত পোৱা অসà§à¦¥à¦¾à¦¯à¦¼à§€ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦à§°à§‡ পà§à§°à§±à§‡à¦¶ কৰিছে।
পà§à§°à§±à§‡à¦¶ সমà§à¦ªà§à§°à§à¦£ কৰিবলৈ, আপà§à¦¨à¦¿ à¦à¦Ÿà¦¾ নতà§à¦¨ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ দিব লাগিব:',
@@ -614,6 +617,30 @@ $2',
হয়টো আপà§à¦¨à¦¿ ইতিমধà§à¦¯à§‡à¦‡ সফলভাবে আপà§à¦¨à¦¾à§° গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ সলনি কৰিছিল বা à¦à¦Ÿà¦¾ নতà§à¦¨ অসà§à¦¥à¦¾à¦¯à¦¼à§€ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦à§° বাবে অনà§à§°à§‹à¦§ কৰিছিল ।',
'resetpass-temp-password' => 'অসà§à¦¥à¦¾à¦¯à¦¼à§€ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦:',
+# Special:PasswordReset
+'passwordreset' => 'গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ ন-কৈ বহাওক',
+'passwordreset-text' => 'আপোনাৰ à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿà§° সবিশেষ তথà§à¦¯ ই-পতà§à§°à§° জৰিয়তে পাবলৈ তলৰ পà§à§°-পতà§à§° পà§à§°à¦¾à¦“ক ।',
+'passwordreset-legend' => 'গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ ন-কৈ বহাওক',
+'passwordreset-disabled' => 'à¦à¦‡ ৱিকিত গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ নবীকৰণ নিষà§à¦•à§à§°à¦¿à¦¯à¦¼ কৰা হৈছে ।',
+'passwordreset-pretext' => '{{PLURAL:$1||তলত উলà§à¦²à§‡à¦– কৰা তথà§à¦¯à§° কোনো অংশ ভৰাওক}}',
+'passwordreset-username' => 'সদসà§à¦¯à¦¨à¦¾à¦®',
+'passwordreset-domain' => 'ডমেইন :',
+'passwordreset-email' => 'ই-মেইল ঠিকনা:',
+'passwordreset-emailtitle' => '{{SITENAME}} ত à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿà§° সবিশেষ তথà§à¦¯ আছে ।',
+'passwordreset-emailtext-ip' => 'কোনোবাই (IP ঠিকনা $1 ৰ পৰা সমà§à¦­à§±à¦¤: আপà§à¦¨à¦¿à¦¯à¦¼à§‡à¦‡) {{SITENAME}} ($4) ৰ বাবে আপোনাৰ à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿà§° সবিশেষ তথà§à¦¯ বিচাৰিছিল । ই-পতà§à§° ঠিকনাটোৰ লগত à¦à¦‡ সদসà§à¦¯à§° {{PLURAL:$3|à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿ|à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿà¦¬à§‹à§°}} জড়িত হৈ আছে ।
+
+$2
+
+{{PLURAL:$3|à¦à¦‡ অসà§à¦¥à¦¾à¦¯à¦¼à§€ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦|à¦à¦‡ অসà§à¦¥à¦¾à¦¯à¦¼à§€ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦à¦¬à§‹à§°}} {{PLURAL:$5|à¦à¦¦à¦¿à¦¨à¦¤|$5 দিনত }} নাইকীয়া হ’ব । আপà§à¦¨à¦¿ লগ-ইন কৰি à¦à¦Ÿà¦¾ নতà§à¦¨ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ দিয়া উচিত । যদি আন কোনোবাই à¦à¦‡ অনà§à§°à§‹à¦§ কৰিছিল, বা আপà§à¦¨à¦¿ নিজৰ পূৰà§à¦¬à§° গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ মনত পেলাইছে আৰৠইয়াক সলাব খোজা নাই, তেনà§à¦¤à§‡ আপà§à¦¨à¦¿ à¦à¦‡ বাৰà§à¦¤à¦¾à¦• অগà§à§°à¦¾à¦¹à§à¦¯ কৰি নিজৰ পূৰà§à¦¬à§° গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ বà§à¦¯à§±à¦¹à¦¾à§° কৰি থাকিব পাৰে ।',
+'passwordreset-emailtext-user' => '$1 বà§à¦¯à§±à¦¹à¦¾à§°à¦•à¦¾à§°à§€à¦¯à¦¼à§‡ {{SITENAME}} ($4) ৰ বাবে আপোনাৰ à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿà§° সবিশেষ তথà§à¦¯ বিচাৰিছিল । ই-পতà§à§° ঠিকনাটোৰ লগত à¦à¦‡ সদসà§à¦¯à§° {{PLURAL:$3|à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿ|à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿà¦¸à¦®à§‚হ}} জড়িত হৈ আছে ।
+
+$2
+
+{{PLURAL:$3|à¦à¦‡ অসà§à¦¥à¦¾à¦¯à¦¼à§€ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦|à¦à¦‡ অসà§à¦¥à¦¾à¦¯à¦¼à§€ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦à¦¬à§‹à§°}} {{PLURAL:$5|à¦à¦¦à¦¿à¦¨à¦¤|$5 দিনত }} নাইকীয়া হ’ব । আপà§à¦¨à¦¿ লগ-ইন কৰি à¦à¦Ÿà¦¾ নতà§à¦¨ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ দিয়া উচিত । যদি আন কোনোবাই à¦à¦‡ অনà§à§°à§‹à¦§ কৰিছিল, বা আপà§à¦¨à¦¿ নিজৰ পূৰà§à¦¬à§° গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ মনত পেলাইছে আৰৠইয়াক সলাব খোজা নাই, তেনà§à¦¤à§‡ আপà§à¦¨à¦¿ à¦à¦‡ বাৰà§à¦¤à¦¾à¦• অগà§à§°à¦¾à¦¹à§à¦¯ কৰি নিজৰ পূৰà§à¦¬à§° গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ বà§à¦¯à§±à¦¹à¦¾à§° কৰি থাকিব পাৰে ।',
+'passwordreset-emailelement' => 'সদসà§à¦¯à¦¨à¦¾à¦®: $1
+অসà§à¦¥à¦¾à¦¯à¦¼à§€ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦: $2',
+'passwordreset-emailsent' => 'à¦à¦–ন সà§à¦®à§°à¦£à¦•à¦¾à§°à¦• ই-মেইল পঠোৱা হৈছে ।',
+
# Edit page toolbar
'bold_sample' => 'গাঢ় পাঠà§à¦¯',
'bold_tip' => 'গাঢ় পাঠà§à¦¯',
@@ -625,8 +652,6 @@ $2',
'extlink_tip' => 'বহিঃসংযোগ (http:// উপসৰà§à¦— মনত ৰাখিব)',
'headline_sample' => 'শিৰোনামা পাঠà§à¦¯',
'headline_tip' => 'দà§à¦¬à¦¿à¦¤à§€à¦¯à¦¼ সà§à¦¤à§°à§° শিৰোনামা',
-'math_sample' => 'ইয়াত গণিতীয় সà§à¦¤à§à§° সà§à¦®à§à§±à¦¾à¦“ক',
-'math_tip' => 'গণিতীয় সà§à¦¤à§à§° (LaTeX)',
'nowiki_sample' => 'নসজোৱা পাঠà§à¦¯ ইয়াত অনà§à¦¤à§°à§à¦­à§à¦•à§à¦¤ কৰক',
'nowiki_tip' => 'ৱিকি-সমà§à¦®à¦¤ সাজ-সজà§à¦œà¦¾ অৱজà§à¦žà¦¾ কৰক',
'image_tip' => 'à¦à¦®à§à¦¬à§‡à¦¡à§‡à¦¡ ফাইল',
@@ -715,8 +740,8 @@ $1ৰ দà§à¦¬à¦¾à§°à¦¾ à¦à¦‡ অৱৰোধ কৰা হৈছে ।
'noarticletext-nopermission' => 'à¦à¦‡ পৃষà§à¦ à¦¾à¦¤ বৰà§à¦¤à¦®à¦¾à¦¨ কোনো পাঠà§à¦¯ নাই ।
আপà§à¦¨à¦¿ আন পৃষà§à¦ à¦¾à¦¤ [[Special:Search/{{PAGENAME}}| à¦à¦‡ শিৰোণামা অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ কৰিব পাৰে]],
বা <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} সমà§à¦ªà§°à§à¦•à¦¿à¦¯à¦¼ লগ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ কৰিব পাৰে ।]</span>',
-'userpage-userdoesnotexist' => '"$1" নামৰ সদসà§à¦¯ à¦à¦•à¦¾à¦‰à¦¨à§à¦Ÿ নিবনà§à¦§à¦¿à¦¤ নহয় ।
-অনà§à¦—à§à§° কৰি চাওক আপà§à¦¨à¦¿ à¦à¦‡ পৃষà§à¦ à¦¾ সৃষà§à¦Ÿà¦¿/সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰিব বিচাৰিছে নেকি ।',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" নামৰ সদসà§à¦¯ à¦à¦•à¦¾à¦‰à¦¨à§à¦Ÿ নিবনà§à¦§à¦¿à¦¤ নহয় ।
+অনà§à¦—à§à§°à¦¹ কৰি চাওক আপà§à¦¨à¦¿ à¦à¦‡ পৃষà§à¦ à¦¾ সৃষà§à¦Ÿà¦¿/সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰিব বিচাৰিছে নেকি ।',
'userpage-userdoesnotexist-view' => "সদসà§à¦¯ à¦à¦•à¦¾à¦‰à¦¨à§à¦Ÿ ''$1'' পঞà§à¦œà§€à¦­à§‚ত নহয়",
'blocked-notice-logextract' => "বৰà§à¦¤à¦®à¦¾à¦¨à§‡ à¦à¦‡ সদসà§à¦¯à¦• বাৰণ কৰা হৈছে ।
পà§à§°à¦¸à¦‚গকà§à§°à¦®à§‡ সামà§à¦ªà§à§°à¦¤à¦¿à¦• বাৰণ সূচী তলত দিয়া হ'ল ।",
@@ -753,6 +778,7 @@ $1ৰ দà§à¦¬à¦¾à§°à¦¾ à¦à¦‡ অৱৰোধ কৰা হৈছে ।
'token_suffix_mismatch' => "'''আপোনাৰ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦Ÿà§‹ পà§à§°à¦¤à§à¦¯à¦¾à¦–à§à¦¯à¦¾à¦¨ কৰা হৈছে কাৰণ আপোনাৰ সহায়কাৰীয়ে সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ লেখাৰ বিৰাম-চিহà§à¦¨ মচি পেলাইছে । '''
পৃষà§à¦ à¦¾à¦Ÿà§‹à§° যাতে কà§à¦·à¦¤à¦¿ নহওক, তাৰ বাবে সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦Ÿà§‹ পà§à§°à¦¤à§à¦¯à¦¾à¦–à§à¦¯à¦¾à¦¨ কৰা হৈছে ।
কোনো আসোà¦à§±à¦¾à¦¹à¦ªà§‚ৰà§à¦£ ৱেব-ভিতà§à¦¤à¦¿à¦• বেনামী পà§à§°à¦•à§à¦¸à§€ সেৱা বà§à¦¯à§±à¦¹à¦¾à§° কৰিলে à¦à¦¨à§‡ হ’ব পাৰে ।",
+'edit_form_incomplete' => "'''à¦à¦‡ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à§° কিছৠঅংশ চাৰà§à¦­à¦¾à§°à¦²à§ˆ নগ’ল; আপোনাৰ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ ঠিকে আছেনে পৰীকà§à¦·à¦¾ কৰি পà§à¦¨à§° চেষà§à¦Ÿà¦¾ কৰক ।'''",
'editing' => '$1 সমà§à¦ªà¦¾à¦¦à¦¨à¦¾',
'editingsection' => '$1 (বিভাগ) সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰি থকা হৈছে',
'editingcomment' => '$1 (নতà§à¦¨ বিভাগ) সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰি থকা হৈছে',
@@ -992,7 +1018,9 @@ $1",
'revdelete-offender' => 'সংশোধন লেখক:',
# Suppression log
-'suppressionlog' => 'নিবাৰণ ল’গ',
+'suppressionlog' => 'নিবাৰণ ল’গ',
+'suppressionlogtext' => 'পà§à§°à¦¶à¦¾à¦¸à¦•à§° পৰা গোপনে ৰখা অৱলà§à¦ªà§à¦¤à¦¿ আৰৠপà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦•à§° তালিকা তলত দিয়া হৈছে ।
+বৰà§à¦¤à¦®à¦¾à¦¨ কাৰà§à¦¯à§à¦¯à§°à¦¤ নিষেধ আৰৠপà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦•à¦¸à¦®à§‚হৰ বাবে [[Special:BlockList|IP পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• তালিকা]] ।',
# History merging
'mergehistory' => 'পৃষà§à¦ à¦¾à§° ইতিহাসবোৰ মিলাই দিয়ক',
@@ -1104,12 +1132,13 @@ $1",
মনত ৰাখিব যে তেà¦à¦“লোকৰ {{SITENAME}}ৰ ইণà§à¦¡à§‡à¦•à§à¦¸ পà§à§°à¦£à¦¿ হব পাৰে।',
# Quickbar
-'qbsettings' => 'শীঘà§à§°à¦¦à¦£à§à¦¡à¦¿à¦•à¦¾',
-'qbsettings-none' => 'à¦à¦•à§‡à¦¬à¦¾à§°à§‡ নহয়',
-'qbsettings-fixedleft' => 'বাà¦à¦“ফাল সà§à¦¥à¦¿à§°',
-'qbsettings-fixedright' => 'সোà¦à¦«à¦¾à¦² সà§à¦¥à¦¿à§°',
-'qbsettings-floatingleft' => 'বাà¦à¦“ফাল অসà§à¦¥à¦¿à§°',
-'qbsettings-floatingright' => 'সোà¦à¦«à¦¾à¦² অসà§à¦¥à¦¿à§°',
+'qbsettings' => 'শীঘà§à§°à¦¦à¦£à§à¦¡à¦¿à¦•à¦¾',
+'qbsettings-none' => 'à¦à¦•à§‡à¦¬à¦¾à§°à§‡ নহয়',
+'qbsettings-fixedleft' => 'বাà¦à¦“ফাল সà§à¦¥à¦¿à§°',
+'qbsettings-fixedright' => 'সোà¦à¦«à¦¾à¦² সà§à¦¥à¦¿à§°',
+'qbsettings-floatingleft' => 'বাà¦à¦“ফাল অসà§à¦¥à¦¿à§°',
+'qbsettings-floatingright' => 'সোà¦à¦«à¦¾à¦² অসà§à¦¥à¦¿à§°',
+'qbsettings-directionality' => 'আপোনাৰ ভাষাৰ আৰৠলিপিৰ দিশৰ ওপৰত নিৰà§à¦­à§° কৰি ঠিক কৰা হ’ল',
# Preferences page
'preferences' => 'পছনà§à¦¦à¦¸à¦®à§‚হ',
@@ -1120,9 +1149,10 @@ $1",
'changepassword' => 'গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ সলনি কৰক',
'prefs-skin' => 'আৱৰন',
'skin-preview' => 'খচৰা',
-'prefs-math' => 'গণিত',
'datedefault' => 'কোনো পছনà§à¦¦ নাই',
+'prefs-beta' => 'বিটা বৈশিষà§à¦Ÿà¦¸à¦®à§‚হ',
'prefs-datetime' => 'তাৰিখ আৰৠসময়',
+'prefs-labs' => 'পৰীকà§à¦·à¦¾à¦—াৰ বৈশিষà§à¦Ÿà¦¸à¦®à§‚হ',
'prefs-personal' => 'সদসà§à¦¯à§° বিৱৰণ',
'prefs-rc' => 'শেহতীয়া সাল-সলনি',
'prefs-watchlist' => 'লকà§à¦·à§à¦¯ তালিকা',
@@ -1144,8 +1174,6 @@ $1",
'columns' => 'ঠিয় শাৰী:',
'searchresultshead' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
'resultsperpage' => 'পà§à§°à¦¤à¦¿ পৃষà§à¦ à¦¾ দৰà§à¦¶à¦¨:',
-'contextlines' => 'পà§à§°à¦¤à¦¿ শাৰী দৰà§à¦¶à¦¨:',
-'contextchars' => 'পà§à§°à¦¤à¦¿ শাৰীত সনà§à¦¦à§°à§à¦­:',
'stub-threshold' => '<a href="#" class="stub">আধাৰ সংযোগ</a> ৰ সৰà§à¦¬à§‹à¦šà§à¦š আকাৰ (বাইটত):',
'stub-threshold-disabled' => 'নিসà§à¦•à§à§°à¦¿à¦¯à¦¼',
'recentchangesdays' => 'শেহতীয়া সাল-সলনিত দেখà§à§±à¦¾à¦¬ লগা দিন:',
@@ -1157,7 +1185,7 @@ $1",
'savedprefs' => 'আপোনাৰ পচনà§à¦¦à¦¸à¦®à§‚হ সাà¦à¦šà¦¿ ৰখা হ’ল।',
'timezonelegend' => 'সময় সà§à¦¥à¦¾à¦¨:',
'localtime' => 'সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼ সময়:',
-'timezoneuseserverdefault' => 'চাৰà§à¦­à¦¾à§° ডিফ’লà§à¦Ÿ বà§à¦¯à¦¬à¦¹à¦¾à§° কৰক',
+'timezoneuseserverdefault' => 'ডিফ’লà§à¦Ÿ ৱিকি ($1) বà§à¦¯à§±à¦¹à¦¾à§° কৰক',
'timezoneuseoffset' => 'অনà§à¦¯ (অফচেট ধাৰà§à¦¯ কৰক)',
'timezoneoffset' => 'অফচেট¹:',
'servertime' => 'চাৰà§à¦­à¦¾à§°à§° সময়:',
@@ -1206,7 +1234,9 @@ $1",
à¦à¦‡ তথà§à¦¯ ৰাজহà§à§±à¦¾ কৰা হ’ব ।',
'email' => 'ই-মেইল',
'prefs-help-realname' => 'আপোনাৰ আচল নাম দিয়াতো জৰà§à§°à§€ নহয়, কিনà§à¦¤à§ দিলে আপোনাৰ কামবোৰ আপোনাৰ নামত দেখà§à¦“ৱা হব।',
-'prefs-help-email' => 'ই-মেইল ঠিকন দিয়া বৈকলà§à¦ªà¦¿à¦•, কিনà§à¦¤à§ দিলে আন সদসà§à¦¯à¦‡ আপোনাৰ চিনাকি নোপোৱাকৈয়ে আপোনাৰ লগত সমà§à¦ªà§°à§à¦• সà§à¦¥à¦¾à¦ªà¦¨ কৰিব পাৰিব।',
+'prefs-help-email' => 'ই-মেইল ঠিকনা দিয়াটো বৈকলà§à¦ªà¦¿à¦•, কিনà§à¦¤à§ আপà§à¦¨à¦¿ গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ পাহৰি গ’লে ন-কৈ বহà§à§±à¦¾à¦¬à§° বাবে ই পà§à§°à¦¯à¦¼à§‹à¦œà¦¨à§€à¦¯à¦¼à¥¤',
+'prefs-help-email-others' => 'আপà§à¦¨à¦¿ আপোনাৰ সদসà§à¦¯à¦ªà§ƒà¦·à§à¦ à¦¾ বা কথা-বতৰা পৃষà§à¦ à¦¾à¦¤ দিয়া লিংকৰ জৰিয়তে আনে আপোনাক যোগাযোগ কৰিব পাৰে ।
+আন সদসà§à¦¯à¦‡ যোগাযোগ কৰিলে আপোনাৰ ই-মেইল ঠিকনা পà§à§°à¦•à¦¾à¦¶ নাপায় ।',
'prefs-help-email-required' => 'ই-মেইল ঠিকনা দিবই লাগিব',
'prefs-info' => 'সাধাৰণ তথà§à¦¯',
'prefs-i18n' => 'আনà§à¦¤à¦ƒà§°à¦¾à¦·à§à¦Ÿà§à§°à§€à¦¯à¦¼à¦•à§°à¦£',
@@ -1331,15 +1361,15 @@ $1",
'right-userrights' => 'সকলো সদসà§à¦¯ অধিকাৰ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰক',
'right-userrights-interwiki' => 'আন ৱিকিৰ সদসà§à¦¯à§° অধিকাৰসমূহ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰক',
'right-siteadmin' => 'তথà§à¦¯à¦•à§‹à¦· বনà§à¦§ কৰক বা খোলক',
-'right-reset-passwords' => 'আন সদসà§à¦¯à§° গà§à¦ªà§à¦¤à¦¶à¦¬à§à¦¦ ন-কৈ বহাওক',
'right-override-export-depth' => '৫ম সà§à¦¤à§° পৰà§à¦¯à¦¨à§à¦¤ সংযà§à¦•à§à¦¤ পৃষà§à¦ à¦¾à¦¸à¦¹ সকলো পৃষà§à¦ à¦¾ ৰপà§à¦¤à¦¾à¦¨à§€ কৰক',
'right-sendemail' => 'আন সদসà§à¦¯à¦²à§ˆ ই-পতà§à§° ঠিকনা পঠিয়াওক',
# User rights log
-'rightslog' => 'সভà§à¦¯à§° অধিকাৰৰ লেখ',
-'rightslogtext' => 'সদসà§à¦¯ অধিকাৰৰ পৰিৱৰà§à¦¤à¦¨à¦¸à¦®à§‚হৰ ল’গ',
-'rightslogentry' => "$1-ৰ গোট সদসà§à¦¯à¦ªà¦¦ $2-ৰ পৰা $3-লৈ সলনি কৰা হ'ল",
-'rightsnone' => '(নাই)',
+'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' => 'à¦à¦‡ পৃষà§à¦ à¦¾ পঢ়ক',
@@ -1462,10 +1492,13 @@ $1",
'illegalfilename' => '"$1" ফাইলনামটোত à¦à¦¨à§‡ চিহà§à¦¨ আছে যিবোৰ পৃষà§à¦ à¦¾à§° শিৰোনামাত অনà§à¦®à§‹à¦¦à¦¿à¦¤ নহয় ।
অনà§à¦—à§à§°à¦¹ কৰি ফাইলটোৰ আন à¦à¦Ÿà¦¾ নাম দি আপল’ড কৰিবলৈ পà§à¦¨à§° চেষà§à¦Ÿà¦¾ কৰক ।',
'badfilename' => 'ফাইলনাম "$1"-লৈ সলনি কৰা হ\'ল ।',
+'filetype-mime-mismatch' => '".$1" ফাইল à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦šà¦¨à¦Ÿà§‹à§° লগত ফাইলটোৰ MIME পà§à§°à¦•à¦¾à§° ($2) ৰ মিল পোৱা নগ’ল ।',
'filetype-badmime' => '"$1" MIME ধৰণৰ ফাইল আপল’ড অনà§à¦®à§‹à¦¦à¦¿à¦¤ নহয় ।',
'filetype-bad-ie-mime' => 'à¦à¦‡ ফাইলটো আপল’ড কৰিব পৰা নাযাব কাৰণ ইণà§à¦Ÿà¦¾à§°à¦¨à§‡à¦Ÿ à¦à¦•à§à¦¸à¦ªà§à¦²â€™à§°à¦¾à§°-ঠইয়াক "$1" বà§à¦²à¦¿ ধৰিব যিটো সমà§à¦­à¦¾à¦¬à§à¦¯ কà§à¦·à¦¤à¦¿à¦•à¦¾à§°à¦• আৰৠঅনà§à¦®à§‹à¦¦à¦¿à¦¤ নহয় ।',
'filetype-unwanted-type' => "'''\".\$1\"''' ফাইল পà§à§°à¦•à¦¾à§°à¦Ÿà§‹ গà§à§°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯ নহয় ।
মনোনীত {{PLURAL:\$3|ফাইলৰ পà§à§°à¦•à¦¾à§°|ফাইলৰ পà§à§°à¦•à¦¾à§°à¦¸à¦®à§‚হ}} হ’ল \$2 ।",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|অনà§à¦®à§‹à¦¦à¦¿à¦¤ ফাইল পà§à§°à¦•à¦¾à§° নহয়|সমূহ অনà§à¦®à§‹à¦¦à¦¿à¦¤ ফাইল পà§à§°à¦•à¦¾à§° নহয়}} ।
+{{PLURAL:$3|অনà§à¦®à§‹à¦¦à¦¿à¦¤ ফাইল পà§à§°à¦•à¦¾à§° হ’ল|অনà§à¦®à§‹à¦¦à¦¿à¦¤ ফাইল পà§à§°à¦•à¦¾à§°à¦¸à¦®à§‚হ হ’ল}} $2 ।',
'filetype-missing' => 'à¦à¦‡ ফাইলৰ কোনো à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦šà¦¨ নাই (যেনে ".jpg") ।',
'empty-file' => 'আপà§à¦¨à¦¿ দাখিল কৰা ফাইলখন খালী ।',
'file-too-large' => 'আপà§à¦¨à¦¿ দাখিল কৰা ফাইলটো বৰ ডাঙৰ ।',
@@ -1484,6 +1517,7 @@ $1",
'emptyfile' => "আপà§à¦¨à¦¿ আপল'ড কৰা ফাইলটো সমà§à¦­à§±à¦¤: খালী ।
ফাইলৰ নাম টাইপিঙত ভà§à¦²à§° বাবে à¦à¦¨à§‡ হ’ব পাৰে ।
আপà§à¦¨à¦¿ সà¦à¦šà¦¾à¦•à§ˆ à¦à¦‡ ফাইল আপল'ড কৰিব বিচাৰিছেনে পৰীকà§à¦·à¦¾ কৰক ।",
+'windows-nonascii-filename' => 'বিশেষ চিহà§à¦¨ থকা ফাইলৰ নাম à¦à¦‡ ৱিকিয়ে সমৰà§à¦¥à¦¨ নকৰে ।',
'fileexists' => "à¦à¦‡ নামৰ à¦à¦Ÿà¦¾ ফাইল ইতিমধà§à¦¯à§‡à¦‡ আছে । আপà§à¦¨à¦¿ ইয়াক সলাব বিচৰাটো নিশà§à¦šà¦¿à¦¤ নহ’লে অনà§à¦—à§à§°à¦¹ কৰি '''<tt>[[:$1]]</tt>''' পৰীকà§à¦·à¦¾ কৰি চাওক ।
[[$1|thumb]]",
'filepageexists' => "à¦à¦‡ ফাইলৰ বিৱৰণী পৃষà§à¦ à¦¾ '''<tt>[[:$1]]</tt>''' ত ইতিমধà§à¦¯à§‡à¦‡ তৈয়াৰ কৰা হৈছে, কিনà§à¦¤à§ সদà§à¦¯à¦¹à¦¤à§‡ à¦à¦‡ নামৰ কোনো ফাইল নাই ।
@@ -1524,6 +1558,8 @@ $1",
'uploadscripted' => 'à¦à¦‡ ফাইলত HTML বা সà§à¦•à§à§°à¦¿à¦ªà§à¦¤ ক’ড আছে যিবোৰ ৱেব বà§à§°à¦¾à¦‰à¦œà¦¾à§°à§‡ ভà§à¦²à¦•à§ˆ বà§à¦¯à¦¾à¦–à§à¦¯à¦¾ কৰিব পাৰে ।',
'uploadvirus' => 'ফাইলটোত ভাইৰাছ আছে!
সবিশেষ: $1',
+'uploadjava' => 'à¦à¦‡ ফাইলটো Java .class ফাইল থকা à¦à¦Ÿà¦¾ ZIP ফাইল ।
+জাভা ফাইল আপল’ড কৰা অনà§à¦®à§‹à¦¦à¦¿à¦¤ নহয় কিয়নো ই সà§à§°à¦•à§à¦·à¦¾ সীমাবদà§à¦§à¦¤à¦¾ à¦à§°à¦¾à¦‡ চলিব পাৰে ।',
'upload-source' => 'উৎস ফাইল',
'sourcefilename' => 'উৎস ফাইল নাম',
'sourceurl' => 'উৎস ইউ-আৰ-à¦à¦²',
@@ -1534,10 +1570,6 @@ $1",
'watchthisupload' => 'à¦à¦‡ ফাইল লকà§à¦·à§à¦¯ কৰক',
'filewasdeleted' => 'à¦à¦‡ নামৰ à¦à¦Ÿà¦¾ ফাইল পূৰà§à¦¬à¦¤à§‡ আপলোড কৰি বিলোপ কৰা হৈছে ।
ইয়াক পà§à¦¨à§° আপলোড কৰাৰ আগেয়ে আপà§à¦¨à¦¿ $1 পৰীকà§à¦·à¦¾ কৰা উচিত ।',
-'upload-wasdeleted' => "'''Warning: আগতে বিলোপ কৰা à¦à¦Ÿà¦¾ ফাইল আপà§à¦¨à¦¿ আপলোড কৰি আছে | '''
-
-à¦à¦‡ ফাইলটো আপলোড কৰা উচিত হ’ব নে নহয় আপà§à¦¨à¦¿ বিবেচনা কৰি চাওক |
-à¦à¦‡ ফাইলটোৰ অৱলà§à¦ªà§à¦¤à¦¿ ল’গ আপোনাৰ সà§à¦¬à¦¿à¦§à¦¾à§°à§à¦¥à§‡ ইয়াত দিয়া হৈছে |",
'filename-bad-prefix' => "আপà§à¦¨à¦¿ আপলোড কৰা ফাইলৰ নামটো '''\"\$1\"''' দি আৰমà§à¦­ হৈছে, যিটো ডিজিটেল কেমেৰাই সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à¦¿à¦¯à¦¼à¦­à¦¾à§±à§‡ দিয়ে আৰৠসি বà§à¦¯à¦¾à¦–à§à¦¯à¦¾à¦®à§‚লক নহয় ।
অনà§à¦—à§à§°à¦¹ কৰি আপোনাৰ ফাইলটোৰ বাবে à¦à¦Ÿà¦¾ বà§à¦¯à¦¾à¦–à§à¦¯à¦¾à¦®à§‚লক নাম বাছি লওক ।",
'upload-success-subj' => "আপলোড সফল হ'ল",
@@ -1562,6 +1594,23 @@ URL টোৰ বৈধতা বিচাৰ কৰি পà§à¦¨à§° চেষà§
'upload-unknown-size' => 'অজà§à¦žà¦¾à¦¤ আকাৰ',
'upload-http-error' => 'à¦à¦Ÿà¦¾ HTTP তà§à§°à§à¦Ÿà¦¿à¦¯à¦¼à§‡ দেখা দিছে: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'ফাইলটো ZIP পৰীকà§à¦·à¦¾à§° বাবে মà§à¦•à¦²à¦¿ কৰোà¦à¦¤à§‡ à¦à¦Ÿà¦¾ সমসà§à¦¯à¦¾à¦‡ দেখা দিছে ।',
+'zip-wrong-format' => 'চিহà§à¦¨à¦¿à¦¤ ফাইলটো ZIP ফাইল নহয় |',
+'zip-bad' => 'à¦à¦‡ ফাইলটো আসোà¦à§±à¦¾à¦¹à¦ªà§‚ৰà§à¦£ বা অপঠনযোগà§à¦¯ ZIP ফাইল ।
+সà§à§°à¦•à§à¦·à¦¾à¦œà¦¨à¦¿à¦¤ কাৰণত ইয়াক ভালদৰে পৰীকà§à¦·à¦¾ কৰিব পৰা নাযাব ।',
+'zip-unsupported' => 'à¦à¦‡ ফাইলটো ZIP সà§à¦¬à¦¿à¦§à¦¾ বà§à¦¯à§±à¦¹à¦¾à§° কৰা à¦à¦Ÿà¦¾ ZIP ফাইল যিটো মিডিয়াৱিকিৰ দà§à¦¬à¦¾à§°à¦¾ সমৰà§à¦¥à¦¿à¦¤ নহয় ।
+সà§à§°à¦•à§à¦·à¦¾à¦œà¦¨à¦¿à¦¤ কাৰণত ইয়াক ভালদৰে পৰীকà§à¦·à¦¾ কৰিব পৰা নাযাব ।',
+
+# Special:UploadStash
+'uploadstash' => 'আপল’ডৰ গà§à¦ªà§à¦¤à¦­à¦à§°à¦¾à¦²',
+'uploadstash-summary' => 'আপল’ড কৰা (বা আপল’ড হৈ থকা) কিনà§à¦¤à§ ৱিকিত à¦à¦¤à¦¿à¦¯à¦¼à¦¾à¦“ অপà§à§°à¦•à¦¾à¦¶à¦¿à¦¤ ফাইলসমূহলৈ à¦à¦‡ পৃষà§à¦ à¦¾à§° জৰিয়তে যাব পাৰিব । কেৱল আপল’ড কৰা সদসà§à¦¯à¦œà¦¨à§‡à¦¹à§‡ à¦à¦‡ ফাইলসমূহ দেখা পাব ।',
+'uploadstash-clear' => 'ফাইলৰ গà§à¦ªà§à¦¤à¦­à¦à§°à¦¾à¦² খালী কৰক',
+'uploadstash-nofiles' => 'গà§à¦ªà§à¦¤à¦­à¦à§°à¦¾à¦²à¦¤ আপোনাৰ কোনো ফাইল নাই ।',
+'uploadstash-badtoken' => 'à¦à¦‡ কাৰà§à¦¯à§à¦¯ অসফল হৈছে, কাৰণ সমà§à¦­à§±à¦¤à¦ƒ আপোনাৰ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à§° নিৰà§à¦­à§°à¦¯à§‹à¦—à§à¦¯à¦¤à¦¾à§° মà§à¦¯à¦¾à¦¦ উকলিছে । আকৌ চেষà§à¦Ÿà¦¾ কৰক ।',
+'uploadstash-errclear' => 'ফাইলসমূহৰ নিকাকৰণ বà§à¦¯à§°à§à¦¥ হৈছে ।',
+'uploadstash-refresh' => 'ফাইলৰ তালিকা ৰিফà§à§°à§‡â€™à¦š কৰক',
+
# img_auth script messages
'img-auth-accessdenied' => 'পà§à§°à§±à§‡à¦¶à¦¾à¦§à¦¿à¦•à¦¾à§° নাই',
'img-auth-nopathinfo' => "PATH_INFO বিচাৰি পোৱা নগ'ল
@@ -1645,6 +1694,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
à¦à¦–ন [[Special:WhatLinksHere/$2|সমà§à¦ªà§‚ৰà§à¦£ তালিকা]]ও পাব ।',
'nolinkstoimage' => 'à¦à¦‡ চিতà§à§°à¦–নলৈ কোনো পৃষà§à¦ à¦¾ সংযোজিত নহয়',
'morelinkstoimage' => 'à¦à¦‡ ফাইলৰ [[Special:WhatLinksHere/$1|অধিক সংযোগ]] চাওক ।',
+'linkstoimage-redirect' => '$1 (ফাইল পà§à¦¨à§°à§à¦¨à¦¿à§°à§à¦¦à§‡à¦¶) $2',
'duplicatesoffile' => 'à¦à¦‡ ফাইলটোৰ {{PLURAL:$1|ফাইলটো পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿|$1 ফাইলসমূহ পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿}}
([[Special:FileDuplicateSearch/$2|অধিক তথà§à¦¯]]):',
'sharedupload' => 'à¦à¦‡ ফাইলখন $1-ৰ পৰা লোৱা হৈছে আৰৠঅনà§à¦¯à¦¾à¦¨à§à¦¯ পà§à§°à¦•à¦²à§à¦ªà¦¤à§‹ বà§à¦¯à§±à¦¹à¦¾à§° হব পাৰে ।',
@@ -1735,19 +1785,20 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
'statistics-users-active-desc' => 'শেষ {{PLURAL:$1|দিনত|$1 দিনত}} কোনো কাম কৰা সদসà§à¦¯à¦¸à¦®à§‚হ',
'statistics-mostpopular' => 'সৰà§à¦¬à§‹à¦šà§à¦š দৰà§à¦¶à¦¨ কৰা পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ',
-'disambiguations' => 'দà§à¦¬à§à¦¯à§°à§à¦¥à¦¤à¦¾-দূৰীকৰণ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ',
+'disambiguations' => 'দà§à¦¬à§à¦¯à§°à§à¦¥à¦¤à¦¾-দূৰীকৰণ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হলৈ সংযোগ থকা পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ',
'disambiguationspage' => 'Template:দà§à¦¬à§à¦¯à§°à§à¦¥à¦¤à¦¾-দূৰীকৰণ',
'disambiguations-text' => "তলৰ পৃষà§à¦ à¦¾à¦–নসমূহত '''দà§à¦¬à§à¦¯à§°à§à¦¥à¦¤à¦¾ দূৰীকৰণ পৃষà§à¦ à¦¾'''ৰ লগত সংযোগ আছে ।
ইয়ে উপযà§à¦•à§à¦¤ পৃষà§à¦ à¦¾à§° লগত সংযোগ কৰিব পাৰে ।
[[MediaWiki:Disambiguationspage]]ৰ পৰা সংযোগ থকা কোনো সাà¦à¦š বà§à¦¯à§±à¦¹à¦¾à§° কৰিলে à¦à¦–ন পৃষà§à¦ à¦¾à¦• দà§à¦¬à§à¦¯à§°à§à¦¥à¦¤à¦¾ দূৰীকৰণ পৃষà§à¦ à¦¾ হিছাপে গণà§à¦¯ কৰা হ’ব ।",
-'doubleredirects' => 'দà§à¦¬à¦¿-পà§à¦¨à¦ƒà¦¨à¦¿à§°à§à¦¦à§‡à¦¶à¦¿à¦¤',
-'doubleredirectstext' => 'আন পà§à¦¨à§°à§à¦¨à¦¿à¦¦à§‡à¦¶à¦¨à¦¾ পৃষà§à¦ à¦¾à¦²à§ˆ পà§à¦¨à§°à§à¦¨à¦¿à§°à§à¦¦à§‡à¦¶à¦¿à¦¤ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ à¦à¦‡ তালিকাত দিয়া হৈছে |
+'doubleredirects' => 'দà§à¦¬à¦¿-পà§à¦¨à¦ƒà¦¨à¦¿à§°à§à¦¦à§‡à¦¶à¦¿à¦¤',
+'doubleredirectstext' => 'আন পà§à¦¨à§°à§à¦¨à¦¿à¦¦à§‡à¦¶à¦¨à¦¾ পৃষà§à¦ à¦¾à¦²à§ˆ পà§à¦¨à§°à§à¦¨à¦¿à§°à§à¦¦à§‡à¦¶à¦¿à¦¤ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ à¦à¦‡ তালিকাত দিয়া হৈছে |
পà§à§°à¦¤à§à¦¯à§‡à¦• পথালী শাৰীত পà§à§°à¦¥à¦® আৰৠদà§à¦¬à¦¿à¦¤à§€à¦¯à¦¼ পà§à¦¨à§°à§à¦¨à¦¿à§°à§à¦¦à§‡à¦¶à¦¨à¦¾à§° সংযোগৰ লগতে দà§à¦¬à¦¿à¦¤à§€à¦¯à¦¼ পà§à¦¨à§°à§à¦¨à¦¿à§°à§à¦¦à§‡à¦¶à¦¨à¦¾à§° লকà§à¦·à§à¦¯ সংযোগ দিয়া আছে | à¦à¦‡ লকà§à¦·à§à¦¯ সংযোগটো সাধাৰণতে "পà§à§°à¦•à§ƒà¦¤" লকà§à¦·à§à¦¯ পৃষà§à¦ à¦¾ যাক পà§à§°à¦¥à¦® পà§à¦¨à§°à§à¦¨à¦¿à§°à§à¦¦à§‡à¦¶à¦¨à¦¾à¦‡ আঙà§à¦²à¦¿à¦¯à¦¼à¦¾à¦‡ দিয়ে |
<del>Crossed out</del> ভৰà§à¦¤à§à¦¤à¦¿à¦¸à¦®à§‚হ ঠিক কৰা হৈছে |',
-'double-redirect-fixed-move' => '[[$1]] ক সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à§° কৰা হৈছে ।
+'double-redirect-fixed-move' => '[[$1]] ক সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à§° কৰা হৈছে ।
à¦à¦‡à¦Ÿà§‹ à¦à¦¤à¦¿à¦¯à¦¼à¦¾ [[$2]]লৈ পà§à¦¨à§°à§à¦¨à¦¿à§°à§à¦¦à§‡à¦¶à¦¿à¦¤ হৈছে ।',
-'double-redirect-fixer' => 'পà§à¦¨à¦ƒà¦¨à¦¿à§°à§à¦¦à§‡à¦¶ মেৰামতকাৰী',
+'double-redirect-fixed-maintenance' => '[[$1]] ৰ পৰা [[$2]] লৈ দà§à¦¬à§ˆà¦¤ পà§à¦¨à§°à§à¦¨à¦¿à§°à§à¦¦à§‡à¦¶à¦¨à¦¾ ঠিক কৰি থকা হৈছে ।',
+'double-redirect-fixer' => 'পà§à¦¨à¦ƒà¦¨à¦¿à§°à§à¦¦à§‡à¦¶ মেৰামতকাৰী',
'brokenredirects' => 'ভঙা পà§à¦¨à§°à§à¦¨à¦¿à§°à§à¦¦à§‡à¦¶à¦¨à¦¾à¦¸à¦®à§‚হ',
'brokenredirectstext' => 'তলৰ পà§à¦¨à§°à§à¦¨à¦¿à§°à§à¦¦à§‡à¦¶à¦¨à¦¾à¦¸à¦®à§‚হে অসà§à¦¤à¦¿à¦¤à§à¦¬à¦¹à§€à¦¨ পৃষà§à¦ à¦¾à¦• সংযোগ কৰিছে:',
@@ -1824,6 +1875,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
'pager-newer-n' => '{{PLURAL:$1|নতà§à¦¨à¦¤à§° ১টি|নতà§à¦¨à¦¤à§° $1টি}}',
'pager-older-n' => '{{PLURAL:$1|পà§à§°à¦£à¦¤à§° ১|পà§à§°à¦£à¦¤à§° $1}}',
'suppress' => 'অমনোযোগ',
+'querypage-disabled' => 'কাৰà§à¦¯à§à¦¯à¦—ত কাৰণত à¦à¦‡ বিশেষ পৃষà§à¦ à¦¾à¦–ন নিষà§à¦•à§à§°à¦¿à¦¯à¦¼ কৰা হৈছে ।',
# Book sources
'booksources' => 'গà§à§°à¦¨à§à¦¥à§° উৎস সমূহ',
@@ -1874,7 +1926,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
'sp-deletedcontributions-contribs' => 'বৰঙণিসমূহ',
# Special:LinkSearch
-'linksearch' => 'বহিঃ-সংযোগ',
+'linksearch' => 'বহিঃসংযোগ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
'linksearch-pat' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ আৰà§à¦¹à¦¿:',
'linksearch-ns' => 'নামসà§à¦¥à¦¾à¦¨:',
'linksearch-ok' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
@@ -1940,6 +1992,10 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
'noemailtext' => 'à¦à¦‡ সদসà§à¦¯à¦œà¦¨à§‡ কোনো বৈধ ই-পতà§à§° ঠিকনা নিৰà§à¦¬à¦¾à¦šà¦¨ কৰা নাই ।',
'nowikiemailtitle' => 'কোনো ই-পতà§à§° অনà§à¦®à§‹à¦¦à¦¿à¦¤ নহয়',
'nowikiemailtext' => 'à¦à¦‡ সদসà§à¦¯à¦œà¦¨à§‡ আন সদসà§à¦¯à§°à¦ªà§°à¦¾ ই-পতà§à§° পাবলৈ বিচৰা নাই ।',
+'emailnotarget' => 'পাওà¦à¦¤à¦¾à§° অসà§à¦¤à¦¿à¦¤à§à¦¬à¦¹à§€à¦¨ বা অবৈধ সদসà§à¦¯à¦¨à¦¾à¦®',
+'emailtarget' => 'পাওà¦à¦¤à¦¾à§° সদসà§à¦¯à¦¨à¦¾à¦® ভৰà§à¦¤à§à¦¤à¦¿ কৰক',
+'emailusername' => 'সদসà§à¦¯à¦¨à¦¾à¦®:',
+'emailusernamesubmit' => 'দাখিল কৰক',
'email-legend' => 'আন à¦à¦œà¦¨ {{SITENAME}} সদসà§à¦¯à¦²à§ˆ ই-পতà§à§° পঠিয়াওক',
'emailfrom' => 'পà§à§°à§‡à§°à¦•',
'emailto' => 'পà§à§°à¦¾à¦ªà¦•:',
@@ -1961,13 +2017,13 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
'mywatchlist' => 'মোৰ লকà§à¦·à§à¦¯-তালিকা',
'watchlistfor2' => '$1 ৰ কাৰণে($2)',
'nowatchlist' => 'আপোনাৰ নিৰীকà§à¦·à¦£ তালিকাত কোনো আইটেম নাই ।',
-'watchlistanontext' => 'অপোনাৰ লকà§à¦·à§à¦¯ তালিকা চাবলৈ বা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰিবলৈ অনà§à¦—à§à§°à¦¹ কৰি $1 ।',
+'watchlistanontext' => 'আপোনাৰ লকà§à¦·à§à¦¯ তালিকাত থকা বসà§à¦¤à§à¦¬à§‹à§° চাবলৈ বা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰিবলৈ অনà§à¦—à§à§°à¦¹ কৰি $1 কৰক।',
'watchnologin' => 'পà§à§°à§±à§‡à¦¶ কৰা নাই',
'watchnologintext' => 'নিৰীকà§à¦·à¦£ তালিকা পৰিৱৰà§à¦¤à¦¨ কৰিবলৈ আপà§à¦¨à¦¿ আগতে [[Special:UserLogin|লগ-ইন]] কৰিব লাগিব ।',
-'addedwatch' => 'লকà§à¦·à§à¦¯ তালিকাত অনà§à¦¤à§°à§à¦­à§à¦•à§à¦¤à¦¿ কৰা হল',
+'addwatch' => 'লকà§à¦·à§à¦¯-তালিকাত অনà§à¦¤à§°à§à¦­à§à¦•à§à¦¤ কৰক',
'addedwatchtext' => 'আপোনাৰ [[Special:Watchlist|লকà§à¦·à§à¦¯ তালিকাত ]] "[[:$1]]" অনà§à¦¤à§°à§à¦­à§à¦•à§à¦¤à¦¿ কৰা হ\'ল ।
ভৱিষà§à¦¯à¦¤à§‡ ইয়াত হোৱা সাল-সলনি আপà§à¦¨à¦¿ আপোনাৰ লকà§à¦·à§à¦¯ তালিকাত দেখিব, লগতে [[Special:RecentChanges|সামà§à¦ªà§à§°à¦¤à¦¿à¦• সাল-সলনিৰ তালিকাত]] à¦à¦‡ পৃষà§à¦ à¦¾à¦Ÿà§‹ শকট আখৰত দেখিব যাতে আপà§à¦¨à¦¿ সহজে ধৰিব পাৰে ।',
-'removedwatch' => 'লকà§à¦·à§à¦¯-তালিকাৰ পৰা আতৰোৱা হল',
+'removewatch' => 'লকà§à¦·à§à¦¯-তালিকাৰ পৰা আà¦à¦¤à§°à¦¾à¦“ক',
'removedwatchtext' => '"[[:$1]]" পৃষà§à¦ à¦¾à¦–ন [[Special:Watchlist|আপোনাৰ লকà§à¦·à§à¦¯-তালিকা]]ৰ পৰা আতৰোৱা হৈছে ।',
'watch' => 'চকৠৰাখক',
'watchthispage' => 'à¦à¦‡ পৃষà§à¦ à¦¾à¦Ÿà§‹ লকà§à¦·à§à¦¯ কৰক',
@@ -1988,8 +2044,9 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
'watchlist-options' => 'লকà§à¦·à§à¦¯-তালিকা পছনà§à¦¦à¦¸à¦®à§‚হ',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'চকৠদিয়া হৈছে.....',
-'unwatching' => 'আà¦à¦¤à§°à§‹à§±à¦¾ হৈ আছে.....',
+'watching' => 'চকৠদিয়া হৈছে.....',
+'unwatching' => 'আà¦à¦¤à§°à§‹à§±à¦¾ হৈ আছে.....',
+'watcherrortext' => '"$1"ৰ বাবে আপোনাৰ নিৰীকà§à¦·à¦£ তালিকাৰ ছেটিং সলনি কৰোà¦à¦¤à§‡ à¦à¦Ÿà¦¾ সমসà§à¦¯à¦¾à¦‡ দেখা দিছে ।',
'enotif_mailer' => '{{SITENAME}} জাননী ই-পতà§à§° পà§à§°à§‡à§°à¦•',
'enotif_reset' => 'সকলো পৃষà§à¦ à¦¾ পৰিদৰà§à¦¶à¦¿à¦¤ বà§à¦²à¦¿ চিহà§à¦¨à¦¿à¦¤ কৰক',
@@ -2001,6 +2058,36 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
'enotif_lastvisited' => 'আপোনাৰ শেষ পৰিদৰà§à¦¶à¦¨à§° পিছত হোৱা সকলো সালসলনিৰ বাবে $1 চাওক ।',
'enotif_lastdiff' => 'à¦à¦‡ পৰিৱৰà§à¦¤à¦¨à¦Ÿà§‹ চাবৰ বাবে $1 চাওক ।',
'enotif_anon_editor' => 'বেনামী সদসà§à¦¯ $1',
+'enotif_body' => 'পà§à§°à¦¿à¦¯à¦¼ $WATCHINGUSERNAME,
+
+
+{{SITENAME}}ৰ $PAGETITLE শিৰোনামাৰ পৃষà§à¦ à¦¾à¦Ÿà¦¿ $PAGEEDITDATE তাৰিখত $PAGEEDITORঠ$CHANGEDORCREATED কৰিছে, সামà§à¦ªà§à§°à¦¤à¦¿à¦• সংশোধনৰ বাবে $PAGETITLE_URL চাওক ।
+
+$NEWPAGE
+
+সমà§à¦ªà¦¾à¦¦à¦•à§° সাৰাংশ: $PAGESUMMARY $PAGEMINOREDIT
+
+সমà§à¦ªà¦¾à¦¦à¦•à¦œà¦¨à§° লগত যোগাযোগ:
+মেইল: $PAGEEDITOR_EMAIL
+ৱিকি: $PAGEEDITOR_WIKI
+
+আপà§à¦¨à¦¿ à¦à¦‡ পৃষà§à¦ à¦¾à¦–ন নোচোৱালৈকে আন সালসলনিৰ কোনো জাননী দিয়া নহ’ব ।
+আপà§à¦¨à¦¿ আপোনাৰ লকà§à¦·à§à¦¯-তালিকাৰ পৃষà§à¦ à¦¾à¦¬à§‹à§°à§° জাননী ফà§à¦²à§‡à¦— পূৰà§à¦¬à§° অৱসà§à¦¥à¦¾à¦²à§ˆà¦“ ঘূৰাই নিব পাৰে ।
+
+আপোনাৰ {{SITENAME}} জাননী বà§à¦¯à§±à¦¸à§à¦¥à¦¾
+
+--
+আপোনাৰ ই-মেইল জাননী ছেটিং সলনি কৰিবলৈ à¦à¦‡à¦–ন চাওক
+{{canonicalurl:{{#special:Preferences}}}}
+
+আপোনাৰ লকà§à¦·à§à¦¯-তালিকাৰ ছেটিং সলনি কৰিবলৈ à¦à¦‡à¦–ন চাওক
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+আপোনাৰ লকà§à¦·à§à¦¯-তালিকাৰ পৰা পৃষà§à¦ à¦¾ বিলোপ কৰিবলৈ à¦à¦‡à¦–ন চাওক
+$UNWATCHURL
+
+পà§à§°à¦¤à¦¿à¦•à§à§°à¦¿à¦¯à¦¼à¦¾ আৰৠঅধিক সহযোগিতাৰ বাবে:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'পৃষà§à¦ à¦¾ বিলোপ কৰক',
@@ -2016,7 +2103,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
অনà§à¦—à§à§°à¦¹ কৰি নিশà§à¦šà¦¿à¦¤ কৰক যে à¦à¦¯à¦¼à¦¾ [[{{MediaWiki:Policy-url}}|নীতিসমà§à¦®à¦¤]]। লগতে আপà§à¦¨à¦¿ ইয়াৰ পৰিণাম জানে আৰৠআপà§à¦¨à¦¿ à¦à¦¯à¦¼à¦¾ কৰিব বিà§à¦šà¦¾à§°à¦¿à¦›à§‡à¥¤',
'actioncomplete' => 'কাৰà§à¦¯à§à¦¯ সমà§à¦ªà§‚ৰà§à¦£',
'actionfailed' => "কাৰà§à¦¯à§à¦¯ বিফল হ'ল",
-'deletedtext' => '"<nowiki>$1</nowiki>" ক বিলোপন কৰা হৈছে।
+'deletedtext' => '"$1" ক বিলোপন কৰা হৈছে।
সামà§à¦ªà§à§°à¦¤à¦¿à¦• বিলোপনসমূহৰ তালিকা চাবলৈ $2 চাà¦à¦“ক।',
'deletedarticle' => '"[[$1]]" ক বাতিল কৰা হৈছে।',
'suppressedarticle' => 'দমন কৰা হ\'ল "[[$1]]"',
@@ -2076,7 +2163,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
'protect_expiry_invalid' => 'শেষ সময় ভà§à¦² ।',
'protect_expiry_old' => 'শেষ সময় পাৰ হৈ গৈছে।',
'protect-unchain-permissions' => 'অধিক সà§à§°à¦•à§à¦·à¦¾ বিকলà§à¦ª মà§à¦•à¦²à¦¿ কৰক',
-'protect-text' => "'''<nowiki>$1</nowiki>''' পৃষà§à¦ à¦¾à¦Ÿà§‹à§° সà§à§°à¦•à§à¦·à¦¾-সà§à¦¤à§° আপà§à¦¨à¦¿ চাব আৰৠসলনি কৰিব পাৰে।",
+'protect-text' => "'''$1''' পৃষà§à¦ à¦¾à¦Ÿà§‹à§° সà§à§°à¦•à§à¦·à¦¾-সà§à¦¤à§° আপà§à¦¨à¦¿ চাব আৰৠসলনি কৰিব পাৰে।",
'protect-locked-blocked' => "বাধাপà§à§°à¦¾à¦ªà§à¦¤ অৱসà§à¦¥à¦¾à¦¤ আপà§à¦¨à¦¿ সà§à§°à¦•à§à¦·à¦¾ সà§à¦¤à§° সলাব নোৱাৰে ।
'''$1''' পৃষà§à¦ à¦¾à§° বৰà§à¦¤à¦®à¦¾à¦¨ ছেটিং সমূহ ইয়াত দিয়া হ’ল:",
'protect-locked-dblock' => "à¦à¦Ÿà¦¾ সকà§à§°à¦¿à¦¯à¦¼ অথà§à¦¯à¦­à¦à§°à¦¾à¦² পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦•à§° বাবে সà§à§°à¦•à§à¦·à¦¾ সà§à¦¤à§° সলাব নোৱাৰি ।
@@ -2131,6 +2218,8 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization চাওক।",
'undeletepagetext' => 'তলৰ {{PLURAL:$1|পৃষà§à¦ à¦¾à¦–ন বিলোপ কৰা হৈছে কিনà§à¦¤à§ সেয়া|$1 পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ বিলোপ কৰা হৈছে কিনà§à¦¤à§ সেয়া}} à¦à¦¤à¦¿à¦¯à¦¼à¦¾à¦“ আৰà§à¦•à¦¾à¦‡à¦­à¦¤ আছে আৰৠপà§à¦¨à§°à§à¦¦à§à¦§à¦¾à§° সমà§à¦­à§± ।
আৰà§à¦•à¦¾à¦‡à¦­à¦Ÿà§‹ সময়ে সময়ে পৰিষà§à¦•à¦¾à§° কৰা হ’ব পাৰে ।',
'undelete-fieldset-title' => 'সংশোধনসমূহ পà§à¦¨à§°à§à¦¦à§à¦§à¦¾à§° কৰক',
+'undeleteextrahelp' => "পৃষà§à¦ à¦¾à¦–নৰ সমà§à¦ªà§‚ৰà§à¦£ ইতিহাস পà§à¦¨à§°à§à¦¦à§à¦§à¦¾à§° কৰিবলৈ সকলো ঘৰ টিক দিয়ক ৰাখক আৰৠ'''''{{int:undeletebtn}}'''''ত কà§à¦²à¦¿à¦• কৰক ।
+নিৰà§à¦¬à¦¾à¦šà¦¿à¦¤ পà§à¦¨à§°à§à¦¦à§à¦§à¦¾à§° কৰিবলৈ বাছি লোৱা সংশোধনসমূহৰ কাষত থকা ঘৰবোৰত টিক দিয়ক আৰৠ'''''{{int:undeletebtn}}'''''ত কà§à¦²à¦¿à¦• কৰক ।",
'undeleterevisions' => '$1 {{PLURAL:$1|টা সংশোধন|টা সংশোধন}} আৰà§à¦•à¦¾à¦‡à¦­à¦¤ আছে',
'undeletehistory' => 'যদি আপà§à¦¨à¦¿ পৃষà§à¦ à¦¾à¦–ন পà§à¦¨à§°à§à¦¦à§à¦§à¦¾à§° কৰে, তাৰ সকলো সংশোধন ইতিহাসলৈ ঘূৰি যাব ।
যদি বিলোপৰ পিছত à¦à¦•à§‡ নামৰ নতà§à¦¨ পৃষà§à¦ à¦¾ সৃষà§à¦Ÿà¦¿ কৰা হৈছে, তেনà§à¦¤à§‡ পà§à¦¨à§°à§à¦¦à§à¦§à¦¾à§° হোৱা সংশোধনসমূহ পূৰà§à¦¬à§° ইতিহাসত দেখা যাব ।',
@@ -2175,9 +2264,12 @@ $1',
'undelete-show-file-submit' => 'হয়',
# Namespace form on various pages
-'namespace' => 'নামসà§à¦¥à¦¾à¦¨:',
-'invert' => 'নিৰà§à¦¬à¦¾à¦šà¦¨ ওলোটা কৰক',
-'blanknamespace' => '(মà§à¦–à§à¦¯)',
+'namespace' => 'নামসà§à¦¥à¦¾à¦¨:',
+'invert' => 'নিৰà§à¦¬à¦¾à¦šà¦¨ ওলোটা কৰক',
+'tooltip-invert' => 'নিৰà§à¦¬à¦¾à¦šà¦¿à¦¤ সময়সà§à¦¥à¦¾à¦¨à§° (আৰৠসহযোগী সময়সà§à¦¥à¦¾à¦¨à¦¸à¦®à§‚হৰ) ভিতৰত থকা পৃষà§à¦ à¦¾à¦¸à¦®à§‚হৰ সালসলনি গোপন কৰিবলৈ à¦à¦‡ ঘৰটো চিহà§à¦¨à¦¿à¦¤ কৰক (আৰৠসহযোগী পৃষà§à¦ à¦¾à¦¸à¦®à§‚হো)',
+'namespace_association' => 'সাংসৰà§à¦—িক নামসà§à¦¥à¦¾à¦¨',
+'tooltip-namespace_association' => 'নিৰà§à¦¬à¦¾à¦šà¦¿à¦¤ নামসà§à¦¥à¦¾à¦¨à§° লগত থকা আলোচনা বা বিষয় নামসà§à¦¥à¦¾à¦¨ সনà§à¦¨à¦¿à§±à¦¿à¦·à§à¦Ÿ কৰিবলৈ à¦à¦‡ ঘৰটো চিহà§à¦¨à¦¿à¦¤ কৰক',
+'blanknamespace' => '(মà§à¦–à§à¦¯)',
# Contributions
'contributions' => 'সদসà§à¦¯à§° বৰঙণিসমূহ',
@@ -2227,13 +2319,15 @@ $1',
'whatlinkshere-filters' => 'ছেকনী',
# Block/unblock
+'autoblockid' => '#$1-ক সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à¦¿à¦¯à¦¼ বাৰণ কৰক',
+'block' => 'সদসà§à¦¯ বাৰণ কৰক',
+'unblock' => 'সদসà§à¦¯à§° বাৰণ উঠাই লওক',
'blockip' => 'সদসà§à¦¯ বাৰণ কৰক',
'blockip-title' => 'সদসà§à¦¯ বাৰণ কৰক',
'blockip-legend' => 'সদসà§à¦¯ বাৰণ কৰক',
'blockiptext' => 'তলৰ পà§à§°à¦ªà¦¤à§à§°à¦–ন বà§à¦¯à§±à¦¹à¦¾à§° কৰি কোনো নিৰà§à¦¦à¦¿à¦·à§à¦Ÿ আই.পি. ঠিকনা বা সদসà§à¦¯à¦¨à¦¾à¦®à§° লিখাৰ অধিকাৰ বাৰণ কৰিব পাৰে ।
কেৱল ধà§à¦¬à¦‚সপà§à§°à§±à¦£à¦¤à¦¾ ৰোধ কৰিবলৈ আৰৠ[[{{MediaWiki:Policy-url}}|নীতি]] মানি চলি à¦à¦¨à§‡ কৰক ।
তলত à¦à¦Ÿà¦¾ নিৰà§à¦¦à¦¿à¦·à§à¦Ÿ কাৰণ উলà§à¦²à§‡à¦– কৰক (যেনে, ধà§à¦¬à¦‚সসাধন কৰা পৃষà§à¦ à¦¾à§° নাম) ।',
-'ipaddress' => 'আই.পি. ঠিকনা:',
'ipadressorusername' => 'আই-পি ঠিকনা বা সদসà§à¦¯à¦¨à¦¾à¦®:',
'ipbexpiry' => 'মà§à¦¯à¦¾à¦¦ উকলিব:',
'ipbreason' => 'কাৰণ:',
@@ -2246,7 +2340,7 @@ $1',
** ভীতি উদà§à§°à§‡à¦•à¦•à¦¾à§°à§€ আচৰণ/হাৰাশাসà§à¦¤à¦¿
** à¦à¦•à¦¾à¦§à¦¿à¦• à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿà§° অপবà§à¦¯à§±à¦¹à¦¾à§°
** অগà§à§°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯ সদসà§à¦¯à¦¨à¦¾à¦®',
-'ipbanononly' => 'কেৱল বেনামী সদসà§à¦¯à¦• হেঙাৰ দিয়ক',
+'ipb-hardblock' => 'à¦à¦‡ আই.পি. ঠিকনাৰ পৰা পà§à§°à§±à§‡à¦¶ কৰা সদসà§à¦¯à¦¸à¦•à¦²à¦• সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰাৰ পৰা ৰোধ কৰক',
'ipbcreateaccount' => 'à¦à¦•à¦¾à¦‰à¦£à§à¦Ÿ সৃষà§à¦Ÿà¦¿ ৰোধ কৰক',
'ipbemailban' => 'ই-মেইল পঠোৱাৰ পৰা সদসà§à¦¯à¦• বাৰণ কৰক',
'ipbenableautoblock' => 'à¦à¦‡ সদসà§à¦¯à¦œà¦¨à§‡ শেহতীয়াকৈ বà§à¦¯à§±à¦¹à¦¾à§° কৰা আৰৠভৱিষà§à¦¯à¦¤à§‡ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à§° বাবে বà§à¦¯à§±à¦¹à¦¾à§° কৰা আই.পি. ঠিকনা সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à¦¿à¦¯à¦¼à¦­à¦¾à§±à§‡ বাৰণ কৰক',
@@ -2257,9 +2351,15 @@ $1',
'ipbotherreason' => 'অনà§à¦¯/অতিৰিকà§à¦¤ কাৰণ:',
'ipbhidename' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ আৰৠগালিকা সমূহৰ পৰা সদসà§à¦¯à¦¨à¦¾à¦® আà¦à§° দিয়ক',
'ipbwatchuser' => 'à¦à¦‡ সদসà§à¦¯à§° সদসà§à¦¯ আৰৠআলোচনা পৃষà§à¦ à¦¾ লকà§à¦·à§à¦¯ কৰক',
+'ipb-disableusertalk' => 'পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• থকা অৱসà§à¦¥à¦¾à¦¤ à¦à¦‡ সদসà§à¦¯à¦œà¦¨à¦• নিজৰ কথা-বতৰা পৃষà§à¦ à¦¾ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰাৰ পৰা বিৰত কৰক',
'ipb-change-block' => 'à¦à¦‡ ছেটিং বà§à¦¯à§±à¦¹à¦¾à§° কৰি সদসà§à¦¯à¦œà¦¨à¦• পà§à¦¨à§° বাৰণ কৰক',
+'ipb-confirm' => 'পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• নিশà§à¦šà¦¿à¦¤ কৰক',
'badipaddress' => 'অগà§à§°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯ আই-পি ঠিকনা',
'blockipsuccesssub' => "বাৰণ কৰা সফল হ'ল",
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]ক বাধা দিয়া হৈছে ।<br />
+পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦•à§° পà§à¦¨à§°à§à¦¬à¦¿à¦¬à§‡à¦šà¦¨à¦¾à§° বাবে [[Special:BlockList|IP পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• তালিকা]]',
+'ipb-blockingself' => 'আপà§à¦¨à¦¿ নিজকে বাধাপà§à§°à¦¦à¦¾à¦¨ কৰিব বিচাৰিছে ! আপà§à¦¨à¦¿ নিশà§à¦šà¦¿à¦¤à¦¨à§‡ আপà§à¦¨à¦¿ à¦à¦¨à§‡ কৰিব ?',
+'ipb-confirmhideuser' => 'আপà§à¦¨à¦¿ "সদসà§à¦¯ গোপন কৰক" বৈশিষà§à¦Ÿ সকà§à§°à¦¿à¦¯à¦¼ থকা à¦à¦œà¦¨ সদসà§à¦¯à¦• বাৰণ কৰিবলৈ ওলাইছে । à¦à¦‡ কাৰà§à¦¯à¦‡ সকলো তালিকা আৰৠল\'গ ভৰà§à¦¤à§à¦¤à¦¿à§° পৰা তেওà¦à§° নাম আà¦à¦¤à§°à¦¾à¦‡ পেলাব । à¦à¦‡ কাম কৰিব বà§à¦²à¦¿ আপà§à¦¨à¦¿ নিশà§à¦šà¦¿à¦¤à¦¨à§‡ ?',
'ipb-edit-dropdown' => 'পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦•à§° কাৰণসমূহ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰক',
'ipb-unblock-addr' => '$1-পৰা বাৰণ উঠাই লওà¦à¦•',
'ipb-unblock' => 'সদসà§à¦¯à¦¨à¦¾à¦® বা আই.পি. ঠিকনাৰ ওপৰত থকা পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• আà¦à¦¤à§° কৰক',
@@ -2269,9 +2369,20 @@ $1',
'unblockiptext' => 'তলৰ পà§à§°à¦ªà¦¤à§à§°à¦–ন বà§à¦¯à§±à¦¹à¦¾à§° কৰি পূৰà§à¦¬à§‡ পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• থকা কোনো আই.পি. ঠিকনা বা সদসà§à¦¯à§° লিখাৰ অধিকাৰ পà§à¦¨à¦ƒà¦ªà§à§°à¦¤à¦¿à¦·à§à¦ à¦¾ কৰক ।',
'ipusubmit' => 'à¦à¦‡ বাৰণ উঠাই লওক',
'unblocked' => '[[User:$1|$1]] ৰ পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• আà¦à¦¤à§° কৰা হৈছে',
+'unblocked-range' => '$1ৰ পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• আà¦à¦¤à§° কৰা হৈছে',
'unblocked-id' => '$1 পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦•à¦Ÿà§‹ আà¦à¦¤à§° কৰা হৈছে',
+'blocklist' => 'বাৰণ কৰা সদসà§à¦¯',
'ipblocklist' => 'বাৰণ কৰা সদসà§à¦¯',
'ipblocklist-legend' => 'বাৰণ কৰা সদসà§à¦¯ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ কৰক',
+'blocklist-userblocks' => 'à¦à¦•à¦¾à¦‰à¦¨à§à¦Ÿ বাৰণ গোপন কৰক',
+'blocklist-tempblocks' => 'অসà§à¦¥à¦¾à¦¯à¦¼à§€ পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• গোপন কৰক',
+'blocklist-addressblocks' => 'à¦à¦•à¦• IP অৱৰোধ গোপন কৰক',
+'blocklist-timestamp' => 'সময়-মোহৰ',
+'blocklist-target' => 'লকà§à¦·à§à¦¯',
+'blocklist-expiry' => 'মà§à¦¯à¦¾à¦¦ উকলিব',
+'blocklist-by' => 'পà§à§°à¦¶à¦¾à¦¸à¦•à¦• বাধাপà§à§°à¦¦à¦¾à¦¨',
+'blocklist-params' => 'অৱৰোধ পাৰামিটাৰসমূহ',
+'blocklist-reason' => 'কাৰণ:',
'ipblocklist-submit' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
'ipblocklist-localblock' => 'সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼ বাৰণ',
'ipblocklist-otherblocks' => 'অনà§à¦¯à¦¾à¦¨à§à¦¯ {{PLURAL:$1|বাৰণ|বাৰণসমূহ}}',
@@ -2297,6 +2408,9 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
তথà§à¦¯à¦¸à§‚তà§à§° হিছাপে নিবাৰণ ল’গ তলত দিয়া হ’ল ।',
'blocklogentry' => '"[[$1]]" ক $2 $3 লৈ সাল-সলনি কৰাৰ পৰা বাৰণ কৰা হৈছে।',
'reblock-logentry' => '[[$1]]ৰ পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• ছেটিং মà§à¦¯à¦¾à¦¦ উকলা সময় $2 $3ৰ সৈতে সলনি কৰা হ’ল ।',
+'blocklogtext' => 'à¦à¦‡ ল’গখন অৱৰোধ কৰা আৰৠঅৱৰোধ আà¦à¦¤à§° কৰা সদসà§à¦¯ সমà§à¦ªà§°à§à¦•à§€à¦¯à¦¼ ।
+সà§à¦¬à¦¯à¦¼à¦‚কà§à§°à¦¿à¦¯à¦¼à¦­à¦¾à§±à§‡ পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• পোৱা আই.পি. ঠিকনাবোৰ ইয়াত তালিকাভà§à¦•à§à¦¤ কৰা হোৱা নাই ।
+সামà§à¦ªà§à§°à¦¤à¦¿à¦• কাৰà§à¦¯à§°à¦¤ নিষেধ আৰৠপà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦•à§° বাবে [[Special:BlockList|আই.পি. পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• তালিকা]] চাওক ।',
'unblocklogentry' => '$1 বাৰণ উঠাই লোৱা হ’ল',
'block-log-flags-anononly' => 'কেৱল বেনামী সদসà§à¦¯',
'block-log-flags-nocreate' => 'à¦à¦•à¦¾à¦‰à¦¨à§à¦Ÿ সৃষà§à¦Ÿà¦¿ নিষà§à¦•à§à§°à¦¿à¦¯à¦¼ কৰা হৈছে',
@@ -2310,7 +2424,9 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
'ipb_expiry_temp' => 'গà§à¦ªà§à¦¤ সদসà§à¦¯à¦¨à¦¾à¦® অৱৰোধ সà§à¦¥à¦¾à¦¯à¦¼à§€ হ;ব লাগিব ।',
'ipb_hide_invalid' => 'à¦à¦‡ বিষয়বসà§à¦¤à§ নিবাৰণ কৰিব পৰা নগ’ল; ইয়াত বহà§à¦¤à§‹ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ আছে ।',
'ipb_already_blocked' => '"$1"ক ইতিমধà§à¦¯à§‡ অৱৰোধ কৰা হৈছে',
+'ipb-needreblock' => '$1ক ইতিমধà§à¦¯à§‡ অৱৰোধ কৰা হৈছে । আপà§à¦¨à¦¿ ছেটিং সলাব বিচাৰিছে নেকি ?',
'ipb-otherblocks-header' => 'আন {{PLURAL:$1|পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦•|পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦•à¦¸à¦®à§‚হ}}',
+'unblock-hideuser' => 'আপà§à¦¨à¦¿ à¦à¦‡ সদসà§à¦¯à¦œà¦¨à§° অৱৰোধ আà¦à¦¤à§°à¦¾à¦¬ নোৱাৰে, কাৰণ তেওà¦à§° সদসà§à¦¯à¦¨à¦¾à¦® গোপন কৰা হৈছে ।',
'ipb_cant_unblock' => 'তà§à§°à§à¦Ÿà¦¿: পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• ID $1 পোৱা নগ’ল । হয়তো ইতিমধà§à¦¯à§‡ পà§à§°à¦¤à¦¿à¦¬à¦¨à§à¦§à¦• আà¦à¦¤à§° কৰা হৈছে ।',
'ipb_blocked_as_range' => 'তà§à§°à§à¦Ÿà¦¿: $1 আই.পি. ঠিকনাটোক পà§à§°à¦¤à§à¦¯à¦•à§à¦·à¦­à¦¾à§±à§‡ বাধা দিয়া হোৱা নাই আৰৠà¦à¦‡ বাধা আà¦à¦¤à§°à¦¾à¦¬ নোৱাৰি ।
কিনà§à¦¤à§ à¦à¦‡à¦Ÿà§‹ $2 পৰিসীমাৰ অনà§à¦¤à§°à§à¦—ত যাৰ বাধা আà¦à¦¤à§°à¦¾à¦¬ পাৰি ।',
@@ -2351,6 +2467,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
'lockfilenotwritable' => 'তথà§à¦¯à¦•à§‹à¦· বনà§à¦§ কৰাৰ ফাইলটো লিখনযোগà§à¦¯ নহয় ।
তথà§à¦¯à¦•à§‹à¦· বনà§à¦§ কৰিবলৈ বা খà§à¦²à¦¿à¦¬à¦²à§ˆ ফাইলটো ৱেব চাৰà§à¦­à¦¾à§°à§° দà§à¦¬à¦¾à§°à¦¾ লিখনযোগà§à¦¯ হ’ব লাগিব ।',
'databasenotlocked' => 'তথà§à¦¯à¦•à§‹à¦· বনà§à¦§ নহয় ।',
+'lockedbyandtime' => '({{GENDER:$1|$1}}ৰ দà§à¦¬à¦¾à§°à¦¾ $2 তাৰিখত $3 সময়ত)',
# Move page
'move-page' => '$1 সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à§° কৰক',
@@ -2476,7 +2593,7 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
'allmessagesdefault' => "ডিফ'লà§à¦Ÿ বাৰà§à¦¤à¦¾ পাঠà§à¦¯",
'allmessagescurrent' => 'বৰà§à¦¤à¦®à¦¾à¦¨à§° বাৰà§à¦¤à¦¾à§° পাঠ',
'allmessagestext' => 'মিডিয়াৱিকি নামসà§à¦¥à¦¾à¦¨à¦¤ থকা পà§à§°à¦£à¦¾à¦²à§€ বাৰà§à¦¤à¦¾à¦¸à¦®à§‚হৰ তালিকা ইয়াত দিয়া হৈছে ।
-যদি আপà§à¦¨à¦¿ মিডিয়াৱিকিৰ সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à§°à¦£à¦¤ আগà§à§°à¦¹à§€, তেনà§à¦¤à§‡ অনà§à¦—à§à§°à¦¹ কৰি [http://www.mediawiki.org/wiki/Localisation মিডিয়াৱিকি সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à§°à¦£] আৰৠ[http://translatewiki.net translatewiki.net] চাওক ।',
+যদি আপà§à¦¨à¦¿ মিডিয়াৱিকিৰ সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à§°à¦£à¦¤ আগà§à§°à¦¹à§€, তেনà§à¦¤à§‡ অনà§à¦—à§à§°à¦¹ কৰি [//www.mediawiki.org/wiki/Localisation মিডিয়াৱিকি সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à§°à¦£] আৰৠ[//translatewiki.net translatewiki.net] চাওক ।',
'allmessagesnotsupportedDB' => "à¦à¦‡ পৃষà§à¦ à¦¾ বà§à¦¯à§±à¦¹à¦¾à§° কৰিব নোৱাৰি কাৰণ '''\$wgUseDatabaseMessages''' নিষà§à¦•à§à§°à¦¿à¦¯à¦¼ কৰা হৈছে ।",
'allmessages-filter-legend' => 'ছেকনী',
'allmessages-filter-unmodified' => 'অপৰিৱৰà§à¦¤à¦¿à¦¤',
@@ -2632,17 +2749,17 @@ $1ৰ অৱৰোধৰ কাৰণ: "$2"',
সমà§à¦­à§±à¦¤à¦ƒ কোনো বà§à¦²à§‡à¦•à¦²à¦¿à¦·à§à¦Ÿà§‡à¦¡ হোৱা বাহà§à¦¯à¦¿à¦• সংযোগৰ কাৰণে à¦à¦¨à§‡ ঘটিছে ।',
# Info page
-'infosubtitle' => 'পৃষà§à¦ à¦¾à§° তথà§à¦¯',
-'numedits' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à§° সংখà§à¦¯à¦¾ (পৃষà§à¦ à¦¾): $1',
-'numtalkedits' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à§° সংখà§à¦¯à¦¾ (আলোচনা পৃষà§à¦ à¦¾): $1',
-'numwatchers' => 'দৃষà§à¦Ÿà¦¿à¦¤ ৰাখিছে: $1-জনে',
-'numauthors' => 'আছà§à¦¤à§€à¦¯à¦¼à¦¾ সà§à§°à¦·à§à¦Ÿà¦¾ (পৃষà§à¦ à¦¾): $1-জন',
-'numtalkauthors' => 'আছà§à¦¤à§€à¦¯à¦¼à¦¾ সà§à§°à¦·à§à¦Ÿà¦¾ (কথাবতৰা): $1-জন',
-
-# Math errors
-'math_failure' => 'পাৰà§à¦š কৰিব অসমৰà§à¦¥',
-'math_unknown_error' => 'অপৰিচিত সমসà§à¦¯à¦¾',
-'math_unknown_function' => 'অজà§à¦žà¦¾à¦¤ কাৰà§à¦¯à§à¦¯',
+'pageinfo-title' => '"$1" ৰ তথà§à¦¯',
+'pageinfo-header-edits' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦¸à¦®à§‚হ',
+'pageinfo-header-watchlist' => 'লকà§à¦·à§à¦¯à¦¤à¦¾à¦²à¦¿à¦•à¦¾',
+'pageinfo-header-views' => 'দৰà§à¦¶à¦¨',
+'pageinfo-subjectpage' => 'পৃষà§à¦ à¦¾',
+'pageinfo-talkpage' => 'আলোচনা পৃষà§à¦ à¦¾',
+'pageinfo-watchers' => 'নিৰীকà§à¦·à¦•à§° সংখà§à¦¯à¦¾',
+'pageinfo-edits' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à§° সংখà§à¦¯à¦¾',
+'pageinfo-authors' => 'মà§à¦–à§à¦¯ লেখকৰ সংখà§à¦¯à¦¾',
+'pageinfo-views' => 'দৰà§à¦¶à¦¨à§° সংখà§à¦¯à¦¾',
+'pageinfo-viewsperedit' => 'পà§à§°à¦¤à¦¿ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à§° দৰà§à¦¶à¦¨',
# Patrolling
'markaspatrolleddiff' => 'নিৰীকà§à¦·à¦¿à¦¤ বà§à¦²à¦¿ চিহà§à¦¨à¦¿à¦¤ কৰক',
@@ -2682,7 +2799,7 @@ $1',
'file-nohires' => '<small>ইয়াতকৈ ডাঙৰকৈ দেখà§à§±à¦¾à¦¬ নোৱাৰি ।</small>',
'svg-long-desc' => 'SVG ফাইল, সাধাৰণতঃ $1 × $2 পিকà§à¦¸à§‡à¦², ফাইল মাতà§à§°à¦¾: $3',
'show-big-image' => 'সমà§à¦ªà§‚ৰà§à¦£ দৃশà§à¦¯',
-'show-big-image-thumb' => '<small>à¦à¦‡ খচৰাৰ আকাৰ: $1 × $2 পিকà§à¦¸à§‡à¦² </small>',
+'show-big-image-size' => '$1 × $2 পিকà§à¦¸à§‡à¦²',
'file-info-gif-looped' => 'লà§à¦ªà¦•à§ƒà¦¤',
'file-info-gif-frames' => '$1 {{PLURAL:$1|ফà§à§°à§‡à¦®|ফà§à§°à§‡à¦®}}',
'file-info-png-looped' => 'লà§à¦ªà¦•à§ƒà¦¤',
@@ -2713,7 +2830,7 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
à¦à¦‡ ফাইলটো আচলৰ পৰা পৰিৱৰà§à¦¤à¦¨ কৰা হৈছে, সেয়েহে পৰিৱৰà§à¦¤à¦¿à¦¤ ফাইলটোৰ সৈতে নিমিলিব পাৰে ।',
'metadata-expand' => 'বহলাই ইয়াৰ বিষয়ে জনাওক',
'metadata-collapse' => 'বিষয় বৰà§à¦£à¦¨à¦¾ নেদেখà§à§±à¦¾à¦¬à¦²à§ˆ',
-'metadata-fields' => 'à¦à¦‡ সà§à¦šà§€à¦¤ থকা বিষয়বোৰ চিতà§à§°à§° পৃষà§à¦ à¦¾à§° তলত সদায় দেখা যাব ।
+'metadata-fields' => 'à¦à¦‡ সূচীত থকা বিষয়বোৰ চিতà§à§°à§° পৃষà§à¦ à¦¾à§° তলত দেখা যাব ।
বাকী বিষয়বোৰ গà§à¦ªà§à¦¤ থাকিব ।
* make
* model
@@ -2721,48 +2838,89 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
-'exif-imagewidth' => 'বহল',
-'exif-imagelength' => 'উচà§à¦šà¦¤à¦¾',
-'exif-bitspersample' => 'পà§à§°à¦¤à¦¿ অংশৰ বিট',
-'exif-samplesperpixel' => 'উপাদানৰ সংখà§à¦¯à¦¾',
-'exif-planarconfiguration' => 'ডেটা বিনà§à¦¯à¦¾à¦¸',
-'exif-ycbcrpositioning' => 'Y আৰৠC অৱসà§à¦¥à¦¾à¦¨',
-'exif-xresolution' => 'আনà§à¦­à§‚মিক ৰিজলিউচন',
-'exif-yresolution' => "উলমà§à¦¬ ৰিজ'লিউচন",
-'exif-stripoffsets' => 'ছবিৰ ডেটা অৱসà§à¦¥à¦¾à¦¨',
-'exif-datetime' => 'ফাইল সলনিৰ তাৰিখ আৰৠসময়',
-'exif-imagedescription' => 'চিতà§à§° শিৰোনামা',
-'exif-make' => 'কেমেৰা নিৰà§à¦®à¦¾à¦¤à¦¾',
-'exif-model' => 'কেমেৰা মডেল',
-'exif-software' => 'বà§à¦¯à§±à¦¹à§ƒà¦¤ ছফà§à¦Ÿà§±à§‡à§°',
-'exif-artist' => 'সà§à§°à¦·à§à¦Ÿà¦¾',
-'exif-copyright' => 'সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•à¦¾à§°à§€',
-'exif-colorspace' => 'ৰং সà§à¦¥à¦¾à¦¨',
-'exif-pixelydimension' => 'ছবিৰ পà§à§°à¦¸à§à¦¥à¦¤à¦¾',
-'exif-pixelxdimension' => 'ছবিৰ উচà§à¦šà¦¤à¦¾',
-'exif-usercomment' => 'সদসà§à¦¯à§° মনà§à¦¤à¦¬à§à¦¯',
-'exif-relatedsoundfile' => 'সংশà§à¦²à¦¿à¦·à§à¦Ÿ শà§à§°à¦¬à§à¦¯ ফাইল',
-'exif-exposuretime' => "à¦à¦•à§à¦¸à¦ª'জাৰ সময়",
-'exif-exposuretime-format' => '$1 ছেকেণà§à¦¡ ($2)',
-'exif-fnumber' => 'F সংখà§à¦¯à¦¾',
-'exif-subjectdistance' => 'বিষয়বসà§à¦¤à§à§° দূৰতà§à¦¬',
-'exif-lightsource' => 'পোহৰৰ উৎস',
-'exif-flash' => 'ফà§à¦²à¦¾à¦›',
-'exif-focallength' => "লেনà§â€Œà¦›à§° ফ'কেল দৈৰà§à¦˜à§à¦¯",
-'exif-subjectarea' => 'বিষয়বসà§à¦¤à§à§° কà§à¦·à§‡à¦¤à§à§°à¦«à¦²',
-'exif-subjectlocation' => 'বিষয়বসà§à¦¤à§à§° সà§à¦¥à¦¾à¦¨',
-'exif-gpslatituderef' => 'উতà§à¦¤à§° বা দকà§à¦·à¦¿à¦£ অকà§à¦·à¦¾à¦‚শ',
-'exif-gpslatitude' => 'অকà§à¦·à¦¾à¦‚শ',
-'exif-gpslongituderef' => 'পূৱ বা পশà§à¦šà¦¿à¦® দà§à§°à¦¾à¦˜à¦¿à¦®à¦¾à¦‚শ',
-'exif-gpslongitude' => 'দà§à§°à¦¾à¦˜à¦¿à¦®à¦¾à¦‚শ',
-'exif-gpsaltitude' => 'উচà§à¦šà¦¤à¦¾',
-'exif-gpstimestamp' => 'GPS সময় (পাৰমাণৱিক ঘড়ি)',
-'exif-gpssatellites' => 'জোখ মাপত বà§à¦¯à§±à¦¹à§ƒà¦¤ উপগà§à§°à¦¹ সমূহ',
-'exif-gpsspeedref' => 'দà§à§°à§à¦¤à¦¿ à¦à¦•à¦•',
-'exif-objectname' => 'চমৠশীৰà§à¦·à¦•',
+'exif-imagewidth' => 'বহল',
+'exif-imagelength' => 'উচà§à¦šà¦¤à¦¾',
+'exif-bitspersample' => 'পà§à§°à¦¤à¦¿ অংশৰ বিট',
+'exif-samplesperpixel' => 'উপাদানৰ সংখà§à¦¯à¦¾',
+'exif-planarconfiguration' => 'ডেটা বিনà§à¦¯à¦¾à¦¸',
+'exif-ycbcrpositioning' => 'Y আৰৠC অৱসà§à¦¥à¦¾à¦¨',
+'exif-xresolution' => 'আনà§à¦­à§‚মিক ৰিজলিউচন',
+'exif-yresolution' => "উলমà§à¦¬ ৰিজ'লিউচন",
+'exif-stripoffsets' => 'ছবিৰ ডেটা অৱসà§à¦¥à¦¾à¦¨',
+'exif-datetime' => 'ফাইল সলনিৰ তাৰিখ আৰৠসময়',
+'exif-imagedescription' => 'চিতà§à§° শিৰোনামা',
+'exif-make' => 'কেমেৰা নিৰà§à¦®à¦¾à¦¤à¦¾',
+'exif-model' => 'কেমেৰা মডেল',
+'exif-software' => 'বà§à¦¯à§±à¦¹à§ƒà¦¤ ছফà§à¦Ÿà§±à§‡à§°',
+'exif-artist' => 'সà§à§°à¦·à§à¦Ÿà¦¾',
+'exif-copyright' => 'সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•à¦¾à§°à§€',
+'exif-colorspace' => 'ৰং সà§à¦¥à¦¾à¦¨',
+'exif-pixelydimension' => 'ছবিৰ পà§à§°à¦¸à§à¦¥à¦¤à¦¾',
+'exif-pixelxdimension' => 'ছবিৰ উচà§à¦šà¦¤à¦¾',
+'exif-usercomment' => 'সদসà§à¦¯à§° মনà§à¦¤à¦¬à§à¦¯',
+'exif-relatedsoundfile' => 'সংশà§à¦²à¦¿à¦·à§à¦Ÿ শà§à§°à¦¬à§à¦¯ ফাইল',
+'exif-datetimedigitized' => 'ডিজিটেলকৰণৰ তাৰিখ আৰৠসময়',
+'exif-exposuretime' => "à¦à¦•à§à¦¸à¦ª'জাৰ সময়",
+'exif-exposuretime-format' => '$1 ছেকেণà§à¦¡ ($2)',
+'exif-fnumber' => 'F সংখà§à¦¯à¦¾',
+'exif-subjectdistance' => 'বিষয়বসà§à¦¤à§à§° দূৰতà§à¦¬',
+'exif-lightsource' => 'পোহৰৰ উৎস',
+'exif-flash' => 'ফà§à¦²à¦¾à¦›',
+'exif-focallength' => "লেনà§â€Œà¦›à§° ফ'কেল দৈৰà§à¦˜à§à¦¯",
+'exif-subjectarea' => 'বিষয়বসà§à¦¤à§à§° কà§à¦·à§‡à¦¤à§à§°à¦«à¦²',
+'exif-subjectlocation' => 'বিষয়বসà§à¦¤à§à§° সà§à¦¥à¦¾à¦¨',
+'exif-filesource' => 'ফাইলৰ উতà§â€à¦¸',
+'exif-scenetype' => 'দৃশà§à¦¯à§° পà§à§°à¦•à¦¾à§°',
+'exif-whitebalance' => 'বগা ভাৰসামà§à¦¯',
+'exif-digitalzoomratio' => 'ডিজিটেল জà§à¦® অনà§à¦ªà¦¾à¦¤',
+'exif-contrast' => 'কনà§â€Œà¦Ÿà§à§°à¦¾à¦·à§à¦Ÿ',
+'exif-sharpness' => 'সà§à¦ªà¦·à§à¦Ÿà¦¤à¦¾',
+'exif-subjectdistancerange' => 'বিষয়বসà§à¦¤à§à§° দূৰতà§à¦¬à§° পৰিসীমা',
+'exif-gpslatituderef' => 'উতà§à¦¤à§° বা দকà§à¦·à¦¿à¦£ অকà§à¦·à¦¾à¦‚শ',
+'exif-gpslatitude' => 'অকà§à¦·à¦¾à¦‚শ',
+'exif-gpslongituderef' => 'পূৱ বা পশà§à¦šà¦¿à¦® দà§à§°à¦¾à¦˜à¦¿à¦®à¦¾à¦‚শ',
+'exif-gpslongitude' => 'দà§à§°à¦¾à¦˜à¦¿à¦®à¦¾à¦‚শ',
+'exif-gpsaltitude' => 'উচà§à¦šà¦¤à¦¾',
+'exif-gpstimestamp' => 'GPS সময় (পাৰমাণৱিক ঘড়ি)',
+'exif-gpssatellites' => 'জোখ মাপত বà§à¦¯à§±à¦¹à§ƒà¦¤ উপগà§à§°à¦¹ সমূহ',
+'exif-gpsspeedref' => 'দà§à§°à§à¦¤à¦¿ à¦à¦•à¦•',
+'exif-gpsimgdirection' => 'ছবিৰ দিশ',
+'exif-gpsdestlongitude' => 'লকà§à¦·à§à¦¯à¦¸à§à¦¥à¦¾à¦¨à§° দà§à§°à¦¾à¦˜à¦¿à¦®à¦¾',
+'exif-gpsdestdistance' => 'লকà§à¦·à§à¦¯à¦¸à§à¦¥à¦¾à¦¨à¦²à§ˆ দূৰতà§à¦¬',
+'exif-gpsdatestamp' => 'GPS তাৰিখ',
+'exif-countrycodedest' => 'দেশৰ ক’ড পà§à§°à¦¦à§°à§à¦¶à¦¿à¦¤',
+'exif-citydest' => 'চহৰ পà§à§°à¦¦à§°à§à¦¶à¦¿à¦¤',
+'exif-objectname' => 'চমৠশীৰà§à¦·à¦•',
+'exif-specialinstructions' => 'বিশেষ নিৰà§à¦¦à§‡à¦¶à¦¨à¦¾à¦¸à¦®à§‚হ',
+'exif-headline' => 'শিৰোনাম',
+'exif-source' => 'উতà§â€à¦¸',
+'exif-writer' => 'লেখক',
+'exif-languagecode' => 'ভাষা',
+'exif-iimcategory' => 'শà§à§°à§‡à¦£à§€',
+'exif-lens' => 'বà§à¦¯à§±à¦¹à§ƒà¦¤ লেনà§â€Œà¦›',
+'exif-cameraownername' => 'কেমেৰাৰ অধিকাৰী',
+'exif-label' => 'লেবেল',
+'exif-rating' => 'ৰেটিং (out of 5)',
+'exif-copyrighted' => 'সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•à¦¾à§° সà§à¦¥à¦¿à¦¤à¦¿',
+'exif-copyrightowner' => 'সà§à¦¬à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•à¦¾à§°à§€',
+'exif-usageterms' => 'বà§à¦¯à§±à¦¹à¦¾à§° কৰাৰ চৰà§à¦¤à§à¦¤',
+'exif-licenseurl' => 'কপিৰাইট অনà§à¦œà§à¦žà¦¾à¦ªà¦¤à§à§°à§° বাবে URL',
+'exif-disclaimer' => 'দাবীতà§à¦¯à¦¾à¦—',
+'exif-contentwarning' => 'বিষয়বসà§à¦¤à§ সতৰà§à¦•à¦¬à¦¾à¦£à§€',
+'exif-intellectualgenre' => 'আইটেমৰ পà§à§°à¦•à¦¾à§°',
+'exif-subjectnewscode' => 'বিষয় ক’ড',
+
+'exif-copyrighted-true' => 'কপিৰাইট আছে',
+'exif-copyrighted-false' => "ৰাজহà§à§±à¦¾ ড'মেইন",
'exif-unknowndate' => 'অজà§à¦žà¦¾à¦¤ তাৰিখ',
@@ -2803,21 +2961,54 @@ Any subsequent links on the same line are considered to be exceptions, i.e. page
'exif-gpsspeed-m' => 'মাইল পà§à§°à¦¤à¦¿ ঘনà§à¦Ÿà¦¾',
'exif-gpsspeed-n' => 'নট',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'কিলোমিটাৰ',
+'exif-gpsdestdistance-m' => 'মাইল',
+'exif-gpsdestdistance-n' => 'নটিকেল মাইল',
+
+'exif-objectcycle-a' => 'কেৱল পà§à§±à¦¾',
+'exif-objectcycle-p' => 'কেৱল সনà§à¦§à§à¦¯à¦¾',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'পà§à§°à¦•à§ƒà¦¤ দিশ',
'exif-gpsdirection-m' => 'চà§à¦®à§à¦¬à¦•à§€à¦¯à¦¼ দিশ',
+'exif-dc-contributor' => 'অৱদানকাৰীসমূহ',
+'exif-dc-date' => 'তাৰিখ(সমূহ)',
+'exif-dc-publisher' => 'পà§à§°à¦•à¦¾à¦¶à¦•',
+'exif-dc-relation' => 'পà§à§°à¦¾à¦¸à¦‚গিক মিডিয়া',
+'exif-dc-rights' => 'অধিকাৰসমূহ',
+'exif-dc-source' => 'উতà§â€à¦¸ মিডিয়া',
+'exif-dc-type' => 'মিডিয়াৰ পà§à§°à¦•à¦¾à§°',
+
+'exif-rating-rejected' => 'বাতিল কৰা হৈছে',
+
+'exif-iimcategory-ace' => 'কলা, সংসà§à¦•à§ƒà¦¤à¦¿ আৰৠমনোৰঞà§à¦œà¦¨',
+'exif-iimcategory-clj' => 'অপৰাধ আৰৠআইন',
+'exif-iimcategory-dis' => 'দà§à§°à§à¦¯à§‹à¦— আৰৠদà§à§°à§à¦˜à¦Ÿà¦¨à¦¾',
+'exif-iimcategory-fin' => 'অৰà§à¦¥à¦¨à§€à¦¤à¦¿ আৰৠবà§à¦¯à§±à¦¸à¦¾à¦¯à¦¼',
+'exif-iimcategory-edu' => 'শিকà§à¦·à¦¾',
+'exif-iimcategory-evn' => 'পৰিবেশ',
+'exif-iimcategory-hth' => 'সà§à¦¬à¦¾à¦¸à§à¦¥à§à¦¯',
+'exif-iimcategory-pol' => 'ৰাজনীতি',
+'exif-iimcategory-rel' => 'ধৰà§à¦® আৰৠবিশà§à¦¬à¦¾à¦¸',
+'exif-iimcategory-soi' => 'সামাজিক বিষয়সমূহ',
+'exif-iimcategory-spo' => 'কà§à§°à§€à¦¡à¦¼à¦¾',
+'exif-iimcategory-wea' => 'বতৰ',
+
+'exif-urgency-normal' => 'সাধাৰণ ($1)',
+'exif-urgency-low' => 'নিমà§à¦¨ ($1)',
+'exif-urgency-high' => 'উচà§à¦š ($1)',
+
# External editor support
'edit-externally' => 'বাহিৰা আহিলা বà§à¦¯à§±à¦¹à¦¾à§° কৰি à¦à¦‡ ফাইলটো সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ কৰক ।',
-'edit-externally-help' => 'অধিক তথà§à¦¯à§° কাৰণে [http://www.mediawiki.org/wiki/Manual:External_editors পà§à§°à¦¸à§à¦¤à§à¦¤ কৰা নিৰà§à¦¦à§‡à¦¶à¦¨à¦¾] চাওক ।',
+'edit-externally-help' => 'অধিক তথà§à¦¯à§° কাৰণে [//www.mediawiki.org/wiki/Manual:External_editors পà§à§°à¦¸à§à¦¤à§à¦¤ কৰা নিৰà§à¦¦à§‡à¦¶à¦¨à¦¾] চাওক ।',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'সকলোবোৰ',
-'imagelistall' => 'সকলোবোৰ',
-'watchlistall2' => 'সকলো',
-'namespacesall' => 'সকলোবোৰ',
-'monthsall' => 'সকলো',
-'limitall' => 'সকলোবোৰ',
+'watchlistall2' => 'সকলো',
+'namespacesall' => 'সকলোবোৰ',
+'monthsall' => 'সকলো',
+'limitall' => 'সকলোবোৰ',
# E-mail address confirmation
'confirmemail' => 'ই-মেইল ঠিকনা নিশà§à¦šà¦¿à¦¤ কৰক',
@@ -2897,16 +3088,23 @@ $5
'trackbackdeleteok' => 'টà§à§°à§‡à¦•à¦¬à§‡à¦•à¦Ÿà§‹ সফলতাৰে বিলোপ কৰা হৈছে ।',
# Delete conflict
-'deletedwhileediting' => "'''সতৰà§à¦•à¦¬à¦¾à¦£à§€''': আপà§à¦¨à¦¿ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ আৰমà§à¦­ কৰাৰ পিছত পৃষà§à¦ à¦¾à¦–ন বিলোপ কৰা হৈছে !",
-'confirmrecreate' => "আপà§à¦¨à¦¿ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ আৰমà§à¦­ কৰাৰ পিছত সদসà§à¦¯ [[User:$1|$1]] ([[User talk:$1|আলোচনা]])য়ে পৃষà§à¦ à¦¾à¦–ন বিলোপ কৰিছে, তাৰ কাৰণ:
+'deletedwhileediting' => "'''সতৰà§à¦•à¦¬à¦¾à¦£à§€''': আপà§à¦¨à¦¿ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ আৰমà§à¦­ কৰাৰ পিছত পৃষà§à¦ à¦¾à¦–ন বিলোপ কৰা হৈছে !",
+'confirmrecreate' => "আপà§à¦¨à¦¿ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ আৰমà§à¦­ কৰাৰ পিছত সদসà§à¦¯ [[User:$1|$1]] ([[User talk:$1|আলোচনা]])য়ে পৃষà§à¦ à¦¾à¦–ন বিলোপ কৰিছে, তাৰ কাৰণ:
: ''$2''
আপà§à¦¨à¦¿ à¦à¦‡ পৃষà§à¦ à¦¾à¦–ন পà§à¦¨à§°à§à¦¨à¦¿à§°à§à¦®à¦¾à¦£ কৰিব খোজাটো নিশà§à¦šà¦¿à¦¤ কৰক ।",
-'recreate' => 'পà§à¦¨à§° সৃষà§à¦Ÿà¦¿ কৰক',
+'confirmrecreate-noreason' => 'আপà§à¦¨à¦¿ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ আৰমà§à¦­ কৰাৰ পিছত সদসà§à¦¯ [[User:$1|$1]] ([[User talk:$1|আলোচনা]])য়ে পৃষà§à¦ à¦¾à¦–ন বিলোপ কৰিছে । আপà§à¦¨à¦¿ à¦à¦‡ পৃষà§à¦ à¦¾à¦–ন পà§à¦¨à§°à§à¦¨à¦¿à§°à§à¦®à¦¾à¦£ কৰিব খোজাটো অনà§à¦—à§à§°à¦¹ কৰি নিশà§à¦šà¦¿à¦¤ কৰক ।',
+'recreate' => 'পà§à¦¨à§° সৃষà§à¦Ÿà¦¿ কৰক',
# action=purge
'confirm_purge_button' => "অ'কে",
'confirm-purge-top' => 'à¦à¦‡ পৃষà§à¦ à¦¾à§° কেশà§à¦¬à§‡ খালী কৰা হওক ?',
+# action=watch/unwatch
+'confirm-watch-button' => 'অ’কে',
+'confirm-watch-top' => 'à¦à¦‡ পৃষà§à¦ à¦¾à¦–ন আপোনাৰ লকà§à¦·à§à¦¯-তালিকাত যোগ কৰা যাওক ?',
+'confirm-unwatch-button' => 'অ’কে',
+'confirm-unwatch-top' => 'à¦à¦‡ পৃষà§à¦ à¦¾à¦–ন আপোনাৰ লকà§à¦·à§à¦¯-তালিকাৰ পৰা আà¦à¦¤à§° কৰা হওক ?',
+
# Multipage image navigation
'imgmultipageprev' => '↠পূৰà§à¦¬à¦¬à§°à§à¦¤à§€ পৃষà§à¦ à¦¾',
'imgmultipagenext' => 'পৰবৰà§à¦¤à§€ পৃষà§à¦ à¦¾ →',
@@ -2936,19 +3134,22 @@ $5
'livepreview-ready' => 'লোডিং… পà§à§°à¦¸à§à¦¤à§à¦¤!',
# Watchlist editor
-'watchlistedit-numitems' => 'কথাবতৰা পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ বাদ দি আপোনাৰ লকà§à¦·à§à¦¯-তালিকাত {{PLURAL:$1|à¦à¦Ÿà¦¾ শিৰোনামা|$1 টা শিৰোনামা}} আছে ।',
-'watchlistedit-noitems' => 'আপোনাৰ লকà§à¦·à§à¦¯-তালিকাত à¦à¦–নো ঘাই পৃষà§à¦ à¦¾ নাই ।',
-'watchlistedit-normal-title' => 'লকà§à¦·à§à¦¯-তালিকা সমà§à¦ªà¦¾à¦¦à¦¨ কৰক',
-'watchlistedit-normal-legend' => 'লকà§à¦·à§à¦¯-তালিকাৰ পৰা শিৰোনামা আà¦à¦¤à§°à¦¾à¦“ক',
-'watchlistedit-normal-submit' => 'শিৰোনামা আà¦à¦¤à§°à¦¾à¦“ক',
-'watchlistedit-normal-done' => "{{PLURAL:$1|à¦à¦Ÿà¦¾ শিৰোনামা|$1 টা শিৰোনামা}} আপোনাৰ লকà§à¦·à§à¦¯à¦¤à¦¾à¦²à¦¿à¦•à¦¾à§° পৰা আà¦à¦¤à§°à§‹à§±à¦¾ হ'ল:",
-'watchlistedit-raw-title' => 'অশোধিত অনà§à¦¸à§°à¦£-তালিকা সমà§à¦ªà¦¾à¦¦à¦¨ কৰক',
-'watchlistedit-raw-legend' => 'অশোধিত অনà§à¦¸à§°à¦£-তালিকা সমà§à¦ªà¦¾à¦¦à¦¨ কৰক',
-'watchlistedit-raw-titles' => 'শিৰোনামা:',
-'watchlistedit-raw-submit' => 'লকà§à¦·à§à¦¯-তালিকা আপডেট কৰক',
-'watchlistedit-raw-done' => "আপোনাৰ লকà§à¦·à§à¦¯-তালিকা নবীকৰণ কৰা হ'ল",
-'watchlistedit-raw-added' => "{{PLURAL:$1|à¦à¦Ÿà¦¾ শিৰোনামা|$1-টা শিৰোনামা}} যোগ কৰা হ'ল:",
-'watchlistedit-raw-removed' => "{{PLURAL:$1|à¦à¦Ÿà¦¾ শিৰোনামা|$1-টা শিৰোনামা}} আà¦à¦¤à§°à§‹à§±à¦¾ হ'ল:",
+'watchlistedit-numitems' => 'কথাবতৰা পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ বাদ দি আপোনাৰ লকà§à¦·à§à¦¯-তালিকাত {{PLURAL:$1|à¦à¦Ÿà¦¾ শিৰোনামা|$1 টা শিৰোনামা}} আছে ।',
+'watchlistedit-noitems' => 'আপোনাৰ লকà§à¦·à§à¦¯-তালিকাত à¦à¦–নো ঘাই পৃষà§à¦ à¦¾ নাই ।',
+'watchlistedit-normal-title' => 'লকà§à¦·à§à¦¯-তালিকা সমà§à¦ªà¦¾à¦¦à¦¨ কৰক',
+'watchlistedit-normal-legend' => 'লকà§à¦·à§à¦¯-তালিকাৰ পৰা শিৰোনামা আà¦à¦¤à§°à¦¾à¦“ক',
+'watchlistedit-normal-explain' => 'Titles on your watchlist are shown below.
+To remove a title, check the box next to it, and click "{{int:Watchlistedit-normal-submit}}".
+You can also [[Special:EditWatchlist/raw|edit the raw list]].',
+'watchlistedit-normal-submit' => 'শিৰোনামা আà¦à¦¤à§°à¦¾à¦“ক',
+'watchlistedit-normal-done' => "{{PLURAL:$1|à¦à¦Ÿà¦¾ শিৰোনামা|$1 টা শিৰোনামা}} আপোনাৰ লকà§à¦·à§à¦¯à¦¤à¦¾à¦²à¦¿à¦•à¦¾à§° পৰা আà¦à¦¤à§°à§‹à§±à¦¾ হ'ল:",
+'watchlistedit-raw-title' => 'অশোধিত অনà§à¦¸à§°à¦£-তালিকা সমà§à¦ªà¦¾à¦¦à¦¨ কৰক',
+'watchlistedit-raw-legend' => 'অশোধিত অনà§à¦¸à§°à¦£-তালিকা সমà§à¦ªà¦¾à¦¦à¦¨ কৰক',
+'watchlistedit-raw-titles' => 'শিৰোনামা:',
+'watchlistedit-raw-submit' => 'লকà§à¦·à§à¦¯-তালিকা আপডেট কৰক',
+'watchlistedit-raw-done' => "আপোনাৰ লকà§à¦·à§à¦¯-তালিকা নবীকৰণ কৰা হ'ল",
+'watchlistedit-raw-added' => "{{PLURAL:$1|à¦à¦Ÿà¦¾ শিৰোনামা|$1-টা শিৰোনামা}} যোগ কৰা হ'ল:",
+'watchlistedit-raw-removed' => "{{PLURAL:$1|à¦à¦Ÿà¦¾ শিৰোনামা|$1-টা শিৰোনামা}} আà¦à¦¤à§°à§‹à§±à¦¾ হ'ল:",
# Watchlist editing tools
'watchlisttools-view' => 'সংগতি থকা সাল-সলনিবোৰ চাওক',
@@ -2957,6 +3158,7 @@ $5
# Core parser functions
'unknown_extension_tag' => 'অজà§à¦žà¦¾à¦¤ à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦šà¦¨ টেগ "$1"',
+'duplicate-defaultsort' => '\'\'\'সাবধান!\'\'\' পূৰà§à¦¬à¦¨à¦¿à§°à§à¦§à¦¾à§°à¦¿à¦¤ কà§à§°à¦®à¦¸à§‚চক "$2"-ঠআগৰ কà§à¦°à¦®à¦¸à§‚চক "$1"-অক বিসà§à¦¥à¦¾à¦ªà¦¿à¦¤ কৰিছে।',
# Special:Version
'version' => 'সংসà§à¦•à§°à¦£',
@@ -2964,6 +3166,7 @@ $5
'version-specialpages' => 'বিশেষ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ',
'version-parserhooks' => 'পাৰà§à¦šà¦¾à§° হà§à¦•',
'version-variables' => 'চলকসমূহ',
+'version-antispam' => 'সà§à¦ªà¦¾à¦® পà§à§°à¦¤à¦¿à§°à§‹à¦§',
'version-skins' => 'আৱৰণ',
'version-other' => 'অনà§à¦¯',
'version-hooks' => 'হà§à¦•à¦¸à¦®à§‚হ',
@@ -2972,7 +3175,7 @@ $5
'version-hook-name' => 'হà§à¦• নাম',
'version-version' => '(সংসà§à¦•à§°à¦£ $1)',
'version-license' => 'অনà§à¦œà§à¦žà¦¾à¦ªà¦¤à§à§°',
-'version-poweredby-credits' => "à¦à¦‡ ৱিকি '''[http://www.mediawiki.org/ মিডিয়াৱিকিৰ]''' দà§à¦¬à¦¾à§°à¦¾ পà§à§°à¦šà¦²à¦¿à¦¤ , কপিৰাইট © ২০০১-$1 $2.",
+'version-poweredby-credits' => "à¦à¦‡ ৱিকি '''[//www.mediawiki.org/ মিডিয়াৱিকিৰ]''' দà§à¦¬à¦¾à§°à¦¾ পà§à§°à¦šà¦²à¦¿à¦¤ , কপিৰাইট © ২০০১-$1 $2.",
'version-poweredby-others' => 'অনà§à¦¯',
'version-software' => 'ইনষà§à¦Ÿà¦² কৰা ছফà§à¦Ÿà§±à§‡à§°',
'version-software-product' => 'সামগà§à§°à§€',
@@ -2984,19 +3187,21 @@ $5
'filepath-submit' => 'যাওক',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ কৰক',
-'fileduplicatesearch-legend' => 'পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿à§° বাবে অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ কৰক',
-'fileduplicatesearch-filename' => 'ফাইলনাম:',
-'fileduplicatesearch-submit' => 'সনà§à¦§à¦¾à¦¨ কৰক',
-'fileduplicatesearch-info' => '$1 × $2 পিকà§à¦¸à§‡à¦²<br /> ফাইলৰ মাতà§à§°à¦¾: $3<br /> MIME পà§à§°à¦•à¦¾à§°: $4',
-'fileduplicatesearch-result-1' => '"$1" ফাইলৰ কোনো পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ নাই ।',
-'fileduplicatesearch-result-n' => '"$1" ফাইলৰ {{PLURAL:$2|à¦à¦Ÿà¦¾ পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿|$2টা পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿}} আছে ।',
+'fileduplicatesearch' => 'পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ কৰক',
+'fileduplicatesearch-legend' => 'পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿à§° বাবে অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ কৰক',
+'fileduplicatesearch-filename' => 'ফাইলনাম:',
+'fileduplicatesearch-submit' => 'সনà§à¦§à¦¾à¦¨ কৰক',
+'fileduplicatesearch-info' => '$1 × $2 পিকà§à¦¸à§‡à¦²<br /> ফাইলৰ মাতà§à§°à¦¾: $3<br /> MIME পà§à§°à¦•à¦¾à§°: $4',
+'fileduplicatesearch-result-1' => '"$1" ফাইলৰ কোনো পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿ নাই ।',
+'fileduplicatesearch-result-n' => '"$1" ফাইলৰ {{PLURAL:$2|à¦à¦Ÿà¦¾ পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿|$2টা পà§à§°à¦¤à¦¿à¦²à¦¿à¦ªà¦¿}} আছে ।',
+'fileduplicatesearch-noresults' => 'কোনো "$1" নামৰ ফাইল সনà§à¦§à¦¾à¦¨ পোৱা নগল ।',
# Special:SpecialPages
'specialpages' => 'বিশেষ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ',
-'specialpages-note' => '↓----
+'specialpages-note' => '----
* সাধাৰণ বিশেষ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ।
-* <strong class="mw-specialpagerestricted">সীমাবদà§à¦§ বিশেষ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ।</strong>',
+* <span class="mw-specialpagerestricted">সীমাবদà§à¦§ বিশেষ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ।</span>
+* <span class="mw-specialpagecached">কেশà§à¦¬ কৰা বিশেষ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ (অপà§à§°à¦šà¦²à¦¿à¦¤à¦“ হ\'ব পাৰে)।</span>',
'specialpages-group-maintenance' => 'ততà§à¦¬à¦¾à§±à¦§à¦¾à¦¨à§° কাৰà§à¦¯à¦¬à¦¿à§±à§°à¦£à§€à¦¸à¦®à§‚হ',
'specialpages-group-other' => 'অনà§à¦¯à¦¾à¦¨à§à¦¯ বিশেষ পৃষà§à¦ à¦¾à¦¸à¦®à§‚হ',
'specialpages-group-login' => 'পà§à§°à§±à§‡à¦¶/সদসà§à¦¯à¦­à§à¦•à§à¦¤à¦¿',
diff --git a/languages/messages/MessagesAst.php b/languages/messages/MessagesAst.php
index 96832a77..470859e0 100644
--- a/languages/messages/MessagesAst.php
+++ b/languages/messages/MessagesAst.php
@@ -50,9 +50,9 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Statistics' => array( 'Estadístiques' ),
+ 'Block' => array( 'Bloquiar', 'BloquiarIP', 'BloquiarUsuariu' ),
'Log' => array( 'Rexistru' ),
- 'Blockip' => array( 'Bloquiar', 'BloquiarIP', 'BloquiarUsuariu' ),
+ 'Statistics' => array( 'Estadístiques' ),
);
$messages = array(
@@ -87,8 +87,8 @@ $messages = array(
'tog-shownumberswatching' => "Amosar el númberu d'usuarios que la tán vixilando",
'tog-oldsig' => 'Firma esistente:',
'tog-fancysig' => 'Usar la firma como "testu wiki" (ensin enllaz automáticu)',
-'tog-externaleditor' => 'Usar un editor esternu de mou predeterminao (namái pa espertos, necesita configuraciones especiales nel to ordenador. [http://www.mediawiki.org/wiki/Manual:External_editors Más información.])',
-'tog-externaldiff' => 'Usar un diff esternu de mou predetermináu (namái pa espertos, necesita configuraciones especiales nel to ordenador. [http://www.mediawiki.org/wiki/Manual:External_editors Más información.])',
+'tog-externaleditor' => 'Usar un editor esternu de mou predeterminao (namái pa espertos, necesita configuraciones especiales nel to ordenador. [//www.mediawiki.org/wiki/Manual:External_editors Más información.])',
+'tog-externaldiff' => 'Usar un diff esternu de mou predetermináu (namái pa espertos, necesita configuraciones especiales nel to ordenador. [//www.mediawiki.org/wiki/Manual:External_editors Más información.])',
'tog-showjumplinks' => 'Activar los enllaces d\'accesibilidá "saltar a"',
'tog-uselivepreview' => 'Usar vista previa en direutu (JavaScript) (en pruebes)',
'tog-forceeditsummary' => "Avisame cuando grabe col resume d'edición en blanco",
@@ -185,15 +185,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Páxines indexaes',
'noindex-category' => 'Páxines ensin indexar',
-
-'mainpagetext' => "'''MediaWiki instalóse correchamente.'''",
-'mainpagedocfooter' => "Visita la [http://meta.wikimedia.org/wiki/Help:Contents Guía d'usuariu] pa saber cómo usar esti software wiki.
-
-== Empecipiando ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Llista de les opciones de configuración]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ de MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de corréu de les ediciones de MediaWiki]",
+'broken-file-category' => 'Páxines con enllaces frañaos a ficheros',
'about' => 'Tocante a',
'article' => 'Conteníu de la páxina',
@@ -245,10 +237,10 @@ $messages = array(
'history' => 'Historial de la páxina',
'history_short' => 'Historial',
'updatedmarker' => 'actualizáu dende la mio última visita',
-'info_short' => 'Información',
'printableversion' => 'Versión pa imprentar',
'permalink' => 'Enllaz permanente',
'print' => 'Imprentar',
+'view' => 'Ver',
'edit' => 'Editar',
'create' => 'Crear',
'editthispage' => 'Editar esta páxina',
@@ -256,6 +248,7 @@ $messages = array(
'delete' => 'Desaniciar',
'deletethispage' => 'Desaniciar esta páxina',
'undelete_short' => 'Restaurar {{PLURAL:$1|una edición|$1 ediciones}}',
+'viewdeleted_short' => 'Ver {{PLURAL:$1|una edición desaniciada|$1 ediciones desaniciaes}}',
'protect' => 'Protexer',
'protect_change' => 'camudar',
'protectthispage' => 'Protexer esta páxina',
@@ -339,6 +332,8 @@ $1",
'toc' => 'Tabla de conteníos',
'showtoc' => 'amosar',
'hidetoc' => 'anubrir',
+'collapsible-collapse' => 'Esconder',
+'collapsible-expand' => 'Espander',
'thisisdeleted' => '¿Ver o restaurar $1?',
'viewdeleted' => '¿Ver $1?',
'restorelink' => '{{PLURAL:$1|una edición desaniciada|$1 ediciones desaniciaes}}',
@@ -350,6 +345,8 @@ $1",
'page-rss-feed' => 'Canal RSS "$1"',
'page-atom-feed' => 'Canal Atom "$1"',
'red-link-title' => '$1 (la páxina nun esiste)',
+'sort-descending' => 'Orde descendiente',
+'sort-ascending' => 'Orde ascendiente',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Páxina',
@@ -436,12 +433,13 @@ Por favor vuelve a tentalo dientro d'unos minutos.",
'protectedinterface' => "Esta páxina proporciona testu d'interfaz a l'aplicación y ta candada pa evitar el so abusu.",
'editinginterface' => "'''Avisu:''' Tas editando una páxina que s'usa pa proporcionar el testu de la interfaz a l'aplicación.
Los cambeos nesta páxina afeutarán a l'apariencia de la interfaz pa otros usuarios.
-Si quies facer traducciones, por favor usa [http://translatewiki.net/wiki/Main_Page?setlang=ast translatewiki.net], el proyeutu de traducción de MediaWiki.",
+Si quies facer traducciones, por favor usa [//translatewiki.net/wiki/Main_Page?setlang=ast translatewiki.net], el proyeutu de traducción de MediaWiki.",
'sqlhidden' => '(consulta SQL escondida)',
'cascadeprotected' => 'Esta páxina ta protexida d\'ediciones porque ta enxerta {{PLURAL:$1|na siguiente páxina|nes siguientes páxines}}, que {{PLURAL:$1|ta protexida|tán protexíes}} cola opción "en cascada":
$2',
'namespaceprotected' => "Nun tienes permisu pa editar páxines nel espaciu de nomes '''$1'''.",
-'customcssjsprotected' => "Nun tienes permisu pa editar esta páxina porque contién preferencies personales d'otru usuariu.",
+'customcssprotected' => "Nun tienes permisu pa editar esta páxina CSS porque contién preferencies personales d'otru usuariu.",
+'customjsprotected' => "Nun tienes permisu pa editar esta páxina de JavaScript porque contién preferencies personales d'otru usuariu.",
'ns-specialprotected' => 'Les páxines especiales nun se puen editar.',
'titleprotected' => "Esti títulu foi protexíu de la so creación por [[User:$1|$1]].
El motivu conseñáu ye ''$2''.",
@@ -479,6 +477,7 @@ Nun t'escaezas d'escoyer les tos [[Special:Preferences|preferencies de {{SITENAM
'createaccount' => 'Crear una cuenta',
'gotaccount' => "¿Ya tienes una cuenta? '''$1'''.",
'gotaccountlink' => '¡Identifícate!',
+'userlogin-resetlink' => '¿Escaecisti la información de conexón?',
'createaccountmail' => 'per e-mail',
'createaccountreason' => 'Motivu:',
'badretype' => "Les claves qu'escribisti nun concuayen.",
@@ -488,13 +487,15 @@ Por favor escueyi un nome diferente.",
'createaccounterror' => 'Nun se pudo crear la cuenta: $1',
'nocookiesnew' => "La cuenta d'usuariu ta creada, pero nun tas identificáu. {{SITENAME}} usa cookies pa identificar a los usuarios. Tienes les cookies deshabilitaes. Por favor actívales y depués identifícate col to nuevu nome d'usuariu y la clave.",
'nocookieslogin' => '{{SITENAME}} usa cookies pa identificar a los usuarios. Tienes les cookies deshabilitaes. Por favor actívales y inténtalo otra vuelta.',
+'nocookiesfornew' => "La cuenta nun se creó, porque nun pudimos confirmar l'orixe.
+Asegúrate de tener activaes les cookies, recarga esta páxina y vuelve a tentalo.",
'noname' => "Nun punxisti un nome d'usuariu válidu.",
'loginsuccesstitle' => 'Identificación correuta',
'loginsuccess' => "'''Quedasti identificáu en {{SITENAME}} como \"\$1\".'''",
'nosuchuser' => 'Nun hai usuariu dalu col nome "$1".
Los nomes d\'usuariu distinguen mayúscules y minúscules.
Comprueba la ortografía o [[Special:UserLogin/signup|crea una cuenta d\'usuariu nueva]].',
-'nosuchusershort' => 'Nun hai nengún usuariu col nome "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Nun hai nengún usuariu col nome "$1".
Mira que tea bien escritu.',
'nouserspecified' => "Has especificar un nome d'usuariu.",
'login-userblocked' => 'Esti usuariu ta bloquiáu. Nun se permite la conexón.',
@@ -541,13 +542,14 @@ Pues inorar esti mensaxe si esta cuenta se creó por error.',
'usernamehasherror' => "El nome d'usuariu nun pue contener caráuteres hash",
'login-throttled' => "Ficisti demasiaos intentos recientes de conexón.
Por favor espera enantes d'intentalo otra vuelta.",
+'login-abort-generic' => 'Falló la to identificación - Encaboxao',
'loginlanguagelabel' => 'Llingua: $1',
'suspicious-userlogout' => "Se negó la petición de desconexón porque paez que vien d'un restolador frañáu o d'un proxy de caché.",
# E-mail sending
'php-mail-error-unknown' => 'Error desconocíu na función mail() de PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Camudar la clave',
'resetpass_announce' => "T'identificasti con una clave temporal unviada per corréu.
P'acabar d'identificate has d'escribir equí una clave nueva:",
@@ -567,6 +569,39 @@ Coneutando dafechu...',
Seique yá camudasti la clave temporal o que solicitasti otra nueva.",
'resetpass-temp-password' => 'Clave temporal:',
+# Special:PasswordReset
+'passwordreset' => 'Reaniciar contraseña',
+'passwordreset-text' => 'Completa esti formulariu pa recibir un corréu que te recuerde los detalles de la to cuenta.',
+'passwordreset-legend' => 'Reaniciar contraseña',
+'passwordreset-disabled' => 'Los reanicios de contraseña tan desactivaos nesta wiki.',
+'passwordreset-pretext' => "{{PLURAL:$1||Escribi una de les partes de los datos d'abaxo}}",
+'passwordreset-username' => "Nome d'usuariu:",
+'passwordreset-domain' => 'Dominiu:',
+'passwordreset-email' => 'Direición de corréu:',
+'passwordreset-emailtitle' => 'Detalles de la cuenta en {{SITENAME}}',
+'passwordreset-emailtext-ip' => "Dalguién (seique tu, dende la direición IP $1) pidió un recordatoriu cola
+información de la to cuenta de {{SITENAME}} ($4).
+{{PLURAL:$3|La siguiente cuenta d'usuariu ta asociada|Les siguientes cuentes d'usuariu tan asociaes}} con esta direición de corréu:
+
+$2
+
+{{PLURAL:$3|Esta contraseña temporal caducará|Estes contraseñes temporales caducarán}} {{PLURAL:$5|nun día|en $5 díes}}.
+Tendríes d'entrar al sistema y escoyer una contraseña nueva agora. Si esta
+solicitú ye d'otru o recordasti la contraseña orixinal y nun quies camudala,
+inora esti mensaxe y sigui emplegando la contraseña antigua.",
+'passwordreset-emailtext-user' => "L'usuariu $1 de {{SITENAME}} pidió un recordatoriu cola información de la to cuenta de {{SITENAME}} ($4).
+{{PLURAL:$3|La siguiente cuenta d'usuariu ta asociada|Les siguientes cuentes d'usuariu tan asociaes}} con esta direición de corréu:
+
+$2
+
+{{PLURAL:$3|Esta contraseña temporal caducará|Estes contraseñes temporales caducarán}} {{PLURAL:$5|nun día|en $5 díes}}.
+Tendríes d'entrar al sistema y escoyer una contraseña nueva agora. Si esta
+solicitú ye d'otru o recordasti la contraseña orixinal y nun quies camudala,
+inora esti mensaxe y sigui emplegando la contraseña antigua.",
+'passwordreset-emailelement' => "Nome d'usuariu: $1
+Contraseña temporal: $2",
+'passwordreset-emailsent' => "S'unvió un corréu de recordatoriu.",
+
# Edit page toolbar
'bold_sample' => 'Testu en negrina',
'bold_tip' => 'Testu en negrina',
@@ -578,8 +613,6 @@ Seique yá camudasti la clave temporal o que solicitasti otra nueva.",
'extlink_tip' => "Enllaz esternu (recuerda'l prefixu http://)",
'headline_sample' => 'Testu de cabecera',
'headline_tip' => 'Testu cabecera nivel 2',
-'math_sample' => 'Inxertar fórmula equí',
-'math_tip' => 'Fórmula matemática',
'nowiki_sample' => 'Pon equí testu ensin formatu',
'nowiki_tip' => "Inora'l formatu wiki",
'image_sample' => 'Exemplu.jpg',
@@ -666,7 +699,7 @@ o [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar ésta equí]</span>.',
'noarticletext-nopermission' => 'Anguaño nun hai testu nesta páxina.
Pues [[Special:Search/{{PAGENAME}}|buscar esti títulu de páxina]] n\'otres páxines,
o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar los rexistros rellacionaos]</span>.',
-'userpage-userdoesnotexist' => 'La cuenta d\'usuariu "$1" nun ta rexistrada. Por favor asegúrate de que quies crear/editar esta páxina.',
+'userpage-userdoesnotexist' => 'La cuenta d\'usuariu "<nowiki>$1</nowiki>" nun ta rexistrada. Por favor asegúrate de que quies crear/editar esta páxina.',
'userpage-userdoesnotexist-view' => 'La cuenta d\'usuariu "$1" nun ta rexistrada.',
'blocked-notice-logextract' => "Esti usuariu anguaño ta bloquiáu.
La cabera entrada del rexistru de bloqueos s'ufre darréu pa referencia:",
@@ -700,6 +733,7 @@ Inténtalo otra vuelta. Si nun se t'arregla, intenta salir y volver a rexistrate
'token_suffix_mismatch' => "'''La to edición nun s'aceutó porque'l to navegador mutiló los caráuteres de puntuación nel editor.'''
La edición nun foi aceutada pa prevenir corrupciones na páxina de testu.
Dacuando esto pasa por usar un serviciu proxy anónimu basáu en web que tenga fallos.",
+'edit_form_incomplete' => "'''Delles partes del formulariu d'edición nun llegaron al sirvidor; comprueba que les ediciones tean intactes y vuelve a tentalo.'''",
'editing' => 'Editando $1',
'editingsection' => 'Editando $1 (seición)',
'editingcomment' => 'Editando $1 (seición nueva)',
@@ -934,8 +968,8 @@ Comprueba los rexistros, por favor.",
# Suppression log
'suppressionlog' => 'Rexistru de supresiones',
-'suppressionlogtext' => "Embaxo amuésase una llista de los esborraos y bloqueos rellacionaos con conteníu ocultu a los alministradores.
-Mira'l [[Special:IPBlockList|rexistru de bloqueos d'IP]] pa ver una llista de los bloqueos activos anguaño.",
+'suppressionlogtext' => "Embaxo hai una llista de desanicios y bloqueos rellacionaos con conteníu anubríu a los alministradores.
+Mira la [[Special:BlockList|llista de bloqueos d'IP]] pa ver la llista de los bloqueos y torgues activos anguaño.",
# History merging
'mergehistory' => 'Fusionar historiales de páxina',
@@ -1042,12 +1076,13 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
'searchdisabled' => "La busca en {{SITENAME}} ta desactivada. Mentanto, pues buscar en Google. Has fixate en que'l conteníu de los sos índices de {{SITENAME}} pue tar desfasáu.",
# Quickbar
-'qbsettings' => 'Barra rápida',
-'qbsettings-none' => 'Nenguna',
-'qbsettings-fixedleft' => 'Fixa a manzorga',
-'qbsettings-fixedright' => 'Fixa a mandrecha',
-'qbsettings-floatingleft' => 'Flotante a manzorga',
-'qbsettings-floatingright' => 'Flotante a mandrecha',
+'qbsettings' => 'Barra rápida',
+'qbsettings-none' => 'Nenguna',
+'qbsettings-fixedleft' => 'Fixa a manzorga',
+'qbsettings-fixedright' => 'Fixa a mandrecha',
+'qbsettings-floatingleft' => 'Flotante a manzorga',
+'qbsettings-floatingright' => 'Flotante a mandrecha',
+'qbsettings-directionality' => "Fixa, según la direición d'escritura de la to llingua",
# Preferences page
'preferences' => 'Preferencies',
@@ -1058,9 +1093,10 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
'changepassword' => 'Camudar clave',
'prefs-skin' => 'Apariencia',
'skin-preview' => 'Entever',
-'prefs-math' => 'Fórmules matemátiques',
'datedefault' => 'Ensin preferencia',
+'prefs-beta' => 'Carauterístiques beta',
'prefs-datetime' => 'Fecha y hora',
+'prefs-labs' => 'Carauterístiques esperimentales',
'prefs-personal' => 'Datos personales',
'prefs-rc' => 'Cambeos recientes',
'prefs-watchlist' => 'Llista de vixilancia',
@@ -1082,8 +1118,6 @@ Asegúrate de qu'esti cambéu caltenga la continuidá del históricu de la páxi
'columns' => 'Columnes:',
'searchresultshead' => 'Guetar',
'resultsperpage' => "Resultaos p'amosar per páxina:",
-'contextlines' => "Llinies p'amosar per resultáu:",
-'contextchars' => 'Carauteres de testu per llinia:',
'stub-threshold' => 'Llímite superior pa considerar como <a href="#" class="stub">enllaz a entamu</a> (bytes):',
'stub-threshold-disabled' => 'Desactivao',
'recentchangesdays' => "Díes qu'amosar nos cambeos recientes:",
@@ -1096,7 +1130,7 @@ Equí tienes un valor al debalu que pues usar: $1",
'savedprefs' => 'Les tos preferencies quedaron grabaes.',
'timezonelegend' => 'Estaya horaria:',
'localtime' => 'Hora llocal:',
-'timezoneuseserverdefault' => 'Usar el sirvidor preferíu',
+'timezoneuseserverdefault' => 'Usar la predeterminada de la wiki ($1)',
'timezoneuseoffset' => 'Otru (especificar diferencia)',
'timezoneoffset' => 'Diferencia¹:',
'servertime' => 'Hora del sirvidor:',
@@ -1130,7 +1164,7 @@ Esto nun se pue desfacer.',
'prefs-memberingroups' => 'Miembru {{PLURAL:$1|del grupu|de los grupos}}:',
'prefs-registration' => 'Hora del rexistru:',
'yourrealname' => 'Nome real:',
-'yourlanguage' => 'Idioma de los menús:',
+'yourlanguage' => 'Llingua:',
'yourvariant' => 'Variante llingüística del conteníu:',
'yournick' => 'Firma:',
'prefs-help-signature' => 'Los comentarios nes páxines d\'alderique habría que roblales con "<nowiki>~~~~</nowiki>" que se convertirán na to robla y una marca de tiempu.',
@@ -1145,8 +1179,8 @@ Ha tener menos de $1 {{PLURAL:$1|caráuter|carauteres}}.',
Esta información sedrá pública.",
'email' => 'Corréu',
'prefs-help-realname' => "El nome real ye opcional y si decides conseñalu va ser usáu p'atribuyite'l to trabayu.",
-'prefs-help-email' => "La direición de corréu ye opcional, pero permite unviate una clave nueva si escaeces la to clave.
-Tamién pues escoyer permitir a los demás contautar contigo al traviés de la to páxina d'usuariu o d'alderique ensin necesidá de revelar la to identidá.",
+'prefs-help-email' => 'La direición de corréu ye opcional, pero ye necesaria pa unviate una clave nueva si escaeces la tuya.',
+'prefs-help-email-others' => "Tamién pues escoyer permitir qu'otres persones contauten contigo pela to páxina d'usuariu o la d'alderique ensin necesidá de revelar la to identidá.",
'prefs-help-email-required' => 'Necesítase una direición de corréu electrónicu.',
'prefs-info' => 'Información básica',
'prefs-i18n' => 'Internacionalización',
@@ -1241,7 +1275,7 @@ Tamién pues escoyer permitir a los demás contautar contigo al traviés de la t
'right-deleterevision' => 'Eliminar y restaurar revisiones específiques de les páxines',
'right-deletedhistory' => 'Ver entraes eliminaes del historial ensin testu asociáu',
'right-deletedtext' => 'Ver el testu desaniciáu y los cambeos ente versiones desaniciaes',
-'right-browsearchive' => 'Buscar páxines esborraes',
+'right-browsearchive' => 'Buscar páxines desaniciaes',
'right-undelete' => 'Restaurar una páxina',
'right-suppressrevision' => 'Revisar y restaurar revisiones ocultes a los alministradores',
'right-suppressionlog' => 'Ver rexistros privaos',
@@ -1271,15 +1305,15 @@ Tamién pues escoyer permitir a los demás contautar contigo al traviés de la t
'right-userrights' => "Editar tolos drechos d'usuariu",
'right-userrights-interwiki' => "Editar los drechos d'usuariu d'usuarios d'otros sitios wiki",
'right-siteadmin' => 'Candar y descandar la base de datos',
-'right-reset-passwords' => "Reaniciar contraseñes d'otros usuarios",
'right-override-export-depth' => 'Esportar páxines, incluyendo páxines enllazaes fasta una fondura de 5',
'right-sendemail' => 'Unviar corréu a otros 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',
-'rightsnone' => '(nengún)',
+'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',
+'rightsnone' => '(nengún)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'lleer esta páxina',
@@ -1300,7 +1334,7 @@ Tamién pues escoyer permitir a los demás contautar contigo al traviés de la t
'action-delete' => 'eliminar esta páxina',
'action-deleterevision' => 'eliminar esta revisión',
'action-deletedhistory' => "ver l'historial elimináu d'esta páxina",
-'action-browsearchive' => 'buscar páxines esborraes',
+'action-browsearchive' => 'buscar páxines desaniciaes',
'action-undelete' => 'restaurar esta páxina',
'action-suppressrevision' => 'revisar y restaurar esta revisión oculta',
'action-suppressionlog' => 'ver esti rexistru priváu',
@@ -1400,13 +1434,13 @@ Mira la [[Special:NewFiles|galería d'archivos nuevos]] pa una güeyada más vis
'minlength1' => "Los nomes d'archivu han tener a lo menos una lletra.",
'illegalfilename' => 'El nome d\'archivu "$1" contién carauteres non permitíos en títulos de páxina. Por favor renoma l\'archivu y xúbilu otra vuelta.',
'badfilename' => 'Nome de la imaxe camudáu a "$1".',
-'filetype-mime-mismatch' => 'La estensión del ficheru nun concasa cola triba MIME.',
+'filetype-mime-mismatch' => 'La estensión de ficheru ".$1" nun casa cola triba MIME detectada del ficheru ($2).',
'filetype-badmime' => 'Los ficheros de la triba MIME "$1" nun tienen permitida la xubida.',
'filetype-bad-ie-mime' => 'Nun se pue xubir esti ficheru porque Internet Explorer detectalu como "$1", que nun ta permitíu y pue ser una triba de ficheru peligrosa.',
'filetype-unwanted-type' => "'''\".\$1\"''' ye una triba de ficheru non recomendáu.
{{PLURAL:\$3|La triba de ficheru preferida ye|Les tribes de ficheru preferíes son}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' nun ye una triba de ficheru permitida.
-{{PLURAL:\$3|La triba de ficheru permitida ye|Les tribes de ficheru permitíes son}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|nun ye una triba de ficheru permitida|nun son tribes de ficheru permitíes}}.
+{{PLURAL:$3|La triba de ficheru permitida ye|Les tribes de ficheru permitíes son}} $2.',
'filetype-missing' => 'El ficheru nun tien estensión (como ".jpg").',
'empty-file' => "El ficheru qu'unviasti taba baleru.",
'file-too-large' => "El ficheru qu'unviasti yera demasiao grande.",
@@ -1425,6 +1459,7 @@ esti ficheru tien $2.',
'emptyfile' => "El ficheru que xubisti paez tar vaciu.
Esto podría ser pola mor d'un enquivocu nel nome del ficheru.
Por favor, camienta si daveres quies xubir esti archivu.",
+'windows-nonascii-filename' => 'Esta wiki nun permite nomes de ficheru con caráuteres especiales.',
'fileexists' => "Yá esiste un ficheru con esti nome, por favor comprueba '''<tt>[[:$1]]</tt>''' si nun tas seguru de querer camudalu.
[[$1|thumb]]",
'filepageexists' => "La páxina de descripción d'esti ficheru yá se creó en '''<tt>[[:$1]]</tt>''', pero anguaño nun esiste nengún ficheru con esti nome.
@@ -1465,6 +1500,8 @@ Por favor, comprueba la configuración de file_uploads.',
'uploadscripted' => 'Esti ficheru contién códigu HTML o scripts que se puen interpretar equivocadamente por un navegador.',
'uploadvirus' => '¡El ficheru tien un virus!
Detalles: $1',
+'uploadjava' => 'El ficheru ye un archivu ZIP que contién un ficheru .class de Java.
+Xubir ficheros Java nun ta permitío, porque puen facer que se salten les torgues de seguridá.',
'upload-source' => 'Ficheru orixe',
'sourcefilename' => "Nome d'orixe:",
'sourceurl' => "URL d'orixe:",
@@ -1475,10 +1512,6 @@ Detalles: $1',
'watchthisupload' => 'Vixilar esti ficheru',
'filewasdeleted' => 'Yá se xubió y se desanició depués un ficheru con esti nome.
Habríes comprobar el $1 enantes de volver a xubilu.',
-'upload-wasdeleted' => "'''Avisu: Tas xubiendo un ficheru que yá se desanició anteriormente.'''
-
-Habríes considerar si ye afechisco continuar xubiendo esti ficheru.
-Por comodidá s'amuesa equí'l rexistru de desaniciu d'esti ficheru:",
'filename-bad-prefix' => "El nome del ficheru que tas xubiendo entama con '''\"\$1\"''', que ye un nome non descriptivu que de vezu conseñen automáticamente les cámares dixitales.
Por favor escueyi un nome más descriptivu pal to ficheru.",
'filename-prefix-blacklist' => ' #<!-- dexa esta llinia exactamente como ta --> <pre>
@@ -1517,12 +1550,29 @@ Si'l problema persiste, contauta con un [[Special:ListUsers/sysop|alministrador]
'upload-unknown-size' => 'Tamañu desconocíu',
'upload-http-error' => 'Hebo un error HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => "S'alcontró un fallu al abrir el ficheru pa les comprobaciones del ZIP.",
+'zip-wrong-format' => 'El ficheru especificáu nun yera un ficheru ZIP.',
+'zip-bad' => 'El ficheru ZIP ta corrompíu o ye imposible lleelu.
+Nun se pudo comprobar la seguridá de mou afayadizu.',
+'zip-unsupported' => "El ficheru ye un archivu ZIP qu'usa carauterístiques ensin encontu en MediaWiki.
+Nun se pue comprobar la seguridá de mou afayadizu.",
+
+# Special:UploadStash
+'uploadstash' => 'Ficheros na reserva',
+'uploadstash-summary' => "Esta páxina ufre accesu a ficheros que tan xubíos (o en procesu de xubía), pero qu'entá nun s'espublizaron na wiki. Estos ficheros nun son visibles pa naide, sacante l'usuariu que los xubió.",
+'uploadstash-clear' => 'Desaniciar los ficheros de la reserva',
+'uploadstash-nofiles' => 'Nun tienes ficheros na reserva.',
+'uploadstash-badtoken' => 'Nun se pudo facer esa operación, seique porque caducó la identificación pa editar. Vuelvi a intentalo.',
+'uploadstash-errclear' => 'Nun se pudieron desaniciar los ficheros.',
+'uploadstash-refresh' => 'Anovar la llista de ficheros',
+
# img_auth script messages
'img-auth-accessdenied' => 'Accesu denegáu',
-'img-auth-nopathinfo' => 'Falta PATH_INFO.
+'img-auth-nopathinfo' => "Falta PATH_INFO.
El sirvidor nun ta configuráu pa pasar esta información.
Pue tar basáu en CGI y nun tener sofitu pa img_auth.
-Visita http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Ver autorización d'imaxes.]",
'img-auth-notindir' => 'El camín solicitáu nun ta nel direutoriu de xubíes configuráu.',
'img-auth-badtitle' => 'Nun se pue construir un títulu validu dende "$1".',
'img-auth-nologinnWL' => 'Nun tas coneutáu y "$1" nun ta na llista blanca.',
@@ -1597,7 +1647,7 @@ La llista siguiente amuesa{{PLURAL:$1|'l primer enllaz de páxina| los primeros
Hai disponible una [[Special:WhatLinksHere/$2|llista completa]].",
'nolinkstoimage' => "Nun hai páxines qu'enllacien a esti archivu.",
'morelinkstoimage' => 'Ver [[Special:WhatLinksHere/$1|más enllaces]] a esti archivu.',
-'redirectstofile' => '{{PLURAL:$1|El siguiente archivu redirixe|Los siguientes $1 archivos redirixen}} a esti archivu:',
+'linkstoimage-redirect' => '$1 (redireición de ficheru) $2',
'duplicatesoffile' => "{{PLURAL:$1|El siguiente archivu ye un duplicáu|Los siguientes $1 archivos son duplicaos}} d'esti archivu ([[Special:FileDuplicateSearch/$2|más detalles]]):",
'sharedupload' => 'El ficheru ye de $1 y pueden que tean usandolu otros proyeutos.',
'sharedupload-desc-there' => 'Esti ficheru ye de $1 y puen usalu otros proyeutos.
@@ -1622,7 +1672,7 @@ La descripción de la [páxina de descripción del ficheru $2] s'amuesa darréu.
'filerevert-badversion' => "Nun hai nenguna versión llocal previa d'esti archivu cola fecha conseñada.",
# File deletion
-'filedelete' => 'Esborrar $1',
+'filedelete' => 'Desaniciar $1',
'filedelete-legend' => 'Esborrar archivu',
'filedelete-intro' => "Tas a piques d'esborrar el ficheru '''[[Media:$1|$1]]''' xunto con tol so historial.",
'filedelete-intro-old' => "Tas esborrando la versión de '''[[Media:$1|$1]]''' del [$4 $3 a les $2].",
@@ -1687,16 +1737,17 @@ Alcuérdate de comprobar otros enllaces a les plantíes enantes d'esborrales.",
'statistics-users-active-desc' => 'Usuarios que realizaron una aición {{PLURAL:$1|nel caberu día|nos caberos $1 díes}}',
'statistics-mostpopular' => 'Páxines más vistes',
-'disambiguations' => 'Páxines de dixebra',
+'disambiguations' => "Páxines qu'enllacen con páxines de dixebra",
'disambiguationspage' => 'Template:dixebra',
'disambiguations-text' => "Les siguientes páxines enllacien a una '''páxina de dixebra'''. En cuenta d'ello habríen enllaciar al artículu apropiáu.<br />Una páxina considérase de dixebra si usa una plantía que tea enllaciada dende [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Redireiciones dobles',
-'doubleredirectstext' => 'Esta páxina llista páxines que redireicionen a otres páxines de redireición.
+'doubleredirects' => 'Redireiciones dobles',
+'doubleredirectstext' => 'Esta páxina llista páxines que redireicionen a otres páxines de redireición.
Cada filera contién enllaces a la primer y segunda redireición, asina como al oxetivu de la segunda redireición, que de vezu ye la páxina oxetivu "real", onde tendría d\'empobinar la primer redireición.
Les entraes <del>tachaes</del> tan resueltes.',
-'double-redirect-fixed-move' => '[[$1]] foi treslladáu, agora ye una redireición haza [[$2]]',
-'double-redirect-fixer' => 'Iguador de redireiciones',
+'double-redirect-fixed-move' => '[[$1]] foi treslladáu, agora ye una redireición haza [[$2]]',
+'double-redirect-fixed-maintenance' => 'Iguando la doble redireición de [[$1]] a [[$2]].',
+'double-redirect-fixer' => 'Iguador de redireiciones',
'brokenredirects' => 'Redireiciones rotes',
'brokenredirectstext' => 'Les siguientes redireiciones enllacien a páxines non esistentes:',
@@ -1773,6 +1824,7 @@ Date cuenta de qu'otros sitios web puen enllazar a un ficheru con una URL direut
'pager-newer-n' => '{{PLURAL:$1|1 siguiente|$1 siguientes}}',
'pager-older-n' => '{{PLURAL:$1|1 anterior|$1 anteriores}}',
'suppress' => 'Güeyador',
+'querypage-disabled' => 'Esta páxina especial ta desactivada por razones de rindimientu.',
# Book sources
'booksources' => 'Fontes de llibros',
@@ -1782,8 +1834,8 @@ Date cuenta de qu'otros sitios web puen enllazar a un ficheru con una URL direut
'booksources-invalid-isbn' => 'El códigu ISBN que puxisti nun paez que valga; mira que te vien copiáu de la fonte orixinal.',
# Special:Log
-'specialloguserlabel' => 'Usuariu:',
-'speciallogtitlelabel' => 'Títulu:',
+'specialloguserlabel' => 'Pol usuariu:',
+'speciallogtitlelabel' => 'Col títulu:',
'log' => 'Rexistros',
'all-logs-page' => 'Tolos rexistros públicos',
'alllogstext' => "Visualización combinada de tolos rexistros disponibles de {{SITENAME}}.
@@ -1823,11 +1875,13 @@ Ver tamién les [[Special:WantedCategories|categoríes más buscaes]].",
'sp-deletedcontributions-contribs' => 'contribuciones',
# Special:LinkSearch
-'linksearch' => 'Enllaces esternos',
+'linksearch' => "Gueta d'enllaces esternos",
'linksearch-pat' => 'Patrón de busca:',
'linksearch-ns' => 'Espaciu de nomes:',
'linksearch-ok' => 'Guetar',
-'linksearch-text' => 'Puen usase comodinos como "*.wikipedia.org".<br />Protocolos almitíos: <tt>$1</tt>',
+'linksearch-text' => 'Se puen usar comodinos como "*.wikipedia.org".
+Necesita polo menos un dominiu de primer nivel, como "*.org".<br />
+Protocolos almitíos: <tt>$1</tt> (nun amiestes dengún d\'estos na to gueta).',
'linksearch-line' => '$1 enllaciáu dende $2',
'linksearch-error' => 'Los comodinos namái puen apaecer al entamu del nome del güéspede.',
@@ -1890,6 +1944,10 @@ La direición de corréu electrónicu qu'especificasti nes [[Special:Preferences
'noemailtext' => 'Esti usuariu nun especificó una direición de corréu válida.',
'nowikiemailtitle' => "Nun se permite'l corréu electrónicu",
'nowikiemailtext' => "Esti usuariu nun quier recibir correos d'otros usuarios.",
+'emailnotarget' => "Nome d'usuariu del destinatariu non esistente o inválidu.",
+'emailtarget' => "Escribi'l nome d'usuariu del destinatariu",
+'emailusername' => "Nome d'usuariu:",
+'emailusernamesubmit' => 'Unviar',
'email-legend' => 'Unviar un corréu electrónicu a otru usuariu de {{SITENAME}}',
'emailfrom' => 'De:',
'emailto' => 'A:',
@@ -1914,11 +1972,11 @@ La direición de corréu electrónicu qu'especificasti nes [[Special:Preferences
'watchlistanontext' => 'Por favor $1 pa ver o editar entraes na to llista de vixilancia.',
'watchnologin' => 'Non identificáu',
'watchnologintext' => 'Tienes que tar [[Special:UserLogin|identificáu]] pa poder camudar la to llista de vixilancia.',
-'addedwatch' => 'Añadida a la llista de vixilancia',
+'addwatch' => 'Amestar a la llista de vixilancia',
'addedwatchtext' => 'Añadióse la páxina "[[:$1]]" a la to [[Special:Watchlist|llista de vixilancia]]. Los cambeos nesta páxina y la so páxina d\'alderique asociada van salite en negrina na llista de [[Special:RecentChanges|cambeos recientes]] pa que seya más fácil de vela.
Si más tarde quies quitala de la llista de vixilancia calca en "Dexar de vixilar" nel menú llateral.',
-'removedwatch' => 'Eliminada de la llista de vixilancia',
+'removewatch' => 'Desaniciar de la llista de vixilancia',
'removedwatchtext' => 'Desapuntóse la páxina "[[:$1]]" de la [[Special:Watchlist|to llista de vixilancia]].',
'watch' => 'Vixilar',
'watchthispage' => 'Vixilar esta páxina',
@@ -1939,8 +1997,9 @@ Si más tarde quies quitala de la llista de vixilancia calca en "Dexar de vixila
'watchlist-options' => 'Opciones de la llista de vixilancia',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Vixilando...',
-'unwatching' => 'Dexando de vixilar...',
+'watching' => 'Vixilando...',
+'unwatching' => 'Dexando de vixilar...',
+'watcherrortext' => 'Hebo un fallu al camudar la configuración de la to llista de vixilancia pa «$1».',
'enotif_mailer' => 'Notificación de corréu de {{SITENAME}}',
'enotif_reset' => 'Marcar toles páxines visitaes',
@@ -1955,7 +2014,7 @@ Si más tarde quies quitala de la llista de vixilancia calca en "Dexar de vixila
'enotif_body' => 'Estimáu $WATCHINGUSERNAME,
-La páxina de {{SITENAME}} $PAGETITLE foi $CHANGEDORCREATED el $PAGEEDITDATE por $PAGEEDITOR, vete $PAGETITLE_URL pa ver la versión actual.
+La páxina de {{SITENAME}} $PAGETITLE foi $CHANGEDORCREATED el $PAGEEDITDATE por $PAGEEDITOR, mira $PAGETITLE_URL pa ver la versión actual.
$NEWPAGE
@@ -1965,19 +2024,22 @@ Ponte\'n contautu col editor:
corréu: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-En casu de producise más cambeos, nun habrá más notificaciones a nun ser que visites esta páxina. Tamién podríes restablecer na to llista de vixilancia los marcadores de notificación de toles páxines que tengas vixilaes.
+En casu de producise más cambeos, nun habrá más notificaciones a nun ser que visites esta páxina. Tamién podríes reaniciar na to llista de vixilancia los marcadores de notificación de toles páxines que tengas vixilaes.
- El to abertable sistema de notificación de {{SITENAME}}
+El to abertable sistema de notificación de {{SITENAME}}
--
+Pa camudar les preferencies d\'avisos per corréu, visita
+{{canonicalurl:{{#special:Preferences}}}}
+
Pa camudar la configuración de la to llista de vixilancia, visita
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Pa desaniciar la páxina de la to llista de vixilancia, visita
$UNWATCHURL
Más ayuda y sofitu:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Esborrar páxina',
@@ -1986,14 +2048,14 @@ Más ayuda y sofitu:
'excontentauthor' => "el conteníu yera: '$1' (y l'únicu autor yera '[[Special:Contributions/$2|$2]]')",
'exbeforeblank' => "el conteníu enantes de dexar en blanco yera: '$1'",
'exblank' => 'la páxina taba vacia',
-'delete-confirm' => 'Esborrar "$1"',
+'delete-confirm' => 'Desaniciar «$1»',
'delete-legend' => 'Desaniciar',
'historywarning' => "'''Avisu:'''' La páxina que vas desaniciar tien un historial con aproximadamente $1 {{PLURAL:$1|revisión|revisiones}}:",
'confirmdeletetext' => "Tas a piques d'esborrar una páxina xunto con tol so historial.
Por favor confirma que ye lo que quies facer, qu'entiendes les consecuencies, y que lo tas faciendo acordies coles [[{{MediaWiki:Policy-url}}|polítiques]].",
'actioncomplete' => 'Aición completada',
'actionfailed' => "Falló l'aición",
-'deletedtext' => 'Esborróse "<nowiki>$1</nowiki>".
+'deletedtext' => 'Esborróse "$1".
Mira en $2 la llista de les últimes páxines esborraes.',
'deletedarticle' => 'esborró "[[$1]]"',
'suppressedarticle' => 'suprimió "[[$1]]"',
@@ -2052,7 +2114,7 @@ Consulta la [[Special:ProtectedPages|llista de páxines protexíes]] pa ver les
'protect_expiry_invalid' => 'Caducidá non válida.',
'protect_expiry_old' => 'La fecha de caducidá ta pasada.',
'protect-unchain-permissions' => 'Desbloquiar les demás opciones de protección',
-'protect-text' => "Equí pues ver y camudar el nivel de proteición de la páxina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Equí pues ver y camudar el nivel de proteición de la páxina '''$1'''.",
'protect-locked-blocked' => "Nun pues camudar los niveles de proteición mentes teas bloquiáu. Esta
ye la configuración actual de la páxina '''$1''':",
'protect-locked-dblock' => "Los niveles de proteición nun puen ser camudaos pol mor d'un candáu activu de
@@ -2105,9 +2167,8 @@ Esta ye la configuración actual pa la páxina '''$1''':",
'viewdeletedpage' => 'Ver páxines esborraes',
'undeletepagetext' => "{{PLURAL:$1|La siguiente páxina foi esborrada pero tovía ta nel archivu y pue ser restauráu|Les $1 páxines siguientes foron esborraes pero tovía tán nel archivu y puen ser restauraes}}. L'archivu pue ser purgáu periódicamente.",
'undelete-fieldset-title' => 'Restaurar revisiones',
-'undeleteextrahelp' => "Pa restaurar tol historial de la páxina, deseleiciona toles caxelles y calca en '''''Restaurar'''''.
-Pa realizar una restauración selectiva, seleiciona les caxelles de la revisión que quies restaurar y calca en '''''Restaurar'''''.
-Calcando en '''''Llimpiar''''' quedarán vacios el campu de comentarios y toles caxelles.",
+'undeleteextrahelp' => "Pa restaurar l'historial ensembre de la páxina, desmarca toles caxelles y calca en '''''{{int:undeletebtn}}'''''.
+Pa realizar una restauración selectiva, seleiciona les caxelles de la revisión que quies restaurar y calca en '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|revisión archivada|revisiones archivaes}}',
'undeletehistory' => 'Si restaures la páxina, restauraránse toles revisiones al historial.
Si se creó una páxina col mesmu nome dende que fuera esborrada, les revisiones restauraes van apaecer nel historial anterior.',
@@ -2135,7 +2196,7 @@ revisión fuera restaurada o eliminada del archivu.",
Consulta'l [[Special:Log/delete|rexistru d'esborraos]] pa ver los esborraos y restauraciones de recién.",
'undelete-header' => "Mira nel [[Special:Log/delete|rexistru d'esborraos]] les páxines esborraes recién.",
-'undelete-search-box' => 'Buscar páxines esborraes',
+'undelete-search-box' => 'Buscar páxines desaniciaes',
'undelete-search-prefix' => "Amosar páxines qu'empecipien por:",
'undelete-search-submit' => 'Guetar',
'undelete-no-results' => "Nun s'atoparon páxines afechisques a la busca nel archivu d'esborraos.",
@@ -2151,9 +2212,12 @@ $1",
'undelete-show-file-submit' => 'Sí',
# Namespace form on various pages
-'namespace' => 'Espaciu de nomes:',
-'invert' => 'Invertir seleición',
-'blanknamespace' => '(Principal)',
+'namespace' => 'Espaciu de nomes:',
+'invert' => 'Invertir seleición',
+'tooltip-invert' => "Marca esta caxella p'anubrir los cambeos de les páxines pertenecientes al espaciu de nomes esbilláu (y al espaciu de nomes asociáu si se marcó)",
+'namespace_association' => 'Espaciu de nome asociáu',
+'tooltip-namespace_association' => "Marca esta caxella p'amestar tamién l'espaciu de nombres d'alderique o asuntu asociaos col espaciu de nomes seleicionáu",
+'blanknamespace' => '(Principal)',
# Contributions
'contributions' => 'Contribuciones del usuariu',
@@ -2203,12 +2267,14 @@ La cabera entrada del rexistru de bloqueos s'ufre darréu pa referencia:",
'whatlinkshere-filters' => 'Peñeres',
# Block/unblock
+'autoblockid' => 'Autobloquiar #$1',
+'block' => 'Bloquiar usuariu',
+'unblock' => 'Desbloquiar usuariu',
'blockip' => 'Bloquiar usuariu',
'blockip-title' => 'Bloquiar usuariu',
'blockip-legend' => 'Bloquiar usuariu',
'blockiptext' => "Usa'l siguiente formulariu pa bloquiar el permisu d'escritura a una IP o a un usuariu concretu.
Esto debería facese sólo pa prevenir vandalismu como indiquen les [[{{MediaWiki:Policy-url}}|polítiques]]. Da un motivu específicu (como por exemplu citar páxines que fueron vandalizaes).",
-'ipaddress' => 'Direición IP:',
'ipadressorusername' => "Direición IP o nome d'usuariu:",
'ipbexpiry' => 'Caducidá:',
'ipbreason' => 'Motivu:',
@@ -2221,7 +2287,7 @@ Esto debería facese sólo pa prevenir vandalismu como indiquen les [[{{MediaWik
** Comportamientu intimidatoriu o d'acosu
** Abusu de cuentes múltiples
** Nome d'usuariu inaceutable",
-'ipbanononly' => 'Bloquiar namái usuarios anónimos',
+'ipb-hardblock' => 'Torgar que los usuarios coneutaos editen dende esta direición IP',
'ipbcreateaccount' => 'Evitar creación de cuentes',
'ipbemailban' => "Torgar al usuariu l'unviu de corréu electrónicu",
'ipbenableautoblock' => "Bloquiar automáticamente la cabera direición IP usada por esti usuariu y toles IP posteriores dende les qu'intente editar",
@@ -2232,12 +2298,15 @@ Esto debería facese sólo pa prevenir vandalismu como indiquen les [[{{MediaWik
'ipbotherreason' => 'Motivu distintu/adicional:',
'ipbhidename' => "Anubrir el nome d'usuariu d'ediciones y llistes",
'ipbwatchuser' => "Vixilar les páxines d'usuariu y d'alderique d'esti usuariu",
-'ipballowusertalk' => "Permite a esti usuariu editar la páxina d'alderique propia mentes ta bloquiáu",
+'ipb-disableusertalk' => "Torgar qu'esti usuariu edite la so páxina d'alderique mentanto tea bloquiáu",
'ipb-change-block' => "Volver a bloquiar l'usuariu con estos parámetros",
+'ipb-confirm' => 'Confirmar bloquéu',
'badipaddress' => 'IP non válida',
'blockipsuccesssub' => 'Bloquéu fechu correctamente',
'blockipsuccesstext' => "Bloquióse al usuariu [[Special:Contributions/$1|$1]].
<br />Mira na [[Special:IPBlockList|llista d'IPs bloquiaes]] pa revisar los bloqueos.",
+'ipb-blockingself' => '¡Tas a piques de bloquiate tú mesmu! ¿Tas seguru de que quies facer eso?',
+'ipb-confirmhideuser' => 'Tas a piques de bloquiar un usuariu con "anubrir usuariu" activao. Esto desaniciará el nome del usuariu de tolos llistaos y entraes de los rexistros. ¿De xuro quies facer eso?',
'ipb-edit-dropdown' => 'Editar motivos de bloquéu',
'ipb-unblock-addr' => 'Desbloquiar $1',
'ipb-unblock' => "Desbloquiar un nome d'usuariu o direición IP",
@@ -2247,17 +2316,23 @@ Esto debería facese sólo pa prevenir vandalismu como indiquen les [[{{MediaWik
'unblockiptext' => "Usa'l formulariu d'abaxo pa restablecer l'accesu d'escritura a una direicion IP o a un nome d'usuariu previamente bloquiáu.",
'ipusubmit' => 'Desaniciar esti bloquéu',
'unblocked' => '[[User:$1|$1]] foi desbloquiáu',
+'unblocked-range' => '$1 se desbloquió',
'unblocked-id' => 'El bloquéu $1 foi elimináu',
+'blocklist' => 'Usuarios bloquiaos',
'ipblocklist' => 'Usuarios bloquiaos',
'ipblocklist-legend' => 'Atopar un usuariu bloquiáu',
-'ipblocklist-username' => "Nome d'usuariu o direición IP:",
-'ipblocklist-sh-userblocks' => '$1 los bloqueos de cuenta',
-'ipblocklist-sh-tempblocks' => '$1 los bloqueos temporales',
-'ipblocklist-sh-addressblocks' => "$1 los bloqueos d'IP simples",
+'blocklist-userblocks' => 'Anubrir los bloqueos de cuenta',
+'blocklist-tempblocks' => 'Anubrir los bloqueos temporales',
+'blocklist-addressblocks' => "Anubrir los bloqueos d'IP simples",
+'blocklist-timestamp' => "Marca d'hora",
+'blocklist-target' => 'Oxetivu',
+'blocklist-expiry' => 'Caduca',
+'blocklist-by' => 'Alministración de bloqueos',
+'blocklist-params' => 'Parámetros de bloquéu',
+'blocklist-reason' => 'Motivu',
'ipblocklist-submit' => 'Guetar',
'ipblocklist-localblock' => 'Bloquéu llocal',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Otru bloquéu|Otros bloqueos}}',
-'blocklistline' => '$1, $2 bloquió a $3 ($4)',
'infiniteblock' => 'pa siempre',
'expiringblock' => "caduca'l $1 a les $2",
'anononlyblock' => 'namái anón.',
@@ -2281,7 +2356,7 @@ El rexistru de desanicios s'ufre darréu pa referencia:",
'reblock-logentry' => 'camudó los parámetros de bloquéu de [[$1]] con una caducidá de $2 $3',
'blocklogtext' => "Esti ye un rexistru de los bloqueos y desbloqueos d'usuarios.
Les direcciones IP bloquiaes automáticamente nun salen equí.
-Pa ver los bloqueos qu'hai agora mesmo, mira na [[Special:IPBlockList|llista d'IP bloquiaes]].",
+Pa ver los bloqueos qu'hai agora mesmo, mira na [[Special:BlockList|llista d'IP bloquiaes]].",
'unblocklogentry' => 'desbloquió $1',
'block-log-flags-anononly' => 'namái usuarios anónimos',
'block-log-flags-nocreate' => 'creación de cuentes deshabilitada',
@@ -2295,9 +2370,9 @@ Pa ver los bloqueos qu'hai agora mesmo, mira na [[Special:IPBlockList|llista d'I
'ipb_expiry_temp' => "Los bloqueos de nome d'usuariu escondíos han ser permanentes.",
'ipb_hide_invalid' => 'Nun se pue desaniciar esta cuenta; seique tenga demasiaes ediciones.',
'ipb_already_blocked' => '"$1" yá ta bloqueáu',
-'ipb-needreblock' => '== Yá bloquiáu ==
-$1 yá ta bloquiáu. ¿Quies camudar los parámetros?',
+'ipb-needreblock' => '$1 yá ta bloquiáu. ¿Quies camudar los parámetros?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Otru bloquéu|Otros bloqueos}}',
+'unblock-hideuser' => "Nun pues desbloquiar esti usuariu, porque tien el nome d'usuariu anubríu.",
'ipb_cant_unblock' => "Error: Nun s'atopó'l bloquéu númberu $1. Seique yá fuera desbloquiáu.",
'ipb_blocked_as_range' => 'Error: La IP $1 nun ta bloquiada direutamente, polo que nun pue ser desloquiada. Sicasí, foi bloquiada como parte del intervalu $2, que pue ser desbloquiáu.',
'ip_range_invalid' => 'Rangu IP non válidu.',
@@ -2339,6 +2414,7 @@ na base de datos. Por favor confirma que ye lo quies facer.',
'unlockdbsuccesstext' => 'La base de datos foi descandada.',
'lockfilenotwritable' => "L'archivu de candáu de la base de datos nun ye escribible. Pa candar o descandar la base de datos esti tien que poder ser modificáu pol sirvidor.",
'databasenotlocked' => 'La base de datos nun ta candada.',
+'lockedbyandtime' => '(por $1 el $2 a les $3)',
# Move page
'move-page' => 'Treslladar $1',
@@ -2463,7 +2539,7 @@ Por último, tamién pues usar un enllaz: p.e. [[{{#Special:Export}}/{{MediaWiki
'allmessagesdefault' => 'Testu por defeutu',
'allmessagescurrent' => 'Testu actual',
'allmessagestext' => 'Esta ye una llista de los mensaxes de sistema disponibles nel espaciu de nomes de MediaWiki.
-Por favor visita [http://www.mediawiki.org/wiki/Localisation Llocalización de MediaWiki] y [http://translatewiki.net translatewiki.net] si quies contribuyer a la llocalización xenérica de MediaWiki.',
+Por favor visita [//www.mediawiki.org/wiki/Localisation Llocalización de MediaWiki] y [//translatewiki.net translatewiki.net] si quies contribuyer a la llocalización xenérica de MediaWiki.',
'allmessagesnotsupportedDB' => "Nun pue usase '''{{ns:special}}:Allmessages''' porque '''\$wgUseDatabaseMessages''' ta deshabilitáu.",
'allmessages-filter-legend' => 'Peñerar',
'allmessages-filter' => 'Peñerar por estáu de personalización:',
@@ -2601,35 +2677,42 @@ Guárdalu nel ordenador y xúbilu equí.",
'tooltip-summary' => 'Escribi un resume curtiu',
# Stylesheets
-'common.css' => "/* Los CSS allugaos equí s'aplicarán a tolos aspeutos */",
-'standard.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Standard */',
-'nostalgia.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Nostalgia */',
-'cologneblue.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Cologne Blue */',
-'monobook.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Monobook */',
-'myskin.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu MySkin */',
-'chick.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Chick */',
-'simple.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Simple */',
-'modern.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Modern */',
-'vector.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Vector */',
-'print.css' => '/* Los CSS allugaos equí afeutarán a la salida pola imprentadora */',
-'handheld.css' => '/* Los CSS allugaos equí afeutarán a los preseos portátiles basaos nel aspeutu configuráu en $wgHandheldStyle */',
+'common.css' => "/* Los CSS allugaos equí s'aplicarán a tolos aspeutos */",
+'standard.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Standard */',
+'nostalgia.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Nostalgia */',
+'cologneblue.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Cologne Blue */',
+'monobook.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Monobook */',
+'myskin.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu MySkin */',
+'chick.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Chick */',
+'simple.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Simple */',
+'modern.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Modern */',
+'vector.css' => '/* Los CSS allugaos equí afeutarán a los usuarios del aspeutu Vector */',
+'print.css' => '/* Los CSS allugaos equí afeutarán a la salida pola imprentadora */',
+'handheld.css' => '/* Los CSS allugaos equí afeutarán a los preseos portátiles basaos nel aspeutu configuráu en $wgHandheldStyle */',
+'noscript.css' => '/* Los CSS allugaos equí afeutarán a los usuarios col JavaScript desactiváu */',
+'group-autoconfirmed.css' => '/* Los CSS allugaos equí afeutarán a los usuarios autoconfirmaos namái */',
+'group-bot.css' => '/* Los CSS allugaos equí afeutarán a los bots namái */',
+'group-sysop.css' => '/* Los CSS allugaos equí afeutarán a los sysops namái */',
+'group-bureaucrat.css' => '/* Los CSS allugaos equí afeutarán a los burócrates namái */',
# Scripts
-'common.js' => '/* Cualesquier JavaScript que tea equí se cargará pa tolos usuarios en cada carga de páxina. */',
-'standard.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Standard */',
-'nostalgia.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Nostalgia */',
-'cologneblue.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Cologne Blue */',
-'monobook.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu MonoBook */',
-'myskin.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu MySkin */',
-'chick.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Chick */',
-'simple.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Simple */',
-'modern.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Modern */',
-'vector.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Vector */',
+'common.js' => '/* Cualesquier JavaScript que tea equí se cargará pa tolos usuarios en cada carga de páxina. */',
+'standard.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Standard */',
+'nostalgia.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Nostalgia */',
+'cologneblue.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Cologne Blue */',
+'monobook.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu MonoBook */',
+'myskin.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu MySkin */',
+'chick.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Chick */',
+'simple.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Simple */',
+'modern.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Modern */',
+'vector.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios del aspeutu Vector */',
+'group-autoconfirmed.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los usuarios autoconfirmaos namái */',
+'group-bot.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los bots namái */',
+'group-sysop.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los sysops namái */',
+'group-bureaucrat.js' => '/* Cualesquier JavaScript que tea equí se cargará pa los burócrates namái */',
# Metadata
-'nodublincore' => 'Metadatos RDF Dublin Core desactivaos pa esti sirvidor.',
-'nocreativecommons' => 'Metadatos RDF Creative Commons desactivaos pa esti sirvidor.',
-'notacceptable' => 'El sirvidor de la wiki nun pue suplir los datos nun formatu llexible pol to navegador.',
+'notacceptable' => 'El sirvidor de la wiki nun pue suplir los datos nun formatu llexible pol to navegador.',
# Attribution
'anonymous' => '{{PLURAL:$1|Usuariu anónimu|Usuarios anónimos}} de {{SITENAME}}',
@@ -2653,12 +2736,17 @@ Probablemente tea causao por un enllaz a un sitiu esternu de la llista prieta.',
'spam_blanking' => 'Toles revisiones teníen enllaces a $1; dexando en blanco',
# Info page
-'infosubtitle' => 'Información de la páxina',
-'numedits' => "Númberu d'ediciones (páxina): $1",
-'numtalkedits' => "Númberu d'ediciones (páxina d'alderique): $1",
-'numwatchers' => "Númberu d'usuarios vixilando: $1",
-'numauthors' => "Númberu d'autores distintos (páxina): $1",
-'numtalkauthors' => "Númberu d'autores distintos (páxina d'alderique): $1",
+'pageinfo-title' => 'Información sobro "$1"',
+'pageinfo-header-edits' => 'Ediciones',
+'pageinfo-header-watchlist' => 'Llista de vixilancia',
+'pageinfo-header-views' => 'Vistes',
+'pageinfo-subjectpage' => 'Páxina',
+'pageinfo-talkpage' => "Páxina d'alderique",
+'pageinfo-watchers' => 'Númberu de vixilantes',
+'pageinfo-edits' => "Númberu d'ediciones",
+'pageinfo-authors' => "Númberu d'autores distintos",
+'pageinfo-views' => 'Númberu de visites',
+'pageinfo-viewsperedit' => 'Visites por edición',
# Skin names
'skinname-standard' => 'Clásicu',
@@ -2667,25 +2755,6 @@ Probablemente tea causao por un enllaz a un sitiu esternu de la llista prieta.',
'skinname-myskin' => 'MySkin',
'skinname-modern' => 'Modernu',
-# Math options
-'mw_math_png' => 'Renderizar siempre PNG',
-'mw_math_simple' => 'HTML si ye mui simple, o si non PNG',
-'mw_math_html' => 'HTML si ye posible, o si non PNG',
-'mw_math_source' => 'Dexalo como TeX (pa navegadores de testu)',
-'mw_math_modern' => 'Recomendao pa navegadores modernos',
-'mw_math_mathml' => 'MathML si ye posible (esperimental)',
-
-# Math errors
-'math_failure' => 'Fallu al revisar la fórmula',
-'math_unknown_error' => 'error desconocíu',
-'math_unknown_function' => 'función desconocida',
-'math_lexing_error' => 'Error lléxicu',
-'math_syntax_error' => 'error de sintaxis',
-'math_image_error' => 'Falló la conversión PNG; comprueba que tea bien la instalación de latex y dvipng (o dvips + gs + convert)',
-'math_bad_tmpdir' => "Nun se pue escribir o crear el direutoriu temporal 'math'",
-'math_bad_output' => "Nun se pue escribir o crear el direutoriu de salida 'math'",
-'math_notexvc' => "Falta l'executable 'texvc'; por favor mira 'math/README' pa configuralo.",
-
# Patrolling
'markaspatrolleddiff' => 'Marcar como supervisada',
'markaspatrolledtext' => 'Marcar esta páxina como supervisada',
@@ -2721,22 +2790,25 @@ $1",
'nextdiff' => 'Diferencia más recién →',
# Media information
-'mediawarning' => "'''Avisu''': Esta triba de ficheru pue contener códigu maliciosu.
+'mediawarning' => "'''Avisu''': Esta triba de ficheru pue contener códigu maliciosu.
Al executalu pues comprometer el to sistema.",
-'imagemaxsize' => "Llende del tamañu d'imaxe: <br />''(pa les páxines de descripción de ficheru)''",
-'thumbsize' => 'Tamañu de la muestra:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|páxina|páxines}}',
-'file-info' => "tamañu d'archivu: $1, triba MIME: $2",
-'file-info-size' => "$1 × $2 píxeles, tamañu d'archivu: $3, triba MIME: $4",
-'file-nohires' => '<small>Nun ta disponible con mayor resolución.</small>',
-'svg-long-desc' => "archivu SVG, $1 × $2 píxeles nominales, tamañu d'archivu: $3",
-'show-big-image' => 'Resolución completa',
-'show-big-image-thumb' => "<small>Tamañu d'esta previsualización: $1 × $2 píxeles</small>",
-'file-info-gif-looped' => 'animáu',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|cuadru|cuadros}}',
-'file-info-png-looped' => 'animáu',
-'file-info-png-repeat' => 'reproducíu $1 {{PLURAL:$1|vez|veces}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|cuadru|cuadros}}',
+'imagemaxsize' => "Llende del tamañu d'imaxe: <br />''(pa les páxines de descripción de ficheru)''",
+'thumbsize' => 'Tamañu de la muestra:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|páxina|páxines}}',
+'file-info' => "tamañu d'archivu: $1, triba MIME: $2",
+'file-info-size' => "$1 × $2 píxeles, tamañu d'archivu: $3, triba MIME: $4",
+'file-info-size-pages' => '$1 × $2 pixels, tamañu del ficheru: $3, triba MIME: $4, $5 {{PLURAL:$5|páxina|páxines}}',
+'file-nohires' => '<small>Nun ta disponible con mayor resolución.</small>',
+'svg-long-desc' => "archivu SVG, $1 × $2 píxeles nominales, tamañu d'archivu: $3",
+'show-big-image' => 'Resolución completa',
+'show-big-image-preview' => "<small>Tamañu d'esta previsualización: $1.</small>",
+'show-big-image-other' => '<small>Otres resoluciones: $1.</small>',
+'show-big-image-size' => '$1 × $2 pixels',
+'file-info-gif-looped' => 'animáu',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|cuadru|cuadros}}',
+'file-info-png-looped' => 'animáu',
+'file-info-png-repeat' => 'reproducíu $1 {{PLURAL:$1|vez|veces}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|cuadru|cuadros}}',
# Special:NewFiles
'newimages' => "Galería d'imáxenes nueves",
@@ -2760,16 +2832,21 @@ Namái tienen en cuenta los elementos de llista (llinies qu'emprimen por un *).
'metadata-help' => "Esti archivu contién información adicional, probablemente añadida pola cámara dixital o l'escáner usaos pa crealu o dixitalizalu. Si l'archivu foi modificáu dende'l so estáu orixinal, seique dalgunos detalles nun tean reflexando l'archivu modificáu.",
'metadata-expand' => 'Amosar detalles estendíos',
'metadata-collapse' => 'Esconder detalles estendíos',
-'metadata-fields' => "Los campos de metadatos EXIF llistaos nesti mensaxe van ser
-inxeríos na visualización de la páxina d'imaxe inda cuando la
-tabla de metadatos tea recoyida. Los demás tarán escondíos por defeutu.
+'metadata-fields' => 'Los campos de metadatos de la imaxe llistaos nesti mensaxe van ser inxeríos na vista de la páxina de la imaxe cuando la tabla de metadatos tea recoyida.
+Los demás tarán anubríos de mou predetermináu.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Anchor',
@@ -2784,13 +2861,11 @@ tabla de metadatos tea recoyida. Los demás tarán escondíos por defeutu.
'exif-ycbcrpositioning' => 'Allugamientu Y y C',
'exif-xresolution' => 'Resolución horizontal',
'exif-yresolution' => 'Resolución vertical',
-'exif-resolutionunit' => 'Unidá de resolución X y Y',
'exif-stripoffsets' => 'Allugamientu de los datos de la imaxe',
'exif-rowsperstrip' => 'Númberu de files per banda',
'exif-stripbytecounts' => 'Bytes per banda comprimida',
'exif-jpeginterchangeformat' => 'Desplazamientu al JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytes de datos JPEG',
-'exif-transferfunction' => 'Función de tresferencia',
'exif-whitepoint' => 'Cromacidá de puntu blancu',
'exif-primarychromaticities' => 'Cromacidá de los primarios',
'exif-ycbcrcoefficients' => 'Coeficientes de la matriz de tresformación del espaciu de color',
@@ -2809,7 +2884,6 @@ tabla de metadatos tea recoyida. Los demás tarán escondíos por defeutu.
'exif-compressedbitsperpixel' => "Mou de compresión d'imaxe",
'exif-pixelydimension' => "Anchor d'imaxe",
'exif-pixelxdimension' => "Altor d'imaxe",
-'exif-makernote' => 'Notes del fabricante',
'exif-usercomment' => 'Comentarios del usuariu',
'exif-relatedsoundfile' => "Archivu d'audiu rellacionáu",
'exif-datetimeoriginal' => 'Fecha y hora de la xeneración de datos',
@@ -2823,7 +2897,6 @@ tabla de metadatos tea recoyida. Los demás tarán escondíos por defeutu.
'exif-exposureprogram' => "Programa d'esposición",
'exif-spectralsensitivity' => 'Sensitividá espeutral',
'exif-isospeedratings' => 'Sensibilidá ISO',
-'exif-oecf' => 'Factor de conversión optoelectrónicu',
'exif-shutterspeedvalue' => 'Velocidá APEX del obturador',
'exif-aperturevalue' => 'Abertura APEX',
'exif-brightnessvalue' => 'Brillu APEX',
@@ -2836,7 +2909,6 @@ tabla de metadatos tea recoyida. Los demás tarán escondíos por defeutu.
'exif-focallength' => 'Llonxitú focal de la lente',
'exif-subjectarea' => 'Ãrea del suxetu',
'exif-flashenergy' => 'Enerxía del flax',
-'exif-spatialfrequencyresponse' => 'Rempuesta de frecuencia espacial',
'exif-focalplanexresolution' => 'Resolución X del planu focal',
'exif-focalplaneyresolution' => 'Resolución Y del planu focal',
'exif-focalplaneresolutionunit' => 'Unidá de resolución del planu focal',
@@ -2845,7 +2917,6 @@ tabla de metadatos tea recoyida. Los demás tarán escondíos por defeutu.
'exif-sensingmethod' => 'Métodu de sensor',
'exif-filesource' => 'Orixe del archivu',
'exif-scenetype' => "Triba d'escena",
-'exif-cfapattern' => 'patrón CFA',
'exif-customrendered' => "Procesamientu d'imaxe personalizáu",
'exif-exposuremode' => "Mou d'esposición",
'exif-whitebalance' => 'Balance de blancos',
@@ -2890,10 +2961,80 @@ tabla de metadatos tea recoyida. Los demás tarán escondíos por defeutu.
'exif-gpsareainformation' => "Nome de l'área GPS",
'exif-gpsdatestamp' => 'Fecha GPS',
'exif-gpsdifferential' => 'Correición diferencial de GPS',
+'exif-jpegfilecomment' => 'Comentariu del ficheru JPEG',
+'exif-keywords' => 'Pallabres clave',
+'exif-worldregioncreated' => 'Parte del mundu aú se sacó la semeya',
+'exif-countrycreated' => 'País nel que se sacó la semeya',
+'exif-countrycodecreated' => 'Códigu del país nel que se sacó la semeya',
+'exif-provinceorstatecreated' => 'Provincia o estáu nel que se sacó la semeya',
+'exif-citycreated' => 'Ciudá na que se sacó la semeya',
+'exif-sublocationcreated' => 'Subdivisión de la ciudá onde se sacó esta semeya',
+'exif-worldregiondest' => 'Rexón del mundu amosada',
+'exif-countrydest' => 'País amosáu',
+'exif-countrycodedest' => 'Códigu del país amosáu',
+'exif-provinceorstatedest' => 'Provincia o estáu amosáu',
+'exif-citydest' => 'Ciudá amosada',
+'exif-sublocationdest' => 'Subdivisión de la ciudá amosada',
'exif-objectname' => 'Títulu curtiu',
+'exif-specialinstructions' => 'Instrucciones especiales',
+'exif-headline' => 'Titular',
+'exif-credit' => 'Créitu/Fornidor',
+'exif-source' => 'Fonte',
+'exif-editstatus' => 'Estáu editorial de la imaxe',
+'exif-urgency' => 'Urxencia',
+'exif-fixtureidentifier' => 'Nome del elementu',
+'exif-locationdest' => 'Llugar representáu',
+'exif-locationdestcode' => 'Códigu del llugar representáu',
+'exif-objectcycle' => 'Hora del día a la que se destina esti mediu',
+'exif-contact' => 'Información de contautu',
+'exif-writer' => 'Redactor',
+'exif-languagecode' => 'Llingua',
+'exif-iimversion' => "Versión d'IIM",
+'exif-iimcategory' => 'Categoría',
+'exif-iimsupplementalcategory' => 'Categoríes suplementaries',
+'exif-datetimeexpires' => 'Nun usar dempués de',
+'exif-datetimereleased' => 'Asoleyada el',
+'exif-originaltransmissionref' => 'Códigu orixinal de llocalización de tresmisión',
+'exif-identifier' => 'Identificador',
+'exif-lens' => 'Lente usada',
+'exif-serialnumber' => 'Númberu de serie de la cámara',
+'exif-cameraownername' => 'Dueñu de la cámara',
+'exif-label' => 'Etiqueta',
+'exif-datetimemetadata' => 'Hora que camudaron los metadatos la cabera vegada',
+'exif-nickname' => 'Nome informal de la imaxe',
+'exif-rating' => 'Puntos (sobre 5)',
+'exif-rightscertificate' => 'Certificáu de xestión de drechos',
+'exif-copyrighted' => 'Estáu del copyright',
+'exif-copyrightowner' => 'Titular del copyright',
+'exif-usageterms' => "Términos d'usu",
+'exif-webstatement' => "Declaración en llinia de drechos d'autor",
+'exif-originaldocumentid' => 'ID única del documentu orixinal',
+'exif-licenseurl' => "URL de la llicencia de drechos d'autor",
+'exif-morepermissionsurl' => 'Información de llicencia alternativa',
+'exif-attributionurl' => 'Al re-usar esta obra, por favor enllazar a',
+'exif-preferredattributionname' => 'Al re-usar esta obra, por favor atribuir a',
+'exif-pngfilecomment' => 'Comentariu del ficheru PNG',
+'exif-disclaimer' => 'Avisu xeneral',
+'exif-contentwarning' => "Avisu sobro'l conteníu",
+'exif-giffilecomment' => 'Comentariu del ficheru GIF',
+'exif-intellectualgenre' => "Triba d'elementu",
+'exif-subjectnewscode' => 'Códigu del tema',
+'exif-scenecode' => "Códigu d'escena IPTC",
+'exif-event' => 'Acontecimientu representáu',
+'exif-organisationinimage' => 'Organización representada',
+'exif-personinimage' => 'Persona representada',
+'exif-originalimageheight' => 'Altor de la imaxe enantes de cortase',
+'exif-originalimagewidth' => 'Anchor de la imaxe enantes de cortase',
# EXIF attributes
'exif-compression-1' => 'Non comprimida',
+'exif-compression-2' => 'CCITT Grupu 3 codificación Huffman RLE con Modificación 1-Dimensional',
+'exif-compression-3' => 'Codificación de fax CCITT Grupu 3',
+'exif-compression-4' => 'Codificación de fax CCITT Grupu 4',
+'exif-compression-6' => 'JPEG (antiguu)',
+
+'exif-copyrighted-true' => "Con drechos d'autor",
+'exif-copyrighted-false' => 'Dominiu públicu',
'exif-unknowndate' => 'Fecha desconocida',
@@ -2912,6 +3053,8 @@ tabla de metadatos tea recoyida. Los demás tarán escondíos por defeutu.
'exif-xyresolution-i' => '$1 ppp',
'exif-xyresolution-c' => '$1 ppc',
+'exif-colorspace-65535' => 'Ensin calibrar',
+
'exif-componentsconfiguration-0' => 'nun esiste',
'exif-exposureprogram-0' => 'Non definida',
@@ -3025,6 +3168,10 @@ tabla de metadatos tea recoyida. Los demás tarán escondíos por defeutu.
'exif-gpslongitude-e' => 'Lloxitú Este',
'exif-gpslongitude-w' => 'Lloxitú Oeste',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => "$1 {{PLURAL:$1|metru|metros}} sobro'l nivel del mar",
+'exif-gpsaltitude-below-sealevel' => "$1 {{PLURAL:$1|metru|metros}} baxo'l nivel del mar",
+
'exif-gpsstatus-a' => 'Midición en progresu',
'exif-gpsstatus-v' => 'Interoperabilidá de la midición',
@@ -3036,21 +3183,73 @@ tabla de metadatos tea recoyida. Los demás tarán escondíos por defeutu.
'exif-gpsspeed-m' => 'Milles por hora',
'exif-gpsspeed-n' => 'Nueyos',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Quilómetros',
+'exif-gpsdestdistance-m' => 'Milles',
+'exif-gpsdestdistance-n' => 'Milles náutiques',
+
+'exif-gpsdop-excellent' => 'Escelente ($1)',
+'exif-gpsdop-good' => 'Bona ($1)',
+'exif-gpsdop-moderate' => 'Moderada ($1)',
+'exif-gpsdop-fair' => 'Xusta ($1)',
+'exif-gpsdop-poor' => 'Probe ($1)',
+
+'exif-objectcycle-a' => 'Sólo pola mañana',
+'exif-objectcycle-p' => 'Sólo pola tarde',
+'exif-objectcycle-b' => 'Pola mañana y pola tarde',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Direición real',
'exif-gpsdirection-m' => 'Direición magnética',
+'exif-ycbcrpositioning-1' => 'Centráu',
+'exif-ycbcrpositioning-2' => 'Co-llocalizaos',
+
+'exif-dc-contributor' => 'Collaboradores',
+'exif-dc-coverage' => 'Estensión espacial o temporal del conteníu',
+'exif-dc-date' => 'Data(es)',
+'exif-dc-publisher' => 'Editor',
+'exif-dc-relation' => 'Otros medios rellacionaos',
+'exif-dc-rights' => 'Drechos',
+'exif-dc-source' => 'Mediu orixinal',
+'exif-dc-type' => 'Triba de mediu',
+
+'exif-rating-rejected' => 'Refugáu',
+
+'exif-isospeedratings-overflow' => 'Mayor que 65535',
+
+'exif-iimcategory-ace' => 'Arte, cultura y entretenimientu',
+'exif-iimcategory-clj' => 'Crime y drechu',
+'exif-iimcategory-dis' => 'Desastres y accidentes',
+'exif-iimcategory-fin' => 'Economía y negocios',
+'exif-iimcategory-edu' => 'Educación',
+'exif-iimcategory-evn' => 'Mediu ambiente',
+'exif-iimcategory-hth' => 'Salú',
+'exif-iimcategory-hum' => 'Interés humanu',
+'exif-iimcategory-lab' => 'Trabayu',
+'exif-iimcategory-lif' => 'Estilu de vida y recréu',
+'exif-iimcategory-pol' => 'Política',
+'exif-iimcategory-rel' => 'Relixón y creencies',
+'exif-iimcategory-sci' => 'Ciencia y teunoloxía',
+'exif-iimcategory-soi' => 'Cuestiones sociales',
+'exif-iimcategory-spo' => 'Deportes',
+'exif-iimcategory-war' => 'Guerra, conflictos y protestes',
+'exif-iimcategory-wea' => 'Meteoroloxía',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Baxa ($1)',
+'exif-urgency-high' => 'Alta ($1)',
+'exif-urgency-other' => 'Prioridá definía pol usuariu ($1)',
+
# External editor support
'edit-externally' => 'Editar esti ficheru usando una aplicación esterna',
-'edit-externally-help' => '(Pa más información echa un güeyu a les [http://www.mediawiki.org/wiki/Manual:External_editors instrucciones de configuración])',
+'edit-externally-help' => '(Pa más información echa un güeyu a les [//www.mediawiki.org/wiki/Manual:External_editors instrucciones de configuración])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'toos',
-'imagelistall' => 'toes',
-'watchlistall2' => 'too',
-'namespacesall' => 'toos',
-'monthsall' => 'toos',
-'limitall' => 'toos',
+'watchlistall2' => 'too',
+'namespacesall' => 'toos',
+'monthsall' => 'toos',
+'limitall' => 'toos',
# E-mail address confirmation
'confirmemail' => 'Confirmar direición de corréu',
@@ -3134,17 +3333,24 @@ $1',
'trackbackdeleteok' => 'El retroenllaz esborróse correutamente.',
# Delete conflict
-'deletedwhileediting' => "'''Avisu''': ¡Esta páxina foi esborrada depués de qu'entamaras a editala!",
-'confirmrecreate' => "L'usuariu [[User:$1|$1]] ([[User talk:$1|alderique]]) esborró esta páxina depués de qu'empecipiaras a editala pol siguiente motivu:
+'deletedwhileediting' => "'''Avisu''': ¡Esta páxina foi esborrada depués de qu'entamaras a editala!",
+'confirmrecreate' => "L'usuariu [[User:$1|$1]] ([[User talk:$1|alderique]]) esborró esta páxina depués de qu'empecipiaras a editala pol siguiente motivu:
: ''$2''
Por favor confirma que daveres quies volver a crear esta páxina.",
-'recreate' => 'Volver a crear',
+'confirmrecreate-noreason' => "L'usuariu [[User:$1|$1]] ([[User talk:$1|talk]]) desanició esta páxina depués de que principiaras a editala. Por favor confirma que daveres quies volver a crear esta páxina.",
+'recreate' => 'Volver a crear',
# action=purge
'confirm_purge_button' => 'Aceutar',
'confirm-purge-top' => "¿Llimpiar la caché d'esta páxina?",
'confirm-purge-bottom' => 'Purgar una páxina esborra la caché y fuercia a apaecer la versión actual más recién.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Aceutar',
+'confirm-watch-top' => '¿Amestar esta páxina a la to llista de vixilancia?',
+'confirm-unwatch-button' => 'Aceutar',
+'confirm-unwatch-top' => '¿Desaniciar esta páxina de la to llista de vixilancia?',
+
# Multipage image navigation
'imgmultipageprev' => '↠páxina anterior',
'imgmultipagenext' => 'páxina siguiente →',
@@ -3187,15 +3393,16 @@ Por favor confirma que daveres quies volver a crear esta páxina.",
'watchlistedit-noitems' => 'La to llista de vixilancia nun tien títulos.',
'watchlistedit-normal-title' => 'Editar la llista de vixilancia',
'watchlistedit-normal-legend' => 'Eliminar títulos de la llista de vixilancia',
-'watchlistedit-normal-explain' => "Abaxo amuésense los títulos de la to llista de vixilancia. Pa eliminar un títulu,
-activa la caxa d'al llau d'él, y calca n'Eliminar Títulos. Tamién pues [[Special:Watchlist/raw|editar la llista en bruto]].",
+'watchlistedit-normal-explain' => "Abaxo s'amuesen los títulos de la to llista de vixilancia.
+Pa desaniciar un títulu, marca la caxella d'al llau d'él, y calca \"{{int:Watchlistedit-normal-submit}}\".
+Tamién pues [[Special:EditWatchlist/raw|editar la llista en bruto]].",
'watchlistedit-normal-submit' => 'Eliminar títulos',
'watchlistedit-normal-done' => '{{PLURAL:$1|Eliminóse un títulu|Elimináronse $1 títulos}} de la to llista de vixilancia:',
'watchlistedit-raw-title' => 'Editar la llista de vixilancia en bruto',
'watchlistedit-raw-legend' => 'Editar la llista de vixilancia en bruto',
-'watchlistedit-raw-explain' => "Abaxo amuésense los títulos de la to llista de vixilancia, y puen ser
-editaos añadiéndolos o eliminandolos de la llista; un títulu per llinia. N'acabando, calca n'Actualizar Llista de Vixilancia.
-Tamién pues [[Special:Watchlist/edit|usar l'editor estándar]].",
+'watchlistedit-raw-explain' => "Abaxo s'amuesen los títulos de la to llista de vixilancia, y puen editase amestándolos o desaniciándolos de la llista; un títulu per llinia.
+N'acabando, calca \"{{int:Watchlistedit-raw-submit}}\".
+Tamién pues [[Special:EditWatchlist|usar l'editor estándar]].",
'watchlistedit-raw-titles' => 'Títulos:',
'watchlistedit-raw-submit' => 'Actualizar llista de vixilancia',
'watchlistedit-raw-done' => 'La to llista de vixilancia foi actualizada.',
@@ -3212,33 +3419,33 @@ Tamién pues [[Special:Watchlist/edit|usar l'editor estándar]].",
'duplicate-defaultsort' => 'Avisu: L\'atayu "$2" va trocar l\'atayu "$1".',
# Special:Version
-'version' => 'Versión',
-'version-extensions' => 'Estensiones instalaes',
-'version-specialpages' => 'Páxines especiales',
-'version-parserhooks' => "Hooks d'análisis sintáuticu",
-'version-variables' => 'Variables',
-'version-skins' => 'Apariencia',
-'version-other' => 'Otros',
-'version-mediahandlers' => "Remanadores d'archivos multimedia",
-'version-hooks' => 'Hooks',
-'version-extension-functions' => "Funciones d'estensiones",
-'version-parser-extensiontags' => "Etiquetes d'estensiones d'análisis",
-'version-parser-function-hooks' => "Hooks de les funciones d'análisis sintáuticu",
-'version-skin-extension-functions' => "Funciones d'estensiones de pieles",
-'version-hook-name' => 'Nome del hook',
-'version-hook-subscribedby' => 'Suscritu por',
-'version-version' => '(Versión $1)',
-'version-license' => 'Llicencia',
-'version-poweredby-credits' => "Esta wiki funciona con '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'otros',
-'version-license-info' => "MediaWiki ye software llibre; pues redistribuilu y/o camudalu baxo los términos de la Llicencia Pública Xeneral GNU tal como ta asoleyada pola Free Software Foundation; o la versión 2 de la Llicencia, o (como prefieras) cualesquier versión posterior.
+'version' => 'Versión',
+'version-extensions' => 'Estensiones instalaes',
+'version-specialpages' => 'Páxines especiales',
+'version-parserhooks' => "Hooks d'análisis sintáuticu",
+'version-variables' => 'Variables',
+'version-antispam' => 'Prevención del corréu puxarra',
+'version-skins' => 'Apariencia',
+'version-other' => 'Otros',
+'version-mediahandlers' => "Remanadores d'archivos multimedia",
+'version-hooks' => 'Hooks',
+'version-extension-functions' => "Funciones d'estensiones",
+'version-parser-extensiontags' => "Etiquetes d'estensiones d'análisis",
+'version-parser-function-hooks' => "Hooks de les funciones d'análisis sintáuticu",
+'version-hook-name' => 'Nome del hook',
+'version-hook-subscribedby' => 'Suscritu por',
+'version-version' => '(Versión $1)',
+'version-license' => 'Llicencia',
+'version-poweredby-credits' => "Esta wiki funciona con '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'otros',
+'version-license-info' => "MediaWiki ye software llibre; pues redistribuilu y/o camudalu baxo los términos de la Llicencia Pública Xeneral GNU tal como ta asoleyada pola Free Software Foundation; o la versión 2 de la Llicencia, o (como prefieras) cualesquier versión posterior.
MediaWiki se distribúi col envís de que seya afayadiza, pero ENSIN GARANTÃA DALA; ensin siquiera garantía implícita de COMERCIALIDà o ADAUTACIÓN A UN DETERMINÃU PROPÓSITU. Llee la Llicencia Pública Xeneral GNU pa más detalles.
-Tendríes d'haber recibío [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Llicencia Pública Xeneral GNU] xunto con esti programa; sinón, escribi a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html lleela en llinia].",
-'version-software' => 'Software instaláu',
-'version-software-product' => 'Productu',
-'version-software-version' => 'Versión',
+Tendríes d'haber recibío [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Llicencia Pública Xeneral GNU] xunto con esti programa; sinón, escribi a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lleela en llinia].",
+'version-software' => 'Software instaláu',
+'version-software-product' => 'Productu',
+'version-software-version' => 'Versión',
# Special:FilePath
'filepath' => "Ruta d'archivu",
@@ -3248,22 +3455,22 @@ Tendríes d'haber recibío [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Lli
Les imáxenes amuésense a resolución completa; les demás tribes d'archivu execútense direutamente col so programa asociáu.",
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Buscar archivos duplicaos',
-'fileduplicatesearch-summary' => 'Busca archivos duplicaos basándose nos sos valores fragmentarios.
-
-Escribi\'l nome del archivu ensin el prefixu "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Buscar duplicaos',
-'fileduplicatesearch-filename' => "Nome d'archivu:",
-'fileduplicatesearch-submit' => 'Guetar',
-'fileduplicatesearch-info' => '$1 × $2 píxeles<br />Tamañu del archivu: $3<br />Triba MIME: $4',
-'fileduplicatesearch-result-1' => 'L\'archivu "$1" nun tien duplicáu idénticu.',
-'fileduplicatesearch-result-n' => 'L\'archivu "$1" tien {{PLURAL:$2|un duplicáu idénticu|$2 duplicaos idénticos}}.',
+'fileduplicatesearch' => 'Buscar archivos duplicaos',
+'fileduplicatesearch-summary' => 'Busca archivos duplicaos basándose nos sos valores fragmentarios.',
+'fileduplicatesearch-legend' => 'Buscar duplicaos',
+'fileduplicatesearch-filename' => "Nome d'archivu:",
+'fileduplicatesearch-submit' => 'Guetar',
+'fileduplicatesearch-info' => '$1 × $2 píxeles<br />Tamañu del archivu: $3<br />Triba MIME: $4',
+'fileduplicatesearch-result-1' => 'L\'archivu "$1" nun tien duplicáu idénticu.',
+'fileduplicatesearch-result-n' => 'L\'archivu "$1" tien {{PLURAL:$2|un duplicáu idénticu|$2 duplicaos idénticos}}.',
+'fileduplicatesearch-noresults' => "Nun s'alcontró dengún ficheru nomáu «$1».",
# Special:SpecialPages
'specialpages' => 'Páxines especiales',
'specialpages-note' => '----
* Páxines especiales normales.
-* <strong class="mw-specialpagerestricted">Páxines especiales restrinxíes.</strong>',
+* <span class="mw-specialpagerestricted">Páxines especiales restrinxíes.</span>
+* <span class="mw-specialpagecached">Páxines especiales en caché (seique nun tean actualizaes).</span>',
'specialpages-group-maintenance' => 'Informes de mantenimientu',
'specialpages-group-other' => 'Otres páxines especiales',
'specialpages-group-login' => 'Entrar / Crear cuenta',
diff --git a/languages/messages/MessagesAv.php b/languages/messages/MessagesAv.php
index 39a0801e..cee4a941 100644
--- a/languages/messages/MessagesAv.php
+++ b/languages/messages/MessagesAv.php
@@ -126,9 +126,6 @@ $messages = array(
'movearticle' => 'Гьумералъул цӀар хиÑизе',
'movepagebtn' => 'Гьумералъул цlар хиÑизе',
-# Math errors
-'math_unknown_error' => 'Лъалареб гъалатӀ',
-
# Special:SpecialPages
'specialpages' => 'ХаÑÑал гьумерал',
diff --git a/languages/messages/MessagesAvk.php b/languages/messages/MessagesAvk.php
index ed7c1149..2ae41a13 100644
--- a/languages/messages/MessagesAvk.php
+++ b/languages/messages/MessagesAvk.php
@@ -34,67 +34,67 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'JontolafGraskakseem' ),
+ 'Allmessages' => array( 'Stakseem' ),
+ 'Allpages' => array( 'Bueem' ),
+ 'Ancientpages' => array( 'SavsafBueem' ),
+ 'Booksources' => array( 'NevaKliteem' ),
'BrokenRedirects' => array( 'EmpayanGraskakseem' ),
- 'Preferences' => array( 'Lodamaceem' ),
- 'Watchlist' => array( 'Suzdasiki' ),
- 'Recentchanges' => array( 'NoeltafBetakseem' ),
- 'Upload' => array( 'Kalvajara' ),
+ 'Categories' => array( 'Lomeem' ),
+ 'Confirmemail' => array( 'EmailManeGruyera' ),
+ 'Contributions' => array( 'Webekseem' ),
+ 'Deadendpages' => array( 'AxodafBueem' ),
+ 'DoubleRedirects' => array( 'JontolafGraskakseem' ),
+ 'Emailuser' => array( 'FavesikEmailMane' ),
+ 'Export' => array( 'Divburera' ),
+ 'Fewestrevisions' => array( 'Lebetayan' ),
+ 'Import' => array( 'Koburera' ),
+ 'Listadmins' => array( 'Ristusikeem' ),
+ 'Listbots' => array( 'Stiernikeem' ),
'Listfiles' => array( 'Ewaveem' ),
- 'Newimages' => array( 'WarzafEwaveem' ),
+ 'Listredirects' => array( 'Graskakseem' ),
'Listusers' => array( 'Favesikeem' ),
- 'Statistics' => array( 'Enkopaceem' ),
- 'Randompage' => array( 'Xuyavabu' ),
'Lonelypages' => array( 'GluyasikiiskafBueem' ),
- 'Uncategorizedpages' => array( 'LomiskafBueem' ),
- 'Uncategorizedcategories' => array( 'LomiskafLomeem' ),
- 'Uncategorizedimages' => array( 'LomiskafEwaveem' ),
- 'Uncategorizedtemplates' => array( 'LomiskafTezeem' ),
- 'Unusedcategories' => array( 'MefavenLomeem' ),
- 'Unusedimages' => array( 'MefavenEwaveem' ),
- 'Wantedpages' => array( 'ErunBueem', 'EmpayanGluyasikieem' ),
- 'Wantedcategories' => array( 'ErunLomeem' ),
+ 'Longpages' => array( 'AbrotcafBueem' ),
+ 'MIMEsearch' => array( 'MIMEAneyara' ),
+ 'Mostcategories' => array( 'Lolomakiraf' ),
+ 'Mostimages' => array( 'Lodewavakiraf' ),
'Mostlinked' => array( 'Logluyasikikiraf' ),
'Mostlinkedcategories' => array( 'LogluyasikirafLomeem' ),
'Mostlinkedtemplates' => array( 'LogluyasikikirafTezeem' ),
- 'Mostimages' => array( 'Lodewavakiraf' ),
- 'Mostcategories' => array( 'Lolomakiraf' ),
'Mostrevisions' => array( 'Lobetayan' ),
- 'Fewestrevisions' => array( 'Lebetayan' ),
- 'Shortpages' => array( 'TrelafBueem' ),
- 'Longpages' => array( 'AbrotcafBueem' ),
+ 'Movepage' => array( 'BuArrundara' ),
+ 'Mycontributions' => array( 'JinafWebekseem' ),
+ 'Mypage' => array( 'JinafuBu' ),
+ 'Mytalk' => array( 'JinafaPrilara' ),
+ 'Newimages' => array( 'WarzafEwaveem' ),
'Newpages' => array( 'WarzafBueem' ),
- 'Ancientpages' => array( 'SavsafBueem' ),
- 'Deadendpages' => array( 'AxodafBueem' ),
+ 'Popularpages' => array( 'LorupenBueem' ),
+ 'Preferences' => array( 'Lodamaceem' ),
'Protectedpages' => array( 'NendanBueem' ),
'Protectedtitles' => array( 'NendanVergumvelteem' ),
- 'Allpages' => array( 'Bueem' ),
+ 'Randompage' => array( 'Xuyavabu' ),
+ 'Randomredirect' => array( 'XuyavafaGraskara' ),
+ 'Recentchanges' => array( 'NoeltafBetakseem' ),
+ 'Revisiondelete' => array( 'BetaraSulara' ),
+ 'Search' => array( 'Aneyara' ),
+ 'Shortpages' => array( 'TrelafBueem' ),
'Specialpages' => array( 'AptafBueem' ),
- 'Contributions' => array( 'Webekseem' ),
- 'Emailuser' => array( 'FavesikEmailMane' ),
- 'Confirmemail' => array( 'EmailManeGruyera' ),
- 'Movepage' => array( 'BuArrundara' ),
- 'Booksources' => array( 'NevaKliteem' ),
- 'Categories' => array( 'Lomeem' ),
- 'Export' => array( 'Divburera' ),
- 'Version' => array( 'Siatos' ),
- 'Allmessages' => array( 'Stakseem' ),
+ 'Statistics' => array( 'Enkopaceem' ),
+ 'Uncategorizedcategories' => array( 'LomiskafLomeem' ),
+ 'Uncategorizedimages' => array( 'LomiskafEwaveem' ),
+ 'Uncategorizedpages' => array( 'LomiskafBueem' ),
+ 'Uncategorizedtemplates' => array( 'LomiskafTezeem' ),
'Undelete' => array( 'Dimsulara' ),
- 'Import' => array( 'Koburera' ),
- 'Userrights' => array( 'FavesikRokeem' ),
- 'MIMEsearch' => array( 'MIMEAneyara' ),
- 'Unwatchedpages' => array( 'MerupenBueem' ),
- 'Listredirects' => array( 'Graskakseem' ),
- 'Revisiondelete' => array( 'BetaraSulara' ),
+ 'Unusedcategories' => array( 'MefavenLomeem' ),
+ 'Unusedimages' => array( 'MefavenEwaveem' ),
'Unusedtemplates' => array( 'MefavenTezeem' ),
- 'Randomredirect' => array( 'XuyavafaGraskara' ),
- 'Mypage' => array( 'JinafuBu' ),
- 'Mytalk' => array( 'JinafaPrilara' ),
- 'Mycontributions' => array( 'JinafWebekseem' ),
- 'Listadmins' => array( 'Ristusikeem' ),
- 'Listbots' => array( 'Stiernikeem' ),
- 'Popularpages' => array( 'LorupenBueem' ),
- 'Search' => array( 'Aneyara' ),
+ 'Unwatchedpages' => array( 'MerupenBueem' ),
+ 'Upload' => array( 'Kalvajara' ),
+ 'Userrights' => array( 'FavesikRokeem' ),
+ 'Version' => array( 'Siatos' ),
+ 'Wantedcategories' => array( 'ErunLomeem' ),
+ 'Wantedpages' => array( 'ErunBueem', 'EmpayanGluyasikieem' ),
+ 'Watchlist' => array( 'Suzdasiki' ),
);
$messages = array(
@@ -210,8 +210,6 @@ $messages = array(
'category-file-count-limited' => 'Bat iyeltak {{PLURAL:$1|tir|$1 tid}} koe noeltafa loma.',
'listingcontinuesabbrev' => 'loon',
-'mainpagetext' => "'''MediaWiki inkeyen talpeyot.'''",
-
'about' => 'Icdeuca',
'article' => 'Teliz',
'newwindow' => '(ko ar dilk fenkur)',
@@ -245,7 +243,6 @@ $messages = array(
'history' => 'Buizvot',
'history_short' => 'Izvot',
'updatedmarker' => 'nuskeyen mali jinafa ironokafa worara',
-'info_short' => 'Givara',
'printableversion' => 'Rorubian siatos',
'permalink' => 'Elubkafi gluyasiki',
'print' => 'Rubiara',
@@ -408,11 +405,10 @@ Erura : $2',
'protectedpagetext' => 'Batu bu betaradjison zo nendar.',
'viewsourcetext' => 'Va buklita rowil nume roksudal :',
'protectedinterface' => 'Batu bu va walasikikrent ke talpeyot dafur nume ta djira va favejera zo ixatcar.',
-'editinginterface' => "'''Obral !''' Rin va bu favenu koe talpeyotwalasiki betal. Betara va batu bu va laviuca ke favesikafi walasiki dolge ar favesik vanolatar. Kalavason, va [http://translatewiki.net/wiki/Main_Page?setlang=avk translatewiki.net], va MediaWiki abdumimaks va tulizukara, vay favel.",
+'editinginterface' => "'''Obral !''' Rin va bu favenu koe talpeyotwalasiki betal. Betara va batu bu va laviuca ke favesikafi walasiki dolge ar favesik vanolatar. Kalavason, va [//translatewiki.net/wiki/Main_Page?setlang=avk translatewiki.net], va MediaWiki abdumimaks va tulizukara, vay favel.",
'sqlhidden' => '(SQL kucilara palsena)',
'cascadeprotected' => 'Batu bu icde betara zo nendar, kire va vlevefu {{PLURAL:$1|bu|bu}} pasur, danu kan tegisa "stoyakorafa" rotisaca zo nendad : $2',
'namespaceprotected' => "Va bu koe '''$1''' yoltxo me robetal !",
-'customcssjsprotected' => 'Va batu bu me robetal kire in va ar favesikaf titickaks ruldar.',
'ns-specialprotected' => 'Aptafu bu tir merobetanu.',
'titleprotected' => "Bat vergumvelt gan [[User:$1|$1]] zo reduranendar.
Batdume : ''$2''.",
@@ -457,7 +453,7 @@ Va amidaf yolt gokiblal.',
'nosuchuser' => '« $1 » favesik me krulder.
Sutera va favesikyolt gotir eltaykoranhafa.
Ageltal va rinaf suteks oke [[Special:UserLogin/signup|pataredura]].',
-'nosuchusershort' => 'Me tir favesik digis va « <nowiki>$1</nowiki> » yolt. Va sutekaks ageltal.',
+'nosuchusershort' => 'Me tir favesik digis va « $1 » yolt. Va sutekaks ageltal.',
'nouserspecified' => 'Va favesikyolt gobazel !',
'wrongpassword' => 'Remravlem tir volenaf. Tollwil !',
'wrongpasswordempty' => 'Remravlem bazeyen tir vlardaf.Vay tolon bazel !',
@@ -488,7 +484,7 @@ Meka 'email' staksa icde vlevefa staava zo staksatar.",
'createaccount-title' => 'Pataredura koe {{SITENAME}}',
'loginlanguagelabel' => 'Ava : $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Va patabeksa betal !',
'resetpass_announce' => "Rin kan ugalorafa 'email' beksa va int pilkomodayal.
Ta da wan zo pilkomodal, va warzaf remravlem batlize gobazel :",
@@ -513,8 +509,6 @@ Ta da wan zo pilkomodal, va warzaf remravlem batlize gobazel :",
'extlink_tip' => 'Divafi gluyasiki (va http:// me vulkul)',
'headline_sample' => 'Volveyvergumveltaca',
'headline_tip' => 'Tolvolveyvergumvelt',
-'math_sample' => 'Va rinaf tazukoy batliz cenkal',
-'math_tip' => 'Solokseropaf tazukoy (LaTeX)',
'nowiki_sample' => 'Breviziskaf krent batliz cenkal',
'nowiki_tip' => 'Va wiki breviz afaná',
'image_sample' => 'Tula.jpg',
@@ -571,7 +565,7 @@ Rinaf tise IP mane tir $3 ise ID elekara tir #$5. Va bate ik bane mane ko kota e
Vanmiae yonaru bu [[Special:Search/{{PAGENAME}}|va man buvergumvelt rotaneyal]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} va gluyan log robetal],
oke [{{fullurl:{{FULLPAGENAME}}|action=edit}} va batu bu robetal]</span>.',
-'userpage-userdoesnotexist' => '"$1" favesikpata me tir vuesteyena. Vay stujel ede va batu bu roredul ike robetal.',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" favesikpata me tir vuesteyena. Vay stujel ede va batu bu roredul ike robetal.',
'clearyourcache' => "'''Note :''' Après avoir sauvegardé, vous devez forcer le rechargement de la page pour voir les changements : '''Mozilla / Konqueror / Firefox''' : ''ctrl-shift-r'', '''IE''' : ''ctrl-f5'', '''Safari''' : ''cmd-shift-r''; '''Konqueror''' : ''f5''.",
'usercssyoucanpreview' => "'''Astuce :''' utilisez le bouton '''Prévisualisation''' pour tester votre nouvelle feuille css/js avant de l'enregistrer.",
'userjsyoucanpreview' => "'''Astuce :''' utilisez le bouton '''Prévisualisation''' pour tester votre nouvelle feuille css/js avant de l'enregistrer.",
@@ -814,7 +808,6 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
'changepassword' => 'Betara va remravlem',
'prefs-skin' => 'Laviuca',
'skin-preview' => 'Abdiwira',
-'prefs-math' => 'Rendu des maths',
'datedefault' => 'Megelukon',
'prefs-datetime' => 'Evla is bartiv',
'prefs-personal' => 'Ilkagiveem',
@@ -834,8 +827,6 @@ Kan ''all:'' laganeyal ta varafa exulera (gon keyaksexo is teza ikz-), oke wetce
'columns' => 'Brizeem',
'searchresultshead' => 'Nedira va aneyaratrasikseem',
'resultsperpage' => 'Fuxebuon trasiksota',
-'contextlines' => 'Fuxetrasikson conhota',
-'contextchars' => 'Fuxeconhon orkastaota',
'recentchangesdays' => 'Gonedin viel se koe noeltaf betakseem :',
'recentchangesdays-max' => '(cugon $1 {{PLURAL:$1|viel|viel}})',
'recentchangescount' => 'Omavon gonedina ota va noeltaf betakseem ik buizvot ik "log" :',
@@ -1087,10 +1078,6 @@ Ede va man iyeltak soe co-djukalvajal, vay dimpil ise va warzaf yolt favel. [[Fi
'destfilename' => 'Warzaf iyeltakyolt:',
'upload-maxfilesize' => 'Cugafo iyeltakaldo : $1',
'watchthisupload' => 'Suzdara va batu bu',
-'upload-wasdeleted' => "'''Obral: Rin va sulayan iyeltak djukalvajal.'''
-
-Gokrafial ede tolkalvajara va bat iyeltak tir vodanhafa.
-Sulara \"log\" va batu bu krafiason batlize zo nedir :",
'upload-success-subj' => 'Ksudanhara',
'upload-proto-error' => 'Kitsendaj',
@@ -1139,7 +1126,6 @@ Sulara \"log\" va batu bu krafiason batlize zo nedir :",
'linkstoimage' => 'Vlevefi {{PLURAL:$1|bugluyasiki|$1 bugluyasiki}} va bat iyeltak :',
'nolinkstoimage' => 'Meku bu va bata ewava ruldar.',
'morelinkstoimage' => 'Rupera va [[Special:WhatLinksHere/$1|lofi skedasiki]] va bat iyeltak.',
-'redirectstofile' => 'Vlevef {{PLURAL:$1|graskan iyeltak|$1 graskan iyeltak}} va bat iyeltak :',
'duplicatesoffile' => 'Bat {{PLURAL:$1|iyeltak tir|$1 iyeltak tid}} jontolaca ke bat iyeltak ([[Special:FileDuplicateSearch/$2|lo pinta]]) :',
'sharedupload' => 'Bat iyeltak tir ke $1 ise gan ar abdumimaks zo rofaver.',
'uploadnewversion-linktext' => 'Kalvajara va warzaf siatos ke bat iyeltak',
@@ -1381,12 +1367,10 @@ L'adresse électronique que vous avez indiquée dans vos préférences apparaît
'watchlistanontext' => 'Ta wira ik betara va ra ke rinafi suzdasiki vay $1.',
'watchnologin' => 'Dogluyariskaf',
'watchnologintext' => 'Ta betara va suzdasiki gotil [[Special:UserLogin|dogluyarakiraf]].',
-'addedwatch' => 'Loplekuyun ko suzdasiki',
'addedwatchtext' => "« $1 » bu ko rinafi [[Special:Watchlist|Suzdasiki]] fu zo loplekur.
Va moniyaf betareem va batu bu is dofu prilarabu batlize zo bonjatad, ise ta lokaliafa tcalutera telu '''ton bold''' koe bu dem [[Special:RecentChanges|noeltaf betakseem]] turowinaweter.
Ta sulara va batu bu div rinafi suzdasiki, koe grablexo va « Mea suzdá » vulegal.",
-'removedwatch' => 'Sulayanu div suzdasiki',
'removedwatchtext' => '« [[:$1]] » bu div rinafi suzdasiki al zo sular.',
'watch' => 'Suzdá',
'watchthispage' => 'Va batu bu suzdá',
@@ -1440,10 +1424,10 @@ You could also reset the notification flags for all your watched pages on your w
--
To change your watchlist settings, visit
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Feedback and further assistance:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Busulara',
@@ -1458,7 +1442,7 @@ Feedback and further assistance:
'confirmdeletetext' => 'Rin va bu is varaf izvot fu sulal.
Vay gruyel da djuskul ise va maletireem vangrupel ise tarkason va [[{{MediaWiki:Policy-url}}|xoverteem]] askil !',
'actioncomplete' => 'Skuyuna sulara',
-'deletedtext' => '« <nowiki>$1</nowiki> » tir sulayan.
+'deletedtext' => '« $1 » tir sulayan.
Ta vexala dem noeltaf sulareem va $2 disukel.',
'deletedarticle' => 'al sular va « [[$1]] »',
'suppressedarticle' => '"[[$1]]" sulayan',
@@ -1504,7 +1488,7 @@ Ironokafa betara gan [[User:$3|$3]] ([[User talk:$3|Prilara]]) zo skuyur.',
'protectexpiry' => 'Edjatena :',
'protect_expiry_invalid' => 'Edjatena me tir enafa.',
'protect_expiry_old' => 'Edjatena tir abdiugalafa.',
-'protect-text' => "Rin va nendareka ke '''<nowiki>$1</nowiki>''' bu batlize rowil nume robetal.",
+'protect-text' => "Rin va nendareka ke '''$1''' bu batlize rowil nume robetal.",
'protect-locked-access' => "Rinafa pata va betara va nendareka me rictar.
Noeltaf plekukseem ke '''$1''' bu batlize tid :",
'protect-cascadeon' => 'Batu bu zo nendar kire va {{PLURAL:$1|bu disu|bu yo disu}} va tegisa stoyakorafa nendara pasur. Rin va nendareka va batu bu robetal vexe batcoba va stoyakorafa nendara me vanolatar.',
@@ -1617,12 +1601,10 @@ $1',
'blockiptext' => 'Ta suterafa elekara va vansara male pilkovafe IP mane ok favesikyolt va vlevefa erurateza favel !
Mana sabegara zo goskur ta weyonara va cidara is dotrakason va [[{{MediaWiki:Policy-url}}|gotarkan vexeem]].
Va lazavanha (tulon ozwason va cidayanu bu se) vlevon bazel !',
-'ipaddress' => 'IP mane ok ikayolt',
'ipadressorusername' => 'IP mane ok favesikyolt',
'ipbexpiry' => 'Elekaracek',
'ipbreason' => 'Elekaradanda :',
'ipbreasonotherlist' => 'Ardume',
-'ipbanononly' => 'Anton elekara va yoltiskaf favesik',
'ipbcreateaccount' => 'Djira va pataredura',
'ipbemailban' => 'Djira va favesik icde "email" staksera',
'ipbsubmit' => 'Elekara va bate mane',
@@ -1646,9 +1628,7 @@ male abdion elekayane IP mane.',
'unblocked-id' => 'Dimelekara va $1 su zo skur',
'ipblocklist' => 'Elekayane IP mane isu favesikyolt',
'ipblocklist-legend' => 'Trasira va elekan favesik',
-'ipblocklist-username' => 'Favesikyolt ok IP mane :',
'ipblocklist-submit' => 'Aneyara',
-'blocklistline' => '$1 (tenuwer ba $4): $2 va $3 al elekar',
'infiniteblock' => 'parmaf',
'expiringblock' => 'tenuwer ba $1 $2',
'anononlyblock' => 'anton yoltiskik',
@@ -1664,7 +1644,7 @@ male abdion elekayane IP mane.',
'autoblocker' => 'Bloqué automatiquement parce que vous partagez une adresse IP avec « $1 ». Raison : « $2 ».',
'blocklogpage' => 'Elekara log',
'blocklogentry' => 'Elekan [[$1]] kali $2 ke $3 evledja',
-'blocklogtext' => 'Ceci est la trace des blocages et déblocages des utilisateurs. Les adresses IP automatiquement bloquées ne sont pas listées. Consultez la [[Special:IPBlockList|liste des utilisateurs bloqués]] pour voir qui est actuellement effectivement bloqué.',
+'blocklogtext' => 'Ceci est la trace des blocages et déblocages des utilisateurs. Les adresses IP automatiquement bloquées ne sont pas listées. Consultez la [[Special:BlockList|liste des utilisateurs bloqués]] pour voir qui est actuellement effectivement bloqué.',
'unblocklogentry' => 'grielekara va « $1 »',
'block-log-flags-anononly' => 'anton yoltiskaf favesik',
'block-log-flags-nocreate' => 'Pataredura gritegirana',
@@ -1769,7 +1749,7 @@ bu ika int me zo rotarrundar.',
'allmessagescurrent' => 'Noelaf krent',
'allmessagestext' => 'Batcoba tir vexala dem bolkstakseem koe MediaWiki yoltxo.
-Va [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] is [http://translatewiki.net translatewiki.net] vay woral ede va tulizukara va Mediawiki co-rowebel.',
+Va [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] is [//translatewiki.net translatewiki.net] vay woral ede va tulizukara va Mediawiki co-rowebel.',
'allmessagesnotsupportedDB' => "Batu bu me zo rofaver kire '''\$wgUseDatabaseMessages''' mea tir tegis.",
# Thumbnails
@@ -1878,9 +1858,7 @@ Va [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] is [http:
Ise va bazera va lazava ko vildeks nover.',
# Metadata
-'nodublincore' => 'Les métadonnées « Dublin Core RDF » sont désactivées sur ce serveur.',
-'nocreativecommons' => 'Les données méta « Creative Commons RDF » sont désactivées sur ce serveur.',
-'notacceptable' => 'Ce serveur wiki ne peut pas fournir les données dans un format que votre client est capable de lire.',
+'notacceptable' => 'Ce serveur wiki ne peut pas fournir les données dans un format que votre client est capable de lire.',
# Attribution
'anonymous' => 'Yoltiskaf {{PLURAL:$1|favesik|favesik}} va {{SITENAME}}',
@@ -1900,33 +1878,6 @@ MediaWiki spam cleanup',
'spam_reverting' => 'Dimplekura va ironokaf siatos meruldas va gluyasiki do $1',
'spam_blanking' => 'Kot betaks ruldas va gluyasiki do $1, tuvlardara',
-# Info page
-'infosubtitle' => 'Bugiva',
-'numedits' => 'Telizota (teliz) : $1',
-'numtalkedits' => 'Ota dem betaks (prilarabu): $1',
-'numwatchers' => 'Disukerota : $1',
-'numauthors' => 'Ota dem amidaf sutesik (teliz): $1',
-'numtalkauthors' => 'Ota va amidaf sutesik (prilarabu) : $1',
-
-# Math options
-'mw_math_png' => 'Toujours produire une image PNG',
-'mw_math_simple' => 'HTML si très simple, autrement PNG',
-'mw_math_html' => 'HTML si possible, autrement PNG',
-'mw_math_source' => 'Laisser le code TeX original',
-'mw_math_modern' => 'Pour les navigateurs modernes',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'Erreur math',
-'math_unknown_error' => 'erreur indéterminée',
-'math_unknown_function' => 'megrupen fliok',
-'math_lexing_error' => 'ravlemafa rokla',
-'math_syntax_error' => 'erurafa rokla',
-'math_image_error' => "La conversion en PNG a échouée, vérifiez l'installation de Latex, dvips, gs et convert",
-'math_bad_tmpdir' => 'Redura ik sutera ko ugaloraxo tid merotisa',
-'math_bad_output' => 'Redura ik sutera ko divaxo tid merotisa',
-'math_notexvc' => "L'éxécutable « texvc » est introuvable. Lisez math/README pour le configurer.",
-
# Patrolling
'markaspatrolleddiff' => 'Marquer comme vérifiée',
'markaspatrolledtext' => 'Marquer cet article comme vérifié',
@@ -1958,14 +1909,13 @@ $1',
'nextdiff' => 'Radimifa amidaca →',
# Media information
-'thumbsize' => 'Aluklum :',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|bu|bu}}',
-'file-info' => 'iyeltakaldo : $1, MIME ord : $2',
-'file-info-size' => '$1 × $2 pixel, iyeltakaldo : $3, MIME ord : $4',
-'file-nohires' => '<small>Me roderaykan logijaf lum.</small>',
-'svg-long-desc' => 'SVG iyeltak, prekson $1 × $2 pixels, iyeltakaldo : $3',
-'show-big-image' => 'Geltraf lum',
-'show-big-image-thumb' => '<small>Lum ke bata abdinedira : $1 × $2 pixels</small>',
+'thumbsize' => 'Aluklum :',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|bu|bu}}',
+'file-info' => 'iyeltakaldo : $1, MIME ord : $2',
+'file-info-size' => '$1 × $2 pixel, iyeltakaldo : $3, MIME ord : $4',
+'file-nohires' => '<small>Me roderaykan logijaf lum.</small>',
+'svg-long-desc' => 'SVG iyeltak, prekson $1 × $2 pixels, iyeltakaldo : $3',
+'show-big-image' => 'Geltraf lum',
# Special:NewFiles
'newimages' => 'Warzaf ewaviyeltak yo',
@@ -1997,7 +1947,13 @@ Kotari milconhafi gluyasiki roklon zo krafiar.',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Mantuca',
@@ -2014,7 +1970,6 @@ Kotari milconhafi gluyasiki roklon zo krafiar.',
'exif-rowsperstrip' => 'Blayblayon conhota',
'exif-jpeginterchangeformat' => 'Position du SOI JPEG',
'exif-jpeginterchangeformatlength' => 'Taille en octet des données JPEG',
-'exif-transferfunction' => 'Arburerafli',
'exif-datetime' => 'Evla is bartiv va betara va iyeltak',
'exif-imagedescription' => 'Ewavavergumvelt',
'exif-make' => 'Iasik va de',
@@ -2027,7 +1982,6 @@ Kotari milconhafi gluyasiki roklon zo krafiar.',
'exif-compressedbitsperpixel' => 'Ewavaraxivaracave',
'exif-pixelydimension' => 'Mante ke enafa ewava',
'exif-pixelxdimension' => 'Ontine ke enafa ewava',
-'exif-makernote' => 'Notes du fabricant',
'exif-usercomment' => 'Favesikaf sebuks',
'exif-relatedsoundfile' => 'Fichier audio lié',
'exif-datetimeoriginal' => 'Viel is gemelt ke nasbara va origeem',
@@ -2048,7 +2002,6 @@ Kotari milconhafi gluyasiki roklon zo krafiar.',
'exif-sensingmethod' => 'Siakranuva',
'exif-filesource' => 'Iyeltakklita',
'exif-scenetype' => 'Nakilord',
-'exif-cfapattern' => 'CFA fum',
'exif-exposuremode' => 'Konedirinda',
'exif-whitebalance' => 'Balance des blancs',
'exif-gaincontrol' => 'Stujera va nakila',
@@ -2179,14 +2132,12 @@ Kotari milconhafi gluyasiki roklon zo krafiar.',
# External editor support
'edit-externally' => 'Betara va bat iyeltak faveson va divef talpey',
-'edit-externally-help' => '(Ta lo giva va [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] disukel !)',
+'edit-externally-help' => '(Ta lo giva va [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] disukel !)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'kot',
-'imagelistall' => 'kot',
-'watchlistall2' => 'kot',
-'namespacesall' => 'koto',
-'monthsall' => 'kot',
+'watchlistall2' => 'kot',
+'namespacesall' => 'koto',
+'monthsall' => 'kot',
# E-mail address confirmation
'confirmemail' => 'Va e-mail gruyel',
@@ -2295,24 +2246,23 @@ This confirmation code will expire at $4.',
'unknown_extension_tag' => '"$1" megrupena divatcenafa tcala',
# Special:Version
-'version' => 'Siatos',
-'version-extensions' => 'Inkeyeni divatcesiki se',
-'version-specialpages' => 'Aptaf bueem',
-'version-parserhooks' => 'Exulerademi',
-'version-variables' => 'Remvodeem',
-'version-other' => 'Ar',
-'version-hooks' => 'Demi se',
-'version-extension-functions' => 'Divatces fliok se',
-'version-parser-extensiontags' => 'Exulerafa divatcenafa tcala',
-'version-parser-function-hooks' => 'Exuleraflidemi',
-'version-skin-extension-functions' => 'Wiatezaf divatces fliok se',
-'version-hook-name' => 'Demiyolt',
-'version-hook-subscribedby' => 'Wimpayan gan',
-'version-version' => '(Siatos $1)',
-'version-license' => 'Sorta',
-'version-software' => 'Inkeyen talpeyot',
-'version-software-product' => 'Warzeks',
-'version-software-version' => 'Siatos',
+'version' => 'Siatos',
+'version-extensions' => 'Inkeyeni divatcesiki se',
+'version-specialpages' => 'Aptaf bueem',
+'version-parserhooks' => 'Exulerademi',
+'version-variables' => 'Remvodeem',
+'version-other' => 'Ar',
+'version-hooks' => 'Demi se',
+'version-extension-functions' => 'Divatces fliok se',
+'version-parser-extensiontags' => 'Exulerafa divatcenafa tcala',
+'version-parser-function-hooks' => 'Exuleraflidemi',
+'version-hook-name' => 'Demiyolt',
+'version-hook-subscribedby' => 'Wimpayan gan',
+'version-version' => '(Siatos $1)',
+'version-license' => 'Sorta',
+'version-software' => 'Inkeyen talpeyot',
+'version-software-product' => 'Warzeks',
+'version-software-version' => 'Siatos',
# Special:FilePath
'filepath' => 'Iyeltakkelda',
diff --git a/languages/messages/MessagesAy.php b/languages/messages/MessagesAy.php
index 674f9e7a..b371af73 100644
--- a/languages/messages/MessagesAy.php
+++ b/languages/messages/MessagesAy.php
@@ -140,7 +140,6 @@ $messages = array(
'searcharticle' => 'Saraña',
'history' => 'Nayra qillqata',
'history_short' => 'Nayra qillqata',
-'info_short' => "Uñt'ayawi",
'edit' => 'Turkaña',
'create' => 'Uñstayaña',
'editthispage' => 'Aka uñstawi turkaña',
diff --git a/languages/messages/MessagesAz.php b/languages/messages/MessagesAz.php
index 890db2e4..f2ff7b62 100644
--- a/languages/messages/MessagesAz.php
+++ b/languages/messages/MessagesAz.php
@@ -30,8 +30,8 @@ $namespaceNames = array(
NS_PROJECT_TALK => '$1_müzakirəsi',
NS_FILE => 'Şəkil',
NS_FILE_TALK => 'Şəkil_müzakirəsi',
- NS_MEDIAWIKI => 'MediyaViki',
- NS_MEDIAWIKI_TALK => 'MediyaViki_müzakirəsi',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_müzakirəsi',
NS_TEMPLATE => 'Åžablon',
NS_TEMPLATE_TALK => 'Şablon_müzakirəsi',
NS_HELP => 'Kömək',
@@ -41,27 +41,29 @@ $namespaceNames = array(
);
$namespaceAliases = array(
- 'Mediya' => NS_MEDIA,
+ 'Mediya' => NS_MEDIA,
+ 'MediyaViki' => NS_MEDIAWIKI,
+ 'MediyaViki_müzakirəsi' => NS_MEDIAWIKI_TALK,
);
$specialPageAliases = array(
+ 'Activeusers' => array( 'Aktivİstifadəçilər' ),
+ 'Allpages' => array( 'BütünSəhifələr' ),
+ 'Contributions' => array( 'Fəaliyyətlər' ),
'CreateAccount' => array( 'HesabAç' ),
+ 'Longpages' => array( 'UzunSəhifələr' ),
+ 'Mycontributions' => array( 'MənimFəaliyyətlərim' ),
+ 'Mypage' => array( 'MənimSəhifəm' ),
+ 'Mytalk' => array( 'MənimDanışıqlarım' ),
+ 'Newpages' => array( 'YeniSəhifələr' ),
'Preferences' => array( 'Nizamlamalar' ),
'Recentchanges' => array( 'SonDəyişikliklər' ),
- 'Statistics' => array( 'Statistika' ),
+ 'Search' => array( 'Axtar' ),
'Shortpages' => array( 'QısaSəhifələr' ),
- 'Longpages' => array( 'UzunSəhifələr' ),
- 'Newpages' => array( 'YeniSəhifələr' ),
- 'Allpages' => array( 'BütünSəhifələr' ),
'Specialpages' => array( 'XüsusiSəhifələr' ),
- 'Contributions' => array( 'Fəaliyyətlər' ),
- 'Version' => array( 'Versiya' ),
+ 'Statistics' => array( 'Statistika' ),
'Undelete' => array( 'Pozma' ),
- 'Mypage' => array( 'MənimSəhifəm' ),
- 'Mytalk' => array( 'MənimDanışıqlarım' ),
- 'Mycontributions' => array( 'MənimFəaliyyətlərim' ),
- 'Search' => array( 'Axtar' ),
- 'Activeusers' => array( 'Aktivİstifadəçilər' ),
+ 'Version' => array( 'Versiya' ),
);
$magicWords = array(
@@ -200,15 +202,9 @@ $messages = array(
'listingcontinuesabbrev' => '(davam)',
'index-category' => 'İndeksləşdirilmiş səhifələr',
'noindex-category' => 'İndeksləşdirilməyən səhifələr',
+'broken-file-category' => 'İşləməyən fayl keçidləri olan səhifələr',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''MediaWiki müvəffəqiyyətlə quraşdırıldı.'''",
-'mainpagedocfooter' => 'Bu vikinin istifadəsi ilə bağlı məlumat almaq üçün [http://meta.wikimedia.org/wiki/Help:Contents İstifadəçi məlumat səhifəsinə] baxın.
-
-== Faydalı keçidlər ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Tənzimləmələrin siyahısı]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki haqqında tez-tez soruşulan suallar]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-poçt siyahısı]',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Ä°zah',
'article' => 'Mündəricat',
@@ -260,10 +256,10 @@ $messages = array(
'history' => 'Səhifənin tarixçəsi',
'history_short' => 'Tarixçə',
'updatedmarker' => 'son dəfə mən nəzərdən keçirəndən sonra yenilənib',
-'info_short' => 'Məlumat',
'printableversion' => 'Çap variantı',
'permalink' => 'Daimi bağlantı',
'print' => 'Çap',
+'view' => 'Görünüş',
'edit' => 'RedaktÉ™',
'create' => 'Yarat',
'editthispage' => 'Bu səhifəni redaktə et',
@@ -271,6 +267,7 @@ $messages = array(
'delete' => 'Sil',
'deletethispage' => 'Bu səhifəni sil',
'undelete_short' => '$1 {{PLURAL:$1|dəyişikliyi|dəyişiklikləri}} bərpa et',
+'viewdeleted_short' => '{{PLURAL:$1|bir silinmiş redaktəyə|$1 silinmiş redaktəyə}}',
'protect' => 'Mühafizə et',
'protect_change' => 'dəyiş',
'protectthispage' => 'Bu səhifəni mühafizə et',
@@ -358,6 +355,8 @@ Bax: [[Special:Version|Versiyalar]].',
'toc' => 'Mündəricat',
'showtoc' => 'göstər',
'hidetoc' => 'gizlÉ™',
+'collapsible-collapse' => 'GizlÉ™',
+'collapsible-expand' => 'Göstər',
'thisisdeleted' => '$1 bax və ya bərpa et?',
'viewdeleted' => '$1 göstərilsin?',
'restorelink' => '{{PLURAL:$1|bir silinmiş redaktəyə|$1 silinmiş redaktəyə}}',
@@ -371,6 +370,8 @@ Bax: [[Special:Version|Versiyalar]].',
'feed-atom' => 'Atom',
'feed-rss' => 'RSS',
'red-link-title' => '$1 (səhifə mövcud deyil)',
+'sort-descending' => 'Azalan ardıcıllıq',
+'sort-ascending' => 'Artan ardıcıllıq',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Məqalə',
@@ -454,12 +455,11 @@ SorÄŸu: $2',
'protectedinterface' => 'Bu səhifədə proqram təminatı üçün sistem məlumatları var və sui-istifadənin qarşısını almaq üçün mühafizə olunmalıdır.',
'editinginterface' => "'''Diqqət!''' Siz proqram təminatı interfeysinin mətn olan səhifəsini redaktə edirsiniz.
Onun dəyişdirilməsi digər istifadəçilərin interfeysinin xarici görünüşünə təsir göstərir.
-Tərcümə üçün daha yaxşı olar ki, MediaWiki-nin lokallaşması üçün olan [http://translatewiki.net/wiki/Main_Page?setlang=az translatewiki.net] layihəsindən istifadə edəsiniz.",
+Tərcümə üçün daha yaxşı olar ki, MediaWiki-nin lokallaşması üçün olan [//translatewiki.net/wiki/Main_Page?setlang=az translatewiki.net] layihəsindən istifadə edəsiniz.",
'sqlhidden' => '(SQL gizli sorÄŸu)',
'cascadeprotected' => 'Səhifə mühafizə olunub, çünki o kaskad mühafizə olunan {{PLURAL:$1|növbəti səhifəyə|növbəti səhifələrə}} qoşulub:
$2',
'namespaceprotected' => 'Sizin adlarında $1 olan məqalələrdə redaktə etməyə icazəniz yoxdur.',
-'customcssjsprotected' => 'Sizin bu səhifədə redaktə etməyə icazəniz yoxdur. Çünki bu səhifədə başqa istifadəçinin şəxsi məlumatları var.',
'ns-specialprotected' => 'Xüsusi səhifələr redaktə oluna bilməz.',
'titleprotected' => 'Bu adda səhifənin yaradılması istifadəçi [[User:$1|$1]] tərəfindən qadağan edilmişdir.
Göstərilən səbəb: "\'\'$2\'\'".',
@@ -496,6 +496,7 @@ Hesabınız yaradıldı.
'createaccount' => 'Hesab aç',
'gotaccount' => "Giriş hesabınız varsa '''$1'''.",
'gotaccountlink' => 'daxil olun',
+'userlogin-resetlink' => 'Daxilolma məlumatlarınızı unutmusunuz?',
'createaccountmail' => 'e-məktub ilə',
'createaccountreason' => 'Səbəb:',
'badretype' => 'Daxil etdiyiniz parol uyğun gəlmir.',
@@ -508,13 +509,16 @@ Lütfən başqa ad seçin.',
Siz "cookie"lərin qəbuluna qadağa qoymusunuz.
Lütfən, onları qəbul etməyə icazə verdikdən sonra yeni istifadəçi adı və parolunuzla daxil olun.',
'nocookieslogin' => '{{SITENAME}} istifadəçilərin daxil ola bilməsi üçün "cookie"lərdən istifadə edir. Siz "cookie"lərin qəbuluna qadağa qoymusunuz. Lütfən, onların qəbuluna icazə verin və bir daha daxil olmağa cəhd edin.',
+'nocookiesfornew' => 'İstifadəçinin akkauntu yaradılmayıb, ona görə də biz onun mənbəsini təsdiqləyə bilmədik.
+Kukların qoşulmasına əmin olduqdan sonra səhifəni yeniləyib bir daha sınayın.',
+'nocookiesforlogin' => '{{int:nocookieslogin}}',
'noname' => 'Siz mövcud olan istifadəçi adı daxil etməmisiniz.',
'loginsuccesstitle' => 'Daxil oldunuz',
'loginsuccess' => "'''\"\$1\" adı ilə {{SITENAME}}ya daxil oldunuz.'''",
'nosuchuser' => '"$1" adında istifadəçi mövcud deyil.
İstifadəçi adları hərflərin böyük və ya kiçik olmasına həssasdırlar.
Düzgün yazdığına əmin ol, yaxud [[Special:UserLogin/signup|yeni hesab aç]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" adında istifadəçi mövcud deyil.
+'nosuchusershort' => '"$1" adında istifadəçi mövcud deyil.
Düzgün yazdığına əmin ol.',
'nouserspecified' => 'İstifadəçi adı daxil etməlisiniz.',
'login-userblocked' => 'Bu istifadəçi bloklanıb. Sistemə giriş üçün icazə verilmir.',
@@ -545,13 +549,14 @@ Xahiş edirik düzgün formatlı ünvan daxil edin və ya bu sahəni boş qoyun.
'usernamehasherror' => 'İstifadəçi adında "diyez" simvolunun istifadəsi mümkün deyil',
'login-throttled' => 'Sistemə daxil olmaq üçün həddən artıq cəhd etmisiniz.
Yeni cəhd etməzdən əvvəl bir qədər gözləyin.',
+'login-abort-generic' => 'Giriş uğursuz alındı - Rədd',
'loginlanguagelabel' => 'Dil: $1',
'suspicious-userlogout' => 'Sizin çıxış üçün cəhdiniz uğursuz alındı. Bu, brouzerin yaxud proksi-keşləmənin düzgün işləməməsindən qaynaqlanır.',
# E-mail sending
'php-mail-error-unknown' => 'PHP-nin mail() funksiyasında naməlum xəta',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Parolu dəyiş',
'resetpass_announce' => 'Siz sistemə müvəqqəti elektron poçt kodu ilə daxil olmusunuz.
Sistemə daxil olmanı yekunlaşdırmaq üçün yeni parolu bura yazmalısınız:',
@@ -570,6 +575,19 @@ Sistemə daxil olmanı yekunlaşdırmaq üçün yeni parolu bura yazmalısınız
Ola bilər siz parolu müvəffəqiyyətlə dəyişmisiniz yaxud müvəqqəti parol üçün müraciət etmisiniz.',
'resetpass-temp-password' => 'Müvəqqəti parol:',
+# Special:PasswordReset
+'passwordreset' => 'Parolu yenilÉ™',
+'passwordreset-text' => 'Akkauntunuz haqqında xatırlatmanı elektron poçt vasitəsilə ala bilməniz üçün bu formanı doldurun.',
+'passwordreset-legend' => 'Parolu yenilÉ™',
+'passwordreset-disabled' => 'Yenidən qurulma parolu bu vikidə işləmir',
+'passwordreset-pretext' => '{{PLURAL:$1||Enter one of the pieces of data below}}',
+'passwordreset-username' => 'İstifadəçi adı:',
+'passwordreset-email' => 'E-mail ünvanı:',
+'passwordreset-emailtitle' => '{{SITENAME}} hesabın yaradılması',
+'passwordreset-emailelement' => 'İstifadəçi adı: $1
+Müvəqqəti parol: $2',
+'passwordreset-emailsent' => 'Xəbərdarlıq məktubu e-maillə göndərildi.',
+
# Edit page toolbar
'bold_sample' => 'Qalın mətn',
'bold_tip' => 'Qalın mətn',
@@ -581,8 +599,6 @@ Ola bilər siz parolu müvəffəqiyyətlə dəyişmisiniz yaxud müvəqqəti par
'extlink_tip' => 'Xarici səhifə (http:// ekini unutma)',
'headline_sample' => 'Başlıq mətni',
'headline_tip' => '2. səviyyə başlıq',
-'math_sample' => 'Riyazi formulu bura yazın',
-'math_tip' => 'Riyazi formul (LaTeX formatı)',
'nowiki_sample' => 'Formatlaşdırılmamış mətni bura daxil edin',
'nowiki_tip' => 'Viki formatını sayma',
'image_sample' => 'Misal.jpg',
@@ -637,7 +653,7 @@ vÉ™ ya sÉ™hifÉ™ni [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktÉ™]</span> edÉ
'noarticletext-nopermission' => 'Hal-hazırda bu səhifə boşdur. Başqa səhifələrdə eyni adda səhifəni [[Special:Search/{{PAGENAME}}| axtara]], əlaqəli qeydlərə
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} baxa],
və ya səhifəni [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktə]</span> edə bilərsiniz.',
-'userpage-userdoesnotexist' => '"$1" istifadəçi adı qeydiyyata alınmayıb.
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" istifadəçi adı qeydiyyata alınmayıb.
ÆgÉ™r siz bu sÉ™hifÉ™ni yaratmaq/redaktÉ™ etmÉ™k istÉ™yirsinizsÉ™, xahiÅŸ edirik bunu yoxlayın.',
'userpage-userdoesnotexist-view' => '"$1" istifadəçi hesabı qeydiyyatda deyil',
'blocked-notice-logextract' => 'Bu istifadəçi hal-hazırda bloklanmışdır.
@@ -680,6 +696,7 @@ Siz eyni zamanda söz verirsiniz ki, bu yazıları siz özünüz yazmısınız v
'template-protected' => '(mühafizə)',
'template-semiprotected' => '(yarım-mühafizə)',
'hiddencategories' => 'Bu səhifə {{PLURAL:$1|1 gizli kateqoriyaya|$1 gizli kateqoriyaya}} aiddir:',
+'edittools-upload' => '-',
'nocreatetitle' => 'Səhifə yaratma məhdudlaşdırılıb.',
'nocreatetext' => '{{SITENAME}} saytında yeni səhifələrin yaradılması imkanları məhdudlaşdırılıb.
Siz geri qayıdıb mövcud səhifəni və ya [[Special:UserLogin|sistemə təqdim olunma və ya yeni hesab açmaq]] səhifəsini redaktə edə bilərsiniz.',
@@ -884,7 +901,7 @@ $1",
'shown-title' => 'Səhifə üçün $1 {{PLURAL:$1|nəticə|nəticəyə}} bax',
'viewprevnext' => 'Göstər ($1 {{int:pipe-separator}} $2) ($3).',
'searchmenu-legend' => 'Axtarış kriteriyaları',
-'searchmenu-exists' => "'''Bu vikidə \"[[:\$1]]\" adında səhifə mövcutdur'''",
+'searchmenu-exists' => "'''Bu vikidə \"[[:\$1]]\" adında səhifə mövcuddur'''",
'searchmenu-new' => "'''Bu vikidə \"[[:\$1]]\" səhifəsini yarat!'''",
'searchhelp-url' => 'Help:Mündəricət',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Bu cür prefiksli səhifələri göstər]]',
@@ -946,8 +963,8 @@ $1",
'changepassword' => 'Parolu dəyiş',
'prefs-skin' => 'Cild',
'skin-preview' => 'Sınaq göstərişi',
-'prefs-math' => 'Riyaziyyat',
'datedefault' => 'Seçim yoxdur',
+'prefs-beta' => 'Beta xüsusiyyətlər',
'prefs-datetime' => 'Tarix vÉ™ vaxt',
'prefs-personal' => 'İstifadəçi profili',
'prefs-rc' => 'Son dəyişikliklər',
@@ -970,8 +987,6 @@ $1",
'columns' => 'Sütunlar:',
'searchresultshead' => 'Axtar',
'resultsperpage' => 'Səhifəyə aid tapılmış nəticələr:',
-'contextlines' => 'Nəticələrə aid sıralar:',
-'contextchars' => 'Sıraya aid işarələr:',
'stub-threshold' => '<a href="#" class="stub">Keçidsiz linki</a> format etmək üçün hüdud (baytlarla):',
'stub-threshold-disabled' => 'Kənarlaşdırılıb',
'recentchangesdays' => 'Son dəyişiklərdə göstərilən günlərin miqdarı:',
@@ -984,7 +999,7 @@ Təsadüfi yolla seçilmiş bu paroldan istifadə edə bilərsiniz: $1',
'savedprefs' => 'Seçiminiz qeyd edildi.',
'timezonelegend' => 'Vaxt zonası:',
'localtime' => 'Yerli vaxt:',
-'timezoneuseserverdefault' => 'Susmaya görə serverdən istifadə',
+'timezoneuseserverdefault' => 'Susmaya görə serverdən istifadə ($1)',
'timezoneuseoffset' => 'Digər (fərqi göstərmək)',
'timezoneoffset' => 'Vaxt fərqi¹:',
'servertime' => 'Server vaxtı:',
@@ -1031,8 +1046,8 @@ HTML kodu yoxla.',
'email' => 'E-məktub',
'prefs-help-realname' => 'Həqiqi adınızı daxil etmək məcburi deyil.
Bu seçimi etdiyiniz halda, adınız redaktələrinizə görə müəlliflik hüququnuzun tanınması üçün istifadə ediləcək.',
-'prefs-help-email' => 'E-məktub ünvanınızı daxil etmək qeyri-məcburidir.
-Bu parolunuzu unutduğunuz halda sizə yeni parol göndərməyə imkan verir.
+'prefs-help-email' => 'E-poçt ünvanınızı daxil etmək məcburi deyil.
+Bu parolunuzu unutduğunuz halda Sizə yeni parol göndərməyə imkan verir.
Həmçinin kimliyinizi gostərmədən belə, başqalarının sizinlə istifadəçi və ya istifadəçi müzakirəsi səhifələriniz vasitəsi ilə əlaqə yaratmalarını seçə bilərsiniz.',
'prefs-help-email-required' => 'Elektron ünvan tələb olunur.',
'prefs-info' => 'Æsas mÉ™lumatlar',
@@ -1151,7 +1166,6 @@ HÉ™mçinin kimliyinizi gostÉ™rmÉ™dÉ™n belÉ™, baÅŸqalarının sizinlÉ™ istifadÉ™Ã
'right-userrights' => 'Bütün istifadəçi hüquqlarının redaktə edilməsi',
'right-userrights-interwiki' => 'Digər vikilərdəki istifadəçilərin istifadəçi hüquqlarını dəyişdir',
'right-siteadmin' => 'Məlumatlar bazasının bloklanması və blokun götürülməsi',
-'right-reset-passwords' => 'Digər istifadəçi parollarını ləğv etmək',
'right-sendemail' => 'Digər istifadəçilərə elektron poçt göndər',
# User rights log
@@ -1281,6 +1295,7 @@ Məqaləyə fayl yerləşdirmək üçün aşağıdaki formalardan birini istifad
'minlength1' => 'Fayl adı ən azı bir hərfdən ibarət olmalıdır.',
'illegalfilename' => '"$1" fayl adında səhifə adlarında istifadəsinə yol verilməyən simvollar var. Lütfən faylın adını dəyişin və yenidən yükləməyə cəhd edin.',
'badfilename' => 'Faylın adı dəyişildi. Yeni adı: "$1".',
+'filetype-mime-mismatch' => '".$1" fayl uzantısı faylın MIME tipinə ($2) uyğun gəlmir.',
'filetype-badmime' => '"$1" MIME tipindəki faylların yüklənməsinə icazə verilmir.',
'filetype-missing' => 'Faylın heç bir uzantısı yoxdur (məsələn, ".jpg").',
'empty-file' => 'Göndərdiyiniz fayl boşdur.',
@@ -1315,10 +1330,6 @@ Detallar: $1',
'upload-description' => 'Faylın izahı',
'upload-options' => 'Yükləmə parametrləri',
'watchthisupload' => 'Bu faylı izlə',
-'upload-wasdeleted' => "'''Diqqət! Siz əvvəl bu ad altında mövcud olmuş və silinmiş faylı yenidən yükləməkdəsiniz'''
-
-ÆvvÉ™lcÉ™dÉ™n bu faylı yenidÉ™n yüklÉ™mÉ™yin nÉ™ dÉ™rÉ™cÉ™dÉ™ lazımlı olduÄŸunu müəyyÉ™nləşdirmÉ™yiniz mÉ™slÉ™hÉ™tdir.
-Bu səhifənin silmə qeydləri aşağıda göstərilmişdir:",
'filename-prefix-blacklist' => ' #<!-- Bu sətrə toxunmayın --> <pre>
# Sintaksis aşağıdakı kimi görünür:
# * "#" simvolundan sətrin sonuna kimi yazılar şərhdir
@@ -1347,6 +1358,11 @@ $1',
'upload-unknown-size' => 'Naməlum həcm',
'upload-http-error' => ' HTTP xətası var : $1',
+# Special:UploadStash
+'uploadstash' => 'Gizli yükləmə',
+'uploadstash-clear' => 'Müvəqqəti faylları təmizlə',
+'uploadstash-refresh' => 'Fayl siyahısını yenilə',
+
# img_auth script messages
'img-auth-accessdenied' => 'Giriş qadağandır',
'img-auth-nofile' => 'Fayl "$1" mövcud deyil.',
@@ -1401,6 +1417,7 @@ $1',
'imagelinks' => 'Fayl keçidləri',
'linkstoimage' => '{{PLURAL:$1|səhifə|$1 səhifə}} bu fayla istinad edir:',
'nolinkstoimage' => 'Bu fayla keçid verən səhifə yoxdur.',
+'linkstoimage-redirect' => '$1 (fayl istiqamətləndirilir) $2',
'sharedupload' => 'Bu fayl $1-dandır və ola bilsin ki, başqa layihələrdə də istifadə edilir.',
'uploadnewversion-linktext' => 'Bu faylın yeni versiyasını yüklə',
'shared-repo-from' => '$1-dən',
@@ -1477,10 +1494,11 @@ $1',
'disambiguations-text' => "Aşağıdakı səhifələr '''dəqiqləşdirmə səhifələrinə''' keçid verir. Bunun əvəzinə onlar çox guman ki, müvafiq konkret bir məqaləni göstərməlidirlər.
<br />Səhifə o zaman dəqiqləşdirmə səhifəsi hesab edilir ki, onda [[MediaWiki:Disambiguationspage]]-dən keçid verilmiş şablon istifadə edilir.",
-'doubleredirects' => 'İkiqat istiqamətləndirmələr',
-'double-redirect-fixed-move' => '[[$1]] dəyişdirilib.
+'doubleredirects' => 'İkiqat istiqamətləndirmələr',
+'double-redirect-fixed-move' => '[[$1]] dəyişdirilib.
Hazırda [[$2]]-yə istiqamətlənib.',
-'double-redirect-fixer' => 'Yönləndirmə səhvdir',
+'double-redirect-fixed-maintenance' => '[[$1]]-dən [[$2]]-yə ikiqat istiqamətlənmə düzəldilir.',
+'double-redirect-fixer' => 'Yönləndirmə səhvdir',
'brokenredirects' => 'Xətalı istiqamətləndirmə',
'brokenredirectstext' => 'Aşağıdakı istiqamətləndirmələr mövcud olmayan səhifələrə keçid verir:',
@@ -1643,25 +1661,28 @@ Fərdi hüquqlar haqqında əlavə məlumatı [[{{MediaWiki:Listgrouprights-help
'listgrouprights-removegroup-self-all' => 'Bütün qrupları öz hesabından çıxara bilər',
# E-mail user
-'mailnologin' => 'Ãœnvan yoxdur',
-'emailuser' => 'İstifadəçiyə e-məktub yolla',
-'emailpage' => 'İstifadəçiyə e-məktub yolla',
-'usermailererror' => 'Elektron poçtla məlumat göndərilən zaman xəta baş vermişdir:',
-'defemailsubject' => '{{SITENAME}} e-məktub',
-'usermaildisabled' => 'İstifadəçi e-maili işləmir',
-'noemailtitle' => 'E-məktub ünvanı yoxdur',
-'noemailtext' => 'Bu istifadəçi işlək e-məktub ünvanını qeyd etməmişdir.',
-'nowikiemailtitle' => 'E-poçtlara icazə verilmir',
-'email-legend' => 'Digər {{SITENAME}} istifadəçilərinə ismarıc yollamaq',
-'emailfrom' => 'Kimdən:',
-'emailto' => 'KimÉ™',
-'emailsubject' => 'Mövzu:',
-'emailmessage' => 'Mesaj:',
-'emailsend' => 'Göndər',
-'emailccme' => 'Məktubun surətini elektron ünvanıma göndər.',
-'emailccsubject' => ' $1: $2-yə olan ismarıclarınızın surəti',
-'emailsent' => 'E-məktub göndərildi',
-'emailsenttext' => 'E-məktub mesajınız göndərildi.',
+'mailnologin' => 'Ãœnvan yoxdur',
+'emailuser' => 'İstifadəçiyə e-məktub yolla',
+'emailpage' => 'İstifadəçiyə e-məktub yolla',
+'usermailererror' => 'Elektron poçtla məlumat göndərilən zaman xəta baş vermişdir:',
+'defemailsubject' => '{{SITENAME}} e-məktub',
+'usermaildisabled' => 'İstifadəçi e-maili işləmir',
+'noemailtitle' => 'E-məktub ünvanı yoxdur',
+'noemailtext' => 'Bu istifadəçi işlək e-məktub ünvanını qeyd etməmişdir.',
+'nowikiemailtitle' => 'E-poçtlara icazə verilmir',
+'emailtarget' => 'Qəbul edən istifadəçinin adını daxil edin',
+'emailusername' => 'İstifadəçi adı:',
+'emailusernamesubmit' => 'Göndər',
+'email-legend' => 'Digər {{SITENAME}} istifadəçilərinə ismarıc yollamaq',
+'emailfrom' => 'Kimdən:',
+'emailto' => 'KimÉ™',
+'emailsubject' => 'Mövzu:',
+'emailmessage' => 'Mesaj:',
+'emailsend' => 'Göndər',
+'emailccme' => 'Məktubun surətini elektron ünvanıma göndər.',
+'emailccsubject' => ' $1: $2-yə olan ismarıclarınızın surəti',
+'emailsent' => 'E-məktub göndərildi',
+'emailsenttext' => 'E-məktub mesajınız göndərildi.',
# User Messenger
'usermessage-summary' => 'Sistem mesajı qoyun.',
@@ -1675,11 +1696,8 @@ Fərdi hüquqlar haqqında əlavə məlumatı [[{{MediaWiki:Listgrouprights-help
'nowatchlist' => 'İzləmə siyahınız böşdur.',
'watchnologin' => 'Daxil olmamısınız',
'watchnologintext' => 'İzləmə siyahınızda dəyişiklik aparmaq üçün [[Special:UserLogin|daxil olmalısınız]].',
-'addedwatch' => 'İzləmə siyahısına əlavə edildi.',
-'addedwatchtext' => '"$1" səhifəsi [[Special:Watchlist|izlədiyiniz səhifələrə]] əlavə edildi. Bu səhifədə və əlaqəli müzakirə səhifəsində olacaq dəyişikliklər orada göstəriləcək və səhifə asanlıqla seçiləbilmək üçün [[Special:RecentChanges|son dəyişikliklər]]-də qalın şriftlərlə görsənəcəkdir.
-
-Səhifəni izləmə sıyahınızdan çıxarmaq üçün yan lovhədəki "izləmə" düyməsinə vurun.',
-'removedwatch' => 'İzləmə siyahısından çıxardılıb',
+'addwatch' => 'İzləmə siyahısına əlavə et',
+'addedwatchtext' => '"[[:$1]]" səhifəsi [[Special:Watchlist|izlədiyiniz səhifələr]] siyahısına əlavə edildi. Bu səhifədə və əlaqəli müzakirə səhifəsindəki bütün dəyişikliklər orada göstəriləcək və səhifə asanlıqla seçiləbilmək üçün [[Special:RecentChanges|son dəyişikliklərdə]] qalın şriftlərlə görünəcəkdir. <p> Səhifəni izləmə siyahınızdan çıxarmaq üçün yan lövhədəki "izləmə" düyməsinə vurun.',
'removedwatchtext' => '"[[:$1]]" səhifəsi [[Special:Watchlist|izləmə siyahınızdan]] çıxarıldı.',
'watch' => 'Ä°zlÉ™',
'watchthispage' => 'Bu səhifəni izlə',
@@ -1731,10 +1749,10 @@ Siz haqqında söhbÉ™t gedÉ™n sÉ™hifÉ™yÉ™ baxanadÉ™k sÉ™hifÉ™dÉ™ki digÉ™r dÉ™yiÅ
--
İzləmə siyahısının tənzimləmələrini dəyişmək üçün:
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:Special:Watchlist/edit}}
Yardım və təklifləriniz üçün:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Səhifəni sil',
@@ -1750,7 +1768,7 @@ Yardım və təklifləriniz üçün:
'confirmdeletetext' => 'Bu səhifə və ya fayl bütün tarixçəsi ilə birlikdə birdəfəlik silinəcək. Bunu [[{{MediaWiki:Policy-url}}|qaydalara]] uyğun etdiyinizi və əməliyyatın nəticələrini başa düşdüyünüzü təsdiq edin.',
'actioncomplete' => 'Fəaliyyət tamamlandı',
'actionfailed' => 'ÆmÉ™liyyat yerinÉ™ yetirilmÉ™di',
-'deletedtext' => '"<nowiki>$1</nowiki>" silindi.
+'deletedtext' => '"$1" silindi.
Sonuncu silinmələrə bax: $2.',
'deletedarticle' => '"[[$1]]" silindi',
'suppressedarticle' => '"[[$1]]" gizlədildi',
@@ -1794,7 +1812,7 @@ Sonuncu silinmələrə bax: $2.',
'protect_expiry_invalid' => 'Mühafizənin bitmə vaxtı səhvdir.',
'protect_expiry_old' => 'Bitmə vaxtı keçmişdir.',
'protect-unchain-permissions' => 'Mühafizənin əlavə parametrlərini açmaq',
-'protect-text' => "Siz '''<nowiki>$1</nowiki>''' səhifəsinin mühafizə səviyyəsini görə və dəyişə bilərsiniz.",
+'protect-text' => "Siz '''$1''' səhifəsinin mühafizə səviyyəsini görə və dəyişə bilərsiniz.",
'protect-locked-blocked' => "Səhifənin bloklu olduğu müddətdə siz mühafizə səviyyəsini dəyişə bilməzsiniz.
'''$1''' səhifəsində hal-hazırda edə biləcəyiniz əməliyyatlar bunlardır:",
'protect-locked-dblock' => "Verilənlər bazası kilidli olduğu üçün mühafizə səviyyəsi dəyişilə bilməz.
@@ -1874,9 +1892,10 @@ $1',
'undelete-show-file-submit' => 'Bəli',
# Namespace form on various pages
-'namespace' => 'Adlar fəzası:',
-'invert' => 'Seçilən xaricindəkiləri',
-'blanknamespace' => '(Ana)',
+'namespace' => 'Adlar fəzası:',
+'invert' => 'Seçilən xaricindəkiləri',
+'namespace_association' => 'ÆlaqÉ™li ad sahÉ™si',
+'blanknamespace' => '(Ana)',
# Contributions
'contributions' => 'İstifadəçi fəaliyyəti',
@@ -1927,10 +1946,12 @@ Bloklama qeydlərinin sonuncusu aşağıda göstərilmişdir:',
'whatlinkshere-filters' => 'Filtrlər',
# Block/unblock
+'autoblockid' => 'Avtoblok #$1',
+'block' => 'İstifadəçini blokla',
+'unblock' => 'İstifadəçinin blokunu götür',
'blockip' => 'İstifadəçini blokla',
'blockip-title' => 'İstifadəçini blokla',
'blockip-legend' => 'İstifadəçinin bloklanması',
-'ipaddress' => 'IP ünvanı',
'ipadressorusername' => 'IP-ünvanı və ya istifadəçi adı',
'ipbexpiry' => 'Bitmə müddəti:',
'ipbreason' => 'Səbəb:',
@@ -1944,7 +1965,6 @@ Bloklama qeydlərinin sonuncusu aşağıda göstərilmişdir:',
** Təhqirə görə
** Çoxsaylı hesabdan sui istifadəyə görə
** Qadağan olunmuş istifadəçi adına görə',
-'ipbanononly' => 'Yalnız anonim istifadəçiləri blokla',
'ipbcreateaccount' => 'Hesab açmanı məhdudlaşdır',
'ipbsubmit' => 'Bu istifadəçini blokla',
'ipbother' => 'BaÅŸqa vaxt',
@@ -1953,11 +1973,15 @@ Bloklama qeydlərinin sonuncusu aşağıda göstərilmişdir:',
'ipbotherreason' => 'Başqa/əlavə səbəb:',
'ipbhidename' => 'İstifadəçi adını redaktələrdə və siyahılarda gizlət',
'ipbwatchuser' => 'Bu istifadəçinin müzakirə və istifadəçi səhifəsini izlə',
+'ipb-disableusertalk' => 'Bu istifadəçi bloklu olarkən öz müzakirə səhifəsində redaktə etməsini əngəllə',
'ipb-change-block' => 'Bu səbəblərlə istifadəçini yenidən blokla',
+'ipb-confirm' => 'Bloku təsdiqlə',
'badipaddress' => 'Səhv IP',
'blockipsuccesssub' => 'bloklandı',
'blockipsuccesstext' => '[[Special:Contributions/$1| $1]]bloklanıb..<br />
Bax [[Special:IPBlockList|IP blok siyahısı]] bloklanmış IP-lər.',
+'ipb-blockingself' => 'Özünü bloklayacaqsınız.! Bunu etmək istədiyinizdən əminsinizmi?',
+'ipb-confirmhideuser' => 'İstifadəçini bloklamaq və redaktə siyahısından onun adını silmək üzərəsiniz. Bunu etmək istədiyinizdən əminsinizmi?',
'ipb-edit-dropdown' => 'Bloklama səbəblərini redaktə et',
'ipb-unblock-addr' => '$1 üzərindəki blok götürüldü',
'ipb-unblock' => 'Bloku götür',
@@ -1967,15 +1991,23 @@ Bax [[Special:IPBlockList|IP blok siyahısı]] bloklanmış IP-lər.',
'unblockiptext' => 'ÆvvÉ™lcÉ™dÉ™n bloklanmış bir IP ünvanına vÉ™ ya istifadəçi adına yazma geri vermek için aÅŸağıdakı formadan istifadÉ™ edin.',
'ipusubmit' => 'Bu bloku götür',
'unblocked' => '[[User:$1|$1]] - nin bloku götürüldü',
+'unblocked-range' => '$1-nin bloku götürüldü',
'unblocked-id' => '$1-nin bloku götürüldü',
+'blocklist' => 'Bloklanmış istifadəçilər',
'ipblocklist' => 'Bloklanmış istifadəçilər',
'ipblocklist-legend' => 'Bloklanmış istifadəçini axtar',
-'ipblocklist-username' => 'İstifadəçi adı və ya IP ünvanı:',
-'ipblocklist-sh-addressblocks' => '$1 tək IP blokları',
+'blocklist-userblocks' => 'Hesab bloklarını gizlət',
+'blocklist-tempblocks' => 'Müvəqqəti blokları gizlə',
+'blocklist-addressblocks' => 'Tək IP bloklarını gizlə',
+'blocklist-timestamp' => 'Vaxt',
+'blocklist-target' => 'Hədəf',
+'blocklist-expiry' => 'BitiÅŸ tarixi',
+'blocklist-by' => 'Bloklamış idarəçi',
+'blocklist-params' => 'Blok parametrləri',
+'blocklist-reason' => 'Səbəb',
'ipblocklist-submit' => 'Axtar',
'ipblocklist-localblock' => 'Yerli blok',
'ipblocklist-otherblocks' => 'BaÅŸqa {{PLURAL:$1|bloklama|bloklamalar}}',
-'blocklistline' => '$1, $2 bloklandı $3 ($4)',
'infiniteblock' => 'müddətsiz',
'expiringblock' => 'son tarix $1 saat $2',
'anononlyblock' => 'yalnız anonim istifadəçi',
@@ -1998,7 +2030,7 @@ $1 adlı istifadəçinin bloklanma səbəbi: "$2"',
'reblock-logentry' => '[[$1]] üçün son tarixi $2 $3 olmaq üzərə blok parametrləri dəyişdirildi',
'blocklogtext' => 'İstifadəçilərin bloklanması və blokun götürülməsi siyahısı.
Avtomatik bloklanmış IP-ünvanlar burada göstərilmir.
-Hal-hazırkı [[Special:IPBlockList|qadağaların və bloklamaların siyahısı]]na bax.',
+Hal-hazırkı [[Special:BlockList|qadağaların və bloklamaların siyahısı]]na bax.',
'unblocklogentry' => '$1 üzərindəki blok götürüldü',
'block-log-flags-anononly' => 'yalnız qeydiyyatsız istifadəçilər',
'block-log-flags-nocreate' => 'Yeni hesab yaratma bloklanıb',
@@ -2012,10 +2044,10 @@ Hal-hazırkı [[Special:IPBlockList|qadağaların və bloklamaların siyahısı]
'ipb_expiry_temp' => 'Gizli istifadəçi adı bloklamaları müddətsiz olmalıdır.',
'ipb_hide_invalid' => 'İstifadəçi hesabınln gizlədilməsi qeyri-mümkündür; həddən çox redaktəsi var.',
'ipb_already_blocked' => '"$1" artıq bloklanıb',
-'ipb-needreblock' => '== Artıq bloklanıb ==
-$1 artıq bloklanıb.
+'ipb-needreblock' => '$1 artıq bloklanıb.
Bloklama şərtlərini dəyişmək istəyirsiniz?',
'ipb-otherblocks-header' => 'BaÅŸqa {{PLURAL:$1|bloklama|bloklamalar}}',
+'unblock-hideuser' => 'İstifadəçi adı gizli olduğu üçün, bi bloku götürə bilməzsiniz.',
'ipb_cant_unblock' => 'Xəta: Bloklama IDsi $1 tapılmadı. Bloklamanın götürülməsi mümkündür.',
'ip_range_invalid' => 'Yanlış IP',
'blockme' => 'Məni blokla',
@@ -2035,6 +2067,7 @@ Bloklama şərtlərini dəyişmək istəyirsiniz?',
'unlockdbsuccesssub' => 'Bloklanma verilənlər bazası silinib',
'unlockdbsuccesstext' => 'Verilənlər bazası bağlanmış aola bilər.',
'databasenotlocked' => 'Verilənlər bazası bloklanmayıb.',
+'lockedbyandtime' => '(by {{GENDER:$1|$1}} on $2 at $3)',
# Move page
'move-page' => 'Dəyişdir $1',
@@ -2113,7 +2146,7 @@ Zəhmət olmasa başqa ad seçin.',
'allmessagesname' => 'Ad',
'allmessagesdefault' => 'İlkin mətn',
'allmessagescurrent' => 'İndiki mətn',
-'allmessagestext' => 'Bu MediaWiki-dÉ™ olan sistem mesajlarının siyahısıdır. ÆgÉ™r MediaWiki-ni lokallaÅŸdırmaq iÅŸindÉ™ kömÉ™k etmÉ™k isÉ™yirsinizsÉ™, lütfÉ™n [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] vÉ™ [http://translatewiki.net translatewiki.net]-É™ baÅŸ çəkin.',
+'allmessagestext' => 'Bu MediaWiki-dÉ™ olan sistem mesajlarının siyahısıdır. ÆgÉ™r MediaWiki-ni lokallaÅŸdırmaq iÅŸindÉ™ kömÉ™k etmÉ™k isÉ™yirsinizsÉ™, lütfÉ™n [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] vÉ™ [//translatewiki.net translatewiki.net]-É™ baÅŸ çəkin.',
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter-unmodified' => 'Dəyişdirilməmiş',
'allmessages-filter-all' => 'Hamısı',
@@ -2227,33 +2260,39 @@ Zəhmət olmasa başqa ad seçin.',
'tooltip-summary' => 'Qısa rezyume daxil edin',
# Stylesheets
-'common.css' => '/* Burada yerləşən CSS bütün skinlərə tətbiq olunur */',
-'standard.css' => '/* Burada yerləşən CSS Standard skin istifadəçilərinə tətbiq olunur */',
-'nostalgia.css' => '/* Burada yerləşən CSS Nostalgia skin istifadəçilərinə tətbiq olunur */',
-'cologneblue.css' => '/* Burada yerləşən CSS Cologne Blue skin istifadəçilərinə tətbiq olunur */',
-'monobook.css' => '/* Burada yerləşən CSS Monobook skin istifadəçilərinə tətbiq olunur */',
-'myskin.css' => '/* Burada yerləşən CSS MySkin skin istifadəçilərinə tətbiq olunur */',
-'chick.css' => '/* Burada yerləşən CSS Chick skin istifadəçilərinə tətbiq olunur */',
-'simple.css' => '/* Burada yerləşən CSS Simple skin istifadəçilərinə tətbiq olunur */',
-'modern.css' => '/* Burada yerləşən CSS Modern skin istifadəçilərinə tətbiq olunur */',
-'vector.css' => '/* Burada yerləşən CSS Vector istifadəçilərinə tətbiq olunur */',
+'common.css' => '/* Burada yerləşən CSS bütün skinlərə tətbiq olunur */',
+'standard.css' => '/* Burada yerləşən CSS Standard skin istifadəçilərinə tətbiq olunur */',
+'nostalgia.css' => '/* Burada yerləşən CSS Nostalgia skin istifadəçilərinə tətbiq olunur */',
+'cologneblue.css' => '/* Burada yerləşən CSS Cologne Blue skin istifadəçilərinə tətbiq olunur */',
+'monobook.css' => '/* Burada yerləşən CSS Monobook skin istifadəçilərinə tətbiq olunur */',
+'myskin.css' => '/* Burada yerləşən CSS MySkin skin istifadəçilərinə tətbiq olunur */',
+'chick.css' => '/* Burada yerləşən CSS Chick skin istifadəçilərinə tətbiq olunur */',
+'simple.css' => '/* Burada yerləşən CSS Simple skin istifadəçilərinə tətbiq olunur */',
+'modern.css' => '/* Burada yerləşən CSS Modern skin istifadəçilərinə tətbiq olunur */',
+'vector.css' => '/* Burada yerləşən CSS Vector istifadəçilərinə tətbiq olunur */',
+'group-autoconfirmed.css' => '/* Burada yerləşən CSS yalnız avtotəsdiqlənmiş istifadəçilərə şamil olunur */',
+'group-bot.css' => '/* Burada yerləşən CSS yalnız botlara şamil olunur */',
+'group-sysop.css' => '/* Burada yerləşən CSS yalnız idarəçilərə şamil olunur */',
+'group-bureaucrat.css' => '/* Burada yerləşən CSS yalnız bürokratlara şamil olunur */',
# Scripts
-'common.js' => '/* Burada istifadəçilərin hamısı üçün bütün səhifələrdə istənilən JavaScript yüklənəcək */',
-'standard.js' => '/* Burada Standard skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
-'nostalgia.js' => '/* Burada Nostalgia skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
-'cologneblue.js' => '/* Burada Cologne Blue skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
-'monobook.js' => '/* Burada MonoBook skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
-'myskin.js' => '/* Burada MySkin skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
-'chick.js' => '/* Burada Chick skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
-'simple.js' => '/* Burada Simple skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
-'modern.js' => '/* Burada Modern skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
-'vector.js' => '/* Burada Vector skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
+'common.js' => '/* Burada istifadəçilərin hamısı üçün bütün səhifələrdə istənilən JavaScript yüklənəcək */',
+'standard.js' => '/* Burada Standard skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
+'nostalgia.js' => '/* Burada Nostalgia skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
+'cologneblue.js' => '/* Burada Cologne Blue skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
+'monobook.js' => '/* Burada MonoBook skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
+'myskin.js' => '/* Burada MySkin skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
+'chick.js' => '/* Burada Chick skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
+'simple.js' => '/* Burada Simple skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
+'modern.js' => '/* Burada Modern skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
+'vector.js' => '/* Burada Vector skin istifadəçiləri üçün istənilən JavaScript yüklənəcək */',
+'group-autoconfirmed.js' => '/* Burada istənilən JavaScript yalnız avtotəsdiqlənmiş istifadəçilər üçün yüklənəcək */',
+'group-bot.js' => '/* Burada istənilən JavaScript yalnız botlar üçün yüklənəcək */',
+'group-sysop.js' => '/* Burada istənilən JavaScript yalnız idarəçilər üçün yüklənəcək */',
+'group-bureaucrat.js' => '/* Burada istənilən JavaScript yalnız bürokratlar üçün yüklənəcək */',
# Metadata
-'nodublincore' => 'Bu server üçün Dublin Core RDF metaməlumatları qadağandır.',
-'nocreativecommons' => 'Bu server üçün Creative Commons RDF metaməlumatları qadağandır.',
-'notacceptable' => 'Viki-server məlumatları brauzerinizin oxuya biləcəyi formatda təqdim edə bilmir.',
+'notacceptable' => 'Viki-server məlumatları brauzerinizin oxuya biləcəyi formatda təqdim edə bilmir.',
# Attribution
'anonymous' => '{{SITENAME}} saytının anonim {{PLURAL:$1|istifadəçisi|istifadəçiləri}}',
@@ -2270,10 +2309,16 @@ Zəhmət olmasa başqa ad seçin.',
'spambot_username' => 'MediaViki spam təmizləməsi',
# Info page
-'infosubtitle' => 'Səhifə üçün məlumat',
-'numedits' => 'Redaktələrin sayı (səhifə): $1',
-'numtalkedits' => 'Redaktələrin sayı (müzakirə səhifəsi): $1',
-'numwatchers' => 'Baxış sayı: $1',
+'pageinfo-title' => '"$1" üçün məlumat',
+'pageinfo-header-edits' => 'Redaktələr',
+'pageinfo-header-watchlist' => 'İzləmə siyahısı',
+'pageinfo-header-views' => 'Görünüş',
+'pageinfo-subjectpage' => 'Səhifə',
+'pageinfo-talkpage' => 'Müzakirə səhifəsi',
+'pageinfo-watchers' => 'Baxış sayı',
+'pageinfo-edits' => 'Redaktələrin sayı',
+'pageinfo-views' => 'Göstərmə səhifəsi',
+'pageinfo-viewsperedit' => 'Redaktə başına göstərmə',
# Skin names
'skinname-standard' => 'Classic',
@@ -2286,19 +2331,6 @@ Zəhmət olmasa başqa ad seçin.',
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vector',
-# Math options
-'mw_math_png' => 'Həmişə PNG formatında göstər',
-'mw_math_simple' => 'Sadə formullarda HTML, digərlərində PNG',
-'mw_math_html' => 'Mümkünsə HTML, digər hallarda PNG',
-'mw_math_source' => 'TeX kimi saxla (mətn brouzerləri üçün)',
-'mw_math_modern' => 'Müasir brouzerlər üçün məsləhətdir',
-'mw_math_mathml' => 'Mümkünsə MathML (sınaq)',
-
-# Math errors
-'math_unknown_error' => 'bilinməyən xəta',
-'math_unknown_function' => 'bilinməyən funksiya',
-'math_syntax_error' => 'sintaksis xətası',
-
# Patrolling
'markaspatrolleddiff' => 'Yoxlanıldı',
'markaspatrolledtext' => 'Səhifəni patrullanmış kimi işarələ',
@@ -2341,7 +2373,7 @@ $1',
'file-nohires' => '<small>Daha dəqiq versiyası yoxdur.</small>',
'svg-long-desc' => 'SVG fayl, nominal olaraq $1 × $2 piksel, faylın ölçüsü: $3',
'show-big-image' => 'Daha yüksək keyfiyyətli şəkil',
-'show-big-image-thumb' => '<small>Sınaq göstərişi ölçüsü: $1 × $2 piksel</small>',
+'show-big-image-size' => '$1 × $2 piksel',
'file-info-gif-looped' => 'ilmələnib',
'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|çərçivə}}',
'file-info-png-looped' => 'ilmələnib',
@@ -2401,6 +2433,20 @@ Variants for Chinese language
'metadata-help' => 'Bu faylda fotoaparat vÉ™ ya skanerlÉ™ É™lavÉ™ olunmuÅŸ mÉ™lumatlar var. ÆgÉ™r fayl sonradan redaktÉ™ olunubsa, bÉ™zi parametrlÉ™r bu ÅŸÉ™kildÉ™ göstÉ™rilÉ™nlÉ™rdÉ™n fÉ™rqli ola bilÉ™r.',
'metadata-expand' => 'Ætraflı mÉ™lumatları göstÉ™r',
'metadata-collapse' => 'Ætraflı mÉ™lumatları gizlÉ™',
+'metadata-fields' => 'Bu səhifədə sıralanan EXIF metadata sahələri şəkil görünüş səhifələrində metadata cədvəli çökdüyündə istifadə edilir. Digərləri varsayılan olaraq gizlənəcəkdir.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'GeniÅŸlik',
@@ -2413,7 +2459,6 @@ Variants for Chinese language
'exif-yresolution' => 'Şaquli xətt',
'exif-rowsperstrip' => 'Hər blokdakı sətirlərin sayı',
'exif-jpeginterchangeformatlength' => 'JPEG məlumat bazasının baytları',
-'exif-transferfunction' => 'Transfer funksiyası',
'exif-datetime' => 'Faylın dəyişməsi tarixi və vaxtı',
'exif-imagedescription' => 'Şəkil başlığı',
'exif-make' => 'Kamera istehsalçısı',
@@ -2471,11 +2516,56 @@ Variants for Chinese language
'exif-gpsareainformation' => 'GPS sahənin adı',
'exif-gpsdatestamp' => 'Zaman',
'exif-gpsdifferential' => 'GPS diferensial korreksiya',
+'exif-jpegfilecomment' => ' JPEG şəkil şərhi',
+'exif-keywords' => 'Açar sözlər',
+'exif-countrycreated' => 'Şəklin çəkildiyi ölkə',
+'exif-provinceorstatecreated' => 'Şəklin çəkildiyi əyalət, yaxud ştat',
+'exif-worldregiondest' => 'Təsvir edilmiş dünya bölgəsi',
+'exif-countrydest' => 'Təsvir olunmuş ölkə',
+'exif-countrycodedest' => 'Təsvir edilmiş ölkənin kodu',
+'exif-provinceorstatedest' => 'Təsvir edilmiş bölgə yaxud ştat',
+'exif-citydest' => 'Təsvir edilmiş şəhər',
'exif-objectname' => 'Qısa başlıq',
+'exif-specialinstructions' => 'Xüsusi instruksiyalar',
+'exif-headline' => 'Başlıq',
+'exif-credit' => 'Credit/Provider',
+'exif-source' => 'Mənbə',
+'exif-urgency' => 'Zərurilik',
+'exif-fixtureidentifier' => 'Sütun adı',
+'exif-locationdest' => 'Təsvir edilmiş ərazi',
+'exif-contact' => 'ÆlaqÉ™ mÉ™lumatı',
+'exif-writer' => 'Yazıçı',
+'exif-languagecode' => 'Dil',
+'exif-iimversion' => 'IIM versiya',
+'exif-iimcategory' => 'Kateqoriya',
+'exif-datetimeexpires' => 'Sonra işlətmə',
+'exif-datetimereleased' => 'Çıxış tarixi',
+'exif-identifier' => 'Ä°dentifikator',
+'exif-lens' => 'Ä°stifadÉ™ olunmuÅŸ obyektiv',
+'exif-serialnumber' => 'Kameranın serial nömrəsi',
+'exif-cameraownername' => 'Kameranın sahibi',
+'exif-label' => 'NiÅŸan',
+'exif-rating' => 'Qiymət (5 üzərində)',
+'exif-copyrighted' => 'Statusun müəlliflik hüququ',
+'exif-copyrightowner' => 'Sahibinin müəlliflik hüququ',
+'exif-usageterms' => 'İstifadə qaydası',
+'exif-webstatement' => 'İnternetdə müəlliflik hüquqları qaydaları',
+'exif-licenseurl' => 'Müəllif hüququ lisenziyası üçün URL',
+'exif-morepermissionsurl' => 'Alternativ lisenziya məlumatı',
+'exif-pngfilecomment' => 'PNG şəkil şərhi',
+'exif-disclaimer' => 'Məsuliyyətdən imtina',
+'exif-contentwarning' => 'Mətn xəbərdarlığı',
+'exif-giffilecomment' => 'GIF şəkil şərhi',
+'exif-intellectualgenre' => 'Obyektin tipi',
+'exif-subjectnewscode' => 'Mövzunun kodu',
+'exif-scenecode' => 'IPTC səhnə kodu',
# EXIF attributes
'exif-compression-1' => 'Sıxılmış',
+'exif-copyrighted-true' => 'Müəlliflik hüququ ilə qorunur',
+'exif-copyrighted-false' => 'Ä°ctimai istifadÉ™',
+
'exif-unknowndate' => 'Naməlum tarix',
'exif-orientation-1' => 'Normal',
@@ -2490,6 +2580,8 @@ Variants for Chinese language
'exif-planarconfiguration-1' => 'chunky format',
'exif-planarconfiguration-2' => 'planar format',
+'exif-colorspace-65535' => 'Fotoşəkildə rəng seçimi edilməmişdir.',
+
'exif-componentsconfiguration-0' => 'mövcud deyil',
'exif-exposureprogram-0' => 'Tanınmadı',
@@ -2590,6 +2682,10 @@ Variants for Chinese language
'exif-gpslongitude-e' => 'Qərb uzunluq dairəsi',
'exif-gpslongitude-w' => 'Şərq uzunluq dairəsi',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|metr}} dəniz səviyyəsindən yüksəkdə',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|metr}} dəniz səviyyəsindən aşağıda',
+
'exif-gpsstatus-a' => 'Ölçmə yekunlaşmayıb',
'exif-gpsstatus-v' => 'Verilənləri ötürmək üçün hazırdır',
@@ -2601,21 +2697,73 @@ Variants for Chinese language
'exif-gpsspeed-m' => 'Saatda mil',
'exif-gpsspeed-n' => 'Dəniz mili',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometr',
+'exif-gpsdestdistance-m' => 'Millər',
+'exif-gpsdestdistance-n' => 'Dəniz mili',
+
+'exif-gpsdop-excellent' => 'Æla ($1)',
+'exif-gpsdop-good' => 'Yaxşı ($1)',
+'exif-gpsdop-moderate' => 'Zəif ($1)',
+'exif-gpsdop-fair' => 'ÆdalÉ™tli ($1)',
+'exif-gpsdop-poor' => 'Pis ($1)',
+
+'exif-objectcycle-a' => 'Ancaq səhər',
+'exif-objectcycle-p' => 'Ancaq axÅŸam',
+'exif-objectcycle-b' => 'Gündüzlər və axşamlar',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Doğru istiqamət',
'exif-gpsdirection-m' => 'Maqnit istiqaməti',
+'exif-ycbcrpositioning-1' => 'Mərkəzləşdirilmiş',
+'exif-ycbcrpositioning-2' => 'Co-sited',
+
+'exif-dc-contributor' => 'Həmmüəlliflər',
+'exif-dc-coverage' => 'Mediyanın məkan və zaman çərçivəsi',
+'exif-dc-date' => 'Tarix(lər)',
+'exif-dc-publisher' => 'NaÅŸir',
+'exif-dc-relation' => 'ÆlaqÉ™li media',
+'exif-dc-rights' => 'Hüquqlar',
+'exif-dc-source' => 'Ä°lkin media',
+'exif-dc-type' => 'Medianın tipi',
+
+'exif-rating-rejected' => 'Rədd edildi',
+
+'exif-isospeedratings-overflow' => '65535-dən böyükdür',
+
+'exif-iimcategory-ace' => 'İncəsənət, mədəniyyət və əyləncə',
+'exif-iimcategory-clj' => 'Kriminal vÉ™ qanun',
+'exif-iimcategory-dis' => 'Faciə və qəzalar',
+'exif-iimcategory-fin' => 'Ä°qtisaqdiyyat vÉ™ biznes',
+'exif-iimcategory-edu' => 'Təhsil',
+'exif-iimcategory-evn' => 'Ætraf mühit',
+'exif-iimcategory-hth' => 'Səhiyyə',
+'exif-iimcategory-hum' => 'İnsan maraqları',
+'exif-iimcategory-lab' => 'ÆmÉ™k',
+'exif-iimcategory-lif' => 'Həyat tərzi və əyləncə',
+'exif-iimcategory-pol' => 'Siyasət',
+'exif-iimcategory-rel' => 'Din vÉ™ iman',
+'exif-iimcategory-sci' => 'Elm vÉ™ texnologiya',
+'exif-iimcategory-soi' => 'Sosial məsələlər',
+'exif-iimcategory-spo' => 'Ä°dman',
+'exif-iimcategory-war' => 'Müharibə, münaqişə və iğtişaşlar',
+'exif-iimcategory-wea' => 'Hava',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Aşağı ($1)',
+'exif-urgency-high' => 'Yüksək ($1)',
+'exif-urgency-other' => 'İstifadəçi tərəfindən müəyyən olunmuş birincilik ($1)',
+
# External editor support
'edit-externally' => 'Bu faylı kənar proqram vasitəsilə redaktə et.',
-'edit-externally-help' => '(Daha ətraflı məlumat üçün [http://www.mediawiki.org/wiki/Manual:External_editors tətbiqetmə qaydalarına] baxa bilərsiniz)',
+'edit-externally-help' => '(Daha ətraflı məlumat üçün [//www.mediawiki.org/wiki/Manual:External_editors tətbiqetmə qaydalarına] baxa bilərsiniz)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'bütün',
-'imagelistall' => 'bütün',
-'watchlistall2' => 'hamısını',
-'namespacesall' => 'bütün',
-'monthsall' => 'hamısı',
-'limitall' => 'bütün',
+'watchlistall2' => 'hamısını',
+'namespacesall' => 'bütün',
+'monthsall' => 'hamısı',
+'limitall' => 'bütün',
# E-mail address confirmation
'confirmemail' => 'E-məktubunu təsdiq et',
@@ -2648,6 +2796,10 @@ $1',
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Bu səhifə keşdən (cache) silinsin?',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-unwatch-button' => 'OK',
+
# Multipage image navigation
'imgmultipageprev' => '&larr; əvvəlki səhifə',
'imgmultipagenext' => 'sonrakı səhifə &rarr;',
@@ -2704,6 +2856,7 @@ $1',
'version-specialpages' => 'Xüsusi səhifələr',
'version-parserhooks' => 'Parser hooks',
'version-variables' => 'Dəyişkənlər',
+'version-antispam' => 'Spam önləmə',
'version-skins' => 'Üzlük',
'version-other' => 'Digər',
'version-hooks' => 'Çəngəllər',
@@ -2712,7 +2865,7 @@ $1',
'version-hook-subscribedby' => 'AbunÉ™ olan',
'version-version' => '(Versiya $1)',
'version-license' => 'Lisenziya',
-'version-poweredby-credits' => "Bu wiki '''[http://www.mediawiki.org/ MediaWiki]''' proqramı istifadə edilərək yaradılmışdır, müəlliflik © 2001-$1 $2.",
+'version-poweredby-credits' => "Bu wiki '''[//www.mediawiki.org/ MediaWiki]''' proqramı istifadə edilərək yaradılmışdır, müəlliflik © 2001-$1 $2.",
'version-poweredby-others' => 'digərləri',
'version-software-product' => 'Məhsul',
'version-software-version' => 'Versiya',
@@ -2723,10 +2876,11 @@ $1',
'filepath-submit' => 'Get',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Dublikat fayl axtarışı',
-'fileduplicatesearch-legend' => 'Dublikatı axtar',
-'fileduplicatesearch-filename' => 'Fayl adı:',
-'fileduplicatesearch-submit' => 'Axtar',
+'fileduplicatesearch' => 'Dublikat fayl axtarışı',
+'fileduplicatesearch-legend' => 'Dublikatı axtar',
+'fileduplicatesearch-filename' => 'Fayl adı:',
+'fileduplicatesearch-submit' => 'Axtar',
+'fileduplicatesearch-noresults' => '"$1" adında fayl tapılmadı.',
# Special:SpecialPages
'specialpages' => 'Xüsusi səhifələr',
diff --git a/languages/messages/MessagesBa.php b/languages/messages/MessagesBa.php
index 719766dd..9bd0b572 100644
--- a/languages/messages/MessagesBa.php
+++ b/languages/messages/MessagesBa.php
@@ -167,14 +167,7 @@ $messages = array(
'listingcontinuesabbrev' => '(дауамы)',
'index-category' => 'ИндекÑланған биттәр',
'noindex-category' => 'ИндекÑланмаған биттәр',
-
-'mainpagetext' => '«MediaWiki» уңышлы рәүештә ҡоролдо.',
-'mainpagedocfooter' => 'Был вики менән Ñшләү тураһында мәғлүмәтте [http://meta.wikimedia.org/wiki/Ярҙам:Белешмә ошонда] табып була.
-
-== Файҙалы Ñығанаҡтар ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Көйләүҙәр иÑемлеге (инг.)];
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki тураһында йыш бирелгән һорауҙар һәм Ñуаптар (инг.)];
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-ның Ñңы верÑиÑлары тураһында хәбәрҙәр алып тороу].',
+'broken-file-category' => 'Файлға һылтанмалары Ñшләмәгән биттәр',
'about' => 'ТаÑуирлау',
'article' => 'Мәҡәлә',
@@ -226,10 +219,10 @@ $messages = array(
'history' => 'Тарих',
'history_short' => 'Тарих',
'updatedmarker' => 'һуңғы кереүемдән һуң Ñңыртылған',
-'info_short' => 'Мәғлүмәт',
'printableversion' => 'Ҡағыҙға баҫыу өлгөһө',
'permalink' => 'Даими һылтау',
'print' => 'Баҫыу',
+'view' => 'Ҡарау',
'edit' => 'Үҙгәртеү',
'create' => 'Яһарға',
'editthispage' => 'Был мәҡәләне үҙгәртергә',
@@ -237,6 +230,7 @@ $messages = array(
'delete' => 'Юҡ итергә',
'deletethispage' => 'Был битте юйырға',
'undelete_short' => '$1 {{PLURAL:$1|үҙгәртеүҙе}} тергеҙергә',
+'viewdeleted_short' => '{{PLURAL:$1|1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}} ҡарау',
'protect' => 'Һаҡларға',
'protect_change' => 'үҙгәртергә',
'protectthispage' => 'Был битте һаҡларға',
@@ -320,6 +314,8 @@ $1',
'toc' => 'ЭÑтәлеге',
'showtoc' => 'күрһәтергә',
'hidetoc' => 'йәшерергә',
+'collapsible-collapse' => 'төрөргә',
+'collapsible-expand' => 'аÑырға',
'thisisdeleted' => 'Ҡарарғамы йәки тергеҙергәме? — $1',
'viewdeleted' => '$1 ҡарарғамы?',
'restorelink' => '{{PLURAL:$1|1 юйылған үҙгәртеүҙе|$1 юйылған үҙгәртеүҙе}}',
@@ -331,6 +327,8 @@ $1',
'page-rss-feed' => '«$1» — RSS-таҫма',
'page-atom-feed' => '$1» — Atom-таҫма',
'red-link-title' => '$1 (был бит юҡ)',
+'sort-descending' => 'Кәмей барыу буйынÑа тәртипләштереү',
+'sort-ascending' => 'Ò˜ÑƒÑ€Ð°Ñ Ð±Ð°Ñ€Ñ‹Ñƒ буйынÑа тәртипләштереү',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Мәҡәлә',
@@ -417,12 +415,11 @@ $1',
'protectedinterface' => 'Был биттә программа арайөҙө белдереүҙәре бар. Вандализмға ҡаршы көрәш Ñәбәпле, был битте үҙгәртеү тыйыла.',
'editinginterface' => "'''Иғтибар.''' Һеҙ программаның арайөҙ текÑÑ‚Ñ‹ булған битте мөхәррирләйһегеҙ.
Уны үҙгәртеү, башҡа ҡулланыуÑыларҙын арайөҙ күренешен үҙгәртәÑәктер.
-Тәржемә Ó©Ñөн [http://translatewiki.net/wiki/Main_Page?setlang=ba translatewiki.net] адреÑын, MediaWiki-ны локалләштереү проектын ҡулланыу Ñҡшыраҡ булаÑаҡтыр.",
+Тәржемә Ó©Ñөн [//translatewiki.net/wiki/Main_Page?setlang=ba translatewiki.net] адреÑын, MediaWiki-ны локалләштереү проектын ҡулланыу Ñҡшыраҡ булаÑаҡтыр.",
'sqlhidden' => '(SQL-һорау йәшерелгән)',
'cascadeprotected' => 'Был бит үҙгәртеүҙәрҙән һаҡланған, Ñөнки ул Ñҙмә-Ñҙлекле һаҡлау ҡуйылған {{PLURAL:$1|биткә|биттәргә}} керә:
$2',
'namespaceprotected' => '«$1» иÑем арауығындағы биттәрҙе мөхәррирләү Ó©Ñөн хоҡуҡтарығыҙ ÑŽÒ¡.',
-'customcssjsprotected' => 'Был битте үҙгәртеү хоҡуғығыҙ юк, Ñөнки унда башҡа ҡулланыуÑының шәхÑи көйләүҙәре бар.',
'ns-specialprotected' => '«{{ns:special}}» иÑем арауығындағы биттәрҙе үҙгәртеп булмай.',
'titleprotected' => "Был иÑем менән бит Ñһау [[User:$1|$1]] тарафынан тыйылған.
Белдерелгән Ñәбәп: ''$2''.",
@@ -460,6 +457,7 @@ $2',
'createaccount' => 'Яңы ҡатнашыуÑыны теркәү',
'gotaccount' => "Әгәр Һеҙ теркәлеү үткән булһағыҙ? '''$1'''.",
'gotaccountlink' => 'Үҙегеҙ менән таныштырығыҙ',
+'userlogin-resetlink' => 'Танылыу мәғлүмәттәрен оноттоғоҙмо?',
'createaccountmail' => 'Ñл. почта буйынÑа',
'createaccountreason' => 'Сәбәп:',
'badretype' => 'Һеҙ кереткән паролдәр тап килмәйҙәр.',
@@ -469,13 +467,15 @@ $2',
'createaccounterror' => 'Иҫәп Ñҙыуын Ñһап булмай: $1',
'nocookiesnew' => 'Иҫәп Ñҙыуы Ñһалды, ләкин һеҙ танылмағанһығыҙ. {{SITENAME}} ҡатнашыуÑыны таныу Ó©Ñөн «cookies» ҡуллана. Һеҙҙә «cookies» тыйылған. Зинһар, уларға Ñ€Ó©Ñ…Ñәт бирегеҙ, шунан Ñңы ҡатнашыуÑÑ‹ иÑеме һәм пароль менән танылығыҙ.',
'nocookieslogin' => '{{SITENAME}} ҡатнашыуÑыны таныу Ó©Ñөн «cookies» ҡуллана. Һеҙҙә «cookies» тыйылған. Зинһар, уға Ñ€Ó©Ñ…Ñәт бирегеҙ һәм Ñңынан керегеҙ.',
+'nocookiesfornew' => 'Иҫәп Ñҙмаһы булдырылманы, Ñөнки уның Ñығанағын тикшереү мөмкин түгел.
+"Сookies" Ñшләй икәнлеген тикшерегеҙ, битте Ñңыртығыҙ һәм Ñңынан ҡабатлап ҡарағыҙ.',
'noname' => 'Ғәмәлдә булған ҡатнашыуÑÑ‹ иÑемен керетмәнегеҙ.',
'loginsuccesstitle' => 'Танышыу уңышлы үтте',
'loginsuccess' => 'Хәҙер һеҙ $1 иÑеме менән Ñшләйһегеҙ.',
'nosuchuser' => '$1 иÑемле ҡулланыуÑÑ‹ ÑŽÒ¡.
ҠулланыуÑÑ‹ иÑеме хәреф региÑтрына һиҙгер.
ИÑемде тикшерегеҙ йәки [[Special:UserLogin/signup|Ñңы иҫәп Ñҙыуы аÑÑ‹Ò“Ñ‹Ò™]].',
-'nosuchusershort' => '<nowiki>$1</nowiki> иÑемле ҡулланыуÑÑ‹ ÑŽÒ¡. ИÑемде тикшерегеҙ.',
+'nosuchusershort' => '$1 иÑемле ҡулланыуÑÑ‹ ÑŽÒ¡. ИÑемде тикшерегеҙ.',
'nouserspecified' => 'Һеҙ ҡатнашыуÑÑ‹ иÑемен күрһәтергә тейеш.',
'login-userblocked' => 'Был ҡатнашыуÑыға Ñ€Ó©Ñ…Ñәт ÑŽÒ¡. ИÑеме тыйылған.',
'wrongpassword' => 'Һеҙ ҡулланған пароль ҡабул ителмәй. Яңынан Ñҙып ҡарағыҙ.',
@@ -514,13 +514,14 @@ $2',
'usernamehasherror' => 'ҠулланыуÑÑ‹ иÑемендә "#" Ñимволы була алмай',
'login-throttled' => 'Һеҙ ÑиÑтемала артыҡ күп танылырға тырыштығыҙ.
Зинһар, ҡабатламаҫтан алда бераҙ көтөгөҙ.',
+'login-abort-generic' => 'Танылыу уңышһыҙ тамамланды',
'loginlanguagelabel' => 'Тел: $1',
'suspicious-userlogout' => 'Һеҙҙең ÑеанÑÑ‚Ñ‹ тамамлау тураһында һорауығыҙ кире ҡағылды, Ñөнки ул төҙөк булмаған браузер йәки кÑшлауÑÑ‹ прокÑи тарафынан ебәрелгән һорауға оҡшаған.',
# E-mail sending
'php-mail-error-unknown' => 'PHP-ның mail() функциÑһында билдәһеҙ хата',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Паролде үҙгәртеү',
'resetpass_announce' => 'Һеҙ ÑиÑтемала Ñлектрон почта аша алынған ваҡытлыÑа пароль менән танылдығыҙ. СиÑтемаға кереүҙә тамалау Ó©Ñөн Ñңы пароль булдырығыҙ.',
'resetpass_header' => 'Иҫәп Ñҙыуы паролен үҙгәртеү',
@@ -537,6 +538,19 @@ $2',
Һеҙ, бәлки, паролегеҙҙе алмаштырғанһығыҙ йәки Ñңы пароль һоратҡанһығыҙ.',
'resetpass-temp-password' => 'ВаҡытлыÑа пароль',
+# Special:PasswordReset
+'passwordreset' => 'Паролде ташлатыу',
+'passwordreset-text' => 'Иҫәп Ñҙыуығыҙ мәғлүмәттәрен хат аша алыу Ó©Ñөн киләһе форманы тултырығыҙ.',
+'passwordreset-legend' => 'Паролде ташлатыу',
+'passwordreset-disabled' => 'Был викила паролде ташлатыу ғәмәлдә түгел',
+'passwordreset-pretext' => '{{PLURAL:$1||аҫта күрһәтелгән мәғлүмәттәрҙең бер киҫәген керетегеҙ}}',
+'passwordreset-username' => 'ҠулланыуÑÑ‹ иÑеме:',
+'passwordreset-email' => 'Электрон почта адреÑÑ‹:',
+'passwordreset-emailtitle' => '{{SITENAME}} иҫәп Ñҙыуы мәғлүмәттәре',
+'passwordreset-emailelement' => 'ҠулланыуÑÑ‹ иÑеме: $1
+ВаҡытлыÑа пароль: $2',
+'passwordreset-emailsent' => 'Электрон почта аша иҫләтеү хаты ебәрелде.',
+
# Edit page toolbar
'bold_sample' => 'Ҡалын Ñҙылыш',
'bold_tip' => 'Ҡалын Ñҙылыш',
@@ -548,8 +562,6 @@ $2',
'extlink_tip' => 'Тышҡы һылтанма (http:// префикÑын онотмағыҙ)',
'headline_sample' => 'ИÑем',
'headline_tip' => '2-Ñе дәрәжәле иÑем',
-'math_sample' => 'Формуланы бында керетегеҙ',
-'math_tip' => 'Математик формула (LaTeX форматы)',
'nowiki_sample' => 'Бында форматланмаған текÑÑ‚Ñ‹ өҫтәгеҙ.',
'nowiki_tip' => 'Вики-форматлауға иғтибар итмәҫкә',
'image_tip' => 'Индерелгән файл',
@@ -635,7 +647,7 @@ $2',
'noarticletext-nopermission' => 'Хәҙерге ваҡытта был биттә текÑÑ‚ ÑŽÒ¡.
Һеҙ башҡа мәҡәләләрҙә [[Special:Search/{{PAGENAME}}|был иÑемде]] йәки
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналдағы Ñҙмаларҙы] Ñҙләй алаһығыҙ.</span>',
-'userpage-userdoesnotexist' => '«$1» иҫәп Ñҙыуы ÑŽÒ¡. Һеҙ бындай бит Ñһарға йәки битте үҙгәртергә теләһәгеҙ Ñңынан тикшерегеҙ.',
+'userpage-userdoesnotexist' => '«<nowiki>$1</nowiki>» иҫәп Ñҙыуы ÑŽÒ¡. Һеҙ бындай бит Ñһарға йәки битте үҙгәртергә теләһәгеҙ Ñңынан тикшерегеҙ.',
'userpage-userdoesnotexist-view' => '«$1» иÑемле иҫәп Ñҙыуы ÑŽÒ¡.',
'blocked-notice-logextract' => 'Хәҙергә был ҡатнашыуÑÑ‹ Ñбылған. Һуңғы ҡулланыуÑÑ‹ Ñбыу Ñҙмаһы:',
'clearyourcache' => "'''Иҫкәрмә:''' Битте һаҡлағандан һуң үҙгәртеүҙерегеҙ күренһен Ó©Ñөн браузерығыҙҙың кÑшын таҙартығыҙ.
@@ -1025,9 +1037,10 @@ $1",
'changepassword' => 'Паролде үҙгәртергә',
'prefs-skin' => 'Күренеш',
'skin-preview' => 'Ðлдан байҡау',
-'prefs-math' => 'Формулалар',
'datedefault' => 'Ғәҙәттәге',
+'prefs-beta' => 'Бета верÑиÑһы мөмкинлектәре',
'prefs-datetime' => 'Көн һәм ваҡыт',
+'prefs-labs' => 'Һынау Ó©Ñөн мөмкинлектәр',
'prefs-personal' => 'ШәхÑи мәғлүмәттәр',
'prefs-rc' => 'Һуңғы үҙгәртеүҙәр',
'prefs-watchlist' => 'Күҙәтеү иÑемлеге',
@@ -1049,8 +1062,6 @@ $1",
'columns' => 'Бағаналар:',
'searchresultshead' => 'Эҙләү',
'resultsperpage' => 'Биттә табылған Ñҙыуҙар',
-'contextlines' => 'Һәр бер һөҙөмтәнең күрһәтеләÑәк юл һаны:',
-'contextchars' => 'Бер юлдағы билдәләр һаны:',
'stub-threshold' => '<a href="#" class="stub">Материалдарға һылтанмалар </a> форматлау Ñиге (байттарҙа)',
'stub-threshold-disabled' => 'Һүндерелгән',
'recentchangesdays' => 'Күҙәтеү иÑемлегендә күренгән көндәр һаны:',
@@ -1238,7 +1249,6 @@ $1",
'right-userrights' => 'Барлыҡ ҡатнашыуÑыларҙың хоҡуҡтарын үҙгәртеү',
'right-userrights-interwiki' => 'ҠатнашыуÑыларҙың башҡа Вики-Ñайттарҙағы хоҡуҡтарын үҙгәртеү',
'right-siteadmin' => 'Мәғлүмәттәр базаһын аÑыу һәм Ñбыу',
-'right-reset-passwords' => 'Башҡа ҡатнашыуÑыларҙың паролен Ñңыртыу',
'right-override-export-depth' => '5-Ñе тәрәнлеккә тиклем бәйле биттәре менән бергә биттәрҙе Ñығарыу',
'right-sendemail' => 'Башҡа ҡатнашыуÑыларға Ñлектрон почта аша хат ебәреү',
@@ -1439,10 +1449,6 @@ $1",
'upload-options' => 'Тейәү көйләүҙәре',
'watchthisupload' => 'Файлды күҙәтергә',
'filewasdeleted' => 'Бындай иÑемле файл бығаÑа булған һәм юйылған. Зинһар, ҡабаттан тейәр алдынан $1 битен ҡарағыҙ.',
-'upload-wasdeleted' => "'''Иғтибар: Һеҙ, Ñлек юйылған файлды Ñңынан тейәргә теләйһегеҙ.'''
-
-Һеҙгә был файлды Ñңынан тейәргә кәрәклеген Ñңынан тикшерегеҙ.
-Түбәндә файлдың юйыу Ñҙмалары килтерелә:",
'filename-bad-prefix' => "Тейәлә торған файлдың иÑеме ''«$1»''' менән башлана һәм ул цифрлы камераларҙа файлдарға уҙенән-үҙе бирелә торған иÑемгә оҡшаған.
Зинһар, файлды Ñҡшыраҡ таÑуирлаған иÑем һайлағыҙ.",
'upload-success-subj' => 'Файл тейәү уңышлы тамамланды',
@@ -1466,6 +1472,15 @@ $1',
'upload-unknown-size' => 'Билдәһеҙ дәүмәл',
'upload-http-error' => 'HTTP хата килеп ÑÑ‹Ò¡Ñ‚Ñ‹: $1',
+# Special:UploadStash
+'uploadstash' => 'Йәшерен тейәү',
+'uploadstash-summary' => 'Был бит тейәлгән (йәки тейәү барышында булған), әммә викила әлегә баҫтырып Ñығарылмаған файлдарҙы ҡарау мөмкинлеген бирә. Был файлдар уны тейәгән ҡатнашыуÑынан башҡа бер кемгә лә күренмәй.',
+'uploadstash-clear' => 'Йәшерен файлдарҙы таҙартырға',
+'uploadstash-nofiles' => 'Һеҙҙең йәшерен файлдарығыҙ юҡ.',
+'uploadstash-badtoken' => 'Был ғәмәлде башҡарып булманы, һеҙҙең төҙәтеү Ñҙмағыҙ ғәмәлдән Ñыҡҡан булыуы ихтимал. Яңынан ҡабатлап ҡарағыҙ.',
+'uploadstash-errclear' => 'Файлдарҙы таҙартып булманы.',
+'uploadstash-refresh' => 'Файлдар иÑемлеген Ñңыртырға',
+
# img_auth script messages
'img-auth-accessdenied' => 'Керергә Ñ€Ó©Ñ…Ñәт ителмәй',
'img-auth-nopathinfo' => 'PATH_INFO ÑŽÒ¡.
@@ -1551,7 +1566,6 @@ $1',
Шулай уҡ [[Special:WhatLinksHere/$2|тулы иÑемлекте]] ҡарарға мөмкин.',
'nolinkstoimage' => 'Был файлға һылтанма Ñһаған бит ÑŽÒ¡.',
'morelinkstoimage' => 'Был файлға [[Special:WhatLinksHere/$1|башҡа һылтанмаларҙы]] ҡарарға.',
-'redirectstofile' => 'Түбәндәге {{PLURAL:$1|файлдан|$1 файлдарҙан}} был файлға йүнәлтмә Ñһалған:',
'duplicatesoffile' => 'Түбәндәге {{PLURAL:$1|файл|файлдар}} был файл менән тап килә ([[Special:FileDuplicateSearch/$2|тулыраҡ мәғлүмәт]])',
'sharedupload' => 'Был файл $1 базаһынан һәм башҡа проектарҙа ҡулланылырға мөмкин.',
'sharedupload-desc-there' => 'Был файл $1 базаһынан һәм башҡа проекттарҙа ҡулланыла ала.
@@ -1846,6 +1860,9 @@ $1',
'noemailtext' => 'Был ҡатнашыуÑÑ‹ дөрөҫ Ñлектрон почта адреÑÑ‹ күрһәтмәгән',
'nowikiemailtitle' => 'Электрон хат ебәреү Ó©Ñөн Ñ€Ó©Ñ…Ñәт ÑŽÒ¡',
'nowikiemailtext' => 'Был ҡатнашыуÑÑ‹ башҡа ҡатнашыуÑыларҙан Ñлектрон хат алырға теләмәүен күрһәткән.',
+'emailtarget' => 'ÐлыуÑының ҡулланыуÑÑ‹ иÑемен Ñҙығыҙ',
+'emailusername' => 'ҠулланыуÑÑ‹ иÑеме:',
+'emailusernamesubmit' => 'Ебәрергә',
'email-legend' => '{{SITENAME}} проектының башҡа ҡатнашыуÑыһына Ñлектрон хат ебәрергә',
'emailfrom' => 'Кемдән:',
'emailto' => 'Кемгә:',
@@ -1870,10 +1887,8 @@ $1',
'watchlistanontext' => 'Күҙәтеү иÑемлеген ҡарау йәки мөхәррирләү Ó©Ñөн $1 кәрәк.',
'watchnologin' => 'Үҙегеҙҙе танытырға кәрәк',
'watchnologintext' => 'Күҙәтеү иÑемлегегеҙҙе мөхәррирләү Ó©Ñөн, һеҙгә [[Special:UserLogin|танылырға]] кәрәк.',
-'addedwatch' => 'Күҙәтеү иÑемлегенә өҫтәлде',
'addedwatchtext' => "\"[[:\$1]]\" бите [[Special:Watchlist|күҙәтеү иÑемлегегеҙгә]] өҫтәлде.
Был биттә һәм уның фекер алышыу битендә бөтә булаÑаҡ үҙгәртеүҙәр иÑемлектә һәм [[Special:RecentChanges|һуңғы үҙгәртеүҙәр]] иÑемлегендә уларҙы еңелерәк табыу Ó©Ñөн '''ҡалын Ñҙыу''' менән күрһәтеләÑәк.",
-'removedwatch' => 'Күҙәтеү иÑемлегенән Ñығарылды',
'removedwatchtext' => '«[[:$1]]» бите [[Special:Watchlist|күҙәтеү иÑемлегегеҙҙән]] Ñығарылды.',
'watch' => 'Күҙәтергә',
'watchthispage' => 'Был битте күҙәтергә',
@@ -1926,13 +1941,13 @@ $NEWPAGE
--
Күҙәтеү иÑемлеге көйләүҙәрен үҙгәртергә:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Битте һеҙҙең күҙәтеү иÑемлегенән юйырға
$UNWATCHURL
Кире бәйләнеш һәм Ñрҙам:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Битте юйырға',
@@ -1948,7 +1963,7 @@ $UNWATCHURL
Зинһар, быны Ñшләргә теләгәнегеҙҙе, Ò¯Ò™ хәрәкәттәрегеҙҙең һөҙөмтәләрен аңлағанығыҙҙы һәм [[{{MediaWiki:Policy-url}}]] бүлегендә белдереп кителгән ҡағиҙәләр буйынÑа Ñшләгәнегеҙҙе раҫлағыҙ.',
'actioncomplete' => 'Ғәмәл үтәлде',
'actionfailed' => 'Ғәмәл үтәлмәне',
-'deletedtext' => '«<nowiki>$1</nowiki>» юйылды.
+'deletedtext' => '«$1» юйылды.
Юйылған һуңғы биттәрҙе ҡарар Ó©Ñөн: $2.',
'deletedarticle' => '«[[$1]]» юйылды',
'suppressedarticle' => '"[[$1]]" битен йәшергән',
@@ -2006,7 +2021,7 @@ $2 өлгөһөнә ҡайтыу.',
'protect_expiry_invalid' => 'Һаҡлауҙың тамамланыу ваҡыты дөрөҫ түгел.',
'protect_expiry_old' => 'Һаҡлауҙың тамамланыу ваҡыты үткән көнгә ҡуйылған.',
'protect-unchain-permissions' => 'Өҫтәмә һаҡлау шарттарын аÑырға',
-'protect-text' => "Бында һеҙ '''<nowiki>$1</nowiki>''' битенең һаҡлау дәрәжәһен ҡарай һәм үҙгәртә алаһығыҙ.",
+'protect-text' => "Бында һеҙ '''$1''' битенең һаҡлау дәрәжәһен ҡарай һәм үҙгәртә алаһығыҙ.",
'protect-locked-blocked' => "Һеҙҙең иÑәп Ñҙмағыҙ бикләнгән ваҡытта һеҙ биттең һаҡлау дәрәжәһен үҙгәртә алмайһығыҙ.
'''$1''' битенең хәҙерге һаҡлау көйләүҙәре:",
'protect-locked-dblock' => "Һаҡлау дәрәжәһе үҙгәртелә алмай, Ñөнки төп мәғлүмәттәр базаһы ваҡытлыÑа бикле.
@@ -2159,13 +2174,14 @@ $1',
'whatlinkshere-filters' => 'Һайлау',
# Block/unblock
+'block' => 'ҠатнашыуÑыны бикләү',
+'unblock' => 'Бикләнгән ҡатнашыуÑыны азат итеү',
'blockip' => 'ҠатнашыуÑыны бикләү',
'blockip-title' => 'ҠатнашыуÑыны бикләү',
'blockip-legend' => 'ҠатнашыуÑыны бикләү',
'blockiptext' => 'Билдәләнгән IP адреÑтан Ñҙыу мөмкинлеген бикләү Ó©Ñөн, түбәндәге форманы ҡулланығыҙ.
Был бары тик вандаллыҡҡа юл ҡуймау Ó©Ñөн генә һәм [[{{MediaWiki:Policy-url}}|ҡағиҙәләр]] буйынÑа ғына Ñшләнергә тейеш.
Түбәндә бикләү Ñәбәбен күрһәтегеҙ (мәҫәлән, вандаллыҡ Ñҙҙәре булған бер ниÑÓ™ биттең цитатаһын килтерегеҙ).',
-'ipaddress' => 'IP-адреÑ:',
'ipadressorusername' => 'ҠатнашыуÑының IP-адреÑÑ‹ йәки иÑеме:',
'ipbexpiry' => 'Тамамлана:',
'ipbreason' => 'Сәбәп:',
@@ -2178,7 +2194,6 @@ $1',
** ҠатнашыуÑыларға Ñнау (Ñҙәрлекләү)
** Бер ниÑÓ™ иҫәп Ñҙмаларын артығы менән булдырыу
** Килешһеҙ иҫәп Ñҙмаһы',
-'ipbanononly' => 'Танылмаған ҡатнашыуÑыларҙы ғына бикләргә',
'ipbcreateaccount' => 'Яңы иҫәп Ñҙыуҙарын булдырыуҙы тыйыу',
'ipbemailban' => 'Электрон почтаға хат ебәреүҙе тыйыу',
'ipbenableautoblock' => 'Был ҡатнашыуÑÑ‹ ҡулланған һуңғы IP адреÑтарҙы һәм артабан үҙгәртеү Ó©Ñөн ҡулланрға тырышҡан IP адреÑтарҙы бикләргә.',
@@ -2189,7 +2204,6 @@ $1',
'ipbotherreason' => 'Башҡа/өҫтәмә Ñәбәп:',
'ipbhidename' => 'ҠатнашыуÑының иÑемен үҙгәртеүҙәрҙә һәм иÑемлектәрҙә йәшерергә',
'ipbwatchuser' => 'ҠатнашыуÑының битен һәм фекер алышыу битен күҙәтеүҙәр иÑемлегенә өҫтәргә',
-'ipballowusertalk' => 'ҠатнашыуÑыға бикле ваҡытта үҙенең фекер алышыу битен мөхәррирләргә Ñ€Ó©Ñ…Ñәт итергә',
'ipb-change-block' => 'ҠатнашыуÑыны ошо көйләүҙәр менән Ñңынан бикләргә',
'badipaddress' => 'IP Ð°Ð´Ñ€ÐµÑ Ð´Ó©Ñ€Ó©Ò« түгел',
'blockipsuccesssub' => 'Бикләү уңышлы башҡарылды',
@@ -2204,17 +2218,14 @@ $1',
'unblockiptext' => 'Бикләнгән IP адреÑтан йәки иҫәп Ñҙмаһынан Ñҙыу мөмкинлеген тергеҙеү Ó©Ñөн, түбәндәге форманы ҡулланығыҙ.',
'ipusubmit' => 'Был бикте алырға',
'unblocked' => '[[User:$1|$1]] бикләнгән',
+'unblocked-range' => '$1 биге ÑиÑелде',
'unblocked-id' => '$1 биге алынған',
+'blocklist' => 'Тыйылған ҡатнашыуÑылар',
'ipblocklist' => 'Тыйылған ҡатнашыуÑылар',
'ipblocklist-legend' => 'Бикләнгән ҡатнашыуÑыны Ñҙләү',
-'ipblocklist-username' => 'ҠатнашыуÑÑ‹ иÑеме йәки IP адреÑ:',
-'ipblocklist-sh-userblocks' => 'Иҫәп Ñҙмаларын бикләүҙе $1',
-'ipblocklist-sh-tempblocks' => 'ВаҡытлыÑа бикләүҙәрҙе $1',
-'ipblocklist-sh-addressblocks' => 'Ðйырым бикләүҙәрҙе $1',
'ipblocklist-submit' => 'Эҙләү',
'ipblocklist-localblock' => 'Урындағы (локаль) бикләү',
'ipblocklist-otherblocks' => 'Башҡа {{PLURAL:$1|бикләү|бикләүҙәр}}',
-'blocklistline' => '$1, $2 $3 иҫәп Ñҙмаһын бикләгән ($4)',
'infiniteblock' => 'Ñикһеҙ',
'expiringblock' => '$1 $2 тамамлана',
'anononlyblock' => 'танылмағандарҙы ғына',
@@ -2239,7 +2250,7 @@ $1 ҡатнашыуÑыһын бикләү Ñәбәбе: "$2"',
'reblock-logentry' => '[[$1]] ҡатнашыуÑыһының бикләү көйләүҙәрен үҙгәрткән, тамамланыу ваҡыты — $2 $3',
'blocklogtext' => 'ҠатнашыуÑыларҙы бикләү һәм бикте алыу Ñҙмалары журналы.
Ðвто бикләнеүÑе IP адреÑтар бында күрһәтелмәй.
-[[Special:IPBlockList|Ғәмәлдәге тыйыуҙырҙы һәм бикләүҙәрҙе]] ҡарай алаһығыҙ.',
+[[Special:BlockList|Ғәмәлдәге тыйыуҙырҙы һәм бикләүҙәрҙе]] ҡарай алаһығыҙ.',
'unblocklogentry' => '$1 ҡулланыуÑыһының блокланыу ваҡыты тамамланды',
'block-log-flags-anononly' => 'танылмаған ҡатнашыуÑылар ғына',
'block-log-flags-nocreate' => 'иҫәп Ñҙыуҙарын теркәү тыйылған',
@@ -2253,8 +2264,7 @@ $1 ҡатнашыуÑыһын бикләү Ñәбәбе: "$2"',
'ipb_expiry_temp' => 'Бикләү ваҡытында ҡатнашыуÑÑ‹ иÑеме йәшерелһә, бикләү ваҡыты Ñикһеҙ булырға тейеш.',
'ipb_hide_invalid' => 'Иҫәп Ñҙмаһын йәшереү мөмкин түгел, ул бигерәк күп үҙгәртеүҙәр Ñһаған, булырға тейеш.',
'ipb_already_blocked' => '"$1" бикләнгән инде.',
-'ipb-needreblock' => '==Бикләнгән инде==
-$1 бикләнгән инде.
+'ipb-needreblock' => '$1 бикләнгән инде.
Бикләү көйләүҙәрен үҙгәртергә теләйһегеҙме?',
'ipb-otherblocks-header' => 'Башҡа {{PLURAL:$1|бикләү|бикләүҙәр}}',
'ipb_cant_unblock' => 'Хата: Идентификаторы $1 булған бикләү табылманы.
@@ -2417,7 +2427,7 @@ $1 бикләнгән инде.
'allmessagesdefault' => 'Ғәҙәттәге Ñҙма',
'allmessagescurrent' => 'Хәҙерге Ñҙма',
'allmessagestext' => 'Түбәндә MediaWiki иÑемдәр арауығында ҡулланылған ÑиÑтема хәбәрҙәре иÑемлеге килтерелгән.
-Әгәр MediaWiki программаһын дөйөм локалләштереү Ñшенә Ò¯Ò™ өлөшөгөҙҙө керетергә теләһәгеҙ, [http://www.mediawiki.org/wiki/Localisation MediaWiki программаһын локалләштереү] битен һәм [http://translatewiki.net translatewiki.net] проектын ҡарап ÑÑ‹Ò“Ñ‹Ò“Ñ‹Ò™.',
+Әгәр MediaWiki программаһын дөйөм локалләштереү Ñшенә Ò¯Ò™ өлөшөгөҙҙө керетергә теләһәгеҙ, [//www.mediawiki.org/wiki/Localisation MediaWiki программаһын локалләштереү] битен һәм [//translatewiki.net translatewiki.net] проектын ҡарап ÑÑ‹Ò“Ñ‹Ò“Ñ‹Ò™.',
'allmessagesnotsupportedDB' => "Был бит ҡулланыла алмай, Ñөнки '''\$wgUseDatabaseMessages''' мөмкинлеге һүндерелгән.",
'allmessages-filter-legend' => 'Һайлау',
'allmessages-filter' => 'Үҙгәртеү торошо буйынÑа һайлау:',
@@ -2559,9 +2569,7 @@ $1 бикләнгән инде.
'tooltip-summary' => 'ҠыҫҡаÑа таÑуирлама керетегеҙ',
# Metadata
-'nodublincore' => 'Dublin Core RDF мета-мәғлүмәт был Ñервер Ó©Ñөн Ñ€Ó©Ñ…Ñәт ителмәй.',
-'nocreativecommons' => 'Creative Commons RDF мета-мәғлүмәт был Ñервер Ó©Ñөн Ñ€Ó©Ñ…Ñәт ителмәй.',
-'notacceptable' => 'Вики-Ñервер мәғлүмәтте һеҙҙең браузер уҡый алырлыҡ форматта ҡайтара алмай.<br />
+'notacceptable' => 'Вики-Ñервер мәғлүмәтте һеҙҙең браузер уҡый алырлыҡ форматта ҡайтара алмай.<br />
The wiki server cannot provide data in a format your client can read.',
# Attribution
@@ -2585,14 +2593,6 @@ The wiki server cannot provide data in a format your client can read.',
'spam_reverting' => '$1 һылтанмаһыҙ һуңғы өлгөгә ҡайтарыу',
'spam_blanking' => 'Бөтә өлгөләрҙә лә $1 һылтанмаһы бар, таҙартыу',
-# Info page
-'infosubtitle' => 'Бит тураһында мәғлүмәт',
-'numedits' => 'Үҙгәртеүҙәр һаны (бит): $1',
-'numtalkedits' => 'Үҙгәртеүҙәр һаны (фекер алышыу бите): $1',
-'numwatchers' => 'КүҙәтеүÑеләр һаны: $1',
-'numauthors' => 'Төрлө авторҙар һаны (бит): $1',
-'numtalkauthors' => 'Төрлө авторҙар һаны (фекер алышыу бите): $1',
-
# Skin names
'skinname-standard' => 'КлаÑÑик',
'skinname-cologneblue' => 'Кёльн һағышы',
@@ -2602,26 +2602,6 @@ The wiki server cannot provide data in a format your client can read.',
'skinname-modern' => 'ЗаманÑа',
'skinname-vector' => 'Векторлы',
-# Math options
-'mw_math_png' => 'Һәр ваҡыт PNG Ñһа',
-'mw_math_simple' => 'Ябайҙарҙа HTML, башҡа оÑраҡтарҙа PNG',
-'mw_math_html' => 'Мөмкин булһа HTML, башҡа оÑраҡтарҙа PNG',
-'mw_math_source' => 'ТеХ форматында ҡалдырырға (текÑÑ‚ браузерҙары Ó©Ñөн)',
-'mw_math_modern' => 'ЗаманÑа браузерҙар Ó©Ñөн тәҡдим ителгәнÑÓ™',
-'mw_math_mathml' => 'Мөмкин булһа, MathML (тикшереү оÑоронда)',
-
-# Math errors
-'math_failure' => 'Уҡып булмай',
-'math_unknown_error' => 'билдәһеҙ хата',
-'math_unknown_function' => 'билдәһеҙ функциÑ',
-'math_lexing_error' => 'лекÑик хата',
-'math_syntax_error' => 'ÑинтакÑик хата',
-'math_image_error' => 'PNG Ñһау хатаһы.
-latex һәм dvipng (йәки dvips + gs + convert) дөрөҫ ҡуйылыуын тикшерегеҙ.',
-'math_bad_tmpdir' => 'Ваҡытлы математика директориÑһы булдырып йәки директориÑға Ñҙҙырып булмай',
-'math_bad_output' => 'Математика директориÑһы булдырып йәки директориÑға Ñҙҙырып булмай',
-'math_notexvc' => 'Башҡарыла торған texvc файлы ÑŽÒ¡. Көйләүҙәр буйынÑа белешмәне — math/README уҡығыҙ.',
-
# Patrolling
'markaspatrolleddiff' => 'Тикшерелгән, тип билдәләргә',
'markaspatrolledtext' => 'Бил битте тикшерелгән, тип билдәләргә',
@@ -2667,7 +2647,6 @@ $1',
'file-nohires' => '<small>Юғары аÑыҡлыҡтағы өлгө ÑŽÒ¡.</small>',
'svg-long-desc' => 'SVG файлы, номиналь $1 × $2 нөктә, файлдың дәүмәле: $3',
'show-big-image' => 'Тулы аÑыҡлыҡ',
-'show-big-image-thumb' => '<small>Ðлдан байҡау дәүмәле: $1 × $2 нөктә</small>',
'file-info-gif-looped' => 'әйләнешле',
'file-info-gif-frames' => '$1 {{PLURAL:$1|фрейм}}',
'file-info-png-looped' => 'әйләнешле',
@@ -2698,14 +2677,20 @@ $1',
'metadata-help' => 'Файл, ғәҙәттә һанлы камералар йәки Ñканерҙар өҫтәгән мәғлүмәттәргә Ñйә. Әгәр файл Ñһалғандан һуң төҙәтелгән булһа, ҡайһы бер параметрҙар ағымдағы Ñ€Ó™Ñем менән тап килмәҫкә мөмкин.',
'metadata-expand' => 'Өҫтәмә мәғлүмәттәрҙе күрһәт',
'metadata-collapse' => 'Өҫтәмә мәғлүмәттәрҙе йәшер',
-'metadata-fields' => 'Был иÑемлектә һанап кителгән мета мәғлүмәт юлдары Ñ€Ó™Ñем битендә күрһәтеләÑәктәр, ҡалғандары иһә йәшерелгән булаÑаҡтар.
+'metadata-fields' => 'Был иÑемлектә һанап кителгән мета мәғлүмәт юлдары Ñ€Ó™Ñем битендә күрһәтеләÑәктәр, ҡалғандары иһә төрөлгән булаÑаҡ.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Киңлек',
@@ -2720,13 +2705,11 @@ $1',
'exif-ycbcrpositioning' => 'Y һәм C өлөштәренең тәртибе',
'exif-xresolution' => 'X күÑәре буйынÑа аÑыҡлыҡ',
'exif-yresolution' => 'Y күÑәре буйынÑа аÑыҡлыҡ',
-'exif-resolutionunit' => 'X һәм Y аÑыҡлыҡтарын үлÑÓ™Ò¯ берәмеге',
'exif-stripoffsets' => 'РәÑем мәғлүмәте урынлашыуы',
'exif-rowsperstrip' => 'Бер бүлектә юлдар һаны',
'exif-stripbytecounts' => 'Ҡыҫылған бүлектә байттар һаны',
'exif-jpeginterchangeformat' => 'JPEG SOI бүлегенең башланған урыны',
'exif-jpeginterchangeformatlength' => 'JPEG мәғлүмәте дәүмәле, байттарҙа',
-'exif-transferfunction' => 'Төҫтәр киңлеген үҙгәртеү функциÑһы',
'exif-whitepoint' => 'ÐÒ¡ нөктәнең төҫлөлөгө',
'exif-primarychromaticities' => 'Төп төҫтәрҙең төҫлөлөгө',
'exif-ycbcrcoefficients' => 'Төҫтәр киңлеген үҙгәртеү коÑффициенты',
@@ -2745,7 +2728,6 @@ $1',
'exif-compressedbitsperpixel' => 'РәÑемде ҡыҫыу Ñ‹Ñулы',
'exif-pixelydimension' => 'РәÑем киңлеге',
'exif-pixelxdimension' => 'РәÑем бейеклеге',
-'exif-makernote' => 'ЕтештереүÑе иҫкәрмәһе',
'exif-usercomment' => 'ҠулланыуÑÑ‹ иҫкәрмәһе',
'exif-relatedsoundfile' => 'Бәйле аудио файл',
'exif-datetimeoriginal' => 'Төп көнө һәм ваҡыты',
@@ -2759,7 +2741,6 @@ $1',
'exif-exposureprogram' => 'ЭкÑÐ¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ñ€ÐµÐ¶Ð¸Ð¼Ñ‹',
'exif-spectralsensitivity' => 'Спектраль һиҙгерлек',
'exif-isospeedratings' => 'ISO буйынÑа Ñҡтыға һиҙгерлек',
-'exif-oecf' => 'ОптоÑлектрик үҙгәртеү коÑффициенты',
'exif-shutterspeedvalue' => 'APEX затвор тиҙлеге',
'exif-aperturevalue' => 'APEX диафрагма',
'exif-brightnessvalue' => 'APEX баҙыҡлыҡ',
@@ -2772,7 +2753,6 @@ $1',
'exif-focallength' => 'Ð¤Ð¾ÐºÑƒÑ Ð°Ñ€Ð°Ð»Ñ‹Ò“Ñ‹',
'exif-subjectarea' => 'ЕÑемдең урынлашыу майҙаны',
'exif-flashenergy' => 'Балҡыш (вÑпышка) ҡеүәте',
-'exif-spatialfrequencyresponse' => 'Киңлек йышлығы билдәләмәһе',
'exif-focalplanexresolution' => 'Ð¤Ð¾ÐºÑƒÑ Ñҫылығының Ð¥ күÑәре буйынÑа аÑыҡлығы',
'exif-focalplaneyresolution' => 'Ð¤Ð¾ÐºÑƒÑ Ñҫылығының Y күÑәре буйынÑа аÑыҡлығы',
'exif-focalplaneresolutionunit' => 'Ð¤Ð¾ÐºÑƒÑ Ñҫылығы аÑыҡлығының үлÑÓ™Ò¯ берәмеге',
@@ -2781,7 +2761,6 @@ $1',
'exif-sensingmethod' => 'СенÑор Ñ‚Ó©Ñ€Ó©',
'exif-filesource' => 'Файл Ñығанағы',
'exif-scenetype' => 'Сәхнә төрө',
-'exif-cfapattern' => 'Төҫтәр һайлаү йыйынтығы (CFA) төрө',
'exif-customrendered' => 'РәÑемде өҫтәмә Ñшкәртеү',
'exif-exposuremode' => 'ЭкÑÐ¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ñ‚Ó©Ñ€Ó©',
'exif-whitebalance' => 'ÐÒ¡ Ñ‚Ó©Ò« тигеҙләнеше',
@@ -2826,7 +2805,9 @@ $1',
'exif-gpsareainformation' => 'GPS өлкәһенең иÑеме',
'exif-gpsdatestamp' => 'GPS ваҡыты',
'exif-gpsdifferential' => 'GPS мәғлүмәтте дифференциаль төҙәтеү',
+'exif-jpegfilecomment' => 'JPEG файл Ó©Ñөн иҫкәрмә',
'exif-objectname' => 'Ҡыҫҡа иÑем',
+'exif-iimcategory' => 'КатегориÑ',
# EXIF attributes
'exif-compression-1' => 'Ҡыҫылмаған',
@@ -2971,17 +2952,18 @@ $1',
'exif-gpsdirection-t' => 'ЫÑын йүнәлеш',
'exif-gpsdirection-m' => 'Магнитлы йүнәлеш',
+'exif-iimcategory-spo' => 'Спорт',
+'exif-iimcategory-wea' => 'Һауа торошо',
+
# External editor support
'edit-externally' => 'Был файлды тышҡы программа ҡулланып мөхәррирләргә',
-'edit-externally-help' => '(Тулыраҡ мәғлүмәт Ó©Ñөн металағы [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] (инглизÑÓ™) битен ҡарағыҙ)',
+'edit-externally-help' => '(Тулыраҡ мәғлүмәт Ó©Ñөн металағы [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] (инглизÑÓ™) битен ҡарағыҙ)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'бөтә',
-'imagelistall' => 'бөтә',
-'watchlistall2' => 'бөтә',
-'namespacesall' => 'бөтә',
-'monthsall' => 'бөтә',
-'limitall' => 'бөтә',
+'watchlistall2' => 'бөтә',
+'namespacesall' => 'бөтә',
+'monthsall' => 'бөтә',
+'limitall' => 'бөтә',
# E-mail address confirmation
'confirmemail' => 'Электрон почта адреÑын раҫлау',
@@ -3117,14 +3099,14 @@ $1',
'watchlistedit-normal-legend' => 'Күҙәтеү иÑемлегенән биттәрҙе юйыу',
'watchlistedit-normal-explain' => 'Түбәндә һеҙҙең күҙәтеү иÑемлегендә булған биттәр күрһәтелгән.
Биттәрҙе юйыу Ó©Ñөн, кәрәкле юлдарҙы һайлағыҙ һәм «{{int:Watchlistedit-normal-submit}}» төймәһенә баҫығыҙ.
-Һеҙ шулай уҡ [[Special:Watchlist/raw|иÑемлекте текÑÑ‚ рәүешендә үҙгәртә]] алаһығыҙ.',
+Һеҙ шулай уҡ [[Special:EditWatchlist/raw|иÑемлекте текÑÑ‚ рәүешендә үҙгәртә]] алаһығыҙ.',
'watchlistedit-normal-submit' => 'Биттәрҙе юйырға',
'watchlistedit-normal-done' => '{{PLURAL:$1|$1 бит|$1 бит}} һеҙҙең күҙәтеү иÑемлегенән юйылды:',
'watchlistedit-raw-title' => '«Сей» күҙәтеү иÑемлеген мөхәррирләү',
'watchlistedit-raw-legend' => '«Сей» күҙәтеү иÑемлеген мөхәррирләү',
'watchlistedit-raw-explain' => 'Түбәндә һеҙҙең күҙәтеү иÑемлегендә булған биттәр күрһәтелгән. Һеҙ был иÑемлекте, юлдар өҫтәп йәки юйып, үҙгәртә алаһығыҙ; бер юлға - бер иÑем.
Үҙгәртеүҙе тамамлағаÑ, «{{int:Watchlistedit-raw-submit}}» төймәһенә баҫығыҙ.
-Һеҙ шулай уҡ ғәҙәттәге [[Special:Watchlist/edit|күҙәтеү иÑемен мөхәррирләү битен]] ҡулланана алаһығыҙ.',
+Һеҙ шулай уҡ ғәҙәттәге [[Special:EditWatchlist|күҙәтеү иÑемен мөхәррирләү битен]] ҡулланана алаһығыҙ.',
'watchlistedit-raw-titles' => 'Яҙмалар:',
'watchlistedit-raw-submit' => 'ИÑемлекте Ñңыртырға',
'watchlistedit-raw-done' => 'Һеҙҙең күҙәтеү иÑемлеге Ñңырҙы.',
@@ -3141,33 +3123,33 @@ $1',
'duplicate-defaultsort' => '\'\'\'Иҫкәртеү:\'\'\' "$2" ғәҙәттәге тәпртипкә килтереү аÑÒ¡Ñ‹ÑÑ‹ Ñлекке "$1" ғәҙәттәге тәртипкә килтереү аÑÒ¡Ñ‹Ñын үҙгәртә.',
# Special:Version
-'version' => 'MediaWiki өлгөһө',
-'version-extensions' => 'Ҡуйылған киңәйтеүҙәр',
-'version-specialpages' => 'МахÑÑƒÑ Ð±Ð¸Ñ‚Ñ‚Ó™Ñ€',
-'version-parserhooks' => 'Уҡыу ҡоралдары',
-'version-variables' => 'ҮҙгәреүÑән дәүмәлдәр',
-'version-skins' => 'Күренештәр',
-'version-other' => 'Башҡалар',
-'version-mediahandlers' => 'Медиа ÑшкәртеүÑе ҡоралдар',
-'version-hooks' => 'Эләктереп алыуÑылар',
-'version-extension-functions' => 'Киңәйтеү функциÑлары',
-'version-parser-extensiontags' => 'Уҡыу ҡоралдары киңәйтеүҙәре тегтары',
-'version-parser-function-hooks' => 'Уҡыу ҡоралдары функциÑларын Ñләктереп алыуÑылар',
-'version-skin-extension-functions' => 'Күренеш киңәйтеүҙәре функциÑлары',
-'version-hook-name' => 'Эләктереп алыуÑÑ‹ иÑеме',
-'version-hook-subscribedby' => 'Яҙҙырылған',
-'version-version' => '($1 өлгөһө)',
-'version-license' => 'РөхÑәтнамә',
-'version-poweredby-credits' => "Был вики проект '''[http://www.mediawiki.org/ MediaWiki]''' нигеҙендә Ñшләй, copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'башҡалар',
-'version-license-info' => 'MediaWiki — ирекле программа, һеҙ уны Ирекле программалар фонды тарафынан баҫтырылған GNU General Public License Ñ€Ó©Ñ…Ñәтнамәһенә Ñрашлы тарата һәм/йәки үҙгәртә алаһығыҙ (Ñ€Ó©Ñ…Ñәтнамәнең йә иÑенÑе өлгөһө, йә унан һуңғы өлгөләре).
+'version' => 'MediaWiki өлгөһө',
+'version-extensions' => 'Ҡуйылған киңәйтеүҙәр',
+'version-specialpages' => 'МахÑÑƒÑ Ð±Ð¸Ñ‚Ñ‚Ó™Ñ€',
+'version-parserhooks' => 'Уҡыу ҡоралдары',
+'version-variables' => 'ҮҙгәреүÑән дәүмәлдәр',
+'version-antispam' => 'Спамға ҡаршы ҡорал',
+'version-skins' => 'Күренештәр',
+'version-other' => 'Башҡалар',
+'version-mediahandlers' => 'Медиа ÑшкәртеүÑе ҡоралдар',
+'version-hooks' => 'Эләктереп алыуÑылар',
+'version-extension-functions' => 'Киңәйтеү функциÑлары',
+'version-parser-extensiontags' => 'Уҡыу ҡоралдары киңәйтеүҙәре тегтары',
+'version-parser-function-hooks' => 'Уҡыу ҡоралдары функциÑларын Ñләктереп алыуÑылар',
+'version-hook-name' => 'Эләктереп алыуÑÑ‹ иÑеме',
+'version-hook-subscribedby' => 'Яҙҙырылған',
+'version-version' => '($1 өлгөһө)',
+'version-license' => 'РөхÑәтнамә',
+'version-poweredby-credits' => "Был вики проект '''[//www.mediawiki.org/ MediaWiki]''' нигеҙендә Ñшләй, copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'башҡалар',
+'version-license-info' => 'MediaWiki — ирекле программа, һеҙ уны Ирекле программалар фонды тарафынан баҫтырылған GNU General Public License Ñ€Ó©Ñ…Ñәтнамәһенә Ñрашлы тарата һәм/йәки үҙгәртә алаһығыҙ (Ñ€Ó©Ñ…Ñәтнамәнең йә иÑенÑе өлгөһө, йә унан һуңғы өлгөләре).
MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР ÐИДӘЙ Ò˜Ó˜ ЯУÐПЛЫЛЫҠ ЙӨКЛӘМӘҺЕҘ, хатта фараз ителгән ÒºÐТЫУ ӨСӨРЯРÐҠЛЫЛЫҠ йәки БИЛДӘЛӘÐГӘРМÐҠСÐТ ӨСӨРЯРÐҠЛЫТЫҠ тураһында Ñуаплылыҡ йөкләмәһеҙ таратыла. Ентекле мәғлүмәт алыр Ó©Ñөн, GNU General Public License Ñ€Ó©Ñ…Ñәтнамәһе тураһында уҡығыҙ.
-Был программа менән ҡуша һеҙ [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License Ñ€Ó©Ñ…Ñәтнамәһенең күÑермәһен] алырға тейеш инегеҙ, әгәр ÑŽÒ¡ икән, Ирекле программалар фондына 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA адреÑÑ‹ буйынÑа Ñҙығыҙ, йәки Ñ€Ó©Ñ…Ñәтнамәнең [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html онлайн өлгөһөн] уҡығыҙ.',
-'version-software' => 'Ҡуйылған программалар',
-'version-software-product' => 'Продукт',
-'version-software-version' => 'Өлгөһө',
+Был программа менән ҡуша һеҙ [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License Ñ€Ó©Ñ…Ñәтнамәһенең күÑермәһен] алырға тейеш инегеҙ, әгәр ÑŽÒ¡ икән, Ирекле программалар фондына 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA адреÑÑ‹ буйынÑа Ñҙығыҙ, йәки Ñ€Ó©Ñ…Ñәтнамәнең [//www.gnu.org/licenses/old-licenses/gpl-2.0.html онлайн өлгөһөн] уҡығыҙ.',
+'version-software' => 'Ҡуйылған программалар',
+'version-software-product' => 'Продукт',
+'version-software-version' => 'Өлгөһө',
# Special:FilePath
'filepath' => 'Файлға юл',
@@ -3177,16 +3159,15 @@ MediaWiki файҙалы булыр, тигән өмөттә, ләкин БЕР
РәÑемдәр тулы аÑыҡлыҡта күрһәтелә, башҡа файлдар билдәләнгән программалары аша турана-тура аÑыла.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Бер иш файлдарҙы Ñҙләү',
-'fileduplicatesearch-summary' => 'Бер иш файлдарҙы Ñ…Ñш-кодтары буйынÑа Ñҙләү.
-
-Файлдың иÑемен "{{ns:file}}:" ҡушылмаһын өҫтәмәйенÑÓ™ керетегеҙ.',
-'fileduplicatesearch-legend' => 'Бер иш файлдарҙы Ñҙләү',
-'fileduplicatesearch-filename' => 'Файл иÑеме:',
-'fileduplicatesearch-submit' => 'Эҙләү',
-'fileduplicatesearch-info' => '$1 × $2 пикÑел<br />Файлдың дәүмәле: $3<br />MIME Ñ‚Ó©Ñ€Ó©: $4',
-'fileduplicatesearch-result-1' => '"$1" файлы менән тап килеүÑе файлдар ÑŽÒ¡.',
-'fileduplicatesearch-result-n' => '"$1" файлы менән $2 {{PLURAL:$2|файл}} тап килә.',
+'fileduplicatesearch' => 'Бер иш файлдарҙы Ñҙләү',
+'fileduplicatesearch-summary' => 'Бер иш файлдарҙы Ñ…Ñш-кодтары буйынÑа Ñҙләү.',
+'fileduplicatesearch-legend' => 'Бер иш файлдарҙы Ñҙләү',
+'fileduplicatesearch-filename' => 'Файл иÑеме:',
+'fileduplicatesearch-submit' => 'Эҙләү',
+'fileduplicatesearch-info' => '$1 × $2 пикÑел<br />Файлдың дәүмәле: $3<br />MIME Ñ‚Ó©Ñ€Ó©: $4',
+'fileduplicatesearch-result-1' => '"$1" файлы менән тап килеүÑе файлдар ÑŽÒ¡.',
+'fileduplicatesearch-result-n' => '"$1" файлы менән $2 {{PLURAL:$2|файл}} тап килә.',
+'fileduplicatesearch-noresults' => '"$1" иÑемле файл табылманы',
# Special:SpecialPages
'specialpages' => 'МахÑÑƒÑ Ð±Ð¸Ñ‚Ñ‚Ó™Ñ€',
diff --git a/languages/messages/MessagesBar.php b/languages/messages/MessagesBar.php
index 37eec853..7fdad42e 100644
--- a/languages/messages/MessagesBar.php
+++ b/languages/messages/MessagesBar.php
@@ -149,15 +149,7 @@ $messages = array(
'listingcontinuesabbrev' => '(Furtsétzung)',
'index-category' => 'Indizirde Seiten',
'noindex-category' => 'Néd-indizirde Seiten',
-
-'mainpagetext' => "'''MediaWiki is erfoigreich installird worn.'''",
-'mainpagedocfooter' => 'A Hüf zur da Benützung und Konfigurazion voh da Wiki-Software findst auf [http://meta.wikimedia.org/wiki/Help:Contents Benützerhåndbuach].
-
-== Starthüfe ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Listen voh de Konfigurazionsvariaablen]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglisten voh de neichen MediaWiki-Versionen]',
+'broken-file-category' => 'Seiten mid kaputte Daateilinks',
'about' => 'Ywer',
'article' => 'Artike',
@@ -209,10 +201,10 @@ $messages = array(
'history' => 'Versiónen',
'history_short' => 'Versionen/Autorn',
'updatedmarker' => '(gänderd)',
-'info_short' => 'Informazion',
'printableversion' => 'Versión zum Ausdrucken',
'permalink' => 'Permanenter Link',
'print' => 'Drucken',
+'view' => 'Leesen',
'edit' => 'werkeln',
'create' => 'Erstön',
'editthispage' => 'Seiten beorweiten',
@@ -220,6 +212,7 @@ $messages = array(
'delete' => 'léschen',
'deletethispage' => 'De Seiten leschen',
'undelete_short' => '{{PLURAL:$1|1 Version|$1 Versionen}} wiederherstön',
+'viewdeleted_short' => '{{PLURAL:$1|Oah geléschde Versión|$1 geléschde Versiónen}} åschauh',
'protect' => 'Schytzen',
'protect_change' => 'ändern',
'protectthispage' => 'Seiten schytzen',
@@ -304,6 +297,8 @@ Schaug auf [[Special:Version|Versiónsseiten]]",
'toc' => 'Inhoidsvazeichnis',
'showtoc' => 'Ã…zoang',
'hidetoc' => 'vastecken',
+'collapsible-collapse' => 'Eihkloppm',
+'collapsible-expand' => 'Auskloppm',
'thisisdeleted' => '$1 åschauh óder wiederherstön?',
'viewdeleted' => '$1 åzoang?',
'restorelink' => '$1 gléschde {{PLURAL:$1|Versión|Versiónen}}',
@@ -315,6 +310,8 @@ Schaug auf [[Special:Version|Versiónsseiten]]",
'page-rss-feed' => 'RSS-Feed fyr „$1“',
'page-atom-feed' => 'Atom-Feed fyr „$1“',
'red-link-title' => '$1 (dé Seiten gibts néd)',
+'sort-descending' => 'Obsteigend sortiern',
+'sort-ascending' => 'Aufsteigend sortiern',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Seiten',
@@ -397,11 +394,13 @@ Bittscheh vasuachs in a por Minunten nuamoi.',
'protectedinterface' => "Dé Seiten do enthoit Text fyr d' Benutzerówerflächen voh da Software und is gschytzd, um an Missbrauch vurzbeing.",
'editinginterface' => "'''Ówocht:''' Dé Seiten do enthoit voh da MediaWiki-Software gnutzden Text.
Änderrungen auf derer Seiten wirken sé auf d' Benutzerówerflächen aus.
-Ziag bittscheh im Foi voh Ywersétzungen in Betrocht, dé bei [http://translatewiki.net/wiki/Main_Page?setlang=de translatewiki.net], da Lókaalisiarungsblottform fyr MediaWiki, durchzfyrn.",
+Ziag bittscheh im Foi voh Ywersétzungen in Betrocht, dé bei [//translatewiki.net/wiki/Main_Page?setlang=de translatewiki.net], da Lókaalisiarungsblottform fyr MediaWiki, durchzfyrn.",
'sqlhidden' => '(SQL-Obfrog vastéckt)',
'cascadeprotected' => "Dé Seiten is zua da Beorweitung gsperrd worn. Sie is in d' {{PLURAL:$1|fóigande Seiten|fóiganden Seiten}} eihbunden, dé mid da Kaskaadensperrópzión gschytzd {{PLURAL:$1|is|san}}:
$2",
'namespaceprotected' => "Du host néd d' daforderliche Berechtigung, Seiten im Náumensraum '''$1''' b'orweiden z' kenner.",
+'customcssprotected' => "Du host néd d' Berechtigung dé CSS enthoitende Seiten z' b'orweiden, weis d' persénlichen Eihstöungen vohram aundern Benutzer enthoitt.",
+'customjsprotected' => "Du host néd d' Berechtigung dé JavaScript enthoitende Seiten z' b'orweiden, weis d' persénlichen Eihstöungen vohram aundern Benutzer enthoitt.",
'ns-specialprotected' => "Speziaalseiten kennern néd b'orweidt wern.",
'titleprotected' => "A Seiten mid dém Nåm kå néd åglégd wern. Dé Sperrn is durch [[User:$1|$1]] mid da Begryndung ''„$2“'' eihgerichtt worn.",
@@ -439,6 +438,7 @@ Vagiss bittscheh néd, deine [[Special:Preferences|{{SITENAME}}-Eishtellungen]]
'createaccount' => 'Benutzerkóntó åléng',
'gotaccount' => "Du host schoh a Benutzerkonto? '''$1'''.",
'gotaccountlink' => 'Åmöden',
+'userlogin-resetlink' => "Host d' Åmödedaaten vagessen?",
'createaccountmail' => 'per E-Mail',
'createaccountreason' => 'Grund',
'badretype' => 'De zwoa Posswerter stimmer ned ywereih.',
@@ -447,6 +447,8 @@ Vagiss bittscheh néd, deine [[Special:Preferences|{{SITENAME}}-Eishtellungen]]
'createaccounterror' => 'Des Benutzerkonto hod ned erstöd wern kenner: $1',
'nocookiesnew' => "Da Benytzerzuagång is erstöid worn, du bist ower ned ågmöidt. {{SITENAME}} benedigt fyr de Funkzion Cookies, bittschee aktiviar de und möidt de danoch mid daim naichn Benytzernåm und 'm dazuaghering Posswort å.",
'nocookieslogin' => '{{SITENAME}} nimmt Cookies zum Ailoggen vo de Benytzer her. Du host Cookies deaktivird, bittschee aktivir de und vasuchs nuamoi.',
+'nocookiesfornew' => "Dés Benutzerkóntó is néd erstöd worn, wei d' Daatenherkumft néd damittelt wern hod kenner.
+Es muass sichergstöd seih, daas Cookies aktivierd san. Danoch bittscheh d' Seiten daneit loon und wieder vasuacher.",
'loginsuccesstitle' => "D' Åmöidung is erfoigraich gween",
'loginsuccess' => 'Du bist jetzad ois „$1“ bai {{SITENAME}} ågmöidt.',
'wrongpassword' => 'Des Posswort is foisch! Bitschee prowirs nuamoi.',
@@ -459,7 +461,7 @@ Vagiss bittscheh néd, deine [[Special:Preferences|{{SITENAME}}-Eishtellungen]]
'accountcreatedtext' => "'s Benytzerkonto $1 is aigrichtt worn.",
'loginlanguagelabel' => 'Sprooch: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Posswort ändern',
'oldpassword' => 'Oids Posswort:',
'newpassword' => 'Naichs Posswort:',
@@ -467,6 +469,10 @@ Vagiss bittscheh néd, deine [[Special:Preferences|{{SITENAME}}-Eishtellungen]]
'resetpass-submit-loggedin' => 'Posswort ändern',
'resetpass-submit-cancel' => 'Obbrechen',
+# Special:PasswordReset
+'passwordreset' => 'Passwoat zrucksetzn',
+'passwordreset-username' => 'Benutzernåm:',
+
# Edit page toolbar
'bold_sample' => 'Fetter Text',
'bold_tip' => 'Fetter Text',
@@ -478,8 +484,6 @@ Vagiss bittscheh néd, deine [[Special:Preferences|{{SITENAME}}-Eishtellungen]]
'extlink_tip' => 'Externer Link (http:// beochten)',
'headline_sample' => 'Ywerschrift auf da zwoaten Ewene',
'headline_tip' => 'Ewene-2-Ywerschrift',
-'math_sample' => 'Formel dodan aifyng',
-'math_tip' => 'Mathematische Formel (LaTeX)',
'nowiki_sample' => 'Dén néd-formatirden Text dodan eihfiang',
'nowiki_tip' => 'Ned-formatirder Text',
'image_tip' => 'Daateilink',
@@ -524,7 +528,7 @@ Du kååst an Titl vo derer Saiten auf de åndern Saiten [[Special:Search/{{PAGE
'noarticletext-nopermission' => 'Dé Seiten enthoit im Moment nó koan Text néd.
Du derfst an Titel auf åndre Seiten [[Special:Search/{{PAGENAME}}|suachen]]
óder dé zuaghering <span class="plainlinks">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbiachén åschaung].</span>',
-'userpage-userdoesnotexist' => 'Des Benutzerkonto „$1“ is ned vurhånden. Bittschee priaf, ob du de Seiten wirkle erstöin/beorweiten wüist.',
+'userpage-userdoesnotexist' => 'Des Benutzerkonto „<nowiki>$1</nowiki>“ is ned vurhånden. Bittschee priaf, ob du de Seiten wirkle erstöin/beorweiten wüist.',
'userpage-userdoesnotexist-view' => 'Benutzerkonto „$1“ existiard ned.',
'blocked-notice-logextract' => "{{GENDER:$1|Der Benutzer|De Benutzarin|Der Benutzer do}} is zurzeid gesperrd.
Zua da Informazion foigt a aktueller Auszug aus 'm Benutzersperr-Logbiache:",
@@ -582,6 +586,9 @@ Zua deiner Informazión fóigts Lésch- und Vaschiawungs-Logbiaché mid da Begry
'post-expand-template-argument-warning' => "'''Ówocht:''' Dé Seiten enthoit minderstens oah Argument in ner Vurlog, dés expandird z' gróss is. Dé Argumentt wern ignorird.",
'post-expand-template-argument-category' => 'Seiten, dé ignorirde Vurlongargumentt enthoiden',
+# "Undo" feature
+'undo-summary' => 'Änderrung $1 voh [[Special:Contributions/$2|$2]] ([[User talk:$2|Diskussión]]) ryckgängig gmocht.',
+
# Account creation failure
'cantcreateaccounttitle' => 'Benutzerkonto kå ned erstöd wern',
@@ -597,9 +604,11 @@ Zua deiner Informazión fóigts Lésch- und Vaschiawungs-Logbiaché mid da Begry
'cur' => 'Aktuö',
'next' => 'Naxte',
'last' => 'Vurherige',
-'histlegend' => 'Zum Ozoagn vo Änderungen einfach de zwoa Versionen auswähln und auf de Schaltfläche „{{int:compareselectedversions}}“ klicken.<br />
-* (Aktuell) = Untaschied zur aktuellen Version, (Vorherige) = Untaschied zur vorherigen Version
-* Uhrzeit/Datum = Version zu dera Zeit, Benutzername/IP-Adresse vom Bearbeiter, K = Kloane Änderung',
+'page_first' => 'Auhfaung',
+'page_last' => 'End',
+'histlegend' => "Zur da Auhzoag voh dé Änderrungen oahfoch dé z' vagleichenden Versiónen auswön und d' Schoitflächen „{{int:compareselectedversions}}“ drucken.<br />
+* ({{int:cur}}) = Unterschiad zua da aktuön Versión, ({{int:last}}) = Unterschiad zua da vurhering Versión
+* Uarzeid/Daatum = Versión zua derer Zeid, Benutzernaum/IP-Adress vom Beorweiter, {{int:minoreditletter}} = Kloane Änderrung",
'history-fieldset-title' => 'Suach in da Versiónsgschicht',
'history-show-deleted' => 'netter gléschde Versiónen',
'histfirst' => 'Öderste',
@@ -709,7 +718,7 @@ Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}
'savedprefs' => 'Deine Eihstellungen san gspeicherd worn.',
'timezonelegend' => 'Zaidzone:',
'localtime' => 'Ortszaid:',
-'timezoneuseserverdefault' => 'Standardzaid vom Server',
+'timezoneuseserverdefault' => 'Standardzeid vom Wiki nutzen ($1)',
'guesstimezone' => 'Vom Browser übanehma',
'allowemail' => 'E-Mail-Empfång voh anderne Benutzer méglé mochen.',
'prefs-searchoptions' => 'Suachopziónen',
@@ -719,8 +728,8 @@ Details stehen im [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}}
'yourrealname' => 'Da echte NÃ¥m:',
'yourlanguage' => 'Sprooch vo da Benutzerowerflächen',
'prefs-help-realname' => 'Opzionoi. Dodamid kå dai byrgerlicher Nåm daine Baiträg zuagordnet wern.',
-'prefs-help-email' => 'De Ågob vo ner E-Mäil is opzionoi, ermeglicht ower de Zuasendung voram Ersootzposswort, wånn du dai Posswort vagessen host.
-Mid ånderne Benutzer kåst du aa ywer de Benutzerdischkrirsaiten an Kontakt aufnemma, one dass du dai Identität offmleeng muasst.',
+'prefs-help-email' => "Dé Ågob voh ner E-Mail-Adressen is ópziónoi, daméglicht ower d' Zuasendung vohram Ersotzposswort, sófern du deih Posswort vagessen host.",
+'prefs-help-email-others' => "Mid åndre Benutzer kåst aa ywer d' Benutzerdischkrirseiten an Kontakt aufnemmer, one daas du deih Identität óffmléng muasst.",
'prefs-help-email-required' => 'Es werd a güitige E-Mäil-Adress braucht.',
'prefs-info' => 'Baasisinformazionen',
@@ -774,9 +783,9 @@ Mid ånderne Benutzer kåst du aa ywer de Benutzerdischkrirsaiten an Kontakt auf
'rcnote' => "Untn {{PLURAL:$1|is de letzte Ändarung|san de letztn '''$1''' Ändarungen}} {{PLURAL:$2|vum letztn|vu de letztn '''$2'''}} Tåg aufglist. Stãnd vum $4 um $5.",
'rcnotefrom' => "Åzoagt wern d' Änderrungen seid '''$2''' (max. '''$1''' Eihtrég).",
'rclistfrom' => 'Netter Änderrungen seid $1 åzoang.',
-'rcshowhideminor' => 'kloane Ändarungen $1',
+'rcshowhideminor' => 'kloane Änderrungen $1',
'rcshowhidebots' => 'Bots $1',
-'rcshowhideliu' => 'Ãgmödte Benutzer $1',
+'rcshowhideliu' => 'Ågmödte Benutzer $1',
'rcshowhideanons' => 'Anónyme Benutzer $1',
'rcshowhidepatr' => 'Kontróilirde Änderrungen $1',
'rcshowhidemine' => 'Eigerne Beiträg $1',
@@ -797,7 +806,7 @@ Mid ånderne Benutzer kåst du aa ywer de Benutzerdischkrirsaiten an Kontakt auf
# Recent changes linked
'recentchangeslinked' => 'Änderrungen ån valinkte Seiten',
-'recentchangeslinked-feed' => 'Valinkts priafm',
+'recentchangeslinked-feed' => 'Valinkts priaffm',
'recentchangeslinked-toolbox' => 'Valinkts priaffm',
'recentchangeslinked-title' => 'Änderrungen ån Seiten, dé voh „$1“ valinkt san',
'recentchangeslinked-noresult' => 'Im ausgwöden Zeidraum san an dé valinkden Seiten koane Änderrungen vurgnummer worn.',
@@ -808,41 +817,70 @@ Mid ånderne Benutzer kåst du aa ywer de Benutzerdischkrirsaiten an Kontakt auf
# Upload
'upload' => 'Aufféloon',
'uploadbtn' => 'Daatei aufféloon',
-'uploadnologin' => 'Ned ågmöidt',
+'uploadnologin' => 'Néd ågmödt',
'uploadnologintext' => 'Du muasst [[Special:UserLogin|ågmödt]] seih, wånn Du Daatein auffeloon wüst.',
'uploadlog' => 'Daatei-Logbiache',
'uploadlogpage' => 'Daatei-Logbiache',
'uploadlogpagetext' => 'Des is des Logbuach voh de auffegloodanen Daatein, schaug aa unter [[Special:NewFiles|neiche Daatein]].',
'filename' => 'Daateinåm',
'filedesc' => 'Bschreiwung',
+'fileuploadsummary' => 'Bschreiwung/Quön',
'filereuploadsummary' => 'Daateiänderrungen:',
'filestatus' => 'Copyright-Staatus:',
'filesource' => 'Quön:',
'uploadedfiles' => 'Aufféglooderne Daatein',
+'ignorewarning' => "D' Warnung ignoriern und d' Daatei speichern",
+'ignorewarnings' => 'Warnung ignoriern',
+'minlength1' => 'Dé Daateinaumen miassen minderstens aan Buachstom laung seih.',
'badfilename' => 'Da Daateinåm is auf „$1“ gänderd worn.',
'large-file' => 'De Daateigreess soidad noch Meeglichkeid $1 ned ywerschreiten. De Daatei is $2 grooss.',
-'emptyfile' => "De hochgladene Datei is laar. Da Grund konn a Tippfehler im Dateinam sei. Bitte kontrollieren'S, ob Sie de Datei wirklich hochladn woin.",
-'uploadwarning' => 'Obacht',
+'largefileserver' => 'Dé Daatei is greesser ois dé vom Server eihgstöde Maximaalgreessen.',
+'emptyfile' => 'Dé aufféglooderne Daatei is laar. Da Grund kauh a Tippfeeler im Daateinaum seih. Bittscheh kóntróllier, ób du dé Daatei wirklé aufféloon wüst.',
+'uploadwarning' => 'Ówocht',
+'savefile' => 'Daatei speichern',
'uploadedimage' => 'hod „[[$1]]“ auffégloon',
-'uploaddisabled' => "'tschuldigung, as Hochladn is deaktiviert.",
-'uploadscripted' => 'De Datei enthalt HTML- oda Scriptcode, der irrtümlichaweis von am Webbrowser ausgführt wern kinnat.',
-'watchthisupload' => 'De Saiten beowochten',
-'filewasdeleted' => 'A Datei mit dem Nama is scho oamoi hochgladn worn und zwischenzeitlich wieda glöscht worn. Bitte schaug erscht den Eintrag im $1 oo, bevor du de Datei wirklich speicherst.',
-'upload-wasdeleted' => "'''Obacht: Du ladst aa Datei hoach, de scho friara glöscht worn is.'''
-Bittschee prüf gnau, ob as erneite Hoachladn de Richtlinien entspricht.
-Zu deina Information folgt des Lösch-Logbuach mit da Begründung fia de vorherige Löschung:",
-'upload-success-subj' => 'Erfolgreich hoachgladn',
+'uploaddisabled' => "'s aufféloon is deaktivierd",
+'uploadscripted' => 'Dé Datei enthoit HTML- óder Scriptcode, der wos irrtymlicherweis voram Webbrowser ausgfyrd wern kunnterd.',
+'uploadvirus' => 'Dé Daatei do enthoitt a Virus! Details: $1',
+'upload-source' => 'Quödaatei',
+'sourcefilename' => 'Quödaatei:',
+'sourceurl' => 'Quön-URL:',
+'destfilename' => 'Zünaum:',
+'upload-maxfilesize' => 'Maximaale Daateigréss: $1',
+'upload-description' => 'Daateibschreiwung',
+'upload-options' => 'Ópziónen fyrs Aufféloon',
+'watchthisupload' => 'Dé Seiten beówochten',
+'filewasdeleted' => "A Daatei mid dém Naum is schoh oamoi auffégloon und zwischenzeidlé wieder gléschd worn. Bittscheh schaug erscht 'n Eihtrog im $1 auh, bevur du dé Daatei wirklé speicherdst.",
+'upload-success-subj' => 'Erfóigreich auffégloon',
+'upload-failure-subj' => 'A Feeler beim Aufféloon',
+'upload-warning-subj' => 'Auffélood-Warnung',
+
+'upload-file-error' => 'Interner Feeler',
+'upload-unknown-size' => 'Néd bekaunnte Greess',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Zuagrieff vaweigerd',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
-'upload-curl-error6' => 'URL is net erreichbar',
+'upload-curl-error6' => "D' URL is néd dareichbor",
'license' => 'Lizenz:',
'license-header' => 'Lizenz',
-'license-nopreview' => '(es gibt koa Vorschau)',
-'upload_source_file' => ' (a Datei auf deim Computa)',
+'nolicense' => 'koah Vurauswoi',
+'license-nopreview' => '(es gibt koah Vurschau)',
+'upload_source_file' => ' (a Daatei auf deim Computer)',
# Special:ListFiles
-'listfiles_search_for' => 'Suach noch da Datai:',
+'listfiles_search_for' => 'Suach noch da Daatei:',
+'imgfile' => 'Daatei',
+'listfiles' => 'Daateilisten',
+'listfiles_thumb' => 'Vurschaubüdel',
+'listfiles_date' => 'Daatum',
+'listfiles_name' => 'NÃ¥m',
+'listfiles_user' => 'Benutzer',
+'listfiles_size' => 'Greess',
+'listfiles_description' => 'Bschreiwung',
+'listfiles_count' => 'Versiónen',
# File description page
'file-anchor-link' => 'Daatei',
@@ -855,7 +893,7 @@ Zu deina Information folgt des Lösch-Logbuach mit da Begründung fia de vorheri
'filehist-thumbtext' => "Vurschaubüdel fyr d' Versión vom $1, $3 Uar",
'filehist-user' => 'Benutzer',
'filehist-dimensions' => 'Moosse',
-'filehist-filesize' => 'Dataigress',
+'filehist-filesize' => 'Dateigreess',
'filehist-comment' => 'Kommentar',
'imagelinks' => 'Daateivawendung',
'linkstoimage' => "{{PLURAL:$1|D'foignde Seitn vawendt|De foigndn $1 Seitn vawendn}} de Datei:",
@@ -864,41 +902,41 @@ De foignde Listn zaagt netta {{PLURAL:$1|in easten Link|de easten $1 Links}} auf
A [[Special:WhatLinksHere/$2|voiständige Listn]] gibt's aa.",
'nolinkstoimage' => 'Koah Seiten bnutzd dé Daatei.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Weidare Links]] fia de Datei.',
-'redirectstofile' => "{{PLURAL:$1|D'foignde Datei leitet|De foigndn $1 Datein leitn}} auf de Datei weida:",
'duplicatesoffile' => "{{PLURAL:$1|D'foignde Datei is a Duplikat|De foigndn $1 Datein han Duplikate}} vu dea Datei ([[Special:FileDuplicateSearch/$2|weidare Deteus]]):",
'sharedupload' => 'De Datei stãmmt aus $1 und deaf bei ãndare Projekte vawendt wean.',
'sharedupload-desc-there' => "De Datei stãmmt aus $1 und deaf bei ãndera Projekte vawendt wean. Schau auf'd [$2 Dateibeschreibungsseitn] fia weidare Infoamazionen.",
'sharedupload-desc-here' => "Dé Daatei ståmmt aus $1 und derf voh åndre Prójektt vawendt wern. D' Bschreiwung voh da [$2 Daateibschreiwungsseiten] werd unten åzoagt.",
-'uploadnewversion-linktext' => 'A neie Version vo dera Datei hoachladn',
+'uploadnewversion-linktext' => 'A neiche Versión voh derer Daatei aufféloon',
# File reversion
-'filerevert-defaultcomment' => 'zruckgsetzt auf de Version vom $1, $2',
+'filerevert-defaultcomment' => 'zruckgsétzd auf dé Versión vom $1, $2',
'filerevert-submit' => 'Zrucksetzen',
# File deletion
-'filedelete-legend' => 'Lösch de Datei',
-'filedelete-intro' => "Du löschst de Datei '''„[[Media:$1|$1]]“'''.",
+'filedelete-legend' => 'Lésch dé Daatei',
+'filedelete-intro' => "Du léschst dé Daatei '''„[[Media:$1|$1]]“'''.",
# MIME search
'mimesearch-summary' => 'Auf dieser Spezialseite können die Dateien nach dem MIME-Typ gefiltert werden. Die Eingabe muss immer den Medien- und Subtyp beinhalten: <tt>image/jpeg</tt> (siehe Bildbeschreibungsseite).',
'download' => 'Owerlooden',
# Unused templates
-'unusedtemplates' => 'Net benutzte Vorlagen',
+'unusedtemplates' => 'Net benutzte Vorlagen',
+'unusedtemplateswlh' => 'Aundre Links',
# Random page
-'randompage' => 'Zuafoisartiké',
+'randompage' => 'Zuaféllige Seiten',
# Statistics
'statistics' => 'Staatistik',
'statistics-articles' => 'Inhoidsseiten',
'statistics-pages' => 'Seiten',
'statistics-pages-desc' => 'Olle Seiten in dém Wiki, inklusiav da Dischkrirseiten, Weiderloatungen usw.',
-'statistics-files' => 'Auffegloodane Daatein',
+'statistics-files' => 'Aufféglooderne Daatein',
'statistics-edits' => 'Seitenbeorweitungen',
'statistics-edits-average' => 'Beorweitungen pró Seiten im Durchschnit',
'statistics-views-total' => 'Seitenaufruaff gsåmmt',
-'statistics-mostpopular' => 'Am meistn bsuachte Seitn',
+'statistics-mostpopular' => 'Dé am moastbsuachten Seiten',
'disambiguationspage' => 'Template:Begriffsklärung',
'disambiguations-text' => 'De folgenden Seitn valinkn auf a Seitn zur Begriffsklärung.
@@ -908,7 +946,7 @@ Links aus Namensräume wern da net aufglistet.',
'doubleredirects' => 'Doppede Weiderloatungen',
'brokenredirects-edit' => 'werkeln',
-'brokenredirects-delete' => 'leschen',
+'brokenredirects-delete' => 'léschen',
'withoutinterwiki' => 'Seiten óne an Link zua åndre Sproochen',
'withoutinterwiki-summary' => "D' foiganden Seiten valinken néd auf a åndre Sproochversion",
@@ -930,7 +968,7 @@ Links aus Namensräume wern da net aufglistet.',
'uncategorizedtemplates' => 'Néd kategorisirde Vurlong',
'unusedcategories' => 'Néd bnutzde Kategorien',
'unusedimages' => 'Néd bnutzde Daatein',
-'popularpages' => 'Dé bliabersten Seiten',
+'popularpages' => 'Dé bliabtersten Seiten',
'wantedcategories' => 'Bnutzde, ower néd åglégte Kategorien',
'wantedpages' => 'Gwynschde Seiten',
'wantedpages-badtitle' => 'Ungütiger Titel im Ergeewnis: $1',
@@ -946,6 +984,10 @@ Links aus Namensräume wern da net aufglistet.',
'shortpages' => 'Kurze Seiten',
'longpages' => 'LÃ¥nge Seiten',
'deadendpages' => 'Néd valinkende Seiten',
+'deadendpagestext' => 'Dé fóigénden Seiten vaweisen néd auf aundre Seiten voh {{SITENAME}}.',
+'protectedpages' => 'Gschytzde Seiten',
+'protectedpages-indef' => 'Netter néd bschränkde gschytzde Seiten zoang',
+'protectedpages-cascade' => 'Netter Seiten mid Kaskadenschutz',
'usercreated' => 'Erstöd am $1 um $2 Ur',
'newpages' => 'Neiche Seiten',
'newpages-username' => 'Benutzernåm:',
@@ -970,18 +1012,18 @@ Links aus Namensräume wern da net aufglistet.',
# Special:AllPages
'allpages' => 'Olle Seiten',
'alphaindexline' => '$1 bis $2',
-'prevpage' => 'Voaherige Seitn ($1)',
-'allpagesfrom' => 'Seitn zoang ab:',
-'allpagesto' => 'Seitn ãnzoang bis:',
+'prevpage' => 'Vurherige Seiten ($1)',
+'allpagesfrom' => 'Seiten auhzoang ob:',
+'allpagesto' => 'Seiten auhzoang bis:',
'allarticles' => 'Olle Seiten',
-'allinnamespace' => 'Alle Seitn (Namensraum: $1)',
-'allnotinnamespace' => 'Alle Seitn (net im $1 Namensraum)',
-'allpagesprev' => 'Vorige',
+'allinnamespace' => 'Olle Seiten (Naumensraum: $1)',
+'allnotinnamespace' => 'Ollte Seiten (néd im $1 Naumensraum)',
+'allpagesprev' => 'Vurige',
'allpagesnext' => 'Naxde',
-'allpagessubmit' => 'Ã…wenden',
-'allpagesprefix' => 'Seitn zoagn mit Präfix:',
-'allpagesbadtitle' => 'Da eigemne Seitennam is net gültig: Er håt entweda an vorogestellts Språch-, a Interwiki-Kürzel oda oa oda mehrere Zeichn, de im Seitnnam net verwendt wern derfan.',
-'allpages-bad-ns' => "Den Namensraum „$1“ gibt's in {{SITENAME}} net.",
+'allpagessubmit' => 'Auhwenden',
+'allpagesprefix' => 'Seiten zoang mid Präfix:',
+'allpagesbadtitle' => "Da eihgeewerne Seitennaum is néd gütig: Er hod éntwéder a vurauhgstöds Sprooch-, a Interwiki-Kyrzel óder enthoitt oah óder mererne Zeichen, dé in d' Seitennaumen néd vawendt wern derffm.",
+'allpages-bad-ns' => 'Dén Naumensraum „$1“ gibts in {{SITENAME}} néd.',
# Special:Categories
'categories' => 'Kategorien',
@@ -990,8 +1032,8 @@ Links aus Namensräume wern da net aufglistet.',
'deletedcontributions' => 'Gléschde Beitrég',
# Special:LinkSearch
-'linksearch' => 'Weblinks suachen',
-'linksearch-ok' => 'Suacha',
+'linksearch' => 'Weblinks suacher',
+'linksearch-ok' => 'Suacher',
'linksearch-line' => '$1 is valinkt voh $2',
# Special:ListUsers
@@ -999,50 +1041,82 @@ Links aus Namensräume wern da net aufglistet.',
'listusers-noresult' => 'Koane Benutzer gfunden.',
# Special:Log/newusers
-'newuserlogpage' => 'Neiåmödungs-Logbiaché',
-'newuserlog-create-entry' => 'Benutza is nei registriad',
+'newuserlogpage' => 'Neiåmödungs-Logbiaché',
+'newuserlog-create-entry' => 'Benutzer is neich registrierd',
+'newuserlog-create2-entry' => 'erstö a neichs Benutzerkóntó „$1“',
+'newuserlog-autocreate-entry' => 'A Benutzerkóntó is autómaatisch erstöd worn',
# Special:ListGroupRights
-'listgrouprights-members' => '(Mitgliaderlisten)',
+'listgrouprights' => 'Benutzergruppmrechtt',
+'listgrouprights-summary' => 'Dés do is a Listen voh dé in dém Wiki definierden Benutzergruppm und da dodamid vabundernen Rechtt.
+Zuasätzlige Informaziónen ywer dé oahzelnen Rechtt kennan [[{{MediaWiki:Listgrouprights-helppage}}|do]] gfunden wern.',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Gwärds Recht</span>
+* <span class="listgrouprights-revoked">Entzóngs Recht</span>',
+'listgrouprights-group' => 'Gruppm',
+'listgrouprights-rights' => 'Rechte',
+'listgrouprights-helppage' => 'Help:Gruppmrechte',
+'listgrouprights-members' => '(Mitgliaderlisten)',
+'listgrouprights-addgroup' => 'Benutzer zua {{PLURAL:$2|derer Gruppm|dé Gruppm}} dazuadoah: $1',
+'listgrouprights-removegroup' => 'Benutzer aus {{PLURAL:$2|derer Gruppm|dé Gruppm}} entferner: $1',
+'listgrouprights-addgroup-all' => 'Benutzer zua olle Gruppm dazuadoah',
+'listgrouprights-removegroup-all' => 'Benutzer aus olle Gruppm éntferner',
+'listgrouprights-addgroup-self' => "'s oagerne Benutzerkóntó zua {{PLURAL:$2|derer Gruppm|dé Gruppm}} dazuadoah: $1",
+'listgrouprights-removegroup-self' => "'s oagerne Benutzerkóntó aus {{PLURAL:$2|derer Gruppm|dé Gruppm}} entferner: $1",
+'listgrouprights-addgroup-self-all' => 'Kauh olle Gruppm zum oagern Kóntó dazuadoah',
# E-mail user
-'mailnologin' => 'Sie san net oogmeidt.',
-'emailuser' => 'E-Póst an dén Benutzer',
-'noemailtitle' => 'Koa E-Mail-Adress',
-'emailfrom' => 'Vo',
-'emailsend' => 'Senden',
-'emailccme' => 'Schick a Kopii vo da E-Mail an mi söiwer',
-'emailsenttext' => 'Dai E-Mäil is vaschickt worn.',
+'mailnologin' => 'Du bist néd auhgmödt',
+'emailuser' => 'E-Póst an dén Benutzer',
+'emailpage' => 'E-Mail aun Benutzer',
+'noemailtitle' => 'Koah E-Mail-Adress',
+'emailfrom' => 'Voh:',
+'emailto' => 'Aun:',
+'emailsubject' => 'Bedreff:',
+'emailmessage' => 'Noochricht:',
+'emailsend' => 'Senden',
+'emailccme' => 'Schick a Kopii vo da E-Mail an mi söiwer',
+'emailccsubject' => 'a Kópie voh deiner Noochricht an $1: $2',
+'emailsent' => 'E-Mail is vaschickt worn',
+'emailsenttext' => 'Dai E-Mäil is vaschickt worn.',
# Watchlist
-'watchlist' => 'Beówochtungslisten',
-'mywatchlist' => 'Beówochtungslisten',
-'watchlistfor2' => 'Voh $1 $2',
-'watchlistanontext' => 'Sie miaßn si $1, um Eanane Beobachtungslistn zum seng oda Einträge auf ihr zum bearbatn.',
-'watchnologin' => 'Sie san net ogmeidt',
-'addedwatch' => 'Zua Beobachtungslistn dazuado',
-'addedwatchtext' => 'De Seitn „[[:$1]]“ is zua deina [[Special:Watchlist|Beobachtungslistn]] dazuado worn.
-Änderunga an dera Seitn und vo da Diskussionsseitn wern da glistet und
-in da Übasicht vo de [[Special:RecentChanges|letztn Änderungen]] in Fettschrift ozoagt.
-Wennst de Seitn wieder vo deina Beobachtungslistn wegdoa mechtn, klickst auf da jeweiligen Seitn auf „nimma beobachten“.',
-'removedwatch' => 'vu da Beobåchtungslistn weg nemma',
-'removedwatchtext' => "D'Seitn „[[:$1]]“ is vu deina [[Special:Watchlist|Beobåchtungslistn]] weg gnumma woan.",
-'watch' => 'Beówochten',
-'watchthispage' => 'Seitn beobachtn',
-'unwatch' => 'nimmer beówochten',
-'unwatchthispage' => 'Nimmer beówochten',
-'notanarticle' => 'Koah Seiten',
-'watchlist-details' => 'Du bówochst {{PLURAL:$1|$1 Seiten}}, Diskussiónsseiten néd midzöd',
-'wlheader-enotif' => '* Da E-Mail-Benachrichtigungsdienst is aktiviert.',
-'watchlistcontains' => 'Dei Beobachtungslistn enthoit $1 {{PLURAL:$1|Seite|Seitn}}.',
-'wlshowlast' => 'Zoag de Änderunga vo de letzten $1 Stunden, $2 Tag oda $3 (in de letzten 30 Tag).',
-'watchlist-options' => 'Åzoagópziónen',
+'watchlist' => 'Beówochtungslisten',
+'mywatchlist' => 'Beówochtungslisten',
+'watchlistfor2' => 'Voh $1 $2',
+'watchlistanontext' => "Du muasst dé $1, um deih Beówchtungslisten z' seeng óder Eihträg borweiten z' kenner.",
+'watchnologin' => 'Du bist néd auhgmödt',
+'watchnologintext' => "Du muasst [[Special:UserLogin|auhgmödt]] seih, um deih Beówochtungslisten beorweiten z' kenner.",
+'addwatch' => 'Zua Beówochtungslisten dazuadoah',
+'addedwatchtext' => 'Dé Seiten „[[:$1]]“ is zua deiner [[Special:Watchlist|Beówochtungslisten]] dazuadauh worn.
+Änderrungen an derer Seiten und voh da Dischkrierseiten wern do glistt und in da Ywersicht voh dé [[Special:RecentChanges|létzden Änderrungen]] auf Fettschrieft auhzoagt.
+
+Waunnst dé Seiten wieder voh deiner Beówochtungslisten weggerddoah mechst, druck oafoch auf da jeeweiling Seiten auf „nimmer beówochten“.',
+'removewatch' => 'Voh da Beówochtungslisten wegdoah',
+'removedwatchtext' => "D' Seiten „[[:$1]]“ is voh deiner [[Special:Watchlist|Beówochtungslisten]] wegdauh worn.",
+'watch' => 'Beówochten',
+'watchthispage' => "D' Seiten beówochten",
+'unwatch' => 'nimmer beówochten',
+'unwatchthispage' => 'Nimmer beówochten',
+'notanarticle' => 'Koah Seiten',
+'notvisiblerev' => 'Versión is gléschd worn',
+'watchnochange' => 'Koahne dé voh dir beówochterden Seiten san wärnd dém auhzoagten Zeidraum beorwatt worn.',
+'watchlist-details' => 'Du bówochst {{PLURAL:$1|$1 Seiten}}, Diskussiónsseiten néd midzöd',
+'wlheader-enotif' => '* Da E-Mail-Benoochrichtigungsdeanst is aktivierd.',
+'wlheader-showupdated' => "* Seiten mid noh néd gseengne Änderrungen wern '''fett''' dorgstöd.",
+'watchmethod-recent' => "Ywerpriaff d' létzden Beorwatungen fyr d' Beówochtungslisten",
+'watchmethod-list' => 'Ywerpriaffm voh da Beówochtungslisten auf létzde Beorwatungen',
+'watchlistcontains' => 'Deih Beówochtungslisten enthoitt $1 {{PLURAL:$1|Seiten|Seiten}}.',
+'iteminvalidname' => 'Próblém mim Eihtrog „$1“, néd gütiger Naum.',
+'wlshowlast' => 'Zoag dé Änderrungen voh dé létzden $1 Stunden, $2 Dog óder $3 (in dé létzden 30 Dog).',
+'watchlist-options' => 'Åzoagópziónen',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Beowochten ...',
-'unwatching' => 'Néd Beówochten',
+'watching' => 'Beówochten ...',
+'unwatching' => 'Néd Beówochten',
+'watcherrortext' => 'Ban Ändern voh da Beówochtungslisten fyr „$1“ is a Feeler auftreeden.',
-'enotif_reset' => 'Olle Seiten ois bsuacht markirn',
+'enotif_mailer' => '{{SITENAME}}-E-Mail-Benoochrichtigungsdeanst',
+'enotif_reset' => 'Olle Seiten ois bsuacht markiern',
'enotif_newpagetext' => 'Dés is a neiche Seiten.',
'enotif_impersonal_salutation' => '{{SITENAME}}-Benutzer',
'changed' => 'gänderd',
@@ -1050,33 +1124,58 @@ Wennst de Seitn wieder vo deina Beobachtungslistn wegdoa mechtn, klickst auf da
'enotif_lastvisited' => 'Olle Änderrungen auf oahn Blick: $1',
'enotif_lastdiff' => 'Schaug auf $1 noch derer Änderrung.',
'enotif_anon_editor' => 'Anonymer Benutzer $1',
-'enotif_body' => 'Liaba/e $WATCHINGUSERNAME,
-de {{SITENAME}} Seitn "$PAGETITLE" is vo $PAGEEDITOR am $PAGEEDITDATE $CHANGEDORCREATED worn.
-Zusammenfassung vom Bearbeiter: $PAGESUMMARY $PAGEMINOREDIT
-Es wern solang koae weitern Benachrichtigungsmails gsendt, bis Sie de Seitn wieder besuacht ham. Auf Eanana Beobachtungsseitn kinnans S\' alle Benachrichtigungsmarker zsamm zrucksetzen.
- Eana {{SITENAME}} Benachrichtigungssystem
+'enotif_body' => 'Servas $WATCHINGUSERNAME,
+
+dé {{SITENAME}}-Seiten „$PAGETITLE“ is voh $PAGEEDITOR am $PAGEEDITDATE um $PAGEEDITTIME Uar $CHANGEDORCREATED.
+
+Aktuöe Versión: $PAGETITLE_URL
+
+$NEWPAGE
+
+ZÃ¥mmfossung vom Beorweiter: $PAGESUMMARY $PAGEMINOREDIT
+
+Kontakt zum Beorweiter:
+E-Mail: $PAGEEDITOR_EMAIL
+Wiki: $PAGEEDITOR_WIKI
+
+Es wern da sólång koane weidern Benoochrichtigungsmails gsendt, bis du dé Seiten wieder bsuachst. Auf deiner Beówochtungslisten kåst olle Benoochrichtigunsmarkiarungen zåmm zrucksétzen.
+ Deih freindlichs {{SITENAME}}-Benoochrichtigungssystém
+
--
-Um die Einstellungen Ihrer Beobachtungslistn anzupassen bsuachans bitte: {{fullurl:Special:Watchlist/edit}}',
+Um d\' Eihstöungen voh da E-Mail-Benoochrichtigung åzpassen, bsuachst {{canonicalurl:{{#special:Preferences}}}}
+
+Um d\' Eihstöungen voh deine Beówochtungslisten åzpassen, bsuachst {{canonicalurl:{{#special:EditWatchlist}}}}
+
+Um d\' Seiten voh deiner Beówochtungslisten ower z\' doah, bsuachst $UNWATCHURL
+
+Ryckmödungen und a weidre Hüf: {{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
-'deletepage' => 'Seiten leschen',
-'confirm' => 'Bstäting',
-'excontent' => "Oider Inhoid: '$1'",
-'exblank' => "D' Seiten is laar gween",
-'historywarning' => "'''Ochtung:''' De Saiten, de du leschen mechst, hod a Versionsgschicht mid epper $1 {{PLURAL:$1|Version|Versionen}}:",
-'confirmdeletetext' => 'Sie san dabei, a Seitn oda a Datei und alle zughörigen ältern Versionen
-zum löschen. Bitte bestätigen Sie da dazu, dass Sie des wirklich tuan wolln, dass Sie de Konsequenzen verstengan
-und dass Sie in Ãœbaeinstimmung mit de [[{{MediaWiki:Policy-url}}|Richtlinien]] handeln.',
-'actioncomplete' => 'Akzión beéndt',
-'actionfailed' => 'Akzión föögschlong',
-'deletedtext' => '„$1“ is glöscht worn. Im $2 findn Sie a Listn vo de letzten Löschungen.',
-'deletedarticle' => 'hod „[[$1]]“ gléschd',
-'dellogpage' => 'Lésch-Logbiache',
-'deletionlog' => 'Lösch-Logbuach',
-'reverted' => 'Auf a oide Version zruckgesetzt',
-'deletecomment' => 'Grund:',
-'deleteotherreason' => 'Ånderner/ergänzender Grund:',
-'deletereasonotherlist' => 'Ã…ndrer Grund:',
+'deletepage' => 'Seiten leschen',
+'confirm' => 'Bstäting',
+'excontent' => "Oider Inhoid: '$1'",
+'excontentauthor' => 'Da Inhoid is gweesen: „$1“ (oanziger Beorweiter: [[Special:Contributions/$2|$2]])',
+'exbeforeblank' => 'Da Inhoid vurm Laarn voh da Seiten: „$1“',
+'exblank' => "D' Seiten is laar gweesen",
+'delete-confirm' => 'Léschen voh „$1“',
+'delete-legend' => 'Léschen',
+'historywarning' => "'''Ochtung:''' Dé Seiten, dé du léschen mecherst, hod a Versiónsgschicht mid epper $1 {{PLURAL:$1|Versión|Versiónen}}:",
+'confirmdeletetext' => "Du bist dabei, a Seiten mid olle zuaghering ödern Versiónen z' léschen. Bittscheh bstätig dodazua, daas da d' Kónsequenzen bewusst san und daas du in Ywereihstimmung mid d' [[{{MediaWiki:Policy-url}}|Richtlinien]] haundelst.",
+'actioncomplete' => 'Akzión beéndt',
+'actionfailed' => 'Akzión föögschlong',
+'deletedtext' => '„$1“ is glöscht worn. Im $2 findn Sie a Listn vo de letzten Löschungen.',
+'deletedarticle' => 'hod „[[$1]]“ gléschd',
+'dellogpage' => 'Lésch-Logbiache',
+'deletionlog' => 'Lösch-Logbuach',
+'reverted' => 'Auf a oide Version zruckgesetzt',
+'deletecomment' => 'Grund:',
+'deleteotherreason' => 'Ånderner/ergänzender Grund:',
+'deletereasonotherlist' => 'Ã…ndrer Grund:',
+'deletereason-dropdown' => '* Oigmoane Léschgrynd
+** Wunsch vom Autór
+** Urhéwerrechtsvalétzung
+** Vandalismus',
+'delete-edit-reasonlist' => 'Léschgrynd beorwaten',
# Rollback
'rollbacklink' => 'Zrucksétzen',
@@ -1103,18 +1202,21 @@ und dass Sie in Ãœbaeinstimmung mit de [[{{MediaWiki:Policy-url}}|Richtlinien]]
'protect-expiring' => 'bis zum $2 um $3 Uhr (UTC)',
'protect-cascade' => 'Kaskadiarade Sperr – ålle Voalång, de in dea Seitn eibundn han, wean emfåis gspead.',
'protect-cantedit' => "Du kãnnst de Spea vu dea Seitn ned ändan, weu'st dafia ned de passnde Berechtigung håst.",
+'protect-expiry-options' => '1 Stund:1 hour,1 Dog:1 day,1 Wóch:1 week,2 Wócher:2 weeks,1 Mónad:1 month,3 Mónadt:3 months,6 Mónadt:6 months,1 Jor:1 year, Unbschränkt:infinite',
'restriction-type' => 'Schutzstaatus:',
'restriction-level' => 'Schutzheechen:',
-'minimum-size' => 'Mindestgress',
+'minimum-size' => 'Mindestgreess',
# Restrictions (nouns)
+'restriction-edit' => 'Werkeln',
'restriction-move' => 'vaschiam',
# Undelete
'undelete' => 'Gléschde Seiten weiderherstön',
-'undeletehistorynoadmin' => 'De Seitn is glöscht worn. Da Grund fia de Löschung is in da Zsammafassung oogem,
-genau wia Details zum letztn Benutza der de Seitn vor da Löschung bearbat håt.
-Da aktuelle Text vo da glöschtn Seitn is nur fia Administratoren zum seng.',
+'undeletehistorynoadmin' => 'Dé Seiten is gléscht worn. Da Léschgrund is in da Zaummfossung auhgeem,
+genauasó wia Details zum létzden Benutzer, der dé Seiten vur da Léschung borweidt hod.
+Da aktuöje Text voh da gléschden Seiten is netter fyr Administraatorn zuagänglich.',
+'undelete-revision' => 'Geléschde Versión voh $1 (vom $4 um $5 Uar), $3:',
'undeletebtn' => 'Wiederherstön',
'undeletelink' => 'åschauh / wiaderherstön',
'undeleteviewlink' => 'Ã¥schaung',
@@ -1125,9 +1227,10 @@ Da aktuelle Text vo da glöschtn Seitn is nur fia Administratoren zum seng.',
'undelete-search-submit' => 'Suach',
# Namespace form on various pages
-'namespace' => 'NÃ¥mensraum:',
-'invert' => 'Auswoi umdraan',
-'blanknamespace' => '(Seiten)',
+'namespace' => 'NÃ¥mensraum:',
+'invert' => 'Auswoi umdraan',
+'namespace_association' => 'Zuagordnéter Nåmensraum',
+'blanknamespace' => '(Seiten)',
# Contributions
'contributions' => 'Benutzerbeiträg',
@@ -1169,18 +1272,17 @@ Da aktuelle Text vo da glöschtn Seitn is nur fia Administratoren zum seng.',
'whatlinkshere-filters' => 'Füter',
# Block/unblock
-'blockip' => 'IP-Adress/Benytzer sperrn',
-'blockip-title' => 'Benytzer sperrn',
-'blockip-legend' => 'IP-Adresse/Benutzer sperrn',
-'blockiptext' => "Mid dem Formular sperrst a IP-Adress oder an Benytzernåmen, das vo durten aus koane Endarungen mer vurgnumma wern kennan.
+'blockip' => 'IP-Adress/Benytzer sperrn',
+'blockip-title' => 'Benytzer sperrn',
+'blockip-legend' => 'IP-Adresse/Benutzer sperrn',
+'blockiptext' => "Mid dem Formular sperrst a IP-Adress oder an Benytzernåmen, das vo durten aus koane Endarungen mer vurgnumma wern kennan.
Des soid nur dafoing, um an Vandalismus z' vahindern und in Yweraistimmung mid d' [[{{MediaWiki:Policy-url}}|Richtlinien]].
Gib bittschee an Grund fyr d' Sperrn å.",
-'ipaddress' => 'IP-Adressen:',
-'ipadressorusername' => 'IP-Adress oder Benytzernåm:',
-'ipbexpiry' => 'Sperrdauer:',
-'ipbreason' => 'Grund:',
-'ipbreasonotherlist' => 'Ã…ndarer Grund:',
-'ipbreason-dropdown' => '* Oigmoahne Sperrgrynd
+'ipadressorusername' => 'IP-Adress oder Benytzernåm:',
+'ipbexpiry' => 'Sperrdauer:',
+'ipbreason' => 'Grund:',
+'ipbreasonotherlist' => 'Ã…ndarer Grund:',
+'ipbreason-dropdown' => '* Oigmoahne Sperrgrynd
** Eihfyng voh voische Informaziónen
** Laarn voh Seiten
** Massenweiss Eihfyng voh externe Links
@@ -1188,55 +1290,53 @@ Gib bittschee an Grund fyr d' Sperrn å.",
** néd åbrochts Vahoiden
** Missbrauch mid mererne Benutzerkontós
** néd geigneter Benutzernåm',
-'ipbanononly' => 'Nur ned-ågmöidate Benytzer sperrn',
-'ipbcreateaccount' => "D' Erstöiung vo Benytzerkontos vahindern",
-'ipbemailban' => 'E-Mäil-Vasånd sperrn',
-'ipbenableautoblock' => "Sperr de aktuöi vo dem Benytzer gnytzte IP-Adress sowia automaatisch olle foiganden, vo denen aus er Beorwaitungen oder 's Åleeng vo naiche Benytzerkontos vasuacht",
-'ipbsubmit' => 'IP-Adress/Benytzer sperrn',
-'ipbother' => 'Ã…ndare Dauer (auf englisch):',
-'ipboptions' => '2 Stund:2 hours,1 Dog:1 day,3 Dog:3 days,1 Woch:1 week,2 Wochen:2 weeks,1 Monad:1 month,3 Monad:3 months,6 Monad:6 months,1 Jor:1 year,Leemslång:infinite',
-'ipbotheroption' => 'Ã…ndre Dauer:',
-'ipbotherreason' => 'Ã…nderner/ergenznder Grund:',
-'ipbhidename' => 'An Benytzernåmen in Beorwaitungen und Linsten vastecken',
-'ipbwatchuser' => 'De Benytzer(diskussions)saiten beowochten',
-'ipballowusertalk' => "Da Benytzer derf d' oagane Dischkrirsaiten wärnd sainer Sperrn beorwaiten",
-'ipb-change-block' => "D' Sperrn mid de Sperrparameter danaiern",
-'badipaddress' => 'De IP-Adress hod a foischs Format.',
-'blockipsuccesssub' => 'De Sperrn is erfoigraich gween',
-'blockipsuccesstext' => 'Da Benytzer/de IP-Adress [[Special:Contributions/$1|$1]] is gsperrt worn.<br />
+'ipbcreateaccount' => "D' Erstöiung vo Benytzerkontos vahindern",
+'ipbemailban' => 'E-Mäil-Vasånd sperrn',
+'ipbenableautoblock' => "Sperr de aktuöi vo dem Benytzer gnytzte IP-Adress sowia automaatisch olle foiganden, vo denen aus er Beorwaitungen oder 's Åleeng vo naiche Benytzerkontos vasuacht",
+'ipbsubmit' => 'IP-Adress/Benytzer sperrn',
+'ipbother' => 'Ã…ndare Dauer (auf englisch):',
+'ipboptions' => '2 Stund:2 hours,1 Dog:1 day,3 Dog:3 days,1 Woch:1 week,2 Wochen:2 weeks,1 Monad:1 month,3 Monad:3 months,6 Monad:6 months,1 Jor:1 year,Leemslång:infinite',
+'ipbotheroption' => 'Ã…ndre Dauer:',
+'ipbotherreason' => 'Ã…nderner/ergenznder Grund:',
+'ipbhidename' => 'An Benytzernåmen in Beorwaitungen und Linsten vastecken',
+'ipbwatchuser' => 'De Benytzer(diskussions)saiten beowochten',
+'ipb-change-block' => "D' Sperrn mid de Sperrparameter danaiern",
+'badipaddress' => 'De IP-Adress hod a foischs Format.',
+'blockipsuccesssub' => 'De Sperrn is erfoigraich gween',
+'blockipsuccesstext' => 'Da Benytzer/de IP-Adress [[Special:Contributions/$1|$1]] is gsperrt worn.<br />
Zur da Aufheewung vo da Sperrn schau unter da [[Special:IPBlockList|Listen vo olle aktivm Sperrn]].',
-'ipb-edit-dropdown' => 'Sperrgrynd beorwaiten',
-'ipb-unblock-addr' => '„$1“ fraigeem',
-'ipb-unblock' => 'IP-Adress/Benytzer fraigeem',
-'ipb-blocklist' => 'Olle aktuöin Sperrn åzaang',
-'ipb-blocklist-contribs' => 'Benytzerbaiträg vo „$1“',
-'unblockip' => 'IP-Adress fraigeem',
-'unblockiptext' => 'Mid dem Formular do kååst du a IP-Adress oder an Benytzer fraigeem.',
-'ipusubmit' => 'Freigem',
-'unblocked' => '[[User:$1|$1]] is freigem worn',
-'unblocked-id' => 'Sperr-ID $1 is fraigeem worn',
-'ipblocklist' => 'Gsperrde Benutzer',
-'ipblocklist-legend' => 'Suach noch am gsperrden Benytzer',
-'ipblocklist-username' => 'Benytzernåm oder IP-Adress:',
-'ipblocklist-sh-userblocks' => 'Benytzersperrn $1',
-'ipblocklist-sh-tempblocks' => 'Befristate Sperrn $1',
-'ipblocklist-sh-addressblocks' => 'IP-Sperrn $1',
-'createaccountblock' => 'Erstellung vo Benutzakonten gsperrt',
-'emailblock' => 'E-Post vaschicka gspead',
-'blocklink' => 'sperrn',
-'unblocklink' => 'freigeem',
-'change-blocklink' => 'Sperr ändern',
-'contribslink' => 'Beitrég',
-'autoblocker' => "Automatische Sperre, weil s' a gmeinsame IP-Adressn mit „$1“ hernehma. Grund: „$2“.",
-'blocklogpage' => 'Benutzersperrlogbiaché',
-'blocklogentry' => 'hod „[[$1]]“ fyrn fóigenden Zeidraum gsperrd: $2; $3',
-'unblocklogentry' => "håd d'Spear vu „$1“ aufghom",
-'block-log-flags-anononly' => 'netta Anonyme',
-'block-log-flags-nocreate' => "'s erstön voh Benutzerkontós is gsperrd",
-'block-log-flags-noemail' => 'E-Post vaschicka gspead',
+'ipb-edit-dropdown' => 'Sperrgrynd beorwaiten',
+'ipb-unblock-addr' => '„$1“ fraigeem',
+'ipb-unblock' => 'IP-Adress/Benytzer fraigeem',
+'ipb-blocklist' => 'Olle aktuöin Sperrn åzaang',
+'ipb-blocklist-contribs' => 'Benytzerbaiträg vo „$1“',
+'unblockip' => 'IP-Adress fraigeem',
+'unblockiptext' => 'Mid dem Formular do kååst du a IP-Adress oder an Benytzer fraigeem.',
+'ipusubmit' => 'Freigem',
+'unblocked' => '[[User:$1|$1]] is freigem worn',
+'unblocked-id' => 'Sperr-ID $1 is fraigeem worn',
+'ipblocklist' => 'Gsperrde Benutzer',
+'ipblocklist-legend' => 'Suach noch am gsperrden Benytzer',
+'createaccountblock' => "'s erstön voh Benutzerkóntós is gsperrd",
+'emailblock' => 'E-Póst vaschicker is gsperrd',
+'blocklink' => 'sperrn',
+'unblocklink' => 'Freigeem',
+'change-blocklink' => 'Sperr ändern',
+'contribslink' => 'Beitrég',
+'autoblocker' => 'Autómaatische Sperr, wei du a gmoahsaume IP-Adress mim [[User:$1|$1]] bnutzd. Grund voh da Benutzersperrn: „$2“.',
+'blocklogpage' => 'Benutzersperrlogbiaché',
+'blocklog-showlog' => "{{GENDER:$1|Der Benutzer|Dé Benutzerrin|Der Benutzer}} do is schoh friarer gsperrd worn. Es fóigt a Eihtrog aus'm Benutzersperrlogbiaché:",
+'blocklog-showsuppresslog' => "{{GENDER:$1|Der Benutzer|Dé Benutzerrin|Der Benutzer}} do is schoh friarer gsperrd und vastéckt worn. Es fóigt a Eihtrog aus'm Benutzersperrlogbiaché:",
+'blocklogentry' => 'hod „[[$1]]“ fyrn fóigenden Zeidraum gsperrd: $2; $3',
+'reblock-logentry' => "hod d' Sperrn voh „[[$1]]“ fyrn Zeidraum: $2 $3 gänderd.",
+'unblocklogentry' => "hod d' Sperr voh „$1“ aufghóm",
+'block-log-flags-anononly' => 'netter Anónyme',
+'block-log-flags-nocreate' => "'s erstön voh Benutzerkontós is gsperrd",
+'block-log-flags-noautoblock' => 'Autóblóck deaktivierd',
+'block-log-flags-noemail' => 'E-Post vaschicka gspead',
# Developer tools
-'unlockdb' => 'Datenbank freigem',
+'unlockdb' => 'Daatenbaunk freigeem',
'unlockconfirm' => 'Ja, i mecht de Datenbank freigem.',
'unlockbtn' => 'Datenbank freigem',
'locknoconfirm' => 'Sie ham des Bestätigungsfeld net markiert.',
@@ -1244,50 +1344,51 @@ Zur da Aufheewung vo da Sperrn schau unter da [[Special:IPBlockList|Listen vo ol
'databasenotlocked' => 'De Datenbank is net gsperrt.',
# Move page
-'move-page-legend' => 'Seitn vaschiam',
-'movepagetext' => "Mid dem Foamular kãnnst a Seitn umbenenna (midsãmt ålle Veasionen).
-Vum åidn Titl wiad ma nåchand zum neichn weidagschickd.
-Du kãnnst Weidaleitungen, de auf'n Originaltitl valinkn, automatisch korrigian låssn.
-Fåis'd des ned tuast, schau bitte nåch ob's [[Special:DoubleRedirects|doppide]] oda [[Special:BrokenRedirects|hiniche Weidaleitungen]] gibt.
-Du bist dafia vaãntwoatlich, dass ålle Links aa nåch'm Vaschiam auf's richtige Züi zoang.
-
-De Seitn wiad '''ned''' vaschom, wãnn's schãu a Seitn mid genau dem Nãm gibt, den'st mechst dass'd Seitn iatst kriagt, außa de Seitn is laa oda a Weidaleitung ohne Veasionsgschicht. Des haaßt, dass'd a Seitn zruckvaschiam kãnnst, wãnn'st an Fehla gmåcht håst. A Seitn üwaschreim kãnnst åwa ned.
-
-'''WÃ¥rnung'''
-D'Vaschiebung kãu weidreichade und ned eawårtete Foing fia beliebte Seitn håm.
-Es warad åiso guat, wãnn'st ålle Konsequenzn vastãndn håst, bevoa'st a Seitn wiakli vaschiabst.",
-'movepagetalktext' => "De dazuaghearade Dischgria-Seitn wiad, fåis's ane gibt, midvaschom, '''außa'''
+'move-page-legend' => 'Seiten vaschiam',
+'movepagetext' => "Mid dém Formular kauhst a Seiten umbenénner, waunnstas mid olle Versiónen auf an neichen Titel vaschiabst.
+Da oide Titel werd danoch zum neichen weiderloaten.
+Du kauhst Weiderloatungen, dé auf dén Originoititel valinken, autómaatisch koarigiern lossen.
+Stö sicher, daas du im Auhschlus olle [[Special:DoubleRedirects|dóppéden]] óder [[Special:BrokenRedirects|dé hienigen Weiderloatungen]] ywerpriaffst.
+Du bist dodafyr vaauntwortlich, daas Links weiderhih aufs richtige Zü vaweisen.
+
+Dé Seiten werd '''néd''' vaschóm, waunns bereits a Seiten mim vurgseegernen Titel gibt, ausser dé is laar óder a Weiderloatung óne a Versiónsgschicht.
+Dés bdeitt, daas du d' Umbenénnung ryckgängig mochen kauhst, waunn du an Feeler gmocht host. Du kauhst hihgéng koah Seiten ywerschreim.
+
+'''Ówocht!'''
+D' Vaschiawung kauh weidreichende und néd daworterde Fóing fyr haiffig bsuachde Seiten haum.
+Du sóiderst désswéng d' Kónsequenzen vastaunden haum, bevur du iatz weider duast.",
+'movepagetalktext' => "De dazuaghearade Dischgria-Seitn wiad, fåis's ane gibt, midvaschom, '''außa'''
*unta'm neichn Nãm gibt's schãu an Eintråg oda
*du tuast s'Hakal bei da unting Opzion außa.
In de zwoa Fälle miaßadst, fåis des gwünscht is, de Seitn händisch vaschiam oda zsãmmfüng.
Bittschee gib außadem druntn in '''neichn''' Nãm vu da Seitn ei und schreib kuaz '''wieso'''<nowiki>'st</nowiki> de Seitn vaschiam mechst.",
-'movearticle' => 'Seitn vaschiam:',
-'movenologin' => 'Du bist ned ãngmöidt',
-'movenologintext' => 'Zum Vaschiam muaßt a registriada und [[Special:UserLogin|ãngmöideta Benutza]] sei.',
-'movenotallowed' => 'Du håst ka Berechtigung zum Vaschiam vu Seitn.',
-'movenotallowedfile' => 'Du håst ka Berechtigung zum Vaschiam vu Datein.',
-'cant-move-user-page' => 'Du håst ka Berechtigung zum Vaschiam vu Benutzahauptseitn.',
-'cant-move-to-user-page' => 'Du håst ka Berechtigung zum Vaschiam vu Seitn auf a Benutzaseitn (Ausnãhmen han Benutza-Untaseitn).',
-'newtitle' => 'Züi:',
-'move-watch' => 'De Seitn beobachten',
-'movepagebtn' => 'Seitn vaschiam',
-'pagemovedsub' => "s'Vaschiam håd highaud",
-'movepage-moved' => "'''D'Seitn „$1“ is nåch „$2“ vaschom woan.'''",
-'articleexists' => 'Unter dem Nam existiert bereits a Seitn.
-Bitte nehmans an andern Nam.',
-'talkexists' => "D'Seitn söiwa is eafoigreich vaschom woan, de dazuaghearade Diskussionsseitn åwa ned, weu's unta dea iahm neichn Nãm schãu a Seitn gibt. Bittschee kümmat di händisch um's Zsãmmfüahn.",
-'movedto' => 'vaschom nåch',
-'movetalk' => "Wãun's gehd de Dischgria-Seitn midvaschiam",
-'1movedto2' => 'håt [[$1]] nåch [[$2]] verschom',
-'1movedto2_redir' => 'hod [[$1]] noch [[$2]] vaschóm und dodabei a Weiderloattung ywerschriem',
-'movelogpage' => 'Vaschiawungs-Logbiaché',
-'movereason' => 'Grund:',
-'revertmove' => 'zruck vaschiam',
-'delete_and_move' => 'Löschn und vaschiam',
-'delete_and_move_reason' => 'glöscht, um Plåtz fia Vaschiam zum macha',
-'selfmove' => 'Ursprungs- und Zielname sand gleich; a Seitn kann net auf sich selber verschom wern.',
+'movearticle' => 'Seitn vaschiam:',
+'movenologin' => 'Du bist néd ågmödt',
+'movenologintext' => 'Zum Vaschiam muaßt a registriada und [[Special:UserLogin|ãngmöideta Benutza]] sei.',
+'movenotallowed' => 'Du håst ka Berechtigung zum Vaschiam vu Seitn.',
+'movenotallowedfile' => 'Du håst ka Berechtigung zum Vaschiam vu Datein.',
+'cant-move-user-page' => 'Du håst ka Berechtigung zum Vaschiam vu Benutzahauptseitn.',
+'cant-move-to-user-page' => 'Du håst ka Berechtigung zum Vaschiam vu Seitn auf a Benutzaseitn (Ausnãhmen han Benutza-Untaseitn).',
+'newtitle' => 'Züi:',
+'move-watch' => "D' Seiten beówochten",
+'movepagebtn' => 'Seitn vaschiam',
+'pagemovedsub' => "s'Vaschiam håd highaud",
+'movepage-moved' => "'''D'Seitn „$1“ is nåch „$2“ vaschom woan.'''",
+'movepage-moved-redirect' => 'Es is a Weiderloatung erstöd worn.',
+'articleexists' => 'Unter dém Naum existierd schoh a Seiten. Bittscheh nimm an aundern Naumen her.',
+'talkexists' => "D' Seiten söwer is erfóigreich vaschóm worn, ower d' zuagherige Dischkrierseiten néd, weis mid dém Titel schoh oane gibt. Bittscheh kymmerd dé händisch ums zaummfyrn.",
+'movedto' => 'vaschóm auf',
+'movetalk' => "Waunns geet, d' Dischkrierseiten aa midvaschiam",
+'1movedto2' => 'håt [[$1]] nåch [[$2]] verschom',
+'1movedto2_redir' => 'hod [[$1]] noch [[$2]] vaschóm und dodabei a Weiderloattung ywerschriem',
+'movelogpage' => 'Vaschiawungs-Logbiaché',
+'movereason' => 'Grund:',
+'revertmove' => 'zruck vaschiam',
+'delete_and_move' => 'Löschn und vaschiam',
+'delete_and_move_reason' => 'glöscht, um Plåtz fia Vaschiam zum macha',
+'selfmove' => 'Ursprungs- und Zielname sand gleich; a Seitn kann net auf sich selber verschom wern.',
# Export
'export' => 'Seiten exportirn',
@@ -1297,7 +1398,7 @@ Bitte nehmans an andern Nam.',
'allmessagesdefault' => 'Standardtext',
'allmessagescurrent' => 'Aktuella Text',
'allmessagestext' => 'Des is a Listen vo de MediaWiki-Systemtextt.
-Bsuach bittschee de Saiten [http://www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisiarung] und [http://translatewiki.net translatewiki.net], wånn du de ån da Lokalisiarung vo MediaWiki betailing mechadst.',
+Bsuach bittschee de Saiten [//www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisiarung] und [//translatewiki.net translatewiki.net], wånn du de ån da Lokalisiarung vo MediaWiki betailing mechadst.',
'allmessagesnotsupportedDB' => "'''Special:Allmessages''' is im Moment net möglich, wei de Datenbank offline is.",
# Thumbnails
@@ -1324,7 +1425,9 @@ Bsuach bittschee de Saiten [http://www.mediawiki.org/wiki/Localisation MediaWiki
'tooltip-ca-viewsource' => 'Dé Seiten is gschytzd. Da Quötext kå ower ågschaud wern.',
'tooltip-ca-history' => 'Friarerne Versiónen voh derer Seiten',
'tooltip-ca-protect' => 'Seiten schytzen',
+'tooltip-ca-unprotect' => 'Seitenschutz ändern',
'tooltip-ca-delete' => 'De Seitn löschen',
+'tooltip-ca-undelete' => 'Eihträg wiederherstön, bevur dé Seiten gléscht worn is.',
'tooltip-ca-move' => 'Dé Seiten vaschiam',
'tooltip-ca-watch' => 'Dé Seiten zua persénlichen Beówochtungslisten dazua doah',
'tooltip-ca-unwatch' => 'Dé Seiten voh da persénlichen Beówochtungslisten entferner',
@@ -1366,6 +1469,7 @@ Bsuach bittschee de Saiten [http://www.mediawiki.org/wiki/Localisation MediaWiki
'tooltip-compareselectedversions' => 'Unterschiade zwischen zwoa ausgwöde Versiónen voh derer Seiten vagleichen.',
'tooltip-watch' => 'Dé Seiten zua persénlichen Beówochtungslisten dazua doah',
'tooltip-recreate' => 'Seitn nei erstelln, obwoi sie glöscht worn is.',
+'tooltip-upload' => 'Start as Aufféloon',
'tooltip-rollback' => 'Sétzd olle Beiträg, dé vom gleichen Benutzer gmocht worn san, mid am oanzing Klick auf dé Versión zruck, dé aktuö gwén is, bevur der oane zum werkeln ågfånger hod.',
'tooltip-undo' => 'Mocht netter dé oane Änderrung ryckgängég und zoagts Resuitot in da Vurschau å, damid in da Zåmmfossungszeiln a Begryndung ågeem wern kå.',
'tooltip-summary' => 'Gib a kurze ZÃ¥mmfossung eih',
@@ -1375,8 +1479,8 @@ Bsuach bittschee de Saiten [http://www.mediawiki.org/wiki/Localisation MediaWiki
'othercontribs' => 'Basiard auf da Orweid voh $1',
'creditspage' => 'Seiteninformaziónen',
-# Math errors
-'math_unknown_function' => 'Unbekannte Funktion',
+# Info page
+'pageinfo-subjectpage' => 'Seiten',
# Patrolling
'markedaspatrollederrortext' => 'Du muasst a Seitenänderrung auswön',
@@ -1394,16 +1498,15 @@ Bsuach bittschee de Saiten [http://www.mediawiki.org/wiki/Localisation MediaWiki
'nextdiff' => 'zum nextn Untaschied in de Veasionen →',
# Media information
-'file-info-size' => '$1 × $2 Pixel, Daateigreess: $3, MIME-Typ: $4',
-'file-nohires' => '<small>Es gibt koah heecherne Auflésung.</small>',
-'svg-long-desc' => 'SVG-Datei, Basisgreß: $1 × $2 Pixl, Dateigreß: $3',
-'show-big-image' => 'Versión in heecherner Auflésung',
-'show-big-image-thumb' => '<small>Greßn vu da Voaãnsicht: $1 × $2 Pixl</small>',
+'file-info-size' => '$1 × $2 Pixel, Daateigreess: $3, MIME-Typ: $4',
+'file-nohires' => '<small>Es gibt koah heecherne Auflésung.</small>',
+'svg-long-desc' => 'SVG-Datei, Basisgreß: $1 × $2 Pixl, Dateigreß: $3',
+'show-big-image' => 'Versión in heecherner Auflésung',
# Special:NewFiles
-'newimages' => 'Neie Dateien',
-'newimages-summary' => 'De Spezialseitn zoagt de zletzt hochgeladena Buidl und Dateien o.',
-'noimages' => 'Koane Datein gfunden.',
+'newimages' => 'Neiche Daatein',
+'newimages-summary' => "Dé Speziaalseiten zoagt d' zlétzd aufféglooderne Daatei auh.",
+'noimages' => 'Koane Daatein gfunden.',
'ilsubmit' => 'Suach',
# Bad image list
@@ -1417,14 +1520,21 @@ Dodrauf fóigende Links auf Seiten in da söm Zeun definirn Ausnåmen, in dénen
'metadata-help' => 'Dé Daatei enthoit weiderne Informaziónen, dé in da Reegel voh da Digitoikammera óder am vawenderden Scanner ståmmern. Durch a noochträgliche Beorweidung voh da Originoidaatei kennern oanige Deteils vaänderd worn seih.',
'metadata-expand' => 'Erweitate Deteus eiblendn',
'metadata-collapse' => "D' erweiterden Details eihblenden",
-'metadata-fields' => 'Dé foiganden Föider vo de ESIF-Metadaaten in dém MediaWiki-Systémtext wern auf de Büidlbeschraiwungssaiten åzoagt; waiderne standardmässég "aikloppte" Details kennan åzoagt wern.
-*make
-*model
-*dateimeoriginal
-*exposuretime
-*fnumber
-*isospeedratings
-*focallength',
+'metadata-fields' => "D' fóigernden Föder voh dé EXIF-Metadaaten, dé in dém MediaWiki-Systémtext ågeem san, wern auf Büdelbschreiwungsseiten mid eihkloppter Metadaatentabön åzoagt.
+Weiderne wern standardmässig néd åzoagt.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-gpsspeed' => 'Gschwindigkeid vom GPS-Empfänger',
@@ -1433,7 +1543,7 @@ Dodrauf fóigende Links auf Seiten in da söm Zeun definirn Ausnåmen, in dénen
# External editor support
'edit-externally' => 'Dé Daatei mid am externen Prógramm beorweiden',
-'edit-externally-help' => '(Schaug unter [http://www.mediawiki.org/wiki/Manual:External_editors Installaziónsåweisungen] fyr weiderne Informaziónen)',
+'edit-externally-help' => '(Schaug unter [//www.mediawiki.org/wiki/Manual:External_editors Installaziónsåweisungen] fyr weiderne Informaziónen)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'olle',
@@ -1443,12 +1553,14 @@ Dodrauf fóigende Links auf Seiten in da söm Zeun definirn Ausnåmen, in dénen
# E-mail address confirmation
'confirmemail' => 'E-Post-Adressn bestäting (Authentifiziarung)',
'confirmemail_noemail' => 'Du håst ka güitige E-Post-Adressn in deine [[Special:Preferences|persönlichn Eistellungen]] eitrång.',
-'confirmemail_send' => 'Bestätigungscode zuaschicka',
-'confirmemail_needlogin' => 'Sie miassn si $1 um Eana E-Mail-Adress zum bestätigen.',
+'confirmemail_send' => 'Bstätigungscode zuaschicker',
+'confirmemail_needlogin' => "Du muasst dé $1 um d' E-Mail-Adress zum bstäting.",
# Multipage image navigation
-'imgmultipageprev' => '↠vorige Seitn',
-'imgmultipagenext' => 'nächste Seitn →',
+'imgmultipageprev' => '↠vurige Seiten',
+'imgmultipagenext' => 'naxde Seiten →',
+'imgmultigo' => 'OK',
+'imgmultigoto' => 'Gee zua Seiten $1',
# Table pager
'ascending_abbrev' => 'auf',
@@ -1481,7 +1593,7 @@ Bittscheh d' noraale Vurschau bnutzen.",
'watchlistedit-noitems' => 'Dei Beobachtungslistn is laar.',
'watchlistedit-normal-title' => 'Beobachtungslistn bearbatn',
'watchlistedit-normal-legend' => 'Eiträge vo da Beobachtungslistn wegnehma',
-'watchlistedit-normal-explain' => "Des san de Eiträg vo deiner Beowochtungslisten. Um de Eiträg z' entferna, markir de Kastln neem de Eiträg und druck am End vo da Seiten auf „{{int:Watchlistedit-normal-submit}}“. Du kåst dei Beowochtungslisten aa im [[Special:Watchlist/raw|Listenformat beorweiten]].",
+'watchlistedit-normal-explain' => "Des san de Eiträg vo deiner Beowochtungslisten. Um de Eiträg z' entferna, markir de Kastln neem de Eiträg und druck am End vo da Seiten auf „{{int:Watchlistedit-normal-submit}}“. Du kåst dei Beowochtungslisten aa im [[Special:EditWatchlist/raw|Listenformat beorweiten]].",
'watchlistedit-normal-submit' => 'Eiträge wegnehma',
'watchlistedit-raw-title' => 'Beówochtungslisten im Listenformaat beorweiten',
'watchlistedit-raw-legend' => 'Beówochtungslisten im Listenformaat beorweiten',
@@ -1489,22 +1601,38 @@ Bittscheh d' noraale Vurschau bnutzen.",
'watchlistedit-raw-submit' => 'Beówochtungslisten aktualisirn',
# Watchlist editing tools
-'watchlisttools-view' => 'Ändarungen vafoing',
-'watchlisttools-edit' => 'normal beorwaten',
-'watchlisttools-raw' => 'Im Listenformat beorweiden',
+'watchlisttools-view' => 'Änderrungen vafóing',
+'watchlisttools-edit' => 'normaal beorwaten',
+'watchlisttools-raw' => 'Im Listenformaat beorwaten',
# Core parser functions
+'unknown_extension_tag' => 'Unbekaunnter Extension-Tag „$1“',
'duplicate-defaultsort' => 'Ówocht: Da Sortiarungsschlyssel "$2" ywerschreibt dén vurher vawendten Schlyssel "$1".',
# Special:Version
-'version' => 'Versión',
-'version-extensions' => 'Installirde Daweiterrungen',
-'version-hook-subscribedby' => 'Aufruf vo',
-'version-license' => 'Lizenz',
-'version-poweredby-others' => 'Ã¥ndre',
+'version' => 'Versión',
+'version-extensions' => 'Installierde Daweiterrungen',
+'version-specialpages' => 'Speziaalseiten',
+'version-parserhooks' => 'Parser-Hooks',
+'version-variables' => 'Variaablen',
+'version-antispam' => 'Spamschutz',
+'version-skins' => 'Benutzerówerflächen',
+'version-other' => 'Ã…nders',
+'version-mediahandlers' => 'Meediennutzung',
+'version-hooks' => "Schnidstön ''(Hooks)''",
+'version-extension-functions' => 'Funkziónsaufruaffe',
+'version-parser-extensiontags' => "Parserdaweiterrungen ''(tags)''",
+'version-parser-function-hooks' => 'Parserfunkziónen',
+'version-hook-name' => 'Schnidstönnaum',
+'version-hook-subscribedby' => 'Aufruaff voh',
+'version-version' => '(Versión $1)',
+'version-license' => 'Lizenz',
+'version-poweredby-credits' => "Dé Nétzseiten braucht '''[//www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
+'version-poweredby-others' => 'Ã¥ndre',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Dóppéde Daatein suachen',
+'fileduplicatesearch-summary' => 'Suach noch dóppéde Daatein auf da Baasis vo eanerm Hash-Wert.',
'fileduplicatesearch-legend' => 'Suach noch Duplikaate',
'fileduplicatesearch-filename' => 'Daateinåm:',
'fileduplicatesearch-submit' => 'Suachen',
@@ -1513,6 +1641,10 @@ Bittscheh d' noraale Vurschau bnutzen.",
# Special:SpecialPages
'specialpages' => 'Speziaalseiten',
+'specialpages-note' => '----
+* Reguläre Speziaalseiten
+* <span class="mw-specialpagerestricted">Zuagrifsbschränkde Speziaalseiten</span>
+* <span class="mw-specialpagecached">Cachegenerrirde Speziaalseiten</span>',
'specialpages-group-maintenance' => 'Wartungslisten',
'specialpages-group-other' => 'Ã…ndre Speziaalseiten',
'specialpages-group-login' => 'Åmöden',
@@ -1571,6 +1703,7 @@ Bittscheh d' noraale Vurschau bnutzen.",
'dberr-outofdate' => 'Beochtt, daas da Suachindex voh inserne Inhoitt bei Google vaoiterd seih kunnt.',
# HTML forms
+'htmlform-required' => 'Der Wert do werd braucht.',
'htmlform-submit' => 'Speichern',
'htmlform-reset' => 'Änderrungen ryckgängég mochen',
'htmlform-selectorother-other' => 'Ã…ndre',
diff --git a/languages/messages/MessagesBcc.php b/languages/messages/MessagesBcc.php
index 72db4021..b52a4466 100644
--- a/languages/messages/MessagesBcc.php
+++ b/languages/messages/MessagesBcc.php
@@ -54,88 +54,88 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'دوبل غیر مستقیم' ),
+ 'Allmessages' => array( 'کل کوله یان' ),
+ 'Allpages' => array( 'Ú©Ù„ صÙحات' ),
+ 'Ancientpages' => array( 'صÙحات قدیمی' ),
+ 'Blankpage' => array( 'صÙحه هالیک' ),
+ 'Block' => array( 'محدود آی پی' ),
+ 'Blockme' => array( 'محدودیت من' ),
+ 'Booksources' => array( 'منابع کتاب' ),
'BrokenRedirects' => array( 'پرشتگین غیرمستقیم' ),
- 'Disambiguations' => array( 'رÙع ابهام' ),
- 'Userlogin' => array( 'ورودکاربر' ),
- 'Userlogout' => array( 'دربیگ کاربر' ),
+ 'Categories' => array( 'دستجات' ),
+ 'ChangePassword' => array( 'تریتگ رمز' ),
+ 'Confirmemail' => array( 'تایید ایمیل' ),
+ 'Contributions' => array( 'مشارکتان' ),
'CreateAccount' => array( 'شرکتن حساب' ),
- 'Preferences' => array( 'ترجیحات' ),
- 'Watchlist' => array( 'لیست چارگ' ),
- 'Recentchanges' => array( 'نوکین تغییرات' ),
- 'Upload' => array( 'آپلود' ),
+ 'Deadendpages' => array( 'مرتگین صÙحات' ),
+ 'Disambiguations' => array( 'رÙع ابهام' ),
+ 'DoubleRedirects' => array( 'دوبل غیر مستقیم' ),
+ 'Emailuser' => array( 'ایمیل کاربر' ),
+ 'Export' => array( 'درگیزگ' ),
+ 'Fewestrevisions' => array( 'کمترین بازبینی' ),
+ 'FileDuplicateSearch' => array( 'گردگ Ú©Ù¾ÛŒ Ùایل' ),
+ 'Filepath' => array( 'مسیر Ùایل' ),
+ 'Import' => array( 'وارد' ),
+ 'Invalidateemail' => array( 'نامعتبرین ایمیل' ),
+ 'BlockList' => array( 'لیست محدوددیت آی پی' ),
+ 'Listadmins' => array( 'لیست مدیران' ),
+ 'Listbots' => array( 'لیست روباتان' ),
'Listfiles' => array( 'لیست عکس' ),
- 'Newimages' => array( 'نوکین عکسان' ),
- 'Listusers' => array( 'لیست کاربر' ),
'Listgrouprights' => array( 'لیست حقوق گروه' ),
- 'Statistics' => array( 'آمار' ),
- 'Randompage' => array( 'صÙحه تصادÙÛŒ' ),
+ 'Listredirects' => array( 'لیست غیر مستقیمان' ),
+ 'Listusers' => array( 'لیست کاربر' ),
+ 'Lockdb' => array( 'کبلدب' ),
+ 'Log' => array( 'ورودان' ),
'Lonelypages' => array( 'صÙحات یتیم' ),
- 'Uncategorizedpages' => array( 'صÙحات بی دسته' ),
- 'Uncategorizedcategories' => array( 'دستجات بی دسته' ),
- 'Uncategorizedimages' => array( 'عکسان بی دسته' ),
- 'Uncategorizedtemplates' => array( 'تمپلتان بی دسته' ),
- 'Unusedcategories' => array( 'بی استÙاده این دسته' ),
- 'Unusedimages' => array( 'بی استÙاده این عکس' ),
- 'Wantedpages' => array( 'لوٹتگین صÙحات' ),
- 'Wantedcategories' => array( 'لوٹتگین دسته' ),
+ 'Longpages' => array( 'مزنین صÙحات' ),
+ 'MergeHistory' => array( 'چندوبند تاریح' ),
+ 'MIMEsearch' => array( 'گردگ میام' ),
+ 'Mostcategories' => array( 'گیشترین دستجات' ),
+ 'Mostimages' => array( 'گیشترین عکس' ),
'Mostlinked' => array( 'گیشتر لینک بوتت' ),
'Mostlinkedcategories' => array( 'دستجات گیشتر لینک بوتگین' ),
'Mostlinkedtemplates' => array( 'تمپلتان گیشتر لینک بوتگین' ),
- 'Mostimages' => array( 'گیشترین عکس' ),
- 'Mostcategories' => array( 'گیشترین دستجات' ),
'Mostrevisions' => array( 'گیشترین بازبینی' ),
- 'Fewestrevisions' => array( 'کمترین بازبینی' ),
- 'Shortpages' => array( 'هوردین صÙحات' ),
- 'Longpages' => array( 'مزنین صÙحات' ),
+ 'Movepage' => array( 'جاه په جاهی صÙحه' ),
+ 'Mycontributions' => array( 'منی مشارکت' ),
+ 'Mypage' => array( 'منی صÙحه' ),
+ 'Mytalk' => array( 'منی گپ' ),
+ 'Newimages' => array( 'نوکین عکسان' ),
'Newpages' => array( 'نوکین صÙحات' ),
- 'Ancientpages' => array( 'صÙحات قدیمی' ),
- 'Deadendpages' => array( 'مرتگین صÙحات' ),
+ 'Popularpages' => array( 'مردمی صÙحات' ),
+ 'Preferences' => array( 'ترجیحات' ),
+ 'Prefixindex' => array( 'ایندکس پیشوند' ),
'Protectedpages' => array( 'صÙحات محاÙظتی' ),
'Protectedtitles' => array( 'عناوین محاÙظتی' ),
- 'Allpages' => array( 'Ú©Ù„ صÙحات' ),
- 'Prefixindex' => array( 'ایندکس پیشوند' ),
- 'Ipblocklist' => array( 'لیست محدوددیت آی پی' ),
- 'Specialpages' => array( 'حاصین صÙحات' ),
- 'Contributions' => array( 'مشارکتان' ),
- 'Emailuser' => array( 'ایمیل کاربر' ),
- 'Confirmemail' => array( 'تایید ایمیل' ),
- 'Whatlinkshere' => array( 'ای لینکی ادان هست' ),
+ 'Randompage' => array( 'صÙحه تصادÙÛŒ' ),
+ 'Randomredirect' => array( 'غیرمستقیم تصادÙÛŒ' ),
+ 'Recentchanges' => array( 'نوکین تغییرات' ),
'Recentchangeslinked' => array( 'نوکین تغییرات لینک' ),
- 'Movepage' => array( 'جاه په جاهی صÙحه' ),
- 'Blockme' => array( 'محدودیت من' ),
- 'Booksources' => array( 'منابع کتاب' ),
- 'Categories' => array( 'دستجات' ),
- 'Export' => array( 'درگیزگ' ),
- 'Version' => array( 'نسخه' ),
- 'Allmessages' => array( 'کل کوله یان' ),
- 'Log' => array( 'ورودان' ),
- 'Blockip' => array( 'محدود آی پی' ),
+ 'Revisiondelete' => array( 'حذ٠بازبینی' ),
+ 'Search' => array( 'گردگ' ),
+ 'Shortpages' => array( 'هوردین صÙحات' ),
+ 'Specialpages' => array( 'حاصین صÙحات' ),
+ 'Statistics' => array( 'آمار' ),
+ 'Uncategorizedcategories' => array( 'دستجات بی دسته' ),
+ 'Uncategorizedimages' => array( 'عکسان بی دسته' ),
+ 'Uncategorizedpages' => array( 'صÙحات بی دسته' ),
+ 'Uncategorizedtemplates' => array( 'تمپلتان بی دسته' ),
'Undelete' => array( 'حذ٠نکتن' ),
- 'Import' => array( 'وارد' ),
- 'Lockdb' => array( 'کبلدب' ),
'Unlockdb' => array( 'کلب نه کتن دب' ),
- 'Userrights' => array( 'حقوق کاربر' ),
- 'MIMEsearch' => array( 'گردگ میام' ),
- 'FileDuplicateSearch' => array( 'گردگ Ú©Ù¾ÛŒ Ùایل' ),
- 'Unwatchedpages' => array( 'نه چارتگین صÙحه' ),
- 'Listredirects' => array( 'لیست غیر مستقیمان' ),
- 'Revisiondelete' => array( 'حذ٠بازبینی' ),
+ 'Unusedcategories' => array( 'بی استÙاده این دسته' ),
+ 'Unusedimages' => array( 'بی استÙاده این عکس' ),
'Unusedtemplates' => array( 'تمپلتان بی استÙاده' ),
- 'Randomredirect' => array( 'غیرمستقیم تصادÙÛŒ' ),
- 'Mypage' => array( 'منی صÙحه' ),
- 'Mytalk' => array( 'منی گپ' ),
- 'Mycontributions' => array( 'منی مشارکت' ),
- 'Listadmins' => array( 'لیست مدیران' ),
- 'Listbots' => array( 'لیست روباتان' ),
- 'Popularpages' => array( 'مردمی صÙحات' ),
- 'Search' => array( 'گردگ' ),
- 'Resetpass' => array( 'تریتگ رمز' ),
+ 'Unwatchedpages' => array( 'نه چارتگین صÙحه' ),
+ 'Upload' => array( 'آپلود' ),
+ 'Userlogin' => array( 'ورودکاربر' ),
+ 'Userlogout' => array( 'دربیگ کاربر' ),
+ 'Userrights' => array( 'حقوق کاربر' ),
+ 'Version' => array( 'نسخه' ),
+ 'Wantedcategories' => array( 'لوٹتگین دسته' ),
+ 'Wantedpages' => array( 'لوٹتگین صÙحات' ),
+ 'Watchlist' => array( 'لیست چارگ' ),
+ 'Whatlinkshere' => array( 'ای لینکی ادان هست' ),
'Withoutinterwiki' => array( 'بی بین ویکی' ),
- 'MergeHistory' => array( 'چندوبند تاریح' ),
- 'Filepath' => array( 'مسیر Ùایل' ),
- 'Invalidateemail' => array( 'نامعتبرین ایمیل' ),
- 'Blankpage' => array( 'صÙحه هالیک' ),
);
$messages = array(
@@ -258,14 +258,6 @@ $messages = array(
'category-file-count-limited' => 'جهلیگین {{PLURAL:$1|Ùایل|$1 Ùایلان}} ته هنوکین دسته اینت',
'listingcontinuesabbrev' => 'ادامه.',
-'mainpagetext' => "'''مدیا ÙˆÛŒ Ú©ÛŒ گون موÙقیت نصب بوت.'''",
-'mainpagedocfooter' => "مشورت کنیت گون [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] په گشیترین اطلاعات په استÙاده Ú†Ù‡ برنامه ویکی.
-
-== شروع بیت ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-
'about' => 'باره',
'article' => 'محتوا صÙحه',
'newwindow' => '(ته نوکین پنچره ی پچ کن)',
@@ -315,7 +307,6 @@ $messages = array(
'history' => 'تاریح صÙحه',
'history_short' => 'تاریح',
'updatedmarker' => 'په روچ بیتگین چه منی اهری اهری چارگ',
-'info_short' => 'اطلاعات',
'printableversion' => 'نسخه چهاپی',
'permalink' => 'دایمی لینک',
'print' => 'چهاپ',
@@ -502,12 +493,11 @@ Query: $2',
'protectedinterface' => 'ای صÙحه Ùراهم آریت مداخله ÛŒ متنی په برنامه Ùˆ کبل بیتت په جلوگیری Ú†Ù‡ سو استÙاده.',
'editinginterface' => "'''هوژاری:''' شما یک صÙحه ای اصلاح کنیت Ú©Ù‡ به عنوان مداخله گر متنی برنامه استÙاده بیت.
تغییرات ای صÙحه کاربرد مداخله گر په دگه کابران تاثیر هلیت.
- [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], په ترجمه یان لطÙا توجه کنیت په استÙاده پروژه ملکی کتن مدیا ÙˆÛŒ Ú©ÛŒ",
+ [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], په ترجمه یان لطÙا توجه کنیت په استÙاده پروژه ملکی کتن مدیا ÙˆÛŒ Ú©ÛŒ",
'sqlhidden' => '(SQL درخواست پناهین)',
'cascadeprotected' => 'ای صÙحه محاÙظت بیت Ú†Ù‡ اصلاح چرا Ú©Ù‡ آیی شامل جهلیگین {{PLURAL:$1|صÙحه, Ú©Ù‡|صÙحات, Ú©Ù‡}} محاÙظتی گون the "cascading" option turned on:
$2',
'namespaceprotected' => "شما اجازت په اصلاح صÙحات ته '''$1'' نام Ùضا نیست",
-'customcssjsprotected' => 'شما را اجازت په اصلاح ای صÙحه نیستپه Ú†ÛŒ Ú©Ù‡ Ø¢ÛŒ شامل شامل تنظیمات شخصی دگه کاربر اینت',
'ns-specialprotected' => 'حاصین صÙحات اصلاح نه بنت',
'titleprotected' => "ای عنوان محاÙظت بوتت Ú†Ù‡ سربیگ به وسیله [[User:$1|$1]].
ای دلیل دییگ بیتت ''$2''.",
@@ -561,7 +551,7 @@ $2',
'nosuchuser' => 'هچ کاربری گون نام "$1" نیستن.
کاربری نام حرÙØ´ په هور Ùˆ مزنی حساس انت.
وتی املايا چک کنیت یا [[Special:UserLogin/signup|نوکین حسابی شرکنیت]].',
-'nosuchusershort' => 'هچ کاربری گون نام "<nowiki>$1</nowiki>"نیستن.
+'nosuchusershort' => 'هچ کاربری گون نام "$1"نیستن.
وتی املايا کنترل کنیت',
'nouserspecified' => 'شما باید یک نام کاربری مشخص کنیت.',
'wrongpassword' => 'اشتباهین کلمه رمز وارد بوت. دگه سعی کن.',
@@ -605,7 +595,7 @@ $2',
'login-throttled' => 'شما په کلمه رمز ای حساب باز جهد کتت نوکی. لطÙا صبر کنیت Ùˆ. رندا جهد کنیت.',
'loginlanguagelabel' => 'زبان: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'کلمه رمزءَ‌عوض کن',
'resetpass_announce' => 'شما گون یک هنوکین کد ایمیل بوتگین وارد بوتءیت.
په تمام کتن ورود، شما باید یک نوکین کلمه رمز اداں شرکنیت',
@@ -634,8 +624,6 @@ $2',
'extlink_tip' => 'حارجی لینک(مشموش http:// پیشوند)',
'headline_sample' => 'متن سرخط',
'headline_tip' => 'سطح ۲ سرخط',
-'math_sample' => 'Ùرمول اداں وارد Ú©Ù†',
-'math_tip' => 'Ùرمول ریاضی (LaTeX)',
'nowiki_sample' => 'متن بی Ùرمتءا ادان وارد Ú©Ù†',
'nowiki_tip' => 'Ùرمت ÙˆÛŒ Ú©ÛŒ شموش',
'image_tip' => 'Ùایل هورگین',
@@ -714,7 +702,7 @@ $2',
'noarticletext' => 'هنو Ù‡Ú† متنی ته ای صÙحه نیست.
شما تونیت [[Special:Search/{{PAGENAME}}|گردیت په عنوان صÙحه]] ته دگه صÙحات یا<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} گردگ په مربوطین آمار],
یا [{{fullurl:{{FULLPAGENAME}}|action=edit}} اصلاح ای صÙحه]</span>.',
-'userpage-userdoesnotexist' => 'حساب کاربر "$1" ثبت نهنت. لطÙا کنترل کنیت اگه شما لوٹیت ای صÙحه یا شر/اصلاح کنیت.',
+'userpage-userdoesnotexist' => 'حساب کاربر "<nowiki>$1</nowiki>" ثبت نهنت. لطÙا کنترل کنیت اگه شما لوٹیت ای صÙحه یا شر/اصلاح کنیت.',
'clearyourcache' => "'''توجه:''' بعد چه ذخیره کتن، شما شاید مجبور بیت چه وتی ذخیره ی بروزر رد بیت تا تغییرات بگندیت. '''Mozilla / Firefox / Safari:'' ''Shift'' جهل داریت همی وهدی که کلیک کنیت ''Reload'' یا بداریت ''Ctrl-Shift-R'' (''Cmd-Shift-R'' on Apple Mac);'''IE:''' ''Ctrl'' بداری وهدی که کلیک ''Refresh' یا 'Ctrl-F5''; '''Konqueror:''': راحت کلیک کن دکمه ''Reload'' یا بدار ''F5''; '''Opera''' کاربر بایدن ته ''Tools→Preferences'' ذخیره پاک کنت.",
'usercssyoucanpreview' => "'''نکته:''' Ú†Ù‡ دکمه 'Show preview' په آزمایش کتن CSS پیش Ú†Ù‡ ذخیره کتن استÙاده Ú©Ù†",
'userjsyoucanpreview' => "'''نکته:''' Ú†Ù‡ دکمه 'Show preview' په آزمایش کتن JS پیش Ú†Ù‡ ذخیره کتن استÙاده Ú©Ù†",
@@ -1052,7 +1040,6 @@ $1",
'changepassword' => 'کلمه رمز عوض کن',
'prefs-skin' => 'پوست',
'skin-preview' => 'بازین',
-'prefs-math' => 'ریاضی',
'datedefault' => 'هچ ترجیح',
'prefs-datetime' => 'تاریح و وهد',
'prefs-personal' => 'نمایه کاربر',
@@ -1075,8 +1062,6 @@ $1",
'columns' => 'ستون‌ان:',
'searchresultshead' => 'گردگ',
'resultsperpage' => 'کلیک ته هر صÙحه:',
-'contextlines' => 'خطوط در کلیک:',
-'contextchars' => 'متن در خط:',
'stub-threshold' => 'سرحد په <a href="#" class="stub">Ú†Ù†Úˆ لینک</a> Ùرمت (بایت):',
'recentchangesdays' => 'روچ ان به پیش دارگ ته نوکیت تغییرات:',
'recentchangesdays-max' => '(حداکثر $1 {{PLURAL:$1|روچ|روچ}})',
@@ -1247,7 +1232,6 @@ $1",
'right-userrights' => 'اصلاح کل حقوق کاربری',
'right-userrights-interwiki' => 'اصلاح حقوق کابرانی کابران دگه ویکی انء',
'right-siteadmin' => 'کبل و پچ دیتابیس',
-'right-reset-passwords' => 'کلمه رمز چه دگه کاربران ءَ عوض کن',
'right-override-export-depth' => 'درگیزگ صÙحات گون صÙحاتی لینک بوتگین ته سطح Ûµ',
# User rights log
@@ -1416,10 +1400,6 @@ $1",
'watchthisupload' => 'ای Ùایل بچار',
'filewasdeleted' => 'یک Ùایلی Ú¯Ùˆ ای نام پیشتر آپلود بوتت Ùˆ رندا حذ٠بوت.
شما بایدن کنترل کنیت $1 پیش چه شی که دگه آپلود کنیت.',
-'upload-wasdeleted' => "'''هوژاری: شما یک Ùایلی آپلود کنگیت Ú©Ù‡ پیشتر حذ٠بوتت.'''
-
-شما بایدن توجه کنیت Ú©Ù‡ آیا ادامه دهگ آپلود کتن Ùایل مناسبنت.
-آمار حذ٠Ùایل په ای Ùایل ادان په شمی حاطرء هست:",
'filename-bad-prefix' => "نام Ùایلی Ú©Ù‡ آپلود بیت شروع بیت گون '''\"\$1\"''', Ú©Ù‡ یک نام بی توضیحی هنچکا اتوماتیکی گون دوربین دیجیتال دهگ بوتت.
لطÙا یک تشریحی ترین نامی په وتی Ùایل بزرویت.",
'filename-prefix-blacklist' => '#<!-- leave this line exactly as it is --> <pre>
@@ -1505,7 +1485,6 @@ PICT # misc.
یک [[Special:WhatLinksHere/$2|لیست کامل]] موجودنت.',
'nolinkstoimage' => 'Ù‡Ú† صÙحه ای نیست Ú©Ù‡ به ای Ùایل لینک بوت.',
'morelinkstoimage' => 'View [[Special:WhatLinksHere/$1|گیشتر لینکان]]به ای Ùایل',
-'redirectstofile' => 'جهلیگین {{PLURAL:$1|Ùایل غیر مستقیم بنت|$1 Ùایلان غیر مستقیم بنت.}} به ای Ùایل',
'duplicatesoffile' => 'جهلیگین {{PLURAL:$1|Ùایل یک Ú©Ù¾ÛŒ انت|$2 Ùایلان Ú©Ù¾ÛŒ انت}} Ú†Ù‡ Ù‡ÛŒ Ùایل ([[Special:FileDuplicateSearch/$2|گیشترین اطلاعات]]):',
'sharedupload' => 'ای Ùایل Ú†Ù‡ $1 انت Ùˆ شاید گون دگه پروژه یان استÙاده بیت.',
'sharedupload-desc-there' => 'ای پرونده در $1 انت Ùˆ ممکن انت ته دگه پروژه‌ها هم استÙاده ببیت.
@@ -1807,10 +1786,8 @@ PICT # misc.
'watchlistanontext' => 'لطÙا $1 په دیستن یا اصلاح ایتیمان ته وتی لیست چارگء',
'watchnologin' => 'وارد نه بی تگیت',
'watchnologintext' => 'شما بایدن [[Special:UserLogin|وارد بیت]] په تغییر داتن وتی لیست چارگء',
-'addedwatch' => 'په لیست چارگ هور بوت',
'addedwatchtext' => 'صÙحه "[[:$1]]" په شمی [[Special:Watchlist|watchlist]] هور بیت.
دیمگی تغییرات په ای صÙحه Ùˆ آیاء صÙحه Ú¯Ù¾ ادان لیست بنت، Ùˆ صÙحه پررنگ جاه کیت ته [[Special:RecentChanges|لیست نوکیت تغییرات]] په راحتر کتن Ø´ÛŒ Ú©Ù‡ Ø¢ÛŒ زورگ بیت.',
-'removedwatch' => 'چه لیست چارگ زورگ بیت',
'removedwatchtext' => 'صÙحه"[[:$1]]" Ú†Ù‡ [[Special:Watchlist|شمی لیست چارگ]]. دربیت.',
'watch' => 'به چار',
'watchthispage' => 'ای صÙحه ÛŒ بچار',
@@ -1863,10 +1840,10 @@ $NEWPAGE
--
په عوض کتن تنظیمات وتی لیست چارگ،به چار
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
نظرات و گیشترین کمک:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'حذ٠صÙحه',
@@ -1882,7 +1859,7 @@ $NEWPAGE
لطÙا تایید کنیت Ú©Ù‡ شما چوش کنیت Ú©Ù‡ شما زانیت Ø¢ÛŒ Ø¡ عاقبتانآ Ùˆ Ø´ÛŒ Ú©Ù‡ شما ای کارآ گون [[{{MediaWiki:Policy-url}}|سیاست]] انجام دهیت',
'actioncomplete' => 'کار انجام بیت',
'actionfailed' => 'عمل پروش وارت',
-'deletedtext' => '"<nowiki>$1</nowiki>" حذ٠بیت.
+'deletedtext' => '"$1" حذ٠بیت.
بگندیت $2 په ثبتی Ú©Ù‡ نوکین حذÙیات',
'deletedarticle' => 'حذ٠بوت "[[$1]]"',
'suppressedarticle' => 'متوق٠بوت "[[$1]]"',
@@ -1940,7 +1917,7 @@ $NEWPAGE
'protectexpiry' => 'منقضی بیت:',
'protect_expiry_invalid' => 'تاریح انقضای معتبر نهنت.',
'protect_expiry_old' => 'تاریخ انقصا ته گذشته انت.',
-'protect-text' => "شما شاید ادان سطح Ø­Ùاظت بگندیت Ùˆ تغییر دیهت په صÙحه '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "شما شاید ادان سطح Ø­Ùاظت بگندیت Ùˆ تغییر دیهت په صÙحه '''$1'''.",
'protect-locked-blocked' => "شما نه تونیت سطوح Ø­Ùاظت وهدی مه محدود انت عوض کنیت.
ادان تنظیمات هنوی په صÙحه است'''$1''':",
'protect-locked-dblock' => "سطوح Ø­Ùاظتی په خاطر یم Ùعالین کبل دیتابیس عوض نه بنت.
@@ -2093,7 +2070,6 @@ $1',
'blockiptext' => 'Ú†Ù‡ ای Ùرم جهلی په نوشتن دسترسی په یک خاصین آدرس Ø¢ÛŒ Ù¾ÛŒ یا نام کاربری استÙاده Ú©Ù†.
Ø´ÛŒ Ùقط انجام بیت په خاطر جلوگیری Ú†Ù‡ هرابکاری په اساس [[{{MediaWiki:Policy-url}}|سیاست]].
یک حاصین دلیلی بنویس جهلء (مثلا، گوشگ صÙخات خاصی Ú©Ù‡ هراب بپتگنت).',
-'ipaddress' => 'آدرس آی پی:',
'ipadressorusername' => 'آدرس آي پی یا نام کاربری:',
'ipbexpiry' => 'وهد هلگ:',
'ipbreason' => 'دلیل:',
@@ -2106,7 +2082,6 @@ $1',
** ترسناکین رÙتار/ آزار
**سوء استÙاده Ú†Ù‡ چنت حساب
** غیر قابل قبولین نام کاربری',
-'ipbanononly' => 'Ùقط کابران ناشناس محدود Ú©Ù†',
'ipbcreateaccount' => 'مهل حساب شرکنت',
'ipbemailban' => 'کاربر چه ایمیل دیم دهگ محدود کن',
'ipbenableautoblock' => 'اتوماتیکی اهری آدرس Ø¢ÛŒ Ù¾ÛŒ Ú©Ù‡ گون ای کاربر استÙاده بوتت محدود کن، Ùˆ هر Ú†ÛŒ زیر Ø¢ÛŒ Ù¾ÛŒ هست Ú©Ù‡ سعی کننت اصلاح کننت',
@@ -2117,7 +2092,6 @@ $1',
'ipbotherreason' => 'دگر/اضاÙÛŒ ان دلیل:',
'ipbhidename' => 'پناه کن نام کاربری چه اصلاحات و لیستان',
'ipbwatchuser' => 'بچار ای کاربرء صÙحات Ú¯Ù¾ Ùˆ کاربری Ø¢',
-'ipballowusertalk' => 'په ای کاربر اجازت بدی تا وتی صÙحه گپء اصلاح بکنت وهدی Ú©Ù‡ محدود بیتت.',
'ipb-change-block' => 'بند کتن ای کاربر گون ای تنظیمات',
'badipaddress' => 'نامعتبر آدرس آی پی',
'blockipsuccesssub' => 'محدودیت موÙÙ‚ بوت',
@@ -2135,12 +2109,7 @@ $1',
'unblocked-id' => 'محدودیت $1 زورگ بیتت',
'ipblocklist' => 'لیست محدود بیتگین آی پی و نام کاربران',
'ipblocklist-legend' => 'درگیزگ یم محدودین کاربری',
-'ipblocklist-username' => 'نام کاربری یا آدرس آی پی:',
-'ipblocklist-sh-userblocks' => '$1 بند کتن دسترسی کاربر',
-'ipblocklist-sh-tempblocks' => '$1 بند کتن دسترسی موقت',
-'ipblocklist-sh-addressblocks' => '$1 بند کتن دسترسی نشانی اینترنتی',
'ipblocklist-submit' => 'گردگ',
-'blocklistline' => '$1, $2محدود انت $3 ($4)',
'infiniteblock' => 'بی حد',
'expiringblock' => 'منقضی بوت $1 $2',
'anononlyblock' => 'Ùقط ناش',
@@ -2161,7 +2130,7 @@ $1',
'reblock-logentry' => 'تنظیم‌های بندکتن دسترسی [[$1]] را تغییر داتگت به هلگ بند کتن دسترسی ته $2 ساعت $3',
'blocklogtext' => 'Ø´ÛŒ یک آماری Ú†Ù‡ کاران محدود Ùˆ رÙع محدودیت Ú†Ù‡ ای کاربر انت.
اتوماتیکی محدود بوتگین آدرس آی پی ادان لیست نهنت.
-بچار [[Special:IPBlockList|لیست محدودیت آی پی]] په لیست هنوکین عملی محدودیتان و بند کتان.',
+بچار [[Special:BlockList|لیست محدودیت آی پی]] په لیست هنوکین عملی محدودیتان و بند کتان.',
'unblocklogentry' => 'محدود نه کتن $1',
'block-log-flags-anononly' => 'ناشناس کابران Ùقط',
'block-log-flags-nocreate' => 'شرکتن حساب غیر Ùعال',
@@ -2175,8 +2144,7 @@ $1',
'ipb_expiry_temp' => 'پناهین نام کاربری محدودیاتن بایدن دایمی بنت.',
'ipb_hide_invalid' => 'نه تونیت ای حسابءَ بندی کن؛ بلکین بازین اصلاحی هستن.',
'ipb_already_blocked' => '"$1" الان محدودنت.',
-'ipb-needreblock' => '== بند بوتن دسترسی چه قبل ==
-دسترسی $1 چه قبل بند ات. آیا لوٹیت تنظیم‌های آن را تغییر دهیت؟',
+'ipb-needreblock' => 'دسترسی $1 چه قبل بند ات. آیا لوٹیت تنظیم‌های آن را تغییر دهیت؟',
'ipb_cant_unblock' => 'حطا: شناسگ محدودیت $1 در گیزگ نه بوت. شاید هنگیت رÙع محدودیت نهنت.',
'ipb_blocked_as_range' => 'حطا: ای Ù¾ÛŒ $1 مستقیما محدود نهنت Ùˆ نه تونیت رÙع محدودیت بیت.
بله Ø¢ÛŒ جزی Ú†Ù‡ محدوده $2 محدود بوتت Ú©Ù‡ تونیت رÙع محدودیت بیت.',
@@ -2316,7 +2284,7 @@ $1',
'allmessagesdefault' => 'پیش Ùرضین متن',
'allmessagescurrent' => 'هنوکین متن',
'allmessagestext' => 'Ø´ÛŒ یک لیستی Ú†Ù‡ کوله یان موجود ته نام Ùضای مدیا ÙˆÛŒ Ú©ÛŒ انت.
-لطÙا بچاریت [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] Ùˆ [http://translatewiki.net translatewiki.net] اگر شما لوٹیت ته ملکی کتن مدیا ÙˆÛŒ Ú©ÛŒ Ú©Ù…Ú© کنیت.',
+لطÙا بچاریت [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] Ùˆ [//translatewiki.net translatewiki.net] اگر شما لوٹیت ته ملکی کتن مدیا ÙˆÛŒ Ú©ÛŒ Ú©Ù…Ú© کنیت.',
'allmessagesnotsupportedDB' => "ای صÙحه نه تونیت استÙاده بیت په Ú†ÛŒ Ú©Ù‡'''\$wgUseDatabaseMessages''' غیر Ùعالنت.",
'allmessages-filter-legend' => 'Ùیلتر',
'allmessages-filter' => 'Ùیلتر گون حالت دلواهی',
@@ -2457,9 +2425,7 @@ $1',
'monobook.js' => '/* جاوا اسکریپت ادان Ùقط په کابرانی Ú©Ù‡ Ú†Ù‡ پوست منوبوک استÙاده کننت بار بیت. */',
# Metadata
-'nodublincore' => 'هسته دوبلین RDF متادیتا ته ای سرور غیر Ùعالنت.',
-'nocreativecommons' => 'کریتیو کامان متادیتا RDF ته ای سرور غیر Ùعال انت.',
-'notacceptable' => 'سروری ویکی نه تونیت دیتای ته Ùرمتی Ú©Ù‡ شمی کلاینت بتوننت Ø¢ÛŒ بوانند Ùراهم کنت.',
+'notacceptable' => 'سروری ویکی نه تونیت دیتای ته Ùرمتی Ú©Ù‡ شمی کلاینت بتوننت Ø¢ÛŒ بوانند Ùراهم کنت.',
# Attribution
'anonymous' => 'ناشناسین {{PLURAL:$1|کاربر|کاربران}} چه {{SITENAME}}',
@@ -2480,14 +2446,6 @@ $1',
'spam_reverting' => 'عوض کتن په آهری نسحه که شامل لینکان می بیت په $1',
'spam_blanking' => 'کل بازبینی آن شامل لینکان په $1, بوتت هالیکی',
-# Info page
-'infosubtitle' => 'اطلاعات په صÙحه',
-'numedits' => 'تعداد اصلاحات (صÙحه): $1',
-'numtalkedits' => 'تعداد اصلاحات (صÙحه بحث): $1',
-'numwatchers' => 'تعداد چاروکان: $1',
-'numauthors' => 'تعداد دوراین نویسوکان (صÙحه): $1',
-'numtalkauthors' => 'تعداد مجزاین نویسوکان(صÙحه بحث): $1',
-
# Skin names
'skinname-standard' => 'کلاسیک',
'skinname-nostalgia' => 'نوستالجیک',
@@ -2498,27 +2456,6 @@ $1',
'skinname-simple' => 'ساده',
'skinname-modern' => 'مدرن',
-# Math options
-'mw_math_png' => 'یکسره PNG تحویل دی',
-'mw_math_simple' => 'HTML اگر باز سادگت یا دگه PNG',
-'mw_math_html' => 'HTML اگر ممکنت یا دگه دگهPNG',
-'mw_math_source' => 'آیء په داب TeX بل (په بروززان متنی)',
-'mw_math_modern' => 'په مدرنین بروزر آن توصیه بیت',
-'mw_math_mathml' => 'MathML اگر ممکن انت (آزمایشی)',
-
-# Math errors
-'math_failure' => 'تجزیه پروش وارت',
-'math_unknown_error' => 'ناشناسین حطا',
-'math_unknown_function' => 'ناشناس عملگر',
-'math_lexing_error' => 'حطا نوشتاری',
-'math_syntax_error' => 'حطا ساختار',
-'math_image_error' => 'بدل کتن PNGپروش وارت;
-کنترل کنیت په نصب latex, dvips, gs, و convert',
-'math_bad_tmpdir' => 'نه نونیت بنویسیت یا مسیر غیر دایمی ریاضی شرکنت',
-'math_bad_output' => 'نه تونیت بنویسیت یا مشیر خروجی ریاضی شرکنت.',
-'math_notexvc' => 'ترکیب کتن texvc قابل اجرا;
-لطÙا بچار math/README په تنظیم کتن.',
-
# Patrolling
'markaspatrolleddiff' => 'نشان کن په داب نظارت بوتگین',
'markaspatrolledtext' => 'ای صÙحه نشان Ú©Ù† په داب نظارت بوتگین',
@@ -2554,16 +2491,15 @@ $1',
'nextdiff' => 'نوکترین اصلاح→',
# Media information
-'mediawarning' => "''''هوژاری:'''' ای Ùایل شاید شامل بد واهین کد بوت،اجرای آیی ته وتی سیستم شاید تواÙÙ‚ÛŒ بیت.",
-'imagemaxsize' => "محدودیت تصاویر: <br />''(په صÙحات توضیح Ùایل)''",
-'thumbsize' => 'اندازه پیج انگشتی',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|صÙحه|صÙحات}}',
-'file-info' => 'اندازه Ùایل: $1, مایم نوع: $2',
-'file-info-size' => '$1 × $2 پیکسل, اندازه Ùایل: $3, مایم نوع: $4',
-'file-nohires' => '<small>مزنترین رزلوشن نیست.</small>',
-'svg-long-desc' => 'اس ÙˆÛŒ جی Ùایل, معمولا $1 × $2 پیکسل, Ùایل اندازه: $3',
-'show-big-image' => 'Ú©Ù„ صÙحه',
-'show-big-image-thumb' => '<small>اندازه ای بازبین:$1× $2 pixels</small>',
+'mediawarning' => "''''هوژاری:'''' ای Ùایل شاید شامل بد واهین کد بوت،اجرای آیی ته وتی سیستم شاید تواÙÙ‚ÛŒ بیت.",
+'imagemaxsize' => "محدودیت تصاویر: <br />''(په صÙحات توضیح Ùایل)''",
+'thumbsize' => 'اندازه پیج انگشتی',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|صÙحه|صÙحات}}',
+'file-info' => 'اندازه Ùایل: $1, مایم نوع: $2',
+'file-info-size' => '$1 × $2 پیکسل, اندازه Ùایل: $3, مایم نوع: $4',
+'file-nohires' => '<small>مزنترین رزلوشن نیست.</small>',
+'svg-long-desc' => 'اس ÙˆÛŒ جی Ùایل, معمولا $1 × $2 پیکسل, Ùایل اندازه: $3',
+'show-big-image' => 'Ú©Ù„ صÙحه',
# Special:NewFiles
'newimages' => 'گالری نوکین Ùایلان',
@@ -2641,7 +2577,13 @@ Variants for Chinese language
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'پهنات',
@@ -2656,13 +2598,11 @@ Variants for Chinese language
'exif-ycbcrpositioning' => 'جاگاه Y و C',
'exif-xresolution' => 'اÙÙ‚ÛŒ وضوح',
'exif-yresolution' => 'وضوح عمودی',
-'exif-resolutionunit' => 'واحد X وY وضوح',
'exif-stripoffsets' => 'جاگاه دیتای عکس',
'exif-rowsperstrip' => 'تعداد ردی٠آن ته هر نوار',
'exif-stripbytecounts' => 'بایت ته هر نوار کمپرس بوتگین',
'exif-jpeginterchangeformat' => 'عوض کتن په JPEG SOI',
'exif-jpeginterchangeformatlength' => 'بیت آن دیتا جیی پی جی',
-'exif-transferfunction' => 'عملگر جاه په جاهی',
'exif-whitepoint' => 'رنگ پذیری نکته اسپیت',
'exif-primarychromaticities' => 'رنگ پذیری اولیگی',
'exif-ycbcrcoefficients' => ' ضرایب Ùضا رنگ جاه په جاهی ماتریکس',
@@ -2681,7 +2621,6 @@ Variants for Chinese language
'exif-compressedbitsperpixel' => 'مدل کمپرس کتن عکس',
'exif-pixelydimension' => 'معتبرین پهنات عکس',
'exif-pixelxdimension' => 'معتبرین ارتÙاع عکس',
-'exif-makernote' => 'یادداشتان شرکنوک',
'exif-usercomment' => 'نظرات کاربر',
'exif-relatedsoundfile' => 'مربوطین Ùایل صوتی',
'exif-datetimeoriginal' => 'تاریح و وهد شرکتن دیتا',
@@ -2696,7 +2635,6 @@ Variants for Chinese language
'exif-exposureprogram' => 'برنامه ته معرض بوتن',
'exif-spectralsensitivity' => 'حساسیت Ø·ÛŒÙÛŒ',
'exif-isospeedratings' => 'میزان سرعت ISO',
-'exif-oecf' => 'Ùاکتور تبدیل اوپتوالکترونیکی',
'exif-shutterspeedvalue' => 'سرعت شاتر',
'exif-aperturevalue' => 'پچ بیگ',
'exif-brightnessvalue' => 'روشنی',
@@ -2710,7 +2648,6 @@ Variants for Chinese language
'exif-focallength-format' => '$1Ù….Ù…',
'exif-subjectarea' => 'ناحیه شی',
'exif-flashenergy' => 'قدرت Ùلاش',
-'exif-spatialfrequencyresponse' => 'عکس العمل متداول Ùاصله ای',
'exif-focalplanexresolution' => 'وضوح X سطح کانونی',
'exif-focalplaneyresolution' => 'وضوح Y سطح کانونی',
'exif-focalplaneresolutionunit' => 'واحد وضوح سطح کانونی',
@@ -2719,7 +2656,6 @@ Variants for Chinese language
'exif-sensingmethod' => 'روش حس کتن',
'exif-filesource' => 'منبع Ùایل',
'exif-scenetype' => 'نوع صحنه',
-'exif-cfapattern' => 'الگو سی ا٠ای',
'exif-customrendered' => 'پردازش عکس سنت',
'exif-exposuremode' => 'مدل Ù¾Ú† بوگ دیاÙراگم',
'exif-whitebalance' => 'توازن اسپیت',
@@ -2925,20 +2861,23 @@ Variants for Chinese language
'exif-gpsspeed-m' => 'مایل ته ساعت',
'exif-gpsspeed-n' => 'گرهنان',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'کیلومتر',
+'exif-gpsdestdistance-m' => 'مایل',
+'exif-gpsdestdistance-n' => 'دریایی مایل',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'جهت درست',
'exif-gpsdirection-m' => 'مسیر آهن ربایی',
# External editor support
'edit-externally' => 'ای صÙحه یا اصلاح Ú©Ù† گون یک درآین برنامه ای',
-'edit-externally-help' => '(په گیشترین اطلاعات بچار[http://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
+'edit-externally-help' => '(په گیشترین اطلاعات بچار[//www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Ú©Ù„',
-'imagelistall' => 'Ú©Ù„',
-'watchlistall2' => 'Ú©Ù„',
-'namespacesall' => 'Ú©Ù„',
-'monthsall' => 'Ú©Ù„',
+'watchlistall2' => 'Ú©Ù„',
+'namespacesall' => 'Ú©Ù„',
+'monthsall' => 'Ú©Ù„',
# E-mail address confirmation
'confirmemail' => 'آدرس ایمیل تایید کن',
@@ -3059,7 +2998,7 @@ $1',
'watchlistedit-normal-legend' => 'بزور عناوینء چه لیست چارگ',
'watchlistedit-normal-explain' => 'عناوین ته شمی لیست چارگ جهلء پیشدارگ بنت.
په زورتن یک عنوانی، جعبه کش آییء تیک زن، و کلیک کن زوگ عناوینء.
-شما تونیت هنچوش [[Special:Watchlist/raw|لیست هام اصلاح کنیت]].',
+شما تونیت هنچوش [[Special:EditWatchlist/raw|لیست هام اصلاح کنیت]].',
'watchlistedit-normal-submit' => 'بزور عناوینء',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 |$1 عنوانی ات}} چه شمی لیست چارگ حذ٠بوت:',
'watchlistedit-raw-title' => 'اصلاح لیست چارگ هام',
@@ -3067,7 +3006,7 @@ $1',
'watchlistedit-raw-explain' => 'عناوین ته شمی لیست چارگ جهلء پیش دارگ بنت،و توننت اصلاح بنت گون اضاÙÙ‡ Ùˆ زورگ Ú†Ù‡ لیست;
هر عنوانی ته یک خط.
وهدی که هلت، په روچ کتن لیست چارگ کلیک کن.
-شما هنچو تونیت[[Special:Watchlist/edit|استÙاده کنیت Ú†Ù‡ اصلاحگر استانداردء]].',
+شما هنچو تونیت[[Special:EditWatchlist|استÙاده کنیت Ú†Ù‡ اصلاحگر استانداردء]].',
'watchlistedit-raw-titles' => ':عناوین',
'watchlistedit-raw-submit' => 'په روچ کن لیست چارگء',
'watchlistedit-raw-done' => 'شمی لیست چارگ په روچ بیتگت',
@@ -3128,25 +3067,24 @@ $1',
'duplicate-defaultsort' => 'هژاری: ترتیب پیش Ùرض «$2» ترتیب پیش Ùرض پیشگین «$1» را باطل کنت.',
# Special:Version
-'version' => 'نسخه',
-'version-extensions' => 'نصب بوتگیت الحاق آن',
-'version-specialpages' => 'حاصین صÙحات',
-'version-parserhooks' => 'تجزیه کنوک گیر کت',
-'version-variables' => 'متغییران',
-'version-other' => 'دگر',
-'version-mediahandlers' => 'دست گروک مدیا',
-'version-hooks' => 'گیر کنت',
-'version-extension-functions' => 'عملگران الحاقی',
-'version-parser-extensiontags' => 'برچسپان الحاقی تجزیه گر',
-'version-parser-function-hooks' => 'عمل گر تجزیه کنوک گیر کت',
-'version-skin-extension-functions' => 'عملگران الحاقی پوستک',
-'version-hook-name' => 'نام گیر',
-'version-hook-subscribedby' => 'اشتراک بیت گون',
-'version-version' => '(نسخه $1)',
-'version-license' => 'لیسانس',
-'version-software' => 'نصبین برنامه',
-'version-software-product' => 'محصول',
-'version-software-version' => 'نسخه',
+'version' => 'نسخه',
+'version-extensions' => 'نصب بوتگیت الحاق آن',
+'version-specialpages' => 'حاصین صÙحات',
+'version-parserhooks' => 'تجزیه کنوک گیر کت',
+'version-variables' => 'متغییران',
+'version-other' => 'دگر',
+'version-mediahandlers' => 'دست گروک مدیا',
+'version-hooks' => 'گیر کنت',
+'version-extension-functions' => 'عملگران الحاقی',
+'version-parser-extensiontags' => 'برچسپان الحاقی تجزیه گر',
+'version-parser-function-hooks' => 'عمل گر تجزیه کنوک گیر کت',
+'version-hook-name' => 'نام گیر',
+'version-hook-subscribedby' => 'اشتراک بیت گون',
+'version-version' => '(نسخه $1)',
+'version-license' => 'لیسانس',
+'version-software' => 'نصبین برنامه',
+'version-software-product' => 'محصول',
+'version-software-version' => 'نسخه',
# Special:FilePath
'filepath' => 'مسیر Ùایل',
@@ -3157,9 +3095,7 @@ $1',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'گردگ په Ú©Ù¾ÛŒ Ùایلان',
-'fileduplicatesearch-summary' => 'گردگ په Ú©Ù¾ÛŒ Ùایلان په اساس درهمین ارزش.
-
-نا Ùایل بی پیش وند "{{ns:file}}:" وارد کنیت',
+'fileduplicatesearch-summary' => 'گردگ په Ú©Ù¾ÛŒ Ùایلان په اساس درهمین ارزش.',
'fileduplicatesearch-legend' => 'گردگ په کپی',
'fileduplicatesearch-filename' => ':نام Ùایل',
'fileduplicatesearch-submit' => 'گردگ',
diff --git a/languages/messages/MessagesBcl.php b/languages/messages/MessagesBcl.php
index e38b2267..8e43c2be 100644
--- a/languages/messages/MessagesBcl.php
+++ b/languages/messages/MessagesBcl.php
@@ -88,8 +88,8 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'Upload' => array( 'Ikarga' ),
'Search' => array( 'Hanapon' ),
+ 'Upload' => array( 'Ikarga' ),
);
$messages = array(
@@ -203,15 +203,6 @@ $messages = array(
'category-article-count-limited' => 'Yaon sa presenteng kategorya an mga minasunod na {{PLURAL:$1|pahina|$1 pahina}}.',
'listingcontinuesabbrev' => 'sunód',
-'mainpagetext' => "'''Instalado na an MediaWiki.'''",
-'mainpagedocfooter' => "Konsultarón tabì an [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] para sa impormasyon sa paggamit nin progama kaining wiki.
-
-== Pagpopoon ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-
'about' => 'Manonongod',
'article' => 'Laog na pahina',
'newwindow' => '(minabukas sa bàgong bintanà)',
@@ -252,7 +243,6 @@ $messages = array(
'history' => 'Uusipón nin pahina',
'history_short' => 'Uusipón',
'updatedmarker' => 'nabàgo poon kan huri kong pagdalaw',
-'info_short' => 'Impormasyon',
'printableversion' => 'Naipiprentang bersyon',
'permalink' => 'Permanenteng takod',
'print' => 'Iprenta',
@@ -424,7 +414,6 @@ Hapót: $2',
'cascadeprotected' => 'Pinoprotehirán ining páhina sa mga paghirá, ta sarô ini sa mga minasunod na {{PLURAL:$1|páhina|mga páhina}} na pinoprotehiran kan opsyón na "katarata" na nakabuká:
$2',
'namespaceprotected' => "Mayô kang permisong maghirá kan mga páhina sa '''$1''' ngaran-espacio.",
-'customcssjsprotected' => 'Mayô kang permiso na maghirâ kaining páhina, hulî ta igwa ining mga puesta na personal kan ibang paragamit.',
'ns-specialprotected' => 'An mga páhinang nasa {{ns:special}} na ngaran-espacio dai pwedeng hirahón.',
# Virus scanner
@@ -468,7 +457,7 @@ Nagibo na an ''account'' mo. Giromdomon tabi na ribayán an saimong mga kabôtan
'loginsuccesstitle' => 'Matriumpo an paglaog',
'loginsuccess' => "'''Nakalaog ka na sa {{SITENAME}} \"\$1\".'''",
'nosuchuser' => 'Mayong paragamit sa pangaran na "$1". Reparohon an pigsurat mo, o maggibo nin bàgong account.',
-'nosuchusershort' => 'Mayong paragamit sa nagngangaran na "<nowiki>$1</nowiki>". Reparohon an pigsurat mo.',
+'nosuchusershort' => 'Mayong paragamit sa nagngangaran na "$1". Reparohon an pigsurat mo.',
'nouserspecified' => 'Kaipuhan mong kaagan nin pangaran.',
'wrongpassword' => 'Salâ an pigtaták na sekretong panlaog. Probaran giraray tabì.',
'wrongpasswordempty' => 'Mayong pigkaag na sekretong panlaog. Probaran giraray tabì.',
@@ -501,7 +490,7 @@ $1 na oras.',
'accountcreatedtext' => "Ginibo na an ''account'' para ki $1.",
'loginlanguagelabel' => 'Tataramon: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => "Ipwesto giraray an sekretong panlaog kan ''account''",
'resetpass_announce' => "Nakalaog ka na may kodang temporaryong ''e''-sinurat. Para matapos an paglaog, kaipuhan mong magpwesto nin bâgong sekretong panlaog digdi:",
'resetpass_text' => '<!-- Magdugang nin teksto digdi -->',
@@ -528,8 +517,6 @@ Matriumpo mo nang nailaog an sekretong panlaog o nakua an bàgong temporaryong s
'extlink_tip' => 'Panluwas na takod (giromdomon an http:// na prefiho)',
'headline_sample' => 'Tekstong pamayohan',
'headline_tip' => 'Tangga ika-2 na pamayohan',
-'math_sample' => 'Isaliôt an pormula digdi',
-'math_tip' => 'Pórmulang matemátika (LaTeX)',
'nowiki_sample' => "Isaliot digdi an tekstong dai na-''format''",
'nowiki_tip' => "Dai pagindiendehon pag-''format'' kan wiki",
'image_sample' => 'Halimbawa.jpg',
@@ -798,7 +785,6 @@ An ibang mga administrador sa ining wiki pwede pang maghiling kan mga nakatagong
'changepassword' => 'Ribayan an sekretong panlaog',
'prefs-skin' => "''Skin''",
'skin-preview' => 'Tânawon',
-'prefs-math' => 'Mat',
'datedefault' => 'Mayong kabôtan',
'prefs-datetime' => 'Petsa asin oras',
'prefs-personal' => 'Pambisto nin parágamit',
@@ -814,8 +800,6 @@ An ibang mga administrador sa ining wiki pwede pang maghiling kan mga nakatagong
'columns' => 'Mga taytay:',
'searchresultshead' => 'Hanápon',
'resultsperpage' => 'Mga tamà kada pahina:',
-'contextlines' => 'Mga linya kada tamà:',
-'contextchars' => 'Konteksto kada linya:',
'stub-threshold' => 'Kasagkoran kan <a href="#" class="stub">takod kan tambô</a> pigpopormato:',
'recentchangesdays' => 'Mga aldáw na ipapahilíng sa mga nakakaági pa sanáng pagbabàgó:',
'recentchangescount' => 'Bilang nin mga paghirá na ipapahilíng sa mga nakakaági pa sanáng pagbabàgó:',
@@ -977,10 +961,6 @@ Kun igwa ka nin ladawan na may resolusyón na maximo ikarga tabî ini, kun dai,
'destfilename' => "''Filename'' kan destinasyón",
'watchthisupload' => 'Bantayan ining pahina',
'filewasdeleted' => "May sarong ''file'' na kapangaran kaini na dating pigkarga tapos pigparâ man sana. Sosogon muna tabî an $1 bago ikarga giraray ini.",
-'upload-wasdeleted' => "'''Patanid: Pigkakarga mo an ''file'' na dati nang pigparâ.'''
-
-Isipon tabi kun maninigo an pagkarga giraray kaini.
-An historial nin pagparâ kan ''file'' nakakaag digdi para sa konbenyensya:",
'filename-bad-prefix' => "An pangaran nin ''file'' na pigkakarga mo nagpopoon sa '''\"\$1\"''', sarong pangaran na dai makapaladawan na normalmente enseguidang pigtatao kan mga kamerang digital. Magpili tabî nin pangaran nin ''file'' na mas makapaladawan.",
'upload-success-subj' => 'Nakarga na',
@@ -1239,13 +1219,11 @@ o habo magresibo nin e-surat sa ibang paragamit.',
'watchlistanontext' => 'Mag $1 tabi para mahiling o maghira nin mga bagay saimong lista nin mga pigbabantayan.',
'watchnologin' => 'Mayô sa laog',
'watchnologintext' => 'Dapat ika si [[Special:UserLogin|nakalaog]] para puede kang magribay kan saimong lista nin mga pigbabantayán.',
-'addedwatch' => 'Idinugang sa pigbabantayan',
'addedwatchtext' => "Ining pahina \"[[:\$1]]\" dinugang sa saimong mga [[Special:Watchlist|Pigbabantayan]].
An mga pagbabâgo sa páhinang ini asin sa mga páhinang olay na kapadis kaini ililista digdi,
asin an páhina isusurat nin '''mahîbog''' sa [[Special:RecentChanges|lista nin mga kaaagi pa sanang pagbabâgo]] para madalî ining mahiling.
Kun boot mong halîon an páhina sa pigbabantayan mo sa maabot na panahon, pindoton an \"Pabayaan\" ''side bar''.",
-'removedwatch' => 'Pigtanggal sa pigbabantayan',
'removedwatchtext' => 'An pahinang "[[:$1]]" pigtanggal sa saimong pigbabantayan.',
'watch' => 'Bantayán',
'watchthispage' => 'Bantayan ining pahina',
@@ -1296,10 +1274,10 @@ Mayô nang iba pang paisi na ipapadara dapit sa iba pang mga pagbabâgo kun dai
--
Para bâgohon an pagpwesto kan saimong mga pigbabantayan, bisitahon an
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Komentaryo asin iba pang tabang:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Paraon an pahina',
@@ -1314,7 +1292,7 @@ Komentaryo asin iba pang tabang:
Konpirmaron tabì na talagang boot mong gibohon ini, nasasabotan mo an mga resulta, asin an piggigibo mo ini konporme sa
[[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Nagibo na',
-'deletedtext' => 'Pigparà na an "<nowiki>$1</nowiki>" .
+'deletedtext' => 'Pigparà na an "$1" .
Hilingón tabì an $2 para mahiling an lista nin mga kaaagi pa sanang pagparà.',
'deletedarticle' => 'pigparà an "[[$1]]"',
'dellogpage' => 'Usip nin pagparà',
@@ -1357,7 +1335,7 @@ Pindotón tabî an \"back\" asin ikarga giraray an páhinang ginikanan mo, danga
'protectexpiry' => 'Mápasó:',
'protect_expiry_invalid' => 'Dai pwede ining pahanon nin pagpasó.',
'protect_expiry_old' => 'Nakalihis na an panahon nin pagpasó.',
-'protect-text' => "Pwede mong hilingón asin bàgohon an tangga nin proteksyon digdi para sa pahina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Pwede mong hilingón asin bàgohon an tangga nin proteksyon digdi para sa pahina '''$1'''.",
'protect-locked-blocked' => "Dai mo pwedeng bâgohon an mga tangga kan proteksyon mientras na ika nababágat. Ini an mga presenteng pwesto kan páhina '''$1''':",
'protect-locked-dblock' => "Dai puedeng ibalyo an mga nibel kan proteksión ta may actibong kandado sa base nin datos.
Ini an mga puesta sa ngunyan kaining páhina '''$1''':",
@@ -1474,7 +1452,6 @@ $1",
'blockiptext' => 'Gamiton an pormularyo sa babâ para bagaton an pagsurat kan sarong espesipikong IP o ngaran nin parágamit.
Dapat gibohon sana ini para maibitaran vandalismo, asin kompirmi sa [[{{MediaWiki:Policy-url}}|palakaw]].
Magkaag nin espisipikong rason (halimbawa, magtao nin ehemplo kan mga páhinang rinaot).',
-'ipaddress' => 'Direksyón nin IP:',
'ipadressorusername' => 'direksyon nin IP o gahâ:',
'ipbexpiry' => 'Pasó:',
'ipbreason' => 'Rason:',
@@ -1487,7 +1464,6 @@ Magkaag nin espisipikong rason (halimbawa, magtao nin ehemplo kan mga páhinang
** Gawî-gawing makatakót/makauyám
** Nag-aabuso nin mga lain-lain na ''account''
** Dai akong ngaran nin parágamit",
-'ipbanononly' => 'Bagaton an mga paragamit na anonimo sana',
'ipbcreateaccount' => 'Pugulon an pagibo nin kuenta.',
'ipbemailban' => 'Pugolan ining paragamit na magpadara nin e-surat',
'ipbenableautoblock' => 'Enseguidang bagaton an huring direccion nin IP na ginamit kaining paragamit, asin kon ano pang ibang IP na proprobaran nindang gamiton',
@@ -1512,9 +1488,7 @@ Magkaag nin espisipikong rason (halimbawa, magtao nin ehemplo kan mga páhinang
'unblocked-id' => 'Hinali na an bagat na $1',
'ipblocklist' => 'Lista nin mga direksyon nin IP asin ngaran nin paragamit na binagat',
'ipblocklist-legend' => 'Hanapon an sarong binagát na paragamit',
-'ipblocklist-username' => 'Gahâ o dirección nin IP:',
'ipblocklist-submit' => 'Hanápon',
-'blocklistline' => '$1, $2 binagat $3 ($4)',
'infiniteblock' => 'daing siring',
'expiringblock' => 'minapasó $1 $2',
'anononlyblock' => 'anon. sana',
@@ -1530,7 +1504,7 @@ Magkaag nin espisipikong rason (halimbawa, magtao nin ehemplo kan mga páhinang
'blocklogpage' => 'Usip nin pagbagat',
'blocklogentry' => 'binagat na [[$1]] na may oras nin pagpaso na $2 $3',
'blocklogtext' => 'Ini an historial kan pagbagat asin pagbawi sa pagbagat nin mga paragamit. An mga enseguidang binagat na direccion nin
-IP dai nakalista digdi. Hilingon an [[Special:IPBlockList|IP lista nin mga binagat]] para sa lista nin mga nakaandar na mga pagpangalad buda mga pagbagat.',
+IP dai nakalista digdi. Hilingon an [[Special:BlockList|IP lista nin mga binagat]] para sa lista nin mga nakaandar na mga pagpangalad buda mga pagbagat.',
'unblocklogentry' => 'binawi an pagbagat $1',
'block-log-flags-anononly' => 'Mga paragamit na anónimo sana',
'block-log-flags-nocreate' => "pigpopondohán an paggibo nin ''account'",
@@ -1629,7 +1603,7 @@ Sa kaso kan huri, pwede ka man na maggamit nin takod, arog kan [[{{#Special:Expo
'allmessagesdefault' => 'Tekstong normal',
'allmessagescurrent' => 'Presenteng teksto',
'allmessagestext' => 'Ini an lista kan mga mensahe sa sistema sa ngaran-espacio na MediaWiki.
-Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "Dai pwedeng gamiton an '''{{ns:special}}:Allmessages''' ta sarado an '''\$wgUseDatabaseMessages'''.",
# Thumbnails
@@ -1738,9 +1712,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'monobook.js' => '/* Deprecado; gamiton an [[MediaWiki:common.js]] */',
# Metadata
-'nodublincore' => "Pigpopogolan an Dublin Core RDF na metadata para sa ''server'' na ini.",
-'nocreativecommons' => "Pigpopogolan an Creative Commons RDF na metadata para sa ''server'' na ini.",
-'notacceptable' => "Dai pwedeng magtao nin datos an ''wiki server'' sa ''format'' na pwedeng basahon kan kompyuter mo.",
+'notacceptable' => "Dai pwedeng magtao nin datos an ''wiki server'' sa ''format'' na pwedeng basahon kan kompyuter mo.",
# Attribution
'anonymous' => '(Mga)paragamit na anónimo kan {{SITENAME}}',
@@ -1760,38 +1732,11 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'spam_reverting' => 'Mabalik sa huring bersion na mayong takod sa $1',
'spam_blanking' => 'An gabos na mga pahirá na may takod sa $1, pigblablanko',
-# Info page
-'infosubtitle' => 'Impormasyón kan páhina',
-'numedits' => 'Bilang kan mga hira (artikulo): $1',
-'numtalkedits' => 'Bilang kan mga hirá (páhina kan orólay): $1',
-'numwatchers' => 'Bilang kan mga parábantay: $1',
-'numauthors' => 'Bilang kan mga parásurat na ibá (páhina): $1',
-'numtalkauthors' => 'Bilang kan mga parásurat na ibá (páhina kan orólay): $1',
-
# Skin names
'skinname-standard' => 'Klasiko',
'skinname-simple' => 'Simple',
'skinname-modern' => 'Bago',
-# Math options
-'mw_math_png' => 'Itaô pirmi an PNG',
-'mw_math_simple' => 'HTML kun simple sana o PNG kun bakô',
-'mw_math_html' => 'HTML kun posible o PNG kun bakô',
-'mw_math_source' => "Pabayaan na bilang TeX (para sa mga ''browser'' na teksto)",
-'mw_math_modern' => "Pigrerekomendár para sa mga modernong ''browser''",
-'mw_math_mathml' => 'MathML kun posible (experimental)',
-
-# Math errors
-'math_failure' => 'Nagprakaso an pagatíd-atíd',
-'math_unknown_error' => 'dai aram an salâ',
-'math_unknown_function' => 'Dai aram an gamit',
-'math_lexing_error' => 'may salâ sa analisador léxico',
-'math_syntax_error' => 'may salâ sa analisador nin sintaksis',
-'math_image_error' => 'Nagprakaso an konbersyon kan PNG; sosogon tabî an pagkaag nin latex, dvips, gs, asin ikonbertir',
-'math_bad_tmpdir' => 'Dai masuratan o magibo an direktoryo nin mat temp',
-'math_bad_output' => 'Dai masuratan o magibo an direktoryo kan salida nin math',
-'math_notexvc' => 'May nawawarang texvc na ehekutable; hilingón tabî an mat/README para makonpigurar.',
-
# Patrolling
'markaspatrolleddiff' => 'Markahán na pigpapatrulya',
'markaspatrolledtext' => 'Markahan ining pahina na pigpapatrulya',
@@ -1824,16 +1769,15 @@ $1",
'nextdiff' => 'Sunod na kaibhán →',
# Media information
-'mediawarning' => "'''Patanid''': May ''malicious code'' sa ''file'' na ini, kun gigibohon ini pwede ser na maraot an saimong ''system''.",
-'imagemaxsize' => 'Limitaran an mga ladawan sa mga páhinang deskripsyon kan ladawan sa:',
-'thumbsize' => 'Sokol nin retratito:',
-'widthheightpage' => '$1×$2, $3 mga pahina',
-'file-info' => "sokol kan ''file'': $1, tipo nin MIME: $2",
-'file-info-size' => "$1 × $2 na pixel, sokol kan ''file'': $3, tipo nin MIME: $4",
-'file-nohires' => '<small>Mayong mas halangkaw na resolusyón.</small>',
-'svg-long-desc' => 'file na SVG, haros $1 × $2 pixels, sokol kan file: $3',
-'show-big-image' => 'Todong resolusyon',
-'show-big-image-thumb' => '<small>Sokol kan patânaw: $1 × $2 na pixel</small>',
+'mediawarning' => "'''Patanid''': May ''malicious code'' sa ''file'' na ini, kun gigibohon ini pwede ser na maraot an saimong ''system''.",
+'imagemaxsize' => 'Limitaran an mga ladawan sa mga páhinang deskripsyon kan ladawan sa:',
+'thumbsize' => 'Sokol nin retratito:',
+'widthheightpage' => '$1×$2, $3 mga pahina',
+'file-info' => "sokol kan ''file'': $1, tipo nin MIME: $2",
+'file-info-size' => "$1 × $2 na pixel, sokol kan ''file'': $3, tipo nin MIME: $4",
+'file-nohires' => '<small>Mayong mas halangkaw na resolusyón.</small>',
+'svg-long-desc' => 'file na SVG, haros $1 × $2 pixels, sokol kan file: $3',
+'show-big-image' => 'Todong resolusyon',
# Special:NewFiles
'newimages' => 'Galeria nin mga bàgong file',
@@ -1907,14 +1851,12 @@ Ano man na takod sa parehong linyang ini pigkokonsiderar na eksepsyon, i.e. mga
# External editor support
'edit-externally' => 'Hirahón an file gamit an panluwas na aplikasyon',
-'edit-externally-help' => 'Hilingón an [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] para sa iba pang mga impormasyon.',
+'edit-externally-help' => 'Hilingón an [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] para sa iba pang mga impormasyon.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'gabos',
-'imagelistall' => 'gabos',
-'watchlistall2' => 'gabos',
-'namespacesall' => 'gabos',
-'monthsall' => 'gabos',
+'watchlistall2' => 'gabos',
+'namespacesall' => 'gabos',
+'monthsall' => 'gabos',
# E-mail address confirmation
'confirmemail' => "Kompirmaron an ''e''-surat",
@@ -2005,7 +1947,7 @@ Ikonpirmar tabi na talagang gusto mong gibohon giraray ining pahina.",
'watchlistedit-normal-title' => 'Hirahón an pigbabantayan',
'watchlistedit-normal-legend' => 'Halion an mga titulo sa pigbabantayan',
'watchlistedit-normal-explain' => 'Mahihiling sa babâ an mga titulo na nasa pigbabantayan mo.
-Tangarig maghalì nin titulo, markahan an kahon sa gilid kaini, dangan pindotón an Tangkasón an mga Titulo. Pwede mo man na [[Special:Watchlist/raw|hirahón an bàgong lista]].',
+Tangarig maghalì nin titulo, markahan an kahon sa gilid kaini, dangan pindotón an Tangkasón an mga Titulo. Pwede mo man na [[Special:EditWatchlist/raw|hirahón an bàgong lista]].',
'watchlistedit-normal-submit' => 'Tangkasón an mga Titulo',
'watchlistedit-normal-done' => 'Pigtangkas an {{PLURAL:$1|1 an titulo|$1 mga titulo}} sa saimong pigbabantayan:',
'watchlistedit-raw-title' => 'Hirahón an bàgong pigbabantayan',
@@ -2013,7 +1955,7 @@ Tangarig maghalì nin titulo, markahan an kahon sa gilid kaini, dangan pindotón
'watchlistedit-raw-explain' => 'Mahihiling sa babâ an mga titulo na nasa pigbabantayan mo, asin pwede ining hirahón sa paagi nin pagdugang sagkod paghalì sa lista;
sarong titulo kada linya.
Pag tapos na, lagatikón an Bàgohón an Pigbabantayan.
-Pwede mo man [[Special:Watchlist/edit|gamiton an standard editor]].',
+Pwede mo man [[Special:EditWatchlist|gamiton an standard editor]].',
'watchlistedit-raw-titles' => 'Mga titulo:',
'watchlistedit-raw-submit' => 'Bàgohón an Pigbabantayan',
'watchlistedit-raw-done' => 'Binàgo na an saimong pigbabantayan.',
diff --git a/languages/messages/MessagesBe.php b/languages/messages/MessagesBe.php
index 3de7ac0c..86e4f497 100644
--- a/languages/messages/MessagesBe.php
+++ b/languages/messages/MessagesBe.php
@@ -99,8 +99,8 @@ $messages = array(
'tog-shownumberswatching' => 'Паказваць колькаÑць назіральнікаў',
'tog-oldsig' => 'ПапÑÑ€Ñдні праглÑд Ñ–Ñнуючага подпіÑу:',
'tog-fancysig' => 'Ðпрацоўваць Ð¿Ð¾Ð´Ð¿Ñ–Ñ Ñк вікі-Ñ‚ÑкÑÑ‚ (без аўтаматычнай ÑпаÑылкі)',
-'tog-externaleditor' => "КарыÑтацца вонкавай праграмай Ð´Ð»Ñ Ð¿Ñ€Ð°ÑžÐºÑ– (edit); Ñ€Ñкамендуецца толькі Ð´Ð»Ñ ÑпецыÑліÑтаў, бо патрабуе адмыÑловых наÑтаўленнÑÑž на камп'ютары; [http://www.mediawiki.org/wiki/Manual:External_editors гл. падрабÑзна.]",
-'tog-externaldiff' => "КарыÑтацца вонкавай праграмай Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°ÑžÐ½Ð°Ð½Ð½Ñ (diff); Ñ€Ñкамендуецца толькі Ð´Ð»Ñ ÑпецыÑліÑтаў, бо патрабуе адмыÑловых наÑтаўленнÑÑž на камп'ютары; [http://www.mediawiki.org/wiki/Manual:External_editors гл. падрабÑзна.]",
+'tog-externaleditor' => "КарыÑтацца вонкавай праграмай Ð´Ð»Ñ Ð¿Ñ€Ð°ÑžÐºÑ– (edit); Ñ€Ñкамендуецца толькі Ð´Ð»Ñ ÑпецыÑліÑтаў, бо патрабуе адмыÑловых наÑтаўленнÑÑž на камп'ютары; [//www.mediawiki.org/wiki/Manual:External_editors гл. падрабÑзна.]",
+'tog-externaldiff' => "КарыÑтацца вонкавай праграмай Ð´Ð»Ñ Ð¿Ð°Ñ€Ð°ÑžÐ½Ð°Ð½Ð½Ñ (diff); Ñ€Ñкамендуецца толькі Ð´Ð»Ñ ÑпецыÑліÑтаў, бо патрабуе адмыÑловых наÑтаўленнÑÑž на камп'ютары; [//www.mediawiki.org/wiki/Manual:External_editors гл. падрабÑзна.]",
'tog-showjumplinks' => 'Дазволіць Ð´Ð°Ð¿Ð°Ð¼Ð¾Ð¶Ð½Ñ‹Ñ ÑпаÑылкі "jump to"',
'tog-uselivepreview' => 'Жывы перадпаказ (ЯваÑкрыпт, ÑкÑперыментальн.)',
'tog-forceeditsummary' => 'ПапÑÑ€Ñджваць пра пуÑтое поле тлумачÑÐ½Ð½Ñ Ð¿Ñ€Ð°ÑžÐºÑ–',
@@ -196,15 +196,7 @@ $messages = array(
'listingcontinuesabbrev' => 'працÑг',
'index-category' => 'ІндÑкÑÐ°Ð²Ð°Ð½Ñ‹Ñ Ñтаронкі',
'noindex-category' => 'ÐеіндÑкÑÐ°Ð²Ð°Ð½Ñ‹Ñ Ñтаронкі',
-
-'mainpagetext' => "'''MediaWiki паÑпÑхова ÑžÑталÑванаÑ.'''",
-'mainpagedocfooter' => 'Гл. [http://meta.wikimedia.org/wiki/Help:Contents Дапаможнік карыÑтальніка (англ.)] па Ð´Ð°Ð»ÐµÐ¹ÑˆÑ‹Ñ Ð·Ð²ÐµÑткі аб карыÑтанні вікі-праграмамі.
-
-== З чаго пачаць ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Пералік параметраў канфігурацыі (англ.)]
-* [http://www.mediawiki.org/wiki/Manual:FAQ ЧÐПЫ MediaWiki (англ.)]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ЛіÑтаванне аб выпуÑках MediaWiki (англ.)]',
+'broken-file-category' => 'Старонкі з нÑÑлушнымі ÑпаÑылкамі на файлы',
'about' => 'Што гÑта',
'article' => 'Старонка змеÑціва',
@@ -256,10 +248,10 @@ $messages = array(
'history' => 'ГіÑÑ‚Ð¾Ñ€Ñ‹Ñ Ñтаронкі',
'history_short' => 'гіÑторыÑ',
'updatedmarker' => 'абноўлена ад чаÑу апошнÑга наведваннÑ',
-'info_short' => 'ІнфармацыÑ',
'printableversion' => 'Ð”Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ',
'permalink' => 'ÐÑÐ·Ð¼ÐµÐ½Ð½Ð°Ñ ÑпаÑылка',
'print' => 'Друкаваць',
+'view' => 'Паказ',
'edit' => 'Правіць',
'create' => 'Стварыць',
'editthispage' => 'Правіць гÑту Ñтаронку',
@@ -267,6 +259,7 @@ $messages = array(
'delete' => 'Ñцерці',
'deletethispage' => 'Сцерці гÑту Ñтаронку',
'undelete_short' => 'Ðднавіць {{PLURAL:$1|адну праўку|$1 правак}}',
+'viewdeleted_short' => 'Паказаць {{PLURAL:$1|адну Ñцёртую праўку|$1 ÑÑ†Ñ‘Ñ€Ñ‚Ñ‹Ñ Ð¿Ñ€Ð°ÑžÐºÑ–}}',
'protect' => 'Ðхова',
'protect_change' => 'змÑніць',
'protectthispage' => 'Пачаць ахоўваць гÑтую Ñтаронку',
@@ -351,6 +344,8 @@ $1',
'toc' => 'ЗмеÑÑ‚',
'showtoc' => 'паказаць',
'hidetoc' => 'не паказваць',
+'collapsible-collapse' => 'Ñхаваць',
+'collapsible-expand' => 'Паказаць',
'thisisdeleted' => 'Паказаць ці аднавіць $1?',
'viewdeleted' => 'Ці паказаць $1?',
'restorelink' => '{{PLURAL:$1|адна ÑÑ†Ñ‘Ñ€Ñ‚Ð°Ñ Ð¿Ñ€Ð°ÑžÐºÐ°|$1 Ñцёртых правак}}',
@@ -362,6 +357,8 @@ $1',
'page-rss-feed' => '"$1" Ñтрумень RSS',
'page-atom-feed' => '"$1" Ñтрумень Atom',
'red-link-title' => '$1 (нÑма такой Ñтаронкі)',
+'sort-descending' => 'Спарадкаваць па змÑншÑнні',
+'sort-ascending' => 'Спарадкаваць па ўзраÑтанні',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Ðртыкул',
@@ -446,12 +443,13 @@ $1',
'protectedinterface' => 'Старонка ахоўваецца, таму што ўваходзіць у Ñклад інтÑрфейÑу гÑтай праграмы.',
'editinginterface' => "'''Увага:''' Ð’Ñ‹ правіце Ñтаронку, ÑÐºÐ°Ñ ÑžÑ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ Ñ‚ÑкÑÑ‚ карыÑтальніцкага інтÑрфейÑу.
Яе змÑненне паўплывае на вонкавы выглÑд праграмы Ð´Ð»Ñ ÑžÑÑ–Ñ… удзельнікаў.
-Праект лакалізацыі MediaWiki: [http://translatewiki.net/wiki/Main_Page?setlang=be translatewiki.net].",
+Праект лакалізацыі MediaWiki: [//translatewiki.net/wiki/Main_Page?setlang=be translatewiki.net].",
'sqlhidden' => '(зварот SQL не паказаны)',
'cascadeprotected' => 'Старонка знаходзіцца пад аховай ад правак, таму што Ñна ўлучана Ñž наÑтупн{{PLURAL:$1|ую Ñтаронку|Ñ‹Ñ Ñтаронкі}}, ÑÐºÑ–Ñ Ð°Ñ…Ð¾ÑžÐ²Ð°ÑŽÑ†Ñ†Ð° з магчымаÑцю "каÑкаднага раÑпаўÑюджваннÑ" аховы:
$2',
'namespaceprotected' => "Вам не дазволена правіць Ñтаронкі Ñž праÑторы назваў '''$1'''.",
-'customcssjsprotected' => 'Вам не дазволена правіць гÑтую Ñтаронку, таму што Ñна ўтрымлівае аÑабіÑÑ‚Ñ‹Ñ Ð½Ð°Ñтаўленні іншага ўдзельніка.',
+'customcssprotected' => 'У Ð²Ð°Ñ Ð½Ñма дазволу Ñ€Ñдагаваць гÑтую CSS-Ñтаронку, таму што Ñна ўтрымлівае аÑабіÑÑ‚Ñ‹Ñ Ð½Ð°Ñтаўленні іншага ўдзельніка.',
+'customjsprotected' => 'У Ð²Ð°Ñ Ð½Ñма дазволу Ñ€Ñдагаваць гÑтую JavaScript-Ñтаронку, таму што Ñна ўтрымлівае аÑабіÑÑ‚Ñ‹Ñ Ð½Ð°Ñтаўленні іншага ўдзельніка.',
'ns-specialprotected' => 'Ðе дазволена правіць Ñтаронкі Ñž праÑторы назваў {{ns:special}}.',
'titleprotected' => "Ðазва заÑцерагаецца ад ÑтварÑннÑ; ахова паÑтаўлена ўдзельнікам: [[User:$1|$1]].
ТлумачÑнне паÑтаноўкі пад ахову: ''$2''.",
@@ -486,6 +484,7 @@ $2',
'createaccount' => 'Стварыць рахунак',
'gotaccount' => "Ужо маеце рахунак? '''$1'''.",
'gotaccountlink' => 'УвайÑці Ñž ÑÑ–ÑÑ‚Ñму',
+'userlogin-resetlink' => 'ЗабыліÑÑ Ð´Ð°Ð½Ñ‹Ñ Ð´Ð»Ñ ÑžÐ²Ð°Ñ…Ð¾Ð´Ñƒ?',
'createaccountmail' => 'праз Ñл.пошту',
'createaccountreason' => 'Прычына:',
'badretype' => 'Ð£Ð²ÐµÐ´Ð·ÐµÐ½Ñ‹Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ– не аднолькавыÑ.',
@@ -495,11 +494,13 @@ $2',
'createaccounterror' => 'Ðе ўдалоÑÑ Ñтварыць рахунак: $1',
'nocookiesnew' => 'Рахунак быў Ñтвораны, але Ñž ÑÑ–ÑÑ‚Ñму вы не ўвайшлі. {{SITENAME}} карыÑтаецца квіткамі (кукі), каб апрацоўваць уваходы ўдзельнікаў, а гÑÑ‚Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹ÑнальнаÑць адключана Ñž вашым браўзеры. Уключыце квіткі Ñž браўзеры, тады ўваходзьце Ñа Ñваімі новымі імем удзельніка Ñ– паролем.',
'nocookieslogin' => '{{SITENAME}} карыÑтаецца квіткамі (кукі), каб пазнаваць удзельнікаў. У вашым браўзеры квіткі не дазволены. Дазвольце Ñ–Ñ… працу Ñ– паÑпрабуйце ізноў.',
+'nocookiesfornew' => 'Уліковы Ð·Ð°Ð¿Ñ–Ñ ÐºÐ°Ñ€Ñ‹Ñтальніка не быў Ñтвораны, бо мы не змаглі пацвердзіць Ñго крыніцы.
+ ПераканайцеÑÑ Ñž тым, кукі ўключаныÑ, абнавіце Ñтаронку Ñ– паÑпрабуйце ÑÑˆÑ‡Ñ Ñ€Ð°Ð·.',
'noname' => 'Ð’Ñ‹ не вызначылі правільнага Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°.',
'loginsuccesstitle' => 'ПаÑпÑховы ўваход у ÑÑ–ÑÑ‚Ñму',
'loginsuccess' => "'''ЦÑпер Ð’Ñ‹ ўвайшлі на {{SITENAME}} Ñк \"\$1\".'''",
'nosuchuser' => 'ÐÑма ўдзельніка з імем "$1". Праверце правільнаÑць напіÑÐ°Ð½Ð½Ñ Ð°Ð±Ð¾ [[Special:UserLogin/signup|Ñтварыце новы рахунак]]. Ð’ÑÐ»Ñ–ÐºÑ–Ñ Ñ– Ð¼Ð°Ð»Ñ‹Ñ Ð»Ñ–Ñ‚Ð°Ñ€Ñ‹ Ñž такіх імёнах лічацца рознымі.',
-'nosuchusershort' => 'Удзельніка з імем "<nowiki>$1</nowiki>" не Ñ–Ñнуе. Праверце Ñго напіÑанне.',
+'nosuchusershort' => 'Удзельніка з імем "$1" не Ñ–Ñнуе. Праверце Ñго напіÑанне.',
'nouserspecified' => 'Ð’Ñ‹ муÑіце вызначыць Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°.',
'login-userblocked' => 'ГÑÑ‚Ñ‹ карыÑтальнік заблакаваны. Лагін не дапуÑкаецца.',
'wrongpassword' => 'Уведзены нÑправільны пароль. ПаÑпрабуйце нанова.',
@@ -537,13 +538,14 @@ $2',
Калі ÑтварÑнне рахунку было памылковым, то на гÑтае паведамленне можна не звÑртаць увагі.',
'usernamehasherror' => 'Ð†Ð¼Ñ ÐºÐ°Ñ€Ñ‹Ñтальніка не можа ўтрымліваць Ñ‚Ð°ÐºÑ–Ñ Ñімвалы',
'login-throttled' => 'Занадта многа нÑдаўніх Ñпробаў увайÑці пад гÑтым рахункам. Пачакайце перад тым, Ñк Ñпрабаваць ізноў.',
+'login-abort-generic' => 'ÐÑÑžÐ´Ð°Ð»Ð°Ñ Ñпроба ўвайÑці Ñž ÑÑ–ÑÑ‚Ñму',
'loginlanguagelabel' => 'Мова: $1',
'suspicious-userlogout' => 'Ваш запыт на выхад быў адмоўлены, паколькі ён выглÑдае Ñк накіраваны Ñа зламанага браўзера або кÑшаванне прокÑÑ–-Ñервераў.',
# E-mail sending
'php-mail-error-unknown' => 'ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ñž функцыі PHP-пошты',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ЗмÑніць пароль',
'resetpass_announce' => 'Ð’Ñ‹ ўвайшлі Ñž ÑÑ–ÑÑ‚Ñму пад тымчаÑовым паролем, прыÑланым Ñл.поштай. Каб правільна аформіць уваход, належыць вызначыць новы пароль воÑÑŒ тут:',
'resetpass_header' => 'ЗмÑніць пароль рахунку',
@@ -560,6 +562,42 @@ $2',
Магчыма, вы ўжо змÑнілі Ñвой пароль ці папраÑілі новы тымчаÑовы.',
'resetpass-temp-password' => 'ТымчаÑовы пароль:',
+# Special:PasswordReset
+'passwordreset' => 'Ð’Ñ‹Ñлаць мне новы пароль',
+'passwordreset-text' => 'Запоўніце гÑтую форму, каб атрымаць па Ñлектроннай пошце напамін вашага акаўнта.',
+'passwordreset-legend' => 'ПераўÑтанавіць пароль',
+'passwordreset-disabled' => 'Ð¤ÑƒÐ½ÐºÑ†Ñ‹Ñ Ð¿ÐµÑ€Ð°ÑžÑталёўкі Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð°Ð´ÐºÐ»ÑŽÑ‡Ð°Ð½Ð°Ñ Ð½Ð° гÑтай вікі.',
+'passwordreset-pretext' => '{{PLURAL:$1||Калі лаÑка, увÑдзіце адзін з фрагментаў дадзеных ніжÑй}}',
+'passwordreset-username' => 'Ð†Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°',
+'passwordreset-email' => 'ÐÐ´Ñ€Ð°Ñ Ñлектроннай пошты:',
+'passwordreset-emailtitle' => 'Ð†Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ Ð¿Ñ€Ð° рахунак на Ñайце {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Ðехта (магчыма вы, з IP-адраÑу $1) запытаў напамін пра ваш
+уліковы Ð·Ð°Ð¿Ñ–Ñ Ñƒ праекце {{SITENAME}} ($4).
+{{PLURAL:$3|ÐаÑтупны ўліковы Ð·Ð°Ð¿Ñ–Ñ Ð·Ð²Ñзаны | ÐаÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ ÑžÐ»Ñ–ÐºÐ¾Ð²Ñ‹Ñ Ð·Ð°Ð¿Ñ–ÑÑ‹ звÑзаны}} з гÑтым адраÑам Ñлектроннай пошты:
+
+$2
+
+{{PLURAL:$3|ГÑÑ‚Ñ‹ чаÑовы пароль будзе|ГÑÑ‚Ñ‹Ñ Ñ‡Ð°ÑÐ¾Ð²Ñ‹Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ– будуць}} дзейнічаць {{PLURAL:$5|адзін дзень|$5 дзён}}.
+Ð’Ñ‹ павінны ўвайÑці Ñž ÑÑ–ÑÑ‚Ñму Ñ– абраць новы пароль.
+Калі вы не рабілі гÑтага запыту, ці ÑžÑпомнілі Ñвой зыходны пароль
+Ñ– не жадаеце Ñго мÑнÑць, вы можаце праігнараваць гÑтае паведамленне
+Ñ– працÑгнуць выкарыÑтоўваць Ñвой Ñтары пароль.',
+'passwordreset-emailtext-user' => 'Удзельнік $1 з праекту {{SITENAME}} запраÑÑ–Ñž напамін пра ваш
+уліковы Ð·Ð°Ð¿Ñ–Ñ Ñƒ праекце {{SITENAME}}
+($4).
+{{PLURAL:$3|ÐаÑтупны ўліковы Ð·Ð°Ð¿Ñ–Ñ Ð·Ð²Ñзаны | ÐаÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ ÑƒÐ»Ñ–ÐºÐ¾Ð²Ñ‹Ñ Ð·Ð°Ð¿Ñ–ÑÑ‹ звÑзаны}} з гÑтым адраÑам Ñлектроннай пошты:
+
+$2
+
+{{PLURAL:$3|ГÑÑ‚Ñ‹ чаÑовы пароль будзе|ГÑÑ‚Ñ‹Ñ Ñ‡Ð°ÑÐ¾Ð²Ñ‹Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ– будуць}} дзейнічаць {{PLURAL:$5|$5 дзень |$5 Ð´Ð½Ñ |$5 дзён}}.
+Ð’Ñ‹ павінны ўвайÑці Ñž ÑÑ–ÑÑ‚Ñму Ñ– абраць новы пароль.
+Калі вы не рабілі гÑтага запыту, ці ÑžÑпомнілі Ñвой зыходны пароль
+Ñ– не жадаеце Ñго мÑнÑць, вы можаце праігнараваць гÑтае паведамленне
+Ñ– працÑгнуць выкарыÑтоўваць Ñвой Ñтары пароль.',
+'passwordreset-emailelement' => 'Ð†Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°: $1
+ЧаÑовы пароль: $2',
+'passwordreset-emailsent' => 'Па Ñлектроннай пошце быў адпраўлены напамін.',
+
# Edit page toolbar
'bold_sample' => 'Цёмны Ñ‚ÑкÑÑ‚',
'bold_tip' => 'Цёмны Ñ‚ÑкÑÑ‚',
@@ -571,8 +609,6 @@ $2',
'extlink_tip' => 'Ð’Ð¾Ð½ÐºÐ°Ð²Ð°Ñ ÑпаÑылка (памÑтайце аб прÑфікÑе http://)',
'headline_sample' => 'ТÑкÑÑ‚ загалоўка',
'headline_tip' => 'Загаловак 2 узроўню',
-'math_sample' => 'УÑтавіць формулу тут',
-'math_tip' => 'МатÑÐ¼Ð°Ñ‚Ñ‹Ñ‡Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»Ð° (LaTeX)',
'nowiki_sample' => 'ГÑта нефарматаваны Ñ‚ÑкÑÑ‚',
'nowiki_tip' => 'Без вікі-фарматаваннÑ',
'image_sample' => 'Ðапрыклад.jpg',
@@ -649,7 +685,7 @@ $2',
'noarticletext-nopermission' => 'Старонка не ўтрымлівае Ñ‚ÑкÑту.
Ð’Ñ‹ можаце [[Special:Search/{{PAGENAME}}|пашукаць гÑтакай назвы]] Ñž іншых Ñтаронках,
ці <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ў журналах]</span>.',
-'userpage-userdoesnotexist' => 'Рахунак удзельніка "$1" не зарÑгіÑтраваны. Праверце, ці вы жадаеце Ñтварыць або паправіць гÑтую Ñтаронку.',
+'userpage-userdoesnotexist' => 'Рахунак удзельніка "<nowiki>$1</nowiki>" не зарÑгіÑтраваны. Праверце, ці вы жадаеце Ñтварыць або паправіць гÑтую Ñтаронку.',
'userpage-userdoesnotexist-view' => 'Уліковы Ð·Ð°Ð¿Ñ–Ñ ÑƒÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ° " $1 "не зарÑгіÑтраваны.',
'blocked-notice-logextract' => 'ГÑÑ‚Ñ‹ карыÑтальнік у дадзены момант заблакаваны.
Ðпошні Ð·Ð°Ð¿Ñ–Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ð° блакіровак прыводзіцца ніжÑй Ð´Ð»Ñ Ð´Ð°Ð²ÐµÐ´ÐºÑ–:',
@@ -676,6 +712,7 @@ $2',
'''Калі гÑта Ð½Ð°Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ñпроба праўкі, паÑпрабуйце паўтарыць запіÑванне. Калі Ñ– гÑта не дапаможа, паÑпрабуйце [[Special:UserLogout|выйÑці з ÑÑ–ÑÑ‚Ñмы]] Ñ– ўвайÑці ізноў.'''",
'token_suffix_mismatch' => "'''Ваша праўка была адхілена, каб пазбегнуць ÑапÑÐ°Ð²Ð°Ð½Ð½Ñ Ñ‚ÑкÑту Ñтаронкі, таму што ваш браўзер папÑаваў знакі прыпынку Ñž квітку праўкі.
Магчыма, прычына Ñž выкарыÑтанні вамі ананімнага прокÑÑ–-Ñервера, праграмы Ñкога працуюць некарÑктна.'''",
+'edit_form_incomplete' => "'''ÐÐµÐºÐ°Ñ‚Ð¾Ñ€Ñ‹Ñ Ñ‡Ð°Ñткі формы Ñ€ÑÐ´Ð°Ð³Ð°Ð²Ð°Ð½Ð½Ñ Ð½Ðµ даÑÑгнулі Ñервера. УпÑўніцеÑÑ, што Ð’Ð°ÑˆÑ‹Ñ Ñ€Ñдагаванні не Ð¿Ð°ÑˆÐºÐ¾Ð´Ð¶Ð°Ð½Ñ‹Ñ Ñ– паÑпрабуйце зноў.'''",
'editing' => 'Правім: $1',
'editingsection' => 'Правім $1 (раздзел)',
'editingcomment' => 'Правім $1 (новы раздзел)',
@@ -1009,12 +1046,13 @@ $1",
'searchdisabled' => 'Ð¤ÑƒÐ½ÐºÑ†Ñ‹Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ {{SITENAME}} не працуе. ТымчаÑова можна шукаць з дапамогай Google. Заўважце, што тамтÑÐ¹ÑˆÑ‹Ñ Ñ–Ð½Ð´ÑкÑÑ‹ змеÑту {{SITENAME}} могуць не быць актуальнымі.',
# Quickbar
-'qbsettings' => 'Ð¥ÑƒÑ‚ÐºÐ°Ñ Ñтужка',
-'qbsettings-none' => 'ÐÑма',
-'qbsettings-fixedleft' => 'Прымацавана злева',
-'qbsettings-fixedright' => 'Прымацавана Ñправа',
-'qbsettings-floatingleft' => 'Плавае злева',
-'qbsettings-floatingright' => 'Плавае Ñправа',
+'qbsettings' => 'Ð¥ÑƒÑ‚ÐºÐ°Ñ Ñтужка',
+'qbsettings-none' => 'ÐÑма',
+'qbsettings-fixedleft' => 'Прымацавана злева',
+'qbsettings-fixedright' => 'Прымацавана Ñправа',
+'qbsettings-floatingleft' => 'Плавае злева',
+'qbsettings-floatingright' => 'Плавае Ñправа',
+'qbsettings-directionality' => 'ФікÑаванаÑ, у залежнаÑці ад Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½Ð½Ñ Ð²Ð°ÑˆÐ°Ð¹ мовы',
# Preferences page
'preferences' => 'ÐаÑтаўленні',
@@ -1025,9 +1063,10 @@ $1",
'changepassword' => 'Пароль',
'prefs-skin' => 'Вокладка',
'skin-preview' => 'перадпаказ',
-'prefs-math' => 'МатÑматыка',
'datedefault' => 'Ðе вызначана',
+'prefs-beta' => 'БÑта магчымаÑці',
'prefs-datetime' => 'Дата Ñ– чаÑ',
+'prefs-labs' => 'ЭкÑÐ¿ÐµÑ€Ñ‹Ð¼ÐµÐ½Ñ‚Ð°Ð»ÑŒÐ½Ñ‹Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð°Ñці',
'prefs-personal' => 'Удзельнік',
'prefs-rc' => '{{:{{ns:mediawiki}}:Recentchanges/be}}',
'prefs-watchlist' => 'Ð¡Ð¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½Ð°Ð³Ð°',
@@ -1049,8 +1088,6 @@ $1",
'columns' => 'Калонкі:',
'searchresultshead' => 'Пошук',
'resultsperpage' => 'Вынікаў на Ñтаронку:',
-'contextlines' => 'Радкоў на вынік:',
-'contextchars' => 'КантÑкÑту на радок:',
'stub-threshold' => 'Парог Ð´Ð»Ñ Ð¿Ð°ÐºÐ°Ð·Ñƒ ÑпаÑылкі <a href="#" class="stub">Ñк на пачатковы артыкул</a> (у байтах):',
'stub-threshold-disabled' => 'Ðе ўключана',
'recentchangesdays' => 'За колькі дзён паказваць {{lc:{{:{{ns:mediawiki}}:recentchanges/be}}}}:',
@@ -1063,7 +1100,7 @@ $1",
'savedprefs' => 'ÐаÑтáўленні замацаваныÑ.',
'timezonelegend' => 'ЧаÑавы поÑÑ:',
'localtime' => 'ÐœÑÑцовы чаÑ:',
-'timezoneuseserverdefault' => 'Як на Ñерверы',
+'timezoneuseserverdefault' => 'Як на Ñерверы ($1)',
'timezoneuseoffset' => 'Ð†Ð½ÑˆÐ°Ñ Ñ€Ð¾Ð·Ð½Ñ–Ñ†Ð°',
'timezoneoffset' => 'Розніца¹:',
'servertime' => 'Ð§Ð°Ñ Ð½Ð° Ñерверы:',
@@ -1110,8 +1147,8 @@ $1",
'prefs-help-gender' => 'ÐеабавÑзкова: ужываецца Ð´Ð·ÐµÐ»Ñ Ð¿Ð¾Ð»Ð°-карÑктнага звÑÑ€Ñ‚Ð°Ð½Ð½Ñ Ð· боку праграм. ГÑÑ‚Ñ‹Ñ Ð·Ð²ÐµÑткі могуць Ñтацца публічна вÑдомымі.',
'email' => 'Эл.пошта',
'prefs-help-realname' => 'Сапраўднае Ñ–Ð¼Ñ Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»Ñць неабавÑзкова, а калі Ñно паведамлена, то ім падпіÑваецца ваша праца.',
-'prefs-help-email' => 'ÐÐ´Ñ€Ð°Ñ Ñл.пошты паведамлÑць неабавÑзкова, але, калі ён вÑдомы, то можна атрымліваць Ñл.поштай новы пароль, калі забыты Ñтары.
-Ðле вы можаце Ñ– не раÑÑакрÑчваць Ñваёй аÑобы, Ñ– кантактаваць з іншымі ўдзельнікамі на Ñваёй Ñтаронцы ўдзельніка ці Ñž Ñваёй Ñтаронцы размовы.',
+'prefs-help-email' => 'ÐÐ´Ñ€Ð°Ñ Ñл.пошты паведамлÑць неабавÑзкова, але, калі ён вÑдомы, то можна атрымліваць Ñл.поштай новы пароль, калі Ñтары быў забыты.',
+'prefs-help-email-others' => 'Ðн такÑама дазволіць іншым удзельнікам звÑзацца з вамі праз вашу аÑабіÑтую Ñтаронку без неабходнаÑці раÑÐºÑ€Ñ‹Ñ†Ñ†Ñ Ð°Ð´Ñ€Ð°Ñу вашай Ñлектроннай пошты.',
'prefs-help-email-required' => 'ПатрÑбны Ð°Ð´Ñ€Ð°Ñ Ñлектроннай пошты.',
'prefs-info' => 'ÐÐ³ÑƒÐ»ÑŒÐ½Ñ‹Ñ Ð·Ð²ÐµÑткі',
'prefs-i18n' => 'ІнтÑрнацыÑналізацыÑ',
@@ -1236,15 +1273,15 @@ $1",
'right-userrights' => 'Правіць уÑе дазволы ўдзельнікаў',
'right-userrights-interwiki' => 'Правіць дазволы ўдзельнікаў на іншых вікі',
'right-siteadmin' => 'Замыкаць і адмыкаць базу даных',
-'right-reset-passwords' => 'Скідаць паролі іншых удзельнікаў',
'right-override-export-depth' => 'ЭкÑпартаваць Ñтаронкі, у тым ліку звÑзаныÑ, да глыбіні ÑпаÑылак 5.',
'right-sendemail' => 'Ðдправіць па Ñлектроннай пошце іншым карыÑтальнікам',
# User rights log
-'rightslog' => 'Журнал правоў удзельнікаў',
-'rightslogtext' => 'Журнал змÑненнÑÑž у дазволах, прыпіÑаных удзельнікам.',
-'rightslogentry' => 'зменена Ð³Ñ€ÑƒÐ¿Ð°Ð²Ð°Ñ Ð¿Ñ€Ñ‹Ð½Ð°Ð»ÐµÐ¶Ð½Ð°Ñць $1 з $2 на $3',
-'rightsnone' => '(нÑма)',
+'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' => 'чытаць гÑтую Ñтаронку',
@@ -1365,11 +1402,12 @@ $1",
'minlength1' => 'Ðазвы файлаў муÑÑць утрымліваць хоць 1 знак.',
'illegalfilename' => 'У назве файла «$1» Ñ‘Ñць Ñ‚Ð°ÐºÑ–Ñ Ð·Ð½Ð°ÐºÑ–, ÑÐºÑ–Ñ Ð½Ðµ дазвалÑюцца Ñž назвах Ñтаронак. Калі лаÑка, паÑпрабуйце ўклаÑці файл ізноў, але пад іншай назвай.',
'badfilename' => 'Ðазва файла зменена на "$1".',
-'filetype-mime-mismatch' => 'ПашырÑнне файла не адпавÑдае MIME тыпу.',
+'filetype-mime-mismatch' => 'ПашырÑнне файла (".$1") не адпавÑдае заўважанаму тыпу MIME ($2).',
'filetype-badmime' => 'Ðе дазвалÑецца ўкладанне файлаў з тыпам MIME "$1".',
'filetype-bad-ie-mime' => 'Ðемагчыма ўклаÑці гÑÑ‚Ñ‹ файл, таму што браўзер Internet Explorer будзе пазнаваць Ñго Ñк "$1", а гÑта з\'ÑўлÑецца забароненым Ñ– патÑнцыйна небÑÑпечным тыпам файлаў.',
'filetype-unwanted-type' => "'''\".\$1\"''' належыць да нежаданых тыпаў файлаў. Пажаданы{{PLURAL:\$3| тып файла|Ñ Ñ‚Ñ‹Ð¿Ñ‹ файлаў}}: \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' належыць да недазволеных тыпаў файлаў. Дазволены{{PLURAL:\$3| тып файла|Ñ Ñ‚Ñ‹Ð¿Ñ‹ файлаў}}: \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|належыць да недазволенага тыпу файлаў|належаць да недазволеных тыпаў файлаў}}.
+Пералік дазволеных тыпаў Ñкладаецца з {{PLURAL:$3|тыпа|тыпаў}}: $2.',
'filetype-missing' => 'Ðазва файла без ÑуфікÑу (напрыклад, ".jpg").',
'empty-file' => 'Файл, Ñкі вы прадÑтавілі, быў пуÑÑ‚Ñ‹.',
'file-too-large' => 'Файл, Ñкі вы прадÑтавілі быў занадта вÑлікі.',
@@ -1385,6 +1423,7 @@ $1",
'large-file' => 'РÑкамендуецца, каб файлы былі не Ð±Ð¾Ð»ÑŒÑˆÑ‹Ñ Ð·Ð° $1; гÑÑ‚Ñ‹ файл ёміць $2.',
'largefileserver' => "ГÑÑ‚Ñ‹ файл большага аб'ёму, чым дазвалÑе ÐºÐ°Ð½Ñ„Ñ–Ð³ÑƒÑ€Ð°Ñ†Ñ‹Ñ Ñервера.",
'emptyfile' => 'Здаецца, што файл, укладзены вамі, пуÑÑ‚Ñ‹. Магчыма, здарылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ñž назве файла? Праверце, ці вы Ñапраўды хацелі ўклаÑці менавіта гÑÑ‚Ñ‹ файл.',
+'windows-nonascii-filename' => 'Ð”Ð°Ð´Ð·ÐµÐ½Ð°Ñ Ð²Ñ–ÐºÑ– не падтрымлівае імёны файлаў Ñа ÑпецыÑльнымі знакамі.',
'fileexists' => "Ужо Ñ–Ñнуе файл з такою назвай, праверце '''<tt>[[:$1]]</tt>''', калі не ўпÑўнены, што жадаеце мÑнÑць Ñго змеÑціва.
[[$1|thumb]]",
'filepageexists' => "Ð”Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° з такой назвай Ñ–Ñнуе Ñтаронка апіÑÐ°Ð½Ð½Ñ '''<tt>[[:$1]]</tt>''', але Ñам файл зараз не Ñ–Ñнуе.
@@ -1426,10 +1465,6 @@ $1",
'upload-options' => 'МагчымаÑці ўкладаннÑ',
'watchthisupload' => 'Ðазіраць за файлам',
'filewasdeleted' => 'Файл з такою назвай быў раней укладзены Ñюды, а потым Ñцёрты. Варта паглÑдзець у $1 перад тым, Ñк укладаць Ñго нанова.',
-'upload-wasdeleted' => "'''Увага: вы ўкладаеце файл, Ñкі быў раней Ñцёрты.'''
-
-ТрÑба падумаць, ці варта ўкладваць такі файл.
-ВоÑÑŒ, Ð´Ð·ÐµÐ»Ñ Ð´Ð°Ð²ÐµÐ´ÐºÑ–, журнал ÑціраннÑÑž:",
'filename-bad-prefix' => "Ðазва файла, Ñкі вы ўкладаеце, пачынаецца з '''\"\$1\"''', што падобна на аўтаматычныÑ, Ð½ÐµÑ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ‚Ñ‹ÑžÐ½Ñ‹Ñ Ð½Ð°Ð·Ð²Ñ‹ файлаў, ÑÐºÑ–Ñ Ñ€Ð¾Ð±Ñць Ð»Ñ–Ñ‡Ð±Ð°Ð²Ñ‹Ñ Ñ„Ð¾Ñ‚Ð°Ð°Ð¿Ð°Ñ€Ð°Ñ‚Ñ‹. Калі лаÑка, змÑніце назву на больш зразумелую.",
'upload-success-subj' => 'ПаÑпÑховае ўкладанне',
'upload-failure-subj' => 'Праблема загрузкі',
@@ -1507,7 +1542,6 @@ $1",
ТакÑама Ñ‘Ñць [[Special:WhatLinksHere/$2|поўны пералік]].',
'nolinkstoimage' => 'ÐÑма Ñтаронак, ÑÐºÑ–Ñ Ð± ÑпаÑылаліÑÑ Ð½Ð° файл.',
'morelinkstoimage' => 'Паказаць [[Special:WhatLinksHere/$1|больш ÑпаÑылак]] на гÑÑ‚Ñ‹ файл.',
-'redirectstofile' => "ÐаÑтупны{{PLURAL:$1| файл з'ÑўлÑецца пераÑылкай|Ñ $1 файлы з'ÑўлÑюцца пераÑылкамі}} да гÑтага файла:",
'duplicatesoffile' => "ÐаÑтупн{{PLURAL:$1|Ñ‹ файл з'ÑўлÑецца дублікатам|Ñ‹Ñ $1 файлы з'ÑўлÑюцца дублікатамі}} гÑтага файла ([[Special:FileDuplicateSearch/$2|падрабÑзна]]):",
'sharedupload' => 'ГÑÑ‚Ñ‹ файл з $1 Ñ– можа выкарыÑтоўвацца іншымі праектамі.',
'filepage-nofile' => 'Ðе знойдзены файл з такой назвай.',
@@ -1788,6 +1822,8 @@ $1",
'noemailtext' => 'Удзельнік не паведаміў карÑктнага адраÑу Ñл.пошты.',
'nowikiemailtitle' => 'Ðе Ð´Ð°Ð·Ð²Ð¾Ð»ÐµÐ½Ð°Ñ Ñл.пошта',
'nowikiemailtext' => 'ГÑÑ‚Ñ‹ ўдзельнік не жадае атрымліваць Ñл.пошты ад іншых удзельнікаў.',
+'emailusername' => 'Логін',
+'emailusernamesubmit' => 'Ðдправіць',
'email-legend' => 'ÐдаÑлаць Ñл.ліÑÑ‚ іншаму ўдзельніку праекта {{SITENAME}}',
'emailfrom' => 'Ðд каго:',
'emailto' => 'Каму:',
@@ -1807,12 +1843,11 @@ $1",
'watchlistanontext' => 'Каб бачыць або правіць Ñкладнікі назіранага, Ñ‚Ñ€Ñба $1.',
'watchnologin' => 'Без прадÑтаўленнÑ',
'watchnologintext' => 'Каб правіць Ñвой ÑÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½Ð°Ð³Ð°, Ñ‚Ñ€Ñба [[Special:UserLogin|ўвайÑці Ñž ÑÑ–ÑÑ‚Ñму]].',
-'addedwatch' => 'ДапіÑана да назіранага',
+'addwatch' => 'Дадаць у назіранае',
'addedwatchtext' => "Старонка \"[[:\$1]]\" была дададзена да [[Special:Watchlist|назіраных]] вамі.
ЗмÑненні, ÑÐºÑ–Ñ Ð°Ð´Ð±ÑƒÐ´ÑƒÑ†Ñ†Ð° з гÑтай Ñтаронкай Ñ– з Размовай пра Ñе, будуць паказвацца там, Ñ– Ñтаронка будзе '''вылучацца шрыфтам''' у [[Special:RecentChanges|ÑпіÑе нÑдаўніх змÑненнÑÑž]], каб лÑгчÑй пазнаваць Ñе.
Калі вы не пажадаеце больш назіраць за гÑтай Ñтаронкай, націÑніце \"Ðе назіраць\" у бакоўцы.",
-'removedwatch' => 'ВынÑта Ñа ÑпіÑу назіранага',
'removedwatchtext' => 'Старонка "[[:$1]]" была вынÑÑ‚Ð°Ñ Ð· вашага [[Special:Watchlist|ÑпіÑу назіранага]].',
'watch' => 'Ðазіраць',
'watchthispage' => 'Ðазіраць за гÑтай Ñтаронкай',
@@ -1864,11 +1899,11 @@ $NEWPAGE
СіÑÑ‚Ñма апавÑшчÑннÑÑž {{SITENAME}}
--
-ÐаÑтаўленні ÑпіÑу назіранага: {{fullurl:{{#special:Watchlist}}/edit}}
+ÐаÑтаўленні ÑпіÑу назіранага: {{canonicalurl:{{#special:EditWatchlist}}}}
ВынÑцце Ñтаронкі з ліку назіраных: $UNWATCHURL
-Ð—Ð²Ð°Ñ€Ð¾Ñ‚Ð½Ð°Ñ ÑувÑзь Ñ– Ð´Ð°Ð»ÐµÐ¹ÑˆÐ°Ñ Ð´Ð°Ð¿Ð°Ð¼Ð¾Ð³Ð°: {{fullurl:{{MediaWiki:Helppage}}}}',
+Ð—Ð²Ð°Ñ€Ð¾Ñ‚Ð½Ð°Ñ ÑувÑзь Ñ– Ð´Ð°Ð»ÐµÐ¹ÑˆÐ°Ñ Ð´Ð°Ð¿Ð°Ð¼Ð¾Ð³Ð°: {{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Сцерці Ñтаронку',
@@ -1884,7 +1919,7 @@ $NEWPAGE
Пацвердзіце Ñвой намер зрабіць гÑта, Ñваё разуменне наÑтупÑтваў, Ñ– што вы робіце гÑта Ñž адпаведнаÑці з [[{{MediaWiki:Policy-url}}|палітыкай (аÑноўнымі правіламі)]].',
'actioncomplete' => 'Завершана аперацыÑ',
'actionfailed' => 'Памылка дзеÑннÑ',
-'deletedtext' => '"<nowiki>$1</nowiki>" было выдалена.
+'deletedtext' => '"$1" было выдалена.
Бач $2 па журнал нÑдаўніх выдаленнÑÑž.',
'deletedarticle' => 'Ñцёрты "[[$1]]"',
'suppressedarticle' => 'падаўлены "[[$1]]"',
@@ -1935,7 +1970,7 @@ $NEWPAGE
'protect_expiry_invalid' => 'Ðедапушчальны Ñ‡Ð°Ñ ÑканчÑннÑ.',
'protect_expiry_old' => 'Ð§Ð°Ñ ÑканчÑÐ½Ð½Ñ â€” у мінулым.',
'protect-unchain-permissions' => 'Ðдкрыць падрабÑÐ·Ð½Ñ‹Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð°Ñці аховы',
-'protect-text' => "Тут можна пабачыць Ñ– паправіць узровень аховы Ð´Ð»Ñ Ñтаронкі '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Тут можна пабачыць Ñ– паправіць узровень аховы Ð´Ð»Ñ Ñтаронкі '''$1'''.",
'protect-locked-blocked' => "Ð’Ñ‹ заблакаваны Ñ– не можаце мÑнÑць узроўнÑÑž аховы. ВоÑÑŒ Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ð½Ð°Ñтаўленні Ð´Ð»Ñ Ñтаронкі '''$1''':",
'protect-locked-dblock' => "Ðемагчыма мÑнÑць узроўні аховы, таму што база даных зараз зачынена.
ВоÑÑŒ Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ Ð½Ð°Ñтаўленні аховы Ð´Ð»Ñ Ñтаронкі '''$1''':",
@@ -2073,13 +2108,14 @@ $1',
'whatlinkshere-filters' => 'Фільтры',
# Block/unblock
+'block' => 'Заблакаваць удзельніка',
+'unblock' => 'Разблакаваць удзельніка',
'blockip' => 'Заблакаваць удзельніка',
'blockip-title' => 'Заблакаваць удзельніка',
'blockip-legend' => 'Заблакаваць удзельніка',
'blockiptext' => 'ГÑÑ‚Ñ‹ фармулÑÑ€ дазвалÑе заблакаваць магчымаÑць запіÑу Ð´Ð»Ñ Ð¿Ñўнага адраÑу IP ці Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°.
ГÑта Ñ‚Ñ€Ñба рабіць толькі Ð´Ð·ÐµÐ»Ñ Ð·Ð°ÑÑ†ÐµÑ€Ð°Ð³Ð°Ð½Ð½Ñ Ð°Ð´ вандалізму Ñ– Ñž адпаведнаÑці з [[{{MediaWiki:Policy-url}}|правіламі]].
ÐіжÑй Ñ‚Ñ€Ñба ўпіÑаць канкрÑтную прычыну (напрыклад, пералічваючы канкрÑÑ‚Ð½Ñ‹Ñ Ñтаронкі, ÑÐºÑ–Ñ Ð±Ñ‹Ð»Ñ– вандалізаваныÑ).',
-'ipaddress' => 'ÐÐ´Ñ€Ð°Ñ IP',
'ipadressorusername' => 'IP-Ð°Ð´Ñ€Ð°Ñ Ñ†Ñ– Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°:',
'ipbexpiry' => 'ЗгаÑае:',
'ipbreason' => 'Прычына:',
@@ -2092,7 +2128,6 @@ $1',
** ÐÐµÐºÑƒÐ»ÑŒÑ‚ÑƒÑ€Ð½Ñ‹Ñ Ð¿Ð°Ð²Ð¾Ð´Ð·Ñ–Ð½Ñ‹/пераÑледаванне
** Злоўжыванне некалькімі рахункамі
** Ðедапушчальнае Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°',
-'ipbanononly' => 'Блакаваць толькі ананімных удзельнікаў',
'ipbcreateaccount' => 'Ðе дазвалÑць ÑтварÑнне рахунка',
'ipbemailban' => 'Ðе дазвалÑць удзельніку Ñлаць Ñл.пошту',
'ipbenableautoblock' => 'Ðўтаматычна блакаваць Ð°Ð´Ñ€Ð°Ñ IP, Ñкім удзельнік карыÑтаўÑÑ Ð°Ð¿Ð¾ÑˆÐ½Ñ–Ð¼ разам, Ñ– ÑžÑе наÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ð°Ð´Ñ€Ð°ÑÑ‹ IP, з-пад Ñкіх ён паÑпрабуе рабіць праўкі',
@@ -2103,7 +2138,6 @@ $1',
'ipbotherreason' => 'ІншаÑ/Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ð¿Ñ€Ñ‹Ñ‡Ñ‹Ð½Ð°:',
'ipbhidename' => 'Ðе паказваць Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ° Ñž гіÑторыÑÑ… правак Ñ– Ñž ÑпіÑах',
'ipbwatchuser' => 'Ðазіраць улаÑную Ñ– размоўную Ñтаронкі гÑтага ўдзельніка',
-'ipballowusertalk' => 'ДазвалÑць удзельніку правіць улаÑную размоўную Ñтаронку, калі Ñам удзельнік заблакаваны',
'ipb-change-block' => 'ЗмÑніць наÑтаўленні Ð±Ð»Ð°ÐºÐ°Ð²Ð°Ð½Ð½Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°',
'badipaddress' => 'Ðедапушчальны Ð°Ð´Ñ€Ð°Ñ IP',
'blockipsuccesssub' => 'ПаÑпÑховае блакаванне',
@@ -2119,14 +2153,13 @@ $1',
'ipusubmit' => 'ЗнÑць гÑÑ‚Ñ‹ блок',
'unblocked' => '[[User:$1|$1]] быў адблакаваны',
'unblocked-id' => 'Блок $1 быў знÑÑ‚Ñ‹',
+'blocklist' => 'Ð—Ð°Ð±Ð»Ð°ÐºÐ°Ð²Ð°Ð½Ñ‹Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÑ–',
'ipblocklist' => 'УÑе Ð·Ð°Ð±Ð»Ð°ÐºÐ°Ð²Ð°Ð½Ñ‹Ñ IP-адраÑÑ‹ Ñ– ўдзельнікі',
'ipblocklist-legend' => 'ЗнайÑці заблакаванага ўдзельніка',
-'ipblocklist-username' => 'Удзельнік або Ð°Ð´Ñ€Ð°Ñ IP:',
-'ipblocklist-sh-userblocks' => '$1 блокаў на рахунак',
-'ipblocklist-sh-tempblocks' => '$1 тымчаÑовых блокаў',
-'ipblocklist-sh-addressblocks' => '$1 блокаў на адзінкавы IP',
+'blocklist-addressblocks' => 'Схаваць блакаванні аÑобных IP',
+'blocklist-target' => 'ÐœÑта',
+'blocklist-reason' => 'Прычына',
'ipblocklist-submit' => 'Шукаць',
-'blocklistline' => '$1, $2 заблакаваны $3 ($4)',
'infiniteblock' => 'бÑÑконца',
'expiringblock' => 'канчаецца $1 $2',
'anononlyblock' => 'толькі ананімы',
@@ -2144,7 +2177,7 @@ $1',
'blocklogpage' => 'Журнал блокаў',
'blocklogentry' => 'паÑтаўлены блок на "[[$1]]", з чаÑам Ñ‚Ñ€Ñ‹Ð²Ð°Ð½Ð½Ñ $2 $3',
'reblock-logentry' => 'Ð·Ð¼ÐµÐ½ÐµÐ½Ñ‹Ñ Ð½Ð°Ñтаўленні блока Ð´Ð»Ñ [[$1]] з чаÑам згаÑÐ°Ð½Ð½Ñ $2 $3',
-'blocklogtext' => 'Журнал паÑтаноўкі Ñ– Ð·Ð´Ñ‹Ð¼Ð°Ð½Ð½Ñ Ð±Ð»Ð¾ÐºÐ°Ñž. Ðўтаматычна Ð±Ð»Ð°ÐºÐ°Ð²Ð°Ð½Ñ‹Ñ Ð°Ð´Ñ€Ð°ÑÑ‹ IP тут не паказваюцца. Ð¡Ð¿Ñ–Ñ Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ… забарон Ñ– блокаў бач у [[Special:IPBlockList|ÑпіÑе блокаў IP]].',
+'blocklogtext' => 'Журнал паÑтаноўкі Ñ– Ð·Ð´Ñ‹Ð¼Ð°Ð½Ð½Ñ Ð±Ð»Ð¾ÐºÐ°Ñž. Ðўтаматычна Ð±Ð»Ð°ÐºÐ°Ð²Ð°Ð½Ñ‹Ñ Ð°Ð´Ñ€Ð°ÑÑ‹ IP тут не паказваюцца. Ð¡Ð¿Ñ–Ñ Ð°ÐºÑ‚ÑƒÐ°Ð»ÑŒÐ½Ñ‹Ñ… забарон Ñ– блокаў бач у [[Special:BlockList|ÑпіÑе блокаў IP]].',
'unblocklogentry' => 'знÑÑ‚Ñ‹ блок з $1',
'block-log-flags-anononly' => 'толькі Ð°Ð½Ð°Ð½Ñ–Ð¼Ð½Ñ‹Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÑ–',
'block-log-flags-nocreate' => 'ÑтварÑнне рахунку не дазволена',
@@ -2158,8 +2191,7 @@ $1',
'ipb_expiry_temp' => 'Ð¡ÐºÑ€Ñ‹Ñ‚Ñ‹Ñ Ð±Ð»Ð¾ÐºÑ– на імёны ўдзельнікаў муÑÑць быць Ñталымі.',
'ipb_hide_invalid' => 'Ðемагчыма заглушыць гÑÑ‚Ñ‹ рахунак; магчыма, Ð´Ð»Ñ Ñго маецца зашмат правак.',
'ipb_already_blocked' => '"$1" ужо знаходзіцца пад блокам',
-'ipb-needreblock' => '== Дзейнічае блок ==
-$1 ужо знаходзіцца пад блокам. Ці жадаеце змÑніць наÑтаўленні блока?',
+'ipb-needreblock' => '$1 ужо знаходзіцца пад блокам. Ці жадаеце змÑніць наÑтаўленні блока?',
'ipb_cant_unblock' => 'Памылка: не знойдзены блок з ID $1. Магчыма, ён ўжо быў знÑÑ‚Ñ‹.',
'ipb_blocked_as_range' => 'Ðельга знÑць блок з IP-адраÑу $1, таму што ён заблакаваны не наўпроÑÑ‚, але Ñк чаÑтка абÑÑгу $2; той абÑÑг, у Ñваю чаргу, можна разблакоўваць.',
'ip_range_invalid' => 'ÐÑправільны абÑÑг IP.',
@@ -2434,9 +2466,7 @@ $1 ужо знаходзіцца пад блокам. Ці жадаеце змÑ
'monobook.js' => '/* Any JavaScript here will be loaded for users using the MonoBook skin */',
# Metadata
-'nodublincore' => 'ÐœÐµÑ‚Ð°Ð´Ð°Ð½Ñ‹Ñ Ñž Ñхеме Dublin Core RDF на гÑтым Ñерверы не дазволены.',
-'nocreativecommons' => 'ÐœÐµÑ‚Ð°Ð´Ð°Ð½Ñ‹Ñ Creative Commons RDF на гÑтым Ñерверы не апрацоўваюцца.',
-'notacceptable' => 'Сервер Вікі не можа прапанаваць даных у фармаце, зразумелым Ð´Ð»Ñ Ð²Ð°ÑˆÐ°Ð¹ кліенцкай праграмы.',
+'notacceptable' => 'Сервер Вікі не можа прапанаваць даных у фармаце, зразумелым Ð´Ð»Ñ Ð²Ð°ÑˆÐ°Ð¹ кліенцкай праграмы.',
# Attribution
'anonymous' => 'Ðнанімны{{PLURAL:$1| ўдзельнік|Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÑ–}} на плÑцоўцы {{SITENAME}}',
@@ -2459,12 +2489,8 @@ $1 ужо знаходзіцца пад блокам. Ці жадаеце змÑ
'spam_blanking' => 'УÑе верÑÑ–Ñ– ўтрымлівалі ÑпаÑылкі на $1, чыÑцім',
# Info page
-'infosubtitle' => 'Ð†Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ Ð¿Ñ€Ð° Ñтаронку',
-'numedits' => 'КолькаÑць правак (у Ñ‚ÑкÑце): $1',
-'numtalkedits' => 'КолькаÑць правак (у размове): $1',
-'numwatchers' => 'КолькаÑць назіральнікаў: $1',
-'numauthors' => 'КолькаÑць розных аўтараў (у Ñ‚ÑкÑце): $1',
-'numtalkauthors' => 'КолькаÑць розных аўтараў (у размове): $1',
+'pageinfo-subjectpage' => 'Старонка',
+'pageinfo-talkpage' => 'Старонка размоў',
# Skin names
'skinname-standard' => 'КлаÑіка',
@@ -2476,25 +2502,6 @@ $1 ужо знаходзіцца пад блокам. Ці жадаеце змÑ
'skinname-simple' => 'ПроÑта',
'skinname-modern' => 'СучаÑнаÑць',
-# Math options
-'mw_math_png' => 'ЗаўÑёды выраблÑць PNG',
-'mw_math_simple' => 'HTML калі вельмі проÑтае, іначай PNG',
-'mw_math_html' => 'HTML калі магчыма, іначай PNG',
-'mw_math_source' => 'Пакідаць у выглÑдзе TeX (Ð´Ð»Ñ Ñ‚ÑкÑтавых браўзераў)',
-'mw_math_modern' => 'РÑкамендуецца Ð´Ð»Ñ ÑучаÑных браўзераў',
-'mw_math_mathml' => 'MathML калі магчыма (ÑкÑперыментальнае)',
-
-# Math errors
-'math_failure' => 'Ðе ўдалоÑÑ Ñ€Ð°Ð·Ð°Ð±Ñ€Ð°Ñ†ÑŒ',
-'math_unknown_error' => 'невÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°',
-'math_unknown_function' => 'невÑÐ´Ð¾Ð¼Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ',
-'math_lexing_error' => 'лекÑÑ–Ñ‡Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°',
-'math_syntax_error' => 'памылка ÑінтакÑÑ–Ñу',
-'math_image_error' => 'Ðе ўдалоÑÑ Ð¿ÐµÑ€Ð°Ñ‚Ð²Ð°Ñ€Ñ‹Ñ†ÑŒ PNG; праверце правільнаÑць уÑтаноўкі пакетаў latex Ñ– dvipng (або dvips Ñ– gs Ñ– convert)',
-'math_bad_tmpdir' => 'Ðемагчыма запіÑаць у або Ñтварыць тымчаÑовы каталог Ð´Ð»Ñ Ð¼Ð°Ñ‚Ñматыкі',
-'math_bad_output' => 'Ðемагчыма запіÑаць у або Ñтварыць выводны каталог Ð´Ð»Ñ Ð¼Ð°Ñ‚Ñматыкі',
-'math_notexvc' => 'Ðе знойдзены выканальны модуль texvc; аб Ñго наÑтаўленнÑÑ… чытайце Ñž math/README.',
-
# Patrolling
'markaspatrolleddiff' => 'Пазначыць Ñк ухваленае',
'markaspatrolledtext' => 'Пазначыць Ñтаронку Ñк ухваленую',
@@ -2539,7 +2546,6 @@ $1',
'file-nohires' => '<small>Без верÑÑ–Ñ– Ñž лепшым разрозненні.</small>',
'svg-long-desc' => "файл SVG, намінальна $1 × $2 кропак, аб'ём файла: $3",
'show-big-image' => 'Ðайлепшае разрозненне',
-'show-big-image-thumb' => '<small>Памеры гÑтага перадпаказу: $1 × $2 кропак</small>',
'file-info-gif-looped' => 'закальцаваныÑ',
'file-info-gif-frames' => '$1 {{PLURAL:$1|кадр|кадраў}}',
'file-info-png-looped' => 'бÑÑконца',
@@ -2576,7 +2582,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'ШырынÑ',
@@ -2588,13 +2600,11 @@ $1',
'exif-ycbcrpositioning' => 'РазмÑшчÑнне Y Ñ– C',
'exif-xresolution' => 'Гарызантальнае разрозненне',
'exif-yresolution' => 'Вертыкальнае разрозненне',
-'exif-resolutionunit' => 'Ðдзінка вымÑÑ€ÑÐ½Ð½Ñ Ñ€Ð°Ð·Ñ€Ð¾Ð·Ð½ÐµÐ½Ð½ÑÑž X Ñ– Y',
'exif-stripoffsets' => 'ВодÑтуп палоÑаў выÑвы',
'exif-rowsperstrip' => 'Радкоў на палаÑу',
'exif-stripbytecounts' => 'Байтаў на ÑціÑнутую палаÑу',
'exif-jpeginterchangeformat' => 'ВодÑтуп пачатку даных JPEG (SOI)',
'exif-jpeginterchangeformatlength' => 'байтаў даных JPEG',
-'exif-transferfunction' => 'Ð¤ÑƒÐ½ÐºÑ†Ñ‹Ñ Ð¿ÐµÑ€Ð°Ð½Ð¾Ñу',
'exif-ycbcrcoefficients' => 'КаÑфіцыенты матрыцы пераўтварÑÐ½Ð½Ñ ÐºÐ°Ð»Ñровай праÑторы',
'exif-referenceblackwhite' => 'Пара апорных велічынÑÑž, Ð±ÐµÐ»Ð°Ñ Ñ– чорнаÑ',
'exif-datetime' => 'Дата Ñ– Ñ‡Ð°Ñ Ð·Ð¼ÑÐ½ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ð°',
@@ -2611,7 +2621,6 @@ $1',
'exif-compressedbitsperpixel' => 'Лад ÑціÑÐºÐ°Ð½Ð½Ñ Ð²Ñ‹Ñвы',
'exif-pixelydimension' => 'Ð”Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð»ÑŒÐ½Ð°Ñ ÑˆÑ‹Ñ€Ñ‹Ð½Ñ Ð²Ñ‹Ñвы',
'exif-pixelxdimension' => 'Ð”Ð°Ð¿ÑƒÑˆÑ‡Ð°Ð»ÑŒÐ½Ð°Ñ Ð²Ñ‹ÑˆÑ‹Ð½Ñ Ð²Ñ‹Ñвы',
-'exif-makernote' => 'Заўвагі вытворцы',
'exif-usercomment' => 'Заўвагі карыÑтальніка',
'exif-relatedsoundfile' => 'Дачынены гукавы файл',
'exif-datetimeoriginal' => 'Дата Ñ– Ñ‡Ð°Ñ ÑтварÑÐ½Ð½Ñ Ð´Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ…',
@@ -2625,7 +2634,6 @@ $1',
'exif-exposureprogram' => 'Лад вытрымкі',
'exif-spectralsensitivity' => 'Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ð°Ð´Ñ‡ÑƒÐ²Ð°Ð»ÑŒÐ½Ð°Ñць',
'exif-isospeedratings' => 'ÐšÐ»Ð°Ñ Ñ…ÑƒÑ‚ÐºÐ°Ñці ISO',
-'exif-oecf' => 'Множнік оптаÑлектроннага ператварÑннÑ',
'exif-shutterspeedvalue' => 'ХуткаÑць форткі*',
'exif-aperturevalue' => 'Ðпертура',
'exif-brightnessvalue' => 'ЯркаÑць',
@@ -2645,7 +2653,6 @@ $1',
'exif-sensingmethod' => 'Метад вымÑÑ€ÑннÑ',
'exif-filesource' => 'Крыніца файла',
'exif-scenetype' => 'Тып прадмета',
-'exif-cfapattern' => 'МаÑÑ–Ñž колеравых фільтраў (CFA pattern)',
'exif-customrendered' => 'ÐдмыÑÐ»Ð¾Ð²Ð°Ñ Ð°Ð¿Ñ€Ð°Ñ†Ð¾ÑžÐºÐ° выÑвы',
'exif-exposuremode' => 'РÑжым вытрымкі',
'exif-whitebalance' => 'Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð°Ð³Ð°',
@@ -2690,6 +2697,8 @@ $1',
'exif-gpsareainformation' => 'Ðазва мÑÑцоваÑці GPS',
'exif-gpsdatestamp' => 'Дата GPS',
'exif-gpsdifferential' => 'ДыферÑнцыÑÐ»ÑŒÐ½Ð°Ñ ÐºÐ°Ñ€ÑÐºÑ†Ñ‹Ñ GPS',
+'exif-keywords' => 'ÐšÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы',
+'exif-label' => 'ЦÑтлік',
# EXIF attributes
'exif-compression-1' => 'ÐÑÑціÑнута',
@@ -2824,21 +2833,22 @@ $1',
'exif-gpsspeed-m' => 'мілÑÑž за гадзіну',
'exif-gpsspeed-n' => 'вузлоў',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Кіламетры',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Ñапраўдны азімут',
'exif-gpsdirection-m' => 'магнітны азімут',
# External editor support
'edit-externally' => 'Правіць файл у вонкавай праграме',
-'edit-externally-help' => '(Гл. падрабÑзней [http://www.mediawiki.org/wiki/Manual:External_editors пра наÑтаўлÑнне Ñтаронніх праграм-Ñ€Ñдактараў])',
+'edit-externally-help' => '(Гл. падрабÑзней [//www.mediawiki.org/wiki/Manual:External_editors пра наÑтаўлÑнне Ñтаронніх праграм-Ñ€Ñдактараў])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'уÑе',
-'imagelistall' => 'уÑе',
-'watchlistall2' => 'уÑе',
-'namespacesall' => 'уÑе',
-'monthsall' => 'уÑе',
-'limitall' => 'уÑе',
+'watchlistall2' => 'уÑе',
+'namespacesall' => 'уÑе',
+'monthsall' => 'уÑе',
+'limitall' => 'уÑе',
# E-mail address confirmation
'confirmemail' => 'Пацвердзіць Ð°Ð´Ñ€Ð°Ñ Ñл.пошты',
@@ -2948,12 +2958,12 @@ $1',
'watchlistedit-noitems' => 'Ðічога не назіраецца.',
'watchlistedit-normal-title' => 'Ð¡Ð¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½Ð°Ð³Ð°',
'watchlistedit-normal-legend' => 'Выйманне Ñкладнікаў з назіранага',
-'watchlistedit-normal-explain' => 'Ðазвы Ñтаронак з ліку назіраных Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ð½Ñ–Ð¶Ñй. Каб нешта Ñцерці, адзначце клетку побач з адпаведным радком, паÑÐ»Ñ Ñ‡Ð°Ð³Ð¾ націÑніце "ВынÑць Ñкладнікі". ТакÑама можна правіць гÑÑ‚Ñ‹ ÑÐ¿Ñ–Ñ Ð½ÐµÐ¿Ð°ÑÑ€Ñдна, [[Special:Watchlist/raw|без афармленнÑ]].',
+'watchlistedit-normal-explain' => 'Ðазвы Ñтаронак з ліку назіраных Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ð½Ñ–Ð¶Ñй. Каб нешта Ñцерці, адзначце клетку побач з адпаведным радком, паÑÐ»Ñ Ñ‡Ð°Ð³Ð¾ націÑніце "ВынÑць Ñкладнікі". ТакÑама можна правіць гÑÑ‚Ñ‹ ÑÐ¿Ñ–Ñ Ð½ÐµÐ¿Ð°ÑÑ€Ñдна, [[Special:EditWatchlist/raw|без афармленнÑ]].',
'watchlistedit-normal-submit' => 'ВынÑць Ñкладнікі',
'watchlistedit-normal-done' => 'З назіранага вынÑÑ‚Ñ‹{{PLURAL:$1| 1 Ñкладнік|Ñ $1 Ñкладнікаў}}:',
'watchlistedit-raw-title' => 'Ðефарматаваны ÑÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½Ð°Ð³Ð°',
'watchlistedit-raw-legend' => 'Праца з нефарматаваным ÑпіÑам назіранага',
-'watchlistedit-raw-explain' => 'Ðазвы Ñтаронак з ліку назіраных Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ð½Ñ–Ð¶Ñй, без афармленнÑ, адна назва на адзін радок; такім чынам, ÑÐ¿Ñ–Ñ Ð¼Ð¾Ð¶Ð½Ð° правіць Ñк звычайны Ñ‚ÑкÑÑ‚. Па ÑканчÑнні націÑніце "{{int:Watchlistedit-raw-submit}}". ТакÑама гÑта можна зрабіць праз [[Special:Watchlist/edit|Ñтандартны інтÑрфейÑ]].',
+'watchlistedit-raw-explain' => 'Ðазвы Ñтаронак з ліку назіраных Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ð½Ñ–Ð¶Ñй, без афармленнÑ, адна назва на адзін радок; такім чынам, ÑÐ¿Ñ–Ñ Ð¼Ð¾Ð¶Ð½Ð° правіць Ñк звычайны Ñ‚ÑкÑÑ‚. Па ÑканчÑнні націÑніце "{{int:Watchlistedit-raw-submit}}". ТакÑама гÑта можна зрабіць праз [[Special:EditWatchlist|Ñтандартны інтÑрфейÑ]].',
'watchlistedit-raw-titles' => 'Ðазвы:',
'watchlistedit-raw-submit' => 'Ðбнавіць Ðазіранае',
'watchlistedit-raw-done' => 'Ð¡Ð¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½Ð°Ð³Ð° абноўлены.',
@@ -2970,33 +2980,33 @@ $1',
'duplicate-defaultsort' => 'Увага: Ð¿Ñ€Ð°Ð´Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°Ñ ÐºÐ»Ð°Ð²Ñ–ÑˆÐ° ÑžÐ¿Ð°Ñ€Ð°Ð´ÐºÐ°Ð²Ð°Ð½Ð½Ñ "$2" замÑніла ранейшую такую клавішу "$1".',
# Special:Version
-'version' => 'ВерÑÑ–Ñ',
-'version-extensions' => 'УÑÑ‚Ð°Ð½Ð¾ÑžÐ»ÐµÐ½Ñ‹Ñ Ð¿Ñ€Ñ‹Ñтаўкі',
-'version-specialpages' => 'ÐдмыÑÐ»Ð¾Ð²Ñ‹Ñ Ñтаронкі',
-'version-parserhooks' => 'Хукі парÑера',
-'version-variables' => 'ЗменныÑ',
-'version-skins' => 'Вокладкі',
-'version-other' => 'Рознае',
-'version-mediahandlers' => 'Ðпрацоўнікі мультымедый',
-'version-hooks' => 'Хукі',
-'version-extension-functions' => 'Функцыі прыÑтаўкі',
-'version-parser-extensiontags' => 'Тагі прыÑтаўкі да парÑера',
-'version-parser-function-hooks' => 'Хукі функцый парÑера',
-'version-skin-extension-functions' => 'Функцыі пашырÑÐ½Ð½Ñ Ð²Ð¾ÐºÐ»Ð°Ð´ÐºÑ–',
-'version-hook-name' => 'Ðазва хука',
-'version-hook-subscribedby' => 'Сюды падпіÑаныÑ',
-'version-version' => '(ВерÑÑ–Ñ $1)',
-'version-license' => 'ЛіцÑнзіÑ',
-'version-poweredby-credits' => "ПлÑцоўка працуе на '''[http://www.mediawiki.org/ MediaWiki]''', капірайт © 2001-$1 $2.",
-'version-poweredby-others' => 'іншыÑ',
-'version-license-info' => "MediaWiki з'ÑўлÑецца Ñвабодным праграмным забеÑпÑчÑннем. Такім чынам, вы можаце паўторна раÑпаўÑюджваць прадукт Ñ–(або) змÑнÑць Ñго на ўмовах Ð¿Ð°Ð³Ð°Ð´Ð½ÐµÐ½Ð½Ñ GNU General Public License у тым выглÑдзе, у Ñкім Ñно публікуецца фондам Free Software Foundation; Ñілу мае верÑÑ–Ñ (выпуÑк) 2 гÑтага Ð¿Ð°Ð³Ð°Ð´Ð½ÐµÐ½Ð½Ñ Ð°Ð±Ð¾, на ваш выбар, Ð½Ð°Ð²ÐµÐ¹ÑˆÐ°Ñ Ð²ÐµÑ€ÑÑ–Ñ (выпуÑк) пагадненнÑ.
+'version' => 'ВерÑÑ–Ñ',
+'version-extensions' => 'УÑÑ‚Ð°Ð½Ð¾ÑžÐ»ÐµÐ½Ñ‹Ñ Ð¿Ñ€Ñ‹Ñтаўкі',
+'version-specialpages' => 'ÐдмыÑÐ»Ð¾Ð²Ñ‹Ñ Ñтаронкі',
+'version-parserhooks' => 'Хукі парÑера',
+'version-variables' => 'ЗменныÑ',
+'version-antispam' => 'Ðбарона ад Ñпаму',
+'version-skins' => 'Вокладкі',
+'version-other' => 'Рознае',
+'version-mediahandlers' => 'Ðпрацоўнікі мультымедый',
+'version-hooks' => 'Хукі',
+'version-extension-functions' => 'Функцыі прыÑтаўкі',
+'version-parser-extensiontags' => 'Тагі прыÑтаўкі да парÑера',
+'version-parser-function-hooks' => 'Хукі функцый парÑера',
+'version-hook-name' => 'Ðазва хука',
+'version-hook-subscribedby' => 'Сюды падпіÑаныÑ',
+'version-version' => '(ВерÑÑ–Ñ $1)',
+'version-license' => 'ЛіцÑнзіÑ',
+'version-poweredby-credits' => "ПлÑцоўка працуе на '''[//www.mediawiki.org/ MediaWiki]''', капірайт © 2001-$1 $2.",
+'version-poweredby-others' => 'іншыÑ',
+'version-license-info' => "MediaWiki з'ÑўлÑецца Ñвабодным праграмным забеÑпÑчÑннем. Такім чынам, вы можаце паўторна раÑпаўÑюджваць прадукт Ñ–(або) змÑнÑць Ñго на ўмовах Ð¿Ð°Ð³Ð°Ð´Ð½ÐµÐ½Ð½Ñ GNU General Public License у тым выглÑдзе, у Ñкім Ñно публікуецца фондам Free Software Foundation; Ñілу мае верÑÑ–Ñ (выпуÑк) 2 гÑтага Ð¿Ð°Ð³Ð°Ð´Ð½ÐµÐ½Ð½Ñ Ð°Ð±Ð¾, на ваш выбар, Ð½Ð°Ð²ÐµÐ¹ÑˆÐ°Ñ Ð²ÐµÑ€ÑÑ–Ñ (выпуÑк) пагадненнÑ.
MediaWiki раÑпаўÑюджваецца, ÑпадзеючыÑÑ Ð½Ð° прыдатнаÑць прадукта, але БЕЗ ЯКІХ-ÐЕБУДЗЬ ГÐРÐÐТЫЙ, у тым ліку, без імплікаваных гарантый СПÐЖЫВЕЦКÐЙ Ð’ÐРТÐСЦІ або ПРЫДÐТÐÐСЦІ ДЛЯ ЯКОЙ-ÐЕБУДЗЬ МЭТЫ. Больш падрабÑзна гл. пагадненне GNU General Public License.
-Разам з гÑтым праграмным забеÑпÑчÑннем вы павінны былі атрымаць [{{SERVER}}{{SCRIPTPATH}}/COPYING копію Ð¿Ð°Ð³Ð°Ð´Ð½ÐµÐ½Ð½Ñ GNU General Public License]. Калі гÑта не так, паведамце аб гÑтым у фонд Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA або [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html атрымайце Ñе з ІнтÑрнÑту].",
-'version-software' => 'УÑÑ‚Ð°Ð½Ð¾ÑžÐ»ÐµÐ½Ñ‹Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ð´ÑƒÐºÑ‚Ñ‹',
-'version-software-product' => 'Прадукт',
-'version-software-version' => 'ВерÑÑ–Ñ',
+Разам з гÑтым праграмным забеÑпÑчÑннем вы павінны былі атрымаць [{{SERVER}}{{SCRIPTPATH}}/COPYING копію Ð¿Ð°Ð³Ð°Ð´Ð½ÐµÐ½Ð½Ñ GNU General Public License]. Калі гÑта не так, паведамце аб гÑтым у фонд Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA або [//www.gnu.org/licenses/old-licenses/gpl-2.0.html атрымайце Ñе з ІнтÑрнÑту].",
+'version-software' => 'УÑÑ‚Ð°Ð½Ð¾ÑžÐ»ÐµÐ½Ñ‹Ñ Ð¿Ñ€Ð°Ð³Ñ€Ð°Ð¼Ð½Ñ‹Ñ Ð¿Ñ€Ð°Ð´ÑƒÐºÑ‚Ñ‹',
+'version-software-product' => 'Прадукт',
+'version-software-version' => 'ВерÑÑ–Ñ',
# Special:FilePath
'filepath' => 'ШлÑÑ… да файла',
@@ -3007,9 +3017,7 @@ MediaWiki раÑпаўÑюджваецца, ÑпадзеючыÑÑ Ð½Ð° прыд
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Пошук дублікатных файлаў',
-'fileduplicatesearch-summary' => 'Пошук дублікатных файлах на падÑтаве Ñ–Ñ… Ñ…Ñшаў.
-
-Упішыце назву файла без прыÑтаўкі "{{ns:file}}:".',
+'fileduplicatesearch-summary' => 'Пошук дублікатных файлах на падÑтаве Ñ–Ñ… Ñ…Ñшаў.',
'fileduplicatesearch-legend' => 'ЗнайÑці дублікаты',
'fileduplicatesearch-filename' => 'Ðазва файла:',
'fileduplicatesearch-submit' => 'ЗнайÑці',
diff --git a/languages/messages/MessagesBe_tarask.php b/languages/messages/MessagesBe_tarask.php
index d38872ed..62df6534 100644
--- a/languages/messages/MessagesBe_tarask.php
+++ b/languages/messages/MessagesBe_tarask.php
@@ -180,60 +180,60 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ДвайныÑ_перанакіраваньні' ),
+ 'Allmessages' => array( 'СыÑÑ‚ÑмныÑ_паведамленьні' ),
+ 'Allpages' => array( 'УÑе_Ñтаронкі' ),
+ 'Ancientpages' => array( 'ÐайÑтарÑйшыÑ_Ñтаронкі' ),
+ 'Block' => array( 'БлÑкаваньне' ),
'BrokenRedirects' => array( 'ÐекарÑктныÑ_перанакіраваньні' ),
- 'Disambiguations' => array( 'ÐеадназначнаÑьці' ),
+ 'Categories' => array( 'КатÑгорыі' ),
+ 'ChangePassword' => array( 'ЗьмÑніць_пароль', 'ÐчыÑьціць_пароль' ),
+ 'Contributions' => array( 'УнёÑак' ),
'CreateAccount' => array( 'Стварыць_рахунак' ),
- 'Watchlist' => array( 'СьпіÑ_назіраньнÑ' ),
- 'Recentchanges' => array( 'ÐпошніÑ_зьмены' ),
- 'Upload' => array( 'Загрузка' ),
+ 'Deadendpages' => array( 'ТупіковыÑ_Ñтаронкі' ),
+ 'DeletedContributions' => array( 'Выдалены_ўнёÑак' ),
+ 'Disambiguations' => array( 'ÐеадназначнаÑьці' ),
+ 'DoubleRedirects' => array( 'ДвайныÑ_перанакіраваньні' ),
+ 'Emailuser' => array( 'ДаÑлаць_ліÑÑ‚' ),
+ 'Export' => array( 'ЭкÑпарт' ),
+ 'Filepath' => array( 'ШлÑÑ…_да_файла' ),
+ 'Import' => array( 'Імпарт' ),
+ 'LinkSearch' => array( 'Пошук_вонкавых_ÑпаÑылак' ),
+ 'Listadmins' => array( 'СьпіÑ_адмініÑтратараў' ),
+ 'Listbots' => array( 'СьпіÑ_робатаў' ),
'Listfiles' => array( 'СьпіÑ_файлаў' ),
- 'Newimages' => array( 'ÐовыÑ_файлы' ),
+ 'Listredirects' => array( 'СьпіÑ_перанакіраваньнÑÑž' ),
'Listusers' => array( 'СьпіÑ_удзельнікаў' ),
- 'Statistics' => array( 'СтатыÑтыка' ),
- 'Randompage' => array( 'ВыпадковаÑ_Ñтаронка' ),
+ 'Log' => array( 'Журналы_падзеÑÑž' ),
'Lonelypages' => array( 'Старонкі-Ñіраціны' ),
- 'Uncategorizedpages' => array( 'ÐекатÑгарызаваныÑ_Ñтаронкі' ),
+ 'Longpages' => array( 'ДоўгіÑ_Ñтаронкі' ),
+ 'MergeHistory' => array( 'ГіÑторыÑ_аб\'ÑднаньнÑÑž' ),
+ 'Mycontributions' => array( 'Мой_унёÑак' ),
+ 'Mypage' => array( 'МаÑ_Ñтаронка' ),
+ 'Mytalk' => array( 'Мае_размовы' ),
+ 'Newimages' => array( 'ÐовыÑ_файлы' ),
+ 'Newpages' => array( 'ÐовыÑ_Ñтаронкі' ),
+ 'Popularpages' => array( 'ПапулÑрныÑ_Ñтаронкі' ),
+ 'Protectedpages' => array( 'ÐбароненыÑ_Ñтаронкі' ),
+ 'Protectedtitles' => array( 'ЗабароненыÑ_Ñтаронкі' ),
+ 'Randompage' => array( 'ВыпадковаÑ_Ñтаронка' ),
+ 'Randomredirect' => array( 'Выпадковае_перанакіраваньне' ),
+ 'Recentchanges' => array( 'ÐпошніÑ_зьмены' ),
+ 'Search' => array( 'Пошук' ),
+ 'Shortpages' => array( 'КароткіÑ_Ñтаронкі' ),
+ 'Specialpages' => array( 'СпÑцыÑльныÑ_Ñтаронкі' ),
+ 'Statistics' => array( 'СтатыÑтыка' ),
'Uncategorizedcategories' => array( 'ÐекатÑгарызаваныÑ_катÑгорыі' ),
'Uncategorizedimages' => array( 'ÐекатÑгарызаваныÑ_файлы' ),
+ 'Uncategorizedpages' => array( 'ÐекатÑгарызаваныÑ_Ñтаронкі' ),
'Uncategorizedtemplates' => array( 'ÐекатÑгарызаваныÑ_шаблёны' ),
- 'Wantedpages' => array( 'ЗапатрабаваныÑ_Ñтаронкі', 'ÐекарÑктныÑ_ÑпаÑылкі' ),
+ 'Upload' => array( 'Загрузка' ),
+ 'Version' => array( 'Ð’ÑÑ€ÑÑ–Ñ' ),
'Wantedcategories' => array( 'ЗапатрабаваныÑ_катÑгорыі' ),
'Wantedfiles' => array( 'ЗапатрабаваныÑ_файлы' ),
+ 'Wantedpages' => array( 'ЗапатрабаваныÑ_Ñтаронкі', 'ÐекарÑктныÑ_ÑпаÑылкі' ),
'Wantedtemplates' => array( 'ЗапатрабаваныÑ_шаблёны' ),
- 'Shortpages' => array( 'КароткіÑ_Ñтаронкі' ),
- 'Longpages' => array( 'ДоўгіÑ_Ñтаронкі' ),
- 'Newpages' => array( 'ÐовыÑ_Ñтаронкі' ),
- 'Ancientpages' => array( 'ÐайÑтарÑйшыÑ_Ñтаронкі' ),
- 'Deadendpages' => array( 'ТупіковыÑ_Ñтаронкі' ),
- 'Protectedpages' => array( 'ÐбароненыÑ_Ñтаронкі' ),
- 'Protectedtitles' => array( 'ЗабароненыÑ_Ñтаронкі' ),
- 'Allpages' => array( 'УÑе_Ñтаронкі' ),
- 'Specialpages' => array( 'СпÑцыÑльныÑ_Ñтаронкі' ),
- 'Contributions' => array( 'УнёÑак' ),
- 'Emailuser' => array( 'ДаÑлаць_ліÑÑ‚' ),
+ 'Watchlist' => array( 'СьпіÑ_назіраньнÑ' ),
'Whatlinkshere' => array( 'СпаÑылкі_на_Ñтаронку' ),
- 'Categories' => array( 'КатÑгорыі' ),
- 'Export' => array( 'ЭкÑпарт' ),
- 'Version' => array( 'Ð’ÑÑ€ÑÑ–Ñ' ),
- 'Allmessages' => array( 'СыÑÑ‚ÑмныÑ_паведамленьні' ),
- 'Log' => array( 'Журналы_падзеÑÑž' ),
- 'Blockip' => array( 'БлÑкаваньне' ),
- 'Import' => array( 'Імпарт' ),
- 'Listredirects' => array( 'СьпіÑ_перанакіраваньнÑÑž' ),
- 'Randomredirect' => array( 'Выпадковае_перанакіраваньне' ),
- 'Mypage' => array( 'МаÑ_Ñтаронка' ),
- 'Mytalk' => array( 'Мае_размовы' ),
- 'Mycontributions' => array( 'Мой_унёÑак' ),
- 'Listadmins' => array( 'СьпіÑ_адмініÑтратараў' ),
- 'Listbots' => array( 'СьпіÑ_робатаў' ),
- 'Popularpages' => array( 'ПапулÑрныÑ_Ñтаронкі' ),
- 'Search' => array( 'Пошук' ),
- 'Resetpass' => array( 'ЗьмÑніць_пароль', 'ÐчыÑьціць_пароль' ),
- 'MergeHistory' => array( 'ГіÑторыÑ_аб\'ÑднаньнÑÑž' ),
- 'Filepath' => array( 'ШлÑÑ…_да_файла' ),
- 'LinkSearch' => array( 'Пошук_вонкавых_ÑпаÑылак' ),
- 'DeletedContributions' => array( 'Выдалены_ўнёÑак' ),
);
$separatorTransformTable = array(
@@ -281,8 +281,8 @@ $messages = array(
'tog-shownumberswatching' => 'Паказваць колькаÑьць назіральнікаў',
'tog-oldsig' => 'ЦÑперашні подпіÑ:',
'tog-fancysig' => 'Ðпрацоўваць Ð¿Ð¾Ð´Ð¿Ñ–Ñ Ñк вікі-Ñ‚ÑкÑÑ‚ (без аўтаматычнай ÑпаÑылкі)',
-'tog-externaleditor' => 'ВыкарыÑтоўваць вонкавы Ñ€Ñдактар па змоўчваньні (толькі Ð´Ð»Ñ Ð°Ð´Ð¼Ñ‹Ñлоўцаў, патрÑбуе ÑпÑцыÑльных наладак на вашым кампутары. [http://www.mediawiki.org/wiki/Manual:External_editors ПадрабÑзнаÑьці.])',
-'tog-externaldiff' => 'ВыкарыÑтоўваць вонкавую праграму Ð¿Ð°Ñ€Ð°ÑžÐ½Ð°Ð½ÑŒÐ½Ñ Ð²ÑÑ€ÑÑ–ÑÑž па змоўчваньні (толькі Ð´Ð»Ñ Ð°Ð´Ð¼Ñ‹Ñлоўцаў, патрÑбуе ÑпÑцыÑльных наладак на вашым кампутары. [http://www.mediawiki.org/wiki/Manual:External_editors ПадрабÑзнаÑьці.])',
+'tog-externaleditor' => 'ВыкарыÑтоўваць вонкавы Ñ€Ñдактар па змоўчваньні (толькі Ð´Ð»Ñ Ð°Ð´Ð¼Ñ‹Ñлоўцаў, патрÑбуе ÑпÑцыÑльных наладак на вашым кампутары. [//www.mediawiki.org/wiki/Manual:External_editors ПадрабÑзнаÑьці.])',
+'tog-externaldiff' => 'ВыкарыÑтоўваць вонкавую праграму Ð¿Ð°Ñ€Ð°ÑžÐ½Ð°Ð½ÑŒÐ½Ñ Ð²ÑÑ€ÑÑ–ÑÑž па змоўчваньні (толькі Ð´Ð»Ñ Ð°Ð´Ð¼Ñ‹Ñлоўцаў, патрÑбуе ÑпÑцыÑльных наладак на вашым кампутары. [//www.mediawiki.org/wiki/Manual:External_editors ПадрабÑзнаÑьці.])',
'tog-showjumplinks' => 'Ðктываваць Ð´Ð°Ð¿Ð°Ð¼Ð¾Ð¶Ð½Ñ‹Ñ ÑпаÑылкі «перайÑьці да»',
'tog-uselivepreview' => 'ВыкарыÑтоўваць хуткі папÑÑ€Ñдні праглÑд (патрабуе JavaScript) (ÑкÑпÑрымÑнтальна)',
'tog-forceeditsummary' => 'ПапÑÑ€Ñджваць пра адÑутнаÑьць кароткага апіÑÐ°Ð½ÑŒÐ½Ñ Ð·ÑŒÐ¼ÐµÐ½Ð°Ñž',
@@ -378,14 +378,7 @@ $messages = array(
'listingcontinuesabbrev' => ' (працÑг)',
'index-category' => 'ІндÑкÑÐ°Ð²Ð°Ð½Ñ‹Ñ Ñтаронкі',
'noindex-category' => 'ÐеіндÑкÑÐ°Ð²Ð°Ð½Ñ‹Ñ Ñтаронкі',
-
-'mainpagetext' => "'''MediaWiki паÑьпÑхова ÑžÑталÑванаÑ.'''",
-'mainpagedocfooter' => 'ГлÑдзіце [http://meta.wikimedia.org/wiki/Help:Contents дапаможнік карыÑтальніка] Ð´Ð»Ñ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ð½ÑŒÐ½Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ– па карыÑтаньні вікі-праграмамі.
-
-== З чаго пачаць ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Ð¡ÑŒÐ¿Ñ–Ñ Ð¿Ð°Ñ€Ð°Ð¼Ñтраў канфігурацыі]
-* [http://www.mediawiki.org/wiki/Manual:FAQ ЧаÑÑ‚Ñ‹Ñ Ð¿Ñ‹Ñ‚Ð°Ð½ÑŒÐ½Ñ– MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce РаÑÑылка паведамленьнÑÑž пра зьÑўленьне новых вÑÑ€ÑÑ–ÑÑž MediaWiki]',
+'broken-file-category' => 'Старонкі зь нÑÑлушнымі ÑпаÑылкамі на файлы',
'about' => 'Пра',
'article' => 'Старонка зьмеÑту',
@@ -437,10 +430,10 @@ $messages = array(
'history' => 'ГіÑÑ‚Ð¾Ñ€Ñ‹Ñ Ñтаронкі',
'history_short' => 'ГіÑторыÑ',
'updatedmarker' => 'абноўлена з чаÑу майго апошнÑга наведваньнÑ',
-'info_short' => 'ІнфармацыÑ',
'printableversion' => 'Ð’ÑÑ€ÑÑ–Ñ Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÑƒ',
'permalink' => 'Ð¡Ñ‚Ð°Ð»Ð°Ñ ÑпаÑылка',
'print' => 'Друкаваць',
+'view' => 'ПраглÑд',
'edit' => 'РÑдагаваць',
'create' => 'Стварыць',
'editthispage' => 'РÑдагаваць гÑтую Ñтаронку',
@@ -448,6 +441,7 @@ $messages = array(
'delete' => 'Выдаліць',
'deletethispage' => 'Выдаліць гÑтую Ñтаронку',
'undelete_short' => 'Ðднавіць $1 {{PLURAL:$1|Ñ€Ñдагаваньне|Ñ€Ñдагаваньні|Ñ€ÑдагаваньнÑÑž}}',
+'viewdeleted_short' => 'Паказаць $1 {{PLURAL:$1|выдаленае Ñ€Ñдагаваньне|Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ñ‹Ñ Ñ€Ñдагаваньні|выдаленых Ñ€ÑдагаваньнÑÑž}}',
'protect' => 'Ðбараніць',
'protect_change' => 'зьмÑніць',
'protectthispage' => 'Ðбараніць гÑтую Ñтаронку',
@@ -532,6 +526,8 @@ $1',
'toc' => 'ЗьмеÑÑ‚',
'showtoc' => 'паказаць',
'hidetoc' => 'Ñхаваць',
+'collapsible-collapse' => 'Згарнуць',
+'collapsible-expand' => 'Разгарнуць',
'thisisdeleted' => 'ПраглÑдзець ці аднавіць $1?',
'viewdeleted' => 'Паказаць $1?',
'restorelink' => '$1 {{PLURAL:$1|выдаленую зьмену|Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ñ‹Ñ Ð·ÑŒÐ¼ÐµÐ½Ñ‹|выдаленых зьменаў}}',
@@ -543,6 +539,8 @@ $1',
'page-rss-feed' => '«$1» — RSS-Ñтужка',
'page-atom-feed' => '«$1» — Atom-Ñтужка',
'red-link-title' => '$1 (Ñтаронка не Ñ–Ñнуе)',
+'sort-descending' => 'Сартаваць па зьмÑншÑньні',
+'sort-ascending' => 'Сартаваць па ўзраÑтаньні',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Старонка',
@@ -626,12 +624,13 @@ $1',
'protectedinterface' => 'ГÑÑ‚Ð°Ñ Ñтаронка ўтрымлівае інтÑрфÑйÑнае паведамленьне праграмнага забеÑьпÑчÑньнÑ, Ñ– Ñе зьмена забаронена.',
'editinginterface' => "'''Увага:''' Ð’Ñ‹ Ñ€Ñдагуеце Ñтаронку, ÑÐºÐ°Ñ ÑžÑ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°Ðµ ÑÑ‹ÑÑ‚Ñмнае паведамленьне MediaWiki.
Яе зьмена паўплывае на вонкавы выглÑд інтÑрфÑйÑу іншых удзельнікаў.
-Калі лаÑка, выкарыÑтоўвайце [http://translatewiki.net/wiki/Main_Page?setlang=be-tarask translatewiki.net] — праект Ð´Ð»Ñ Ð»Ñкалізацыі MediaWiki.",
+Калі лаÑка, выкарыÑтоўвайце [//translatewiki.net/wiki/Main_Page?setlang=be-tarask translatewiki.net] — праект Ð´Ð»Ñ Ð»Ñкалізацыі MediaWiki.",
'sqlhidden' => '(SQL-запыт Ñхаваны)',
'cascadeprotected' => 'ГÑÑ‚Ð°Ñ Ñтаронка Ð°Ð±Ð°Ñ€Ð¾Ð½ÐµÐ½Ð°Ñ Ð°Ð´ Ñ€ÑдагаваньнÑ, таму што Ñна ÑžÐºÐ»ÑŽÑ‡Ð°Ð½Ð°Ñ Ñž {{PLURAL:$1|наÑтупную Ñтаронку, ÑÐºÐ°Ñ Ð±Ñ‹Ð»Ð° абароненаÑ|наÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ñтаронкі, ÑÐºÑ–Ñ Ð±Ñ‹Ð»Ñ– абароненыÑ}} з актывізаванай опцыÑй «каÑкаднай абароны»:
$2',
'namespaceprotected' => "Ð’Ñ‹ Ð½Ñ Ð¼Ð°ÐµÑ†Ðµ правоў на Ñ€Ñдагаваньне Ñтаронак у праÑторы назваў '''$1'''.",
-'customcssjsprotected' => 'Ð’Ñ‹ Ð½Ñ Ð¼Ð°ÐµÑ†Ðµ правоў на Ñ€Ñдагаваньне гÑтай Ñтаронкі, таму што Ñна ўтрымлівае пÑÑ€ÑÐ°Ð½Ð°Ð»ÑŒÐ½Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ іншага ўдзельніка.',
+'customcssprotected' => 'Ð’Ñ‹ Ð½Ñ Ð¼Ð°ÐµÑ†Ðµ правоў на Ñ€Ñдагаваньне гÑтай CSS-Ñтаронкі, таму што Ñна ўтрымлівае пÑÑ€ÑÐ°Ð½Ð°Ð»ÑŒÐ½Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ іншага ўдзельніка.',
+'customjsprotected' => 'Ð’Ñ‹ Ð½Ñ Ð¼Ð°ÐµÑ†Ðµ правоў на Ñ€Ñдагаваньне гÑтай Ñтаронкі JavaScript, таму што Ñна ўтрымлівае пÑÑ€ÑÐ°Ð½Ð°Ð»ÑŒÐ½Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ іншага ўдзельніка.',
'ns-specialprotected' => 'Ðемагчыма Ñ€Ñдагаваць ÑпÑцыÑÐ»ÑŒÐ½Ñ‹Ñ Ñтаронкі.',
'titleprotected' => "СтварÑньне Ñтаронкі з такой назвай было забароненае ўдзельнікам [[User:$1|$1]].
Прычына забароны: ''$2''.",
@@ -669,6 +668,7 @@ $2',
'createaccount' => 'Стварыць рахунак',
'gotaccount' => "Ужо маеце рахунак? '''$1'''.",
'gotaccountlink' => 'Увайдзіце',
+'userlogin-resetlink' => 'ЗабыліÑÑ Ð¿Ñ€Ð° зьвеÑткі Ð´Ð»Ñ ÑžÐ²Ð°Ñ…Ð¾Ð´Ñƒ?',
'createaccountmail' => 'па Ñлектроннай пошце',
'createaccountreason' => 'Прычына:',
'badretype' => 'Ð£Ð²ÐµÐ´Ð·ÐµÐ½Ñ‹Ñ Ð’Ð°Ð¼Ñ– паролі не Ñупадаюць.',
@@ -683,13 +683,15 @@ $2',
'nocookieslogin' => '{{SITENAME}} выкарыÑтоўвае cookie Ð´Ð»Ñ ÑžÐ²Ð°Ñ…Ð¾Ð´Ñƒ Ñž ÑÑ‹ÑÑ‚Ñму.
У Вашым браўзÑры cookie адключаныÑ.
Калі лаÑка, уключыце Ñ–Ñ… Ñ– паÑпрабуйце ÑÑˆÑ‡Ñ Ñ€Ð°Ð·.',
+'nocookiesfornew' => 'Рахунак удзельніка Ð½Ñ Ð±Ñ‹Ñž Ñтвораны, таму што мы не змаглі пацьвердзіць Ñго крыніцу.
+УпÑўніце, што Ñž Ð’Ð°Ñ ÑƒÐºÐ»ÑŽÑ‡Ð°Ð½Ñ‹Ñ Ð·Ð°ÐºÐ»Ð°Ð´ÐºÑ– (cookies), перазагрузіце гÑтую Ñтаронку Ñ– паÑпрабуйце зноў.',
'noname' => 'Ð’Ñ‹ пазначылі нÑÑлушнае Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°.',
'loginsuccesstitle' => 'ПаÑьпÑховы ўваход у ÑÑ‹ÑÑ‚Ñму',
'loginsuccess' => "'''ЦÑпер Ð’Ñ‹ ўвайшлі Ñž {{GRAMMAR:вінавальны|{{SITENAME}}}} Ñк «$1».'''",
'nosuchuser' => 'Удзельніка «$1» не Ñ–Ñнуе.
Ð’ÑÐ»Ñ–ÐºÑ–Ñ Ñ– Ð¼Ð°Ð»Ñ‹Ñ Ð»Ñ–Ñ‚Ð°Ñ€Ñ‹ адрозьніваюцца Ñž імёнах удзельнікаў.
Праверце напіÑаньне альбо [[Special:UserLogin/signup|Ñтварыце новы рахунак]].',
-'nosuchusershort' => 'Удзельніка зь іменем «<nowiki>$1</nowiki>» не Ñ–Ñнуе. Праверце напіÑаньне.',
+'nosuchusershort' => 'Удзельніка зь іменем «$1» не Ñ–Ñнуе. Праверце напіÑаньне.',
'nouserspecified' => 'Ð’Ñ‹ муÑіце пазначыць Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°.',
'login-userblocked' => '{{GENDER:$1|ГÑÑ‚Ñ‹ ўдзельнік заблÑкаваны|ГÑÑ‚Ð°Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–Ñ†Ð° заблÑкаванаÑ}}. Уваход у ÑÑ‹ÑÑ‚Ñму забаронены.',
'wrongpassword' => 'Уведзены нÑÑлушны пароль. Калі лаÑка, паÑпрабуйце ÑÑˆÑ‡Ñ Ñ€Ð°Ð·.',
@@ -730,13 +732,14 @@ $2',
'usernamehasherror' => 'Ð†Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ° Ð½Ñ Ð¼Ð¾Ð¶Ð° ўтрымліваць Ñымбаль #',
'login-throttled' => 'Ð’Ñ‹ зрабілі занадта шмат Ñпробаў уваходу Ñž ÑÑ‹ÑÑ‚Ñму.
Калі лаÑка, пачакайце, перад тым, Ñк паÑпрабаваць ізноў.',
+'login-abort-generic' => 'Ðе атрымалаÑÑ ÑžÐ²Ð°Ð¹Ñьці Ñž ÑÑ‹ÑÑ‚Ñму, ÑкаÑавана',
'loginlanguagelabel' => 'Мова: $1',
'suspicious-userlogout' => 'Ваш запыт на выхад з ÑÑ‹ÑÑ‚Ñмы быў адхілены, таму што выглÑдае, што ён быў даÑланы пашкоджаным браўзÑрам альбо кÑшаваным прокÑÑ–-ÑÑрвÑрам.',
# E-mail sending
'php-mail-error-unknown' => 'Узьнікла невÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ñž функцыі PHP mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ЗьмÑніць пароль',
'resetpass_announce' => 'Ð’Ñ‹ ўвайшлі з дапамогай чаÑовага паролю, даÑланага праз Ñлектронную пошту.
Ð”Ð»Ñ Ð·Ð°Ð²ÑршÑÐ½ÑŒÐ½Ñ ÑžÐ²Ð°Ñ…Ð¾Ð´Ñƒ Ñž ÑÑ‹ÑÑ‚Ñму Ð’Ñ‹ муÑіце ўвеÑьці тут новы пароль:',
@@ -754,6 +757,36 @@ $2',
Магчыма Ð’Ñ‹ ўжо паÑьпÑхова зьмÑнілі Ваш пароль альбо запыталі новы чаÑовы пароль.',
'resetpass-temp-password' => 'ЧаÑовы пароль:',
+# Special:PasswordReset
+'passwordreset' => 'ÐчыÑтка паролю',
+'passwordreset-text' => 'Запоўніце гÑтую форму, каб атрымаць напамін праз Ñлектронную пошту пра Ð’Ð°ÑˆÑ‹Ñ Ð·ÑŒÐ²ÐµÑткі Ð´Ð»Ñ ÑžÐ²Ð°Ñ…Ð¾Ð´Ñƒ.',
+'passwordreset-legend' => 'ÐчыÑьціць пароль',
+'passwordreset-disabled' => 'МагчымаÑьць ачыÑткі паролю была Ð·Ð°Ð±Ð°Ñ€Ð¾Ð½ÐµÐ½Ð°Ñ Ñž {{GRAMMAR:меÑны|{{SITENAME}}}}.',
+'passwordreset-pretext' => '{{PLURAL:$1||УвÑдзіце ніжÑй чаÑтку зьвеÑтак}}',
+'passwordreset-username' => 'Ð†Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°:',
+'passwordreset-domain' => 'ДамÑн:',
+'passwordreset-email' => 'ÐÐ´Ñ€Ð°Ñ Ñлектроннай пошты:',
+'passwordreset-emailtitle' => 'ПадрабÑзнаÑьці рахунку Ñž {{GRAMMAR:меÑны|{{SITENAME}}}}',
+'passwordreset-emailtext-ip' => 'Ðехта (магчыма Ð’Ñ‹, з IP-адраÑу $1) зрабіў запыт на атрыманьне падрабÑзнаÑьцÑÑž Вашага рахунку Ñž {{GRAMMAR:меÑны|{{SITENAME}}}} ($4). {{PLURAL:$3|ÐаÑтупны рахунак удзельніка зьвÑзаны|ÐаÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ñ€Ð°Ñ…ÑƒÐ½ÐºÑ– удзельнікаў зьвÑзаныÑ}} з гÑтым адраÑам Ñлектроннай пошты:
+
+$2
+
+{{PLURAL:$3|ГÑÑ‚Ñ‹ чаÑовы пароль будзе|ГÑÑ‚Ñ‹Ñ Ñ‡Ð°ÑÐ¾Ð²Ñ‹Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ– будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
+ЦÑпер Вам неабходна ўвайÑьці Ñ– выбраць новы пароль. Калі нехта іншы зрабіў гÑÑ‚Ñ‹ запыт,
+ці Ð’Ñ‹ ÑžÑпомнілі Ваш пачатковы пароль, Ñкі Ð½Ñ Ñ…Ð¾Ñ‡Ð°Ñ†Ðµ мÑнÑць,
+Ð’Ñ‹ можаце праігнараваць гÑтае паведамленьне, Ñ– працÑгваць выкарыÑтоўваць Ñтары пароль.',
+'passwordreset-emailtext-user' => 'Удзельнік $1 зрабіў запыт на атрыманьне падрабÑзнаÑьцÑÑž Вашага рахунку Ñž {{GRAMMAR:меÑны|{{SITENAME}}}} ($4). {{PLURAL:$3|ÐаÑтупны рахунак удзельніка зьвÑзаны|ÐаÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ñ€Ð°Ñ…ÑƒÐ½ÐºÑ– удзельнікаў зьвÑзаныÑ}} з гÑтым адраÑам Ñлектроннай пошты:
+
+$2
+
+{{PLURAL:$3|ГÑÑ‚Ñ‹ чаÑовы пароль будзе|ГÑÑ‚Ñ‹Ñ Ñ‡Ð°ÑÐ¾Ð²Ñ‹Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ– будуць}} дзейнічаць $5 {{PLURAL:|дзень|дні|дзён}}.
+ЦÑпер Вам неабходна ўвайÑьці Ñ– выбраць новы пароль. Калі нехта іншы зрабіў гÑÑ‚Ñ‹ запыт,
+ці Ð’Ñ‹ ÑžÑпомнілі Ваш пачатковы пароль, Ñкі Ð½Ñ Ñ…Ð¾Ñ‡Ð°Ñ†Ðµ мÑнÑць,
+Ð’Ñ‹ можаце праігнараваць гÑтае паведамленьне, Ñ– працÑгваць выкарыÑтоўваць Ñтары пароль.',
+'passwordreset-emailelement' => 'Ð†Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°: $1
+ЧаÑовы пароль: $2',
+'passwordreset-emailsent' => 'Ðапамін быў даÑланы па Ñлектроннай пошце.',
+
# Edit page toolbar
'bold_sample' => 'ТлуÑÑ‚Ñ‹ Ñ‚ÑкÑÑ‚',
'bold_tip' => 'ТлуÑÑ‚Ñ‹ Ñ‚ÑкÑÑ‚',
@@ -765,8 +798,6 @@ $2',
'extlink_tip' => 'Ð’Ð¾Ð½ÐºÐ°Ð²Ð°Ñ ÑпаÑылка (не забывайцеÑÑ Ð¿Ð°Ñ‡Ñ‹Ð½Ð°Ñ†ÑŒ з http:// )',
'headline_sample' => 'ТÑкÑÑ‚ загалоўку',
'headline_tip' => 'Загаловак 2-га ўзроўню',
-'math_sample' => 'ЗьмÑÑьціце тут формулу',
-'math_tip' => 'МатÑÐ¼Ð°Ñ‚Ñ‹Ñ‡Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»Ð° (LaTeX)',
'nowiki_sample' => 'УÑтаўце Ñюды нефарматаваны Ñ‚ÑкÑÑ‚',
'nowiki_tip' => 'Ігнараваць вікі-фарматаваньне',
'image_sample' => 'Прыклад.jpg',
@@ -849,7 +880,7 @@ $2',
альбо [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} Ñ€Ñдагаваць гÑтую Ñтаронку]</span>.',
'noarticletext-nopermission' => 'Зараз на гÑтай Ñтаронцы Ñ‚ÑкÑÑ‚ адÑутнічае.
Ð’Ñ‹ можаце [[Special:Search/{{PAGENAME}}|пашукаць назву гÑтай Ñтаронкі]] на іншых Ñтаронках, альбо <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пашукаць зьвÑÐ·Ð°Ð½Ñ‹Ñ Ð·Ð°Ð¿Ñ–ÑÑ‹ Ñž журналах]</span>.',
-'userpage-userdoesnotexist' => 'Рахунак удзельніка «$1» не зарÑгіÑтраваны. Калі лаÑка, удакладніце, ці жадаеце Ð’Ñ‹ Ñтварыць/Ñ€Ñдагаваць гÑтую Ñтаронку.',
+'userpage-userdoesnotexist' => 'Рахунак удзельніка «<nowiki>$1</nowiki>» не зарÑгіÑтраваны. Калі лаÑка, удакладніце, ці жадаеце Ð’Ñ‹ Ñтварыць/Ñ€Ñдагаваць гÑтую Ñтаронку.',
'userpage-userdoesnotexist-view' => 'Рахунак «$1» Ð½Ñ Ñтвораны.',
'blocked-notice-logextract' => 'ГÑÑ‚Ñ‹ ўдзельнік у дадзены момант заблÑкаваны.
Ðпошні Ð·Ð°Ð¿Ñ–Ñ Ð· журналу блÑкаваньнÑÑž пададзены ніжÑй Ð´Ð»Ñ Ð´Ð°Ð²ÐµÐ´ÐºÑ–:',
@@ -883,6 +914,7 @@ $2',
'token_suffix_mismatch' => "'''Вашае Ñ€Ñдагаваньне было адхіленае, таму што Ваш кліент Ð½Ñ Ð¼Ð¾Ð¶Ð° апрацоўваць знакі пунктуацыі Ñž акне Ñ€ÑдагаваньнÑ.
РÑдагаваньне было ÑкаÑаванае Ð´Ð»Ñ Ñ‚Ð°Ð³Ð¾, каб пазьбегнуць зьнішчÑÐ½ÑŒÐ½Ñ Ñ‚ÑкÑту Ñтаронкі.
Ð¢Ð°ÐºÑ–Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÑ– здараюцца, калі Ð’Ñ‹ выкарыÑтоўваеце ананімны прокÑÑ–-ÑÑрвÑÑ€, Ñкі ўтрымлівае памылкі.'''",
+'edit_form_incomplete' => "'''ÐÐµÐºÐ°Ñ‚Ð¾Ñ€Ñ‹Ñ Ñ‡Ð°Ñткі формы Ñ€ÑÐ´Ð°Ð³Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð½Ðµ даÑÑгнулі ÑÑрвÑра. УпÑўніцеÑÑ, што Ð’Ð°ÑˆÑ‹Ñ Ñ€Ñдагаваньні не Ð¿Ð°ÑˆÐºÐ¾Ð´Ð¶Ð°Ð½Ñ‹Ñ Ñ– паÑпрабуйце зноў.'''",
'editing' => 'РÑдагаваньне: $1',
'editingsection' => 'РÑдагаваньне: $1 (ÑÑкцыÑ)',
'editingcomment' => 'РÑдагаваньне: $1 (Ð½Ð¾Ð²Ð°Ñ ÑÑкцыÑ)',
@@ -1115,8 +1147,8 @@ $1",
# Suppression log
'suppressionlog' => 'Журнал ÑхаваньнÑÑž',
-'suppressionlogtext' => 'ÐіжÑй знаходзіцца ÑÑŒÐ¿Ñ–Ñ Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½ÑŒÐ½ÑÑž Ñ– блÑкаваньнÑÑž, Ñхаваных нават ад адмініÑтратараў.
-ГлÑдзіце [[Special:IPBlockList|ÑÑŒÐ¿Ñ–Ñ Ð±Ð»ÑкаваньнÑÑž IP]], каб паглÑдзець ÑÑŒÐ¿Ñ–Ñ Ñ†Ñперашніх блÑкаваньнÑÑž.',
+'suppressionlogtext' => 'ÐіжÑй пададзены ÑÑŒÐ¿Ñ–Ñ Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½ÑŒÐ½ÑÑž Ñ– блÑкаваньнÑÑž, Ñхаваных нават ад адмініÑтратараў.
+ГлÑдзіце [[Special:BlockList|ÑÑŒÐ¿Ñ–Ñ Ð±Ð»ÑкаваньнÑÑž]], каб паглÑдзець ÑÑŒÐ¿Ñ–Ñ Ñ†Ñперашніх блÑкаваньнÑÑž.',
# History merging
'mergehistory' => 'Ðб’Ñднаць гіÑторыі Ñтаронак',
@@ -1226,12 +1258,13 @@ $1",
Ð’Ñ‹ можаце пашукаць з дапамогай Google, але заўважце, што там Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ Ð¿Ñ€Ð° Ñтаронкі {{GRAMMAR:родны|{{SITENAME}}}} можа быць ÑаÑтарÑлай.',
# Quickbar
-'qbsettings' => 'ПанÑль хуткага доÑтупу',
-'qbsettings-none' => 'Ðе паказваць',
-'qbsettings-fixedleft' => 'Ð—Ð°Ð¼Ð°Ñ†Ð°Ð²Ð°Ð½Ð°Ñ Ð·ÑŒÐ»ÐµÐ²Ð°',
-'qbsettings-fixedright' => 'Ð—Ð°Ð¼Ð°Ñ†Ð°Ð²Ð°Ð½Ð°Ñ Ñправа',
-'qbsettings-floatingleft' => 'Ð ÑƒÑ…Ð¾Ð¼Ð°Ñ Ð·ÑŒÐ»ÐµÐ²Ð°',
-'qbsettings-floatingright' => 'Плавае Ñправа',
+'qbsettings' => 'ПанÑль хуткага доÑтупу',
+'qbsettings-none' => 'Ðе паказваць',
+'qbsettings-fixedleft' => 'Ð—Ð°Ð¼Ð°Ñ†Ð°Ð²Ð°Ð½Ð°Ñ Ð·ÑŒÐ»ÐµÐ²Ð°',
+'qbsettings-fixedright' => 'Ð—Ð°Ð¼Ð°Ñ†Ð°Ð²Ð°Ð½Ð°Ñ Ñправа',
+'qbsettings-floatingleft' => 'Ð ÑƒÑ…Ð¾Ð¼Ð°Ñ Ð·ÑŒÐ»ÐµÐ²Ð°',
+'qbsettings-floatingright' => 'Плавае Ñправа',
+'qbsettings-directionality' => 'ЗамацаванаÑ, у залежнаÑьці ад накірунку напіÑÐ°Ð½ÑŒÐ½Ñ Ñž Вашай мове',
# Preferences page
'preferences' => 'Ðалады',
@@ -1242,9 +1275,10 @@ $1",
'changepassword' => 'ЗьмÑніць пароль',
'prefs-skin' => 'Ðфармленьне',
'skin-preview' => 'ПапÑÑ€Ñдні праглÑд',
-'prefs-math' => 'МатÑматыка',
'datedefault' => 'Па змоўчаньні',
+'prefs-beta' => 'ТÑÑÑ‚Ð°Ð²Ñ‹Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð°Ñьці',
'prefs-datetime' => 'Дата Ñ– чаÑ',
+'prefs-labs' => 'ЭкÑпÑрымÑÐ½Ñ‚Ð°Ð»ÑŒÐ½Ñ‹Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð°Ñьці',
'prefs-personal' => 'ÐÑабіÑÑ‚Ñ‹Ñ Ð·ÑŒÐ²ÐµÑткі',
'prefs-rc' => 'ÐÐ¿Ð¾ÑˆÐ½Ñ–Ñ Ð·ÑŒÐ¼ÐµÐ½Ñ‹',
'prefs-watchlist' => 'Ð¡ÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ',
@@ -1266,8 +1300,6 @@ $1",
'columns' => 'Слупкоў:',
'searchresultshead' => 'Пошук',
'resultsperpage' => 'КолькаÑьць вынікаў на Ñтаронцы:',
-'contextlines' => 'КолькаÑьць радкоў Ð´Ð»Ñ Ð¿Ð°ÐºÐ°Ð·Ñƒ:',
-'contextchars' => 'КолькаÑьць ÑымбалÑÑž на радок:',
'stub-threshold' => 'МакÑымальны памер Ñтаронкі Ð´Ð»Ñ Ð¿Ð°ÐºÐ°Ð·Ñƒ ÑпаÑылак <a href="#" class="stub">Ñк на накід</a> (у байтах):',
'stub-threshold-disabled' => 'Выключаны',
'recentchangesdays' => 'КолькаÑьць дзён Ð´Ð»Ñ Ð¿Ð°ÐºÐ°Ð·Ñƒ Ñž апошніх зьменах:',
@@ -1280,7 +1312,7 @@ $1",
'savedprefs' => 'Ð’Ð°ÑˆÑ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ былі захаваныÑ.',
'timezonelegend' => 'ЧаÑавы поÑÑ:',
'localtime' => 'ÐœÑÑцовы чаÑ:',
-'timezoneuseserverdefault' => 'ВыкарыÑтоўваць чаÑавы поÑÑ ÑÑрвÑра',
+'timezoneuseserverdefault' => 'ВыкарыÑтоўваць ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ {{GRAMMAR:родны|{{SITENAME}}}} ($1)',
'timezoneuseoffset' => 'Іншы (пазначце розьніцу Ñž чаÑе)',
'timezoneoffset' => 'Розьніца¹:',
'servertime' => 'Ð§Ð°Ñ Ð½Ð° ÑÑрвÑры:',
@@ -1329,7 +1361,8 @@ $1",
'email' => 'Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾ÑˆÑ‚Ð°',
'prefs-help-realname' => 'Сапраўднае Ñ–Ð¼Ñ Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»Ñць неабавÑзкова.
Калі Ð’Ñ‹ Ñго пазначыце, Ñно будзе выкарыÑтоўвацца Ð´Ð»Ñ Ð¿Ð°Ð·Ð½Ð°Ñ‡ÑÐ½ÑŒÐ½Ñ Ð’Ð°ÑˆÐ°Ð¹ працы.',
-'prefs-help-email' => 'ÐÐ´Ñ€Ð°Ñ Ñлектроннай пошты — неабавÑзковы, але дае магчымаÑьць даÑлаць Вам пароль, калі Ð’Ñ‹ забылі Ñго. ТакÑама ÐÐ´Ñ€Ð°Ñ Ñлектроннай пошты дазвалÑе іншым зьвÑзвацца з Вамі праз Ñтаронкі ўдзельніка безь неабходнаÑьці раÑÐºÑ€Ñ‹Ñ†ÑŒÑ†Ñ Ð’Ð°ÑˆÑ‹Ñ… аÑабіÑÑ‚Ñ‹Ñ… зьвеÑтак.',
+'prefs-help-email' => 'ÐÐ´Ñ€Ð°Ñ Ñлектроннай пошты неабавÑзковы, але ён дае магчымаÑьць даÑлаць Вам пароль, калі Ð’Ñ‹ забылі Ñго.',
+'prefs-help-email-others' => 'Ð’Ñ‹ можаце такÑама дазволіць іншым удзельнікам кантактаваць з Вамі праз Вашую аÑабіÑтую Ñтаронку гутарак безь неабходнаÑьці раÑÐºÑ€Ñ‹Ñ†ÑŒÑ†Ñ Ð°Ð´Ñ€Ð°Ñу Ñлектроннай пошты.',
'prefs-help-email-required' => 'Патрабуецца Ð°Ð´Ñ€Ð°Ñ Ñлектроннай пошты.',
'prefs-info' => 'ÐÑÐ½Ð¾ÑžÐ½Ñ‹Ñ Ð·ÑŒÐ²ÐµÑткі',
'prefs-i18n' => 'ІнтÑрнацыÑналізацыÑ',
@@ -1454,15 +1487,15 @@ $1",
'right-userrights' => 'Ñ€Ñдагаваньне правоў уÑÑ–Ñ… удзельнікаў',
'right-userrights-interwiki' => 'Ñ€Ñдагаваньне правоў удзельнікаў у іншых вікі',
'right-siteadmin' => 'блÑкаваньне Ñ– разблÑкаваньне базы зьвеÑтак',
-'right-reset-passwords' => 'ачыÑтка паролÑÑž іншых удзельнікаў',
'right-override-export-depth' => 'ÑкÑпартаваньне Ñтаронак, уключаючы зьвÑÐ·Ð°Ð½Ñ‹Ñ Ñтаронкі з глыбінёй да 5',
'right-sendemail' => 'адпраўка Ñлектронных ліÑтоў іншым удзельнікам',
# User rights log
-'rightslog' => 'Журнал правоў удзельнікаў',
-'rightslogtext' => 'ГÑта журнал зьменаў правоў удзельнікаў.',
-'rightslogentry' => 'зьменена прыналежнаÑьць $1 з групы $2 да $3',
-'rightsnone' => '(нÑма)',
+'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' => 'чытаньне гÑтай Ñтаронкі',
@@ -1583,12 +1616,13 @@ $1",
'minlength1' => 'Ðазва файла павінна ўтрымліваць Ñ…Ð°Ñ†Ñ Ð± адзін Ñымбаль.',
'illegalfilename' => 'Ðазва файла «$1» зьмÑшчае Ñымбалі, ÑÐºÑ–Ñ Ð½ÐµÐ»ÑŒÐ³Ð° выкарыÑтоўваць у назвах Ñтаронак. Калі лаÑка, зьмÑніце назву файла Ñ– паÑпрабуйце загрузіць Ñго зноў.',
'badfilename' => 'Ðазва файла была Ð·ÑŒÐ¼ÐµÐ½ÐµÐ½Ð°Ñ Ð½Ð° «$1».',
-'filetype-mime-mismatch' => 'ПашырÑньне файла не адпавÑдае MIME-тыпу.',
+'filetype-mime-mismatch' => 'ПашырÑньне файла «.$1» не адпавÑдае выÑўленаму MIME-тыпу файла ($2).',
'filetype-badmime' => 'Загрузка файлаў тыпу MIME «$1» забароненаÑ.',
'filetype-bad-ie-mime' => 'Ðемагчыма загрузіць гÑÑ‚Ñ‹ файл, таму што Internet Explorer вызначыў Ñго Ñк «$1», што азначае, што тып гÑтага файла забаронены Ñ– патÑнцыÑльна небÑÑьпечны.',
'filetype-unwanted-type' => "'''«.$1»''' — непажаданы тып файла.
{{PLURAL:$3|Пажаданым тыпам файла зьÑўлÑецца|Пажаданымі тыпамі файлаў зьÑўлÑюцца}} $2.",
-'filetype-banned-type' => "'''«.$1»''' — забаронены тып файлаў. {{PLURAL:$3|Дазволеным тыпам файла зьÑўлÑецца|Дазволенымі тыпамі файлаў зьÑўлÑюцца}} $2.",
+'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|забаронены тып файлаў|Ð·Ð°Ð±Ð°Ñ€Ð¾Ð½ÐµÐ½Ñ‹Ñ Ñ‚Ñ‹Ð¿Ñ‹ файлаў}}.
+{{PLURAL:$3|Дазволены тып файлаў|Ð”Ð°Ð·Ð²Ð¾Ð»ÐµÐ½Ñ‹Ñ Ñ‚Ñ‹Ð¿Ñ‹ файлаў}}: $2.",
'filetype-missing' => 'Файл Ð½Ñ Ð¼Ð°Ðµ пашырÑÐ½ÑŒÐ½Ñ (напрыклад, «.jpg»).',
'empty-file' => 'ДаÑланы Вамі файл пуÑÑ‚Ñ‹.',
'file-too-large' => 'ДаÑланы Вамі файл занадта вÑлікі.',
@@ -1606,6 +1640,7 @@ $1",
'largefileserver' => 'Памер гÑтага файла перавышае макÑымальна дазволены.',
'emptyfile' => 'Загружаны файл, здаецца, пуÑÑ‚Ñ‹. Магчыма гÑÑ‚Ñ‹ адбылоÑÑ Ð·-за памылкі Ñž назьве файла.
Удакладніце, ці Ð’Ñ‹ Ñапраўды жадаеце загрузіць гÑÑ‚Ñ‹ файл.',
+'windows-nonascii-filename' => '{{SITENAME}} не падтрымлівае назвы файлаў з ÑпÑцыÑльнымі ÑымбалÑмі.',
'fileexists' => "Файл з такой назвай ужо Ñ–Ñнуе.
Калі лаÑка, праверце '''<tt>[[:$1]]</tt>''', калі Ð’Ñ‹ Ð½Ñ ÑžÐ¿ÑўненыÑ, што жадаеце Ñго замÑніць.
[[$1|thumb]]",
@@ -1641,6 +1676,8 @@ $1",
'php-uploaddisabledtext' => 'Загрузка файлаў была Ð°Ð´ÐºÐ»ÑŽÑ‡Ð°Ð½Ð°Ñ Ñž парамÑтрах канфігурацыі PHP. Калі лаÑка, праверце значÑньне парамÑтра «file_uploads».',
'uploadscripted' => 'ГÑÑ‚Ñ‹ файл утрымлівае HTML-код альбо Ñкрыпт, Ñкі можа памылкова апрацоўвацца браўзÑрам.',
'uploadvirus' => 'Файл утрымлівае віруÑ! ПадрабÑзнаÑьці: $1',
+'uploadjava' => 'Файл зьÑўлÑецца ZIP-архівам, Ñкі зьмÑшчае .class-файл Java.
+Загрузка Java-файлаў Ð·Ð°Ð±Ð°Ñ€Ð¾Ð½ÐµÐ½Ð°Ñ Ñž мÑтах бÑÑьпекі.',
'upload-source' => 'Крынічны файл',
'sourcefilename' => 'ÐŸÐ°Ñ‡Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ð½Ð°Ð·Ð²Ð° файла:',
'sourceurl' => 'URL-Ð°Ð´Ñ€Ð°Ñ ÐºÑ€Ñ‹Ð½Ñ–Ñ†Ñ‹:',
@@ -1651,10 +1688,6 @@ $1",
'watchthisupload' => 'Ðазіраць за гÑтым файлам',
'filewasdeleted' => 'Файл з такой назвай загружаўÑÑ, але быў выдалены.
Вам Ñ‚Ñ€Ñба праверыць $1 перад новай загрузкай.',
-'upload-wasdeleted' => "'''ПапÑÑ€Ñджаньне: Ð’Ñ‹ Ñпрабуеце загрузіць файл, Ñкі ўжо выдалÑÑžÑÑ.'''
-
-УпÑўніцеÑÑ Ñž неабходнаÑьці загрузкі гÑтага файла.
-Журнал выдаленьнÑÑž Ð´Ð»Ñ Ð³Ñтага файла знаходзіцца ніжÑй:",
'filename-bad-prefix' => "Ðазва файла, Ñкі Ð’Ñ‹ загружаеце, пачынаецца з '''«$1»'''. ÐŸÐ°Ð´Ð¾Ð±Ð½Ñ‹Ñ Ð±ÐµÑÑÑнÑÐ¾ÑžÐ½Ñ‹Ñ Ð½Ð°Ð·Ð²Ñ‹ звычайна Ñтвараюцца аўтаматычна лічбавымі фотаапаратамі. Калі лаÑка, абÑрыце больш зразумелую назву Ð´Ð»Ñ Ð’Ð°ÑˆÐ°Ð³Ð° файла.",
'upload-success-subj' => 'Загрузка паÑьпÑхова ÑкончылаÑÑ',
'upload-success-msg' => 'Ð’Ð°ÑˆÐ°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ° з [$2] была паÑьпÑховаÑ. Яна даÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ñ‚ÑƒÑ‚: [[:{{ns:file}}:$1]]',
@@ -1678,12 +1711,29 @@ $1',
'upload-unknown-size' => 'ÐевÑдомы памер',
'upload-http-error' => 'Узьнікла памылка HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'ÐŸÐ°Ð´Ñ‡Ð°Ñ Ð°Ð´ÐºÑ€Ñ‹Ñ†ÑŒÑ†Ñ Ñ„Ð°Ð¹Ð»Ð° Ð´Ð»Ñ Ð¿Ñ€Ð°Ð²ÐµÑ€ÐºÑ– архіву адбылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°.',
+'zip-wrong-format' => 'Пазначаны файл не зьÑўлÑецца ZIP-архівам.',
+'zip-bad' => 'ZIP-файл пашкоджаны ці Ð½Ñ Ð¼Ð¾Ð¶Ð° быць прачытаны.
+Ðемагчыма праверыць Ñго бÑÑьпечнаÑьць.',
+'zip-unsupported' => 'ГÑÑ‚Ñ‹ ZIP-файл выкарыÑтоўвае магчымаÑьці, ÑÐºÑ–Ñ MediaWiki не падтрымлівае.
+Ðемагчыма праверыць Ñго бÑÑьпечнаÑьць.',
+
+# Special:UploadStash
+'uploadstash' => 'Ð¡Ñ…Ð°Ð²Ð°Ð½Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ°',
+'uploadstash-summary' => 'ГÑÑ‚Ð°Ñ Ñтаронка прадÑтаўлÑе доÑтуп да файлаў, ÑÐºÑ–Ñ Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°Ð½Ñ‹Ñ (ці знаходзÑцца Ñž працÑÑе загрузкі), але ÑÑˆÑ‡Ñ Ð½Ðµ Ð°Ð¿ÑƒÐ±Ð»Ñ–ÐºÐ°Ð²Ð°Ð½Ñ‹Ñ Ñž {{GRAMMAR:меÑны|{{SITENAME}}}}. ГÑÑ‚Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹ нÑÐ±Ð°Ñ‡Ð½Ñ‹Ñ Ð½Ñ–ÐºÐ¾Ð¼Ñƒ, Ð°ÐºÑ€Ð°Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°Ñž, ÑÐºÑ–Ñ Ñ–Ñ… загрузілі.',
+'uploadstash-clear' => 'ÐчыÑьціць ÑÑ…Ð°Ð²Ð°Ð½Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹',
+'uploadstash-nofiles' => 'Ð’Ñ‹ Ð½Ñ Ð¼Ð°ÐµÑ†Ðµ Ñхаваных файлаў.',
+'uploadstash-badtoken' => 'Ðемагчыма выканаць гÑтае дзеÑньне, верагодна ÑкончыўÑÑ Ñ‚Ñрмін дзеÑÐ½ÑŒÐ½Ñ Ð’Ð°ÑˆÐ°Ð³Ð° дазволу на Ñ€Ñдагаваньне. ПаÑпрабуйце зноў.',
+'uploadstash-errclear' => 'Ðемагчыма ачыÑьціць файлы.',
+'uploadstash-refresh' => 'Ðбнавіць ÑÑŒÐ¿Ñ–Ñ Ñ„Ð°Ð¹Ð»Ð°Ñž.',
+
# img_auth script messages
'img-auth-accessdenied' => 'ДоÑтуп забаронены',
'img-auth-nopathinfo' => 'ÐдÑутнічае PATH_INFO.
Ваш ÑÑрвÑÑ€ не ÑžÑтаноўлены на пропуÑк гÑтай інфармацыі.
-Яна можа быць заÑнавана на CGI Ñ– Ð½Ñ Ð¼Ð¾Ð¶Ð° падтрымліваць img_auth.
-ГлÑдзіце http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+Яна можа быць заÑÐ½Ð°Ð²Ð°Ð½Ð°Ñ Ð½Ð° CGI Ñ– Ð½Ñ Ð¼Ð¾Ð¶Ð° падтрымліваць img_auth.
+[http://www.mediawiki.org/wiki/Manual:Image_Authorization ГлÑдзіце інфармацыю пра аўтарызацыю выÑвы.]',
'img-auth-notindir' => 'Ðеабходнага шлÑху нÑма Ñž дырÑкторыі загрузкі, пазначанай у канфігурацыі.',
'img-auth-badtitle' => 'Ðемагчыма Ñтварыць Ñлушную назву з «$1».',
'img-auth-nologinnWL' => 'Ð’Ñ‹ не ўвайшлі Ñž ÑÑ‹ÑÑ‚Ñму, а «$1» не знаходзіцца Ñž белым ÑьпіÑе.',
@@ -1761,7 +1811,7 @@ $1',
ДаÑтупны такÑама [[Special:WhatLinksHere/$2|поўны ÑьпіÑ]].',
'nolinkstoimage' => 'ÐÑ–Ð²Ð¾Ð´Ð½Ð°Ñ Ñтаронка не ÑпаÑылаецца на гÑÑ‚Ñ‹ файл.',
'morelinkstoimage' => 'Паказаць [[Special:WhatLinksHere/$1|болей ÑпаÑылак]] на гÑÑ‚Ñ‹ файл.',
-'redirectstofile' => '{{PLURAL:$1|ÐаÑтупны файл перанакіроўвае|ÐаÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹ перанакіроўваюць}} на гÑÑ‚Ñ‹ файл:',
+'linkstoimage-redirect' => '$1 (перанакіраваньне на файл) $2',
'duplicatesoffile' => '{{PLURAL:$1|ÐаÑтупны файл дублюе|ÐаÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹ дублююць}} гÑÑ‚Ñ‹ файл ([[Special:FileDuplicateSearch/$2|падрабÑзнаÑьці]]):',
'sharedupload' => 'ГÑÑ‚Ñ‹ файл паходзіць з $1 Ñ– можа выкарыÑтоўвацца іншымі праектамі.',
'sharedupload-desc-there' => 'ГÑÑ‚Ñ‹ файл паходзіць з $1 Ñ– можа выкарыÑтоўвацца іншымі праектамі.
@@ -1851,17 +1901,18 @@ $1',
'statistics-users-active-desc' => 'Удзельнікі, ÑÐºÑ–Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°Ð»Ñ– нейкае дзеÑньне цÑгам {{PLURAL:$1|апошнÑга $1 днÑ|апошніх $1 дзён|апошніх $1 дзён}}',
'statistics-mostpopular' => 'ÐайпапулÑÑ€Ð½ÐµÐ¹ÑˆÑ‹Ñ Ñтаронкі',
-'disambiguations' => 'Старонкі-неадназначнаÑьці',
+'disambiguations' => 'Старонкі, ÑÐºÑ–Ñ ÑпаÑылаюцца на Ñтаронкі-неадназначнаÑьці',
'disambiguationspage' => 'Template:ÐеадназначнаÑьць',
'disambiguations-text' => "ÐаÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ñтаронкі ÑпаÑылаюцца на '''Ñтаронкі-неадназначнаÑьці'''.
ЗамеÑÑ‚ гÑтага, Ñны павінны ÑпаÑылацца на пÑÑžÐ½Ñ‹Ñ Ñтаронкі.<br />
Старонка лічыцца шматзначнай, калі Ñна ўтрымлівае шаблён назва Ñкога знаходзіцца на Ñтаронцы [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Ð”Ð²Ð°Ð¹Ð½Ñ‹Ñ Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ–',
-'doubleredirectstext' => 'Ðа гÑтай Ñтаронцы пададзены ÑÑŒÐ¿Ñ–Ñ Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½ÑÑž на Ñ–Ð½ÑˆÑ‹Ñ Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ–. Кожны радок утрымлівае ÑпаÑылкі на першае Ñ– другое перанакіраваньне, а такÑама мÑтавую Ñтаронку другога перанакіраваньнÑ, ÑÐºÐ°Ñ Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° зьÑўлÑецца «Ñапраўднай» мÑтавай Ñтаронкай, куды павіннае ÑпаÑылацца першае перанакіраваньне.
+'doubleredirects' => 'Ð”Ð²Ð°Ð¹Ð½Ñ‹Ñ Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ–',
+'doubleredirectstext' => 'Ðа гÑтай Ñтаронцы пададзены ÑÑŒÐ¿Ñ–Ñ Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½ÑÑž на Ñ–Ð½ÑˆÑ‹Ñ Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ–. Кожны радок утрымлівае ÑпаÑылкі на першае Ñ– другое перанакіраваньне, а такÑама мÑтавую Ñтаронку другога перанакіраваньнÑ, ÑÐºÐ°Ñ Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð° зьÑўлÑецца «Ñапраўднай» мÑтавай Ñтаронкай, куды павіннае ÑпаÑылацца першае перанакіраваньне.
<del>ЗакрÑÑьленыÑ</del> ÑлемÑнты былі выпраўленыÑ.',
-'double-redirect-fixed-move' => '[[$1]] была перанеÑенаÑ, Ñна цÑпер перанакіроўвае на [[$2]]',
-'double-redirect-fixer' => 'Выпраўленьне перанакіраваньнÑÑž',
+'double-redirect-fixed-move' => '[[$1]] была перанеÑенаÑ, Ñна цÑпер перанакіроўвае на [[$2]]',
+'double-redirect-fixed-maintenance' => 'Выпраўленьне падвойнага Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð· [[$1]] на [[$2]].',
+'double-redirect-fixer' => 'Выпраўленьне перанакіраваньнÑÑž',
'brokenredirects' => 'ÐекарÑÐºÑ‚Ð½Ñ‹Ñ Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ–',
'brokenredirectstext' => 'ÐаÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ð¿ÐµÑ€Ð°Ð½Ð°ÐºÑ–Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ– ÑпаÑылаюцца на неіÑÐ½ÑƒÑŽÑ‡Ñ‹Ñ Ñтаронкі:',
@@ -1938,6 +1989,7 @@ $1',
'pager-newer-n' => '$1 {{PLURAL:$1|навейшаÑ|навейшыÑ|навейшых}}',
'pager-older-n' => '$1 {{PLURAL:$1|ÑтарÑйшаÑ|ÑтарÑйшыÑ|ÑтарÑйшых}}',
'suppress' => 'РÑвізаваць',
+'querypage-disabled' => 'ГÑта ÑпÑцыÑÐ»ÑŒÐ½Ð°Ñ Ñтаронка Ð°Ð´ÐºÐ»ÑŽÑ‡Ð°Ð½Ð°Ñ Ð´Ð»Ñ Ð¿Ð°Ð´Ð²Ñ‹ÑˆÑÐ½ÑŒÐ½Ñ Ð¿Ñ€Ð°Ð´ÑƒÐºÑ†Ñ‹Ð¹Ð½Ð°Ñьці',
# Book sources
'booksources' => 'Пошук кніг',
@@ -1947,8 +1999,8 @@ $1',
'booksources-invalid-isbn' => 'Пададзены нÑÑлушны ISBN; праверце, магчыма ўзьніклі памылкі пры пераноÑе нумару з арыгінальнай крыніцы.',
# Special:Log
-'specialloguserlabel' => 'Удзельнік/удзельніца:',
-'speciallogtitlelabel' => 'Ðазва:',
+'specialloguserlabel' => 'Выканаўца:',
+'speciallogtitlelabel' => 'ÐœÑта (назва ці удзельнік):',
'log' => 'Журналы падзеÑÑž',
'all-logs-page' => 'УÑе Ð¿ÑƒÐ±Ð»Ñ–Ñ‡Ð½Ñ‹Ñ Ð¶ÑƒÑ€Ð½Ð°Ð»Ñ‹ падзеÑÑž',
'alllogstext' => 'СумеÑны паказ уÑÑ–Ñ… журналаў падзеÑÑž {{GRAMMAR:родны|{{SITENAME}}}}.
@@ -1988,12 +2040,13 @@ $1',
'sp-deletedcontributions-contribs' => 'унёÑак',
# Special:LinkSearch
-'linksearch' => 'Ð’Ð¾Ð½ÐºÐ°Ð²Ñ‹Ñ ÑпаÑылкі',
+'linksearch' => 'Пошук вонкавых ÑпаÑылках',
'linksearch-pat' => 'Узор Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ:',
'linksearch-ns' => 'ПраÑтора назваў:',
'linksearch-ok' => 'Шукаць',
'linksearch-text' => 'Можна ўжываць Ñымбалі падÑтаноўкі, напрыклад, «*.wikipedia.org».<br />
-Пратаколы, ÑÐºÑ–Ñ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð°: <tt>$1</tt>',
+Ðеабходны дамÑн першага ўзроўню, напрыклад, «*.org».<br />
+Пратаколы, ÑÐºÑ–Ñ Ð¿Ð°Ð´Ñ‚Ñ€Ñ‹Ð¼Ð»Ñ–Ð²Ð°ÑŽÑ†Ñ†Ð°: <tt>$1</tt> (не дадавайце Ñ–Ñ… у Ваш пошук).',
'linksearch-line' => 'СпаÑылка на $1 з $2',
'linksearch-error' => 'Сымбалі падÑтаноўкі могуць ужывацца толькі Ñž пачатку адраÑоў.',
@@ -2054,6 +2107,10 @@ $1',
'noemailtext' => 'ГÑÑ‚Ñ‹ удзельнік не пазначыў Ñлушны Ð°Ð´Ñ€Ð°Ñ Ñлектроннай пошты.',
'nowikiemailtitle' => 'Ðтрыманьне ліÑтоў па Ñлектроннай пошце забароненае',
'nowikiemailtext' => 'ГÑÑ‚Ñ‹ ўдзельнік не дазволіў атрымліваць ліÑÑ‚Ñ‹ па Ñлектроннай пошце ад іншых удзельнікаў.',
+'emailnotarget' => 'ÐеіÑнуючае ці нÑÑлушнае Ñ–Ð¼Ñ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ð»ÑŒÐ½Ñ–ÐºÐ°.',
+'emailtarget' => 'УвÑдзіце Ñ–Ð¼Ñ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ð»ÑŒÐ½Ñ–ÐºÐ°',
+'emailusername' => 'Ð†Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°:',
+'emailusernamesubmit' => 'ДаÑлаць',
'email-legend' => 'ДаÑлаць ліÑÑ‚ Ñлектроннай пошты іншаму ўдзельніку {{GRAMMAR:родны|{{SITENAME}}}}',
'emailfrom' => 'Ðд:',
'emailto' => 'Да:',
@@ -2078,10 +2135,10 @@ $1',
'watchlistanontext' => 'Вам патрÑбна $1, каб праглÑдаць альбо Ñ€Ñдагаваць ÑÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ.',
'watchnologin' => 'Ð’Ñ‹ не ўвайшлі Ñž ÑÑ‹ÑÑ‚Ñму',
'watchnologintext' => 'Вам неабходна [[Special:UserLogin|ўвайÑьці Ñž ÑÑ‹ÑÑ‚Ñму]], каб зьмÑніць Ваш ÑÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ.',
-'addedwatch' => 'Ð”Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ð°Ñ Ñž ÑÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ',
+'addwatch' => 'Дадаць Ñž ÑÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ',
'addedwatchtext' => "Старонка «[[:$1]]» была Ð´Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ð°Ñ Ð´Ð° Вашага [[Special:Watchlist|ÑьпіÑу назіраньнÑ]].
ÐаÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ð·ÑŒÐ¼ÐµÐ½Ñ‹ Ñž гÑтай Ñтаронцы Ñ– зьвÑзанай зь Ñ‘ÑŽ Ñтаронцы абмеркаваньнÑÑž будуць Ð±Ð°Ñ‡Ð½Ñ‹Ñ Ñ‚Ð°Ð¼, а Ñž [[Special:RecentChanges|ÑьпіÑе апошніх зьменаў]] Ñтаронка будзе выглÑдаць '''тлуÑтай''', каб зьмены было лÑгчÑй заўважыць.",
-'removedwatch' => 'Ð’Ñ‹Ð´Ð°Ð»ÐµÐ½Ð°Ñ Ñа ÑьпіÑу назіраньнÑ',
+'removewatch' => 'Выдаліць Ñа ÑьпіÑу назіраньнÑ',
'removedwatchtext' => 'Старонка «[[:$1]]» была Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ð°Ñ Ð· [[Special:Watchlist|Вашага ÑьпіÑу назіраньнÑ]].',
'watch' => 'Ðазіраць',
'watchthispage' => 'Ðазіраць за гÑтай Ñтаронкай',
@@ -2102,8 +2159,9 @@ $1',
'watchlist-options' => 'Ðалады ÑьпіÑу назіраньнÑ',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Дадаецца Ñž ÑÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ…',
-'unwatching' => 'ВыдалÑецца Ñа ÑьпіÑу назіраньнÑ…',
+'watching' => 'Дадаецца Ñž ÑÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ…',
+'unwatching' => 'ВыдалÑецца Ñа ÑьпіÑу назіраньнÑ…',
+'watcherrortext' => 'Узьнікла памылка Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð·ÑŒÐ¼ÐµÐ½Ñ‹ Вашага ÑьпіÑу Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ Ð´Ð»Ñ Â«$1».',
'enotif_mailer' => 'Служба паштовага апавÑшчÑÐ½ÑŒÐ½Ñ {{GRAMMAR:родны|{{SITENAME}}}}',
'enotif_reset' => 'Пазначыць уÑе Ñтаронкі Ñк прагледжаныÑ',
@@ -2135,16 +2193,16 @@ $NEWPAGE
--
Каб зьмÑніць налады абвÑшчÑÐ½ÑŒÐ½Ñ Ð¿Ñ€Ð°Ð· Ñлектронную пошту, наведайце:
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Каб зьмÑніць налады ÑьпіÑу назіраньнÑ, наведайце:
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Каб выдаліць Ñтаронку з Вашага ÑьпіÑу назіраньнÑ, наведайце:
$UNWATCHURL
Ð—Ð²Ð°Ñ€Ð¾Ñ‚Ð½Ð°Ñ ÑувÑзь Ñ– дапамога:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Выдаліць Ñтаронку',
@@ -2160,7 +2218,7 @@ $UNWATCHURL
Калі лаÑка, пацьвердзіце, што Ð’Ñ‹ зьбіраецеÑÑ Ð³Ñта зрабіць Ñ– што Ð’Ñ‹ разумееце ÑžÑе наÑтупÑтвы, а такÑама робіце гÑта Ñž адпаведнаÑьці з [[{{MediaWiki:Policy-url}}|правіламі]].',
'actioncomplete' => 'ДзеÑньне завершанае',
'actionfailed' => 'ДзеÑньне Ð½Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½Ð°Ðµ',
-'deletedtext' => '«<nowiki>$1</nowiki>» была выдаленаÑ.
+'deletedtext' => '«$1» была выдаленаÑ.
ГлÑдзіце журнал выдаленьнÑÑž у $2.',
'deletedarticle' => 'выдаліў «[[$1]]»',
'suppressedarticle' => 'Ñхаваў «[[$1]]»',
@@ -2218,7 +2276,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'ÐÑÑлушны Ñ‡Ð°Ñ ÑканчÑÐ½ÑŒÐ½Ñ Ð°Ð±Ð°Ñ€Ð¾Ð½Ñ‹.',
'protect_expiry_old' => 'ТÑрмін абароны прайшоў.',
'protect-unchain-permissions' => 'Дазволіць Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ абароны',
-'protect-text' => "Тут можна паглÑдзець Ñ– зьмÑніць узровень абароны Ñтаронкі '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Тут можна паглÑдзець Ñ– зьмÑніць узровень абароны Ñтаронкі '''$1'''.",
'protect-locked-blocked' => "Ð’Ñ‹ Ð½Ñ Ð¼Ð¾Ð¶Ð°Ñ†Ðµ зьмÑнÑць узровень абароны, пакуль Ð’Ñ‹ заблÑкаваны.
ЦÑÐ¿ÐµÑ€Ð°ÑˆÐ½Ñ–Ñ Ð½Ð°Ð»Ð°Ð´Ñ‹ Ð´Ð»Ñ Ñтаронкі '''$1''':",
'protect-locked-dblock' => "Узровень абароны Ð½Ñ Ð¼Ð¾Ð¶Ð° быць зьменены, таму што база зьвеÑтак заблÑкаванаÑ.
@@ -2273,8 +2331,8 @@ $UNWATCHURL
'undeletepagetext' => '{{PLURAL:$1|ÐаÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ñтаронка была выдаленаÑ, але Ñна знаходзÑцца Ñž архіве Ñ– можа быць адноўленаÑ|ÐаÑÑ‚ÑƒÐ¿Ð½Ñ‹Ñ Ñтаронкі былі выдаленыÑ, але Ñны знаходзÑцца Ñž архіве Ñ– могуць быць адноўленыÑ}}.
Ðрхіў пÑрыÑдычна чыÑьціцца.',
'undelete-fieldset-title' => 'Ðднавіць вÑÑ€ÑÑ–Ñ–',
-'undeleteextrahelp' => "Ð”Ð»Ñ Ð¿Ð¾ÑžÐ½Ð°Ð³Ð° Ð°Ð´Ð½Ð°ÑžÐ»ÐµÐ½ÑŒÐ½Ñ Ñтаронкі, пакіньце ÑžÑе адзнакі нÑвызначнымі Ñ– націÑьніце '''''Ðднавіць'''''.
-Ð”Ð»Ñ Ñ‡Ð°Ñтковага аднаўленьнÑ, пазначце Ñ‚Ñ‹Ñ Ð²ÑÑ€ÑÑ–Ñ– Ñтаронкі ÑÐºÑ–Ñ Ñ‚Ñ€Ñба аднавіць Ñ– націÑьніце '''''Ðднавіць'''''. ÐаціÑьніце '''''ÐчыÑьціць''''' Ð´Ð»Ñ Ñ‚Ð°Ð³Ð¾, каб зьнÑць уÑе адзнакі Ñ– ачыÑьціць поле камÑнтара.",
+'undeleteextrahelp' => "Ð”Ð»Ñ Ð¿Ð¾ÑžÐ½Ð°Ð³Ð° Ð°Ð´Ð½Ð°ÑžÐ»ÐµÐ½ÑŒÐ½Ñ Ð³Ñ–Ñторыі Ñ€ÑÐ´Ð°Ð³Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ñтаронкі, пакіньце ÑžÑе адзнакі нÑвызначнымі Ñ– націÑьніце '''''{{int:undeletebtn}}'''''.
+Ð”Ð»Ñ Ñ‡Ð°Ñтковага аднаўленьнÑ, пазначце Ñ‚Ñ‹Ñ Ð²ÑÑ€ÑÑ–Ñ– Ñтаронкі, ÑÐºÑ–Ñ Ñ‚Ñ€Ñба аднавіць Ñ– націÑьніце '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => 'У архіве $1 {{PLURAL:$1|вÑÑ€ÑÑ–Ñ|вÑÑ€ÑÑ–Ñ–|вÑÑ€Ñій}}',
'undeletehistory' => 'Калі Ð’Ñ‹ адновіце Ñтаронку, будуць Ð°Ð´Ð½Ð¾ÑžÐ»ÐµÐ½Ñ‹Ñ ÑžÑе Ñе вÑÑ€ÑÑ–Ñ– разам з журналам падзеÑÑž.
Калі паÑÑŒÐ»Ñ Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½ÑŒÐ½Ñ Ð±Ñ‹Ð»Ð° ÑÑ‚Ð²Ð¾Ñ€Ð°Ð½Ð°Ñ Ð½Ð¾Ð²Ð°Ñ Ñтаронка з такой жа назвай, Ð°Ð´Ð½Ð¾ÑžÐ»ÐµÐ½Ñ‹Ñ Ð²ÑÑ€ÑÑ–Ñ– зьÑвÑцца Ñž гіÑторыі перад новымі вÑÑ€ÑÑ–Ñмі.',
@@ -2319,9 +2377,12 @@ $1',
'undelete-show-file-submit' => 'Так',
# Namespace form on various pages
-'namespace' => 'ПраÑтора назваў:',
-'invert' => 'Ðдваротны выбар',
-'blanknamespace' => '(ÐÑноўнаÑ)',
+'namespace' => 'ПраÑтора назваў:',
+'invert' => 'Ðдваротны выбар',
+'tooltip-invert' => 'Пазначце гÑтае поле каб Ñхаваць зьмены Ñž Ñтаронках з выбранай праÑторы назваў (Ñ– зьвÑзнай праÑторы назваў, калі пазначана)',
+'namespace_association' => 'ЗьвÑÐ·Ð°Ð½Ð°Ñ Ð¿Ñ€Ð°Ñтора назваў',
+'tooltip-namespace_association' => 'Пазначце гÑтае поле каб уключыць проÑтору назваў абмеркаваньнÑÑž (альбо прадметную), зьвÑзаных з выбранай праÑторай назваў',
+'blanknamespace' => '(ÐÑноўнаÑ)',
# Contributions
'contributions' => 'УнёÑак',
@@ -2370,11 +2431,13 @@ $1',
'whatlinkshere-filters' => 'Фільтры',
# Block/unblock
+'autoblockid' => 'Ðўтаматычнае блÑкаваньне â„–$1',
+'block' => 'ЗаблÑкаваць удзельніка',
+'unblock' => 'РазблÑкаваць удзельніка',
'blockip' => 'БлÑкаваньне ўдзельніка ці ўдзельніцы',
'blockip-title' => 'БлÑкаваньне ўдзельніка ці ўдзельніцы',
'blockip-legend' => 'ЗаблÑкаваць удзельніка',
'blockiptext' => 'ÐаÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ñ„Ð¾Ñ€Ð¼Ð° дазвалÑе заблÑкаваць магчымаÑьць Ñ€ÑÐ´Ð°Ð³Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð· пÑўнага IP-адраÑу альбо Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°. ГÑта Ñ‚Ñ€Ñба рабіць толькі Ð´Ð·ÐµÐ»Ñ Ð¿Ñ€Ð°Ð´ÑƒÑ…Ñ–Ð»ÐµÐ½ÑŒÐ½Ñ Ð²Ð°Ð½Ð´Ð°Ð»Ñ–Ð·Ð¼Ñƒ Ñ– згодна з [[{{MediaWiki:Policy-url}}|правіламі]]. Пазначце ніжÑй дакладную прычыну (напрыклад, пералічыце аÑÐ¾Ð±Ð½Ñ‹Ñ Ñтаронкі, на Ñкіх былі парушÑньні).',
-'ipaddress' => 'IP-адраÑ:',
'ipadressorusername' => 'IP-Ð°Ð´Ñ€Ð°Ñ Ð°Ð»ÑŒÐ±Ð¾ Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°/ўдзельніцы:',
'ipbexpiry' => 'ТÑрмін:',
'ipbreason' => 'Прычына:',
@@ -2387,7 +2450,7 @@ $1',
** Ðбразы/пагрозы
** Злоўжываньне некалькімі рахункамі
** Ðедапушчальнае Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°',
-'ipbanononly' => 'БлÑкаваць толькі ананімаў',
+'ipb-hardblock' => 'Забараніць увайшоўшым удзельнікам Ñ€Ñдагаваць з гÑтага IP-адраÑу',
'ipbcreateaccount' => 'Забараніць ÑтварÑньне рахункаў',
'ipbemailban' => 'Забараніць удзельніку даÑылаць ліÑÑ‚Ñ‹ па Ñлектроннай пошце',
'ipbenableautoblock' => 'Ðўтаматычна блÑкаваць апошні IP-Ð°Ð´Ñ€Ð°Ñ Ð³Ñтага ўдзельніка, Ñ– ÑžÑÑ–Ñ… наÑтупных IP-адраÑоў зь Ñкіх ён будзе Ñпрабаваць Ñ€Ñдагаваць',
@@ -2398,12 +2461,15 @@ $1',
'ipbotherreason' => 'ІншаÑ/Ð´Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ð¿Ñ€Ñ‹Ñ‡Ñ‹Ð½Ð°:',
'ipbhidename' => 'Схаваць Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ° Ñž Ñ€ÑдагаваньнÑÑ… Ñ– ÑьпіÑах',
'ipbwatchuser' => 'Ðазіраць за Ñтаронкай удзельніка Ñ– Ñго гутаркамі',
-'ipballowusertalk' => 'Дазволіць гÑтаму ўдзельніку Ñ€Ñдагаваць улаÑную Ñтаронку гутарак, калі ён заблÑкаваны',
+'ipb-disableusertalk' => 'Забараніць удзельніку Ñ€Ñдагаваньне ўлаÑнай Ñтаронкі гутарак Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð±Ð»ÑкаваньнÑ',
'ipb-change-block' => 'ЗьмÑніць парамÑтры блÑкаваньнÑ',
+'ipb-confirm' => 'Пацьвердзіць блÑкаваньне',
'badipaddress' => 'ÐекарÑктны IP-адраÑ',
'blockipsuccesssub' => 'БлÑкаваньне паÑьпÑховае',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] {{GENDER:$1|быў заблÑкаваны|была заблÑкаванаÑ}}.
<br />ГлÑдзіце [[Special:IPBlockList|ÑÑŒÐ¿Ñ–Ñ Ð·Ð°Ð±Ð»Ñкаваных IP-адраÑоў]] Ð´Ð·ÐµÐ»Ñ Ð¿ÐµÑ€Ð°Ð³Ð»Ñду блÑкаваньнÑÑž.',
+'ipb-blockingself' => 'Ð’Ñ‹ зьбіраецеÑÑ Ð·Ð°Ð±Ð»Ñкаваць Ñамога ÑÑбе! Ð’Ñ‹ ўпÑўнены, што жадаеце гÑта зрабіць?',
+'ipb-confirmhideuser' => 'Ð’Ñ‹ зьбіраецеÑÑ Ð·Ð°Ð±Ð»Ñкаваць удзельніка Ñа ÑтатуÑам «Ñхаваны». ГÑтае дзеÑньне прывÑдзе да таго, што Ñго Ñ–Ð¼Ñ Ð·ÑŒÑвіцца ва ÑžÑÑ–Ñ… ÑьпіÑах Ñ– журналах уваходу. Ð’Ñ‹ ўпÑўнены, што жадаеце гÑта зрабіць?',
'ipb-edit-dropdown' => 'РÑдагаваць прычыны блÑкіровак',
'ipb-unblock-addr' => 'РазблÑкаваць $1',
'ipb-unblock' => 'РазблÑкаваць рахунак ўдзельніка ці IP-адраÑ',
@@ -2413,17 +2479,23 @@ $1',
'unblockiptext' => 'КарыÑтайцеÑÑ Ð¿Ð°Ð´Ð°Ð´Ð·ÐµÐ½Ð°Ð¹ ніжÑй формай Ð´Ð»Ñ Ð°Ð´Ð½Ð°ÑžÐ»ÐµÐ½ÑŒÐ½Ñ Ð¼Ð°Ð³Ñ‡Ñ‹Ð¼Ð°Ñьці Ñ€ÑÐ´Ð°Ð³Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð´Ð»Ñ Ñ€Ð°Ð½ÐµÐ¹ заблÑкаванага IP-адраÑу альбо рахунку ўдзельніка.',
'ipusubmit' => 'ЗьнÑць гÑта блÑкаваньне',
'unblocked' => '[[User:$1|$1]] быў разблÑкаваны.',
+'unblocked-range' => '$1 быў разблÑкаваны',
'unblocked-id' => 'БлÑкаваньне $1 зьнÑтае',
+'blocklist' => 'ЗаблÑÐºÐ°Ð²Ð°Ð½Ñ‹Ñ ÑƒÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÑ–',
'ipblocklist' => 'ЗаблÑÐºÐ°Ð²Ð°Ð½Ñ‹Ñ ÑƒÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÑ–',
'ipblocklist-legend' => 'Пошук заблÑкаванага ўдзельніка',
-'ipblocklist-username' => 'Ð†Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ°/ўдзельніцы альбо IP-адраÑ:',
-'ipblocklist-sh-userblocks' => '$1 блÑкаваньні рахункаў',
-'ipblocklist-sh-tempblocks' => '$1 чаÑÐ¾Ð²Ñ‹Ñ Ð±Ð»Ñкаваньні',
-'ipblocklist-sh-addressblocks' => '$1 блÑкаваньні аÑобных IP-адраÑоў',
+'blocklist-userblocks' => 'Схаваць блÑкаваньні рахункаў',
+'blocklist-tempblocks' => 'Схаваць чаÑÐ¾Ð²Ñ‹Ñ Ð±Ð»Ñкаваньні',
+'blocklist-addressblocks' => 'Схаваць блÑкаваньні аÑобных IP-адраÑоў',
+'blocklist-timestamp' => 'Дата/чаÑ',
+'blocklist-target' => 'ÐœÑта',
+'blocklist-expiry' => 'Сканчаецца',
+'blocklist-by' => 'ÐдмініÑтратар, Ñкі заблÑкаваў',
+'blocklist-params' => 'ПарамÑтры блÑкаваньнÑ',
+'blocklist-reason' => 'Прычына',
'ipblocklist-submit' => 'Шукаць',
'ipblocklist-localblock' => 'ЛÑкальнае блÑкаваньне',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Іншае блÑкаваньне|Ð†Ð½ÑˆÑ‹Ñ Ð±Ð»Ñкаваньні}}',
-'blocklistline' => '$1, $2 заблÑкаваў $3 ($4)',
'infiniteblock' => 'назаўÑёды',
'expiringblock' => 'канчаецца $1 $2',
'anononlyblock' => 'толькі ананімаў',
@@ -2443,7 +2515,7 @@ $1',
'blocklog-showsuppresslog' => 'ГÑÑ‚Ñ‹ ўдзельнік ужо заблÑкаваны Ñ– Ñхаваны. Журнал хаваньнÑÑž пададзены ніжÑй:',
'blocklogentry' => 'заблÑкаваны [[$1]] на Ñ‚Ñрмін: $2 $3',
'reblock-logentry' => 'Ð·ÑŒÐ¼ÐµÐ½ÐµÐ½Ñ‹Ñ Ð¿Ð°Ñ€Ð°Ð¼Ñтры блÑÐºÐ°Ð²Ð°Ð½ÑŒÐ½Ñ Ð´Ð»Ñ [[$1]] на Ñ‚Ñрмін: з $2 да $3',
-'blocklogtext' => 'ГÑта журнал уліку блÑкаваньнÑÑž Ñ– разблÑкаваньнÑÑž удзельнікаў. Ðўтаматычна заблÑÐºÐ°Ð²Ð°Ð½Ñ‹Ñ IP-адраÑÑ‹ не пазначаныÑ. ГлÑдзіце [[Special:IPBlockList|ÑÑŒÐ¿Ñ–Ñ Ð·Ð°Ð±Ð»Ñкаваных IP-адраÑоў]], каб пабачыць Ð´Ð·ÐµÐ¹Ð½Ñ‹Ñ Ñž гÑÑ‚Ñ‹ момант блÑкаваньні.',
+'blocklogtext' => 'ГÑта журнал уліку блÑкаваньнÑÑž Ñ– разблÑкаваньнÑÑž удзельнікаў. Ðўтаматычна заблÑÐºÐ°Ð²Ð°Ð½Ñ‹Ñ IP-адраÑÑ‹ не пазначаныÑ. ГлÑдзіце [[Special:BlockList|ÑÑŒÐ¿Ñ–Ñ Ð·Ð°Ð±Ð»Ñкаваных IP-адраÑоў]], каб пабачыць Ð´Ð·ÐµÐ¹Ð½Ñ‹Ñ Ñž гÑÑ‚Ñ‹ момант блÑкаваньні.',
'unblocklogentry' => 'разблÑкаваны $1',
'block-log-flags-anononly' => 'толькі Ð°Ð½Ð°Ð½Ñ–Ð¼Ð½Ñ‹Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÑ–',
'block-log-flags-nocreate' => 'ÑтварÑньне рахункаў забароненае',
@@ -2457,9 +2529,9 @@ $1',
'ipb_expiry_temp' => 'БлÑкаваньні Ñа Ñхаваньнем Ñ–Ð¼Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÐ° павінны быць беÑÑ‚Ñрміновымі.',
'ipb_hide_invalid' => 'Ðемагчыма Ñхаваць гÑÑ‚Ñ‹ рахунак; верагодна зь Ñго зроблена зашмат Ñ€ÑдагаваньнÑÑž.',
'ipb_already_blocked' => '«$1» ужо заблÑкаваны',
-'ipb-needreblock' => '== Ужо заблÑкаваны ==
-$1 ужо заблÑкаваны. Ð’Ñ‹ жадаеце зьмÑніць парамÑтры?',
+'ipb-needreblock' => '$1 ужо заблÑкаваны. Ð’Ñ‹ жадаеце зьмÑніць парамÑтры?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Іншае блÑкаваньне|Ð†Ð½ÑˆÑ‹Ñ Ð±Ð»Ñкаваньні}}',
+'unblock-hideuser' => 'Ð’Ñ‹ Ð½Ñ Ð¼Ð¾Ð¶Ð°Ñ†Ðµ разблÑкаваць гÑтага ўдзельніка, таму што Ñго Ñ–Ð¼Ñ Ð±Ñ‹Ð»Ð¾ Ñхаванае.',
'ipb_cant_unblock' => 'Памылка: ID блÑÐºÐ°Ð²Ð°Ð½ÑŒÐ½Ñ $1 Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ð°. Верагодна Ñно было ўжо зьнÑтае.',
'ipb_blocked_as_range' => 'Памылка: IP-Ð°Ð´Ñ€Ð°Ñ $1 быў заблÑкаваны наўпроÑÑ‚ Ñ– Ð½Ñ Ð¼Ð¾Ð¶Ð° быць разблÑкаваны.
Тым Ð½Ñ Ð¼ÐµÐ½Ñˆ, ён належыць да дыÑпазону $2, Ñкі можа быць разблÑкаваны.',
@@ -2499,6 +2571,7 @@ $1 ужо заблÑкаваны. Ð’Ñ‹ жадаеце зьмÑніць параÐ
'lockfilenotwritable' => 'Ðемагчыма запіÑаць у файл блÑкаваньнÑÑž базы зьвеÑтак.
БлÑкаваньне ці разблÑкаваньне базы зьвеÑтак патрабуе, каб вÑб-ÑÑрвÑÑ€ меў дазвол на Ð·Ð°Ð¿Ñ–Ñ Ñƒ гÑÑ‚Ñ‹ файл.',
'databasenotlocked' => 'База зьвеÑтак не заблÑкаванаÑ.',
+'lockedbyandtime' => '($1 $2 у $3)',
# Move page
'move-page' => 'ПеранеÑьці $1',
@@ -2621,7 +2694,7 @@ $1 ужо заблÑкаваны. Ð’Ñ‹ жадаеце зьмÑніць параÐ
'allmessagesdefault' => 'ТÑкÑÑ‚ па змоўчаньні',
'allmessagescurrent' => 'ЦÑперашні Ñ‚ÑкÑÑ‚',
'allmessagestext' => 'Ð¡ÑŒÐ¿Ñ–Ñ ÑƒÑÑ–Ñ… ÑÑ‹ÑÑ‚Ñмных паведамленьнÑÑž, ÑÐºÑ–Ñ Ñ–Ñнуюць у праÑторы назваў MediaWiki.
-Калі лаÑка, наведайце [http://www.mediawiki.org/wiki/Localisation Ñтаронку пра лÑкалізацыю MediaWiki] Ñ– [http://translatewiki.net translatewiki.net], калі Ð’Ñ‹ жадаеце ўдзельнічаць у перакладзе MediaWiki.',
+Калі лаÑка, наведайце [//www.mediawiki.org/wiki/Localisation Ñтаронку пра лÑкалізацыю MediaWiki] Ñ– [//translatewiki.net translatewiki.net], калі Ð’Ñ‹ жадаеце ўдзельнічаць у перакладзе MediaWiki.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' не падтрымліваецца, таму што адключанае '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'Фільтар',
'allmessages-filter' => 'Фільтар па Ñтане зьменаў:',
@@ -2763,9 +2836,7 @@ $1 ужо заблÑкаваны. Ð’Ñ‹ жадаеце зьмÑніць параÐ
'tooltip-summary' => 'УвÑдзіце кароткае апіÑаньне',
# Metadata
-'nodublincore' => 'ÐœÑтазьвеÑткі Dublin Core RDF Ð·Ð°Ð±Ð°Ñ€Ð¾Ð½ÐµÐ½Ñ‹Ñ Ð½Ð° гÑтым ÑÑрвÑры.',
-'nocreativecommons' => 'ÐœÑтазьвеÑткі Creative Commons RDF Ð·Ð°Ð±Ð°Ñ€Ð¾Ð½ÐµÐ½Ñ‹Ñ Ð½Ð° гÑтым ÑÑрвÑры.',
-'notacceptable' => 'Вікі-ÑÑрвÑÑ€ Ð½Ñ Ð¼Ð¾Ð¶Ð° адлюÑтраваць зьвеÑткі Ñž выглÑдзе, Ñкі здольны прачытаць Ваш браўзÑÑ€.',
+'notacceptable' => 'Вікі-ÑÑрвÑÑ€ Ð½Ñ Ð¼Ð¾Ð¶Ð° адлюÑтраваць зьвеÑткі Ñž выглÑдзе, Ñкі здольны прачытаць Ваш браўзÑÑ€.',
# Attribution
'anonymous' => '{{PLURAL:$1|Ðнанімны ўдзельнік ці ўдзельніца|ÐÐ½Ð°Ð½Ñ–Ð¼Ð½Ñ‹Ñ ÑžÐ´Ð·ÐµÐ»ÑŒÐ½Ñ–ÐºÑ– Ñ– ўдзельніцы}} {{GRAMMAR:родны|{{SITENAME}}}}',
@@ -2789,12 +2860,17 @@ $1 ужо заблÑкаваны. Ð’Ñ‹ жадаеце зьмÑніць параÐ
'spam_blanking' => 'УÑе вÑÑ€ÑÑ–Ñ– ўтрымліваюць ÑпаÑылкі на $1, чыÑтка',
# Info page
-'infosubtitle' => 'Ð†Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ Ð¿Ñ€Ð° Ñтаронку',
-'numedits' => 'КолькаÑьць зьменаў (Ñтаронкі): $1',
-'numtalkedits' => 'КолькаÑьць зьменаў (Ñтаронкі абмеркаваньнÑ): $1',
-'numwatchers' => 'КолькаÑьць назіральнікаў Ñ– назіральніц: $1',
-'numauthors' => 'КолькаÑьць розных аўтараў Ñ– аўтарак (Ñтаронкі): $1',
-'numtalkauthors' => 'КолькаÑьць розных аўтараў Ñ– аўтарак (Ñтаронкі абмеркаваньнÑ): $1',
+'pageinfo-title' => 'Ð†Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ Ð¿Ñ€Ð° «$1»',
+'pageinfo-header-edits' => 'РÑдагаваньні',
+'pageinfo-header-watchlist' => 'Ð¡ÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ',
+'pageinfo-header-views' => 'ПраглÑды',
+'pageinfo-subjectpage' => 'Старонка',
+'pageinfo-talkpage' => 'Старонка абмеркаваньнÑ',
+'pageinfo-watchers' => 'КолькаÑьць назіральнікаў Ñ– назіральніц',
+'pageinfo-edits' => 'КолькаÑьць Ñ€ÑдагаваньнÑÑž',
+'pageinfo-authors' => 'КолькаÑьць аўтараў',
+'pageinfo-views' => 'КолькаÑьць праглÑдаў',
+'pageinfo-viewsperedit' => 'КолькаÑьць праглÑдаў на Ñ€Ñдагаваньне',
# Skin names
'skinname-standard' => 'КлÑÑычнае',
@@ -2807,27 +2883,6 @@ $1 ужо заблÑкаваны. Ð’Ñ‹ жадаеце зьмÑніць параÐ
'skinname-modern' => 'СучаÑнае',
'skinname-vector' => 'Ð’Ñктар',
-# Math options
-'mw_math_png' => 'ЗаўÑёды паказваць Ñк PNG',
-'mw_math_simple' => 'HTML у проÑÑ‚Ñ‹Ñ… выпадках, інакш PNG',
-'mw_math_html' => 'HTML калі магчыма, інакш PNG',
-'mw_math_source' => 'Пакідаць у выглÑдзе TeX (Ð´Ð»Ñ Ñ‚ÑкÑтавых браўзÑраў)',
-'mw_math_modern' => 'РÑкамÑндуецца Ð´Ð»Ñ ÑучаÑных браўзÑраў',
-'mw_math_mathml' => 'MathML, калі магчыма (ÑкÑпÑрымÑнтальна)',
-
-# Math errors
-'math_failure' => 'Ðемагчыма разабраць',
-'math_unknown_error' => 'невÑÐ´Ð¾Ð¼Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°',
-'math_unknown_function' => 'невÑÐ´Ð¾Ð¼Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ‹Ñ',
-'math_lexing_error' => 'лекÑÑ‹Ñ‡Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°',
-'math_syntax_error' => 'ÑынтакÑÑ‹Ñ‡Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°',
-'math_image_error' => 'Памылка пераўтварÑÐ½ÑŒÐ½Ñ Ñž фармат PNG;
-праверце ÑлушнаÑьць уÑталÑÐ²Ð°Ð½ÑŒÐ½Ñ latex, dvips (ці dvips + gs + convert)',
-'math_bad_tmpdir' => 'Ðемагчыма запіÑаць ці Ñтварыць чаÑовую дырÑкторыю Ð´Ð»Ñ Ð¼Ð°Ñ‚Ñматыкі',
-'math_bad_output' => 'Ðемагчыма запіÑаць ці Ñтварыць выходную матÑматычную дырÑкторыю',
-'math_notexvc' => 'Выканаўчы модуль texvc Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹.
-Калі лаÑка, прачытайце math/README пра Ñго канфігурацыю.',
-
# Patrolling
'markaspatrolleddiff' => 'Пазначыць Ñк «патрулÑваную»',
'markaspatrolledtext' => 'Пазначыць гÑтую Ñтаронку Ñк «патрулÑваную»',
@@ -2863,21 +2918,24 @@ $1',
'nextdiff' => 'ÐаÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ð·ÑŒÐ¼ÐµÐ½Ð° →',
# Media information
-'mediawarning' => "'''ПапÑÑ€Ñджаньне''': гÑÑ‚Ñ‹ тып файл можа ўтрымліваць зламыÑны код. Яго выкананьне можа нашкодзіць вашай ÑÑ‹ÑÑ‚Ñме.",
-'imagemaxsize' => "Ðбмежаваньне памеру выÑваў: <br />''(Ð´Ð»Ñ Ñтаронак апіÑÐ°Ð½ÑŒÐ½Ñ Ñ„Ð°Ð¹Ð»Ð°Ñž)''",
-'thumbsize' => 'Памер паменшанай вÑÑ€ÑÑ–Ñ– выÑвы:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Ñтаронка|Ñтаронкі|Ñтаронак}}',
-'file-info' => 'памер файла: $1, тып MIME: $2',
-'file-info-size' => '$1 × $2 {{PLURAL:$2|пікÑÑль|пікÑÑлі|пікÑÑлÑÑž}}, памер файла: $3, тып MIME: $4',
-'file-nohires' => '<small>ÐÑма вÑÑ€ÑÑ–Ñ– зь лепшым разрозьненьнем.</small>',
-'svg-long-desc' => 'SVG-файл, намінальна $1 × $2 {{PLURAL:$2|пікÑÑль|пікÑÑлі|пікÑÑлÑÑž}}, памер файла: $3.',
-'show-big-image' => 'Ðайлепшае разрозьненьне',
-'show-big-image-thumb' => '<small>Памер пры папÑÑ€Ñднім праглÑдзе: $1 × $2 {{PLURAL:$2|пікÑÑль|пікÑÑлі|пікÑÑлÑÑž}}</small>',
-'file-info-gif-looped' => 'паўтараючыÑÑ',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|кадар|кадры|кадраў}}',
-'file-info-png-looped' => 'паўтараючыÑÑ',
-'file-info-png-repeat' => 'паўтораны $1 {{PLURAL:$1|раз|разы|разоў}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|кадар|кадры|кадраў}}',
+'mediawarning' => "'''ПапÑÑ€Ñджаньне''': гÑÑ‚Ñ‹ тып файл можа ўтрымліваць зламыÑны код. Яго выкананьне можа нашкодзіць вашай ÑÑ‹ÑÑ‚Ñме.",
+'imagemaxsize' => "Ðбмежаваньне памеру выÑваў: <br />''(Ð´Ð»Ñ Ñтаронак апіÑÐ°Ð½ÑŒÐ½Ñ Ñ„Ð°Ð¹Ð»Ð°Ñž)''",
+'thumbsize' => 'Памер паменшанай вÑÑ€ÑÑ–Ñ– выÑвы:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Ñтаронка|Ñтаронкі|Ñтаронак}}',
+'file-info' => 'памер файла: $1, тып MIME: $2',
+'file-info-size' => '$1 × $2 {{PLURAL:$2|пікÑÑль|пікÑÑлі|пікÑÑлÑÑž}}, памер файла: $3, тып MIME: $4',
+'file-info-size-pages' => '$1×$2 пікÑÑлаў, памер файла: $3, MIME-тып: $4, $5 {{PLURAL:$5|Ñтаронка|Ñтаронкі|Ñтаронак}}',
+'file-nohires' => '<small>ÐÑма вÑÑ€ÑÑ–Ñ– зь лепшым разрозьненьнем.</small>',
+'svg-long-desc' => 'SVG-файл, намінальна $1 × $2 {{PLURAL:$2|пікÑÑль|пікÑÑлі|пікÑÑлÑÑž}}, памер файла: $3.',
+'show-big-image' => 'Ðайлепшае разрозьненьне',
+'show-big-image-preview' => '<small>Памер праглÑду: $1.</small>',
+'show-big-image-other' => '<small>Ð†Ð½ÑˆÑ‹Ñ Ñ€Ð°Ð·Ñ€Ð¾Ð·ÑŒÐ½ÐµÐ½ÑŒÐ½Ñ–: $1.</small>',
+'show-big-image-size' => '$1 × $2 пікÑÑлаў',
+'file-info-gif-looped' => 'паўтараючыÑÑ',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|кадар|кадры|кадраў}}',
+'file-info-png-looped' => 'паўтараючыÑÑ',
+'file-info-png-repeat' => 'паўтораны $1 {{PLURAL:$1|раз|разы|разоў}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|кадар|кадры|кадраў}}',
# Special:NewFiles
'newimages' => 'ГалерÑÑ Ð½Ð¾Ð²Ñ‹Ñ… файлаў',
@@ -2907,14 +2965,20 @@ $1',
Калі файл Ñ€ÑдагаваўÑÑ Ð¿Ð°ÑÑŒÐ»Ñ ÑтварÑньнÑ, то чаÑтка зьвеÑтак можа не адпавÑдаць зьмененаму файлу.',
'metadata-expand' => 'Паказаць падрабÑзнаÑьці',
'metadata-collapse' => 'Схаваць падрабÑзнаÑьці',
-'metadata-fields' => 'Палі мÑтазьвеÑтак EXIF гÑтага ÑьпіÑу будуць адлюÑÑ‚Ñ€Ð°Ð²Ð°Ð½Ñ‹Ñ Ð½Ð° Ñтаронцы выÑвы, аÑÑ‚Ð°Ñ‚Ð½Ñ–Ñ Ð±ÑƒÐ´ÑƒÑ†ÑŒ ÑхаваныÑ.
+'metadata-fields' => 'Палі мÑта-зьвеÑтак выÑвы з гÑтага ÑьпіÑу будуць Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ð½Ð° Ñтаронцы выÑвы, калі табліца мÑта-зьвеÑтак будзе згорнутаÑ.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'ШырынÑ',
@@ -2929,13 +2993,11 @@ $1',
'exif-ycbcrpositioning' => 'Парадак разьмÑшчÑÐ½ÑŒÐ½Ñ ÐºÐ°Ð¼Ð¿Ð°Ð½Ñнтаў Y Ñ– C',
'exif-xresolution' => 'Гарызантальнае разрозьненьне',
'exif-yresolution' => 'Ð’Ñртыкальнае разрозьненьне',
-'exif-resolutionunit' => 'Ðдзінка вымÑÑ€ÑÐ½ÑŒÐ½Ñ Ñ€Ð°Ð·Ñ€Ð¾Ð·ÑŒÐ½ÐµÐ½ÑŒÐ½ÑÑž X Ñ– Y',
'exif-stripoffsets' => 'РазьмÑшчÑньне блёку зьвеÑтак',
'exif-rowsperstrip' => 'КолькаÑьць радкоў у блёку',
'exif-stripbytecounts' => 'Памер ÑьціÑнутага блёку',
'exif-jpeginterchangeformat' => 'РазьмÑшчÑньне пачатку блёку JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Байты JPEG-зьвеÑтак',
-'exif-transferfunction' => 'Ð¤ÑƒÐ½ÐºÑ†Ñ‹Ñ Ð¿ÐµÑ€Ð°ÑžÑ‚Ð²Ð°Ñ€ÑÐ½ÑŒÐ½Ñ ÐºÐ¾Ð»ÐµÑ€Ð°Ð²Ð°Ð¹ праÑторы',
'exif-whitepoint' => 'КолернаÑьць белага пункту',
'exif-primarychromaticities' => 'КолернаÑьць аÑноўных колераў',
'exif-ycbcrcoefficients' => 'КаÑфіцыенты пераўтварÑÐ½ÑŒÐ½Ñ ÐºÐ¾Ð»ÐµÑ€Ð°Ð²Ð°Ð¹ праÑторы',
@@ -2954,7 +3016,6 @@ $1',
'exif-compressedbitsperpixel' => 'Ð“Ð»Ñ‹Ð±Ñ–Ð½Ñ ÐºÐ¾Ð»ÐµÑ€Ñƒ паÑÑŒÐ»Ñ ÑьціÑканьнÑ',
'exif-pixelydimension' => 'Ð¨Ñ‹Ñ€Ñ‹Ð½Ñ Ð²Ñ‹Ñвы',
'exif-pixelxdimension' => 'Ð’Ñ‹ÑˆÑ‹Ð½Ñ Ð²Ñ‹Ñвы',
-'exif-makernote' => 'Заўвагі вытворцы',
'exif-usercomment' => 'КамÑнтары карыÑтальніка',
'exif-relatedsoundfile' => 'Датычны аўдыё-файл',
'exif-datetimeoriginal' => 'Дата Ñ– Ñ‡Ð°Ñ ÑƒÑ‚Ð²Ð°Ñ€ÑÐ½ÑŒÐ½Ñ Ð·ÑŒÐ²ÐµÑтак',
@@ -2968,7 +3029,6 @@ $1',
'exif-exposureprogram' => 'Праграма наÑьвÑтленьнÑ',
'exif-spectralsensitivity' => 'СпÑÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ð°Ð´Ñ‡ÑƒÐ²Ð°Ð»ÑŒÐ½Ð°Ñьць',
'exif-isospeedratings' => 'СьветаадчувальнаÑьць ISO',
-'exif-oecf' => 'КаÑфіцыент оптаÑлектроннага ператварÑньнÑ',
'exif-shutterspeedvalue' => 'Вытрымка',
'exif-aperturevalue' => 'ДыÑфрагма',
'exif-brightnessvalue' => 'ЯркаÑьць',
@@ -2982,7 +3042,6 @@ $1',
'exif-focallength-format' => '$1 мм',
'exif-subjectarea' => "Плошча аб'екту",
'exif-flashenergy' => 'ЭнÑÑ€Ð³Ñ–Ñ Ð±Ð»Ñ–Ñку',
-'exif-spatialfrequencyresponse' => 'ПраÑÑ‚Ð¾Ñ€Ð°Ð²Ð°Ñ Ñ‡Ð°ÑÑ‚Ð¾Ñ‚Ð½Ð°Ñ Ñ…Ð°Ñ€Ð°ÐºÑ‚Ð°Ñ€Ñ‹Ñтыка',
'exif-focalplanexresolution' => 'Разрозьненьне Ñž фокуÑнай плоÑкаÑьці па воÑÑ– X',
'exif-focalplaneyresolution' => 'Разрозьненьне Ñž фокуÑнай плоÑкаÑьці па воÑÑ– Y',
'exif-focalplaneresolutionunit' => 'Ðдзінка Ñ€Ð°Ð·Ñ€Ð¾Ð·ÑŒÐ½ÐµÐ½ÑŒÐ½Ñ Ñ„Ð¾ÐºÑƒÑнай плоÑкаÑьці',
@@ -2991,7 +3050,6 @@ $1',
'exif-sensingmethod' => 'Тып ÑÑнÑару',
'exif-filesource' => 'Крыніца файла',
'exif-scenetype' => 'Тып ÑцÑны',
-'exif-cfapattern' => 'Тып колеравага фільтру',
'exif-customrendered' => 'Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ð°Ñ Ð°Ð¿Ñ€Ð°Ñ†Ð¾ÑžÐºÐ°',
'exif-exposuremode' => 'Лад наÑьвÑтленьнÑ',
'exif-whitebalance' => 'БалÑÐ½Ñ Ð±ÐµÐ»Ð°Ð³Ð°',
@@ -3036,10 +3094,79 @@ $1',
'exif-gpsareainformation' => 'Ðазва GPS-зоны',
'exif-gpsdatestamp' => 'Дата GPS',
'exif-gpsdifferential' => 'ДыфÑÑ€ÑнцыÑÐ»ÑŒÐ½Ð°Ñ Ð¿Ð°Ð¿Ñ€Ð°ÑžÐºÐ° GPS',
+'exif-jpegfilecomment' => 'КамÑнтар да JPEG-файла',
+'exif-keywords' => 'ÐšÐ»ÑŽÑ‡Ð°Ð²Ñ‹Ñ Ñловы',
+'exif-worldregioncreated' => 'РÑгіён Ñьвету, дзе была Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ð°Ñ Ð²Ñ‹Ñва',
+'exif-countrycreated' => 'Краіна, дзе была Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ð°Ñ Ð²Ñ‹Ñва',
+'exif-countrycodecreated' => 'Код краіны, дзе была Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ð°Ñ Ð²Ñ‹Ñва',
+'exif-provinceorstatecreated' => 'ВоблаÑьць, Ð¿Ñ€Ð°Ð²Ñ–Ð½Ñ†Ñ‹Ñ Ñ†Ñ– штат, дзе была Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ð°Ñ Ð²Ñ‹Ñва',
+'exif-citycreated' => 'Горад, дзе была Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ð°Ñ Ð²Ñ‹Ñва',
+'exif-sublocationcreated' => 'Раён гораду, дзе была Ð·Ñ€Ð¾Ð±Ð»ÐµÐ½Ð°Ñ Ð²Ñ‹Ñва',
+'exif-worldregiondest' => 'Паказаны Ñ€Ñгіён Ñьвету',
+'exif-countrydest' => 'ÐŸÐ°ÐºÐ°Ð·Ð°Ð½Ð°Ñ ÐºÑ€Ð°Ñ–Ð½Ð°',
+'exif-countrycodedest' => 'Код паказанай краіны',
+'exif-provinceorstatedest' => 'ÐŸÐ°ÐºÐ°Ð·Ð°Ð½Ð°Ñ Ð²Ð¾Ð±Ð»Ð°Ñьць, Ð¿Ñ€Ð°Ð²Ñ–Ð½Ñ†Ñ‹Ñ Ñ†Ñ– штат',
+'exif-citydest' => 'Паказаны горад',
+'exif-sublocationdest' => 'Паказаны раён гораду',
'exif-objectname' => 'ÐšÐ°Ñ€Ð¾Ñ‚ÐºÐ°Ñ Ð½Ð°Ð·Ð²Ð°',
+'exif-specialinstructions' => 'СпÑцыÑÐ»ÑŒÐ½Ñ‹Ñ Ñ–Ð½Ñтрукцыі',
+'exif-headline' => 'Загаловак',
+'exif-credit' => 'Падаўшы выÑву',
+'exif-source' => 'Крыніца',
+'exif-editstatus' => 'РÑдакцыйны ÑÑ‚Ð°Ñ‚ÑƒÑ Ð²Ñ‹Ñвы',
+'exif-urgency' => 'ТÑрміноваÑьць',
+'exif-fixtureidentifier' => 'Ðазва Ñлупка',
+'exif-locationdest' => 'Паказанае меÑца',
+'exif-locationdestcode' => 'Код паказанага меÑца',
+'exif-objectcycle' => 'Ð§Ð°Ñ Ð´Ð½Ñ, Ð´Ð»Ñ Ñкога ўлаÑьцівае мÑдыÑ',
+'exif-contact' => 'ÐšÐ°Ð½Ñ‚Ð°ÐºÑ‚Ð½Ð°Ñ Ñ–Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ',
+'exif-writer' => 'Ðўтар',
+'exif-languagecode' => 'Мова',
+'exif-iimversion' => 'Ð’ÑÑ€ÑÑ–Ñ IIM',
+'exif-iimcategory' => 'КатÑгорыÑ',
+'exif-iimsupplementalcategory' => 'Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ ÐºÐ°Ñ‚Ñгорыі',
+'exif-datetimeexpires' => 'Ðе выкарыÑтоўваць паÑьлÑ',
+'exif-datetimereleased' => 'Ðпублікаванае',
+'exif-originaltransmissionref' => 'Код меÑца пачатковай перадачы',
+'exif-identifier' => 'ІдÑнтыфікатар',
+'exif-lens' => 'ВыкарыÑтаны аб’ектыў',
+'exif-serialnumber' => 'СÑрыйны нумар фотакамÑры',
+'exif-cameraownername' => 'УлаÑьнік фотакамÑры',
+'exif-label' => 'Метка',
+'exif-datetimemetadata' => 'Дата апошнÑй зьмены мÑта-зьвеÑтак',
+'exif-nickname' => 'ÐÐµÑ„Ð°Ñ€Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ Ð½Ð°Ð·Ð²Ð° выÑвы',
+'exif-rating' => 'Ðдзнака (да 5)',
+'exif-rightscertificate' => 'СÑртыфікат ÐºÑ–Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ñ–',
+'exif-copyrighted' => 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð°ÑžÑ‚Ð°Ñ€Ñкіх правоў',
+'exif-copyrightowner' => 'УлаÑьнік аўтарÑкіх правоў',
+'exif-usageterms' => 'Умовы выкарыÑтаньнÑ',
+'exif-webstatement' => 'ЗьвеÑткі пра аўтарÑÐºÑ–Ñ Ð¿Ñ€Ð°Ð²Ñ‹ анлÑйн',
+'exif-originaldocumentid' => 'Унікальны ідÑнтыфікатар ці арыгінальны дакумÑнт',
+'exif-licenseurl' => 'URL-Ð°Ð´Ñ€Ð°Ñ Ð°ÑžÑ‚Ð°Ñ€Ñкай ліцÑнзіі',
+'exif-morepermissionsurl' => 'Ð†Ð½Ñ„Ð°Ñ€Ð¼Ð°Ñ†Ñ‹Ñ Ð¿Ñ€Ð° ўмовы карыÑÑ‚Ð°Ð½ÑŒÐ½Ñ Ð½Ð° ўмовах іншых ліцÑнзіÑÑž',
+'exif-attributionurl' => 'ВыкарыÑтоўваючы гÑтую працу, калі лаÑка, ÑпаÑылайцеÑÑ Ð½Ð°',
+'exif-preferredattributionname' => 'ВыкарыÑтоўваючы гÑтую працу, калі лаÑка, пазначайце аўтара',
+'exif-pngfilecomment' => 'КамÑнтар да PNG-файла',
+'exif-disclaimer' => 'Ðдмова ад адказнаÑьці',
+'exif-contentwarning' => 'ПапÑÑ€Ñджаньне пра зьмеÑÑ‚',
+'exif-giffilecomment' => 'КамÑнтар да GIF-файла',
+'exif-intellectualgenre' => 'Тып ÑлемÑнту',
+'exif-subjectnewscode' => 'Код Ñ‚Ñмы',
+'exif-scenecode' => 'Код ÑцÑны IPTC',
+'exif-event' => 'ÐŸÐ°ÐºÐ°Ð·Ð°Ð½Ð°Ñ Ð¿Ð°Ð´Ð·ÐµÑ',
+'exif-organisationinimage' => 'ÐŸÐ°ÐºÐ°Ð·Ð°Ð½Ð°Ñ Ð°Ñ€Ð³Ð°Ð½Ñ–Ð·Ð°Ñ†Ñ‹Ñ',
+'exif-personinimage' => 'ÐŸÐ°ÐºÐ°Ð·Ð°Ð½Ð°Ñ Ð°Ñоба',
+'exif-originalimageheight' => 'Ð’Ñ‹ÑˆÑ‹Ð½Ñ Ð²Ñ‹Ñвы да кадраваньнÑ',
+'exif-originalimagewidth' => 'Ð¨Ñ‹Ñ€Ñ‹Ð½Ñ Ð²Ñ‹Ñвы да кадраваньнÑ',
# EXIF attributes
'exif-compression-1' => 'ÐÑÑьціÑнуты',
+'exif-compression-2' => 'CCITT Група 3 аднамернае абноўленае кадаваньне адлеглаÑьці Хафмана',
+'exif-compression-3' => 'CCITT Група 3 факÑымільнае кадаваньне',
+'exif-compression-4' => 'CCITT Група 4 факÑымільнае кадаваньне',
+
+'exif-copyrighted-true' => 'Ðхоўваецца аўтарÑкім правам',
+'exif-copyrighted-false' => 'Грамадзкі набытак',
'exif-unknowndate' => 'ÐевÑÐ´Ð¾Ð¼Ð°Ñ Ð´Ð°Ñ‚Ð°',
@@ -3055,6 +3182,8 @@ $1',
'exif-planarconfiguration-1' => 'фармат «chunky»',
'exif-planarconfiguration-2' => 'фармат «planar»',
+'exif-colorspace-65535' => 'Ðекалібраванае',
+
'exif-componentsconfiguration-0' => 'не Ñ–Ñнуе',
'exif-exposureprogram-0' => 'ÐÑ Ð²Ñ‹Ð·Ð½Ð°Ñ‡Ð°Ð½Ð°',
@@ -3168,6 +3297,10 @@ $1',
'exif-gpslongitude-e' => 'уÑходнÑй даўгаты',
'exif-gpslongitude-w' => 'заходнÑй даўгаты',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|мÑтар|мÑтры|мÑтраў}} над узроўнем мора',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|мÑтар|мÑтры|мÑтраў}} ніжÑй за ўзровень мора',
+
'exif-gpsstatus-a' => 'Ðдбываецца вымÑÑ€Ñньне',
'exif-gpsstatus-v' => 'ÐцÑнка магчымаÑьці ўзаемадзеÑÐ½ÑŒÐ½Ñ Ñетак',
@@ -3179,21 +3312,73 @@ $1',
'exif-gpsspeed-m' => 'мілÑÑž за гадзіну',
'exif-gpsspeed-n' => 'вузлоў',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'КілÑмÑтраў',
+'exif-gpsdestdistance-m' => 'МілÑÑž',
+'exif-gpsdestdistance-n' => 'МарÑкіх мілÑÑž',
+
+'exif-gpsdop-excellent' => 'Ð’Ñ‹Ð´Ð°Ñ‚Ð½Ð°Ñ ($1)',
+'exif-gpsdop-good' => 'Ð”Ð¾Ð±Ñ€Ð°Ñ ($1)',
+'exif-gpsdop-moderate' => 'СÑÑ€ÑднÑÑ ($1)',
+'exif-gpsdop-fair' => 'ÐŸÑ€Ñ‹Ð¹Ð¼Ð°Ð»ÑŒÐ½Ð°Ñ ($1)',
+'exif-gpsdop-poor' => 'ДрÑÐ½Ð½Ð°Ñ ($1)',
+
+'exif-objectcycle-a' => 'Толькі ўранку',
+'exif-objectcycle-p' => 'Толькі ўвечары',
+'exif-objectcycle-b' => 'Уранку і ўвечары',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Сапраўдны накірунак',
'exif-gpsdirection-m' => 'магнітны кірунак',
+'exif-ycbcrpositioning-1' => 'ЦÑнтраваны',
+'exif-ycbcrpositioning-2' => 'СумÑшчоныÑ',
+
+'exif-dc-contributor' => 'Сааўтары',
+'exif-dc-coverage' => 'ПраÑÑ‚Ð¾Ñ€Ð°Ð²Ñ‹Ñ Ñ†Ñ– чаÑÐ°Ð²Ñ‹Ñ Ð°Ð±Ð¼ÐµÐ¶Ð°Ð²Ð°Ð½ÑŒÐ½Ñ– мÑдыÑ',
+'exif-dc-date' => 'Дата(ы)',
+'exif-dc-publisher' => 'Выдавец',
+'exif-dc-relation' => 'ЗьвÑÐ·Ð°Ð½Ñ‹Ñ Ð¼ÑдыÑ',
+'exif-dc-rights' => 'Правы',
+'exif-dc-source' => 'Крынічнае мÑдыÑ',
+'exif-dc-type' => 'Тып мÑдыÑ',
+
+'exif-rating-rejected' => 'Ðдхіленае',
+
+'exif-isospeedratings-overflow' => 'Больш за 65535',
+
+'exif-iimcategory-ace' => 'МаÑтацтва, культура Ñ– забавы',
+'exif-iimcategory-clj' => 'Крымінал і права',
+'exif-iimcategory-dis' => 'КатаÑтрофы Ñ– здарÑньні',
+'exif-iimcategory-fin' => 'Эканоміка Ñ– бізнÑÑ',
+'exif-iimcategory-edu' => 'ÐдукацыÑ',
+'exif-iimcategory-evn' => 'Ðавакольнае аÑÑродзьдзе',
+'exif-iimcategory-hth' => 'Здароўе',
+'exif-iimcategory-hum' => 'ЗацікаўленаÑьці',
+'exif-iimcategory-lab' => 'Праца',
+'exif-iimcategory-lif' => 'Стыль Ð¶Ñ‹Ñ†ÑŒÑ†Ñ Ñ– вольны чаÑ',
+'exif-iimcategory-pol' => 'Палітыка',
+'exif-iimcategory-rel' => 'РÑÐ»Ñ–Ð³Ñ–Ñ Ñ– вера',
+'exif-iimcategory-sci' => 'Ðавука Ñ– Ñ‚Ñхналёгіі',
+'exif-iimcategory-soi' => 'СацыÑÐ»ÑŒÐ½Ñ‹Ñ Ð¿Ñ€Ð°Ð±Ð»ÐµÐ¼Ñ‹',
+'exif-iimcategory-spo' => 'Спорт',
+'exif-iimcategory-war' => 'Вайна, канфлікты Ñ– беÑпарадкі',
+'exif-iimcategory-wea' => 'Ðадвор’е',
+
+'exif-urgency-normal' => 'Ð—Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ð°Ñ ($1)',
+'exif-urgency-low' => 'ÐÑ–Ð·ÐºÐ°Ñ ($1)',
+'exif-urgency-high' => 'Ð’Ñ‹ÑÐ¾ÐºÐ°Ñ ($1)',
+'exif-urgency-other' => 'ПрыÑрытÑÑ‚ вызначаны карыÑтальнікам ($1)',
+
# External editor support
'edit-externally' => 'РÑдагаваць гÑÑ‚Ñ‹ файл з выкарыÑтаньнем вонкавай праграмы',
-'edit-externally-help' => '(ГлÑдзіце падрабÑзнаÑьці Ñž [http://www.mediawiki.org/wiki/Manual:External_editors інÑтрукцыі па наладцы] (па-ангельÑку))',
+'edit-externally-help' => '(ГлÑдзіце падрабÑзнаÑьці Ñž [//www.mediawiki.org/wiki/Manual:External_editors інÑтрукцыі па наладцы] (па-ангельÑку))',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'уÑе',
-'imagelistall' => 'уÑе',
-'watchlistall2' => 'уÑÑ‘',
-'namespacesall' => 'уÑе',
-'monthsall' => 'уÑе',
-'limitall' => 'уÑе',
+'watchlistall2' => 'уÑÑ‘',
+'namespacesall' => 'уÑе',
+'monthsall' => 'уÑе',
+'limitall' => 'уÑе',
# E-mail address confirmation
'confirmemail' => 'Пацьвердзіць Ð°Ð´Ñ€Ð°Ñ Ñлектроннай пошты',
@@ -3263,11 +3448,12 @@ $1',
'trackbackdeleteok' => 'Trackback быў паÑьпÑхова выдалены.',
# Delete conflict
-'deletedwhileediting' => "'''Увага''': ГÑÑ‚Ð°Ñ Ñтаронка была Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ð°Ñ Ð¿Ð°ÑÑŒÐ»Ñ Ñ‚Ð°Ð³Ð¾, Ñк Ð’Ñ‹ пачалі Ñе Ñ€Ñдагаваньне!",
-'confirmrecreate' => "{{GENDER:$1|Удзельнік|Удзельніца}} [[User:$1|$1]] ([[User talk:$1|гутаркі]]) {{GENDER:$1|выдаліў|выдаліла}} гÑтую Ñтаронку, перад тым Ñк Ð’Ñ‹ пачалі Ñе Ñ€Ñдагаваць, з прычыны:
+'deletedwhileediting' => "'''Увага''': ГÑÑ‚Ð°Ñ Ñтаронка была Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ð°Ñ Ð¿Ð°ÑÑŒÐ»Ñ Ñ‚Ð°Ð³Ð¾, Ñк Ð’Ñ‹ пачалі Ñе Ñ€Ñдагаваньне!",
+'confirmrecreate' => "{{GENDER:$1|Удзельнік|Удзельніца}} [[User:$1|$1]] ([[User talk:$1|гутаркі]]) {{GENDER:$1|выдаліў|выдаліла}} гÑтую Ñтаронку, перад тым Ñк Ð’Ñ‹ пачалі Ñе Ñ€Ñдагаваць, з прычыны:
: ''$2''
Калі лаÑка, пацьвердзіце, што Ð’Ñ‹ Ñапраўды жадаеце Ñтварыць нанава гÑтую Ñтаронку.",
-'recreate' => 'Стварыць ізноў',
+'confirmrecreate-noreason' => '{{GENDER:$1|Удзельнік|Удзельніца}} [[User:$1|$1]] ([[User talk:$1|гутаркі]]) {{GENDER:$1|выдаліў|выдаліла}} гÑтую Ñтаронку, паÑÑŒÐ»Ñ Ñ‚Ð°Ð³Ð¾ Ñк Ð’Ñ‹ пачалі Ñе Ñ€Ñдагаваць. Калі лаÑка, пацьвердзіце, што Ð’Ñ‹ Ñапраўды жадаеце Ñтварыць гÑтую Ñтаронку ізноў.',
+'recreate' => 'Стварыць ізноў',
'unit-pixel' => 'пкÑ',
@@ -3276,6 +3462,12 @@ $1',
'confirm-purge-top' => 'ÐчыÑьціць кÑш гÑтай Ñтаронкі?',
'confirm-purge-bottom' => 'ÐчыÑтка кÑшу Ñтаронкі прывÑдзе да адлюÑÑ‚Ñ€Ð°Ð²Ð°Ð½ÑŒÐ½Ñ Ñе апошнÑй вÑÑ€ÑÑ–Ñ–.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Добра',
+'confirm-watch-top' => 'Дадаць гÑтую Ñтаронку Ñž Ваш ÑÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ?',
+'confirm-unwatch-button' => 'Добра',
+'confirm-unwatch-top' => 'Выдаліць гÑтую Ñтаронку з Вашага ÑьпіÑу назіраньнÑ?',
+
# Multipage image navigation
'imgmultipageprev' => '↠папÑÑ€ÑднÑÑ Ñтаронка',
'imgmultipagenext' => 'наÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ñтаронка →',
@@ -3325,7 +3517,7 @@ $1',
'watchlistedit-normal-legend' => 'Выдаленьне Ñтаронак Ñа ÑьпіÑу назіраньнÑ',
'watchlistedit-normal-explain' => 'ÐіжÑй Ð¿Ð°Ð´Ð°Ð½Ñ‹Ñ Ñтаронкі з Вашага ÑьпіÑу назіраньнÑ.
Ð”Ð»Ñ Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½ÑŒÐ½Ñ Ñтаронкі Ñа ÑьпіÑу пазначце Ð°Ð´Ð¿Ð°Ð²ÐµÐ´Ð½Ñ‹Ñ Ð¿Ð°Ð·Ñ‹Ñ†Ñ‹Ñ– Ñ– націÑьніце кнопку «{{int:Watchlistedit-normal-submit}}».
-ТакÑама Ð’Ñ‹ можаце [[Special:Watchlist/raw|Ñ€Ñдагаваць нефарматаваны ÑÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ]].',
+ТакÑама Ð’Ñ‹ можаце [[Special:EditWatchlist/raw|Ñ€Ñдагаваць нефарматаваны ÑÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ]].',
'watchlistedit-normal-submit' => 'Выдаліць Ñа ÑьпіÑу',
'watchlistedit-normal-done' => '$1 {{PLURAL:$1|Ð·Ð°Ð¿Ñ–Ñ Ð±Ñ‹Ñž выдалены|запіÑÑ‹ былі выдаленыÑ|запіÑаў былі выдаленыÑ}} з Вашага ÑьпіÑу назіраньнÑ:',
'watchlistedit-raw-title' => 'РÑдагаваць нефарматаваны ÑÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ',
@@ -3333,7 +3525,7 @@ $1',
'watchlistedit-raw-explain' => 'ÐіжÑй пададзены ÑÑŒÐ¿Ñ–Ñ Ñтаронак Вашага ÑьпіÑу назіраньнÑ, Ñ– Ð’Ñ‹ можаце Ñго Ñ€Ñдагаваць, дадаючы Ñ– выдалÑючы радкі з назвамі Ñтаронак;
адна назва Ñтаронкі Ñž радку.
ПаÑÑŒÐ»Ñ Ð·Ð°ÐºÐ°Ð½Ñ‡ÑÐ½ÑŒÐ½Ñ Ñ€ÑдагаваньнÑ, націÑьніце «{{int:Watchlistedit-raw-submit}}».
-ТакÑама Ð’Ñ‹ можаце [[Special:Watchlist/edit|выкарыÑтаць Ñтандартны інтÑрфÑÐ¹Ñ Ñ€ÑдагаваньнÑ]].',
+ТакÑама Ð’Ñ‹ можаце [[Special:EditWatchlist|выкарыÑтаць Ñтандартны інтÑрфÑÐ¹Ñ Ñ€ÑдагаваньнÑ]].',
'watchlistedit-raw-titles' => 'Ðазвы:',
'watchlistedit-raw-submit' => 'Ðбнавіць ÑÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ',
'watchlistedit-raw-done' => 'Ваш ÑÑŒÐ¿Ñ–Ñ Ð½Ð°Ð·Ñ–Ñ€Ð°Ð½ÑŒÐ½Ñ Ð±Ñ‹Ñž абноўлены.',
@@ -3350,33 +3542,33 @@ $1',
'duplicate-defaultsort' => 'ПапÑÑ€Ñджаньне: Ключ Ñартыроўкі па змоўчваньні «$2» замÑнÑе папÑÑ€Ñдні ключ Ñартыроўкі па змоўчваньні «$1».',
# Special:Version
-'version' => 'Ð’ÑÑ€ÑÑ–Ñ',
-'version-extensions' => 'УÑталÑÐ²Ð°Ð½Ñ‹Ñ Ð¿Ð°ÑˆÑ‹Ñ€Ñньні',
-'version-specialpages' => 'СпÑцыÑÐ»ÑŒÐ½Ñ‹Ñ Ñтаронкі',
-'version-parserhooks' => 'ПрацÑдуры-перахопнікі парÑÑра',
-'version-variables' => 'ЗьменныÑ',
-'version-skins' => 'Ðфармленьні',
-'version-other' => 'ІншыÑ',
-'version-mediahandlers' => 'Ðпрацоўшчыкі мÑдыÑ',
-'version-hooks' => 'ПрацÑдуры-перахопнікі',
-'version-extension-functions' => 'Функцыі пашырÑньнÑÑž',
-'version-parser-extensiontags' => 'ТÑгі пашырÑньнÑÑž парÑÑра',
-'version-parser-function-hooks' => 'Перахопнікі функцыÑÑž парÑÑра',
-'version-skin-extension-functions' => 'Функцыі пашырÑÐ½ÑŒÐ½Ñ Ð°Ñ„Ð°Ñ€Ð¼Ð»ÐµÐ½ÑŒÐ½ÑÑž',
-'version-hook-name' => 'Ðазва працÑдуры-перахопніка',
-'version-hook-subscribedby' => 'ПадпіÑаны на',
-'version-version' => '(Ð’ÑÑ€ÑÑ–Ñ $1)',
-'version-license' => 'ЛіцÑнзіÑ',
-'version-poweredby-credits' => "{{SITENAME}} працуе на праграмным забеÑьпÑчÑньні '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'іншыÑ',
-'version-license-info' => 'MediaWiki зьÑўлÑецца вольным праграмным забеÑьпÑчÑньнем, Ñкое Ð’Ñ‹ можаце раÑпаўÑюджваць Ñ–/ці зьмÑнÑць на ўмовах ліцÑнзіі GNU General Public License вÑÑ€ÑÑ–Ñ– 2 ці болей позьнÑй, апублікаванай ФундацыÑй вольнага праграмнага забеÑьпÑчÑÐ½ÑŒÐ½Ñ (Free Software Foundation).
+'version' => 'Ð’ÑÑ€ÑÑ–Ñ',
+'version-extensions' => 'УÑталÑÐ²Ð°Ð½Ñ‹Ñ Ð¿Ð°ÑˆÑ‹Ñ€Ñньні',
+'version-specialpages' => 'СпÑцыÑÐ»ÑŒÐ½Ñ‹Ñ Ñтаронкі',
+'version-parserhooks' => 'ПрацÑдуры-перахопнікі парÑÑра',
+'version-variables' => 'ЗьменныÑ',
+'version-antispam' => 'Ðбарона ад Ñпаму',
+'version-skins' => 'Ðфармленьні',
+'version-other' => 'ІншыÑ',
+'version-mediahandlers' => 'Ðпрацоўшчыкі мÑдыÑ',
+'version-hooks' => 'ПрацÑдуры-перахопнікі',
+'version-extension-functions' => 'Функцыі пашырÑньнÑÑž',
+'version-parser-extensiontags' => 'ТÑгі пашырÑньнÑÑž парÑÑра',
+'version-parser-function-hooks' => 'Перахопнікі функцыÑÑž парÑÑра',
+'version-hook-name' => 'Ðазва працÑдуры-перахопніка',
+'version-hook-subscribedby' => 'ПадпіÑаны на',
+'version-version' => '(Ð’ÑÑ€ÑÑ–Ñ $1)',
+'version-license' => 'ЛіцÑнзіÑ',
+'version-poweredby-credits' => "{{SITENAME}} працуе на праграмным забеÑьпÑчÑньні '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'іншыÑ',
+'version-license-info' => 'MediaWiki зьÑўлÑецца вольным праграмным забеÑьпÑчÑньнем, Ñкое Ð’Ñ‹ можаце раÑпаўÑюджваць Ñ–/ці зьмÑнÑць на ўмовах ліцÑнзіі GNU General Public License вÑÑ€ÑÑ–Ñ– 2 ці болей позьнÑй, апублікаванай ФундацыÑй вольнага праграмнага забеÑьпÑчÑÐ½ÑŒÐ½Ñ (Free Software Foundation).
MediaWiki раÑпаўÑюджваецца з надзеÑй, што будзе карыÑным, але БЕЗ ÐÐІЯКІХ ГÐРÐÐТЫЯЎ, нават без меркаваных гарантыÑÑž КÐМЭРЦЫЙÐÐЙ КÐШТОЎÐÐСЬЦІ ці ПРЫДÐТÐÐСЬЦІ ДРПЭЎÐÐЙ МЭТЫ. ГлÑдзіце ліцÑнзію GNU General Public License Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐ¹ падрабÑзных зьвеÑтак.
-Ð’Ñ‹ муÑілі атрымаць [{{SERVER}}{{SCRIPTPATH}}/COPYING копію GNU General Public License] разам з гÑтым праграмным забеÑьпÑчÑньнем. Калі не, напішыце Free Software Foundation, Inc. па адраÑе 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, альбо прачытайце [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html он-лайн копію ліцÑнзіі].',
-'version-software' => 'УÑталÑванае праграмнае забеÑьпÑчÑньне',
-'version-software-product' => 'Прадукт',
-'version-software-version' => 'Ð’ÑÑ€ÑÑ–Ñ',
+Ð’Ñ‹ муÑілі атрымаць [{{SERVER}}{{SCRIPTPATH}}/COPYING копію GNU General Public License] разам з гÑтым праграмным забеÑьпÑчÑньнем. Калі не, напішыце Free Software Foundation, Inc. па адраÑе 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, альбо прачытайце [//www.gnu.org/licenses/old-licenses/gpl-2.0.html он-лайн копію ліцÑнзіі].',
+'version-software' => 'УÑталÑванае праграмнае забеÑьпÑчÑньне',
+'version-software-product' => 'Прадукт',
+'version-software-version' => 'Ð’ÑÑ€ÑÑ–Ñ',
# Special:FilePath
'filepath' => 'ШлÑÑ… да файла',
@@ -3386,22 +3578,22 @@ MediaWiki раÑпаўÑюджваецца з надзеÑй, што будзе
Ð’Ñ‹Ñвы Ð¿Ð°ÐºÐ°Ð·Ð°Ð½Ñ‹Ñ Ñž поўным выглÑдзе, аÑÑ‚Ð°Ñ‚Ð½Ñ–Ñ Ñ‚Ñ‹Ð¿Ñ‹ файлаў адкрываюцца прыпіÑанымі да Ñ–Ñ… праграмамі.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Пошук дублікатаў файлаў',
-'fileduplicatesearch-summary' => 'Пошук аднолькавых файлаў на падÑтаве Ñ–Ñ… Ñ…Ñшаў.
-
-УвÑдзіце назву файла бÑз прÑфікÑу «{{ns:file}}:».',
-'fileduplicatesearch-legend' => 'Пошук аднолькавых файлаў',
-'fileduplicatesearch-filename' => 'Ðазва файла:',
-'fileduplicatesearch-submit' => 'Шукаць',
-'fileduplicatesearch-info' => '$1 × $2 пікÑÑлÑÑž<br />Памер файла: $3<br />Тып MIME: $4',
-'fileduplicatesearch-result-1' => 'Файл «$1» Ð½Ñ Ð¼Ð°Ðµ ідÑнтычных копіÑÑž.',
-'fileduplicatesearch-result-n' => 'Файл «$1» мае $2 {{PLURAL:$2|ідÑнтычную копію|ідÑÐ½Ñ‚Ñ‹Ñ‡Ð½Ñ‹Ñ ÐºÐ¾Ð¿Ñ–Ñ–|ідÑнтычных копіÑÑž}}.',
+'fileduplicatesearch' => 'Пошук дублікатаў файлаў',
+'fileduplicatesearch-summary' => 'Пошук аднолькавых файлаў на падÑтаве Ñ–Ñ… Ñ…Ñшаў.',
+'fileduplicatesearch-legend' => 'Пошук аднолькавых файлаў',
+'fileduplicatesearch-filename' => 'Ðазва файла:',
+'fileduplicatesearch-submit' => 'Шукаць',
+'fileduplicatesearch-info' => '$1 × $2 пікÑÑлÑÑž<br />Памер файла: $3<br />Тып MIME: $4',
+'fileduplicatesearch-result-1' => 'Файл «$1» Ð½Ñ Ð¼Ð°Ðµ ідÑнтычных копіÑÑž.',
+'fileduplicatesearch-result-n' => 'Файл «$1» мае $2 {{PLURAL:$2|ідÑнтычную копію|ідÑÐ½Ñ‚Ñ‹Ñ‡Ð½Ñ‹Ñ ÐºÐ¾Ð¿Ñ–Ñ–|ідÑнтычных копіÑÑž}}.',
+'fileduplicatesearch-noresults' => 'Файл з назвай «$1» Ð½Ñ Ð·Ð½Ð¾Ð¹Ð´Ð·ÐµÐ½Ñ‹.',
# Special:SpecialPages
'specialpages' => 'СпÑцыÑÐ»ÑŒÐ½Ñ‹Ñ Ñтаронкі',
'specialpages-note' => '----
* Ð—Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ñ‹Ñ ÑпÑцыÑÐ»ÑŒÐ½Ñ‹Ñ Ñтаронкі.
-* <strong class="mw-specialpagerestricted">СпÑцыÑÐ»ÑŒÐ½Ñ‹Ñ Ñтаронкі з абмежаваным доÑтупам.</strong>',
+* <strong class="mw-specialpagerestricted">СпÑцыÑÐ»ÑŒÐ½Ñ‹Ñ Ñтаронкі з абмежаваным доÑтупам.</strong>
+* <span class="mw-specialpagecached">КÑÑˆÐ°Ð²Ð°Ð½Ñ‹Ñ ÑпÑцыÑÐ»ÑŒÐ½Ñ‹Ñ Ñтаронкі (могуць быць ÑаÑтарÑлымі).</span>',
'specialpages-group-maintenance' => 'ТÑÑ…Ð½Ñ–Ñ‡Ð½Ñ‹Ñ Ñправаздачы',
'specialpages-group-other' => 'Ð†Ð½ÑˆÑ‹Ñ ÑпÑцыÑÐ»ÑŒÐ½Ñ‹Ñ Ñтаронкі',
'specialpages-group-login' => 'Уваход / ÑтварÑньне рахунку',
diff --git a/languages/messages/MessagesBg.php b/languages/messages/MessagesBg.php
index e79919b7..f1bf8888 100644
--- a/languages/messages/MessagesBg.php
+++ b/languages/messages/MessagesBg.php
@@ -62,6 +62,7 @@ $magicWords = array(
'toc' => array( '0', '__СЪДЪРЖÐÐИЕ__', '__TOC__' ),
'noeditsection' => array( '0', '__БЕЗ_РЕДÐКТИРÐÐЕ_ÐÐ_РÐЗДЕЛИ__', '__NOEDITSECTION__' ),
'currentmonth' => array( '1', 'ТЕКУЩМЕСЕЦ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'ТЕКУЩМЕСЕЦ1', 'CURRENTMONTH1' ),
'currentmonthname' => array( '1', 'ТЕКУЩМЕСЕЦИМЕ', 'CURRENTMONTHNAME' ),
'currentmonthnamegen' => array( '1', 'ТЕКУЩМЕСЕЦИМЕРОД', 'CURRENTMONTHNAMEGEN' ),
'currentmonthabbrev' => array( '1', 'ТЕКУЩМЕСЕЦСЪКР', 'CURRENTMONTHABBREV' ),
@@ -75,7 +76,9 @@ $magicWords = array(
'numberofarticles' => array( '1', 'БРОЙСТÐТИИ', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'БРОЙФÐЙЛОВЕ', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'БРОЙПОТРЕБИТЕЛИ', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'БРОЙÐКТИВÐИПОТРЕБИТЕЛИ', 'NUMBEROFACTIVEUSERS' ),
'numberofedits' => array( '1', 'БРОЙРЕДÐКЦИИ', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'БРОЙПРЕГЛЕДИ', 'NUMBEROFVIEWS' ),
'pagename' => array( '1', 'СТРÐÐИЦÐ', 'PAGENAME' ),
'pagenamee' => array( '1', 'СТРÐÐИЦÐИ', 'PAGENAMEE' ),
'namespace' => array( '1', 'ИМЕÐÐОПРОСТРÐÐСТВО', 'NAMESPACE' ),
@@ -108,6 +111,7 @@ $magicWords = array(
'servername' => array( '0', 'ИМЕÐÐСЪРВЪРÐ', 'SERVERNAME' ),
'scriptpath' => array( '0', 'ПЪТДОСКРИПТÐ', 'SCRIPTPATH' ),
'grammar' => array( '0', 'ГРÐÐœÐТИКÐ:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'ПОЛ:', 'GENDER:' ),
'currentweek' => array( '1', 'ТЕКУЩÐСЕДМИЦÐ', 'CURRENTWEEK' ),
'currentdow' => array( '1', 'ТЕКУЩ_ДЕÐ_ОТ_СЕДМИЦÐТÐ', 'CURRENTDOW' ),
'revisionid' => array( '1', 'ИД_ÐÐ_ВЕРСИЯТÐ', 'REVISIONID' ),
@@ -129,97 +133,100 @@ $magicWords = array(
'numberofadmins' => array( '1', 'БРОЙÐДМИÐИСТРÐТОРИ', 'NUMBEROFADMINS' ),
'defaultsort' => array( '1', 'СОРТКÐТ:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
'hiddencat' => array( '1', '__СКРИТÐКÐТЕГОРИЯ__', '__HIDDENCAT__' ),
+ 'index' => array( '1', '__ИÐДЕКСИРÐÐЕ__', '__INDEX__' ),
+ 'noindex' => array( '1', '__БЕЗИÐДЕКСИРÐÐЕ__', '__NOINDEX__' ),
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Двойни пренаÑочваниÑ' ),
- 'BrokenRedirects' => array( 'Ðевалидни пренаÑочваниÑ' ),
- 'Disambiguations' => array( 'ПоÑÑнителни Ñтраници' ),
- 'Userlogin' => array( 'РегиÑтриране или влизане' ),
- 'Userlogout' => array( 'Излизане' ),
- 'CreateAccount' => array( 'Създаване на Ñметка' ),
- 'Preferences' => array( 'ÐаÑтройки' ),
- 'Watchlist' => array( 'СпиÑък за наблюдение' ),
- 'Recentchanges' => array( 'ПоÑледни промени' ),
- 'Upload' => array( 'Качване' ),
- 'Listfiles' => array( 'Файлове' ),
- 'Newimages' => array( 'Ðови файлове' ),
- 'Listusers' => array( 'Потребители' ),
- 'Listgrouprights' => array( 'Групови права' ),
- 'Statistics' => array( 'СтатиÑтика' ),
- 'Randompage' => array( 'Случайна Ñтраница' ),
- 'Lonelypages' => array( 'Страници Ñираци' ),
- 'Uncategorizedpages' => array( 'Ðекатегоризирани Ñтраници' ),
- 'Uncategorizedcategories' => array( 'Ðекатегоризирани категории' ),
- 'Uncategorizedimages' => array( 'Ðекатегоризирани картинки' ),
- 'Uncategorizedtemplates' => array( 'Ðекатегоризирани шаблони' ),
- 'Unusedcategories' => array( 'Ðеизползвани категории' ),
- 'Unusedimages' => array( 'Ðеизползвани картинки' ),
- 'Wantedpages' => array( 'Желани Ñтраници' ),
- 'Wantedcategories' => array( 'Желани категории' ),
- 'Wantedfiles' => array( 'Желани файлове' ),
- 'Wantedtemplates' => array( 'Желани шаблони' ),
- 'Mostlinked' => array( 'Ðай-препращани Ñтраници' ),
- 'Mostlinkedcategories' => array( 'Ðай-препращани категории' ),
- 'Mostlinkedtemplates' => array( 'Ðай-препращани шаблони' ),
- 'Mostimages' => array( 'Ðай-препращани картинки' ),
- 'Mostcategories' => array( 'Страници Ñ Ð½Ð°Ð¹-много категории' ),
- 'Mostrevisions' => array( 'Страници Ñ Ð½Ð°Ð¹-много верÑии' ),
- 'Fewestrevisions' => array( 'Страници Ñ Ð½Ð°Ð¹-малко верÑии' ),
- 'Shortpages' => array( 'Кратки Ñтраници' ),
- 'Longpages' => array( 'Дълги Ñтраници' ),
- 'Newpages' => array( 'Ðови Ñтраници' ),
- 'Ancientpages' => array( 'Стари Ñтраници' ),
- 'Deadendpages' => array( 'Задънени Ñтраници' ),
- 'Protectedpages' => array( 'Защитени Ñтраници' ),
- 'Protectedtitles' => array( 'Защитени заглавиÑ' ),
- 'Allpages' => array( 'Ð’Ñички Ñтраници' ),
- 'Prefixindex' => array( 'Ð’Ñички Ñтраници Ñ Ð¿Ñ€ÐµÐ´Ñтавка', 'ПредÑтавка' ),
- 'Ipblocklist' => array( 'Блокирани потребители' ),
- 'Specialpages' => array( 'Специални Ñтраници' ),
- 'Contributions' => array( 'ПриноÑи' ),
- 'Emailuser' => array( 'ПиÑмо на потребител' ),
- 'Confirmemail' => array( 'Потвърждаване на е-поща' ),
- 'Whatlinkshere' => array( 'Какво Ñочи наÑам' ),
- 'Recentchangeslinked' => array( 'Свързани промени' ),
- 'Movepage' => array( 'ПремеÑтване на Ñтраница' ),
- 'Blockme' => array( 'Блокирай ме' ),
- 'Booksources' => array( 'Източници на книги' ),
+ 'Activeusers' => array( 'Ðктивни_потребители' ),
+ 'Allmessages' => array( 'СиÑтемни_ÑъобщениÑ' ),
+ 'Allpages' => array( 'Ð’Ñички_Ñтраници' ),
+ 'Ancientpages' => array( 'Стари_Ñтраници' ),
+ 'Blankpage' => array( 'Празна_Ñтраница' ),
+ 'Block' => array( 'Блокиране' ),
+ 'Blockme' => array( 'Блокирай_ме' ),
+ 'Booksources' => array( 'Източници_на_книги' ),
+ 'BrokenRedirects' => array( 'Ðевалидни_пренаÑочваниÑ' ),
'Categories' => array( 'Категории' ),
+ 'ChangePassword' => array( 'ПромÑна_на_парола' ),
+ 'Confirmemail' => array( 'Потвърждаване_на_е-поща' ),
+ 'Contributions' => array( 'ПриноÑи' ),
+ 'CreateAccount' => array( 'Създаване_на_Ñметка' ),
+ 'Deadendpages' => array( 'Задънени_Ñтраници' ),
+ 'DeletedContributions' => array( 'Изтрити_приноÑи' ),
+ 'Disambiguations' => array( 'ПоÑÑнителни_Ñтраници' ),
+ 'DoubleRedirects' => array( 'Двойни_пренаÑочваниÑ' ),
+ 'Emailuser' => array( 'ПиÑмо_на_потребител' ),
'Export' => array( 'ИзнаÑÑне' ),
- 'Version' => array( 'ВерÑиÑ' ),
- 'Allmessages' => array( 'СиÑтемни ÑъобщениÑ' ),
- 'Log' => array( 'Дневници' ),
- 'Blockip' => array( 'Блокиране' ),
- 'Undelete' => array( 'ВъзÑтановÑване' ),
+ 'Fewestrevisions' => array( 'Страници_Ñ_най-малко_верÑии' ),
+ 'FileDuplicateSearch' => array( 'ПовтарÑщи_Ñе_файлове' ),
+ 'Filepath' => array( 'Път_към_файл' ),
'Import' => array( 'ВнаÑÑне' ),
- 'Lockdb' => array( 'Заключване на БД' ),
- 'Unlockdb' => array( 'Отключване на БД' ),
- 'Userrights' => array( 'ПотребителÑки права' ),
- 'MIMEsearch' => array( 'MIME-Ñ‚ÑŠÑ€Ñене' ),
- 'FileDuplicateSearch' => array( 'ПовтарÑщи Ñе файлове' ),
- 'Unwatchedpages' => array( 'Ðенаблюдавани Ñтраници' ),
- 'Listredirects' => array( 'ПренаÑочваниÑ' ),
- 'Revisiondelete' => array( 'Изтриване на верÑии' ),
- 'Unusedtemplates' => array( 'Ðеизползвани шаблони' ),
- 'Randomredirect' => array( 'Случайно пренаÑочване' ),
- 'Mypage' => array( 'МоÑта Ñтраница' ),
- 'Mytalk' => array( 'МоÑта беÑеда' ),
- 'Mycontributions' => array( 'Моите приноÑи' ),
+ 'Invalidateemail' => array( 'ОтмÑна_на_е-поща' ),
+ 'BlockList' => array( 'Блокирани_потребители' ),
+ 'LinkSearch' => array( 'ТърÑене_на_външни_препратки' ),
'Listadmins' => array( 'ÐдминиÑтратори' ),
'Listbots' => array( 'Ботове' ),
- 'Popularpages' => array( 'Ðай-поÑещавани Ñтраници' ),
+ 'Listfiles' => array( 'Файлове' ),
+ 'Listgrouprights' => array( 'Групови_права' ),
+ 'Listredirects' => array( 'ПренаÑочваниÑ' ),
+ 'Listusers' => array( 'Потребители' ),
+ 'Lockdb' => array( 'Заключване_на_БД' ),
+ 'Log' => array( 'Дневници' ),
+ 'Lonelypages' => array( 'Страници_Ñираци' ),
+ 'Longpages' => array( 'Дълги_Ñтраници' ),
+ 'MergeHistory' => array( 'ИÑториÑ_на_Ñливането' ),
+ 'MIMEsearch' => array( 'MIME-Ñ‚ÑŠÑ€Ñене' ),
+ 'Mostcategories' => array( 'Страници_Ñ_най-много_категории' ),
+ 'Mostimages' => array( 'Ðай-препращани_картинки' ),
+ 'Mostlinked' => array( 'Ðай-препращани_Ñтраници' ),
+ 'Mostlinkedcategories' => array( 'Ðай-препращани_категории' ),
+ 'Mostlinkedtemplates' => array( 'Ðай-препращани_шаблони' ),
+ 'Mostrevisions' => array( 'Страници_Ñ_най-много_верÑии' ),
+ 'Movepage' => array( 'ПремеÑтване_на_Ñтраница' ),
+ 'Mycontributions' => array( 'Моите_приноÑи' ),
+ 'Mypage' => array( 'МоÑта_Ñтраница' ),
+ 'Mytalk' => array( 'МоÑта_беÑеда' ),
+ 'Newimages' => array( 'Ðови_файлове' ),
+ 'Newpages' => array( 'Ðови_Ñтраници' ),
+ 'Popularpages' => array( 'Ðай-поÑещавани_Ñтраници' ),
+ 'Preferences' => array( 'ÐаÑтройки' ),
+ 'Prefixindex' => array( 'Ð’Ñички_Ñтраници_Ñ_предÑтавка', 'ПредÑтавка' ),
+ 'Protectedpages' => array( 'Защитени_Ñтраници' ),
+ 'Protectedtitles' => array( 'Защитени_заглавиÑ' ),
+ 'Randompage' => array( 'Случайна_Ñтраница' ),
+ 'Randomredirect' => array( 'Случайно_пренаÑочване' ),
+ 'Recentchanges' => array( 'ПоÑледни_промени' ),
+ 'Recentchangeslinked' => array( 'Свързани_промени' ),
+ 'Revisiondelete' => array( 'Изтриване_на_верÑии' ),
'Search' => array( 'ТърÑене' ),
- 'Resetpass' => array( 'ПромÑна на парола' ),
- 'Withoutinterwiki' => array( 'Без междууикита' ),
- 'MergeHistory' => array( 'ИÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° Ñливането' ),
- 'Filepath' => array( 'Път към файл' ),
- 'Invalidateemail' => array( 'ОтмÑна на е-поща' ),
- 'Blankpage' => array( 'Празна Ñтраница' ),
- 'LinkSearch' => array( 'ТърÑене на външни препратки' ),
- 'DeletedContributions' => array( 'Изтрити приноÑи' ),
+ 'Shortpages' => array( 'Кратки_Ñтраници' ),
+ 'Specialpages' => array( 'Специални_Ñтраници' ),
+ 'Statistics' => array( 'СтатиÑтика' ),
'Tags' => array( 'Етикети' ),
- 'Activeusers' => array( 'Ðктивни потребители' ),
+ 'Unblock' => array( 'Отблокиране' ),
+ 'Uncategorizedcategories' => array( 'Ðекатегоризирани_категории' ),
+ 'Uncategorizedimages' => array( 'Ðекатегоризирани_картинки' ),
+ 'Uncategorizedpages' => array( 'Ðекатегоризирани_Ñтраници' ),
+ 'Uncategorizedtemplates' => array( 'Ðекатегоризирани_шаблони' ),
+ 'Undelete' => array( 'ВъзÑтановÑване' ),
+ 'Unlockdb' => array( 'Отключване_на_БД' ),
+ 'Unusedcategories' => array( 'Ðеизползвани_категории' ),
+ 'Unusedimages' => array( 'Ðеизползвани_картинки' ),
+ 'Unusedtemplates' => array( 'Ðеизползвани_шаблони' ),
+ 'Unwatchedpages' => array( 'Ðенаблюдавани_Ñтраници' ),
+ 'Upload' => array( 'Качване' ),
+ 'Userlogin' => array( 'РегиÑтриране_или_влизане' ),
+ 'Userlogout' => array( 'Излизане' ),
+ 'Userrights' => array( 'ПотребителÑки_права' ),
+ 'Version' => array( 'ВерÑиÑ' ),
+ 'Wantedcategories' => array( 'Желани_категории' ),
+ 'Wantedfiles' => array( 'Желани_файлове' ),
+ 'Wantedpages' => array( 'Желани_Ñтраници' ),
+ 'Wantedtemplates' => array( 'Желани_шаблони' ),
+ 'Watchlist' => array( 'СпиÑък_за_наблюдение' ),
+ 'Whatlinkshere' => array( 'Какво_Ñочи_наÑам' ),
+ 'Withoutinterwiki' => array( 'Без_междууикита' ),
);
$linkTrail = '/^([a-zабвгдежзийклмнопрÑтуфхцчшщъыьÑÑŽÑ]+)(.*)$/sDu';
@@ -259,9 +266,9 @@ $messages = array(
'tog-oldsig' => 'Преглед на ÑъщеÑÑ‚Ð²ÑƒÐ²Ð°Ñ‰Ð¸Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñ:',
'tog-fancysig' => 'Без превръщане на подпиÑа в препратка към потребителÑката Ñтраница',
'tog-externaleditor' => 'Използване на външен редактор по подразбиране (Ñамо за екÑперти, необходими Ñа Ñпециални наÑтройки на компютъра.
-[http://www.mediawiki.org/wiki/Manual:External_editors Повече информациÑ.])',
+[//www.mediawiki.org/wiki/Manual:External_editors Повече информациÑ.])',
'tog-externaldiff' => 'Използване на външна програма за разлики по подразбиране (Ñамо за екÑперти, необходими Ñа Ñпециални наÑтройки на компютъра.
-[http://www.mediawiki.org/wiki/Manual:External_editors Повече информациÑ.])',
+[//www.mediawiki.org/wiki/Manual:External_editors Повече информациÑ.])',
'tog-showjumplinks' => 'Показване на препратки за доÑтъпноÑÑ‚ от типа „Към…“',
'tog-uselivepreview' => 'Използване на бърз предварителен преглед (изиÑква ДжаваÑкрипт; екÑпериментално)',
'tog-forceeditsummary' => 'Предупреждаване при празно поле за резюме на редакциÑта',
@@ -357,14 +364,7 @@ $messages = array(
'listingcontinuesabbrev' => ' продълж.',
'index-category' => 'ИндекÑирани Ñтраници',
'noindex-category' => 'ÐеиндекÑирани Ñтраници',
-
-'mainpagetext' => "'''Уикито беше уÑпешно инÑталирано.'''",
-'mainpagedocfooter' => 'Разгледайте [http://meta.wikimedia.org/wiki/Help:Contents ръководÑтвото] за подробна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾Ñно използването на Ñофтуера.
-
-== Първи Ñтъпки ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Конфигурационни наÑтройки]
-* [http://www.mediawiki.org/wiki/Manual:FAQ ЧЗВ за МедиÑУики]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ПощенÑки ÑпиÑък отноÑно нови верÑии на МедиÑУики]',
+'broken-file-category' => 'Страници Ñ Ð½ÐµÑ€Ð°Ð±Ð¾Ñ‚ÐµÑ‰Ð¸ препратки към файлове',
'about' => 'За {{SITENAME}}',
'article' => 'Страница',
@@ -416,10 +416,10 @@ $messages = array(
'history' => 'ИÑториÑ',
'history_short' => 'ИÑториÑ',
'updatedmarker' => 'има промÑна (от поÑледното ви влизане)',
-'info_short' => 'ИнформациÑ',
'printableversion' => 'ВерÑÐ¸Ñ Ð·Ð° печат',
'permalink' => 'ПоÑтоÑнна препратка',
'print' => 'Печат',
+'view' => 'Преглед',
'edit' => 'Редактиране',
'create' => 'Създаване',
'editthispage' => 'Редактиране',
@@ -427,6 +427,7 @@ $messages = array(
'delete' => 'Изтриване',
'deletethispage' => 'Изтриване',
'undelete_short' => 'ВъзÑтановÑване на {{PLURAL:$1|една редакциÑ|$1 редакции}}',
+'viewdeleted_short' => 'Преглед на {{PLURAL:$1|една изтрита редакциÑ|$1 изтрити редакции}}',
'protect' => 'Защита',
'protect_change' => 'промÑна',
'protectthispage' => 'Защита',
@@ -511,6 +512,8 @@ $1',
'toc' => 'Съдържание',
'showtoc' => 'показване',
'hidetoc' => 'Ñкриване',
+'collapsible-collapse' => 'Свиване',
+'collapsible-expand' => 'Разгръщане',
'thisisdeleted' => 'Преглед или възÑтановÑване на $1?',
'viewdeleted' => 'Преглед на $1?',
'restorelink' => '{{PLURAL:$1|една изтрита редакциÑ|$1 изтрити редакции}}',
@@ -522,6 +525,8 @@ $1',
'page-rss-feed' => 'ЕмиÑÐ¸Ñ Ð½Ð° RSS за „$1“',
'page-atom-feed' => 'ЕмиÑÐ¸Ñ Ð½Ð° Atom за „$1“',
'red-link-title' => '$1 (Ñтраницата не ÑъщеÑтвува)',
+'sort-descending' => 'ÐизходÑщо Ñортиране',
+'sort-ascending' => 'ВъзходÑщо Ñортиране',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Страница',
@@ -604,12 +609,13 @@ $1',
'viewsourcetext' => 'Можете да разгледате и да копирате кодa на Ñтраницата:',
'protectedinterface' => 'Тази Ñтраница Ñъдържа текÑÑ‚, нужен за работата на ÑиÑтемата. Ð¢Ñ Ðµ защитена против редактиране, за да Ñе предотвратÑÑ‚ възможни злоупотреби.',
'editinginterface' => "'''Внимание:''' Редактирате Ñтраница, коÑто Ñе използва за интерфейÑа на Ñофтуера. ПромÑната й ще повлиÑе на Ð²ÑŠÐ½ÑˆÐ½Ð¸Ñ Ð²Ð¸Ð´ на уикито.
-За превеждане обмиÑлете използването на [http://translatewiki.net/wiki/Main_Page?setlang=bg translatewiki.net], проектът за локализиране на MediaWiki.",
+За превеждане обмиÑлете използването на [//translatewiki.net/wiki/Main_Page?setlang=bg translatewiki.net], проектът за локализиране на MediaWiki.",
'sqlhidden' => '(ЗаÑвка на SQL — Ñкрита)',
'cascadeprotected' => 'Тази Ñтраница е защитена против редактиране, защото е включена в {{PLURAL:$1|Ñледната Ñтраница, коÑто от ÑÐ²Ð¾Ñ Ñтрана има|Ñледните Ñтраници, които от ÑÐ²Ð¾Ñ Ñтрана имат}} каÑкадна защита:
$2',
'namespaceprotected' => "ÐÑмате права за редактиране на Ñтраници в именно проÑтранÑтво '''$1'''.",
-'customcssjsprotected' => 'ÐÑмате права за редактиране на тази Ñтраница, защото Ñ‚Ñ Ñъдържа чужди потребителÑки наÑтройки.',
+'customcssprotected' => 'ÐÑмате права за редактиране на тази CSS Ñтраница, защото Ñ‚Ñ Ñъдържа чужди потребителÑки наÑтройки.',
+'customjsprotected' => 'ÐÑмате права за редактиране на тази ДжаваÑкрипт Ñтраница, защото Ñ‚Ñ Ñъдържа чужди потребителÑки наÑтройки.',
'ns-specialprotected' => 'Специалните Ñтраници не могат да бъдат редактирани.',
'titleprotected' => "Тази Ñтраница е била защитена Ñрещу Ñъздаване от [[User:$1|$1]].
ПоÑочената причина е ''$2''.",
@@ -650,6 +656,7 @@ $2',
'createaccount' => 'РегиÑтриране',
'gotaccount' => "Имате ли вече Ñметка? '''$1'''.",
'gotaccountlink' => 'Влизане',
+'userlogin-resetlink' => 'Забравени данни за влизане в ÑиÑтемата?',
'createaccountmail' => 'Ñ Ð¿Ð¸Ñмо по електронната поща',
'createaccountreason' => 'Причина:',
'badretype' => 'Въведените пароли не Ñъвпадат.',
@@ -659,13 +666,15 @@ $2',
'createaccounterror' => 'Ðе може да бъде Ñъздадена Ñметка: $1',
'nocookiesnew' => 'ПотребителÑката Ñметка беше Ñъздадена, но вÑе още не Ñте влезли. {{SITENAME}} използва биÑквитки при влизането на потребителите. Разрешете биÑквитките в браузъра Ñи, тъй като те Ñа забранени, а Ñлед това влезте Ñ Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñкото Ñи име и парола.',
'nocookieslogin' => '{{SITENAME}} използва биÑквитки (cookies) за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° влизаниÑта. Разрешете биÑквитките в браузъра Ñи, тъй като те Ñа забранени, и опитайте отново.',
+'nocookiesfornew' => 'ПотребителÑката Ñметка не беше Ñъздадена, тъй като не беше възможно да Ñе потвърди източникът й.
+Уверете Ñе, че биÑквитките Ñа позволени от браузъра, презаредете Ñтраницата и опитайте отново.',
'noname' => 'Ðе указахте валидно потребителÑко име.',
'loginsuccesstitle' => 'УÑпешно влизане',
'loginsuccess' => "'''ВлÑзохте в {{SITENAME}} като „$1“.'''",
'nosuchuser' => 'Ðе ÑъщеÑтвува потребител Ñ Ð¸Ð¼Ðµ „$1“.
ПотребителÑките имена Ñа чувÑтвителни на малки и главни букви.
Проверете изпиÑването или [[Special:UserLogin/signup|Ñъздайте нова Ñметка]].',
-'nosuchusershort' => 'Ðе ÑъщеÑтвува потребител Ñ Ð¸Ð¼ÐµÑ‚Ð¾ „<nowiki>$1</nowiki>“. Проверете изпиÑването.',
+'nosuchusershort' => 'Ðе ÑъщеÑтвува потребител Ñ Ð¸Ð¼ÐµÑ‚Ð¾ „$1“. Проверете изпиÑването.',
'nouserspecified' => 'Ðеобходимо е да Ñе поÑочи потребителÑко име.',
'login-userblocked' => 'Този потребител е блокиран. Ðе Ñе позволÑва влизане.',
'wrongpassword' => 'Въведената парола е невалидна. Опитайте отново.',
@@ -706,13 +715,14 @@ $2',
'usernamehasherror' => 'ПотребителÑкото име не може да Ñъдържа хеш Ñимволи',
'login-throttled' => 'Ðаправили Ñте твърде много опити да въведете паролата за тази Ñметка.
Изчакайте извеÑтно време преди да опитате отново.',
+'login-abort-generic' => 'Влизането беше неуÑпешно - Прекратено',
'loginlanguagelabel' => 'Език: $1',
'suspicious-userlogout' => 'ЗаÑвката ви за излизане от ÑиÑтемата беше отхвърлена, тъй като изглежда е била изпратена погрешка от браузъра или кеширащото прокÑи.',
# E-mail sending
'php-mail-error-unknown' => 'ÐеизвеÑтна грешка в mail() функциÑта на PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ПромÑна на парола',
'resetpass_announce' => 'ВлÑзохте Ñ Ð²Ñ€ÐµÐ¼ÐµÐ½ÐµÐ½ код, получен по електронната поща. Сега е нужно да Ñи изберете нова парола:',
'resetpass_text' => '<!-- Тук добавете текÑÑ‚ -->',
@@ -730,6 +740,37 @@ $2',
Възможно е вече уÑпешно да Ñте Ñменили паролата Ñи или да Ñте поиÑкали нова временна парола.',
'resetpass-temp-password' => 'Временна парола:',
+# Special:PasswordReset
+'passwordreset' => 'ВъзÑтановÑване на парола',
+'passwordreset-text' => 'След попълването на формулÑра ще получите пиÑмо Ñ Ð½Ð°Ð¿Ð¾Ð¼Ð½Ñща Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° потребителÑката Ñметка.',
+'passwordreset-legend' => 'ВъзÑтановÑване на парола',
+'passwordreset-disabled' => 'ВъзÑтановÑването на паролата е изключено в това уики.',
+'passwordreset-username' => 'ПотребителÑко име:',
+'passwordreset-email' => 'Електронна поща:',
+'passwordreset-emailtitle' => 'ПодробноÑти за Ñметката в {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'ÐÑкой (вероÑтно вие, от IP Ð°Ð´Ñ€ÐµÑ $1) поиÑка напомнÑне за
+данните от Ñметката в {{SITENAME}} ($4). За {{PLURAL:$3|Ñледната Ñметка|Ñледните Ñметки}}
+е поÑочен този Ð°Ð´Ñ€ÐµÑ Ð·Ð° електронна поща:
+
+$2
+
+{{PLURAL:$3|Тази временна парола ще бъде активна|Тези временни пароли ще бъдат активни}} {{PLURAL:$5|един ден|$5 дни}}.
+Сега би Ñ‚Ñ€Ñбвало да влезете в ÑиÑтемата и да Ñи изберете нова парола. Ðко заÑвката е направена от друг или пък Ñте Ñи
+Ñпомнили паролата и не иÑкате да Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñте, можете да пренебрегнете това Ñъобщение и да продължите да използвате
+Ñтарата Ñи парола.',
+'passwordreset-emailtext-user' => 'Потребител $1 от {{SITENAME}} поиÑка напомнÑне за данните от Ñметката в {{SITENAME}}
+($4). За {{PLURAL:$3|Ñледната Ñметка|Ñледните Ñметки}} е поÑочен този Ð°Ð´Ñ€ÐµÑ Ð·Ð° електронна поща:
+
+$2
+
+{{PLURAL:$3|Тази временна парола ще бъде активна|Тези временни пароли ще бъдат активни}} {{PLURAL:$5|един ден|$5 дни}}.
+Сега би Ñ‚Ñ€Ñбвало да влезете в ÑиÑтемата и да Ñи изберете нова парола. Ðко заÑвката е направена
+от друг или пък Ñте Ñи Ñпомнили паролата и не иÑкате да Ñ Ð¿Ñ€Ð¾Ð¼ÐµÐ½Ñте, можете да пренебрегнете
+това Ñъобщение и да продължите да използвате Ñтарата Ñи парола.',
+'passwordreset-emailelement' => 'ПотребителÑко име: $1
+Временна парола: $2',
+'passwordreset-emailsent' => 'Беше изпратено напомнÑщо пиÑмо на електронната поща.',
+
# Edit page toolbar
'bold_sample' => 'Получер текÑÑ‚',
'bold_tip' => 'Получер (удебелен) текÑÑ‚',
@@ -741,8 +782,6 @@ $2',
'extlink_tip' => 'Външна препратка (не забравÑйте http:// отпред)',
'headline_sample' => 'Заглавие на раздел',
'headline_tip' => 'Заглавие',
-'math_sample' => 'Тук въведете формулата',
-'math_tip' => 'МатематичеÑка формула (LaTeX)',
'nowiki_sample' => 'Тук въведете текÑÑ‚',
'nowiki_tip' => 'Пренебрегване на форматиращите команди',
'image_sample' => 'Пример.jpg',
@@ -825,7 +864,7 @@ $2',
'noarticletext-nopermission' => 'ПонаÑтоÑщем в тази Ñтраница нÑма текÑÑ‚.
Можете да [[Special:Search/{{PAGENAME}}|потърÑите заглавието на тази Ñтраница ]] в други Ñтраници или
да <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} потърÑите в Ñъответните дневници]</span>.',
-'userpage-userdoesnotexist' => 'ÐÑма региÑтрирана потребителÑка Ñметка за „$1“. ИзиÑква Ñе потвърждение, че желаете да Ñъздадете/редактирате тази Ñтраница?',
+'userpage-userdoesnotexist' => 'ÐÑма региÑтрирана потребителÑка Ñметка за „<nowiki>$1</nowiki>“. ИзиÑква Ñе потвърждение, че желаете да Ñъздадете/редактирате тази Ñтраница?',
'userpage-userdoesnotexist-view' => 'Ðе е региÑтрирана потребителÑка Ñметка на име „$1“.',
'blocked-notice-logextract' => 'В момента този потребител е блокиран.
По-долу за Ñправка е показан поÑледниÑÑ‚ Ð·Ð°Ð¿Ð¸Ñ Ð¾Ñ‚ Дневника на блокираниÑта:',
@@ -855,6 +894,7 @@ $2',
'''Опитайте отново. Ðко вÑе още не Ñработва, пробвайте да [[Special:UserLogout|излезете]] и влезете отново.'''",
'token_suffix_mismatch' => "'''РедакциÑта ви беше отхвърлена, защото браузърът ви е развалил пунктуационните знаци в редакционната отметка. Евентуалното Ñъхранение би унищожило Ñъдържанието на Ñтраницата. ПонÑкога това Ñе Ñлучва при използването на грешно работещи анонимни междинни Ñървъри.'''",
+'edit_form_incomplete' => "'''ÐÑкои чаÑти от формулÑра за редактиране не доÑтигнаха до Ñървъра; проверете дали редакциите ви Ñа непокътнати и опитайте отново.'''",
'editing' => 'Редактиране на „$1“',
'editingsection' => 'Редактиране на „$1“ (раздел)',
'editingcomment' => 'Редактиране на „$1“ (нов раздел)',
@@ -1212,9 +1252,10 @@ $1",
'changepassword' => 'СмÑна на парола',
'prefs-skin' => 'Облик',
'skin-preview' => 'предварителен преглед',
-'prefs-math' => 'МатематичеÑки формули',
'datedefault' => 'Без предпочитание',
+'prefs-beta' => 'ФункционалноÑти на Бета',
'prefs-datetime' => 'Дата и чаÑ',
+'prefs-labs' => 'ФункционалноÑти на Labs',
'prefs-personal' => 'ПотребителÑки данни',
'prefs-rc' => 'ПоÑледни промени',
'prefs-watchlist' => 'СпиÑък за наблюдение',
@@ -1236,8 +1277,6 @@ $1",
'columns' => 'Колони:',
'searchresultshead' => 'ТърÑене',
'resultsperpage' => 'Резултати на Ñтраница:',
-'contextlines' => 'Редове за резултат:',
-'contextchars' => 'Знаци от контекÑта на ред:',
'stub-threshold' => 'Праг за форматиране на <a href="#" class="stub">препратки към мъничета</a>:',
'stub-threshold-disabled' => 'Изключено',
'recentchangesdays' => 'Брой дни в поÑледни промени:',
@@ -1250,7 +1289,7 @@ $1",
'savedprefs' => 'ÐаÑтройките ви бÑха Ñъхранени.',
'timezonelegend' => 'ЧаÑова зона:',
'localtime' => 'МеÑтно време:',
-'timezoneuseserverdefault' => 'По подразбиране от Ñървъра',
+'timezoneuseserverdefault' => 'По подразбиране от уикито ($1)',
'timezoneuseoffset' => 'Друга (поÑочете отмеÑтване)',
'timezoneoffset' => 'ОтмеÑтване¹:',
'servertime' => 'Време на Ñървъра:',
@@ -1298,7 +1337,9 @@ $1",
'prefs-help-gender' => 'По желание: използва Ñе за коректно обръщение по род в ÑиÑтемните ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð½Ð° Ñофтуера. Тази Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ðµ публично доÑтъпна.',
'email' => 'Е-поща',
'prefs-help-realname' => '* <strong>ИÑтинÑко име</strong> <em>(незадължително)</em>: Ðко го поÑочите, на него ще бъдат припиÑани вашите приноÑи.',
-'prefs-help-email' => 'Електронната поща е незадължителна, но позволÑва да ви бъде изпратена нова парола, в Ñлучай че забравите текущата. Можете Ñъщо да изберете дали другите потребители могат да Ñе Ñвързват Ñ Ð²Ð°Ñ, без да Ñе налага да им Ñъобщавате адреÑа Ñи.',
+'prefs-help-email' => 'Електронната поща е незадължителна, но позволÑва възÑтановÑване на забравена или загубена парола.',
+'prefs-help-email-others' => 'Можете да изберете да позволите на другите да Ñе Ñвързват Ñ Ð²Ð°Ñ Ð¿Ð¾ електронна поща, като щракват на препратка от вашата лична потребителÑка Ñтраница или беÑеда.
+ÐдреÑÑŠÑ‚ на електронната ви поща не Ñе разкрива на потребителите, които Ñе Ñвързват Ñ Ð²Ð°Ñ Ð¿Ð¾ този начин.',
'prefs-help-email-required' => 'ИзиÑква Ñе Ð°Ð´Ñ€ÐµÑ Ð·Ð° електронна поща.',
'prefs-info' => 'ОÑновна информациÑ',
'prefs-i18n' => 'ИнтернационализациÑ',
@@ -1423,7 +1464,6 @@ $1",
'right-userrights' => 'редактиране на потребителÑките права',
'right-userrights-interwiki' => 'редактиране на потребителÑки права на потребители в други уикита',
'right-siteadmin' => 'заключване и отключване на базата от данни',
-'right-reset-passwords' => 'СмÑна на паролите на други потребители',
'right-override-export-depth' => 'ИзнаÑÑне на Ñтраници, включително Ñвързаните Ñ Ñ‚ÑÑ… в дълбочина до пето ниво',
'right-sendemail' => 'Изпращане на е-пиÑма до другите потребители',
@@ -1558,11 +1598,11 @@ $1",
'minlength1' => 'Имената на файловете Ñ‚Ñ€Ñбва да Ñъдържат поне един знак.',
'illegalfilename' => 'Името на файла „$1“ Ñъдържа знаци, които не Ñа позволени в Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ð½Ð° Ñтраници. Преименувайте файла и Ñе опитайте да го качите отново.',
'badfilename' => 'Файлът беше преименуван на „$1“.',
-'filetype-mime-mismatch' => 'Файловото разширение не Ð¾Ñ‚Ð³Ð¾Ð²Ð°Ñ€Ñ Ð½Ð° MIME типа.',
+'filetype-mime-mismatch' => 'Файловото разширение ".$1" не Ð¾Ñ‚Ð³Ð¾Ð²Ð°Ñ€Ñ Ð½Ð° MIME типа на файла ($2).',
'filetype-badmime' => 'Ðе е разрешено качването на файлове Ñ MIME-тип „$1“.',
'filetype-bad-ie-mime' => 'Този файл не може да бъде качен, защото Internet Explorer го разпознава като „$1“, който е отхвърлен и потенциално опаÑен файлов формат.',
'filetype-unwanted-type' => "'''„.$1“''' е нежелан файлов формат. {{PLURAL:$3|ПреопръчителниÑÑ‚ файлов формат е|Препоръчителните файлови формати Ñа}} $2.",
-'filetype-banned-type' => "'''„.$1“''' не е позволен файлов формат. {{PLURAL:$3|ПозволениÑÑ‚ файлов формат е|Позволените файлови формати Ñа}} $2.",
+'filetype-banned-type' => "'''„.$1“''' не {{PLURAL:$4|е позволен файлов формат|Ñа позволени файлови формати}}. {{PLURAL:$3|ПозволениÑÑ‚ файлов формат е|Позволените файлови формати Ñа}} $2.",
'filetype-missing' => 'Файлът нÑма разширение (напр. „.jpg“).',
'empty-file' => 'ПодадениÑÑ‚ от Ð²Ð°Ñ Ñ„Ð°Ð¹Ð» беше празен.',
'file-too-large' => 'ПодадениÑÑ‚ от Ð²Ð°Ñ Ñ„Ð°Ð¹Ð» беше твърде голÑм.',
@@ -1578,6 +1618,7 @@ $1",
'large-file' => 'Ðе Ñе препоръчва файловете да Ñе по-големи от $1; този файл е $2.',
'largefileserver' => 'Файлът е по-голÑм от допуÑÑ‚Ð¸Ð¼Ð¸Ñ Ð¾Ñ‚ Ñървъра размер.',
'emptyfile' => 'КачениÑÑ‚ от Ð²Ð°Ñ Ñ„Ð°Ð¹Ð» е празен. Това може да е предизвикано от грешка в името на файла. Уверете Ñе дали наиÑтина желаете да го качите.',
+'windows-nonascii-filename' => 'Уикито не поддържа имена на файлове ÑÑŠÑ Ñпециални знаци.',
'fileexists' => "Вече ÑъщеÑтвува файл Ñ Ñ‚Ð¾Ð²Ð° име! Прегледайте '''<tt>[[:$1]]</tt>''', ако не Ñте Ñигурни, че желаете да го промените.
[[$1|thumb]]",
'filepageexists' => "ОпиÑателната Ñтраница за този файл вече е Ñъздадена на '''<tt>[[:$1]]</tt>''', въпреки че файл Ñ Ñ‚Ð¾Ð²Ð° име в момента не ÑъщеÑтвува. Въведеното от Ð²Ð°Ñ Ñ€ÐµÐ·ÑŽÐ¼Ðµ нÑма да Ñе поÑви на опиÑателната Ñтраница. За целта, Ñтраницата Ñ‚Ñ€Ñбва да бъде редактирана ръчно.
@@ -1609,6 +1650,8 @@ $1",
'php-uploaddisabledtext' => 'КачваниÑта на файлове Ñа Ñпрени през PHP. Проверете наÑтройката file_uploads.',
'uploadscripted' => 'Файлът Ñъдържа HTML или Ñкриптов код, който може да бъде погрешно интерпретиран от браузъра.',
'uploadvirus' => 'Файлът Ñъдържа вируÑ! ПодробноÑти: $1',
+'uploadjava' => 'Файлът е ZIP файл, който Ñъдържа Java .class файл.
+Качването на Java файлове не е позволено, тъй като могат да причинÑÑ‚ заобикалÑне на ограничениÑта за ÑигурноÑÑ‚.',
'upload-source' => 'Изходен файл',
'sourcefilename' => 'Първоначално име:',
'sourceurl' => 'Изходен адреÑ:',
@@ -1618,9 +1661,6 @@ $1",
'upload-options' => 'ÐаÑтройки за качване',
'watchthisupload' => 'Ðаблюдаване на файла',
'filewasdeleted' => 'Файл в този име е ÑъщеÑтвувал преди време, но е бил изтрит. Проверете $1 преди да го качите отново.',
-'upload-wasdeleted' => "'''Внимание: Качвате файл, който вече е бил изтрит.'''
-
-Преценете дали е удачно да продължите Ñ ÐºÐ°Ñ‡Ð²Ð°Ð½ÐµÑ‚Ð¾ на файла. За ваше удобÑтво, ето запиÑа за него в дневника на изтриваниÑта:",
'filename-bad-prefix' => "Името на файла, който качвате, започва Ñ '''„$1“''', което е неопиÑателно име, типично задавано по автоматичен начин от цифровите камери или апарати. Изберете по-опиÑателно име на файла.",
'upload-success-subj' => 'Качването беше уÑпешно',
'upload-success-msg' => 'Качването ви от [$2] е уÑпешно. ДоÑтъпно е тук: [[:{{ns:file}}:$1]]',
@@ -1641,6 +1681,20 @@ $1',
'upload-unknown-size' => 'ÐеизвеÑтен размер',
'upload-http-error' => 'Възникна HTTP грешка: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Възникна грешка при отварÑне на файла за проверка на ZIP.',
+'zip-wrong-format' => 'УказаниÑÑ‚ файл не е ZIP файл.',
+'zip-bad' => 'Файлът е повреден или е нечетим ZIP файл.
+СигурноÑтта му не може да бъде проверена.',
+'zip-unsupported' => 'Файлът е ZIP файл, който използва ZIP компоненти, които не Ñе поддържат от МедиÑУики.
+СигурноÑтта му не може да бъде коректно проверена.',
+
+# Special:UploadStash
+'uploadstash-summary' => 'Тази Ñтраница предоÑÑ‚Ð°Ð²Ñ Ð´Ð¾Ñтъп до файловете, които Ñа качени (или Ñа в Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° качване), но вÑе още не Ñа публикувани в уикито. Тези файлове не Ñа доÑтъпни Ñамо за потребителÑ, който ги е качил.',
+'uploadstash-badtoken' => 'Извършване на това дейÑтвие е неуÑпешно, вероÑтно заради изтекла ÑеÑиÑ. Опитайте отново.',
+'uploadstash-errclear' => 'ИзчиÑтването на файловете беше неуÑпешно.',
+'uploadstash-refresh' => 'ОбновÑване на ÑпиÑъка Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð²Ðµ',
+
# img_auth script messages
'img-auth-accessdenied' => 'ДоÑтъпът е отказан',
'img-auth-nopathinfo' => 'ЛипÑва PATH_INFO.
@@ -1720,7 +1774,7 @@ $1',
Ðа разположение е и [[Special:WhatLinksHere/$2|пълниÑÑ‚ ÑпиÑък]].',
'nolinkstoimage' => 'ÐÑма Ñтраници, Ñочещи към файла.',
'morelinkstoimage' => 'Можете да видите [[Special:WhatLinksHere/$1|още препратки]] към този файл.',
-'redirectstofile' => '{{PLURAL:$1|СледниÑÑ‚ файл пренаÑочва|Следните $1 файла пренаÑочват}} към този файл:',
+'linkstoimage-redirect' => '$1 (файлово пренаÑочване) $2',
'duplicatesoffile' => '{{PLURAL:$1|СледниÑÑ‚ файл Ñе повтарÑ|Следните $1 файла Ñе повтарÑÑ‚}} Ñ Ñ‚Ð¾Ð·Ð¸ файл ([[Special:FileDuplicateSearch/$2|повече подробноÑти]]):',
'sharedupload' => 'Този файл е от $1 и може да бъде използван от други проекти.',
'sharedupload-desc-there' => 'Този файл е от $1 и може да Ñе използва от други проекти.
@@ -1812,12 +1866,13 @@ $1',
'disambiguationspage' => 'Template:ПоÑÑнение',
'disambiguations-text' => "Следните Ñтраници Ñочат към '''поÑÑнителна Ñтраница''', вмеÑто към иÑтинÑката тематична Ñтраница.<br />Една Ñтраница Ñе ÑмÑта за поÑÑнителна, ако ползва шаблон, към който Ñе препраща от [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Двойни пренаÑочваниÑ',
-'doubleredirectstext' => 'Тази Ñтраница Ñъдържа ÑпиÑък ÑÑŠÑ Ñтраници, които пренаÑочват към друга пренаÑочваща Ñтраница.
+'doubleredirects' => 'Двойни пренаÑочваниÑ',
+'doubleredirectstext' => 'Тази Ñтраница Ñъдържа ÑпиÑък ÑÑŠÑ Ñтраници, които пренаÑочват към друга пренаÑочваща Ñтраница.
Ð’Ñеки ред Ñъдържа препратки към първото и второто пренаÑочване, както и целта на второто пренаÑочване, коÑто обикновено е „иÑтинÑката“ целева Ñтраница, към коÑто първото пренаÑочване би Ñ‚Ñ€Ñбвало да Ñочи.
<del>ЗадраÑканите</del> запиÑи Ñа коригирани.',
-'double-redirect-fixed-move' => 'ОправÑне на двойно пренаÑочване Ñлед премеÑтването на [[$1]] като [[$2]]',
-'double-redirect-fixer' => 'Redirect fixer',
+'double-redirect-fixed-move' => 'ОправÑне на двойно пренаÑочване Ñлед премеÑтването на [[$1]] като [[$2]]',
+'double-redirect-fixed-maintenance' => 'ПоправÑне на двойно пренаÑочване от [[$1]] към [[$2]].',
+'double-redirect-fixer' => 'Redirect fixer',
'brokenredirects' => 'Ðевалидни пренаÑочваниÑ',
'brokenredirectstext' => 'Следните пренаÑочващи Ñтраници Ñочат към неÑъщеÑтвуващи Ñтраници:',
@@ -1894,6 +1949,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|по-нова 1|по-нови $1}}',
'pager-older-n' => '{{PLURAL:$1|по-Ñтара 1|по-Ñтари $1}}',
'suppress' => 'Премахване от Ð¿ÑƒÐ±Ð»Ð¸Ñ‡Ð½Ð¸Ñ Ð°Ñ€Ñ…Ð¸Ð²',
+'querypage-disabled' => 'Тази Ñпециална Ñтраница е изключена, защото затруднÑва производителноÑтта на уикито.',
# Book sources
'booksources' => 'Източници на книги',
@@ -2008,6 +2064,10 @@ $1',
'noemailtext' => 'Този потребител не е поÑочил валиден Ð°Ð´Ñ€ÐµÑ Ð·Ð° електронна поща.',
'nowikiemailtitle' => 'Ðепозволена електронна поща',
'nowikiemailtext' => 'Този потребител е избрал да не получава електронна поща от други потребители.',
+'emailnotarget' => 'ÐеÑъщеÑтвуващ или невалиден получател на е-пиÑмото.',
+'emailtarget' => 'Въвежда Ñе получателÑÑ‚ на е-пиÑмото',
+'emailusername' => 'ПотребителÑко име:',
+'emailusernamesubmit' => 'Изпращане',
'email-legend' => 'Изпращане на електронно пиÑмо до друг потребител на {{SITENAME}}',
'emailfrom' => 'От:',
'emailto' => 'До:',
@@ -2032,10 +2092,10 @@ $1',
'watchlistanontext' => 'За преглеждане и редактиране на ÑпиÑъка за наблюдение Ñе изиÑква $1 в ÑиÑтемата.',
'watchnologin' => 'Ðе Ñте влезли',
'watchnologintext' => 'Ðеобходимо е да [[Special:UserLogin|влезете]], за да може да променÑте ÑпиÑъка Ñи за наблюдение.',
-'addedwatch' => 'Добавено в ÑпиÑъка за наблюдение',
+'addwatch' => 'ДобавÑне към ÑпиÑъка за наблюдение',
'addedwatchtext' => "Страницата „'''[[:$1]]'''“ беше добавена към [[Special:Watchlist|ÑпиÑъка ви за наблюдение]].
Ðейните бъдещи промени, както и на Ñъответната й диÑкуÑионна Ñтраница, ще Ñе опиÑват там, а Ñ‚Ñ Ñ‰Ðµ Ñе поÑвÑва в '''получер''' в [[Special:RecentChanges|ÑпиÑъка на поÑледните промени]], което ще направи по-леÑно избирането й.",
-'removedwatch' => 'Премахнато от ÑпиÑъка за наблюдение',
+'removewatch' => 'Премахване от ÑпиÑъка за наблюдение',
'removedwatchtext' => 'Страницата „[[:$1]]“ беше премахната от [[Special:Watchlist|ÑпиÑъка ви за наблюдение]].',
'watch' => 'Ðаблюдение',
'watchthispage' => 'Ðаблюдаване на Ñтраницата',
@@ -2056,8 +2116,9 @@ $1',
'watchlist-options' => 'Опции на ÑпиÑъка за наблюдение',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Ðаблюдение…',
-'unwatching' => 'Спиране на наблюдение…',
+'watching' => 'Ðаблюдение…',
+'unwatching' => 'Спиране на наблюдение…',
+'watcherrortext' => 'Възникна грешка при промÑна на наÑтройките за ÑпиÑъка ви за наблюдение за "$1".',
'enotif_mailer' => 'ИзвеÑÑ‚Ñване по пощата на {{SITENAME}}',
'enotif_reset' => 'ОтбелÑзване на вÑички Ñтраници като поÑетени',
@@ -2088,16 +2149,16 @@ $NEWPAGE
--
За да промените наÑтройките Ñи за извеÑÑ‚ÑÐ²Ð°Ð½Ð¸Ñ Ñ‡Ñ€ÐµÐ· електронна поща, поÑетете
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
За да промените наÑтройките на ÑпиÑъка Ñи за наблюдение, поÑетете
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
За да изтриете Ñтраницата от ÑпиÑъка Ñи за наблюдение, поÑетете
$UNWATCHURL
За обратна връзка и помощ:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Изтриване',
@@ -2113,7 +2174,7 @@ $UNWATCHURL
Потвърдете, че иÑкате това, разбирате поÑледÑтвиÑта и правите това в ÑъответÑтвие Ñ [[{{MediaWiki:Policy-url}}|линиÑта на поведение]].',
'actioncomplete' => 'ДейÑтвието беше изпълнено',
'actionfailed' => 'ДейÑтвието не Ñполучи',
-'deletedtext' => 'Страницата „<nowiki>$1</nowiki>“ беше изтрита. Вижте $2 за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° поÑледните изтриваниÑ.',
+'deletedtext' => 'Страницата „$1“ беше изтрита. Вижте $2 за Ð·Ð°Ð¿Ð¸Ñ Ð½Ð° поÑледните изтриваниÑ.',
'deletedarticle' => 'изтри „[[$1]]“',
'suppressedarticle' => 'премахна „[[$1]]“',
'dellogpage' => 'Дневник на изтриваниÑта',
@@ -2165,7 +2226,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'Ðевалиден Ñрок на изтичане.',
'protect_expiry_old' => 'Срокът на изтичане е минал.',
'protect-unchain-permissions' => 'ПозволÑване на по-нататъшни възможноÑти за защита',
-'protect-text' => "Тук можете да прегледате и промените нивото на защита на Ñтраницата '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Тук можете да прегледате и промените нивото на защита на Ñтраницата '''$1'''.",
'protect-locked-blocked' => "Ðе можете да променÑте нивата на защита на Ñтраниците, докато Ñте блокиран(а). Текущите наÑтройки за Ñтраницата „'''$1'''“ Ñа:",
'protect-locked-dblock' => "Ðивата на защита на Ñтраниците не могат да бъдат променÑни, защото базата от данни е заключена. Ето текущите наÑтройки за Ñтраницата „'''$1'''“:",
'protect-locked-access' => "ÐÑмате правото да променÑте нивата на защита на Ñтраниците. Ето текущите наÑтройки за Ñтраницата „'''$1'''“:",
@@ -2215,9 +2276,8 @@ $UNWATCHURL
'viewdeletedpage' => 'Преглед на изтрити Ñтраници',
'undeletepagetext' => '{{PLURAL:$1|Следната Ñтраница беше изтрита, но вÑе още Ñе намира в архива и може да бъде възÑтановена|Следните $1 Ñтраници бÑха изтрити, но вÑе още Ñе намират в архива и могат да бъдат възÑтановени}}. Ðрхивът може да Ñе почиÑтва от време на време.',
'undelete-fieldset-title' => 'ВъзÑтановÑване на верÑии',
-'undeleteextrahelp' => "За пълно възÑтановÑване на иÑториÑта на Ñтраницата, не Ñлагайте отметки и натиÑнете '''''ВъзÑтановÑване'''''.
-За чаÑтично възÑтановÑване отметнете тези верÑии на Ñтраницата, които Ñ‚Ñ€Ñбва да бъдат въÑтановени, и натиÑнете '''''ВъзÑтановÑване'''''.
-ÐатиÑкането на '''''ИзчиÑтване''''' ще премахне вÑички отметки и ще изчиÑти полето за коментар.",
+'undeleteextrahelp' => "За възÑтановÑване на пълната иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð½Ð° Ñтраницата не Ñе Ñлагат отметки и Ñе натиÑка '''''{{int:undeletebtn}}'''''.
+За чаÑтично възÑтановÑване Ñе поÑтавÑÑ‚ отметки тези верÑии на Ñтраницата, които Ñ‚Ñ€Ñбва да бъдат въÑтановени, Ñлед което Ñе натиÑка ''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '{{PLURAL:$1|Една верÑÐ¸Ñ Ð±ÐµÑˆÐµ архивирана|$1 верÑии бÑха архивирани}}',
'undeletehistory' => 'Ðко възÑтановите Ñтраницата, вÑички верÑии ще бъдат върнати в иÑториÑта.
Ðко Ñлед изтриването е Ñъздадена Ñтраница ÑÑŠÑ Ñъщото име, възÑтановените верÑии ще Ñе поÑвÑÑ‚ като по-ранна иÑториÑ, а текущата верÑÐ¸Ñ Ð½Ð° Ñтраницата нÑма да бъде заменена автоматично. Също така обърнете внимание, че ограничениÑта, приложени върху верÑиите, ще Ñе загубÑÑ‚ Ñлед възÑтановÑването.',
@@ -2257,9 +2317,12 @@ $1',
'undelete-show-file-submit' => 'Да',
# Namespace form on various pages
-'namespace' => 'Именно проÑтранÑтво:',
-'invert' => 'Обръщане на избора',
-'blanknamespace' => '(ОÑновно)',
+'namespace' => 'Именно проÑтранÑтво:',
+'invert' => 'Обръщане на избора',
+'tooltip-invert' => 'ПоÑтавÑнето на отметка ще Ñкрие вÑички промени в Ñтраниците от избраното именно проÑтранÑтво (и Ñвързаните именни проÑтранÑтва)',
+'namespace_association' => 'Свързани именни проÑтранÑтва',
+'tooltip-namespace_association' => 'ПоÑтавÑнето на отметка ще включи и беÑедите и именните проÑтранÑтва, Ñвързани Ñ Ð¸Ð·Ð±Ñ€Ð°Ð½Ð¾Ñ‚Ð¾ именно проÑтранÑтво.',
+'blanknamespace' => '(ОÑновно)',
# Contributions
'contributions' => 'ПриноÑи',
@@ -2309,6 +2372,9 @@ $1',
'whatlinkshere-filters' => 'Филтри',
# Block/unblock
+'autoblockid' => 'Ðвтоматично блокиране #$1',
+'block' => 'Блокиране на потребител',
+'unblock' => 'Отблокиране на потребител',
'blockip' => 'Блокиране',
'blockip-title' => 'Блокиране на потребител',
'blockip-legend' => 'Блокиране на потребител',
@@ -2317,7 +2383,6 @@ $1',
Това Ñ‚Ñ€Ñбва да Ñе направи Ñамо за да Ñе предотвратÑÑ‚ проÑви на вандализъм
и в ÑъответÑтвие Ñ [[{{MediaWiki:Policy-url}}|политиката за поведение]] в {{SITENAME}}.
Ðеобходимо е да Ñе поÑочи и причина за блокирането (например Ð·Ð°Ð³Ð»Ð°Ð²Ð¸Ñ Ð½Ð° Ñтраници, Ñтанали обект на вандализъм).',
-'ipaddress' => 'IP-адреÑ:',
'ipadressorusername' => 'IP-Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ потребител:',
'ipbexpiry' => 'Срок:',
'ipbreason' => 'Причина:',
@@ -2330,7 +2395,7 @@ $1',
** Заплашително поведение/тормоз
** Злупотреба Ñ Ð½Ñколко потребителÑки Ñметки
** Ðеприемливо потребителÑко име',
-'ipbanononly' => 'Блокиране Ñамо на анонимни потребители',
+'ipb-hardblock' => 'Спиране на възможноÑтта влезли потребители да редактират от този IP адреÑ',
'ipbcreateaccount' => 'Забрана за Ñъздаване на потребителÑки Ñметки',
'ipbemailban' => 'Забрана на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð´Ð° праща е-поща',
'ipbenableautoblock' => 'Ðвтоматично блокиране на поÑÐ»ÐµÐ´Ð½Ð¸Ñ IP-адреÑ, използван от потребителÑ, както и на вÑички оÑтанали адреÑи, от които Ñе опита да редактира',
@@ -2341,12 +2406,15 @@ $1',
'ipbotherreason' => 'Друга/допълнителна причина:',
'ipbhidename' => 'Скриване на потребителÑкото име/IP-адреÑа от редакциите и дневниците',
'ipbwatchuser' => 'Ðаблюдаване на потребителÑката Ñтраница и беÑедата на този потребител',
-'ipballowusertalk' => 'ПозволÑване на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð´Ð° редактира ÑобÑтвената Ñи беÑеда докато е блокиран',
+'ipb-disableusertalk' => 'Спиране на възможноÑтта този потребител да редактира беÑедата Ñи докато е блокиран',
'ipb-change-block' => 'Повторно блокиране на Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ñ Ñ‚ÐµÐ·Ð¸ наÑтройки',
+'ipb-confirm' => 'Потвърждаване на блокирането',
'badipaddress' => 'Ðевалиден IP-адреÑ',
'blockipsuccesssub' => 'Блокирането беше уÑпешно',
'blockipsuccesstext' => 'Потребител [[Special:Contributions/$1|$1]] беше блокиран(а).<br />
Можете да прегледате Ð¿ÑŠÐ»Ð½Ð¸Ñ [[Special:IPBlockList|ÑпиÑък на блокираните потребители]].',
+'ipb-blockingself' => 'Ðа път Ñте да блокирате Ñебе Ñи! ÐаиÑтина ли желаете да извършите това дейÑтвие?',
+'ipb-confirmhideuser' => 'Ðа път Ñте да блокирате потребител, който е "Ñкрит потребител". Това дейÑтвие ще заличи потребителÑкото име от вÑички ÑпиÑъци и дневници. ÐаиÑтина ли желаете да направите това?',
'ipb-edit-dropdown' => 'Причини за блокиране',
'ipb-unblock-addr' => 'Отблокиране на $1',
'ipb-unblock' => 'Отблокиране на потребителÑко име IP-адреÑ',
@@ -2356,17 +2424,22 @@ $1',
'unblockiptext' => 'Използвайте Ð´Ð¾Ð»Ð½Ð¸Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»ÑÑ€, за да възÑтановите правото на пиÑане на по-рано блокиран IP-Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ потребител.',
'ipusubmit' => 'СвалÑне на блокирането',
'unblocked' => '[[User:$1|$1]] беше отблокиран.',
+'unblocked-range' => '$1 беше отблокиран',
'unblocked-id' => 'Блок № $1 беше премахнат',
+'blocklist' => 'Блокирани потребители',
'ipblocklist' => 'Блокирани потребители',
'ipblocklist-legend' => 'Откриване на блокиран потребител',
-'ipblocklist-username' => 'ПотребителÑко име или IP адреÑ:',
-'ipblocklist-sh-userblocks' => '$1 блокирани потребителÑки Ñметки',
-'ipblocklist-sh-tempblocks' => '$1 временни блокираниÑ',
-'ipblocklist-sh-addressblocks' => '$1 блокирани отделни IP-адреÑа',
+'blocklist-userblocks' => 'Скриване на блокирани потребителÑки Ñметки',
+'blocklist-tempblocks' => 'Скриване на Ñрочните блокираниÑ',
+'blocklist-addressblocks' => 'Скриване на отделни блокирани IP адреÑи',
+'blocklist-target' => 'Цел',
+'blocklist-expiry' => 'Срок на изтичане:',
+'blocklist-by' => 'Блокиращ админиÑтратор',
+'blocklist-params' => 'Параметри на блокирането',
+'blocklist-reason' => 'Причина',
'ipblocklist-submit' => 'ТърÑене',
'ipblocklist-localblock' => 'Локално блокиране',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Друго блокиране|Други блокираниÑ}}',
-'blocklistline' => '$1, $2 е блокирал $3 ($4)',
'infiniteblock' => 'неограничено',
'expiringblock' => 'изтича на $1 в $2',
'anononlyblock' => 'Ñамо анон.',
@@ -2390,7 +2463,7 @@ $1',
'reblock-logentry' => 'промени параметрите на блокирането на [[$1]] ÑÑŠÑ Ñрок на изтричане $2 $3',
'blocklogtext' => 'Тази Ñтраница Ñъдържа дневник на блокираниÑта и отблокираниÑта, извършени от този потребител.
Ðвтоматично блокираните IP-адреÑи не Ñа показани.
-Вижте [[Special:IPBlockList|ÑпиÑъка на блокираните IP-адреÑи]] за текущото ÑÑŠÑтоÑние на блокираниÑта.',
+Вижте [[Special:BlockList|ÑпиÑъка на блокираните IP-адреÑи]] за текущото ÑÑŠÑтоÑние на блокираниÑта.',
'unblocklogentry' => 'отблокира $1',
'block-log-flags-anononly' => 'Ñамо анонимни потребители',
'block-log-flags-nocreate' => 'Ñъздаването на Ñметки е изключено',
@@ -2404,9 +2477,9 @@ $1',
'ipb_expiry_temp' => 'Скритите потребителÑки имена Ñ‚Ñ€Ñбва да Ñе блокират безÑрочно.',
'ipb_hide_invalid' => 'Тази потребителÑка Ñметка не може да бъде прикрита; може би Ñ Ð½ÐµÑ Ð´Ð° Ñа правени твърде много редакции.',
'ipb_already_blocked' => '„$1“ е вече блокиран',
-'ipb-needreblock' => '== Вече е блокиран ==
-$1 е вече блокиран. Желаете ли да промените наÑтройките?',
+'ipb-needreblock' => '$1 е вече блокиран. Желаете ли да промените наÑтройките?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Друго блокиране|Други блокираниÑ}}',
+'unblock-hideuser' => 'Ðе можете да отблокирате този потребител, тъй като потребителÑкото му име е Ñкрито.',
'ipb_cant_unblock' => 'Грешка: Ðе е намерен блок Ñ Ð½Ð¾Ð¼ÐµÑ€ $1. ВероÑтно потребителÑÑ‚ е вече отблокиран.',
'ipb_blocked_as_range' => 'Грешка: IP-адреÑÑŠÑ‚ $1 не може да бъде разблокиран, тъй като е чаÑÑ‚ от Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð°Ð½Ð¸Ñ Ñ€ÐµÐ³Ð¸ÑÑ‚ÑŠÑ€ $2. Можете да разблокирате адреÑа, като разблокирате Ñ†ÐµÐ»Ð¸Ñ Ñ€ÐµÐ³Ð¸ÑÑ‚ÑŠÑ€.',
'ip_range_invalid' => 'Ðевалиден интервал за IP-адреÑи.',
@@ -2442,6 +2515,7 @@ $1 е вече блокиран. Желаете ли да промените нÐ
'unlockdbsuccesstext' => 'Базата от данни на {{SITENAME}} беше отключена.',
'lockfilenotwritable' => 'ÐÑма права за пиÑане върху файла за заключване на базата данни. За да заключи или отключи базата данни, уеб-Ñървърът Ñ‚Ñ€Ñбва да има тези права.',
'databasenotlocked' => 'Базата от данни не е заключена.',
+'lockedbyandtime' => '(от $1 на $2 в $3)',
# Move page
'move-page' => 'ПремеÑтване на $1',
@@ -2559,7 +2633,7 @@ $1 е вече блокиран. Желаете ли да промените нÐ
'allmessagesdefault' => 'ТекÑÑ‚ по подразбиране',
'allmessagescurrent' => 'Текущ текÑÑ‚',
'allmessagestext' => 'Тази Ñтраница Ñъдържа ÑпиÑък на ÑиÑтемните ÑÑŠÐ¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð¾Ñ‚ именното проÑтранÑтво „МедиÑУики“.
-ПоÑетете [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] и [http://translatewiki.net translatewiki.net], ако желаете да допринеÑете за общата Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° Ñофтуера МедиÑУики.',
+ПоÑетете [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] и [//translatewiki.net translatewiki.net], ако желаете да допринеÑете за общата Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð½Ð° Ñофтуера МедиÑУики.',
'allmessagesnotsupportedDB' => "Тази Ñтраница не може да бъде използвана, тъй като е изключена възможноÑтта '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'Филтър',
'allmessages-filter' => 'Филтриране по ниво на перÑонализациÑ:',
@@ -2705,9 +2779,7 @@ $1 е вече блокиран. Желаете ли да промените нÐ
'monobook.js' => '/* ОÑтарÑла Ñтраница; използвайте [[MediaWiki:Common.js]] */',
# Metadata
-'nodublincore' => 'Метаданните Dublin Core RDF Ñа изключени за този Ñървър.',
-'nocreativecommons' => 'Метаданните Creative Commons RDF Ñа изключени за този Ñървър.',
-'notacceptable' => 'Сървърът не може да предоÑтави данни във формат, който да Ñе разпознава от клиента ви.',
+'notacceptable' => 'Сървърът не може да предоÑтави данни във формат, който да Ñе разпознава от клиента ви.',
# Attribution
'anonymous' => '{{PLURAL:$1|Ðнонимен потребител|Ðнонимни потребители}}на {{SITENAME}}',
@@ -2730,12 +2802,17 @@ $1 е вече блокиран. Желаете ли да промените нÐ
'spam_blanking' => 'Ð’Ñички верÑии, Ñъдържащи препратки към $1, изчиÑтване',
# Info page
-'infosubtitle' => 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° Ñтраницата',
-'numedits' => 'Брой редакции (Ñтраница): $1',
-'numtalkedits' => 'Брой редакции (диÑкуÑионна Ñтраница): $1',
-'numwatchers' => 'Брой наблюдатели: $1',
-'numauthors' => 'Брой различни автори (Ñтраница): $1',
-'numtalkauthors' => 'Брой различни автори (диÑкуÑионна Ñтраница): $1',
+'pageinfo-title' => 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° "$1"',
+'pageinfo-header-edits' => 'Редакции',
+'pageinfo-header-watchlist' => 'СпиÑък за наблюдение',
+'pageinfo-header-views' => 'Прегледи',
+'pageinfo-subjectpage' => 'Страница',
+'pageinfo-talkpage' => 'ДиÑкуÑионна Ñтраница',
+'pageinfo-watchers' => 'Брой наблюдабащи',
+'pageinfo-edits' => 'Брой редакции',
+'pageinfo-authors' => 'Брой на отделни автори',
+'pageinfo-views' => 'Брой прегледи',
+'pageinfo-viewsperedit' => 'Прегледи на редакциÑ',
# Skin names
'skinname-standard' => 'КлаÑика',
@@ -2747,25 +2824,6 @@ $1 е вече блокиран. Желаете ли да промените нÐ
'skinname-simple' => 'Семпъл',
'skinname-modern' => 'Модерен',
-# Math options
-'mw_math_png' => 'Използване винаги на PNG',
-'mw_math_simple' => 'HTML при опроÑтен TeX, иначе PNG',
-'mw_math_html' => 'HTML по възможноÑÑ‚, иначе PNG',
-'mw_math_source' => 'ОÑтавÑне като TeX (за текÑтови браузъри)',
-'mw_math_modern' => 'Препоръчително за нови браузъри',
-'mw_math_mathml' => 'MathML по възможноÑÑ‚ (екÑпериментално)',
-
-# Math errors
-'math_failure' => 'ÐеуÑпех при разбора',
-'math_unknown_error' => 'непозната грешка',
-'math_unknown_function' => 'непозната функциÑ',
-'math_lexing_error' => 'лекÑикална грешка',
-'math_syntax_error' => 'Ñинтактична грешка',
-'math_image_error' => 'Превръщането към PNG не Ñполучи. Проверете дали latex и dvipng (или dvips + gs + convert) Ñа правилно инÑталирани.',
-'math_bad_tmpdir' => 'Ðевъзможно е пиÑането във или Ñъздаването на временна Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° математичеÑките операции',
-'math_bad_output' => 'Ðевъзможно е пиÑането във или Ñъздаването на изходÑща Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ Ð·Ð° математичеÑките операции',
-'math_notexvc' => 'ЛипÑва изпълнимиÑÑ‚ файл на texvc. Прегледайте math/README за Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾Ñ‚Ð½Ð¾Ñно конфигурирането.',
-
# Patrolling
'markaspatrolleddiff' => 'ОтбелÑзване като проверена редакциÑ',
'markaspatrolledtext' => 'ОтбелÑзване на редакциÑта като проверена',
@@ -2801,21 +2859,24 @@ $1',
'nextdiff' => 'По-нова Ñ€ÐµÐ´Ð°ÐºÑ†Ð¸Ñ â†’',
# Media information
-'mediawarning' => "'''Внимание''': Възможно е файлът да Ñъдържа злонамерен програмен код. Ðеговото изпълнение може да доведе до повреди в ÑиÑтемата ви.",
-'imagemaxsize' => "Ограничение на размерите на картинките:<br />''(Ñамо за опиÑателните Ñтраници)''",
-'thumbsize' => 'Размери на миникартинките:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Ñтраница|Ñтраници}}',
-'file-info' => 'големина на файла: $1, MIME-тип: $2',
-'file-info-size' => '$1 × $2 пикÑела, големина на файла: $3, MIME-тип: $4',
-'file-nohires' => '<small>Ðе е налична верÑÐ¸Ñ Ñ Ð¿Ð¾-виÑока разделителна ÑпоÑобноÑÑ‚.</small>',
-'svg-long-desc' => 'Файл във формат SVG, оÑновен размер: $1 × $2 пикÑела, големина на файла: $3',
-'show-big-image' => 'Пълна разделителна ÑпоÑобноÑÑ‚',
-'show-big-image-thumb' => '<small>Размер на Ð¿Ñ€ÐµÐ´Ð²Ð°Ñ€Ð¸Ñ‚ÐµÐ»Ð½Ð¸Ñ Ð¿Ñ€ÐµÐ³Ð»ÐµÐ´: $1 × $2 пикÑела</small>',
-'file-info-gif-looped' => 'непрекъÑнато повтарÑне',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|кадър|кадъра}}',
-'file-info-png-looped' => 'зациклен',
-'file-info-png-repeat' => 'изпълнено $1 {{PLURAL:$1|път|пъти}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|кадър|кадъра}}',
+'mediawarning' => "'''Внимание''': Възможно е файлът да Ñъдържа злонамерен програмен код. Ðеговото изпълнение може да доведе до повреди в ÑиÑтемата ви.",
+'imagemaxsize' => "Ограничение на размерите на картинките:<br />''(Ñамо за опиÑателните Ñтраници)''",
+'thumbsize' => 'Размери на миникартинките:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Ñтраница|Ñтраници}}',
+'file-info' => 'големина на файла: $1, MIME-тип: $2',
+'file-info-size' => '$1 × $2 пикÑела, големина на файла: $3, MIME-тип: $4',
+'file-info-size-pages' => '$1 × $2 пикÑела, размер на файла: $3, MIME тип: $4, $5 {{PLURAL:$5|Ñтраница|Ñтраници}}',
+'file-nohires' => '<small>Ðе е налична верÑÐ¸Ñ Ñ Ð¿Ð¾-виÑока разделителна ÑпоÑобноÑÑ‚.</small>',
+'svg-long-desc' => 'Файл във формат SVG, оÑновен размер: $1 × $2 пикÑела, големина на файла: $3',
+'show-big-image' => 'Пълна разделителна ÑпоÑобноÑÑ‚',
+'show-big-image-preview' => '<small>Размер на този преглед: $1.</small>',
+'show-big-image-other' => '<small>Други разделителни ÑпоÑобноÑти: $1.</small>',
+'show-big-image-size' => '$1 × $2 пикÑела',
+'file-info-gif-looped' => 'непрекъÑнато повтарÑне',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|кадър|кадъра}}',
+'file-info-png-looped' => 'зациклен',
+'file-info-png-repeat' => 'изпълнено $1 {{PLURAL:$1|път|пъти}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|кадър|кадъра}}',
# Special:NewFiles
'newimages' => 'Ð“Ð°Ð»ÐµÑ€Ð¸Ñ Ð½Ð° новите файлове',
@@ -2839,14 +2900,20 @@ $1',
'metadata-help' => 'Файлът Ñъдържа допълнителни данни, обикновено добавÑни от цифровите апарати или Ñкенери. Ðко файлът е редактиран Ñлед Ñъздаването Ñи, то нÑкои параметри може да не ÑъответÑтват на текущото изображение.',
'metadata-expand' => 'Показване на допълнителните данни',
'metadata-collapse' => 'Скриване на допълнителните данни',
-'metadata-fields' => 'Следните EXIF данни ще бъдат включени на опиÑателната Ñтраница на файла, когато информационната таблица е Ñвита. ОÑтаналите данни ще Ñа Ñкрити по подразбиране.
+'metadata-fields' => 'Следните метаданни от файла ще бъдат включени на опиÑателната Ñтраница на файла, когато информационната таблица е Ñвита. ОÑтаналите данни ще Ñа Ñкрити по подразбиране.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Ширина',
@@ -2861,13 +2928,11 @@ $1',
'exif-ycbcrpositioning' => 'Y и C позициониране',
'exif-xresolution' => 'Хоризонтална разделителна ÑпоÑобноÑÑ‚',
'exif-yresolution' => 'Вертикална разделителна ÑпоÑобноÑÑ‚',
-'exif-resolutionunit' => 'Единица на резолюциÑта по X и Y',
'exif-stripoffsets' => 'Ð°Ð´Ñ€ÐµÑ Ð½Ð° картината',
'exif-rowsperstrip' => 'Брой редове на ивица',
'exif-stripbytecounts' => 'Байтове на компреÑирана ивица',
'exif-jpeginterchangeformat' => 'Ðачало на JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Байтове в JPEG формат',
-'exif-transferfunction' => 'Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ð¾ преноÑ',
'exif-whitepoint' => 'ХроматичноÑÑ‚ на бÑлото',
'exif-primarychromaticities' => 'Първични цветноÑти',
'exif-ycbcrcoefficients' => 'Коефициенти в матрицата на транÑформациÑта на цветовото проÑтранÑтво',
@@ -2886,7 +2951,6 @@ $1',
'exif-compressedbitsperpixel' => 'Режим на компреÑÐ¸Ñ Ð½Ð° образа',
'exif-pixelydimension' => 'Ширина на изображението',
'exif-pixelxdimension' => 'ВиÑочина на изображението',
-'exif-makernote' => 'Допълнителни данни на производителÑ',
'exif-usercomment' => 'Допълнителни коментари',
'exif-relatedsoundfile' => 'Свързан звуков файл',
'exif-datetimeoriginal' => 'Дата и Ñ‡Ð°Ñ Ð½Ð° Ñъздаване',
@@ -2900,7 +2964,6 @@ $1',
'exif-exposureprogram' => 'Програма на екÑпонациÑта',
'exif-spectralsensitivity' => 'Спектрална чувÑтвителноÑÑ‚',
'exif-isospeedratings' => 'СветлочувÑтвителноÑÑ‚ ISO',
-'exif-oecf' => 'Фактор на оптоелектронно преобразуване',
'exif-shutterspeedvalue' => 'APEX ÑкороÑÑ‚ на затвора',
'exif-aperturevalue' => 'APEX апертура',
'exif-brightnessvalue' => 'APEX ÑветлоÑила',
@@ -2913,7 +2976,6 @@ $1',
'exif-focallength' => 'ФокуÑно разÑтоÑние',
'exif-subjectarea' => 'Зона на обекта',
'exif-flashenergy' => 'МощноÑÑ‚ на Ñветкавицата',
-'exif-spatialfrequencyresponse' => 'ПроÑтранÑтвен чеÑтотен отклик',
'exif-focalplanexresolution' => 'Ð ÐµÐ·Ð¾Ð»ÑŽÑ†Ð¸Ñ Ð½Ð° фокуÑната равнина X',
'exif-focalplaneyresolution' => 'Ð ÐµÐ·Ð¾Ð»ÑŽÑ†Ð¸Ñ Ð½Ð° фокуÑната равнина Y',
'exif-focalplaneresolutionunit' => 'Единица за разделителна ÑпоÑобноÑÑ‚ на фокалната равнина',
@@ -2922,7 +2984,6 @@ $1',
'exif-sensingmethod' => 'Метод на заÑичане',
'exif-filesource' => 'Файлов източник',
'exif-scenetype' => 'Вид Ñцена',
-'exif-cfapattern' => 'Стандартен цветови Ñтил',
'exif-customrendered' => 'Допълнителна обработка на изображението',
'exif-exposuremode' => 'Режим на екÑпонациÑ',
'exif-whitebalance' => 'Ð‘Ð°Ð»Ð°Ð½Ñ Ð½Ð° бÑлото',
@@ -2967,11 +3028,33 @@ $1',
'exif-gpsareainformation' => 'Име на GPS зоната',
'exif-gpsdatestamp' => 'GPS дата',
'exif-gpsdifferential' => 'Диференциална ÐºÐ¾Ñ€ÐµÐºÑ†Ð¸Ñ Ð½Ð° GPS',
+'exif-keywords' => 'Ключови думи',
'exif-objectname' => 'Кратко заглавие',
+'exif-specialinstructions' => 'Специални инÑтрукции',
+'exif-contact' => 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° контакти',
+'exif-languagecode' => 'Език',
+'exif-iimversion' => 'IIM верÑиÑ',
+'exif-iimcategory' => 'КатегориÑ',
+'exif-datetimeexpires' => 'Да не Ñе използва Ñлед',
+'exif-identifier' => 'Идентификатор',
+'exif-serialnumber' => 'Сериен номер на фотоапарата',
+'exif-cameraownername' => 'СобÑтвеник на фотоапарата',
+'exif-nickname' => 'Ðеформално име на изображението',
+'exif-rating' => 'Рейтинг (от 5)',
+'exif-usageterms' => 'УÑÐ»Ð¾Ð²Ð¸Ñ Ð·Ð° използване',
+'exif-originaldocumentid' => 'Уникален номер на Ð¾Ñ€Ð¸Ð³Ð¸Ð½Ð°Ð»Ð½Ð¸Ñ Ð´Ð¾ÐºÑƒÐ¼ÐµÐ½Ñ‚',
+'exif-morepermissionsurl' => 'Ðлтернативна Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð·Ð° лиценза',
+'exif-event' => 'Изобразено Ñъбитие',
+'exif-organisationinimage' => 'Изобразена организациÑ',
+'exif-personinimage' => 'Изобразена личноÑÑ‚',
+'exif-originalimageheight' => 'ВиÑочина на изображението преди намалÑването',
+'exif-originalimagewidth' => 'Ширина на изображението преди намалÑването',
# EXIF attributes
'exif-compression-1' => 'ÐекомпреÑиран',
+'exif-copyrighted-false' => 'ОбщеÑтвено доÑтоÑние',
+
'exif-unknowndate' => 'ÐеизвеÑтна дата',
'exif-orientation-1' => 'Ðормално',
@@ -3100,6 +3183,10 @@ $1',
'exif-gpslongitude-e' => 'източна дължина',
'exif-gpslongitude-w' => 'западна дължина',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{plural:$1|метър|метра}} над морÑкото равнище',
+'exif-gpsaltitude-below-sealevel' => '$1 {{plural:$1|метър|метра}} под морÑкото равнище',
+
'exif-gpsstatus-a' => 'Измерване в ход',
'exif-gpsstatus-v' => 'Оперативна ÑъвмеÑтимоÑÑ‚ на измерването',
@@ -3111,21 +3198,58 @@ $1',
'exif-gpsspeed-m' => 'мили/чаÑ',
'exif-gpsspeed-n' => 'възли',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Километри',
+'exif-gpsdestdistance-m' => 'Мили',
+'exif-gpsdestdistance-n' => 'МорÑки мили',
+
+'exif-gpsdop-excellent' => 'Отлично ($1)',
+'exif-gpsdop-good' => 'Добро ($1)',
+'exif-gpsdop-moderate' => 'Умерено ($1)',
+'exif-gpsdop-fair' => 'Горе-долу ($1)',
+'exif-gpsdop-poor' => 'Лошо ($1)',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'иÑтинÑка',
'exif-gpsdirection-m' => 'магнитна',
+'exif-dc-date' => 'Дата(и)',
+'exif-dc-rights' => 'Права',
+
+'exif-isospeedratings-overflow' => 'По-голÑма от 65535',
+
+'exif-iimcategory-ace' => 'ИзкуÑтвa, култура и забавление',
+'exif-iimcategory-clj' => 'ПреÑтъпноÑÑ‚ и право',
+'exif-iimcategory-dis' => 'БедÑÑ‚Ð²Ð¸Ñ Ð¸ аварии',
+'exif-iimcategory-fin' => 'Икономика и бизнеÑ',
+'exif-iimcategory-edu' => 'Образование',
+'exif-iimcategory-evn' => 'Околна Ñреда',
+'exif-iimcategory-hth' => 'Здраве',
+'exif-iimcategory-hum' => 'Човешки интереÑи',
+'exif-iimcategory-lab' => 'Труд',
+'exif-iimcategory-lif' => 'Ðачин на живот и отдих',
+'exif-iimcategory-pol' => 'Политика',
+'exif-iimcategory-rel' => 'Ð ÐµÐ»Ð¸Ð³Ð¸Ñ Ð¸ вÑра',
+'exif-iimcategory-sci' => 'Ðаука и технологии',
+'exif-iimcategory-soi' => 'Социални проблеми',
+'exif-iimcategory-spo' => 'Спорт',
+'exif-iimcategory-war' => 'Война, конфликти и безредици',
+'exif-iimcategory-wea' => 'Време',
+
+'exif-urgency-normal' => 'Ðормална ($1)',
+'exif-urgency-low' => 'ÐиÑка ($1)',
+'exif-urgency-high' => 'ВиÑока ($1)',
+'exif-urgency-other' => 'Зададен от Ð¿Ð¾Ñ‚Ñ€ÐµÐ±Ð¸Ñ‚ÐµÐ»Ñ Ð¿Ñ€Ð¸Ð¾Ñ€Ð¸Ñ‚ÐµÑ‚ ($1)',
+
# External editor support
'edit-externally' => 'Редактиране на файла чрез външно приложение',
-'edit-externally-help' => '(За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ñ€ÐµÐ³Ð»ÐµÐ´Ð°Ð¹Ñ‚Ðµ [http://www.mediawiki.org/wiki/Manual:External_editors указаниÑта за наÑтройките]).',
+'edit-externally-help' => '(За повече Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¿Ñ€ÐµÐ³Ð»ÐµÐ´Ð°Ð¹Ñ‚Ðµ [//www.mediawiki.org/wiki/Manual:External_editors указаниÑта за наÑтройките]).',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'вÑички',
-'imagelistall' => 'вÑички',
-'watchlistall2' => 'вÑички',
-'namespacesall' => 'Ð’Ñички',
-'monthsall' => 'вÑички',
-'limitall' => 'вÑички',
+'watchlistall2' => 'вÑички',
+'namespacesall' => 'Ð’Ñички',
+'monthsall' => 'вÑички',
+'limitall' => 'вÑички',
# E-mail address confirmation
'confirmemail' => 'Потвърждаване на Ð°Ð´Ñ€ÐµÑ Ð·Ð° електронна поща',
@@ -3195,17 +3319,24 @@ $1',
'trackbackdeleteok' => 'Обратната Ñледа беше изтрита.',
# Delete conflict
-'deletedwhileediting' => "'''Внимание''': Страницата е била изтрита, Ñлед като Ñте започнали да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ!",
-'confirmrecreate' => "ПотребителÑÑ‚ [[User:$1|$1]] ([[User talk:$1|беÑеда]]) е изтрил Ñтраницата, откакто Ñте започнали да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ, като е поÑочил Ñледното обÑÑнение:
+'deletedwhileediting' => "'''Внимание''': Страницата е била изтрита, Ñлед като Ñте започнали да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ!",
+'confirmrecreate' => "ПотребителÑÑ‚ [[User:$1|$1]] ([[User talk:$1|беÑеда]]) е изтрил Ñтраницата, откакто Ñте започнали да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ, като е поÑочил Ñледното обÑÑнение:
: ''$2''
Потвърдете, че наиÑтина желаете да Ñъздадете Ñтраницата отново.",
-'recreate' => 'Ðово Ñъздаване',
+'confirmrecreate-noreason' => 'Потребител [[User:$1|$1]] ([[User talk:$1|беÑеда]]) изтри тази Ñтраница Ñлед като Ñте започнали да Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ‚Ðµ. Ðеобходимо е потвърждение, че наиÑтина желаете да Ñъздадете Ñтраницата отново.',
+'recreate' => 'Ðово Ñъздаване',
# action=purge
'confirm_purge_button' => 'Добре',
'confirm-purge-top' => 'ИзчиÑтване на Ñкладираното копие на Ñтраницата?',
'confirm-purge-bottom' => 'ИзчиÑтването на Ñтраница опреÑнÑва кеша и показва поÑледната й верÑиÑ.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Потвърждаване',
+'confirm-watch-top' => 'ДобавÑне на Ñтраницата в ÑпиÑъка ви за наблюдение?',
+'confirm-unwatch-button' => 'Потвърждаване',
+'confirm-unwatch-top' => 'Премахване на Ñтраницата от ÑпиÑъка ви за наблюдение?',
+
# Multipage image navigation
'imgmultipageprev' => '↠предишна Ñтраница',
'imgmultipagenext' => 'Ñледваща Ñтраница →',
@@ -3247,13 +3378,13 @@ $1',
'watchlistedit-normal-legend' => 'Премахване на запиÑи от ÑпиÑъка за наблюдение',
'watchlistedit-normal-explain' => 'По-долу Ñа показани заглавиÑта на Ñтраниците от ÑпиÑъка ви за наблюдение.
За да премахнете Ñтраница, отбележете полето пред Ð½ÐµÑ Ð¸ щракнете на бутона „{{int:Watchlistedit-normal-submit}}“.
-Можете Ñъщо да редактирате [[Special:Watchlist/raw|Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐµÐ½Ð¸Ñ ÑпиÑък за наблюдение]].',
+Можете Ñъщо да редактирате [[Special:EditWatchlist/raw|Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐµÐ½Ð¸Ñ ÑпиÑък за наблюдение]].',
'watchlistedit-normal-submit' => 'Премахване',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 Ñтраница беше премахната|$1 Ñтраници бÑха премахнати}} от ÑпиÑъка ви за наблюдение:',
'watchlistedit-raw-title' => 'Редактиране на Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐµÐ½Ð¸Ñ ÑпиÑък за наблюдение',
'watchlistedit-raw-legend' => 'Редактиране на Ð½ÐµÐ¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐµÐ½Ð¸Ñ ÑпиÑък за наблюдение',
'watchlistedit-raw-explain' => 'По-долу Ñа показани заглавиÑта на Ñтраниците от ÑпиÑъка ви за наблюдение. Можете да ги редактирате, като добавÑте или премахвате по едно заглавие на ред. Като приключите, щракнете върху бутона „{{int:Watchlistedit-raw-submit}}“.
-Можете да използвате и [[Special:Watchlist/edit|ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€]].',
+Можете да използвате и [[Special:EditWatchlist|ÑÑ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¾Ñ€]].',
'watchlistedit-raw-titles' => 'Страници:',
'watchlistedit-raw-submit' => 'ОбновÑване на ÑпиÑъка за наблюдение',
'watchlistedit-raw-done' => 'СпиÑъкът ви за наблюдение беше обновен.',
@@ -3270,33 +3401,33 @@ $1',
'duplicate-defaultsort' => 'Внимание: Ключът за Ñортиране по подразбиране „$2“ Ð¾Ñ‚Ð¼ÐµÐ½Ñ Ð¿Ð¾-Ñ€Ð°Ð½Ð½Ð¸Ñ ÐºÐ»ÑŽÑ‡ „$1“.',
# Special:Version
-'version' => 'ВерÑиÑ',
-'version-extensions' => 'ИнÑталирани разширениÑ',
-'version-specialpages' => 'Специални Ñтраници',
-'version-parserhooks' => 'Куки в парÑера',
-'version-variables' => 'Променливи',
-'version-skins' => 'Облици',
-'version-other' => 'Други',
-'version-mediahandlers' => 'Обработчици на медиÑ',
-'version-hooks' => 'Куки',
-'version-extension-functions' => 'Допълнителни функции',
-'version-parser-extensiontags' => 'Етикети от парÑерни разширениÑ',
-'version-parser-function-hooks' => 'Куки в парÑерни функции',
-'version-skin-extension-functions' => 'Функции на Ñ€Ð°Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð¸Ñ Ð·Ð° облици',
-'version-hook-name' => 'Име на куката',
-'version-hook-subscribedby' => 'Ползвана от',
-'version-version' => '(ВерÑÐ¸Ñ $1)',
-'version-license' => 'Лиценз',
-'version-poweredby-credits' => "Това уики Ñе задвиждва от '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'други',
-'version-license-info' => 'MediaWiki е Ñвободен Ñофтуер, можете да го разпроÑтранÑвате и/или променÑте ÑъглаÑно уÑловиÑта на GNU General Public License, както е публикуван от Free Software Foundation, верÑÐ¸Ñ 2 на лиценза или (по ваше уÑмотрение) коÑто и да е Ñледваща верÑиÑ.
+'version' => 'ВерÑиÑ',
+'version-extensions' => 'ИнÑталирани разширениÑ',
+'version-specialpages' => 'Специални Ñтраници',
+'version-parserhooks' => 'Куки в парÑера',
+'version-variables' => 'Променливи',
+'version-antispam' => 'ПредотвратÑване на Ñпам',
+'version-skins' => 'Облици',
+'version-other' => 'Други',
+'version-mediahandlers' => 'Обработчици на медиÑ',
+'version-hooks' => 'Куки',
+'version-extension-functions' => 'Допълнителни функции',
+'version-parser-extensiontags' => 'Етикети от парÑерни разширениÑ',
+'version-parser-function-hooks' => 'Куки в парÑерни функции',
+'version-hook-name' => 'Име на куката',
+'version-hook-subscribedby' => 'Ползвана от',
+'version-version' => '(ВерÑÐ¸Ñ $1)',
+'version-license' => 'Лиценз',
+'version-poweredby-credits' => "Това уики Ñе задвиждва от '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'други',
+'version-license-info' => 'MediaWiki е Ñвободен Ñофтуер, можете да го разпроÑтранÑвате и/или променÑте ÑъглаÑно уÑловиÑта на GNU General Public License, както е публикуван от Free Software Foundation, верÑÐ¸Ñ 2 на лиценза или (по ваше уÑмотрение) коÑто и да е Ñледваща верÑиÑ.
MediaWiki Ñе разпроÑтранÑва Ñ Ð½Ð°Ð´ÐµÐ¶Ð´Ð°Ñ‚Ð°, че ще бъде полезен, но БЕЗ ÐИКÐКВИ ГÐРÐÐЦИИ, без дори коÑвена Ð³Ð°Ñ€Ð°Ð½Ñ†Ð¸Ñ Ð·Ð° ПРОДÐÐ’ÐЕМОСТ или ПРИГОДÐОСТ ЗРКОÐКРЕТÐРУПОТРЕБÐ. Вижте GNU General Public License за повече подробноÑти.
-ТрÑбва да Ñте получили [{{SERVER}}{{SCRIPTPATH}}/COPYING копие на GNU General Public License] заедно Ñ Ñ‚Ð°Ð·Ð¸ програма. Ðко не Ñте, пишете на Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA или го [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html прочетете в мрежата].',
-'version-software' => 'ИнÑталиран Ñофтуер',
-'version-software-product' => 'Продукт',
-'version-software-version' => 'ВерÑиÑ',
+ТрÑбва да Ñте получили [{{SERVER}}{{SCRIPTPATH}}/COPYING копие на GNU General Public License] заедно Ñ Ñ‚Ð°Ð·Ð¸ програма. Ðко не Ñте, пишете на Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA или го [//www.gnu.org/licenses/old-licenses/gpl-2.0.html прочетете в мрежата].',
+'version-software' => 'ИнÑталиран Ñофтуер',
+'version-software-product' => 'Продукт',
+'version-software-version' => 'ВерÑиÑ',
# Special:FilePath
'filepath' => 'Път към файл',
@@ -3306,20 +3437,22 @@ MediaWiki Ñе разпроÑтранÑва Ñ Ð½Ð°Ð´ÐµÐ¶Ð´Ð°Ñ‚Ð°, че ще бÑ
ИзображениÑта Ñе показват в пълната им разделителна ÑпоÑобноÑÑ‚, а други типове файлове Ñе отварÑÑ‚ направо Ñ Ð¿Ñ€Ð¸Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñта, Ñ ÐºÐ¾Ð¸Ñ‚Ð¾ Ñа аÑоциирани.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'ТърÑене на повтарÑщи Ñе файлове',
-'fileduplicatesearch-summary' => 'Въведете име на файл (без предÑтавката „{{ns:file}}:“), за да потърÑите повтарÑщи го файлове въз оÑнова на неговата хеш ÑтойноÑÑ‚.',
-'fileduplicatesearch-legend' => 'ТърÑене на повтарÑщ Ñе файл',
-'fileduplicatesearch-filename' => 'Име на файл:',
-'fileduplicatesearch-submit' => 'ТърÑене',
-'fileduplicatesearch-info' => '$1 × $2 пикÑела<br />Размер на файла: $3<br />MIME тип: $4',
-'fileduplicatesearch-result-1' => 'Файлът „$1“ нÑма идентично копие.',
-'fileduplicatesearch-result-n' => 'Файлът „$1“ има {{PLURAL:$2|едно идентично копие|$2 идентични копиÑ}}.',
+'fileduplicatesearch' => 'ТърÑене на повтарÑщи Ñе файлове',
+'fileduplicatesearch-summary' => 'ТърÑене на повтарÑщи Ñе файлове на база хеш ÑтойноÑти.',
+'fileduplicatesearch-legend' => 'ТърÑене на повтарÑщ Ñе файл',
+'fileduplicatesearch-filename' => 'Име на файл:',
+'fileduplicatesearch-submit' => 'ТърÑене',
+'fileduplicatesearch-info' => '$1 × $2 пикÑела<br />Размер на файла: $3<br />MIME тип: $4',
+'fileduplicatesearch-result-1' => 'Файлът „$1“ нÑма идентично копие.',
+'fileduplicatesearch-result-n' => 'Файлът „$1“ има {{PLURAL:$2|едно идентично копие|$2 идентични копиÑ}}.',
+'fileduplicatesearch-noresults' => 'Ðе беше открит файл Ñ Ð¸Ð¼Ðµ "$1".',
# Special:SpecialPages
'specialpages' => 'Специални Ñтраници',
'specialpages-note' => '----
* Обикновени Ñпециални Ñтраници.
-* <strong class="mw-specialpagerestricted">Специални Ñтраници Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ.</strong>',
+* <strong class="mw-specialpagerestricted">Специални Ñтраници Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð¸Ñ.</strong>
+* <span class="mw-specialpagecached">Само Ñкладирани Ñпециални Ñтраници (възможно е да Ñа оÑтарели).</span>',
'specialpages-group-maintenance' => 'Доклади по поддръжката',
'specialpages-group-other' => 'Други Ñпециални Ñтраници',
'specialpages-group-login' => 'Влизане / региÑтриране',
diff --git a/languages/messages/MessagesBh.php b/languages/messages/MessagesBh.php
index a96d268b..95ecd8da 100644
--- a/languages/messages/MessagesBh.php
+++ b/languages/messages/MessagesBh.php
@@ -1,742 +1,13 @@
<?php
-/** Bihari (भोजपà¥à¤°à¥€)
+/** Bihari (macro language)
*
* See MessagesQqq.php for message documentation incl. usage of parameters
* To improve a translation please visit http://translatewiki.net
*
* @ingroup Language
* @file
+ * @comment falls back to Bhojpuri.
*
- * @author Ganesh
*/
-$namespaceNames = array(
- NS_MEDIA => 'मीडिया',
- NS_SPECIAL => 'विशेष',
- NS_TALK => 'वारà¥à¤¤à¤¾à¤²à¤¾à¤ª',
- NS_USER => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾',
- NS_USER_TALK => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾_वारà¥à¤¤à¤¾',
- NS_PROJECT_TALK => '$1_वारà¥à¤¤à¤¾',
- NS_FILE => 'चितà¥à¤°',
- NS_FILE_TALK => 'चितà¥à¤°_वारà¥à¤¤à¤¾',
- NS_MEDIAWIKI => 'मीडियाविकि',
- NS_MEDIAWIKI_TALK => 'मीडियाविकि_वारà¥à¤¤à¤¾',
- NS_TEMPLATE => 'टेमà¥à¤ªà¤²à¥‡à¤Ÿ',
- NS_TEMPLATE_TALK => 'टेमà¥à¤ªà¤²à¥‡à¤Ÿ_वारà¥à¤¤à¤¾',
- NS_HELP => 'मदद',
- NS_HELP_TALK => 'मदद_वारà¥à¤¤à¤¾',
- NS_CATEGORY => 'शà¥à¤°à¥‡à¤£à¥€',
- NS_CATEGORY_TALK => 'शà¥à¤°à¥‡à¤£à¥€_वारà¥à¤¤à¤¾',
-);
-
-$digitTransformTable = array(
- '0' => '०', # &#x0966;
- '1' => '१', # &#x0967;
- '2' => '२', # &#x0968;
- '3' => '३', # &#x0969;
- '4' => '४', # &#x096a;
- '5' => '५', # &#x096b;
- '6' => '६', # &#x096c;
- '7' => '७', # &#x096d;
- '8' => '८', # &#x096e;
- '9' => '९', # &#x096f;
-);
-
-$messages = array(
-# User preference toggles
-'tog-underline' => 'लिंक के नीचे रेखा',
-'tog-highlightbroken' => 'टूटल लिंक के पà¥à¤°à¤¾à¤°à¥à¤ª ठिक करीं <a href="" class="new"> अईसे </a> (वैकलà¥à¤ªà¤¿à¤•: चाहे अईसे<a href="" class="internal">?</a>)',
-'tog-justify' => 'पैरागà¥à¤°à¤¾à¤« जसà¥à¤Ÿà¥€à¤«à¤¾à¤ˆ',
-'tog-hideminor' => 'हाल के परिवरà¥à¤¤à¤¨ में मामूली संपादन छà¥à¤ªà¤¾à¤ˆà¤‚',
-'tog-numberheadings' => 'सà¥à¤µà¤¯à¤‚-सांखà¥à¤¯à¤¿à¤•à¥€ शिरà¥à¤·à¤•',
-'tog-rememberpassword' => 'इ बà¥à¤°à¤¾à¤‰à¤œà¤° पर हमार पà¥à¤°à¤µà¥‡à¤¶ जारी रहे (अधिकतम $1 {{PLURAL:$1|दिन|दिन}})',
-'tog-previewonfirst' => 'पहिलका समà¥à¤ªà¤¾à¤¦à¤¨ पर पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨ देखीं',
-
-'underline-always' => 'हमेशा',
-'underline-never' => 'कभी ना',
-'underline-default' => 'डिफॉलà¥à¤Ÿ बà¥à¤°à¤¾à¤‰à¤œà¤°',
-
-# Dates
-'sunday' => 'इतवार',
-'monday' => 'सोमवार',
-'tuesday' => 'मंगलवार',
-'wednesday' => 'बà¥à¤§à¤µà¤¾à¤°',
-'thursday' => 'गà¥à¤°à¥à¤µà¤¾à¤°',
-'friday' => 'शà¥à¤•à¥à¤°à¤µà¤¾à¤°',
-'saturday' => 'शनिवार',
-'sun' => 'इत',
-'mon' => 'सोम',
-'tue' => 'मंगल',
-'wed' => 'बà¥à¤§',
-'thu' => 'गà¥à¤°à¥',
-'fri' => 'शà¥à¤•à¥à¤°',
-'sat' => 'शनि',
-'january' => 'जनवरी',
-'february' => 'फरवरी',
-'march' => 'मारà¥à¤š',
-'april' => 'अपà¥à¤°à¤¿à¤²',
-'may_long' => 'मई',
-'june' => 'जून',
-'july' => 'जà¥à¤²à¤¾à¤ˆ',
-'august' => 'अगसà¥à¤¤',
-'september' => 'सितमà¥à¤¬à¤°',
-'october' => 'अकà¥à¤Ÿà¥‚बर',
-'november' => 'नवमà¥à¤¬à¤°',
-'december' => 'दिसमà¥à¤¬à¤°',
-'january-gen' => 'जनवरी',
-'february-gen' => 'फरवरी',
-'march-gen' => 'मारà¥à¤š',
-'april-gen' => 'अपà¥à¤°à¤¿à¤²',
-'may-gen' => 'मई',
-'june-gen' => 'जून',
-'july-gen' => 'जà¥à¤²à¤¾à¤ˆ',
-'august-gen' => 'अगसà¥à¤¤',
-'september-gen' => 'सितमà¥à¤¬à¤°',
-'october-gen' => 'अकà¥à¤Ÿà¥‚बर',
-'november-gen' => 'नवमà¥à¤¬à¤°',
-'december-gen' => 'दिसमà¥à¤¬à¤°',
-'jan' => 'जन',
-'feb' => 'फर',
-'mar' => 'मारà¥à¤š',
-'apr' => 'अपà¥à¤°à¤¿à¤²',
-'may' => 'मई',
-'jun' => 'जून',
-'jul' => 'जà¥à¤²',
-'aug' => 'अग',
-'sep' => 'सित',
-'oct' => 'अकà¥à¤Ÿà¥‚',
-'nov' => 'नव',
-'dec' => 'दिस',
-
-# Categories related messages
-'pagecategories' => '{{PLURAL:$1|शà¥à¤°à¥‡à¤£à¥€|शà¥à¤°à¥‡à¤£à¥€}}',
-
-'about' => 'बारे में',
-'article' => 'सामगà¥à¤°à¥€ पनà¥à¤¨à¤¾',
-'newwindow' => '(नया विंडो में खोलीं)',
-'cancel' => 'निरसà¥à¤¤',
-'mytalk' => 'हमार बात',
-'navigation' => 'परिभà¥à¤°à¤®à¤£',
-
-# Cologne Blue skin
-'qbfind' => 'खोज',
-'qbbrowse' => 'बà¥à¤°à¤¾à¤‰à¤œ',
-'qbedit' => 'समà¥à¤ªà¤¾à¤¦à¤¨',
-'qbpageoptions' => 'ई पनà¥à¤¨à¤¾',
-'qbpageinfo' => 'पà¥à¤°à¤¸à¤‚ग',
-'qbmyoptions' => 'हमार पनà¥à¤¨à¤¾',
-'qbspecialpages' => 'विशेष पनà¥à¤¨à¤¾',
-'faq' => 'साधारण सवाल',
-'faqpage' => 'Project:साधारण सवाल',
-
-# Vector skin
-'vector-action-delete' => 'मिटाईं',
-'vector-action-move' => 'सà¥à¤¥à¤¾à¤‚तरण',
-'vector-action-protect' => 'संरकà¥à¤·à¤¿à¤¤ करीं',
-'vector-action-undelete' => 'मत मिटाईं',
-'vector-action-unprotect' => 'असà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं',
-'vector-view-create' => 'बनाईं',
-'vector-view-edit' => 'समà¥à¤ªà¤¾à¤¦à¤¨',
-'vector-view-history' => 'इतिहास देखीं',
-'vector-view-view' => 'पढ़ीं',
-'vector-view-viewsource' => 'सà¥à¤¤à¥à¤°à¥‹à¤¤ देखीं',
-
-'errorpagetitle' => 'तà¥à¤°à¥à¤Ÿà¥€',
-'returnto' => 'जाईं $1 पर।',
-'tagline' => 'भोजपà¥à¤°à¥€ {{SITENAME}} से',
-'help' => 'मदद',
-'search' => 'खोज',
-'searchbutton' => 'खोजीं',
-'go' => 'जाईं',
-'searcharticle' => 'जाईं',
-'history' => 'पनà¥à¤¨à¤¾ के इतिहास',
-'history_short' => 'इतिहास',
-'updatedmarker' => 'हमार अनà¥à¤¤à¤¿à¤® आगमन से बदलाव',
-'info_short' => 'जानकारी',
-'printableversion' => 'छापे लायक संसà¥à¤•à¤°à¤£',
-'permalink' => 'सà¥à¤¥à¤¾à¤¯à¥€ लिंक',
-'print' => 'छापीं',
-'edit' => 'समà¥à¤ªà¤¾à¤¦à¤¨',
-'create' => 'बनाईं',
-'editthispage' => 'ई पनà¥à¤¨à¤¾ के समà¥à¤ªà¤¾à¤¦à¤¨ करीं',
-'create-this-page' => 'ई पनà¥à¤¨à¤¾ के निरà¥à¤®à¤¾à¤£ करीं',
-'delete' => 'मिटाईं',
-'deletethispage' => 'ई पनà¥à¤¨à¤¾ के मिटाईं',
-'protect' => 'संरकà¥à¤·à¤£ करीं',
-'protect_change' => 'बदलीं',
-'protectthispage' => 'इ पनà¥à¤¨à¤¾ के सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं।',
-'unprotect' => 'असà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं',
-'unprotectthispage' => 'इ पनà¥à¤¨à¤¾ के असà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं',
-'newpage' => 'नया पनà¥à¤¨à¤¾',
-'talkpage' => 'इ पनà¥à¤¨à¤¾ पर चरà¥à¤šà¤¾ करीं',
-'talkpagelinktext' => 'बात-चीत',
-'specialpage' => 'ख़ाश पनà¥à¤¨à¤¾',
-'personaltools' => 'बà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त औजार',
-'postcomment' => 'नया खणà¥à¤¡',
-'articlepage' => 'सामगà¥à¤°à¥€ पनà¥à¤¨à¤¾ देखीं',
-'talk' => 'बात-चीत',
-'views' => 'विचारसूची',
-'toolbox' => 'औजार-पेटी',
-'userpage' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ पनà¥à¤¨à¤¾ देखीं',
-'projectpage' => 'परियोजना पनà¥à¤¨à¤¾ देखीं',
-'imagepage' => 'फाईल पनà¥à¤¨à¤¾ देखीà¤',
-'mediawikipage' => 'सनà¥à¤¦à¥‡à¤¶ पनà¥à¤¨à¤¾ देखीं',
-'templatepage' => 'टेमà¥à¤ªà¤²à¥‡à¤Ÿ पनà¥à¤¨à¤¾ देखीं',
-'viewhelppage' => 'मदद पनà¥à¤¨à¤¾ देखीं',
-'categorypage' => 'शà¥à¤°à¥‡à¤£à¥€ पनà¥à¤¨à¤¾ देखीं',
-'viewtalkpage' => 'बात-चीत देखीं',
-'otherlanguages' => 'अनà¥à¤¯ भाषा में',
-'redirectedfrom' => '($1 दà¥à¤µà¤¾à¤°à¤¾ पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤)',
-'redirectpagesub' => 'पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤ पनà¥à¤¨à¤¾',
-'lastmodifiedat' => '$1 के $2 पर ई पनà¥à¤¨à¤¾ पर अनà¥à¤¤à¤¿à¤® बार परिवरà¥à¤¤à¤¨ भईल।',
-'protectedpage' => 'सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ पनà¥à¤¨à¤¾',
-'jumpto' => 'अहिजा जाईं:',
-'jumptonavigation' => 'परिभà¥à¤°à¤®à¤£',
-'jumptosearch' => 'खोजीं',
-'view-pool-error' => 'कà¥à¤·à¤®à¤¾ करीं, ई समय सरà¥à¤µà¤° पर बहà¥à¤¤ जà¥à¤¯à¤¾à¤¦à¤¾ लोड बढ़ गईल बा।
-ई पनà¥à¤¨à¤¾ के बहà¥à¤¤à¥‡ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ लोग देखे के कोशिश कर रहल बानी।
-ई पनà¥à¤¨à¤¾ के फिर से देखे से पहिले कृपया कà¥à¤› देर तक इनà¥à¤¤à¤œà¤¾à¤° करीं।
-
-$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:बारे में',
-'copyright' => 'सामगà¥à¤°à¥€ $1 के तहत उपलबà¥à¤§ बा।',
-'copyrightpage' => '{{ns:project}}:लेखाधिकार',
-'currentevents' => 'हाल के घटना',
-'currentevents-url' => 'Project:हाल के घटना',
-'disclaimers' => 'असà¥à¤µà¤¿à¤•à¤°à¤£',
-'disclaimerpage' => 'Project:सामानà¥à¤¯ असà¥à¤µà¤¿à¤•à¤°à¤£',
-'edithelp' => 'मदद समà¥à¤ªà¤¾à¤¦à¤¨',
-'edithelppage' => 'Help:समà¥à¤ªà¤¾à¤¦à¤¨',
-'mainpage' => 'मà¥à¤–à¥à¤¯ पनà¥à¤¨à¤¾',
-'mainpage-description' => 'पहिलका पनà¥à¤¨à¤¾',
-'portal' => 'सामà¥à¤¦à¤¾à¤¯à¤¿à¤• पनà¥à¤¨à¤¾',
-'portal-url' => 'Project:सामà¥à¤¦à¤¾à¤¯à¤¿à¤• पोरà¥à¤Ÿà¤²',
-'privacy' => 'गोपनीयता नीति',
-'privacypage' => 'Project:गोपनीयता नीति',
-
-'badaccess' => 'अनà¥à¤®à¤¤à¤¿ तà¥à¤°à¥à¤Ÿà¥€',
-'badaccess-group0' => 'रउआ जवन कारà¥à¤°à¤µà¤¾à¤ˆ खातिर अनà¥à¤°à¥‹à¤§ कईले बानी उ के निषà¥à¤ªà¤¾à¤¦à¤¨ करे के अनà¥à¤®à¤¤à¤¿ नईखे।',
-
-'ok' => 'ठिक',
-'retrievedfrom' => '"$1" से लियल गईल',
-'youhavenewmessages' => 'रउआ लगे बा $1 ($2).',
-'newmessageslink' => 'नया सनà¥à¤¦à¥‡à¤¶',
-'newmessagesdifflink' => 'अनà¥à¤¤à¤¿à¤® परिवरà¥à¤¤à¤¨',
-'youhavenewmessagesmulti' => 'रउआ लगे $1 पर नया सनà¥à¤¦à¥‡à¤¶ बा',
-'editsection' => 'समà¥à¤ªà¤¾à¤¦à¤¨',
-'editold' => 'समà¥à¤ªà¤¾à¤¦à¤¨',
-'viewsourceold' => 'सà¥à¤¤à¥à¤°à¥‹à¤¤ देखीं',
-'editlink' => 'समà¥à¤ªà¤¾à¤¦à¤¨',
-'viewsourcelink' => 'सà¥à¤¤à¥à¤°à¥‹à¤¤ देखीं',
-'editsectionhint' => 'समà¥à¤ªà¤¾à¤¦à¤¨ खणà¥à¤¡: $1',
-'toc' => 'सामगà¥à¤°à¥€',
-'showtoc' => 'देखाईं',
-'hidetoc' => 'छà¥à¤ªà¤¾à¤ˆà¤‚',
-'thisisdeleted' => 'देखीं या भंडार करीं $1?',
-'viewdeleted' => '$1 देखब?',
-'site-rss-feed' => '$1 आर à¤à¤¸ à¤à¤¸ फिड',
-'site-atom-feed' => '$1 à¤à¤Ÿà¤® फिड',
-'page-rss-feed' => '"$1" आर à¤à¤¸ à¤à¤¸ फिड',
-'page-atom-feed' => '"$1" à¤à¤Ÿà¤® फिड',
-'red-link-title' => '$1 (पनà¥à¤¨à¤¾ मौजूद नईखे)।',
-
-# Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'पनà¥à¤¨à¤¾',
-'nstab-user' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ पनà¥à¤¨à¤¾',
-'nstab-media' => 'मिडीया पनà¥à¤¨à¤¾',
-'nstab-special' => 'विशेष पनà¥à¤¨à¤¾',
-'nstab-project' => 'परियोजना पनà¥à¤¨à¤¾',
-'nstab-image' => 'फाईल',
-'nstab-mediawiki' => 'सनà¥à¤¦à¥‡à¤¶',
-'nstab-template' => 'टेमà¥à¤ªà¤²à¥‡à¤Ÿ',
-'nstab-help' => 'मदद पनà¥à¤¨à¤¾',
-'nstab-category' => 'शà¥à¤°à¥‡à¤£à¥€',
-
-# Main script and global functions
-'nosuchaction' => 'अईसन कौनो कारà¥à¤°à¤µà¤¾à¤ˆ नाहि',
-'nosuchspecialpage' => 'अईसन कौनो ख़ाश पनà¥à¤¨à¤¾ नाहि',
-'nospecialpagetext' => '<strong>रउआ à¤à¤—ो अवैदà¥à¤¯ विशेष पनà¥à¤¨à¤¾ के अनà¥à¤°à¥‹à¤§ कईले बानी।</strong>
-
-वैदà¥à¤¯ विशेष पनà¥à¤¨à¤¾ के सूची मिल सकत बा [[Special:SpecialPages|{{int:specialpages}}]] पर।',
-
-# General errors
-'error' => 'तà¥à¤°à¥à¤Ÿà¥€',
-'databaseerror' => 'डेटाबेस तà¥à¤°à¥à¤Ÿà¥€',
-'readonly' => 'डेटाबेस लॉक बा',
-'missing-article' => 'डेटाबास ऊ पनà¥à¤¨à¤¾ के पाठà¥à¤¯ के ना खोज पाईल जौन ई के खोजे के रहल, नामित "$1" $2.
-ई सब साधारणत: निमà¥à¤¨à¤²à¤¿à¤–ीत अपà¥à¤°à¤šà¤²à¤¿à¤¤ अनà¥à¤¤à¤° अथवा à¤à¤—ो पनà¥à¤¨à¤¾ पर इतिहास के लिंक जौन मिटा दिहल गईल बा के कारण भईल।
-
-यदि ई बात नईखे, त हो सकत बा सॉफà¥à¤Ÿà¤µà¥‡à¤¯à¤° में बग पावत होखब।
-कृपया ई à¤à¤—ो [[Special:ListUsers/sysop|पà¥à¤°à¤¬à¤¨à¥à¤§à¤•]] के यू आर à¤à¤² के बारे में à¤à¤—ो नोट बनाके खबर करीं।',
-'viewsource' => 'सà¥à¤¤à¥à¤°à¥‹à¤¤ देखीं',
-
-# Login and logout pages
-'yourname' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम',
-'yourpassword' => 'गà¥à¤ªà¥à¤¤ शबà¥à¤¦',
-'yourpasswordagain' => 'गà¥à¤ªà¥à¤¤-शबà¥à¤¦ पà¥à¤¨:डालीं:',
-'login' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶',
-'nav-login-createaccount' => 'खाता पà¥à¤°à¤µà¥‡à¤¶ / खाता बनाईं',
-'loginprompt' => '{{SITENAME}} में पà¥à¤°à¤µà¥‡à¤¶ खातिर राउर कà¥à¤•à¤¿à¤œ चालू होवे के चाहीं',
-'userlogin' => 'खाता पà¥à¤°à¤µà¥‡à¤¶ / खाता बनाईं',
-'userloginnocreate' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶',
-'logout' => 'खाता से बाहर',
-'userlogout' => 'खाता से बाहर',
-'notloggedin' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶ नईखीं भईल',
-'nologin' => 'का à¤à¤—ो खाता नईखे? $1.',
-'nologinlink' => 'à¤à¤—ो खाता बनाईं',
-'createaccount' => 'खाता बनाईं',
-'gotaccount' => 'का पहिले से à¤à¤—ो खाता बा? $1.',
-'gotaccountlink' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶',
-'createaccountmail' => 'ई-मेल दà¥à¤µà¤¾à¤°à¤¾',
-'badretype' => 'रउआ जौन गà¥à¤ªà¥à¤¤ शबà¥à¤¦ डालत बानी उ नईखे मेल खात।',
-'userexists' => 'ई पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम पहिले से इसà¥à¤¤à¥‡à¤®à¤¾à¤² में बा। कृपया कौनो दोसर नाम चà¥à¤¨à¥€à¤‚।',
-'loginerror' => 'खाता पà¥à¤°à¤µà¥‡à¤¶ में तà¥à¤°à¥à¤Ÿà¤¿',
-'createaccounterror' => 'ई खाता ना बन पाईल: $1',
-'nocookiesnew' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ खाता त बन गईल, बाà¤à¤•à¥€ रउआ पà¥à¤°à¤µà¥‡à¤¶ नईखीं भईल।
-{{SITENAME}} पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ लोग के खाता में पà¥à¤°à¤µà¥‡à¤¶ करावे खातिर कà¥à¤•à¤¿à¤œ के पà¥à¤°à¤¯à¥‹à¤— करेला।
-राउर कà¥à¤•à¤¿à¤œ असकà¥à¤·à¤® बा।
-कृपया उ के सकà¥à¤·à¤® करीं, उ के बाद राउर नया पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम आ गà¥à¤ªà¥à¤¤ शबà¥à¤¦ के साथ पà¥à¤°à¤µà¥‡à¤¶ करीं।',
-'nocookieslogin' => '{{SITENAME}} पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ लोग के खाता में पà¥à¤°à¤µà¥‡à¤¶ करावे खातिर कà¥à¤•à¤¿à¤œ के पà¥à¤°à¤¯à¥‹à¤— करेला।
-राउर कà¥à¤•à¤¿à¤œ असकà¥à¤·à¤® बा।
-कृपया उ के सकà¥à¤·à¤® करीं आ फिर से कोशिश करीं',
-'noname' => 'रउआ उपयà¥à¤•à¥à¤¤ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम नईखीं निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ कईले।',
-'loginsuccesstitle' => 'खाता पà¥à¤°à¤µà¥‡à¤¶ में सफल',
-'loginsuccess' => "''' \"\$1\" के रà¥à¤ª में रउआ {{SITENAME}} में अब पà¥à¤°à¤µà¥‡à¤¶ कर चà¥à¤•à¤² बानी।'''",
-'nosuchuser' => '"$1" नाम से कौनो पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नईखन।
-पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम संवेदनशील मामला बा।
-शबà¥à¤¦-वरà¥à¤¤à¤¨à¥€ के जाà¤à¤š करीं, आ चाहे [[Special:UserLogin/signup|à¤à¤—ो नया खाता बनाईं]]।',
-'nosuchusershort' => 'ई नाम से कौनो पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नईखन "<nowiki>$1</nowiki>".
-आपन शबà¥à¤¦-वरà¥à¤¤à¤¨à¥€ के जाà¤à¤š करीं।',
-'nouserspecified' => 'रउआ à¤à¤—ो पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करे के बा।',
-'login-userblocked' => 'ई पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ के खाता निषà¥à¤•à¥à¤°à¤¿à¤¯ हो चà¥à¤•à¤² बा। पà¥à¤°à¤µà¥‡à¤¶ के आजà¥à¤žà¤¾ नईखे।',
-'wrongpassword' => 'गलत गà¥à¤ªà¥à¤¤-शबà¥à¤¦ डलले बानी।
-कृपया फिर से कोशिश करीं।',
-'wrongpasswordempty' => 'गà¥à¤ªà¥à¤¤-शबà¥à¤¦ खाली बा। कृपया फिर से कोशिश करीं।',
-'passwordtooshort' => 'गà¥à¤ªà¥à¤¤-शबà¥à¤¦ कम से कम {{PLURAL:$1|1 अकà¥à¤·à¤°|$1 अकà¥à¤·à¤°}} के होवे के चाहीं।',
-'password-name-match' => 'राउर गà¥à¤ªà¥à¤¤-शबà¥à¤¦ राउर पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम से अलग होवे के चाहीं।',
-'mailmypassword' => 'नया गà¥à¤ªà¥à¤¤-शबà¥à¤¦ ई-मेल पर भेजीं',
-'passwordremindertitle' => '{{SITENAME}} खातिर नया असà¥à¤¥à¤¾à¤¯à¥€ गà¥à¤ªà¥à¤¤-शबà¥à¤¦',
-
-# Password reset dialog
-'resetpass' => 'गà¥à¤ªà¥à¤¤-शबà¥à¤¦ बदलीं',
-'oldpassword' => 'पà¥à¤°à¤¾à¤¨à¤¾ गà¥à¤ªà¥à¤¤-शबà¥à¤¦:',
-'newpassword' => 'नया गà¥à¤ªà¥à¤¤-शबà¥à¤¦:',
-'retypenew' => 'नया गà¥à¤ªà¥à¤¤-शबà¥à¤¦ पà¥à¤¨: डालीं:',
-
-# Edit page toolbar
-'bold_tip' => 'मोट पाठà¥à¤¯',
-'italic_sample' => 'इटालिक पाठà¥à¤¯',
-'italic_tip' => 'इटालिक पाठà¥à¤¯',
-'headline_sample' => 'शिरà¥à¤·à¤• पाठà¥à¤¯',
-'math_tip' => 'गणितिय सूतà¥à¤° (LaTeX)',
-'image_sample' => 'उदाहरण.jpg',
-'media_sample' => 'उदाहरण.ogg',
-'media_tip' => 'फाईल लिंक',
-'sig_tip' => 'timestamp के साथ राउर हसà¥à¤¤à¤¾à¤•à¥à¤·à¤°',
-
-# Edit pages
-'summary' => 'सारांश:',
-'subject' => 'विषय/शिरà¥à¤·à¤•:',
-'minoredit' => 'छोट परिवरà¥à¤¤à¤¨',
-'watchthis' => 'ई पनà¥à¤¨à¤¾ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में डालीं',
-'savearticle' => 'पनà¥à¤¨à¤¾ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं',
-'preview' => 'पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨',
-'showpreview' => 'पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨ देखाईं',
-'showlivepreview' => 'सीधा पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨',
-'showdiff' => 'परिवरà¥à¤¤à¤¨ देखाईं',
-'anoneditwarning' => "'''चेतावनी:''' रउआ आपन खाता में पà¥à¤°à¤µà¥‡à¤¶ नईखीं कईले। ई पनà¥à¤¨à¤¾ के समà¥à¤ªà¤¾à¤¦à¤¨ इतिहास पर राउर आई पी पता दरà¥à¤œ कईल जाई।",
-'anonpreviewwarning' => "''रउआ खाता में पà¥à¤°à¤µà¥‡à¤¶ नईखीं भईल। सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करेब त ई पनà¥à¤¨à¤¾ के समà¥à¤ªà¤¾à¤¦à¤¨ इतिहास पर राउर आई पी पता दरà¥à¤œ हो जाई।\"",
-'missingsummary' => "'''सà¥à¤®à¤°à¤£à¤ªà¤¤à¥à¤°:'''रउआ à¤à¤—ो सारांश के समà¥à¤ªà¤¾à¤¦à¤¨ नईखीं पà¥à¤°à¤¦à¤¾à¤¨ कईले। अगर रउआ \"फिर से सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं\" पर कà¥à¤²à¤¿à¤• करेब, त राउर समà¥à¤ªà¤¾à¤¦à¤¨ बिना à¤à¤—ो सारांश के सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ हो जाई।",
-'missingcommenttext' => 'कृपया निचे à¤à¤—ो टिपà¥à¤ªà¤£à¥€ करीं।',
-'missingcommentheader' => "'''सà¥à¤®à¤°à¤£à¤ªà¤¤à¥à¤°:''' रउआ ई टिपà¥à¤ªà¤£à¥€ खातिर कौनो विषय/शिरà¥à¤·à¤• पà¥à¤°à¤¦à¤¾à¤¨ नईखीं कईले। \"{{int:savearticle}}\" यदि रउआ फिर से सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करब त राउर समà¥à¤ªà¤¾à¤¦à¤¨ बिना कौनो शिरà¥à¤·à¤• के सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ हो जाई।",
-'summary-preview' => 'सारांश पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨:',
-'subject-preview' => 'विषय/शिरà¥à¤·à¤• पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨:',
-'blockedtitle' => 'निषà¥à¤•à¥à¤°à¤¿à¤¯ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾',
-'blockednoreason' => 'कउनो कारण उलà¥à¤²à¥‡à¤–ित नईखे',
-'whitelistedittitle' => 'समà¥à¤ªà¤¾à¤¦à¤¨ खातिर खाता में पà¥à¤°à¤µà¥‡à¤¶ जरà¥à¤°à¥€ बा',
-'nosuchsectiontitle' => 'खणà¥à¤¡ ना मिल सकल।',
-'loginreqtitle' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶ जरà¥à¤°à¥€ बा',
-'loginreqlink' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶',
-'accmailtitle' => 'गà¥à¤ªà¥à¤¤-शबà¥à¤¦ भेजा गईल',
-'newarticle' => '(नया)',
-'newarticletext' => "रउआ à¤à¤—ो अइसन लिंक के पनà¥à¤¨à¤¾ के अनà¥à¤¸à¤°à¤£ कइले बानी जउन अभी तक उपलबà¥à¤§ नइखे।
-पनà¥à¤¨à¤¾ बनावे खातिर, नीचे के बाकस में टाईप करे के शà¥à¤°à¥ करीं (जà¥à¤¯à¤¾à¤¦à¤¾ जानकारी खातिर देखीं [[{{MediaWiki:Helppage}}|मदद पनà¥à¤¨à¤¾]])।
-यदि रउआ अहिजा गलती से आ गईल बानी त, आपन बà¥à¤°à¤¾à¤‰à¤œà¤° के '''back''' (बैक) बटन दबाईं",
-'yourdiff' => 'अंतर',
-'template-protected' => '(संरकà¥à¤·à¤¿à¤¤)',
-
-# History pages
-'revisionasof' => '$1 के रà¥à¤ª में संशोधन',
-'revision-info' => '$2 में से $1 के रà¥à¤ª में संशोधन',
-'previousrevision' => '↠पà¥à¤°à¤¾à¤¨ संशोधन',
-'nextrevision' => 'नया संशोधन →',
-'currentrevisionlink' => 'हाल के संशोधन',
-'cur' => 'हाल',
-'next' => 'अगिला',
-'last' => 'पछिला',
-'page_first' => 'पहिलका',
-'page_last' => 'आखिरी',
-'histlegend' => "चà¥à¤¨à¤¾à¤µ अनà¥à¤¤à¤°: तà¥à¤²à¤¨à¤¾ करे खातिर संशोधन के रेडियो बटन पर निशान लगाईं आ enter बटन दबाईं आ चाहे निचला बटन दबाईं।<br />
-Legend: '''({{int:cur}})''' = हाल के संशोधन के साथ अंतर, '''({{int:last}})''' = पà¥à¤°à¥à¤µà¤µà¤°à¥à¤¤à¥€ संशोधन के साथ अंतर, '''{{int:minoreditletter}}''' = छोट समà¥à¤ªà¤¾à¤¦à¤¨à¥¤",
-'history-fieldset-title' => 'इतिहास निहारीं',
-'history-show-deleted' => 'खाली मेटावल',
-'histfirst' => 'बहà¥à¤¤ पहिले के',
-'histlast' => 'हाल के',
-'historysize' => '({{PLURAL:$1|1 बाइट|$1 बाइट}})',
-'historyempty' => '(खाली)',
-
-# Revision feed
-'history-feed-title' => 'संशोधन इतिहास',
-'history-feed-description' => 'विकि पर इ पनà¥à¤¨à¤¾ के संशोधन के इतिहास',
-'history-feed-item-nocomment' => '$1 $2 पर',
-'history-feed-empty' => 'अनà¥à¤°à¥‹à¤§ करल गईल पनà¥à¤¨à¤¾ उपलबà¥à¤§ नईखे। हो सकत बा उ के विकि पर से मिटा दिहल गईल होखे, आ चाहे उ के नाम बदल देवल गईल होखे।
-पà¥à¤°à¤¾à¤¸à¤‚गिक पनà¥à¤¨à¤¾ के [[Special:Search|विकि पर खोजे के]] कोशिश करत रहीं।',
-
-# Revision deletion
-'rev-deleted-comment' => '(टिपà¥à¤ªà¤£à¥€ मिटा दिहल गईल बा)',
-'rev-deleted-user' => '(पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ के नाम मिटा दिहल गईल बा)',
-'rev-deleted-event' => '(लॉग कारà¥à¤°à¤µà¤¾à¤ˆ मिटा दिहल गईल बा)',
-'rev-deleted-user-contribs' => '[पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम आ चाहे आइ पी पता हटा दिहल गईल बा - योगदान से समà¥à¤ªà¤¾à¤¦à¤¨ छà¥à¤ª गईल बा]',
-'rev-deleted-text-permission' => "ई पनà¥à¤¨à¤¾ के संशोधन '''मिटा'''' दिहल गईल बा।
-मेटावल जानकारी [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} डिलेशन लॉग] में मिली।",
-'rev-delundel' => 'दिखाईं/छà¥à¤ªà¤¾à¤ˆà¤‚',
-'revdel-restore' => 'दूशà¥à¤¯à¤¤à¤¾ बदलीं',
-'revdel-restore-deleted' => 'मिटल संसोधन',
-'revdel-restore-visible' => 'दृशà¥à¤¯à¤®à¤¾à¤¨ संसोधन',
-'pagehist' => 'पनà¥à¤¨à¤¾ के इतिहास',
-'deletedhist' => 'मिटावल इतिहास',
-'revdelete-content' => 'सामगà¥à¤°à¥€',
-'revdelete-summary' => 'सारांश संपादन',
-'revdelete-uname' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम',
-'revdelete-restricted' => 'पà¥à¤°à¤¬à¤‚धक पर पà¥à¤°à¤¤à¤¿à¤¬à¤‚ध लागू',
-'revdelete-unrestricted' => 'पà¥à¤°à¤¬à¤‚धक पर से पà¥à¤°à¤¤à¤¿à¤¬à¤‚ध समापà¥à¤¤',
-'revdelete-hid' => 'छà¥à¤ª $1',
-'revdelete-unhid' => 'ना छà¥à¤ª $1',
-
-# Merge log
-'revertmerge' => 'अलग करीं',
-'mergelogpagetext' => 'à¤à¤• पनà¥à¤¨à¤¾ इतिहास के दà¥à¤¸à¤° पनà¥à¤¨à¤¾ इतिहास में तà¥à¤°à¤‚त विलय भईल à¤à¤—ो सूची नीचे दिहल बा।',
-
-# Diffs
-'history-title' => "''$1'' के संशोधन इतिहास",
-'difference' => '(संशोधन के बीच अनà¥à¤¤à¤°)',
-'lineno' => 'पंकà¥à¤¤à¤¿ $1:',
-'compareselectedversions' => 'चà¥à¤¨à¤² गईल संशोधन में अनà¥à¤¤à¤° देखीं',
-'showhideselectedversions' => 'चà¥à¤¨à¤² गईल संशोधन दिखाईं/छà¥à¤ªà¤¾à¤ˆà¤‚',
-'editundo' => 'पूरà¥à¤µà¤µà¤¤',
-'diff-multi' => '({{PLURAL:$1|à¤à¤—ो मधà¥à¤¯à¤® संशोधन|$1 गो मधà¥à¤¯à¤® संशोधन}} नईखे दिखावल)',
-
-# Search results
-'searchresults' => 'खोज परिणाम',
-'searchresults-title' => '$1 खातिर खोज परिणाम',
-'searchresulttext' => '{{SITENAME}} के खोज करे के बारे में अधिक जानकारी खातिर, देखीं [[{{MediaWiki:Helppage}}| {{int:help}}]]।',
-'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' खातिर राउर करल गईल खोज ([[Special:Prefixindex/$1| "$1" से शà¥à¤°à¥ होवे वाला सब पनà¥à¤¨à¤¾]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])',
-'searchsubtitleinvalid' => "रउआ '''$1''' खातिर खोज कईनी ह",
-'titlematches' => 'पनà¥à¤¨à¤¾ के शिरà¥à¤·à¤• मिलत बा।',
-'notitlematches' => 'पनà¥à¤¨à¤¾ के शिरà¥à¤·à¤• नईखे मिलत',
-'textmatches' => 'पनà¥à¤¨à¤¾ के पाठà¥à¤¯ मिलत बा',
-'notextmatches' => 'पनà¥à¤¨à¤¾ के पाठà¥à¤¯ नईखे मिलत',
-'prevn' => 'पिछला {{PLURAL:$1|$1}}',
-'nextn' => 'अगला {{PLURAL:$1|$1}}',
-'prevn-title' => 'पिछला $1 {{PLURAL:$1|परिणाम}}',
-'nextn-title' => 'अगला $1 {{PLURAL:$1|परिणाम}}',
-'shown-title' => 'दिखाईं $1 {{PLURAL:$1|परिणाम}}',
-'viewprevnext' => 'देखीं ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-legend' => 'खोज विकलà¥à¤ª',
-'searchmenu-exists' => "'''इ विकि पर ''[[:$1]]'' नाम से à¤à¤—ो पनà¥à¤¨à¤¾ उपलबà¥à¤§ बा'''",
-'searchmenu-new' => "'''इ विकि पर ''[[:$1]]'' नाम से पनà¥à¤¨à¤¾ बनाईं'''",
-'searchhelp-url' => 'Help:सामगà¥à¤°à¥€',
-'searchmenu-prefix' => '[[विशेष:उपसरà¥à¤— सूची/$1|इ उपसरà¥à¤— साथे पनà¥à¤¨à¤¾ बà¥à¤°à¤¾à¤‰à¤œ करीं]]',
-'searchprofile-articles' => 'सामगà¥à¤°à¥€ पनà¥à¤¨à¤¾',
-'searchprofile-project' => 'मदद आ परियोजना पनà¥à¤¨à¤¾',
-'searchprofile-images' => 'मलà¥à¤Ÿà¤¿à¤®à¥€à¤¡à¤¿à¤¯à¤¾',
-'searchprofile-everything' => 'सब कà¥à¤›',
-'searchprofile-advanced' => 'अगà¥à¤°à¤¿à¤®',
-'searchprofile-articles-tooltip' => '$1 में खोजीं',
-'searchprofile-project-tooltip' => '$1 में खोजीं',
-'searchprofile-images-tooltip' => 'फाईल खातिर खोज',
-'searchprofile-everything-tooltip' => 'सभन सामगà¥à¤°à¥€ में खोजीं (वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾ सहित)',
-'search-result-size' => '$1 ({{PLURAL:$2|1 शबà¥à¤¦|$2 शबà¥à¤¦}})',
-'search-result-score' => 'पà¥à¤°à¤¾à¤¸à¤‚गिकता: $1%',
-'search-redirect' => '(पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤£ $1)',
-'search-section' => '(खंड $1)',
-'search-suggest' => 'का राउर मतलब बा: $1',
-'search-interwiki-caption' => 'बहिन परियोजना',
-'search-interwiki-default' => '$1 के परिणाम:',
-'search-interwiki-more' => '(अउर)',
-'search-mwsuggest-enabled' => 'सà¥à¤à¤¾à¤µ के साथ',
-'search-mwsuggest-disabled' => 'कौनो सà¥à¤à¤¾à¤µ ना',
-'search-relatedarticle' => 'संबंधित',
-'mwsuggest-disable' => 'AJAX सà¥à¤à¤¾à¤µ असकà¥à¤·à¤®',
-'searcheverything-enable' => 'सभन सनà¥à¤¦à¤°à¥à¤­ में खोजीं',
-'searchrelated' => 'संबंधित',
-'searchall' => 'सब',
-'showingresults' => "नीचे देखावल जा रहल बा {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम}} #'''$2''' से शà¥à¤°à¥ होवे वाला।",
-'showingresultsnum' => "नीचे देखावल जा रहल बा {{PLURAL:$3|'''1''' परिणाम|'''$3''' परिणाम}} #'''$2''' से शà¥à¤°à¥ होवे वाला।",
-'powersearch' => 'उनà¥à¤¨à¤¤ खोज',
-'powersearch-legend' => 'उनà¥à¤¨à¤¤ खोज',
-'powersearch-ns' => 'सनà¥à¤¦à¤°à¥à¤­ में खोजीं',
-'powersearch-redir' => 'पà¥à¤¨:निरà¥à¤¦à¥‡à¤¶ सूची',
-'powersearch-field' => 'खातिर खोज',
-'powersearch-togglelabel' => 'जाà¤à¤š:',
-'powersearch-toggleall' => 'सब',
-'powersearch-togglenone' => 'कउनो ना',
-'search-external' => 'बाहरी खोज',
-
-# Quickbar
-'qbsettings-none' => 'कउनो ना',
-
-# Preferences page
-'preferences' => 'वरीयता',
-'mypreferences' => 'हमार पसनà¥à¤¦',
-'prefs-edits' => 'समà¥à¤ªà¤¾à¤¦à¤¨ संखà¥à¤¯à¤¾',
-'prefsnologin' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶ नईखीं कईले',
-'changepassword' => 'गà¥à¤ªà¥à¤¤ शबà¥à¤¦ बदलीं',
-'skin-preview' => 'पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨',
-'prefs-math' => 'गणित',
-'prefs-rc' => 'तà¥à¤°à¤‚त भईल परिवरà¥à¤¤à¤¨',
-
-# Recent changes
-'recentchanges' => 'तà¥à¤°à¤‚त भईल परिवरà¥à¤¤à¤¨',
-'rcshowhideminor' => '$1 छोट समà¥à¤ªà¤¾à¤¦à¤¨',
-'diff' => 'अनà¥à¤¤à¤°',
-'hist' => 'इति',
-'hide' => 'छà¥à¤ªà¤¾à¤à¤ˆ',
-'show' => 'दिखाईं',
-'minoreditletter' => 'छो',
-'newpageletter' => 'न',
-'boteditletter' => 'बो',
-'number_of_watching_users_pageview' => '[$1 देखल जा रहल बा {{PLURAL:$1|पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾|पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾}}]',
-
-# Recent changes linked
-'recentchangeslinked' => 'समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ बदलाव',
-'recentchangeslinked-feed' => 'समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ बदलाव',
-'recentchangeslinked-toolbox' => 'समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ बदलाव',
-
-# Upload
-'upload' => 'फाईल लादीं',
-
-# File description page
-'filehist' => 'पनà¥à¤¨à¤¾ के इतिहास',
-'filehist-deleteall' => 'सब मिटाईं',
-'filehist-deleteone' => 'मिटाईं',
-'filehist-current' => 'मौजूदा',
-'filehist-datetime' => 'तारिख/समय',
-'filehist-thumb' => 'थमà¥à¤¬à¤¨à¥‡à¤²',
-'filehist-nothumb' => 'बिन थमà¥à¤¬à¤¨à¥‡à¤²',
-'filehist-user' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾',
-'filehist-dimensions' => 'आयाम',
-'filehist-filesize' => 'फाईल के आकार',
-'filehist-comment' => 'टिपà¥à¤ªà¤£à¥€',
-'filehist-missing' => 'गायब फाईल',
-'imagelinks' => 'फाईल लिंक',
-'nolinkstoimage' => 'इ फाईल जोड़े कौनो फाइल लिंक नईखे।',
-'morelinkstoimage' => 'इ फाइल संगे जà¥à¤¡à¤¼à¤² [[Special:WhatLinksHere/$1|सब लिंक]] देखीं।',
-'redirectstofile' => 'इ फाईल संगे निमà¥à¤¨ {{PLURAL:$1|फाइल पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤}} होत बा:',
-'sharedupload' => 'इ फाईल $1 से बा आ दà¥à¤¸à¤° परियोजना में पà¥à¤°à¤¯à¥‹à¤— करल जा सकत बा।',
-'sharedupload-desc-there' => 'इ फाईल $1 से बा आ दà¥à¤¸à¤° परियोजना में पà¥à¤°à¤¯à¥‹à¤— करल जा सकत बा। अधिक जानकारी खातिर कृपया [$2 फाईल विवरण पनà¥à¤¨à¤¾] देखीं।',
-'filepage-nofile' => 'इ नाम से कौनो फाईल उपलबà¥à¤§ नईखे।',
-'filepage-nofile-link' => 'इ नाम से कौनो फाईल उपलबà¥à¤§ नईखे, लेकिन रउआ [$1 के लाद] सकत बानी।',
-'uploadnewversion-linktext' => 'इ फाईल के नया संसà¥à¤•à¤°à¤£ लादीं।',
-'shared-repo-from' => '$1 से',
-'shared-repo' => 'à¤à¤—ो आवटिंत भंडार गृह',
-'shared-repo-name-wikimediacommons' => 'विकिमीडिया कॉमनà¥à¤¸',
-
-# File reversion
-'filerevert' => 'पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤ $1',
-'filerevert-legend' => 'पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤ फाईल',
-'filerevert-comment' => 'कारण:',
-
-# File deletion
-'filedelete' => '$1 के मिटाईं',
-'filedelete-legend' => 'फाईल के मिटाईं',
-'filedelete-comment' => 'कारण:',
-'filedelete-submit' => 'मिटाईं',
-'filedelete-success' => "'''$1''' के मिटा दिहल गईल बा।",
-'filedelete-nofile' => "'''$1''' उपलबà¥à¤§ नईखे।",
-
-# Random page
-'randompage' => 'अविशिषà¥à¤Ÿ पनà¥à¤¨à¤¾',
-
-# Miscellaneous special pages
-'nbytes' => '$1 {{PLURAL:$1|बाईट|बाईटà¥à¤¸}}',
-'move' => 'सà¥à¤¥à¤¾à¤¨à¥à¤¤à¤°à¤£',
-'movethispage' => 'ई पनà¥à¤¨à¤¾ के सà¥à¤¥à¤¾à¤‚तरण करीं',
-
-# Book sources
-'booksources' => 'किताबी सà¥à¤¤à¥à¤°à¥‹à¤¤',
-
-# Special:AllPages
-'allpagessubmit' => 'जाईं',
-'allpagesprefix' => 'उपसरà¥à¤— के साथे पनà¥à¤¨à¤¾ पà¥à¤°à¤¦à¤°à¥à¤¶à¤¨:',
-
-# E-mail user
-'emailuser' => 'ई पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ के ईमेल करीं',
-
-# Watchlist
-'watchlist' => 'हमार धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची',
-'mywatchlist' => 'हमार धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची',
-'watch' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में डालीं',
-'watchthispage' => 'ई पनà¥à¤¨à¤¾ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में डालीं',
-'unwatch' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची से हटाईं',
-
-# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में जाते हà¥à¤',
-'unwatching' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची से हटते हà¥à¤',
-
-'enotif_newpagetext' => 'इ à¤à¤—ो नया पनà¥à¤¨à¤¾ ह',
-'created' => 'बनावल गईल',
-
-# Delete
-'deletedarticle' => "मिटावल ''[[$1]]''",
-
-# Undelete
-'undeletelink' => 'देखीं/बहाल करीं',
-
-# Namespace form on various pages
-'namespace' => 'सनà¥à¤¦à¤°à¥à¤­',
-'invert' => 'चयनित पलटीं',
-'blanknamespace' => '(मà¥à¤–à¥à¤¯)',
-
-# Contributions
-'contributions' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ योगदान',
-'contributions-title' => ' $1 खातिर पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ योगदान',
-'mycontris' => 'हमार योगदान',
-'nocontribs' => 'ई मानदंड से मिलत जà¥à¤²à¤¤ कौनो बदलाव ना मिलल।',
-'uctop' => '(शीरà¥à¤·)',
-'month' => 'महिना से (आ उ से पहिले):',
-'year' => 'साल से (आ उ से पहिले):',
-
-'sp-contributions-newbies' => 'खाली नया खाता के योगदान देखीं।',
-'sp-contributions-newbies-sub' => 'नया खाता खातिर',
-'sp-contributions-newbies-title' => 'नया खाता खातिर पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ के योगदान।',
-'sp-contributions-blocklog' => 'निषà¥à¤•à¥à¤°à¥€à¤¯ खाता',
-'sp-contributions-deleted' => 'नषà¥à¤Ÿ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ के योगदान।',
-'sp-contributions-logs' => 'लौग',
-'sp-contributions-talk' => 'बात-चीत',
-'sp-contributions-userrights' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ अधिकार पà¥à¤°à¤¬à¤¨à¥à¤§à¤¨',
-'sp-contributions-blocked-notice' => 'ई पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ के ई समय निषà¥à¤•à¥à¤°à¥€à¤¯ करल गईल बा।
-नविनतम नषà¥à¤Ÿ लौग पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¥€ उदà¥à¤§à¤°à¤£ खातिर निचे दिहल बा:',
-
-# What links here
-'whatlinkshere' => 'अहिजा का जà¥à¤¡à¤¼à¥€',
-'whatlinkshere-title' => 'पनà¥à¤¨à¤¾ जौन "$1" से जà¥à¤¡à¤¼à¥‡à¤²à¤¾',
-'whatlinkshere-page' => 'पनà¥à¤¨à¤¾:',
-'linkshere' => "नीचे के सब पनà¥à¤¨à¤¾ '''[[:$1]]''' से जà¥à¤¡à¤¼à¥‡à¤²à¤¾:",
-'nolinkshere' => "'''[[:$1]]''' से कौनो पनà¥à¤¨à¤¾ नईखे जà¥à¤¡à¤¼à¤²à¥¤",
-'nolinkshere-ns' => "चà¥à¤¨à¤² गईल सनà¥à¤¦à¤°à¥à¤­ में '''[[:$1]]''' से कौनो पनà¥à¤¨à¤¾ ना जà¥à¤¡à¤¼à¥‡à¤²à¤¾à¥¤",
-'isredirect' => 'पà¥à¤¨: निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ पनà¥à¤¨à¤¾',
-'isimage' => 'तसà¥à¤µà¥€à¤° लिंक',
-'whatlinkshere-prev' => '{{PLURAL:$1|पिछला|पिछला $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|अगला|अगला $1}}',
-'whatlinkshere-links' => '↠लिंक',
-'whatlinkshere-hideredirs' => '$1 पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤',
-'whatlinkshere-hidelinks' => '$1 लिंक',
-'whatlinkshere-hideimages' => '$1 तसà¥à¤µà¥€à¤° लिंक',
-'whatlinkshere-filters' => 'फिलà¥à¤Ÿà¤°',
-
-# Block/unblock
-'blockip' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾',
-'blocklink' => 'निषà¥à¤•à¥à¤°à¤¿à¤¯',
-'unblocklink' => 'ताला खोलीं',
-'change-blocklink' => 'बà¥à¤²à¥‰à¤• बदलीं',
-'contribslink' => 'योगदान',
-'blocklogpage' => 'निषà¥à¤•à¥à¤°à¤¿à¤¯ खाता',
-
-# Move page
-'movepagebtn' => 'पनà¥à¤¨à¤¾ सà¥à¤¥à¤¾à¤‚तरण करीं',
-'revertmove' => 'पिछलका सà¥à¤¥à¤¿à¤¤à¤¿',
-
-# Thumbnails
-'thumbnail-more' => 'बढ़ाईं',
-'filemissing' => 'फाईल गायब',
-
-# Tooltip help for the actions
-'tooltip-pt-userpage' => 'राउर पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ पनà¥à¤¨à¤¾',
-'tooltip-pt-mytalk' => 'राउर वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾',
-'tooltip-pt-preferences' => 'राउर पसनà¥à¤¦',
-'tooltip-pt-mycontris' => 'राउर योगदान के सूची',
-'tooltip-pt-login' => 'रउआ के खाता पà¥à¤°à¤µà¥‡à¤¶ खातिर पà¥à¤°à¥‹à¤¤à¥à¤¸à¤¾à¤¹à¤¿à¤¤ करल जा रहल बा, बाà¤à¤•à¤¿ ई अनिवारà¥à¤¯ नईखे',
-'tooltip-pt-anonlogin' => 'रउआ के खाता पà¥à¤°à¤µà¥‡à¤¶ खातिर पà¥à¤°à¥‹à¤¤à¥à¤¸à¤¾à¤¹à¤¿à¤¤ करल जा रहल बा, बाà¤à¤•à¤¿ ई अनिवारà¥à¤¯ नईखे',
-'tooltip-pt-logout' => 'खाता से बाहर',
-'tooltip-ca-talk' => 'सामगà¥à¤°à¥€ पनà¥à¤¨à¤¾ के बारे में बात-चीत',
-'tooltip-ca-edit' => 'रउआ ई पनà¥à¤¨à¤¾ के समà¥à¤ªà¤¾à¤¦à¤¨ कर सकत बानी। कृपया पनà¥à¤¨à¤¾ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करे से पहिले पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨ बटन के इसà¥à¤¤à¥‡à¤®à¤¾à¤² करीं।',
-'tooltip-ca-addsection' => 'à¤à¤—ो नया खणà¥à¤¡ शà¥à¤°à¥ करीं',
-'tooltip-ca-viewsource' => 'इ पनà¥à¤¨à¤¾ के संरकà¥à¤·à¤¿à¤¤ कर दिहल गईल बा। रऊआ à¤à¤•à¤° मूल देख सकत बानी।',
-'tooltip-ca-history' => 'ई पनà¥à¤¨à¤¾ के पिछला संशोधन',
-'tooltip-ca-protect' => 'इ पनà¥à¤¨à¤¾ के संरकà¥à¤·à¤¿à¤¤ करीं।',
-'tooltip-ca-unprotect' => 'इ पनà¥à¤¨à¤¾ के संरकà¥à¤·à¤£ हटाईं।',
-'tooltip-ca-delete' => 'ई पनà¥à¤¨à¤¾ मिटाईं',
-'tooltip-ca-move' => 'ई पनà¥à¤¨à¤¾ के सà¥à¤¥à¤¾à¤‚तरण करीं',
-'tooltip-ca-watch' => 'इ पनà¥à¤¨à¤¾ के आपन धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में डालीं',
-'tooltip-search' => '{{SITENAME}} खोजीं',
-'tooltip-search-go' => 'यदि पनà¥à¤¨à¤¾ मौजूद होई त ईहे सटीक नाम के साथ उ पनà¥à¤¨à¤¾ पर जाईं',
-'tooltip-search-fulltext' => 'ई पाठà¥à¤¯ खातिर पनà¥à¤¨à¤¾ खोजीं',
-'tooltip-p-logo' => 'मà¥à¤–à¥à¤¯ पनà¥à¤¨à¤¾ पर जाईं',
-'tooltip-n-mainpage' => 'मà¥à¤–à¥à¤¯ पनà¥à¤¨à¤¾ पर जाईं',
-'tooltip-n-mainpage-description' => 'मà¥à¤–à¥à¤¯ पनà¥à¤¨à¤¾ पर पधारीं',
-'tooltip-n-portal' => 'परियोजना के बारे मेà¤, रउआ का कर सकत बानी, वसà¥à¤¤à¥ कहाठखोजब',
-'tooltip-n-currentevents' => 'वरà¥à¤¤à¤®à¤¾à¤¨ के घटना पर पृषà¥à¤ à¤­à¥‚मी जानकारी खोजीं',
-'tooltip-n-recentchanges' => 'विकि पर तà¥à¤°à¤‚त भईल परिवरà¥à¤¤à¤¨ के सूची',
-'tooltip-n-randompage' => 'बेतरतिब पनà¥à¤¨à¤¾ लादीं (Load करीं)',
-'tooltip-n-help' => 'जगह पता लगावे खातिर',
-'tooltip-t-whatlinkshere' => 'अहिजा लिंक होखे वाला सब विकि पनà¥à¤¨à¤¾ के सूची',
-'tooltip-t-recentchangeslinked' => 'ई पनà¥à¤¨à¤¾ से जà¥à¤¡à¤¼à¤² पनà¥à¤¨à¤µà¤¨ पर तà¥à¤°à¤‚त भईल परिवरà¥à¤¤à¤¨',
-'tooltip-t-upload' => 'फाईल लादीं (अपलोड )',
-'tooltip-t-specialpages' => 'ख़ाश पनà¥à¤¨à¤µà¤¨ के सूची',
-'tooltip-t-print' => 'ई पनà¥à¤¨à¤¾ के छापे लायक संसà¥à¤•à¤°à¤£à¥¤',
-'tooltip-t-permalink' => 'ई पनà¥à¤¨à¤¾ के संसोधन खातिर सà¥à¤¥à¤¾à¤¯à¥€ लिंक।',
-'tooltip-ca-nstab-main' => 'सामगà¥à¤°à¥€ पनà¥à¤¨à¤¾ देखीं',
-'tooltip-ca-nstab-special' => 'ई à¤à¤—ो ख़ाश पनà¥à¤¨à¤¾ ह, रउआ ई पनà¥à¤¨à¤¾ के समà¥à¤ªà¤¾à¤¦à¤¨ नईखीं कर सकत',
-'tooltip-save' => 'आपन बदलाव के सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं',
-
-# Media information
-'file-nohires' => '<small> उचà¥à¤š गà¥à¤£à¤µà¤¤à¥à¤¤à¤¾ उपलबà¥à¤§ नईखे। </small>',
-'svg-long-desc' => 'à¤à¤¸ वी जी फाईल, नॉमिनलà¥à¤²à¥€ $1 x $2 पिकà¥à¤¸à¤²à¥à¤¸, फाईल के आकार $3',
-'show-big-image' => 'पà¥à¤°à¤¾ गà¥à¤£à¤µà¤¤à¥à¤¤à¤¾',
-'show-big-image-thumb' => '<small> इ पà¥à¤°à¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨ के आकार: $1 x $2 पिकà¥à¤¸à¤²à¥à¤¸</small>',
-'file-info-gif-looped' => 'लूपà¥à¤¡',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|फà¥à¤°à¥‡à¤®}}',
-'file-info-png-looped' => 'लूपà¥à¤¡',
-
-# Bad image list
-'bad_image_list' => 'फोरà¥à¤®à¥‡à¤Ÿ निमà¥à¤¨ अनà¥à¤¸à¤¾à¤° बा:
-खाली सूची सामगà¥à¤°à¥€ (* से शà¥à¤°à¥ होवे वाला पंकà¥à¤¤à¤¿ ) मानल गईल बा।
-पंकà¥à¤¤à¤¿ पर पहिला लिंक à¤à¤—ो खराब फाईल के साथ जà¥à¤¡à¤¼à¤² होवे के चाहीं।
-कोई भी बाद वाला लिंक ओही पंकà¥à¤¤à¤¿ पर अईला पर उ के अपवाद मानल जाई, अरà¥à¤¥à¤¾à¤¤ जौन पनà¥à¤¨à¤¾ पर फाईल इनलाईन हो सकत बा।',
-
-# Metadata
-'metadata' => 'मेटाडाटा',
-'metadata-help' => 'इ फाईल में अतिरिकà¥à¤¤ जानकारी उपलबà¥à¤§ बा, हो सकत बा कि इ डिजीटल कैमरा या सà¥à¤•à¥ˆà¤¨à¤° से लेवल गईल होखे। यदि इ फाईल à¤à¤•à¤° मूल फाईल में से संशोधित करल गईल बा त कà¥à¤› जानकारी उजागर ना हो सकी।',
-'metadata-expand' => 'विसà¥à¤¤à¥ƒà¤¤ विवरण देखाईं',
-'metadata-collapse' => 'विसà¥à¤¤à¥ƒà¤¤ विवरण छà¥à¤ªà¤¾à¤à¤ˆà¤‚',
-
-# EXIF tags
-'exif-imagewidth' => 'चौड़ाई',
-'exif-imagelength' => 'ऊà¤à¤šà¤¾à¤ˆ',
-'exif-bitspersample' => 'अवयव पà¥à¤°à¤¤à¤¿ बीट',
-'exif-compression' => 'समà¥à¤ªà¥€à¤¡à¤¼à¤¨ पà¥à¤°à¤£à¤¾à¤²à¥€',
-'exif-photometricinterpretation' => 'पिकà¥à¤¸à¤² रचना',
-'exif-orientation' => 'अभिसंसà¥à¤•à¤°à¤£',
-'exif-samplesperpixel' => 'अवयवन के संखà¥à¤¯à¤¾',
-'exif-planarconfiguration' => 'डेटा पà¥à¤°à¤¬à¤¨à¥à¤§à¤¨',
-'exif-xresolution' => 'कà¥à¤·à¥ˆà¤¤à¤¿à¤œ समाधान',
-'exif-yresolution' => 'लमà¥à¤¬à¤µà¤¤ समाधान',
-'exif-stripoffsets' => 'चितà¥à¤° डेटा के सà¥à¤¥à¤¿à¤¤à¥€',
-'exif-jpeginterchangeformatlength' => 'JPEG डेटा के बाइट',
-
-# 'all' in various places, this might be different for inflected languages
-'namespacesall' => 'सब',
-'monthsall' => 'सब',
-'limitall' => 'सब',
-
-# E-mail address confirmation
-'confirmemail' => 'इ-मेल पता कनà¥à¤«à¤°à¥à¤® करीं',
-
-# Special:SpecialPages
-'specialpages' => 'ख़ाश पनà¥à¤¨à¤¾',
-
-);
+$fallback = 'bho';
diff --git a/languages/messages/MessagesBho.php b/languages/messages/MessagesBho.php
new file mode 100644
index 00000000..79748a68
--- /dev/null
+++ b/languages/messages/MessagesBho.php
@@ -0,0 +1,739 @@
+<?php
+/** Bhojpuri (भोजपà¥à¤°à¥€)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Ganesh
+ * @author Rajivkurjee
+ */
+
+$namespaceNames = array(
+ NS_MEDIA => 'मीडिया',
+ NS_SPECIAL => 'विशेष',
+ NS_TALK => 'वारà¥à¤¤à¤¾à¤²à¤¾à¤ª',
+ NS_USER => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾',
+ NS_USER_TALK => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾_वारà¥à¤¤à¤¾',
+ NS_PROJECT_TALK => '$1_वारà¥à¤¤à¤¾',
+ NS_FILE => 'चितà¥à¤°',
+ NS_FILE_TALK => 'चितà¥à¤°_वारà¥à¤¤à¤¾',
+ NS_MEDIAWIKI => 'मीडियाविकि',
+ NS_MEDIAWIKI_TALK => 'मीडियाविकि_वारà¥à¤¤à¤¾',
+ NS_TEMPLATE => 'टेमà¥à¤ªà¤²à¥‡à¤Ÿ',
+ NS_TEMPLATE_TALK => 'टेमà¥à¤ªà¤²à¥‡à¤Ÿ_वारà¥à¤¤à¤¾',
+ NS_HELP => 'मदद',
+ NS_HELP_TALK => 'मदद_वारà¥à¤¤à¤¾',
+ NS_CATEGORY => 'शà¥à¤°à¥‡à¤£à¥€',
+ NS_CATEGORY_TALK => 'शà¥à¤°à¥‡à¤£à¥€_वारà¥à¤¤à¤¾',
+);
+
+$digitTransformTable = array(
+ '0' => '०', # &#x0966;
+ '1' => '१', # &#x0967;
+ '2' => '२', # &#x0968;
+ '3' => '३', # &#x0969;
+ '4' => '४', # &#x096a;
+ '5' => '५', # &#x096b;
+ '6' => '६', # &#x096c;
+ '7' => '७', # &#x096d;
+ '8' => '८', # &#x096e;
+ '9' => '९', # &#x096f;
+);
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'लिंक के नीचे रेखा',
+'tog-highlightbroken' => 'टूटल लिंक के पà¥à¤°à¤¾à¤°à¥à¤ª ठिक करीं <a href="" class="new"> अईसे </a> (वैकलà¥à¤ªà¤¿à¤•: चाहे अईसे<a href="" class="internal">?</a>)',
+'tog-justify' => 'पैरागà¥à¤°à¤¾à¤« जसà¥à¤Ÿà¥€à¤«à¤¾à¤ˆ',
+'tog-hideminor' => 'हाल के परिवरà¥à¤¤à¤¨ में मामूली संपादन छà¥à¤ªà¤¾à¤ˆà¤‚',
+'tog-numberheadings' => 'सà¥à¤µà¤¯à¤‚-सांखà¥à¤¯à¤¿à¤•à¥€ शिरà¥à¤·à¤•',
+'tog-rememberpassword' => 'इ बà¥à¤°à¤¾à¤‰à¤œà¤° पर हमार पà¥à¤°à¤µà¥‡à¤¶ जारी रहे (अधिकतम $1 {{PLURAL:$1|दिन|दिन}})',
+'tog-previewontop' => 'समà¥à¤ªà¤¾à¤¦à¤¨ बकà¥à¤¸à¤¾ से पहिले पà¥à¤°à¥à¤µà¤¦à¤°à¥à¤¶à¤¨ दिखाईं।',
+'tog-previewonfirst' => 'पहिलका समà¥à¤ªà¤¾à¤¦à¤¨ पर पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨ देखीं',
+
+'underline-always' => 'हमेशा',
+'underline-never' => 'कभी ना',
+'underline-default' => 'डिफॉलà¥à¤Ÿ बà¥à¤°à¤¾à¤‰à¤œà¤°',
+
+# Dates
+'sunday' => 'इतवार',
+'monday' => 'सोमवार',
+'tuesday' => 'मंगलवार',
+'wednesday' => 'बà¥à¤§à¤µà¤¾à¤°',
+'thursday' => 'गà¥à¤°à¥à¤µà¤¾à¤°',
+'friday' => 'शà¥à¤•à¥à¤°à¤µà¤¾à¤°',
+'saturday' => 'शनिवार',
+'sun' => 'इत',
+'mon' => 'सोम',
+'tue' => 'मंगल',
+'wed' => 'बà¥à¤§',
+'thu' => 'गà¥à¤°à¥',
+'fri' => 'शà¥à¤•à¥à¤°',
+'sat' => 'शनि',
+'january' => 'जनवरी',
+'february' => 'फरवरी',
+'march' => 'मारà¥à¤š',
+'april' => 'अपà¥à¤°à¤¿à¤²',
+'may_long' => 'मई',
+'june' => 'जून',
+'july' => 'जà¥à¤²à¤¾à¤ˆ',
+'august' => 'अगसà¥à¤¤',
+'september' => 'सितमà¥à¤¬à¤°',
+'october' => 'अकà¥à¤Ÿà¥‚बर',
+'november' => 'नवमà¥à¤¬à¤°',
+'december' => 'दिसमà¥à¤¬à¤°',
+'january-gen' => 'जनवरी',
+'february-gen' => 'फरवरी',
+'march-gen' => 'मारà¥à¤š',
+'april-gen' => 'अपà¥à¤°à¤¿à¤²',
+'may-gen' => 'मई',
+'june-gen' => 'जून',
+'july-gen' => 'जà¥à¤²à¤¾à¤ˆ',
+'august-gen' => 'अगसà¥à¤¤',
+'september-gen' => 'सितमà¥à¤¬à¤°',
+'october-gen' => 'अकà¥à¤Ÿà¥‚बर',
+'november-gen' => 'नवमà¥à¤¬à¤°',
+'december-gen' => 'दिसमà¥à¤¬à¤°',
+'jan' => 'जन',
+'feb' => 'फर',
+'mar' => 'मारà¥à¤š',
+'apr' => 'अपà¥à¤°à¤¿à¤²',
+'may' => 'मई',
+'jun' => 'जून',
+'jul' => 'जà¥à¤²',
+'aug' => 'अग',
+'sep' => 'सित',
+'oct' => 'अकà¥à¤Ÿà¥‚',
+'nov' => 'नव',
+'dec' => 'दिस',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|शà¥à¤°à¥‡à¤£à¥€|शà¥à¤°à¥‡à¤£à¥€}}',
+
+'about' => 'बारे में',
+'article' => 'सामगà¥à¤°à¥€ पनà¥à¤¨à¤¾',
+'newwindow' => '(नया विंडो में खोलीं)',
+'cancel' => 'निरसà¥à¤¤',
+'mytalk' => 'हमार बात',
+'navigation' => 'परिभà¥à¤°à¤®à¤£',
+
+# Cologne Blue skin
+'qbfind' => 'खोज',
+'qbbrowse' => 'बà¥à¤°à¤¾à¤‰à¤œ',
+'qbedit' => 'समà¥à¤ªà¤¾à¤¦à¤¨',
+'qbpageoptions' => 'ई पनà¥à¤¨à¤¾',
+'qbpageinfo' => 'पà¥à¤°à¤¸à¤‚ग',
+'qbmyoptions' => 'हमार पनà¥à¤¨à¤¾',
+'qbspecialpages' => 'विशेष पनà¥à¤¨à¤¾',
+'faq' => 'साधारण सवाल',
+'faqpage' => 'Project:साधारण सवाल',
+
+# Vector skin
+'vector-action-delete' => 'मिटाईं',
+'vector-action-move' => 'सà¥à¤¥à¤¾à¤‚तरण',
+'vector-action-protect' => 'संरकà¥à¤·à¤¿à¤¤ करीं',
+'vector-action-undelete' => 'मत मिटाईं',
+'vector-action-unprotect' => 'असà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं',
+'vector-view-create' => 'बनाईं',
+'vector-view-edit' => 'समà¥à¤ªà¤¾à¤¦à¤¨',
+'vector-view-history' => 'इतिहास देखीं',
+'vector-view-view' => 'पढ़ीं',
+'vector-view-viewsource' => 'सà¥à¤¤à¥à¤°à¥‹à¤¤ देखीं',
+
+'errorpagetitle' => 'तà¥à¤°à¥à¤Ÿà¥€',
+'returnto' => 'जाईं $1 पर।',
+'tagline' => 'भोजपà¥à¤°à¥€ {{SITENAME}} से',
+'help' => 'मदद',
+'search' => 'खोज',
+'searchbutton' => 'खोजीं',
+'go' => 'जाईं',
+'searcharticle' => 'जाईं',
+'history' => 'पनà¥à¤¨à¤¾ के इतिहास',
+'history_short' => 'इतिहास',
+'updatedmarker' => 'हमार अनà¥à¤¤à¤¿à¤® आगमन से बदलाव',
+'printableversion' => 'छापे लायक संसà¥à¤•à¤°à¤£',
+'permalink' => 'सà¥à¤¥à¤¾à¤¯à¥€ लिंक',
+'print' => 'छापीं',
+'edit' => 'समà¥à¤ªà¤¾à¤¦à¤¨',
+'create' => 'बनाईं',
+'editthispage' => 'ई पनà¥à¤¨à¤¾ के समà¥à¤ªà¤¾à¤¦à¤¨ करीं',
+'create-this-page' => 'ई पनà¥à¤¨à¤¾ के निरà¥à¤®à¤¾à¤£ करीं',
+'delete' => 'मिटाईं',
+'deletethispage' => 'ई पनà¥à¤¨à¤¾ के मिटाईं',
+'protect' => 'संरकà¥à¤·à¤£ करीं',
+'protect_change' => 'बदलीं',
+'protectthispage' => 'इ पनà¥à¤¨à¤¾ के सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं।',
+'unprotect' => 'असà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं',
+'unprotectthispage' => 'इ पनà¥à¤¨à¤¾ के असà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं',
+'newpage' => 'नया पनà¥à¤¨à¤¾',
+'talkpage' => 'इ पनà¥à¤¨à¤¾ पर चरà¥à¤šà¤¾ करीं',
+'talkpagelinktext' => 'बात-चीत',
+'specialpage' => 'ख़ाश पनà¥à¤¨à¤¾',
+'personaltools' => 'बà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त औजार',
+'postcomment' => 'नया खणà¥à¤¡',
+'articlepage' => 'सामगà¥à¤°à¥€ पनà¥à¤¨à¤¾ देखीं',
+'talk' => 'बात-चीत',
+'views' => 'विचारसूची',
+'toolbox' => 'औजार-पेटी',
+'userpage' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ पनà¥à¤¨à¤¾ देखीं',
+'projectpage' => 'परियोजना पनà¥à¤¨à¤¾ देखीं',
+'imagepage' => 'फाईल पनà¥à¤¨à¤¾ देखीà¤',
+'mediawikipage' => 'सनà¥à¤¦à¥‡à¤¶ पनà¥à¤¨à¤¾ देखीं',
+'templatepage' => 'टेमà¥à¤ªà¤²à¥‡à¤Ÿ पनà¥à¤¨à¤¾ देखीं',
+'viewhelppage' => 'मदद पनà¥à¤¨à¤¾ देखीं',
+'categorypage' => 'शà¥à¤°à¥‡à¤£à¥€ पनà¥à¤¨à¤¾ देखीं',
+'viewtalkpage' => 'बात-चीत देखीं',
+'otherlanguages' => 'अनà¥à¤¯ भाषा में',
+'redirectedfrom' => '($1 दà¥à¤µà¤¾à¤°à¤¾ पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤)',
+'redirectpagesub' => 'पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤ पनà¥à¤¨à¤¾',
+'lastmodifiedat' => '$1 के $2 पर ई पनà¥à¤¨à¤¾ पर अनà¥à¤¤à¤¿à¤® बार परिवरà¥à¤¤à¤¨ भईल।',
+'protectedpage' => 'सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ पनà¥à¤¨à¤¾',
+'jumpto' => 'अहिजा जाईं:',
+'jumptonavigation' => 'परिभà¥à¤°à¤®à¤£',
+'jumptosearch' => 'खोजीं',
+'view-pool-error' => 'कà¥à¤·à¤®à¤¾ करीं, ई समय सरà¥à¤µà¤° पर बहà¥à¤¤ जà¥à¤¯à¤¾à¤¦à¤¾ लोड बढ़ गईल बा।
+ई पनà¥à¤¨à¤¾ के बहà¥à¤¤à¥‡ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ लोग देखे के कोशिश कर रहल बानी।
+ई पनà¥à¤¨à¤¾ के फिर से देखे से पहिले कृपया कà¥à¤› देर तक इनà¥à¤¤à¤œà¤¾à¤° करीं।
+
+$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:बारे में',
+'copyright' => 'सामगà¥à¤°à¥€ $1 के तहत उपलबà¥à¤§ बा।',
+'copyrightpage' => '{{ns:project}}:लेखाधिकार',
+'currentevents' => 'हाल के घटना',
+'currentevents-url' => 'Project:हाल के घटना',
+'disclaimers' => 'असà¥à¤µà¤¿à¤•à¤°à¤£',
+'disclaimerpage' => 'Project:सामानà¥à¤¯ असà¥à¤µà¤¿à¤•à¤°à¤£',
+'edithelp' => 'मदद समà¥à¤ªà¤¾à¤¦à¤¨',
+'edithelppage' => 'Help:समà¥à¤ªà¤¾à¤¦à¤¨',
+'mainpage' => 'मà¥à¤–à¥à¤¯ पनà¥à¤¨à¤¾',
+'mainpage-description' => 'पहिलका पनà¥à¤¨à¤¾',
+'portal' => 'सामà¥à¤¦à¤¾à¤¯à¤¿à¤• पनà¥à¤¨à¤¾',
+'portal-url' => 'Project:सामà¥à¤¦à¤¾à¤¯à¤¿à¤• पोरà¥à¤Ÿà¤²',
+'privacy' => 'गोपनीयता नीति',
+'privacypage' => 'Project:गोपनीयता नीति',
+
+'badaccess' => 'अनà¥à¤®à¤¤à¤¿ तà¥à¤°à¥à¤Ÿà¥€',
+'badaccess-group0' => 'रउआ जवन कारà¥à¤°à¤µà¤¾à¤ˆ खातिर अनà¥à¤°à¥‹à¤§ कईले बानी उ के निषà¥à¤ªà¤¾à¤¦à¤¨ करे के अनà¥à¤®à¤¤à¤¿ नईखे।',
+
+'ok' => 'ठिक',
+'retrievedfrom' => '"$1" से लियल गईल',
+'youhavenewmessages' => 'रउआ लगे बा $1 ($2).',
+'newmessageslink' => 'नया सनà¥à¤¦à¥‡à¤¶',
+'newmessagesdifflink' => 'अनà¥à¤¤à¤¿à¤® परिवरà¥à¤¤à¤¨',
+'youhavenewmessagesmulti' => 'रउआ लगे $1 पर नया सनà¥à¤¦à¥‡à¤¶ बा',
+'editsection' => 'समà¥à¤ªà¤¾à¤¦à¤¨',
+'editold' => 'समà¥à¤ªà¤¾à¤¦à¤¨',
+'viewsourceold' => 'सà¥à¤¤à¥à¤°à¥‹à¤¤ देखीं',
+'editlink' => 'समà¥à¤ªà¤¾à¤¦à¤¨',
+'viewsourcelink' => 'सà¥à¤¤à¥à¤°à¥‹à¤¤ देखीं',
+'editsectionhint' => 'समà¥à¤ªà¤¾à¤¦à¤¨ खणà¥à¤¡: $1',
+'toc' => 'सामगà¥à¤°à¥€',
+'showtoc' => 'देखाईं',
+'hidetoc' => 'छà¥à¤ªà¤¾à¤ˆà¤‚',
+'thisisdeleted' => 'देखीं या भंडार करीं $1?',
+'viewdeleted' => '$1 देखब?',
+'site-rss-feed' => '$1 आर à¤à¤¸ à¤à¤¸ फिड',
+'site-atom-feed' => '$1 à¤à¤Ÿà¤® फिड',
+'page-rss-feed' => '"$1" आर à¤à¤¸ à¤à¤¸ फिड',
+'page-atom-feed' => '"$1" à¤à¤Ÿà¤® फिड',
+'red-link-title' => '$1 (पनà¥à¤¨à¤¾ मौजूद नईखे)।',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'पनà¥à¤¨à¤¾',
+'nstab-user' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ पनà¥à¤¨à¤¾',
+'nstab-media' => 'मिडीया पनà¥à¤¨à¤¾',
+'nstab-special' => 'विशेष पनà¥à¤¨à¤¾',
+'nstab-project' => 'परियोजना पनà¥à¤¨à¤¾',
+'nstab-image' => 'फाईल',
+'nstab-mediawiki' => 'सनà¥à¤¦à¥‡à¤¶',
+'nstab-template' => 'टेमà¥à¤ªà¤²à¥‡à¤Ÿ',
+'nstab-help' => 'मदद पनà¥à¤¨à¤¾',
+'nstab-category' => 'शà¥à¤°à¥‡à¤£à¥€',
+
+# Main script and global functions
+'nosuchaction' => 'अईसन कौनो कारà¥à¤°à¤µà¤¾à¤ˆ नाहि',
+'nosuchspecialpage' => 'अईसन कौनो ख़ाश पनà¥à¤¨à¤¾ नाहि',
+'nospecialpagetext' => '<strong>रउआ à¤à¤—ो अवैदà¥à¤¯ विशेष पनà¥à¤¨à¤¾ के अनà¥à¤°à¥‹à¤§ कईले बानी।</strong>
+
+वैदà¥à¤¯ विशेष पनà¥à¤¨à¤¾ के सूची मिल सकत बा [[Special:SpecialPages|{{int:specialpages}}]] पर।',
+
+# General errors
+'error' => 'तà¥à¤°à¥à¤Ÿà¥€',
+'databaseerror' => 'डेटाबेस तà¥à¤°à¥à¤Ÿà¥€',
+'readonly' => 'डेटाबेस लॉक बा',
+'missing-article' => 'डेटाबास ऊ पनà¥à¤¨à¤¾ के पाठà¥à¤¯ के ना खोज पाईल जौन ई के खोजे के रहल, नामित "$1" $2.
+ई सब साधारणत: निमà¥à¤¨à¤²à¤¿à¤–ीत अपà¥à¤°à¤šà¤²à¤¿à¤¤ अनà¥à¤¤à¤° अथवा à¤à¤—ो पनà¥à¤¨à¤¾ पर इतिहास के लिंक जौन मिटा दिहल गईल बा के कारण भईल।
+
+यदि ई बात नईखे, त हो सकत बा सॉफà¥à¤Ÿà¤µà¥‡à¤¯à¤° में बग पावत होखब।
+कृपया ई à¤à¤—ो [[Special:ListUsers/sysop|पà¥à¤°à¤¬à¤¨à¥à¤§à¤•]] के यू आर à¤à¤² के बारे में à¤à¤—ो नोट बनाके खबर करीं।',
+'viewsource' => 'सà¥à¤¤à¥à¤°à¥‹à¤¤ देखीं',
+
+# Login and logout pages
+'yourname' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम',
+'yourpassword' => 'गà¥à¤ªà¥à¤¤ शबà¥à¤¦',
+'yourpasswordagain' => 'गà¥à¤ªà¥à¤¤-शबà¥à¤¦ पà¥à¤¨:डालीं:',
+'login' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶',
+'nav-login-createaccount' => 'खाता पà¥à¤°à¤µà¥‡à¤¶ / खाता बनाईं',
+'loginprompt' => '{{SITENAME}} में पà¥à¤°à¤µà¥‡à¤¶ खातिर राउर कà¥à¤•à¤¿à¤œ चालू होवे के चाहीं',
+'userlogin' => 'खाता पà¥à¤°à¤µà¥‡à¤¶ / खाता बनाईं',
+'userloginnocreate' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶',
+'logout' => 'खाता से बाहर',
+'userlogout' => 'खाता से बाहर',
+'notloggedin' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶ नईखीं भईल',
+'nologin' => 'का à¤à¤—ो खाता नईखे? $1.',
+'nologinlink' => 'à¤à¤—ो खाता बनाईं',
+'createaccount' => 'खाता बनाईं',
+'gotaccount' => 'का पहिले से à¤à¤—ो खाता बा? $1.',
+'gotaccountlink' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶',
+'createaccountmail' => 'ई-मेल दà¥à¤µà¤¾à¤°à¤¾',
+'badretype' => 'रउआ जौन गà¥à¤ªà¥à¤¤ शबà¥à¤¦ डालत बानी उ नईखे मेल खात।',
+'userexists' => 'ई पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम पहिले से इसà¥à¤¤à¥‡à¤®à¤¾à¤² में बा। कृपया कौनो दोसर नाम चà¥à¤¨à¥€à¤‚।',
+'loginerror' => 'खाता पà¥à¤°à¤µà¥‡à¤¶ में तà¥à¤°à¥à¤Ÿà¤¿',
+'createaccounterror' => 'ई खाता ना बन पाईल: $1',
+'nocookiesnew' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ खाता त बन गईल, बाà¤à¤•à¥€ रउआ पà¥à¤°à¤µà¥‡à¤¶ नईखीं भईल।
+{{SITENAME}} पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ लोग के खाता में पà¥à¤°à¤µà¥‡à¤¶ करावे खातिर कà¥à¤•à¤¿à¤œ के पà¥à¤°à¤¯à¥‹à¤— करेला।
+राउर कà¥à¤•à¤¿à¤œ असकà¥à¤·à¤® बा।
+कृपया उ के सकà¥à¤·à¤® करीं, उ के बाद राउर नया पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम आ गà¥à¤ªà¥à¤¤ शबà¥à¤¦ के साथ पà¥à¤°à¤µà¥‡à¤¶ करीं।',
+'nocookieslogin' => '{{SITENAME}} पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ लोग के खाता में पà¥à¤°à¤µà¥‡à¤¶ करावे खातिर कà¥à¤•à¤¿à¤œ के पà¥à¤°à¤¯à¥‹à¤— करेला।
+राउर कà¥à¤•à¤¿à¤œ असकà¥à¤·à¤® बा।
+कृपया उ के सकà¥à¤·à¤® करीं आ फिर से कोशिश करीं',
+'noname' => 'रउआ उपयà¥à¤•à¥à¤¤ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम नईखीं निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ कईले।',
+'loginsuccesstitle' => 'खाता पà¥à¤°à¤µà¥‡à¤¶ में सफल',
+'loginsuccess' => "''' \"\$1\" के रà¥à¤ª में रउआ {{SITENAME}} में अब पà¥à¤°à¤µà¥‡à¤¶ कर चà¥à¤•à¤² बानी।'''",
+'nosuchuser' => '"$1" नाम से कौनो पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नईखन।
+पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम संवेदनशील मामला बा।
+शबà¥à¤¦-वरà¥à¤¤à¤¨à¥€ के जाà¤à¤š करीं, आ चाहे [[Special:UserLogin/signup|à¤à¤—ो नया खाता बनाईं]]।',
+'nosuchusershort' => 'ई नाम से कौनो पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नईखन "$1".
+आपन शबà¥à¤¦-वरà¥à¤¤à¤¨à¥€ के जाà¤à¤š करीं।',
+'nouserspecified' => 'रउआ à¤à¤—ो पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ करे के बा।',
+'login-userblocked' => 'ई पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ के खाता निषà¥à¤•à¥à¤°à¤¿à¤¯ हो चà¥à¤•à¤² बा। पà¥à¤°à¤µà¥‡à¤¶ के आजà¥à¤žà¤¾ नईखे।',
+'wrongpassword' => 'गलत गà¥à¤ªà¥à¤¤-शबà¥à¤¦ डलले बानी।
+कृपया फिर से कोशिश करीं।',
+'wrongpasswordempty' => 'गà¥à¤ªà¥à¤¤-शबà¥à¤¦ खाली बा। कृपया फिर से कोशिश करीं।',
+'passwordtooshort' => 'गà¥à¤ªà¥à¤¤-शबà¥à¤¦ कम से कम {{PLURAL:$1|1 अकà¥à¤·à¤°|$1 अकà¥à¤·à¤°}} के होवे के चाहीं।',
+'password-name-match' => 'राउर गà¥à¤ªà¥à¤¤-शबà¥à¤¦ राउर पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम से अलग होवे के चाहीं।',
+'mailmypassword' => 'नया गà¥à¤ªà¥à¤¤-शबà¥à¤¦ ई-मेल पर भेजीं',
+'passwordremindertitle' => '{{SITENAME}} खातिर नया असà¥à¤¥à¤¾à¤¯à¥€ गà¥à¤ªà¥à¤¤-शबà¥à¤¦',
+
+# Change password dialog
+'resetpass' => 'गà¥à¤ªà¥à¤¤-शबà¥à¤¦ बदलीं',
+'oldpassword' => 'पà¥à¤°à¤¾à¤¨à¤¾ गà¥à¤ªà¥à¤¤-शबà¥à¤¦:',
+'newpassword' => 'नया गà¥à¤ªà¥à¤¤-शबà¥à¤¦:',
+'retypenew' => 'नया गà¥à¤ªà¥à¤¤-शबà¥à¤¦ पà¥à¤¨: डालीं:',
+
+# Edit page toolbar
+'bold_tip' => 'मोट पाठà¥à¤¯',
+'italic_sample' => 'इटालिक पाठà¥à¤¯',
+'italic_tip' => 'इटालिक पाठà¥à¤¯',
+'headline_sample' => 'शिरà¥à¤·à¤• पाठà¥à¤¯',
+'image_sample' => 'उदाहरण.jpg',
+'media_sample' => 'उदाहरण.ogg',
+'media_tip' => 'फाईल लिंक',
+'sig_tip' => 'timestamp के साथ राउर हसà¥à¤¤à¤¾à¤•à¥à¤·à¤°',
+
+# Edit pages
+'summary' => 'सारांश:',
+'subject' => 'विषय/शिरà¥à¤·à¤•:',
+'minoredit' => 'छोट परिवरà¥à¤¤à¤¨',
+'watchthis' => 'ई पनà¥à¤¨à¤¾ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में डालीं',
+'savearticle' => 'पनà¥à¤¨à¤¾ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं',
+'preview' => 'पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨',
+'showpreview' => 'पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨ देखाईं',
+'showlivepreview' => 'सीधा पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨',
+'showdiff' => 'परिवरà¥à¤¤à¤¨ देखाईं',
+'anoneditwarning' => "'''चेतावनी:''' रउआ आपन खाता में पà¥à¤°à¤µà¥‡à¤¶ नईखीं कईले। ई पनà¥à¤¨à¤¾ के समà¥à¤ªà¤¾à¤¦à¤¨ इतिहास पर राउर आई पी पता दरà¥à¤œ कईल जाई।",
+'anonpreviewwarning' => "''रउआ खाता में पà¥à¤°à¤µà¥‡à¤¶ नईखीं भईल। सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करेब त ई पनà¥à¤¨à¤¾ के समà¥à¤ªà¤¾à¤¦à¤¨ इतिहास पर राउर आई पी पता दरà¥à¤œ हो जाई।\"",
+'missingsummary' => "'''सà¥à¤®à¤°à¤£à¤ªà¤¤à¥à¤°:'''रउआ à¤à¤—ो सारांश के समà¥à¤ªà¤¾à¤¦à¤¨ नईखीं पà¥à¤°à¤¦à¤¾à¤¨ कईले। अगर रउआ \"फिर से सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं\" पर कà¥à¤²à¤¿à¤• करेब, त राउर समà¥à¤ªà¤¾à¤¦à¤¨ बिना à¤à¤—ो सारांश के सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ हो जाई।",
+'missingcommenttext' => 'कृपया निचे à¤à¤—ो टिपà¥à¤ªà¤£à¥€ करीं।',
+'missingcommentheader' => "'''सà¥à¤®à¤°à¤£à¤ªà¤¤à¥à¤°:''' रउआ ई टिपà¥à¤ªà¤£à¥€ खातिर कौनो विषय/शिरà¥à¤·à¤• पà¥à¤°à¤¦à¤¾à¤¨ नईखीं कईले। \"{{int:savearticle}}\" यदि रउआ फिर से सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करब त राउर समà¥à¤ªà¤¾à¤¦à¤¨ बिना कौनो शिरà¥à¤·à¤• के सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ हो जाई।",
+'summary-preview' => 'सारांश पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨:',
+'subject-preview' => 'विषय/शिरà¥à¤·à¤• पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨:',
+'blockedtitle' => 'निषà¥à¤•à¥à¤°à¤¿à¤¯ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾',
+'blockednoreason' => 'कउनो कारण उलà¥à¤²à¥‡à¤–ित नईखे',
+'whitelistedittitle' => 'समà¥à¤ªà¤¾à¤¦à¤¨ खातिर खाता में पà¥à¤°à¤µà¥‡à¤¶ जरà¥à¤°à¥€ बा',
+'nosuchsectiontitle' => 'खणà¥à¤¡ ना मिल सकल।',
+'loginreqtitle' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶ जरà¥à¤°à¥€ बा',
+'loginreqlink' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶',
+'accmailtitle' => 'गà¥à¤ªà¥à¤¤-शबà¥à¤¦ भेजा गईल',
+'newarticle' => '(नया)',
+'newarticletext' => "रउआ à¤à¤—ो अइसन लिंक के पनà¥à¤¨à¤¾ के अनà¥à¤¸à¤°à¤£ कइले बानी जउन अभी तक उपलबà¥à¤§ नइखे।
+पनà¥à¤¨à¤¾ बनावे खातिर, नीचे के बाकस में टाईप करे के शà¥à¤°à¥ करीं (जà¥à¤¯à¤¾à¤¦à¤¾ जानकारी खातिर देखीं [[{{MediaWiki:Helppage}}|मदद पनà¥à¤¨à¤¾]])।
+यदि रउआ अहिजा गलती से आ गईल बानी त, आपन बà¥à¤°à¤¾à¤‰à¤œà¤° के '''back''' (बैक) बटन दबाईं",
+'yourdiff' => 'अंतर',
+'template-protected' => '(संरकà¥à¤·à¤¿à¤¤)',
+
+# History pages
+'revisionasof' => '$1 के रà¥à¤ª में संशोधन',
+'revision-info' => '$2 में से $1 के रà¥à¤ª में संशोधन',
+'previousrevision' => '↠पà¥à¤°à¤¾à¤¨ संशोधन',
+'nextrevision' => 'नया संशोधन →',
+'currentrevisionlink' => 'हाल के संशोधन',
+'cur' => 'हाल',
+'next' => 'अगिला',
+'last' => 'पछिला',
+'page_first' => 'पहिलका',
+'page_last' => 'आखिरी',
+'histlegend' => "चà¥à¤¨à¤¾à¤µ अनà¥à¤¤à¤°: तà¥à¤²à¤¨à¤¾ करे खातिर संशोधन के रेडियो बटन पर निशान लगाईं आ enter बटन दबाईं आ चाहे निचला बटन दबाईं।<br />
+Legend: '''({{int:cur}})''' = हाल के संशोधन के साथ अंतर, '''({{int:last}})''' = पà¥à¤°à¥à¤µà¤µà¤°à¥à¤¤à¥€ संशोधन के साथ अंतर, '''{{int:minoreditletter}}''' = छोट समà¥à¤ªà¤¾à¤¦à¤¨à¥¤",
+'history-fieldset-title' => 'इतिहास निहारीं',
+'history-show-deleted' => 'खाली मेटावल',
+'histfirst' => 'बहà¥à¤¤ पहिले के',
+'histlast' => 'हाल के',
+'historysize' => '({{PLURAL:$1|1 बाइट|$1 बाइट}})',
+'historyempty' => '(खाली)',
+
+# Revision feed
+'history-feed-title' => 'संशोधन इतिहास',
+'history-feed-description' => 'विकि पर इ पनà¥à¤¨à¤¾ के संशोधन के इतिहास',
+'history-feed-item-nocomment' => '$1 $2 पर',
+'history-feed-empty' => 'अनà¥à¤°à¥‹à¤§ करल गईल पनà¥à¤¨à¤¾ उपलबà¥à¤§ नईखे। हो सकत बा उ के विकि पर से मिटा दिहल गईल होखे, आ चाहे उ के नाम बदल देवल गईल होखे।
+पà¥à¤°à¤¾à¤¸à¤‚गिक पनà¥à¤¨à¤¾ के [[Special:Search|विकि पर खोजे के]] कोशिश करत रहीं।',
+
+# Revision deletion
+'rev-deleted-comment' => '(टिपà¥à¤ªà¤£à¥€ मिटा दिहल गईल बा)',
+'rev-deleted-user' => '(पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ के नाम मिटा दिहल गईल बा)',
+'rev-deleted-event' => '(लॉग कारà¥à¤°à¤µà¤¾à¤ˆ मिटा दिहल गईल बा)',
+'rev-deleted-user-contribs' => '[पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम आ चाहे आइ पी पता हटा दिहल गईल बा - योगदान से समà¥à¤ªà¤¾à¤¦à¤¨ छà¥à¤ª गईल बा]',
+'rev-deleted-text-permission' => "ई पनà¥à¤¨à¤¾ के संशोधन '''मिटा'''' दिहल गईल बा।
+मेटावल जानकारी [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} डिलेशन लॉग] में मिली।",
+'rev-delundel' => 'दिखाईं/छà¥à¤ªà¤¾à¤ˆà¤‚',
+'revdel-restore' => 'दूशà¥à¤¯à¤¤à¤¾ बदलीं',
+'revdel-restore-deleted' => 'मिटल संसोधन',
+'revdel-restore-visible' => 'दृशà¥à¤¯à¤®à¤¾à¤¨ संसोधन',
+'pagehist' => 'पनà¥à¤¨à¤¾ के इतिहास',
+'deletedhist' => 'मिटावल इतिहास',
+'revdelete-content' => 'सामगà¥à¤°à¥€',
+'revdelete-summary' => 'सारांश संपादन',
+'revdelete-uname' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम',
+'revdelete-restricted' => 'पà¥à¤°à¤¬à¤‚धक पर पà¥à¤°à¤¤à¤¿à¤¬à¤‚ध लागू',
+'revdelete-unrestricted' => 'पà¥à¤°à¤¬à¤‚धक पर से पà¥à¤°à¤¤à¤¿à¤¬à¤‚ध समापà¥à¤¤',
+'revdelete-hid' => 'छà¥à¤ª $1',
+'revdelete-unhid' => 'ना छà¥à¤ª $1',
+
+# Merge log
+'revertmerge' => 'अलग करीं',
+'mergelogpagetext' => 'à¤à¤• पनà¥à¤¨à¤¾ इतिहास के दà¥à¤¸à¤° पनà¥à¤¨à¤¾ इतिहास में तà¥à¤°à¤‚त विलय भईल à¤à¤—ो सूची नीचे दिहल बा।',
+
+# Diffs
+'history-title' => "''$1'' के संशोधन इतिहास",
+'difference' => '(संशोधन के बीच अनà¥à¤¤à¤°)',
+'lineno' => 'पंकà¥à¤¤à¤¿ $1:',
+'compareselectedversions' => 'चà¥à¤¨à¤² गईल संशोधन में अनà¥à¤¤à¤° देखीं',
+'showhideselectedversions' => 'चà¥à¤¨à¤² गईल संशोधन दिखाईं/छà¥à¤ªà¤¾à¤ˆà¤‚',
+'editundo' => 'पूरà¥à¤µà¤µà¤¤',
+'diff-multi' => '({{PLURAL:$1|à¤à¤—ो मधà¥à¤¯à¤® संशोधन|$1 गो मधà¥à¤¯à¤® संशोधन}} नईखे दिखावल)',
+
+# Search results
+'searchresults' => 'खोज परिणाम',
+'searchresults-title' => '$1 खातिर खोज परिणाम',
+'searchresulttext' => '{{SITENAME}} के खोज करे के बारे में अधिक जानकारी खातिर, देखीं [[{{MediaWiki:Helppage}}| {{int:help}}]]।',
+'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' खातिर राउर करल गईल खोज ([[Special:Prefixindex/$1| "$1" से शà¥à¤°à¥ होवे वाला सब पनà¥à¤¨à¤¾]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|all pages that link to "$1"]])',
+'searchsubtitleinvalid' => "रउआ '''$1''' खातिर खोज कईनी ह",
+'titlematches' => 'पनà¥à¤¨à¤¾ के शिरà¥à¤·à¤• मिलत बा।',
+'notitlematches' => 'पनà¥à¤¨à¤¾ के शिरà¥à¤·à¤• नईखे मिलत',
+'textmatches' => 'पनà¥à¤¨à¤¾ के पाठà¥à¤¯ मिलत बा',
+'notextmatches' => 'पनà¥à¤¨à¤¾ के पाठà¥à¤¯ नईखे मिलत',
+'prevn' => 'पिछला {{PLURAL:$1|$1}}',
+'nextn' => 'अगला {{PLURAL:$1|$1}}',
+'prevn-title' => 'पिछला $1 {{PLURAL:$1|परिणाम}}',
+'nextn-title' => 'अगला $1 {{PLURAL:$1|परिणाम}}',
+'shown-title' => 'दिखाईं $1 {{PLURAL:$1|परिणाम}}',
+'viewprevnext' => 'देखीं ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-legend' => 'खोज विकलà¥à¤ª',
+'searchmenu-exists' => "'''इ विकि पर ''[[:$1]]'' नाम से à¤à¤—ो पनà¥à¤¨à¤¾ उपलबà¥à¤§ बा'''",
+'searchmenu-new' => "'''इ विकि पर ''[[:$1]]'' नाम से पनà¥à¤¨à¤¾ बनाईं'''",
+'searchhelp-url' => 'Help:सामगà¥à¤°à¥€',
+'searchmenu-prefix' => '[[विशेष:उपसरà¥à¤— सूची/$1|इ उपसरà¥à¤— साथे पनà¥à¤¨à¤¾ बà¥à¤°à¤¾à¤‰à¤œ करीं]]',
+'searchprofile-articles' => 'सामगà¥à¤°à¥€ पनà¥à¤¨à¤¾',
+'searchprofile-project' => 'मदद आ परियोजना पनà¥à¤¨à¤¾',
+'searchprofile-images' => 'मलà¥à¤Ÿà¤¿à¤®à¥€à¤¡à¤¿à¤¯à¤¾',
+'searchprofile-everything' => 'सब कà¥à¤›',
+'searchprofile-advanced' => 'अगà¥à¤°à¤¿à¤®',
+'searchprofile-articles-tooltip' => '$1 में खोजीं',
+'searchprofile-project-tooltip' => '$1 में खोजीं',
+'searchprofile-images-tooltip' => 'फाईल खातिर खोज',
+'searchprofile-everything-tooltip' => 'सभन सामगà¥à¤°à¥€ में खोजीं (वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾ सहित)',
+'search-result-size' => '$1 ({{PLURAL:$2|1 शबà¥à¤¦|$2 शबà¥à¤¦}})',
+'search-result-score' => 'पà¥à¤°à¤¾à¤¸à¤‚गिकता: $1%',
+'search-redirect' => '(पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤£ $1)',
+'search-section' => '(खंड $1)',
+'search-suggest' => 'का राउर मतलब बा: $1',
+'search-interwiki-caption' => 'बहिन परियोजना',
+'search-interwiki-default' => '$1 के परिणाम:',
+'search-interwiki-more' => '(अउर)',
+'search-mwsuggest-enabled' => 'सà¥à¤à¤¾à¤µ के साथ',
+'search-mwsuggest-disabled' => 'कौनो सà¥à¤à¤¾à¤µ ना',
+'search-relatedarticle' => 'संबंधित',
+'mwsuggest-disable' => 'AJAX सà¥à¤à¤¾à¤µ असकà¥à¤·à¤®',
+'searcheverything-enable' => 'सभन सनà¥à¤¦à¤°à¥à¤­ में खोजीं',
+'searchrelated' => 'संबंधित',
+'searchall' => 'सब',
+'showingresults' => "नीचे देखावल जा रहल बा {{PLURAL:$1|'''1''' परिणाम|'''$1''' परिणाम}} #'''$2''' से शà¥à¤°à¥ होवे वाला।",
+'showingresultsnum' => "नीचे देखावल जा रहल बा {{PLURAL:$3|'''1''' परिणाम|'''$3''' परिणाम}} #'''$2''' से शà¥à¤°à¥ होवे वाला।",
+'powersearch' => 'उनà¥à¤¨à¤¤ खोज',
+'powersearch-legend' => 'उनà¥à¤¨à¤¤ खोज',
+'powersearch-ns' => 'सनà¥à¤¦à¤°à¥à¤­ में खोजीं',
+'powersearch-redir' => 'पà¥à¤¨:निरà¥à¤¦à¥‡à¤¶ सूची',
+'powersearch-field' => 'खातिर खोज',
+'powersearch-togglelabel' => 'जाà¤à¤š:',
+'powersearch-toggleall' => 'सब',
+'powersearch-togglenone' => 'कउनो ना',
+'search-external' => 'बाहरी खोज',
+
+# Quickbar
+'qbsettings-none' => 'कउनो ना',
+
+# Preferences page
+'preferences' => 'वरीयता',
+'mypreferences' => 'हमार पसनà¥à¤¦',
+'prefs-edits' => 'समà¥à¤ªà¤¾à¤¦à¤¨ संखà¥à¤¯à¤¾',
+'prefsnologin' => 'खाता में पà¥à¤°à¤µà¥‡à¤¶ नईखीं कईले',
+'changepassword' => 'गà¥à¤ªà¥à¤¤ शबà¥à¤¦ बदलीं',
+'skin-preview' => 'पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨',
+'prefs-rc' => 'तà¥à¤°à¤‚त भईल परिवरà¥à¤¤à¤¨',
+
+# Recent changes
+'recentchanges' => 'तà¥à¤°à¤‚त भईल परिवरà¥à¤¤à¤¨',
+'rcshowhideminor' => '$1 छोट समà¥à¤ªà¤¾à¤¦à¤¨',
+'diff' => 'अनà¥à¤¤à¤°',
+'hist' => 'इति',
+'hide' => 'छà¥à¤ªà¤¾à¤à¤ˆ',
+'show' => 'दिखाईं',
+'minoreditletter' => 'छो',
+'newpageletter' => 'न',
+'boteditletter' => 'बो',
+'number_of_watching_users_pageview' => '[$1 देखल जा रहल बा {{PLURAL:$1|पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾|पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾}}]',
+
+# Recent changes linked
+'recentchangeslinked' => 'समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ बदलाव',
+'recentchangeslinked-feed' => 'समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ बदलाव',
+'recentchangeslinked-toolbox' => 'समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ बदलाव',
+
+# Upload
+'upload' => 'फाईल लादीं',
+
+# File description page
+'filehist' => 'पनà¥à¤¨à¤¾ के इतिहास',
+'filehist-deleteall' => 'सब मिटाईं',
+'filehist-deleteone' => 'मिटाईं',
+'filehist-current' => 'मौजूदा',
+'filehist-datetime' => 'तारिख/समय',
+'filehist-thumb' => 'थमà¥à¤¬à¤¨à¥‡à¤²',
+'filehist-nothumb' => 'बिन थमà¥à¤¬à¤¨à¥‡à¤²',
+'filehist-user' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾',
+'filehist-dimensions' => 'आयाम',
+'filehist-filesize' => 'फाईल के आकार',
+'filehist-comment' => 'टिपà¥à¤ªà¤£à¥€',
+'filehist-missing' => 'गायब फाईल',
+'imagelinks' => 'फाईल लिंक',
+'nolinkstoimage' => 'इ फाईल जोड़े कौनो फाइल लिंक नईखे।',
+'morelinkstoimage' => 'इ फाइल संगे जà¥à¤¡à¤¼à¤² [[Special:WhatLinksHere/$1|सब लिंक]] देखीं।',
+'sharedupload' => 'इ फाईल $1 से बा आ दà¥à¤¸à¤° परियोजना में पà¥à¤°à¤¯à¥‹à¤— करल जा सकत बा।',
+'sharedupload-desc-there' => 'इ फाईल $1 से बा आ दà¥à¤¸à¤° परियोजना में पà¥à¤°à¤¯à¥‹à¤— करल जा सकत बा। अधिक जानकारी खातिर कृपया [$2 फाईल विवरण पनà¥à¤¨à¤¾] देखीं।',
+'filepage-nofile' => 'इ नाम से कौनो फाईल उपलबà¥à¤§ नईखे।',
+'filepage-nofile-link' => 'इ नाम से कौनो फाईल उपलबà¥à¤§ नईखे, लेकिन रउआ [$1 के लाद] सकत बानी।',
+'uploadnewversion-linktext' => 'इ फाईल के नया संसà¥à¤•à¤°à¤£ लादीं।',
+'shared-repo-from' => '$1 से',
+'shared-repo' => 'à¤à¤—ो आवटिंत भंडार गृह',
+'shared-repo-name-wikimediacommons' => 'विकिमीडिया कॉमनà¥à¤¸',
+
+# File reversion
+'filerevert' => 'पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤ $1',
+'filerevert-legend' => 'पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤ फाईल',
+'filerevert-comment' => 'कारण:',
+
+# File deletion
+'filedelete' => '$1 के मिटाईं',
+'filedelete-legend' => 'फाईल के मिटाईं',
+'filedelete-comment' => 'कारण:',
+'filedelete-submit' => 'मिटाईं',
+'filedelete-success' => "'''$1''' के मिटा दिहल गईल बा।",
+'filedelete-nofile' => "'''$1''' उपलबà¥à¤§ नईखे।",
+
+# Random page
+'randompage' => 'अविशिषà¥à¤Ÿ पनà¥à¤¨à¤¾',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|बाईट|बाईटà¥à¤¸}}',
+'move' => 'सà¥à¤¥à¤¾à¤¨à¥à¤¤à¤°à¤£',
+'movethispage' => 'ई पनà¥à¤¨à¤¾ के सà¥à¤¥à¤¾à¤‚तरण करीं',
+
+# Book sources
+'booksources' => 'किताबी सà¥à¤¤à¥à¤°à¥‹à¤¤',
+
+# Special:AllPages
+'allpagessubmit' => 'जाईं',
+'allpagesprefix' => 'उपसरà¥à¤— के साथे पनà¥à¤¨à¤¾ पà¥à¤°à¤¦à¤°à¥à¤¶à¤¨:',
+
+# E-mail user
+'emailuser' => 'ई पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ के ईमेल करीं',
+
+# Watchlist
+'watchlist' => 'हमार धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची',
+'mywatchlist' => 'हमार धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची',
+'watch' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में डालीं',
+'watchthispage' => 'ई पनà¥à¤¨à¤¾ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में डालीं',
+'unwatch' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची से हटाईं',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में जाते हà¥à¤',
+'unwatching' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची से हटते हà¥à¤',
+
+'enotif_newpagetext' => 'इ à¤à¤—ो नया पनà¥à¤¨à¤¾ ह',
+'created' => 'बनावल गईल',
+
+# Delete
+'deletedarticle' => "मिटावल ''[[$1]]''",
+
+# Undelete
+'undeletelink' => 'देखीं/बहाल करीं',
+
+# Namespace form on various pages
+'namespace' => 'सनà¥à¤¦à¤°à¥à¤­',
+'invert' => 'चयनित पलटीं',
+'blanknamespace' => '(मà¥à¤–à¥à¤¯)',
+
+# Contributions
+'contributions' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ योगदान',
+'contributions-title' => ' $1 खातिर पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ योगदान',
+'mycontris' => 'हमार योगदान',
+'nocontribs' => 'ई मानदंड से मिलत जà¥à¤²à¤¤ कौनो बदलाव ना मिलल।',
+'uctop' => '(शीरà¥à¤·)',
+'month' => 'महिना से (आ उ से पहिले):',
+'year' => 'साल से (आ उ से पहिले):',
+
+'sp-contributions-newbies' => 'खाली नया खाता के योगदान देखीं।',
+'sp-contributions-newbies-sub' => 'नया खाता खातिर',
+'sp-contributions-newbies-title' => 'नया खाता खातिर पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ के योगदान।',
+'sp-contributions-blocklog' => 'निषà¥à¤•à¥à¤°à¥€à¤¯ खाता',
+'sp-contributions-deleted' => 'नषà¥à¤Ÿ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ के योगदान।',
+'sp-contributions-logs' => 'लौग',
+'sp-contributions-talk' => 'बात-चीत',
+'sp-contributions-userrights' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ अधिकार पà¥à¤°à¤¬à¤¨à¥à¤§à¤¨',
+'sp-contributions-blocked-notice' => 'ई पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ के ई समय निषà¥à¤•à¥à¤°à¥€à¤¯ करल गईल बा।
+नविनतम नषà¥à¤Ÿ लौग पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¥€ उदà¥à¤§à¤°à¤£ खातिर निचे दिहल बा:',
+
+# What links here
+'whatlinkshere' => 'अहिजा का जà¥à¤¡à¤¼à¥€',
+'whatlinkshere-title' => 'पनà¥à¤¨à¤¾ जौन "$1" से जà¥à¤¡à¤¼à¥‡à¤²à¤¾',
+'whatlinkshere-page' => 'पनà¥à¤¨à¤¾:',
+'linkshere' => "नीचे के सब पनà¥à¤¨à¤¾ '''[[:$1]]''' से जà¥à¤¡à¤¼à¥‡à¤²à¤¾:",
+'nolinkshere' => "'''[[:$1]]''' से कौनो पनà¥à¤¨à¤¾ नईखे जà¥à¤¡à¤¼à¤²à¥¤",
+'nolinkshere-ns' => "चà¥à¤¨à¤² गईल सनà¥à¤¦à¤°à¥à¤­ में '''[[:$1]]''' से कौनो पनà¥à¤¨à¤¾ ना जà¥à¤¡à¤¼à¥‡à¤²à¤¾à¥¤",
+'isredirect' => 'पà¥à¤¨: निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ पनà¥à¤¨à¤¾',
+'isimage' => 'तसà¥à¤µà¥€à¤° लिंक',
+'whatlinkshere-prev' => '{{PLURAL:$1|पिछला|पिछला $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|अगला|अगला $1}}',
+'whatlinkshere-links' => '↠लिंक',
+'whatlinkshere-hideredirs' => '$1 पà¥à¤¨: निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤',
+'whatlinkshere-hidelinks' => '$1 लिंक',
+'whatlinkshere-hideimages' => '$1 तसà¥à¤µà¥€à¤° लिंक',
+'whatlinkshere-filters' => 'फिलà¥à¤Ÿà¤°',
+
+# Block/unblock
+'blockip' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾',
+'blocklink' => 'निषà¥à¤•à¥à¤°à¤¿à¤¯',
+'unblocklink' => 'ताला खोलीं',
+'change-blocklink' => 'बà¥à¤²à¥‰à¤• बदलीं',
+'contribslink' => 'योगदान',
+'blocklogpage' => 'निषà¥à¤•à¥à¤°à¤¿à¤¯ खाता',
+
+# Move page
+'movepagebtn' => 'पनà¥à¤¨à¤¾ सà¥à¤¥à¤¾à¤‚तरण करीं',
+'revertmove' => 'पिछलका सà¥à¤¥à¤¿à¤¤à¤¿',
+
+# Thumbnails
+'thumbnail-more' => 'बढ़ाईं',
+'filemissing' => 'फाईल गायब',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'राउर पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ पनà¥à¤¨à¤¾',
+'tooltip-pt-mytalk' => 'राउर वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾',
+'tooltip-pt-preferences' => 'राउर पसनà¥à¤¦',
+'tooltip-pt-mycontris' => 'राउर योगदान के सूची',
+'tooltip-pt-login' => 'रउआ के खाता पà¥à¤°à¤µà¥‡à¤¶ खातिर पà¥à¤°à¥‹à¤¤à¥à¤¸à¤¾à¤¹à¤¿à¤¤ करल जा रहल बा, बाà¤à¤•à¤¿ ई अनिवारà¥à¤¯ नईखे',
+'tooltip-pt-anonlogin' => 'रउआ के खाता पà¥à¤°à¤µà¥‡à¤¶ खातिर पà¥à¤°à¥‹à¤¤à¥à¤¸à¤¾à¤¹à¤¿à¤¤ करल जा रहल बा, बाà¤à¤•à¤¿ ई अनिवारà¥à¤¯ नईखे',
+'tooltip-pt-logout' => 'खाता से बाहर',
+'tooltip-ca-talk' => 'सामगà¥à¤°à¥€ पनà¥à¤¨à¤¾ के बारे में बात-चीत',
+'tooltip-ca-edit' => 'रउआ ई पनà¥à¤¨à¤¾ के समà¥à¤ªà¤¾à¤¦à¤¨ कर सकत बानी। कृपया पनà¥à¤¨à¤¾ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करे से पहिले पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨ बटन के इसà¥à¤¤à¥‡à¤®à¤¾à¤² करीं।',
+'tooltip-ca-addsection' => 'à¤à¤—ो नया खणà¥à¤¡ शà¥à¤°à¥ करीं',
+'tooltip-ca-viewsource' => 'इ पनà¥à¤¨à¤¾ के संरकà¥à¤·à¤¿à¤¤ कर दिहल गईल बा। रऊआ à¤à¤•à¤° मूल देख सकत बानी।',
+'tooltip-ca-history' => 'ई पनà¥à¤¨à¤¾ के पिछला संशोधन',
+'tooltip-ca-protect' => 'इ पनà¥à¤¨à¤¾ के संरकà¥à¤·à¤¿à¤¤ करीं।',
+'tooltip-ca-unprotect' => 'इ पनà¥à¤¨à¤¾ के संरकà¥à¤·à¤£ हटाईं।',
+'tooltip-ca-delete' => 'ई पनà¥à¤¨à¤¾ मिटाईं',
+'tooltip-ca-move' => 'ई पनà¥à¤¨à¤¾ के सà¥à¤¥à¤¾à¤‚तरण करीं',
+'tooltip-ca-watch' => 'इ पनà¥à¤¨à¤¾ के आपन धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में डालीं',
+'tooltip-search' => '{{SITENAME}} खोजीं',
+'tooltip-search-go' => 'यदि पनà¥à¤¨à¤¾ मौजूद होई त ईहे सटीक नाम के साथ उ पनà¥à¤¨à¤¾ पर जाईं',
+'tooltip-search-fulltext' => 'ई पाठà¥à¤¯ खातिर पनà¥à¤¨à¤¾ खोजीं',
+'tooltip-p-logo' => 'मà¥à¤–à¥à¤¯ पनà¥à¤¨à¤¾ पर जाईं',
+'tooltip-n-mainpage' => 'मà¥à¤–à¥à¤¯ पनà¥à¤¨à¤¾ पर जाईं',
+'tooltip-n-mainpage-description' => 'मà¥à¤–à¥à¤¯ पनà¥à¤¨à¤¾ पर पधारीं',
+'tooltip-n-portal' => 'परियोजना के बारे मेà¤, रउआ का कर सकत बानी, वसà¥à¤¤à¥ कहाठखोजब',
+'tooltip-n-currentevents' => 'वरà¥à¤¤à¤®à¤¾à¤¨ के घटना पर पृषà¥à¤ à¤­à¥‚मी जानकारी खोजीं',
+'tooltip-n-recentchanges' => 'विकि पर तà¥à¤°à¤‚त भईल परिवरà¥à¤¤à¤¨ के सूची',
+'tooltip-n-randompage' => 'बेतरतिब पनà¥à¤¨à¤¾ लादीं (Load करीं)',
+'tooltip-n-help' => 'जगह पता लगावे खातिर',
+'tooltip-t-whatlinkshere' => 'अहिजा लिंक होखे वाला सब विकि पनà¥à¤¨à¤¾ के सूची',
+'tooltip-t-recentchangeslinked' => 'ई पनà¥à¤¨à¤¾ से जà¥à¤¡à¤¼à¤² पनà¥à¤¨à¤µà¤¨ पर तà¥à¤°à¤‚त भईल परिवरà¥à¤¤à¤¨',
+'tooltip-t-upload' => 'फाईल लादीं (अपलोड )',
+'tooltip-t-specialpages' => 'ख़ाश पनà¥à¤¨à¤µà¤¨ के सूची',
+'tooltip-t-print' => 'ई पनà¥à¤¨à¤¾ के छापे लायक संसà¥à¤•à¤°à¤£à¥¤',
+'tooltip-t-permalink' => 'ई पनà¥à¤¨à¤¾ के संसोधन खातिर सà¥à¤¥à¤¾à¤¯à¥€ लिंक।',
+'tooltip-ca-nstab-main' => 'सामगà¥à¤°à¥€ पनà¥à¤¨à¤¾ देखीं',
+'tooltip-ca-nstab-special' => 'ई à¤à¤—ो ख़ाश पनà¥à¤¨à¤¾ ह, रउआ ई पनà¥à¤¨à¤¾ के समà¥à¤ªà¤¾à¤¦à¤¨ नईखीं कर सकत',
+'tooltip-save' => 'आपन बदलाव के सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करीं',
+
+# Media information
+'file-nohires' => '<small> उचà¥à¤š गà¥à¤£à¤µà¤¤à¥à¤¤à¤¾ उपलबà¥à¤§ नईखे। </small>',
+'svg-long-desc' => 'à¤à¤¸ वी जी फाईल, नॉमिनलà¥à¤²à¥€ $1 x $2 पिकà¥à¤¸à¤²à¥à¤¸, फाईल के आकार $3',
+'show-big-image' => 'पà¥à¤°à¤¾ गà¥à¤£à¤µà¤¤à¥à¤¤à¤¾',
+'file-info-gif-looped' => 'लूपà¥à¤¡',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|फà¥à¤°à¥‡à¤®}}',
+'file-info-png-looped' => 'लूपà¥à¤¡',
+
+# Bad image list
+'bad_image_list' => 'फोरà¥à¤®à¥‡à¤Ÿ निमà¥à¤¨ अनà¥à¤¸à¤¾à¤° बा:
+खाली सूची सामगà¥à¤°à¥€ (* से शà¥à¤°à¥ होवे वाला पंकà¥à¤¤à¤¿ ) मानल गईल बा।
+पंकà¥à¤¤à¤¿ पर पहिला लिंक à¤à¤—ो खराब फाईल के साथ जà¥à¤¡à¤¼à¤² होवे के चाहीं।
+कोई भी बाद वाला लिंक ओही पंकà¥à¤¤à¤¿ पर अईला पर उ के अपवाद मानल जाई, अरà¥à¤¥à¤¾à¤¤ जौन पनà¥à¤¨à¤¾ पर फाईल इनलाईन हो सकत बा।',
+
+# Metadata
+'metadata' => 'मेटाडाटा',
+'metadata-help' => 'इ फाईल में अतिरिकà¥à¤¤ जानकारी उपलबà¥à¤§ बा, हो सकत बा कि इ डिजीटल कैमरा या सà¥à¤•à¥ˆà¤¨à¤° से लेवल गईल होखे। यदि इ फाईल à¤à¤•à¤° मूल फाईल में से संशोधित करल गईल बा त कà¥à¤› जानकारी उजागर ना हो सकी।',
+'metadata-expand' => 'विसà¥à¤¤à¥ƒà¤¤ विवरण देखाईं',
+'metadata-collapse' => 'विसà¥à¤¤à¥ƒà¤¤ विवरण छà¥à¤ªà¤¾à¤à¤ˆà¤‚',
+
+# EXIF tags
+'exif-imagewidth' => 'चौड़ाई',
+'exif-imagelength' => 'ऊà¤à¤šà¤¾à¤ˆ',
+'exif-bitspersample' => 'अवयव पà¥à¤°à¤¤à¤¿ बीट',
+'exif-compression' => 'समà¥à¤ªà¥€à¤¡à¤¼à¤¨ पà¥à¤°à¤£à¤¾à¤²à¥€',
+'exif-photometricinterpretation' => 'पिकà¥à¤¸à¤² रचना',
+'exif-orientation' => 'अभिसंसà¥à¤•à¤°à¤£',
+'exif-samplesperpixel' => 'अवयवन के संखà¥à¤¯à¤¾',
+'exif-planarconfiguration' => 'डेटा पà¥à¤°à¤¬à¤¨à¥à¤§à¤¨',
+'exif-xresolution' => 'कà¥à¤·à¥ˆà¤¤à¤¿à¤œ समाधान',
+'exif-yresolution' => 'लमà¥à¤¬à¤µà¤¤ समाधान',
+'exif-stripoffsets' => 'चितà¥à¤° डेटा के सà¥à¤¥à¤¿à¤¤à¥€',
+'exif-jpeginterchangeformatlength' => 'JPEG डेटा के बाइट',
+
+# 'all' in various places, this might be different for inflected languages
+'namespacesall' => 'सब',
+'monthsall' => 'सब',
+'limitall' => 'सब',
+
+# E-mail address confirmation
+'confirmemail' => 'इ-मेल पता कनà¥à¤«à¤°à¥à¤® करीं',
+
+# Special:SpecialPages
+'specialpages' => 'ख़ाश पनà¥à¤¨à¤¾',
+
+);
diff --git a/languages/messages/MessagesBi.php b/languages/messages/MessagesBi.php
index 3ea2c264..a2543804 100644
--- a/languages/messages/MessagesBi.php
+++ b/languages/messages/MessagesBi.php
@@ -139,11 +139,9 @@ $messages = array(
'exif-exposuretime-format' => '$1 sek. ($2)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'olgeta',
-'imagelistall' => 'olgeta',
-'watchlistall2' => 'olgeta',
-'namespacesall' => 'olgeta',
-'monthsall' => 'olgeta',
+'watchlistall2' => 'olgeta',
+'namespacesall' => 'olgeta',
+'monthsall' => 'olgeta',
# Table pager
'table_pager_first' => 'Nambawan pej',
diff --git a/languages/messages/MessagesBjn.php b/languages/messages/MessagesBjn.php
index 10b68035..467782cc 100644
--- a/languages/messages/MessagesBjn.php
+++ b/languages/messages/MessagesBjn.php
@@ -14,6 +14,43 @@
$fallback = 'id';
+$namespaceNames = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Istimiwa',
+ NS_TALK => 'Pamandiran',
+ NS_USER => 'Pamakai',
+ NS_USER_TALK => 'Pamandiran_Pamakai',
+ NS_PROJECT_TALK => 'Pamandiran_$1',
+ NS_FILE => 'Barakas',
+ NS_FILE_TALK => 'Pamandiran_Barakas',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Pamandiran_MediaWiki',
+ NS_TEMPLATE => 'Citakan',
+ NS_TEMPLATE_TALK => 'Pamandiran_Citakan',
+ NS_HELP => 'Patulung',
+ NS_HELP_TALK => 'Pamandiran_Patulung',
+ NS_CATEGORY => 'Tumbung',
+ NS_CATEGORY_TALK => 'Pamandiran_Tumbung',
+);
+
+$namespaceAliases = array(
+ // 'id' namespace names at the time 'bjn' namespaces were localised.
+ 'Istimewa' => NS_SPECIAL,
+ 'Pembicaraan' => NS_TALK,
+ 'Pengguna' => NS_USER,
+ 'Pembicaraan_Pengguna' => NS_USER_TALK,
+ 'Pembicaraan_$1' => NS_PROJECT_TALK,
+ 'Berkas' => NS_FILE,
+ 'Pembicaraan_Berkas' => NS_FILE_TALK,
+ 'Pembicaraan_MediaWiki' => NS_MEDIAWIKI_TALK,
+ 'Templat' => NS_TEMPLATE,
+ 'Pembicaraan_Templat' => NS_TEMPLATE_TALK,
+ 'Bantuan' => NS_HELP,
+ 'Pembicaraan_Bantuan' => NS_HELP_TALK,
+ 'Kategori' => NS_CATEGORY,
+ 'Pembicaraan_Kategori' => NS_CATEGORY_TALK,
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'Garisi di bawah tautan',
@@ -46,8 +83,8 @@ $messages = array(
'tog-shownumberswatching' => 'Tampaiakan barapa papamuruk nang maitihi',
'tog-oldsig' => 'Tandateken nang sudah ada:',
'tog-fancysig' => 'Tapsirakan tandatangan sawagai naskah wiki (kada batautan utumatis)',
-'tog-externaleditor' => 'Puruk pambabak luar sawagai default (hagan nang harat haja, musti ada setélan istimiwa pada komputer Pian.[http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
-'tog-externaldiff' => 'Puruk palainan luar sawagai default (hagan nang harat haja, musti ada setélan istimiwa pada komputer Pian. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaleditor' => 'Puruk pambabak luar sawagai default (hagan nang harat haja, musti ada setélan istimiwa pada komputer Pian.[//www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaldiff' => 'Puruk palainan luar sawagai default (hagan nang harat haja, musti ada setélan istimiwa pada komputer Pian. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
'tog-showjumplinks' => 'Kawa\'akan "lacung ka" tautan kakawaan-masuk',
'tog-uselivepreview' => 'Puruk titilikan langsung (parlu ada JavaScript) (cacubaan)',
'tog-forceeditsummary' => 'Ingatakan ulun wayah babuat sabuah kasimpulan babakan kusung',
@@ -142,14 +179,7 @@ $messages = array(
'listingcontinuesabbrev' => 'samb.',
'index-category' => 'Tungkaran tasusun bapadalakan kata',
'noindex-category' => 'Tungkaran kada tasusun bapadalakan kata',
-
-'mainpagetext' => "'''MediaWiki sudah tapasang awan sukses'''.",
-'mainpagedocfooter' => 'Carii panjalasan [http://meta.wikimedia.org/wiki/Help:Contents Panduan Pamuruk] gasan mamuruk parangkat lunak wiki
-
-== Gasan bamula ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Daptar konpigurasi setélan]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki nang rancak ditakunakan]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki rilis milis]',
+'broken-file-category' => 'Tutungkaran lawan tatautan barakas pagat',
'about' => 'Pasal',
'article' => 'Tungkaran isi',
@@ -201,10 +231,10 @@ $messages = array(
'history' => 'Tungkaran halam',
'history_short' => 'Tungkaran halam',
'updatedmarker' => 'Dihanyari tumatan ilangan pauncitan ulun',
-'info_short' => 'Panjalasan',
'printableversion' => 'Nang kawa dicitak',
'permalink' => 'Tautan tatap',
'print' => 'Citak',
+'view' => 'Tiringi',
'edit' => 'Babak',
'create' => 'Ulah',
'editthispage' => 'Babak tungkaran ini',
@@ -212,6 +242,7 @@ $messages = array(
'delete' => 'Hapus',
'deletethispage' => 'Hapus tungkaran ini',
'undelete_short' => 'Walang mahapus {{PLURAL:$1|asa babakan|$1 bababakan}}',
+'viewdeleted_short' => 'Tiringi {{PLURAL:$1|asa babakan tahapus|$1 bababakan tahapus}}',
'protect' => 'Lindungi',
'protect_change' => 'ubah',
'protectthispage' => 'Lindungi tungkaran ini',
@@ -296,6 +327,8 @@ Lihati [[Special:Version|Tungkaran mudil]]',
'toc' => 'Isi',
'showtoc' => 'tampaiakan',
'hidetoc' => 'sungkupakan',
+'collapsible-collapse' => 'Siup',
+'collapsible-expand' => 'Kambangakan',
'thisisdeleted' => 'Tiringi atawa mambulikakan $1?',
'viewdeleted' => 'Tiringi $1?',
'restorelink' => '$1 {{PLURAL:$1|babakan|babakan}} nang sudah dihapus',
@@ -307,6 +340,8 @@ Lihati [[Special:Version|Tungkaran mudil]]',
'page-rss-feed' => "Kitihan RSS ''$1''",
'page-atom-feed' => "Kitihan Atum ''$1''",
'red-link-title' => '$1 (tungkaran baluman ada)',
+'sort-descending' => 'Surtir baturun',
+'sort-ascending' => 'Surtir banaik',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Tungkaran',
@@ -391,11 +426,12 @@ Muhun cubai pulang dalam babarapa minit.',
'protectedinterface' => 'Tungkaran ini manyadiakan naskah antarmuha gasan parangkat lunak, wan dilindungi hagan mancagah tasalah puruk.',
'editinginterface' => "'''Paringatan:''' Pian mambabak sabuah tungkaran nang dipuruk hagan manyadiakan naskah antarmuha gasan parangkat lunak.
Parubahan ka tungkaran ini akan bapangaruh matan tampaian antarmuha gasan pamuruk lain.
-Gasan tarjamahan, muhun puruk [http://translatewiki.net/wiki/Main_Page?setlang=bjn translatewiki.net], rangka gawian palokalan MediaWiki.",
+Gasan tarjamahan, muhun puruk [//translatewiki.net/wiki/Main_Page?setlang=bjn translatewiki.net], rangka gawian palokalan MediaWiki.",
'sqlhidden' => '(Parmintaan SQL disungkupakan)',
'cascadeprotected' => 'Tungkaran ini sudah dilindungi matan pambabakan, marga nangini tamasuk dalam {{PLURAL:$1|tungkaran|tutungkaran}} dudi nang dilindungi "barénténg": $2',
'namespaceprotected' => "Pian kada baisi ijin hagan mambabak tutungkaran dalam ngaran kamar '''$1'''.",
-'customcssjsprotected' => 'Pian kada baisi ijin hagan mambabak tungkaran ini, karana ini mangandung setélan paribadi pamuruk lain.',
+'customcssprotected' => 'Pian kada baisi ijin mambabak tungkaran CSS ngini, karana ngini baisi setelan paribadi pamuruk lain.',
+'customjsprotected' => 'Pian kada baisi ijin mambabak tungkaran JavaScript ngini, karana ngini baisi setelan paribadi pamuruk lain.',
'ns-specialprotected' => 'Tungkaran istimiwa kada kawa dibabak',
'titleprotected' => "Judul ini dilindungi matan paulahan ulih [[User:$1|$1]].
Alasan nang dibariakan adalah ''$2''.",
@@ -433,6 +469,7 @@ Jangan kada ingat hagan maubah [[Special:Preferences|preferensi {{SITENAME}}]] P
'createaccount' => 'Ulah akun',
'gotaccount' => 'Sudah baisi sabuah akun? $1.',
'gotaccountlink' => 'Babuat log',
+'userlogin-resetlink' => 'Kada ingat rarincian babuat log Pian?',
'createaccountmail' => 'Lung suril',
'createaccountreason' => 'Alasan:',
'badretype' => 'Katasunduk nang Pian buati kada pas.',
@@ -447,13 +484,15 @@ Muhun kawa'akan nangitu, hanyar babuat log awan ngaran pamuruk hanyar wan katasu
'nocookieslogin' => "{{SITENAME}} mamuruk ''cookies'' hagan pamuruk babuat log.
''Cookies'' Pian lagi kada kawa.
Muhun kawa'akan nang itu wan cubai pulang.",
+'nocookiesfornew' => 'Akun pamuruk kada taulah, sualnya kami kada kawa mamastiakan asal mula.
+Yakinakan Pian sudah mangkawa-akan cookies (wawadai), muat pulang tungkaran ini wan cubai ja lagi.',
'noname' => 'Ngaran pamuruk nang Pian ajuakan kada sah.',
'loginsuccesstitle' => 'Kulihan babuat log',
'loginsuccess' => "'''Pian parhatan ini babuat log dalam {{SITENAME}} sawagai \"\$1\".'''",
'nosuchuser' => 'Kadada pamuruk bangaran "$1".
Ngaran pamuruk adalah kasus marinci.
Lihati pulang ijaan, atawa [[Special:UserLogin/signup|ulah sabuah akun hanyar]]',
-'nosuchusershort' => 'Kadada pamuruk bangaran "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Kadada pamuruk bangaran "$1".
Lihati pulang hijaan Pian.',
'nouserspecified' => "Pian harus ma'ajuakan sabuah ngaran pamuruk.",
'login-userblocked' => 'Pamuruk ini diblukir. Babuat log kada dibulihakan.',
@@ -496,13 +535,14 @@ Pian kawa kada mahual pasan ini, amun paulahan akun ini adalah kasalahan.',
'usernamehasherror' => 'Ngaran pamuruk kada kawa mangandung tanda kurung',
'login-throttled' => 'Pian sudah kabanyakan mancuba babuat log.
Muhun hadangi dahulu sapandang hanyar cubai pulang.',
+'login-abort-generic' => 'Pian kada ruhui babuat log - Diwalangi',
'loginlanguagelabel' => 'Bahasa: $1',
'suspicious-userlogout' => 'Parmintaan Pian hagan kaluar log kada ditarima karana nangkaya dikirim matan panjalajah web rakai atawa tatangkap proxy.',
# E-mail sending
'php-mail-error-unknown' => 'Kasalahan kada dipinandui dalam pungsi surat () PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Ubah katasunduk',
'resetpass_announce' => 'Pian babuat log awan sabuah kudi samantara nang disurili.
Hagan manuntungakan babuat log, Pian musti manyetel sabuah katasunduk hanyar di sia:',
@@ -521,6 +561,33 @@ Wayah ini Pian sudah babuat log...',
Pian pinanya sudah bahasil maubah katasunduk Pian atawa maminta sabuah katasunduk samantara hanyar.',
'resetpass-temp-password' => 'Katasunduk samantara:',
+# Special:PasswordReset
+'passwordreset' => 'Bulikakan setelan katasunduk',
+'passwordreset-text' => 'Tuntungakan purmulir ngini gasan manarima sabuah suril pangingat rarincian akun Pian.',
+'passwordreset-legend' => 'Bulikakan setelan katasunduk',
+'passwordreset-disabled' => 'Mambulikakan setelan katasunduk dipajahakan hagan wiki ini.',
+'passwordreset-pretext' => '{{PLURAL:$1||Buati asa data di bawah ngini}}',
+'passwordreset-username' => 'Ngaran pamuruk:',
+'passwordreset-email' => 'Alamat suril:',
+'passwordreset-emailtitle' => 'Rarincian akun pada {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Ada urang (pinanya Pian, matan alamat IP $1) maminta sabuah pangingat hagan rarincian akun Pian gasan {{SITENAME}} ($4). Pamuruk barikut {{PLURAL:$3|akun|aakun}}
+tarait awan suril:
+
+$2
+
+{{PLURAL:$3|katasunduk samantara ngini|kakatasunduk samantara ngini}} akan kadaluarsa dalam {{PLURAL:$5|asa hari|$5 hahari}}.
+Pian parlu babuat log wan mamilih katasunduk hanyar wayah ini jua. Amun urang lain nang maminta ngini, atawa amun Pian sudah paingatan awan katasunduk Pian, wan Pian kada handak maubahnya, Pian kawa kada mahuwal pasan ini wan manyambung mamuruk katasunduk lawas Pian.',
+'passwordreset-emailtext-user' => 'Ada urang (pinanya Pian, matan alamat IP $1) maminta sabuah pangingat hagan rarincian akun Pian gasan {{SITENAME}} ($4). Pamuruk barikut {{PLURAL:$3|akun|aakun}}
+tarait awan suril:
+
+$2
+
+{{PLURAL:$3|katasunduk samantara ngini|kakatasunduk samantara ngini}} akan kadaluarsa dalam {{PLURAL:$5|asa hari|$5 hahari}}.
+Pian parlu babuat log wan mamilih katasunduk hanyar wayah ini jua. Amun urang lain nang maminta ngini, atawa amun Pian sudah paingatan awan katasunduk Pian, wan Pian kada handak maubahnya, Pian kawa kada mahuwal pasan ini wan manyambung mamuruk katasunduk lawas Pian.',
+'passwordreset-emailelement' => 'Ngaran pamuruk: $1
+Katasunduk samantara: $2',
+'passwordreset-emailsent' => 'Sabuah suril pangingat sudah takirim.',
+
# Edit page toolbar
'bold_sample' => 'Naskah kandal',
'bold_tip' => 'Naskah kandal',
@@ -532,8 +599,6 @@ Pian pinanya sudah bahasil maubah katasunduk Pian atawa maminta sabuah katasundu
'extlink_tip' => 'Tautan luar (Ingatakan bamula wan http://)',
'headline_sample' => 'Naskah judul',
'headline_tip' => 'Judul tingkat 2',
-'math_sample' => 'Masukakan rumus di sia',
-'math_tip' => 'Rumus matamatika (LaTeX)',
'nowiki_sample' => 'Masukakan naskah kada babantuk di sia',
'nowiki_tip' => 'Halinakan pambantukan/purmat wiki',
'image_tip' => "Maktub'akan barakas",
@@ -616,7 +681,7 @@ atawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} mambabak tungkaran ini]</span>.'
'noarticletext-nopermission' => 'Parhatan ini kadada naskah di tungkaran ini.
Pian kawa [[Special:Search/{{PAGENAME}}|manggagai gasan judul ini]] pintang tungkaran lain,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} manggagai log barait].</span>.',
-'userpage-userdoesnotexist' => 'Akun pamuruk "$1" kada tadaptar.
+'userpage-userdoesnotexist' => 'Akun pamuruk "<nowiki>$1</nowiki>" kada tadaptar.
Muhun pariksa amun Pian handak maulah/mambabak tungkaran ini.',
'userpage-userdoesnotexist-view' => 'Akun pamuruk "$1" kada tadaptar.',
'blocked-notice-logextract' => 'Pamuruk nangini parhatan ini diblukir.
@@ -655,6 +720,7 @@ Amun ini masih haja kada bagawi, cubai [[Special:UserLogout|kaluar log]] wan bab
'token_suffix_mismatch' => "'''Babakan Pian sudah kada ditarima karana aplikasi Pian mahancuri tanda baca pada babakan token.'''
Babakan ini kada ditarima hagan mancagah kasalahan pada naskah tungkaran.
Nangini ambahanu tajadi amun Pian mamuruk sabuah layanan proxy buggy bapandal web kada bangaran.",
+'edit_form_incomplete' => "'''Babarapa hagian matan purmulir babakan kada sampai server; pariksa pulang apakah babakan Pian tatap utuh wan cubai lagi.'''",
'editing' => 'Mambabak $1',
'editingsection' => 'Mambabak $1 (hagian)',
'editingcomment' => 'Mambabak $1 (hagian hanyar)',
@@ -1001,12 +1067,13 @@ Pian kawa manggagai lung Google parhatan ini.
Catatan nang dihaharnya matan isi {{SITENAME}} kawa-ai sudah kadaluarsa.',
# Quickbar
-'qbsettings' => 'Bilahhancap',
-'qbsettings-none' => 'Kadada',
-'qbsettings-fixedleft' => 'Tatap di kiwa',
-'qbsettings-fixedright' => 'Tatap di kanan',
-'qbsettings-floatingleft' => 'Mangambang sabalah kiwa',
-'qbsettings-floatingright' => 'Mangambang sabalah kanan',
+'qbsettings' => 'Bilahhancap',
+'qbsettings-none' => 'Kadada',
+'qbsettings-fixedleft' => 'Tatap di kiwa',
+'qbsettings-fixedright' => 'Tatap di kanan',
+'qbsettings-floatingleft' => 'Mangambang sabalah kiwa',
+'qbsettings-floatingright' => 'Mangambang sabalah kanan',
+'qbsettings-directionality' => 'Tatap, tagantung pada ampah skrip matan bahasa Pian',
# Preferences page
'preferences' => 'Kakatujuan',
@@ -1017,9 +1084,10 @@ Catatan nang dihaharnya matan isi {{SITENAME}} kawa-ai sudah kadaluarsa.',
'changepassword' => 'Ubah katasunduk',
'prefs-skin' => 'Kulimbit',
'skin-preview' => 'Titilikan',
-'prefs-math' => 'Matik',
'datedefault' => 'Kadada katujuan',
+'prefs-beta' => 'Fitur Beta',
'prefs-datetime' => 'Tanggal wan waktu',
+'prefs-labs' => 'Fitur Labs',
'prefs-personal' => 'Data awak',
'prefs-rc' => 'Parubahan tahanyar',
'prefs-watchlist' => 'Paitihan',
@@ -1041,8 +1109,6 @@ Catatan nang dihaharnya matan isi {{SITENAME}} kawa-ai sudah kadaluarsa.',
'columns' => 'Kolom:',
'searchresultshead' => 'Gagai',
'resultsperpage' => 'Hantukan par tungkaran:',
-'contextlines' => 'Baris par hantukan:',
-'contextchars' => 'Isi par baris:',
'stub-threshold' => 'Ambang watas gasan pormat <a href="#" class="stub">taautan rintisan</a>:',
'stub-threshold-disabled' => 'Kada kawa-akan',
'recentchangesdays' => 'Hahari nang manampaiakan parubahan tahanyar:',
@@ -1054,7 +1120,7 @@ Barikut ngini adalah nilai acak nang kawa Pian puruk: $1',
'savedprefs' => 'Kakatujuan Pian sudah ham disimpan.',
'timezonelegend' => 'Waktu banua:',
'localtime' => 'Waktu damintu:',
-'timezoneuseserverdefault' => 'Purukan Server default',
+'timezoneuseserverdefault' => "Guna'akan bawaan wiki ($1)",
'timezoneuseoffset' => 'Nang lain (ajuakan nang luput setel)',
'timezoneoffset' => 'Luput setel¹:',
'servertime' => 'Waktu server:',
@@ -1102,6 +1168,8 @@ Pariksa tag HTML.',
'email' => 'Suril',
'prefs-help-realname' => 'Ngaran bujur adalah pilihan haja.
Amun Pian mamilih manyadiakan ini, ini akan dipuruk gasan paminanduan kulihan gawian Pian.',
+'prefs-help-email' => 'Alamat suril adalah opsional, tagal pun parlu gasan mambulikakan setelan katasunduk, amunai Pian kada ingatan.',
+'prefs-help-email-others' => 'Pian kawa jua maijinakan urang mangiau Pian lung tungkaran pamuruk atawa pamandiran Pian kada parlu manampaiakan identitas Pian.',
'prefs-help-email-required' => 'Alamat suril diparluakan.',
'prefs-info' => 'Panjalasan pandal',
'prefs-i18n' => 'Intarnasionalisasi',
@@ -1226,15 +1294,15 @@ Amun Pian mamilih manyadiakan ini, ini akan dipuruk gasan paminanduan kulihan ga
'right-userrights' => 'Babak sabarataan hak pamuruk',
'right-userrights-interwiki' => 'Babak hahak pamuruk matan papamuruk wiwiki balain',
'right-siteadmin' => 'Sunduk wan buka sunduk basis data',
-'right-reset-passwords' => 'Risit katasunduk pamuruk lain',
'right-override-export-depth' => 'Ekspur tutungkaran tamasuk tutungkaran tataut sampai kadalaman 5',
'right-sendemail' => 'Mangirim suril ka papamuruk lain',
# 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',
-'rightsnone' => '(kadada)',
+'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',
@@ -1356,10 +1424,13 @@ Janaki [[Special:NewFiles|galeri babarakas hanyar]] gasan tampaian visual.',
'illegalfilename' => 'Ngaran barakas "$1" mangandung karaktir nang kada dibulihakan dalam tungkaran jujudul.
Muhan ganti ngaran barakas wan cubai mahunggah pulang.',
'badfilename' => 'Ngaran barakas sudah diganti ka "$1".',
+'filetype-mime-mismatch' => 'Ekstensi barakas ".$1" kada pas lawan macam MIME matan barakas ($2).',
'filetype-badmime' => 'Babarakas macam MIME "$1" kada bulih dihunggah.',
'filetype-bad-ie-mime' => 'Kada kawa mahunggah barakas ngini karana Internet Explorer manangguh ngini sawagai "$1", nang kada dibulihakan wan samacam barakas babahaya.',
'filetype-unwanted-type' => "'''\".\$1\"''' adalah samacam barakas nagn kada dihandaki.
Dikatujui {{PLURAL:\$3|macam barakas|mamacam barakas}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|adalah macam barakas kada diijinakan|adalah mamacam barakas kada diijinakan}}.
+Nang diijinakan {{PLURAL:$3|adalah macam barakas|adalah mamacam barakas}} $2.',
'filetype-missing' => 'Barakas kada baisi ekstensi (nangkaya ",jpg").',
'empty-file' => 'Barakas nang Pian buatakan puang.',
'file-too-large' => 'Barakas nang Pian buatakan kaganalan.',
@@ -1378,6 +1449,7 @@ barakas ngini $2.',
'emptyfile' => 'Barakas nang Pian hunggah kusung pinanya,
Ngini pinanya ada salah katik ngaran barakas.
Muhun pariksa apa bubujuran Pian handak mahunggah barakas ngini.',
+'windows-nonascii-filename' => 'Wiki ngini kada manyukung ngaranbarakas awan karaktir isitimiwa.',
'fileexists' => "Sabuah barakas bangaran ngin sudah ada, muhun pariksa '''<tt>[[:$1]]</tt>''' amun Pian kada musti amun Pian handak mangganti ngini.
[[$1|thumb]]",
'filepageexists' => "Tungkaran diskripsi gasan barakas ngini suda diulah di '''<tt>[[:$1]]</tt>''', tagal kadada barakas bangaran ngini tasadia.
@@ -1418,6 +1490,8 @@ Muhun pariksa setelan file_uploads.',
'uploadscripted' => 'Barakas ngini mangandung HTML atawa kudi script nang kawa ditarjamahakan tasalah ulih sabuah panjalajah web.',
'uploadvirus' => 'Barakas baisi pirus!
Ririncian: $1',
+'uploadjava' => 'Barakas ngini adalah sabuah barakas ZIP nang mangandung sabuah barakas Java .class.
+Mahunggah babarakas java kada dibulihakan, karana inya kawa maluncati wawatas kaamanan.',
'upload-source' => 'Asal mula barakas',
'sourcefilename' => 'Ngaranbarakas asal mula:',
'sourceurl' => 'Asal mula URL:',
@@ -1428,10 +1502,6 @@ Ririncian: $1',
'watchthisupload' => 'Itihi barakas ini',
'filewasdeleted' => 'Sabuah barakas bangaran ngini suah dihunggah wan abis tu dihapus.
Pian musti pariksa $1 hanyar mahunggah ngini pulang.',
-'upload-wasdeleted' => "'''Paringatan: Pian mahunggah sabuah barakas nang suah dihapus.'''
-
-Pian partimbangakan dahulu sasuaikah hagan manarusakan pahunggahan barakas ngini.
-Log pahapusan gasan barakas ngini disadiakan di sia:",
'filename-bad-prefix' => "Ngaran barakas nang Pian hunggah bamula lawan '''\"\$1\"''', nang lainan-ngaran diskriptip biasanya utumatis dibari ulih kudakan digital.
Muhun pilih ngaran labih diskriptip lain gasan barakas Pian.",
'upload-success-subj' => 'Kulihan mahunggah',
@@ -1455,6 +1525,24 @@ Amun masih haja bamasalah, kiau saurang [[Special:ListUsers/sysop|pambakal]].',
'upload-unknown-size' => 'Ukuran kada dikatahui',
'upload-http-error' => 'Sabuah kasalahan HTTP tajadi: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Sabuah kasalahan tarikin wayah mambuka barakas gasan pariksa ZIP.',
+'zip-wrong-format' => 'Barakas nang diajuakan lainan sabuah barakas ZIP.',
+'zip-bad' => 'Barakas ngini korup atawa pinanya barakas ZIP nang kada kawa dibaca.
+Barakas ngini kada kawa dipariksa gasan kaamanan.',
+'zip-unsupported' => 'Barakas ngini adalah sabuah barakas ZIP nang dipuruk pitur ZIP nang kada disukung ulih MediaWiki.
+Ngini kada kawa dipariksa gasan kaamanan.',
+
+# Special:UploadStash
+'uploadstash' => 'Simpanan hunggahan',
+'uploadstash-summary' => 'Tungkaran ngini manyadiakan ungkaian ka babarakas nang tahunggah (atawa dalam proses hunggahan) tapi baluman ditarbitakan ka wiki.
+Babarakas ngini kada kawa dilihat ka siapa pun kacuali pamuruk nang mahunggahnya.',
+'uploadstash-clear' => 'Kalarakan babarakas simpanan.',
+'uploadstash-nofiles' => 'Pian kada baisi babarakas simpanan.',
+'uploadstash-badtoken' => 'Aksi kada ruhui dilaksanaakan, pinanya karana babakan Pian sudah kadaluarsa. Cubai pulang.',
+'uploadstash-errclear' => 'Pangalaran babarakas kada ruhui.',
+'uploadstash-refresh' => "Sagar'akan daptar babarakas",
+
# img_auth script messages
'img-auth-accessdenied' => 'Ungkaian ditolak',
'img-auth-nopathinfo' => 'PATH_INFO hilang.
@@ -1538,7 +1626,7 @@ Daptar barikut manampaiakan {{PLURAL:$1|tautan panambaian tungkaran|$1 panambaia
Sabuah [[Special:WhatLinksHere/$2|daptar hibak]] tasadia.',
'nolinkstoimage' => 'Kadada tutungkaran nang bataut ka barakas ngini.',
'morelinkstoimage' => 'Tiringi [[Special:WhatLinksHere/$1|tautan lagi]] ka barakas ngini.',
-'redirectstofile' => 'Barakas barikut {{PLURAL:$1|diugahakan|$1 diugahakan}} ka barakas ngini:',
+'linkstoimage-redirect' => '$1 (barakas paugahan) $2',
'duplicatesoffile' => 'Barikut {{PLURAL:$1|barakas panggandaan|$1 babarakas panggandaan}} matan barakas ngini ([[Special:FileDuplicateSearch/$2|rarincian labih]]):',
'sharedupload' => 'Barakas ini matan $1 wan mungkin dipuruk rangka-rangka gawian lain.',
'sharedupload-desc-there' => 'Barakas ngini matan $1 wan pina dipuruk ulih rarangka-gawi lain.
@@ -1634,13 +1722,14 @@ Pariksa 'hulu tautan lain ka citakan itu sabalum mahapusnya.",
Tutungkaran ngitu harusnya ka tupik nang sasuai.<br />
Sabuah tungkaran dianggap sawagai tungkaran disambigu amun ngini mamuruk sabuah citakan nang tataut matan [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Paugahan ganda',
-'doubleredirectstext' => 'Tungkaran ngini mandaptar tutungkaran nang maugah ka tutungkaran ugahan lain.
+'doubleredirects' => 'Paugahan ganda',
+'doubleredirectstext' => 'Tungkaran ngini mandaptar tutungkaran nang maugah ka tutungkaran ugahan lain.
Tiap baris mangandung tautan ka ugahan panambaian wan kadua, sasarannya adalah ugahn kadua, nang biasanya tungkaran sasaran "sabujurnya", nang ugahan partama tuju.
Masukan nang <del>Disilangi</del> sudah dibaiki.',
-'double-redirect-fixed-move' => '[[$1]] sudah dipindahakan.
+'double-redirect-fixed-move' => '[[$1]] sudah dipindahakan.
Ngini wayah ini sudah diugahakan ka [[$2]].',
-'double-redirect-fixer' => 'Ralatan paugahan',
+'double-redirect-fixed-maintenance' => 'Mambaiki paugahan ganda matan [[$1]] ka [[$2]].',
+'double-redirect-fixer' => 'Ralatan paugahan',
'brokenredirects' => 'Paugahan rakai',
'brokenredirectstext' => 'Tautan paugahan barikut manuju ka tutungkaran non-tasadia:',
@@ -1717,6 +1806,7 @@ Muhun catat bahwasa situs web lain pina-ai bataut ka sabuah barakas awan sabuah
'pager-newer-n' => '{{PLURAL:$1|tahanyar 1|tahanyar $1}}',
'pager-older-n' => '{{PLURAL:$1|talawas 1|talawas $1}}',
'suppress' => 'Pangawasan',
+'querypage-disabled' => 'Tungkaran istimiwa ngini dikada-kawakan gasan alasan ginawi.',
# Book sources
'booksources' => 'Buku bamula',
@@ -1834,6 +1924,10 @@ Alamat sril Pian pintang [[Special:Preferences|kakatujuan pamuruk Pian]] akan cu
'noemailtext' => 'Pamuruk ngini kada baisi sabuah alamat suril sah nang diajuakan.',
'nowikiemailtitle' => 'Kadada suril dibulihakan.',
'nowikiemailtext' => 'Pamuruk ngini sudah mamilih kada manarima suril matan papamuruk lain.',
+'emailnotarget' => 'Kada-tasadia atawa ngaranpamuruk kada sah gasan panarima.',
+'emailtarget' => 'Buati ngaranpamuruk panarima',
+'emailusername' => 'Ngaranpamuruk:',
+'emailusernamesubmit' => 'Kirim',
'email-legend' => 'Kirimi sabuah suril ka pamuruk {{SITENAME}} lain',
'emailfrom' => 'Matan:',
'emailto' => 'Hagan:',
@@ -1858,10 +1952,10 @@ Alamat sril Pian pintang [[Special:Preferences|kakatujuan pamuruk Pian]] akan cu
'watchlistanontext' => 'Muhun $1 hagan maniringi atawa mambabak nang dalam daptar itihan Pian.',
'watchnologin' => 'Baluman babuat log',
'watchnologintext' => 'Pian musti [[Special:UserLogin|babuat log]] amun handak magaganti daptar itihan Pian.',
-'addedwatch' => 'Sudah ditambahakan ka daptar itihan',
+'addwatch' => 'Tambahi ka daptar itihan',
'addedwatchtext' => "Tungkaran \"[[:\$1]]\" sudah ditambahakan ke [[Special:Watchlist|daptar itihan]] Pian.
Parubahan-parubahan salanjutnya pada tungkaran ini dan tungkaran pamandiran taraitnya akan takambit di sia, wan tungkaran itu akan ditampaiakan '''kandal''' pada [[Special:RecentChanges|daptar parubahan tahanyar]] cagar labih mudah diitihi.",
-'removedwatch' => 'Sudah dibuang matan daptar itihan',
+'removewatch' => 'Buang matan daptar itihan',
'removedwatchtext' => 'Tungkaran "[[:$1]]" sudah dihapus matan [[Special:Watchlist|daptar itihan]] Pian.',
'watch' => 'Itih',
'watchthispage' => 'Itihi tungkaran ini',
@@ -1882,8 +1976,9 @@ Parubahan-parubahan salanjutnya pada tungkaran ini dan tungkaran pamandiran tara
'watchlist-options' => 'Pilihan daptar itihan',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Maitihi...',
-'unwatching' => 'Kada jadi maitihi...',
+'watching' => 'Maitihi...',
+'unwatching' => 'Kada jadi maitihi...',
+'watcherrortext' => 'Sabuah kasalahan tajadi parhatan setelan paitihan Pian diubah gasan "$1".',
'enotif_mailer' => 'Panyurili pamadahan {{SITENAME}}',
'enotif_reset' => 'Tandai samunyaan tutungkaran sudah diilangi',
@@ -1895,6 +1990,33 @@ Parubahan-parubahan salanjutnya pada tungkaran ini dan tungkaran pamandiran tara
'enotif_lastvisited' => 'Janaki $1 gasan samunyaan parubahan mula Pian pauncitan tadi bailang.',
'enotif_lastdiff' => 'Janaki $1 hagaan maniringi parubahan ngini.',
'enotif_anon_editor' => 'pamuruk kada-bangaran $1',
+'enotif_body' => 'Halo $WATCHINGUSERNAME,
+
+
+Tungkaran $PAGETITLE di {{SITENAME}} sudah $CHANGEDORCREATED pada $PAGEEDITDATE ulih $PAGEEDITOR, janaki $PAGETITLE_URL gasan ralatan wayah ini.
+
+$NEWPAGE
+
+Kasimpulan pambabak: $PAGESUMMARY $PAGEMINOREDIT
+
+Hubungi pambabak:
+suril: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
+
+Kami kada akan mangirim pambaritahuan lain amun ada parubahan labih lanjut sampai Pian mailangi tungkaran ngini.
+Pian kawa jua manyetel-pulang bandira pambaritahuan hagan samunyaan tungkaran nang Pian itihi dalam paitihan Pian.
+
+Sistem kakawalan pambaritahuan {{SITENAME}} Pian
+
+--
+Hagan maubah setelan suril pambaritahuan Piann, ilangi
+{{canonicalurl:{{#special:Preferences}}}}
+
+Hagan maubah setelan paitihan Pian, ilangi
+$UNWATCHURL
+
+kitihan-bulik wan pangganian labih jauh:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Hapus tungkaran',
@@ -1910,7 +2032,7 @@ Parubahan-parubahan salanjutnya pada tungkaran ini dan tungkaran pamandiran tara
Muhun mamastiakan amun Pian handak manggawi ini, bahwasa Pian paham akibatnya, wan apa nang Pian gawi ini sasuai awan [[{{MediaWiki:Policy-url}}|kabijakan {{SITENAME}}]].',
'actioncomplete' => 'Pangulahan tuntung',
'actionfailed' => 'Palakuan luput',
-'deletedtext' => '"<nowiki>$1</nowiki>" sudah tahapus. Lihati $2 sabuah rakaman gasan nang hanyar ni tahapus.',
+'deletedtext' => '"$1" sudah tahapus. Lihati $2 sabuah rakaman gasan nang hanyar ni tahapus.',
'deletedarticle' => 'mahapus "[[$1]]"',
'suppressedarticle' => '"[[$1]]" ditindihakan',
'dellogpage' => 'Log pahapusan',
@@ -1970,7 +2092,7 @@ Janaki [[Special:ProtectedPages|daptar tungkaran talindungi]] gasan daptar parli
'protect_expiry_invalid' => 'Waktu kadaluwarsa kada sah.',
'protect_expiry_old' => 'Waktu kadaluwarsa adalah pada masa bahari.',
'protect-unchain-permissions' => 'Lapas-sunduk pilihan parlindungan labih jauh',
-'protect-text' => "Pian kawa maniring atawa mangganti tingkatan parlindungan gasan tungkaran '''<nowiki>$1</nowiki>''' di sia.",
+'protect-text' => "Pian kawa maniring atawa mangganti tingkatan palindungan gasan tungkaran '''$1''' di sia.",
'protect-locked-blocked' => "Pian kada kawa maubah tingkat parlindungan parhatan diblukir.
Di sia adalah setelan tadamini gasan tungkaran '''$1''':",
'protect-locked-dblock' => "Tingkat parlindungan kada kawa diubah karana ada sabuah sunduk databasis aktip.
@@ -2025,6 +2147,9 @@ Pian kawa maubah tingkatan palindungan gasan tungkaran ini, tagal ini kada pacan
'undeletepagetext' => 'Barikut {{PLURAL:$1|tungkaran sudah dihapus tagal|$1 tutungkaran sudah dihapus tagal}} masih dalam arkip wan kawa disimpan-pulang.
Arkip kawa dibarasihakan bajangka.',
'undelete-fieldset-title' => 'Mambulikakan ralatan',
+'undeleteextrahelp' => "Hagan manyimpan-pulang sabarataan halam tungkaran, tingalakan samunyaan kutak-pariksa kada-dipilih wan klik '''''{{int:undeletebtn}}'''''.
+Hagan manggawi sabuah simpan-pulang, pariksa kukutak tahubung ka raralatan nang handak disimpan-pulang, wan klik
+'''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => "$1 {{PLURAL:$1|ralatan|raralatan}} ta'arsip",
'undeletehistory' => 'Amun Pian manyimpan-pulang tungkaran ngini, samunyaan raralatan akan tasimpan-pulang ka halamnya.
Amun sabuah tungkaran puga awan ngaran sama diulah parhatan pahapusan, raralatan nang disimpan-pulang akan cungul dalam halam sabalumnya.',
@@ -2069,9 +2194,12 @@ $1',
'undelete-show-file-submit' => 'Iya-ai',
# Namespace form on various pages
-'namespace' => 'Ngaran-kamar:',
-'invert' => 'Bulikakan pilihan',
-'blanknamespace' => '(Tatambaian)',
+'namespace' => 'Ngaran-kamar:',
+'invert' => 'Bulikakan pilihan',
+'tooltip-invert' => 'Pariksa kutak ngini hagan manyungkupakan parubahan tutungkaran dalam ngaran-kamar tapilih (wan ngaran-kamar tarait anub dipariksa)',
+'namespace_association' => 'Ngaran-kamat tarait',
+'tooltip-namespace_association' => 'Pariksa kutak ngini hagan maumpatakan jua ngarn-kamar pamandiran atawa judul tarait awan ngaran-kamar tapilih',
+'blanknamespace' => '(Tatambaian)',
# Contributions
'contributions' => 'Sumbangan pamuruk',
@@ -2121,6 +2249,9 @@ Log blukir pahabisannya tasadia di bawah ngini gasan rujukan:',
'whatlinkshere-filters' => 'Saringan',
# Block/unblock
+'autoblockid' => 'Blukir utumatis #$1',
+'block' => 'Blukir pamuruk',
+'unblock' => 'Lapas blukir pamuruk',
'blockip' => 'Blukir pamuruk',
'blockip-title' => 'Blukir pamuruk',
'blockip-legend' => 'Blukir pamuruk',
@@ -2139,6 +2270,7 @@ Isi sabuah alasan khas di bawah (gasan cuntuh, manulisakan tutungkaran nang suah
** Parilaku palecehan/intimidasi
** Panyalahpurukan akun banyak
** Ngaran-pamuruk kada-kawa-ditarima',
+'ipb-hardblock' => 'Cagah pamuruk tadaptar gasan mambabak matan alamat IP ngini',
'ipbcreateaccount' => 'Tangkal paulahan akun',
'ipbemailban' => 'Tangkal pamuruk mangirimi suril',
'ipbenableautoblock' => 'Utumatis blukir alamat IP tauncit dipuruk ulih pamuruk ngini, wan sabarataan aalamat IP nang cuba dipuruk matan',
@@ -2149,9 +2281,15 @@ Isi sabuah alasan khas di bawah (gasan cuntuh, manulisakan tutungkaran nang suah
'ipbotherreason' => 'Alasan lain/tambahan:',
'ipbhidename' => 'Sungkupakan ngaranpamuruk matan babakan wan dadaptar',
'ipbwatchuser' => 'Itihi tutungkaran pamuruk wan pamandiran pamuruk ngini',
+'ipb-disableusertalk' => 'Tangkal pamuruk ngini mambabak tungkaran pamandirannya wayah diblukir',
'ipb-change-block' => 'Blukir pulang pamuruk lawan setelan ngingini',
+'ipb-confirm' => 'Yakinakan blukir',
'badipaddress' => 'Alamat IP kada sah',
'blockipsuccesssub' => 'Pamblukiran ruhui',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] sudah diblukir.<br />
+Janaki [[Special:BlockList|daptar IP dibluk]] hagan maniring-pulang blukir.',
+'ipb-blockingself' => 'Pian pasal mamblukir Pian surang! Bujurkah Pian mahandaki ngitu?',
+'ipb-confirmhideuser' => 'Pian pasal mamblukir saurang pamuruk awan "sungkupakan pamuruk" di-kawa-akan. Ngini akan manikin/kadada ngaran pamuruk dalam samunyaan daptar wan log masukan. Pian yakin kah handak manggawi ngitu?',
'ipb-edit-dropdown' => 'Aalasan pamblukiran babakan',
'ipb-unblock-addr' => 'Mahilangakan blukir $1',
'ipb-unblock' => 'Lapas blukir sabuah ngaranpamuruk atawa alamat IP',
@@ -2161,9 +2299,20 @@ Isi sabuah alasan khas di bawah (gasan cuntuh, manulisakan tutungkaran nang suah
'unblockiptext' => 'Puruk purmulir di bawah hagan manyimpan-pulang hak ungkai manulai sabuah alamat IP atawa ngaran-pamuruk nang sabalumnya diblukir.',
'ipusubmit' => 'Buang blukir ngini',
'unblocked' => '[[User:$1|$1]] sudah dicabut blukirnya',
+'unblocked-range' => '$1 sudah dilapas blukirnya',
'unblocked-id' => 'Blukir $1 sudah dibuang',
+'blocklist' => 'Pamuruk tablukir',
'ipblocklist' => 'Pamuruk tablukir',
'ipblocklist-legend' => 'Ugai saurang pamuruk tablukir',
+'blocklist-userblocks' => 'Sungkupakan pamblukiran akun',
+'blocklist-tempblocks' => 'Sungkupakan pamblukiran samantara',
+'blocklist-addressblocks' => 'Sungkupakan pamblukiran asa IP',
+'blocklist-timestamp' => 'Capwayah',
+'blocklist-target' => 'Tuju',
+'blocklist-expiry' => 'Kadaluwarsa',
+'blocklist-by' => 'Pambakal pamblukir',
+'blocklist-params' => 'Takaran pamblukiran',
+'blocklist-reason' => 'Alasan',
'ipblocklist-submit' => 'Gagai',
'ipblocklist-localblock' => 'Blukir lokal',
'ipblocklist-otherblocks' => '{{PLURAL:$1|pamblukiran|papamblukiran}} lain',
@@ -2189,6 +2338,9 @@ Log blukir disadiakan di bawah gasan rujukan:',
Log panikinan disadiakan di bawah gasan rujukan:',
'blocklogentry' => 'mamblukir [[$1]] sampai wayah $2 $3',
'reblock-logentry' => 'setelan blukir diubah gasan [[$1]] awan sabuah wayah kadaluarsa $2 $3',
+'blocklogtext' => 'Ngini adalah log matan blukir wan lapas-blukir pamuruk.
+Blukir alamat IP utumatis kada didaptar.
+Janaki [[Special:BlockList|daptar IP diblukir]] gasan daptar oparasi diikat wan diblukir tadamini.',
'unblocklogentry' => 'Mahilangakan blukir "$1"',
'block-log-flags-anononly' => 'papamuruk kada bangaran haja',
'block-log-flags-nocreate' => 'Paulahan akun dipajahakan',
@@ -2202,7 +2354,9 @@ Log panikinan disadiakan di bawah gasan rujukan:',
'ipb_expiry_temp' => 'Pamblukiran ngaran-pamuruk tasungkup musti tatap.',
'ipb_hide_invalid' => 'Kada kawa manikin akun ngini; ngini pinanya baisi banyak banar babakan.',
'ipb_already_blocked' => '"$1" sudah diblukir',
+'ipb-needreblock' => '$1 sudah diblukir. Pian handakkah maubah setelan ngini?',
'ipb-otherblocks-header' => '{{PLURAL:$1|pamblukiran|papamblukiran}} lain',
+'unblock-hideuser' => 'Pian kada kawa malapas blukir pamuruk ngini, karana ngaran pamuruknya sudah disungkupakan.',
'ipb_cant_unblock' => 'Kasalahan: ID tablukir $1 kada ta-ugai. Ngini pinanya sudah dilapas-blukirnya.',
'ipb_blocked_as_range' => 'Kasalahan: Alamat IP $1 kada diblukir langsung wan kada kawa dilaps-blukirnya.
Ngini, kayapa pun, diblukir sawagai palihan wilayah $2, nang kawa-ai dilapas-blukirnya.',
@@ -2243,6 +2397,7 @@ Ingatakan hagan [[Special:UnlockDB|malapas sunduk]] habis paharaguan Pian tuntun
'lockfilenotwritable' => 'Barakas data basis disunduk kada kawa ditulisi.
Hagan manyunduk atawa malapas-sunduk data basis, parlu dkawa-akan manulis ulih web server.',
'databasenotlocked' => 'Data basis kada basunduk.',
+'lockedbyandtime' => '(ulih {{GENDER:$1|$1}} pada $2, $3)',
# Move page
'move-page' => 'Pindahakan $1',
@@ -2356,7 +2511,7 @@ Dalam kasus tahanyar Pian kawa jua mamuruk sabuah tautanm gasan cuntuh [[{{#Spec
'allmessagesdefault' => 'Naskah baku pasan',
'allmessagescurrent' => 'Naskah pasan wayahini.',
'allmessagestext' => 'Ngini adalah sabuah daptar pasan sistem tasadia dalam ngaran-kamar MediaWiki.
-Muhun ilangi [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] wan [http://translatewiki.net translatewiki.net] amun Pian hakun manyumbang palukalan ganarik MediaWiki.',
+Muhun ilangi [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] wan [//translatewiki.net translatewiki.net] amun Pian hakun manyumbang palukalan ganarik MediaWiki.',
'allmessagesnotsupportedDB' => "Tungkaran ngini kada kawa dipuruk karana '''\$wgUseDatabaseMessages''' sudah dipajahakan.",
'allmessages-filter-legend' => 'Saringan',
'allmessages-filter' => 'Saringan lawan kaadaan kustom:',
@@ -2522,8 +2677,17 @@ Ngini pinanya dikaranakan ulih sabuah tautan ka sabuah situs daptar-hirang luar.
'spam_blanking' => 'Samunyaan raralatan mangandung tatautan ka $1, dikusungakan',
# Info page
-'infosubtitle' => 'Panjalasan gasan tungkaran',
-'numedits' => 'Rikinan babakan (tungkaran): $1',
+'pageinfo-title' => "Panjalasan gasan ''$1''",
+'pageinfo-header-edits' => 'Babakan',
+'pageinfo-header-watchlist' => 'Paitihan',
+'pageinfo-header-views' => 'Titiringan',
+'pageinfo-subjectpage' => 'Tungkaran',
+'pageinfo-talkpage' => 'Tungkaran pamandiran',
+'pageinfo-watchers' => 'Jumlah papaitih',
+'pageinfo-edits' => 'Rikinan babakan',
+'pageinfo-authors' => 'Rikinan panulis balain',
+'pageinfo-views' => 'Rikinan titiringan',
+'pageinfo-viewsperedit' => 'Titiringan par babakan',
# Patrolling
'markaspatrolleddiff' => 'Ciri-i sawagai ta-awasi',
@@ -2567,10 +2731,11 @@ Manarusakan ngini, kawa manyarang sistem Pian.",
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|tungkaran|tutungkaran}}',
'file-info' => 'takaran barakas: $1, macam MIME: $2',
'file-info-size' => '$1 × $2 piksel, ukuran barakas: $3, tipe MIME: $4',
+'file-info-size-pages' => '$1 × $2 piksal, takaran barakas: $3, macam MIME: $4, $5 {{PLURAL:$5|tungkaran|tutungkaran}}',
'file-nohires' => '<small> kadada tasadia resolusi tapancau.</small>',
'svg-long-desc' => 'Barakas SVG, nominal $1 × $2 piksel, basar barakas: $3',
'show-big-image' => 'Ukuran hibak',
-'show-big-image-thumb' => '<small>Takaran tilikan ngini: $1 × $2 piksal</small>',
+'show-big-image-size' => '$1 × $2 piksal',
'file-info-gif-looped' => 'mambulat',
'file-info-gif-frames' => '$1 {{PLURAL:$1|pigura|pipigura}}',
'file-info-png-looped' => 'mambulat',
@@ -2601,14 +2766,20 @@ Tautan-tautan abis tu pada baris sama dipartimbangkan sabagai pangacualian, nang
'metadata-help' => 'Barakas ini mangandung panjalasan tambahan, mungkin ditambahakan ulih kudakan atawa paundai nang dipurukakan gasan maulah atawa digitalisasi barakas. Amun barakas ini sudah diubah, parincian nang ada mungkin kada sapanuhnya sasuai lawan barakas nang diubah.',
'metadata-expand' => 'Tampaiakan tambahan rincian',
'metadata-collapse' => 'Sungkupakan tambahan rincian',
-'metadata-fields' => 'EXIF metadata tadaptar dalam pasan ini akan masuk dalam tungkaran pancitraan wayah tabel metadata tasungkup. Nang lainnya cagaran babaku tasungkup.
+'metadata-fields' => 'Pancitraan metadata tadaptar dalam pasan ngini akan masuk dalam tungkaran pancitraan wayah tabel metadata tasungkup. Nang lainnya cagaran babaku tasungkup.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Libar',
@@ -2723,10 +2894,79 @@ Tautan-tautan abis tu pada baris sama dipartimbangkan sabagai pangacualian, nang
'exif-gpsareainformation' => 'Ngaran wilayah GPS',
'exif-gpsdatestamp' => 'Tanggal GPS',
'exif-gpsdifferential' => 'Pambujuran bibidaan GPS',
+'exif-jpegfilecomment' => 'Kumintar barakas JPEG',
+'exif-keywords' => 'Ujaran-sunduk',
+'exif-worldregioncreated' => 'Wilayah dunia wadah gambar diambil',
+'exif-countrycreated' => 'Nagara wadah gambar diambil',
+'exif-countrycodecreated' => 'Kudi gasan nagara wadah gambar diambil',
+'exif-provinceorstatecreated' => 'Parupinsi atawa nagara hagian wadah gambar diambil',
+'exif-citycreated' => 'Kuta wadah gambar diambil',
+'exif-sublocationcreated' => 'Sublukasi kuta wadah gambar diambil',
+'exif-worldregiondest' => 'Wilayah dunia ditampaiakan',
+'exif-countrydest' => 'Nagara ditampaiakan',
+'exif-countrycodedest' => 'Kudi gasan nagara ditampaiakan',
+'exif-provinceorstatedest' => 'Parupinsi atawa nagara hagian ditampaiakan',
+'exif-citydest' => 'Kuta ditampaiakan',
+'exif-sublocationdest' => 'Sub-lukasi kuta ditampaiakan',
'exif-objectname' => 'Judul handap',
+'exif-specialinstructions' => 'Instruksi istimiwa',
+'exif-headline' => 'Kapala-garis',
+'exif-credit' => 'Kradit/Panyadia',
+'exif-source' => 'Asal-mula',
+'exif-editstatus' => 'Status editorial gambar',
+'exif-urgency' => 'Urgansi',
+'exif-fixtureidentifier' => 'Ngaran pikstur',
+'exif-locationdest' => 'Lukasi digambarakan',
+'exif-locationdestcode' => 'Kudi lukasi digambarakan',
+'exif-objectcycle' => 'Wayah matan hari nang madia diambil',
+'exif-contact' => 'Kuntak panjalasan',
+'exif-writer' => 'Panulis',
+'exif-languagecode' => 'Bahasa',
+'exif-iimversion' => 'Parsi IIM',
+'exif-iimcategory' => 'Tumbung',
+'exif-iimsupplementalcategory' => 'Tumbung tambahan',
+'exif-datetimeexpires' => 'Ditangati mamuruk sasudah',
+'exif-datetimereleased' => 'Dirilis pada',
+'exif-originaltransmissionref' => 'Kudi lukasi transmisi asli',
+'exif-identifier' => 'Paminandu',
+'exif-lens' => 'Linsa dipuruk',
+'exif-serialnumber' => 'Rikinan seri kudakan',
+'exif-cameraownername' => 'Ampunnya kudakan',
+'exif-label' => 'Label',
+'exif-datetimemetadata' => 'Tanggal mitadata pauncitnya diubah',
+'exif-nickname' => 'Galaran gambar',
+'exif-rating' => 'Dabit (matan 5)',
+'exif-rightscertificate' => 'Sartipikat hak kalula',
+'exif-copyrighted' => 'Status hak-rekap',
+'exif-copyrightowner' => 'Pangampunnya hak-rekap',
+'exif-usageterms' => 'Katantuan mamuruk',
+'exif-webstatement' => 'Parnyataan hak-rekap daring',
+'exif-originaldocumentid' => 'ID unik dukumin asli',
+'exif-licenseurl' => 'URL lisansi hak-rekap',
+'exif-morepermissionsurl' => 'Panjalasan lisansi altarnatip',
+'exif-attributionurl' => 'Rahatan mamuruk-pulang gawian ngini, muhun tautakan ka',
+'exif-preferredattributionname' => 'Rahatan mamuruk-pulang gawian ngini, muhun bari kradit',
+'exif-pngfilecomment' => 'Kumintar barakas PNG',
+'exif-disclaimer' => 'Panyangkalan',
+'exif-contentwarning' => 'Paringatan isi',
+'exif-giffilecomment' => 'Kumintar barakas GIF',
+'exif-intellectualgenre' => 'Macanm barang',
+'exif-subjectnewscode' => 'Kudi subjek',
+'exif-scenecode' => 'Kudi pamandangan IPTC',
+'exif-event' => 'Kajadian nang digambarakan',
+'exif-organisationinimage' => 'Urganisasi nang digambarakan',
+'exif-personinimage' => 'Urang nang digambarakan',
+'exif-originalimageheight' => 'Pancau gambar sabalum dihandapi',
+'exif-originalimagewidth' => 'Lingai gambar sabalum dihandapi',
# EXIF attributes
'exif-compression-1' => 'Kada dikumpris',
+'exif-compression-2' => 'Galambang CCITT 3 1-Dimensional Modified Huffman manjalankan panjang encoding',
+'exif-compression-3' => 'Galambang CCITT 3 paks encoding',
+'exif-compression-4' => 'Galambang CCITT 4 paks encoding',
+
+'exif-copyrighted-true' => 'Bahak-rekap',
+'exif-copyrighted-false' => 'Dumain publik',
'exif-unknowndate' => 'Tanggal kada dikatahui',
@@ -2742,6 +2982,8 @@ Tautan-tautan abis tu pada baris sama dipartimbangkan sabagai pangacualian, nang
'exif-planarconfiguration-1' => 'purmat chunky',
'exif-planarconfiguration-2' => 'purmat planar',
+'exif-colorspace-65535' => 'Kada-dikalibrasi',
+
'exif-componentsconfiguration-0' => 'Kadada tasadia',
'exif-exposureprogram-0' => 'Kada tadapinisi',
@@ -2816,9 +3058,15 @@ Tautan-tautan abis tu pada baris sama dipartimbangkan sabagai pangacualian, nang
'exif-contrast-0' => 'Nurmal',
+'exif-dc-rights' => 'Hak',
+
+'exif-iimcategory-wea' => 'Cuaca',
+
+'exif-urgency-normal' => 'Nurmal ($1)',
+
# External editor support
'edit-externally' => 'Babak barakas ini puruk sabuah aplikasi luar',
-'edit-externally-help' => '(Lihati [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] untuk panjalasan labih)',
+'edit-externally-help' => '(Lihati [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] untuk panjalasan labih)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'samunyaan',
@@ -2839,6 +3087,12 @@ Tautan-tautan abis tu pada baris sama dipartimbangkan sabagai pangacualian, nang
# action=purge
'confirm_purge_button' => 'OK',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Tambahi tungkaran ngini ka paitihan Pian?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Buang tungkaran ini matan paitihan Pian?',
+
# Multipage image navigation
'imgmultipageprev' => '↠tungkaran sabalumnya',
'imgmultipagenext' => 'tungkaran barikutnya →',
@@ -2881,20 +3135,22 @@ Tautan-tautan abis tu pada baris sama dipartimbangkan sabagai pangacualian, nang
'filepath-submit' => 'Gagai',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Gagai gasan babarakas baganda',
-'fileduplicatesearch-legend' => 'Gagai gasan sabuah panggandaan',
-'fileduplicatesearch-filename' => 'Ngaran barakas:',
-'fileduplicatesearch-submit' => 'Gagai',
-'fileduplicatesearch-info' => '$1 × $2 piksel, <br />takaran barakas: $3, <br />macam MIME: $4',
-'fileduplicatesearch-result-1' => "Barakas ''$1'' kada baisi panggandaan parsis.",
-'fileduplicatesearch-result-n' => "Barakas ''$1'' baisi {{PLURAL:$2|1 panggandaan parsis|$2 papanggandaan parsis}}.",
+'fileduplicatesearch' => 'Gagai gasan babarakas baganda',
+'fileduplicatesearch-summary' => 'Gagai gasan babarakas baganda bapandal nilai hash.',
+'fileduplicatesearch-legend' => 'Gagai gasan sabuah panggandaan',
+'fileduplicatesearch-filename' => 'Ngaran barakas:',
+'fileduplicatesearch-submit' => 'Gagai',
+'fileduplicatesearch-info' => '$1 × $2 piksel, <br />takaran barakas: $3, <br />macam MIME: $4',
+'fileduplicatesearch-result-1' => "Barakas ''$1'' kada baisi panggandaan parsis.",
+'fileduplicatesearch-result-n' => "Barakas ''$1'' baisi {{PLURAL:$2|1 panggandaan parsis|$2 papanggandaan parsis}}.",
+'fileduplicatesearch-noresults' => "Kadada barakas bangaran ''$1'' taugai.",
# Special:SpecialPages
'specialpages' => 'Tungkaran istimiwa',
'specialpages-note' => '----
-Pamaparan tampaian:
-* Tungkaran istimiwa normal
-* <strong class="mw-specialpagerestricted">Tungkaran istimiwa tahinggan</strong>',
+* Tutungkaran istimiwa normal
+* <span class="mw-specialpagerestricted">Tutungkaran istimiwa tabatas.</span>
+* <span class="mw-specialpagecached">Tutungkaran istimiwa timbuluk (pinanya bakulat).</span>',
'specialpages-group-maintenance' => 'Lapuran pamaliharaan',
'specialpages-group-other' => 'Tungkaran istimiwa lainnya',
'specialpages-group-login' => 'Babuat log / mandaptar',
diff --git a/languages/messages/MessagesBm.php b/languages/messages/MessagesBm.php
index 07caedd1..58fe47fd 100644
--- a/languages/messages/MessagesBm.php
+++ b/languages/messages/MessagesBm.php
@@ -48,7 +48,6 @@ $messages = array(
'searcharticle' => 'Taa',
'history' => 'Nyɛka tariku',
'history_short' => 'Tariku',
-'info_short' => 'Kunnafoni',
'edit' => 'yɛlɛma',
'editthispage' => 'Nyɛ nin yɛlɛma',
'newpage' => 'NyÉ› kura',
diff --git a/languages/messages/MessagesBn.php b/languages/messages/MessagesBn.php
index 9f9bf851..03fcf9e4 100644
--- a/languages/messages/MessagesBn.php
+++ b/languages/messages/MessagesBn.php
@@ -11,7 +11,9 @@
* @author Bellayet
* @author Ehsanulhb
* @author Jayantanth
+ * @author Mayeenul Islam
* @author Prometheus.pyrphoros
+ * @author RIPENDIL
* @author Reedy
* @author Samritmaity
* @author Usarker
@@ -91,8 +93,8 @@ $messages = array(
'tog-shownumberswatching' => 'নজরদারী করছে, à¦à¦®à¦¨ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° সংখà§à¦¯à¦¾ দেখানো হোক',
'tog-oldsig' => 'সà§à¦¬à¦¾à¦•à§à¦·à¦°à§‡à¦° পà§à¦°à¦¾à¦•à¦¦à¦°à§à¦¶à¦¨:',
'tog-fancysig' => 'সà§à¦¬à¦¾à¦•à§à¦·à¦°à¦•à§‡ উইকিটেকà§à¦¸à¦Ÿ হিসেবে মনে করà§à¦¨ (কোন সয়ংকà§à¦°à¦¿à¦¯à¦¼ লিঙà§à¦• ছাড়া)',
-'tog-externaleditor' => 'শà§à¦°à§à¦¤à§‡à¦‡ বহিঃসà§à¦¥ সমà§à¦ªà¦¾à¦¦à¦• বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হোক (শà§à¦§à§à¦®à¦¾à¦¤à§à¦° দকà§à¦· বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦° জনà§à¦¯, কমà§à¦ªà¦¿à¦‰à¦Ÿà¦¾à¦°à§‡ বিশেষ সেটিংস à¦à¦° পà§à¦°à¦¯à¦¼à¦œà§‹à¦¨à¥¤ [http://www.mediawiki.org/wiki/Manual:External_editors বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ তথà§à¦¯à¥¤])',
-'tog-externaldiff' => 'শà§à¦°à§à¦¤à§‡à¦‡ বহিঃসà§à¦¥ পারà§à¦¥à¦•à§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হোক (শà§à¦§à§à¦®à¦¾à¦¤à§à¦° দকà§à¦· বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦° জনà§à¦¯, কমà§à¦ªà¦¿à¦‰à¦Ÿà¦¾à¦°à§‡ বিশেষ সেটিংস à¦à¦° পà§à¦°à¦¯à¦¼à¦œà§‹à¦¨à¥¤ [http://www.mediawiki.org/wiki/Manual:External_editors বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ তথà§à¦¯à¥¤])',
+'tog-externaleditor' => 'শà§à¦°à§à¦¤à§‡à¦‡ বহিঃসà§à¦¥ সমà§à¦ªà¦¾à¦¦à¦• বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হোক (শà§à¦§à§à¦®à¦¾à¦¤à§à¦° দকà§à¦· বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦° জনà§à¦¯, কমà§à¦ªà¦¿à¦‰à¦Ÿà¦¾à¦°à§‡ বিশেষ সেটিংস à¦à¦° পà§à¦°à¦¯à¦¼à¦œà§‹à¦¨à¥¤ [//www.mediawiki.org/wiki/Manual:External_editors বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ তথà§à¦¯à¥¤])',
+'tog-externaldiff' => 'শà§à¦°à§à¦¤à§‡à¦‡ বহিঃসà§à¦¥ পারà§à¦¥à¦•à§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হোক (শà§à¦§à§à¦®à¦¾à¦¤à§à¦° দকà§à¦· বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦° জনà§à¦¯, কমà§à¦ªà¦¿à¦‰à¦Ÿà¦¾à¦°à§‡ বিশেষ সেটিংস à¦à¦° পà§à¦°à¦¯à¦¼à¦œà§‹à¦¨à¥¤ [//www.mediawiki.org/wiki/Manual:External_editors বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ তথà§à¦¯à¥¤])',
'tog-showjumplinks' => '"à¦à¦¾à¦à¦ª দিন" বৈশিষà§à¦Ÿà§à¦¯à§‡à¦° সংযোগ চালৠকরা হোক',
'tog-uselivepreview' => 'তাৎকà§à¦·à¦£à¦¿à¦• পà§à¦°à¦¾à¦•à¦¦à¦°à§à¦¶à¦¨à§‡à¦° কà§à¦·à¦®à¦¤à¦¾ চালৠকরা হোক (জাভাসà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ) (পরীকà§à¦·à¦¾à¦®à§‚লক)',
'tog-forceeditsummary' => 'খালি সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ সারাংশ পà§à¦°à¦¬à§‡à¦¶ করানোর সময় আমাকে জানানো হোক',
@@ -188,15 +190,7 @@ $messages = array(
'listingcontinuesabbrev' => 'আরও আছে',
'index-category' => 'নিরà§à¦˜à¦£à§à¦Ÿ পাতা',
'noindex-category' => 'নিরà§à¦˜à¦£à§à¦Ÿ নয় à¦à¦®à¦¨ পাতা',
-
-'mainpagetext' => "'''মিডিয়াউইকি সফলভাবে ইনà§à¦¸à¦Ÿà¦² করা হয়েছে।'''",
-'mainpagedocfooter' => 'কী ভাবে উইকি সফটওয়à§à¦¯à¦¾à¦°à¦Ÿà¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦° করবেন, তা জানতে [http://meta.wikimedia.org/wiki/Help:Contents বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ সহায়িকা] দেখà§à¦¨à¥¤
-
-== কোথা থেকে শà§à¦°à§ করবেন ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings কনফিগারেশন সেটিংস তালিকা]
-* [http://www.mediawiki.org/wiki/Manual:FAQ পà§à¦°à¦¶à§à¦¨à§‹à¦¤à§à¦¤à¦°à§‡ মিডিয়াউইকি]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce মিডিয়াউইকি রিলিজের মেইলিং লিসà§à¦Ÿ]',
+'broken-file-category' => 'অকারà§à¦¯à¦•à¦° চিতà§à¦° সংযোগসহ পাতাসমূহ',
'about' => 'বৃতà§à¦¤à¦¾à¦¨à§à¦¤',
'article' => 'বিষয়বসà§à¦¤à§ আছে à¦à¦®à¦¨ পাতা',
@@ -248,10 +242,10 @@ $messages = array(
'history' => 'পাতার ইতিহাস',
'history_short' => 'ইতিহাস',
'updatedmarker' => 'আমার শেষ পরিদরà§à¦¶à¦¨à§‡à¦° পর থেকে হালনাগাদকৃত',
-'info_short' => 'তথà§à¦¯',
'printableversion' => 'ছাপার যোগà§à¦¯ সংসà§à¦•à¦°à¦£',
'permalink' => 'সà§à¦¥à¦¾à¦¯à¦¼à§€ সংযোগ',
'print' => 'মà§à¦¦à§à¦°à¦£',
+'view' => 'দেখাও',
'edit' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾',
'create' => 'তৈরি করো',
'editthispage' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করà§à¦¨',
@@ -259,6 +253,7 @@ $messages = array(
'delete' => 'মà§à¦›à§‡ ফেলà§à¦¨',
'deletethispage' => 'à¦à¦‡ পাতাটি মà§à¦›à§‡ ফেলà§à¦¨',
'undelete_short' => 'পà§à¦¨à¦ƒà¦¸à§à¦¥à¦¾à¦ªà¦¨ {{PLURAL:$1|১টি সমà§à¦ªà¦¾à¦¦à¦¨à¦¾|$1টি সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦¸à¦®à§‚হ}}',
+'viewdeleted_short' => '{{PLURAL:$1| টি অপসারিত সমà§à¦ªà¦¾à¦¦à¦¨à¦¾|$1 টি অপসারিত সমà§à¦ªà¦¾à¦¦à¦¨à¦¾}} দেখাও',
'protect' => 'সà§à¦°à¦•à§à¦·à¦¾',
'protect_change' => 'পরিবরà§à¦¤à¦¨ করà§à¦¨',
'protectthispage' => 'সংরকà§à¦·à¦£ করà§à¦¨',
@@ -342,6 +337,8 @@ $1',
'toc' => 'পরিচà§à¦›à§‡à¦¦à¦¸à¦®à§‚হ',
'showtoc' => 'দেখাও',
'hidetoc' => 'আড়ালে রাখো',
+'collapsible-collapse' => 'সংকোচন',
+'collapsible-expand' => 'পà§à¦°à¦¸à¦¾à¦°à¦£',
'thisisdeleted' => '$1 দেখানো বা পà§à¦¨à¦ƒà¦¸à§ƒà¦·à§à¦Ÿà¦¿ করা হোক?',
'viewdeleted' => '$1 দেখানো হোক?',
'restorelink' => '{{PLURAL:$1|à¦à¦•à¦Ÿà¦¿ মà§à¦›à§‡ ফেলা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾|$1টি মà§à¦›à§‡ ফেলা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾}}',
@@ -354,6 +351,8 @@ $1',
'page-atom-feed' => '"$1" অà§à¦¯à¦¾à¦Ÿà¦® ফিড',
'feed-atom' => 'অà§à¦¯à¦¾à¦Ÿà¦®',
'red-link-title' => '$1 (পাতা নেই)',
+'sort-descending' => 'উলà§à¦Ÿà§‹ বরà§à¦£à¦•à§à¦°à¦®à§‡ সাজাও',
+'sort-ascending' => 'বরà§à¦£à¦¾à¦¨à§à¦•à§à¦°à¦®à§‡ সাজাও',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'পাতা',
@@ -436,12 +435,13 @@ $1',
'protectedpagetext' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ à¦à¦¡à¦¼à¦¾à¦¤à§‡ ঠপাতাটির বà§à¦¯à¦¬à¦¹à¦¾à¦° নিয়নà§à¦¤à§à¦°à¦£ করা হয়েছে।',
'viewsourcetext' => 'ঠপাতাটি আপনি দেখতে à¦à¦¬à¦‚ উৎসের অনà§à¦²à¦¿à¦ªà¦¿ নিতে পারবেন:',
'protectedinterface' => 'à¦à¦‡ পাতার বিষয়বসà§à¦¤à§ উইকি সফটওয়à§à¦¯à¦¾à¦°à§‡à¦° à¦à¦•à¦Ÿà¦¿ ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸ বারà§à¦¤à¦¾ পà§à¦°à¦¦à¦¾à¦¨ করে, তাই à¦à¦Ÿà¦¿à¦•à§‡ সà§à¦°à¦•à§à¦·à¦¿à¦¤ করে রাখা হয়েছে।',
-'editinginterface' => "'''সতরà§à¦•à§€à¦•à¦°à¦£:''' আপনি à¦à¦®à¦¨ à¦à¦•à¦Ÿà¦¿ পাতা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করছেন যা সফটওয়à§à¦¯à¦¾à¦°à§‡à¦° জনà§à¦¯ ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸ টেকà§à¦¸à¦Ÿ পà§à¦°à¦¦à¦¾à¦¨ করে। à¦à¦‡ পাতাতে সংঘটিত পরিবরà§à¦¤à¦¨ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸à§‡ পà§à¦°à¦­à¦¾à¦¬ ফেলবে, যা অনà§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦°à¦¾ দেখতে পাবেন। অনà§à¦¬à¦¾à¦¦à§‡à¦° জনà§à¦¯ অনà§à¦—à§à¦°à¦¹ করে [http://translatewiki.net/wiki/Main_Page?setlang=bn translatewiki.net] বà§à¦¯à¦¬à¦¹à¦¾à¦° করার বà§à¦¯à¦¾à¦ªà¦¾à¦°à¦Ÿà¦¿ বিবেচনা করà§à¦¨à¥¤ à¦à¦Ÿà¦¿ মিডিয়াউইকি সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à¦°à¦£ পà§à¦°à¦•à¦²à§à¦ªà¥¤",
+'editinginterface' => "'''সতরà§à¦•à§€à¦•à¦°à¦£:''' আপনি à¦à¦®à¦¨ à¦à¦•à¦Ÿà¦¿ পাতা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করছেন যা সফটওয়à§à¦¯à¦¾à¦°à§‡à¦° জনà§à¦¯ ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸ টেকà§à¦¸à¦Ÿ পà§à¦°à¦¦à¦¾à¦¨ করে। à¦à¦‡ পাতাতে সংঘটিত পরিবরà§à¦¤à¦¨ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸à§‡ পà§à¦°à¦­à¦¾à¦¬ ফেলবে, যা অনà§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦°à¦¾ দেখতে পাবেন। অনà§à¦¬à¦¾à¦¦à§‡à¦° জনà§à¦¯ অনà§à¦—à§à¦°à¦¹ করে [//translatewiki.net/wiki/Main_Page?setlang=bn translatewiki.net] বà§à¦¯à¦¬à¦¹à¦¾à¦° করার বà§à¦¯à¦¾à¦ªà¦¾à¦°à¦Ÿà¦¿ বিবেচনা করà§à¦¨à¥¤ à¦à¦Ÿà¦¿ মিডিয়াউইকি সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à¦°à¦£ পà§à¦°à¦•à¦²à§à¦ªà¥¤",
'sqlhidden' => '(à¦à¦¸ কিউ à¦à¦² কোয়েরি লà§à¦•à¦¾à¦¨à§‹ আছে)',
'cascadeprotected' => 'à¦à¦‡ পাতাটি সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ থেকে সà§à¦°à¦•à§à¦·à¦¿à¦¤, কারণ পাতাটি নিচের {{PLURAL:$1|টি পাতার|টি পাতার}} অনà§à¦¤à¦°à§à¦—ত, যে পাতা(গà§à¦²à¦¿) "পà§à¦°à¦ªà¦¾à¦¤à¦¾à¦•à¦¾à¦°" (cascading) বৈশিষà§à¦Ÿà§à¦¯ সহযোগে সà§à¦°à¦•à§à¦·à¦¿à¦¤ করা হয়েছে:
$2',
'namespaceprotected' => "'''$1''' নামসà§à¦¥à¦¾à¦¨à§‡ কোন পাতা আপনার সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করার অনà§à¦®à¦¤à¦¿ নেই।",
-'customcssjsprotected' => 'আপনার ঠপাতা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করার অনà§à¦®à¦¤à¦¿ নেই, কারণ ঠপাতায় অনà§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত বিষয়বসà§à¦¤à§ আছে।',
+'customcssprotected' => 'আপনার à¦à¦‡ সিà¦à¦¸à¦à¦¸ পাতাটি সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করার অনà§à¦®à¦¤à¦¿ নেই, কারণ ঠপাতায় অনà§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° নিজসà§à¦¬ সেটিংস রয়েছে।',
+'customjsprotected' => 'আপনার à¦à¦‡ জাভাসà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ পাতাটি সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করার অনà§à¦®à¦¤à¦¿ নেই, কারণ ঠপাতায় অনà§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° নিজসà§à¦¬ সেটিংস রয়েছে।',
'ns-specialprotected' => '{{ns:special}} নামসà§à¦¥à¦¾à¦¨à§‡ পাতাসমূহ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করা যাবে না।',
'titleprotected' => "[[User:$1|$1]]-কে à¦à¦‡ শিরোনামের পাতা সৃষà§à¦Ÿà¦¿ করতে বাধা দেয়া হচà§à¦›à§‡à¥¤ কারণ: ''$2''।",
@@ -478,6 +478,7 @@ $2',
'createaccount' => 'নতà§à¦¨ অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ খà§à¦²à§à¦¨',
'gotaccount' => "আপনার কি ইতিমধà§à¦¯à§‡ à¦à¦•à¦Ÿà¦¿ অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ তৈরি করা আছে? '''$1''' করà§à¦¨à¥¤",
'gotaccountlink' => 'পà§à¦°à¦¬à§‡à¦¶',
+'userlogin-resetlink' => 'আপনার লগইনের বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ তথà§à¦¯à¦¾à¦¦à¦¿ ভà§à¦²à§‡ গেছেন?',
'createaccountmail' => 'ই-মেইলের মাধà§à¦¯à¦®à§‡',
'createaccountreason' => 'কারণ:',
'badretype' => 'শবà§à¦¦à¦šà¦¾à¦¬à¦¿ (password) দà§à¦Ÿà¦¿ মিলছেনা।',
@@ -487,13 +488,15 @@ $2',
'createaccounterror' => 'অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ তৈরি হয়নি: $1',
'nocookiesnew' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà¦Ÿà¦¿ সৃষà§à¦Ÿà¦¿ করা হয়েছে, কিনà§à¦¤à§ আপনি à¦à¦–নও অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà§‡ পà§à¦°à¦¬à§‡à¦¶ করেননি। {{SITENAME}}-তে কà§à¦•à¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করে বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦° অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà§‡ পà§à¦°à¦¬à§‡à¦¶ করানো হয়। আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à§‡ কà§à¦•à¦¿à¦—à§à¦²à¦¿ নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼ করা আছে। অনà§à¦—à§à¦°à¦¹ করে কà§à¦•à¦¿à¦—à§à¦²à¦¿ সকà§à¦°à¦¿à¦¯à¦¼ করà§à¦¨ à¦à¦¬à¦‚ আপনার নতà§à¦¨ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম ও শবà§à¦¦à¦šà¦¾à¦¬à¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করে অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà§‡ পà§à¦°à¦¬à§‡à¦¶ করà§à¦¨à¥¤',
'nocookieslogin' => '{{SITENAME}} ঠকà§à¦•à¦¿ (cookies) à¦à¦° মাধà§à¦¯à¦®à§‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦° লগ-ইন সমà§à¦ªà¦¨à§à¦¨ করা হয়। আপনার বà§à¦°à¦¾à¦Šà¦œà¦¾à¦°à§‡ কà§à¦•à¦¿ বনà§à¦§ করে দেওয়া আছে। কà§à¦•à¦¿ চালৠকরে আবার চেষà§à¦Ÿà¦¾ করà§à¦¨à¥¤',
+'nocookiesfornew' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ তৈরি হয়নি, কারণ à¦à¦° উৎস সমà§à¦ªà¦°à§à¦•à§‡ আমরা নিশà§à¦šà¦¿à¦¤ নই।
+নিশà§à¦šà¦¿à¦¤ করà§à¦¨ আপনার কà§à¦•à¦¿ সকà§à¦°à¦¿à¦¯à¦¼ রয়েছে, পাতাটি পà§à¦¨à¦°à¦¾à¦¯à¦¼ লোড করে আবার চেষà§à¦Ÿà¦¾ করà§à¦¨à¥¤',
'noname' => 'আপনি সঠিক বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করেননি।',
'loginsuccesstitle' => 'পà§à¦°à¦¬à§‡à¦¶ সফল',
'loginsuccess' => "'''আপনি à¦à¦‡à¦®à¦¾à¦¤à§à¦° \"\$1\" নামে {{SITENAME}}-তে পà§à¦°à¦¬à§‡à¦¶ করেছেন।'''",
'nosuchuser' => '"$1" নামে কোন বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নেই।
বà§à¦¯à¦¬à¦¹à¦¾à¦•à¦¾à¦°à§€ নাম আকার সংবেদনশীল।
আপনার বানান পরীকà§à¦·à¦¾ করে দেখà§à¦¨, অথবা [[Special:UserLogin/signup|নতà§à¦¨ à¦à¦•à¦Ÿà¦¿ অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ খà§à¦²à§à¦¨]]।',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" নামের কোন বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নেই। নামের বানান পরীকà§à¦·à¦¾ করà§à¦¨à¥¤',
+'nosuchusershort' => '"$1" নামের কোন বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নেই। নামের বানান পরীকà§à¦·à¦¾ করà§à¦¨à¥¤',
'nouserspecified' => 'আপনাকে অবশà§à¦¯à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করতে হবে।',
'login-userblocked' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ বাধা দেওয়া হয়েছে। লগ-ইন সমà§à¦­à¦¬ নয়।',
'wrongpassword' => 'আপনি ভà§à¦² শবà§à¦¦à¦šà¦¾à¦¬à¦¿ (password) বà§à¦¯à¦¬à¦¹à¦¾à¦° করেছেন। অনà§à¦—à§à¦°à¦¹ করে আবার চেষà§à¦Ÿà¦¾ করà§à¦¨à¥¤',
@@ -532,13 +535,14 @@ $2',
'usernamehasherror' => 'বà§à¦¯à¦¬à¦•à¦¾à¦°à¦•à¦¾à¦°à§€ নামে হà§à¦¯à¦¾à¦¸ বরà§à¦£ থাকতে পারবে না',
'login-throttled' => 'আপনি সামà§à¦ªà§à¦°à¦¤à¦¿à¦• পরপর বেশ কয়েকবার পà§à¦°à¦¬à§‡à¦¶à§‡à¦° চেষà§à¦Ÿà¦¾ করেছেন।
পà§à¦¨à¦°à¦¾à¦¯à¦¼ চেষà§à¦Ÿà¦¾ করার পূরà§à¦¬à§‡ অনà§à¦—à§à¦°à¦¹ করে কিছà§à¦•à§à¦·à¦£ অপেকà§à¦·à¦¾ করà§à¦¨à¥¤',
+'login-abort-generic' => 'আপনার লগইন সফল ছিলো না - বাতিল করা হয়েছে',
'loginlanguagelabel' => 'ভাষা: $1',
'suspicious-userlogout' => 'আপনার পà§à¦°à¦¸à§à¦¥à¦¾à¦¨à§‡à¦° অনà§à¦°à§‹à¦§ বাতিল হয়েছে কারণ অনà§à¦®à¦¿à¦¤ যে আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦° অসমà§à¦ªà§‚রà§à¦£ অথবা পূবরà§à¦¬à¦¤à§€ তথà§à¦¯ পà§à¦°à§‡à¦°à¦£ করেছে।',
# E-mail sending
'php-mail-error-unknown' => 'পিà¦à¦‡à¦šà¦ªà¦¿ à¦à¦° মেইল () কারà§à¦¯à§‡ অজà§à¦žà¦¾à¦¤ ভà§à¦²',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'শবà§à¦¦à¦šà¦¾à¦¬à¦¿ পরিবরà§à¦¤à¦¨',
'resetpass_announce' => 'আপন ই-মেইলকৃত সংকেত দà§à¦¬à¦¾à¦°à¦¾ লগ-ইন আছেন। লগ-ইন পদà§à¦§à¦¤à¦¿ সমà§à¦ªà§‚রà§à¦£ করতে আপনাকে অবশà§à¦¯à¦‡ à¦à¦•à¦Ÿà¦¿ নতà§à¦¨ শবà§à¦¦à¦šà¦¾à¦¬à¦¿ গà§à¦°à¦¹à¦£ করতে হবে:',
'resetpass_text' => '<!-- à¦à¦–ানে লেখা যোগ করà§à¦¨ -->',
@@ -556,6 +560,39 @@ $2',
সমà§à¦­à¦¬à¦¤à¦ƒ আপনি ইতোমধà§à¦¯à§‡à¦‡ সফলভাবে আপনার শবà§à¦¦à¦šà¦¾à¦¬à¦¿à¦Ÿà¦¿ পরিবরà§à¦¤à¦¨ করেছেন অথবা à¦à¦•à¦Ÿà¦¿ নতà§à¦¨ অসà§à¦¥à¦¾à¦¯à¦¼à§€ শবà§à¦¦à¦šà¦¾à¦¬à¦¿à¦° জনà§à¦¯ অনà§à¦°à§‹à¦§ করেছেন।',
'resetpass-temp-password' => 'অসà§à¦¥à¦¾à¦¯à¦¼à§€ শবà§à¦¦à¦šà¦¾à¦¬à¦¿:',
+# Special:PasswordReset
+'passwordreset' => 'শবà§à¦¦à¦šà¦¾à¦¬à¦¿ রিসেট',
+'passwordreset-text' => 'আপনার অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà§‡à¦° বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ তথà§à¦¯ ই-মেইলের মাধà§à¦¯à¦®à§‡ পেতে নিচের ফরà§à¦®à¦Ÿà¦¿ পূরণ করà§à¦¨à¥¤',
+'passwordreset-legend' => 'শবà§à¦¦à¦šà¦¾à¦¬à¦¿ রিসেট',
+'passwordreset-disabled' => 'à¦à¦‡ উইকিতে শবà§à¦¦à¦šà¦¾à¦¬à¦¿ রিসেটের সà§à¦¬à¦¿à¦§à¦¾ নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼ রয়েছে।',
+'passwordreset-pretext' => '{{PLURAL:$1||নিচে উলà§à¦²à§‡à¦–িত ডেটাগà§à¦²à§‹à¦° কোনো à¦à¦•à¦Ÿà¦¿ পà§à¦°à¦¬à§‡à¦¶ করান}}',
+'passwordreset-username' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম:',
+'passwordreset-email' => 'ইমেইল ঠিকানা:',
+'passwordreset-emailtitle' => '{{SITENAME}} সাইটে বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ তথà§à¦¯à¦¾à¦¦à¦¿',
+'passwordreset-emailtext-ip' => 'কেউ à¦à¦•à¦œà¦¨ (সমà§à¦­à¦¬à¦¤ আপনি, $1 আইপি ঠিকানা থেকে) {{SITENAME}} ($4) সাইটের জনà§à¦¯ আপনার
+অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà§‡à¦° বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ তথà§à¦¯ জানতে চেয়েছে। নিচের বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ {{PLURAL:$3|অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà¦Ÿà¦¿|অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà¦—à§à¦²à§‹}}
+à¦à¦‡ ই-মেইল ঠিকানার সাথে সংযà§à¦•à§à¦¤:
+
+$2
+
+{{PLURAL:$3|à¦à¦‡ অসà§à¦¥à¦¾à¦¯à¦¼à§€ পাসওয়ারà§à¦¡à¦Ÿà¦¿|à¦à¦‡ অসà§à¦¥à¦¾à¦¯à¦¼à§€ পাসওয়ারà§à¦¡à¦—à§à¦²à§‹}} আগামী {{PLURAL:$5|à¦à¦• দিন|$5 দিন}} পর মেয়াদোতà§à¦¤à§€à¦°à§à¦£ হয়ে যাবে।
+আপনার অবশà§à¦¯à¦‡ লগ-ইন করে à¦à¦•à¦Ÿà¦¿ নতà§à¦¨ পাসওয়ারà§à¦¡ পছনà§à¦¦ করা উচিত। যদি অনà§à¦¯ কেউ à¦à¦‡ অনà§à¦°à§‹à¦§ করে থাকে,
+অথবা আপনি যদি পà§à¦°à§‹à¦¨à§‹ পাসওয়ারà§à¦¡ মনে করতে পারেন, à¦à¦¬à¦‚ আপনার সেটি পরিবরà§à¦¤à¦¨ করার কোনো ইচà§à¦›à¦¾ না থাকে, তবে
+আপনি à¦à¦‡ বারà§à¦¤à¦¾à¦Ÿà¦¿ উপেকà§à¦·à¦¾ করতে পারে, à¦à¦¬à¦‚ আপনার পà§à¦°à§‹à¦¨à§‹ পাসওয়ারà§à¦¡ বà§à¦¯à¦¬à¦¹à¦¾à¦° করা চালিয়ে যেতে পারেন।',
+'passwordreset-emailtext-user' => 'কেউ à¦à¦•à¦œà¦¨ (সমà§à¦­à¦¬à¦¤ আপনি, $1 আইপি ঠিকানা থেকে) {{SITENAME}} ($4) সাইটের জনà§à¦¯ আপনার
+অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà§‡à¦° à¦à¦•à¦Ÿà¦¿ পাসওয়ারà§à¦¡ রিমাইনà§à¦¡à¦¾à¦° চেয়ে পাঠিয়েছে। নিচের বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ {{PLURAL:$3|অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà¦Ÿà¦¿|অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà¦—à§à¦²à§‹}}
+à¦à¦‡ ই-মেইল ঠিকানার সাথে সংযà§à¦•à§à¦¤:
+
+$2
+
+{{PLURAL:$3|à¦à¦‡ অসà§à¦¥à¦¾à¦¯à¦¼à§€ পাসওয়ারà§à¦¡à¦Ÿà¦¿|à¦à¦‡ অসà§à¦¥à¦¾à¦¯à¦¼à§€ পাসওয়ারà§à¦¡à¦—à§à¦²à§‹}} আগামী {{PLURAL:$5|à¦à¦• দিন|$5 দিন}} পর মেয়াদোতà§à¦¤à§€à¦°à§à¦£ হয়ে যাবে।
+আপনার অবশà§à¦¯à¦‡ লগ-ইন করে à¦à¦•à¦Ÿà¦¿ নতà§à¦¨ পাসওয়ারà§à¦¡ পছনà§à¦¦ করা উচিত। যদি অনà§à¦¯ কেউ à¦à¦‡ অনà§à¦°à§‹à¦§ করে থাকে,
+অথবা আপনি যদি পà§à¦°à§‹à¦¨à§‹ পাসওয়ারà§à¦¡ মনে করতে পারেন, à¦à¦¬à¦‚ আপনার সেটি পরিবরà§à¦¤à¦¨ করার কোনো ইচà§à¦›à¦¾ না থাকে, তবে
+আপনি à¦à¦‡ বারà§à¦¤à¦¾à¦Ÿà¦¿ উপেকà§à¦·à¦¾ করতে পারে, à¦à¦¬à¦‚ আপনার পà§à¦°à§‹à¦¨à§‹ পাসওয়ারà§à¦¡ বà§à¦¯à¦¬à¦¹à¦¾à¦° করা চালিয়ে যেতে পারেন।',
+'passwordreset-emailelement' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম: $1
+অসà§à¦¥à¦¾à¦¯à¦¼à§€ শবà§à¦¦à¦šà¦¾à¦¬à¦¿: $2',
+'passwordreset-emailsent' => 'à¦à¦•à¦Ÿà¦¿ রিমাইনà§à¦¡à¦¾à¦° ই-মেইল পাঠানো হয়েছে।',
+
# Edit page toolbar
'bold_sample' => 'গাঢ় লেখা',
'bold_tip' => 'গাঢ় লেখা',
@@ -567,8 +604,6 @@ $2',
'extlink_tip' => 'বহিঃসংযোগ (মনে রাখবেন http:// উপসরà§à¦—)',
'headline_sample' => 'শিরোনাম',
'headline_tip' => '২য় সà§à¦¤à¦°à§‡à¦° শিরোনাম',
-'math_sample' => 'সূতà§à¦° à¦à¦–ানে লিখà§à¦¨',
-'math_tip' => 'গাণিতিক সূতà§à¦° (LaTeX)',
'nowiki_sample' => 'অ-ফরমà§à¦¯à¦¾à¦Ÿà¦•à§ƒà¦¤ টেকà§à¦¸à¦Ÿ à¦à¦–ানে পà§à¦°à¦¬à¦¿à¦·à§à¦Ÿ করà§à¦¨',
'nowiki_tip' => 'উইকি ফরমà§à¦¯à¦¾à¦Ÿà¦¿à¦‚ উপেকà§à¦·à¦¾ করা হোক',
'image_tip' => 'গà§à¦°à¦¥à¦¿à¦¤ ফাইল',
@@ -652,7 +687,7 @@ $1 নিষেধাজà§à¦žà¦¾ আরোপ করেছেন। নিষà§
'noarticletext-nopermission' => 'বরà§à¦¤à¦®à¦¾à¦¨à§‡ à¦à¦‡ পাতায় কোন লেখা নেই।
আপনি চাইলে অনà§à¦¯ পাতায় [[Special:Search/{{PAGENAME}}| শিরোনামটি অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করতে পারেন]],
অথবা <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} সমà§à¦ªà¦°à§à¦•à¦¿à¦¤ লগ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করতে পারেন]</span>।',
-'userpage-userdoesnotexist' => '"$1" নামের কোন বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ নিবনà§à¦§à¦¿à¦¤ হয়নি। অনà§à¦—à§à¦°à¦¹ করে পরীকà§à¦·à¦¾ করে দেখà§à¦¨ আপনি à¦à¦‡ পাতাটি সৃষà§à¦Ÿà¦¿/সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে চান কি না।',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" নামের কোন বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ নিবনà§à¦§à¦¿à¦¤ হয়নি। অনà§à¦—à§à¦°à¦¹ করে পরীকà§à¦·à¦¾ করে দেখà§à¦¨ আপনি à¦à¦‡ পাতাটি সৃষà§à¦Ÿà¦¿/সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে চান কি না।',
'userpage-userdoesnotexist-view' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ "$1" অনিবনà§à¦§à¦¿à¦¤à¥¤',
'blocked-notice-logextract' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ বরà§à¦¤à¦®à¦¾à¦¨à§‡ বà§à¦²à¦• রয়েছে।
রেফারেনà§à¦¸à§‡à¦° জনà§à¦¯ সামà§à¦ªà§à¦°à¦¤à¦¿à¦• বà§à¦²à¦• লগ ভà§à¦•à§à¦¤à¦¿ নিচে দেওয়া হল:',
@@ -682,6 +717,7 @@ $1 নিষেধাজà§à¦žà¦¾ আরোপ করেছেন। নিষà§
'''যদি à¦à¦Ÿà¦¿ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦° à¦à¦•à¦Ÿà¦¿ বৈধ পà§à¦°à¦šà§‡à¦·à§à¦Ÿà¦¾ হয়, তবে অনà§à¦—à§à¦°à¦¹ করে আবার চেষà§à¦Ÿà¦¾ করà§à¦¨à¥¤ যদি তারপরেও কাজ না হয়, তবে অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ থেকে বেরিয়ে গিয়ে আবার পà§à¦°à¦¬à§‡à¦¶ করে চেষà§à¦Ÿà¦¾ করà§à¦¨à¥¤'''",
'token_suffix_mismatch' => "'''আপনার সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦Ÿà¦¿ পà§à¦°à¦¤à§à¦¯à¦¾à¦–à§à¦¯à¦¾à¦¨ করা হয়েছে, কারণ আপনার কà§à¦²à¦¾à¦¯à¦¼à§‡à¦¨à§à¦Ÿ পà§à¦°à§‹à¦—à§à¦°à¦¾à¦®à¦Ÿà¦¿ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ টেকà§à¦¸à¦Ÿà§‡à¦° বিরামচিহà§à¦¨à¦—à§à¦²à¦¿ গà§à¦²à¦¿à¦¯à¦¼à§‡ ফেলেছে। পাতাটির টেকà§à¦¸à¦Ÿà§‡ যাতে কà§à¦·à¦¤à¦¿ না হয় সেজনà§à¦¯ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦Ÿà¦¿ পà§à¦°à¦¤à§à¦¯à¦¾à¦–à§à¦¯à¦¾à¦¨ করা হয়েছে। আপনি কোন তà§à¦°à§à¦Ÿà¦¿à¦ªà§‚রà§à¦£ ওয়েব-ভিতà§à¦¤à¦¿à¦• বেনামী পà§à¦°à¦•à§à¦¸à¦¿ সেবা বà§à¦¯à¦¬à¦¹à¦¾à¦° করলে à¦à¦°à¦•à¦® হতে পারে।'''",
+'edit_form_incomplete' => "'''আপনার সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦° কিছৠঅংশ সারà§à¦­à¦¾à¦°à§‡ পৌছায় নি; আপনার সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ সমà§à¦ªà§‚রà§à¦£à¦°à§à¦ªà§‡ আছে কিনা নিশà§à¦šà¦¿à¦¤ হয়ে আবার চেষà§à¦Ÿà¦¾ করà§à¦¨'''",
'editing' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করছেন: $1',
'editingsection' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করছেন $1 (অনà§à¦šà§à¦›à§‡à¦¦)',
'editingcomment' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করছেন $1 (নতà§à¦¨ অনà§à¦šà§à¦›à§‡à¦¦)',
@@ -987,9 +1023,10 @@ $3-à¦à¦° দেয়া কারণ হল ''$2''",
'changepassword' => 'শবà§à¦¦à¦šà¦¾à¦¬à¦¿ পরিবরà§à¦¤à¦¨',
'prefs-skin' => 'আবরণ (Skin)',
'skin-preview' => 'পà§à¦°à¦¾à¦•à¦¦à¦°à§à¦¶à¦¨',
-'prefs-math' => 'গণিত',
'datedefault' => 'কোন পছনà§à¦¦ নেই',
+'prefs-beta' => 'বেটা বৈশিষà§à¦Ÿà¦¸à¦®à§‚হ',
'prefs-datetime' => 'তারিখ ও সময়',
+'prefs-labs' => 'পরীকà§à¦·à¦¾à¦—ার বৈশিষà§à¦Ÿà¦¸à¦®à§‚হ',
'prefs-personal' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° বৃতà§à¦¤à¦¾à¦¨à§à¦¤',
'prefs-rc' => 'সামà§à¦ªà§à¦°à¦¤à¦¿à¦• পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ',
'prefs-watchlist' => 'নজরতালিকা',
@@ -1011,8 +1048,6 @@ $3-à¦à¦° দেয়া কারণ হল ''$2''",
'columns' => 'কলাম:',
'searchresultshead' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
'resultsperpage' => 'পà§à¦°à¦¤à¦¿ পাতায় হিট:',
-'contextlines' => 'লাইন পà§à¦°à¦¤à¦¿ হিটে:',
-'contextchars' => 'পà§à¦°à¦¤à¦¿ লাইনে কনà§â€Œà¦Ÿà§‡à¦•à§à¦¸à¦Ÿ সংখà§à¦¯à¦¾:',
'stub-threshold' => '<a href="#" class="stub">অসমà§à¦ªà§‚রà§à¦£ নিবনà§à¦§à§‡à¦° সংযোগগà§à¦²à¦¿à¦°</a> বিশেষ ফরমà§à¦¯à¦¾à¦Ÿà¦¿à¦™à§‡à¦° সীমা (বাইটে):',
'stub-threshold-disabled' => 'নিসà§à¦•à§à¦°à¦¿à¦¯à¦¼',
'recentchangesdays' => 'সামà§à¦ªà§à¦°à¦¤à¦¿à¦• পরিবরà§à¦¤à¦¨à§‡ দিনসমূহ দেখানোর জনà§à¦¯:',
@@ -1023,7 +1058,7 @@ $3-à¦à¦° দেয়া কারণ হল ''$2''",
'savedprefs' => 'আপনার পছনà§à¦¦à¦—à§à¦²à§‹ সংরকà§à¦·à¦£ করা হয়েছে।',
'timezonelegend' => 'সময় বলয়:',
'localtime' => 'সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼ সময়:',
-'timezoneuseserverdefault' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ সারà§à¦­à¦¾à¦° পূরà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤',
+'timezoneuseserverdefault' => 'উইকির পূরà§à¦¬à¦¨à¦¿à¦°à§à¦§à¦¾à¦°à¦¿à¦¤ সময় বà§à¦¯à¦¬à¦¹à¦¾à¦° করো ($1)',
'timezoneuseoffset' => 'অনà§à¦¯ (অফসেট নিরà§à¦¦à¦¿à¦·à§à¦Ÿ করà§à¦¨)',
'timezoneoffset' => 'সময়পারà§à¦¥à¦•à§à¦¯Â¹:',
'servertime' => 'সারà§à¦­à¦¾à¦°à§‡à¦° সময়:',
@@ -1070,8 +1105,8 @@ $3-à¦à¦° দেয়া কারণ হল ''$2''",
'gender-female' => 'মহিলা',
'email' => 'ই-মেইল',
'prefs-help-realname' => 'আসল নাম দেওয়া অনাবশà§à¦¯à¦•à¥¤ যদি আসল নাম দেন, তবে আপনার কাজের সà§à¦¬à§€à¦•à§ƒà¦¤à¦¿ দানে তা বà§à¦¯à¦¬à¦¹à¦¾à¦° করা হবে।',
-'prefs-help-email' => 'ই-মেইল ঠিকানা à¦à¦šà§à¦›à¦¿à¦•, কিনà§à¦¤à§ শবà§à¦¦à¦šà¦¾à¦¬à¦¿ ভà§à¦²à§‡ গেলে, à¦à¦Ÿà¦¿ নতà§à¦¨ শবà§à¦¦à¦šà¦¾à¦¬à¦¿ পেতে আপনাকে সà§à¦¯à§‹à¦— করে দেবে।
-আপনার পরিচয় উনà§à¦®à§‹à¦šà¦¨ ছাড়াই অনà§à¦¯à¦°à¦¾ আপনার বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ পাতা অথবা বà§à¦¯à¦¬à¦¹à¦¾à¦•à¦¾à¦°à§€_আলাপ পাতার মাধà§à¦¯à¦®à§‡ আপনার সাথে যোগাযোগ করতে পারে, à¦à¦®à¦¨à¦Ÿà¦¿à¦“ আপনি পছনà§à¦¦ করতে পারেন।',
+'prefs-help-email' => 'ই-মেইল ঠিকানা à¦à¦šà§à¦›à¦¿à¦•, তবে শবà§à¦¦à¦šà¦¾à¦¬à¦¿ ভà§à¦²à§‡ গেলে নতà§à¦¨ করে শবà§à¦¦à¦šà¦¾à¦¬à¦¿ নিতে à¦à¦Ÿà¦¿à¦° পà§à¦°à¦¯à¦¼à§‹à¦œà¦¨ হবে।',
+'prefs-help-email-others' => 'আপনি আপনার পরিচয় পà§à¦°à¦•à¦¾à¦¶ না করেও আপনার বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ অথবা আলাপ পাতাটির মাধà§à¦¯à¦®à§‡ অনà§à¦¯à¦¦à§‡à¦°à¦•à§‡ আপনার সাথে যোগাযোগ করতে দিতে পারেন।',
'prefs-help-email-required' => 'ই-মেইল ঠিকানা আবশà§à¦¯à¦•à¥¤',
'prefs-info' => 'সাধারণ তথà§à¦¯',
'prefs-i18n' => 'আনà§à¦¤à¦°à§à¦œà¦¾à¦¤à¦¿à¦•à¦¿à¦•à¦°à¦£',
@@ -1183,7 +1218,6 @@ $3-à¦à¦° দেয়া কারণ হল ''$2''",
'right-userrights' => 'সকল বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ অধিকার সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করà§à¦¨',
'right-userrights-interwiki' => 'অনà§à¦¯à¦¾à¦¨à§à¦¯ উইকির বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦° অধিকারসমূহ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করà§à¦¨à¥¤',
'right-siteadmin' => 'ডাটাবেজ বনà§à¦§ à¦à¦¬à¦‚ খà§à¦²à§à¦¨',
-'right-reset-passwords' => 'অনà§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦° শবà§à¦¦à¦šà¦¾à¦¬à¦¿ পà§à¦¨à¦°à¦¾à¦¯à¦¼ নিরà§à¦§à¦¾à¦°à¦£ করà§à¦¨',
'right-override-export-depth' => '৫ম সà§à¦¤à¦° পরà§à¦¯à¦¨à§à¦¤ সংযà§à¦•à§à¦¤à¦¿à¦¸à¦¹ à¦à¦•à¦Ÿà¦¿ পাতা রপà§à¦¤à¦¾à¦¨à§€ করà§à¦¨',
'right-sendemail' => 'অনà§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ ইমেইল পাঠান',
@@ -1311,7 +1345,7 @@ $3-à¦à¦° দেয়া কারণ হল ''$2''",
'filetype-badmime' => '"$1" MIME ধরনের ফাইল আপলোড করা যাবে না।',
'filetype-unwanted-type' => "'''\".\$1\"''' ফাইল ধরনটি অগà§à¦°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯à¥¤
পছনà§à¦¦à¦¨à§€à¦¯à¦¼ {{PLURAL:\$3|ফাইলের ধরন|ফাইলের ধরনগà§à¦²à§‹}} হলো \$2।",
-'filetype-banned-type' => "'''\".\$1\"''' ফাইল ধরনটি অনà§à¦®à§‹à¦¦à¦¿à¦¤ নয়। অনà§à¦®à§‹à¦¦à¦¿à¦¤ {{PLURAL:\$3|ফাইলের ধরণ|ফাইলের ধরনগà§à¦²à§‹}} হল \$2।",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|ফাইল ধরনটি অনà§à¦®à§‹à¦¦à¦¿à¦¤ নয়|ফাইল ধরনগà§à¦²à§‹ অনà§à¦®à§‹à¦¦à¦¿à¦¤ নয়}}। অনà§à¦®à§‹à¦¦à¦¿à¦¤ {{PLURAL:$3|ফাইলের ধরন|ফাইলের ধরনগà§à¦²à§‹}} হল $2।',
'filetype-missing' => 'à¦à¦‡ ফাইলটির কোন à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨ নেই (যেমন ".jpg")।',
'empty-file' => 'আপনার জমাকৃত ফাইলটি খালি।',
'file-too-large' => 'আপনার জমাকৃত ফাইলটি অনেক বড়।',
@@ -1362,10 +1396,6 @@ $3-à¦à¦° দেয়া কারণ হল ''$2''",
'upload-options' => 'আপলোড-অপশন',
'watchthisupload' => 'à¦à¦‡ ফাইলটি নজরে রাখà§à¦¨',
'filewasdeleted' => 'à¦à¦‡ নামের à¦à¦•à¦Ÿà¦¿ ফাইল পূরà§à¦¬à§‡ আপলোড করা হয়েছিল à¦à¦¬à¦‚ তারপর মà§à¦›à§‡ ফেলা হয়েছিল। আপনি ফাইলটি আবার আপলোড করার আগে $1 পরীকà§à¦·à¦¾ করে দেখà§à¦¨à¥¤',
-'upload-wasdeleted' => "'''সতরà§à¦•à§€à¦•à¦°à¦£: আপনি à¦à¦®à¦¨ à¦à¦•à¦Ÿà¦¿ ফাইল আপলোড করছেন যা পূরà§à¦¬à§‡ মà§à¦›à§‡ ফেলা হয়েছিল।'''
-
-à¦à¦‡ ফাইলটি আপলোড করা উচিত কি না বিবেচনা করে দেখà§à¦¨à¥¤
-ফাইলটির অবলà§à¦ªà§à¦¤à¦¿ লগ আপনার সà§à¦¬à¦¿à¦§à¦¾à¦°à§à¦¥à§‡ à¦à¦–ানে দেওয়া হল:",
'filename-bad-prefix' => "আপনি যে ফাইলটি আপলোড করছেন, তার নাম '''\"\$1\"''' দিয়ে শà§à¦°à§ হয়েছে। ঠধরনের নাম সাধারণত ডিজিটাল কà§à¦¯à¦¾à¦®à§‡à¦°à¦¾à¦—à§à¦²à¦¿ সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼à¦­à¦¾à¦¬à§‡ দিয়ে থাকে à¦à¦¬à¦‚ à¦à¦—à§à¦²à¦¿ বà§à¦¯à¦¾à¦–à§à¦¯à¦¾à¦®à§‚লক নয়। অনà§à¦—à§à¦°à¦¹ করে আপনার ফাইলের জনà§à¦¯ আরও বà§à¦¯à¦¾à¦–à§à¦¯à¦¾à¦®à§‚লক à¦à¦•à¦Ÿà¦¿ নাম পছনà§à¦¦ করà§à¦¨à¥¤",
'upload-success-subj' => 'আপলোড সফল হয়েছে',
'upload-failure-subj' => 'আপলোড সমসà§à¦¯à¦¾',
@@ -1384,6 +1414,19 @@ $3-à¦à¦° দেয়া কারণ হল ''$2''",
'upload-unknown-size' => 'অজানা আকার',
'upload-http-error' => 'à¦à¦•à¦Ÿà¦¿ à¦à¦‡à¦šà¦Ÿà¦¿à¦Ÿà¦¿à¦ªà¦¿ তà§à¦°à§à¦Ÿà¦¿ দেখা দিয়েছে: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'ফাইলটির জিপ পরীকà§à¦·à¦¾ করার সময় à¦à¦•à¦Ÿà¦¿ তà§à¦°à§à¦Ÿà¦¿ দেখা দিয়েছে।',
+'zip-wrong-format' => 'চিহà§à¦¨à¦¿à¦¤ ফাইলটি কোনো জিপ ফাইল নয়।',
+'zip-bad' => 'à¦à¦‡ ফাইলটি তà§à¦°à§à¦Ÿà¦¿à¦ªà§‚রà§à¦£ অথবা পাঠযোগà§à¦¯ যোগà§à¦¯ নয় à¦à¦®à¦¨ জিপ ফাইল।
+নিরাপতà§à¦¤à¦¾à¦œà¦¨à¦¿à¦¤ কারণে à¦à¦•à¦Ÿà¦¿ সঠিকভাবে পরীকà§à¦·à¦¾ করা সমà§à¦­à¦¬ নয়।',
+'zip-unsupported' => 'à¦à¦‡ ফাইলটি à¦à¦•à¦Ÿà¦¿ জিপ ফাইল যা à¦à¦®à¦¨ জিপ সà§à¦¬à¦¿à¦§à¦¾ বà§à¦¯à¦¬à¦¹à¦¾à¦° করে যা মিডিয়াউইকি দà§à¦¬à¦¾à¦°à¦¾ সমরà§à¦¥à¦¿à¦¤ নয়।
+নিরাপতà§à¦¤à¦¾à¦œà¦¨à¦¿à¦¤ কারণে à¦à¦Ÿà¦¿ সà§à¦·à§à¦ à§à¦­à¦¾à¦¬à§‡ পরীকà§à¦·à¦¾ করা সমà§à¦­à¦¬ নয়।',
+
+# Special:UploadStash
+'uploadstash' => 'আপলোড সà§à¦Ÿà§à¦¯à¦¾à¦¶',
+'uploadstash-errclear' => 'ফাইলগà§à¦²à§‹ পরিষà§à¦•à¦¾à¦°à¦•à¦°à¦£ বà§à¦¯à¦°à§à¦¥ হয়েছে।',
+'uploadstash-refresh' => 'ফাইলের তালিকা রিফà§à¦°à§‡à¦¶ করà§à¦¨',
+
# img_auth script messages
'img-auth-accessdenied' => 'পà§à¦°à¦¬à§‡à¦¶à¦¾à¦§à¦¿à¦•à¦¾à¦° নাই',
'img-auth-nologinnWL' => 'আপনি লগইন করেননি à¦à¦¬à¦‚ "$1" নজরতালিকায় নাই।',
@@ -1698,29 +1741,32 @@ $3-à¦à¦° দেয়া কারণ হল ''$2''",
'listgrouprights-removegroup-all' => 'সমসà§à¦¤ দল অপসারণ করà§à¦¨',
# E-mail user
-'mailnologin' => 'পà§à¦°à¦¾à¦ªà¦•à§‡à¦° ঠিকানা নেই',
-'mailnologintext' => "অনà§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦°à¦•à§‡ ই-মেইল পাঠাতে হলে আপনাকে অবশà§à¦¯à¦‡ আগে [[Special:UserLogin|লগ-ইন]] করতে হবে à¦à¦¬à¦‚ ''[[Special:Preferences|আপনার পছনà§à¦¦ তালিকায়]] আপনার ই-মেইল ঠিকানাটি ঠিকমত দিতে হবে।",
-'emailuser' => 'ইমেইল করো',
-'emailpage' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ ই-মেইল করà§à¦¨',
-'emailpagetext' => 'আপনি নিচের ফরà§à¦®à¦Ÿà¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করে à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ à¦à¦•à¦Ÿà¦¿ ই-মেইল পাঠাতে পারেন।
+'mailnologin' => 'পà§à¦°à¦¾à¦ªà¦•à§‡à¦° ঠিকানা নেই',
+'mailnologintext' => "অনà§à¦¯ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦°à¦•à§‡ ই-মেইল পাঠাতে হলে আপনাকে অবশà§à¦¯à¦‡ আগে [[Special:UserLogin|লগ-ইন]] করতে হবে à¦à¦¬à¦‚ ''[[Special:Preferences|আপনার পছনà§à¦¦ তালিকায়]] আপনার ই-মেইল ঠিকানাটি ঠিকমত দিতে হবে।",
+'emailuser' => 'ইমেইল করো',
+'emailpage' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ ই-মেইল করà§à¦¨',
+'emailpagetext' => 'আপনি নিচের ফরà§à¦®à¦Ÿà¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করে à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ à¦à¦•à¦Ÿà¦¿ ই-মেইল পাঠাতে পারেন।
আপনি [[Special:Preferences|আপনার বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ পছনà§à¦¦à§‡]] যে ই-মেইল ঠিকানাটি পà§à¦°à¦¬à§‡à¦¶ করিয়েছেন সেটিকে ই-মেইলের পà§à¦°à§‡à¦°à¦• হিসেবে দেখানো হবে, যেনো মেইলের পà§à¦°à¦¾à¦ªà¦• আপনাকে উতà§à¦¤à¦° দিতে পারেন।',
-'usermailererror' => 'মেইল অবজেকà§à¦Ÿ তà§à¦°à§à¦Ÿà¦¿ পাঠিয়েছে:',
-'defemailsubject' => '{{SITENAME}} ই-মেইল',
-'usermaildisabled' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ ই-মেইল নিসà§à¦•à§à¦°à¦¿à¦¯à¦¼',
-'noemailtitle' => 'ই-মেইল ঠিকানা নেই',
-'noemailtext' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ কোন বৈধ ই-মেইল ঠিকানা জানাননি।',
-'nowikiemailtitle' => 'কোন ইমেইল অনà§à¦®à§‹à¦¦à¦¿à¦¤ নয়',
-'email-legend' => 'অনà§à¦¯ à¦à¦•à¦œà¦¨ {{SITENAME}} বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ ই-মেইল পাঠান',
-'emailfrom' => 'পà§à¦°à§‡à¦°à¦•:',
-'emailto' => 'পà§à¦°à¦¾à¦ªà¦•:',
-'emailsubject' => 'বিষয়:',
-'emailmessage' => 'বারà§à¦¤à¦¾:',
-'emailsend' => 'পà§à¦°à§‡à¦°à¦£ করো',
-'emailccme' => 'আমার বারà§à¦¤à¦¾à¦° à¦à¦•à¦Ÿà¦¿ অনà§à¦²à¦¿à¦ªà¦¿ আমাকে ই-মেইল করা হোক।',
-'emailccsubject' => 'আপনার বারà§à¦¤à¦¾à¦° অনà§à¦²à¦¿à¦ªà¦¿ $1-কে: $2',
-'emailsent' => 'ই-মেইল পà§à¦°à§‡à¦°à¦£ করা হয়েছে',
-'emailsenttext' => 'আপনার ই-মেইল বারà§à¦¤à¦¾ পà§à¦°à§‡à¦°à¦£ করা হয়েছে।',
-'emailuserfooter' => 'à¦à¦‡ ই-মেইলটি {{SITENAME}} সাইটের "ই-মেইল করà§à¦¨" সà§à¦¬à¦¿à¦§à¦¾ বà§à¦¯à¦¬à¦¹à¦¾à¦° করে $1-à¦à¦° পকà§à¦· থেকে $2-à¦à¦° নিকট পাঠানো হয়েছে।',
+'usermailererror' => 'মেইল অবজেকà§à¦Ÿ তà§à¦°à§à¦Ÿà¦¿ পাঠিয়েছে:',
+'defemailsubject' => '{{SITENAME}} ই-মেইল',
+'usermaildisabled' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ ই-মেইল নিসà§à¦•à§à¦°à¦¿à¦¯à¦¼',
+'noemailtitle' => 'ই-মেইল ঠিকানা নেই',
+'noemailtext' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ কোন বৈধ ই-মেইল ঠিকানা জানাননি।',
+'nowikiemailtitle' => 'কোন ইমেইল অনà§à¦®à§‹à¦¦à¦¿à¦¤ নয়',
+'emailtarget' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম অথবা পà§à¦°à¦¾à¦ªà¦•à§‡à¦° নাম পà§à¦°à¦¬à§‡à¦¶ করান',
+'emailusername' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম:',
+'emailusernamesubmit' => 'জমা দাও',
+'email-legend' => 'অনà§à¦¯ à¦à¦•à¦œà¦¨ {{SITENAME}} বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ ই-মেইল পাঠান',
+'emailfrom' => 'পà§à¦°à§‡à¦°à¦•:',
+'emailto' => 'পà§à¦°à¦¾à¦ªà¦•:',
+'emailsubject' => 'বিষয়:',
+'emailmessage' => 'বারà§à¦¤à¦¾:',
+'emailsend' => 'পà§à¦°à§‡à¦°à¦£ করো',
+'emailccme' => 'আমার বারà§à¦¤à¦¾à¦° à¦à¦•à¦Ÿà¦¿ অনà§à¦²à¦¿à¦ªà¦¿ আমাকে ই-মেইল করা হোক।',
+'emailccsubject' => 'আপনার বারà§à¦¤à¦¾à¦° অনà§à¦²à¦¿à¦ªà¦¿ $1-কে: $2',
+'emailsent' => 'ই-মেইল পà§à¦°à§‡à¦°à¦£ করা হয়েছে',
+'emailsenttext' => 'আপনার ই-মেইল বারà§à¦¤à¦¾ পà§à¦°à§‡à¦°à¦£ করা হয়েছে।',
+'emailuserfooter' => 'à¦à¦‡ ই-মেইলটি {{SITENAME}} সাইটের "ই-মেইল করà§à¦¨" সà§à¦¬à¦¿à¦§à¦¾ বà§à¦¯à¦¬à¦¹à¦¾à¦° করে $1-à¦à¦° পকà§à¦· থেকে $2-à¦à¦° নিকট পাঠানো হয়েছে।',
# User Messenger
'usermessage-summary' => 'বাদবাকি সিসà§à¦Ÿà§‡à¦® বারà§à¦¤à¦¾',
@@ -1734,14 +1780,14 @@ $3-à¦à¦° দেয়া কারণ হল ''$2''",
'watchlistanontext' => 'আপনার নজরতালিকার আইটেমগà§à¦²à¦¿ দেখতে বা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে অনà§à¦—à§à¦°à¦¹ করে $1।',
'watchnologin' => 'আপনি à¦à¦–নও লগ-ইন করেননি।',
'watchnologintext' => 'আপনার নজর তালিকা পরিবরà§à¦¤à¦¨à§‡à¦° জনà§à¦¯ আপনাকে অবশà§à¦¯à¦‡ অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà§‡ [[Special:UserLogin|পà§à¦°à¦¬à§‡à¦¶ করতে হবে]]।',
-'addedwatch' => 'নজরতালিকায় যà§à¦•à§à¦¤ হয়েছে',
+'addwatch' => 'নজরতালিকায় যোগ করো',
'addedwatchtext' => "\"<nowiki>\$1</nowiki>\" পাতাটি আপনার [[Special:Watchlist|নজরতালিকা]]-তে যোগ করা হয়েছে৷
ভবিষà§à¦¯à¦¤à§‡ à¦à¦‡ পাতা ও à¦à¦‡ পাতার সাথে সমà§à¦ªà¦°à§à¦•à¦¿à¦¤ আলোচনা পাতায় সংঘটিত যাবতীয় পরিবরà§à¦¤à¦¨ à¦à¦–ানে তালিকাভà§à¦•à§à¦¤ হবে৷
à¦à¦›à¦¾à¦¡à¦¼à¦¾ [[Special:RecentChanges|সামà§à¦ªà§à¦°à¦¤à¦¿à¦• পরিবরà§à¦¤à¦¨à¦¸à¦®à§‚হ]]তালিকায় à¦à¦‡ পাতাটিকে '''গাঢ়''' অকà§à¦·à¦°à§‡ দেখানো হবে যাতে আপনি সহজেই পাতাটি শনাকà§à¦¤ করতে পারেন৷
পরবরà§à¦¤à§€à¦¤à§‡ আপনি যদি পাতাটিকে আপনার নজরতালিকা থেকে সরিয়ে ফেলতে চান, তবে \"নজর সরিয়ে নিন\" টà§à¦¯à¦¾à¦¬à¦Ÿà¦¿à¦¤à§‡ কà§à¦²à¦¿à¦• করবেন৷",
-'removedwatch' => 'নজর তালিকা থেকে সরিয়ে ফেলা হয়েছে',
+'removewatch' => 'নজরতালিকা থেকে অপসারণ',
'removedwatchtext' => '"[[:$1]]" পাতাটি [[Special:Watchlist|নজর তালিকা]] থেকে অপসারিত হয়েছে।',
'watch' => 'নজর রাখà§à¦¨',
'watchthispage' => 'নজরে রাখà§à¦¨',
@@ -1797,7 +1843,7 @@ $NEWPAGE
--
আপনার নজরতালিকা সেটিংস পরিবরà§à¦¤à¦¨ করতে চাইলে à¦à¦–ানে যান:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
নজরতালিকা থেকে কোন পাতা অপসারণ করতে চাইলে à¦à¦–ানে যান:
@@ -1805,7 +1851,7 @@ $UNWATCHURL
পà§à¦°à¦¤à¦¿à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾ জানাতে ও আরও সহযোগিতার জনà§à¦¯:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'পাতাটি মà§à¦›à§‡ ফেলা হোক',
@@ -1821,7 +1867,7 @@ $UNWATCHURL
অনà§à¦—à§à¦°à¦¹ করে নিশà§à¦šà¦¿à¦¤ করà§à¦¨ আপনি আসলেই à¦à¦Ÿà¦¿ করতে চান, আপনি à¦à¦° ফলাফল সমà§à¦ªà¦°à§à¦•à§‡ অবহিত, à¦à¦¬à¦‚ আপনি [[{{MediaWiki:Policy-url}}|নীতিমালা]] মেনে à¦à¦Ÿà¦¿ করছেন।',
'actioncomplete' => 'কাজটি নিষà§à¦ªà¦¨à§à¦¨ হয়েছে',
'actionfailed' => 'অà§à¦¯à¦¾à¦•à¦¶à¦¨ বà§à¦¯à¦°à§à¦¥',
-'deletedtext' => '"<nowiki>$1</nowiki>" মà§à¦›à§‡ ফেলা হয়েছে। সামà§à¦ªà§à¦°à¦¤à¦¿à¦• মà§à¦›à§‡ ফেলার ঘটনাগà§à¦²à§‹ $2-ঠদেখà§à¦¨à¥¤',
+'deletedtext' => '"$1" মà§à¦›à§‡ ফেলা হয়েছে। সামà§à¦ªà§à¦°à¦¤à¦¿à¦• মà§à¦›à§‡ ফেলার ঘটনাগà§à¦²à§‹ $2-ঠদেখà§à¦¨à¥¤',
'deletedarticle' => '"[[$1]]" মà§à¦›à§‡ ফেলেছেন',
'suppressedarticle' => '"[[$1]]" অপসারিত',
'dellogpage' => 'পাতা অবলà§à¦ªà§à¦¤à¦¿ লগ',
@@ -1877,7 +1923,7 @@ $UNWATCHURL
'protectexpiry' => 'মেয়াদোতà§à¦¤à§€à¦°à§à¦£ হবে:',
'protect_expiry_invalid' => 'মেয়াদোতà§à¦¤à§€à¦°à§à¦£ সময় অবৈধ।',
'protect_expiry_old' => 'মেয়াদোতà§à¦¤à§€à¦°à§à¦£ সময় অতীতে অবসà§à¦¥à¦¿à¦¤à¥¤',
-'protect-text' => "'''<nowiki>$1</nowiki>''' পাতাটির জনà§à¦¯ সà§à¦°à¦•à§à¦·à¦¾à¦° সà§à¦¤à¦° আপনি à¦à¦–ানে দেখতে ও পরিবরà§à¦¤à¦¨ করতে পারেন।",
+'protect-text' => "'''$1''' পাতাটির জনà§à¦¯ সà§à¦°à¦•à§à¦·à¦¾à¦° সà§à¦¤à¦° আপনি à¦à¦–ানে দেখতে ও পরিবরà§à¦¤à¦¨ করতে পারেন।",
'protect-locked-blocked' => "বাধাপà§à¦°à¦¾à¦ªà§à¦¤ অবসà§à¦¥à¦¾à¦¯à¦¼ আপনি পাতাটির সà§à¦°à¦•à§à¦·à¦¾ সà§à¦¤à¦° পরিবরà§à¦¤à¦¨ করতে পারবেন না। à¦à¦–ানে '''$1''' পাতাটির বরà§à¦¤à¦®à¦¾à¦¨ সেটিংস দেওয়া হল:",
'protect-locked-dblock' => "ডাটাবেজ বনà§à¦§ থাকায় সà§à¦°à¦•à§à¦·à¦¾ সà§à¦¤à¦° পরিবরà§à¦¤à¦¨ করা যাবে না।
à¦à¦–ানে '''$1''' পাতাটির বরà§à¦¤à¦®à¦¾à¦¨ সেটিংস দেওয়া হল:",
@@ -2019,18 +2065,20 @@ $1',
'whatlinkshere-filters' => 'ছাকনী',
# Block/unblock
-'blockip' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ বাধা দাও',
-'blockip-title' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ বাধা দাও',
-'blockip-legend' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ বাধা দেওয়া হোক',
-'blockiptext' => 'কোন নিরà§à¦¦à¦¿à¦·à§à¦Ÿ আইপি ঠিকানা বা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° লেখার অধিকারে বাধা দিতে নিচের ফরà§à¦®à¦Ÿà¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨à¥¤
+'autoblockid' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼ বাধা #$1',
+'block' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ বাধা দাও',
+'unblock' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° উপর থেকে বাধা অপসারণ',
+'blockip' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ বাধা দাও',
+'blockip-title' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ বাধা দাও',
+'blockip-legend' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ বাধা দেওয়া হোক',
+'blockiptext' => 'কোন নিরà§à¦¦à¦¿à¦·à§à¦Ÿ আইপি ঠিকানা বা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° লেখার অধিকারে বাধা দিতে নিচের ফরà§à¦®à¦Ÿà¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করà§à¦¨à¥¤
à¦à¦Ÿà¦¿ কেবলমাতà§à¦° ধà§à¦¬à¦‚সপà§à¦°à¦¬à¦£à¦¤à¦¾ পà§à¦°à¦¤à¦¿à¦°à§‹à¦§à§‡ ও [[{{MediaWiki:Policy-url}}|নীতিমালা]] মেনে সমà§à¦ªà¦¾à¦¦à¦¨ করা উচিত।
নিচে à¦à¦•à¦Ÿà¦¿ নিরà§à¦¦à¦¿à¦·à§à¦Ÿ কারণ দিন (উদাহরণসà§à¦¬à¦°à§‚প, যেসব পাতার ধà§à¦¬à¦‚সসাধন করা হয়েছে, সেগà§à¦²à¦¿ উলà§à¦²à§‡à¦– করতে পারেন)।',
-'ipaddress' => 'আইপি ঠিকানা:',
-'ipadressorusername' => 'আইপি ঠিকানা বা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° নাম:',
-'ipbexpiry' => 'যখন মেয়াদোতà§à¦¤à§€à¦°à§à¦£ হবে:',
-'ipbreason' => 'কারণ:',
-'ipbreasonotherlist' => 'অনà§à¦¯ কারণ',
-'ipbreason-dropdown' => '*বাধা দানের সাধারণ কারণ
+'ipadressorusername' => 'আইপি ঠিকানা বা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° নাম:',
+'ipbexpiry' => 'যখন মেয়াদোতà§à¦¤à§€à¦°à§à¦£ হবে:',
+'ipbreason' => 'কারণ:',
+'ipbreasonotherlist' => 'অনà§à¦¯ কারণ',
+'ipbreason-dropdown' => '*বাধা দানের সাধারণ কারণ
** মিথà§à¦¯à¦¾ তথà§à¦¯ ঢোকানো
** পাতা থেকে বিষয়বসà§à¦¤à§ মà§à¦›à§‡ ফেলা
** বাইরের কোন সাইটের সংযোগ সà§à¦ªà§à¦¯à¦¾à¦® করা
@@ -2038,84 +2086,92 @@ $1',
** ভীতি উদà§à¦°à§‡à¦•à¦•à¦¾à¦°à§€ আচরণ/হয়রানি
** à¦à¦•à¦¾à¦§à¦¿à¦• অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà§‡à¦° অপবà§à¦¯à¦¬à¦¹à¦¾à¦°
** বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম অ-গà§à¦°à¦¹à¦£à¦¯à§‹à¦—à§à¦¯',
-'ipbanononly' => 'কেবল বেনামী বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦° বাধা দেওয় হোক',
-'ipbcreateaccount' => 'অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ সৃষà§à¦Ÿà¦¿à¦¤à§‡ বাধা দেওয়া হোক',
-'ipbemailban' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ ই-মেইল পাঠাতে বাধা দেওয়া হোক',
-'ipbenableautoblock' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° বà§à¦¯à¦¬à¦¹à¦¾à¦° করা সরà§à¦¬à¦¶à§‡à¦· আইপি ঠিকানা, à¦à¦¬à¦‚ পরবরà§à¦¤à§€ যেসব আইপি ঠিকানা থেকে সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦° চেষà§à¦Ÿà¦¾ করা হবে, সেগà§à¦²à¦¿à¦•à§‡à¦“ সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼à¦­à¦¾à¦¬à§‡ বাধা দেয়া হোক।',
-'ipbsubmit' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ বাধা দেয়া হোক',
-'ipbother' => 'অনà§à¦¯ সময়:',
-'ipboptions' => '২ ঘনà§à¦Ÿà¦¾:2 hours,১ দিন:1 day,৩ দিন:3 days,১ সপà§à¦¤à¦¾à¦¹:1 week,২ সপà§à¦¤à¦¾à¦¹:2 weeks,১ মাস:1 month,৩ মাস:3 months,৬ মাস:6 months,১ বছর:1 year,অসীম:infinite',
-'ipbotheroption' => 'অনà§à¦¯à¦¾à¦¨à§à¦¯',
-'ipbotherreason' => 'অনà§à¦¯/আরও কারণ:',
-'ipbhidename' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ ও তালিকা থেকে বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম লà§à¦•à¦¿à¦¯à¦¼à§‡ রাখা হোক',
-'ipbwatchuser' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦•à¦¾à¦°à§€à¦° পাতা à¦à¦¬à¦‚ আলাপের পাতা নজরতালিকায় রাখো',
-'ipballowusertalk' => 'বà§à¦²à¦• অবসà§à¦¥à¦¾à¦¯à¦¼ à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦•à¦¾à¦°à§€à¦° আলাপ পাতা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে দেওয়া হবে',
-'ipb-change-block' => 'à¦à¦‡ à¦à¦•à¦‡ সেটিংসসহ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ আবারও বাধা পà§à¦°à¦¦à¦¾à¦¨ করো',
-'badipaddress' => 'আইপি (IP) ঠিকানাটি অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯',
-'blockipsuccesssub' => 'বাধা সফল',
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] কে বাধা দেয়া হয়েছে
+'ipb-hardblock' => 'à¦à¦‡ আইপি ঠিকানা থেকে লগ-ইনকৃত বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦°à¦•à§‡ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦¯à¦¼ বাধা দাও',
+'ipbcreateaccount' => 'অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ সৃষà§à¦Ÿà¦¿à¦¤à§‡ বাধা দেওয়া হোক',
+'ipbemailban' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ ই-মেইল পাঠাতে বাধা দেওয়া হোক',
+'ipbenableautoblock' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° বà§à¦¯à¦¬à¦¹à¦¾à¦° করা সরà§à¦¬à¦¶à§‡à¦· আইপি ঠিকানা, à¦à¦¬à¦‚ পরবরà§à¦¤à§€ যেসব আইপি ঠিকানা থেকে সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦° চেষà§à¦Ÿà¦¾ করা হবে, সেগà§à¦²à¦¿à¦•à§‡à¦“ সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼à¦­à¦¾à¦¬à§‡ বাধা দেয়া হোক।',
+'ipbsubmit' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ বাধা দেয়া হোক',
+'ipbother' => 'অনà§à¦¯ সময়:',
+'ipboptions' => '২ ঘনà§à¦Ÿà¦¾:2 hours,১ দিন:1 day,৩ দিন:3 days,১ সপà§à¦¤à¦¾à¦¹:1 week,২ সপà§à¦¤à¦¾à¦¹:2 weeks,১ মাস:1 month,৩ মাস:3 months,৬ মাস:6 months,১ বছর:1 year,অসীম:infinite',
+'ipbotheroption' => 'অনà§à¦¯à¦¾à¦¨à§à¦¯',
+'ipbotherreason' => 'অনà§à¦¯/আরও কারণ:',
+'ipbhidename' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ ও তালিকা থেকে বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম লà§à¦•à¦¿à¦¯à¦¼à§‡ রাখা হোক',
+'ipbwatchuser' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦•à¦¾à¦°à§€à¦° পাতা à¦à¦¬à¦‚ আলাপের পাতা নজরতালিকায় রাখো',
+'ipb-disableusertalk' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ বাধাদানকৃত অবসà§à¦¥à¦¾à¦¯à¦¼ নিচের আলাপ পাতায় সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করা থেকে বিরত রাখো',
+'ipb-change-block' => 'à¦à¦‡ à¦à¦•à¦‡ সেটিংসসহ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ আবারও বাধা পà§à¦°à¦¦à¦¾à¦¨ করো',
+'ipb-confirm' => 'বাধা নিশà§à¦šà¦¿à¦¤à¦•à¦°à¦£',
+'badipaddress' => 'আইপি (IP) ঠিকানাটি অগà§à¦°à¦¹à¦¨à¦¯à§‹à¦—à§à¦¯',
+'blockipsuccesssub' => 'বাধা সফল',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] কে বাধা দেয়া হয়েছে
<br />বাধা দেয়া পà§à¦¨à¦°à§à¦¬à¦¿à¦¬à§‡à¦šà¦¨à¦¾ করতে হলে [[Special:IPBlockList|বাধা দেয়া আইপি ঠিকানার তালিকা]] দেখà§à¦¨à¥¤',
-'ipb-edit-dropdown' => 'বাধাদানের কারণ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করà§à¦¨',
-'ipb-unblock-addr' => '$1-à¦à¦° উপর থেকে বাধা তà§à¦²à§‡ নেওয়া হোক',
-'ipb-unblock' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ বা আইপি ঠিকানার উপর থেকে বাধা তà§à¦²à§‡ নেওয়া হোক',
-'ipb-blocklist' => 'বিদà§à¦¯à¦®à¦¾à¦¨ বাধাগà§à¦²à¦¿ দেখà§à¦¨',
-'ipb-blocklist-contribs' => '$1 à¦à¦° অবদানসমূহ',
-'unblockip' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° উপর থেকে বাধা তà§à¦²à§‡ নেওয়া হোক',
-'unblockiptext' => 'নিচের ফরà§à¦®à¦Ÿà¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করে পূরà§à¦¬à§‡ বাধা দেওয়া কোন আইপি ঠিকানা বা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° সাইটে লেখার অধিকার পà§à¦¨à¦ƒà¦ªà§à¦°à¦¤à¦¿à¦·à§à¦ à¦¾ করà§à¦¨à¥¤',
-'ipusubmit' => 'বাধা তà§à¦²à§‡ নেওয়া হোক',
-'unblocked' => '[[User:$1|$1]]-à¦à¦° উপর বাধা তà§à¦²à§‡ নেওয়া হয়েছে',
-'unblocked-id' => '$1 বাধাটি তà§à¦²à§‡ নেওয়া হয়েছে',
-'ipblocklist' => 'বাধাপà§à¦°à¦¾à¦ªà§à¦¤ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€',
-'ipblocklist-legend' => 'বাধা দেওয়া কোন বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨',
-'ipblocklist-username' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নাম বা আইপি ঠিকানা:',
-'ipblocklist-sh-userblocks' => '$1 অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ বাধাà¦',
-'ipblocklist-sh-tempblocks' => '$1 অসà§à¦¥à¦¾à¦¯à¦¼à§€ বাধাà¦',
-'ipblocklist-sh-addressblocks' => '$1 সিঙà§à¦—েল IP বাধাà¦',
-'ipblocklist-submit' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
-'ipblocklist-localblock' => 'সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼ বà§à¦²à¦•',
-'ipblocklist-otherblocks' => 'অনà§à¦¯à¦¾à¦¨à§à¦¯ {{PLURAL:$1|বাধাà¦|বাধাà¦à¦¸à¦®à§‚হ}}',
-'blocklistline' => '$1 তারিখে $2, $3 ($4) কে বাধা দিয়েছেন।',
-'infiniteblock' => 'অসীম',
-'expiringblock' => '$1 তারিখের $2 ঠমেয়াদোতà§à¦¤à§€à¦°à§à¦£ হবে',
-'anononlyblock' => 'শà§à¦§à§ বেনামীদের',
-'noautoblockblock' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼ বাধাদান নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼ করা হয়েছে',
-'createaccountblock' => 'অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ সৃষà§à¦Ÿà¦¿à¦¤à§‡ বাধা দেওয়া হয়েছে',
-'emailblock' => 'ই-মেইল বাধা দেয়া হয়েছে',
-'blocklist-nousertalk' => 'নিজের আলাপের পাতা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে পারে না',
-'ipblocklist-empty' => 'বাধাতালিকা খালি।',
-'ipblocklist-no-results' => 'অনà§à¦°à§à¦¦à§à¦§ আইপি ঠিকানা বা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নামটির উপর কোন বাধা নেই।',
-'blocklink' => 'বাধা দাও',
-'unblocklink' => 'বাধা তà§à¦²à§‡ নেওয়া হোক',
-'change-blocklink' => 'বà§à¦²à¦• অবসà§à¦¥à¦¾à¦° পরিবরà§à¦¤à¦¨ করà§à¦¨',
-'contribslink' => 'অবদান',
-'autoblocker' => 'আপনাকে সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼à¦­à¦¾à¦¬à§‡ বাধা দেওয়া হয়েছে, কারণ আপনার আইপি ঠিকানাটি সমà§à¦ªà§à¦°à¦¤à¦¿ "[[User:$1|$1]]" বà§à¦¯à¦¬à¦¹à¦¾à¦° করেছেন। $1-কে বাধাদানের কারণ: "$2"',
-'blocklogpage' => 'বাধা দানের লগ',
-'blocklog-showlog' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ পূরà§à¦¬à§‡à¦“ বাধা পà§à¦°à¦¦à¦¾à¦¨ করা হয়েছিলো।
+'ipb-blockingself' => 'আপনি নিজেকেই বাধাপà§à¦°à¦¦à¦¾à¦¨ করতে যাচà§à¦›à§‡à¦¨! আপনি কী নিশà§à¦šà¦¿à¦¤ যে আপনি à¦à¦Ÿà¦¿-ই করতে চান?',
+'ipb-edit-dropdown' => 'বাধাদানের কারণ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করà§à¦¨',
+'ipb-unblock-addr' => '$1-à¦à¦° উপর থেকে বাধা তà§à¦²à§‡ নেওয়া হোক',
+'ipb-unblock' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ বা আইপি ঠিকানার উপর থেকে বাধা তà§à¦²à§‡ নেওয়া হোক',
+'ipb-blocklist' => 'বিদà§à¦¯à¦®à¦¾à¦¨ বাধাগà§à¦²à¦¿ দেখà§à¦¨',
+'ipb-blocklist-contribs' => '$1 à¦à¦° অবদানসমূহ',
+'unblockip' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° উপর থেকে বাধা তà§à¦²à§‡ নেওয়া হোক',
+'unblockiptext' => 'নিচের ফরà§à¦®à¦Ÿà¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করে পূরà§à¦¬à§‡ বাধা দেওয়া কোন আইপি ঠিকানা বা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° সাইটে লেখার অধিকার পà§à¦¨à¦ƒà¦ªà§à¦°à¦¤à¦¿à¦·à§à¦ à¦¾ করà§à¦¨à¥¤',
+'ipusubmit' => 'বাধা তà§à¦²à§‡ নেওয়া হোক',
+'unblocked' => '[[User:$1|$1]]-à¦à¦° উপর বাধা তà§à¦²à§‡ নেওয়া হয়েছে',
+'unblocked-range' => '$1 -à¦à¦° থেকে বাধা সরিয়ে নেওয়া হয়েছে',
+'unblocked-id' => '$1 বাধাটি তà§à¦²à§‡ নেওয়া হয়েছে',
+'blocklist' => 'বাধাপà§à¦°à¦¾à¦ªà§à¦¤ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€',
+'ipblocklist' => 'বাধাপà§à¦°à¦¾à¦ªà§à¦¤ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€',
+'ipblocklist-legend' => 'বাধা দেওয়া কোন বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨ করà§à¦¨',
+'blocklist-userblocks' => 'অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ বাধা লà§à¦•à¦¾à¦“',
+'blocklist-tempblocks' => 'অসà§à¦¥à¦¾à¦¯à¦¼à§€ বাধা লà§à¦•à¦¾à¦“',
+'blocklist-addressblocks' => 'à¦à¦•à¦• আইপি বাধা লà§à¦•à¦¾à¦“',
+'blocklist-timestamp' => 'সময়বারà§à¦¤à¦¾',
+'blocklist-target' => 'লকà§à¦·à§à¦¯',
+'blocklist-expiry' => 'মেয়াদোতà§à¦¤à§€à¦°à§à¦£ হবে',
+'blocklist-by' => 'পà§à¦°à¦¶à¦¾à¦¸à¦•à¦•à§‡ বাধাপà§à¦°à¦¦à¦¾à¦¨',
+'blocklist-params' => 'বাধাদানের পà§à¦¯à¦¾à¦°à¦¾à¦®à¦¿à¦Ÿà¦¾à¦°',
+'blocklist-reason' => 'কারণ',
+'ipblocklist-submit' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
+'ipblocklist-localblock' => 'সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼ বà§à¦²à¦•',
+'ipblocklist-otherblocks' => 'অনà§à¦¯à¦¾à¦¨à§à¦¯ {{PLURAL:$1|বাধাà¦|বাধাà¦à¦¸à¦®à§‚হ}}',
+'infiniteblock' => 'অসীম',
+'expiringblock' => '$1 তারিখের $2 ঠমেয়াদোতà§à¦¤à§€à¦°à§à¦£ হবে',
+'anononlyblock' => 'শà§à¦§à§ বেনামীদের',
+'noautoblockblock' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼ বাধাদান নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼ করা হয়েছে',
+'createaccountblock' => 'অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ সৃষà§à¦Ÿà¦¿à¦¤à§‡ বাধা দেওয়া হয়েছে',
+'emailblock' => 'ই-মেইল বাধা দেয়া হয়েছে',
+'blocklist-nousertalk' => 'নিজের আলাপের পাতা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে পারে না',
+'ipblocklist-empty' => 'বাধাতালিকা খালি।',
+'ipblocklist-no-results' => 'অনà§à¦°à§à¦¦à§à¦§ আইপি ঠিকানা বা বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€ নামটির উপর কোন বাধা নেই।',
+'blocklink' => 'বাধা দাও',
+'unblocklink' => 'বাধা তà§à¦²à§‡ নেওয়া হোক',
+'change-blocklink' => 'বà§à¦²à¦• অবসà§à¦¥à¦¾à¦° পরিবরà§à¦¤à¦¨ করà§à¦¨',
+'contribslink' => 'অবদান',
+'autoblocker' => 'আপনাকে সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼à¦­à¦¾à¦¬à§‡ বাধা দেওয়া হয়েছে, কারণ আপনার আইপি ঠিকানাটি সমà§à¦ªà§à¦°à¦¤à¦¿ "[[User:$1|$1]]" বà§à¦¯à¦¬à¦¹à¦¾à¦° করেছেন। $1-কে বাধাদানের কারণ: "$2"',
+'blocklogpage' => 'বাধা দানের লগ',
+'blocklog-showlog' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ পূরà§à¦¬à§‡à¦“ বাধা পà§à¦°à¦¦à¦¾à¦¨ করা হয়েছিলো।
তথà§à¦¯à¦¸à§‚তà§à¦° হিসেবে তাই পূরà§à¦¬à§‡à¦° বাধাদানের লগটি নিচে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হচà§à¦›à§‡:',
-'blocklog-showsuppresslog' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ পূরà§à¦¬à§‡à¦“ বাধা পà§à¦°à¦¦à¦¾à¦¨ ও লà§à¦•à¦¾à¦¨à§‹ হয়েছিলো।
+'blocklog-showsuppresslog' => 'à¦à¦‡ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦•à§‡ পূরà§à¦¬à§‡à¦“ বাধা পà§à¦°à¦¦à¦¾à¦¨ ও লà§à¦•à¦¾à¦¨à§‹ হয়েছিলো।
তথà§à¦¯à¦¸à§‚তà§à¦° হিসেবে তাই পূরà§à¦¬à§‡à¦° অপসারণ লগটি নিচে পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হচà§à¦›à§‡:',
-'blocklogentry' => '[[$1]]à¦à¦° উপর $2 $3 মেয়াদের জনà§à¦¯ নিষেধাজà§à¦žà¦¾ আরোপিত হয়েছে।',
-'blocklogtext' => 'à¦à¦Ÿà¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦°à¦•à§‡ বাধা দানের বা বাধা তà§à¦²à§‡ নেওয়ার লগ। সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼à¦­à¦¾à¦¬à§‡ বাধাদানকৃত আইপি ঠিকানাগà§à¦²à¦¿ à¦à¦–ানে তালিকাবদà§à¦§ করা হয়নি। বরà§à¦¤à¦®à¦¾à¦¨à§‡ সকà§à¦°à¦¿à¦¯à¦¼ নিষিদà§à¦§à¦•à¦°à¦£ ও বাধাদানের তালিকার জনà§à¦¯ [[Special:IPBlockList|আইপি বাধাদান তালিকা]] দেখà§à¦¨à¥¤',
-'unblocklogentry' => '$1-à¦à¦° উপর বাধা তà§à¦²à§‡ নেয়া হয়েছে',
-'block-log-flags-anononly' => 'কেবল বেনামী বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦°à¦¾',
-'block-log-flags-nocreate' => 'অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ সৃষà§à¦Ÿà¦¿ নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼ করা হয়েছে',
-'block-log-flags-noautoblock' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼ বাধাদান নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼',
-'block-log-flags-noemail' => 'ই-মেইলে বাধা আছে',
-'block-log-flags-nousertalk' => 'নিজের আলাপের পাতা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে পারবে না',
-'block-log-flags-hiddenname' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¨à¦¾à¦® লà§à¦•à¦¾à¦¯à¦¼à¦¿à¦¤',
-'range_block_disabled' => 'পà§à¦°à¦¶à¦¾à¦¸à¦•à§‡à¦° পকà§à¦·à§‡ আইপি ঠিকানার শà§à¦°à§‡à¦£à§€ বাধাদানের কà§à¦·à¦®à¦¤à¦¾ নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼ আছে।',
-'ipb_expiry_invalid' => 'মেয়াদোতà§à¦¤à§€à¦°à§à¦£à¦•à¦¾à¦² অবৈধ।',
-'ipb_already_blocked' => '"$1" ইতিমধà§à¦¯à§‡ বà§à¦²à¦•',
-'ipb_cant_unblock' => 'তà§à¦°à§à¦Ÿà¦¿: $1 বà§à¦²à¦• আইডি খà§à¦à¦œà§‡ পাওয়া যায়নি। হয়ত ইতিমধà§à¦¯à§‡à¦‡ à¦à¦Ÿà¦¿à¦° উপর থেকে বাধা তà§à¦²à§‡ নেওয়া হয়েছে।',
-'ipb_blocked_as_range' => 'তà§à¦°à§à¦Ÿà¦¿: $1 আইপি ঠিকানাটিকে সরাসরি বাধা দেওয়া হয়নি à¦à¦¬à¦‚ বাধা তà§à¦²à§‡ নেওয়া যাবে না। তবে ঠিকানাটি $2 সীমার অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤ à¦à¦¬à¦‚ সেটি থেকে বাধা তà§à¦²à§‡ নেওয়া সমà§à¦­à¦¬à¥¤',
-'ip_range_invalid' => 'অবৈধ আইপি শà§à¦°à§‡à¦£à§€',
-'blockme' => 'আমাকে বাধা দেওয়া হোক',
-'proxyblocker' => 'পà§à¦°à¦•à§à¦¸à¦¿ বাধাদানকারী',
-'proxyblocker-disabled' => 'à¦à¦‡ ফাংশনটি নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼à¥¤',
-'proxyblockreason' => 'আপনার আইপি ঠিকানাকে বাধা দেয়া হয়েছে কারণ à¦à¦Ÿà¦¿ à¦à¦•à¦Ÿà¦¿ উনà§à¦®à§à¦•à§à¦¤ পà§à¦°à¦•à§à¦¸à¦¿à¥¤ অনà§à¦—à§à¦°à¦¹ করে আপনার ইনà§à¦Ÿà¦¾à¦°à¦¨à§‡à¦Ÿ সেবা পà§à¦°à¦¦à¦¾à¦¨à¦•à¦¾à¦°à§€ কোমà§à¦ªà¦¾à¦¨à¦¿à¦° সাথে কারিগরি সহায়তার বà§à¦¯à¦¾à¦ªà¦¾à¦°à§‡ যোগাযোগ করà§à¦¨ à¦à¦¬à¦‚ à¦à¦‡ গà§à¦°à§à¦¤à§à¦¬à¦ªà§‚রà§à¦£ নিরাপতà§à¦¤à¦¾ সমসà§à¦¯à¦¾à¦° বà§à¦¯à¦¾à¦ªà¦¾à¦°à§‡ তাদেরকে অবহিত করà§à¦¨à¥¤',
-'proxyblocksuccess' => 'নিষà§à¦ªà¦¨à§à¦¨ হয়েছে।',
-'sorbsreason' => 'আপনার আইপি ঠিকানাটি {{SITENAME}}-à¦à¦° বà§à¦¯à¦¬à¦¹à¦¾à¦° করা DNSBL-ঠউনà§à¦®à§à¦•à§à¦¤ পà§à¦°à¦•à§à¦¸à¦¿ হিসেবে তালিকাভà§à¦•à§à¦¤ আছে।',
-'sorbs_create_account_reason' => 'আপনার আইপি ঠিকানাটি {{SITENAME}}-à¦à¦° বà§à¦¯à¦¬à¦¹à¦¾à¦° করা DNSBL-ঠউনà§à¦®à§à¦•à§à¦¤ পà§à¦°à¦•à§à¦¸à¦¿ হিসেবে তালিকাভà§à¦•à§à¦¤ আছে। আপনি কোন অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ সৃষà§à¦Ÿà¦¿ করতে পারবেন না।',
+'blocklogentry' => '[[$1]]à¦à¦° উপর $2 $3 মেয়াদের জনà§à¦¯ নিষেধাজà§à¦žà¦¾ আরোপিত হয়েছে।',
+'blocklogtext' => 'à¦à¦Ÿà¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¦à§‡à¦°à¦•à§‡ বাধা দানের বা বাধা তà§à¦²à§‡ নেওয়ার লগ। সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼à¦­à¦¾à¦¬à§‡ বাধাদানকৃত আইপি ঠিকানাগà§à¦²à¦¿ à¦à¦–ানে তালিকাবদà§à¦§ করা হয়নি। বরà§à¦¤à¦®à¦¾à¦¨à§‡ সকà§à¦°à¦¿à¦¯à¦¼ নিষিদà§à¦§à¦•à¦°à¦£ ও বাধাদানের তালিকার জনà§à¦¯ [[Special:BlockList|আইপি বাধাদান তালিকা]] দেখà§à¦¨à¥¤',
+'unblocklogentry' => '$1-à¦à¦° উপর বাধা তà§à¦²à§‡ নেয়া হয়েছে',
+'block-log-flags-anononly' => 'কেবল বেনামী বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦°à¦¾',
+'block-log-flags-nocreate' => 'অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ সৃষà§à¦Ÿà¦¿ নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼ করা হয়েছে',
+'block-log-flags-noautoblock' => 'সà§à¦¬à¦¯à¦¼à¦‚কà§à¦°à¦¿à¦¯à¦¼ বাধাদান নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼',
+'block-log-flags-noemail' => 'ই-মেইলে বাধা আছে',
+'block-log-flags-nousertalk' => 'নিজের আলাপের পাতা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে পারবে না',
+'block-log-flags-hiddenname' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¨à¦¾à¦® লà§à¦•à¦¾à¦¯à¦¼à¦¿à¦¤',
+'range_block_disabled' => 'পà§à¦°à¦¶à¦¾à¦¸à¦•à§‡à¦° পকà§à¦·à§‡ আইপি ঠিকানার শà§à¦°à§‡à¦£à§€ বাধাদানের কà§à¦·à¦®à¦¤à¦¾ নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼ আছে।',
+'ipb_expiry_invalid' => 'মেয়াদোতà§à¦¤à§€à¦°à§à¦£à¦•à¦¾à¦² অবৈধ।',
+'ipb_already_blocked' => '"$1" ইতিমধà§à¦¯à§‡ বà§à¦²à¦•',
+'ipb_cant_unblock' => 'তà§à¦°à§à¦Ÿà¦¿: $1 বà§à¦²à¦• আইডি খà§à¦à¦œà§‡ পাওয়া যায়নি। হয়ত ইতিমধà§à¦¯à§‡à¦‡ à¦à¦Ÿà¦¿à¦° উপর থেকে বাধা তà§à¦²à§‡ নেওয়া হয়েছে।',
+'ipb_blocked_as_range' => 'তà§à¦°à§à¦Ÿà¦¿: $1 আইপি ঠিকানাটিকে সরাসরি বাধা দেওয়া হয়নি à¦à¦¬à¦‚ বাধা তà§à¦²à§‡ নেওয়া যাবে না। তবে ঠিকানাটি $2 সীমার অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤ à¦à¦¬à¦‚ সেটি থেকে বাধা তà§à¦²à§‡ নেওয়া সমà§à¦­à¦¬à¥¤',
+'ip_range_invalid' => 'অবৈধ আইপি শà§à¦°à§‡à¦£à§€',
+'blockme' => 'আমাকে বাধা দেওয়া হোক',
+'proxyblocker' => 'পà§à¦°à¦•à§à¦¸à¦¿ বাধাদানকারী',
+'proxyblocker-disabled' => 'à¦à¦‡ ফাংশনটি নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼à¥¤',
+'proxyblockreason' => 'আপনার আইপি ঠিকানাকে বাধা দেয়া হয়েছে কারণ à¦à¦Ÿà¦¿ à¦à¦•à¦Ÿà¦¿ উনà§à¦®à§à¦•à§à¦¤ পà§à¦°à¦•à§à¦¸à¦¿à¥¤ অনà§à¦—à§à¦°à¦¹ করে আপনার ইনà§à¦Ÿà¦¾à¦°à¦¨à§‡à¦Ÿ সেবা পà§à¦°à¦¦à¦¾à¦¨à¦•à¦¾à¦°à§€ কোমà§à¦ªà¦¾à¦¨à¦¿à¦° সাথে কারিগরি সহায়তার বà§à¦¯à¦¾à¦ªà¦¾à¦°à§‡ যোগাযোগ করà§à¦¨ à¦à¦¬à¦‚ à¦à¦‡ গà§à¦°à§à¦¤à§à¦¬à¦ªà§‚রà§à¦£ নিরাপতà§à¦¤à¦¾ সমসà§à¦¯à¦¾à¦° বà§à¦¯à¦¾à¦ªà¦¾à¦°à§‡ তাদেরকে অবহিত করà§à¦¨à¥¤',
+'proxyblocksuccess' => 'নিষà§à¦ªà¦¨à§à¦¨ হয়েছে।',
+'sorbsreason' => 'আপনার আইপি ঠিকানাটি {{SITENAME}}-à¦à¦° বà§à¦¯à¦¬à¦¹à¦¾à¦° করা DNSBL-ঠউনà§à¦®à§à¦•à§à¦¤ পà§à¦°à¦•à§à¦¸à¦¿ হিসেবে তালিকাভà§à¦•à§à¦¤ আছে।',
+'sorbs_create_account_reason' => 'আপনার আইপি ঠিকানাটি {{SITENAME}}-à¦à¦° বà§à¦¯à¦¬à¦¹à¦¾à¦° করা DNSBL-ঠউনà§à¦®à§à¦•à§à¦¤ পà§à¦°à¦•à§à¦¸à¦¿ হিসেবে তালিকাভà§à¦•à§à¦¤ আছে। আপনি কোন অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ সৃষà§à¦Ÿà¦¿ করতে পারবেন না।',
# Developer tools
'lockdb' => 'ডাটাবেজ বনà§à¦§ করে দেওয়া হোক',
@@ -2217,7 +2273,7 @@ $1',
'allmessagesdefault' => 'আদি টেকà§à¦¸à¦Ÿ',
'allmessagescurrent' => 'বরà§à¦¤à¦®à¦¾à¦¨ টেকà§à¦¸à¦Ÿ',
'allmessagestext' => 'à¦à¦Ÿà¦¿ মিডিয়াউইকি নামসà§à¦¥à¦¾à¦¨à§‡ অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤ সিসà§à¦Ÿà§‡à¦® বারà§à¦¤à¦¾à¦—à§à¦²à§‹à¦° à¦à¦•à¦Ÿà¦¿ তালিকা।
-আপনি যদি সাধারণ মিডিয়াউইকির সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à¦°à¦£à§‡ অবদান রাখতে আগà§à¦°à¦¹à§€ হন, অনà§à¦—à§à¦°à¦¹ করে [http://www.mediawiki.org/wiki/Localisation মিডিয়াউইকি সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à¦°à¦£] à¦à¦¬à¦‚ [http://translatewiki.net translatewiki.net] দেখà§à¦¨à¥¤',
+আপনি যদি সাধারণ মিডিয়াউইকির সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à¦°à¦£à§‡ অবদান রাখতে আগà§à¦°à¦¹à§€ হন, অনà§à¦—à§à¦°à¦¹ করে [//www.mediawiki.org/wiki/Localisation মিডিয়াউইকি সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à¦°à¦£] à¦à¦¬à¦‚ [//translatewiki.net translatewiki.net] দেখà§à¦¨à¥¤',
'allmessagesnotsupportedDB' => "à¦à¦‡ পাতা বà§à¦¯à¦¬à¦¹à¦¾à¦° করা যাবে না কারণ '''\$wgUseDatabaseMessages''' বনà§à¦§ করে রাখা আছে।",
'allmessages-filter-legend' => 'ছাকনী',
'allmessages-filter-unmodified' => 'অপরিবরà§à¦¤à¦¿à¦¤',
@@ -2347,9 +2403,7 @@ $1',
'tooltip-summary' => 'à¦à¦•à¦Ÿà¦¿ সংকà§à¦·à¦¿à¦ªà§à¦¤ সারাংশ দিন',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata à¦à¦‡ সারà§à¦­à¦¾à¦°à§‡à¦° জনà§à¦¯ নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼à¥¤',
-'nocreativecommons' => 'কà§à¦°à¦¿à¦¯à¦¼à§‡à¦Ÿà¦¿à¦­ কমনà§â€Œà¦¸ RDF metadata à¦à¦‡ সারà§à¦­à¦¾à¦°à§‡à¦° জনà§à¦¯ নিষà§à¦•à§à¦°à¦¿à¦¯à¦¼à¥¤',
-'notacceptable' => 'আপনার কà§à¦²à¦¾à¦¯à¦¼à§‡à¦¨à§à¦Ÿ পড়তে পারে à¦à¦®à¦¨ ফরমà§à¦¯à¦¾à¦Ÿà§‡ উইকি সারà§à¦­à¦¾à¦° উপাতà§à¦¤ সরবরাহ করতে পারছে না।',
+'notacceptable' => 'আপনার কà§à¦²à¦¾à¦¯à¦¼à§‡à¦¨à§à¦Ÿ পড়তে পারে à¦à¦®à¦¨ ফরমà§à¦¯à¦¾à¦Ÿà§‡ উইকি সারà§à¦­à¦¾à¦° উপাতà§à¦¤ সরবরাহ করতে পারছে না।',
# Attribution
'anonymous' => '{{SITENAME}} à¦à¦° বেনামী {{PLURAL:$1|বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€|বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦¬à§ƒà¦¨à§à¦¦}}',
@@ -2372,31 +2426,14 @@ $1',
'spam_blanking' => '$1-à¦à¦° পà§à¦°à¦¤à¦¿ সংযোগ অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤ আছে à¦à¦®à¦¨ সমসà§à¦¤ সংশোধন খালি করা হচà§à¦›à§‡',
# Info page
-'infosubtitle' => 'পাতার তথà§à¦¯',
-'numedits' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦° সংখà§à¦¯à¦¾ (পাতা): $1',
-'numtalkedits' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾à¦° সংখà§à¦¯à¦¾ (আলাপের পাতা): $1',
-'numwatchers' => 'নজরকারীর সংখà§à¦¯à¦¾: $1',
-'numauthors' => 'পৃথক (নিবনà§à¦§) লেখকের সংখà§à¦¯à¦¾: $1',
-'numtalkauthors' => 'পৃথক লেখকের সংখà§à¦¯à¦¾(আলাপের পাতা): $1',
-
-# Math options
-'mw_math_png' => 'সবসময় পিà¦à¦¨à¦œà¦¿ (PNG) দেখাও',
-'mw_math_simple' => 'খà§à¦¬ সরল হলে à¦à¦‡à¦šà¦Ÿà¦¿à¦à¦®à¦à¦² (HTML), নতà§à¦¬à¦¾ পিà¦à¦¨à¦œà¦¿ (PNG)',
-'mw_math_html' => 'সমà§à¦­à¦¬ হলে à¦à¦‡à¦šà¦Ÿà¦¿à¦à¦®à¦à¦² (HTML), নতà§à¦¬à¦¾ পিà¦à¦¨à¦œà¦¿ (PNG)',
-'mw_math_source' => 'টেক (TeX) আকারে রেখে দাও (টেকà§à¦¸à¦Ÿ বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à¦—à§à¦²à§‹à¦° জনà§à¦¯)',
-'mw_math_modern' => 'আধà§à¦¨à¦¿à¦• বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à¦—à§à¦²à§‹à¦° জনà§à¦¯ সà§à¦ªà¦¾à¦°à¦¿à¦¶à¦•à§ƒà¦¤',
-'mw_math_mathml' => 'সমà§à¦­à¦¬ হলে মà§à¦¯à¦¾à¦¥à¦à¦®à¦à¦² (MathML) (পরীকà§à¦·à¦¾à¦®à§‚লক)',
-
-# Math errors
-'math_failure' => 'পারà§à¦¸ করতে বà§à¦¯à¦°à§à¦¥',
-'math_unknown_error' => 'অজানা তà§à¦°à§à¦Ÿà¦¿',
-'math_unknown_function' => 'অজানা ফাংশন',
-'math_lexing_error' => 'লেকà§à¦¸à¦¿à¦‚ তà§à¦°à§à¦Ÿà¦¿',
-'math_syntax_error' => 'সিনটà§à¦¯à¦¾à¦•à§à¦¸ তà§à¦°à§à¦Ÿà¦¿',
-'math_image_error' => 'PNG রূপানà§à¦¤à¦° বà§à¦¯à¦°à§à¦¥; latex, dvips, gs, à¦à¦¬à¦‚ convert ঠিকমত ইনà§à¦¸à¦Ÿà¦² হয়েছে কি না পরীকà§à¦·à¦¾ করà§à¦¨',
-'math_bad_tmpdir' => 'সাময়িক মà§à¦¯à¦¾à¦¥ ডিরেকà§à¦Ÿà¦°à¦¿ সৃষà§à¦Ÿà¦¿ করতে বা à¦à¦¤à§‡ লিখতে পারা যাচà§à¦›à§‡ না।',
-'math_bad_output' => 'মà§à¦¯à¦¾à¦¥ আউটপà§à¦Ÿ ডিরেকà§à¦Ÿà¦°à¦¿ সৃষà§à¦Ÿà¦¿ করতে বা à¦à¦¤à§‡ লিখতে পারা যাচà§à¦›à§‡ না।',
-'math_notexvc' => 'texvc executable হারানো গেছে; অনà§à¦—à§à¦°à¦¹ করে কনফিগার করার জনà§à¦¯ math/README দেখà§à¦¨à¥¤',
+'pageinfo-header-edits' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾',
+'pageinfo-header-watchlist' => 'নজরতালিকা',
+'pageinfo-header-views' => 'দৃষà§à¦Ÿà¦¿à¦•à§‹à¦£',
+'pageinfo-subjectpage' => 'পাতা',
+'pageinfo-talkpage' => 'আলাপ পাতা',
+'pageinfo-edits' => 'সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ সংখà§à¦¯à¦¾',
+'pageinfo-authors' => 'সতনà§à¦¤à§à¦° সমà§à¦ªà¦¾à¦¦à¦•à§‡à¦° সংখà§à¦¯à¦¾',
+'pageinfo-views' => 'পরিদরà§à¦¶à¦¨ সংখà§à¦¯à¦¾',
# Patrolling
'markaspatrolleddiff' => 'পরীকà§à¦·à¦¿à¦¤ বলে চিহà§à¦¨à¦¿à¦¤ করà§à¦¨',
@@ -2441,7 +2478,6 @@ $1',
'file-nohires' => '<small>à¦à¦° চেয়ে বেশি রেজোলিউশন লভà§à¦¯ নয়।</small>',
'svg-long-desc' => 'SVG ফাইল, সাধারণত $1 × $2 pixels, ফাইলের আকার: $3',
'show-big-image' => 'পূরà§à¦£ রেজোলিউশন',
-'show-big-image-thumb' => '<small>আকারের পà§à¦°à¦¾à¦•à¦¦à¦°à§à¦¶à¦¨: $1 × $2 pixels</small>',
'file-info-gif-looped' => 'লà§à¦ªà¦•à§ƒà¦¤',
'file-info-gif-frames' => '$1 {{PLURAL:$1|ফà§à¦°à§‡à¦®|ফà§à¦°à§‡à¦®}}',
'file-info-png-looped' => 'লà§à¦ªà¦•à§ƒà¦¤',
@@ -2471,14 +2507,20 @@ $1',
'metadata-help' => 'à¦à¦‡ ফাইলে অতিরিকà§à¦¤ কিছৠতথà§à¦¯ আছে। সমà§à¦­à¦¬à¦¤ যে ডিজিটাল কà§à¦¯à¦¾à¦®à§‡à¦°à¦¾ বা সà§à¦•à§à¦¯à¦¾à¦¨à¦¾à¦°à§‡à¦° মাধà§à¦¯à¦®à§‡ à¦à¦Ÿà¦¿ তৈরি বা ডিজিটায়িত করা হয়েছিল, সেটি করà§à¦¤à§ƒà¦• তথà§à¦¯à¦—à§à¦²à¦¿ যà§à¦•à§à¦¤ হয়েছে। যদি ফাইলটি তার আদি অবসà§à¦¥à¦¾ থেকে পরিবরà§à¦¤à¦¿à¦¤ হয়ে থাকে, কিছৠকিছৠবিবরণ পরিবরà§à¦¤à¦¿à¦¤ ফাইলটির জনà§à¦¯ পà§à¦°à¦¯à§‹à¦œà§à¦¯ না-ও হতে পারে।',
'metadata-expand' => 'সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¿à¦¤ সবিসà§à¦¤à¦¾à¦°à§‡ দেখাও',
'metadata-collapse' => 'সমà§à¦ªà§à¦°à¦¸à¦¾à¦°à¦¿à¦¤ সবিসà§à¦¤à¦¾à¦°à§‡ দেখিও না',
-'metadata-fields' => 'à¦à¦‡ বারà§à¦¤à¦¾à¦¯à¦¼ তালিকাভà§à¦•à§à¦¤ EXIF metadata কà§à¦·à§‡à¦¤à§à¦°à¦—à§à¦²à¦¿ ছবির পাতায় পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে, যখন অধি-উপাতà§à¦¤ সারণিটি সংকà§à¦šà¦¿à¦¤ করা হবে। অনà§à¦¯ কà§à¦·à§‡à¦¤à§à¦°à¦—à§à¦²à¦¿ সà§à¦¬à¦¾à¦­à¦¾à¦¬à¦¿à¦• অবসà§à¦¥à¦¾à¦¯à¦¼ লà§à¦•à§à¦•à¦¾à¦¯à¦¼à¦¿à¦¤ থাকবে।
+'metadata-fields' => 'à¦à¦‡ বারà§à¦¤à¦¾à¦¯à¦¼ তালিকাভà§à¦•à§à¦¤ চিতà§à¦° মেটাডাটা কà§à¦·à§‡à¦¤à§à¦°à¦—à§à¦²à¦¿ ছবির পাতায় পà§à¦°à¦¦à¦°à§à¦¶à¦¨ করা হবে, যখন অধি-উপাতà§à¦¤ সারণিটি সংকà§à¦šà¦¿à¦¤ করা হবে। অনà§à¦¯ কà§à¦·à§‡à¦¤à§à¦°à¦—à§à¦²à¦¿ সà§à¦¬à¦¾à¦­à¦¾à¦¬à¦¿à¦• অবসà§à¦¥à¦¾à¦¯à¦¼ লà§à¦•à§à¦•à¦¾à¦¯à¦¼à¦¿à¦¤ থাকবে।
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'চওড়া',
@@ -2493,13 +2535,11 @@ $1',
'exif-ycbcrpositioning' => 'Y ও C অবসà§à¦¥à¦¾à¦¨',
'exif-xresolution' => 'অনà§à¦­à§‚মিক রেজোলিউশন',
'exif-yresolution' => 'উলà§à¦²à¦®à§à¦¬ রেজোলিউশন',
-'exif-resolutionunit' => 'X ও Y রেজোলিউশনের à¦à¦•à¦•',
'exif-stripoffsets' => 'ছবির উপাতà§à¦¤à§‡à¦° অবসà§à¦¥à¦¾à¦¨',
'exif-rowsperstrip' => 'পà§à¦°à¦¤à¦¿ সà§à¦Ÿà§à¦°à¦¿à¦ªà§‡ সারির সংখà§à¦¯à¦¾',
'exif-stripbytecounts' => 'পà§à¦°à¦¤à¦¿ সংকà§à¦šà¦¿à¦¤ সà§à¦Ÿà§à¦°à¦¿à¦ªà§‡ বাইটের পরিমাণ',
'exif-jpeginterchangeformat' => 'JPEG SOI-তে অফসেট করা হয়েছে',
'exif-jpeginterchangeformatlength' => 'JPEG উপাতà§à¦¤à§‡à¦° বাইট',
-'exif-transferfunction' => 'সà§à¦¥à¦¾à¦¨à¦¾à¦¨à§à¦¤à¦° ফাংশন',
'exif-whitepoint' => 'শà§à¦¬à§‡à¦¤ বিনà§à¦¦à§ বরà§à¦£à¦¾à¦²à§€à¦®à¦¯à¦¼à¦¤à¦¾',
'exif-primarychromaticities' => 'মৌলিকতà§à¦¬à§‡à¦° বরà§à¦£à¦¾à¦²à§€à¦®à¦¯à¦¼à¦¤à¦¾',
'exif-ycbcrcoefficients' => 'রঙ জগৎ রূপানà§à¦¤à¦° মেটà§à¦°à¦¿à¦•à§à¦¸ সহগগà§à¦²à¦¿',
@@ -2518,7 +2558,6 @@ $1',
'exif-compressedbitsperpixel' => 'ছবি সংকোচন মোড',
'exif-pixelydimension' => 'চিতà§à¦°à§‡à¦° পà§à¦°à¦¸à§à¦¥',
'exif-pixelxdimension' => 'চিতà§à¦°à§‡à¦° উচà§à¦šà¦¤à¦¾',
-'exif-makernote' => 'পà§à¦°à¦¸à§à¦¤à§à¦¤à¦•à¦¾à¦°à¦•à§‡à¦° নোট',
'exif-usercomment' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦° মনà§à¦¤à¦¬à§à¦¯',
'exif-relatedsoundfile' => 'সংশà§à¦²à¦¿à¦·à§à¦Ÿ অডিও ফাইল',
'exif-datetimeoriginal' => 'উপাতà§à¦¤ উৎপাদনের তারিখ ও সময়',
@@ -2532,7 +2571,6 @@ $1',
'exif-exposureprogram' => 'আলোকসমà§à¦ªà¦¾à¦¤ পà§à¦°à§‹à¦—à§à¦°à¦¾à¦®',
'exif-spectralsensitivity' => 'বরà§à¦£à¦¾à¦²à§€ সংবেদনশীলতা',
'exif-isospeedratings' => 'আইà¦à¦¸à¦“ দà§à¦°à§à¦¤à¦¿ মূলà§à¦¯à¦¾à¦¯à¦¼à¦¨',
-'exif-oecf' => 'আলোক-ইলেকটà§à¦°à¦¨à¦¿à¦• রূপানà§à¦¤à¦° গà§à¦£à¦¨à§€à¦¯à¦¼à¦•',
'exif-shutterspeedvalue' => 'APEX শাটার দà§à¦°à§à¦¤à¦¿',
'exif-aperturevalue' => 'APEX উণà§à¦®à§‡à¦·',
'exif-brightnessvalue' => 'APEX উজà§à¦œà§à¦¬à¦²à¦¤à¦¾',
@@ -2545,7 +2583,6 @@ $1',
'exif-focallength' => 'লেনà§à¦¸à§‡à¦° ফোকাস দৈরà§à¦˜à§à¦¯',
'exif-subjectarea' => 'বিষয়বসà§à¦¤à§à¦° কà§à¦·à§‡à¦¤à§à¦°à¦«à¦²',
'exif-flashenergy' => 'ফà§à¦²à§à¦¯à¦¾à¦¶ শকà§à¦¤à¦¿',
-'exif-spatialfrequencyresponse' => 'সà§à¦¥à¦¾à¦¨à¦¿à¦• কমà§à¦ªà¦¾à¦‚ক উতà§à¦¤à¦°',
'exif-focalplanexresolution' => 'X ফোকাস তলের রেজোলিউশন',
'exif-focalplaneyresolution' => 'Y ফোকাস তলের রেজোলিউশন',
'exif-focalplaneresolutionunit' => 'ফোকাস তল রেজোলিউশন à¦à¦•à¦•',
@@ -2554,7 +2591,6 @@ $1',
'exif-sensingmethod' => 'সংবেদন পদà§à¦§à¦¤à¦¿',
'exif-filesource' => 'ফাইল সোরà§à¦¸',
'exif-scenetype' => 'দৃশà§à¦¯à§‡à¦° ধরন',
-'exif-cfapattern' => 'CFA বিনà§à¦¯à¦¾à¦¸',
'exif-customrendered' => 'পছনà§à¦¦à¦®à¦¾à¦«à¦¿à¦• ছবি পà§à¦°à¦•à§à¦°à¦¿à¦¯à¦¼à¦¾à¦•à¦°à¦£',
'exif-exposuremode' => 'আলোকসমà§à¦ªà¦¾à¦¤ মোড',
'exif-whitebalance' => 'সাদা ভারসামà§à¦¯',
@@ -2599,11 +2635,77 @@ $1',
'exif-gpsareainformation' => 'GPS à¦à¦²à¦¾à¦•à¦¾à¦° নাম',
'exif-gpsdatestamp' => 'GPS তারিখ',
'exif-gpsdifferential' => 'GPS ডিফারেনশিয়াল সংশোধন',
+'exif-jpegfilecomment' => 'জেপিইজি ফাইলের মনà§à¦¤à¦¬à§à¦¯',
+'exif-keywords' => 'মূলশবà§à¦¦',
+'exif-worldregioncreated' => 'বিশà§à¦¬à§‡à¦° যে সà§à¦¥à¦¾à¦¨à§‡ ছবিটি গà§à¦°à¦¹à¦£ করা হয়েছে',
+'exif-countrycreated' => 'যে দেশে ছবিটি গà§à¦°à¦¹à¦£ করা হয়েছে',
+'exif-countrycodecreated' => 'যে দেশে ছবিটি গà§à¦°à¦¹à¦£ করা হয়েছে তার কোড',
+'exif-provinceorstatecreated' => 'যে পà§à¦°à¦¦à§‡à¦¶à§‡ ছবিটি গà§à¦°à¦¹à¦£ করা হয়েছে',
+'exif-citycreated' => 'যে শহরে ছবিটি গà§à¦°à¦¹à¦£ করা হয়েছে',
+'exif-sublocationcreated' => 'শহরের যে সà§à¦¥à¦¾à¦¨à§‡ ছবিটি গà§à¦°à¦¹à¦£ করা হয়েছে',
+'exif-worldregiondest' => 'বিশà§à¦¬à§‡à¦° সà§à¦¥à¦¾à¦¨ পà§à¦°à¦¦à¦°à§à¦¶à¦¿à¦¤',
+'exif-countrydest' => 'দেশ পà§à¦°à¦¦à¦°à§à¦¶à¦¿à¦¤',
+'exif-countrycodedest' => 'দেশের কোড পà§à¦°à¦¦à¦°à§à¦¶à¦¿à¦¤',
+'exif-provinceorstatedest' => 'পà§à¦°à¦¦à§‡à¦¶ পà§à¦°à¦¦à¦°à§à¦¶à¦¿à¦¤',
+'exif-citydest' => 'শহর পà§à¦°à¦¦à¦°à§à¦¶à¦¿à¦¤',
+'exif-sublocationdest' => 'শহরের সà§à¦¥à¦¾à¦¨ পà§à¦°à¦¦à¦°à§à¦¶à¦¿à¦¤',
'exif-objectname' => 'সংকà§à¦·à¦¿à¦ªà§à¦¤ শিরোনাম',
+'exif-specialinstructions' => 'বিশেষ নিরà§à¦¦à§‡à¦¶à¦¨à¦¾à¦¸à¦®à§‚হ',
+'exif-headline' => 'শিরোনাম',
+'exif-credit' => 'পà§à¦°à¦£à§‡à¦¤à¦¾/পরিবেশক',
+'exif-source' => 'উৎস',
+'exif-editstatus' => 'ছবির সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ অবসà§à¦¥à¦¾',
+'exif-urgency' => 'অতà§à¦¯à¦¾à¦¬à¦¶à§à¦¯à¦•à§€à¦¯à¦¼à¦¤à¦¾',
+'exif-fixtureidentifier' => 'ফিকশà§à¦šà¦¾à¦°à§‡à¦° নাম',
+'exif-locationdest' => 'সà§à¦¥à¦¾à¦¨ বরà§à¦£à¦¿à¦¤',
+'exif-locationdestcode' => 'সà§à¦¥à¦¾à¦¨à§‡à¦° কোড বরà§à¦£à¦¿à¦¤',
+'exif-objectcycle' => 'দিনের যে সময়ের জনà§à¦¯ মিডিয়াটি ধারণকৃত হয়েছে',
+'exif-contact' => 'যোগাযোগের তথà§à¦¯',
+'exif-writer' => 'লেখক',
+'exif-languagecode' => 'ভাষা',
+'exif-iimversion' => 'আইআইà¦à¦® সংসà§à¦•à¦°à¦£',
+'exif-iimcategory' => 'বিষয়শà§à¦°à§‡à¦£à§€',
+'exif-iimsupplementalcategory' => 'সমà§à¦ªà§‚রক বিষয়শà§à¦°à§‡à¦£à§€',
+'exif-datetimeexpires' => 'যে সময়ের পর বà§à¦¯à¦¬à¦¹à¦¾à¦° করবেন না',
+'exif-datetimereleased' => 'পà§à¦°à¦•à¦¾à¦¶à¦¿à¦¤ হয়েছে',
+'exif-originaltransmissionref' => 'মূল টà§à¦°à¦¾à¦¨à§à¦¸à¦®à¦¿à¦¶à¦¨à¦•à§ƒà¦¤ সà§à¦¥à¦¾à¦¨à§‡à¦° কোড',
+'exif-identifier' => 'আইডেনà§à¦Ÿà¦¿à¦«à¦¾à¦¯à¦¼à¦¾à¦°',
+'exif-lens' => 'বà§à¦¯à¦¬à¦¹à§ƒà¦¤ লেনà§à¦¸',
+'exif-serialnumber' => 'কà§à¦¯à¦¾à¦®à§‡à¦°à¦¾à¦° সিরিয়াল নামà§à¦¬à¦¾à¦°',
+'exif-cameraownername' => 'কà§à¦¯à¦¾à¦®à§‡à¦°à¦¾à¦° সà§à¦¬à¦¤à§à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•à¦¾à¦°à§€',
+'exif-label' => 'লেবেল',
+'exif-datetimemetadata' => 'মেটাডেটার তারিখ সরà§à¦¬à¦¶à§‡à¦· পরিবরà§à¦¤à¦¿à¦¤ হয়েছিলো',
+'exif-nickname' => 'ছবির খসড়া নাম',
+'exif-rating' => 'রেটিং (৫-à¦à¦° মধà§à¦¯à§‡)',
+'exif-rightscertificate' => 'অধিকার বà§à¦¯à¦¬à¦¸à§à¦¥à¦¾à¦ªà¦¨à¦¾ সনদপতà§à¦°',
+'exif-copyrighted' => 'কপিরাইট অবসà§à¦¥à¦¾',
+'exif-copyrightowner' => 'কপিরাইট সà§à¦¬à¦¤à§à¦¤à§à¦¬à¦¾à¦§à¦¿à¦•à¦¾à¦°à§€',
+'exif-usageterms' => 'বà§à¦¯à¦¬à¦¹à¦¾à¦°à§‡à¦° পরিভাষা',
+'exif-webstatement' => 'অনলাইন কপিরাইট বকà§à¦¤à¦¬à§à¦¯',
+'exif-originaldocumentid' => 'মূল ডকà§à¦®à§‡à¦¨à§à¦Ÿà§‡à¦° সà§à¦¬à¦¤à¦¨à§à¦¤à§à¦° আইডি',
+'exif-licenseurl' => 'কপিরাইট লাইসেনà§à¦¸à§‡à¦° ইউআরà¦à¦²',
+'exif-morepermissionsurl' => 'অতিরিকà§à¦¤ লাইসেনà§à¦¸à¦¿à¦‚ তথà§à¦¯à¦¾à¦¦à¦¿',
+'exif-attributionurl' => 'যখন à¦à¦‡ কাজটি পà§à¦¨à¦°à¦¾à¦¯à¦¼ বà§à¦¯à¦¬à¦¹à¦¾à¦° করবেন, অনà§à¦—à§à¦°à¦¹ করে à¦à¦‡ লিংকটি যোগ করà§à¦¨',
+'exif-preferredattributionname' => 'যখন à¦à¦‡ কাজটি পà§à¦¨à¦°à¦¾à¦¯à¦¼ বà§à¦¯à¦¬à¦¹à¦¾à¦° করবেন, অনà§à¦—à§à¦°à¦¹ করে পà§à¦°à¦£à§‡à¦¤à¦¾à¦•à§‡ কà§à¦°à§‡à¦¡à¦¿à¦Ÿ দিন',
+'exif-pngfilecomment' => 'পিà¦à¦¨à¦œà¦¿ ফাইল কমেনà§à¦Ÿ',
+'exif-disclaimer' => 'দাবিতà§à¦¯à¦¾à¦—',
+'exif-contentwarning' => 'বিষয়বসà§à¦¤à§ সতরà§à¦•à¦¬à¦¾à¦°à§à¦¤à¦¾',
+'exif-giffilecomment' => 'জিআইà¦à¦« ফাইল কমেনà§à¦Ÿ',
+'exif-intellectualgenre' => 'উপাদানের পà§à¦°à¦•à¦¾à¦°',
+'exif-subjectnewscode' => 'বিষয় কোড',
+'exif-scenecode' => 'আইপিটিসি সিন কোড',
+'exif-event' => 'অনà§à¦·à§à¦ à¦¾à¦¨ বরà§à¦£à¦¿à¦¤',
+'exif-organisationinimage' => 'পà§à¦°à¦¤à¦¿à¦·à§à¦ à¦¾à¦¨ বরà§à¦£à¦¿à¦¤',
+'exif-personinimage' => 'বà§à¦¯à¦•à§à¦¤à¦¿ বরà§à¦£à¦¿à¦¤',
+'exif-originalimageheight' => 'কà§à¦°à¦ª করার পূরà§à¦¬à§‡ চিতà§à¦°à¦Ÿà¦¿à¦° উচà§à¦šà¦¤à¦¾',
+'exif-originalimagewidth' => 'কà§à¦°à¦ª করার পূরà§à¦¬à§‡ চিতà§à¦°à¦Ÿà¦¿à¦° পà§à¦°à¦¸à§à¦¥',
# EXIF attributes
'exif-compression-1' => 'অসংকà§à¦šà¦¿à¦¤',
+'exif-copyrighted-true' => 'কপিরাইটকৃত',
+'exif-copyrighted-false' => 'পাবলিক ডোমেইন',
+
'exif-unknowndate' => 'অজানা তারিখ',
'exif-orientation-1' => 'সাধারণ',
@@ -2724,6 +2826,10 @@ $1',
'exif-gpslongitude-e' => 'পূরà§à¦¬ দà§à¦°à¦¾à¦˜à¦¿à¦®à¦¾à¦‚শ',
'exif-gpslongitude-w' => 'পশà§à¦šà¦¿à¦® দà§à¦°à¦¾à¦˜à¦¿à¦®à¦¾à¦‚শ',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => 'সমà§à¦¦à§à¦°à¦ªà§ƒà¦·à§à¦ à§‡à¦° $1 {{PLURAL:$1|মিটার|মিটার}} উপরে',
+'exif-gpsaltitude-below-sealevel' => 'সমà§à¦¦à§à¦°à¦ªà§ƒà¦·à§à¦ à§‡à¦° $1 {{PLURAL:$1|মিটার|মিটার}} উপরে',
+
'exif-gpsstatus-a' => 'পরিমাপ চলছে',
'exif-gpsstatus-v' => 'পরিমাপ à¦à¦•à¦¤à§à¦°à§€à¦•à¦°à¦£-কà§à¦·à¦®à¦¤à¦¾',
@@ -2735,21 +2841,63 @@ $1',
'exif-gpsspeed-m' => 'মাইল পà§à¦°à¦¤à¦¿ ঘনà§à¦Ÿà¦¾',
'exif-gpsspeed-n' => 'নট',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'কিলোমিটার',
+'exif-gpsdestdistance-m' => 'ফাইল',
+
+'exif-gpsdop-excellent' => 'খà§à¦¬ ভাল ($1)',
+'exif-gpsdop-good' => 'ভাল ($1)',
+'exif-gpsdop-moderate' => 'মোটামà§à¦Ÿà¦¿ ($1)',
+'exif-gpsdop-fair' => 'ভাল ($1)',
+'exif-gpsdop-poor' => 'খারাপ ($1)',
+
+'exif-objectcycle-a' => 'শà§à¦§à§ সকালে',
+'exif-objectcycle-p' => 'শà§à¦§à§ সনà§à¦§à§à¦¯à¦¾à¦¯à¦¼',
+'exif-objectcycle-b' => 'উভয় সকাল à¦à¦¬à¦‚ সনà§à¦§à§à¦¯à¦¾à¦¯à¦¼',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'পà§à¦°à¦•à§ƒà¦¤ দিক',
'exif-gpsdirection-m' => 'চৌমà§à¦¬à¦• দিক',
+'exif-dc-contributor' => 'অবদানকারী',
+'exif-dc-date' => 'তারিখ',
+'exif-dc-publisher' => 'পà§à¦°à¦•à¦¾à¦¶à¦•',
+'exif-dc-relation' => 'সমà§à¦ªà¦°à§à¦•à¦¿à¦¤ মিডিয়া',
+'exif-dc-rights' => 'অধিকার',
+'exif-dc-source' => 'উৎস মিডিয়া',
+'exif-dc-type' => 'মিডিয়ার ধরণ',
+
+'exif-rating-rejected' => 'পà§à¦°à¦¤à§à¦¯à¦¾à¦–াত',
+
+'exif-iimcategory-clj' => 'অপরাধ ও আইন',
+'exif-iimcategory-dis' => 'দà§à¦°à§à¦¯à§‹à¦— ও দà§à¦°à§à¦˜à¦Ÿà¦¨à¦¾',
+'exif-iimcategory-fin' => 'অরà§à¦¥à¦¨à§€à¦¤à¦¿ à¦à¦¬à¦‚ বাণিজà§à¦¯',
+'exif-iimcategory-edu' => 'শিকà§à¦·à¦¾',
+'exif-iimcategory-evn' => 'পরিবেশ',
+'exif-iimcategory-hth' => 'সà§à¦¬à¦¾à¦¸à§à¦¥à§à¦¯',
+'exif-iimcategory-hum' => 'মানব আগà§à¦°à¦¹',
+'exif-iimcategory-lab' => 'শà§à¦°à¦®',
+'exif-iimcategory-pol' => 'রাজনীতি',
+'exif-iimcategory-rel' => 'ধরà§à¦® à¦à¦¬à¦‚ বিশà§à¦¬à¦¾à¦¸',
+'exif-iimcategory-sci' => 'বিজà§à¦žà¦¾à¦¨ ও পà§à¦°à¦¯à§à¦•à§à¦¤à¦¿',
+'exif-iimcategory-soi' => 'সামাজিক বিষয়',
+'exif-iimcategory-spo' => 'কà§à¦°à§€à¦¡à¦¼à¦¾',
+'exif-iimcategory-war' => 'যà§à¦¦à§à¦§, সংঘাত ও উতà§à¦¤à§‡à¦œà¦¨à¦¾',
+'exif-iimcategory-wea' => 'আবহাওয়া',
+
+'exif-urgency-normal' => 'সাধারণ ($1)',
+'exif-urgency-low' => 'নিমà§à¦¨ ($1)',
+'exif-urgency-high' => 'উচà§à¦š ($1)',
+
# External editor support
'edit-externally' => 'ফাইলটি অনà§à¦¯ কোন সফটওয়à§à¦¯à¦¾à¦° দিয়ে সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করà§à¦¨',
-'edit-externally-help' => 'আরও তথà§à¦¯à§‡à¦° জনà§à¦¯ [http://www.mediawiki.org/wiki/Manual:External_editors সেটআপ নিরà§à¦¦à§‡à¦¶à¦®à¦¾à¦²à¦¾] দেখà§à¦¨à¥¤',
+'edit-externally-help' => 'আরও তথà§à¦¯à§‡à¦° জনà§à¦¯ [//www.mediawiki.org/wiki/Manual:External_editors সেটআপ নিরà§à¦¦à§‡à¦¶à¦®à¦¾à¦²à¦¾] দেখà§à¦¨à¥¤',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'সমসà§à¦¤',
-'imagelistall' => 'সমসà§à¦¤',
-'watchlistall2' => 'সবগà§à¦²à§‹',
-'namespacesall' => 'সমসà§à¦¤',
-'monthsall' => 'সমসà§à¦¤',
-'limitall' => 'সমসà§à¦¤',
+'watchlistall2' => 'সবগà§à¦²à§‹',
+'namespacesall' => 'সমসà§à¦¤',
+'monthsall' => 'সমসà§à¦¤',
+'limitall' => 'সমসà§à¦¤',
# E-mail address confirmation
'confirmemail' => 'ই-মেইলের ঠিকানা নিশà§à¦šà¦¿à¦¤ করà§à¦¨',
@@ -2807,6 +2955,11 @@ $1',
'confirm_purge_button' => 'ঠিক আছে',
'confirm-purge-top' => 'à¦à¦‡ পাতার কà§à¦¯à¦¾à¦¶à§‡ পরিষà§à¦•à¦¾à¦° করতে চান?',
+# action=watch/unwatch
+'confirm-watch-button' => 'ঠিক আছে',
+'confirm-watch-top' => 'à¦à¦‡ পাতাটি আপনার নজরতালিকায় যà§à¦•à§à¦¤ করা হবে?',
+'confirm-unwatch-button' => 'ঠিক আছে',
+
# Multipage image navigation
'imgmultipageprev' => '↠পূরà§à¦¬à¦¬à¦°à§à¦¤à§€ পাতা',
'imgmultipagenext' => 'পরবরà§à¦¤à§€ পাতা →',
@@ -2851,12 +3004,12 @@ $1',
'watchlistedit-noitems' => 'আপনার নজর তালিকায় কোন পাতার শিরোনাম নেই।',
'watchlistedit-normal-title' => 'নজরতালিকা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করো',
'watchlistedit-normal-legend' => 'নজর তালিকা থেকে শিরোনামসমূহ মà§à¦›à§‡ ফেলো',
-'watchlistedit-normal-explain' => 'আপনার নজরতালিকায় রাখা পাতার শিরোনামগà§à¦²à¦¿ নিচে দেখানো হয়েছে। কোন শিরোনাম সরিয়ে নিতে চাইলে পাশের বাকà§à¦¸à§‡ টিক দিন à¦à¦¬à¦‚ "শিরোনামগà§à¦²à¦¿ সরিয়ে ফেলা হোক"-ঠকà§à¦²à¦¿à¦• করà§à¦¨à¥¤ আপনি [[Special:Watchlist/raw|মূল তালিকাটিও]] সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে পারেন।',
+'watchlistedit-normal-explain' => 'আপনার নজরতালিকায় রাখা পাতার শিরোনামগà§à¦²à¦¿ নিচে দেখানো হয়েছে। কোন শিরোনাম সরিয়ে নিতে চাইলে পাশের বাকà§à¦¸à§‡ টিক দিন à¦à¦¬à¦‚ "শিরোনামগà§à¦²à¦¿ সরিয়ে ফেলা হোক"-ঠকà§à¦²à¦¿à¦• করà§à¦¨à¥¤ আপনি [[Special:EditWatchlist/raw|মূল তালিকাটিও]] সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করতে পারেন।',
'watchlistedit-normal-submit' => 'শিরোনামগà§à¦²à¦¿ সরিয়ে ফেলা হোক',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 শিরোনাম|$1 শিরোনামসমূহ}} আপনার নজর তালিকা থেকে মà§à¦›à§‡ ফেলা হয়েছে:',
'watchlistedit-raw-title' => 'অশোধিত নজর তালিকা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করà§à¦¨',
'watchlistedit-raw-legend' => 'অশোধিত নজরতালিকা সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ করà§à¦¨',
-'watchlistedit-raw-explain' => 'আপনার নজরতালিকায় রাখা পাতার শিরোনামগà§à¦²à¦¿ নিচে দেখানো হয়েছে। à¦à¦‡ তালিকাতে নতà§à¦¨ শিরোনাম যোগ করা যাবে বা শিরোনাম সরিয়ে নেওয়া যাবে। à¦à¦•à¦Ÿà¦¿ শিরোনামের জনà§à¦¯ à¦à¦•à¦Ÿà¦¿ লাইন বরাদà§à¦¦à¥¤ শেষ হলে "নজরতালিকা হালনাগাদ করা হোক"-ঠকà§à¦²à¦¿à¦• করà§à¦¨à¥¤ আপনি [[Special:Watchlist/edit|আদরà§à¦¶ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ সরঞà§à¦œà¦¾à¦®]]-ও বà§à¦¯à¦¬à¦¹à¦¾à¦° করতে পারেন।',
+'watchlistedit-raw-explain' => 'আপনার নজরতালিকায় রাখা পাতার শিরোনামগà§à¦²à¦¿ নিচে দেখানো হয়েছে। à¦à¦‡ তালিকাতে নতà§à¦¨ শিরোনাম যোগ করা যাবে বা শিরোনাম সরিয়ে নেওয়া যাবে। à¦à¦•à¦Ÿà¦¿ শিরোনামের জনà§à¦¯ à¦à¦•à¦Ÿà¦¿ লাইন বরাদà§à¦¦à¥¤ শেষ হলে "নজরতালিকা হালনাগাদ করা হোক"-ঠকà§à¦²à¦¿à¦• করà§à¦¨à¥¤ আপনি [[Special:EditWatchlist|আদরà§à¦¶ সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ সরঞà§à¦œà¦¾à¦®]]-ও বà§à¦¯à¦¬à¦¹à¦¾à¦° করতে পারেন।',
'watchlistedit-raw-titles' => 'শিরোনাম:',
'watchlistedit-raw-submit' => 'নজরতালিকা হালনাগাদ করা হোক',
'watchlistedit-raw-done' => 'আপনার নজর তালিকা হালনাগাদ করা হয়েছে।',
@@ -2872,27 +3025,27 @@ $1',
'unknown_extension_tag' => 'অজানা à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨ টà§à¦¯à¦¾à¦— "$1"',
# Special:Version
-'version' => 'সংসà§à¦•à¦°à¦£',
-'version-extensions' => 'ইনà§à¦¸à¦Ÿà¦²à¦•à§ƒà¦¤ à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨à¦¸à¦®à§‚হ',
-'version-specialpages' => 'বিশেষ পাতাসমূহ',
-'version-parserhooks' => 'পারà§à¦¸à¦¾à¦° হà§à¦•',
-'version-variables' => 'চলক',
-'version-skins' => 'আবরণসমূহ (Skin)',
-'version-other' => 'অনà§à¦¯',
-'version-hooks' => 'হà§à¦•',
-'version-extension-functions' => 'à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨à§‡à¦° কাজ',
-'version-parser-extensiontags' => 'পারà§à¦¸à¦¾à¦° à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨ টà§à¦¯à¦¾à¦—',
-'version-parser-function-hooks' => 'পারà§à¦¸à¦¾à¦° ফাংশন হà§à¦•',
-'version-skin-extension-functions' => 'সà§à¦•à¦¿à¦¨ à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à§‡à¦° কাজ',
-'version-hook-name' => 'হà§à¦•à§‡à¦° নাম',
-'version-hook-subscribedby' => 'সাবসà§à¦•à§à¦°à¦¾à¦‡à¦¬ করেছেন',
-'version-version' => '(সংসà§à¦•à¦°à¦£ $1)',
-'version-license' => 'লাইসেনà§à¦¸',
-'version-poweredby-credits' => "à¦à¦‡à¦• উইকিটি পরিচালিত হচà§à¦›à§‡ '''[http://www.mediawiki.org/ মিডিয়াউইকি]'''-à¦à¦° মাধà§à¦¯à¦®à§‡, কপিরাইট © ২০০১-$1 $2।",
-'version-poweredby-others' => 'অনà§à¦¯à¦¾à¦¨à§à¦¯',
-'version-software' => 'ইনসà§à¦Ÿà¦²à¦•à§ƒà¦¤ সফটওয়à§à¦¯à¦¾à¦°',
-'version-software-product' => 'পণà§à¦¯',
-'version-software-version' => 'সংসà§à¦•à¦°à¦£',
+'version' => 'সংসà§à¦•à¦°à¦£',
+'version-extensions' => 'ইনà§à¦¸à¦Ÿà¦²à¦•à§ƒà¦¤ à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨à¦¸à¦®à§‚হ',
+'version-specialpages' => 'বিশেষ পাতাসমূহ',
+'version-parserhooks' => 'পারà§à¦¸à¦¾à¦° হà§à¦•',
+'version-variables' => 'চলক',
+'version-antispam' => 'সà§à¦ªà§à¦¯à¦¾à¦® পà§à¦°à¦¤à¦¿à¦°à§‹à¦§',
+'version-skins' => 'আবরণসমূহ (Skin)',
+'version-other' => 'অনà§à¦¯',
+'version-hooks' => 'হà§à¦•',
+'version-extension-functions' => 'à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨à§‡à¦° কাজ',
+'version-parser-extensiontags' => 'পারà§à¦¸à¦¾à¦° à¦à¦•à§à¦¸à¦Ÿà§‡à¦¨à¦¶à¦¨ টà§à¦¯à¦¾à¦—',
+'version-parser-function-hooks' => 'পারà§à¦¸à¦¾à¦° ফাংশন হà§à¦•',
+'version-hook-name' => 'হà§à¦•à§‡à¦° নাম',
+'version-hook-subscribedby' => 'সাবসà§à¦•à§à¦°à¦¾à¦‡à¦¬ করেছেন',
+'version-version' => '(সংসà§à¦•à¦°à¦£ $1)',
+'version-license' => 'লাইসেনà§à¦¸',
+'version-poweredby-credits' => "à¦à¦‡à¦• উইকিটি পরিচালিত হচà§à¦›à§‡ '''[//www.mediawiki.org/ মিডিয়াউইকি]'''-à¦à¦° মাধà§à¦¯à¦®à§‡, কপিরাইট © ২০০১-$1 $2।",
+'version-poweredby-others' => 'অনà§à¦¯à¦¾à¦¨à§à¦¯',
+'version-software' => 'ইনসà§à¦Ÿà¦²à¦•à§ƒà¦¤ সফটওয়à§à¦¯à¦¾à¦°',
+'version-software-product' => 'পণà§à¦¯',
+'version-software-version' => 'সংসà§à¦•à¦°à¦£',
# Special:FilePath
'filepath' => 'ফাইলের পাথ',
@@ -2900,19 +3053,21 @@ $1',
'filepath-submit' => 'চলো',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'ডà§à¦ªà§à¦²à¦¿à¦•à§‡à¦Ÿ ফাইলের জনà§à¦¯ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
-'fileduplicatesearch-legend' => 'অনà§à¦²à¦¿à¦ªà¦¿à¦° জনà§à¦¯ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
-'fileduplicatesearch-filename' => 'ফাইলনাম:',
-'fileduplicatesearch-submit' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
-'fileduplicatesearch-info' => '$1 × $2 পিকà§à¦¸à§‡à¦²<br />ফাইলের আকার: $3<br />à¦à¦®à¦†à¦‡à¦à¦®à¦‡ পà§à¦°à¦•à¦¾à¦°: $4',
-'fileduplicatesearch-result-1' => ' "$1" ফাইলের কোন ডà§à¦ªà§à¦²à§‡à¦•à§‡à¦Ÿ ফাইল নাই।',
-'fileduplicatesearch-result-n' => '"$1" à¦à¦‡ ফাইলের {{PLURAL:$2|1 à¦à¦•à¦‡à¦°à¦•à¦® অনà§à¦²à¦¿à¦ªà¦¿|$2 à¦à¦•à¦‡à¦°à¦•à¦® অনà§à¦²à¦¿à¦ªà¦¿}} রয়েছে।',
+'fileduplicatesearch' => 'ডà§à¦ªà§à¦²à¦¿à¦•à§‡à¦Ÿ ফাইলের জনà§à¦¯ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
+'fileduplicatesearch-legend' => 'অনà§à¦²à¦¿à¦ªà¦¿à¦° জনà§à¦¯ অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
+'fileduplicatesearch-filename' => 'ফাইলনাম:',
+'fileduplicatesearch-submit' => 'অনà§à¦¸à¦¨à§à¦§à¦¾à¦¨',
+'fileduplicatesearch-info' => '$1 × $2 পিকà§à¦¸à§‡à¦²<br />ফাইলের আকার: $3<br />à¦à¦®à¦†à¦‡à¦à¦®à¦‡ পà§à¦°à¦•à¦¾à¦°: $4',
+'fileduplicatesearch-result-1' => ' "$1" ফাইলের কোন ডà§à¦ªà§à¦²à§‡à¦•à§‡à¦Ÿ ফাইল নাই।',
+'fileduplicatesearch-result-n' => '"$1" à¦à¦‡ ফাইলের {{PLURAL:$2|1 à¦à¦•à¦‡à¦°à¦•à¦® অনà§à¦²à¦¿à¦ªà¦¿|$2 à¦à¦•à¦‡à¦°à¦•à¦® অনà§à¦²à¦¿à¦ªà¦¿}} রয়েছে।',
+'fileduplicatesearch-noresults' => '"$1" নামের কোনো ফাইল খà§à¦à¦œà§‡ পাওয়া যায়নি।',
# Special:SpecialPages
'specialpages' => 'বিশেষ পাতাসমূহ',
'specialpages-note' => '----
* সাধারণ বিশেষ পাতাসমূহ।
-* <strong class="mw-specialpagerestricted">সীমাবদà§à¦§ বিশেষ পাতাসমূহ।</strong>',
+* <span class="mw-specialpagerestricted">সীমাবদà§à¦§ বিশেষ পাতা।</span>
+* <span class="mw-specialpagecached">কেবল কà§à¦¯à¦¾à¦¶à¦•à§ƒà¦¤ বিশেষ পাতা।</span>',
'specialpages-group-maintenance' => 'রকà§à¦·à¦£à¦¾à¦¬à§‡à¦•à§à¦·à¦£à§‡à¦° কারà§à¦¯à¦¬à¦¿à¦¬à¦°à¦£à§€à¦¸à¦®à§‚হ',
'specialpages-group-other' => 'অনà§à¦¯à¦¾à¦¨à§à¦¯ বিশেষ পাতাসমূহ',
'specialpages-group-login' => 'অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà§‡ পà§à¦°à¦¬à§‡à¦¶',
diff --git a/languages/messages/MessagesBo.php b/languages/messages/MessagesBo.php
index 8e0eb528..3a2f012d 100644
--- a/languages/messages/MessagesBo.php
+++ b/languages/messages/MessagesBo.php
@@ -175,10 +175,10 @@ $messages = array(
'history' => 'ཤོག་ངོས་ལོ་རྒྱུསà¼',
'history_short' => 'ལོ་རྒྱུསà¼',
'updatedmarker' => 'à½à½ºà½„ས་སྔོན་མའི་ལྟ་ཀློག་རྗེས་ཀྱི་བཟོ་བཅོསà¼',
-'info_short' => 'གནས་ཚུལà¼',
'printableversion' => 'དཔར་à½à½´à½–་པà¼',
'permalink' => 'རྟག་བརྟན་གྱི་དྲ་འབྲེལà¼',
'print' => 'དཔར་བà¼',
+'view' => 'ལྟ་བà¼',
'edit' => 'རྩོམ་སྒྲིག',
'create' => 'གསར་སà¾à¾²à½´à½“à¼',
'editthispage' => 'ངོས་འདི་བཟོ་བཅོས་བྱེད་པà¼',
@@ -186,6 +186,7 @@ $messages = array(
'delete' => 'སུབསà¼',
'deletethispage' => 'ཤོག་ངོས་འདི་འདོར་བà¼',
'undelete_short' => '{{PLURAL:$1|one edit|$1edits}} མ་འདོར་ཞིག',
+'viewdeleted_short' => '{{བསུབས་པའི་རྩོམ་སྒྲིག PLURAL:$1|བསུབས་པའི་རྩོམ་སྒྲིག $1}}ལ་ལྟ་བà¼',
'protect' => 'སྲུང་བà¼',
'protect_change' => 'སྒྱུར་བཅོསà¼',
'protectthispage' => 'ཤོག་ངོས་འདི་སྲུང་བà¼',
@@ -254,6 +255,7 @@ $messages = array(
'toc' => 'ཟུར་མཆནà¼',
'showtoc' => 'སྟོནà¼',
'hidetoc' => 'སྦསà¼',
+'collapsible-collapse' => 'རྡིབ་སà¾à¾±à½¼à½“à¼',
'viewdeleted' => ' $1 ལ་ལྟའམà¼',
'site-rss-feed' => '$1 ཡི་RSS འབྱུང་à½à½´à½„སà¼',
'site-atom-feed' => '$1 ཡི་Atom འབྱུང་à½à½´à½„སà¼',
@@ -277,19 +279,18 @@ $messages = array(
'nosuchspecialpage' => 'དམིགས་བསལ་ཤོག་ངོས་འདི་འདྲ་ཞིག་མི་འདུག',
# General errors
-'error' => 'ནོར་འà½à¾²à½´à½£à¼',
-'readonly' => 'གཞི་གྲངས་མཛོད་ཟྭ་བརྒྱབ་པà¼',
-'internalerror' => 'ནང་ལོག་ནོར་སà¾à¾±à½¼à½“à¼',
-'internalerror_info' => 'ནང་ལོགས་ནོར་སà¾à¾±à½¼à½“༠$1',
-'filecopyerror' => '"$1" "$2"ལ་འདྲ་བཤུ་བྱེད་མ་à½à½´à½–à¼',
-'filedeleteerror' => '"$1"ཟེར་བ་སུབ་མ་à½à½´à½–à¼',
-'filenotfound' => '"$1"ཟེར་བའི་ཡིག་ཆ་མ་རྙེད་པà¼',
-'badtitle' => 'à½à¼‹à½–ྱང་སà¾à¾±à½¼à½“་ཅནà¼',
-'viewsource' => 'à½à½¼à½„ས་ལ་ལྟ་བà¼',
-'actionthrottled' => 'བྱ་འགུལ་à½à½ºà½‚ས་སོང་à¼',
-'namespaceprotected' => "à½à¾±à½ºà½‘་ལ་'''$1''' མིང་གནས་ནང་གི་ཤོག་ངོས་བཟོ་བཅོས་ཀྱི་ཆོག་མཆན་མེདà¼",
-'customcssjsprotected' => 'ཤོག་ངོས་འདིར་སྤྱོད་མི་གཞན་པའི་སྒེར་གྱི་སྒྲིག་འཇུག་ཚུད་ཡོད་པས་à½à¾±à½ºà½‘་ལ་བཟོ་བཅོས་ཀྱི་ཆོག་མཆན་མེདà¼',
-'ns-specialprotected' => 'དམིགས་བསམ་ཤོག་ངོས་རྣམས་བཟོ་བཅོས་བྱེད་མི་à½à½´à½–à¼',
+'error' => 'ནོར་འà½à¾²à½´à½£à¼',
+'readonly' => 'གཞི་གྲངས་མཛོད་ཟྭ་བརྒྱབ་པà¼',
+'internalerror' => 'ནང་ལོག་ནོར་སà¾à¾±à½¼à½“à¼',
+'internalerror_info' => 'ནང་ལོགས་ནོར་སà¾à¾±à½¼à½“༠$1',
+'filecopyerror' => '"$1" "$2"ལ་འདྲ་བཤུ་བྱེད་མ་à½à½´à½–à¼',
+'filedeleteerror' => '"$1"ཟེར་བ་སུབ་མ་à½à½´à½–à¼',
+'filenotfound' => '"$1"ཟེར་བའི་ཡིག་ཆ་མ་རྙེད་པà¼',
+'badtitle' => 'à½à¼‹à½–ྱང་སà¾à¾±à½¼à½“་ཅནà¼',
+'viewsource' => 'à½à½¼à½„ས་ལ་ལྟ་བà¼',
+'actionthrottled' => 'བྱ་འགུལ་à½à½ºà½‚ས་སོང་à¼',
+'namespaceprotected' => "à½à¾±à½ºà½‘་ལ་'''$1''' མིང་གནས་ནང་གི་ཤོག་ངོས་བཟོ་བཅོས་ཀྱི་ཆོག་མཆན་མེདà¼",
+'ns-specialprotected' => 'དམིགས་བསམ་ཤོག་ངོས་རྣམས་བཟོ་བཅོས་བྱེད་མི་à½à½´à½–à¼',
# Virus scanner
'virus-unknownscanner' => 'ངོས་མ་ཟིན་པའི་དྲ་འབུà¼',
@@ -315,7 +316,7 @@ $messages = array(
'userexists' => 'མིང་འདི་བེད་སྤྱོད་བྱས་ཟིན་པས་མིང་གཞན་ཞིག་གདམ་རོགསà¼',
'loginerror' => 'ནང་འཛུལ་ནོར་སà¾à¾±à½¼à½“à¼',
'loginsuccesstitle' => 'ནང་འཛུལ་བདེ་བར་གྲུབà¼',
-'nosuchusershort' => 'སྤྱོད་མི་"<nowiki>$1</nowiki>"ཟེར་བ་མི་འདུག དག་ཆར་བསà¾à¾±à½¢à¼‹à½žà½²à½–་བྱོསà¼',
+'nosuchusershort' => 'སྤྱོད་མི་"$1"ཟེར་བ་མི་འདུག དག་ཆར་བསà¾à¾±à½¢à¼‹à½žà½²à½–་བྱོསà¼',
'nouserspecified' => 'བཀོལ་མིང་ཞིག་ངེས་པར་དགོསà¼',
'login-userblocked' => 'སྤྱོད་མི་འདི་བཀག་འགོག་བྱས་པས་ནང་འཛུལ་གྱི་ཆོག་མཆན་མེདà¼',
'wrongpassword' => 'ལམ་ཡིག་ནོར་འདུག བསà¾à¾±à½¢à¼‹à½‘ུ་ཚོད་ལྟ་བྱོསà¼',
@@ -323,7 +324,7 @@ $messages = array(
'mailmypassword' => 'གློག་འཕྲིན་ལམ་ཡིག་གསར་བà¼',
'loginlanguagelabel' => 'སà¾à½‘་རིགས༠$1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ལམ་ཡིག་བརྗེ་བà¼',
'resetpass_announce' => 'à½à¾±à½ºà½‘་ཀྱིས་ང་ཚོས་བà½à½„་བའི་གནས་སà¾à½–ས་ལམ་ཡིག་ལ་བརྟེན་ནས་ནང་འཛུལ་བྱས་འདུག ནང་འཛུལ་ཆ་ཚང་བ་བྱེད་པར་འདིར་ངེས་པར་དུ་ལམ་ཡིག་གསར་བ་འཇུག་དགོསà¼',
'oldpassword' => 'ལམ་ཡིག་རྙིང་བà¼',
@@ -336,6 +337,10 @@ $messages = array(
'resetpass-submit-cancel' => 'རྩིས་མེད་à½à½¼à½„སà¼',
'resetpass-temp-password' => 'གནས་སà¾à½–ས་ལམ་ཡིག',
+# Special:PasswordReset
+'passwordreset-username' => 'སྤྱོད་མིང་à¼',
+'passwordreset-email' => 'དྲ་འཕྲིན་à½à¼‹à½–ྱང་à¼',
+
# Edit page toolbar
'bold_sample' => 'ཡིག་གཟུགས་སྦོམ་པོà¼',
'bold_tip' => 'ཡིག་གཟུགས་སྦོམ་པོà¼',
@@ -670,8 +675,6 @@ $messages = array(
'watchlist' => 'ངའི་མཉམ་འཇོག་à½à½¼à¼',
'mywatchlist' => 'ངའི་མཉམ་འཇོག་à½à½¼à¼',
'watchnologin' => 'ནང་འཛུལ་བྱས་མེདà¼',
-'addedwatch' => 'མཉམ་འཇོག་à½à½¼à½¢à¼‹à½–ཅུག་ཟིནà¼',
-'removedwatch' => 'ལྟ་à½à½¼à¼‹à½£à½¦à¼‹à½ à½à½ºà½“་ཟིནà¼',
'watch' => 'མཉམ་འཇོག་à½à½¼à¼',
'watchthispage' => 'དྲ་ངོས་འདི་ལ་གཟིགསà¼',
'unwatch' => 'མི་བལྟ་བà¼',
diff --git a/languages/messages/MessagesBpy.php b/languages/messages/MessagesBpy.php
index 348048e1..ec6d7547 100644
--- a/languages/messages/MessagesBpy.php
+++ b/languages/messages/MessagesBpy.php
@@ -61,7 +61,7 @@ $messages = array(
'tog-editsection' => '[পতিক] লিঙà§à¦• à¦à¦¹à¦¾à¦¨à§à¦¨ পরিচà§à¦›à¦¦ পতানি অক',
'tog-editsectiononrightclick' => 'পরিচà§à¦›à¦¦ পতানির য়à§à¦¯à¦¾à¦¥à¦¾à¦™à¦¹à¦¾à¦¨ বাতেদের গোথামগ <br /> পরিচà§à¦›à¦¦à¦° চিঙনাঙর গজে যাতিলে দে (জাভাসà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ)',
'tog-showtoc' => 'বিষয়র মাঠেলহানি দেহাদে (যে পাতারতা ৩হানর গজে চিঙনাঙ আসে)',
-'tog-rememberpassword' => 'আহার গজে সেশনর কা খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ মনে থ(সরà§à¦¬à§‹à¦šà§à¦š $1 {{PLURAL:$1|দিনর|দিনর}} কা)',
+'tog-rememberpassword' => 'à¦à¦°à§‡ বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à¦° গজে সেশনর কা খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ মনে থ(সরà§à¦¬à§‹à¦šà§à¦š $1 {{PLURAL:$1|দিনর|দিনর}} কা)',
'tog-watchcreations' => 'যে পতাহানি মি ইকরিসৠঅতা মর তালাবির তালিকাত থ',
'tog-watchdefault' => 'যে পতাহানি মি পতাসৠঅতা মর তালাবির তালিকাত থ',
'tog-watchmoves' => 'যে পতাহানি মি থেইকরিসৠঅতা মর তালাবির তালিকাত থ',
@@ -75,10 +75,10 @@ $messages = array(
'tog-enotifminoredits' => 'মরে ইমেইল কর পাতা আহানর পতানিহান হà§à¦°à§ ইলেউ',
'tog-enotifrevealaddr' => 'জানানি মেইল অতাত মর ইমেইলর ঠিকানাহান ফঙকর',
'tog-shownumberswatching' => 'চাকà§à¦°à¦¾à¦° সংখà§à¦¯à¦¾à¦¹à¦¾à¦¨ দেহাদে',
-'tog-oldsig' => 'সà§à¦¬à¦¾à¦•à§à¦·à¦°à¦° আগচা:',
+'tog-oldsig' => 'আগেতà§à¦¤à¦° আসে সà§à¦¬à¦¾à¦•à§à¦·à¦°à¦°à¦¹à¦¾à¦¨:',
'tog-fancysig' => 'সà§à¦¬à¦¾à¦•à§à¦·à¦°à¦¹à¦¾à¦¨à¦°à§‡ উইকিটেকà§à¦¸à¦Ÿ বà§à¦²à¦¿à¦¯à¦¼à¦¾ নিংকর (নিজেতà§à¦¤ লিঙà§à¦• নেইকরিয়া)',
-'tog-externaleditor' => 'পয়লাকাতà§à¦¤à¦‡ বারেদের পতানির আতিয়ার আতা',
-'tog-externaldiff' => 'পয়লাকাতà§à¦¤ বারেদের ফারাকহান আতা',
+'tog-externaleditor' => 'অকরাতই বারেদের সমà§à¦ªà¦¾à¦¦à¦• বà§à¦¯à¦¬à¦¹à¦¾à¦° কর (হà§à¦¦à§à¦¦à¦¾ দকà§à¦· বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦°à¦•à¦¾, কমà§à¦ªà¦¿à¦‰à¦Ÿà¦¾à¦°à¦° মা বিশেষ সেটিংস দরকার। [//www.mediawiki.org/wiki/Manual:External_editors বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ পৌ।])',
+'tog-externaldiff' => 'অকরাতই বারেদের সমà§à¦ªà¦¾à¦¦à¦• বà§à¦¯à¦¬à¦¹à¦¾à¦° কর (হà§à¦¦à§à¦¦à¦¾ দকà§à¦· বà§à¦¯à¦¬à¦¹à¦¾à¦°à¦•à¦¾à¦°à§€à¦°à¦•à¦¾, কমà§à¦ªà¦¿à¦‰à¦Ÿà¦¾à¦°à¦° মা বিশেষ সেটিংস দরকার। [//www.mediawiki.org/wiki/Manual:External_editors বিসà§à¦¤à¦¾à¦°à¦¿à¦¤ পৌ।])',
'tog-showjumplinks' => '"চঙদে" বà§à¦²à¦¤à¦¾à¦°à¦¾ মিলাপর য়à§à¦¯à¦¾à¦¥à¦¾à¦™à¦¦à§‡',
'tog-uselivepreview' => 'লগে লগে মিলà§à¦²à§‡à¦™ আহান দেহাদে (জাভাসà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ) (লইনাসে)',
'tog-forceeditsummary' => 'খালি পতা সারমরà§à¦® হমিলে মরে হারপà§à§±à¦¾à¦¦à§‡',
@@ -174,15 +174,7 @@ $messages = array(
'listingcontinuesabbrev' => 'চলতই',
'index-category' => 'ইনডেকà§à¦¸ করিসি পাতাহানি',
'noindex-category' => 'ইনডেকà§à¦¸ নাকরিসি পাতাহানি',
-
-'mainpagetext' => "'''মিডিয়াউইকি হবাবালা ইয়া ইনà§à¦¸à¦Ÿà¦² ইল.'''",
-'mainpagedocfooter' => 'উইকি সফটৱà§à¦¯à¦¾à¦° à¦à¦¹à¦¾à¦¨ আতানির বারে দরকার ইলে [http://meta.wikimedia.org/wiki/Help:Contents আতাকà§à¦°à¦¾à¦° গাইড]হানর পাঙলাক নেগা।
-
-== অকরানিহান ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings কনফিগারেশন সেটিংর তালিকাহান]
-* [http://www.mediawiki.org/wiki/Manual:FAQ মিডিয়া উইকি আঙলাক]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce মিডিয়া উইকির ফঙপার বারে মেইলর তালিকাহান]',
+'broken-file-category' => 'কামনাকরের ফাইলন আসে পাতাহানি',
'about' => 'বারে',
'article' => 'মেথেলর পাতা',
@@ -212,7 +204,7 @@ $messages = array(
'vector-action-move' => 'থেইকর',
'vector-action-protect' => 'লà§à¦•à¦°',
'vector-action-undelete' => 'নাপà§à¦¸à¦¿',
-'vector-action-unprotect' => 'নালà§à¦•à¦°à¦¿',
+'vector-action-unprotect' => 'লà§à¦•à¦°à¦¾à¦¨à¦¿à¦¹à¦¾à¦¨ সিলকর',
'vector-simplesearch-preference' => 'বিসারানির কা পরামরà§à¦¶ থা করেই (হà§à¦¦à§à¦¦à¦¾ ভেকà§à¦Ÿà¦° সà§à¦•à¦¿à¦¨à¦° কা)',
'vector-view-create' => 'হঙকরিক',
'vector-view-edit' => 'পতানি',
@@ -234,10 +226,10 @@ $messages = array(
'history' => 'পতাহানর ইতিহাসহান',
'history_short' => 'ইতিহাসহান',
'updatedmarker' => 'লমিলগা চানাহাতà§à¦¤ বদলিসেতা',
-'info_short' => 'পৌ',
'printableversion' => 'ছাপানি à¦à¦•à¦°à¦¬ সংসà§à¦•à¦°à¦£',
'permalink' => 'আকà§à¦¬à¦¾à¦²à¦¾ মিলাপ',
'print' => 'ছাপা',
+'view' => 'চা',
'edit' => 'পতানি',
'create' => 'হঙকর',
'editthispage' => 'পাতা à¦à¦¹à¦¾à¦¨ পতিক',
@@ -245,11 +237,12 @@ $messages = array(
'delete' => 'পà§à¦¸à¦¾à¦¨à¦¿',
'deletethispage' => 'পাতা à¦à¦¹à¦¾à¦¨ পà§à¦¸à§‡ বেলিক',
'undelete_short' => 'পà§à¦¸à¦¾à¦¨à¦¿à¦¹à¦¾à¦¨ আলকর {{PLURAL:$1|পতাহান|$1 পতাহানি}}',
+'viewdeleted_short' => '{{PLURAL:$1|হান সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ পà§à¦¸à¦¿à¦¸à¦¿|$1হান সমà§à¦ªà¦¾à¦¦à¦¨à¦¾ পà§à¦¸à¦¿à¦¸à¦¿}} দেখাদে',
'protect' => 'লà§à¦•à¦°',
'protect_change' => 'সিলকর',
'protectthispage' => 'পাতা à¦à¦¹à¦¾à¦¨ লৠকর',
-'unprotect' => 'লৠনাকরি',
-'unprotectthispage' => 'পাতা à¦à¦¹à¦¾à¦¨à¦° লà§à¦ªà¦¾à¦¹à¦¾à¦¨ à¦à¦°à¦¾à¦¦à¦¿à¦•',
+'unprotect' => 'লà§à¦•à¦°à¦¾à¦¨à¦¿à¦¹à¦¾à¦¨ সিলকর',
+'unprotectthispage' => 'পাতা à¦à¦¹à¦¾à¦¨à¦° লà§à¦ªà¦¾à¦¹à¦¾à¦¨ সিলকরিক',
'newpage' => 'নà§à§±à¦¾ পাতা',
'talkpage' => 'পাতা à¦à¦¹à¦¾à¦¨à§à¦¨ য়à§à¦¯à¦¾à¦°à¦¿ দিক',
'talkpagelinktext' => 'য়à§à¦¯à¦¾à¦°à¦¿',
@@ -282,6 +275,9 @@ $messages = array(
ডানà§à¦¡ আহান বাসা পাতা à¦à¦¹à¦¾à¦¨ মেলানির কা।
$1',
+'pool-timeout' => 'সময় লালসে মিকà§à¦ªà¦°à¦•à¦¾ বাসাসে',
+'pool-queuefull' => 'পà§à¦²à¦° লাইনহান বà§à¦à§‡à¦¸à§‡',
+'pool-errorunknown' => 'হারনাপাসি লালহান',
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => '{{SITENAME}}র বারে',
@@ -325,6 +321,8 @@ $1',
'toc' => 'মেথেল',
'showtoc' => 'ফংকর',
'hidetoc' => 'মেথেল আরà§à¦® কর',
+'collapsible-collapse' => 'à¦à¦¿à¦ªà¦¾',
+'collapsible-expand' => 'সালকর',
'thisisdeleted' => '$1 দেহাদে নাইলে বারো হঙকর?',
'viewdeleted' => '$1 দেহাদে?',
'restorelink' => '{{PLURAL:$1|পতা আহান পà§à¦¸à¦¿à¦¸à¦¿|$1হান পতা পà§à¦¸à¦¿à¦¸à¦¿}}',
@@ -336,6 +334,8 @@ $1',
'page-rss-feed' => '"$1" আরà¦à¦¸à¦à¦¸ ফিড',
'page-atom-feed' => '"$1" অà§à¦¯à¦¾à¦Ÿà¦® ফিড',
'red-link-title' => '$1 (পাতা নেই)',
+'sort-descending' => 'উনà§à¦Ÿà¦¾à¦¦à§‡à¦¤à§à¦¤ হাজা',
+'sort-ascending' => 'চà§à¦®à§à¦ªà¦¾à¦¦à§‡à¦¤à§à¦¤ হাজা',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'নিবনà§à¦§',
@@ -390,6 +390,7 @@ $1',
'readonly_lag' => 'ডাটাবেজহান তার তà§à¦¨ তাই বনà§à¦§ ইসে, তার তলর ডাটাবেজ অতাই মানক ডাটাবেজহানর লগ দরে পারবাতা বà§à¦²à¦¿à¦¯à¦¼à¦¾',
'internalerror' => 'বিতরর লাল',
'internalerror_info' => 'ভিতরর লাল: $1',
+'fileappenderrorread' => 'জà§à¦¡à¦¼à¦¿à¦¸à¦¿ মিকà§à¦ªà¦¹à¦¾à¦¨ "$1" পাকরে নà§à§±à¦¾à¦°à¦²à¦¾à¦™à¥¤',
'fileappenderror' => '"$1" লগে "$2" মিল করানি নাইল।',
'filecopyerror' => '"$1" তà§à¦¤ "$2" ফাইল কপি করানি নà§à§±à¦¾à¦°à¦²à¦¾à¦‚',
'filerenameerror' => '"$1" ফাইলগর নাঙহান সিলকরিয়া "$2" থনা নাইল।',
@@ -418,12 +419,13 @@ $1',
'protectedpagetext' => 'পাতা à¦à¦¹à¦¾à¦¨à¦° পতানি থেপকরিয়া থসি।',
'viewsourcetext' => 'পাতা à¦à¦¹à¦¾à¦¨à¦° উতà§à¦¸ চা বারো কপি করে পারর:',
'protectedinterface' => 'পাতা à¦à¦¹à¦¾à¦¨à¦° মেথেল উইকি সফটওয়à§à¦¯à¦¾à¦°à¦° ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸à¦° পৌহান দের, অহানে à¦à¦¹à¦¾à¦¨à¦°à§‡ ইতৠকরিয়া থনা অসে à¦à¦¬à¦¿à¦‰à¦¸à§‡à¦¤à§à¦¤ ঙাকà§à¦•à¦°à¦¾à¦¨à¦¿à¦° কাজে।',
-'editinginterface' => "'''সিঙà§à¦‡à¦¸:''' তি à¦à¦®à¦¨ পাতা আহান পতার যেহান সফটওয়à§à¦¯à¦¾à¦°à¦° কা ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸ টেকà§à¦¸à¦Ÿ দের হানে। পাতা à¦à¦¹à¦¾à¦° পতানিহান আতাকà§à¦°à¦¾à¦° ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸ সিল পরতইগা, যেহান আর আ আতাকà§à¦°à¦¾à¦‡à¦¦à§‡à¦–তাই। অনà§à¦¬à¦¾à¦¦à¦° কা [http://translatewiki.net/wiki/Main_Page?setlang=bpy translatewiki.net] বà§à¦¯à¦¬à¦¹à¦¾à¦° করানির বারে খালকর। à¦à¦¹à¦¾à¦¨ মিডিয়াউইকির সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à¦°à¦£ পà§à¦°à¦•à¦²à§à¦ªà¦¹à¦¾à¦¨à¥¤",
+'editinginterface' => "'''সিঙà§à¦‡à¦¸:''' তি à¦à¦®à¦¨ পাতা আহান পতার যেহান সফটওয়à§à¦¯à¦¾à¦°à¦° কা ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸ টেকà§à¦¸à¦Ÿ দের হানে। পাতা à¦à¦¹à¦¾à¦° পতানিহান আতাকà§à¦°à¦¾à¦° ইনà§à¦Ÿà¦¾à¦°à¦«à§‡à¦¸ সিল পরতইগা, যেহান আর আ আতাকà§à¦°à¦¾à¦‡à¦¦à§‡à¦–তাই। অনà§à¦¬à¦¾à¦¦à¦° কা [//translatewiki.net/wiki/Main_Page?setlang=bpy translatewiki.net] বà§à¦¯à¦¬à¦¹à¦¾à¦° করানির বারে খালকর। à¦à¦¹à¦¾à¦¨ মিডিয়াউইকির সà§à¦¥à¦¾à¦¨à§€à¦¯à¦¼à¦•à¦°à¦£ পà§à¦°à¦•à¦²à§à¦ªà¦¹à¦¾à¦¨à¥¤",
'sqlhidden' => '(à¦à¦¸ কিউ à¦à¦² কোয়েরি গà§à¦°à¦¿à¦¯à¦¼à¦¾ আসে)',
'cascadeprotected' => 'পাতা à¦à¦¹à¦¾à¦¨ পতানি থা নেই, কিদিয়া বà§à¦²à§à¦²à§‡ {{PLURAL:$1|হান পাতা|হান পাতার}} মা তিলà§à¦‡à¦¸à§‡, যে পাতা/পাতাহানিরতা cascading অপশন অহান লয়া সà§à¦°à¦•à§à¦·à¦¿à¦¤ অসে।
$2',
'namespaceprotected' => "'''$1''' নাঙর থাকে কোন পাতা পতানিরকা তরতা য়à§à¦¯à¦¾à¦¥à¦¾à¦‚ নেই।",
-'customcssjsprotected' => 'à¦à¦° পাতা à¦à¦¹à¦¾à¦¨ পতানিরকা তরতা য়à§à¦¯à¦¾à¦¥à¦¾à¦‚ নেই, কিদিয়া বà§à¦²à§à¦²à§‡ আরাক আতাকà§à¦°à¦¾ আগর বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত বিষয়ররবসà§à¦¤à§ আসে।',
+'customcssprotected' => 'à¦à¦°à§‡ সিà¦à¦¸à¦à¦¸ আসে পাতা à¦à¦¹à¦¾à¦¨ পতানিরকা তরতা য়à§à¦¯à¦¾à¦¥à¦¾à¦‚ নেই, কিদিয়া বà§à¦²à§à¦²à§‡ আরাক আতাকà§à¦°à¦¾ আগর বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত বিষয়ররবসà§à¦¤à§ আসে।',
+'customjsprotected' => 'à¦à¦°à§‡ জাভাসà§à¦•à§à¦°à¦¿à¦ªà§à¦Ÿ আসে পাতা à¦à¦¹à¦¾à¦¨ পতানিরকা তরতা য়à§à¦¯à¦¾à¦¥à¦¾à¦‚ নেই, কিদিয়া বà§à¦²à§à¦²à§‡ আরাক আতাকà§à¦°à¦¾ আগর বà§à¦¯à¦•à§à¦¤à¦¿à¦—ত বিষয়ররবসà§à¦¤à§ আসে।',
'ns-specialprotected' => '{{ns:special}} নাঙর থাকে কোন পাতা পতানি নাইব।',
'titleprotected' => "[[User:$1|$1]]-রে à¦à¦°à§‡ চিঙনাঙর পাতা হঙকরানিতà§à¦¤ থেত করিয়া থনা ইসে। কারণ: ''$2''।",
@@ -443,6 +445,7 @@ $2',
'yourpassword' => 'খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿à¦— (password)',
'yourpasswordagain' => 'খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿à¦— (password) আরাকমৠইকর',
'remembermypassword' => 'আহার গজে সেশনর কা খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ মনে থ(সরà§à¦¬à§‹à¦šà§à¦š $1 {{PLURAL:$1|দিনর|দিনর}} কা)',
+'securelogin-stick-https' => 'লগইন করানির পিছে à¦à¦‡à¦šà¦Ÿà¦¿à¦Ÿà¦¿à¦ªà¦¿à¦à¦¸-র লগে সংযোগ থ',
'yourdomainname' => 'তর ডোমেইনগ',
'externaldberror' => 'ডাটেবেজর মা বেসেপ আহান ইসে নাইলে তরতা বারেদের à¦à¦•à¦¾à¦‰à¦¨à§à¦Ÿ বদালানির য়à§à¦¯à¦¾à¦¥à¦¾à¦‚ নেই।',
'login' => 'হমানি',
@@ -458,10 +461,12 @@ $2',
'createaccount' => 'à¦à¦•à¦¾à¦‰à¦¨à§à¦Ÿ খà§à¦²',
'gotaccount' => "মানà§à¦¨à¦¾à¦ªà¦¾ à¦à¦•à¦¾à¦‰à¦¨à§à¦Ÿ আহান আগেতà§à¦¤à¦° আসে? '''$1'''।",
'gotaccountlink' => 'লগইন',
+'userlogin-resetlink' => 'তর লগইন করানির পৌ পাহà§à¦°à¦²à§‡à¦¥à¦¾à¦™?',
'createaccountmail' => 'ই-মেইলন',
'createaccountreason' => 'কারণ:',
'badretype' => 'খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ (password) দà§à¦¬à¦¿à¦¯à¦¼à¦—ি না মিলের।',
-'userexists' => 'à¦à¦°à§‡ আতাকà§à¦°à¦¾à¦° নাঙ à¦à¦¹à¦¾à¦¨ আরাক আগই আগে বà§à¦¯à¦¬à¦¹à¦¾à¦° করিসে। তি আরাক নাঙ আহান বাছ।',
+'userexists' => 'à¦à¦°à§‡ আতাকà§à¦°à¦¾à¦° নাঙ à¦à¦¹à¦¾à¦¨ আরাক আগই আগে বà§à¦¯à¦¬à¦¹à¦¾à¦° করিসে।
+তি আরাক নাঙ আহান বাছ।',
'loginerror' => 'লগইনে লালà§à¦‡à¦¸à§‡',
'createaccounterror' => 'à¦à¦•à¦¾à¦‰à¦¨à§à¦Ÿà¦¹à¦¾à¦¨ হঙকরানি নà§à§±à¦¾à¦°à¦²à¦¾à¦‚: $1',
'nocookiesnew' => 'আতাকà§à¦°à¦¾à¦° à¦à¦•à¦¾à¦‰à¦¨à§à¦Ÿà¦¹à¦¾à¦¨ হঙপরিলগা কিনà§à¦¤à§ তি à¦à¦ªà¦¾à¦—াউ লগইন নাকরিসত।
@@ -469,21 +474,25 @@ $2',
তি কà§à¦•à¦¿à¦¹à¦¾à¦¨à¦¿ আতà§à¦° করিয়া থসত।
কৃপা করিয়া কà§à¦•à¦¿ চালা, বারো তর নà§à§±à¦¾ আতাকà§à¦°à¦¾à¦° নাঙ অহাতà§à¦¤ খনà§à¦¤à¦¾ চাবিল হমা।',
'nocookieslogin' => '{{SITENAME}} ত কà§à¦•à¦¿ (cookies) ল আতাকà§à¦°à¦¾ লগ-ইন করতারাগ। তর বà§à¦°à¦¾à¦Šà¦œà¦¾à¦°à¦° কà§à¦•à¦¿ বনà§à¦§ ইসে। কà§à¦•à¦¿ চালিয়া আরাকমৠহৎনা কর।',
+'nocookiesfornew' => 'আতাকà§à¦°à¦¾à¦° অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà¦¹à¦¾à¦¨ না হঙসে, কিদিয়া বà§à¦²à§à¦²à§‡ আমি অহার গà§à¦°à¦¿à¦— হারনাপাসি।
+তর কà§à¦•à¦¿ কাম করের বà§à¦²à¦¿à¦¯à¦¼à¦¾ রেপ বারো পাতাহান আরাকমৠলোড কর।',
'noname' => 'তি চà§à¦®à§à¦ªà¦¾ আতাকà§à¦°à¦¾à¦° নাঙহান না লেপ করিসত।',
'loginsuccesstitle' => 'লগইনহান চà§à¦®à¦¿à¦²',
'loginsuccess' => "'''à¦à¦°à§‡ {{SITENAME}}ত তি \"\$1\" হিসাবে না হমাসত।'''",
'nosuchuser' => 'à¦à¦°à§‡ "$1" নাঙর কোন আতাকà§à¦°à¦¾ নেই।
আতাকà§à¦°à¦¾à¦° নাঙ কেইস সংবেদনশীল।
তর বানানহান খিয়াল কর, নাইলে [[Special:UserLogin/signup|আরাক নà§à§±à¦¾ à¦à¦•à¦¾à¦‰à¦¨à§à¦Ÿ]]আহান হঙকর।',
-'nosuchusershort' => 'à¦à¦°à§‡ "<nowiki>$1</nowiki>" নাঙর কোন আতাকà§à¦°à¦¾ নেই।
+'nosuchusershort' => 'à¦à¦°à§‡ "$1" নাঙর কোন আতাকà§à¦°à¦¾ নেই।
তর বানানহান খিয়াল কর।',
'nouserspecified' => 'তি আতাকà§à¦°à¦¾à¦° নাঙ আহান থনা লাগতই।',
+'login-userblocked' => 'আতাকà§à¦°à¦¾à¦—রে থেপকরানি অসে। লগইন করে নারবে।',
'wrongpassword' => 'খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ চà§à¦® নাইসে।
আলথকে হতনা কর।',
'wrongpasswordempty' => 'খনà§à¦¤à¦¾ চাবি খালি ইসে।
বারো হতনা কর।',
'passwordtooshort' => 'খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ যেসারেউ {{PLURAL:$1|মেয়েক আকগর|$1 মেয়েকর}} অনা লাগতই।',
'password-name-match' => 'তর আতাকà§à¦°à¦¾à¦° নাঙহানে বারো খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿à¦¯à¦¼à§‡ তঙাল অনা লাগতই।',
+'password-login-forbidden' => 'আতাকà§à¦°à¦¾ à¦à¦—র নাঙ বারো খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ বà§à¦¯à¦¬à¦¹à¦¾à¦° করানিতà§à¦¤ থেপকরিয়া থসি।',
'mailmypassword' => 'নà§à§±à¦¾ খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ ইমেইল করেদে',
'passwordremindertitle' => 'নà§à¦¯à¦¼à¦¾ খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ {{SITENAME}}র কাজে',
'passwordremindertext' => 'কà§à¦™à¦— আগই (মনে অর তি, $1 আইপি ঠিকানা à¦à¦¹à¦¾à¦¤à§à¦¤) হেইচা করিসত যে আমি তরে {{SITENAME}}-র কা আরাক নà§à§±à¦¾ খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ দিয়া পেঠাদেনার কা ($4)।
@@ -520,9 +529,10 @@ $2',
'usernamehasherror' => 'আতাকà§à¦°à¦¾à¦° নাঙে hash মেয়েক থানা নà§à§±à¦¾à¦°à¦¬',
'login-throttled' => 'হাদি à¦à¦¹à¦¾à¦¨ তি বারে বারে হমানির হৎনা করিসত।
বারো হৎনা করানির আগে খানি à¦à¦¿à¦°à¦¾à¥¤',
+'login-abort-generic' => 'তর লগইন করানিহান সফল নাইসে - বাতিল অইল',
'loginlanguagelabel' => 'ঠার: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ সিলকরানি',
'resetpass_announce' => 'তি লেপ নাইসে খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ আগন হমাসত। হমানিহান পà§à¦°à¦¾ করানির কা নà§à§±à¦¾ লেপà§à¦ªà¦¾ খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ হঙকরানি লাগতই:',
'resetpass_header' => 'খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ সিলকর',
@@ -539,6 +549,12 @@ $2',
নিঙকরà§à¦°à¦¿à¦¤à¦¾ তি হাদিà¦à¦¹à¦¾à¦¨ তর খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿à¦— সিলকরিসত নাইলে আরাক লেপনেই খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ আগর হেইচা করিসত।',
'resetpass-temp-password' => 'লেপনাইসে খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿:',
+# Special:PasswordReset
+'passwordreset' => 'খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ রিসেট',
+'passwordreset-legend' => 'খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿ রিসেট',
+'passwordreset-username' => 'আতাকà§à¦°à¦¾à¦° নাংহান:',
+'passwordreset-domain' => 'ডমেইন:',
+
# Edit page toolbar
'bold_sample' => 'গাঢ়পা ৱাহি',
'bold_tip' => 'গাঢ়পা ৱাহি',
@@ -550,8 +566,6 @@ $2',
'extlink_tip' => 'বারেদের মিলাপ (মà§à¦™à§‡ http:// বারনি না পাহà§à¦°à¦¿à¦¸)',
'headline_sample' => 'চিঙনাঙর খনà§à¦¤à¦¾à¦¹à¦¾à¦¨à¦¿',
'headline_tip' => 'থাক ২র চিঙনাঙ',
-'math_sample' => 'à¦à¦¹à¦¾à¦¤ সà§à¦¤à§à¦° বরা',
-'math_tip' => 'অংকর সà§à¦¤à§à¦° (LaTeX)',
'nowiki_sample' => 'ফরমেট নাকরিসি মেয়েক বরা',
'nowiki_tip' => 'উইকির পাজালানিহান লালà§à¦¯à¦¼à¦¾ যাগা',
'image_tip' => 'তিলকরিসি ফাইলগ',
@@ -570,6 +584,7 @@ $2',
'showlivepreview' => 'à¦à¦ªà§à¦ªà¦¾à¦—ার আগচা',
'showdiff' => 'পতাসিতা দেহাদে',
'anoneditwarning' => "'''সিঙà§à¦‡à¦¸à¦ƒ''' তি লগইন নাকরিসত। পতানির ইতিহাসহাত তর IP addressহান সিজিল ইতই।",
+'anonpreviewwarning' => 'তি লগইন নাকরিসত। পতানির ইতিহাসহাত তর IP addressহান সিজিল ইতই।',
'missingsummary' => "'''নিঙশিঙ''': তা পতাসত অহার সারাংশ না দিয়াসত। আরাকমৠ\"ইতà§à¦•à¦°\" গà§à¦¥à¦¾à¦®à¦—ত কà§à¦²à¦¿à¦• করর, অহান ইলে সারাংশ বাকà§à¦¯à¦¹à¦¾à¦¨ বেলিয়াই তর পতানিহান ইতৠইতই।",
'missingcommenttext' => 'কৃপা করিয়া তলে তর মতহান দে।',
'missingcommentheader' => "'''সিঙà§à¦‡à¦¸:''' তি à¦à¦°à§‡ মনà§à¦¤à¦¬à§à¦¯ à¦à¦¹à¦¾à¦¨à¦° কা কোন বিষয়/চিঙনাঙ না দিয়াসত। তি ইতà§à¦•à¦°à¦¾à¦¨à¦¿à¦° গà§à¦¥à¦¾à¦®à¦—ত যাতিলে বিষয়/চিঙনাঙ নেয়à§à¦‡à¦¯à¦¼à¦¾à¦‡ ইতৠইতই।",
@@ -628,7 +643,7 @@ $2',
'noarticletext-nopermission' => 'à¦à¦ªà¦¾à¦—াউ কোন মেয়েক নেই পাতা à¦à¦¹à¦¾à¦¤à¥¤
তি [[Special:Search/{{PAGENAME}}|à¦à¦°à§‡ পাতার চিঙনাঙ à¦à¦¹à¦¾à¦¨à¦² বিসারা]] হের পাতা অতাত,
নাইলে <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} মিল আসে লগ অতাত বিসারা]</span>।',
-'userpage-userdoesnotexist' => 'আতাকà§à¦°à¦¾ "$1"র অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà¦¹à¦¾à¦¨ না হঙিসে।
+'userpage-userdoesnotexist' => 'আতাকà§à¦°à¦¾ "<nowiki>$1</nowiki>"র অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà¦¹à¦¾à¦¨ না হঙিসে।
তি পাতা à¦à¦¹à¦¾à¦¨ হঙকরানি/পতানি চারাতানা কিতা খালকরিয়া চা।',
'userpage-userdoesnotexist-view' => 'আতাকà§à¦°à¦¾à¦° à¦à¦•à¦¾à¦‰à¦¨à§à¦Ÿ "$1" না মিহিসে।',
'clearyourcache' => "'''খিয়াল থ:''' তর পছনহানি রকà§à¦·à¦¾ করানির থাঙনাত পতাহানি চানার কা তর বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°à¦° কà§à¦¯à¦¾à¦¶ লালà§à¦¯à¦¼à¦¾ যানা লাগতে পারে। '''মোজিলা/ফায়ারফকà§à¦¸/সাফারি:''' শিফট কী চিপিয়া থয়া রিলোড-ঠকà§à¦²à¦¿à¦• কর, নাইলে ''কনà§à¦Ÿà§à¦°à§‹à¦²-শিফট-R''(à¦à¦ªà¦² মà§à¦¯à¦¾à¦•-ঠ''কমানà§à¦¡-শিফট-R'') আকপাকে চিপা; '''ইনà§à¦Ÿà¦¾à¦°à¦¨à§‡à¦Ÿ à¦à¦•à§à¦¸à¦ªà§à¦²à§‹à¦°à¦¾à¦°:''' ''কনà§à¦Ÿà§à¦°à§‹à¦²'' চিপিয়া থয়া রিফà§à¦°à§‡à¦¶-ঠকà§à¦²à¦¿à¦• কর, নাইলে ''কনà§à¦Ÿà§à¦°à§‹à¦²-F5'' চিপা; '''কংকারার:''' হà§à¦¦à§à¦¦à¦¾ রিলোড কà§à¦²à¦¿à¦• করলে বা F5 চিপিলে চলতই; '''অপেরা''' আতাকà§à¦°à¦¾à¦‡ ''Tools→Preferences''-ঠগিয়া কাশ সমà§à¦ªà§‚রà§à¦£ ঙকà§à¦·à¦¿ করানি লাগতে পারে।",
@@ -732,7 +747,7 @@ $2',
'history-feed-item-nocomment' => '$1 খেনà§à¦¤à¦¾à¦® $2 ত',
# Revision deletion
-'rev-deleted-comment' => '(মনà§à¦¤à¦¬à§à¦¯ থেইকরলাং)',
+'rev-deleted-comment' => '(পতানির সারাংশ থেইকরলাং)',
'rev-deleted-user' => '(আতাকà§à¦°à¦¾à¦° নাঙহান থেইকরলাং)',
'rev-deleted-event' => '(লগ অà§à¦¯à¦¾à¦•à¦¶à¦¨ থেইকরলাং)',
'rev-delundel' => 'ফঙ/আরà§à¦® কর',
@@ -881,9 +896,10 @@ $2',
'changepassword' => 'খনà§à¦¤à¦¾à¦šà¦¾à¦¬à¦¿(password) পতা',
'prefs-skin' => 'সরহান',
'skin-preview' => 'আগচা',
-'prefs-math' => 'গণিত',
'datedefault' => 'পছন করাতা নেই',
+'prefs-beta' => 'বেটার বৈশিষà§à¦Ÿà¦¹à¦¾à¦¨à¦¿',
'prefs-datetime' => 'তারিখ বারো সময়',
+'prefs-labs' => 'পরীকà§à¦·à¦¾à¦—ারর বৈশিষà§à¦Ÿà¦¹à¦¾à¦¨à¦¿',
'prefs-rc' => 'হাদি à¦à¦¹à¦¾à¦¨à¦° পতানি',
'prefs-watchlist-days-max' => 'বপিলে ৭ দিন পেয়া',
'prefs-misc' => 'নানন',
@@ -1236,11 +1252,9 @@ Also see [[Special:WantedCategories|wanted categories]].',
# Watchlist
'watchlist' => 'মর তালাবি',
'mywatchlist' => 'মর তালাবি',
-'addedwatch' => 'তালাবির তালিকাহাত থনা ইল',
'addedwatchtext' => "\"<nowiki>\$1</nowiki>\" পাতা à¦à¦¹à¦¾à¦¨ তর [[Special:Watchlist|আহির-আরà§à¦® তালিকা]]-ত তিলকরানি ইল। পিসেদে à¦à¦°à§‡ পাতা à¦à¦¹à¦¾à¦¨ বারো পাতা à¦à¦¹à¦¾à¦¨à¦° লগে সাকেই আসে য়à§à¦¯à¦¾à¦°à§€ পাতাত অইতই হারি জাতর পতানি à¦à¦¹à¦¾à¦¨à¦¾à¦¤ তিলকরানি অইতই। অতাবাদেউ [[Special:RecentChanges|হাদি à¦à¦¹à¦¾à¦¨à¦° পতানিহানি]]-ত পাতা à¦à¦¹à¦¾à¦¨à¦°à§‡ '''গাঢ়করা''' মেয়েকে দেহা দেনা অইতই যাতে তি নà§à¦™à¦¿à¦•à¦°à§‡ পাতা à¦à¦¹à¦¾à¦¨ চিনে পারবেতা।
পিসেদে তি পাতা à¦à¦¹à¦¾à¦¨à¦°à§‡ থেইকরানি মনেইলে \"আহির-আরà§à¦®à§‡à¦¤à§à¦¤ থেইকরেদে\" টà§à¦¯à¦¾à¦¬à¦—ত কà§à¦²à¦¿à¦• করিস৷",
-'removedwatch' => 'তালাবির পাতাতà§à¦¤ গà§à¦¸à¦¾à¦¦à§‡',
'removedwatchtext' => 'à¦à¦°à§‡ পাতা "[[:$1]]" à¦à¦¹à¦¾à¦¨ গà§à¦¸à¦¾à¦¨à¦¿ ইলতা [[Special:Watchlist|তর তালাবির]] পাতাতà§à¦¤à¥¤',
'watch' => 'তালাবি',
'watchthispage' => 'পাতাà¦à¦¹à¦¾à¦¨ খিয়ালে থ',
@@ -1263,7 +1277,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'confirmdeletetext' => 'তি যে পাতাহান পà§à¦¸à¦¾à¦¨à¦¿ লেপà§à¦‡à¦¸à¦¤ অহানর লগে ইতিহাসহানউ পà§à¦¸à¦¤à¦‡à¥¤
তি লেপকর যে তি à¦à¦¹à¦¾à¦¨ করতেই বà§à¦²à¦¿à¦¯à¦¼à¦¾, বারো তি à¦à¦¹à¦¾à¦¨à¦° পিসহান হারপাসত লগে [[{{MediaWiki:Policy-url}}|পলিসিহান]] ইলয়া তি কামà¦à¦¹à¦¾à¦¨ করানিত লেপà§à¦‡à¦¸à¦¤à¥¤',
'actioncomplete' => 'কামহান লমিল।',
-'deletedtext' => '"<nowiki>$1</nowiki>" পà§à¦¸à¦¾à¦¨à¦¿ অইল।
+'deletedtext' => '"$1" পà§à¦¸à¦¾à¦¨à¦¿ অইল।
চা $2 à¦à¦¹à¦¾à¦° বারে আগে আসে পà§à¦¸à¦¾à¦¨à¦¿à¦° লাতংগ।',
'deletedarticle' => 'পà§à¦¸à¦¾à¦¨à¦¿à¦‡à¦² "[[$1]]"',
'dellogpage' => 'পà§à¦¸à¦¿à¦¸à¦¿à¦¤à¦¾à¦° লাতংগ',
@@ -1284,7 +1298,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'protectexpiry' => 'মিয়াদহান লালর:',
'protect_expiry_invalid' => 'খেনà§à¦¤à¦¾à¦® লিতনাহান লালà§à¦‡à¦¸à§‡à¥¤',
'protect_expiry_old' => 'বাতিলর খেনà§à¦¤à¦¾à¦®à¦¹à¦¾à¦¨ আগেকার তারিখে পরিসে।',
-'protect-text' => "তি চেইলে '''<nowiki>$1</nowiki> পাতাহানর লà§à¦•à¦°à¦¾à¦¨à¦¿à¦° মাতà§à¦°à¦¾à¦¹à¦¾à¦¨ চানা বারো সিলকরানি পারর'''।",
+'protect-text' => "তি চেইলে '''$1 পাতাহানর লà§à¦•à¦°à¦¾à¦¨à¦¿à¦° মাতà§à¦°à¦¾à¦¹à¦¾à¦¨ চানা বারো সিলকরানি পারর'''।",
'protect-locked-access' => "তরতা পাতা লà§à¦•à¦°à§‡ পারানির মত য়à§à¦¯à¦¾à¦¥à¦¾à¦™ নেই।
পাতাহান '''$1'''র à¦à¦ªà¦¾à¦—ার পাজালানিহান:",
'protect-cascadeon' => 'à¦à¦°à§‡ পাতাহান à¦à¦ªà¦¾à¦—া লà§à¦•à¦°à¦¾à¦¨à¦¿ অসে, কারণ পাতাহানর তলে {{PLURAL:$1|পাতা আহানাত|পাতা হানিত}} অনà§à¦¤à¦°à§à¦­à§à¦•à§à¦¤ ইসে, যেহানাত আগপাতাকরেকà§à¦°à¦¾à¦¤à¦¾à¦¤ লà§à¦•à¦°à¦¾à¦¨à¦¿à¦¹à¦¾à¦¨ আসে। তি চেইলে অহান সিলকরে পারর, তবে à¦à¦°à§‡ আগপাতাকরেকà§à¦°à¦¾à¦¤à¦¾à¦¤ কোন বদালা নাইব।',
@@ -1368,7 +1382,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
'blockiptext' => 'লেপকরিসত আইপি ঠিকানাহানরে নাইলে আতাকà§à¦°à¦¾à¦—রে ইকরানিতà§à¦¤ থেপকরানি থকিলে তলর ফরà§à¦®à¦¹à¦¾à¦¨ বà§à¦¯à¦¬à¦¹à¦¾à¦° কর।
à¦à¦¹à¦¾à¦¨ হà§à¦¦à§à¦¦à¦¾ ধà§à¦¬à¦‚সর খৌরাঙ থেপকরানি বারো [[{{MediaWiki:Policy-url}}|নীতিমালা]] à¦à¦•à¦°à¦¿à¦¯à¦¼à¦¾ পতানি থক।
তলে লেপà§à¦ªà¦¾ কারণ আহান মাত (উদাহরনে মাতানি à¦à¦•à¦°à§‡à¦°, যে যে পাতাহানি ধà§à¦¬à¦‚স করানি অসে অতা মাতে পারর)।',
-'ipaddress' => 'আইপি ঠিকানাহান:',
'ipadressorusername' => 'আইপি ঠিকানাহান বারো আতাকà§à¦°à¦¾à¦° নাঙহান:',
'ipbexpiry' => 'মেয়াদহান লালà§à¦‡à¦¤à¦‡à¦¤à¦¾:',
'ipbreason' => 'কারণ:',
@@ -1381,7 +1394,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
** দরপানির অসারে আচরণ/হিনকরানি
** আবকচা অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿà¦° অপবà§à¦¯à¦¬à¦¹à¦¾à¦°
** আতাকà§à¦°à¦¾à¦° নাঙহান চিঙথি ইসে',
-'ipbanononly' => 'বেনাঙর আতাকà§à¦°à¦¾à¦°à§‡ থেপ কর',
'ipbcreateaccount' => 'অà§à¦¯à¦¾à¦•à¦¾à¦‰à¦¨à§à¦Ÿ হঙকরানি নাদি',
'ipbemailban' => 'আতাকà§à¦°à¦¾à¦—রে ই-মেইল দিয়াপেঠানি নাদি',
'ipbenableautoblock' => 'à¦à¦°à§‡ আতাকà§à¦°à¦¾ à¦à¦—ই বà§à¦¯à¦¬à¦¹à¦¾à¦° করিসিল লমিলগা আইপি ঠিকানাহান, বারো পিসেদে যে যে আইপি ঠিকানাতà§à¦¤ পতানির হৎনা করতই অতারে আপà§à¦ªà¦¾à¦¨à§‡ নাদি।',
@@ -1396,7 +1408,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
'blockipsuccesssub' => 'থেপকরানিহান চà§à¦®à¦¿à¦²',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] রে থেপকরিয়া থসি <br />থেপকরানিহান খাল করানি থকিলে,[[Special:IPBlockList| থেপকরিয়া থসি আইপি ঠিকানার তালিকাহান]] চা।',
'ipblocklist' => 'থেপকরিয়া থসি আইপি ঠিকানা বারো আতাকà§à¦°à¦¾à¦° লাতঙগি',
-'blocklistline' => '$1 তারিখে $2, $3 ($4) রে থেপকরানি অসে।',
'blocklink' => 'থেপ কর',
'unblocklink' => 'বà§à¦²à¦•à¦¨à¦¾à¦•à¦°à¦¿',
'change-blocklink' => 'বà§à¦²à¦• সিলকর',
@@ -1455,7 +1466,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'allmessagesname' => 'নাং',
'allmessagescurrent' => 'হাদি à¦à¦¹à¦¾à¦¨à¦° ৱাহি',
'allmessagestext' => 'তলে মিডিয়াউইকির নাঙরথাকে পানা à¦à¦•à¦°à§‡à¦° সিসà§à¦Ÿà§‡à¦® পৌহানির তালিকাহান দেনা ইল।
-কৃপা করিয়া [http://www.mediawiki.org/wiki/Localisation মিডিয়াউইকি অনà§à¦¬à¦¾à¦¦à¦° হেইচা পাতাত] বারো [http://translatewiki.net translatewiki.net] মিডিয়াউইকি অনà§à¦¬à¦¾à¦¦ করানির কা যানা পারর।',
+কৃপা করিয়া [//www.mediawiki.org/wiki/Localisation মিডিয়াউইকি অনà§à¦¬à¦¾à¦¦à¦° হেইচা পাতাত] বারো [//translatewiki.net translatewiki.net] মিডিয়াউইকি অনà§à¦¬à¦¾à¦¦ করানির কা যানা পারর।',
'allmessages-filter-legend' => 'সাক',
'allmessages-filter-unmodified' => 'নাসিলথাইতে',
'allmessages-filter-all' => 'হাবà§à¦¬à¦¿',
@@ -1541,19 +1552,15 @@ Also see [[Special:WantedCategories|wanted categories]].',
'siteusers' => '{{SITENAME}}র {{PLURAL:$2|আতাকà§à¦°à¦¾|আতাকà§à¦°à¦¾à¦—ি}} $1',
'anonusers' => '{{SITENAME}}র বেনাঙর {{PLURAL:$2|আতাকà§à¦°à¦¾|আতাকà§à¦°à¦¾à¦—ি}} $1',
-# Info page
-'infosubtitle' => 'পাতার বারে',
-
# Browsing diffs
'previousdiff' => '↠পà§à¦°à¦¾à¦¨à¦¾ পতা',
'nextdiff' => 'নà§à§±à¦¾ পতা →',
# Media information
-'file-info-size' => '$1 × $2 পিকà§à¦¸à§‡à¦², ফাইলর সাইজহান: $3, à¦à¦®à¦†à¦‡à¦à¦®à¦‡-র অংতা: $4',
-'file-nohires' => '<small>à¦à¦¹à¦¾à¦¤à§à¦¤ গজর রিজরিউশন নেই।</small>',
-'svg-long-desc' => 'SVG ফাইল, সাধারনত $1 × $2 পিকà§à¦¸à§‡à¦², ফাইলর সাইজহান: $3',
-'show-big-image' => 'পà§à¦²à§à¦²à¦¾à¦ª রিজলিউশন',
-'show-big-image-thumb' => '<small>আগচা হানর সাইজহান: $1 × $2 পিকà§à¦¸à§‡à¦²à¦¸</small>',
+'file-info-size' => '$1 × $2 পিকà§à¦¸à§‡à¦², ফাইলর সাইজহান: $3, à¦à¦®à¦†à¦‡à¦à¦®à¦‡-র অংতা: $4',
+'file-nohires' => '<small>à¦à¦¹à¦¾à¦¤à§à¦¤ গজর রিজরিউশন নেই।</small>',
+'svg-long-desc' => 'SVG ফাইল, সাধারনত $1 × $2 পিকà§à¦¸à§‡à¦², ফাইলর সাইজহান: $3',
+'show-big-image' => 'পà§à¦²à§à¦²à¦¾à¦ª রিজলিউশন',
# Special:NewFiles
'newimages' => 'নà§à§±à¦¾ ফাইলর গà§à¦¯à¦¾à¦²à¦¾à¦°à¦¿à¦—',
@@ -1582,22 +1589,26 @@ Also see [[Special:WantedCategories|wanted categories]].',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-n' => 'গাথিগি',
# External editor support
'edit-externally' => 'à¦à¦° ফাইল à¦à¦— পতানির কা বারেদের à¦à¦ªà§à¦²à¦¿à¦•à§‡à¦¶à¦¨ আতা',
-'edit-externally-help' => 'আরাকউ হারপানির কা [http://www.mediawiki.org/wiki/Manual:External_editors সেটাপর নিরà§à¦¦à§‡à¦¶à¦¹à¦¾à¦¨à¦¿] চা।',
+'edit-externally-help' => 'আরাকউ হারপানির কা [//www.mediawiki.org/wiki/Manual:External_editors সেটাপর নিরà§à¦¦à§‡à¦¶à¦¹à¦¾à¦¨à¦¿] চা।',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'হাবà§à¦¬à¦¿',
-'imagelistall' => 'হাবà§à¦¬à¦¿',
-'watchlistall2' => 'হাবà§à¦¬à¦¿',
-'namespacesall' => 'হাবà§à¦¬à¦¿',
-'monthsall' => 'হাবà§à¦¬à¦¿',
-'limitall' => 'হাবà§à¦¬à¦¿',
+'watchlistall2' => 'হাবà§à¦¬à¦¿',
+'namespacesall' => 'হাবà§à¦¬à¦¿',
+'monthsall' => 'হাবà§à¦¬à¦¿',
+'limitall' => 'হাবà§à¦¬à¦¿',
# E-mail address confirmation
'confirmemail' => 'ই-মেইল ঠিকানাহান লেপকর',
diff --git a/languages/messages/MessagesBqi.php b/languages/messages/MessagesBqi.php
index ded0e931..24a19057 100644
--- a/languages/messages/MessagesBqi.php
+++ b/languages/messages/MessagesBqi.php
@@ -274,7 +274,7 @@ $1',
'loginsuccess' => "''' ایسا اویدن به داخل سایت {{SITENAME}} بعنوان \"\$1\".'''",
'nosuchuser' => 'کاربری به ای نام وجود نداره "$1".
حرو٠نام را چک کنین, یا [[Special:UserLogin/signup|درست کنین یه حساب کاربری تازه]].',
-'nosuchusershort' => 'کاربری به ای نام وجود نداره"<nowiki>$1</nowiki>".
+'nosuchusershort' => 'کاربری به ای نام وجود نداره"$1".
حرو٠نام راچک کنین.',
'nouserspecified' => 'ایسا دارین یه نام کاربر ذکر اکنین.',
'wrongpassword' => 'رمز وارد وابیده درست نه.
@@ -295,7 +295,7 @@ $1',
لطÙا بعد از دریاÙت آن داخل سیستم بوین.',
'eauthentsent' => 'یه نامه الکترونیکی سی تایید نشانی پست الکترونیکی به نشانی مورنظر ارسال وابید. قبل زه یو که نامه دیگری قابل ارسال به این نشانی بوه، وا دستورهایی که در آن نامه اویده را جهت تأیید ای مساله که ای نشانی مال ایسانه اجرا کنین.',
-# Password reset dialog
+# Change password dialog
'retypenew' => 'تایپ دوباره رمز:',
# Edit page toolbar
@@ -310,8 +310,6 @@ $1',
لینک خارجی',
'headline_sample' => 'سرخط متن',
'headline_tip' => '2سرخط یکسان',
-'math_sample' => 'Ùرمول نهادن ایچو',
-'math_tip' => 'Ùرمول ریاضی (LaTeX)',
'nowiki_sample' => 'متن Ø´Ú©Ù„ نداده یاÙرمت نوابیده را ایچو بنین',
'nowiki_tip' => 'زه Ùرمت کردن یا Ø´Ú©Ù„ دادن ویکی چشم پوشی Ú©Ù†',
'image_tip' => 'Ùایل محاط وابید',
@@ -557,13 +555,11 @@ $2',
# Watchlist
'watchlist' => 'لیست پیگیریهای مو',
'mywatchlist' => 'لیست پیگیریهای مو',
-'addedwatch' => 'اضا٠وابید به لیست پیگیری',
'addedwatchtext' => "صÙحه «<nowiki>$1</nowiki>» به [[Special:Watchlist|لیست پی‌گیری‌های ]] ایسا
اضا٠وابید.
تغییرات این صÙحه Ùˆ صÙحه صحبت مر بوطه اش در آینده ایچو لیست ابوه. به‌علاوه، ای صÙحه، سی واضح‌تر دیده وابیدن در [[Special:RecentChanges|Ùهرست تغییرات اخیر]] به Ø´Ú©Ù„ <b>سیاه</b> ایا.
ایر بعدا خواستین ای صÙحه زه لیست پی‌گیریهاتو ورداشته بوه، رو «'''عدم پی‌گیری'''» در بالای صÙحه کلیک کنین.",
-'removedwatch' => 'زه لیست پیگیری حذ٠وابید',
'removedwatchtext' => 'آن صÙحه"[[:$1]]" جابجا وابیده زه[[Special:لیست پیگیری|لیست پیگیری ایسا]].',
'watch' => 'پی‌گیری',
'watchthispage' => 'پیگیری ای صÙحه',
@@ -581,7 +577,7 @@ $2',
'confirmdeletetext' => 'ایسا اخوین یه صÙحه بلند با همه گزارش تاریخی هونه حذ٠کنین.
لطÙا کانÙیرم یا تائید کنین Ú©Ù‡ تمایل وقصد ای کار را دارین, وایسا دوین یا Ù…ÛŒ دانید نتایج وآثار ای کار را, Ùˆ ایسا انجام ادین ای کار را مطابق با [[{{MediaWiki:Policy-url}}|سیاست‌ها]].',
'actioncomplete' => 'عمل مربوطه راکامل کن',
-'deletedtext' => '"<nowiki>$1</nowiki>" حذ٠وابیده.
+'deletedtext' => '"$1" حذ٠وابیده.
بوین $2 سی ثبت حذ٠آخر.',
'deletedarticle' => 'حذ٠وابید "[[$1]]"',
'dellogpage' => 'نمایه _ حذÙ',
@@ -599,7 +595,7 @@ $2',
'protectexpiry' => 'سپری وابیده ها:',
'protect_expiry_invalid' => 'با سپری وابیدن وقت غیر معتبره.',
'protect_expiry_old' => 'سپری وابیدن وقت مربوط به گذشته.',
-'protect-text' => "ایسا ممکنه بوینین وتغییر بدین سطح حمایت زه ای صÙحه'''<nowiki>$1</nowiki>'''.",
+'protect-text' => "ایسا ممکنه بوینین وتغییر بدین سطح حمایت زه ای صÙحه'''$1'''.",
'protect-locked-access' => "حساب کاربری ایسا اجازه تغییر سطح حمایت ای صÙحه را نداره.
ای چونه تنظیمات جاری سی آن صÙحه '''$1''':",
'protect-cascadeon' => 'ای صÙحه در حال حاضر Ø­Ùاظت وحمایت وابیده چون Ú©Ù‡ در {{PLURAL:$1|صÙحه|صÙحات}}
@@ -772,11 +768,10 @@ $2',
'nextdiff' => 'تÙاوت بعدی→',
# Media information
-'file-info-size' => '$1 × $2 پیکسل, اندازه Ùایل: $3, MIME نوع: $4',
-'file-nohires' => '<small>قابلیت تÙکیک بالاتری در دسترس نه.</small>',
-'svg-long-desc' => 'SVG Ùایل, تقریبا$1 × $2 پیکسل, اندازه Ùایل: $3',
-'show-big-image' => 'تصویر با قابلیت تÙکیک کامل',
-'show-big-image-thumb' => '<کوچیک>اندازه پیش نمایش: $1 × $2 پیکسلها</کوچیک>',
+'file-info-size' => '$1 × $2 پیکسل, اندازه Ùایل: $3, MIME نوع: $4',
+'file-nohires' => '<small>قابلیت تÙکیک بالاتری در دسترس نه.</small>',
+'svg-long-desc' => 'SVG Ùایل, تقریبا$1 × $2 پیکسل, اندازه Ùایل: $3',
+'show-big-image' => 'تصویر با قابلیت تÙکیک کامل',
# Special:NewFiles
'newimages' => 'گالری Ùایلهای تازه',
@@ -800,11 +795,17 @@ $2',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'اصلاح ای صÙحه با استÙاده زه یه ویرایشگر خارجی',
-'edit-externally-help' => ' سی اطلاعات بیشتر [http://www.mediawiki.org/wiki/Manual:External_editors راهنمایی‌های تنظیمات] اصلاح کننده خارجی را بوینین.',
+'edit-externally-help' => ' سی اطلاعات بیشتر [//www.mediawiki.org/wiki/Manual:External_editors راهنمایی‌های تنظیمات] اصلاح کننده خارجی را بوینین.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'همه',
diff --git a/languages/messages/MessagesBr.php b/languages/messages/MessagesBr.php
index 9a0fedde..6bba26d5 100644
--- a/languages/messages/MessagesBr.php
+++ b/languages/messages/MessagesBr.php
@@ -12,6 +12,7 @@
* @author Fohanno
* @author Fulup
* @author Gwendal
+ * @author Gwenn-Ael
* @author Malafaya
* @author Y-M D
* @author לערי ריינה×רט
@@ -42,78 +43,77 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'AdksaoùDoubl' ),
+ 'Activeusers' => array( 'ImplijerienOberiant' ),
+ 'Allmessages' => array( 'HollGemennadennoù' ),
+ 'Allpages' => array( 'AnHollBajennoù' ),
+ 'Ancientpages' => array( 'PajennoùKozh' ),
+ 'Block' => array( 'Stankañ' ),
+ 'Blockme' => array( 'MaStankañ' ),
+ 'Booksources' => array( 'MammennoùLevr' ),
'BrokenRedirects' => array( 'AdkasoùTorr' ),
- 'Disambiguations' => array( 'Disheñvelout' ),
- 'Userlogin' => array( 'KevreañImplijer' ),
- 'Userlogout' => array( 'DigevreañImplijer' ),
+ 'Categories' => array( 'Rummadoù' ),
+ 'ChangePassword' => array( 'KemmañGer-tremen' ),
+ 'ComparePages' => array( 'KeñveriañPajennoù' ),
+ 'Confirmemail' => array( 'KadarnaatPostel' ),
+ 'Contributions' => array( 'Degasadennoù' ),
'CreateAccount' => array( 'KrouiñKont' ),
- 'Preferences' => array( 'Penndibaboù' ),
- 'Watchlist' => array( 'Roll_evezhiañ' ),
- 'Recentchanges' => array( 'KemmoùDiwezhañ' ),
- 'Upload' => array( 'Pellgargañ' ),
+ 'Disambiguations' => array( 'Disheñvelout' ),
+ 'DoubleRedirects' => array( 'AdksaoùDoubl' ),
+ 'Emailuser' => array( 'PostelImplijer' ),
+ 'Export' => array( 'Ezporzhiañ' ),
+ 'Import' => array( 'Enporzhiañ' ),
+ 'LinkSearch' => array( 'KlaskLiamm' ),
+ 'Listadmins' => array( 'RollMerourien' ),
+ 'Listbots' => array( 'RollBotoù' ),
'Listfiles' => array( 'RollSkeudennoù' ),
- 'Newimages' => array( 'RestroùNevez', 'SkeudennoùNevez' ),
- 'Listusers' => array( 'RollImplijerien' ),
'Listgrouprights' => array( 'RollGwirioùStrollad' ),
- 'Statistics' => array( 'Stadegoù' ),
- 'Randompage' => array( 'DreZegouezh' ),
+ 'Listredirects' => array( 'RollañAdkasoù' ),
+ 'Listusers' => array( 'RollImplijerien' ),
+ 'Log' => array( 'Marilh' ),
'Lonelypages' => array( 'PajennoùEnoUnan' ),
- 'Uncategorizedpages' => array( 'PajennoùDirumm' ),
+ 'Longpages' => array( 'PajennoùHir' ),
+ 'MergeHistory' => array( 'KendeuziñIstor' ),
+ 'Mostlinkedtemplates' => array( 'PatromoùImplijetañ' ),
+ 'Movepage' => array( 'AdkasPajenn' ),
+ 'Mycontributions' => array( 'MaDegasadennoù' ),
+ 'Mypage' => array( 'MaFajenn' ),
+ 'Mytalk' => array( 'MaC\'haozeadennoù' ),
+ 'Newimages' => array( 'RestroùNevez', 'SkeudennoùNevez' ),
+ 'Newpages' => array( 'PajennoùNevez' ),
+ 'Popularpages' => array( 'PajennoùPoblek' ),
+ 'Preferences' => array( 'Penndibaboù' ),
+ 'Protectedpages' => array( 'PajennoùGwarezet' ),
+ 'Protectedtitles' => array( 'TitloùGwarezet' ),
+ 'Randompage' => array( 'DreZegouezh' ),
+ 'Recentchanges' => array( 'KemmoùDiwezhañ' ),
+ 'Recentchangeslinked' => array( 'KemmoùKar' ),
+ 'Search' => array( 'Klask' ),
+ 'Shortpages' => array( 'PajennoùBerr' ),
+ 'Specialpages' => array( 'PajennoùDibar' ),
+ 'Statistics' => array( 'Stadegoù' ),
+ 'Tags' => array( 'Balizennoù' ),
+ 'Unblock' => array( 'Distankañ' ),
'Uncategorizedcategories' => array( 'RummadoùDirumm' ),
'Uncategorizedimages' => array( 'RestroùDirumm' ),
+ 'Uncategorizedpages' => array( 'PajennoùDirumm' ),
'Uncategorizedtemplates' => array( 'PatromoùDirumm' ),
+ 'Undelete' => array( 'Diziverkañ' ),
'Unusedcategories' => array( 'RummadoùDizimplij' ),
'Unusedimages' => array( 'RestroùDizimplij' ),
- 'Wantedpages' => array( 'LiammoùTorr' ),
+ 'Unusedtemplates' => array( 'PatromoùDizimplij' ),
+ 'Unwatchedpages' => array( 'PajennoùNannEvezhiet' ),
+ 'Upload' => array( 'Pellgargañ' ),
+ 'Userlogin' => array( 'KevreañImplijer' ),
+ 'Userlogout' => array( 'DigevreañImplijer' ),
+ 'Userrights' => array( 'GwirioùImplijer' ),
+ 'Version' => array( 'Stumm' ),
'Wantedcategories' => array( 'RummadoùGoulennet' ),
'Wantedfiles' => array( 'RestroùGoulennet' ),
+ 'Wantedpages' => array( 'LiammoùTorr' ),
'Wantedtemplates' => array( 'PatromoùGoulennet' ),
- 'Mostlinkedtemplates' => array( 'PatromoùImplijetañ' ),
- 'Shortpages' => array( 'PajennoùBerr' ),
- 'Longpages' => array( 'PajennoùHir' ),
- 'Newpages' => array( 'PajennoùNevez' ),
- 'Ancientpages' => array( 'PajennoùKozh' ),
- 'Protectedpages' => array( 'PajennoùGwarezet' ),
- 'Protectedtitles' => array( 'TitloùGwarezet' ),
- 'Allpages' => array( 'AnHollBajennoù' ),
- 'Unblock' => array( 'Distankañ' ),
- 'Specialpages' => array( 'PajennoùDibar' ),
- 'Contributions' => array( 'Degasadennoù' ),
- 'Emailuser' => array( 'PostelImplijer' ),
- 'Confirmemail' => array( 'KadarnaatPostel' ),
+ 'Watchlist' => array( 'Roll_evezhiañ' ),
'Whatlinkshere' => array( 'PetraGasBetekAmañ' ),
- 'Recentchangeslinked' => array( 'KemmoùKar' ),
- 'Movepage' => array( 'AdkasPajenn' ),
- 'Blockme' => array( 'MaStankañ' ),
- 'Booksources' => array( 'MammennoùLevr' ),
- 'Categories' => array( 'Rummadoù' ),
- 'Export' => array( 'Ezporzhiañ' ),
- 'Version' => array( 'Stumm' ),
- 'Allmessages' => array( 'HollGemennadennoù' ),
- 'Log' => array( 'Marilh' ),
- 'Blockip' => array( 'Stankañ' ),
- 'Undelete' => array( 'Diziverkañ' ),
- 'Import' => array( 'Enporzhiañ' ),
- 'Userrights' => array( 'GwirioùImplijer' ),
- 'Unwatchedpages' => array( 'PajennoùNannEvezhiet' ),
- 'Listredirects' => array( 'RollañAdkasoù' ),
- 'Unusedtemplates' => array( 'PatromoùDizimplij' ),
- 'Mypage' => array( 'MaFajenn' ),
- 'Mytalk' => array( 'MaC\'haozeadennoù' ),
- 'Mycontributions' => array( 'MaDegasadennoù' ),
- 'Listadmins' => array( 'RollMerourien' ),
- 'Listbots' => array( 'RollBotoù' ),
- 'Popularpages' => array( 'PajennoùPoblek' ),
- 'Search' => array( 'Klask' ),
- 'Resetpass' => array( 'KemmañGer-tremen' ),
'Withoutinterwiki' => array( 'HepEtrewiki' ),
- 'MergeHistory' => array( 'KendeuziñIstor' ),
- 'LinkSearch' => array( 'KlaskLiamm' ),
- 'Tags' => array( 'Balizennoù' ),
- 'Activeusers' => array( 'ImplijerienOberiant' ),
- 'ComparePages' => array( 'KeñveriañPajennoù' ),
- 'Badtitle' => array( 'TitlFall' ),
);
$magicWords = array(
@@ -206,8 +206,8 @@ $messages = array(
'tog-shownumberswatching' => 'Diskouez an niver a lennerien',
'tog-oldsig' => 'Ar sinadur zo evit poent :',
'tog-fancysig' => 'Ober gant ar sinadur evel pa vefe wikitestenn (hep liamm emgefre)',
-'tog-externaleditor' => "Ober gant ur skridaozer diavaez dre ziouer (evit arbennigourien hepken rak ezhomm zo arventenniñ hoc'h urzhiataer evit se. [http://www.mediawiki.org/wiki/Manual:External_editors Titouroù all.])",
-'tog-externaldiff' => "Ober gant ur c'heñverier diavaez dre ziouer (evit arbennigourien hepken rak ezhomm zo arventenniñ hoc'h urzhiataer evit se. [http://www.mediawiki.org/wiki/Manual:External_editors Titouroù all.])",
+'tog-externaleditor' => "Ober gant ur skridaozer diavaez dre ziouer (evit arbennigourien hepken rak ezhomm zo arventenniñ hoc'h urzhiataer evit se. [//www.mediawiki.org/wiki/Manual:External_editors Titouroù all.])",
+'tog-externaldiff' => "Ober gant ur c'heñverier diavaez dre ziouer (evit arbennigourien hepken rak ezhomm zo arventenniñ hoc'h urzhiataer evit se. [//www.mediawiki.org/wiki/Manual:External_editors Titouroù all.])",
'tog-showjumplinks' => 'Gweredekaat al liammoù moned "lammat da"',
'tog-uselivepreview' => 'Implijout Rakwelet prim (JavaScript) (taol-arnod)',
'tog-forceeditsummary' => 'Kemenn din pa ne skrivan netra er stern diverrañ',
@@ -304,15 +304,7 @@ $messages = array(
'listingcontinuesabbrev' => "(war-lerc'h)",
'index-category' => 'Pajennoù menegeret',
'noindex-category' => "Pajennoù n'int ket menegeret",
-
-'mainpagetext' => "'''Meziant MediaWiki staliet.'''",
-'mainpagedocfooter' => "Sellit ouzh [http://meta.wikimedia.org/wiki/Help:Contents Sturlevr an implijerien] evit gouzout hiroc'h war an doare da implijout ar meziant wiki.
-
-== Kregiñ ganti ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+'broken-file-category' => 'Pajennoù enno liamm torr war-zu restroù',
'about' => 'Diwar-benn',
'article' => 'Pennad',
@@ -364,10 +356,10 @@ $messages = array(
'history' => 'Istor ar bajenn',
'history_short' => 'Istor',
'updatedmarker' => 'kemmet abaoe ma zaol-sell diwezhañ',
-'info_short' => 'Titouroù',
'printableversion' => 'Stumm da voullañ',
'permalink' => "Chomlec'h ar stumm-mañ",
'print' => 'Moullañ',
+'view' => 'Gwelet',
'edit' => 'Kemmañ',
'create' => 'Krouiñ',
'editthispage' => 'Kemmañ ar bajenn-mañ',
@@ -375,6 +367,7 @@ $messages = array(
'delete' => 'Diverkañ',
'deletethispage' => 'Diverkañ ar bajenn-mañ',
'undelete_short' => "Diziverkañ {{PLURAL:$1|ur c'hemm|$1 kemm}}",
+'viewdeleted_short' => "Gwelet {{PLURAL:$1|ur c'hemm diverket|$1 kemm diverket}}",
'protect' => 'Gwareziñ',
'protect_change' => 'kemmañ',
'protectthispage' => 'Gwareziñ ar bajenn-mañ',
@@ -458,6 +451,8 @@ $1',
'toc' => 'Taolenn',
'showtoc' => 'diskouez',
'hidetoc' => 'kuzhat',
+'collapsible-collapse' => 'Pakañ',
+'collapsible-expand' => 'Dispakañ',
'thisisdeleted' => 'Diskouez pe diziverkañ $1 ?',
'viewdeleted' => 'Gwelet $1?',
'restorelink' => "{{PLURAL:$1|ur c'hemm diverket|$1 kemm diverket}}",
@@ -469,6 +464,8 @@ $1',
'page-rss-feed' => 'Lanv RSS evit "$1"',
'page-atom-feed' => 'Lanv Atom evit "$1"',
'red-link-title' => "$1 (n'eus ket eus ar bajenn-mañ)",
+'sort-descending' => 'Urzhiañ war-draoñ',
+'sort-ascending' => 'Urzhiañ war-laez',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Pajenn',
@@ -550,12 +547,13 @@ Goulenn : $2",
'protectedpagetext' => "Prennet eo bet ar bajenn-mañ. N'haller ket degas kemmoù enni.",
'viewsourcetext' => 'Gallout a rit gwelet hag eilañ danvez ar bajenn-mañ',
'protectedinterface' => 'Testenn ar bajenn-mañ a dalvez evit etrefas ar meziant. Setu perak eo bet gwarezet ar bajenn.',
-'editinginterface' => "'''Diwallit :''' Emaoc'h oc'h adaozañ ur bajenn a dalvez da sevel skridoù evit etrefas ar meziant. Ar c'hemmoù graet d'ar bajenn-mañ a zegaso kemmoù war etrefas an holl implijerien. Mar fell deoc'h skoazellañ evit treiñ traoù, soñjit kentoc'h implijout [http://translatewiki.net/wiki/Main_Page?setlang=br translatewiki.net], ar raktres evit lec'helaat MediaWiki.",
+'editinginterface' => "'''Diwallit :''' Emaoc'h oc'h adaozañ ur bajenn a dalvez da sevel skridoù evit etrefas ar meziant. Ar c'hemmoù graet d'ar bajenn-mañ a zegaso kemmoù war etrefas an holl implijerien. Mar fell deoc'h skoazellañ evit treiñ traoù, soñjit kentoc'h implijout [//translatewiki.net/wiki/Main_Page?setlang=br translatewiki.net], ar raktres evit lec'helaat MediaWiki.",
'sqlhidden' => '(Reked SQL kuzhet)',
'cascadeprotected' => 'Gwarezet eo ar bajenn-mañ; n\'haller ket degas kemmoù enni peogwir he c\'haver er {{PLURAL:$1|bajenn|pajennoù}} da-heul zo bet gwarezet en ur zibab an dibarzh "skalierad" :
$2',
'namespaceprotected' => "N'oc'h ket aotreet da zegas kemmoù e pajennoù an esaouenn anv '''$1'''.",
-'customcssjsprotected' => "N'oc'h ket aotreet da zegas kemmoù war ar bajenn-mañ rak kavout a reer enni arventennoù personel un implijer all.",
+'customcssprotected' => "N'oc'h ket aotreet da zegas kemmoù war ar bajenn CSS-mañ rak kavout a reer enni arventennoù personel un implijer all.",
+'customjsprotected' => "N'oc'h ket aotreet da zegas kemmoù war ar bajenn JavaScript-mañ rak kavout a reer enni arventennoù personel un implijer all.",
'ns-specialprotected' => "N'haller ket kemmañ ar pajennoù en esaouenn anv {{ns:special}}.",
'titleprotected' => "Gwarezet eo bet an titl-mañ p'eo bet krouet gant [[User:$1|$1]].
Setu amañ perak ''$2''.",
@@ -594,6 +592,7 @@ Na zisoñjit ket resisaat ho [[Special:Preferences|penndibaboù evit {{SITENAME}
'createaccount' => 'Krouiñ ur gont nevez',
'gotaccount' => "Ur gont zo ganeoc'h dija ? '''$1'''.",
'gotaccountlink' => 'Kevreañ',
+'userlogin-resetlink' => "Ha disoñjet hoc'h eus ho titouroù kevreañ ?",
'createaccountmail' => 'dre bostel',
'createaccountreason' => 'Abeg :',
'badretype' => 'Ne glot ket ar gerioù-tremen an eil gant egile.',
@@ -603,13 +602,15 @@ Dibabit un anv all mar plij.",
'createaccounterror' => 'Dibosupl krouiñ ar gont : $1',
'nocookiesnew' => "Krouet eo bet ar gont implijer met n'oc'h ket kevreet. {{SITENAME}} a implij toupinoù evit ar c'hevreañ met diweredekaet eo an toupinoù ganeoc'h. Trugarez da weredekaat anezho ha da gevreañ en-dro.",
'nocookieslogin' => "{{SITENAME}} a implij toupinoù evit kevreañ met diweredekaet eo an toupinoù ganeoc'h. Trugarez da weredekaat anezho ha da gevreañ en-dro.",
+'nocookiesfornew' => "N'eo ket bet krouet ar gont implijer peogwir n'eus ket bet gallet gwiriañ an orin anezhi.
+Gwiriit eo bet gweredekaet an toupinoù, adkargit ar bajenn ha klaskit en-dro.",
'noname' => "N'hoc'h eus lakaet anv implijer ebet.",
'loginsuccesstitle' => "Kevreet oc'h.",
'loginsuccess' => "'''Kevreet oc'h bremañ ouzh {{SITENAME}} evel \"\$1\".'''",
'nosuchuser' => 'N\'eus ket eus an implijer "$1".
Kizidik eo anv an implijer ouzh ar pennlizherennoù
Gwiriit eo bet skrivet mat an anv ganeoc\'h pe [[Special:UserLogin/signup|krouit ur gont nevez]].',
-'nosuchusershort' => "N'eus perzhiad ebet gantañ an anv « <nowiki>$1</nowiki> ». Gwiriit ar reizhskrivadur.",
+'nosuchusershort' => "N'eus perzhiad ebet gantañ an anv « $1 ». Gwiriit ar reizhskrivadur.",
'nouserspecified' => "Ret eo deoc'h spisaat un anv implijer.",
'login-userblocked' => "Stanket eo an implijer-mañ. N'eo ket aotret da gevreañ.",
'wrongpassword' => 'Ger-tremen kamm. Klaskit en-dro.',
@@ -653,13 +654,14 @@ Na daolit ket evezh ouzh ar c\'hemenn-mañ m\'eo bet krouet ar gont dre fazi.',
'usernamehasherror' => "N'haller ket ober gant an arouezenn # en anvioù an implijerien",
'login-throttled' => "Betek re oc'h heus klasket kevreañ en aner.
Gortozit a-raok klask en-dro.",
+'login-abort-generic' => 'Dibosupl ho kevreañ - Dilezet',
'loginlanguagelabel' => 'Yezh : $1',
'suspicious-userlogout' => 'Distaolet eo bet ho koulenn digevreañ rak kaset e oa bet gant ur merdeer direizhet pe krubuilhadenn ur proksi, evit doare.',
# E-mail sending
'php-mail-error-unknown' => "Fazi dianav en arc'hwel postel () PHP",
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Cheñch ar ger-tremen',
'resetpass_announce' => "Enskrivet oc’h bet dre ur ger-tremen da c'hortoz kaset deoc'h dre bostel. A-benn bezañ enrollet da vat e rankit spisaat ur ger-tremen nevez amañ :",
'resetpass_text' => '<!-- Ouzhpennañ testenn amañ -->',
@@ -676,6 +678,32 @@ Gortozit a-raok klask en-dro.",
'resetpass-wrong-oldpass' => "Direizh eo ar ger-tremen a-vremañ pe da c'hortoz.",
'resetpass-temp-password' => "Ger-tremen da c'hortoz :",
+# Special:PasswordReset
+'passwordreset' => 'Adderaouekaat ar ger-tremen',
+'passwordreset-text' => "Leuniañ ar furmskrid-mañ da resev ur postel da zegas soñj deoc'h eus titouroù ho kont.",
+'passwordreset-legend' => 'Adsevel ar ger-tremen',
+'passwordreset-disabled' => 'Diweredekaet eo bet an adsevel gerioù-tremen war ar wiki-mañ.',
+'passwordreset-pretext' => '{{PLURAL:$1||Merkit unan eus an tammoù roadennoù dindan}}',
+'passwordreset-username' => 'Anv implijer :',
+'passwordreset-domain' => 'Domani :',
+'passwordreset-email' => 'Postel :',
+'passwordreset-emailtitle' => 'Titouroù kont war {{SITENAME}}',
+'passwordreset-emailtext-ip' => "Unan bennak (c'hwi moarvat gant ar chomlec'h IP $1) en deus goulennet ma vefe degaset soñj dezhañ eus titouroù e gont evit {{SITENAME}} ($4). Emañ liammet {{PLURAL:$3|ar gont implijer|ar c'hontoù implijer}} da-heul gant ar chomlec'h postel-mañ :
+
+$2
+
+Mont a raio da get {{PLURAL:$3|ar ger-tremen da c'hortoz|ar gerioù-tremen da c'hortoz}} a-benn {{PLURAL:$5|un devezh|$5 deiz}}.
+Mat e vefe deoc'h kevreañ ha dibab ur ger-tremen nevez bremañ. Mard eo bet goulennet kement-se gant unan bennak all pe m'hoc'h eus soñj eus ho ker-tremen orin ha mar ne fell ket deoc'h e cheñch ken, na daolit ket evezh ouzh ar gemennadenn-mañ ha dalc'hit d'ober gant ho ker-tremen kozh.",
+'passwordreset-emailtext-user' => "Goulennet en deus an implijer $1 war {{SITENAME}} e vefe degaset soñj dezhañ eus titouroù e gont evit {{SITENAME}} ($4). Emañ liammet {{PLURAL:$3|ar gont implijer|ar c'hontoù implijer}} da-heul gant ar chomlec'h postel-mañ :
+
+$2
+
+Mont a raio da get {{PLURAL:$3|ar ger-tremen da c'hortoz|ar gerioù-tremen da c'hortoz}} a-benn {{PLURAL:$5|un devezh|$5 deiz}}.
+Mat e vefe deoc'h kevreañ ha dibab ur ger-tremen nevez bremañ. Mard eo bet goulennet kement-se gant unan bennak all pe m'hoc'h eus soñj eus ho ker-tremen orin ha mar ne fell ket deoc'h e cheñch ken, na daolit ket evezh ouzh ar gemennadenn-mañ ha dalc'hit d'ober gant ho ker-tremen kozh.",
+'passwordreset-emailelement' => "Anv implijer : $1
+Ger-tremen da c'hortoz : $2",
+'passwordreset-emailsent' => "Kaset ez eus bet ur postel da zegas soñj deoc'h.",
+
# Edit page toolbar
'bold_sample' => 'Testenn dev',
'bold_tip' => 'Testenn dev',
@@ -687,8 +715,6 @@ Gortozit a-raok klask en-dro.",
'extlink_tip' => 'Liamm diavaez (na zisoñjit ket http://)',
'headline_sample' => 'Testenn istitl',
'headline_tip' => 'Istitl live 2',
-'math_sample' => 'Lakait ho formulenn amañ',
-'math_tip' => 'Formulenn jedoniel (LaTeX)',
'nowiki_sample' => 'Lakait an destenn anfurmadet amañ',
'nowiki_tip' => 'Na ober van ouzh ereadur ar wiki',
'image_sample' => 'Skouer.jpg',
@@ -778,7 +804,7 @@ Gallout a rit [[Special:Search/{{PAGENAME}}|klask an titl anezhi]] e pajennoù a
'noarticletext-nopermission' => 'N\'eus, evit ar mare, tamm testenn ebet war ar bajenn-mañ.
Gallout a rit [[Special:Search/{{PAGENAME}}|klask titl ar bajenn-mañ]] war pajennoù all,
pe <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} klask er marilhoù kar]</span>.',
-'userpage-userdoesnotexist' => 'N\'eo ket enrollet ar gont "$1". Merkit ma fell deoc\'h krouiñ/kemmañ ar bajenn-mañ.',
+'userpage-userdoesnotexist' => 'N\'eo ket enrollet ar gont "<nowiki>$1</nowiki>". Merkit ma fell deoc\'h krouiñ/kemmañ ar bajenn-mañ.',
'userpage-userdoesnotexist-view' => 'N\'eo ket enrollet ar gont implijer "$1".',
'blocked-notice-logextract' => "Stanket eo an implijer-mañ evit poent.
Dindan emañ merket moned diwezhañ marilh ar stankadennoù, d'ho kelaouiñ :",
@@ -814,6 +840,7 @@ Ma ne'z a ket en-dro c'hoazh, klaskit [[Special:UserLogout|digevreañ]] hag adke
Mar ned a ket en-dro, klaskit [[Special:UserLogout|digevreañ]] ha kevreañ en-dro.",
'token_suffix_mismatch' => "'''Distaolet eo bet ar c'hemmoù degaset ganeoc'h abalamour ma oa bet kemmesket an arouezennoù poentadur gant ho merdeer en daveer kemmañ. Distaolet eo bet ar c'hemmoù kuit na vije breinet ar bajennad skrid.
C'hoarvezout a ra a-wechoù pa implijit ur servijer proksi dreinek dizanav.'''",
+'edit_form_incomplete' => "'''Darn eus ar furmskrid kemmañ zo chomet hep tizhout ar servijer ; gwiriit ervat emañ mat ho kemmoù tre evel m'int bet graet ganeoc'h ha klaskit en-dro.'''",
'editing' => "Oc'h aozañ $1",
'editingsection' => "Oc'h aozañ $1 (rann)",
'editingcomment' => "Oc'h aozañ $1 (rann nevez)",
@@ -1040,7 +1067,8 @@ N\'oc\'h ket aotreet da vont outi.',
# Suppression log
'suppressionlog' => 'Marilh diverkañ',
-'suppressionlogtext' => 'A-is emañ roll an diverkadennoù hag ar stankadennoù diwezhañ enno an adweladennoù kuzhet ouzh ar verourien. Gwelet [[Special:IPBlockList|roll an IPoù stanket]] evit kaout roll ar stankadennoù ha forbannadennoù e talvoud evit poent.',
+'suppressionlogtext' => 'A-is emañ roll an diverkadennoù hag ar stankadennoù diwezhañ enno an adweladennoù kuzhet ouzh ar verourien.
+Gwelet [[Special:BlockList|roll an IPoù stanket]] evit kaout roll ar stankadennoù ha forbannadennoù e talvoud evit poent.',
# History merging
'mergehistory' => 'Kendeuziñ istor ur bajenn',
@@ -1147,12 +1175,13 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
'searchdisabled' => "<p>Diweredekaet eo bet an arc'hwel klask war an destenn a-bezh evit ur frapad rak ur samm re vras e oa evit ar servijer. Emichañs e vo tu d'e adlakaat pa vo ur servijer galloudusoc'h ganeomp. Da c'hortoz e c'hallit klask gant Google:</p>",
# Quickbar
-'qbsettings' => 'Personelaat ar varrenn ostilhoù',
-'qbsettings-none' => 'Hini ebet',
-'qbsettings-fixedleft' => 'Kleiz',
-'qbsettings-fixedright' => 'Dehou',
-'qbsettings-floatingleft' => 'War-neuñv a-gleiz',
-'qbsettings-floatingright' => 'War-neuñv a-zehou',
+'qbsettings' => 'Personelaat ar varrenn ostilhoù',
+'qbsettings-none' => 'Hini ebet',
+'qbsettings-fixedleft' => 'Kleiz',
+'qbsettings-fixedright' => 'Dehou',
+'qbsettings-floatingleft' => 'War-neuñv a-gleiz',
+'qbsettings-floatingright' => 'War-neuñv a-zehou',
+'qbsettings-directionality' => 'Difiñv, hervez an tu ma vez skrivet ho yezh',
# Preferences page
'preferences' => 'Penndibaboù',
@@ -1163,9 +1192,10 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
'changepassword' => 'Kemmañ ar ger-tremen',
'prefs-skin' => 'Gwiskadur',
'skin-preview' => 'Rakwelet',
-'prefs-math' => 'Tres jedoniel',
'datedefault' => 'Dre ziouer',
+'prefs-beta' => 'Perzhioù beta',
'prefs-datetime' => 'Deiziad hag eur',
+'prefs-labs' => 'Perzhioù "labs"',
'prefs-personal' => 'Titouroù personel',
'prefs-rc' => 'Kemmoù diwezhañ',
'prefs-watchlist' => 'Roll evezhiañ',
@@ -1187,8 +1217,6 @@ Gwiriit ne vo ket torret red istor ar bajenn gant ar c'hemm-mañ.",
'columns' => 'Bannoù',
'searchresultshead' => 'Klask',
'resultsperpage' => 'Niver a respontoù dre bajenn :',
-'contextlines' => 'Niver a linennoù dre respont',
-'contextchars' => 'Niver a arouezennoù kendestenn dre linenn',
'stub-threshold' => 'Bevenn uhelañ evit al <a href="#" class="stub">liammoù war-du an danvez pennadoù</a> (okted) :',
'stub-threshold-disabled' => 'Diweredekaet',
'recentchangesdays' => "Niver a zevezhioù da ziskouez er c'hemmoù diwezhañ :",
@@ -1201,7 +1229,7 @@ Setu aze un dalvoudenn ganet dre zegouezh hag a c'hallfec'h implijout : $1",
'savedprefs' => 'Enrollet eo bet ar penndibaboù.',
'timezonelegend' => 'Takad eur :',
'localtime' => "Eur lec'hel :",
-'timezoneuseserverdefault' => 'Ober gant talvoudenn ar servijer',
+'timezoneuseserverdefault' => 'Ober gant talvoudenn dre ziouer ar wiki ($1)',
'timezoneuseoffset' => 'Arall (resisaat al linkadur)',
'timezoneoffset' => 'Linkadur eur¹ :',
'servertime' => 'Eur ar servijer :',
@@ -1250,8 +1278,8 @@ A-wel d'an holl e vo an titour-mañ.",
'email' => 'Postel',
'prefs-help-realname' => "Diret eo skrivañ hoc'h anv gwir.
Ma skrivit anezhañ e vo implijet evit lakaat war wel ar pezh a vo bet degaset ganeoc'h.",
-'prefs-help-email' => "Diret eo merkañ ur chomlec'h postel met ma lakait unan e vo tu da adkas ur ger-tremen nevez deoc'h ma tichañsfe deoc'h disoñjal ho hini.
-Gallout a rit lezel tud all da vont e darempred ganeoc'h dre ho pajennoù implijer ha kaozeal hep na vefe ret deoc'h diskuliañ piv oc'h ivez.",
+'prefs-help-email' => "Diret eo merkañ ur chomlec'h postel met ma lakait unan e vo tu da adkas ur ger-tremen nevez deoc'h ma tichañsfe deoc'h disoñjal ho hini.",
+'prefs-help-email-others' => "Gallout a rit lezel tud all da vont e darempred ganeoc'h dre ho pajennoù implijer ha kaozeal hep na vefe ret deoc'h diskuliañ piv oc'h ivez.",
'prefs-help-email-required' => "Ezhomm zo eus ur chomlec'h postel.",
'prefs-info' => 'Titouroù diazez',
'prefs-i18n' => 'Etrebroadelaat',
@@ -1362,7 +1390,7 @@ Gallout a rit lezel tud all da vont e darempred ganeoc'h dre ho pajennoù implij
'right-editusercssjs' => 'Kemmañ restroù CSS ha JS implijerien all',
'right-editusercss' => 'Kemmañ restroù CSS implijerien all',
'right-edituserjs' => 'Kemmañ restroù JS implijerien all',
-'right-rollback' => 'Disteuler prim kemmoù an implijer diwezhañ en deus kemmet ur bajenn resis',
+'right-rollback' => 'Disteuler prim kemmoù an implijer diwezhañ kemmet gantañ ur bajenn resis',
'right-markbotedits' => "Merkañ ar c'hemmoù distaolet evel kemmoù bet graet gant robotoù.",
'right-noratelimit' => 'Na sell ket ar bevennoù feurioù outañ',
'right-import' => 'Enporzhiañ pajennoù adalek wikioù all',
@@ -1376,15 +1404,15 @@ Gallout a rit lezel tud all da vont e darempred ganeoc'h dre ho pajennoù implij
'right-userrights' => 'Kemmañ holl wirioù un implijer',
'right-userrights-interwiki' => 'Kemmañ ar gwirioù implijer zo war ur wiki all',
'right-siteadmin' => 'Prennañ ha dibrennañ ar bank-titouroù',
-'right-reset-passwords' => 'Kemmañ ger-tremen implijerien all',
'right-override-export-depth' => 'Ezporzhiañ ar pajennoù en ur lakaat e-barzh ar pajennoù liammet betek un donder a 5 live',
'right-sendemail' => "Kas ur postel d'an implijerien all",
# 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',
-'rightsnone' => '(netra)',
+'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ñ',
@@ -1506,12 +1534,12 @@ S.o [[Special:NewFiles|rann ar skeudennoù nevez]] evit kaout ur sell gwiroc'h",
'minlength1' => 'Anv ar restroù a rank bezañ keit hag ul lizherenn da nebeutañ.',
'illegalfilename' => "Lakaet ez eus bet er restr « $1 » arouezennoù n'int ket aotreet evit titl ur bajenn. Mar plij, adanvit ar restr hag adkasit anezhi.",
'badfilename' => 'Anvet eo bet ar skeudenn « $1 ».',
-'filetype-mime-mismatch' => 'Ne glot ket astenn ar restr gant ar seurt MIME.',
+'filetype-mime-mismatch' => 'Ne glot ket astenn ar restr ".$1" gant seurt MIME detektet ar restr ($2).',
'filetype-badmime' => 'N\'eo ket aotreet pellgargañ ar restroù a seurt MIME "$1".',
'filetype-bad-ie-mime' => 'Dibosupl enporzhiañ ar restr-mañ rak detektet e vefe evel "$1" gant Internet Explorer, ur seurt restroù berzet rak arvarus sañset.',
'filetype-unwanted-type' => "'''Eus ar seurt restroù n'int ket c'hoantaet eo \".\$1\"'''. Ar re a zere ar gwellañ zo eus {{PLURAL:\$3|ar seurt|ar seurt}} \$2.",
-'filetype-banned-type' => "'''N'eo ket \".\$1\"''' eus ar seurt restroù aotreet.
-\$2 eo {{PLURAL:\$3|ar seurt restroù|ar seurt restroù}} degemeret.",
+'filetype-banned-type' => "'''N'eo ket \".\$1\"''' {{PLURAL:\$4|ur seurt restr aotreet|seurtoù restroù aotreet}}.
+\$2 eo {{PLURAL:\$3|ar seurt restroù|ar seurtoù restroù}} degemeret.",
'filetype-missing' => 'N\'eus astenn ebet stag ouzh ar restr (evel ".jpg").',
'empty-file' => "Ar restr hoc'h eus roet a oa goullo.",
'file-too-large' => "Ar restr hoc'h eus roet a oa re vras.",
@@ -1527,6 +1555,7 @@ S.o [[Special:NewFiles|rann ar skeudennoù nevez]] evit kaout ur sell gwiroc'h",
'large-file' => "Erbediñ a reer ne vefe ket brasoc'h ar restroù eget $1; $2 eo ment ar restr-mañ.",
'largefileserver' => "Brasoc'h eo ar restr-mañ eget ar pezh a c'hall ar servijer aotren.",
'emptyfile' => "Evit doare eo goullo ar restr bet karget ganeoc'h. Moarvat eo abalamour d'an tipo en anv ar restr. Gwiriit mat e fell deoc'h pellgargañ ar restr-mañ.",
+'windows-nonascii-filename' => "N'eo ket skoret anvioù ar restroù enno arouezennoù dibar gant ar wiki-mañ.",
'fileexists' => "Ur restr all gant an anv-se zo c'hoazh.
Trugarez da wiriañ '''<tt>[[:$1]]</tt>''' ma n'oc'h ket sur e fell deoc'h kemmañ anezhi.
[[$1|thumb]]",
@@ -1562,6 +1591,8 @@ Mar fell deoc'h enporzhiañ ar restr-mañ da vat, kit war ho kiz hag enporzhiit
'php-uploaddisabledtext' => 'Diweredekaet eo bet ar pellgargañ e PHP. Gwiriit an dibarzh arventennoù file_uploads.',
'uploadscripted' => "Er restr-mañ ez eus kodoù HTML pe skriptoù a c'hallfe bezañ kammgomprenet gant ur merdeer Kenrouedad.",
'uploadvirus' => 'Viruzet eo ar restr! Titouroù : $1',
+'uploadjava' => "Ur restr ZIP a ra gant Java .class eo homañ.
+N'haller ket enporzhiañ restroù Java peogwir e c'haller mont dreist da vevennoù surentez ganto.",
'upload-source' => 'Restr orin',
'sourcefilename' => 'Anv ar restr tarzh :',
'sourceurl' => 'URL tarzh :',
@@ -1571,10 +1602,6 @@ Mar fell deoc'h enporzhiañ ar restr-mañ da vat, kit war ho kiz hag enporzhiit
'upload-options' => 'Dibaboù kargañ',
'watchthisupload' => 'Evezhiañ ar bajenn-mañ',
'filewasdeleted' => "Ur restr gant an anv-mañ zo bet enporzhiet dija ha diverket goude-se. Mat e vefe deoc'h gwiriañ an $1 a-raok hec'h enporzhiañ en-dro.",
-'upload-wasdeleted' => "'''Diwallit : Oc'h enporzhiañ ur bajenn bet diverket c'hoazh emaoc'h.'''
-
-En em soñjit ervat ha mat eo kenderc'hel da enporzhiañ ar restr-mañ.
-Kavit amañ ar marilh diverkañ evit ar restr-mañ :",
'filename-bad-prefix' => "Anv ar restr emaoc'h oc'h enporzhiañ a grog gant '''\"\$1\"''', da lavaret eo un anv dizeskrivus roet alies ent emgefre gant luc'hskeudennerezioù niverel. Dibabit un anv splannoc'h evit deskrivañ ar restr.",
'filename-prefix-blacklist' => " #<!-- lezel al linenn-mañ tre ha tre evel m'emañ --> <pre>
# Setu penaos emañ an ereadur :
@@ -1596,7 +1623,7 @@ PICT # misc.
'upload-failure-msg' => "Ur gudenn 'zo bet e-pad ho kargadenn adalek [$2] :
$1",
-'upload-warning-subj' => "Kemmen diwall e-pad ar c'hargañ",
+'upload-warning-subj' => 'Kemenn diwall en ur ezporzhiañ',
'upload-warning-msg' => "Ur gudenn zo bet e-kerzh hoc'h ezporzhiadur eus [$2]. Gallout a c'heller distreiñ d'ar [[Special:Upload/stash/$1|furmskrid ezporzhiañ]] evit renkañ ar gudenn.",
'upload-proto-error' => 'Protokol direizh',
@@ -1612,12 +1639,29 @@ Ma talc'h ar gudenn, kit e darempred gant [[Special:ListUsers/sysop|merourien ar
'upload-unknown-size' => 'Ment dianav',
'upload-http-error' => 'Ur fazi HTTP zo bet : $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Kavet ez eus bet ur fazi en ur zigeriñ ar restr evit kas da benn gwiriadennoù ZIP.',
+'zip-wrong-format' => "Ar restr spisaet n'eo ket ur restr ZIP anezhi",
+'zip-bad' => "Brein eo ar restr pe ur restr ZIP dilennus eo.
+N'hall ket bezañ gwiriet ervat evit ar surentez.",
+'zip-unsupported' => "Ur restr ZIP a ra gant perzhioù ZIP n'int ket skoret gant MediaWiki eo ar restr-mañ.
+N'hall ket bezañ gwiriet ervat evit ar surentez.",
+
+# Special:UploadStash
+'uploadstash' => 'Krubuilh enporzhiañ',
+'uploadstash-summary' => "Reiñ ar bajenn-mañ tu da vont war ar restroù enporzhiet (pe o vezañ enporzhiet) ha n'int ket bet embannet war ar wiki-mañ evit c'hoazh. Den n'hall gwelet ar restroù-se evit ar mare, nemet an hini en deus enporzhiet anezho.",
+'uploadstash-clear' => 'Diverkañ ar restroù krubuilhet',
+'uploadstash-nofiles' => "N'eus bet krubuilhet restr ebet.",
+'uploadstash-badtoken' => "N'haller ket kas an ober-mañ da benn vat, marteze a-walc'h abalamour m'eo aet d'o zermen an titouroù kred ho poa roet. Klaskit en-dro.",
+'uploadstash-errclear' => "N'eus ket bet gallet riñsañ ar restroù.",
+'uploadstash-refresh' => 'Freskaat roll ar restroù',
+
# img_auth script messages
'img-auth-accessdenied' => "Moned nac'het",
'img-auth-nopathinfo' => "Mankout a ra ar PATH_INFO.
N'eo ket kefluniet ho servijer evit reiñ an titour-mañ.
-Marteze eo diazezet war CGI-based ha n'hall ket skorañ img_auth.
-Gwelet http://www.mediawiki.org/wiki/Manual:Image_Authorization.",
+Marteze eo diazezet war CGI ha n'hall ket skorañ img_auth.
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Gwelet aotre ar skeudenn.]",
'img-auth-notindir' => "N'emañ ket an hent merket er c'havlec'h enporzhiañ kefluniet.",
'img-auth-badtitle' => 'Dibosupl krouiñ un titl reizh adalek "$1".',
'img-auth-nologinnWL' => 'N\'oc\'h ket kevreet ha n\'emañ ket "$1" war ar roll gwenn',
@@ -1692,7 +1736,7 @@ Ne laka ar roll-mañ war wel nemet {{PLURAL:$1|ar bajenn gentañ liammet ouzh|an
Ur [[Special:WhatLinksHere/$2|roll klok]] a c'haller da gaout.",
'nolinkstoimage' => "N'eus liamm ebet war-du ar skeudenn-mañ war pajenn ebet.",
'morelinkstoimage' => 'Gwelet [[Special:WhatLinksHere/$1|liammoù ouzhpenn]] war-du ar restr-mañ.',
-'redirectstofile' => 'Adkas a ra ar{{PLURAL:$1|restr-mañ|$1 restr-mañ}} war-du homañ :',
+'linkstoimage-redirect' => '$1 (adkas restr) $2',
'duplicatesoffile' => "Un eil eus ar restr-mañ eo {{PLURAL:$1|ar restr da-heul|ar restroù da-heul}}, ([[Special:FileDuplicateSearch/$2|evit gouzout hiroc'h]]) :",
'sharedupload' => 'Dont a ra ar restr-mañ eus $1 ha gallout a ra bezañ implijet evit raktresoù all.',
'sharedupload-desc-there' => "Tennet eo ar restr-mañ eus $1 ha gallout a ra bezañ implijet evit raktresoù all.
@@ -1780,18 +1824,19 @@ Diskouezet eo deskrivadur he [$2 fajenn zeskrivañ] amañ dindan.',
'statistics-users-active-desc' => "Implijerien o deus degaset da nebeutañ ur c'hemm {{PLURAL:$1|an deiz paseet|e-kerzh an $1 deiz diwezhañ}}",
'statistics-mostpopular' => 'Pajennoù muiañ sellet',
-'disambiguations' => 'Pajennoù disheñvelout',
+'disambiguations' => 'Pajennoù enno liammoù war-zu pajennoù disheñvelout',
'disambiguationspage' => 'Template:Disheñvelout',
'disambiguations-text' => "Liammet eo ar pajennoù da-heul ouzh ur '''bajenn disheñvelout'''.
Padal e tlefent kas war-eeun d'an danvez anezho.<br />
Sellet e vez ouzh ur bajenn evel ouzh ur bajenn disheñvelout ma ra gant ur patrom liammet ouzh [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Adkasoù doubl',
-'doubleredirectstext' => 'Rollañ a ra ar bajenn-mañ ar pajennoù a adkas da bajennoù adkas all.
+'doubleredirects' => 'Adkasoù doubl',
+'doubleredirectstext' => 'Rollañ a ra ar bajenn-mañ ar pajennoù a adkas da bajennoù adkas all.
War bep linenn ez eus liammoù war-du pajennoù an adkas kentañ hag en eil adkas, hag ivez war-du pajenn-dal an eil adkas zo sañset bezañ ar pal "gwirion" a zlefe an adkas kentañ kas di.
Diskoulmet eo bet an enmontoù <del>barrennet</del>.',
-'double-redirect-fixed-move' => 'Adanvet eo bet [[$1]], adkaset eo war-du [[$2]] bremañ',
-'double-redirect-fixer' => 'Reizher adkasoù',
+'double-redirect-fixed-move' => 'Adanvet eo bet [[$1]], adkaset eo war-du [[$2]] bremañ',
+'double-redirect-fixed-maintenance' => 'O reizhañ an adkas doubl adalek [[$1]] war-zu [[$2]].',
+'double-redirect-fixer' => 'Reizher adkasoù',
'brokenredirects' => 'Adkasoù torret',
'brokenredirectstext' => "Kas a ra an adkasoù-mañ da bajennoù n'eus ket anezho.",
@@ -1869,6 +1914,7 @@ Na zisoñjit ket e c'hall lec'hiennoù all kaout ul liamm eeun war-du ur restr b
'pager-newer-n' => "{{PLURAL:$1|1 nevesoc'h|$1 nevesoc'h}}",
'pager-older-n' => "{{PLURAL:$1|1 koshoc'h|$1 koshoc'h}}",
'suppress' => 'Dindan evezh',
+'querypage-disabled' => "Diweredekaet eo bet ar bajenn dibar-mañ evit aesaat d'ar reizhiad un tammig.",
# Book sources
'booksources' => 'Oberennoù dave',
@@ -1920,7 +1966,7 @@ Gwelet ivez ar [[Special:WantedCategories|rummadoù a vank]].',
'sp-deletedcontributions-contribs' => 'Degasadennoù',
# Special:LinkSearch
-'linksearch' => 'Liammoù diavaez',
+'linksearch' => 'Klask liammoù diavaez',
'linksearch-pat' => 'Klask an droienn :',
'linksearch-ns' => 'Esaouenn anv :',
'linksearch-ok' => 'Klask',
@@ -1988,6 +2034,10 @@ E maezienn \"Kaser\" ho postel e vo merket ar chomlec'h postel resisaet ganeoc'h
'noemailtext' => "N'en deus ket an implijer-mañ resisaet chomlec'h postel reizh ebet.",
'nowikiemailtitle' => 'Berzet kas posteloù',
'nowikiemailtext' => 'Dibabet ez eus bet gant an implijerien-mañ chom hep resev posteloù a-berzh implijerien all.',
+'emailnotarget' => "N'eus ket eus ar c'haser-mañ pe faziek eo an anv implijer lakaet.",
+'emailtarget' => 'Merkañ anav implijer ar resever',
+'emailusername' => 'Anv implijer :',
+'emailusernamesubmit' => 'Kas',
'email-legend' => "Kas ur postel d'un implijer all eus {{SITENAME}}",
'emailfrom' => 'Kaser :',
'emailto' => 'Resever :',
@@ -2013,12 +2063,12 @@ E maezienn \"Kaser\" ho postel e vo merket ar chomlec'h postel resisaet ganeoc'h
'watchnologin' => 'Digevreet',
'watchnologintext' => "Ret eo deoc'h bezañ [[Special:UserLogin|kevreet]]
a-benn gellout kemmañ ho roll evezhiañ.",
-'addedwatch' => "Ouzhpennet d'ar roll",
+'addwatch' => "Ouzhpennañ d'ar roll evezhiañ",
'addedwatchtext' => 'Ouzh ho [[Special:Watchlist|rollad evezhiañ]] eo bet ouzhpennet ar bajenn "[[:$1]]".
Kemmoù da zont ar bajenn-mañ ha re ar bajenn gaozeal stag outi a vo rollet amañ hag e teuio ar bajenn <b>e tev</b> er [[Special:RecentChanges|roll kemmoù diwezhañ]] evit bezañ gwelet aesoc\'h ganeoc\'h.
Evit tennañ ar bajenn-mañ a-ziwar ho rollad evezhiañ. klikit war "Paouez da evezhiañ" er framm merdeiñ.',
-'removedwatch' => 'Lamet a-ziwar ar roll evezhiañ',
+'removewatch' => 'Lemel a-ziwar ar roll evezhiañ',
'removedwatchtext' => 'Lamet eo bet ar bajenn "[[:$1]]" a-ziwar ho [[Special:Watchlist|roll evezhiañ]].',
'watch' => 'Evezhiañ',
'watchthispage' => 'Evezhiañ ar bajenn-mañ',
@@ -2039,8 +2089,9 @@ Evit tennañ ar bajenn-mañ a-ziwar ho rollad evezhiañ. klikit war "Paouez da e
'watchlist-options' => 'Dibarzhioù ar roll evezhiañ',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Heuliet...',
-'unwatching' => 'Paouez da evezhiañ...',
+'watching' => 'Heuliet...',
+'unwatching' => 'Paouez da evezhiañ...',
+'watcherrortext' => 'Ur gudenn zo bet en ur gemmañ arventennoù ho roll evezhiañ evit "$1".',
'enotif_mailer' => 'Posteler Kemenn {{SITENAME}}',
'enotif_reset' => 'Merkañ an holl bajennoù evel gwelet',
@@ -2071,16 +2122,16 @@ Gallout a rit nevesaat doare ar pennadoù evezhiet ganeoc\'h en ho rollad evezhi
--
A-benn kemmañ arventennoù ho kemennoù dre bostel, sellit ouzh
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
A-benn kemmañ doare ho rollad evezhiañ, sellit ouzh
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
A-benn dilemel ar bajenn eus ho rollad evezhiañ, sellit ouzh
$UNWATCHURL
Evezhiadennoù ha skoazell pelloc\'h :
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Diverkañ ur bajenn',
@@ -2096,7 +2147,7 @@ Evezhiadennoù ha skoazell pelloc\'h :
Kadarnait, mar plij, eo mat an dra-se hoc'h eus c'hoant da ober, e komprenit mat an heuliadoù, hag e rit se diouzh ar [[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Diverkadenn kaset da benn',
'actionfailed' => "Ober c'hwitet",
-'deletedtext' => '"Diverket eo bet <nowiki>$1</nowiki>".
+'deletedtext' => '"Diverket eo bet $1".
Sellet ouzh $2 evit roll an diverkadennoù diwezhañ.',
'deletedarticle' => 'en deus dilamet "[[$1]]"',
'suppressedarticle' => 'diverket "[[$1]]"',
@@ -2154,7 +2205,7 @@ Sellet ouzh ar [[Special:ProtectedPages|roll ar pajennoù gwarezet]] evit kaout
'protect_expiry_invalid' => 'Direizh eo termen ar prantad.',
'protect_expiry_old' => 'Echuet eo ar prantad termen.',
'protect-unchain-permissions' => "Dibrennañ muioc'h a zibarzhioù gwareziñ",
-'protect-text' => "Amañ e c'hallit gwelet ha cheñch live gwareziñ ar bajenn '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Amañ e c'hallit gwelet ha cheñch live gwareziñ ar bajenn '''$1'''.",
'protect-locked-blocked' => "E-keit ha ma viot stanket ne viot ket evit cheñch al live gwareziñ. Setu aze arventennoù a-vremañ ar bajenn '''$1''':",
'protect-locked-dblock' => "N'haller ket cheñch al liveoù gwareziñ rak prennet eo an diaz titouroù.
Setu doare a-vremañ ar bajenn '''$1''' :",
@@ -2207,9 +2258,8 @@ Setu an doare a-vremañ evit ar bajenn-mañ '''$1''':",
'undeletepagetext' => "Diverket eo bet {{PLURAL:$1|ar bajenn da-heul; emañ|ar pajennoù da-heul; emaint}} e bank roadennoù an dielloù, ma c'hallont bezañ assavet.
Ingal e c'hall an diell bezañ goullonderet.",
'undelete-fieldset-title' => 'Assevel ar stummoù',
-'undeleteextrahelp' => "Evit diziverkañ ar bajenn en he fezh, laoskit goullo an holl logoù bihan ha klikit war '''''Diziverkañ!'''''.
-Evit diziverkañ stummoù zo hepken, askit ar logoù bihan a glot gant ar stummoù da vezañ adsavet, ha klikit war '''''Diziverkañ!'''''.
-Mar klikit war '''''Adderaouiñ''''' e vo naetaet ar stern diverrañ hag al logoù asket.",
+'undeleteextrahelp' => "Evit assevel istor klok ar bajenn, laoskit goullo an holl logoù ha klikit war '''''{{int:undeletebtn}}'''''.
+Evit assevel stummoù zo hepken, askit ar logoù a glot gant ar stummoù da vezañ assavet, ha klikit war '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|stumm|stumm}} diellaouet',
'undeletehistory' => "Ma tiziverkit ar bajenn e vo erlec'hiet an holl gemmoù bet degaset enni er roll istor.
@@ -2250,9 +2300,12 @@ $1',
'undelete-show-file-submit' => 'Ya',
# Namespace form on various pages
-'namespace' => 'Esaouenn anv :',
-'invert' => 'Eilpennañ an dibab',
-'blanknamespace' => '(Pennañ)',
+'namespace' => 'Esaouenn anv :',
+'invert' => 'Eilpennañ an dibab',
+'tooltip-invert' => "Askañ ar voest-mañ da guzhat ar c'hemmoù er pajennoù stag ouzh an esaouenn anv diuzet (hag an esaouenn anv stag, m'emañ asket)",
+'namespace_association' => 'Esaouennoù anv all da ouzhpennañ',
+'tooltip-namespace_association' => 'Askañ ar voest-mañ da lakaat ivez e-barzh ar gaozeadenn pe danvez an esaouenn anv liammet ouzh an esaouenn anv diuzet',
+'blanknamespace' => '(Pennañ)',
# Contributions
'contributions' => 'Degasadennoù an implijer',
@@ -2301,13 +2354,15 @@ Dindan emañ merket enmont diwezhañ marilh ar stankadennoù, d'ho kelaouiñ :",
'whatlinkshere-filters' => 'Siloù',
# Block/unblock
+'autoblockid' => 'Emstankañ #$1',
+'block' => 'Stankañ an implijer',
+'unblock' => 'Distankañ an implijer',
'blockip' => "Stankañ ur chomlec'h IP",
'blockip-title' => 'Stankañ an implijer',
'blockip-legend' => 'Stankañ an implijer',
'blockiptext' => "Grit gant ar furmskrid a-is evit stankañ ar moned skrivañ ouzh ur chomlec'h IP pe un implijer bennak.
Seurt diarbennoù n'hallont bezañ kemeret nemet evit mirout ouzh ar vandalerezh hag a-du gant an [[{{MediaWiki:Policy-url}}|erbedadennoù ha reolennoù da heuliañ]].
Roit a-is an abeg resis (o verkañ, da skouer, roll ar pajennoù bet graet gaou outo).",
-'ipaddress' => "Chomlec'h IP :",
'ipadressorusername' => "Chomlec'h IP pe anv implijer",
'ipbexpiry' => 'Pad ar stankadenn',
'ipbreason' => 'Abeg :',
@@ -2320,7 +2375,7 @@ Roit a-is an abeg resis (o verkañ, da skouer, roll ar pajennoù bet graet gaou
** Emzalc'h hegazus/handeus betek re
** Mont re bell gant implij meur a gont
** Anv implijer n'eo ket aotreet",
-'ipbanononly' => 'Stankañ an implijerien dizanv hepken',
+'ipb-hardblock' => "Mirout a ra ouzh an implijerien kevreet da zegas kemmoù adalek ar c'homlec'h IP-mañ",
'ipbcreateaccount' => 'Mirout ouzh an implijer da grouiñ kontoù',
'ipbemailban' => 'Mirout ouzh an implijer da gas posteloù',
'ipbenableautoblock' => "Stankañ war-eeun ar chomlec'h IP diwezhañ implijet gant an den-mañ hag an holl chomlec'hioù en deus klasket degas kemmoù drezo war-lerc'h",
@@ -2331,8 +2386,9 @@ Roit a-is an abeg resis (o verkañ, da skouer, roll ar pajennoù bet graet gaou
'ipbotherreason' => 'Abeg all/ouzhpenn',
'ipbhidename' => "Kuzhat anv an implijer er rolloù hag er c'hemmoù",
'ipbwatchuser' => 'Evezhiañ pajennoù implijer ha kaozeal an implijer-mañ',
-'ipballowusertalk' => 'Aotren an implijer-mañ da zegas kemmoù war e bajenn gaozeal dezhañ e-unan pa vez stanket',
+'ipb-disableusertalk' => 'Mirout ouzh an implijer-mañ da implijout e bajenn gaozeal dezhañ e-unan e-keit hag emañ stanket',
'ipb-change-block' => 'Adstankañ an implijer-mañ gant an hevelep arventennoù',
+'ipb-confirm' => 'Kadarnaat ar stankadenn',
'badipaddress' => "Kamm eo ar chomlec'h IP.",
'blockipsuccesssub' => 'Stankadenn deuet da benn vat',
'blockipsuccesstext' => 'Stanket eo bet chomlec\'h IP "$1".
@@ -2340,6 +2396,8 @@ Roit a-is an abeg resis (o verkañ, da skouer, roll ar pajennoù bet graet gaou
Stanket eo bet [[Special:Contributions/$1|$1]].<br />
Sellit ouzh [[Special:IPBlockList|roll ar chomlec\'hioù IP ha kontoù stanket]] evit gwiriañ ar stankadennoù.',
+'ipb-blockingself' => "Emaoc'h war-nes stankañ ac'hanoc'h hoc'h-unan ! Ha sur oc'h eo se a fell deoc'h ober ?",
+'ipb-confirmhideuser' => 'Emaoc\'h war-nes stankañ un implijer ha gweredekaet hoc\'h eus "kuzhat an implijer". Diverkañ a ra an dra-se anv an implijer en holl rolloù ha monedoù ar marilh.',
'ipb-edit-dropdown' => 'Kemmañ an abegoù stankañ',
'ipb-unblock-addr' => 'Distankañ $1',
'ipb-unblock' => "Distankañ un implijer pe ur chomlec'h IP",
@@ -2349,17 +2407,23 @@ Sellit ouzh [[Special:IPBlockList|roll ar chomlec\'hioù IP ha kontoù stanket]]
'unblockiptext' => "Grit gant ar furmskrid a-is evit adsevel ar moned skrivañ ouzh ur chomlec'h IP bet stanket a-gent.",
'ipusubmit' => 'Paouez gant ar stankadenn-mañ',
'unblocked' => 'Distanket eo bet [[User:$1|$1]]',
+'unblocked-range' => 'Distanket eo bet $1',
'unblocked-id' => 'Distanket eo bet $1',
+'blocklist' => 'Implijerien stanket',
'ipblocklist' => 'Implijerien stanket',
'ipblocklist-legend' => 'Kavout un implijer stanket',
-'ipblocklist-username' => "Anv implijer pe chomlec'h IP :",
-'ipblocklist-sh-userblocks' => "$1 stankadennoù ar c'hontoù",
-'ipblocklist-sh-tempblocks' => '$1 ar stankadennoù dibad',
-'ipblocklist-sh-addressblocks' => "$1 stankadennoù ar chomlec'hioù IP en o-unan",
+'blocklist-userblocks' => 'Kuzhat ar stankadennoù kont',
+'blocklist-tempblocks' => 'Kuzhat ar stankadennoù berrbad',
+'blocklist-addressblocks' => "Kuzhat stankadennoù ar chomlec'hioù IP en o-unan",
+'blocklist-timestamp' => 'Deiziad hag eur',
+'blocklist-target' => 'pal',
+'blocklist-expiry' => "A ya d'e dermen",
+'blocklist-by' => 'Merour ar stankadenn',
+'blocklist-params' => 'Arventennoù stankañ',
+'blocklist-reason' => 'Abeg',
'ipblocklist-submit' => 'Klask',
'ipblocklist-localblock' => "Stankadenn lec'hel",
'ipblocklist-otherblocks' => '{{PLURAL:$1|Stankadenn|Stankadennoù}} all',
-'blocklistline' => '$1, $2 en/he deus stanket $3 ($4)',
'infiniteblock' => 'da viken',
'expiringblock' => "a zeu d'e dermen d'an $1 da $2",
'anononlyblock' => 'implijerien dizanv hepken',
@@ -2380,7 +2444,7 @@ Setu aze an abeg(où) m\'eo bet stanket $1 : "$2$',
'blocklog-showsuppresslog' => "Stanket ha kuzhet eo bet an implijer-mañ c'hoazh. A-is emañ marilh ar diverkadennoù, d'ho titouriñ :",
'blocklogentry' => 'en/he deus stanket [[$1]] betek an $2 $3',
'reblock-logentry' => "en deus kemmet an arventennoù stankañ evit [[$1]] gant un termen d'an $2 $3",
-'blocklogtext' => "Setu roud stankadennoù ha distankadennoù an implijerien. N'eo ket bet rollet ar chomlec'hioù IP bet stanket outo ent emgefre. Sellet ouzh [[Special:IPBlockList|roll an implijerien stanket]] evit gwelet piv zo stanket e gwirionez.",
+'blocklogtext' => "Setu roud stankadennoù ha distankadennoù an implijerien. N'eo ket bet rollet ar chomlec'hioù IP bet stanket outo ent emgefre. Sellet ouzh [[Special:BlockList|roll an implijerien stanket]] evit gwelet piv zo stanket e gwirionez.",
'unblocklogentry' => 'distanket "$1"',
'block-log-flags-anononly' => 'implijerien dizanv hepken',
'block-log-flags-nocreate' => 'berzet eo krouiñ kontoù',
@@ -2394,9 +2458,9 @@ Setu aze an abeg(où) m\'eo bet stanket $1 : "$2$',
'ipb_expiry_temp' => "Peurbadus e rank bezañ bloc'hadoù an implijerien guzh.",
'ipb_hide_invalid' => 'Dibosupl diverkañ ar gont-mañ; evit doare ez eus bet graet re a gemmoù enni.',
'ipb_already_blocked' => 'Stanket eo "$1" dija',
-'ipb-needreblock' => "== Stanket dija ==
-Stanket eo $1 c'hoazh. Kemmañ an arventennoù a fell deoc'h ?",
+'ipb-needreblock' => "Stanket eo $1 c'hoazh. Kemmañ an arventennoù a fell deoc'h ?",
'ipb-otherblocks-header' => '{{PLURAL:$1|Stankadenn|Stankadnenoù}} all',
+'unblock-hideuser' => "N'hallit ket distankañ an implijer-mañ rak kuzhet eo bet e anv kont.",
'ipb_cant_unblock' => "Fazi: N'eo ket stanket an ID $1. Moarvat eo bet distanket c'hoazh.",
'ipb_blocked_as_range' => "Fazi : N'eo ket bet stanket ar chomlec'h IP $1 war-eeun, setu n'hall ket bezañ distanket. Stanket eo bet dre al live $2 avat, hag a c'hall bezañ distanket.",
'ip_range_invalid' => 'Stankañ IP direizh.',
@@ -2433,6 +2497,7 @@ Kadarnait, mar plij, eo se hoc'h eus c'hoant da ober.",
'unlockdbsuccesstext' => 'Dibrennet eo bank roadennoù {{SITENAME}}.',
'lockfilenotwritable' => "N'haller ket skrivañ war restr prennañ ar bank roadennoù. A-benn prennañ-dibrennañ ar bank e rankit bezañ aotreet da skrivañ war ar servijer Kenrouedad.",
'databasenotlocked' => "N'eo ket prennet an diaz roadennoù.",
+'lockedbyandtime' => "(gant $1 d'an $2 da $3)",
# Move page
'move-page' => "Dilec'hiañ $1",
@@ -2548,7 +2613,7 @@ Mard eo se e c'hallit ivez implijout ul liamm a seurt gant [[{{#Special:Export}}
'allmessagesdefault' => 'Testenn dre ziouer',
'allmessagescurrent' => 'Testenn zo bremañ',
'allmessagestext' => "Setu roll ar c'hemennadennoù reizhiad a c'haller kaout en esaouennoù anv MediaWiki.
-Kit da welet [http://www.mediawiki.org/wiki/Localisation Lec'heladur MediaWiki] ha [http://translatewiki.net translatewiki.net] mar fell deoc'h kemer perzh e lec'heladur boutin MediaWiki.",
+Kit da welet [//www.mediawiki.org/wiki/Localisation Lec'heladur MediaWiki] ha [//translatewiki.net translatewiki.net] mar fell deoc'h kemer perzh e lec'heladur boutin MediaWiki.",
'allmessagesnotsupportedDB' => "N'haller ket kaout {{ns:special}}:AllMessages rak diweredekaet eo bet wgUseDatabaseMessages.",
'allmessages-filter-legend' => 'Sil',
'allmessages-filter' => "Silañ dre stad ar c'hemmoù",
@@ -2699,6 +2764,7 @@ Talvezout a ra da ouzhpennañ un displegadenn er c\'hombod diverrañ.',
'vector.css' => '/* Ar CSS lakaet amañ a dalvezo evit implijerien ar gwiskadur Vektor */',
'print.css' => '/* Ar CSS lakaet amañ a dalvezo evit ar moullañ */',
'handheld.css' => '/* Ar CSS lakaet amañ a dalvezo evit an ardivinkoù hezoug diouzh ar gwiskadur kefluniet e $wgHandheldStyle */',
+'noscript.css' => "/* CSS lec'hiet amañ a raio gaou d'an implijerien o deus diweredekaet JavaScript */",
# Scripts
'common.js' => '/* Forzh pe JavaScript amañ a vo karget evit an holl implijerien war kement pajenn lennet ganto. */',
@@ -2713,9 +2779,7 @@ Talvezout a ra da ouzhpennañ un displegadenn er c\'hombod diverrañ.',
'vector.js' => '/* Kement JavaScript amañ a vo karget evit an implijerien a ra gant ar gwiskadur Vektor */',
# Metadata
-'nodublincore' => "Diweredekaet eo ar metaroadennoù 'Dublin Core RDF' war ar servijer-mañ.",
-'nocreativecommons' => "N'eo ket gweredekaet ar metaroadennoù 'Creative Commons RDF' war ar servijer-mañ.",
-'notacceptable' => "N'eo ket ar servijer wiki-mañ evit pourchas stlennoù en ur furmad lennus evit ho arval.",
+'notacceptable' => "N'eo ket ar servijer wiki-mañ evit pourchas stlennoù en ur furmad lennus evit ho arval.",
# Attribution
'anonymous' => '{{PLURAL:$1|Implijer|Implijerien}} dizanv war {{SITENAME}}',
@@ -2739,12 +2803,17 @@ Sur a-walc'h abalamour d'ul liamm enni a gas d'ul lec'hienn ziavaez berzet.",
'spam_blanking' => 'Diverkañ an holl stummoù enno liammoù davet $1',
# Info page
-'infosubtitle' => 'Titouroù evit ar bajenn',
-'numedits' => 'Niver a gemmoù (pennad) : $1',
-'numtalkedits' => 'Niver a gemmoù (pajenn gaozeal) : $1',
-'numwatchers' => 'Niver a dud o lenn : $1',
-'numauthors' => 'Niver a aozerien zisheñvel (pennad) : $1',
-'numtalkauthors' => 'Niver a aozerien zisheñvel (pajenn gaozeal) : $1',
+'pageinfo-title' => 'Titouroù evit "$1"',
+'pageinfo-header-edits' => 'Kemmoù',
+'pageinfo-header-watchlist' => 'Roll evezhiañ',
+'pageinfo-header-views' => 'Gweladennoù',
+'pageinfo-subjectpage' => 'Pajenn',
+'pageinfo-talkpage' => 'Pajenn gaozeal',
+'pageinfo-watchers' => 'Niver a dud o heuliañ',
+'pageinfo-edits' => 'Niver a gemmoù',
+'pageinfo-authors' => 'Niver a aozerien disheñvel',
+'pageinfo-views' => 'Niver a weladennoù',
+'pageinfo-viewsperedit' => 'Gweladenoù dre gemmoù',
# Skin names
'skinname-standard' => 'Standard',
@@ -2757,25 +2826,6 @@ Sur a-walc'h abalamour d'ul liamm enni a gas d'ul lec'hienn ziavaez berzet.",
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vektor',
-# Math options
-'mw_math_png' => 'Produiñ atav ur skeudenn PNG',
-'mw_math_simple' => "HTML m'eo eeun-kenañ, a-hend-all ober gant PNG",
-'mw_math_html' => 'HTML mar bez tu, a-hend-all PNG',
-'mw_math_source' => "Leuskel ar c'hod TeX orin",
-'mw_math_modern' => 'Evit ar merdeerioù arnevez',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'Fazi jedoniezh',
-'math_unknown_error' => 'fazi dianav',
-'math_unknown_function' => 'kevreizhenn jedoniel dianav',
-'math_lexing_error' => 'fazi ger',
-'math_syntax_error' => 'fazi ereadur',
-'math_image_error' => "C'hwitet eo bet an amdroadur PNG; gwiriit eo staliet mat Latex ha devipng (pe dvips, gs ha convert)",
-'math_bad_tmpdir' => "N'hall ket krouiñ pe skrivañ er c'havlec'h da c'hortoz",
-'math_bad_output' => "N'hall ket krouiñ pe skrivañ er c'havlec'h ermaeziañ",
-'math_notexvc' => "N'hall ket an erounezeg 'texvc' bezañ kavet. Lennit math/README evit he c'hefluniañ.",
-
# Patrolling
'markaspatrolleddiff' => 'Merkañ evel gwiriet',
'markaspatrolledtext' => 'Merkañ ar pennad-mañ evel gwiriet',
@@ -2811,22 +2861,25 @@ $1',
'nextdiff' => "Stumm nevesoc'h →",
# Media information
-'mediawarning' => "'''Diwallit :''' Kodoù siek a c'hall bezañ er seurt restr-mañ.
+'mediawarning' => "'''Diwallit :''' Kodoù siek a c'hall bezañ er seurt restr-mañ.
Ma vez erounezet ganeoc'h e c'hallje tagañ ho reizhiad.",
-'imagemaxsize' => "Bevenn ment vrasañ ar skeudennoù :<br />''(evit ar pajennoù deskrivañ)''",
-'thumbsize' => 'Ment an alberz :',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pajenn|pajenn}}',
-'file-info' => 'ment ar restr : $1, seurt MIME : $2',
-'file-info-size' => '$1 × $2 piksel, ment ar restr : $3, seurt MIME : $4',
-'file-nohires' => "<small>N'haller ket gwellaat ar pizhder.</small>",
-'svg-long-desc' => 'restr SVG file, pizhder $1 × $2 piksel, ment ar restr : $3',
-'show-big-image' => 'Pizhder leun',
-'show-big-image-thumb' => '<small>Ment ar rakweled-mañ : $1 × $2 piksel</small>',
-'file-info-gif-looped' => "e kelc'h",
-'file-info-gif-frames' => '$1 {{PLURAL:$1|skeudenn|skeudenn}}',
-'file-info-png-looped' => "e kelc'h",
-'file-info-png-repeat' => 'lennet $1 {{PLURAL:$1|wezh|gwezh}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|skeudenn|skeudenn}}',
+'imagemaxsize' => "Bevenn ment vrasañ ar skeudennoù :<br />''(evit ar pajennoù deskrivañ)''",
+'thumbsize' => 'Ment an alberz :',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pajenn|pajenn}}',
+'file-info' => 'ment ar restr : $1, seurt MIME : $2',
+'file-info-size' => '$1 × $2 piksel, ment ar restr : $3, seurt MIME : $4',
+'file-info-size-pages' => '$1 × $2 piksel, ment ar restr : $3, seurt MIME : $4, $5 {{PLURAL:$5|pajenn|pajenn}}',
+'file-nohires' => "<small>N'haller ket gwellaat ar pizhder.</small>",
+'svg-long-desc' => 'restr SVG file, pizhder $1 × $2 piksel, ment ar restr : $3',
+'show-big-image' => 'Pizhder leun',
+'show-big-image-preview' => '<small>Ment ar rakweled-mañ : $1.</small>',
+'show-big-image-other' => '<small>Spiderioù all : $1.</small>',
+'show-big-image-size' => '$1 × $2 piksel',
+'file-info-gif-looped' => "e kelc'h",
+'file-info-gif-frames' => '$1 {{PLURAL:$1|skeudenn|skeudenn}}',
+'file-info-png-looped' => "e kelc'h",
+'file-info-png-repeat' => 'lennet $1 {{PLURAL:$1|wezh|gwezh}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|skeudenn|skeudenn}}',
# Special:NewFiles
'newimages' => 'Roll ar restroù nevez',
@@ -2851,17 +2904,24 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
'metadata-help' => "Titouroù ouzhpenn zo er restr-mañ; bet lakaet moarvat gant ar c'hamera niverel pe ar skanner implijet evit he niverelaat. Mard eo bet cheñchet ar skeudenn e-keñver he stad orin marteze ne vo ket kenkoulz munudoù zo e-keñver ar skeudenn kemmet.",
'metadata-expand' => 'Dispakañ ar munudoù',
'metadata-collapse' => 'Krennañ ar munudoù',
-'metadata-fields' => "Ensoc'het e vo ar maeziennoù metastlennoù EXIF rollet er gemennadenn-mañ e pajenn deskrivañ ar skeudenn pa vo punet taolenn ar metaroadennoù. Kuzhet e vo ar re all dre ziouer.
+'metadata-fields' => "Ensoc'het e vo maeziennoù metaroadennoù ar skeudenn rollet er gemennadenn-mañ war pajenn deskrivañ ar skeudenn pa vo punet taolenn ar metaroadennoù.
+Kuzhet e vo ar re all dre ziouer.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
-'exif-imagewidth' => 'Led',
+'exif-imagewidth' => 'Ledander',
'exif-imagelength' => 'Hed',
'exif-bitspersample' => 'Niv. a vitoù dre barzhioù',
'exif-compression' => 'Seurt gwaskadur',
@@ -2873,13 +2933,11 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
'exif-ycbcrpositioning' => "Lec'hiadur Y ha C",
'exif-xresolution' => 'Pizhder led ar skeudenn',
'exif-yresolution' => 'Pizhder hed ar skeudenn',
-'exif-resolutionunit' => 'Unanennoù pizhder X ha Y',
'exif-stripoffsets' => "Lec'hiadur roadennoù ar skeudenn",
'exif-rowsperstrip' => 'Niver a linennoù dre vandenn',
'exif-stripbytecounts' => 'Ment e oktedoù dre vandenn',
'exif-jpeginterchangeformat' => "Lec'hiadur ar SOI JPEG",
'exif-jpeginterchangeformatlength' => 'Ment ar roadennoù JPEG en eizhbitoù',
-'exif-transferfunction' => "Arc'hwel treuzkas",
'exif-whitepoint' => 'Kromategezh ar poent gwenn',
'exif-primarychromaticities' => 'Kromategezh al livioù orin',
'exif-ycbcrcoefficients' => 'Kenefederioù moull treuzfurmiñ an egorenn liv',
@@ -2898,7 +2956,6 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
'exif-compressedbitsperpixel' => 'Doare gwaskañ ar skeudenn',
'exif-pixelydimension' => 'Ledander ar skeudenn',
'exif-pixelxdimension' => 'Sav ar skeudenn',
-'exif-makernote' => 'Notennoù an oberier',
'exif-usercomment' => 'Evezhiadennoù',
'exif-relatedsoundfile' => 'Restr son stag',
'exif-datetimeoriginal' => 'Deiziad hag eur ar sevel roadoù',
@@ -2912,7 +2969,6 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
'exif-exposureprogram' => "Programm louc'hañ",
'exif-spectralsensitivity' => 'Kizidigezh spektrel',
'exif-isospeedratings' => 'Kizidigezh ISO',
-'exif-oecf' => 'Faktor amdreiñ elektronek',
'exif-shutterspeedvalue' => "Tizh ar c'hlozer APEX",
'exif-aperturevalue' => 'Digorder APEX',
'exif-brightnessvalue' => 'Sklêrder APEX',
@@ -2925,7 +2981,6 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
'exif-focallength' => 'Hirder ar fokalenn',
'exif-subjectarea' => 'Gorread ar sujed',
'exif-flashenergy' => "Nerzh al luc'h",
-'exif-spatialfrequencyresponse' => 'Frekañs egorel',
'exif-focalplanexresolution' => 'Muzuliadur a-led ur fokalenn blaen',
'exif-focalplaneyresolution' => 'Muzuliadur a-serzh ur fokalenn blaen',
'exif-focalplaneresolutionunit' => 'Unanenn spisder evit ur fokalenn blaen',
@@ -2934,7 +2989,6 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
'exif-sensingmethod' => 'Hentenn detektiñ',
'exif-filesource' => 'Tarzh ar restr',
'exif-scenetype' => 'Seurt arvest',
-'exif-cfapattern' => 'Framm silañ al livioù',
'exif-customrendered' => 'Plediñ gant ar skeudennoù personelaet',
'exif-exposuremode' => "Mod louc'hañ",
'exif-whitebalance' => 'Mentel ar gwennoù',
@@ -2979,10 +3033,79 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
'exif-gpsareainformation' => 'Anv an takad GPS',
'exif-gpsdatestamp' => 'Deiziad GPS',
'exif-gpsdifferential' => "Reizhadenn diforc'hadus GPS",
+'exif-jpegfilecomment' => 'Evezhiadenn digant ar restr JPEG',
+'exif-keywords' => "Gerioù alc'hwez",
+'exif-worldregioncreated' => 'Ranndir ma voe tennet ar skeudenn',
+'exif-countrycreated' => 'Bro ma voe tennet ar skeudenn',
+'exif-countrycodecreated' => 'Kod ar vro ma voe tennet ar skeudenn',
+'exif-provinceorstatecreated' => 'Proviñs pe Stad ma voe tennet ar skeudenn',
+'exif-citycreated' => 'Kêr ma voe tennet ar skeudenn',
+'exif-sublocationcreated' => "Islec'hiadur ar gêr ma voe tennet ar skeudenn",
+'exif-worldregiondest' => 'Ranndir diskouezet',
+'exif-countrydest' => 'Bro diskouezet',
+'exif-countrycodedest' => 'Kod evit ar vro diskouezet',
+'exif-provinceorstatedest' => 'Proviñs pe Stad diskouezet',
+'exif-citydest' => 'Kêr diskouezet',
+'exif-sublocationdest' => "Islec'hiadur ar gêr diskouezet",
'exif-objectname' => 'Titl berr',
+'exif-specialinstructions' => 'Kemennadurioù dibar',
+'exif-headline' => 'Titl',
+'exif-credit' => 'Kred/Pourvezer',
+'exif-source' => 'Mammenn',
+'exif-editstatus' => 'Statud skridaozañ ar skeudenn',
+'exif-urgency' => 'Malluster',
+'exif-fixtureidentifier' => 'Anv elefenn a zistro ingal',
+'exif-locationdest' => "Lec'h diskouezet",
+'exif-locationdestcode' => "Kod al lec'h diskouezet",
+'exif-objectcycle' => "Mare eus an deiz m'eo bet soñjet ar media-mañ evitañ",
+'exif-contact' => 'Titouroù diwar-benn an darempred',
+'exif-writer' => 'Skrivagner',
+'exif-languagecode' => 'Yezh',
+'exif-iimversion' => 'Stumm IIM',
+'exif-iimcategory' => 'Rummad',
+'exif-iimsupplementalcategory' => 'Rummadoù ouzhpenn',
+'exif-datetimeexpires' => 'Arabat implijout goude',
+'exif-datetimereleased' => "Embannet d'an",
+'exif-originaltransmissionref' => "Treuzkas orin ar c'hod lec'hiañ",
+'exif-identifier' => 'Anaouder',
+'exif-lens' => 'Ferenn bet implijet',
+'exif-serialnumber' => 'Niverenn rummad ar benveg',
+'exif-cameraownername' => "Perc'henn ar benveg",
+'exif-label' => 'Tikedenn',
+'exif-datetimemetadata' => 'Deiziad ma voe kemmet ar metaroadennoù da ziwezhañ',
+'exif-nickname' => 'Anv anfurmel ar skeudenn',
+'exif-rating' => 'Priziañ (war 5)',
+'exif-rightscertificate' => 'Testeni merañ ar gwirioù',
+'exif-copyrighted' => 'Statud a-fet gwirioù aozer',
+'exif-copyrightowner' => "Perc'henn ar gwirioù aozer (copyright)",
+'exif-usageterms' => 'Termenoù implijout',
+'exif-webstatement' => 'Disklêriadur gwrioù-aozer enlinenn',
+'exif-originaldocumentid' => 'ID nemetañ an teul orin',
+'exif-licenseurl' => "Chomlec'h Internet evit an aotre gwirioù-aozer",
+'exif-morepermissionsurl' => 'Titouroù all war an aotre-implijout',
+'exif-attributionurl' => 'Ma adimplijt an oberenn-mañ, lakait ul liamm war-zu',
+'exif-preferredattributionname' => 'Ma adimplijt an oberenn-mañ, roit kred da',
+'exif-pngfilecomment' => 'Evezhiadenn digant ar restr PNG',
+'exif-disclaimer' => 'Kemenn hollek',
+'exif-contentwarning' => 'Kemenn-diwall diwar-benn an danvez',
+'exif-giffilecomment' => 'Evezhiadenn digant ar restr GIF',
+'exif-intellectualgenre' => 'Seurt elfenn',
+'exif-subjectnewscode' => 'Kod ar sujed',
+'exif-scenecode' => 'Kod leurenniñ IPTC',
+'exif-event' => 'Darvoud diskouezet',
+'exif-organisationinimage' => 'Anv an aozadurioù diskouezet war ar skeudenn',
+'exif-personinimage' => 'Den diskouezet',
+'exif-originalimageheight' => 'Sav ar skeudenn a-raok na vije bet krennet',
+'exif-originalimagewidth' => 'Ledander ar skeudenn a-raok na vije bet krennet',
# EXIF attributes
'exif-compression-1' => 'Hep gwaskañ',
+'exif-compression-2' => 'CCITT Strollad 3 1 Hirder kodañ Huffman kemmet a vent 1',
+'exif-compression-3' => 'CCITT Strollad 3 kodañ ar pelleiler',
+'exif-compression-4' => 'CCITT Strollad 4 kodañ ar pelleiler',
+
+'exif-copyrighted-true' => 'Pep gwir miret strizh',
+'exif-copyrighted-false' => 'Domani foran',
'exif-unknowndate' => 'Deiziad dianav',
@@ -2998,6 +3121,8 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
'exif-planarconfiguration-1' => 'Roadennoù kenstok',
'exif-planarconfiguration-2' => 'Roadennoù distag',
+'exif-colorspace-65535' => "N'eo ket diouzh ur stalon",
+
'exif-componentsconfiguration-0' => "n'eus ket anezhi",
'exif-exposureprogram-0' => 'Anspisaet',
@@ -3111,6 +3236,10 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
'exif-gpslongitude-e' => 'Hedred reter',
'exif-gpslongitude-w' => 'Hedred kornôg',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metr|metr}} a-us da live ar mor',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metr|metr}} a-is da live ar mor',
+
'exif-gpsstatus-a' => 'O vuzuliañ',
'exif-gpsstatus-v' => 'etreoberatadusted ar muzul',
@@ -3122,21 +3251,73 @@ Kement liamm all war an hevelep linenn a seller outañ evel un nemedenn, da skou
'exif-gpsspeed-m' => 'Miltir dre eur',
'exif-gpsspeed-n' => 'Skoulm',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometr',
+'exif-gpsdestdistance-m' => 'Miltir',
+'exif-gpsdestdistance-n' => 'Miltir',
+
+'exif-gpsdop-excellent' => 'Mat-kenañ ($1)',
+'exif-gpsdop-good' => 'Mat ($1)',
+'exif-gpsdop-moderate' => 'Etre ($1)',
+'exif-gpsdop-fair' => 'Propik ($1)',
+'exif-gpsdop-poor' => 'Dister ($1)',
+
+'exif-objectcycle-a' => 'Da vintin hepken',
+'exif-objectcycle-p' => 'Diouzh an abardaez hepken',
+'exif-objectcycle-b' => 'Da vintin ha diouzh an abaradez',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => "Durc'hadur gwir",
'exif-gpsdirection-m' => 'Norzh magnetek',
+'exif-ycbcrpositioning-1' => 'Kreizet',
+'exif-ycbcrpositioning-2' => "Ken-lec'hiet",
+
+'exif-dc-contributor' => 'Aozerien',
+'exif-dc-coverage' => 'Goloadur ar media a-fet amzer pe tachenn',
+'exif-dc-date' => 'Deiziad(où)',
+'exif-dc-publisher' => 'Embanner',
+'exif-dc-relation' => 'Media kar',
+'exif-dc-rights' => 'Gwirioù',
+'exif-dc-source' => 'Media orin',
+'exif-dc-type' => 'Seurt media',
+
+'exif-rating-rejected' => 'Distaolet',
+
+'exif-isospeedratings-overflow' => "Brasoc'h eget 65535",
+
+'exif-iimcategory-ace' => 'Arzoù, sevenadur ha diduamantoù',
+'exif-iimcategory-clj' => 'Torfedoù ha lezennoù',
+'exif-iimcategory-dis' => 'Reuzioù ha gwallzarvoudoù',
+'exif-iimcategory-fin' => 'Armerzh hag aferioù',
+'exif-iimcategory-edu' => 'Deskadurezh',
+'exif-iimcategory-evn' => 'Endro',
+'exif-iimcategory-hth' => "Yec'hed",
+'exif-iimcategory-hum' => 'Dedenn denel',
+'exif-iimcategory-lab' => 'Bed al labour',
+'exif-iimcategory-lif' => 'Doare bevañ ha dudiamantoù',
+'exif-iimcategory-pol' => 'Politikerezh',
+'exif-iimcategory-rel' => 'Relijion ha kredennoù',
+'exif-iimcategory-sci' => 'Skiantoù ha teknologiezhoù',
+'exif-iimcategory-soi' => 'Temoù kevredigezhel',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Brezelioù, tabutoù ha turmud',
+'exif-iimcategory-wea' => 'Amzer',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Izel ($1)',
+'exif-urgency-high' => 'Uhel ($1)',
+'exif-urgency-other' => 'Priorelezh termenet gant an aozer ($1)',
+
# External editor support
'edit-externally' => 'Kemmañ ar restr-mañ dre un arload diavaez',
-'edit-externally-help' => "(Gwelet [http://www.mediawiki.org/wiki/Manual:External_editors erbedadennoù staliañ an aozer diavaez] a-benn gouzout hiroc'h).",
+'edit-externally-help' => "(Gwelet [//www.mediawiki.org/wiki/Manual:External_editors erbedadennoù staliañ an aozer diavaez] a-benn gouzout hiroc'h).",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'an holl',
-'imagelistall' => 'an holl',
-'watchlistall2' => 'pep tra',
-'namespacesall' => 'pep tra',
-'monthsall' => 'an holl',
-'limitall' => 'An holl',
+'watchlistall2' => 'pep tra',
+'namespacesall' => 'pep tra',
+'monthsall' => 'an holl',
+'limitall' => 'An holl',
# E-mail address confirmation
'confirmemail' => "Kadarnaat ar chomlec'h postel",
@@ -3216,17 +3397,24 @@ $1',
'trackbackdeleteok' => 'Diverket mat eo bet al liamm war-gil.',
# Delete conflict
-'deletedwhileediting' => "'''Diwallit''' : Diverket eo bet ar bajenn-mañ bremañ ha krog e oac'h da zegas kemmoù enni!",
-'confirmrecreate' => "Diverket eo bet ar pennad-mañ gant [[User:$1|$1]] ([[User talk:$1|kaozeal]]) goude ma vije bet kroget ganeoc'h kemmañ anezhañ :
+'deletedwhileediting' => "'''Diwallit''' : Diverket eo bet ar bajenn-mañ bremañ ha krog e oac'h da zegas kemmoù enni!",
+'confirmrecreate' => "Diverket eo bet ar pennad-mañ gant [[User:$1|$1]] ([[User talk:$1|kaozeal]]) goude ma vije bet kroget ganeoc'h kemmañ anezhañ :
: ''$2''
Kadarnait mar plij e fell deoc'h krouiñ ar pennad-mañ da vat.",
-'recreate' => 'Adkrouiñ',
+'confirmrecreate-noreason' => "Diverket eo bet ar pennad-mañ gant [[User:$1|$1]] ([[User talk:$1|kaozeal]]) goude ma vije bet kroget ganeoc'h kemmañ anezhañ. Kadarnait e fell deoc'h adkrouiñ ar pennad-mañ e gwirionez.",
+'recreate' => 'Adkrouiñ',
# action=purge
'confirm_purge_button' => 'Mat eo',
'confirm-purge-top' => 'Spurjañ krubuilh ar bajenn-mañ?',
'confirm-purge-bottom' => 'Spurjañ ur bajenn a a naeta ar grubuilh hag a redi ar stumm nevesañ da zont war wel.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Mat eo',
+'confirm-watch-top' => "Ouzhpennañ ar bajenn-mañ d'ho roll evezhiañ",
+'confirm-unwatch-button' => 'Mat eo',
+'confirm-unwatch-top' => 'Lemel ar bajenn-mañ a-ziwar ho roll evezhiañ',
+
# Multipage image navigation
'imgmultipageprev' => '&larr; pajenn gent',
'imgmultipagenext' => "pajenn war-lerc'h &rarr;",
@@ -3276,13 +3464,13 @@ Klaskit rakwelet er mod boutin.',
'watchlistedit-normal-legend' => 'Tennañ ar pajennoù a-ziwar ho roll evezhiañ',
'watchlistedit-normal-explain' => 'Dindan emañ diskouezet titloù ar pajennoù zo war ho roll evezhiañ.
Evit tennañ unan, sellet ouzh ar voest e-kichen ha klikañ war "{{int:Watchlistedit-normal-submit}}".
-Gellout a reer [[Special:Watchlist/raw|kemmañ ar roll (mod diginkl) ivez]].',
+Gellout a reer [[Special:EditWatchlist/raw|kemmañ ar roll (mod diginkl) ivez]].',
'watchlistedit-normal-submit' => 'Tennañ ar pajennoù',
'watchlistedit-normal-done' => 'Tennet ez eus bet {{PLURAL:$1|1 pajenn|$1 pajenn}} a-ziwar ho roll evezhiañ :',
'watchlistedit-raw-title' => 'Kemmañ ar roll evezhiañ (mod diginkl)',
'watchlistedit-raw-legend' => 'Kemmañ ar roll evezhiañ (mod diginkl)',
'watchlistedit-raw-explain' => 'Dindan emañ titloù ar pajennoù zo war ho roll evezhiañ; gallout a rit kemmañ anezho en ur ouzhpennañ pe tennañ pajennoù a-ziwar ar roll; un titl dre linenn. Ur wech graet, klikañ war "{{int:Watchlistedit-raw-submit}}".
-Gallout a rit [[Special:Watchlist/edit|implijout an aozer boutin ivez]].',
+Gallout a rit [[Special:EditWatchlist|implijout an aozer boutin ivez]].',
'watchlistedit-raw-titles' => 'Titloù :',
'watchlistedit-raw-submit' => 'Nevesaat ar roll evezhiañ',
'watchlistedit-raw-done' => 'Nevesaet eo bet ho roll evezhiañ.',
@@ -3313,33 +3501,33 @@ Gallout a rit [[Special:Watchlist/edit|implijout an aozer boutin ivez]].',
'duplicate-defaultsort' => 'Diwallit : Frikañ a ra an alc\'hwez dre ziouer "$2" an hini a oa a-raok "$1".',
# Special:Version
-'version' => 'Stumm',
-'version-extensions' => 'Astennoù staliet',
-'version-specialpages' => 'Pajennoù dibar',
-'version-parserhooks' => 'Galvoù dielfennañ',
-'version-variables' => 'Argemmoù',
-'version-skins' => 'Gwiskadurioù',
-'version-other' => 'Diseurt',
-'version-mediahandlers' => 'Merer danvez liesvedia',
-'version-hooks' => 'Galvoù',
-'version-extension-functions' => "Arc'hwelioù an astennoù",
-'version-parser-extensiontags' => 'Balizenn dielfennañ o tont eus an astennoù',
-'version-parser-function-hooks' => "Galv an arc'hwelioù dielfennañ",
-'version-skin-extension-functions' => "Arc'hwelioù etrefas astennoù",
-'version-hook-name' => 'Anv ar galv',
-'version-hook-subscribedby' => 'Termenet gant',
-'version-version' => '(Stumm $1)',
-'version-license' => 'Aotre-implijout',
-'version-poweredby-credits' => "Mont a ra ar wiki-mañ en-dro a-drugarez da '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 're all',
-'version-license-info' => "Ur meziant frank eo MediaWiki; gallout a rit skignañ anezhañ ha/pe kemmañ anezhañ dindan termenoù ar GNU Aotre-implijout Foran Hollek evel m'emañ embannet gant Diazezadur ar Meziantoù Frank; pe diouzh stumm 2 an aotre-implijout, pe (evel mar karit) ne vern pe stumm nevesoc'h.
+'version' => 'Stumm',
+'version-extensions' => 'Astennoù staliet',
+'version-specialpages' => 'Pajennoù dibar',
+'version-parserhooks' => 'Galvoù dielfennañ',
+'version-variables' => 'Argemmoù',
+'version-antispam' => 'Mirout ouzh ar strob',
+'version-skins' => 'Gwiskadurioù',
+'version-other' => 'Diseurt',
+'version-mediahandlers' => 'Merer danvez liesvedia',
+'version-hooks' => 'Galvoù',
+'version-extension-functions' => "Arc'hwelioù an astennoù",
+'version-parser-extensiontags' => 'Balizenn dielfennañ o tont eus an astennoù',
+'version-parser-function-hooks' => "Galv an arc'hwelioù dielfennañ",
+'version-hook-name' => 'Anv ar galv',
+'version-hook-subscribedby' => 'Termenet gant',
+'version-version' => '(Stumm $1)',
+'version-license' => 'Aotre-implijout',
+'version-poweredby-credits' => "Mont a ra ar wiki-mañ en-dro a-drugarez da '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 're all',
+'version-license-info' => "Ur meziant frank eo MediaWiki; gallout a rit skignañ anezhañ ha/pe kemmañ anezhañ dindan termenoù ar GNU Aotre-implijout Foran Hollek evel m'emañ embannet gant Diazezadur ar Meziantoù Frank; pe diouzh stumm 2 an aotre-implijout, pe (evel mar karit) ne vern pe stumm nevesoc'h.
Ingalet eo MediaWiki gant ar spi e vo talvoudus met n'eus TAMM GWARANT EBET; hep zoken gwarant empleg ar VARC'HADUSTED pe an AZASTER OUZH UR PAL BENNAK. Gwelet ar GNU Aotre-Implijout Foran Hollek evit muioc'h a ditouroù.
-Sañset oc'h bezañ resevet [{{SERVER}}{{SCRIPTPATH}}/COPYING un eilskrid eus ar GNU Aotre-implijout Foran Hollek] a-gevret gant ar programm-mañ; ma n'hoc'h eus ket, skrivit da Diazezadur ar Meziantoù Frank/Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, SUA pe [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html lennit anezhañ enlinenn].",
-'version-software' => 'Meziant staliet',
-'version-software-product' => 'Produ',
-'version-software-version' => 'Stumm',
+Sañset oc'h bezañ resevet [{{SERVER}}{{SCRIPTPATH}}/COPYING un eilskrid eus ar GNU Aotre-implijout Foran Hollek] a-gevret gant ar programm-mañ; ma n'hoc'h eus ket, skrivit da Diazezadur ar Meziantoù Frank/Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, SUA pe [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lennit anezhañ enlinenn].",
+'version-software' => 'Meziant staliet',
+'version-software-product' => 'Produ',
+'version-software-version' => 'Stumm',
# Special:FilePath
'filepath' => 'Hent moned ur restr',
@@ -3349,22 +3537,22 @@ Sañset oc'h bezañ resevet [{{SERVER}}{{SCRIPTPATH}}/COPYING un eilskrid eus ar
Diskouezet eo ar skeudennoù gant ur pizhder uhel, erounit a ra ar restroù all war-eeun gant o frogramm stag.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Klask ar restroù e doubl',
-'fileduplicatesearch-summary' => 'Klask restroù e doubl war diazez talvoudennoù darnek.
-
-Merkañ anv ar restr hep ar rakger "{{ns:file}}:"',
-'fileduplicatesearch-legend' => 'Klask un doubl',
-'fileduplicatesearch-filename' => 'Anv ar restr :',
-'fileduplicatesearch-submit' => 'Klask',
-'fileduplicatesearch-info' => '$1 × $2 piksel<br />Ment ar restr : $3<br />seurt MIME : $4',
-'fileduplicatesearch-result-1' => 'N\'eus ket a zoubloù heñvel-poch gant ar restr "$1".',
-'fileduplicatesearch-result-n' => '{{PLURAL:$2|1 doubl heñvel-poch|$2 doubl heñvel-poch}} zo gant ar restr "$1".',
+'fileduplicatesearch' => 'Klask ar restroù e doubl',
+'fileduplicatesearch-summary' => 'Klask restroù e doubl war diazez talvoudennoù krennet.',
+'fileduplicatesearch-legend' => 'Klask un doubl',
+'fileduplicatesearch-filename' => 'Anv ar restr :',
+'fileduplicatesearch-submit' => 'Klask',
+'fileduplicatesearch-info' => '$1 × $2 piksel<br />Ment ar restr : $3<br />seurt MIME : $4',
+'fileduplicatesearch-result-1' => 'N\'eus ket a zoubloù heñvel-poch gant ar restr "$1".',
+'fileduplicatesearch-result-n' => '{{PLURAL:$2|1 doubl heñvel-poch|$2 doubl heñvel-poch}} zo gant ar restr "$1".',
+'fileduplicatesearch-noresults' => 'N\'eus bet kavet restr ebet anvet "$1".',
# Special:SpecialPages
'specialpages' => 'Pajennoù dibar',
'specialpages-note' => '----
* Pajennoù dibar boutin.
-* <strong class="mw-specialpagerestricted">Pajennoù dibar miret strizh.</strong>',
+* <span class="mw-specialpagerestricted">Pajennoù dibar miret strizh.</span>
+* <span class="mw-specialpagecached">Pajennoù dibar krubuilhet hepken (a c\'hellfe bezañ re gozh).</span>',
'specialpages-group-maintenance' => "Rentaoù-kont trezalc'h",
'specialpages-group-other' => 'Pajennoù dibar all',
'specialpages-group-login' => 'Kevreañ / en em enrollañ',
diff --git a/languages/messages/MessagesBrh.php b/languages/messages/MessagesBrh.php
new file mode 100644
index 00000000..db45883d
--- /dev/null
+++ b/languages/messages/MessagesBrh.php
@@ -0,0 +1,650 @@
+<?php
+/** Brahui (Bráhuí)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Imdadb
+ */
+
+$messages = array(
+# Dates
+'sunday' => 'YakÅŸambe',
+'monday' => 'DuÅŸambe',
+'tuesday' => 'SiÅŸambe',
+'wednesday' => 'Cárşambe',
+'thursday' => 'PancÅŸambe',
+'friday' => 'Jummá',
+'saturday' => 'Afta',
+'sun' => 'YakÅŸambe',
+'mon' => 'DuÅŸambe',
+'tue' => 'SiÅŸambe',
+'wed' => 'Cárşambe',
+'thu' => 'PancÅŸambe',
+'fri' => 'Jummá',
+'sat' => 'Afta',
+'january' => 'Janvarí',
+'february' => 'Farvarí',
+'march' => 'Márc',
+'april' => 'Aprel',
+'may_long' => 'Maí',
+'june' => 'Jún',
+'july' => 'Jaoláí',
+'august' => 'Agast',
+'september' => 'Satumbar',
+'october' => 'Aktúbar',
+'november' => 'Naombar',
+'december' => 'Dasumbar',
+'january-gen' => 'Janvarí',
+'february-gen' => 'Farvarí',
+'march-gen' => 'Márc',
+'april-gen' => 'Aprel',
+'may-gen' => 'Maí',
+'june-gen' => 'Jún',
+'july-gen' => 'Jaoláí',
+'august-gen' => 'Agast',
+'september-gen' => 'Satumbar',
+'october-gen' => 'Aktúbar',
+'november-gen' => 'Naombar',
+'december-gen' => 'Dasumbar',
+'jan' => 'Janvarí',
+'feb' => 'Farvarí',
+'mar' => 'Márc',
+'apr' => 'Aprel',
+'may' => 'Maí',
+'jun' => 'Jún',
+'jul' => 'Jaoláí',
+'aug' => 'Agast',
+'sep' => 'Satumbar',
+'oct' => 'Aktúbar',
+'nov' => 'Naombar',
+'dec' => 'Dasumbar',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Xáot|Xáot ák}}',
+'category_header' => 'Xáot "$1" ŧí panna ģák',
+'subcategories' => 'Şefko Xáot ák',
+'hidden-categories' => '{{PLURAL:$1|Aodem á xáot|Aodem á xáot ák}}',
+'category-subcat-count' => '{{PLURAL:$2|Dá xáot aŧí bíra dá şefko-xáot e.|Dá xáot aŧí, kulloí $2 án, đá {{PLURAL:$1|şefko-xáot e|$1 şefko-xáot arer}}.}}',
+'category-article-count' => '{{PLURAL:$2|Dá xáot aŧí bíra şefko panna ģák o.|Dá xáot aŧí şefko {{PLURAL:$1|panna|$1 panna}}, kulloí $2 án.}}',
+'listingcontinuesabbrev' => 'barjá.',
+
+'about' => 'Bárav aŧ',
+'newwindow' => '(púskuno darí seŧí malingik)',
+'cancel' => 'Paşomán',
+'mytalk' => 'Kaná ítgap',
+'navigation' => 'Kasarşoní',
+
+# Cologne Blue skin
+'qbfind' => 'Paŧŧa',
+
+# Vector skin
+'vector-action-addsection' => 'Púskun sarhál',
+'vector-action-delete' => 'Mesa',
+'vector-action-move' => 'Surif',
+'vector-action-protect' => 'Rakk',
+'vector-view-create' => 'Biná',
+'vector-view-edit' => 'Radbadal',
+'vector-view-history' => 'Lekav e ur',
+'vector-view-view' => 'Xuán',
+'vector-view-viewsource' => 'Bumpad e ur',
+'actions' => 'Amal ák',
+'namespaces' => 'Pin-jága ģák',
+'variants' => 'BadaldroÅŸumk',
+
+'errorpagetitle' => 'Radí',
+'returnto' => '$1 á aŕseng.',
+'tagline' => '{{SITENAME}} án',
+'help' => 'Ráhşon',
+'search' => 'Paŧŧopol',
+'searchbutton' => 'Paŧŧopol',
+'searcharticle' => 'Ráím',
+'history' => 'Panna ná lekav',
+'history_short' => 'Lekav',
+'printableversion' => 'Chapáí droşum',
+'permalink' => 'Pakká gańđ',
+'edit' => 'Radbadal',
+'create' => 'Biná',
+'editthispage' => 'Dá panna ŧí radbadal kar',
+'create-this-page' => 'Dá panna e ađđ et',
+'delete' => 'Mesa',
+'protect' => 'Rakk',
+'protect_change' => 'badal kar',
+'newpage' => 'Púskuno panna',
+'talkpage' => 'Dá panna ná bárav aŧ ítgap kabo',
+'talkpagelinktext' => 'Ãtgap',
+'personaltools' => 'Tená aozár ák',
+'talk' => 'Ãtgap',
+'views' => 'Nadára',
+'toolbox' => 'Aozárxána',
+'otherlanguages' => 'Elo bolí teŧí',
+'redirectedfrom' => '($1 án aŕsok)',
+'redirectpagesub' => 'Aŕsengoká panna',
+'lastmodifiedat' => 'Dá panna ŧí guđđíko radbadal $1 ($2) á massus us.',
+'jumpto' => 'Dáng drikka:',
+'jumptonavigation' => 'kasarşoní',
+'jumptosearch' => 'paŧŧopol',
+
+# 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}} ná bárav aŧ',
+'aboutpage' => 'Project:Bárav',
+'copyright' => 'Mađđí $1 aná rid aŧ rasenging e.',
+'copyrightpage' => '{{ns:project}}:Hakkxuájaí',
+'currentevents' => 'Sáŕí hál',
+'currentevents-url' => 'Project:Sáŕí hál',
+'disclaimers' => 'Dazkaşşík',
+'disclaimerpage' => 'Project:Las dazkaşşí',
+'edithelp' => 'Radbadal ráhşoní',
+'edithelppage' => 'Help:Radbadal',
+'helppage' => 'Help:Ridoband',
+'mainpage' => 'Monpanna',
+'mainpage-description' => 'Monpanna',
+'portal' => 'Cágiŕd bundar',
+'portal-url' => 'Project: Cágiŕd bundar',
+'privacy' => 'Rázdárí ráhband',
+'privacypage' => 'Project:Rázdárí ráhband',
+
+'badaccess' => 'Mokal radí',
+
+'retrievedfrom' => '"$1" án alok',
+'youhavenewmessages' => 'Nekin $1 ($2) are.',
+'newmessageslink' => 'púskuno kulav',
+'newmessagesdifflink' => 'guđđíko radbadal',
+'editsection' => 'radbadal',
+'editold' => 'radbadal',
+'viewsourceold' => 'bumpad e ur',
+'editlink' => 'radbadal',
+'viewsourcelink' => 'bumpad e ur',
+'editsectionhint' => 'Vanđ aŧí radbadal: $1',
+'toc' => 'Ridoband',
+'showtoc' => 'páş',
+'hidetoc' => 'aodem',
+'site-rss-feed' => '$1 RSS serí',
+'site-atom-feed' => '$1 Atom serí',
+'page-rss-feed' => '"$1" RSS serí',
+'page-atom-feed' => '"$1" Atom serí',
+'red-link-title' => '$1 (panna káŧum án aff)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Panna',
+'nstab-user' => 'Kárband ná panna',
+'nstab-special' => 'Xás á panna',
+'nstab-project' => 'Bunkárem panna',
+'nstab-image' => 'Fáil',
+'nstab-template' => 'Kálib',
+'nstab-category' => 'Xáot',
+
+# General errors
+'missing-article' => 'Cáindárí ambár aŧí panna sená nivişt xanningtav arásiŧ ki xaningosus, "$1" $2 piní á.
+
+Dá geştirí mesingoko panna sená nákára o fark yá lekav ná gańđ aseá ining án marek.
+
+Aga dun aff, to ní software aŧí aeb as xanánus.
+
+Ná minnatvár maron ki dáná itlá e [[Special:ListUsers/sysop|amaldár]] as e kes, o URL e nişán kes.',
+'missingarticle-rev' => '(radbadal droÅŸum#: $1)',
+'viewsource' => 'Bumpad e ur',
+
+# Login and logout pages
+'yourname' => 'Kárband pin:',
+'yourpassword' => 'Kilítlaoz:',
+'remembermypassword' => 'Dá darí ŧí kaná pinváxubí e ust á ates (ziát án ziát $1 {{PLURAL:$1|de|de}} akin)',
+'login' => 'Drustírástí',
+'nav-login-createaccount' => 'Drustírástí / pinváxubí',
+'userlogin' => 'Drustírástí / pinváxubí',
+'logout' => 'Bidar mar',
+'userlogout' => 'Bidar mar',
+'nologinlink' => 'Púskun pinváxubí kar',
+'mailmypassword' => 'Púskuná kilítlaoz e girok ŧapál aŧ mon et',
+'loginlanguagelabel' => 'Bolí: $1',
+
+# Edit page toolbar
+'bold_sample' => 'Zanđ nivişt',
+'bold_tip' => 'Zanđ nivişt',
+'italic_sample' => 'Coŧ nivişt',
+'italic_tip' => 'Coŧ nivişt',
+'link_sample' => 'Gańđ aná sarhál',
+'link_tip' => 'Handí gańđ',
+'extlink_sample' => 'http://www.example.com gańđ aná sarhál',
+'extlink_tip' => 'Darí gańđ (sarlaoz http:// e ust á ates)',
+'headline_sample' => 'Sarhál',
+'headline_tip' => 'Şefko sarhál',
+'nowiki_sample' => 'Be-berifok á nivişt áte dáŕe şá',
+'nowiki_tip' => 'Vikí berifing e gírám kar',
+'image_tip' => 'Liccok fáil',
+'media_tip' => 'Fáil ná gańđ',
+'sig_tip' => 'Ná dazrand vaxtŧappo ton avár',
+'hr_tip' => 'Pánádí lík (kazání aŧ kárem aļ)',
+
+# Edit pages
+'summary' => 'Bungapp:',
+'subject' => 'Sarhál:',
+'minoredit' => 'Dá cunko radbadal as e',
+'watchthis' => 'Dá panna ná xiálí mar',
+'savearticle' => 'Panna e atíko kar',
+'preview' => 'Sarí Jác',
+'showpreview' => 'Sarí jác nişán et',
+'showdiff' => 'Fark nişán et',
+'anoneditwarning' => "'''Xiál kes:''' Ní pinváxubí kattanus.
+Panna ná radbadal lekav aŧí ná IP pajjár atíko kanningik.",
+'summary-preview' => 'Bungapp ná sarí jác:',
+'newarticle' => '(Púskun)',
+'newarticletext' => "Ní anduno panna sená rand e alkunus ki káŧum án joŕ aff.
+Panna ná biná e kanning kin şefko đabbá ŧí likking şurú kar (Pen cáindárí kin [[{{MediaWiki:Helppage}}|ráhşoní panna]] e ur).
+Aga dáŕe radínk aŧ bassunus, to ''browser'' ná '''padí''' baŧŧańŕ e xaļ.",
+'noarticletext' => "Dáiskán dá panna ŧí icc nivişta aff.
+Elo panna ģáteŧí [[Special:Search/{{PAGENAME}}|dá sarhál e paŧŧa]],
+<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} đek kunoká ''log'' áte paŧŧa],
+yá [{{fullurl:{{FULLPAGENAME}}|action=edit}} dá panna ŧí radbadal kar]</span>.",
+'noarticletext-nopermission' => "Dáiskán dá panna ŧí icc nivişta aff.
+Elo panna ģáteŧí [[Special:Search/{{PAGENAME}}|dá sarhál e paŧŧa]],
+yá <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} đek kunoká ''log'' áte paŧŧa].",
+'previewnote' => "'''Yát kes ki dá bíra sarí jác ase.'''
+Ná radbadal ák deskáne atíko matano.",
+'editing' => '$1 aŧí radbadal kanning us',
+'editingsection' => '$1 (vanđ) aŧí radbadal',
+'templatesused' => 'Dá panna ŧí aloká {{PLURAL:$1|Kálib|Kálib ák}}:',
+'templatesusedpreview' => 'Dá sarí jác aŧí aloká {{PLURAL:$1|Kálib|Kálib ák}}:',
+'template-protected' => '(rakk karok)',
+'template-semiprotected' => '(nem-rakk)',
+'hiddencategories' => 'Dá panna {{PLURAL:$1|1 aodemo xáot|$1 aodemo xáot}} ná básk ase:',
+'permissionserrorstext-withaction' => 'Ne $2 ná mokal aff, oná {{PLURAL:$1|dalíl dáde|dalíl ák dádo}}:',
+
+# History pages
+'viewpagelogs' => 'Dá panna ná hisáb áte ur',
+'currentrev-asof' => '$1 iskán caŧŧ púskuná radbadal droşum',
+'revisionasof' => '$1 á sáŕí badaldroşum',
+'previousrevision' => '↠Mutkuná badaldroşum',
+'nextrevision' => 'Púskuná badal droşum →',
+'currentrevisionlink' => 'Caŧŧ púskuná badal droşum',
+'cur' => 'sáŕí',
+'last' => 'must',
+'history-show-deleted' => 'Bíra mesok',
+'histfirst' => 'Vaxtí á',
+'histlast' => 'Caŧŧ púskuná',
+
+# Revision deletion
+'rev-delundel' => 'páş/aodem',
+'revdel-restore' => 'páşí e badal kar',
+'revdel-restore-deleted' => 'mesok badaldroÅŸumk',
+'revdel-restore-visible' => 'páş badaldroşumk',
+'revdelete-content' => 'niviÅŸt',
+
+# Merge log
+'revertmerge' => 'Jitá',
+
+# Diffs
+'history-title' => '$1 aŧí radbadal ná lekav',
+'difference' => '(Badal droşum teŧí fark)',
+'lineno' => 'Lík $1:',
+'editundo' => 'ságí',
+
+# Search results
+'searchresults' => 'Paŧŧopol ná kaŧŧiá',
+'searchresults-title' => '$1 kin paŧŧopol ná kaŧŧiá',
+'searchresulttext' => '{{SITENAME}} ŧí paŧŧopol ná bábat cáindárí kin [[{{MediaWiki:Helppage}}|{{int:help}}]] e ur.',
+'searchsubtitle' => 'Ní \'\'\'[[:$1]]\'\'\' kin paŧpol kares ([[Special:Prefixindex/$1|"$1" án biná maroká ģuŧ panna ģák]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ton gańđok ģuŧ panna ģák]])',
+'searchsubtitleinvalid' => "Ní '''$1''' akin paŧŧopol kares",
+'notitlematches' => 'Dá pin aná icco panna ná sarhál allav',
+'notextmatches' => 'Icco panna nivişt dá vaŕ aná allav',
+'prevn' => 'gidrengoká {{PLURAL:$1|$1}}',
+'nextn' => 'mon aná {{PLURAL:$1|$1}}',
+'shown-title' => 'Ar panna ģá $1 {{PLURAL:$1|kaŧŧiá|kaŧŧiá}} nişán et',
+'viewprevnext' => '($1 {{int:pipe-separator}} $2) ($3) e ur',
+'searchmenu-new' => "'''Dá Vikí ŧí \"[[:\$1]]\" panna ná biná kar!'''",
+'searchprofile-articles' => 'Nivişt panna ģák',
+'searchprofile-project' => 'Ráhşon o bunkárem panna ģák',
+'searchprofile-images' => 'Multimedia',
+'searchprofile-everything' => 'Ar giŕá',
+'searchprofile-advanced' => 'Xúŕt',
+'searchprofile-articles-tooltip' => '$1 ŧí paŧŧa',
+'searchprofile-project-tooltip' => '$1 ŧí paŧŧa',
+'searchprofile-images-tooltip' => 'Fáil átekin paŧŧpol',
+'searchprofile-everything-tooltip' => 'Ģuŧŧ nivişt áteŧí paŧŧpol (ítgap ná panna ģáteton avár)',
+'search-result-size' => '$1 ({{PLURAL:$2|1 laoz|$2 laoz}})',
+'search-redirect' => '(aŕsa $1)',
+'search-section' => '($1 vanđ)',
+'search-suggest' => 'Maga dád xuáhása: $1',
+'search-interwiki-caption' => 'Amkár bunkáremk',
+'search-interwiki-default' => '$1 kaŧŧiá:',
+'search-interwiki-more' => '(pen)',
+'search-mwsuggest-enabled' => 'saláh ton',
+'search-mwsuggest-disabled' => 'be saláh',
+'searchrelated' => 'amrang',
+'searchall' => 'ģuŧŧ',
+'nonefound' => "'''Xiáldárí''': Bunyádí vaŕ aŧ bíra giŕás pinjága áteŧí paŧpol marek.
+
+Ģuŧŧ mađđí ŧí paŧpol kin (ítgap panna, kálib, dá-e teton aviŕda) tená just átá avalsar aŧí sarlaoz ''all:'' xaļ, yá bakár pinjága e sarlaoz ná jága ģá xaļ.",
+'search-nonefound' => 'Just aná icc kaŧŧiá allav',
+'powersearch' => 'Xúŕt paŧŧopol',
+'powersearch-legend' => 'Xúŕt paŧŧopol',
+'powersearch-ns' => 'Pin-jága ģáteŧí paŧŧopol:',
+'powersearch-redir' => 'Aŕsoká panna ģátá cirr e nişán et',
+'powersearch-field' => 'Dáŕkin paŧŧopol',
+
+# Preferences page
+'preferences' => 'Gicenk',
+'mypreferences' => 'Kaná gicenk',
+'yourrealname' => 'Aslí pin',
+
+# Groups
+'group-sysop' => 'Amaldár ák',
+
+'grouppage-sysop' => '{{ns:project}}:Amaldár ák',
+
+# User rights log
+'rightslog' => 'Kárband hakk hisáb',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'dá panna ŧí radbadal kar',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|radbadal|radbadal}}',
+'recentchanges' => 'Zút áteaŧ maroká radbadal ák',
+'recentchanges-legend' => 'Zút áteaŧ marok radbadal tekin gicenk',
+'recentchanges-label-newpage' => 'Dá radbadal aŧ panna sená biná mass',
+'recentchanges-label-minor' => 'Dá cunko radbadal as e',
+'recentchanges-label-bot' => 'Dá xudkár asená dú án maroko radbadal as e',
+'rcnote' => "Şefko {{PLURAL:$1|'''1''' radbadal e|guđđíko '''$1''' radbadal áko}}, gidrengoká {{PLURAL:$2|de aŧí|'''$2''' de teŧí}}, $5, $4 ná hisáb aŧ.",
+'rcnotefrom' => "Şefko raddobadal ák '''$2''' án maroko ('''$1''' iskán páş o)",
+'rclistfrom' => '$1 án púskuná radbadal áke nişán et',
+'rcshowhideminor' => 'Cunká radbadal áte $1',
+'rcshowhidebots' => 'Boŧ áte $1',
+'rcshowhideliu' => 'Drustírástí kárband áte $1',
+'rcshowhideanons' => 'Bidar kárband áte $1',
+'rcshowhidemine' => 'Kaná radbadal áte $1',
+'rclinks' => 'Guđđíko $2 de teŧí maroká guđđíko $1 radbadal e nişán et<br />$3',
+'diff' => 'fark',
+'hist' => 'lekav',
+'hide' => 'aodem kar',
+'show' => 'níşán et',
+'minoreditletter' => 'C',
+'newpageletter' => 'P',
+'boteditletter' => 'x',
+'rc-enhanced-expand' => 'Vaddíko hál e nişán et (JavaScript xuáik)',
+'rc-enhanced-hide' => 'Vaddíko hál e đakka',
+
+# Recent changes linked
+'recentchangeslinked' => 'Amrang á radbadal ák',
+'recentchangeslinked-toolbox' => 'Amrang á radbadal ák',
+'recentchangeslinked-title' => '"$1" ná bábat radbadal ák',
+'recentchangeslinked-summary' => "Dá amo radbadal átá rid e aráfk ki zút áteaŧ amo panna ģáteŧí massuno aráfk ki xáso panna se án gańđok o (yá xáso xáot asená básk áteton). [[Special:Watchlist|Ná xiálí rid]] aŧí sáŕí panna ģáte '''zanđ nivişt''' aŧ nişán kanningáne.",
+'recentchangeslinked-page' => 'Panna ná pin:',
+
+# Upload
+'upload' => 'Fáil laggif',
+'uploadlogpage' => 'Laggifing ná hisáb',
+'filedesc' => 'Bungapp',
+'uploadedimage' => '"[[$1]]" laggifingá',
+
+'license' => 'Muxtárnáma',
+'license-header' => 'Muxtárnáma',
+
+# File description page
+'file-anchor-link' => 'Fáil',
+'filehist' => 'Fáil ná lekav',
+'filehist-help' => 'Táríx/vaxt e xaļ o fáil e amo droşum aŧí ur ki amo vaxt á ass.',
+'filehist-revert' => 'ságí',
+'filehist-current' => 'sáŕí',
+'filehist-datetime' => 'De/Vaxt',
+'filehist-thumb' => 'Cunikfoŧú',
+'filehist-thumbtext' => '$1 íá badal droşum kin cunikfoŧú',
+'filehist-user' => 'Kárband',
+'filehist-dimensions' => 'Bálád',
+'filehist-comment' => 'Darşánxiál',
+'imagelinks' => 'Fáil ná gańđ ák',
+'linkstoimage' => 'Şefko {{PLURAL:$1|panna fáil ton gańđok e|$1 panna ģák fáil ton gańđok o}}:',
+'uploadnewversion-linktext' => 'Dá fáil ná púskuno badal droşum as laggif',
+
+# Random page
+'randompage' => 'Saŧŧí panna',
+
+# Statistics
+'statistics' => 'Hisábkitáb',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|báiŧ|báiŧ}}',
+'nmembers' => '$1 {{PLURAL:$1|básk|básk}}',
+'prefixindex' => 'Ģuŧŧ panna ģák sarloaz ton',
+'newpages' => 'Púskuná panna ģák',
+'move' => 'Surif',
+'movethispage' => 'Dá panna e surif',
+'pager-newer-n' => '{{PLURAL:$1|púskuná 1|púskuná $1}}',
+'pager-older-n' => '{{PLURAL:$1|mutkuná 1|mutkuná $1}}',
+
+# Book sources
+'booksources' => 'Kitábí bumpad',
+'booksources-search-legend' => 'Kitábí bumpad átekin paŧŧpol',
+'booksources-go' => 'Ráím',
+
+# Special:Log
+'log' => 'Lekav',
+
+# Special:AllPages
+'allpages' => 'Ģuŧŧ panna ģák',
+'alphaindexline' => '$1 án $2 iskán',
+'prevpage' => 'Mustko panna ($1)',
+'allpagesfrom' => 'Dáŕaŧ biná maroká panna ģáte nişán et:',
+'allpagesto' => 'Dáŕaŧ esar maroká panna ģáte nişán et:',
+'allarticles' => 'Ģuŧŧ panna ģák',
+'allpagessubmit' => 'Ráím',
+
+# Special:Categories
+'categories' => 'Xáot ák',
+
+# Special:LinkSearch
+'linksearch' => 'Darí gańđ',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Kárband joŕ kanning ná hisáb',
+'newuserlog-create-entry' => 'Púskun kárband pinváxubí',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(básk átá ridoband)',
+
+# E-mail user
+'emailuser' => 'Dá kárband e girokŧapál as mon et',
+
+# Watchlist
+'watchlist' => 'Kaná xiálí rid',
+'mywatchlist' => 'Kaná xiálí rid',
+'removedwatchtext' => 'Panna "[[:$1]]" e [[Special:Watchlist|ná xiálírid]] án kaşşingáne.',
+'watch' => 'Xiálí mar',
+'watchthispage' => 'Dá panna ná xiálí mar',
+'unwatch' => 'Bexiál mar',
+'watchlist-details' => 'Ná xiálí rid aŧí {{PLURAL:$1|$1 panna se|$1 panna o}}, ítgap panna ģák hisáb aŧí affas.',
+'wlshowlast' => 'Guđđíko $1 ganŧa $2 de $3 e nişán et',
+'watchlist-options' => 'Xiálírid gicenk',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Xiálí manning...',
+'unwatching' => 'Bexiál manning...',
+
+# Delete
+'deletepage' => 'Panna e mesa',
+'confirmdeletetext' => 'Ní panna as e oná lekav ton avár mesing aŧí us.
+Dá pakk kar ki ní dun kanning xuáisa, dáná pad án poh us, o ní dád [[{{MediaWiki:Policy-url}}|ráhband]] ná vaŕ aŧ kanning us.',
+'actioncomplete' => 'Amal sarjam',
+'actionfailed' => 'Amal besob mass',
+'deletedtext' => '"$1" mesingáne.
+Zút áteaŧ mesing átá lekav kin $2 e ur.',
+'deletedarticle' => '"[[$1]]" mesingá',
+'dellogpage' => 'Mesing ná hisáb',
+'deletecomment' => 'Dalíl:',
+'deleteotherreason' => 'Elo/pen dalíl:',
+'deletereasonotherlist' => 'Elo dalíl',
+
+# Rollback
+'rollbacklink' => 'ģuŧŧ e aŕsa',
+
+# Protect
+'protectlogpage' => 'Rakk hisáb',
+'protectedarticle' => '"[[$1]]" rakk mass',
+'protectcomment' => 'Dalíl',
+'protect-default' => 'Ģuŧŧ kárband áte mokal et',
+'protect-fallback' => '"$1" mokal xuáik',
+'protect-level-autoconfirmed' => 'Púskuná o bepin á kárband átiá rok xaļ',
+'protect-level-sysop' => 'Bíra Amaldár ák',
+'restriction-type' => 'Mokal:',
+
+# Undelete
+'undeletelink' => 'ur/aŕsa',
+'undeleteviewlink' => 'ur',
+'undeletedarticle' => '"[[$1]]" ságí kanningá',
+
+# Namespace form on various pages
+'namespace' => 'Pin-jága:',
+'invert' => 'Gicen e elo mon kar',
+'blanknamespace' => '(Bundar)',
+
+# Contributions
+'contributions' => 'Kárband ná baŕáhík',
+'contributions-title' => '$1 kin kárband ná baŕáhík',
+'mycontris' => 'Kaná baŕáhík',
+'contribsub2' => '$1 ($2) kin',
+'uctop' => '(buŕz buŕzko)',
+'month' => 'Dá tú (o must) án:',
+'year' => 'Dá sál (o must) án:',
+
+'sp-contributions-newbies' => 'Bíra púskuná pinváxub átá baŕáhí te nişán et',
+'sp-contributions-blocklog' => 'rok aná hisáb',
+'sp-contributions-talk' => 'ítgap',
+'sp-contributions-search' => 'Baŕáhí kin paŧŧopol',
+'sp-contributions-username' => 'IP pajjár yá kárband pin:',
+'sp-contributions-submit' => 'Paŧŧopol',
+
+# What links here
+'whatlinkshere' => 'Dáŕe ant gańđoke',
+'whatlinkshere-title' => '$1 aton gańđok á panna ģák',
+'whatlinkshere-page' => 'Panna:',
+'linkshere' => "Şefko panna ģák '''[[:$1]]''' ton gańđok o:",
+'isredirect' => 'aŕsengoká panna',
+'istemplate' => 'aviŕdaí',
+'isimage' => 'fáil gańđ',
+'whatlinkshere-prev' => '{{PLURAL:$1|mustko|mustko $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|randíko|randíko $1}}',
+'whatlinkshere-links' => '↠gańđ ák',
+'whatlinkshere-hideredirs' => '$1 aŕsik',
+'whatlinkshere-hidetrans' => 'aviŕdaí te $1',
+'whatlinkshere-hidelinks' => 'gańđ áte $1',
+'whatlinkshere-filters' => 'Birvek',
+
+# Block/unblock
+'blockip' => 'Kárband á rok xaļ',
+'ipboptions' => '2 ganŧa:2 hours,1 de:1 day,3 de:3 days,1 afta:1 week,2 afta:2 weeks,1 tú:1 month,3 tú:3 months,6 tú:6 months,1 sál:1 year,be kacc:infinite',
+'ipblocklist' => 'IP pajjár o kárbandpin ák ki rok laggok e iyá tá',
+'blocklink' => 'rok xaļ',
+'unblocklink' => 'rok xalás',
+'change-blocklink' => 'rok aŧí radbadal',
+'contribslink' => 'baŕáhík',
+'blocklogpage' => 'Rok hisáb',
+'unblocklogentry' => '$1 án rok mur kanningá',
+'block-log-flags-nocreate' => 'pinváxubí á rok xallingá',
+
+# Move page
+'movearticle' => 'Panna e surif:',
+'newtitle' => 'Púskuná sarhál á:',
+'movepagebtn' => 'Panna e surif',
+'pagemovedsub' => 'Surifing sarsob mass',
+'movepage-moved' => '\'\'\'"$1" e "$2"\'\'\' á surifingáne',
+'articleexists' => 'Anná pin aná panna málav án sáŕí e, yá ná tiroká pin ravá aff.
+Pen pin as gicen kar.',
+'movedto' => 'dáng surifingá',
+'movetalk' => 'Aviŕda ģá ítgap panna e surif',
+'1movedto2' => '[[$1]] e [[$2]] á surifingá',
+'1movedto2_redir' => 'aŕseng aŧ [[$1]] e [[$2]] á danningá',
+'movelogpage' => 'Surifing ná hisáb',
+'movereason' => 'Dalíl:',
+'revertmove' => 'málav ná',
+
+# Namespace 8 related
+'allmessagesname' => 'Pin',
+
+# Thumbnails
+'thumbnail-more' => 'Bhallun kar',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Ná kárbandí panna',
+'tooltip-pt-mytalk' => 'Ná ítgap panna',
+'tooltip-pt-preferences' => 'Ná gicenk',
+'tooltip-pt-watchlist' => 'Amo panna ģátá rid aráfteŧí radbadal ná xiálí us',
+'tooltip-pt-mycontris' => 'Ná baŕáhí tá rid',
+'tooltip-pt-login' => 'Drustírástí kes to bház juán e, vale, lázum aff',
+'tooltip-pt-logout' => 'Bidar mar',
+'tooltip-ca-talk' => 'Niviştánk ná bárav aŧ ítgap',
+'tooltip-ca-edit' => 'Num dá panna ŧí radbadal kanning kere. Radbadal áte aŧíko kanning án must sarí jác e ta zarúr albo.',
+'tooltip-ca-addsection' => 'Púskuno vanđ asená biná kar',
+'tooltip-ca-viewsource' => 'Dá panna rakk karok e.
+Dáná bumpad e unning kesa',
+'tooltip-ca-history' => 'Dá panna ná málav ná şefbuŕz ák',
+'tooltip-ca-protect' => 'Dá panna e rakk kar',
+'tooltip-ca-delete' => 'Dá panna e mesa',
+'tooltip-ca-move' => 'Dá panna e surif',
+'tooltip-ca-watch' => 'Dá panna e tená xiálí rid aŧí avár kar',
+'tooltip-ca-unwatch' => 'Dá panna e tená xiálí rid án kaşşa',
+'tooltip-search' => '{{SITENAME}} aŧí paŧŧa',
+'tooltip-search-go' => 'Aga caŧŧ andá pin aná panna are to in iyá ta',
+'tooltip-search-fulltext' => 'Panna ģáteŧí dá laoz áte paŧŧa',
+'tooltip-p-logo' => 'Monpanna ģá in',
+'tooltip-n-mainpage' => 'Monpanna ģá in',
+'tooltip-n-mainpage-description' => 'Monpanna ģá in',
+'tooltip-n-portal' => 'Kárem ná bábat, ní ant kanning kesa, giŕá te aráŕe paŧŧoí e',
+'tooltip-n-currentevents' => 'Sáŕí sefbuŕz átá bumpadí cáindárí',
+'tooltip-n-recentchanges' => 'Vikí ŧí zút áteaŧ maroká radbadal ák',
+'tooltip-n-randompage' => 'Saŧŧí panna as mal',
+'tooltip-n-help' => 'Paŧŧing xaning ná jága',
+'tooltip-t-whatlinkshere' => 'Ģuŧ amo vikí panna ģátá rid arfák dáŕe gańđoko',
+'tooltip-t-recentchangeslinked' => 'Dá panna ton gańđoká panna ģáteŧí zút áteaŧ maroká radbadal ák',
+'tooltip-feed-rss' => 'Dá panna kin RSS serí',
+'tooltip-feed-atom' => 'Dá panna kin Atom serí',
+'tooltip-t-contributions' => 'Dá kárband ná baŕáhí tá rid e ur',
+'tooltip-t-emailuser' => 'Dá kárband e girokŧapál as mon et',
+'tooltip-t-upload' => 'Fáil laggif',
+'tooltip-t-specialpages' => 'Ģuŧŧ xás á panna ģátá ridband',
+'tooltip-t-print' => 'Dá panna ná chapáí droşum',
+'tooltip-t-permalink' => 'Panna ná dá badaldroşum ná pakká gańđ',
+'tooltip-ca-nstab-main' => 'Niviştánk ná panna e ur',
+'tooltip-ca-nstab-user' => 'Kárband ná panna e ur',
+'tooltip-ca-nstab-special' => 'Dá xáso panna as e. Ní dáŧí radbadal kanning kappesa.',
+'tooltip-ca-nstab-project' => 'Bunkárem ná panna e ur',
+'tooltip-ca-nstab-image' => 'Fáil ná panna e ur',
+'tooltip-ca-nstab-template' => 'Kálib e ur',
+'tooltip-ca-nstab-category' => 'Xáot panna e ur',
+'tooltip-minoredit' => 'Dád cunko radbadal as leka',
+'tooltip-save' => 'Tená radbadal áte atíko kar',
+'tooltip-preview' => 'Tená radbadal átá sarí jác e aļ. Minnatvár!',
+'tooltip-diff' => 'Nivişt aŧí tená radbadal áte nişán et',
+'tooltip-compareselectedversions' => 'Dá panna ná irá gicen karok radbadal droşum tá niám aŧí fark e ur',
+'tooltip-watch' => 'Dá panna e tená xiálí rid aŧí avár kar',
+'tooltip-rollback' => '"Ģuŧŧ e aŕsa" án dá panna ŧí guđđíko baŕáhí tirok ná ģuŧŧ radbadal ák asi dakk aŧí aŕsengira.',
+'tooltip-undo' => '"Aŕsa" e xalling án dá radbadal aŕsengik o sarí jác droşum aŧí radbadal ná darí malingik. Dáŕán bungap aŧí dalíl likking ná vár rasengik.',
+'tooltip-summary' => 'Guańđo bungapp as aviŕda kar',
+
+# Browsing diffs
+'previousdiff' => '↠Mutkuná radbadal',
+'nextdiff' => 'Púskuná radbadal',
+
+# Metadata
+'metadata-expand' => 'Vaddíko hál e nişán et',
+'metadata-collapse' => 'Vaddíko hál e đakka',
+
+# External editor support
+'edit-externally-help' => '(Pen cáindárí kin [//www.mediawiki.org/wiki/Manual:External_editors joŕ kanning ná sarsoj] e ur)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'ģuŧŧ',
+'namespacesall' => 'ģuŧŧ',
+'monthsall' => 'ģuŧŧ',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Äek kunoká radbadal áke ur',
+'watchlisttools-edit' => 'Xiálí rid e ur o badal kar',
+'watchlisttools-raw' => 'Bekacc á xiálírid aŧí radbadal kar',
+
+# Special:SpecialPages
+'specialpages' => 'Xás á panna ģák',
+
+);
diff --git a/languages/messages/MessagesBs.php b/languages/messages/MessagesBs.php
index 7c1587ac..646fce6b 100644
--- a/languages/messages/MessagesBs.php
+++ b/languages/messages/MessagesBs.php
@@ -47,97 +47,97 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'DvostrukaPreusmjerenja' ),
+ 'Activeusers' => array( 'AktivniKorisnici' ),
+ 'Allmessages' => array( 'SvePoruke' ),
+ 'Allpages' => array( 'SveStranice' ),
+ 'Ancientpages' => array( 'NajstarijeStranice' ),
+ 'Blankpage' => array( 'PraznaStranica' ),
+ 'Block' => array( 'BlokirajIP' ),
+ 'Blockme' => array( 'BlokirajMe' ),
+ 'Booksources' => array( 'KnjizniIzvori' ),
'BrokenRedirects' => array( 'NedovršenaPreusmjerenja' ),
- 'Disambiguations' => array( 'ÄŒvor' ),
- 'Userlogin' => array( 'KorisniÄkaPrijava' ),
- 'Userlogout' => array( 'KorisniÄkaOdjava' ),
+ 'Categories' => array( 'Kategorije' ),
+ 'ChangePassword' => array( 'PonistiLozinku' ),
+ 'ComparePages' => array( 'UporedjivanjeStranica' ),
+ 'Confirmemail' => array( 'PotvrdiEmail' ),
+ 'Contributions' => array( 'Doprinos' ),
'CreateAccount' => array( 'NapraviRaÄun' ),
- 'Preferences' => array( 'Postavke' ),
- 'Watchlist' => array( 'ListaPraćenja' ),
- 'Recentchanges' => array( 'NedavneIzmjene' ),
- 'Upload' => array( 'Postavi_datoteku' ),
+ 'Deadendpages' => array( 'MrtveStranice' ),
+ 'DeletedContributions' => array( 'ObrisaniDoprinosi' ),
+ 'Disambiguations' => array( 'ÄŒvor' ),
+ 'DoubleRedirects' => array( 'DvostrukaPreusmjerenja' ),
+ 'Emailuser' => array( 'EmailKorisnika' ),
+ 'Export' => array( 'Izvoz' ),
+ 'Fewestrevisions' => array( 'Najmanje_uređivane_stranice' ),
+ 'FileDuplicateSearch' => array( 'PotragaDuplihFajlova' ),
+ 'Filepath' => array( 'PutDoDatoteke' ),
+ 'Import' => array( 'Uvoz' ),
+ 'Invalidateemail' => array( 'PogresanEmail' ),
+ 'BlockList' => array( 'ListaBlokiranjaPrekoIP' ),
+ 'LinkSearch' => array( 'PotragaLinkova' ),
+ 'Listadmins' => array( 'ListaAdministratora' ),
+ 'Listbots' => array( 'ListaBotova' ),
'Listfiles' => array( 'Datoteke', 'Slike' ),
- 'Newimages' => array( 'Nove_datoteke', 'Nove_slike' ),
- 'Listusers' => array( 'ListaKorisnika' ),
'Listgrouprights' => array( 'ListaKorisniÄkihPrava' ),
- 'Statistics' => array( 'Statistike' ),
- 'Randompage' => array( 'SluÄajna_stranica' ),
+ 'Listredirects' => array( 'ListaPreusmjeravanja' ),
+ 'Listusers' => array( 'ListaKorisnika' ),
+ 'Lockdb' => array( 'ZakljucajDB' ),
+ 'Log' => array( 'Protokol', 'Protokoli' ),
'Lonelypages' => array( 'SiroÄad' ),
- 'Uncategorizedpages' => array( 'StraniceBezKategorije' ),
- 'Uncategorizedcategories' => array( 'KategorijeBezKategorije' ),
- 'Uncategorizedimages' => array( 'SlikeBezKategorije' ),
- 'Uncategorizedtemplates' => array( 'SabloniBezKategorije' ),
- 'Unusedcategories' => array( 'NekorišteneKategorije' ),
- 'Unusedimages' => array( 'Nekorištene_datoteke', 'Nekorištene_slike' ),
- 'Wantedpages' => array( 'Tražene_stranice' ),
- 'Wantedcategories' => array( 'Tražene_kategorije' ),
- 'Wantedfiles' => array( 'Tražene_datoteke' ),
- 'Wantedtemplates' => array( 'Traženi_šabloni' ),
+ 'Longpages' => array( 'DugeStranice' ),
+ 'MergeHistory' => array( 'SpojiHistoriju' ),
+ 'MIMEsearch' => array( 'MIMEPretraga' ),
+ 'Mostcategories' => array( 'Najviše_kategorija' ),
+ 'Mostimages' => array( 'Najviše_povezane_datoteke', 'Najviše_povezane_slike' ),
'Mostlinked' => array( 'Najviše_povezane_stranice' ),
'Mostlinkedcategories' => array( 'Najviše_povezane_kategorije' ),
'Mostlinkedtemplates' => array( 'Najviše_povezani_šabloni' ),
- 'Mostimages' => array( 'Najviše_povezane_datoteke', 'Najviše_povezane_slike' ),
- 'Mostcategories' => array( 'Najviše_kategorija' ),
'Mostrevisions' => array( 'Najviše_uređivane_stranice' ),
- 'Fewestrevisions' => array( 'Najmanje_uređivane_stranice' ),
- 'Shortpages' => array( 'KratkeStranice' ),
- 'Longpages' => array( 'DugeStranice' ),
+ 'Movepage' => array( 'PreusmjeriStranicu' ),
+ 'Mycontributions' => array( 'MojiDoprinosi' ),
+ 'Mypage' => array( 'MojaStranica' ),
+ 'Mytalk' => array( 'MojRazgovor' ),
+ 'Newimages' => array( 'Nove_datoteke', 'Nove_slike' ),
'Newpages' => array( 'NoveStranice' ),
- 'Ancientpages' => array( 'NajstarijeStranice' ),
- 'Deadendpages' => array( 'MrtveStranice' ),
+ 'Popularpages' => array( 'PopularneStranice' ),
+ 'Preferences' => array( 'Postavke' ),
+ 'Prefixindex' => array( 'IndeksPrefiksa' ),
'Protectedpages' => array( 'ZasticeneStranice' ),
'Protectedtitles' => array( 'ZasticeniNazivi' ),
- 'Allpages' => array( 'SveStranice' ),
- 'Prefixindex' => array( 'IndeksPrefiksa' ),
- 'Ipblocklist' => array( 'ListaBlokiranjaPrekoIP' ),
- 'Unblock' => array( 'Deblokada' ),
- 'Specialpages' => array( 'SpecijalneStranice' ),
- 'Contributions' => array( 'Doprinos' ),
- 'Emailuser' => array( 'EmailKorisnika' ),
- 'Confirmemail' => array( 'PotvrdiEmail' ),
- 'Whatlinkshere' => array( 'StaJeLinkovanoOvdje' ),
+ 'Randompage' => array( 'SluÄajna_stranica' ),
+ 'Randomredirect' => array( 'SlucajnoPreusmjerenje' ),
+ 'Recentchanges' => array( 'NedavneIzmjene' ),
'Recentchangeslinked' => array( 'PovezaneNedavneIzmjene' ),
- 'Movepage' => array( 'PreusmjeriStranicu' ),
- 'Blockme' => array( 'BlokirajMe' ),
- 'Booksources' => array( 'KnjizniIzvori' ),
- 'Categories' => array( 'Kategorije' ),
- 'Export' => array( 'Izvoz' ),
- 'Version' => array( 'Verzija' ),
- 'Allmessages' => array( 'SvePoruke' ),
- 'Log' => array( 'Protokol', 'Protokoli' ),
- 'Blockip' => array( 'BlokirajIP' ),
+ 'Revisiondelete' => array( 'VratiBrisanje' ),
+ 'RevisionMove' => array( 'PremjestanjeRevizije' ),
+ 'Search' => array( 'Pretraga' ),
+ 'Shortpages' => array( 'KratkeStranice' ),
+ 'Specialpages' => array( 'SpecijalneStranice' ),
+ 'Statistics' => array( 'Statistike' ),
+ 'Tags' => array( 'Oznake' ),
+ 'Unblock' => array( 'Deblokada' ),
+ 'Uncategorizedcategories' => array( 'KategorijeBezKategorije' ),
+ 'Uncategorizedimages' => array( 'SlikeBezKategorije' ),
+ 'Uncategorizedpages' => array( 'StraniceBezKategorije' ),
+ 'Uncategorizedtemplates' => array( 'SabloniBezKategorije' ),
'Undelete' => array( 'PovratBrisanog' ),
- 'Import' => array( 'Uvoz' ),
- 'Lockdb' => array( 'ZakljucajDB' ),
'Unlockdb' => array( 'OdkljucajDB' ),
- 'Userrights' => array( 'KorisnickaPrava' ),
- 'MIMEsearch' => array( 'MIMEPretraga' ),
- 'FileDuplicateSearch' => array( 'PotragaDuplihFajlova' ),
- 'Unwatchedpages' => array( 'NepraceneStranice' ),
- 'Listredirects' => array( 'ListaPreusmjeravanja' ),
- 'Revisiondelete' => array( 'VratiBrisanje' ),
+ 'Unusedcategories' => array( 'NekorišteneKategorije' ),
+ 'Unusedimages' => array( 'Nekorištene_datoteke', 'Nekorištene_slike' ),
'Unusedtemplates' => array( 'NekoristeniSabloni' ),
- 'Randomredirect' => array( 'SlucajnoPreusmjerenje' ),
- 'Mypage' => array( 'MojaStranica' ),
- 'Mytalk' => array( 'MojRazgovor' ),
- 'Mycontributions' => array( 'MojiDoprinosi' ),
- 'Listadmins' => array( 'ListaAdministratora' ),
- 'Listbots' => array( 'ListaBotova' ),
- 'Popularpages' => array( 'PopularneStranice' ),
- 'Search' => array( 'Pretraga' ),
- 'Resetpass' => array( 'PonistiLozinku' ),
+ 'Unwatchedpages' => array( 'NepraceneStranice' ),
+ 'Upload' => array( 'Postavi_datoteku' ),
+ 'Userlogin' => array( 'KorisniÄkaPrijava' ),
+ 'Userlogout' => array( 'KorisniÄkaOdjava' ),
+ 'Userrights' => array( 'KorisnickaPrava' ),
+ 'Version' => array( 'Verzija' ),
+ 'Wantedcategories' => array( 'Tražene_kategorije' ),
+ 'Wantedfiles' => array( 'Tražene_datoteke' ),
+ 'Wantedpages' => array( 'Tražene_stranice' ),
+ 'Wantedtemplates' => array( 'Traženi_šabloni' ),
+ 'Watchlist' => array( 'ListaPraćenja' ),
+ 'Whatlinkshere' => array( 'StaJeLinkovanoOvdje' ),
'Withoutinterwiki' => array( 'BezInterwiki' ),
- 'MergeHistory' => array( 'SpojiHistoriju' ),
- 'Filepath' => array( 'PutDoDatoteke' ),
- 'Invalidateemail' => array( 'PogresanEmail' ),
- 'Blankpage' => array( 'PraznaStranica' ),
- 'LinkSearch' => array( 'PotragaLinkova' ),
- 'DeletedContributions' => array( 'ObrisaniDoprinosi' ),
- 'Tags' => array( 'Oznake' ),
- 'Activeusers' => array( 'AktivniKorisnici' ),
- 'ComparePages' => array( 'UporedjivanjeStranica' ),
- 'Badtitle' => array( 'Losnaslov' ),
);
$magicWords = array(
@@ -403,14 +403,7 @@ $messages = array(
'listingcontinuesabbrev' => 'nast.',
'index-category' => 'Indeksirane stranice',
'noindex-category' => 'Neindeksirane stranice',
-
-'mainpagetext' => "'''MediaViki softver is uspješno instaliran.'''",
-'mainpagedocfooter' => 'Kontaktirajte [http://meta.wikimedia.org/wiki/Help:Contents uputstva za korisnike] za informacije o upotrebi wiki programa.
-
-== PoÄetak ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista postavki]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki najÄešće postavljana pitanja]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista E-Mail adresa MediaWiki]',
+'broken-file-category' => 'Stranice sa neispravnim linkovima do datoteka',
'about' => 'O',
'article' => 'ÄŒlanak',
@@ -462,10 +455,10 @@ $messages = array(
'history' => 'Historija stranice',
'history_short' => 'Historija',
'updatedmarker' => 'promjene od moje zadnje posjete',
-'info_short' => 'Informacija',
'printableversion' => 'Prilagođeno štampanju',
'permalink' => 'Trajni link',
'print' => 'Å tampa',
+'view' => 'Pogled',
'edit' => 'Uredi',
'create' => 'Napravi',
'editthispage' => 'Uredite ovu stranicu',
@@ -473,6 +466,7 @@ $messages = array(
'delete' => 'Obriši',
'deletethispage' => 'Obriši ovu stranicu',
'undelete_short' => 'Vrati obrisanih {{PLURAL:$1|$1 izmjenu|$1 izmjene|$1 izmjena}}',
+'viewdeleted_short' => 'Pogledaj {{PLURAL:$1|jednu obrisanu izmjenu|$1 obrisane izmjene|$1 obrisanih izmjena}}',
'protect' => 'Zaštitite',
'protect_change' => 'promijeni',
'protectthispage' => 'Zaštitite ovu stranicu',
@@ -557,6 +551,8 @@ $1',
'toc' => 'Sadržaj',
'showtoc' => 'pokaži',
'hidetoc' => 'sakrij',
+'collapsible-collapse' => 'Sakrij',
+'collapsible-expand' => 'Proširi',
'thisisdeleted' => 'Pogledaj ili vrati $1?',
'viewdeleted' => 'Pogledaj $1?',
'restorelink' => '{{PLURAL:$1|$1 izbrisana izmjena|$1 izbrisanih izmjena}}',
@@ -568,6 +564,8 @@ $1',
'page-rss-feed' => '"$1" RSS izvor',
'page-atom-feed' => '"$1" Atom izvor',
'red-link-title' => '$1 (stranica ne postoji)',
+'sort-descending' => 'Poredaj opadajuće',
+'sort-ascending' => 'Poredaj rastuće',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'ÄŒlanak',
@@ -652,12 +650,13 @@ Pretraga: $2',
'protectedinterface' => 'Ova stranica je zaštićena jer sadrži tekst MediaWiki programa.',
'editinginterface' => "'''Upozorenje:''' Mijenjate stranicu koja sadrži aktivan tekst programa.
Promjene na ovoj stranici dovode i do promjena za druge korisnike.
-Za prijevode, molimo Vas koristite [http://translatewiki.net/wiki/Main_Page?setlang=bs translatewiki.net], projekt prijevoda za MediaWiki.",
+Za prijevode, molimo Vas koristite [//translatewiki.net/wiki/Main_Page?setlang=bs translatewiki.net], projekt prijevoda za MediaWiki.",
'sqlhidden' => '(SQL pretraga sakrivena)',
'cascadeprotected' => 'Uređivanje ove stranice je zabranjeno jer sadrži {{PLURAL:$1|stranicu zaštićenu|stranice zaštićene}} od uređivanja iz razloga:
$2',
'namespaceprotected' => "Vi nemate dozvulu da mijenjate stranicu '''$1'''.",
-'customcssjsprotected' => 'Nemate dozvolu za mijenjanje ove stranice jer sadrži osobne postavke nekog drugog korisnika.',
+'customcssprotected' => 'Nemate dozvolu za mijenjanje ove CSS stranice jer sadrži osobne postavke nekog drugog korisnika.',
+'customjsprotected' => 'Nemate dozvolu za mijenjanje ove JavaScript stranice jer sadrži osobne postavke nekog drugog korisnika.',
'ns-specialprotected' => 'Specijalne stranice se ne mogu uređivati.',
'titleprotected' => 'Naslov stranice je zaštićen od postavljanja od strane korisnika [[User:$1|$1]].
Iz razloga "\'\'$2\'\'".',
@@ -695,6 +694,7 @@ Ne zaboravite da prilagodite sebi svoja [[Special:Preferences|{{SITENAME}} podeÅ
'createaccount' => 'Napravi nalog',
'gotaccount' => "Imate nalog? '''$1'''.",
'gotaccountlink' => 'Prijavi se',
+'userlogin-resetlink' => 'Zaboravili ste detalje vaše prijave?',
'createaccountmail' => 'e-poštom',
'createaccountreason' => 'Razlog:',
'badretype' => 'Å ifre koje ste unijeli se ne poklapaju.',
@@ -704,13 +704,15 @@ Molimo Vas da izaberete drugo ime.',
'createaccounterror' => 'Ne može se napraviti raÄun: $1',
'nocookiesnew' => "KorisniÄki nalog je napravljen, ali niste prijavljeni. {{SITENAME}} koristi kolaÄiće (''cookies'') da bi se korisnici prijavili. Vi ste onemogućili kolaÄiće na VaÅ¡em raÄunaru. Molimo Vas da ih omogućite, a onda se prijavite sa svojim novim korisniÄkim imenom i Å¡ifrom.",
'nocookieslogin' => "{{SITENAME}} koristi kolaÄiće (''cookies'') da bi se korisnici prijavili. Vi ste onemogućili kolaÄiće na VaÅ¡em kompjuteru. Molimo Vas da ih omogućite i da pokuÅ¡ate ponovo sa prijavom.",
+'nocookiesfornew' => 'KorisniÄki raÄun nije napravljen, jer nismo mogli da potvrdimo njegov izvor.
+Provjerite da li su cookies omogućeni, ponovo uÄitajte ovu stranicu i pokuÅ¡ajte ponovo.',
'noname' => 'Niste izabrali ispravno korisniÄko ime.',
'loginsuccesstitle' => 'Prijavljivanje uspješno',
'loginsuccess' => "'''Sad ste prijavljeni na {{SITENAME}} kao \"\$1\".'''",
'nosuchuser' => 'Ne postoji korisnik sa imenom "$1".
KorisniÄka imena razlikuju velika i mala slova.
Provjerite vaÅ¡e kucanje ili [[Special:UserLogin/signup|napravite novi korisniÄki raÄun]].',
-'nosuchusershort' => 'Ne postoji korisnik sa imenom "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Ne postoji korisnik sa imenom "$1".
Provjerite da li ste dobro ukucali.',
'nouserspecified' => 'Morate izabrati korisniÄko ime.',
'login-userblocked' => 'Ovaj korisnik je blokiran. Prijava nije dopuštena.',
@@ -756,13 +758,14 @@ Možete ignorisati ovu poruku, ako je korisniÄki raÄun napravljen greÅ¡kom.',
'usernamehasherror' => 'KorisniÄko ime ne može sadržavati haÅ¡ znakove',
'login-throttled' => 'Previše puta ste se pokušali prijaviti.
Molimo Vas da saÄekate prije nego Å¡to pokuÅ¡ate ponovo.',
+'login-abort-generic' => 'Vaša prijava nije bila uspješna – Prekinuto',
'loginlanguagelabel' => 'Jezik: $1',
'suspicious-userlogout' => 'Vaš zahtjev za odjavu je odbijen jer je poslan preko pokvarenog preglednika ili keširanog proksija.',
# E-mail sending
'php-mail-error-unknown' => 'Nepoznata greška u PHP funkciji mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Promijeni korisniÄku Å¡ifru',
'resetpass_announce' => 'Prijavili ste se sa privremenim kodom koji ste dobili na e-mail.
Da biste završili prijavu, morate unijeti novu šifru ovdje:',
@@ -781,6 +784,38 @@ Da biste završili prijavu, morate unijeti novu šifru ovdje:',
Možda ste već uspješno promijenili Vašu šifru ili ste tražili novu privremenu šifru.',
'resetpass-temp-password' => 'Privremena Å¡ifra:',
+# Special:PasswordReset
+'passwordreset' => 'Poništavanje šifre',
+'passwordreset-text' => 'Ispunite ovaj obrazac da biste dobili e-mail podsjetnik o vaÅ¡im detaljima raÄuna.',
+'passwordreset-legend' => 'Poništi šifru',
+'passwordreset-disabled' => 'Poništavanje šifre je onemogućeno na ovoj wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Unesite jedan dio podataka ispod}}',
+'passwordreset-username' => 'KorisniÄko ime:',
+'passwordreset-email' => 'E-mail adresa:',
+'passwordreset-emailtitle' => 'Detalji raÄuna na {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Neto (vjerovatno Vi, s IP adrese $1) je zatražio podsjetnik VaÅ¡ih detalja raÄuna
+za {{SITENAME}} ($4). Sljedeći {{PLURAL:$3|raÄun korisnika je|raÄuni korisnika su}}
+povezani s ovom e-mail adresom:
+
+$2
+
+{{PLURAL:$3|Ova privremena šifra|Ove privremene šifre}} će isteći za {{PLURAL:$5|jedan dan|$5 dana}}.
+Trebate se prijaviti i odabrati novu Å¡ifru. Ako je neko drugi napravio ovaj
+zahtjev, ili ako ste se sjetili VaÅ¡e poÄetne Å¡ifre, a ne želite je promijeniti,
+možete zanemariti ovu poruku i nastaviti koristiti staru šifru.',
+'passwordreset-emailtext-user' => 'Korisnik $1 na {{SITENAME}} je zatražio podsjetnik o detaljima VaÅ¡eg raÄuna za {{SITENAME}}
+($4). Sljedeći {{PLURAL:$3|korisniÄki raÄun je|korisniÄki raÄuni su}} povezani s ovom e-mail adresom:
+
+$2
+
+{{PLURAL:$3|Ova privremena šifra|Ove privremene šifre}} će isteći za {{PLURAL:$5|jedan dan|$5 dana}}.
+Trebate se prijaviti i odabrati novu Å¡ifru. Ako je neko drugi napravio ovaj
+zahtjev, ili ako ste se sjetili Vaše originalne šifre, a ne želite je više promijeniti,
+možete zanemariti ovu poruku i nastaviti koristiti staru šifru.',
+'passwordreset-emailelement' => 'KorisniÄko ime: $1
+Privremena Å¡ifra: $2',
+'passwordreset-emailsent' => 'E-mail podsjetnik je poslan.',
+
# Edit page toolbar
'bold_sample' => 'Podebljan tekst',
'bold_tip' => 'Podebljan tekst',
@@ -792,8 +827,6 @@ Možda ste već uspješno promijenili Vašu šifru ili ste tražili novu privrem
'extlink_tip' => 'Vanjski link (zapamti prefiks http://)',
'headline_sample' => 'Naslov',
'headline_tip' => 'Podnaslov',
-'math_sample' => 'Unesite formulu ovdje',
-'math_tip' => 'MatematiÄka formula (LaTeX)',
'nowiki_sample' => 'Dodaj neformatirani tekst ovdje',
'nowiki_tip' => 'Ignoriši viki formatiranje teksta',
'image_sample' => 'ime_slike.jpg',
@@ -883,7 +916,7 @@ Možete [[Special:Search/{{PAGENAME}}|tražiti naslov ove stranice]] na drugim s
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tražiti u povezanim zapisima] ili [{{fullurl:{{FULLPAGENAME}}|action=edit}} urediti ovu stranicu]</span>.',
'noarticletext-nopermission' => 'Trenutno nema teksta na ovoj stranici.
Možete [[Special:Search/{{PAGENAME}}|tražiti ovaj naslov stranice]] na drugim stranicama ili <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane zapisnike]</span>.',
-'userpage-userdoesnotexist' => 'KorisniÄki raÄun "$1" nije registrovan.
+'userpage-userdoesnotexist' => 'KorisniÄki raÄun "<nowiki>$1</nowiki>" nije registrovan.
Molimo provjerite da li želite napraviti/izmijeniti ovu stranicu.',
'userpage-userdoesnotexist-view' => 'KorisniÄki raÄun "$1" nije registrovan.',
'blocked-notice-logextract' => 'Ovaj korisnik je trenutno blokiran.
@@ -918,6 +951,7 @@ kako će izgledati ako pritisnete "SaÄuvaj Älanak".',
'token_suffix_mismatch' => "'''Vaša izmjena nije prihvaćena jer je Vaš web preglednik ubacio znakove interpunkcije u token uređivanja.
Izmjena je odbaÄena da bi se sprijeÄilo uniÅ¡tavanje teksta stranice.
To se dogaÄ‘a ponekad kad korisite problematiÄni anonimni proxy koji je baziran na web-u.'''",
+'edit_form_incomplete' => "'''Neki dijelovi ureÄ‘ivaÄkog obrasca nisu doÅ¡li do servera; dvaput provjerite da su vaÅ¡e izmjene nepromjenjene i pokuÅ¡ajte ponovno.'''",
'editing' => 'Uređujete $1',
'editingsection' => 'Uređujete $1 (dio)',
'editingcomment' => 'Uređujete $1 (nova sekcija)',
@@ -1266,12 +1300,13 @@ PokuÅ¡ajte u VaÅ¡ upit ukljuÄiti prefiks ''all:'' da bi ste pretražili sav sad
'searchdisabled' => '<p>Izvinjavamo se! Puno pretraga teksta je privremeno onemogućena. U međuvremenu, možete koristiti Google za pretragu. Indeks može biti stariji.',
# Quickbar
-'qbsettings' => 'Podešavanja brze palete',
-'qbsettings-none' => 'Nikakva',
-'qbsettings-fixedleft' => 'PriÄvršćena lijevo',
-'qbsettings-fixedright' => 'PriÄvršćena desno',
-'qbsettings-floatingleft' => 'Plutajuća lijevo',
-'qbsettings-floatingright' => 'Plutajući desno',
+'qbsettings' => 'Podešavanja brze palete',
+'qbsettings-none' => 'Nikakva',
+'qbsettings-fixedleft' => 'PriÄvršćena lijevo',
+'qbsettings-fixedright' => 'PriÄvršćena desno',
+'qbsettings-floatingleft' => 'Plutajuća lijevo',
+'qbsettings-floatingright' => 'Plutajući desno',
+'qbsettings-directionality' => 'Čvrsto, u zavisnosti od usmjerenosti pisma vašeg jezika',
# Preferences page
'preferences' => 'Podešavanja',
@@ -1282,9 +1317,10 @@ PokuÅ¡ajte u VaÅ¡ upit ukljuÄiti prefiks ''all:'' da bi ste pretražili sav sad
'changepassword' => 'Promijeni Å¡ifru',
'prefs-skin' => 'Koža',
'skin-preview' => 'Pregled',
-'prefs-math' => 'Prikazivanje matematike',
'datedefault' => 'Nije bitno',
+'prefs-beta' => 'Beta mogućnosti',
'prefs-datetime' => 'Datum i vrijeme',
+'prefs-labs' => 'Eksperimentalne mogućnosti',
'prefs-personal' => 'KorisniÄki podaci',
'prefs-rc' => 'Podešavanja nedavnih izmjena',
'prefs-watchlist' => 'Moji praćeni Älanci',
@@ -1306,8 +1342,6 @@ PokuÅ¡ajte u VaÅ¡ upit ukljuÄiti prefiks ''all:'' da bi ste pretražili sav sad
'columns' => 'Kolona',
'searchresultshead' => 'Podešavanja rezultata pretrage',
'resultsperpage' => 'Pogodaka po stranici:',
-'contextlines' => 'Linija po pogotku:',
-'contextchars' => 'Karaktera konteksta po liniji:',
'stub-threshold' => 'Formatiranje <a href="#" class="stub">linkova stranica u zaÄetku</a> (bajtova):',
'stub-threshold-disabled' => 'IskljuÄen/a',
'recentchangesdays' => 'Broj dana za prikaz u nedavnim izmjenama:',
@@ -1320,7 +1354,7 @@ Ovdje su navedene neke nasumiÄno odabrane vrijednosti koje možete koristiti: $
'savedprefs' => 'VaÅ¡a podeÅ¡avanja su saÄuvana.',
'timezonelegend' => 'Vremenska zona:',
'localtime' => 'Lokalno vrijeme:',
-'timezoneuseserverdefault' => 'Koristi postavke servera',
+'timezoneuseserverdefault' => 'Koristi postavke wikija ($1)',
'timezoneuseoffset' => 'Ostalo (odredi odstupanje)',
'timezoneoffset' => 'Odstupanje¹:',
'servertime' => 'Vrijeme na serveru:',
@@ -1370,8 +1404,8 @@ Mora biti manji od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
'email' => 'E-mail',
'prefs-help-realname' => 'Pravo ime nije obavezno.
Ako izaberete da date ime, biće korišteno za pripisivanje za vaš rad.',
-'prefs-help-email' => 'E-mail adresa je opcionalna, unesena adresa Vam omogućava da Vam se poÅ¡alje nova Å¡ifra u sluÄaju da je izgubite ili zaboravite.
-TakoÄ‘er omogućuje drugim korisnicima da vas kontaktiraju preko VaÅ¡e korisniÄke stranice ili stranice za razgovor bez otkrivanja VaÅ¡eg identiteta.',
+'prefs-help-email' => 'E-mail adresa je opcionalna, ali je potrebna jer omogućava da Vam se poÅ¡alje nova Å¡ifra u sluÄaju da je izgubite ili zaboravite.',
+'prefs-help-email-others' => 'TakoÄ‘er možete da odaberete da vas drugi kontaktiraju putem vaÅ¡e korisniÄke stranice ili stranice za razgovor bez otkrivanja vaÅ¡eg identiteta.',
'prefs-help-email-required' => 'Neophodno je navesti e-mail adresu.',
'prefs-info' => 'Osnovne informacije',
'prefs-i18n' => 'Internacionalizacije',
@@ -1496,15 +1530,15 @@ TakoÄ‘er omogućuje drugim korisnicima da vas kontaktiraju preko VaÅ¡e korisniÄ
'right-userrights' => 'UreÄ‘ivanje svih korisniÄkih prava',
'right-userrights-interwiki' => 'UreÄ‘ivanje korisniÄkih prava korisnika na drugim wikijima',
'right-siteadmin' => 'ZakljuÄavanje i otkljuÄavanje baze podataka',
-'right-reset-passwords' => 'Resetuje Å¡ifre drugih korisnika',
'right-override-export-depth' => 'Izvoz stranica ukljuÄujući povezane stranice do dubine od 5 linkova',
'right-sendemail' => 'Slanje e-maila drugim korisnicima',
# 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',
-'rightsnone' => '(nema)',
+'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',
+'rightsnone' => '(nema)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'Äitate ovu stranicu',
@@ -1625,7 +1659,7 @@ Da bi ste prikazali datoteku na stranici, koristite link na jedan od slijedećih
'illegalfilename' => 'Ime datoteke "$1" sadrži simbol koji nije dozvoljen u imenu datoteke.
Molimo Vas da promijenite ime datoteke i pokušate da je ponovo postavite.',
'badfilename' => 'Ime datoteke je promijenjeno u "$1".',
-'filetype-mime-mismatch' => 'Proširenje datoteke ne odgovara MIME tipu.',
+'filetype-mime-mismatch' => 'Proširenje datoteke "$1" ne odgovara MIME tipu ($2).',
'filetype-badmime' => 'Datoteke MIME vrste "$1" nije dopušteno postavljati.',
'filetype-bad-ie-mime' => 'Ne može se postaviti ova datoteka jer je Internet Explorer prepoznaje kao "$1", što je nedozvoljena i potencijalno opasna vrsta datoteke.',
'filetype-unwanted-type' => "'''\".\$1\"''' je nepoželjna vrsta datoteke.
@@ -1648,6 +1682,7 @@ Molimo Vas da promijenite ime datoteke i pokušate da je ponovo postavite.',
Ova datoteka je velika $2.',
'largefileserver' => 'Ova datoteka je veća nego što server dopušta.',
'emptyfile' => 'Datoteka koju ste poslali je prazna. Ovo je moguće zbog greške u imenu datoteke. Molimo Vas da provjerite da li stvarno želite da pošaljete ovu datoteku.',
+'windows-nonascii-filename' => 'Ova wiki ne podržava imena datoteka sa posebnim znacima.',
'fileexists' => "Datoteka sa ovim imenom već postoji.
Molimo Vas da provjerite '''<tt>[[:$1]]</tt>''' ako niste sigurni da li želite da je promjenite.
[[$1|thumb]]",
@@ -1682,6 +1717,8 @@ Ako i dalje želite da postavite ovu datoteku, molimo Vas da se vratite i pošal
'php-uploaddisabledtext' => 'Postavljanje datoteka preko PHP je onemogućeno. Molimo provjerite postavku file_uploads.',
'uploadscripted' => 'Ova datoteka sadrži HTML ili skriptni kod koji može izazvati grešku kod internet preglednika.',
'uploadvirus' => 'Fajl sadrži virus! Detalji: $1',
+'uploadjava' => 'Datoteka je ZIP datoteka koja sadrži Java .class datoteku.
+Postavljanje Java datoteka nije dopušteno, jer one mogu prouzrokovati da se zaobiđu sigurnosne zabrane.',
'upload-source' => 'Izvorna datoteka',
'sourcefilename' => 'Ime izvorišne datoteke:',
'sourceurl' => 'URL izvora:',
@@ -1692,10 +1729,6 @@ Ako i dalje želite da postavite ovu datoteku, molimo Vas da se vratite i pošal
'watchthisupload' => 'Prati ovu datoteku',
'filewasdeleted' => 'Datoteka s ovim nazivom je ranije postavljana i nakon toga obrisana.
Prije nego Å¡to nastavite da je ponovno postavite trebate provjeriti $1.',
-'upload-wasdeleted' => "'''Upozorenje: Postavljate datoteku koja je ranije obrisana.'''
-
-Potrebno je da razmotrite da li je uredu nastaviti sa postavljanjem ove datoteke.
-Zapis brisanja za ovu datoteku je prikazan ovdje kao referenca:",
'filename-bad-prefix' => "Naziv datoteke koju postavljate poÄinje sa '''\"\$1\"''', Å¡to je naziv koji obiÄno automatski dodjeljuju digitalni fotoaparati i kamere.
Molimo Vas da odaberete naziv datoteke koji opisuje njen sadržaj.",
'filename-prefix-blacklist' => ' #<!-- ostavite ovu liniju onakvom kakva jeste --> <pre>
@@ -1734,6 +1767,23 @@ Ako se problem ne riješi, kontaktirajte [[Special:ListUsers/sysop|administrator
'upload-unknown-size' => 'Nepoznata veliÄina',
'upload-http-error' => 'Desila se HTTP greška: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Desila se greška pri otvaranju datoteke za provjere ZIP-a.',
+'zip-wrong-format' => 'Navedena datoteka ni bila ZIP datoteka.',
+'zip-bad' => 'Datoteka je oÅ¡tećena ili je na drugi naÄin neÄitljiva ZIP datoteka.
+Ne može se dobro provjeriti u vezi sigurnosti.',
+'zip-unsupported' => 'Datoteka je ZIP datoteka koja koristi ZIP osobine koje nisu podržane od strane MediaWiki.
+Ne može se dobro provjeriti u vezi sigurnosti.',
+
+# Special:UploadStash
+'uploadstash' => 'Postavi sakrivene datoteke',
+'uploadstash-summary' => 'Ova stranica daje pristup datotekama koje su postavljene (ili su u postupku postavljanja) ali još nisu objavljene na wiki. Ove datoteke nisu vidljive nikom osim korisniku koji ih je postavio.',
+'uploadstash-clear' => 'OÄisti sakrivene datoteke',
+'uploadstash-nofiles' => 'Nemate sakrivenih datoteka.',
+'uploadstash-badtoken' => 'IzvrÅ¡avanje ove akcije je bilo neuspjeÅ¡no, možda zato Å¡to su vaÅ¡a ureÄ‘ivaÄka odobrenja istekla. PokuÅ¡ajte ponovo.',
+'uploadstash-errclear' => 'Brisanje sakrivenih datoteka je bilo neuspješno.',
+'uploadstash-refresh' => 'Osvježi spisak datoteka',
+
# img_auth script messages
'img-auth-accessdenied' => 'Pristup onemogućen',
'img-auth-nopathinfo' => 'Nedostaje PATH_INFO.
@@ -1818,7 +1868,7 @@ Slijedeći spisak pokazuje samo {{PLURAL:$1|prvu stranicu povezanu|prve $1 stran
Ovdje je dostupan [[Special:WhatLinksHere/$2|potpuni spisak]].',
'nolinkstoimage' => 'Nema stranica koje koriste ovu sliku.',
'morelinkstoimage' => 'Vidi [[Special:WhatLinksHere/$1|ostale linkove]] prema ovoj datoteci.',
-'redirectstofile' => '{{PLURAL:$1|Slijedeća datoteka|Slijedeće $1 datoteke|Slijedećih $1 datoteka}} preusmjerava prema ovoj datoteci:',
+'linkstoimage-redirect' => '$1 (preusmjerenje datoteke) $2',
'duplicatesoffile' => '{{PLURAL:$1|Slijedeća datoteka je dvojnik|Slijedeće $1 datoteke su dvojnici}} ove datoteke ([[Special:FileDuplicateSearch/$2|detaljnije]]):',
'sharedupload' => 'Ova datoteka je sa $1 i može se koristiti i na drugim projektima.',
'sharedupload-desc-there' => 'Ova datoteka je sa $1 i može se koristiti i na drugim projektima.
@@ -1914,12 +1964,13 @@ Prije brisanja provjerite da li druge stranice vode na te Å¡ablone.',
Po pravilu, one se trebaju povezati sa konkretnim Älankom.<br />
Stranica se smatra Ävorom, ukoliko koristi Å¡ablon koji je povezan sa spiskom [[MediaWiki:Disambiguationspage|Ävor stranica]]",
-'doubleredirects' => 'Dvostruka preusmjerenja',
-'doubleredirectstext' => 'Ova stranica prikazuje stranice koje preusmjeravaju na druga preusmjerenja.
+'doubleredirects' => 'Dvostruka preusmjerenja',
+'doubleredirectstext' => 'Ova stranica prikazuje stranice koje preusmjeravaju na druga preusmjerenja.
Svaki red sadrži veze na prvo i drugo preusmjerenje, kao i na prvu liniju teksta drugog preusmjerenja, Å¡to obiÄno daje "pravi" ciljni Älanak, na koji bi prvo preusmjerenje i trebalo da pokazuje.
<del>Precrtane</del> stavke su riješene.',
-'double-redirect-fixed-move' => '[[$1]] je premješten, sada je preusmjerenje na [[$2]]',
-'double-redirect-fixer' => 'PopravljaÄ preusmjerenja',
+'double-redirect-fixed-move' => '[[$1]] je premješten, sada je preusmjerenje na [[$2]]',
+'double-redirect-fixed-maintenance' => 'Ispravljanje dvostrukih preusmjerenja sa [[$1]] na [[$2]].',
+'double-redirect-fixer' => 'PopravljaÄ preusmjerenja',
'brokenredirects' => 'Pokvarena preusmjerenja',
'brokenredirectstext' => 'Slijedeća preusmjerenja vode na nepostojeće stranice:',
@@ -1997,6 +2048,7 @@ na kome bi se izvela ova funkcija.',
'pager-newer-n' => '{{PLURAL:$1|novija 1|novije $1}}',
'pager-older-n' => '{{PLURAL:$1|starija 1|starije $1}}',
'suppress' => 'Nazdor',
+'querypage-disabled' => 'Ova posebna stranica je onemogućena jer smanjuje performanse.',
# Book sources
'booksources' => 'Å tampani izvori',
@@ -2116,6 +2168,10 @@ E-mail adresa koju ste unijeli u [[Special:Preferences|VaÅ¡im korisniÄkim posta
'noemailtext' => 'Ovaj korisnik nije naveo ispravnu adresu e-pošte.',
'nowikiemailtitle' => 'E-mail nije dopušten',
'nowikiemailtext' => 'Ovaj korisnik je odabrao da ne prima e-mail poštu od drugih korisnika.',
+'emailnotarget' => 'Neodgovarajuće ili nevaljano korisniÄko ime za primanje e-maillova.',
+'emailtarget' => 'Unesite korisnika za primanje e-mailova',
+'emailusername' => 'KorisniÄko ime:',
+'emailusernamesubmit' => 'Pošalji',
'email-legend' => 'Slanje e-maila drugom {{SITENAME}} korisniku',
'emailfrom' => 'Od:',
'emailto' => 'Za:',
@@ -2140,11 +2196,9 @@ E-mail adresa koju ste unijeli u [[Special:Preferences|VaÅ¡im korisniÄkim posta
'watchlistanontext' => 'Molimo da $1 da možete vidjeti ili urediti stavke na Vašem spisku praćenja.',
'watchnologin' => 'Niste prijavljeni',
'watchnologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]] da bi ste mijenjali spisak praćenih Älanaka.',
-'addedwatch' => 'Dodato u spisak praćenih Älanaka',
'addedwatchtext' => 'Stranica "[[:$1]]" je dodata vaÅ¡em [[Special:Watchlist|spisku praćenih Älanaka]]. Buduće promjene ove stranice i njoj pridružene stranice za razgovor će biti navedene ovde, i stranica će biti <b>podebljana</b> u [[Special:RecentChanges|spisku]] nedavnih izmjena da bi se lakÅ¡e uoÄila.
Ako kasnije želite da uklonite stranicu sa vaÅ¡eg spiska praćenih Älanaka, kliknite na "prekini praćenje" na paleti.',
-'removedwatch' => 'Uklonjeno iz spiska praćenih Älanaka',
'removedwatchtext' => 'Stranica "[[:$1]]" je uklonjena iz [[Special:Watchlist|vaÅ¡eg spiska praćenih Älanaka]].',
'watch' => 'Prati Älanak',
'watchthispage' => 'Prati ovu stranicu',
@@ -2165,8 +2219,9 @@ Ako kasnije želite da uklonite stranicu sa vaÅ¡eg spiska praćenih Älanaka, kl
'watchlist-options' => 'Opcije spiska praćenja',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Pratim...',
-'unwatching' => 'Ne pratim...',
+'watching' => 'Pratim...',
+'unwatching' => 'Ne pratim...',
+'watcherrortext' => 'Desila se greška pri promjeni postavki vašeg spiska praćenja za "$1".',
'enotif_mailer' => '{{SITENAME}} obaviještenje o pošti',
'enotif_reset' => 'OznaÄi sve strane kao posjećene',
@@ -2198,16 +2253,16 @@ Također možete poništiti oznake obavijesti za sve praćene stranice koje imat
--
Za promjenu vaših postavki e-mail obavijesti, posjetite
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Za promjenu postavki vašeg praćenja, posjetite
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Da obrišete stranicu sa vašeg spiska praćenja, posjetite
$UNWATCHURL
Povratne informacije i daljnja pomoć:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Obrišite stranicu',
@@ -2223,7 +2278,7 @@ Povratne informacije i daljnja pomoć:
Molim potvrdite svoju namjeru, da razumijete posljedice i da ovo radite u skladu sa [[{{MediaWiki:Policy-url}}|pravilima]].',
'actioncomplete' => 'Akcija završena',
'actionfailed' => 'Akcija nije uspjela',
-'deletedtext' => 'ÄŒlanak "<nowiki>$1</nowiki>" je obrisan.
+'deletedtext' => 'ÄŒlanak "$1" je obrisan.
Pogledajte $2 za zapis o skorašnjim brisanjima.',
'deletedarticle' => 'obrisan "[[$1]]"',
'suppressedarticle' => 'promijeni vidljivost od "[[$1]]"',
@@ -2280,7 +2335,7 @@ Pogledajte [[Special:ProtectedPages|spisak zaštićenih stranica]] za pregled tr
'protect_expiry_invalid' => 'Upisani vremenski rok nije valjan.',
'protect_expiry_old' => 'Upisani vremenski rok je u prošlosti.',
'protect-unchain-permissions' => 'OtkljuÄaj daljnje opcije zaÅ¡tite',
-'protect-text' => "Ovdje možete gledati i izmjeniti level zaštite za stranicu '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Ovdje možete gledati i izmjeniti level zaštite za stranicu '''$1'''.",
'protect-locked-blocked' => "Ne možete promijeniti nivo zaštite dok ste blokirani.
Ovo su trenutne postavke za stranicu '''$1''':",
'protect-locked-dblock' => "Nivoi zaÅ¡tite se ne mogu mijenjati jer je aktivna baza podataka zakljuÄana.
@@ -2335,9 +2390,8 @@ Možete promijeniti stepen zaštite ove stranice, ali to neće uticati na prenos
'undeletepagetext' => '{{PLURAL:$1|Slijedeća $1 stranica je obrisana|Slijedeće $1 stranice su obrisane|Slijedećih $1 je obrisano}} ali su još uvijek u arhivi i mogu biti vraćene.
Arhiva moÅ¡e biti periodiÄno Äišćena.',
'undelete-fieldset-title' => 'Vraćanje revizija',
-'undeleteextrahelp' => "Da vratite cijeli Älanak, ostavite sve kutijice neoznaÄene i kliknite '''''Vrati'''''.
-Da bi izvrÅ¡ili selektivno vraćanje Älanaka, odaberite kutijice koje odgovaraju revizijama koje želite vratiti, i kliknite '''''Vrati'''''.
-Klikom na '''''OÄisti''''' ćete oÄistiti polje za komentar i sve kutijice.",
+'undeleteextrahelp' => "Da vratite cijelu historiju Älanka, ostavite sve kutijice neoznaÄene i kliknite '''''{{int:undeletebtn}}'''''.
+Da bi izvršili selektivno vraćanje, odaberite kutijice koje odgovaraju revizijama koje želite vratiti, i kliknite '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '{{PLURAL:$1|$1 revizija arhivirana|$1 revizije arhivirane|$1 revizija arhivirano}}',
'undeletehistory' => 'Ako vratite stranicu, sve revizije će biti vraćene njenoj historiji.
Ako je nova stranica istog imena napravljena od brisanja, vraćene revizije će se pojaviti u njenoj ranijoj historiji.',
@@ -2381,9 +2435,12 @@ $1',
'undelete-show-file-submit' => 'Da',
# Namespace form on various pages
-'namespace' => 'Vrsta Älanka:',
-'invert' => 'Sve osim odabranog',
-'blanknamespace' => '(Glavno)',
+'namespace' => 'Vrsta Älanka:',
+'invert' => 'Sve osim odabranog',
+'tooltip-invert' => 'OznaÄite ovu kutiju za sakrivanje promjena na stranicama u odabranom imenskom prostoru (i povezanim imenskim prostorima ako je oznaÄeno)',
+'namespace_association' => 'Povezan imenski prostor',
+'tooltip-namespace_association' => 'OznaÄite ovu kutiju da takoÄ‘er ukljuÄite razgovor ili imenski prostor teme koja je povezana sa odabranim imenskim prostorom',
+'blanknamespace' => '(Glavno)',
# Contributions
'contributions' => 'Doprinosi korisnika',
@@ -2432,11 +2489,13 @@ Posljednje stavke zapisnika blokiranja možete pogledati ispod:',
'whatlinkshere-filters' => 'Filteri',
# Block/unblock
+'autoblockid' => 'Automatska blokada #$1',
+'block' => 'Blokiraj korisnika',
+'unblock' => 'Odblokiraj korisnika',
'blockip' => 'Blokiraj korisnika',
'blockip-title' => 'Blokiranje korisnika',
'blockip-legend' => 'Blokiranje korisnika',
'blockiptext' => 'Upotrebite donji upitnik da biste uklonili prava pisanja sa odreÄ‘ene IP adrese ili korisniÄkog imena. Ovo bi trebalo da bude uraÄ‘eno samo da bi se sprijeÄio vandalizam, i u skladu sa [[{{MediaWiki:Policy-url}}|smjernicama]]. Unesite konkretan razlog ispod (na primjer, navodeći koje stranice su vandalizovane).',
-'ipaddress' => 'IP adresa:',
'ipadressorusername' => 'IP adresa ili korisniÄko ime:',
'ipbexpiry' => 'IstiÄe:',
'ipbreason' => 'Razlog:',
@@ -2449,7 +2508,7 @@ Posljednje stavke zapisnika blokiranja možete pogledati ispod:',
**Osobni napadi (ili napadaÄko ponaÅ¡anje)
**ÄŒarapare (zloupotreba viÅ¡e korisniÄkih raÄuna)
**Neprihvatljivo korisniÄko ime',
-'ipbanononly' => 'Blokiraj samo anonimne korisnike',
+'ipb-hardblock' => 'Onemogući prijavljene korisnike da uređuju sa ove IP adrese',
'ipbcreateaccount' => 'Onemogući pravljenje raÄuna',
'ipbemailban' => 'Onemogući korisnika da šalje e-mail',
'ipbenableautoblock' => 'Automatski blokiraj zadnju IP adresu koju je koristio ovaj korisnik i sve druge IP adrese s kojih je on pokušao uređivati',
@@ -2460,12 +2519,15 @@ Posljednje stavke zapisnika blokiranja možete pogledati ispod:',
'ipbotherreason' => 'Ostali/dodatni razlozi:',
'ipbhidename' => 'Sakrij korisniÄko ime iz ureÄ‘ivanja i spiskova',
'ipbwatchuser' => 'Prati korisniÄku stranicu i stranicu za razgovor ovog korisnika',
-'ipballowusertalk' => 'Dopusti ovom korisniku da mijenja vlastitu stranicu za razgovor dok je blokiran',
+'ipb-disableusertalk' => 'Onemogući ovog korisnika da uređuje svoju vlastitu stranicu za razgovor dok je blokiran',
'ipb-change-block' => 'Ponovno blokiraj korisnika sa novim postavkama',
+'ipb-confirm' => 'Potvrdite blokiranje',
'badipaddress' => 'Pogrešna IP adresa',
'blockipsuccesssub' => 'Blokiranje je uspjelo',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] je blokiran.
<br />Pogledajte [[Special:IPBlockList|IP spisak blokiranih korisnika]] za pregled blokiranja.',
+'ipb-blockingself' => 'Ovom akcijom ćete blokirati sebe! Da li ste sigurni da to želite?',
+'ipb-confirmhideuser' => "Upravo ćete blokirati korisnika sa ukljuÄenom opcijom ''sakrij korisnika''. Ovim će korisniÄko ime biti sakriveno u svim spiskovima i stavkama zapisnika. Da li ste sigurni da to želite?",
'ipb-edit-dropdown' => 'Uredi razloge blokiranja',
'ipb-unblock-addr' => 'Deblokiraj $1',
'ipb-unblock' => 'Deblokiraj korisniÄko ime ili IP adresu',
@@ -2477,17 +2539,23 @@ pravo pisanja ranije blokiranoj IP adresi
ili korisniÄkom imenu.',
'ipusubmit' => 'Ukloni ovu blokadu',
'unblocked' => '[[User:$1|$1]] je deblokiran',
+'unblocked-range' => '$1 je deblokiran',
'unblocked-id' => 'Blokada ID oznake $1 je uklonjena',
+'blocklist' => 'Blokirani korisnici',
'ipblocklist' => 'Blokirani korisnici',
'ipblocklist-legend' => 'Traži blokiranog korisnika',
-'ipblocklist-username' => 'KorisniÄko ime ili IP adresa:',
-'ipblocklist-sh-userblocks' => '$1 blokade raÄuna',
-'ipblocklist-sh-tempblocks' => '$1 privremene blokade',
-'ipblocklist-sh-addressblocks' => '$1 pojedinaÄne IP blokade',
+'blocklist-userblocks' => 'Sakrij blokade raÄuna',
+'blocklist-tempblocks' => 'Sakrij privremene blokade',
+'blocklist-addressblocks' => 'Sakrij pojedinaÄne IP blokade',
+'blocklist-timestamp' => 'Vremenska oznaka',
+'blocklist-target' => 'Cilj',
+'blocklist-expiry' => 'IstiÄe',
+'blocklist-by' => 'Administrator koji je blokirao',
+'blocklist-params' => 'Parametri blokade',
+'blocklist-reason' => 'Razlog',
'ipblocklist-submit' => 'Traži',
'ipblocklist-localblock' => 'Lokalna blokada',
'ipblocklist-otherblocks' => 'Ostale {{PLURAL:$1|blokada|blokade}}',
-'blocklistline' => '$1, $2 blokirao korisnika $3 ($4)',
'infiniteblock' => 'nije ograniÄena',
'expiringblock' => 'istiÄe dana $1 u $2',
'anononlyblock' => 'samo anonimni korisnici',
@@ -2510,7 +2578,7 @@ Razlog za blokiranje je korisnika $1 je: \'\'$2\'\'',
'reblock-logentry' => 'promjena postavki blokiranja za [[$1]] sa vremenom isteka u $2 $3',
'blocklogtext' => 'Ovo je historija akcija blokiranja i deblokiranja korisnika.
Automatsko blokirane IP adrese nisu uspisane ovde.
-Pogledajte [[Special:IPBlockList|blokirane IP adrese]] za spisak trenutnih zabrana i blokiranja.',
+Pogledajte [[Special:BlockList|blokirane IP adrese]] za spisak trenutnih zabrana i blokiranja.',
'unblocklogentry' => 'deblokiran $1',
'block-log-flags-anononly' => 'samo anonimni korisnici',
'block-log-flags-nocreate' => 'pravljenje raÄuna onemogućeno',
@@ -2524,9 +2592,9 @@ Pogledajte [[Special:IPBlockList|blokirane IP adrese]] za spisak trenutnih zabra
'ipb_expiry_temp' => 'Sakrivene blokade korisniÄkih imena moraju biti stalne.',
'ipb_hide_invalid' => 'Ne može se onemogućiti ovaj raÄun; možda ima isuviÅ¡e izmjena.',
'ipb_already_blocked' => '"$1" je već blokiran',
-'ipb-needreblock' => '== Već blokirano ==
-$1 je već blokiran. Da li želite promijeniti postavke?',
+'ipb-needreblock' => '$1 je već blokiran. Da li želite promijeniti postavke?',
'ipb-otherblocks-header' => 'Ostale {{PLURAL:$1|blokada|blokade}}',
+'unblock-hideuser' => 'Ne možete deblokirati ovog korisnika jer je njegovo korisniÄko ime sakriveno.',
'ipb_cant_unblock' => 'Greška: Blokada sa ID oznakom $1 nije pronađena.
Možda je već deblokirana.',
'ipb_blocked_as_range' => 'Greška: IP adresa $1 nije direktno blokirana i ne može se deblokirati.
@@ -2570,6 +2638,7 @@ Molimo Vas da potvrdite da je ovo zaista ono Å¡to namijeravate da uradite.',
'lockfilenotwritable' => 'Datoteka zakljuÄavanja baze je zaÅ¡tićena za pisanje.
Ako želite otkljuÄati ili zakljuÄati bazu, ova datoteka mora biti omogućena za pisanje od strane web servera.',
'databasenotlocked' => 'Baza podataka nije zakljuÄana.',
+'lockedbyandtime' => '(od $1 dana $2 u $3)',
# Move page
'move-page' => 'Pomjeranje $1',
@@ -2698,7 +2767,7 @@ U drugom sluÄaju možete koristiti i vezu, npr. [[{{#Special:Export}}/{{MediaWi
'allmessagesdefault' => 'UobiÄajeni tekst',
'allmessagescurrent' => 'Trenutni tekst',
'allmessagestext' => 'Ovo je spisak svih sistemskih poruka u dostupnih u MediaWiki imenskom prostoru.
-Molimo posjetite [http://www.mediawiki.org/wiki/Localisation MediaWiki lokalizaciju] i [http://translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.',
+Molimo posjetite [//www.mediawiki.org/wiki/Localisation MediaWiki lokalizaciju] i [//translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.',
'allmessagesnotsupportedDB' => 'Ova stranica ne može biti koriÅ¡tena jer je <i>wgUseDatabaseMessages</i> iskljuÄen.',
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter po stanju podešavanja:',
@@ -2864,9 +2933,7 @@ Dopušta unos razloga u sažetak.',
'modern.js' => '/* Bilo koja JavaScript će biti uÄitana za sve korisnike koji koriste Modern skin */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metapodaci onemogućeni za ovaj server.',
-'nocreativecommons' => 'Creative Commons RDF metapodaci onemogućeni za ovaj server.',
-'notacceptable' => 'Viki server ne može da pruži podatke u onom formatu koji VaÅ¡ klijent može da proÄita.',
+'notacceptable' => 'Viki server ne može da pruži podatke u onom formatu koji VaÅ¡ klijent može da proÄita.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonimni korisnik|$1 anonimna korisnika|$1 anonimnih korisnika}} projekta {{SITENAME}}',
@@ -2890,12 +2957,17 @@ Ovo je vjerovatno izazvao vezom ka vanjskoj nepoželjnoj stranici.',
'spam_blanking' => 'Sve revizije koje sadrže linkove ka $1, oÄisti',
# Info page
-'infosubtitle' => 'Informacije za stranicu',
-'numedits' => 'Broj izmjena (stranica): $1',
-'numtalkedits' => 'Broj izmjena (stranice za razgovor): $1',
-'numwatchers' => 'Broj onih koji pregledaju: $1',
-'numauthors' => 'Broj razliÄitih autora (stranice): $1',
-'numtalkauthors' => 'Broj razliÄitih autora (stranice za razgovor): $1',
+'pageinfo-title' => 'Informacije za "$1"',
+'pageinfo-header-edits' => 'Izmjene',
+'pageinfo-header-watchlist' => 'Praćeni Älanci',
+'pageinfo-header-views' => 'Pregledi',
+'pageinfo-subjectpage' => 'Stranica',
+'pageinfo-talkpage' => 'Stranica za razgovor',
+'pageinfo-watchers' => 'Broj onih koji pregledaju',
+'pageinfo-edits' => 'Broj izmjena',
+'pageinfo-authors' => 'Broj razliÄitih autora',
+'pageinfo-views' => 'Broj pogleda',
+'pageinfo-viewsperedit' => 'Pogleda po izmjeni',
# Skin names
'skinname-standard' => 'KlasiÄno',
@@ -2907,25 +2979,6 @@ Ovo je vjerovatno izazvao vezom ka vanjskoj nepoželjnoj stranici.',
'skinname-simple' => 'Jednostavna',
'skinname-modern' => 'Moderna',
-# Math options
-'mw_math_png' => 'Uvijek prikaži kao PNG',
-'mw_math_simple' => 'HTML ako je jednostavno, inaÄe PNG',
-'mw_math_html' => 'HTML ako je moguće, inaÄe PNG',
-'mw_math_source' => 'Ostavi kao TeX (za tekstualne preglednike)',
-'mw_math_modern' => 'PreporuÄeno za moderne preglednike',
-'mw_math_mathml' => 'MathML ako je moguće (eksperimentalno)',
-
-# Math errors
-'math_failure' => 'Neuspjeh pri parsiranju',
-'math_unknown_error' => 'nepoznata greška',
-'math_unknown_function' => 'nepoznata funkcija',
-'math_lexing_error' => 'rijeÄniÄka greÅ¡ka',
-'math_syntax_error' => 'sintaksna greška',
-'math_image_error' => 'PNG konverzija neuspjeÅ¡na; provjerite taÄnu instalaciju latex-a i dvipng-a (ili dvips + gs + convert)',
-'math_bad_tmpdir' => 'Ne može se napisati ili napraviti privremeni matematiÄni direktorijum',
-'math_bad_output' => 'Ne može se napisati ili napraviti direktorijum za matematiÄni izvjeÅ¡taj.',
-'math_notexvc' => 'Nedostaje izvršno texvc; molimo Vas da pogledate math/README da podesite.',
-
# Patrolling
'markaspatrolleddiff' => 'OznaÄi kao patrolirano',
'markaspatrolledtext' => 'OznaÄi ovaj Älanak kao patroliran',
@@ -2961,21 +3014,24 @@ $1',
'nextdiff' => 'Novija izmjena →',
# Media information
-'mediawarning' => "'''Upozorenje''': Ova datoteka sadrži loš kod, njegovim izvršavanjem možete da ugrozite Vaš sistem.",
-'imagemaxsize' => "OgraniÄenje veliÄine slike:<br />''(za stranice opisa datoteke)''",
-'thumbsize' => 'VeliÄina umanjenog prikaza:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stranica|stranice|stranica}}',
-'file-info' => 'veliÄina datoteke: $1, MIME tip: $2',
-'file-info-size' => '$1 × $2 piksela, veliÄina datoteke: $3, MIME tip: $4',
-'file-nohires' => '<small>Veća rezolucija nije dostupna.</small>',
-'svg-long-desc' => 'SVG fajl, dozvoljeno $1 × $2 piksela, veliÄina fajla: $3',
-'show-big-image' => 'Vidi sliku u punoj veliÄini (rezoluciji)',
-'show-big-image-thumb' => '<small>VeliÄina ovoga prikaza: $1 × $2 piksela</small>',
-'file-info-gif-looped' => 'stalno iznova',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|sliÄica|sliÄice|sliÄica}}',
-'file-info-png-looped' => 'stalno iznova',
-'file-info-png-repeat' => 'pregledano $1 {{PLURAL:$1|put|puta}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|sliÄica|sliÄice|sliÄica}}',
+'mediawarning' => "'''Upozorenje''': Ova datoteka sadrži loš kod, njegovim izvršavanjem možete da ugrozite Vaš sistem.",
+'imagemaxsize' => "OgraniÄenje veliÄine slike:<br />''(za stranice opisa datoteke)''",
+'thumbsize' => 'VeliÄina umanjenog prikaza:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stranica|stranice|stranica}}',
+'file-info' => 'veliÄina datoteke: $1, MIME tip: $2',
+'file-info-size' => '$1 × $2 piksela, veliÄina datoteke: $3, MIME tip: $4',
+'file-info-size-pages' => '$1 × $2 piksela, veliÄina datoteke: $3, MIME vrsta: $4, $5 {{PLURAL:$5|stranica|stranice|stranica}}',
+'file-nohires' => '<small>Veća rezolucija nije dostupna.</small>',
+'svg-long-desc' => 'SVG fajl, dozvoljeno $1 × $2 piksela, veliÄina fajla: $3',
+'show-big-image' => 'Vidi sliku u punoj veliÄini (rezoluciji)',
+'show-big-image-preview' => '<small>VeliÄina ovog prikaza: $1.</small>',
+'show-big-image-other' => '<small>Ostale rezolucije: $1.</small>',
+'show-big-image-size' => '$1 × $2 piksela',
+'file-info-gif-looped' => 'stalno iznova',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|sliÄica|sliÄice|sliÄica}}',
+'file-info-png-looped' => 'stalno iznova',
+'file-info-png-repeat' => 'pregledano $1 {{PLURAL:$1|put|puta}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|sliÄica|sliÄice|sliÄica}}',
# Special:NewFiles
'newimages' => 'Galerija novih slika',
@@ -3001,14 +3057,21 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'metadata-help' => 'Ova datoteka sadržava dodatne podatke koje je vjerovatno dodala digitalna kamera ili skener u procesu snimanja, odnosno digitalizacije. Ako je datoteka mijenjana, podaci možda nisu u skladu sa stvarnim stanjem.',
'metadata-expand' => 'Pokaži sve detalje',
'metadata-collapse' => 'Sakrij dodatne podatke',
-'metadata-fields' => "Slijedeći EXIF metapodaci će biti prikazani ispod slike u tablici s metapodacima. Ostali će biti sakriveni (možete ih vidjeti ako kliknete na link ''Pokaži sve detalje'').
+'metadata-fields' => 'Polja metapodataka slika su prikazani ispod slike će biti ukljuÄeni u prikaz stranice slike kada je sakrivena tabela metapodataka. U suprotnom će biti sakrivena po postavkama.
+
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Å irina',
@@ -3023,13 +3086,11 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-ycbcrpositioning' => 'Pozicioniranje Y i C',
'exif-xresolution' => 'Horizontalna rezolucija',
'exif-yresolution' => 'Vertikalna rezolucija',
-'exif-resolutionunit' => 'Jedinice X i Y rezolucije',
'exif-stripoffsets' => 'Lokacija podataka slike',
'exif-rowsperstrip' => 'Broj redaka po liniji',
'exif-stripbytecounts' => 'Bita po kompresovanoj liniji',
'exif-jpeginterchangeformat' => 'Presijek do JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bita JPEG podataka',
-'exif-transferfunction' => 'Transferna funkcija',
'exif-whitepoint' => 'Hromiranost bijele taÄke',
'exif-primarychromaticities' => 'Hromaticitet primarnih boja',
'exif-ycbcrcoefficients' => 'Koeficijenti transformacije matrice prostora boja',
@@ -3048,7 +3109,6 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-compressedbitsperpixel' => 'NaÄin kompresije slike',
'exif-pixelydimension' => 'Å irina slike',
'exif-pixelxdimension' => 'Visina slike',
-'exif-makernote' => 'BiljeÅ¡ke proizvoÄ‘aÄa',
'exif-usercomment' => 'KorisniÄki komentari',
'exif-relatedsoundfile' => 'Povezana zvuÄna datoteka',
'exif-datetimeoriginal' => 'Datum i vrijeme generisanja podataka',
@@ -3062,7 +3122,6 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-exposureprogram' => 'Program ekspozicije',
'exif-spectralsensitivity' => 'Spektralna osjetljivost',
'exif-isospeedratings' => 'Rejting ISO brzine',
-'exif-oecf' => 'Optoelektronski faktor konvezije',
'exif-shutterspeedvalue' => 'Brzina APEX okidaÄa',
'exif-aperturevalue' => 'APEX otvor',
'exif-brightnessvalue' => 'APEX osvijetljenost',
@@ -3075,7 +3134,6 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-focallength' => 'Fokusna dužina objektiva',
'exif-subjectarea' => 'Površina objekta',
'exif-flashenergy' => 'Energija blijeska',
-'exif-spatialfrequencyresponse' => 'Prostorna frekvencija odgovora',
'exif-focalplanexresolution' => 'Rezolucija fokusne ravni X',
'exif-focalplaneyresolution' => 'Rezolucija fokusne ravni Y',
'exif-focalplaneresolutionunit' => 'Jedinica rezolucije fokusne ravni',
@@ -3084,7 +3142,6 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-sensingmethod' => 'Vrsta senzora',
'exif-filesource' => 'Izvor datoteke',
'exif-scenetype' => 'Vrsta scene',
-'exif-cfapattern' => 'CFA Å¡ema',
'exif-customrendered' => 'Podešeno uređivanje slike',
'exif-exposuremode' => 'Vrsta ekspozicije',
'exif-whitebalance' => 'Bijeli balans',
@@ -3129,10 +3186,79 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-gpsareainformation' => 'Naziv GPS podruÄja',
'exif-gpsdatestamp' => 'GPS datum',
'exif-gpsdifferential' => 'GPS diferencijalna korekcija',
+'exif-jpegfilecomment' => 'Komentar JPEG datoteke',
+'exif-keywords' => 'KljuÄne rijeÄi',
+'exif-worldregioncreated' => 'Regija svijeta gdje je slika naÄinjena',
+'exif-countrycreated' => 'Država gdje je slika naÄinjena',
+'exif-countrycodecreated' => 'Kod države gdje je slika naÄinjena',
+'exif-provinceorstatecreated' => 'Provincija ili pokrajina gdje je slika naÄinjena',
+'exif-citycreated' => 'Grad gdje je slika naÄinjena',
+'exif-sublocationcreated' => 'Podlokacija grada gdje je slika naÄinjena',
+'exif-worldregiondest' => 'Prikazana regija svijeta',
+'exif-countrydest' => 'Prikazana država',
+'exif-countrycodedest' => 'Kod prikazane države',
+'exif-provinceorstatedest' => 'Prikazana provincija ili pokrajina',
+'exif-citydest' => 'Prikazani grad',
+'exif-sublocationdest' => 'Podlokacija grada koja je prikazana',
'exif-objectname' => 'Kratki naslov',
+'exif-specialinstructions' => 'Posebne upute',
+'exif-headline' => 'Naslov',
+'exif-credit' => 'Pripisivanje/Pružalac usluga',
+'exif-source' => 'Izvor',
+'exif-editstatus' => 'UredniÄki status slike',
+'exif-urgency' => 'Hitnost',
+'exif-fixtureidentifier' => 'Naziv rubrike',
+'exif-locationdest' => 'Lokacija prikazana',
+'exif-locationdestcode' => 'Kod prikazane lokacije',
+'exif-objectcycle' => 'Doba dana za koje je namijenjena medija',
+'exif-contact' => 'Podaci za kontakt',
+'exif-writer' => 'Pisac',
+'exif-languagecode' => 'Jezik',
+'exif-iimversion' => 'IIM verzija',
+'exif-iimcategory' => 'Kategorija',
+'exif-iimsupplementalcategory' => 'Dodatne kategorije',
+'exif-datetimeexpires' => 'Ne koristite nakon',
+'exif-datetimereleased' => 'Objavljeno',
+'exif-originaltransmissionref' => 'Originalna Å¡ifra mjesta prenosa',
+'exif-identifier' => 'Oznaka',
+'exif-lens' => 'Korišteni objektiv',
+'exif-serialnumber' => 'Serijski broj fotoaparata',
+'exif-cameraownername' => 'Vlasnik fotoaparata',
+'exif-label' => 'Naslov',
+'exif-datetimemetadata' => 'Datum posljednje izmjene meta podataka',
+'exif-nickname' => 'Neformalni naziv slike',
+'exif-rating' => 'Ocjena (od 5)',
+'exif-rightscertificate' => 'Certifikat za upravljanje pravima',
+'exif-copyrighted' => 'Status autorskih prava',
+'exif-copyrightowner' => 'Vlasnik autorskih prava',
+'exif-usageterms' => 'Uslovi upotrebe',
+'exif-webstatement' => 'Online izjava o autorskom pravu',
+'exif-originaldocumentid' => 'Jedinstveni ID originalnog dokumenta',
+'exif-licenseurl' => 'URL za licencu autorskog prava',
+'exif-morepermissionsurl' => 'Alternativni podaci o licenci',
+'exif-attributionurl' => 'Kada ponovo upotrebljavate ovaj rad, molimo povežite do njega',
+'exif-preferredattributionname' => 'Kada ponovo upotrebljavate ovaj rad, molimo navedite ga',
+'exif-pngfilecomment' => 'Komentar PNG datoteke',
+'exif-disclaimer' => 'Odricanje odgovornosti',
+'exif-contentwarning' => 'Upozorenje o sadržaju',
+'exif-giffilecomment' => 'Komentar GIF datoteke',
+'exif-intellectualgenre' => 'Vrsta stavke',
+'exif-subjectnewscode' => 'Kôd predmeta',
+'exif-scenecode' => 'IPTC kôd scene',
+'exif-event' => 'Prikazani događaj',
+'exif-organisationinimage' => 'Prikazana organizacija',
+'exif-personinimage' => 'Prikazana liÄnost',
+'exif-originalimageheight' => 'Visina slike prije nego Å¡to je odrezana',
+'exif-originalimagewidth' => 'Å irina slike prije nego Å¡to je odrezana',
# EXIF attributes
'exif-compression-1' => 'Nekompresovano',
+'exif-compression-2' => 'CCITT Grupa 3 1 — Dimenzionalno izmijenjeo Huffmanovo šifriranje po dužini',
+'exif-compression-3' => 'CCITT Grupa 3 faks Å¡ifriranje',
+'exif-compression-4' => 'CCITT Grupa 4 faks Å¡ifriranje',
+
+'exif-copyrighted-true' => 'Zaštićeno autorskim pravima',
+'exif-copyrighted-false' => 'Javna domena',
'exif-unknowndate' => 'Nepoznat datum',
@@ -3148,6 +3274,8 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-planarconfiguration-1' => 'grubi format',
'exif-planarconfiguration-2' => 'format u ravni',
+'exif-colorspace-65535' => 'Nije podešeno',
+
'exif-componentsconfiguration-0' => 'ne postoji',
'exif-exposureprogram-0' => 'Nije određen',
@@ -3265,6 +3393,10 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-gpslongitude-e' => 'IstoÄna dužina',
'exif-gpslongitude-w' => 'Zapadna dužina',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metar|metra|metara}} nadmorske visine',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metar|metra|metara}} ispod nivoa mora',
+
'exif-gpsstatus-a' => 'Mjerenje u toku',
'exif-gpsstatus-v' => 'Mjerenje van funkcije',
@@ -3276,21 +3408,73 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-gpsspeed-m' => 'Milja na sat',
'exif-gpsspeed-n' => 'ÄŒvorova',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometara',
+'exif-gpsdestdistance-m' => 'Milja',
+'exif-gpsdestdistance-n' => 'NautiÄkih milja',
+
+'exif-gpsdop-excellent' => 'OdliÄno ($1)',
+'exif-gpsdop-good' => 'Dobro ($1)',
+'exif-gpsdop-moderate' => 'Umjereno ($1)',
+'exif-gpsdop-fair' => 'Zadovoljavajuće ($1)',
+'exif-gpsdop-poor' => 'Loše ($1)',
+
+'exif-objectcycle-a' => 'Samo jutro',
+'exif-objectcycle-p' => 'Samo naveÄer',
+'exif-objectcycle-b' => 'I ujutro i naveÄer',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Stvarni pravac',
'exif-gpsdirection-m' => 'Magnetski smijer',
+'exif-ycbcrpositioning-1' => 'Centrirano',
+'exif-ycbcrpositioning-2' => 'Uporedo',
+
+'exif-dc-contributor' => 'Autori',
+'exif-dc-coverage' => 'Prostorni ili vremenski okvir medije',
+'exif-dc-date' => 'Datum(i)',
+'exif-dc-publisher' => 'IzdavaÄ',
+'exif-dc-relation' => 'Povezana medija',
+'exif-dc-rights' => 'Prava',
+'exif-dc-source' => 'Izvor medije',
+'exif-dc-type' => 'Vrsta medije',
+
+'exif-rating-rejected' => 'Odbijeno',
+
+'exif-isospeedratings-overflow' => 'Više od 65535',
+
+'exif-iimcategory-ace' => 'Umjetnosti, kultura i zabava',
+'exif-iimcategory-clj' => 'Kriminal i zakon',
+'exif-iimcategory-dis' => 'Katastrofe i nesreće',
+'exif-iimcategory-fin' => 'Ekonomija i posao',
+'exif-iimcategory-edu' => 'Obrazovanje',
+'exif-iimcategory-evn' => 'Okolina',
+'exif-iimcategory-hth' => 'Zdravlje',
+'exif-iimcategory-hum' => 'Ljudski interes',
+'exif-iimcategory-lab' => 'Rad',
+'exif-iimcategory-lif' => 'NaÄin života i razonoda',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Religija i vjerovanje',
+'exif-iimcategory-sci' => 'Nauka i tehnologija',
+'exif-iimcategory-soi' => 'Društvena pitanja',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Rat, sukob i nemir',
+'exif-iimcategory-wea' => 'Vrijeme',
+
+'exif-urgency-normal' => 'Normalno ($1)',
+'exif-urgency-low' => 'Nisko ( $1 )',
+'exif-urgency-high' => 'Visoko ($1)',
+'exif-urgency-other' => 'KorisniÄki odreÄ‘en prioritet ($1)',
+
# External editor support
'edit-externally' => 'Izmjeni ovu datoteku koristeći vanjski program',
-'edit-externally-help' => '(Pogledajte [http://www.mediawiki.org/wiki/Manual:External_editors instrukcije za podešavanje] za više informacija)',
+'edit-externally-help' => '(Pogledajte [//www.mediawiki.org/wiki/Manual:External_editors instrukcije za podešavanje] za više informacija)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'sve',
-'imagelistall' => 'sve',
-'watchlistall2' => 'sve',
-'namespacesall' => 'sve',
-'monthsall' => 'sve',
-'limitall' => 'sve',
+'watchlistall2' => 'sve',
+'namespacesall' => 'sve',
+'monthsall' => 'sve',
+'limitall' => 'sve',
# E-mail address confirmation
'confirmemail' => 'Potvrdite adresu e-pošte',
@@ -3361,12 +3545,13 @@ $1',
'trackbackdeleteok' => 'Trackback je uspješno obrisan.',
# Delete conflict
-'deletedwhileediting' => "'''Upozorenje''': Ova stranica je obrisana prije nego Å¡to ste poÄeli ureÄ‘ivati!",
-'confirmrecreate' => "Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovaj Älanak poÅ¡to ste poÄeli ureÄ‘ivanje sa razlogom:
+'deletedwhileediting' => "'''Upozorenje''': Ova stranica je obrisana prije nego Å¡to ste poÄeli ureÄ‘ivati!",
+'confirmrecreate' => "Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovaj Älanak poÅ¡to ste poÄeli ureÄ‘ivanje sa razlogom:
: ''$2''
Molimo Vas da potvrdite da stvarno želite da ponovo napravite ovaj Älanak.",
-'recreate' => 'Ponovno napravi',
+'confirmrecreate-noreason' => 'Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovaj Älanak poÅ¡to ste ga poÄeli ureÄ‘ivati. Molimo Vas da potvrdite da stvarno želite da ponovo napravite ovaj Älanak.',
+'recreate' => 'Ponovno napravi',
'unit-pixel' => 'px',
@@ -3375,6 +3560,10 @@ Molimo Vas da potvrdite da stvarno želite da ponovo napravite ovaj Älanak.",
'confirm-purge-top' => 'Da li želite obrisati keš ove stranice?',
'confirm-purge-bottom' => 'Ispražnjava keš stranice i prikazuje najsvježiju verziju.',
+# action=watch/unwatch
+'confirm-watch-top' => 'Dodajte ovu stranu na VaÅ¡ spisak praćenih Älanaka',
+'confirm-unwatch-top' => 'IzbriÅ¡ite ovu stranu sa VaÅ¡eg spiska praćenih Älanaka',
+
# Multipage image navigation
'imgmultipageprev' => '↠prethodna stranica',
'imgmultipagenext' => 'slijedeća stranica →',
@@ -3423,14 +3612,14 @@ Pokušajte normalni pregled.',
'watchlistedit-normal-legend' => 'Ukloni naslove iz spiska praćenja',
'watchlistedit-normal-explain' => 'Naslovi na Vašem spisku praćenja su prikazani ispod.
Da bi ste uklonili naslov, oznaÄite kutiju pored naslova, i kliknite "{{int:Watchlistedit-normal-submit}}".
-Također možete [[Special:Watchlist/raw|napredno urediti spisak]].',
+Također možete [[Special:EditWatchlist/raw|napredno urediti spisak]].',
'watchlistedit-normal-submit' => 'Ukloni naslove',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 naslov|$1 naslova}} je uklonjeno iz Vašeg spiska praćenja:',
'watchlistedit-raw-title' => 'Napredno uređivanje spiska praćenja',
'watchlistedit-raw-legend' => 'Napredno uređivanje spiska praćenja',
'watchlistedit-raw-explain' => 'Naslovi u Vašem spisku praćenja su prikazani ispod, i mogu biti uređeni dodavanjem ili brisanjem sa spiska; jedan naslov u svakom redu.
Kada završite, kliknite "{{int:Watchlistedit-raw-submit}}".
-TakoÄ‘er možete [[Special:Watchlist/edit|koristiti standardni ureÄ‘ivaÄ]].',
+TakoÄ‘er možete [[Special:EditWatchlist|koristiti standardni ureÄ‘ivaÄ]].',
'watchlistedit-raw-titles' => 'Naslovi:',
'watchlistedit-raw-submit' => 'Ažuriraj spisak praćenja',
'watchlistedit-raw-done' => 'Vaš spisak praćenja je ažuriran.',
@@ -3457,18 +3646,18 @@ TakoÄ‘er možete [[Special:Watchlist/edit|koristiti standardni ureÄ‘ivaÄ]].',
'iranian-calendar-m12' => 'Esfand',
# Hijri month names
-'hijri-calendar-m1' => 'Muharem',
-'hijri-calendar-m2' => 'Safer',
-'hijri-calendar-m3' => 'Rebiul-evel',
-'hijri-calendar-m4' => 'Rebiul-ahir',
-'hijri-calendar-m5' => 'Džumadel-ula',
-'hijri-calendar-m6' => 'Džumadel-uhra',
-'hijri-calendar-m7' => 'Redžeb',
-'hijri-calendar-m8' => 'Å aban',
-'hijri-calendar-m9' => 'Ramazan',
-'hijri-calendar-m10' => 'Å eval',
-'hijri-calendar-m11' => 'Zulkada',
-'hijri-calendar-m12' => 'Zulhidže',
+'hijri-calendar-m1' => 'muharrem',
+'hijri-calendar-m2' => 'safer',
+'hijri-calendar-m3' => 'rebiul-evvel',
+'hijri-calendar-m4' => 'rebiul-ahir',
+'hijri-calendar-m5' => 'džumadel-ula',
+'hijri-calendar-m6' => 'džumadel-uhra',
+'hijri-calendar-m7' => 'redžeb',
+'hijri-calendar-m8' => "Å¡a'ban",
+'hijri-calendar-m9' => 'ramazan',
+'hijri-calendar-m10' => 'Å¡evval',
+'hijri-calendar-m11' => "zul-ka'de",
+'hijri-calendar-m12' => 'zul-hidždže',
# Hebrew month names
'hebrew-calendar-m1' => 'Tishrei',
@@ -3508,33 +3697,33 @@ TakoÄ‘er možete [[Special:Watchlist/edit|koristiti standardni ureÄ‘ivaÄ]].',
'duplicate-defaultsort' => 'Upozorenje: Postavljeni kljuÄ sortiranja "$2" zamjenjuje raniji kljuÄ "$1".',
# Special:Version
-'version' => 'Verzija',
-'version-extensions' => 'Instalirana proširenja (ekstenzije)',
-'version-specialpages' => 'Posebne stranice',
-'version-parserhooks' => 'Kuke parsera',
-'version-variables' => 'Promjenjive',
-'version-skins' => 'Kože',
-'version-other' => 'Ostalo',
-'version-mediahandlers' => 'UpravljaÄi medije',
-'version-hooks' => 'Kuke',
-'version-extension-functions' => 'Funkcije proširenja (ekstenzije)',
-'version-parser-extensiontags' => "Parser proširenja (''tagovi'')",
-'version-parser-function-hooks' => 'Kuke parserske funkcije',
-'version-skin-extension-functions' => 'Funkcije proširenja kože',
-'version-hook-name' => 'Naziv kuke',
-'version-hook-subscribedby' => 'Pretplaćeno od',
-'version-version' => '(Verzija $1)',
-'version-license' => 'Licenca',
-'version-poweredby-credits' => "Ova wiki je zasnovana na '''[http://www.mediawiki.org/ MediaWiki]''', autorska prava zadržana © 2001-$1 $2.",
-'version-poweredby-others' => 'ostali',
-'version-license-info' => 'Mediawiki je slobodni softver, možete ga redistribuirati i/ili mijenjati pod uslovima GNU opće javne licence kao što je objavljeno od strane Fondacije Slobodnog Softvera, bilo u verziji 2 licence, ili (po vašoj volji) nekoj od kasniji verzija.
+'version' => 'Verzija',
+'version-extensions' => 'Instalirana proširenja (ekstenzije)',
+'version-specialpages' => 'Posebne stranice',
+'version-parserhooks' => 'Kuke parsera',
+'version-variables' => 'Promjenjive',
+'version-antispam' => 'SprjeÄavanje spama',
+'version-skins' => 'Kože',
+'version-other' => 'Ostalo',
+'version-mediahandlers' => 'UpravljaÄi medije',
+'version-hooks' => 'Kuke',
+'version-extension-functions' => 'Funkcije proširenja (ekstenzije)',
+'version-parser-extensiontags' => "Parser proširenja (''tagovi'')",
+'version-parser-function-hooks' => 'Kuke parserske funkcije',
+'version-hook-name' => 'Naziv kuke',
+'version-hook-subscribedby' => 'Pretplaćeno od',
+'version-version' => '(Verzija $1)',
+'version-license' => 'Licenca',
+'version-poweredby-credits' => "Ova wiki je zasnovana na '''[//www.mediawiki.org/ MediaWiki]''', autorska prava zadržana © 2001-$1 $2.",
+'version-poweredby-others' => 'ostali',
+'version-license-info' => 'Mediawiki je slobodni softver, možete ga redistribuirati i/ili mijenjati pod uslovima GNU opće javne licence kao što je objavljeno od strane Fondacije Slobodnog Softvera, bilo u verziji 2 licence, ili (po vašoj volji) nekoj od kasniji verzija.
Mediawiki se distriburia u nadi da će biti korisna, ali BEZ IKAKVIH GARANCIJA, Äak i bez ikakvih posrednih garancija o KOMERCIJALNOSTI ili DOSTUPNOSTI ZA ODREÄENU SVRHU. Pogledajte GNU opću javnu licencu za viÅ¡e detalja.
-Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] zajedno s ovim programom, ako niste, piÅ¡ite Fondaciji Slobodnog Softvera na adresu Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ili je proÄitajte [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html online].',
-'version-software' => 'Instalirani softver',
-'version-software-product' => 'Proizvod',
-'version-software-version' => 'Verzija',
+Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] zajedno s ovim programom, ako niste, piÅ¡ite Fondaciji Slobodnog Softvera na adresu Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ili je proÄitajte [//www.gnu.org/licenses/old-licenses/gpl-2.0.html online].',
+'version-software' => 'Instalirani softver',
+'version-software-product' => 'Proizvod',
+'version-software-version' => 'Verzija',
# Special:FilePath
'filepath' => 'Putanja datoteke',
@@ -3544,22 +3733,22 @@ Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] z
Slike su prikazane u punoj veliÄini, ostale vrste datoteka su prikazane direktno sa, s njima povezanim, programom.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Pretraga za duplim datotekama',
-'fileduplicatesearch-summary' => 'Pretraga za duplim datotekama na bazi njihove haš vrijednosti.
-
-Unesite ime datoteke bez "{{ns:file}}:" prefiksa.',
-'fileduplicatesearch-legend' => 'Pretraga za dvojnicima',
-'fileduplicatesearch-filename' => 'Ime datoteke:',
-'fileduplicatesearch-submit' => 'Traži',
-'fileduplicatesearch-info' => '$1 × $2 piksel<br />VeliÄina datoteke: $3<br />MIME vrsta: $4',
-'fileduplicatesearch-result-1' => 'Datoteka "$1" nema identiÄnih dvojnika.',
-'fileduplicatesearch-result-n' => 'Datoteka "$1" ima {{PLURAL:$2|1 identiÄnog|$2 identiÄna|$2 identiÄnih}} dvojnika.',
+'fileduplicatesearch' => 'Pretraga za duplim datotekama',
+'fileduplicatesearch-summary' => 'Pretraga za duplim datotekama na bazi njihove haš vrijednosti.',
+'fileduplicatesearch-legend' => 'Pretraga za dvojnicima',
+'fileduplicatesearch-filename' => 'Ime datoteke:',
+'fileduplicatesearch-submit' => 'Traži',
+'fileduplicatesearch-info' => '$1 × $2 piksel<br />VeliÄina datoteke: $3<br />MIME vrsta: $4',
+'fileduplicatesearch-result-1' => 'Datoteka "$1" nema identiÄnih dvojnika.',
+'fileduplicatesearch-result-n' => 'Datoteka "$1" ima {{PLURAL:$2|1 identiÄnog|$2 identiÄna|$2 identiÄnih}} dvojnika.',
+'fileduplicatesearch-noresults' => 'Nije pronađena datoteka sa imenom "$1".',
# Special:SpecialPages
'specialpages' => 'Posebne stranice',
'specialpages-note' => '----
* Normalne posebne stranice.
-* <strong class="mw-specialpagerestricted">Zaštićene posebne stranice.</strong>',
+* <strong class="mw-specialpagerestricted">Zaštićene posebne stranice.</strong>
+* <span class="mw-specialpagecached">Samo keširane posebne stranice.</span>',
'specialpages-group-maintenance' => 'Izvještaji za održavanje',
'specialpages-group-other' => 'Ostale posebne stranice',
'specialpages-group-login' => 'Prijava / Otvaranje raÄuna',
diff --git a/languages/messages/MessagesBug.php b/languages/messages/MessagesBug.php
index 4dbd1b2e..aad35ab2 100644
--- a/languages/messages/MessagesBug.php
+++ b/languages/messages/MessagesBug.php
@@ -95,7 +95,6 @@ $messages = array(
'searcharticle' => 'Lao',
'history' => 'Versi riolo leppaë',
'history_short' => 'versi riolo',
-'info_short' => 'Informasi',
'permalink' => 'Pranala permanen',
'edit' => 'Padécéŋ',
'create' => 'Ebbu',
@@ -194,7 +193,7 @@ $messages = array(
'loginerror' => 'Éro log attama',
'mailmypassword' => 'E-mail adacili baru',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Pasewodo matoa:',
# Edit page toolbar
@@ -364,7 +363,6 @@ $messages = array(
'categories' => 'Maneŋ kategori',
# Watchlist
-'addedwatch' => 'Tamba ri jagaan',
'addedwatchtext' => "Halamang \"[[:\$1]]\" ni ritamba ri ida [[Special:Watchlist|watchlist]].
Halamang bicara éréngé gabungan halamang bicara pada wettu depan didaftarkan koe,
éréngé halamang akan wessi '''umpek''' ri [[Special:RecentChanges|daftar pinra tanappa]] barak lebih lemmak ita.
@@ -440,7 +438,6 @@ Eloko peddéï supaya weddiŋi mapalecé?',
'ilsubmit' => 'Sappa',
# 'all' in various places, this might be different for inflected languages
-'imagelistall' => 'maneng',
'watchlistall2' => 'maneŋ',
'namespacesall' => 'maneŋ',
'monthsall' => 'maneŋ',
diff --git a/languages/messages/MessagesCa.php b/languages/messages/MessagesCa.php
index 53710951..71763c33 100644
--- a/languages/messages/MessagesCa.php
+++ b/languages/messages/MessagesCa.php
@@ -12,6 +12,7 @@
* @author Cedric31
* @author Davidpar
* @author El libre
+ * @author Gemmaa
* @author Iradigalesc
* @author Jordi Roqué
* @author Juanpabl
@@ -96,91 +97,91 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Redireccions dobles' ),
+ 'Allmessages' => array( 'Missatges', 'MediaWiki' ),
+ 'Allpages' => array( 'Llista de pàgines' ),
+ 'Ancientpages' => array( 'Pàgines velles' ),
+ 'Blankpage' => array( 'Pàgina en blanc', 'Blanc' ),
+ 'Block' => array( 'Bloca' ),
+ 'Blockme' => array( 'Bloca\'m' ),
+ 'Booksources' => array( 'Fonts bibliogràfiques' ),
'BrokenRedirects' => array( 'Redireccions rompudes' ),
- 'Disambiguations' => array( 'Desambiguacions' ),
- 'Userlogin' => array( 'Registre i entrada' ),
- 'Userlogout' => array( 'Finalitza sessió' ),
+ 'ChangePassword' => array( 'Reinicia contrasenya' ),
+ 'Confirmemail' => array( 'Confirma adreça' ),
+ 'Contributions' => array( 'Contribucions' ),
'CreateAccount' => array( 'Crea compte' ),
- 'Preferences' => array( 'Preferències' ),
- 'Watchlist' => array( 'Llista de seguiment' ),
- 'Recentchanges' => array( 'Canvis recents' ),
- 'Upload' => array( 'Carrega' ),
+ 'Deadendpages' => array( 'Atzucacs' ),
+ 'DeletedContributions' => array( 'Contribucions esborrades' ),
+ 'Disambiguations' => array( 'Desambiguacions' ),
+ 'DoubleRedirects' => array( 'Redireccions dobles' ),
+ 'Emailuser' => array( 'Envia missatge' ),
+ 'Export' => array( 'Exporta' ),
+ 'Fewestrevisions' => array( 'Pàgines menys editades' ),
+ 'FileDuplicateSearch' => array( 'Cerca fitxers duplicats' ),
+ 'Import' => array( 'Importa' ),
+ 'BlockList' => array( 'Usuaris blocats' ),
+ 'LinkSearch' => array( 'Enllaços web', 'Busca enllaços', 'Recerca d\'enllaços web' ),
+ 'Listadmins' => array( 'Administradors' ),
+ 'Listbots' => array( 'Bots' ),
'Listfiles' => array( 'Imatges' ),
- 'Newimages' => array( 'Imatges noves' ),
- 'Listusers' => array( 'Usuaris' ),
'Listgrouprights' => array( 'Drets dels grups d\'usuaris' ),
- 'Statistics' => array( 'Estadístiques' ),
- 'Randompage' => array( 'Article aleatori', 'Atzar', 'Aleatori' ),
+ 'Listredirects' => array( 'Redireccions' ),
+ 'Listusers' => array( 'Usuaris' ),
+ 'Lockdb' => array( 'Bloca bd' ),
+ 'Log' => array( 'Registre' ),
'Lonelypages' => array( 'Pàgines òrfenes' ),
- 'Uncategorizedpages' => array( 'Pàgines sense categoria' ),
- 'Uncategorizedcategories' => array( 'Categories sense categoria' ),
- 'Uncategorizedimages' => array( 'Imatges sense categoria' ),
- 'Uncategorizedtemplates' => array( 'Plantilles sense categoria' ),
- 'Unusedcategories' => array( 'Categories no usades' ),
- 'Unusedimages' => array( 'Imatges no usades' ),
- 'Wantedpages' => array( 'Pàgines demanades' ),
- 'Wantedcategories' => array( 'Categories demanades' ),
- 'Wantedfiles' => array( 'Arxius demanats' ),
+ 'Longpages' => array( 'Pàgines llargues' ),
+ 'MergeHistory' => array( 'Fusiona historial' ),
+ 'MIMEsearch' => array( 'Cerca MIME' ),
+ 'Mostcategories' => array( 'Pàgines amb més categories' ),
+ 'Mostimages' => array( 'Imatges més útils' ),
'Mostlinked' => array( 'Pàgines més enllaçades' ),
'Mostlinkedcategories' => array( 'Categories més útils' ),
'Mostlinkedtemplates' => array( 'Plantilles més útils' ),
- 'Mostimages' => array( 'Imatges més útils' ),
- 'Mostcategories' => array( 'Pàgines amb més categories' ),
'Mostrevisions' => array( 'Pàgines més editades' ),
- 'Fewestrevisions' => array( 'Pàgines menys editades' ),
- 'Shortpages' => array( 'Pàgines curtes' ),
- 'Longpages' => array( 'Pàgines llargues' ),
+ 'Movepage' => array( 'Reanomena' ),
+ 'Mycontributions' => array( 'Contribucions pròpies' ),
+ 'Mypage' => array( 'Pàgina personal' ),
+ 'Mytalk' => array( 'Discussió personal' ),
+ 'Newimages' => array( 'Imatges noves' ),
'Newpages' => array( 'Pàgines noves' ),
- 'Ancientpages' => array( 'Pàgines velles' ),
- 'Deadendpages' => array( 'Atzucacs' ),
+ 'Popularpages' => array( 'Pàgines populars' ),
+ 'Preferences' => array( 'Preferències' ),
+ 'Prefixindex' => array( 'Cerca per prefix' ),
'Protectedpages' => array( 'Pàgines protegides' ),
'Protectedtitles' => array( 'Títols protegits' ),
- 'Allpages' => array( 'Llista de pàgines' ),
- 'Prefixindex' => array( 'Cerca per prefix' ),
- 'Ipblocklist' => array( 'Usuaris blocats' ),
- 'Specialpages' => array( 'Pàgines especials' ),
- 'Contributions' => array( 'Contribucions' ),
- 'Emailuser' => array( 'Envia missatge' ),
- 'Confirmemail' => array( 'Confirma adreça' ),
- 'Whatlinkshere' => array( 'Enllaços' ),
+ 'Randompage' => array( 'Article aleatori', 'Atzar', 'Aleatori' ),
+ 'Randomredirect' => array( 'Redirecció aleatòria' ),
+ 'Recentchanges' => array( 'Canvis recents' ),
'Recentchangeslinked' => array( 'Seguiment' ),
- 'Movepage' => array( 'Reanomena' ),
- 'Blockme' => array( 'Bloca\'m' ),
- 'Booksources' => array( 'Fonts bibliogràfiques' ),
- 'Export' => array( 'Exporta' ),
- 'Version' => array( 'Versió' ),
- 'Allmessages' => array( 'Missatges', 'MediaWiki' ),
- 'Log' => array( 'Registre' ),
- 'Blockip' => array( 'Bloca' ),
+ 'Revisiondelete' => array( 'Esborra versió' ),
+ 'Search' => array( 'Cerca' ),
+ 'Shortpages' => array( 'Pàgines curtes' ),
+ 'Specialpages' => array( 'Pàgines especials' ),
+ 'Statistics' => array( 'Estadístiques' ),
+ 'Uncategorizedcategories' => array( 'Categories sense categoria' ),
+ 'Uncategorizedimages' => array( 'Imatges sense categoria' ),
+ 'Uncategorizedpages' => array( 'Pàgines sense categoria' ),
+ 'Uncategorizedtemplates' => array( 'Plantilles sense categoria' ),
'Undelete' => array( 'Restaura' ),
- 'Import' => array( 'Importa' ),
- 'Lockdb' => array( 'Bloca bd' ),
'Unlockdb' => array( 'Desbloca bd' ),
- 'Userrights' => array( 'Drets' ),
- 'MIMEsearch' => array( 'Cerca MIME' ),
- 'FileDuplicateSearch' => array( 'Cerca fitxers duplicats' ),
- 'Unwatchedpages' => array( 'Pàgines desateses' ),
- 'Listredirects' => array( 'Redireccions' ),
- 'Revisiondelete' => array( 'Esborra versió' ),
+ 'Unusedcategories' => array( 'Categories no usades' ),
+ 'Unusedimages' => array( 'Imatges no usades' ),
'Unusedtemplates' => array( 'Plantilles no usades' ),
- 'Randomredirect' => array( 'Redirecció aleatòria' ),
- 'Mypage' => array( 'Pàgina personal' ),
- 'Mytalk' => array( 'Discussió personal' ),
- 'Mycontributions' => array( 'Contribucions pròpies' ),
- 'Listadmins' => array( 'Administradors' ),
- 'Listbots' => array( 'Bots' ),
- 'Popularpages' => array( 'Pàgines populars' ),
- 'Search' => array( 'Cerca' ),
- 'Resetpass' => array( 'Reinicia contrasenya' ),
+ 'Unwatchedpages' => array( 'Pàgines desateses' ),
+ 'Upload' => array( 'Carrega' ),
+ 'Userlogin' => array( 'Registre i entrada' ),
+ 'Userlogout' => array( 'Finalitza sessió' ),
+ 'Userrights' => array( 'Drets' ),
+ 'Version' => array( 'Versió' ),
+ 'Wantedcategories' => array( 'Categories demanades' ),
+ 'Wantedfiles' => array( 'Arxius demanats' ),
+ 'Wantedpages' => array( 'Pàgines demanades' ),
+ 'Watchlist' => array( 'Llista de seguiment' ),
+ 'Whatlinkshere' => array( 'Enllaços' ),
'Withoutinterwiki' => array( 'Sense interwiki' ),
- 'MergeHistory' => array( 'Fusiona historial' ),
- 'Blankpage' => array( 'Pàgina en blanc', 'Blanc' ),
- 'LinkSearch' => array( 'Enllaços web', 'Busca enllaços', 'Recerca d\'enllaços web' ),
- 'DeletedContributions' => array( 'Contribucions esborrades' ),
);
-$linkTrail = '/^([a-zàèéíòóúç·ïü\']+)(.*)$/sDu';
+$linkTrail = "/^((?:[a-zàèéíòóúç·ïü]|'(?!'))+)(.*)$/sDu";
$messages = array(
# User preference toggles
@@ -214,8 +215,8 @@ $messages = array(
'tog-shownumberswatching' => "Mostra el nombre d'usuaris que hi vigilen",
'tog-oldsig' => 'Signatura actual:',
'tog-fancysig' => 'Tractar la signatura com a text wiki (sense enllaç automàtic)',
-'tog-externaleditor' => "Utilitza per defecte un editor extern (opció per a experts, requereix la configuració adient de l'ordinador, [http://www.mediawiki.org/wiki/Manual:External_editors consulteu-ho al manual])",
-'tog-externaldiff' => "Utilitza per defecte un altre visualitzador de diferències (opció per a experts, requereix la configuració adient de l'ordinador, [http://www.mediawiki.org/wiki/Manual:External_editors consulteu-ho al manual])",
+'tog-externaleditor' => "Utilitza per defecte un editor extern (opció per a experts, requereix la configuració adient de l'ordinador, [//www.mediawiki.org/wiki/Manual:External_editors consulteu-ho al manual])",
+'tog-externaldiff' => "Utilitza per defecte un altre visualitzador de diferències (opció per a experts, requereix la configuració adient de l'ordinador, [//www.mediawiki.org/wiki/Manual:External_editors consulteu-ho al manual])",
'tog-showjumplinks' => "Habilita els enllaços de dreceres d'accessibilitat",
'tog-uselivepreview' => 'Utilitza la previsualització automàtica (cal JavaScript) (experimental)',
'tog-forceeditsummary' => "Avisa'm en introduir un camp de resum en blanc",
@@ -311,15 +312,7 @@ $messages = array(
'listingcontinuesabbrev' => ' cont.',
'index-category' => 'Pàgines indexades',
'noindex-category' => 'Pàgines no indexades',
-
-'mainpagetext' => "'''El programari del MediaWiki s'ha instaŀlat correctament.'''",
-'mainpagedocfooter' => "Consulteu la [http://meta.wikimedia.org/wiki/Help:Contents Guia d'Usuari] per a més informació sobre com utilitzar-lo.
-
-== Per a començar ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Llista de característiques configurables]
-* [http://www.mediawiki.org/wiki/Manual:FAQ PMF del MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Llista de correu (''listserv'') per a anuncis del MediaWiki]",
+'broken-file-category' => 'Pàgines amb enllaços a fitxer trencats',
'about' => 'Quant a',
'article' => 'Pàgina de contingut',
@@ -371,10 +364,10 @@ $messages = array(
'history' => 'Historial de canvis',
'history_short' => 'Historial',
'updatedmarker' => 'actualitzat des de la darrera visita',
-'info_short' => 'Informació',
'printableversion' => 'Versió per a impressora',
'permalink' => 'Enllaç permanent',
'print' => "Envia aquesta pàgina a la cua d'impressió",
+'view' => 'Mostra',
'edit' => 'Modifica',
'create' => 'Crea',
'editthispage' => 'Modifica la pàgina',
@@ -382,6 +375,7 @@ $messages = array(
'delete' => 'Elimina',
'deletethispage' => 'Elimina la pàgina',
'undelete_short' => "Restaura {{PLURAL:$1|l'edició eliminada|$1 edicions eliminades}}",
+'viewdeleted_short' => 'Mostra {{PLURAL:$1|una edició eliminada|$1 edicions eliminades}}',
'protect' => 'Protecció',
'protect_change' => 'canvia',
'protectthispage' => 'Protecció de la pàgina',
@@ -465,6 +459,8 @@ $1",
'toc' => 'Contingut',
'showtoc' => 'desplega',
'hidetoc' => 'amaga',
+'collapsible-collapse' => 'Tanca',
+'collapsible-expand' => 'Amplia',
'thisisdeleted' => 'Voleu mostrar o restaurar $1?',
'viewdeleted' => 'Voleu mostrar $1?',
'restorelink' => '{{PLURAL:$1|una versió esborrada|$1 versions esborrades}}',
@@ -476,6 +472,8 @@ $1",
'page-rss-feed' => '«$1» RSS Feed',
'page-atom-feed' => 'Canal Atom «$1»',
'red-link-title' => '$1 (encara no existeix)',
+'sort-descending' => 'Ordena descendentment',
+'sort-ascending' => 'Ordena ascendentment',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Pàgina',
@@ -558,12 +556,13 @@ Consulta: $2',
'protectedpagetext' => 'Aquesta pàgina està protegida per evitar modificacions.',
'viewsourcetext' => "Podeu visualitzar i copiar la font d'aquesta pàgina:",
'protectedinterface' => "Aquesta pàgina conté cadenes de text per a la interfície del programari, i és protegida per a previndre'n abusos.",
-'editinginterface' => "'''Avís:''' Esteu editant una pàgina que conté cadenes de text per a la interfície d'aquest programari. Tingueu en compte que els canvis que es fan a aquesta pàgina afecten a l'aparença de la interfície d'altres usuaris. Pel que fa a les traduccions, plantegeu-vos utilitzar la [http://translatewiki.net/wiki/Main_Page?setlang=ca translatewiki.net], el projecte de traducció de MediaWiki.",
+'editinginterface' => "'''Avís:''' Esteu editant una pàgina que conté cadenes de text per a la interfície d'aquest programari. Tingueu en compte que els canvis que es fan a aquesta pàgina afecten a l'aparença de la interfície d'altres usuaris. Pel que fa a les traduccions, plantegeu-vos utilitzar la [//translatewiki.net/wiki/Main_Page?setlang=ca translatewiki.net], el projecte de traducció de MediaWiki.",
'sqlhidden' => '(consulta SQL oculta)',
'cascadeprotected' => "Aquesta pàgina està protegida i no es pot modificar perquè està inclosa en {{PLURAL:$1|la següent pàgina, que té|les següents pàgines, que tenen}} activada l'opció de «protecció en cascada»:
$2",
'namespaceprotected' => "No teniu permís per a modificar pàgines en l'espai de noms '''$1'''.",
-'customcssjsprotected' => "No teniu permís per modificar aquesta pàgina, perquè conté paràmetres personals d'un altre usuari.",
+'customcssprotected' => "No teniu permisos per editar la pàgina CSS perquè conté els paràmetres personals d'un altre usuari.",
+'customjsprotected' => "No teniu permisos per editar la pàgina JavaScript perquè conté els paràmetres personals d'un altre usuari.",
'ns-specialprotected' => 'No es poden modificar les pàgines especials.',
'titleprotected' => "La creació d'aquesta pàgina està protegida per [[User:$1|$1]].
Els seus motius han estat: «''$2''».",
@@ -602,6 +601,7 @@ No oblideu de canviar les vostres [[Special:Preferences|preferències de {{SITEN
'createaccount' => 'Crea un compte',
'gotaccount' => 'Ja teniu un compte? $1.',
'gotaccountlink' => 'Inicia una sessió',
+'userlogin-resetlink' => "Heu oblidat les vostres dades d'accés?",
'createaccountmail' => 'per correu electrònic',
'createaccountreason' => 'Motiu:',
'badretype' => 'Les contrasenyes que heu introduït no coincideixen.',
@@ -611,12 +611,14 @@ Escolliu-ne un de diferent.',
'createaccounterror' => "No s'ha pogut crear el compte: $1",
'nocookiesnew' => "S'ha creat el compte d'usuari, però no esteu enregistrat. El projecte {{SITENAME}} usa galetes per enregistrar els usuaris. Si us plau activeu-les, per a poder enregistrar-vos amb el vostre nom d'usuari i la clau.",
'nocookieslogin' => 'El programari {{SITENAME}} utilitza galetes per enregistrar usuaris. Teniu les galetes desactivades. Activeu-les i torneu a provar.',
+'nocookiesfornew' => "No s'ha creat el compte d'usuari, ja que no es podia confirmar el seu origen.
+Verifiqueu que teniu habilitades les galetes al vostre navegador, torneu a carregar aquesta pàgina i intenteu-lo de nou.",
'noname' => "No heu especificat un nom vàlid d'usuari.",
'loginsuccesstitle' => "S'ha iniciat la sessió amb èxit",
'loginsuccess' => 'Heu iniciat la sessió a {{SITENAME}} com a «$1».',
'nosuchuser' => "No hi ha cap usuari anomenat «$1».
Reviseu-ne l'ortografia (recordeu que es distingeixen les majúscules i minúscules), o [[Special:UserLogin/signup|creeu un compte d'usuari nou]].",
-'nosuchusershort' => 'No hi ha cap usuari anomenat «<nowiki>$1</nowiki>». Comproveu que ho hàgiu escrit correctament.',
+'nosuchusershort' => 'No hi ha cap usuari anomenat «$1». Comproveu que ho hàgiu escrit correctament.',
'nouserspecified' => "Heu d'especificar un nom d'usuari.",
'login-userblocked' => 'Aquest usuari està bloquejat. Inici de sessió no permès.',
'wrongpassword' => 'La contrasenya que heu introduït és incorrecta. Torneu-ho a provar.',
@@ -658,13 +660,14 @@ Si no hi teniu cap relació i aquest compte ha estat creat per error, simplement
'usernamehasherror' => "El nom d'usuari no pot contenir caràcters hash",
'login-throttled' => "Heu realitzat massa intents d'accés a la sessió.
Si us plau, esperi abans de tornar-ho a intentar.",
+'login-abort-generic' => "L'entrada al compte d'usuari no ha reeixit - Abortada",
'loginlanguagelabel' => 'Llengua: $1',
'suspicious-userlogout' => "S'ha denegat la vostra petició per tancar la sessió ja què sembla que va ser enviada per un navegador defectuós o un proxy cau.",
# E-mail sending
'php-mail-error-unknown' => 'Error desconegut en la funció mail() de PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Canvia la contrasenya',
'resetpass_announce' => 'Heu iniciat la sessió amb un codi temporal enviat per correu electrònic. Per a finalitzar-la, heu de definir una nova contrasenya ací:',
'resetpass_text' => '<!-- Afegiu-hi un text -->',
@@ -682,6 +685,32 @@ Si us plau, esperi abans de tornar-ho a intentar.",
Deveu haver canviat la vostra contrasenya o demanat una nova contrasenya temporal.',
'resetpass-temp-password' => 'Contrasenya temporal:',
+# Special:PasswordReset
+'passwordreset' => 'Restablir contrasenya',
+'passwordreset-text' => 'Completeu el següent formulari per rebre un recordatori per correu electrònic amb els detalls del vostre compte.',
+'passwordreset-legend' => 'Restablir contrasenya',
+'passwordreset-disabled' => "S'ha desactivat el restabliment de contranyes en aquest wiki.",
+'passwordreset-pretext' => '{{PLURAL:$1||Introduïu un dels elements de dades següents}}',
+'passwordreset-username' => "Nom d'usuari:",
+'passwordreset-domain' => 'Domini',
+'passwordreset-email' => 'Adreça de correu electrònic:',
+'passwordreset-emailtitle' => 'Detalls del compte a {{SITENAME}}',
+'passwordreset-emailtext-ip' => "Algú (vós mateix segurament, des de l'adreça IP $1) ha demanat un recordatori dels detalls dels vostres comptes al projecte {{SITENAME}} <$4>. {{PLURAL:$3|El següent compte d'usuari està associat|Els següents comptes d'usuari estan associats}} amb aquesta adreça de correu electrònic:
+
+$2
+
+{{PLURAL:$3|Aquesta contrasenya temporal caducarà|Aquestes contrasenyes temporals caducaran}} en {{PLURAL:$5|un dia|$5 dies}}.
+Hauríeu d'entrar {{PLURAL:$3|al compte per a fixar-hi una nova contrasenya|als comptes per a fixar-hi noves contrasenyes}} al més aviat possible. Si algú que no sou vós és qui ha fet aquesta petició o si heu recordat la contrasenya original i ja no la voleu canviar, podeu ignorar aquest missatge i seguir utilitzant la vostra antiga contrasenya.",
+'passwordreset-emailtext-user' => "L'usuari $1 de {{SITENAME}} ha demanat un recordatori dels detalls dels vostres comptes al projecte {{SITENAME}} <$4>. {{PLURAL:$3|El següent compte d'usuari està associat|Els següents comptes d'usuari estan associats}} amb aquesta adreça de correu electrònic:
+
+$2
+
+{{PLURAL:$3|Aquesta contrasenya temporal caducarà|Aquestes contrasenyes temporals caducaran}} en {{PLURAL:$5|un dia|$5 dies}}.
+Hauríeu d'entrar {{PLURAL:$3|al compte per a fixar-hi una nova contrasenya|als comptes per a fixar-hi noves contrasenyes}} al més aviat possible. Si algú que no sou vós és qui ha fet aquesta petició o si heu recordat la contrasenya original i ja no la voleu canviar, podeu ignorar aquest missatge i seguir utilitzant la vostra antiga contrasenya.",
+'passwordreset-emailelement' => "Nom d'usuari: $1
+Contrasenya temporal: $2",
+'passwordreset-emailsent' => "S'ha enviat un correu de recordatori.",
+
# Edit page toolbar
'bold_sample' => 'Text en negreta',
'bold_tip' => 'Text en negreta',
@@ -693,8 +722,6 @@ Deveu haver canviat la vostra contrasenya o demanat una nova contrasenya tempora
'extlink_tip' => 'Enllaç extern (recordeu el prefix http://)',
'headline_sample' => "Text per a l'encapçalament",
'headline_tip' => 'Encapçalat de secció de 2n nivell',
-'math_sample' => 'Inseriu una fórmula ací',
-'math_tip' => 'Fórmula matemàtica (LaTeX)',
'nowiki_sample' => 'Inseriu ací text sense format',
'nowiki_tip' => 'Ignora el format wiki',
'image_sample' => 'Exemple.jpg',
@@ -778,7 +805,7 @@ Podeu [[Special:Search/{{PAGENAME}}|cercar aquest títol]] en altres pàgines,
o [{{fullurl:{{FULLPAGENAME}}|action=edit}} crear-la ara]</span>.',
'noarticletext-nopermission' => 'Actualment no hi ha text en aquesta pàgina.
Podeu [[Special:Search/{{PAGENAME}}|cercar aquest títol]] en altres pàgines o bé <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercar en els registres relacionats]</span>.',
-'userpage-userdoesnotexist' => "Atenció: El compte d'usuari «$1» no està registrat. En principi no hauríeu de crear ni editar aquesta pàgina.",
+'userpage-userdoesnotexist' => "Atenció: El compte d'usuari «<nowiki>$1</nowiki>» no està registrat. En principi no hauríeu de crear ni editar aquesta pàgina.",
'userpage-userdoesnotexist-view' => 'El compte d\'usuari "$1" no està registrat.',
'blocked-notice-logextract' => "En aquests moments aquest compte d'usuari es troba blocat.
Per més detalls, la darrera entrada del registre es mostra a continuació:",
@@ -811,6 +838,7 @@ Si us plau, proveu-ho una altra vegada. Si continués sense funcionar, proveu de
'''Si es tracta d'una contribució legítima, si us plau, intenteu-ho una altra vegada. Si continua havent-hi problemes, [[Special:UserLogout|finalitzeu la sessió]] i torneu a iniciar-ne una.'''",
'token_suffix_mismatch' => "'''S'ha rebutjat la vostra modificació perquè el vostre client ha fet malbé els caràcters de puntuació en el testimoni d'edició. S'ha rebutjat la modificació per a evitar la corrupció del text de la pàgina. Açò passa a vegades quan s'utilitza un servei web de servidor intermediari anònim amb problemes.'''",
+'edit_form_incomplete' => "'''Certes parts del formulari de modificació no han arribat al servidor, verifiqueu que les vostres modificacions estan intactes i proveu-ho de nou.'''",
'editing' => "S'està editant $1",
'editingsection' => "S'està editant $1 (secció)",
'editingcomment' => "S'està editant $1 (nova secció)",
@@ -1047,7 +1075,8 @@ Si us plau, verifica els registres.",
# Suppression log
'suppressionlog' => 'Registre de supressió',
-'suppressionlogtext' => 'A continuació hi ha una llista de les eliminacions i bloquejos que impliquen un contingut amagat als administradors. Vegeu la [[Special:IPBlockList|llista de bloquejos]] per a consultar la llista de bandejos i bloquejos actualment en curs.',
+'suppressionlogtext' => 'A continuació es mostra una llista de les supressions i blocs que impliquen contingut ocult a administradors.
+Veure la [[Special:BlockList|List]] per a la llista de prohibicions actualment operatives i blocs.',
# History merging
'mergehistory' => 'Fusiona els historials de les pàgines',
@@ -1154,12 +1183,13 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
'searchdisabled' => 'La cerca dins el projecte {{SITENAME}} està inhabilitada. Mentrestant, podeu cercar a través de Google, però tingueu en compte que la seua base de dades no estarà actualitzada.',
# Quickbar
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'Cap',
-'qbsettings-fixedleft' => "Fixa a l'esquerra",
-'qbsettings-fixedright' => 'Fixa a la dreta',
-'qbsettings-floatingleft' => "Surant a l'esquerra",
-'qbsettings-floatingright' => 'Surant a la dreta',
+'qbsettings' => 'Quickbar',
+'qbsettings-none' => 'Cap',
+'qbsettings-fixedleft' => "Fixa a l'esquerra",
+'qbsettings-fixedright' => 'Fixa a la dreta',
+'qbsettings-floatingleft' => "Surant a l'esquerra",
+'qbsettings-floatingright' => 'Surant a la dreta',
+'qbsettings-directionality' => "Fix, segons la direcció d'escriptura del vostre idioma",
# Preferences page
'preferences' => 'Preferències',
@@ -1170,9 +1200,10 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
'changepassword' => 'Canvia la contrasenya',
'prefs-skin' => 'Aparença',
'skin-preview' => 'prova',
-'prefs-math' => 'Com es mostren les fórmules',
'datedefault' => 'Cap preferència',
+'prefs-beta' => 'Característiques beta',
'prefs-datetime' => 'Data i hora',
+'prefs-labs' => 'Característiques de laboratori',
'prefs-personal' => "Perfil d'usuari",
'prefs-rc' => 'Canvis recents',
'prefs-watchlist' => 'Llista de seguiment',
@@ -1194,8 +1225,6 @@ Assegureu-vos que aquest canvi mantindrà la continuïtat històrica de la pàgi
'columns' => 'Columnes',
'searchresultshead' => 'Preferències de la cerca',
'resultsperpage' => 'Resultats a mostrar per pàgina',
-'contextlines' => 'Línies a mostrar per resultat',
-'contextchars' => 'Caràcters de context per línia',
'stub-threshold' => 'Límit per a formatar l\'enllaç com <a href="#" class="stub">esborrany</a> (en octets):',
'stub-threshold-disabled' => 'Deshabilitat',
'recentchangesdays' => 'Dies a mostrar en els canvis recents:',
@@ -1208,7 +1237,7 @@ A continuació es mostra un valor generat de forma aleatòria que podeu fer serv
'savedprefs' => "S'han desat les vostres preferències",
'timezonelegend' => 'Fus horari:',
'localtime' => 'Hora local:',
-'timezoneuseserverdefault' => 'Usa hora del servidor',
+'timezoneuseserverdefault' => "Utilitza l'hora per defecte del wiki ($1)",
'timezoneuseoffset' => 'Altres (especifiqueu la diferència)',
'timezoneoffset' => 'Diferència¹:',
'servertime' => 'Hora del servidor:',
@@ -1256,8 +1285,8 @@ Ha de tenir com a molt {{PLURAL:$1|un caràcter|$1 caràcters}}.',
'prefs-help-gender' => "Opcional: s'usa perquè el programari se us adreci amb missatges amb el gènere adient. Aquesta informació serà pública.",
'email' => 'Correu electrònic',
'prefs-help-realname' => "* Nom real (opcional): si escolliu donar aquesta informació serà utilitzada per a donar-vos l'atribució de la vostra feina.",
-'prefs-help-email' => "L'adreça electrònica és opcional, però permet l'enviament d'una nova contrasenya en cas d'oblit de l'actual.
-També podeu contactar amb altres usuaris a través de la vostra pàgina d'usuari o de discussió, sense que així calgui revelar la vostra identitat.",
+'prefs-help-email' => "L'adreça electrònica és opcional, però permet l'enviament d'una nova contrasenya en cas que oblideu l'actual.",
+'prefs-help-email-others' => 'També podeu optar per deixar que els altres contactin amb vós a través de la pàgina personal de discussió, sense necessitat de desvetllar la vostra identitat.',
'prefs-help-email-required' => 'Cal una adreça de correu electrònic.',
'prefs-info' => 'Informació bàsica',
'prefs-i18n' => 'Internacionalització',
@@ -1382,15 +1411,15 @@ També podeu contactar amb altres usuaris a través de la vostra pàgina d'usuar
'right-userrights' => 'Editar els drets dels usuaris',
'right-userrights-interwiki' => "Editar els drets dels usuaris d'altres wikis",
'right-siteadmin' => 'Blocar i desblocar la base de dades',
-'right-reset-passwords' => "Reiniciar la contrasenya d'altres usuaris",
'right-override-export-depth' => 'Exportar pàgines incloent aquelles enllaçades fins a una fondària de 5',
'right-sendemail' => 'Enviar missatges de correu electrònic a altres 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',
-'rightsnone' => '(cap)',
+'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',
+'rightsnone' => '(cap)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'llegir aquesta pàgina',
@@ -1513,11 +1542,11 @@ Vegeu la [[Special:NewFiles|galeria de nous fitxers]] per a una presentació mé
'minlength1' => "Els noms de fitxer han de ser de com a mínim d'una lletra.",
'illegalfilename' => 'El nom del fitxer «$1» conté caràcters que no estan permesos en els títols de pàgines. Si us plau, canvieu el nom al fitxer i torneu a carregar-lo.',
'badfilename' => "El nom de la imatge s'ha canviat a «$1».",
-'filetype-mime-mismatch' => "L'extensió de fitxer no coincideix amb el tipus MIME.",
+'filetype-mime-mismatch' => "L'extensió de fitxer «.$1» no coincideix amb el tipus MIME del fitxer ($2).",
'filetype-badmime' => 'No es poden carregar fitxers del tipus MIME «$1».',
'filetype-bad-ie-mime' => 'No es pot carregar aquest fitxer perquè Internet Explorer el detectaria com a «$1», que és un tipus de fitxer prohibit i potencialment perillós.',
'filetype-unwanted-type' => "Els fitxers del tipus «'''.$1'''» no són desitjats. {{PLURAL:$3|Es prefereix el tipus de fitxer|Els tipus de fitxer preferits són}} $2.",
-'filetype-banned-type' => "Els fitxers del tipus «'''.$1'''» no estan permesos. {{PLURAL:$3|Només s'admeten els fitxers del tipus|Els tipus de fitxer permesos són}} $2.",
+'filetype-banned-type' => "{{PLURAL:$4|Els fitxers del tipus «'''.$1'''»|Els fitxers dels tipus '''$1'''}} no estan permesos. {{PLURAL:$3|Només s'admeten els fitxers del tipus|Els tipus de fitxer permesos són}} $2.",
'filetype-missing' => 'El fitxer no té extensió (com ara «.jpg»).',
'empty-file' => 'El fitxer que heu tramès està buit.',
'file-too-large' => 'El fitxer que heu tramès és massa gran.',
@@ -1535,6 +1564,7 @@ Vegeu la [[Special:NewFiles|galeria de nous fitxers]] per a una presentació mé
'emptyfile' => 'El fitxer que heu carregat sembla estar buit.
Açò por ser degut a un mal caràcter en el nom del fitxer.
Comproveu si realment voleu carregar aquest fitxer.',
+'windows-nonascii-filename' => 'Aquest wiki no permet noms de fitxer amb caràcters especials.',
'fileexists' => "Ja hi existeix un fitxer amb aquest nom, si us plau, verifiqueu '''<tt>[[:$1]]</tt>''' si no esteu segurs de voler substituir-lo.
[[$1|thumb]]",
'filepageexists' => "La pàgina de descripció d'aquest fitxer ja ha estat creada ('''<tt>[[:$1]]</tt>'''), però de moment no hi ha cap fitxer amb aquest nom. La descripció que heu posat no apareixerà a la pàgina de descripció. Si voleu que hi aparegui haureu d'editar-la manualment.
@@ -1567,6 +1597,7 @@ Si us plau, si encara desitgeu carregar el vostre fitxer, torneu enrera i carreg
'php-uploaddisabledtext' => 'La càrrega de fitxer està desactivada al PHP. Comproveu les opcions del fitxer file_uploads.',
'uploadscripted' => 'Aquest fitxer conté codi HTML o de seqüències que pot ser interpretat equivocadament per un navegador.',
'uploadvirus' => 'El fitxer conté un virus! Detalls: $1',
+'uploadjava' => 'El fitxer és un arxiu ZIP que conté un fitxer .class de Java. No està permesa la càrrega de fitxers Java, perquè poden passar per alt les restriccions de seguretat.',
'upload-source' => 'Fitxer font',
'sourcefilename' => 'Nom del fitxer font:',
'sourceurl' => "URL d'origen:",
@@ -1576,10 +1607,6 @@ Si us plau, si encara desitgeu carregar el vostre fitxer, torneu enrera i carreg
'upload-options' => 'Opcions de càrrega',
'watchthisupload' => 'Vigila aquest fitxer',
'filewasdeleted' => "Prèviament es va carregar un fitxer d'aquest nom i després va ser esborrat. Hauríeu de verificar $1 abans de procedir a carregar-lo una altra vegada.",
-'upload-wasdeleted' => "'''Atenció: Esteu carregant un fitxer que s'havia eliminat abans.'''
-
-Hauríeu de considerar si és realment adequat continuar carregant aquest fitxer, perquè potser també acaba eliminat.
-A continuació teniu el registre d'eliminació per a que pugueu comprovar els motius que van portar a la seua eliminació:",
'filename-bad-prefix' => "El nom del fitxer que esteu penjant comença amb '''«$1»''', que és un nom no descriptiu que les càmeres digitals normalment assignen de forma automàtica. Trieu un de més descriptiu per al vostre fitxer.",
'upload-success-subj' => "El fitxer s'ha carregat amb èxit",
'upload-success-msg' => 'El material carregat de [$2] està disponible ací: [[:{{ns:file}}:$1]]',
@@ -1600,12 +1627,28 @@ $1',
'upload-unknown-size' => 'Mida desconeguda',
'upload-http-error' => 'Ha ocorregut un error HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => "S'ha trobat un error en obrir l'arxiu ZIP per a fer-hi comprovacions.",
+'zip-wrong-format' => 'El fitxer especificat no és un arxiu ZIP.',
+'zip-bad' => "El fitxer està corrupte o és un arxiu ZIP iŀlegible.
+No s'hi ha pogut comprovar la seguretat.",
+'zip-unsupported' => "El fitxer és un arxiu ZIP que utilitza facilitats no acceptades pel MediaWiki. No s'hi ha pogut realitzar la comprovació de seguretat.",
+
+# Special:UploadStash
+'uploadstash' => 'Carrega fitxers en reserva',
+'uploadstash-summary' => "Aquesta pàgina permet accedir als fitxers que han estat carregats (o estan en procés de ser carregats), però que encara no s'han publicat al wiki. Aquests fitxers només són visibles per a l'usuari que els ha carregats.",
+'uploadstash-clear' => 'Esborra els fitxers en reserva',
+'uploadstash-nofiles' => 'No teniu fitxers en reserva',
+'uploadstash-badtoken' => "No s'ha pogut realitzar l'acció, possiblement perquè han caducat la vostra identificació. Intenteu-ho de nou.",
+'uploadstash-errclear' => "No ha estat possible l'esborrat dels fitxers.",
+'uploadstash-refresh' => 'Actualitza la llista de fitxers',
+
# img_auth script messages
'img-auth-accessdenied' => 'Accés denegat',
-'img-auth-nopathinfo' => 'Falta PATH_INFO.
-El vostre servidor no està configurat per a tractar aquesta informació.
-Pot estar basat en CGI i no soportar img_auth.
-Vegeu http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-nopathinfo' => "Falta PATH_INFO.
+El servidor no està configurat per passar aquesta informació.
+Això pot ser basat en CGI i no és compatible amb img_auth.
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Vegeu l'auturització de la imatge.]",
'img-auth-notindir' => "No s'ha trobat la ruta sol·licitada al directori de càrrega configurat.",
'img-auth-badtitle' => 'No s\'ha pogut construir un títol vàlid a partir de "$1".',
'img-auth-nologinnWL' => 'No has iniciat sessió i "$1" no està a la llista blanca.',
@@ -1680,7 +1723,7 @@ La següent llista només mostra {{PLURAL:$1|la primera d'elles|les primeres $1
Podeu consultar la [[Special:WhatLinksHere/$2|llista completa]].",
'nolinkstoimage' => 'No hi ha pàgines que enllacin aquesta imatge.',
'morelinkstoimage' => 'Visualitza [[Special:WhatLinksHere/$1|més enllaços]] que porten al fitxer.',
-'redirectstofile' => '{{PLURAL:$1|El fitxer següent redirigeix cap aquest fitxer|Els següents $1 fitxers redirigeixen cap aquest fitxer:}}',
+'linkstoimage-redirect' => '$1 (fitxer redirigit) $2',
'duplicatesoffile' => "{{PLURAL:$1|Aquest fitxer és un duplicat del que apareix a continuació|A continuació s'indiquen els $1 duplicats d'aquest fitxer}} ([[Special:FileDuplicateSearch/$2|vegeu-ne més detalls]]):",
'sharedupload' => 'Aquest fitxer prové de $1 i pot ser utilitzat per altres projectes.',
'sharedupload-desc-there' => 'Aquest fitxer prové de $1 i pot ser utilitzat per altres projectes.
@@ -1768,18 +1811,19 @@ La descripció de la seva [$2 pàgina de descripció] es mostra a continuació.'
'statistics-users-active-desc' => "Usuaris que han dut a terme alguna acció en {{PLURAL:$1|l'últim dia|els últims $1 dies}}",
'statistics-mostpopular' => 'Pàgines més visualitzades',
-'disambiguations' => 'Pàgines de desambiguació',
+'disambiguations' => 'Pàgines amb enllaços a pàgines de desambiguació',
'disambiguationspage' => 'Template:Desambiguació',
'disambiguations-text' => "Les següents pàgines enllacen a una '''pàgina de desambiguació'''.
Per això, caldria que enllacessin al tema apropiat.<br />
Una pàgina es tracta com de desambiguació si utilitza una plantilla que està enllaçada a [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Redireccions dobles',
-'doubleredirectstext' => 'Aquesta pàgina llista les pàgines que redirigeixen a altres pàgines de redirecció.
+'doubleredirects' => 'Redireccions dobles',
+'doubleredirectstext' => 'Aquesta pàgina llista les pàgines que redirigeixen a altres pàgines de redirecció.
Cada fila conté enllaços a la primera i segona redireccions, així com el destí de la segona redirecció, què generalment és la pàgina destí "real", a la què hauria d\'apuntar la primera redirecció.
Les entrades <del>ratllades</del> s\'han resolt.',
-'double-redirect-fixed-move' => "S'ha reanomenat [[$1]], ara és una redirecció a [[$2]]",
-'double-redirect-fixer' => 'Supressor de dobles redireccions',
+'double-redirect-fixed-move' => "S'ha reanomenat [[$1]], ara és una redirecció a [[$2]]",
+'double-redirect-fixed-maintenance' => "S'ha arreglat la redirecció doble [[$1]] - [[$2]].",
+'double-redirect-fixer' => 'Supressor de dobles redireccions',
'brokenredirects' => 'Redireccions rompudes',
'brokenredirectstext' => 'Les següents redireccions enllacen a pàgines inexistents:',
@@ -1856,6 +1900,7 @@ Tingueu en compte que altres llocs web poden enllaçar un fitxer amb un URL dire
'pager-newer-n' => '{{PLURAL:$1|1 posterior|$1 posteriors}}',
'pager-older-n' => '{{PLURAL:$1|anterior|$1 anteriors}}',
'suppress' => 'Oversight',
+'querypage-disabled' => 'Aquesta pàgina especial està desactivada per a no perjudicar el rendiment.',
# Book sources
'booksources' => 'Obres de referència',
@@ -1906,11 +1951,13 @@ Vegeu també [[Special:WantedCategories|les categories soŀlicitades]].",
'sp-deletedcontributions-contribs' => 'contribucions',
# Special:LinkSearch
-'linksearch' => 'Enllaços externs',
+'linksearch' => "Recerca d'enllaços externs",
'linksearch-pat' => 'Patró de cerca:',
'linksearch-ns' => 'Espai de noms:',
'linksearch-ok' => 'Cerca',
-'linksearch-text' => 'Es poden fer servir caràcters comodí com «*.wikipedia.org».<br />Protocols admesos: <tt>$1</tt>',
+'linksearch-text' => 'Comodins com "*. wikipedia.org" es pot utilitzar.
+Necessita com a mínim un domini de primer nivell, per exemple "*.org".<br />
+Dóna suport a protocols: <tt> $1 </tt> (no afegir algun d\'aquests en la seva recerca).',
'linksearch-line' => '$1 enllaçat a $2',
'linksearch-error' => "Els caràcters comodí només poden aparèixer a l'inici de l'url.",
@@ -1973,6 +2020,10 @@ L'adreça electrònica que heu entrat en [[Special:Preferences|les vostres prefe
'noemailtext' => 'Aquest usuari no ha especificat una adreça electrònica vàlida.',
'nowikiemailtitle' => 'No es permet el correu electrònic',
'nowikiemailtext' => "Aquest usuari ha escollit no rebre missatges electrònics d'altres usuaris.",
+'emailnotarget' => "Nom d'usuari inexistent o no vàlid per al destinatari.",
+'emailtarget' => "Introduïu el nom d'usuari del destinatari",
+'emailusername' => "Nom d'usuari:",
+'emailusernamesubmit' => 'Enviar',
'email-legend' => 'Enviar un correu electrònic a un altre usuari de {{SITENAME}}',
'emailfrom' => 'De:',
'emailto' => 'Per a:',
@@ -1998,10 +2049,10 @@ L'adreça electrònica que heu entrat en [[Special:Preferences|les vostres prefe
'watchnologin' => 'No heu iniciat la sessió',
'watchnologintext' => "Heu d'[[Special:UserLogin|entrar]]
per modificar el vostre llistat de seguiment.",
-'addedwatch' => "S'ha afegit la pàgina a la llista de seguiment",
+'addwatch' => 'Afegeix a llista de seguiment',
'addedwatchtext' => "S'ha afegit la pàgina «[[:$1]]» a la vostra [[Special:Watchlist|llista de seguiment]].
S'hi mostraran els canvis futurs que tinguin lloc en aquesta pàgina i la corresponent discussió. A més la pàgina estarà ressaltada '''en negreta''' a la [[Special:RecentChanges|llista de canvis recents]] perquè pugueu adonar-vos dels canvis amb més facilitat.",
-'removedwatch' => "S'ha tret de la llista de seguiment",
+'removewatch' => 'Treu de la llista de seguiment',
'removedwatchtext' => "S'ha tret la pàgina «[[:$1]]» de la vostra [[Special:Watchlist|llista de seguiment]].",
'watch' => 'Vigila',
'watchthispage' => 'Vigila aquesta pàgina',
@@ -2022,8 +2073,9 @@ S'hi mostraran els canvis futurs que tinguin lloc en aquesta pàgina i la corres
'watchlist-options' => 'Opcions de la llista de seguiment',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => "S'està vigilant...",
-'unwatching' => "S'està desatenent...",
+'watching' => "S'està vigilant...",
+'unwatching' => "S'està desatenent...",
+'watcherrortext' => "S'ha produït un error en canviar els paràmetres de la vostra llista de seguiment de «$1».",
'enotif_mailer' => 'Sistema de notificació per correl de {{SITENAME}}',
'enotif_reset' => 'Marca totes les pàgines com a visitades',
@@ -2047,19 +2099,23 @@ Contacteu amb l\'editor:
correu: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-No rebreu més notificacions de futurs canvis si no visiteu la pàgina. També podeu canviar el mode de notificació de les pàgines que vigileu en la vostra llista de seguiment.
+No rebreu més notificacions de futurs canvis si no visiteu la pàgina.
+També podeu canviar el mode de notificació de les pàgines que vigileu en la vostra llista de seguiment.
- El servei de notificacions del projecte {{SITENAME}}
+ El servei de notificacions del projecte {{SITENAME}}
--
+Per a canviar les opcions de notificació per correu electrònic aneu a
+{{canonicalurl:{{#special:Preferences}}}}
+
Per a canviar les opcions de la vostra llista de seguiment aneu a
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Per eliminar la pàgina de la vostra llista de seguiment aneu a
$UNWATCHURL
Suggeriments i ajuda:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Elimina la pàgina',
@@ -2076,7 +2132,7 @@ Confirmeu que realment ho voleu fer, que enteneu les
conseqüències, i que el que esteu fent està d'acord amb la [[{{MediaWiki:Policy-url}}|política]] del projecte.",
'actioncomplete' => "S'ha realitzat l'acció de manera satisfactòria.",
'actionfailed' => "L'acció ha fallat",
-'deletedtext' => '«<nowiki>$1</nowiki>» ha estat esborrat.
+'deletedtext' => '«$1» ha estat esborrat.
Vegeu $2 per a un registre dels esborrats més recents.',
'deletedarticle' => 'ha esborrat «[[$1]]»',
'suppressedarticle' => "s'ha suprimit «[[$1]]»",
@@ -2130,7 +2186,7 @@ Vegeu la [[Special:ProtectedPages|llista de pàgines protegides]] per a la llist
'protect_expiry_invalid' => "Data d'expiració no vàlida",
'protect_expiry_old' => 'El temps de termini ja ha passat.',
'protect-unchain-permissions' => 'Desbloqueja les opcions de protecció avançades',
-'protect-text' => 'Aquí podeu visualitzar i canviar el nivell de protecció de la pàgina «<nowiki>$1</nowiki>». Assegureu-vos de seguir les polítiques existents.',
+'protect-text' => 'Aquí podeu visualitzar i canviar el nivell de protecció de la pàgina «$1». Assegureu-vos de seguir les polítiques existents.',
'protect-locked-blocked' => "No podeu canviar els nivells de protecció mentre estigueu bloquejats. Ací hi ha els
paràmetres actuals de la pàgina '''$1''':",
'protect-locked-dblock' => "No poden canviar-se els nivells de protecció a casa d'un bloqueig actiu de la base de dades.
@@ -2183,11 +2239,8 @@ Ací es troben els paràmetres actuals de la pàgina '''$1''':",
'viewdeletedpage' => 'Visualitza les pàgines eliminades',
'undeletepagetext' => "S'ha eliminat {{PLURAL:|la pàgina $1, però encara és a l'arxiu i pot ser restaurada|les pàgines $1, però encara són a l'arxiu i poden ser restaurades}}. Es Pot netejar l'arxiu periòdicament.",
'undelete-fieldset-title' => 'Restaura revisions',
-'undeleteextrahelp' => "Per a restaurar la pàgina sencera, deixeu totes les caselles sense seleccionar i
-cliqueu a '''''Restaura'''''.
-Per a realitzar una restauració selectiva, marqueu les caselles que corresponguin
-a les revisions que voleu recuperar, i feu clic a '''''Restaura'''''.
-Si cliqueu '''''Reinicia''''' es netejarà el camp de comentari i es desmarcaran totes les caselles.",
+'undeleteextrahelp' => "Per a restaurar l'historial sencer de la pàgina, deixeu totes les caselles sense seleccionar i feu clic a '''''{{int:undeletebtn}}'''''.
+Per a realitzar una restauració selectiva, marqueu les caselles que corresponguin a les revisions que voleu recuperar, i feu clic a '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '{{PLURAL:$1|Una revisió arxivada|$1 revisions arxivades}}',
'undeletehistory' => "Si restaureu la pàgina, totes les revisions seran restaurades a l'historial.
@@ -2231,9 +2284,12 @@ $1",
'undelete-show-file-submit' => 'Sí',
# Namespace form on various pages
-'namespace' => 'Espai de noms:',
-'invert' => 'Inverteix la selecció',
-'blanknamespace' => '(Principal)',
+'namespace' => 'Espai de noms:',
+'invert' => 'Inverteix la selecció',
+'tooltip-invert' => "Marqueu aquesta casella per ocultar els canvis a les pàgines de l'espai de noms seleccionat (i l'espai de noms associat si està activat)",
+'namespace_association' => 'Espai de noms associat',
+'tooltip-namespace_association' => "Marqueu aquesta casella per incloure l'espai de noms de discussió o de no discussió associat a l'espai de noms seleccionat",
+'blanknamespace' => '(Principal)',
# Contributions
'contributions' => "Contribucions de l'usuari",
@@ -2283,6 +2339,9 @@ Per més detalls, la última entrada del registre es mostra a continuació:',
'whatlinkshere-filters' => 'Filtres',
# Block/unblock
+'autoblockid' => 'Autoblocatge #$1',
+'block' => "Blocatge d'usuaris",
+'unblock' => "Desblocatge d'usuaris",
'blockip' => "Bloqueig d'usuaris",
'blockip-title' => "Bloquejar l'usuari",
'blockip-legend' => "Bloca l'usuari",
@@ -2292,7 +2351,6 @@ això només s'hauria de fer per prevenir el vandalisme, i
d'acord amb la [[{{MediaWiki:Policy-url}}|política del projecte]].
Empleneu el diàleg de sota amb un motiu específic (per exemple, citant
quines pàgines en concret estan sent vandalitzades).",
-'ipaddress' => 'Adreça IP:',
'ipadressorusername' => "Adreça IP o nom de l'usuari",
'ipbexpiry' => 'Venciment',
'ipbreason' => 'Motiu:',
@@ -2305,7 +2363,7 @@ quines pàgines en concret estan sent vandalitzades).",
** Conducta intimidatòria o hostil
** Abús de comptes d'usuari múltiples
** Nom d'usuari no acceptable",
-'ipbanononly' => 'Bloca només els usuaris anònims',
+'ipb-hardblock' => "Impedeix que els usuaris registrats puguin editar des d'aquesta adreça IP",
'ipbcreateaccount' => 'Evita la creació de comptes',
'ipbemailban' => "Evita que l'usuari enviï correu electrònic",
'ipbenableautoblock' => "Bloca l'adreça IP d'aquest usuari, i totes les subseqüents adreces des de les quals intenti registrar-se",
@@ -2316,12 +2374,15 @@ quines pàgines en concret estan sent vandalitzades).",
'ipbotherreason' => 'Altres motius o addicionals:',
'ipbhidename' => "Amaga el nom d'usuari de les edicions i llistes",
'ipbwatchuser' => "Vigila les pàgines d'usuari i de discussió de l'usuari",
-'ipballowusertalk' => "Permet que l'usuari editi la seva pàgina de discussió durant el bloqueig",
+'ipb-disableusertalk' => 'Impedeix que aquest usuari pugui modificar la seva pàgina de discussió mentre dura el blocatge',
'ipb-change-block' => "Torna a blocar l'usuari amb aquests paràmetres",
+'ipb-confirm' => 'Confirma el blocatge',
'badipaddress' => "L'adreça IP no té el format correcte.",
'blockipsuccesssub' => "S'ha blocat amb èxit",
'blockipsuccesstext' => "L'usuari «[[Special:Contributions/$1|$1]]» ha estat blocat.
<br />Vegeu la [[Special:IPBlockList|llista d'IP blocades]] per revisar els bloquejos.",
+'ipb-blockingself' => 'Esteu a punt de blocar-vos a vós mateix! Esteu segurs de voler-ho fer?',
+'ipb-confirmhideuser' => "Esteu a punt de bloquejar un usuari que està marcat amb l'opció «amaga l'usuari». Això suprimirà el seu nom a totes les llistes i registres. Esteu segurs de voler-ho fer?",
'ipb-edit-dropdown' => 'Edita les raons per a blocar',
'ipb-unblock-addr' => 'Desbloca $1',
'ipb-unblock' => 'Desbloca un usuari o una adreça IP',
@@ -2332,17 +2393,23 @@ quines pàgines en concret estan sent vandalitzades).",
l'accés a l'escriptura a una adreça IP o un usuari prèviament bloquejat.",
'ipusubmit' => 'Desbloca aquesta adreça',
'unblocked' => "S'ha desbloquejat l'{{GENDER:$1|usuari|usuària}} [[User:$1|$1]]",
+'unblocked-range' => '$1 ha estat desblocat',
'unblocked-id' => "S'ha eliminat el bloqueig de $1",
+'blocklist' => 'Usuaris blocats',
'ipblocklist' => 'Usuaris blocats',
'ipblocklist-legend' => 'Cerca un usuari blocat',
-'ipblocklist-username' => "Nom d'usuari o adreça IP:",
-'ipblocklist-sh-userblocks' => '$1 bloquejos de comptes',
-'ipblocklist-sh-tempblocks' => '$1 bloquejos temporals',
-'ipblocklist-sh-addressblocks' => "$1 bloquejos d'una sola adreça IP",
+'blocklist-userblocks' => 'Amaga bloquejos de compte',
+'blocklist-tempblocks' => 'Amaga bloquejos temporals',
+'blocklist-addressblocks' => "Amaga bloquejos d'una sola IP",
+'blocklist-timestamp' => 'Marca horària',
+'blocklist-target' => 'Usuari blocat',
+'blocklist-expiry' => 'Caduca',
+'blocklist-by' => 'Administrador del blocatge',
+'blocklist-params' => 'Paràmetres del blocatge',
+'blocklist-reason' => 'Motiu',
'ipblocklist-submit' => 'Cerca',
'ipblocklist-localblock' => 'Bloqueig local',
'ipblocklist-otherblocks' => 'Altres {{PLURAL:$1|bloquejos|bloquejos}}',
-'blocklistline' => '$1, $2 bloca $3 ($4)',
'infiniteblock' => 'infinit',
'expiringblock' => 'venç el $1 a $2',
'anononlyblock' => 'només usuari anònim',
@@ -2365,7 +2432,7 @@ Per més detalls, a sota es mostra el registre de bloquejos:',
Per més detalls, a sota es mostra el registre de supressions:',
'blocklogentry' => "ha blocat l'{{GENDER:$1|usuari|usuària}} [[$1]] per un període de: $2 $3",
'reblock-logentry' => 'canviades les opcions del blocatge a [[$1]] amb caducitat a $2, $3',
-'blocklogtext' => "Això és una relació de accions de bloqueig i desbloqueig. Les adreces IP bloquejades automàticament no apareixen. Vegeu la [[Special:IPBlockList|llista d'usuaris actualment bloquejats]].",
+'blocklogtext' => "Això és una relació de accions de bloqueig i desbloqueig. Les adreces IP bloquejades automàticament no apareixen. Vegeu la [[Special:BlockList|llista d'usuaris actualment bloquejats]].",
'unblocklogentry' => 'ha desblocat $1',
'block-log-flags-anononly' => 'només els usuaris anònims',
'block-log-flags-nocreate' => "s'ha desactivat la creació de comptes",
@@ -2379,9 +2446,9 @@ Per més detalls, a sota es mostra el registre de supressions:',
'ipb_expiry_temp' => "Els blocatges amb ocultació de nom d'usuari haurien de ser permanents.",
'ipb_hide_invalid' => "No s'ha pogut eliminar el compte; potser té massa edicions.",
'ipb_already_blocked' => '«$1» ja està blocat',
-'ipb-needreblock' => "== Usuari bloquejat ==
-L'usuari $1 ja està blocat. Voleu canviar-ne els paràmetres del blocatge?",
+'ipb-needreblock' => "L'usuari $1 ja està blocat. Voleu canviar-ne els paràmetres del blocatge?",
'ipb-otherblocks-header' => 'Altres {{PLURAL:$1|bloquejos|bloquejos}}',
+'unblock-hideuser' => "No podeu desblocar aquest usuari, perquè el seu nom d'usuari està ocult.",
'ipb_cant_unblock' => "Errada: No s'ha trobat el núm. ID de bloqueig $1. És possible que ja s'haguera desblocat.",
'ipb_blocked_as_range' => "Error: L'adreça IP $1 no està blocada directament i per tant no pot ésser desbloquejada. Ara bé, sí que ho està per formar part del rang $2 que sí que pot ser desblocat.",
'ip_range_invalid' => 'Rang de IP no vàlid.',
@@ -2419,6 +2486,7 @@ Recordeu-vos de [[Special:UnlockDB|treure el bloqueig]] quan hàgiu acabat el ma
'unlockdbsuccesstext' => "S'ha desbloquejat la base de dades del projecte {{SITENAME}}.",
'lockfilenotwritable' => 'No es pot modificar el fitxer de la base de dades de bloquejos. Per a blocar o desblocar la base de dades, heu de donar-ne permís de modificació al servidor web.',
'databasenotlocked' => 'La base de dades no està bloquejada.',
+'lockedbyandtime' => '(per $1 el $2 a les $3)',
# Move page
'move-page' => 'Mou $1',
@@ -2540,7 +2608,7 @@ En el darrer cas, podeu fer servir un enllaç com ara [[{{#Special:Export}}/{{Me
'allmessagesname' => 'Nom',
'allmessagesdefault' => 'Text per defecte',
'allmessagescurrent' => 'Text actual',
-'allmessagestext' => "Tot seguit hi ha una llista dels missatges del sistema que es troben a l'espai de noms ''MediaWiki''. La traducció genèrica d'aquests missatges no s'hauria de fer localment sinó a la traducció del programari MediaWiki. Si voleu ajudar-hi visiteu [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] i [http://translatewiki.net translatewiki.net].",
+'allmessagestext' => "Tot seguit hi ha una llista dels missatges del sistema que es troben a l'espai de noms ''MediaWiki''. La traducció genèrica d'aquests missatges no s'hauria de fer localment sinó a la traducció del programari MediaWiki. Si voleu ajudar-hi visiteu [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] i [//translatewiki.net translatewiki.net].",
'allmessagesnotsupportedDB' => "No es pot processar '''{{ns:special}}:Allmessages''' perquè la variable '''\$wgUseDatabaseMessages''' està desactivada.",
'allmessages-filter-legend' => 'Filtre',
'allmessages-filter' => "Filtra per l'estat de personalització:",
@@ -2686,9 +2754,7 @@ Permet afegir un motiu al resum.',
'common.js' => "/* Es carregarà per a tots els usuaris, i per a qualsevol pàgina, el codi JavaScript que hi haja després d'aquesta línia. */",
# Metadata
-'nodublincore' => "S'han inhabilitat les metadades RDF de Dublin Core del servidor.",
-'nocreativecommons' => "S'han inhabilitat les metadades RDF de Creative Commons del servidor.",
-'notacceptable' => 'El servidor wiki no pot oferir dades en un format que el client no pot llegir.',
+'notacceptable' => 'El servidor wiki no pot oferir dades en un format que el client no pot llegir.',
# Attribution
'anonymous' => 'Usuari{{PLURAL:$1| anònim|s anònims}} del projecte {{SITENAME}}',
@@ -2712,37 +2778,23 @@ Això deu ser degut per un enllaç a un lloc extern inclòs a la llista negra.',
'spam_blanking' => "Totes les revisions contenien enllaços $1, s'està deixant en blanc",
# Info page
-'infosubtitle' => 'Informació de la pàgina',
-'numedits' => "Nombre d'edicions (pàgina): $1",
-'numtalkedits' => "Nombre d'edicions (pàgina de discussió): $1",
-'numwatchers' => "Nombre d'usuaris que l'estan vigilant: $1",
-'numauthors' => "Nombre d'autors (pàgina): $1",
-'numtalkauthors' => "Nombre d'autors (pàgina de discussió): $1",
+'pageinfo-title' => 'Informació de «$1»',
+'pageinfo-header-edits' => 'Modificacions',
+'pageinfo-header-watchlist' => 'Llista de seguiment',
+'pageinfo-header-views' => 'Visites',
+'pageinfo-subjectpage' => 'Pàgina',
+'pageinfo-talkpage' => 'Pàgina de discussió',
+'pageinfo-watchers' => "Número d'usuaris que l'estan vigilant",
+'pageinfo-edits' => "Número d'edicions",
+'pageinfo-authors' => "Número d'autors diferents",
+'pageinfo-views' => 'Número de visites',
+'pageinfo-viewsperedit' => 'Visites per edició',
# Skin names
'skinname-standard' => 'Clàssic',
'skinname-nostalgia' => 'Nostàlgia',
'skinname-cologneblue' => 'Colònia blava',
-# Math options
-'mw_math_png' => 'Produeix sempre PNG',
-'mw_math_simple' => 'HTML si és molt simple, si no PNG',
-'mw_math_html' => 'HTML si és possible, si no PNG',
-'mw_math_source' => 'Deixa com a TeX (per a navegadors de text)',
-'mw_math_modern' => 'Recomanat per a navegadors moderns',
-'mw_math_mathml' => 'MathML si és possible (experimental)',
-
-# Math errors
-'math_failure' => "No s'ha pogut entendre",
-'math_unknown_error' => 'error desconegut',
-'math_unknown_function' => 'funció desconeguda',
-'math_lexing_error' => 'error de lèxic',
-'math_syntax_error' => 'error de sintaxi',
-'math_image_error' => 'Hi ha hagut una errada en la conversió a PNG. Verifiqueu la instaŀlació de latex i dvipng (o dvips, gs i convert).',
-'math_bad_tmpdir' => 'No ha estat possible crear el directori temporal de math o escriure-hi dins.',
-'math_bad_output' => "No ha estat possible crear el directori d'eixida de math o escriure-hi dins.",
-'math_notexvc' => "No s'ha trobat el fitxer executable ''texvc''; si us plau, vegeu math/README per a configurar-lo.",
-
# Patrolling
'markaspatrolleddiff' => 'Marca com a supervisat',
'markaspatrolledtext' => 'Marca la pàgina com a supervisada',
@@ -2778,22 +2830,25 @@ $1",
'nextdiff' => "Vés a l'edició següent →",
# Media information
-'mediawarning' => "'''Advertència''': Aquest fitxer podria contenir codi maliciós.
+'mediawarning' => "'''Advertència''': Aquest fitxer podria contenir codi maliciós.
Si l'executeu, podeu comprometre la seguretat del vostre sistema.",
-'imagemaxsize' => "Límit de mida d'imatges:<br />''(per a pàgines de descripció de fitxers)''",
-'thumbsize' => 'Mida de la miniatura:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pàgina|pàgines}}',
-'file-info' => 'mida: $1, tipus MIME: $2',
-'file-info-size' => '$1 × $2 píxels, mida del fitxer: $3, tipus MIME: $4',
-'file-nohires' => '<small>No hi ha cap versió amb una resolució més gran.</small>',
-'svg-long-desc' => 'fitxer SVG, nominalment $1 × $2 píxels, mida del fitxer: $3',
-'show-big-image' => 'Imatge en màxima resolució',
-'show-big-image-thumb' => "<small>Mida d'aquesta previsualització: $1 × $2 píxels</small>",
-'file-info-gif-looped' => 'embuclat',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|fotograma|fotogrames}}',
-'file-info-png-looped' => 'embuclat',
-'file-info-png-repeat' => "s'ha reproduït $1 {{PLURAL:$1|vegada|vegades}}",
-'file-info-png-frames' => '$1 {{PLURAL:$1|fotograma|fotogrames}}',
+'imagemaxsize' => "Límit de mida d'imatges:<br />''(per a pàgines de descripció de fitxers)''",
+'thumbsize' => 'Mida de la miniatura:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pàgina|pàgines}}',
+'file-info' => 'mida: $1, tipus MIME: $2',
+'file-info-size' => '$1 × $2 píxels, mida del fitxer: $3, tipus MIME: $4',
+'file-info-size-pages' => '$1 × $2 píxels, mida del fitxer: $3, tipus MIME: $4, $5 {{PLURAL:$5|pàgina|pàgines}}',
+'file-nohires' => '<small>No hi ha cap versió amb una resolució més gran.</small>',
+'svg-long-desc' => 'fitxer SVG, nominalment $1 × $2 píxels, mida del fitxer: $3',
+'show-big-image' => 'Imatge en màxima resolució',
+'show-big-image-preview' => "<small>Mida d'aquesta previsualització: $1.</small>",
+'show-big-image-other' => '<small>Altres resolucions: $1.</small>',
+'show-big-image-size' => '$1 × $2 píxels',
+'file-info-gif-looped' => 'embuclat',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|fotograma|fotogrames}}',
+'file-info-png-looped' => 'embuclat',
+'file-info-png-repeat' => "s'ha reproduït $1 {{PLURAL:$1|vegada|vegades}}",
+'file-info-png-frames' => '$1 {{PLURAL:$1|fotograma|fotogrames}}',
# Special:NewFiles
'newimages' => 'Galeria de nous fitxers',
@@ -2821,14 +2876,20 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
'metadata-help' => "Aquest fitxer conté informació addicional, probablement afegida per la càmera digital o l'escàner utilitzat per a crear-lo o digitalitzar-lo. Si s'ha modificat posteriorment, alguns detalls poden no reflectir les dades reals del fitxer modificat.",
'metadata-expand' => 'Mostra els detalls estesos',
'metadata-collapse' => 'Amaga els detalls estesos',
-'metadata-fields' => 'Els camps de metadades EXIF llistats en aquest missatge es mostraran en la pàgina de descripció de la imatge fins i tot quan la taula estigui plegada. La resta estaran ocults però es podran desplegar.
+'metadata-fields' => "Els camps de metadades de la imatge llistats en aquest missatge s'inclouran en la pàgina de descripció de la imatge fins i tot quan la taula estigui plegada. La resta estaran ocults però es podran desplegar.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Amplada',
@@ -2843,13 +2904,11 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
'exif-ycbcrpositioning' => 'Posició YCbCr',
'exif-xresolution' => 'Resolució horitzontal',
'exif-yresolution' => 'Resolució vertical',
-'exif-resolutionunit' => 'Unitats de les resolucions X i Y',
'exif-stripoffsets' => 'Ubicació de les dades de la imatge',
'exif-rowsperstrip' => 'Nombre de fileres per franja',
'exif-stripbytecounts' => 'Octets per franja comprimida',
'exif-jpeginterchangeformat' => 'Ancorament del JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Octets de dades JPEG',
-'exif-transferfunction' => 'Funció de transferència',
'exif-whitepoint' => 'Cromositat del punt blanc',
'exif-primarychromaticities' => 'Coordenada cromàtica del color primari',
'exif-ycbcrcoefficients' => "Quoficients de la matriu de transformació de l'espai colorimètric",
@@ -2868,7 +2927,6 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
'exif-compressedbitsperpixel' => "Mode de compressió d'imatge",
'exif-pixelydimension' => 'Amplada de la imatge',
'exif-pixelxdimension' => 'Alçada de la imatge',
-'exif-makernote' => 'Notes del fabricant',
'exif-usercomment' => "Comentaris de l'usuari",
'exif-relatedsoundfile' => "Fitxer d'àudio relacionat",
'exif-datetimeoriginal' => 'Dia i hora de generació de les dades',
@@ -2882,7 +2940,6 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
'exif-exposureprogram' => "Programa d'exposició",
'exif-spectralsensitivity' => 'Sensibilitat espectral',
'exif-isospeedratings' => 'Sensibilitat ISO',
-'exif-oecf' => 'Factor de conversió optoelectrònic',
'exif-shutterspeedvalue' => "APEX velocitat d'obturació",
'exif-aperturevalue' => 'APEX obertura',
'exif-brightnessvalue' => 'APEX brillantor',
@@ -2895,7 +2952,6 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
'exif-focallength' => 'Longitud focal de la lent',
'exif-subjectarea' => 'Enquadre del subjecte',
'exif-flashenergy' => 'Energia del flaix',
-'exif-spatialfrequencyresponse' => 'Resposta en freqüència espacial',
'exif-focalplanexresolution' => 'Resolució X del pla focal',
'exif-focalplaneyresolution' => 'Resolució Y del pla focal',
'exif-focalplaneresolutionunit' => 'Unitat de resolució del pla focal',
@@ -2904,7 +2960,6 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
'exif-sensingmethod' => 'Mètode de detecció',
'exif-filesource' => 'Font del fitxer',
'exif-scenetype' => "Tipus d'escena",
-'exif-cfapattern' => 'Patró CFA',
'exif-customrendered' => "Processament d'imatge personalitzat",
'exif-exposuremode' => "Mode d'exposició",
'exif-whitebalance' => 'Balanç de blancs',
@@ -2949,10 +3004,79 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
'exif-gpsareainformation' => "Nom de l'àrea GPS",
'exif-gpsdatestamp' => 'Data GPS',
'exif-gpsdifferential' => 'Correcció diferencial GPS',
+'exif-jpegfilecomment' => 'Comentari del fitxer JPEG',
+'exif-keywords' => 'Paraules clau',
+'exif-worldregioncreated' => 'Regió del món on la foto va ser presa',
+'exif-countrycreated' => 'País on la foto va ser presa',
+'exif-countrycodecreated' => 'Codi del país on la foto va ser presa',
+'exif-provinceorstatecreated' => 'Província o estat on la foto va ser presa',
+'exif-citycreated' => 'Ciutat on la foto va ser presa',
+'exif-sublocationcreated' => 'Sublocalització de la ciutat on la foto va ser presa',
+'exif-worldregiondest' => 'Regió del món que mostra',
+'exif-countrydest' => 'País que mostra',
+'exif-countrycodedest' => 'Codi del país que mostra',
+'exif-provinceorstatedest' => 'Província o estat que mostra',
+'exif-citydest' => 'Ciutat que mostra',
+'exif-sublocationdest' => 'Sublocalització de la ciutat que mostra',
'exif-objectname' => 'Títol abreujat',
+'exif-specialinstructions' => 'Instruccions especials',
+'exif-headline' => 'Encapçalament',
+'exif-credit' => 'Crèdit / Proveïdor',
+'exif-source' => 'Font',
+'exif-editstatus' => 'Estat de redacció de la imatge',
+'exif-urgency' => 'Urgència',
+'exif-fixtureidentifier' => "Nom de l'accessori",
+'exif-locationdest' => 'Ubicació representada',
+'exif-locationdestcode' => 'Codi de la ubicació que mostra',
+'exif-objectcycle' => 'Moment del dia al qual va destinat el mitjà de comunicació',
+'exif-contact' => 'Informació de contacte',
+'exif-writer' => 'Escriptor',
+'exif-languagecode' => 'Idioma',
+'exif-iimversion' => 'IIM versió',
+'exif-iimcategory' => 'Categoria',
+'exif-iimsupplementalcategory' => 'Categories suplementàries',
+'exif-datetimeexpires' => 'No utilitzar després',
+'exif-datetimereleased' => 'Data de llançament',
+'exif-originaltransmissionref' => 'Transmissió original del codi de la ubicació',
+'exif-identifier' => 'Identificador',
+'exif-lens' => 'Objectiu utilitzat',
+'exif-serialnumber' => 'Número de sèrie de la càmera',
+'exif-cameraownername' => 'Propietari de la càmera',
+'exif-label' => 'Etiqueta',
+'exif-datetimemetadata' => 'Data que la metadata ha estat modificada per última vegada',
+'exif-nickname' => "Nom informal de l'imatge",
+'exif-rating' => 'Valoració (sobre 5)',
+'exif-rightscertificate' => 'Certificat de gestió de drets',
+'exif-copyrighted' => "Estat dels drets d'autor",
+'exif-copyrightowner' => "Propietari dels drets d'autor",
+'exif-usageterms' => "Termes d'ús",
+'exif-webstatement' => "Declaració de drets d'autor en línia",
+'exif-originaldocumentid' => 'ID únic del document original',
+'exif-licenseurl' => "Direcció de llicències de drets d'autor",
+'exif-morepermissionsurl' => 'Alternativa informació de llicència',
+'exif-attributionurl' => 'Quan re-utilitzis aquest treball, si us plau posa un enllaç a',
+'exif-preferredattributionname' => 'Quan re-utilitzis aquest treball, si us plau posa un credit a',
+'exif-pngfilecomment' => 'Comentari del fitxer PNG',
+'exif-disclaimer' => 'Avís general',
+'exif-contentwarning' => 'Advertència de contingut',
+'exif-giffilecomment' => 'Comentari del fitxer GIF',
+'exif-intellectualgenre' => "Tipus d'article",
+'exif-subjectnewscode' => 'Codi del subjecte',
+'exif-scenecode' => "Codi d'escena IPTC",
+'exif-event' => 'Esdeveniment representat',
+'exif-organisationinimage' => 'Organització representada',
+'exif-personinimage' => 'Persona representada',
+'exif-originalimageheight' => 'Alçada de la imatge abans que fos retallada',
+'exif-originalimagewidth' => 'Amplada de la imatge abans que fos retallada',
# EXIF attributes
'exif-compression-1' => 'Sense compressió',
+'exif-compression-2' => 'Codificació CCITT Grup 3 longitud monodimensional de Huffman modificat',
+'exif-compression-3' => 'Codificació de fax CCITT grup 3',
+'exif-compression-4' => 'Codificació de fax CCITT grup 4',
+
+'exif-copyrighted-true' => "Sotmesa a drets d'autor",
+'exif-copyrighted-false' => 'de domini públic',
'exif-unknowndate' => 'Data desconeguda',
@@ -2971,6 +3095,8 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
'exif-xyresolution-i' => '$1 ppp',
'exif-xyresolution-c' => '$1 ppc',
+'exif-colorspace-65535' => 'Sense calibrar',
+
'exif-componentsconfiguration-0' => 'no existeix',
'exif-exposureprogram-0' => 'No definit',
@@ -3084,6 +3210,10 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
'exif-gpslongitude-e' => 'Longitud est',
'exif-gpslongitude-w' => 'Longitud oest',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metre|metres}} sobre el nivell del mar',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metre|metres}} sota el nivell del mar',
+
'exif-gpsstatus-a' => 'Mesura en curs',
'exif-gpsstatus-v' => 'Interoperabilitat de mesura',
@@ -3095,21 +3225,73 @@ La resta d'enllaços de la línia són les excepcions, és a dir, les pàgines o
'exif-gpsspeed-m' => 'Milles per hora',
'exif-gpsspeed-n' => 'Nusos',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Quilòmetres',
+'exif-gpsdestdistance-m' => 'Milles',
+'exif-gpsdestdistance-n' => 'Milles nàutiques',
+
+'exif-gpsdop-excellent' => 'Exceŀlent ($1)',
+'exif-gpsdop-good' => 'Bona ($1)',
+'exif-gpsdop-moderate' => 'Moderada ($1)',
+'exif-gpsdop-fair' => 'Justa ($1)',
+'exif-gpsdop-poor' => 'Pobra ($1)',
+
+'exif-objectcycle-a' => 'Només al matí',
+'exif-objectcycle-p' => 'Només al vespre',
+'exif-objectcycle-b' => 'Tant al matí com al vespre',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Direcció real',
'exif-gpsdirection-m' => 'Direcció magnètica',
+'exif-ycbcrpositioning-1' => 'Centrat',
+'exif-ycbcrpositioning-2' => 'co-localitzats',
+
+'exif-dc-contributor' => 'Coŀlaboradors',
+'exif-dc-coverage' => 'Abast espacial o temporal del contingut',
+'exif-dc-date' => 'Data(es)',
+'exif-dc-publisher' => 'Editorial',
+'exif-dc-relation' => 'Fitxers multimèdia relacionats',
+'exif-dc-rights' => 'Drets',
+'exif-dc-source' => "Fitxer d'origen",
+'exif-dc-type' => 'Tipus de contingut',
+
+'exif-rating-rejected' => 'Rebutjat',
+
+'exif-isospeedratings-overflow' => 'Superior a 65535',
+
+'exif-iimcategory-ace' => 'Art, cultura i entreteniment',
+'exif-iimcategory-clj' => 'Crim i dret',
+'exif-iimcategory-dis' => 'Desastres i accidents',
+'exif-iimcategory-fin' => 'Economia i negocis',
+'exif-iimcategory-edu' => 'Educació',
+'exif-iimcategory-evn' => 'Medi ambient',
+'exif-iimcategory-hth' => 'Salut',
+'exif-iimcategory-hum' => 'Interès humà',
+'exif-iimcategory-lab' => 'Treball',
+'exif-iimcategory-lif' => "Estil de vida i d'oci",
+'exif-iimcategory-pol' => 'Política',
+'exif-iimcategory-rel' => 'Religió i creences',
+'exif-iimcategory-sci' => 'Ciència i tecnologia',
+'exif-iimcategory-soi' => 'Qüestions socials',
+'exif-iimcategory-spo' => 'Esport',
+'exif-iimcategory-war' => 'Guerra, conflictes i disturbis',
+'exif-iimcategory-wea' => 'Meteorologia',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Baixa ($1)',
+'exif-urgency-high' => 'Alta ($1)',
+'exif-urgency-other' => "Prioritat definida per l'usuari ($1)",
+
# External editor support
'edit-externally' => 'Edita aquest fitxer fent servir una aplicació externa',
-'edit-externally-help' => '(Vegeu les [http://www.mediawiki.org/wiki/Manual:External_editors instruccions de configuració] per a més informació)',
+'edit-externally-help' => '(Vegeu les [//www.mediawiki.org/wiki/Manual:External_editors instruccions de configuració] per a més informació)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tots',
-'imagelistall' => 'totes',
-'watchlistall2' => 'totes',
-'namespacesall' => 'tots',
-'monthsall' => 'tots',
-'limitall' => 'tots',
+'watchlistall2' => 'totes',
+'namespacesall' => 'tots',
+'monthsall' => 'tots',
+'limitall' => 'tots',
# E-mail address confirmation
'confirmemail' => "Confirma l'adreça de correu electrònic",
@@ -3193,17 +3375,24 @@ $1",
'trackbackdeleteok' => "La referència s'ha eliminat amb èxit.",
# Delete conflict
-'deletedwhileediting' => "'''Avís''': S'ha eliminat aquesta pàgina després que haguéssiu començat a modificar-la!",
-'confirmrecreate' => "L'usuari [[User:$1|$1]] ([[User talk:$1|discussió]]) va eliminar aquesta pàgina que havíeu creat donant-ne el següent motiu:
+'deletedwhileediting' => "'''Avís''': S'ha eliminat aquesta pàgina després que haguéssiu començat a modificar-la!",
+'confirmrecreate' => "L'usuari [[User:$1|$1]] ([[User talk:$1|discussió]]) va eliminar aquesta pàgina que havíeu creat donant-ne el següent motiu:
: ''$2''
Confirmeu que realment voleu tornar-la a crear.",
-'recreate' => 'Torna a crear',
+'confirmrecreate-noreason' => "L'{{GENDER:$1|usuari|usuària}} [[User:$1|$1]] ([[User talk:$1|discussió]]) va esborrar aquesta pàgina després que la comencéssiu a modificar. Si us plau, confirmeu que realment voleu tornar-la a crear.",
+'recreate' => 'Torna a crear',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => "Voleu buidar la memòria cau d'aquesta pàgina?",
'confirm-purge-bottom' => "Purgar una pàgina força que hi aparegui la versió més actual i n'esborra la memòria cau.",
+# action=watch/unwatch
+'confirm-watch-button' => "D'acord",
+'confirm-watch-top' => 'Voleu afegir aquesta pàgina a la llista de seguiment?',
+'confirm-unwatch-button' => "D'acord",
+'confirm-unwatch-top' => 'Voleu treure aquesta pàgina de la llista de seguiment?',
+
# Multipage image navigation
'imgmultipageprev' => '↠pàgina anterior',
'imgmultipagenext' => 'pàgina següent →',
@@ -3246,7 +3435,7 @@ Proveu-ho amb la previsualització normal.',
'watchlistedit-normal-title' => 'Edita la llista de seguiment',
'watchlistedit-normal-legend' => 'Esborra els títols de la llista de seguiment',
'watchlistedit-normal-explain' => 'Els títols de les pàgines que estan en la vostra llista de seguiment es mostren a continuació.
-Per a eliminar algun element, marqueu el quadre del seu costat, i feu clic al botó «{{int:Watchlistedit-normal-submit}}». També podeu [[Special:Watchlist/raw|editar-ne la llista en text pla]].',
+Per a eliminar algun element, marqueu el quadre del seu costat, i feu clic al botó «{{int:Watchlistedit-normal-submit}}». També podeu [[Special:EditWatchlist/raw|editar-ne la llista en text pla]].',
'watchlistedit-normal-submit' => 'Elimina entrades',
'watchlistedit-normal-done' => "{{PLURAL:$1|1 títol s'ha|$1 títols s'han}} eliminat de la vostra llista de seguiment:",
'watchlistedit-raw-title' => 'Edita la llista de seguiment crua',
@@ -3254,7 +3443,7 @@ Per a eliminar algun element, marqueu el quadre del seu costat, i feu clic al bo
'watchlistedit-raw-explain' => "Els títols de la vostra llista de seguiment es mostren a continuació, i poden modificar-se afegint-los o suprimint-los de la llista;
un títol per línia.
En acabar, feu clic a «{{int:Watchlistedit-raw-submit}}».
-També podeu [[Special:Watchlist/edit|utilitzar l'editor estàndard]].",
+També podeu [[Special:EditWatchlist|utilitzar l'editor estàndard]].",
'watchlistedit-raw-titles' => 'Títols:',
'watchlistedit-raw-submit' => 'Actualitza la llista de seguiment',
'watchlistedit-raw-done' => "S'ha actualitzat la vostra llista de seguiment.",
@@ -3271,33 +3460,33 @@ També podeu [[Special:Watchlist/edit|utilitzar l'editor estàndard]].",
'duplicate-defaultsort' => 'Atenció: La clau d\'ordenació per defecte "$2" invalida l\'anterior clau "$1".',
# Special:Version
-'version' => 'Versió',
-'version-extensions' => 'Extensions instaŀlades',
-'version-specialpages' => 'Pàgines especials',
-'version-parserhooks' => "Extensions de l'analitzador",
-'version-variables' => 'Variables',
-'version-skins' => 'Aparences',
-'version-other' => 'Altres',
-'version-mediahandlers' => 'Connectors multimèdia',
-'version-hooks' => 'Lligams',
-'version-extension-functions' => "Funcions d'extensió",
-'version-parser-extensiontags' => "Etiquetes d'extensió de l'analitzador",
-'version-parser-function-hooks' => "Lligams funcionals de l'analitzador",
-'version-skin-extension-functions' => "Funcions d'extensió per l'aparença (skin)",
-'version-hook-name' => 'Nom del lligam',
-'version-hook-subscribedby' => 'Subscrit per',
-'version-version' => '(Versió $1)',
-'version-license' => 'Llicència',
-'version-poweredby-credits' => "El wiki funciona gràcies a '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'altres',
-'version-license-info' => "MediaWiki és programari lliure, podeu redistribuir-lo i/o modificar-lo sota els termes de la Llicència Pública General GNU publicada per la Free Software Foundation, ja sigui de la seva versió 2 o (a elecció vostra) qualsevol versió posterior.
+'version' => 'Versió',
+'version-extensions' => 'Extensions instaŀlades',
+'version-specialpages' => 'Pàgines especials',
+'version-parserhooks' => "Extensions de l'analitzador",
+'version-variables' => 'Variables',
+'version-antispam' => 'Prevenció spam',
+'version-skins' => 'Aparences',
+'version-other' => 'Altres',
+'version-mediahandlers' => 'Connectors multimèdia',
+'version-hooks' => 'Lligams',
+'version-extension-functions' => "Funcions d'extensió",
+'version-parser-extensiontags' => "Etiquetes d'extensió de l'analitzador",
+'version-parser-function-hooks' => "Lligams funcionals de l'analitzador",
+'version-hook-name' => 'Nom del lligam',
+'version-hook-subscribedby' => 'Subscrit per',
+'version-version' => '(Versió $1)',
+'version-license' => 'Llicència',
+'version-poweredby-credits' => "El wiki funciona gràcies a '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'altres',
+'version-license-info' => "MediaWiki és programari lliure, podeu redistribuir-lo i/o modificar-lo sota els termes de la Llicència Pública General GNU publicada per la Free Software Foundation, ja sigui de la seva versió 2 o (a elecció vostra) qualsevol versió posterior.
MediaWiki es distribueix en l'esperança de ser d'utilitat, però SENSE CAP GARANTIA; ni tan sols la garantia implícita de COMERCIALITZACIÓ o ADEQUACIÓ A UNA FINALITAT DETERMINADA. En trobareu més detalls a la Llicència Pública General GNU.
-Amb aquest programa heu d'haver rebut [{{SERVER}}{{SCRIPTPATH}}/COPYING una còpia de la Llicència Pública General GNU]; si no és així, adreceu-vos a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o bé [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html llegiu-la en línia].",
-'version-software' => 'Programari instaŀlat',
-'version-software-product' => 'Producte',
-'version-software-version' => 'Versió',
+Amb aquest programa heu d'haver rebut [{{SERVER}}{{SCRIPTPATH}}/COPYING una còpia de la Llicència Pública General GNU]; si no és així, adreceu-vos a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o bé [//www.gnu.org/licenses/old-licenses/gpl-2.0.html llegiu-la en línia].",
+'version-software' => 'Programari instaŀlat',
+'version-software-product' => 'Producte',
+'version-software-version' => 'Versió',
# Special:FilePath
'filepath' => 'Camí del fitxer',
@@ -3307,22 +3496,22 @@ Amb aquest programa heu d'haver rebut [{{SERVER}}{{SCRIPTPATH}}/COPYING una còp
Les imatges es mostren en plena resolució; altres tipus de fitxer s'inicien directament amb el seu programa associat.",
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Cerca fitxers duplicats',
-'fileduplicatesearch-summary' => "Cerca fitxers duplicats d'acord amb el seu valor de resum.
-
-Introduïu el nom del fitxer sense el prefix «{{ns:file}}:».",
-'fileduplicatesearch-legend' => 'Cerca duplicats',
-'fileduplicatesearch-filename' => 'Nom del fitxer:',
-'fileduplicatesearch-submit' => 'Cerca',
-'fileduplicatesearch-info' => '$1 × $2 píxels<br />Mida del fitxer: $3<br />Tipus MIME: $4',
-'fileduplicatesearch-result-1' => 'El fitxer «$1» no té cap duplicació idèntica.',
-'fileduplicatesearch-result-n' => 'El fitxer «$1» té {{PLURAL:$2|1 duplicació idèntica|$2 duplicacions idèntiques}}.',
+'fileduplicatesearch' => 'Cerca fitxers duplicats',
+'fileduplicatesearch-summary' => "Cerca fitxers duplicats d'acord amb el seu valor de resum.",
+'fileduplicatesearch-legend' => 'Cerca duplicats',
+'fileduplicatesearch-filename' => 'Nom del fitxer:',
+'fileduplicatesearch-submit' => 'Cerca',
+'fileduplicatesearch-info' => '$1 × $2 píxels<br />Mida del fitxer: $3<br />Tipus MIME: $4',
+'fileduplicatesearch-result-1' => 'El fitxer «$1» no té cap duplicació idèntica.',
+'fileduplicatesearch-result-n' => 'El fitxer «$1» té {{PLURAL:$2|1 duplicació idèntica|$2 duplicacions idèntiques}}.',
+'fileduplicatesearch-noresults' => "No s'ha trobat cap fitxer anomenat «$1».",
# Special:SpecialPages
'specialpages' => 'Pàgines especials',
'specialpages-note' => '----
* Pàgines especials normals.
-* <strong class="mw-specialpagerestricted">Pàgines especials restringides.</strong>',
+* <span class="mw-specialpagerestricted">Pàgines especials restringides.</span>
+* <span class="mw-specialpagecached">Pàgines especials amb memòria cau.</span>',
'specialpages-group-maintenance' => 'Informes de manteniment',
'specialpages-group-other' => 'Altres pàgines especials',
'specialpages-group-login' => 'Inici de sessió / Registre',
diff --git a/languages/messages/MessagesCdo.php b/languages/messages/MessagesCdo.php
index 7dc5c627..dcabc3e6 100644
--- a/languages/messages/MessagesCdo.php
+++ b/languages/messages/MessagesCdo.php
@@ -115,7 +115,6 @@ $messages = array(
'searcharticle' => 'Kó̤',
'history' => 'Hiĕk-miêng lĭk-sṳ̄',
'history_short' => 'Lĭk-sṳ̄',
-'info_short' => 'Séng-sék',
'printableversion' => 'KÅ̤ páh-éng bÄ“ng-buÅng',
'permalink' => 'Īng-giū lièng-giék',
'print' => 'Páh-éng',
@@ -236,7 +235,7 @@ Nṳ̄ gì dióng-hô̤ Ä«-gÄ­ng kÅ­i hÅ̤ lÄu. DÄng nṳ̄ â̤-sÄi siÅ­-gÄ
'loginsuccesstitle' => 'Láuk-diē sìng-gŭng',
'loginsuccess' => "'''Nṳ̄ hiêng-câi Ä«-gÄ­ng Ä« \"\$1\" gì sÄ­ng-hông láuk diÄ“ {{SITENAME}} lÄu.'''",
'nosuchuser' => 'Mò̤ cÅ«ng-kuÄng gì ê̤ṳng-hô-miàng "$1". GiÄ“ng-chă nṳ̄ gì pÄ­ng-siÄ, hĕ̤k-ciÄ kÅ­i 1 ciáh sÄ­ng dióng-hô̤.',
-'nosuchusershort' => 'Mò̤ cÅ«ng-kuÄng gì ê̤ṳng-hô-miàng "<nowiki>$1</nowiki>". GiÄ“ng-chă nṳ̄ gì pÄ­ng-siÄ',
+'nosuchusershort' => 'Mò̤ cÅ«ng-kuÄng gì ê̤ṳng-hô-miàng "$1". GiÄ“ng-chă nṳ̄ gì pÄ­ng-siÄ',
'wrongpassword' => 'MÄ­k-mÄ dâng gó̤. ChiÄng gái ché siÅh â.',
'wrongpasswordempty' => 'Muôi sṳ̆-Ä­k mÄ­k-mÄ. ChiÄng gái ché siÅh â.',
'passwordtooshort' => 'Nṳ̄ gì mÄ­k-mÄ kák dÅi gó̤. Có̤i kÄ«-mÄ diÅh ô $1 bÄ­k cê-mÅ̤.',
@@ -250,7 +249,7 @@ SiÅ­ gáu hâiu, chiÄng gái láuk diÄ“ siÅh làu.',
'accountcreatedtext' => '$1 gì ê̤ṳng-hô dióng-hô̤ Ä«-gÄ­ng châung-gióng lÄu.',
'loginlanguagelabel' => 'Ngṳ̄-ngiòng: $1',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Gô mÄ­k-mÄ:',
'newpassword' => 'SÄ­ng mÄ­k-mÄ:',
'retypenew' => 'Káuk-nêng sÄ­ng mÄ­k-mÄ:',
@@ -372,7 +371,6 @@ Siók-mìng: (dÄng) = gâe̤ng dék sÄ­ng bÄ“ng-buÅng bÄ«-piâng, (sèng) = gÃ
'prefs-edits' => 'SiÅ­-gÄi ché̤ṳ-só:',
'changepassword' => 'GÄi-biéng mÄ­k-mÄ',
'prefs-skin' => 'Puòi-hŭ',
-'prefs-math' => 'Só-hÅk',
'datedefault' => 'Mò̤ siék-diâng',
'prefs-datetime' => 'Nĭk-gĭ gâe̤ng sì-găng',
'prefs-personal' => 'Ê̤ṳng-hô cṳ̆-lâiu',
@@ -591,11 +589,9 @@ Siók-mìng: (dÄng) = gâe̤ng dék sÄ­ng bÄ“ng-buÅng bÄ«-piâng, (sèng) = gÃ
'mywatchlist' => 'NguÄi gì gáng-sê-dăng',
'nowatchlist' => 'Nṳ̄ gì gáng-sê-dăng gà̤-dēng mò̤ dèu-mĕ̤k.',
'watchnologin' => 'Mò̤ láuk diē',
-'addedwatch' => 'Gă-tiĕng gáu gáng-sê-dăng',
'addedwatchtext' => "\"[[:\$1]]\" Ä«-gÄ­ng gă-tiÄ•ng gáu nṳ̄ gì [[Special:Watchlist|gáng-sê-dăng]] lÄu. Â-nÄ­k, ciÄ hiÄ•k gâe̤ng Ä­ tÅ̤-lâung hiÄ•k gì gÄi-biéng cêu â̤ hiÄ“ng-sê diÅh hē̤-nē̤; bêng-chiÄ, nṳ̄ gáng-sê gì hiÄ•k găk \"[[Special:RecentChanges|Có̤i-gê̤ṳng gì gÄi-biéng]]\" dăng-dăng gà̤-dÄ“ng gì cê-tÄ̤ â̤ có̤ '''chÅ­-chÅ­-nuóh'''.
IÅk-sṳ̄ nṳ̄ buóh-siÅng téng nṳ̄ gáng-sê-dăng gà̤-dÄ“ng dṳ̀ lâi ciÄ hiÄ•k, áik kóng-cié-dèu (''sidebar'') siông gì \"ng-sÄi gáng-sê\", cêu â̤-sÄi lÄu.",
-'removedwatch' => 'Téng gáng-sê-dăng dṳ̀ lâi lÄu',
'removedwatchtext' => '"[[:$1]]" hiĕk ī-gĭng téng nṳ̄ gì gáng-sê-dăng gà̤-dēng chēng lâi gó̤.',
'watch' => 'Gáng-sê',
'watchthispage' => 'Gáng-sê ciÄ hiÄ•k',
@@ -618,7 +614,7 @@ IÅk-sṳ̄ nṳ̄ buóh-siÅng téng nṳ̄ gáng-sê-dăng gà̤-dÄ“ng dṳ̀
'historywarning' => 'Gīng-gó̤: Nṳ̄ buóh-ái chēng lâi gì hiĕk-miêng ô lĭk-sṳ̄:',
'confirmdeletetext' => 'Nṳ̄ cÅ«ng-bê ciÅng ciÄ hiÄ•k-miêng hĕ̤k ùng-giông lièng Ä­ găk só-gé̤ṳ-kó gì lÄ­k-sṳ̄ ciòng-buô chÄ“ng lâi. ChiÄng nṳ̄ káuk-nêng: nṳ̄ dÅng-cÄ­ng buóh siÅng cÅ«ng-kuÄng có̤, nṳ̄ liÄ“u-gÄi cÅ«ng-kuÄng có̤ gì hâiu-guÅ, bêng-chiÄ nṳ̄ cÅ«ng-kuÄng có̤ sê hù-hăk [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Cék-hèng sìng-gŭng',
-'deletedtext' => '"<nowiki>$1</nowiki>" Ä«-gÄ­ng ké̤ṳk chÄ“ng lâi go̤ lÄu. CÄ«-bÅng chÄ“ng hiÄ•k gì gé-liÅh dÅ­ gé diÅh $2.',
+'deletedtext' => '"$1" Ä«-gÄ­ng ké̤ṳk chÄ“ng lâi go̤ lÄu. CÄ«-bÅng chÄ“ng hiÄ•k gì gé-liÅh dÅ­ gé diÅh $2.',
'deletedarticle' => 'chēng lâi "[[$1]]"',
'dellogpage' => 'Chēng hiĕk nĭk-cé',
'dellogpagetext' => 'Â-dÄ̤ sê gé-liÅh cÄ«-bÅng chÄ“ng hiÄ•k gì dăng-dăng.',
@@ -705,7 +701,6 @@ Có̤i âu gì siÅ­-gÄi sê [[User:$3|$3]] ([[User talk:$3|TÅ̤-lâung]]) sÅ«
# Block/unblock
'blockip' => 'HÅ­ng-sÅ̤ ê̤ṳng-hô',
'blockiptext' => 'SÄi-ê̤ṳng â-dÄ̤ gì dăng-dăng lì hÅ­ng-sÅ̤ IP dê-cÄ« hĕ̤k-ciÄ ÃªÌ¤á¹³ng-hô-miàng gì siÄ guòng-âing. Cuòi nâ sê ôi lÄu huòng-cÄ« nè̤ng cáuk-ták wiki, bêng-chiÄ găi-dÅng hù-hăk [[{{MediaWiki:Policy-url}}|céng-cháik]]. ChiÄng diÅh â-dÄ̤ siÄ giâ hÅ­ng-sÅ̤ gì nguòng-Ä­ng (pÄ«-ṳ̀-gÅng, Ä«ng-ê̤ṳng ké̤ṳk cáuk-ták gì hiÄ•k-miêng).',
-'ipaddress' => 'IP dê-cī:',
'ipadressorusername' => 'IP dê-cī hĕ̤k ê̤ṳng-hô-miàng:',
'ipbexpiry' => 'Guó-gĭ:',
'ipbreason' => 'Nguòng-ĭng',
@@ -718,7 +713,6 @@ Có̤i âu gì siÅ­-gÄi sê [[User:$3|$3]] ([[User talk:$3|TÅ̤-lâung]]) sÅ«
** Có̤-hák / lièu-sê̤ṳ
** Luâng kÅ­i dÅ̤ dióng-hô̤
** Luâng kī ê̤ṳng-hô-miàng',
-'ipbanononly' => 'Nâ hÅ­ng-sÅ̤ mò̤-miàng ê̤ṳng-hô',
'ipbcreateaccount' => 'Huòng-cī kŭi dióng-hô̤',
'ipbemailban' => 'Huòng-cī ê̤ṳng-hô gié diêng-piĕ',
'ipbenableautoblock' => 'Cê̤ṳ-dông hÅ­ng-sÅ̤ ciÄ ÃªÌ¤á¹³ng-hô siÄ-ê̤ṳng gì IP dê-cÄ«',
@@ -739,7 +733,6 @@ Có̤i âu gì siÅ­-gÄi sê [[User:$3|$3]] ([[User talk:$3|TÅ̤-lâung]]) sÅ«
'unblocked' => '[[User:$1|$1]] Ä«-gÄ­ng ké̤ṳk gÄi-hÅ­ng lÄu',
'ipblocklist' => 'Ké̤ṳk hÅ­ng-sÅ̤ gì IP dê-cÄ« gâe̤ng ê̤ṳng-hô-miàng gì dăng-dăng',
'ipblocklist-legend' => 'TÅ̤ siÅh ciáh ké̤ṳk hÅ­ng-sÅ̤ gì ê̤ṳng-hô',
-'ipblocklist-username' => 'Ê̤ṳng-hô-miàng hĕ̤k IP dê-cī:',
'ipblocklist-submit' => 'Sìng-tÅ̤',
'infiniteblock' => 'Ä«ng-uÅng',
'anononlyblock' => 'nâ mò̤-miàng ê̤ṳng-hô',
@@ -809,10 +802,6 @@ Nâ cÅ«ng-kuÄng, nṳ̄ â̤-sÄi cê-gă iè-dông hĕ̤k-ciÄ sê hăk-biáng
'anonymous' => '{{SITENAME}} gì mò̤ miàng ê̤ṳng-hô.',
'lastmodifiedatby' => 'CiÄ hiÄ•k-miêng sê diÅh $2, $1, iù $3 có̤i-hâiu siÅ­-gÄi gì.',
-# Math errors
-'math_unknown_error' => 'muôi báik gì dâng',
-'math_unknown_function' => 'muôi báik hàng-só',
-
# Image deletion
'deletedrevision' => 'Ī-gÄ­ng chÄ“ng lâi gì bÄ“ng-buÅng $1.',
@@ -841,14 +830,12 @@ Nâ cÅ«ng-kuÄng, nṳ̄ â̤-sÄi cê-gă iè-dông hĕ̤k-ciÄ sê hăk-biáng
# External editor support
'edit-externally' => 'SÄi nguôi-buô tiàng-sê̤ṳ piÄ•ng-cék ciÄ Ã¹ng-giông',
-'edit-externally-help' => 'Chăng-kÅ̤ [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] liÄ“u-gÄi gáing sâ̤ séng-sék.',
+'edit-externally-help' => 'Chăng-kÅ̤ [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] liÄ“u-gÄi gáing sâ̤ séng-sék.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'sū-iū',
-'imagelistall' => 'cuòng-buô',
-'watchlistall2' => 'sū-iū',
-'namespacesall' => 'sū-iū',
-'monthsall' => 'gó̤-lòng nièng',
+'watchlistall2' => 'sū-iū',
+'namespacesall' => 'sū-iū',
+'monthsall' => 'gó̤-lòng nièng',
# E-mail address confirmation
'confirmemail' => 'Káuk-nêng diêng-piĕ dê-cī',
diff --git a/languages/messages/MessagesCe.php b/languages/messages/MessagesCe.php
index de33574c..5d49b420 100644
--- a/languages/messages/MessagesCe.php
+++ b/languages/messages/MessagesCe.php
@@ -237,8 +237,8 @@ $messages = array(
'tog-shownumberswatching' => 'Гайта декъашхойн терахь, агlо латийна болу шай тергаме могlам юкъа',
'tog-oldsig' => 'Хьалххьажар долучу куьгтаlорна:',
'tog-fancysig' => 'Шен вики-къаÑтаман куьгтаlдар (ша шех хьажориг йоцуш)',
-'tog-externaleditor' => 'Лелайан арахьара рéдаккхар (гlулкхдириг леррина ниÑйина хила йеза, [http://www.mediawiki.org/wiki/Manual:External_editors кхин дlа.])',
-'tog-externaldiff' => 'Лелабан арахьара диллагlарам башхо тарйо гlÐ¸Ñ€Ñ (гlулкхдириг леррина ниÑйина хила йеза, [http://www.mediawiki.org/wiki/Manual:External_editors кхин дlа.])',
+'tog-externaleditor' => 'Лелайан арахьара рéдаккхар (гlулкхдириг леррина ниÑйина хила йеза, [//www.mediawiki.org/wiki/Manual:External_editors кхин дlа.])',
+'tog-externaldiff' => 'Лелабан арахьара диллагlарам башхо тарйо гlÐ¸Ñ€Ñ (гlулкхдириг леррина ниÑйина хила йеза, [//www.mediawiki.org/wiki/Manual:External_editors кхин дlа.])',
'tog-showjumplinks' => 'Латайе гlодарна хьажоригаш «дехьа вала оцу»',
'tog-uselivepreview' => 'Лелайа чехка хьалха хьажа (JavaScript, муха ю хьажарна)',
'tog-forceeditsummary' => 'Дага даийта, нагахь ниÑйарх лаьцна чохь Ñзъйина Ñзахь',
@@ -336,14 +336,7 @@ $messages = array(
'index-category' => 'Меттигтерахьйо агlонаш',
'noindex-category' => 'Дlахьушйоцу агlонаш',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''Вики-белха гlÐ¸Ñ€Ñ Â«MediaWiki» кхочуш дика дlахlоттийна.'''",
-'mainpagedocfooter' => 'Викийца болх бан хаамаш карор бу Ñ…lокху чохь [http://meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 ниÑвохааман куьйгаллица].
-
-== Цхьаболу пайде гlирÑаш ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings ГlÐ¸Ñ€Ñ Ð½Ð¸Ñбан тарлушболу могlам];
-* [http://www.mediawiki.org/wiki/Manual:FAQ Сих Ñиха лушдолу хаттарш а жоьпаш оцу MediaWiki];
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Хаам бохьуьйту араÑларца башхонца керла MediaWiki].',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Цуьнах лаьцна',
'article' => 'Яззам',
@@ -395,10 +388,10 @@ $messages = array(
'history' => 'ИÑторе',
'history_short' => 'ИÑторе',
'updatedmarker' => 'Керла Ñккхина Ñо чуваьллачултlаьхьа',
-'info_short' => 'Хаам',
'printableversion' => 'Зорба туху варÑи',
'permalink' => 'Даиман йолу хьажориг',
'print' => 'Зорба тоха',
+'view' => 'Хьажа',
'edit' => 'ÐиÑйé',
'create' => 'Кхолла',
'editthispage' => 'ÐиÑйé Ñ…lара агlо',
@@ -406,6 +399,7 @@ $messages = array(
'delete' => 'Дlадайá',
'deletethispage' => 'Дlайайá хlара агlо',
'undelete_short' => 'Меттахlоттайé $1 {{PLURAL:$1|ниÑйинарг|ниÑйинарш|ниÑйинарш}}',
+'viewdeleted_short' => 'Хьажар {{PLURAL:$1|$1 дlадаьккхина нийÑдар|$1 дlадаьхна нийÑдарш|$1 дlадаьхна нийÑдарш}}',
'protect' => 'Гlаролла дé',
'protect_change' => 'хийца',
'protectthispage' => 'Гlаролла дé хlокху агlон',
@@ -492,6 +486,8 @@ $1',
'toc' => 'Чулацам',
'showtoc' => 'гайта',
'hidetoc' => 'дlайаккха',
+'collapsible-collapse' => 'къайла Ñккха',
+'collapsible-expand' => 'хьайаÑта',
'thisisdeleted' => 'Хьажа йа меттахlоттайé $1?',
'viewdeleted' => 'Хьалххьожи $1?',
'restorelink' => '{{PLURAL:$1|$1 дlайайина йолу ниÑйинарг|$1 дlайайина йолу ниÑйинарш|$1 дlайайина йолу ниÑйинарш}}',
@@ -564,6 +560,7 @@ $1',
'gotaccountlink' => 'Вовзийта хьой',
'createaccountmail' => 'хааман зlене хула',
'loginerror' => 'Гlалат ду декъашхо вовзарехь',
+'nocookiesforlogin' => '{{int:nocookieslogin}}',
'loginsuccesstitle' => 'Хьо вовзар хаз чакхдели',
'loginsuccess' => 'Хlинца ахьа болх бó оцу цlарца $1.',
'nosuchuser' => 'Декъашхо цlарца $1 воцаш ву.
@@ -575,7 +572,7 @@ $1',
'accountcreatedtext' => 'Кхоллина декъашхо дlавазвар $1.',
'loginlanguagelabel' => 'Мотт: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Ишар хийца',
'resetpass_text' => '<!-- Кхузахь Ñзъде хьай йоза -->',
'resetpass_header' => 'Жамlаш дlаÑзвеллачуьна ишар хийцар',
@@ -596,8 +593,6 @@ $1',
'extlink_tip' => 'Ðрахьа хьажориг (йиц ма йе Ñ…lотталушерг http://)',
'headline_sample' => 'Йозан корта',
'headline_tip' => 'Корта 2-гlа локхаллийца',
-'math_sample' => 'Каьчдинарг чудила кхузе',
-'math_tip' => 'Матlематlекхиа каьчйар (барам LaTeX)',
'nowiki_sample' => 'Чудиллийша кхузе барамхlоттонза йоза.',
'nowiki_tip' => 'Тергал ца бо вики-бáрамхlоттор',
'image_sample' => 'Example.jpg',
@@ -638,7 +633,7 @@ $1',
'noarticletext-nopermission' => 'Хlокх хан чохь кху агlонца йоза дац.
Шуьга далундерг [[Special:Search/{{PAGENAME}}|лахар ишта хьехош йолу цlе]] кхечу Ñззамашкахь,
йа <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} лаха оцуьнах терадерг кхечу тептаршкахь].</span>',
-'userpage-userdoesnotexist' => 'Ишта дlайазвар «$1» хlинца дац. Хьажа билгал, хьуна бакъалла лаьи кхолла йа хийцам ба хlокху агlон.',
+'userpage-userdoesnotexist' => 'Ишта дlайазвар «<nowiki>$1</nowiki>» хlинца дац. Хьажа билгал, хьуна бакъалла лаьи кхолла йа хийцам ба хlокху агlон.',
'updated' => '(Карла йаькхина)',
'note' => "'''Билгалдаккхар:'''",
'previewnote' => "'''Ð¥lара хьалх хьажар ду, йоза Ñ…lинца Ñзданза ду!'''",
@@ -786,7 +781,9 @@ $1',
'mypreferences' => 'ГlÐ¸Ñ€Ñ Ð½Ð¸Ñбан',
'changepassword' => 'Хийцамба ишарна',
'skin-preview' => 'Хьалха муха ю хьажа',
+'prefs-beta' => 'Гlоле таронаш',
'prefs-datetime' => 'Терахь а хан',
+'prefs-labs' => 'Муха ю хьажарна таронаш',
'prefs-personal' => 'Долахь болу хаамаш',
'prefs-rc' => 'Керла ниÑдарш',
'prefs-watchlist' => 'Тергаме могlам',
@@ -808,8 +805,7 @@ $1',
'gender-unknown' => 'Ñ…lоттийна Ñц',
'gender-male' => 'борша',
'gender-female' => 'Ñте',
-'prefs-help-email' => 'Кехат Ñздо зlе цlе цахlоттийча а Ñ…lум дац, иза оьшар ÑŽ, нагахь хьуна хьай ишар йицлахь.
-Цо атто бийра бу кхечу декъашхошна a хьан кху чура декъа агlонца хьега хаам бахьийта.',
+'prefs-help-email' => 'Кехат Ñздо зlен цlе цахlоттийча аъ Ñ…lумма дац, амма иза оьшар ÑŽ, нагахь хьуна хьай ишар йицлахь.',
'prefs-diffs' => 'Башхон варÑи',
# User rights
@@ -888,9 +884,6 @@ $1',
'filename' => 'Хlуман цlе',
'uploadwarning' => 'Дlахьедар',
'uploadedimage' => 'чуÑккхина «[[$1]]»',
-'upload-wasdeleted' => "'''Тергам бе: ахьа чуйаккха хьийзошйолу хlума, хьалхо дlайайана хlума ю.'''
-
-Юха а хьажа, баккъалла хьуна оьшуш йуй и хlумма. Лахахь далийна дlадайарна тéптар.",
'filename-prefix-blacklist' => '#<!-- битийша хlара могlа ша мабарра --> <pre>
# БухаÑиз шолгlа:
# * МаÑÑо, Ñаболчунтlийра йуьлалуш ерш «#» хуьлу хетаме дерг (могlа чекх балац)
@@ -1093,10 +1086,8 @@ PICT # тайп тайпан
'watchlist' => 'Тергаме могlам',
'mywatchlist' => 'Тергаме могlам',
'watchnologin' => 'Хьо вовзита веза гlирÑан',
-'addedwatch' => 'Юькъатоьхна тергаме могlамна',
'addedwatchtext' => 'Хlар агlо «[[:$1]]» тlетоьхна хьан [[Special:Watchlist|тидаме могlам чу]].
Тlаьхьабогlу хийцамаш Ñ…lокх агlонна а кхунца дозуш долу дийцаре агlо а дlаÑздийра ду кху могlамашкахь, ишта къаÑтина хирду уьш шуьрочу Ñлпашца Ñ…lокх агlон чохь [[Special:RecentChanges|керла хийцаме могlамашкахь]], бгlаьран га атту болуш.',
-'removedwatch' => 'ДlаÑккхина оцу тергаме могlам юкъар',
'removedwatchtext' => 'Ðгlо «[[:$1]]» дlаÑккхина йара хьан [[Special:Watchlist|тергаме могlам юкъар]].',
'watch' => 'Тидам бе',
'watchthispage' => 'Тергам бé хlокху агlон',
@@ -1123,7 +1114,7 @@ PICT # тайп тайпан
'delete-legend' => 'Дlадайáр',
'confirmdeletetext' => 'Хьан дехар ду Ñ…lара агlо ше бухци дlабайа аьлла (йа Ñурт) а маÑÑо цуьнан иÑторе оцу бух чура. Дехар до, бакъде, билгала хьайна иза лаахь, кхеташ хира ву хьо Ñ‚lаьхьа хир долу чун, иза деш ду ахьа бакъонца догlуш, вахьа дехкина долучу дакъанца [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Дешдерг кхочушди',
-'deletedtext' => '«<nowiki>$1</nowiki>» дlаÑккхина йара.
+'deletedtext' => '«$1» дlаÑккхина йара.
Хьажа. $2 хьажарна оцу тlаьхьара дlадайаран могlаме.',
'deletedarticle' => 'дlадайинарг «[[$1]]»',
'dellogpage' => 'Дlадайарш долу тéптар',
@@ -1145,7 +1136,7 @@ PICT # тайп тайпан
'protectexpiry' => 'Чекхйолу:',
'protect_expiry_invalid' => 'ÐийÑа йоцу хан гlаролла дlайаларехь.',
'protect_expiry_old' => 'Хан чаккхе — хьалхалера.',
-'protect-text' => "Кхузéхь хьо хьажало хийцалуш гlаролли локхалла оцу агlонашна '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Кхузéхь хьо хьажало хийцалуш гlаролли локхалла оцу агlонашна '''$1'''.",
'protect-locked-access' => "Хьан дlаÑзваларéхь тоъал бакъо Ñц гlароллийн локхаллéхь агlон хийцам бá. Дlадоьлху Ñ…lоттийнарш оцу агlонна '''$1''':",
'protect-cascadeon' => 'Хlара агlо гlароллийца ю, хlунд аьлча иза латийна {{PLURAL:$1|лахахьа гойтучу агlонца, цуьнца хlоттийна|лахахьа гойтучу агlоншца, цаьрца хlоттийна}} чахчарийца гlаролла. Хьога хийцалур ю гlаролли локхалла хlокху агlон, амма оцо хийцам бийра бац чахчарехь йолучу гlароллийна.',
'protect-default' => 'Гlаролла йоцуш',
@@ -1388,10 +1379,6 @@ PICT # тайп тайпан
# Spam protection
'spamprotectiontitle' => 'Совбиларна литтар',
-# Info page
-'numedits' => 'ÐиÑдарна терахь (Ñззам): $1',
-'numauthors' => 'Тейп тайпан куьгдай (Ñззам): $1',
-
# Skin names
'skinname-standard' => 'Лела ма Ñрра',
@@ -1400,12 +1387,11 @@ PICT # тайп тайпан
'nextdiff' => 'ТlÑхьа догlа ниÑдинарг →',
# Media information
-'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|агlо|агlонаш|агlонаш}}',
-'file-info-size' => '$1 × $2 Ñиртакх, Ñ…lуман барам: $3, MIME-тайп: $4',
-'file-nohires' => '<small>Кхи йоккха гlоле башхо Ñц.</small>',
-'svg-long-desc' => 'SVG-хlума, хlоттамца $1 × $2 цинташ, хlуман барам: $3',
-'show-big-image' => 'Сурт цlанал лаккхара бакъонца',
-'show-big-image-thumb' => '<small>Хьажарна барам: $1 × $2 цинташ</small>',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|агlо|агlонаш|агlонаш}}',
+'file-info-size' => '$1 × $2 Ñиртакх, Ñ…lуман барам: $3, MIME-тайп: $4',
+'file-nohires' => '<small>Кхи йоккха гlоле башхо Ñц.</small>',
+'svg-long-desc' => 'SVG-хlума, хlоттамца $1 × $2 цинташ, хlуман барам: $3',
+'show-big-image' => 'Сурт цlанал лаккхара бакъонца',
# Special:NewFiles
'newimages' => 'Керлачу хlумни галеларе',
@@ -1434,26 +1420,29 @@ PICT # тайп тайпан
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-datetime' => 'Хlума хийцина терахь а хан',
'exif-datetimeoriginal' => 'Дуьххьарлера терахь а хан',
-'exif-cfapattern' => 'Ð‘Ð¾Ñ Ð»Ð¸Ñ‚Ñ‚Ð°Ñ€ тайт',
'exif-scenetype-1' => 'Сурт даьккхина Ð½Ð¸Ñ Ð´ÑƒÑŒÑ…Ñ…ÑŒÐ°Ð»',
# External editor support
'edit-externally' => 'Рéдаккха хlокху хlуман, арахьара диллагlарам лелош',
-'edit-externally-help' => '(мадарра хьажа. оцу [http://www.mediawiki.org/wiki/Manual:External_editors куьйгалийца дlахlотторе])',
+'edit-externally-help' => '(мадарра хьажа. оцу [//www.mediawiki.org/wiki/Manual:External_editors куьйгалийца дlахlотторе])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'маÑÑо',
-'imagelistall' => 'маÑÑо',
-'watchlistall2' => 'маÑÑо',
-'namespacesall' => 'маÑÑо',
-'monthsall' => 'маÑÑо',
-'limitall' => 'маÑÑо',
+'watchlistall2' => 'маÑÑо',
+'namespacesall' => 'маÑÑо',
+'monthsall' => 'маÑÑо',
+'limitall' => 'маÑÑо',
# Trackbacks
'trackbackremove' => '([$1 дlадайá])',
diff --git a/languages/messages/MessagesCeb.php b/languages/messages/MessagesCeb.php
index a7567d2c..fdd276b4 100644
--- a/languages/messages/MessagesCeb.php
+++ b/languages/messages/MessagesCeb.php
@@ -40,27 +40,27 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'DoblengRedirekta' ),
+ 'Allpages' => array( 'TanangPanid' ),
'BrokenRedirects' => array( 'BuakngaRedirekta' ),
- 'Disambiguations' => array( 'Mga Pagklaro' ),
+ 'Categories' => array( 'Mga Kategoriya' ),
+ 'Contributions' => array( 'Mga Tampo' ),
'CreateAccount' => array( 'Paghimo\'gAkawnt' ),
- 'Preferences' => array( 'Mga Preperensya' ),
- 'Watchlist' => array( 'Gibantayan' ),
- 'Recentchanges' => array( 'Bag-ongGiusab' ),
- 'Upload' => array( 'Pagsumiter' ),
+ 'Disambiguations' => array( 'Mga Pagklaro' ),
+ 'DoubleRedirects' => array( 'DoblengRedirekta' ),
'Listfiles' => array( 'Listahan sa Imahen' ),
- 'Newimages' => array( 'Bag-ongImahen' ),
- 'Statistics' => array( 'Estadistika' ),
- 'Randompage' => array( 'Bisan-unsa', 'Bisan-unsangPanid' ),
'Lonelypages' => array( 'Nag-inusarangPanid', 'Sinagop nga Panid' ),
- 'Allpages' => array( 'TanangPanid' ),
- 'Contributions' => array( 'Mga Tampo' ),
- 'Categories' => array( 'Mga Kategoriya' ),
- 'Version' => array( 'Bersiyon' ),
+ 'Mycontributions' => array( 'AkongTampo' ),
'Mypage' => array( 'AkongPanid' ),
'Mytalk' => array( 'AkongHisgot' ),
- 'Mycontributions' => array( 'AkongTampo' ),
+ 'Newimages' => array( 'Bag-ongImahen' ),
+ 'Preferences' => array( 'Mga Preperensya' ),
+ 'Randompage' => array( 'Bisan-unsa', 'Bisan-unsangPanid' ),
+ 'Recentchanges' => array( 'Bag-ongGiusab' ),
'Search' => array( 'Pangita' ),
+ 'Statistics' => array( 'Estadistika' ),
+ 'Upload' => array( 'Pagsumiter' ),
+ 'Version' => array( 'Bersiyon' ),
+ 'Watchlist' => array( 'Gibantayan' ),
);
$messages = array(
@@ -190,14 +190,6 @@ $messages = array(
'category-file-count-limited' => 'Ang mosunod nga {{PLURAL:$1|payl|$1 ka mga payl}} anaa niining kategoryaha.',
'listingcontinuesabbrev' => 'pad.',
-'mainpagetext' => "'''Malamposon ang pag-instalar sa MediaWiki.'''",
-'mainpagedocfooter' => 'Konsultaha ang [http://meta.wikimedia.org/wiki/Help:Contents Giya sa mga gumagamit] alang sa impormasyon unsaon paggamit niining wiki nga software.
-
-== Pagsugod ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Listahan sa mga setting sa kompigurasyon]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ sa MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list sa mga release sa MediaWiki]',
-
'about' => 'Mahitungod',
'article' => 'Panid sa sulod',
'newwindow' => "(maabli sa laing ''window'')",
@@ -247,7 +239,6 @@ $messages = array(
'history' => 'Kaagi ning panid',
'history_short' => 'Kaagi',
'updatedmarker' => 'na-update sugod sa akong kataposang bisita',
-'info_short' => 'Impormasyon',
'printableversion' => 'Mapatik nga bersiyon',
'permalink' => 'Permanenteng sumpay',
'print' => 'I-print',
@@ -433,12 +424,11 @@ Palihog sulayi'g usab sa pipila ka minutos.",
'protectedinterface' => 'Ang kining panid mohatag og interface text para sa software, ug naka-lock aron mapugngan ang pag-abuso.',
'editinginterface' => "'''Pahibalo:''' Imo nang usbon ang panid nga gigamit sa paghatag og interface text para sa software.
Ang mga pag-usab niining panid moapekto sa appearance sa user interface nga alang sa ubang gumagamit.
-Para sa mga paghubad, palihog ikonsider ang paggamit sa [http://translatewiki.net/wiki/Main_Page?setlang=ceb translatewiki.net], ang MediaWiki localisation project.",
+Para sa mga paghubad, palihog ikonsider ang paggamit sa [//translatewiki.net/wiki/Main_Page?setlang=ceb translatewiki.net], ang MediaWiki localisation project.",
'sqlhidden' => '(nakatagong SQL query)',
'cascadeprotected' => 'Ang kining panid giprotektahan sa pag-usab tungod kay nahiapil kini sa mosunod nga {{PLURAL:$1|panid, nga|mga panid, nga}} giprotektahan pinaagi sa pag-turn on gamit ang "cascading" nga opsyon:
$2',
'namespaceprotected' => "Wala kay permiso nga mag-usab sa mga panid sa '''$1''' nga ngalang espasyo.",
-'customcssjsprotected' => 'Wala kay permiso nga usbon ang kining panid, tungod kay may sulod kini nga personal nga mga setting sa laing gumagamit.',
'ns-specialprotected' => 'Ang mga espesyal nga panid dili mausban.',
'titleprotected' => 'Ang kining titulo giprotektahan sa paghimo ni [[User:$1|$1]].
Ang rason nga gihatag mao ang "\'\'$2\'\'".',
@@ -491,7 +481,7 @@ Palihog i-enable kini, ug sulayi'g balik.",
'nosuchuser' => 'Walay gumagamit nga may pangalang "$1".
Case sensitive ang mga user name.
I-tsek ang imong espeling, o [[Special:UserLogin/signup|paghimo og bag-ong akawnt]].',
-'nosuchusershort' => 'Walay gumagamit nga may pangalang "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Walay gumagamit nga may pangalang "$1".
I-tsek ang imong espeling.',
'nouserspecified' => 'Kinahanglan mag-specify ka og username.',
'wrongpassword' => "Sayop nga pasword ang naentra.
@@ -510,8 +500,6 @@ Palihog sulayi'g usab.",
'extlink_tip' => 'Sumpay sa gawas (hinumdomi http:// prefix)',
'headline_sample' => 'Teksto sa hedlayn',
'headline_tip' => 'Level 2 nga hedlayn',
-'math_sample' => 'I-insert dinhi ang formula',
-'math_tip' => 'Mathematical formula (LaTeX)',
'nowiki_sample' => 'Dinhi ang dili-pormaton nga teksto',
'nowiki_tip' => 'Dili i-wikipormat',
'image_tip' => 'Embedded nga payl',
@@ -538,7 +526,7 @@ Kon miabot ka dinhi pinaagi sa usa ka sayop, palihog tuploka ang back nga tuplok
'noarticletext' => 'Sa kasamtangan walay sulod nga teksto ang kining panid.
Puyde nimong [[Special:Search/{{PAGENAME}}|pangitaon kining titulo sa panid]] sa ubang mga panid, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pangitaa ang related nga mga log],
o [{{fullurl:{{FULLPAGENAME}}|action=edit}} usba kining panid]</span>.',
-'userpage-userdoesnotexist' => 'Ang akawnt sa tiggamit nga "$1" wala marehistro. Palihug tan-awa kon buot nimong himoon/usbon ang kining panid.',
+'userpage-userdoesnotexist' => 'Ang akawnt sa tiggamit nga "<nowiki>$1</nowiki>" wala marehistro. Palihug tan-awa kon buot nimong himoon/usbon ang kining panid.',
'previewnote' => "'''Hinumdomi nga kini usa lang ka paunang tan-aw; wala pa matipigi ang imong giusab!'''",
'editing' => 'Nagausab sa $1',
'editingsection' => 'Nagausab sa $1 (bahin)',
@@ -781,7 +769,6 @@ Hinumdomi nga ang ilang indeks sa sulod sa {{SITENAME}} mahimong dugay-dugay na.
'changepassword' => 'Usba ang pasword',
'prefs-skin' => 'Panit',
'skin-preview' => 'Paunang tan-aw',
-'prefs-math' => 'Math',
'datedefault' => 'Walay preperensiya',
'prefs-datetime' => 'Petsa ug oras',
'prefs-personal' => 'Profile sa gumagamit',
@@ -805,8 +792,6 @@ Hinumdomi nga ang ilang indeks sa sulod sa {{SITENAME}} mahimong dugay-dugay na.
'columns' => 'Mga kolum:',
'searchresultshead' => 'Pangitaa',
'resultsperpage' => 'Mga hit matag panid:',
-'contextlines' => 'Mga linya matag hit:',
-'contextchars' => 'Mga konteksto matag linya:',
'stub-threshold' => 'Threshold para sa <a href="#" class="stub">stub link</a> formatting (bytes):',
'recentchangesdays' => 'Mga adlaw nga ipakita sa bag-ong giusab:',
'recentchangesdays-max' => 'Maximum $1 {{PLURAL:$1|ka adlaw|ka mga adlaw}}',
@@ -1014,10 +999,8 @@ Also see [[Special:WantedCategories|wanted categories]].',
# Watchlist
'watchlist' => 'Akong gibantayan',
'mywatchlist' => 'Akong gibantayan',
-'addedwatch' => 'Nadugang sa gibantayan',
'addedwatchtext' => "Ang panid \"[[:\$1]]\" nadugang na sa imong [[Special:Watchlist|gibantayan]].
Ang mga pag-usab puhon sa kining panid ug ang kaubang panid sa hisgot dinhi maitala, ug ang panid mopakita nga '''nakalugom''' sa [[Special:RecentChanges|talaan sa mga bag-ong pag-usab]] aron dali kini pilion.",
-'removedwatch' => 'Natangtang sa gibantayan',
'removedwatchtext' => 'Ang panid nga "[[:$1]]" natangtang na sa imong [[Special:Watchlist|gibantayan]].',
'watch' => 'Bantayi',
'watchthispage' => 'Bantayi kining panid',
@@ -1035,7 +1018,7 @@ Ang mga pag-usab puhon sa kining panid ug ang kaubang panid sa hisgot dinhi mait
'confirmdeletetext' => 'Imo nang papason ang panid kauban ang tanang kaagi niini.
Palihog ikompirma nga imo gyud ni buhaton, nga nakasabot ka sa mga puyde idangat niini, ug imo kini gibuhat sumala sa [[{{MediaWiki:Policy-url}}|palisiya]].',
'actioncomplete' => 'Nahuman na ang lihok',
-'deletedtext' => 'Ang "<nowiki>$1</nowiki>" napapas na.
+'deletedtext' => 'Ang "$1" napapas na.
Tan-awa ang $2 para sa rekord sa mga bag-ong napapas.',
'deletedarticle' => 'gitangtang "[[$1]]"',
'dellogpage' => 'Log sa pagtangtang',
@@ -1054,7 +1037,7 @@ Tan-awa ang $2 para sa rekord sa mga bag-ong napapas.',
'protectexpiry' => 'Matapos:',
'protect_expiry_invalid' => 'Dili puyde ang expiry time.',
'protect_expiry_old' => 'Ang expiry time miagi na.',
-'protect-text' => "Puyde nimo tan-awon ug usbon ang proteksyon dinhi para sa panid nga '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Puyde nimo tan-awon ug usbon ang proteksyon dinhi para sa panid nga '''$1'''.",
'protect-locked-access' => "Walay permiso ang imong akawnt nga mag-usab og level sa proteksyon sa panid.
Kini ang kasamtangan nga mga setting sa panid nga '''$1''':",
'protect-cascadeon' => 'Ang kining panid kasamtangang giprotektahan tungod kay nahiapil kini sa mosunod nga {{PLURAL:$1|panid, nga may|mga panid, nga may}} naka-turn on nga pabuhagay (cascading) nga proteksyon.
@@ -1227,11 +1210,10 @@ Puyde dugangan og rason sa mubong sugid.',
'nextdiff' => 'Mas bag-ong pag-usab →',
# Media information
-'file-info-size' => '$1 × $2 pixels, size sa payl: $3, MIME type: $4',
-'file-nohires' => '<small>Walay mas taas nga resolusyon.</small>',
-'svg-long-desc' => 'SVG nga payl, nominally $1 × $2 pixels, size sa payl: $3',
-'show-big-image' => 'Tibuok resolusyon',
-'show-big-image-thumb' => '<small>Size niining preview: $1 × $2 pixels</small>',
+'file-info-size' => '$1 × $2 pixels, size sa payl: $3, MIME type: $4',
+'file-nohires' => '<small>Walay mas taas nga resolusyon.</small>',
+'svg-long-desc' => 'SVG nga payl, nominally $1 × $2 pixels, size sa payl: $3',
+'show-big-image' => 'Tibuok resolusyon',
# Bad image list
'bad_image_list' => 'Ang pormat mao ang mosunod:
@@ -1254,11 +1236,17 @@ Ang uban default nga nakatago.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Usba kining payl gamit ang eksternal nga aplikasyon',
-'edit-externally-help' => '(Tan-awa ang [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] para sa dugang nga impormasyon)',
+'edit-externally-help' => '(Tan-awa ang [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] para sa dugang nga impormasyon)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tanan',
diff --git a/languages/messages/MessagesCh.php b/languages/messages/MessagesCh.php
index f1a43f18..53e00a27 100644
--- a/languages/messages/MessagesCh.php
+++ b/languages/messages/MessagesCh.php
@@ -162,7 +162,6 @@ $messages = array(
'history' => 'Historian påhina',
'history_short' => 'Historia',
'updatedmarker' => "maribisa desde i må'pos na bisita-hu",
-'info_short' => 'Infotmasion',
'printableversion' => 'Ribision imprentayon',
'permalink' => 'Inachetton petmanente',
'print' => 'Imprenta',
@@ -344,7 +343,7 @@ Pot fabot na'sedi ha'.",
'loginsuccess' => "'''Esta ma'log in hao gi {{SITENAME}}: \"\$1\".'''",
'nosuchuser' => 'TÃ¥ya\' na muna\'sesetbi as "$1".
Chek fan i dineletrea, pat fa\'tinas un kuenta nuebu.',
-'nosuchusershort' => 'TÃ¥ya\' na muna\'sesetbi as "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'TÃ¥ya\' na muna\'sesetbi as "$1".
Chek fan i dineletrea.',
'nouserspecified' => "Un nesita manayek i na'an muna'sesetbi.",
'wrongpassword' => "Lachi i password ni tinige'-mu. Pot fabot, chagi fan ta'lo.",
@@ -377,7 +376,7 @@ Ti para u na'hanao ni sigienti na inayek siha.",
'createaccount-title' => "Nina'huyong kuenta nu {{SITENAME}}",
'loginlanguagelabel' => 'Lengguahe: $1',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Password bihu:',
'newpassword' => 'Password nuebu:',
'retypenew' => "Na'tekla nuebu na password:",
@@ -394,8 +393,6 @@ Ti para u na'hanao ni sigienti na inayek siha.",
'extlink_tip' => 'Inachetton sanhiyong (munga mamalefa ni http://)',
'headline_sample' => "Tinige' i titulo mo'na",
'headline_tip' => "Titulon nibet mina'dos",
-'math_sample' => "Po'lo i fotmula mågi",
-'math_tip' => 'Fotmulan matematika (LaTeX)',
'nowiki_tip' => 'Iknora i estrokturan wiki',
'image_tip' => "Mana'halom na atkibu",
'media_tip' => 'Inachetton atkibu',
@@ -471,7 +468,7 @@ Buente ha' na guåha unos kuantos na muna'sesetbi ni ma u'usa i enao na IP.
An un muna'sesetbi taina'an hao ya manñiente hao na guåha na kommentu ti prisisu ni manadirihiyi hao, pot fabot [[Special:UserLogin|fa'tinas kuenta-mu pat log in]] para mansuhayi yinaoyao yan i otru na muna'sesetbi siha.''",
'noarticletext' => 'Tåya\' tinige\'-ña este na påhina gi este na momento.
Siña un [[Special:Search/{{PAGENAME}}|aligao este na titulon påhina]] gi halom otro na påhina siha, <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} tulaika este na påhina]</span>.',
-'userpage-userdoesnotexist' => 'Ti marehistra i kuenata muna\'sesetbi "$1". Pot fabot chek kao malago\' hao un fa\'tinas/tulaika este na påhina.',
+'userpage-userdoesnotexist' => 'Ti marehistra i kuenata muna\'sesetbi "<nowiki>$1</nowiki>". Pot fabot chek kao malago\' hao un fa\'tinas/tulaika este na påhina.',
'usercsspreview' => "'''Hasso fan na un ripapasa iyo-mu CSS muna'sesetbi, trabiha ti masåtba ha'!'''",
'userjspreview' => "'''Hasso fan na un chachagi/ripapasa iyo-mu JavaScript muna'sesetbi, trabiha ti masåtba ha'!'''",
'note' => "'''Fanapunta:'''",
@@ -697,7 +694,6 @@ Fanapunta na fana'an ti gus nuebu i listan-ñiha i guinahan {{SITENAME}}.",
'changepassword' => 'Tulaika password',
'prefs-skin' => 'LÃ¥ssas',
'skin-preview' => "Na'annok",
-'prefs-math' => 'Math',
'datedefault' => "TÃ¥ya' prifirensia",
'prefs-datetime' => 'Fecha yan ora',
'prefs-personal' => "Botta muna'sesetbi",
@@ -713,8 +709,6 @@ Fanapunta na fana'an ti gus nuebu i listan-ñiha i guinahan {{SITENAME}}.",
'columns' => 'Kolumna siha:',
'searchresultshead' => 'Aligao',
'resultsperpage' => 'Dinanche siha kada påhina:',
-'contextlines' => 'Liña siha kada dinanche:',
-'contextchars' => 'Guinaha kada liña:',
'recentchangesdays' => "Diha siha na para u na'annok gi i tinilaika gi halacha:",
'recentchangescount' => "Kunatu na tinilaika para u na'annok gi i tinilaika gi halacha:",
'savedprefs' => "Manmaasåtba i ga'ña-mu siha.",
@@ -908,10 +902,8 @@ Also see [[Special:WantedCategories|wanted categories]].',
# Watchlist
'watchlist' => 'Listan pinilan-hu',
'mywatchlist' => 'Listan pinilan-hu',
-'addedwatch' => "Mapo'lo gi listan pinilan",
'addedwatchtext' => "Mana'suha i påhina \"[[:\$1]]\" para iyo-mu [[Special:Watchlist|Listan pinilan]].
I tinilaika siha mo'na gi tiempo kontodu i påhinan kombetsasion siha para u fana'lista guihi, yan para u '''na'potpot''' i påhina gi halom [[Special:RecentChanges|i listan tinilaika gi halacha]] para un ayek ha' mas libianu.",
-'removedwatch' => "Mana'suha gi listan pinilan",
'removedwatchtext' => 'Mana\'suha i påhinan "[[:$1]]" gi [[Special:Watchlist|listan pinilan-mu]].',
'watch' => 'Pulan',
'watchthispage' => 'Pulan este na påhina',
@@ -929,7 +921,7 @@ I tinilaika siha mo'na gi tiempo kontodu i påhinan kombetsasion siha para u fan
'confirmdeletetext' => "Para un na'suha i påhina kontodu i historia-ña.
Konfotme fan na este i malago'-mu, na kumonprende hao hiniyong-ña, yan tumattiyi [[{{MediaWiki:Policy-url}}|i polisia]] ni bidada-mu.",
'actioncomplete' => 'Funhayan i aksion',
-'deletedtext' => 'Mana\'suha "<nowiki>$1</nowiki>".
+'deletedtext' => 'Mana\'suha "$1".
Chek $2 para i historian muna\'suha gi halacha.',
'deletedarticle' => 'Mana\'suha "[[$1]]"',
'dellogpage' => "Historian muna'suha",
@@ -947,7 +939,7 @@ Chek $2 para i historian muna\'suha gi halacha.',
'protectexpiry' => 'Munhåyan:',
'protect_expiry_invalid' => 'Lachi i oran funhåyan.',
'protect_expiry_old' => 'Esta maloffan i oran funhåyan.',
-'protect-text' => "Siña un tulaika i nibet proteksion ni påhina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Siña un tulaika i nibet proteksion ni påhina '''$1'''.",
'protect-locked-access' => "Ti nahong i petmisu kuenta-mu tumulaika nibet proteksion ni påhina siha.
Estague taiguini i nibet i påhina '''$1''':",
'protect-fallback' => 'Afuetsas "$1" na petmisu',
@@ -1103,23 +1095,15 @@ Ayek fan otru nå'an-ña.",
'tooltip-compareselectedversions' => "Na'annok i diferensia siha gi i dos ma'ayek na tinilaika ni påhina.",
'tooltip-watch' => "Po'lo i påhina gi listan pinilan-mu",
-# Math errors
-'math_failure' => 'Lachi ma parse',
-'math_unknown_error' => "linachi ti matungo'",
-'math_unknown_function' => "fonksion ti matungo'",
-'math_lexing_error' => 'linachi lexing',
-'math_syntax_error' => 'linachi syntax',
-
# Browsing diffs
'previousdiff' => "↠I må'pos na dif",
'nextdiff' => "Mamaila' na dif →",
# Media information
-'file-info-size' => '$1 × $2 na pixel, mineddong atkibu: $3, MIME klåsi: $4',
-'file-nohires' => "<small>TÃ¥ya' mas takhilo' na risolusion.</small>",
-'svg-long-desc' => 'Atkibu SVG, $1 × $2 na pixels, mineddong atkibu: $3',
-'show-big-image' => 'Magåhet mineddong-ña',
-'show-big-image-thumb' => '<small>Mineddong i ripasu: $1 × $2 pixels</small>',
+'file-info-size' => '$1 × $2 na pixel, mineddong atkibu: $3, MIME klåsi: $4',
+'file-nohires' => "<small>TÃ¥ya' mas takhilo' na risolusion.</small>",
+'svg-long-desc' => 'Atkibu SVG, $1 × $2 na pixels, mineddong atkibu: $3',
+'show-big-image' => 'Magåhet mineddong-ña',
# Special:NewFiles
'newimages' => 'Galarian atkibu mannuebu siha',
@@ -1139,7 +1123,7 @@ Ti mantattiyi i areklo ni sigienten ina'chetton siha gi mismo liña, i.e. i påh
# External editor support
'edit-externally' => 'Tulaika i atkibu yan un aplikasion sanhiyong',
-'edit-externally-help' => 'HÃ¥nao para [http://www.mediawiki.org/wiki/Manual:External_editors i plantan chinachalani] para mas infotmasion.',
+'edit-externally-help' => 'HÃ¥nao para [//www.mediawiki.org/wiki/Manual:External_editors i plantan chinachalani] para mas infotmasion.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'todu',
diff --git a/languages/messages/MessagesCkb.php b/languages/messages/MessagesCkb.php
index 3d605228..ad3793bc 100644
--- a/languages/messages/MessagesCkb.php
+++ b/languages/messages/MessagesCkb.php
@@ -20,12 +20,6 @@ $linkPrefixExtension = true;
$fallback8bitEncoding = 'windows-1256';
$rtl = true;
-$defaultUserOptionOverrides = array(
- # Swap sidebar to right side by default
- 'quickbar' => 2,
- # Underlines seriously harm legibility. Force off:
- 'underline' => 0,
-);
$digitTransformTable = array(
'0' => 'Ù ', # &#x0660;
@@ -75,66 +69,66 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ڕەوانکەرە_دووپاتکراوەکان' ),
+ 'Activeusers' => array( 'بەکارھێنەرە_چالاکەکان' ),
+ 'Allmessages' => array( 'ھەموو_پەیامەکان' ),
+ 'Allpages' => array( 'ھەموو_پەڕەکان' ),
+ 'Ancientpages' => array( 'پەڕە_کۆنەکان' ),
'BrokenRedirects' => array( 'ڕەوانکەرە_شکاوەکان' ),
- 'Userlogin' => array( 'چوونەژوورەوەی_بەکارھێنەر' ),
+ 'Categories' => array( 'پۆلەکان' ),
+ 'ChangePassword' => array( 'تێپەڕوشەگۆڕان،_تێپەڕەوشە_ڕێکخستنەوە' ),
+ 'Confirmemail' => array( 'بڕواکردن_ئیمەیل' ),
+ 'Contributions' => array( 'بەشدارییەکان' ),
'CreateAccount' => array( 'ھەژمار_دروستکردن' ),
- 'Preferences' => array( 'ھەڵبژاردەکان' ),
- 'Watchlist' => array( 'لیستی_چاودێری' ),
- 'Recentchanges' => array( 'دوایین_گۆڕانکارییەکان' ),
- 'Upload' => array( 'بارکردن' ),
+ 'Deadendpages' => array( 'پەڕە_بەربەستراوەکان' ),
+ 'DoubleRedirects' => array( 'ڕەوانکەرە_دووپاتکراوەکان' ),
+ 'Emailuser' => array( 'ئیمەیل_بەکارھێنەر' ),
+ 'Export' => array( 'ھەناردن' ),
+ 'Fewestrevisions' => array( 'کەمترین__پێداچوونەوەکان' ),
+ 'Listadmins' => array( 'لیستی_بەڕێوبەران' ),
+ 'Listbots' => array( 'لیستی_بۆتەکان' ),
'Listfiles' => array( 'لیستی_پەڕگەکان' ),
- 'Newimages' => array( 'پەڕگە_نوێکان' ),
'Listusers' => array( 'لیستی_بەکارھێنەران' ),
- 'Statistics' => array( 'ئامارەکان' ),
- 'Randompage' => array( 'ھەڵکەوت،پەڕەی_بە_ھەرمەکی' ),
+ 'Log' => array( 'Ù„Û†Ú¯' ),
'Lonelypages' => array( 'پەڕە_تاکەکان،_پەڕە_ھەتیوکراوەکان' ),
- 'Uncategorizedpages' => array( 'پەڕە_پۆلێننەکراوەکان' ),
- 'Uncategorizedcategories' => array( 'پۆلە_پۆلێننەکراوەکان' ),
- 'Uncategorizedimages' => array( 'پەڕگە_پۆلێننەکراوەکان،_وێنە_پۆلێننەکراوەکان' ),
- 'Uncategorizedtemplates' => array( 'داڕێژە_پۆلێننەکراوەکان' ),
- 'Unusedcategories' => array( 'پۆلە_بەکارنەھێنراوەکان' ),
- 'Unusedimages' => array( 'پەڕگە_بەکارنەھێنراوەکان،_وێنە_بەکارنەھێنراوەکان' ),
- 'Wantedpages' => array( 'پەڕە_پێویستەکان،_بەستەرە_شکاوەکان' ),
- 'Wantedcategories' => array( 'پۆلە_پێویستەکان' ),
- 'Wantedfiles' => array( 'پەڕگە_پێویستەکان' ),
- 'Wantedtemplates' => array( 'داڕێژە_پێویستەکان' ),
+ 'Longpages' => array( 'پەڕە_درێژەکان' ),
+ 'Mostcategories' => array( 'زیاترین_پۆلەکان' ),
+ 'Mostimages' => array( 'پەڕگەکانی_زیاترین_بەستەردراون،_زیاترین_پەڕگەکان،_زیاترین_وێنەکان' ),
'Mostlinked' => array( 'پەڕەکانی_زیاترین_بەستەردراون،_زیاترین_بەستەردراون' ),
'Mostlinkedcategories' => array( 'پۆلەکانی_زیاترین_بەستەردراون،_پۆلەکانی_زیاترین_بەکارھێنراون' ),
'Mostlinkedtemplates' => array( 'داڕێژەکانی_زیاترین_بەستەردراون،_داڕێژەکانی_زیاترین_بەکارھێنراون' ),
- 'Mostimages' => array( 'پەڕگەکانی_زیاترین_بەستەردراون،_زیاترین_پەڕگەکان،_زیاترین_وێنەکان' ),
- 'Mostcategories' => array( 'زیاترین_پۆلەکان' ),
'Mostrevisions' => array( 'زیاترین_پێداچوونەوەکان' ),
- 'Fewestrevisions' => array( 'کەمترین__پێداچوونەوەکان' ),
- 'Shortpages' => array( 'پەڕە‌_کورتەکان' ),
- 'Longpages' => array( 'پەڕە_درێژەکان' ),
- 'Newpages' => array( 'پەڕە_نوێکان' ),
- 'Ancientpages' => array( 'پەڕە_کۆنەکان' ),
- 'Deadendpages' => array( 'پەڕە_بەربەستراوەکان' ),
- 'Protectedpages' => array( 'پەڕە_پارێزراوەکان' ),
- 'Protectedtitles' => array( 'بابەتە_پارێزراوەکان' ),
- 'Allpages' => array( 'ھەموو_پەڕەکان' ),
- 'Unblock' => array( 'کردنەوە' ),
- 'Specialpages' => array( 'پەڕە_تایبەتەکان' ),
- 'Contributions' => array( 'بەشدارییەکان' ),
- 'Emailuser' => array( 'ئیمەیل_بەکارھێنەر' ),
- 'Confirmemail' => array( 'بڕواکردن_ئیمەیل' ),
- 'Whatlinkshere' => array( 'چی_بەستەری_داوە_بێرە' ),
'Movepage' => array( 'پەڕە_گواستنەوە' ),
- 'Categories' => array( 'پۆلەکان' ),
- 'Export' => array( 'ھەناردن' ),
- 'Version' => array( 'وەشان' ),
- 'Allmessages' => array( 'ھەموو_پەیامەکان' ),
- 'Log' => array( 'Ù„Û†Ú¯' ),
+ 'Mycontributions' => array( 'بەشدارییەکانم' ),
'Mypage' => array( 'Ù¾Û•Ú•Û•Ú©Û•Ù…' ),
'Mytalk' => array( 'لێدوانەکانم' ),
- 'Mycontributions' => array( 'بەشدارییەکانم' ),
- 'Listadmins' => array( 'لیستی_بەڕێوبەران' ),
- 'Listbots' => array( 'لیستی_بۆتەکان' ),
+ 'Newimages' => array( 'پەڕگە_نوێکان' ),
+ 'Newpages' => array( 'پەڕە_نوێکان' ),
'Popularpages' => array( 'پەڕە_ناودارەکان' ),
+ 'Preferences' => array( 'ھەڵبژاردەکان' ),
+ 'Protectedpages' => array( 'پەڕە_پارێزراوەکان' ),
+ 'Protectedtitles' => array( 'بابەتە_پارێزراوەکان' ),
+ 'Randompage' => array( 'ھەڵکەوت،پەڕەی_بە_ھەرمەکی' ),
+ 'Recentchanges' => array( 'دوایین_گۆڕانکارییەکان' ),
'Search' => array( 'گەڕان' ),
- 'Resetpass' => array( 'تێپەڕوشەگۆڕان،_تێپەڕەوشە_ڕێکخستنەوە' ),
- 'Activeusers' => array( 'بەکارھێنەرە_چالاکەکان' ),
+ 'Shortpages' => array( 'پەڕە‌_کورتەکان' ),
+ 'Specialpages' => array( 'پەڕە_تایبەتەکان' ),
+ 'Statistics' => array( 'ئامارەکان' ),
+ 'Unblock' => array( 'کردنەوە' ),
+ 'Uncategorizedcategories' => array( 'پۆلە_پۆلێننەکراوەکان' ),
+ 'Uncategorizedimages' => array( 'پەڕگە_پۆلێننەکراوەکان،_وێنە_پۆلێننەکراوەکان' ),
+ 'Uncategorizedpages' => array( 'پەڕە_پۆلێننەکراوەکان' ),
+ 'Uncategorizedtemplates' => array( 'داڕێژە_پۆلێننەکراوەکان' ),
+ 'Unusedcategories' => array( 'پۆلە_بەکارنەھێنراوەکان' ),
+ 'Unusedimages' => array( 'پەڕگە_بەکارنەھێنراوەکان،_وێنە_بەکارنەھێنراوەکان' ),
+ 'Upload' => array( 'بارکردن' ),
+ 'Userlogin' => array( 'چوونەژوورەوەی_بەکارھێنەر' ),
+ 'Version' => array( 'وەشان' ),
+ 'Wantedcategories' => array( 'پۆلە_پێویستەکان' ),
+ 'Wantedfiles' => array( 'پەڕگە_پێویستەکان' ),
+ 'Wantedpages' => array( 'پەڕە_پێویستەکان،_بەستەرە_شکاوەکان' ),
+ 'Wantedtemplates' => array( 'داڕێژە_پێویستەکان' ),
+ 'Watchlist' => array( 'لیستی_چاودێری' ),
+ 'Whatlinkshere' => array( 'چی_بەستەری_داوە_بێرە' ),
);
$magicWords = array(
@@ -180,8 +174,8 @@ $messages = array(
'tog-shownumberswatching' => 'ژمارەی بەکارھێنەرە چاودێڕەکان نیشان بدە',
'tog-oldsig' => 'واژۆی ئێستا:',
'tog-fancysig' => 'وەک ویکی‌دەق لەگەڵ واژۆ مامەڵەبکە (بێ بەستەرێکی خۆکار)',
-'tog-externaleditor' => 'دەستکاریکەری دەرەکی بەکاربێنە Ù„Û• حاڵەتی دیÙاڵتدا (تەنھا بۆ شارەزایان، ڕێکخستنی تایبەتی پێویستە Ù„Û• سەر کۆمپیوتەرەکەت [http://www.mediawiki.org/wiki/Manual:External_editors زانیاریی زۆرتر.])',
-'tog-externaldiff' => 'Ù„Û• پرۆگرامێکی دەرەکی بۆ بینینی جیاوازیەکان Ú©Û•ÚµÚ© وەرگرە Ù„Û• دیÙاڵتدا (تەنها بۆ شارەزایان، ڕێکخستنی تایبەتی پێویستە Ù„Û• سەر کۆمپیوتەرەکەت. [http://www.mediawiki.org/wiki/Manual:External_editors زانیاریی زۆرتر.])',
+'tog-externaleditor' => 'دەستکاریکەری دەرەکی بەکاربێنە Ù„Û• حاڵەتی دیÙاڵتدا (تەنھا بۆ شارەزایان، ڕێکخستنی تایبەتی پێویستە Ù„Û• سەر کۆمپیوتەرەکەت [//www.mediawiki.org/wiki/Manual:External_editors زانیاریی زۆرتر.])',
+'tog-externaldiff' => 'Ù„Û• پرۆگرامێکی دەرەکی بۆ بینینی جیاوازیەکان Ú©Û•ÚµÚ© وەرگرە Ù„Û• دیÙاڵتدا (تەنها بۆ شارەزایان، ڕێکخستنی تایبەتی پێویستە Ù„Û• سەر کۆمپیوتەرەکەت. [//www.mediawiki.org/wiki/Manual:External_editors زانیاریی زۆرتر.])',
'tog-showjumplinks' => 'ڕێگە بدە بۆ بەستەرەکانی «{{int:jumpto}}»',
'tog-uselivepreview' => 'لە پێشبینینی زیندوو کەڵک وەرگرە (جاڤاسکریپت پێویستە) (تاقیکاری‌)',
'tog-forceeditsummary' => 'ئەگەر پوختەی دەستکاریم نەنووسی پێم بڵێ',
@@ -276,14 +270,7 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|ئەم هاوپۆلە تەنها ئەم پەڕگەی لەخۆ گرتووە.|ئەم‌ {{PLURAL:$1|پەڕگەیە}} کە بەشێکە لە هەموو $2پەڕگەی ئەم هاوپۆلە‌ دەیبینی.}}',
'category-file-count-limited' => 'ئەم {{PLURAL:$1|پەڕگە|پەڕگانە}} لەم هاوپۆلەدایە.',
'listingcontinuesabbrev' => '(درێژە)',
-
-'mainpagetext' => "'''میدیاویکی بە سەرکەوتوویی دامەزرا.'''",
-'mainpagedocfooter' => 'پرس بکە بە [http://meta.wikimedia.org/wiki/Help:Contents ڕێنوێنیی بەکارھێنەران] بۆ زانیاری سەبارەت بە بەکارھێنانی نەرمامێری ویکی.
-
-== دەستپێکردن ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings لیستی ڕێکخستنەکان شێوەپێدان]
-* [http://www.mediawiki.org/wiki/Manual:FAQ پرسیارە دوپاتکراوەکانی میدیاویکی (MediaWiki FAQ)]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce لیستی ئیمەیلی وەشانەکانی میدیاویکی]',
+'noindex-category' => 'پەڕە پێرستنەکراوەکان',
'about' => 'سه‌باره‌ت',
'article' => 'بابەت',
@@ -335,7 +322,6 @@ $messages = array(
'history' => 'مێژووی پەڕە',
'history_short' => 'مێژووی پەڕە',
'updatedmarker' => 'لە دوای دواسەردانم نوێکراوەتەوە',
-'info_short' => 'زانیاری',
'printableversion' => 'وەشانی ئامادەی چاپ',
'permalink' => 'بەستەری ھەمیشەیی',
'print' => 'چاپ',
@@ -524,12 +510,11 @@ $1',
'protectedinterface' => 'ئەم پەڕە دەقی ڕوواڵەتی نەرمامێرەکە نیشان دەدات و بۆ پەرگری لە خراپکاریی پارێزراوە.',
'editinginterface' => "'''ئاگاداری:''' تۆ خەریکی دەستکاریی پەڕەیەکی کە بۆ دابینکردنی دەقی ڕوواڵەتی نەرمامێر بە کار دەھێنرێت.
گۆڕانکاری لە ئەم پەڕە کاریگەر دەبێت لە سەر ڕواڵەتی پەڕەکانی بەکارھێنەرانی دیکە.
-بۆ وەرگێڕان تکایە [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net]، پرۆژەی ناوچەیی‌کردنی میدیاویکی بەکار بێنە.",
+بۆ وەرگێڕان تکایە [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net]، پرۆژەی ناوچەیی‌کردنی میدیاویکی بەکار بێنە.",
'sqlhidden' => '(داواکاریی SQL شاراوەیە)',
'cascadeprotected' => 'ئەم لاپەڕە پارێزراوە لە دەستکاریی، چونکا خراوەتە سەر ڕیزی ئەم {{PLURAL:$1|لاپەڕانه‌، کە}} که‌ به‌ هه‌ڵکردنی بژارده‌ی داڕژان هه‌ڵکراوه‌:
$2',
'namespaceprotected' => "تۆ ناتوانی لاپەڕەکانی ناو نەیمسپەیسی '''$1''' بگۆڕی.",
-'customcssjsprotected' => 'تۆ ناتوانی ئەم لاپەڕە دەستکاریی بکەی، چونکا ڕێکراوە تاکەکەسییەکانی بەکارھێنەرێکی دیکەی تێدایە.',
'ns-specialprotected' => 'تۆ ناتوانی لاپەڕە تایبەتەکان دەستکاریی بکەی.',
'titleprotected' => 'ئەم سەرناوە پارێزراوە لە دروستکران لە لایەن [[User:$1|$1]].
ھۆکاری ئەمە بریتیە لە "\'\'$2\'\'".',
@@ -566,6 +551,7 @@ $2',
'createaccount' => 'ھەژمار دروست بکە',
'gotaccount' => "خاوه‌نی هه‌ژماری خۆتی؟ '''$1'''.",
'gotaccountlink' => 'چوونه‌ ژووره‌وه‌',
+'userlogin-resetlink' => 'وردەکارییەکانی چوونەژوورەوەتت لە بیر کردووە؟',
'createaccountmail' => 'بە ئیمەیل',
'createaccountreason' => 'هۆکار:',
'badretype' => 'تێپەڕوشەکان لەیەک ناچن.',
@@ -585,7 +571,7 @@ $2',
'nosuchuser' => 'بەکارھێنەرێک بە ناوی «$1» نیە.
ناوی بەکارھێنەر بە گەورە و بچووک بوونی پیتەکان ھەستیارە.
ڕێنووسەکەت چاولێکەرەوە، یان [[Special:UserLogin/signup|ھەژمارێکی نوێ دروست بکە]].',
-'nosuchusershort' => 'بەکارهێنەر بە ناوی "<nowiki>$1</nowiki>" نیە.
+'nosuchusershort' => 'بەکارهێنەر بە ناوی "$1" نیە.
چاو لە ڕێنووسەکە بکە.',
'nouserspecified' => 'دەبێ ناوی بەکارهێنەر دابین‌ بکەی.',
'wrongpassword' => 'تێپەڕوشەی ھەڵە.
@@ -628,7 +614,7 @@ $2',
تکایە پێش هەوڵی دووبارە، نەختێک بوەستە.',
'loginlanguagelabel' => 'زمان: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'گۆڕینی تێپەڕوشە',
'resetpass_announce' => 'بە کۆدی کاتیی ئیمەیل‌کراو ھاتوویتە ژوورەوە.
بۆ دوایی ھاتنی چوونە ژوورەوە، ئەشێ تێپەڕوشەیەکی نوێ ھەڵبژێری لێرە:',
@@ -647,6 +633,10 @@ $2',
وا دیارە تێپەڕوشەکەت بە سەرکەوتوویی گۆڕدراوە یان داوای تێپەڕوشەیەکی نوێت کردووە.',
'resetpass-temp-password' => 'تێپەڕوشەی کاتی:',
+# Special:PasswordReset
+'passwordreset-emailelement' => 'ناوی بەکارھێنەری: $1
+تێپەڕوشەی کاتی: $2',
+
# Edit page toolbar
'bold_sample' => 'دەقی ئەستوور',
'bold_tip' => 'دەقی ئەستوور',
@@ -658,8 +648,6 @@ $2',
'extlink_tip' => 'بەستەری دەرەکی (لەبیرت بێ نووسینی پێشگری http:// )',
'headline_sample' => 'دەقی سەردێڕ',
'headline_tip' => 'سەردێڕی ئاست ۲',
-'math_sample' => 'Ùۆرموول لێرە بنووسە',
-'math_tip' => 'Ùۆرموولی بیرکاری (LaTeX)',
'nowiki_sample' => 'لەگەرە دەقی نەڕازراو تێ‌بخە',
'nowiki_tip' => 'لەبەرچاو نەگرتنی دارشتنەکانی ویکی',
'image_sample' => 'نموونە.jpg',
@@ -745,7 +733,7 @@ $2',
ئەگەر تۆ بەکارهێنەرێکی نەناسراوی و هەست ئەکەی ئەم لێدوانە پەیوەندی بە تۆوە نیە تکایە [[Special:UserLogin/signup|ھەژمارێکی نوێ دروست بکە]] یان [[Special:UserLogin|بچۆ ژوورەوە]] لەبەر ئەوەی لەداهاتوودا دەگەڵ بەکارهێنەرانی‌ نەناسراوی دی تێکەڵ نەکرێیت. ''",
'noarticletext' => 'ھەنووکە ھیچ دەقێک لەم پەڕەدا نییە.
دەتوانی بۆ ئەم ناوە لە [[Special:Search/{{PAGENAME}}|پەڕەکانی تردا بگەڕێی]]، <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} لە لۆگەکاندا بگەڕێی]، یان [{{fullurl:{{FULLPAGENAME}}|action=edit}} ئەم پەڕە دەستکاری بکەیت]</span>.',
-'userpage-userdoesnotexist' => 'هەژماری بەکارهێنەری "$1" تۆمار نەکراوە.<br />
+'userpage-userdoesnotexist' => 'هەژماری بەکارهێنەری "<nowiki>$1</nowiki>" تۆمار نەکراوە.<br />
گەر دەتەوێ ئەم لاپەڕە درووست‌کەی یان دەستکاری بکەی تکایە تاقی‌بکەوە .',
'clearyourcache' => "'''ئاگاداری:''' لە دوای پاشەکەوت کردن، لەوانەیە بۆ بینینی گۆڕانکارییەکان پێویست بێ کاشی وێبگەڕەکەت دەور لێ‌دەیتەوە.
* '''Firefox / Safari:''' دوگمەی ''Shift'' بگرە کاتێک لەسەر ''Reload''دا کرتە دەکەی، یان ھەرکام لە ''Ctrl-F5'' یان ''Ctrl-R'' لێبدە (''Command-R'' لەسەر Mac دا)
@@ -1134,9 +1122,10 @@ $1",
'changepassword' => 'تێپەڕوشە بگۆڕە',
'prefs-skin' => 'پێستە',
'skin-preview' => 'پێش بینین',
-'prefs-math' => 'بیرکاری',
'datedefault' => 'ھەڵنەبژێردراو',
+'prefs-beta' => 'کەرەسەکانی بیتا',
'prefs-datetime' => 'کات و ڕێکەوت',
+'prefs-labs' => 'کەرەسەکانی تاقیگەکان',
'prefs-personal' => 'پرۆÙایلی بەکارھێنەر',
'prefs-rc' => 'دوایین گۆڕانکارییەکان',
'prefs-watchlist' => 'لیستی چاودێری',
@@ -1158,8 +1147,6 @@ $1",
'columns' => 'ستوونەکان:',
'searchresultshead' => 'گەڕان',
'resultsperpage' => 'ژمارەی ئەنجامەکان لە ھەر پەڕەیەک:',
-'contextlines' => 'ژمارەی دێڕەکانی ھەر ئەنجام:',
-'contextchars' => 'ژمارەی پیتەکانی ھەر دێڕ:',
'stub-threshold' => 'سنوور بۆ شێوازی <a href="#" class="stub">بەستەری کۆڵکە</a> (بایت):',
'recentchangesdays' => 'ژمارە ڕۆژە نیشاندراوەکان لە دوایین گۆڕانکارییەکان:',
'recentchangesdays-max' => '(ئەوپەڕی $1 {{PLURAL:$1|ڕۆژە|ڕۆژە}})',
@@ -1171,7 +1158,7 @@ $1",
'savedprefs' => 'ھەڵبژاردەکانت پاشەکەوت کران',
'timezonelegend' => 'ناوچەکات:',
'localtime' => 'کاتی ناوچەیی:',
-'timezoneuseserverdefault' => 'کەڵک وەرگرتن لە بنچینەی ڕاژەکار',
+'timezoneuseserverdefault' => 'دیÙاڵتی ویکی بەکاربێنە ($1)',
'timezoneuseoffset' => 'دیکە (ناتەواویەکان دیاری بکە)',
'timezoneoffset' => 'جیاوازی¹:',
'servertime' => 'کاتی ڕاژەکار:',
@@ -1220,8 +1207,8 @@ $1",
'email' => 'ئیمەیل',
'prefs-help-realname' => 'ناوی ڕاستی دڵخوازە.
ئەگەر پێت خۆش بێت بیدەی، زۆرتر ڕاتدەکێشێت بۆ کارەکانت.',
-'prefs-help-email' => 'دانانی ناونیشانی ئیمەیل دڵخوازانەیە، بەڵام ئەگەر تێپەڕوشەکەت لەیادکرد، بۆ نوێ کردنەوەی ئیمەیل پێویست دەبێت.<br />
-ھەروا دەتوانی ھەڵبژێری کە بەکارھێنەرانی دیکە بێ تێگەیشتن لە کەسایەتیت، لە پەڕەی لێدوان پێوەندیت لەگەڵ بگرن.',
+'prefs-help-email' => 'دانانی ناونیشانی ئیمەیل دڵخوازانەیە، بەڵام ئەگەر تێپەڕوشەکەت لەیادکرد، بۆ نوێ‌کردنەوەی تێپەڕوشە پێویست دەبێت.',
+'prefs-help-email-others' => 'ھەروەھا دەتوانی ھەڵبژێری کە بەکارھێنەرانی دیکە لە ڕێگەی پەڕەی بەکارھێنەرییەکەت یان لێدوانەکەت بێ ئاشکراکردنی کەسایەتیت پێوەندیت لەگەڵ بگرن.',
'prefs-help-email-required' => 'ناونیشانی ئیمەیل پێویستە.',
'prefs-info' => 'زانیاریی سەرەتایی',
'prefs-i18n' => 'نێونەتەویی کردن',
@@ -1337,7 +1324,6 @@ $1",
'right-userrights' => 'دەستکاری ماÙەکانی هەموو بەکارهێنەران',
'right-userrights-interwiki' => 'دەستکاری ماÙەکانی بەکارهێنەریی بەکارهێنەران Ù„Û• ویکی‌یەکانی دیکە‌دا',
'right-siteadmin' => 'داخستن و کردنەوەی بنکەدراو',
-'right-reset-passwords' => 'ڕیکخستنەوەی تێپەڕوشەی بەکارهێنەرانی دیکە',
'right-override-export-depth' => 'هەناردنی لاپەڕەکان کە لاپەڕەکانی بەستەر پێ‌دراو تا قووڵایی 5 لەخۆ بگرێت',
# User rights log
@@ -1471,8 +1457,8 @@ $1",
'filetype-bad-ie-mime' => 'ناتوانین ئەم پەڕگە باربکەین لەبەر ئەوەی وێبگەڕی Internet Explore ئەوە وەک "$1" دەناسێت کە ڕێگەنەدراوەیە و جۆرە پەڕگەیەکی مەترسی‌دارە.',
'filetype-unwanted-type' => "'''\".\$1\"''' جۆرە پەڕگەی نەخوازراوە.
\$2، ئەو جۆرە {{PLURAL:\$3|پەڕگەیە|پەڕگانەیە}} وا بە باش‌ دازاندرێت.",
-'filetype-banned-type' => "'''\".\$1\"''' جۆرە پەڕگەی ڕێگە پێ‌نەدراوە‌.
-\$2، ئەو جۆرە {{PLURAL:\$3|پەڕگەیە|پەڕگانەیە}} وا ڕێگە دراوە.",
+'filetype-banned-type' => "'''«.$1»''' {{PLURAL:$4|جۆرە پەڕگەی ڕێگە پێ‌نەدراوە‌|جۆرە پەڕگە ڕێگە پێ‌نەدراوە‌کانن}}.
+$2، ئەو جۆرە {{PLURAL:$3|پەڕگەیە کە ڕێگەی|پەڕگانەیە کە ڕێگەیان}} پێ‌دراوە.",
'filetype-missing' => 'پەڕگەکە پاشگری نییە (وەک ".jpg").',
'empty-file' => 'ئەو پەڕگەیە کە ناردووتە ڤاڵا بوو.',
'file-too-large' => 'ئەو پەڕگەیە ناردووتە زۆر گەورەیە.',
@@ -1528,10 +1514,6 @@ $1",
'watchthisupload' => 'چاودێریی ئەم پەڕگە بکە',
'filewasdeleted' => 'پەڕگەیەک بەم ناوە لەم دواییانەدا بارکرا و بە خێرایی سڕایەوە.
باشتر وایە پێش هەوڵی دووبارە بۆ بارکردن سەرنجی $1 بدەی.',
-'upload-wasdeleted' => "'''ئاگاداری: خەریکی پەڕگەیەک باردەکەی کە لەم دواییانەدا سڕاوەتەوە.'''
-
-پێش بارکردن ئەرخەیان ببە کە بارکردنی ئەو پەڕگە بەسوودە.
-لۆگی سڕینەوەی ئەم پەڕگە بۆ ئاسوودەیی لێرە دانراوە:",
'filename-bad-prefix' => "دەستپێکی ناوی ئەو پەڕگەی باری دەکەی '''\"\$1\"'''، کە ناوێکی ناسێنەر نیە؛ ئەو جۆرە ناوە زۆربەی کات کامێرا دیجیتاڵەکان خۆکار بەکاری‌دەبەن.
تکایە ناوێک هەڵبژێرە کە زانیاریی زیاتر بدات سەبارەت بە پەڕگەکەت.",
'upload-success-subj' => 'بارکردنی سەرکەوتوو',
@@ -1614,7 +1596,6 @@ $1',
هەروا [[Special:WhatLinksHere/$2|لیستی تەواو]] ئامادەی کەڵک وەرگرتنە.',
'nolinkstoimage' => '‌لاپەڕەیەک نەدۆزرایەوە کە بەستەری هەبێ بۆ ئەم پەڕگە.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|بەستەری زیاتر]] ببینە بۆ ئەم پەڕگە.',
-'redirectstofile' => 'ئەم {{PLURAL:$1|پەڕگە ڕەوانکەرە|پەڕگانە ڕەوانکەرن}} بۆ ئەم پەڕگە:',
'duplicatesoffile' => 'ئەم {{PLURAL:$1|پەڕگە دووبارەکرنەوەیەکی|پەڕگانە دووبارەکردنەوەی}} ئەم پەڕگەن ([[Special:FileDuplicateSearch/$2|وردەکاری زیاتر]]):',
'sharedupload' => 'ئەم پەڕگە لە $1ەوەیە و لەوە دەچێ لە پرۆژەکانی دیکەش بەکار ببرێت.',
'sharedupload-desc-there' => 'ئەم پەڕگە لە $1ەوەیە و لەوە دەچێ لە پرۆژەکانی دیکەش بەکار ببرێت.
@@ -1892,28 +1873,30 @@ $1',
'listgrouprights-removegroup-self-all' => 'لابردنی هەموو گرووپەکان له‌ سه‌ر هه‌ژماری خۆ',
# E-mail user
-'mailnologin' => 'ناونیشان بۆ ناردن نییه‌',
-'mailnologintext' => 'ده‌بێ له‌ [[Special:UserLogin|ژووره‌وه‌]] بیت و ناونیشانێکی بڕواپێ‌کراوی ئی‌مه‌یلت له‌ ناو [[Special:Preferences|هه‌ڵبژارده‌کان]] دیاری کردبێت تا بتوانی ئی‌مه‌یل بنێریت بۆ به‌کارهێنه‌رانی دیکه‌.',
-'emailuser' => 'ئیمەیل بنێرە بۆ ئەم بەکارھێنەرە',
-'emailpage' => 'ئیمەیل بۆ بەکارھێنەر',
-'emailpagetext' => 'ده‌توانی له‌م Ùۆرمه‌ی خواره‌وه‌ که‌ڵک وه‌رگریت بۆ ناردنی په‌یامێکی ئی‌مه‌یل بنێریت بۆ ئه‌م به‌کارهێنه‌ره‌.
+'mailnologin' => 'ناونیشان بۆ ناردن نییه‌',
+'mailnologintext' => 'ده‌بێ له‌ [[Special:UserLogin|ژووره‌وه‌]] بیت و ناونیشانێکی بڕواپێ‌کراوی ئی‌مه‌یلت له‌ ناو [[Special:Preferences|هه‌ڵبژارده‌کان]] دیاری کردبێت تا بتوانی ئی‌مه‌یل بنێریت بۆ به‌کارهێنه‌رانی دیکه‌.',
+'emailuser' => 'ئیمەیل بنێرە بۆ ئەم بەکارھێنەرە',
+'emailpage' => 'ئیمەیل بۆ بەکارھێنەر',
+'emailpagetext' => 'ده‌توانی له‌م Ùۆرمه‌ی خواره‌وه‌ که‌ڵک وه‌رگریت بۆ ناردنی په‌یامێکی ئی‌مه‌یل بنێریت بۆ ئه‌م به‌کارهێنه‌ره‌.
ناونیشانی ئی‌مه‌یلت وا له‌ ناو [[Special:Preferences|هه‌ڵبژارده‌کانی به‌کارهێنه‌ر‌دا]] نووسیوته‌، بۆ ئه‌دره‌سی "له‌لایه‌ن" ئی‌مه‌یل نیشان ئه‌درێت، هه‌ر بۆیه‌ وه‌گر ده‌توانێ ڕاسته‌وخۆ وه‌ڵامت بداته‌وه‌.',
-'defemailsubject' => 'ئیمەیلی {{SITENAME}}',
-'noemailtitle' => 'هیچ ناونیشانێکی ئی‌مەیل نییە',
-'noemailtext' => 'ئەم بەکارهێنەرە ناونێشانێکی بڕوا پێکراوی ئی‌مەیلی دانەناوە.',
-'nowikiemailtitle' => 'ڕێگە بۆ ئی‌مەیل نەدراوە',
-'nowikiemailtext' => 'ئەم بەکارهێنەرە تایبەتمەندیی وەرنەگرتنی ئی‌مەیل لە بەکارهێنەرانی دیکەی هەلبژاردووە.',
-'email-legend' => 'ناردنی ئیمەیلێک بۆ بەکارهێنەرێکی دیکەی {{SITENAME}}',
-'emailfrom' => 'Ù„Û•:',
-'emailto' => 'بۆ:',
-'emailsubject' => 'بابەت:',
-'emailmessage' => 'نامە:',
-'emailsend' => 'بینێرە',
-'emailccme' => 'کۆپییەک لە نامەکە بنێرە بۆ ئیمەیلەکەم.',
-'emailccsubject' => 'کۆپیی نامەکەت بۆ $1: $2',
-'emailsent' => 'نامەکەت ناردرا',
-'emailsenttext' => 'نامەکەت ناردرا',
-'emailuserfooter' => 'ئەم ئیمەیلە لە $1ەوە ناردرا بۆ $2 بە "Email user" لە {{SITENAME}}ەوە.',
+'defemailsubject' => 'ئیمەیلی {{SITENAME}}',
+'noemailtitle' => 'هیچ ناونیشانێکی ئی‌مەیل نییە',
+'noemailtext' => 'ئەم بەکارهێنەرە ناونێشانێکی بڕوا پێکراوی ئی‌مەیلی دانەناوە.',
+'nowikiemailtitle' => 'ڕێگە بۆ ئی‌مەیل نەدراوە',
+'nowikiemailtext' => 'ئەم بەکارهێنەرە تایبەتمەندیی وەرنەگرتنی ئی‌مەیل لە بەکارهێنەرانی دیکەی هەلبژاردووە.',
+'emailusername' => 'ناوی به‌كارھێنه‌ر:',
+'emailusernamesubmit' => 'بینێرە',
+'email-legend' => 'ناردنی ئیمەیلێک بۆ بەکارهێنەرێکی دیکەی {{SITENAME}}',
+'emailfrom' => 'Ù„Û•:',
+'emailto' => 'بۆ:',
+'emailsubject' => 'بابەت:',
+'emailmessage' => 'نامە:',
+'emailsend' => 'بینێرە',
+'emailccme' => 'کۆپییەک لە نامەکە بنێرە بۆ ئیمەیلەکەم.',
+'emailccsubject' => 'کۆپیی نامەکەت بۆ $1: $2',
+'emailsent' => 'نامەکەت ناردرا',
+'emailsenttext' => 'نامەکەت ناردرا',
+'emailuserfooter' => 'ئەم ئیمەیلە لە $1ەوە ناردرا بۆ $2 بە "Email user" لە {{SITENAME}}ەوە.',
# User Messenger
'usermessage-summary' => 'بەجێھێشتنی پەیامی سیستەم',
@@ -1926,10 +1909,8 @@ $1',
'watchlistanontext' => 'تکایە بۆ دیتن و دەستکاری بابەتەکانی لە ناو لیستی چاودێریەکەت‌دا $1.',
'watchnologin' => 'لە ژوورەوە نیت.',
'watchnologintext' => 'دەبی لە [[Special:UserLogin|ژوورەوە]] بیت بۆ ئەوەی بتوانی گۆڕانکاری بکەیت لە لیستی چاودێریەکەت‌دا.',
-'addedwatch' => 'بە لیستی چاودێریت زێدەکرا',
'addedwatchtext' => 'پەڕەی «[[:$1]]» خرایە سەر [[Special:Watchlist|لیستی چاودێرییەکەت]].
گۆڕانکارییەکانی داھاتووی ئەم پەڕە و پەڕەی وتووێژەکەی، لەوێدا ڕیزدەکرێ و پەڕەکە لە [[Special:RecentChanges|لیستی دوایین گۆڕانکارییەکاندا]] ئەستوورکراو دەردەکەوێت بۆ ئەوەی ئاسانتر دەستکەوێت.',
-'removedwatch' => 'لە لیستی چاودێری لابرا',
'removedwatchtext' => 'پەڕەی «[[:$1]]» لە [[Special:Watchlist|لیستی چاودێریەکەت]] لابرا.',
'watch' => 'چاودێری بکە',
'watchthispage' => 'چاودێریی ئەم پەڕە بکە',
@@ -1977,17 +1958,20 @@ $NEWPAGE
تا سەردانی ئەم پەڕە نەکەیت، گۆڕانکارییەکی دیکەی پەڕەکەت پێ ڕاناگەیەندرێت.
هەروەھا دەتوانی نیشانەکانی ڕاگەیاندن بۆ هەموو پەڕەکانی لیستی چاودێریت لەسەرەتاوە ڕێکبخەیتەوە.
+بە سوپاسەوە، سیستەمی ڕاگەیاندنی {{SITENAME}}
- بە سوپاسەوە، سیستەمی ڕاگەیاندنی {{SITENAME}}
--
+بۆ گۆڕینی رێکخستنەکانی ڕاگەیاندن بە ئیمەیل، سەربدە لە
+{{canonicalurl:{{#special:Preferences}}}}
+
بۆ گۆڕینی ڕێکخستنەکانی لیستی چاودێرییەکەت، سەربدە لە
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
بۆ سڕینەوەی پەڕەکە لە لیستی چاودێرییەکەت، سەربدە لە
$UNWATCHURL
رێنوێنیی زۆرتر و دەربڕینی بیروڕا:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'پەڕە بسڕەوە',
@@ -2004,7 +1988,7 @@ $UNWATCHURL
تکایە پشتڕاستی بکەوە کە دەتەوێت ئەم کارە بکەی، لە ئاکامەکەی تێدەگەی، و ئەم کارە بە پێی [[{{MediaWiki:Policy-url}}|سیاسەتنامە]] ئەنجام دەدەی.',
'actioncomplete' => 'کردەوە بە ئاکام گەیشت',
'actionfailed' => 'کردارەکە سەرنەکەوت',
-'deletedtext' => '«<nowiki>$1</nowiki>» سڕایەوە.
+'deletedtext' => '«$1» سڕایەوە.
سەیری $2 بکە بۆ تۆمارێکی دوایین سڕینەوەکان.',
'deletedarticle' => '«[[$1]]»ی سڕییەوە',
'suppressedarticle' => '«[[$1]]»ی دامرکاندەوە',
@@ -2062,7 +2046,7 @@ $UNWATCHURL
'protectexpiry' => 'ھەتا:',
'protect_expiry_invalid' => 'کاتی بەسەرچوون نادروستە:',
'protect_expiry_old' => 'کاتی بەسەرچوون ڕابردووە',
-'protect-text' => "دەتوانی لێرەوە ئاستی پاراستنی پەڕەی '''<nowiki>$1</nowiki>''' ببینی و بیشیگۆڕی.",
+'protect-text' => "دەتوانی لێرەوە ئاستی پاراستنی پەڕەی '''$1''' ببینی و بیشیگۆڕی.",
'protect-locked-blocked' => "ناتوانیت ئاستی پاراستن بگۆڕیت کاتێ بەستراوە.
ئەوە هەڵبژاردەکانی ئێستای ڕێکخستنی بۆ لاپەڕە '''$1''':",
'protect-locked-dblock' => "ئاستەکانی پاراستن ناگۆڕدرێن کاتێ بنکەدراوی چالاک داخرابێت.
@@ -2214,7 +2198,6 @@ $1',
'blockiptext' => 'Ù„Û•Ù… Ùۆرمەی خوارەوە دەتوانی بۆ بەربەست‌کردنی دەست‌پێ‌گەیشتنی نووسین Ù„Û• ناونیشانێکی ئای‌پی تایبەت یا ناوی بەکارهێنەریەک، Ú©Û•ÚµÚ© وەرگریت.
ئەمە تەنها دەبێ بۆ بەرگری لە خراپکاری بەکاربێت و ڕێکەوتنی هەبێ دەگەڵ [[{{MediaWiki:Policy-url}}|سیاسەتەکان]].
لە خوارەوە هۆکارێک بە ڕوونی بنووسە (بۆ نموونە بە وردی ئەو لاپەڕانە و خراپکاری تێدا کراوە وەک، وەک بەڵگە، بنووسە).',
-'ipaddress' => 'ناونیشانی IP:',
'ipadressorusername' => 'ناونیشانی ئای‌پی یان ناوی‌ بەکارهێنەری:',
'ipbexpiry' => 'بەسەرچوون:',
'ipbreason' => 'هۆکار:',
@@ -2227,7 +2210,6 @@ $1',
**هەڵسووکەوت یان وتاری هاندەر بۆ توندوتیژی
**بەکارهێنانی چەن هەژمارە پێکەوە
**ناوی بەکارهێنەریی نەگونجاو',
-'ipbanononly' => 'تەنها بەربەست‌کردنی بەکارهێنەرانی نەناسراو',
'ipbcreateaccount' => 'بەرگری لە درووست‌کردنی هەژمارە',
'ipbemailban' => 'بەرگری لە ئی‌مەیل ناردنی بەکارهێنەر',
'ipbenableautoblock' => 'خۆکار بەربەست‌کردنی ئەو ناونیشانی‌ ئای‌پیە وا ئەم بەکار‌هێنەرە کەڵکی لێ‌وەرگرتووە و ئەو ئای‌پی‌یانەی دیکە وا لەوێوە هەوڵی دەستکاری ئەدەن.',
@@ -2238,7 +2220,6 @@ $1',
'ipbotherreason' => 'هۆکاری زیادکراو\\دیکە:',
'ipbhidename' => 'شاردنەوەی ناوی‌ بەکارهێنەر لە دەستکاری و لیستەکان',
'ipbwatchuser' => 'دیتنی لاپەڕەی بەکارهێنەر و وتووێژی ئەم بەکارهێنەرە',
-'ipballowusertalk' => 'ڕێگەدان بە ئەم بەکارهێنەرە کە لاپەڕەی وتووێژی خۆی دەستکاری بکات، کاتێ بەربەست‌کراوە',
'ipb-change-block' => 'دیسان بەربەست‌کردنەوەی ئەم بەکارهێنەرە بەم هەڵبژاردانە',
'badipaddress' => 'ناونیشانی ئای‌پی نەگونجاو',
'blockipsuccesssub' => 'بەربەست کردن سەرکەوتوو بوو',
@@ -2256,12 +2237,7 @@ $1',
'unblocked-id' => 'بەربەستی $1 لابرا',
'ipblocklist' => 'بەکارھێنەر بەربەستنکراوەکان',
'ipblocklist-legend' => 'دۆزینەوەی بەکارهێنەرێکی بەربەست‌کراو',
-'ipblocklist-username' => 'ناوی‌ بەکارهێنەری یان ناونیشانی ئای‌پی:',
-'ipblocklist-sh-userblocks' => '$1 بەربەستی هەژمارە',
-'ipblocklist-sh-tempblocks' => '$1 بەربەستی کاتی',
-'ipblocklist-sh-addressblocks' => '$1 بەربەستی تاکە ئای‌پی',
'ipblocklist-submit' => 'گەڕان',
-'blocklistline' => '$1، $2 بەربەستی کرد $3 ($4)',
'infiniteblock' => 'بێکۆتایی',
'expiringblock' => 'لە $2، $1 ماوەی بەسەر دەچێ',
'anononlyblock' => 'تەنها بۆ چەن سات',
@@ -2282,7 +2258,7 @@ $1',
'reblock-logentry' => 'دۆخی ئاستەنگ کردنی [[$1]] بۆ گۆڕدرا بۆ ماوەی $2 $3',
'blocklogtext' => 'ئەمە لۆگی کردەوەکانی بەربەست‌کران یا لابردنی بەربەستی بەکارهێنەرە.
بەربەست‌کرانی خۆکاری ئای‌پی لەم لیستەدا نەهاتوون.
-بۆ دیتنی ئەو بەربەستانە ئێستە لە ئارادان چاو لە [[Special:IPBlockList|لیستی بەربەستی ئای‌پی]] بکە.',
+بۆ دیتنی ئەو بەربەستانە ئێستە لە ئارادان چاو لە [[Special:BlockList|لیستی بەربەستی ئای‌پی]] بکە.',
'unblocklogentry' => 'بەربەستنی "$1" بەتاڵ کرا',
'block-log-flags-anononly' => 'تەنها بەکارهێنەرە نەناسراوەکان',
'block-log-flags-nocreate' => 'دروستکردنی ھەژمار ناچالاککراوە',
@@ -2296,8 +2272,7 @@ $1',
'ipb_expiry_temp' => 'بەربەستی ناوی‌بەکارهێنەرە شاراوەکان دەبێ پایەدار بێت.',
'ipb_hide_invalid' => 'بەرگری لەم هەژمارە ناکرێت، لەوانەیە دەستکاری زۆری هەبێت.',
'ipb_already_blocked' => '"$1" لە پێش‌دا بەربەست‌‌کراوە',
-'ipb-needreblock' => '== لەپێش‌دا بەربەست‌کراو ==
-"$1" لە پێش‌دا بەربەست‌‌کراوە.
+'ipb-needreblock' => '"$1" لە پێش‌دا بەربەست‌‌کراوە.
ئایا دەتەو‌ێ هەڵبژاردەکانی بگۆڕیت؟',
'ipb_cant_unblock' => 'پێناسەی بەربەست‌کردنی $1 نەدۆزرایەوە.
لەوانەیە لە بەربەستی لابرابێت.',
@@ -2453,7 +2428,7 @@ $1',
'allmessagesdefault' => 'دەقی بنەڕەتی',
'allmessagescurrent' => 'دەقی ھەنووکە',
'allmessagestext' => 'ئەمە لیستێکە لە پەیامەکانی بەردەست لە بۆشایی‌ناوی میدیاویکی.
-تکایە سەردانی [http://www.mediawiki.org/wiki/Localisation ناوچەیی‌کردنی میدیاویکی] و [http://translatewiki.net translatewiki.net] بکە ئەگەر دەتەوێ لە ناوچەیی‌کردنی میدیاویکی بە گشتی بەشداری بکەیت.',
+تکایە سەردانی [//www.mediawiki.org/wiki/Localisation ناوچەیی‌کردنی میدیاویکی] و [//translatewiki.net translatewiki.net] بکە ئەگەر دەتەوێ لە ناوچەیی‌کردنی میدیاویکی بە گشتی بەشداری بکەیت.',
'allmessagesnotsupportedDB' => "ئەم لاپەڕە ناتوانی بەکاربێت لەبەر ئەوەی '''\$wgUseDatabaseMessages''' لەکار خستراوە.",
'allmessages-filter-legend' => 'پاڵێو',
'allmessages-filter-unmodified' => 'چاکسازی نەکراو',
@@ -2612,11 +2587,13 @@ $1',
'spam_reverting' => 'گەڕانەوە بۆ دوایین پێداچوونەوە کە بەستەری لەخۆگرتووە بۆ $1',
# Info page
-'infosubtitle' => 'زانیاریی لاپەڕە',
-'numedits' => 'ژمارەی دەستکارییەکان (پەڕە): $1',
-'numtalkedits' => 'ژمارە گۆڕانکارییەکان (پەڕەی لێدوان): $1',
-'numwatchers' => 'ژمارەی چاودێران: $1',
-'numauthors' => 'ژمارەی نووسەری جودا (لاپەڕە): $1',
+'pageinfo-header-edits' => 'دەستکاریەکان',
+'pageinfo-header-watchlist' => 'لیستی چاودێری',
+'pageinfo-header-views' => 'بینینەکان',
+'pageinfo-subjectpage' => 'Ù¾Û•Ú•Û•',
+'pageinfo-watchers' => 'ژمارەی چاودێران',
+'pageinfo-edits' => 'ژمارەی دەستکارییەکان',
+'pageinfo-views' => 'ژمارەی بینینەکان',
# Skin names
'skinname-standard' => 'کلاسیک',
@@ -2629,18 +2606,6 @@ $1',
'skinname-modern' => 'مۆدێڕن',
'skinname-vector' => 'ڤێکتۆر',
-# Math options
-'mw_math_png' => 'ھەموو جارێک وەک PNG نیشان بدە',
-'mw_math_simple' => 'HTML ئەگەر ساکار بێت, ئەگەرنا PNG',
-'mw_math_html' => 'ئەگەر بکرێ بە HTML ، ئەگەرنا بە PNG',
-'mw_math_source' => 'وەک TeX بمێنێتەوە (بۆ وێبگەڕە دەقی‌یەکان)',
-'mw_math_modern' => 'بۆ وێبگەڕە مۆدێڕنەکان باشترە',
-
-# Math errors
-'math_unknown_error' => 'هەڵەیەکی نەزانراو',
-'math_unknown_function' => 'Ùەرمانێکی نەناسراو',
-'math_syntax_error' => 'ڕستەکار هەڵەیە',
-
# Patrolling
'markaspatrolleddiff' => 'وەک چاودێری‌کراو نیشان‌کردن',
'markaspatrolledtext' => 'ئەم لاپەڕە وەک چاودێری‌کراو نیشان بکە',
@@ -2671,13 +2636,12 @@ $1',
'nextdiff' => 'گۆڕانکاریی نوێتر â†',
# Media information
-'thumbsize' => 'قەبارەی وێنۆک:',
-'file-info' => 'قه‌باره‌: $1, جۆر: $2',
-'file-info-size' => '$1 × $2 پیکسێل، قەبارەی پەڕگە: $3، جۆری MIME: $4',
-'file-nohires' => '<small>رەزۆلوشنی سەرتر لەمە لە بەردەست دا نیە.</small>',
-'svg-long-desc' => 'پەڕگەی SVG، بە ناو $1 × $2 پیکسەڵ، قەبارەی پەڕگە: $3',
-'show-big-image' => 'گەورە کردنەوە',
-'show-big-image-thumb' => '<small>قەبارەی ئەم پێشبینینە: $1 × $2 خاڵە</small>',
+'thumbsize' => 'قەبارەی وێنۆک:',
+'file-info' => 'قه‌باره‌: $1, جۆر: $2',
+'file-info-size' => '$1 × $2 پیکسێل، قەبارەی پەڕگە: $3، جۆری MIME: $4',
+'file-nohires' => '<small>رەزۆلوشنی سەرتر لەمە لە بەردەست دا نیە.</small>',
+'svg-long-desc' => 'پەڕگەی SVG، بە ناو $1 × $2 پیکسەڵ، قەبارەی پەڕگە: $3',
+'show-big-image' => 'گەورە کردنەوە',
# Special:NewFiles
'newimages' => 'پێشانگای پەڕگە نوێکان',
@@ -2707,14 +2671,21 @@ $1',
'metadata-help' => 'ئەم پەڕگە زانیاری زێدەی ھەیە، کە لەوە دەچێت کامێرا یان ھێماگر (scanner) خستبێتیە سەری. ئەگەر پەڕگەکە لە حاڵەتی سەرەتاییەکەیەوە دەستکاری کرابێ، شایەد بڕێ لە بڕگەکان بە تەواوی زانیارەکانی وێنە گۆڕدراوەکە نیشان نەدەن.',
'metadata-expand' => 'وردەکارییە درێژکراوەکان پیشان بدە',
'metadata-collapse' => 'وردەکارییە درێژکراوەکان بشارەوە',
-'metadata-fields' => 'ئەو کێڵگە EXIFانە لەم پەیامە بە ڕیز کراون، کاتێک خشتەی metadata کۆ کراوەش بێ ھەر نیشان ئەدرێت. کێڵگەکانی تر تا خشتەکە باز نەکرێ، شاراوەن.
+'metadata-fields' => 'کێڵگەکانی میتاداتای وێنە کە لەم پەیامەدا بەڕیزکراون کاتێک خشتەی میتاداتا کۆکراوەش بێت لە پەڕەی وێنەدا نیشان دەدرێن.
+کێڵگەکانی تر لە حاڵەتی بنەڕەتیدا شاراوەن.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'پانی',
@@ -2849,15 +2820,13 @@ $1',
# External editor support
'edit-externally' => 'دەستکاریی ئەم پەڕەیە بکە بە بەکارھێنانی پڕۆگرامێکی دەرەکی',
-'edit-externally-help' => '(بۆ زانیاریی زیاتر سەیری [http://www.mediawiki.org/wiki/Manual:External_editors ڕێنماییەکانی دامەزراندن] بکە)',
+'edit-externally-help' => '(بۆ زانیاریی زیاتر سەیری [//www.mediawiki.org/wiki/Manual:External_editors ڕێنماییەکانی دامەزراندن] بکە)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ھەموو',
-'imagelistall' => 'ھەموو',
-'watchlistall2' => 'ھەموو',
-'namespacesall' => 'ھەموو',
-'monthsall' => 'ھەموو',
-'limitall' => 'ھەموو',
+'watchlistall2' => 'ھەموو',
+'namespacesall' => 'ھەموو',
+'monthsall' => 'ھەموو',
+'limitall' => 'ھەموو',
# E-mail address confirmation
'confirmemail' => 'بڕواپێکردنی ناونیشانی ئیمەیل',
@@ -2935,6 +2904,10 @@ $5
# action=purge
'confirm_purge_button' => 'باشە',
+# action=watch/unwatch
+'confirm-unwatch-button' => 'باشه‌',
+'confirm-unwatch-top' => 'ئەم پەڕە لە لیستی چاودێریت لاببرێت؟',
+
# Separators for various lists, etc.
'semicolon-separator' => 'Ø›&#32;',
'comma-separator' => '،&#32;',
@@ -2981,7 +2954,7 @@ $5
'watchlistedit-normal-legend' => 'لابردنی سەردێڕەکان لە لیستی چاودێری',
'watchlistedit-normal-explain' => 'سەردێڕی بڕگەکانی لیستی چاودێریەکەت لە خوارەوە نیشان‌دراون.
بۆ لابردنی هەرکام، چوارچێوەی بەرامبەری نیشان بکە و کرتە بکە سەر {{int:Watchlistedit-normal-submit}} بۆ لابردنی سەردێڕەکان
-ھەروەھا دەتوانی [[Special:Watchlist/raw|دەستکاری لیستی خاو]] بکەیت.',
+ھەروەھا دەتوانی [[Special:EditWatchlist/raw|دەستکاری لیستی خاو]] بکەیت.',
'watchlistedit-normal-submit' => 'ناونیشانەکان لاببە',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 سەردێڕ |$1 سەردێڕ}} لە لیستی چاودێریت سڕایەوە:',
'watchlistedit-raw-title' => 'دەستکاری لیستی خاوی چاودێری',
@@ -2989,7 +2962,7 @@ $5
'watchlistedit-raw-explain' => 'سەردێڕی بەڕگەکانی لیستی چاودێریەکەت لە خوارەوە نیشان‌دراون و دەتوانی بە زیادکردن و لابردن دەستکاری بکەیت؛
هەر هێڵێک، سەردێڕێک.
کاتێ تەواوت‌کرد، لەسەر «{{int:Watchlistedit-raw-submit}}» کرتە بکە.
-هەروا دەتوانی لە [[Special:Watchlist/edit|دەستکاریکەری ستاندارد]] کەڵک‌وەرگریت.',
+هەروا دەتوانی لە [[Special:EditWatchlist|دەستکاریکەری ستاندارد]] کەڵک‌وەرگریت.',
'watchlistedit-raw-titles' => 'ناونیشانەکان:',
'watchlistedit-raw-submit' => 'نوێکردنەوەی لیستی چاودێری',
'watchlistedit-raw-done' => 'لیستی چاودێریەکەت نوێ‌کرایەوە',
@@ -3030,26 +3003,25 @@ $5
'unknown_extension_tag' => 'تاگی درێژکراوەی نەناسراو "$1"',
# Special:Version
-'version' => 'وەشان',
-'version-extensions' => 'پێوەکراوە دامەزراوەکان',
-'version-specialpages' => 'پەڕە تایبەتەکان',
-'version-parserhooks' => 'قولاپە لێککەرەکان',
-'version-variables' => 'گۆڕاوەکان',
-'version-skins' => 'پێستەکان',
-'version-other' => 'ھی دیکە',
-'version-mediahandlers' => 'بایەخ‌دەرانی مێدیا',
-'version-hooks' => 'قولاپەکان',
-'version-extension-functions' => 'Ùەنکشێنەکانی درێژەکراو',
-'version-parser-extensiontags' => 'تاگەکانی درێژکراوی لێککەرەوە',
-'version-parser-function-hooks' => 'قولاپەکانی ÙÛ•Ù†Ú©Ø´ÛŽÙ†ÛŒ لێککەرەوە',
-'version-skin-extension-functions' => 'Ùەنکشێنەکانی درێژکراوی ڕووبەرگ',
-'version-hook-name' => 'ناوی قولاپ',
-'version-hook-subscribedby' => 'بەشداربوو لە لایەن',
-'version-version' => '(وەشانی $1)',
-'version-license' => 'مۆڵەت',
-'version-software' => 'نەرمەکاڵای دامەزراو',
-'version-software-product' => 'بەرهەم',
-'version-software-version' => 'وەشان',
+'version' => 'وەشان',
+'version-extensions' => 'پێوەکراوە دامەزراوەکان',
+'version-specialpages' => 'پەڕە تایبەتەکان',
+'version-parserhooks' => 'قولاپە لێککەرەکان',
+'version-variables' => 'گۆڕاوەکان',
+'version-skins' => 'پێستەکان',
+'version-other' => 'ھی دیکە',
+'version-mediahandlers' => 'بایەخ‌دەرانی مێدیا',
+'version-hooks' => 'قولاپەکان',
+'version-extension-functions' => 'Ùەنکشێنەکانی درێژەکراو',
+'version-parser-extensiontags' => 'تاگەکانی درێژکراوی لێککەرەوە',
+'version-parser-function-hooks' => 'قولاپەکانی ÙÛ•Ù†Ú©Ø´ÛŽÙ†ÛŒ لێککەرەوە',
+'version-hook-name' => 'ناوی قولاپ',
+'version-hook-subscribedby' => 'بەشداربوو لە لایەن',
+'version-version' => '(وەشانی $1)',
+'version-license' => 'مۆڵەت',
+'version-software' => 'نەرمەکاڵای دامەزراو',
+'version-software-product' => 'بەرهەم',
+'version-software-version' => 'وەشان',
# Special:FilePath
'filepath' => 'ڕێڕەوی پەڕگە',
@@ -3060,9 +3032,7 @@ $5
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'گەڕان بۆ پەڕگە دووپات کراوەکان',
-'fileduplicatesearch-summary' => 'گەڕان بۆ پەڕگە دووبارەکراوەکان لەسەر بنەمای نرخی hash.
-
-ناوی پەڕگەکە بێ پێشگری "{{ns:file}}" بنووسە.',
+'fileduplicatesearch-summary' => 'گەڕان بۆ پەڕگە دووبارەکراوەکان لەسەر بنەمای نرخی hash.',
'fileduplicatesearch-legend' => 'گەڕان بۆ دووبارەکردنێک',
'fileduplicatesearch-filename' => 'ناوی پەرگە:',
'fileduplicatesearch-submit' => 'گەڕان',
@@ -3073,8 +3043,9 @@ $5
# Special:SpecialPages
'specialpages' => 'پەڕە تایبەتەکان',
'specialpages-note' => '----
-* لاپەڕە تایبەتە ئاساییەکان
-* <strong class="mw-specialpagerestricted">لاپەڕە تایبەتە بەربەست‌کراوەکان.</strong>',
+* پەڕە تایبەتە ئاسایییەکان.
+* <span class="mw-specialpagerestricted">پەڕە تایبەتە بەرگری‌لێکراوەکان.</span>
+* <span class="mw-specialpagecached">پەڕە تایبەتە تەنیا-Cachکراوەکان .</span>',
'specialpages-group-maintenance' => 'ڕاپۆرتەکانی چاکسازی',
'specialpages-group-other' => 'پەڕە تایبەتەکانی دیکە',
'specialpages-group-login' => 'چوونەژوورەوە / ناونووسین',
diff --git a/languages/messages/MessagesCo.php b/languages/messages/MessagesCo.php
index 0ff3aec1..9c2c74c2 100644
--- a/languages/messages/MessagesCo.php
+++ b/languages/messages/MessagesCo.php
@@ -98,7 +98,6 @@ $messages = array(
'searcharticle' => 'Và',
'history' => 'Cronolugia',
'history_short' => 'Cronolugia',
-'info_short' => 'Infurmazione',
'permalink' => 'Ligame permanente',
'print' => 'Stampà',
'edit' => 'Mudificà',
@@ -178,7 +177,7 @@ $messages = array(
'accountcreatedtext' => "U registramentu di l'utilizatore $1 hè statu fattu.",
'loginlanguagelabel' => 'Lingua: $1',
-# Password reset dialog
+# Change password dialog
'retypenew' => 'Scrive torna a nova parulla secreta:',
# Edit page toolbar
@@ -230,7 +229,6 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
# Preferences page
'preferences' => 'Preferenze',
'mypreferences' => 'Preferenze',
-'prefs-math' => 'Matematica',
'prefs-rc' => 'Ultimi cambiamenti',
'prefs-watchlist' => 'Articuli seguitati',
'columns' => 'Culonne:',
@@ -371,7 +369,6 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
# Watchlist
'watchlist' => 'Articuli seguitati',
'mywatchlist' => 'Articuli seguitati',
-'addedwatch' => "Aghjuntu à u listinu di l'articuli seguitati",
'watch' => 'Seguità',
'enotif_reset' => 'Marcà tutte e pagine visitate',
@@ -424,11 +421,10 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
'istemplate' => 'inclusione',
# Block/unblock
-'ipaddress' => 'Adrizzu IP',
'ipadressorusername' => 'Adrizzu IP o nome di cuntributore',
'ipbreason' => 'Mutivu:',
+'blocklist-reason' => 'Mutivu',
'ipblocklist-submit' => 'Ricerca',
-'blocklistline' => '$1, $2 bluccati $3 ($4)',
'anononlyblock' => 'solu i cuntributori anonimi',
'blocklink' => 'bluccà',
'unblocklink' => 'sbluccà',
@@ -490,9 +486,6 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
'anonymous' => '{{PLURAL:$1|Utilizatore anonimu|Utilizatori anonimi}} di {{SITENAME}}',
'others' => 'altri',
-# Math errors
-'math_syntax_error' => 'errore di sintassa',
-
# Media information
'show-big-image' => 'Imagine in alta resoluzione',
@@ -521,7 +514,6 @@ U to indirizzu IP serà registratu indu a cronolugia di ista pagina.",
'exif-saturation-0' => 'Nurmale',
# 'all' in various places, this might be different for inflected languages
-'imagelistall' => 'tutte',
'watchlistall2' => 'tutti',
'monthsall' => 'tutti',
diff --git a/languages/messages/MessagesCps.php b/languages/messages/MessagesCps.php
index a8bfc3d6..67bd36cf 100644
--- a/languages/messages/MessagesCps.php
+++ b/languages/messages/MessagesCps.php
@@ -141,15 +141,6 @@ $messages = array(
'index-category' => 'Na-index nga mga pahina',
'noindex-category' => 'Wala na-index nga mga pahina',
-'mainpagetext' => "'''Madalag-on nga na-install ang MediaWiki.'''",
-'mainpagedocfooter' => 'Kunsultahon ang [http://meta.wikimedia.org/wiki/Help:Pagtuytoy sa Manug-usar] para sa impormasyon sa paggamit sang wiki nga "software".
-
-==Pag-umpisa==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista sang mga setting sang konpigurayon]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Mga perme napangkot sa MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista sang mga ginapadal-an sang sulat sang MediaWiki]',
-
'about' => 'Nahanungod sa',
'article' => 'Pahina sang ka-undan',
'newwindow' => '(gabukas sa bag-o nga bintana)',
@@ -199,7 +190,6 @@ $messages = array(
'history' => 'Kasaysayan sang pahina',
'history_short' => 'Kasaysayan',
'updatedmarker' => 'na-update halin sang san-o ko lang nga pagbisita',
-'info_short' => 'Impormasyon',
'printableversion' => 'Pang-imprinta nga bersyon',
'permalink' => 'Permanente nga link',
'print' => 'I-imprinta',
@@ -378,7 +368,6 @@ Pwede nga naga-unod mini sang isa ukon madamo pa nga mga karakter nga indi pwede
'sqlhidden' => '(nakatago ang pamangkot sang SQL)',
'cascadeprotected' => '',
'namespaceprotected' => "Wala ka sang permiso nga magliwat sang mga pahina nga ara sa namespace nga '''$1'''.",
-'customcssjsprotected' => 'Wala ka sang permiso nga bag-uhon ang ini nga pahina, tungod naga-unod ni sang mga pangkina-ugalingon nga gusto sang iban nga manug-usar.',
'ns-specialprotected' => 'Indi pwede bag-uhon ang mga pinasahi nga pahina.',
'titleprotected' => 'Naprotektahan ang mini nga titulo halin sa pag-ubra ni [[User:$1|$1]].
Mini ang ginhatag nga kabangdanan "\'\'$2\'\'".',
@@ -439,7 +428,7 @@ Palihog tistingan liwat.',
'usernamehasherror' => 'Ang ngalan sang manug-usar indi dapat mag-unod sang mga labay-labay nga mga karakter.',
'loginlanguagelabel' => 'Lingguahe:',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Islan ang password',
'resetpass_header' => 'Islan ang password sang account',
'oldpassword' => 'Luma nga password:',
@@ -461,8 +450,6 @@ Palihog tistingan liwat.',
'extlink_tip' => 'Halin sa gwa nga link (tandaan ang http:// nga prefiks)',
'headline_sample' => 'Teksto sang pangulong-dinalan',
'headline_tip' => 'Lebel 2 pangulong-dinalan',
-'math_sample' => 'Isulod ang diya pormula',
-'math_tip' => 'Pormula nga pangmatematika (LaTeX)',
'nowiki_sample' => 'Isal-ot ang wala na-format nga teksto diya',
'nowiki_tip' => 'Pabay-an ang wiki nga sulundan',
'image_tip' => 'Ginpilit nga file',
@@ -672,10 +659,8 @@ Mga Pahina sa [[Special:Watchlist|imo watchlist]] '''madukot'''.",
# Watchlist
'watchlist' => 'Mga akon ginabantayan',
'mywatchlist' => 'Akon ginabantayan',
-'addedwatch' => 'Gindugang sa lista sang ginabantayan',
'addedwatchtext' => "Ang pahina nga \"[[:\$1]]\" gindugang na sa imo [[Special:Watchlist|ginabantayan]].
Ang mga pagbag-o sa buwas-damlag kag mga kaangot nga pahina sang istoryahanay pagalistahon diya, kag ang pahina maggwa nga '''madukot''' sa [[Special:RecentChanges|lista sang mga nagligad nga pagbag-o]] para mas mahapos makita.",
-'removedwatch' => 'Ginkuha na sa lista sang ginabanatayan',
'removedwatchtext' => 'Ang pahina nga "[[:$1]]" ginkakas halin sa [[Special:Watchlist|imo lista sang ginabantayan]].',
'watch' => 'Bantayan',
'watchthispage' => 'Bantayan ang mini nga pahina',
@@ -693,7 +678,7 @@ Ang mga pagbag-o sa buwas-damlag kag mga kaangot nga pahina sang istoryahanay pa
'confirmdeletetext' => 'Imo na pagapanason ang isa ka pahina kaupod sang iya mga kasaysayan.
Palihog kumpirmahon nga intensyon mo nga himu-on mini, nga na-intindihan mo ang abtan, kag gina-ubra mo mini nga nagasunod sa [[{{MediaWiki:Policy-url}}|patakaran]].',
'actioncomplete' => 'Tapos na ang aksyon',
-'deletedtext' => 'Napanas na ang "<nowiki>$1</nowiki>".
+'deletedtext' => 'Napanas na ang "$1".
Tan-awon ang $2 para sa nalista sang mga bag-o lang napanas.',
'deletedarticle' => 'ginpanas ang "[[$1]]"',
'dellogpage' => 'Lista sang pagpanas',
@@ -712,7 +697,7 @@ Tan-awon ang $2 para sa nalista sang mga bag-o lang napanas.',
'protectexpiry' => 'Maga-ekspayr sa:',
'protect_expiry_invalid' => 'Indi pwede ang oras sang pag-ekspayr.',
'protect_expiry_old' => 'Sang nagligad pa ang oras sang pag-ekspayr.',
-'protect-text' => "Pwede mo malantaw kag mabag-o ang lebel sang proteksiyon diya para sa pahina nga '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Pwede mo malantaw kag mabag-o ang lebel sang proteksiyon diya para sa pahina nga '''$1'''.",
'protect-locked-access' => "Ang imo account wala nakala-ong para magpangbag-o sang proteksyon nga lebel sang pahina.
Ari ang mga mga settings yanda para sa pahina nga '''$1''':",
'protect-cascadeon' => 'Protektado ang mini nga pahina kay nasakop mini sa mga gasunod nga {{PLURAL:$1|pahina, nga may|mga pahina, nga may}} pasunod nga proteksiyon nga naga-andar.
@@ -885,11 +870,10 @@ Ginapasugtan sa pagdugang sang rason sa kabilugan.',
'nextdiff' => 'Mas bag-o nga gin-islan →',
# Media information
-'file-info-size' => '$1 × $2 piksel, kadakuon sang file: $3, klase sang MIME: $4',
-'file-nohires' => '<small>Wala na sang mas mataas pa nga resolusyon (katin-aw).</small>',
-'svg-long-desc' => 'SVG file, nga ara sa $1 × $2 ka piksels, kadakuon sang file: $3',
-'show-big-image' => 'Bilog nga resolusyon (katin-aw)',
-'show-big-image-thumb' => '<small>Kadakuon sang mini nga prebyu: $1 × $2 piksels</small>',
+'file-info-size' => '$1 × $2 piksel, kadakuon sang file: $3, klase sang MIME: $4',
+'file-nohires' => '<small>Wala na sang mas mataas pa nga resolusyon (katin-aw).</small>',
+'svg-long-desc' => 'SVG file, nga ara sa $1 × $2 ka piksels, kadakuon sang file: $3',
+'show-big-image' => 'Bilog nga resolusyon (katin-aw)',
# Bad image list
'bad_image_list' => 'Ang pormat nga pagasundon:
@@ -912,11 +896,17 @@ Ang iban ay pagataguon sang default.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Islan ang mini nga file gamit ang panluwas nga aplikasyon',
-'edit-externally-help' => '(Tan-awa ang [http://www.mediawiki.org/wiki/Manual:External_editors mga pama-agi sa paghanda kag pag-ayos] para sa mga dugang nga impormasyon)',
+'edit-externally-help' => '(Tan-awa ang [//www.mediawiki.org/wiki/Manual:External_editors mga pama-agi sa paghanda kag pag-ayos] para sa mga dugang nga impormasyon)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tanan',
diff --git a/languages/messages/MessagesCrh_cyrl.php b/languages/messages/MessagesCrh_cyrl.php
index 310d7897..afa6bfda 100644
--- a/languages/messages/MessagesCrh_cyrl.php
+++ b/languages/messages/MessagesCrh_cyrl.php
@@ -108,49 +108,49 @@ $messages = array(
'tog-underline' => 'Багълантыларнынъ тюбюни Ñызув:',
'tog-highlightbroken' => 'Бош багълантыларны <a href="" class="new">бу шекильде</a> (альтернатив: <a href="" class="internal">бу шекильде</a>) коÑьтер.',
'tog-justify' => 'Параграф Ñки Ñкъкъа ÑÑлап тиз',
-'tog-hideminor' => 'Кичик денъишикликлерни "Сонъки денъишикликлер" ÑаифеÑинде гизле',
-'tog-hidepatrolled' => 'Сонъки денъишикликлер коÑьтергенде тешкерильген денъишикликлерни гизле',
+'tog-hideminor' => '"Сонъки денъимелер" ÑаифеÑинде кичик денъишмелерни гизле',
+'tog-hidepatrolled' => 'Сонъки денъишмелер коÑьтергенде тешкерильген денъишмелерни гизле',
'tog-newpageshidepatrolled' => 'Янъы Ñаифелер коÑьтергенде тешкерильген Ñаифелерни гизле',
-'tog-extendwatchlist' => 'Козетюв джедвелини, тек Ñонъки дегиль, бутюн денъишикликлерни корьмек ичюн кенишлет',
-'tog-usenewrc' => 'ТафÑилÑтлы Ñонъки денъишикликлер джедвелини къуллан (JavaScript керек)',
+'tog-extendwatchlist' => 'Козетюв джедвелини, тек Ñонъки дегиль, бутюн денъишмелерни корьмек ичюн кенишлет',
+'tog-usenewrc' => 'ТафÑилÑтлы Ñонъки денъишмелер джедвелини къуллан (JavaScript керек)',
'tog-numberheadings' => 'Серлеваларны автоматик номераландыр',
-'tog-showtoolbar' => 'Денъишиклик Ñпкъан вакъытта Ñрдымджы дёгмелерни коÑьтер. (JavaScript)',
+'tog-showtoolbar' => 'Саифени денъиштирген вакъытта Ñрдымджы дёгмелерни коÑьтер. (JavaScript)',
'tog-editondblclick' => 'Саифени чифт баÑып денъиштирмеге башла (JavaScript)',
'tog-editsection' => 'Болюклерни [денъиштир] багълантыларны иле денъиштирме акъкъы бер',
-'tog-editsectiononrightclick' => 'Болюк ÑерлеваÑына онъ баÑып болюкте денъишикликке рухÑет бер. (JavaScript)',
+'tog-editsectiononrightclick' => 'Болюк ÑерлеваÑына онъ баÑкъанда денъиштирюв пенджереÑини ач. (JavaScript)',
'tog-showtoc' => 'Мундеридже джедвели коÑьтер (3 данеден зиÑде ÑерлеваÑÑ‹ олгъан Ñаифелер ичюн)',
'tog-rememberpassword' => 'Киришимни бу браузерде хатырла (Ñнъ чокъ $1 {{PLURAL:$1|кунь|кунь}} ичюн)',
'tog-watchcreations' => 'Мен Ñраткъан Ñаифелерни козетюв джедвелиме кирÑет',
'tog-watchdefault' => 'Мен денъиштирген Ñаифелерни козетюв джедвелиме кирÑет',
'tog-watchmoves' => 'Меним тарафымдан ады денъиштирильген Ñаифелерни козетюв джедвелиме кирÑет',
'tog-watchdeletion' => 'Мен ёкъ Ñткен Ñаифелерни козетюв джедвелиме кирÑет',
-'tog-minordefault' => 'Япкъан денъишикликлеримни кичик денъишиклик оларакъ ишаретле',
+'tog-minordefault' => 'Япкъан денъишмелеримни кичик денъишмедир деп ишаретле',
'tog-previewontop' => 'Бакъып чыкъувны Ñзув пенджеренинъ уÑтюнде коÑьтер',
'tog-previewonfirst' => 'Денъиштирмеде бакъып чыкъувны коÑьтер',
'tog-nocache' => 'Браузер Ñаифелерни афызаÑында тутмаÑын',
-'tog-enotifwatchlistpages' => 'Саифе денъишикликлеринде манъа e-mail ёлла',
-'tog-enotifusertalkpages' => 'Къулланыджы Ñаифемде денъишиклик олгъанда манъа e-mail ёлла',
-'tog-enotifminoredits' => 'Саифелерде кичик денъишиклик олгъанда да манъа e-mail ёлла',
+'tog-enotifwatchlistpages' => 'Козетюв джедвелимдеки бир Ñаифе денъиштирильгенде манъа e-mail ёлла',
+'tog-enotifusertalkpages' => 'Къулланыджы Ñаифем денъиштирильгенде манъа e-mail ёлла',
+'tog-enotifminoredits' => 'Кичик денъишме олгъанда да манъа e-mail ёлла',
'tog-enotifrevealaddr' => 'Бильдирюв мектюплеринде e-mail адреÑимни коÑьтер',
'tog-shownumberswatching' => 'Козеткен къулланыджы ÑайыÑыны коÑьтер',
-'tog-oldsig' => 'Шимдики имзанъыз:',
+'tog-oldsig' => 'Шимдики имза:',
'tog-fancysig' => 'Имза викиметин киби олÑун (автоматик багъланты олмаз)',
-'tog-externaleditor' => 'Денъишикликлерни башкъа Ñдитор программаÑÑ‹ иле Ñп',
-'tog-externaldiff' => 'Тенъештирмелерни тыш программагъа Ñптыр.',
+'tog-externaleditor' => 'Тыш тюрлендиргич (редактор) къуллан (теджрибели къулланыджылар ичюн; компьютеринъизни махÑÑƒÑ Ñазламакъ керек. [ //www.mediawiki.org/wiki/Manual:External_editors тафÑилÑтлы малюмат мында])',
+'tog-externaldiff' => 'Тенъештирмек ичюн тыш бир программа къуллан (теджрибели къулланыджылар ичюн; компьютеринъизни махÑÑƒÑ Ñазламакъ керек. [ //www.mediawiki.org/wiki/Manual:External_editors тафÑилÑтлы малюмат мында])',
'tog-showjumplinks' => '«Бар» багълантыÑыны фааллештир',
'tog-uselivepreview' => 'Джанлы бакъып чыкъув хуÑуÑиетини къуллан (JavaScript) (даа денъеме алында)',
-'tog-forceeditsummary' => 'Денъишиклик къыÑкъа тарифини бош ташлагъанда мени тенбиле',
-'tog-watchlisthideown' => 'Козетюв джедвелимден меним денъишикликлеримни гизле',
-'tog-watchlisthidebots' => 'Козетюв джедвелимден бот денъишикликлерини гизле',
-'tog-watchlisthideminor' => 'Козетюв джедвелимден кичик денъишикликлерни гизле',
-'tog-watchlisthideliu' => 'Козетюв джедвелимде къайдлы къулланыджылар тарафындан Ñпылгъан денъишикликлерни коÑьтерме',
-'tog-watchlisthideanons' => 'Козетюв джедвелимде къайдÑыз (аноним) къулланыджылар тарафындан Ñпылгъан денъишикликлерни коÑьтерме',
-'tog-watchlisthidepatrolled' => 'Козетюв джедвелинде тешкерильген денъишикликлерни гизле',
+'tog-forceeditsummary' => 'Денъишменинъ къыÑкъа тарифини бош ташлаÑам мени тенбиле',
+'tog-watchlisthideown' => 'Козетюв джедвелимден меним денъишмелеримни гизле',
+'tog-watchlisthidebots' => 'Козетюв джедвелимден бот денъишмелерини гизле',
+'tog-watchlisthideminor' => 'Козетюв джедвелимден кичик денъишмелерни гизле',
+'tog-watchlisthideliu' => 'Козетюв джедвелимде къайдлы къулланыджылар тарафындан Ñпылгъан денъишмелерни коÑьтерме',
+'tog-watchlisthideanons' => 'Козетюв джедвелимде къайдÑыз (аноним) къулланыджылар тарафындан Ñпылгъан денъишмелерни коÑьтерме',
+'tog-watchlisthidepatrolled' => 'Козетюв джедвелинде тешкерильген денъишмелерни гизле',
'tog-nolangconversion' => 'Язув ÑиÑтемаÑÑ‹ вариантлары денъиштирювни ишлетме',
'tog-ccmeonemails' => 'Дигер къулланыджыларгъа ёллагъан мектюплеримнинъ копиÑларыны манъа да ёлла',
'tog-diffonly' => 'Тенъештирме Ñаифелеринде Ñаифенинъ ÑÑÐ°Ñ Ð¼ÑƒÐ½Ð´ÐµÑ€Ð¸Ð´Ð¶ÐµÑини коÑьтерме',
'tog-showhiddencats' => 'Гизли категориÑларны коÑьтер',
-'tog-norollbackdiff' => 'ЛÑгъу Ñтильген денъишикликлерни коÑьтерме',
+'tog-norollbackdiff' => 'ЛÑгъу Ñтильген денъишмелерни коÑьтерме',
'underline-always' => 'Даима',
'underline-never' => 'ÐÑла',
@@ -233,14 +233,7 @@ $messages = array(
'index-category' => 'ИндекÑли Ñаифелер',
'noindex-category' => 'ИндекÑÑиз Ñаифелер',
-'linkprefix' => '/^(.*?)([a-zâçğıñöşüA-ZÂÇĞİÑÖŞÜa-ÑÑ‘Ð-ЯЫ„]+)$/sDu',
-'mainpagetext' => "'''MediaWiki мувафакъиетнен къурулды.'''",
-'mainpagedocfooter' => "Бу викининъ ёл-ёругъыны [http://meta.wikimedia.org/wiki/Help:Contents User's Guide къулланыджы къылавузындан] огренип олаÑынъыз.
-
-== Базы файдалы Ñайтлар ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Олуджы Ñазламалар джедвели];
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki боюнджа Ñыкъ берильген Ñуаллернен джеваплар];
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-нинъ Ñнъы верÑиÑларынынъ чыкъувындан хабер йиберюв].",
+'linkprefix' => '/^(.*?)([a-zâçğıñöşüA-ZÂÇĞİÑÖŞÜa-ÑÑ‘Ð-ЯЫ„]+)$/sDu',
'about' => 'Ðкъкъында',
'article' => 'Саифе',
@@ -292,7 +285,6 @@ $messages = array(
'history' => 'Саифенинъ кечмиши',
'history_short' => 'Кечмиш',
'updatedmarker' => 'Ñонъки зиÑретимден Ñонъ Ñнъаргъан',
-'info_short' => 'Малюмат',
'printableversion' => 'БаÑылмагъа уйгъун корюниш',
'permalink' => 'Сонъки алына багъланты',
'print' => 'БаÑÑ‚Ñ‹Ñ€',
@@ -302,7 +294,7 @@ $messages = array(
'create-this-page' => 'Бу Ñаифени Ñрат',
'delete' => 'Ðкъ ÑÑ‚',
'deletethispage' => 'Саифени ёкъ ÑÑ‚',
-'undelete_short' => '{{PLURAL:$1|1|$1}} денъишикликни кери кетир',
+'undelete_short' => '{{PLURAL:$1|1|$1}} денъишмени кери кетир',
'protect' => 'Къорчала',
'protect_change' => 'денъиштир',
'protectthispage' => 'Саифени къорчалав алтына ал',
@@ -372,7 +364,7 @@ $1',
'retrievedfrom' => 'Менба – "$1"',
'youhavenewmessages' => 'Янъы $1 бар ($2).',
'newmessageslink' => 'беÑнатынъыз',
-'newmessagesdifflink' => 'музакере Ñаифенъизнинъ Ñонъки денъишиклиги',
+'newmessagesdifflink' => 'музакере Ñаифенъизнинъ Ñонъки денъишкени',
'youhavenewmessagesmulti' => '$1 ÑаифеÑинде Ñнъы беÑнатынъыз бар.',
'editsection' => 'денъиштир',
'editold' => 'денъиштир',
@@ -385,7 +377,7 @@ $1',
'hidetoc' => 'гизле',
'thisisdeleted' => '$1 корьмеге Ñ Ð´Ð° кери кетирмеге иÑтейÑинъизми?',
'viewdeleted' => '$1 корь?',
-'restorelink' => 'ёкъ Ñтильген {{PLURAL:$1|1|$1}} денъишиклиги',
+'restorelink' => 'ёкъ Ñтильген {{PLURAL:$1|1|$1}} денъишмеÑи',
'feedlinks' => 'Бу шекильде:',
'feed-invalid' => 'Ðбуне каналынынъ чешити Ñнълыштыр.',
'feed-unavailable' => 'Ð¡Ð¸Ð½Ð´Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð»ÐµÐ½Ñ‚Ð°Ð»Ð°Ñ€Ñ‹ къулланылып оламай.',
@@ -473,13 +465,12 @@ $1',
'actionthrottledtext' => 'Спамгъа къаршы куреш Ñебебинден бу арекетни аз вакъыт ичинде чокъ кере текрарлап оламайÑынъыз. Мумкюн олгъан къарардан зиÑде арекет Ñптынъыз. Бир къач дакъкъадан Ñонъ текрарлап бакъынъыз.',
'protectedpagetext' => 'Бу Ñаифени кимÑе денъиштирмеÑин деп о блок Ñтильди.',
'viewsourcetext' => 'Саифенинъ кодуны козьден кечирип копиÑлай билеÑинъиз:',
-'protectedinterface' => 'Бу Ñаифеде ÑиÑтема интерфейÑининъ метини булунгъаны ичюн мында хата чыкъмаÑын деп денъишиклик Ñпмакъ ÑÑакъ.',
-'editinginterface' => "'''Тенби''': MediaWiki ÑиÑтема беÑнатылы бир Ñаифени денъиштирмектеÑинъиз. Бу Ñаифедеки денъишикликлер къулланыджы Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ ÐºÐ¾Ñ€ÑŽÐ½Ð¸ÑˆÐ¸Ð½Ð¸ дигер къулланыджылар ичюн де денъиштиреджек. Лютфен, терджимелер ичюн [http://translatewiki.net/wiki/Main_Page?setlang=crh translatewiki.net] Ñайтыны (MediaWiki реÑмий Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð»ÐµÐ¹Ñ…Ð°ÑÑ‹) къулланынъыз.",
+'protectedinterface' => 'Бу Ñаифеде ÑиÑтема интерфейÑининъ метни бар. Онынъ ичюн мында бир хата чыкъмаÑын деп оны денъиштирмек ÑÑакъ.',
+'editinginterface' => "'''Тенби''': Ичинде MediaWiki ÑиÑтема беÑнаты олгъан бир Ñаифени денъиштиреÑтаÑыз. Бу Ñаифедеки денъишмелер къулланыджы интерфейÑининъ корюнишини дигер къулланыджылар ичюн де денъиштиреджек. Лютфен, терджимелер ичюн [//translatewiki.net/wiki/Main_Page?setlang=crh translatewiki.net] Ñайтыны (MediaWiki реÑмий Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ð»ÐµÐ¹Ñ…Ð°ÑÑ‹) къулланынъыз.",
'sqlhidden' => '(SQL иÑтинтагъы Ñакълы)',
'cascadeprotected' => 'Бу Ñаифени денъиштирип оламазÑынъыз, чюнки каÑкад къорчалав алтында булунгъан {{PLURAL:$1|Ñаифеге|Ñаифелерге}} менÑюптир:
$2',
'namespaceprotected' => "'''$1''' иÑим фезаÑында Ñаифелер денъиштирмеге акъкъынъыз ёкъ.",
-'customcssjsprotected' => 'Бу Ñаифеде дигер къулланыджынынъ шахÑий Ñазламалары бар олгъаны ичюн Ñаифени денъиштирип оламазÑынъыз.',
'ns-specialprotected' => '{{ns:special}} иÑим фезаÑындаки Ñаифелерни денъиштирмек ÑÑакъ.',
'titleprotected' => "Бойле Ñерлеванен Ñаифе Ñратмакъ ÑÑакътыр. ЯÑакълагъан: [[User:$1|$1]].
Себеп: ''$2''.",
@@ -502,7 +493,7 @@ $2',
'remembermypassword' => 'Киришимни бу компьютерде хатырла (Ñнъ чокъ $1 {{PLURAL:$1|кунь|кунь}} ичюн)',
'securelogin-stick-https' => 'Кирген Ñонъ HTTPS-ге багъланып тур',
'yourdomainname' => 'Домен адынъыз',
-'externaldberror' => 'Отурымынъыз ачылгъанда бир хата олды. Бу тыш ÑÑабынъызгъа денъишиклик Ñпмагъа акъкъынъыз олмаювындан мейдангъа келип ола.',
+'externaldberror' => 'Сайткъа киргенде бир хата олды. Бу тыш ÑÑабынъызны денъиштирмек акъкъынъыз олмагъанындан Ñебеп мейдангъа келип ола.',
'login' => 'Кириш',
'nav-login-createaccount' => 'Кириш / Къайд олув',
'loginprompt' => 'Отурым ачмакъ ичюн «cookies»ге изин бермелиÑинъиз.',
@@ -516,11 +507,12 @@ $2',
'createaccount' => 'Янъы ÑÑап ач',
'gotaccount' => "Даа Ñвель ÑÑап ачкъан Ñдинъизми? '''$1'''.",
'gotaccountlink' => 'Отурым ачынъыз',
+'userlogin-resetlink' => 'Кириш малюматыны унуттынъызмы?',
'createaccountmail' => 'e-mail ваÑтаÑынен',
'createaccountreason' => 'Себеп:',
'badretype' => 'КирÑеткен пароллеринъиз айны дегиль.',
'userexists' => 'КирÑеткен къулланыджы адынъыз Ñнди къулланыла.
-Башкъа бир къулланыджы ады Ñайланъыз.',
+Лютфен, башкъа бир къулланыджы ады Ñайланъыз.',
'loginerror' => 'Отурым ачма хатаÑÑ‹',
'createaccounterror' => 'ЭÑап Ñратылып оламай: $1',
'nocookiesnew' => 'Къулланыджы ÑÑабы ачылгъан, факъат танытылмагъан. {{SITENAME}} къулланыджыларны танытмакъ ичюн «cookies»ни къуллана. Сизде бу Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ ÐºÑŠÐ°Ð¿Ð°Ð»Ñ‹ вазиеттедир. «Cookies» функциÑÑыны ишлетип текрар Ñнъы адынъыз ве паролинъизнен тырышып бакъыныз.',
@@ -531,7 +523,7 @@ $2',
'nosuchuser' => '«$1» адлы къулланыджы ёкъ.
Къулланыджы адларында буюк ве кичик арифлер араÑында фаркъ бар.
Догъру Ñзгъанынъызны тешкеринъиз Ñ Ð´Ð° [[Special:UserLogin/signup|Ñнъы къулланыджы ÑÑабыны ачынъыз]].',
-'nosuchusershort' => '«<nowiki>$1</nowiki>» адлы къулланыджы тапыламады. Ðдынъызны догъру Ñзгъанынъыздан Ñмин олунъыз.',
+'nosuchusershort' => '«$1» адлы къулланыджы тапыламады. Ðдынъызны догъру Ñзгъанынъыздан Ñмин олунъыз.',
'nouserspecified' => 'Къулланыджы адыны кирÑетмек керекÑинъиз.',
'login-userblocked' => 'Бу къулланыджы блок Ñтильген. Кирмеге рухÑет Ñтильмей.',
'wrongpassword' => 'КирÑеткен паролинъиз Ñнълыштыр. Лютфен, текрар Ñтинъиз.',
@@ -539,6 +531,7 @@ $2',
Лютфен, текрар Ñтинъиз.',
'passwordtooshort' => 'Паролинъизде Ñнъ аз {{PLURAL:$1|1|$1}} ишарет олмалы.',
'password-name-match' => 'Паролинъиз къулланыджы адынъыздан фаркълы олмалы.',
+'password-login-forbidden' => 'Бу къулланыджы ады ве парольни къулланмакъ ÑÑакътыр.',
'mailmypassword' => 'Янъы пароль йибер',
'passwordremindertitle' => '{{grammar:genitive|{{SITENAME}}}} къулланыджынынъ пароль хатырлатувы',
'passwordremindertext' => 'Бирев (бельки де бу ÑизÑинъиз, $1 IP адреÑинден) {{SITENAME}} Ñайты ичюн ($4) Ñнъы къулланыджы паролини иÑтеди.
@@ -573,7 +566,7 @@ $2 къулланыджыÑына вакътынджа <code>$3</code> пароÐ
'loginlanguagelabel' => 'Тиль: $1',
'suspicious-userlogout' => 'Чыкъыш иÑтегенинъиз ред Ñтильди, чюнки бозукъ бир браузер Ñ Ð´Ð° кÑшлейиджи прокÑи тарафындан ёллангъан киби корюне.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Парольни денъиштир',
'resetpass_announce' => 'Мувакъкъат код ваÑтаÑынен кирдинъиз. Киришни тамамламакъ ичюн Ñнъы парольни мында къоюнъыз:',
'resetpass_header' => 'ЭÑапнынъ паролини денъиштир',
@@ -601,8 +594,6 @@ $2 къулланыджыÑына вакътынджа <code>$3</code> пароÐ
'extlink_tip' => 'Тыш багъланты (ÐÐ´Ñ€ÐµÑ Ð¾Ð³ÑŽÐ½Ðµ http:// къоймагъа унутманъыз)',
'headline_sample' => 'Серлева ÑзыÑÑ‹',
'headline_tip' => '2-нджи Ñевие Ñерлева',
-'math_sample' => 'Бу ерге формуланы кирÑетинъиз',
-'math_tip' => 'РиÑзий (математик) формула (LaTeX форматында)',
'nowiki_sample' => 'СербеÑÑ‚ формат метининъизни мында Ñзынъыз.',
'nowiki_tip' => 'вики формат Ñтювини игнор ÑÑ‚',
'image_sample' => 'Resim.jpg',
@@ -613,17 +604,17 @@ $2 къулланыджыÑына вакътынджа <code>$3</code> пароÐ
'hr_tip' => 'Горизонталь Ñызыкъ (пек Ñыкъ къулланманъыз)',
# Edit pages
-'summary' => 'Денъишиклик къыÑкъа таÑвири:',
+'summary' => 'Денъишменинъ къыÑкъа тарифи:',
'subject' => 'Мевзу/Ñерлева:',
-'minoredit' => 'Кичик денъишиклик',
+'minoredit' => 'Бу, кичик денъишмедир',
'watchthis' => 'Саифени козет',
'savearticle' => 'Саифени Ñакъла',
'preview' => 'Бакъып чыкъув',
'showpreview' => 'Бакъып чыкъ',
'showlivepreview' => 'Тез бакъып чыкъув',
-'showdiff' => 'Денъишикликлерни коÑьтер',
-'anoneditwarning' => "'''Дикъкъат''': Отурым ачмагъанынъыздан Ñебеп денъишиклик тарихына Ñизинъ IP адреÑинъиз Ñзылыр.",
-'anonpreviewwarning' => 'Отурым ачмадынъыз. Саифени ÑакълаÑанъыз, денъишиклик тарихына Ñизинъ IP адреÑинъиз Ñзылыр.',
+'showdiff' => 'Денъишмелерни коÑьтер',
+'anoneditwarning' => "'''Дикъкъат''': Сайткъа кирмегенинъизден Ñебеп денъишмелер тарихына Ñизинъ IP адреÑинъиз Ñзылыр.",
+'anonpreviewwarning' => 'Сайткъа кирмединъиз. Саифени ÑакълаÑанъыз, денъишмелер тарихына Ñизинъ IP адреÑинъиз Ñзылыр.',
'missingsummary' => "'''Хатырлатма.''' Денъиштирмелеринъизни къыÑкъадан тариф Ñтмединъиз. «Саифени Ñакъла» дёгмеÑине текрар баÑув иле денъиштирмелеринъиз тефÑирÑиз Ñакъланаджакълар.",
'missingcommenttext' => 'Лютфен, ашагъыда тефÑир Ñзынъыз.',
'missingcommentheader' => "'''Хатырлатма:''' ТефÑир мевзуÑыны/ÑерлеваÑыны Ñзмадынъыз. «{{int:savearticle}}» дёгмеÑине текрар баÑкъан Ñонъ тефÑиринъиз ÑерлеваÑыз Ñакъланыр.",
@@ -676,15 +667,15 @@ $2 къулланыджыÑына вакътынджа <code>$3</code> пароÐ
Эгер Ñиз аноним къулланыджы олÑанъыз ве Ñизге кельген беÑнатларны Ñнълыштан кельгенини беллеÑенъиз, лютфен, артыкъ бунынъ киби къарышыкълыкъ олмаÑын деп [[Special:UserLogin/signup|къайд олунъыз]] Ñ Ð´Ð° [[Special:UserLogin|отурым ачынъыз]].''",
'noarticletext' => 'Бу Ñаифе шимди боштыр. Бу Ñерлеваны башкъа Ñаифелерде [[Special:Search/{{PAGENAME}}|къыдырып олаÑынъыз]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} багълы журнал къайдларыны къыдырып олаÑынъыз] Ñ Ð´Ð° бу Ñаифени озюнъиз [{{fullurl:{{FULLPAGENAME}}|action=edit}} Ñзып олаÑынъыз]</span>.',
'noarticletext-nopermission' => 'Бу Ñаифе шимди боштыр. Бу Ñерлеваны башкъа Ñаифелерде [[Special:Search/{{PAGENAME}}|къыдыра биле]] Ñ Ð´Ð° <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} багълы журналларны козьден кечире билеÑинъиз]</span>.',
-'userpage-userdoesnotexist' => '"$1" адлы къулланыджы ёкътыр. Тамам бу Ñаифени денъиштирмеге иÑтегенинъизни тешкеринъиз.',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" адлы къулланыджы ёкътыр. Тамам бу Ñаифени денъиштирмеге иÑтегенинъизни тешкеринъиз.',
'userpage-userdoesnotexist-view' => '«$1» адлы къулланыджы ÑÑабы ёкъ.',
'blocked-notice-logextract' => 'Бу къулланыджы шимди блок Ñтильген.
Блок Ñтюв журналынынъ Ñонъки ÑзыÑÑ‹ ашагъыда коÑьтерильген:',
-'clearyourcache' => "'''Ихтар:''' Сазламаларынъызны Ñакълагъандан Ñонъ денъишикликлерни корьмек ичюн браузеринъизнинъ кÑшини темизлемек керекÑинъиз.
-'''Mozilla / Firefox / Safari:''' ''Shift'' баÑылы Ñкенде Ñаифени Ñнъыдан юклеп Ñ Ð´Ð° ''Ctrl-Shift-R'' Ñпып (Mac ичюн ''Command-R'');
-'''Konqueror:''' Ñаифени Ñнъыдан юкле дёгмеÑине Ñ Ð´Ð° F5 баÑып;
-'''Opera:''' ''Tools → Preferences'' менюÑинде кÑшни темизлеп;
-'''Internet Explorer:''' ''Ctrl'' баÑылы Ñкенде Ñаифени Ñнъыдан юклеп Ñ Ð´Ð° ''Ctrl-F5'' баÑып.",
+'clearyourcache' => "'''Ихтар:''' Бельки Ñазламаларынъызны Ñакълагъандан Ñонъ денъишмелерни корьмек ичюн браузеринъизнинъ кÑшини темизлемек керек олурÑынъыз.
+'''Mozilla / Firefox / Safari:''' ''Shift'' баÑып Ñаифени Ñнъыдан юклемек Ñ Ð´Ð° ''Ctrl-Shift-R'' баÑмакъ (Mac ичюн ''Command-R'');
+'''Konqueror:''' Ñаифени Ñнъыдан юкле дёгмеÑине Ñ Ð´Ð° F5 баÑмакъ;
+'''Opera:''' ''Tools → Preferences'' менюÑинде кÑшни темизлемек;
+'''Internet Explorer:''' ''Ctrl'' баÑып Ñаифени Ñнъыдан юклеиек Ñ Ð´Ð° ''Ctrl-F5'' баÑмакъ.",
'usercssyoucanpreview' => "'''ТевÑие:''' Янъы CSS файлыны тешкермек ичюн Ñаифени Ñакъламаздан Ñвель «{{int:showpreview}}» дёгмеÑине баÑынъыз.",
'userjsyoucanpreview' => "'''ТевÑие:''' Янъы JavaScript-инъизни тешкермек ичюн Ñаифени Ñакъламаздан Ñвель «{{int:showpreview}}» дёгмеÑине баÑынъыз.",
'usercsspreview' => "'''Унутманъыз, бу тек бакъып чыкъув - къулланыджы CSS файлынъыз Ð°Ð»Ñ Ð´Ð°Ð° Ñакъланмады!'''",
@@ -703,17 +694,17 @@ $2 къулланыджыÑына вакътынджа <code>$3</code> пароÐ
'editing' => '"$1" ÑаифеÑини денъиштирмектеÑинъиз',
'editingsection' => '"$1" ÑаифеÑинде болюк денъиштирмектеÑинъиз',
'editingcomment' => '$1 ÑаифеÑини денъиштирмектеÑинъиз (Ñнъы болюк)',
-'editconflict' => 'Денъишиклик зыт кетюви: $1',
-'explainconflict' => "Сиз Ñаифени денъиштирген вакъытта башкъа бири де денъишиклик Ñпты.
+'editconflict' => 'Денъишмелер конфликти: $1',
+'explainconflict' => "Сиз Ñаифени денъиштирген вакъытта башкъа бири де денъишме Ñпты.
Юкъарыдаки Ñзы Ñаифенинъ шимдики алыны коÑьтере.
-Сизинъ денъишикликлеринъиз алткъа коÑьтерильди.
-Шимди Ñпкъан денъишиклеринъизни ашагъы пенджереден юкъары пенджереге авуштырмакъ керек оладжакъÑынъыз.
+Сизинъ денъишмелеринъиз аÑтында коÑьтерильди.
+Шимди Ñпкъан денъишмелеринъизни ашагъы пенджереден юкъары пенджереге авуштырмакъ керекÑинъиз.
\"{{int:savearticle}}\"гъа баÑкъанда '''тек''' юкъарыдаки Ñзы Ñакъланаджакъ.",
'yourtext' => 'Сизинъ метнинъиз',
'storedversion' => 'Сакълангъан метин',
'nonunicodebrowser' => "'''ТЕÐБИ: Браузеринъизде Unicode кодламаÑÑ‹ танылмаз. Саифелер денъиштиргенде бутюн ASCII олмагъан ишаретлернинъ ерине оларнынъ оналтылыкъ коду Ñзылыр.'''",
-'editingold' => "'''ДИКЪКЪÐТ: Саифенинъ ÑÑки бир верÑиÑÑында денъишиклик ÑпмакътаÑынъыз.
-Сакълагъанынъызда бу тарихлы верÑиÑдан кунюмизге къадар олгъан денъишикликлер ёкъ оладжакъ.'''",
+'editingold' => "'''ДИКЪКЪÐТ: Саифенинъ ÑÑки бир верÑиÑÑыны денъиштиреÑтаÑыз.
+Саифени Ñакълагъанынъыздан Ñонъ бу тарихлы верÑиÑдан кунюмизге къадар олгъан денъишмелер ёкъ оладжакъ.'''",
'yourdiff' => 'Фаркълар',
'copyrightwarning' => "'''Лютфен, дикъкъат:''' {{SITENAME}} Ñайтына къошулгъан бутюн иÑÑелер <i>$2</i> мукъавелеÑи даиреÑиндедир (тафÑилÑÑ‚ ичюн $1 ÑаифеÑине бакъынъыз).
Къошкъан иÑÑенъизнинъ башкъа инÑанлар тарафындан аджымаÑызджа денъиштирильмеÑини Ñ Ð´Ð° азат тарзда ве ÑынъырÑызджа башкъа ерлерге дагъытылмаÑыны иÑтемеÑенъиз, иÑÑе къошманъыз.<br />
@@ -755,7 +746,7 @@ $2 къулланыджыÑына вакътынджа <code>$3</code> пароÐ
'moveddeleted-notice' => 'Бу Ñаифе ёкъ Ñтильген.
Саифенинъ ёкъ Ñтилюв ве авуштырылув къайдлары ашагъыда берильген.',
'log-fulllog' => 'Журналны толуÑынджа коÑьтер',
-'edit-hook-aborted' => 'Денъишиклик ченгель процедураÑынен токътатылды.
+'edit-hook-aborted' => 'Денъишме ченгель процедураÑынен токътатылды.
Ич бир изаат берильмеди.',
'edit-gone-missing' => 'Саифе Ñнъартылып оламай.
Ола биле ки, о ёкъ Ñтильгендир.',
@@ -910,7 +901,6 @@ $3 мына бу Ñебепни бильдирди: ''$2''",
'changepassword' => 'Пароль денъиштир',
'prefs-skin' => 'РеÑимлеме',
'skin-preview' => 'Бакъып чыкъув',
-'prefs-math' => 'РиÑзий (математик) ишаретлер',
'datedefault' => 'Стандарт',
'prefs-datetime' => 'Тарих ве Ñаат',
'prefs-personal' => 'Къулланыджы малюматы',
@@ -934,8 +924,6 @@ $3 мына бу Ñебепни бильдирди: ''$2''",
'columns' => 'Сутун',
'searchresultshead' => 'Къыдырув',
'resultsperpage' => 'Саифеде коÑьтериледжек тапылгъан Ñаифе ÑайыÑÑ‹',
-'contextlines' => 'Тапылгъан Ñаифе ичюн айрылгъан Ñатыр ÑайыÑÑ‹',
-'contextchars' => 'Сатырдаки ариф ÑайыÑÑ‹',
'recentchangesdays' => 'Сонъки денъишикликлер ÑаифеÑинде коÑьтериледжек кунь ÑайыÑÑ‹:',
'recentchangesdays-max' => '(Ñнъ чокъ $1 {{PLURAL:$1|кунь|кунь}})',
'recentchangescount' => 'Ог бельгиленген коÑьтериледжек денъишикликлер ÑайыÑÑ‹:',
@@ -1173,10 +1161,6 @@ $3 мына бу Ñебепни бильдирди: ''$2''",
'upload-maxfilesize' => 'Ðзамий (макÑималь) файл буюклиги: $1',
'watchthisupload' => 'Бу файлны козет',
'filewasdeleted' => 'Бу иÑимде бир файл бар Ñди, амма ёкъ Ñтильген Ñди. Лютфен, текрар юклемеден Ñвель $1 тешкеринъиз.',
-'upload-wasdeleted' => "'''Дикъкъат: Эвельде ёкъ Ñтильген файлны юклемектеÑинъиз.'''
-
-Эр алда бу файлны юклемеге девам Ñтмеге иÑтейÑинъизми?
-Бу файл ичюн ёкъ Ñтювнинъ журналыны мында бакъып олаÑынъыз:",
'filename-bad-prefix' => "Сиз юклеген файлнынъ ады '''\"\$1\"'''-нен башлана. Бу, адетиндже, ракъамлы фотоаппаратлардан файл адына Ñзылгъан манаÑыз ишаретлердир. Лютфен, бу файл ичюн анълыджа бир ад Ñайлап Ñзынъыз.",
'upload-success-subj' => 'Юкленюв беджерильди',
@@ -1435,11 +1419,9 @@ $3 мына бу Ñебепни бильдирди: ''$2''",
'watchlistanontext' => 'Козетюв джедвелини бакъмакъ Ñ Ð´Ð° денъиштирмек ичюн $1 борджлуÑынъыз.',
'watchnologin' => 'Отурым ачмакъ керек',
'watchnologintext' => 'Озь козетюв джедвелинъизни денъиштирмек ичюн [[Special:UserLogin|отурым ачынъыз]]',
-'addedwatch' => 'Козетюв джедвелине кирÑетмек',
'addedwatchtext' => '"[[:$1]]" ÑаифеÑи [[Special:Watchlist|козетюв джевделинъизге]] кирÑетильди.
Бу Ñаифедеки ве онынънен багълы Ñаифелердеки оладжакъ денъишикликлер бу джедвельде бельгиленеджек, Ñм де олар козьге чарпмаÑÑ‹ ичюн [[Special:RecentChanges|Ñнъы денъишиклик джедвели]] булунгъан Ñаифеде къалын оларакъ коÑьтерилир.
Бираздан Ñонъ козетюв джедвелинъизден бир де бир Ñаифени ёкъ Ñтмеге иÑтеÑенъиз де, Ñаифенинъ юкъарыÑындаки Ñол тарафта "козетме" дёгмеÑине баÑынъыз.',
-'removedwatch' => 'Козетюв джедвелинден ёкъ ÑÑ‚',
'removedwatchtext' => '"[[:$1]]" ÑаифеÑи [[Special:Watchlist|козетюв джедвелинъизден]] ёкъ Ñтильди.',
'watch' => 'Козет',
'watchthispage' => 'Бу Ñаифени козет',
@@ -1490,13 +1472,13 @@ e-mail адреÑи: $PAGEEDITOR_EMAIL
--
Сазламаларны денъиштирмек ичюн:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Саифени козетюв джедвелинден ёкъ Ñтмек ичюн:
$UNWATCHURL
Ярдым ве теклифлер ичюн:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Саифени ёкъ ÑÑ‚',
@@ -1512,7 +1494,7 @@ $UNWATCHURL
Лютфен, нетиджелерини анълагъанынъызны ве [[{{MediaWiki:Policy-url}}|ёкъ Ñтюв политикаÑына]] уйгъунлыгъыны дикъкъаткъа алып, буны Ñпмагъа иÑтегенинъизни таÑдыкъланъыз.',
'actioncomplete' => 'Ðрекет тамамланды.',
'actionfailed' => 'Ðрекет Ñпыламады',
-'deletedtext' => '"<nowiki>$1</nowiki>" ёкъ Ñтильди.
+'deletedtext' => '"$1" ёкъ Ñтильди.
Ñкъын заманда ёкъ Ñтильгенлерни корьмек ичюн: $2.',
'deletedarticle' => '"[[$1]]" ёкъ Ñтильди',
'dellogpage' => 'Ðкъ Ñтюв журналы',
@@ -1545,7 +1527,7 @@ $UNWATCHURL
'protectexpiry' => 'Битиш тарихы:',
'protect_expiry_invalid' => 'Битиш тарихы Ñнълыш.',
'protect_expiry_old' => 'Битиш заманы кечмиштедир.',
-'protect-text' => "'''[[<nowiki>$1</nowiki>]]''' ÑаифеÑининъ къорчалав ÑевиеÑини мындан корип олур ве денъиштирип олаÑынъыз.",
+'protect-text' => "'''[[$1]]''' ÑаифеÑининъ къорчалав ÑевиеÑини мындан корип олур ве денъиштирип олаÑынъыз.",
'protect-locked-access' => "Къулланыджы ÑÑабынъыз Ñаифенинъ къорчалав Ñевиелерини денъиштирме еткиÑине Ñаип дегиль. '''$1''' ÑаифеÑининъ шимдики Ñазламалары шуларыдыр:",
'protect-cascadeon' => 'Бу Ñаифе шимди къорчалав алтындадыр, чюнки ашагъыда джедвелленген ве каÑкадлы къорчалав алтындаки {{PLURAL:$1|1|$1}} Ñаифеде къулланыла.
Бу Ñаифенинъ къорчалав ÑевиеÑини денъиштирип олаÑынъыз, амма каÑкадлы къорчалав теÑир Ñтильмейджек.',
@@ -1630,7 +1612,6 @@ $UNWATCHURL
'blockip' => 'Бу IP адреÑинден иришимни блок ÑÑ‚',
'blockip-legend' => 'Къулланыджыны блок ÑÑ‚',
'blockiptext' => 'Ðшагъыдаки форманы къулланып белли бир IP адреÑининъ Ñ Ð´Ð° къулланыджынынъ иришимини блок Ñтип олаÑынъыз. Бу тек вандализмни блок Ñтмек ичюн ве [[{{MediaWiki:Policy-url}}|къаиделерге]] уйгъун оларакъ Ñпылмалы. Ðшагъыгъа мытлакъа блок Ñтюв иле багълы бир изаат Ñзынъыз. (меÑелÑ: Шу Ñаифелерде вандализм Ñпты).',
-'ipaddress' => 'IP адреÑи',
'ipadressorusername' => 'IP адреÑи Ñ Ð´Ð° къулланыджы ады',
'ipbexpiry' => 'Битиш муддети',
'ipbreason' => 'Себеп',
@@ -1646,7 +1627,6 @@ $UNWATCHURL
'unblockip' => 'Къулланыджынынъ блок ÑтмеÑини чыкъар',
'ipusubmit' => 'Бу блок Ñтмени чыкъар',
'ipblocklist' => 'Блок Ñтильген къулланыджылар ве IP адреÑлери',
-'blocklistline' => '$1, $2 блок Ñтти: $3 ($4)',
'infiniteblock' => 'муддетÑиз',
'expiringblock' => '$1 $2 тарихында битеджек',
'blocklink' => 'блок ÑÑ‚',
@@ -1656,7 +1636,7 @@ $UNWATCHURL
'autoblocker' => 'Ðвтоматик оларакъ блок Ñтильдинъиз чюнки кеченлерде IP адреÑинъиз "[[User:$1|$1]]" къулланыджыÑÑ‹ тарафындан къулланылды. $1 адлы къулланыджынынъ блок Ñтилюви ичюн бильдирильген Ñебеп: "\'\'\'$2\'\'\'"',
'blocklogpage' => 'Блок Ñтюв журналы',
'blocklogentry' => '"[[$1]]" иришими $2 $3 токътатылды. Себеп',
-'blocklogtext' => 'Мында къулланыджы иришимине ёнелик блок Ñтюв ве блок чыкъарув къайдлары коÑьтериле. Ðвтоматик IP адреÑи блок Ñтювлери джедвельге кирÑетильмеди. Шимди иришими токътатылгъан къулланыджыларны [[Special:IPBlockList|IP блок Ñтюв джедвели]] ÑаифеÑинден корип олаÑынъыз.',
+'blocklogtext' => 'Мында къулланыджы иришимине ёнелик блок Ñтюв ве блок чыкъарув къайдлары коÑьтериле. Ðвтоматик IP адреÑи блок Ñтювлери джедвельге кирÑетильмеди. Шимди иришими токътатылгъан къулланыджыларны [[Special:BlockList|IP блок Ñтюв джедвели]] ÑаифеÑинден корип олаÑынъыз.',
'unblocklogentry' => '$1 къулланыджыÑынынъ блок ÑтмеÑи чыкъарылды',
'block-log-flags-nocreate' => 'Ñнъы ÑÑап ачмакъ ÑÑакъ Ñтильди',
'block-log-flags-noemail' => 'e-mail блок Ñтильди',
@@ -1739,7 +1719,7 @@ $UNWATCHURL
'allmessagesdefault' => 'Оригиналь метин',
'allmessagescurrent' => 'Шимди къулланылгъан метин',
'allmessagestext' => 'Ишбу джедвель MediaWiki-де мевджут олгъан бутюн ÑиÑтема беÑнатларынынъ джедвелидир.
-MediaWiki интерфейÑининъ чешит тиллерге терджиме Ñтювде иштирак Ñтмеге иÑтеÑенъиз [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ве [http://translatewiki.net translatewiki.net] Ñаифелерине зиÑрет Ñтинъиз.',
+MediaWiki интерфейÑининъ чешит тиллерге терджиме Ñтювде иштирак Ñтмеге иÑтеÑенъиз [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ве [//translatewiki.net translatewiki.net] Ñаифелерине зиÑрет Ñтинъиз.',
# Thumbnails
'thumbnail-more' => 'Буют',
@@ -1823,9 +1803,7 @@ MediaWiki интерфейÑининъ чешит тиллерге терджиÐ
'monobook.css' => '/* monobook темаÑынынъ аÑрларыны (наÑтройкаларыны) денъиштирмек ичюн бу ерини денъиштиринъиз. Бутюн Ñайтта теÑирли олур. */',
# Metadata
-'nodublincore' => 'Dublin Core RDF мета малюматы бу Ñервер ичюн ÑÑакълы.',
-'nocreativecommons' => 'Creative Commons RDF мета малюматы бу Ñервер ичюн ÑÑакълы.',
-'notacceptable' => 'Вики-Ñервер браузеринъиз окъуп оладжакъ форматында малюмат бералмай.',
+'notacceptable' => 'Вики-Ñервер браузеринъиз окъуп оладжакъ форматында малюмат бералмай.',
# Attribution
'anonymous' => '{{SITENAME}} Ñайтынынъ {{PLURAL:$1|1|$1}} къайдÑыз (аноним) къулланыджыÑÑ‹',
@@ -1847,14 +1825,6 @@ MediaWiki интерфейÑининъ чешит тиллерге терджиÐ
'spam_reverting' => '$1 Ñайтына багълантыÑÑ‹ олмагъан Ñонъки верÑиÑгъа кери кетирюв',
'spam_blanking' => 'Бар олгъан верÑиÑларда $1 Ñайтына багълантылар бар, темизлев',
-# Info page
-'infosubtitle' => 'Саифе акъкъында малюмат',
-'numedits' => 'Денъишиклик ÑайыÑÑ‹ (Ñаифе): $1',
-'numtalkedits' => 'Денъишиклик ÑайыÑÑ‹ (музакере ÑаифеÑи): $1',
-'numwatchers' => 'Козетиджи ÑайыÑÑ‹: $1',
-'numauthors' => 'МуÑллиф ÑайыÑÑ‹ (Ñаифе): $1',
-'numtalkauthors' => 'МуÑллиф ÑайыÑÑ‹ (музакере ÑаифеÑи): $1',
-
# Skin names
'skinname-standard' => 'Стандарт',
'skinname-nostalgia' => 'ÐоÑтальгиÑ',
@@ -1864,21 +1834,6 @@ MediaWiki интерфейÑининъ чешит тиллерге терджиÐ
'skinname-chick' => 'Чипче',
'skinname-simple' => 'Ðдий',
-# Math options
-'mw_math_png' => 'Даима PNG реÑим форматына чевир',
-'mw_math_simple' => 'Пек баÑит олÑа HTML, ёкъÑа PNG',
-'mw_math_html' => 'Мумкюн олÑа HTML, ёкъÑа PNG',
-'mw_math_source' => 'Денъиштирмеден TeX оларакъ ташла (метин темелли браузерлер ичюн)',
-'mw_math_modern' => 'Земаневий браузерлер ичюн тевÑие Ñтильген',
-'mw_math_mathml' => 'Мумкюн олÑа MathML (даа денъеме алында)',
-
-# Math errors
-'math_failure' => 'Ðйырыштырыламды',
-'math_unknown_error' => 'билинмеген хата',
-'math_unknown_function' => 'бельгиÑиз функциÑ',
-'math_lexing_error' => 'лекÑик хата',
-'math_syntax_error' => 'ÑинтакÑÐ¸Ñ Ñ…Ð°Ñ‚Ð°ÑÑ‹',
-
# Patrol log
'patrol-log-page' => 'Тешкерюв журналы',
'log-show-hide-patrol' => 'Тешкерюв журналыны $1',
@@ -1895,17 +1850,16 @@ MediaWiki интерфейÑининъ чешит тиллерге терджиÐ
'nextdiff' => 'Сонъраки денъишиклик →',
# Media information
-'mediawarning' => "'''Ихтар''': Бу файл тюрюнинъ ичинде Ñман ниетли код ола биле.
+'mediawarning' => "'''Ихтар''': Бу файл тюрюнинъ ичинде Ñман ниетли код ола биле.
Файлны ишлетип ишлетим ÑиÑтеманъызгъа зарар кетирип олурÑынъыз.",
-'imagemaxsize' => "РеÑим ольчюÑи Ñынъыры:<br />''(файл малюмат Ñаифелери ичюн)''",
-'thumbsize' => 'Кичик ольчю:',
-'widthheightpage' => '$1 × $2, {{PLURAL:$3|1|$3}} Ñаифе',
-'file-info' => 'файл буюклиги: $1, MIME чешити: $2',
-'file-info-size' => '$1 × $2 пикÑель, файл буюклиги: $3, MIME чешити: $4',
-'file-nohires' => '<small>Даа юкÑек чезинирликке Ñаип верÑÐ¸Ñ Ñ‘ÐºÑŠ.</small>',
-'svg-long-desc' => 'SVG файлы, номиналь $1 × $2 пикÑель, файл буюклиги: $3',
-'show-big-image' => 'Там чезинирлик',
-'show-big-image-thumb' => '<small>Бакъып чыкъувда реÑим буюклиги: $1 × $2 пикÑель</small>',
+'imagemaxsize' => "РеÑим ольчюÑи Ñынъыры:<br />''(файл малюмат Ñаифелери ичюн)''",
+'thumbsize' => 'Кичик ольчю:',
+'widthheightpage' => '$1 × $2, {{PLURAL:$3|1|$3}} Ñаифе',
+'file-info' => 'файл буюклиги: $1, MIME чешити: $2',
+'file-info-size' => '$1 × $2 пикÑель, файл буюклиги: $3, MIME чешити: $4',
+'file-nohires' => '<small>Даа юкÑек чезинирликке Ñаип верÑÐ¸Ñ Ñ‘ÐºÑŠ.</small>',
+'svg-long-desc' => 'SVG файлы, номиналь $1 × $2 пикÑель, файл буюклиги: $3',
+'show-big-image' => 'Там чезинирлик',
# Special:NewFiles
'newimages' => 'Янъы реÑимлер',
@@ -1943,7 +1897,13 @@ MediaWiki интерфейÑининъ чешит тиллерге терджиÐ
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-make' => 'Камера маркаÑÑ‹',
@@ -2001,15 +1961,13 @@ MediaWiki интерфейÑининъ чешит тиллерге терджиÐ
# External editor support
'edit-externally' => 'Файл узеринде компьютеринъизде булунгъан программалар иле денъишикликлер Ñпынъыз',
-'edit-externally-help' => '(Даа зиÑде малюмат ичюн [http://www.mediawiki.org/wiki/Manual:External_editors бу Ñаифеге] (Инглиздже) бакъып олаÑынъыз.)',
+'edit-externally-help' => '(Даа зиÑде малюмат ичюн [//www.mediawiki.org/wiki/Manual:External_editors бу Ñаифеге] (Инглиздже) бакъып олаÑынъыз.)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ÑпиÑини',
-'imagelistall' => 'ДжумлеÑи',
-'watchlistall2' => 'ÑпиÑини',
-'namespacesall' => 'ЭпиÑи',
-'monthsall' => 'ЭпиÑи',
-'limitall' => 'бутюни',
+'watchlistall2' => 'ÑпиÑини',
+'namespacesall' => 'ЭпиÑи',
+'monthsall' => 'ЭпиÑи',
+'limitall' => 'бутюни',
# E-mail address confirmation
'confirmemail' => 'E-mail адреÑини таÑдыкъла',
@@ -2109,14 +2067,14 @@ $1',
'watchlistedit-normal-title' => 'Козетюв джевелинъизни денъиштирмектеÑинъиз',
'watchlistedit-normal-legend' => 'Козетюв джедвелинден Ñаифе ёкъ Ñтилюви',
'watchlistedit-normal-explain' => 'Козетюв джедвелинъиздеки Ñаифелер ашагъыда коÑьтерильген.
-Бир Ñаифе козетюв джедвелинден ёкъ Ñтмек ичюн оны бельгилеп «{{int:Watchlistedit-normal-submit}}» дёгмеÑине баÑынъыз. Козетюв джедвелинъизни [[Special:Watchlist/raw|метин оларакъ да]] денъиштирип олаÑынъыз.',
+Бир Ñаифе козетюв джедвелинден ёкъ Ñтмек ичюн оны бельгилеп «{{int:Watchlistedit-normal-submit}}» дёгмеÑине баÑынъыз. Козетюв джедвелинъизни [[Special:EditWatchlist/raw|метин оларакъ да]] денъиштирип олаÑынъыз.',
'watchlistedit-normal-submit' => 'Сайлангъан Ñаифелерни козетюв джевелинден ёкъ ÑÑ‚',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 Ñаифе|$1 Ñаифе}} козетюв джедвелинъизден ёкъ Ñтильди:',
'watchlistedit-raw-title' => 'Козетюв джевелинъизни денъиштирмектеÑинъиз',
'watchlistedit-raw-legend' => 'Козетюв джедвелини денъиштирилюви',
'watchlistedit-raw-explain' => 'Козетюв джедвелинъиздеки Ñаифелер ашагъыда коÑьтерильген. Эр Ñатырда бир Ñаифе ÑерлеваÑÑ‹ олмакъ узере, Ñерлеваларны кирÑетип Ñ Ð´Ð° ёкъ Ñтип джедвельни денъиштирип олаÑынъыз.
Битирген Ñонъ «{{int:Watchlistedit-raw-submit}}» ÑзыÑына баÑынъыз.
-[[Special:Watchlist/edit|Стандарт редакторны да къулланып олаÑынъыз]].',
+[[Special:EditWatchlist|Стандарт редакторны да къулланып олаÑынъыз]].',
'watchlistedit-raw-titles' => 'Саифелер:',
'watchlistedit-raw-submit' => 'Козетюв джедвелини Ñнъарт',
'watchlistedit-raw-done' => 'Козетюв джедвелинъиз Ñнъарды.',
diff --git a/languages/messages/MessagesCrh_latn.php b/languages/messages/MessagesCrh_latn.php
index e3e0f8d9..104a155d 100644
--- a/languages/messages/MessagesCrh_latn.php
+++ b/languages/messages/MessagesCrh_latn.php
@@ -105,49 +105,49 @@ $messages = array(
'tog-underline' => 'Bağlantılarnıñ tübüni sızuv:',
'tog-highlightbroken' => 'Boş bağlantılarnı <a href="" class="new">bu şekilde</a> (alternativ: <a href="" class="internal">bu şekilde</a>) köster.',
'tog-justify' => 'Paragraf eki yaqqa yaslap tiz',
-'tog-hideminor' => 'Kiçik deñişikliklerni "Soñki deñişiklikler" saifesinde gizle',
-'tog-hidepatrolled' => 'Soñki deñişiklikler köstergende teşkerilgen deñişikliklerni gizle',
+'tog-hideminor' => '"Soñki deñişmeler" saifesinde kiçik deñişmelerni gizle',
+'tog-hidepatrolled' => 'Soñki deñişmeler köstergende teşkerilgen deñişmelerni gizle',
'tog-newpageshidepatrolled' => 'Yañı saifeler köstergende teşkerilgen saifelerni gizle',
-'tog-extendwatchlist' => 'Közetüv cedvelini, tek soñki degil, bütün deñişikliklerni körmek içün kenişlet',
-'tog-usenewrc' => 'Tafsilâtlı soñki deñişiklikler cedvelini qullan (JavaScript kerek)',
+'tog-extendwatchlist' => 'Közetüv cedvelini, tek soñki degil, bütün deñişmelerni körmek içün kenişlet',
+'tog-usenewrc' => 'Tafsilâtlı soñki deñişmeler cedvelini qullan (JavaScript kerek)',
'tog-numberheadings' => 'Serlevalarnı avtomatik nomeralandır',
-'tog-showtoolbar' => 'Deñişiklik yapqan vaqıtta yardımcı dögmelerni köster. (JavaScript)',
+'tog-showtoolbar' => 'Saifeni deñiştirgen vaqıtta yardımcı dögmelerni köster. (JavaScript)',
'tog-editondblclick' => 'Saifeni çift basıp deñiştirmege başla (JavaScript)',
'tog-editsection' => 'Bölüklerni [deñiştir] bağlantılarnı ile deñiştirme aqqı ber',
-'tog-editsectiononrightclick' => 'Bölük serlevasına oñ basıp bölükte deñişiklikke ruhset ber. (JavaScript)',
+'tog-editsectiononrightclick' => 'Bölük serlevasına oñ basqanda deñiştirüv penceresini aç. (JavaScript)',
'tog-showtoc' => 'Münderice cedveli köster (3 daneden ziyade serlevası olğan saifeler içün)',
'tog-rememberpassword' => 'Kirişinmi bu brauzerde hatırla (eñ çoq $1 {{PLURAL:$1|kün|kün}} içün)',
'tog-watchcreations' => 'Men yaratqan saifelerni közetüv cedvelime kirset',
'tog-watchdefault' => 'Men deñiştirgen saifelerni közetüv cedvelime kirset',
'tog-watchmoves' => 'Menim tarafımdan adı deñiştirilgen saifelerni közetüv cedvelime kirset',
'tog-watchdeletion' => 'Men yoq etken saifelerni közetüv cedvelime kirset',
-'tog-minordefault' => 'Yapqan deñişikliklerimni kiçik deñişiklik olaraq işaretle',
+'tog-minordefault' => 'Yapqan deñişmelerimni kiçik deñişmedir dep işaretle',
'tog-previewontop' => 'Baqıp çıquvnı yazuv pencereniñ üstünde köster',
'tog-previewonfirst' => 'Deñiştirmede baqıp çıquvnı köster',
'tog-nocache' => 'Brauzer saifelerni afızasında tutmasın',
-'tog-enotifwatchlistpages' => 'Saife deñişikliklerinde maña e-mail yolla',
-'tog-enotifusertalkpages' => 'Qullanıcı saifemde deñişiklik olğanda maña e-mail yolla',
-'tog-enotifminoredits' => 'Saifelerde kiçik deñişiklik olğanda da de maña e-mail yolla',
+'tog-enotifwatchlistpages' => 'Közetüv cedvelimdeki bir saife deñiştirilgende maña e-mail yolla',
+'tog-enotifusertalkpages' => 'Qullanıcı saifem deñiştirilgende maña e-mail yolla',
+'tog-enotifminoredits' => 'Kiçik deñişme olğanda da de maña e-mail yolla',
'tog-enotifrevealaddr' => 'Bildirüv mektüplerinde e-mail adresimni köster',
'tog-shownumberswatching' => 'Közetken qullanıcı sayısını köster',
-'tog-oldsig' => 'Şimdiki imzañız:',
+'tog-oldsig' => 'Åžimdiki imza:',
'tog-fancysig' => 'İmza vikimetin kibi olsun (avtomatik bağlantı olmaz)',
-'tog-externaleditor' => 'Deñişikliklerni başqa editor programması ile yap',
-'tog-externaldiff' => 'Teñeştirmelerni tış programmağa yaptır.',
+'tog-externaleditor' => 'Tış türlendirgiç (redaktor) qullan (tecribeli qullanıcılar içün; kompyuteriñizni mahsus sazlamaq kerek. [ //www.mediawiki.org/wiki/Manual:External_editors tafsilâtlı malümat mında])',
+'tog-externaldiff' => 'Teñeştimek içün tış bir peogramma qullan (tecribeli qullanıcılar içün; kompyuteriñizni mahsus sazlamaq kerek. [ //www.mediawiki.org/wiki/Manual:External_editors tafsilâtlı malümat mında])',
'tog-showjumplinks' => '"Bar" bağlantısını faalleştir',
'tog-uselivepreview' => 'Canlı baqıp çıquv hususiyetini qullan (JavaScript) (daa deñeme alında)',
-'tog-forceeditsummary' => 'Deñişiklik qısqa tarifini boş taşlağanda meni tenbile',
-'tog-watchlisthideown' => 'Közetüv cedvelimden menim deñişikliklerimni gizle',
-'tog-watchlisthidebots' => 'Közetüv cedvelimden bot deñişikliklerini gizle',
-'tog-watchlisthideminor' => 'Közetüv cedvelimden kiçik deñişikliklerni gizle',
-'tog-watchlisthideliu' => 'Közetüv cedvelimde qaydlı qullanıcılar tarafından yapılğan deñişikliklerni kösterme',
-'tog-watchlisthideanons' => 'Közetüv cedvelimde qaydsız (anonim) qullanıcılar tarafından yapılğan deñişikliklerni kösterme',
-'tog-watchlisthidepatrolled' => 'Közetüv cedvelinde teşkerilgen deñişikliklerni gizle',
+'tog-forceeditsummary' => 'Deñişmeniñ qısqa tarifini boş taşlasam meni tenbile',
+'tog-watchlisthideown' => 'Közetüv cedvelimden menim deñişmelerimni gizle',
+'tog-watchlisthidebots' => 'Közetüv cedvelimden bot deñişmelerini gizle',
+'tog-watchlisthideminor' => 'Közetüv cedvelimden kiçik deñişmelerni gizle',
+'tog-watchlisthideliu' => 'Közetüv cedvelimde qaydlı qullanıcılar tarafından yapılğan deñişmeerni kösterme',
+'tog-watchlisthideanons' => 'Közetüv cedvelimde qaydsız (anonim) qullanıcılar tarafından yapılğan deñişmelerni kösterme',
+'tog-watchlisthidepatrolled' => 'Közetüv cedvelinde teşkerilgen deñişmelerni gizle',
'tog-nolangconversion' => 'Yazuv sisteması variantları deñiştirüvni işletme',
'tog-ccmeonemails' => 'Diger qullanıcılarğa yollağan mektüplerimniñ kopiyalarını maña da yolla',
'tog-diffonly' => 'Teñeştirme saifelerinde saifeniñ esas mündericesini kösterme',
'tog-showhiddencats' => 'Gizli kategoriyalarnı köster',
-'tog-norollbackdiff' => 'Lâğu etilgen deñişikliklerni kösterme',
+'tog-norollbackdiff' => 'Lâğu etilgen deñişmelerni kösterme',
'underline-always' => 'Daima',
'underline-never' => 'Asla',
@@ -230,14 +230,7 @@ $messages = array(
'index-category' => 'Ä°ndeksli saifeler',
'noindex-category' => 'Ä°ndekssiz saifeler',
-'linkprefix' => '/^(.*?)([a-zâçğıñöşüA-ZÂÇĞİÑÖŞÜa-ÑÑ‘Ð-ЯЫ„]+)$/sDu',
-'mainpagetext' => "'''MediaWiki muvafaqiyetnen quruldı.'''",
-'mainpagedocfooter' => "Bu vikiniñ yol-yoruğını [http://meta.wikimedia.org/wiki/Help:Contents User's Guide qullanıcı qılavuzından] ögrenip olasıñız.
-
-== Bazı faydalı saytlar ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Olucı sazlamalar cedveli];
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki boyunca sıq berilgen suallernen cevaplar];
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-niñ yañı versiyalarınıñ çıquvından haber yiberüv].",
+'linkprefix' => '/^(.*?)([a-zâçğıñöşüA-ZÂÇĞİÑÖŞÜa-ÑÑ‘Ð-ЯЫ„]+)$/sDu',
'about' => 'Aqqında',
'article' => 'Saife',
@@ -289,7 +282,6 @@ $messages = array(
'history' => 'Saifeniñ keçmişi',
'history_short' => 'Keçmiş',
'updatedmarker' => 'soñki ziyaretimden soñ yañarğan',
-'info_short' => 'Malümat',
'printableversion' => 'Basılmağa uyğun körüniş',
'permalink' => 'Soñki alına bağlantı',
'print' => 'Bastır',
@@ -299,7 +291,7 @@ $messages = array(
'create-this-page' => 'Bu saifeni yarat',
'delete' => 'Yoq et',
'deletethispage' => 'Saifeni yoq et',
-'undelete_short' => '{{PLURAL:$1|1|$1}} deñişiklikni keri ketir',
+'undelete_short' => '{{PLURAL:$1|1|$1}} deñişmeni keri ketir',
'protect' => 'Qorçala',
'protect_change' => 'deñiştir',
'protectthispage' => 'Saifeni qorçalav altına al',
@@ -369,7 +361,7 @@ $1',
'retrievedfrom' => 'Menba – "$1"',
'youhavenewmessages' => 'Yañı $1 bar ($2).',
'newmessageslink' => 'beyanatıñız',
-'newmessagesdifflink' => 'muzakere saifeñizniñ soñki deñişikligi',
+'newmessagesdifflink' => 'muzakere saifeñizniñ soñki deñişkeni',
'youhavenewmessagesmulti' => '$1 saifesinde yañı beyanatıñız bar.',
'editsection' => 'deñiştir',
'editold' => 'deñiştir',
@@ -382,7 +374,7 @@ $1',
'hidetoc' => 'gizle',
'thisisdeleted' => '$1 körmege ya da keri ketirmege isteysiñizmi?',
'viewdeleted' => '$1 kör?',
-'restorelink' => 'yoq etilgen {{PLURAL:$1|1|$1}} deñişikligi',
+'restorelink' => 'yoq etilgen {{PLURAL:$1|1|$1}} deñişmesi',
'feedlinks' => 'Bu ÅŸekilde:',
'feed-invalid' => 'Abune kanalınıñ çeşiti yañlıştır.',
'feed-unavailable' => 'Sindikatsiya lentaları qullanılıp оlamay.',
@@ -470,13 +462,12 @@ Soratma: $2',
'actionthrottledtext' => 'Spamğa qarşı küreş sebebinden bu areketni az vaqıt içinde çoq kere tekrarlap olamaysıñız. Mümkün olğan qarardan ziyade areket yaptıñız. Bir qaç daqqadan soñ tekrarlap baqıñız.',
'protectedpagetext' => 'Bu saifeni kimse deñiştirmesin dep o blok etildi.',
'viewsourcetext' => 'Saifeniñ kodunı közden keçirip kopiyalay bilesiñiz:',
-'protectedinterface' => 'Bu saifede sistema interfeysiniñ metini bulunğanı içün mında hata çıqmasın dep deñişiklik yapmaq yasaq.',
-'editinginterface' => "'''Tenbi''': MediaWiki sistema beyanatılı bir saifeni deñiştirmektesiñiz. Bu saifedeki deñişiklikler qullanıcı interfeys körünişini diger qullanıcılar içün de deñiştirecek. Lütfen, tercimeler içün [http://translatewiki.net/wiki/Main_Page?setlang=crh translatewiki.net] saytını (MediaWiki resmiy lokalizatsiya leyhası) qullanıñız.",
+'protectedinterface' => 'Bu saifede sistema interfeysiniñ metni bar. Onıñ içün mında bir hata çıqmasın dep onı deñiştirmek yasaq.',
+'editinginterface' => "'''Tenbi''': İçinde MediaWiki sistemasınıñ beyanatı olğan bir saifeni deñiştireyatasız. Bu saifedeki deñişmeler qullanıcı interfeysiniñ körünişini diger qullanıcılar içün de deñiştirecek. Lütfen, tercimeler içün [//translatewiki.net/wiki/Main_Page?setlang=crh translatewiki.net] saytını (MediaWiki resmiy lokalizatsiya leyhası) qullanıñız.",
'sqlhidden' => '(SQL istintağı saqlı)',
'cascadeprotected' => 'Bu saifeni deñiştirip olamazsıñız, çünki kaskad qorçalav altında bulunğan {{PLURAL:$1|saifege|saifelerge}} mensüptir:
$2',
'namespaceprotected' => "'''$1''' isim fezasında saifeler deñiştirmege aqqıñız yoq.",
-'customcssjsprotected' => 'Bu saifede diger qullanıcınıñ şahsiy sazlamaları bar olğanı içün saifeni deñiştirip olamazsıñız.',
'ns-specialprotected' => '{{ns:special}} isim fezasındaki saifelerni deñiştirmek yasaq.',
'titleprotected' => "Böyle serlevanen saife yaratmaq yasaqtır. Yasaqlağan: [[User:$1|$1]].
Sebep: ''$2''.",
@@ -499,7 +490,7 @@ Bu saytnıñ [[Special:Preferences|sazlamalarını]] şahsıñızğa köre deñi
'remembermypassword' => 'Kirişimni bu kompyuterde hatırla (eñ çoq $1 {{PLURAL:$1|kün|kün}} içün)',
'securelogin-stick-https' => 'Kirgen soñ HTTPS-ge bağlanıp tur',
'yourdomainname' => 'Domen adıñız',
-'externaldberror' => 'Oturımıñız açılğanda bir hata oldı. Bu tış esabıñızğa deñişiklik yapmağa aqqıñız olmayuvından meydanğa kelip ola.',
+'externaldberror' => 'Saytqa kirgende bir hata oldı. Bu tış esabıñıznı deñiştirmek aqqıñız olmağanından sebep meydanğa kelip ola.',
'login' => 'KiriÅŸ',
'nav-login-createaccount' => 'KiriÅŸ / Qayd oluv',
'loginprompt' => 'Oturım açmaq içün "cookies"ge izin bermelisiñiz.',
@@ -513,11 +504,12 @@ Bu saytnıñ [[Special:Preferences|sazlamalarını]] şahsıñızğa köre deñi
'createaccount' => 'Yañı esap aç',
'gotaccount' => "Daa evel esap açqan ediñizmi? '''$1'''.",
'gotaccountlink' => 'Oturım açıñız',
+'userlogin-resetlink' => 'Kiriş malümatını unuttıñızmı?',
'createaccountmail' => 'e-mail vastasınen',
'createaccountreason' => 'Sebep:',
'badretype' => 'Kirsetken parolleriñiz aynı degil.',
'userexists' => 'Kirsetken qullanıcı adıñız endi qullanıla.
-Başqa bir qullanıcı adı saylañız.',
+Lütfen, başqa bir qullanıcı adı saylañız.',
'loginerror' => 'Oturım açma hatası',
'createaccounterror' => 'Esap yaratılıp olamay: $1',
'nocookiesnew' => 'Qullanıcı esabı açılğan, faqat tanıtılmağan. {{SITENAME}} qullanıcılarnı tanıtmaq içün "cookies"ni qullana. Sizde bu funktsiya qapalı vaziyettedir. "Cookies" funktsiyasını işletip tekrar yañı adıñız ve paroliñiznen tırışıp baqınız.',
@@ -528,7 +520,7 @@ Başqa bir qullanıcı adı saylañız.',
'nosuchuser' => '"$1" adlı qullanıcı yoq.
Qullanıcı adlarında büyük ve kiçik arifler arasında farq bar.
Doğru yazğanıñıznı teşkeriñiz ya da [[Special:UserLogin/signup|yañı qullanıcı esabını açıñız]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" adlı qullanıcı tapılamadı. Adıñıznı doğru yazğanıñızdan emin oluñız.',
+'nosuchusershort' => '"$1" adlı qullanıcı tapılamadı. Adıñıznı doğru yazğanıñızdan emin oluñız.',
'nouserspecified' => 'Qullanıcı adını kirsetmek kereksiñiz.',
'login-userblocked' => 'Bu qullanıcı blok etilgen. Kirmege ruhset etilmey.',
'wrongpassword' => 'Kirsetken paroliñiz yañlıştır. Lütfen, tekrar etiñiz.',
@@ -536,6 +528,7 @@ Doğru yazğanıñıznı teşkeriñiz ya da [[Special:UserLogin/signup|yañı qu
Lütfen, tekrar etiñiz.',
'passwordtooshort' => 'Paroliñizde eñ az {{PLURAL:$1|1|$1}} işaret olmalı.',
'password-name-match' => 'Paroliñiz qullanıcı adıñızdan farqlı olmalı.',
+'password-login-forbidden' => 'Bu qullanıcı adı ve parolni qullanmaq yasaqtır.',
'mailmypassword' => 'Yañı parol yiber',
'passwordremindertitle' => '{{grammar:genitive|{{SITENAME}}}} qullanıcınıñ parol hatırlatuvı',
'passwordremindertext' => 'Birev (belki de bu sizsiñiz, $1 IP adresinden) {{SITENAME}} saytı içün ($4) yañı qullanıcı parolini istedi.
@@ -571,7 +564,7 @@ Lütfen, qayta kirmezden evel biraz bekleñiz.',
'loginlanguagelabel' => 'Til: $1',
'suspicious-userlogout' => 'Çıqış istegeniñiz red etildi, çünki bozuq bir brauzer ya da keşleyici proksi tarafından yollanğan kibi körüne.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Parolni deñiştir',
'resetpass_announce' => 'Muvaqqat kod vastasınen kirdiñiz. Kirişni tamamlamaq içün yañı parolni mında qoyuñız:',
'resetpass_header' => 'Esapnıñ parolini deñiştir',
@@ -599,8 +592,6 @@ Parоliñizni endi muvafaqiyetnen deñiştirdiñiz ya da yañı bir muvaqqat par
'extlink_tip' => 'Tış bağlantı (Adres ögüne http:// qoymağa unutmañız)',
'headline_sample' => 'Serleva yazısı',
'headline_tip' => '2-nci seviye serleva',
-'math_sample' => 'Bu yerge formulanı kirsetiñiz',
-'math_tip' => 'Riyaziy (matematik) formula (LaTeX formatında)',
'nowiki_sample' => 'Serbest format metiniñizni mında yazıñız.',
'nowiki_tip' => 'viki format etüvini ignor et',
'image_sample' => 'Resim.jpg',
@@ -611,17 +602,17 @@ Parоliñizni endi muvafaqiyetnen deñiştirdiñiz ya da yañı bir muvaqqat par
'hr_tip' => 'Gorizontal sızıq (pek sıq qullanmañız)',
# Edit pages
-'summary' => 'Deñişiklik qısqa tasviri:',
+'summary' => 'Deñişmeniñ qısqa tarifi:',
'subject' => 'Mevzu/serleva:',
-'minoredit' => 'Kiçik deñişiklik',
+'minoredit' => 'Bu, kiçik deñişmedir',
'watchthis' => 'Saifeni közet',
'savearticle' => 'Saifeni saqla',
'preview' => 'Baqıp çıquv',
'showpreview' => 'Baqıp çıq',
'showlivepreview' => 'Tez baqıp çıquv',
-'showdiff' => 'Deñişikliklerni köster',
-'anoneditwarning' => "'''Diqqat''': Oturım açmağanıñızdan sebep deñişiklik tarihına siziñ IP adresiñiz yazılır.",
-'anonpreviewwarning' => 'Oturım açmadıñız. Saifeni saqlasañız deñişiklik tarihına siziñ IP adresiñiz yazılır.',
+'showdiff' => 'Deñişmelerni köster',
+'anoneditwarning' => "'''Diqqat''': Saytqa kirmegeniñizden sebep deñişmeler tarihına siziñ IP adresiñiz yazılır.",
+'anonpreviewwarning' => 'Saytqa kirmediñiz. Saifeni saqlasañız deñişmeler tarihına siziñ IP adresiñiz yazılır.',
'missingsummary' => "'''Hatırlatma.''' Deñiştirmeleriñizni qısqadan tarif etmediñiz. \"Saifeni saqla\" dögmesine tekrar basuv ile deñiştirmeleriñiz tefsirsiz saqlanacaqlar.",
'missingcommenttext' => 'Lütfen, aşağıda tefsir yazıñız.',
'missingcommentheader' => "'''Hatırlatma:''' Tefsir mevzusını/serlevasını yazmadıñız. \"{{int:savearticle}}\" dögmesine tekrar basqan soñ tefsiriñiz serlevasız saqlanır.",
@@ -674,15 +665,15 @@ Bir IP adresinden bir qaç qullanıcı faydalanıp ola.
Eger siz anonim qullanıcı olsañız ve sizge kelgen beyanatlarnı yañlıştan kelgenini belleseñiz, lütfen, artıq bunıñ kibi qarışıqlıq olmasın dep [[Special:UserLogin/signup|qayd oluñız]] ya da [[Special:UserLogin|oturım açıñız]].''",
'noarticletext' => 'Bu saife şimdi boştır. Bu serlevanı başqa saifelerde [[Special:Search/{{PAGENAME}}|qıdırıp olasıñız]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} bağlı jurnal qaydlarını qıdırıp olasıñız] ya da bu saifeni özüñiz [{{fullurl:{{FULLPAGENAME}}|action=edit}} yazıp olasıñız]</span>.',
'noarticletext-nopermission' => 'Bu saife şimdi boştır. Bu serlevanı başqa saifelerde [[Special:Search/{{PAGENAME}}|qıdıra bile]] ya da <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} bağlı jurnallarnı közden keçire bilesiñiz]</span>.',
-'userpage-userdoesnotexist' => '"$1" adlı qullanıcı yoqtır. Tamam bu saifeni deñiştirmege istegeniñizni teşkeriñiz.',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" adlı qullanıcı yoqtır. Tamam bu saifeni deñiştirmege istegeniñizni teşkeriñiz.',
'userpage-userdoesnotexist-view' => '"$1" adlı qullanıcı esabı yoq.',
'blocked-notice-logextract' => 'Bu qullanıcı şimdi blok etilgen.
Blok etüv jurnalınıñ soñki yazısı aşağıda kösterilgen:',
-'clearyourcache' => "'''İhtar:''' Sazlamalarıñıznı saqlağandan soñ deñişikliklerni körmek içün brauzeriñizniñ keşini temizlemek kereksiñiz.
-'''Mozilla / Firefox / Safari:''' ''Shift'' basılı ekende saifeni yañıdan yüklep ya da ''Ctrl-Shift-R'' yapıp (Mac içün ''Command-R'');
-'''Konqueror:''' saifeni yañıdan yükle dögmesine ya da F5 basıp;
-'''Opera:''' ''Tools → Preferences'' menüsinde keşni temizlep;
-'''Internet Explorer:''' ''Ctrl'' basılı ekende saifeni yañıdan yüklep ya da ''Ctrl-F5'' basıp.",
+'clearyourcache' => "'''İhtar:''' Belki sazlamalarıñıznı saqlağandan soñ deñişmelerni körmek içün brauzeriñizniñ keşini temizlemek kerek olursıñız.
+'''Mozilla / Firefox / Safari:''' ''Shift'' basıp saifeni yañıdan yüklemek ya da ''Ctrl-Shift-R'' basmaq (Mac içün ''Command-R'');
+'''Konqueror:''' saifeni yañıdan yükle dögmesine ya da F5 basımaq;
+'''Opera:''' ''Tools → Preferences'' menüsinde keşni temizlemek;
+'''Internet Explorer:''' ''Ctrl'' basıp saifeni yañıdan yüklemek ya da ''Ctrl-F5'' basmaq.",
'usercssyoucanpreview' => "'''Tevsiye:''' Yañı CSS faylını teşkermek içün saifeni saqlamazdan evel \"{{int:showpreview}}\" dögmesine basıñız.",
'userjsyoucanpreview' => "'''Tevsiye:''' Yañı JavaScript-iñizni teşkermek içün saifeni saqlamazdan evel \"{{int:showpreview}}\" dögmesine basıñız.",
'usercsspreview' => "'''Unutmañız, bu tek baqıp çıquv - qullanıcı CSS faylıñız alâ daa saqlanmadı!'''",
@@ -702,16 +693,16 @@ Bunıñ kibi problemalar anonimizirlegen hatalı web-proksiler qullanuvdan çıq
'editing' => '"$1" saifesini deñiştirmektesiñiz',
'editingsection' => '"$1" saifesinde bölük deñiştirmektesiñiz',
'editingcomment' => '$1 saifesini deñiştirmektesiñiz (yañı bölük)',
-'editconflict' => 'Deñişiklik zıt ketüvi: $1',
-'explainconflict' => "Siz saifeni deñiştirgen vaqıtta başqa biri de deñişiklik yaptı.
+'editconflict' => 'Deñişmeler konflikti: $1',
+'explainconflict' => "Siz saifeni deñiştirgen vaqıtta başqa biri de deñişme yaptı.
Yuqarıdaki yazı saifeniñ şimdiki alını köstere.
-Siziñ deñişiklikleriñiz altqa kösterildi. Şimdi yapqan deñişiklikleriñizni aşağı pencereden yuqarı pencerege avuştırmaq kerek olacaqsıñız.
+Siziñ deñişmeleriñiz astında kösterildi. Şimdi yapqan deñişmeleriñizni aşağı pencereden yuqarı pencerege avuştırmaq kereksiñiz.
\"{{int:savearticle}}\"ğa basqanda '''tek''' yuqarıdaki yazı saqlanacaq.",
'yourtext' => 'Siziñ metniñiz',
'storedversion' => 'SaqlanÄŸan metin',
'nonunicodebrowser' => "'''TENBİ: Brauzeriñizde Unicode kodlaması tanılmaz. Saifeler deñiştirgende bütün ASCII olmağan işaretlerniñ yerine olarnıñ onaltılıq kodu yazılır.'''",
-'editingold' => "'''DİQQAT: Saifeniñ eski bir versiyasında deñişiklik yapmaqtasıñız.
-Saqlağanıñızda bu tarihlı versiyadan künümizge qadar olğan deñişiklikler yoq olacaq.'''",
+'editingold' => "'''DİQQAT: Saifeniñ eski bir versiyasını deñiştireyatasız.
+Saifeni saqlağanıñızdan soñ bu tarihlı versiyadan künümizge qadar olğan deñişmeler yoq olacaq.'''",
'yourdiff' => 'Farqlar',
'copyrightwarning' => "'''Lütfen, diqqat:''' {{SITENAME}} saytına qoşulğan bütün isseler <i>$2</i> muqavelesi dairesindedir (tafsilât içün $1 saifesine baqıñız).
Qoşqan isseñizniñ başqa insanlar tarafından acımasızca deñiştirilmesini ya da azat tarzda ve sıñırsızca başqa yerlerge dağıtılmasını istemeseñiz, isse qoşmañız.<br />
@@ -753,7 +744,7 @@ Saifeniñ yoq etilüv ve avuştırıluv qaydları mında berilgen:",
'moveddeleted-notice' => 'Bu saife yoq etilgen.
Saifeniñ yoq etilüv ve avuştırıluv qaydları aşağıda berilgen.',
'log-fulllog' => 'Jurnalnı tolusınca köster',
-'edit-hook-aborted' => 'Deñişiklik çengel protsedurasınen toqtatıldı.
+'edit-hook-aborted' => 'Deñişme çengel protsedurasınen toqtatıldı.
İç bir izaat berilmedi.',
'edit-gone-missing' => 'Saife yañartılıp olamay.
Ola bile ki, o yoq etilgendir.',
@@ -908,7 +899,6 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
'changepassword' => 'Parol deñiştir',
'prefs-skin' => 'Resimleme',
'skin-preview' => 'Baqıp çıquv',
-'prefs-math' => 'Riyaziy (matematik) iÅŸaretler',
'datedefault' => 'Standart',
'prefs-datetime' => 'Tarih ve saat',
'prefs-personal' => 'Qullanıcı malümatı',
@@ -932,8 +922,6 @@ Vikide bu saifege oşağan saifelerni [[Special:Search|tapıp baqıñız]].',
'columns' => 'Sutun',
'searchresultshead' => 'Qıdıruv',
'resultsperpage' => 'Saifede kösterilecek tapılğan saife sayısı',
-'contextlines' => 'Tapılğan saife içün ayrılğan satır sayısı',
-'contextchars' => 'Satırdaki arif sayısı',
'recentchangesdays' => 'Soñki deñişiklikler saifesinde kösterilecek kün sayısı:',
'recentchangesdays-max' => '(eñ çoq $1 {{PLURAL:$1|kün|kün}})',
'recentchangescount' => 'Ög belgilengen kösterilecek deñişiklikler sayısı:',
@@ -1170,10 +1158,6 @@ Eger bu faylnı ep bir yüklemege isteseñiz, keri qaytıñız ve fayl ismini de
'upload-maxfilesize' => 'Azamiy (maksimal) fayl büyükligi: $1',
'watchthisupload' => 'Bu faylnı közet',
'filewasdeleted' => 'Bu isimde bir fayl bar edi, amma yoq etilgen edi. Lütfen, tekrar yüklemeden evel $1 teşkeriñiz.',
-'upload-wasdeleted' => "'''Diqqat: Evelde yoq etilgen faylnı yüklemektesiñiz.'''
-
-Er alda bu faylnı yüklemege devam etmege isteysiñizmi?
-Bu fayl içün yoq etüvniñ jurnalını mında baqıp olasıñız:",
'filename-bad-prefix' => "Siz yüklegen faylnıñ adı '''\"\$1\"'''-nen başlana. Bu, adetince, raqamlı fotoapparatlardan fayl adına yazılğan manasız işaretlerdir. Lütfen, bu fayl içün añlıca bir ad saylap yazıñız.",
'upload-success-subj' => 'Yüklenüv becerildi',
@@ -1432,10 +1416,8 @@ Ayrıca [[Special:WantedCategories|talap etilgen kategoriyalarnıñ cedveline]]
'watchlistanontext' => 'Közetüv cedvelini baqmaq ya da deñiştirmek içün $1 borclusıñız.',
'watchnologin' => 'Oturım açmaq kerek',
'watchnologintext' => 'Öz közetüv cedveliñizni deñiştirmek içün [[Special:UserLogin|oturım açıñız]]',
-'addedwatch' => 'Közetüv cedveline kirsetmek',
'addedwatchtext' => '"[[:$1]]" saifesi [[Special:Watchlist|kozetüv cevdeliñizge]] kirsetildi. Bu saifedeki ve onıñnen bağlı saifelerdeki olacaq deñişiklikler bu cedvelde belgilenecek, em de olar közge çarpması içün [[Special:RecentChanges|yañı deñişiklik cedveli]] bulunğan saifede qalın olaraq kösterilir.
Birazdan soñ közetüv cedveliñizden bir de bir saifeni yoq etmege isteseñiz de, saifeniñ yuqarısındaki sol tarafta "közetme" dögmesine basıñız.',
-'removedwatch' => 'Közetüv cedvelinden yoq et',
'removedwatchtext' => '"[[:$1]]" saifesi [[Special:Watchlist|közetüv cedveliñizden]] yoq etildi.',
'watch' => 'Közet',
'watchthispage' => 'Bu saifeni közet',
@@ -1486,13 +1468,13 @@ Bu saifeni ziyaret etmeseñiz, birev onı bir daa deñiştirse de, iç bir tenbi
--
Közetüv cedveli sazlamalarını deñiştirmek içün:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Saifeni közetüv cedvelinden yoq etmek içün:
$UNWATCHURL
Yardım ve teklifler içün:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Saifeni yoq et',
@@ -1508,7 +1490,7 @@ Yardım ve teklifler içün:
Lütfen, neticelerini añlağanıñıznı ve [[{{MediaWiki:Policy-url}}|yoq etüv politikasına]] uyğunlığını diqqatqa alıp, bunı yapmağa istegeniñizni tasdıqlañız.',
'actioncomplete' => 'Areket tamamlandı',
'actionfailed' => 'Areket yapılamadı',
-'deletedtext' => '"<nowiki>$1</nowiki>" yoq etildi.
+'deletedtext' => '"$1" yoq etildi.
yaqın zamanda yoq etilgenlerni körmek içün: $2.',
'deletedarticle' => '"[[$1]]" yoq etildi',
'dellogpage' => 'Yoq etüv jurnalı',
@@ -1541,7 +1523,7 @@ Qorçalav altına alınğan saifeler tam cedveli [[Special:ProtectedPages|bu sai
'protectexpiry' => 'Bitiş tarihı:',
'protect_expiry_invalid' => 'Bitiş tarihı yañlış.',
'protect_expiry_old' => 'Bitiş zamanı keçmiştedir.',
-'protect-text' => "'''[[<nowiki>$1</nowiki>]]''' saifesiniñ qorçalav seviyesini mından körip olur ve deñiştirip olasıñız.",
+'protect-text' => "'''[[$1]]''' saifesiniñ qorçalav seviyesini mından körip olur ve deñiştirip olasıñız.",
'protect-locked-access' => "Qullanıcı esabıñız saifeniñ qorçalav seviyelerini deñiştirme yetkisine saip degil. '''$1''' saifesiniñ şimdiki sazlamaları şularıdır:",
'protect-cascadeon' => 'Bu saife şimdi qorçalav altındadır, çünki aşağıda cedvellengen ve kaskadlı qorçalav altındaki {{PLURAL:$1|1|$1}} saifede qullanıla.
Bu saifeniñ qorçalav seviyesini deñiştirip olasıñız, amma kaskadlı qorçalav tesir etilmeycek.',
@@ -1626,7 +1608,6 @@ Bu saifeniñ qorçalav seviyesini deñiştirip olasıñız, amma kaskadlı qorç
'blockip' => 'Bu IP adresinden iriÅŸimni blok et',
'blockip-legend' => 'Qullanıcını blok et',
'blockiptext' => 'Aşağıdaki formanı qullanıp belli bir IP adresiniñ ya da qullanıcınıñ irişimini blok etip olasıñız. Bu tek vandalizmni blok etmek içün ve [[{{MediaWiki:Policy-url}}|qaidelerge]] uyğun olaraq yapılmalı. Aşağığa mıtlaqa blok etüv ile bağlı bir izaat yazıñız. (meselâ: Şu saifelerde vandalizm yaptı).',
-'ipaddress' => 'IP adresi',
'ipadressorusername' => 'IP adresi ya da qullanıcı adı',
'ipbexpiry' => 'Bitiş müddeti',
'ipbreason' => 'Sebep',
@@ -1642,7 +1623,6 @@ Blok etmelerni közden keçirmek içün [[Special:IPBlockList|IP adresi blok eti
'unblockip' => 'Qullanıcınıñ blok etmesini çıqar',
'ipusubmit' => 'Bu blok etmeni çıqar',
'ipblocklist' => 'Blok etilgen qullanıcılar ve IP adresleri',
-'blocklistline' => '$1, $2 blok etti: $3 ($4)',
'infiniteblock' => 'müddetsiz',
'expiringblock' => '$1 $2 tarihında bitecek',
'blocklink' => 'blok et',
@@ -1652,7 +1632,7 @@ Blok etmelerni közden keçirmek içün [[Special:IPBlockList|IP adresi blok eti
'autoblocker' => 'Avtomatik olaraq blok etildiñiz çünki keçenlerde IP adresiñiz "[[User:$1|$1]]" qullanıcısı tarafından qullanıldı. $1 adlı qullanıcınıñ blok etilüvi içün bildirilgen sebep: "\'\'\'$2\'\'\'"',
'blocklogpage' => 'Blok etüv jurnalı',
'blocklogentry' => '"[[$1]]" irişimi $2 $3 toqtatıldı. Sebep',
-'blocklogtext' => 'Mında qullanıcı irişimine yönelik blok etüv ve blok çıqaruv qaydları kösterile. Avtomatik IP adresi blok etüvleri cedvelge kirsetilmedi. Şimdi irişimi toqtatılğan qullanıcılarnı [[Special:IPBlockList|IP blok etüv cedveli]] saifesinden körip olasıñız.',
+'blocklogtext' => 'Mında qullanıcı irişimine yönelik blok etüv ve blok çıqaruv qaydları kösterile. Avtomatik IP adresi blok etüvleri cedvelge kirsetilmedi. Şimdi irişimi toqtatılğan qullanıcılarnı [[Special:BlockList|IP blok etüv cedveli]] saifesinden körip olasıñız.',
'unblocklogentry' => '$1 qullanıcısınıñ blok etmesi çıqarıldı',
'block-log-flags-nocreate' => 'yañı esap açmaq yasaq etildi',
'block-log-flags-noemail' => 'e-mail blok etildi',
@@ -1734,7 +1714,7 @@ Jurnalnıñ soñki yazısı aşağıda berilgen:",
'allmessagesdefault' => 'Original metin',
'allmessagescurrent' => 'Şimdi qullanılğan metin',
'allmessagestext' => 'İşbu cedvel MediaWikide mevcut olğan bütün sistema beyanatlarınıñ cedvelidir.
-MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege isteseñiz [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ve [http://translatewiki.net translatewiki.net] saifelerine ziyaret etiñiz.',
+MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege isteseñiz [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ve [//translatewiki.net translatewiki.net] saifelerine ziyaret etiñiz.',
# Thumbnails
'thumbnail-more' => 'Büyüt',
@@ -1818,9 +1798,7 @@ MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege istese
'monobook.css' => '/* monobook temasınıñ ayarlarını (nastroykalarını) deñiştirmek içün bu yerini deñiştiriñiz. Bütün saytta tesirli olur. */',
# Metadata
-'nodublincore' => 'Dublin Core RDF meta malümatı bu server içün yasaqlı.',
-'nocreativecommons' => 'Creative Commons RDF meta malümatı bu server içün yasaqlı.',
-'notacceptable' => 'Viki-server brauzeriñiz oqup olacaq formatında malümat beralmay.',
+'notacceptable' => 'Viki-server brauzeriñiz oqup olacaq formatında malümat beralmay.',
# Attribution
'anonymous' => '{{SITENAME}} saytınıñ {{PLURAL:$1|1|$1}} qaydsız (anonim) qullanıcıları',
@@ -1842,14 +1820,6 @@ MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege istese
'spam_reverting' => '$1 saytına bağlantısı olmağan soñki versiyağa keri ketirüv',
'spam_blanking' => 'Bar olğan versiyalarda $1 saytına bağlantılar bar, temizlev',
-# Info page
-'infosubtitle' => 'Saife aqqında malümat',
-'numedits' => 'Deñişiklik sayısı (saife): $1',
-'numtalkedits' => 'Deñişiklik sayısı (muzakere saifesi): $1',
-'numwatchers' => 'Közetici sayısı: $1',
-'numauthors' => 'Müellif sayısı (saife): $1',
-'numtalkauthors' => 'Müellif sayısı (muzakere saifesi): $1',
-
# Skin names
'skinname-standard' => 'Standart',
'skinname-nostalgia' => 'Nostalgiya',
@@ -1859,21 +1829,6 @@ MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege istese
'skinname-chick' => 'Çipçe',
'skinname-simple' => 'Adiy',
-# Math options
-'mw_math_png' => 'Daima PNG resim formatına çevir',
-'mw_math_simple' => 'Pek basit olsa HTML, yoqsa PNG',
-'mw_math_html' => 'Mümkün olsa HTML, yoqsa PNG',
-'mw_math_source' => 'Deñiştirmeden TeX olaraq taşla (metin temelli brauzerler içün)',
-'mw_math_modern' => 'Zemaneviy brauzerler içün tevsiye etilgen',
-'mw_math_mathml' => 'Mümkün olsa MathML (daa deñeme alında)',
-
-# Math errors
-'math_failure' => 'Ayırıştırılamadı',
-'math_unknown_error' => 'bilinmegen hata',
-'math_unknown_function' => 'belgisiz funktsiya',
-'math_lexing_error' => 'leksik hata',
-'math_syntax_error' => 'sintaksis hatası',
-
# Patrol log
'patrol-log-page' => 'Teşkerüv jurnalı',
'log-show-hide-patrol' => 'Teşkerüv jurnalını $1',
@@ -1890,17 +1845,16 @@ MediaWiki interfeysiniñ çeşit tillerge tercime etüvde iştirak etmege istese
'nextdiff' => 'Soñraki deñişiklik →',
# Media information
-'mediawarning' => "'''İhtar''': Bu fayl türüniñ içinde yaman niyetli kod ola bile.
+'mediawarning' => "'''İhtar''': Bu fayl türüniñ içinde yaman niyetli kod ola bile.
Faylnı işletip işletim sistemañızğa zarar ketirip olursıñız.",
-'imagemaxsize' => "Resim ölçüsi sıñırı:<br />''(fayl malümat saifeleri içün)''",
-'thumbsize' => 'Kiçik ölçü:',
-'widthheightpage' => '$1 × $2, {{PLURAL:$3|1|$3}} saife',
-'file-info' => 'fayl büyükligi: $1, MIME çeşiti: $2',
-'file-info-size' => '$1 × $2 piksel, fayl büyükligi: $3, MIME çeşiti: $4',
-'file-nohires' => '<small>Daa yüksek çezinirlikke saip versiya yoq.</small>',
-'svg-long-desc' => 'SVG faylı, nominal $1 × $2 piksel, fayl büyükligi: $3',
-'show-big-image' => 'Tam çezinirlik',
-'show-big-image-thumb' => '<small>Baqıp çıquvda resim büyükligi: $1 × $2 piksel</small>',
+'imagemaxsize' => "Resim ölçüsi sıñırı:<br />''(fayl malümat saifeleri içün)''",
+'thumbsize' => 'Kiçik ölçü:',
+'widthheightpage' => '$1 × $2, {{PLURAL:$3|1|$3}} saife',
+'file-info' => 'fayl büyükligi: $1, MIME çeşiti: $2',
+'file-info-size' => '$1 × $2 piksel, fayl büyükligi: $3, MIME çeşiti: $4',
+'file-nohires' => '<small>Daa yüksek çezinirlikke saip versiya yoq.</small>',
+'svg-long-desc' => 'SVG faylı, nominal $1 × $2 piksel, fayl büyükligi: $3',
+'show-big-image' => 'Tam çezinirlik',
# Special:NewFiles
'newimages' => 'Yañı resimler',
@@ -1938,7 +1892,13 @@ Er satır * işaretinen başlamalı. Satırnıñ birinci bağlantısı qоşmağ
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-make' => 'Kamera markası',
@@ -1996,15 +1956,13 @@ Er satır * işaretinen başlamalı. Satırnıñ birinci bağlantısı qоşmağ
# External editor support
'edit-externally' => 'Fayl üzerinde kompyuteriñizde bulunğan programmalar ile deñişiklikler yapıñız',
-'edit-externally-help' => '(Daa ziyade malümat içün [http://www.mediawiki.org/wiki/Manual:External_editors bu saifege] (İnglizce) baqıp olasıñız.)',
+'edit-externally-help' => '(Daa ziyade malümat içün [//www.mediawiki.org/wiki/Manual:External_editors bu saifege] (İnglizce) baqıp olasıñız.)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'episini',
-'imagelistall' => 'Cümlesi',
-'watchlistall2' => 'episini',
-'namespacesall' => 'Episi',
-'monthsall' => 'Episi',
-'limitall' => 'bütüni',
+'watchlistall2' => 'episini',
+'namespacesall' => 'Episi',
+'monthsall' => 'Episi',
+'limitall' => 'bütüni',
# E-mail address confirmation
'confirmemail' => 'E-mail adresini tasdıqla',
@@ -2106,14 +2064,14 @@ Saifeni yañıdan yaratmağa isteseñiz, lütfen, bunı tasdıqlañız.",
'watchlistedit-normal-legend' => 'Közetüv cedvelinden saife yoq etilüvi',
'watchlistedit-normal-explain' => 'Közetüv cedveliñizdeki saifeler aşağıda kösterilgen.
Bir saife közetüv cedvelinden yoq etmek içün onı belgilep "{{int:Watchlistedit-normal-submit}}" dögmesine basıñız.
-Közetüv cedveliñizni [[Special:Watchlist/raw|metin olaraq da]] deñiştirip olasıñız.',
+Közetüv cedveliñizni [[Special:EditWatchlist/raw|metin olaraq da]] deñiştirip olasıñız.',
'watchlistedit-normal-submit' => 'Saylanğan saifelerni közetüv cevelinden yoq et',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 saife|$1 saife}} közetüv cedveliñizden yoq etildi:',
'watchlistedit-raw-title' => 'Közetüv ceveliñizni deñiştirmektesiñiz',
'watchlistedit-raw-legend' => 'Közetüv cedvelini deñiştirilüvi',
'watchlistedit-raw-explain' => 'Közetüv cedveliñizdeki saifeler aşağıda kösterilgen. Er satırda bir saife serlevası olmaq üzere, serlevalarnı kirsetip ya da yoq etip cedvelni deñiştirip olasıñız.
Bitirgen soñ "{{int:Watchlistedit-raw-submit}}" yazısına basıñız.
-[[Special:Watchlist/edit|Standart redaktornı da qullanıp olasıñız]].',
+[[Special:EditWatchlist|Standart redaktornı da qullanıp olasıñız]].',
'watchlistedit-raw-titles' => 'Saifeler:',
'watchlistedit-raw-submit' => 'Közetüv cedvelini yañart',
'watchlistedit-raw-done' => 'Közetüv cedveliñiz yañardı.',
diff --git a/languages/messages/MessagesCs.php b/languages/messages/MessagesCs.php
index 1b6dd468..012f98d9 100644
--- a/languages/messages/MessagesCs.php
+++ b/languages/messages/MessagesCs.php
@@ -8,7 +8,9 @@
* @file
*
* @author Danny B.
+ * @author Dontlietome7
* @author Helix84
+ * @author Jkjk
* @author Kuvaly
* @author Li-sung
* @author Martin Kozák
@@ -254,93 +256,93 @@ $linkTrail = '/^([a-záÄÄéěíňóřšťúůýž]+)(.*)$/sDu';
$separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Dvojitá_přesměrování', 'Dvojita_presmerovani' ),
+ 'Activeusers' => array( 'Aktivní_uživatelé', 'Aktivni_uzivatele' ),
+ 'Allmessages' => array( 'Všechny_zprávy' ),
+ 'Allpages' => array( 'Všechny_stránky', 'Vsechny_stranky' ),
+ 'Ancientpages' => array( 'Nejstarší_stránky', 'Staré_stránky', 'Stare_stranky' ),
+ 'Blankpage' => array( 'Prázdná_stránka' ),
+ 'Block' => array( 'Blokovat_uživatele', 'Blokovat_IP', 'Blokovat_uzivatele' ),
+ 'Blockme' => array( 'Zablokuj_mÄ›', 'Zablokuj_me' ),
+ 'Booksources' => array( 'Zdroje_knih' ),
'BrokenRedirects' => array( 'Přerušená_přesměrování', 'Prerusena_presmerovani' ),
- 'Disambiguations' => array( 'Rozcestníky', 'Rozcestniky' ),
- 'Userlogin' => array( 'Přihlásit', 'Prihlasit' ),
- 'Userlogout' => array( 'Odhlásit', 'Odhlasit' ),
+ 'Categories' => array( 'Kategorie' ),
+ 'ChangePassword' => array( 'Změna_hesla', 'Zmena_hesla', 'Resetovat_heslo' ),
+ 'Confirmemail' => array( 'Potvrdit_e-mail' ),
+ 'Contributions' => array( 'Příspěvky', 'Prispevky' ),
'CreateAccount' => array( 'VytvoÅ™it_úÄet', 'Vytvorit_ucet' ),
- 'Preferences' => array( 'Nastavení', 'Nastaveni' ),
- 'Watchlist' => array( 'Sledované_stránky', 'Sledovane_stranky' ),
- 'Recentchanges' => array( 'Poslední_změny', 'Posledni_zmeny' ),
- 'Upload' => array( 'NaÄíst_soubor', 'Nacist_soubor', 'NaÄíst_obrázek' ),
+ 'Deadendpages' => array( 'Slepé_stránky', 'Slepe_stranky' ),
+ 'DeletedContributions' => array( 'Smazané_příspěvky', 'Smazane_prispevky' ),
+ 'Disambiguations' => array( 'Rozcestníky', 'Rozcestniky' ),
+ 'DoubleRedirects' => array( 'Dvojitá_přesměrování', 'Dvojita_presmerovani' ),
+ 'Emailuser' => array( 'E-mail' ),
+ 'Export' => array( 'Exportovat_stránky' ),
+ 'Fewestrevisions' => array( 'Stránky_s_nejménÄ›_editacemi', 'Stranky_s_nejmene_editacemi', 'Stránky_s_nejmenším_poÄtem_editací' ),
+ 'FileDuplicateSearch' => array( 'Hledání_duplicitních_souborů', 'Hledani_duplicitnich_souboru' ),
+ 'Filepath' => array( 'Cesta_k_souboru' ),
+ 'Import' => array( 'Importovat_stránky' ),
+ 'Invalidateemail' => array( 'Zneplatnit_e-mail', 'Zrušit_potvrzení_e-mailu' ),
+ 'BlockList' => array( 'Blokovaní_uživatelé', 'Blokovani_uzivatele' ),
+ 'LinkSearch' => array( 'Hledání_odkazů', 'Hledani_odkazu' ),
+ 'Listadmins' => array( 'Seznam_správců', 'Seznam_spravcu' ),
+ 'Listbots' => array( 'Seznam_botů', 'Seznam_botu' ),
'Listfiles' => array( 'Seznam_souborů', 'Seznam_souboru' ),
- 'Newimages' => array( 'Nové_obrázky', 'Galerie_nových_obrázků', 'Nove_obrazky' ),
- 'Listusers' => array( 'Uživatelé', 'Uzivatele', 'Seznam_uživatelů', 'Seznam_uzivatelu' ),
'Listgrouprights' => array( 'Seznam_uživatelských_práv', 'Seznam_uzivatelskych_prav' ),
- 'Statistics' => array( 'Statistika', 'Statistiky' ),
- 'Randompage' => array( 'Náhodná_stránka', 'Nahodna_stranka' ),
+ 'Listredirects' => array( 'Seznam_přesměrování', 'Seznam_presmerovani' ),
+ 'Listusers' => array( 'Uživatelé', 'Uzivatele', 'Seznam_uživatelů', 'Seznam_uzivatelu' ),
+ 'Lockdb' => array( 'Zamknout_databázi', 'Zamknout_databazi' ),
+ 'Log' => array( 'Protokolovací_záznamy', 'Protokoly', 'Protokol', 'Protokolovaci_zaznamy' ),
'Lonelypages' => array( 'SirotÄí_stránky', 'Sirotci_stranky' ),
- 'Uncategorizedpages' => array( 'Nekategorizované_stránky', 'Nekategorizovane_stranky' ),
- 'Uncategorizedcategories' => array( 'Nekategorizované_kategorie', 'Nekategorizovane_kategorie' ),
- 'Uncategorizedimages' => array( 'Nekategorizované_soubory', 'Nekategorizovane_soubory' ),
- 'Uncategorizedtemplates' => array( 'Nekategorizované_šablony', 'Nekategorizovane_sablony' ),
- 'Unusedcategories' => array( 'Nepoužívané_kategorie', 'Nepouzivane_kategorie' ),
- 'Unusedimages' => array( 'Nepoužívané_soubory', 'Nepouzivane_soubory' ),
- 'Wantedpages' => array( 'Chybějící_stránky', 'Požadované_stránky', 'Pozadovane_stranky' ),
- 'Wantedcategories' => array( 'Chybějící_kategorie', 'Požadované_kategorie', 'Pozadovane_kategorie' ),
- 'Wantedfiles' => array( 'Chybějící_soubory', 'Požadované_soubory', 'Pozadovane_soubory' ),
- 'Wantedtemplates' => array( 'Chybějící_šablony', 'Požadované_šablony', 'Pozadovane_sablony' ),
+ 'Longpages' => array( 'Nejdelší_stránky', 'Nejdelsi_stranky' ),
+ 'MergeHistory' => array( 'SlouÄení_historie', 'Slouceni_historie', 'SlouÄit_historii' ),
+ 'MIMEsearch' => array( 'Hledání_podle_MIME', 'Hledani_podle_MIME', 'Hledat_podle_MIME_typu' ),
+ 'Mostcategories' => array( 'Stránky_s_nejvíce_kategoriemi', 'Stranky_s_nejvice_kategoriemi', 'Stránky_s_nejvyšším_poÄtem_kategorií' ),
+ 'Mostimages' => array( 'Nejpoužívanější_soubory', 'Nejpouzivanejsi_soubory' ),
'Mostlinked' => array( 'Nejodkazovanější_stránky', 'Nejodkazovanejsi_stranky' ),
'Mostlinkedcategories' => array( 'Nejpoužívanější_kategorie', 'Nejpouzivanejsi_kategorie' ),
'Mostlinkedtemplates' => array( 'Nejpoužívanější_šablony', 'Nejpouzivanejsi_sablony' ),
- 'Mostimages' => array( 'Nejpoužívanější_soubory', 'Nejpouzivanejsi_soubory' ),
- 'Mostcategories' => array( 'Stránky_s_nejvíce_kategoriemi', 'Stranky_s_nejvice_kategoriemi', 'Stránky_s_nejvyšším_poÄtem_kategorií' ),
'Mostrevisions' => array( 'Stránky_s_nejvíce_editacemi', 'Stranky_s_nejvice_editacemi', 'Stránky_s_nejvyšším_poÄtem_editací' ),
- 'Fewestrevisions' => array( 'Stránky_s_nejménÄ›_editacemi', 'Stranky_s_nejmene_editacemi', 'Stránky_s_nejmenším_poÄtem_editací' ),
- 'Shortpages' => array( 'Nejkratší_stránky', 'Nejkratsi_stranky' ),
- 'Longpages' => array( 'Nejdelší_stránky', 'Nejdelsi_stranky' ),
+ 'Movepage' => array( 'Přesunout_stránku' ),
+ 'Mycontributions' => array( 'Mé_příspěvky', 'Me_prispevky' ),
+ 'Mypage' => array( 'Moje_stránka', 'Moje_stranka' ),
+ 'Mytalk' => array( 'Moje_diskuse', 'Moje_diskuze' ),
+ 'Newimages' => array( 'Nové_obrázky', 'Galerie_nových_obrázků', 'Nove_obrazky' ),
'Newpages' => array( 'Nové_stránky', 'Nove_stranky', 'Nejnovější_stránky', 'Nejnovejsi_stranky' ),
- 'Ancientpages' => array( 'Nejstarší_stránky', 'Staré_stránky', 'Stare_stranky' ),
- 'Deadendpages' => array( 'Slepé_stránky', 'Slepe_stranky' ),
+ 'Popularpages' => array( 'Nejnavštěvovanější_stránky', 'Nejnavstevovanejsi_stranky' ),
+ 'Preferences' => array( 'Nastavení', 'Nastaveni' ),
'Protectedpages' => array( 'ZamÄené_stránky', 'Zamcene_stranky' ),
'Protectedtitles' => array( 'ZamÄené_názvy', 'Zamcene_nazvy', 'Stránky_které_nelze_vytvoÅ™it' ),
- 'Allpages' => array( 'Všechny_stránky', 'Vsechny_stranky' ),
- 'Ipblocklist' => array( 'Blokovaní_uživatelé', 'Blokovani_uzivatele' ),
- 'Specialpages' => array( 'Speciální_stránky', 'Specialni_stranky' ),
- 'Contributions' => array( 'Příspěvky', 'Prispevky' ),
- 'Emailuser' => array( 'E-mail' ),
- 'Confirmemail' => array( 'Potvrdit_e-mail' ),
- 'Whatlinkshere' => array( 'Co_odkazuje_na', 'Odkazuje_sem' ),
+ 'Randompage' => array( 'Náhodná_stránka', 'Nahodna_stranka' ),
+ 'Randomredirect' => array( 'Náhodné_přesměrování', 'Nahodne_presmerovani' ),
+ 'Recentchanges' => array( 'Poslední_změny', 'Posledni_zmeny' ),
'Recentchangeslinked' => array( 'Související_změny', 'Souvisejici_zmeny' ),
- 'Movepage' => array( 'Přesunout_stránku' ),
- 'Blockme' => array( 'Zablokuj_mÄ›', 'Zablokuj_me' ),
- 'Booksources' => array( 'Zdroje_knih' ),
- 'Categories' => array( 'Kategorie' ),
- 'Export' => array( 'Exportovat_stránky' ),
- 'Version' => array( 'Verze' ),
- 'Allmessages' => array( 'Všechny_zprávy' ),
- 'Log' => array( 'Protokolovací_záznamy', 'Protokoly', 'Protokol', 'Protokolovaci_zaznamy' ),
- 'Blockip' => array( 'Blokovat_uživatele', 'Blokovat_IP', 'Blokovat_uzivatele' ),
+ 'Revisiondelete' => array( 'Smazat_revizi' ),
+ 'Search' => array( 'Hledání', 'Hledani' ),
+ 'Shortpages' => array( 'Nejkratší_stránky', 'Nejkratsi_stranky' ),
+ 'Specialpages' => array( 'Speciální_stránky', 'Specialni_stranky' ),
+ 'Statistics' => array( 'Statistika', 'Statistiky' ),
+ 'Tags' => array( 'ZnaÄky', 'Znacky' ),
+ 'Uncategorizedcategories' => array( 'Nekategorizované_kategorie', 'Nekategorizovane_kategorie' ),
+ 'Uncategorizedimages' => array( 'Nekategorizované_soubory', 'Nekategorizovane_soubory' ),
+ 'Uncategorizedpages' => array( 'Nekategorizované_stránky', 'Nekategorizovane_stranky' ),
+ 'Uncategorizedtemplates' => array( 'Nekategorizované_šablony', 'Nekategorizovane_sablony' ),
'Undelete' => array( 'Smazané_stránky', 'Smazane_stranky' ),
- 'Import' => array( 'Importovat_stránky' ),
- 'Lockdb' => array( 'Zamknout_databázi', 'Zamknout_databazi' ),
'Unlockdb' => array( 'Odemknout_databázi', 'Odemknout_databazi' ),
- 'Userrights' => array( 'Uživatelská_práva', 'Správa_uživatelů', 'Uzivatelska_prava' ),
- 'MIMEsearch' => array( 'Hledání_podle_MIME', 'Hledani_podle_MIME', 'Hledat_podle_MIME_typu' ),
- 'FileDuplicateSearch' => array( 'Hledání_duplicitních_souborů', 'Hledani_duplicitnich_souboru' ),
- 'Unwatchedpages' => array( 'Nesledované_stránky' ),
- 'Listredirects' => array( 'Seznam_přesměrování', 'Seznam_presmerovani' ),
- 'Revisiondelete' => array( 'Smazat_revizi' ),
+ 'Unusedcategories' => array( 'Nepoužívané_kategorie', 'Nepouzivane_kategorie' ),
+ 'Unusedimages' => array( 'Nepoužívané_soubory', 'Nepouzivane_soubory' ),
'Unusedtemplates' => array( 'Nepoužívané_šablony', 'Nepouzivane_sablony' ),
- 'Randomredirect' => array( 'Náhodné_přesměrování', 'Nahodne_presmerovani' ),
- 'Mypage' => array( 'Moje_stránka', 'Moje_stranka' ),
- 'Mytalk' => array( 'Moje_diskuse', 'Moje_diskuze' ),
- 'Mycontributions' => array( 'Mé_příspěvky', 'Me_prispevky' ),
- 'Listadmins' => array( 'Seznam_správců', 'Seznam_spravcu' ),
- 'Listbots' => array( 'Seznam_botů', 'Seznam_botu' ),
- 'Popularpages' => array( 'Nejnavštěvovanější_stránky', 'Nejnavstevovanejsi_stranky' ),
- 'Search' => array( 'Hledání', 'Hledani' ),
- 'Resetpass' => array( 'Změna_hesla', 'Zmena_hesla', 'Resetovat_heslo' ),
+ 'Unwatchedpages' => array( 'Nesledované_stránky' ),
+ 'Upload' => array( 'NaÄíst_soubor', 'Nacist_soubor', 'NaÄíst_obrázek' ),
+ 'Userlogin' => array( 'Přihlásit', 'Prihlasit' ),
+ 'Userlogout' => array( 'Odhlásit', 'Odhlasit' ),
+ 'Userrights' => array( 'Uživatelská_práva', 'Správa_uživatelů', 'Uzivatelska_prava' ),
+ 'Version' => array( 'Verze' ),
+ 'Wantedcategories' => array( 'Chybějící_kategorie', 'Požadované_kategorie', 'Pozadovane_kategorie' ),
+ 'Wantedfiles' => array( 'Chybějící_soubory', 'Požadované_soubory', 'Pozadovane_soubory' ),
+ 'Wantedpages' => array( 'Chybějící_stránky', 'Požadované_stránky', 'Pozadovane_stranky' ),
+ 'Wantedtemplates' => array( 'Chybějící_šablony', 'Požadované_šablony', 'Pozadovane_sablony' ),
+ 'Watchlist' => array( 'Sledované_stránky', 'Sledovane_stranky' ),
+ 'Whatlinkshere' => array( 'Co_odkazuje_na', 'Odkazuje_sem' ),
'Withoutinterwiki' => array( 'Bez_interwiki', 'Stránky_bez_interwiki_odkazů' ),
- 'MergeHistory' => array( 'SlouÄení_historie', 'Slouceni_historie', 'SlouÄit_historii' ),
- 'Filepath' => array( 'Cesta_k_souboru' ),
- 'Invalidateemail' => array( 'Zneplatnit_e-mail', 'Zrušit_potvrzení_e-mailu' ),
- 'Blankpage' => array( 'Prázdná_stránka' ),
- 'LinkSearch' => array( 'Hledání_odkazů', 'Hledani_odkazu' ),
- 'DeletedContributions' => array( 'Smazané_příspěvky', 'Smazane_prispevky' ),
- 'Tags' => array( 'ZnaÄky', 'Znacky' ),
- 'Activeusers' => array( 'Aktivní_uživatelé', 'Aktivni_uzivatele' ),
);
$messages = array(
@@ -375,8 +377,8 @@ $messages = array(
'tog-shownumberswatching' => 'Zobrazovat poÄet sledujících uživatelů',
'tog-oldsig' => 'Stávající podpis:',
'tog-fancysig' => 'Používat v podpisu wikitext (bez automatického odkazu)',
-'tog-externaleditor' => 'ImplicitnÄ› používat externí editor (pouze pro pokroÄilé, vyžaduje speciální nastavení poÄítaÄe; [http://www.mediawiki.org/wiki/Manual:External_editors další informace])',
-'tog-externaldiff' => 'ImplicitnÄ› používat externí porovnávací program (pouze pro pokroÄilé, vyžaduje speciální nastavení poÄítaÄe; [http://www.mediawiki.org/wiki/Manual:External_editors další informace])',
+'tog-externaleditor' => 'ImplicitnÄ› používat externí editor (pouze pro pokroÄilé, vyžaduje speciální nastavení poÄítaÄe; [//www.mediawiki.org/wiki/Manual:External_editors další informace])',
+'tog-externaldiff' => 'ImplicitnÄ› používat externí porovnávací program (pouze pro pokroÄilé, vyžaduje speciální nastavení poÄítaÄe; [//www.mediawiki.org/wiki/Manual:External_editors další informace])',
'tog-showjumplinks' => 'Používat odkazy „skoÄit na“ pro vyšší přístupnost',
'tog-uselivepreview' => 'Používat rychlý náhled (JavaScript) (Experimentální)',
'tog-forceeditsummary' => 'Upozornit, když nevyplním shrnutí editace',
@@ -473,15 +475,7 @@ $messages = array(
'listingcontinuesabbrev' => 'pokraÄ.',
'index-category' => 'Indexované stránky',
'noindex-category' => 'Neindexované stránky',
-
-'mainpagetext' => "'''MediaWiki byla úspěšně nainstalována.'''",
-'mainpagedocfooter' => '[http://meta.wikimedia.org/wiki/Help:Contents Uživatelská příruÄka] vám napoví, jak MediaWiki používat.
-
-== ZaÄínáme ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Nastavení konfigurace]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Často kladené otázky o MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-mailová konference oznámení MediaWiki]',
+'broken-file-category' => 'Stránky s odkazy na neexistující soubory',
'about' => 'Úvod',
'article' => 'Obsahová stránka',
@@ -533,10 +527,10 @@ $messages = array(
'history' => 'Historie stránky',
'history_short' => 'Historie',
'updatedmarker' => 'změněno od poslední návštěvy',
-'info_short' => 'Informace',
'printableversion' => 'Verze k tisku',
'permalink' => 'Trvalý odkaz',
'print' => 'Vytisknout',
+'view' => 'Zobrazit',
'edit' => 'Editovat',
'create' => 'Vytvořit',
'editthispage' => 'Editovat stránku',
@@ -544,6 +538,7 @@ $messages = array(
'delete' => 'Smazat',
'deletethispage' => 'Smazat stránku',
'undelete_short' => 'Obnovit $1 {{PLURAL:$1|verzi|verze|verzí}}',
+'viewdeleted_short' => 'Zobrazit {{PLURAL:$1|smazanou editaci|$1 smazané editace|$1 smazaných editací}}',
'protect' => 'Zamknout',
'protect_change' => 'změnit',
'protectthispage' => 'Zamknout stránku',
@@ -628,6 +623,8 @@ $1',
'toc' => 'Obsah',
'showtoc' => 'zobrazit',
'hidetoc' => 'skrýt',
+'collapsible-collapse' => 'Sbalit',
+'collapsible-expand' => 'Rozbalit',
'thisisdeleted' => 'Prohlédnout nebo obnovit $1?',
'viewdeleted' => 'Zobrazit $1?',
'restorelink' => '{{PLURAL:$1|smazanou editaci|$1 smazané editace|$1 smazaných editací}}',
@@ -639,6 +636,8 @@ $1',
'page-rss-feed' => 'RSS kanál stránky „$1“',
'page-atom-feed' => 'Atom kanál stránky „$1“',
'red-link-title' => '$1 (stránka neexistuje)',
+'sort-descending' => 'Seřadit sestupně',
+'sort-ascending' => 'Seřadit vzestupně',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Stránka',
@@ -720,12 +719,13 @@ Dotaz: $2',
'protectedpagetext' => 'Tato stránka byla zamÄena, takže ji nelze editovat.',
'viewsourcetext' => 'Můžete si prohlédnout a zkopírovat zdrojový kód této stránky:',
'protectedinterface' => 'Tato stránka obsahuje text softwarového rozhraní a smějí ji editovat jen správci.',
-'editinginterface' => "'''UpozornÄ›ní:''' Editujete stránku, která definuje texty rozhraní. ZmÄ›ny této stránky ovlivní vzhled uživatelského rozhraní vÅ¡em uživatelům. PÅ™i úpravách Äeského pÅ™ekladu zvažte použití [http://translatewiki.net/wiki/Main_Page?setlang=cs translatewiki.net], projektu pro lokalizaci MediaWiki.",
+'editinginterface' => "'''UpozornÄ›ní:''' Editujete stránku, která definuje texty rozhraní. ZmÄ›ny této stránky ovlivní vzhled uživatelského rozhraní vÅ¡em uživatelům. PÅ™i úpravách Äeského pÅ™ekladu zvažte použití [//translatewiki.net/wiki/Main_Page?setlang=cs translatewiki.net], projektu pro lokalizaci MediaWiki.",
'sqlhidden' => '(SQL dotaz skryt)',
'cascadeprotected' => 'Tato stránka je zamÄena, neboÅ¥ je vložena do {{PLURAL:$1|následující stránky zamÄené|následujících stránek zamÄených|následujících stránek zamÄených}} kaskádovým zámkem:
$2',
'namespaceprotected' => "Nemáte povoleno editovat stránky ve jmenném prostoru '''$1'''.",
-'customcssjsprotected' => 'Nemáte povoleno editovat tuto stránku, protože obsahuje osobní nastavení jiného uživatele.',
+'customcssprotected' => 'Nemáte povoleno editovat tuto stránku s CSS, protože obsahuje osobní nastavení jiného uživatele.',
+'customjsprotected' => 'Nemáte povoleno editovat tuto stránku s JavaScriptem, protože obsahuje osobní nastavení jiného uživatele.',
'ns-specialprotected' => 'Stránky ve jmenném prostoru {{ns:special}} nelze editovat.',
'titleprotected' => "Stránku s tímto názvem nelze založit, protože název zamknul uživatel [[User:$1|$1]] s odůvodněním: ''$2''.",
@@ -762,6 +762,7 @@ Nezapomeňte si upravit své [[Special:Preferences|nastavení {{grammar:2sg|{{SI
'createaccount' => 'VytvoÅ™it nový úÄet',
'gotaccount' => "Už jste registrováni? '''$1'''.",
'gotaccountlink' => 'Přihlaste se',
+'userlogin-resetlink' => 'Zapomněli jste přihlašovací údaje?',
'createaccountmail' => 'pomocí e-mailu',
'createaccountreason' => 'Důvod:',
'badretype' => 'Vámi napsaná hesla nesouhlasí.',
@@ -771,11 +772,13 @@ Zvolte si prosím jiné jméno.',
'createaccounterror' => 'NepodaÅ™ilo se vytvoÅ™it uživatelský úÄet: $1',
'nocookiesnew' => 'Uživatelský úÄet byl vytvoÅ™en, ale nejste pÅ™ihlášeni. {{SITENAME}} používá cookies k pÅ™ihlášení uživatelů. Vy máte cookies vypnuty. Prosím zapnÄ›te je a pÅ™ihlaste se znovu s vaším novým uživatelským jménem a heslem.',
'nocookieslogin' => '{{SITENAME}} používá cookies k přihlášení uživatelů. Vy máte cookies vypnuty. Prosím zapněte je a zkuste znovu.',
+'nocookiesfornew' => 'Uživatelský úÄet nebyl založen, neboÅ¥ jsme nebyli schopni potvrdit jeho původ.
+Ujistěte se, že máte povoleny cookies, obnovte tuto stránku a zkuste to znovu.',
'noname' => 'Musíte uvést jméno svého úÄtu.',
'loginsuccesstitle' => 'Přihlášení uspělo',
'loginsuccess' => 'Nyní jste přihlášen na {{grammar:6sg|{{SITENAME}}}} jako uživatel „$1“.',
'nosuchuser' => 'Neexistuje uživatel se jménem „$1“. U uživatelských jmen se rozliÅ¡ují malá/velká písmena. Zkontrolujte zápis, nebo si [[Special:UserLogin/signup|vytvoÅ™te nový úÄet]].',
-'nosuchusershort' => 'Neexistuje uživatel se jménem „<nowiki>$1</nowiki>“. Zkontrolujte zápis.',
+'nosuchusershort' => 'Neexistuje uživatel se jménem „$1“. Zkontrolujte zápis.',
'nouserspecified' => 'Musíte zadat uživatelské jméno.',
'login-userblocked' => 'Tento uživatel je zablokován. Přihlášení není dovoleno.',
'wrongpassword' => 'Vámi uvedené heslo nesouhlasí. Zkuste to znovu.',
@@ -821,13 +824,14 @@ Pokud byl úÄet vytvoÅ™en omylem, považujte tuto zprávu za bezpÅ™edmÄ›tnou.',
'usernamehasherror' => 'Uživatelské jméno nemůže obsahovat znak mřížka (#)',
'login-throttled' => 'Provedli jste příliš mnoho pokusů o přihlášení.
PoÄkejte chvíli, než to zkusíte znovu.',
+'login-abort-generic' => 'Vaše přihlášení se nezdařilo – přerušeno',
'loginlanguagelabel' => 'Jazyk: $1',
'suspicious-userlogout' => 'Váš požadavek na odhlášení byl odmítnut, neboÅ¥ to vypadá, že ho poslal rozbitý prohlížeÄ nebo cachující proxy.',
# E-mail sending
'php-mail-error-unknown' => 'Neznámá chyba v PHP funkci mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Změna hesla',
'resetpass_announce' => 'PÅ™ihlaÅ¡ujete se doÄasným heslem zaslaným e-mailem. PÅ™ihlášení lze dokonÄit po nastavení nového trvalého hesla.',
'resetpass_text' => '<!-- Sem přidejte text -->',
@@ -845,6 +849,38 @@ PoÄkejte chvíli, než to zkusíte znovu.',
Možná jste si již úspěšnÄ› heslo zmÄ›nili, nebo jste si vyžádali nové doÄasné heslo.',
'resetpass-temp-password' => 'DoÄasné heslo:',
+# Special:PasswordReset
+'passwordreset' => 'Reset hesla',
+'passwordreset-text' => 'Pro obdržení e-mailu s pÅ™ipomenutím detailů vaÅ¡eho úÄtu vyplňte tento formulář.',
+'passwordreset-legend' => 'Znovu nastavit heslo',
+'passwordreset-disabled' => 'Znovunastavení hesla je na této wiki zakázáno.',
+'passwordreset-pretext' => '{{PLURAL:$1||Zadejte jeden z údajů níže}}',
+'passwordreset-username' => 'Uživatelské jméno:',
+'passwordreset-domain' => 'Doména:',
+'passwordreset-email' => 'E-mailová adresa:',
+'passwordreset-emailtitle' => 'Informace k úÄtu na {{grammar:6sg|{{SITENAME}}}}',
+'passwordreset-emailtext-ip' => 'Někdo (patrně vy, z IP adresy $1) zažádal o připomenutí informací k vašemu
+úÄtu na {{grammar:6sg|{{SITENAME}}}} ($4). K této adrese {{PLURAL:$3|je pÅ™iÅ™azen následující úÄet|jsou pÅ™iÅ™azeny následující úÄty}}:
+
+$2
+
+{{PLURAL:$3|Toto doÄasné heslo|Tato doÄasná hesla}} vyprší {{PLURAL:$5|za jeden den|za $5 dny|za $5 dnů}}.
+Nyní byste se měl(a) přihlásit a zvolit si nové heslo. Pokud tento požadavek
+poslal někdo jiný nebo jste si na své staré heslo vzpomněl(a), a nechcete ho
+tedy změnit, můžete tuto zprávu ignorovat a nadále používat původní heslo.',
+'passwordreset-emailtext-user' => '{{gender:$1|Uživatel|Uživatelka|Uživatel}} $1 {{grammar:2sg|{{SITENAME}}}} {{gender:$1|zažádal|zažádala|zažádal}} o připomenutí informací k vašemu
+úÄtu na {{grammar:6sg|{{SITENAME}}}} ($4). K této adrese {{PLURAL:$3|je pÅ™iÅ™azen následující úÄet|jsou pÅ™iÅ™azeny následující úÄty}}:
+
+$2
+
+{{PLURAL:$3|Toto doÄasné heslo|Tato doÄasná hesla}} vyprší {{PLURAL:$5|za jeden den|za $5 dny|za $5 dnů}}.
+Nyní byste se měl(a) přihlásit a zvolit si nové heslo. Pokud tento požadavek
+poslal někdo jiný nebo jste si na své staré heslo vzpomněl(a), a nechcete ho
+tedy změnit, můžete tuto zprávu ignorovat a nadále používat původní heslo.',
+'passwordreset-emailelement' => 'Uživatelské jméno: $1
+DoÄasné heslo: $2',
+'passwordreset-emailsent' => 'E-mail s heslem byl odeslán.',
+
# Edit page toolbar
'bold_sample' => 'TuÄný text',
'bold_tip' => 'TuÄný text',
@@ -856,8 +892,6 @@ Možná jste si již úspěšně heslo změnili, nebo jste si vyžádali nové d
'extlink_tip' => 'Externí odkaz (nezapomeňte na předponu http://)',
'headline_sample' => 'Text nadpisu',
'headline_tip' => 'Nadpis druhé úrovně',
-'math_sample' => 'Vložit sem vzorec',
-'math_tip' => 'Matematický vzorec (LaTeX)',
'nowiki_sample' => 'Sem vložte neformátovaný text',
'nowiki_tip' => 'Ignorovat formátování wiki',
'image_sample' => 'Příklad.jpg',
@@ -938,7 +972,7 @@ Pokud jste zde omylem, stisknÄ›te ve svém prohlížeÄi tlaÄítko ''ZpÄ›t''.",
Můžete [[Special:Search/{{PAGENAME}}|zkusit tento název vyhledat]] na jiných stránkách, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} prohlédnout si příslušné protokolovací záznamy] nebo [{{fullurl:{{FULLPAGENAME}}|action=edit}} tuto stránku založit]</span>.',
'noarticletext-nopermission' => 'Tato stránka zatím neobsahuje žádný text.
Můžete [[Special:Search/{{PAGENAME}}|zkusit tento název vyhledat]] na jiných stránkách nebo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} si prohlédnout příslušné protokolovací záznamy]</span>.',
-'userpage-userdoesnotexist' => 'Uživatelský úÄet „$1“ není zaregistrován. Zkontrolujte zda skuteÄnÄ› chcete vytvoÅ™it Äi editovat tuto stránku.',
+'userpage-userdoesnotexist' => 'Uživatelský úÄet „<nowiki>$1</nowiki>“ není zaregistrován. Zkontrolujte zda skuteÄnÄ› chcete vytvoÅ™it Äi editovat tuto stránku.',
'userpage-userdoesnotexist-view' => 'Uživatelský úÄet „$1“ není zaregistrován.',
'blocked-notice-logextract' => 'Tento uživatel je momentálně zablokován.
Zde je pro přehled zobrazen nejnovější záznam z knihy zablokování:',
@@ -972,6 +1006,7 @@ Pokud se tento problém bude opakovat, zkuste se [[Special:UserLogout|odhlásit]
'token_suffix_mismatch' => "'''VaÅ¡e editace byla odmítnuta, protože Váš prohlížeÄ komolí nÄ›které znaky v editovaném textu.
Editace byla odmítnuta, aby se zabránilo poškození textu stránky.
Toto se může někdy stát pokud používáte chybující webový anonymizér.'''",
+'edit_form_incomplete' => "'''Část editaÄního formuláře nedorazila na server; pÅ™ekontrolujte úplnost zmÄ›n a zkuste to znovu.'''",
'editing' => 'Editace stránky $1',
'editingsection' => 'Editace stránky $1 (Äást)',
'editingcomment' => 'Editace stránky $1 (nová sekce)',
@@ -1201,7 +1236,8 @@ Prohlédněte si protokolovací záznamy.',
# Suppression log
'suppressionlog' => 'Záznam utajení',
-'suppressionlogtext' => 'Toto je záznam Äinností dohlížitelů – mazání a blokování zahrnující skrytí obsahu i pÅ™ed správci. Vizte též [[Special:IPBlockList|seznam vÅ¡ech probíhajících bloků]].',
+'suppressionlogtext' => 'Toto je seznam mazání a blokování zahrnující skrytí obsahu i před správci.
+Vizte též [[Special:BlockList|seznam všech probíhajících bloků]].',
# History merging
'mergehistory' => 'SluÄování historií stránek',
@@ -1309,12 +1345,13 @@ Pokud na zaÄátek dotazu pÅ™idáte ''all:'', bude se hledat vÅ¡ude (vÄetnÄ› di
'searchdisabled' => '<p>Omlouváme se. Plnotextové vyhledávání je doÄasnÄ› nedostupné. Zatím můžete zkusit vyhledávání Googlem; je ale možné, že jeho výsledky nemusí být aktuální.</p>',
# Quickbar
-'qbsettings' => 'Nastavení lišty nástrojů',
-'qbsettings-none' => 'Žádný',
-'qbsettings-fixedleft' => 'Leží vlevo',
-'qbsettings-fixedright' => 'Leží vpravo',
-'qbsettings-floatingleft' => 'Plovoucí vlevo',
-'qbsettings-floatingright' => 'Plovoucí vpravo',
+'qbsettings' => 'Nastavení lišty nástrojů',
+'qbsettings-none' => 'Žádný',
+'qbsettings-fixedleft' => 'Leží vlevo',
+'qbsettings-fixedright' => 'Leží vpravo',
+'qbsettings-floatingleft' => 'Plovoucí vlevo',
+'qbsettings-floatingright' => 'Plovoucí vpravo',
+'qbsettings-directionality' => 'Pevný v závislosti na směrovosti vašeho písma',
# Preferences page
'preferences' => 'Nastavení',
@@ -1325,9 +1362,10 @@ Pokud na zaÄátek dotazu pÅ™idáte ''all:'', bude se hledat vÅ¡ude (vÄetnÄ› di
'changepassword' => 'Změna hesla',
'prefs-skin' => 'Vzhled',
'skin-preview' => 'Náhled',
-'prefs-math' => 'Matematika',
'datedefault' => 'Implicitní',
+'prefs-beta' => 'Funkce z betaverze',
'prefs-datetime' => 'Datum a Äas',
+'prefs-labs' => 'Funkce z Labs',
'prefs-personal' => 'Údaje o uživateli',
'prefs-rc' => 'Poslední změny',
'prefs-watchlist' => 'Sledované stránky',
@@ -1349,8 +1387,6 @@ Pokud na zaÄátek dotazu pÅ™idáte ''all:'', bude se hledat vÅ¡ude (vÄetnÄ› di
'columns' => 'Sloupce',
'searchresultshead' => 'Vyhledávání',
'resultsperpage' => 'PoÄet výsledků na stránku:',
-'contextlines' => 'PoÄet řádků u každého výsledku:',
-'contextchars' => 'Kontext na každé řádce:',
'stub-threshold' => 'Limit pro formátování odkazu jako <a href="#" class="stub">pahýl</a> (v bajtech):',
'stub-threshold-disabled' => 'Vypnuto',
'recentchangesdays' => 'PoÄet dní zobrazených v posledních zmÄ›nách:',
@@ -1363,7 +1399,7 @@ Můžete použít tuto náhodně vygenerovanou hodnotu: $1',
'savedprefs' => 'Vaše nastavení bylo uloženo.',
'timezonelegend' => 'Časové pásmo:',
'localtime' => 'Místní Äas:',
-'timezoneuseserverdefault' => 'Použít nastavení serveru',
+'timezoneuseserverdefault' => 'Použít Äasové pásmo wiki ($1)',
'timezoneuseoffset' => 'Jiné (zadejte posun)',
'timezoneoffset' => 'Posun¹:',
'servertime' => 'ÄŒas na serveru:',
@@ -1410,8 +1446,8 @@ Tuto operaci nelze vrátit zpět.',
'prefs-help-gender' => 'Volitelné: používáno softwarem pro správné oslovování v závislosti na pohlaví. Tato informace je veřejná.',
'email' => 'E-mail',
'prefs-help-realname' => 'SkuteÄné jméno (volitelné): pokud ho zadáte, bude použito pro oznaÄení autorství vaší práce.',
-'prefs-help-email' => 'Uvedení e-mailu není povinné, ale umožní zaslání nového hesla v případě, že své heslo zapomenete.
-Také můžete dovolit ostatním uživatelům vás prostřednictvím uživatelské stránky kontaktovat, aniž by byla vaše adresa prozrazena.',
+'prefs-help-email' => 'Uvedení e-mailu není povinné, ale umožní zaslání nového hesla v případě, že své heslo zapomenete.',
+'prefs-help-email-others' => 'Také můžete dovolit ostatním uživatelům vás prostřednictvím uživatelské stránky kontaktovat, aniž by byla vaše adresa prozrazena.',
'prefs-help-email-required' => 'Je vyžadována e-mailová adresa.',
'prefs-info' => 'Základní údaje',
'prefs-i18n' => 'Lokalizace',
@@ -1536,15 +1572,15 @@ Také můžete dovolit ostatním uživatelům vás prostřednictvím uživatelsk
'right-userrights' => 'Nastavování práv ostatním uživatelům',
'right-userrights-interwiki' => 'Nastavování práv ostatním uživatelům na jiných wiki',
'right-siteadmin' => 'Zamykání a odemykání databáze',
-'right-reset-passwords' => 'Nastavování hesel jiným uživatelům',
'right-override-export-depth' => 'Exportovat stránky vÄetnÄ› odkazovaných stránek až do hloubky 5',
'right-sendemail' => 'Odesílání e-mailů ostatním uživatelům',
# 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',
-'rightsnone' => '(žádné)',
+'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',
+'rightsnone' => '(žádné)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'pÅ™eÄíst tuto stránku',
@@ -1664,11 +1700,12 @@ Pro vložení obrázku do stránky použijte jeden z následujících způsobů
'minlength1' => 'Jméno souboru musí mít alespoň jeden znak.',
'illegalfilename' => 'Název souboru "$1" obsahuje znaky, které nejsou povoleny v názvech stránek. Prosím přejmenujte soubor a zkuste jej nahrát znovu.',
'badfilename' => 'Jméno souboru bylo změněno na „$1“.',
-'filetype-mime-mismatch' => 'Přípona souboru neodpovídá jeho MIME typu.',
+'filetype-mime-mismatch' => 'Přípona souboru „.$1“ neodpovídá rozpoznanému MIME typu souboru ($2).',
'filetype-badmime' => 'Není povoleno naÄítat soubory MIME typu „$1“.',
'filetype-bad-ie-mime' => 'Nelze naÄíst tento soubor, neboÅ¥ Internet Explorer by ho považoval za „$1“, což je nedovolený a potenciálnÄ› nebezpeÄný typ souboru.',
'filetype-unwanted-type' => "„.$1“''' je nežádoucí formát souborů. {{plural:$3|Upřednostňovaný formát souborů je|Upřednostňované formáty souborů jsou}} $2.",
-'filetype-banned-type' => "'''„.$1“''' je nedovolený formát souborů. {{plural:$3|Povolený formát souborů je|Povolené formáty souborů jsou}} $2.",
+'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|je nedovolený formát souborů|jsou nedovolené formáty souborů}}.
+{{PLURAL:$3|Povolený formát souborů je|Povolené formáty souborů jsou}} $2.",
'filetype-missing' => 'Soubor nemá příponu (např. ".jpg").',
'empty-file' => 'NaÄtený soubor je prázdný.',
'file-too-large' => 'NaÄtený soubor je příliÅ¡ velký.',
@@ -1684,6 +1721,7 @@ Pro vložení obrázku do stránky použijte jeden z následujících způsobů
'large-file' => 'DoporuÄuje se, aby délka souboru nepÅ™esahovala $1, tento soubor má $2.',
'largefileserver' => 'Velikost tohoto souboru pÅ™ekraÄuje limit nastavený na serveru.',
'emptyfile' => 'Soubor, který jste vložili, se zdá být prázdný. Mohl to způsobit překlep v názvu souboru. Prosím zkontrolujte, zda jste opravdu chtěli vložit tento soubor.',
+'windows-nonascii-filename' => 'Tato wiki nepodporuje názvy souborů obsahující zvláštní znaky.',
'fileexists' => "Soubor s tímto jménem již existuje, prosím podívejte se na '''<tt>[[:$1]]</tt>''', pokud nevíte jistě, zda chcete tento soubor nahradit.
[[$1|thumb]]",
'filepageexists' => "Popisná stránka pro soubor s tímto jménem již byla na '''<tt>[[:$1]]</tt>''' založena, avšak odpovídající soubor dosud neexistuje.
@@ -1717,6 +1755,8 @@ Pokud chcete pÅ™esto soubor naÄíst, vraÅ¥te se a zvolte jiný název.
'php-uploaddisabledtext' => 'V PHP je vypnuto naÄítání souborů. Prosím, zkontrolujte nastavení file_uploads.',
'uploadscripted' => 'Tento soubor obsahuje HTML nebo kód skriptu, který by mohl být prohlížeÄem chybnÄ› interpretován.',
'uploadvirus' => 'Tento soubor obsahuje virus! Podrobnosti: $1',
+'uploadjava' => 'Tento soubor je ZIP, který obsahuje javový soubor .class.
+NaÄítání javových souborů není dovoleno, neboÅ¥ by mohly umožnit obcházení bezpeÄnostních omezení.',
'upload-source' => 'Zdrojový soubor',
'sourcefilename' => 'Jméno zdrojového souboru:',
'sourceurl' => 'Zdrojové URL:',
@@ -1726,10 +1766,6 @@ Pokud chcete pÅ™esto soubor naÄíst, vraÅ¥te se a zvolte jiný název.
'upload-options' => 'Možnosti naÄtení',
'watchthisupload' => 'Sledovat tento soubor',
'filewasdeleted' => 'Soubor stejného jména byl již dříve naÄten a posléze smazán. Podrobnosti obsahuje $1.',
-'upload-wasdeleted' => "'''UpozornÄ›ní: NaÄítáte soubor, který byl již dříve smazán.'''
-
-Zvažte zda je vhodné pokraÄovat v naÄítání tohoto souboru.
-Zde je příslušný výpis z knihy smazaných stránek:",
'filename-bad-prefix' => "Jméno souboru, který naÄítáte, zaÄíná na '''„$1“''', což je nevhodné jméno, obvykle automaticky pÅ™iÅ™azované digitálním fotoaparátem. Zvolte jméno, která váš soubor lépe popíše.",
'filename-prefix-blacklist' => ' #<!-- tuto řádku ponechte beze změny --> <pre>
# Používá se následující syntaxe:
@@ -1765,12 +1801,29 @@ Kontaktuje prosím [[Special:ListUsers/sysop|správce]].',
'upload-unknown-size' => 'Neznámá velikost',
'upload-http-error' => 'Došlo k chybě HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Při otevírání souboru ke kontrole ZIP došlo k chybě.',
+'zip-wrong-format' => 'Dodaný soubor není ve formátu ZIP.',
+'zip-bad' => 'Soubor je poÅ¡kozený nebo jinak neÄitelný ZIP.
+Nelze náležitÄ› zkontrolovat jeho bezpeÄnost.',
+'zip-unsupported' => 'Soubor je ZIP, ale používá funkce, které MediaWiki nepodporuje.
+Nelze náležitÄ› zkontrolovat jeho bezpeÄnost.',
+
+# Special:UploadStash
+'uploadstash' => 'Skrýš naÄtených souborů',
+'uploadstash-summary' => 'Tato stránka nabízí přístup k naÄteným (nebo právÄ› naÄítaným) souborům, které dosud nejsou zveÅ™ejnÄ›ny na wiki. Tyto soubory se nezobrazí nikomu kromÄ› uživatele, který je naÄetl.',
+'uploadstash-clear' => 'Vymazat soubory ve skrýši',
+'uploadstash-nofiles' => 'Ve skrýši nemáte žádné soubory.',
+'uploadstash-badtoken' => 'Operace se nezdařila, možná vypršela platnost vašeho oprávnění k editaci. Zkuste to znovu.',
+'uploadstash-errclear' => 'Soubory se nepodařilo vymazat.',
+'uploadstash-refresh' => 'Aktualizovat seznam souborů',
+
# img_auth script messages
'img-auth-accessdenied' => 'Přístup odepřen',
'img-auth-nopathinfo' => 'Chybí PATH_INFO.
-Váš server není nastaven tak, aby poskytoval tuto informaci.
+Váš server není nastaven tak, aby tuto informaci poskytoval.
Možná funguje pomocí CGI a img_auth na něm nemůže fungovat.
-Vizte http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+Vizte [//www.mediawiki.org/wiki/Manual:Image_Authorization Manual:Image Authorization].',
'img-auth-notindir' => 'Požadovaná cesta nespadá pod nakonfigurovaný adresář s naÄtenými soubory.',
'img-auth-badtitle' => 'Z „$1“ nelze vytvořit platný název stránky.',
'img-auth-nologinnWL' => 'Nejste přihlášen(a) a „$1“ není na bílé listině.',
@@ -1845,7 +1898,7 @@ Následující seznam zobrazuje pouze {{PLURAL:$1|tu první|první $1|prvních $
Můžete si prohlédnout [[Special:WhatLinksHere/$2|úplný seznam]].',
'nolinkstoimage' => 'Na tento soubor neodkazuje žádná stránka.',
'morelinkstoimage' => 'Zobrazit [[Special:WhatLinksHere/$1|další odkazy]] na tento soubor.',
-'redirectstofile' => '{{plural:$1|Následující soubor přesměrovává|Následující $1 soubory přesměrovávají|Následujících $1 souborů přesměrovává}} na tento soubor:',
+'linkstoimage-redirect' => '$1 (přesměrování) $2',
'duplicatesoffile' => '{{plural:$1|Následující soubor je duplikát|Následující $1 soubory jsou duplikáty|Následujících $1 souborů jsou duplikáty}} tohoto souboru ([[Special:FileDuplicateSearch/$2|podrobnosti]]):',
'sharedupload' => 'Tento soubor pochází z {{grammar:2sg|$1}} a mohou ho používat ostatní projekty.',
'sharedupload-desc-there' => 'Tento soubor pochází z {{grammar:2sg|$1}} a mohou ho používat ostatní projekty.
@@ -1938,12 +1991,13 @@ Vstup: <code>typ obsahu/podtyp</code>, napÅ™. <code>image/jpeg</code>.',
'disambiguationspage' => 'Template:Rozcestník',
'disambiguations-text' => 'Odkazy na následujících stránkách vedou na rozcestníky (stránky obsahující nÄ›kterou ze Å¡ablon uvedených na [[MediaWiki:Disambiguationspage|seznamu rozcestníkových Å¡ablon]]) místo na přísluÅ¡ný Älánek.',
-'doubleredirects' => 'Dvojitá přesměrování',
-'doubleredirectstext' => 'Na této stránce je seznam přesměrování vedoucích na další přesměrování.
+'doubleredirects' => 'Dvojitá přesměrování',
+'doubleredirectstext' => 'Na této stránce je seznam přesměrování vedoucích na další přesměrování.
Každý řádek obsahuje odkaz na první a druhé pÅ™esmÄ›rování a k tomu cíl druhého pÅ™esmÄ›rování, který obvykle ukazuje jméno „skuteÄné“ cílové stránky, na kterou by mÄ›lo první pÅ™esmÄ›rování odkazovat.
<del>Přeškrtnuté</del> položky již byly vyřešeny.',
-'double-redirect-fixed-move' => 'Stránka [[$1]] byla přesunuta, nyní přesměrovává na [[$2]]',
-'double-redirect-fixer' => 'Opravář přesměrování',
+'double-redirect-fixed-move' => 'Stránka [[$1]] byla přesunuta, nyní přesměrovává na [[$2]]',
+'double-redirect-fixed-maintenance' => 'Oprava dvojitého přesměrování z [[$1]] na [[$2]].',
+'double-redirect-fixer' => 'Opravář přesměrování',
'brokenredirects' => 'Přerušená přesměrování',
'brokenredirectstext' => 'Tato přesměrování vedou na neexistující stránky:',
@@ -2020,6 +2074,7 @@ Uvědomte si, že jiné webové stránky mohou na soubor odkazovat pomocí pří
'pager-newer-n' => '{{PLURAL:$1|1 novější|$1 novější|$1 novějších}}',
'pager-older-n' => '{{PLURAL:$1|1 starší|$1 starší|$1 starších}}',
'suppress' => 'Dozor',
+'querypage-disabled' => 'Tato speciální stránka je z výkonnostních důvodů vypnuta.',
# Book sources
'booksources' => 'Zdroje knih',
@@ -2029,8 +2084,8 @@ Uvědomte si, že jiné webové stránky mohou na soubor odkazovat pomocí pří
'booksources-invalid-isbn' => 'Zadané ISBN se zdá být neplatné. Zkontrolujte jej s originálním zdrojem.',
# Special:Log
-'specialloguserlabel' => 'Uživatel:',
-'speciallogtitlelabel' => 'Název:',
+'specialloguserlabel' => 'Původce:',
+'speciallogtitlelabel' => 'Cíl (název nebo uživatel):',
'log' => 'Protokolovací záznamy',
'all-logs-page' => 'Všechny veřejné záznamy',
'alllogstext' => 'SpoleÄné zobrazení vÅ¡ech dostupných protokolovacích záznamů pro {{grammar:4sg|{{SITENAME}}}}.
@@ -2070,12 +2125,13 @@ Podívejte se také na [[Special:WantedCategories|žádané kategorie]].',
'sp-deletedcontributions-contribs' => 'příspěvky',
# Special:LinkSearch
-'linksearch' => 'Externí odkazy',
+'linksearch' => 'Hledání externích odkazů',
'linksearch-pat' => 'Vyhledávací vzor:',
'linksearch-ns' => 'Jmenný prostor:',
'linksearch-ok' => 'Hledat',
-'linksearch-text' => 'Lze používat zástupné znaky, např. „*.wikipedia.org“.<br />
-Podporované protokoly: <tt>$1</tt>',
+'linksearch-text' => 'Lze používat zástupné znaky, např. „*.wikipedia.org“.
+Povinná je přinejmenším doména nejvyššího řádu, např. „*.org“.<br />
+Podporované protokoly: <tt>$1</tt> (nepřidávejte je do hledání).',
'linksearch-line' => '$2 odkazuje na $1',
'linksearch-error' => 'Zástupné znaky lze použít jen na zaÄátku doménového jména.',
@@ -2137,6 +2193,10 @@ E-mailová adresa, kterou máte uvedenu v [[Special:Preferences|nastavení]], se
'noemailtext' => 'Tento uživatel nezadal platnou e-mailovou adresu.',
'nowikiemailtitle' => 'E-mail není povolen',
'nowikiemailtext' => 'Tento uživatel si nepřeje dostávat e-maily od ostatních uživatelů.',
+'emailnotarget' => 'Neexistující nebo neplatné uživatelské jméno příjemce.',
+'emailtarget' => 'Zadejte uživatelské jméno příjemce',
+'emailusername' => 'Uživatelské jméno:',
+'emailusernamesubmit' => 'Odeslat',
'email-legend' => 'Odeslání e-mailu jinému uživateli {{GRAMMAR:2sg|{{SITENAME}}}}',
'emailfrom' => 'Od:',
'emailto' => 'Komu:',
@@ -2161,9 +2221,9 @@ E-mailová adresa, kterou máte uvedenu v [[Special:Preferences|nastavení]], se
'watchlistanontext' => 'Pro prohlížení Äi úpravu seznamu sledovaných stránek se musíte $1.',
'watchnologin' => 'Nejste přihlášen(a)',
'watchnologintext' => 'Pro sledování stránek se musíte [[Special:UserLogin|přihlásit]].',
-'addedwatch' => 'Přidáno k sledovaným',
+'addwatch' => 'Přidat do sledovaných stránek',
'addedwatchtext' => 'Stránka „[[:$1]]“ byla pÅ™idána mezi stránky, které [[Special:Watchlist|sledujete]]. Budoucí zmÄ›ny této stránky se objeví <b>tuÄnÄ›</b> v [[Special:RecentChanges|seznamu posledních zmÄ›n]], aby bylo snadnÄ›jší si jí povÅ¡imnout. Pokud budete pozdÄ›ji chtít stránku ze seznamu sledovaných smazat, kliknÄ›te na „Nesledovat tuto stránku“ v liÅ¡tÄ› nástrojů.',
-'removedwatch' => 'Vyřazeno ze seznamu sledovaných stránek',
+'removewatch' => 'Vyřadit ze sledovaných stránek',
'removedwatchtext' => 'Stránka „[[:$1]]“ byla vyřazena z vašeho [[Special:Watchlist|seznamu sledovaných stránek]].',
'watch' => 'Sledovat',
'watchthispage' => 'Sledovat tuto stránku',
@@ -2184,8 +2244,9 @@ E-mailová adresa, kterou máte uvedenu v [[Special:Preferences|nastavení]], se
'watchlist-options' => 'Možnosti sledovaných stránek',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Přidávám na seznam sledovaných stránek…',
-'unwatching' => 'Odebírám ze seznamu sledovaných stránek…',
+'watching' => 'Přidávám na seznam sledovaných stránek…',
+'unwatching' => 'Odebírám ze seznamu sledovaných stránek…',
+'watcherrortext' => 'Při změně sledování stránky „$1“ došlo k chybě.',
'enotif_mailer' => 'ZasílaÄ hlášení {{grammar:2sg|{{SITENAME}}}}',
'enotif_reset' => 'OznaÄit vÅ¡e jako navÅ¡tívené',
@@ -2216,16 +2277,16 @@ Případně si můžete vynulovat příznaky ve svém seznamu sledovaných strá
--
Změnit nastavení e-mailových oznámení můžete na
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Nastavení sledovaných stránek může změnit na
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:Special:Watchlist/edit}}
Stránku můžete ze svých sledovaných vyřadit na
$UNWATCHURL
Rady a kontakt:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Smazat stránku',
@@ -2240,7 +2301,7 @@ Rady a kontakt:
'confirmdeletetext' => 'Chystáte se smazat stránku s celou její historií. Prosím potvrÄte, že to opravdu chcete uÄinit, že si uvÄ›domujete důsledky a že je to v souladu s [[{{MediaWiki:Policy-url}}|pravidly]].',
'actioncomplete' => 'Provedeno',
'actionfailed' => 'Operace se nezdařila',
-'deletedtext' => 'Stránka nebo soubor „<nowiki>$1</nowiki>“ byla smazána. $2 zaznamenává poslední smazání.',
+'deletedtext' => 'Stránka nebo soubor „$1“ byla smazána. $2 zaznamenává poslední smazání.',
'deletedarticle' => 'maže „$1“',
'suppressedarticle' => 'utajil „[[$1]]“',
'dellogpage' => 'Kniha smazaných stránek',
@@ -2294,7 +2355,7 @@ Můžete si prohlédnout též [[Special:ProtectedPages|seznam aktuálnÄ› platnÃ
'protect_expiry_invalid' => 'Čas vypršení je chybný.',
'protect_expiry_old' => 'Čas vypršení již minul.',
'protect-unchain-permissions' => 'Zpřístupnit další nastavení zámku',
-'protect-text' => "Zde si můžete prohlédnout Äi zmÄ›nit nastavení zámků stránky '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Zde si můžete prohlédnout Äi zmÄ›nit nastavení zámků stránky '''$1'''.",
'protect-locked-blocked' => "Nemůžete mÄ›nit nastavení zámků pokud jste zablokován. SouÄasné nastavení pro tuto stránku je: '''$1''':",
'protect-locked-dblock' => "Nastavení zámků nejde zmÄ›nit kvůli zamÄení databáze.
SouÄasné nastavení pro tuto stránku je: '''$1''':",
@@ -2347,7 +2408,8 @@ SouÄasné nastavení pro tuto stránku je: '''$1''':",
'undeletepagetext' => '{{PLURAL:$1|Následující stránka byla smazána, ale je dosud v archivu, takže je možno ji obnovit|Následující $1 stránky byly smazány, ale jsou dosud v archivu, takže je možno je obnovit|Následujících $1 stránek bylo smazáno, ale jsou dosud v archivu, takže je možno je obnovit}}.
Archiv může být pravidelně vyprazdňován.',
'undelete-fieldset-title' => 'Obnovit revize',
-'undeleteextrahelp' => "Pro úplné obnovení stránky s kompletní historií ponechte vÅ¡echny ÄtvereÄky nezaÅ¡krtnuté a kliknÄ›te na '''''Obnovit'''''. Pro ÄásteÄné obnovení zaÅ¡krtnÄ›te ÄtvereÄky u obnovovaných revizí a kliknÄ›te na '''''Obnovit'''''. Kliknutí na '''''Reset''''' vyprázdní komentář a zruší vÅ¡echna zaÅ¡krtnutí.",
+'undeleteextrahelp' => "Pokud chcete obnovit kompletní historii stránky, ponechte vÅ¡echny ÄtvereÄky nezaÅ¡krtnuté a kliknÄ›te na '''''{{int:undeletebtn}}'''''.
+Pro ÄásteÄné obnovení zaÅ¡krtnÄ›te ÄtvereÄky u obnovovaných revizí a kliknÄ›te na '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|verze je archivována|verze jsou archivovány|verzí je archivováno}}',
'undeletehistory' => 'Pokud stránku obnovíte, budou v historii obnoveny všechny verze. Pokud byla vytvořena nová stránka se stejným jménem jako smazaná, obnovené verze se zapíší na starší místo v historii novější stránky.',
'undeleterevdel' => 'Obnovení nebude provedeno, pokud by vedlo k ÄásteÄnému odstranÄ›ní aktuální verze stránky. V takovém případÄ› musíte odznaÄit nebo odkrýt nejnovÄ›jší smazanou verzi.',
@@ -2386,9 +2448,12 @@ $1',
'undelete-show-file-submit' => 'Ano',
# Namespace form on various pages
-'namespace' => 'Jmenný prostor:',
-'invert' => 'Obrátit výběr',
-'blanknamespace' => '(Hlavní)',
+'namespace' => 'Jmenný prostor:',
+'invert' => 'Obrátit výběr',
+'tooltip-invert' => 'ZaÅ¡krtnutím tohoto políÄka skryjete zmÄ›ny stránek ve zvoleném jmenném prostoru (a souvisejícím jmenném prostoru, pokud je zaÅ¡krtnuto)',
+'namespace_association' => 'Související jmenný prostor',
+'tooltip-namespace_association' => 'ZaÅ¡krtnutím tohoto políÄka zahrnete i diskusní Äi obsahový jmenný prostor přísluÅ¡ný k vybranému jmennému prostoru',
+'blanknamespace' => '(Hlavní)',
# Contributions
'contributions' => 'Příspěvky uživatele',
@@ -2426,7 +2491,7 @@ Zde je pro přehled zobrazen nejnovější záznam z knihy zablokování:',
'nolinkshere-ns' => "Ve zvoleném jmenném prostoru na '''[[:$1]]''' neodkazuje žádná stránka.",
'isredirect' => 'přesměrování',
'istemplate' => 'vložení',
-'isimage' => 'odkaz na soubor',
+'isimage' => 'vložení souboru',
'whatlinkshere-prev' => '{{PLURAL:$1|předchozí|předchozí $1|předchozích $1}}',
'whatlinkshere-next' => '{{PLURAL:$1|následující|následující $1|následujících $1}}',
'whatlinkshere-links' => '↠odkazy',
@@ -2437,13 +2502,15 @@ Zde je pro přehled zobrazen nejnovější záznam z knihy zablokování:',
'whatlinkshere-filters' => 'Filtry',
# Block/unblock
+'autoblockid' => 'Autoblok #$1',
+'block' => 'Zablokovat uživatele',
+'unblock' => 'Odblokovat uživatele',
'blockip' => 'Zablokovat uživatele',
'blockip-title' => 'Blokovat uživatele',
'blockip-legend' => 'Zablokovat uživatele',
'blockiptext' => 'Tento formulář slouží k zablokování editací z konkrétní IP adresy nebo uživatelského jména.
Toto by mělo být používáno jen v souladu s [[{{MediaWiki:Policy-url}}|pravidly]].
Udejte přesný důvod níže (například ocitujte, které stránky byly poškozeny).',
-'ipaddress' => 'IP adresa:',
'ipadressorusername' => 'IP adresa nebo uživatelské jméno:',
'ipbexpiry' => 'Čas vypršení:',
'ipbreason' => 'Důvod:',
@@ -2456,7 +2523,7 @@ Udejte přesný důvod níže (například ocitujte, které stránky byly poško
** Zastrašování nebo vyhrožování
** Zneužívání více úÄtů
** Nevhodné uživatelské jméno',
-'ipbanononly' => 'Zablokovat pouze anonymní uživatele',
+'ipb-hardblock' => 'Zabránit přihlášeným uživatelům editovat z této IP adresy',
'ipbcreateaccount' => 'Nedovolit registraci nových uživatelů',
'ipbemailban' => 'Bránit uživateli v posílání e-mailů',
'ipbenableautoblock' => 'Automaticky blokovat IP adresy používané tímto uživatelem',
@@ -2467,12 +2534,15 @@ Udejte přesný důvod níže (například ocitujte, které stránky byly poško
'ipbotherreason' => 'Jiný/další důvod:',
'ipbhidename' => 'Skrýt uživatelské jméno u editací a v seznamech',
'ipbwatchuser' => 'Sledovat uživatelskou a diskusní stranu tohoto uživatele',
-'ipballowusertalk' => 'Umožnit tomuto uživateli i při zablokování editovat svou diskusní stránku',
+'ipb-disableusertalk' => 'Zabránit tomuto uživateli editovat vlastní uživatelskou diskusi po dobu zablokování',
'ipb-change-block' => 'Znovu zablokovat uživatele s tímto nastavením',
+'ipb-confirm' => 'Potvrdit zablokování',
'badipaddress' => 'Neplatná IP adresa',
'blockipsuccesssub' => 'Zablokování uspělo',
'blockipsuccesstext' => 'Uživatel „[[Special:Contributions/$1|$1]]“ je zablokován.<br />
Můžete si prohlédnout [[Special:IPBlockList|seznam zablokovaných uživatelů]].',
+'ipb-blockingself' => 'Chystáte se zablokovat {{gender:|sám|sama|sami}} sebe! Jste si {{gender:|jist|jista|jisti}}, že to chcete udělat?',
+'ipb-confirmhideuser' => 'Chystáte se zablokovat uživatele se zapnutou volbou „skrýt uživatelské jméno“. To způsobí, že jméno uživatele zmizí ze všech seznamů a protokolovacích záznamů. Jste si {{gender:|jist|jista|jisti}}, že to chcete udělat?',
'ipb-edit-dropdown' => 'Editace seznamu důvodů zablokování',
'ipb-unblock-addr' => 'Odblokovat uživatele nebo IP $1',
'ipb-unblock' => 'Odblokovat uživatele nebo IP adresu',
@@ -2482,17 +2552,23 @@ Můžete si prohlédnout [[Special:IPBlockList|seznam zablokovaných uživatelů
'unblockiptext' => 'Tímto formulářem je možno obnovit právo blokované IP adresy Äi uživatele opÄ›t pÅ™ispívat do {{grammar:2sg|{{SITENAME}}}}.',
'ipusubmit' => 'Odblokovat',
'unblocked' => '{{GENDER:$1|||Uživatel}} [[User:$1|$1]] {{GENDER:$1|byl odblokován|byla odblokována|byl odblokován}}',
+'unblocked-range' => '$1 bylo odblokováno',
'unblocked-id' => 'Blok $1 byl zrušen',
+'blocklist' => 'Zablokovaní uživatelé',
'ipblocklist' => 'Zablokovaní uživatelé',
'ipblocklist-legend' => 'Hledat zablokovaného uživatele',
-'ipblocklist-username' => 'Jméno nebo IP adresa:',
-'ipblocklist-sh-userblocks' => '$1 zablokované úÄty',
-'ipblocklist-sh-tempblocks' => '$1 doÄasná zablokování',
-'ipblocklist-sh-addressblocks' => '$1 blokování jedné IP adresy',
+'blocklist-userblocks' => 'Skrýt zablokované úÄty',
+'blocklist-tempblocks' => 'Skrýt doÄasná zablokování',
+'blocklist-addressblocks' => 'Skrýt blokování jedné IP adresy',
+'blocklist-timestamp' => 'Datum a Äas',
+'blocklist-target' => 'Cíl',
+'blocklist-expiry' => 'Vypršení',
+'blocklist-by' => 'Blokující správce',
+'blocklist-params' => 'Parametry zablokování',
+'blocklist-reason' => 'Důvod',
'ipblocklist-submit' => 'Hledat',
'ipblocklist-localblock' => 'Místní zablokování',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Jiné zablokování|Jiná zablokování}}',
-'blocklistline' => '$1 $2 zablokoval $3 ($4)',
'infiniteblock' => 'do odvolání',
'expiringblock' => 'do $1, $2',
'anononlyblock' => 'jen anonymové',
@@ -2513,7 +2589,7 @@ Zde je pro přehled zobrazen výpis z knihy zablokování:',
'blocklog-showsuppresslog' => 'Tento uživatel byl zablokován a skryt. Zde je pro přehled zobrazen výpis záznamu utajení:',
'blocklogentry' => 'blokuje „[[$1]]“ s Äasem vyprÅ¡ení $2 $3',
'reblock-logentry' => 'mÄ›ní nastavení bloku „[[$1]]“ s Äasem vyprÅ¡ení $2 $3',
-'blocklogtext' => 'Toto je kniha úkonů blokování a odblokování uživatelů. Automaticky blokované IP adresy nejsou vypsány. Podívejte se na [[Special:IPBlockList|seznam blokování IP]] s výÄtem aktuálních zákazů a blokování.',
+'blocklogtext' => 'Toto je kniha úkonů blokování a odblokování uživatelů. Automaticky blokované IP adresy nejsou vypsány. Podívejte se na [[Special:BlockList|seznam blokování IP]] s výÄtem aktuálních zákazů a blokování.',
'unblocklogentry' => 'odblokovává „$1“',
'block-log-flags-anononly' => 'pouze anonymní uživatelé',
'block-log-flags-nocreate' => 'vytváření úÄtů zablokováno',
@@ -2527,9 +2603,9 @@ Zde je pro přehled zobrazen výpis z knihy zablokování:',
'ipb_expiry_temp' => 'Blokování skrytých uživatelských jmen by měla být trvalá.',
'ipb_hide_invalid' => 'Tento úÄet nelze utajit; možná má příliÅ¡ mnoho editací.',
'ipb_already_blocked' => '„$1“ již je zablokován.',
-'ipb-needreblock' => '== Již zablokován(a) ==
-$1 je již zablokován(a). Chcete změnit nastavení bloku?',
+'ipb-needreblock' => '$1 je již zablokován(a). Chcete změnit nastavení bloku?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Jiné zablokování|Jiná zablokování}}',
+'unblock-hideuser' => 'Tohoto uživatele nemůžete odblokovat, protože jeho uživatelské jméno bylo skryto.',
'ipb_cant_unblock' => 'Chyba: Blokování s ID $1 nebylo nalezeno. Uživatel již možná byl odblokován.',
'ipb_blocked_as_range' => 'Chyba: IP adresa $1 není blokována přímo a tak ji nelze odblokovat. Je Äástí zablokovaného rozsahu $2, který může být odblokován.',
'ip_range_invalid' => 'Neplatný IP rozsah.',
@@ -2563,6 +2639,7 @@ $1 je již zablokován(a). Chcete změnit nastavení bloku?',
'unlockdbsuccesstext' => 'Databáze {{grammar:2sg|{{SITENAME}}}} je odemÄena.',
'lockfilenotwritable' => 'Do souboru zámku databáze nelze zapisovat. Pro zamÄení Äi odemÄení databáze musí mít webový server právo zápisu do tohoto souboru.',
'databasenotlocked' => 'Databáze není uzamÄena.',
+'lockedbyandtime' => '({{gender:$1|zamkl|zamkla|zamkl}} $1 $2 v $3)',
# Move page
'move-page' => 'Přesunout „$1“',
@@ -2681,7 +2758,7 @@ V druhém případě můžete také používat přímý odkaz, např. pomocí [[
'allmessagesdefault' => 'Původní text',
'allmessagescurrent' => 'Aktuální text',
'allmessagestext' => 'Toto je seznam všech hlášení dostupných ve jmenném prostoru MediaWiki.
-Pokud si pÅ™ejete pÅ™ispívat k lokalizaci softwaru MediaWiki, navÅ¡tivte [http://www.mediawiki.org/wiki/Localisation lokalizaÄní stránku na mediawiki.org] a [http://translatewiki.net server translatewiki.net].',
+Pokud si pÅ™ejete pÅ™ispívat k lokalizaci softwaru MediaWiki, navÅ¡tivte [//www.mediawiki.org/wiki/Localisation lokalizaÄní stránku na mediawiki.org] a [//translatewiki.net server translatewiki.net].',
'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages není podporováno, neboť wgUseDatabaseMessages je vypnuto.',
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter' => 'Filtr podle stavu:',
@@ -2843,9 +2920,7 @@ Uložte jej na svůj disk a nahrajte ho sem.',
'vector.js' => '/* JavaScript pro uživatele používající vzhled „Vektor“ */',
# Metadata
-'nodublincore' => 'Na tomto serveru je vypnuto generování metadat Dublin Core RDF.',
-'nocreativecommons' => 'Na tomto serveru je vypnuto generování metadat Creative Commons RDF.',
-'notacceptable' => 'Tento wiki server není schopen poskytnout data ve formátu, který by váš klient byl schopen pÅ™eÄíst.',
+'notacceptable' => 'Tento wiki server není schopen poskytnout data ve formátu, který by váš klient byl schopen pÅ™eÄíst.',
# Attribution
'anonymous' => 'anonymní {{PLURAL:$1|uživatel|uživatelé|uživatelé}} {{GRAMMAR:2sg|{{SITENAME}}}}',
@@ -2868,12 +2943,17 @@ Uložte jej na svůj disk a nahrajte ho sem.',
'spam_blanking' => 'Všechny revize obsahovaly odkazy na $1, vyprázdněno',
# Info page
-'infosubtitle' => 'Informace o stránce',
-'numedits' => 'PoÄet editací (obsahová stránka): $1',
-'numtalkedits' => 'PoÄet editací (diskusní stránka): $1',
-'numwatchers' => 'PoÄet sledujících uživatelů: $1',
-'numauthors' => 'PoÄet různých autorů (obsahová stránka): $1',
-'numtalkauthors' => 'PoÄet různých autorů (diskusní stránka): $1',
+'pageinfo-title' => 'Informace o "$1"',
+'pageinfo-header-edits' => 'Editace',
+'pageinfo-header-watchlist' => 'Sledované stránky',
+'pageinfo-header-views' => 'Zobrazení',
+'pageinfo-subjectpage' => 'Stránka',
+'pageinfo-talkpage' => 'Diskusní stránka',
+'pageinfo-watchers' => 'PoÄet sledujících',
+'pageinfo-edits' => 'PoÄet editací',
+'pageinfo-authors' => 'PoÄet různých autorů',
+'pageinfo-views' => 'PoÄet zobrazení',
+'pageinfo-viewsperedit' => 'PoÄet zobrazení na editaci',
# Skin names
'skinname-standard' => 'Klasický',
@@ -2885,25 +2965,6 @@ Uložte jej na svůj disk a nahrajte ho sem.',
'skinname-modern' => 'Moderní',
'skinname-vector' => 'Vektor',
-# Math options
-'mw_math_png' => 'Vždy jako PNG',
-'mw_math_simple' => 'Jednoduché jako HTML, jinak PNG',
-'mw_math_html' => 'HTML pokud je to možné, jinak PNG',
-'mw_math_source' => 'Ponechat jako TeX (pro textové prohlížeÄe)',
-'mw_math_modern' => 'DoporuÄené nastavení pro moderní prohlížeÄe',
-'mw_math_mathml' => 'MathML, pokud je podporováno (experimentální)',
-
-# Math errors
-'math_failure' => 'Nelze pochopit',
-'math_unknown_error' => 'neznámá chyba',
-'math_unknown_function' => 'neznámá funkce',
-'math_lexing_error' => 'chyba při lexingu',
-'math_syntax_error' => 'syntaktická chyba',
-'math_image_error' => 'Selhala konverze do PNG; zkontrolujte správnou instalaci latexu a dvipng (nebo dvips + gs + convert)',
-'math_bad_tmpdir' => 'Nelze zapsat nebo vytvoÅ™it doÄasný adresář pro matematiku',
-'math_bad_output' => 'Nelze zapsat nebo vytvořit adresář pro výstup matematiky',
-'math_notexvc' => 'Chybí spustitelný texvc; podívejte se prosím do math/README na konfiguraci.',
-
# Patrolling
'markaspatrolleddiff' => 'OznaÄit jako prověřené',
'markaspatrolledtext' => 'OznaÄit tuto stránku jako prověřenou',
@@ -2939,23 +3000,26 @@ $1',
'nextdiff' => 'Porovnání s novější verzí →',
# Media information
-'mediawarning' => "'''Upozornění''': Tento typ souboru může obsahovat škodlivý kód.
+'mediawarning' => "'''Upozornění''': Tento typ souboru může obsahovat škodlivý kód.
OtevÅ™ením souboru můžete ohrozit svůj poÄítaÄ.",
-'imagemaxsize' => "Maximální velikost obrázku:<br />
+'imagemaxsize' => "Maximální velikost obrázku:<br />
''(na stránce s popisem souboru)''",
-'thumbsize' => 'Velikost náhledu:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stránka|stránky|stránek}}',
-'file-info' => 'velikost souboru: $1, MIME typ: $2',
-'file-info-size' => '$1 × $2 pixelů, velikost souboru: $3, MIME typ: $4',
-'file-nohires' => '<small>Větší rozlišení není k dispozici.</small>',
-'svg-long-desc' => 'soubor SVG, nominální rozměr: $1 × $2 pixelů, velikost souboru: $3',
-'show-big-image' => 'Obrázek ve vyšším rozlišení',
-'show-big-image-thumb' => '<small>Velikost tohoto náhledu je: $1 × $2 pixelů</small>',
-'file-info-gif-looped' => 've smyÄce',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|snímek|snímky|snímků}}',
-'file-info-png-looped' => 've smyÄce',
-'file-info-png-repeat' => 'opakováno $1{{PLURAL:$1|krát|krát}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|snímek|snímky|snímků}}',
+'thumbsize' => 'Velikost náhledu:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stránka|stránky|stránek}}',
+'file-info' => 'velikost souboru: $1, MIME typ: $2',
+'file-info-size' => '$1 × $2 pixelů, velikost souboru: $3, MIME typ: $4',
+'file-info-size-pages' => '$1 × $2 pixelů, velikost souboru: $3, MIME typ: $4, $5 {{PLURAL:$5|stránka|stránky|stránek}}',
+'file-nohires' => '<small>Větší rozlišení není k dispozici.</small>',
+'svg-long-desc' => 'soubor SVG, nominální rozměr: $1 × $2 pixelů, velikost souboru: $3',
+'show-big-image' => 'Obrázek ve vyšším rozlišení',
+'show-big-image-preview' => '<small>Velikost tohoto náhledu: $1.</small>',
+'show-big-image-other' => '<small>Jiná rozlišení: $1.</small>',
+'show-big-image-size' => '$1 × $2 pixelů',
+'file-info-gif-looped' => 've smyÄce',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|snímek|snímky|snímků}}',
+'file-info-png-looped' => 've smyÄce',
+'file-info-png-repeat' => 'opakováno $1{{PLURAL:$1|krát|krát}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|snímek|snímky|snímků}}',
# Special:NewFiles
'newimages' => 'Galerie nových souborů',
@@ -2979,14 +3043,20 @@ Obsahuje pouze seznam s odrážkami (řádka zaÄíná s *). První odkaz na Å™Ã
'metadata-help' => 'Tento soubor obsahuje dodateÄné informace, poskytnuté zÅ™ejmÄ› digitálním fotoaparátem nebo scannerem, kterým byl pořízen. Pokud byl soubor od té doby zmÄ›nÄ›n, nÄ›které údaje mohou být neplatné.',
'metadata-expand' => 'Zobrazit podrobnosti',
'metadata-collapse' => 'Skrýt podrobnosti',
-'metadata-fields' => 'Pole EXIF uvedená v této zprávě budou na stránce s popisem vypsána vždy. Pro zobrazení ostatních bude třeba kliknout na „zobrazit podrobnosti“.
+'metadata-fields' => 'Položky metadat obrázků uvedené v této zprávě budou na stránce s popisem vypsána vždy. Pro zobrazení ostatních bude třeba kliknout na „zobrazit podrobnosti“.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Šířka',
@@ -3001,13 +3071,11 @@ Obsahuje pouze seznam s odrážkami (řádka zaÄíná s *). První odkaz na Å™Ã
'exif-ycbcrpositioning' => 'Umístění Y a C',
'exif-xresolution' => 'Rozlišení obrázku na šířku',
'exif-yresolution' => 'Rozlišení obrázku na výšku',
-'exif-resolutionunit' => 'Jednotky rozlišení',
'exif-stripoffsets' => 'Umístění dat obrázku',
'exif-rowsperstrip' => 'PoÄet řádků na pás',
'exif-stripbytecounts' => 'PoÄet bajtů na komprimovaný pás',
'exif-jpeginterchangeformat' => 'Ofset k JPEG SOI',
'exif-jpeginterchangeformatlength' => 'PoÄet bajtů JPEG dat',
-'exif-transferfunction' => 'Přenosová funkce',
'exif-whitepoint' => 'Chroma bílého bodu',
'exif-primarychromaticities' => 'Chroma primárních barev',
'exif-ycbcrcoefficients' => 'Koeficienty matice pro transformaci barevných prostorů',
@@ -3026,7 +3094,6 @@ Obsahuje pouze seznam s odrážkami (řádka zaÄíná s *). První odkaz na Å™Ã
'exif-compressedbitsperpixel' => 'KomprimaÄní režim',
'exif-pixelydimension' => 'Šířka obrázku',
'exif-pixelxdimension' => 'Výška obrázku',
-'exif-makernote' => 'Poznámky výrobce',
'exif-usercomment' => 'Uživatelské poznámky',
'exif-relatedsoundfile' => 'Související zvukový soubor',
'exif-datetimeoriginal' => 'Datum a Äas pořízení obrázku',
@@ -3040,7 +3107,6 @@ Obsahuje pouze seznam s odrážkami (řádka zaÄíná s *). První odkaz na Å™Ã
'exif-exposureprogram' => 'ExpoziÄní program',
'exif-spectralsensitivity' => 'Spektrální citlivost',
'exif-isospeedratings' => 'Nastavení ISO citlivosti',
-'exif-oecf' => 'Optoelektronická převodní funkce (OECF)',
'exif-shutterspeedvalue' => 'ExpoziÄní Äas (APEX)',
'exif-aperturevalue' => 'Clona (APEX)',
'exif-brightnessvalue' => 'Jas (APEX)',
@@ -3053,7 +3119,6 @@ Obsahuje pouze seznam s odrážkami (řádka zaÄíná s *). První odkaz na Å™Ã
'exif-focallength' => 'Ohnisková vzdálenost',
'exif-subjectarea' => 'Umístění předmětu',
'exif-flashenergy' => 'Výkon blesku',
-'exif-spatialfrequencyresponse' => 'Odezva prostorové frekvence',
'exif-focalplanexresolution' => 'X rozlišení ohniskové roviny',
'exif-focalplaneyresolution' => 'Y rozlišení ohniskové roviny',
'exif-focalplaneresolutionunit' => 'Jednotka rozlišení ohniskové roviny',
@@ -3062,7 +3127,6 @@ Obsahuje pouze seznam s odrážkami (řádka zaÄíná s *). První odkaz na Å™Ã
'exif-sensingmethod' => 'Senzor',
'exif-filesource' => 'Zdroj souboru',
'exif-scenetype' => 'Druh scény',
-'exif-cfapattern' => 'Geometrické uspořádání senzoru',
'exif-customrendered' => 'Uživatelské zpracování',
'exif-exposuremode' => 'ExpoziÄní režim',
'exif-whitebalance' => 'Vyvážení bílé',
@@ -3107,10 +3171,79 @@ Obsahuje pouze seznam s odrážkami (řádka zaÄíná s *). První odkaz na Å™Ã
'exif-gpsareainformation' => 'OznaÄení GPS oblasti',
'exif-gpsdatestamp' => 'Datum podle GPS',
'exif-gpsdifferential' => 'Diferenciální korekce GPS',
+'exif-jpegfilecomment' => 'Poznámky ze souboru JPEG',
+'exif-keywords' => 'KlíÄová slova',
+'exif-worldregioncreated' => 'Část světa, ve které byl snímek pořízen',
+'exif-countrycreated' => 'Země, ve které byl snímek pořízen',
+'exif-countrycodecreated' => 'Kód země, ve které byl snímek pořízen',
+'exif-provinceorstatecreated' => 'Provincie nebo stát, kde byl snímek pořízen',
+'exif-citycreated' => 'Město, ve kterém byl snímek pořízen',
+'exif-sublocationcreated' => 'Část města, ve které byl snímek pořízen',
+'exif-worldregiondest' => 'Zobrazená Äást svÄ›ta',
+'exif-countrydest' => 'Zobrazená země',
+'exif-countrycodedest' => 'Kód zobrazené země',
+'exif-provinceorstatedest' => 'Zobrazená provincie nebo stát',
+'exif-citydest' => 'Zobrazené město',
+'exif-sublocationdest' => 'Zobrazená Äást mÄ›sta',
'exif-objectname' => 'Krátký název',
+'exif-specialinstructions' => 'Zvláštní pokyny',
+'exif-headline' => 'Nadpis',
+'exif-credit' => 'Zdroj/poskytovatel',
+'exif-source' => 'Zdroj',
+'exif-editstatus' => 'RedakÄní stav obrázku',
+'exif-urgency' => 'Spěšnost',
+'exif-fixtureidentifier' => 'Název pořadu',
+'exif-locationdest' => 'Zobrazené místo',
+'exif-locationdestcode' => 'Kód zobrazeného místa',
+'exif-objectcycle' => 'Denní doba, pro kterou je soubor urÄen',
+'exif-contact' => 'Kontaktní údaje',
+'exif-writer' => 'Autor popisu',
+'exif-languagecode' => 'Jazyk',
+'exif-iimversion' => 'Verze IIM',
+'exif-iimcategory' => 'Kategorie',
+'exif-iimsupplementalcategory' => 'Doplňkové kategorie',
+'exif-datetimeexpires' => 'Nepoužívat po',
+'exif-datetimereleased' => 'K použití od',
+'exif-originaltransmissionref' => 'Kód pro dohledání původního přenosu',
+'exif-identifier' => 'Identifikátor',
+'exif-lens' => 'Použitý objektiv',
+'exif-serialnumber' => 'Sériové Äíslo přístroje',
+'exif-cameraownername' => 'Majitel přístroje',
+'exif-label' => 'Štítek',
+'exif-datetimemetadata' => 'Datum poslední úpravy metadat',
+'exif-nickname' => 'Neformální název obrázku',
+'exif-rating' => 'Hodnocení (1–5)',
+'exif-rightscertificate' => 'Certifikát řízení práv',
+'exif-copyrighted' => 'Stav autorských práv',
+'exif-copyrightowner' => 'Držitel autorských práv',
+'exif-usageterms' => 'Podmínky užití',
+'exif-webstatement' => 'Online informace o autorských právech',
+'exif-originaldocumentid' => 'Unikátní ID původního dokumentu',
+'exif-licenseurl' => 'URL licence',
+'exif-morepermissionsurl' => 'Informace o jiném licencování',
+'exif-attributionurl' => 'Pokud užíváte toto dílo, uveÄte odkaz',
+'exif-preferredattributionname' => 'Pokud užíváte toto dílo, uveÄte jako autora',
+'exif-pngfilecomment' => 'Poznámky ze souboru PNG',
+'exif-disclaimer' => 'VylouÄení odpovÄ›dnosti',
+'exif-contentwarning' => 'Upozornění k obsahu',
+'exif-giffilecomment' => 'Poznámky ze souboru GIF',
+'exif-intellectualgenre' => 'Typ položky',
+'exif-subjectnewscode' => 'Kód tématu',
+'exif-scenecode' => 'IPTC kód záběru',
+'exif-event' => 'Zobrazená událost',
+'exif-organisationinimage' => 'Zobrazená organizace',
+'exif-personinimage' => 'Zobrazená osoba',
+'exif-originalimageheight' => 'Výška obrázku před oříznutím',
+'exif-originalimagewidth' => 'Šířka obrázku před oříznutím',
# EXIF attributes
'exif-compression-1' => 'Nekomprimovaný',
+'exif-compression-2' => '1-rozměrné modifikované Huffmanovo kódování délky běhu CCITT Group 3',
+'exif-compression-3' => 'Kódování faxů CCITT Group 3',
+'exif-compression-4' => 'Kódování faxů CCITT Group 4',
+
+'exif-copyrighted-true' => 'Chráněno autorským právem',
+'exif-copyrighted-false' => 'Volné dílo',
'exif-unknowndate' => 'neznámé datum',
@@ -3126,6 +3259,8 @@ Obsahuje pouze seznam s odrážkami (řádka zaÄíná s *). První odkaz na Å™Ã
'exif-planarconfiguration-1' => 'chunky',
'exif-planarconfiguration-2' => 'planar',
+'exif-colorspace-65535' => 'Nekalibrováno',
+
'exif-componentsconfiguration-0' => 'neexistuje',
'exif-exposureprogram-0' => 'Neuvedeno',
@@ -3239,6 +3374,10 @@ Obsahuje pouze seznam s odrážkami (řádka zaÄíná s *). První odkaz na Å™Ã
'exif-gpslongitude-e' => 'Východní délka',
'exif-gpslongitude-w' => 'Západní délka',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metr|metry|metrů}} nad mořem',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metr|metry|metrů}} pod úrovní moře',
+
'exif-gpsstatus-a' => 'Probíhá měření',
'exif-gpsstatus-v' => 'Měření mimo provoz',
@@ -3250,21 +3389,73 @@ Obsahuje pouze seznam s odrážkami (řádka zaÄíná s *). První odkaz na Å™Ã
'exif-gpsspeed-m' => 'mph',
'exif-gpsspeed-n' => 'kt',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometry',
+'exif-gpsdestdistance-m' => 'Míle',
+'exif-gpsdestdistance-n' => 'Námořní míle',
+
+'exif-gpsdop-excellent' => 'VýteÄná ($1)',
+'exif-gpsdop-good' => 'Dobrá ($1)',
+'exif-gpsdop-moderate' => 'Střední ($1)',
+'exif-gpsdop-fair' => 'Ucházející ($1)',
+'exif-gpsdop-poor' => 'Špatná ($1)',
+
+'exif-objectcycle-a' => 'Pouze dopoledne',
+'exif-objectcycle-p' => 'Pouze odpoledne',
+'exif-objectcycle-b' => 'Dopoledne i odpoledne',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Pravý kurs',
'exif-gpsdirection-m' => 'Magnetický kurs',
+'exif-ycbcrpositioning-1' => 'Uprostřed',
+'exif-ycbcrpositioning-2' => 'U sebe',
+
+'exif-dc-contributor' => 'Přispěvatelé',
+'exif-dc-coverage' => 'Místní nebo Äasový rozsah média',
+'exif-dc-date' => 'Datum (data)',
+'exif-dc-publisher' => 'Vydavatel',
+'exif-dc-relation' => 'Související média',
+'exif-dc-rights' => 'Práva',
+'exif-dc-source' => 'Zdrojové médium',
+'exif-dc-type' => 'Typ média',
+
+'exif-rating-rejected' => 'Vyřazeno',
+
+'exif-isospeedratings-overflow' => 'Větší než 65535',
+
+'exif-iimcategory-ace' => 'Kultura, umění a zábava',
+'exif-iimcategory-clj' => 'ZloÄin a právo',
+'exif-iimcategory-dis' => 'Nehody a neštěstí',
+'exif-iimcategory-fin' => 'Ekonomika a obchod',
+'exif-iimcategory-edu' => 'Vzdělávání',
+'exif-iimcategory-evn' => 'Životní prostředí',
+'exif-iimcategory-hth' => 'Zdraví',
+'exif-iimcategory-hum' => 'Lidské záliby',
+'exif-iimcategory-lab' => 'Práce',
+'exif-iimcategory-lif' => 'Volný Äas a životní styl',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Víra a náboženství',
+'exif-iimcategory-sci' => 'Věda a technika',
+'exif-iimcategory-soi' => 'Sociální problematika',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Války, konflikty a nepokoje',
+'exif-iimcategory-wea' => 'PoÄasí',
+
+'exif-urgency-normal' => 'Normální ($1)',
+'exif-urgency-low' => 'Nízká ($1)',
+'exif-urgency-high' => 'Vysoká ($1)',
+'exif-urgency-other' => 'Uživatelsky definovaná ($1)',
+
# External editor support
'edit-externally' => 'Editovat tento soubor v externím programu',
-'edit-externally-help' => '(Více informací najdete v [http://www.mediawiki.org/wiki/Manual:External_editors nápovědě pro nastavení].)',
+'edit-externally-help' => '(Více informací najdete v [//www.mediawiki.org/wiki/Manual:External_editors nápovědě pro nastavení].)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'všechny',
-'imagelistall' => 'všechny',
-'watchlistall2' => 'všechny',
-'namespacesall' => 'všechny',
-'monthsall' => 'všechny',
-'limitall' => 'vše',
+'watchlistall2' => 'všechny',
+'namespacesall' => 'všechny',
+'monthsall' => 'všechny',
+'limitall' => 'vše',
# E-mail address confirmation
'confirmemail' => 'Potvrzení e-mailové adresy',
@@ -3342,17 +3533,24 @@ $1',
'trackbackdeleteok' => 'Zpětný odkaz byl úspěšně smazán.',
# Delete conflict
-'deletedwhileediting' => "'''Upozornění''': V průběhu vaší editace byla tato stránka smazána!",
-'confirmrecreate' => 'Uživatel [[User:$1|$1]] ([[User talk:$1|diskuse]]) tuto stránku smazal poté, co jste zaÄali editovat, s odůvodnÄ›ním:
+'deletedwhileediting' => "'''Upozornění''': V průběhu vaší editace byla tato stránka smazána!",
+'confirmrecreate' => 'Uživatel [[User:$1|$1]] ([[User talk:$1|diskuse]]) tuto stránku smazal poté, co jste zaÄali editovat, s odůvodnÄ›ním:
: „$2“
Opravdu si přejete znovu tuto stránku založit?',
-'recreate' => 'Znovu založit',
+'confirmrecreate-noreason' => '{{gender:$1|Uživatel|Uživatelka|Uživatel}} [[User:$1|$1]] ([[User talk:$1|diskuse]]) {{gender:$1|smazal|smazala|smazal}} tuto stránku poté, co jste {{gender:|zaÄal|zaÄala|zaÄali}} s editací. PotvrÄte, zda chcete stránku skuteÄnÄ› znovu založit.',
+'recreate' => 'Znovu založit',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Aktualizovat cachovanou verzi této stránky?',
'confirm-purge-bottom' => 'Aktualizace stránky vymaže cache a vynutí zobrazení nejaktuálnější verze.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Přidat tuto stránku mezi sledované?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Vyjmout tuto stránku ze sledovaných?',
+
# Separators for various lists, etc.
'percent' => '$1&nbsp;%',
@@ -3400,14 +3598,14 @@ Opravdu si přejete znovu tuto stránku založit?',
'watchlistedit-normal-legend' => 'Odstranění položek ze seznamu sledovaných stránek',
'watchlistedit-normal-explain' => 'Položky vašeho seznamu sledovaných stránek jsou zobrazeny níže.
Stránku můžete ze seznamu odstranit tak, že zaÅ¡krtnete její políÄko a kliknete na tlaÄítko „{{int:Watchlistedit-normal-submit}}“.
-Také můžete [[Special:Watchlist/raw|editovat seznam v textové podobě]].',
+Také můžete [[Special:EditWatchlist/raw|editovat seznam v textové podobě]].',
'watchlistedit-normal-submit' => 'Odstranit položky',
'watchlistedit-normal-done' => '{{PLURAL:$1|Byla odstraněna 1 položka|Byly odstraněny $1 položky|Bylo odstraněno $1 položek}} z Vašeho seznamu sledovaných stránek:',
'watchlistedit-raw-title' => 'Textový režim editace seznamu',
'watchlistedit-raw-legend' => 'Editace textového souboru sledovaných stránek',
'watchlistedit-raw-explain' => 'Položky na vaÅ¡em seznamu sledovaných stránek jsou zobrazeny níže. Můžete je pÅ™idávat, odstraňovat Äi mÄ›nit v zobrazeném seznamu – jedna řádka je jedna položka.
Pro uložení zmÄ›n stisknÄ›te tlaÄítko „{{int:Watchlistedit-raw-submit}}“.
-Seznam editovaných stránek můžete také [[Special:Watchlist/edit|editovat ve standardním editoru]].',
+Seznam editovaných stránek můžete také [[Special:EditWatchlist|editovat ve standardním editoru]].',
'watchlistedit-raw-titles' => 'Položky:',
'watchlistedit-raw-submit' => 'Aktualizovat seznam',
'watchlistedit-raw-done' => 'Seznam vašich sledovaných stránek byl aktualizován.',
@@ -3479,33 +3677,33 @@ Seznam editovaných stránek můžete také [[Special:Watchlist/edit|editovat ve
'duplicate-defaultsort' => 'UpozornÄ›ní: Implicitní klÃ­Ä Å™azení (DEFAULTSORTKEY) „$2“ pÅ™episuje dříve nastavenou hodnotu „$1“.',
# Special:Version
-'version' => 'Verze',
-'version-extensions' => 'Nainstalovaná rozšíření',
-'version-specialpages' => 'Speciální stránky',
-'version-parserhooks' => 'Přípojné body parseru',
-'version-variables' => 'Proměnné',
-'version-skins' => 'Vzhledy',
-'version-other' => 'Jiné',
-'version-mediahandlers' => 'Obsluha médií',
-'version-hooks' => 'Přípojné body',
-'version-extension-functions' => 'Rozšiřující funkce',
-'version-parser-extensiontags' => 'PÅ™idané syntaktické znaÄky',
-'version-parser-function-hooks' => 'Funkce parseru',
-'version-skin-extension-functions' => 'Rozšiřující funkce vzhledu',
-'version-hook-name' => 'Název přípojného bodu',
-'version-hook-subscribedby' => 'Volán z',
-'version-version' => '(Verze $1)',
-'version-license' => 'Licence',
-'version-poweredby-credits' => "Tato wiki běží na '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
-'version-poweredby-others' => 'další',
-'version-license-info' => 'MediaWiki je svobodný software; můžete jej šířit nebo modifikovat podle podmínek GNU General Public License, vydávané Free Software Foundation; buÄ verze 2 této licence anebo (podle vaÅ¡eho uvážení) kterékoli pozdÄ›jší verze.
+'version' => 'Verze',
+'version-extensions' => 'Nainstalovaná rozšíření',
+'version-specialpages' => 'Speciální stránky',
+'version-parserhooks' => 'Přípojné body parseru',
+'version-variables' => 'Proměnné',
+'version-antispam' => 'Ochrana proti spamu',
+'version-skins' => 'Vzhledy',
+'version-other' => 'Jiné',
+'version-mediahandlers' => 'Obsluha médií',
+'version-hooks' => 'Přípojné body',
+'version-extension-functions' => 'Rozšiřující funkce',
+'version-parser-extensiontags' => 'PÅ™idané syntaktické znaÄky',
+'version-parser-function-hooks' => 'Funkce parseru',
+'version-hook-name' => 'Název přípojného bodu',
+'version-hook-subscribedby' => 'Volán z',
+'version-version' => '(Verze $1)',
+'version-license' => 'Licence',
+'version-poweredby-credits' => "Tato wiki běží na '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
+'version-poweredby-others' => 'další',
+'version-license-info' => 'MediaWiki je svobodný software; můžete jej šířit nebo modifikovat podle podmínek GNU General Public License, vydávané Free Software Foundation; buÄ verze 2 této licence anebo (podle vaÅ¡eho uvážení) kterékoli pozdÄ›jší verze.
MediaWiki je distribuována v nadÄ›ji, že bude užiteÄná, avÅ¡ak BEZ JAKÉKOLI ZÃRUKY; neposkytují se ani odvozené záruky PRODEJNOSTI anebo VHODNOSTI PRO URÄŒITà ÚČEL. Podrobnosti se doÄtete v textu GNU General Public License.
-[{{SERVER}}{{SCRIPTPATH}}/COPYING Kopii GNU General Public License] jste mÄ›li obdržet spolu s tímto programem, pokud ne, napiÅ¡te na Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA nebo [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html si ji pÅ™eÄtÄ›te online].',
-'version-software' => 'Nainstalovaný software',
-'version-software-product' => 'Název',
-'version-software-version' => 'Verze',
+[{{SERVER}}{{SCRIPTPATH}}/COPYING Kopii GNU General Public License] jste mÄ›li obdržet spolu s tímto programem, pokud ne, napiÅ¡te na Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA nebo [//www.gnu.org/licenses/old-licenses/gpl-2.0.html si ji pÅ™eÄtÄ›te online].',
+'version-software' => 'Nainstalovaný software',
+'version-software-product' => 'Název',
+'version-software-version' => 'Verze',
# Special:FilePath
'filepath' => 'Cesta k souboru',
@@ -3515,22 +3713,22 @@ MediaWiki je distribuována v nadÄ›ji, že bude užiteÄná, avÅ¡ak BEZ JAKÉKOL
Obrázky se zobrazí v plném rozlišení, jiné typy souborů se otevřenou v přiřazených programech.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Hledání duplicitních souborů',
-'fileduplicatesearch-summary' => 'Hledání duplicitních souborů vychází z hodnoty hashovací funkce.
-
-Zadejte jméno souboru bez oznaÄení "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Hledání duplikátů',
-'fileduplicatesearch-filename' => 'Jméno souboru:',
-'fileduplicatesearch-submit' => 'Hledat',
-'fileduplicatesearch-info' => '(rozměr: $1 × $2 pixelů, velikost souboru: $3, MIME typ: $4)',
-'fileduplicatesearch-result-1' => 'Soubor „$1“ nemá žádný identický duplikát.',
-'fileduplicatesearch-result-n' => 'Soubor „$1“ má {{PLURAL:$2|jeden identický duplikát|$2 identické duplikáty|$2 identických duplikátů}}.',
+'fileduplicatesearch' => 'Hledání duplicitních souborů',
+'fileduplicatesearch-summary' => 'Hledání duplicitních souborů podle jejich hašů.',
+'fileduplicatesearch-legend' => 'Hledání duplikátů',
+'fileduplicatesearch-filename' => 'Jméno souboru:',
+'fileduplicatesearch-submit' => 'Hledat',
+'fileduplicatesearch-info' => '(rozměr: $1 × $2 pixelů, velikost souboru: $3, MIME typ: $4)',
+'fileduplicatesearch-result-1' => 'Soubor „$1“ nemá žádný identický duplikát.',
+'fileduplicatesearch-result-n' => 'Soubor „$1“ má {{PLURAL:$2|jeden identický duplikát|$2 identické duplikáty|$2 identických duplikátů}}.',
+'fileduplicatesearch-noresults' => 'Žádný soubor s názvem „$1“ nebyl nalezen.',
# Special:SpecialPages
'specialpages' => 'Speciální stránky',
'specialpages-note' => '----
* Normální speciální stránky
-* <strong class="mw-specialpagerestricted">Speciální stránky s&nbsp;vyhrazeným přístupem</strong>',
+* <span class="mw-specialpagerestricted">Speciální stránky s&nbsp;vyhrazeným přístupem</span>
+* <span class="mw-specialpagecached">Speciální stránky z&nbsp;cache (mohou být zastaralé)</span>',
'specialpages-group-maintenance' => 'Údržba',
'specialpages-group-other' => 'Ostatní',
'specialpages-group-login' => 'Přihlašování / registrace',
diff --git a/languages/messages/MessagesCsb.php b/languages/messages/MessagesCsb.php
index fc006ada..05a69c8b 100644
--- a/languages/messages/MessagesCsb.php
+++ b/languages/messages/MessagesCsb.php
@@ -163,8 +163,6 @@ $messages = array(
'category-article-count' => '{{PLURAL:$2|Na kategòrëjô zamëkôw w se blós jedną starnã.|Niżi mómë $1 westrzód $2 starów w ti kategòrëji.}}',
'listingcontinuesabbrev' => 'kònt.',
-'mainpagetext' => "'''MediaWiki òsta zainstalowónô.'''",
-
'about' => 'Ã’ serwise',
'article' => 'Artikel',
'newwindow' => '(òtmëkô sã w nowim òczenkù)',
@@ -215,7 +213,6 @@ $messages = array(
'history' => 'Historëjô starnë',
'history_short' => 'Historëjô',
'updatedmarker' => 'zaktualnioné òd mòji slédny gòscënë',
-'info_short' => 'Wëdowiédza',
'printableversion' => 'Wersëjô do drëkù',
'permalink' => 'Prosti lënk',
'print' => 'Drëkùjë',
@@ -356,7 +353,7 @@ Mòże to zgÅ‚oszëc [[Special:ListUsers/sysop|sprôwnikòwi]], pòdajÄ…c adresÃ
'viewsource' => 'Zdrojowi tekst',
'viewsourcefor' => 'dlô $1',
'editinginterface' => "'''ÒSTRZÉGA:''' Editëjesz starnã, jakô zamëkô w se tekst interfejsu softwôrë. Wszëtczé zmianë tu zrobioné bãdze widzec na interfejse jinszëch brëkòwników.
-Przemëszlë dolmaczënié na [http://translatewiki.net/wiki/Main_Page?setlang=csb translatewiki.net], ekstra ùdbie lokalizacëji softwôrë MediaWiki.",
+Przemëszlë dolmaczënié na [//translatewiki.net/wiki/Main_Page?setlang=csb translatewiki.net], ekstra ùdbie lokalizacëji softwôrë MediaWiki.",
# Login and logout pages
'logouttext' => "'''Jes wëlogòwóny.'''
@@ -416,7 +413,7 @@ Ni mòżesz miec ju wicy.',
'createaccount-title' => 'Kònto ùsôdzoné dlô {{SITENAME}}',
'loginlanguagelabel' => 'Jãzëk: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Zmieni parolã',
'oldpassword' => 'Stôrô parola:',
'newpassword' => 'Nowô parola',
@@ -435,8 +432,6 @@ Ni mòżesz miec ju wicy.',
'extlink_tip' => 'Bùtnowi lënk (pamiãtôj ò http:// prefiks)',
'headline_sample' => 'Tekst nagłówka',
'headline_tip' => 'Nagłówk 2 lédżi',
-'math_sample' => 'Wstôwi tuwò fòrmùłã',
-'math_tip' => 'Matematicznô fòrmùła (LaTeX)',
'nowiki_sample' => 'Wstôw tuwò niesfòrmatowóny tekst',
'nowiki_tip' => 'Ignorëjë wiki-fòrmatowanié',
'image_sample' => 'Przëmiôr.jpg',
@@ -621,7 +616,6 @@ Spróbùjë szëkbë z przëdôwkã ''all:'' dlô całowny zamkłoscë starnów
'changepassword' => 'Zmiana parolë',
'prefs-skin' => 'Wëzdrzatk',
'skin-preview' => 'Pòdzérk',
-'prefs-math' => 'Matematika',
'datedefault' => 'Felëje preferencëji',
'prefs-datetime' => 'Datum ë czas',
'prefs-personal' => 'Pòdôwczi brëkòwnika',
@@ -637,8 +631,6 @@ Spróbùjë szëkbë z przëdôwkã ''all:'' dlô całowny zamkłoscë starnów
'columns' => 'Kòlumnów:',
'searchresultshead' => 'Szëkba',
'resultsperpage' => 'Rezultatów na starnã:',
-'contextlines' => 'Régów na rezultat:',
-'contextchars' => 'Kòntekstów na régã:',
'stub-threshold' => 'Greńca dlô fòrmatowaniô <a href="#" class="stub">lënków stubów</a>:',
'recentchangesdays' => 'Kùli dni pòkazëwac w slédnëch edicëjach:',
'recentchangescount' => 'Domëslnô wielëna wëskrzëniónych edicëjów',
@@ -938,12 +930,10 @@ Mòżesz zawãżëc wëszłosc przez wëbranié ôrtu registru, miona brëkòwni
'watchlist' => 'Lësta ùzérónëch artiklów',
'mywatchlist' => 'Lësta ùzérónëch artiklów',
'watchnologin' => 'Felënk logòwóniô',
-'addedwatch' => 'Dodónô do lëstë ùzérónëch',
'addedwatchtext' => "Starna \"[[:\$1]]\" òsta dodónô do twòji [[Special:Watchlist|lëstë ùzérónëch artiklów]].
Na ti lësce są registre przińdnëch zjinak ti starne ë na ji starnie dyskùsëji, a samò miono starnë mdze '''wëtłëszczone''' na [[Special:RecentChanges|lësce slédnich edicëji]], bë të mògł to òbaczëc.
Czej chcesz remôc starnã z lëste ùzéronëch artiklów, klikni ''Òprzestôj ùzérac''.",
-'removedwatch' => 'Rëmóné z lëstë ùzérónëch',
'removedwatchtext' => 'Starna "[[:$1]]" òsta rëmniãtô z Twòji [[Special:Watchlist|lëstë ùzérónych]].',
'watch' => 'Ùzérôj',
'watchthispage' => 'Ùzérôj ną starnã',
@@ -974,7 +964,7 @@ Czej chcesz remôc starnã z lëste ùzéronëch artiklów, klikni ''Òprzestôj
'confirmdeletetext' => 'Chcesz rëmnąc starnã do grëpë z ji całowną historëją.
Ùgwësni sã, czë na gwës chcesz to zrobic, rozmiejąc kònsekwencëje ti òperacëji ë że robisz to zgòdno z [[{{MediaWiki:Policy-url}}|reglama]].',
'actioncomplete' => 'Òperacëjô wëkònónô',
-'deletedtext' => '^<nowiki>$1</nowiki>" òstôł rëmniãti.
+'deletedtext' => '^$1" òstôł rëmniãti.
Òbôczë na starnie $2 register slédnych rëmniãców.',
'deletedarticle' => 'rëmniãté przez "[[$1]]"',
'dellogpage' => 'Rëmóné',
@@ -1003,7 +993,7 @@ Slédnym ùsódzcą starnë bëł [[User:$3|$3]] ([[User talk:$3|Diskùsëjô]]{
'protectexpiry' => 'Wëgasô pò:',
'protect_expiry_invalid' => 'Lëchi czas wëgasniãcô.',
'protect_expiry_old' => 'Czas wëgasniãcô leżi w przińdnocë.',
-'protect-text' => "Mòżesz tuwò sprôwdzëc ë zjinaczëc légã zazychrowaniô starnë '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Mòżesz tuwò sprôwdzëc ë zjinaczëc légã zazychrowaniô starnë '''$1'''.",
'protect-locked-access' => "Ni môsz dosc prawa do zjinaczi lédżi zazychrowaniô starnë. Aktualny nastôw dlô starnë '''$1''':",
'protect-cascadeon' => 'Na starna je zazychrowónô przed edicëją, dlôte że je brëkòwónô przez {{PLURAL:$1|nôslédną starnã, chtërnô òsta zazychrowónô|nôslédné starnë, chtërné òstałe zazychrowóné}} z aktiwną kaskadową òpatcëją zazychrowëwaniô.
Mòżesz zmienic légã zazychrowaniô, nie bãdze to równak miało cëskù na kaskadowé zazychrowanié.',
@@ -1078,7 +1068,6 @@ Mòżesz zmienic légã zazychrowaniô, nie bãdze to równak miało cëskù na
'blockipsuccesstext' => 'Brëkòwnik [[Special:Contributions/$1|$1]] òstał zascëgóny.<br />
Biéj do [[Special:IPBlockList|lëstë zascëgónëch adresów IP]] abë òbaczëc zascëdżi.',
'ipblocklist' => 'Lësta zablokòwónëch adresów IP ë mionów brëkòwników',
-'blocklistline' => '$1, $2 zascëgôł $3 ($4)',
'blocklink' => 'blokùjë',
'unblocklink' => 'òdblokùjë',
'change-blocklink' => 'zmieni blokòwanié',
@@ -1140,7 +1129,7 @@ W taczich przëtrôfkach zamkłosc diskùsëji mòże przeniesc blós rãczno.',
'allmessagesdefault' => 'Domëslny tekst',
'allmessagescurrent' => 'Aktualny tekst',
'allmessagestext' => 'To je zestôwk systemòwëch ògłosów przistãpnëch w rumie mionów MediaWiki.
-Proszã zazdrzë na [http://www.mediawiki.org/wiki/Localisation Lokalizacëjô MediaWiki] ë [http://translatewiki.net translatewiki.net] jeżlë chcesz dolmaczëc softwôrã MediaWiki.',
+Proszã zazdrzë na [//www.mediawiki.org/wiki/Localisation Lokalizacëjô MediaWiki] ë [//translatewiki.net translatewiki.net] jeżlë chcesz dolmaczëc softwôrã MediaWiki.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nie mòże bëc brëkòwónô, temù że '''\$wgUseDatabaseMessages''' je wëłączony.",
# Thumbnails
@@ -1220,29 +1209,17 @@ Zezwôlô na dodanié przëczënë zjinaczi w òpisënkù.',
# Spam protection
'spamprotectiontitle' => 'Anti-spamòwi filter',
-# Math options
-'mw_math_png' => 'Wiedno wëskrzëniwôj jakno PNG',
-'mw_math_simple' => 'Jeżlë prosti wëskrzëniwôj jakno HTML, w jinëm przëtrôfkù jakno PNG',
-'mw_math_html' => 'HTML czej mòżlewé a w jinëm przëtrôfkù PNG',
-'mw_math_source' => 'Òstawi jakno TeX (dlô tekstowich przezérników)',
-'mw_math_modern' => 'Zalécóné dlô nowoczasnëch przezérników',
-'mw_math_mathml' => 'Wëskrzëniwôj jakno MathML jeżlë mòżlëwé (eksperimentalné)',
-
-# Math errors
-'math_failure' => 'Parser nie rozmiôł rozpòznac',
-
# Browsing diffs
'previousdiff' => '↠Pòprzédnô edicëjô',
'nextdiff' => 'Nôslédnô edicëjô →',
# Media information
-'imagemaxsize' => 'Ògrańczë na starnie òpisënkù òbrôzków jich miarã do:',
-'thumbsize' => 'Miara miniaturków:',
-'file-info-size' => '$1 × $2 pikslów, miara lopka: $3, ôrt MIME: $4',
-'file-nohires' => '<small>Felëje wikszô miara.</small>',
-'svg-long-desc' => 'Lopk SVG, nominalno $1 × $2 pikslów, miara lopka: $3',
-'show-big-image' => 'Fùl miara',
-'show-big-image-thumb' => '<small>Miara pòdzérkù: $1 × $2 pikslów</small>',
+'imagemaxsize' => 'Ògrańczë na starnie òpisënkù òbrôzków jich miarã do:',
+'thumbsize' => 'Miara miniaturków:',
+'file-info-size' => '$1 × $2 pikslów, miara lopka: $3, ôrt MIME: $4',
+'file-nohires' => '<small>Felëje wikszô miara.</small>',
+'svg-long-desc' => 'Lopk SVG, nominalno $1 × $2 pikslów, miara lopka: $3',
+'show-big-image' => 'Fùl miara',
# Special:NewFiles
'newimages' => 'Galerëjô nowich lopków',
@@ -1270,19 +1247,29 @@ Jinszé pòla bãdą domëslno zataconé.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
+# EXIF tags
+'exif-source' => 'Zdrój',
+'exif-languagecode' => 'Jãzëk',
+
+'exif-iimcategory-spo' => 'Szpòrt',
# External editor support
'edit-externally' => 'Editëjë nen lopk brëkùjąc bùtnowi aplikacëji',
-'edit-externally-help' => '(Zdrzë na [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] dlô dobëcô wicy wëdowiédzë).',
+'edit-externally-help' => '(Zdrzë na [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] dlô dobëcô wicy wëdowiédzë).',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'wszëtczé',
-'imagelistall' => 'wszëtczé',
-'watchlistall2' => 'wszëtczé',
-'namespacesall' => 'wszëtczé',
-'monthsall' => 'wszëtczé',
-'limitall' => 'wszëtczé',
+'watchlistall2' => 'wszëtczé',
+'namespacesall' => 'wszëtczé',
+'monthsall' => 'wszëtczé',
+'limitall' => 'wszëtczé',
# E-mail address confirmation
'confirmemail_loggedin' => 'Twòjô adresa e-mail òsta pòcwierdzona.',
diff --git a/languages/messages/MessagesCu.php b/languages/messages/MessagesCu.php
index f8fa0513..7ca3fc8f 100644
--- a/languages/messages/MessagesCu.php
+++ b/languages/messages/MessagesCu.php
@@ -22,22 +22,22 @@ $separatorTransformTable = array(
$linkPrefixExtension = true;
$namespaceNames = array(
- NS_MEDIA => 'СрѣÌдьÑтва',
- NS_SPECIAL => 'ÐароÌчьна',
- NS_TALK => 'БєÑÑ£Ìда',
- NS_USER => 'ПоÌльꙃєватєл҄ь',
- NS_USER_TALK => 'ПоÌльꙃєватєлꙗ_бєÑÑ£Ìда',
- NS_PROJECT_TALK => '{{GRAMMAR:genitive|$1}}_бєÑÑ£Ìда',
- NS_FILE => 'ДѣÌло',
- NS_FILE_TALK => 'ДѣÌла_бєÑÑ£Ìда',
+ NS_MEDIA => 'СрѣдьÑтва',
+ NS_SPECIAL => 'Ðарочьна',
+ NS_TALK => 'БєÑѣда',
+ NS_USER => 'Польꙃєватєл҄ь',
+ NS_USER_TALK => 'Польꙃєватєлꙗ_бєÑѣда',
+ NS_PROJECT_TALK => '{{GRAMMAR:genitive|$1}}_бєÑѣда',
+ NS_FILE => 'Дѣло',
+ NS_FILE_TALK => 'Дѣла_бєÑѣда',
NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_бєÑÑ£Ìда',
- NS_TEMPLATE => 'Обраê™ÑŒÌць',
- NS_TEMPLATE_TALK => 'Обраê™ÑŒÑ†Ð°Ì_бєÑÑ£Ìда',
- NS_HELP => 'ПоÌмощь',
- NS_HELP_TALK => 'ПоÌмощи бєÑÑ£Ìда',
- NS_CATEGORY => 'КатигоріÌê™—',
- NS_CATEGORY_TALK => 'КатигоріÌÑ©_бєÑÑ£Ìда',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_бєÑѣда',
+ NS_TEMPLATE => 'Обраê™ÑŒÑ†ÑŒ',
+ NS_TEMPLATE_TALK => 'Обраê™ÑŒÑ†Ð°_бєÑѣда',
+ NS_HELP => 'Помощь',
+ NS_HELP_TALK => 'Помощи_бєÑѣда',
+ NS_CATEGORY => 'Катигорїꙗ',
+ NS_CATEGORY_TALK => 'Катигорїѩ_бєÑѣда',
);
$namespaceAliases = array(
@@ -186,7 +186,6 @@ $messages = array(
'searcharticle' => 'прѣиди',
'history' => 'Ñтраницѧ Ñ—Ñторїꙗ',
'history_short' => 'Ñ—Ñторїꙗ',
-'info_short' => 'плирофорїꙗ',
'printableversion' => 'пєчатьнъ обраê™ÑŠ',
'permalink' => 'въиньна Ñъвѧê™ÑŒ',
'print' => 'пєчатаниѥ',
@@ -288,18 +287,20 @@ $messages = array(
'accountcreated' => 'мѣÑто Ñътворєно Ñ¥ÑÑ‚ÑŠ',
'loginlanguagelabel' => 'Ñ©ê™ê™‘къ : $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'таина ÑловєÑÑ” иê™Ð¼Ñ£Ð½Ñ¥Ð½Ð¸Ñ¥',
'oldpassword' => 'Ñтаро таино Ñлово :',
'newpassword' => 'ново таино Ñлово :',
'resetpass-submit-loggedin' => 'таина ÑловєÑÑ” иê™Ð¼Ñ£Ð½Ñ¥Ð½Ð¸Ñ¥',
+# Special:PasswordReset
+'passwordreset-username' => 'польꙃєватєлꙗ имѧ :',
+
# Edit page toolbar
'link_sample' => 'Ñъвѧê™Ð¸ имѧ',
'link_tip' => 'вънѫтрьнꙗ Ñъвѧê™ÑŒ',
'extlink_sample' => 'http://www.example.com Ñъвѧê™Ð¸ имѧ',
'extlink_tip' => 'вънѣщьнꙗ Ñъвѧê™ÑŒ (помьни о http://)',
-'math_tip' => 'маѳиматїчьна формоула (LaTeX)',
'sig_tip' => 'твои аѵтографъ и нꙑнѣшьна врѣмѧ и дьнь',
# Edit pages
@@ -589,7 +590,6 @@ $messages = array(
# Watchlist
'watchlist' => 'моꙗ блюдєниꙗ',
'mywatchlist' => 'моꙗ блюдєниꙗ',
-'addedwatch' => 'Ñтраница нꙑнѣ подъ твоимь блюдєниѥмь Ñ¥ÑÑ‚ÑŠ',
'addedwatchtext' => "Ñтраница â– [[:$1]] ■нꙑнѣ подъ твоимь [[Special:Watchlist|блюдєниѥмь]] Ñ¥ÑÑ‚ÑŠ â™
вÑê™— ѥѩ и ѥѩжє бєÑѣдꙑ мѣнꙑ Ñтраницѧ â– [[Special:Watchlist|моꙗ блюдєниꙗ]] ■покаê™Ð°Ð½ê™‘ ÑÑ«Ñ‚ÑŠ и [[Special:RecentChanges|поÑлѣдьнъ мѣнъ]] каталоꙃѣ '''чрьнꙑимъ''' Ñѧ авлꙗѭтъ",
'removedwatchtext' => 'Ñтраница â– [[:$1]] ■нꙑнѣ твоѥго [[Special:Watchlist|блюдєниꙗ]] иê™Ð½Ñ”Ñєна Ñ¥ÑÑ‚ÑŠ',
@@ -609,7 +609,7 @@ $messages = array(
'excontentauthor' => "вънѫтри бѣ : '$1' (и поÑлѣдьн҄ии дѣтєл҄ь бѣ '[[Special:Contributions/$2|$2]]')",
'delete-legend' => 'поничьжєниѥ',
'actioncomplete' => 'дѣиÑтво Ñътворєно Ñ¥ÑÑ‚ÑŠ',
-'deletedtext' => 'Ñтраница â– <nowiki>$1</nowiki> ■поничьжєна Ñ¥ÑÑ‚ÑŠ â™
+'deletedtext' => 'Ñтраница â– $1 ■поничьжєна Ñ¥ÑÑ‚ÑŠ â™
виждь â– $2 ■поÑлѣдьнъ поничьжєниѩ дѣлꙗ',
'deletedarticle' => 'â– [[$1]] ■поничьжєнъ Ñ¥ÑÑ‚ÑŠ',
'dellogpage' => 'поничьжєниꙗ Ñ—Ñторїꙗ',
@@ -664,6 +664,7 @@ $messages = array(
'ipadressorusername' => 'IP чиÑло или польꙃєватєлꙗ имѧ :',
'ipbreason' => 'какъ ÑъмꙑÑлъ :',
'ipblocklist' => 'ê™Ð°Ð³Ñ€Ð°Ð¶Ð´Ñ”нꙑ польꙃєватєлє',
+'blocklist-reason' => 'какъ ÑъмꙑÑлъ',
'ipblocklist-submit' => 'иÑканиѥ',
'blocklink' => 'ê™Ð°Ð³Ñ€Ð°Ð´Ð¸',
'contribslink' => 'добродѣꙗниꙗ',
diff --git a/languages/messages/MessagesCv.php b/languages/messages/MessagesCv.php
index 861f9708..d60837ce 100644
--- a/languages/messages/MessagesCv.php
+++ b/languages/messages/MessagesCv.php
@@ -152,14 +152,7 @@ $messages = array(
'category-file-count-limited' => 'Ку категоринче $1 файл.',
'listingcontinuesabbrev' => '(малалли)',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff«"]+)$/sD',
-'mainpagetext' => "'''«MediaWiki» вики-движока лартаÑÑи ăнăçлă вĕçленчĕ.'''",
-'mainpagedocfooter' => 'Ку википе ĕçлеме пулăшакан информацине [http://meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 уÑăç руководÑтвинче] тупма пултаратăр.
-
-== Пулăшма пултарĕç ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings ĔнерлевÑен ÑпиÑокĕ];
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki тăрăх чаÑ-чаÑах ыйтакан ыйтуÑемпе хуравÑем];
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki çĕнĕ верÑи тухнине пĕлтерекен раÑÑылка].',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff«"]+)$/sD',
'about' => 'Ăнлантаркăч',
'article' => 'СтатьÑ',
@@ -204,7 +197,6 @@ $messages = array(
'history' => 'ИÑтори',
'history_short' => 'ИÑтори',
'updatedmarker' => 'Ñпĕ юлашки хут кĕнĕ хыççăн çĕнелнĕ',
-'info_short' => 'Информаци',
'printableversion' => 'Пичетлемелли верÑи',
'permalink' => 'Яланхи вырăн',
'print' => 'Пичетле',
@@ -375,7 +367,6 @@ $1',
'protectedinterface' => "Ку Ñтраница çинче MediaWiki'н ÑиÑтемлă çырăвĕ вырнаçнă, ăна проект админиÑтраторĕÑем çеç улăштарма пултараççĕ.",
'sqlhidden' => '(SQL ыйтăва пытарнă)',
'namespaceprotected' => 'Сирĕн «$1» ÑÑ‚ уçлăхĕнчи ÑтатьÑÑене тӳрлетмелли май çук..',
-'customcssjsprotected' => 'Ку Ñтраницăра тепĕр хутшăнаканăн Ñтарлă ĕнерлевĕÑем вырнаçнă, çавна май ÑÑир ăна тӳрлетеймеÑÑ‚Ä•Ñ€.',
'ns-specialprotected' => '«{{ns:special}}» ÑÑ‚ уçлăхĕнчи ÑтраницăÑене ÑÑир тӳрлетеймеÑÑ‚Ä•Ñ€.',
'titleprotected' => "Ку Ñтлă Ñтраницăна хатĕрлеÑÑине [[Хутшăнакан:$1|$1]] хутшăнакан чарÑа хунă.
Çак Ñăлтава кăтартнă: ''$2''.",
@@ -439,7 +430,7 @@ $1',
'createaccount-title' => '{{SITENAME}}: хутшăнакана хушаÑÑи',
'loginlanguagelabel' => 'Чĕлхе: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Хутшăнаканăн вăрттăн Ñăмахне çĕнетеÑÑи',
'resetpass_header' => 'Пароле пăрахăçла',
'oldpassword' => 'Кивě пароль',
@@ -460,8 +451,6 @@ $1',
'extlink_tip' => 'Тулаш каçи (http:// Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ã§Ð¸Ð½Ñ‡ÐµÐ½ ан манăр)',
'headline_sample' => 'Пуçелĕк',
'headline_tip' => 'Иккĕмĕш шайри ÑÑ‚',
-'math_sample' => 'Формулăна кунта кĕртĕр',
-'math_tip' => 'Математика формули (LaTeX форматпа)',
'nowiki_sample' => 'Кунта фотматламан текÑта кĕртĕр.',
'nowiki_tip' => 'Вики-ĕрешлевне пăхмалла мар',
'image_tip' => 'КĕртÑе лартнă ӳкерчĕк',
@@ -924,10 +913,8 @@ Also see [[Special:WantedCategories|wanted categories]].',
'nowatchlist' => 'ЭÑир пăхÑа тăракан ÑтраницăÑен ÑпиÑокĕ пушă.',
'watchnologin' => 'СиÑтемăна хăвăр Ñта каламалла',
'watchnologintext' => 'Сăнав ÑпиÑокне улăштармашкăн Ñирĕн ÑиÑтемăна [[Special:UserLogin|хăвăр Ñта каламалла]].',
-'addedwatch' => 'Сăнамалли шутне кĕртрĕмĕр',
'addedwatchtext' => '«[[:$1]]» Ñтраницăна Ñирĕн [[Special:Watchlist|Ñăнав ÑпиÑока]] хушрăмăр. Малашне [[Special:RecentChanges|юлашки улшăнуÑене кăтартакан Ñтраницăра]] унпа çыхăннă улшăнуÑене хылăм шрифтпа курăнĕç.
Енчен те Ñирĕн ку Ñтраницăна ÑÄƒÐ½Ð°Ñ ÐºÄƒÐ¼ÄƒÐ» пĕтÑен, «ан Ñăна» пуÑкăч çине пуÑăр.',
-'removedwatch' => 'Сăнамалли ÑпиÑокран кăларÑа пăрахнă',
'removedwatchtext' => '«[[:$1]]» Ñтраницăна Ñирĕн Ñăнамалли ÑпиÑокран кăларÑа пăрахнă.',
'watch' => 'Сăна',
'watchthispage' => 'Ку Ñтраницăна ÑăнаÑа тăр',
@@ -1024,7 +1011,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
'unblockip' => 'IP-адреÑа блокировкăран калар',
'unblocked-id' => '$1 чарÑа лартнине ирĕке кăларнă',
'ipblocklist' => 'Чарнă IP-адреÑÑемпе хутшăнаканÑен ÑпиÑокĕ',
-'ipblocklist-username' => 'Хутшăнакан Ñчĕ, е IP-адреÑ:',
'ipblocklist-submit' => 'Туп',
'ipblocklist-empty' => 'Чару ÑпиÑокĕ пушă.',
'blocklink' => 'ĕçлеме чар',
@@ -1117,22 +1103,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
# Spam protection
'spambot_username' => 'MediaWiki Ñпамран таÑатни',
-# Info page
-'infosubtitle' => 'Страница çинчен',
-'numedits' => 'УлшăнуÑен шучĕ (ÑтатьÑÑем): $1',
-'numtalkedits' => 'УлшăнуÑен шучĕ (ÑӳтÑе Ñвмалли Ñтраница): $1',
-'numwatchers' => 'СăнаканÑен шучĕ: $1',
-'numtalkauthors' => 'Тĕрлĕ авторÑен шучĕ (çӳтÑе Ñвмалли Ñтраница): $1',
-
-# Math options
-'mw_math_png' => 'Яланах PNG хатĕрлемелле',
-'mw_math_simple' => 'Ðхаль чухне HTML, урăхла чухне PNG',
-'mw_math_html' => 'май пулÑан HTML, май çук пулÑан — PNG',
-'mw_math_modern' => 'Хальхи браузерÑемпе уÑă курмашкăн Ñĕннĕ пек',
-
-# Math errors
-'math_syntax_error' => 'ÑинтакÑÐ¸Ñ Ð¹ÄƒÐ½ÄƒÑˆÄ•',
-
# Patrolling
'markaspatrolleddiff' => 'ТĕрĕÑленĕ теÑе палăрт',
'markaspatrolledtext' => 'Ку ÑтатьÑна тĕрĕÑленĕ теÑе палăртмалла',
@@ -1174,10 +1144,8 @@ Also see [[Special:WantedCategories|wanted categories]].',
'edit-externally' => 'Ку файла тулашри программăна уÑă курÑа тӳрлет',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'пурте',
-'imagelistall' => 'Пурте',
-'watchlistall2' => 'пурте',
-'namespacesall' => 'пурте',
+'watchlistall2' => 'пурте',
+'namespacesall' => 'пурте',
# E-mail address confirmation
'confirmemail_sent' => 'Çирĕплетмелли ыйтуллă çырăва Ñтăмăр.',
diff --git a/languages/messages/MessagesCy.php b/languages/messages/MessagesCy.php
index e045fcd3..af0e8d2c 100644
--- a/languages/messages/MessagesCy.php
+++ b/languages/messages/MessagesCy.php
@@ -113,7 +113,7 @@ $magicWords = array(
'pagesize' => array( '1', 'MAINTTUD', 'PAGESIZE' ),
);
-$linkTrail = "/^([àáâèéêìíîïòóôûŵŷa-z]+)(.*)\$/sDu";
+$linkTrail = "/^([àáâèéêìíîïòóôûŵŷa-z]+)(.*)$/sDu";
$messages = array(
# User preference toggles
@@ -147,8 +147,8 @@ $messages = array(
'tog-shownumberswatching' => "Dangos y nifer o ddefnyddwyr sy'n gwylio",
'tog-oldsig' => 'Llofnod cyfredol:',
'tog-fancysig' => 'Trin y llofnod fel testun wici (heb gyswllt wici awtomatig)',
-'tog-externaleditor' => 'Defnyddio golygydd allanol trwy ragosodiad (ar gyfer arbenigwyr yn unig; mae arno angen gosodiadau arbennig ar eich cyfrifiadur. [http://www.mediawiki.org/wiki/Manual:External_editors Rhagor o wybodaeth.])',
-'tog-externaldiff' => 'Defnyddio "external diff" trwy ragosodiad (ar gyfer arbenigwyr yn unig; mae arno angen gosodiadau arbennig ar eich cyfrifiadur. [http://www.mediawiki.org/wiki/Manual:External_editors Rhagor o wybodaeth.])',
+'tog-externaleditor' => 'Defnyddio golygydd allanol trwy ragosodiad (ar gyfer arbenigwyr yn unig; mae arno angen gosodiadau arbennig ar eich cyfrifiadur. [//www.mediawiki.org/wiki/Manual:External_editors Rhagor o wybodaeth.])',
+'tog-externaldiff' => 'Defnyddio "external diff" trwy ragosodiad (ar gyfer arbenigwyr yn unig; mae arno angen gosodiadau arbennig ar eich cyfrifiadur. [//www.mediawiki.org/wiki/Manual:External_editors Rhagor o wybodaeth.])',
'tog-showjumplinks' => 'Galluogi dolenni hygyrchedd "neidio i"',
'tog-uselivepreview' => 'Defnyddio rhagolwg byw (JavaScript) (Arbrofol)',
'tog-forceeditsummary' => 'Tynnu fy sylw pan adawaf flwch crynodeb golygu yn wag',
@@ -243,15 +243,7 @@ $messages = array(
'listingcontinuesabbrev' => 'parh.',
'index-category' => 'Tudalennau wedi eu mynegeio',
'noindex-category' => 'Tudalennau heb eu mynegeio',
-
-'mainpagetext' => "'''Wedi llwyddo gosod meddalwedd MediaWiki yma'''",
-'mainpagedocfooter' => 'Ceir cymorth (yn Saesneg) ar ddefnyddio meddalwedd wici yn y [http://meta.wikimedia.org/wiki/Help:Contents Canllaw Defnyddwyr] ar wefan Wikimedia.
-
-==Cychwyn arni==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Rhestr gosodiadau wrth gyflunio]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Cwestiynau poblogaidd ar MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Rhestr postio datganiadau MediaWiki]',
+'broken-file-category' => 'Tudalennau a chysylltiadau toredig i ffeiliau ynddynt',
'about' => 'Ynglŷn â',
'article' => 'Tudalen bwnc (erthygl/ffeil)',
@@ -303,10 +295,10 @@ $messages = array(
'history' => 'Hanes y dudalen',
'history_short' => 'Hanes',
'updatedmarker' => 'diwygiwyd ers i mi ymweld ddiwethaf',
-'info_short' => 'Gwybodaeth',
'printableversion' => 'Fersiwn argraffu',
'permalink' => 'Dolen barhaol',
'print' => 'Argraffu',
+'view' => 'Darllen',
'edit' => 'Golygu',
'create' => 'Creu',
'editthispage' => 'Golygwch y dudalen hon',
@@ -314,6 +306,7 @@ $messages = array(
'delete' => 'Dileu',
'deletethispage' => 'Dileer y dudalen hon',
'undelete_short' => 'Adfer $1 {{PLURAL:$1|golygiad|golygiad|olygiad|golygiad|golygiad|golygiad}}',
+'viewdeleted_short' => "Edrych ar y {{PLURAL:$1|golygiad sydd wedi'i ddileu|golygiad sydd wedi'i ddileu|$1 olygiad sydd wedi'u dileu|$1 golygiad sydd wedi'u dileu|$1 golygiad sydd wedi'u dileu|$1 golygiad sydd wedi'u dileu}}",
'protect' => 'Diogelu',
'protect_change' => 'newid',
'protectthispage' => "Diogelu'r dudalen hon",
@@ -397,6 +390,8 @@ $1',
'toc' => 'Cynnwys',
'showtoc' => 'dangos',
'hidetoc' => 'cuddio',
+'collapsible-collapse' => 'Crebachu',
+'collapsible-expand' => 'Ehangu',
'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}}",
@@ -408,6 +403,8 @@ $1',
'page-rss-feed' => "Porthiant RSS '$1'",
'page-atom-feed' => "Porthiant Atom '$1'",
'red-link-title' => "$1 (does dim tudalen o'r enw hwn i gael)",
+'sort-descending' => 'Trefnu gan ddisgyn',
+'sort-ascending' => 'Trefnu gan esgyn',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Tudalen',
@@ -491,12 +488,13 @@ Ceisiwch eto ymhen rhai munudau.",
'protectedpagetext' => "Mae'r dudalen hon wedi'i diogelu rhag cael ei golygu.",
'viewsourcetext' => 'Cewch weld a chopïo côd y dudalen:',
'protectedinterface' => 'Testun ar gyfer rhyngwyneb y wici yw cynnwys y dudalen hon. Clowyd y dudalen er mwyn ei diogeli.',
-'editinginterface' => "'''Dalier sylw:''' Rydych yn golygu tudalen sy'n rhan o destun rhyngwyneb y meddalwedd. Bydd newidiadau i'r dudalen hon yn effeithio ar y rhyngwyneb a ddefnyddir gan eraill. Os am gyfieithu'r neges, ystyriwch ddefnyddio [http://translatewiki.net/wiki/Main_Page?setlang=cy translatewiki.net], sef y prosiect MediaWiki sy'n hyrwyddo creu wicïau amlieithog.",
+'editinginterface' => "'''Dalier sylw:''' Rydych yn golygu tudalen sy'n rhan o destun rhyngwyneb y meddalwedd. Bydd newidiadau i'r dudalen hon yn effeithio ar y rhyngwyneb a ddefnyddir gan eraill. Os am gyfieithu'r neges, ystyriwch ddefnyddio [//translatewiki.net/wiki/Main_Page?setlang=cy translatewiki.net], sef y prosiect MediaWiki sy'n hyrwyddo creu wicïau amlieithog.",
'sqlhidden' => '(cuddiwyd chwiliad SQL)',
'cascadeprotected' => "Diogelwyd y dudalen hon rhag ei newid, oherwydd ei bod wedi ei chynnwys yn y {{PLURAL:$1|dudalen ganlynol|dudalen ganlynol|tudalennau canlynol|tudalennau canlynol|tudalennau canlynol|tudalennau canlynol}}, a {{PLURAL:$1|honno yn ei thro wedi ei|honno yn ei thro wedi ei|rheiny yn eu tro wedi eu|rheiny yn eu tro wedi eu|rheiny yn eu tro wedi eu|rheiny yn eu tro wedi eu}} diogelu, a'r dewisiad 'sgydol' ynghynn:
$2",
'namespaceprotected' => "Nid oes caniatâd gennych i olygu tudalennau yn y parth '''$1'''.",
-'customcssjsprotected' => "Nid oes caniatâd ganddoch i olygu'r dudalen hon oherwydd bod gosodiadau personol defnyddiwr arall arno.",
+'customcssprotected' => "Nid oes caniatâd ganddoch i olygu'r dudalen CSS hon oherwydd bod gosodiadau personol defnyddiwr arall arno.",
+'customjsprotected' => "Nid oes caniatâd ganddoch i olygu'r dudalen JavaScript hon oherwydd bod gosodiadau personol defnyddiwr arall arno.",
'ns-specialprotected' => 'Ni ellir golygu tudalennau arbennig.',
'titleprotected' => "Diogelwyd y teitl hwn rhag ei greu gan [[User:$1|$1]].
Rhoddwyd y rheswm hwn - ''$2''.",
@@ -534,6 +532,7 @@ Cofiwch osod y [[Special:Preferences|dewisiadau]] sydd fwyaf hwylus i chi ar {{S
'createaccount' => 'Creu cyfrif newydd',
'gotaccount' => "Oes cyfrif gennych eisoes? '''$1'''.",
'gotaccountlink' => 'Mewngofnodwch',
+'userlogin-resetlink' => 'Ydych chi wedi anghofio eich manylion mewngofnodi?',
'createaccountmail' => 'trwy e-bost',
'createaccountreason' => 'Rheswm:',
'badretype' => "Nid yw'r cyfrineiriau'n union yr un fath.",
@@ -543,13 +542,15 @@ Dewiswch un arall os gwelwch yn dda.',
'createaccounterror' => "Ni lwyddwyd i greu'r cyfrif: $1",
'nocookiesnew' => "Mae'r cyfrif defnyddiwr wedi cael ei greu, ond nid ydych wedi mewngofnodi. Mae {{SITENAME}} yn defnyddio cwcis wrth i ddefnyddwyr fewngofnodi. Rydych chi wedi analluogi cwcis. Mewngofnodwch eto gyda'ch enw defnyddiwr a'ch cyfrinair newydd os gwelwch yn dda, ar ôl galluogi cwcis.",
'nocookieslogin' => 'Mae {{SITENAME}} yn defnyddio cwcis wrth i ddefnyddwyr fewngofnodi. Rydych chi wedi analluogi cwcis. Trïwch eto os gwelwch yn dda, ar ôl galluogi cwcis.',
+'nocookiesfornew' => 'Ni chrëwyd cyfrif defnyddiwr newydd, oherwydd na allem gadarnhau ei ffynhonnell.
+Sicrhewch eich bod wedi galluogi cwcis, yna ail-lwythwch y dudalen hon a cheisiwch eto.',
'noname' => 'Dydych chi ddim wedi cynnig enw defnyddiwr dilys.',
'loginsuccesstitle' => 'Llwyddodd y mewngofnodi',
'loginsuccess' => "'''Yr ydych wedi mewngofnodi i {{SITENAME}} fel \"\$1\".'''",
'nosuchuser' => "Does dim defnyddiwr o'r enw \"\$1\".
Mae'r rhaglen yn gwahaniaethu rhwng llythrennau bach a mawr.
Sicrhewch eich bod chi wedi sillafu'r enw'n gywir, neu [[Special:UserLogin/signup|crëwch gyfrif newydd]].",
-'nosuchusershort' => 'Does dim defnyddiwr o\'r enw "<nowiki>$1</nowiki>". Gwiriwch eich sillafu.',
+'nosuchusershort' => 'Does dim defnyddiwr o\'r enw "$1". Gwiriwch eich sillafu.',
'nouserspecified' => "Mae'n rhaid nodi enw defnyddiwr.",
'login-userblocked' => "Mae'r defnyddiwr hwn wedi ei flocio. Ni ellir mewngofnodi.",
'wrongpassword' => "Nid yw'r cyfrinair a deipiwyd yn gywir. Rhowch gynnig arall arni, os gwelwch yn dda.",
@@ -588,13 +589,14 @@ Rhydd ichi anwybyddu\'r neges hon os mai camgymeriad oedd creu\'r cyfrif.',
'usernamehasherror' => 'Ni all enw defnyddiwr gynnwys symbolau stwnsh',
'login-throttled' => 'Rydych wedi ceisio mewngofnodi gormod o weithiau ar unwaith.
Oedwch ychydig cyn mentro eto.',
+'login-abort-generic' => 'Ni lwyddodd y mewngofnodi - Rhoddwyd y gorau iddo',
'loginlanguagelabel' => 'Iaith: $1',
'suspicious-userlogout' => 'Gwrthodwyd eich cais i allgofnodi oherwydd ei fod yn ymddangos mai gweinydd wedi torri neu ddirprwy gelc a anfonodd y cais.',
# E-mail sending
'php-mail-error-unknown' => 'Gwall anhysbys yng ngweithrediad post() PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Newid cyfrinair y cyfrif',
'resetpass_announce' => "Fe wnaethoch fewngofnodi gyda chôd dros dro oddi ar e-bost.
Er mwyn cwblhau'r mewngofnodi, rhaid i chi osod cyfrinair newydd fel hyn:",
@@ -612,6 +614,32 @@ Er mwyn cwblhau'r mewngofnodi, rhaid i chi osod cyfrinair newydd fel hyn:",
Gall fod eich bod wedi llwyddo newid eich cyfrinair eisoes neu eich bod wedi gofyn am gyfrinair dros dro newydd.",
'resetpass-temp-password' => 'Cyfrinair dros dro:',
+# Special:PasswordReset
+'passwordreset' => 'Ailosod cyfrinair',
+'passwordreset-text' => "Cwblhewch y ffurflen hon er mwyn derbyn e-bost i'ch atgoffa o fanylion eich cyfrif.",
+'passwordreset-legend' => 'Ailosod y cyfrinair',
+'passwordreset-disabled' => 'Analluogwyd ailosod cyfrineiriau ar y wici hwn.',
+'passwordreset-pretext' => "{{PLURAL:$1|||Rhowch un o'r darnau o ddata isod|Rhowch un o'r darnau o ddata isod|Rhowch un o'r darnau o ddata isod|Rhowch un o'r darnau o ddata isod|Rhowch un o'r darnau o ddata isod}}",
+'passwordreset-username' => 'Eich enw defnyddiwr:',
+'passwordreset-domain' => 'Parth:',
+'passwordreset-email' => 'Eich cyfeiriad e-bost:',
+'passwordreset-emailtitle' => 'Manylion eich cyfrif ar {{SITENAME}}',
+'passwordreset-emailtext-ip' => "Mae rhywun (chi yn ôl pob tebyg, o'r cyfeiriad IP $1) wedi gofyn am nodyn atgoffa o fanylion eich cyfrif ar {{SITENAME}} ($4). Mae'r {{PLURAL:$3|cyfrif|cyfrif|cyfrifon|cyfrifon|cyfrifon|cyfrifon}} canlynol ynghlwm wrth y cyfeiriad e-bost hwn:
+
+$2
+
+Bydd y {{PLURAL:$3||cyfrinair dros dro hwn|cyfrineiriau dros dro hyn|cyfrineiriau dros dro hyn|cyfrineiriau dros dro hyn|cyfrineiriau dros dro hyn}} yn dod i ben ymhen {{PLURAL:$5||diwrnod |deuddydd|tridiau|$5 diwrnod|$5 diwrnod}}. Dylech fewngofnodi nawr a dewis cyfrinair newydd. Os mai rhywun arall a ofynodd am ailosod y cyfrinair, neu os ydych wedi cofio eich cyfrinair gwreiddiol, neu os nad ydych am ei newid bellach, gallwch anwybyddu'r neges hon a pharhau i ddefnyddio eich hen gyfrinair.",
+'passwordreset-emailtext-user' => "Gofynodd y defnyddiwr $1 ar {{SITENAME}} am gael ei atgoffa o fanylion eich cyfrif ar {{SITENAME}}
+($4). Mae'r {{PLURAL:$3||cyfrif|cyfrifon|cyfrifon|cyfrifon|cyfrifon}} canlynol ynghlwm wrth y cyfeiriad e-bost hwn:
+
+$2
+
+Bydd y {{PLURAL:$3||cyfrinair|cyfrineiriau|cyfrineiriau|cyfrineiriau|cyfrineiriau}} dros dro hyn yn dod i ben ymhen {{PLURAL:$5||diwrnod|deuddydd|tridiau|$5 diwrnod|$5 diwrnod}}.
+Dylech fewngofnodi nawr a dewis cyfrinair newydd. Os mai rhywun arall a ofynodd am ailosod y cyfrinair, neu os ydych wedi cofio eich cyfrinair gwreiddiol, neu os nad ydych am ei newid bellach, gallwch anwybyddu'r neges hon a pharhau i ddefnyddio eich hen gyfrinair.",
+'passwordreset-emailelement' => "Enw'r defnyddiwr: $1
+Y cyfrinair dros dro: $2",
+'passwordreset-emailsent' => 'Anfonwyd nodyn atgoffa drwy e-bost.',
+
# Edit page toolbar
'bold_sample' => 'Testun cryf',
'bold_tip' => 'Testun cryf',
@@ -623,8 +651,6 @@ Gall fod eich bod wedi llwyddo newid eich cyfrinair eisoes neu eich bod wedi gof
'extlink_tip' => 'Cyswllt allanol (cofiwch y rhagddodiad http:// )',
'headline_sample' => 'Testun pennawd',
'headline_tip' => 'Pennawd lefel 2',
-'math_sample' => 'Gosodwch fformwla yma',
-'math_tip' => 'Fformwla mathemategol (LaTeX)',
'nowiki_sample' => 'Rhowch destun di-fformatedig yma',
'nowiki_tip' => "Anwybyddu'r gystrawen wici",
'image_sample' => 'Enghraifft.jpg',
@@ -706,7 +732,7 @@ Os daethoch yma ar ddamwain, cliciwch botwm '''n&ocirc;l''' y porwr.",
Gallwch [[Special:Search/{{PAGENAME}}|chwilio am y teitl hwn]] ar dudalennau eraill, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} chwilio drwy'r logiau perthnasol], neu [{{fullurl:{{FULLPAGENAME}}|action=edit}} golygu'r dudalen]</span>.",
'noarticletext-nopermission' => 'Mae\'r dudalen hon yn wag ar hyn o bryd.
Gallwch [[Special:Search/{{PAGENAME}}|chwilio am y teitl hwn]] ar dudalennau eraill, neu gallwch <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} chwilio drwy\'r logiau perthnasol]</span>.',
-'userpage-userdoesnotexist' => 'Nid oes defnyddiwr a\'r enw "$1" yn bod. Gwnewch yn siwr eich bod am greu/golygu\'r dudalen hon.',
+'userpage-userdoesnotexist' => 'Nid oes defnyddiwr a\'r enw "<nowiki>$1</nowiki>" yn bod. Gwnewch yn siwr eich bod am greu/golygu\'r dudalen hon.',
'userpage-userdoesnotexist-view' => 'Nid yw\'r cyfrif defnyddiwr "$1" wedi ei gofrestri.',
'blocked-notice-logextract' => "Mae'r defnyddiwr hwn wedi ei flocio ar hyn o bryd.
Dyma'r cofnod lòg diweddaraf, er gwybodaeth:",
@@ -742,6 +768,7 @@ Os methwch unwaith eto, ceisiwch [[Special:UserLogout|allgofnodi]] ac yna mewngo
'token_suffix_mismatch' => "'''Gwrthodwyd eich golygiad oherwydd bod eich gweinydd cleient wedi gwneud cawl o'r atalnodau yn y tocyn golygu.
Gwrthodwyd y golygiad rhag i destun y dudalen gael ei lygru.
Weithiau fe ddigwydd hyn wrth ddefnyddio dirprwy-wasanaeth anhysbys gwallus yn seiliedig ar y we.'''",
+'edit_form_incomplete' => "'''Nid yw peth o'r ffurflen golygu wedi cyrraedd y gweinydd; sicrhewch bod eich golygiadau'n gyfan o hyd ac yna ceisiwch eto.'''",
'editing' => 'Yn golygu $1',
'editingsection' => 'Yn golygu $1 (adran)',
'editingcomment' => 'Yn golygu $1 (adran newydd)',
@@ -974,7 +1001,7 @@ Edrychwch ar y logiau er mwyn cael rhagor o wybodaeth.",
# Suppression log
'suppressionlog' => 'Lòg cuddio',
'suppressionlogtext' => "Dyma restr y dileuon a'r blociau lle y cuddiwyd cynnwys rhag y gweinyddwyr.
-Gallwch weld rhestr y gwaharddiadau a'r blociau gweithredol ar y [[Special:IPBlockList|rhestr blociau IP]].",
+Gallwch weld rhestr y gwaharddiadau a'r blociau gweithredol ar y [[Special:BlockList|rhestr blociau IP]].",
# History merging
'mergehistory' => 'Cyfuno hanesion y tudalennau',
@@ -1083,12 +1110,13 @@ Yn y cyfamser gallwch chwilio drwy Google.
Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
# Quickbar
-'qbsettings' => 'Panel llywio',
-'qbsettings-none' => 'Dim',
-'qbsettings-fixedleft' => 'Sefydlog ar y chwith',
-'qbsettings-fixedright' => 'Sefydlog ar y dde',
-'qbsettings-floatingleft' => 'Yn arnofio ar y chwith',
-'qbsettings-floatingright' => 'Yn arnofio ar y dde',
+'qbsettings' => 'Panel llywio',
+'qbsettings-none' => 'Dim',
+'qbsettings-fixedleft' => 'Sefydlog ar y chwith',
+'qbsettings-fixedright' => 'Sefydlog ar y dde',
+'qbsettings-floatingleft' => 'Yn arnofio ar y chwith',
+'qbsettings-floatingright' => 'Yn arnofio ar y dde',
+'qbsettings-directionality' => "Yn sefydlog, ar yr ochr o'r ddalen lle rydych yn dechrau ysgrifennu eich iaith",
# Preferences page
'preferences' => 'Dewisiadau',
@@ -1099,9 +1127,10 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
'changepassword' => 'Newid y cyfrinair',
'prefs-skin' => 'Gwedd',
'skin-preview' => 'Rhagolwg',
-'prefs-math' => 'Mathemateg',
'datedefault' => 'Dim dewisiad',
+'prefs-beta' => 'Nodweddion Beta',
'prefs-datetime' => 'Dyddiad ac amser',
+'prefs-labs' => 'Nodweddion Labs',
'prefs-personal' => 'Data defnyddiwr',
'prefs-rc' => 'Newidiadau diweddar',
'prefs-watchlist' => 'Rhestr wylio',
@@ -1123,8 +1152,6 @@ Cofiwch y gall mynegeion Google o gynnwys {{SITENAME}} fod ar ei hôl hi.",
'columns' => 'Colofnau:',
'searchresultshead' => 'Chwilio',
'resultsperpage' => 'Cyfradd taro fesul tudalen:',
-'contextlines' => "Nifer y llinellau i'w dangos ar gyfer pob hit:",
-'contextchars' => 'Nifer y llythrennau a nodau eraill i bob llinell:',
'stub-threshold' => 'Trothwy ar gyfer fformatio <a href="#" class="stub">cyswllt eginyn</a> (beitiau):',
'stub-threshold-disabled' => 'Analluogwyd',
'recentchangesdays' => "Nifer y diwrnodau i'w dangos yn 'newidiadau diweddar':",
@@ -1137,7 +1164,7 @@ Dyma allwedd wedi ei chreu ar hap y gallwch ei defnyddio: $1",
'savedprefs' => 'Mae eich dewisiadau wedi cael eu cadw.',
'timezonelegend' => 'Ardal amser:',
'localtime' => 'Amser lleol:',
-'timezoneuseserverdefault' => 'Amser y gweinydd',
+'timezoneuseserverdefault' => "Defnyddio'r amser yn ôl y wici ($1)",
'timezoneuseoffset' => 'Arall (nodwch yr atred)',
'timezoneoffset' => 'Atred¹:',
'servertime' => 'Amser y gweinydd:',
@@ -1186,8 +1213,8 @@ Gall fod hyd at $1 {{PLURAL:$1|llythyren|lythyren|lythyren|llythyren|llythyren|l
Mae'r wybodaeth hon ar gael i'r cyhoedd.",
'email' => 'E-bost',
'prefs-help-realname' => '* Enw iawn (dewisol): Os ydych yn dewis ei roi, fe fydd yn cael ei ddefnyddio er mwyn rhoi cydnabyddiaeth i chi am eich gwaith.',
-'prefs-help-email' => "Os ydych yn dewis gosod eich cyfeiriad e-bost yna gallwn anfon cyfrinair newydd atoch os aiff yr un gwreiddiol yn angof gennych.
-Gallwch hefyd adael i eraill anfon e-bost atoch trwy'r cyswllt ar eich tudalen defnyddiwr neu eich tudalen sgwrs, heb ddatguddio'ch manylion personol.",
+'prefs-help-email' => 'Os ydych yn dewis gosod eich cyfeiriad e-bost yna gallwn anfon cyfrinair newydd atoch os aiff yr un gwreiddiol yn angof gennych.',
+'prefs-help-email-others' => "Gallwch hefyd adael i eraill anfon e-bost atoch trwy'r cyswllt ar eich tudalen defnyddiwr neu eich tudalen sgwrs, heb ddatguddio'ch manylion personol.",
'prefs-help-email-required' => 'Cyfeiriad e-bost yn angenrheidiol.',
'prefs-info' => 'Gwybodaeth sylfaenol',
'prefs-i18n' => 'Iaith',
@@ -1312,15 +1339,15 @@ Gallwch hefyd adael i eraill anfon e-bost atoch trwy'r cyswllt ar eich tudalen d
'right-userrights' => 'Golygu holl alluoedd defnyddwyr',
'right-userrights-interwiki' => "Newid galluoedd defnyddwyr sy'n perthyn i ddefnyddwyr ar wicïau eraill",
'right-siteadmin' => "Cloi a datgloi'r databas",
-'right-reset-passwords' => 'Ailosod cyfrinair defnyddwyr eraill',
'right-override-export-depth' => 'Allforio tudalennau gan gynnwys tudalennau cysylltiedig hyd at ddyfnder o 5',
'right-sendemail' => 'Anfon e-bost at ddefnyddwyr eraill',
# 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)",
-'rightsnone' => '(dim)',
+'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',
@@ -1441,11 +1468,11 @@ Gweler [[Special:NewFiles|oriel y ffeiliau newydd]] i fwrw golwg drostynt.",
'minlength1' => 'Rhaid i enwau ffeiliau gynnwys un llythyren neu ragor.',
'illegalfilename' => 'Mae\'r enw ffeil "$1" yn cynnwys nodau sydd wedi\'u gwahardd mewn teitlau tudalennau. Ail-enwch y ffeil ac uwchlwythwch hi eto os gwelwch yn dda.',
'badfilename' => 'Newidiwyd enw\'r ffeil i "$1".',
-'filetype-mime-mismatch' => "Nid yw estyniad y ffeil yn cysefeillio â'r math MIME.",
+'filetype-mime-mismatch' => 'Nid yw\'r estyniad ".$1" ar y ffeil yn cysefeillio â\'i math MIME ($2).',
'filetype-badmime' => "Ni chaniateir uwchlwytho ffeiliau o'r math MIME '$1'.",
'filetype-bad-ie-mime' => 'Ni ellir uwchlwytho\'r ffeil hon oherwydd y byddai Internet Explorer yn ei adnabod fel "$1", sef math annilys o ffeil sydd efallai hefyd yn beryglus.',
'filetype-unwanted-type' => "Mae'r math '''\".\$1\"''' o ffeil yn anghymeradwy. Mae'n well defnyddio ffeil {{PLURAL:\$3|o'r math|o'r math|o'r mathau|o'r mathau|o'r mathau|o'r mathau}} \$2.",
-'filetype-banned-type' => "Ni chaniateir ffeiliau o'r math '''\".\$1\"'''. \$2 yw'r {{PLURAL:\$3|math|math|mathau|mathau|mathau|mathau}} o ffeil a ganiateir.",
+'filetype-banned-type' => "Ni chaniateir ffeiliau o'r {{PLURAL:\$4|math|math|mathau|mathau|mathau|mathau}} '''\".\$1\"'''. \$2 yw'r {{PLURAL:\$3|math|math|mathau|mathau|mathau|mathau}} o ffeil a ganiateir.",
'filetype-missing' => "Nid oes gan y ffeil hon estyniad (megis '.jpg').",
'empty-file' => "Mae'r ffeil a gyflwynwyd gennych yn wag.",
'file-too-large' => "Mae'r ffeil a gyflwynwyd gennych yn rhy fawr.",
@@ -1461,6 +1488,7 @@ Gweler [[Special:NewFiles|oriel y ffeiliau newydd]] i fwrw golwg drostynt.",
'large-file' => "Argymhellir na ddylai ffeil fod yn fwy na $1. Mae'r ffeil hwn yn $2 o faint.",
'largefileserver' => "Mae'r ffeil yn fwy na'r hyn mae'r gweinydd yn ei ganiatau.",
'emptyfile' => "Ymddengys fod y ffeil a uwchlwythwyd yn wag. Efallai bod gwall teipio yn enw'r ffeil. Sicrhewch eich bod wir am uwchlwytho'r ffeil.",
+'windows-nonascii-filename' => "Nid yw'r wici hwn yn cynnal enwau ffeiliau sy'n cynnwys nodau arbennig.",
'fileexists' => "Mae ffeil gyda'r enw hwn eisoes yn bodoli; gwiriwch '''<tt>[[:$1]]</tt>''' os nad ydych yn sicr bod angen ei newid.
[[$1|thumb]]",
'filepageexists' => "Mae tudalen ddisgrifiad ar gyfer y ffeil hon eisoes ar gael ar '''<tt>[[:$1]]</tt>''', ond nid oes ffeil o'r enw hwn ar gael ar hyn o bryd.
@@ -1499,6 +1527,8 @@ Dylech edrych ar hanes dileu'r ffeil honno cyn bwrw ati i'w llwytho unwaith eto.
Gwiriwch y gosodiad ar file_uploads.',
'uploadscripted' => "Mae'r ffeil hon yn cynnwys HTML neu sgript a all achosi problemau i borwyr gwe.",
'uploadvirus' => 'Mae firws gan y ffeil hon! Manylion: $1',
+'uploadjava' => "Ffeil ZIP yw hwn sy'n cynnwys ffeil Java .class.
+Ni chaniateir uwchlwytho ffeiliau Java, oherwydd y gallant osgoi cyfyngiadau diogelwch.",
'upload-source' => 'Y ffeil wreiddiol',
'sourcefilename' => "Enw'r ffeil wreiddiol:",
'sourceurl' => 'URL y gwreiddiol:',
@@ -1509,10 +1539,6 @@ Gwiriwch y gosodiad ar file_uploads.',
'watchthisupload' => 'Gwylier y ffeil hon',
'filewasdeleted' => "Cafodd ffeil o'r enw hwn eisoes ei uwchlwytho ac yna ei dileu.
Dylech ddarllen y $1 cyn bwrw ati i'w uwchlwytho unwaith eto.",
-'upload-wasdeleted' => "'''Rhybudd: Rydych yn uwchlwytho ffeil sydd eisoes wedi ei dileu.'''
-
-Ail-feddyliwch a ddylech barhau i uwchlwytho'r ffel hon.
-Dyma'r lòg dileu ar gyfer y ffeil i chi gael gweld:",
'filename-bad-prefix' => "Mae'r enw ar y ffeil yr ydych yn ei uwchlwytho yn dechrau gyda '''\"\$1\"'''. Mae'r math hwn o enw diystyr fel arfer yn cael ei osod yn awtomatig gan gamerâu digidol. Mae'n well gosod enw sy'n disgrifio'r ffeil arno.",
'upload-success-subj' => 'Wedi llwyddo uwchlwytho',
'upload-success-msg' => "Llwyddwyd i uwchlwytho'r ffeil o [$2]. Mae ar gael yma: [[:{{ns:file}}:$1]]",
@@ -1536,12 +1562,29 @@ Os yw'r broblem yn parhau, cysylltwch â [[Special:ListUsers/sysop|gweinyddwr]].
'upload-unknown-size' => 'Maint anhysbys',
'upload-http-error' => 'Digwyddodd gwall HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Cafwyd gwall wrth agor y ffeil er mwyn gwneud gwiriadau ZIP.',
+'zip-wrong-format' => "Nid ffeil ZIP yw'r ffeil a enwyd.",
+'zip-bad' => "Mae'r ffeil yn ffeil ZIP llygredig neu annarllenadwy.
+Ni all gael ei wirio'n ddigonol er sicrhau diogelwch.",
+'zip-unsupported' => "Ffeil ZIP yw hon sy'n defnyddio nodweddion na chefnogir gan MediaWiki.
+Ni all gael ei wirio'n ddigonol er sicrhau diogelwch.",
+
+# Special:UploadStash
+'uploadstash' => "Uwchlwytho i'r celc",
+'uploadstash-summary' => "O'r dudalen hon gallwch gyrchu'r ffeiliau sydd wedi cael eu huwchlwytho (neu wrthi'n cael eu huwchlwytho) ond nad ydynt wedi eu cyhoeddi ar y wici eto. Nid oes neb yn gallu gweld y ffeiliau heblaw am y defnyddiwr a'u huwchlwythodd.",
+'uploadstash-clear' => "Clirio'r celc ffeiliau",
+'uploadstash-nofiles' => 'Nid oes unrhyw ffeiliau mewn celc gennych.',
+'uploadstash-badtoken' => 'Ni lwyddodd y weithred, efallai oherwydd bod eich cymwysterau golygu wedi dod i ben. Ceisiwch eto.',
+'uploadstash-errclear' => "Ni lwyddwyd i glirio'r ffeiliau.",
+'uploadstash-refresh' => 'Adnewyddu rhestr y ffeiliau',
+
# img_auth script messages
'img-auth-accessdenied' => 'Ni chaniatawyd mynediad',
'img-auth-nopathinfo' => "PATH_INFO yn eisiau.
Nid yw'ch gweinydd wedi ei osod i fedru pasio'r wybodaeth hon.
Efallai ei fod wedi ei seilio ar CGI, ac heb fod yn gallu cynnal img_auth.
-Gweler http://www.mediawiki.org/wiki/Manual:Image_Authorization.",
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Gweler y cyngor ar awdurdodi lluniau.]",
'img-auth-notindir' => "Nid yw'r llwybr y gwneuthpwyd cais amdano yn y cyfeiriadur uwchlwytho ffurfweddedig.",
'img-auth-badtitle' => 'Ddim yn gallu gwneud teitl dilys o "$1".',
'img-auth-nologinnWL' => 'Nid ydych wedi mewngofnodi ac nid yw "$1" ar y rhestr wen.',
@@ -1618,7 +1661,7 @@ Pan hidlir y rhestr yn ôl defnyddiwr, yr unig rhai a ddangosir o blith y ffeili
Mae'r rhestr canlynol yn dangos y {{PLURAL:$1|$1 cysylltiad cyntaf}} at y ffeil hon yn unig. Mae [[Special:WhatLinksHere/$2|rhestr lawn]] ar gael.",
'nolinkstoimage' => 'Nid oes cyswllt ar unrhyw dudalen yn arwain at y ffeil hon.',
'morelinkstoimage' => 'Gweld [[Special:WhatLinksHere/$1|rhagor o gysylltiadau]] at y ffeil hon.',
-'redirectstofile' => "Mae'r {{PLURAL:$1||ffeil|$1 ffeil|$1 ffeil|$1 ffeil|$1 ffeil}} canlynol yn ailgyfeirio at y ffeil hon:",
+'linkstoimage-redirect' => "$1 (tudalen ffeil sy'n ailgyfeirio) $2",
'duplicatesoffile' => "Mae'r {{PLURAL:$1||ffeil|$1 ffeil|$1 ffeil|$1 ffeil|$1 ffeil}} canlynol yn union debyg i'r ffeil hon ([[Special:FileDuplicateSearch/$2|rhagor o fanylion]]):",
'sharedupload' => 'Daw y ffeil hon o $1, felly gall fod ar waith ar brosiectau eraill.',
'sharedupload-desc-there' => "Daw'r ffeil hon o $1 a gellir ei defnyddio gan brosiectau eraill.
@@ -1709,16 +1752,17 @@ Cofiwch chwilio am gysylltiadau eraill at nodyn a'u hystyried cyn ei ddileu.",
'statistics-users-active-desc' => 'Defnyddwyr sydd wedi gweithredu unwaith neu ragor yn ystod y {{PLURAL:$1||diwrnod|deuddydd|tridiau|$1 diwrnod|$1 diwrnod}} diwethaf',
'statistics-mostpopular' => "Tudalennau sy'n derbyn ymweliad amlaf",
-'disambiguations' => 'Tudalennau gwahaniaethu',
+'disambiguations' => "Tudalennau sy'n cysylltu â thudalennau gwahaniaethu",
'disambiguationspage' => 'Template:Gwahaniaethu',
'disambiguations-text' => "Mae'r tudalennau canlynol yn cynnwys un neu ragor o gysylltau wici, sydd yn cysylltu â '''thudalennau gwahaniaethu'''. Yn hytrach dylent arwain yn syth at yr erthygl briodol.<br />
Diffinir tudalen yn dudalen gwahaniaethu pan mae'n cynnwys un o'r nodiadau '[[MediaWiki:Disambiguationspage|tudalen gwahaniaethu]]'.",
-'doubleredirects' => 'Ailgyfeiriadau dwbl',
-'doubleredirectstext' => "Mae pob rhes yn cynnwys cysylltiad i'r ddau ail-gyfeiriad cyntaf, ynghyd â chyrchfan yr ail ailgyfeiriad. Fel arfer bydd hyn yn rhoi'r gwir dudalen y dylai'r tudalennau cynt gyfeirio ati.
+'doubleredirects' => 'Ailgyfeiriadau dwbl',
+'doubleredirectstext' => "Mae pob rhes yn cynnwys cysylltiad i'r ddau ail-gyfeiriad cyntaf, ynghyd â chyrchfan yr ail ailgyfeiriad. Fel arfer bydd hyn yn rhoi'r gwir dudalen y dylai'r tudalennau cynt gyfeirio ati.
Gosodwyd <del>llinell</del> drwy'r eitemau sydd eisoes wedi eu datrys.",
-'double-redirect-fixed-move' => "Symudwyd [[$1]], a'i droi'n ailgyfeiriad at [[$2]]",
-'double-redirect-fixer' => 'Y bot ailgyfeirio',
+'double-redirect-fixed-move' => "Symudwyd [[$1]], a'i droi'n ailgyfeiriad at [[$2]]",
+'double-redirect-fixed-maintenance' => 'Yn ailosod yr ailgyfeiriad dwbl o [[$1]] i [[$2]].',
+'double-redirect-fixer' => 'Y bot ailgyfeirio',
'brokenredirects' => "Ailgyfeiriadau wedi'u torri",
'brokenredirectstext' => "Mae'r ailgyfeiriadau isod yn cysylltu â thudalennau nad ydynt ar gael:",
@@ -1795,6 +1839,7 @@ Sylwch y gall gwefannau eraill gysylltu â ffeil drwy URL uniongyrchol. Gan hynn
'pager-newer-n' => '{{PLURAL:$1|y $1 mwy diweddar|yr 1 mwy diweddar|y $1 mwy diweddar|y $1 mwy diweddar|y $1 mwy diweddar|y $1 mwy diweddar}}.',
'pager-older-n' => '{{PLURAL:$1|y $1 cynharach|yr $1 cynharach|y $1 cynharach|y $1 cynharach|y $1 cynharach|y $1 cynharach}}',
'suppress' => 'Goruchwylio',
+'querypage-disabled' => 'Analluogwyd y dudalen arbennig hon er mwyn osgoi iddi andwyo perfformiad y wefan.',
# Book sources
'booksources' => 'Ffynonellau llyfrau',
@@ -1846,12 +1891,13 @@ Gweler hefyd [[Special:WantedCategories|categorïau sydd eu hangen]].",
'sp-deletedcontributions-contribs' => 'cyfraniadau',
# Special:LinkSearch
-'linksearch' => 'Cysylltiadau allanol',
+'linksearch' => 'Chwilio am gysylltiadau allanol',
'linksearch-pat' => 'Patrwm chwilio:',
'linksearch-ns' => 'Parth:',
'linksearch-ok' => 'Chwilio',
-'linksearch-text' => 'Gellir defnyddio cardiau gwyllt megis "*.wikipedia.org".<br />
-Protocoliau sy\'n cael eu cynnal: <tt>$1</tt>',
+'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: <tt>$1</tt> (peidiwch ag ychwanegu\'r rhain wrth ysgrifennu\'r ymholiad).',
'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.",
@@ -1913,6 +1959,10 @@ Bydd y cyfeiriad e-bost a osodoch yn eich [[Special:Preferences|dewisiadau chith
'noemailtext' => "Nid yw'r defnyddiwr hwn wedi gosod cyfeiriad e-bost dilys.",
'nowikiemailtitle' => 'Ni chaniateir e-bostio',
'nowikiemailtext' => "Mae'r defnyddiwr hwn wedi dewis peidio derbyn e-byst oddi wrth ddefnyddwyr eraill.",
+'emailnotarget' => "Nid yw'r enw a roddwyd i'r derbynnydd ymhlith yr enwau defnyddwyr sydd yma.",
+'emailtarget' => 'Rhowch enw defnyddiwr y derbynnydd',
+'emailusername' => 'Enw defnyddiwr:',
+'emailusernamesubmit' => 'Cyflwyner',
'email-legend' => 'Anfon e-bost at ddefnyddiwr {{SITENAME}} arall',
'emailfrom' => 'Oddi wrth:',
'emailto' => 'At:',
@@ -1937,12 +1987,12 @@ Bydd y cyfeiriad e-bost a osodoch yn eich [[Special:Preferences|dewisiadau chith
'watchlistanontext' => "Rhaid $1 er mwyn gweld neu ddiwygio'ch rhestr wylio.",
'watchnologin' => 'Nid ydych wedi mewngofnodi',
'watchnologintext' => "Mae'n rhaid i chi [[Special:UserLogin|fewngofnodi]] er mwyn newid eich rhestr wylio.",
-'addedwatch' => 'Rhoddwyd ar 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.",
-'removedwatch' => 'Tynnwyd oddi ar eich rhestr wylio',
+'removewatch' => 'Tynnu oddi ar eich rhestr wylio',
'removedwatchtext' => 'Mae\'r dudalen "[[:$1]]" wedi\'i thynnu oddi ar [[Special:Watchlist|eich rhestr wylio]].',
'watch' => 'Gwylio',
'watchthispage' => 'Gwylier y dudalen hon',
@@ -1963,8 +2013,9 @@ Os ydych am ddiddymu'r dudalen o'r rhestr wylio, cliciwch ar \"Stopio gwylio\" y
'watchlist-options' => 'Dewisiadau ar gyfer y rhestr wylio',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => "Wrthi'n ychwanegu...",
-'unwatching' => "Wrthi'n tynnu...",
+'watching' => "Wrthi'n ychwanegu...",
+'unwatching' => "Wrthi'n tynnu...",
+'watcherrortext' => 'Cafwyd gwall wrth newid y gosodiadau ar restr wylio "$1".',
'enotif_mailer' => 'Sustem hysbysu {{SITENAME}}',
'enotif_reset' => 'Ystyried bod pob tudalen wedi cael ymweliad',
@@ -1994,16 +2045,16 @@ Os digwydd mwy o olygiadau i\'r dudalen cyn i chi ymweld â hi, ni chewch ragor
--
I newid eich gosodiadau negeseuon hysbysu, ewch i
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
I newid eich gosodiadau gwylio, ewch i
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
I dynnu\'r dudalen oddi ar eich rhestr wylio, ewch i
$UNWATCHURL
Am fwy o gymorth ac adborth:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Dileer y dudalen',
@@ -2019,7 +2070,7 @@ Am fwy o gymorth ac adborth:
Os gwelwch yn dda, cadarnhewch eich bod chi wir yn bwriadu gwneud hyn, eich bod yn deall y canlyniadau, ac yn ei wneud yn ôl [[{{MediaWiki:Policy-url}}|polisïau {{SITENAME}}]].",
'actioncomplete' => "Wedi cwblhau'r weithred",
'actionfailed' => 'Methodd y weithred',
-'deletedtext' => 'Mae "<nowiki>$1</nowiki>" wedi\'i ddileu.
+'deletedtext' => 'Mae "$1" wedi\'i ddileu.
Gwelwch y $2 am gofnod o\'r dileuon diweddar.',
'deletedarticle' => 'wedi dileu "[[$1]]"',
'suppressedarticle' => 'cuddiwyd "[[$1]]"',
@@ -2076,7 +2127,7 @@ Mae'r tudalennau sydd wedi eu diogelu ar hyn o bryd wedi eu rhestri ar y [[Speci
'protect_expiry_invalid' => 'Amser terfynu annilys.',
'protect_expiry_old' => "Mae'r amser darfod yn y gorffennol.",
'protect-unchain-permissions' => 'Datgloi rhagor o opsiynau diogelu',
-'protect-text' => "Yma, gallwch weld a newid y lefel diogelu ar gyfer y dudalen '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Yma, gallwch weld a newid y lefel diogelu ar gyfer y dudalen '''$1'''.",
'protect-locked-blocked' => "Ni allwch newid y lefel diogelu tra eich bod wedi eich blocio.
Dyma'r gosodiadau diogelu cyfredol ar gyfer y dudalen '''$1''':",
'protect-locked-dblock' => "Ni ellir newid y lefel diogelu gan fod y databas dan glo.
@@ -2130,7 +2181,7 @@ Dyma'r gosodiadau diogelu cyfredol ar gyfer y dudalen '''$1''':",
'undeletepagetext' => "Mae'r {{PLURAL:$1|dudalen ganlynol wedi cael ei dileu ond mae hi|$1 tudalen ganlynol wedi cael eu dileu ond maent}} ar gael o hyd yn yr archif, ac mae modd i'w hadfer os oes angen.
Gall yr archif gael ei glanhau o dro i dro.",
'undelete-fieldset-title' => 'Adfer diwygiadau',
-'undeleteextrahelp' => "I adfer hanes gyfan y dudalen, gadewch pob blwch ticio'n wag a phwyswch y botwm '''''Adfer'''''. I adfer rhai diwygiadau'n unig, ticiwch y blychau ar gyfer y diwygiadau yr ydych am eu hadfer, yna pwyswch ar '''''Adfer'''''. Os y pwyswch ar '''''Ailosod''''' bydd y blwch sylwadau a phob blwch ticio yn gwacáu.",
+'undeleteextrahelp' => "I adfer hanes gyfan y dudalen, gadewch bob blwch ticio'n wag a phwyso'r botwm '''''{{int:undeletebtn}}'''''. I adfer rhai diwygiadau'n unig, ticiwch y blychau ar gyfer y diwygiadau yr ydych am eu hadfer, wedyn pwyso ar '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => 'Gosodwyd $1 {{PLURAL:$1|fersiwn|fersiwn|fersiwn|fersiwn|fersiwn|fersiwn}} yn yr archif',
'undeletehistory' => "Os adferwch y dudalen, aderir yr holl ddiwygiadau hefyd yn hanes y dudalen.
Os crëwyd tudalen newydd o'r un enw ers iddi chael ei dileu, dangosir y diwygiadau cynt yn yr hanes, heb ddisodli'r dudalen bresennol.",
@@ -2161,8 +2212,8 @@ Ceir cofnod o'r tudalennau a ddilëwyd neu a adferwyd yn ddiweddar ar y [[Specia
'undelete-search-prefix' => 'Dangos tudalennau gan ddechrau gyda:',
'undelete-search-submit' => 'Chwilio',
'undelete-no-results' => 'Ni chafwyd hyd i dudalennau cyfatebol yn archif y dileuon.',
-'undelete-filename-mismatch' => "Nid oes modd dad-dileu'r golygiad ffeil â'r stamp amser $1: nid oedd enw'r ffeil yn cydweddu",
-'undelete-bad-store-key' => "Nid oes modd dad-dileu'r golygiad ffeil â'r stamp amser $1: yr oedd y ffeil ar goll cyn iddi gael ei dileu.",
+'undelete-filename-mismatch' => "Nid oes modd dad-ddileu'r golygiad ffeil â'r stamp amser $1: nid oedd enw'r ffeil yn cydweddu",
+'undelete-bad-store-key' => "Nid oes modd dad-ddileu'r golygiad ffeil â'r stamp amser $1: yr oedd y ffeil ar goll cyn iddi gael ei dileu.",
'undelete-cleanup-error' => 'Bu gwall wrth ddileu\'r ffeil archif na ddefnyddiwyd "$1".',
'undelete-missing-filearchive' => "Nid oes modd adfer archif y ffeil â'r ID $1 oherwydd nad ydyw yn y gronfa ddata.
Efallai ei bod eisoes wedi'i hadfer.",
@@ -2174,9 +2225,12 @@ $1',
'undelete-show-file-submit' => 'Ydw',
# Namespace form on various pages
-'namespace' => 'Parth:',
-'invert' => "Gwrthdroi'r dewis",
-'blanknamespace' => '(Prif)',
+'namespace' => 'Parth:',
+'invert' => "Gwrthdroi'r dewis",
+'tooltip-invert' => "Ticiwch y blwch hwn i guddio newidiadau i dudalennau yn y parth dewisedig (a'r parth cysylltiedig os yw wedi'i dicio)",
+'namespace_association' => 'Parth cysylltiedig',
+'tooltip-namespace_association' => "Ticiwch y blwch hwn i gynnwys y parth pwnc neu sgwrs sy'n gysylltiedig â'r parth a ddewiswyd",
+'blanknamespace' => '(Prif)',
# Contributions
'contributions' => "Cyfraniadau'r defnyddiwr",
@@ -2226,13 +2280,15 @@ Mae'r cofnod diweddaraf yn y lòg blocio i'w weld isod:",
'whatlinkshere-filters' => 'Hidlau',
# Block/unblock
+'autoblockid' => 'Awtoflocio #$1',
+'block' => 'Rhwystro defnyddiwr',
+'unblock' => 'Dad-rwystro defnyddiwr',
'blockip' => "Rhwystro'r defnyddiwr",
'blockip-title' => "Rhwystro'r defnyddiwr",
'blockip-legend' => "Rhwystro'r defnyddiwr",
'blockiptext' => "Defnyddiwch y ffurflen hon i rwystro cyfeiriad IP neu ddefnyddiwr rhag ysgrifennu i'r gronfa ddata.
Dylech chi ddim ond gwneud hyn er mwyn rhwystro fandaliaeth, a chan ddilyn [[{{MediaWiki:Policy-url}}|polisi'r wici]].
Rhowch reswm dros rwystro'r defnyddiwr (er enghraifft, dywedwch pa dudalen(au) a fandaleiddiwyd).",
-'ipaddress' => 'Cyfeiriad IP:',
'ipadressorusername' => 'Cyfeiriad IP neu enw defnyddiwr:',
'ipbexpiry' => 'Am gyfnod:',
'ipbreason' => 'Rheswm:',
@@ -2245,7 +2301,7 @@ Rhowch reswm dros rwystro'r defnyddiwr (er enghraifft, dywedwch pa dudalen(au) a
** Ymddygiad sy'n dychrynu neu'n aflonyddu
** Camddefnyddio nifer o gyfrifon
** Enw defnyddiwr annerbyniol",
-'ipbanononly' => 'Blocio defnyddwyr anhysbys yn unig',
+'ipb-hardblock' => "Atal defnyddwyr mewngofnodedig rhag golygu o'r cyfeiriad IP hwn",
'ipbcreateaccount' => 'Atal y gallu i greu cyfrif',
'ipbemailban' => 'Atal y defnyddiwr rhag anfon e-bost',
'ipbenableautoblock' => "Rhwystro'n awtomatig y cyfeiriad IP diwethaf a ddefnyddiodd y defnyddiwr hwn, ac unrhyw gyfeiriad IP arall y bydd yn ceisio'i ddefnyddio i olygu ohono.",
@@ -2256,12 +2312,15 @@ Rhowch reswm dros rwystro'r defnyddiwr (er enghraifft, dywedwch pa dudalen(au) a
'ipbotherreason' => 'Rheswm arall/ychwanegol:',
'ipbhidename' => "Cuddio'r enw defnyddiwr rhag ymddangos ar restri a golygiadau",
'ipbwatchuser' => 'Gwylio tudalen defnyddiwr a thudalen sgwrs y defnyddiwr hwn',
-'ipballowusertalk' => "Galluogi'r defnyddiwr hwn i olygu ei dudalen sgwrs ei hun tra bod bloc arno",
+'ipb-disableusertalk' => "Atal y defnyddiwr hwn rhag golygu ei dudalen/ei thudalen sgwrs ei hunan wrth i'r bloc fod yn weithredol",
'ipb-change-block' => "Ailflocio'r defnyddiwr hwn gyda'r gosodiadau hyn",
+'ipb-confirm' => "Cadarnhau'r rhwystr",
'badipaddress' => 'Cyfeiriad IP annilys.',
'blockipsuccesssub' => 'Llwyddodd y rhwystr',
-'blockipsuccesstext' => 'Mae cyfeiriad IP [[Special:Contributions/$1|$1]] wedi cael ei flocio.
-<br />Gwelwch [[Special:IPBlockList|restr y blociau IP]] er mwyn arolygu blociau.',
+'blockipsuccesstext' => 'Mae cyfeiriad IP [[Special:Contributions/$1|$1]] wedi cael ei flocio.<br />
+Gwelwch y [[Special:BlockList|rhestr flociau IP]] er mwyn arolygu blociau.',
+'ipb-blockingself' => "Rydych ar rwystro'ch hunan! A ydych yn siŵr eich bod chi am wneud hyn?",
+'ipb-confirmhideuser' => 'Rydych ar rwystro defnyddiwr sydd yn "guddiedig." Bydd hyn yn atal enw\'r defnyddiwr ym mhob rhestr a chofnod lòg. A ydych yn siŵr eich bod chi am wneud hyn?',
'ipb-edit-dropdown' => "Golygu'r rhesymau dros flocio",
'ipb-unblock-addr' => 'Dadflocio $1',
'ipb-unblock' => 'Dadflocio enw defnyddiwr neu gyfeiriad IP',
@@ -2271,17 +2330,23 @@ Rhowch reswm dros rwystro'r defnyddiwr (er enghraifft, dywedwch pa dudalen(au) a
'unblockiptext' => "Defnyddiwch y ffurflen isod i ail-alluogi golygiadau gan ddefnyddiwr neu o gyfeiriad IP a fu gynt wedi'i flocio.",
'ipusubmit' => "Tynnu'r rhwystr hwn",
'unblocked' => 'Mae [[User:$1|$1]] wedi cael ei ddad-flocio',
+'unblocked-range' => 'Dadrwystrir $1',
'unblocked-id' => 'Tynnwyd rhwystr $1',
+'blocklist' => 'Defnyddwyr a rwystrwyd',
'ipblocklist' => 'Defnyddwyr a rwystrwyd',
'ipblocklist-legend' => 'Dod o hyd i ddefnyddiwr a rwystrwyd',
-'ipblocklist-username' => "Enw'r defnyddiwr neu ei gyfeiriad IP:",
-'ipblocklist-sh-userblocks' => '$1 blociau parhaus ar gyfrifon',
-'ipblocklist-sh-tempblocks' => '$1 blociau dros dro',
-'ipblocklist-sh-addressblocks' => '$1 blociau IP unigol',
+'blocklist-userblocks' => 'Cuddio rhwystrau cyfrifon',
+'blocklist-tempblocks' => 'Cuddio rhwystrau dros dro',
+'blocklist-addressblocks' => 'Cuddio rhwystrau IP unigol',
+'blocklist-timestamp' => 'Stamp amser',
+'blocklist-target' => 'Targed',
+'blocklist-expiry' => 'Yn dod i ben:',
+'blocklist-by' => 'Rhwystro gweinyddion',
+'blocklist-params' => 'Paramedrau rhwystro',
+'blocklist-reason' => 'Rheswm',
'ipblocklist-submit' => 'Chwilier',
'ipblocklist-localblock' => 'Rhwystr lleol',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Rhwystr arall|Rhwystr arall|Rhwystrau eraill|Rhwystrau eraill|Rhwystrau eraill|Rhwystrau eraill}}',
-'blocklistline' => '$1, $2 wedi blocio $3 ($4)',
'infiniteblock' => 'amhenodol',
'expiringblock' => 'yn dod i ben ar $1 am $2',
'anononlyblock' => 'cyfranwyr heb gyfrif yn unig',
@@ -2304,7 +2369,7 @@ Dyma'r lòg rhwystro perthnasol:",
Dyma'r lòg cuddio perthnasol:",
'blocklogentry' => 'wedi rhwystro "[[$1]]" sy\'n dod i\'w ben ar $2 $3',
'reblock-logentry' => "wedi newid y gosodiadau rhwystro sydd ar [[$1]] sy'n dod i'w ben am $2 $3",
-'blocklogtext' => "Dyma lòg o'r holl weithredoedd blocio a datflocio. Nid yw'r cyfeiriadau IP sydd wedi cael eu blocio'n awtomatig ar y rhestr. Gweler [[Special:IPBlockList|rhestr y blociau IP]] am restr y blociau a'r gwaharddiadau sydd yn weithredol ar hyn o bryd.",
+'blocklogtext' => "Dyma lòg o'r holl weithredoedd rhwystro a dadrwystro. Nid yw'r cyfeiriadau IP sydd wedi cael ei rwystro'n awtomatig ar y rhestr. Gweler y [[Special:BlockList|rhestr rhwystrau IP]] am restr y rhwystrau a'r gwaharddiadau sydd yn weithredol ar hyn o bryd.",
'unblocklogentry' => 'wedi dadrwystro $1',
'block-log-flags-anononly' => 'defnyddwyr anhysbys yn unig',
'block-log-flags-nocreate' => 'analluogwyd creu cyfrif',
@@ -2318,9 +2383,9 @@ Dyma'r lòg cuddio perthnasol:",
'ipb_expiry_temp' => "Mae'n rhaid i rwystr ar ddefnyddiwr fod yn barhaus os am guddio'r enw.",
'ipb_hide_invalid' => "Ddim yn gallu cuddio'r cyfrif hwn; efallai bod ganddo ormod o olygiadau.",
'ipb_already_blocked' => 'Mae "$1" eisoes wedi\'i rwystro',
-'ipb-needreblock' => "== Wedi blocio'n barod ==
-Mae $1 wedi ei flocio'n barod. Ydych chi am newid y gosodiadau?",
+'ipb-needreblock' => "Mae $1 wedi' rwystro'n barod. A ydych am newid y gosodiadau?",
'ipb-otherblocks-header' => '{{PLURAL:$1|Rhwystr|Rhwystr|Rhwystrau|Rhwystrau|Rhwystrau|Rhwystrau}} eraill',
+'unblock-hideuser' => "Nid oes modd dad-rwystro'r defnyddiwr yma, oherwydd cuddir ei (h)enw defnyddiwr.",
'ipb_cant_unblock' => "Gwall: Ni chafwyd hyd i'r rhwystr a'r ID $1. Efallai ei fod e wedi cael ei ddadrwystro'n barod.",
'ipb_blocked_as_range' => "Gwall: Nid yw'r cyfeiriad IP $1 wedi'n rwystro'n uniongyrchol ac felly ni ellir ei ddadrwystro. Wedi dweud hynny, y mae'n rhan o'r amrediad $2 sydd wedi'i rwystro; gellir dadrwystro'r amrediad.",
'ip_range_invalid' => 'Ystod IP annilys.',
@@ -2357,6 +2422,7 @@ Cofiwch [[Special:UnlockDB|ddatgloi'r]] gronfa ddata pan fydd y gwaith cynnal ar
'lockfilenotwritable' => "Nid oes modd ysgrifennu i ffeil cloi'r gronfa ddata.
Er mwyn cloi'r gronfa ddata neu ei datgloi, mae'n rhaid i'r gweinydd gwe allu ysgrifennu ffeil.",
'databasenotlocked' => "Nid yw'r gronfa ddata ar glo.",
+'lockedbyandtime' => '(gan {{GENDER:$1|$1}} at $2 am $3)',
# Move page
'move-page' => 'Symud $1',
@@ -2480,7 +2546,7 @@ Yn achos yr ail ddewis, mae modd defnyddio cyswllt, e.e. [[{{#Special:Export}}/{
'allmessagesdefault' => 'Testun rhagosodedig',
'allmessagescurrent' => 'Testun cyfredol',
'allmessagestext' => "Dyma restr o'r holl negeseuon yn y parth MediaWici.
-Os ydych am gyfrannu at y gwaith o gyfieithu ar gyfer holl prosiectau MediaWiki ar y cyd, mae croeso i chi ymweld â [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] a [http://translatewiki.net translatewiki.net].",
+Os ydych am gyfrannu at y gwaith o gyfieithu ar gyfer holl prosiectau MediaWiki ar y cyd, mae croeso i chi ymweld â [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] a [//translatewiki.net translatewiki.net].",
'allmessagesnotsupportedDB' => "Nid yw '''{{ns:special}}:PobNeges''' yn cael ei gynnal gan fod '''\$wgUseDatabaseMessages''' wedi ei ddiffodd.",
'allmessages-filter-legend' => 'Hidl',
'allmessages-filter' => 'Hidlo yn ôl eu cyflwr addasu:',
@@ -2621,9 +2687,7 @@ Gellir ychwanegu rheswm dros y dadwneud yn y crynodeb.',
'tooltip-summary' => 'Rhowch grynodeb byr',
# Metadata
-'nodublincore' => "Mae metadata RDF 'Dublin Core' wedi cael ei analluogi ar y gwasanaethwr hwn.",
-'nocreativecommons' => "Mae metadata RDF 'Creative Commons' wedi'i analluogi ar y gwasanaethwr hwn.",
-'notacceptable' => "Dydy gweinydd y wici ddim yn medru rhoi'r data mewn fformat darllenadwy i'ch cleient.",
+'notacceptable' => "Dydy gweinydd y wici ddim yn medru rhoi'r data mewn fformat darllenadwy i'ch cleient.",
# Attribution
'anonymous' => 'chan {{PLURAL:$1|defnyddiwr|ddefnyddiwr|ddefnyddwyr|ddefnyddwyr|ddefnyddwyr|ddefnyddwyr}} anhysbys {{SITENAME}}',
@@ -2647,37 +2711,23 @@ Achos hyn yn fwy na thebyg yw presenoldeb cysylltiad i wefan ar y rhestr gwahard
'spam_blanking' => 'Roedd cysylltiadau i $1 gan bob golygiad, yn blancio',
# Info page
-'infosubtitle' => 'Gwybodaeth am y dudalen',
-'numedits' => "Nifer y golygiadau (i'r dudalen): $1",
-'numtalkedits' => "Nifer y golygiadau (i'r dudalen sgwrs): $1",
-'numwatchers' => 'Nifer y gwylwyr: $1',
-'numauthors' => 'Nifer y gwahanol awduron a gyfrannodd at y dudalen: $1',
-'numtalkauthors' => "Nifer yr awduron (o'r dudalen sgwrs): $1",
+'pageinfo-title' => 'Manylion "$1"',
+'pageinfo-header-edits' => 'Golygiadau',
+'pageinfo-header-watchlist' => 'Rhestr wylio',
+'pageinfo-header-views' => 'Ymweliadau',
+'pageinfo-subjectpage' => 'Tudalen',
+'pageinfo-talkpage' => 'Tudalen sgwrs',
+'pageinfo-watchers' => 'Nifer y gwylwyr',
+'pageinfo-edits' => 'Nifer y golygiadau',
+'pageinfo-authors' => 'Nifer yr awduron gwahanol',
+'pageinfo-views' => 'Nifer yr ymweliadau',
+'pageinfo-viewsperedit' => 'Ymweliadau wrth y golygiad',
# Skin names
'skinname-standard' => 'Safonol',
'skinname-nostalgia' => 'Hiraeth',
'skinname-cologneblue' => 'Glas Cwlen',
-# Math options
-'mw_math_png' => 'Arddangos symbolau mathemateg fel delwedd PNG bob amser',
-'mw_math_simple' => 'HTML os yn syml iawn, PNG fel arall',
-'mw_math_html' => 'HTML os yn bosib, PNG fel arall',
-'mw_math_source' => 'Gadewch fel côd TeX (ar gyfer porwyr testun)',
-'mw_math_modern' => 'Argymelledig ar gyfer porwyr modern',
-'mw_math_mathml' => 'MathML os yn bosib (arbrofol)',
-
-# Math errors
-'math_failure' => 'Wedi methu dosrannu',
-'math_unknown_error' => 'gwall anhysbys',
-'math_unknown_function' => 'ffwythiant anhysbys',
-'math_lexing_error' => 'gwall lecsio',
-'math_syntax_error' => 'gwall cystrawen',
-'math_image_error' => "Trosiad PNG wedi methu; gwiriwch fod latex a dvips (neu dvips + gs + convert) wedi'u gosod yn gywir cyn trosi.",
-'math_bad_tmpdir' => 'Yn methu creu cyfeiriadur mathemateg dros dro, nac ysgrifennu iddo',
-'math_bad_output' => 'Yn methu creu cyfeiriadur allbwn mathemateg nac ysgrifennu iddo',
-'math_notexvc' => 'Rhaglen texvc yn eisiau; gwelwch math/README er mwyn ei chyflunio.',
-
# Patrolling
'markaspatrolleddiff' => 'Marcio ei bod wedi derbyn ymweliad patrôl',
'markaspatrolledtext' => 'Marcio bod y dudalen wedi derbyn ymweliad patrôl',
@@ -2713,22 +2763,25 @@ $1",
'nextdiff' => 'Y fersiwn dilynol →',
# Media information
-'mediawarning' => "'''Rhybudd''': Gallasai'r math hwn o ffeil gynnwys côd maleisus.
+'mediawarning' => "'''Rhybudd''': Gallasai'r math hwn o ffeil gynnwys côd maleisus.
Mae'n bosib y bydd eich cyfrifiadur yn cael ei danseilio wrth ddefnyddio'r ffeil.",
-'imagemaxsize' => "Maint mwyaf y delweddau:<br />''(ar y tudalennau disgrifiad)''",
-'thumbsize' => 'Maint mân-lun :',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|tudalen|dudalen|dudalen|tudalen|thudalen|tudalen}}',
-'file-info' => 'maint y ffeil: $1, ffurf MIME: $2',
-'file-info-size' => '$1 × $2 picsel, maint y ffeil: $3, ffurf MIME: $4',
-'file-nohires' => '<small>Wedi ei chwyddo hyd yr eithaf.</small>',
-'svg-long-desc' => 'Ffeil SVG, maint mewn enw $1 × $2 picsel, maint y ffeil: $3',
-'show-big-image' => 'Maint llawn',
-'show-big-image-thumb' => '<small>Maint y rhagolwg: $1 × $2 picsel</small>',
-'file-info-gif-looped' => 'dolennog',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|ffrâm}}',
-'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}}',
+'imagemaxsize' => "Maint mwyaf y delweddau:<br />''(ar y tudalennau disgrifiad)''",
+'thumbsize' => 'Maint mân-lun :',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|tudalen|dudalen|dudalen|tudalen|thudalen|tudalen}}',
+'file-info' => 'maint y ffeil: $1, ffurf MIME: $2',
+'file-info-size' => '$1 × $2 picsel, maint y ffeil: $3, ffurf MIME: $4',
+'file-info-size-pages' => '$1 × $2 picsel, maint ffeil: $3, math MIME: $4, $5 {{PLURAL:$5|tudalen|tudalen}}',
+'file-nohires' => '<small>Wedi ei chwyddo hyd yr eithaf.</small>',
+'svg-long-desc' => 'Ffeil SVG, maint mewn enw $1 × $2 picsel, maint y ffeil: $3',
+'show-big-image' => 'Maint llawn',
+'show-big-image-preview' => '<small>Maint y rhagolwg: $1.</small>',
+'show-big-image-other' => '<small>Datrysiadau eraill: $1 .</small>',
+'show-big-image-size' => '$1 × $2 picsel',
+'file-info-gif-looped' => 'dolennog',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|ffrâm}}',
+'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}}',
# Special:NewFiles
'newimages' => 'Oriel y ffeiliau newydd',
@@ -2767,7 +2820,13 @@ Cuddir y meysydd eraill trwy ragosodiad.
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Lled',
@@ -2782,13 +2841,11 @@ Cuddir y meysydd eraill trwy ragosodiad.
'exif-ycbcrpositioning' => 'Lleoli Y a C',
'exif-xresolution' => 'Datrysiad llorweddol',
'exif-yresolution' => 'Datrysiad fertigol',
-'exif-resolutionunit' => 'Datrysiad uned X a Y',
'exif-stripoffsets' => "Lleoliad data'r ddelwedd",
'exif-rowsperstrip' => 'Nifer y rhesi i bob stribed',
'exif-stripbytecounts' => 'Nifer y beitiau i bob stribed cywasgedig',
'exif-jpeginterchangeformat' => 'Yr atred i JPEG SOI',
'exif-jpeginterchangeformatlength' => "Nifer beitiau'r data JPEG",
-'exif-transferfunction' => 'Swyddogaeth trosglwyddo',
'exif-whitepoint' => 'Cromatigedd y cyfeirbwynt gwyn',
'exif-primarychromaticities' => 'Cromatigedd y lliwiau cysefin',
'exif-ycbcrcoefficients' => 'Cyfernodau matrics trawsffurfio gofod lliw',
@@ -2807,7 +2864,6 @@ Cuddir y meysydd eraill trwy ragosodiad.
'exif-compressedbitsperpixel' => 'Modd cywasgu delwedd',
'exif-pixelydimension' => 'Lled y ddelwedd',
'exif-pixelxdimension' => 'Uchder y ddelwedd',
-'exif-makernote' => "Nodiadau'r gwneuthurwr",
'exif-usercomment' => "Sylwadau'r defnyddiwr",
'exif-relatedsoundfile' => 'Ffeil sain cysylltiedig',
'exif-datetimeoriginal' => 'Dyddiad ac amser y cynhyrchwyd y data',
@@ -2821,7 +2877,6 @@ Cuddir y meysydd eraill trwy ragosodiad.
'exif-exposureprogram' => 'Rhaglen Dinoethi',
'exif-spectralsensitivity' => 'Sensitifedd sbectrol',
'exif-isospeedratings' => 'Cyfraddiad cyflymder ISO',
-'exif-oecf' => 'Ffactor trawsnewid optoelectronig',
'exif-shutterspeedvalue' => 'Cyflymder APEX y caead',
'exif-aperturevalue' => 'Agorfa APEX',
'exif-brightnessvalue' => 'Disgleirdeb APEX',
@@ -2834,8 +2889,6 @@ Cuddir y meysydd eraill trwy ragosodiad.
'exif-focallength' => 'Hyd ffocal y lens',
'exif-subjectarea' => 'Maint a lleoliad y goddrych',
'exif-flashenergy' => "Ynni'r fflach",
-'exif-spatialfrequencyresponse' => 'Spatial frequency response
-Ymateb yr amledd gofodol',
'exif-focalplanexresolution' => 'Datrysiad y plân ffocysu X',
'exif-focalplaneyresolution' => 'Datrysiad y plân ffocysu Y',
'exif-focalplaneresolutionunit' => 'Uned mesur datrysiad y plân ffocysu',
@@ -2844,7 +2897,6 @@ Ymateb yr amledd gofodol',
'exif-sensingmethod' => 'Dull synhwyro',
'exif-filesource' => 'Ffynhonnell y ffeil',
'exif-scenetype' => 'Math o olygfa',
-'exif-cfapattern' => 'Patrwm CFA',
'exif-customrendered' => "Hunan-ddewis gosodiadau prosesu'r ddelwedd",
'exif-exposuremode' => 'Modd dinoethi',
'exif-whitebalance' => 'Cydbwysedd Gwyn',
@@ -2889,10 +2941,79 @@ Ymateb yr amledd gofodol',
'exif-gpsareainformation' => "Enw'r parth GPS",
'exif-gpsdatestamp' => 'Dyddiad GPS',
'exif-gpsdifferential' => 'cywiriad differol y GPS',
+'exif-jpegfilecomment' => 'Sylwadau ar y ffeil JPEG',
+'exif-keywords' => 'Allweddeiriau',
+'exif-worldregioncreated' => 'Y parth lle y tynnwyd y llun',
+'exif-countrycreated' => 'Y wlad lle y tynnwyd y llun',
+'exif-countrycodecreated' => 'Côd y wlad lle y tynnwyd y llun',
+'exif-provinceorstatecreated' => 'Sir neu dalaith lle y tynnwyd y llun',
+'exif-citycreated' => 'Y dref lle y tynnwyd y llun',
+'exif-sublocationcreated' => 'Y fan yn y dref lle y tynnwyd y llun',
+'exif-worldregiondest' => 'Y parth a ddangosir',
+'exif-countrydest' => 'Y wlad a ddangosir',
+'exif-countrycodedest' => 'Côd y wlad a ddangosir',
+'exif-provinceorstatedest' => 'Y sir neu dalaith a ddangosir',
+'exif-citydest' => 'Y dref a ddangosir',
+'exif-sublocationdest' => 'Y fan yn y dref a ddangosir',
'exif-objectname' => 'Teitl byr',
+'exif-specialinstructions' => 'Cyfarwyddiadau arbennig',
+'exif-headline' => 'Egluryn byr',
+'exif-credit' => 'Cydnabod/Y darparwr',
+'exif-source' => 'Ffynhonnell',
+'exif-editstatus' => 'Statws golygyddol y ddelwedd',
+'exif-urgency' => 'Brys',
+'exif-fixtureidentifier' => 'Y man y defnyddir y llun yn gyson',
+'exif-locationdest' => 'Y man a ddarlunir',
+'exif-locationdestcode' => 'Côd y man a ddarlunir',
+'exif-objectcycle' => "Adeg y dydd y bwriedir i'r cyfrwng gael ei ddefnyddio",
+'exif-contact' => 'Gwybodaeth cysylltu',
+'exif-writer' => 'Awdur yr egluryn',
+'exif-languagecode' => 'Iaith',
+'exif-iimversion' => 'Fersiwn IIM',
+'exif-iimcategory' => 'Categori',
+'exif-iimsupplementalcategory' => 'Categorïau atodol',
+'exif-datetimeexpires' => "Peidier â'i ddefnyddio ar ôl",
+'exif-datetimereleased' => 'Rhyddhawyd ar',
+'exif-originaltransmissionref' => 'Côd y man lle y trosglwyddwyd yn wreiddiol',
+'exif-identifier' => 'Dynodydd',
+'exif-lens' => 'Y lens a ddefnyddiwyd',
+'exif-serialnumber' => 'Rhif cyfresol y camera',
+'exif-cameraownername' => 'Perchennog y camera',
+'exif-label' => 'Label',
+'exif-datetimemetadata' => 'Y dyddiad y newidiwyd y metadata ddiwethaf',
+'exif-nickname' => 'Enw byr y ddelwedd',
+'exif-rating' => 'Sgôr (allan o 5)',
+'exif-rightscertificate' => 'Tystysgrif rheoli hawlfraint',
+'exif-copyrighted' => 'Statws yr hawlfraint:',
+'exif-copyrightowner' => 'Perchennog yr hawlfraint',
+'exif-usageterms' => 'Termau defnyddio',
+'exif-webstatement' => 'Datganiad hawlfraint ar-lein',
+'exif-originaldocumentid' => 'ID unigryw y ddogfen wreiddiol',
+'exif-licenseurl' => 'URL y drwydded hawlfraint',
+'exif-morepermissionsurl' => 'Gwybodaeth trwyddedu amgen',
+'exif-attributionurl' => "Wrth ail-ddefnyddio'r gwaith yma, darparwch ddolen at",
+'exif-preferredattributionname' => "Wrth ail-ddefnyddio'r gwaith yma, cydnabyddwch",
+'exif-pngfilecomment' => 'Sylwadau ar y ffeil PNG',
+'exif-disclaimer' => 'Ymwadiad',
+'exif-contentwarning' => 'Rhybudd am y cynnwys',
+'exif-giffilecomment' => 'Sylwadau ar y ffeil GIF',
+'exif-intellectualgenre' => 'Math yr eitem',
+'exif-subjectnewscode' => 'Cod y pwnc',
+'exif-scenecode' => 'Cod golygfa IPTC',
+'exif-event' => 'Y digwyddiad a ddarlunnir',
+'exif-organisationinimage' => 'Y sefydliad a ddarlunnir',
+'exif-personinimage' => 'Y person a ddarlunnir',
+'exif-originalimageheight' => 'Uchder y ddelwedd cyn iddi gael ei thocio',
+'exif-originalimagewidth' => 'Lled y ddelwedd cyn iddi gael ei thocio',
# EXIF attributes
'exif-compression-1' => 'Heb ei gywasgu',
+'exif-compression-2' => 'Amgodio hyd rhediad Huffman Addasedig 1-Dimensiwn Grŵp 3 y CCITT',
+'exif-compression-3' => 'Amgodio ffacs Grŵp 3 CCITT',
+'exif-compression-4' => 'Amgodio ffacs Grŵp 4 CCITT',
+
+'exif-copyrighted-true' => 'Hawlfraint',
+'exif-copyrighted-false' => 'Parth y cyhoedd',
'exif-unknowndate' => 'Dyddiad anhysbys',
@@ -2908,6 +3029,8 @@ Ymateb yr amledd gofodol',
'exif-planarconfiguration-1' => 'fformat talpiog',
'exif-planarconfiguration-2' => 'fformat planar',
+'exif-colorspace-65535' => 'Heb ei raddnodi',
+
'exif-componentsconfiguration-0' => "ddim i'w gael",
'exif-exposureprogram-0' => 'Heb ei gosod',
@@ -3021,6 +3144,10 @@ Ymateb yr amledd gofodol',
'exif-gpslongitude-e' => "Hydred i'r Dwyrain",
'exif-gpslongitude-w' => "Hydred i'r Gorllewin",
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|medr}} uwchlaw lefel y môr',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|medr}} islaw lefel y môr',
+
'exif-gpsstatus-a' => "Wrthi'n mesur",
'exif-gpsstatus-v' => 'Y gallu i ryngweithredu o ran mesur',
@@ -3032,21 +3159,73 @@ Ymateb yr amledd gofodol',
'exif-gpsspeed-m' => 'Milltir yr awr',
'exif-gpsspeed-n' => 'Notiau',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Cilomedrau',
+'exif-gpsdestdistance-m' => 'Milltiroedd',
+'exif-gpsdestdistance-n' => 'Milltiroedd môr',
+
+'exif-gpsdop-excellent' => 'Rhagorol ($1)',
+'exif-gpsdop-good' => 'Da ($1)',
+'exif-gpsdop-moderate' => 'Cymedrol ($1)',
+'exif-gpsdop-fair' => 'Gweddol ($1)',
+'exif-gpsdop-poor' => 'Gwael ($1)',
+
+'exif-objectcycle-a' => "Y bore'n unig",
+'exif-objectcycle-p' => "Gyda'r nos yn unig",
+'exif-objectcycle-b' => 'Bore a hwyr',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Gwir gyfeiriad',
'exif-gpsdirection-m' => 'Cyfeiriad magnetig',
+'exif-ycbcrpositioning-1' => 'Canoledig',
+'exif-ycbcrpositioning-2' => 'Cyd-leoledig',
+
+'exif-dc-contributor' => 'Cyfranwyr',
+'exif-dc-coverage' => 'Cwmpas y cyfrwng o ran lle neu amser',
+'exif-dc-date' => 'Dyddiad',
+'exif-dc-publisher' => 'Cyhoeddwr',
+'exif-dc-relation' => 'Cyfryngau cysylltiedig',
+'exif-dc-rights' => 'Hawliau',
+'exif-dc-source' => 'Ffynhonnell y cyfrwng',
+'exif-dc-type' => 'Math y cyfrwng',
+
+'exif-rating-rejected' => 'Gwrthodwyd',
+
+'exif-isospeedratings-overflow' => 'Mwy na 65535',
+
+'exif-iimcategory-ace' => 'Celfyddyd, diwylliant ac adloniant',
+'exif-iimcategory-clj' => "Troseddu a'r gyfraith",
+'exif-iimcategory-dis' => 'Trychinebau a damweiniau',
+'exif-iimcategory-fin' => 'Yr economi a busnes',
+'exif-iimcategory-edu' => 'Addysg',
+'exif-iimcategory-evn' => 'Yr Amgylchedd',
+'exif-iimcategory-hth' => 'Iechyd',
+'exif-iimcategory-hum' => 'O ddiddordeb dynol',
+'exif-iimcategory-lab' => 'Gwaith',
+'exif-iimcategory-lif' => 'Ffordd o fyw a hamdden',
+'exif-iimcategory-pol' => 'Gwleidyddiaeth',
+'exif-iimcategory-rel' => 'Crefydd a chred',
+'exif-iimcategory-sci' => 'Gwyddoniaeth a thechnoleg',
+'exif-iimcategory-soi' => 'Cymdeithas',
+'exif-iimcategory-spo' => 'Chwaraeon',
+'exif-iimcategory-war' => 'Rhyfel, gwrthdaro ac aflonyddwch',
+'exif-iimcategory-wea' => 'Tywydd',
+
+'exif-urgency-normal' => 'Cyffredin ($1)',
+'exif-urgency-low' => 'Isel ($1)',
+'exif-urgency-high' => 'Uchel ($1)',
+'exif-urgency-other' => 'Blaenoriaeth yn ôl y defnyddiwr ($1)',
+
# External editor support
'edit-externally' => 'Golygwch y ffeil gyda rhaglen allanol',
-'edit-externally-help' => '(Gwelwch y [http://www.mediawiki.org/wiki/Manual:External_editors cyfarwyddiadau gosod] am fwy o wybodaeth)',
+'edit-externally-help' => '(Gwelwch y [//www.mediawiki.org/wiki/Manual:External_editors cyfarwyddiadau gosod] am fwy o wybodaeth)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'holl',
-'imagelistall' => 'holl',
-'watchlistall2' => 'holl',
-'namespacesall' => 'pob un',
-'monthsall' => 'pob mis',
-'limitall' => 'oll',
+'watchlistall2' => 'holl',
+'namespacesall' => 'pob un',
+'monthsall' => 'pob mis',
+'limitall' => 'oll',
# E-mail address confirmation
'confirmemail' => "Cadarnhau'r cyfeiriad e-bost",
@@ -3116,17 +3295,24 @@ $1",
'trackbackdeleteok' => 'Dilëwyd y cyswllt ôlrhain yn llwyddiannus.',
# Delete conflict
-'deletedwhileediting' => "'''Rhybudd''': Dilëwyd y dudalen wedi i chi ddechrau ei golygu!",
-'confirmrecreate' => "Mae'r defnyddiwr [[User:$1|$1]] ([[User talk:$1|Sgwrs]]) wedi dileu'r dudalen hon ers i chi ddechrau ei golygu. Y rheswm a roddwyd yw:
+'deletedwhileediting' => "'''Rhybudd''': Dilëwyd y dudalen wedi i chi ddechrau ei golygu!",
+'confirmrecreate' => "Mae'r defnyddiwr [[User:$1|$1]] ([[User talk:$1|Sgwrs]]) wedi dileu'r dudalen hon ers i chi ddechrau ei golygu. Y rheswm a roddwyd yw:
: ''$2''
Cadarnhewch eich bod chi wir am ail-greu'r dudalen.",
-'recreate' => 'Ail-greu',
+'confirmrecreate-noreason' => "Dileodd y defnyddiwr [[User:$1|$1]] ([[User talk:$1|sgwrs]]) y dudalen hon wedi i chi ddechrau ei golygu. Cadarnhewch eich bod chi wir am ail-greu'r dudalen hon.",
+'recreate' => 'Ail-greu',
# action=purge
'confirm_purge_button' => 'Iawn',
'confirm-purge-top' => "Clirio'r dudalen o'r storfa?",
'confirm-purge-bottom' => "Mae carthu tudalen yn clirio'r celc ac yn gorfodi'r fersiwn diweddaraf i ymddangos.",
+# action=watch/unwatch
+'confirm-watch-button' => 'Iawn',
+'confirm-watch-top' => 'Ychwaneger y dudalen hon at eich rhestr wylio?',
+'confirm-unwatch-button' => 'Iawn',
+'confirm-unwatch-top' => 'Tynner y dudalen hon oddi ar eich rhestr wylio?',
+
# Multipage image navigation
'imgmultipageprev' => "↠i'r dudalen gynt",
'imgmultipagenext' => "i'r dudalen nesaf →",
@@ -3168,14 +3354,14 @@ Cadarnhewch eich bod chi wir am ail-greu'r dudalen.",
'watchlistedit-normal-legend' => 'Tynnu tudalennau oddi ar y rhestr wylio',
'watchlistedit-normal-explain' => 'Rhestrir y teitlau ar eich rhestr wylio isod.
I dynnu teitl oddi ar y rhestr, ticiwch y blwch ar ei gyfer, yna cliciwch "{{int:Watchlistedit-normal-submit}}".
-Gallwch hefyd ddewis golygu\'r rhestr wylio ar ei [[Special:Watchlist/raw|ffurf syml]].',
+Gallwch hefyd ddewis golygu\'r rhestr wylio ar ei [[Special:EditWatchlist/raw|ffurf syml]].',
'watchlistedit-normal-submit' => "Tynnu'r tudalennau",
'watchlistedit-normal-done' => 'Tynnwyd {{PLURAL:$1|$1 tudalen|$1 dudalen|$1 dudalen|$1 tudalen|$1 thudalen|$1 tudalen}} oddi ar eich rhestr wylio:',
'watchlistedit-raw-title' => 'Golygu ffeil y rhestr wylio',
'watchlistedit-raw-legend' => 'Golygu ffeil y rhestr wylio',
'watchlistedit-raw-explain' => 'Rhestrir y teitlau ar eich rhestr wylio isod. Gellir newid y rhestr drwy ychwanegu neu dynnu teitlau; gyda llinell yr un i bob teitl.
Pan yn barod, pwyswch ar "{{int:Watchlistedit-raw-submit}}".
-Gallwch hefyd [[Special:Watchlist/edit|ddefnyddio\'r rhestr arferol]].',
+Gallwch hefyd [[Special:EditWatchlist|ddefnyddio\'r rhestr arferol]].',
'watchlistedit-raw-titles' => 'Teitlau:',
'watchlistedit-raw-submit' => "Diweddaru'r rhestr wylio",
'watchlistedit-raw-done' => 'Diweddarwyd eich rhestr wylio.',
@@ -3192,33 +3378,33 @@ Gallwch hefyd [[Special:Watchlist/edit|ddefnyddio\'r rhestr arferol]].',
'duplicate-defaultsort' => 'Rhybudd: Mae\'r allwedd trefnu diofyn "$2" yn gwrthwneud yr allwedd trefnu diofyn blaenorol "$1".',
# Special:Version
-'version' => 'Fersiwn',
-'version-extensions' => 'Estyniadau gosodedig',
-'version-specialpages' => 'Tudalennau arbennig',
-'version-parserhooks' => 'Bachau dosrannydd',
-'version-variables' => 'Newidynnau',
-'version-skins' => 'Gweddau',
-'version-other' => 'Arall',
-'version-mediahandlers' => 'Trinyddion cyfryngau',
-'version-hooks' => 'Bachau',
-'version-extension-functions' => 'Ffwythiannau estyn',
-'version-parser-extensiontags' => 'Tagiau estyn dosrannydd',
-'version-parser-function-hooks' => 'Bachau ffwythiant dosrannu',
-'version-skin-extension-functions' => 'Ffwythiannau estyn y wedd',
-'version-hook-name' => "Enw'r bachyn",
-'version-hook-subscribedby' => 'Tanysgrifwyd gan',
-'version-version' => '(Fersiwn $1)',
-'version-license' => 'Trwydded',
-'version-poweredby-credits' => "Mae'r wici hwn wedi'i nerthu gan '''[http://www.mediawiki.org/ MediaWiki]''', hawlfraint © 2001 - $1 $2.",
-'version-poweredby-others' => 'eraill',
-'version-license-info' => "Meddalwedd rhydd yw MediaWiki; gallwch ei ddefnyddio a'i addasu yn ôl termau'r GNU General Public License a gyhoeddir gan Free Software Foundation; naill ai fersiwn 2 o'r Drwydded, neu unrhyw fersiwn diweddarach o'ch dewis.
+'version' => 'Fersiwn',
+'version-extensions' => 'Estyniadau gosodedig',
+'version-specialpages' => 'Tudalennau arbennig',
+'version-parserhooks' => 'Bachau dosrannydd',
+'version-variables' => 'Newidynnau',
+'version-antispam' => 'Atal sbam',
+'version-skins' => 'Gweddau',
+'version-other' => 'Arall',
+'version-mediahandlers' => 'Trinyddion cyfryngau',
+'version-hooks' => 'Bachau',
+'version-extension-functions' => 'Ffwythiannau estyn',
+'version-parser-extensiontags' => 'Tagiau estyn dosrannydd',
+'version-parser-function-hooks' => 'Bachau ffwythiant dosrannu',
+'version-hook-name' => "Enw'r bachyn",
+'version-hook-subscribedby' => 'Tanysgrifwyd gan',
+'version-version' => '(Fersiwn $1)',
+'version-license' => 'Trwydded',
+'version-poweredby-credits' => "Mae'r wici hwn wedi'i nerthu gan '''[//www.mediawiki.org/ MediaWiki]''', hawlfraint © 2001 - $1 $2.",
+'version-poweredby-others' => 'eraill',
+'version-license-info' => "Meddalwedd rhydd yw MediaWiki; gallwch ei ddefnyddio a'i addasu yn ôl termau'r GNU General Public License a gyhoeddir gan Free Software Foundation; naill ai fersiwn 2 o'r Drwydded, neu unrhyw fersiwn diweddarach o'ch dewis.
Cyhoeddir MediaWiki yn y gobaith y bydd o ddefnydd, ond HEB UNRHYW WARANT; heb hyd yn oed gwarant ymhlyg o FARCHNADWYEDD nag o FOD YN ADDAS AT RYW BWRPAS ARBENNIG. Gweler y GNU General Public License am fanylion pellach.
-Dylech fod wedi derbyn [{{SERVER}}{{SCRIPTPATH}}/COPYING gopi o GNU General Public License] gyda'r rhaglen hon; os nad ydych, ysgrifennwch at Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, neu [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html gallwch ei ddarllen ar y we].",
-'version-software' => 'Meddalwedd gosodedig',
-'version-software-product' => 'Cynnyrch',
-'version-software-version' => 'Fersiwn',
+Dylech fod wedi derbyn [{{SERVER}}{{SCRIPTPATH}}/COPYING gopi o GNU General Public License] gyda'r rhaglen hon; os nad ydych, ysgrifennwch at Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, neu [//www.gnu.org/licenses/old-licenses/gpl-2.0.html gallwch ei ddarllen ar y we].",
+'version-software' => 'Meddalwedd gosodedig',
+'version-software-product' => 'Cynnyrch',
+'version-software-version' => 'Fersiwn',
# Special:FilePath
'filepath' => 'Llwybr y ffeil',
@@ -3228,22 +3414,22 @@ Dylech fod wedi derbyn [{{SERVER}}{{SCRIPTPATH}}/COPYING gopi o GNU General Publ
Dangosir delweddau ar eu maint llawn, dechreuir ffeiliau o fathau eraill yn uniongyrchol gan y rhaglen gysylltiedig.",
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Chwilio am ffeiliau dyblyg',
-'fileduplicatesearch-summary' => 'Chwilier am ffeiliau dyblyg ar sail ei werth stwnsh.
-
-Rhowch enw\'r ffeil heb y rhagddodiad "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Chwilio am ddyblygeb',
-'fileduplicatesearch-filename' => "Enw'r ffeil:",
-'fileduplicatesearch-submit' => 'Chwilier',
-'fileduplicatesearch-info' => '$1 × $2 picsel<br />Maint y ffeil: $3<br />math MIME: $4',
-'fileduplicatesearch-result-1' => 'Nid oes yr un ffeil i gael sydd yn union yr un fath â\'r ffeil "$1".',
-'fileduplicatesearch-result-n' => '{{PLURAL:$2|Nid oes yr un ffeil|Mae $2 ffeil|Mae $2 ffeil|Mae $2 ffeil|Mae $2 ffeil|Mae $2 ffeil|}} i gael sydd yn union yr un fath â\'r ffeil "$1".',
+'fileduplicatesearch' => 'Chwilio am ffeiliau dyblyg',
+'fileduplicatesearch-summary' => 'Chwilier am ffeiliau dyblyg ar sail ei werth stwnsh.',
+'fileduplicatesearch-legend' => 'Chwilio am ddyblygeb',
+'fileduplicatesearch-filename' => "Enw'r ffeil:",
+'fileduplicatesearch-submit' => 'Chwilier',
+'fileduplicatesearch-info' => '$1 × $2 picsel<br />Maint y ffeil: $3<br />math MIME: $4',
+'fileduplicatesearch-result-1' => 'Nid oes yr un ffeil i gael sydd yn union yr un fath â\'r ffeil "$1".',
+'fileduplicatesearch-result-n' => '{{PLURAL:$2|Nid oes yr un ffeil|Mae $2 ffeil|Mae $2 ffeil|Mae $2 ffeil|Mae $2 ffeil|Mae $2 ffeil|}} i gael sydd yn union yr un fath â\'r ffeil "$1".',
+'fileduplicatesearch-noresults' => 'Ni ddaethpwyd o hyd i ffeil o\'r enw "$1".',
# Special:SpecialPages
'specialpages' => 'Tudalennau arbennig',
'specialpages-note' => '----
* Tudalennau arbennig ar gael i bawb.
-* <strong class="mw-specialpagerestricted">Tudalennau arbennig cyfyngedig.</strong>',
+* <span class="mw-specialpagerestricted">Tudalennau arbennig cyfyngedig.</span>
+* <span class="mw-specialpagecached">Tudalennau arbennig wedi eu cynhyrchu o\'r celc (gallant fod heb eu harfer rhagor).</span>',
'specialpages-group-maintenance' => 'Adroddiadau cynnal a chadw',
'specialpages-group-other' => 'Eraill',
'specialpages-group-login' => 'Mewngofnodi / creu cyfrif',
diff --git a/languages/messages/MessagesDa.php b/languages/messages/MessagesDa.php
index ef2c9bbf..4c107519 100644
--- a/languages/messages/MessagesDa.php
+++ b/languages/messages/MessagesDa.php
@@ -79,90 +79,93 @@ $separatorTransformTable = array( ',' => '.', '.' => ',' );
$linkTrail = '/^([a-zæøå]+)(.*)$/sDu';
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Dobbelte_omdirigeringer' ),
+ 'Activeusers' => array( 'Aktive_Brugere' ),
+ 'Allmessages' => array( 'MediaWiki-systemmeddelelser' ),
+ 'Allpages' => array( 'Alle_sider' ),
+ 'Ancientpages' => array( 'Ældste_sider' ),
+ 'Blankpage' => array( 'Tom_Side' ),
+ 'Block' => array( 'Bloker_adresse' ),
+ 'Blockme' => array( 'Proxyspærring' ),
+ 'Booksources' => array( 'ISBN-søgning' ),
'BrokenRedirects' => array( 'Defekte_omdirigeringer' ),
- 'Disambiguations' => array( 'Flertydige_sider' ),
- 'Userlogin' => array( 'Log_på', 'Brugerlogind' ),
- 'Userlogout' => array( 'Log_ud', 'Brugerlogud' ),
+ 'Categories' => array( 'Kategorier' ),
+ 'ChangePassword' => array( 'Nulstil_kodeord' ),
+ 'ComparePages' => array( 'Sammenlign_Sider' ),
+ 'Confirmemail' => array( 'Bekræft_e-mail' ),
+ 'Contributions' => array( 'Bidrag' ),
'CreateAccount' => array( 'Opret_konto' ),
- 'Preferences' => array( 'Indstillinger' ),
- 'Watchlist' => array( 'Overvågningsliste' ),
- 'Recentchanges' => array( 'Seneste_ændringer' ),
+ 'Deadendpages' => array( 'Blindgydesider' ),
+ 'DeletedContributions' => array( 'Slettede_bidrag' ),
+ 'Disambiguations' => array( 'Flertydige_sider' ),
+ 'DoubleRedirects' => array( 'Dobbelte_omdirigeringer' ),
+ 'Emailuser' => array( 'E-mail' ),
+ 'Export' => array( 'Eksporter' ),
+ 'Fewestrevisions' => array( 'Sider_med_færrest_redigeringer' ),
+ 'FileDuplicateSearch' => array( 'Filduplikatsøgning' ),
+ 'Filepath' => array( 'Filsti' ),
+ 'Import' => array( 'Importere' ),
+ 'Invalidateemail' => array( 'Ugyldiggør_e-mail' ),
+ 'BlockList' => array( 'Blokerede_adresser' ),
+ 'LinkSearch' => array( 'Link_Søgning' ),
+ 'Listadmins' => array( 'Administratorer' ),
+ 'Listbots' => array( 'Robotter' ),
'Listfiles' => array( 'Filer', 'Filliste' ),
- 'Newimages' => array( 'Nye_filer' ),
- 'Listusers' => array( 'Brugerliste', 'Bruger' ),
'Listgrouprights' => array( 'Grupperettighedsliste' ),
- 'Statistics' => array( 'Statistik' ),
- 'Randompage' => array( 'Tilfældig_side' ),
+ 'Listredirects' => array( 'Henvisninger' ),
+ 'Listusers' => array( 'Brugerliste', 'Bruger' ),
+ 'Lockdb' => array( 'Databasespærring' ),
+ 'Log' => array( 'Loglister' ),
'Lonelypages' => array( 'Forældreløse_sider' ),
- 'Uncategorizedpages' => array( 'Ukategoriserede_sider' ),
- 'Uncategorizedcategories' => array( 'Ukategoriserede_kategorier' ),
- 'Uncategorizedimages' => array( 'Ukategoriserede_filer' ),
- 'Uncategorizedtemplates' => array( 'Ukategoriserede_skabeloner' ),
- 'Unusedcategories' => array( 'Ubrugte_kategorier' ),
- 'Unusedimages' => array( 'Ubrugte_filer' ),
- 'Wantedpages' => array( 'Ønskede_sider' ),
- 'Wantedcategories' => array( 'Ønskede_kategorier' ),
+ 'Longpages' => array( 'Længste_sider' ),
+ 'MergeHistory' => array( 'Sammenfletning_af_historikker' ),
+ 'MIMEsearch' => array( 'MIME-type-søgning' ),
+ 'Mostcategories' => array( 'Sider_med_flest_kategorier' ),
+ 'Mostimages' => array( 'Mest_brugte_filer' ),
'Mostlinked' => array( 'Sider_med_flest_henvisninger' ),
'Mostlinkedcategories' => array( 'Kategorier_med_flest_sider' ),
'Mostlinkedtemplates' => array( 'Hyppigst_brugte_skabeloner' ),
- 'Mostimages' => array( 'Mest_brugte_filer' ),
- 'Mostcategories' => array( 'Sider_med_flest_kategorier' ),
'Mostrevisions' => array( 'Sider_med_flest_redigeringer' ),
- 'Fewestrevisions' => array( 'Sider_med_færrest_redigeringer' ),
- 'Shortpages' => array( 'Korteste_sider' ),
- 'Longpages' => array( 'Længste_sider' ),
+ 'Movepage' => array( 'Flyt_side' ),
+ 'Mycontributions' => array( 'Mine_bidrag' ),
+ 'Mypage' => array( 'Min_brugerside' ),
+ 'Mytalk' => array( 'Min_diskussionsside' ),
+ 'Newimages' => array( 'Nye_filer' ),
'Newpages' => array( 'Nye_sider' ),
- 'Ancientpages' => array( 'Ældste_sider' ),
- 'Deadendpages' => array( 'Blindgydesider' ),
+ 'Popularpages' => array( 'Populære_sider' ),
+ 'Preferences' => array( 'Indstillinger' ),
+ 'Prefixindex' => array( 'Præfiksindeks' ),
'Protectedpages' => array( 'Beskyttede_sider' ),
'Protectedtitles' => array( 'Beskyttede_titler' ),
- 'Allpages' => array( 'Alle_sider' ),
- 'Prefixindex' => array( 'Præfiksindeks' ),
- 'Ipblocklist' => array( 'Blokerede_adresser' ),
- 'Specialpages' => array( 'Specialsider' ),
- 'Contributions' => array( 'Bidrag' ),
- 'Emailuser' => array( 'E-mail' ),
- 'Confirmemail' => array( 'Bekræft_e-mail' ),
- 'Whatlinkshere' => array( 'Hvad_linker_hertil' ),
+ 'Randompage' => array( 'Tilfældig_side' ),
+ 'Randomredirect' => array( 'Tilfældig_henvisning' ),
+ 'Recentchanges' => array( 'Seneste_ændringer' ),
'Recentchangeslinked' => array( 'Relaterede_ændringer' ),
- 'Movepage' => array( 'Flyt_side' ),
- 'Blockme' => array( 'Proxyspærring' ),
- 'Booksources' => array( 'ISBN-søgning' ),
- 'Categories' => array( 'Kategorier' ),
- 'Export' => array( 'Eksporter' ),
- 'Allmessages' => array( 'MediaWiki-systemmeddelelser' ),
- 'Log' => array( 'Loglister' ),
- 'Blockip' => array( 'Bloker_adresse' ),
+ 'Revisiondelete' => array( 'Versionssletning' ),
+ 'RevisionMove' => array( 'Versionsflytning' ),
+ 'Search' => array( 'Søgning' ),
+ 'Shortpages' => array( 'Korteste_sider' ),
+ 'Specialpages' => array( 'Specialsider' ),
+ 'Statistics' => array( 'Statistik' ),
+ 'Uncategorizedcategories' => array( 'Ukategoriserede_kategorier' ),
+ 'Uncategorizedimages' => array( 'Ukategoriserede_filer' ),
+ 'Uncategorizedpages' => array( 'Ukategoriserede_sider' ),
+ 'Uncategorizedtemplates' => array( 'Ukategoriserede_skabeloner' ),
'Undelete' => array( 'Gendannelse' ),
- 'Import' => array( 'Importere' ),
- 'Lockdb' => array( 'Databasespærring' ),
'Unlockdb' => array( 'Databaseåbning' ),
- 'Userrights' => array( 'Brugerrettigheder' ),
- 'MIMEsearch' => array( 'MIME-type-søgning' ),
- 'FileDuplicateSearch' => array( 'Filduplikatsøgning' ),
- 'Unwatchedpages' => array( 'Uovervågede_sider' ),
- 'Listredirects' => array( 'Henvisninger' ),
- 'Revisiondelete' => array( 'Versionssletning' ),
+ 'Unusedcategories' => array( 'Ubrugte_kategorier' ),
+ 'Unusedimages' => array( 'Ubrugte_filer' ),
'Unusedtemplates' => array( 'Ubrugte_skabeloner' ),
- 'Randomredirect' => array( 'Tilfældig_henvisning' ),
- 'Mypage' => array( 'Min_brugerside' ),
- 'Mytalk' => array( 'Min_diskussionsside' ),
- 'Mycontributions' => array( 'Mine_bidrag' ),
- 'Listadmins' => array( 'Administratorer' ),
- 'Listbots' => array( 'Robotter' ),
- 'Popularpages' => array( 'Populære_sider' ),
- 'Search' => array( 'Søgning' ),
- 'Resetpass' => array( 'Nulstil_kodeord' ),
+ 'Unwatchedpages' => array( 'Uovervågede_sider' ),
+ 'Userlogin' => array( 'Log_på', 'Brugerlogind' ),
+ 'Userlogout' => array( 'Log_ud', 'Brugerlogud' ),
+ 'Userrights' => array( 'Brugerrettigheder' ),
+ 'Wantedcategories' => array( 'Ønskede_kategorier' ),
+ 'Wantedfiles' => array( 'Ønskede_filer' ),
+ 'Wantedpages' => array( 'Ønskede_sider' ),
+ 'Wantedtemplates' => array( 'Ønskede_skabeloner' ),
+ 'Watchlist' => array( 'Overvågningsliste' ),
+ 'Whatlinkshere' => array( 'Hvad_linker_hertil' ),
'Withoutinterwiki' => array( 'Manglende_interwikilinks' ),
- 'MergeHistory' => array( 'Sammenfletning_af_historikker' ),
- 'Filepath' => array( 'Filsti' ),
- 'Invalidateemail' => array( 'Ugyldiggør_e-mail' ),
- 'Blankpage' => array( 'Tom_Side' ),
- 'LinkSearch' => array( 'Link_Søgning' ),
- 'DeletedContributions' => array( 'Slettede_bidrag' ),
- 'Activeusers' => array( 'Aktive_Brugere' ),
- 'ComparePages' => array( 'Sammenlign_Sider' ),
);
$dateFormats = array(
@@ -211,8 +214,8 @@ $messages = array(
'tog-shownumberswatching' => 'Vis antal brugere, der overvåger',
'tog-oldsig' => 'Nuværende signatur:',
'tog-fancysig' => 'Behandl signatur som wikitekst uden automatisk henvisning',
-'tog-externaleditor' => 'Brug ekstern editor automatisk (kun for rutinerede brugere, da det kræver særlige indstillinger på din computer. [http://www.mediawiki.org/wiki/Manual:External_editors Flere oplysninger.])',
-'tog-externaldiff' => 'Brug ekstern forskelsvisning automatisk (kun for rutinerede brugere, da det kræver særlige indstillinger på din computer. [http://www.mediawiki.org/wiki/Manual:External_editors Flere oplysninger.])',
+'tog-externaleditor' => 'Brug ekstern editor automatisk (kun for rutinerede brugere, da det kræver særlige indstillinger på din computer. [//www.mediawiki.org/wiki/Manual:External_editors Flere oplysninger.])',
+'tog-externaldiff' => 'Brug ekstern forskelsvisning automatisk (kun for rutinerede brugere, da det kræver særlige indstillinger på din computer. [//www.mediawiki.org/wiki/Manual:External_editors Flere oplysninger.])',
'tog-showjumplinks' => 'Vis tilgængeligheds-henvisninger',
'tog-uselivepreview' => 'Brug automatisk forhåndsvisning (JavaScript) (eksperimentel)',
'tog-forceeditsummary' => 'Advar mig hvis jeg ikke udfylder beskrivelsesfeltet',
@@ -308,9 +311,7 @@ $messages = array(
'listingcontinuesabbrev' => ' forts.',
'index-category' => 'Indekserede sider',
'noindex-category' => 'Ikke-indekserede sider',
-
-'mainpagetext' => "'''MediaWiki er nu installeret.'''",
-'mainpagedocfooter' => 'Se vores engelsksprogede [http://meta.wikimedia.org/wiki/MediaWiki_localisation dokumentation om tilpasning af brugergrænsefladen] og [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide brugervejledningen] for oplysninger om opsætning og anvendelse.',
+'broken-file-category' => 'Sider med brudte filhenvisninger',
'about' => 'Om',
'article' => 'Artikel',
@@ -362,10 +363,10 @@ $messages = array(
'history' => 'Historik',
'history_short' => 'Historik',
'updatedmarker' => '(ændret)',
-'info_short' => 'Information',
'printableversion' => 'Udskriftsvenlig udgave',
'permalink' => 'Permanent henvisning',
'print' => 'Udskriv',
+'view' => 'Vis',
'edit' => 'Redigér',
'create' => 'opret',
'editthispage' => 'Redigér side',
@@ -373,6 +374,7 @@ $messages = array(
'delete' => 'Slet',
'deletethispage' => 'Slet side',
'undelete_short' => 'Fortryd sletning af {{PLURAL:$1|$1 version|$1 versioner}}',
+'viewdeleted_short' => 'Vis {{PLURAL:$1|en slettet redigering|$1 slettede redigeringer}}',
'protect' => 'Beskyt',
'protect_change' => 'ændr',
'protectthispage' => 'Beskyt side',
@@ -456,6 +458,8 @@ $1',
'toc' => 'Indholdsfortegnelse',
'showtoc' => 'vis',
'hidetoc' => 'skjul',
+'collapsible-collapse' => 'Fold sammen',
+'collapsible-expand' => 'Fold ud',
'thisisdeleted' => 'Se eller gendan $1?',
'viewdeleted' => 'Vis $1?',
'restorelink' => '{{PLURAL:$1|en slettet ændring|$1 slettede ændringer}}',
@@ -467,6 +471,8 @@ $1',
'page-rss-feed' => '"$1" RSS-feed',
'page-atom-feed' => '"$1" Atom-feed',
'red-link-title' => '$1 (siden er ikke skrevet endnu)',
+'sort-descending' => 'Sorter aftagende',
+'sort-ascending' => 'Sorter stigende',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Side',
@@ -549,12 +555,13 @@ Forespørgsel: $2',
'viewsourcetext' => 'Du kan se og kopiere kildekoden til siden:',
'protectedinterface' => 'Denne side indeholder tekst til softwarens sprog-interface og er skrivebeskyttet for at forhindre misbrug.',
'editinginterface' => "'''Advarsel:''' Du redigerer en side som bruges i programmets grænseflade. Ændringer på denne side vil påvirke udseendet af grænsefladen for andre brugere.
-For oversættelser bedes du venligst overveje at bruge [http://translatewiki.net/wiki/Main_Page?setlang=da translatewiki.net], projektet for oversættelse af MediaWiki.",
+For oversættelser bedes du venligst overveje at bruge [//translatewiki.net/wiki/Main_Page?setlang=da translatewiki.net], projektet for oversættelse af MediaWiki.",
'sqlhidden' => '(SQL forespørgsel skjult)',
'cascadeprotected' => 'Denne side er skrivebeskyttet, da den er indeholdt i nedenstående {{PLURAL:$1|side|sider}}, som er skrivebeskyttet med tilvalg af "nedarvende sidebeskyttelse":
$2',
'namespaceprotected' => 'Du har ikke rettigheder til at redigere sider i $1-navnerummet.',
-'customcssjsprotected' => 'Du har ikke rettigheder til at redigere denne side, da den indeholder en anden brugers personlige indstillinger.',
+'customcssprotected' => 'Du har ikke tilladelse til at redigere denne CSS-side, da den indeholder en anden brugers personlige indstillinger.',
+'customjsprotected' => 'Du har ikke tilladelse til at redigere denne JavaScript-side, da den indeholder en anden brugers personlige indstillinger.',
'ns-specialprotected' => 'Sider i navnerummet {{ns:special}} kan ikke redigeres.',
'titleprotected' => "Dette sidenavn er beskyttet mod oprettelse af [[User:$1|$1]]. Begrundelsen for beskyttelsen er ''$2''.",
@@ -591,6 +598,7 @@ Din konto er blevet oprettet. Glem ikke at personliggøre dine [[Special:Prefere
'createaccount' => 'Opret en ny konto',
'gotaccount' => "Du har allerede en brugerkonto? '''$1'''.",
'gotaccountlink' => 'Log på',
+'userlogin-resetlink' => 'Har du glemt dine login oplysninger?',
'createaccountmail' => 'via e-mail',
'createaccountreason' => 'Begrundelse:',
'badretype' => 'De indtastede adgangskoder er ikke ens.',
@@ -600,6 +608,8 @@ Vælg venligst et andet brugernavn.',
'createaccounterror' => 'Kunne ikke oprette konto: $1',
'nocookiesnew' => 'Din brugerkonto er nu oprettet, men du er ikke logget på. {{SITENAME}} bruger cookies til at logge brugere på. Du har slået cookies fra. Vær venlig at slå cookies til, og derefter kan du logge på med dit nye brugernavn og kodeord.',
'nocookieslogin' => '{{SITENAME}} bruger cookies til at logge brugere på. Du har slået cookies fra. Slå dem venligst til og prøv igen.',
+'nocookiesfornew' => 'Denne brugerkonto er ikke oprettet, da vi ikke kunne bekræfte dens kilde.
+Sørg for, at du har aktivereret cookies, genindlæs siden og prøv igen.',
'noname' => 'Du har ikke angivet et gyldigt brugernavn.',
'loginsuccesstitle' => 'Du er nu logget på',
'loginsuccess' => 'Du er nu logget på {{SITENAME}} som "$1".',
@@ -652,13 +662,14 @@ Du kan ignorere denne besked hvis kontoen blev oprettet ved en fejl.',
'usernamehasherror' => 'Brugernavn må ikke indeholde #',
'login-throttled' => 'Du har forsøgt at logge på for mange gange.
Vent venligst før du prøver igen.',
+'login-abort-generic' => 'Det lykkedes dig ikke at logge på - afbrudt',
'loginlanguagelabel' => 'Sprog: $1',
'suspicious-userlogout' => 'Din anmodning om at logge ud blev nægtet, fordi det ser ud som den blev sendt af en ødelagt browser eller caching proxy.',
# E-mail sending
'php-mail-error-unknown' => "Ukendt fejl i PHP's mail()-funtion",
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Skift adgangskode',
'resetpass_announce' => 'Log på med den via e-mail tilsendte password. For at afslutte tilmeldingen, skal du nu vælge et nyt password.',
'resetpass_text' => '<!-- Tilføj tekst her -->',
@@ -676,6 +687,32 @@ Vent venligst før du prøver igen.',
Du har muligvis allerede skiftet din adgangskode eller anmodet om en ny midlertidig kode.',
'resetpass-temp-password' => 'Midlertidig adgangskode',
+# Special:PasswordReset
+'passwordreset' => 'Nulstil adgangskode',
+'passwordreset-text' => 'Udfyld denne formular for at modtage en påmindelse om dine kontooplysninger som e-mail.',
+'passwordreset-legend' => 'Nulstil adgangskode',
+'passwordreset-disabled' => 'Nulstilling af kodeord er slået fra på denne wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Indtast en af de nedenstående oplysninger}}',
+'passwordreset-username' => 'Brugernavn:',
+'passwordreset-domain' => 'Domæne:',
+'passwordreset-email' => 'E-mail adresse:',
+'passwordreset-emailtitle' => 'Kontooplysninger på {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Nogen (sandsynligvis dig, fra IP-adressen $1) har anmodet om en påmindelse om dine kontooplysninger for {{SITENAME}} ($4). Følgende {{PLURAL:$3|brugerkonto|brugerkonti}} er associerede med denne e-mail-adresse:
+
+$2
+
+{{PLURAL:$3|Denne midlertidige adgangskode|Disse midlertidige adgangskoder}} vil udløbe om {{PLURAL:$5|en dag|$5 dage}}.
+Du bør logge på og vælge en ny adgangskode nu. Hvis en anden end dig har anmodet om denne påmindelse, eller hvis du er kommet i tanke om din oprindelig adgangskode og ikke længere ønsker at ændre den, kan du ignorere denne meddelelse og fortsætte med at bruge din gamle adgangskode.',
+'passwordreset-emailtext-user' => 'Brugeren $1 har anmodet om en påmindelse om dine kontooplysninger for {{SITENAME}} ($4). Følgende {{PLURAL:$3|brugerkonto|brugerkonti}} er associerede med denne e-mail-adresse:
+
+$2
+
+{{PLURAL:$3|Denne midlertidige adgangskode|Disse midlertidige adgangskoder}} vil udløbe om {{PLURAL:$5|en dag|$5 dage}}.
+Du bør logge på og vælge en ny adgangskode nu. Hvis en anden end dig har anmodet om denne påmindelse, eller hvis du er kommet i tanke om din oprindelig adgangskode og ikke længere ønsker at ændre den, kan du ignorere denne meddelelse og fortsætte med at bruge din gamle adgangskode.',
+'passwordreset-emailelement' => 'Brugernavn: $1
+Midlertidig adgangskode: $2',
+'passwordreset-emailsent' => 'En påmindelse er blevet sendt som e-mail.',
+
# Edit page toolbar
'bold_sample' => 'Fed tekst',
'bold_tip' => 'Fed tekst',
@@ -687,8 +724,6 @@ Du har muligvis allerede skiftet din adgangskode eller anmodet om en ny midlerti
'extlink_tip' => 'Ekstern henvisning (husk http:// præfiks)',
'headline_sample' => 'Tekst til overskrift',
'headline_tip' => 'Type 2 overskrift',
-'math_sample' => 'Indsæt formel her (LaTeX)',
-'math_tip' => 'Matematisk formel (LaTeX)',
'nowiki_sample' => 'Indsæt tekst her som ikke skal wikiformateres',
'nowiki_tip' => 'Ignorer wikiformatering',
'image_sample' => 'Eksempel.jpg',
@@ -777,7 +812,7 @@ eller [{{fullurl:{{FULLPAGENAME}}|action=edit}} oprette siden]</span>.',
'noarticletext-nopermission' => 'Der er i øjeblikket ikke noget tekst på denne side.
Du kan [[Special:Search/{{PAGENAME}}|søge efter denne sides titel]] på andre sider,
eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} se de relaterede loglister]</span>.',
-'userpage-userdoesnotexist' => 'Brugerkontoen "$1" findes ikke. Overvej om du ønsker at oprette eller redigere denne side.',
+'userpage-userdoesnotexist' => 'Brugerkontoen "<nowiki>$1</nowiki>" findes ikke. Overvej om du ønsker at oprette eller redigere denne side.',
'userpage-userdoesnotexist-view' => 'Brugerkontoen "$1" er ikke oprettet.',
'blocked-notice-logextract' => 'Denne bruger er i øjeblikket blokeret.
Loggen over den seneste blokering ses nedenfor:',
@@ -809,6 +844,7 @@ Prøv venligst igen. Hvis problemet fortsætter, log af og log på igen.'''",
'''Forsøg venligst igen. Hvis problemet fortsætter, log af og log på igen.'''",
'token_suffix_mismatch' => "'''Din redigering er afvist, da din browser har forvansket tegnsætningen i redigeringskontrolfilen. Afvisningen sker for at forhindre utilsigtede ændringer i artiklen. Denne fejl opstår nogle gange, når du redigerer gennem en fejlprogrammeret webbaseret anonymiseringstjeneste.'''",
+'edit_form_incomplete' => "'''Nogle dele af redigeringsformularen nåede ikke serveren; dobbelttjek, at redigeringerne er intakte, og prøv igen.'''",
'editing' => 'Redigerer $1',
'editingsection' => 'Redigerer $1 (afsnit)',
'editingcomment' => 'Redigerer $1 (nyt afsnit)',
@@ -1033,8 +1069,8 @@ Se venligst loglisterne.',
# Suppression log
'suppressionlog' => 'Skjulningslog',
-'suppressionlogtext' => 'Nedenfor listes de sletninger og blokeringer der er skjult for almindelige systemadministratorer.Below is a list of deletions and blocks involving content hidden from sysops.
-Se [[Special:IPBlockList|IP blokeringslisten]] for alle blokeringer.',
+'suppressionlogtext' => 'Nedenfor listes de sletninger og blokeringer, som involverer indhold, der er skjult for administratorer.
+Se [[Special:BlockList|IP-blokeringslisten]] for listen over alle aktuelle blokeringer.',
# History merging
'mergehistory' => 'Sammenflet sidehistorikker',
@@ -1144,12 +1180,13 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
'searchdisabled' => '<p>Beklager! Fuldtekstsøgningen er midlertidigt afbrudt på grund af for stor belastning på serverne. I mellemtidem kan du anvende Google- eller Yahoo!-søgefelterne herunder. Bemærk at deres kopier af {{SITENAME}}s indhold kan være forældet.</p>',
# Quickbar
-'qbsettings' => 'Hurtigmenu',
-'qbsettings-none' => 'Ingen',
-'qbsettings-fixedleft' => 'Fast venstre',
-'qbsettings-fixedright' => 'Fast højre',
-'qbsettings-floatingleft' => 'Flydende venstre',
-'qbsettings-floatingright' => 'Flydende højre',
+'qbsettings' => 'Hurtigmenu',
+'qbsettings-none' => 'Ingen',
+'qbsettings-fixedleft' => 'Fast venstre',
+'qbsettings-fixedright' => 'Fast højre',
+'qbsettings-floatingleft' => 'Flydende venstre',
+'qbsettings-floatingright' => 'Flydende højre',
+'qbsettings-directionality' => 'Fast, afhængigt af dit sprogs skriveretning',
# Preferences page
'preferences' => 'Indstillinger',
@@ -1160,9 +1197,10 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
'changepassword' => 'Skift adgangskode',
'prefs-skin' => 'Udseende',
'skin-preview' => 'Forhåndsvisning',
-'prefs-math' => 'Matematiske formler',
'datedefault' => 'Ingen præference',
+'prefs-beta' => 'Betafunktioner',
'prefs-datetime' => 'Dato og klokkeslæt',
+'prefs-labs' => 'Testfunktioner',
'prefs-personal' => 'Brugerdata',
'prefs-rc' => 'Seneste ændringer',
'prefs-watchlist' => 'Overvågningsliste',
@@ -1184,8 +1222,6 @@ Du kan prøve at bruge \"all:\" som præfiks for at søge i alt indhold (inkl. d
'columns' => 'Kolonner',
'searchresultshead' => 'Søgeresultater',
'resultsperpage' => 'Resultater pr. side',
-'contextlines' => 'Linjer pr. resultat',
-'contextchars' => 'Tegn pr. linje i resultatet',
'stub-threshold' => 'Grænse for visning af henvisning som <a href="#" class="stub">artikelstump</a>:',
'stub-threshold-disabled' => 'Deaktiveret',
'recentchangesdays' => 'Antal dage som skal vises i seneste ændringer:',
@@ -1198,7 +1234,7 @@ Her er en tilfældig genereret værdi som du kan bruge: $1',
'savedprefs' => 'Dine indstillinger er blevet gemt.',
'timezonelegend' => 'Tidszone:',
'localtime' => 'Lokaltid:',
-'timezoneuseserverdefault' => 'Brug serverens tid',
+'timezoneuseserverdefault' => "Brug wiki'ens standardindstilling ($1)",
'timezoneuseoffset' => 'Anden (angiv forskel)',
'timezoneoffset' => 'Forskel¹:',
'servertime' => 'Serverens tid:',
@@ -1246,8 +1282,8 @@ Det kan ikke gøres om.',
'email' => 'E-mail',
'prefs-help-realname' => 'Angivelse af rigtigt navn er valgfrit.
Hvis du vælger at oplyse dit navn, vil det blive brugt til at tilskrive dig dit arbejde.',
-'prefs-help-email' => 'Angivelse af e-mail-adresse er valgfrit. Det gør det muligt at sende dig en ny adgangskode hvis du glemmer den.
-Du kan også vælge at lade andre brugere kontakte dig gennem din bruger- eller diskussionsside uden at du behøver at afsløre din identitet.',
+'prefs-help-email' => 'Angivelse af e-mail-adresse er valgfrit. Det gør det muligt at sende dig en ny adgangskode hvis du glemmer den.',
+'prefs-help-email-others' => 'Du kan også vælge at lade andre kontakte dig gennem din bruger eller diskussions side uden at behøve at afsløre din identitet.',
'prefs-help-email-required' => 'E-mail-adresse er krævet.',
'prefs-info' => 'Grundlæggende information',
'prefs-i18n' => 'Internationalisering:',
@@ -1372,15 +1408,15 @@ Du kan også vælge at lade andre brugere kontakte dig gennem din bruger- eller
'right-userrights' => 'Ændre alle brugerrettigheder',
'right-userrights-interwiki' => 'Ændre brugerrettigheder på andre wikier',
'right-siteadmin' => 'LÃ¥se og frigive databasen',
-'right-reset-passwords' => 'Ændre andre brugeres adgangskode',
'right-override-export-depth' => 'Eksportere sider inkl. henviste sider op til en dybde på 5',
'right-sendemail' => 'Sende e-mail til andre 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“.',
-'rightsnone' => '(-)',
+'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',
+'rightsnone' => '(-)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'se denne side',
@@ -1501,11 +1537,11 @@ Brug en henvisning af en de følgende typer for at bruge en fil på en side:
'minlength1' => 'Navnet på filen skal være på mindst et bogstav.',
'illegalfilename' => 'Filnavnet "$1" indeholder tegn, der ikke er tilladte i sidetitler. Omdøb filen og prøv at lægge den op igen.',
'badfilename' => 'Navnet på filen er blevet ændret til "$1".',
-'filetype-mime-mismatch' => 'Filendelsen svarer ikke til MIME-typen.',
+'filetype-mime-mismatch' => 'Filendelsen ".$1" svarer ikke til filens MIME-type ($2).',
'filetype-badmime' => 'Filer med MIME-typen „$1“ må ikke uploades.',
'filetype-bad-ie-mime' => 'Kan ikke lægge denne fil op fordi Internet Explorer ville betragte den som værende af typen "$1", som er en ikke-tilladt og en potentiel farlig filtype.',
'filetype-unwanted-type' => "'''\".\$1\"''' er ikke en foretrukken filtype. {{PLURAL:\$3|Den foretrukne filtype|De foretrukne filtyper}} er \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' er en uønsket filtype. {{PLURAL:\$3|Den tilladte filtype|De tillatdte filtyper}} er \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' er {{PLURAL:$4|en uønsket filtype|uønskede filtyper}}. {{PLURAL:$3|Den tilladte filtype|De tilladte filtyper}} er $2.',
'filetype-missing' => 'Filen der skal uploades har ingen endelse (f.eks. „.jpg“).',
'empty-file' => 'Den fil du indsendte var tom.',
'file-too-large' => 'Den fil du indsendte var for stor.',
@@ -1521,6 +1557,7 @@ Brug en henvisning af en de følgende typer for at bruge en fil på en side:
'large-file' => 'Filstørrelsen skal så vidt muligt ikke overstige $1. Denne fil er $2 stor.',
'largefileserver' => 'Filen er større end den på serveren indstillede maksimale størrelse.',
'emptyfile' => 'Filen du lagde op lader til at være tom. Det kan skyldes en slåfejl i filnavnet. Kontroller om du virkelig ønsker at lægge denne fil op.',
+'windows-nonascii-filename' => 'Denne wiki understøtter ikke filnavne, der indeholder specialtegn.',
'fileexists' => 'En fil med det navn findes allerede, tjek venligst [[:$1]] om du er sikker på du vil ændre den.
[[$1|thumb]]',
'filepageexists' => "Siden med beskrivelse af denne fil er allerede oprettet på '''<tt>[[:$1]]</tt>''', men der eksisterer ikke en fil med dette navn.
@@ -1557,6 +1594,8 @@ Hvis du fortsat vil lægge filen op, bedes du gå tilbage og bruge et nyt navn.
'php-uploaddisabledtext' => 'Oplægning af filer er forhindret i PHP. Tjek indstillingen for file_uploads.',
'uploadscripted' => 'Denne fil indeholder HTML eller script-kode, der i visse tilfælde can fejlfortolkes af en browser.',
'uploadvirus' => 'Denne fil indeholder en virus! Virusnavn: $1',
+'uploadjava' => 'Denne fil er en ZIP-fil, der indeholder en Java .class-fil.
+Det er ikke tilladt at uploade Javafiler, da det kan forårsage, at sikkerhedsrestriktioner bliver sprunget over.',
'upload-source' => 'Kildefil',
'sourcefilename' => 'Vælg en fil:',
'sourceurl' => 'Kildens URL:',
@@ -1566,10 +1605,6 @@ Hvis du fortsat vil lægge filen op, bedes du gå tilbage og bruge et nyt navn.
'upload-options' => 'Oplægningsindstillinger',
'watchthisupload' => 'Overvåg filen',
'filewasdeleted' => 'En fil med dette navn er tidligere uploadet og i mellemtiden slettet igen. Kontroller først indførslen i $1, før du gemmer filen.',
-'upload-wasdeleted' => "'''Advarsel: Du er ved at uploade en fil der tidligere er blevet slettet.'''
-
-Overvej om det er passende at fortsætte med uploadet.
-Sletningsloggen for denne fil er gengivet herunder.",
'filename-bad-prefix' => "Navnet på filen du er ved at lægge op begynder med '''\"\$1\"'''. Dette er et ikkebeskrivende navn, der typisk er skabt automatisk af et digitalkamera. Vær venlig at vælge et mere beskrivende navn på dit billede.",
'upload-success-subj' => 'Oplægningen er gennemført',
'upload-success-msg' => 'Din upload fra [$2] lykkedes. Den er tilgængelig her: [[:{{ns:file}}:$1]]',
@@ -1591,12 +1626,29 @@ Informer venligst en [[Special:ListUsers/sysop|systemadministrator]].',
'upload-unknown-size' => 'Ukendt størrelse',
'upload-http-error' => 'Der opstod en HTTP-fejl: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'En fejl opstod under åbning af filen til ZIP kontrol.',
+'zip-wrong-format' => 'Den angivne fil var ikke en ZIP-fil.',
+'zip-bad' => 'Filen er en korrupt eller på anden måde ulæselige ZIP-fil.
+Den kan ikke kontrolleres rigtigt for sikkerhed.',
+'zip-unsupported' => 'Filen er en ZIP-fil, der bruger ZIP funktioner, der ikke understøttes af MediaWiki.
+Den kan ikke kontrolleres rigtigt for sikkerhed.',
+
+# Special:UploadStash
+'uploadstash' => 'Upload stash',
+'uploadstash-summary' => 'Denne side giver adgang til filer, de er uploadet (eller er i gang med at blive det), men som endnu ikke er offentliggjort på wikien. Disse filer er kun synlige for brugeren, der har uploadet dem.',
+'uploadstash-clear' => 'Ryd stashede filer',
+'uploadstash-nofiles' => 'Du har ingen stashede filer.',
+'uploadstash-badtoken' => 'Udførelse af handlingen mislykkedes, måske fordi dine redigerings legitimationsoplysninger udløbet. Prøv igen.',
+'uploadstash-errclear' => 'Rydning af filerne mislykkedes.',
+'uploadstash-refresh' => 'Opdatér filoversigten',
+
# img_auth script messages
'img-auth-accessdenied' => 'Adgang nægtet',
'img-auth-nopathinfo' => 'PATH_INFO mangler.
Din server er ikke sat op til at give denne information.
Den bruger måske CGI og understøtter ikke img_auth.
-Se http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Se billedeautorisation].',
'img-auth-notindir' => 'Den ønskede sti er ikke i det opsatte oplægningskatalog.',
'img-auth-badtitle' => 'Kan ikke lave en gyldig titel ud fra "$1".',
'img-auth-nologinnWL' => 'Du er ikke logget ind, og "$1" er ikke på hvidlisten.',
@@ -1671,7 +1723,7 @@ Den følgende liste viser kun {{PLURAL:$1|den første henvisning|de $1 første h
En [[Special:WhatLinksHere/$2|komplet liste]] er tilgængelig.',
'nolinkstoimage' => 'Der er ingen sider der henviser til denne fil.',
'morelinkstoimage' => 'Se [[Special:WhatLinksHere/$1|flere henvisninger]] til denne fil.',
-'redirectstofile' => '{{PLURAL:$1|Nedenstående fil|De nedenstående $1 filer}} er en omdirigering til denne fil:',
+'linkstoimage-redirect' => '$1 (filomdirigering) $2',
'duplicatesoffile' => 'Følgende {{PLURAL:$1|fil er en dublet|filer er dubletter}} af denne fil ([[Special:FileDuplicateSearch/$2|flere detaljer]]):',
'sharedupload' => 'Denne fil er fra $1 og kan bruges af andre projekter.',
'sharedupload-desc-there' => 'Denne fil er fra $1 og kan bruges på andre projekter.
@@ -1733,7 +1785,7 @@ Husk at kontrollere for andre henvisninger til skabelonerne før de slettes.',
'unusedtemplateswlh' => 'andre henvisninger',
# Random page
-'randompage' => 'Tilfældig artikel',
+'randompage' => 'Tilfældig side',
'randompage-nopages' => 'Der er ingen sider i {{PLURAL:$2|navnerummet|disse navnerum:}} $1.',
# Random redirect
@@ -1761,16 +1813,17 @@ Husk at kontrollere for andre henvisninger til skabelonerne før de slettes.',
'statistics-users-active-desc' => 'Brugere som har udført handlinger i {{PLURAL:$1|det sidste døgn|de sidste $1 dage}}',
'statistics-mostpopular' => 'Mest besøgte sider',
-'disambiguations' => 'Sider med flertydige titler',
+'disambiguations' => 'Sider, der henviser til flertydige titler',
'disambiguationspage' => 'Template:Flertydig',
'disambiguations-text' => 'De følgende sider henviser til en flertydig titel. De bør henvise direkte til det passende emne i stedet. En side behandles som en side med en flertydig titel hvis den bruger en skabelon som er henvist til fra [[MediaWiki:Disambiguationspage]].',
-'doubleredirects' => 'Dobbelte omdirigeringer',
-'doubleredirectstext' => 'Dette er en liste over sider som omdirigerer til andre omdirigeringssider.
+'doubleredirects' => 'Dobbelte omdirigeringer',
+'doubleredirectstext' => 'Dette er en liste over sider som omdirigerer til andre omdirigeringssider.
Hver linje indeholder henvisninger til den første og den anden omdirigering, såvel som til målet for den anden omdirigering som sædvanligvis er den "rigtige" målside som den første omdirigering burde henvise til.
<del>Overstregede</del> poster er rettede.',
-'double-redirect-fixed-move' => '[[$1]] blev flyttet og er nu en omdirigering til [[$2]]',
-'double-redirect-fixer' => 'Omdirigerings-retter',
+'double-redirect-fixed-move' => '[[$1]] blev flyttet og er nu en omdirigering til [[$2]]',
+'double-redirect-fixed-maintenance' => 'Rettelse af dobbelt omdirigering fra [[$1]] til [[$2]].',
+'double-redirect-fixer' => 'Omdirigerings-retter',
'brokenredirects' => 'Defekte omdirigeringer',
'brokenredirectstext' => 'Følgende omdirigeringer peger på en side der ikke eksisterer:',
@@ -1847,6 +1900,7 @@ Læg mærke til at andre hjemmesider kan henvise til filen med et direkte URL, o
'pager-newer-n' => '{{PLURAL:$1|1 nyere|$1 nyere}}',
'pager-older-n' => '{{PLURAL:$1|1 ældre|$1 ældre}}',
'suppress' => 'Skjul logs',
+'querypage-disabled' => 'Denne specialside er deaktiveret af hensyn til ydeevnen.',
# Book sources
'booksources' => 'Bogkilder',
@@ -1856,8 +1910,8 @@ Læg mærke til at andre hjemmesider kan henvise til filen med et direkte URL, o
'booksources-invalid-isbn' => 'Det angivne ISBN-nummer ser forkert ud. Tjek med kilden om det er skrevet korrekt.',
# Special:Log
-'specialloguserlabel' => 'Bruger:',
-'speciallogtitlelabel' => 'Titel:',
+'specialloguserlabel' => 'Udført af:',
+'speciallogtitlelabel' => 'MÃ¥l (titel eller bruger):',
'log' => 'Loglister',
'all-logs-page' => 'Alle offentlige logger',
'alllogstext' => 'Samlet visning af alle loggene på {{SITENAME}}.
@@ -1897,11 +1951,13 @@ Se også [[Special:WantedCategories|ønskede kategorier]].',
'sp-deletedcontributions-contribs' => 'bidrag',
# Special:LinkSearch
-'linksearch' => 'Eksterne henvisninger',
+'linksearch' => 'Søgning i eksterne henvisninger',
'linksearch-pat' => 'Søg efter links til:',
'linksearch-ns' => 'Navnerum:',
'linksearch-ok' => 'Søg',
-'linksearch-text' => 'Wildcards som "*.wikipedia.org" kan benyttes.<br />Understøttede protokoller: <tt>$1</tt>',
+'linksearch-text' => 'Wildcards som "*.wikipedia.org" kan benyttes.
+Der skal som minimum angives et topniveau-domæne som f. eks. "*.org".<br />
+Understøttede protokoller: <tt>$1</tt> (tilføj ikke protokollerne til din søgning).',
'linksearch-line' => '$2 linker til $1',
'linksearch-error' => 'Wildcards må kun benyttes i starten af hostnavnet.',
@@ -1963,6 +2019,10 @@ Den e-mail-adresse du har angivet i [[Special:Preferences|dine indstillinger]] v
'noemailtext' => 'Denne bruger har ikke angivet en gyldig e-mail-adresse.',
'nowikiemailtitle' => 'E-mail er ikke tilladt',
'nowikiemailtext' => 'Denne bruger har valgt ikke at modtage e-mail fra andre brugere.',
+'emailnotarget' => 'Ikke-eksisterende eller ugyldigt brugernavn for modtageren.',
+'emailtarget' => 'Indtast modtagerens brugernavn',
+'emailusername' => 'Brugernavn:',
+'emailusernamesubmit' => 'Send',
'email-legend' => 'Send e-post til en anden {{SITENAME}}-bruger.',
'emailfrom' => 'Fra:',
'emailto' => 'Til:',
@@ -1987,9 +2047,9 @@ Den e-mail-adresse du har angivet i [[Special:Preferences|dine indstillinger]] v
'watchlistanontext' => 'Du skal $1, for at se din overvågningsliste eller ændre indholdet af den.',
'watchnologin' => 'Ikke logget på',
'watchnologintext' => 'Du skal være [[Special:UserLogin|logget på]] for at kunne ændre din overvågningsliste.',
-'addedwatch' => 'Tilføjet til din overvågningsliste',
+'addwatch' => 'Tilføj til overvågningsliste',
'addedwatchtext' => "Siden \"[[:\$1]]\" er blevet tilføjet til din [[Special:Watchlist|overvågningsliste]]. Fremtidige ændringer til denne side og den tilhørende diskussionsside vil blive listet der, og siden vil fremstå '''fremhævet''' i [[Special:RecentChanges|listen med de seneste ændringer]] for at gøre det lettere at finde den. Hvis du senere vil fjerne siden fra din overvågningsliste, så klik \"Fjern overvågning\".",
-'removedwatch' => 'Fjernet fra overvågningsliste',
+'removewatch' => 'Fjern fra overvågningsliste',
'removedwatchtext' => 'Siden "[[:$1]]" er blevet fjernet fra [[Special:Watchlist||din overvågningsliste]].',
'watch' => 'Overvåg',
'watchthispage' => 'Overvåg side',
@@ -2010,8 +2070,9 @@ Den e-mail-adresse du har angivet i [[Special:Preferences|dine indstillinger]] v
'watchlist-options' => 'Indstillinger for overvågningslisten',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Tilføjer overvågning …',
-'unwatching' => 'Fjerner overvågning …',
+'watching' => 'Tilføjer overvågning …',
+'unwatching' => 'Fjerner overvågning …',
+'watcherrortext' => 'Der opstod en fejl under forsøget på at ændre dine overvågningsindstillinger for "$1".',
'enotif_mailer' => '{{SITENAME}} informationsmail',
'enotif_reset' => 'Marker alle sider som besøgt',
@@ -2042,16 +2103,16 @@ På din overvågningsliste kan du også nulstille alle markeringer på de sider,
--
For at ændre dine indstillinger for e-mail-notifikationer, besøg
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
For at ændre indstillingerne for din overvågningsliste, besøg
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
For at slette siden fra din overvågningsliste, besøg
$UNWATCHURL
Tilbagemelding og yderligere hjælp:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Slet side',
@@ -2172,9 +2233,8 @@ Se [[Special:ProtectedPages|listen over beskyttede sider]] for listen over sideb
'viewdeletedpage' => 'Vis slettede sider',
'undeletepagetext' => '{{PLURAL:$1|Den følgende side er slettet, men den|De følgende sider er slettede, men de}} findes fortsat i arkivet og kan gendannes. Arkivet bliver periodevis slettet.',
'undelete-fieldset-title' => 'Gendan versioner',
-'undeleteextrahelp' => "For at gendanne siden komplet med alle versioner skal du lade alle afkrydsningsfelterne forblive tomme og klikke på '''''Gendan'''''.
-For at gendanne bestemte versioner, vælges disse enkeltvis i afkrydsningsfelterne før der klikkes '''''Gendan'''''.
-Et klik på '''''Afbryd''''' tømmer kommentarfeltet og fjerner alle markeringer ved versionerne.",
+'undeleteextrahelp' => "For at gendanne siden komplet med alle versioner skal du lade alle afkrydsningsfelterne forblive tomme og klikke på '''''{{int:undeletebtn}}'''''.
+For at gendanne bestemte versioner vælges disse enkeltvis i afkrydsningsfelterne før der klikkes '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|revision|revisioner}} arkiveret',
'undeletehistory' => 'Hvis du gendanner siden, vil alle tidligere versioner blive gendannet i historikken.
Hvis en ny side med det samme navn er oprettet efter sletningen, så vil de gendannede versioner dukke op i historikken.',
@@ -2219,9 +2279,12 @@ $1',
'undelete-show-file-submit' => 'Ja',
# Namespace form on various pages
-'namespace' => 'Navnerum:',
-'invert' => 'Udeluk valgt navnerum',
-'blanknamespace' => '(Hoved)',
+'namespace' => 'Navnerum:',
+'invert' => 'Udeluk valgt navnerum',
+'tooltip-invert' => 'Afkryds dette felt for at skjule ændringer til sider i det valgte navnerum (og det tilknyttede navnerum, hvis det felt også er afkrydset)',
+'namespace_association' => 'Tilknyttet navnerum',
+'tooltip-namespace_association' => 'Afkryds dette felt for også at inkludere det diskussions- eller emnenavnerum, der er tilknyttet det valgte navnerum',
+'blanknamespace' => '(Hoved)',
# Contributions
'contributions' => 'Brugerbidrag',
@@ -2270,13 +2333,15 @@ Den seneste post i blokeringsloggen vises nedenfor:',
'whatlinkshere-filters' => 'Filtre',
# Block/unblock
+'autoblockid' => 'Autoblock #$1',
+'block' => 'Bloker bruger',
+'unblock' => 'Ophæv blokering af bruger',
'blockip' => 'Bloker bruger',
'blockip-title' => 'Bloker bruger',
'blockip-legend' => 'Bloker bruger',
'blockiptext' => 'Brug formularen herunder til at blokere for skriveadgang fra en bestemt IP-adresse eller et brugernavn.
Dette bør kun gøres for at forhindre vandalisme og skal være i overensstemmelse med [[{{MediaWiki:Policy-url}}|retningslinjerne]].
Angiv en konkret begrundelse herunder (for eksempel med angivelse af sider der har været udsat for vandalisme).',
-'ipaddress' => 'IP-adresse/brugernavn',
'ipadressorusername' => 'IP-adresse eller brugernavn',
'ipbexpiry' => 'varighed',
'ipbreason' => 'Begrundelse:',
@@ -2289,7 +2354,7 @@ Angiv en konkret begrundelse herunder (for eksempel med angivelse af sider der h
** Utilstedelig opførsel
** Misbrug af flere brugerkonti
** Uacceptabelt brugernavn',
-'ipbanononly' => 'Kun anonyme brugere spærres',
+'ipb-hardblock' => 'Forhindr indloggede brugere i at redigere fra denne IP-adresse',
'ipbcreateaccount' => 'Forhindr oprettelse af brugerkontoer',
'ipbemailban' => 'Spær brugerens adgang til at sende e-mail',
'ipbenableautoblock' => 'Spærre den IP-adresse, der bruges af denne bruger samt automatisk alle følgende, hvorfra han foretager ændringer eller forsøger at anlægge brugerkonti',
@@ -2300,12 +2365,15 @@ Angiv en konkret begrundelse herunder (for eksempel med angivelse af sider der h
'ipbotherreason' => 'Anden/uddybende begrundelse',
'ipbhidename' => 'Skjul brugernavnet i redigeringer og lister',
'ipbwatchuser' => 'Overvåg denne brugers brugerside og diskussionsside.',
-'ipballowusertalk' => 'Tillad brugeren at redigere sin egen diskussionsside under blokeringen',
+'ipb-disableusertalk' => 'Forhindr denne bruger i at redigere sin egen brugerdiskussion under blokeringen',
'ipb-change-block' => 'Forny brugerens blokering med disse indstillinger',
+'ipb-confirm' => 'Bekræft blokering',
'badipaddress' => 'IP-adressen/brugernavnet er udformet forkert eller eksistere ikke.',
'blockipsuccesssub' => 'Blokeringen er gennemført.',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] er blevet blokeret.<br />
Se [[Special:IPBlockList|IP-blokeringslisten]] for alle blokeringer.',
+'ipb-blockingself' => 'Du er ved at blokere dig selv! Er du sikker på, du vil gøre det?',
+'ipb-confirmhideuser' => 'Du er ved at blokere en bruger med "skjul bruger" aktiveret. Dette vil skjule brugerens navn på alle lister og logposter. Er du sikker på du vil gøre det?',
'ipb-edit-dropdown' => 'Ændre spærreårsager',
'ipb-unblock-addr' => 'Ophæv blokeringen af "$1"',
'ipb-unblock' => 'Frigive IP-adresse/bruger',
@@ -2315,17 +2383,23 @@ Se [[Special:IPBlockList|IP-blokeringslisten]] for alle blokeringer.',
'unblockiptext' => 'Brug formularen herunder for at gendanne skriveadgangen for en tidligere blokeret IP-adresse eller bruger.',
'ipusubmit' => 'Ophæv blokeringen',
'unblocked' => '[[User:$1|$1]] blev frigivet',
+'unblocked-range' => '$1 er fjernet fra blokering',
'unblocked-id' => 'Blokering $1 er blevet fjernet',
+'blocklist' => 'Blokerede brugere',
'ipblocklist' => 'Blokerede brugere',
'ipblocklist-legend' => 'Find en blokeret bruger',
-'ipblocklist-username' => 'Brugernavn eller IP-adresse:',
-'ipblocklist-sh-userblocks' => '$1 blokeringer af kontoer',
-'ipblocklist-sh-tempblocks' => '$1 midlertidige blokeringer',
-'ipblocklist-sh-addressblocks' => '$1 blokeringer af individuelle IP-adresser',
+'blocklist-userblocks' => 'Skjul blokeringer af kontoer',
+'blocklist-tempblocks' => 'Skjul midlertidige blokeringer',
+'blocklist-addressblocks' => 'Skjul enkel IP blokeringer',
+'blocklist-timestamp' => 'Tidsstempel',
+'blocklist-target' => 'MÃ¥l',
+'blocklist-expiry' => 'Udløber',
+'blocklist-by' => 'Blokerende administrator',
+'blocklist-params' => 'Block parametre',
+'blocklist-reason' => 'Ã…rsag',
'ipblocklist-submit' => 'Søg',
'ipblocklist-localblock' => 'Lokal blokering',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Øvrig blokering|Øvrige blokeringer}}',
-'blocklistline' => '$1, $2 blokerede $3 ($4)',
'infiniteblock' => 'udløber ikke',
'expiringblock' => 'udløber $1 $2',
'anononlyblock' => 'kun anonyme',
@@ -2348,7 +2422,7 @@ Blokeringsloggen vises nedenfor som reference:',
Skjulningsloggen vises nedenfor som reference:',
'blocklogentry' => 'blokerede [[$1]] med en varighed på $2 $3',
'reblock-logentry' => 'ændrede blokeringsindstillinger for [[$1]] med en varighed $2 $3',
-'blocklogtext' => 'Dette er en liste med blokerede brugere og ophævede blokeringer af brugere. Automatisk blokerede IP-adresser er ikke anført her. Se [[Special:IPBlockList|blokeringslisten]] for den nuværende liste med blokerede brugere.',
+'blocklogtext' => 'Dette er en liste med blokerede brugere og ophævede blokeringer af brugere. Automatisk blokerede IP-adresser er ikke anført her. Se [[Special:BlockList|blokeringslisten]] for den nuværende liste med blokerede brugere.',
'unblocklogentry' => 'ophævede blokering af "$1"',
'block-log-flags-anononly' => 'kun anonyme',
'block-log-flags-nocreate' => 'Oprettelse af brugerkonti blokeret',
@@ -2362,9 +2436,9 @@ Skjulningsloggen vises nedenfor som reference:',
'ipb_expiry_temp' => 'Brugernavnet kan kun skjules ved permanente blokeringer.',
'ipb_hide_invalid' => 'Kan ikke skjule denne konto; den kan have for mange redigeringer.',
'ipb_already_blocked' => '„$1“ er allerede blokeret',
-'ipb-needreblock' => '== Allerede blokkeret ==
-$1 er allerede blokkeret. Vil du ændre indstillingene?',
+'ipb-needreblock' => '$1 er allerede blokkeret. Vil du ændre indstillingene?',
'ipb-otherblocks-header' => 'Yderligere {{PLURAL:$1|blokering|blokeringer}}',
+'unblock-hideuser' => 'Du kan ikke ophæve denne brugers blokering, da brugernavnet er blevet skjult.',
'ipb_cant_unblock' => 'Fejl: Spærre-ID $1 ikke fundet. Spærringen er allerede ophævet.',
'ipb_blocked_as_range' => 'Fejl: IP-adressen $1 er ikke direkte blokeret. Derfor kan en blokering ikke ophæves. Adressen er blokeret som en del af intervallet $2. Denne blokering kan ophæves.',
'ip_range_invalid' => 'Ugyldigt IP-interval.',
@@ -2397,6 +2471,7 @@ $1 er allerede blokkeret. Vil du ændre indstillingene?',
'unlockdbsuccesstext' => 'Mediawikidatabasen er låst op.',
'lockfilenotwritable' => 'Database-spærrefilen kan ikke ændres. Hvis databasen skal spærres eller frigives, skal webserveren kunne skrive i denne fil.',
'databasenotlocked' => 'Databasen er ikke spærret.',
+'lockedbyandtime' => '(af $1 den $2 kl. $3)',
# Move page
'move-page' => 'Flyt $1',
@@ -2507,7 +2582,7 @@ Hvis du kun vil have den seneste version, kan du også bruge en henvisning, for
'allmessagesdefault' => 'Standardtekst',
'allmessagescurrent' => 'Nuværende tekst',
'allmessagestext' => 'Dette er en liste med alle systembeskeder i MediaWiki-navnerummet.
-Besøg venligst [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisering] hvis du ønsker at bidrage til den generelle lokalisering (oversættelse og andre lokale tilpasninger) af MediaWiki.',
+Besøg venligst [//www.mediawiki.org/wiki/Localisation MediaWiki-lokalisering] og [//translatewiki.net translatewiki.net] hvis du ønsker at bidrage til den generelle lokalisering (oversættelse og andre lokale tilpasninger) af MediaWiki.',
'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages ikke understøttet fordi wgUseDatabaseMessages er slået fra.',
'allmessages-filter-legend' => 'Filtrér',
'allmessages-filter' => 'Filtrér efter tilpasningsstatus:',
@@ -2609,7 +2684,7 @@ Du kan se på kildeteksten.',
'tooltip-n-portal' => 'Om projektet, hvad du kan gøre, hvor tingene findes',
'tooltip-n-currentevents' => 'Find baggrundsinformation om aktuelle begivenheder',
'tooltip-n-recentchanges' => 'Listen over de seneste ændringer i wikien.',
-'tooltip-n-randompage' => 'Gå til en tilfældig artikel',
+'tooltip-n-randompage' => 'Gå til en tilfældig side',
'tooltip-n-help' => 'Hvordan gør jeg ...',
'tooltip-t-whatlinkshere' => 'Liste med alle sider som henviser hertil',
'tooltip-t-recentchangeslinked' => 'Seneste ændringer i sider som denne side henviser til',
@@ -2654,9 +2729,7 @@ Det giver mulighed for at tilføje en begrundelse i beskrivelsen.',
'monobook.js' => '/* JavaScript i denne fil vil indlæses for brugere af udseendet MonoBook */',
# Metadata
-'nodublincore' => 'Dublin Core RDF-metadata er slået fra på denne server.',
-'nocreativecommons' => 'Creative Commons RDF-metadata er slået fra på denne server.',
-'notacceptable' => 'Wiki-serveren kan ikke levere data i et format, som din klient understøtter.',
+'notacceptable' => 'Wiki-serveren kan ikke levere data i et format, som din klient understøtter.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonym bruger|Anonyme brugere}} på {{SITENAME}}',
@@ -2680,12 +2753,17 @@ Dette skyldes sandsynligvis en henvisning til et sortlistet eksternt websted.',
'spam_blanking' => 'Alle versioner, som indeholdt henvisninger til $1, er renset.',
# Info page
-'infosubtitle' => 'Information om siden',
-'numedits' => 'Antal redigeringer (artikel): $1',
-'numtalkedits' => 'Antal redigeringer (diskussionsside): $1',
-'numwatchers' => 'Antal overvågere: $1',
-'numauthors' => 'Antal forskellige forfattere (artikel): $1',
-'numtalkauthors' => 'Antal forskellige forfattere (diskussionsside): $1',
+'pageinfo-title' => 'Information om "$1"',
+'pageinfo-header-edits' => 'Redigeringer',
+'pageinfo-header-watchlist' => 'Overvågningsliste',
+'pageinfo-header-views' => 'Visninger',
+'pageinfo-subjectpage' => 'Side',
+'pageinfo-talkpage' => 'Diskussionsside',
+'pageinfo-watchers' => 'Antal brugere, der overvåger siden',
+'pageinfo-edits' => 'Antal redigeringer',
+'pageinfo-authors' => 'Antal forskellige forfattere',
+'pageinfo-views' => 'Antal visninger',
+'pageinfo-viewsperedit' => 'Visninger per redigering',
# Skin names
'skinname-standard' => 'Klassik',
@@ -2697,25 +2775,6 @@ Dette skyldes sandsynligvis en henvisning til et sortlistet eksternt websted.',
'skinname-simple' => 'Enkelt',
'skinname-modern' => 'Moderne',
-# Math options
-'mw_math_png' => 'Vis altid som PNG',
-'mw_math_simple' => 'HTML hvis meget simpel ellers PNG',
-'mw_math_html' => 'HTML hvis muligt ellers PNG',
-'mw_math_source' => 'Lad være som TeX (for tekstbrowsere)',
-'mw_math_modern' => 'Anbefalet til moderne browsere',
-'mw_math_mathml' => 'MathML hvis muligt',
-
-# Math errors
-'math_failure' => 'Fejl i matematikken',
-'math_unknown_error' => 'ukendt fejl',
-'math_unknown_function' => 'ukendt funktion',
-'math_lexing_error' => 'lexerfejl',
-'math_syntax_error' => 'syntaksfejl',
-'math_image_error' => 'PNG-konvertering mislykkedes; undersøg om latex og dvipng (eller dvips + gs + convert) er installeret korrekt',
-'math_bad_tmpdir' => 'Kan ikke skrive til eller oprette temp-mappe til math',
-'math_bad_output' => 'Kan ikke skrive til eller oprette uddata-mappe til math',
-'math_notexvc' => 'Manglende eksekvérbar texvc; se math/README for opsætningsoplysninger.',
-
# Patrolling
'markaspatrolleddiff' => 'Markér som patruljeret',
'markaspatrolledtext' => 'Markér denne artikel som patruljeret',
@@ -2751,22 +2810,25 @@ $1',
'nextdiff' => 'Gå til næste ændring →',
# Media information
-'mediawarning' => "'''Advarsel''': Denne filtype kan muligvis indeholde skadelig kode.
+'mediawarning' => "'''Advarsel''': Denne filtype kan muligvis indeholde skadelig kode.
Du kan beskadige dit system hvis du udfører den.",
-'imagemaxsize' => "Maksimal billedstørrelse<br />''(på filbeskrivelsessider)''",
-'thumbsize' => 'Thumbnailstørrelse :',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|side|sider}}',
-'file-info' => 'Filstørrelse: $1, MIME-Type: $2',
-'file-info-size' => '$1 × $2 punkter, filstørrelse: $3, MIME-Type: $4',
-'file-nohires' => '<small>Ingen højere opløsning fundet.</small>',
-'svg-long-desc' => 'SVG fil, basisstørrelse $1 × $2 punkters, størrelse: $3',
-'show-big-image' => 'Version i større opløsning',
-'show-big-image-thumb' => '<small>Størrelse af forhåndsvisning: $1 × $2 pixel</small>',
-'file-info-gif-looped' => 'gentaget',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|ramme|rammer}}',
-'file-info-png-looped' => 'gentaget',
-'file-info-png-repeat' => 'afspillede $1 {{PLURAL:$1|gang|gange}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|billede|billeder}}',
+'imagemaxsize' => "Maksimal billedstørrelse<br />''(på filbeskrivelsessider)''",
+'thumbsize' => 'Thumbnailstørrelse :',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|side|sider}}',
+'file-info' => 'Filstørrelse: $1, MIME-Type: $2',
+'file-info-size' => '$1 × $2 punkter, filstørrelse: $3, MIME-Type: $4',
+'file-info-size-pages' => '$1 × $2 punkter, filstørrelse: $3, MIME-type: $4, $5 {{PLURAL:$5|side|sider}}',
+'file-nohires' => '<small>Ingen højere opløsning fundet.</small>',
+'svg-long-desc' => 'SVG fil, basisstørrelse $1 × $2 punkters, størrelse: $3',
+'show-big-image' => 'Version i større opløsning',
+'show-big-image-preview' => '<small>Størrelse af denne forhåndsvisning: $1.</small>',
+'show-big-image-other' => '<small>Andre opløsninger: $1.</small>',
+'show-big-image-size' => '$1 × $2 pixels',
+'file-info-gif-looped' => 'gentaget',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|ramme|rammer}}',
+'file-info-png-looped' => 'gentaget',
+'file-info-png-repeat' => 'afspillede $1 {{PLURAL:$1|gang|gange}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|billede|billeder}}',
# Special:NewFiles
'newimages' => 'Galleri med de nyeste billeder',
@@ -2793,14 +2855,21 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
'metadata-help' => 'Denne fil indeholder yderligere informationer, der som regel stammer fra digitalkameraet eller den brugte scanner. Ved en efterfølgende bearbejdning kan nogle data være ændret.',
'metadata-expand' => 'Vis udvidede data',
'metadata-collapse' => 'Skjul udvidede data',
-'metadata-fields' => 'Følgenden felter fra EXIF-metadata i denne MediaWiki-systemtekst vises på billedbeskrivelsessider; yderligere detaljer kan vises.
+'metadata-fields' => 'Metadatafelter inkluderet i denne MediaWiki-systemtekst vises på billedbeskrivelsessider når metadatatabellen er slået sammen.
+Øvrige felter vil være skjult som standard.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Bredde',
@@ -2815,13 +2884,11 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
'exif-ycbcrpositioning' => 'Y og C positionering',
'exif-xresolution' => 'Horisontal opløsning',
'exif-yresolution' => 'Vertikal opløsning',
-'exif-resolutionunit' => 'Måleenhed for opløsning',
'exif-stripoffsets' => 'Bileddata-forskydning',
'exif-rowsperstrip' => 'Antal linjer pr. stribe',
'exif-stripbytecounts' => 'Bytes pr. komprimeret stribe',
'exif-jpeginterchangeformat' => 'Offset til JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Størrelse af JPEG-fil i bytes',
-'exif-transferfunction' => 'Overførselsfunktion',
'exif-whitepoint' => 'Manuel med måling',
'exif-primarychromaticities' => 'Kromaticitet af primærfarver',
'exif-ycbcrcoefficients' => 'YCbCr-koefficienter',
@@ -2840,7 +2907,6 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
'exif-compressedbitsperpixel' => 'Komprimerede bits pr. pixel',
'exif-pixelydimension' => 'Billedbredde',
'exif-pixelxdimension' => 'Billedhøjde',
-'exif-makernote' => 'Producentnotits',
'exif-usercomment' => 'Brugerkommentarer',
'exif-relatedsoundfile' => 'Tilhørende lydfil',
'exif-datetimeoriginal' => 'Optagelsestidspunkt',
@@ -2854,7 +2920,6 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
'exif-exposureprogram' => 'Belysningsprogram',
'exif-spectralsensitivity' => 'Spectral sensitivitet',
'exif-isospeedratings' => 'Film- eller sensorfølsomhed (ISO)',
-'exif-oecf' => 'Optoelektronisk omregningsfaktor',
'exif-shutterspeedvalue' => 'APEX lukkerhastighed',
'exif-aperturevalue' => 'APEX blændeåbning',
'exif-brightnessvalue' => 'APEX lysstyrke',
@@ -2867,7 +2932,6 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
'exif-focallength' => 'Brændvidde',
'exif-subjectarea' => 'Område',
'exif-flashenergy' => 'Blitzstyrke',
-'exif-spatialfrequencyresponse' => 'Rumligt frekvenssvar',
'exif-focalplanexresolution' => 'Fokuseringspunkt X-opløsning',
'exif-focalplaneyresolution' => 'Fokuseringspunkt Y-opløsning',
'exif-focalplaneresolutionunit' => 'Enhed for fokuseringsopløsning',
@@ -2876,7 +2940,6 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
'exif-sensingmethod' => 'MÃ¥lemetode',
'exif-filesource' => 'Filens kilde',
'exif-scenetype' => 'Scenetype',
-'exif-cfapattern' => 'CFA-mønster',
'exif-customrendered' => 'Brugerdefineret billedbehandling',
'exif-exposuremode' => 'Belysningsmodus',
'exif-whitebalance' => 'Hvidafstemning',
@@ -2921,10 +2984,79 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
'exif-gpsareainformation' => 'GPS-områdets navn',
'exif-gpsdatestamp' => 'GPS-dato',
'exif-gpsdifferential' => 'GPS-differentialkorrektur',
+'exif-jpegfilecomment' => 'JPEG-filkommentar',
+'exif-keywords' => 'Nøgleord',
+'exif-worldregioncreated' => 'Verdensregion, som billedet blev taget i',
+'exif-countrycreated' => 'Landet, som billedet blev taget i',
+'exif-countrycodecreated' => 'Kode for landet, billedet blev taget i',
+'exif-provinceorstatecreated' => 'Provins, region eller delstat, som billedet blev taget i',
+'exif-citycreated' => 'By, som billedet blev taget i',
+'exif-sublocationcreated' => 'Bydel, som billedet blev taget i',
+'exif-worldregiondest' => 'Den viste verdensregion',
+'exif-countrydest' => 'Afbildet land',
+'exif-countrycodedest' => 'Kode for afbildet land',
+'exif-provinceorstatedest' => 'Afbildet provins eller delstat',
+'exif-citydest' => 'Afbildet by',
+'exif-sublocationdest' => 'Afbildet bydel eller område i by',
'exif-objectname' => 'Kort titel',
+'exif-specialinstructions' => 'Særlige instruktioner',
+'exif-headline' => 'Overskrift',
+'exif-credit' => 'Tilskrivning/leverandør',
+'exif-source' => 'Kilde',
+'exif-editstatus' => 'Billedets redaktionelle status',
+'exif-urgency' => 'Uopsættelighed',
+'exif-fixtureidentifier' => 'Navn på fast bestanddel',
+'exif-locationdest' => 'Afbildet sted',
+'exif-locationdestcode' => 'Kode for det afbildede sted',
+'exif-objectcycle' => 'Tid på dagen, som mediet er tiltænkt',
+'exif-contact' => 'Kontaktoplysninger',
+'exif-writer' => 'Forfatter',
+'exif-languagecode' => 'Sprog',
+'exif-iimversion' => 'IIM-version',
+'exif-iimcategory' => 'Kategori',
+'exif-iimsupplementalcategory' => 'Supplerende kategorier',
+'exif-datetimeexpires' => 'Brug ikke efter',
+'exif-datetimereleased' => 'Frigivet den',
+'exif-originaltransmissionref' => 'Stedkode for oprindelig transmission',
+'exif-identifier' => 'Identifikation',
+'exif-lens' => 'Anvendt objektiv',
+'exif-serialnumber' => 'Kameraets serienummer',
+'exif-cameraownername' => 'Kameraets ejer',
+'exif-label' => 'Mærke',
+'exif-datetimemetadata' => 'Dato for seneste redigering af metadata',
+'exif-nickname' => 'Uformelt navn på billede',
+'exif-rating' => 'Vurdering (af 5)',
+'exif-rightscertificate' => 'Rettighedsforvaltningscertifikat',
+'exif-copyrighted' => 'Ophavsretsstatus',
+'exif-copyrightowner' => 'Indehaver af ​​ophavsretten',
+'exif-usageterms' => 'Betingelser for anvendelse',
+'exif-webstatement' => 'Online ophavsretserklæring',
+'exif-originaldocumentid' => 'Unik ID for det oprindelige dokument',
+'exif-licenseurl' => 'URL til ophavsretslicens',
+'exif-morepermissionsurl' => 'Informationer om alternative licensvilkår',
+'exif-attributionurl' => 'Ved genanvendelse af dette værk, giv venligst et link til',
+'exif-preferredattributionname' => 'Ved genanvendelse af dette værk, tilskriv det venligst til',
+'exif-pngfilecomment' => 'PNG-filkommentar',
+'exif-disclaimer' => 'Ansvarsfraskrivelse',
+'exif-contentwarning' => 'Indholdsadvarsel',
+'exif-giffilecomment' => 'GIF-filkommentar',
+'exif-intellectualgenre' => 'Type af objekt',
+'exif-subjectnewscode' => 'Emnekode',
+'exif-scenecode' => 'IPTC-scenekode',
+'exif-event' => 'Afbildet begivenhed',
+'exif-organisationinimage' => 'Afbildet organisation',
+'exif-personinimage' => 'Afbildet person',
+'exif-originalimageheight' => 'Højden af billedet inden det blev beskåret',
+'exif-originalimagewidth' => 'Bredden af billedet inden det blev beskåret',
# EXIF attributes
'exif-compression-1' => 'Ukomprimeret',
+'exif-compression-2' => 'CCITT Gruppe 3 1-dimensionel modificeret Huffman run length encoding',
+'exif-compression-3' => 'CCITT Gruppe 3 fax-kodning',
+'exif-compression-4' => 'CCITT Gruppe 4 fax-kodning',
+
+'exif-copyrighted-true' => 'Ophavsretligt beskyttet',
+'exif-copyrighted-false' => 'Offentlig ejendom',
'exif-unknowndate' => 'Ukendt dato',
@@ -2940,6 +3072,8 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
'exif-planarconfiguration-1' => 'Grovformat',
'exif-planarconfiguration-2' => 'Planformat',
+'exif-colorspace-65535' => 'Ukalibreret',
+
'exif-componentsconfiguration-0' => 'Findes ikke',
'exif-exposureprogram-0' => 'Ukendt',
@@ -3053,6 +3187,10 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
'exif-gpslongitude-e' => 'østl. længde',
'exif-gpslongitude-w' => 'vestl. længde',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|meter}} over havets overflade',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|meter}} under havets overflade',
+
'exif-gpsstatus-a' => 'Måling kører',
'exif-gpsstatus-v' => 'MÃ¥lingens interoperabilitet',
@@ -3064,21 +3202,73 @@ Kun indholdet af lister (linjer startende med *) bliver brugt. Den første henvi
'exif-gpsspeed-m' => 'mph',
'exif-gpsspeed-n' => 'Knob',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometer',
+'exif-gpsdestdistance-m' => 'Miles',
+'exif-gpsdestdistance-n' => 'Sømil',
+
+'exif-gpsdop-excellent' => 'Fremragende ($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 aften',
+'exif-objectcycle-b' => 'BÃ¥de morgen og aften',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Faktisk retning',
'exif-gpsdirection-m' => 'Magnetisk retning',
+'exif-ycbcrpositioning-1' => 'Centreret',
+'exif-ycbcrpositioning-2' => 'Sammenfaldende',
+
+'exif-dc-contributor' => 'Bidragsydere',
+'exif-dc-coverage' => 'Rumlig eller tidslig afgrænsning for mediet',
+'exif-dc-date' => 'Dato(er)',
+'exif-dc-publisher' => 'Udgiver',
+'exif-dc-relation' => 'Relaterede media',
+'exif-dc-rights' => 'Rettigheder',
+'exif-dc-source' => 'Kildemediet',
+'exif-dc-type' => 'Medietype',
+
+'exif-rating-rejected' => 'Afvist',
+
+'exif-isospeedratings-overflow' => 'Større end 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 erhvervsliv',
+'exif-iimcategory-edu' => 'Uddannelse',
+'exif-iimcategory-evn' => 'Miljø',
+'exif-iimcategory-hth' => 'Sundhed',
+'exif-iimcategory-hum' => 'Menneskelig interesse',
+'exif-iimcategory-lab' => 'Arbejde',
+'exif-iimcategory-lif' => 'Livsstil og fritid',
+'exif-iimcategory-pol' => 'Politik',
+'exif-iimcategory-rel' => 'Religion og tro',
+'exif-iimcategory-sci' => 'Videnskab og teknologi',
+'exif-iimcategory-soi' => 'Sociale spørgsmål',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Krig, konflikt og uroligheder',
+'exif-iimcategory-wea' => 'Vejrliget',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Lav ($1)',
+'exif-urgency-high' => 'Høj ($1)',
+'exif-urgency-other' => 'Bruger-defineret prioritet ($1)',
+
# External editor support
'edit-externally' => 'Rediger denne fil med en ekstern editor',
-'edit-externally-help' => '(Se [http://www.mediawiki.org/wiki/Manual:External_editors setup instruktionerne] for mere information)',
+'edit-externally-help' => '(Se [//www.mediawiki.org/wiki/Manual:External_editors setup instruktionerne] for mere information)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'alle',
-'imagelistall' => 'alle',
-'watchlistall2' => 'alle',
-'namespacesall' => 'alle',
-'monthsall' => 'alle',
-'limitall' => 'alle',
+'watchlistall2' => 'alle',
+'namespacesall' => 'alle',
+'monthsall' => 'alle',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'Bekræft e-mail-adressen',
@@ -3150,19 +3340,26 @@ $1',
'trackbackdeleteok' => 'Trackback blev slettet.',
# Delete conflict
-'deletedwhileediting' => 'Bemærk: Det blev forsøgt at slette denne side, efter at du var begyndt, at ændre den!
+'deletedwhileediting' => 'Bemærk: Det blev forsøgt at slette denne side, efter at du var begyndt, at ændre den!
Kig i [{{fullurl:Special:Log|type=delete&page=}}{{FULLPAGENAMEE}} slette-loggen],
hvorfor siden blev slettet. Hvis du gemmer siden bliver den oprettet igen.',
-'confirmrecreate' => "Bruger [[User:$1|$1]] ([[User talk:$1|Diskussion]]) har slettet denne side, efter at du begyndte at ændre den. Begrundelsen lyder:
+'confirmrecreate' => "Bruger [[User:$1|$1]] ([[User talk:$1|Diskussion]]) har slettet denne side, efter at du begyndte at ændre den. Begrundelsen lyder:
: ''$2''
Bekræft venligst, at du virkelig vil oprette denne side igen.",
-'recreate' => 'Opret igen',
+'confirmrecreate-noreason' => '[[User:$1|$1]] ([[User talk:$1|diskussion]]) har slettet denne side, efter du begyndte at redigere. Bekræft venligst, at du gerne vil genoprette siden.',
+'recreate' => 'Opret igen',
# action=purge
'confirm_purge_button' => 'O.k.',
'confirm-purge-top' => "Slet denne side fra serverens mellemlager (''cache'')?",
'confirm-purge-bottom' => 'Rensning af en side sletter mellemlageret og fremtvinger den nyeste version.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Tilføj denne side til din overvågningsliste?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Fjern denne side fra din overvågningsliste?',
+
# Multipage image navigation
'imgmultipageprev' => '↠forrige side',
'imgmultipagenext' => 'næste side →',
@@ -3204,7 +3401,7 @@ Bekræft venligst, at du virkelig vil oprette denne side igen.",
'watchlistedit-normal-legend' => 'Slet sider fra overvågningslisten',
'watchlistedit-normal-explain' => 'Siderne på din overvågningsliste er vist nedenfor.
For at fjerne en side, skal boksen ud for den markeres, og klik på "{{int:Watchlistedit-normal-submit}}".
-Du kan også [[Special:Watchlist/raw|redigere siden direkte]].',
+Du kan også [[Special:EditWatchlist/raw|redigere siden direkte]].',
'watchlistedit-normal-submit' => 'Fjern valgte',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 side|$1 sider}} er fjernet fra din overvågningsliste:',
'watchlistedit-raw-title' => 'Direkte redigering af overvågningsliste',
@@ -3212,7 +3409,7 @@ Du kan også [[Special:Watchlist/raw|redigere siden direkte]].',
'watchlistedit-raw-explain' => 'Siderne i din overvågningsliste er vist nedenfor, og kan ændres ved at tilføje og fjerne fra listen;
en side per linie
Når du er færdig, klik "{{int:Watchlistedit-raw-submit}}".
-Du kan også [[Special:Watchlist/edit|bruge standard editoren]].',
+Du kan også [[Special:EditWatchlist|bruge standard editoren]].',
'watchlistedit-raw-titles' => 'Sider:',
'watchlistedit-raw-submit' => 'Opdater overvågningsliste',
'watchlistedit-raw-done' => 'Din overvågningsliste blev opdateret.',
@@ -3229,33 +3426,33 @@ Du kan også [[Special:Watchlist/edit|bruge standard editoren]].',
'duplicate-defaultsort' => 'Advarsel: Standardsorteringsnøglen "$2" tilsidesætter den tidligere sorteringsnøgle "$1".',
# Special:Version
-'version' => 'Version',
-'version-extensions' => 'Installerede udvidelser',
-'version-specialpages' => 'Specialsider',
-'version-parserhooks' => 'Oversætter-funktioner',
-'version-variables' => 'Variabler',
-'version-skins' => 'Udseender',
-'version-other' => 'Andet',
-'version-mediahandlers' => 'Specialhåndtering af mediefiler',
-'version-hooks' => 'Funktionstilføjelser',
-'version-extension-functions' => 'Udvidelsesfunktioner',
-'version-parser-extensiontags' => 'Tilføjede tags',
-'version-parser-function-hooks' => 'Oversætter-funktioner',
-'version-skin-extension-functions' => 'Ekstra funktioner til udseende',
-'version-hook-name' => 'Navn',
-'version-hook-subscribedby' => 'Brugt af',
-'version-version' => '(Version $1)',
-'version-license' => 'Licens',
-'version-poweredby-credits' => "Denne wiki er drevet af'''[http://www.mediawiki.org/ MediaWiki ]''', copyright © 2001 - $1 $2.",
-'version-poweredby-others' => 'andre',
-'version-license-info' => 'MediaWiki er gratis software; du kan redistribuere det og/eller ændre det under betingelserne i GNU General Public License som offentliggjort af Free Software Foundation; enten version 2 af licensen eller (efter eget valg) enhver senere version.
+'version' => 'Version',
+'version-extensions' => 'Installerede udvidelser',
+'version-specialpages' => 'Specialsider',
+'version-parserhooks' => 'Oversætter-funktioner',
+'version-variables' => 'Variabler',
+'version-antispam' => 'Spamforebyggelse',
+'version-skins' => 'Udseender',
+'version-other' => 'Andet',
+'version-mediahandlers' => 'Specialhåndtering af mediefiler',
+'version-hooks' => 'Funktionstilføjelser',
+'version-extension-functions' => 'Udvidelsesfunktioner',
+'version-parser-extensiontags' => 'Tilføjede tags',
+'version-parser-function-hooks' => 'Oversætter-funktioner',
+'version-hook-name' => 'Navn',
+'version-hook-subscribedby' => 'Brugt af',
+'version-version' => '(Version $1)',
+'version-license' => 'Licens',
+'version-poweredby-credits' => "Denne wiki er drevet af '''[//www.mediawiki.org/ MediaWiki ]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'andre',
+'version-license-info' => 'MediaWiki er gratis software; du kan redistribuere det og/eller ændre det under betingelserne i GNU General Public License som offentliggjort af Free Software Foundation; enten version 2 af licensen eller (efter eget valg) enhver senere version.
MediaWiki distribueres i håb om at det vil være nyttigt, men UDEN NOGEN GARANTI; uden selv de underforståede garantier SALGBARHED eller EGNETHED TIL ET BESTEMT FORMÅL. Se GNU General Public License for yderligere detaljer.
-Du skulle have modtaget [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi af GNU General Public License] sammen med dette program; og hvis ikke, så skriv til Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA or [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html læs den online].',
-'version-software' => 'Installeret software',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Version',
+Du skulle have modtaget [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi af GNU General Public License] sammen med dette program; og hvis ikke, så skriv til Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA or [//www.gnu.org/licenses/old-licenses/gpl-2.0.html læs den online].',
+'version-software' => 'Installeret software',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath' => 'Filsti',
@@ -3265,22 +3462,22 @@ Du skulle have modtaget [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi af GNU General
Billeder vises i fuld opløsning, og andre mediatyper vil blive aktiveret med deres tilhørende program.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Find dubletfiler',
-'fileduplicatesearch-summary' => 'Find dublerede filer baseret på deres hash-værdi.
-
-Angiv filnavnet uden "{{ns:file}}:"-præfikset.',
-'fileduplicatesearch-legend' => 'Find dubletfiler.',
-'fileduplicatesearch-filename' => 'Filnavn:',
-'fileduplicatesearch-submit' => 'Find',
-'fileduplicatesearch-info' => '$1 × $2 punkter<br />Filstørrelse: $3<br />MIME-type: $4',
-'fileduplicatesearch-result-1' => 'Filen "$1" har ingen identiske dubletter.',
-'fileduplicatesearch-result-n' => 'Filen "$1" har {{PLURAL:$2|en dublet|$2 dubletter}}.',
+'fileduplicatesearch' => 'Find dubletfiler',
+'fileduplicatesearch-summary' => 'Find dublerede filer baseret på deres hash-værdi.',
+'fileduplicatesearch-legend' => 'Find dubletfiler.',
+'fileduplicatesearch-filename' => 'Filnavn:',
+'fileduplicatesearch-submit' => 'Find',
+'fileduplicatesearch-info' => '$1 × $2 punkter<br />Filstørrelse: $3<br />MIME-type: $4',
+'fileduplicatesearch-result-1' => 'Filen "$1" har ingen identiske dubletter.',
+'fileduplicatesearch-result-n' => 'Filen "$1" har {{PLURAL:$2|en dublet|$2 dubletter}}.',
+'fileduplicatesearch-noresults' => 'Ingen fil med navnet "$1" blev fundet.',
# Special:SpecialPages
'specialpages' => 'Specialsider',
'specialpages-note' => '----
* Normale specialsider.
-* <strong class="mw-specialpagerestricted">Specialsider med begrænset adgang.</strong>',
+* <span class="mw-specialpagerestricted">Specialsider med begrænset adgang.</span>
+* <span class="mw-specialpagecached">Specialsider der opdateres med jævne mellemrum (kan være forældede).</span>',
'specialpages-group-maintenance' => 'Vedligeholdelsesside',
'specialpages-group-other' => 'Andre specialsider',
'specialpages-group-login' => 'Opret bruger / logon',
diff --git a/languages/messages/MessagesDe.php b/languages/messages/MessagesDe.php
index 14ca9443..d36b1b10 100644
--- a/languages/messages/MessagesDe.php
+++ b/languages/messages/MessagesDe.php
@@ -15,12 +15,16 @@
* @author Duesentrieb
* @author Giftpflanze
* @author Imre
+ * @author Inkowik
* @author Jan Luca
* @author Jens Liebenau
* @author Jimmy Collins <jimmy.collins@web.de>
+ * @author Kebap
* @author Kghbln
* @author Khaledelmansoury
+ * @author Krinkle
* @author Kwin
+ * @author LWChris
* @author Li-sung
* @author Locos epraix
* @author Lyzzy
@@ -81,7 +85,10 @@ $namespaceAliases = array(
'Bild' => NS_FILE,
'Bild_Diskussion' => NS_FILE_TALK,
);
-
+$namespaceGenderAliases = array(
+ NS_USER => array( 'male' => 'Benutzer', 'female' => 'Benutzerin' ),
+ NS_USER_TALK => array( 'male' => 'Benutzer_Diskussion', 'female' => 'Benutzerin_Diskussion' ),
+);
$bookstoreList = array(
'abebooks.de' => 'http://www.abebooks.de/servlet/BookSearchPL?ph=2&isbn=$1',
@@ -95,98 +102,101 @@ $separatorTransformTable = array( ',' => '.', '.' => ',' );
$linkTrail = '/^([äöüßa-z]+)(.*)$/sDu';
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Doppelte_Weiterleitungen' ),
+ 'Activeusers' => array( 'Aktive_Benutzer' ),
+ 'Allmessages' => array( 'MediaWiki-Systemnachrichten', 'Systemnachrichten' ),
+ 'Allpages' => array( 'Alle_Seiten' ),
+ 'Ancientpages' => array( 'Älteste_Seiten' ),
+ 'Blankpage' => array( 'Leerseite', 'Leere_Seite' ),
+ 'Block' => array( 'Sperren' ),
+ 'Blockme' => array( 'Proxy-Sperre' ),
+ 'Booksources' => array( 'ISBN-Suche' ),
'BrokenRedirects' => array( 'Kaputte_Weiterleitungen' ),
- 'Disambiguations' => array( 'Begriffsklärungsverweise' ),
- 'Userlogin' => array( 'Anmelden' ),
- 'Userlogout' => array( 'Abmelden' ),
+ 'Categories' => array( 'Kategorien' ),
+ 'ChangeEmail' => array( 'E-Mail-Adresse_ändern' ),
+ 'ChangePassword' => array( 'Passwort_ändern', 'Passwort_zurücksetzen' ),
+ 'ComparePages' => array( 'Seiten_vergleichen' ),
+ 'Confirmemail' => array( 'E-Mail_bestaetigen', 'E-Mail_bestätigen' ),
+ 'Contributions' => array( 'Beiträge' ),
'CreateAccount' => array( 'Benutzerkonto_anlegen' ),
- 'Preferences' => array( 'Einstellungen' ),
- 'Watchlist' => array( 'Beobachtungsliste' ),
- 'Recentchanges' => array( 'Letzte_Änderungen' ),
- 'Upload' => array( 'Hochladen' ),
+ 'Deadendpages' => array( 'Sackgassenseiten' ),
+ 'DeletedContributions' => array( 'Gelöschte_Beiträge' ),
+ 'Disambiguations' => array( 'Begriffsklärungsverweise' ),
+ 'DoubleRedirects' => array( 'Doppelte_Weiterleitungen' ),
+ 'EditWatchlist' => array( 'Beobachtungsliste_bearbeiten' ),
+ 'Emailuser' => array( 'E-Mail' ),
+ 'Export' => array( 'Exportieren' ),
+ 'Fewestrevisions' => array( 'Wenigstbearbeitete_Seiten' ),
+ 'FileDuplicateSearch' => array( 'Dateiduplikatsuche', 'Datei-Duplikat-Suche' ),
+ 'Filepath' => array( 'Dateipfad' ),
+ 'Import' => array( 'Importieren' ),
+ 'Invalidateemail' => array( 'E-Mail_nicht_bestaetigen', 'E-Mail_nicht_bestätigen' ),
+ 'BlockList' => array( 'Liste_der_Sperren', 'Gesperrte_IP-Adressen', 'Gesperrte_IPs' ),
+ 'LinkSearch' => array( 'Weblinksuche', 'Weblink-Suche' ),
+ 'Listadmins' => array( 'Administratoren' ),
+ 'Listbots' => array( 'Bots' ),
'Listfiles' => array( 'Dateien', 'Dateiliste' ),
- 'Newimages' => array( 'Neue_Dateien' ),
- 'Listusers' => array( 'Benutzer', 'Benutzerliste' ),
'Listgrouprights' => array( 'Gruppenrechte' ),
- 'Statistics' => array( 'Statistik' ),
- 'Randompage' => array( 'Zufällige_Seite' ),
+ 'Listredirects' => array( 'Weiterleitungen' ),
+ 'Listusers' => array( 'Benutzer', 'Benutzerliste' ),
+ 'Lockdb' => array( 'Datenbank_sperren' ),
+ 'Log' => array( 'Logbuch' ),
'Lonelypages' => array( 'Verwaiste_Seiten' ),
- 'Uncategorizedpages' => array( 'Nicht_kategorisierte_Seiten' ),
- 'Uncategorizedcategories' => array( 'Nicht_kategorisierte_Kategorien' ),
- 'Uncategorizedimages' => array( 'Nicht_kategorisierte_Dateien' ),
- 'Uncategorizedtemplates' => array( 'Nicht_kategorisierte_Vorlagen' ),
- 'Unusedcategories' => array( 'Unbenutzte_Kategorien' ),
- 'Unusedimages' => array( 'Unbenutzte_Dateien' ),
- 'Wantedpages' => array( 'Gewünschte_Seiten' ),
- 'Wantedcategories' => array( 'Gewünschte_Kategorien' ),
- 'Wantedfiles' => array( 'Fehlende_Dateien' ),
- 'Wantedtemplates' => array( 'Fehlende_Vorlagen' ),
+ 'Longpages' => array( 'Längste_Seiten' ),
+ 'MergeHistory' => array( 'Versionsgeschichten_vereinen' ),
+ 'MIMEsearch' => array( 'MIME-Typ-Suche' ),
+ 'Mostcategories' => array( 'Meistkategorisierte_Seiten' ),
+ 'Mostimages' => array( 'Meistbenutzte_Dateien' ),
'Mostlinked' => array( 'Meistverlinkte_Seiten' ),
'Mostlinkedcategories' => array( 'Meistbenutzte_Kategorien' ),
'Mostlinkedtemplates' => array( 'Meistbenutzte_Vorlagen' ),
- 'Mostimages' => array( 'Meistbenutzte_Dateien' ),
- 'Mostcategories' => array( 'Meistkategorisierte_Seiten' ),
'Mostrevisions' => array( 'Meistbearbeitete_Seiten' ),
- 'Fewestrevisions' => array( 'Wenigstbearbeitete_Seiten' ),
- 'Shortpages' => array( 'Kürzeste_Seiten' ),
- 'Longpages' => array( 'Längste_Seiten' ),
+ 'Movepage' => array( 'Verschieben' ),
+ 'Mycontributions' => array( 'Meine_Beiträge' ),
+ 'Mypage' => array( 'Meine_Benutzerseite' ),
+ 'Mytalk' => array( 'Meine_Diskussionsseite' ),
+ 'Myuploads' => array( 'Meine_hochgeladenen_Dateien' ),
+ 'Newimages' => array( 'Neue_Dateien' ),
'Newpages' => array( 'Neue_Seiten' ),
- 'Ancientpages' => array( 'Älteste_Seiten' ),
- 'Deadendpages' => array( 'Sackgassenseiten' ),
+ 'PasswordReset' => array( 'Passwort_neu_vergeben' ),
+ 'PermanentLink' => array( 'Permanenter_Link' ),
+ 'Popularpages' => array( 'Beliebteste_Seiten' ),
+ 'Preferences' => array( 'Einstellungen' ),
+ 'Prefixindex' => array( 'Präfixindex' ),
'Protectedpages' => array( 'Geschützte_Seiten' ),
'Protectedtitles' => array( 'Geschützte_Titel', 'Gesperrte_Titel' ),
- 'Allpages' => array( 'Alle_Seiten' ),
- 'Prefixindex' => array( 'Präfixindex' ),
- 'Ipblocklist' => array( 'Liste_der_Sperren', 'Gesperrte_IP-Adressen', 'Gesperrte_IPs' ),
- 'Unblock' => array( 'Freigeben' ),
- 'Specialpages' => array( 'Spezialseiten' ),
- 'Contributions' => array( 'Beiträge' ),
- 'Emailuser' => array( 'E-Mail' ),
- 'Confirmemail' => array( 'E-Mail_bestaetigen', 'E-Mail_bestätigen' ),
- 'Whatlinkshere' => array( 'Linkliste', 'Verweisliste' ),
+ 'Randompage' => array( 'Zufällige_Seite' ),
+ 'Randomredirect' => array( 'Zufällige_Weiterleitung' ),
+ 'Recentchanges' => array( 'Letzte_Änderungen' ),
'Recentchangeslinked' => array( 'Änderungen_an_verlinkten_Seiten' ),
- 'Movepage' => array( 'Verschieben' ),
- 'Blockme' => array( 'Proxy-Sperre' ),
- 'Booksources' => array( 'ISBN-Suche' ),
- 'Categories' => array( 'Kategorien' ),
- 'Export' => array( 'Exportieren' ),
- 'Allmessages' => array( 'MediaWiki-Systemnachrichten' ),
- 'Log' => array( 'Logbuch' ),
- 'Blockip' => array( 'Sperren' ),
+ 'Revisiondelete' => array( 'Versionslöschung' ),
+ 'RevisionMove' => array( 'Version_verschieben' ),
+ 'Search' => array( 'Suche' ),
+ 'Shortpages' => array( 'Kürzeste_Seiten' ),
+ 'Specialpages' => array( 'Spezialseiten' ),
+ 'Statistics' => array( 'Statistik' ),
+ 'Tags' => array( 'Markierungen' ),
+ 'Unblock' => array( 'Freigeben' ),
+ 'Uncategorizedcategories' => array( 'Nicht_kategorisierte_Kategorien' ),
+ 'Uncategorizedimages' => array( 'Nicht_kategorisierte_Dateien' ),
+ 'Uncategorizedpages' => array( 'Nicht_kategorisierte_Seiten' ),
+ 'Uncategorizedtemplates' => array( 'Nicht_kategorisierte_Vorlagen' ),
'Undelete' => array( 'Wiederherstellen' ),
- 'Import' => array( 'Importieren' ),
- 'Lockdb' => array( 'Datenbank_sperren' ),
'Unlockdb' => array( 'Datenbank_entsperren' ),
- 'Userrights' => array( 'Benutzerrechte' ),
- 'MIMEsearch' => array( 'MIME-Typ-Suche' ),
- 'FileDuplicateSearch' => array( 'Datei-Duplikat-Suche' ),
- 'Unwatchedpages' => array( 'Ignorierte_Seiten', 'Unbeobachtete_Seiten' ),
- 'Listredirects' => array( 'Weiterleitungen' ),
- 'Revisiondelete' => array( 'Versionslöschung' ),
+ 'Unusedcategories' => array( 'Unbenutzte_Kategorien' ),
+ 'Unusedimages' => array( 'Unbenutzte_Dateien' ),
'Unusedtemplates' => array( 'Unbenutzte_Vorlagen' ),
- 'Randomredirect' => array( 'Zufällige_Weiterleitung' ),
- 'Mypage' => array( 'Meine_Benutzerseite' ),
- 'Mytalk' => array( 'Meine_Diskussionsseite' ),
- 'Mycontributions' => array( 'Meine_Beiträge' ),
- 'Myuploads' => array( 'Meine_hochgeladenen_Dateien' ),
- 'Listadmins' => array( 'Administratoren' ),
- 'Listbots' => array( 'Bots' ),
- 'Popularpages' => array( 'Beliebteste_Seiten' ),
- 'Search' => array( 'Suche' ),
- 'Resetpass' => array( 'Passwort_ändern', 'Passwort_zurücksetzen' ),
+ 'Unwatchedpages' => array( 'Ignorierte_Seiten', 'Unbeobachtete_Seiten' ),
+ 'Upload' => array( 'Hochladen' ),
+ 'Userlogin' => array( 'Anmelden' ),
+ 'Userlogout' => array( 'Abmelden' ),
+ 'Userrights' => array( 'Benutzerrechte' ),
+ 'Wantedcategories' => array( 'Gewünschte_Kategorien' ),
+ 'Wantedfiles' => array( 'Fehlende_Dateien' ),
+ 'Wantedpages' => array( 'Gewünschte_Seiten' ),
+ 'Wantedtemplates' => array( 'Fehlende_Vorlagen' ),
+ 'Watchlist' => array( 'Beobachtungsliste' ),
+ 'Whatlinkshere' => array( 'Linkliste', 'Verweisliste' ),
'Withoutinterwiki' => array( 'Fehlende_Interwikis' ),
- 'MergeHistory' => array( 'Versionsgeschichten_vereinen' ),
- 'Filepath' => array( 'Dateipfad' ),
- 'Invalidateemail' => array( 'E-Mail_nicht_bestaetigen', 'E-Mail_nicht_bestätigen' ),
- 'Blankpage' => array( 'Leerseite', 'Leere_Seite' ),
- 'LinkSearch' => array( 'Weblink-Suche' ),
- 'DeletedContributions' => array( 'Gelöschte_Beiträge' ),
- 'Tags' => array( 'Markierungen' ),
- 'Activeusers' => array( 'Aktive_Benutzer' ),
- 'ComparePages' => array( 'Seiten_vergleichen' ),
- 'Badtitle' => array( 'Ungültiger_Titel' ),
- 'DisableAccount' => array( 'Benutzerkonto_deaktivieren' ),
);
$datePreferences = array(
@@ -298,6 +308,7 @@ $magicWords = array(
'ns' => array( '0', 'NR:', 'NS:' ),
'nse' => array( '0', 'NR_URL:', 'NSE:' ),
'localurl' => array( '0', 'LOKALE_URL:', 'LOCALURL:' ),
+ 'articlepath' => array( '0', 'ARTIKELPFAD', 'ARTICLEPATH' ),
'scriptpath' => array( '0', 'SKRIPTPFAD', 'SCRIPTPATH' ),
'stylepath' => array( '0', 'STYLEPFAD', 'STYLEPATH' ),
'grammar' => array( '0', 'GRAMMATIK:', 'GRAMMAR:' ),
@@ -310,6 +321,7 @@ $magicWords = array(
'revisionday' => array( '1', 'REVISIONSTAG', 'REVISIONDAY' ),
'revisionday2' => array( '1', 'REVISIONSTAG2', 'REVISIONDAY2' ),
'revisionmonth' => array( '1', 'REVISIONSMONAT', 'REVISIONMONTH' ),
+ 'revisionmonth1' => array( '1', 'REVISIONSMONAT1', 'REVISIONMONTH1' ),
'revisionyear' => array( '1', 'REVISIONSJAHR', 'REVISIONYEAR' ),
'revisiontimestamp' => array( '1', 'REVISIONSZEITSTEMPEL', 'REVISIONTIMESTAMP' ),
'revisionuser' => array( '1', 'REVISIONSBENUTZER', 'REVISIONUSER' ),
@@ -386,8 +398,8 @@ $messages = array(
'tog-shownumberswatching' => 'Anzahl der beobachtenden Benutzer anzeigen',
'tog-oldsig' => 'Existierende Signatur:',
'tog-fancysig' => 'Signatur als Wikitext behandeln (ohne automatische Verlinkung)',
-'tog-externaleditor' => 'Externen Editor standardmäßig nutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer. [http://www.mediawiki.org/wiki/Manual:External_editors Weitere Informationen hierzu.])',
-'tog-externaldiff' => 'Externes Programm für Versionsunterschiede standardmäßig nutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer. [http://www.mediawiki.org/wiki/Manual:External_editors Weitere Informationen hierzu.])',
+'tog-externaleditor' => 'Externen Editor standardmäßig nutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer. [//www.mediawiki.org/wiki/Manual:External_editors Weitere Informationen hierzu.])',
+'tog-externaldiff' => 'Externes Programm für Versionsunterschiede standardmäßig nutzen (nur für Experten, erfordert spezielle Einstellungen auf dem eigenen Computer. [//www.mediawiki.org/wiki/Manual:External_editors Weitere Informationen hierzu.])',
'tog-showjumplinks' => '„Wechseln zu“-Links aktivieren',
'tog-uselivepreview' => 'Sofortige Vorschau nutzen (benötigt JavaScript) (experimentell)',
'tog-forceeditsummary' => 'Warnen, sofern beim Speichern die Zusammenfassung fehlt',
@@ -484,15 +496,7 @@ $messages = array(
'listingcontinuesabbrev' => '(Fortsetzung)',
'index-category' => 'Indizierte Seiten',
'noindex-category' => 'Nichtindizierte Seiten',
-
-'mainpagetext' => "'''MediaWiki wurde erfolgreich installiert.'''",
-'mainpagedocfooter' => 'Hilfe zur Benutzung und Konfiguration der Wiki-Software findest du im [http://meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuch].
-
-== Starthilfen ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste der Konfigurationsvariablen]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
+'broken-file-category' => 'Seiten mit defekten Dateilinks',
'about' => 'Ãœber',
'article' => 'Seite',
@@ -507,7 +511,7 @@ $messages = array(
# Cologne Blue skin
'qbfind' => 'Finden',
-'qbbrowse' => 'Blättern',
+'qbbrowse' => 'Durchsuchen',
'qbedit' => 'Bearbeiten',
'qbpageoptions' => 'Seitenoptionen',
'qbpageinfo' => 'Seitendaten',
@@ -544,10 +548,10 @@ $messages = array(
'history' => 'Versionen',
'history_short' => 'Versionen/Autoren',
'updatedmarker' => 'Änderung seit meinem letzten Besuch',
-'info_short' => 'Information',
'printableversion' => 'Druckversion',
'permalink' => 'Permanenter Link',
'print' => 'Drucken',
+'view' => 'Lesen',
'edit' => 'Bearbeiten',
'create' => 'Erstellen',
'editthispage' => 'Seite bearbeiten',
@@ -555,6 +559,7 @@ $messages = array(
'delete' => 'Löschen',
'deletethispage' => 'Diese Seite löschen',
'undelete_short' => '{{PLURAL:$1|1 Version|$1 Versionen}} wiederherstellen',
+'viewdeleted_short' => '{{PLURAL:$1|Eine gelöschte Version|$1 gelöschte Versionen}} ansehen',
'protect' => 'Schützen',
'protect_change' => 'ändern',
'protectthispage' => 'Seite schützen',
@@ -599,7 +604,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' => 'Ãœber {{SITENAME}}',
'aboutpage' => 'Project:Ãœber',
-'copyright' => 'Inhalt ist verfügbar unter der $1.',
+'copyright' => 'Inhalt ist verfügbar unter der Lizenz $1.',
'copyrightpage' => '{{ns:project}}:Urheberrechte',
'currentevents' => 'Aktuelle Ereignisse',
'currentevents-url' => 'Project:Aktuelle Ereignisse',
@@ -640,6 +645,8 @@ Siehe die [[Special:Version|Versionsseite]]',
'toc' => 'Inhaltsverzeichnis',
'showtoc' => 'Anzeigen',
'hidetoc' => 'Verbergen',
+'collapsible-collapse' => 'Einklappen',
+'collapsible-expand' => 'Ausklappen',
'thisisdeleted' => '$1 ansehen oder wiederherstellen?',
'viewdeleted' => '$1 anzeigen?',
'restorelink' => '$1 {{PLURAL:$1|gelöschte Version|gelöschte Versionen}}',
@@ -651,6 +658,8 @@ Siehe die [[Special:Version|Versionsseite]]',
'page-rss-feed' => 'RSS-Feed für „$1“',
'page-atom-feed' => 'Atom-Feed für „$1“',
'red-link-title' => '$1 (Seite nicht vorhanden)',
+'sort-descending' => 'Absteigend sortieren',
+'sort-ascending' => 'Aufsteigend sortieren',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Seite',
@@ -733,12 +742,13 @@ Bitte versuche es in ein paar Minuten erneut.',
'protectedinterface' => 'Diese Seite enthält Text für die Benutzeroberfläche der Software und ist geschützt, um Missbrauch vorzubeugen.',
'editinginterface' => "'''Warnung:''' Diese Seite enthält von der MediaWiki-Software genutzten Text.
Änderungen auf dieser Seite wirken sich auf die Benutzeroberfläche aus.
-Ziehe bitte im Fall von Übersetzungen in Betracht, diese bei [http://translatewiki.net/wiki/Main_Page?setlang=de translatewiki.net], der Lokalisierungsplattform für MediaWiki, durchzuführen.",
+Ziehe bitte im Fall von Übersetzungen in Betracht, diese bei [//translatewiki.net/wiki/Main_Page?setlang=de translatewiki.net], der Lokalisierungsplattform für MediaWiki, durchzuführen.",
'sqlhidden' => '(SQL-Abfrage versteckt)',
'cascadeprotected' => 'Diese Seite ist zur Bearbeitung gesperrt. Sie ist in die {{PLURAL:$1|folgende Seite|folgenden Seiten}} eingebunden, die mittels der Kaskadensperroption geschützt {{PLURAL:$1|ist|sind}}:
$2',
'namespaceprotected' => "Du hast nicht die erforderliche Berechtigung, um Seiten im Namensraum '''$1''' bearbeiten zu können.",
-'customcssjsprotected' => 'Du bist nicht berechtigt, diese Seite zu bearbeiten, da sie zu den persönlichen Einstellungen eines anderen Benutzers gehört.',
+'customcssprotected' => 'Du hast nicht die Berechtigung diese CSS enthaltende Seite zu bearbeiten, da sie die persönlichen Einstellungen eines anderen Benutzers enthält.',
+'customjsprotected' => 'Du hast nicht die Berechtigung diese JavaScript enthaltende Seite zu bearbeiten, da sie die persönlichen Einstellungen eines anderen Benutzers enthält.',
'ns-specialprotected' => 'Spezialseiten können nicht bearbeitet werden.',
'titleprotected' => "Eine Seite mit diesem Namen kann nicht angelegt werden.
Die Sperre wurde durch [[User:$1|$1]] mit der Begründung ''„$2“'' eingerichtet.",
@@ -777,6 +787,7 @@ Vergiss nicht, deine [[Special:Preferences|{{SITENAME}}-Einstellungen]] anzupass
'createaccount' => 'Benutzerkonto anlegen',
'gotaccount' => "Du hast bereits ein Benutzerkonto? '''$1'''.",
'gotaccountlink' => 'Anmelden',
+'userlogin-resetlink' => 'Die Anmeldedaten vergessen?',
'createaccountmail' => 'Benutzerkonto anlegen (mit Passwortzusendung)',
'createaccountreason' => 'Grund:',
'badretype' => 'Die beiden Passwörter stimmen nicht überein.',
@@ -786,12 +797,14 @@ Bitte wähle einen anderen.',
'createaccounterror' => 'Benutzerkonto konnte nicht erstellt werden: $1',
'nocookiesnew' => 'Der Benutzerzugang wurde erstellt, aber du bist nicht angemeldet. {{SITENAME}} benötigt für diese Funktion Cookies, bitte aktiviere diese und melde dich dann mit deinem neuen Benutzernamen und dem zugehörigen Passwort an.',
'nocookieslogin' => '{{SITENAME}} benutzt Cookies zur Anmeldung der Benutzer. Du hast Cookies deaktiviert, bitte aktiviere diese und versuche es erneut.',
+'nocookiesfornew' => 'Das Benutzerkonto wurde nicht erstellt, da die Datenherkunft nicht ermittelt werden konnte.
+Es muss sichergestellt sein, dass Cookies aktiviert sind. Danach diese Seite erneut laden und es wieder versuchen.',
'noname' => 'Du musst einen gültigen Benutzernamen angeben.',
'loginsuccesstitle' => 'Anmeldung erfolgreich',
'loginsuccess' => 'Du bist jetzt als „$1“ bei {{SITENAME}} angemeldet.',
'nosuchuser' => 'Der Benutzername „$1“ existiert nicht.
Überprüfe die Schreibweise (Groß-/Kleinschreibung beachten) oder [[Special:UserLogin/signup|melde dich als neuer Benutzer an]].',
-'nosuchusershort' => 'Der Benutzername „<nowiki>$1</nowiki>“ existiert nicht. Bitte überprüfe die Schreibweise.',
+'nosuchusershort' => 'Der Benutzername „$1“ existiert nicht. Bitte überprüfe die Schreibweise.',
'nouserspecified' => 'Bitte gib einen Benutzernamen an.',
'login-userblocked' => '{{GENDER:$1|Dieser Benutzer|Dieser Benutzerin|Dieser Benutzer}} ist gesperrt. Anmeldung nicht erlaubt.',
'wrongpassword' => 'Das Passwort ist falsch. Bitte versuche es erneut.',
@@ -836,13 +849,14 @@ Falls das Benutzerkonto irrtümlich angelegt wurde, kannst du diese Nachricht ig
'usernamehasherror' => 'Benutzernamen dürfen kein Rautenzeichen enthalten',
'login-throttled' => 'Du hast zu oft versucht, dich anzumelden.
Bitte warte, bevor du es erneut probierst.',
+'login-abort-generic' => 'Deine Anmeldung war nicht erfolgreich – Abgebrochen',
'loginlanguagelabel' => 'Sprache: $1',
'suspicious-userlogout' => 'Deine Abmeldeanfrage wurde verweigert, da sie vermutlich von einem defekten Browser oder einem Cache-Proxy gesendet wurde.',
# E-mail sending
'php-mail-error-unknown' => 'Unbekannter Fehler mit der Funktion mail() von PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Passwort ändern',
'resetpass_announce' => 'Anmeldung mit dem per E-Mail zugesandten Code. Um die Anmeldung abzuschließen, musst du jetzt ein neues Passwort wählen.',
'resetpass_text' => '<!-- Ergänze den Text hier -->',
@@ -860,6 +874,31 @@ Bitte warte, bevor du es erneut probierst.',
Möglicherweise hast du dein Passwort bereits erfolgreich geändert oder ein neues temporäres Passwort beantragt.',
'resetpass-temp-password' => 'Temporäres Passwort:',
+# Special:PasswordReset
+'passwordreset' => 'Passwort zurücksetzen',
+'passwordreset-text' => 'Bitte dieses Formular ausfüllen, um per E-Mail eine Erinnerung zu den Anmeldeinformationen deines Benutzerkontos zu erhalten.',
+'passwordreset-legend' => 'Passwort zurücksetzen',
+'passwordreset-disabled' => 'Das Zurücksetzen von Passwörtern wurde in diesem Wiki deaktiviert.',
+'passwordreset-pretext' => '{{PLURAL:$1||Gib eines der folgenden Daten ein}}',
+'passwordreset-username' => 'Benutzername:',
+'passwordreset-domain' => 'Domain:',
+'passwordreset-email' => 'E-Mail-Adresse:',
+'passwordreset-emailtitle' => 'Benutzerkontoinformationen auf {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Jemand mit der IP-Adresse $1, wahrscheinlich du selbst, hat eine Erinnerung an deine Benutzerkonteninformationen für {{SITENAME}} angefordert ($4). {{PLURAL:$3|Das folgende Benutzerkonto ist|Die folgenden Benutzerkonten sind}} mit dieser E-Mail-Adresse verknüpft:
+
+$2
+
+{{PLURAL:$3|Dieses temporäre Passwort läuft|Diese temporären Passwörter laufen}} innerhalb von {{PLURAL:$5|einem Tag|$5 Tagen}} ab.
+Du solltest dich anmelden und ein neues Passwort vergeben. Falls jemand anderes diese Anfrage getätigt hat oder du dich wieder an dein ursprüngliches Passwort erinnern kannst und es nicht länger ändern möchtest, kannst du diese Nachricht ignorieren und weiterhin dein altes Passwort benutzen.',
+'passwordreset-emailtext-user' => 'Benutzer $1 auf {{SITENAME}} hat eine Erinnerung an deine Benutzerkonteninformationen für {{SITENAME}} angefordert ($4). {{PLURAL:$3|Das folgende Benutzerkonto ist|Die folgenden Benutzerkonten sind}} mit dieser E-Mail-Adresse verknüpft:
+
+$2
+
+{{PLURAL:$3|Dieses temporäre Passwort läuft|Diese temporären Passwörter laufen}} innerhalb von {{PLURAL:$5|einem Tag|$5 Tagen}} ab. Du solltest dich anmelden und ein neues Passwort vergeben. Falls jemand anderes diese Anfrage getätigt hat oder du dich wieder an dein ursprüngliches Passwort erinnern kannst und es nicht ändern möchtest, kannst du diese Nachricht ignorieren und weiterhin dein altes Passwort benutzen.',
+'passwordreset-emailelement' => 'Benutzername: $1
+Temporäres Passwort: $2',
+'passwordreset-emailsent' => 'Eine Erinnerung wurde per E-Mail versandt.',
+
# Edit page toolbar
'bold_sample' => 'Fetter Text',
'bold_tip' => 'Fetter Text',
@@ -871,8 +910,6 @@ Möglicherweise hast du dein Passwort bereits erfolgreich geändert oder ein neu
'extlink_tip' => 'Externer Link (http:// beachten)',
'headline_sample' => 'Ebene-2-Ãœberschrift',
'headline_tip' => 'Ebene-2-Ãœberschrift',
-'math_sample' => 'Formel hier einfügen',
-'math_tip' => 'Mathematische Formel (LaTeX)',
'nowiki_sample' => 'Unformatierten Text hier einfügen',
'nowiki_tip' => 'Unformatierter Text',
'image_sample' => 'Beispiel.jpg',
@@ -956,7 +993,7 @@ oder die zugehörigen <span class="plainlinks">[{{fullurl:{{#special:Log}}|page=
'noarticletext-nopermission' => 'Diese Seite enthält momentan noch keinen Text.
Du kannst ihren Titel auf anderen Seiten [[Special:Search/{{PAGENAME}}|suchen]]
oder die zugehörigen <span class="plainlinks">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbücher betrachten].</span>',
-'userpage-userdoesnotexist' => 'Das Benutzerkonto „$1“ ist nicht vorhanden. Bitte prüfe, ob du diese Seite wirklich erstellen/bearbeiten willst.',
+'userpage-userdoesnotexist' => 'Das Benutzerkonto „<nowiki>$1</nowiki>“ ist nicht vorhanden. Bitte prüfe, ob du diese Seite wirklich erstellen/bearbeiten willst.',
'userpage-userdoesnotexist-view' => 'Das Benutzerkonto „$1“ ist nicht vorhanden.',
'blocked-notice-logextract' => '{{GENDER:$1|Dieser Benutzer|Diese Benutzerin|Dieser Benutzer}} ist zurzeit gesperrt.
Zur Information folgt ein aktueller Auszug aus dem Benutzersperr-Logbuch:',
@@ -992,6 +1029,7 @@ Sollte das Problem bestehen bleiben, [[Special:UserLogout|melde dich ab]] und da
Sollte das Problem bestehen bleiben, [[Special:UserLogout|melde dich ab]] und danach wieder an.'''",
'token_suffix_mismatch' => "'''Deine Bearbeitung wurde zurückgewiesen, da dein Browser Zeichen im Bearbeiten-Token verstümmelt hat.
Eine Speicherung kann den Seiteninhalt zerstören. Dies geschieht bisweilen durch die Benutzung eines anonymen Proxy-Dienstes, der fehlerhaft arbeitet.'''",
+'edit_form_incomplete' => "'''Der Inhalt des Bearbeitungsformulars hat den Server nicht vollständig erreicht. Bitte prüfe deine Bearbeitungen auf Vollständigkeit und versuche es erneut.'''",
'editing' => 'Bearbeiten von „$1“',
'editingsection' => 'Bearbeiten von „$1“ (Abschnitt)',
'editingcomment' => 'Bearbeiten von „$1“ (Neuer Abschnitt)',
@@ -1221,7 +1259,7 @@ Bitte prüfe die Logbücher.',
# Suppression log
'suppressionlog' => 'Oversight-Logbuch',
'suppressionlogtext' => 'Dies ist das Logbuch der Oversight-Aktionen (Änderungen der Sichtbarkeit von Versionen, Bearbeitungskommentaren, Benutzernamen und Benutzersperren).
-Siehe die [[Special:IPBlockList|Liste der gesperrten IP-Adressen und Benutzernamen]] für aktuelle Sperren.',
+Siehe die [[Special:BlockList|Liste der gesperrten IP-Adressen und Benutzernamen]] für aktuelle Sperren.',
# History merging
'mergehistory' => 'Versionsgeschichten vereinen',
@@ -1328,12 +1366,13 @@ Stelle sicher, dass die Versionsgeschichte einer Seite historisch korrekt ist.',
'searchdisabled' => 'Die {{SITENAME}}-Suche ist deaktiviert. Du kannst unterdessen mit Google suchen. Bitte bedenke, dass der Suchindex von {{SITENAME}} veraltet sein kann.',
# Quickbar
-'qbsettings' => 'Seitenleiste',
-'qbsettings-none' => 'Keine',
-'qbsettings-fixedleft' => 'Links, fest',
-'qbsettings-fixedright' => 'Rechts, fest',
-'qbsettings-floatingleft' => 'Links, schwebend',
-'qbsettings-floatingright' => 'Rechts, schwebend',
+'qbsettings' => 'Seitenleiste',
+'qbsettings-none' => 'Keine',
+'qbsettings-fixedleft' => 'Links, fest',
+'qbsettings-fixedright' => 'Rechts, fest',
+'qbsettings-floatingleft' => 'Links, schwebend',
+'qbsettings-floatingright' => 'Rechts, schwebend',
+'qbsettings-directionality' => 'Fest, abhängig von der Schreibrichtung der gewählten Sprache',
# Preferences page
'preferences' => 'Einstellungen',
@@ -1344,9 +1383,10 @@ Stelle sicher, dass die Versionsgeschichte einer Seite historisch korrekt ist.',
'changepassword' => 'Passwort ändern',
'prefs-skin' => 'Benutzeroberfläche',
'skin-preview' => 'Vorschau',
-'prefs-math' => 'TeX',
'datedefault' => 'Standard',
+'prefs-beta' => 'Beta-Funktionen',
'prefs-datetime' => 'Datum und Zeit',
+'prefs-labs' => 'Experimentelle Labor-Funktionen',
'prefs-personal' => 'Benutzerdaten',
'prefs-rc' => 'Letzte Änderungen',
'prefs-watchlist' => 'Beobachtungsliste',
@@ -1368,8 +1408,6 @@ Stelle sicher, dass die Versionsgeschichte einer Seite historisch korrekt ist.',
'columns' => 'Spalten:',
'searchresultshead' => 'Suche',
'resultsperpage' => 'Treffer pro Seite:',
-'contextlines' => 'Zeilen pro Treffer:',
-'contextchars' => 'Zeichen pro Zeile:',
'stub-threshold' => 'Linkformatierung <a href="#" class="stub">kleiner Seiten</a> (in Byte):',
'stub-threshold-disabled' => 'Deaktiviert',
'recentchangesdays' => 'Anzahl der Tage, die die Liste der „Letzten Änderungen“ standardmäßig umfassen soll:',
@@ -1382,7 +1420,7 @@ Hier ein zufällig generierter Wert, den du verwenden kannst: $1',
'savedprefs' => 'Deine Einstellungen wurden gespeichert.',
'timezonelegend' => 'Zeitzone:',
'localtime' => 'Ortszeit:',
-'timezoneuseserverdefault' => 'Standardzeit des Servers',
+'timezoneuseserverdefault' => 'Standardzeit des Wikis nutzen ($1)',
'timezoneuseoffset' => 'Andere (Unterschied angeben)',
'timezoneoffset' => 'Unterschied¹:',
'servertime' => 'Aktuelle Zeit auf dem Server:',
@@ -1431,8 +1469,8 @@ Dies kann nicht mehr rückgängig gemacht werden.',
'prefs-help-gender' => 'Optional: Wird unter anderem von der Software für die geschlechtsspezifische Anrede genutzt. Diese Information ist <u>öffentlich</u>.',
'email' => 'E-Mail',
'prefs-help-realname' => 'Optional. Damit kann dein bürgerlicher Name deinen Beiträgen zugeordnet werden.',
-'prefs-help-email' => 'Die Angabe einer E-Mail ist optional, ermöglicht aber die Zusendung eines Ersatzpasswortes, wenn du dein Passwort vergessen hast.
-Mit anderen Benutzern kannst du auch über die Benutzerdiskussionsseiten Kontakt aufnehmen, ohne dass du deine Identität offenlegen musst.',
+'prefs-help-email' => 'Die Angabe einer E-Mail-Adresse ist optional, ermöglicht aber die Zusendung eines Ersatzpasswortes, sofern du dein Passwort vergessen hast.',
+'prefs-help-email-others' => 'Mit anderen Benutzern kannst du auch über die Benutzerdiskussionsseiten Kontakt aufnehmen, ohne dass du deine Identität offenlegen musst.',
'prefs-help-email-required' => 'Es wird eine gültige E-Mail-Adresse benötigt.',
'prefs-info' => 'Basisinformationen',
'prefs-i18n' => 'Sprache',
@@ -1557,15 +1595,15 @@ Mit anderen Benutzern kannst du auch über die Benutzerdiskussionsseiten Kontakt
'right-userrights' => 'Benutzerrechte bearbeiten',
'right-userrights-interwiki' => 'Benutzerrechte in anderen Wikis bearbeiten',
'right-siteadmin' => 'Datenbank sperren und entsperren',
-'right-reset-passwords' => 'Passwort eines anderen Benutzers zurücksetzen',
'right-override-export-depth' => 'Exportiere Seiten einschließlich verlinkter Seiten bis zu einer Tiefe von 5',
'right-sendemail' => 'E-Mails an andere Benutzer senden',
# User rights log
-'rightslog' => 'Rechte-Logbuch',
-'rightslogtext' => 'Dies ist das Logbuch der Änderungen der Benutzerrechte.',
-'rightslogentry' => 'änderte die Benutzerrechte für „$1“ von „$2“ auf „$3“',
-'rightsnone' => '(–)',
+'rightslog' => 'Rechte-Logbuch',
+'rightslogtext' => 'Dies ist das Logbuch der Änderungen der Benutzerrechte.',
+'rightslogentry' => 'änderte die Benutzerrechte für „$1“ von „$2“ auf „$3“',
+'rightslogentry-autopromote' => 'wurde automatisch von „$2“ nach „$3“ zugeordnet',
+'rightsnone' => '(–)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'die Seite zu lesen',
@@ -1688,11 +1726,12 @@ Um ein '''Bild''' in einer Seite zu verwenden, nutze einen Link in der folgenden
'minlength1' => 'Dateinamen müssen mindestens einen Buchstaben lang sein.',
'illegalfilename' => 'Der Dateiname „$1“ enthält mindestens ein nicht erlaubtes Zeichen. Bitte benenne die Datei um und versuche sie erneut hochzuladen.',
'badfilename' => 'Der Dateiname wurde in „$1“ geändert.',
-'filetype-mime-mismatch' => 'Dateierweiterung stimmt nicht mit dem MIME-Typ überein.',
+'filetype-mime-mismatch' => 'Dateierweiterung „.$1“ stimmt nicht mit dem MIME-Typ ($2) überein.',
'filetype-badmime' => 'Dateien mit dem MIME-Typ „$1“ dürfen nicht hochgeladen werden.',
'filetype-bad-ie-mime' => 'Diese Datei kann nicht hochgeladen werden, da der Internet Explorer sie als „$1“ erkennt, welcher ein nicht erlaubter potentiell gefährlicher Dateityp ist.',
'filetype-unwanted-type' => "'''„.$1“''' ist ein unerwünschtes Dateiformat. Erlaubt {{PLURAL:$3|ist das Dateiformat|sind die Dateiformate}}: $2.",
-'filetype-banned-type' => "'''„.$1“''' ist ein nicht erlaubtes Dateiformat. Erlaubt {{PLURAL:$3|ist das Dateiformat|sind die Dateiformate}}: $2.",
+'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|ist ein nicht erlaubter Dateityp|sind nicht erlaubte Dateitypen}}.
+{{PLURAL:$3|Erlaubter Dateityp ist|Erlaubte Dateitypen sind}} $2.",
'filetype-missing' => 'Die hochzuladende Datei hat keine Erweiterung (z. B. „.jpg“).',
'empty-file' => 'Die übertragene Datei ist leer',
'file-too-large' => 'Die übertragene Datei ist zu groß',
@@ -1708,6 +1747,7 @@ Um ein '''Bild''' in einer Seite zu verwenden, nutze einen Link in der folgenden
'large-file' => 'Die Dateigröße sollte nach Möglichkeit $1 nicht überschreiten. Diese Datei ist $2 groß.',
'largefileserver' => 'Die Datei ist größer als die vom Server eingestellte Maximalgröße.',
'emptyfile' => 'Die hochgeladene Datei ist leer. Der Grund kann ein Tippfehler im Dateinamen sein. Bitte kontrolliere, ob du die Datei wirklich hochladen willst.',
+'windows-nonascii-filename' => 'Dieses Wiki unterstützt keine Dateinamen die Sonderzeichen enthalten.',
'fileexists' => "Eine Datei mit diesem Namen existiert bereits.
Bitte prüfe '''<tt>[[:$1]]</tt>''', wenn du dir nicht sicher bist, ob du sie ändern willst.
[[$1|thumb]]",
@@ -1743,6 +1783,8 @@ Wenn du diese Datei trotzdem hochladen möchtest, gehe bitte zurück und ändere
Bitte überprüfe die <code>file_uploads</code>-Einstellung.',
'uploadscripted' => 'Diese Datei enthält HTML- oder Scriptcode, der irrtümlich von einem Webbrowser ausgeführt werden könnte.',
'uploadvirus' => 'Diese Datei enthält einen Virus! Details: $1',
+'uploadjava' => 'Dies ist eine ZIP-Datei, die ein CLASS-Datei von Java enthält.
+Das Hochladen von Java-Dateien ist nicht gestattet, da sie die Umgehung von Sicherheitseinschränkungen ermöglichen könnten.',
'upload-source' => 'Quelldatei',
'sourcefilename' => 'Quelldatei:',
'sourceurl' => 'Quell-URL:',
@@ -1752,10 +1794,6 @@ Bitte überprüfe die <code>file_uploads</code>-Einstellung.',
'upload-options' => 'Hochlade-Optionen',
'watchthisupload' => 'Diese Datei beobachten',
'filewasdeleted' => 'Eine Datei mit diesem Namen wurde schon einmal hochgeladen und zwischenzeitlich wieder gelöscht. Bitte prüfe zuerst den Eintrag im $1, bevor du die Datei wirklich speicherst.',
-'upload-wasdeleted' => "'''Achtung: Du lädst eine Datei hoch, die bereits früher gelöscht wurde.'''
-
-Bitte prüfe sorgfältig, ob das erneute Hochladen den Richtlinien entspricht.
-Zu deiner Information folgt das Lösch-Logbuch mit der Begründung für die vorhergehende Löschung:",
'filename-bad-prefix' => "Der Dateiname beginnt mit '''„$1“'''. Dies ist im allgemeinen der von einer Digitalkamera vorgegebene Dateiname und daher nicht sehr aussagekräftig.
Bitte gib der Datei einen Namen, der den Inhalt besser beschreibt.",
'filename-prefix-blacklist' => ' #<!-- Diese Zeile darf nicht verändert werden! --> <pre>
@@ -1794,12 +1832,29 @@ Wenn das Problem weiter besteht, informiere einen [[Special:ListUsers/sysop|Syst
'upload-unknown-size' => 'Unbekannte Größe',
'upload-http-error' => 'Ein HTTP-Fehler ist aufgetreten: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Es ist ein Fehler beim Öffnen der Datei zur ZIP-Überprüfung aufgetreten.',
+'zip-wrong-format' => 'Die angegebene Datei ist keine ZIP-Datei.',
+'zip-bad' => 'Die Datei ist beschädigt oder eine aus anderweitigen Gründen nicht lesbare ZIP-Datei.
+Sie kann daher keiner ordnungsgemäßen Sicherheitsüberprüfung unterzogen werden.',
+'zip-unsupported' => 'Diese ZIP-Datei verfügt über Komprimierungseigenschaften, die nicht von MediaWiki unterstützt werden.
+Sie kann daher keiner ordnungsgemäßen Sicherheitsüberprüfung unterzogen werden.',
+
+# 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-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 die Sitzungsdaten abgelaufen sind. Bitte erneut versuchen.',
+'uploadstash-errclear' => 'Das Entfernen der vorab gespeicherten Dateien war erfolglos.',
+'uploadstash-refresh' => 'Liste der Dateien aktualisieren',
+
# img_auth script messages
'img-auth-accessdenied' => 'Zugriff verweigert',
-'img-auth-nopathinfo' => 'PATH_INFO fehlt.
-Dein Server ist nicht dafür eingerichtet, diese Information weiterzugeben.
-Es könnte CGI-basiert sein und unterstützt img_auth nicht.
-Siehe http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+'img-auth-nopathinfo' => "PATH_INFO fehlt.
+Der Server ist nicht dafür eingerichtet, diese Information weiterzugeben.
+Sie könnte CGI-gestützt sein und unterstützt img_auth nicht.
+Siehe hierzu die Seite [//www.mediawiki.org/wiki/Manual:Image_Authorization ''image authorization''].",
'img-auth-notindir' => 'Der gewünschte Pfad ist nicht im konfigurierten Uploadverzeichnis.',
'img-auth-badtitle' => 'Aus „$1“ kann kein gültiger Titel erstellt werden.',
'img-auth-nologinnWL' => 'Du bist nicht angemeldet und „$1“ ist nicht in der weißen Liste.',
@@ -1874,7 +1929,7 @@ Die folgende Liste zeigt nur {{PLURAL:$1|den ersten Link|die ersten $1 Links}} a
Eine [[Special:WhatLinksHere/$2|vollständige Liste]] ist verfügbar.',
'nolinkstoimage' => 'Keine Seite benutzt diese Datei.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Weitere Links]] auf diese Datei.',
-'redirectstofile' => 'Die {{PLURAL:$1|folgende Datei leitet|folgenden $1 Dateien leiten}} auf diese Datei weiter:',
+'linkstoimage-redirect' => '$1 (Dateiweiterleitung) $2',
'duplicatesoffile' => 'Die {{PLURAL:$1|folgende Datei ist ein Duplikat|folgenden $1 Dateien sind Duplikate}} dieser Datei ([[Special:FileDuplicateSearch/$2|weitere Details]]):',
'sharedupload' => 'Diese Datei stammt aus $1 und darf von anderen Projekten verwendet werden.',
'sharedupload-desc-there' => 'Diese Datei stammt aus $1 und darf von anderen Projekten verwendet werden. Siehe auf der [$2 Dateibeschreibungsseite] nach weiteren Informationen.',
@@ -1962,26 +2017,27 @@ Eine [[Special:WhatLinksHere/$2|vollständige Liste]] ist verfügbar.',
'statistics-users-active-desc' => 'Benutzer mit Bearbeitungen {{PLURAL:$1|in den letzten 24 Stunden|in den vergangenen $1 Tagen}}',
'statistics-mostpopular' => 'Meistbesuchte Seiten',
-'disambiguations' => 'Begriffsklärungsseiten',
+'disambiguations' => 'Seiten die auf Begriffsklärungsseiten verlinken',
'disambiguationspage' => 'Template:Begriffsklärung',
'disambiguations-text' => 'Die folgenden Seiten verlinken auf eine Seite zur Begriffsklärung. Sie sollten statt dessen auf die eigentlich gemeinte Seite verlinken.
Eine Seite gilt als Begriffsklärungsseite, wenn sie eine der in [[MediaWiki:Disambiguationspage]] aufgeführte(n) Vorlage(n) einbindet.<br />
Links aus Namensräumen werden hier nicht aufgelistet.',
-'doubleredirects' => 'Doppelte Weiterleitungen',
-'doubleredirectstext' => 'Diese Liste enthält Weiterleitungen, die auf weitere Weiterleitungen verlinken.
+'doubleredirects' => 'Doppelte Weiterleitungen',
+'doubleredirectstext' => 'Diese Liste enthält Weiterleitungen, die auf weitere Weiterleitungen verlinken.
Jede Zeile enthält Links zu der ersten und zweiten Weiterleitung sowie das Ziel der zweiten Weiterleitung, welches für gewöhnlich die gewünschte Zielseite ist, auf die bereits die erste Weiterleitung zeigen sollte.
<del>Durchgestrichene</del> Einträge wurden bereits erledigt.',
-'double-redirect-fixed-move' => '[[$1]] wurde verschoben und leitet nun nach [[$2]] weiter.',
-'double-redirect-fixer' => 'RedirectBot',
+'double-redirect-fixed-move' => '[[$1]] wurde verschoben und leitet nun nach [[$2]] weiter.',
+'double-redirect-fixed-maintenance' => 'Bereinigung der doppelten Weiterleitung von [[$1]] nach [[$2]].',
+'double-redirect-fixer' => 'RedirectBot',
'brokenredirects' => 'Defekte Weiterleitungen',
'brokenredirectstext' => 'Diese Spezialseite listet Weiterleitungen auf nicht existierende Seiten auf.',
'brokenredirects-edit' => 'bearbeiten',
'brokenredirects-delete' => 'löschen',
-'withoutinterwiki' => 'Seiten ohne Links zu anderen Sprachen',
+'withoutinterwiki' => 'Nicht zu anderen Sprachen verlinkende Seiten',
'withoutinterwiki-summary' => 'Die folgenden Seiten verlinken nicht auf andere Sprachversionen.',
'withoutinterwiki-legend' => 'Präfix',
'withoutinterwiki-submit' => 'Zeige',
@@ -2007,12 +2063,12 @@ Jede Zeile enthält Links zu der ersten und zweiten Weiterleitung sowie das Ziel
'unusedcategories' => 'Unbenutzte Kategorien',
'unusedimages' => 'Unbenutzte Dateien',
'popularpages' => 'Beliebteste Seiten',
-'wantedcategories' => 'Benutzte, aber nicht angelegte Kategorien',
+'wantedcategories' => 'Gewünschte Kategorien',
'wantedpages' => 'Gewünschte Seiten',
'wantedpages-badtitle' => 'Ungültiger Titel im Ergebnis: $1',
-'wantedfiles' => 'Fehlende Dateien',
-'wantedtemplates' => 'Fehlende Vorlagen',
-'mostlinked' => 'Häufig verlinkte Seiten',
+'wantedfiles' => 'Gewünschte Dateien',
+'wantedtemplates' => 'Gewünschte Vorlagen',
+'mostlinked' => 'Meistverlinkte Seiten',
'mostlinkedcategories' => 'Meistbenutzte Kategorien',
'mostlinkedtemplates' => 'Meistbenutzte Vorlagen',
'mostcategories' => 'Seiten mit den meisten Kategorien',
@@ -2028,7 +2084,7 @@ Jede Zeile enthält Links zu der ersten und zweiten Weiterleitung sowie das Ziel
'protectedpages-cascade' => 'Nur Seiten mit Kaskadenschutz',
'protectedpagestext' => 'Diese Spezialseite zeigt alle vor dem Verschieben oder Bearbeiten geschützten Seiten.',
'protectedpagesempty' => 'Aktuell sind keine Seiten mit diesen Parametern geschützt.',
-'protectedtitles' => 'Geschützte Titel',
+'protectedtitles' => 'Geschützte Seitennamen',
'protectedtitlestext' => 'Die folgenden Titel wurden zur Neuerstellung gesperrt.',
'protectedtitlesempty' => 'Zurzeit sind mit den angegebenen Parametern keine Seiten zur Neuerstellung gesperrt.',
'listusers' => 'Benutzerverzeichnis',
@@ -2050,6 +2106,7 @@ Jede Zeile enthält Links zu der ersten und zweiten Weiterleitung sowie das Ziel
'pager-newer-n' => '{{PLURAL:$1|nächster|nächste $1}}',
'pager-older-n' => '{{PLURAL:$1|vorheriger|vorherige $1}}',
'suppress' => 'Oversight',
+'querypage-disabled' => 'Diese Spezialseite wurde aus Gründen der Leistungserhaltung deaktiviert.',
# Book sources
'booksources' => 'ISBN-Suche',
@@ -2060,8 +2117,8 @@ Jede Zeile enthält Links zu der ersten und zweiten Weiterleitung sowie das Ziel
Bitte prüfe, ob sie korrekt von der Quelle übertragen wurde.',
# Special:Log
-'specialloguserlabel' => 'Benutzer:',
-'speciallogtitlelabel' => 'Titel:',
+'specialloguserlabel' => 'Ausführender Benutzer:',
+'speciallogtitlelabel' => 'Ziel (Titel oder Benutzer):',
'log' => 'Logbücher',
'all-logs-page' => 'Alle öffentlichen Logbücher',
'alllogstext' => 'Dies ist die kombinierte Anzeige aller in {{SITENAME}} geführten Logbücher.
@@ -2105,7 +2162,7 @@ Siehe auch die Liste der [[Special:WantedCategories|gewünschten Kategorien]].',
'linksearch-pat' => 'Suchmuster:',
'linksearch-ns' => 'Namensraum:',
'linksearch-ok' => 'Suchen',
-'linksearch-text' => 'Diese Spezialseite ermöglicht die Suche nach Seiten, in denen bestimmte Weblinks enthalten sind. Dabei können Wildcards wie beispielsweise <tt>*.example.com</tt> benutzt werden.<br />Unterstützte Protokolle: <tt>$1</tt>',
+'linksearch-text' => 'Diese Spezialseite ermöglicht die Suche nach Seiten, in denen bestimmte Weblinks enthalten sind. Dabei können Platzhalter wie beispielsweise <tt>*.beispiel.de</tt> benutzt werden. Es muss mindestens eine Top-Level-Domain, z. B. „*.org“. angegeben werden. <br />Unterstützte Protokolle: <tt>$1</tt> (Diese bitte nicht bei der Suchanfrage angeben.)',
'linksearch-line' => '$1 ist verlinkt von $2',
'linksearch-error' => 'Wildcards können nur am Anfang der URL verwendet werden.',
@@ -2166,6 +2223,10 @@ Als Absender wird die E-Mail-Adresse aus deinen [[Special:Preferences|Einstellun
'noemailtext' => 'Dieser Benutzer hat keine gültige E-Mail-Adresse angegeben.',
'nowikiemailtitle' => 'E-Mail-Versand nicht möglich',
'nowikiemailtext' => 'Dieser Benutzer möchte keine E-Mails von anderen Benutzern erhalten.',
+'emailnotarget' => 'Nicht vorhandener oder ungültiger Benutzername für den Empfang einer E-Mail.',
+'emailtarget' => 'Den Benutzer eingeben, um E-Mails erhalten zu können.',
+'emailusername' => 'Benutzername:',
+'emailusernamesubmit' => 'Speichern',
'email-legend' => 'E-Mail an einen anderen {{SITENAME}}-Benutzer senden',
'emailfrom' => 'Von:',
'emailto' => 'An:',
@@ -2191,12 +2252,12 @@ Als Absender wird die E-Mail-Adresse aus deinen [[Special:Preferences|Einstellun
'watchlistanontext' => 'Du musst dich $1, um deine Beobachtungsliste sehen oder Einträge auf ihr bearbeiten zu können.',
'watchnologin' => 'Du bist nicht angemeldet',
'watchnologintext' => 'Du musst [[Special:UserLogin|angemeldet]] sein, um deine Beobachtungsliste bearbeiten zu können.',
-'addedwatch' => 'Zur Beobachtungsliste hinzugefügt',
+'addwatch' => 'Zur Beobachtungsliste hinzufügen',
'addedwatchtext' => 'Die Seite „[[:$1]]“ wurde zu deiner [[Special:Watchlist|Beobachtungsliste]] hinzugefügt.
Spätere Änderungen an dieser Seite und der dazugehörigen Diskussionsseite werden dort gelistet und
in der Übersicht der [[Special:RecentChanges|letzten Änderungen]] in Fettschrift dargestellt.',
-'removedwatch' => 'Von der Beobachtungsliste entfernt',
+'removewatch' => 'Von der Beobachtungsliste entfernen',
'removedwatchtext' => 'Die Seite „[[:$1]]“ wurde von deiner [[Special:Watchlist|Beobachtungsliste]] entfernt.',
'watch' => 'Beobachten',
'watchthispage' => 'Seite beobachten',
@@ -2217,8 +2278,9 @@ in der Übersicht der [[Special:RecentChanges|letzten Änderungen]] in Fettschri
'watchlist-options' => 'Anzeigeoptionen',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Beobachten …',
-'unwatching' => 'Nicht beobachten …',
+'watching' => 'Beobachten …',
+'unwatching' => 'Nicht beobachten …',
+'watcherrortext' => 'Beim Ändern der Beobachtungslisteneinstellungen für „$1“ ist ein Fehler aufgetreten.',
'enotif_mailer' => '{{SITENAME}}-E-Mail-Benachrichtigungsdienst',
'enotif_reset' => 'Alle Seiten als besucht markieren',
@@ -2249,13 +2311,13 @@ Es werden dir solange keine weiteren Benachrichtigungs-E-Mails gesendet, bis du
Dein freundliches {{SITENAME}}-Benachrichtigungssystem
--
-Um die Einstellungen der E-Mail-Benachrichtigung anzupassen, besuche {{fullurl:{{#special:Preferences}}}}
+Um die Einstellungen der E-Mail-Benachrichtigung anzupassen, besuche {{canonicalurl:{{#special:Preferences}}}}
-Um die Einstellungen deiner Beobachtungsliste anzupassen, besuche {{fullurl:{{#special:Watchlist}}/edit}}
+Um die Einstellungen deiner Beobachtungsliste anzupassen, besuche {{canonicalurl:{{#special:EditWatchlist}}}}
Um die Seite von deiner Beobachtungsliste herunterzunehmen, besuche $UNWATCHURL
-Rückmeldungen und weitere Hilfe: {{fullurl:{{MediaWiki:Helppage}}}}',
+Rückmeldungen und weitere Hilfe: {{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Seite löschen',
@@ -2270,7 +2332,7 @@ Rückmeldungen und weitere Hilfe: {{fullurl:{{MediaWiki:Helppage}}}}',
'confirmdeletetext' => 'Du bist dabei, eine Seite mit allen zugehörigen älteren Versionen zu löschen. Bitte bestätige dazu, dass du dir der Konsequenzen bewusst bist, und dass du in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]] handelst.',
'actioncomplete' => 'Aktion beendet',
'actionfailed' => 'Aktion fehlgeschlagen',
-'deletedtext' => '„<nowiki>$1</nowiki>“ wurde gelöscht. Im $2 findest du eine Liste der letzten Löschungen.',
+'deletedtext' => '„$1“ wurde gelöscht. Im $2 findest du eine Liste der letzten Löschungen.',
'deletedarticle' => 'löschte „[[$1]]“',
'suppressedarticle' => 'veränderte die Sichtbarkeit von „[[$1]]“',
'dellogpage' => 'Lösch-Logbuch',
@@ -2374,9 +2436,8 @@ Siehe die [[Special:ProtectedPages|Liste der geschützten Seiten]] für alle akt
'viewdeletedpage' => 'Gelöschte Seiten anzeigen',
'undeletepagetext' => 'Die {{PLURAL:$1|folgende Seite wurde gelöscht und kann|folgenden $1 Seiten wurden gelöscht und können}} von Administratoren wiederhergestellt werden:',
'undelete-fieldset-title' => 'Wiederherstellen',
-'undeleteextrahelp' => '* Um die Seite komplett mit allen Versionen wiederherzustellen, wähle keine Version aus, gib eine Begründung an und klicke auf „{{int:undeletebtn}}“.
-* Möchtest du nur bestimmte Versionen wiederherstellen, so wähle diese bitte einzeln anhand der Markierungen aus, gib eine Begründung an und klicke dann auf „{{int:undeletebtn}}“.
-* „{{int:undeletereset}}“ leert das Kommentarfeld und entfernt alle Markierungen bei den Versionen.',
+'undeleteextrahelp' => '* Um die Seite mitsamt aller Versionen wiederherzustellen, wähle keine Version aus, gib eine Begründung an und klicke dann auf „{{int:undeletebtn}}“.
+* Um lediglich bestimmte Versionen der Seite wiederherzustellen, wähle die betreffenden Versionen einzeln aus, gib eine Begründung an und klicke dann auf „{{int:undeletebtn}}“.',
'undeleterevisions' => '{{PLURAL:$1|1 Version|$1 Versionen}} archiviert',
'undeletehistory' => 'Wenn du diese Seite wiederherstellst, werden auch alle alten Versionen wiederhergestellt.
Wenn seit der Löschung eine neue Seite gleichen Namens erstellt wurde, werden die wiederhergestellten Versionen chronologisch in die Versionsgeschichte eingeordnet.',
@@ -2403,7 +2464,7 @@ Der aktuelle Text der gelöschten Seite ist nur Administratoren zugänglich.',
Im [[Special:Log/delete|Lösch-Logbuch]] findest du eine Übersicht der gelöschten und wiederhergestellten Seiten.",
'undelete-header' => 'Siehe das [[Special:Log/delete|Lösch-Logbuch]] für kürzlich gelöschte Seiten.',
-'undelete-search-box' => 'Suche nach gelöschten Seiten',
+'undelete-search-box' => 'Nach gelöschten Seiten suchen',
'undelete-search-prefix' => 'Suchbegriff (Wortanfang ohne Wildcards):',
'undelete-search-submit' => 'Suchen',
'undelete-no-results' => 'Es wurde im Archiv keine zum Suchbegriff passende Seite gefunden.',
@@ -2419,9 +2480,12 @@ $1',
'undelete-show-file-submit' => 'Ja',
# Namespace form on various pages
-'namespace' => 'Namensraum:',
-'invert' => 'Auswahl umkehren',
-'blanknamespace' => '(Seiten)',
+'namespace' => 'Namensraum:',
+'invert' => 'Auswahl umkehren',
+'tooltip-invert' => 'Dieses Auswahlfeld anklicken, um Änderungen im gewählten Namensraum und, sofern ausgewählt, dem entsprechenden zugehörigen Namensraum auszublenden',
+'namespace_association' => 'Zugeordneter Namensraum',
+'tooltip-namespace_association' => 'Dieses Auswahlfeld anklicken, um den deiner Auswahl zugehörigen Diskussionsnamensraum, oder im umgekehrten Fall, den zugehörigen Namensraum, mit einzubeziehen',
+'blanknamespace' => '(Seiten)',
# Contributions
'contributions' => 'Benutzerbeiträge',
@@ -2470,13 +2534,15 @@ Zur Information folgt der aktuelle Auszug aus dem Sperr-Logbuch:',
'whatlinkshere-filters' => 'Filter',
# Block/unblock
+'autoblockid' => 'Automatische Sperrung #$1',
+'block' => 'Benutzer sperren',
+'unblock' => 'Benutzer freigeben',
'blockip' => 'IP-Adresse/Benutzer sperren',
'blockip-title' => 'Benutzer sperren',
'blockip-legend' => 'IP-Adresse/Benutzer sperren',
'blockiptext' => 'Mit diesem Formular sperrst du eine IP-Adresse oder einen Benutzernamen, so dass von dort keine Änderungen mehr vorgenommen werden können.
Dies sollte nur erfolgen, um Vandalismus zu verhindern und in Ãœbereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]].
Bitte gib den Grund für die Sperre an.',
-'ipaddress' => 'IP-Adresse:',
'ipadressorusername' => 'IP-Adresse oder Benutzername:',
'ipbexpiry' => 'Sperrdauer:',
'ipbreason' => 'Grund:',
@@ -2489,7 +2555,7 @@ Bitte gib den Grund für die Sperre an.',
** Ungebührliches Verhalten
** Missbrauch mit mehreren Benutzerkonten
** Ungeeigneter Benutzername',
-'ipbanononly' => 'Nur unangemeldete Benutzer sperren',
+'ipb-hardblock' => 'Angemeldete Benutzer daran hindern, Bearbeitungen unter dieser IP-Adresse vorzunehmen',
'ipbcreateaccount' => 'Erstellung von Benutzerkonten verhindern',
'ipbemailban' => 'E-Mail-Versand sperren',
'ipbenableautoblock' => 'Sperre die aktuell von diesem Benutzer genutzte IP-Adresse sowie automatisch alle folgenden, von denen aus er Bearbeitungen oder das Anlegen von Benutzerkonten versucht',
@@ -2500,12 +2566,15 @@ Bitte gib den Grund für die Sperre an.',
'ipbotherreason' => 'Anderer/ergänzender Grund:',
'ipbhidename' => 'Benutzername in Bearbeitungen und Listen verstecken',
'ipbwatchuser' => 'Benutzer(diskussions)seite beobachten',
-'ipballowusertalk' => 'Benutzer darf eigene Diskussionsseiten während seiner Sperre bearbeiten',
+'ipb-disableusertalk' => 'Diesen Benutzer daran hindern seine eigene Diskussionsseite zu bearbeiten, solange er gesperrt ist',
'ipb-change-block' => 'Sperre mit diesen Sperrparametern erneuern',
+'ipb-confirm' => 'Sperrung bestätigen',
'badipaddress' => 'Die IP-Adresse hat ein falsches Format.',
'blockipsuccesssub' => 'Sperre erfolgreich',
'blockipsuccesstext' => 'Der Benutzer/die IP-Adresse [[Special:Contributions/$1|$1]] wurde gesperrt.<br />
-Zur Aufhebung der Sperre siehe die [[Special:IPBlockList|Liste aller aktiven Sperren]].',
+Zur Aufhebung der Sperre siehe die [[Special:BlockList|Liste aller aktiven Sperren]].',
+'ipb-blockingself' => 'Du bist gerade dabei, dich selbst zu sperren! Möchtest du das wirklich tun?',
+'ipb-confirmhideuser' => 'Du bist gerade dabei einen Benutzer im Modus „Benutzer verstecken“ zu sperren. Dies führt dazu, dass der Benutzername in allen Listen und Logbüchern unterdrückt wird. Möchtest du das wirklich tun?',
'ipb-edit-dropdown' => 'Sperrgründe bearbeiten',
'ipb-unblock-addr' => '„$1“ freigeben',
'ipb-unblock' => 'IP-Adresse/Benutzer freigeben',
@@ -2515,17 +2584,23 @@ Zur Aufhebung der Sperre siehe die [[Special:IPBlockList|Liste aller aktiven Spe
'unblockiptext' => 'Mit diesem Formular kannst du eine IP-Adresse oder einen Benutzer freigeben.',
'ipusubmit' => 'Freigeben',
'unblocked' => '[[User:$1|$1]] wurde freigegeben',
+'unblocked-range' => 'Sperre für $1 wurde aufgehoben',
'unblocked-id' => 'Sperr-ID $1 wurde freigegeben',
+'blocklist' => 'Gesperrte Benutzer',
'ipblocklist' => 'Gesperrte Benutzer',
'ipblocklist-legend' => 'Suche nach einem gesperrten Benutzer',
-'ipblocklist-username' => 'Benutzername oder IP-Adresse:',
-'ipblocklist-sh-userblocks' => 'Benutzersperren $1',
-'ipblocklist-sh-tempblocks' => 'Befristete Sperren $1',
-'ipblocklist-sh-addressblocks' => 'IP-Sperren $1',
+'blocklist-userblocks' => 'Benutzersperren ausblenden',
+'blocklist-tempblocks' => 'Befristete Sperren ausblenden',
+'blocklist-addressblocks' => 'Sperren einzelner IP-Adressen ausblenden',
+'blocklist-timestamp' => 'Zeitstempel',
+'blocklist-target' => 'Ziel',
+'blocklist-expiry' => 'Sperrdauer bis',
+'blocklist-by' => 'Gesperrt von',
+'blocklist-params' => 'Sperrparameter',
+'blocklist-reason' => 'Grund',
'ipblocklist-submit' => 'Suchen',
'ipblocklist-localblock' => 'Lokale Sperre',
'ipblocklist-otherblocks' => 'Andere {{PLURAL:$1|Sperre|Sperren}}',
-'blocklistline' => '$1, $2 sperrte $3 ($4)',
'infiniteblock' => 'unbegrenzt',
'expiringblock' => 'endet am $1 um $2 Uhr',
'anononlyblock' => 'nur Anonyme',
@@ -2548,7 +2623,7 @@ Es folgt der Eintrag aus dem Unterdrückungs-Logbuch:',
'reblock-logentry' => 'änderte die Sperre von „[[$1]]“ für den Zeitraum: $2 $3',
'blocklogtext' => 'Dies ist das Logbuch über Sperrungen und Entsperrungen von Benutzern und IP-Adressen.
Automatisch gesperrte IP-Adressen werden nicht erfasst.
-Siehe die [[Special:IPBlockList|Liste der gesperrten IP-Adressen und Benutzernamen]] für alle aktiven Sperren.',
+Siehe die [[Special:BlockList|Liste der gesperrten IP-Adressen und Benutzernamen]] für alle aktiven Sperren.',
'unblocklogentry' => 'hob die Sperre von „$1“ auf',
'block-log-flags-anononly' => 'nur Anonyme',
'block-log-flags-nocreate' => 'Erstellung von Benutzerkonten gesperrt',
@@ -2562,9 +2637,9 @@ Siehe die [[Special:IPBlockList|Liste der gesperrten IP-Adressen und Benutzernam
'ipb_expiry_temp' => 'Benutzernamens-Sperren mit der Verstecken-Option müssen permanent sein.',
'ipb_hide_invalid' => 'Dieses Konto kann nicht unterdrückt werden, da es zu viele Bearbeitungen aufweist.',
'ipb_already_blocked' => '„$1“ wurde bereits gesperrt.',
-'ipb-needreblock' => '== Sperre vorhanden ==
-„$1“ ist bereits gesperrt. Möchtest du die Sperrparameter ändern?',
+'ipb-needreblock' => '„$1“ ist bereits gesperrt. Möchtest du die Sperrparameter ändern?',
'ipb-otherblocks-header' => 'Andere {{PLURAL:$1|Sperre|Sperren}}',
+'unblock-hideuser' => 'Dieser Benutzer kann nicht entsperrt werden, da dessen Benutzername versteckt wurde.',
'ipb_cant_unblock' => 'Fehler: Sperr-ID $1 nicht gefunden. Die Sperre wurde bereits aufgehoben.',
'ipb_blocked_as_range' => 'Fehler: Die IP-Adresse $1 wurde als Teil der Bereichssperre $2 indirekt gesperrt. Eine Entsperrung von $1 alleine ist nicht möglich.',
'ip_range_invalid' => 'Ungültiger IP-Adressbereich.',
@@ -2597,6 +2672,7 @@ Siehe die [[Special:IPBlockList|Liste der gesperrten IP-Adressen und Benutzernam
'unlockdbsuccesstext' => 'Die {{SITENAME}}-Datenbank wurde freigegeben.',
'lockfilenotwritable' => 'Die Datenbank-Sperrdatei ist nicht beschreibbar. Zum Sperren oder Freigeben der Datenbank muss diese für den Webserver beschreibbar sein.',
'databasenotlocked' => 'Die Datenbank ist nicht gesperrt.',
+'lockedbyandtime' => '(von $1 am $2 um $3 Uhr)',
# Move page
'move-page' => 'Verschieben von „$1“',
@@ -2673,7 +2749,8 @@ Bitte den '''neuen''' Titel unter '''Ziel''' eintragen, darunter die Umbenennung
Die Seite „[[:$1]]“ existiert bereits. Möchtest du diese löschen, um die Seite verschieben zu können?',
'delete_and_move_confirm' => 'Ja, Seite löschen',
'delete_and_move_reason' => 'gelöscht, um Platz für Verschiebung zu machen',
-'selfmove' => 'Ursprungs- und Zielname sind gleich; eine Seite kann nicht auf sich selbst verschoben werden.',
+'selfmove' => 'Ursprungs- und Zielname sind gleich.
+Eine Seite kann nicht auf sich selbst verschoben werden.',
'immobile-source-namespace' => 'Seiten des „$1“-Namensraums können nicht verschoben werden',
'immobile-target-namespace' => 'Seiten können nicht in den „$1“-Namensraum verschoben werden',
'immobile-target-namespace-iw' => 'Interwiki-Link ist kein gültiges Ziel für Seitenverschiebungen.',
@@ -2720,7 +2797,7 @@ Alternativ ist der Export auch mit der Syntax [[{{#Special:Export}}/{{MediaWiki:
'allmessagesdefault' => 'Standardtext',
'allmessagescurrent' => 'Aktueller Text',
'allmessagestext' => 'Dies ist eine Liste der MediaWiki-Systemtexte.
-Bitte besuche die Seiten [http://www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [http://translatewiki.net translatewiki.net], sofern du dich an der Lokalisierung von MediaWiki beteiligen möchtest.',
+Bitte besuche die Seiten [//www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [//translatewiki.net translatewiki.net], sofern du dich an der Lokalisierung von MediaWiki beteiligen möchtest.',
'allmessagesnotsupportedDB' => 'Diese Spezialseite steht nicht zur Verfügung, da sie über den Parameter <tt>$wgUseDatabaseMessages</tt> deaktiviert wurde.',
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter für angepassten Zustand:',
@@ -2858,35 +2935,42 @@ Diese auf dem lokalen Rechner speichern und danach hier hochladen.',
'tooltip-summary' => 'Gib eine kurze Zusammenfassung ein',
# Stylesheets
-'common.css' => '/* Das folgende CSS wird für alle Benutzeroberflächen geladen. */',
-'standard.css' => '/* Das folgende CSS wird für Benutzer der Klassik-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
-'nostalgia.css' => '/* Das folgende CSS wird für Benutzer der Nostalgie-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
-'cologneblue.css' => '/* Das folgende CSS wird für Benutzer der Kölnisch-Blau-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
-'monobook.css' => '/* Das folgende CSS wird für Benutzer der Monobook-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
-'myskin.css' => '/* Das folgende CSS wird für Benutzer der MySkin-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
-'chick.css' => '/* Das folgende CSS wird für Benutzer der Küken-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
-'simple.css' => '/* Das folgende CSS wird für Benutzer der Einfach-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
-'modern.css' => '/* Das folgende CSS wird für Benutzer der Modern-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte MediaWiki:Common.css bearbeiten. */',
-'vector.css' => '/* Das folgende CSS wird für Benutzer der Vector-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
-'print.css' => '/* Das folgende CSS wird in der Druckausgabe geladen. */',
-'handheld.css' => '/* Das folgende CSS wird für Handheld-Geräte, basierend auf der in $wgHandheldStyle konfigurierten Benutzeroberfläche, geladen. */',
+'common.css' => '/* Das folgende CSS wird für alle Benutzeroberflächen geladen. */',
+'standard.css' => '/* Das folgende CSS wird für Benutzer der Klassik-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
+'nostalgia.css' => '/* Das folgende CSS wird für Benutzer der Nostalgie-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
+'cologneblue.css' => '/* Das folgende CSS wird für Benutzer der Kölnisch-Blau-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
+'monobook.css' => '/* Das folgende CSS wird für Benutzer der Monobook-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
+'myskin.css' => '/* Das folgende CSS wird für Benutzer der MySkin-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
+'chick.css' => '/* Das folgende CSS wird für Benutzer der Küken-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
+'simple.css' => '/* Das folgende CSS wird für Benutzer der Einfach-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
+'modern.css' => '/* Das folgende CSS wird für Benutzer der Modern-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte MediaWiki:Common.css bearbeiten. */',
+'vector.css' => '/* Das folgende CSS wird für Benutzer der Vector-Benutzeroberfläche geladen. Für allgemeingültige Benutzeroberflächen-Anpassungen bitte [[MediaWiki:Common.css]] bearbeiten. */',
+'print.css' => '/* Das folgende CSS wird in der Druckausgabe geladen. */',
+'handheld.css' => '/* Das folgende CSS wird für Handheld-Geräte, basierend auf der in $wgHandheldStyle konfigurierten Benutzeroberfläche, geladen. */',
+'noscript.css' => '/* Das folgende CSS wirkt sich für Benutzer aus, die JavaScript deaktiviert haben */',
+'group-autoconfirmed.css' => '/* CSS an dieser Stelle wirkt sich nur auf automatisch bestätigte Benutzer aus */',
+'group-bot.css' => '/* CSS an dieser Stelle wirkt sich nur auf Bots aus */',
+'group-sysop.css' => '/* CSS an dieser Stelle wirkt sich nur auf Administratoren aus */',
+'group-bureaucrat.css' => '/* Das folgende CSS wird nur für Bürokraten geladen. */',
# Scripts
-'common.js' => '/* Das folgende JavaScript wird für alle Benutzer geladen. */',
-'standard.js' => '/* Das folgende JavaScript wird für Benutzer der Klassik-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
-'nostalgia.js' => '/* Das folgende JavaScript wird für Benutzer der Nostalgie-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
-'cologneblue.js' => '/* Das folgende JavaScript wird für Benutzer der Kölnisch-Blau-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
-'monobook.js' => '/* Das folgende JavaScript wird für Benutzer der Monobook-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
-'myskin.js' => '/* Das folgende JavaScript wird für Benutzer der MySkin-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
-'chick.js' => '/* Das folgende JavaScript wird für Benutzer der Küken-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
-'simple.js' => '/* Das folgende JavaScript wird für Benutzer der Einfach-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
-'modern.js' => '/* Das folgende JavaScript wird für Benutzer der Modern-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
-'vector.js' => '/* Das folgende JavaScript wird für Benutzer der Vector-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
+'common.js' => '/* Das folgende JavaScript wird für alle Benutzer geladen. */',
+'standard.js' => '/* Das folgende JavaScript wird für Benutzer der Klassik-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
+'nostalgia.js' => '/* Das folgende JavaScript wird für Benutzer der Nostalgie-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
+'cologneblue.js' => '/* Das folgende JavaScript wird für Benutzer der Kölnisch-Blau-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
+'monobook.js' => '/* Das folgende JavaScript wird für Benutzer der Monobook-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
+'myskin.js' => '/* Das folgende JavaScript wird für Benutzer der MySkin-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
+'chick.js' => '/* Das folgende JavaScript wird für Benutzer der Küken-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
+'simple.js' => '/* Das folgende JavaScript wird für Benutzer der Einfach-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
+'modern.js' => '/* Das folgende JavaScript wird für Benutzer der Modern-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
+'vector.js' => '/* Das folgende JavaScript wird für Benutzer der Vector-Benutzeroberfläche geladen. Allgemeingültiges JavaScript bitte in [[MediaWiki:Common.js]] eintragen. */',
+'group-autoconfirmed.js' => '/* Das folgende JavaScript wird nur für automatisch bestätigte Benutzer geladen. */',
+'group-bot.js' => '/* Das folgende JavaScript wird nur für Bots geladen. */',
+'group-sysop.js' => '/* Das folgende JavaScript wird nur für Administratoren geladen. */',
+'group-bureaucrat.js' => '/* Das folgende JavaScript wird nur für Bürokraten geladen. */',
# Metadata
-'nodublincore' => 'Dublin-Core-RDF-Metadaten sind auf diesem Server deaktiviert.',
-'nocreativecommons' => 'Creative-Commons-RDF-Metadaten sind auf diesem Server deaktiviert.',
-'notacceptable' => 'Der Wiki-Server kann die Daten nicht für dein Ausgabegerät aufbereiten.',
+'notacceptable' => 'Der Wiki-Server kann die Daten nicht für dein Ausgabegerät aufbereiten.',
# Attribution
'anonymous' => '{{PLURAL:$1|Unangemeldeter Benutzer|Unangemeldete Benutzer}} auf {{SITENAME}}',
@@ -2910,12 +2994,17 @@ Das liegt wahrscheinlich an einem Link auf eine externe Seite.',
'spam_blanking' => 'Alle Versionen enthielten Links zu $1, bereinigt.',
# Info page
-'infosubtitle' => 'Seiteninformation',
-'numedits' => 'Anzahl der Seitenänderungen: $1',
-'numtalkedits' => 'Anzahl der Diskussionsänderungen: $1',
-'numwatchers' => 'Anzahl der Beobachter: $1',
-'numauthors' => 'Anzahl der Autoren: $1',
-'numtalkauthors' => 'Anzahl der Diskussionsteilnehmer: $1',
+'pageinfo-title' => 'Informationen zu „$1“',
+'pageinfo-header-edits' => 'Bearbeitungen',
+'pageinfo-header-watchlist' => 'Beobachtungsliste',
+'pageinfo-header-views' => 'Seitenaufrufe',
+'pageinfo-subjectpage' => 'Seite',
+'pageinfo-talkpage' => 'Diskussionsseite',
+'pageinfo-watchers' => 'Anzahl der Beobachter',
+'pageinfo-edits' => 'Anzahl der Bearbeitungen',
+'pageinfo-authors' => 'Anzahl unterschiedlicher Autoren',
+'pageinfo-views' => 'Anzahl der Seitenaufrufe',
+'pageinfo-viewsperedit' => 'Seitenaufrufe pro Bearbeitung',
# Skin names
'skinname-standard' => 'Klassik',
@@ -2928,25 +3017,6 @@ Das liegt wahrscheinlich an einem Link auf eine externe Seite.',
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vector',
-# Math options
-'mw_math_png' => 'Immer als PNG darstellen',
-'mw_math_simple' => 'Einfaches TeX als HTML darstellen, ansonsten als PNG',
-'mw_math_html' => 'Sofern möglich als HTML darstellen, ansonsten als PNG',
-'mw_math_source' => 'Als TeX belassen (für Textbrowser)',
-'mw_math_modern' => 'Für moderne Browser empfohlene Darstellungsmethode',
-'mw_math_mathml' => 'Sofern möglich als MathML darstellen (experimentell)',
-
-# Math errors
-'math_failure' => 'Fehler beim Parsen',
-'math_unknown_error' => 'Unbekannter Fehler',
-'math_unknown_function' => 'Unbekannte Funktion ',
-'math_lexing_error' => '„Lexing“-Fehler',
-'math_syntax_error' => 'Syntaxfehler',
-'math_image_error' => 'PNG-Konvertierung fehlgeschlagen. Bitte die korrekte Installation von LaTeX und dvipng überprüfen (oder dvips + gs + convert)',
-'math_bad_tmpdir' => 'Das temporäre Verzeichnis für mathematische Formeln kann nicht angelegt oder beschrieben werden.',
-'math_bad_output' => 'Das Zielverzeichnis für mathematische Formeln kann nicht angelegt oder beschrieben werden.',
-'math_notexvc' => 'Das texvc-Programm wurde nicht gefunden. Bitte zur Konfiguration die Hinweise in der Datei math/README beachten.',
-
# Patrolling
'markaspatrolleddiff' => 'Als kontrolliert markieren',
'markaspatrolledtext' => 'Diese Seite als kontrolliert markieren',
@@ -2982,22 +3052,25 @@ $1',
'nextdiff' => 'Zum nächsten Versionsunterschied →',
# Media information
-'mediawarning' => "'''Warnung:''' Dieser Dateityp kann böswilligen Programmcode enthalten.
+'mediawarning' => "'''Warnung:''' Dieser Dateityp kann böswilligen Programmcode enthalten.
Durch das Herunterladen und Öffnen der Datei kann dein Computer beschädigt werden.",
-'imagemaxsize' => "Maximale Bildgröße:<br />''(für Dateibeschreibungsseiten)''",
-'thumbsize' => 'Standardgröße der Vorschaubilder (Thumbnails):',
-'widthheightpage' => '$1×$2, {{PLURAL:$3|1 Seite|$3 Seiten}}',
-'file-info' => 'Dateigröße: $1, MIME-Typ: $2',
-'file-info-size' => '$1 × $2 Pixel, Dateigröße: $3, MIME-Typ: $4',
-'file-nohires' => '<small>Keine höhere Auflösung vorhanden.</small>',
-'svg-long-desc' => 'SVG-Datei, Basisgröße: $1 × $2 Pixel, Dateigröße: $3',
-'show-big-image' => 'Volle Auflösung',
-'show-big-image-thumb' => '<small>Größe der Voransicht: $1 × $2 Pixel</small>',
-'file-info-gif-looped' => 'Endlosschleife',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|Bild|Bilder}}',
-'file-info-png-looped' => 'Endlosschleife',
-'file-info-png-repeat' => '$1-{{PLURAL:$1|mal|mal}} abgespielt',
-'file-info-png-frames' => '$1 {{PLURAL:$1|Bild|Bilder}}',
+'imagemaxsize' => "Maximale Bildgröße:<br />''(für Dateibeschreibungsseiten)''",
+'thumbsize' => 'Standardgröße der Vorschaubilder (Thumbnails):',
+'widthheightpage' => '$1×$2, {{PLURAL:$3|1 Seite|$3 Seiten}}',
+'file-info' => 'Dateigröße: $1, MIME-Typ: $2',
+'file-info-size' => '$1 × $2 Pixel, Dateigröße: $3, MIME-Typ: $4',
+'file-info-size-pages' => '$1 × $2 Pixel, Dateigröße: $3, MIME-Typ: $4, $5 {{PLURAL:$5|Seite| Seiten}}',
+'file-nohires' => '<small>Keine höhere Auflösung vorhanden.</small>',
+'svg-long-desc' => 'SVG-Datei, Basisgröße: $1 × $2 Pixel, Dateigröße: $3',
+'show-big-image' => 'Volle Auflösung',
+'show-big-image-preview' => '<small>Größe dieser Vorschau: $1.</small>',
+'show-big-image-other' => '<small>Weitere Auflösungen: $1.</small>',
+'show-big-image-size' => '$1 × $2 Pixel',
+'file-info-gif-looped' => 'Endlosschleife',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|Bild|Bilder}}',
+'file-info-png-looped' => 'Endlosschleife',
+'file-info-png-repeat' => '$1-{{PLURAL:$1|mal|mal}} abgespielt',
+'file-info-png-frames' => '$1 {{PLURAL:$1|Bild|Bilder}}',
# Special:NewFiles
'newimages' => 'Neue Dateien',
@@ -3022,14 +3095,21 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
'metadata-help' => 'Diese Datei enthält weitere Informationen, die in der Regel von der Digitalkamera oder dem verwendeten Scanner stammen. Durch nachträgliche Bearbeitung der Originaldatei können einige Details verändert worden sein.',
'metadata-expand' => 'Erweiterte Details einblenden',
'metadata-collapse' => 'Erweiterte Details ausblenden',
-'metadata-fields' => 'Die folgenden Felder der EXIF-Metadaten in diesem MediaWiki-Systemtext werden auf Bildbeschreibungsseiten angezeigt; weitere standardmäßig „eingeklappte“ Details können angezeigt werden.
+'metadata-fields' => 'Die folgenden Felder der EXIF-Metadaten, die in diesem MediaWiki-Systemtext angegeben sind, werden auf Bildbeschreibungsseiten mit eingeklappter Metadatentabelle angezeigt.
+Weitere werden standardmäßig nicht angezeigt.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Breite',
@@ -3044,13 +3124,11 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
'exif-ycbcrpositioning' => 'Y und C Positionierung',
'exif-xresolution' => 'Horizontale Auflösung',
'exif-yresolution' => 'Vertikale Auflösung',
-'exif-resolutionunit' => 'Maßeinheit der Auflösung',
'exif-stripoffsets' => 'Bilddaten-Versatz',
'exif-rowsperstrip' => 'Anzahl Zeilen pro Streifen',
'exif-stripbytecounts' => 'Bytes pro komprimiertem Streifen',
'exif-jpeginterchangeformat' => 'Offset zu JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Größe der JPEG-Daten in Bytes',
-'exif-transferfunction' => 'Ãœbertragungsfunktion',
'exif-whitepoint' => 'Manuell mit Messung',
'exif-primarychromaticities' => 'Primäre Farbart',
'exif-ycbcrcoefficients' => 'YCbCr-Koeffizienten',
@@ -3069,7 +3147,6 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
'exif-compressedbitsperpixel' => 'Komprimierte Bits pro Pixel',
'exif-pixelydimension' => 'Bildbreite',
'exif-pixelxdimension' => 'Bildhöhe',
-'exif-makernote' => 'Herstellernotiz',
'exif-usercomment' => 'Benutzerkommentare',
'exif-relatedsoundfile' => 'Zugehörige Tondatei',
'exif-datetimeoriginal' => 'Erfassungszeitpunkt',
@@ -3083,7 +3160,6 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
'exif-exposureprogram' => 'Belichtungsprogramm',
'exif-spectralsensitivity' => 'Spectral Sensitivity',
'exif-isospeedratings' => 'Film- oder Sensorempfindlichkeit (ISO)',
-'exif-oecf' => 'Optoelektronischer Umrechnungsfaktor',
'exif-shutterspeedvalue' => 'APEX-Belichtungszeitwert',
'exif-aperturevalue' => 'APEX-Blendenwert',
'exif-brightnessvalue' => 'APEX-Helligkeitswert',
@@ -3096,7 +3172,6 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
'exif-focallength' => 'Brennweite',
'exif-subjectarea' => 'Bereich',
'exif-flashenergy' => 'Blitzstärke',
-'exif-spatialfrequencyresponse' => 'Spatial-Frequenz',
'exif-focalplanexresolution' => 'Sensorauflösung horizontal',
'exif-focalplaneyresolution' => 'Sensorauflösung vertikal',
'exif-focalplaneresolutionunit' => 'Einheit der Sensorauflösung',
@@ -3105,7 +3180,6 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
'exif-sensingmethod' => 'Messmethode',
'exif-filesource' => 'Quelle der Datei',
'exif-scenetype' => 'Szenentyp',
-'exif-cfapattern' => 'CFA-Muster',
'exif-customrendered' => 'Benutzerdefinierte Bildverarbeitung',
'exif-exposuremode' => 'Belichtungsmodus',
'exif-whitebalance' => 'Weißabgleich',
@@ -3150,10 +3224,79 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
'exif-gpsareainformation' => 'Name des GPS-Gebietes',
'exif-gpsdatestamp' => 'GPS-Datum',
'exif-gpsdifferential' => 'GPS-Differentialkorrektur',
+'exif-jpegfilecomment' => 'JPEG-Dateikommentar',
+'exif-keywords' => 'Stichwörter',
+'exif-worldregioncreated' => 'Weltregion in der das Foto aufgenommen wurde',
+'exif-countrycreated' => 'Staat in dem das Foto aufgenommen wurde',
+'exif-countrycodecreated' => 'Code für den Staat in dem das Foto aufgenommen wurde',
+'exif-provinceorstatecreated' => 'Provinz oder Gliedstaat in dem das Foto aufgenommen wurde',
+'exif-citycreated' => 'Stadt in der das Foto aufgenommen wurde',
+'exif-sublocationcreated' => 'Bereich der Stadt in der das Foto aufgenommen wurde',
+'exif-worldregiondest' => 'Gezeigte Weltregionen',
+'exif-countrydest' => 'Gezeigter Staat',
+'exif-countrycodedest' => 'Code für den gezeigten Staat',
+'exif-provinceorstatedest' => 'Gezeigte Provinz oder angezeigter Gliedstaat',
+'exif-citydest' => 'Gezeigte Stadt',
+'exif-sublocationdest' => 'Bereich der gezeigten Stadt',
'exif-objectname' => 'Kurztitel',
+'exif-specialinstructions' => 'Besondere Anweisungen',
+'exif-headline' => 'Titel',
+'exif-credit' => 'Namensnennung/Veröffentlicher',
+'exif-source' => 'Quelle',
+'exif-editstatus' => 'Redaktioneller Status des Fotos',
+'exif-urgency' => 'Dringlichkeit',
+'exif-fixtureidentifier' => 'Kolumne',
+'exif-locationdest' => 'Dargestellter Standort',
+'exif-locationdestcode' => 'Code für den dargestellten Standort',
+'exif-objectcycle' => 'Veröffentlichungszeitraum während eines Tages für den dieses Medium bestimmt ist',
+'exif-contact' => 'Kontaktinformationen',
+'exif-writer' => 'Verfasser',
+'exif-languagecode' => 'Sprache',
+'exif-iimversion' => 'IIM-Version',
+'exif-iimcategory' => 'Kategorie',
+'exif-iimsupplementalcategory' => 'Zusätzliche Kategorien',
+'exif-datetimeexpires' => 'Nicht verwenden nach',
+'exif-datetimereleased' => 'Veröffentlicht am',
+'exif-originaltransmissionref' => 'Code des Standorts von dem das Foto übermittelt wurde',
+'exif-identifier' => 'Kennung',
+'exif-lens' => 'Verwendetes Objektiv',
+'exif-serialnumber' => 'Seriennummer der Kamera',
+'exif-cameraownername' => 'Kamerabesitzer',
+'exif-label' => 'Bezeichnung',
+'exif-datetimemetadata' => 'Datum zu dem die Metadaten letztmalig geändert wurden',
+'exif-nickname' => 'Gebräuchlicher Name des Fotos',
+'exif-rating' => 'Bewertung (aus 5)',
+'exif-rightscertificate' => 'Rechteverwaltungszertifikat',
+'exif-copyrighted' => 'Urheberrechtsstatus',
+'exif-copyrightowner' => 'Urheberrechtsinhaber',
+'exif-usageterms' => 'Nutzungsbedingungen',
+'exif-webstatement' => 'Online-Urheberrechtsangabe',
+'exif-originaldocumentid' => 'Eindeutige Kennung des ursprünglichen Dokuments',
+'exif-licenseurl' => 'URL der Urheberrechtsangabe (Lizenz)',
+'exif-morepermissionsurl' => 'Alternative Lizenzinformationen',
+'exif-attributionurl' => 'Bei Weiterverwendung dieses Werks, bitte verlinken auf:',
+'exif-preferredattributionname' => 'Bei Weiterverwendung dieses Werks, bitte benennen:',
+'exif-pngfilecomment' => 'PNG-Dateikommentar',
+'exif-disclaimer' => 'Haftungsausschluss',
+'exif-contentwarning' => 'Inhaltswarnung',
+'exif-giffilecomment' => 'GIF-Dateikommentar',
+'exif-intellectualgenre' => 'Art des Mediums',
+'exif-subjectnewscode' => 'Themencode',
+'exif-scenecode' => 'IPTC-Ansichtcode',
+'exif-event' => 'Dargestelltes Ereignis',
+'exif-organisationinimage' => 'Dargestellte Organisation',
+'exif-personinimage' => 'Dargestellte Person',
+'exif-originalimageheight' => 'Bildhöhe vor dem Zuschneiden',
+'exif-originalimagewidth' => 'Bildbreite vor dem Zuschneiden',
# EXIF attributes
'exif-compression-1' => 'Unkomprimiert',
+'exif-compression-2' => 'CCITT Gruppe 3 1-dimensionale modifizierte Huffman-Lauflängenkodierung',
+'exif-compression-3' => 'CCITT Gruppe 3 Faxcodierung',
+'exif-compression-4' => 'CCITT Gruppe 4 Faxcodierung',
+
+'exif-copyrighted-true' => 'Geschützt',
+'exif-copyrighted-false' => 'Gemeinfrei',
'exif-unknowndate' => 'Unbekanntes Datum',
@@ -3169,6 +3312,8 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
'exif-planarconfiguration-1' => 'Grobformat',
'exif-planarconfiguration-2' => 'Planarformat',
+'exif-colorspace-65535' => 'Nicht kalibriert',
+
'exif-componentsconfiguration-0' => 'Existiert nicht',
'exif-exposureprogram-0' => 'Unbekannt',
@@ -3282,6 +3427,10 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
'exif-gpslongitude-e' => 'östl. Länge',
'exif-gpslongitude-w' => 'westl. Länge',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{plural:$1|Meter|Meter}} über dem Meeresspiegel',
+'exif-gpsaltitude-below-sealevel' => '$1 {{plural:$1|Meter|Meter}} unter dem Meeresspiegel',
+
'exif-gpsstatus-a' => 'Messung läuft',
'exif-gpsstatus-v' => 'Interoperabilität von Messungen',
@@ -3293,21 +3442,73 @@ Darauf folgende Seitenlinks in derselben Zeile definieren Ausnahmen, in deren Ko
'exif-gpsspeed-m' => 'mph',
'exif-gpsspeed-n' => 'Knoten',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometer',
+'exif-gpsdestdistance-m' => 'Meilen',
+'exif-gpsdestdistance-n' => 'Nautische Meilen',
+
+'exif-gpsdop-excellent' => 'Ausgezeichnet ($1)',
+'exif-gpsdop-good' => 'Gut ($1)',
+'exif-gpsdop-moderate' => 'Mittel ($1)',
+'exif-gpsdop-fair' => 'Akzeptabel ($1)',
+'exif-gpsdop-poor' => 'Schwach ($1)',
+
+'exif-objectcycle-a' => 'Nur morgens',
+'exif-objectcycle-p' => 'Nur abends',
+'exif-objectcycle-b' => 'Sowohl morgens und abends',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Tatsächliche Richtung',
'exif-gpsdirection-m' => 'Magnetische Richtung',
+'exif-ycbcrpositioning-1' => 'Zentriert',
+'exif-ycbcrpositioning-2' => 'Benachbart',
+
+'exif-dc-contributor' => 'Beteiligte',
+'exif-dc-coverage' => 'Örtlicher oder zeitlicher Rahmen des Mediums',
+'exif-dc-date' => 'Datumsangaben',
+'exif-dc-publisher' => 'Veröffentlicher',
+'exif-dc-relation' => 'Ähnliche Medien',
+'exif-dc-rights' => 'Rechte',
+'exif-dc-source' => 'Medienherkunft',
+'exif-dc-type' => 'Medientyp',
+
+'exif-rating-rejected' => 'Abgelehnt',
+
+'exif-isospeedratings-overflow' => 'Größer als 65535',
+
+'exif-iimcategory-ace' => 'Kunst, Kultur und Unterhaltung',
+'exif-iimcategory-clj' => 'Kriminalität und Recht',
+'exif-iimcategory-dis' => 'Katastrophen und Unfälle',
+'exif-iimcategory-fin' => 'Wirtschaft und Geschäfte',
+'exif-iimcategory-edu' => 'Bildung',
+'exif-iimcategory-evn' => 'Umwelt',
+'exif-iimcategory-hth' => 'Gesundheit',
+'exif-iimcategory-hum' => 'Interessensgebiet',
+'exif-iimcategory-lab' => 'Arbeit',
+'exif-iimcategory-lif' => 'Lifestyle und Freizeit',
+'exif-iimcategory-pol' => 'Politik',
+'exif-iimcategory-rel' => 'Religion und Glaube',
+'exif-iimcategory-sci' => 'Wissenschaft und Technologie',
+'exif-iimcategory-soi' => 'Soziale Themen',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Krieg, Konflikte und Unruhen',
+'exif-iimcategory-wea' => 'Wetter',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Niedrig ($1)',
+'exif-urgency-high' => 'Hoch ($1)',
+'exif-urgency-other' => 'Benutzerdefinierte Priorität ($1)',
+
# External editor support
'edit-externally' => 'Diese Datei mit einem externen Programm bearbeiten',
-'edit-externally-help' => '(Siehe die [http://www.mediawiki.org/wiki/Manual:External_editors Installationsanweisungen] für weitere Informationen)',
+'edit-externally-help' => '(Siehe die [//www.mediawiki.org/wiki/Manual:External_editors Installationsanweisungen] für weitere Informationen)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'alle',
-'imagelistall' => 'alle',
-'watchlistall2' => 'alle',
-'namespacesall' => 'alle',
-'monthsall' => 'alle',
-'limitall' => 'alle',
+'watchlistall2' => 'alle',
+'namespacesall' => 'alle',
+'monthsall' => 'alle',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'E-Mail-Adresse bestätigen (Authentifizierung)',
@@ -3388,18 +3589,25 @@ $1',
'trackbackdeleteok' => 'Trackback wurde erfolgreich gelöscht.',
# Delete conflict
-'deletedwhileediting' => 'Achtung: Diese Seite wurde gelöscht, nachdem du angefangen hast sie zu bearbeiten!
+'deletedwhileediting' => 'Achtung: Diese Seite wurde gelöscht, nachdem du angefangen hast sie zu bearbeiten!
Im [{{fullurl:{{#special:Log}}|type=delete&page={{FULLPAGENAMEE}}}} Lösch-Logbuch] findest du den Grund für die Löschung. Wenn du die Seite speicherst, wird sie neu angelegt.',
-'confirmrecreate' => "Benutzer [[User:$1|$1]] ([[User talk:$1|Diskussion]]) hat diese Seite gelöscht, nachdem du angefangen hast, sie zu bearbeiten. Die Begründung lautete:
+'confirmrecreate' => "Benutzer [[User:$1|$1]] ([[User talk:$1|Diskussion]]) hat diese Seite gelöscht, nachdem du angefangen hast, sie zu bearbeiten. Die Begründung lautete:
:''$2''
Bitte bestätige, dass du diese Seite wirklich neu erstellen möchten.",
-'recreate' => 'Erneut anlegen',
+'confirmrecreate-noreason' => 'Benutzer [[User:$1|$1 ]] ([[User talk:$1|Diskussion]]) hat diese Seite gelöscht, nachdem du mit der Bearbeitung begonnen hast. Bitte bestätige, dass du die Seite wirklich erneut erstellen möchtest.',
+'recreate' => 'Erneut anlegen',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Diese Seite aus dem Server-Cache löschen?',
'confirm-purge-bottom' => 'Leert den Cache einer Seite und erzwingt die Anzeige der aktuellen Version.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Diese Seite zur persönlichen Beobachtungsliste hinzufügen?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Diese Seite von der persönlichen Beobachtungsliste entfernen?',
+
# Separators for various lists, etc.
'ellipsis' => '…',
'percent' => '$1&nbsp;%',
@@ -3449,14 +3657,14 @@ Bitte die normale Vorschau nutzen.',
'watchlistedit-noitems' => 'Deine Beobachtungsliste ist leer.',
'watchlistedit-normal-title' => 'Beobachtungsliste bearbeiten',
'watchlistedit-normal-legend' => 'Einträge von der Beobachtungsliste entfernen',
-'watchlistedit-normal-explain' => 'Dies sind die Einträge deiner Beobachtungsliste. Um Einträge zu entfernen, markiere die Kästchen neben den Einträgen und klicke am Ende der Seite auf „{{int:Watchlistedit-normal-submit}}“. Du kannst deine Beobachtungsliste auch im [[Special:Watchlist/raw|Listenformat bearbeiten]].',
+'watchlistedit-normal-explain' => 'Dies sind die Einträge deiner Beobachtungsliste. Um Einträge zu entfernen, markiere die Kästchen neben den Einträgen und klicke am Ende der Seite auf „{{int:Watchlistedit-normal-submit}}“. Du kannst deine Beobachtungsliste auch im [[Special:EditWatchlist/raw|Listenformat bearbeiten]].',
'watchlistedit-normal-submit' => 'Einträge entfernen',
'watchlistedit-normal-done' => '{{PLURAL:$1|Ein Eintrag wurde|$1 Einträge wurden}} von deiner Beobachtungsliste entfernt:',
'watchlistedit-raw-title' => 'Beobachtungsliste im Listenformat bearbeiten',
'watchlistedit-raw-legend' => 'Beobachtungsliste im Listenformat bearbeiten',
'watchlistedit-raw-explain' => 'Dies sind die Einträge deiner Beobachtungsliste im Listenformat. Die Einträge können zeilenweise gelöscht oder hinzugefügt werden.
-Pro Zeile ist ein Eintrag erlaubt. Wenn du fertig bist, klicke auf „{{int:Watchlistedit-raw-submit}}“.
-Du kannst auch die [[Special:Watchlist/edit|Standard-Bearbeitungsseite]] benutzen.',
+Pro Zeile ist ein Eintrag erlaubt. Sobald du fertig bist, klicke auf „{{int:Watchlistedit-raw-submit}}“.
+Du kannst auch die [[Special:EditWatchlist|Standardseite]] zum Bearbeiten benutzen.',
'watchlistedit-raw-titles' => 'Einträge:',
'watchlistedit-raw-submit' => 'Beobachtungsliste aktualisieren',
'watchlistedit-raw-done' => 'Deine Beobachtungsliste wurde gespeichert.',
@@ -3466,7 +3674,7 @@ Du kannst auch die [[Special:Watchlist/edit|Standard-Bearbeitungsseite]] benutze
# Watchlist editing tools
'watchlisttools-view' => 'Beobachtungsliste: Änderungen',
'watchlisttools-edit' => 'normal bearbeiten',
-'watchlisttools-raw' => 'Listenformat bearbeiten (Import/Export)',
+'watchlisttools-raw' => 'im Listenformat bearbeiten (Import/Export)',
# Hijri month names
'hijri-calendar-m3' => 'Rabiʿ al-auwal',
@@ -3484,34 +3692,34 @@ Du kannst auch die [[Special:Watchlist/edit|Standard-Bearbeitungsseite]] benutze
'duplicate-defaultsort' => 'Achtung: Der Sortierungsschlüssel „$2“ überschreibt den vorher verwendeten Schlüssel „$1“.',
# Special:Version
-'version' => 'Version',
-'version-extensions' => 'Installierte Erweiterungen',
-'version-specialpages' => 'Spezialseiten',
-'version-parserhooks' => 'Parser-Hooks',
-'version-variables' => 'Variablen',
-'version-skins' => 'Benutzeroberflächen',
-'version-other' => 'Anderes',
-'version-mediahandlers' => 'Mediennutzung',
-'version-hooks' => "Schnittstellen ''(Hooks)''",
-'version-extension-functions' => 'Funktionsaufrufe',
-'version-parser-extensiontags' => "Parsererweiterungen ''(tags)''",
-'version-parser-function-hooks' => 'Parserfunktionen',
-'version-skin-extension-functions' => 'Funktionen zur Erweiterung der Benutzeroberfläche',
-'version-hook-name' => 'Schnittstellenname',
-'version-hook-subscribedby' => 'Aufruf von',
-'version-version' => '(Version $1)',
-'version-svn-revision' => '(Version $2)',
-'version-license' => 'Lizenz',
-'version-poweredby-credits' => "Diese Website nutzt '''[http://www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
-'version-poweredby-others' => 'andere',
-'version-license-info' => "MediaWiki ist eine Freie Software, d. h. sie kann, gemäß den Bedingungen der von der Free Software Foundation veröffentlichten ''GNU General Public License'', weiterverteilt und/ oder modifiziert werden. Dabei kann die Version 2, oder nach eigenem Ermessen, jede neuere Version der Lizenz verwendet werden.
+'version' => 'Version',
+'version-extensions' => 'Installierte Erweiterungen',
+'version-specialpages' => 'Spezialseiten',
+'version-parserhooks' => 'Parser-Hooks',
+'version-variables' => 'Variablen',
+'version-antispam' => 'Spamschutz',
+'version-skins' => 'Benutzeroberflächen',
+'version-other' => 'Anderes',
+'version-mediahandlers' => 'Mediennutzung',
+'version-hooks' => "Schnittstellen ''(Hooks)''",
+'version-extension-functions' => 'Funktionsaufrufe',
+'version-parser-extensiontags' => "Parsererweiterungen ''(tags)''",
+'version-parser-function-hooks' => 'Parserfunktionen',
+'version-hook-name' => 'Schnittstellenname',
+'version-hook-subscribedby' => 'Aufruf von',
+'version-version' => '(Version $1)',
+'version-svn-revision' => '(Version $2)',
+'version-license' => 'Lizenz',
+'version-poweredby-credits' => "Diese Website nutzt '''[//www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
+'version-poweredby-others' => 'andere',
+'version-license-info' => "MediaWiki ist eine Freie Software, d. h. sie kann, gemäß den Bedingungen der von der Free Software Foundation veröffentlichten ''GNU General Public License'', weiterverteilt und/ oder modifiziert werden. Dabei kann die Version 2, oder nach eigenem Ermessen, jede neuere Version der Lizenz verwendet werden.
Die Software MediaWiki wird in der Hoffnung verteilt, dass sie nützlich sein wird, allerdings OHNE JEGLICHE GARANTIE und sogar ohne die implizierte Garantie einer MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Hierzu sind weitere Hinweise in der ''GNU General Public License'' enthalten.
-Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License''] sollte zusammen mit diesem Programm verteilt worden sein. Sofern dies nicht der Fall war, kann eine Kopie bei der Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, schriftlich angefordert oder auf deren Website [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html online gelesen] werden.",
-'version-software' => 'Installierte Software',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Version',
+Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License''] sollte zusammen mit diesem Programm verteilt worden sein. Sofern dies nicht der Fall war, kann eine Kopie bei der Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, schriftlich angefordert oder auf deren Website [//www.gnu.org/licenses/old-licenses/gpl-2.0.html online gelesen] werden.",
+'version-software' => 'Installierte Software',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath' => 'Dateipfad',
@@ -3520,22 +3728,22 @@ Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License'']
'filepath-summary' => 'Mit dieser Spezialseite lässt sich der komplette Pfad der aktuellen Version einer Datei ohne Umweg abfragen. Die angefragte Datei wird direkt dargestellt bzw. mit der verknüpften Anwendung gestartet.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Dateiduplikatsuche',
-'fileduplicatesearch-summary' => 'Suche nach Datei-Duplikaten auf Basis ihres Hash-Wertes.
-
-Die Eingabe muss ohne den Zusatz „{{ns:file}}:“ erfolgen.',
-'fileduplicatesearch-legend' => 'Suche nach Duplikaten',
-'fileduplicatesearch-filename' => 'Dateiname:',
-'fileduplicatesearch-submit' => 'Suchen',
-'fileduplicatesearch-info' => '$1 × $2 Pixel<br />Dateigröße: $3<br />MIME-Typ: $4',
-'fileduplicatesearch-result-1' => 'Die Datei „$1“ hat keine identischen Duplikate.',
-'fileduplicatesearch-result-n' => 'Die Datei „$1“ hat {{PLURAL:$2|1 identisches Duplikat|$2 identische Duplikate}}.',
+'fileduplicatesearch' => 'Dateiduplikatsuche',
+'fileduplicatesearch-summary' => 'Suche nach Dateiduplikaten auf Basis ihres Hashwertes.',
+'fileduplicatesearch-legend' => 'Suche nach Duplikaten',
+'fileduplicatesearch-filename' => 'Dateiname:',
+'fileduplicatesearch-submit' => 'Suchen',
+'fileduplicatesearch-info' => '$1 × $2 Pixel<br />Dateigröße: $3<br />MIME-Typ: $4',
+'fileduplicatesearch-result-1' => 'Die Datei „$1“ hat keine identischen Duplikate.',
+'fileduplicatesearch-result-n' => 'Die Datei „$1“ hat {{PLURAL:$2|1 identisches Duplikat|$2 identische Duplikate}}.',
+'fileduplicatesearch-noresults' => 'Es wurde keine Datei namens „$1“ gefunden.',
# Special:SpecialPages
'specialpages' => 'Spezialseiten',
'specialpages-note' => '----
-* Spezialseiten für jedermann
-* <strong class="mw-specialpagerestricted">Spezialseiten für Benutzer mit erweiterten Rechten</strong>',
+* Reguläre Spezialseiten
+* <span class="mw-specialpagerestricted">Zugriffsbeschränkte Spezialseiten</span>
+* <span class="mw-specialpagecached">Gecachte Spezialseiten (Deren Inhalt ist möglicherweise veraltet.)</span>',
'specialpages-group-maintenance' => 'Wartungslisten',
'specialpages-group-other' => 'Andere Spezialseiten',
'specialpages-group-login' => 'Anmelden',
diff --git a/languages/messages/MessagesDe_ch.php b/languages/messages/MessagesDe_ch.php
index 2271e1cb..fe8effa5 100644
--- a/languages/messages/MessagesDe_ch.php
+++ b/languages/messages/MessagesDe_ch.php
@@ -26,7 +26,7 @@ Bitte versuche es in ein paar Minuten erneut.',
'nosuchuser' => 'Der Benutzername „$1“ existiert nicht.
Überprüfe die Schreibweise (Gross-/Kleinschreibung beachten) oder [[Special:UserLogin/signup|melde dich als neuer Benutzer an]].',
-# Password reset dialog
+# Change password dialog
'resetpass_announce' => 'Anmeldung mit dem per E-Mail zugesandten Code. Um die Anmeldung abzuschliessen, musst du jetzt ein neues Passwort wählen.',
# Edit pages
@@ -106,12 +106,11 @@ Die Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seite
'importuploaderrorsize' => 'Das Hochladen der Importdatei ist fehlgeschlagen. Die Datei ist grösser als die maximal erlaubte Dateigrösse.',
# Media information
-'imagemaxsize' => "Maximale Bildgrösse:<br />''(für Dateibeschreibungsseiten)''",
-'thumbsize' => 'Standardgrösse der Vorschaubilder (Thumbnails):',
-'file-info' => 'Dateigrösse: $1, MIME-Typ: $2',
-'file-info-size' => '$1 × $2 Pixel, Dateigrösse: $3, MIME-Typ: $4',
-'svg-long-desc' => 'SVG-Datei, Basisgrösse: $1 × $2 Pixel, Dateigrösse: $3',
-'show-big-image-thumb' => '<small>Grösse der Voransicht: $1 × $2 Pixel</small>',
+'imagemaxsize' => "Maximale Bildgrösse:<br />''(für Dateibeschreibungsseiten)''",
+'thumbsize' => 'Standardgrösse der Vorschaubilder (Thumbnails):',
+'file-info' => 'Dateigrösse: $1, MIME-Typ: $2',
+'file-info-size' => '$1 × $2 Pixel, Dateigrösse: $3, MIME-Typ: $4',
+'svg-long-desc' => 'SVG-Datei, Basisgrösse: $1 × $2 Pixel, Dateigrösse: $3',
# Metadata
'metadata-fields' => 'Die folgenden Felder der EXIF-Metadaten in diesem MediaWiki-Systemtext werden auf Bildbeschreibungsseiten angezeigt; weitere standardmässig „eingeklappte“ Details können angezeigt werden.
@@ -121,10 +120,15 @@ Die Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seite
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
-'exif-resolutionunit' => 'Masseinheit der Auflösung',
'exif-jpeginterchangeformatlength' => 'Grösse der JPEG-Daten in Bytes',
'exif-referenceblackwhite' => 'Schwarz/Weiss-Referenzpunkte',
'exif-maxaperturevalue' => 'Grösste Blende',
@@ -140,7 +144,7 @@ Die Ausgabe kann durch die Auswahl des Logbuchtyps, des Benutzers oder des Seite
MediaWiki wird in der Hoffnung verteilt, dass es nützlich sein wird, allerdings OHNE JEGLICHE GARANTIE und sogar ohne die implizierte Garantie einer MARKTGÄNGIGKEIT oder EIGNUNG FÜR EINEN BESTIMMTEN ZWECK. Hierzu sind weitere Hinweise in der ''GNU General Public License'' enthalten.
-Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License''] sollte zusammen mit diesem Programm verteilt worden sein. Sofern dies nicht der Fall war, kann eine Kopie bei der Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, schriftlich angefordert oder auf deren Website [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html online gelesen] werden.",
+Eine [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie der ''GNU General Public License''] sollte zusammen mit diesem Programm verteilt worden sein. Sofern dies nicht der Fall war, kann eine Kopie bei der Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, schriftlich angefordert oder auf deren Website [//www.gnu.org/licenses/old-licenses/gpl-2.0.html online gelesen] werden.",
# Special:FileDuplicateSearch
'fileduplicatesearch-info' => '$1 × $2 Pixel<br />Dateigrösse: $3<br />MIME-Typ: $4',
diff --git a/languages/messages/MessagesDe_formal.php b/languages/messages/MessagesDe_formal.php
index c896373f..ae22b50f 100644
--- a/languages/messages/MessagesDe_formal.php
+++ b/languages/messages/MessagesDe_formal.php
@@ -32,13 +32,6 @@ $messages = array(
# User preference toggles
'tog-enotifrevealaddr' => 'Ihre E-Mail-Adresse in Benachrichtigungs-E-Mails anzeigen',
-'mainpagedocfooter' => 'Hilfe zur Benutzung und Konfiguration der Wiki-Software finden Sie im [http://meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuch].
-
-== Starthilfen ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste der Konfigurationsvariablen]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
-
'view-pool-error' => 'Entschuldigung, die Server sind im Moment überlastet.
Zu viele Benutzer versuchen diese Seite zu besuchen.
Bitte warten Sie einige Minuten, bevor Sie es noch einmal versuchen.
@@ -51,23 +44,24 @@ $1',
'youhavenewmessagesmulti' => 'Sie haben neue Nachrichten: $1',
# General errors
-'enterlockreason' => 'Bitte geben Sie einen Grund ein, warum die Datenbank gesperrt werden soll und eine Abschätzung über die Dauer der Sperrung',
-'readonlytext' => 'Die Datenbank ist vorübergehend für Neueinträge und Änderungen gesperrt. Bitte versuchen Sie es später noch einmal.
+'enterlockreason' => 'Bitte geben Sie einen Grund ein, warum die Datenbank gesperrt werden soll und eine Abschätzung über die Dauer der Sperrung',
+'readonlytext' => 'Die Datenbank ist vorübergehend für Neueinträge und Änderungen gesperrt. Bitte versuchen Sie es später noch einmal.
Grund der Sperrung: $1',
-'missing-article' => 'Der Text von „$1“ $2 wurde nicht in der Datenbank gefunden.
+'missing-article' => 'Der Text von „$1“ $2 wurde nicht in der Datenbank gefunden.
Die Seite ist möglicherweise gelöscht oder verschoben worden.
Falls dies nicht der Fall ist, haben Sie eventuell einen Fehler in der Software gefunden. Bitte melden Sie dies einem [[Special:ListUsers/sysop|Administrator]] unter Nennung der URL.',
-'actionthrottledtext' => 'Im Rahmen einer Anti-Spam-Maßnahme kann diese Aktion in einem kurzen Zeitabstand nur begrenzt oft ausgeführt werden. Diese Grenze haben Sie überschritten.
+'actionthrottledtext' => 'Im Rahmen einer Anti-Spam-Maßnahme kann diese Aktion in einem kurzen Zeitabstand nur begrenzt oft ausgeführt werden. Diese Grenze haben Sie überschritten.
Bitte versuchen Sie es in ein paar Minuten erneut.',
-'viewsourcetext' => 'Sie können den Quelltext dieser Seite betrachten und kopieren:',
-'editinginterface' => "'''Warnung:''' Diese Seite enthält von der MediaWiki-Software genutzten Text.
+'viewsourcetext' => 'Sie können den Quelltext dieser Seite betrachten und kopieren:',
+'editinginterface' => "'''Warnung:''' Diese Seite enthält von der MediaWiki-Software genutzten Text.
Änderungen auf dieser Seite wirken sich auf die Benutzeroberfläche aus.
-Ziehen Sie bitte im Fall von Übersetzungen in Betracht, diese bei [http://translatewiki.net/wiki/Main_Page?setlang=de-formal translatewiki.net], der Lokalisierungsplattform für MediaWiki, durchzuführen.",
-'namespaceprotected' => "Sie haben nicht die erforderliche Berechtigung, um Seiten im Namensraum '''$1''' bearbeiten zu können.",
-'customcssjsprotected' => 'Sie sind nicht berechtigt, diese Seite zu bearbeiten, da sie zu den persönlichen Einstellungen eines anderen Benutzers gehört.',
+Ziehen Sie bitte im Fall von Übersetzungen in Betracht, diese bei [//translatewiki.net/wiki/Main_Page?setlang=de-formal translatewiki.net], der Lokalisierungsplattform für MediaWiki, durchzuführen.",
+'namespaceprotected' => "Sie haben nicht die erforderliche Berechtigung, um Seiten im Namensraum '''$1''' bearbeiten zu können.",
+'customcssprotected' => 'Sie haben nicht die Berechtigung diese CSS enthaltende Seite zu bearbeiten, da sie die persönlichen Einstellungen eines anderen Benutzers enthält.',
+'customjsprotected' => 'Sie haben nicht die Berechtigung diese JavaScript enthaltende Seite zu bearbeiten, da sie die persönlichen Einstellungen eines anderen Benutzers enthält.',
# Login and logout pages
'logouttext' => "'''Sie sind nun abgemeldet.'''
@@ -92,7 +86,7 @@ Sie haben Cookies deaktiviert, bitte aktivieren Sie diese und versuchen Sie es e
'loginsuccess' => 'Sie sind jetzt als „$1“ bei {{SITENAME}} angemeldet.',
'nosuchuser' => 'Der Benutzername „$1“ existiert nicht.
Überprüfen Sie die Schreibweise (Groß-/Kleinschreibung beachten) oder [[Special:UserLogin/signup|melden Sie sich als neuer Benutzer an]].',
-'nosuchusershort' => 'Der Benutzername „<nowiki>$1</nowiki>“ existiert nicht. Bitte überprüfen Sie die Schreibweise.',
+'nosuchusershort' => 'Der Benutzername „$1“ existiert nicht. Bitte überprüfen Sie die Schreibweise.',
'nouserspecified' => 'Bitte geben Sie einen Benutzernamen an.',
'wrongpassword' => 'Das Passwort ist falsch. Bitte versuchen Sie es erneut.',
'wrongpasswordempty' => 'Es wurde kein Passwort eingegeben. Bitte versuchen Sie es erneut.',
@@ -125,7 +119,7 @@ Falls das Benutzerkonto irrtümlich angelegt wurde, können Sie diese Nachricht
'login-throttled' => 'Sie haben zu oft versucht, sich anzumelden.
Bitte warten Sie, bevor Sie es erneut probierst.',
-# Password reset dialog
+# Change password dialog
'resetpass_announce' => 'Anmeldung mit dem per E-Mail zugesandten Code. Um die Anmeldung abzuschließen, müssen Sie jetzt ein neues Passwort wählen.',
'resetpass_text' => '<!-- Ergänzen Sie den Text hier -->',
'resetpass_success' => 'Ihr Passwort wurde erfolgreich geändert. Es folgt die Anmeldung …',
@@ -133,6 +127,20 @@ Bitte warten Sie, bevor Sie es erneut probierst.',
'resetpass-wrong-oldpass' => 'Ungültiges temporäres oder aktuelles Passwort.
Möglicherweise haben Sie Ihr Passwort bereits erfolgreich geändert oder ein neues temporäres Passwort beantragt.',
+# Special:PasswordReset
+'passwordreset-text' => 'Bitte dieses Formular ausfüllen, um per E-Mail eine Erinnerung zu den Anmeldeinformationen Ihres Benutzerkontos zu erhalten.',
+'passwordreset-emailtext-ip' => 'Jemand mit der IP-Adresse $1, wahrscheinlich Sie selbst, hat eine Erinnerung an Ihre Benutzerkonteninformationen für {{SITENAME}} angefordert ($4). {{PLURAL:$3|Das folgende Benutzerkonto ist|Die folgenden Benutzerkonten sind}} mit dieser E-Mail-Adresse verknüpft:
+
+$2
+
+{{PLURAL:$3|Dieses temporäre Passwort läuft|Diese temporären Passwörter laufen}} innerhalb von {{PLURAL:$5|einem Tag|$5 Tagen}} ab.
+Sie sollten sich anmelden und ein neues Passwort vergeben. Falls jemand anderes diese Anfrage getätigt hat oder Sie sich wieder an Ihr ursprüngliches Passwort erinnern können und es nicht länger ändern möchten, können Sie diese Nachricht ignorieren und weiterhin Ihr altes Passwort benutzen.',
+'passwordreset-emailtext-user' => 'Benutzer $1 auf {{SITENAME}} hat eine Erinnerung an Ihre Benutzerkonteninformationen für {{SITENAME}} angefordert ($4). {{PLURAL:$3|Das folgende Benutzerkonto ist|Die folgenden Benutzerkonten sind}} mit dieser E-Mail-Adresse verknüpft:
+
+$2
+
+{{PLURAL:$3|Dieses temporäre Passwort läuft|Diese temporären Passwörter laufen}} innerhalb von {{PLURAL:$5|einem Tag|$5 Tagen}} ab. Sie sollten sich anmelden und ein neues Passwort vergeben. Falls jemand anderes diese Anfrage getätigt hat oder Sie sich wieder an Ihr ursprüngliches Passwort erinnern können und es nicht ändern möchten, können Sie diese Nachricht ignorieren und weiterhin Ihr altes Passwort benutzen.',
+
# Edit page toolbar
'sig_tip' => 'Ihre Signatur mit Zeitstempel',
@@ -185,7 +193,7 @@ Sie können diesen Titel auf den anderen Seiten [[Special:Search/{{PAGENAME}}|su
'noarticletext-nopermission' => 'Diese Seite enthält momentan noch keinen Text.
Sie können diesen Titel auf den anderen Seiten [[Special:Search/{{PAGENAME}}|suchen]]
oder in den zugehörigen <span class="plainlinks">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbüchern suchen]</span>.',
-'userpage-userdoesnotexist' => 'Das Benutzerkonto „$1“ ist nicht vorhanden. Bitte prüfen Sie, ob Sie diese Seite wirklich erstellen/bearbeiten möchten.',
+'userpage-userdoesnotexist' => 'Das Benutzerkonto „<nowiki>$1</nowiki>“ ist nicht vorhanden. Bitte prüfen Sie, ob Sie diese Seite wirklich erstellen/bearbeiten möchten.',
'clearyourcache' => "'''Hinweis:''' Leeren Sie nach dem Speichern den Browser-Cache, um die Änderungen sehen zu können.
* '''Firefox/Safari:''' ''Umschaltung'' drücken und gleichzeitig ''Aktualisieren'' anklicken oder entweder ''Strg+F5'' oder ''Strg+R'' (''Befehlstaste-R'' auf dem Mac) drücken
* '''Google Chrome:''' ''Umschaltung+Strg+R'' (''Befehlstaste-R'' auf dem Mac) drücken
@@ -215,6 +223,7 @@ Sollte das Problem bestehen bleiben, [[Special:UserLogout|melden Sie sich ab]] u
Sollte das Problem bestehen bleiben, [[Special:UserLogout|melden Sie sich ab]] und danach wieder an.'''",
'token_suffix_mismatch' => "'''Ihre Bearbeitung wurde zurückgewiesen, da Ihr Browser Zeichen im Bearbeiten-Token verstümmelt hat.
Eine Speicherung kann den Seiteninhalt zerstören. Dies geschieht bisweilen durch die Benutzung eines anonymen Proxy-Dienstes, der fehlerhaft arbeitet.'''",
+'edit_form_incomplete' => "'''Der Inhalt des Bearbeitungsformulars hat den Server nicht vollständig erreicht. Bitte prüfen Sie Ihre Bearbeitungen auf Vollständigkeit und versuchen Sie es erneut.'''",
'explainconflict' => "Jemand anders hat diese Seite geändert, nachdem Sie angefangen haben sie zu bearbeiten.
Das obere Textfeld enthält den aktuellen Bearbeitungsstand der Seite.
Das untere Textfeld enthält Ihre Änderungen.
@@ -223,8 +232,8 @@ Bitte fügen Sie Ihre Änderungen in das obere Textfeld ein.
'yourtext' => 'Ihr Text',
'nonunicodebrowser' => "'''Achtung:''' Ihr Browser kann Unicode-Zeichen nicht richtig verarbeiten. Bitte verwenden Sie einen anderen Browser um Seiten zu bearbeiten.",
'editingold' => "'''Achtung: Sie bearbeiten eine alte Version dieser Seite. Sofern Sie sie speichern, werden alle neueren Versionen überschrieben.'''",
-'copyrightwarning' => "'''Bitte <big>kopieren Sie keine Webseiten</big>, die nicht Ihre eigenen sind, benutzen Sie <big>keine urheberrechtlich geschützten Werke</big> ohne Erlaubnis des Copyright-Inhabers!'''<br />
-Sie geben uns hiermit Ihre Zusage, dass Sie den Text '''selbst verfasst''' haben, dass der Text Allgemeingut ('''public domain''') ist, oder dass der '''Copyright-Inhaber''' seine '''Zustimmung''' gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weisen Sie bitte auf der Diskussionsseite darauf hin.
+'copyrightwarning' => "'''Bitte kopieren Sie keine Webseiten, die nicht Ihre eigenen sind, benutzen Sie keine urheberrechtlich geschützten Werke ohne Erlaubnis des Urhebers!'''<br />
+Sie geben uns hiermit Ihre Zusage, dass Sie den Text '''selbst verfasst''' haben, dass der Text Allgemeingut '''(public domain)''' ist, oder dass der '''Urheber''' seine '''Zustimmung''' gegeben hat. Falls dieser Text bereits woanders veröffentlicht wurde, weisen Sie bitte auf der Diskussionsseite darauf hin.
<i>Bitte beachten Sie, dass alle {{SITENAME}}-Beiträge automatisch unter der „$2“ stehen (siehe $1 für Details). Falls Sie nicht möchten, dass Ihre Arbeit hier von anderen verändert und verbreitet wird, dann drücken Sie nicht auf „Seite speichern“.</i>",
'copyrightwarning2' => "Bitte beachten Sie, dass alle Beiträge zu {{SITENAME}} von anderen Mitwirkenden bearbeitet, geändert oder gelöscht werden können.
Reichen Sie keine Texte ein, falls Sie nicht wollen, dass diese ohne Einschränkung geändert werden können.
@@ -315,8 +324,7 @@ Hier ein zufällig generierter Wert, den Sie verwenden können: $1',
'prefs-reset-intro' => 'Sie können diese Seite verwenden, um die Einstellungen auf die Standards zurückzusetzen.
Dies kann nicht mehr rückgängig gemacht werden.',
'prefs-help-realname' => 'Optional. Damit kann Ihr bürgerlicher Name Ihren Beiträgen zugeordnet werden.',
-'prefs-help-email' => 'Die Angabe einer E-Mail ist optional, ermöglicht aber die Zusendung eines Ersatzpasswortes, wenn Sie Ihr Passwort vergessen haben.
-Mit anderen Benutzer können Sie auch über die Benutzerdiskussionsseiten Kontakt aufnehmen, ohne dass Sie Ihre Identität offenlegen müssen.',
+'prefs-help-email' => 'Die Angabe einer E-Mail-Adresse ist optional, ermöglicht aber die Zusendung eines Ersatzpasswortes, sofern Sie Ihr Passwort vergessen haben.',
# User rights
'userrights-groups-help' => 'Sie können die Gruppenzugehörigkeit dieses Benutzer ändern.
@@ -375,10 +383,6 @@ Wenn Sie diese Datei trotzdem hochladen möchten, gehen Sie bitte zurück und ä
'php-uploaddisabledtext' => 'Das Hochladen von Dateien wurde in PHP deaktiviert.
Bitte überprüfen Sie die <code>file_uploads</code>-Einstellung.',
'filewasdeleted' => 'Eine Datei mit diesem Namen wurde schon einmal hochgeladen und zwischenzeitlich wieder gelöscht. Bitte prüfen Sie zuerst den Eintrag im $1, bevor Sie die Datei wirklich speichern.',
-'upload-wasdeleted' => "'''Achtung: Sie laden eine Datei hoch, die bereits früher gelöscht wurde.'''
-
-Bitte prüfen Sie sorgfältig, ob das erneute Hochladen den Richtlinien entspricht.
-Zu Ihrer Information folgt das Lösch-Logbuch mit der Begründung für die vorhergehende Löschung:",
'filename-bad-prefix' => "Der Dateiname beginnt mit '''„$1“'''. Dies ist im allgemeinen der von einer Digitalkamera vorgegebene Dateiname und daher nicht sehr aussagekräftig.
Bitte geben Sie der Datei einen Namen, der den Inhalt besser beschreibt.",
@@ -466,18 +470,18 @@ Es werden Ihnen solange keine weiteren Benachrichtigungs-E-Mails gesendet, bis S
Das freundliche {{SITENAME}}-Benachrichtigungssystem
--
-Um die Einstellungen der E-Mail-Benachrichtigung anzupassen, besuchen Sie {{fullurl:{{#special:Preferences}}}}
+Um die Einstellungen der E-Mail-Benachrichtigung anzupassen, besuchen Sie {{canonicalurl:{{#special:Preferences}}}}
-Um die Einstellungen Ihrer Beobachtungsliste anzupassen, besuchen Sie {{fullurl:{{#special:Watchlist}}/edit}}
+Um die Einstellungen Ihrer Beobachtungsliste anzupassen, besuchen Sie {{canonicalurl:{{#special:EditWatchlist}}}}
Um diese Seite von Ihrer Beobachtungsliste zu entfernen, besuchen Sie $UNWATCHURL
-Rückmeldungen und weitere Hilfe: {{fullurl:{{MediaWiki:Helppage}}}}',
+Rückmeldungen und weitere Hilfe: {{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'historywarning' => "'''Achtung:''' Die Seite, die Sie löschen möchten, hat eine Versionsgeschichte mit etwa $1 {{PLURAL:$1|Version|Versionen}}:",
'confirmdeletetext' => 'Sie sind dabei, eine Seite mit allen zugehörigen älteren Versionen zu löschen. Bitte bestätigen Sie, dass Sie sich der Konsequenzen bewusst sind, und dass Sie in Übereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]] handeln.',
-'deletedtext' => '„<nowiki>$1</nowiki>“ wurde gelöscht. Im $2 finden Sie eine Liste der letzten Löschungen.',
+'deletedtext' => '„$1“ wurde gelöscht. Im $2 finden Sie eine Liste der letzten Löschungen.',
# Edit tokens
'sessionfailure' => 'Es gab ein Problem mit der Ãœbertragung Ihrer Benutzerdaten.
@@ -491,9 +495,8 @@ Bitte gehen Sie zurück und versuchen Sie den Vorgang erneut auszuführen.',
'protect-cantedit' => 'Sie können die Sperre dieser Seite nicht ändern, da Sie keine Berechtigung zum Bearbeiten der Seite haben.',
# Undelete
-'undeleteextrahelp' => '* Um die Seite komplett mit allen Versionen wiederherzustellen, wählen Sie keine Version aus, geben Sie eine Begründung an und klicken Sie auf „{{int:undeletebtn}}“.
-* Möchten Sie nur bestimmte Versionen wiederherstellen, so wählen Sie diese bitte einzeln anhand der Markierungen aus, geben eine Begründung an und klicken dann auf „{{int:undeletebtn}}“.
-* „{{int:undeletereset}}“ leert das Kommentarfeld und entfernt alle Markierungen bei den Versionen.',
+'undeleteextrahelp' => '* Um die Seite mitsamt aller Versionen wiederherzustellen, wählen Sie keine Version aus, geben eine Begründung an und klicken dann auf „{{int:undeletebtn}}“.
+* Um lediglich bestimmte Versionen der Seite wiederherzustellen, wählen Sie die betreffenden Versionen einzeln aus, geben eine Begründung an und klicken dann auf „{{int:undeletebtn}}“.',
'undeletehistory' => 'Wenn Sie diese Seite wiederherstellen, werden auch alle alten Versionen wiederhergestellt.
Wenn seit der Löschung eine neue Seite gleichen Namens erstellt wurde, werden die wiederhergestellten Versionen chronologisch in die Versionsgeschichte eingeordnet.',
'undeleterevdel' => 'Die Wiederherstellung wird nicht durchgeführt, wenn die aktuellste Version versteckt ist oder versteckte Teile enthält.
@@ -504,14 +507,18 @@ Versionen von Dateien, auf die Sie keinen Zugriff haben, werden nicht wiederherg
Im [[Special:Log/delete|Lösch-Logbuch]] finden Sie eine Übersicht der gelöschten und wiederhergestellten Seiten.",
'undelete-show-file-confirm' => 'Sind Sie sicher, dass Sie eine gelöschte Version der Datei „<nowiki>$1</nowiki>“ vom $2, $3 Uhr sehen wollen?',
+# Namespace form on various pages
+'tooltip-namespace_association' => 'Dieses Auswahlfeld anklicken, um den Ihrer Auswahl zugehörigen Diskussionsnamensraum, oder im umgekehrten Fall, den zugehörigen Namensraum, mit einzubeziehen',
+
# Block/unblock
'blockiptext' => 'Mit diesem Formular sperren Sie eine IP-Adresse oder einen Benutzernamen, so dass von dort keine Änderungen mehr vorgenommen werden können.
Dies sollte nur erfolgen, um Vandalismus zu verhindern und in Ãœbereinstimmung mit den [[{{MediaWiki:Policy-url}}|Richtlinien]].
Bitte geben Sie den Grund für die Sperre an.',
+'ipb-blockingself' => 'Sie sind gerade dabei, sich selbst zu sperren! Möchten Sie das wirklich tun?',
+'ipb-confirmhideuser' => 'Sie sind gerade dabei einen Benutzer im Modus „Benutzer verstecken“ zu sperren. Dies führt dazu, dass der Benutzername in allen Listen und Logbüchern unterdrückt wird. Möchten Sie das wirklich tun?',
'unblockiptext' => 'Mit diesem Formular können Sie eine IP-Adresse oder einen Benutzer freigeben.',
'autoblocker' => 'Automatische Sperre, da Sie eine gemeinsame IP-Adresse mit [[User:$1|$1]] benutzen. Grund der Benutzersperre: „$2“.',
-'ipb-needreblock' => '== Sperre vorhanden ==
-„$1“ ist bereits gesperrt. Möchten Sie die Sperrparameter ändern?',
+'ipb-needreblock' => '„$1“ ist bereits gesperrt. Möchten Sie die Sperrparameter ändern?',
'proxyblockreason' => 'Ihre IP-Adresse wurde gesperrt, da sie ein offener Proxy ist. Bitte kontaktieren Sie Ihren Internet-Provider oder Ihre Systemadministratoren und informieren Sie sie über dieses mögliche Sicherheitsproblem.',
'cant-block-while-blocked' => 'Sie können keine anderen Benutzer sperren, während Sie selbst gesperrt sind.',
'cant-see-hidden-user' => 'Der Benutzer, den Sie versuchen zu sperren, wurde bereits gesperrt und verborgen. Da Sie das „hideuser“-Recht nicht haben, können Sie die Benutzersperre nicht sehen und nicht bearbeiten.',
@@ -578,7 +585,7 @@ Alternativ ist der Export auch mit der Syntax [[{{#Special:Export}}/{{MediaWiki:
# Namespace 8 related
'allmessagestext' => 'Dies ist eine Liste der MediaWiki-Systemtexte.
-Bitte besuchen Sie die Seiten [http://www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [http://translatewiki.net translatewiki.net], sofern Sie sich an der Lokalisierung von MediaWiki beteiligen möchten.',
+Bitte besuchen Sie die Seiten [//www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [//translatewiki.net translatewiki.net], sofern Sie sich an der Lokalisierung von MediaWiki beteiligen möchten.',
# Special:Import
'import-interwiki-text' => 'Wählen Sie ein Wiki und eine Seite zum Importieren aus.
@@ -667,11 +674,12 @@ Bitte bestätigen Sie, dass Sie diese Seite wirklich neu erstellen möchten.",
# Watchlist editor
'watchlistedit-numitems' => 'Ihre Beobachtungsliste enthält {{PLURAL:$1|einen Eintrag|$1 Einträge}}. Die Diskussionsseiten wurden dabei nicht mitgezählt.',
'watchlistedit-noitems' => 'Ihre Beobachtungsliste ist leer.',
-'watchlistedit-normal-explain' => 'Dies sind die Einträge Ihrer Beobachtungsliste. Um Einträge zu entfernen, markieren Sie die Kästchen neben den Einträgen und klicken Sie am Ende der Seite auf „{{int:Watchlistedit-normal-submit}}“. Sie können Ihre Beobachtungsliste auch im [[Special:Watchlist/raw|Listenformat bearbeiten]].',
+'watchlistedit-normal-explain' => 'Dies sind die Einträge Ihrer Beobachtungsliste. Um Einträge zu entfernen, markieren Sie die Kästchen neben den Einträgen und klicken Sie am Ende der Seite auf „{{int:Watchlistedit-normal-submit}}“. Sie können Ihre Beobachtungsliste auch im [[Special:EditWatchlist/raw|Listenformat bearbeiten]].',
'watchlistedit-normal-done' => '{{PLURAL:$1|Ein Eintrag wurde|$1 Einträge wurden}} von Ihrer Beobachtungsliste entfernt:',
'watchlistedit-raw-explain' => 'Dies sind die Einträge Ihrer Beobachtungsliste im Listenformat. Die Einträge können zeilenweise gelöscht oder hinzugefügt werden.
-Pro Zeile ist ein Eintrag erlaubt. Wenn Sie fertig sind, klicken Sie auf „{{int:Watchlistedit-raw-submit}}“.
-Sie können auch die [[Special:Watchlist/edit|Standard-Bearbeitungsseite]] benutzen.',
+Pro Zeile ist ein Eintrag erlaubt.
+Sobald Sie fertig sind, klicken Sie auf „{{int:Watchlistedit-raw-submit}}“.
+Sie können auch die [[Special:EditWatchlist|Standardseite]] zum Bearbeiten benutzen.',
'watchlistedit-raw-done' => 'Ihre Beobachtungsliste wurde gespeichert.',
# Database error messages
diff --git a/languages/messages/MessagesDiq.php b/languages/messages/MessagesDiq.php
index 07c4bc58..b66bc76c 100644
--- a/languages/messages/MessagesDiq.php
+++ b/languages/messages/MessagesDiq.php
@@ -11,6 +11,8 @@
* @author Aspar
* @author Belekvor
* @author Mirzali
+ * @author Reedy
+ * @author Sahim
* @author Xoser
*/
@@ -46,8 +48,8 @@ $messages = array(
'tog-shownumberswatching' => 'Amarê karberanê seyrkerdoğan bımocne',
'tog-oldsig' => 'Verqaytê imza mewcude:',
'tog-fancysig' => 'İmza rê mameley wikimeqaley bıke (bê gıreyo otomatik)',
-'tog-externaleditor' => 'Editorê teberi standard bıxebetne (tenya seba ekspertano, komputerê şıma de eyarê xısusiy lazımê. [http://www.mediawiki.org/wiki/Manual:External_editors Melumato vêşêr.])',
-'tog-externaldiff' => 'Têverşanayışan pê programê teberi vıraze (tenya seba ekspertano, komputerê şıma de eyarê xısusiy lazımê. [http://www.mediawiki.org/wiki/Manual:External_editors Melumato vêşêr.])',
+'tog-externaleditor' => 'Editorê teberi standard bıxebetne (tenya seba ekspertano, komputerê şıma de eyarê xısusiy lazımê. [//www.mediawiki.org/wiki/Manual:External_editors Melumato vêşêr.])',
+'tog-externaldiff' => 'Têverşanayışan pê programê teberi vıraze (tenya seba ekspertano, komputerê şıma de eyarê xısusiy lazımê. [//www.mediawiki.org/wiki/Manual:External_editors Melumato vêşêr.])',
'tog-showjumplinks' => 'Gırey "şo"y feal ke',
'tog-uselivepreview' => 'Verqayto cınde bıxebetne (JavaScript lazımo) (hewna cerrebnayış dero)',
'tog-forceeditsummary' => 'Mı ke xulasa kerde cı vira, hay be mı ser de',
@@ -143,15 +145,7 @@ $messages = array(
'index-category' => 'Pelê endeksıni',
'noindex-category' => 'Pelê ke endeksıni niyê',
-'linkprefix' => "'''MediaWiki niya ro.'''",
-'mainpagetext' => "'''MediaWiki vıst ra ser, vıraziya.'''",
-'mainpagedocfooter' => 'Seba gurenayış u eyarkerdışê Wiki-Softwarey [http://meta.wikimedia.org/wiki/Help:Contents İdarê karberi] de mıracaet ke.
-
-== Yardımê Sıftekerdışi ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista eyaranê vıraştışi]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki de ÇZP]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki ra lista serbest-dayışê postey]',
+'linkprefix' => "'''MediaWiki niya ro.'''",
'about' => 'Heqa',
'article' => 'Pela tedeesteyan',
@@ -203,10 +197,10 @@ $messages = array(
'history' => 'Tarixê pele',
'history_short' => 'Tarix',
'updatedmarker' => 'cıkewtena mına peyêne ra dıme biyo rocane',
-'info_short' => 'Melumat',
'printableversion' => 'Asayışê çapkerdışi',
'permalink' => 'Gıreyo jûqere',
'print' => 'Çap ke',
+'view' => 'Bıvêne',
'edit' => 'Bıvurne',
'create' => 'Vıraze',
'editthispage' => 'Ena pele bıvurne',
@@ -214,6 +208,7 @@ $messages = array(
'delete' => 'Bestere',
'deletethispage' => 'Ena pele bestere',
'undelete_short' => '{{PLURAL:$1|Yew vurnayışi|$1 Vurnayışan}} mestere',
+'viewdeleted_short' => '{{PLURAL:$1|Yew vurnayışo esterıte|$1 Vurnayışanê esterıtan}} bımocne',
'protect' => 'Bıpawe',
'protect_change' => 'bıvurne',
'protectthispage' => 'Ena pele bıpawe',
@@ -301,6 +296,8 @@ $1',
'toc' => 'Tedeestey',
'showtoc' => 'bımocne',
'hidetoc' => 'bınımne',
+'collapsible-collapse' => 'Kılmever ke',
+'collapsible-expand' => 'Verın ke',
'thisisdeleted' => 'Bıvêne ya zi $1 peyser bia?',
'viewdeleted' => '$1 bıvêne?',
'restorelink' => '{{PLURAL:$1|yew vurnayışo esterıte|$1 vurnayışê esterıtey}}',
@@ -394,12 +391,11 @@ Perse: $2',
'protectedpagetext' => 'No pel qey nêvuriyayiş hao (nao) pawyeno.',
'viewsourcetext' => 'To şikinay çımey na pele bıvêne u kopya kerê:',
'protectedinterface' => 'No pel qey software nuştey hezır keno u ın semed ra şuxulyayişê no pel qedexe biyo.',
-'editinginterface' => "'''DİQET:''' Şıma pelê software vurneni.[http://translatewiki.net/wiki/Main_Page?setlang=tr translatewiki.net] bıxebıtne, proceyê MediaWiki bigere diqet.",
+'editinginterface' => "'''DİQET:''' Şıma pelê software vurneni.[//translatewiki.net/wiki/Main_Page?setlang=tr translatewiki.net] bıxebıtne, proceyê MediaWiki bigere diqet.",
'sqlhidden' => '(SQL pers kerdışê nımıte)',
'cascadeprotected' => 'No pel de vurnayiş qedexe biyo, çunke şıma tuşa "kademeyın" aqtif kerdo u no {{PLURAL:$1|pelo|pelo}} pawıteyo de xebıtyeno:
$2',
'namespaceprotected' => "No '''$1''' ca de icazetê şıma çino şıma pel rêz keri.",
-'customcssjsprotected' => 'Heqa şıma çıniya şıma ena pele bıvurnê, çunke eyarê şexsiyê karberê dê bini tederê.',
'ns-specialprotected' => 'Pelê xasi nênê vurnayış.',
'titleprotected' => 'Eno [[User:$1|$1]] zerreyê ena peli nişeno vuriye.
Sebeb: "\'\'$2\'\'".',
@@ -437,6 +433,7 @@ Hesabê şıma biyo a.
'createaccount' => 'hesab vıraze',
'gotaccount' => "Hesabê şıma esto? '''$1'''.",
'gotaccountlink' => 'Cıkewe',
+'userlogin-resetlink' => 'Melumatê cıkewtışi xo vira kerdê?',
'createaccountmail' => 'mı rê e-mail sera parola bırışe',
'createaccountreason' => 'Sebeb:',
'badretype' => 'Parolayê ke şıma nuşti yewbini nêtepışneni.',
@@ -456,7 +453,7 @@ Ravêri inan akerê u reyna bıcerrebnê.',
'nosuchuser' => 'Ebe namey "$1"i yew karber çıniyo.
Nuştışê namanê karberan de herfa pil u qıce rê diqet kerên.
Nuştışê xo qonrol kerên, ya zi [[Special:UserLogin/signup|yew hesabo newe akerên]].',
-'nosuchusershort' => 'No "<nowiki>$1</nowiki>" name de yew ten çino. Kontrolê nuştışi bıkere.',
+'nosuchusershort' => 'No "$1" name de yew ten çino. Kontrolê nuştışi bıkere.',
'nouserspecified' => 'Şıma gani yew name bıde.',
'login-userblocked' => 'No karber/na karbere blokekerdeyo/blokekerdiya. Cıkewtışi rê musade çıniyo.',
'wrongpassword' => 'Parola ğeleta. Rêna / fına bıcerrebne .',
@@ -499,7 +496,7 @@ Bıne vındere u newe ra dest pê bıkere.',
'loginlanguagelabel' => 'Zıwan: $1',
'suspicious-userlogout' => 'Waştişê tu ya veciyayişi kebul nibiya cunki ihtimal o ke waştiş yew browser ya zi proksiyê heripiyaye ra ameya.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Parola bıvurne',
'resetpass_announce' => 'Şıma pê yew parolayê muweqqet hesab kerd a, qey qedyayişe dekewtış newe yew parola bınuse:',
'resetpass_text' => 'Parolayê hesab bıvurn',
@@ -517,6 +514,14 @@ Bıne vındere u newe ra dest pê bıkere.',
şıma ya parolaye xo vurnayo ya zi parolayo muwaqqat waşto.',
'resetpass-temp-password' => 'parolayo muweqet:',
+# Special:PasswordReset
+'passwordreset' => 'Parola ancia bınuse',
+'passwordreset-legend' => 'Parola ancia bınuse',
+'passwordreset-username' => 'Namey karberi:',
+'passwordreset-email' => 'Adresa e-postey:',
+'passwordreset-emailelement' => 'Namey karberi: $1
+Parola vêrdiye: $2',
+
# Edit page toolbar
'bold_sample' => 'Çapo qalınd',
'bold_tip' => 'Herfo qalın',
@@ -528,8 +533,6 @@ Bıne vındere u newe ra dest pê bıkere.',
'extlink_tip' => 'Çımeyo tewer (http:// prefix)',
'headline_sample' => 'nuÅŸteyo headline',
'headline_tip' => 'Ket 2 headline',
-'math_sample' => 'Formula itiya ra bınus',
-'math_tip' => 'Formulayo Matematik (LaTeX)',
'nowiki_sample' => 'Non-format nuşte itiya ra bıerz',
'nowiki_tip' => 'Formatê wiki iptal bık',
'image_sample' => 'resım bıerze cı',
@@ -613,7 +616,7 @@ ya zi [{{fullurl:{{FULLPAGENAME}}|action=edit}} ena pele bıvurnê]</span>.',
'noarticletext-nopermission' => 'No pel nıka veng o.
No sernuşte şıma [[Special:Search/{{PAGENAME}}|pelanê binan de eşkeni bıgeri]]
ya zi <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} itara eşekeni bıgere].</span>',
-'userpage-userdoesnotexist' => 'Hesabê karberi "$1" qeyd nêbiyo.
+'userpage-userdoesnotexist' => 'Hesabê karberi "<nowiki>$1</nowiki>" qeyd nêbiyo.
Kerem ke, tı ke wazenay na pele bafernê/bıvurnê, qontrol ke.',
'userpage-userdoesnotexist-view' => 'Hesabê karberi "$1" qeyd nêbiyo.',
'blocked-notice-logextract' => 'No karber/na karbere emanet blokekerdeyo/blokekediya.
@@ -988,9 +991,10 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
'changepassword' => 'Parola bıvurne',
'prefs-skin' => 'Çerme',
'skin-preview' => 'Verqayt',
-'prefs-math' => 'Math',
'datedefault' => 'Tercih çıniyo',
+'prefs-beta' => 'Xacetê beta',
'prefs-datetime' => 'Tarix u wext',
+'prefs-labs' => 'Xacetê labs',
'prefs-personal' => 'Pela karberi',
'prefs-rc' => 'Vurnayışê peyêni',
'prefs-watchlist' => 'Lista seyr-kerdışi',
@@ -1012,8 +1016,6 @@ Pe verbendi ''all:'', vaceyê xo bıvurni ki contenti hemi cıgeyro (pelanê mı
'columns' => 'Estûni:',
'searchresultshead' => 'Cı geyre',
'resultsperpage' => 'Serê pele amarê cıkewtoğan:',
-'contextlines' => 'serê amarê cıkewtışi rê xeti',
-'contextchars' => 'serê xete elaqa',
'stub-threshold' => 'Baraj ke <a href="#" class="stub">stub link</a> ho şekil dano (bîtî):',
'recentchangesdays' => 'Rocê ke vurnayışanê peyênan de bıasê:',
'recentchangesdays-max' => 'Tewr zaf $1 {{PLURAL:$1|roc|roci}}',
@@ -1074,7 +1076,9 @@ $1 gani bınê no {{PLURAL:$1|karakter|karakter}}de bıbo.',
'email' => 'E-mail',
'prefs-help-realname' => 'Nameyo raşt waştena şıma rê mendo.
Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de mocnenê.',
-'prefs-help-email' => 'Dayişê adresê e-postayi keyfiyo; labele wexta ke parolayê şıma vind bıbo yew adres bıbo şıma re yewna parola erşawiyeno. Hem zi karberê binan de şıma eşkeni nımtıki xeberdayişi bıkeri.',
+'prefs-help-email' => 'Dayışê adresa e-postey keyfiyo, labelê seba eyarê parola lazıma, wexto ke şıma naye xo vira kerê.',
+'prefs-help-email-others' => 'Şıma şenê weçinê ke ê bini be yew gırey pela şımaya karberi ya zi pela werênayışi sera şıma de ebe e-poste irtıbat kewê.
+Kaberê bini ke şıma de kewti irtıbat, adresa e-postey şıma eşkera nêbena.',
'prefs-help-email-required' => 'E-mail adrese mecburiya.',
'prefs-info' => 'Enformasyonê temelî',
'prefs-i18n' => 'Beynelbinel kerdişî',
@@ -1193,7 +1197,6 @@ Eka tu wazene ke nameyo raşt xo bide, ma nameyo raşt ti iştirakanê ti de moc
'right-userrights' => 'Heqanê karberi pêro bıvurne',
'right-userrights-interwiki' => 'Heqqa karberanê ke ho wîkîyo binî de ey bivurne',
'right-siteadmin' => 'Database kilit bike u a bike',
-'right-reset-passwords' => 'Parolayê karberanê binî reset bike',
'right-override-export-depth' => 'Peleyanê ke tede linkanê 5 ra zafyer estê ay export bike',
'right-sendemail' => 'Karberanê binî ra e-mail bişirav',
@@ -1385,10 +1388,6 @@ Semedê ancia barkerdışi dewamkerdış ra ver tarixê esterışê dosya gani q
'upload-options' => 'Tercihanê bar kerdişî',
'watchthisupload' => 'Ena dosya seyr bike',
'filewasdeleted' => 'no name de yew dosya yew wexto nızdi de bar biya u dıma zi serkaran hewn a kerdo. wexya ke şıma dosya bar keni bıewnê no pel $1.',
-'upload-wasdeleted' => "'''hişyari: dosyaya ke cuwa ver hewna biya şıma newe ra bar keni.'''
-
-bar kerdış munasibo munasib niyo diqqet bıkerê.
-qaydê hewna biyayeyan tiya de pêşkeş biya:",
'filename-bad-prefix' => "name yo ke şıma bar keni zey nameyê kamerayê dijital î, pê ney '''\"\$1\"''' destpêkeno .
kerem kere yewna nameyo eşkera bıvicinê.",
'upload-success-subj' => 'bar biyo',
@@ -1412,12 +1411,15 @@ Eke problem dewam kerd [[Special:ListUsers/sysop|serkari]] de irtibat kewe.',
'upload-unknown-size' => 'Ebat nizanyeno',
'upload-http-error' => 'Yew ğeletê HTTPî biyo: $1',
+# Special:UploadStash
+'uploadstash' => 'Nımıtışê barkerdışi',
+
# img_auth script messages
'img-auth-accessdenied' => 'Cıkewtış red biyo',
-'img-auth-nopathinfo' => 'PATH_INFO kêm o.
-pêşkeşwanê şıma no malumat eyar nıkerdo.
-CGI-no tewır ra yo belka ya zi img_auth ra yo.
-http://www.mediawiki.org/wiki/Manual:Image_Authorization re bıewne.',
+'img-auth-nopathinfo' => 'PATH_INFO kemio.
+Pêşkêşwanê şıma seba ravurnayışê nê malumati eyar nêkerdo.
+Beno ke be CGI-bıngeyın bo u img_auth destek nêbeno.
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Selahiyetê resımi bıvêne.]',
'img-auth-notindir' => 'Patikayê ke ti wazeno direktorê bar biyayişî de çin o.',
'img-auth-badtitle' => '"$1" ra nieşkeno yew seroğê raştî virazî.',
'img-auth-nologinnWL' => 'Ti cikewte ni yo u "$1" listeyo sipê de çin o.',
@@ -1492,7 +1494,6 @@ listeya ke ha ver a têna na {{PLURAL:$1|dosyaya ewwili|dosyaya $1 ewwili}} mocn
[[Special:WhatLinksHere/$2|pêroyê liste]] mevcud o.',
'nolinkstoimage' => 'Pelanê ser ena dosyayê link biyê çin o.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Linkanê zafyerî]] ena pele ra link biyo bivîne.',
-'redirectstofile' => 'Eno {{PLURAL:$1|dosya redireksiyon keno |$1 dosyayî redireksiyonî kenê}} ena dosya:',
'duplicatesoffile' => 'a {{PLURAL:$1|dosya|$1 dosya}}, kopyayê na dosyayi ([[Special:FileDuplicateSearch/$2|teferruati]]):',
'sharedupload' => 'Ena dosya $1 ra u belki projeyê binan dı hewitiyeno.',
'sharedupload-desc-there' => 'depoyê $1 u projeyê bini na dosyayi xebıtneni. qey teferruati bıewnê [$2 teferruati dosyayi].',
@@ -1801,10 +1802,8 @@ qey heqê şexsi de [[{{MediaWiki:Listgrouprights-helppage}}|hema malumato ziyed
'watchlistanontext' => 'qey vurnayişê maddeya listeya temaşakerdişi $1.',
'watchnologin' => 'hesab akerde niyo',
'watchnologintext' => 'qey vurnayişê listeya temaşakerdışi [[Special:UserLogin|gani şıma hesab akeri]].',
-'addedwatch' => 'Kerd be lista seyrkerdışi ser',
'addedwatchtext' => 'Ma pele "[[:$1]]" zerri [[Special:Watchlist|watchlist]]ê tı kerd de.
Ena deme ra, ma qe vurnayışan ser ena pele tı haberdar keni. Hem zi çı dem ma tu ri heber dun, zerri [[Special:RecentChanges|list of recent changes]] name pele beno qalın. Tı ri beno qolay çıta vurnaye biyo.',
-'removedwatch' => 'Lista seyrkerdışi ra vet',
'removedwatchtext' => 'Ena pela "[[:$1]]" biya wedariya [[Special:Watchlist|listeyê seyr-kerdışi şıma]].',
'watch' => 'bıgê seyr-kerdış',
'watchthispage' => 'Ena pele seyr ke',
@@ -1856,13 +1855,13 @@ no pel o ke behs beno heta ziyaret kerdışê yewna heli, mesajê vuriyayiÅŸi nÃ
--
qey vurnayişê eyari:
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:Special:Watchlist/edit}}
qey wedarayişê ena pele liste xo ra seyr kerdişi, şo
$UNWATCHURL
qey hemkari u pêşniyazi:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Pele bıestere',
@@ -1878,7 +1877,7 @@ qey hemkari u pêşniyazi:
Tı ra rica keno, tı zani tı ho sekeno, tı zani neticeyanê eno wedarnayışi u tı zani tı ser [[{{MediaWiki:Policy-url}}|poliçe]] kar keno.',
'actioncomplete' => 'Aksiyon temam biyo',
'actionfailed' => 'kar nêbı',
-'deletedtext' => '"<nowiki>$1</nowiki>" biya wedariya.
+'deletedtext' => '"$1" biya wedariya.
Qe qeydê wedarnayışi, $2 bevinin.',
'deletedarticle' => '"[[$1]]" esterıt',
'suppressedarticle' => '"[[$1]]" çap biyo',
@@ -1938,7 +1937,7 @@ qey malumato ziyed bıewnê [[Special:ProtectedPages|protected pages list]].',
'protect_expiry_invalid' => 'Demo qediyayışi raşt niyo.',
'protect_expiry_old' => 'Demo qediyayışi tarix dı.',
'protect-unchain-permissions' => 'Zobina tercihanê mıhafezekerdışi kilıt meke',
-'protect-text' => "Tı eşkeno bıvin u seviyê kılit-kerdışi bıvin '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Tı eşkeno bıvin u seviyê kılit-kerdışi bıvin '''$1'''.",
'protect-locked-blocked' => "seviyeya qedexe biyayeyan nevuriyeno.
'''$1''' eyarê peli:",
'protect-locked-dblock' => "semedê kılidê database ya aktifi şıma neeşkeni seviyeya pawıtışi buvurni.
@@ -2091,7 +2090,6 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
'blockip-title' => 'Karberi kılit ke',
'blockip-legend' => 'Karber blok bike',
'blockiptext' => 'pê şuxulnayişê formê cêrıni, şıma eşkeni verniyê vurnayişkerdışê yew karberi ya zi yew IPyi bıgêrî. No têna qey verni-gırewtışê vandalizmiyo u gani şıma [[{{MediaWiki:Policy-url}}|qaydeyan]] re diqqet bıkeri. cêr de muheqqeq sebebê verni-grewtışi bınusi. (mesela: -nê- pelani de vandalizm kerdo).',
-'ipaddress' => 'Adresê IPi',
'ipadressorusername' => 'Adresê IPî ya zi namayê karberî',
'ipbexpiry' => 'Çi wext de qediyeno:',
'ipbreason' => 'Sebeb:',
@@ -2104,7 +2102,6 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
** Tehditwari hereket/Taciz
** yew ra ziyed hesaban xırab şuxulnayiş
** nameyê karberi yo ke meqbul niyo',
-'ipbanononly' => 'Karberî ke belli niyê ey blok bike',
'ipbcreateaccount' => 'Hesab viraÅŸtiÅŸi blok bik',
'ipbemailban' => 'Ena karber rê destur medî ke ay e-mail neşiravî',
'ipbenableautoblock' => 'verniyê IPadresa peyin ê no karberi u wexta ke vurnayişi kerd ê IPadresani otomotik bıger.',
@@ -2115,7 +2112,6 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
'ipbotherreason' => 'Sebebê bini:',
'ipbhidename' => 'Nameyê karberî listeyan u vurnayîşan ra binumne',
'ipbwatchuser' => 'Pela miniqaşe u pela ena karberî seyr bike',
-'ipballowusertalk' => 'Eno karber ra destur bide ke ey ÅŸeno pela minaqeÅŸe xo bivurne',
'ipb-change-block' => 'Pê ena ayaran, karberî reyna bloke bike',
'badipaddress' => 'Adresê IPî raşt niyo',
'blockipsuccesssub' => 'Blok biyo',
@@ -2133,14 +2129,9 @@ Cıkewtışo tewr peyêno ke bloke biyo, cêr seba referansi belikerdeyo:',
'unblocked-id' => 'Blokê $1î wedariyayo',
'ipblocklist' => 'Karberê kılitbiyaey',
'ipblocklist-legend' => 'Yew karberê blok biyaye bivîne',
-'ipblocklist-username' => 'Nameyê karberî ya zi adresê IPî',
-'ipblocklist-sh-userblocks' => 'Hesabê bloke biyayî $1',
-'ipblocklist-sh-tempblocks' => 'blokê arizî $1',
-'ipblocklist-sh-addressblocks' => 'Blokê IP ye yewî $1',
'ipblocklist-submit' => 'Bigêre',
'ipblocklist-localblock' => 'blokê mehelli',
'ipblocklist-otherblocks' => '{{PLURAL:$1|blokê|blokê}} bini',
-'blocklistline' => '$1, $2 blok biyê $3 ($4)',
'infiniteblock' => 'ebedî',
'expiringblock' => 'roca $1i saeta $2i de qediyena',
'anononlyblock' => 'teyna karbero anonim',
@@ -2161,7 +2152,9 @@ Sebebê kılit-biyayışê $1\'i: "$2"o',
'blocklog-showsuppresslog' => 'verniyê no/na karberi cıwa ver geriyayo/ya.',
'blocklogentry' => '[[$1]] block kerd, hetani $2 $3',
'reblock-logentry' => 'qey [[$1]]i tarixê qediyayişi $2 $3 pa ninan a eyarê ver-grewtışan vurna.',
-'blocklogtext' => 'tiya de listeya ver-grewtışê cıresayişê karberani esta. verniyê IP adres ê ke otomatik geriyayê tiya de çinê. ê karberi yê ke cıresayişê inani bıriyayê [[Special:IPBlockList|listeya ver-grewtışê IP]]yan no pel de şıma eşkeni bıvini.',
+'blocklogtext' => 'No kuliyatê kılitkerdış u rakerdışê fealiyetê karberano.
+Adresê IPyê ke otomatikmen kılit biyê lista de çıniyê.
+Seba lista karberanê ke heta nıka kılit biyê [[Special:BlockList|lista kılitkerdışê IPy]] bıvênên.',
'unblocklogentry' => '$1 ake',
'block-log-flags-anononly' => 'teyna karberê anonîmî',
'block-log-flags-nocreate' => 'akerdışê hesabi qapan bi',
@@ -2175,9 +2168,7 @@ Sebebê kılit-biyayışê $1\'i: "$2"o',
'ipb_expiry_temp' => 'Kılitbiyayışê karberê nımıtey gani ebedi bo.',
'ipb_hide_invalid' => 'hesabê karberi pinani nêbeno; belka semedê zaf vurnayişi ra yo.',
'ipb_already_blocked' => '"$1" zaten blok biya',
-'ipb-needreblock' => '==Zaten blok biya ==
-"$1" zaten blok biya
-Ti wazene ayaran bivurne?',
+'ipb-needreblock' => '$1 xora engel biyo. Tı wazenay eyaran bıvurnê?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Kılitkerdışo bin|Kılitkerdışê bini}}',
'ipb_cant_unblock' => 'xeta: IDyê ver-grewtışi $1 nêesa/asa.
belka ver-grewtış wedariyayo.',
@@ -2327,7 +2318,7 @@ ma vaci: qey pelê "[[{{MediaWiki:Mainpage}}]]i " [[{{#Special:Export}}/{{MediaW
'allmessagesdefault' => 'nuÅŸteyo orjinal',
'allmessagescurrent' => 'nuÅŸte yo ke ÅŸuxuliyeno',
'allmessagestext' => 'na liste, listeya mesajê cayê nameyê wikimedya yo.
-eke şıma qayili paşt bıdi mahalli kerdışê wikimedyayi, kerem kerê pelê [http://www.mediawiki.org/wiki/Localisation mahalli kerdışê wikimedyayi] u [http://translatewiki.net translatewiki.net] ziyaret bıkerê.',
+eke şıma qayili paşt bıdi mahalli kerdışê wikimedyayi, kerem kerê pelê [//www.mediawiki.org/wiki/Localisation mahalli kerdışê wikimedyayi] u [//translatewiki.net translatewiki.net] ziyaret bıkerê.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' qefelnaye yo u ey ra '''{{ns:special}}:Allmessages''' karkerdışi re akerde niyo.",
'allmessages-filter-legend' => 'Filitre',
'allmessages-filter' => 'goreyê xususi kerdışi re filtre bıker',
@@ -2471,9 +2462,7 @@ Tı eşkeno yew sebeb bınus.',
'tooltip-summary' => 'Yew xulasaya kilm binuse',
# Metadata
-'nodublincore' => 'medadatayi Dublin Core RDFyi qey ıney pêşkeşwani teber de verdiyayo.',
-'nocreativecommons' => 'medadatayi Creative Commons RDFyi qey ıney pêşkeşwani teber de verdiyayo.',
-'notacceptable' => "formatê ma'lumati no peşkeşwanê wikiyi nêweniyeno.",
+'notacceptable' => "formatê ma'lumati no peşkeşwanê wikiyi nêweniyeno.",
# Attribution
'anonymous' => '{{PLURAL:$1|karberê|karberê}} anonimi yê keyepelê {{SITENAME}}i',
@@ -2495,35 +2484,6 @@ Tı eşkeno yew sebeb bınus.',
'spam_reverting' => 'agêriyeno revizyon o ke tawayê $1 ıney piya çiniyo',
'spam_blanking' => 'revizyonê hemeyi de ıney $1 re gıreyi estî, deverdiyeno',
-# Info page
-'infosubtitle' => 'qey peli malumati',
-'numedits' => 'Teneyê vurnayişi (pele): $1',
-'numtalkedits' => 'Teneyê vurnayişi (pela minaqaşe): $1',
-'numwatchers' => 'amarê temaşakerdoxi: $1',
-'numauthors' => 'amarê nuştoxê ferqıni (pel): $1',
-'numtalkauthors' => 'Teneyê karberi ke ferkliyê (pela minaqeşe): $1',
-
-# Math options
-'mw_math_png' => 'Herzeman PNG render bike',
-'mw_math_simple' => 'Eka HTML zaf basit o ya zi PNG',
-'mw_math_html' => 'Eka HTM mumkin ya zi PNG',
-'mw_math_source' => 'Bi TeX biman (qe nuÅŸte browseroÄŸi)',
-'mw_math_modern' => 'Semed browseroğê moderni tafsiye biyê',
-'mw_math_mathml' => 'Eka mumkin, MathML (deneme)',
-
-# Math errors
-'math_failure' => 'Parse de ÄŸeleti biyo',
-'math_unknown_error' => 'ÄŸeleti nizanyeno',
-'math_unknown_function' => 'fonksiyon nizanyeno',
-'math_lexing_error' => 'ÄŸeleto lexing',
-'math_syntax_error' => 'ÄŸeleto sintaks',
-'math_image_error' => 'Conversiyonê PNG de ğeleti esta;
-qe ronayişê raşti ye latex, dvips, gs kontrol bike u convert bike',
-'math_bad_tmpdir' => 'Nieşkeno binusi ya zi direktorê mathi virazi',
-'math_bad_output' => 'Nieşkeno binusi ya zi direktorê mathi ye outputi virazi',
-'math_notexvc' => "xebetnayekarê texvc'i vindbiyo
-qey 'eyar kerdışi bıewnê math/README'yi.",
-
# Patrolling
'markaspatrolleddiff' => 'NiÅŸan bike ke devriye biyo',
'markaspatrolledtext' => 'Ena pele niÅŸan bike ke devriye biyo',
@@ -2569,7 +2529,6 @@ Gurênayışê nae de, beno ke sistemê şıma zerar bıvêno.",
'file-nohires' => '<small>Resolosyonê detayeri çino .</small>',
'svg-long-desc' => 'SVG dosya, nominalin $1 × $2 piksels, ebatê dosya: $3',
'show-big-image' => 'Resolosyonê temami',
-'show-big-image-thumb' => '<qıç>Ebatê ena verqeyd: $1 × $2 pixels</qıç>',
'file-info-gif-looped' => 'viyariye biyo',
'file-info-gif-frames' => '$1 {{PLURAL:$1|çerçeve|çerçeveyi}}',
'file-info-png-looped' => 'atlama biyo',
@@ -2601,15 +2560,21 @@ Na rêze de her gırêyo bin zey istisna vêniyeno, yanê pelê ke dosya beno ke
Eg ena dosya, kondisyonê orcinali ra bıvuriya, belki detayanê hemi nıeseno.',
'metadata-expand' => 'Extended detayan bımoc',
'metadata-collapse' => 'extended details bınım',
-'metadata-fields' => 'Ke tabloyê metadatayi nıeseno, ma EXIF metadata (eno mesaj dı) zerri pele resimi ri ken de.
-Ma aya bini numnen.
+'metadata-fields' => 'Resımê meydanê metadataê ke na pele de benê lista, pela resımmocnaene de ke tabloê metadata gına waro, gureniyenê.
+Ê bini zey sayekerdoğan nımiyenê.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Verini',
@@ -2624,13 +2589,11 @@ Ma aya bini numnen.
'exif-ycbcrpositioning' => 'pozisyonê Y u C',
'exif-xresolution' => 'Rezulasyanê veriniye',
'exif-yresolution' => 'Rezulasyanê derganiye',
-'exif-resolutionunit' => 'Rezulasyonê Parçeyê X U Y',
'exif-stripoffsets' => 'cayê data yê resim',
'exif-rowsperstrip' => 'Yew reze de teneyê dizeyi',
'exif-stripbytecounts' => 'Yew compresyon de dizeyi',
'exif-jpeginterchangeformat' => 'JPEG SOI rê ayar bike',
'exif-jpeginterchangeformatlength' => 'Bitê data yê JPEG',
-'exif-transferfunction' => 'Fonksiyonê transferi',
'exif-whitepoint' => 'noktayê sipe ye kromaticiti',
'exif-primarychromaticities' => 'Kromaticitiyê eveli',
'exif-ycbcrcoefficients' => 'Cayê rengi yê transformasyon metriksê koefişinti',
@@ -2649,7 +2612,6 @@ Ma aya bini numnen.
'exif-compressedbitsperpixel' => 'Modê komprasyonê resimi',
'exif-pixelydimension' => 'Verniyê resimo raştiye',
'exif-pixelxdimension' => 'Derganiyê resimo raştiye',
-'exif-makernote' => 'Notê Viraştoği',
'exif-usercomment' => 'Hulasayê karberi',
'exif-relatedsoundfile' => 'Derhekê dosya yê vengi',
'exif-datetimeoriginal' => 'Zeman u tarixê data varaziyayişi',
@@ -2663,7 +2625,6 @@ Ma aya bini numnen.
'exif-exposureprogram' => 'Programê Orta de Vinderdişi',
'exif-spectralsensitivity' => 'Hesasiyetê spektrali',
'exif-isospeedratings' => 'ISO değerê piti',
-'exif-oecf' => 'Faktorê conversiyonê optoelektroniki',
'exif-shutterspeedvalue' => 'Pitiyê şhutteri',
'exif-aperturevalue' => 'Apertur',
'exif-brightnessvalue' => 'Beraqiyi',
@@ -2676,7 +2637,6 @@ Ma aya bini numnen.
'exif-focallength' => 'Deganiyê fokus ê lensi',
'exif-subjectarea' => 'Wareyê ey',
'exif-flashenergy' => 'Kuvetê flaşi',
-'exif-spatialfrequencyresponse' => 'cewabê frekansê mekanî',
'exif-focalplanexresolution' => 'Focal plane X resolution',
'exif-focalplaneyresolution' => 'Focal plane Y resolution',
'exif-focalplaneresolutionunit' => 'Focal plane resolution unit',
@@ -2685,7 +2645,6 @@ Ma aya bini numnen.
'exif-sensingmethod' => 'metodê hiskerdışi',
'exif-filesource' => 'çimeyê dosyayi',
'exif-scenetype' => 'tipa sehneyi',
-'exif-cfapattern' => 'desenê (fesalê) CFAyi',
'exif-customrendered' => 'karê resmê xususiyi',
'exif-exposuremode' => 'poz kerdışi',
'exif-whitebalance' => 'Dengeyo Sipe',
@@ -2877,15 +2836,13 @@ Ma aya bini numnen.
# External editor support
'edit-externally' => 'Ena dosya bıvurne pe yew programê harici',
-'edit-externally-help' => '(Qe informasyonê zafyer ena bevinin [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
+'edit-externally-help' => '(Qe informasyonê zafyer ena bevinin [//www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'hemi',
-'imagelistall' => 'hemi',
-'watchlistall2' => 'pêro',
-'namespacesall' => 'têde',
-'monthsall' => 'pêro',
-'limitall' => 'hemi',
+'watchlistall2' => 'pêro',
+'namespacesall' => 'têde',
+'monthsall' => 'pêro',
+'limitall' => 'hemi',
# E-mail address confirmation
'confirmemail' => 'Adresê emaîlî xo konfirme bike',
@@ -2962,6 +2919,12 @@ Ma rica keno konfirme bike ke ti raştî wazeno eno pel bivirazo.",
'confirm-purge-top' => 'Cacheyê eno pel biestere?',
'confirm-purge-bottom' => 'Purge kerdişê yew pel cacheyî estereno u revizyonê penîyî mucneno.',
+# action=watch/unwatch
+'confirm-watch-button' => 'TEMAM',
+'confirm-watch-top' => 'Ena pele lista xoya seyrkerdışi ke',
+'confirm-unwatch-button' => 'TEMAM',
+'confirm-unwatch-top' => 'Ena pele lista xoya seyirkerdışi ra bıvece?',
+
# Multipage image navigation
'imgmultipageprev' => 'peleyê verin',
'imgmultipagenext' => 'pelo serîn →',
@@ -3004,14 +2967,14 @@ Verqeydo normal deneme bike.',
'watchlistedit-normal-legend' => 'Listeyê seyr kerdişê tu de seroğ biwedarna.',
'watchlistedit-normal-explain' => 'Listeyê seyr kerdîşî ti de serogî cor de mucnayiyo.
Eka ti wazeno seroğ biwedarne, kuti ke kistê de, ay işaret bike u "{{int:Watchlistedit-normal-submit}}" klik bike.
-Ti hem zi eÅŸkeno [[Special:Watchlist/raw|edit the raw list]].',
+Ti hem zi eÅŸkeno [[Special:EditWatchlist/raw|edit the raw list]].',
'watchlistedit-normal-submit' => 'Seroğî biwedarnê',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 seroğ|$1 seroğî}} seyr kerdişê tu ra wedarno.',
'watchlistedit-raw-title' => 'Listeyê seyirkerdişi ye hami bivurne',
'watchlistedit-raw-legend' => 'Listeyê seyirkerdişi ye hami bivurne',
'watchlistedit-raw-explain' => 'Listeyê seyr kerdîşî ti de serogî cor de mucnayiyo u ti eşkeno pê dekerdiş u wedarnayîş liste bivurne.
Eka vurnayîşê ti qediyo, Listeyê Seyr Kerdişî Rocaniye Bike "{{int:Watchlistedit-raw-submit}}" klik bike.
-Ti hem zi eÅŸkeno [[Special:Watchlist/edit|use the standard editor]].',
+Ti hem zi eÅŸkeno [[Special:EditWatchlist|use the standard editor]].',
'watchlistedit-raw-titles' => 'Seroğî:',
'watchlistedit-raw-submit' => 'Listeyê seyr kerdişî xo update bike',
'watchlistedit-raw-done' => 'Listeyê tuyê seyrkerdişi rocaniye biyo',
@@ -3028,26 +2991,25 @@ Ti hem zi eÅŸkeno [[Special:Watchlist/edit|use the standard editor]].',
'duplicate-defaultsort' => '\'\'\'Teme:\'\'\' Tuşê default sort "$2" sero tuşê default sort "$1"î ra şino.',
# Special:Version
-'version' => 'Versiyon',
-'version-extensions' => 'Ekstensiyonî ke ronaye',
-'version-specialpages' => 'Pelanê xasiyan',
-'version-parserhooks' => 'Çengelê Parserî',
-'version-variables' => 'Vurnayeyî',
-'version-skins' => 'Cıldi',
-'version-other' => 'Bin',
-'version-mediahandlers' => 'Kulbê medyayî',
-'version-hooks' => 'Çengelî',
-'version-extension-functions' => 'Funksiyonê ekstensiyonî',
-'version-parser-extensiontags' => 'Etiketê ekstensiyon ê parserî',
-'version-parser-function-hooks' => 'Çengelê ekstensiyon ê parserî',
-'version-skin-extension-functions' => 'Funksiyonê ekstensiyon ê çermeyî',
-'version-hook-name' => 'Nameyê çengelî',
-'version-hook-subscribedby' => 'Eza biyayoÄŸ',
-'version-version' => '(Versiyon $1)',
-'version-license' => 'Lisans',
-'version-software' => 'Softwareyê ronayi',
-'version-software-product' => 'Mal',
-'version-software-version' => 'Versiyon',
+'version' => 'Versiyon',
+'version-extensions' => 'Ekstensiyonî ke ronaye',
+'version-specialpages' => 'Pelanê xasiyan',
+'version-parserhooks' => 'Çengelê Parserî',
+'version-variables' => 'Vurnayeyî',
+'version-skins' => 'Cıldi',
+'version-other' => 'Bin',
+'version-mediahandlers' => 'Kulbê medyayî',
+'version-hooks' => 'Çengelî',
+'version-extension-functions' => 'Funksiyonê ekstensiyonî',
+'version-parser-extensiontags' => 'Etiketê ekstensiyon ê parserî',
+'version-parser-function-hooks' => 'Çengelê ekstensiyon ê parserî',
+'version-hook-name' => 'Nameyê çengelî',
+'version-hook-subscribedby' => 'Eza biyayoÄŸ',
+'version-version' => '(Versiyon $1)',
+'version-license' => 'Lisans',
+'version-software' => 'Softwareyê ronayi',
+'version-software-product' => 'Mal',
+'version-software-version' => 'Versiyon',
# Special:FilePath
'filepath' => 'Raherê dosyayi',
@@ -3057,16 +3019,15 @@ Ti hem zi eÅŸkeno [[Special:Watchlist/edit|use the standard editor]].',
Resımi be tam asayış mocniyayê, tipê dosyaê bini be programê cıyo elaqedar direkt dest keno pê.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'kopyayê dosyayi bigêre',
-'fileduplicatesearch-summary' => 'Qe dosyayê herdî bine harsh value de bigêre.
-
-Nameyê dosyayî de bike feqet prefiksê "{{ns:file}}:"î menuse.',
-'fileduplicatesearch-legend' => 'kopyayê ena dosya bigêre',
-'fileduplicatesearch-filename' => 'Nameyê dosyayi',
-'fileduplicatesearch-submit' => 'bigêre',
-'fileduplicatesearch-info' => '$1 × $2 piksel<br />Ebatê dosyayî: $3<br />Tipê MIMEî: $4',
-'fileduplicatesearch-result-1' => "Dosyayê ''$1î'' de hem-kopya çini yo.",
-'fileduplicatesearch-result-n' => "Dosyayê ''$1î'' de {{PLURAL:$2|1 hem-kopya|$2 hem-kopyayî'}} esto.",
+'fileduplicatesearch' => 'kopyayê dosyayi bigêre',
+'fileduplicatesearch-summary' => 'Dosyanê çıftan bınê têmiyankewteyan de bıgeyre.',
+'fileduplicatesearch-legend' => 'kopyayê ena dosya bigêre',
+'fileduplicatesearch-filename' => 'Nameyê dosyayi',
+'fileduplicatesearch-submit' => 'bigêre',
+'fileduplicatesearch-info' => '$1 × $2 piksel<br />Ebatê dosyayî: $3<br />Tipê MIMEî: $4',
+'fileduplicatesearch-result-1' => "Dosyayê ''$1î'' de hem-kopya çini yo.",
+'fileduplicatesearch-result-n' => "Dosyayê ''$1î'' de {{PLURAL:$2|1 hem-kopya|$2 hem-kopyayî'}} esto.",
+'fileduplicatesearch-noresults' => 'Ebe namey "$1" ra dosya nêdiyayê.',
# Special:SpecialPages
'specialpages' => 'Pelê xasi',
diff --git a/languages/messages/MessagesDsb.php b/languages/messages/MessagesDsb.php
index f1b44d50..6146ab53 100644
--- a/languages/messages/MessagesDsb.php
+++ b/languages/messages/MessagesDsb.php
@@ -46,6 +46,11 @@ $namespaceAliases = array(
'Diskusija_wó_wobrazu' => NS_FILE_TALK,
);
+$namespaceGenderAliases = array(
+ NS_USER => array( 'male' => 'Wužywaŕ', 'female' => 'Wužywarka' ),
+ NS_USER_TALK => array( 'male' => 'Diskusija_wužywarja', 'female' => 'Diskusija_wužywarki' ),
+);
+
$datePreferences = array(
'default',
'dmy',
@@ -61,94 +66,94 @@ $dateFormats = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Dwójne_dalejpósrědnjenja' ),
+ 'Activeusers' => array( 'Aktiwne_wužywarje' ),
+ 'Allmessages' => array( 'Systemowe_powěsći' ),
+ 'Allpages' => array( 'WÅ¡ykne_boki' ),
+ 'Ancientpages' => array( 'Nejstarše_boki' ),
+ 'Blankpage' => array( 'Prozny_bok' ),
+ 'Block' => array( 'Blokěrowaś' ),
+ 'Blockme' => array( 'Proksy-blokěrowanje' ),
+ 'Booksources' => array( 'Pytaś_pó_ISBN' ),
'BrokenRedirects' => array( 'Njefunkcioněrujuce_dalejpósrědnjenja' ),
- 'Disambiguations' => array( 'Wótkaze_ku_rozjasnjenju_wopśimjeśa' ),
- 'Userlogin' => array( 'Pśizjawiś_se' ),
- 'Userlogout' => array( 'Wótzjawiś_se' ),
+ 'Categories' => array( 'Kategorije' ),
+ 'ChangePassword' => array( 'Šćitne_gronidło_slědk_stajiś' ),
+ 'Confirmemail' => array( 'E-mail_wobkšuśiś' ),
+ 'Contributions' => array( 'Pśinoski' ),
'CreateAccount' => array( 'Wužywarske_konto_załožyś' ),
- 'Preferences' => array( 'Nastajenja' ),
- 'Watchlist' => array( 'Wobglědowańka' ),
- 'Recentchanges' => array( 'Aktualne_změny' ),
- 'Upload' => array( 'UploadowaÅ›' ),
+ 'Deadendpages' => array( 'Boki_kenž_su_slěpe_gasy' ),
+ 'DeletedContributions' => array( 'Wulašowane_pśinoski' ),
+ 'Disambiguations' => array( 'Wótkaze_ku_rozjasnjenju_wopśimjeśa' ),
+ 'DoubleRedirects' => array( 'Dwójne_dalejpósrědnjenja' ),
+ 'Emailuser' => array( 'E-mail' ),
+ 'Export' => array( 'Eksportěrowaś' ),
+ 'Fewestrevisions' => array( 'Nejmjenjej_wobźěłane_boki' ),
+ 'FileDuplicateSearch' => array( 'Pytanje_datajowych_duplikatow' ),
+ 'Filepath' => array( 'Datajowa_sćažka' ),
+ 'Import' => array( 'Importěrowaś' ),
+ 'Invalidateemail' => array( 'E-mail_njewobkšuśis' ),
+ 'BlockList' => array( 'Blokěrowane_IPje' ),
+ 'LinkSearch' => array( 'Pytanje_wótkazow' ),
+ 'Listadmins' => array( 'Administratory' ),
+ 'Listbots' => array( 'Boty' ),
'Listfiles' => array( 'Lisćina_datajow' ),
- 'Newimages' => array( 'Nowe_dataje' ),
- 'Listusers' => array( 'Wužywarje' ),
'Listgrouprights' => array( 'Pšawa_wužywarskich_kupkow' ),
- 'Statistics' => array( 'Statistika' ),
- 'Randompage' => array( 'Pśipadny_bok' ),
+ 'Listredirects' => array( 'Pśesměrowanja' ),
+ 'Listusers' => array( 'Wužywarje' ),
+ 'Lockdb' => array( 'Datowu_banku_blokěrowaś' ),
+ 'Log' => array( 'Protokole' ),
'Lonelypages' => array( 'Wósyrośone_boki' ),
- 'Uncategorizedpages' => array( 'Njekategorizěrowane_boki' ),
- 'Uncategorizedcategories' => array( 'Njekategorizěrowane_kategorije' ),
- 'Uncategorizedimages' => array( 'Njekategorizěrowane_dataje' ),
- 'Uncategorizedtemplates' => array( 'Njekategorizěrowane_pśedłogi' ),
- 'Unusedcategories' => array( 'Njewužywane_kategorije' ),
- 'Unusedimages' => array( 'Njewužywane_dataje' ),
- 'Wantedpages' => array( 'Póžedane_boki' ),
- 'Wantedcategories' => array( 'Póžedane_kategorije' ),
- 'Wantedfiles' => array( 'Felujuce_dataje' ),
- 'Wantedtemplates' => array( 'Felujuce_pśedłogi' ),
+ 'Longpages' => array( 'Nejdlěše_boki' ),
+ 'MergeHistory' => array( 'Stawizny_wersijow_zjadnośiś' ),
+ 'MIMEsearch' => array( 'Pytaś_pó_MIME-typje' ),
+ 'Mostcategories' => array( 'Boki_z_nejwěcej_kategorijami' ),
+ 'Mostimages' => array( 'Nejwěcej_wužywane_dataje' ),
'Mostlinked' => array( 'Boki_na_kótarež_wjeźo_nejwěcej_wótkazow' ),
'Mostlinkedcategories' => array( 'Nejwěcej_wužywane_kategorije' ),
'Mostlinkedtemplates' => array( 'Nejwěcej_wužywane_pśedłogi' ),
- 'Mostimages' => array( 'Nejwěcej_wužywane_dataje' ),
- 'Mostcategories' => array( 'Boki_z_nejwěcej_kategorijami' ),
'Mostrevisions' => array( 'Nejwěcej_wobźěłane_boki' ),
- 'Fewestrevisions' => array( 'Nejmjenjej_wobźěłane_boki' ),
- 'Shortpages' => array( 'Nejkrotše_boki' ),
- 'Longpages' => array( 'Nejdlěše_boki' ),
+ 'Movepage' => array( 'Pśesunuś' ),
+ 'Mycontributions' => array( 'Móje_pśinoski' ),
+ 'Mypage' => array( 'Mój_bok' ),
+ 'Mytalk' => array( 'Mója_diskusija' ),
+ 'Newimages' => array( 'Nowe_dataje' ),
'Newpages' => array( 'Nowe_boki' ),
- 'Ancientpages' => array( 'Nejstarše_boki' ),
- 'Deadendpages' => array( 'Boki_kenž_su_slěpe_gasy' ),
+ 'Popularpages' => array( 'Woblubowane_boki' ),
+ 'Preferences' => array( 'Nastajenja' ),
+ 'Prefixindex' => array( 'Indeks_prefiksow' ),
'Protectedpages' => array( 'Šćitane_boki' ),
'Protectedtitles' => array( 'Šćitane_title' ),
- 'Allpages' => array( 'WÅ¡ykne_boki' ),
- 'Prefixindex' => array( 'Indeks_prefiksow' ),
- 'Ipblocklist' => array( 'Blokěrowane_IPje' ),
- 'Specialpages' => array( 'Specialne_boki' ),
- 'Contributions' => array( 'Pśinoski' ),
- 'Emailuser' => array( 'E-mail' ),
- 'Confirmemail' => array( 'E-mail_wobkšuśiś' ),
- 'Whatlinkshere' => array( 'Lisćina_wótkazow' ),
+ 'Randompage' => array( 'Pśipadny_bok' ),
+ 'Randomredirect' => array( 'Pśipadne_pśesměrowanje' ),
+ 'Recentchanges' => array( 'Aktualne_změny' ),
'Recentchangeslinked' => array( 'Změny_na_zalinkowanych_bokach' ),
- 'Movepage' => array( 'Pśesunuś' ),
- 'Blockme' => array( 'Proksy-blokěrowanje' ),
- 'Booksources' => array( 'Pytaś_pó_ISBN' ),
- 'Categories' => array( 'Kategorije' ),
- 'Export' => array( 'Eksportěrowaś' ),
- 'Version' => array( 'Wersija' ),
- 'Allmessages' => array( 'Systemowe_powěsći' ),
- 'Log' => array( 'Protokole' ),
- 'Blockip' => array( 'Blokěrowaś' ),
+ 'Revisiondelete' => array( 'Wulašowanje_wersijow' ),
+ 'Search' => array( 'PytaÅ›' ),
+ 'Shortpages' => array( 'Nejkrotše_boki' ),
+ 'Specialpages' => array( 'Specialne_boki' ),
+ 'Statistics' => array( 'Statistika' ),
+ 'Tags' => array( 'Toflicki' ),
+ 'Uncategorizedcategories' => array( 'Njekategorizěrowane_kategorije' ),
+ 'Uncategorizedimages' => array( 'Njekategorizěrowane_dataje' ),
+ 'Uncategorizedpages' => array( 'Njekategorizěrowane_boki' ),
+ 'Uncategorizedtemplates' => array( 'Njekategorizěrowane_pśedłogi' ),
'Undelete' => array( 'Nawrośiś' ),
- 'Import' => array( 'Importěrowaś' ),
- 'Lockdb' => array( 'Datowu_banku_blokěrowaś' ),
'Unlockdb' => array( 'Datowu_banku_zasej_spśistupniś' ),
- 'Userrights' => array( 'Pšawa_wužywarjow' ),
- 'MIMEsearch' => array( 'Pytaś_pó_MIME-typje' ),
- 'FileDuplicateSearch' => array( 'Pytanje_datajowych_duplikatow' ),
- 'Unwatchedpages' => array( 'Boki_kenž_njejsu_we_wobglědowańkach' ),
- 'Listredirects' => array( 'Pśesměrowanja' ),
- 'Revisiondelete' => array( 'Wulašowanje_wersijow' ),
+ 'Unusedcategories' => array( 'Njewužywane_kategorije' ),
+ 'Unusedimages' => array( 'Njewužywane_dataje' ),
'Unusedtemplates' => array( 'Njewužywane_pśedłogi' ),
- 'Randomredirect' => array( 'Pśipadne_pśesměrowanje' ),
- 'Mypage' => array( 'Mój_bok' ),
- 'Mytalk' => array( 'Mója_diskusija' ),
- 'Mycontributions' => array( 'Móje_pśinoski' ),
- 'Listadmins' => array( 'Administratory' ),
- 'Listbots' => array( 'Boty' ),
- 'Popularpages' => array( 'Woblubowane_boki' ),
- 'Search' => array( 'PytaÅ›' ),
- 'Resetpass' => array( 'Šćitne_gronidło_slědk_stajiś' ),
+ 'Unwatchedpages' => array( 'Boki_kenž_njejsu_we_wobglědowańkach' ),
+ 'Upload' => array( 'UploadowaÅ›' ),
+ 'Userlogin' => array( 'Pśizjawiś_se' ),
+ 'Userlogout' => array( 'Wótzjawiś_se' ),
+ 'Userrights' => array( 'Pšawa_wužywarjow' ),
+ 'Version' => array( 'Wersija' ),
+ 'Wantedcategories' => array( 'Póžedane_kategorije' ),
+ 'Wantedfiles' => array( 'Felujuce_dataje' ),
+ 'Wantedpages' => array( 'Póžedane_boki' ),
+ 'Wantedtemplates' => array( 'Felujuce_pśedłogi' ),
+ 'Watchlist' => array( 'Wobglědowańka' ),
+ 'Whatlinkshere' => array( 'Lisćina_wótkazow' ),
'Withoutinterwiki' => array( 'Interwikije_feluju' ),
- 'MergeHistory' => array( 'Stawizny_wersijow_zjadnośiś' ),
- 'Filepath' => array( 'Datajowa_sćažka' ),
- 'Invalidateemail' => array( 'E-mail_njewobkšuśis' ),
- 'Blankpage' => array( 'Prozny_bok' ),
- 'LinkSearch' => array( 'Pytanje_wótkazow' ),
- 'DeletedContributions' => array( 'Wulašowane_pśinoski' ),
- 'Tags' => array( 'Toflicki' ),
- 'Activeusers' => array( 'Aktiwne_wužywarje' ),
);
$messages = array(
@@ -183,8 +188,8 @@ $messages = array(
'tog-shownumberswatching' => 'Licbu wobglědujucych wužywarjow pokazaś',
'tog-oldsig' => 'Eksistěrujuca signatura:',
'tog-fancysig' => 'Ze signaturu kaž z wikitekstom wobchadaś (bźez awtomatiskego wótkaza)',
-'tog-externaleditor' => 'Eksterny editor ako standard wužywaś (jano za ekspertow, pomina sebje specialne nastajenja na wašom licadle. [http://www.mediawiki.org/wiki/Manual:External_editors Dalšne informacije.])',
-'tog-externaldiff' => 'Eksterny diff ako standard wužywaś (jano za ekspertow, pomina sebje specialne nastajenja na wašom licadle. [http://www.mediawiki.org/wiki/Manual:External_editors Dalšne informacije.])',
+'tog-externaleditor' => 'Eksterny editor ako standard wužywaś (jano za ekspertow, pomina sebje specialne nastajenja na wašom licadle. [//www.mediawiki.org/wiki/Manual:External_editors Dalšne informacije.])',
+'tog-externaldiff' => 'Eksterny diff ako standard wužywaś (jano za ekspertow, pomina sebje specialne nastajenja na wašom licadle. [//www.mediawiki.org/wiki/Manual:External_editors Dalšne informacije.])',
'tog-showjumplinks' => 'Wótkaze typa „źi do†zmóžniś',
'tog-uselivepreview' => 'Live-pśeglěd wužywaś (JavaScript) (eksperimentelnje)',
'tog-forceeditsummary' => 'Warnowaś, gaž pśi składowanju zespominanje felujo',
@@ -280,15 +285,7 @@ $messages = array(
'listingcontinuesabbrev' => 'dalej',
'index-category' => 'Indicěrowane boki',
'noindex-category' => 'Njeindicěrowane boki',
-
-'mainpagetext' => "'''MediaWiki jo se wuspěšnje instalěrowało.'''",
-'mainpagedocfooter' => "Pomoc pśi wužywanju softwary wiki namakajoš pód [http://meta.wikimedia.org/wiki/Help:Contents User's Guide].
-
-== Na zachopjenje ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Konfiguracija lisćiny połoženjow]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ (pšašanja a wótegrona)]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lisćina e-mailowych nakładow MediaWiki]",
+'broken-file-category' => 'Boki z njepłaśiwymi datajowymi wótkazami',
'about' => 'Wó',
'article' => 'Nastawk',
@@ -340,10 +337,10 @@ $messages = array(
'history' => 'wersije',
'history_short' => 'Wersije a awtory',
'updatedmarker' => 'Změny wót mójogo slědnego woglěda',
-'info_short' => 'Informacija',
'printableversion' => 'Wersija za śišć',
'permalink' => 'Wobstawny wótkaz',
'print' => 'Śišćaś',
+'view' => 'Woglědaś se',
'edit' => 'wobźěłaś',
'create' => 'Wuźěłaś',
'editthispage' => 'Bok wobźěłaś',
@@ -351,6 +348,7 @@ $messages = array(
'delete' => 'Wulašowaś',
'deletethispage' => 'Toś ten bok wulašowaś',
'undelete_short' => '{{PLURAL:$1|1 wersiju|$1 wersiji|$1 wersije}} nawrośiś.',
+'viewdeleted_short' => '{{PLURAL:$1|jadnu wulašowanu změnu|$1 wulašowanej změnje|$1 wulašowane změny|$1 wulašowanych změnow}} se woglědaś',
'protect' => 'Šćitaś',
'protect_change' => 'změniś',
'protectthispage' => 'Bok šćitaś',
@@ -434,6 +432,8 @@ $1',
'toc' => 'Wopśimjeśe',
'showtoc' => 'pokazaÅ›',
'hidetoc' => 'schowaÅ›',
+'collapsible-collapse' => 'SchowaÅ›',
+'collapsible-expand' => 'PokazaÅ›',
'thisisdeleted' => '$1 woglědaś abo wobnowiś?',
'viewdeleted' => '$1 pokazaÅ›?',
'restorelink' => '{{PLURAL:$1|1 wulašowana wersija|$1 wulašowanej wersiji|$1 wulašowane wersije}}',
@@ -445,6 +445,8 @@ $1',
'page-rss-feed' => '"$1" RSS Feed',
'page-atom-feed' => '"$1" Atom Feed',
'red-link-title' => '$1 (bok njeeksistěrujo)',
+'sort-descending' => 'Wóstupujucy sortěrowaś',
+'sort-ascending' => 'Stupujucy sortěrowaś',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Nastawk',
@@ -526,11 +528,12 @@ Wótpšašanje: $2',
'protectedpagetext' => 'Wobźěłanje toś togo boka jo se znjemóžniło.',
'viewsourcetext' => 'Žrědłowy tekst togo boka móžoš se woglědaś a kopěrowaś:',
'protectedinterface' => 'Toś ten bok wopśimujo tekst za rěcny zwjerch softwary. Jogo wobźěłowanje jo se znjemóžniło, aby se znjewužywanjeju zadorało.',
-'editinginterface' => "'''Warnowanje:''' Wobźěłujoš bok, kótaryž se wužywa, aby se tekst za pówjerch software MediaWiki k dispoziciji stajił. Změny na toś tom boku buźo wuglědanje wužywarskego pówjercha za drugich wužywarjow wobwliwowaś. Wužywaj pšosym za pśełožki [http://translatewiki.net/wiki/Main_Page?setlang=dsb translatewiki.net], projekt MediaWiki za lokalizacije.",
+'editinginterface' => "'''Warnowanje:''' Wobźěłujoš bok, kótaryž se wužywa, aby se tekst za pówjerch software MediaWiki k dispoziciji stajił. Změny na toś tom boku buźo wuglědanje wužywarskego pówjercha za drugich wužywarjow wobwliwowaś. Wužywaj pšosym za pśełožki [//translatewiki.net/wiki/Main_Page?setlang=dsb translatewiki.net], projekt MediaWiki za lokalizacije.",
'sqlhidden' => '(Wótpšašanje SQL schowane)',
'cascadeprotected' => 'Za toś ten bok jo se wobźěłowanje znjemóžniło, dokulaž jo zawězany do {{PLURAL:$1|slědujucego boka|slědujuceju bokowu|slědujucych bokow}}, {{PLURAL:$1|kótaryž jo|kótarejž stej|kótarež su}} pśez kaskadowu opciju {{PLURAL:$1|šćitany|šćitanej|šćitane}}: $2',
'namespaceprotected' => "Njejsy wopšawnjony, boki w rumje: '''$1''' wobźěłaś.",
-'customcssjsprotected' => 'Toś te boki njesmějoš wobźěłaś, dokulaž wopśimjeju wósobinske dataje drugego wužywarja.',
+'customcssprotected' => 'Njamaš pšawo, aby toś ten CSS-bok wobźěłał, dokulaž wopśimujo wósobinske nastajenja drugego wužywarja.',
+'customjsprotected' => 'Njamaš pšawo, aby toś ten JavaScriptowy bok wobźěłał, dokulaž wopśimujo wósobinske nastajenja drugego wužywarja.',
'ns-specialprotected' => 'Njejo móžno, boki w rumje {{ns:special}} wobźěłaś.',
'titleprotected' => "Bok z toś tym mjenim bu wót [[User:$1|$1]] pśeśiwo napóranjeju šćitany. Pśicyna jo ''$2''.",
@@ -567,6 +570,7 @@ Twójo konto jo se załožyło. Njezabydni změniś swóje [[Special:Preferences
'createaccount' => 'Wužywarske konto załožyś',
'gotaccount' => "Maš južo wužywarske konto? '''$1'''.",
'gotaccountlink' => 'Pśizjawiś se',
+'userlogin-resetlink' => 'Sy pśizjawjeńske daty zabył?',
'createaccountmail' => 'z e-mailku',
'createaccountreason' => 'Pśicyna:',
'badretype' => 'Šćitnej gronidle, kótarejž sy zapódał, se njemakajotej.',
@@ -576,12 +580,14 @@ Pšosym wubjeŕ druge mě.',
'createaccounterror' => 'Wužywarske konto njejo se napóraś dało: $1',
'nocookiesnew' => 'Wužywarske konto jo se južo wutwóriło, ale wužywaŕ njejo pśizjawjony. {{SITENAME}} wužywa cookije za pśizjawjenja. Jo notne, cookije zmóžniś a se wótnowotki pśizjawiś.',
'nocookieslogin' => '{{SITENAME}} wužywa cookije za pśizjawjenja. Jo notne, cookije zmóžniś a se wótnowotki pśizjawiś.',
+'nocookiesfornew' => 'Wužywarske konto njejo se załožyło, dokulaž njejsmy mógli jogo žrědło wobkšuśiś.
+PÅ›eswÄ›dÄ se, až cookije su zmóžnjone, zacytaj toÅ› ten bok a wopytaj hyšći raz.',
'noname' => 'Njejsy žedno płaśece wužywarske mě zapódał.',
'loginsuccesstitle' => 'Pśizjawjenje wuspěšne',
'loginsuccess' => "'''Sy něnto ako „$1†w {{GRAMMAR:lokatiw|{{SITENAME}}}} pśizjawjony.'''",
'nosuchuser' => 'Wužywaŕ z mjenim „$1“ njeeksistěrujo. Wužywarske mjenja źiwaju na wjelikopisanje.
Pśeglěduj pšawopis abo [[Special:UserLogin/signup|załož nowe konto]].',
-'nosuchusershort' => 'Wužywarske mě „<nowiki>$1</nowiki>“ njeeksistěrujo. Pśeglěduj pšawopis.',
+'nosuchusershort' => 'Wužywarske mě „$1“ njeeksistěrujo. Pśeglěduj pšawopis.',
'nouserspecified' => 'Pšosym pódaj wužywarske mě.',
'login-userblocked' => 'Toś ten wužywaŕ jo blokěrowany. Pśizjawjenje njejo dowólone.',
'wrongpassword' => 'Zapódane šćitne gronidło njejo pšawe. Pšosym wopytaj hyšći raz.',
@@ -620,13 +626,14 @@ Woglědowarje, kótarež wužywaju toś tu IP-adresu njamógu tuchylu dalšne ko
Móžoš toś te zdźělenje ignorowaś, jolic toś te konto jo se jano zamólnje wutwóriło.',
'usernamehasherror' => 'Wužywarske mě njesmějo hašowe znamuška wopśimjeś',
'login-throttled' => 'Sy pśecesto wopytał se pśizjawiś. Pócakaj pšosym, nježli až wopytajoš znowego.',
+'login-abort-generic' => 'Twójo pśizjawjenje njejo wuspěšne było - pśetergnjone',
'loginlanguagelabel' => 'Rěc: $1',
'suspicious-userlogout' => 'Twójo póžedanje za wótzjawjenim jo se wótpokazało, dokulaž zda se, až jo se pósłało pśez wobškóźony wobglědowak abo pufrowański proksy',
# E-mail sending
'php-mail-error-unknown' => 'Njeznata zmólka w PHP-funkciji mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Gronidło změniś',
'resetpass_announce' => 'Sy z nachylnym e-mailowym šćitnym gronidłom pśizjawjony. Aby pśizjawjenje zakóńcył, zapódaj how nowe šćitne gronidło:',
'resetpass_text' => '<!-- Dodaj how tekst -->',
@@ -644,6 +651,32 @@ Móžoš toś te zdźělenje ignorowaś, jolic toś te konto jo se jano zamólnj
Sy snaź swójo gronidło južo wuspěšnje změnił abo nowe nachylne gronidło pominał.',
'resetpass-temp-password' => 'Nachylne gronidło:',
+# Special:PasswordReset
+'passwordreset' => 'Gronidło slědk stajiś',
+'passwordreset-text' => 'Wupołni toś ten formular, aby dostał e-mailowe dopomnjeśe k swójim kontowym drobnostkam.',
+'passwordreset-legend' => 'Gronidło slědk stajiś',
+'passwordreset-disabled' => 'Slědkstajenja gronidłow su se znjemóžnili na toś tom wikiju.',
+'passwordreset-pretext' => '{{PLURAL:$1||Zapódaj dołojce jadne ze slědujucych datowych podaśow}}',
+'passwordreset-username' => 'Wužywarske mě:',
+'passwordreset-domain' => 'Domena:',
+'passwordreset-email' => 'E-mailowa adresa:',
+'passwordreset-emailtitle' => 'Kontowe drobnostki na {{GRAMMAR:lokatiw|{{SITENAME}}}}',
+'passwordreset-emailtext-ip' => 'Něchten (nejskerjej ty, z IP-adresu $1) jo dopomnjeśe na twóje kontowe drobnostki za {{SITENAME}} pominał ($4). {{PLURAL:$3|Slědujuce wužywarske konto jo|Slědujucej wužywarskej konśe stej|Slědujuce wužywarske konta su|Slědujuce wužywarske konta su}} z toś tej e-mailoweju adresu {{PLURAL:$3|zwězane|zwězanej|zwězane|zwězane}}:
+
+$2
+
+{{PLURAL:$3|Toś to nachylne gronidło spadnjo|Toś tej nachylnej gronidle spadnjotej|Toś te nachylne gronidła spadnu|Toś te nachylne gronidła spadnu}} za {{PLURAL:$5|jaden źeń|$5 dnja|$5 dny|$5 dnjow}}.
+Ty by měł se něnto pśizjawiś a nowe gronidło wustajiś. Jolic něchten drugi jo toś to napšašowanje pósłał, abo jolic sy se zasej na spócetne gronidło spomnjeł a wěcej njocoš jo změniś, móžoš toś to zdźělenje ignorěrowaś a swójo stare gronidło dalej wužywaś.',
+'passwordreset-emailtext-user' => 'Wužywaŕ $1 jo dopomnjeśe na twóje kontowe drobnostki za {{SITENAME}} pominał ($4). {{PLURAL:$3|Slědujuce wužywarske konto jo|Slědujucej wužywarskej konśe stej|Slědujuce wužywarske konta su|Slědlujuce wužywarske konta su}} z toś tej e-mailoweju adresu {{PLURAL:$3|zwězane|zwězanej|zwězane|zwězane}}:
+
+$2
+
+{{PLURAL:$3|Toś to nachylne gronidło spadnjo|Toś tej nachylnej gronidle spadnjotej|Toś te nachylne gronidła spadnu|Toś te nachylne gronidła spadnu}} za {{PLURAL:$5|jaden źeń|$5 dnja|$5 dny|$5 dnjow}}.
+Ty by měł se něnto pśizjawiś a nowe gronidło wustajiś. Jolic něchten drugi jo toś to napšašowanje pósłał, abo jolic sy se zasej na spócetne gronidło spomnjeł a wěcej njocoš jo změniś, móžoš toś to zdźělenje ignorěrowaś a swójo stare gronidło dalej wužywaś.',
+'passwordreset-emailelement' => 'Wužywarske mě: $1
+Nachylne gronidło: $2',
+'passwordreset-emailsent' => 'Dopominańska e-mail jo se pósłała.',
+
# Edit page toolbar
'bold_sample' => 'Tucny tekst',
'bold_tip' => 'Tucny tekst',
@@ -655,8 +688,6 @@ Sy snaź swójo gronidło južo wuspěšnje změnił abo nowe nachylne gronidło
'extlink_tip' => 'Eksterny wótkaz (źiwaś na http://)',
'headline_sample' => 'Nadpismo',
'headline_tip' => 'Nadpismo rowniny 2',
-'math_sample' => 'Zapódaj how formulu',
-'math_tip' => 'Matematiska formula (LaTeX)',
'nowiki_sample' => 'Zapódaj how njeformatěrowany tekst',
'nowiki_tip' => 'Wiki-syntaksu ignorěrowaś',
'image_sample' => 'Pokazka.jpg',
@@ -736,12 +767,16 @@ Aby bok napórał, zapiš do kašćika dołojce (glědaj [[{{MediaWiki:Helppage}
'noarticletext-nopermission' => 'Tuchylu njejo žeden tekst na toś tom boku.
Móžoš [[Special:Search/{{PAGENAME}}|toś ten bokowy titel]] na drugich bokach pytaś
abo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} wótpowědne protokole pytaś]</span>.',
-'userpage-userdoesnotexist' => 'Wužywarske konto "$1" njejo zregistrěrowane. Pšosym pśeglědaj, lěc coš toś ten bok wopšawdu napóraś/wobźěłaś.',
+'userpage-userdoesnotexist' => 'Wužywarske konto "<nowiki>$1</nowiki>" njejo zregistrěrowane. Pšosym pśeglědaj, lěc coš toś ten bok wopšawdu napóraś/wobźěłaś.',
'userpage-userdoesnotexist-view' => 'Wužywarske konto "$1" njejo zregistrowane.',
'blocked-notice-logextract' => 'Toś ten wužywaŕ jo tuchylu blokěrowany.
Nejnowšy zapisk blokěrowańskego protokola pódawa se dołojce ako referenca:',
-'clearyourcache' => "'''Pokazka: Jo móžno, až dejš wuprozniś cache wobglědowaka, aby změny wiźeł.'''
-'''Mozilla/Firefox/Safari:''' Źarź ''Umsch'' tłocony, mjaztym až kliknjoš ''Znowego'' abo tłoc pak ''Strg-F5'' pak ''Strg-R'' (''Command-R'' na Makintošu); '''Konqueror: '''Klikni ''' na ''Aktualisieren'' abo tłoc ''F5;'' '''Opera:''' wuprozni cache w ''Extras -> Einstellungen;'' '''Internet Explorer:''' źarź ''Strg'' tłocony, mjaztym až kliknjoš na ''Aktualisieren'' abo tłoc ''Strg-F5.''",
+'clearyourcache' => "'''Pokazka:''' Pó składowanju dejš snaź wuprozniś cache wobglědowaka, aby změny wiźeł.
+* '''Firefox/Safari:''' Źarź ''Umsch'' tłocony, mjaztym až kliknjoš na ''Znowego'' abo tłoc pak ''Strg-F5'' pak ''Strg-R'' (''Command-R'' na Makintošu)
+* '''Google Chrome:''' Tłoc na ''Strg-Umsch-R'' (''command-Umsch-R'' na Makintošu)
+* '''Internet Explorer:''' Źarź ''Strg'' tłocony, mjaztym až kliknjoš na ''Aktualisieren'' abo tłoc ''Strg-F5''
+* '''Konqueror:''' Klikni na ''Aktualisieren'' abo tłoc ''F5''
+* '''Opera:''' Wuprozni cache w ''Extras → Einstellungen''",
'usercssyoucanpreview' => "'''Pokazka:''' Wužywaj tłocašk '{{int:showpreview}}', aby swój nowy css testował, nježli až jen składujoš.",
'userjsyoucanpreview' => "'''Pokazka:''' Wužywaj tłocašk \"{{int:showpreview}}\", aby swój nowy JavaScript testował, nježli až jen składujoš.",
'usercsspreview' => "'''Źiwaj na to, až wobglědujoš se jano pśeglěd swójogo wužywarskego CSS. Njejo se hyšći składował!'''",
@@ -763,6 +798,7 @@ Nejnowšy zapisk blokěrowańskego protokola pódawa se dołojce ako referenca:'
'''Jo-lic to legitiměrowane wobźěłanje, wopytaj hyšći raz. Gaž to zasej njejźo, wopytaj se wót- a zasej pśizjawiś.'''",
'token_suffix_mismatch' => "'''Twójo wobźěłanje jo se wótpokazało, dokulaž jo twój browser znamuška we wobźěłańskem tokenje rozsekał. Składowanje by mógało wopśimjeśe boka znicyś. Take casy se źejo, gaž wužywaš web-bazěrowanu, zmólkatu, anonymnu proksy-słužbu.'''",
+'edit_form_incomplete' => "'''Někotare źěle wobźěłowańskego formulara njwejsu serwer dojśpili; pśeglědaj, lěc twóje změny su w pórěźe a wopytaj hyšći raz.'''",
'editing' => 'Wobźěłanje boka $1',
'editingsection' => 'Wobźěłanje boka $1 (wótrězk)',
'editingcomment' => '$1 (nowy wótrězk) se wobźěłujo',
@@ -891,27 +927,27 @@ Snaź jo se z wiki wulašował abo hynac pómjenił.
'rev-deleted-text-permission' => "Toś ta wersija boka jo se '''wulašowała'''. Ewentuelne su drobnostki w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].",
'rev-deleted-text-unhide' => "Toś ta wersija boka jo se '''wulašowała'''.
Glědaj drobnostki w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].
-Ako administrator móžoš se hyšći [$1 toś tu wersiju woglědaś], jolic coš pókšacowaś.",
+Móžoš se hyšći [$1 toś tu wersiju woglědaś], jolic coš pókšacowaś.",
'rev-suppressed-text-unhide' => "Toś ta wersija boka jo se '''pódtłocyła'''.
-Glědaj drobnostki w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolu pódłocenjow].
-Ako administrator móžoš se hyšći [$1 toś tu wersiju woglědaś], jolic coš pókšacowaś.",
+Glědaj drobnostki w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolu pódtłocenjow].
+Móžoš se hyšći [$1 toś tu wersiju woglědaś], jolic coš pókšacowaś.",
'rev-deleted-text-view' => "Toś ta wersija boka jo se '''wulašowała'''.
-Ako administrator móžoš se ju woglědaś; glědaj drobnostki w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].",
+Móžoš se ju woglědaś; glědaj drobnostki w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].",
'rev-suppressed-text-view' => "Toś ta wersija boka jo se '''pódtłocyła'''.
-Ako administrator móžoš se ju woglědaś; glědaj drobnostki w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolu pódtłocenjow].",
+Móžoš se ju woglědaś; glědaj drobnostki w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolu pódtłocenjow].",
'rev-deleted-no-diff' => "Njamóžoš se toś ten rozdźěl woglědaś, dokulaž jadna z wersijow jo se '''wulašowała'''.
Glědaj drobnostki w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].",
'rev-suppressed-no-diff' => "Njamóžoš se toś ten rozdźěl woglědaś, dokulaž jadna z wersijow jo se '''wulašowała'''.",
'rev-deleted-unhide-diff' => "Jadna z wersijow toś togo rozdźěla jo se '''wulašowała'''.
Glědaj drobnostki w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].
-Ako administrator móžoš hyšći se [$1 toś ten rozdźěl woglědaś], jolic coš pókšacowaś.",
+Móžoš se hyšći [$1 toś ten rozdźěl woglědaś], jolic coš pókšacowaś.",
'rev-suppressed-unhide-diff' => "Jadna z wersijow twójogo rozdźěla jo se '''pódtłócyła'''.
-Za drobnostki glědaj [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokol pódłócenjow].
-Ako administrator móžoš hyšći [$1 se toś ten rozdźěl woglědaś], jolic coš pókšacowaś.",
+Za drobnostki glědaj [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokol pódtłocenjow].
+Móžoš se hyšći [$1 toś ten rozdźěl woglědaś], jolic coš pókšacowaś.",
'rev-deleted-diff-view' => "Jadna z wersijow toś togo rozdźěla jo se '''wulašowała'''.
-Ako administrator móžoš se toś ten rozdźěl woglědaś; drobnostki glědaj w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].",
+Móžoš se toś ten rozdźěl woglědaś; drobnostki glědaj w [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} protokolu wulašowanjow].",
'rev-suppressed-diff-view' => "Jadna z wersijow toś togo rozdźěla jo se '''pódtłocyła'''.
-Ako administrator móžoš se toś ten rozdźěl woglědaś; drobnostki glědaj w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolu pódtłocenjow].",
+Móžoš se toś ten rozdźěl woglědaś; drobnostki glědaj w [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} protokolu pódtłocenjow].",
'rev-delundel' => 'pokazaÅ›/schowaÅ›',
'rev-showdeleted' => 'pokazaÅ›',
'revisiondelete' => 'Wersije wulašowaś/wótnowiś',
@@ -989,7 +1025,7 @@ Pšosym pśeglědaj protokole.',
# Suppression log
'suppressionlog' => 'Protokol pódłocowanjow',
-'suppressionlogtext' => 'To jo lisćina wulašowanjow a blokěrowanjow, kótaraž ma wopśimjeśe, kótarež jo za administratorow schowane. Glědaj [[Special:IPBlockList|lisćinu blokěrowanjow IP]] za lisćinu aktualnych wugnanjow a blokěrowanjow.',
+'suppressionlogtext' => 'To jo lisćina wulašowanjow a blokěrowanjow, kótaraž ma wopśimjeśe, kótarež jo wót administratorow schowane. Glědaj [[Special:BlockList|lisćinu IP-blokěrowanjow]] za lisćinu aktualnych wugnanjow a blokěrowanjow.',
# History merging
'mergehistory' => 'Zwězaś stawizny bokow',
@@ -1096,12 +1132,13 @@ Zaruc, až historija wersijow nastawka jo njepśetergnjona.',
'searchdisabled' => 'Pytanje we {{SITENAME}} jo se deaktiwěrowało. Tak dłujko móžoš w googlu pytaś. Pšosym wobmysli, až móžo pytanski indeks za {{SITENAME}} njeaktualny byś.',
# Quickbar
-'qbsettings' => 'Bocna lejstwa',
-'qbsettings-none' => 'Žedne',
-'qbsettings-fixedleft' => 'nalěwo fiksěrowane',
-'qbsettings-fixedright' => 'napšawo fiksěrowane',
-'qbsettings-floatingleft' => 'nalěwo se znosujuce',
-'qbsettings-floatingright' => 'napšawo se znosujuce',
+'qbsettings' => 'Bocna lejstwa',
+'qbsettings-none' => 'Žedne',
+'qbsettings-fixedleft' => 'nalěwo fiksěrowane',
+'qbsettings-fixedright' => 'napšawo fiksěrowane',
+'qbsettings-floatingleft' => 'nalěwo se znosujuce',
+'qbsettings-floatingright' => 'napšawo se znosujuce',
+'qbsettings-directionality' => 'Kšuty, wótwisny wót pisańskego směra twójeje rěcy',
# Preferences page
'preferences' => 'Nastajenja',
@@ -1112,9 +1149,10 @@ Zaruc, až historija wersijow nastawka jo njepśetergnjona.',
'changepassword' => 'Šćitne gronidło změniś',
'prefs-skin' => 'Å at',
'skin-preview' => 'Pśeglěd',
-'prefs-math' => 'Math',
'datedefault' => 'Standard',
+'prefs-beta' => 'Betafunkcije',
'prefs-datetime' => 'Datum a cas',
+'prefs-labs' => 'Laborowe funkcije',
'prefs-personal' => 'Wužywarski profil',
'prefs-rc' => 'Aktualne změny',
'prefs-watchlist' => 'Wobglědowańka',
@@ -1136,8 +1174,6 @@ Zaruc, až historija wersijow nastawka jo njepśetergnjona.',
'columns' => 'SÅ‚upy:',
'searchresultshead' => 'PytaÅ›',
'resultsperpage' => 'Wuslědki na bok:',
-'contextlines' => 'Rědki na wuslědk:',
-'contextchars' => 'Znamuška na rědku:',
'stub-threshold' => 'Formatěrowanje <a href="#" class="stub">wótkaza na zarodk</a> (w bytach):',
'stub-threshold-disabled' => 'Znjemóžnjony',
'recentchangesdays' => 'Licba dnjow, kenž se pokazuju w "slědnych změnach":',
@@ -1150,7 +1186,7 @@ How jo pśipadnje napórana gódnota, kótaruž móžoš wužywaś: $1',
'savedprefs' => 'Twóje nastajenja su se składowali.',
'timezonelegend' => 'Casowa cona:',
'localtime' => 'Městny cas:',
-'timezoneuseserverdefault' => 'Standard serwera wužywaś',
+'timezoneuseserverdefault' => 'Wikistandard wužywaś ($1)',
'timezoneuseoffset' => 'Drugi (pódaj wótchylenje)',
'timezoneoffset' => 'Rozdźěl¹:',
'servertime' => 'Cas serwera:',
@@ -1197,7 +1233,8 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
'prefs-help-gender' => 'Opcionalny: wužywa se za pó roźe specifiske nagronjenje pśez softwaru. Toś ta informacija buźo zjawna.',
'email' => 'E-mail',
'prefs-help-realname' => 'Realne mě jo opcionalne. Jolic až jo zapódajośo wužywa se za pódpisanje wašych pśinoskow.',
-'prefs-help-email' => 'E-mailowa adresa jo opcionalna, ale zmóžnja śi nowe gronidło emailowaś, jolic sy zabył swójo gronidło. Móžoš teke drugim dowóliś se z tobu stajiś do zwiska pśez waš wužywarski abo diskusijny bok, bźez togo až dejš wótekšyś swóju identitu.',
+'prefs-help-email' => 'E-mailowa adresa jo opcionalna, ale zmóžnja śi nowe gronidło emailowaś, jolic sy zabył swójo gronidło.',
+'prefs-help-email-others' => 'Móžoš teke drugim dowóliś se z tobu stajiś do zwiska pśez waš wužywarski abo diskusijny bok, bźez togo až dejš wótekšyś swóju identitu.',
'prefs-help-email-required' => 'E-mailowa adresa trjebna.',
'prefs-info' => 'Zakładne informacije',
'prefs-i18n' => 'Internacionalizacija',
@@ -1322,15 +1359,15 @@ Móžoš toś ten bok wužywaś, aby slědk stajił swóje nastajenja na standar
'right-userrights' => 'Wšykne wužywarske pšawa wobźěłaś',
'right-userrights-interwiki' => 'Wužywarske pšawa w drugich wikijach wobźěłaś',
'right-siteadmin' => 'Datowu banku zastajiś a zastajenje wótpóraś',
-'right-reset-passwords' => 'Gronidła drugich wužywarjow slědk stajiś',
'right-override-export-depth' => 'Boki inkluziwnje wótkazanych bokow až do dłyma 5 eksportěrowaś',
'right-sendemail' => 'Drugim wužywarjam e-mail pósłaś',
# 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“.',
-'rightsnone' => '(nic)',
+'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ł',
+'rightsnone' => '(nic)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'toÅ› ten bok cytaÅ›',
@@ -1453,13 +1490,13 @@ Glědaj [[Special:NewFiles|galeriju nowych datajow]] za wizuelny pśeglěd.',
'minlength1' => 'Mjenja datajow muse wopśimjeś nanejmjenjej jaden pismik.',
'illegalfilename' => 'Datajowe mě „$1“ wopśimjejo njedowólone znamuška, kótarež njejsu dowólone w titulami bokow. Pšosym pśemjeń dataju a wopytaj ju wótnowotki nagraś.',
'badfilename' => 'Mě dataje jo se změniło na „$1“.',
-'filetype-mime-mismatch' => 'Datajowy sufiks njewótpowědujo MIME-typoju.',
+'filetype-mime-mismatch' => 'Datajowy sufiks ".$1" njewótpowědujo MIME-typoju dataje ($2).',
'filetype-badmime' => 'Dataje z MIME-typom „$1“ njesměju se nagraś.',
'filetype-bad-ie-mime' => 'Toś ta dataja njedajo se nagraś, dokulaž Internet Explorer by ju ako "$1" interpretěrował, kótaryž jo njedowólony a potencielnje tšachotny datajowy typ.',
'filetype-unwanted-type' => "'''„.$1“''' jo njewitany datajowy typ.
{{PLURAL:$3|Dowólony datajowy typ jo|Dowólonej datajowej typa stej|Dowólene datajowe typy su}}: $2.",
-'filetype-banned-type' => "'''„.$1“''' jo njedowólony datajowy typ.
-{{PLURAL:$3|Dowólony datajowy typ jo|Dowólenej datajowej typa stej|Dowólone datajowe typy su}} $2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|njejo dowólony datajowy typ|njejstej dowólenej datajowej typa|njejsu dowólone datajowe typy|njejsu dowólone datajowe typy}}.
+{{PLURAL:$3|Dowólony datajowy typ jo|Dowólenej datajowej typa stej|Dowólone datajowe typy su}} $2.',
'filetype-missing' => 'Dataja njama žedno rozšyrjenje (na pś. „.jpg“).',
'empty-file' => 'Dataja, kótaruž sy wótpósłał, jo prozna była.',
'file-too-large' => 'Dataja, kótaruž sy wótpósłał, jo pśewjelika była.',
@@ -1475,6 +1512,7 @@ Glědaj [[Special:NewFiles|galeriju nowych datajow]] za wizuelny pśeglěd.',
'large-file' => 'Pó móžnosći njedejała dataja wětša byś ako $1. Toś ta dataja jo $2 wjelika.',
'largefileserver' => 'Dataja jo wětša ako serwer dopušćijo.',
'emptyfile' => 'Dataja, kótaruž sy nagrał, jo prozna. Pśicyna móžo byś zmólka w mjenju dataje. Kontrolěruj pšosym, lěc coš dataju napšawdu nagraś.',
+'windows-nonascii-filename' => 'Toś ten wiki njepódpěra datajowe mjenja z wósebnymi znamuškami.',
'fileexists' => "Dataja z toś tym mjenim južo eksistěrujo.
Tłocyš-lic na \"Dataju składowaś\", ga se dataja pśepišo.
Pšosym kontrolěruj '''<tt>[[:\$1]]</tt>''', gaž njejsy se kradu wěsty.
@@ -1507,6 +1545,8 @@ Jolic maš toś ten wobraz w połnem rozeznaśu, nagraj jen, howac změń pšosy
'php-uploaddisabledtext' => 'Nagraśa PHP-datajow su znjemóžnjone. Pšosym pśekontrolěruj nastajenje file_uploads.',
'uploadscripted' => 'Toś ta dataja wopśimjejo HTML abo script code, kótaryž móžo wót browsera se zamólnje wuwjasć.',
'uploadvirus' => 'Toś ta dataja ma wirus! Nadrobnosći: $1',
+'uploadjava' => 'Toś ta dataja jo ZIP-dataja, kótaraž wopśimujo dataju .class z Javy.
+Nagrawanje datajow Javy njejo dowólone, dokulaž mógli wobjeźenje wěstotnych wobgranicowanjow zmóžniś.',
'upload-source' => 'Žrědłowa dataja',
'sourcefilename' => 'Mě žrědłoweje dataje:',
'sourceurl' => 'URL žrědła:',
@@ -1516,10 +1556,6 @@ Jolic maš toś ten wobraz w połnem rozeznaśu, nagraj jen, howac změń pšosy
'upload-options' => 'Nagrawańske opcije',
'watchthisupload' => 'Toś tu dataju wobglědowaś',
'filewasdeleted' => 'Dataja z toś tym mjenim jo se južo raz nagrała a mjaztym zasej wulašowała. Pšosym kontrolěruj pjerwjej $1, nježli až nagrajoš dataju znowego.',
-'upload-wasdeleted' => "'''Glědaj: Nagrawaš dataju, kótaraž jo južo raz se wulašowała.'''
-
-Pšosym kontrolěruj, lic wótpowědujo nowe nagraśe směrnicam.
-Aby se mógał informěrowaś jo how protokol z pśicynu wulašowanja:",
'filename-bad-prefix' => "Mě dataje, kótaruž nagrawaš, zachopijo z '''„$1“'''. Take mě jo wót digitalneje kamery pśedpódane a toś wjele njewugroni. Pšosym pómjeni dataju tak, aby mě wěcej wó jeje wopśimjeśu wugroniło.",
'filename-prefix-blacklist' => ' #<!-- Njezměń nic na toś tej rědce! --> <pre>
# Syntaksa jo slědujuca:
@@ -1554,23 +1590,41 @@ $1',
'upload-unknown-size' => 'Njeznata wjelikosć',
'upload-http-error' => 'HTTP-zmólka nastata: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Pśi wocynjenju dataja za ZIP-pśekontrolěrowanje jo zmólka nastała.',
+'zip-wrong-format' => 'Pódana dataja njejo była ZIP-dataja.',
+'zip-bad' => 'ZIP-dataja jo wobškóźona abo z hynakšych pśicynow njecytajobna.
+Togodla njedajo se jeje wěstoty pśekontrolěrowaś.',
+'zip-unsupported' => 'Toś ta dataja jo ZIP-dataja, kótaraž wužywa ZIP-funkcije, kótarež njepódpěraju se wót MediaWiki.
+Togodla njedajo se jeje wěstoty pśekontrolěrowaś.',
+
+# Special:UploadStash
+'uploadstash' => 'Schowanje nagratych datajow',
+'uploadstash-summary' => 'Toś ten bok zmóžnja dostup do datajow, kótarež su nagrate (abo so nagrawaju), ale hyšći njejsu do wikija wózjawjone. Toś te dataje njejsu widobne za nikogo, mimo až za wužywarja, kótaryž jo je nagrał.',
+'uploadstash-clear' => 'Schowane nagrate dataje wulašowaś',
+'uploadstash-nofiles' => 'Njamaš schowane nagrate dataje.',
+'uploadstash-badtoken' => 'Wuwjeźenje teje akcije jo se njeraźiło, snaź dokulaž twóje wobźěłowańske daty su spadnjone. Wopytaj hyšći raz.',
+'uploadstash-errclear' => 'Wótpóranje datajow jo se njeraźiło.',
+'uploadstash-refresh' => 'Lisćinu datajow aktualizěrowaś',
+
# img_auth script messages
-'img-auth-accessdenied' => 'Pśistup zawobarany',
-'img-auth-nopathinfo' => 'PATH_INFO felujo.
+'img-auth-accessdenied' => 'Pśistup zawobarany',
+'img-auth-nopathinfo' => 'PATH_INFO felujo.
Twój serwer njejo konfigurěrowany, aby toś te informacije dalej pósrědnił.
Móžo na CGI bazěrowaś a njamóžo img_auth pódpěraś.
-Glědaj http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
-'img-auth-notindir' => 'Pominana šćažka njejo w konfigurěrowanem nagraśowem zapisu.',
-'img-auth-badtitle' => 'Njejo móžno z "$1" płaśiwy titel twóriś.',
-'img-auth-nologinnWL' => 'Njejsy pśizjawjony a "$1" njejo w běłej lisćinje.',
-'img-auth-nofile' => 'Dataja "$1" njeeksistěrujo.',
-'img-auth-isdir' => 'Wopytujoš na zapis "$1" pśistup měś.
+Glědaj [//www.mediawiki.org/wiki/Manual:Image_Authorization image authorization].',
+'img-auth-notindir' => 'Pominana šćažka njejo w konfigurěrowanem nagraśowem zapisu.',
+'img-auth-badtitle' => 'Njejo móžno z "$1" płaśiwy titel twóriś.',
+'img-auth-nologinnWL' => 'Njejsy pśizjawjony a "$1" njejo w běłej lisćinje.',
+'img-auth-nofile' => 'Dataja "$1" njeeksistěrujo.',
+'img-auth-isdir' => 'Wopytujoš na zapis "$1" pśistup měś.
Jano datajowy pśistup jo dowólony.',
-'img-auth-streaming' => '"$1" se tšuga.',
-'img-auth-public' => 'Funkcija img_auth.php jo za wudaśe datajow z priwatnego wikija.
+'img-auth-streaming' => '"$1" se tšuga.',
+'img-auth-public' => 'Funkcija img_auth.php jo za wudaśe datajow z priwatnego wikija.
Toś ten wiki jo ako zjawny wiki konfigurěrowany.
Za optimalnu wěstotu img_auth.php jo znjemóžnjony.',
-'img-auth-noread' => 'Wužywaŕ njama pśistup, aby cytał "$1".',
+'img-auth-noread' => 'Wužywaŕ njama pśistup, aby cytał "$1".',
+'img-auth-bad-query-string' => 'URL jo njepłaśiwy napšašowański znamuškowy rjeśazk.',
# HTTP errors
'http-invalid-url' => 'Njepłaśiwy URL: $1',
@@ -1633,7 +1687,7 @@ Slědujuca lisćina pokazujo jano {{PLURAL:$1|prědny wótkaz|prědnej $1 wótka
[[Special:WhatLinksHere/$2|Dopołna lisćina]] stoj k dispoziciji.',
'nolinkstoimage' => 'Žedne boki njewótkazuju na toś tu dataju.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Dalšne wótkazy]] k toś tej dataji wobglědaś.',
-'redirectstofile' => '{{PLURAL:$1|Slědujuca dataja dalej pósrědnja|Slědujucej $1 dataji dalej pósrědnjatej|slědujuce $1 dataje dalej póšrědnjaju|Slědujucych $1 datajow dalej pósrědnja}} k toś tej dataji:',
+'linkstoimage-redirect' => '$1 (datajowe dalejpósrědnjenje) $2',
'duplicatesoffile' => '{{PLURAL:$1|Slědujuca dataja jo duplikat|Slědujucej $1 dataji stej duplikata|Slědujuce dataje $1 su duplikaty|Slědujucych $1 datajow jo duplikaty}} toś teje dataje ([[Special:FileDuplicateSearch/$2|dalšne drobnostki]])::',
'sharedupload' => 'Toś ta dataja jo z $1 a dajo se pśez druge projekty wužywaś.',
'sharedupload-desc-there' => 'Toś ta dataja jo z $1 a dajo se pśez druge projekty wužywaś. Pšosym glědaj [$2 bok datajowego wopisanja] za dalšne informacije.',
@@ -1719,17 +1773,18 @@ Slědujuca lisćina pokazujo jano {{PLURAL:$1|prědny wótkaz|prědnej $1 wótka
'statistics-users-active-desc' => 'Wužywarje, kótarež su {{PLURAL:$1|cora|w slědnyma $1 dnjoma|w slědnych $1 dnjach|w slědnych $1 dnjach}} aktiwne byli',
'statistics-mostpopular' => 'Nejwěcej woglědane boki',
-'disambiguations' => 'Rozjasnjenja zapśimjeśow',
+'disambiguations' => 'Boki, kótarež wótkazuju na boki wěcejzmysłowosći',
'disambiguationspage' => 'Template:Rozjasnjenje zapśimjeśow',
'disambiguations-text' => 'Slědujuce boki wótkazuju na bok za rozjasnjenje zapśimjeśow.
Wótkazujśo lubjej na pótrjefjony bok.<br />
Bok wobjadnawa se ako bok wujasnjenja zapśimjeśa, gaž wótkazujo na nju [[MediaWiki:Disambiguationspage]].',
-'doubleredirects' => 'Dwójne dalejpósrědnjenja',
-'doubleredirectstext' => 'Toś ten bok nalicujo boki, kótarež dalej pósrědnjaju na druge dalejpósrědnjenja.
+'doubleredirects' => 'Dwójne dalejpósrědnjenja',
+'doubleredirectstext' => 'Toś ten bok nalicujo boki, kótarež dalej pósrědnjaju na druge dalejpósrědnjenja.
Kužda smužka wopśimjejo wótkaze na prědne a druge dalejpósrědnjenje a teke na cel drugego dalejpósrědnjenja, což jo w normalnem paźe "napšawdny" celowy bok, na kótaryž by mógło prědne dalejpósrědnjenje pokazaś. <del>Pśešmarnjone</del> zapiski su južo wobstarane.',
-'double-redirect-fixed-move' => '[[$1]] jo se pśesunuł, jo něnto dalejposrědnjenje do [[$2]]',
-'double-redirect-fixer' => 'Pórěźaŕ dalejpósrědnjenjow',
+'double-redirect-fixed-move' => '[[$1]] jo se pśesunuł, jo něnto dalejposrědnjenje do [[$2]]',
+'double-redirect-fixed-maintenance' => 'Dwójne dalejpósrědnjenje wót [[$1]] do [[$2]] se pórěźa.',
+'double-redirect-fixer' => 'Pórěźaŕ dalejpósrědnjenjow',
'brokenredirects' => 'Skóńcowane dalejpósrědnjenja',
'brokenredirectstext' => 'Slědujuce dalejpósrědnjenja wótkazuju na njeeksistěrujuce boki:',
@@ -1807,6 +1862,7 @@ Pšosym glědaj na to, až druge websedła móžu k drugej dataji z direktnym UR
'pager-newer-n' => '{{PLURAL:$1|nowšy 1|nowšej $1|nowše $1|nowšych $1}}',
'pager-older-n' => '{{PLURAL:$1|staršy 1|staršej $1|starše $1|staršych $1}}',
'suppress' => 'Doglědowanje',
+'querypage-disabled' => 'Toś ten specialny bok jo z wugbaśowych pśicynow znjemóžnjony.',
# Book sources
'booksources' => 'Pytanje pó ISBN',
@@ -1816,8 +1872,8 @@ Pšosym glědaj na to, až druge websedła móžu k drugej dataji z direktnym UR
'booksources-invalid-isbn' => 'Pódane ISBN-cysło njezda se płaśiwe byś; pséglědaj za zmólkami, z tym až kopěrujoš z originalnego žrědła.',
# Special:Log
-'specialloguserlabel' => 'Wužywaŕ:',
-'speciallogtitlelabel' => 'Nadpismo:',
+'specialloguserlabel' => 'Wuwjeźaŕ:',
+'speciallogtitlelabel' => 'Cel (titel abo wužywaŕ):',
'log' => 'Protokole',
'all-logs-page' => 'WÅ¡ykne zjawne protokole',
'alllogstext' => 'To jo kombiněrowane zwobraznjenje wšyknych we {{GRAMMAR:lokatiw|{{SITENAME}}}} k dispoziciji stojecych protokolow. Móžoš naglěd pśez wubraśe protokolowego typa, wužywarskego mjenja (pód źiwanim wjelikopisanja) abo pótrjefjonego boka (teke pód źiwanim wjelikopisanja) wobgranicowaś.',
@@ -1856,12 +1912,13 @@ Glědaj teke [[Special:WantedCategories|póžedane kategorije]].',
'sp-deletedcontributions-contribs' => 'pśinoski',
# Special:LinkSearch
-'linksearch' => 'Eksterne wótkaze',
+'linksearch' => 'Pytanje eksternych wótkazow',
'linksearch-pat' => 'Pytański muster:',
'linksearch-ns' => 'Mjenjowy rum:',
'linksearch-ok' => 'PytaÅ›',
-'linksearch-text' => 'Jo móžno zastupne znamješka kaž "*.wikipedia.org" wužywaś.<br />
-Pódpěrane protokole: <tt>$1</tt>',
+'linksearch-text' => 'Jo móžno zastupne znamuška kaž "*.wikipedia.org" wužywaś.
+Jo nanejmjenjej głowna domena trěbna, na pśikład "*.org"<br />
+Pódpěrane protokole: <tt>$1</tt> (pšosym njepódaj je w swójom pytanju).',
'linksearch-line' => '$1 wótkazany z $2',
'linksearch-error' => 'Zasupne znamješko daju se jano na zachopjeńku URL wužywaś.',
@@ -1921,6 +1978,10 @@ E-mailowa adresa, kótaruž sy zapódał w [[Special:Preferences|swójich wužyw
'noemailtext' => 'Toś ten wužywaŕ njejo pódał płaśiwu e-mailowu adresu.',
'nowikiemailtitle' => 'Žedna e-mail dowólona',
'nowikiemailtext' => 'Toś ten wužywaŕ njoco žednu e-mail wót drugich wužywarjow dostaś.',
+'emailnotarget' => 'Njeeksistěrujuce abo njepłaśiwe wužywarske mě za dostawarja.',
+'emailtarget' => 'Wužywarske mě dostawarja zapódaś',
+'emailusername' => 'Wužywarske mě:',
+'emailusernamesubmit' => 'Wótpósłaś',
'email-legend' => 'Drugemu wužywarjeju {{SITENAME}} e-mail pósłaś',
'emailfrom' => 'Wót:',
'emailto' => 'Komu:',
@@ -1945,10 +2006,10 @@ E-mailowa adresa, kótaruž sy zapódał w [[Special:Preferences|swójich wužyw
'watchlistanontext' => 'Dejš $1, aby mógał swóju wobglědowańku wiźeś abo zapise w njej wobźěłaś.',
'watchnologin' => 'Njepśizjawjony(a)',
'watchnologintext' => 'Musyš [[Special:UserLogin|pśizjawjony]] byś, aby mógał swóju wobglědowańku wobźěłaś.',
-'addedwatch' => 'Jo se k wobglědowańce dodało',
+'addwatch' => 'K wobglědowańce dodaś',
'addedwatchtext' => "Bok \"[[:\$1]]\" jo se k twójej [[Special:Watchlist|wobglědowańce]] dodał.
PózdźejÅ¡ne zmÄ›ny na toÅ› tom boku a w pÅ›isÅ‚uÅ¡ecej diskusiji se tam nalicuju, a bok buźo se w [[Special:RecentChanges|lisćinje aktualnych zmÄ›now]] '''tucnje''' pokazaÅ›, aby daju se lažÄej namakaÅ›.",
-'removedwatch' => 'Jo se z wobglědowańki wulašowało',
+'removewatch' => 'Z wobglědowańki wulašowaś',
'removedwatchtext' => 'Bok "[[:$1]]" jo se z [[Special:Watchlist|twójeje wobglědowańki]] wulašowany.',
'watch' => 'Wobglědowaś',
'watchthispage' => 'Bok wobglědowaś',
@@ -1969,8 +2030,9 @@ Pózdźejšne změny na toś tom boku a w pśisłušecej diskusiji se tam nalicu
'watchlist-options' => 'Opcije wobglědowańki',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Wobglědowaś …',
-'unwatching' => 'Njewobglědowaś …',
+'watching' => 'Wobglědowaś …',
+'unwatching' => 'Njewobglědowaś …',
+'watcherrortext' => 'Pśi změnjanju twójich nastajenjow wobglědowańkow za "$1" jo zmólka nastała.',
'enotif_mailer' => '{{SITENAME}} e-mailowe powěsći',
'enotif_reset' => 'Wšykne boki ako woglědane markěrowaś',
@@ -1984,7 +2046,7 @@ Pózdźejšne změny na toś tom boku a w pśisłušecej diskusiji se tam nalicu
'enotif_anon_editor' => 'anonymny wužywaŕ $1',
'enotif_body' => 'Luby $WATCHINGUSERNAME,
-PAGEEDITOR jo bok {{SITENAME}} "$PAGETITLE" $PAGEEDITDATE $CHANGEDORCREATED, glědaj $PAGETITLE_URL za aktualnu wersiju.
+$PAGEEDITOR jo bok $PAGETITLE na {{GRAMMAR:lokatiw|{{SITENAME}}}} $PAGEEDITDATE $CHANGEDORCREATED, glědaj $PAGETITLE_URL za aktualnu wersiju.
$NEWPAGE
@@ -1994,22 +2056,22 @@ Kontakt z wobźěłarjom:
E-mail: $PAGEEDITOR_EMAIL
Wiki: $PAGEEDITOR_WIKI
-There will be no other notifications in case of further changes unless you visit this page.
-You could also reset the notification flags for all your watched pages on your watchlist.
-
Njebudu žedne dalšne powěźeńki w paźe dalšnych změnow, snaźkuli woglědujoš se toś ten bok.
-Móźoś teke chórgojcki powěźeńkow za wšykne twóje wobglědowane boki.
+Móźoś teke chórgojcki powěźeńkow za wšykne twóje wobglědowane boki slědk stajiś.
Twój pśijaśelny powěsćowy system {{SITENAME}}
--
+Aby swoje nastajenja za e-mailowe zdźělenja změnił, woglědaj
+{{canonicalurl:{{#special:Preferences}}}}
+
Aby nastajenja twójeje wobglědowańki změnił, woglědaj:
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
-Aby se bok z twójeje wobglědowańki wulašował, woglědaj se
+Aby se bok z twójeje wobglědowańki wulašował, woglědaj
$UNWATCHURL
Pšašanja a dalšna pomoc:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Bok wulašowaś',
@@ -2024,7 +2086,7 @@ Pšašanja a dalšna pomoc:
'confirmdeletetext' => 'Coš bok abo dataju ze wšyknymi pśisłušnymi wersijami na pśecej wulašowaś. Pšosym wobkšuś, až sy se wědobny, kake konsekwency móžo to měś, a až jadnaš pó [[{{MediaWiki:Policy-url}}|směrnicach]].',
'actioncomplete' => 'Akcija jo se wugbała.',
'actionfailed' => 'Akcija jo se njeraźiła',
-'deletedtext' => '„<nowiki>$1</nowiki>“ jo se wulašował(a/o). W $2 namakajoš lisćinu slědnych wulašowanjow.',
+'deletedtext' => '„$1“ jo se wulašował(a/o). W $2 namakajoš lisćinu slědnych wulašowanjow.',
'deletedarticle' => 'jo "[[$1]]" wulašował',
'suppressedarticle' => '"[[$1]]" pódtłocony',
'dellogpage' => 'Protokol wulašowanjow',
@@ -2078,7 +2140,7 @@ Pšosym nawroś se na bok, wót kótaregož sy pśišeł a wopytaj hyšći raz.'
'protect_expiry_invalid' => 'Zapódany cas jo njekorektny.',
'protect_expiry_old' => 'Zapódany cas jo wótběžał.',
'protect-unchain-permissions' => 'Dalšne šćitne opcije pśipušćiś',
-'protect-text' => "How móžoš status šćita boka '''<nowiki>$1</nowiki>''' wobglědowaś a jen změniś.",
+'protect-text' => "How móžoš status šćita boka '''$1''' wobglědowaś a jen změniś.",
'protect-locked-blocked' => "Njamóžoš status šćita togo boka změniś, dokulaž jo twójo wužywarske konto se blokěrowało. How su aktualne nastajenja šćita za bok '''„$1“:'''.",
'protect-locked-dblock' => "Datowa banka jo zamknjona a toś njejo móžno šćit boka změniś. How su aktualne nastajenja šćita za bok '''„$1“:'''.",
'protect-locked-access' => "Wašo wužywarske konto njama notne pšawa za změnu šćita toś togo boka. How su aktualne nastajenja šćita boka '''„$1“:'''.",
@@ -2123,15 +2185,14 @@ Pšosym nawroś se na bok, wót kótaregož sy pśišeł a wopytaj hyšći raz.'
# Undelete
'undelete' => 'Wulašowane boki woglědaś',
-'undeletepage' => 'Wulašowane boki pokazaś a nawrośiś.',
+'undeletepage' => 'Wulašowane boki pokazaś a wótnowiś.',
'undeletepagetitle' => "'''Slědujuce wudaśe wobstoj z wulašowanych wersijow wót [[:$1|$1]]'''.",
'viewdeletedpage' => 'Wulašowane boki pokazaś',
'undeletepagetext' => '{{PLURAL:$1|Slědujucy bok jo se wulašował, ale jo|Slědujucej $1 boka stej se wulašowałej, ale stej|Slědujuce $1 boki su se wulašowali, ale su|Slědujucych $1 bokow jo se wulašowało, ale jo}} hyšći w archiwje a {{PLURAL:$1|dajo|dajotej|daju|dajo}} se nawrośiś.
Archiw dajo se periodiski wuprozniÅ›.',
'undelete-fieldset-title' => 'Wersije wótnowiś',
-'undeleteextrahelp' => "Aby wšyknymi wersijami boka nawrośiś, wóstaj wšykne kontrolowe kašćiki prozne a klikni na zapódaj '''''Nawrośíś'''''.
-Aby jano wěste wersije nawrośił, wubjeŕ kašćiki, kótarež wótpowěduju wersijam, kótarež maju se nawrośiś a klikni na '''''Nawrośiś'''''.
-Kliknjenje na '''''Pśetergnuś''''' wuprozni komentarne pólo a wšykne kontrolowe kašćiki.",
+'undeleteextrahelp' => "Aby wšykne wersije boka wótnowił, wóstaj wšykne kontrolowe kašćiki prozne a klikni na zapódaj '''''{{int:undeletebtn}}'''''.
+Aby jano wěste wersije wótnowił, wubjeŕ kašćiki, kótarež wótpowěduju wersijam, kótarež maju se wótnowiś a klikni na '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|wersija archiwěrowana|wersiji archiwěrowanej|wersije archiwěrowane}}',
'undeletehistory' => 'Jolic nawrośijoš bok, nawrośiju se wšykne wersije stawiznow.
Joli až jo se wutwórił nowy bok ze samskim mjenim wót casa wulašowanja, nawrośone wersije zjawiju se w pjerwješnych stawiznach.',
@@ -2141,7 +2202,7 @@ W takich padach dejš nejnowše wulašowane wersije markěroanje abo schowanje w
'undelete-revision' => 'Wulašowana wersija boka $1 (wót $4, $5) wót $3:',
'undeleterevision-missing' => 'Njepłaśeca abo felujuca wersija. Snaź jo link wopacny abo wersija jo z archiwa se nawrośiła resp. wulašowała.',
'undelete-nodiff' => 'Žedne něgajšne wersije',
-'undeletebtn' => 'Wulašowaś',
+'undeletebtn' => 'Wótnowiś',
'undeletelink' => 'woglědaś se/wótnowiś',
'undeleteviewlink' => 'woglědaś se',
'undeletereset' => 'Slědk wześ',
@@ -2172,9 +2233,12 @@ $1',
'undelete-show-file-submit' => 'Jo',
# Namespace form on various pages
-'namespace' => 'Mjenjowy rum:',
-'invert' => 'Wuběr wobrośiś',
-'blanknamespace' => '(Nastawki)',
+'namespace' => 'Mjenjowy rum:',
+'invert' => 'Wuběr wobrośiś',
+'tooltip-invert' => 'Klikni na toś ten kašćik, aby změny na bokach we wubranem mjenjowem rumje schował (a, jolic wubrany, w zwězanem mjenjowem rumje)',
+'namespace_association' => 'Nawězany mjenjowy rum',
+'tooltip-namespace_association' => 'Klikni na toś ten kašćik, aby zapśimjeł diskusijny mjenowy rum abo temowy mjenjowy rum, kótaryž jo z wubranym mjenjowym rumom zwězany',
+'blanknamespace' => '(Nastawki)',
# Contributions
'contributions' => 'Wužywarske pśinoski',
@@ -2223,11 +2287,13 @@ Nejnowšy zapisk protokola blokěrowanjow pódawa se dołojce ako referenca:',
'whatlinkshere-filters' => 'filtry',
# Block/unblock
+'autoblockid' => '#$1 awtomatiski blokěrowaś',
+'block' => 'Wužywarja blokěrowaś',
+'unblock' => 'Blokěrowanje wužywarja wótpóraś',
'blockip' => 'Wužywarja blokěrowaś',
'blockip-title' => 'Wužywarja blokěrowaś',
'blockip-legend' => 'Wužywarja blokěrowaś',
'blockiptext' => 'Wužywaj slědujucy formular, jolic až coš wěstej IP-adresy abo konkretnemu wužywarjeju pśistup znjemóžniś. Take dejało se pó [[{{MediaWiki:Policy-url}}|směrnicach]] jano staś, aby se wandalizmoju zadorało. Pšosym zapódaj pśicynu za twójo blokěrowanje (na pś. mógu se citěrowaś konkretne boki, źo jo se wandalěrowało).',
-'ipaddress' => 'IP-adresa',
'ipadressorusername' => 'IP-adresa abo wužywarske mě',
'ipbexpiry' => 'Cas blokěrowanja:',
'ipbreason' => 'Pśicyna:',
@@ -2240,7 +2306,7 @@ Nejnowšy zapisk protokola blokěrowanjow pódawa se dołojce ako referenca:',
** pśestupjenje zasady "žedne wósobinske atakěrowanja"
** złowólne wužywanje wjele wužywarskich kontow
** njekorektne wužywarske mě',
-'ipbanononly' => 'Jano anonymnych wužywarjow blokěrowaś',
+'ipb-hardblock' => 'Pśizjawjonym wužywarjam zawobaraś pód toś teju IP-adresu wobźěłaś',
'ipbcreateaccount' => 'Twórjenje wužywarskich kontow znjemóžniś',
'ipbemailban' => 'pósłanje e-mailow znjemóžniś',
'ipbenableautoblock' => 'Awtomatiske blokěrowanje slědneje wót togo wužywarja wužywaneje IP-adresy a wšyknych slědujucych adresow, wót kótarychž wopytajo boki wobźěłaś.',
@@ -2251,12 +2317,15 @@ Nejnowšy zapisk protokola blokěrowanjow pódawa se dołojce ako referenca:',
'ipbotherreason' => 'Hynakša/dalšna pśicyna:',
'ipbhidename' => 'Wužywarske mě w změnach a lisćinach schowaś',
'ipbwatchuser' => 'Wužywarski a diskusijny bok toś togo wužywarja wobglědowaś',
-'ipballowusertalk' => 'Toś tomu wužywarjeju dowóliś swój diskusijny bok wobźěłaś, mjazytm až jo blokěrowany.',
+'ipb-disableusertalk' => 'Toś tomu wužywarjeju zawobaraś swój bok wobźěłaś, gaž wón jo zablokěrowany.',
'ipb-change-block' => 'Wužywarja z toś tymi nastajenjami znowego blokěrowaś',
+'ipb-confirm' => 'Blokěrowanje wobkšuśiś',
'badipaddress' => 'IP-adresa jo njekorektna',
'blockipsuccesssub' => 'Wuspěšnje blokěrowane',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] jo se blokěrował.<br />
Glědaj do [[Special:IPBlockList|lisćiny aktiwnych blokěrowanjow]], aby blokěrowanja pśeglědał.',
+'ipb-blockingself' => 'Coš samogo blokěrowaś! Coš to napšawdu cyniś?',
+'ipb-confirmhideuser' => 'Coš rowno wužywarja z nastajenim "wužywarja schowaś" blokěrowaś. To k tomu dowjeźo, až mě wužywarja pódłocyjo se we wšych lisćinach a protokolowych zapiskach. Coš to napšawdu cyniś?',
'ipb-edit-dropdown' => 'Pśicyny blokěrowanja wobźěłaś',
'ipb-unblock-addr' => '$1 dopušćiś',
'ipb-unblock' => 'Wužywarske mě abo IP-adresu dopušćiś',
@@ -2266,17 +2335,23 @@ Glědaj do [[Special:IPBlockList|lisćiny aktiwnych blokěrowanjow]], aby blokě
'unblockiptext' => 'Z pomocu dołojcnego formulara móžotej IP-adresa abo wužywaŕ zasej se dopušćiś.',
'ipusubmit' => 'Toś to blokěrowanje wótpóraś',
'unblocked' => 'Wužywaŕ [[User:$1|$1]] jo zasej se dopušćił.',
+'unblocked-range' => 'Blokěrowanje za $1 jo se wótpórało',
'unblocked-id' => '$1 jo se dopušćił(a).',
+'blocklist' => 'Blokěrowane wužywarje',
'ipblocklist' => 'Blokěrowane wužywarje',
'ipblocklist-legend' => 'Blokěrowanego wužywarja pytaś',
-'ipblocklist-username' => 'Wužywarske mě abo IP-adresa:',
-'ipblocklist-sh-userblocks' => 'Kontowe blokěrowanja $1',
-'ipblocklist-sh-tempblocks' => 'nachylne blokěrowanja $1',
-'ipblocklist-sh-addressblocks' => 'Blokěrowanja jadnotliwych IP $1',
+'blocklist-userblocks' => 'Kontowe blokěrowanja schowaś',
+'blocklist-tempblocks' => 'Nachylne blokěrowanja schowaś',
+'blocklist-addressblocks' => 'Blokěrowanja jadnotliwych IP-adresow schowaś',
+'blocklist-timestamp' => 'Casowy kołk',
+'blocklist-target' => 'Cel',
+'blocklist-expiry' => 'Pśepadnjo',
+'blocklist-by' => 'Blokěrujucy administrator',
+'blocklist-params' => 'Blokowańske parametry',
+'blocklist-reason' => 'Pśicyna',
'ipblocklist-submit' => 'PytaÅ›',
'ipblocklist-localblock' => 'Lokalne blokěrowanje',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Druge blokěrowanje|Drugej blokěrowani|Druge blokěrowanja|Druge blokěrowanja}}',
-'blocklistline' => '$1, $2 jo blokěrował $3 (až do $4)',
'infiniteblock' => 'njewobgranicowany',
'expiringblock' => 'pśepadnjo $1 $2',
'anononlyblock' => 'jano anonymne',
@@ -2298,7 +2373,7 @@ Glědaj do [[Special:IPBlockList|lisćiny aktiwnych blokěrowanjow]], aby blokě
'reblock-logentry' => 'jo změnił blokěrowańske nastajenja za [[$1]] z casom spadnjenja $2 $3',
'blocklogtext' => 'To jo protokol blokěrowanjow a dopušćenjow.
IP-adresy, ako su awtomatiski se blokěrowali, se njepokažu.
-Na boce [[Special:IPBlockList|Lisćina blokěrowanych IP-adresow a wužywarskich mjenjow]] jo móžno, akualne blokěrowanja pśeglědowaś.',
+Na boce [[Special:BlockList|Lisćina blokěrowanych IP-adresow a wužywarskich mjenjow]] jo móžno, akualne blokěrowanja pśeglědowaś.',
'unblocklogentry' => 'jo $1 zasej dopušćił',
'block-log-flags-anononly' => 'jano anonymne',
'block-log-flags-nocreate' => 'stwórjenje konta jo se znjemóžniło',
@@ -2312,9 +2387,9 @@ Na boce [[Special:IPBlockList|Lisćina blokěrowanych IP-adresow a wužywarskich
'ipb_expiry_temp' => 'Blokěrowanja schowanych wužywarskich mjenjow deje permanentne byś.',
'ipb_hide_invalid' => 'Njejo móžno toś to konto pódtłocyś; jo snaź pśewjele změnow.',
'ipb_already_blocked' => '"$1" jo južo blokěrowany.',
-'ipb-needreblock' => '== Južo zablokěrowany ==
-$1 jo južo zablokěrowany. Coš nastajenja změniś?',
+'ipb-needreblock' => '$1 jo južo zablokěrowany. Coš nastajenja změniś?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Druge blokěrowanje|Drugej blokěrowani|Druge blokěrowanja|Druge blokěrowanja}}',
+'unblock-hideuser' => 'Njamóžoš blokěrowanje za toś togo wužywarja wótpóraś, dokulaž jogo wužywarske mě jo se schowało.',
'ipb_cant_unblock' => 'Zmólka: Blokěrowańska ID $1 njejo se namakała. Blokěrowanje jo było južo wótpórane.',
'ipb_blocked_as_range' => 'Zmólka: IP-adresa $1 njejo direktnje blokěrowana a njeda se wótblokěrowaś. Jo pak ako źěl wobcerka $2 blokěrowana, kótaryž da se wótblokěrowaś.',
'ip_range_invalid' => 'Njepłaśecy wobłuk IP-adresow.',
@@ -2348,6 +2423,7 @@ $1 jo južo zablokěrowany. Coš nastajenja změniś?',
'unlockdbsuccesstext' => 'Datowa banka jo zasej pśistupna.',
'lockfilenotwritable' => 'Njejo móžno, blokěrowansku dataju datoweje banki změniś. Coš-lic datowu banku zamknuś abo zasej spśistupniś, dej webowy serwer měś pšawo, do njeje pisaś.',
'databasenotlocked' => 'Datowa banka njejo zamknjona.',
+'lockedbyandtime' => '(wót {{GENDER:$1|$1}} dnja $2 $3)',
# Move page
'move-page' => '$1 pśesunuś',
@@ -2467,7 +2543,7 @@ W slědnem padźe móžoš teke wótkaz wužywaś, na pś. [[{{#Special:Export}}
'allmessagesdefault' => 'Standardny tekst',
'allmessagescurrent' => 'Aktualny tekst',
'allmessagestext' => 'How jo lisćina systemowych powěsćow w mjenowem rumje MediaWiki.
-Pšosym wobglědaj [http://www.mediawiki.org/wiki/Localisation lokalizaciju MediaWiki] a [http://translatewiki.net translatewiki.net], jolic coš k lokalizaciji MediaWiki pśinosowaś.',
+Pšosym wobglědaj [//www.mediawiki.org/wiki/Localisation lokalizaciju MediaWiki] a [//translatewiki.net translatewiki.net], jolic coš k lokalizaciji MediaWiki pśinosowaś.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' njejo tuchylu móžno, dokulaž jo datowa banka offline.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Pó pśiměrjeńskem stawje filtrěrowaś:',
@@ -2503,7 +2579,7 @@ Wšykne transwiki-importowe akcije protokolěruju se w [[Special:Log/import|log-
'import-interwiki-namespace' => 'Celowy mjenjowy rum:',
'import-upload-filename' => 'Datajowe mÄ›:',
'import-comment' => 'Komentar:',
-'importtext' => 'Eksportěruj pšosym dataju ze žredlowego wikija z pomocu [[Special:Export|eksporteje funkcije]]. Składuj ju na swójom licadle a nagraj su sem.',
+'importtext' => 'Eksportěruj pšosym dataju ze žredlowego wikija z pomocu [[Special:Export|eksporteje funkcije]]. Składuj ju na swójom licadle a nagraj ju sem.',
'importstart' => 'Importěrowanje bokow...',
'import-revision-count' => '$1 {{PLURAL:$1|wersija|wersiji|wersije}}',
'importnopages' => 'Boki za importěrowanje njeeksistěruju.',
@@ -2613,9 +2689,7 @@ W zespominanju dajo se pśicyna pódaś.',
'monobook.js' => '/* Slědujucy JavaScript zacytajo se za wužywarjow, kótarež skin MonoBook wužywaju */',
# Metadata
-'nodublincore' => 'Metadaty Dublin Core RDF su za toś ten serwer deaktiwěrowane.',
-'nocreativecommons' => 'Metadaty Creative Commons RDF su za toś ten serwer deaktiwěrowane.',
-'notacceptable' => 'Wiki-serwer njamóžo daty za twój klient wobźěłaś.',
+'notacceptable' => 'Wiki-serwer njamóžo daty za twój klient wobźěłaś.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonymny wužywaŕ|Anonymnej wužywarja|Anonymne wužywarje}} na {{SITENAME}}',
@@ -2638,12 +2712,17 @@ W zespominanju dajo se pśicyna pódaś.',
'spam_blanking' => 'Wšykne wersije su wopśimowali wótkaze na $1, do rěcha spórane.',
# Info page
-'infosubtitle' => 'Informacija wó boku',
-'numedits' => 'Licba změnow boka: $1',
-'numtalkedits' => 'Licba změnow diskusijnego boka: $1',
-'numwatchers' => 'Licba wobglědowarjow: $1',
-'numauthors' => 'Licba awtorow: $1',
-'numtalkauthors' => 'Licba diskutěrujucych: $1',
+'pageinfo-title' => 'Informacije za bok "$1"',
+'pageinfo-header-edits' => 'Změny',
+'pageinfo-header-watchlist' => 'Wobglědowańka',
+'pageinfo-header-views' => 'Zwobraznjenja',
+'pageinfo-subjectpage' => 'Bok',
+'pageinfo-talkpage' => 'Diskusijny bok',
+'pageinfo-watchers' => 'Licba wobglědowarjow',
+'pageinfo-edits' => 'Licba wobźěłanjow:',
+'pageinfo-authors' => 'Licba wšakich awtorow',
+'pageinfo-views' => 'Licba zwobraznjenjow',
+'pageinfo-viewsperedit' => 'Zwobraznjenja na změnu',
# Skin names
'skinname-standard' => 'Klasiski',
@@ -2655,25 +2734,6 @@ W zespominanju dajo se pśicyna pódaś.',
'skinname-simple' => 'Jadnorje',
'skinname-modern' => 'Moderny',
-# Math options
-'mw_math_png' => 'Pśecej ako PNG zwobrazniś.',
-'mw_math_simple' => 'Jadnory TeX ako HTML, howacej PNG',
-'mw_math_html' => 'Jo-lic móžno ako HTML, howacej PNG',
-'mw_math_source' => 'Ako TeX wóstajiś (za tekstowe browsery)',
-'mw_math_modern' => 'Pórucyjo se za moderne browsery',
-'mw_math_mathml' => 'Jo-lic móžno - MathML (eksperimentelny)',
-
-# Math errors
-'math_failure' => 'Zmólka',
-'math_unknown_error' => 'njeznata zmólka',
-'math_unknown_function' => 'njeznata funkcija',
-'math_lexing_error' => 'leksikaliska zmólka',
-'math_syntax_error' => 'syntaktiska zmólka',
-'math_image_error' => 'PNG-konwertěrowanje njejo se raźiło; pśekontrolěruj korektnu instalaciju latex a dvipng (abo dvips + gs + konwertěruj)',
-'math_bad_tmpdir' => 'Njejo móžno temporarny zapisk za matematiske formule załožyś resp. do njogo pisaś.',
-'math_bad_output' => 'Njejo móžno celowy zapisk za matematiske formule załožyś resp. do njogo pisaś.',
-'math_notexvc' => 'Program texvc felujo. Pšosym glědaj do math/README.',
-
# Patrolling
'markaspatrolleddiff' => 'Ako kontrolěrowane markěrowaś',
'markaspatrolledtext' => 'Markěruj toś ten bok ako kontrolěrowany',
@@ -2709,21 +2769,24 @@ $1',
'nextdiff' => 'Pśiduca změna →',
# Media information
-'mediawarning' => "'''Warnowanje''': Toś ten datajowy typ móžo wopśimjeś złosny programowy kod. Gaž toś ten kod se wuwjeźo, twój system móžo se wobškóźeś.",
-'imagemaxsize' => "Maksimalna wobrazowa wjelikosć:<br />'' (za boki datajowego wopisanja)''",
-'thumbsize' => 'Rozměra miniaturow:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|bok|boka|boki|bokow}}',
-'file-info' => 'wjelikosć dataje: $1, MIME-Typ: $2',
-'file-info-size' => '$1 × $2 pikselow, wjelikosć dataje: $3, MIME-Typ: $4',
-'file-nohires' => '<small>Wuše wótgranicowanje njeeksistěrujo.</small>',
-'svg-long-desc' => 'dataja SVG, nominalnje: $1 × $2 piksele, wjelikosć dataje: $3',
-'show-big-image' => 'Połne optiske wótgranicowanje.',
-'show-big-image-thumb' => '<small>wjelikosć pśeglěda: $1 × $2 pikselow</small>',
-'file-info-gif-looped' => 'bźezkóńcna šlejfa',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|wobłuk|wobłuka|wobłuki|wobłukow}}',
-'file-info-png-looped' => 'Å¡lejfa',
-'file-info-png-repeat' => '{{PLURAL:$1|$1 raz|dwójcy|$1 raze|$1 razow}} wótegrata',
-'file-info-png-frames' => '$1 {{PLURAL:$1|wobłuk|wobłuka|wobłuki|wobłukow}}',
+'mediawarning' => "'''Warnowanje''': Toś ten datajowy typ móžo wopśimjeś złosny programowy kod. Gaž toś ten kod se wuwjeźo, twój system móžo se wobškóźeś.",
+'imagemaxsize' => "Maksimalna wobrazowa wjelikosć:<br />'' (za boki datajowego wopisanja)''",
+'thumbsize' => 'Rozměra miniaturow:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|bok|boka|boki|bokow}}',
+'file-info' => 'wjelikosć dataje: $1, MIME-Typ: $2',
+'file-info-size' => '$1 × $2 pikselow, wjelikosć dataje: $3, MIME-Typ: $4',
+'file-info-size-pages' => '$1 × $2 pikselow, wjelikosć dataje: $3, MIME-typ: $4, $5 {{PLURAL:$5|bok|boka|boki|bokow}}',
+'file-nohires' => '<small>Wuše wótgranicowanje njeeksistěrujo.</small>',
+'svg-long-desc' => 'dataja SVG, nominalnje: $1 × $2 piksele, wjelikosć dataje: $3',
+'show-big-image' => 'Połne optiske wótgranicowanje.',
+'show-big-image-preview' => '<small>Wjelikosć toś togo pśeglěda: $1.</small>',
+'show-big-image-other' => '<small>Druge rozeznaśa: $1.</small>',
+'show-big-image-size' => '$1 × $2 pikselow',
+'file-info-gif-looped' => 'bźezkóńcna šlejfa',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|wobłuk|wobłuka|wobłuki|wobłukow}}',
+'file-info-png-looped' => 'Å¡lejfa',
+'file-info-png-repeat' => '{{PLURAL:$1|$1 raz|dwójcy|$1 raze|$1 razow}} wótegrata',
+'file-info-png-frames' => '$1 {{PLURAL:$1|wobłuk|wobłuka|wobłuki|wobłukow}}',
# Special:NewFiles
'newimages' => 'Nowe dataje',
@@ -2748,15 +2811,20 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'metadata-help' => 'Toś ta dataja wopśimjejo pśidatne informacije, kótarež nejskerjej póchadaju wót digitalneje kamery abo scannera. Jolic dataja bu pozdźej změnjona, njeby mógli někotare detaile změnjonu dataju wótbłyšćowaś.',
'metadata-expand' => 'rozšyrjone detaile pokazaś',
'metadata-collapse' => 'rozšyrjone detaile schowaś',
-'metadata-fields' => 'Slědujuce póla EXIF-metadatow se pokazuju na bokach, kótarež wopisuju wobraze; dalšne detaile, kótarež normalnje su schowane, mógu se pśidatnje pokazaś.
-
+'metadata-fields' => 'Slědujuce póla metadatow, kótarež su w toś tej powěźeńce pódane, budu se do bokow wopisanja wobrazow zapśimowaś, gaž tabela metadatow jo schowana. Druge se pó standarźe njepokazuju.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Šyrokosć',
@@ -2771,13 +2839,11 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'exif-ycbcrpositioning' => 'Pozicijoněrowanje Y a C',
'exif-xresolution' => 'Horicontalne optiske wótgranicowanje',
'exif-yresolution' => 'Wertikalne optiske wótgranicowanje',
-'exif-resolutionunit' => 'Měra optiskego wótgranicowanja',
'exif-stripoffsets' => 'městnosć wobrazowych datow',
'exif-rowsperstrip' => 'Licba smužkow na rědku',
'exif-stripbytecounts' => 'Byty na kompriměrowanu rědku',
'exif-jpeginterchangeformat' => 'Offset k JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Byty JPEG-dataje',
-'exif-transferfunction' => 'Funkcija pśestajenja',
'exif-whitepoint' => 'kwalita barwy běłego dypka',
'exif-primarychromaticities' => 'Kwalita barwy primarnych barwow.',
'exif-ycbcrcoefficients' => 'YCbCr-koeficienty',
@@ -2796,7 +2862,6 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'exif-compressedbitsperpixel' => 'Kompriměrowane bity na piksel',
'exif-pixelydimension' => 'Šyrokosć wobraza',
'exif-pixelxdimension' => 'Wusokosć wobraza',
-'exif-makernote' => 'Noticy zgótowarja',
'exif-usercomment' => 'Komentary wužywarja',
'exif-relatedsoundfile' => 'Pśisłušna zukowa dataja',
'exif-datetimeoriginal' => 'Datum a cas wutwórjenja datow',
@@ -2810,7 +2875,6 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'exif-exposureprogram' => 'Program wobswětlenja',
'exif-spectralsensitivity' => 'Spektralna cuśiwosć',
'exif-isospeedratings' => 'Cuśiwosć filma abo sensora (ISO)',
-'exif-oecf' => 'Optoelektroniski pśelicowański faktor (OECF)',
'exif-shutterspeedvalue' => 'Gódnota wobswětleńskego casa APEX',
'exif-aperturevalue' => 'APEX-blenda',
'exif-brightnessvalue' => 'APEX-swětłosć',
@@ -2823,7 +2887,6 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'exif-focallength' => 'Palna dalokosć',
'exif-subjectarea' => 'wobłuk',
'exif-flashenergy' => 'mócnosć błyska',
-'exif-spatialfrequencyresponse' => 'Cuśiwosć rumoweje frekwence',
'exif-focalplanexresolution' => 'horicontalne optiske wótgranicowanje sensora',
'exif-focalplaneyresolution' => 'wertikalne optiske wótgranicowanje sensora',
'exif-focalplaneresolutionunit' => 'Jadnotka optiskego wótgranicowanja sensora',
@@ -2832,7 +2895,6 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'exif-sensingmethod' => 'wašnja měrjenja',
'exif-filesource' => 'Žrědło dataje',
'exif-scenetype' => 'Typ sceny',
-'exif-cfapattern' => 'Muster CFA',
'exif-customrendered' => 'Wót wužywarja definěrowane wobźěłanje wobraza',
'exif-exposuremode' => 'Modus wobswětlenja',
'exif-whitebalance' => 'Balansa běłosći',
@@ -2877,10 +2939,79 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'exif-gpsareainformation' => 'MÄ› wobcerka GPS',
'exif-gpsdatestamp' => 'Datum GPS',
'exif-gpsdifferential' => 'Diferencialna korektura GPS',
+'exif-jpegfilecomment' => 'Komentar JPEG-dataje',
+'exif-keywords' => 'Klucowe słowa',
+'exif-worldregioncreated' => 'Swětowy region, w kótaremž wobraz jo se fotografěrował',
+'exif-countrycreated' => 'Kraj, w kótaremž wobraz jo se fotografěrował',
+'exif-countrycodecreated' => 'Code za kraj, w kótaremž wobraz jo se fotografěrował',
+'exif-provinceorstatecreated' => 'Prowinca abo źělny stat, w kótaremž wobraz jo se fotografěrował',
+'exif-citycreated' => 'Město, w kótaremž wobraz jo se fotografěrował',
+'exif-sublocationcreated' => 'Wobcerk města, w kótaremž wobraz jo se fotografěrował',
+'exif-worldregiondest' => 'Pokazany swětowy region',
+'exif-countrydest' => 'Pokazany kraj',
+'exif-countrycodedest' => 'Kod za pokazany kraj',
+'exif-provinceorstatedest' => 'Pokazana prowinca abo pokazany źělny stat',
+'exif-citydest' => 'Pokazane město',
+'exif-sublocationdest' => 'Wobcerk pokazanego města',
'exif-objectname' => 'Krotki titel',
+'exif-specialinstructions' => 'Wósebne instrukcije',
+'exif-headline' => 'Nadpismo',
+'exif-credit' => 'Spomnjenje/Póbitowaŕ',
+'exif-source' => 'Žrědło',
+'exif-editstatus' => 'Wobzěłowański status wobraza',
+'exif-urgency' => 'Nuznosć',
+'exif-fixtureidentifier' => 'MÄ› kolumny',
+'exif-locationdest' => 'Zwobraznjone městno',
+'exif-locationdestcode' => 'Code zwobraznjonego městna',
+'exif-objectcycle' => 'Cas dnja, za kótaryž medium jo myslony',
+'exif-contact' => 'Kontaktowe informacije',
+'exif-writer' => 'Pisaŕ',
+'exif-languagecode' => 'Rěc',
+'exif-iimversion' => 'IIM-wersija',
+'exif-iimcategory' => 'Kategorija',
+'exif-iimsupplementalcategory' => 'Pśidatne kategorije',
+'exif-datetimeexpires' => 'Njewužywaś pó',
+'exif-datetimereleased' => 'Wózjawjony dnja',
+'exif-originaltransmissionref' => 'Code městna, wót kótaregož jo se foto pśenjasło',
+'exif-identifier' => 'Identifikator',
+'exif-lens' => 'Wužyty objektiw',
+'exif-serialnumber' => 'Serijowy numer kamery',
+'exif-cameraownername' => 'Wobsejźaŕ kamery',
+'exif-label' => 'Pomjenjenje',
+'exif-datetimemetadata' => 'Datum, gaž metadaty su se slědny raz změnili',
+'exif-nickname' => 'Nałožne mě wobraza',
+'exif-rating' => 'Pógódnośenje (z 5)',
+'exif-rightscertificate' => 'Certifikat zastojanja pšawow',
+'exif-copyrighted' => 'Status awtorskego pšawa',
+'exif-copyrightowner' => 'Wobsejźaŕ awtorskego pšawa',
+'exif-usageterms' => 'Wužywańske wuměnjenja',
+'exif-webstatement' => 'Online-deklaracija wó awtorskem pšawje',
+'exif-originaldocumentid' => 'Jasny ID spócetnego dokumenta',
+'exif-licenseurl' => 'URL za licencu awtorskego pšawa',
+'exif-morepermissionsurl' => 'Alternatiwne licencne informacije',
+'exif-attributionurl' => 'Pśi zasejwužywanju toś togo źěła, wótkaž pšosym na:',
+'exif-preferredattributionname' => 'Pśi zasejwužywanju toś togo źěła, naspomnjej pšosym',
+'exif-pngfilecomment' => 'Komentar PNG-dataje',
+'exif-disclaimer' => 'Wuzamknjenje rukowanja',
+'exif-contentwarning' => 'Wopśimjeśowe warnowanje',
+'exif-giffilecomment' => 'Komentar GIF-dataje',
+'exif-intellectualgenre' => 'Typ medija',
+'exif-subjectnewscode' => 'Temowy code',
+'exif-scenecode' => 'IPTC-code naglěda',
+'exif-event' => 'Zwobraznjone tšojenje',
+'exif-organisationinimage' => 'Zwobraznjona organizacija',
+'exif-personinimage' => 'Zwobraznjona wósoba',
+'exif-originalimageheight' => 'Wusokosć wobraza pśed pśirězowanim',
+'exif-originalimagewidth' => 'Šyrokosć wobraza pśed pśirězowanim',
# EXIF attributes
'exif-compression-1' => 'Njekompriměrowany',
+'exif-compression-2' => 'CCITT kupka 3 jadnodimensionalne modificěrowane koděrowanje Huffman běgoweje dłujkosći',
+'exif-compression-3' => 'CCITT kupka 3 faksowe koděrowanje',
+'exif-compression-4' => 'CCITT kupka 4 faksowe koděrowanje',
+
+'exif-copyrighted-true' => 'Pśez awtorske pšawo šćitany',
+'exif-copyrighted-false' => 'Zjawnosći pśistupny',
'exif-unknowndate' => 'Njeznaty datum',
@@ -2898,6 +3029,8 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'exif-xyresolution-i' => '$1 dpi (dypkow na col)',
+'exif-colorspace-65535' => 'Njekalibrěrowany',
+
'exif-componentsconfiguration-0' => 'njeeksistěrujo',
'exif-exposureprogram-0' => 'Njedefiněrowane',
@@ -2961,6 +3094,8 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'exif-sensingmethod-7' => 'Tśilinearny sensor',
'exif-sensingmethod-8' => 'Sekwencielny barwowy linearny sensor',
+'exif-filesource-3' => 'Digitalna stojańskowobrazowa kamera',
+
'exif-scenetype-1' => 'Direktnje fotografěrowany wobraz',
'exif-customrendered-0' => 'Normalne wobźěłanje',
@@ -3009,6 +3144,10 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'exif-gpslongitude-e' => 'Pódzajtšna dliń',
'exif-gpslongitude-w' => 'Pódwjacorna dliń',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|metraj|metry|metrow}} nad mórskeju głaźinu',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|metraj|metry|metrow}} pód mórskeju głaźinu',
+
'exif-gpsstatus-a' => 'Měrjenje w běgu',
'exif-gpsstatus-v' => 'kompatibelnosć měry',
@@ -3020,21 +3159,73 @@ Slědujuce wótkaze w tej samej smužce se za wuwześa naglědaju, w kótarychž
'exif-gpsspeed-m' => 'Mile na góźinu',
'exif-gpsspeed-n' => 'Suki',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometry',
+'exif-gpsdestdistance-m' => 'Mile',
+'exif-gpsdestdistance-n' => 'Mórske mile',
+
+'exif-gpsdop-excellent' => 'Wuběrny ($1)',
+'exif-gpsdop-good' => 'Dobry ($1)',
+'exif-gpsdop-moderate' => 'Wósrědny ($1)',
+'exif-gpsdop-fair' => 'Akceptabelny ($1)',
+'exif-gpsdop-poor' => 'Å patny ($1)',
+
+'exif-objectcycle-a' => 'Jano zajtša',
+'exif-objectcycle-p' => 'Jano wjacor',
+'exif-objectcycle-b' => 'Ako zajtša tak teke wjacor',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Wopšawdny směr',
'exif-gpsdirection-m' => 'Magnetiski směr',
+'exif-ycbcrpositioning-1' => 'Centrěrowany',
+'exif-ycbcrpositioning-2' => 'Susedny',
+
+'exif-dc-contributor' => 'Sobuźěłaśerje',
+'exif-dc-coverage' => 'Městny abo casny wobłuk mediuma',
+'exif-dc-date' => 'Pódaśa datuma',
+'exif-dc-publisher' => 'Wudawaŕ',
+'exif-dc-relation' => 'Pśiswójźbne medije',
+'exif-dc-rights' => 'PÅ¡awa',
+'exif-dc-source' => 'Medijowe žrědło',
+'exif-dc-type' => 'Medijowy typ',
+
+'exif-rating-rejected' => 'Wótpokazany',
+
+'exif-isospeedratings-overflow' => 'Wětša ako 65535',
+
+'exif-iimcategory-ace' => 'wuměłstwo, kultura a rozdrosćenje',
+'exif-iimcategory-clj' => 'Kriminalita a pšawo',
+'exif-iimcategory-dis' => 'Katastrofy a znjeglucenja',
+'exif-iimcategory-fin' => 'Góspodarstwo a pśekupjenja',
+'exif-iimcategory-edu' => 'Kubłanje',
+'exif-iimcategory-evn' => 'Wobswět',
+'exif-iimcategory-hth' => 'Strowje',
+'exif-iimcategory-hum' => 'Zajm',
+'exif-iimcategory-lab' => 'Źěło',
+'exif-iimcategory-lif' => 'Žywjeński stil a wólny cas',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Nabóžnina a wěra',
+'exif-iimcategory-sci' => 'Wědomnosć a technika',
+'exif-iimcategory-soi' => 'Socialne problemy',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Wójna, konfilkty a zběgi',
+'exif-iimcategory-wea' => 'Wjedro',
+
+'exif-urgency-normal' => 'Normalna ($1)',
+'exif-urgency-low' => 'Niska ($1)',
+'exif-urgency-high' => 'Wusoka ($1)',
+'exif-urgency-other' => 'Swójska priorita ($1)',
+
# External editor support
'edit-externally' => 'Dataje z eksternym programom wobźěłaś',
-'edit-externally-help' => '(Za dalšne informacije glědaj [http://www.mediawiki.org/wiki/Manual:External_editors instalaciske instrukcije]).',
+'edit-externally-help' => '(Za dalšne informacije glědaj [//www.mediawiki.org/wiki/Manual:External_editors instalaciske instrukcije]).',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'wšykne',
-'imagelistall' => 'wšykne',
-'watchlistall2' => 'wšykne',
-'namespacesall' => 'wšykne',
-'monthsall' => 'wšykne',
-'limitall' => 'wšykne',
+'watchlistall2' => 'wšykne',
+'namespacesall' => 'wšykne',
+'monthsall' => 'wšykne',
+'limitall' => 'wšykne',
# E-mail address confirmation
'confirmemail' => 'E-mailowu adresu wobkšuśiś.',
@@ -3103,17 +3294,25 @@ $1',
'trackbackdeleteok' => 'Trackback jo wuspěšnje wulašowany.',
# Delete conflict
-'deletedwhileediting' => "'''Warnowanje''': Toś ten bok se wulašujo, gaž zachopijoš jen wobźěłaś!",
-'confirmrecreate' => "Wužywaŕ [[User:$1|$1]] ([[User talk:$1|diskusija]]) jo bok wulašował, nježli až sy zachopił jen wobźěłaś, pśicyna:
+'deletedwhileediting' => "'''Warnowanje''': Toś ten bok se wulašujo, gaž zachopijoš jen wobźěłaś!",
+'confirmrecreate' => "Wužywaŕ [[User:$1|$1]] ([[User talk:$1|diskusija]]) jo bok wulašował, nježli až sy zachopił jen wobźěłaś, pśicyna:
: ''$2''
Pšosym wobkšuśiś, až napšawdu coš ten bok zasej wutwóriś.",
-'recreate' => 'Wótnowótki wutwóriś',
+'confirmrecreate-noreason' => 'Wužywaŕ [[User:$1|$1]] ([[User talk:$1|diskusija]]) jo toś ten bok wulašował, nježli až sy zachopił jen wobźěłaś.
+Pšosym wobkšuś, až napšawdu coš toś ten bok zasej napóraś.',
+'recreate' => 'Wótnowótki wutwóriś',
# action=purge
'confirm_purge_button' => 'W pórědku.',
'confirm-purge-top' => 'Wulašowaś cache togo boka?',
'confirm-purge-bottom' => 'Wuproznijo cache a wunuzijo zwobraznjenje aktualneje wersije.',
+# action=watch/unwatch
+'confirm-watch-button' => 'W pórěźe',
+'confirm-watch-top' => 'Toś ten bok twójej wobglědowańce dodaś?',
+'confirm-unwatch-button' => 'W pórěźe',
+'confirm-unwatch-top' => 'Toś ten bok z twójeje wobglědowańki wulašowaś?',
+
# Multipage image navigation
'imgmultipageprev' => '↠slědny bok',
'imgmultipagenext' => 'pśiducy bok →',
@@ -3153,14 +3352,14 @@ Pšosym wobkšuśiś, až napšawdu coš ten bok zasej wutwóriś.",
'watchlistedit-noitems' => 'Twója wobglědowańka jo prozna.',
'watchlistedit-normal-title' => 'Zapise wobźěłaś',
'watchlistedit-normal-legend' => 'Zapiski z wobglědowańki wulašowaś',
-'watchlistedit-normal-explain' => 'Zapiski w twójej wobglědowańce pokazuju se dołojce. Aby zapisk wulašował, markěruj kašćik pódla zapiska a klikni na "{{int:Watchlistedit-normal-submit}}". Móžoš swóju wobglědowańku teke w [[Special:Watchlist/raw|lisćinowem formaśe]] wobźěłaś.',
+'watchlistedit-normal-explain' => 'Zapiski w twójej wobglědowańce pokazuju se dołojce. Aby zapisk wulašował, markěruj kašćik pódla zapiska a klikni na "{{int:Watchlistedit-normal-submit}}". Móžoš swóju wobglědowańku teke w [[Special:EditWatchlist/raw|lisćinowem formaśe]] wobźěłaś.',
'watchlistedit-normal-submit' => 'Zapise wulašowaś',
'watchlistedit-normal-done' => '{{PLURAL:$1 zapisk jo|$1 zapiska stej|$1 zapiski su|$1 zapiskow jo}} se z twójeje wobglědowańki {{PLURAL:wulašował|wulašowałej|wulašowali|wulašowało}}.',
'watchlistedit-raw-title' => 'Samu wobglědowańku wobźěłaś',
'watchlistedit-raw-legend' => 'Samu wobglědowańku wobźěłaś',
'watchlistedit-raw-explain' => 'Titele, kótarež namakaju se w twójej wobglědowańce pokazuju se dołojce a daju se lisćinje pśidaś a z njeje wótpóraś; jaden titel na smužku.
Gaž sy gótowy, klikni na "{{int:Watchlistedit-raw-submit}}".
-Móžoš teke [[Special:Watchlist/edit|standardny wobźěłowański bok wužywaś]].',
+Móžoš teke [[Special:EditWatchlist|standardny wobźěłowański bok wužywaś]].',
'watchlistedit-raw-titles' => 'Zapise:',
'watchlistedit-raw-submit' => 'Lisćinu aktualizěrowaś',
'watchlistedit-raw-done' => 'Twója wobglědowańka jo se zaktualizěrowała.',
@@ -3191,33 +3390,33 @@ MóžoÅ¡ teke [[Special:Watchlist/edit|standardny wobźěłowaÅ„ski bok wužywaÅ
'duplicate-defaultsort' => 'Glědaj: Standardny sortěrowański kluc (DEFAULT SORT KEY) "$2" pśepišo pjerwjej wužyty kluc "$1".',
# Special:Version
-'version' => 'Wersija',
-'version-extensions' => 'Instalowane rozšyrjenja',
-'version-specialpages' => 'Specialne boki',
-'version-parserhooks' => 'Parserowe kokule',
-'version-variables' => 'Wariable',
-'version-skins' => 'Suknje',
-'version-other' => 'Druge',
-'version-mediahandlers' => 'Pśeźěłaki medijow',
-'version-hooks' => 'Kokule',
-'version-extension-functions' => 'Funkcije rozšyrjenjow',
-'version-parser-extensiontags' => 'Tagi parserowych rozšyrjenjow',
-'version-parser-function-hooks' => 'Parserowe funkcije',
-'version-skin-extension-functions' => 'Funkcije za rozšyrjenja šatow',
-'version-hook-name' => 'MÄ› kokule',
-'version-hook-subscribedby' => 'Aboněrowany wót',
-'version-version' => '(Wersija $1)',
-'version-license' => 'Licenca',
-'version-poweredby-credits' => "Toś ten wiki spěchujo se wót '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'druge',
-'version-license-info' => 'MediaWiki jo licha softwara: móžoš ju pód wuměnjenjami licence GNU General Public License, wózjawjeneje wót załožby Free Software Foundation, rozdźěliś a/abo změniś: pak pód wersiju 2 licence pak pód někakeju pózdźejšeju wersiju.
+'version' => 'Wersija',
+'version-extensions' => 'Instalowane rozšyrjenja',
+'version-specialpages' => 'Specialne boki',
+'version-parserhooks' => 'Parserowe kokule',
+'version-variables' => 'Wariable',
+'version-antispam' => 'Šćit pśeśiwo spamoju',
+'version-skins' => 'Suknje',
+'version-other' => 'Druge',
+'version-mediahandlers' => 'Pśeźěłaki medijow',
+'version-hooks' => 'Kokule',
+'version-extension-functions' => 'Funkcije rozšyrjenjow',
+'version-parser-extensiontags' => 'Tagi parserowych rozšyrjenjow',
+'version-parser-function-hooks' => 'Parserowe funkcije',
+'version-hook-name' => 'MÄ› kokule',
+'version-hook-subscribedby' => 'Aboněrowany wót',
+'version-version' => '(Wersija $1)',
+'version-license' => 'Licenca',
+'version-poweredby-credits' => "Toś ten wiki spěchujo se wót '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'druge',
+'version-license-info' => 'MediaWiki jo licha softwara: móžoš ju pód wuměnjenjami licence GNU General Public License, wózjawjeneje wót załožby Free Software Foundation, rozdźěliś a/abo změniś: pak pód wersiju 2 licence pak pód někakeju pózdźejšeju wersiju.
MediaWiki rozdźěla se w naźeji, až buźo wužitny, ale BŹEZ GARANTIJE: samo bźez wopśimjoneje garantije PŚEDAWAJOBNOSĆI abo PŚIGÓDNOSĆI ZA WĚSTY ZAMĚR. Glědaj GNU general Public License za dalšne drobnostki.
-Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public License] gromaźe z toś tym programom dostanu měś: jolic nic, napiš do załožby Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA abo [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html pśecytaj ju online].',
-'version-software' => 'Instalěrowana software',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Wersija',
+Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public License] gromaźe z toś tym programom dostanu měś: jolic nic, napiš do załožby Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA abo [//www.gnu.org/licenses/old-licenses/gpl-2.0.html pśecytaj ju online].',
+'version-software' => 'Instalěrowana software',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Wersija',
# Special:FilePath
'filepath' => 'Datajowa droga',
@@ -3227,22 +3426,22 @@ Ty by dejał [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licence GNU General Public
Wobraze se w połnym wótgranicowanju pokazuju, druge datajowe typy se ze zwězanym programom direktnje startuju.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Za duplikatnymi datajami pytaÅ›',
-'fileduplicatesearch-summary' => 'Za datajowymi duplikatami na zakłaźe gótnoty hash pytaś.
-
-Zapódaj datajowe mě bźez prefiksa "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'pytaÅ› duplikata',
-'fileduplicatesearch-filename' => 'Datajowe mÄ›:',
-'fileduplicatesearch-submit' => 'PytaÅ›',
-'fileduplicatesearch-info' => '$1 × $2 Piksel<br />wjelikosć dataja: $3<br />typ MIME: $4',
-'fileduplicatesearch-result-1' => 'Dataja "$1" njama identiske duplikaty.',
-'fileduplicatesearch-result-n' => 'Dataja "$1" ma {{PLURAL:$2|1 identiski duplikat|$2 identiskej duplikata|$2 identiske duplikaty|$2 identiskich duplikatow}}.',
+'fileduplicatesearch' => 'Za duplikatnymi datajami pytaÅ›',
+'fileduplicatesearch-summary' => 'Za datajowymi duplikatami na zakłaźe gótnoty hash pytaś.',
+'fileduplicatesearch-legend' => 'pytaÅ› duplikata',
+'fileduplicatesearch-filename' => 'Datajowe mÄ›:',
+'fileduplicatesearch-submit' => 'PytaÅ›',
+'fileduplicatesearch-info' => '$1 × $2 Piksel<br />wjelikosć dataja: $3<br />typ MIME: $4',
+'fileduplicatesearch-result-1' => 'Dataja "$1" njama identiske duplikaty.',
+'fileduplicatesearch-result-n' => 'Dataja "$1" ma {{PLURAL:$2|1 identiski duplikat|$2 identiskej duplikata|$2 identiske duplikaty|$2 identiskich duplikatow}}.',
+'fileduplicatesearch-noresults' => 'Žedna dataja z mjenim "$1" namakana.',
# Special:SpecialPages
'specialpages' => 'Specialne boki',
'specialpages-note' => '----
* Normalne specialne boki
-* <strong class="mw-specialpagerestricted">Specialne boki z wobgranicowanym pśistupom</strong>',
+* <span class="mw-specialpagerestricted">Specialne boki z wobgranicowanym pśistupom.</span>
+* <span class="mw-specialpagecached">Specialne boki z pufrowaka.</span>',
'specialpages-group-maintenance' => 'Wótwardowańske lisćiny',
'specialpages-group-other' => 'Druge specialne boki',
'specialpages-group-login' => 'Pśizjawjenje',
diff --git a/languages/messages/MessagesDtp.php b/languages/messages/MessagesDtp.php
new file mode 100644
index 00000000..1dcd87ea
--- /dev/null
+++ b/languages/messages/MessagesDtp.php
@@ -0,0 +1,1413 @@
+<?php
+/** Central Dusun (Dusun Bundu-liwan)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author FRANCIS5091
+ * @author FRANELYA
+ */
+
+$fallback = 'ms';
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Mangagaris pioputan:',
+'tog-highlightbroken' => 'Oturo noputan norumbak <a href="" class="new">miagal diti</a> (toi: miagal diti <a href="" class="internal">?</a>)',
+'tog-justify' => 'Kasagaan kiparagrap',
+'tog-hideminor' => 'Lisoko idit tokoro ih wagu kaalanai.',
+'tog-hidepatrolled' => 'Lisoko idit tinamangan ih wagu kaalanai',
+'tog-newpageshidepatrolled' => 'Lisoko bolikon tinamangan mantad lis bolikon kawawagu',
+'tog-extendwatchlist' => 'Pointongo koinsanai listamangan do popokito koinsanai pinongundolihon, okon ko iri kawawagu nopo',
+'tog-usenewrc' => 'Gunao popoingkawas kaalanai kawawagu (momoguno JawaSikrip)',
+'tog-numberheadings' => 'oporian-mongonumbur it tuluhon',
+'tog-showtoolbar' => 'Pokitono kakamotbar mongidit (momoguno JawaSikrip)',
+'tog-editondblclick' => 'Idito bolikon momoguno induaan todos (momoguno JawaSikrip)',
+'tog-editsection' => 'Pabanaro sikson mongidit mamakai noputan (idit)',
+'tog-editsectiononrightclick' => 'Pabanaro sikson mongidit momoguno todos golibang id sikson tuluon (momoguno JawaSikrip)',
+'tog-showtoc' => 'Pokitono mija sinuang-suang (montok bolikon di kolobi do 3 tuluhon)',
+'tog-rememberpassword' => 'Soroho ot loginku id popogihuman diti (gisom solinaid do $1 {{PLURAL:$1|tadau|madau}})',
+'tog-watchcreations' => 'Ruhangai bolikon di winonsoiku id lisintanganku',
+'tog-watchdefault' => 'Ruhangai bolikon di niditku id lisintanganku',
+'tog-watchmoves' => 'Ruhangai bolikon di pinawalihku id lisintanganku.',
+'tog-watchdeletion' => 'Ruhangai bolikon di pinugasku id lisintanganku',
+'tog-minordefault' => 'Tandaai oinsanan niditan tokoro sobaagi do pongoiso',
+'tog-previewontop' => 'Pokitono duluon-kokikitanai id pogulu kutak idit',
+'tog-previewonfirst' => 'Pokitono duluon-kokikitanai di idit koinsan',
+'tog-nocache' => 'Antabai kasing popogigihum bolikon',
+'tog-enotifwatchlistpages' => 'Ponuratai-i doho soira do haro bolikon lisintanganku haro kowolion',
+'tog-enotifusertalkpages' => 'Ponuratai-i oku soira kiharo kowolion id pibabarasan momomogunoku',
+'tog-enotifminoredits' => 'Ponuratai-i oku nogi do nung haro no idit tongokoro do bolikon',
+'tog-enotifrevealaddr' => 'Pokitono adiris surat-i-ku id kapahabaran surat-i',
+'tog-shownumberswatching' => 'Pokitono ginumu do momomoguno minongintong',
+'tog-oldsig' => 'Poduluon kokikitanai do sain pinosuang',
+'tog-fancysig' => 'Pokitono sain sobaagi do tikwiki (ingaa oporian toput )',
+'tog-externaleditor' => 'Pomoguno pongigidit poinlabus sobaagi do pongoiso (montok di angasampin nopo, mongoguno do nuludan pointantu id kompiutonu. [//www.mediawiki.org/wiki/Manual:External_editors Lobi pomoilaan.])',
+'tog-externaldiff' => 'Pomoguno pongigidit poinlabus sobaagi do pongoiso (montok di angasampin nopo, mongoguno do nuludan pointantu id kompiutonu. [//www.mediawiki.org/wiki/Manual:External_editors Lobi pomoilaan.])',
+'tog-showjumplinks' => 'Pasagao "tumopik hilo" noputan awayaan',
+'tog-uselivepreview' => 'Momoguno pongingintong poimpasi (momoguno JawaSikrip) (pogumbalan)',
+'tog-forceeditsummary' => 'Posoroho oku no nung awu nosuangan kutak koinibaan niditan',
+'tog-watchlisthideown' => 'Polisoko niditanku mantad do lis piintangan',
+'tog-watchlisthidebots' => 'Polisoko niditan rinobot mantad do lis pintangan',
+'tog-watchlisthideminor' => 'Polisoko niditan tokoto mantad do lis piintangan',
+'tog-watchlisthideliu' => 'Polisoko niditan di momomoguno sinumuang log mantad lis piintanganku',
+'tog-watchlisthideanons' => 'Polisoko niditan di momomoguno ingaa ngaran mantad id lis pintanganku',
+'tog-watchlisthidepatrolled' => "Polisoko niditan '''patrolled''' mantad do lis piintangan",
+'tog-ccmeonemails' => 'Atadai oku do dolinan di surat-i it pinaatodku montok momomoguno suai',
+'tog-diffonly' => 'Kada pokitono suang bobolikon id siriba tongodip',
+'tog-showhiddencats' => 'Pokitono katogori poinlisok',
+'tog-norollbackdiff' => 'Yadaai dip opongoh po do poturug-guli',
+
+'underline-always' => 'Toririmo',
+'underline-never' => 'Kada',
+'underline-default' => 'Pogigihum pongoiso',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Poyanan mongidit gaya pimato:',
+'editfont-default' => 'Pogigihum pongoiso',
+'editfont-monospace' => 'Pimato iso insir',
+'editfont-sansserif' => 'Pimato San-sorip',
+'editfont-serif' => 'Pimato Sorip',
+
+# Dates
+'sunday' => 'Dautiwang',
+'monday' => 'Dautonlu',
+'tuesday' => 'Daumirod',
+'wednesday' => 'Daumansa',
+'thursday' => 'Dautadru',
+'friday' => 'Daurudu',
+'saturday' => 'Daukukuak',
+'sun' => 'DTiw',
+'mon' => 'DTon',
+'tue' => 'DMir',
+'wed' => 'DMad',
+'thu' => 'DTad',
+'fri' => 'DRud',
+'sat' => 'DKua',
+'january' => 'Tumilatok',
+'february' => 'Tumansak',
+'march' => 'Tugomot',
+'april' => 'Tungiop',
+'may_long' => 'Tumikat',
+'june' => 'Tumahas',
+'july' => 'Tumadas',
+'august' => 'Tumagus',
+'september' => 'Tumanom',
+'october' => 'Tugumas',
+'november' => 'Tumilau',
+'december' => 'Tumomuhau',
+'january-gen' => 'Milatok',
+'february-gen' => 'Mansak',
+'march-gen' => 'Gomot',
+'april-gen' => 'Ngiop',
+'may-gen' => 'Mikat',
+'june-gen' => 'Mahas',
+'july-gen' => 'Madas',
+'august-gen' => 'Magus',
+'september-gen' => 'Manom',
+'october-gen' => 'Gumas',
+'november-gen' => 'Milau',
+'december-gen' => 'Momuhau',
+'jan' => 'Tok',
+'feb' => 'Sak',
+'mar' => 'Mot',
+'apr' => 'Iop',
+'may' => 'Kat',
+'jun' => 'Has',
+'jul' => 'Das',
+'aug' => 'Gus',
+'sep' => 'Nom',
+'oct' => 'Mas',
+'nov' => 'Lau',
+'dec' => 'Hau',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Katogori|Katogori}}',
+'category_header' => 'Bobolikon id kalas "$1"',
+'subcategories' => 'Kawo do kalas',
+'category-media-header' => 'Modia id kalas "$1"',
+'category-empty' => "''Maso po do ingga poinsuang bobolikon toi modia id kalas diti.''",
+'hidden-categories' => '{{PLURAL:$1|Kalas poinlisok|Ka-kalas poinlisok}}',
+'hidden-category-category' => 'Ka-kalas poinlisok',
+'category-subcat-count' => '{{PLURAL:$2|Ilo no kawo ka-kalas diti maso do babaino.|Ka-kalas diti kiharo {{PLURAL:$1|kawo kalas|$1 tangakawo kalas}}, soginumu do $2.}}',
+'category-subcat-count-limited' => 'Kalas diti kisuang do {{PLURAL:$1|kawo kalas|$1 ka-kawo kalas}}.',
+'category-article-count' => '{{PLURAL:$2|Kisuang do bolikon dilo nopo ot ka-kalas diti.|Soginumu {{PLURAL:$1|bolikon nopo|$1 bolikon di}} id kalas diti, mantad $2 koinsanai.}}',
+'category-article-count-limited' => 'Iti {{PLURAL:$1|bolikon|$1 bobolikon}} hiti id katogori.',
+'category-file-count' => '{{PLURAL:$2|Kisuang ot ka-kalas diti do papail dilo.|Soginumu {{PLURAL:$1|pail nopo|$1 papail do}} id kalas diti, mantad $2 koinsanai.}}',
+'category-file-count-limited' => 'Iti {{PLURAL:$1|pail|$1 papail}} hiti id katogori.',
+'listingcontinuesabbrev' => 'Mononoluod',
+'index-category' => 'Bolikon naka-abisi',
+'noindex-category' => 'Bolikon awu naka-abisi',
+
+'about' => 'Kokomoi',
+'article' => 'Suang bolikon',
+'newwindow' => '(ukabai id liligaon wagu)',
+'cancel' => 'Kinsilo',
+'moredotdotdot' => 'Gumu...',
+'mypage' => 'Bolikonku',
+'mytalk' => 'Pibabarasanku',
+'anontalk' => 'Piboros montok diti nantadon IP',
+'navigation' => 'Popotunud',
+'and' => '&#32;om',
+
+# Cologne Blue skin
+'qbfind' => 'Ihum',
+'qbbrowse' => 'Pogihum',
+'qbedit' => 'Idito',
+'qbpageoptions' => 'Bolikon diti',
+'qbpageinfo' => 'Pogiromutan',
+'qbmyoptions' => 'Bobolikonku ngawi',
+'qbspecialpages' => 'Bobolikon suaikowokon',
+'faq' => 'Ponguhatan Koinsoruan om Poninimbar',
+'faqpage' => 'Project:Ponguhatan Koinsoruan om Pininimbar',
+
+# Vector skin
+'vector-action-addsection' => 'Ruhangai piboboroson',
+'vector-action-delete' => 'Pugaso',
+'vector-action-move' => 'Poundoliho',
+'vector-action-protect' => 'Tingoligai',
+'vector-action-undelete' => 'Kada pugaso',
+'vector-action-unprotect' => 'Alanai tingolig',
+'vector-simplesearch-preference' => 'Pasagao pogigihum ponontonudon pinoingkawas (Pongulit tuntuduk nopo)',
+'vector-view-create' => 'Pomonsoi',
+'vector-view-edit' => 'Idito',
+'vector-view-history' => 'Intaai susuyan',
+'vector-view-view' => 'Basao',
+'vector-view-viewsource' => 'Intaai wowonod',
+'actions' => 'Pongkinaraja',
+'namespaces' => 'Ponuratan ngaran',
+'variants' => 'Kopogisuaian',
+
+'errorpagetitle' => 'Nosilopan',
+'returnto' => 'Gumuli hilo $1.',
+'tagline' => 'Mantad {{SITENAME}}',
+'help' => 'Sokodung',
+'search' => 'Ihumo',
+'searchbutton' => 'Ihumo',
+'go' => 'Ongoi',
+'searcharticle' => 'Ongoyo',
+'history' => 'Susuyan bolikon',
+'history_short' => 'Susuyan',
+'updatedmarker' => 'noinwoguan mantad di poguluku do tuminombului',
+'printableversion' => 'Solinan milo pirinon',
+'permalink' => 'Toput pointatap',
+'print' => 'Pirino',
+'view' => 'Intaai',
+'edit' => 'Idito',
+'create' => 'Pomonsoi',
+'editthispage' => 'Idito iti bolikon',
+'create-this-page' => 'Pudoliai iti bolikon',
+'delete' => 'Pugaso',
+'deletethispage' => 'Pugaso iti bolikon',
+'undelete_short' => 'Kada pugaso {{PLURAL:$1|iso niditan|$1 niniditan}}',
+'viewdeleted_short' => 'Intaai {{PLURAL:$1|iso niditan pinugas|$1 niniditan pinugas}}',
+'protect' => 'Tingoligai',
+'protect_change' => 'alanai',
+'protectthispage' => 'Tingoligai iti bolikon',
+'unprotect' => 'Alanai tingolig',
+'unprotectthispage' => 'Alanai tingoligai iti bolikon',
+'newpage' => 'Bolikon wagu',
+'talkpage' => 'Pitimbungakai iti bolikon',
+'talkpagelinktext' => 'Boroson',
+'specialpage' => 'Bolikon suaikowokon',
+'personaltools' => 'Kakamot minsosondiri',
+'postcomment' => 'Bogian wagu',
+'articlepage' => 'Intaai suang bolikon',
+'talk' => 'Pogigibarasan',
+'views' => 'Pongintangan',
+'toolbox' => 'Kabankamot',
+'userpage' => 'Intaai bolikon momomoguno',
+'projectpage' => 'Intaai bolikon purujik',
+'imagepage' => 'Intaai bolikon pail',
+'mediawikipage' => 'Intaai bolikon pason',
+'templatepage' => 'Intaai tompilat bolikon',
+'viewhelppage' => 'Intaai bolikan sokodung',
+'categorypage' => 'Intaai bolikon koinansar',
+'viewtalkpage' => 'Intaai pitimbungakan',
+'otherlanguages' => 'Id woyoboros suai',
+'redirectedfrom' => '(Pinotilombus mantad $1)',
+'redirectpagesub' => 'Bolikon pinotilombus',
+'lastmodifiedat' => 'Bolikon diti komodipait di ontok $1, jaam $2.',
+'viewcount' => 'Nawayaan bolikan diti do {{PLURAL:$1|insan|in-$1}}.',
+'protectedpage' => 'Bolikon tiningoligan',
+'jumpto' => 'Tilombus hilo:',
+'jumptonavigation' => 'popotunud',
+'jumptosearch' => 'ihumo',
+'view-pool-error' => 'Siou tu nakalabai tomod ilo kompiuto mamamalayan.
+Adalaan togumu momomoguno do mingumbal mongintong diti bolikon.
+Andadon po do toruhai pogulu do mangapil sumuang id bolikon diti.
+
+$1',
+'pool-timeout' => 'Nakatalib timpu magandad do mongunsi',
+'pool-queuefull' => 'Noponu nuludan pool',
+'pool-errorunknown' => 'Ukam nosilap',
+
+# 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' => 'Kokomoi {{SITENAME}}',
+'aboutpage' => 'Project:Kokomoi',
+'copyright' => 'Suang di haro do kokomoi $1.',
+'copyrightpage' => '{{ns:project}}:Sanganuwonsoi',
+'currentevents' => 'Poimpanau po',
+'currentevents-url' => 'Project:Poimpanau poh',
+'disclaimers' => 'Pogoliman',
+'disclaimerpage' => 'Project:Pogoliman kosoruan',
+'edithelp' => 'Sokodung mongidit',
+'edithelppage' => 'Help:Mongidit',
+'helppage' => 'Help:Susuang',
+'mainpage' => 'Natad tagayo',
+'mainpage-description' => 'Natad tagayo',
+'policy-url' => 'Project:Kooturan',
+'portal' => 'Potal mamasok',
+'portal-url' => 'Project:Potal doun mamasok',
+'privacy' => 'Kopitimbangan ahaltinan',
+'privacypage' => 'Project:Kopitimbangan ahaltinan',
+
+'badaccess' => 'Nokosilap papasaga',
+'badaccess-group0' => 'Pogoduhan ko do papapanau di pingkarajaon it pinokianu nu.',
+'badaccess-groups' => 'Pingkarajaon di pinokianu nu pinatantu montok momomoguno do {{PLURAL:$2|kotinimungan|iso mantad kotinimungan}}: $1.',
+
+'versionrequired' => 'Momoguno do borsi $1 ModiaWiki',
+'versionrequiredtext' => 'Dinolinan $1 do ModiaWiki pokionuon do mongoguno diti bolikon.
+Intaai [[Special:Version|bolikon dinolinan]].',
+
+'ok' => 'Oboh',
+'retrievedfrom' => 'Naanu mantad "$1"',
+'youhavenewmessages' => 'Kiharo $1 montok dia ($2).',
+'newmessageslink' => 'pason kawawagu',
+'newmessagesdifflink' => 'naalanan kawawagu',
+'youhavenewmessagesmulti' => 'Kiharo pason kawawagu montok dia id $1',
+'editsection' => 'idito',
+'editold' => 'idito',
+'viewsourceold' => 'intaai wowonod',
+'editlink' => 'idito',
+'viewsourcelink' => 'intaai wowonod',
+'editsectionhint' => 'Sikson mongidit: $1',
+'toc' => 'Suang-suang',
+'showtoc' => 'popointalang',
+'hidetoc' => 'popolisok',
+'collapsible-collapse' => 'Doropio',
+'collapsible-expand' => 'Pawalado',
+'thisisdeleted' => 'Intaai toi poguli gompi $1?',
+'viewdeleted' => 'Intaai $1?',
+'restorelink' => '{{PLURAL:$1|iso niditan pinugas|$1 niniditan nopinpugasan}}',
+'feedlinks' => 'Papababu:',
+'feed-invalid' => 'Nokosilap kakamot magaganu papababu.',
+'feed-unavailable' => 'Ingaa sontinimungan papapababu',
+'site-rss-feed' => '"$1" papababu RSS',
+'site-atom-feed' => '"$1" Papababu Atom',
+'page-rss-feed' => '"$1" papababu RSS',
+'page-atom-feed' => '"$1" Papababu Atom',
+'red-link-title' => '$1 (bolikon awu poinsuang)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Bolikon',
+'nstab-user' => 'Bolikon momomoguno',
+'nstab-media' => 'Bolikon modia',
+'nstab-special' => 'Bolikon suaikowokon',
+'nstab-project' => 'Bolikon purujik',
+'nstab-image' => 'Pail',
+'nstab-mediawiki' => 'Pason',
+'nstab-template' => 'Pomitanan',
+'nstab-help' => 'Bolikon monulung',
+'nstab-category' => 'Katogori',
+
+# Main script and global functions
+'nosuchaction' => 'Ingaa nowonsoi nokomoi',
+'nosuchactiontext' => 'Nokosilap winonsoi pointontu dilo URL.
+Nosilapannu manaip ilo URL, toi nakawaya ko di toput nakaansau.
+Kaanto do haro kutu id ponuang-suangon gunoon id {{SITENAME}}.',
+'nosuchspecialpage' => 'Ingaa bolikon pinotontu',
+'nospecialpagetext' => '<strong>Nokopokianu ko diri bolikon pinatantu poinsilap.</strong>
+
+Lis pointopot bobolikon pinatantu okito id [[Special:SpecialPages|{{int:specialpages}}]].',
+
+# General errors
+'error' => 'Nosilopan',
+'databaseerror' => 'Nakasala databing',
+'dberrortext' => 'Nokosilap pogiuludan databing.
+Haro kaanto kutu id posuang-suangon.
+Tohuri pinokianu pogiuludan databing nopo nga:
+<blockquote><tt>$1</tt></blockquote>
+mantad suang momoguno "<tt>$2</tt>".
+Databing nokosilap pinopoguli "<tt>$3: $4</tt>".',
+'dberrortextcl' => 'Haro kinosilapan pinongimuhatan sintak diri databing.
+Pinokianu databing di nokotohuri nopo nga:
+"$1"
+mantad kopomogunoon "$2".
+Nokosilap pinonimbar databing do "$3: $4"',
+'laggedslavemode' => "'''Panansarahan:''' Awu moti kaanto nopinwoguan suang do bolikon diti.",
+'readonly' => 'Nokunsian databing',
+'enterlockreason' => 'Posuango sabab do mongunsi, poobion do gisom soira oukaban kunsi',
+'readonlytext' => 'Databing diti nokunsian mantad monuang-suang om nogi pinsimbanan, koubasan do maso doropion, nga koguli miagal kasari do opongoh po ilo.
+
+Mandur di minongunsi minomisunud do: $1',
+'missing-article' => 'Paildata diti awu nokokito do tik id bolikon diti ih mositi do gunoon, iri pinungaranan do "$1" $2.
+
+Koubasan do ajadi miagal diti tu haro nopingalanan toi ko toput mongoi id bolikon laid nopugas nodi.
+
+Nung opurimanannu do okon ko iti o sabab, korubo ko do bug id posusuangon diti.
+Mangai poruputo iti hilod [[Special:ListUsers/sysop|mantatamong]], miampai nota kokomoi do \'URL\'.',
+'missingarticle-rev' => '(sinimakan#: $1)',
+'missingarticle-diff' => '(Dip: $1, $2)',
+'readonly_lag' => 'Databing noporianan nokokunsi daamot do databing mamalayan kumoduo mongogusa dilo kumoiso',
+'internalerror' => 'Kinosilapan poinsuang',
+'internalerror_info' => 'Kinosilapan poinsuang: $1',
+'fileappenderrorread' => 'Awu abasa "$1" maso pinapaapil.',
+'fileappenderror' => 'Awu kapaapil "$1" mongoi "$2".',
+'filecopyerror' => 'Awu kadalin pail "$1" gisom "$2".',
+'filerenameerror' => 'Awu nopingaranan pail "$1" mongoi "$2".',
+'filedeleteerror' => 'Awu nopugas pail "$1".',
+'directorycreateerror' => 'Awu kowonsoi pailtuduk "$1".',
+'filenotfound' => 'Awu oihum pail "$1"',
+'fileexistserror' => 'Awu kasaga do monurat pail "$1": kipail noh',
+'unexpected' => 'Awu nopoimanan gatang: "$1"="$2".',
+'formerror' => 'Silap: awu kapaatod pom',
+'badarticleerror' => 'Awu milo momonsoi dino id bolikon diti.',
+'cannotdelete' => 'Iti bolikon toi pail "$1" awu milo pugason.
+Nopugas no kaanto do tulun suai.',
+'badtitle' => 'Sosomu tuluhon',
+'badtitletext' => 'Tuluhon bobolikon di pinokianu nopo nga nokosilap, aiso, nakasala pinioputan boros toi pinioputan tuluhon wiki.
+Haro kaanto sokukuri do iso pimato it awu milo gunoon id pongkotuluhon.',
+'perfcached' => 'Data sumusuhut namadangkob om okon ko noinwoguan.',
+'perfcachedts' => 'Data sumusuhut namadangkob, om nopinwoguan ontok $1.',
+'querypage-no-updates' => 'Pinisok ponginwoguan id bolikon diti.
+Awu nodi posikapon do popointalang iri data kawawagu.',
+'wrong_wfQuery_params' => 'Nokosilap tangaparamito mongoi wfQuery()<br />
+Kopomogunoon: $1<br />
+Pongimuhatan: $2',
+'viewsource' => 'Intaai wowonod',
+'viewsourcefor' => 'montok $1',
+'actionthrottled' => 'Momilos',
+'actionthrottledtext' => 'Pinapanau lumawan-singkarap, Nantaban ko do mingguli momonsoi miagal dilo id timpu do osikap, om nagampot nu noh gisom diti.
+Umbalan kawagu do katalib poh pipiro minit.',
+'protectedpagetext' => 'Bolikon diti notingoligan tu mangantob do pingiditan.',
+'viewsourcetext' => 'Pasagaon ko do mongintong om mangadalin wowonod diti bolikon:',
+'protectedinterface' => 'Bolikon diti kiharo sinuratan pongurasan montok posusuang-suangon, om notingoligan do momiara mantad pomirumbakan.',
+'editinginterface' => "'''Panansarahan :''' Mongidit ko diti bolikon di gunoon do poposodia diri sinuratan montok posuang-suangon.
+Sinuratan id bolikon diti kopogoit do pongitanan kourasan momoguno montok momomoguno wokon.
+Montok pangawaliwboros, pomusarahai no do mongoguno [//translatewiki.net/wiki/Main_Page?setlang=dtp translatewiki.net], purujik popodusun ModiaWiki.",
+'sqlhidden' => '(Pongimuhatan SQL poinlisok)',
+'cascadeprotected' => 'Notingoligan bolikon diti mantad do pingiditan tu nokosuang id bolikon, {{PLURAL:$1 | do | it}} pinilian tingolig "kasading" poinsikit:
+$2',
+'namespaceprotected' => "Ingaa kasagaannu do mongidit bobolikon it kinoingaran '''$1'''.",
+'customcssprotected' => 'Ingaa kasagaannu do mongidit diti bolikon CSS, tu kisuang ponguludan minsosondiri momoguno.',
+'ns-specialprotected' => 'Bolikon pinotontu awu milo iditon.',
+'titleprotected' => 'Notingoligan tuluhon diti mantad wonsoyon do [[User:$1|$1]].
+Sasabab no do "\'\'$2\'\'".',
+
+# Virus scanner
+'virus-badscanner' => "Araat kinooturon: Awu otutunan pongkowili giuk: ''$1''",
+'virus-scanfailed' => 'nolibai pongkowili (code $1)',
+'virus-unknownscanner' => 'tantobgiuk awu otutunan:',
+
+# Login and logout pages
+'logouttext' => "'''Baino nakalabus log ko noh.'''
+
+Milo ko do monilombus mongoguno {{SITENAME}} poinlisok, toi [[Special:UserLogin|sumuang log koh kawagu]] miagal ngaran di tiinu toi mongoguno ngaran suai.
+Birio do kipipiro bolikon popokito do maso poinsuang log koh poh gisom no do opugas nu dangkob do pogigihumnu.",
+'welcomecreation' => '== Kopiwosian, $1! ==
+Nowonsoi no takaunnu.
+Soroho no do mongolon [[Special:Preferences|{{SITENAME}} komoisoonnu]].',
+'yourname' => 'Ngarandait:',
+'yourpassword' => 'Kaatalib:',
+'yourpasswordagain' => 'Mintaipo kaatalib:',
+'remembermypassword' => 'Soroho ot loginku id popogihuman diti (gisom solinaid do $1 {{PLURAL:$1|tadau|madau}})',
+'securelogin-stick-https' => 'Toririmo poinhubung hilo HTTPS soira kosuang log',
+'yourdomainname' => 'Damin nu:',
+'externaldberror' => 'Haro nokosilap pongintutunan bingdata toi awu ko pasagaon monginwagu takaun poinsoliwannu.',
+'login' => 'Sumuang log',
+'nav-login-createaccount' => 'Sumuang log / pomonsoi do takaun',
+'loginprompt' => 'Suhuonko do poposikit pongongonsok do sumuang log id {{SITENAME}}.',
+'userlogin' => 'Sumuang log / pomonsoi do takaun',
+'userloginnocreate' => 'Sumuang log',
+'logout' => 'Lumabus log',
+'userlogout' => 'Lumabus log',
+'notloggedin' => 'Amu nokolog sumuang',
+'nologin' => 'Ingaa akaun? $1',
+'nologinlink' => 'Pomonsoi do akaun',
+'createaccount' => 'Pomonsoi do takaun',
+'gotaccount' => 'Kitakaun? $1',
+'gotaccountlink' => 'Sumuang log',
+'userlogin-resetlink' => 'Nolihuan ahal loginnu?',
+'createaccountmail' => 'Maya surat-i',
+'createaccountreason' => 'Sabab:',
+'badretype' => 'Kaatalib pinosuang awu kopisangai.',
+'userexists' => 'Ngaranmoguno pinosuang noguno no.
+Maai alanai do suai ngaran.',
+'loginerror' => 'Nokosilap sumuang log',
+'createaccounterror' => 'Awu kowonsoi takaun: $1',
+'nocookiesnew' => 'Nowonsoi no takaun momoguno, nga awu ko poinsuang log.
+{{SITENAME}} mongoguno kukis do posuang log.
+Pointingkod kukisnu.
+Papanaho ilo, om sumuang log momoguno do ngaranmoguno om kaatalib wagunu.',
+'nocookieslogin' => '{{SITENAME}} mongoguno kukis do sumuang log.
+Pointingkod kukis kompiutonu.
+Mangai papanaho ilo om umbalan kawagu.',
+'nocookiesfornew' => 'Awu po nowonsoi takaun momoguno, tu awu otunudan wowonod dau.
+Posikito no pogogonsoknu, gumulisuang id bolikon diti om umbalan kawagu.',
+'noname' => 'Awu nu pinosuang ngaran momomoguno di pasagaon.',
+'loginsuccesstitle' => 'Nokosuang log.',
+'loginsuccess' => "'''Awu kopo nokosuang log id {{SITENAME}} sobaagi do \"\$1\".'''",
+'nosuchuser' => 'Ingaa momoguno pinungaranan "$1".
+Ngaran momoguno nopo nga kowoyo pimato.
+Intaai ijaannu, toi [[Special:UserLogin/signup|pomonsoi do takaun kawawagu]].',
+'nosuchusershort' => 'Ingaa momoguno kingaran "$1".
+Intaai ijaannu.',
+'nouserspecified' => 'Maai posuango ngaran momoguno.',
+'login-userblocked' => 'Nantaban momoguno diti. Oduhan do sumuang log.',
+'wrongpassword' => 'Nokosilap kaatalib pinosuang.
+Umbalan kawagu kio.',
+'wrongpasswordempty' => 'Ingaa kapaas pinosuang.
+Umbalai gia kaagu.',
+'passwordtooshort' => 'Sokukuri do kapaas kiharo {{PLURAL:$1|1 pimato|$1 tongopimato}}.',
+'password-name-match' => 'Kapaasnu mositi do pisuaion mantad ko ngaranmogunonu.',
+'password-login-forbidden' => 'Pogoduhan pomogunaan ngaran momoguno om kaatalib diti.',
+'mailmypassword' => 'Ponurat-i kaatalib wagu',
+'passwordremindertitle' => 'Kaatalib wagu daamot nopo montok {{SITENAME}}',
+'passwordremindertext' => 'Sosongulun (ika nogi matuu, mantad kinoyonon IP $1) minokianu
+kaatalib montok {{SITENAME}} ($4). Kaatalib daamot montok momoguno
+"$2" nowonsoi om noguno hilo "$3". Nung iti nopo komoyonnu, ongoi no suang log om pilio kaatalib wagu do baino. Kaatalib daamot diti nopo nga opupusan solinaid {{PLURAL:$5|sangadau|$5 madau}}.
+
+Nung sosongulun iri minokianu do kaatalib diti, toi osorou nu nodi kaatalibnu, om awu nu alanan iri, milo ko do mogolim diti pason om monilombus mongoguno di kaatalib laidnu.',
+'noemail' => 'Ingaa poinsurat paatadan surat-i montok momoguno "$1".',
+'noemailcreate' => 'Posuango porikatan surat-i di otopot',
+'passwordsent' => 'Nakaatod kaatalib wagu hilo id porikatan surat-i poinrijisto montok "$1".
+Gumuli sumuang log do aramit nu noh iri kio.',
+'blocked-mailpassword' => 'Nantaban kinoyonon IP do karaja mongidit, om nantaban mongoguno kangkaraja manampasi kaatalib do magalai salaguno.',
+'eauthentsent' => 'Kopogiratan surat-i nakaatod noh hilo kinoiyonon surat-i nokomoi.
+Pogulu do kaatod suai surat-i mongoi id takaun dilo, tonudo noh karalan-ralano poinsuang id surat-i, do mongogirot do dia kopio dilo takaun.',
+'throttled-mailpassword' => 'Nakaatod no iso panansarahan do kaatalib , solinaid {{PLURAL:$1|jam|$1 jaam}}.
+Montok magalai do salaguno, iso no kaatalib maan pootodo monikid {{PLURAL:$1|jam|$1 jaam}}.',
+'mailerror' => 'Nakasala paatod surat: $1',
+'acct_creation_throttle_hit' => 'Tombului id wiki monomoguno do kinoyonon IPnu om nokopomonsoi {{PLURAL:$1|1 takaun|$1 tangakaun}} di kawawagu, it pasagaan poinggumu do maso diti.
+Kootuson nopo di, tongotombului mongoguno kinoyonon IP diti awu poh kopomonsoi do takaun do daamot diti.',
+'emailauthenticated' => 'Nogiratan no surat-i nu ontok $2 jaam ko-$3.',
+'emailnotauthenticated' => 'Awu poh nogiratan ot kinoyonon surat-i nu.
+Ingaa sinuratan-i pootodon montok nonggo-nonggo ilo komoyon sumusuhut.',
+'noemailprefs' => 'Patatapo no kinoyonon surat-i id komoisoonnu mooi do poposikit kowo-woyo diti',
+'emailconfirmlink' => 'Pogiroto no surat-i nu.',
+'invalidemailaddress' => 'Awu aramit kinoyonon surat-i tu nokosilap nuludan.
+Maai posuango nuludan tosonong do kinoyonon toi pologoson do ingaa suang dilo posuangan.',
+'accountcreated' => 'Nowonsoi takaun',
+'accountcreatedtext' => 'Momoguno takaun montok $1 nowonsoi noh.',
+'createaccount-title' => 'Winonsoi takaun montok {{SITENAME}}',
+'createaccount-text' => 'Sosongolun minomonsoi takaun montok kinoyonon surat-i nu id {{SITENAME}} ($4) pinungaranan "$2", miampai kaatalib "$3".
+Baino alapon ko do sumuang log om mongolon diti kaatalibnu.
+
+Olingan nopo iti pason, nung nokosilap nowonsoi iti takaun.',
+'usernamehasherror' => 'Ngaranmoguno awu milo do kipimato hansar',
+'login-throttled' => 'Asaru ko no do minsingumbal sumuang log.
+Andado poh do toruhai pogulu do minsingumbal kawagu.',
+'login-abort-generic' => 'Awu ko nokosuang log - Binatal',
+'loginlanguagelabel' => 'Woyoboros: $1',
+'suspicious-userlogout' => 'Awu naramit lumabus lognu tu pinaatod mantad pogigihum norumbak toi caching olon.',
+
+# E-mail sending
+'php-mail-error-unknown' => 'Awu nointutunan kinosilapan id don surat PHP () function',
+
+# Change password dialog
+'resetpass' => 'Alanai kaatalib',
+'resetpass_announce' => 'Poinsuang log ko momoguno do kaatalib daamot it pinosurat-i.
+Momongoh do sinuang log, mositi do powonsoionnu kaatalib wagu do hiti.:',
+'resetpass_header' => 'Alanai kaatalib takaun',
+'oldpassword' => 'Kaatalib laid:',
+'newpassword' => 'Kaatalib wagu:',
+'retypenew' => 'Mitaipo kaatalib wagu:',
+'resetpass_submit' => 'Posoino kaatalib om sumuang log',
+'resetpass_success' => 'Naalanan noh kaatalibnu!
+Baino sumuang log...',
+'resetpass_forbidden' => 'Awu milo alanan kaatalib',
+'resetpass-no-info' => 'Mositi sumuang log ko do mongoguno monilombus id bolikon diti.',
+'resetpass-submit-loggedin' => 'Alanai kaatalib',
+'resetpass-submit-cancel' => 'Kinsilo',
+'resetpass-wrong-oldpass' => 'Nokosilap kaatalib daamot toi iy maso gunoon.
+Naalanannu noh kaatalib toi nokopokianu koh no do kaatalib daamot.',
+'resetpass-temp-password' => 'Kaatalib daamot:',
+
+# Special:PasswordReset
+'passwordreset-username' => 'Ngarandait:',
+'passwordreset-emailtitle' => 'Kointalangan takaun id {{SITENAME}}',
+
+# Edit page toolbar
+'bold_sample' => 'Polombono tik',
+'bold_tip' => 'Polombono tik',
+'italic_sample' => 'Tik lingging',
+'italic_tip' => 'Tik lingging',
+'link_sample' => 'Noputan tuluhon',
+'link_tip' => 'Noputan poinsuang',
+'extlink_sample' => 'http://www.example.com tuluon do noput',
+'extlink_tip' => 'Noputan poinlabus (soroho no do potitimpuun http://)',
+'headline_sample' => 'Tik potuluhon',
+'headline_tip' => 'Nuludan-tulu loting ko-2',
+'nowiki_sample' => 'Posuango tik awu-nokoulud do hiti',
+'nowiki_tip' => 'Pologoso ponguludan wiki',
+'image_tip' => 'Potopilo pail',
+'media_tip' => 'Toput do pail',
+'sig_tip' => 'Tinonduktunturunu miampai sinokot-timpu',
+'hr_tip' => 'Puralan pointibabar (inta-taan do mongoguno)',
+
+# Edit pages
+'summary' => 'Koinibaan:',
+'subject' => 'Ahal/tuluhon',
+'minoredit' => 'Iti nopo nga niditan tokoto',
+'watchthis' => 'Piintong bolikon diti',
+'savearticle' => 'Umoligai bolikon',
+'preview' => 'Kokitanan',
+'showpreview' => 'Pokitono pongintangan',
+'showlivepreview' => 'Kokitanan monilombus',
+'showdiff' => 'Pokitono nokowolion',
+'anoneditwarning' => "'''Woning:''' Awu ko poinlog sumuang.
+Nantadon IPnu maan podolino id susuyan bolikon nidit do hiti.",
+'anonpreviewwarning' => "''Awu ko poinsuang log. Popogompi koponurat do kinoyonon IPnu id bobolikon susuyan niditan.''",
+'missingsummary' => "'''Panansarahan:''' Awu nu nosuratan hilo id koinibaan niditan.
+Nung todosonnu \"{{int:savearticle}}\" kawagu, kogompi niditannu nga ingaa koinibaan.",
+'missingcommenttext' => 'Mangai gia posuango pason id siriba.',
+'missingcommentheader' => "'''Panansarahan:''' Awu nu nokosuang ahal/tuluhon montok pason diti.
+Nung todosonnu \"{{int:savearticle}}\" kawagu, kogompi niditannu nga ingaa aha//tuluhon.",
+'summary-preview' => 'Pongitanan koinibaan:',
+'subject-preview' => 'Pongitanan ahal/tuluhon:',
+'blockedtitle' => 'Nantaban momoguno',
+'blockedtext' => "'''Ngaran momogunonu toi kinoyonon IP nantaban.'''
+
+Nantaban di $1.
+Sabab pinatahak ''$2''.
+
+* Tinimpuun nantaban: $8
+* Olimpupusan nantaban: $6
+* Koinggisaman tantob: $7
+
+Milo ko do tumurubung $1 toi [[{{MediaWiki:Grouppage-sysop}}|mandur]] suai do miboros kokomoi diti tantob.
+Awu ko milo do mongoguno kakamot 'ponurat-i montok momoguno diti' nung ingaa kinoyonon surat-i pointantu id [[Special:Preferences|takaunnu]] om awu ko nantaban do momoguno dilo.
+Kinoyonon IPnu nopo nga $3, on ID nantaban nopo nga #$5.
+Alansan do potonudon oinsanan kointalangan id sawat montok nunu-nunu ponguhatannu.",
+'autoblockedtext' => "Kinoyonon IPnu noporianan nantaban tu gunoon do momomoguno suai, it nantaban di $1.
+Sabab pinatahak diti:
+
+:''$2''
+
+
+* Tinimpuun nantaban: $8
+* Olimpupusan nantaban: $6
+* Koinggisaman tantob: $7
+
+Milo ko do tumurubung $1 toi [[{{MediaWiki:Grouppage-sysop}}|mandur]] suai do miboros kokomoi diti tantob.
+
+Awu ko milo do mongoguno kakamot 'ponurat-i montok momoguno diti' nung ingaa kinoyonon surat-i pointantu id [[Special:Preferences|takaunnu]] om awu ko nantaban do momoguno dilo.
+
+Kinoyonon IPnu nopo nga $3, on ID nantaban nopo nga #$5.
+Alansan do potonudon oinsanan kointalangan id sawat montok nunu-nunu ponguhatannu.",
+'blockednoreason' => 'ingaa pinatahak sabab',
+'blockedoriginalsource' => "Tadon do '''$1''' pokitonon id siriba:",
+'blockededitsource' => "Tik do '''niditannu''' gisom '''$1''' pokitonon id siriba:",
+'whitelistedittitle' => 'Sumuang log no do mongidit',
+'whitelistedittext' => 'Mositi do $1 do mongidit bobolikon.',
+'confirmedittext' => 'Potontuo no do nokogirotnu no kinoyonon surat-i pogulu mongidit do bobolikon.
+Maai posoino om pogiroto kinoiyonon surat-i hilo id [[Special:Preferences|komoisaan momomogunonu]].',
+'nosuchsectiontitle' => 'Awu okito boogian',
+'nosuchsectiontext' => 'Minumbal ko do mongidit do boogian di inggino.
+Nokowolih toi nopugas kaanto iti maso di intaannu iti bolikon.',
+'loginreqtitle' => 'Momoguno sumuang log',
+'loginreqlink' => 'sumuang log',
+'loginreqpagetext' => 'Mositi ko do ki$1 do mongintong bobolikon suai.',
+'accmailtitle' => 'Nakaatod kaatalib.',
+'accmailtext' => "Kaatalib somporimonsoi montok [[User talk:$1|$1]] nakaatod no hilo $2.
+
+Kaatalib montok akaun wagu milo do alanan hilo id bolikon ''[[Special:ChangePassword|pangalanan kaatalib]]'' soira do kosuang log.",
+'newarticle' => '(Wagu)',
+'newarticletext' => "Nakatanudko di noputan kumaa di bolikon di awu po nokosuang.
+Momonsoi ko nopo do bolikon diti, timpuun do manaip id kutak siriba (intaai [[{{MediaWiki:Helppage}}|bolikon ponokodung]] montok lobi gumu kointalangan).
+Nung nakaansau ko do hiti, tonsoko ot butang '''gumuli''' id pogigihumnu.",
+'noarticletext' => 'Maso po do ingaa tik id bolikon diti.
+Milo ko nogi do [[Special:Search/{{PAGENAME}}|mogihum do tuluhon bolikon diti]] id bolikon suai,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mogihum kokomoi log-log],
+toi [{{fullurl:{{FULLPAGENAME}}|action=edit}} mongidit bolikon diti]</span>.',
+'noarticletext-nopermission' => 'Maso po do ingaa tik id bolikon diti.
+Milo ko nogi do [[Special:Search/{{PAGENAME}}|mogihum do tuluhon bolikon diti]] id bolikon suai, toi
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mogihum kokomoi log-log] </span>.',
+'userpage-userdoesnotexist' => 'Akaun momomoguno "<nowiki>$1</nowiki>" awu nokorijisto.
+Mangai intangai nung mumang ko pomonsoi/mongidit do bolikon diti.',
+'userpage-userdoesnotexist-view' => 'Akaun momomoguno "$1" awu po nokorijisto.',
+'blocked-notice-logextract' => 'Maso do nantaban momomoguno diti.
+Riporon id siriba kokomoi nantaban di tohuri no:',
+'clearyourcache' => "'''Soroho:''' Opongoh do pogompi, mangai pawayao dangkob pogigihumnu do mongintong di nopingalanan.
+'''Mozilla / Firefox / Safari:''' todoso ''Shift'' maso do mongotik ''Reload'', toi piandadon mononsok ''Ctrl-F5'' toi ''Ctrl-R'' (''Command-R'' id Mac);
+'''Konqueror:''' kotiko ''Reload'' toi tonsoko ''F5'';
+'''Opera:''' imuhawai id dangkob ''Tools → Preferences'';
+'''Internet Explorer:''' todoso ''Ctrl'' maso do mongotik ''Refresh,'' toi tonsoko ''Ctrl-F5''.",
+'usercssyoucanpreview' => "'''Tutuduk:''' Momoguno do \"{{int:showpreview}}\" butang do mongumbal CSS kawawagunu pogulu do popogompi.",
+'userjsyoucanpreview' => "'''Tutuduk:''' Momoguno do \"{{int:showpreview}}\" butang do mongumbal JawaSikrip kawawagunu pogulu do popogompi.",
+'usercsspreview' => "'''Soroho no do mongintong kono tomod diti CSS momogunonu.'''
+'''Awu po nokogompi iti!'''",
+'userjspreview' => "'''Soroho no do mongintong kono tomod diti JawaSikrip momogunonu.'''
+'''Awu po nokogompi iti!'''",
+'sitecsspreview' => "'''Soroho no do mongintong kono tomod diti CSS.'''
+'''Awu po nokogompi iti!'''",
+'sitejspreview' => "'''Soroho no do mongintong kono tomod diti kod JawaSikrip.'''
+'''Awu po nokogompi iti!'''",
+'userinvalidcssjstitle' => "'''Pomisunudan:''' Ingaa kulit do \"\$1\".
+Bobolikon pinudali .css om .js momoguno do pimato tokoro, miagal pomitanan {{ns:user}}:Foo/vector.css sobaagi do ponuli di {{ns:user}}:Foo/Vector.css.",
+'updated' => '(Noinwoguan)',
+'note' => "'''Pasoniba:'''",
+'previewnote' => "'''Soroho no do iti nopo nga pongintangan no toomod.'''
+Awu po moti nokogompi iri nopingalanannu!",
+'previewconflict' => 'Miagal no diti pongitanan do tik id boogian kawas kutak pongiditan tik nung pilionnu do popogompi.',
+'session_fail_preview' => "'''Siou! Awu di dahai opongoh niditannu gisom no do natagakan data.'''
+Mangai umbalai kawagu.
+Nung maso do awu milo, umbalai [[Special:UserLogout|lumabus log]] om sumuang log kawagu.",
+'session_fail_preview_html' => "'''Siou! Awu di dahai opongoh niditannu gisom no do natagakan data.'''
+
+''Sasabab no do iti {{SITENAME}} haro HTML mata di poimpasi, pongitanan diti kipoinlisok magalai do gurumpuanan JawaSikrip''
+
+'''Nung niditan diti nopo nga otopot, maai umbalai kawagu.'''
+Nung maso do awu milo, umbalai [[Special:UserLogout|lumabus log]] om sumuang log kawagu.",
+'edit_form_incomplete' => "'''Pipiro boogian poom niditan awu nokorikot hilo id monunurung, gulio momiri di niditannu tondum ogoris om umbalan kawagu.'''",
+'editing' => 'Mongidit $1',
+'editingsection' => 'Mongidit $1 (boogian)',
+'editingcomment' => 'Mongidit $1 (boogian wagu)',
+'editconflict' => 'Niditan mikutuk: $1',
+'yourtext' => 'Tiiknu',
+'storedversion' => 'Popogompi sinimakan',
+'nonunicodebrowser' => "'''Pononsunudan: Pogigihumnu okon ko unikod komplaion.'''
+Iso panalasaian id kinoyonon it papasaga dia do otingolig mongidit bobolikon: pimato okon-ASCII maan pokitono id kutak mongidit sobaagi do tongokod pihopodomonom.",
+'editingold' => "'''Pononsunudan: Mongidit ko di sinimakan nokodori do bolikon diti.'''
+Nung pogompion nu iti, nunu nopo it nopingalanan mantad po do sinimakan nga atagak.",
+'yourdiff' => 'Pisuaian',
+'copyrightwarning' => "Soroho no do oinsanan toluod kumaa {{SITENAME}} nopo nga polobuson id suang $2 (intangai kointalangan $1).
+Nung awu ko mumang di sinuratannu do pingiditan om popintikidon kumaa ginumuan, kada nogi pootodo do hiti.<br />
+Mangakaun ko nogi do sinuratannu iti mopori, toi dinalin iri mantad domin ginumuan toi miagal di poimbibas ot pinogonuan.
+'''Kada paatod kinaraja di kisanganuwonsoi do aiso kasagaan!'''",
+'copyrightwarning2' => "Soroho no do oinsanan toluod kumaa {{SITENAME}} milo iditon, simbanan, om iduon do mononoluod suai.
+Nung awu ko mumang di sinuratannu do pingiditan kada nogi pootodo do hiti.<br />
+Mangakaun ko nogi do sinuratannu iti mopori, toi dinalin iri mantad domin ginumuan toi miagal di poimbibas ot pinogonuan. (intaai $1 montok kointalangan).
+'''Kada paatod kinaraja di kisanganuwonsoi do aiso kasagaan!'''",
+'templatesused' => '{{PLURAL:$1|Pongomitan|Pongo-ngomintan}} gunoon id bolikon diti:',
+'templatesusedpreview' => '{{PLURAL:$1|Pongomitan|Pongo-ngomintan}} gunoon id pongitanan diti:',
+'templatesusedsection' => '{{PLURAL:$1|Pongomitan|Pongo-ngomintan}} gunoon id boogian diti:',
+'template-protected' => '(tingoligai)',
+'template-semiprotected' => '(noumoligan)',
+'hiddencategories' => 'Bolikon diti songkoruhang do {{PLURAL:$1|1 katogori poinlisok|$1 kakatogori poinlisok}}:',
+'nocreatetitle' => 'Momonsoi bolikon wagu pinatagal',
+'nocreatetext' => '{{SITENAME}} tinagal kasagaan momonsoi bobolikon kawawagu.
+Milo ko do gumuli om mongidit di bolikon poinsuang, toi ko [[Special:UserLogin|sumuang log toi momonsoi do takaun.]].',
+'nocreate-loggedin' => 'Ingaa kasagaannu do momonsoi bobolikon wagu.',
+'sectioneditnotsupported-title' => 'Boogian mongidit awu nosokodung',
+'permissionserrors' => 'Nokosilap pinapasaga',
+'permissionserrorstext' => 'Awu ko pasagaon do momonsoi miagal dilo, tu {{PLURAL:$1|sabab|sasabab no}} do:',
+'permissionserrorstext-withaction' => 'Awu ko pasagaon do $2, {{PLURAL:$1|sabab|sasabab no}} do:',
+'moveddeleted-notice' => 'Nopugas no bolikon diti. Pimomugasan om log pinowolihon do bolikon pinosodia id siriba montok riporon.',
+'log-fulllog' => 'Intaai log poimponu',
+'edit-hook-aborted' => 'Niditan pinaratu do kakait.
+Ingaa kointalangan diri.',
+'edit-gone-missing' => 'Awu noinwoguan bolikon.
+Miagal do nopugas iti.',
+'edit-conflict' => 'Niditan mikutuk.',
+'edit-no-change' => 'Pinologos niditannu, tu ingaa nopingalanan id tik.',
+'edit-already-exists' => 'Awu owonsoi bolikon kawawagu.
+Haro no do pinsuang.',
+
+# Parser/template warnings
+'expensive-parserfunction-warning' => "'''Pomisunudan:''' Kisuang bolikon diti do nosontob ogumu kogunoon lolohou parsor.
+
+It should have less than $2 {{PLURAL:$2|call|calls}}, there {{PLURAL:$1|is now $1 call|are now $1 calls}}.",
+'post-expand-template-inclusion-warning' => "'''Panansarahan:''' Pomitanan pinohompit kalabai tukuran.
+Pipiro pomitanan polobuson.",
+'post-expand-template-inclusion-category' => 'Bobolikon kohompit pomitanan kolabai tukuran',
+
+# History pages
+'viewpagelogs' => 'Intaai tongolog do bolikon diti',
+'nohistory' => 'Ingaa susuyan niditan id bolikon diti.',
+'currentrev' => 'Sinimakan poinwagu',
+'currentrev-asof' => 'Sinimakan tohuri ontok di $1',
+'revisionasof' => 'Nosimak no di ontok',
+'revision-info' => 'Sinimakan di $2 ontok $1',
+'previousrevision' => '↠Sinimakan nakalaid',
+'nextrevision' => 'Sinimakan kawawagu →',
+'currentrevisionlink' => 'Sinimakan poinwagu',
+'cur' => 'kur',
+'next' => 'sumuhut',
+'last' => 'pogulu',
+'page_first' => 'koiso',
+'page_last' => 'tohuri',
+'histlegend' => "Diff selection: tandaai kutak rodiu mantad sinimakan do popibanding on tonsoko sumuang toi bamban id siriba.<br />
+Lijon: '''({{int:cur}})''' = kipisuaian borsi kawawagu, '''({{int:last}})''' = kopisuaian di sinimakan nokopogulu, '''{{int:minoreditletter}}''' = niditan tokoto.",
+'history-fieldset-title' => 'Pingintaai susuyan',
+'history-show-deleted' => 'Nopugas no poh',
+'histfirst' => 'Nokododori',
+'histlast' => 'Poinwawagu',
+'historysize' => '({{PLURAL:$1|1 bait|$1 babait}})',
+'historyempty' => '(ingaa)',
+
+# Revision feed
+'history-feed-title' => 'Susuyan sinimakan',
+'history-feed-description' => 'Susuyan sinimakan do bolikon diti id wiki',
+'history-feed-item-nocomment' => '$1 ontok $3 jaam $4',
+'history-feed-empty' => 'Bolikon di pinokianunu awu po poinsuang.
+Nopugas no kaanto mantad id wiki, toi naalanan no ngaran.
+Umbalai [[Special:Search|mogihum id wiki]] ot bolikon di kikohompiton.',
+
+# Revision deletion
+'rev-deleted-comment' => '(nidu koinibaan niditan)',
+'rev-deleted-user' => '(nidu momomoguno)',
+'rev-deleted-event' => '(nidu log kinaraja)',
+'rev-deleted-user-contribs' => '[nidu momomoguno toi alamat IP - poilisok do minongidit di bolikon pinotoluod]',
+'rev-deleted-text-permission' => "Sinimakan bolikon diti '''nopugas'''.
+Kointalangan oihum id [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pinugas].",
+'rev-deleted-text-unhide' => "Sinimakan bolikon diti '''nopugas'''.
+Kointalangan oihum id [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pinugas].
+Sobaagi do mandur, milo ko nogi do [$1 mongintong sinimakan diti] nung orohian ko.",
+'rev-suppressed-text-unhide' => "Sinimakan bolikon diti '''nalapahan'''.
+Kointalangan oihum id [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log nalapahan].
+Sobaagi do mandur, milo ko nogi do [$1 mongintong sinimakan diti] nung orohian ko.",
+'rev-deleted-text-view' => "Sinimakan bolikon diti '''nopugas'''.
+Sobaagi do mongungulud milo ko do montong diti; kointalangan oihum id [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pinugas].",
+'rev-suppressed-text-view' => "Sinimakan bolikon diti '''nalapahan'''.
+Sobaagi do mongungulud milo ko do montong diti; kointalangan oihum id [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log nalapahan].",
+'rev-deleted-no-diff' => "Awu nu okito pisuaian diti tu iso mantad sinimakan diti '''nopugas'''.
+Kointalangan oihum id [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pinugas].",
+'rev-deleted-unhide-diff' => "Iso mantad sinimakan bolikon diti '''nopugas'''.
+Kointalangan oihum id [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pinugas].
+Sobaagi do mandur, milo ko nogi do [$1 mongintong sinimakan diti] nung orohian ko.",
+'rev-suppressed-unhide-diff' => "Iso mantad sinimakan pisuaian diti '''nalapahan'''.
+Kointalangan oihum id [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log nalapahan].
+Sobaagi do mandur, milo ko nogi do [$1 mongintong sinimakan diti] nung orohian ko.",
+'rev-deleted-diff-view' => "Sinimakan pisuaian diti '''nopugas'''.
+Sobaagi do mongungulud milo ko do mongintong pisuaian diti; kointalangan oihum id [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} log pinugas].",
+'rev-suppressed-diff-view' => "Iso mantad sinimakan pisuaian diti '''nalapahan'''.
+Sobaagi do mongungulud milo ko do montong diti; kointalangan oihum id [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} log nalapahan].",
+'rev-delundel' => 'pokitono/lisoko',
+'rev-showdeleted' => 'popointalang',
+'revdelete-no-file' => 'Pail pinotontu awu poinsuang.',
+'revdelete-show-file-confirm' => 'Mongintong ko di sinimakan nopugas do pail "<nowiki>$1</nowiki>" mantad $2 ontok $3?',
+'revdelete-show-file-submit' => 'O',
+'revdelete-selected' => "'''{{PLURAL:$2|Sinimakan pinili|Sinimakan nopili}} id [[:$1]]:'''",
+'revdelete-legend' => 'Uludo pogigihum pangangantob',
+'revdelete-hide-text' => 'Polisoko sinimakan tiik',
+'revdelete-hide-image' => 'Polisoko suang pail',
+'revdelete-hide-name' => 'Lisoko nimaan om ontokon',
+'revdelete-hide-comment' => 'Lisoko koinibaan niditan',
+'revdelete-hide-user' => 'Lisoko ngaranmoguno mongingidit/kinoyonon IP',
+'revdelete-hide-restricted' => 'Polosodo data mantad mandur om nogi wokon',
+'revdelete-radio-same' => '(kada alanai)',
+'revdelete-radio-set' => 'O',
+'revdelete-radio-unset' => 'Awu',
+'revdelete-suppress' => 'Polosodo data mantad mandur om nogi wokon',
+'revdelete-unsuppress' => 'Iduon pangantaban om pogogompi sinimakan',
+'revdelete-log' => 'Sabab:',
+'revdelete-submit' => 'Pokionuo pinili {{PLURAL:$1|sinimakan|tongosinimakan}}',
+'revdelete-logentry' => 'mongolon sinimakan kokitanan do "[[$1]]"',
+'logdelete-logentry' => 'mongolon tangamaan kokitanan do "[[$1]]"',
+'revdelete-success' => "'''Kokitanan sinimakan nopinwoguan.'''",
+'revdelete-failure' => "'''Kokitanan sinimakan awu milo inwoguan:'''
+$1",
+'logdelete-success' => "'''Nakasain kokitanan log.'''",
+'logdelete-failure' => "'''Kokitanan log di awu milo posoinon:'''
+$1",
+'revdel-restore' => 'alanai pongitaanan',
+'revdel-restore-deleted' => 'sinimakan nopugas',
+'revdel-restore-visible' => 'sinimakan tokito',
+'pagehist' => 'Susuyan bolikon',
+'deletedhist' => 'Susuyan nopugas',
+'revdelete-content' => 'suang',
+'revdelete-summary' => 'idito koinibaan',
+'revdelete-uname' => 'ngarandait',
+'revdelete-restricted' => 'pinokogos pogoduhan montok momuruan',
+'revdelete-unrestricted' => 'pinoidu pogoduhan montok momuruan',
+'revdelete-hid' => 'lisoko $1',
+'revdelete-unhid' => 'pokitono $1',
+'revdelete-log-message' => '$1 montok $2 {{PLURAL:$2|sinimakan|sinimakan}}',
+'logdelete-log-message' => '$1 montok $2 {{PLURAL:$2|maan|tangamaan}}',
+'revdelete-hide-current' => 'Nokosilap popolisok kakamot ditadau $2, $1: iti no sinimakan wagu.
+Awu milo polisokon.',
+'revdelete-show-no-access' => 'Nokosilap popokito kakamot ditadau $2, $1: natandaan iti do "pogoduhan".
+Ingaa kasagaannu do maya dilo.',
+'revdelete-modify-no-access' => 'Nokosilap monimban kakamot ditadau $2, $1: natandaan iti do "pogoduhan".
+Ingaa kasagaannu do maya dilo.',
+'revdelete-modify-missing' => 'Nokosilap monimban kakamot ID $1: natagak mantad databing!',
+'revdelete-no-change' => "'''Pononsunudan:''' kakamot ditadau $2, $1 nopokionuan no do nuludan kokitanan.",
+'revdelete-concurrent-change' => 'Nokosilap monimban kakamot ditadau $2, $1: nokopokito do naalanan no do sosongulun kawagu di maso ko do mumbal monimban dilo.
+Maai intaai tongolog.',
+'revdelete-only-restricted' => 'Nokosilap popolisok do kakamot di $2, $1: awu ko milo do popolosod kakamot mantad kokitanai di mandur nung awu po nokopomili iso mantad pomilian kokitanai.',
+'revdelete-reason-dropdown' => '*Sasabab do pugason
+** Awu katanud kooturan kuasamonsupu
+** Pail ahaltinan di awu kosudong
+** Kopoilaan di popinraat do wokon',
+'revdelete-otherreason' => 'Sabab suai/poinsungku:',
+'revdelete-reasonotherlist' => 'Sabab suai',
+'revdelete-edit-reasonlist' => 'Idito sasabab pinugas',
+'revdelete-offender' => 'Sinimakan monunurat:',
+
+# Suppression log
+'suppressionlog' => 'Log nopinlasadan',
+'suppressionlogtext' => 'Id siriba diti nopo nga lis di nopinpugasan om tantob kohompit suang poinlisok mantad mandur.
+Intaai [[Special:BlockList|lis IP nantaban]] montok lis kawawagu karaja mogoduh om mangantob.',
+
+# History merging
+'mergehistory-reason' => 'Sabab:',
+
+# Merge log
+'mergelog' => 'Log pinisompuru',
+'pagemerge-logentry' => 'pisompuruo [[$1]] sumuang id [[$2]] (sinimakan gisom do $3)',
+'revertmerge' => 'Kada piisoo',
+
+# Diffs
+'history-title' => 'Susuyan sinimakan do "$1"',
+'difference' => '(Pisuaian mantad sinimakan)',
+'lineno' => 'Baris $1:',
+'compareselectedversions' => 'Popitimbang sinimakan nopili',
+'showhideselectedversions' => 'Pokitono/polisoko sinimakan nopili',
+'editundo' => 'suguto mongidit',
+
+# Search results
+'searchresults' => 'Kootuson nihuman',
+'searchresults-title' => 'Kootuson nihuman do "$1"',
+'searchresulttext' => 'Mongilo ko nopo do lobi ginumu kokomoi mogigihum {{SITENAME}}, intangai [[{{MediaWiki:Helppage}}|{{int:help}}]].',
+'searchsubtitle' => 'Minogihum ko do \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|oinsanan bolikon di kitimpuun "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|oinsanan bolikon di kitoput "$1"]])',
+'searchsubtitleinvalid' => "Mogihum ko do '''$1'''",
+'titlematches' => 'Kopisangai tuluhon bolikon',
+'notitlematches' => 'Aiso bolikon di kopisangai',
+'textmatches' => 'Kopisangai tik bolikon',
+'notextmatches' => 'Aiso tik kopiontok id bolikon',
+'prevn' => 'poinguluon {{PLURAL:$1|$1}}',
+'nextn' => 'sumuhut {{PLURAL:$1|$1}}',
+'prevn-title' => 'Notoliban $1 {{PLURAL:$1|kootuson|tongokootuson}}',
+'nextn-title' => 'Sumusuhut $1 {{PLURAL:$1|kootuson|tongokootuson}}',
+'shown-title' => 'Pokitono $1 {{PLURAL:$1|kootuson|tongokootuson}} monikid bolikon',
+'viewprevnext' => 'Intaai ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-exists' => "'''Haro no bolikon pinungaranan do \"[[:\$1]]\" hiti id wiki.'''",
+'searchmenu-new' => "'''Pomonsoi do bolikon \"[[:\$1]]\"hiti id wiki!'''",
+'searchhelp-url' => 'Help:Susuang',
+'searchprofile-articles' => 'Suang bobolikon',
+'searchprofile-project' => 'Tatabang om Tongobolikon purujik',
+'searchprofile-images' => 'Multimodia',
+'searchprofile-everything' => 'Nunu nopo',
+'searchprofile-advanced' => 'Poinsogulu',
+'searchprofile-articles-tooltip' => 'Ihumo id $1',
+'searchprofile-project-tooltip' => 'Ihumo id $1',
+'searchprofile-images-tooltip' => 'Ihumo montok tongopail',
+'searchprofile-everything-tooltip' => 'Ihumo oinsanan suang (kohompit bobolikon bolotok)',
+'searchprofile-advanced-tooltip' => 'Pogihum momoguno pinotomod ngaran',
+'search-result-size' => '$1 ({{PLURAL:$2|1 ka|$2 ka-ka}})',
+'search-redirect' => '(potilombuso hilo $1)',
+'search-section' => '(bogian $1)',
+'search-suggest' => '$1 ot komoyonnu?',
+'search-interwiki-caption' => 'Taka do purujik',
+'search-interwiki-default' => 'Kootuson $1:',
+'search-interwiki-more' => '(lobi)',
+'search-mwsuggest-enabled' => 'miampai tua do tutok',
+'search-mwsuggest-disabled' => 'ingaa tua do tutok',
+'search-relatedarticle' => 'Kompinaian',
+'searcheverything-enable' => 'Pogihum momoguno oinsanan ngaran:',
+'searchrelated' => 'kompinaian',
+'searchall' => 'oinsanan',
+'showingresultsheader' => "{{PLURAL:$5|Kootuson '''$1''' of '''$3'''|Tongkootuson '''$1 - $2''' of '''$3'''}} montok '''$4'''",
+'nonefound' => "'''Panansarahan''': Haro pipiro no kinoiyonon ngaran it ihumon maya do poinsandad.
+Umbalai momogonop it ihumonnu miampai do ''all:'' mooi do oihum ot oinsanan suang (poinsuang bobolikon pogibabarasan, pomitanan wonsoi, om nunu nopo it kopiagal), toi momoguno kinoiyonon ngaran sobaagi do poninimpuun.",
+'search-nonefound' => 'Ingaa kootuson kaagal di kuiri.',
+'powersearch' => 'Pogigihum poimogot',
+'powersearch-legend' => 'Pogigihum poimogot',
+'powersearch-ns' => 'Pogihum momoguno ngaran:',
+'powersearch-redir' => 'Liniisan nopotilombus',
+'powersearch-field' => 'Ihumo ot',
+'powersearch-togglelabel' => 'Imuriai:',
+'powersearch-toggleall' => 'Oinsanan',
+'powersearch-togglenone' => 'Ingaa',
+'search-external' => 'Pogihum poinsoliwan',
+'searchdisabled' => 'Pogigihum maya{{SITENAME}} nopisok.
+Milo ko mogihum maya Googol do daamot.
+Imurai no do indik suang diti {{SITENAME}} nopo nga nokolipas.',
+
+# Quickbar
+'qbsettings' => 'Barposikap',
+'qbsettings-none' => 'Ingaa',
+'qbsettings-fixedleft' => 'Pogolibango',
+'qbsettings-fixedright' => 'Pawanano',
+'qbsettings-floatingleft' => 'Posoibaho gibang',
+'qbsettings-floatingright' => 'Posoibaho wanan',
+
+# Preferences page
+'preferences' => 'Pipilion',
+'mypreferences' => 'Komoisoonku',
+'prefs-edits' => 'Ginumu niditan:',
+'prefsnologin' => 'Amu nokolog sumuang',
+'changepassword' => 'Alanai kaatalib',
+'skin-preview' => 'Kokitanan',
+'datedefault' => 'Ingaa komoisoon',
+'prefs-rc' => 'Wagu kaalanai',
+'youremail' => 'Surat-i:',
+'yourrealname' => 'Ngaran otopot:',
+'prefs-help-email' => 'Surat-i pasagaon do momili, nga gunoon iti montok do popoguli do kaatalib, nung olihuannu kaatalib',
+'prefs-help-email-others' => 'Milo nogi do momili ko nung mokiromut do tulun suai momoguno maya do noputan surat-i id bolikon momogunonu toi id bolikon bolotok. Awu iy pokitonon surat-i nu kumaa do momomoguno suai.',
+
+# Groups
+'group-sysop' => 'Mandur',
+
+'grouppage-sysop' => '{{ns:project}}:Mandur',
+
+# User rights log
+'rightslog' => 'Log kasagaan momomoguno',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'Idito bolikon diti',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|naalanan|nopingalanan}}',
+'recentchanges' => 'Wagu kaalanai',
+'recentchanges-legend' => 'Pomilian kaalanai kawawagu',
+'recentchanges-feed-description' => 'Monousui kinosuaion kawawagu kumaa do wiki id pambababu diti.',
+'recentchanges-label-newpage' => 'Niditan diti kopomonsoi do bolikon kawawagu',
+'recentchanges-label-minor' => 'Iti nopo nga niditan tokoto',
+'recentchanges-label-bot' => 'Niditan diti winonsoi do robot',
+'recentchanges-label-unpatrolled' => 'Niditan diti awu poh nosimak',
+'rcnote' => "Iti {{PLURAL:$1|noh '''1''' nalanan|nopo '''$1''' dohuri nopingalanan}} solinaid {{PLURAL:$2|tadau|'''$2''' tadau}}, ontok di $4, jaam $5.",
+'rclistfrom' => 'Pokitono naalanan kawawagu tumimpuun mantad $1',
+'rcshowhideminor' => '$1 niditan tokoto',
+'rcshowhidebots' => 'Roboto $1',
+'rcshowhideliu' => '$1 momomoguno poinlog sinumuang',
+'rcshowhideanons' => '$1 momomoguno awu popointutun',
+'rcshowhidepatr' => '$1 niditan nosimak',
+'rcshowhidemine' => '$1 niditanku',
+'rclinks' => 'Popokito soginumu $1 kaalanai id suang $2 tadau<br />$3',
+'diff' => 'pisuai',
+'hist' => 'susui',
+'hide' => 'Popolisok',
+'show' => 'Popointalang',
+'minoreditletter' => 'o',
+'newpageletter' => 'W',
+'boteditletter' => 'rb',
+'rc-enhanced-expand' => 'Pokitono kointalangan (momoguno JawaSikrip)',
+'rc-enhanced-hide' => 'Polisoko kointalangan',
+
+# Recent changes linked
+'recentchangeslinked' => 'Kinaalanan di kohompit',
+'recentchangeslinked-toolbox' => 'Kinaalanan di kohompit',
+'recentchangeslinked-title' => "Kinowolion 'parameter' it awu noguno: $1",
+'recentchangeslinked-noresult' => 'Ingaa nalanan do noputan bolikon id timpu nokomoi.',
+'recentchangeslinked-summary' => "Iti nopo nga lis kawawagu kaalanai winonsoi kumaa noputan bobolikon mantad bolikon pointantu (toi kumaa momomoguno tinansaran pointantu).
+Bobolikon id [[Special:Watchlist|lis pintangannu]] nopo nga '''pinakapal'''.",
+'recentchangeslinked-page' => 'Ngaran bolikon:',
+'recentchangeslinked-to' => 'Popokito nokowolion do bobolikon nokooput kumaa dii bolikon pinatahak nogi',
+
+# Upload
+'upload' => 'Mangaplod pail',
+'uploadbtn' => 'Mangaplod pail',
+'reuploaddesc' => 'Batalo mangaplod om gumuli hilo id poom mongaplod',
+'upload-tryagain' => 'Pootodo pongintalangan pail nomodipait',
+'uploadnologin' => 'Amu nokolog sumuang',
+'uploadnologintext' => 'Pinatantu ko do [[Special:UserLogin|lumoog sumuang]] do mangaplod tangapail-pail.',
+'uploadlogpage' => 'Log poposuang',
+'filedesc' => 'Koinibaan',
+'uploadedimage' => 'poposuang "[[$1]]"',
+
+'license' => 'Pongolisinan:',
+'license-header' => 'Pongolisinan',
+
+# Special:ListFiles
+'listfiles_search_for' => 'Mogihum ngaran modia:',
+'imgfile' => 'pail',
+'listfiles' => 'Lis do pail',
+'listfiles_thumb' => 'Sinondulu',
+'listfiles_date' => 'Adau',
+'listfiles_name' => 'Ngaran',
+'listfiles_user' => 'Momoguno',
+'listfiles_size' => 'Tipong',
+'listfiles_description' => 'pongowowoyoon',
+'listfiles_count' => 'Dolinan',
+
+# File description page
+'file-anchor-link' => 'Pail',
+'filehist' => 'Susuyan pail',
+'filehist-help' => 'Kotiko id kalindo / maso do mongintong di upa dilo pail ontok di timpu nokomoi.',
+'filehist-deleteall' => 'pugaso koinsanai',
+'filehist-deleteone' => 'pugaso',
+'filehist-revert' => 'gulio',
+'filehist-current' => 'timpu diti',
+'filehist-datetime' => 'Kalindo/Maso',
+'filehist-thumb' => 'Sinondulu',
+'filehist-thumbtext' => 'Kointalangan sinondulu montok borsi maso di $1',
+'filehist-nothumb' => 'Ingaa sinondulu',
+'filehist-user' => 'Momomoguno',
+'filehist-dimensions' => 'Ginayo',
+'filehist-filesize' => 'Tinipongan pail',
+'filehist-comment' => 'Kumin',
+'filehist-missing' => 'Natagak pail',
+'imagelinks' => 'Noputan do pail',
+'linkstoimage' => 'Iti kiharo {{PLURAL:$1|bolikon poingoput|$1 bobolikon poingoput}} id pail diti:',
+'nolinkstoimage' => 'Ingaa bobolikon it poingoput id pail diti.',
+'morelinkstoimage' => 'Intaai [[Special:WhatLinksHere/$1|tongotoput]] pail diti.',
+'sharedupload' => 'Pail diti mantad $1 om kaanto nogi do gunoon doid purujik suai.',
+'sharedupload-desc-there' => 'Pail diti mantad $1 om gunoon nogi do tongopurujik suai.
+Intaai [$2 bolikon pongowowoyoon pail] montok pongintalangan.',
+'sharedupload-desc-here' => 'Pail diti mantad $1 om milo do gunoon id purujik suai.
+Kointalangan dilo [$2 kointalangan pail] okito id siriba.',
+'uploadnewversion-linktext' => 'Pasakayo borsi kawawagu do pail diti',
+
+# Random page
+'randompage' => 'Songkobolikanan',
+
+# Statistics
+'statistics' => 'Runumboboyo',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|bait|babait}}',
+'nmembers' => '$1 {{PLURAL:$1|koombolutan|tongokoombolutan}}',
+'prefixindex' => 'Oinsanan bolikan di kiponimpuunan',
+'usercreated' => 'Winonsoi ontok $1 di jaam $2',
+'newpages' => 'Bobolikon wagu',
+'move' => 'Poundoliho',
+'movethispage' => 'Poundoliho iti bolikon',
+'pager-newer-n' => '{{PLURAL:$1|kawawagu 1|kawawagu $1}}',
+'pager-older-n' => '{{PLURAL:$1|nokodori 1|nokodori $1}}',
+
+# Book sources
+'booksources' => 'Nantadon buuk',
+'booksources-search-legend' => 'Ihumo tadon buuk',
+'booksources-go' => 'Ibok',
+
+# Special:Log
+'specialloguserlabel' => 'Momoguno:',
+'log' => 'Tongolog',
+
+# Special:AllPages
+'allpages' => 'Oinsanan bolikon',
+'alphaindexline' => '$1 gisom $2',
+'nextpage' => 'Bolikon sumuhut ($1)',
+'prevpage' => 'Bolikon nakatalib $1',
+'allpagesfrom' => 'Pokitono bobolikon tinimpuun do:',
+'allpagesto' => 'Pokitono bobolikon nopupusan do:',
+'allarticles' => 'Oinsanan bobolikon',
+'allinnamespace' => 'Oinsanan bobolikon ($1 poiyanan-ngaran)',
+'allnotinnamespace' => 'Oinsanan bobolikon (awu poinsuang $1 poiyanan-ngaran)',
+'allpagesprev' => 'Nokopogulu',
+'allpagesnext' => 'kaagu',
+'allpagessubmit' => 'Ibok',
+'allpagesprefix' => 'Pokitono bolikon di kitinimpuunon:',
+'allpages-bad-ns' => '{{SITENAME}} aiso pinungaranan do "$1"',
+
+# Special:Categories
+'categories' => 'Kakatogori',
+'categoriesfrom' => 'Pokitono kakatogori tinimpuun do:',
+'special-categories-sort-abc' => 'uludo mompimato',
+
+# Special:DeletedContributions
+'deletedcontributions' => 'Pugaso pinototoluod do momoguno',
+'deletedcontributions-title' => 'Pugaso pinototoluod do momoguno',
+'sp-deletedcontributions-contribs' => 'Totoluod',
+
+# Special:LinkSearch
+'linksearch' => 'Noputan poinsoliwan',
+'linksearch-ns' => 'Ponuratan ngaran:',
+'linksearch-ok' => 'Ihumo',
+'linksearch-line' => '$1 toput mantad $2',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Log pinamansaian momomoguno',
+'newuserlog-create-entry' => 'Akaun momomoguno kawawagu',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(lis do kinoruhangan)',
+
+# E-mail user
+'emailuser' => 'Surat-i momomoguno diti',
+
+# Watchlist
+'watchlist' => 'Lis piintanganku',
+'mywatchlist' => 'Lis piintanganku',
+'addedwatchtext' => "Bolikon \"[[:\$1]]\" nokoruhang no id [[Special:Watchlist|lis piintangannu]].
+Kinaalanan id bolikon om kinoruhangan bolikon bolotok diti do maso dumontol maan posurato do hiti, om bolikon diti pokitonon do '''akapal''' id [[Special:RecentChanges|lis wagu kaalanai]] do poposikap mongintutun.",
+'removedwatchtext' => 'Bolikon "[[:$1]]" noidu no mantad [[Special:Watchlist|lis piintangannu]].',
+'watch' => 'Mongintong',
+'watchthispage' => 'Piintong bolikon diti',
+'unwatch' => 'Awu intangan',
+'unwatchthispage' => 'Tingkod do mongintong',
+'watchlist-details' => '{{PLURAL:$1|$1 bolikon|$1 bobolikon}} id lis piintangannu, bobolikon bolotok awu pinosuang.',
+'wlshowlast' => 'Pokitono dohuri $1 jaam $2 tadau $3',
+'watchlist-options' => 'Pomilian lis piintangan',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Piintong...',
+'unwatching' => 'Awu piintong...',
+
+# Delete
+'deletepage' => 'Pugaso bolikon',
+'confirmdeletetext' => 'Pugasonnu ot bolikon diti miampai toinsanan susuyan tangadata.
+Mangai potontuo do mimang iti no komoyonnu om karati ko do kotutukon, om winonsoinu iti katanud do [[{{MediaWiki:Policy-url}}|kopitimbangan]].',
+'actioncomplete' => 'Nopongoh',
+'actionfailed' => 'Nantaban karaja',
+'deletedtext' => '"$1" nopugas nodi.
+Intaai $2 montok ruputan di wagu pinugas.',
+'deletedarticle' => '"[[$1]]" it nopugas',
+'dellogpage' => 'Log pinimpugasan',
+'deletecomment' => 'Sabab:',
+'deleteotherreason' => 'Sabab suai/poinsungku:',
+'deletereasonotherlist' => 'Sabab suai',
+
+# Rollback
+'rollbacklink' => 'poturug guli',
+
+# Protect
+'protectlogpage' => 'Log noumoligan',
+'protectedarticle' => 'notingoligan "[[$1]]"',
+'modifiedarticleprotection' => 'alanai tingkat pongumoligan montok "[[$1]]"',
+'protectcomment' => 'Sabab:',
+'protectexpiry' => 'Nokolubo:',
+'protect_expiry_invalid' => 'Timpu kolubo awu koontok.',
+'protect_expiry_old' => 'Timpu kolubo nopo nga notoliban no.',
+'protect-text' => "Milo ko do mongintong om mongolon tingkat tingolig montok bolikon diti '''$1'''.",
+'protect-locked-access' => "Ingaa kasagaan do akaunnu do mongolon tingkat tingolig bolikon. Iti no nuludan sandad montok bolikon '''$1'''.",
+'protect-cascadeon' => 'Bolikon diti maso po do notingoligan tu poinsuang iti {{PLURAL:$1|bolikon, it kisuang|bobolikon, kisuang}} tingolig kasading poimposik.
+Milo ko nogi do mongolon tingkat tingolig diti, nga ingaa it kosimbanon montok tingolig kasading.',
+'protect-default' => 'Pasagao oinsanan momomoguno',
+'protect-fallback' => 'Momoguna kasagaan "$1"',
+'protect-level-autoconfirmed' => 'Antabai kawawagu om momomoguno awu nokorijisto',
+'protect-level-sysop' => 'Mongungulud nopo',
+'protect-summary-cascade' => 'kasading',
+'protect-expiring' => 'kolubo ontok $1 (UTC)',
+'protect-cascade' => 'Umoligai bobolikon poinghompit id bolikon diti (tingolig kasading)',
+'protect-cantedit' => 'Awu ko kopongolon do tingkat tingolig id bolikon diti, tu ingaa kasagaan nu do monimban diti.',
+'restriction-type' => 'Kasagaan:',
+'restriction-level' => 'Tingkat pangantaban',
+
+# Undelete
+'undeletelink' => 'intangai/pogompio',
+'undeleteviewlink' => 'intaai',
+'undeletedarticle' => 'potonduliono "[[$1]]"',
+
+# Namespace form on various pages
+'namespace' => 'Ponuratan ngaran',
+'invert' => 'Posolimpado pinilion',
+'blanknamespace' => '(Poingayo)',
+
+# Contributions
+'contributions' => 'Pinotoluod do momomoguno',
+'contributions-title' => 'Pinotoluod momomoguno montok $1',
+'mycontris' => 'Pinotoluodku',
+'contribsub2' => 'Montok $1 ($2)',
+'uctop' => '(id kaas)',
+'month' => 'Mantad tulan (om di tulaan po):',
+'year' => 'Mantad toun (om di touun po):',
+
+'sp-contributions-newbies' => 'Pokitono pinotoluod di takaun kawawagu nopo.',
+'sp-contributions-blocklog' => 'antabai log',
+'sp-contributions-uploads' => 'poposuang',
+'sp-contributions-talk' => 'bolotok',
+'sp-contributions-search' => 'Ihumo pinotoluod',
+'sp-contributions-username' => 'Kinoyonon IP toi momomoguno:',
+'sp-contributions-submit' => 'Ihumo',
+
+# What links here
+'whatlinkshere' => 'Nunu poingoput hiti',
+'whatlinkshere-title' => 'Bolikon di poingoput id "$1"',
+'whatlinkshere-page' => 'Bolikon:',
+'linkshere' => "Bolikon diti poingoput kumaa id '''[[:$1]]''':",
+'isredirect' => 'bolikon pinotilombus',
+'istemplate' => 'alanai',
+'isimage' => 'noputan do upa',
+'whatlinkshere-prev' => '{{PLURAL:$1|nokopogulu|duluon $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|tohuri|dohuri $1}}',
+'whatlinkshere-links' => '↠noputan',
+'whatlinkshere-hideredirs' => '$1 pinotilombus',
+'whatlinkshere-hidetrans' => '$1 pangalanan',
+'whatlinkshere-hidelinks' => '$1 noputan',
+'whatlinkshere-hideimages' => '$1 noputan gambar',
+'whatlinkshere-filters' => 'Gaganon',
+
+# Block/unblock
+'blockip' => 'Antabai momomoguno',
+'ipboptions' => '2 jaam:2 hours, sangadau:1 day,3 tadau:3 days, sominggu:1 week,2 minggu:2 weeks,sombulan:1 month,3 tulan:3 months,6 tulan:6 months,sontoun:1 year,inointob:infinite',
+'unblockip' => 'Kada antabai momomoguno',
+'unblockiptext' => 'Gunoo poom id siriba do poposuang kasagaan monurat montok do kinoyonon IP toi ngaran momomoguno di pogulu naantaban.',
+'ipusubmit' => 'Iduo pinangantob diti',
+'unblocked' => '[[User:$1|$1]] naantaban no.',
+'unblocked-id' => 'Noidu no tantob di $1',
+'ipblocklist' => 'Antabai momomoguno',
+'ipblocklist-legend' => 'Ihumo momomoguno naantaban',
+'ipblocklist-submit' => 'Ihumo',
+'blocklink' => 'antabai',
+'unblocklink' => 'iduo tantob',
+'change-blocklink' => 'alanai nantaban',
+'contribslink' => 'panahak',
+'blocklogpage' => 'Antabai log',
+'blocklogentry' => 'naantaban [[$1]] gisom $2 $3',
+'unblocklogentry' => 'naantaban $1',
+'block-log-flags-nocreate' => 'awu milo momonsoi akaun',
+
+# Move page
+'movepagetext' => "Momoguno do poom id siriba diti kopongolon do ngaran bolikon om popoundalih oinsanan susuyan data dau in ngaran kawawagu.
+Tuluhon dau mantad potilombuson id nokoolihon tuluhon bolikon kawawagu.
+Milo ko nogi do mongodoropi di nokoolihon di momoguno do tuluhon antad maya do kangkaraja oporian.
+Mada ko nopo do momili dilo, simakon no poingonop it [[Special:DoubleRedirects|nosugut]] toi
+[[Special:BrokenRedirects|lombuson naraag]].
+Kitonggungan ko do momorisa di noputan do pointopot ot korikoton.
+
+Intaai no do bolikon '''awu''' kopinda nung haro no bolikon id tuluhon kawawagu diri, suai ko ingaa suang toi kilinombuson om ingaa susuyan niditan di pogulu poh.
+Komoyon do milo ko nogi do mongolon ngaran bolikon gumuli hilo tiyonon diri nung kosilap ko om awu ko nogi kapamalapau di bolikon nokosuang mantad.
+
+
+'''Pansarahan!'''
+Milo iti do kawalih tagayo om awu nopoimanan montok bolikon di aramaiti;
+kalansanan do karati ko kopio do nunu kotutukon do karajanu pogulu po do potilombuson.",
+'movepagetalktext' => "Bolikon bolotok it kokomoi maan popimporio do poundalih piampaion dilo '''awu kohompit:'''
+* Iso bolikon bolotok it kisuang om kiharo it pinungaranan do wagu, toi
+* maai pugaso tanda rait id kutak siriba diti.
+
+Id kis dilo, mositi do momoguno do karalan-ralanon longonon nung popindaon toi posungkuonnu ot bolikon dilo.",
+'movearticle' => 'Popinda bolikon:',
+'newtitle' => 'Mongoi tuluhon kawawagu:',
+'move-watch' => 'Intangai bolikon wowonod om bolikon dimpoton',
+'movepagebtn' => 'Popinda bolikon',
+'pagemovedsub' => 'Nopongoh popinda',
+'movepage-moved' => '\'\'\'"$1" nokowalih do hilo "$2"\'\'\'',
+'articleexists' => 'Kibolikon no do momoguno ngaran dilo, toi ngaran di nopili awu pasagaon.
+Pilio ngaran suai.',
+'talkexists' => "'''Nakaalih no bo daa bolikon dilo, nga it bolikon bolotok awu di kaalih tu kopiirad ot judul di poinsuang mantad.
+Maai no longono do posungku.'''",
+'movedto' => 'powolihon hilo',
+'movetalk' => 'Pooliho bolikon bolotok di poingompinai',
+'1movedto2' => 'pinoundalih [[$1]] kumaa [[$2]]',
+'1movedto2_redir' => 'popoundalih [[$1]] mongoi [[$2]] do montilombus',
+'movelogpage' => 'Poundoliho log',
+'movereason' => 'Sabab:',
+'revertmove' => 'gulio',
+
+# Export
+'export' => 'Poposoliwan bobolikon',
+
+# Namespace 8 related
+'allmessagesname' => 'Ngaran',
+'allmessagesdefault' => 'Tik pason sandad',
+
+# Thumbnails
+'thumbnail-more' => 'Ingayaai',
+'thumbnail_error' => 'Nokosilap momonsoi pongitanan sondulu: $1',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Bolikon mongogunonu',
+'tooltip-pt-mytalk' => 'Bolikon pibabarasannu',
+'tooltip-pt-preferences' => 'Komoisoonnu',
+'tooltip-pt-watchlist' => 'Lis do bobolikon di maannu piintaai do alanan',
+'tooltip-pt-mycontris' => 'Lis di pinototoluodnu',
+'tooltip-pt-login' => 'Alapon ko do mongolog sumuang; poingkuro po nga, okon ih ko awajip',
+'tooltip-pt-logout' => 'Lumabus log',
+'tooltip-ca-talk' => 'Pogigibarasan kokomoi do suang bolikon',
+'tooltip-ca-edit' => 'Kasagaan ko nogi do mongidit diti bolikon. Gunoo no butang kointalangandulu pogulu po do popoopion',
+'tooltip-ca-addsection' => 'Potimpuuno bogian kakawgu',
+'tooltip-ca-viewsource' => 'Bolikon diti notingoligan.
+Milo ko mongintong do wowonod',
+'tooltip-ca-history' => 'Tolibai sinimakan id bolikon diti',
+'tooltip-ca-protect' => 'Tingoligai iti bolikon',
+'tooltip-ca-delete' => 'Pugaso iti bolikon',
+'tooltip-ca-move' => 'Poundoliho iti bolikon',
+'tooltip-ca-watch' => 'Poruhango bolikon diti id lis piintangannu',
+'tooltip-ca-unwatch' => 'Iduo bolikon diti id lis piintangannu',
+'tooltip-search' => 'Ihumo id {{SITENAME}}',
+'tooltip-search-go' => 'Ongoi hilo bolikon di kingaran poingonop nung haro do poinsurat',
+'tooltip-search-fulltext' => 'Ihumo bolikon do tik diti',
+'tooltip-p-logo' => 'Tombuluyo hilo natadon tagayo',
+'tooltip-n-mainpage' => 'Tombuluyo hilo natadon tagayo',
+'tooltip-n-mainpage-description' => 'Tombuluyo hilo natadon tagayo',
+'tooltip-n-portal' => 'Kokomoi do purujik, nunu milo do maannu, hinonggo pogihuman do kuo',
+'tooltip-n-currentevents' => 'Ihumo kointalangan dolikudon kokomoi kinaantakan poinwawagu',
+'tooltip-n-recentchanges' => 'Lis di wagu koolon id suang wiki',
+'tooltip-n-randompage' => 'Posuango sorononggo bolikon',
+'tooltip-n-help' => 'Tampat do pogihuman',
+'tooltip-t-whatlinkshere' => 'Lis koinsanai bolikon wiki it poingoput do hiti',
+'tooltip-t-recentchangeslinked' => 'Kaalanai kawawagu id bolikon nokooput id bolikon diti',
+'tooltip-feed-rss' => 'Papababu RSS id bolikon diti',
+'tooltip-feed-atom' => 'Papababu Atom id bolikon diti',
+'tooltip-t-contributions' => 'Intangai lis do pinototoluod do momomoguno diti',
+'tooltip-t-emailuser' => 'Ponurat-i kumaa do momomoguno diti',
+'tooltip-t-upload' => 'Mangaplod pail',
+'tooltip-t-specialpages' => 'Lis koinsanai bolikon suaikowokon',
+'tooltip-t-print' => 'Kodolinan milo pirinon hiti id bolikon',
+'tooltip-t-permalink' => 'Toput pointatap do hiti id bolikon sinimak',
+'tooltip-ca-nstab-main' => 'Intaai it suang bolikon',
+'tooltip-ca-nstab-user' => 'Intaai bolikon do momomoguno',
+'tooltip-ca-nstab-special' => 'Iti nopo nga bolikon pinatantu, awu ko milo do mimpopori mongidit',
+'tooltip-ca-nstab-project' => 'Intaai bolikon do purujik',
+'tooltip-ca-nstab-image' => 'Intaai ot bolikon pail',
+'tooltip-ca-nstab-template' => 'Intaai pomitanan',
+'tooltip-ca-nstab-category' => 'Intaai koinansar bolikon',
+'tooltip-minoredit' => 'Tondukai do niditan tokoto iti',
+'tooltip-save' => 'Umoligai iri nalanannu',
+'tooltip-preview' => 'Pongitanan di nalanannu, maai no gunoo iti pogulu do popogompi niditan.',
+'tooltip-diff' => 'Pokitono nongo iri nalanan winonsoinu id tik',
+'tooltip-compareselectedversions' => 'Intaai ot pisuaian dilo godu-duo sinimakan nopili id bolikon diti',
+'tooltip-watch' => 'Poruhango bolikon diti id lis piintangannu',
+'tooltip-upload' => 'Timpuun mangaplod',
+'tooltip-rollback' => '"Pogulio kawagu" mongolon di niditan do bolikon diti tumanud di doun mononoluod tohuri maya do iso kotik',
+'tooltip-undo' => '"Pogulio" mongolon diti niditan om mongukab poom idito id kointalangan do pongitanan no tomod. Ahal diti papasaga do mongoruhang kumin toniba.',
+'tooltip-summary' => 'Posurato koinibaan',
+
+# Attribution
+'others' => 'susuai',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|momoguno|momomoguno}} $1',
+'anonusers' => '{{SITENAME}} aisongaran {{PLURAL:$2|momoguno|momomoguno}} $1',
+'creditspage' => 'Pounsikou do bolikon',
+'nocredits' => 'Ingaa ih ot ahal kokomoi di pinopotoluod do bolikon diti.',
+
+# Browsing diffs
+'previousdiff' => '↠Niditan nakalaid',
+'nextdiff' => 'Niditan kawawagu →',
+
+# Media information
+'file-info-size' => '$1 × $2 pipisil, sais pail: $3, nuludan MIME: $4',
+'file-nohires' => '<small>Ingaa pinosodia risoluson takawas.</small>',
+'svg-long-desc' => 'Pail SVG, tipong tuou $1 × $2 piksol, ginayo pail: $3',
+'show-big-image' => 'Sinaisan poimponu',
+
+# Bad image list
+'bad_image_list' => 'Kouludan nopo nga miagal dilo siriba:
+
+Iri ahal poinlis (baris di tumimpuun *) maan pitimbango.
+Toput kumoiso id baris nokomoi nopo nga toput kumaa id pail naraag.
+Awu nokohompit iri nonggo-nonggo toput suai id baris dilo, miagal do kiharo ilo pail.',
+
+# Metadata
+'metadata' => 'Datamata',
+'metadata-help' => 'Pail diti kisuang kointalangan poinruhang, it pinoruhang kaanto mantad gagambar dijital toi minomoguno do pamamadalin do momonsoi toi pinopodijit dilo.
+Nung nomodipait no ilo pail, kiharo pipiro kointalangan di awu ogonop do pootulon montok di pail nomodipait.',
+'metadata-expand' => 'Pokitono kointalangan pinatapil',
+'metadata-collapse' => 'Polisoko kointalangan pinatapil',
+'metadata-fields' => 'Batas pongodata it poinlis id suang pason diti maan poruhango id upa bolikon pongintalangan nung olisok jodual pongodata.
+Iri suai sinandad do poinlisok.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
+# External editor support
+'edit-externally' => 'Idito pail diti momoguno do kangkaraja pongi-ngidit poinlabus',
+'edit-externally-help' => '(Intaai [//www.mediawiki.org/wiki/Manual:External_editors karalan-ralanon papasang] do lobi gumu kointalangan)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'oinsanan',
+'namespacesall' => 'oinsanan',
+'monthsall' => 'oinsanan',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Intaai kinoolonon di kosudong',
+'watchlisttools-edit' => 'Intaai om idito lis piintangan',
+'watchlisttools-raw' => 'Idito lis piintangan it mata',
+
+# Core parser functions
+'duplicate-defaultsort' => '\'\'\'Panansarahan:\'\'\' Popoguli nuludan kunsi "$2" mongolon nuludan kunsi nokopogulu "$1".',
+
+# Special:SpecialPages
+'specialpages' => 'Bolikon suaikowokon',
+
+# Special:Tags
+'tag-filter' => '[[Special:Tags|Pananda]] gagan:',
+
+);
diff --git a/languages/messages/MessagesDv.php b/languages/messages/MessagesDv.php
index a21dad5a..d54ea9e2 100644
--- a/languages/messages/MessagesDv.php
+++ b/languages/messages/MessagesDv.php
@@ -31,27 +31,27 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'Userlogin' => array( 'ÞˆÞ¦Þ‹Þ¬ÞˆÞ¦Þ‘Þ¦Þ‡Þ¨ÞŽÞ¦Þ‚Þ°Þ‚Þ¦ÞˆÞ§' ),
- 'Userlogout' => array( 'Þ„Þ­ÞƒÞ¦ÞÞ° ÞˆÞ¦Þ‘Þ¦Þ‡Þ¨ÞŽÞ¦Þ‚Þ°Þ‚Þ¦ÞˆÞ§' ),
+ 'Allpages' => array( 'Þ€ÞªÞƒÞ¨Þ€Þ§ ÞÞ¦ÞŠÞ°Þ™Þ§Þ‡Þ¬Þ‡Þ°' ),
+ 'Contributions' => array( 'Þ™Þ¨Þ‡Þ°ÞÞ§' ),
'CreateAccount' => array( 'Þ‰Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞªÞ†Þ¦Þ‚Þ° Þ€Þ§ÞÞ¨ÞÞ°Þ†ÞªÞƒÞ¦Þ‡Þ°ÞˆÞ§' ),
- 'Preferences' => array( 'ތަރުޖީހުތައް' ),
- 'Recentchanges' => array( 'Þ‡Þ¬Þ‚Þ°Þ‰Þ¬ ÞŠÞ¦Þ€ÞªÞŽÞ¬ Þ„Þ¦Þ‹Þ¦Þްތައް' ),
- 'Upload' => array( 'ÞŠÞ®Þ‚ÞªÞ‡Þ°ÞˆÞ§' ),
+ 'Emailuser' => array( 'Þ‰Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞ¦ÞÞ° Þ‡Þ©-Þ‰Þ¬Þ‡Þ¨ÞÞ° ÞŠÞ®Þ‚ÞªÞˆÞ§' ),
+ 'BlockList' => array( 'Þ„Þ°ÞÞ®Þ†Þ° Þ†ÞªÞƒÞ¬ÞˆÞ¨ÞŠÞ¦Þ‡Þ¨ÞˆÞ§ ÞÞ¨ÞÞ°Þ“Þ°' ),
'Listfiles' => array( 'ÞŠÞ¦Þ‡Þ¨ÞÞ° ÞÞ¨ÞÞ°Þ“Þ°' ),
+ 'Longpages' => array( 'Þ‹Þ¨ÞŽÞª Þަފްޙާތައް' ),
'Newimages' => array( 'Þ‡Þ§ ÞŠÞ¦Þ‡Þ¨ÞÞ°' ),
+ 'Newpages' => array( 'Þ‡Þ§ Þަފްހާތައް' ),
+ 'Preferences' => array( 'ތަރުޖީހުތައް' ),
+ 'Protectedpages' => array( 'Þ‹Þ¨ÞŠÞ§Þ¢ÞªÞ†ÞªÞƒÞ¬ÞˆÞ¨ÞŠÞ¦Þ‡Þ¨ÞˆÞ§ Þަފްޙާތައް' ),
'Randompage' => array( 'Þ†Þ®Þ‚Þ°Þ‰Þ¬ÞˆÞ¬ÞÞ° ÞÞ¦ÞŠÞ°Þ™Þ§Þ‡Þ¬Þ‡Þ°' ),
+ 'Recentchanges' => array( 'Þ‡Þ¬Þ‚Þ°Þ‰Þ¬ ÞŠÞ¦Þ€ÞªÞŽÞ¬ Þ„Þ¦Þ‹Þ¦Þްތައް' ),
+ 'Shortpages' => array( 'Þ†ÞªÞƒÞª Þަފްޙާތައް' ),
+ 'Specialpages' => array( 'Þ™Þ§Þ‡Þ°ÞÞ¦ Þަފްޙާތައް' ),
'Uncategorizedtemplates' => array( 'Þ¤Þ¨ÞÞ°Þ‰ÞªÞ†ÞªÞƒÞ¬ÞˆÞ¨ÞŠÞ¦Þ‡Þ¨ Þ‚ÞªÞˆÞ§ ފަންވަތް' ),
'Unusedcategories' => array( 'Þ„Þ­Þ‚ÞªÞ‚Þ° Þ‚ÞªÞ†ÞªÞƒÞ§ Þ¤Þ¨Þްމުތައް' ),
'Unusedimages' => array( 'Þ„Þ­Þ‚ÞªÞ‚Þ° Þ‚ÞªÞ†ÞªÞƒÞ§ ÞŠÞ¦Þ‡Þ¨ÞÞ°' ),
- 'Shortpages' => array( 'Þ†ÞªÞƒÞª Þަފްޙާތައް' ),
- 'Longpages' => array( 'Þ‹Þ¨ÞŽÞª Þަފްޙާތައް' ),
- 'Newpages' => array( 'Þ‡Þ§ Þަފްހާތައް' ),
- 'Protectedpages' => array( 'Þ‹Þ¨ÞŠÞ§Þ¢ÞªÞ†ÞªÞƒÞ¬ÞˆÞ¨ÞŠÞ¦Þ‡Þ¨ÞˆÞ§ Þަފްޙާތައް' ),
- 'Allpages' => array( 'Þ€ÞªÞƒÞ¨Þ€Þ§ ÞÞ¦ÞŠÞ°Þ™Þ§Þ‡Þ¬Þ‡Þ°' ),
- 'Ipblocklist' => array( 'Þ„Þ°ÞÞ®Þ†Þ° Þ†ÞªÞƒÞ¬ÞˆÞ¨ÞŠÞ¦Þ‡Þ¨ÞˆÞ§ ÞÞ¨ÞÞ°Þ“Þ°' ),
- 'Specialpages' => array( 'Þ™Þ§Þ‡Þ°ÞÞ¦ Þަފްޙާތައް' ),
- 'Contributions' => array( 'Þ™Þ¨Þ‡Þ°ÞÞ§' ),
- 'Emailuser' => array( 'Þ‰Þ¬Þ‰Þ°Þ„Þ¦ÞƒÞ¦ÞÞ° Þ‡Þ©-Þ‰Þ¬Þ‡Þ¨ÞÞ° ÞŠÞ®Þ‚ÞªÞˆÞ§' ),
+ 'Upload' => array( 'ÞŠÞ®Þ‚ÞªÞ‡Þ°ÞˆÞ§' ),
+ 'Userlogin' => array( 'ÞˆÞ¦Þ‹Þ¬ÞˆÞ¦Þ‘Þ¦Þ‡Þ¨ÞŽÞ¦Þ‚Þ°Þ‚Þ¦ÞˆÞ§' ),
+ 'Userlogout' => array( 'Þ„Þ­ÞƒÞ¦ÞÞ° ÞˆÞ¦Þ‘Þ¦Þ‡Þ¨ÞŽÞ¦Þ‚Þ°Þ‚Þ¦ÞˆÞ§' ),
);
$messages = array(
@@ -141,7 +141,6 @@ $messages = array(
'go' => 'Þ‹ÞªÞƒÞªÞˆÞ­',
'history' => 'ޞަފްޙާގެ ތާރީހު',
'history_short' => 'ތާރީހު',
-'info_short' => 'Þ‰Þ¦Þ‡ÞªÞޫމާތު',
'printableversion' => 'Þ—Þ§Þ•Þ¦ÞÞ°ÞŠÞ¦Þ€Þ¨ Þ‚ÞªÞÞ°Þ€Þ§',
'permalink' => 'Þ‹Þ§Þ‡Þ¨Þ‰Þ© ÞŠÞ§ÞÞ¦Þ‚Þ°',
'print' => 'Þ—Þ§Þ•ÞªÞ†ÞªÞƒÞ¦Þ‡Þ°ÞˆÞ§',
@@ -229,7 +228,7 @@ $messages = array(
'mailmypassword' => 'ÞÞ¨Þ‡Þ°ÞƒÞªÞ„Þ¦ÞÞ° Þ‡Þ©Þ‰Þ­ÞÞªÞ†ÞªÞƒÞ¦Þ‡Þ°ÞˆÞ§',
'acct_creation_throttle_hit' => 'Þ‰Þ§ÞŠÞª ކުރައްވާ، Þ‡Þ¬Þ€Þ¬Þ‚Þ© ތިޔަބޭފުޅާ ÞˆÞ¦Þ‚Þ© Þ†ÞªÞƒÞ©Þ‡Þ°ÞÞªÞƒÞ¬ $1 Þ‰Þ¬Þ‚Þ°Þ„Þ¦ÞƒÞªÞ†Þ¦Þ‚Þ° Þ€Þ¯Þ‡Þ°Þ‹Þ¦ÞˆÞ§ÞŠÞ¦Þ‡Þ¨ Þ‡Þ¬Þ€Þ¬Þ‚Þ°ÞˆÞ©Þ‰Þ§ އިތުރަÞÞ° ÞÞ¨Þ„Þ¨ÞˆÞ¦Þ‘Þ¦Þ‡Þ¬Þ‡Þ° Þ‚ÞªÞŽÞ¦Þ‚Þ°Þ‚Þ¦ÞˆÞ§Þ‚Þ¬.',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Þ†ÞªÞƒÞ©ÞŽÞ¬ ÞÞ¨Þ‡Þ°ÞƒÞªÞ„Þ¦ÞÞ°:',
# Edit page toolbar
@@ -373,7 +372,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
# Watchlist
'watchlist' => 'Þ‰Þ¦ÞŽÞ­ Þ‚Þ¦Þ’Þ¦ÞƒÞª',
-'addedwatch' => 'Þ‚Þ¦Þ’Þ¦ÞƒÞªÞŽÞ¬ ÞŠÞ¨Þ€ÞªÞƒÞ¨ÞްތަÞÞ° ÞÞ¬ÞˆÞ¨Þ‡Þ°Þ–Þ¬',
'addedwatchtext' => "Þ‰Þ¨ ÞžÞ¦ÞŠÞ°Þ™Þ§ \"<nowiki>\$1</nowiki>\" ތިޔަބޭފުޅާގެ [[Special:Watchlist|Þ€Þ§Þ‡Þ°ÞÞ¦ Þ‚Þ¦Þ’Þ¦ÞƒÞª]] ÞŠÞ¨Þ€ÞªÞƒÞ¨ÞްތަÞÞ° ÞÞ¬ÞˆÞ¨Þ‡Þ°Þ–Þ¬Þ‡Þ¬ÞˆÞ¬. Þ‹Þ¬Þ‚Þ° Þ†ÞªÞƒÞ¨Þ‰Þ¦ÞŽÞªÞŽÞ¦Þ‡Þ¨ Þ‰Þ¨ ÞžÞ¦ÞŠÞ°Þ™Þ§ Þ‡Þ¦Þ‹Þ¨ Þ‰Þ¨Þ‡Þ§ ÞŽÞªÞ…Þ­ Þ„Þ¦Þ€ÞªÞÞ° ÞŽÞ¬ ÞžÞ¦ÞŠÞ°Þ™Þ§ Þ‡Þ¦ÞÞ° ÞŽÞ¬Þ‚Þ¬ÞˆÞ­ އުނިއިތުރު ތަކުގެ Þ‰Þ¦Þ‡ÞªÞޫމާތު Þ‰Þ¨ÞžÞ¦ÞŠÞ°Þ€Þ§Þ‡Þ¦ÞÞ° ÞÞ¬ÞˆÞ­Þ‚Þ¬Þ‡Þ¬ÞˆÞ¬. Þ‡Þ¦Þ‹Þ¨ Þ‡Þ¬ ޞަފްޙާތަކުގެ Þަނާހަތު ÞŠÞ¦ÞÞ­Þ€Þ¦ Þ†ÞªÞƒÞªÞ‰Þ¦ÞÞ°Þ“Þ¦Þ†Þ¦Þ‡Þ¨ [[Special:ÞŠÞ¦Þ€Þª Þ„Þ¦Þ‹Þ¦Þުތައް|ÞŠÞ¦Þ€Þª Þ„Þ¦Þ‹Þ¦Þުތަކުގެ ÞŠÞ¨Þ€ÞªÞƒÞ¨Þްތު]] ÞŽÞ¦Þ‡Þ¨ އެބައިތައް '''Þ„Þ¯''' (bold) Þ‡Þ¦Þ†ÞªÞƒÞªÞ‚Þ° ÞÞ¨Þ”Þ¬ÞˆÞ­Þ‚Þ¬Þ‡Þ¬ÞˆÞ¬. <p> Þ†Þ®Þ‚Þ°Þ‰Þ¬ Þ‡Þ¨ÞƒÞ¦Þ†ÞªÞˆÞ¬ÞÞ° ތިޔަބޭފުޅާ Þ€Þ§Þ‡Þ°ÞÞ¦ Þ‚Þ¦Þ’Þ¦ÞƒÞªÞŽÞ¬ ÞŠÞ¨Þ€ÞªÞƒÞ¨Þްތުން Þ‰Þ¨ ÞžÞ¦ÞŠÞ°Þ™Þ§ Þ‡ÞªÞ‚Þ¨Þ†ÞªÞƒÞ¦Þ‡Þ°ÞˆÞ¦Þ‚Þ° Þ„Þ­Þ‚ÞªÞ‚Þ°ÞŠÞªÞ…Þ¨Þ‡Þ°Þ”Þ§ މަތީގައި Þ‹Þ¬ÞˆÞ¨ÞŠÞ¦Þ‡Þ¨ÞˆÞ§ \"Þ€Þ§Þ‡Þ°ÞÞ¦ Þ‚Þ¦Þ’Þ¦ÞƒÞªÞ‚Þ° Þ‡ÞªÞ‚Þ¨Þ†ÞªÞƒÞ­\" ÞŽÞ¦Þ‡Þ¨ Þ†Þ®Þ‡Þ°Þ“Þ¦ÞˆÞ§ ÞÞ¦Þ‡Þ°ÞˆÞ§ÞÞ¬ÞˆÞ¬.",
'watch' => 'Þ‚Þ¦Þ’Þ¦ÞƒÞªÞ„Þ¦Þ€Þ¦Þ‡Þ°Þ“Þ¦ÞˆÞ§',
'watchthispage' => 'Þ‰Þ¨ ÞžÞ¦ÞŠÞ°Þ™Þ§Þ‡Þ¦ÞÞ° Þ‚Þ¦Þ’Þ¦ÞƒÞªÞ„Þ¦Þ€Þ¦Þ‡Þ°Þ“Þ¦ÞˆÞ§',
@@ -470,7 +468,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
'exif-gpsspeed-n' => 'ތަÞÞ°ÞˆÞ©ÞƒÞªÞŽÞ¬ ÞÞªÞƒÞªÞ€Þ©',
# 'all' in various places, this might be different for inflected languages
-'imagelistall' => 'Þ€ÞªÞƒÞ¨Þ€Þ§',
'watchlistall2' => 'Þ€ÞªÞƒÞ¨Þ€Þ§',
'namespacesall' => 'Þ€ÞªÞƒÞ¨Þ€Þ§',
diff --git a/languages/messages/MessagesDz.php b/languages/messages/MessagesDz.php
index 662f85a3..bade9a60 100644
--- a/languages/messages/MessagesDz.php
+++ b/languages/messages/MessagesDz.php
@@ -187,7 +187,7 @@ $messages = array(
'loginsuccess' => "'''ད་འབདན་à½à¾±à½¼à½‘་ {{SITENAME}} ནང་ \"\$1\" སྦེ་ ནང་བསà¾à¾±à½¼à½‘་འབད་ཡོདཔà¼'''",
'nosuchuser' => 'མིང་ "$1" བཟུམ་གྱི་ལག་ལེན་པ་མེདà¼
སྡེབ་དཔྱད་འབད་ ཡང་ན་ རྩིས་à½à½¼à¼‹à½‚སརཔ་ཅིག་བཟོà¼',
-'nosuchusershort' => 'མིང་ "<nowiki>$1</nowiki>" བཟུམ་གྱི་ལག་ལེན་པ་མེདà¼
+'nosuchusershort' => 'མིང་ "$1" བཟུམ་གྱི་ལག་ལེན་པ་མེདà¼
སྡེབ་དཔྱད་འབདà¼',
'nouserspecified' => 'ལག་ལེན་པའི་མིང་ གསལ་བཀོད་འབད་དགོà¼',
'wrongpassword' => 'མ་བདེན་པའི་ཆོག་ཡིག་བཙུགས་ཡོདཔ༠ལོག་འབད་རྩོལ་བསà¾à¾±à½ºà½‘à¼',
@@ -208,7 +208,7 @@ $messages = array(
'eauthentsent' => 'ངེས་དཔྱད་གློག་འཕྲིན་འདི་ གདམ་à½à¼‹à½–རà¾à¾±à½–ས་ཡོད་པའི་གློག་འཕྲིན་à½à¼‹à½–ྱང་ལུ་ བà½à½„་ཡོདཔà¼
གཞན་གློག་འཕྲིན་གང་རུང་ རྩིས་à½à½¼à¼‹à½“ང་མ་གà½à½„་པའི་ཧེ་མ་ རྩིས་à½à½¼à¼‹à½ à½‘ི་à½à¾±à½¼à½‘་ར་གི་ཨིན་པའི་ངེས་དཔྱད་འབད་ནི་ལུ་ གློག་འཕྲིན་ནང་གི་བཀོད་རྒྱ་དང་འà½à¾²à½²à½£à¼‹à½‘གོཔ་ཨིནà¼',
-# Password reset dialog
+# Change password dialog
'retypenew' => 'ཆོག་ཡིག་གསརཔ་ལོག་ཡིག་དཔར་རà¾à¾±à½–ས:',
# Edit page toolbar
@@ -222,8 +222,6 @@ $messages = array(
'extlink_tip' => 'ཕྱིའི་འབྲེལ་ལམ་ (http:// prefix སེམས་à½à½¢à¼‹à½–ཞག)',
'headline_sample' => 'གཙོ་དོན་ཚིག་ཡིགà¼',
'headline_tip' => 'གནས་རིམ་ ༢ གཙོ་དོནà¼',
-'math_sample' => 'ནཱ་ལུ་ à½à½–ས་རྟགས་བཙུགསà¼',
-'math_tip' => 'ཨང་རྩིས་à½à½–ས་རྟགས་ (LaTeX)',
'nowiki_sample' => 'ནཱ་ལུ་ རྩ་སྒྲིག་མ་འབད་བའི་ཚིག་ཡིག་བཙུགསà¼',
'nowiki_tip' => 'à½à½²à¼‹à½€à½²à¼‹à½¢à¾©à¼‹à½¦à¾’ྲིག་ སྣང་མེད་བཞགà¼',
'image_tip' => 'གནས་འདྲེན་ཡིག་སྣོདà¼',
@@ -466,10 +464,8 @@ $messages = array(
# Watchlist
'watchlist' => 'ངེ་གི་བལྟ་ཞིབ་à½à½¼à¼‹à½¡à½²à½‚à¼',
'mywatchlist' => 'ངེ་གི་བལྟ་ཞིབ་à½à½¼à¼‹à½¡à½²à½‚à¼',
-'addedwatch' => 'བལྟ་ཞིབ་à½à½¼à¼‹à½¡à½²à½‚་ལུ་à½à¼‹à½¦à¾à½¼à½„་རà¾à¾±à½–་ཅིà¼',
'addedwatchtext' => "ཤོག་ལེབ་ \"[[:\$1]]\" འདི་ à½à¾±à½¼à½‘་རའི་ [[Special:Watchlist|watchlist]] ལུ་ à½à¼‹à½¦à¾à½¼à½„་བརà¾à¾±à½–ས་ནུགà¼\\n
ཤོག་ལེབ་དེ་ལུ་མ་འོངས་བསྒྱུར་བཅོས་དང་ དེ་གི་འབྲེལ་ཡོད་བློ་ཤོག་འདི་ དེ་à½à½¢à¼‹à½à½¼à¼‹à½–ཀོད་འབད་ནི་དང་ འཇམ་à½à½¼à½„་à½à½¼à¼‹à½¦à¾¦à½ºà¼‹à½‚དམ་à½à¼‹à½–རà¾à¾±à½–་ཚུགས་ནི་གི་དོན་ལུ་ ཤོག་ལེབ་འདི་ [[Special:RecentChanges|list of recent changes]] ནང་ལུ་ '''མངོན་གསལ་''' སྦེ་འབྱུང་འོང་à¼",
-'removedwatch' => 'བལྟ་ཞིབ་à½à½¼à¼‹à½¡à½²à½‚་ནང་ལས་བà½à½¼à½“་བཀོག་ཡོདཔà¼',
'removedwatchtext' => 'ཤོག་ལེབ་ "[[:$1]]" འདི་ [[Special:Watchlist|your watchlist]] ལས་ བà½à½¼à½“་བཀོག་ནུགà¼',
'watch' => 'བལྟ་ཞིབ་འབདà¼',
'watchthispage' => 'ཤོག་ལེབ་འདི་ལྟà¼',
@@ -487,7 +483,7 @@ $messages = array(
'confirmdeletetext' => 'à½à¾±à½¼à½‘་ཀྱིས་ ཤོག་ལེབ་དང་དེའི་སྤྱོད་ཤུལ་ བà½à½¼à½“་གà½à½„་ནི་འབད་དོà¼
à½à¾±à½¼à½‘་ཀྱིས་འདི་འབད་ནི་དང་ དེ་འབད་བ་ཅིན་ དེ་གི་འབྲེལ་འབྱུང་ དེ་ལས་ à½à¾±à½¼à½‘་ཀྱིས་འབད་མི་འདི་ [[{{MediaWiki:Policy-url}}| སྲིད་བྱུས་]] དང་འà½à¾²à½²à½£à¼‹à½à½ºà¼‹à½¨à½²à½“་པའི་ངེས་དཔྱད་འབད་གནང་à¼',
'actioncomplete' => 'བྱ་ལས་མཇུག་བསྡུà¼',
-'deletedtext' => '"<nowiki>$1</nowiki>" འདི་ བà½à½¼à½“་བཀོག་ནུགà¼
+'deletedtext' => '"$1" འདི་ བà½à½¼à½“་བཀོག་ནུགà¼
འཕྲལ་à½à½˜à½¦à¼‹à½£à½´à¼‹à½–à½à½¼à½“་བཀོག་མི་à½à½¼à¼‹à½‚ི་དོན་ལུ་ $2 ལུ་བལྟà¼',
'deletedarticle' => '"[[$1]]" བà½à½¼à½“་གà½à½„་ཡོདཔà¼',
'dellogpage' => 'བà½à½¼à½“་གà½à½„་ཡོད་པའི་ལོགà¼',
@@ -505,7 +501,7 @@ $messages = array(
'protectexpiry' => 'དུས་ཡོལ:',
'protect_expiry_invalid' => 'དུས་ཡོལ་དུས་ཚོད་འདི་ ནུས་མེད་ཨིན་པསà¼',
'protect_expiry_old' => 'དུས་ཡོལ་དུས་ཚོད་འདི་ཚར་ནུགà¼',
-'protect-text' => "à½à¾±à½¼à½‘་ཀྱིས་ ནཱ་ལུ་ ཤོག་ལེབ་ '''<nowiki>$1</nowiki>''' གི་དོན་ལུ་ ཉེན་སà¾à¾±à½¼à½–་གནས་རིམ་འདི་བསྒྱུར་བཅོས་རà¾à¾±à½–་བà½à½´à½–à¼",
+'protect-text' => "à½à¾±à½¼à½‘་ཀྱིས་ ནཱ་ལུ་ ཤོག་ལེབ་ '''$1''' གི་དོན་ལུ་ ཉེན་སà¾à¾±à½¼à½–་གནས་རིམ་འདི་བསྒྱུར་བཅོས་རà¾à¾±à½–་བà½à½´à½–à¼",
'protect-locked-access' => "à½à¾±à½¼à½‘་ཀྱི་རྩིས་à½à½¼à¼‹à½“ང་ ཤོག་ལེབ་ཉེན་སà¾à¾±à½¼à½–་གནས་རིམ་བསྒྱུར་བཅོས་འབད་ནིའི་གནང་བ་མིན་འདུགà¼
ད་ལྟོ་ནཱ་ལུ་ཡོད་པའི་སྒྲིག་སྟངས་འདི་ ཤོག་ལེབ་ '''$1''' གི་དོན་ལུ་ཨིན་:",
'protect-cascadeon' => 'འོག་གི་ཀསི་ཀེ་ཌིངཉེན་སà¾à¾±à½¼à½–་ཤུགས་ཅན་བཟོ་ཡོད་པའི་ {{PLURAL:$1|ཤོག་ལེབ| ཤོག་ལེབ་་ཚུ་}} གི་གྲངས་སུ་ཚུད་ཡོདཔ་ལས་ ཤོག་ལེབ་འདི་ ད་ལྟོ་ཉེན་སà¾à¾±à½¼à½–་འབད་དེ་འདུགà¼
@@ -655,11 +651,10 @@ $messages = array(
'nextdiff' => 'ཤུལ་མམ་གྱི་à½à¾±à½‘་པར་ →',
# Media information
-'file-info-size' => '$1 × $2 པིག་སེལ་ ཡིག་སྣོད་ཀྱི་ཚད་: $3 མའིམ་དབྱེ་བ་: $4',
-'file-nohires' => '<small>ཧུམ་ཆ་ལེགས་ཤོམ་མིན་འདུགà¼</small>',
-'svg-long-desc' => 'ཨེསི་བི་ཇི་ཡིག་སྣོད་ $1 × $2 པིག་སེལསི་ཆུང་སུ་ཅིག་ ཡིག་སྣོད་ཚད་: $3',
-'show-big-image' => 'ཧུམ་ཆ་གང་à¼',
-'show-big-image-thumb' => '<small>སྔོན་ལྟའི་ཚད་: $1 × $2 པིག་སེལསི་</small>',
+'file-info-size' => '$1 × $2 པིག་སེལ་ ཡིག་སྣོད་ཀྱི་ཚད་: $3 མའིམ་དབྱེ་བ་: $4',
+'file-nohires' => '<small>ཧུམ་ཆ་ལེགས་ཤོམ་མིན་འདུགà¼</small>',
+'svg-long-desc' => 'ཨེསི་བི་ཇི་ཡིག་སྣོད་ $1 × $2 པིག་སེལསི་ཆུང་སུ་ཅིག་ ཡིག་སྣོད་ཚད་: $3',
+'show-big-image' => 'ཧུམ་ཆ་གང་à¼',
# Special:NewFiles
'newimages' => 'ཡིག་སྣོད་གསར་པའི་སྟོན་à½à½„་à¼',
@@ -685,11 +680,17 @@ $messages = array(
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'ཕྱིའི་གློག་རིམ་ལག་ལེན་འà½à½–་à½à½¼à½‚་ལས་ ཡིག་སྣོད་འདི་ཞུན་དག་འབདà¼',
-'edit-externally-help' => 'བརྡ་དོན་à½à¼‹à½‚སལ་གྱི་དོན་ལུ་ [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] ལུ་ལྟà¼',
+'edit-externally-help' => 'བརྡ་དོན་à½à¼‹à½‚སལ་གྱི་དོན་ལུ་ [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] ལུ་ལྟà¼',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ཆ་མཉམà¼',
diff --git a/languages/messages/MessagesEe.php b/languages/messages/MessagesEe.php
index 0a879a9c..9317ce82 100644
--- a/languages/messages/MessagesEe.php
+++ b/languages/messages/MessagesEe.php
@@ -491,7 +491,6 @@ Zã [[Special:Search|nuwo didi le wiki sia dzi]] kpɔ na axa yeyeawo.',
'ipb-blocklist-contribs' => '$1 ƒe nuŋɔŋlɔwo',
'ipusubmit' => 'Ɖe mɔxexe sia ɖa',
'ipblocklist-submit' => 'Dii',
-'blocklistline' => '$1, $2 xemÉ” na $3 ($4)',
'infiniteblock' => 'tegbee',
'expiringblock' => 'ewunu le gaÆ’oÆ’o $2 le Å‹keke $1 dzi',
'createaccountblock' => 'woxe mɔ na ŋkɔa ŋɔŋlɔ',
@@ -571,14 +570,12 @@ Wòateŋu akpɔ alesi woŋlɔe.',
'ilsubmit' => 'Dii',
# External editor support
-'edit-externally-help' => '(Kpɔ [http://www.mediawiki.org/wiki/Manual:External_editors gɔmedzedze sewo] na kpekpeɖeŋu bubuwo.)',
+'edit-externally-help' => '(Kpɔ [//www.mediawiki.org/wiki/Manual:External_editors gɔmedzedze sewo] na kpekpeɖeŋu bubuwo.)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'wokatã',
-'imagelistall' => 'wokatã',
-'watchlistall2' => 'katã',
-'namespacesall' => 'wokatã',
-'monthsall' => 'wokatã',
+'watchlistall2' => 'katã',
+'namespacesall' => 'wokatã',
+'monthsall' => 'wokatã',
# Multipage image navigation
'imgmultipagenext' => 'axa yometÉ”',
diff --git a/languages/messages/MessagesEl.php b/languages/messages/MessagesEl.php
index 877d333c..abc9a88c 100644
--- a/languages/messages/MessagesEl.php
+++ b/languages/messages/MessagesEl.php
@@ -86,94 +86,94 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ΔιπλέςΑνακατευθÏνσεις' ),
+ 'Activeusers' => array( 'ΕνεÏγοίΧÏήστες' ),
+ 'Allmessages' => array( 'ΌλαΤαΜηνÏματα' ),
+ 'Allpages' => array( 'ΌλεςΟιΣελίδες' ),
+ 'Ancientpages' => array( 'ΑÏχαίεςΣελίδες' ),
+ 'Blankpage' => array( 'ΚενήΣελίδα' ),
+ 'Block' => array( 'ΦÏαγή', 'ΦÏαγήIP', 'ΦÏαγήΧÏήστη' ),
+ 'Blockme' => array( 'ΦÏαγήΕμένα' ),
+ 'Booksources' => array( 'ΠηγέςΒιβλίων' ),
'BrokenRedirects' => array( 'ΛανθασμένεςΑνακατευθÏνσεις' ),
- 'Disambiguations' => array( 'Αποσαφηνίσεις' ),
- 'Userlogin' => array( 'ΣÏνδεσηΧÏήστη' ),
- 'Userlogout' => array( 'ΑποσÏνδεσηΧÏήστη' ),
+ 'Categories' => array( 'ΚατηγοÏίες' ),
+ 'ChangePassword' => array( 'ΑλλαγήΚωδικοÏ', 'ΑÏχικοποίησηΠάσου', 'ΑÏχικοποίησηΚωδικοÏ' ),
+ 'Confirmemail' => array( 'ΕπιβεβαίωσηEmail' ),
+ 'Contributions' => array( 'ΣυνεισφοÏές' ),
'CreateAccount' => array( 'ΔημιουÏγίαΛογαÏιασμοÏ' ),
- 'Preferences' => array( 'ΠÏοτιμήσεις' ),
- 'Watchlist' => array( 'ΛίσταΠαÏακολοÏθησης' ),
- 'Recentchanges' => array( 'ΠÏόσφατεςΑλλαγές' ),
- 'Upload' => array( 'ΕπιφόÏτωση' ),
+ 'Deadendpages' => array( 'ΑδιέξοδεςΣελίδες' ),
+ 'DeletedContributions' => array( 'ΔιαγÏαμμένεςΣυνεισφοÏές' ),
+ 'Disambiguations' => array( 'Αποσαφηνίσεις' ),
+ 'DoubleRedirects' => array( 'ΔιπλέςΑνακατευθÏνσεις' ),
+ 'Emailuser' => array( 'EmailΧÏήστη' ),
+ 'Export' => array( 'Εξαγωγή' ),
+ 'Fewestrevisions' => array( 'ΛιγότεÏοΕπεξεÏγασίες' ),
+ 'FileDuplicateSearch' => array( 'ΑναζήτησηΔιπλώνΑÏχείων' ),
+ 'Filepath' => array( 'ΔιαδÏομήΑÏχείου' ),
+ 'Import' => array( 'Εισαγωγή' ),
+ 'Invalidateemail' => array( 'ΑκÏÏωσηEmail' ),
+ 'BlockList' => array( 'ΚατάλογοςΦÏαγών', 'ΦÏαγώνΚατάλογος', 'ΚατάλογοςΦÏαγώνIP' ),
+ 'LinkSearch' => array( 'ΣυνδέσμουΑναζήτηση' ),
+ 'Listadmins' => array( 'ΚατάλογοςΔιαχειÏιστών' ),
+ 'Listbots' => array( 'ΚατάλογοςBot' ),
'Listfiles' => array( 'ΚατάλογοςΑÏχείων', 'ΑÏχείαΚατάλογος', 'ΚατάλογοςΕικόνων' ),
- 'Newimages' => array( 'ÎέαΑÏχεία', 'ÎέεςΕικόνες' ),
- 'Listusers' => array( 'ΚατάλογοςΧÏηστών', 'ΧÏήστεςΚατάλογος' ),
'Listgrouprights' => array( 'ΚατάλογοςΔικαιωμάτωνΧÏηστών' ),
- 'Statistics' => array( 'Στατιστικά' ),
- 'Randompage' => array( 'Τυχαία', 'ΤυχαίαΣελίδα' ),
+ 'Listredirects' => array( 'ΚατάλογοςΑνακατευθÏνσεων' ),
+ 'Listusers' => array( 'ΚατάλογοςΧÏηστών', 'ΧÏήστεςΚατάλογος' ),
+ 'Lockdb' => array( 'ΚλείδωμαΒάσης' ),
+ 'Log' => array( 'ΜητÏώο', 'ΜητÏώα' ),
'Lonelypages' => array( 'ΜόνεςΣελίδες', 'ΟÏφανέςΣελίδες' ),
- 'Uncategorizedpages' => array( 'ΑκατηγοÏιοποίητεςΣελίδες' ),
- 'Uncategorizedcategories' => array( 'ΑκατηγοÏιοποίητεςΚατηγοÏίες' ),
- 'Uncategorizedimages' => array( 'ΑκατηγοÏιοποίηταΑÏχεία', 'ΑκατηγοÏιοποίητεςΕικόνες' ),
- 'Uncategorizedtemplates' => array( 'ΑκατηγοÏιοποίηταΠÏότυπα' ),
- 'Unusedcategories' => array( 'ΑχÏησιμοποίητεςΚατηγοÏίες' ),
- 'Unusedimages' => array( 'ΑχÏησιμοποίηταΑÏχεία' ),
- 'Wantedpages' => array( 'ΕπιθυμητέςΣελίδες', 'ΣπασμένοιΣÏνδεσμοι' ),
- 'Wantedcategories' => array( 'ΕπιθυμητέςΚατηγοÏίες' ),
- 'Wantedfiles' => array( 'ΕπιθυμητάΑÏχεία' ),
- 'Wantedtemplates' => array( 'ΕπιθυμητάΠÏότυπα' ),
+ 'Longpages' => array( 'ΜεγάλεςΣελίδες' ),
+ 'MergeHistory' => array( 'ΣυγχώνευσηΙστοÏικοÏ' ),
+ 'MIMEsearch' => array( 'ΑναζήτησηMIME' ),
+ 'Mostcategories' => array( 'ΠεÏισσότεÏοΚατηγοÏίες' ),
+ 'Mostimages' => array( 'ΠεÏισσότεÏοΣυνδεδεμέναΑÏχεία', 'ΠεÏισσότεÏοΑÏχεία' ),
'Mostlinked' => array( 'ΠεÏισσότεÏοΣυνδεδεμένεςΣελίδες', 'ΠεÏισσότεÏοΣυνδεδεμένες' ),
'Mostlinkedcategories' => array( 'ΠεÏισσότεÏοΣυνδεδεμένεςΚατηγοÏίες', 'ΠεÏισσότεÏοΧÏησιμοποιημένεςΚατηγοÏίες' ),
'Mostlinkedtemplates' => array( 'ΠεÏισσότεÏοΣυνδεδεμέναΠÏότυπα', 'ΠεÏισσότεÏοΧÏησιμοποιημέναΠÏότυπα' ),
- 'Mostimages' => array( 'ΠεÏισσότεÏοΣυνδεδεμέναΑÏχεία', 'ΠεÏισσότεÏοΑÏχεία' ),
- 'Mostcategories' => array( 'ΠεÏισσότεÏοΚατηγοÏίες' ),
'Mostrevisions' => array( 'ΠεÏισσότεÏοΕπεξεÏγασίες' ),
- 'Fewestrevisions' => array( 'ΛιγότεÏοΕπεξεÏγασίες' ),
- 'Shortpages' => array( 'ΜικÏέςΣελίδες' ),
- 'Longpages' => array( 'ΜεγάλεςΣελίδες' ),
+ 'Movepage' => array( 'ΜετακίνησηΣελίδας' ),
+ 'Mycontributions' => array( 'ΟιΣυνεισφοÏέςΜου' ),
+ 'Mypage' => array( 'ΗΣελίδαΜου' ),
+ 'Mytalk' => array( 'ΗΣυζήτησήΜου' ),
+ 'Newimages' => array( 'ÎέαΑÏχεία', 'ÎέεςΕικόνες' ),
'Newpages' => array( 'ÎέεςΣελίδες' ),
- 'Ancientpages' => array( 'ΑÏχαίεςΣελίδες' ),
- 'Deadendpages' => array( 'ΑδιέξοδεςΣελίδες' ),
+ 'Popularpages' => array( 'ΔημοφιλείςΣελίδες' ),
+ 'Preferences' => array( 'ΠÏοτιμήσεις' ),
+ 'Prefixindex' => array( 'ΕυÏετήÏιοΠÏοθεμάτων' ),
'Protectedpages' => array( 'ΠÏοστατευμένεςΣελίδες' ),
'Protectedtitles' => array( 'ΠÏοστετευμένοιΤίτλοι' ),
- 'Allpages' => array( 'ΌλεςΟιΣελίδες' ),
- 'Prefixindex' => array( 'ΕυÏετήÏιοΠÏοθεμάτων' ),
- 'Ipblocklist' => array( 'ΚατάλογοςΦÏαγών', 'ΦÏαγώνΚατάλογος', 'ΚατάλογοςΦÏαγώνIP' ),
- 'Specialpages' => array( 'ΕιδικέςΣελίδες' ),
- 'Contributions' => array( 'ΣυνεισφοÏές' ),
- 'Emailuser' => array( 'EmailΧÏήστη' ),
- 'Confirmemail' => array( 'ΕπιβεβαίωσηEmail' ),
- 'Whatlinkshere' => array( 'ΤιΣυνδέειΕδώ' ),
+ 'Randompage' => array( 'Τυχαία', 'ΤυχαίαΣελίδα' ),
+ 'Randomredirect' => array( 'ΤυχαίαΑνακατεÏθυνση' ),
+ 'Recentchanges' => array( 'ΠÏόσφατεςΑλλαγές' ),
'Recentchangeslinked' => array( 'ΣυνδεδεμένεςΠÏόσφατεςΑλλαγές', 'ΣχετικέςΑλλαγές' ),
- 'Movepage' => array( 'ΜετακίνησηΣελίδας' ),
- 'Blockme' => array( 'ΦÏαγήΕμένα' ),
- 'Booksources' => array( 'ΠηγέςΒιβλίων' ),
- 'Categories' => array( 'ΚατηγοÏίες' ),
- 'Export' => array( 'Εξαγωγή' ),
- 'Version' => array( 'Έκδοση' ),
- 'Allmessages' => array( 'ΌλαΤαΜηνÏματα' ),
- 'Log' => array( 'ΜητÏώο', 'ΜητÏώα' ),
- 'Blockip' => array( 'ΦÏαγή', 'ΦÏαγήIP', 'ΦÏαγήΧÏήστη' ),
+ 'Revisiondelete' => array( 'ΔιαγÏαφήΈκδοσης' ),
+ 'Search' => array( 'Αναζήτηση' ),
+ 'Shortpages' => array( 'ΜικÏέςΣελίδες' ),
+ 'Specialpages' => array( 'ΕιδικέςΣελίδες' ),
+ 'Statistics' => array( 'Στατιστικά' ),
+ 'Tags' => array( 'Ετικέτες' ),
+ 'Uncategorizedcategories' => array( 'ΑκατηγοÏιοποίητεςΚατηγοÏίες' ),
+ 'Uncategorizedimages' => array( 'ΑκατηγοÏιοποίηταΑÏχεία', 'ΑκατηγοÏιοποίητεςΕικόνες' ),
+ 'Uncategorizedpages' => array( 'ΑκατηγοÏιοποίητεςΣελίδες' ),
+ 'Uncategorizedtemplates' => array( 'ΑκατηγοÏιοποίηταΠÏότυπα' ),
'Undelete' => array( 'ΑναίÏεσηΔιαγÏαφής' ),
- 'Import' => array( 'Εισαγωγή' ),
- 'Lockdb' => array( 'ΚλείδωμαΒάσης' ),
'Unlockdb' => array( 'ΞεκλείδωμαΒάσης' ),
- 'Userrights' => array( 'ΔικαιώματαΧÏηστών' ),
- 'MIMEsearch' => array( 'ΑναζήτησηMIME' ),
- 'FileDuplicateSearch' => array( 'ΑναζήτησηΔιπλώνΑÏχείων' ),
- 'Unwatchedpages' => array( 'ΜηΠαÏακολουθοÏμενεςΣελίδες' ),
- 'Listredirects' => array( 'ΚατάλογοςΑνακατευθÏνσεων' ),
- 'Revisiondelete' => array( 'ΔιαγÏαφήΈκδοσης' ),
+ 'Unusedcategories' => array( 'ΑχÏησιμοποίητεςΚατηγοÏίες' ),
+ 'Unusedimages' => array( 'ΑχÏησιμοποίηταΑÏχεία' ),
'Unusedtemplates' => array( 'ΜηΧÏησιμοποιοÏμεναΠÏότυπα' ),
- 'Randomredirect' => array( 'ΤυχαίαΑνακατεÏθυνση' ),
- 'Mypage' => array( 'ΗΣελίδαΜου' ),
- 'Mytalk' => array( 'ΗΣυζήτησήΜου' ),
- 'Mycontributions' => array( 'ΟιΣυνεισφοÏέςΜου' ),
- 'Listadmins' => array( 'ΚατάλογοςΔιαχειÏιστών' ),
- 'Listbots' => array( 'ΚατάλογοςBot' ),
- 'Popularpages' => array( 'ΔημοφιλείςΣελίδες' ),
- 'Search' => array( 'Αναζήτηση' ),
- 'Resetpass' => array( 'ΑλλαγήΚωδικοÏ', 'ΑÏχικοποίησηΠάσου', 'ΑÏχικοποίησηΚωδικοÏ' ),
+ 'Unwatchedpages' => array( 'ΜηΠαÏακολουθοÏμενεςΣελίδες' ),
+ 'Upload' => array( 'ΕπιφόÏτωση' ),
+ 'Userlogin' => array( 'ΣÏνδεσηΧÏήστη' ),
+ 'Userlogout' => array( 'ΑποσÏνδεσηΧÏήστη' ),
+ 'Userrights' => array( 'ΔικαιώματαΧÏηστών' ),
+ 'Version' => array( 'Έκδοση' ),
+ 'Wantedcategories' => array( 'ΕπιθυμητέςΚατηγοÏίες' ),
+ 'Wantedfiles' => array( 'ΕπιθυμητάΑÏχεία' ),
+ 'Wantedpages' => array( 'ΕπιθυμητέςΣελίδες', 'ΣπασμένοιΣÏνδεσμοι' ),
+ 'Wantedtemplates' => array( 'ΕπιθυμητάΠÏότυπα' ),
+ 'Watchlist' => array( 'ΛίσταΠαÏακολοÏθησης' ),
+ 'Whatlinkshere' => array( 'ΤιΣυνδέειΕδώ' ),
'Withoutinterwiki' => array( 'ΧωÏίςInterwiki' ),
- 'MergeHistory' => array( 'ΣυγχώνευσηΙστοÏικοÏ' ),
- 'Filepath' => array( 'ΔιαδÏομήΑÏχείου' ),
- 'Invalidateemail' => array( 'ΑκÏÏωσηEmail' ),
- 'Blankpage' => array( 'ΚενήΣελίδα' ),
- 'LinkSearch' => array( 'ΣυνδέσμουΑναζήτηση' ),
- 'DeletedContributions' => array( 'ΔιαγÏαμμένεςΣυνεισφοÏές' ),
- 'Tags' => array( 'Ετικέτες' ),
- 'Activeusers' => array( 'ΕνεÏγοίΧÏήστες' ),
);
$fallback8bitEncoding = 'iso-8859-7';
@@ -379,8 +379,8 @@ $messages = array(
'tog-shownumberswatching' => 'Εμφάνιση του αÏÎ¹Î¸Î¼Î¿Ï Ï„Ï‰Î½ συνδεδεμένων χÏηστών',
'tog-oldsig' => 'ΠÏοεπισκόπηση της υπάÏχουσας υπογÏαφής:',
'tog-fancysig' => 'ΜεταχείÏιση υπογÏαφής ως κείμενο wiki (χωÏίς έναν αυτόματο σÏνδεσμο)',
-'tog-externaleditor' => 'ΧÏήση εξωτεÏÎ¹ÎºÎ¿Ï ÎµÏ€ÎµÎ¾ÎµÏγαστή από Ï€Ïοεπιλογή (για Ï€ÏοχωÏημένους μόνο, χÏειάζεται ειδικές Ïυθμίσεις του υπολογιστή σας. [http://www.mediawiki.org/wiki/Manual:External_editors ΠεÏισσότεÏες πληÏοφοÏίες.])',
-'tog-externaldiff' => 'ΧÏήση εξωτεÏÎ¹ÎºÎ¿Ï diff από Ï€Ïοεπιλογή (για Ï€ÏοχωÏημένους μόνο, χÏειάζεται ειδικές Ïυθμίσεις του υπολογιστή σας. [http://www.mediawiki.org/wiki/Manual:External_editors ΠεÏισσότεÏες πληÏοφοÏίες.])',
+'tog-externaleditor' => 'ΧÏήση εξωτεÏÎ¹ÎºÎ¿Ï ÎµÏ€ÎµÎ¾ÎµÏγαστή από Ï€Ïοεπιλογή (για Ï€ÏοχωÏημένους μόνο, χÏειάζεται ειδικές Ïυθμίσεις του υπολογιστή σας. [//www.mediawiki.org/wiki/Manual:External_editors ΠεÏισσότεÏες πληÏοφοÏίες.])',
+'tog-externaldiff' => 'ΧÏήση εξωτεÏÎ¹ÎºÎ¿Ï diff από Ï€Ïοεπιλογή (για Ï€ÏοχωÏημένους μόνο, χÏειάζεται ειδικές Ïυθμίσεις του υπολογιστή σας. [//www.mediawiki.org/wiki/Manual:External_editors ΠεÏισσότεÏες πληÏοφοÏίες.])',
'tog-showjumplinks' => 'ΕνεÏγοποίησε τους συνδέσμους Ï€Ïοσβασιμότητας του Ï„Ïπου "μετάβαση σε"',
'tog-uselivepreview' => 'ΧÏησιμοποίησε άμεση Ï€Ïοεπισκόπηση (JavaScript) (ΠειÏαματικό)',
'tog-forceeditsummary' => 'Ειδοποίησέ με όταν εισάγω μια κενή σÏνοψη επεξεÏγασίας',
@@ -477,9 +477,7 @@ $messages = array(
'listingcontinuesabbrev' => 'συνεχίζεται...',
'index-category' => 'Συντεταγμένες σελίδες',
'noindex-category' => 'ΑσÏντακτες σελίδες',
-
-'mainpagetext' => "'''To λογισμικό MediaWiki εγκαταστάθηκε με επιτυχία.'''",
-'mainpagedocfooter' => 'ΠεÏισσότεÏες πληÏοφοÏίες σχετικά με τη χÏήση και με τη ÏÏθμιση παÏαμέτÏων θα βÏείτε στους συνδέσμους: [http://meta.wikimedia.org/wiki/MediaWiki_localisation Οδηγίες για Ï„Ïοποποίηση του πεÏιβάλλοντος εÏγασίας] και [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide ΕγχειÏίδιο χÏήστη].',
+'broken-file-category' => 'Σελίδες με κατεστÏαμμένες συνδέσεις',
'about' => 'Σχετικά',
'article' => 'Σελίδα κειμένου (ή άλλου πεÏιεχομένου)',
@@ -531,10 +529,10 @@ $messages = array(
'history' => 'ΙστοÏικό σελίδας',
'history_short' => 'ΙστοÏικό',
'updatedmarker' => 'ΕνημεÏωμένα από την τελευταία επίσκεψή μου',
-'info_short' => 'ΠληÏοφοÏίες',
'printableversion' => 'Εκτυπώσιμη έκδοση',
'permalink' => 'Μόνιμος σÏνδεσμος',
'print' => 'ΕκτÏπωση',
+'view' => 'ΠÏοβολή',
'edit' => 'ΕπεξεÏγασία',
'create' => 'ΔημιουÏγήστε',
'editthispage' => 'ΕπεξεÏγασία αυτής της σελίδας',
@@ -542,6 +540,7 @@ $messages = array(
'delete' => 'ΔιαγÏαφή',
'deletethispage' => 'ΔιαγÏαφή αυτής της σελίδας',
'undelete_short' => 'Îα αναστÏαφεί η διαγÏαφή {{PLURAL:$1|μιας επεξεÏγασίας|$1 επεξεÏγασιών}}.',
+'viewdeleted_short' => 'Δείτε {{PLURAL:$1|μια διαγεγÏαμμένη επεξεÏγασίαt|$1 διαγεγÏαμμένων επεξεÏγασιών}}',
'protect' => 'ΠÏοστασία',
'protect_change' => 'αλλαγή Ï€Ïοστασίας',
'protectthispage' => 'Κλείδωμα της σελίδας',
@@ -625,6 +624,8 @@ $1',
'toc' => 'Πίνακας πεÏιεχομένων',
'showtoc' => 'εμφάνιση',
'hidetoc' => 'απόκÏυψη',
+'collapsible-collapse' => 'ΚατάÏÏευση',
+'collapsible-expand' => 'Ανάπτυξη',
'thisisdeleted' => 'Εμφάνιση ή αποκατάσταση $1;',
'viewdeleted' => 'Δείτε το $1;',
'restorelink' => '{{PLURAL:$1|μίας διαγÏαμμένης επεξεÏγασίας|$1 διαγÏαμμένων επεξεÏγασιών}}',
@@ -636,6 +637,8 @@ $1',
'page-rss-feed' => '"$1" RSS ΣυνδÏομή',
'page-atom-feed' => '"$1" Atom ΣυνδÏομή',
'red-link-title' => '$1 (η σελίδα δεν υπάÏχει)',
+'sort-descending' => 'Φθίνουσα ταξινόμηση',
+'sort-ascending' => 'ΑÏξουσα ταξινόμηση',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'ΆÏθÏο',
@@ -716,12 +719,13 @@ $1',
'protectedpagetext' => 'Αυτή η σελίδα έχει κλειδωθεί για αποτÏοπή επεξεÏγασίας της.',
'viewsourcetext' => 'ΜποÏείτε να δείτε και να αντιγÏάψετε τον κώδικα αυτής της σελίδας:',
'protectedinterface' => 'Αυτή η σελίδα παÏέχει κείμενο διεπαφής για το λογισμικό, και έχει κλειδωθεί για Ï€Ïόληψη τυχόν βανδαλισμοÏ.',
-'editinginterface' => "'''ΠÏοσοχή:''' ΕπεξεÏγάζεστε μια σελίδα η οποία χÏησιμοποιείται για να παÏέχει κείμενο διεπαφής για το λογισμικό. Αλλαγές σε αυτή τη σελίδα θα επηÏεάσουν την εμφάνιση της διεπαφής χÏήστη για τους άλλους χÏήστες. Εάν θέλετε να διοÏθώσετε τη μετάφÏαση, μποÏείτε να χÏησιμοποιήσετε το [http://translatewiki.net/wiki/Main_Page?setlang=el translatewiki.net], που ασχολείται με τις μεταφÏάσεις των μηνυμάτων MediaWiki.",
+'editinginterface' => "'''ΠÏοσοχή:''' ΕπεξεÏγάζεστε μια σελίδα η οποία χÏησιμοποιείται για να παÏέχει κείμενο διεπαφής για το λογισμικό. Αλλαγές σε αυτή τη σελίδα θα επηÏεάσουν την εμφάνιση της διεπαφής χÏήστη για τους άλλους χÏήστες. Εάν θέλετε να διοÏθώσετε τη μετάφÏαση, μποÏείτε να χÏησιμοποιήσετε το [//translatewiki.net/wiki/Main_Page?setlang=el translatewiki.net], που ασχολείται με τις μεταφÏάσεις των μηνυμάτων MediaWiki.",
'sqlhidden' => '(το αίτημα SQL δεν εμφανίζεται)',
'cascadeprotected' => 'Αυτή η σελίδα έχει Ï€Ïοστατευθεί από επεξεÏγασία, επειδή πεÏιλαμβάνεται στις ακόλουθες {{PLURAL:$1|σελίδα|σελίδες}}, που είναι Ï€Ïοστατευμένες με την ενεÏγοποιημένη "διαδοχική" Ï€Ïοστασία στο:
$2',
'namespaceprotected' => "Δεν έχετε άδεια να επεξεÏγάζεστε σελίδες στον τομέα '''$1'''.",
-'customcssjsprotected' => 'Δεν έχετε δικαίωμα να επεξεÏγαστείτε αυτή τη σελίδα, γιατί πεÏιέχει Ï€Ïοσωπικές Ïυθμίσεις άλλου χÏήστη.',
+'customcssprotected' => 'Δεν έχετε δικαιώματα για να επεξεÏγαστείτε αυτή τη σελίδα CSS, επειδή πεÏιέχει Ï€Ïοσωπικές Ïυθμίσεις άλλου χÏήστη.',
+'customjsprotected' => 'Δεν έχετε δικαιώματα για να επεξεÏγαστείτε αυτή τη σελίδα JavaScript, επειδή πεÏιέχει Ï€Ïοσωπικές Ïυθμίσεις άλλου χÏήστη.',
'ns-specialprotected' => 'Σελίδες στον τομέα {{ns:special}} δεν γίνεται να επεξεÏγαστοÏν.',
'titleprotected' => "Αυτός ο τίτλος έχει Ï€Ïοστατευθεί από την δημιουÏγία από τον [[User:$1|$1]].
Ο λόγος που δίνεται είναι ''$2''.",
@@ -759,6 +763,7 @@ $2',
'createaccount' => 'ΔημιουÏγία νέου λογαÏιασμοÏ',
'gotaccount' => "Έχετε ήδη έναν λογαÏιασμό; '''$1'''.",
'gotaccountlink' => 'Είσοδος',
+'userlogin-resetlink' => 'Ξεχάσατε τα στοιχεία σÏνδεσής σας;',
'createaccountmail' => 'Με ηλεκτÏονικό ταχυδÏομείο',
'createaccountreason' => 'Αιτία:',
'badretype' => 'Οι κωδικοί που έχετε δηλώσει δεν συμφωνοÏν Î¼ÎµÏ„Î±Î¾Ï Ï„Î¿Ï…Ï‚.',
@@ -768,13 +773,15 @@ $2',
'createaccounterror' => 'Δεν ήταν δυνατή η δημιουÏγία λογαÏιασμοÏ: $1',
'nocookiesnew' => 'Ο λογαÏιασμός χÏήστη έχει δημιουÏγηθεί, αλλά δεν έχετε ακόμα συνδεθεί. Το {{SITENAME}} χÏησιμοποιεί cookies κατά τη σÏνδεση των χÏηστών. Τα cookies είναι απενεÏγοποιημένα στον υπολογιστή σας. ΠαÏακαλοÏμε ενεÏγοποιήστε τα και στη συνέχεια συνδεθείτε χÏησιμοποιώντας το νέο όνομα χÏήστη σας και τον κωδικό σας.',
'nocookieslogin' => 'Το {{SITENAME}} χÏησιμοποιεί cookies κατά τη σÏνδεση των χÏηστών. Τα cookies είναι απενεÏγοποιημένα στον υπολογιστή σας. ΠαÏακαλοÏμε ενεÏγοποιήστε τα και ξαναδοκιμάστε!',
+'nocookiesfornew' => 'Ο λογαÏιασμός χÏήστη δεν δημιουÏγήθηκε, καθώς δεν μποÏοÏσε να επιβεβαιώσει την πηγή του.
+ Βεβαιωθείτε ότι έχετε ενεÏγοποιήσει τα cookies, ξαναφοÏτώστε αυτή τη σελίδα και Ï€Ïοσπαθήστε ξανά.',
'noname' => 'Το όνομα χÏήστη που έχετε καθοÏίσει δεν είναι έγκυÏο.',
'loginsuccesstitle' => 'Επιτυχής σÏνδεση',
'loginsuccess' => 'Είστε συνδεδεμένος(-η) στο {{SITENAME}} ως "$1".',
'nosuchuser' => 'Δεν υπάÏχει χÏήστης με το όνομα "$1".
Τα ονόματα χÏηστών είναι ευαίσθητα σε κεφαλαιογÏάμματη και μικÏογÏάμματη γÏαφή.
Ελέγξτε την οÏθογÏαφία ή [[Special:UserLogin/signup|δημιουÏγήστε ένα νέο λογαÏιασμό]].',
-'nosuchusershort' => 'Δεν υπάÏχει χÏήστης με το όνομα "<nowiki>$1</nowiki>". ΠαÏακαλοÏμε ελέγξτε την οÏθογÏαφία.',
+'nosuchusershort' => 'Δεν υπάÏχει χÏήστης με το όνομα "$1". ΠαÏακαλοÏμε ελέγξτε την οÏθογÏαφία.',
'nouserspecified' => 'ΠÏέπει να οÏίσετε ένα όνομα χÏήστη.',
'login-userblocked' => 'Αυτός ο χÏήστης έχει αποκλειστεί. Δεν επιτÏέπεται σÏνδεση.',
'wrongpassword' => 'Ο κωδικός που πληκτÏολογήσατε είναι λανθασμένος. ΠαÏακαλοÏμε Ï€Ïοσπαθήστε ξανά.',
@@ -814,13 +821,14 @@ $2',
'usernamehasherror' => 'Το όνομα χÏήστη δεν μποÏεί να πεÏιέχει ειδικοÏÏ‚ χαÏακτήÏες',
'login-throttled' => 'Τελευταία κάνατε πάÏα πολλές απόπειÏες σÏνδεσης.
ΠαÏακαλοÏμε πεÏιμένετε Ï€ÏÎ¿Ï„Î¿Ï Î¾Î±Î½Î±Î´Î¿ÎºÎ¹Î¼Î¬ÏƒÎµÏ„Îµ.',
+'login-abort-generic' => 'Η είσοδος δεν πέτυχε - Ματαιώθηκε',
'loginlanguagelabel' => 'Γλώσσα: $1',
'suspicious-userlogout' => 'Το αίτημα αποσÏνδεσής σας απεÏÏίφθη επειδή φαίνεται ότι στάλθηκε από ένα λανθασμένο φυλλομετÏητή (browser) ή διακομιστή Ï€ÏοσωÏινής αποθήκευσης.',
# E-mail sending
'php-mail-error-unknown' => 'Άγνωστο σφάλμα στη συνάÏτηση της PHP mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Αλλαγή ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης',
'resetpass_announce' => 'Συνδεθήκατε με ένα Ï€ÏοσωÏινό κωδικό, σταλμένο με e-mail. Για να ολοκληÏώσετε την σÏνδεση, Ï€Ïέπει να στείλετε ένα νέο κωδικό εδώ:',
'resetpass_text' => '<!-- ΠÏοσθέστε κείμενο εδώ -->',
@@ -838,6 +846,31 @@ $2',
ΜποÏεί να έχετε ήδη αλλάξει επιτυχώς τον κωδικό σας ή να έχετε ζητήσει έναν νέο Ï€ÏοσωÏινό κωδικό.',
'resetpass-temp-password' => 'ΠÏοσωÏινός κωδικός:',
+# Special:PasswordReset
+'passwordreset' => 'Κωδικός επαναφοÏάς',
+'passwordreset-text' => 'ΣυμπληÏώστε αυτή τη φόÏμα για να λάβετε ένα e-mail υπενθÏμιση του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ±Ï‚.',
+'passwordreset-legend' => 'ΕπαναφοÏά ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης',
+'passwordreset-disabled' => 'Η ανάκτηση ÎºÏ‰Î´Î¹ÎºÎ¿Ï Ï€Ïόσβασης έχουν απενεÏγοποιηθεί σε αυτό το βίκι',
+'passwordreset-pretext' => '{{PLURAL:$1||Εισάγεται ένα από τα στοιχεία δεδομένων που βλέπετε παÏακάτω}}',
+'passwordreset-username' => 'Όνομα χÏήστη:',
+'passwordreset-email' => 'ΔιεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου:',
+'passwordreset-emailtitle' => 'ΛεπτομέÏειες λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î³Î¹Î± {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Κάποιος (πιθανώς εσείς, από την διεÏθυνση IP $1 ) ζήτησε μια υπενθÏμιση των λεπτομεÏειών του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ±Ï‚ σε {{SITENAME}} ($4). {{PLURAL:$3|Ο ακόλουθος λογαÏιασμός|Οι ακόλουθοι λογαÏιασμοί}} χÏήστη συνδέονται με αυτή τη διεÏθυνση e-mail:
+
+$2
+
+{{PLURAL:$3|Αυτός ο Ï€ÏοσωÏινός κωδικός Ï€Ïόσβασης θα λήξει| Αυτοί οι Ï€ÏοσωÏινοί κωδικοί Ï€Ïόσβασης θα λήξουν}} σε {{PLURAL:$5| μία ημέÏα| $5 ημέÏες}}.
+Θα Ï€Ïέπει να συνδεθείτε Ï„ÏŽÏα και να επιλέξετε ένα νέο κωδικό. Αν κάποιος άλλος έκανε αυτό το αίτημα ή αν έχετε θυμηθεί τον αÏχικό κωδικό Ï€Ïόσβασής σας, και δεν επιθυμείτε πια να τον αλλάξετε, μποÏείτε να αγνοήσετε αυτό το μήνυμα και να συνεχίσετε να χÏησιμοποιείτε τον παλιό σας κωδικό Ï€Ïόσβασης.',
+'passwordreset-emailtext-user' => 'Ο χÏήστης $1 στη {{SITENAME}} ζήτησε μια υπενθÏμιση των λεπτομεÏειών του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï ÏƒÎ±Ï‚ σε {{SITENAME}} ($4). {{PLURAL:$3|Ο ακόλουθος λογαÏιασμός|Οι ακόλουθοι λογαÏιασμοί}} χÏήστη συνδέονται με αυτή τη διεÏθυνση e-mail:
+
+$2
+
+{{PLURAL:$3|Αυτός ο Ï€ÏοσωÏινός κωδικός Ï€Ïόσβασης θα λήξει| Αυτοί οι Ï€ÏοσωÏινοί κωδικοί Ï€Ïόσβασης θα λήξουν}} σε {{PLURAL:$5| μία ημέÏα| $5 ημέÏες}}.
+Θα Ï€Ïέπει να συνδεθείτε Ï„ÏŽÏα και να επιλέξετε ένα νέο κωδικό. Αν κάποιος άλλος έκανε αυτό το αίτημα ή αν έχετε θυμηθεί τον αÏχικό κωδικό Ï€Ïόσβασής σας, και δεν επιθυμείτε πια να τον αλλάξετε, μποÏείτε να αγνοήσετε αυτό το μήνυμα και να συνεχίσετε να χÏησιμοποιείτε τον παλιό σας κωδικό Ï€Ïόσβασης.',
+'passwordreset-emailelement' => 'Όνομα χÏήστη: $1
+ΠÏοσωÏινός κωδικός Ï€Ïόσβασης:$2',
+'passwordreset-emailsent' => 'Ένα e-mail υπενθÏμισης έχει σταλεί.',
+
# Edit page toolbar
'bold_sample' => 'Έντονο κείμενο',
'bold_tip' => 'Έντονο κείμενο',
@@ -849,8 +882,6 @@ $2',
'extlink_tip' => 'ΕξωτεÏικός σÏνδεσμος (μην ξεχάστε το Ï€Ïόθεμα http:// )',
'headline_sample' => 'Κείμενο τίτλου',
'headline_tip' => 'ΔεÏτεÏος τίτλος (επίπεδο 2)',
-'math_sample' => 'Εισαγωγή Ï„Ïπου εδώ',
-'math_tip' => 'Μαθηματικός Ï„Ïπος (LaTeX)',
'nowiki_sample' => 'Εισάγετε εδώ το μη μοÏφοποιημένο κείμενο.',
'nowiki_tip' => 'Îα αγνοηθεί η μοÏφοποίηση Wiki.',
'image_sample' => 'paradeigma.jpg',
@@ -931,7 +962,7 @@ $2',
'noarticletext-nopermission' => 'Δεν υπάÏχει κείμενο σε αυτή τη σελίδα αυτή τη στιγμή.
ΜποÏείτε να [[Special:Search/{{PAGENAME}}|αναζητήσετε αυτόν τον τίτλο]] σε άλλες σελίδες,
ή <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} να αναζητήσετε τα σχετικά αÏχεία]</span>.',
-'userpage-userdoesnotexist' => 'Ο ΛογαÏιασμός του χÏήστη "$1" δεν είναι καταχωÏημένος. ΠαÏακαλώ δείτε αν θα θέλατε να δημιουÏγήσετε/επεξεÏγαστείτε αυτή τη σελίδα.',
+'userpage-userdoesnotexist' => 'Ο ΛογαÏιασμός του χÏήστη "<nowiki>$1</nowiki>" δεν είναι καταχωÏημένος. ΠαÏακαλώ δείτε αν θα θέλατε να δημιουÏγήσετε/επεξεÏγαστείτε αυτή τη σελίδα.',
'userpage-userdoesnotexist-view' => 'Ο λογαÏιασμός χÏήστη "$1" δεν είναι εγγεγÏαμμένος.',
'blocked-notice-logextract' => 'Επί του παÏόντος, αυτός ο χÏήστης έχει υποστεί φÏαγή. ΠαÏακάτω παÏέχεται για αναφοÏά η πιο Ï€Ïόσφατη καταχώÏηση του αÏχείου φÏαγών.',
'clearyourcache' => "'''Σημείωση:''' Μετά την αποθήκευση, ίσως χÏειαστεί να καθαÏίσετε την cache στον browser σας για να μποÏέσετε να δείτε τις αλλαγές: '''Mozilla / Firefox / Safari:''' κÏατώντας το ''Shift'' κάντε κλικ στο ''Ανανέωση'', ή πατήστε ''Ctrl-F5'' ή ''Ctrl-R''. '''Konqueror:''' κάντε κλικ στο ''Reload'' ή πατήστε ''F5''. '''Opera:''' : Πηγαίνετε ''ΕÏγαλεία → ΠÏοτιμήσεις''. '''Internet Explorer:''' κÏατώντας το ''Ctrl'' κάντε κλικ στο ''Ανανέωση'' ή πατήστε ''Ctrl-F5''.",
@@ -957,6 +988,7 @@ $2',
'''Αν αυτή είναι μια έγκυÏη Ï€Ïοσπάθεια επεξεÏγασίας, παÏακαλώ Ï€Ïοσπαθήστε ξανά. Αν πάλι δε δουλεÏει, δοκιμάστε να αποσυνδεθείτε και να συνδεθείτε πάλι.'''",
'token_suffix_mismatch' => "'''Η επεξεÏγασία σας αποÏÏίφθηκε γιατί το Ï€ÏόγÏαμμα-πελάτη σας κατακÏεοÏÏγησε τους χαÏακτήÏες στίξης στο κουπόνι επεξεÏγασίας. Η επεξεÏγασία αποÏÏίφθηκε για να αποφευχθεί η παÏαφθοÏά του κειμένου της σελίδας.
Αυτό μεÏικές φοÏές συμβαίνει όταν χÏησιμοποιείται ένας ανώνυμος διακομιστής μεσολάβησης διαθέσιμος μέσω του παγκόσμιου Î¹ÏƒÏ„Î¿Ï Î¼Îµ σφάλματα.'''",
+'edit_form_incomplete' => "'''ΟÏισμένα τμήματα της φόÏμας επεξεÏγασίας δεν έφθασαν στο διακομιστή. Ελέγξτε ότι οι αλλαγές σας είναι άθικτες και Ï€Ïοσπαθήστε ξανά.'''",
'editing' => 'ΕπεξεÏγασία $1',
'editingsection' => 'ΕπεξεÏγασία $1 (τμήμα)',
'editingcomment' => 'ΕπεξεÏγασία $1 (νέο τμήμα)',
@@ -1298,12 +1330,13 @@ $1",
'searchdisabled' => 'Η αναζήτηση για τον ιστότοπο "{{SITENAME}}" είναι απενεÏγοποιημένη. ΜποÏείτε να αναζητήσετε μέσω του Google εν τω μεταξÏ. Σημειώστε ότι οι κατάλογοί τους για το πεÏιεχόμενο του ιστοτόπου "{{SITENAME}}" μποÏεί να είναι απαÏχαιωμένοι.',
# Quickbar
-'qbsettings' => 'ΓÏήγοÏη Ï€Ïόσβαση',
-'qbsettings-none' => 'Καμία',
-'qbsettings-fixedleft' => 'ΣταθεÏά αÏιστεÏά',
-'qbsettings-fixedright' => 'ΣταθεÏά δεξιά',
-'qbsettings-floatingleft' => 'Πλανώμενα αÏιστεÏά',
-'qbsettings-floatingright' => 'Πλανώμενα δεξιά',
+'qbsettings' => 'ΓÏήγοÏη Ï€Ïόσβαση',
+'qbsettings-none' => 'Καμία',
+'qbsettings-fixedleft' => 'ΣταθεÏά αÏιστεÏά',
+'qbsettings-fixedright' => 'ΣταθεÏά δεξιά',
+'qbsettings-floatingleft' => 'Πλανώμενα αÏιστεÏά',
+'qbsettings-floatingright' => 'Πλανώμενα δεξιά',
+'qbsettings-directionality' => 'ΔιοÏθώθηκε, ανάλογα με τις κατευθÏνσεις του σεναÏίου εντολών της γλώσσας σας',
# Preferences page
'preferences' => 'ΠÏοτιμήσεις',
@@ -1314,9 +1347,10 @@ $1",
'changepassword' => 'Αλλαγή κωδικοÏ',
'prefs-skin' => 'Οπτική οÏγάνωση (skin)',
'skin-preview' => 'ΠÏοεπισκόπηση',
-'prefs-math' => 'Απόδοση μαθηματικών',
'datedefault' => 'ΧωÏίς Ï€Ïοτίμηση',
+'prefs-beta' => 'ΛειτουÏγίες της Beta',
'prefs-datetime' => 'ΗμεÏομηνία και ÏŽÏα',
+'prefs-labs' => 'ΛειτουÏγίες των Labs',
'prefs-personal' => 'Στοιχεία χÏήστη',
'prefs-rc' => 'ΠÏόσφατες αλλαγές και εμφάνιση Ï€Î¿Î»Ï ÏƒÏντομων άÏθÏων',
'prefs-watchlist' => 'Λίστα παÏακολοÏθησης',
@@ -1338,8 +1372,6 @@ $1",
'columns' => 'Στήλες',
'searchresultshead' => 'Αποτελέσματα αναζήτησης/Ρυθμίσεις',
'resultsperpage' => 'Αποτελέσματα ανά σελίδα',
-'contextlines' => 'ΣειÏές που θα εμφανίζονται ανά αποτέλεσμα',
-'contextchars' => 'ΑÏιθμός χαÏακτήÏων στο εμφανιζόμενο κείμενο',
'stub-threshold' => 'Κατώφλι για μοÏφοποίηση <span class="mw-stub-example">συνδέσμου επεκτάσιμου</span>:',
'stub-threshold-disabled' => 'ΑπενεÏγοποιημένο',
'recentchangesdays' => 'ΗμέÏες Ï€Ïος εμφάνιση στις Ï€Ïόσφατες αλλαγές:',
@@ -1352,7 +1384,7 @@ $1",
'savedprefs' => 'Οι Ï€Ïοτιμήσεις σας έχουν αποθηκευτεί.',
'timezonelegend' => 'Ζώνη ÏŽÏας:',
'localtime' => 'Εμφάνιση τοπικής ÏŽÏας:',
-'timezoneuseserverdefault' => 'ΧÏησιμοποίηση των Ï€Ïοεπιλογών του εξυπηÏετητή',
+'timezoneuseserverdefault' => 'ΧÏήση της Ï€Ïοεπιλογής του wiki ($1)',
'timezoneuseoffset' => 'Ἀλλη (καθοÏισμός της διαφοÏάς)',
'timezoneoffset' => 'ΔιαφοÏά ωÏών¹:',
'servertime' => 'Η ÏŽÏα του διακομιστή:',
@@ -1399,8 +1431,8 @@ $1",
'prefs-help-gender' => 'ΠÏοαιÏετικό: χÏησιμοποιείται για απεÏθυνση στο σωστό φÏλο από το λογισμικό. Αυτή η πληÏοφοÏία θα είναι δημόσια.',
'email' => 'ΗλεκτÏονικό ταχυδÏομείο',
'prefs-help-realname' => '* ΠÏαγματικό όνομα (Ï€ÏοαιÏετικό): εφόσον εισάγετε το όνομά σας, αυτό θα μποÏεί να χÏησιμοποιηθεί για να αναγνωÏιστεί η δουλειά σας.',
-'prefs-help-email' => 'Το ηλεκτÏονικό ταχυδÏομείο είναι Ï€ÏοαιÏετικό, ωστόσο δίνει τη δυνατότητα να σας αποσταλεί ένας νέος κωδικός στην πεÏίπτωση που ξεχάσετε τον κωδικό σας.
-ΜποÏείτε επίσης να επιτÏέψετε σε άλλους χÏήστες να επικοινωνήσουν μαζί σας μέσω της σελίδας χÏήστη ή της σελίδας συζήτησης χωÏίς να αποκαλÏπτεται η ταυτότητά σας.',
+'prefs-help-email' => 'Το ηλεκτÏονικό ταχυδÏομείο είναι Ï€ÏοαιÏετικό, ωστόσο δίνει τη δυνατότητα να σας αποσταλεί ένας νέος κωδικός στην πεÏίπτωση που ξεχάσετε τον κωδικό σας.',
+'prefs-help-email-others' => 'ΜποÏείτε επίσης να επιλέξετε να αφήσετε τους άλλους να επικοινωνήσουν μαζί σας μέσω της σελίδας χÏήστη ή συζήτησης χωÏίς να χÏειάζεται να αποκαλÏψετε την ταυτότητά σας.',
'prefs-help-email-required' => 'Απαιτείται διεÏθυνση ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου.',
'prefs-info' => 'Βασικές πληÏοφοÏίες',
'prefs-i18n' => 'Διεθνοποίηση',
@@ -1525,15 +1557,15 @@ $1",
'right-userrights' => 'ΤÏοποποίηση όλων των δικαιωμάτων χÏηστών',
'right-userrights-interwiki' => 'ΤÏοποποίηση δικαιωμάτων χÏηστών σε άλλα wiki',
'right-siteadmin' => 'Κλείδωμα και ξεκλείδωμα της βάσης δεδομένων',
-'right-reset-passwords' => 'ΑÏχικοποίηση κωδικών Ï€Ïόσβασης άλλων χÏηστών/χÏηστÏιών',
'right-override-export-depth' => 'Εξαγωγή σελίδων συμπεÏιλαμβάνοντας συνδεδεμένες σελίδες έως ένα βάθος 5 επιπέδων',
'right-sendemail' => 'Αποστολή ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Î¼Î·Î½Ïματος σε άλλους χÏήστες',
# User rights log
-'rightslog' => 'ΑÏχείο καταγÏαφών δικαιωμάτων χÏηστών',
-'rightslogtext' => 'ΚαταγÏαφές των αλλαγών στα δικαιώματα χÏηστών.',
-'rightslogentry' => 'η ιδιότητα μέλους ομάδας για τον/την $1 από $2 σε $3 άλλαξε',
-'rightsnone' => '(κανένα)',
+'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' => 'να διαβάσετε αυτή τη σελίδα',
@@ -1653,12 +1685,13 @@ $1",
'minlength1' => 'Τα ονόματα αÏχείων Ï€Ïέπει να είναι τουλάχιστον ένα γÏάμμα.',
'illegalfilename' => 'Το όνομα του αÏχείου "$1" πεÏιέχει χαÏακτήÏες που δεν επιτÏέπονται στους τίτλους των σελίδων. ΠαÏακαλοÏμε δώστε άλλο όνομα στο αÏχείο και Ï€Ïοσπαθήστε ξανά να το ανεβάσετε.',
'badfilename' => 'Το όνομα της εικόνας άλλαξε σε "$1".',
-'filetype-mime-mismatch' => 'Η επέκταση αÏχείου δεν ταιÏιάζει με τον Ï„Ïπο MIME.',
+'filetype-mime-mismatch' => 'Η επέκταση αÏχείου ".$1" δεν ταιÏιάζει με τον Ï„Ïπο MIME του αÏχείου ($2).',
'filetype-badmime' => 'ΑÏχεία του Ï„Ïπου MIME "$1" δεν επιτÏέπεται να επιφοÏτωθοÏν.',
'filetype-bad-ie-mime' => 'Δεν μποÏεί να επιφοÏτωθεί αυτό το αÏχείο επειδή ο Internet Explorer θα το αναγνώÏιζε ως "$1", που είναι μη επιτÏεπτός και πιθανά επικίνδυνος Ï„Ïπος αÏχείου.',
'filetype-unwanted-type' => "'''\".\$1\"''' είναι ανεπιθÏμητος Ï„Ïπος αÏχείου.
{{PLURAL:\$3|ΠÏοτιμώμενος Ï„Ïπος αÏχείου είναι|ΠÏοτιμώμενοι Ï„Ïποι αÏχείων είναι}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' δεν είναι επιτÏεπόμενος Ï„Ïπος αÏχείου. {{PLURAL:\$3|ΕπιτÏεπόμενος Ï„Ïπος αÏχείων|ΕπιτÏεπόμενοι Ï„Ïποι αÏχείων}} είναι \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' δεν είναι {{PLURAL:$4|επιτÏεπόμενος Ï„Ïπος αÏχείου|επιτÏεπόμενοι Ï„Ïποι αÏχείων}}.
+{{PLURAL:$3|ΕπιτÏεπόμενος Ï„Ïπος αÏχείων|ΕπιτÏεπόμενοι Ï„Ïποι αÏχείων}} είναι $2.',
'filetype-missing' => 'Το αÏχείο δεν έχει καμία επέκταση (όπως ".jpg").',
'empty-file' => 'Το αÏχείο που υποβλήθηκε ήταν άδειο.',
'file-too-large' => 'Το αÏχείο που υποβλήθηκε είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿.',
@@ -1674,6 +1707,7 @@ $1",
'large-file' => 'ΠÏοτείνεται τα αÏχεία να μην είναι μεγαλÏτεÏα από $1; αυτό το αÏχείο είναι $2.',
'largefileserver' => 'Το μέγεθος Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αÏχείο είναι μεγαλÏτεÏο από το μέγιστο μέγεθος που ο εξυπηÏετητής είναι Ïυθμισμένος να επιτÏέπει.',
'emptyfile' => 'Το αÏχείο που φοÏτώσατε φαίνεται να είναι κενό. Αυτό μποÏεί να οφείλεται σε λάθος πληκτÏολόγησης του ονόματος του αÏχείου. ΠαÏακαλοÏμε ελέγξτε εαν αυτό είναι Ï€Ïαγματικά το αÏχείο που θέλετε να φοÏτώσετε.',
+'windows-nonascii-filename' => 'Αυτό το wiki δεν υποστηÏίζει ονόματα αÏχείων με ειδικοÏÏ‚ χαÏακτήÏες.',
'fileexists' => "ΥπάÏχει ήδη αÏχείο με αυτό το όνομα -παÏακαλοÏμε ελέγξτε στο '''<tt>[[:$1]]</tt>'''.
Είστε βέβαιος (-η) πως θέλετε να αλλάξετε το όνομα του αÏχείου; [[$1|thumb]]",
'filepageexists' => "Η σελίδα πεÏιγÏαφής για αυτό το αÏχείο δημιουÏγήθηκε ήδη στο '''<tt>[[:$1]]</tt>''', αλλά κανένα αÏχείο με αυτό το όνομα δεν υπάÏχει αυτή τη στιγμή.
@@ -1707,6 +1741,8 @@ $1",
'php-uploaddisabledtext' => 'Οι επιφοÏτώσεις αÏχείων ειναι απενεÏγοποιημένες στην PHP. ΠαÏακαλοÏμε, ελέγξτε την ÏÏθμιση file_uploads.',
'uploadscripted' => 'Αυτό το αÏχείο πεÏιέχει κώδικα HTML ή script που μποÏεί να παÏεÏμηνευθεί από μεÏικοÏÏ‚ browser.',
'uploadvirus' => 'Το αÏχείο πεÏιέχει ιό! ΛεπτομέÏειες: $1',
+'uploadjava' => 'Το αÏχείο είναι αÏχείο ZIP, το οποίο πεÏιέχει ένα αÏχείο .class της γλώσσας Java.
+Δεν επιτÏέπεται η αποστολή αÏχείων Java, επειδή μποÏοÏν να Ï€Ïοκαλέσουν παÏάκαμψη των πεÏιοÏισμών ασφαλείας του συστήματος.',
'upload-source' => 'ΑÏχείο πηγής',
'sourcefilename' => 'Όνομα πηγαίου αÏχείου:',
'sourceurl' => 'URL πηγής:',
@@ -1716,10 +1752,6 @@ $1",
'upload-options' => 'Επιλογές φόÏτωσης',
'watchthisupload' => 'ΠαÏακολουθήστε αυτό το αÏχείο',
'filewasdeleted' => 'Ένα αÏχείο με αυτό το όνομα είχε επιφοÏτωθεί Ï€Ïοηγουμένως και επακολοÏθως διαγÏάφηκε. Θα έπÏεπε να ελέγξετε το $1 Ï€Ïιν Ï€Ïοσπαθήσετε να το επιφοÏτώσετε ξανά.',
-'upload-wasdeleted' => "'''ΠÏοειδοποίηση: Ανεβάζετε ένα αÏχείο που είχε Ï€Ïοηγουμένως διαγÏαφεί.'''
-
-Θα Ï€Ïέπει να σκεφτείτε αν είναι σωστό να συνεχίσετε την επιφόÏτωση του αÏχείου.
-Η καταγÏαφή διαγÏαφής Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αÏχείου δίνεται εδώ για διευκόλυνση:",
'filename-bad-prefix' => "Το όνομα του αÏχείου που ανεβάζετε ξεκινά με '''\"\$1\"''', που είναι ένα μη πεÏιγÏαφικό όνομα που συνήθως εκχωÏείται αυτόματα από ψηφιακές φωτογÏαφικές μηχανές. ΠαÏακαλώ διαλέξτε ένα πιο πεÏιγÏαφικό όνομα για το αÏχείο σας.",
'filename-prefix-blacklist' => ' #<!-- leave this line exactly as it is --> <pre>
# Η σÏνταξη είναι ως ακολοÏθως:
@@ -1758,6 +1790,22 @@ $1',
'upload-unknown-size' => 'Άγνωστο μέγεθος',
'upload-http-error' => 'Εμφανίστηκε κάποιο σφάλμα HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'ΠαÏουσιάστηκε σφάλμα κατά το άνοιγμα του αÏχείου για ZIP ελέγχους.',
+'zip-wrong-format' => 'Το καθοÏισμένο αÏχείο δεν ήταν αÏχείο ZIP.',
+'zip-bad' => 'Το αÏχείο είναι κατεστÏαμμένο ή με άλλο Ï„Ïόπο μη αναγνώσιμο αÏχείο ZIP.! N! Δεν μποÏεί να ελεγχθεί δεόντως ως Ï€Ïος την ασφάλεια.',
+'zip-unsupported' => 'Το αÏχείο είναι ένα αÏχείο ZIP που χÏησιμοποιεί δυνατότητες ZIP που δεν υποστηÏίζονται από το MediaWiki.
+Δεν μποÏεί να ελέγχθεί δεόντως για την ασφάλεια.',
+
+# Special:UploadStash
+'uploadstash' => 'ΕπιφοÏτώστε το απόθεμα',
+'uploadstash-summary' => 'Η σελίδα παÏέχει Ï€Ïόσβαση σε αÏχεία που είναι επιφοÏτωμένα (ή στη διαδικασία της επιφόÏτωσης) αλλά δεν έχει ακόμη δημοσιευθεί για το wiki. Αυτά τα αÏχεία δεν είναι οÏατά σε οποιονδήποτε, αλλά στο χÏήστη που τα επιφόÏτωσε.',
+'uploadstash-clear' => 'ΚαθαÏά διατηÏημένα αÏχεία',
+'uploadstash-nofiles' => 'Δεν έχετε κÏυμμένα αÏχεία.',
+'uploadstash-badtoken' => 'Εκτέλεση της εν λόγω ενέÏγειας ήταν ανεπιτυχής, ίσως επειδή τα διαπιστευτήÏιά επεξεÏγασίας σας έχουν λήξει. Δοκίμαστε ξανά.',
+'uploadstash-errclear' => 'Η εκκαθάÏιση των αÏχείων ήταν ανεπιτυχής.',
+'uploadstash-refresh' => 'Ανανεώσετε τη λίστα των αÏχείων',
+
# img_auth script messages
'img-auth-accessdenied' => 'Δεν επετÏάπη η Ï€Ïόσβαση',
'img-auth-nopathinfo' => 'Υπολείπεται το PATH_INFO.
@@ -1838,7 +1886,7 @@ $1',
Η [[Special:WhatLinksHere/$2|πλήÏης λίστα]] είναι διαθέσιμη.',
'nolinkstoimage' => 'Δεν υπάÏχουν σελίδες που συνδέονται με αυτήν την εικόνα.',
'morelinkstoimage' => 'Δείτε [[Special:WhatLinksHere/$1|πεÏισσότεÏους συνδέσμους]] Ï€Ïος αυτό το αÏχείο.',
-'redirectstofile' => '{{PLURAL:$1|Το ακόλουθο αÏχείο ανακατευθÏνει|$1 Τα ακόλουθα αÏχεία ανακατευθÏνουν}} Ï€Ïος αυτό το αÏχείο:',
+'linkstoimage-redirect' => '$1 (ανακατεÏθυνση του αÏχείου) $2',
'duplicatesoffile' => '{{PLURAL:$1|Το ακόλουθο αÏχείο είναι διπλότυπο|Τα $1 ακόλουθα αÏχεία είναι διπλότυπα}} Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… αÏχείου ([[Special:FileDuplicateSearch/$2|πεÏισσότεÏες λεπτομέÏειες]]):',
'sharedupload' => 'Το αÏχείο αυτό είναι από το $1 και είναι δυνατόν να χÏησιμοποιείται από άλλα εγχειÏήματα.',
'sharedupload-desc-there' => 'Αυτό το αÏχείο Ï€ÏοέÏχεται από το $1 και ενδέχεται να χÏησιμοποιείται και από άλλα εγχειÏήματα.
@@ -1933,10 +1981,11 @@ $1',
Αντιθέτως Ï€Ïέπει να συνδέουν στο κατάλληλο θέμα.<br />
Μια σελίδα μεταχειÏίζεται ως σελίδα αποσαφήνισης αν χÏησιμοποιεί ένα Ï€Ïότυπο το οποίο συνδέεται από το [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Διπλές ανακατευθÏνσεις',
-'doubleredirectstext' => 'Αυτή η σελίδα συγκαταλέγει σελίδες οι οποίες ανακατευθÏνουν σε άλλες σελίδες ανακατεÏθυνσης. Κάθε σειÏά πεÏιέχει συνδέσμους Ï€Ïος την Ï€Ïώτη και τη δεÏτεÏη σελίδα ανακατεÏθυνσης, όπως επίσης και την Ï€Ïώτη αÏάδα του κειμένου στη δεÏτεÏη σελίδα ανακατεÏθυνσης η οποία και είναι, κανονικά, ο Ï€Ïαγματικός Ï€ÏοοÏισμός της ανακατεÏθυνσης -εκεί δηλαδή όπου θα έπÏεπε να είχατε οδηγηθεί από την αÏχή. Τα <del>διεγÏαμμένα</del> λήμματα έχουν επιλυθεί.',
-'double-redirect-fixed-move' => 'Η [[$1]] έχει μετακινηθεί, Ï„ÏŽÏα είναι ανακατεÏθυνση στην [[$2]]',
-'double-redirect-fixer' => 'ΔιοÏθωτής ανακατευθÏνσεων',
+'doubleredirects' => 'Διπλές ανακατευθÏνσεις',
+'doubleredirectstext' => 'Αυτή η σελίδα συγκαταλέγει σελίδες οι οποίες ανακατευθÏνουν σε άλλες σελίδες ανακατεÏθυνσης. Κάθε σειÏά πεÏιέχει συνδέσμους Ï€Ïος την Ï€Ïώτη και τη δεÏτεÏη σελίδα ανακατεÏθυνσης, όπως επίσης και την Ï€Ïώτη αÏάδα του κειμένου στη δεÏτεÏη σελίδα ανακατεÏθυνσης η οποία και είναι, κανονικά, ο Ï€Ïαγματικός Ï€ÏοοÏισμός της ανακατεÏθυνσης -εκεί δηλαδή όπου θα έπÏεπε να είχατε οδηγηθεί από την αÏχή. Τα <del>διεγÏαμμένα</del> λήμματα έχουν επιλυθεί.',
+'double-redirect-fixed-move' => 'Η [[$1]] έχει μετακινηθεί, Ï„ÏŽÏα είναι ανακατεÏθυνση στην [[$2]]',
+'double-redirect-fixed-maintenance' => 'ΔιόÏθωση διπλής ανακατεÏθυνσης από το [[$1]] στο [[$2]].',
+'double-redirect-fixer' => 'ΔιοÏθωτής ανακατευθÏνσεων',
'brokenredirects' => 'Λανθασμένες ανακατευθÏνσεις',
'brokenredirectstext' => 'Οι παÏακάτω ανακατευθÏνσεις οδηγοÏν σε σελίδες που δεν υπάÏχουν:',
@@ -2013,6 +2062,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|νεότεÏο 1|νεότεÏα $1}}',
'pager-older-n' => '{{PLURAL:$1|παλαιότεÏο 1|παλαιότεÏα $1}}',
'suppress' => 'ΠαÏÏŒÏαμα',
+'querypage-disabled' => 'Αυτή η ειδική σελίδα είναι απενεÏγοποιημένη για λόγους απόδοσης.',
# Book sources
'booksources' => 'Πηγές βιβλίων',
@@ -2129,6 +2179,10 @@ $1',
'noemailtext' => 'Ο χÏήστης αυτός δεν έχει δηλώσει μια έγκυÏη ηλεκτÏονική διεÏθυνση.',
'nowikiemailtitle' => 'Δεν επιτÏέπεται e-mail',
'nowikiemailtext' => 'Αυτός ο χÏήστης έχει επιλέξει να μη δέχεται μηνÏματα ηλεκτÏÎ¿Î½Î¹ÎºÎ¿Ï Ï„Î±Ï‡Ï…Î´Ïομείου από άλλους χÏήστες.',
+'emailnotarget' => 'Μη υπαÏκτό ή άκυÏο όνομα χÏήστη για παÏαλήπτη.',
+'emailtarget' => 'Εισαγάγετε το όνομα χÏήστη του παÏαλήπτη',
+'emailusername' => 'Όνομα χÏήστη:',
+'emailusernamesubmit' => 'Υποβολή',
'email-legend' => 'Αποστολή μηνÏματος ηλ. ταχυδÏομείου σε έναν άλλο χÏήστη του βίκι {{SITENAME}}',
'emailfrom' => 'Από:',
'emailto' => 'ΠÏος:',
@@ -2154,13 +2208,13 @@ $1',
'watchlistanontext' => 'ΠαÏακαλώ $1 για να δείτε ή να επεξεÏγαστείτε στοιχεία στη λίστα παÏακολοÏθησής σας.',
'watchnologin' => 'Δεν έχετε συνδεθεί.',
'watchnologintext' => 'Για να κάνετε αλλαγές στη λίστα παÏακολοÏθησης Ï€Ïέπει να [[Special:UserLogin|συνδεθείτε]].',
-'addedwatch' => 'Η σελίδα έχει Ï€Ïοστεθεί στη λίστα παÏακολοÏθησης.',
+'addwatch' => 'ΠÏοσθήκη στη λίστα παÏακολοÏθησης',
'addedwatchtext' => "Η σελίδα \"<nowiki>\$1</nowiki>\" έχει Ï€Ïοστεθεί στη [[Special:Watchlist|λίστα παÏακολοÏθησης]].
Μελλοντικές αλλαγές στη σελίδα καθώς και στη σχετική με τη σελίδα συζήτηση θα φαίνονται '''με έντονα γÏάμματα''' στη [[Special:RecentChanges|λίστα Ï€Ïόσφατων αλλαγών]] έτσι ώστε να διευκολÏνεται η παÏακολοÏθηση.
<p>Αν θελήσετε να αφαιÏέσετε τη σελίδα αυτή από τη λίστα παÏακολοÏθησης, κάνετε κλικ στην επιλογή \"παÏση παÏακολοÏθησης\" στην μπάÏα ενεÏγειών.",
-'removedwatch' => 'ΑφαιÏέθηκε απο τη λίστα παÏακολοÏθησης.',
+'removewatch' => 'ΑφαίÏεση από τη λίστα παÏακολοÏθησης',
'removedwatchtext' => 'Η σελίδα "[[:$1]]" έχει αφαιÏεθεί από [[Special:Watchlist|τη λίστα παÏακολοÏθησής σας]].',
'watch' => 'ΠαÏακολοÏθηση',
'watchthispage' => 'ΠαÏακολοÏθηση αυτής της σελίδας',
@@ -2181,8 +2235,9 @@ $1',
'watchlist-options' => 'Επιλογές λίστας παÏακολοÏθησης',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'ΠαÏακολοÏθηση...',
-'unwatching' => 'Μη παÏακολοÏθηση...',
+'watching' => 'ΠαÏακολοÏθηση...',
+'unwatching' => 'Μη παÏακολοÏθηση...',
+'watcherrortext' => 'ΠαÏουσιάστηκε σφάλμα κατά την αλλαγή των Ïυθμίσεων της λίστας παÏακολοÏθησής σας για "$1".',
'enotif_mailer' => 'ΣÏστημα ειδοποίησης μέσω αλληλογÏαφίας του {{SITENAME}}',
'enotif_reset' => 'Σημειώστε όλες τις σελίδες ως αναγνωσμένες.',
@@ -2214,16 +2269,16 @@ wiki: $PAGEEDITOR_WIKI
--
Για να αλλάξετε τις Ï€Ïοτιμήσεις της ειδοποιήσεων email, ακολουθήστε το σÏνδεσμο:
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Για να αλλάξετε τις Ï€Ïοτιμήσεις της λίστας παÏακολοÏθησής σας, ακολουθήστε το σÏνδεσμο:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Για να διαγÏάψετε την σελίδα από την λίστα παÏακολοÏθησής σας:
$UNWATCHURL
ΕÏωτήσεις και πεÏισσότεÏες πληÏοφοÏίες:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'ΔιαγÏαφή σελίδας',
@@ -2238,7 +2293,7 @@ $UNWATCHURL
'confirmdeletetext' => 'ΠÏόκειται να διαγÏάψετε οÏιστικά από τη βάση δεδομένων μια σελίδα (ή μια εικόνα) μαζί με το ιστοÏικό της. ΠαÏακαλοÏμε επιβεβαιώστε ότι θέλετε Ï€Ïαγματικά να το κάνετε, ότι αντιλαμβάνεσθε τις συνέπειες και ότι το κάνετε σÏμφωνα με την [[{{MediaWiki:Policy-url}}|πολιτική]].',
'actioncomplete' => 'Η ενέÏγεια ολοκληÏώθηκε.',
'actionfailed' => 'Ανεπιτυχής ενέÏγεια',
-'deletedtext' => 'Η "<nowiki>$1</nowiki>" έχει διαγÏαφεί.
+'deletedtext' => 'Η "$1" έχει διαγÏαφεί.
Για το ιστοÏικό των Ï€Ïόσφατων διαγÏαφών ανατÏέξτε στο σÏνδεσμο $2',
'deletedarticle' => 'Η [[$1]] διαγÏάφηκε.',
'suppressedarticle' => 'απόκÏυψη του "[[$1]]"',
@@ -2293,7 +2348,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'Ο χÏόνος λήξης είναι άκυÏος.',
'protect_expiry_old' => 'Ο χÏόνος λήξης αναφέÏεται στο παÏελθόν.',
'protect-unchain-permissions' => 'Ξεκλείδωμα πεÏαιτέÏω επιλογών Ï€Ïοστασίας',
-'protect-text' => "ΜποÏείτε να δείτε και να αλλάξετε το επίπεδο Ï€Ïοστασίας εδώ για τη σελίδα '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "ΜποÏείτε να δείτε και να αλλάξετε το επίπεδο Ï€Ïοστασίας εδώ για τη σελίδα '''$1'''.",
'protect-locked-blocked' => "Δεν μποÏείτε να αλλάξετε επίπεδα Ï€Ïοστασίας ενώ είστε σε φÏαγή.
Εδώ είναι οι Ï„Ïέχουσες Ïυθμίσεις για τη σελίδα '''$1''':",
'protect-locked-dblock' => "Τα επίπεδα Ï€Ïοστασίας δεν μποÏοÏν να αλλαχθοÏν λόγω ενός ενεÏÎ³Î¿Ï ÎºÎ»ÎµÎ´ÏŽÎ¼Î±Ï„Î¿Ï‚ της βάσης δεδομένων.
@@ -2346,10 +2401,8 @@ $UNWATCHURL
'viewdeletedpage' => 'Εμφάνιση διεγÏαμμένων σελίδων',
'undeletepagetext' => '{{PLURAL:$1|Η σελίδα που ακολουθεί έχει|$1 Οι σελίδες που ακολουθοÏν έχουν}} διαγÏαφεί αλλά {{PLURAL:βÏίσκεται|βÏίσκονται}} ακόμα {{PLURAL:αποθηκευμένη|αποθηκευμένες}} στο αÏχείο και {{PLURAL:μποÏεί να αποκατασταθεί|μποÏοÏν να αποκατασταθοÏν}}. Κατά καιÏοÏÏ‚ γίνεται εκκαθάÏιση του αÏχείου.',
'undelete-fieldset-title' => 'Αποκατάσταση αναθεωÏήσεων',
-'undeleteextrahelp' => "Για να επαναφέÏετε ολόκληÏο το ιστοÏικό της σελίδας, αφήστε όλα τα κουτιά επιλογής ατσεκάÏιστα και κάντε κλικ στο κουμπί '''''ΕπαναφοÏά'''''.
-Για να εκτελέσετε μια επιλεκτική επαναφοÏά, τσεκάÏετε τα κουτιά που αντιστοιχοÏν στις
-αναθεωÏήσεις Ï€Ïος επαναφοÏά, και κάντε κλικ στο κουμπί '''''ΕπαναφοÏά'''''. Κάνοντας κλικ στην '''''Ανανέωση''''' θα καθαÏίσετε το
-πεδίο σχολίων και όλα τα κουτιά επιλογής.",
+'undeleteextrahelp' => "Για να επαναφέÏετε ολόκληÏο το ιστοÏικό της σελίδας, μην επιλέγετε κανένα πλαίσιο ελέγχου και κάντε κλικ στο '''''{{int:undeletebtn}}'''''.
+Για να κάνετε μια Ï€ÏοσαÏμοσμένη επαναφοÏά, επιλέξτε τα πλαίσια που αντιστοιχοÏν στις αναθεωÏήσεις που Ï€Ïόκειται να επαναφεÏθοÏν και κάντε κλικ στο '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|Ï„Ïοποποίηση|Ï„Ïοποποιήσεις}} αÏχειοθετήθηκαν.',
'undeletehistory' => 'Αν επαναφέÏετε την σελίδα, όλες οι εκδόσεις θα επαναφεÏθοÏν στο ιστοÏικό.
@@ -2393,9 +2446,12 @@ $1',
'undelete-show-file-submit' => 'Îαι',
# Namespace form on various pages
-'namespace' => 'ΠεÏιοχή:',
-'invert' => 'ΑντιστÏοφή της επιλογής',
-'blanknamespace' => '(ΑÏχική πεÏιοχή)',
+'namespace' => 'ΠεÏιοχή:',
+'invert' => 'ΑντιστÏοφή της επιλογής',
+'tooltip-invert' => 'Επιλέξτε αυτό το πλαίσιο για να αποκÏÏψετε αλλαγές σε σελίδες μέσα στον επιλεγμένο χώÏο ονομάτων (και των συσχετικών χώÏων ονομάτων, εάν επιλεγχθοÏν)',
+'namespace_association' => 'Συσχετισμένο namespace',
+'tooltip-namespace_association' => 'Επιλέξτε αυτό το πλαίσιο για να συμπεÏιλάβετε τον χώÏο ονομάτων συζήτησης ή θέματος που σχετίζονται με τον επιλεγμένο χώÏο ονομάτων',
+'blanknamespace' => '(ΑÏχική πεÏιοχή)',
# Contributions
'contributions' => 'ΣυνεισφοÏές χÏήστη',
@@ -2444,13 +2500,15 @@ $1',
'whatlinkshere-filters' => 'ΦίλτÏα',
# Block/unblock
+'autoblockid' => 'Autoblock #$1',
+'block' => 'ΦÏαγή χÏήστη',
+'unblock' => 'ΚατάÏγηση Î±Ï€Î¿ÎºÎ»ÎµÎ¹ÏƒÎ¼Î¿Ï Ï‡Ïήστη',
'blockip' => 'ΦÏαγή χÏήστη ή διεÏθυνσης IP',
'blockip-title' => 'ΦÏαγή του χÏήστη',
'blockip-legend' => 'ΦÏαγή του χÏήστη',
'blockiptext' => 'ΧÏησιμοποιήστε την παÏακάτω φόÏμα για να εμποδίσετε παÏεμβάσεις στο κείμενο από μια συγκεκÏιμένη διεÏθυνση IP ή όνομα χÏήστη.
Το μέτÏο αυτό Ï€Ïέπει να λαμβάνεται μόνο σε πεÏιπτώσεις Î²Î±Î½Î´Î±Î»Î¹ÏƒÎ¼Î¿Ï ÏƒÎµÎ»Î¯Î´Ï‰Î½ και πάντα σÏμφωνα με την [[{{MediaWiki:Policy-url}}|πολιτική]].
ΠαÏακαλοÏμε να αιτιολογήσετε την ενέÏγειά σας (παÏαπέμποντας Ï€.χ. σε συγκεκÏιμένες σελίδες που υπέστησαν βανδαλισμό).',
-'ipaddress' => 'ΔιεÏθυνση IP:',
'ipadressorusername' => 'ΔιεÏθυνση IP ή όνομα χÏήστη',
'ipbexpiry' => 'Λήξη',
'ipbreason' => 'Αιτία:',
@@ -2463,7 +2521,7 @@ $1',
** Εκφοβιστική συμπεÏιφοÏά/παÏενόχληση
** ΚατάχÏηση πολλαπλών λογαÏιασμών
** ΑπαÏάδεκτο όνομα χÏήστη',
-'ipbanononly' => 'ΦÏαγή μόνο ανώνυμων χÏηστών',
+'ipb-hardblock' => 'ΑποτÏέψετε σε συνδεδεμένους χÏήστες την επεξεÏγασία από αυτήν τη διεÏθυνση IP',
'ipbcreateaccount' => 'ΑποτÏοπή δημιουÏγίας λογαÏιασμοÏ',
'ipbemailban' => 'ΑποτÏοπή αποστολής e-mail από τον χÏήστη',
'ipbenableautoblock' => 'ΦÏάξε αυτόματατα την τελευταία διεÏθυνση IP που χÏησιμοποιήθηκε από αυτό τον χÏήστη, και όποιες ακόλουθες IP από τις οποίες δοκιμάζει να επεξεÏγαστεί',
@@ -2474,12 +2532,15 @@ $1',
'ipbotherreason' => 'Άλλος/επιπλέον λόγος:',
'ipbhidename' => 'ΑπόκÏυψη ονόματος χÏήστη από επεξεÏγασίες και καταλόγους',
'ipbwatchuser' => "ΠαÏακολοÏθηση των σελίδων 'χÏήστη' και 'συζήτησης χÏήστη' Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… χÏήστη",
-'ipballowusertalk' => "ΕπιτÏέψτε σ' αυτόν τον χÏήστη να επεξεÏγαστεί την Ï€Ïοσωπική του σελίδα συζήτησης ενώ είναι φÏαγμένος",
+'ipb-disableusertalk' => 'ΑποτÏέψτε αυτό το χÏήστη από την επεξεÏγασία της δική του σελίδας συζήτησης, ενώ είναι αποκλεισμένος',
'ipb-change-block' => 'ΕπαναφÏαγή του χÏήστη με αυτές τις Ïυθμίσεις',
+'ipb-confirm' => 'Επιβεβαίωση φÏαγής',
'badipaddress' => 'ΆκυÏη διεÏθυνση IP.',
'blockipsuccesssub' => 'Η φÏαγή ολοκληÏώθηκε επιτυχώς.',
'blockipsuccesstext' => 'Η διεÏθυνση [[Special:Contributions/$1|$1]] έχει υποστεί φÏαγή.<br />
Δείτε τη [[Special:IPBlockList|λίστα διευθÏνσεων IP που έχουν υποστεί φÏαγή]] για να το επιβεβαιώσετε.',
+'ipb-blockingself' => 'Είστε έτοιμος να επιβάλετε φÏαγή στον ευατό σας! Είστε σίγουÏοι ότι θέλετε να το κάνετε αυτό;',
+'ipb-confirmhideuser' => 'Είστε {{GENDER:|έτοιμος|έτοιμη}} να μπλοκάÏετε ένα χÏήστη με ενεÏγοποιημένη την "απόκÏυψη χÏήστη" . Αυτό θα καταστείλει το όνομα του χÏήστη σε όλες τις λίστες και τις καταχωÏήσεις ημεÏολογίου. Είστε {{GENDER:|σίγουÏος|σίγουÏη}} ότι θέλετε να το κάνετε αυτό;',
'ipb-edit-dropdown' => 'ΕπεξεÏγασία λόγων φÏαγής',
'ipb-unblock-addr' => 'ΤεÏμάτισε τη φÏαγή του/της $1',
'ipb-unblock' => 'ΤεÏμάτισε τη φÏαγή για ένα όνομα χÏήστη ή μια διεÏθυνση IP',
@@ -2489,17 +2550,23 @@ $1',
'unblockiptext' => 'ΧÏησιμοποιήστε την παÏακάτω φόÏμα για να αποκαταστήσετε την Ï€Ïόσβαση σε επεξεÏγασία, σε μια διεÏθυνση IP ή σε ένα χÏήστη που είχε αποκλειστεί με φÏαγή.',
'ipusubmit' => 'ΆÏση φÏαγής',
'unblocked' => 'Η φÏαγή για τον/την [[User:$1|$1]] έχει τεÏματιστεί',
+'unblocked-range' => '$1 έχει αÏθεί η φÏαγή',
'unblocked-id' => 'Η φÏαγή του $1 έχει τεÏματιστεί',
+'blocklist' => 'Αποκλεισμένοι χÏήστες',
'ipblocklist' => 'ΦÏαγμένες διευθÏνσεις IP και ονόματα χÏηστών',
'ipblocklist-legend' => 'ΕÏÏεση ενός χÏήστη που έχει υποστεί φÏαγή',
-'ipblocklist-username' => 'Όνομα χÏήστη ή διεÏθυνση IP:',
-'ipblocklist-sh-userblocks' => 'ΦÏαγές του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï $1',
-'ipblocklist-sh-tempblocks' => 'ΠÏοσωÏινές φÏαγές του λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï $1',
-'ipblocklist-sh-addressblocks' => '$1 μονός αποκλεισμός IP',
+'blocklist-userblocks' => 'ΑπόκÏυψη φÏαγών λογαÏιασμοÏ',
+'blocklist-tempblocks' => 'ΑπόκÏυψη Ï€ÏοσωÏινών φÏαγών',
+'blocklist-addressblocks' => 'ΑπόκÏυψη ενιαίων μπλοκ IP',
+'blocklist-timestamp' => 'Timestamp',
+'blocklist-target' => 'Στόχος',
+'blocklist-expiry' => 'Λήγει',
+'blocklist-by' => 'ΔιαχειÏιστής που επέβαλε τη φÏαγή',
+'blocklist-params' => 'ΠαÏάμετÏοι φÏαγής',
+'blocklist-reason' => 'Αιτιολογία',
'ipblocklist-submit' => 'Αναζήτηση',
'ipblocklist-localblock' => 'Τοπική φÏαγή',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Άλλη φÏαγή|Άλλες φÏαγές}}',
-'blocklistline' => '$1, ο/η $2 έφÏαξε τον/την $3 ($4)',
'infiniteblock' => 'αόÏιστη',
'expiringblock' => 'λήγει στις $1 στις $2',
'anononlyblock' => 'μόνο τους ανώνυμους',
@@ -2523,7 +2590,7 @@ $1',
'reblock-logentry' => 'άλλαξε τις Ïυθμίσεις φÏαγής για τον/την [[$1]] με χÏόνο λήξης $2 $3',
'blocklogtext' => 'Αυτό είναι ένα αÏχείο καταγÏαφής των ενεÏγειών φÏαγής και κατάÏγησης φÏαγής χÏηστών.
Δεν συμπεÏιλαμβάνονται οι διευθÏνσεις IP που υπέστησαν αυτόματα φÏαγή.
-Δείτε τον [[Special:IPBlockList|κατάλογο φÏαγμένων διευθÏνσεων IP]] για τη λίστα των Ï„Ïεχόντων ενεÏγών αποκλεισμών και φÏαγών.',
+Δείτε τον [[Special:BlockList|κατάλογο φÏαγμένων διευθÏνσεων IP]] για τη λίστα των Ï„Ïεχόντων ενεÏγών αποκλεισμών και φÏαγών.',
'unblocklogentry' => 'ΆÏση φÏαγής του "$1"',
'block-log-flags-anononly' => 'μόνο ανώνυμοι χÏήστες',
'block-log-flags-nocreate' => 'δημιουÏγία λογαÏÎ¹Î±ÏƒÎ¼Î¿Ï Î±Ï€ÎµÎ½ÎµÏγοποιημένη',
@@ -2537,9 +2604,9 @@ $1',
'ipb_expiry_temp' => 'Οι κÏυμμένες φÏαγές ονομάτων χÏηστών Ï€Ïέπει να είναι μόνιμες.',
'ipb_hide_invalid' => 'Μη εφικτή καταστολή Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… λογαÏιασμοÏ. ΜποÏεί να έχει πάÏα πολλές επεξεÏγασίες.',
'ipb_already_blocked' => 'Η διεÏθυνση IP "$1" είναι ήδη φÏαγμένη',
-'ipb-needreblock' => '== Ἠδη αποκλεισμένη ==
-$1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετε τις Ïυθμίσεις?',
+'ipb-needreblock' => '$1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετε τις Ïυθμίσεις?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Άλλη φÏαγή|Άλλες φÏαγές}}',
+'unblock-hideuser' => 'Δεν μποÏείτε να καταÏγήσετε τον αποκλεισμό Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… χÏήστη, καθώς το όνομα χÏήστη του έχει αποκÏυβεί.',
'ipb_cant_unblock' => 'Σφάλμα: Ο αÏιθμός αναγνώÏισης φÏαγής $1 δεν βÏέθηκε. ΜποÏεί να έχει ξεμπλοκαÏιστεί ήδη.',
'ipb_blocked_as_range' => 'Σφάλμα! Η φÏαγή της διεÏθυνσης IP $1 δεν είναι άμεση και δεν μποÏεί να αÏθεί. Όμως αποτελεί μέÏος της πεÏιοχής $2, της οποίας η φÏαγή μποÏεί να αÏθεί.',
'ip_range_invalid' => 'Το εÏÏος των διευθÏνσεων IP δεν είναι έγκυÏο.',
@@ -2574,6 +2641,7 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετÎ
'unlockdbsuccesstext' => 'Η βάση δεδομένων έχει ξεκλειδωθεί.',
'lockfilenotwritable' => 'Το αÏχείο κλειδώματος της βάσης δεδομένων δεν είναι εγγÏάψιμο. Για να κλειδώσετε ή να ξεκλειδώσετε τη βάση δεδομένων, αυτό το αÏχείο Ï€Ïέπει να είναι εγγÏάψιμο από τον εξυπηÏετητή web.',
'databasenotlocked' => 'Η βάση δεδομένων δεν είναι κλειδωμένη.',
+'lockedbyandtime' => '(Από {{GENDER:$1| $1 }} στις $2 στις $3 )',
# Move page
'move-page' => 'Μετακίνηση $1',
@@ -2696,7 +2764,7 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετÎ
'allmessagesdefault' => 'ΠÏοκαθοÏισμένο κείμενο',
'allmessagescurrent' => 'ΠαÏόν κείμενο',
'allmessagestext' => 'Αυτή είναι μια λίστα με όλα τα μηνÏματα συστήματος που βÏίσκονται στην πεÏιοχή MediaWiki.
-ΠαÏακαλοÏμε επισκεφθείτε τα [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] και [http://translatewiki.net translatewiki.net] αν επιθυμείτε να συνεισφέÏετε σε μια γενική μετάφÏαση του MediaWiki.',
+ΠαÏακαλοÏμε επισκεφθείτε τα [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] και [//translatewiki.net translatewiki.net] αν επιθυμείτε να συνεισφέÏετε σε μια γενική μετάφÏαση του MediaWiki.',
'allmessagesnotsupportedDB' => "Αυτή η σελίδα δεν υποστηÏίζεται επειδή το ''wgUseDatabaseMessages'' είναι απενεÏγοποιημένο.",
'allmessages-filter-legend' => 'ΦίλτÏο',
'allmessages-filter' => 'Ταξινόμηση βάσει της δήλωσης Ï€ÏοσαÏμογής:',
@@ -2860,9 +2928,7 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετÎ
'vector.js' => '/* Οποιοσδήποτε κώδικας JavaScript εδώ θα φοÏτωθεί για χÏήστες που χÏησιμοποιοÏν το Vector skin */',
# Metadata
-'nodublincore' => 'Τα μεταδεδομένα RDF που αφοÏοÏν στο Dublin Core έχουν απενεÏγοποιηθεί σε αυτό τον server.',
-'nocreativecommons' => 'Τα μεταδεδομένα RDF που αφοÏοÏν στο Creative Commons έχουν απενεÏγοποιηθεί σε αυτό τον server.',
-'notacceptable' => 'Ο server του Wiki δεν μποÏεί να αποδώσει δεδομένα σε μοÏφή που να μποÏεί να διαβάσει ο client σας.',
+'notacceptable' => 'Ο server του Wiki δεν μποÏεί να αποδώσει δεδομένα σε μοÏφή που να μποÏεί να διαβάσει ο client σας.',
# Attribution
'anonymous' => '{{PLURAL:$1|Ανώνυμος χÏήστης|Ανώνυμοι χÏήστες}} του {{SITENAME}}',
@@ -2885,12 +2951,17 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετÎ
'spam_blanking' => 'Όλες οι αναθεωÏήσεις πεÏιείχαν συνδέσμους Ï€Ïος το $1, εξάλειψη',
# Info page
-'infosubtitle' => 'ΠληÏοφοÏίες για τη σελίδα',
-'numedits' => 'ΑÏιθμός επεξεÏγασιών (στο άÏθÏο): $1',
-'numtalkedits' => 'ΑÏιθμός επεξεÏγασιών (στη σελίδα συζήτησης): $1',
-'numwatchers' => 'ΑÏιθμός παÏακολουθήσεων: $1',
-'numauthors' => 'ΑÏιθμός διακÏιτών συγγÏαφέων (στο άÏθÏο): $1',
-'numtalkauthors' => 'ΑÏιθμός διακÏιτών συγγÏαφέων (στη σελίδα συζήτησης): $1',
+'pageinfo-title' => 'ΠληÏοφοÏίες για "$1"',
+'pageinfo-header-edits' => 'ΕπεξεÏγασίες',
+'pageinfo-header-watchlist' => 'Λίστα παÏακολοÏθησης',
+'pageinfo-header-views' => 'ΠÏοβολές',
+'pageinfo-subjectpage' => 'Σελίδα',
+'pageinfo-talkpage' => 'Σελίδα συζήτησης',
+'pageinfo-watchers' => 'ΑÏιθμός παÏατηÏητών',
+'pageinfo-edits' => 'ΑÏιθμός επεξεÏγασιών',
+'pageinfo-authors' => 'ΑÏιθμός ξεχωÏιστών συγγÏαφέων',
+'pageinfo-views' => 'ΑÏιθμός Ï€Ïοβολών',
+'pageinfo-viewsperedit' => 'ΠÏοβολές ανά επεξεÏγασία',
# Skin names
'skinname-standard' => 'Κλασσικό',
@@ -2899,25 +2970,6 @@ $1 είναι ήδη αποκλεισμένη. Θέλετε να αλλάξετÎ
'skinname-simple' => 'Απλό',
'skinname-modern' => 'ΜοντέÏνο',
-# Math options
-'mw_math_png' => 'Απόδοση πάντα σε PNG',
-'mw_math_simple' => 'HTML αν είναι αÏκετά απλό, διαφοÏετικά PNG',
-'mw_math_html' => 'HTML αν είναι δυνατόν, διαφοÏετικά PNG',
-'mw_math_source' => 'Îα παÏαμείνει ως TeX (για text browsers)',
-'mw_math_modern' => 'ΠÏοτεινόμενο για σÏγχÏονους browser',
-'mw_math_mathml' => 'MathML όποτε είναι δυνατόν (πειÏαματικό)',
-
-# Math errors
-'math_failure' => 'Δεν μπόÏεσε να γίνει ανάλυση του ÏŒÏου.',
-'math_unknown_error' => 'άγνωστο σφάλμα',
-'math_unknown_function' => 'άγνωστη συνάÏτηση',
-'math_lexing_error' => 'Σφάλμα στην λεξική ανάλυση',
-'math_syntax_error' => 'Λάθος σÏνταξης',
-'math_image_error' => 'Η μετατÏοπή σε PNG απέτυχε. ΠαÏακαλοÏμε ελέγξτε ότι έχουν εγκατασταθεί σωστά τα latex και dvipng (ή dvips + gs + convert)',
-'math_bad_tmpdir' => 'Δεν είναι δυνατή η δημιουÏγία μαθηματικών δεδομένων (ή η εγγÏαφή σε Ï€ÏοσωÏινό κατάλογο)',
-'math_bad_output' => 'Δεν είναι δυνατή η δημιουÏγία μαθηματικών δεδομένων (ή η εγγÏαφή σε κατάλογο εξόδου)',
-'math_notexvc' => 'Λείπει το εκτελέσιμο texvc -παÏακαλοÏμε συμβουλευτείτε το math/README για να Ïυθμίσετε τις παÏαμέτÏους.',
-
# Patrolling
'markaspatrolleddiff' => "Îα σημειωθεί 'υπό παÏακολοÏθηση'",
'markaspatrolledtext' => "Îα σημειωθεί αυτό το άÏθÏο ως 'υπό παÏακολοÏθηση'.",
@@ -2953,22 +3005,25 @@ $1',
'nextdiff' => 'Επόμενη επεξεÏγασία →',
# Media information
-'mediawarning' => "'''ΠÏοειδοποίηση''': Το αÏχείο αυτό μποÏεί να πεÏιέχει κακοπÏοαίÏετο κώδικα.
+'mediawarning' => "'''ΠÏοειδοποίηση''': Το αÏχείο αυτό μποÏεί να πεÏιέχει κακοπÏοαίÏετο κώδικα.
Εκτελώντας το, μποÏεί να βλάψει το σÏστημα του υπολογιστή σας.",
-'imagemaxsize' => "ÎŒÏιο μεγέθους εικόνων:<br />''(στις σελίδες πεÏιγÏαφής εικόνων)''",
-'thumbsize' => 'Μέγεθος μικÏογÏαφίας:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|σελίδα|σελίδες}}',
-'file-info' => 'μέγεθος αÏχείου: $1, Ï„Ïπος MIME: $2',
-'file-info-size' => '$1 × $2 εικονοστοιχεία, μέγεθος αÏχείου: $3, Ï„Ïπος MIME: $4',
-'file-nohires' => '<small>Δεν διατίθεται υψηλότεÏη ανάλυση.</small>',
-'svg-long-desc' => "ΑÏχείο SVG, κατ' όνομα $1 × $2 εικονοστοιχεία, μέγεθος αÏχείου: $3",
-'show-big-image' => 'ΠλήÏης ανάλυση',
-'show-big-image-thumb' => '<small>Μέγεθος αυτής της Ï€Ïοεπισκόπησης: $1 × $2 εικονοστοιχεία</small>',
-'file-info-gif-looped' => 'πεÏιτυλιγμένο',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|πλαίσιο|πλαίσια}}',
-'file-info-png-looped' => 'Σε άπειÏο βÏόγχο',
-'file-info-png-repeat' => 'έπαιξε $1 {{PLURAL:$1|φοÏά|φοÏές}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|πλαίσιο|πλαίσια}}',
+'imagemaxsize' => "ÎŒÏιο μεγέθους εικόνων:<br />''(στις σελίδες πεÏιγÏαφής εικόνων)''",
+'thumbsize' => 'Μέγεθος μικÏογÏαφίας:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|σελίδα|σελίδες}}',
+'file-info' => 'μέγεθος αÏχείου: $1, Ï„Ïπος MIME: $2',
+'file-info-size' => '$1 × $2 εικονοστοιχεία, μέγεθος αÏχείου: $3, Ï„Ïπος MIME: $4',
+'file-info-size-pages' => '$1 × $2 εικονοστοιχεία, μέγεθος αÏχείου: $3 , Ï„Ïπος MIME: $4 , $5 {{PLURAL:$5| σελίδα | σελίδες}}',
+'file-nohires' => '<small>Δεν διατίθεται υψηλότεÏη ανάλυση.</small>',
+'svg-long-desc' => "ΑÏχείο SVG, κατ' όνομα $1 × $2 εικονοστοιχεία, μέγεθος αÏχείου: $3",
+'show-big-image' => 'ΠλήÏης ανάλυση',
+'show-big-image-preview' => '<small>Μέγεθος αυτής της Ï€Ïοεπισκόπησης: $1 .</small>',
+'show-big-image-other' => '<small>Άλλες αναλÏσεις: $1.</small>',
+'show-big-image-size' => '$1 × $2 εικονοστοιχεία',
+'file-info-gif-looped' => 'πεÏιτυλιγμένο',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|πλαίσιο|πλαίσια}}',
+'file-info-png-looped' => 'Σε άπειÏο βÏόγχο',
+'file-info-png-repeat' => 'έπαιξε $1 {{PLURAL:$1|φοÏά|φοÏές}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|πλαίσιο|πλαίσια}}',
# Special:NewFiles
'newimages' => 'Πινακοθήκη νέων εικόνων',
@@ -2993,16 +3048,21 @@ $1',
'metadata-help' => 'Αυτό το αÏχείο πεÏιέχει Ï€Ïόσθετες πληÏοφοÏίες, που πιθανόν Ï€Ïοστέθηκαν από την ψηφιακή φωτογÏαφική μηχανή ή τον σαÏωτή που χÏησιμοποιήθηκε για την δημιουÏγία ή την ψηφιοποίησή της. Αν το αÏχείο έχει Ï„Ïοποποιηθεί από την αÏχική του κατάσταση, οÏισμένες λεπτομέÏειες πιθανόν να μην αντιστοιχοÏν πλήÏως στην Ï„Ïοποποιημένη εικόνα.',
'metadata-expand' => 'Εμφάνιση εκτεταμένων λεπτομεÏειών',
'metadata-collapse' => 'ΑπόκÏυψη εκτεταμένων λεπτομεÏειών',
-'metadata-fields' => 'Τα πεδία μεταδεδομένων EXIF που υπάÏχουν σε αυτό το μήνυμα θα
-πεÏιλαμβάνονται στη σελίδα εμφάνισης εικόνας όταν ο πίνακας μεταδεδομένων
-θα αποκÏÏπτεται. Τα άλλα πεδία θα είναι κÏυμμένα από Ï€Ïοεπιλογής.
+'metadata-fields' => 'Τα πεδία μεταδεδομένων που υπάÏχουν σε αυτό το μήνυμα θα πεÏιλαμβάνονται στη σελίδα εμφάνισης εικόνας όταν ο πίνακας μεταδεδομένων
+είναι συμπτυγμένος. Τα άλλα πεδία θα είναι κÏυμμένα από Ï€Ïοεπιλογή.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Πλάτος',
@@ -3017,13 +3077,11 @@ $1',
'exif-ycbcrpositioning' => 'ΡÏθμιση φωτεινότητας και χÏώματος',
'exif-xresolution' => 'ΟÏιζόντια ανάλυση',
'exif-yresolution' => 'ΚατακόÏυφη ανάλυση',
-'exif-resolutionunit' => 'Μονάδα μέτÏησης ανάλυσης X και Y',
'exif-stripoffsets' => 'Τοποθέτηση δεδομένων εικόνας',
'exif-rowsperstrip' => 'ΑÏιθμός σειÏών ανά λωÏίδα',
'exif-stripbytecounts' => 'Bytes ανά συμπιεσμένη λωÏίδα',
'exif-jpeginterchangeformat' => 'Μετάθεση σε JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytes δεδομένων JPEG',
-'exif-transferfunction' => 'ΛειτουÏγία μεταφοÏάς',
'exif-whitepoint' => 'ΧÏωματικός Ï€ÏοσδιοÏισμός λευκοÏ',
'exif-primarychromaticities' => 'ΠÏωτεÏοντες χÏωματισμοί',
'exif-ycbcrcoefficients' => 'Συντελεστές μητÏών Î¼ÎµÏ„Î±ÏƒÏ‡Î·Î¼Î±Ï„Î¹ÏƒÎ¼Î¿Ï Ï‡Ïώματος',
@@ -3042,7 +3100,6 @@ $1',
'exif-compressedbitsperpixel' => 'Κατάσταση συμπίεσης εικόνας',
'exif-pixelydimension' => 'Πλάτος εικόνας',
'exif-pixelxdimension' => 'Ύψος εικόνας',
-'exif-makernote' => 'Σημειώσεις του κατασκευαστή',
'exif-usercomment' => 'Σχόλια χÏήστη',
'exif-relatedsoundfile' => 'Σχετικό αÏχείο ήχου',
'exif-datetimeoriginal' => 'ΗμεÏομηνία και ÏŽÏα της παÏαγωγής ψηφιακών δεδομένων',
@@ -3056,7 +3113,6 @@ $1',
'exif-exposureprogram' => 'ΠÏόγÏαμμα έκθεσης',
'exif-spectralsensitivity' => 'Ευαισθησία φάσματος',
'exif-isospeedratings' => 'Βαθμολόγηση ταχÏτητας ISO',
-'exif-oecf' => 'ΟπτικοηλεκτÏονικός συντελεστής μετατÏοπής',
'exif-shutterspeedvalue' => 'APEX ταχÏτητα κλείστÏου',
'exif-aperturevalue' => 'ΔιάφÏαγμα APEX',
'exif-brightnessvalue' => 'APEX φωτεινότητα',
@@ -3069,7 +3125,6 @@ $1',
'exif-focallength' => 'Εστιακή απόσταση του φακοÏ',
'exif-subjectarea' => 'Θεματική πεÏιοχή',
'exif-flashenergy' => 'ΕνέÏγεια του φλας',
-'exif-spatialfrequencyresponse' => 'ΧωÏική απόκÏιση συχνότητας',
'exif-focalplanexresolution' => 'Ανάλυση ÎµÏƒÏ„Î¹Î±ÎºÎ¿Ï ÎµÏ€Î¹Ï€Î­Î´Î¿Ï… Χ',
'exif-focalplaneyresolution' => 'Ανάλυση ÎµÏƒÏ„Î¹Î±ÎºÎ¿Ï ÎµÏ€Î¹Ï€Î­Î´Î¿Ï… Î¥',
'exif-focalplaneresolutionunit' => 'Μονάδα μέτÏησης ανάλυσης ÎµÏƒÏ„Î¹Î±ÎºÎ¿Ï ÎµÏ€Î¹Ï€Î­Î´Î¿Ï…',
@@ -3078,7 +3133,6 @@ $1',
'exif-sensingmethod' => 'Μέθοδος αισθητήÏα',
'exif-filesource' => 'Πηγή αÏχείου',
'exif-scenetype' => 'ΤÏπος σκηνής',
-'exif-cfapattern' => 'ΠÏότυπο CFA',
'exif-customrendered' => 'Ειδική επεξεÏγασία εικόνας',
'exif-exposuremode' => 'Κατάσταση λειτουÏγίας έκθεσης',
'exif-whitebalance' => 'ΙσοÏÏοπία των λευκών',
@@ -3123,10 +3177,79 @@ $1',
'exif-gpsareainformation' => 'Όνομα πεÏιοχής GPS',
'exif-gpsdatestamp' => 'ΗμεÏομηνία GPS',
'exif-gpsdifferential' => 'ΔιαφοÏική διόÏθωση GPS',
+'exif-jpegfilecomment' => 'Σχόλιο αÏχείου JPEG',
+'exif-keywords' => 'Λέξεις κλειδιά',
+'exif-worldregioncreated' => 'ΠεÏιοχή του κόσμου που Ï„Ïαβήξατε τη φωτογÏαφία',
+'exif-countrycreated' => 'ΧώÏα που Ï„Ïαβήξατε τη φωτογÏαφία στο',
+'exif-countrycodecreated' => 'Κωδικός για τη χώÏα ότι η φωτογÏαφία Ï„Ïαβήχτηκε στις',
+'exif-provinceorstatecreated' => 'ΕπαÏχία ή κÏάτους που Ï„Ïαβήξατε τη φωτογÏαφία στο',
+'exif-citycreated' => 'Η πόλη που Ï„Ïαβήξατε τη φωτογÏαφία στο',
+'exif-sublocationcreated' => 'Υποτοποθεσία της πόλης όπου Ï„Ïαβήχτηκε η φωτογÏαφία',
+'exif-worldregiondest' => 'ΠεÏιοχή του κόσμου που εμφανίζεται',
+'exif-countrydest' => 'ΧώÏα που εμφανίζεται',
+'exif-countrycodedest' => 'Κωδικός για τη χώÏα που εμφανίζεται',
+'exif-provinceorstatedest' => 'ΕπαÏχία ή κÏάτος που εμφανίζεται',
+'exif-citydest' => 'Πόλη που εμφανίζεται',
+'exif-sublocationdest' => 'Υποτοποθεσία της πόλης που εμφανίζεται',
'exif-objectname' => 'Συνοπτικός τίτλος',
+'exif-specialinstructions' => 'Ειδικές οδηγίες',
+'exif-headline' => 'ΚÏÏιος τίτλος',
+'exif-credit' => 'ΑναφοÏά/ΠάÏοχος',
+'exif-source' => 'Πηγή',
+'exif-editstatus' => 'Συντακτικό καθεστώς της εικόνας',
+'exif-urgency' => 'ΧαÏακτήÏας επείγοντος',
+'exif-fixtureidentifier' => 'Εντοιχισμένο όνομα',
+'exif-locationdest' => 'Τοποθεσία που απεικονίζεται',
+'exif-locationdestcode' => 'Κώδικος της τοποθεσίας που απεικονίζεται',
+'exif-objectcycle' => 'ÎÏα της ημέÏας για την οποία Ï€ÏοοÏίζεται το ΜΜΕ',
+'exif-contact' => 'Στοιχεία επικοινωνίας',
+'exif-writer' => 'ΣυγγÏαφέας',
+'exif-languagecode' => 'Γλώσσα',
+'exif-iimversion' => 'Έκδοση IIM',
+'exif-iimcategory' => 'ΚατηγοÏία',
+'exif-iimsupplementalcategory' => 'ΣυμπληÏωματικές κατηγοÏίες',
+'exif-datetimeexpires' => 'Îα μη χÏησιμοποιηθεί μετά',
+'exif-datetimereleased' => 'ΚυκλοφόÏησε στις',
+'exif-originaltransmissionref' => 'ΑÏχικός κωδικός θέσης μετάδοσης',
+'exif-identifier' => 'ΑναγνωÏιστικό',
+'exif-lens' => 'Φακός που χÏησιμοποιείται',
+'exif-serialnumber' => 'ΣειÏιακός αÏιθμός της κάμεÏας',
+'exif-cameraownername' => 'Ιδιοκτήτης της κάμεÏας',
+'exif-label' => 'Ετικέτα',
+'exif-datetimemetadata' => 'Η ημεÏομηνία μετα-δεδομένων Ï„Ïοποποιήθηκε τελευταία',
+'exif-nickname' => 'Ανεπίσημο όνομα της εικόνας',
+'exif-rating' => 'Βαθμολογία (από 5)',
+'exif-rightscertificate' => 'Πιστοποιητικό διαχείÏισης δικαιωμάτων',
+'exif-copyrighted' => 'Κατάσταση πνευματικών δικαιωμάτων:',
+'exif-copyrightowner' => 'Κάτοχος των πνευματικών δικαιωμάτων',
+'exif-usageterms' => 'ÎŒÏοι χÏήσης',
+'exif-webstatement' => 'Online δήλωση πνευματικής ιδιοκτησίας',
+'exif-originaldocumentid' => 'Μοναδικό αναγνωÏιστικό του αÏÏ‡Î¹ÎºÎ¿Ï ÎµÎ³Î³Ïάφου',
+'exif-licenseurl' => 'ΔιεÏθυνση URL για πνευματικά δικαιώματα άδειας χÏήσης',
+'exif-morepermissionsurl' => 'Εναλλακτική πληÏοφοÏίες άδειας χÏήσης',
+'exif-attributionurl' => 'Όταν επαναχÏησιμοποιείτε αυτό το έÏγο, παÏακαλοÏμε να βάλετε σÏνδεσμο Ï€Ïος',
+'exif-preferredattributionname' => 'Όταν επαναχÏησιμοποιείτε αυτό το έÏγο, παÏακαλώ αναφέÏετε την πηγή',
+'exif-pngfilecomment' => 'Σχόλιο αÏχείου PNG',
+'exif-disclaimer' => 'Αποποίηση ευθυνών',
+'exif-contentwarning' => 'ΠÏοειδοποίηση πεÏιεχομένου',
+'exif-giffilecomment' => 'Σχόλιο αÏχείου GIF',
+'exif-intellectualgenre' => 'ΤÏπος στοιχείου',
+'exif-subjectnewscode' => 'Κωδικός θέματος',
+'exif-scenecode' => 'Κωδικός σκηνής IPTC',
+'exif-event' => 'Γεγονός που απεικονίζεται',
+'exif-organisationinimage' => 'ΟÏγάνωση που απεικονίζεται',
+'exif-personinimage' => 'ΠÏόσωπο που απεικονίζεται',
+'exif-originalimageheight' => 'Ύψος εικόνας Ï€Ïιν από την πεÏικοπή της',
+'exif-originalimagewidth' => 'Πλάτος της εικόνας Ï€Ïιν από την πεÏικοπή της',
# EXIF attributes
'exif-compression-1' => 'Έχει αποσυμπιεστεί.',
+'exif-compression-2' => 'Εκτέλεση μήκους κωδικοποίησης CCITT Ομάδα 3 Μιας-Διαστάσεως Modified Huffman',
+'exif-compression-3' => 'Κωδικοποίηση Φαξ CCITT Ομάδας 3',
+'exif-compression-4' => 'Κωδικοποίηση Φαξ CCITT Ομάδας 4',
+
+'exif-copyrighted-true' => 'ΠÏοστατεÏεται από πνευματικά δικαιώματα',
+'exif-copyrighted-false' => 'Κοινό κτήμα',
'exif-unknowndate' => 'Άγνωστη ημεÏομηνία',
@@ -3142,6 +3265,8 @@ $1',
'exif-planarconfiguration-1' => 'πεπλατυσμένος σχηματισμός',
'exif-planarconfiguration-2' => 'επίπεδος σχηματισμός',
+'exif-colorspace-65535' => 'ΧωÏίς μικÏοÏÏθμιση',
+
'exif-componentsconfiguration-0' => 'δεν υπάÏχει',
'exif-exposureprogram-0' => 'Δεν έχει Ï€ÏοκαθοÏιστεί',
@@ -3255,6 +3380,10 @@ $1',
'exif-gpslongitude-e' => 'Ανατολικό γεωγÏαφικό μήκος',
'exif-gpslongitude-w' => 'Δυτικό γεωγÏαφικό μήκος',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|Meter|meters}} πάνω από το επίπεδο της θάλασσας',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|Meter|meters}} κάτω από το επίπεδο της θάλασσας',
+
'exif-gpsstatus-a' => 'ΜέτÏηση εν εξελίξει',
'exif-gpsstatus-v' => 'ΔιαλειτουÏγικότητα μετÏήσεων',
@@ -3266,21 +3395,73 @@ $1',
'exif-gpsspeed-m' => 'Μίλια/ÏŽÏα',
'exif-gpsspeed-n' => 'Κόμβοι',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'ΧιλιόμετÏα',
+'exif-gpsdestdistance-m' => 'Μίλια',
+'exif-gpsdestdistance-n' => 'Îαυτικά μίλια',
+
+'exif-gpsdop-excellent' => 'ΕξαιÏετικά ( $1 )',
+'exif-gpsdop-good' => 'Καλή ( $1 )',
+'exif-gpsdop-moderate' => 'ΜέτÏια ($1)',
+'exif-gpsdop-fair' => 'Ικανοποιητική ($1)',
+'exif-gpsdop-poor' => 'Κακή ($1)',
+
+'exif-objectcycle-a' => 'ΠÏωινή μόνο',
+'exif-objectcycle-p' => 'Î’Ïαδινή μόνο',
+'exif-objectcycle-b' => 'ΠÏωί και βÏάδυ',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'ΠÏαγματική κατεÏθυνση',
'exif-gpsdirection-m' => 'Μαγνητική κατεÏθυνση',
+'exif-ycbcrpositioning-1' => 'ΚέντÏο',
+'exif-ycbcrpositioning-2' => 'Κοινή-χωÏοθέτηση',
+
+'exif-dc-contributor' => 'Συντελεστές',
+'exif-dc-coverage' => 'Εδαφική και χÏονική έκταση των μέσων ενημέÏωσης',
+'exif-dc-date' => 'ΗμεÏομηνία (-ες)',
+'exif-dc-publisher' => 'Εκδότης',
+'exif-dc-relation' => 'Σχετικά μέσα',
+'exif-dc-rights' => 'Δικαιώματα',
+'exif-dc-source' => 'Μέσο Ï€Ïοέλευσης',
+'exif-dc-type' => 'ΤÏπος μέσου',
+
+'exif-rating-rejected' => 'ΑποÏÏίφθηκε',
+
+'exif-isospeedratings-overflow' => 'ΜεγαλÏτεÏο του 65535',
+
+'exif-iimcategory-ace' => 'Τέχνες, πολιτισμός και ψυχαγωγία',
+'exif-iimcategory-clj' => 'Έγκλημα και δίκαιο',
+'exif-iimcategory-dis' => 'ΚαταστÏοφές και ατυχήματα',
+'exif-iimcategory-fin' => 'Οικονομία και επιχειÏήσεις',
+'exif-iimcategory-edu' => 'Εκπαίδευση',
+'exif-iimcategory-evn' => 'ΠεÏιβάλλον',
+'exif-iimcategory-hth' => 'Υγεία',
+'exif-iimcategory-hum' => 'ΑνθÏώπινου ενδιαφέÏοντος',
+'exif-iimcategory-lab' => 'ΕÏγασία',
+'exif-iimcategory-lif' => 'ΤÏόπος ζωής και αναψυχή',
+'exif-iimcategory-pol' => 'Πολιτική',
+'exif-iimcategory-rel' => 'ΘÏησκεία και πεποιθήσεις',
+'exif-iimcategory-sci' => 'Επιστήμη και τεχνολογία',
+'exif-iimcategory-soi' => 'Κοινωνικά θέματα',
+'exif-iimcategory-spo' => 'Αθλητικά',
+'exif-iimcategory-war' => 'Πόλεμος, συγκÏοÏσεις και αναταÏαχές',
+'exif-iimcategory-wea' => 'ΚαιÏός',
+
+'exif-urgency-normal' => 'Κανονική ($1)',
+'exif-urgency-low' => 'Χαμηλή ($1)',
+'exif-urgency-high' => 'Υψηλή ($1)',
+'exif-urgency-other' => 'ΠÏοτεÏαιότητα που οÏίστηκε από το χÏήστη ($1)',
+
# External editor support
'edit-externally' => 'ΕπεξεÏγαστείτε το συγκεκÏιμένο αÏχείο χÏησιμοποιώντας μια από τις εξωτεÏικές εφαÏμογές.',
-'edit-externally-help' => 'Για πεÏισσότεÏες πληÏοφοÏίες δείτε τις [http://www.mediawiki.org/wiki/Manual:External_editors οδηγίες εγκατάστασης].',
+'edit-externally-help' => 'Για πεÏισσότεÏες πληÏοφοÏίες δείτε τις [//www.mediawiki.org/wiki/Manual:External_editors οδηγίες εγκατάστασης].',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'όλες',
-'imagelistall' => 'όλες',
-'watchlistall2' => 'όλες',
-'namespacesall' => 'όλα',
-'monthsall' => 'όλα',
-'limitall' => 'όλες',
+'watchlistall2' => 'όλες',
+'namespacesall' => 'όλα',
+'monthsall' => 'όλα',
+'limitall' => 'όλες',
# E-mail address confirmation
'confirmemail' => 'Επιβεβαίωση διεÏθυνσης e-mail',
@@ -3355,17 +3536,25 @@ $1',
'trackbackdeleteok' => 'Η επιστÏοφή για αναζήτηση έχει διαγÏαφεί επιτυχώς.',
# Delete conflict
-'deletedwhileediting' => "'''ΠÏοσοχή''': Αυτή η σελίδα έχει διαγÏαφεί αφότου ξεκινήσατε την επεξεÏγασία!",
-'confirmrecreate' => "Ο χÏήστης [[User:$1|$1]] ([[User talk:$1|συζήτηση]]) διέγÏαψε αυτή τη σελίδα αφότου ξεκινήσατε την επεξεÏγασία με αιτιολόγηση:
+'deletedwhileediting' => "'''ΠÏοσοχή''': Αυτή η σελίδα έχει διαγÏαφεί αφότου ξεκινήσατε την επεξεÏγασία!",
+'confirmrecreate' => "Ο χÏήστης [[User:$1|$1]] ([[User talk:$1|συζήτηση]]) διέγÏαψε αυτή τη σελίδα αφότου ξεκινήσατε την επεξεÏγασία με αιτιολόγηση:
: ''$2''
ΠαÏακαλώ επιβεβαιώστε ότι θέλετε Ï€Ïαγματικά να ξαναδημιουÏγήσετε αυτή τη σελίδα.",
-'recreate' => 'ΕπαναδημιουÏγία',
+'confirmrecreate-noreason' => 'Ο χÏήστης [[User:$1|$1]] ([[User talk:$1|συζήτηση]]) διέγÏαψε αυτή τη σελίδα αφότου ξεκινήσατε την επεξεÏγασία.
+ΠαÏακαλοÏμε επιβεβαιώστε ότι θέλετε Ï€Ïαγματικά να ξαναδημιουÏγήσετε αυτή τη σελίδα.',
+'recreate' => 'ΕπαναδημιουÏγία',
# action=purge
'confirm_purge_button' => 'Εντάξει',
'confirm-purge-top' => 'ΚαθαÏισμός της λανθάνουσας μνήμης αυτής της σελίδας.',
'confirm-purge-bottom' => 'Η εκκαθάÏιση μιας σελίδας εκκαθαÏίζει την μνήμη cache και εξαναγκάζει την πλέον Ï€Ïόσφατη έκδοση να εμφανιστεί.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Εντάξει',
+'confirm-watch-top' => 'ΠÏοσθήκη αυτής της σελίδας στη λίστα παÏακολοÏθησης σας;',
+'confirm-unwatch-button' => 'Εντάξει',
+'confirm-unwatch-top' => 'ΚατάÏγηση αυτής της σελίδας από τη λίστα παÏακολοÏθησης σας;',
+
# Multipage image navigation
'imgmultipageprev' => '↠πÏοηγοÏμενη σελίδα',
'imgmultipagenext' => 'επόμενη σελίδα →',
@@ -3407,14 +3596,14 @@ $1',
'watchlistedit-noitems' => 'Η λίστα παÏακολοÏθησής σας δεν πεÏιέχει καμιά εγγÏαφή.',
'watchlistedit-normal-title' => 'ΕπεξεÏγασία λίστας παÏακολοÏθησης',
'watchlistedit-normal-legend' => 'ΑφαίÏεση σελίδων από τη λίστα παÏακολοÏθησης',
-'watchlistedit-normal-explain' => 'Οι σελίδες στη λίστα παÏακολοÏθησής σας φαίνονται παÏακάτω. Για να αφαιÏέσετε μια σελίδα σημειώστε το κουτάκι δίπλα από τον τίτλο και κάντε κλικ στο "{{int:Watchlistedit-normal-submit}}". ΜποÏείτε επίσης να [[Special:Watchlist/raw|επεξεÏγαστείτε την πηγαία λίστα]].',
+'watchlistedit-normal-explain' => 'Οι σελίδες στη λίστα παÏακολοÏθησής σας φαίνονται παÏακάτω. Για να αφαιÏέσετε μια σελίδα σημειώστε το κουτάκι δίπλα από τον τίτλο και κάντε κλικ στο "{{int:Watchlistedit-normal-submit}}". ΜποÏείτε επίσης να [[Special:EditWatchlist/raw|επεξεÏγαστείτε την πηγαία λίστα]].',
'watchlistedit-normal-submit' => 'ΑφαίÏεση Σελίδων',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 τίτλος|$1 τίτλοι}} αφαιÏέθηκαν από τη λίστα παÏακολοÏθησής σας:',
'watchlistedit-raw-title' => 'ΕπεξεÏγασία πηγαίας λίστας παÏακολοÏθησης',
'watchlistedit-raw-legend' => 'ΔιόÏθωσε την πηγαία λίστα παÏακολοÏθησης',
'watchlistedit-raw-explain' => 'Οι σελίδες στη λίστα παÏακολοÏθησής σας φαίνονται παÏακάτω και μποÏείτε να τις επεξεÏγαστείτε
Ï€ÏοσθαφαιÏώντας από τη λίστα, έναν τίτλο ανά σειÏά. Όταν ολοκληÏώσετε την επεξεÏγασία, κάντε κλικ στο "{{int:Watchlistedit-raw-submit}}".
-ΜποÏείτε επίσης να χÏησιμοποιήσετε την [[Special:Watchlist/edit|Ï€Ïοεπιλεγμένη μέθοδο επεξεÏγασίας]].',
+ΜποÏείτε επίσης να χÏησιμοποιήσετε την [[Special:EditWatchlist|Ï€Ïοεπιλεγμένη μέθοδο επεξεÏγασίας]].',
'watchlistedit-raw-titles' => 'Σελίδες:',
'watchlistedit-raw-submit' => 'ΕνημέÏωση Λίστας ΠαÏακολοÏθησης',
'watchlistedit-raw-done' => 'Η λίστα παÏακολοÏθησής σας ενημεÏώθηκε.',
@@ -3431,33 +3620,33 @@ $1',
'duplicate-defaultsort' => 'ΠÏοσοχή: Το Ï€ÏοκαθοÏισμένο κλειδί ταξινόμησης "$2" υπεÏκαλÏπτει το Ï€ÏοηγοÏμενο "$1".',
# Special:Version
-'version' => 'Έκδοση',
-'version-extensions' => 'Εγκαταστημένες επεκτάσεις',
-'version-specialpages' => 'Ειδικές σελίδες',
-'version-parserhooks' => 'ΆγκιστÏα του ÏƒÏ…Î½Ï„Î±ÎºÏ„Î¹ÎºÎ¿Ï Î±Î½Î±Î»Ï…Ï„Î®',
-'version-variables' => 'ΠαÏάμετÏοι',
-'version-skins' => 'ΠÏοσόψεις',
-'version-other' => 'Άλλα',
-'version-mediahandlers' => 'ΧειÏιστές των μέσων',
-'version-hooks' => 'ΆγκιστÏα',
-'version-extension-functions' => 'ΣυναÏτήσεις επεκτάσεων',
-'version-parser-extensiontags' => 'Ετικέτες επεκτάσεων του ÏƒÏ…Î½Ï„Î±ÎºÏ„Î¹ÎºÎ¿Ï Î±Î½Î±Î»Ï…Ï„Î®',
-'version-parser-function-hooks' => 'ΆγκιστÏα συναÏτήσεων του ÏƒÏ…Î½Ï„Î±ÎºÏ„Î¹ÎºÎ¿Ï Î±Î½Î±Î»Ï…Ï„Î®',
-'version-skin-extension-functions' => 'ΛειτουÏγίες επέκτασης της διεπαφής',
-'version-hook-name' => 'Όνομα άγκιστÏου',
-'version-hook-subscribedby' => 'ΥπογεγÏαμμένο από',
-'version-version' => '(Έκδοση $1)',
-'version-license' => 'Άδεια χÏήσης',
-'version-poweredby-credits' => "Αυτό το βίκι Ï„Ïοφοδοτείται από '''[http://www.mediawiki.org/ MediaWiki]''', πνευματική ιδιοκτησία © 2001-$1 $2.",
-'version-poweredby-others' => 'άλλοι',
-'version-license-info' => "To Το MediaWiki είναι ελεÏθεÏο λογισμικό. ΜποÏείτε να το αναδιανέμετε ή / και να το Ï„Ïοποποιήσετε υπό τους ÏŒÏους της GNU General Public License όπως αυτή εκδόθηκε από το Free Software Foundation.Είτε η δεÏτεÏη έκδοση της άδειας, είτε (κατ' επιλογή σας) οποιδήποτε επόμενη έκδοση.
+'version' => 'Έκδοση',
+'version-extensions' => 'Εγκαταστημένες επεκτάσεις',
+'version-specialpages' => 'Ειδικές σελίδες',
+'version-parserhooks' => 'ΆγκιστÏα του ÏƒÏ…Î½Ï„Î±ÎºÏ„Î¹ÎºÎ¿Ï Î±Î½Î±Î»Ï…Ï„Î®',
+'version-variables' => 'ΠαÏάμετÏοι',
+'version-antispam' => 'ΠÏόληψη spam',
+'version-skins' => 'ΠÏοσόψεις',
+'version-other' => 'Άλλα',
+'version-mediahandlers' => 'ΧειÏιστές των μέσων',
+'version-hooks' => 'ΆγκιστÏα',
+'version-extension-functions' => 'ΣυναÏτήσεις επεκτάσεων',
+'version-parser-extensiontags' => 'Ετικέτες επεκτάσεων του ÏƒÏ…Î½Ï„Î±ÎºÏ„Î¹ÎºÎ¿Ï Î±Î½Î±Î»Ï…Ï„Î®',
+'version-parser-function-hooks' => 'ΆγκιστÏα συναÏτήσεων του ÏƒÏ…Î½Ï„Î±ÎºÏ„Î¹ÎºÎ¿Ï Î±Î½Î±Î»Ï…Ï„Î®',
+'version-hook-name' => 'Όνομα άγκιστÏου',
+'version-hook-subscribedby' => 'ΥπογεγÏαμμένο από',
+'version-version' => '(Έκδοση $1)',
+'version-license' => 'Άδεια χÏήσης',
+'version-poweredby-credits' => "Αυτό το βίκι Ï„Ïοφοδοτείται από '''[//www.mediawiki.org/ MediaWiki]''', πνευματική ιδιοκτησία © 2001-$1 $2.",
+'version-poweredby-others' => 'άλλοι',
+'version-license-info' => "To Το MediaWiki είναι ελεÏθεÏο λογισμικό. ΜποÏείτε να το αναδιανέμετε ή / και να το Ï„Ïοποποιήσετε υπό τους ÏŒÏους της GNU General Public License όπως αυτή εκδόθηκε από το Free Software Foundation.Είτε η δεÏτεÏη έκδοση της άδειας, είτε (κατ' επιλογή σας) οποιδήποτε επόμενη έκδοση.
Ο
Το MediaWiki διανέμεται με την ελπίδα ότι θα είναι χÏήσιμο, αλλά ΧΩΡΙΣ ΚΑΜΙΑ ΕΓΓΥΗΣΗ.ΟÏτε καν την σιωπηÏή εγγÏση της ΕΜΠΟΡΕΥΣΙΜΟΤΗΤΑΣ ή της ΚΑΤΑΛΛΗΛΟΤΗΤΑΣ ΓΙΑ ΕÎΑ PARTICULAR ΣΚΟΠΟ.Όπως δείτε την GNU General Public License για πεÏισσότεÏες λεπτομέÏειες.
- Θα Ï€Ïέπει να έχετε λάβει [((SERVER)) ((SCRIPTPATH)) / COPYING ένα αντίγÏαφο της GNU General Public License] μαζί με αυτό το Ï€ÏόγÏαμμα.Αν όχι, γÏάψτε Ï€Ïος το Free Software Foundation, Inc, 51 Franklin Street, πέμπτο ÏŒÏοφο , Boston, MA 02110-1301, USA ή [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html διαβάστε το online].",
-'version-software' => 'Εγκατεστημένο λογισμικό',
-'version-software-product' => 'ΠÏοϊόν',
-'version-software-version' => 'Έκδοση',
+ Θα Ï€Ïέπει να έχετε λάβει [((SERVER)) ((SCRIPTPATH)) / COPYING ένα αντίγÏαφο της GNU General Public License] μαζί με αυτό το Ï€ÏόγÏαμμα.Αν όχι, γÏάψτε Ï€Ïος το Free Software Foundation, Inc, 51 Franklin Street, πέμπτο ÏŒÏοφο , Boston, MA 02110-1301, USA ή [//www.gnu.org/licenses/old-licenses/gpl-2.0.html διαβάστε το online].",
+'version-software' => 'Εγκατεστημένο λογισμικό',
+'version-software-product' => 'ΠÏοϊόν',
+'version-software-version' => 'Έκδοση',
# Special:FilePath
'filepath' => 'ΔιαδÏομή αÏχείου',
@@ -3467,22 +3656,21 @@ $1',
Οι εικόνες εμφανίζονται σε πλήÏη ανάλυση, ενώ άλλοι Ï„Ïποι αÏχείων ανοίγονται απευθείας με το αντίστοιχο Ï€ÏόγÏαμμα.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Αναζήτηση για διπλά αÏχεία',
-'fileduplicatesearch-summary' => 'Αναζήτηση για διπλά αÏχεία με βάση την τιμή hash του αÏχείου.
-
-Εισάγετε το όνομα του αÏχείου χωÏίς το Ï€Ïόθεμα "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Αναζήτηση για διπλό αÏχείο',
-'fileduplicatesearch-filename' => 'Όνομα αÏχείου:',
-'fileduplicatesearch-submit' => 'Αναζήτηση',
-'fileduplicatesearch-info' => '$1 × $2 πίξελ<br />Μέγεθος αÏχείου: $3<br />ΤÏπος MIME: $4',
-'fileduplicatesearch-result-1' => 'Το αÏχείο "$1" δεν έχει κανένα ακÏιβές διπλότυπο.',
-'fileduplicatesearch-result-n' => 'Το αÏχείο "$1" έχει {{PLURAL:$2|ένα ακÏιβές αντίγÏαφο|$2 ακÏιβή αντίγÏαφα}}.',
+'fileduplicatesearch' => 'Αναζήτηση για διπλά αÏχεία',
+'fileduplicatesearch-summary' => 'Αναζήτηση για διπλά αÏχεία με βάση την τιμή hash του αÏχείου.',
+'fileduplicatesearch-legend' => 'Αναζήτηση για διπλό αÏχείο',
+'fileduplicatesearch-filename' => 'Όνομα αÏχείου:',
+'fileduplicatesearch-submit' => 'Αναζήτηση',
+'fileduplicatesearch-info' => '$1 × $2 πίξελ<br />Μέγεθος αÏχείου: $3<br />ΤÏπος MIME: $4',
+'fileduplicatesearch-result-1' => 'Το αÏχείο "$1" δεν έχει κανένα ακÏιβές διπλότυπο.',
+'fileduplicatesearch-result-n' => 'Το αÏχείο "$1" έχει {{PLURAL:$2|ένα ακÏιβές αντίγÏαφο|$2 ακÏιβή αντίγÏαφα}}.',
+'fileduplicatesearch-noresults' => 'Δεν βÏέθηκε κανένα αÏχείο με το όνομα «$1».',
# Special:SpecialPages
'specialpages' => 'Σελίδες λειτουÏγιών',
-'specialpages-note' => '----
-* Κανονικές ειδικές σελίδες.
-* <strong class="mw-specialpagerestricted">ΠεÏιοÏισμένες ειδικές σελίδες.</strong>',
+'specialpages-note' => ' * Κανονικές ειδικές σελίδες.
+* <span class="mw-specialpagerestricted">Ειδικές σελίδες με πεÏιοÏισμοÏÏ‚.</span>
+* <span class="mw-specialpagecached">Ειδικές σελίδες που βÏίσκονται στη μνήμη cache (μποÏεί να είναι απαÏχαιωμένες).</span>',
'specialpages-group-maintenance' => 'ΑναφοÏές συντήÏησης',
'specialpages-group-other' => 'Άλλες ειδικές σελίδες',
'specialpages-group-login' => 'ΣÏνδεση / δημιουÏγία λογαÏιασμοÏ',
diff --git a/languages/messages/MessagesEml.php b/languages/messages/MessagesEml.php
index 6624d492..b5b73ac6 100644
--- a/languages/messages/MessagesEml.php
+++ b/languages/messages/MessagesEml.php
@@ -143,7 +143,7 @@ Nutêv ca alcuni pàgini i putrèbber cuntinuèr a cràdder ca vueter a-sîv dis
'excontentauthor' => "al cointgnû l'éra: '$1' (e l'ónic cuntribudôr l'éra '[[Special:Contributions/$2|$2]]')",
'confirmdeletetext' => "Stèt per scanzlèr 'na pàgina o n'imàgin, insìmma a tòt la sô crunolugî dal database.
Cunfermèr per piasèr ca saîv quàl che stèv par fêr, ca capîv al pussìbil counseguèinzi e ca stèv facènd quàst in confurmitê cun [[{{MediaWiki:Policy-url}}]].",
-'deletedtext' => '"<nowiki>$1</nowiki>" l\'è stê scanzlê.
+'deletedtext' => '"$1" l\'è stê scanzlê.
Guèrda $2 par vèdder la lésta d\'al pàgin ch\'i sun stèdi scanzlèdi di recèint.',
'deletedarticle' => 'scanzlê "[[$1]]"',
'dellogpage' => 'Regestér dal scanzladûri',
diff --git a/languages/messages/MessagesEn.php b/languages/messages/MessagesEn.php
index fba1f5ce..635243c1 100644
--- a/languages/messages/MessagesEn.php
+++ b/languages/messages/MessagesEn.php
@@ -23,8 +23,6 @@ $fallback = false;
/**
* Is the language written right-to-left?
- * Note that right-to-left languages generally also specify
- * $defaultUserOptionOverrides = array( 'quickbar' => 2 );
*/
$rtl = false;
@@ -45,11 +43,6 @@ $digitTransformTable = null;
$separatorTransformTable = null;
/**
- * Overrides for the default user options. This is mainly used by RTL languages.
- */
-$defaultUserOptionOverrides = array();
-
-/**
* Extra user preferences which will be shown in Special:Preferences as
* checkboxes. Extra settings in derived languages will automatically be
* appended to the array of the fallback languages.
@@ -112,16 +105,14 @@ $namespaceNames = array(
$namespaceAliases = array();
/**
- * Deprecated, use the message array
- */
-$mathNames = array(
- MW_MATH_PNG => 'mw_math_png',
- MW_MATH_SIMPLE => 'mw_math_simple',
- MW_MATH_HTML => 'mw_math_html',
- MW_MATH_SOURCE => 'mw_math_source',
- MW_MATH_MODERN => 'mw_math_modern',
- MW_MATH_MATHML => 'mw_math_mathml'
+ * Array of gender specific. namespace aliases.
+ * Mapping NS_xxx to array of GENDERKEY to alias.
+ * Example:
+$namespaceGenderAliases = array(
+ NS_USER => array( 'male' => 'Male_user', 'female' => 'Female_user' ),
);
+ */
+$namespaceGenderAliases = array();
/**
* A list of date format preference keys which can be selected in user
@@ -319,6 +310,8 @@ $magicWords = array(
'plural' => array( 0, 'PLURAL:' ),
'fullurl' => array( 0, 'FULLURL:' ),
'fullurle' => array( 0, 'FULLURLE:' ),
+ 'canonicalurl' => array( 0, 'CANONICALURL:' ),
+ 'canonicalurle' => array( 0, 'CANONICALURLE:' ),
'lcfirst' => array( 0, 'LCFIRST:' ),
'ucfirst' => array( 0, 'UCFIRST:' ),
'lc' => array( 0, 'LC:' ),
@@ -368,100 +361,103 @@ $magicWords = array(
* hook.
*/
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'DoubleRedirects' ),
+ 'Activeusers' => array( 'ActiveUsers' ),
+ 'Allmessages' => array( 'AllMessages' ),
+ 'Allpages' => array( 'AllPages' ),
+ 'Ancientpages' => array( 'AncientPages' ),
+ 'Badtitle' => array( 'Badtitle' ),
+ 'Blankpage' => array( 'BlankPage' ),
+ 'Block' => array( 'Block', 'BlockIP', 'BlockUser' ),
+ 'Blockme' => array( 'BlockMe' ),
+ 'Booksources' => array( 'BookSources' ),
'BrokenRedirects' => array( 'BrokenRedirects' ),
- 'Disambiguations' => array( 'Disambiguations' ),
- 'Userlogin' => array( 'UserLogin' ),
- 'Userlogout' => array( 'UserLogout' ),
+ 'Categories' => array( 'Categories' ),
+ 'ChangePassword' => array( 'ChangePassword', 'ResetPass', 'ResetPassword' ),
+ 'ComparePages' => array( 'ComparePages' ),
+ 'Confirmemail' => array( 'ConfirmEmail' ),
+ 'Contributions' => array( 'Contributions', 'Contribs' ),
'CreateAccount' => array( 'CreateAccount' ),
- 'Preferences' => array( 'Preferences' ),
- 'Watchlist' => array( 'Watchlist' ),
- 'Recentchanges' => array( 'RecentChanges' ),
- 'Upload' => array( 'Upload' ),
- 'UploadStash' => array( 'UploadStash' ),
+ 'Deadendpages' => array( 'DeadendPages' ),
+ 'DeletedContributions' => array( 'DeletedContributions' ),
+ 'Disambiguations' => array( 'Disambiguations' ),
+ 'DoubleRedirects' => array( 'DoubleRedirects' ),
+ 'EditWatchlist' => array( 'EditWatchlist' ),
+ 'Emailuser' => array( 'EmailUser' ),
+ 'Export' => array( 'Export' ),
+ 'Fewestrevisions' => array( 'FewestRevisions' ),
+ 'FileDuplicateSearch' => array( 'FileDuplicateSearch' ),
+ 'Filepath' => array( 'FilePath' ),
+ 'Import' => array( 'Import' ),
+ 'Invalidateemail' => array( 'InvalidateEmail' ),
+ 'BlockList' => array( 'BlockList', 'ListBlocks', 'IPBlockList' ),
+ 'LinkSearch' => array( 'LinkSearch' ),
+ 'Listadmins' => array( 'ListAdmins' ),
+ 'Listbots' => array( 'ListBots' ),
'Listfiles' => array( 'ListFiles', 'FileList', 'ImageList' ),
- 'Newimages' => array( 'NewFiles', 'NewImages' ),
- 'Listusers' => array( 'ListUsers', 'UserList' ),
'Listgrouprights' => array( 'ListGroupRights', 'UserGroupRights' ),
- 'Statistics' => array( 'Statistics' ),
- 'Randompage' => array( 'Random', 'RandomPage' ),
+ 'Listredirects' => array( 'ListRedirects' ),
+ 'Listusers' => array( 'ListUsers', 'UserList' ),
+ 'Lockdb' => array( 'LockDB' ),
+ 'Log' => array( 'Log', 'Logs' ),
'Lonelypages' => array( 'LonelyPages', 'OrphanedPages' ),
- 'Uncategorizedpages' => array( 'UncategorizedPages' ),
- 'Uncategorizedcategories' => array( 'UncategorizedCategories' ),
- 'Uncategorizedimages' => array( 'UncategorizedFiles', 'UncategorizedImages' ),
- 'Uncategorizedtemplates' => array( 'UncategorizedTemplates' ),
- 'Unusedcategories' => array( 'UnusedCategories' ),
- 'Unusedimages' => array( 'UnusedFiles', 'UnusedImages' ),
- 'Wantedpages' => array( 'WantedPages', 'BrokenLinks' ),
- 'Wantedcategories' => array( 'WantedCategories' ),
- 'Wantedfiles' => array( 'WantedFiles' ),
- 'Wantedtemplates' => array( 'WantedTemplates' ),
+ 'Longpages' => array( 'LongPages' ),
+ 'MergeHistory' => array( 'MergeHistory' ),
+ 'MIMEsearch' => array( 'MIMESearch' ),
+ 'Mostcategories' => array( 'MostCategories' ),
+ 'Mostimages' => array( 'MostLinkedFiles', 'MostFiles', 'MostImages' ),
'Mostlinked' => array( 'MostLinkedPages', 'MostLinked' ),
'Mostlinkedcategories' => array( 'MostLinkedCategories', 'MostUsedCategories' ),
'Mostlinkedtemplates' => array( 'MostLinkedTemplates', 'MostUsedTemplates' ),
- 'Mostimages' => array( 'MostLinkedFiles', 'MostFiles', 'MostImages' ),
- 'Mostcategories' => array( 'MostCategories' ),
'Mostrevisions' => array( 'MostRevisions' ),
- 'Fewestrevisions' => array( 'FewestRevisions' ),
- 'Shortpages' => array( 'ShortPages' ),
- 'Longpages' => array( 'LongPages' ),
+ 'Movepage' => array( 'MovePage' ),
+ 'Mycontributions' => array( 'MyContributions' ),
+ 'Mypage' => array( 'MyPage' ),
+ 'Mytalk' => array( 'MyTalk' ),
+ 'Myuploads' => array( 'MyUploads' ),
+ 'Newimages' => array( 'NewFiles', 'NewImages' ),
'Newpages' => array( 'NewPages' ),
- 'Ancientpages' => array( 'AncientPages' ),
- 'Deadendpages' => array( 'DeadendPages' ),
+ 'PasswordReset' => array( 'PasswordReset' ),
+ 'PermanentLink' => array( 'PermanentLink', 'PermaLink' ),
+ 'Popularpages' => array( 'PopularPages' ),
+ 'Preferences' => array( 'Preferences' ),
+ 'Prefixindex' => array( 'PrefixIndex' ) ,
'Protectedpages' => array( 'ProtectedPages' ),
'Protectedtitles' => array( 'ProtectedTitles' ),
- 'Allpages' => array( 'AllPages' ),
- 'Prefixindex' => array( 'PrefixIndex' ) ,
- 'Ipblocklist' => array( 'BlockList', 'ListBlocks', 'IPBlockList' ),
- 'Unblock' => array( 'Unblock' ),
- 'Specialpages' => array( 'SpecialPages' ),
- 'Contributions' => array( 'Contributions' ),
- 'Emailuser' => array( 'EmailUser' ),
- 'Confirmemail' => array( 'ConfirmEmail' ),
- 'Whatlinkshere' => array( 'WhatLinksHere' ),
+ 'Randompage' => array( 'Random', 'RandomPage' ),
+ 'Randomredirect' => array( 'RandomRedirect' ),
+ 'Recentchanges' => array( 'RecentChanges' ),
'Recentchangeslinked' => array( 'RecentChangesLinked', 'RelatedChanges' ),
- 'Movepage' => array( 'MovePage' ),
- 'Blockme' => array( 'BlockMe' ),
- 'Booksources' => array( 'BookSources' ),
- 'Categories' => array( 'Categories' ),
- 'Export' => array( 'Export' ),
- 'Version' => array( 'Version' ),
- 'Allmessages' => array( 'AllMessages' ),
- 'Log' => array( 'Log', 'Logs' ),
- 'Blockip' => array( 'Block', 'BlockIP', 'BlockUser' ),
+ 'Revisiondelete' => array( 'RevisionDelete' ),
+ 'RevisionMove' => array( 'RevisionMove' ),
+ 'Search' => array( 'Search' ),
+ 'Shortpages' => array( 'ShortPages' ),
+ 'Specialpages' => array( 'SpecialPages' ),
+ 'Statistics' => array( 'Statistics' ),
+ 'Tags' => array( 'Tags' ),
+ 'Unblock' => array( 'Unblock' ),
+ 'Uncategorizedcategories' => array( 'UncategorizedCategories' ),
+ 'Uncategorizedimages' => array( 'UncategorizedFiles', 'UncategorizedImages' ),
+ 'Uncategorizedpages' => array( 'UncategorizedPages' ),
+ 'Uncategorizedtemplates' => array( 'UncategorizedTemplates' ),
'Undelete' => array( 'Undelete' ),
- 'Import' => array( 'Import' ),
- 'Lockdb' => array( 'LockDB' ),
'Unlockdb' => array( 'UnlockDB' ),
- 'Userrights' => array( 'UserRights', 'MakeSysop', 'MakeBot' ),
- 'MIMEsearch' => array( 'MIMESearch' ),
- 'FileDuplicateSearch' => array( 'FileDuplicateSearch' ),
- 'Unwatchedpages' => array( 'UnwatchedPages' ),
- 'Listredirects' => array( 'ListRedirects' ),
- 'Revisiondelete' => array( 'RevisionDelete' ),
+ 'Unusedcategories' => array( 'UnusedCategories' ),
+ 'Unusedimages' => array( 'UnusedFiles', 'UnusedImages' ),
'Unusedtemplates' => array( 'UnusedTemplates' ),
- 'Randomredirect' => array( 'RandomRedirect' ),
- 'Mypage' => array( 'MyPage' ),
- 'Mytalk' => array( 'MyTalk' ),
- 'Mycontributions' => array( 'MyContributions' ),
- 'Myuploads' => array( 'MyUploads' ),
- 'Listadmins' => array( 'ListAdmins' ),
- 'Listbots' => array( 'ListBots' ),
- 'Popularpages' => array( 'PopularPages' ),
- 'Search' => array( 'Search' ),
- 'Resetpass' => array( 'ChangePassword', 'ResetPass', 'ResetPassword' ),
+ 'Unwatchedpages' => array( 'UnwatchedPages' ),
+ 'Upload' => array( 'Upload' ),
+ 'UploadStash' => array( 'UploadStash' ),
+ 'Userlogin' => array( 'UserLogin' ),
+ 'Userlogout' => array( 'UserLogout' ),
+ 'Userrights' => array( 'UserRights', 'MakeSysop', 'MakeBot' ),
+ 'Version' => array( 'Version' ),
+ 'Wantedcategories' => array( 'WantedCategories' ),
+ 'Wantedfiles' => array( 'WantedFiles' ),
+ 'Wantedpages' => array( 'WantedPages', 'BrokenLinks' ),
+ 'Wantedtemplates' => array( 'WantedTemplates' ),
+ 'Watchlist' => array( 'Watchlist' ),
+ 'Whatlinkshere' => array( 'WhatLinksHere' ),
'Withoutinterwiki' => array( 'WithoutInterwiki' ),
- 'MergeHistory' => array( 'MergeHistory' ),
- 'Filepath' => array( 'FilePath' ),
- 'Invalidateemail' => array( 'InvalidateEmail' ),
- 'Blankpage' => array( 'BlankPage' ),
- 'LinkSearch' => array( 'LinkSearch' ),
- 'DeletedContributions' => array( 'DeletedContributions' ),
- 'Tags' => array( 'Tags' ),
- 'Activeusers' => array( 'ActiveUsers' ),
- 'ComparePages' => array( 'ComparePages' ),
- 'Badtitle' => array( 'Badtitle' ),
- 'DisableAccount' => array( 'DisableAccount' ),
);
/**
@@ -517,7 +513,6 @@ $preloadedMessages = array(
'accesskey-t-specialpages',
'accesskey-t-whatlinkshere',
'anonnotice',
- 'catseparator',
'colon-separator',
'currentevents',
'currentevents-url',
@@ -621,7 +616,7 @@ XHTML id names.
# User preference toggles
'tog-underline' => 'Link underlining:',
-'tog-highlightbroken' => 'Format broken links <a href="" class="new">like this</a> (alternative: like this<a href="" class="internal">?</a>)',
+'tog-highlightbroken' => 'Format broken links <a href="" class="new">like this</a> (alternative: Like this<a href="" class="internal">?</a>)',
'tog-justify' => 'Justify paragraphs',
'tog-hideminor' => 'Hide minor edits in recent changes',
'tog-hidepatrolled' => 'Hide patrolled edits in recent changes',
@@ -650,8 +645,8 @@ XHTML id names.
'tog-shownumberswatching' => 'Show the number of watching users',
'tog-oldsig' => 'Existing signature:',
'tog-fancysig' => 'Treat signature as wikitext (without an automatic link)',
-'tog-externaleditor' => 'Use external editor by default (for experts only, needs special settings on your computer. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
-'tog-externaldiff' => 'Use external diff by default (for experts only, needs special settings on your computer. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaleditor' => 'Use external editor by default (for experts only, needs special settings on your computer. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaldiff' => 'Use external diff by default (for experts only, needs special settings on your computer. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
'tog-showjumplinks' => 'Enable "jump to" accessibility links',
'tog-uselivepreview' => 'Use live preview (requires JavaScript) (experimental)',
'tog-forceeditsummary' => 'Prompt me when entering a blank edit summary',
@@ -749,15 +744,9 @@ XHTML id names.
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Indexed pages',
'noindex-category' => 'Noindexed pages',
+'broken-file-category' => 'Pages with broken file links',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD', # only translate this message to other languages if you have to change it
-'mainpagetext' => "'''MediaWiki has been successfully installed.'''",
-'mainpagedocfooter' => "Consult the [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] for information on using the wiki software.
-
-== Getting started ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD', # only translate this message to other languages if you have to change it
'about' => 'About',
'article' => 'Content page',
@@ -811,10 +800,10 @@ XHTML id names.
'history' => 'Page history',
'history_short' => 'History',
'updatedmarker' => 'updated since my last visit',
-'info_short' => 'Information',
'printableversion' => 'Printable version',
'permalink' => 'Permanent link',
'print' => 'Print',
+'view' => 'View',
'edit' => 'Edit',
'create' => 'Create',
'editthispage' => 'Edit this page',
@@ -822,6 +811,7 @@ XHTML id names.
'delete' => 'Delete',
'deletethispage' => 'Delete this page',
'undelete_short' => 'Undelete {{PLURAL:$1|one edit|$1 edits}}',
+'viewdeleted_short' => 'View {{PLURAL:$1|one deleted edit|$1 deleted edits}}',
'protect' => 'Protect',
'protect_change' => 'change',
'protectthispage' => 'Protect this page',
@@ -912,6 +902,8 @@ See [[Special:Version|version page]].',
'toc' => 'Contents',
'showtoc' => 'show',
'hidetoc' => 'hide',
+'collapsible-collapse' => 'Collapse',
+'collapsible-expand' => 'Expand',
'thisisdeleted' => 'View or restore $1?',
'viewdeleted' => 'View $1?',
'restorelink' => '{{PLURAL:$1|one deleted edit|$1 deleted edits}}',
@@ -928,6 +920,8 @@ See [[Special:Version|version page]].',
'anonnotice' => '-', # do not translate or duplicate this message to other languages
'newsectionheaderdefaultlevel' => '== $1 ==', # do not translate or duplicate this message to other languages
'red-link-title' => '$1 (page does not exist)',
+'sort-descending' => 'Sort descending',
+'sort-ascending' => 'Sort ascending',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Page',
@@ -940,6 +934,7 @@ See [[Special:Version|version page]].',
'nstab-template' => 'Template',
'nstab-help' => 'Help page',
'nstab-category' => 'Category',
+'mainpage-nstab' => '', # do not translate or duplicate this message to other languages
# Main script and global functions
'nosuchaction' => 'No such action',
@@ -1015,12 +1010,13 @@ Please try again in a few minutes.',
'protectedinterface' => 'This page provides interface text for the software, and is protected to prevent abuse.',
'editinginterface' => "'''Warning:''' You are editing a page which is used to provide interface text for the software.
Changes to this page will affect the appearance of the user interface for other users.
-For translations, please consider using [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], the MediaWiki localisation project.",
+For translations, please consider using [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], the MediaWiki localisation project.",
'sqlhidden' => '(SQL query hidden)',
'cascadeprotected' => 'This page has been protected from editing, because it is included in the following {{PLURAL:$1|page, which is|pages, which are}} protected with the "cascading" option turned on:
$2',
'namespaceprotected' => "You do not have permission to edit pages in the '''$1''' namespace.",
-'customcssjsprotected' => "You do not have permission to edit this page, because it contains another user's personal settings.",
+'customcssprotected' => "You do not have permission to edit this CSS page, because it contains another user's personal settings.",
+'customjsprotected' => "You do not have permission to edit this JavaScript page, because it contains another user's personal settings.",
'ns-specialprotected' => 'Special pages cannot be edited.',
'titleprotected' => 'This title has been protected from creation by [[User:$1|$1]].
The reason given is "\'\'$2\'\'".',
@@ -1058,6 +1054,7 @@ Do not forget to change your [[Special:Preferences|{{SITENAME}} preferences]].',
'createaccount' => 'Create account',
'gotaccount' => 'Already have an account? $1.',
'gotaccountlink' => 'Log in',
+'userlogin-resetlink' => 'Forgotten your login details?',
'createaccountmail' => 'By e-mail',
'createaccountreason' => 'Reason:',
'badretype' => 'The passwords you entered do not match.',
@@ -1072,6 +1069,9 @@ Please enable them, then log in with your new username and password.',
'nocookieslogin' => '{{SITENAME}} uses cookies to log in users.
You have cookies disabled.
Please enable them and try again.',
+'nocookiesfornew' => 'The user account was not created, as we could not confirm its source.
+Ensure you have cookies enabled, reload this page and try again.',
+'nocookiesforlogin' => '{{int:nocookieslogin}}', # only translate this message to other languages if you have to change it
'noname' => 'You have not specified a valid username.',
'loginsuccesstitle' => 'Login successful',
'loginsuccess' => "'''You are now logged in to {{SITENAME}} as \"\$1\".'''",
@@ -1111,8 +1111,10 @@ Before any other e-mail is sent to the account, you will have to follow the inst
To prevent abuse, only one password reminder will be sent per {{PLURAL:$1|hour|$1 hours}}.',
'loginstart' => '', # do not translate or duplicate this message to other languages
'loginend' => '', # do not translate or duplicate this message to other languages
+'loginend-https' => '', # do not translate or duplicate this message to other languages
'signupstart' => '{{int:loginstart}}', # do not translate or duplicate this message to other languages
'signupend' => '{{int:loginend}}', # do not translate or duplicate this message to other languages
+'signupend-https' => '', # do not translate or duplicate this message to other languages
'mailerror' => 'Error sending mail: $1',
'acct_creation_throttle_hit' => 'Visitors to this wiki using your IP address have created {{PLURAL:$1|1 account|$1 accounts}} in the last day, which is the maximum allowed in this time period.
As a result, visitors using this IP address cannot create any more accounts at the moment.',
@@ -1133,6 +1135,7 @@ You may ignore this message, if this account was created in error.',
'usernamehasherror' => 'Username cannot contain hash characters',
'login-throttled' => 'You have made too many recent login attempts.
Please wait before trying again.',
+'login-abort-generic' => 'Your login was unsuccessful - Aborted',
'loginlanguagelabel' => 'Language: $1',
'loginlanguagelinks' => '* Deutsch|de
* English|en
@@ -1148,7 +1151,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.",
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Change password',
'resetpass_announce' => 'You logged in with a temporary e-mailed code.
To finish logging in, you must set a new password here:',
@@ -1168,6 +1171,41 @@ Now logging you in...',
You may have already successfully changed your password or requested a new temporary password.',
'resetpass-temp-password' => 'Temporary password:',
+# Special:PasswordReset
+'passwordreset' => 'Reset password',
+'passwordreset-text' => 'Complete this form to receive an e-mail reminder of your account details.',
+'passwordreset-legend' => 'Reset password',
+'passwordreset-disabled' => 'Password resets have been disabled on this wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Enter one of the pieces of data below}}',
+'passwordreset-username' => 'Username:',
+'passwordreset-domain' => 'Domain:',
+'passwordreset-email' => 'E-mail address:',
+'passwordreset-emailtitle' => 'Account details on {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Someone (probably you, from IP address $1) requested a reminder of your
+account details for {{SITENAME}} ($4). The following user {{PLURAL:$3|account is|accounts are}}
+associated with this e-mail address:
+
+$2
+
+{{PLURAL:$3|This temporary password|These temporary passwords}} will expire in {{PLURAL:$5|one day|$5 days}}.
+You should log in and choose a new password now. If someone else made this
+request, or if you have remembered your original password, and you no longer
+wish to change it, you may ignore this message and continue using your old
+password.',
+'passwordreset-emailtext-user' => 'User $1 on {{SITENAME}} requested a reminder of your account details for {{SITENAME}}
+($4). The following user {{PLURAL:$3|account is|accounts are}} associated with this e-mail address:
+
+$2
+
+{{PLURAL:$3|This temporary password|These temporary passwords}} will expire in {{PLURAL:$5|one day|$5 days}}.
+You should log in and choose a new password now. If someone else made this
+request, or if you have remembered your original password, and you no longer
+wish to change it, you may ignore this message and continue using your old
+password.',
+'passwordreset-emailelement' => 'Username: $1
+Temporary password: $2',
+'passwordreset-emailsent' => 'A reminder e-mail has been sent.',
+
# Edit page toolbar
'bold_sample' => 'Bold text',
'bold_tip' => 'Bold text',
@@ -1179,8 +1217,6 @@ You may have already successfully changed your password or requested a new tempo
'extlink_tip' => 'External link (remember http:// prefix)',
'headline_sample' => 'Headline text',
'headline_tip' => 'Level 2 headline',
-'math_sample' => 'Insert formula here',
-'math_tip' => 'Mathematical formula (LaTeX)',
'nowiki_sample' => 'Insert non-formatted text here',
'nowiki_tip' => 'Ignore wiki formatting',
'image_sample' => 'Example.jpg', # only translate this message to other languages if you have to change it
@@ -1314,6 +1350,7 @@ If it still does not work, try [[Special:UserLogout|logging out]] and logging ba
'token_suffix_mismatch' => "'''Your edit has been rejected because your client mangled the punctuation characters in the edit token.'''
The edit has been rejected to prevent corruption of the page text.
This sometimes happens when you are using a buggy web-based anonymous proxy service.",
+'edit_form_incomplete' => "'''Some parts of the edit form did not reach the server; double-check that your edits are intact and try again.'''",
'editing' => 'Editing $1',
'editingsection' => 'Editing $1 (section)',
'editingcomment' => 'Editing $1 (new section)',
@@ -1360,6 +1397,7 @@ The latest log entry is provided below for reference:",
'template-semiprotected' => '(semi-protected)',
'hiddencategories' => 'This page is a member of {{PLURAL:$1|1 hidden category|$1 hidden categories}}:',
'edittools' => '<!-- Text here will be shown below edit and upload forms. -->', # only translate this message to other languages if you have to change it
+'edittools-upload' => '-', # only translate this message to other languages if you have to change it
'nocreatetitle' => 'Page creation limited',
'nocreatetext' => '{{SITENAME}} has restricted the ability to create new pages.
You can go back and edit an existing page, or [[Special:UserLogin|log in or create an account]].',
@@ -1675,7 +1713,7 @@ Try prefixing your query with ''all:'' to search all content (including talk pag
'searchdisabled' => '{{SITENAME}} search is disabled.
You can search via Google in the meantime.
Note that their indexes of {{SITENAME}} content may be out of date.',
-'googlesearch' => '<form method="get" action="http://www.google.com/search" id="googlesearch">
+'googlesearch' => '<form method="get" action="//www.google.com/search" id="googlesearch">
<input type="hidden" name="domains" value="{{SERVER}}" />
<input type="hidden" name="num" value="50" />
<input type="hidden" name="ie" value="$2" />
@@ -1693,12 +1731,13 @@ Note that their indexes of {{SITENAME}} content may be out of date.',
'opensearch-desc' => '{{SITENAME}} ({{CONTENTLANGUAGE}})', # do not translate or duplicate this message to other languages
# Quickbar
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'None',
-'qbsettings-fixedleft' => 'Fixed left',
-'qbsettings-fixedright' => 'Fixed right',
-'qbsettings-floatingleft' => 'Floating left',
-'qbsettings-floatingright' => 'Floating right',
+'qbsettings' => 'Quickbar',
+'qbsettings-none' => 'None',
+'qbsettings-fixedleft' => 'Fixed left',
+'qbsettings-fixedright' => 'Fixed right',
+'qbsettings-floatingleft' => 'Floating left',
+'qbsettings-floatingright' => 'Floating right',
+'qbsettings-directionality' => 'Fixed, depending on the script directionality of your language',
# Preferences page
'preferences' => 'Preferences',
@@ -1710,9 +1749,10 @@ Note that their indexes of {{SITENAME}} content may be out of date.',
'changepassword' => 'Change password',
'prefs-skin' => 'Skin',
'skin-preview' => 'Preview',
-'prefs-math' => 'Math',
'datedefault' => 'No preference',
+'prefs-beta' => 'Beta features',
'prefs-datetime' => 'Date and time',
+'prefs-labs' => 'Labs features',
'prefs-personal' => 'User profile',
'prefs-rc' => 'Recent changes',
'prefs-watchlist' => 'Watchlist',
@@ -1734,8 +1774,6 @@ Note that their indexes of {{SITENAME}} content may be out of date.',
'columns' => 'Columns:',
'searchresultshead' => 'Search',
'resultsperpage' => 'Hits per page:',
-'contextlines' => 'Lines per hit:',
-'contextchars' => 'Context per line:',
'stub-threshold' => 'Threshold for <a href="#" class="stub">stub link</a> formatting (bytes):',
'stub-threshold-disabled' => 'Disabled',
'recentchangesdays' => 'Days to show in recent changes:',
@@ -1748,7 +1786,7 @@ Here's a randomly-generated value you can use: $1",
'savedprefs' => 'Your preferences have been saved.',
'timezonelegend' => 'Time zone:',
'localtime' => 'Local time:',
-'timezoneuseserverdefault' => 'Use server default',
+'timezoneuseserverdefault' => 'Use wiki default ($1)',
'timezoneuseoffset' => 'Other (specify offset)',
'timezoneoffset' => 'Offset¹:',
'servertime' => 'Server time:',
@@ -1785,7 +1823,7 @@ This cannot be undone.',
'prefs-registration-date-time' => '$1', # only translate this message to other languages if you have to change it
'yourrealname' => 'Real name:',
'yourlanguage' => 'Language:',
-'yourvariant' => 'Content language variant:', # only translate this message to other languages if you have to change it
+'yourvariant' => 'Content language variant:',
'yournick' => 'New signature:',
'prefs-help-signature' => 'Comments on talk pages should be signed with "<nowiki>~~~~</nowiki>" which will be converted into your signature and a timestamp.',
'badsig' => 'Invalid raw signature.
@@ -1801,8 +1839,9 @@ This information will be public.',
'email' => 'E-mail',
'prefs-help-realname' => 'Real name is optional.
If you choose to provide it, this will be used for giving you attribution for your work.',
-'prefs-help-email' => 'E-mail address is optional, but is needed for password resets, should you forget your password.
-You can also choose to let others contact you through your user or talk page without needing to reveal your identity.',
+'prefs-help-email' => 'E-mail address is optional, but is needed for password resets, should you forget your password.',
+'prefs-help-email-others' => 'You can also choose to let others contact you by e-mail through a link on your user or talk page.
+Your e-mail address is not revealed when other users contact you.',
'prefs-help-email-required' => 'E-mail address is required.',
'prefs-info' => 'Basic information',
'prefs-i18n' => 'Internationalisation',
@@ -1929,15 +1968,15 @@ You can also choose to let others contact you through your user or talk page wit
'right-userrights' => 'Edit all user rights',
'right-userrights-interwiki' => 'Edit user rights of users on other wikis',
'right-siteadmin' => 'Lock and unlock the database',
-'right-reset-passwords' => "Reset other users' passwords",
'right-override-export-depth' => 'Export pages including linked pages up to a depth of 5',
'right-sendemail' => 'Send e-mail to other users',
# 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',
-'rightsnone' => '(none)',
+'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',
+'rightsnone' => '(none)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'read this page',
@@ -2068,13 +2107,13 @@ See the [[Special:NewFiles|gallery of new files]] for a more visual overview.',
'illegalfilename' => 'The filename "$1" contains characters that are not allowed in page titles.
Please rename the file and try uploading it again.',
'badfilename' => 'File name has been changed to "$1".',
-'filetype-mime-mismatch' => 'File extension does not match MIME type.',
+'filetype-mime-mismatch' => 'File extension ".$1" does not match the detected MIME type of the file ($2).',
'filetype-badmime' => 'Files of the MIME type "$1" are not allowed to be uploaded.',
'filetype-bad-ie-mime' => 'Cannot upload this file because Internet Explorer would detect it as "$1", which is a disallowed and potentially dangerous file type.',
'filetype-unwanted-type' => "'''\".\$1\"''' is an unwanted file type.
Preferred {{PLURAL:\$3|file type is|file types are}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' is not a permitted file type.
-Permitted {{PLURAL:\$3|file type is|file types are}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|is not a permitted file type|are not permitted file types}}.
+Permitted {{PLURAL:$3|file type is|file types are}} $2.',
'filetype-missing' => 'The file has no extension (like ".jpg").',
'empty-file' => 'The file you submitted was empty.',
'file-too-large' => 'The file you submitted was too large.',
@@ -2093,6 +2132,7 @@ this file is $2.',
'emptyfile' => 'The file you uploaded seems to be empty.
This might be due to a typo in the file name.
Please check whether you really want to upload this file.',
+'windows-nonascii-filename' => 'This wiki does not support filenames with special characters.',
'fileexists' => "A file with this name exists already, please check '''<tt>[[:$1]]</tt>''' if you are not sure if you want to change it.
[[$1|thumb]]",
'filepageexists' => "The description page for this file has already been created at '''<tt>[[:$1]]</tt>''', but no file with this name currently exists.
@@ -2133,6 +2173,8 @@ Please check the file_uploads setting.',
'uploadscripted' => 'This file contains HTML or script code that may be erroneously interpreted by a web browser.',
'uploadvirus' => 'The file contains a virus!
Details: $1',
+'uploadjava' => 'The file is a ZIP file which contains a Java .class file.
+Uploading Java files is not allowed, because they can cause security restrictions to be bypassed.',
'upload-source' => 'Source file',
'sourcefilename' => 'Source filename:',
'sourceurl' => 'Source URL:',
@@ -2143,10 +2185,6 @@ Details: $1',
'watchthisupload' => 'Watch this file',
'filewasdeleted' => 'A file of this name has been previously uploaded and subsequently deleted.
You should check the $1 before proceeding to upload it again.',
-'upload-wasdeleted' => "'''Warning: You are uploading a file that was previously deleted.'''
-
-You should consider whether it is appropriate to continue uploading this file.
-The deletion log for this file is provided here for convenience:",
'filename-bad-prefix' => "The name of the file you are uploading begins with '''\"\$1\"''', which is a non-descriptive name typically assigned automatically by digital cameras.
Please choose a more descriptive name for your file.",
'filename-prefix-blacklist' => ' #<!-- leave this line exactly as it is --> <pre>
@@ -2185,12 +2223,29 @@ If the problem persists, contact an [[Special:ListUsers/sysop|administrator]].',
'upload-unknown-size' => 'Unknown size',
'upload-http-error' => 'An HTTP error occured: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'An error was encountered when opening the file for ZIP checks.',
+'zip-wrong-format' => 'The specified file was not a ZIP file.',
+'zip-bad' => 'The file is a corrupt or otherwise unreadable ZIP file.
+It cannot be properly checked for security.',
+'zip-unsupported' => 'The file is a ZIP file which uses ZIP features not supported by MediaWiki.
+It cannot be properly checked for security.',
+
+# Special:UploadStash
+'uploadstash' => 'Upload stash',
+'uploadstash-summary' => 'This page provides access to files which are uploaded (or in the process of uploading) but are not yet published to the wiki. These files are not visible to anyone but the user who uploaded them.',
+'uploadstash-clear' => 'Clear stashed files',
+'uploadstash-nofiles' => 'You have no stashed files.',
+'uploadstash-badtoken' => 'Performing of that action was unsuccessful, perhaps because your editing credentials expired. Try again.',
+'uploadstash-errclear' => 'Clearing the files was unsuccessful.',
+'uploadstash-refresh' => 'Refresh the list of files',
+
# img_auth script messages
'img-auth-accessdenied' => 'Access denied',
'img-auth-nopathinfo' => 'Missing PATH_INFO.
Your server is not set up to pass this information.
It may be CGI-based and cannot support img_auth.
-See http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization See image authorization.]',
'img-auth-notindir' => 'Requested path is not in the configured upload directory.',
'img-auth-badtitle' => 'Unable to construct a valid title from "$1".',
'img-auth-nologinnWL' => 'You are not logged in and "$1" is not in the whitelist.',
@@ -2233,8 +2288,7 @@ You may want to try at a less busy time.',
# Special:ListFiles
'listfiles-summary' => 'This special page shows all uploaded files.
-By default the last uploaded files are shown at top of the list.
-A click on a column header changes the sorting.',
+When filtered by user, only files where that user uploaded the most recent version of the file are shown.',
'listfiles_search_for' => 'Search for media name:',
'imgfile' => 'file',
'listfiles' => 'File list',
@@ -2263,14 +2317,14 @@ A click on a column header changes the sorting.',
'filehist-filesize' => 'File size',
'filehist-comment' => 'Comment',
'filehist-missing' => 'File missing',
-'imagelinks' => 'File links',
+'imagelinks' => 'File usage',
'linkstoimage' => 'The following {{PLURAL:$1|page links|$1 pages link}} to this file:',
'linkstoimage-more' => 'More than $1 {{PLURAL:$1|page links|pages link}} to this file.
The following list shows the {{PLURAL:$1|first page link|first $1 page links}} to this file only.
A [[Special:WhatLinksHere/$2|full list]] is available.',
'nolinkstoimage' => 'There are no pages that link to this file.',
'morelinkstoimage' => 'View [[Special:WhatLinksHere/$1|more links]] to this file.',
-'redirectstofile' => 'The following {{PLURAL:$1|file redirects|$1 files redirect}} to this file:',
+'linkstoimage-redirect' => '$1 (file redirect) $2',
'duplicatesoffile' => 'The following {{PLURAL:$1|file is a duplicate|$1 files are duplicates}} of this file ([[Special:FileDuplicateSearch/$2|more details]]):',
'sharedupload' => 'This file is from $1 and may be used by other projects.',
'sharedupload-desc-there' => 'This file is from $1 and may be used by other projects.
@@ -2371,21 +2425,22 @@ Remember to check for other links to the templates before deleting them.',
'statistics-mostpopular' => 'Most viewed pages',
'statistics-footer' => '', # do not translate or duplicate this message to other languages
-'disambiguations' => 'Disambiguation pages',
+'disambiguations' => 'Pages linking to disambiguation pages',
'disambiguations-summary' => '', # do not translate or duplicate this message to other languages
'disambiguationspage' => 'Template:disambig',
'disambiguations-text' => "The following pages link to a '''disambiguation page'''.
They should link to the appropriate topic instead.<br />
A page is treated as disambiguation page if it uses a template which is linked from [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Double redirects',
-'doubleredirects-summary' => '', # do not translate or duplicate this message to other languages
-'doubleredirectstext' => 'This page lists pages which redirect to other redirect pages.
+'doubleredirects' => 'Double redirects',
+'doubleredirects-summary' => '', # do not translate or duplicate this message to other languages
+'doubleredirectstext' => 'This page lists pages which redirect to other redirect pages.
Each row contains links to the first and second redirect, as well as the target of the second redirect, which is usually the "real" target page, which the first redirect should point to.
<del>Crossed out</del> entries have been solved.',
-'double-redirect-fixed-move' => '[[$1]] has been moved.
+'double-redirect-fixed-move' => '[[$1]] has been moved.
It now redirects to [[$2]].',
-'double-redirect-fixer' => 'Redirect fixer',
+'double-redirect-fixed-maintenance' => 'Fixing double redirect from [[$1]] to [[$2]].',
+'double-redirect-fixer' => 'Redirect fixer',
'brokenredirects' => 'Broken redirects',
'brokenredirects-summary' => '', # do not translate or duplicate this message to other languages
@@ -2489,6 +2544,7 @@ Please note that other web sites may link to a file with a direct URL, and so ma
'pager-newer-n' => '{{PLURAL:$1|newer 1|newer $1}}',
'pager-older-n' => '{{PLURAL:$1|older 1|older $1}}',
'suppress' => 'Oversight',
+'querypage-disabled' => 'This special page is disabled for performance reasons.',
# Book sources
'booksources' => 'Book sources',
@@ -2500,8 +2556,8 @@ Please note that other web sites may link to a file with a direct URL, and so ma
'booksources-invalid-isbn' => 'The given ISBN does not appear to be valid; check for errors copying from the original source.',
# Magic words
-'rfcurl' => 'http://tools.ietf.org/html/rfc$1', # do not translate or duplicate this message to other languages
-'pubmedurl' => 'http://www.ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract', # do not translate or duplicate this message to other languages
+'rfcurl' => '//tools.ietf.org/html/rfc$1', # do not translate or duplicate this message to other languages
+'pubmedurl' => '//www.ncbi.nlm.nih.gov/pubmed/$1?dopt=Abstract', # do not translate or duplicate this message to other languages
# Special:Log
'specialloguserlabel' => 'User:',
@@ -2548,7 +2604,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'sp-deletedcontributions-contribs' => 'contributions',
# Special:LinkSearch
-'linksearch' => 'External links',
+'linksearch' => 'External links search',
'linksearch-pat' => 'Search pattern:',
'linksearch-ns' => 'Namespace:',
'linksearch-ok' => 'Search',
@@ -2618,6 +2674,10 @@ The e-mail address you entered in [[Special:Preferences|your user preferences]]
'noemailtext' => 'This user has not specified a valid e-mail address.',
'nowikiemailtitle' => 'No e-mail allowed',
'nowikiemailtext' => 'This user has chosen not to receive e-mail from other users.',
+'emailnotarget' => 'Non-existent or invalid username for recipient.',
+'emailtarget' => 'Enter username of recipient',
+'emailusername' => 'Username:',
+'emailusernamesubmit' => 'Submit',
'email-legend' => 'Send an e-mail to another {{SITENAME}} user',
'emailfrom' => 'From:',
'emailto' => 'To:',
@@ -2643,10 +2703,10 @@ The e-mail address you entered in [[Special:Preferences|your user preferences]]
'watchlistanontext' => 'Please $1 to view or edit items on your watchlist.',
'watchnologin' => 'Not logged in',
'watchnologintext' => 'You must be [[Special:UserLogin|logged in]] to modify your watchlist.',
-'addedwatch' => 'Added to watchlist',
+'addwatch' => 'Add to watchlist',
'addedwatchtext' => "The page \"[[:\$1]]\" has been added to your [[Special:Watchlist|watchlist]].
Future changes to this page and its associated talk page will be listed there, and the page will appear '''bolded''' in the [[Special:RecentChanges|list of recent changes]] to make it easier to pick out.",
-'removedwatch' => 'Removed from watchlist',
+'removewatch' => 'Remove from watchlist',
'removedwatchtext' => 'The page "[[:$1]]" has been removed from [[Special:Watchlist|your watchlist]].',
'watch' => 'Watch',
'watchthispage' => 'Watch this page',
@@ -2667,8 +2727,9 @@ Future changes to this page and its associated talk page will be listed there, a
'watchlist-options' => 'Watchlist options',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Watching...',
-'unwatching' => 'Unwatching...',
+'watching' => 'Watching...',
+'unwatching' => 'Unwatching...',
+'watcherrortext' => 'An error occurred while changing your watchlist settings for "$1".',
'enotif_mailer' => '{{SITENAME}} notification mailer',
'enotif_reset' => 'Mark all pages visited',
@@ -2696,17 +2757,20 @@ wiki: $PAGEEDITOR_WIKI
There will be no other notifications in case of further changes unless you visit this page.
You could also reset the notification flags for all your watched pages on your watchlist.
- Your friendly {{SITENAME}} notification system
+ Your friendly {{SITENAME}} notification system
--
+To change your e-mail notification settings, visit
+{{canonicalurl:{{#special:Preferences}}}}
+
To change your watchlist settings, visit
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
To delete the page from your watchlist, visit
$UNWATCHURL
Feedback and further assistance:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Delete page',
@@ -2723,7 +2787,7 @@ Feedback and further assistance:
Please confirm that you intend to do this, that you understand the consequences, and that you are doing this in accordance with [[{{MediaWiki:Policy-url}}|the policy]].',
'actioncomplete' => 'Action complete',
'actionfailed' => 'Action failed',
-'deletedtext' => '"<nowiki>$1</nowiki>" has been deleted.
+'deletedtext' => '"$1" has been deleted.
See $2 for a record of recent deletions.',
'deletedarticle' => 'deleted "[[$1]]"',
'suppressedarticle' => 'suppressed "[[$1]]"',
@@ -2785,7 +2849,7 @@ See the [[Special:ProtectedPages|protected pages list]] for the list of currentl
'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' => "You may view and change the protection level here for the page '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "You may view and change the protection level here 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.
@@ -2841,8 +2905,7 @@ You can change this page's protection level, but it will not affect the cascadin
The archive may be periodically cleaned out.',
'undelete-fieldset-title' => 'Restore revisions',
'undeleteextrahelp' => "To restore the page's entire history, leave all checkboxes deselected and click '''''{{int:undeletebtn}}'''''.
-To perform a selective restoration, check the boxes corresponding to the revisions to be restored, and click '''''{{int:undeletebtn}}'''''.
-Clicking '''''{{int:undeletereset}}''''' will clear the comment field and all checkboxes.",
+To perform a selective restoration, check the boxes corresponding to the revisions to be restored, and click '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|revision|revisions}} archived',
'undeletehistory' => 'If you restore the page, all revisions will be restored to the history.
If a new page with the same name has been created since the deletion, the restored revisions will appear in the prior history.',
@@ -2888,9 +2951,12 @@ $1',
'undelete-show-file-submit' => 'Yes',
# Namespace form on various pages
-'namespace' => 'Namespace:',
-'invert' => 'Invert selection',
-'blanknamespace' => '(Main)',
+'namespace' => 'Namespace:',
+'invert' => 'Invert selection',
+'tooltip-invert' => 'Check this box to hide changes to pages within the selected namespace (and the associated namespace if checked)',
+'namespace_association' => 'Associated namespace',
+'tooltip-namespace_association' => 'Check this box to also include the talk or subject namespace associated with the selected namespace',
+'blanknamespace' => '(Main)',
# Contributions
'contributions' => 'User contributions',
@@ -2945,13 +3011,15 @@ The latest block log entry is provided below for reference:',
'whatlinkshere-filters' => 'Filters',
# Block/unblock
+'autoblockid' => 'Autoblock #$1',
+'block' => 'Block user',
+'unblock' => 'Unblock user',
'blockip' => 'Block user',
'blockip-title' => 'Block user',
'blockip-legend' => 'Block user',
'blockiptext' => 'Use the form below to block write access from a specific IP address or username.
This should be done only to prevent vandalism, and in accordance with [[{{MediaWiki:Policy-url}}|policy]].
Fill in a specific reason below (for example, citing particular pages that were vandalized).',
-'ipaddress' => 'IP address:',
'ipadressorusername' => 'IP address or username:',
'ipbexpiry' => 'Expiry:',
'ipbreason' => 'Reason:',
@@ -2964,7 +3032,7 @@ Fill in a specific reason below (for example, citing particular pages that were
** Intimidating behaviour/harassment
** Abusing multiple accounts
** Unacceptable username',
-'ipbanononly' => 'Block anonymous users only',
+'ipb-hardblock' => 'Prevent logged-in users from editing from this IP address',
'ipbcreateaccount' => 'Prevent account creation',
'ipbemailban' => 'Prevent user from sending e-mail',
'ipbenableautoblock' => 'Automatically block the last IP address used by this user, and any subsequent IP addresses they try to edit from',
@@ -2975,12 +3043,15 @@ Fill in a specific reason below (for example, citing particular pages that were
'ipbotherreason' => 'Other/additional reason:',
'ipbhidename' => 'Hide username from edits and lists',
'ipbwatchuser' => "Watch this user's user and talk pages",
-'ipballowusertalk' => 'Allow this user to edit own talk page while blocked',
+'ipb-disableusertalk' => 'Prevent this user from editing their own talk page while blocked',
'ipb-change-block' => 'Re-block the user with these settings',
+'ipb-confirm' => 'Confirm block',
'badipaddress' => 'Invalid IP address',
'blockipsuccesssub' => 'Block succeeded',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] has been blocked.<br />
See [[Special:BlockList|IP block list]] to review blocks.',
+'ipb-blockingself' => 'You are about to block yourself! Are you sure you want to do that?',
+'ipb-confirmhideuser' => 'You are about to block a user with "hide user" enabled. This will suppress the user\'s name in all lists and log entries. Are you sure you want to do that?',
'ipb-edit-dropdown' => 'Edit block reasons',
'ipb-unblock-addr' => 'Unblock $1',
'ipb-unblock' => 'Unblock a username or IP address',
@@ -2990,18 +3061,24 @@ See [[Special:BlockList|IP block list]] to review blocks.',
'unblockiptext' => 'Use the form below to restore write access to a previously blocked IP address or username.',
'ipusubmit' => 'Remove this block',
'unblocked' => '[[User:$1|$1]] has been unblocked',
+'unblocked-range' => '$1 has been unblocked',
'unblocked-id' => 'Block $1 has been removed',
+'blocklist' => 'Blocked users',
'ipblocklist' => 'Blocked users',
'ipblocklist-legend' => 'Find a blocked user',
-'ipblocklist-username' => 'Username or IP address:',
-'ipblocklist-sh-userblocks' => '$1 account blocks',
-'ipblocklist-sh-tempblocks' => '$1 temporary blocks',
-'ipblocklist-sh-addressblocks' => '$1 single IP blocks',
-'ipblocklist-summary' => '', # do not translate or duplicate this message to other languages
+'blocklist-userblocks' => 'Hide account blocks',
+'blocklist-tempblocks' => 'Hide temporary blocks',
+'blocklist-addressblocks' => 'Hide single IP blocks',
+'blocklist-timestamp' => 'Timestamp',
+'blocklist-target' => 'Target',
+'blocklist-expiry' => 'Expires',
+'blocklist-by' => 'Blocking admin',
+'blocklist-params' => 'Block parameters',
+'blocklist-reason' => 'Reason',
+'blocklist-summary' => '', # do not translate or duplicate this message to other languages
'ipblocklist-submit' => 'Search',
'ipblocklist-localblock' => 'Local block',
'ipblocklist-otherblocks' => 'Other {{PLURAL:$1|block|blocks}}',
-'blocklistline' => '$1, $2 blocked $3 ($4)',
'infiniteblock' => 'infinite',
'expiringblock' => 'expires on $1 at $2',
'anononlyblock' => 'anon. only',
@@ -3040,10 +3117,9 @@ See the [[Special:BlockList|IP block list]] for the list of currently operationa
'ipb_expiry_temp' => 'Hidden username blocks must be permanent.',
'ipb_hide_invalid' => 'Unable to suppress this account; it may have too many edits.',
'ipb_already_blocked' => '"$1" is already blocked',
-'ipb-needreblock' => '== Already blocked ==
-$1 is already blocked.
-Do you want to change the settings?',
+'ipb-needreblock' => '$1 is already blocked. Do you want to change the settings?',
'ipb-otherblocks-header' => 'Other {{PLURAL:$1|block|blocks}}',
+'unblock-hideuser' => 'You cannot unblock this user, as their username has been hidden.',
'ipb_cant_unblock' => 'Error: Block ID $1 not found. It may have been unblocked already.',
'ipb_blocked_as_range' => 'Error: The IP address $1 is not blocked directly and cannot be unblocked.
It is, however, blocked as part of the range $2, which can be unblocked.',
@@ -3053,7 +3129,7 @@ It is, however, blocked as part of the range $2, which can be unblocked.',
'proxyblocker' => 'Proxy blocker',
'proxyblocker-disabled' => 'This function is disabled.',
'proxyblockreason' => 'Your IP address has been blocked because it is an open proxy.
-Please contact your Internet service provider or tech support and inform them of this serious security problem.',
+Please contact your Internet service provider or technical support of your organization and inform them of this serious security problem.',
'proxyblocksuccess' => 'Done.',
'sorbs' => 'DNSBL', # only translate this message to other languages if you have to change it
'sorbsreason' => 'Your IP address is listed as an open proxy in the DNSBL used by {{SITENAME}}.',
@@ -3085,10 +3161,10 @@ Remember to [[Special:UnlockDB|remove the lock]] after your maintenance is compl
'lockfilenotwritable' => 'The database lock file is not writable.
To lock or unlock the database, this needs to be writable by the web server.',
'databasenotlocked' => 'The database is not locked.',
+'lockedbyandtime' => '(by {{GENDER:$1|$1}} on $2 at $3)',
# Move page
'move-page' => 'Move $1',
-'move-page-backlink' => '↠$1', # only translate this message to other languages if you have to change it
'move-page-legend' => 'Move page',
'movepagetext' => "Using the form below will rename a page, moving all of its history to the new name.
The old title will become a redirect page to the new title.
@@ -3210,7 +3286,7 @@ In the latter case you can also use a link, for example [[{{#Special:Export}}/{{
'allmessagesdefault' => 'Default message text',
'allmessagescurrent' => 'Current message text',
'allmessagestext' => 'This is a list of system messages available in the MediaWiki namespace.
-Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "This page cannot be used because '''\$wgUseDatabaseMessages''' has been disabled.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter by customisation state:',
@@ -3230,7 +3306,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'thumbnail_invalid_params' => 'Invalid thumbnail parameters',
'thumbnail_dest_directory' => 'Unable to create destination directory',
'thumbnail_image-type' => 'Image type not supported',
-'thumbnail_gd-library' => 'Incomplete GD library configuration: missing function $1',
+'thumbnail_gd-library' => 'Incomplete GD library configuration: Missing function $1',
'thumbnail_image-missing' => 'File seems to be missing: $1',
# Special:Import
@@ -3421,35 +3497,42 @@ You can view its source',
'tooltip-summary' => 'Enter a short summary',
# Stylesheets
-'common.css' => '/* CSS placed here will be applied to all skins */', # only translate this message to other languages if you have to change it
-'standard.css' => '/* CSS placed here will affect users of the Standard skin */', # only translate this message to other languages if you have to change it
-'nostalgia.css' => '/* CSS placed here will affect users of the Nostalgia skin */', # only translate this message to other languages if you have to change it
-'cologneblue.css' => '/* CSS placed here will affect users of the Cologne Blue skin */', # only translate this message to other languages if you have to change it
-'monobook.css' => '/* CSS placed here will affect users of the Monobook skin */', # only translate this message to other languages if you have to change it
-'myskin.css' => '/* CSS placed here will affect users of the MySkin skin */', # only translate this message to other languages if you have to change it
-'chick.css' => '/* CSS placed here will affect users of the Chick skin */', # only translate this message to other languages if you have to change it
-'simple.css' => '/* CSS placed here will affect users of the Simple skin */', # only translate this message to other languages if you have to change it
-'modern.css' => '/* CSS placed here will affect users of the Modern skin */', # only translate this message to other languages if you have to change it
-'vector.css' => '/* CSS placed here will affect users of the Vector skin */', # only translate this message to other languages if you have to change it
-'print.css' => '/* CSS placed here will affect the print output */', # only translate this message to other languages if you have to change it
-'handheld.css' => '/* CSS placed here will affect handheld devices based on the skin configured in $wgHandheldStyle */', # only translate this message to other languages if you have to change it
+'common.css' => '/* CSS placed here will be applied to all skins */', # only translate this message to other languages if you have to change it
+'standard.css' => '/* CSS placed here will affect users of the Standard skin */', # only translate this message to other languages if you have to change it
+'nostalgia.css' => '/* CSS placed here will affect users of the Nostalgia skin */', # only translate this message to other languages if you have to change it
+'cologneblue.css' => '/* CSS placed here will affect users of the Cologne Blue skin */', # only translate this message to other languages if you have to change it
+'monobook.css' => '/* CSS placed here will affect users of the Monobook skin */', # only translate this message to other languages if you have to change it
+'myskin.css' => '/* CSS placed here will affect users of the MySkin skin */', # only translate this message to other languages if you have to change it
+'chick.css' => '/* CSS placed here will affect users of the Chick skin */', # only translate this message to other languages if you have to change it
+'simple.css' => '/* CSS placed here will affect users of the Simple skin */', # only translate this message to other languages if you have to change it
+'modern.css' => '/* CSS placed here will affect users of the Modern skin */', # only translate this message to other languages if you have to change it
+'vector.css' => '/* CSS placed here will affect users of the Vector skin */', # only translate this message to other languages if you have to change it
+'print.css' => '/* CSS placed here will affect the print output */', # only translate this message to other languages if you have to change it
+'handheld.css' => '/* CSS placed here will affect handheld devices based on the skin configured in $wgHandheldStyle */', # only translate this message to other languages if you have to change it
+'noscript.css' => '/* CSS placed here will affect users with JavaScript disabled */', # only translate this message to other languages if you have to change it
+'group-autoconfirmed.css' => '/* CSS placed here will affect autoconfirmed users only */', # only translate this message to other languages if you have to change it
+'group-bot.css' => '/* CSS placed here will affect bots only */', # only translate this message to other languages if you have to change it
+'group-sysop.css' => '/* CSS placed here will affect sysops only */', # only translate this message to other languages if you have to change it
+'group-bureaucrat.css' => '/* CSS placed here will affect bureaucrats only */', # only translate this message to other languages if you have to change it
# Scripts
-'common.js' => '/* Any JavaScript here will be loaded for all users on every page load. */', # only translate this message to other languages if you have to change it
-'standard.js' => '/* Any JavaScript here will be loaded for users using the Standard skin */', # only translate this message to other languages if you have to change it
-'nostalgia.js' => '/* Any JavaScript here will be loaded for users using the Nostalgia skin */', # only translate this message to other languages if you have to change it
-'cologneblue.js' => '/* Any JavaScript here will be loaded for users using the Cologne Blue skin */', # only translate this message to other languages if you have to change it
-'monobook.js' => '/* Any JavaScript here will be loaded for users using the MonoBook skin */', # only translate this message to other languages if you have to change it
-'myskin.js' => '/* Any JavaScript here will be loaded for users using the MySkin skin */', # only translate this message to other languages if you have to change it
-'chick.js' => '/* Any JavaScript here will be loaded for users using the Chick skin */', # only translate this message to other languages if you have to change it
-'simple.js' => '/* Any JavaScript here will be loaded for users using the Simple skin */', # only translate this message to other languages if you have to change it
-'modern.js' => '/* Any JavaScript here will be loaded for users using the Modern skin */', # only translate this message to other languages if you have to change it
-'vector.js' => '/* Any JavaScript here will be loaded for users using the Vector skin */', # only translate this message to other languages if you have to change it
+'common.js' => '/* Any JavaScript here will be loaded for all users on every page load. */', # only translate this message to other languages if you have to change it
+'standard.js' => '/* Any JavaScript here will be loaded for users using the Standard skin */', # only translate this message to other languages if you have to change it
+'nostalgia.js' => '/* Any JavaScript here will be loaded for users using the Nostalgia skin */', # only translate this message to other languages if you have to change it
+'cologneblue.js' => '/* Any JavaScript here will be loaded for users using the Cologne Blue skin */', # only translate this message to other languages if you have to change it
+'monobook.js' => '/* Any JavaScript here will be loaded for users using the MonoBook skin */', # only translate this message to other languages if you have to change it
+'myskin.js' => '/* Any JavaScript here will be loaded for users using the MySkin skin */', # only translate this message to other languages if you have to change it
+'chick.js' => '/* Any JavaScript here will be loaded for users using the Chick skin */', # only translate this message to other languages if you have to change it
+'simple.js' => '/* Any JavaScript here will be loaded for users using the Simple skin */', # only translate this message to other languages if you have to change it
+'modern.js' => '/* Any JavaScript here will be loaded for users using the Modern skin */', # only translate this message to other languages if you have to change it
+'vector.js' => '/* Any JavaScript here will be loaded for users using the Vector skin */', # only translate this message to other languages if you have to change it
+'group-autoconfirmed.js' => '/* Any JavaScript here will be loaded for autoconfirmed users only */', # only translate this message to other languages if you have to change it
+'group-bot.js' => '/* Any JavaScript here will be loaded for bots only */', # only translate this message to other languages if you have to change it
+'group-sysop.js' => '/* Any JavaScript here will be loaded for sysops only */', # only translate this message to other languages if you have to change it
+'group-bureaucrat.js' => '/* Any JavaScript here will be loaded for bureaucrats only */', # only translate this message to other languages if you have to change it
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata disabled for this server.',
-'nocreativecommons' => 'Creative Commons RDF metadata disabled for this server.',
-'notacceptable' => 'The wiki server cannot provide data in a format your client can read.',
+'notacceptable' => 'The wiki server cannot provide data in a format your client can read.',
# Attribution
'anonymous' => 'Anonymous {{PLURAL:$1|user|users}} of {{SITENAME}}',
@@ -3473,12 +3556,17 @@ This is probably caused by a link to a blacklisted external site.',
'spam_blanking' => 'All revisions contained links to $1, blanking',
# Info page
-'infosubtitle' => 'Information for page',
-'numedits' => 'Number of edits (page): $1',
-'numtalkedits' => 'Number of edits (discussion page): $1',
-'numwatchers' => 'Number of watchers: $1',
-'numauthors' => 'Number of distinct authors (page): $1',
-'numtalkauthors' => 'Number of distinct authors (discussion page): $1',
+'pageinfo-title' => 'Information for "$1"',
+'pageinfo-header-edits' => 'Edits',
+'pageinfo-header-watchlist' => 'Watchlist',
+'pageinfo-header-views' => 'Views',
+'pageinfo-subjectpage' => 'Page',
+'pageinfo-talkpage' => 'Talk page',
+'pageinfo-watchers' => 'Number of watchers',
+'pageinfo-edits' => 'Number of edits',
+'pageinfo-authors' => 'Number of distinct authors',
+'pageinfo-views' => 'Number of views',
+'pageinfo-viewsperedit' => 'Views per edit',
# Skin names
'skinname-standard' => 'Classic', # only translate this message to other languages if you have to change it
@@ -3491,25 +3579,6 @@ This is probably caused by a link to a blacklisted external site.',
'skinname-modern' => 'Modern', # only translate this message to other languages if you have to change it
'skinname-vector' => 'Vector', # only translate this message to other languages if you have to change it
-# Math options
-'mw_math_png' => 'Always render PNG',
-'mw_math_simple' => 'HTML if very simple or else PNG',
-'mw_math_html' => 'HTML if possible or else PNG',
-'mw_math_source' => 'Leave it as TeX (for text browsers)',
-'mw_math_modern' => 'Recommended for modern browsers',
-'mw_math_mathml' => 'MathML if possible (experimental)',
-
-# Math errors
-'math_failure' => 'Failed to parse',
-'math_unknown_error' => 'unknown error',
-'math_unknown_function' => 'unknown function',
-'math_lexing_error' => 'lexing error',
-'math_syntax_error' => 'syntax error',
-'math_image_error' => 'PNG conversion failed; check for correct installation of latex and dvipng (or dvips + gs + convert)',
-'math_bad_tmpdir' => 'Cannot write to or create math temp directory',
-'math_bad_output' => 'Cannot write to or create math output directory',
-'math_notexvc' => 'Missing texvc executable; please see math/README to configure.',
-
# Patrolling
'markaspatrolleddiff' => 'Mark as patrolled',
'markaspatrolledlink' => '[$1]', # do not translate or duplicate this message to other languages
@@ -3546,23 +3615,26 @@ $1',
'nextdiff' => 'Newer edit →',
# Media information
-'mediawarning' => "'''Warning''': This file type may contain malicious code.
+'mediawarning' => "'''Warning''': This file type may contain malicious code.
By executing it, your system may be compromised.",
-'imagemaxsize' => "Image size limit:<br />''(for file description pages)''",
-'thumbsize' => 'Thumbnail size:',
-'widthheight' => '$1 × $2', # only translate this message to other languages if you have to change it
-'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|page|pages}}',
-'file-info' => 'file size: $1, MIME type: $2',
-'file-info-size' => '$1 × $2 pixels, file size: $3, MIME type: $4',
-'file-nohires' => '<small>No higher resolution available.</small>',
-'svg-long-desc' => 'SVG file, nominally $1 × $2 pixels, file size: $3',
-'show-big-image' => 'Full resolution',
-'show-big-image-thumb' => '<small>Size of this preview: $1 × $2 pixels</small>',
-'file-info-gif-looped' => 'looped',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frames}}',
-'file-info-png-looped' => 'looped',
-'file-info-png-repeat' => 'played $1 {{PLURAL:$1|time|times}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|frame|frames}}',
+'imagemaxsize' => "Image size limit:<br />''(for file description pages)''",
+'thumbsize' => 'Thumbnail size:',
+'widthheight' => '$1 × $2', # only translate this message to other languages if you have to change it
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|page|pages}}',
+'file-info' => 'file size: $1, MIME type: $2',
+'file-info-size' => '$1 × $2 pixels, file size: $3, MIME type: $4',
+'file-info-size-pages' => '$1 × $2 pixels, file size: $3, MIME type: $4, $5 {{PLURAL:$5|page|pages}}',
+'file-nohires' => '<small>No higher resolution available.</small>',
+'svg-long-desc' => 'SVG file, nominally $1 × $2 pixels, file size: $3',
+'show-big-image' => 'Full resolution',
+'show-big-image-preview' => '<small>Size of this preview: $1.</small>',
+'show-big-image-other' => '<small>Other resolutions: $1.</small>',
+'show-big-image-size' => '$1 × $2 pixels',
+'file-info-gif-looped' => 'looped',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frames}}',
+'file-info-png-looped' => 'looped',
+'file-info-png-repeat' => 'played $1 {{PLURAL:$1|time|times}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|frame|frames}}',
# Special:NewFiles
'newimages' => 'Gallery of new files',
@@ -3581,6 +3653,7 @@ By executing it, your system may be compromised.",
'seconds-abbrev' => 's', # only translate this message to other languages if you have to change it
'minutes-abbrev' => 'm', # only translate this message to other languages if you have to change it
'hours-abbrev' => 'h', # only translate this message to other languages if you have to change it
+'days-abbrev' => 'd', # only translate this message to other languages if you have to change it
# Bad image list
'bad_image_list' => 'The format is as follows:
@@ -3634,13 +3707,18 @@ Variants for Chinese language
'variantname-tg-latn' => 'tg-Latn', # only translate this message to other languages if you have to change it
'variantname-tg' => 'tg', # only translate this message to other languages if you have to change it
+# Variants for Inuktitut language
+'variantname-ike-cans' => 'ike-Cans', # only translate this message to other languages if you have to change it
+'variantname-ike-latn' => 'ike-Latn', # only translate this message to other languages if you have to change it
+'variantname-iu' => 'iu', # only translate this message to other languages if you have to change it
+
# Metadata
-'metadata' => 'Metadata',
-'metadata-help' => 'This file contains additional information, probably added from the digital camera or scanner used to create or digitize it.
+'metadata' => 'Metadata',
+'metadata-help' => 'This file contains additional information, probably added from the digital camera or scanner used to create or digitize it.
If the file has been modified from its original state, some details may not fully reflect the modified file.',
-'metadata-expand' => 'Show extended details',
-'metadata-collapse' => 'Hide extended details',
-'metadata-fields' => 'Image metadata fields listed in this message will be included on image page display when the metadata table is collapsed.
+'metadata-expand' => 'Show extended details',
+'metadata-collapse' => 'Hide extended details',
+'metadata-fields' => 'Image metadata fields listed in this message will be included on image page display when the metadata table is collapsed.
Others will be hidden by default.
* make
* model
@@ -3648,7 +3726,15 @@ Others will be hidden by default.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+'metadata-langitem' => "'''$2:''' $1", # only translate this message to other languages if you have to change it
+'metadata-langitem-default' => '$1', # only translate this message to other languages if you have to change it
# EXIF tags
'exif-imagewidth' => 'Width',
@@ -3663,13 +3749,11 @@ Others will be hidden by default.
'exif-ycbcrpositioning' => 'Y and C positioning',
'exif-xresolution' => 'Horizontal resolution',
'exif-yresolution' => 'Vertical resolution',
-'exif-resolutionunit' => 'Unit of X and Y resolution',
'exif-stripoffsets' => 'Image data location',
'exif-rowsperstrip' => 'Number of rows per strip',
'exif-stripbytecounts' => 'Bytes per compressed strip',
'exif-jpeginterchangeformat' => 'Offset to JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytes of JPEG data',
-'exif-transferfunction' => 'Transfer function',
'exif-whitepoint' => 'White point chromaticity',
'exif-primarychromaticities' => 'Chromaticities of primarities',
'exif-ycbcrcoefficients' => 'Color space transformation matrix coefficients',
@@ -3688,7 +3772,6 @@ Others will be hidden by default.
'exif-compressedbitsperpixel' => 'Image compression mode',
'exif-pixelydimension' => 'Image width',
'exif-pixelxdimension' => 'Image height',
-'exif-makernote' => 'Manufacturer notes',
'exif-usercomment' => 'User comments',
'exif-relatedsoundfile' => 'Related audio file',
'exif-datetimeoriginal' => 'Date and time of data generation',
@@ -3703,7 +3786,6 @@ Others will be hidden by default.
'exif-exposureprogram' => 'Exposure Program',
'exif-spectralsensitivity' => 'Spectral sensitivity',
'exif-isospeedratings' => 'ISO speed rating',
-'exif-oecf' => 'Optoelectronic conversion factor',
'exif-shutterspeedvalue' => 'APEX shutter speed',
'exif-aperturevalue' => 'APEX aperture',
'exif-brightnessvalue' => 'APEX brightness',
@@ -3717,7 +3799,6 @@ Others will be hidden by default.
'exif-focallength-format' => '$1 mm', # only translate this message to other languages if you have to change it
'exif-subjectarea' => 'Subject area',
'exif-flashenergy' => 'Flash energy',
-'exif-spatialfrequencyresponse' => 'Spatial frequency response',
'exif-focalplanexresolution' => 'Focal plane X resolution',
'exif-focalplaneyresolution' => 'Focal plane Y resolution',
'exif-focalplaneresolutionunit' => 'Focal plane resolution unit',
@@ -3726,7 +3807,6 @@ Others will be hidden by default.
'exif-sensingmethod' => 'Sensing method',
'exif-filesource' => 'File source',
'exif-scenetype' => 'Scene type',
-'exif-cfapattern' => 'CFA pattern',
'exif-customrendered' => 'Custom image processing',
'exif-exposuremode' => 'Exposure mode',
'exif-whitebalance' => 'White balance',
@@ -3771,16 +3851,103 @@ Others will be hidden by default.
'exif-gpsareainformation' => 'Name of GPS area',
'exif-gpsdatestamp' => 'GPS date',
'exif-gpsdifferential' => 'GPS differential correction',
+'exif-coordinate-format' => '$1° $2′ $3″ $4', # only translate this message to other languages if you have to change it
+'exif-jpegfilecomment' => 'JPEG file comment',
+'exif-keywords' => 'Keywords',
+'exif-worldregioncreated' => 'World region that the picture was taken in',
+'exif-countrycreated' => 'Country that the picture was taken in',
+'exif-countrycodecreated' => 'Code for the country that the picture was taken in',
+'exif-provinceorstatecreated' => 'Province or state that the picture was taken in',
+'exif-citycreated' => 'City that the picture was taken in',
+'exif-sublocationcreated' => 'Sublocation of the city that the picture was taken in',
+'exif-worldregiondest' => 'World region shown',
+'exif-countrydest' => 'Country shown',
+'exif-countrycodedest' => 'Code for country shown',
+'exif-provinceorstatedest' => 'Province or state shown',
+'exif-citydest' => 'City shown',
+'exif-sublocationdest' => 'Sublocation of city shown',
'exif-objectname' => 'Short title',
+'exif-specialinstructions' => 'Special instructions',
+'exif-headline' => 'Headline',
+'exif-credit' => 'Credit/Provider',
+'exif-source' => 'Source',
+'exif-editstatus' => 'Editorial status of image',
+'exif-urgency' => 'Urgency',
+'exif-fixtureidentifier' => 'Fixture name',
+'exif-locationdest' => 'Location depicted',
+'exif-locationdestcode' => 'Code of location depicted',
+'exif-objectcycle' => 'Time of day that media is intended for',
+'exif-contact' => 'Contact information',
+'exif-writer' => 'Writer',
+'exif-languagecode' => 'Language',
+'exif-iimversion' => 'IIM version',
+'exif-iimcategory' => 'Category',
+'exif-iimsupplementalcategory' => 'Supplemental categories',
+'exif-datetimeexpires' => 'Do not use after',
+'exif-datetimereleased' => 'Released on',
+'exif-originaltransmissionref' => 'Original transmission location code',
+'exif-identifier' => 'Identifier',
+'exif-lens' => 'Lens used',
+'exif-serialnumber' => 'Serial number of camera',
+'exif-cameraownername' => 'Owner of camera',
+'exif-label' => 'Label',
+'exif-datetimemetadata' => 'Date metadata was last modified',
+'exif-nickname' => 'Informal name of image',
+'exif-rating' => 'Rating (out of 5)',
+'exif-rightscertificate' => 'Rights management certificate',
+'exif-copyrighted' => 'Copyright status',
+'exif-copyrightowner' => 'Copyright owner',
+'exif-usageterms' => 'Usage terms',
+'exif-webstatement' => 'Online copyright statement',
+'exif-originaldocumentid' => 'Unique ID of original document',
+'exif-licenseurl' => 'URL for copyright license',
+'exif-morepermissionsurl' => 'Alternative licensing information',
+'exif-attributionurl' => 'When re-using this work, please link to',
+'exif-preferredattributionname' => 'When re-using this work, please credit',
+'exif-pngfilecomment' => 'PNG file comment',
+'exif-disclaimer' => 'Disclaimer',
+'exif-contentwarning' => 'Content warning',
+'exif-giffilecomment' => 'GIF file comment',
+'exif-intellectualgenre' => 'Type of item',
+'exif-subjectnewscode' => 'Subject code',
+'exif-scenecode' => 'IPTC scene code',
+'exif-event' => 'Event depicted',
+'exif-organisationinimage' => 'Organization depicted',
+'exif-personinimage' => 'Person depicted',
+'exif-originalimageheight' => 'Height of image before it was cropped',
+'exif-originalimagewidth' => 'Width of image before it was cropped',
# Make & model, can be wikified in order to link to the camera and model name
-'exif-make-value' => '$1', # do not translate or duplicate this message to other languages
-'exif-model-value' => '$1', # do not translate or duplicate this message to other languages
-'exif-software-value' => '$1', # do not translate or duplicate this message to other languages
+'exif-make-value' => '$1', # do not translate or duplicate this message to other languages
+'exif-model-value' => '$1', # do not translate or duplicate this message to other languages
+'exif-software-value' => '$1', # do not translate or duplicate this message to other languages
+'exif-software-version-value' => '$1 (Version $2)', # do not translate or duplicate this message to other languages
+'exif-contact-value' => '$1
+
+$2
+<div class="adr">
+$3
+
+$4, $5, $6 $7
+</div>
+$8', # only translate this message to other languages if you have to change it
+'exif-subjectnewscode-value' => '$2 ($1)', # only translate this message to other languages if you have to change it
# EXIF attributes
-'exif-compression-1' => 'Uncompressed',
-'exif-compression-6' => 'JPEG', # only translate this message to other languages if you have to change it
+'exif-compression-1' => 'Uncompressed',
+'exif-compression-2' => 'CCITT Group 3 1-Dimensional Modified Huffman run length encoding',
+'exif-compression-3' => 'CCITT Group 3 fax encoding',
+'exif-compression-4' => 'CCITT Group 4 fax encoding',
+'exif-compression-5' => 'LZW', # only translate this message to other languages if you have to change it
+'exif-compression-6' => 'JPEG (old)', # only translate this message to other languages if you have to change it
+'exif-compression-7' => 'JPEG', # only translate this message to other languages if you have to change it
+'exif-compression-8' => 'Deflate (Adobe)', # only translate this message to other languages if you have to change it
+'exif-compression-32773' => 'PackBits (Macintosh RLE)', # only translate this message to other languages if you have to change it
+'exif-compression-32946' => 'Deflate (PKZIP)', # only translate this message to other languages if you have to change it
+'exif-compression-34712' => 'JPEG2000', # only translate this message to other languages if you have to change it
+
+'exif-copyrighted-true' => 'Copyrighted',
+'exif-copyrighted-false' => 'Public domain',
'exif-photometricinterpretation-2' => 'RGB', # only translate this message to other languages if you have to change it
'exif-photometricinterpretation-6' => 'YCbCr', # only translate this message to other languages if you have to change it
@@ -3802,8 +3969,8 @@ Others will be hidden by default.
'exif-xyresolution-i' => '$1 dpi', # only translate this message to other languages if you have to change it
'exif-xyresolution-c' => '$1 dpc', # only translate this message to other languages if you have to change it
-'exif-colorspace-1' => 'sRGB', # only translate this message to other languages if you have to change it
-'exif-colorspace-ffff.h' => 'FFFF.H', # only translate this message to other languages if you have to change it
+'exif-colorspace-1' => 'sRGB', # only translate this message to other languages if you have to change it
+'exif-colorspace-65535' => 'Uncalibrated',
'exif-componentsconfiguration-0' => 'does not exist',
'exif-componentsconfiguration-1' => 'Y', # only translate this message to other languages if you have to change it
@@ -3928,6 +4095,10 @@ Others will be hidden by default.
'exif-gpslongitude-e' => 'East longitude',
'exif-gpslongitude-w' => 'West longitude',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|meters}} above sea level',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|meters}} below sea level',
+
'exif-gpsstatus-a' => 'Measurement in progress',
'exif-gpsstatus-v' => 'Measurement interoperability',
@@ -3939,21 +4110,75 @@ Others will be hidden by default.
'exif-gpsspeed-m' => 'Miles per hour',
'exif-gpsspeed-n' => 'Knots',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometers',
+'exif-gpsdestdistance-m' => 'Miles',
+'exif-gpsdestdistance-n' => 'Nautical miles',
+
+'exif-gpsdop-excellent' => 'Excellent ($1)',
+'exif-gpsdop-good' => 'Good ($1)',
+'exif-gpsdop-moderate' => 'Moderate ($1)',
+'exif-gpsdop-fair' => 'Fair ($1)',
+'exif-gpsdop-poor' => 'Poor ($1)',
+
+'exif-objectcycle-a' => 'Morning only',
+'exif-objectcycle-p' => 'Evening only',
+'exif-objectcycle-b' => 'Both morning and evening',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'True direction',
'exif-gpsdirection-m' => 'Magnetic direction',
+'exif-ycbcrpositioning-1' => 'Centered',
+'exif-ycbcrpositioning-2' => 'Co-sited',
+
+'exif-dc-contributor' => 'Contributors',
+'exif-dc-coverage' => 'Spatial or temporal scope of media',
+'exif-dc-date' => 'Date(s)',
+'exif-dc-publisher' => 'Publisher',
+'exif-dc-relation' => 'Related media',
+'exif-dc-rights' => 'Rights',
+'exif-dc-source' => 'Source media',
+'exif-dc-type' => 'Type of media',
+
+'exif-rating-rejected' => 'Rejected',
+
+'exif-isospeedratings-overflow' => 'Greater than 65535',
+
+'exif-maxaperturevalue-value' => '$1 APEX (f/$2)', # only translate this message to other languages if you have to change it
+
+'exif-iimcategory-ace' => 'Arts, culture and entertainment',
+'exif-iimcategory-clj' => 'Crime and law',
+'exif-iimcategory-dis' => 'Disasters and accidents',
+'exif-iimcategory-fin' => 'Economy and business',
+'exif-iimcategory-edu' => 'Education',
+'exif-iimcategory-evn' => 'Environment',
+'exif-iimcategory-hth' => 'Health',
+'exif-iimcategory-hum' => 'Human interest',
+'exif-iimcategory-lab' => 'Labour',
+'exif-iimcategory-lif' => 'Lifestyle and leisure',
+'exif-iimcategory-pol' => 'Politics',
+'exif-iimcategory-rel' => 'Religion and belief',
+'exif-iimcategory-sci' => 'Science and technology',
+'exif-iimcategory-soi' => 'Social issues',
+'exif-iimcategory-spo' => 'Sports',
+'exif-iimcategory-war' => 'War, conflict and unrest',
+'exif-iimcategory-wea' => 'Weather',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Low ($1)',
+'exif-urgency-high' => 'High ($1)',
+'exif-urgency-other' => 'User-defined priority ($1)',
+
# External editor support
'edit-externally' => 'Edit this file using an external application',
-'edit-externally-help' => '(See the [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)',
+'edit-externally-help' => '(See the [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'all',
-'imagelistall' => 'all',
-'watchlistall2' => 'all',
-'namespacesall' => 'all',
-'monthsall' => 'all',
-'limitall' => 'all',
+'watchlistall2' => 'all',
+'namespacesall' => 'all',
+'monthsall' => 'all',
+'limitall' => 'all',
# E-mail address confirmation
'confirmemail' => 'Confirm e-mail address',
@@ -4040,11 +4265,12 @@ $1',
'trackbackdeleteok' => 'The trackback was successfully deleted.',
# Delete conflict
-'deletedwhileediting' => "'''Warning''': This page was deleted after you started editing!",
-'confirmrecreate' => "User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing with reason:
+'deletedwhileediting' => "'''Warning''': This page was deleted after you started editing!",
+'confirmrecreate' => "User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing with reason:
: ''$2''
Please confirm that you really want to recreate this page.",
-'recreate' => 'Recreate',
+'confirmrecreate-noreason' => 'User [[User:$1|$1]] ([[User talk:$1|talk]]) deleted this page after you started editing. Please confirm that you really want to recreate this page.',
+'recreate' => 'Recreate',
'unit-pixel' => 'px', # only translate this message to other languages if you have to change it
@@ -4053,8 +4279,13 @@ Please confirm that you really want to recreate this page.",
'confirm-purge-top' => 'Clear the cache of this page?',
'confirm-purge-bottom' => 'Purging a page clears the cache and forces the most current revision to appear.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Add this page to your watchlist?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Remove this page from your watchlist?',
+
# Separators for various lists, etc.
-'catseparator' => '|', # only translate this message to other languages if you have to change it
'semicolon-separator' => ';&#32;', # only translate this message to other languages if you have to change it
'comma-separator' => ',&#32;', # only translate this message to other languages if you have to change it
'colon-separator' => ':&#32;', # only translate this message to other languages if you have to change it
@@ -4138,7 +4369,7 @@ Try normal preview.',
'watchlistedit-normal-legend' => 'Remove titles from watchlist',
'watchlistedit-normal-explain' => 'Titles on your watchlist are shown below.
To remove a title, check the box next to it, and click "{{int:Watchlistedit-normal-submit}}".
-You can also [[Special:Watchlist/raw|edit the raw list]].',
+You can also [[Special:EditWatchlist/raw|edit the raw list]].',
'watchlistedit-normal-submit' => 'Remove titles',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 title was|$1 titles were}} removed from your watchlist:',
'watchlistedit-raw-title' => 'Edit raw watchlist',
@@ -4146,7 +4377,7 @@ You can also [[Special:Watchlist/raw|edit the raw list]].',
'watchlistedit-raw-explain' => 'Titles on your watchlist are shown below, and can be edited by adding to and removing from the list;
one title per line.
When finished, click "{{int:Watchlistedit-raw-submit}}".
-You can also [[Special:Watchlist/edit|use the standard editor]].',
+You can also [[Special:EditWatchlist|use the standard editor]].',
'watchlistedit-raw-titles' => 'Titles:',
'watchlistedit-raw-submit' => 'Update watchlist',
'watchlistedit-raw-done' => 'Your watchlist has been updated.',
@@ -4226,62 +4457,61 @@ You can also [[Special:Watchlist/edit|use the standard editor]].',
'duplicate-defaultsort' => '\'\'\'Warning:\'\'\' Default sort key "$2" overrides earlier default sort key "$1".',
# Special:Version
-'version' => 'Version',
-'version-extensions' => 'Installed extensions',
-'version-specialpages' => 'Special pages',
-'version-parserhooks' => 'Parser hooks',
-'version-variables' => 'Variables',
-'version-skins' => 'Skins',
-'version-other' => 'Other',
-'version-mediahandlers' => 'Media handlers',
-'version-hooks' => 'Hooks',
-'version-extension-functions' => 'Extension functions',
-'version-parser-extensiontags' => 'Parser extension tags',
-'version-parser-function-hooks' => 'Parser function hooks',
-'version-skin-extension-functions' => 'Skin extension functions',
-'version-hook-name' => 'Hook name',
-'version-hook-subscribedby' => 'Subscribed by',
-'version-version' => '(Version $1)',
-'version-svn-revision' => '(r$2)', # only translate this message to other languages if you have to change it
-'version-license' => 'License',
-'version-poweredby-credits' => "This wiki is powered by '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'others',
-'version-license-info' => 'MediaWiki is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
+'version' => 'Version',
+'version-extensions' => 'Installed extensions',
+'version-specialpages' => 'Special pages',
+'version-parserhooks' => 'Parser hooks',
+'version-variables' => 'Variables',
+'version-antispam' => 'Spam prevention',
+'version-skins' => 'Skins',
+'version-api' => 'API', # only translate this message to other languages if you have to change it
+'version-other' => 'Other',
+'version-mediahandlers' => 'Media handlers',
+'version-hooks' => 'Hooks',
+'version-extension-functions' => 'Extension functions',
+'version-parser-extensiontags' => 'Parser extension tags',
+'version-parser-function-hooks' => 'Parser function hooks',
+'version-hook-name' => 'Hook name',
+'version-hook-subscribedby' => 'Subscribed by',
+'version-version' => '(Version $1)',
+'version-svn-revision' => '(r$2)', # only translate this message to other languages if you have to change it
+'version-license' => 'License',
+'version-poweredby-credits' => "This wiki is powered by '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'others',
+'version-license-info' => 'MediaWiki is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version.
MediaWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING 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 or [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html read it online].',
-'version-software' => 'Installed software',
-'version-software-product' => 'Product',
-'version-software-version' => 'Version',
+You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING 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 or [//www.gnu.org/licenses/old-licenses/gpl-2.0.html read it online].',
+'version-software' => 'Installed software',
+'version-software-product' => 'Product',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath' => 'File path',
'filepath-page' => 'File:',
'filepath-submit' => 'Go',
'filepath-summary' => 'This special page returns the complete path for a file.
-Images are shown in full resolution, other file types are started with their associated program directly.
-
-Enter the file name without the "{{ns:file}}:" prefix.',
+Images are shown in full resolution, other file types are started with their associated program directly.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Search for duplicate files',
-'fileduplicatesearch-summary' => 'Search for duplicate files based on hash values.
-
-Enter the filename without the "{{ns:file}}:" prefix.',
-'fileduplicatesearch-legend' => 'Search for a duplicate',
-'fileduplicatesearch-filename' => 'Filename:',
-'fileduplicatesearch-submit' => 'Search',
-'fileduplicatesearch-info' => '$1 × $2 pixel<br />File size: $3<br />MIME type: $4',
-'fileduplicatesearch-result-1' => 'The file "$1" has no identical duplication.',
-'fileduplicatesearch-result-n' => 'The file "$1" has {{PLURAL:$2|1 identical duplication|$2 identical duplications}}.',
+'fileduplicatesearch' => 'Search for duplicate files',
+'fileduplicatesearch-summary' => 'Search for duplicate files based on hash values.',
+'fileduplicatesearch-legend' => 'Search for a duplicate',
+'fileduplicatesearch-filename' => 'Filename:',
+'fileduplicatesearch-submit' => 'Search',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />File size: $3<br />MIME type: $4',
+'fileduplicatesearch-result-1' => 'The file "$1" has no identical duplication.',
+'fileduplicatesearch-result-n' => 'The file "$1" has {{PLURAL:$2|1 identical duplication|$2 identical duplications}}.',
+'fileduplicatesearch-noresults' => 'No file named "$1" found.',
# Special:SpecialPages
'specialpages' => 'Special pages',
'specialpages-summary' => '', # do not translate or duplicate this message to other languages
'specialpages-note' => '----
* Normal special pages.
-* <strong class="mw-specialpagerestricted">Restricted special pages.</strong>',
+* <span class="mw-specialpagerestricted">Restricted special pages.</span>
+* <span class="mw-specialpagecached">Cached special pages (might be obsolete).</span>',
'specialpages-group-maintenance' => 'Maintenance reports',
'specialpages-group-other' => 'Other special pages',
'specialpages-group-login' => 'Login / sign up',
diff --git a/languages/messages/MessagesEn_gb.php b/languages/messages/MessagesEn_gb.php
index a7f3a675..83f02529 100644
--- a/languages/messages/MessagesEn_gb.php
+++ b/languages/messages/MessagesEn_gb.php
@@ -16,9 +16,9 @@
*/
$specialPageAliases = array(
- 'Uncategorizedpages' => array( 'UncategorisedPages' ),
'Uncategorizedcategories' => array( 'UncategorisedCategories' ),
'Uncategorizedimages' => array( 'UncategorisedFiles', 'UncategorisedImages' ),
+ 'Uncategorizedpages' => array( 'UncategorisedPages' ),
'Uncategorizedtemplates' => array( 'UncategorisedTemplates' ),
);
@@ -109,9 +109,16 @@ If the file has been modified from its original state, some details may not full
'exif-sensingmethod-5' => 'Colour sequential area sensor',
'exif-sensingmethod-8' => 'Colour sequential linear sensor',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metre|metres}} above sea level',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metre|metres}} below sea level',
+
# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kilometres per hour',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometres',
+
# E-mail address confirmation
'confirmemail_invalidated' => 'E-mail address confirmation cancelled',
@@ -120,6 +127,6 @@ If the file has been modified from its original state, some details may not full
MediaWiki is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public Licence for more details.
-You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU General Public Licence] along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA or [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html read it online].',
+You should have received [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU General Public Licence] along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA or [//www.gnu.org/licenses/old-licenses/gpl-2.0.html read it online].',
);
diff --git a/languages/messages/MessagesEo.php b/languages/messages/MessagesEo.php
index 5cdc3527..ff0c24b6 100644
--- a/languages/messages/MessagesEo.php
+++ b/languages/messages/MessagesEo.php
@@ -12,6 +12,7 @@
* @author Amikeco
* @author ArnoLagrange
* @author Castelobranco
+ * @author Iketsi
* @author Jens Liebenau
* @author Lucas
* @author LyzTyphone
@@ -68,96 +69,99 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Duoblaj_alidirektiloj' ),
+ 'Activeusers' => array( 'Aktivaj_uzantoj' ),
+ 'Allmessages' => array( 'Ĉiuj_mesaÄoj' ),
+ 'Allpages' => array( 'Ĉiuj_paÄoj' ),
+ 'Ancientpages' => array( 'Malnovaj_paÄoj' ),
+ 'Blankpage' => array( 'Malplena_paÄo' ),
+ 'Block' => array( 'Forbari_IP-adreson' ),
+ 'Blockme' => array( 'Forbari_min' ),
+ 'Booksources' => array( 'Citoj_el_libroj' ),
'BrokenRedirects' => array( 'Rompitaj_alidirektiloj' ),
- 'Disambiguations' => array( 'Apartigiloj' ),
- 'Userlogin' => array( 'Ensaluti' ),
- 'Userlogout' => array( 'Elsaluti' ),
+ 'Categories' => array( 'Kategorioj' ),
+ 'ChangePassword' => array( 'ÅœanÄi_pasvorton' ),
+ 'ComparePages' => array( 'Komparu_paÄojn' ),
+ 'Confirmemail' => array( 'Konfirmi_per_retpoÅto' ),
+ 'Contributions' => array( 'Kontribuoj' ),
'CreateAccount' => array( 'Krei_konton' ),
- 'Preferences' => array( 'Preferoj' ),
- 'Watchlist' => array( 'Atentaro' ),
- 'Recentchanges' => array( 'Lastaj_ÅanÄoj' ),
- 'Upload' => array( 'AlÅuti' ),
+ 'Deadendpages' => array( 'PaÄoj_sen_interna_ligilo' ),
+ 'DeletedContributions' => array( 'Forigitaj_kontribuoj' ),
+ 'Disambiguations' => array( 'Apartigiloj' ),
+ 'DoubleRedirects' => array( 'Duoblaj_alidirektiloj' ),
+ 'Emailuser' => array( 'RetpoÅti_uzanton' ),
+ 'Export' => array( 'Eksporti' ),
+ 'Fewestrevisions' => array( 'Plej_malmultaj_revizioj' ),
+ 'FileDuplicateSearch' => array( 'Serĉi_pri_duoblaj_dosieroj' ),
+ 'Filepath' => array( 'Dosiero-pado' ),
+ 'Import' => array( 'Importi' ),
+ 'Invalidateemail' => array( 'Malvalidigi_retpoÅton' ),
+ 'BlockList' => array( 'Forbarlisto_de_IP-adresoj', 'IP-adresa_forbarlisto' ),
+ 'LinkSearch' => array( 'Serĉi_ligilon' ),
+ 'Listadmins' => array( 'Listigi_administrantojn' ),
+ 'Listbots' => array( 'Listigi_robotojn' ),
'Listfiles' => array( 'Bildolisto' ),
- 'Newimages' => array( 'Novaj_bildoj' ),
- 'Listusers' => array( 'Listo_de_uzantoj' ),
'Listgrouprights' => array( 'Gruprajtoj_de_uzantoj' ),
- 'Statistics' => array( 'Statistikoj' ),
- 'Randompage' => array( 'Hazarda_paÄo' ),
+ 'Listredirects' => array( 'Listigi_alidirektojn' ),
+ 'Listusers' => array( 'Listo_de_uzantoj' ),
+ 'Lockdb' => array( 'Åœlosi_datumbazon' ),
+ 'Log' => array( 'Protokolo', 'Protokoloj' ),
'Lonelypages' => array( 'Neligitaj_paÄoj' ),
- 'Uncategorizedpages' => array( 'PaÄoj_sen_kategorio' ),
- 'Uncategorizedcategories' => array( 'Kategorioj_sen_kategorio' ),
- 'Uncategorizedimages' => array( 'Bildoj_sen_kategorio' ),
- 'Uncategorizedtemplates' => array( 'Åœablonoj_sen_kategorio' ),
- 'Unusedcategories' => array( 'Malplenaj_kategorioj' ),
- 'Unusedimages' => array( 'Neuzataj_bildoj' ),
- 'Wantedpages' => array( 'Dezirataj_paÄoj', 'Rompitaj_ligiloj' ),
- 'Wantedcategories' => array( 'Dezirataj_kategorioj' ),
- 'Wantedfiles' => array( 'Dezirataj_dosieroj' ),
- 'Wantedtemplates' => array( 'Dezirataj_Åablonoj' ),
+ 'Longpages' => array( 'Longaj_paÄoj' ),
+ 'MergeHistory' => array( 'Kunigi_historion' ),
+ 'MIMEsearch' => array( 'MIME-Serĉo' ),
+ 'Mostcategories' => array( 'Plej_multaj_kategorioj' ),
+ 'Mostimages' => array( 'Plej_ligitaj_bildoj' ),
'Mostlinked' => array( 'Plej_ligitaj_paÄoj' ),
'Mostlinkedcategories' => array( 'Plej_ligitaj_kategorioj', 'Plej_uzataj_kategorioj' ),
'Mostlinkedtemplates' => array( 'Plej_ligitaj_Åablonoj', 'Plej_uzataj_Åablonoj' ),
- 'Mostimages' => array( 'Plej_ligitaj_bildoj' ),
- 'Mostcategories' => array( 'Plej_multaj_kategorioj' ),
'Mostrevisions' => array( 'Plej_multaj_revizioj' ),
- 'Fewestrevisions' => array( 'Plej_malmultaj_revizioj' ),
- 'Shortpages' => array( 'Mallongaj_paÄoj' ),
- 'Longpages' => array( 'Longaj_paÄoj' ),
+ 'Movepage' => array( 'Alinomigi_paÄon' ),
+ 'Mycontributions' => array( 'Miaj_kontribuoj', 'MiajKontribuoj' ),
+ 'Mypage' => array( 'MiaPaÄo', 'Mia_paÄo' ),
+ 'Mytalk' => array( 'Mia_diskutpaÄo', 'MiaDiskutpaÄo' ),
+ 'Myuploads' => array( 'Miaj_alÅutaĵoj' ),
+ 'Newimages' => array( 'Novaj_bildoj' ),
'Newpages' => array( 'Novaj_paÄoj' ),
- 'Ancientpages' => array( 'Malnovaj_paÄoj' ),
- 'Deadendpages' => array( 'PaÄoj_sen_interna_ligilo' ),
+ 'PermanentLink' => array( 'DaÅ­ra_ligilo' ),
+ 'Popularpages' => array( 'Popularaj_paÄoj' ),
+ 'Preferences' => array( 'Preferoj' ),
+ 'Prefixindex' => array( 'Indekso_de_prefiksoj' ),
'Protectedpages' => array( 'Protektitaj_paÄoj' ),
'Protectedtitles' => array( 'Protektitaj_titoloj' ),
- 'Allpages' => array( 'Ĉiuj_paÄoj' ),
- 'Prefixindex' => array( 'Indekso_de_prefiksoj' ),
- 'Ipblocklist' => array( 'Forbarlisto_de_IP-adresoj', 'IP-adresa_forbarlisto' ),
- 'Unblock' => array( 'Malforbari' ),
- 'Specialpages' => array( 'Specialaj_paÄoj' ),
- 'Contributions' => array( 'Kontribuoj' ),
- 'Emailuser' => array( 'RetpoÅti_uzanton' ),
- 'Confirmemail' => array( 'Konfirmi_per_retpoÅto' ),
- 'Whatlinkshere' => array( 'Kio_ligas_ĉi_tien?' ),
+ 'Randompage' => array( 'Hazarda_paÄo' ),
+ 'Randomredirect' => array( 'Hazarda_alidirekto' ),
+ 'Recentchanges' => array( 'Lastaj_ÅanÄoj' ),
'Recentchangeslinked' => array( 'Rilataj_ÅanÄoj' ),
- 'Movepage' => array( 'Alinomigi_paÄon' ),
- 'Blockme' => array( 'Forbari_min' ),
- 'Booksources' => array( 'Citoj_el_libroj' ),
- 'Categories' => array( 'Kategorioj' ),
- 'Export' => array( 'Eksporti' ),
- 'Version' => array( 'Versio' ),
- 'Allmessages' => array( 'Ĉiuj_mesaÄoj' ),
- 'Log' => array( 'Protokolo', 'Protokoloj' ),
- 'Blockip' => array( 'Forbari_IP-adreson' ),
+ 'Revisiondelete' => array( 'Forigi_revizion' ),
+ 'RevisionMove' => array( 'Movi_revizion' ),
+ 'Search' => array( 'Serĉi' ),
+ 'Shortpages' => array( 'Mallongaj_paÄoj' ),
+ 'Specialpages' => array( 'Specialaj_paÄoj' ),
+ 'Statistics' => array( 'Statistikoj' ),
+ 'Tags' => array( 'Etikedoj' ),
+ 'Unblock' => array( 'Malforbari' ),
+ 'Uncategorizedcategories' => array( 'Kategorioj_sen_kategorio' ),
+ 'Uncategorizedimages' => array( 'Bildoj_sen_kategorio' ),
+ 'Uncategorizedpages' => array( 'PaÄoj_sen_kategorio' ),
+ 'Uncategorizedtemplates' => array( 'Åœablonoj_sen_kategorio' ),
'Undelete' => array( 'Restarigi' ),
- 'Import' => array( 'Importi' ),
- 'Lockdb' => array( 'Åœlosi_datumbazon' ),
'Unlockdb' => array( 'MalÅlosi_datumbazon' ),
- 'Userrights' => array( 'Rajtoj_de_uzantoj' ),
- 'MIMEsearch' => array( 'MIME-Serĉo' ),
- 'FileDuplicateSearch' => array( 'Serĉi_pri_duoblaj_dosieroj' ),
- 'Unwatchedpages' => array( 'Neatentitaj_paÄoj' ),
- 'Listredirects' => array( 'Listigi_alidirektojn' ),
- 'Revisiondelete' => array( 'Forigi_revizion' ),
+ 'Unusedcategories' => array( 'Malplenaj_kategorioj' ),
+ 'Unusedimages' => array( 'Neuzataj_bildoj' ),
'Unusedtemplates' => array( 'Neuzataj_Åablonoj' ),
- 'Randomredirect' => array( 'Hazarda_alidirekto' ),
- 'Mypage' => array( 'MiaPaÄo', 'Mia_paÄo' ),
- 'Mytalk' => array( 'Mia_diskutpaÄo', 'MiaDiskutpaÄo' ),
- 'Mycontributions' => array( 'Miaj_kontribuoj', 'MiajKontribuoj' ),
- 'Myuploads' => array( 'Miaj_alÅutaĵoj' ),
- 'Listadmins' => array( 'Listigi_administrantojn' ),
- 'Listbots' => array( 'Listigi_robotojn' ),
- 'Popularpages' => array( 'Popularaj_paÄoj' ),
- 'Search' => array( 'Serĉi' ),
- 'Resetpass' => array( 'ÅœanÄi_pasvorton' ),
+ 'Unwatchedpages' => array( 'Neatentitaj_paÄoj' ),
+ 'Upload' => array( 'AlÅuti' ),
+ 'Userlogin' => array( 'Ensaluti' ),
+ 'Userlogout' => array( 'Elsaluti' ),
+ 'Userrights' => array( 'Rajtoj_de_uzantoj' ),
+ 'Version' => array( 'Versio' ),
+ 'Wantedcategories' => array( 'Dezirataj_kategorioj' ),
+ 'Wantedfiles' => array( 'Dezirataj_dosieroj' ),
+ 'Wantedpages' => array( 'Dezirataj_paÄoj', 'Rompitaj_ligiloj' ),
+ 'Wantedtemplates' => array( 'Dezirataj_Åablonoj' ),
+ 'Watchlist' => array( 'Atentaro' ),
+ 'Whatlinkshere' => array( 'Kio_ligas_ĉi_tien?' ),
'Withoutinterwiki' => array( 'Sen_intervikia_ligilo' ),
- 'MergeHistory' => array( 'Kunigi_historion' ),
- 'Filepath' => array( 'Dosiero-pado' ),
- 'Invalidateemail' => array( 'Malvalidigi_retpoÅton' ),
- 'Blankpage' => array( 'Malplena_paÄo' ),
- 'LinkSearch' => array( 'Serĉi_ligilon' ),
- 'DeletedContributions' => array( 'Forigitaj_kontribuoj' ),
- 'Tags' => array( 'Etikedoj' ),
- 'Activeusers' => array( 'Aktivaj_uzantoj' ),
);
$magicWords = array(
@@ -325,8 +329,8 @@ $messages = array(
'tog-shownumberswatching' => 'Montri la nombron da priatentaj uzantoj',
'tog-oldsig' => 'Ekzistanta subskribo:',
'tog-fancysig' => 'Trakti subskribon kiel vikitekston (sen aÅ­tomata ligo)',
-'tog-externaleditor' => 'Defaŭlte uzi eksteran tekstprilaborilon (nur por ekspertoj, ĉar tio necesigas specialajn agordojn en via komputilo. [http://www.mediawiki.org/wiki/Manual:External_editors Pliaj informoj.])',
-'tog-externaldiff' => 'DefaÅ­lte uzi eksteran ÅanÄmontrilon (nur por ekspertoj, ĉar tio necesigas specialajn agordojn en via komputilo. [http://www.mediawiki.org/wiki/Manual:External_editors Pliaj informoj.])',
+'tog-externaleditor' => 'Defaŭlte uzi eksteran tekstprilaborilon (nur por ekspertoj, ĉar tio necesigas specialajn agordojn en via komputilo. [//www.mediawiki.org/wiki/Manual:External_editors Pliaj informoj.])',
+'tog-externaldiff' => 'DefaÅ­lte uzi eksteran ÅanÄmontrilon (nur por ekspertoj, ĉar tio necesigas specialajn agordojn en via komputilo. [//www.mediawiki.org/wiki/Manual:External_editors Pliaj informoj.])',
'tog-showjumplinks' => 'Ebligi alirligojn "salti al"
<!-- Bonvolu kontroli ĉu Äustas la traduko de : Enable "jump to" accessibility links -->',
'tog-uselivepreview' => 'Uzi tujan antaÅ­rigardon (ÄœavaSkripto) (Eksperimenta)',
@@ -423,15 +427,7 @@ $messages = array(
'listingcontinuesabbrev' => 'daÅ­rigo',
'index-category' => 'Indeksitaj paÄoj',
'noindex-category' => 'Neindeksitaj paÄoj',
-
-'mainpagetext' => "'''MediaWiki estis sukcese instalita.'''",
-'mainpagedocfooter' => "Konsultu la [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide User's Guide] por informo pri uzado de vikia programaro.
-
-==Kiel komenci==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Listo de konfiguraĵoj] (angla)
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki Oftaj Demandoj] (angla)
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki dissendolisto pri anoncoj] (angla)",
+'broken-file-category' => 'PaÄoj kun eraraj dosierligiloj',
'about' => 'Enkonduko',
'article' => 'Artikolo',
@@ -483,10 +479,10 @@ $messages = array(
'history' => 'Historio de versioj',
'history_short' => 'Historio',
'updatedmarker' => 'Äisdatita de post mia lasta vizito',
-'info_short' => 'Informo',
'printableversion' => 'Presebla versio',
'permalink' => 'Konstanta ligilo',
'print' => 'Printi',
+'view' => 'Vidi',
'edit' => 'Redakti',
'create' => 'Krei',
'editthispage' => 'Redakti la paÄon',
@@ -494,6 +490,7 @@ $messages = array(
'delete' => 'Forigi',
'deletethispage' => 'Forigi ĉi tiun paÄon',
'undelete_short' => 'Malforigi {{PLURAL:$1|redakton|$1 redaktojn}}',
+'viewdeleted_short' => 'Vidi {{PLURAL:$1|unu forigitan redakton|$1 forigitajn redaktojn}}',
'protect' => 'Protekti',
'protect_change' => 'ÅanÄi',
'protectthispage' => 'Protekti la paÄon',
@@ -577,6 +574,8 @@ $1',
'toc' => 'Enhavo',
'showtoc' => 'montri',
'hidetoc' => 'kaÅi',
+'collapsible-collapse' => 'kaÅi',
+'collapsible-expand' => 'Montri',
'thisisdeleted' => 'Vidi aÅ­ restarigi $1?',
'viewdeleted' => 'Ĉu rigardi $1?',
'restorelink' => '{{PLURAL:$1|unu forigitan version|$1 forigitajn versiojn}}',
@@ -588,6 +587,8 @@ $1',
'page-rss-feed' => '"$1" RSS-fonto',
'page-atom-feed' => '"$1" Atom-fonto',
'red-link-title' => '$1 (paÄo ne ekzistas)',
+'sort-descending' => 'Ordigi malkreskante',
+'sort-ascending' => 'Ordigi kreskante',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'PaÄo',
@@ -676,12 +677,13 @@ Peto: $2',
'protectedpagetext' => 'Tiu ĉi paÄo estas Ålosita por malebligi redaktadon.',
'viewsourcetext' => 'Vi povas rigardi kaj kopii la fonton de la paÄo:',
'protectedinterface' => 'Ĉi tiu paÄo provizas interfacan tekston por la softvaro, kaj estas Ålosita por malabeligi misuzon.',
-'editinginterface' => "'''Atentu:''' Vi redaktas paÄon, kiu estas uzata kiel interfaca teksto por la rogramaro. ÅœanÄoj de ĉi tiu teksto povas ÅanÄi aspekton de la interfaco por aliaj uzantoj. Por tradukojn, bonvolu uzi [http://translatewiki.net/wiki/Main_Page?setlang=eo translatewiki.net], la MediaWiki-projekton por lingvigaj versioj.",
+'editinginterface' => "'''Atentu:''' Vi redaktas paÄon, kiu estas uzata kiel interfaca teksto por la rogramaro. ÅœanÄoj de ĉi tiu teksto povas ÅanÄi aspekton de la interfaco por aliaj uzantoj. Por tradukojn, bonvolu uzi [//translatewiki.net/wiki/Main_Page?setlang=eo translatewiki.net], la MediaWiki-projekton por lingvigaj versioj.",
'sqlhidden' => '(SQL serĉomendo kaÅita)',
'cascadeprotected' => 'Ĉi tiu paÄo estas protektita kontraÅ­ redaktado, ĉar Äi estas inkludita en la {{PLURAL:$1|sekvan paÄon, kiu|sekvajn paÄojn, kiuj}} estas {{PLURAL:$1|protektata|protektataj}} kun la "kaskada" opcio turnita sur:
$2',
'namespaceprotected' => "Vi ne rajtas redakti paÄojn en la '''$1''' nomspaco.",
-'customcssjsprotected' => 'Vi ne rajtas redakti ĉi tiun paÄon, ĉar Äi enhavas personajn alÄustigojn de alia uzanto.',
+'customcssprotected' => 'Vi ne rajtas redakti ĉi tiun CSS-paÄon, ĉar Äi enhavas personajn alÄustigojn de alia uzanto.',
+'customjsprotected' => 'Vi ne rajtas redakti ĉi tiun JavaScript-paÄon, ĉar Äi enhavas personajn alÄustigojn de alia uzanto.',
'ns-specialprotected' => 'PaÄoj en la {{ns:special}} nomspaco ne povas esti redaktataj.',
'titleprotected' => "Ĉi titolo estas protektita de kreado de [[User:$1|$1]].
La kialo donata estis ''$2''.",
@@ -719,6 +721,7 @@ Ne forgesu fari viajn [[Special:Preferences|{{SITENAME}}-preferojn]].',
'createaccount' => 'Krei novan konton',
'gotaccount' => "Ĉu vi jam havas konton? '''$1'''.",
'gotaccountlink' => 'Ensaluti',
+'userlogin-resetlink' => 'Ĉu vi forgesis ensalutajn detalojn?',
'createaccountmail' => 'retpoÅte',
'createaccountreason' => 'Kialo:',
'badretype' => 'La pasvortojn kiujn vi tajpis ne egalas.',
@@ -728,13 +731,14 @@ Bonvolu elekti alian nomon.',
'createaccounterror' => 'Ne eblis krei konton: $1',
'nocookiesnew' => 'La uzantokonto estis kreita sed vi ne estas ensalutinta. *** E-igo lcfirst {{SITENAME}} uzas kuketojn por akcepti uzantojn. Kuketoj esta malaktivigitaj ĉe vi. Bonvolu aktivigi ilin kaj ensalutu per viaj novaj salutnomo kaj pasvorto.',
'nocookieslogin' => '{{SITENAME}} uzas kuketojn por akcepti uzantojn. Kuketoj esta malaktivigitaj ĉe vi. Bonvolu aktivigi ilin kaj provu denove.',
+'nocookiesfornew' => 'La uzula konto ne estis kreita, ĉar ne konfirmeblas Äia fonto. Certiginte ke kuketoj estas ebligitaj, reÅargu tiun ĉi pagon kaj reprovu.',
'noname' => 'Vi ne tajpis validan salutnomon.',
'loginsuccesstitle' => 'Ensalutado sukcesis',
'loginsuccess' => 'Vi ensalutis ĉe {{SITENAME}} kiel uzanto "$1".',
'nosuchuser' => 'Neniu uzanto havas nomon "$1".
Nomoj por uzantoj estas usklecodistinga.
Kontrolu vian literumadon, aÅ­ [[Special:UserLogin/signup|kreu novan konton]].',
-'nosuchusershort' => 'Ne ekzistas uzanto kun la nomo "<nowiki>$1</nowiki>". Bonvolu kontroli vian ortografion.',
+'nosuchusershort' => 'Ne ekzistas uzanto kun la nomo "$1". Bonvolu kontroli vian ortografion.',
'nouserspecified' => 'Vi devas entajpi salutnomon.',
'login-userblocked' => 'Ĉi tiu uzanto estas forbarita. Ensalutado ne estas permesita.',
'wrongpassword' => 'Vi tajpis malÄustan pasvorton. Bonvolu provi denove.',
@@ -780,13 +784,14 @@ Vi povas ignori ĉi mesaÄon, se ĉi konto estis kreita erare.',
'usernamehasherror' => 'Salutnomo ne povas enhavi kriphaketaĵajn signojn',
'login-throttled' => 'Vi tro ofte provis eniri la pasvorton por ĉi tiu konto.
Bonvolu Äisatendi antaÅ­ retrovi.',
+'login-abort-generic' => 'Via ensaluto malsukcesis - Ĉesigita',
'loginlanguagelabel' => 'Lingvo: $1',
'suspicious-userlogout' => 'Via peto por elsaluti estis malpermesita ĉar verÅajne Äi estis sendita de trompita retumilo aÅ­ kaÅiganta proksima servilo.',
# E-mail sending
'php-mail-error-unknown' => 'Nekonata eraro en la funkcio mail() de PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ÅœanÄi pasvorton',
'resetpass_announce' => 'Vi ensalutis kun provizora retpoÅtita pasvorto. Por kompleti ensalutadon, vi devas fari novan pasvorton ĉi tien:',
'resetpass_text' => '<!-- Aldonu tekston ĉi tien -->',
@@ -804,6 +809,40 @@ Bonvolu Äisatendi antaÅ­ retrovi.',
Vi eble jam ÅanÄis vian pasvorton aÅ­ petis novan provizoran pasvorton.',
'resetpass-temp-password' => 'Provizora pasvorto:',
+# Special:PasswordReset
+'passwordreset' => 'Restarigo de pasvorto',
+'passwordreset-text' => 'Plenumigu ĉi tiun formularon por ricevi retpoÅtan memoraĵon de viaj kontaj detaloj.',
+'passwordreset-legend' => 'Refari pasvorton',
+'passwordreset-disabled' => 'Pasvortaj restarigoj estis malÅaltitaj en ĉi tiu vikio.',
+'passwordreset-pretext' => '{{PLURAL:$1||Enigi unu el la jenaj datenoj}}',
+'passwordreset-username' => 'Salutnomo:',
+'passwordreset-domain' => 'Domajno:',
+'passwordreset-email' => 'RetpoÅtadreso:',
+'passwordreset-emailtitle' => 'Kontaj detaloj en {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Iu (verÅajne vi, de IP-adreso $1) petis rememoraĵo de viaj
+kontaj detaloj por {{SITENAME}} ($4). La {{PLURAL:$3|jena uzanto-konto|jenaj uzanto-kontoj}} estas
+asociita kun ĉi tiu retpoÅtadreso:
+
+$2
+
+Ĉi {{PLURAL:$3|tiu provizora pasvorto|tiuj provizoraj pasvortoj}} findatiÄos {{PLURAL:$5|unu tagon|$5 tagojn}}.
+Vi ensalutu kaj elektu novan pasvorton nun. Se iu alia petis ĉi tion,
+aÅ­ se vi memoris vian originalan pasvorton, kaj vi ne plu volas
+ÅanÄi Äin, vi povas ignori ĉi tiun mesaÄon kaj plu uzi vian
+malnovan pasvorton.',
+'passwordreset-emailtext-user' => 'Uzanto $1 de {{SITENAME}} petis rememoraĵo de viaj kontaj detaloj por {{SITENAME}}
+($4). La {{PLURAL:$3|jena uzanto-konto|jenaj uzanto-kontoj}} estas asociita kun ĉi tiu retpoÅtadreso:
+
+$2
+
+Ĉi {{PLURAL:$3|tiu provizora pasvorto|tiuj provizoraj pasvortoj}} findatiÄos {{PLURAL:$5|unu tagon|$5 tagojn}}.
+Vi devas ensaluti kaj elekti novan pasvorton nun. Se iu alia petis ĉi tion,
+aÅ­ se vi memoris vian originalan pasvorton, kaj vi ne plu volas ÅanÄi
+Äin, vi povas ignori ĉi tiun mesaÄon kaj uzi vian malnovan pasvorton.',
+'passwordreset-emailelement' => 'Salutnomo: $1
+Provizora pasvorto: $2',
+'passwordreset-emailsent' => 'Rememoriga retpoÅto estis sendita.',
+
# Edit page toolbar
'bold_sample' => 'Grasa teksto',
'bold_tip' => 'Grasa teksto',
@@ -815,8 +854,6 @@ Vi eble jam ÅanÄis vian pasvorton aÅ­ petis novan provizoran pasvorton.',
'extlink_tip' => 'Ekstera ligo (memoru http:// prefikson)',
'headline_sample' => 'Titola teksto',
'headline_tip' => 'Titololinio je dua nivelo',
-'math_sample' => 'Enmeti formulon ĉi tien',
-'math_tip' => 'Matematika formulo (LaTeX)',
'nowiki_sample' => 'Enigi ne formatitan tekston ĉi tien',
'nowiki_tip' => 'Ignori vikiformatadon',
'image_sample' => 'Ekzemplo.jpg',
@@ -902,7 +939,7 @@ aÅ­ [{{fullurl:{{FULLPAGENAME}}|action=edit}} redakti ĉi tiun paÄon]</span>.',
'noarticletext-nopermission' => 'Estas neniom da teksto en ĉi tiu paÄo.
Vi povas [[Special:Search/{{PAGENAME}}|serĉi ĉi tiun paÄan titolon]] en aliaj paÄoj,
aŭ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serĉi la rilatajn protokolojn]</span>.',
-'userpage-userdoesnotexist' => 'Uzantokonto "$1" ne estas registrita. Bonvolu konfirmi se vi volas krei/redakti ĉi tiun paÄon.',
+'userpage-userdoesnotexist' => 'Uzantokonto "<nowiki>$1</nowiki>" ne estas registrita. Bonvolu konfirmi se vi volas krei/redakti ĉi tiun paÄon.',
'userpage-userdoesnotexist-view' => 'Uzanto-konto "$1" ne estas registrita.',
'blocked-notice-logextract' => 'Ĉi tiu uzanto estas ĉi-momente forbarita.
La lasta protokolero estas jene montrata por via referenco:',
@@ -939,6 +976,7 @@ Se ankoraÅ­ ne funkcias, provu [[Special:UserLogout|elsaluti]] kaj reensaluti.",
'token_suffix_mismatch' => "'''Via redakto estis malpermesita ĉar via klienta fuÅis la interpunkcio en la redakto-signo.
La redakto estis malpermesita por preventi koruptado de la teksto de la paÄo.
Ĉi tiel malofte okazas kiam vi uzas fuÅan TTT-an anoniman prokurilon.'''",
+'edit_form_incomplete' => "'''Kelkaj partoj de la redaktada formo ne atingis la servilon; rekontrolu ke via redakto estas Äusta kaj reprovu.'''",
'editing' => 'Redaktante $1',
'editingsection' => 'Redaktante $1 (sekcion)',
'editingcomment' => 'Redaktante $1 (nova sekcio)',
@@ -1281,12 +1319,13 @@ Provu prefiksi vian mendon kun ''all:'' por serĉi ĉiun enhavon (inkluzivante d
indekso pro troÅarÄita servilo. Intertempe, vi povas serĉi per <i>guglo</i> aÅ­ per <i>jahu!</i>:</p>',
# Quickbar
-'qbsettings' => 'Preferoj pri ilaro',
-'qbsettings-none' => 'Neniu',
-'qbsettings-fixedleft' => 'FiksiÄas maldekstre',
-'qbsettings-fixedright' => 'FiksiÄas dekstre',
-'qbsettings-floatingleft' => 'Åœvebas maldekstre',
-'qbsettings-floatingright' => 'Åœvebas dekstre',
+'qbsettings' => 'Preferoj pri ilaro',
+'qbsettings-none' => 'Neniu',
+'qbsettings-fixedleft' => 'FiksiÄas maldekstre',
+'qbsettings-fixedright' => 'FiksiÄas dekstre',
+'qbsettings-floatingleft' => 'Åœvebas maldekstre',
+'qbsettings-floatingright' => 'Åœvebas dekstre',
+'qbsettings-directionality' => 'Fiksita, laÅ­ la teksto-direkteco de via lingvo',
# Preferences page
'preferences' => 'Preferoj',
@@ -1297,9 +1336,10 @@ indekso pro troÅarÄita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
'changepassword' => 'ÅœanÄi pasvorton',
'prefs-skin' => 'Etoso',
'skin-preview' => 'AntaÅ­rigardo',
-'prefs-math' => 'Matematikaĵoj',
'datedefault' => 'Nenia prefero',
+'prefs-beta' => 'Ecoj de Beta',
'prefs-datetime' => 'Dato kaj horo',
+'prefs-labs' => 'Ecoj el Laboratorio',
'prefs-personal' => 'Uzanta profilo',
'prefs-rc' => 'Lastaj ÅanÄoj',
'prefs-watchlist' => 'Atentaro',
@@ -1321,8 +1361,6 @@ indekso pro troÅarÄita servilo. Intertempe, vi povas serĉi per <i>guglo</i> a
'columns' => 'Kolumnoj:',
'searchresultshead' => 'Serĉi',
'resultsperpage' => 'Montri trovitajn po',
-'contextlines' => 'Montri liniojn el paÄoj po:',
-'contextchars' => 'Montri literojn el linioj Äis po:',
'stub-threshold' => 'Ago-sojlo por formatigo de <a href="#" class="stub">ligil-Äermo (anglalingve: "stub link")</a> (bitikoj):',
'stub-threshold-disabled' => 'Malebligita',
'recentchangesdays' => 'Tagoj montrendaj en lastaj ÅanÄoj:',
@@ -1335,7 +1373,7 @@ Jen hazarde generita valoro por via uzo: $1',
'savedprefs' => 'Viaj preferoj estas konservitaj.',
'timezonelegend' => 'Horzono:',
'localtime' => 'Loka tempo:',
-'timezoneuseserverdefault' => 'Uzi defaÅ­lton de servilo',
+'timezoneuseserverdefault' => 'Uzi defaÅ­lton de servilo ($1)',
'timezoneuseoffset' => 'Alia (Enigu diferencon)',
'timezoneoffset' => 'Diferenco¹:',
'servertime' => 'Servila tempo:',
@@ -1383,8 +1421,8 @@ Jen hazarde generita valoro por via uzo: $1',
'prefs-help-gender' => 'Nedeviga: uzita por sekseca salutado de la programaro. Ĉi tiu informo estos publika.',
'email' => 'Retadreso',
'prefs-help-realname' => '* Vera nomo (opcia): se vi elektas sciigi Äin, Äi estos uzita por aÅ­torigi vin pri viaj kontribuoj.',
-'prefs-help-email' => 'Retadreso estas nedeviga, sed permesus por via pasvorto esti retpoÅtita al vi se vi forgesus Äin.
-Vi povas ankaÅ­ elekti permesigi aliaj uzantoj kontakti vin per via uzanto-paÄo aÅ­ diskuto-paÄo sen malkaÅante vian identeco.',
+'prefs-help-email' => 'Retadreso estas nedeviga, sed ebligas ke via pasvorto estos reagordota, se vi estos forgesinta Äin.',
+'prefs-help-email-others' => 'Vi povas elekti ke aliaj povas kontakti vin per via uzanto-paÄo aÅ­ parol-paÄo sen la neceso malkaÅi vian identecon.',
'prefs-help-email-required' => 'Ret-adreso estas bezonata.',
'prefs-info' => 'Baza informo',
'prefs-i18n' => 'Internaciigo',
@@ -1509,15 +1547,15 @@ Vi povas ankaÅ­ elekti permesigi aliaj uzantoj kontakti vin per via uzanto-paÄo
'right-userrights' => 'Redakti ĉiujn uzanto-rajtojn',
'right-userrights-interwiki' => 'Redakti la rajtojn de uzantoj en aliaj vikioj',
'right-siteadmin' => 'Åœlosi kaj malÅlosi la datumbazon',
-'right-reset-passwords' => 'ReÅanÄi pasvortojn de aliaj uzantoj',
'right-override-export-depth' => 'Eksporti paÄojn inkluzivante ligitajn paÄojn Äis profundeco de 5',
'right-sendemail' => 'Sendi retpoÅton al aliaj 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',
-'rightsnone' => '(nenia)',
+'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',
+'rightsnone' => '(nenia)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'legi ĉi tiun paÄon',
@@ -1640,11 +1678,11 @@ Por inkluzivi la dosieron en paÄon, skribu ligilon laÅ­ la formoj
'minlength1' => 'Nomoj de dosieroj nepre havas almenaÅ­ unu literon.',
'illegalfilename' => 'La dosiernomo $1 entenas karaktrojn kiuj ne estas permesitaj en paÄaj titoloj. Bonvolu renomi la dosieron kaj provu denove alÅuti Äin.',
'badfilename' => 'Dosiernomo estis ÅanÄita al "$1".',
-'filetype-mime-mismatch' => 'Dosiera sufikso ne kongruas MIME-tipon.',
+'filetype-mime-mismatch' => 'Dosiera sufikso ".$1" ne kongruas la MIME-tipon de la dosiero ($2).',
'filetype-badmime' => 'Dosieroj de la MIME-tipo "$1" ne estas permesitaj por alÅutado.',
'filetype-bad-ie-mime' => 'Ne povas alÅuti ĉi tiun dosieron, ĉar Interreta Esplorilo detektus Äin kiel "$1", kiu estas malpermesita kaj eble danÄera dosiertipo.',
'filetype-unwanted-type' => "'''\".\$1\"''' estas nevolata dosiero-tipo. {{PLURAL:\$3|Preferata dosiero-tipo|Prefereataj dosiero-tipoj}} estas \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' ne estas permesita dosiero-tipo. {{PLURAL:\$3|Permesita dosiero-tipo|Permesitaj dosiero-tipoj}} estas \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' ne estas {{PLURAL:$4|permesita dosiero-tipo|permesitaj dosiero-tipoj}}. {{PLURAL:$3|Permesita dosiero-tipo|Permesitaj dosiero-tipoj}} estas $2.',
'filetype-missing' => 'Ĉi tiu dosiero ne inkluzivas finaĵon de dosiernomo (kiel ".jpg").',
'empty-file' => 'La dosiero kiun vi alÅutis estis malplena.',
'file-too-large' => 'La dosiero kiun vi alÅutis estis tro granda.',
@@ -1661,6 +1699,7 @@ Por inkluzivi la dosieron en paÄon, skribu ligilon laÅ­ la formoj
tiu ĉi tiu dosiero pezas $2 bitokojn.',
'largefileserver' => 'Ĉi tiu dosiero estas pli granda ol permesas la servilaj preferoj.',
'emptyfile' => 'La dosiero kiun vi alÅutis Åajnas malplena. Tio povas esti kaÅ­zita sde tajperaro en la titolo. Bonvolu kontroli ĉu vi vere volas alÅuti tiun dosieron.',
+'windows-nonascii-filename' => 'Ĉi tiu vikio ne subtenas dosiernomoj kun specialaj signoj.',
'fileexists' => "Dosiero kun tia ĉi nomo jam ekzistas.
Bonvolu kontroli '''<tt>[[:$1]]</tt>''' krom se vi certas ke vi konscie volas ÅanÄi Äuste tiun.
[[$1|thumb]]",
@@ -1697,6 +1736,8 @@ Se vi ankoraÅ­ volas alÅuti vian dosieron, bonvolu retroigi kaj uzi novan nomon
'php-uploaddisabledtext' => 'Dosiera alÅutado estas malÅalta en PHP. Bonvolu kontroli la preferon file_uploads.',
'uploadscripted' => 'HTML-aĵo aÅ­ skriptokodaĵo troviÄas en tiu ĉi tiu dosiero, kiun TTT-foliumilo eble interpretus erare.',
'uploadvirus' => 'Viruso troviÄas en la dosiero! Detaloj: $1',
+'uploadjava' => 'La dosiero estas ZIP-dosiero kiu enhavas .class-dosieron de Java.
+AlÅutante Java-dosieron estas malpermesita, ĉar ili povas kaÅ­zi sekureco-limigojn esti preterpasitaj.',
'upload-source' => 'Fonta dosiero:',
'sourcefilename' => 'Fonta dosiernomo:',
'sourceurl' => 'Fonta URL:',
@@ -1706,10 +1747,6 @@ Se vi ankoraÅ­ volas alÅuti vian dosieron, bonvolu retroigi kaj uzi novan nomon
'upload-options' => 'AlÅutaj agordoj',
'watchthisupload' => 'Atenti ĉi tiun dosieron',
'filewasdeleted' => 'Dosiero de ĉi nomo estis antaÅ­e alÅutita kaj poste redaktita. Vi kontrolu la $1 antaux alÅutante Äin denove.',
-'upload-wasdeleted' => "'''Averto: Vi alÅutas dosieron kiu estis antaÅ­e forigita.'''
-
-Vi konsideru ĉu taÅ­gas alÅuti ĉi tiu dosiero.
-jen la protokolo pri forigado por ĉi tiu dosiero por via oportuneco:",
'filename-bad-prefix' => "La nomo de la dosiero kiun vi alÅutas komencas kun '''\"\$1\"''', kiu estas nepriskriba nomo ofte aÅ­tomate donata de ciferecaj fotiloj. Bonvolu elekti pli priskriban nomon por via bildo.",
'upload-success-subj' => 'AlÅuto sukcesis!',
'upload-success-msg' => 'Via alÅuto el [$2] sukcesis. Äœi disponeblas ĉi tie [[:{{ns:file}}:$1]]',
@@ -1732,6 +1769,23 @@ Se la problemo kontinuas, kontaku [[Special:ListUsers/sysop|sisteman administran
'upload-unknown-size' => 'Nekonata grandeco',
'upload-http-error' => 'HTTP-eraro okazis: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Eraro okazis malfermante la dosieron pro ZIP-kontrolado.',
+'zip-wrong-format' => 'La specifigita dosiero ne estis ZIP-dosiero',
+'zip-bad' => 'La dosiero estas fuÅa aÅ­ alimaniere estas nelegebla ZIP-dosiero.
+Äœi ne povas esti Äuste kontrolita por sekureco.',
+'zip-unsupported' => 'Ĉi tiu dosiero estas ZIP-dosiero kiu uzas ZIP-funkciojn malsubtenita de MediaWiki.
+Äœi ne povas esti Äuste kontrolita por sekureco.',
+
+# Special:UploadStash
+'uploadstash' => 'Konservejo de alÅutoj',
+'uploadstash-summary' => 'Tiu ĉi paÄo alirebligas la dosierojn alÅutitajn (aÅ­ alÅutatajn), kiuj ne jam estas publikigitaj per la vikio. Tiujn ĉi dosierojn ne povas vidi iu ajn, krom la alÅutinto mem.',
+'uploadstash-clear' => 'Malplenigi la dosierkonversejon.',
+'uploadstash-nofiles' => 'Mankas dosieroj en la konservejo.',
+'uploadstash-badtoken' => 'Malsukcesis tiu ago, eble pro tio ke viaj ensalutiloj senvalidiÄis. Reprovu.',
+'uploadstash-errclear' => 'Sensukcesis la forigo de la dosieroj.',
+'uploadstash-refresh' => 'Aktualigi la dosierliston.',
+
# img_auth script messages
'img-auth-accessdenied' => 'Atingo malpermisita',
'img-auth-nopathinfo' => 'Mankas PATH_INFO. (Informo pri dosiervojo.)
@@ -1812,7 +1866,7 @@ La jena listo montras la {{PLURAL:$1|unua paÄligilo|unuaj $1 paÄligiloj}} al n
[[Special:WhatLinksHere/$2|Plena listo]] estas atingebla.',
'nolinkstoimage' => 'Neniu paÄo ligas al ĉi tiu dosiero.',
'morelinkstoimage' => 'Rigardi [[Special:WhatLinksHere/$1|pliajn ligilojn]] al ĉi tiu dosiero.',
-'redirectstofile' => 'Jen {{PLURAL:$1|dosiero liganta|dosieroj ligantaj}} al ĉi tiu dosiero:',
+'linkstoimage-redirect' => '$1 (alidirektilo al dosiero) $2',
'duplicatesoffile' => 'La {{PLURAL:$1|jena dosiero estas duplikato|jenaj dosieroj estas duplikatoj}} de ĉi tiu dosiero ([[Special:FileDuplicateSearch/$2|pluaj detaloj]]):',
'sharedupload' => 'Ĉi tiu dosiero estas de $1 kaj estas uzebla de aliaj projektoj.',
'sharedupload-desc-there' => 'Ĉi tiu dosiero estas de $1 kaj estas uzebla en aliaj projektoj.
@@ -1907,12 +1961,13 @@ Bonvolu kontroli aliajn ligilojn al la Åablonoj antaÅ­ ol forigi ilin.',
Ili devus anstataÅ­e alligi la Äustan temon.<br />
PaÄo estas traktata kiel apartigilo se Äi uzas Åablonon kiu estas ligita de [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Duoblaj alidirektadoj',
-'doubleredirectstext' => 'Ĉi tiu paÄo montras paÄojn kiuj alidirektas al aliaj alidirektiloj.
+'doubleredirects' => 'Duoblaj alidirektadoj',
+'doubleredirectstext' => 'Ĉi tiu paÄo montras paÄojn kiuj alidirektas al aliaj alidirektiloj.
Ĉiu vico enhavas ligilojn ĉe la unua kaj dua alidirektadoj, kaj la unua linio de la dua alidirektado, kiu Äenerale montras la "veran" celpaÄon, kiu celu la unuan alidirektadon.
<del>Forstrekitaj</del> listeroj estis riparitaj.',
-'double-redirect-fixed-move' => '[[$1]] estis alinomita; Äi nun alidirektas al [[$2]]',
-'double-redirect-fixer' => 'Alidirektila riparilo',
+'double-redirect-fixed-move' => '[[$1]] estis alinomita; Äi nun alidirektas al [[$2]]',
+'double-redirect-fixed-maintenance' => 'Riparas duoblan alidirektilon de [[$1]] al [[$2]].',
+'double-redirect-fixer' => 'Alidirektila riparilo',
'brokenredirects' => 'Rompitaj alidirektadoj',
'brokenredirectstext' => 'La jenaj alidirektadoj ligas al neekzistantaj paÄoj:',
@@ -1989,6 +2044,7 @@ Bonvolu noti ke aliaj retejoj povas ligi dosieron kun rekta URL-o, kaj tial esta
'pager-newer-n' => '{{PLURAL:$1|pli nova 1|pli novaj $1}}',
'pager-older-n' => '{{PLURAL:$1|pli malnova 1|pli malnovaj $1}}',
'suppress' => 'Superrigardo',
+'querypage-disabled' => 'Tiu ĉi speciala paÄo estas malfunkciigita pro rendimentaj kialoj.',
# Book sources
'booksources' => 'Libroservoj',
@@ -2107,6 +2163,10 @@ La retadreso kiun vi enigis en [[Special:Preferences|viaj preferoj]] aperos kiel
'noemailtext' => 'Ĉi tiu uzanto ne donis validan retadreson.',
'nowikiemailtitle' => 'RetpoÅto ne permesita',
'nowikiemailtext' => 'Ĉi tiu uzanto elektis ne ricevi retpoÅton de aliaj uzantoj.',
+'emailnotarget' => 'Neekzistanta aÅ­ malvalida salutnomo por ricevanto.',
+'emailtarget' => 'Enigi salutnomon de ricevonto',
+'emailusername' => 'Salutnomo:',
+'emailusernamesubmit' => 'Enigi',
'email-legend' => 'Sendi retpoÅton al alia {{SITENAME}}-uzanto',
'emailfrom' => 'De:',
'emailto' => 'Al:',
@@ -2131,9 +2191,9 @@ La retadreso kiun vi enigis en [[Special:Preferences|viaj preferoj]] aperos kiel
'watchlistanontext' => 'Bonvolu $1 por vidi aÅ­ redakti erojn en via atentaro.',
'watchnologin' => 'Ne ensalutinta',
'watchnologintext' => 'Nepras [[Special:UserLogin|ensaluti]] por ÅanÄi vian atentaron.',
-'addedwatch' => 'AldoniÄis al atentaro',
+'addwatch' => 'AldoniÄi al atentaro',
'addedwatchtext' => "La paÄo \"[[:\$1]]\" estis aldonita al via [[Special:Watchlist|atentaro]]. Estontaj ÅanÄoj de tiu ĉi paÄo aperos en '''grasa tiparo''' en la [[Special:RecentChanges|listo de Lastaj ÅœanÄoj]], kaj estos listigitaj en via atentaro. Se vi poste volos forigi la paÄon el via atentaro, alklaku \"Malatentu paÄon\" en la ilobreto.",
-'removedwatch' => 'Forigis el atentaro',
+'removewatch' => 'Forigi el atentaro',
'removedwatchtext' => 'La paÄo "[[:$1]]" estas forigita el via [[Special:Watchlist|atentaro]].',
'watch' => 'Atenti',
'watchthispage' => 'Priatenti paÄon',
@@ -2154,8 +2214,9 @@ La retadreso kiun vi enigis en [[Special:Preferences|viaj preferoj]] aperos kiel
'watchlist-options' => 'Opcioj por atentaro',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Aldonante al la atentaro...',
-'unwatching' => 'Malatentante...',
+'watching' => 'Aldonante al la atentaro...',
+'unwatching' => 'Malatentante...',
+'watcherrortext' => 'Eraro okazis ÅanÄinte vian agordojn de atentaro por "$1".',
'enotif_mailer' => 'Averta retmesaÄo de {{SITENAME}}',
'enotif_reset' => 'Marki ĉiujn vizititajn paÄojn',
@@ -2181,17 +2242,20 @@ vikie: $PAGEEDITOR_WIKI
Ne estos aliaj avertoj kaze de sekvaj ÅanÄoj krom se vi vizitus la paÄon. Vi povas ankaÅ­ malaktivigi la avertsignalon por ĉiuj priatentitaj paÄoj de via atentaro.
- Sincere via, la avertsistemo de {{SITENAME}}
+ Sincere via, la avertsistemo de {{SITENAME}}
--
-Por ÅanÄi la elektojn de via atentaro, bonvolu viziti
-{{fullurl:{{#special:Watchlist}}/edit}}
+Por ÅanÄi vian retpoÅtan notigadan preferon, klaku
+{{canonicalurl:{{#special:Preferences}}}}
+
+Por ÅanÄi vian preferon de la atentaro, klaku
+{{canonicalurl:{{#special:EditWatchlist}}}}
-Por forigi la paÄon el via atentaro, bonvolu viziti
+Por forigi la paÄon de via atentaro, klaku
$UNWATCHURL
-Por viaj reagoj kaj por obteni plian helpon:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+Komentoj kaj plia helpo:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Forigi paÄon',
@@ -2206,7 +2270,7 @@ Por viaj reagoj kaj por obteni plian helpon:
'confirmdeletetext' => 'Vi forigos la artikolon aÅ­ dosieron kaj forviÅos Äian tutan historion el la datumaro.<br /> Bonvolu konfirmi, ke vi vere intencas tion, kaj ke vi komprenas la sekvojn, kaj ke vi ja sekvas la [[{{MediaWiki:Policy-url}}|regulojn pri forigado]].',
'actioncomplete' => 'Ago farita',
'actionfailed' => 'Ago malsukcesis',
-'deletedtext' => '"<nowiki>$1</nowiki>" estas forigita.
+'deletedtext' => '"$1" estas forigita.
Vidu la paÄon $2 por registro de lastatempaj forigoj.',
'deletedarticle' => 'forigis "[[$1]]"',
'suppressedarticle' => '"[[$1]]" estas subigita',
@@ -2262,7 +2326,7 @@ Vidu [[Special:ProtectedPages|liston de protektitaj paÄoj]] por listo de aktual
'protect_expiry_invalid' => 'Malvalida findaÅ­ro.',
'protect_expiry_old' => 'EksvalidiÄa tempo jam pasis.',
'protect-unchain-permissions' => 'MalÅlosi pluajn protektajn opciojn',
-'protect-text' => "Vi povas ĉi tie vidi kaj ÅanÄi la protektnivelon de la paÄo '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Vi povas ĉi tie vidi kaj ÅanÄi la protektnivelon de la paÄo '''$1'''.",
'protect-locked-blocked' => "Vi ne povas ÅanÄi prokekto-nivelojn dum forbarita. Jen la nunaj ecoj de la paÄo '''$1''':",
'protect-locked-dblock' => "Ne povas ÅanÄi nivelojn de protekto pro aktiva datumbaza Ålosado.
Jen la nunaj agordoj de la paÄo '''$1''':",
@@ -2316,9 +2380,8 @@ Vi povas ÅanÄi ties protektnivelon, sed tio ne ÅanÄos la kaskadan protekton.
'undeletepagetext' => 'La {{PLURAL:$1|jena paÄo estis forigita|jenaj paÄoj estis forigitaj}}, sed ankoraÅ­ restas {{PLURAL:$1|arkivita|arkivitaj}} kaj {{PLURAL:$1|restarigebla|restarigeblaj}}.
La arkivo povas esti malplenigita periode.',
'undelete-fieldset-title' => 'Malforigi versiojn',
-'undeleteextrahelp' => "Por restarigi la tuton de la paÄo, lasu ĉiujn markobutonoj malÅaltitaj kaj klaku la butonon '''''Restarigi'''''.
-Por restarigi selektitajn versiojn de la paÄo, marku la butonojn konformajn al la dezirataj versioj, kaj klaku la butonon '''''Restarigi'''''.
-Klakante butonon '''''Restarigi''''' viÅigos la komentokampon kaj malmarkos ĉiujn la markobutonojn.",
+'undeleteextrahelp' => "Por restarigi la tutan kronologion de la paÄo, lasu ĉiujn markobutonoj malÅaltitaj kaj klaku la butonon '''''{{int:undeletebtn}}'''''.
+Por restarigi selektitajn versiojn de la paÄo, marku la butonojn konformajn al la dezirataj versioj, kaj klaku la butonon '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|versio arkivita|versioj arkivitaj}}',
'undeletehistory' => 'Se vi restarigos la paÄon, ĉiuj versioj estos restarigitaj en la historio.
Se nova paÄo kun la sama nomo estis kreita post la forigo, la restarigitaj versioj aperos antaÅ­e en la antaÅ­a historio.',
@@ -2360,9 +2423,12 @@ $1',
'undelete-show-file-submit' => 'Jes',
# Namespace form on various pages
-'namespace' => 'Nomspaco:',
-'invert' => 'Inversigi elektaĵon',
-'blanknamespace' => '(Artikoloj)',
+'namespace' => 'Nomspaco:',
+'invert' => 'Inversigi elektaĵon',
+'tooltip-invert' => 'Marku ĉi tiu skatolon por kaÅi ÅanÄoj al paÄoj en la elektita nomspaco (kaj la asocia nomspaco, se tiel markita)',
+'namespace_association' => 'Asociita nomspaco',
+'tooltip-namespace_association' => 'Marku ĉi tiu skatolo por inkluzivi la diskutan aŭ teman nomspacon asocie de la elekta nomspaco',
+'blanknamespace' => '(Artikoloj)',
# Contributions
'contributions' => 'Kontribuoj de uzanto',
@@ -2411,11 +2477,13 @@ Jen la lasta ero de la forbara protokolo:',
'whatlinkshere-filters' => 'Filtriloj',
# Block/unblock
+'autoblockid' => 'AÅ­tomata forbaro #$1',
+'block' => 'Forbari uzanton',
+'unblock' => 'Malforbari uzanton',
'blockip' => 'Forbari uzanton/IP-adreson',
'blockip-title' => 'Forbari uzanton',
'blockip-legend' => 'Forbari uzanton',
'blockiptext' => "Per jena formularo vi povas forpreni de ajna nomo aÅ­ IP-adreso la rajton skribi en la vikio. Oni faru tion ''nur'' por eviti vandalismon, kaj sekvante la [[{{MediaWiki:Policy-url}}|regulojn pri forbarado]]. Klarigu la precizan kialon malsupre (ekzemple, citu paÄojn, kiuj estis vandaligitaj).",
-'ipaddress' => 'IP-adreso/nomo',
'ipadressorusername' => 'IP-adreso aÅ­ salutnomo:',
'ipbexpiry' => 'BlokdaÅ­ro',
'ipbreason' => 'Kialo:',
@@ -2428,7 +2496,7 @@ Jen la lasta ero de la forbara protokolo:',
** Terurigema sinteno
** Misuzo de pluraj salutnomoj
** Neakceptebla uzanto-nomo',
-'ipbanononly' => 'Forbari nur anonimulojn',
+'ipb-hardblock' => 'Malpermesi ensalutitajn uzantoj de redaktante ĉi tiun IP-adreson',
'ipbcreateaccount' => 'Preventi kreadon de konto',
'ipbemailban' => 'Malebligi al uzanto sendi retpoÅton.',
'ipbenableautoblock' => 'Aŭtomate forbaru la lastan IP-adreson uzitan de la uzanto, kaj ĉiajn subsekvantajn adresojn el kiuj tiu provos redakti',
@@ -2439,12 +2507,15 @@ Jen la lasta ero de la forbara protokolo:',
'ipbotherreason' => 'Alia/kroma kialo:',
'ipbhidename' => 'KaÅi salutnomon de redaktoj kaj listoj',
'ipbwatchuser' => 'Atenti la paÄojn por uzanto kaj diskuto de ĉi tiu uzanto.',
-'ipballowusertalk' => 'Permesi al ĉi tiu uzanto redakti propran diskuto-paÄon dum forbariteco',
+'ipb-disableusertalk' => 'Preventi ĉi tiun uzanton de redaktante ties propran diskuto-paÄon kiam forbarita',
'ipb-change-block' => 'Reforbari la uzanton kun ĉi tiuj preferoj',
+'ipb-confirm' => 'Konfirmi forbaron',
'badipaddress' => 'Neniu uzanto, aÅ­ la IP-adreso estas misformita.',
'blockipsuccesssub' => 'Oni sukcese forbaris la adreson/nomon.',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] estas forbarita. <br />
Vidu la [[Special:IPBlockList|liston de IP-forbaroj]] por kontroli.',
+'ipb-blockingself' => 'Vi preskaŭ forbaros vin mem! Ĉu vi certas ke vi volas fari ĉi tiel?',
+'ipb-confirmhideuser' => 'Vi preskaÅ­ forbaras uzanto kun "kaÅi uzanton" Åalta. Ĉi tiu kaÅi la nomon de uzanto en ĉiuj listoj ka protokoloj. Ĉu vi certas ke vi volas fari ĉi tiel?',
'ipb-edit-dropdown' => 'Redakti kialojn por forbaro.',
'ipb-unblock-addr' => 'Restarigi $1',
'ipb-unblock' => 'Malforbari salutnomon aÅ­ IP-adreson',
@@ -2455,17 +2526,23 @@ Vidu la [[Special:IPBlockList|liston de IP-forbaroj]] por kontroli.',
forbarita IP-adreso/nomo la povon enskribi en la vikio.',
'ipusubmit' => 'Forigi ĉi tiun forbaron',
'unblocked' => '[[User:$1|$1]] estas restarigita.',
+'unblocked-range' => '$1 estis malforbarita',
'unblocked-id' => 'Forbaro $1 estas forigita.',
+'blocklist' => 'Forbaritaj uzantoj',
'ipblocklist' => 'Forbaritaj uzantoj',
'ipblocklist-legend' => 'Trovi forbaritan uzanton.',
-'ipblocklist-username' => 'Salutnomo aÅ­ IP-adreso:',
-'ipblocklist-sh-userblocks' => '$1 kontaj forbaroj',
-'ipblocklist-sh-tempblocks' => '$1 provizoraj forbaroj',
-'ipblocklist-sh-addressblocks' => '$1 unuopaj IP-adresaj forbaroj',
+'blocklist-userblocks' => 'KaÅi konto-forbarojn',
+'blocklist-tempblocks' => 'KaÅi provizorajn forbarojn',
+'blocklist-addressblocks' => 'KaÅi unuopajn IP-adresajn forbarojn',
+'blocklist-timestamp' => 'Tempindiko',
+'blocklist-target' => 'Celo',
+'blocklist-expiry' => 'EksvalidiÄas',
+'blocklist-by' => 'Forbaranta administranto',
+'blocklist-params' => 'Forbarado-parametroj',
+'blocklist-reason' => 'Kialo',
'ipblocklist-submit' => 'Serĉi',
'ipblocklist-localblock' => 'Loka forbaro',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Alia forbaro|Aliaj forbaroj}}',
-'blocklistline' => 'Je $1, $2 forbaris $3 ($4)',
'infiniteblock' => 'senfina',
'expiringblock' => 'senvalidiÄas je $1 $2',
'anononlyblock' => 'nur anonimuloj',
@@ -2486,7 +2563,7 @@ La kialo donita por la forbaro de $1 estis: "$2"',
'blocklog-showsuppresslog' => 'Ĉi tiu uzanto estis forbarita kaj kaÅita antaÅ­e. Jen la protokolo pri subpremado por via informo:',
'blocklogentry' => 'forbaris [[$1]] por daÅ­ro de $2 $3',
'reblock-logentry' => 'ÅanÄis forbarajn opciojn [[$1]] kun findato de $2 $3',
-'blocklogtext' => 'Ĉi tio estas protokolo pri forbaraj kaj malforbaraj agoj. Aŭtomate forbaritaj IP adresoj ne estas listigitaj. Vidu la [[Special:IPBlockList|IP forbarliston]] por ĉi-momente fobaritaj uzantoj kaj IP-adresoj.',
+'blocklogtext' => 'Ĉi tio estas protokolo pri forbaraj kaj malforbaraj agoj. Aŭtomate forbaritaj IP adresoj ne estas listigitaj. Vidu la [[Special:BlockList|IP forbarliston]] por ĉi-momente fobaritaj uzantoj kaj IP-adresoj.',
'unblocklogentry' => '$1 estis restarigita',
'block-log-flags-anononly' => 'nur anonimaj uzantoj',
'block-log-flags-nocreate' => 'kreado de kontoj malebligita',
@@ -2500,9 +2577,9 @@ La kialo donita por la forbaro de $1 estis: "$2"',
'ipb_expiry_temp' => 'KaÅitaj salutnomaj blokoj estu daÅ­raj.',
'ipb_hide_invalid' => 'Ne povas subpremi ĉi tiun konton; Äi eble havas tro multajn redaktojn.',
'ipb_already_blocked' => '"$1" estas jam forbarita',
-'ipb-needreblock' => '== Jam forbarita ==
-$1 estas jam forbarita. Ĉu vi volas ÅanÄi la opciojn?',
+'ipb-needreblock' => '$1 estas jam forbarita. Ĉu vi volas ÅanÄi la opciojn?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Alia forbaro|Aliaj forbaroj}}',
+'unblock-hideuser' => 'Vi ne povas malforbari ĉi tiun uzanton, pro ties salutnomo estis kaÅita.',
'ipb_cant_unblock' => 'Eraro: Forbar-identigo $1 ne estas trovita. Äœi eble estis jam malforbarita.',
'ipb_blocked_as_range' => 'Eraro: La IP-adreso $1 ne estas forbarita rekte kaj ne povas esti malforbarita. Tamen Äi estas forbarita kiel parto de la intervalo $2, kiu ne povas esti malforbarita.',
'ip_range_invalid' => 'Malvalida IP-adresa intervalo.',
@@ -2543,6 +2620,7 @@ Bonvolu certigu, ke vi efektive intencas tion fari.',
'unlockdbsuccesstext' => 'La datumaro de {{SITENAME}} estas malÅlosita.',
'lockfilenotwritable' => 'La datumbaza dosiero pri Ålosado ne estas skribebla. Por Ålosi aÅ­ malÅlosi la datumbazon, ĉi devas esti skribebla de la TTT-servilo.',
'databasenotlocked' => 'La datumbazo ne estas Ålosita.',
+'lockedbyandtime' => '(de {{GENDER:$1|$1}} je $2, $3)',
# Move page
'move-page' => 'Alinomigi $1',
@@ -2668,7 +2746,7 @@ En la lasta okazo, vi ankaÅ­ povas uzi ligilon, ekz-e [[{{#Special:Export}}/{{Me
'allmessagesdefault' => 'DefaÅ­lta teksto',
'allmessagescurrent' => 'Nuna teksto',
'allmessagestext' => 'Ĉi tio estas listo de ĉiuj mesaÄoj haveblaj en la MediaWiki-nomspaco.
-Bonvolu aliri [http://www.mediawiki.org/wiki/Localisation MediaWiki-Asimilado] kaj [http://translatewiki.net translatewiki.net]
+Bonvolu aliri [//www.mediawiki.org/wiki/Localisation MediaWiki-Asimilado] kaj [//translatewiki.net translatewiki.net]
se vi volus kontribui al la komuna MediaWiki-asimilado.',
'allmessagesnotsupportedDB' => '{{ns:special}}:Allmessages ne subtenata ĉar la variablo wgUseDatabaseMessages estas malkonektita.',
'allmessages-filter-legend' => 'Filtri',
@@ -2806,9 +2884,7 @@ Datoj de versioj kaj nomoj de redaktantoj estos preservitaj.
'tooltip-summary' => 'Enigu mallongan resumon',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadatumo estas malebligita por ĉi servilo.',
-'nocreativecommons' => 'RDF metadatenoj de la Krea Komunaĵo estas malpermesitaj por ĉi tiu servilo.',
-'notacceptable' => 'La viki-servilo ne povas doni datumon en formato kiun via kliento povas legi.',
+'notacceptable' => 'La viki-servilo ne povas doni datumon en formato kiun via kliento povas legi.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonima uzanto|Anonimaj uzantoj}} de {{SITENAME}}',
@@ -2832,12 +2908,17 @@ Datoj de versioj kaj nomoj de redaktantoj estos preservitaj.
'spam_blanking' => 'ForviÅo de ĉiuj versioj entenantaj ligilojn al $1',
# Info page
-'infosubtitle' => 'Informoj por paÄo',
-'numedits' => 'Nombro de redaktoj (paÄo): $1',
-'numtalkedits' => 'Nombro de redaktoj (diskuto-paÄo): $1',
-'numwatchers' => 'Nombro de atentantoj: $1',
-'numauthors' => 'Nombro de apartaj aÅ­toroj (paÄo): $1',
-'numtalkauthors' => 'Nombro de apartaj aÅ­toroj (diskuto-paÄo): $1',
+'pageinfo-title' => 'Informoj por "$1"',
+'pageinfo-header-edits' => 'Redaktoj',
+'pageinfo-header-watchlist' => 'Atentaro',
+'pageinfo-header-views' => 'Rigardoj',
+'pageinfo-subjectpage' => 'PaÄo',
+'pageinfo-talkpage' => 'Diskuto-paÄo',
+'pageinfo-watchers' => 'Nombro de atentantoj',
+'pageinfo-edits' => 'Nombro de redaktoj',
+'pageinfo-authors' => 'Nombro de distingaj aÅ­toroj',
+'pageinfo-views' => 'Nombro de rigardoj',
+'pageinfo-viewsperedit' => 'Po rigardoj por redakto',
# Skin names
'skinname-standard' => 'Klasika',
@@ -2846,25 +2927,6 @@ Datoj de versioj kaj nomoj de redaktantoj estos preservitaj.
'skinname-monobook' => 'Librejo',
'skinname-chick' => 'Kokido',
-# Math options
-'mw_math_png' => 'Ĉiam krei PNG-bildon',
-'mw_math_simple' => 'HTMLigu se simple, aÅ­ PNG',
-'mw_math_html' => 'HTMLigu se eble, aÅ­ PNG',
-'mw_math_source' => 'Lasu TeX-fonton (por tekstfoliumiloj)',
-'mw_math_modern' => 'Rekomendita por modernaj foliumiloj',
-'mw_math_mathml' => 'MathML seeble (provizora)',
-
-# Math errors
-'math_failure' => 'malsukcesis analizi formulon',
-'math_unknown_error' => 'nekonata eraro',
-'math_unknown_function' => 'nekonata funkcio',
-'math_lexing_error' => 'leksika analizo malsukcesis',
-'math_syntax_error' => 'sintakseraro',
-'math_image_error' => 'Konverto al PNG malsukcesis; kontrolu ĉu estas Äuste instalitaj latex kaj dvipng (aÅ­ dvips + gs + convert)',
-'math_bad_tmpdir' => 'Ne povas skribi al aÅ­ krei matematikian labor-dosierujon.',
-'math_bad_output' => 'Ne povas enskribi aÅ­ krei matematikan eligan dosierujon',
-'math_notexvc' => 'Programo texvc ne ekzistas; bonvolu vidi math/README por konfiguri.',
-
# Patrolling
'markaspatrolleddiff' => 'Marki kiel patrolitan',
'markaspatrolledtext' => 'Marki ĉi tiun paÄon kiel patrolitan',
@@ -2900,21 +2962,24 @@ $1',
'nextdiff' => 'Pli nova redakto →',
# Media information
-'mediawarning' => "'''Atenton!''': Ĉi tiu dosiero eble enhavas malican kodadon, per Äia ruligo via sistemo povus endanÄeriÄi.",
-'imagemaxsize' => "Limo por bildoj:<br />''(por dosieraj priskribo-paÄoj)''",
-'thumbsize' => 'Grandeco de bildetoj:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|paÄo|paÄoj}}',
-'file-info' => 'grando de dosiero: $1, MIME-tipo: $2',
-'file-info-size' => '$1 × $2 rastrumeroj, dosiera grandeco: $3, MIME-tipo: $4',
-'file-nohires' => '<small>Nenia pli granda distingivo havebla.</small>',
-'svg-long-desc' => 'SVG-dosiero, $1 × $2 rastrumeroj, grandeco de dosiero: $3',
-'show-big-image' => 'Plena distingivo',
-'show-big-image-thumb' => '<small>Grandeco de ĉi antaŭvido: $1 × $2 rastrumeroj</small>',
-'file-info-gif-looped' => 'ripeta GIF',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|ĉelo|ĉeloj}}',
-'file-info-png-looped' => 'ripetita',
-'file-info-png-repeat' => 'Ludis $1 fojo{{PLURAL:$1||j}}n',
-'file-info-png-frames' => '$1 kadro{{PLURAL:$1||j}}',
+'mediawarning' => "'''Atenton!''': Ĉi tiu dosiero eble enhavas malican kodadon, per Äia ruligo via sistemo povus endanÄeriÄi.",
+'imagemaxsize' => "Limo por bildoj:<br />''(por dosieraj priskribo-paÄoj)''",
+'thumbsize' => 'Grandeco de bildetoj:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|paÄo|paÄoj}}',
+'file-info' => 'grando de dosiero: $1, MIME-tipo: $2',
+'file-info-size' => '$1 × $2 rastrumeroj, dosiera grandeco: $3, MIME-tipo: $4',
+'file-info-size-pages' => '$1 × $2 rastrumeroj, dosiera grandeco: $3, MIME-tipo: $4, $5 {{PLURAL:$5|paÄo|paÄoj}}',
+'file-nohires' => '<small>Nenia pli granda distingivo havebla.</small>',
+'svg-long-desc' => 'SVG-dosiero, $1 × $2 rastrumeroj, grandeco de dosiero: $3',
+'show-big-image' => 'Plena distingivo',
+'show-big-image-preview' => '<small>Grandeco de ĉi antaŭvido: $1.</small>',
+'show-big-image-other' => '<small>Aliaj distingivoj: $1.</small>',
+'show-big-image-size' => '$1 × $2 rastrumeroj',
+'file-info-gif-looped' => 'ripeta GIF',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|ĉelo|ĉeloj}}',
+'file-info-png-looped' => 'ripetita',
+'file-info-png-repeat' => 'Ludis $1 fojo{{PLURAL:$1||j}}n',
+'file-info-png-frames' => '$1 kadro{{PLURAL:$1||j}}',
# Special:NewFiles
'newimages' => 'Galerio de novaj dosieroj',
@@ -2940,15 +3005,21 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paÄoj kiel la b
'metadata-help' => 'Ĉi tiu dosiero enhavas plian informon, verÅajne aldonitan de la cifereca fotilo aÅ­ skanilo uzita por krei aux skani Äin. Se la dosiero estis modifita de sia originala stato, iuj detaloj eble ne konformos al efektiva stato de la modifita bildo.',
'metadata-expand' => 'Montri etendajn detalojn',
'metadata-collapse' => 'KaÅi etendajn detalojn',
-'metadata-fields' => 'La jenaj EXIF-metadatumaj kampoj estos inkluzivitaj en bildo-paÄoj kiam la metadatuma tabelo estas disfaldigita. Aliaj estos kaÅita defaÅ­lte.
-
+'metadata-fields' => 'Metadatumaj kampoj de ĉi tiu mesaÄo estos inkluzivita en la paÄoj de bidloj kiam la metadatuma tabelo estas disfaldigita.
+Aliaj estos kaÅitaj defaÅ­lte.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'LarÄeco',
@@ -2963,13 +3034,11 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paÄoj kiel la b
'exif-ycbcrpositioning' => 'Y kaj C situado',
'exif-xresolution' => 'Horizontala distingivo',
'exif-yresolution' => 'Vertikala distingivo',
-'exif-resolutionunit' => 'Unuo de X kaj Y distingivo',
'exif-stripoffsets' => 'Loko de bilda datumo',
'exif-rowsperstrip' => 'Nombro de vicoj por strio',
'exif-stripbytecounts' => 'Bitikoj por densigita strio',
'exif-jpeginterchangeformat' => 'Flankigo al JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bitokoj de JPEG-datumo',
-'exif-transferfunction' => 'Transiga funkcio',
'exif-whitepoint' => 'Koloreco de blanka punkto',
'exif-primarychromaticities' => 'Kolorecoj de primaraĵoj',
'exif-ycbcrcoefficients' => 'Koeficientoj de kolorspaca transformiga matrikso',
@@ -2988,7 +3057,6 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paÄoj kiel la b
'exif-compressedbitsperpixel' => 'ReÄimo de bilda densigado',
'exif-pixelydimension' => 'LarÄeco de bildo',
'exif-pixelxdimension' => 'Alteco de bildo',
-'exif-makernote' => 'Notoj de fabrikejo',
'exif-usercomment' => 'Komentoj de uzanto',
'exif-relatedsoundfile' => 'Rilata son-dosiero',
'exif-datetimeoriginal' => 'Dato kaj tempo de datuma generado',
@@ -3002,7 +3070,6 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paÄoj kiel la b
'exif-exposureprogram' => 'Ekspona programo',
'exif-spectralsensitivity' => 'Spektruma sensemo',
'exif-isospeedratings' => 'ISO sentiveco',
-'exif-oecf' => 'Optikelektronika konverada faktoro',
'exif-shutterspeedvalue' => 'APEX-Rapido de obturatoro',
'exif-aperturevalue' => 'APEX-Aperturo',
'exif-brightnessvalue' => 'APEX-Heleco',
@@ -3015,7 +3082,6 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paÄoj kiel la b
'exif-focallength' => 'Fokusa longo de lenso',
'exif-subjectarea' => 'Subjekta areo',
'exif-flashenergy' => 'Fulmila energio',
-'exif-spatialfrequencyresponse' => 'Spaca frekvenco-respondo',
'exif-focalplanexresolution' => 'X distingivo de fokusa ebeno',
'exif-focalplaneyresolution' => 'Y distingivo de fokusa ebeno',
'exif-focalplaneresolutionunit' => 'Distingivo-unuo de fokusa ebeno',
@@ -3024,7 +3090,6 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paÄoj kiel la b
'exif-sensingmethod' => 'Metodo de sensado',
'exif-filesource' => 'Dosiera fonto',
'exif-scenetype' => 'Speco de sceno',
-'exif-cfapattern' => 'CFA skemo',
'exif-customrendered' => 'Propra foto-rivelado',
'exif-exposuremode' => 'Ekspona reÄimo',
'exif-whitebalance' => 'Blanka balanciÄo',
@@ -3069,10 +3134,79 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paÄoj kiel la b
'exif-gpsareainformation' => 'Nomo de GPS areo',
'exif-gpsdatestamp' => 'GPS dato',
'exif-gpsdifferential' => 'GPS diferenca korektado',
+'exif-jpegfilecomment' => 'Komento de JPEG-dosiero',
+'exif-keywords' => 'Åœlosilvortoj',
+'exif-worldregioncreated' => 'Monda regiono kie la foto estis fotita',
+'exif-countrycreated' => 'Lando kie la foto estis fotita',
+'exif-countrycodecreated' => 'Landokodo kie la foto estis fotita',
+'exif-provinceorstatecreated' => 'Provinco aÅ­ subÅtato kie la foto estis fotita',
+'exif-citycreated' => 'Urbo kie la foto estis fotita',
+'exif-sublocationcreated' => 'Subloko de la urbo kie la foto estis fotita',
+'exif-worldregiondest' => 'Monda regiono montrita',
+'exif-countrydest' => 'Lando montrita',
+'exif-countrycodedest' => 'ISO-kodo por lando montrita',
+'exif-provinceorstatedest' => 'Provinco aÅ­ subÅtato montrita',
+'exif-citydest' => 'Urbo montrita',
+'exif-sublocationdest' => 'Subloko de urbo montrita',
'exif-objectname' => 'Mallonga titolo',
+'exif-specialinstructions' => 'Speciala instrukcio',
+'exif-headline' => 'Titolo',
+'exif-credit' => 'Provizanto',
+'exif-source' => 'Fonto',
+'exif-editstatus' => 'Redaktora statuso de bildo',
+'exif-urgency' => 'UrÄeco',
+'exif-fixtureidentifier' => 'Nomo de rikura kolumno',
+'exif-locationdest' => 'Loko montrita',
+'exif-locationdestcode' => 'Kodo de loko montrita',
+'exif-objectcycle' => 'Tempo de tago kiun medio estas intenciita',
+'exif-contact' => 'Informo por mesaÄigi',
+'exif-writer' => 'AÅ­toro',
+'exif-languagecode' => 'Lingvo',
+'exif-iimversion' => 'IIM-versio',
+'exif-iimcategory' => 'Kategorio',
+'exif-iimsupplementalcategory' => 'Aldonaj kategorioj',
+'exif-datetimeexpires' => 'Ne uzu post',
+'exif-datetimereleased' => 'Eldonitaj je',
+'exif-originaltransmissionref' => 'Loko-kodo de originala komunikaĵo',
+'exif-identifier' => 'Identigo',
+'exif-lens' => 'Lenso uzita',
+'exif-serialnumber' => 'Seria numero de fotilo',
+'exif-cameraownername' => 'Propranto de fotilo',
+'exif-label' => 'Etikedo',
+'exif-datetimemetadata' => 'Dato kiam metadatumoj estis laste modifitaj',
+'exif-nickname' => 'Malformala nomo de bildo',
+'exif-rating' => 'Taksado (el 5)',
+'exif-rightscertificate' => 'Atestilo de rajtoj-administrado',
+'exif-copyrighted' => 'AÅ­torrajta statuso:',
+'exif-copyrightowner' => 'Posedanto de la aÅ­torrajto',
+'exif-usageterms' => 'Regularo pri uzado',
+'exif-webstatement' => 'Interreta deklarado pri aÅ­torrajtoj',
+'exif-originaldocumentid' => 'Unika identigo de originala dokumento',
+'exif-licenseurl' => 'URL-o por aÅ­torrajta permesilo',
+'exif-morepermissionsurl' => 'Informo pri alternativa permesado',
+'exif-attributionurl' => 'Kiam reuzante ĉi tiun verkon, bonvolu ligigi al:',
+'exif-preferredattributionname' => 'Kiam reuzante ĉi tiun verkon, bonvolu mencii al:',
+'exif-pngfilecomment' => 'Komento de PNG-dosiero',
+'exif-disclaimer' => 'Malgarantio',
+'exif-contentwarning' => 'Averto pri enhavo',
+'exif-giffilecomment' => 'Komento de GIF-dosiero',
+'exif-intellectualgenre' => 'Tipo de aĵo',
+'exif-subjectnewscode' => 'Temo-kodo',
+'exif-scenecode' => 'IPTC sceno-kodo',
+'exif-event' => 'Evento montrita',
+'exif-organisationinimage' => 'Organizaĵo montrita',
+'exif-personinimage' => 'Persono montrita',
+'exif-originalimageheight' => 'Alto de bildo antaÅ­ stuco',
+'exif-originalimagewidth' => 'LarÄo de bildo antaÅ­ stuco',
# EXIF attributes
'exif-compression-1' => 'Nedensigita',
+'exif-compression-2' => 'CCITT-Grupo 3 modifita ciferado laÅ­ Huffman Dimensio-1',
+'exif-compression-3' => 'CCITT Grupo-3 ĉifrado por faksilo',
+'exif-compression-4' => 'CCITT Grupo-4 ĉifrado por faksilo',
+
+'exif-copyrighted-true' => 'Sub aÅ­torrajto',
+'exif-copyrighted-false' => 'Sub publika domajno',
'exif-unknowndate' => 'Nekonata dato',
@@ -3088,6 +3222,8 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paÄoj kiel la b
'exif-planarconfiguration-1' => 'bloka formato',
'exif-planarconfiguration-2' => 'ebena formato',
+'exif-colorspace-65535' => 'Nekalibrita',
+
'exif-componentsconfiguration-0' => 'ne ekzistas',
'exif-exposureprogram-0' => 'Ne difinita',
@@ -3201,6 +3337,10 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paÄoj kiel la b
'exif-gpslongitude-e' => 'Orienta longitudo',
'exif-gpslongitude-w' => 'Uesta longitudo',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metro|metroj}} super marnivelo',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metro|metroj}} sub marnivelo',
+
'exif-gpsstatus-a' => 'Mezurado estanta',
'exif-gpsstatus-v' => 'Mezurada interoperaciado',
@@ -3212,21 +3352,73 @@ Sekvaj ligilo en la sama linio estas konsiderata kiel esceptoj (paÄoj kiel la b
'exif-gpsspeed-m' => 'Mejloj por horo',
'exif-gpsspeed-n' => 'Knotoj',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometroj',
+'exif-gpsdestdistance-m' => 'Mejloj',
+'exif-gpsdestdistance-n' => 'Maraj mejloj',
+
+'exif-gpsdop-excellent' => 'Bonega ($1)',
+'exif-gpsdop-good' => 'Bona ($1)',
+'exif-gpsdop-moderate' => 'Meza ($1)',
+'exif-gpsdop-fair' => 'Submeza ($1)',
+'exif-gpsdop-poor' => 'Malbona ($1)',
+
+'exif-objectcycle-a' => 'Nur mateno',
+'exif-objectcycle-p' => 'Nur vespero',
+'exif-objectcycle-b' => 'Kaj mateno kaj vespero',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Vera direkto',
'exif-gpsdirection-m' => 'Magneta direkto',
+'exif-ycbcrpositioning-1' => 'Centrigita',
+'exif-ycbcrpositioning-2' => 'Multaj situoj',
+
+'exif-dc-contributor' => 'Kontribuintoj',
+'exif-dc-coverage' => 'Spaca aÅ­ tempa amplekso de bildo',
+'exif-dc-date' => 'Dato(j)',
+'exif-dc-publisher' => 'Eldonejo',
+'exif-dc-relation' => 'Rilata al bildo',
+'exif-dc-rights' => 'Rajtoj',
+'exif-dc-source' => 'Fonto de bildo',
+'exif-dc-type' => 'Tipo de medio',
+
+'exif-rating-rejected' => 'Malakceptita',
+
+'exif-isospeedratings-overflow' => 'Pli granda ol 65535',
+
+'exif-iimcategory-ace' => 'Arto, kulturo, kaj regalado',
+'exif-iimcategory-clj' => 'Krimo kaj leÄo',
+'exif-iimcategory-dis' => 'Katastrofoj kaj akcidentoj',
+'exif-iimcategory-fin' => 'Ekonomio kaj entrepreno',
+'exif-iimcategory-edu' => 'Edukado',
+'exif-iimcategory-evn' => 'Medio',
+'exif-iimcategory-hth' => 'Sano',
+'exif-iimcategory-hum' => 'Homaj interesaĵoj',
+'exif-iimcategory-lab' => 'Laboro',
+'exif-iimcategory-lif' => 'Vivmaniero kaj Åatokupo',
+'exif-iimcategory-pol' => 'Politiko',
+'exif-iimcategory-rel' => 'Religio kaj kreado',
+'exif-iimcategory-sci' => 'Scienco kaj teknologio',
+'exif-iimcategory-soi' => 'Sociaj aferoj',
+'exif-iimcategory-spo' => 'Sporto',
+'exif-iimcategory-war' => 'Milito, konflikto kaj malpacaĵo',
+'exif-iimcategory-wea' => 'Vetero',
+
+'exif-urgency-normal' => 'Norma ($1)',
+'exif-urgency-low' => 'Malalta ($1)',
+'exif-urgency-high' => 'Alta ($1)',
+'exif-urgency-other' => 'Prioritato difinita de uzanto ($1)',
+
# External editor support
'edit-externally' => 'ÅœanÄi ĉi tiun dosieron per ekstera programaro',
-'edit-externally-help' => "(Vidu la [http://www.mediawiki.org/wiki/Manual:External_editors instalinstrukciojn] por pliaj informoj.) ''[angle]''.",
+'edit-externally-help' => "(Vidu la [//www.mediawiki.org/wiki/Manual:External_editors instalinstrukciojn] por pliaj informoj.) ''[angle]''.",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ĉiuj',
-'imagelistall' => 'ĉiuj',
-'watchlistall2' => 'ĉiuj',
-'namespacesall' => 'ĉiuj',
-'monthsall' => 'ĉiuj',
-'limitall' => 'ĉiuj',
+'watchlistall2' => 'ĉiuj',
+'namespacesall' => 'ĉiuj',
+'monthsall' => 'ĉiuj',
+'limitall' => 'ĉiuj',
# E-mail address confirmation
'confirmemail' => 'Konfirmi retadreson',
@@ -3305,17 +3497,25 @@ $1',
'trackbackdeleteok' => 'La postspurado estis sukcese forigita.',
# Delete conflict
-'deletedwhileediting' => "'''Averto''': Ĉi tiu paÄo estis forigita post vi ekredaktis!",
-'confirmrecreate' => "Uzanto [[User:$1|$1]] ([[User talk:$1|diskuto]]) forigis ĉi tiun paÄon post vi ekredaktis Äin kun kialo:
+'deletedwhileediting' => "'''Averto''': Ĉi tiu paÄo estis forigita post vi ekredaktis!",
+'confirmrecreate' => "Uzanto [[User:$1|$1]] ([[User talk:$1|diskuto]]) forigis ĉi tiun paÄon post vi ekredaktis Äin kun kialo:
: ''$2''
Bonvolu konfirmi ke vi ja volas rekrei la paÄon.",
-'recreate' => 'Rekrei',
+'confirmrecreate-noreason' => 'Uzanto [[User:$1|$1]] ([[User talk:$1|diskuto-paÄo]]) forigis ĉi tiun paÄon post vi ekredaktis Äin.
+Bonvolu konfirmi ke vi ja volas rekrei la paÄon.',
+'recreate' => 'Rekrei',
# action=purge
'confirm_purge_button' => 'Ek!',
'confirm-purge-top' => 'Ĉu forviÅigi la kaÅmemoron de tiu ĉi paÄo?',
'confirm-purge-bottom' => 'RefreÅigante paÄon forviÅas la memorkaÅejon kaj devigas la plej lastan version aperi.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Ek!',
+'confirm-watch-top' => 'Ĉu aldoni tiun ĉi paÄon al via atentaro?',
+'confirm-unwatch-button' => 'Ek!',
+'confirm-unwatch-top' => 'Ĉu forigi tiun ĉi paÄon el via atentaro?',
+
# Multipage image navigation
'imgmultipageprev' => '↠antaÅ­a paÄo',
'imgmultipagenext' => 'sekva paÄo →',
@@ -3357,13 +3557,13 @@ Bonvolu konfirmi ke vi ja volas rekrei la paÄon.",
'watchlistedit-normal-legend' => 'Forigi titolojn de atentaro',
'watchlistedit-normal-explain' => 'Jen titoloj de via atentaro.
Forigi titolon, marku la skatoleto apude de Äi, kaj klaku "{{int:Watchlistedit-normal-submit}}".
-Vi ankaÅ­ povas [[Special:Watchlist/raw|redakti la krudan liston]].',
+Vi ankaÅ­ povas [[Special:EditWatchlist/raw|redakti la krudan liston]].',
'watchlistedit-normal-submit' => 'Forigi Titolojn',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 titolo estis forigita|$1 titoloj estis forigitaj}} de via atentaro:',
'watchlistedit-raw-title' => 'Redakti krudan atentaron',
'watchlistedit-raw-legend' => 'Redakti krudan atentaron',
'watchlistedit-raw-explain' => 'Jen titoloj en via atentaro, kiuj povas esti redaktata de aldono aÅ­ forigo de la listo: po unu titolo por linio. Kiam finite, klaku "{{int:Watchlistedit-raw-submit}}".
-Vi povas ankaÅ­ [[Special:Watchlist/edit|redakti norme]].',
+Vi povas ankaÅ­ [[Special:EditWatchlist|redakti norme]].',
'watchlistedit-raw-titles' => 'Titoloj:',
'watchlistedit-raw-submit' => 'Äœisdatigi atentaron',
'watchlistedit-raw-done' => 'Via atentaro estas Äisdatigita.',
@@ -3380,33 +3580,33 @@ Vi povas ankaÅ­ [[Special:Watchlist/edit|redakti norme]].',
'duplicate-defaultsort' => '\'\'\'Averto:\'\'\' DefaÅ­lta ordiga Ålosilo "$2" anstataÅ­igas pli fruan defaÅ­ltan ordigan Ålosilon "$1".',
# Special:Version
-'version' => 'Versio',
-'version-extensions' => 'Instalitaj kromprogramoj',
-'version-specialpages' => 'Specialaj paÄoj',
-'version-parserhooks' => 'Sintaksaj hokoj',
-'version-variables' => 'Variabloj',
-'version-skins' => 'Etosoj',
-'version-other' => 'Alia',
-'version-mediahandlers' => 'Mediaj traktiloj',
-'version-hooks' => 'Hokoj',
-'version-extension-functions' => 'Kromprogramaj funkcioj',
-'version-parser-extensiontags' => 'Sintaksaj etend-etikedoj',
-'version-parser-function-hooks' => 'Hokoj de sintaksaj funkcioj',
-'version-skin-extension-functions' => 'Etendaj funkcioj pri grafika etoso',
-'version-hook-name' => 'Nomo de hoko',
-'version-hook-subscribedby' => 'Abonita de',
-'version-version' => '(Versio $1)',
-'version-license' => 'Permesilo',
-'version-poweredby-credits' => "Ĉi tiu vikio funkcias per '''[http://www.mediawiki.org/ MediaWiki]''', aŭtorrajto ©&thinsp;2001–$1 $2.",
-'version-poweredby-others' => 'aliaj',
-'version-license-info' => 'MediaWiki estas libera programaro. Vi povas redistribui Äin kaj/aÅ­ modifi Äin sub la kondiĉoj de la GNU General Public Licens (GNU Äœenerala Publika Permesilo) en ties eldono de la Free Software Foundation (Libera Softvara Fondaĵo) - aÅ­ versio 2 de la Permesilo, aÅ­ (laÅ­ via elekto) iu ajn posta versio.
+'version' => 'Versio',
+'version-extensions' => 'Instalitaj kromprogramoj',
+'version-specialpages' => 'Specialaj paÄoj',
+'version-parserhooks' => 'Sintaksaj hokoj',
+'version-variables' => 'Variabloj',
+'version-antispam' => 'KontraÅ­spamilo',
+'version-skins' => 'Etosoj',
+'version-other' => 'Alia',
+'version-mediahandlers' => 'Mediaj traktiloj',
+'version-hooks' => 'Hokoj',
+'version-extension-functions' => 'Kromprogramaj funkcioj',
+'version-parser-extensiontags' => 'Sintaksaj etend-etikedoj',
+'version-parser-function-hooks' => 'Hokoj de sintaksaj funkcioj',
+'version-hook-name' => 'Nomo de hoko',
+'version-hook-subscribedby' => 'Abonita de',
+'version-version' => '(Versio $1)',
+'version-license' => 'Permesilo',
+'version-poweredby-credits' => "Ĉi tiu vikio funkcias per '''[//www.mediawiki.org/ MediaWiki]''', aŭtorrajto ©&thinsp;2001–$1 $2.",
+'version-poweredby-others' => 'aliaj',
+'version-license-info' => 'MediaWiki estas libera programaro. Vi povas redistribui Äin kaj/aÅ­ modifi Äin sub la kondiĉoj de la GNU General Public Licens (GNU Äœenerala Publika Permesilo) en ties eldono de la Free Software Foundation (Libera Softvara Fondaĵo) - aÅ­ versio 2 de la Permesilo, aÅ­ (laÅ­ via elekto) iu ajn posta versio.
Tiun ĉi verkon ni distribuas esperante, ke Äi utilos, sed SEN IA AJN GARANTIO; eĉ sen la implica garantio de SURMERKATIGEBLECO aÅ­ TAŬGECO POR IA DIFINITA CELO. Vidu GNU General Public License por pliaj detaloj.
-Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU General Public License] kune kun tiu ĉi programo; se ne, skribu al Free Software Foundation, Inc., 59 Temple Place, Suite 350, Boston, MA 02111-1307 USA aÅ­ [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html legu Äin interrete].',
-'version-software' => 'Instalita programaro',
-'version-software-product' => 'Produkto',
-'version-software-version' => 'Versio',
+Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU General Public License] kune kun tiu ĉi programo; se ne, skribu al Free Software Foundation, Inc., 59 Temple Place, Suite 350, Boston, MA 02111-1307 USA aÅ­ [//www.gnu.org/licenses/old-licenses/gpl-2.0.html legu Äin interrete].',
+'version-software' => 'Instalita programaro',
+'version-software-product' => 'Produkto',
+'version-software-version' => 'Versio',
# Special:FilePath
'filepath' => 'Vojo al dosiero',
@@ -3416,22 +3616,22 @@ Oni devis doni al vi [{{SERVER}}{{SCRIPTPATH}}/COPYING ekzempleron de la GNU Gen
Bildoj montriÄas en plena distingivo, aliaj dosiertipoj estas malfermataj rekte per ties asociita programo.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Serĉu duplikatajn dosierojn',
-'fileduplicatesearch-summary' => 'Serĉu duplikatajn dosierojn bazite de haketvaloro.
-
-Enigu la dosiernomon sen la "{{ns:file}}:" prefikso.',
-'fileduplicatesearch-legend' => 'Serĉi duplikaton',
-'fileduplicatesearch-filename' => 'Dosiernomo:',
-'fileduplicatesearch-submit' => 'Serĉi',
-'fileduplicatesearch-info' => '$1 × $2 rastrumero<br />Dosiera pezo: $3<br />MIME-tipo: $4',
-'fileduplicatesearch-result-1' => 'La dosiero "$1" ne havas identan duplikaton.',
-'fileduplicatesearch-result-n' => 'La dosiero "$1" havas {{PLURAL:$2|1 identan duplikaton|$2 identajn duplikatojn}}.',
+'fileduplicatesearch' => 'Serĉu duplikatajn dosierojn',
+'fileduplicatesearch-summary' => 'Serĉi duplikatajn dosierojn bazite de haketvaloro.',
+'fileduplicatesearch-legend' => 'Serĉi duplikaton',
+'fileduplicatesearch-filename' => 'Dosiernomo:',
+'fileduplicatesearch-submit' => 'Serĉi',
+'fileduplicatesearch-info' => '$1 × $2 rastrumero<br />Dosiera pezo: $3<br />MIME-tipo: $4',
+'fileduplicatesearch-result-1' => 'La dosiero "$1" ne havas identan duplikaton.',
+'fileduplicatesearch-result-n' => 'La dosiero "$1" havas {{PLURAL:$2|1 identan duplikaton|$2 identajn duplikatojn}}.',
+'fileduplicatesearch-noresults' => 'Neniu dosiero nomita "$1" troviÄis.',
# Special:SpecialPages
'specialpages' => 'Specialaj paÄoj',
'specialpages-note' => '----
* Normaj specialaj paÄoj.
-* <strong class="mw-specialpagerestricted">Limigitaj specialaj paÄoj.</strong>',
+* <strong class="mw-specialpagerestricted">Limigitaj specialaj paÄoj.</strong>
+* <span class="mw-specialpagecached">MemorkaÅitaj specialaj paÄoj (eble malaktualaj).</span>',
'specialpages-group-maintenance' => 'Raportoj pri prizorgado',
'specialpages-group-other' => 'Aliaj specialaj paÄoj',
'specialpages-group-login' => 'Ensaluti / Krei novan konton',
diff --git a/languages/messages/MessagesEs.php b/languages/messages/MessagesEs.php
index f01f6b14..299fd12f 100644
--- a/languages/messages/MessagesEs.php
+++ b/languages/messages/MessagesEs.php
@@ -34,6 +34,7 @@
* @author Fitoschido
* @author Fluence
* @author Gustronico
+ * @author Hercule
* @author Icvav
* @author Imre
* @author Jatrobat
@@ -64,27 +65,29 @@
* @author Translationista
* @author Urhixidur
* @author VegaDark
+ * @author Vivaelcelta
+ * @author Wilfredor
* @author XalD
* @author לערי ריינה×רט
*/
$namespaceNames = array(
- NS_MEDIA => 'Media',
+ NS_MEDIA => 'Medio',
NS_SPECIAL => 'Especial',
NS_TALK => 'Discusión',
NS_USER => 'Usuario',
- NS_USER_TALK => 'Usuario_Discusión',
- NS_PROJECT_TALK => '$1_Discusión',
+ NS_USER_TALK => 'Usuario_discusión',
+ NS_PROJECT_TALK => '$1_discusión',
NS_FILE => 'Archivo',
- NS_FILE_TALK => 'Archivo_Discusión',
+ NS_FILE_TALK => 'Archivo_discusión',
NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_Discusión',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_discusión',
NS_TEMPLATE => 'Plantilla',
- NS_TEMPLATE_TALK => 'Plantilla_Discusión',
+ NS_TEMPLATE_TALK => 'Plantilla_discusión',
NS_HELP => 'Ayuda',
- NS_HELP_TALK => 'Ayuda_Discusión',
+ NS_HELP_TALK => 'Ayuda_discusión',
NS_CATEGORY => 'Categoría',
- NS_CATEGORY_TALK => 'Categoría_Discusión',
+ NS_CATEGORY_TALK => 'Categoría_discusión',
);
$namespaceAliases = array(
@@ -92,97 +95,104 @@ $namespaceAliases = array(
'Imagen_Discusión' => NS_FILE_TALK,
);
+$namespaceGenderAliases = array(
+ NS_USER => array( 'male' => 'Usuario', 'female' => 'Usuaria' ),
+ NS_USER_TALK => array( 'male' => 'Usuario_Discusión', 'female' => 'Usuaria_Discusión' ),
+);
+
+
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'RedireccionesDobles', 'Redirecciones_dobles' ),
+ 'Activeusers' => array( 'UsuariosActivos' ),
+ 'Allmessages' => array( 'TodosLosMensajes' ),
+ 'Allpages' => array( 'Todas', 'Todas_las_páginas' ),
+ 'Ancientpages' => array( 'PáginasAntiguas', 'Páginas_antiguas' ),
+ 'Blankpage' => array( 'BlanquearPágina', 'Blanquear_página' ),
+ 'Block' => array( 'Bloquear' ),
+ 'Blockme' => array( 'Bloquearme' ),
+ 'Booksources' => array( 'FuentesDeLibros', 'Fuentes_de_libros' ),
'BrokenRedirects' => array( 'RedireccionesRotas', 'Redirecciones_rotas' ),
- 'Disambiguations' => array( 'Desambiguaciones', 'Desambiguación' ),
- 'Userlogin' => array( 'Entrar', 'Entrada_del_usuario' ),
- 'Userlogout' => array( 'Salida_del_usuario', 'Salir' ),
+ 'Categories' => array( 'Categorías' ),
+ 'ChangePassword' => array( 'Cambiar_contraseña', 'CambiarContraseña', 'ResetearContraseña', 'Resetear_contraseña' ),
+ 'ComparePages' => array( 'CompararPáginas' ),
+ 'Confirmemail' => array( 'ConfirmarEmail', 'Confirmar_e-mail' ),
+ 'Contributions' => array( 'Contribuciones' ),
'CreateAccount' => array( 'Crear_una_cuenta', 'CrearCuenta' ),
- 'Preferences' => array( 'Preferencias' ),
- 'Watchlist' => array( 'Seguimiento', 'Lista_de_seguimiento' ),
- 'Recentchanges' => array( 'CambiosRecientes', 'Cambios_recientes' ),
- 'Upload' => array( 'SubirArchivo', 'Subir_archivo' ),
+ 'Deadendpages' => array( 'PáginasSinSalida', 'Páginas_sin_salida' ),
+ 'DeletedContributions' => array( 'ContribucionesBorradas', 'Contribuciones_Borradas' ),
+ 'Disambiguations' => array( 'Desambiguaciones', 'Desambiguación' ),
+ 'DoubleRedirects' => array( 'RedireccionesDobles', 'Redirecciones_dobles' ),
+ 'Emailuser' => array( 'MandarEmailUsuario' ),
+ 'Export' => array( 'Exportar' ),
+ 'Fewestrevisions' => array( 'MenosEdiciones', 'Menos_ediciones' ),
+ 'FileDuplicateSearch' => array( 'BuscarArchivosDuplicados', 'Buscar_archivos_duplicados' ),
+ 'Filepath' => array( 'RutaDeArchivo', 'Ruta_de_archivo' ),
+ 'Import' => array( 'Importar' ),
+ 'Invalidateemail' => array( 'InvalidarEmail', 'Invalidar_e-mail' ),
+ 'BlockList' => array( 'UsuariosBloqueados', 'Lista_de_usuarios_bloqueados' ),
+ 'LinkSearch' => array( 'BúsquedaDeEnlaces', 'Búsqueda_de_enlaces' ),
+ 'Listadmins' => array( 'ListaDeAdministradores', 'Lista_de_administradores' ),
+ 'Listbots' => array( 'ListaDeBots', 'Lista_de_bots' ),
'Listfiles' => array( 'ListaImágenes', 'Lista_de_imágenes' ),
- 'Newimages' => array( 'NuevasImágenes', 'Nuevas_imágenes' ),
- 'Listusers' => array( 'ListaUsuarios', 'Lista_de_usuarios' ),
'Listgrouprights' => array( 'ListaDerechosGrupos', 'Derechos_de_grupos_de_usuarios' ),
- 'Statistics' => array( 'Estadísticas' ),
- 'Randompage' => array( 'Aleatoria', 'Aleatorio', 'Página_aleatoria' ),
+ 'Listredirects' => array( 'TodasLasRedirecciones', 'Todas_las_redirecciones' ),
+ 'Listusers' => array( 'ListaUsuarios', 'Lista_de_usuarios' ),
+ 'Lockdb' => array( 'BloquearBasedeDatos', 'Bloquear_base_de_datos' ),
+ 'Log' => array( 'Registro' ),
'Lonelypages' => array( 'PáginasHuérfanas', 'Páginas_huérfanas' ),
- 'Uncategorizedpages' => array( 'PáginasSinCategorizar', 'Páginas_sin_categorizar' ),
- 'Uncategorizedcategories' => array( 'CategoríasSinCategorizar', 'Categorías_sin_categorizar' ),
- 'Uncategorizedimages' => array( 'ImágenesSinCategorizar', 'Imágenes_sin_categorizar' ),
- 'Uncategorizedtemplates' => array( 'PlantillasSinCategorizar', 'Plantillas_sin_categorizar' ),
- 'Unusedcategories' => array( 'CategoríasSinUso', 'Categorías_sin_uso' ),
- 'Unusedimages' => array( 'ImágenesSinUso', 'Imágenes_sin_uso' ),
- 'Wantedpages' => array( 'PáginasRequeridas', 'Páginas_requeridas' ),
- 'Wantedcategories' => array( 'CategoríasRequeridas', 'Categorías_requeridas' ),
- 'Wantedfiles' => array( 'ArchivosRequeridos', 'Archivos_requeridos' ),
- 'Wantedtemplates' => array( 'PlantillasRequeridas', 'Plantillas_requeridas' ),
+ 'Longpages' => array( 'PáginasLargas', 'Páginas_largas' ),
+ 'MergeHistory' => array( 'FusionarHistorial', 'Fusionar_historial' ),
+ 'MIMEsearch' => array( 'BuscarPorMIME', 'Buscar_por_MIME' ),
+ 'Mostcategories' => array( 'MásCategorizadas', 'Más_categorizadas' ),
+ 'Mostimages' => array( 'MásImágenes', 'Con_más_imágenes' ),
'Mostlinked' => array( 'MásEnlazados', 'Más_enlazados' ),
'Mostlinkedcategories' => array( 'CategoríasMásUsadas', 'Categorías_más_usadas' ),
'Mostlinkedtemplates' => array( 'PlantillasMásUsadas', 'Plantillas_más_usadas' ),
- 'Mostimages' => array( 'MásImágenes', 'Con_más_imágenes' ),
- 'Mostcategories' => array( 'MásCategorizadas', 'Más_categorizadas' ),
'Mostrevisions' => array( 'MásEdiciones', 'Más_ediciones' ),
- 'Fewestrevisions' => array( 'MenosEdiciones', 'Menos_ediciones' ),
- 'Shortpages' => array( 'PáginasCortas', 'Páginas_cortas' ),
- 'Longpages' => array( 'PáginasLargas', 'Páginas_largas' ),
+ 'Movepage' => array( 'MoverPágina', 'Mover_página' ),
+ 'Mycontributions' => array( 'MisContribuciones', 'Mis_contribuciones' ),
+ 'Mypage' => array( 'MiPágina', 'Mi_página' ),
+ 'Mytalk' => array( 'MiDiscusión', 'Mi_discusión' ),
+ 'Newimages' => array( 'NuevasImágenes', 'Nuevas_imágenes' ),
'Newpages' => array( 'PáginasNuevas', 'Páginas_nuevas' ),
- 'Ancientpages' => array( 'PáginasAntiguas', 'Páginas_antiguas' ),
- 'Deadendpages' => array( 'PáginasSinSalida', 'Páginas_sin_salida' ),
+ 'Popularpages' => array( 'PáginasMásVisitadas', 'PáginasPopulares', 'Páginas_más_visitadas' ),
+ 'Preferences' => array( 'Preferencias' ),
+ 'Prefixindex' => array( 'PáginasPorPrefijo', 'Páginas_por_prefijo' ),
'Protectedpages' => array( 'PáginasProtegidas', 'Páginas_protegidas' ),
'Protectedtitles' => array( 'TítulosProtegidos', 'Títulos_protegidos' ),
- 'Allpages' => array( 'Todas', 'Todas_las_páginas' ),
- 'Prefixindex' => array( 'PáginasPorPrefijo', 'Páginas_por_prefijo' ),
- 'Ipblocklist' => array( 'UsuariosBloqueados', 'Lista_de_usuarios_bloqueados' ),
- 'Unblock' => array( 'Desbloquear' ),
- 'Specialpages' => array( 'PáginasEspeciales', 'Páginas_especiales' ),
- 'Contributions' => array( 'Contribuciones' ),
- 'Emailuser' => array( 'MandarEmailUsuario' ),
- 'Confirmemail' => array( 'ConfirmarEmail', 'Confirmar_e-mail' ),
- 'Whatlinkshere' => array( 'LoQueEnlazaAquí', 'Lo_que_enlaza_aquí' ),
+ 'Randompage' => array( 'Aleatoria', 'Aleatorio', 'Página_aleatoria' ),
+ 'Randomredirect' => array( 'RedirecciónAleatoria', 'Redirección_aleatoria' ),
+ 'Recentchanges' => array( 'CambiosRecientes', 'Cambios_recientes' ),
'Recentchangeslinked' => array( 'CambiosEnEnlazadas', 'Cambios_en_enlazadas' ),
- 'Movepage' => array( 'MoverPágina', 'Mover_página' ),
- 'Blockme' => array( 'Bloquearme' ),
- 'Booksources' => array( 'FuentesDeLibros', 'Fuentes_de_libros' ),
- 'Categories' => array( 'Categorías' ),
- 'Export' => array( 'Exportar' ),
- 'Version' => array( 'Versión' ),
- 'Allmessages' => array( 'TodosLosMensajes' ),
- 'Log' => array( 'Registro' ),
- 'Blockip' => array( 'Bloquear' ),
+ 'Revisiondelete' => array( 'BorrarRevisión', 'Borrar_revisión' ),
+ 'RevisionMove' => array( 'MoverRevision' ),
+ 'Search' => array( 'Buscar' ),
+ 'Shortpages' => array( 'PáginasCortas', 'Páginas_cortas' ),
+ 'Specialpages' => array( 'PáginasEspeciales', 'Páginas_especiales' ),
+ 'Statistics' => array( 'Estadísticas' ),
+ 'Tags' => array( 'Etiquetas' ),
+ 'Unblock' => array( 'Desbloquear' ),
+ 'Uncategorizedcategories' => array( 'CategoríasSinCategorizar', 'Categorías_sin_categorizar' ),
+ 'Uncategorizedimages' => array( 'ImágenesSinCategorizar', 'Imágenes_sin_categorizar' ),
+ 'Uncategorizedpages' => array( 'PáginasSinCategorizar', 'Páginas_sin_categorizar' ),
+ 'Uncategorizedtemplates' => array( 'PlantillasSinCategorizar', 'Plantillas_sin_categorizar' ),
'Undelete' => array( 'Restaurar' ),
- 'Import' => array( 'Importar' ),
- 'Lockdb' => array( 'BloquearBasedeDatos', 'Bloquear_base_de_datos' ),
'Unlockdb' => array( 'DesbloquearBasedeDatos', 'Desbloquear_base_de_datos' ),
- 'Userrights' => array( 'PermisosUsuarios', 'Permisos_de_usuarios' ),
- 'MIMEsearch' => array( 'BuscarPorMIME', 'Buscar_por_MIME' ),
- 'FileDuplicateSearch' => array( 'BuscarArchivosDuplicados', 'Buscar_archivos_duplicados' ),
- 'Unwatchedpages' => array( 'PáginasSinVigilar', 'Páginas_sin_vigilar' ),
- 'Listredirects' => array( 'TodasLasRedirecciones', 'Todas_las_redirecciones' ),
- 'Revisiondelete' => array( 'BorrarRevisión', 'Borrar_revisión' ),
+ 'Unusedcategories' => array( 'CategoríasSinUso', 'Categorías_sin_uso' ),
+ 'Unusedimages' => array( 'ImágenesSinUso', 'Imágenes_sin_uso' ),
'Unusedtemplates' => array( 'PlantillasSinUso', 'Plantillas_sin_uso' ),
- 'Randomredirect' => array( 'RedirecciónAleatoria', 'Redirección_aleatoria' ),
- 'Mypage' => array( 'MiPágina', 'Mi_página' ),
- 'Mytalk' => array( 'MiDiscusión', 'Mi_discusión' ),
- 'Mycontributions' => array( 'MisContribuciones', 'Mis_contribuciones' ),
- 'Listadmins' => array( 'ListaDeAdministradores', 'Lista_de_administradores' ),
- 'Listbots' => array( 'ListaDeBots', 'Lista_de_bots' ),
- 'Popularpages' => array( 'PáginasMásVisitadas', 'PáginasPopulares', 'Páginas_más_visitadas' ),
- 'Search' => array( 'Buscar' ),
- 'Resetpass' => array( 'Cambiar_contraseña', 'CambiarContraseña', 'ResetearContraseña', 'Resetear_contraseña' ),
+ 'Unwatchedpages' => array( 'PáginasSinVigilar', 'Páginas_sin_vigilar' ),
+ 'Upload' => array( 'SubirArchivo', 'Subir_archivo' ),
+ 'Userlogin' => array( 'Entrar', 'Entrada_del_usuario' ),
+ 'Userlogout' => array( 'Salida_del_usuario', 'Salir' ),
+ 'Userrights' => array( 'PermisosUsuarios', 'Permisos_de_usuarios' ),
+ 'Version' => array( 'Versión' ),
+ 'Wantedcategories' => array( 'CategoríasRequeridas', 'Categorías_requeridas' ),
+ 'Wantedfiles' => array( 'ArchivosRequeridos', 'Archivos_requeridos' ),
+ 'Wantedpages' => array( 'PáginasRequeridas', 'Páginas_requeridas' ),
+ 'Wantedtemplates' => array( 'PlantillasRequeridas', 'Plantillas_requeridas' ),
+ 'Watchlist' => array( 'Seguimiento', 'Lista_de_seguimiento' ),
+ 'Whatlinkshere' => array( 'LoQueEnlazaAquí', 'Lo_que_enlaza_aquí' ),
'Withoutinterwiki' => array( 'SinInterwikis', 'Sin_interwikis' ),
- 'MergeHistory' => array( 'FusionarHistorial', 'Fusionar_historial' ),
- 'Filepath' => array( 'RutaDeArchivo', 'Ruta_de_archivo' ),
- 'Invalidateemail' => array( 'InvalidarEmail', 'Invalidar_e-mail' ),
- 'Blankpage' => array( 'BlanquearPágina', 'Blanquear_página' ),
- 'LinkSearch' => array( 'BúsquedaDeEnlaces', 'Búsqueda_de_enlaces' ),
- 'DeletedContributions' => array( 'ContribucionesBorradas', 'Contribuciones_Borradas' ),
- 'Tags' => array( 'Etiquetas' ),
- 'Activeusers' => array( 'UsuariosActivos' ),
- 'ComparePages' => array( 'CompararPáginas' ),
);
$magicWords = array(
@@ -350,8 +360,8 @@ $messages = array(
'tog-shownumberswatching' => 'Mostrar el número de usuarios que la vigilan',
'tog-oldsig' => 'Firma actual:',
'tog-fancysig' => 'Tratar firma como wikitexto (sin un enlace automático)',
-'tog-externaleditor' => 'Utilizar editor externo por defecto (sólo para expertos pues necesitas ajustes especiales en tu ordenador. [http://www.mediawiki.org/wiki/Manual:External_editors Más información.])',
-'tog-externaldiff' => 'Utilizar diff externo por defecto (sólo para expertos pues necesitas ajustes especiales en tu ordenador. [http://www.mediawiki.org/wiki/Manual:External_editors Más información.])',
+'tog-externaleditor' => 'Utilizar editor externo por defecto (sólo para expertos pues necesitas ajustes especiales en tu ordenador. [//www.mediawiki.org/wiki/Manual:External_editors Más información.])',
+'tog-externaldiff' => 'Utilizar diff externo por defecto (sólo para expertos pues necesitas ajustes especiales en tu ordenador. [//www.mediawiki.org/wiki/Manual:External_editors Más información.])',
'tog-showjumplinks' => 'Habilitar enlaces de accesibilidad «saltar a»',
'tog-uselivepreview' => 'Usar live preview (JavaScript) (Experimental)',
'tog-forceeditsummary' => 'Alertar al grabar sin resumen de edición.',
@@ -448,14 +458,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Páginas indexadas',
'noindex-category' => 'Páginas no indizadas',
-
-'mainpagetext' => "'''MediaWiki ha sido instalado con éxito.'''",
-'mainpagedocfooter' => 'Consulta la [http://meta.wikimedia.org/wiki/Ayuda:Contenido Guía de usuario] para obtener información sobre el uso del software wiki.
-
-== Empezando ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista de ajustes de configuración]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/es FAQ de MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo de anuncios de distribución de MediaWiki]',
+'broken-file-category' => 'Páginas con enlaces rotos a archivos',
'about' => 'Acerca de',
'article' => 'Artículo',
@@ -507,10 +510,10 @@ $messages = array(
'history' => 'Historial',
'history_short' => 'Historial',
'updatedmarker' => 'actualizado desde mi última visita',
-'info_short' => 'Información',
'printableversion' => 'Versión para imprimir',
'permalink' => 'Enlace permanente',
'print' => 'Imprimir',
+'view' => 'Ver',
'edit' => 'Editar',
'create' => 'Crear',
'editthispage' => 'Editar esta página',
@@ -518,6 +521,7 @@ $messages = array(
'delete' => 'Borrar',
'deletethispage' => 'Borrar esta página',
'undelete_short' => 'Restaurar {{PLURAL:$1|una edición|$1 ediciones}}',
+'viewdeleted_short' => 'Ver {{PLURAL:$1|una edición borrada|$1 ediciones borradas}}',
'protect' => 'Proteger',
'protect_change' => 'cambiar',
'protectthispage' => 'Proteger esta página',
@@ -601,6 +605,8 @@ $1',
'toc' => 'Contenido',
'showtoc' => 'mostrar',
'hidetoc' => 'ocultar',
+'collapsible-collapse' => 'Ocultar',
+'collapsible-expand' => 'Mostrar',
'thisisdeleted' => '¿Ver o restaurar $1?',
'viewdeleted' => '¿Deseas ver $1?',
'restorelink' => '{{PLURAL:$1|una edición borrada|$1 ediciones borradas}}',
@@ -612,6 +618,8 @@ $1',
'page-rss-feed' => 'Canal RSS «$1»',
'page-atom-feed' => 'Canal Atom «$1»',
'red-link-title' => '$1 (la página no existe)',
+'sort-descending' => 'Orden descendente',
+'sort-ascending' => 'Orden ascendente',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Página',
@@ -695,12 +703,13 @@ Consulta: $2',
'protectedpagetext' => 'Esta página ha sido protegida para evitar su edición.',
'viewsourcetext' => 'Puedes ver y copiar el código fuente de esta página:',
'protectedinterface' => 'Esta página provee texto del interfaz del software, y está protegida para evitar vandalismos.',
-'editinginterface' => "'''Aviso:''' Estás editando una página usada para proporcionar texto de interfaz para el software. Los cambios en esta página afectarán a la apariencia de la interfaz para los demás usuarios. Para traducciones, por favor considera usar [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], el proyecto de regionalización de MediaWiki.",
+'editinginterface' => "'''Aviso:''' Estás editando una página usada para proporcionar texto de interfaz para el software. Los cambios en esta página afectarán a la apariencia de la interfaz para los demás usuarios. Para traducciones, por favor considera usar [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], el proyecto de regionalización de MediaWiki.",
'sqlhidden' => '(Consulta SQL oculta)',
'cascadeprotected' => 'Esta página ha sido protegida para su edición, porque está incluida en {{PLURAL:$1|la siguiente página|las siguientes páginas}}, que están protegidas con la opción de «cascada»:
$2',
'namespaceprotected' => "No tienes permiso para editar las páginas del espacio de nombres '''$1'''.",
-'customcssjsprotected' => 'No tienes permiso para editar esta página porque contiene elementos de la configuración personal de otro usuario.',
+'customcssprotected' => 'No tienes permiso para editar esta página CSS, porque contiene configuraciones personales de otro usuario.',
+'customjsprotected' => 'No tienes permiso para editar esta página JavaScript, porque contiene configuraciones personales de otro usuario.',
'ns-specialprotected' => 'Las páginas especiales no se pueden editar',
'titleprotected' => 'Esta página ha sido protegida contra creación por [[User:$1|$1]].
El motivo dado fue: "\'\'$2\'\'".',
@@ -739,6 +748,7 @@ No olvides personalizar [[Special:Preferences|tus preferencias]].',
'createaccount' => 'Crear cuenta',
'gotaccount' => '¿Ya tienes una cuenta? $1.',
'gotaccountlink' => 'Entrar',
+'userlogin-resetlink' => '¿Olvidaste tus datos de acceso?',
'createaccountmail' => 'por correo electrónico',
'createaccountreason' => 'Motivo:',
'badretype' => 'Las contraseñas no coinciden.',
@@ -751,13 +761,15 @@ Por favor escoge un nombre diferente.',
Tu navegador tiene desactivadas las cookies.
Por favor, actívalas e inicia sesión con tu nuevo nombre de usuario y contraseña.',
'nocookieslogin' => '{{SITENAME}} utiliza <em>cookies</em> para la autenticación de usuarios. Las <em>cookies</em> están desactivadas en tu navegador. Por favor, actívalas e inténtalo de nuevo.',
+'nocookiesfornew' => 'No se pudo crear la cuenta de usuario, porque no pudimos confirmar su origen.
+Asegúrate de que tienes las cookies activadas, luego recarga esta página e inténtalo de nuevo.',
'noname' => 'No se ha especificado un nombre de usuario válido.',
'loginsuccesstitle' => 'Inicio de sesión exitoso',
'loginsuccess' => "'''Has iniciado sesión en {{SITENAME}} como «$1».'''",
'nosuchuser' => 'No existe ningún usuario llamado «$1».
Los nombres de usuario son sensibles a las mayúsculas.
Revisa la ortografía, o [[Special:UserLogin/signup|crea una cuenta nueva]].',
-'nosuchusershort' => 'No hay un usuario con el nombre «<nowiki>$1</nowiki>». Comprueba que lo has escrito correctamente.',
+'nosuchusershort' => 'No hay un usuario con el nombre «$1». Comprueba que lo has escrito correctamente.',
'nouserspecified' => 'Debes especificar un nombre de usuario.',
'login-userblocked' => 'Este usuario está bloqueado. Inicio de sesión no permitido.',
'wrongpassword' => 'La contraseña indicada es incorrecta.
@@ -802,13 +814,14 @@ La contraseña asignada automáticamente es «$3». Por favor entra ahora y camb
Puedes ignorar este mensaje si esta cuenta fue creada por error.',
'usernamehasherror' => 'El nombre de usuario no puede contener símbolos de almohadilla/numeral',
'login-throttled' => 'Has intentado demasiadas veces iniciar sesión. Por favor espera antes de intentarlo nuevamente.',
+'login-abort-generic' => 'Tu inicio de sesión no fue exitoso - Cancelado',
'loginlanguagelabel' => 'Idioma: $1',
'suspicious-userlogout' => 'Tu solicitud de desconexión ha sido denegada debido a que parece que ésta ha sido enviada desde un navegador defectuoso o un proxy caché.',
# E-mail sending
'php-mail-error-unknown' => 'Error desconocido en la función mail() de PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Cambiar la contraseña',
'resetpass_announce' => 'Has iniciado sesión con una contraseña temporal que fue enviada por correo electrónico.
Por favor, introduce una nueva contraseña aquí:',
@@ -828,6 +841,39 @@ Iniciando sesión...',
Puede que ya hayas cambiado la contraseña o que hayas pedido una temporal.',
'resetpass-temp-password' => 'Contraseña temporal:',
+# Special:PasswordReset
+'passwordreset' => 'Restablecimiento de contraseña',
+'passwordreset-text' => 'Completa este formulario para recibir un recordatorio por correo electrónico de los detalles de tu cuenta.',
+'passwordreset-legend' => 'Restablecer contraseña',
+'passwordreset-disabled' => 'Se ha desactivado el restablecimiento de contraseñas en este wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Introduce uno de los elementos de datos siguientes}}',
+'passwordreset-username' => 'Nombre de usuario:',
+'passwordreset-domain' => 'Dominio:',
+'passwordreset-email' => 'Dirección de correo electrónico:',
+'passwordreset-emailtitle' => 'Detalles de la cuenta en {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Alguien (probablemente tú, desde la dirección IP $1) pidió un recordatorio de tus
+datos de cuenta para {{SITENAME}} ($4). {{PLURAL:$3|La siguiente cuenta está asociada|Las siguientes cuentas están asociadas}}
+con esta dirección de correo electrónico:
+
+$2
+
+{{PLURAL:$3|Esta contraseña temporal|Estas contraseñas temporales}} expirarán en {{PLURAL:$5|un día|$5 días}}.
+Deberías iniciar sesión y establecer una contraseña nueva ahora. Si alguien más hizo este pedido,
+o recuerdas tu contraseña original, y no deseas cambiarla, puedes
+ignorar este mensaje y continuar usando tu contraseña anterior.',
+'passwordreset-emailtext-user' => 'El usuario $1 en {{SITENAME}} pidió un recordatorio de tus datos de cuenta para {{SITENAME}}
+($4). {{PLURAL:$3|La siguiente cuenta está asociada|Las siguientes cuentas están asociadas}} con esta dirección de correo electrónico:
+
+$2
+
+{{PLURAL:$3|Esta contraseña temporal|Estas contraseñas temporales}} expirarán en {{PLURAL:$5|un día|$5 días}}.
+Deberías iniciar sesión y establecer una contraseña nueva ahora. Si alguien más hizo este pedido,
+o recuerdas tu contraseña original, y no deseas cambiarla, puedes
+ignorar este mensaje y continuar usando tu contraseña anterior.',
+'passwordreset-emailelement' => 'Nombre de usuario: $1
+Contraseña temporal: $2',
+'passwordreset-emailsent' => 'Se ha enviado un correo electrónico de recordatorio.',
+
# Edit page toolbar
'bold_sample' => 'Texto en negrita',
'bold_tip' => 'Texto en negrita',
@@ -839,8 +885,6 @@ Puede que ya hayas cambiado la contraseña o que hayas pedido una temporal.',
'extlink_tip' => 'Enlace externo (recuerda añadir el prefijo http://)',
'headline_sample' => 'Texto de encabezado',
'headline_tip' => 'Encabezado de nivel 2',
-'math_sample' => 'Escribir la fórmula aquí',
-'math_tip' => 'Fórmula matemática (LaTeX)',
'nowiki_sample' => 'Insertar aquí texto sin formato',
'nowiki_tip' => 'Ignorar el formato wiki',
'image_sample' => 'Ejemplo.jpg',
@@ -926,7 +970,7 @@ o [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta página]</span>.',
'noarticletext-nopermission' => 'Actualmente no hay texto en esta página.
Puedes [[Special:Search/{{PAGENAME}}|buscar este título de página]] en otras páginas,
o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} buscar en los registros relacionados]</span>.',
-'userpage-userdoesnotexist' => 'La cuenta de usuario «$1» no está registrada. Por favor comprueba si quieres crear o editar esta página.',
+'userpage-userdoesnotexist' => 'La cuenta de usuario «<nowiki>$1</nowiki>» no está registrada. Por favor comprueba si quieres crear o editar esta página.',
'userpage-userdoesnotexist-view' => 'La cuenta de usuario «$1» no está registrada.',
'blocked-notice-logextract' => 'Este usuario está actualmente bloqueado.
La última entrada del registro de bloqueos se proporciona debajo para mayor referencia:',
@@ -963,6 +1007,7 @@ Si el problema persiste, [[Special:UserLogout|cierra la sesión]] y vuelve a ide
'token_suffix_mismatch' => "'''Tu edición ha sido rechazada porque tu cliente ha mezclado los signos de puntuación en el token de edición.
Se rechazó la edición para evitar que el texto de la página se corrompa.
Esto sucede en ocasiones cuando se usa un servicio de proxy anónimo defectuoso.'''",
+'edit_form_incomplete' => "'''Algunas partes del formulario de edición no llegaron al servidor, comprueba que tus ediciones están intactas e inténtalo de nuevo'''.",
'editing' => 'Editando $1',
'editingsection' => 'Editando $1 (sección)',
'editingcomment' => 'Editando $1 (nueva sección)',
@@ -1094,28 +1139,28 @@ Prueba a [[Special:Search|buscar en el wiki]] nuevas páginas relevantes.',
'rev-deleted-text-permission' => "Esta revisión de la página ha sido '''borrada'''.
Puede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
'rev-deleted-text-unhide' => "Esta revisión de la página ha sido '''borrada'''.
-Puede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].
+Puede haber más detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].
Como administrador todavía puedes [$1 ver esta revisión] si así lo deseas.",
'rev-suppressed-text-unhide' => "Esta revisión de la página ha sido '''suprimida'''.
-Puede haber detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].
+Puede haber más detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].
Como administrador podrá seguir [$1 viendo esta revisión] si desea continuar.",
'rev-deleted-text-view' => "Esta revisión de la página ha sido '''borrada'''.
-Como administrador puedes verla; puede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
+Aún tiene la posibilidad de verla; puede ampliar los detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
'rev-suppressed-text-view' => "Esta revisión de la página ha sido '''suprimida'''.
-Como administrador puedes verla; puede haber detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].",
-'rev-deleted-no-diff' => "No puede visualizarse este cambio debido a que las revisiones han sido '''borradas'''.
-Puede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
-'rev-suppressed-no-diff' => "No puedes ver este diff porque una de las revisiones ha sido '''borrada'''.",
-'rev-deleted-unhide-diff' => "Una de las revisiones de este cambio ha sido '''borrada'''.
-Puede haber detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].
-Como administrador podrá seguir [$1 viendo este cambio] si así lo deseas.",
-'rev-suppressed-unhide-diff' => "Una de las revisiones de este diff ha sido '''suprimida'''.
+Aún tiene la posibilidad de verla; puede ampliar los detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].",
+'rev-deleted-no-diff' => "No puedes ver esta diferencia porque una de las revisiones ha sido '''borrada'''.
+Puedes encontrar más detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
+'rev-suppressed-no-diff' => "No puedes ver esta diferencia porque una de las revisiones ha sido '''borrada'''.",
+'rev-deleted-unhide-diff' => "Una de las revisiones de esta diferencia ha sido '''borrada'''.
+Puede ampliar los detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].
+Aún puede [$1 ver este cambio] si así lo desea.",
+'rev-suppressed-unhide-diff' => "Una de las revisiones de esta diferencia ha sido '''suprimida'''.
Puede haber detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].
-Como administrador podrá seguir [$1 viendo este cambio] si desea proceder.",
-'rev-deleted-diff-view' => "Una de las revisiones de este diff ha sido '''borrada'''.
-Como administrador puede ver el contenido; puede que existan más detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
-'rev-suppressed-diff-view' => "Una de las revisiones de este diff ha sido '''suprimida'''.
-Como administrador todavía puede ver el contenido; puede que existan más detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].",
+Aún puede [$1 ver esta diferencia] si desea así lo desea.",
+'rev-deleted-diff-view' => "Una de las revisiones de esta diferencia ha sido '''borrada'''.
+Aún tiene la posibilidad de verla; puede ampliar los detalles en el [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de borrados].",
+'rev-suppressed-diff-view' => "Una de las revisiones de esta diferencia ha sido '''suprimida'''.
+Aún tiene la posibilidad de verla; puede ampliar los detalles en el [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supresiones].",
'rev-delundel' => 'mostrar/ocultar',
'rev-showdeleted' => 'mostrar',
'revisiondelete' => 'Borrar/restaurar revisiones',
@@ -1133,10 +1178,10 @@ Como administrador todavía puede ver el contenido; puede que existan más detal
'revdelete-text' => "Las revisiones borradas aún aparecerán en el historial de la página y en los registros, pero sus contenidos no serán accesibles al público.'''
Otros administradores de {{SITENAME}} aún podrán acceder al contenido oculto y podrán deshacer el borrado a través de la misma interfaz, a menos que se establezcan restricciones adicionales.",
'revdelete-confirm' => 'Por favor confirma que deseas realizar la operación, que entiendes las consecuencias y que estás ejecutando dicha acción acorde con [[{{MediaWiki:Policy-url}}|las políticas]].',
-'revdelete-suppress-text' => "Supresión debería '''solamente''' ser usado para los siguientes casos:
-* Información potencialmente difamatoria o libelo grave.
+'revdelete-suppress-text' => "La eliminación '''solamente''' debería usarse en los siguientes casos:
+* Información potencialmente difamatoria
* Información personal inapropiada
-*: ''domicilios y números de teléfono, números de afiliación a la seguridad social, etc.''",
+* domicilios y números de teléfono, números de seguridad social, etc.",
'revdelete-legend' => 'Establecer restricciones de revisión:',
'revdelete-hide-text' => 'Ocultar el texto de la revisión',
'revdelete-hide-image' => 'Ocultar el contenido del archivo',
@@ -1194,8 +1239,8 @@ No tiene acceso a él.',
# Suppression log
'suppressionlog' => 'Registro de supresiones',
-'suppressionlogtext' => 'Debajo está una lista de borrados y bloqueos relacionados con contenido oculto a los administradores.
-Mire [[Special:IPBlockList|la lista de bloqueos activos]] para ver una lista de bloqueos actualmente operativos.',
+'suppressionlogtext' => 'Debajo hay una lista con los borrados y bloqueos recientes, que incluyen contenido oculto de los administradores.
+Mire la [[Special:BlockList|lista de bloqueos activos]] para ver una lista de prohibiciones actualmente operativas.',
# History merging
'mergehistory' => 'Fusionar historiales de páginas',
@@ -1306,12 +1351,13 @@ Prueba a usar el prefijo ''all:'' para buscar en todo el contenido (incluyendo p
Mientras tanto puedes buscar mediante Google, pero ten en cuenta que sus índices relativos a {{SITENAME}} pueden estar desactualizados.',
# Quickbar
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'Ninguna',
-'qbsettings-fixedleft' => 'Fija a la izquierda',
-'qbsettings-fixedright' => 'Fija a la derecha',
-'qbsettings-floatingleft' => 'Flotante a la izquierda',
-'qbsettings-floatingright' => 'Flotante a la derecha',
+'qbsettings' => 'Quickbar',
+'qbsettings-none' => 'Ninguna',
+'qbsettings-fixedleft' => 'Fija a la izquierda',
+'qbsettings-fixedright' => 'Fija a la derecha',
+'qbsettings-floatingleft' => 'Flotante a la izquierda',
+'qbsettings-floatingright' => 'Flotante a la derecha',
+'qbsettings-directionality' => 'Fijos, dependiendo de la direccionalidad de la escritura de su idioma',
# Preferences page
'preferences' => 'Preferencias',
@@ -1322,9 +1368,10 @@ Mientras tanto puedes buscar mediante Google, pero ten en cuenta que sus índice
'changepassword' => 'Cambiar contraseña',
'prefs-skin' => 'Skin',
'skin-preview' => 'Previsualizar',
-'prefs-math' => 'Fórmulas',
'datedefault' => 'Sin preferencia',
+'prefs-beta' => 'Características de prueba',
'prefs-datetime' => 'Fecha y hora',
+'prefs-labs' => 'Características de los laboratorios',
'prefs-personal' => 'Perfil de usuario',
'prefs-rc' => 'Cambios recientes',
'prefs-watchlist' => 'Seguimiento',
@@ -1346,8 +1393,6 @@ Mientras tanto puedes buscar mediante Google, pero ten en cuenta que sus índice
'columns' => 'Columnas:',
'searchresultshead' => 'Búsquedas',
'resultsperpage' => 'Resultados por página:',
-'contextlines' => 'Número de líneas de contexto por resultado',
-'contextchars' => 'Caracteres de contexto por línea',
'stub-threshold' => 'Límite para formato de <a href="#" class="stub">enlace a esbozo</a> (bytes):',
'stub-threshold-disabled' => 'Desactivado',
'recentchangesdays' => 'Días a mostrar en cambios recientes:',
@@ -1359,7 +1404,7 @@ Cualquiera que conozca la clave en este campo será capaz de leer tu lista de se
'savedprefs' => 'Tus preferencias han sido guardadas.',
'timezonelegend' => 'Zona horaria:',
'localtime' => 'Hora local:',
-'timezoneuseserverdefault' => 'Usar la hora del servidor',
+'timezoneuseserverdefault' => 'Usar la hora del servidor ($1)',
'timezoneuseoffset' => 'Otra (especifica la diferencia horaria)',
'timezoneoffset' => 'Diferencia¹:',
'servertime' => 'Hora del servidor:',
@@ -1406,8 +1451,9 @@ Esto no se puede deshacer.',
'prefs-help-gender' => 'Opcional: empleado para que sea usado correctamente el género por parte del software. Esta información será pública.',
'email' => 'Correo electrónico',
'prefs-help-realname' => 'El nombre real es opcional. Si decides proporcionarlo, se usará para dar atribución a tu trabajo.',
-'prefs-help-email' => 'La dirección de correo es opcional, pero permite enviar una nueva contraseña en caso de olvidarla.
-También puede permitir a otros usuarios que te contacten a través de tu página de usuario o de tu página de discusión sin necesidad de revelar su identidad.',
+'prefs-help-email' => 'La dirección de correo electrónico es opcional, pero es necesaria para el restablecimiento de tu contraseña, en caso de que la olvides.',
+'prefs-help-email-others' => 'También puedes permitir que otros usuarios te contacten por correo-e a través de un enlace en tus páginas de usuario y discusión.
+Tu dirección de correo-e no se revela cuando otros usuarios te contactan.',
'prefs-help-email-required' => 'Es necesario proporcionar una dirección de correo electrónico.',
'prefs-info' => 'Información básica',
'prefs-i18n' => 'Internacionalización',
@@ -1532,15 +1578,15 @@ También puede permitir a otros usuarios que te contacten a través de tu págin
'right-userrights' => 'Modificar todos los derechos de usuario',
'right-userrights-interwiki' => 'Modificar los derechos de usuarios en otros wikis',
'right-siteadmin' => 'Bloquear y desbloquear la base de datos',
-'right-reset-passwords' => 'Reajustar la contraseña de otros usuarios',
'right-override-export-depth' => 'Exporta páginas incluyendo aquellas enlazadas hasta una profundidad de 5',
'right-sendemail' => 'Enviar un correo electrónico a otros 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',
-'rightsnone' => '(ninguno)',
+'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',
+'rightsnone' => '(ninguno)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'leer esta página',
@@ -1641,7 +1687,7 @@ Los archivos subidos quedarán registrados además en el [[Special:Log/upload|re
Para incluir un archivo en una página, usa un enlace como los mostrados a continuación:
* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>''' para usar el fichero en tamaño completo
-* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|texto descriptivo]]</nowiki></tt>''' para una versión de 200 pixeles de ancho en una caja en el margen izquierdo con 'texto descriptivo' como descripción
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|texto descriptivo]]</nowiki></tt>''' para una versión de 200 píxeles de ancho en una caja en el margen izquierdo con 'texto descriptivo' como descripción
* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>''' para enlazar directamente al fichero sin mostrarlo.",
'upload-permitted' => 'Tipos de archivo permitidos: $1.',
'upload-preferred' => 'Tipos de archivo preferidos: $1.',
@@ -1662,13 +1708,13 @@ Mira la [[Special:NewFiles|galería de archivos nuevos]] para una descripción v
'minlength1' => 'Los nombres de archivo deben tener al menos una letra.',
'illegalfilename' => 'El nombre de archivo «$1» contiene caracteres que no están permitidos en títulos de páginas. Por favor, renombra el archivo e intenta volver a subirlo.',
'badfilename' => 'El nombre de la imagen se ha cambiado a «$1».',
-'filetype-mime-mismatch' => 'La extensión del archivo no coincide con su tipo MIME.',
+'filetype-mime-mismatch' => 'La extensión de archivo «.$1» no coincide con el tipo detectado de MIME del archivo ($2).',
'filetype-badmime' => 'No se permite subir archivos de tipo MIME «$1».',
'filetype-bad-ie-mime' => 'No se puede subir este archivo porque Internet Explorer podría considerarlo como «$1», que es un tipo de archivo no permitido y potencialmente peligroso.',
'filetype-unwanted-type' => "'''«.$1»''' no está entre los tipos de fichero aconsejados.
{{PLURAL:$3|El único tipo aconsejado es|Los tipos aconsejados son}} $2.",
-'filetype-banned-type' => "'''«.$1»''' no está entre los tipos de fichero permitidos.
-{{PLURAL:$3|El único tipo permitido es|Los tipos permitidos son}} $2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|no es un tipo de archivo permitido|no son tipos de archivos permitidos}}.
+{{PLURAL:$3|El tipo de archivo permitido es|Los tipos de archivos permitidos son}} $2.',
'filetype-missing' => 'El archivo no tiene extensión (como «.jpg»).',
'empty-file' => 'El archivo que enviaste estaba vacío.',
'file-too-large' => 'El archivo que enviste era demasiado grande.',
@@ -1684,6 +1730,7 @@ Mira la [[Special:NewFiles|galería de archivos nuevos]] para una descripción v
'large-file' => 'Se recomienda que los archivos no sean mayores de $1; este archivo ocupa $2.',
'largefileserver' => 'El tamaño de este archivo es mayor del que este servidor admite por configuración.',
'emptyfile' => 'El archivo que has intentado subir parece estar vacío; por favor, verifica que realmente se trate del archivo que intentabas subir.',
+'windows-nonascii-filename' => 'Este wiki no admite nombres de archivo con caracteres especiales.',
'fileexists' => "Ya existe un archivo con este nombre, por favor comprueba '''<tt>[[:$1]]</tt>''' si no estás seguro de querer cambiarlo.
[[$1|thumb]]",
'filepageexists' => "La página de descripción de este archivo ya ha sido creada en '''<tt>[[:$1]]</tt>''', pero no existe actualmente ningún fichero con este nombre.
@@ -1717,6 +1764,8 @@ Si todavía quiere subir su archivo, por favor, regrese a la página anterior y
'uploadscripted' => 'Este archivo contiene script o código HTML que puede ser interpretado erróneamente por un navegador web.',
'uploadvirus' => '¡El archivo contiene un virus!
Detalles: $1',
+'uploadjava' => 'El archivo es un ZIP que contiene un archivo .class de Java.
+No se permite subir archivos Java, porque pueden causar que se puedan saltar restricciones de seguridad.',
'upload-source' => 'Archivo origen',
'sourcefilename' => 'Nombre del archivo origen:',
'sourceurl' => 'Dirección original:',
@@ -1726,10 +1775,6 @@ Detalles: $1',
'upload-options' => 'Opciones de carga',
'watchthisupload' => 'Vigilar este archivo',
'filewasdeleted' => 'Un archivo con este nombre se subió con anterioridad y posteriormente ha sido borrado. Deberías revisar el $1 antes de subirlo de nuevo.',
-'upload-wasdeleted' => "'''Atención: Estás subiendo un archivo que ha sido borrado previamente.'''
-
-Deberías considerar si resulta apropiado continuar cargándolo.
-A continuación se muestra el registro de borrado de este archivo:",
'filename-bad-prefix' => "El nombre del archivo que estás subiendo comienza por '''«$1»''', un nombre nada descriptivo de su contenido. Es un típico nombre de los que asignan automáticamente las cámaras digitales.
Por favor, elige un nombre más descriptivo.",
@@ -1752,12 +1797,29 @@ $1',
'upload-unknown-size' => 'Tamaño desconocido',
'upload-http-error' => 'Ha ocurrido un error HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Se encontró un error al abrir el archivo ZIP para su comprobación.',
+'zip-wrong-format' => 'El archivo especificado no es un archivo ZIP.',
+'zip-bad' => 'El archivo es un ZIP dañado o que no se puede leer.
+No se puede comprobar su seguridad.',
+'zip-unsupported' => 'El archivo es un archivo que utiliza características ZIP no compatibles con MediaWiki.
+No puede comprobarse adecuadamente su seguridad.',
+
+# Special:UploadStash
+'uploadstash' => 'Ficheros escondidos',
+'uploadstash-summary' => 'Esta página da acceso a los ficheros enviados (o que están en el proceso de envío) pero que aún no han sido publicados en la wiki. Estos ficheros no son visibles para nadie, excepto para el usuario que los envió.',
+'uploadstash-clear' => 'Borrar los ficheros escondidos',
+'uploadstash-nofiles' => 'No tienes archivos escondidos.',
+'uploadstash-badtoken' => 'No fue posible ejecutar esa operación, tal vez porque sus credenciales de edición expiraron. Reinténtelo.',
+'uploadstash-errclear' => 'El borrado de los archivos no tuvo éxito.',
+'uploadstash-refresh' => 'Actualizar la lista de archivos',
+
# img_auth script messages
'img-auth-accessdenied' => 'Acceso denegado',
'img-auth-nopathinfo' => 'Falta PATH_INFO.
-Tu servidor no está configurado para pasar esta información.
-Puede que este basado en CGI y no sea compatible con img_auth.
-Véase http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+Tu servidor no está configurado para proporcionar esta información.
+Puede que esté basado en CGI y no sea compatible con img_auth.
+Véase [//www.mediawiki.org/wiki/Manual:Image_Authorization image authorization.]',
'img-auth-notindir' => 'Ruta solicitad no esá en el directorio de cargas configurado',
'img-auth-badtitle' => 'Incapaz de construir un título válido de «$1».',
'img-auth-nologinnWL' => 'No has iniciado sesión y «$1» no está en la lista blanca.',
@@ -1834,7 +1896,7 @@ La lista siguiente sólo muestra {{PLURAL:$1|la primera página que enlaza|las p
También puedes consultar la [[Special:WhatLinksHere/$2|lista completa]].',
'nolinkstoimage' => 'No hay páginas que enlacen a esta imagen.',
'morelinkstoimage' => 'Vea [[Special:WhatLinksHere/$1|más enlaces]] a este archivo.',
-'redirectstofile' => '{{PLURAL:$1|El siguiente fichero redirige|Los siguientes $1 ficheros redirigen}} a este:',
+'linkstoimage-redirect' => '$1 (archivo de redirección) $2',
'duplicatesoffile' => '{{PLURAL:$1|El siguiente archivo es un duplicado|Los siguientes $1 archivos son duplicados}} de éste ([[Special:FileDuplicateSearch/$2|más detalles]]):',
'sharedupload' => 'Este archivo es de $1 y puede ser usado por otros proyectos.',
'sharedupload-desc-there' => 'Este archivo es de $1 y puede ser usado por otros proyectos.
@@ -1923,18 +1985,19 @@ Entrada: contenttype/subtype, p. ej. <tt>image/jpeg</tt>.',
'statistics-users-active-desc' => 'Usuarios que han ejecutado una acción en {{PLURAL:$1|el último día|los últimos $1 días}}',
'statistics-mostpopular' => 'Páginas más vistas',
-'disambiguations' => 'Páginas de desambiguación',
+'disambiguations' => 'Páginas que enlazan con páginas de desambiguación',
'disambiguationspage' => 'Template:Desambiguación',
'disambiguations-text' => "Las siguientes páginas enlazan con una '''página de desambiguación'''.
En lugar de ello deberían enlazar con el tema apropiado.<br />
Una página es considerada página de desambiguación si utiliza la plantilla que está enlazada desde [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Redirecciones dobles',
-'doubleredirectstext' => 'Esta página contiene una lista de páginas que redirigen a otras páginas de redirección.
+'doubleredirects' => 'Redirecciones dobles',
+'doubleredirectstext' => 'Esta página contiene una lista de páginas que redirigen a otras páginas de redirección.
Cada fila contiene enlaces a la segunda y tercera redirección, así como la primera línea de la segunda redirección, en la que usualmente se encontrará el artículo «real» al que la primera redirección debería apuntar.
Las entradas <del>tachadas</del> han sido resueltas.',
-'double-redirect-fixed-move' => '[[$1]] ha sido trasladado, ahora es una redirección a [[$2]]',
-'double-redirect-fixer' => 'Corrector de redirecciones',
+'double-redirect-fixed-move' => '[[$1]] ha sido trasladado, ahora es una redirección a [[$2]]',
+'double-redirect-fixed-maintenance' => 'Corrigiendo la doble redirección desde [[$1]] a [[$2]].',
+'double-redirect-fixer' => 'Corrector de redirecciones',
'brokenredirects' => 'Redirecciones incorrectas',
'brokenredirectstext' => 'Las siguientes redirecciones enlazan a páginas que no existen:',
@@ -2011,6 +2074,7 @@ Por favor note que otros sitios web pueden vincular a un archivo con un URL dire
'pager-newer-n' => '{{PLURAL:$1|1 siguiente|$1 siguientes}}',
'pager-older-n' => '{{PLURAL:$1|1 anterior|$1 anteriores}}',
'suppress' => 'Supresor de ediciones',
+'querypage-disabled' => 'Esta página especial está deshabilitada por motivos de rendimiento.',
# Book sources
'booksources' => 'Fuentes de libros',
@@ -2065,8 +2129,9 @@ Véase también las [[Special:WantedCategories|categorías requeridas]].',
'linksearch-pat' => 'Patrón de búsqueda:',
'linksearch-ns' => 'Espacio de nombre:',
'linksearch-ok' => 'Buscar',
-'linksearch-text' => 'Se pueden usar comodines como «*.wikipedia.org».<br />
-Protocolos soportados: <tt>$1</tt>',
+'linksearch-text' => 'Se pueden usar caracteres comodín como "*.wikipedia.org".
+Es necesario, por lo menos, un dominio de nivel, por ejemplo "*.org".<br />
+Protocolos soportados: <tt>$1</tt> (no añada ninguno de estos en su búsqueda).',
'linksearch-line' => '$1 enlazado desde $2',
'linksearch-error' => 'Los comodines sólo pueden aparecer al principio del nombre de sitio.',
@@ -2127,6 +2192,10 @@ La dirección electrónica que indicaste en [[Special:Preferences|tus preferenci
'noemailtext' => 'Este usuario no ha especificado una dirección de correo electrónico válida.',
'nowikiemailtitle' => 'correos electrónicos no permitidos',
'nowikiemailtext' => 'Este usuario ha elegido no recibir correos electrónicos de otros usuarios.',
+'emailnotarget' => 'Nombre de usuario no existente o no válido para el destinatario.',
+'emailtarget' => 'Introduce el nombre de usuario del destinatario',
+'emailusername' => 'Nombre de usuario:',
+'emailusernamesubmit' => 'Enviar',
'email-legend' => 'Enviar un correo electrónico a otro usuario de {{SITENAME}}',
'emailfrom' => 'De:',
'emailto' => 'Para:',
@@ -2151,9 +2220,9 @@ La dirección electrónica que indicaste en [[Special:Preferences|tus preferenci
'watchlistanontext' => 'Para ver o editar las entradas de tu lista de seguimiento es necesario $1.',
'watchnologin' => 'No has iniciado sesión',
'watchnologintext' => 'Debes [[Special:UserLogin|iniciar sesión]] para modificar tu lista de seguimiento.',
-'addedwatch' => 'Añadido a la lista de seguimiento',
+'addwatch' => 'Añadir a la lista de seguimiento',
'addedwatchtext' => "La página «[[:$1]]» ha sido añadida a tu [[Special:Watchlist|lista de seguimiento]]. Los cambios futuros en esta página y en su página de discusión asociada se indicarán ahí, y la página aparecerá '''en negritas''' en la [[Special:RecentChanges|lista de cambios recientes]] para hacerla más fácil de detectar.",
-'removedwatch' => 'Eliminada de la lista de seguimiento',
+'removewatch' => 'Quitar de la lista de seguimiento',
'removedwatchtext' => 'La página «[[:$1]]» ha sido eliminada de tu [[Special:Watchlist|lista de seguimiento]].',
'watch' => 'Vigilar',
'watchthispage' => 'Vigilar esta página',
@@ -2174,8 +2243,9 @@ La dirección electrónica que indicaste en [[Special:Preferences|tus preferenci
'watchlist-options' => 'Opciones de la lista de seguimiento',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Vigilando...',
-'unwatching' => 'Eliminando de la lista de seguimiento...',
+'watching' => 'Vigilando...',
+'unwatching' => 'Eliminando de la lista de seguimiento...',
+'watcherrortext' => 'Ocurrió un error al cambiar la configuración de tu lista de seguimiento para «$1».',
'enotif_mailer' => 'Notificación por correo de {{SITENAME}}',
'enotif_reset' => 'Marcar todas las páginas visitadas',
@@ -2207,13 +2277,13 @@ También puedes reestablecer las notificaciones para todas tus páginas vigilada
--
Para cambiar las opciones de tu lista de seguimiento, visita:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Para borrar la página de tu lista de seguimiento visita:
$UNWATCHURL
Retroalimentación y asistencia adicional:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Borrar esta página',
@@ -2230,7 +2300,7 @@ Por favor, confirma que realmente quieres hacer eso, que entiendes las
consecuencias, y que lo estás haciendo de acuerdo con [[{{MediaWiki:Policy-url}}|las políticas]].',
'actioncomplete' => 'Acción completada',
'actionfailed' => 'Acción fallida',
-'deletedtext' => '«<nowiki>$1</nowiki>» ha sido borrado.
+'deletedtext' => '«$1» ha sido borrado.
Véase $2 para un registro de los borrados recientes.',
'deletedarticle' => 'borró «[[$1]]»',
'suppressedarticle' => 'suprimió «[[$1]]»',
@@ -2287,7 +2357,7 @@ Véase [[Special:ProtectedPages|la lista de páginas protegidas]] para ver las p
'protect_expiry_invalid' => 'Tiempo de caducidad incorrecto.',
'protect_expiry_old' => 'El tiempo de expiración está en el pasado.',
'protect-unchain-permissions' => 'Desbloquear opciones de protección adicionales',
-'protect-text' => "Puedes ver y modificar el nivel de protección de la página '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Puedes ver y modificar el nivel de protección de la página '''$1'''.",
'protect-locked-blocked' => "No puede cambiar los niveles de protección estando bloqueado. A continuación se muestran las opciones actuales de la página '''$1''':",
'protect-locked-dblock' => "Los niveles de protección no se pueden cambiar debido a un bloqueo activo de la base de datos.
A continuación se muestran las opciones actuales de la página '''$1''':",
@@ -2340,7 +2410,7 @@ A continuación se muestran las opciones actuales de la página '''$1''':",
'undeletepagetext' => '{{PLURAL:$1|La siguiente página ha sido borrada pero aún está en el archivo y puede ser restaurada.|Las siguientes $1 páginas han sido borradas pero aún están en el archivo y pueden ser restauradas.}}
Puede que el archivo se limpie periódicamente.',
'undelete-fieldset-title' => 'Restaurar revisiones',
-'undeleteextrahelp' => "Para restaurar todas las revisiones, deja todas las casillas sin seleccionar y pulsa '''''Restaurar'''''. Para restaurar sólo algunas revisiones, marca las revisiones que quieres restaurar y pulsa '''''Restaurar'''''. Haciendo clic en al botón '''''Cancelar''''', se deseleccionarán todas las casillas y eliminará el comentario que hayas escrito.",
+'undeleteextrahelp' => "Para restaurar todo el historial de la página, deja todas las casillas sin seleccionar y pulsa '''''{{int:undeletebtn}}'''''. Para realizar una restauración selectiva, marca las revisiones a ser restauradas y pulsa '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|revisión|revisiones}} archivadas',
'undeletehistory' => 'Si restauras una página, todas sus revisiones serán restauradas al historial.
Si una nueva página con el mismo nombre ha sido creada desde que se borró la original, las versiones restauradas aparecerán como historial anterior, y la revisión actual de la página actual no se reemplazará automáticamente.',
@@ -2383,9 +2453,12 @@ $1',
'undelete-show-file-submit' => 'Sí',
# Namespace form on various pages
-'namespace' => 'Espacio de nombres:',
-'invert' => 'Invertir selección',
-'blanknamespace' => '(Principal)',
+'namespace' => 'Espacio de nombres:',
+'invert' => 'Invertir selección',
+'tooltip-invert' => 'Marca esta casilla para ocultar los cambios a las páginas dentro del espacio de nombres seleccionado (y el espacio de nombres asociado si está activada)',
+'namespace_association' => 'Espacio de nombres asociado',
+'tooltip-namespace_association' => 'Marca esta casilla para incluir también el espacio de nombres de discusión asociado con el espacio de nombres seleccionado',
+'blanknamespace' => '(Principal)',
# Contributions
'contributions' => 'Contribuciones del usuario',
@@ -2434,13 +2507,15 @@ A continuación se muestra la última entrada del registro de bloqueos para mayo
'whatlinkshere-filters' => 'Filtros',
# Block/unblock
+'autoblockid' => 'Bloqueo automático #$1',
+'block' => 'Bloquear usuario',
+'unblock' => 'Desbloquear usuario',
'blockip' => 'Bloquear usuario',
'blockip-title' => 'Bloquear usuario',
'blockip-legend' => 'Bloquear usuario',
'blockiptext' => 'Usa el siguiente formulario para bloquear el acceso de escritura desde una dirección IP específica o nombre de usuario.
Esto debería hacerse sólo para prevenir vandalismos, y de acuerdo a las [[{{MediaWiki:Policy-url}}|políticas]].
Explica la razón específica del bloqueo (por ejemplo, citando las páginas en particular que han sido objeto de vandalismo).',
-'ipaddress' => 'Dirección IP:',
'ipadressorusername' => 'Dirección IP o nombre de usuario',
'ipbexpiry' => 'Caduca dentro de',
'ipbreason' => 'Motivo:',
@@ -2453,7 +2528,7 @@ Explica la razón específica del bloqueo (por ejemplo, citando las páginas en
** Comportamiento intimidatorio u hostil
** Abusar de múltiples cuentas
** Nombre de usuario inaceptable',
-'ipbanononly' => 'Bloquear sólo usuarios anónimos',
+'ipb-hardblock' => 'Impedir que los usuarios identificados editen desde esta dirección IP',
'ipbcreateaccount' => 'Prevenir la creación de cuentas de usuario',
'ipbemailban' => 'Prevenir que el usuario envíe correo electrónico',
'ipbenableautoblock' => 'Bloquear automáticamente la dirección IP usada por este usuario y cualquier IP posterior desde la cual intente editar',
@@ -2464,12 +2539,15 @@ Explica la razón específica del bloqueo (por ejemplo, citando las páginas en
'ipbotherreason' => 'Otra razón:',
'ipbhidename' => 'Ocultar nombre de usuario de ediciones y listas',
'ipbwatchuser' => 'Vigilar las páginas de usuario y de discusión de este usuario',
-'ipballowusertalk' => 'Permitir a este usuario editar su propia página de discusión mientras está bloqueado',
+'ipb-disableusertalk' => 'Impedir que este usuario edite su propia página de discusión mientras esté bloqueado',
'ipb-change-block' => 'Rebloquear al usuario con estos datos',
+'ipb-confirm' => 'Confirmar bloqueo',
'badipaddress' => 'La dirección IP no tiene el formato correcto.',
'blockipsuccesssub' => 'Bloqueo realizado con éxito',
'blockipsuccesstext' => '"[[Special:Contributions/$1|$1]]" ha sido bloqueado.<br />
Véase la [[Special:IPBlockList|lista de bloqueos]] para revisarlo.',
+'ipb-blockingself' => '¡Estás a punto de bloquearte a ti mismo! ¿Estás seguro de que quieres hacerlo?',
+'ipb-confirmhideuser' => 'Estás a punto de bloquear un usuario con la opción de supresión activada. Esto suprimirá el nombre de usuario en todas las listas y entradas de registro. ¿Estás seguro de que deseas proceder?',
'ipb-edit-dropdown' => 'Editar motivo del bloqueo',
'ipb-unblock-addr' => 'Desbloquear $1',
'ipb-unblock' => 'Desbloquear un usuario o una IP',
@@ -2479,17 +2557,23 @@ Véase la [[Special:IPBlockList|lista de bloqueos]] para revisarlo.',
'unblockiptext' => 'Use el formulario a continuación para devolver los permisos de escritura a una dirección IP que ha sido bloqueada.',
'ipusubmit' => 'Desactivar este bloqueo',
'unblocked' => '[[User:$1|$1]] ha sido {{GENDER:$1|desbloqueado|desbloqueada}}',
+'unblocked-range' => '$1 ha sido desbloqueado',
'unblocked-id' => 'Se ha eliminado el bloqueo $1',
+'blocklist' => 'Usuarios bloqueados',
'ipblocklist' => 'Usuarios bloqueados',
'ipblocklist-legend' => 'Encontrar a un usuario bloqueado',
-'ipblocklist-username' => 'Nombre de usuario o dirección IP:',
-'ipblocklist-sh-userblocks' => '$1 bloqueos de cuentas',
-'ipblocklist-sh-tempblocks' => '$1 bloqueos temporales',
-'ipblocklist-sh-addressblocks' => '$1 bloqueos de una sola dirección IP',
+'blocklist-userblocks' => 'Ocultar bloqueos de cuenta',
+'blocklist-tempblocks' => 'Ocultar bloqueos temporales',
+'blocklist-addressblocks' => 'Ocultar bloqueos de una sola dirección IP',
+'blocklist-timestamp' => 'Marca de tiempo',
+'blocklist-target' => 'Destino',
+'blocklist-expiry' => 'Caduca',
+'blocklist-by' => 'Bloqueo de administrador',
+'blocklist-params' => 'Parámetros de bloqueo',
+'blocklist-reason' => 'Motivo',
'ipblocklist-submit' => 'Buscar',
'ipblocklist-localblock' => 'Bloqueo local',
'ipblocklist-otherblocks' => 'Otros {{PLURAL:$1|bloqueo| bloqueos}}',
-'blocklistline' => '$1, $2 bloqueó a $3 ($4)',
'infiniteblock' => 'infinito',
'expiringblock' => 'expira el $1 a las $2',
'anononlyblock' => 'sólo anón.',
@@ -2511,7 +2595,7 @@ Véase la [[Special:IPBlockList|lista de bloqueos]] para revisarlo.',
'reblock-logentry' => 'cambió el bloqueo para [[$1]] con una caducidad de $2 $3',
'blocklogtext' => 'Esto es un registro de bloqueos y desbloqueos de usuarios.
Las direcciones bloqueadas automáticamente no aparecen aquí.
-Consulte la [[Special:IPBlockList|lista de direcciones IP bloqueadas]] para ver la lista de bloqueos vigente.',
+Consulte la [[Special:BlockList|lista de direcciones IP bloqueadas]] para ver la lista de bloqueos vigente.',
'unblocklogentry' => 'desbloqueó a $1',
'block-log-flags-anononly' => 'sólo anónimos',
'block-log-flags-nocreate' => 'desactivada la creación de cuentas',
@@ -2525,9 +2609,9 @@ Consulte la [[Special:IPBlockList|lista de direcciones IP bloqueadas]] para ver
'ipb_expiry_temp' => 'Los bloqueos a nombres de usuario ocultos deben ser permanentes.',
'ipb_hide_invalid' => 'Incapaz de suprimir esta cuenta; puede tener muchas ediciones.',
'ipb_already_blocked' => '"$1" ya se encuentra bloqueado.',
-'ipb-needreblock' => '== Ya está bloqueado ==
-$1 ya está bloqueado. ¿Quieres cambiar el bloqueo?',
+'ipb-needreblock' => '$1 ya está bloqueado. ¿Quieres cambiar el bloqueo?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Otro bloqueo|Otros bloqueos}}',
+'unblock-hideuser' => 'No se puede desbloquear a este usuario, porque su nombre de usuario está oculto.',
'ipb_cant_unblock' => "'''Error''': Número ID $1 de bloqueo no encontrado. Pudo haber sido desbloqueado ya.",
'ipb_blocked_as_range' => 'Error: la dirección IP $1 no está bloqueada directamente y no puede ser desbloqueada.
Sin embargo, está bloqueada como parte del rango $2, que puede ser desbloqueado.',
@@ -2562,6 +2646,7 @@ Sin embargo, está bloqueada como parte del rango $2, que puede ser desbloqueado
'unlockdbsuccesstext' => 'La base de datos de {{SITENAME}} ha sido desbloqueada.',
'lockfilenotwritable' => 'El archivo-cerrojo de la base de datos no tiene permiso de escritura. Para bloquear o desbloquear la base de datos, este archivo tiene que ser escribible por el servidor web.',
'databasenotlocked' => 'La base de datos no está bloqueada.',
+'lockedbyandtime' => '(por {{GENDER:$1|$1}} el $2 a las $3)',
# Move page
'move-page' => 'Trasladar $1',
@@ -2685,7 +2770,7 @@ En el último caso también puedes usar un enlace, por ejemplo [[{{#Special:Expo
'allmessagesdefault' => 'Texto predeterminado',
'allmessagescurrent' => 'Texto actual',
'allmessagestext' => 'Esta es una lista de mensajes del sistema disponibles en el espacio de nombres MediaWiki:
-Por favor visita [http://www.mediawiki.org/wiki/Localisation Localización MediaWiki] y [http://translatewiki.net translatewiki.net] si deseas contribuir con la localización genérica MediaWiki.',
+Por favor visita [//www.mediawiki.org/wiki/Localisation Localización MediaWiki] y [//translatewiki.net translatewiki.net] si deseas contribuir con la localización genérica MediaWiki.',
'allmessagesnotsupportedDB' => "Esta página no está disponible porque '''\$wgUseDatabaseMessages''' está deshabilitado.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtrar por estado de personalización:',
@@ -2823,7 +2908,7 @@ Puedes ver su código fuente',
'tooltip-rollback' => '«Revertir» revierte todas las ediciones del último usuario con un solo clic.',
'tooltip-undo' => '«Deshacer» revierte la edición seleccionada y abre la página de edición en el modo de previsualización.
Permite añadir una razón al resumen de edición.',
-'tooltip-preferences-save' => 'Guardar preferencias',
+'tooltip-preferences-save' => 'Guardar las preferencias',
'tooltip-summary' => 'Introduce un breve resumen',
# Stylesheets
@@ -2853,9 +2938,7 @@ Permite añadir una razón al resumen de edición.',
'vector.js' => '/* Cualquier código JavaScript escrito aquí se cargará para todos los usuarios que usen la piel Vector */',
# Metadata
-'nodublincore' => 'Metadatos Dublin Core RDF deshabilitados en este servidor.',
-'nocreativecommons' => 'Metadatos Creative Commons RDF deshabilitados en este servidor.',
-'notacceptable' => 'El servidor wiki no puede proveer los datos en un formato que su cliente (navegador) pueda entender.',
+'notacceptable' => 'El servidor wiki no puede proveer los datos en un formato que su cliente (navegador) pueda entender.',
# Attribution
'anonymous' => '{{PLURAL:$1|Usuario anónimo|Usuarios anónimos}} de {{SITENAME}}',
@@ -2879,12 +2962,17 @@ Esto podría estar causado por un enlace a un sitio externo incluido en la lista
'spam_blanking' => 'Todas las revisiones contienen enlaces a $1, blanqueando',
# Info page
-'infosubtitle' => 'Información de la página',
-'numedits' => 'Número de ediciones (artículo): $1',
-'numtalkedits' => 'Número de ediciones (página de discusión): $1',
-'numwatchers' => 'Número de usuarios vigilándola: $1',
-'numauthors' => 'Número de autores distintos (artículo): $1',
-'numtalkauthors' => 'Número de autores distintos (página de discusión): $1',
+'pageinfo-title' => 'Información para «$1»',
+'pageinfo-header-edits' => 'Ediciones',
+'pageinfo-header-watchlist' => 'Lista de seguimiento',
+'pageinfo-header-views' => 'Vistas',
+'pageinfo-subjectpage' => 'Página',
+'pageinfo-talkpage' => 'Página de discusión',
+'pageinfo-watchers' => 'Número de usuarios vigilándola',
+'pageinfo-edits' => 'Número de ediciones',
+'pageinfo-authors' => 'Número de autores distintos',
+'pageinfo-views' => 'Número de vistas',
+'pageinfo-viewsperedit' => 'Vistas por edición',
# Skin names
'skinname-standard' => 'Estándar',
@@ -2897,25 +2985,6 @@ Esto podría estar causado por un enlace a un sitio externo incluido en la lista
'skinname-modern' => 'Moderna',
'skinname-vector' => 'Vector',
-# Math options
-'mw_math_png' => 'Renderizar siempre PNG',
-'mw_math_simple' => 'HTML si es muy simple, si no, PNG',
-'mw_math_html' => 'HTML si es posible, si no, PNG',
-'mw_math_source' => 'Dejar como TeX (para navegadores de texto)',
-'mw_math_modern' => 'Recomendado para navegadores modernos',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'No se pudo entender',
-'math_unknown_error' => 'error desconocido',
-'math_unknown_function' => 'función desconocida',
-'math_lexing_error' => 'error léxico',
-'math_syntax_error' => 'error de sintaxis',
-'math_image_error' => 'La conversión a PNG ha fallado; comprueba que latex, dvips, gs, y convert estén instalados correctamente',
-'math_bad_tmpdir' => 'No se puede escribir o crear el directorio temporal de <em>math</em>',
-'math_bad_output' => 'No se puede escribir o crear el directorio de salida de <em>math</em>',
-'math_notexvc' => 'Falta el ejecutable de <strong>texvc</strong>. Por favor, lea <em>math/README</em> para configurarlo.',
-
# Patrolling
'markaspatrolleddiff' => 'Marcar como revisado',
'markaspatrolledtext' => 'Marcar este artículo como revisado',
@@ -2951,22 +3020,25 @@ $1',
'nextdiff' => 'Edición siguiente →',
# Media information
-'mediawarning' => "'''Atención''': Este fichero puede contener código malicioso.
+'mediawarning' => "'''Atención''': Este fichero puede contener código malicioso.
Ejecutarlo podría comprometer la seguridad de su equipo.",
-'imagemaxsize' => "Límite de tamaño de imagen:<br />''(para páginas de descripción de archivo)''",
-'thumbsize' => 'Tamaño de las vistas en miniatura:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:|página|páginas}}',
-'file-info' => 'tamaño de archivo: $1; tipo MIME: $2',
-'file-info-size' => '$1 × $2 píxeles; tamaño de archivo: $3; tipo MIME: $4',
-'file-nohires' => '<small>No disponible a mayor resolución.</small>',
-'svg-long-desc' => 'archivo SVG, nominalmente $1 × $2 píxeles, tamaño de archivo: $3',
-'show-big-image' => 'Resolución original',
-'show-big-image-thumb' => '<small>Tamaño de esta vista previa: $1 × $2 píxeles</small>',
-'file-info-gif-looped' => 'bucleado',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frames}}',
-'file-info-png-looped' => 'bucleado',
-'file-info-png-repeat' => 'reproducido $1 {{PLURAL:$1|vez|veces}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|marco|marcos}}',
+'imagemaxsize' => "Límite de tamaño de imagen:<br />''(para páginas de descripción de archivo)''",
+'thumbsize' => 'Tamaño de las vistas en miniatura:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:|página|páginas}}',
+'file-info' => 'tamaño de archivo: $1; tipo MIME: $2',
+'file-info-size' => '$1 × $2 píxeles; tamaño de archivo: $3; tipo MIME: $4',
+'file-info-size-pages' => '$1× $2 píxeles, tamaño de archivo: $3, tipo MIME: $4, $5 {{PLURAL:$5|página|páginas}}',
+'file-nohires' => '<small>No disponible a mayor resolución.</small>',
+'svg-long-desc' => 'archivo SVG, nominalmente $1 × $2 píxeles, tamaño de archivo: $3',
+'show-big-image' => 'Resolución original',
+'show-big-image-preview' => '<small>Tamaño de esta previsualización: $1.</small>',
+'show-big-image-other' => '<small>Otras resoluciones: $1.</small>',
+'show-big-image-size' => '$1 × $2 píxeles',
+'file-info-gif-looped' => 'bucleado',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frames}}',
+'file-info-png-looped' => 'bucleado',
+'file-info-png-repeat' => 'reproducido $1 {{PLURAL:$1|vez|veces}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|marco|marcos}}',
# Special:NewFiles
'newimages' => 'Galería de imágenes nuevas',
@@ -2996,7 +3068,7 @@ Todos los demás enlaces en la misma línea se tomarán como excepciones (es dec
'metadata-help' => 'Este archivo contiene información adicional (metadatos), probablemente añadida por la cámara digital, el escáner o el programa usado para crearlo o digitalizarlo. Si el archivo ha sido modificado desde su estado original, pueden haberse perdido algunos detalles.',
'metadata-expand' => 'Mostrar datos detallados',
'metadata-collapse' => 'Ocultar datos detallados',
-'metadata-fields' => 'Los campos de metadatos EXIF que se listan en este mensaje se mostrarán en la página de descripción de la imagen aún cuando la tabla de metadatos esté plegada.
+'metadata-fields' => 'Los campos de metadatos que se listan en este mensaje se mostrarán en la página de descripción de la imagen aún cuando la tabla de metadatos esté plegada.
Existen otros campos que se mantendrán ocultos por defecto.
* make
* model
@@ -3004,7 +3076,13 @@ Existen otros campos que se mantendrán ocultos por defecto.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Anchura',
@@ -3019,13 +3097,11 @@ Existen otros campos que se mantendrán ocultos por defecto.
'exif-ycbcrpositioning' => 'Posicionamientos Y y C',
'exif-xresolution' => 'Resolución horizontal',
'exif-yresolution' => 'Resolución vertical',
-'exif-resolutionunit' => 'Unidad de resolución X e Y',
'exif-stripoffsets' => 'Localización de datos de imagen',
'exif-rowsperstrip' => 'Número de filas por banda',
'exif-stripbytecounts' => 'Bytes por banda comprimida',
'exif-jpeginterchangeformat' => 'Desplazamiento al JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytes de datos JPEG',
-'exif-transferfunction' => 'Función de transferencia',
'exif-whitepoint' => 'Cromacidad de punto blanco',
'exif-primarychromaticities' => 'Cromacidades primarias',
'exif-ycbcrcoefficients' => 'Coeficientes de la matriz de transformación de espacio de color',
@@ -3044,7 +3120,6 @@ Existen otros campos que se mantendrán ocultos por defecto.
'exif-compressedbitsperpixel' => 'Modo de compresión de la imagen',
'exif-pixelydimension' => 'Ancho de la imagen',
'exif-pixelxdimension' => 'Altura de la imagen',
-'exif-makernote' => 'Notas del fabricante',
'exif-usercomment' => 'Comentarios de usuario',
'exif-relatedsoundfile' => 'Archivo de audio relacionado',
'exif-datetimeoriginal' => 'Fecha y hora de la generación de los datos',
@@ -3058,7 +3133,6 @@ Existen otros campos que se mantendrán ocultos por defecto.
'exif-exposureprogram' => 'Programa de exposición',
'exif-spectralsensitivity' => 'Sensibilidad espectral',
'exif-isospeedratings' => 'Calificación de velocidad ISO',
-'exif-oecf' => 'Factor de conversión optoelectrónica',
'exif-shutterspeedvalue' => 'Velocidad de obturación APEX',
'exif-aperturevalue' => 'Apertura APEX',
'exif-brightnessvalue' => 'Brillo APEX',
@@ -3071,7 +3145,6 @@ Existen otros campos que se mantendrán ocultos por defecto.
'exif-focallength' => 'Longitud de la lente focal',
'exif-subjectarea' => 'Ãrea del sujeto',
'exif-flashenergy' => 'Energía del flash',
-'exif-spatialfrequencyresponse' => 'Respuesta de frecuencia espacial',
'exif-focalplanexresolution' => 'Resolución X plano focal',
'exif-focalplaneyresolution' => 'Resolución Y plano focal',
'exif-focalplaneresolutionunit' => 'Unidad de resolución del plano focal',
@@ -3080,7 +3153,6 @@ Existen otros campos que se mantendrán ocultos por defecto.
'exif-sensingmethod' => 'Método de sensor',
'exif-filesource' => 'Fuente de archivo',
'exif-scenetype' => 'Tipo de escena',
-'exif-cfapattern' => 'Patrón CFA',
'exif-customrendered' => 'Procesador personalizado de imagen',
'exif-exposuremode' => 'Modo de exposición',
'exif-whitebalance' => 'Balance de blanco',
@@ -3125,10 +3197,79 @@ Existen otros campos que se mantendrán ocultos por defecto.
'exif-gpsareainformation' => 'Nombre de la área GPS',
'exif-gpsdatestamp' => 'Fecha GPS',
'exif-gpsdifferential' => 'Corrección diferencial de GPS',
+'exif-jpegfilecomment' => 'Comentario de archivo JPEG',
+'exif-keywords' => 'Palabras clave',
+'exif-worldregioncreated' => 'Región del mundo en la que se tomó la imagen',
+'exif-countrycreated' => 'País en el que se tomó la imagen',
+'exif-countrycodecreated' => 'Código para el país en el que la imagen fue tomada',
+'exif-provinceorstatecreated' => 'Provincia o estado en el que la imagen fue tomada',
+'exif-citycreated' => 'Ciudad en la que se tomó la imagen',
+'exif-sublocationcreated' => 'Región de la ciudad en la que la foto fue tomada',
+'exif-worldregiondest' => 'Región del mundo mostrada',
+'exif-countrydest' => 'País mostrado',
+'exif-countrycodedest' => 'Código de país mostrado',
+'exif-provinceorstatedest' => 'Provincia o estado mostrado',
+'exif-citydest' => 'Ciudad mostrada',
+'exif-sublocationdest' => 'Región de la ciudad mostrada',
'exif-objectname' => 'Título breve',
+'exif-specialinstructions' => 'Instrucciones especiales',
+'exif-headline' => 'Encabezado',
+'exif-credit' => 'Crédito/proveedor',
+'exif-source' => 'Fuente',
+'exif-editstatus' => 'Estado editorial de la imagen',
+'exif-urgency' => 'Urgencia',
+'exif-fixtureidentifier' => 'Nome del elemento habitual',
+'exif-locationdest' => 'Ubicación mostrada',
+'exif-locationdestcode' => 'Código de la ubicación mostrada',
+'exif-objectcycle' => 'Hora del día para la cual está destinado este archivo',
+'exif-contact' => 'Información de contacto',
+'exif-writer' => 'Escritor',
+'exif-languagecode' => 'Idioma',
+'exif-iimversion' => 'Versión IIM',
+'exif-iimcategory' => 'Categoría',
+'exif-iimsupplementalcategory' => 'Categorías suplementarias',
+'exif-datetimeexpires' => 'No usar después de',
+'exif-datetimereleased' => 'Lanzado el',
+'exif-originaltransmissionref' => 'Código de ubicación de transmisión original',
+'exif-identifier' => 'Identificador',
+'exif-lens' => 'Lente utilizada',
+'exif-serialnumber' => 'Número de serie de la cámara',
+'exif-cameraownername' => 'Propietario de la cámara',
+'exif-label' => 'Etiqueta',
+'exif-datetimemetadata' => 'Fecha en la cual fueron modificados por última vez los metadatos',
+'exif-nickname' => 'Nombre informal de la imagen',
+'exif-rating' => 'Valoración (sobre 5)',
+'exif-rightscertificate' => 'Certificado de gestión de derechos',
+'exif-copyrighted' => 'Estado de copyright',
+'exif-copyrightowner' => 'Titular del copyright',
+'exif-usageterms' => 'Términos de uso',
+'exif-webstatement' => 'Declaración de derechos de autor en línea',
+'exif-originaldocumentid' => 'Id. único del documento original',
+'exif-licenseurl' => 'URL para la licencia de copyright',
+'exif-morepermissionsurl' => 'Información de licencia alternativa',
+'exif-attributionurl' => 'Cuando reutilices este trabajo, por favor enlaza a',
+'exif-preferredattributionname' => 'Al volver a utilizar este trabajo, por favor da crédito',
+'exif-pngfilecomment' => 'Comentario de archivo PNG',
+'exif-disclaimer' => 'Aviso legal',
+'exif-contentwarning' => 'Advertencia de contenido',
+'exif-giffilecomment' => 'Comentario de archivo GIF',
+'exif-intellectualgenre' => 'Tipo de elemento',
+'exif-subjectnewscode' => 'Código de asunto',
+'exif-scenecode' => 'Código de escena IPTC',
+'exif-event' => 'Evento representado',
+'exif-organisationinimage' => 'Organización representada',
+'exif-personinimage' => 'Persona representada',
+'exif-originalimageheight' => 'Altura de la imagen antes de que fuera recortada',
+'exif-originalimagewidth' => 'Ancho de la imagen antes de que fuera recortada',
# EXIF attributes
'exif-compression-1' => 'Sin comprimir',
+'exif-compression-2' => 'CCITT Group 3 1-Dimensional Modified Huffman run length encoding',
+'exif-compression-3' => 'Codificación de fax CCITT grupo 3',
+'exif-compression-4' => 'Codificación de fax CCITT grupo 4',
+
+'exif-copyrighted-true' => 'Copyrighted',
+'exif-copyrighted-false' => 'Dominio público',
'exif-unknowndate' => 'Fecha desconocida',
@@ -3144,6 +3285,8 @@ Existen otros campos que se mantendrán ocultos por defecto.
'exif-planarconfiguration-1' => 'formato panorámico',
'exif-planarconfiguration-2' => 'formato plano',
+'exif-colorspace-65535' => 'Sin calibrar',
+
'exif-componentsconfiguration-0' => 'no existe',
'exif-exposureprogram-0' => 'No definido',
@@ -3257,6 +3400,10 @@ Existen otros campos que se mantendrán ocultos por defecto.
'exif-gpslongitude-e' => 'Longitud este',
'exif-gpslongitude-w' => 'Longitud oeste',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metro|metros}} sobre el nivel del mar',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metro|metros}} bajo el nivel del mar',
+
'exif-gpsstatus-a' => 'Medida en progreso',
'exif-gpsstatus-v' => 'Interoperabilidad de medida',
@@ -3268,21 +3415,73 @@ Existen otros campos que se mantendrán ocultos por defecto.
'exif-gpsspeed-m' => 'Millas por hora',
'exif-gpsspeed-n' => 'Nudos',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilómetros',
+'exif-gpsdestdistance-m' => 'Millas',
+'exif-gpsdestdistance-n' => 'Millas náuticas',
+
+'exif-gpsdop-excellent' => 'Excelente ($1)',
+'exif-gpsdop-good' => 'Bueno ( $1 )',
+'exif-gpsdop-moderate' => 'Moderado ($1)',
+'exif-gpsdop-fair' => 'Pasable ($1)',
+'exif-gpsdop-poor' => 'Pobre ( $1 )',
+
+'exif-objectcycle-a' => 'Sólo por la mañana',
+'exif-objectcycle-p' => 'Sólo por el atardecer',
+'exif-objectcycle-b' => 'Tanto por la mañana y por la tarde',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Dirección real',
'exif-gpsdirection-m' => 'Dirección magnética',
+'exif-ycbcrpositioning-1' => 'Centrado',
+'exif-ycbcrpositioning-2' => 'Co-localizados',
+
+'exif-dc-contributor' => 'Colaboradores',
+'exif-dc-coverage' => 'Ãmbito espacial o temporal del medio',
+'exif-dc-date' => 'Fecha(s)',
+'exif-dc-publisher' => 'Editorial',
+'exif-dc-relation' => 'Medios relacionados',
+'exif-dc-rights' => 'Derechos',
+'exif-dc-source' => 'Medios de origen',
+'exif-dc-type' => 'Tipo de medio',
+
+'exif-rating-rejected' => 'Rechazado',
+
+'exif-isospeedratings-overflow' => 'Más de 65535',
+
+'exif-iimcategory-ace' => 'Arte, cultura y entretenimiento',
+'exif-iimcategory-clj' => 'Crimen y ley',
+'exif-iimcategory-dis' => 'Desastres y accidentes',
+'exif-iimcategory-fin' => 'Economía y negocios',
+'exif-iimcategory-edu' => 'Educación',
+'exif-iimcategory-evn' => 'Medio ambiente',
+'exif-iimcategory-hth' => 'Salud',
+'exif-iimcategory-hum' => 'Interés humano',
+'exif-iimcategory-lab' => 'Trabajo',
+'exif-iimcategory-lif' => 'Estilo de vida y ocio',
+'exif-iimcategory-pol' => 'Política',
+'exif-iimcategory-rel' => 'Religión y creencias',
+'exif-iimcategory-sci' => 'Ciencia y tecnología',
+'exif-iimcategory-soi' => 'Cuestiones sociales',
+'exif-iimcategory-spo' => 'Deportes',
+'exif-iimcategory-war' => 'Guerra, conflictos y disturbios',
+'exif-iimcategory-wea' => 'Clima',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Bajo ($1)',
+'exif-urgency-high' => 'Alto ($1)',
+'exif-urgency-other' => 'Prioridad definida por el usuario ($1)',
+
# External editor support
'edit-externally' => 'Editar este archivo usando una aplicación externa',
-'edit-externally-help' => '(Lee las [http://www.mediawiki.org/wiki/Manual:External_editors instrucciones de configuración] -en inglés- para más información)',
+'edit-externally-help' => '(Lee las [//www.mediawiki.org/wiki/Manual:External_editors instrucciones de configuración] -en inglés- para más información)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'todos',
-'imagelistall' => 'todas',
-'watchlistall2' => 'todos',
-'namespacesall' => 'todos',
-'monthsall' => 'todos',
-'limitall' => 'Todos',
+'watchlistall2' => 'todos',
+'namespacesall' => 'todos',
+'monthsall' => 'todos',
+'limitall' => 'Todos',
# E-mail address confirmation
'confirmemail' => 'Confirmar dirección de correo electrónico',
@@ -3355,15 +3554,22 @@ $1",
'trackbackdeleteok' => 'El trackback se borró correctamente.',
# Delete conflict
-'deletedwhileediting' => "'''Aviso''': ¡Esta página fue borrada después de que usted empezara a editar!",
-'confirmrecreate' => "El usuario [[User:$1|$1]] ([[User talk:$1|discusión]]) borró este artículo después de que tú empezaces a editarlo y dio esta razón: ''$2'' Por favor, confirma que realmente deseas crear de nuevo el artículo.",
-'recreate' => 'Crear de nuevo',
+'deletedwhileediting' => "'''Aviso''': ¡Esta página fue borrada después de que usted empezara a editar!",
+'confirmrecreate' => "El usuario [[User:$1|$1]] ([[User talk:$1|discusión]]) borró este artículo después de que tú empezaces a editarlo y dio esta razón: ''$2'' Por favor, confirma que realmente deseas crear de nuevo el artículo.",
+'confirmrecreate-noreason' => 'El usuario [[User:$1|$1]] ([[User talk:$1|discusión]]) borró esta página después de que comenzaras a editarla. Por favor confirma que realmente quieres recrear esta página.',
+'recreate' => 'Crear de nuevo',
# action=purge
'confirm_purge_button' => 'Aceptar',
'confirm-purge-top' => '¿Limpiar la caché de esta página?',
'confirm-purge-bottom' => 'Purgar una página limpia la caché y fuerza a que aparezca la versión más actual.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Aceptar',
+'confirm-watch-top' => '¿Añadir esta página a tu lista de seguimiento?',
+'confirm-unwatch-button' => 'Aceptar',
+'confirm-unwatch-top' => '¿Quitar esta página de tu lista de seguimiento?',
+
# Separators for various lists, etc.
'comma-separator' => ',&#32;',
@@ -3408,17 +3614,17 @@ Intenta usar la previsualización normal.',
'watchlistedit-noitems' => 'Tu lista de seguimiento está vacía.',
'watchlistedit-normal-title' => 'Editar lista de seguimiento',
'watchlistedit-normal-legend' => 'Borrar títulos de la lista de seguimiento',
-'watchlistedit-normal-explain' => "Los títulos de tu lista de seguimiento se muestran debajo.
-Para eliminar un título, marca la casilla junto a él, y haz clic en ''{{int:Watchlistedit-normal-submit}}''.
-También puedes [[Special:Watchlist/raw|editar la lista en crudo]].",
+'watchlistedit-normal-explain' => 'A continuación se listan las páginas en tu lista de seguimiento.
+Para quitar un título, marca la casilla junto a él, y pulsa «{{int:Watchlistedit-normal-submit}}».
+También puedes [[Special:EditWatchlist/raw|editar la lista en crudo]].',
'watchlistedit-normal-submit' => 'Borrar páginas',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 página ha sido borrada|$1 páginas han sido borradas}} de tu lista de seguimiento:',
'watchlistedit-raw-title' => 'Editar lista de seguimiento en crudo',
'watchlistedit-raw-legend' => 'Editar tu lista de seguimiento en modo texto',
-'watchlistedit-raw-explain' => 'Los títulos de tu lista de seguimiento se muestran debajo. Esta lista puede ser editada añadiendo o eliminando líneas de la lista;
+'watchlistedit-raw-explain' => 'A continuación se listan las páginas en tu lista de seguimiento. Esta lista puede editarse añadiendo o eliminando líneas de la lista;
un título por línea.
-Cuando acabes, haz clic en "{{int:Watchlistedit-raw-submit}}".
-También puedes [[Special:Watchlist/edit|usar el editor estándar]].',
+Cuando acabes, pulsa «{{int:Watchlistedit-raw-submit}}».
+También puedes [[Special:EditWatchlist|usar el editor estándar]].',
'watchlistedit-raw-titles' => 'Páginas:',
'watchlistedit-raw-submit' => 'Actualizar lista de seguimiento',
'watchlistedit-raw-done' => 'Tu lista de seguimiento se ha actualizado.',
@@ -3435,33 +3641,33 @@ También puedes [[Special:Watchlist/edit|usar el editor estándar]].',
'duplicate-defaultsort' => "'''Atención:''' La clave de ordenamiento predeterminada «$2» anula la clave de ordenamiento anterior «$1».",
# Special:Version
-'version' => 'Versión',
-'version-extensions' => 'Extensiones instaladas',
-'version-specialpages' => 'Páginas especiales',
-'version-parserhooks' => 'Extensiones del analizador sintáctico',
-'version-variables' => 'Variables',
-'version-skins' => 'Pieles',
-'version-other' => 'Otro',
-'version-mediahandlers' => 'Manejadores multimedia',
-'version-hooks' => 'Extensiones',
-'version-extension-functions' => 'Funciones de extensiones',
-'version-parser-extensiontags' => 'Etiquetas de extensiones sintácticas',
-'version-parser-function-hooks' => 'Extensiones de funciones sintácticas',
-'version-skin-extension-functions' => 'Funciones de extensión de la apariencia',
-'version-hook-name' => 'Nombre de la extensión',
-'version-hook-subscribedby' => 'Suscrito por',
-'version-version' => '(Versión $1)',
-'version-license' => 'Licencia',
-'version-poweredby-credits' => "Este wiki funciona gracias a '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'otros',
-'version-license-info' => 'MediaWiki es software libre; puedes redistribuírlo y/o modificarlo bajo los términos de la Licencia General Pública GNU publicada por la Fundación del Software Libre; ya sea la versión 2 de la licencia, o (a tu elección) cualquier versión posterior.
+'version' => 'Versión',
+'version-extensions' => 'Extensiones instaladas',
+'version-specialpages' => 'Páginas especiales',
+'version-parserhooks' => 'Extensiones del analizador sintáctico',
+'version-variables' => 'Variables',
+'version-antispam' => 'Prevención de spam',
+'version-skins' => 'Pieles',
+'version-other' => 'Otro',
+'version-mediahandlers' => 'Manejadores multimedia',
+'version-hooks' => 'Extensiones',
+'version-extension-functions' => 'Funciones de extensiones',
+'version-parser-extensiontags' => 'Etiquetas de extensiones sintácticas',
+'version-parser-function-hooks' => 'Extensiones de funciones sintácticas',
+'version-hook-name' => 'Nombre de la extensión',
+'version-hook-subscribedby' => 'Suscrito por',
+'version-version' => '(Versión $1)',
+'version-license' => 'Licencia',
+'version-poweredby-credits' => "Este wiki funciona gracias a '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'otros',
+'version-license-info' => 'MediaWiki es software libre; puedes redistribuírlo y/o modificarlo bajo los términos de la Licencia General Pública GNU publicada por la Fundación del Software Libre; ya sea la versión 2 de la licencia, o (a tu elección) cualquier versión posterior.
MediaWiki es distribuído con la esperanza de que será útil, pero SIN NINGUNA GARANTÃA; ni siquiera con la garantía implícita de COMERCIALIZACIÓN ó ADAPTACIÓN A UN PROPÓSITO PARTICULAR. Véase la Licencia Pública General GNU para mayores detalles.
-Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública General GNU] junto a este programa; si no es así, escríbale a la Fundación del Software Libre, Inc., Calle Franklin 51, Quinto Piso, Boston, MA 02110-1301, EE.UU. ó [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html léela en línea].',
-'version-software' => 'Software instalado',
-'version-software-product' => 'Producto',
-'version-software-version' => 'Versión',
+Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública General GNU] junto a este programa; si no es así, escríbale a la Fundación del Software Libre, Inc., Calle Franklin 51, Quinto Piso, Boston, MA 02110-1301, EE.UU. ó [//www.gnu.org/licenses/old-licenses/gpl-2.0.html léela en línea].',
+'version-software' => 'Software instalado',
+'version-software-product' => 'Producto',
+'version-software-version' => 'Versión',
# Special:FilePath
'filepath' => 'Ruta de archivo',
@@ -3471,22 +3677,22 @@ Has recibido [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia de la Licencia Pública
Las imágenes se muestran en resolución máxima, otros tipos de archivo se inician directamente con su programa asociado.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Búsqueda de archivos duplicados',
-'fileduplicatesearch-summary' => 'Búsqueda de archivos duplicados en base a su valor hash.
-
-Ingrese el nombre del archivo sin el prefijo "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Busca duplicados',
-'fileduplicatesearch-filename' => 'Nombre del fichero:',
-'fileduplicatesearch-submit' => 'Buscar',
-'fileduplicatesearch-info' => '$1 × $2 píxeles<br />Tamaño: $3<br />Tipo MIME: $4',
-'fileduplicatesearch-result-1' => 'El archivo «$1» no tiene duplicados idénticos.',
-'fileduplicatesearch-result-n' => 'El archivo «$1» tiene {{PLURAL:$2|1 duplicado idéntico|$2 duplicados idénticos}}.',
+'fileduplicatesearch' => 'Búsqueda de archivos duplicados',
+'fileduplicatesearch-summary' => 'Búsqueda de archivos duplicados en base a su valor hash.',
+'fileduplicatesearch-legend' => 'Busca duplicados',
+'fileduplicatesearch-filename' => 'Nombre del fichero:',
+'fileduplicatesearch-submit' => 'Buscar',
+'fileduplicatesearch-info' => '$1 × $2 píxeles<br />Tamaño: $3<br />Tipo MIME: $4',
+'fileduplicatesearch-result-1' => 'El archivo «$1» no tiene duplicados idénticos.',
+'fileduplicatesearch-result-n' => 'El archivo «$1» tiene {{PLURAL:$2|1 duplicado idéntico|$2 duplicados idénticos}}.',
+'fileduplicatesearch-noresults' => 'Ningún archivo con el nombre «$1» encontrado.',
# Special:SpecialPages
'specialpages' => 'Páginas especiales',
'specialpages-note' => '----
-* Páginas especiales normales.
-* <strong class="mw-specialpagerestricted">Páginas especiales restringidas.</strong>',
+* Páginas especiales normales
+* <span class="mw-specialpagerestricted">Páginas especiales restringidas.</span>
+* <span class="mw-specialpagecached">Páginas especiales en caché (podrían ser obsoletas).</span>',
'specialpages-group-maintenance' => 'Reportes de mantenimiento',
'specialpages-group-other' => 'Otras páginas especiales',
'specialpages-group-login' => 'Iniciar sesión / Registrarse',
diff --git a/languages/messages/MessagesEt.php b/languages/messages/MessagesEt.php
index 1f4b00b1..199b70eb 100644
--- a/languages/messages/MessagesEt.php
+++ b/languages/messages/MessagesEt.php
@@ -47,93 +47,93 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Kahekordsed_ümbersuunamised' ),
+ 'Activeusers' => array( 'Teguskasutajad' ),
+ 'Allmessages' => array( 'Kõik_sõnumid' ),
+ 'Allpages' => array( 'Kõik_leheküljed' ),
+ 'Ancientpages' => array( 'Vanimad_leheküljed' ),
+ 'Blankpage' => array( 'Tühi_leht' ),
+ 'Block' => array( 'Blokeerimine' ),
+ 'Booksources' => array( 'Raamatuotsimine', 'Otsi_raamatut' ),
'BrokenRedirects' => array( 'Vigased_ümbersuunamised' ),
- 'Disambiguations' => array( 'Täpsustusleheküljed' ),
- 'Userlogin' => array( 'Sisselogimine' ),
- 'Userlogout' => array( 'Väljalogimine' ),
+ 'Categories' => array( 'Kategooriad' ),
+ 'ChangePassword' => array( 'Parooli_muutmine', 'Muuda_parool' ),
+ 'Confirmemail' => array( 'E-posti_aadressi_kinnitamine' ),
+ 'Contributions' => array( 'Kaastöö' ),
'CreateAccount' => array( 'Konto_loomine' ),
- 'Preferences' => array( 'Eelistused' ),
- 'Watchlist' => array( 'Jälgimisloend' ),
- 'Recentchanges' => array( 'Viimased_muudatused' ),
- 'Upload' => array( 'Faili_üleslaadimine' ),
+ 'Deadendpages' => array( 'Edasipääsuta_leheküljed' ),
+ 'DeletedContributions' => array( 'Kustutatud_kaastöö' ),
+ 'Disambiguations' => array( 'Täpsustusleheküljed' ),
+ 'DoubleRedirects' => array( 'Kahekordsed_ümbersuunamised' ),
+ 'Emailuser' => array( 'E-kirja_saatmine' ),
+ 'Export' => array( 'Lehekülgede_eksport' ),
+ 'Fewestrevisions' => array( 'Vähim_muudatusi' ),
+ 'FileDuplicateSearch' => array( 'Faili_duplikaatide_otsimine', 'Otsi_faili_duplikaate' ),
+ 'Filepath' => array( 'Failitee' ),
+ 'Import' => array( 'Lehekülgede_import' ),
+ 'Invalidateemail' => array( 'E-posti_kinnituse_tühistamine', 'Tühista_e-posti_kinnitus' ),
+ 'BlockList' => array( 'Blokeerimisloend' ),
+ 'LinkSearch' => array( 'Välislinkide_otsimine', 'Otsi_välislinke' ),
+ 'Listadmins' => array( 'Ãœlemaloend' ),
+ 'Listbots' => array( 'Robotiloend' ),
'Listfiles' => array( 'Failide_loend' ),
- 'Newimages' => array( 'Uued_failid' ),
- 'Listusers' => array( 'Kasutajate_loend' ),
'Listgrouprights' => array( 'Kasutajarühma_õigused' ),
- 'Statistics' => array( 'Arvandmestik' ),
- 'Randompage' => array( 'Juhuslik_artikkel' ),
+ 'Listredirects' => array( 'Ãœmbersuunamised' ),
+ 'Listusers' => array( 'Kasutajate_loend' ),
+ 'Lockdb' => array( 'Andmebaasi_lukustamine', 'Lukusta_andmebaas' ),
+ 'Log' => array( 'Logid' ),
'Lonelypages' => array( 'Viitamata_leheküljed' ),
- 'Uncategorizedpages' => array( 'Kategoriseerimata_leheküljed' ),
- 'Uncategorizedcategories' => array( 'Kategoriseerimata_kategooriad' ),
- 'Uncategorizedimages' => array( 'Kategoriseerimata_failid' ),
- 'Uncategorizedtemplates' => array( 'Kategoriseerimata_mallid' ),
- 'Unusedcategories' => array( 'Kasutamata_kategooriad' ),
- 'Unusedimages' => array( 'Kasutamata_failid' ),
- 'Wantedpages' => array( 'Oodatud_leheküljed' ),
- 'Wantedcategories' => array( 'Oodatud_kategooriad' ),
- 'Wantedfiles' => array( 'Oodatud_failid' ),
- 'Wantedtemplates' => array( 'Oodatud_mallid' ),
+ 'Longpages' => array( 'Pikad_leheküljed' ),
+ 'MergeHistory' => array( 'Liitmisajalugu' ),
+ 'MIMEsearch' => array( 'MIME_otsing' ),
+ 'Mostcategories' => array( 'Enim_kategoriseeritud' ),
+ 'Mostimages' => array( 'Kõige_kasutatumad_failid' ),
'Mostlinked' => array( 'Kõige_viidatumad_leheküljed' ),
'Mostlinkedcategories' => array( 'Kõige_viidatumad_kategooriad' ),
'Mostlinkedtemplates' => array( 'Kõige_viidatumad_mallid' ),
- 'Mostimages' => array( 'Kõige_kasutatumad_failid' ),
- 'Mostcategories' => array( 'Enim_kategoriseeritud' ),
'Mostrevisions' => array( 'Enim_muudatusi' ),
- 'Fewestrevisions' => array( 'Vähim_muudatusi' ),
- 'Shortpages' => array( 'Lühikesed_leheküljed' ),
- 'Longpages' => array( 'Pikad_leheküljed' ),
+ 'Movepage' => array( 'Teisaldamine', 'Teisalda' ),
+ 'Mycontributions' => array( 'Minu_kaastöö' ),
+ 'Mypage' => array( 'Minu_lehekülg' ),
+ 'Mytalk' => array( 'Minu_aruteluleht' ),
+ 'Newimages' => array( 'Uued_failid' ),
'Newpages' => array( 'Uued_leheküljed' ),
- 'Ancientpages' => array( 'Vanimad_leheküljed' ),
- 'Deadendpages' => array( 'Edasipääsuta_leheküljed' ),
+ 'Popularpages' => array( 'Loetumad_leheküljed' ),
+ 'Preferences' => array( 'Eelistused' ),
+ 'Prefixindex' => array( 'Kõik_pealkirjad_eesliitega' ),
'Protectedpages' => array( 'Kaitstud_leheküljed' ),
'Protectedtitles' => array( 'Kaitstud_pealkirjad' ),
- 'Allpages' => array( 'Kõik_leheküljed' ),
- 'Prefixindex' => array( 'Kõik_pealkirjad_eesliitega' ),
- 'Ipblocklist' => array( 'Blokeerimisloend' ),
- 'Specialpages' => array( 'Erileheküljed' ),
- 'Contributions' => array( 'Kaastöö' ),
- 'Emailuser' => array( 'E-kirja_saatmine' ),
- 'Confirmemail' => array( 'E-posti_aadressi_kinnitamine' ),
- 'Whatlinkshere' => array( 'Lingid_siia' ),
+ 'Randompage' => array( 'Juhuslik_artikkel' ),
+ 'Randomredirect' => array( 'Juhuslik_ümbersuunamine' ),
+ 'Recentchanges' => array( 'Viimased_muudatused' ),
'Recentchangeslinked' => array( 'Seotud_muudatused' ),
- 'Movepage' => array( 'Teisaldamine', 'Teisalda' ),
- 'Booksources' => array( 'Raamatuotsimine', 'Otsi_raamatut' ),
- 'Categories' => array( 'Kategooriad' ),
- 'Export' => array( 'Lehekülgede_eksport' ),
- 'Version' => array( 'Versioon' ),
- 'Allmessages' => array( 'Kõik_sõnumid' ),
- 'Log' => array( 'Logid' ),
- 'Blockip' => array( 'Blokeerimine' ),
+ 'Revisiondelete' => array( 'Muudatuse_kustutamine', 'Kustuta_muudatus' ),
+ 'Search' => array( 'Otsimine', 'Otsi' ),
+ 'Shortpages' => array( 'Lühikesed_leheküljed' ),
+ 'Specialpages' => array( 'Erileheküljed' ),
+ 'Statistics' => array( 'Arvandmestik' ),
+ 'Tags' => array( 'Märgised' ),
+ 'Uncategorizedcategories' => array( 'Kategoriseerimata_kategooriad' ),
+ 'Uncategorizedimages' => array( 'Kategoriseerimata_failid' ),
+ 'Uncategorizedpages' => array( 'Kategoriseerimata_leheküljed' ),
+ 'Uncategorizedtemplates' => array( 'Kategoriseerimata_mallid' ),
'Undelete' => array( 'Lehekülje_taastamine', 'Taasta_lehekülg' ),
- 'Import' => array( 'Lehekülgede_import' ),
- 'Lockdb' => array( 'Andmebaasi_lukustamine', 'Lukusta_andmebaas' ),
'Unlockdb' => array( 'Andmebaasi_avamine', 'Ava_andmebaas' ),
- 'Userrights' => array( 'Kasutaja_õigused' ),
- 'MIMEsearch' => array( 'MIME_otsing' ),
- 'FileDuplicateSearch' => array( 'Faili_duplikaatide_otsimine', 'Otsi_faili_duplikaate' ),
- 'Unwatchedpages' => array( 'Jälgimata_leheküljed' ),
- 'Listredirects' => array( 'Ãœmbersuunamised' ),
- 'Revisiondelete' => array( 'Muudatuse_kustutamine', 'Kustuta_muudatus' ),
+ 'Unusedcategories' => array( 'Kasutamata_kategooriad' ),
+ 'Unusedimages' => array( 'Kasutamata_failid' ),
'Unusedtemplates' => array( 'Kasutamata_mallid' ),
- 'Randomredirect' => array( 'Juhuslik_ümbersuunamine' ),
- 'Mypage' => array( 'Minu_lehekülg' ),
- 'Mytalk' => array( 'Minu_aruteluleht' ),
- 'Mycontributions' => array( 'Minu_kaastöö' ),
- 'Listadmins' => array( 'Ãœlemaloend' ),
- 'Listbots' => array( 'Robotiloend' ),
- 'Popularpages' => array( 'Loetumad_leheküljed' ),
- 'Search' => array( 'Otsimine', 'Otsi' ),
- 'Resetpass' => array( 'Parooli_muutmine', 'Muuda_parool' ),
+ 'Unwatchedpages' => array( 'Jälgimata_leheküljed' ),
+ 'Upload' => array( 'Faili_üleslaadimine' ),
+ 'Userlogin' => array( 'Sisselogimine' ),
+ 'Userlogout' => array( 'Väljalogimine' ),
+ 'Userrights' => array( 'Kasutaja_õigused' ),
+ 'Version' => array( 'Versioon' ),
+ 'Wantedcategories' => array( 'Oodatud_kategooriad' ),
+ 'Wantedfiles' => array( 'Oodatud_failid' ),
+ 'Wantedpages' => array( 'Oodatud_leheküljed' ),
+ 'Wantedtemplates' => array( 'Oodatud_mallid' ),
+ 'Watchlist' => array( 'Jälgimisloend' ),
+ 'Whatlinkshere' => array( 'Lingid_siia' ),
'Withoutinterwiki' => array( 'Ilma_keelelinkideta' ),
- 'MergeHistory' => array( 'Liitmisajalugu' ),
- 'Filepath' => array( 'Failitee' ),
- 'Invalidateemail' => array( 'E-posti_kinnituse_tühistamine', 'Tühista_e-posti_kinnitus' ),
- 'Blankpage' => array( 'Tühi_leht' ),
- 'LinkSearch' => array( 'Välislinkide_otsimine', 'Otsi_välislinke' ),
- 'DeletedContributions' => array( 'Kustutatud_kaastöö' ),
- 'Tags' => array( 'Märgised' ),
- 'Activeusers' => array( 'Teguskasutajad' ),
);
# Lisasin eestimaised poed, aga võõramaiseid ei julenud kustutada.
@@ -309,8 +309,8 @@ $messages = array(
'tog-shownumberswatching' => 'Näita jälgivate kasutajate hulka',
'tog-oldsig' => 'Praegune allkiri:',
'tog-fancysig' => 'Kasuta vikiteksti vormingus allkirja (ilma automaatse lingita kasutajalehele)',
-'tog-externaleditor' => 'Kasuta vaikimisi välist redaktorit (ainult asjatundjatele, tarvis arvuti eriseadistust – [http://www.mediawiki.org/wiki/Manual:External_editors lisateave])',
-'tog-externaldiff' => 'Kasuta vaikimisi välist võrdlusvahendit (ainult asjatundjatele, tarvis arvuti eriseadistust – [http://www.mediawiki.org/wiki/Manual:External_editors lisateave])',
+'tog-externaleditor' => 'Kasuta vaikimisi välist redaktorit (ainult asjatundjatele, tarvis arvuti eriseadistust – [//www.mediawiki.org/wiki/Manual:External_editors lisateave])',
+'tog-externaldiff' => 'Kasuta vaikimisi välist võrdlusvahendit (ainult asjatundjatele, tarvis arvuti eriseadistust – [//www.mediawiki.org/wiki/Manual:External_editors lisateave])',
'tog-showjumplinks' => 'Kuva lehekülje ülaservas "mine"-lingid',
'tog-uselivepreview' => 'Kasuta elavat eelvaadet (nõutav JavaScript) (testimisel)',
'tog-forceeditsummary' => 'Nõua redigeerimisel resümee välja täitmist',
@@ -405,10 +405,7 @@ $messages = array(
'listingcontinuesabbrev' => 'jätk',
'index-category' => 'Indeksiga leheküljed',
'noindex-category' => 'Indeksita leheküljed',
-
-'mainpagetext' => "'''MediaWiki tarkvara on edukalt paigaldatud.'''",
-'mainpagedocfooter' => 'Juhiste saamiseks kasutamise ning konfigureerimise kohta vaata palun inglisekeelset [http://meta.wikimedia.org/wiki/MediaWiki_localisation dokumentatsiooni liidese kohaldamisest]
-ning [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide kasutusjuhendit].',
+'broken-file-category' => 'Katkiste pildilinkidega leheküljed',
'about' => 'Tiitelandmed',
'article' => 'artikkel',
@@ -460,10 +457,10 @@ ning [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide kasutusjuhendit].'
'history' => 'Artikli ajalugu',
'history_short' => 'Ajalugu',
'updatedmarker' => 'uuendatud pärast viimast külastust',
-'info_short' => 'Teave',
'printableversion' => 'Prinditav versioon',
'permalink' => 'Püsilink',
'print' => 'Prindi',
+'view' => 'Vaata',
'edit' => 'Redigeeri',
'create' => 'Loo',
'editthispage' => 'Redigeeri seda lehekülge',
@@ -471,6 +468,7 @@ ning [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide kasutusjuhendit].'
'delete' => 'Kustuta',
'deletethispage' => 'Kustuta see lehekülg',
'undelete_short' => 'Taasta {{PLURAL:$1|üks muudatus|$1 muudatust}}',
+'viewdeleted_short' => 'Vaata {{PLURAL:$1|üht|$1}} kustutatud redaktsiooni',
'protect' => 'Kaitse',
'protect_change' => 'muuda',
'protectthispage' => 'Kaitse seda lehekülge',
@@ -555,6 +553,8 @@ Vaata [[Special:Version|versiooni lehekülge]].',
'toc' => 'Sisukord',
'showtoc' => 'näita',
'hidetoc' => 'peida',
+'collapsible-collapse' => 'Peida',
+'collapsible-expand' => 'Näita',
'thisisdeleted' => 'Vaata $1 või taasta?',
'viewdeleted' => 'Vaata $1?',
'restorelink' => '{{PLURAL:$1|üht|$1}} kustutatud versiooni',
@@ -566,6 +566,8 @@ Vaata [[Special:Version|versiooni lehekülge]].',
'page-rss-feed' => '"$1" RSS-toide',
'page-atom-feed' => '"$1" Atom-toide',
'red-link-title' => '$1 (pole veel kirjutatud)',
+'sort-descending' => 'Sordi kahanevas järjestuses',
+'sort-ascending' => 'Sordi kasvavas järjestuses',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Artikkel',
@@ -650,12 +652,13 @@ Palun proovi mõne minuti pärast uuesti.',
'protectedpagetext' => 'See lehekülg on lukustatud, et muudatusi ei tehtaks.',
'viewsourcetext' => 'Saad vaadata ja kopeerida lehekülje lähteteksti:',
'protectedinterface' => 'Sellel leheküljel on tarkvara kasutajaliidese tekst. Kuritahtliku muutmise vältimiseks on lehekülg lukustatud.',
-'editinginterface' => "'''Hoiatus:''' Te redigeerite tarkvara kasutajaliidese tekstiga lehekülge. Muudatused siin mõjutavad kõikide kasutajate kasutajaliidest. Tõlkijad, palun kaaluge MediaWiki tõlkimisprojekti – [http://translatewiki.net/wiki/Main_Page?setlang=et translatewiki.net] kasutamist.",
+'editinginterface' => "'''Hoiatus:''' Te redigeerite tarkvara kasutajaliidese tekstiga lehekülge. Muudatused siin mõjutavad kõikide kasutajate kasutajaliidest. Tõlkijad, palun kaaluge MediaWiki tõlkimisprojekti – [//translatewiki.net/wiki/Main_Page?setlang=et translatewiki.net] kasutamist.",
'sqlhidden' => '(SQL päring peidetud)',
'cascadeprotected' => 'See lehekülg on muutmise eest kaitstud, sest see on osa {{PLURAL:$1|järgmisest leheküljest|järgmistest lehekülgedest}}, mis on kaskaadkaitse all:
$2',
'namespaceprotected' => "Teil ei ole õigusi redigeerida lehekülgi '''$1''' nimeruumis.",
-'customcssjsprotected' => 'Sul pole õigust antud lehte muuta, kuna see sisaldab teise kasutaja isiklikke seadeid.',
+'customcssprotected' => 'Sul pole õigust seda CSS-lehekülge redigeerida, sest see sisaldab teise kasutaja isiklikke sätteid.',
+'customjsprotected' => 'Sul pole õigust seda JavaScripti lehekülge redigeerida, sest see sisaldab teise kasutaja isiklikke sätteid.',
'ns-specialprotected' => 'Erilehekülgi ei saa redigeerida.',
'titleprotected' => "Kasutaja [[User:$1|$1]] on selle pealkirjaga lehe loomise keelanud esitades järgmise põhjenduse: ''$2''.",
@@ -692,6 +695,7 @@ Sinu konto on loodud.
'createaccount' => 'Loo uus konto',
'gotaccount' => "Kui sul on juba konto, '''$1'''.",
'gotaccountlink' => 'logi sisse',
+'userlogin-resetlink' => 'Kas oled unustanud oma sisselogimisandmed?',
'createaccountmail' => 'e-posti teel',
'createaccountreason' => 'Põhjus:',
'badretype' => 'Sisestatud paroolid ei lange kokku.',
@@ -701,13 +705,15 @@ Palun valige uus nimi.',
'createaccounterror' => 'Kasutajakonto loomine ebaõnnestus: $1',
'nocookiesnew' => 'Kasutajakonto loodi, aga sa ei ole sisse logitud, sest {{SITENAME}} kasutab kasutajate tuvastamisel küpsiseid. Sinu brauseris on küpsised keelatud. Palun sea küpsised lubatuks ja logi siis oma vastse kasutajanime ning parooliga sisse.',
'nocookieslogin' => '{{SITENAME}} kasutab kasutajate tuvastamisel küpsiseid. Sinu brauseris on küpsised keelatud. Palun sea küpsised lubatuks ja proovi siis uuesti.',
+'nocookiesfornew' => 'Kasutajakonto jäi loomata, kuna me ei saanud selle allikat kindlaks teha.
+Veendu, et sul on küpsised lubatud, taaslaadi see lehekülg ja proovi uuesti.',
'noname' => 'Sa ei sisestanud kasutajanime lubataval kujul.',
'loginsuccesstitle' => 'Sisselogimine õnnestus',
'loginsuccess' => 'Oled sisse loginud. Sinu kasutajanimi on "$1".',
'nosuchuser' => 'Kasutajat "$1" ei ole olemas.
Kasutajanimed on tõstutundlikud.
Kontrollige kirjapilti või [[Special:UserLogin/signup|looge uus kasutajakonto]].',
-'nosuchusershort' => 'Kasutajat nimega "<nowiki>$1</nowiki>" ei ole olemas. Kontrollige kirjapilti.',
+'nosuchusershort' => 'Kasutajat nimega "$1" ei ole olemas. Kontrollige kirjapilti.',
'nouserspecified' => 'Kasutajanimi puudub.',
'login-userblocked' => 'See kasutaja on blokeeritud. Sisselogimine pole lubatud.',
'wrongpassword' => 'Vale parool. Proovige uuesti.',
@@ -748,13 +754,14 @@ Kui kasutajakonto loomine on eksitus, võid käesolevat sõnumit lihtsalt eirata
'usernamehasherror' => 'Kasutajanimi ei või sisaldada trellimärke ("#").',
'login-throttled' => 'Oled lühikese aja jooksul liiga palju äpardunud logimiskatseid sooritanud.
Palun pea nüüd pisut vahet.',
+'login-abort-generic' => 'Sisselogimine ebaõnnestus – Katkestatud',
'loginlanguagelabel' => 'Keel: $1',
'suspicious-userlogout' => 'Sinu väljalogimiskatse nurjus, sest see näis olevat katkise veebilehitseja või puhverserveri saadetud.',
# E-mail sending
'php-mail-error-unknown' => 'Tundmatu tõrge PHP funktsioonis mail().',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Parooli muutmine',
'resetpass_announce' => 'Logisid sisse e-posti teel saadud ajutise koodiga.
Sisselogimise lõpetamiseks pead siia uue parooli sisestama:',
@@ -773,6 +780,30 @@ Sisselogimise lõpetamiseks pead siia uue parooli sisestama:',
Võib-olla oled juba edukalt muudnud oma salasõna või taotlenud uut ajutist salasõna.',
'resetpass-temp-password' => 'Ajutine parool:',
+# Special:PasswordReset
+'passwordreset' => 'Parooli lähtestamine',
+'passwordreset-text' => 'Täida see vorm, et saada e-kiri oma konto andmetega.',
+'passwordreset-legend' => 'Parooli lähtestamine',
+'passwordreset-disabled' => 'Selles vikis on paroolide lähtestamine keelatud.',
+'passwordreset-username' => 'Kasutajanimi:',
+'passwordreset-email' => 'E-posti aadress:',
+'passwordreset-emailtitle' => '{{GRAMMAR:genitive|{{SITENAME}}}} konto andmed',
+'passwordreset-emailtext-ip' => 'Keegi, arvatavasti sina ise, IP-aadressilt $1 palus meelde tuletada sinu {{GRAMMAR:genitive|{{SITENAME}}}} ($4) konto üksikasjad. Selle e-posti aadressiga on seotud {{PLURAL:$3|järgmine konto|järgmised kontod}}:
+
+$2
+
+{{PLURAL:$3|See ajutine parool aegub|Need ajutised paroolid aeguvad}} {{PLURAL:$5|ühe|$5}} päeva pärast.
+Peaksid nüüd sisse logima ja uue parooli valima. Kui selle palve esitas keegi teine või kui sulle meenus su parool ja sa ei soovi seda enam muuta, võid teadet eirata ja jätkata vana parooli kasutamist.',
+'passwordreset-emailtext-user' => '{{GRAMMAR:genitive|{{SITENAME}}}} kasutaja $1 palus meelde tuletada sinu {{GRAMMAR:genitive|{{SITENAME}}}} ($4) konto üksikasjad. Selle e-posti aadressiga on seotud {{PLURAL:$3|järgmine konto|järgmised kontod}}:
+
+$2
+
+{{PLURAL:$3|See ajutine parool aegub|Need ajutised paroolid aeguvad}} {{PLURAL:$5|ühe|$5}} päeva pärast.
+Peaksid nüüd sisse logima ja uue parooli valima. Kui selle palve esitas keegi teine või kui sulle meenus su parool ja sa ei soovi seda enam muuta, võid teadet eirata ja jätkata vana parooli kasutamist.',
+'passwordreset-emailelement' => 'Kasutajanimi: $1
+Ajutine parool: $2',
+'passwordreset-emailsent' => 'Meeldetuletuskiri on saadetud.',
+
# Edit page toolbar
'bold_sample' => 'Rasvane kiri',
'bold_tip' => 'Rasvane kiri',
@@ -784,8 +815,6 @@ Võib-olla oled juba edukalt muudnud oma salasõna või taotlenud uut ajutist sa
'extlink_tip' => 'Välislink (ära unusta eesliidet http://)',
'headline_sample' => 'Pealkiri',
'headline_tip' => '2. taseme pealkiri',
-'math_sample' => 'Sisesta valem siia',
-'math_tip' => 'Matemaatiline valem (LaTeX)',
'nowiki_sample' => 'Sisesta vormindamata tekst',
'nowiki_tip' => 'Ignoreeri viki vormindust',
'image_sample' => 'Näidis.jpg',
@@ -872,7 +901,7 @@ Võid [[Special:Search/{{PAGENAME}}|otsida pealkirjaks olevat fraasi]] teistelt
'noarticletext-nopermission' => 'Sellel leheküljel ei ole teksti.
Sa võid [[Special:Search/{{PAGENAME}}|otsida lehekülje nime]] teistelt lehekülgedelt
või <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} otsida lehekülje nime logidest]</span>.',
-'userpage-userdoesnotexist' => 'Kasutajakontot "$1" pole olemas.
+'userpage-userdoesnotexist' => 'Kasutajakontot "<nowiki>$1</nowiki>" pole olemas.
Palun mõtle järele, kas soovid seda lehte luua või muuta.',
'userpage-userdoesnotexist-view' => 'Kasutajakonto "$1" pole registreeritud.',
'blocked-notice-logextract' => 'See kasutaja on praegu blokeeritud.
@@ -909,6 +938,7 @@ Kui see ikka ei tööta, proovi [[Special:UserLogout|välja]] ja tagasi sisse lo
'token_suffix_mismatch' => "'''Muudatus lükati tagasi, kuna sinu klienttarkvara ei suuda õigesti kirjavahemärke kasutada.'''
Muudatus lükati tagasi, et vältida lehekülje segiminekut.
See juhtub mõnikord siis, kui kasutatakse vigast veebipõhist anonüümsusserverit.",
+'edit_form_incomplete' => "'''Redigeerimisvormi mõni osa ei jõudnud serverisse; kontrolli, kas sinu tehtud muudatused on alles, ja proovi uuesti.'''",
'editing' => 'Redigeerimisel on $1',
'editingsection' => 'Redigeerimisel on osa leheküljest $1',
'editingcomment' => 'Muutmisel on $1 (uus alaosa)',
@@ -1138,7 +1168,7 @@ Palun vaata logisid.',
# Suppression log
'suppressionlog' => 'Varjamislogi',
'suppressionlogtext' => 'Allpool on nimekiri kustutamistest ja blokeeringutest, millega kaasneb administraatorite eest sisu varjamine.
-Jõus olevad keelud ja blokeeringud leiad [[Special:IPBlockList|blokeeritud IP-aadresside loendist]].',
+Jõus olevad keelud ja blokeeringud leiad [[Special:BlockList|blokeeritud IP-aadresside loendist]].',
# History merging
'mergehistory' => 'Ãœhenda lehtede ajalood',
@@ -1251,12 +1281,13 @@ Vahepeal saad otsimiseks Google'it kasutada.
Pane tähele, et Google'is talletatud {{GRAMMAR:genitive|{{SITENAME}}}} sisu võib olla iganenud.",
# Quickbar
-'qbsettings' => 'Kiirriba sätted',
-'qbsettings-none' => 'Ei_ole',
-'qbsettings-fixedleft' => 'Püsivalt_vasakul',
-'qbsettings-fixedright' => 'Püsivalt paremal',
-'qbsettings-floatingleft' => 'Ujuvalt vasakul',
-'qbsettings-floatingright' => 'Ujuvalt paremal',
+'qbsettings' => 'Kiirriba sätted',
+'qbsettings-none' => 'Ei_ole',
+'qbsettings-fixedleft' => 'Püsivalt_vasakul',
+'qbsettings-fixedright' => 'Püsivalt paremal',
+'qbsettings-floatingleft' => 'Ujuvalt vasakul',
+'qbsettings-floatingright' => 'Ujuvalt paremal',
+'qbsettings-directionality' => 'Fikseeritud, tulenevalt sinu keeles kasutatava kirja suunast',
# Preferences page
'preferences' => 'Eelistused',
@@ -1267,9 +1298,10 @@ Pane tähele, et Google'is talletatud {{GRAMMAR:genitive|{{SITENAME}}}} sisu võ
'changepassword' => 'Muuda parool',
'prefs-skin' => 'Kujundus',
'skin-preview' => 'eelvaade',
-'prefs-math' => 'Valemite näitamine',
'datedefault' => 'Eelistus puudub',
+'prefs-beta' => 'Beetafunktsioonid',
'prefs-datetime' => 'Kuupäev ja kellaaeg',
+'prefs-labs' => 'Katsefunktsioonid',
'prefs-personal' => 'Kasutaja andmed',
'prefs-rc' => 'Viimased muudatused',
'prefs-watchlist' => 'Jälgimisloend',
@@ -1291,8 +1323,6 @@ Pane tähele, et Google'is talletatud {{GRAMMAR:genitive|{{SITENAME}}}} sisu võ
'columns' => 'Veerge:',
'searchresultshead' => 'Otsingutulemite sätted',
'resultsperpage' => 'Vasteid leheküljel:',
-'contextlines' => 'Ridu vastes:',
-'contextchars' => 'Kaasteksti rea kohta:',
'stub-threshold' => '<a href="#" class="stub">Nii</a> lingitud lehekülje suuruse ülempiir (baitides):',
'stub-threshold-disabled' => 'Välja lülitatud',
'recentchangesdays' => 'Mitu päeva näidata viimastes muudatustes:',
@@ -1305,7 +1335,7 @@ Siin on juhuslik väärtus, mida saad kasutada: $1',
'savedprefs' => 'Sinu eelistused on salvestatud.',
'timezonelegend' => 'Ajavöönd:',
'localtime' => 'Kohalik aeg:',
-'timezoneuseserverdefault' => 'Kasuta serveri vaikesätet',
+'timezoneuseserverdefault' => 'Kasuta serveri vaikesätet ($1)',
'timezoneuseoffset' => 'Muu (määra ajavahe)',
'timezoneoffset' => 'Ajavahe¹:',
'servertime' => 'Serveri aeg:',
@@ -1353,7 +1383,8 @@ See ei tohi olla pikem kui $1 {{PLURAL:$1|sümbol|sümbolit}}.',
'prefs-help-gender' => 'Vabatahtlik: kasutatakse mõnedes keeltes sooliselt korrektse väljendumise otstarbel. Info on avalik.',
'email' => 'E-post',
'prefs-help-realname' => 'Vabatahtlik. Kui otsustad päris nime avaldada, kasutatakse seda sinu kaastöö seostamiseks sinuga.',
-'prefs-help-email' => 'Elektronpostiaadressi sisestamine ei ole kohustuslik, kuid võimaldab sul tellida parooli meeldetuletuse, kui peaksid oma parooli unustama. Samuti saad aadressi märkides anda oma identiteeti avaldamata teistele kasutajatele võimaluse enesele sõnumeid saata.',
+'prefs-help-email' => 'E-posti aadressi sisestamine pole kohustuslik, kuid võimaldab sul tellida parooli meeldetuletuse, kui peaksid oma parooli unustama.',
+'prefs-help-email-others' => 'Võid ka paluda teistel sinu kasutaja- või aruteluleheküljel sinuga ühendust võtta, selle asemel, et peaksid oma isikuandmeid avaldama.',
'prefs-help-email-required' => 'E-posti aadress on vajalik.',
'prefs-info' => 'Põhiteave',
'prefs-i18n' => 'Rahvusvaheline',
@@ -1478,7 +1509,6 @@ See ei tohi olla pikem kui $1 {{PLURAL:$1|sümbol|sümbolit}}.',
'right-userrights' => 'Muuta kõiki kasutajaõigusi',
'right-userrights-interwiki' => 'Muuta teiste vikide kasutajate õigusi',
'right-siteadmin' => 'Panna lukku ja lukust lahti teha andmebaasi',
-'right-reset-passwords' => 'Määrata teistele kasutajatele paroole',
'right-override-export-depth' => 'Eksportida lehekülgi, kaasates viidatud leheküljed kuni viienda tasemeni',
'right-sendemail' => 'Saata teistele kasutajatele e-kirju',
@@ -1583,15 +1613,14 @@ Sinu [[Special:Watchlist|jälgimisloendi]] leheküljed on '''rasvaselt''' esile
'upload-recreate-warning' => "'''Hoiatus: Sellise nimega fail on kustutatud või teisaldatud.'''
Selle lehe kustutamis- ja teisaldamislogi on kuvatud siin:",
-'uploadtext' => "Järgnevat vormi võid kasutada failide üleslaadimiseks.
-
-Et näha või leida eelnevalt üles laaditud faile vaata [[Special:FileList|failide nimekirja]].
+'uploadtext' => "Kasuta allpool olevat vormi failide üleslaadimiseks.
+Et näha või leida eelnevalt üles laaditud faile vaata [[Special:FileList|failide loendit]].
Üleslaadimiste ajalugu saab uurida [[Special:Log/upload|üleslaadimislogist]], kustutamiste ajalugu [[Special:Log/delete|kustutamislogist]].
-Faili lisamiseks artiklile kasuta linki ühel kujul järgnevatest:
-* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fail.jpg]]</nowiki></tt>''' algupäraste mõõtmetega pildi lisamiseks
-* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:fail.png|200px|thumb|left|kirjeldus]]</nowiki></tt>''' raamiga pisipildi lisamiseks lehekülje vasakusse serva; ''kirjeldus'' kuvatakse pildiallkirjana
-* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:fail.ogg]]</nowiki></tt>''' helifaililingi lisamiseks",
+Faili lisamiseks artiklile kasuta linki ühel kujul järgnevatest.
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fail.jpg]]</nowiki></tt>''', et lisada täissuuruses pilt.
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fail.png|200px|thumb|left|kirjeldus]]</nowiki></tt>''', et lisada lehekülje vasakusse serva raamiga 200 piksli laiune pisipilt koos pildiallkirjaga (''kirjeldus'').
+* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Fail.ogg]]</nowiki></tt>''', et linkida otse failile ilma seda kuvamata.",
'upload-permitted' => 'Lubatud failitüübid: $1.',
'upload-preferred' => 'Eelistatud failitüübid: $1.',
'upload-prohibited' => 'Keelatud failitüübid: $1.',
@@ -1610,12 +1639,12 @@ Faili lisamiseks artiklile kasuta linki ühel kujul järgnevatest:
'minlength1' => 'Faili nimes peab olema vähemalt üks kirjamärk.',
'illegalfilename' => 'Faili "$1" nimi sisaldab sümboleid, mis pole pealkirjades lubatud. Palun nimetage fail ümber ja proovige uuesti.',
'badfilename' => 'Pildi nimi on muudetud. Uus nimi on "$1".',
-'filetype-mime-mismatch' => 'Faililaiend ei vasta MIME tüübile.',
+'filetype-mime-mismatch' => 'Faililaiend ".$1" ei vasta faili ($2) MIME tüübile.',
'filetype-badmime' => 'MIME tüübiga "$1" faile ei ole lubatud üles laadida.',
'filetype-bad-ie-mime' => 'Seda faili ei saa üles laadida, sest Internet Explorer avastaks, et selle MIME tüüp on "$1", mis on keelatud või võimalik ohtlik failitüüp.',
'filetype-unwanted-type' => "'''\".\$1\"''' on soovimatu failitüüp.
Eelistatud {{PLURAL:\$3|failitüüp on|failitüübid on}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' ei ole lubatud failitüüp. Lubatud {{PLURAL:\$3|failitüüp|failitüübid}} on \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' pole lubatud failitüü{{PLURAL:$4|p|bid}}. Lubatud {{PLURAL:$3|failitüüp|failitüübid}} on $2.',
'filetype-missing' => 'Failil puudub laiend (nagu näiteks ".jpg").',
'empty-file' => 'Saadetud fail oli tühi.',
'file-too-large' => 'Saadetud fail oli liiga suur.',
@@ -1633,6 +1662,7 @@ Eelistatud {{PLURAL:\$3|failitüüp on|failitüübid on}} \$2.",
'emptyfile' => 'Fail, mille Te üles laadisite, paistab olevat tühi.
See võib olla tingitud vigasest failinimest.
Palun kaalutlege, kas Te tõesti soovite seda faili üles laadida.',
+'windows-nonascii-filename' => 'Sellel vikil puudub erimärkidega failinimede tugi.',
'fileexists' => "Sellise nimega fail on juba olemas. Palun vaata lehekülge '''<tt>[[:$1]]</tt>''', kui sa pole kindel, kas soovid seda muuta.
[[$1|thumb]]",
'filepageexists' => "Selle faili kirjelduslehekülg '''<tt>[[:$1]]</tt>''' on juba loodud, aga selle nimega faili hetkel pole.
@@ -1670,6 +1700,8 @@ Vaata selle faili kustutamise ajalugu enne jätkamist.',
Palun vaata <code>file_uploads</code> sätet.',
'uploadscripted' => 'See fail sisaldab HTML- või skriptikoodi, mida veebilehitseja võib valesti kuvada.',
'uploadvirus' => 'Fail sisaldab viirust! Täpsemalt: $1',
+'uploadjava' => 'See fail on ZIP-fail, milles on Java .class-fail.
+Java failide üleslaadimine on keelatud, kuna nende kaudu võidaks turvapiiranguist mööda minna.',
'upload-source' => 'Lähtefail',
'sourcefilename' => 'Lähtefail:',
'sourceurl' => 'Allika URL:',
@@ -1680,10 +1712,6 @@ Palun vaata <code>file_uploads</code> sätet.',
'watchthisupload' => 'Jälgi seda lehekülge',
'filewasdeleted' => 'Selle nimega fail on lisatud ja kustutatud hiljuti.
Kontrolli $1 enne jätkamist.',
-'upload-wasdeleted' => "'''Hoiatus: Sa laadid üles faili, mis on eelnevalt kustutatud.'''
-
-Peaksid kaaluma, kas selle faili üleslaadimise jätkamine on sobilik.
-Selle faili kustutamislogi on toodud siinsamas:",
'filename-bad-prefix' => "Üleslaaditava faili nimi algab eesliitega '''\"\$1\"''', mis on omane digikaamera antud ebamäärastele nimedele.
Palun vali oma failile kirjeldavam nimi.",
'upload-success-subj' => 'Üleslaadimine õnnestus',
@@ -1708,12 +1736,29 @@ Kui probleem ei kao, võta ühendust [[Special:ListUsers/sysop|administraatoriga
'upload-unknown-size' => 'Tundmatu suurus',
'upload-http-error' => 'HTTP-viga: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Faili avamisel ZIP-kontrolliks tekkis tõrge.',
+'zip-wrong-format' => 'Valitud fail ei ole ZIP-fail.',
+'zip-bad' => 'See ZIP-fail on kas rikutud või muul põhjusel loetamatu.
+Selle turvalisust ei saa kontrollida.',
+'zip-unsupported' => 'See ZIP-fail kasutab ZIP-funktsioone, mida MediaWiki ei toeta.
+Selle turvalisust ei saa kontrollida.',
+
+# Special:UploadStash
+'uploadstash' => 'Ãœleslaaditud failide algne hoidla',
+'uploadstash-summary' => 'See lehekülg pakub juurdepääsu failidele, mis on üles laaditud (või mida parasjagu üles laaditakse), kuid mis pole veel vikis avaldatud. Need failid on nähtavad üksnes kasutajale, kes need üles laadis.',
+'uploadstash-clear' => 'Kustuta failid algsest hoidlast',
+'uploadstash-nofiles' => 'Sul pole algses hoidlas faile.',
+'uploadstash-badtoken' => 'Toiming ebaõnnestus; võib-olla redigeerimisloa aegumise tõttu. Proovi uuesti.',
+'uploadstash-errclear' => 'Failide kustutamine ebaõnnestus.',
+'uploadstash-refresh' => 'Värskenda faililoendit',
+
# img_auth script messages
'img-auth-accessdenied' => 'Juurdepääs keelatud',
-'img-auth-nopathinfo' => "PATH_INFO puudub.
-Sinu veebiserver ei ole seadistatud seda teavet edastama.
-See võib olla CGI-põhine ning ei toeta img_auth'i.
-Vaata http://www.mediawiki.org/wiki/Manual:Image_Authorization.",
+'img-auth-nopathinfo' => 'PATH_INFO puudub.
+Sinu server pole seadistatud seda teavet edastama.
+See võib olla CGI-põhine ja ei toeta img_auth-i.
+Vaata lehekülge "[//www.mediawiki.org/wiki/Manual:Image_Authorization Image Authorization]".',
'img-auth-notindir' => 'Soovitud salvestuskoht pole üleslaadimiskataloogi all.',
'img-auth-badtitle' => 'Väljendist "$1" ei saa sobivat pealkirja moodustada.',
'img-auth-nologinnWL' => 'Sa pole sisselogitud ja "$1" pole valges nimekirjas.',
@@ -1791,7 +1836,7 @@ Järgnevas loetelus on kuvatud ainult {{PLURAL:$1|esimene viitav lehekülg|esime
[[Special:WhatLinksHere/$2|Kogu loetelu]] on saadaval.',
'nolinkstoimage' => 'Sellele pildile ei viita ükski lehekülg.',
'morelinkstoimage' => 'Vaata [[Special:WhatLinksHere/$1|veel linke]], mis sellele failile viitavad.',
-'redirectstofile' => 'Selle faili juurde {{PLURAL:$1|suunab järgnev fail|suunavad järgnevad $1 faili}}:',
+'linkstoimage-redirect' => '$1 (failiümbersuunamine) $2',
'duplicatesoffile' => '{{PLURAL:$1|Järgnev fail|Järgnevad $1 faili}} on selle faili {{PLURAL:$1|duplikaat|duplikaadid}} ([[Special:FileDuplicateSearch/$2|üksikasjad]]):',
'sharedupload' => 'See fail pärineb allikast $1 ning võib olla kasutusel ka teistes projektides.',
'sharedupload-desc-there' => 'See fail pärineb kesksest failivaramust $1. Palun vaata [$2 faili kirjelduse lehekülge], et saada rohkem teavet.',
@@ -1878,18 +1923,19 @@ Sisesta kujul tüüp/alamtüüp, näiteks <tt>image/jpeg</tt>.',
'statistics-users-active-desc' => 'Kasutajad, kes on viimase {{PLURAL:$1|päeva|$1 päeva}} jooksul tegutsenud',
'statistics-mostpopular' => 'Enim vaadatud leheküljed',
-'disambiguations' => 'Täpsustusleheküljed',
+'disambiguations' => 'Leheküljed, mis lingivad täpsustuslehekülgedele',
'disambiguationspage' => 'Template:Täpsustuslehekülg',
'disambiguations-text' => "Loetletud leheküljed viitavad '''täpsustusleheküljele'''.
Selle asemel peaks nad olema lingitud sobivasse artiklisse.
Lehekülg loetakse täpsustusleheküljeks, kui see kasutab malli, millele viitab sõnum [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Kahekordsed ümbersuunamised',
-'doubleredirectstext' => 'Käesolev leht esitab loendi lehtedest, mis sisaldavad ümbersuunamisi teistele ümbersuunamislehtedele.
+'doubleredirects' => 'Kahekordsed ümbersuunamised',
+'doubleredirectstext' => 'Käesolev leht esitab loendi lehtedest, mis sisaldavad ümbersuunamisi teistele ümbersuunamislehtedele.
Igal real on ära toodud esimene ja teine ümbersuunamisleht ning samuti teise ümbersuunamislehe sihtmärk, mis tavaliselt on esialgse ümbersuunamise tegelik siht, millele see otse osutama peakski.
<del>Läbikriipsutatud</del> kirjed on kohendatud.',
-'double-redirect-fixed-move' => '[[$1]] on teisaldatud, see suunab nüüd leheküljele [[$2]].',
-'double-redirect-fixer' => 'Ãœmbersuunamiste parandaja',
+'double-redirect-fixed-move' => '[[$1]] on teisaldatud, see suunab nüüd leheküljele [[$2]].',
+'double-redirect-fixed-maintenance' => 'Parandatakse kahekordne suunamine leheküljelt [[$1]] leheküljele [[$2]].',
+'double-redirect-fixer' => 'Ãœmbersuunamiste parandaja',
'brokenredirects' => 'Vigased ümbersuunamised',
'brokenredirectstext' => 'Järgmised leheküljed on ümber suunatud olematutele lehekülgedele:',
@@ -1966,6 +2012,7 @@ Pane tähele, et teised võrgukohad võivad viidata failile otselingiga ja seega
'pager-newer-n' => '{{PLURAL:$1|uuem 1|uuemad $1}}',
'pager-older-n' => '{{PLURAL:$1|vanem 1|vanemad $1}}',
'suppress' => 'Varjamine',
+'querypage-disabled' => 'See erilehekülg on keelatud, et jõudlust hoida.',
# Book sources
'booksources' => 'Raamatuotsimine',
@@ -1975,8 +2022,8 @@ Pane tähele, et teised võrgukohad võivad viidata failile otselingiga ja seega
'booksources-invalid-isbn' => 'Antud ISBN-number ei ole korrektne; kontrolli algallikast kopeerides vigu.',
# Special:Log
-'specialloguserlabel' => 'Kasutaja:',
-'speciallogtitlelabel' => 'Pealkiri:',
+'specialloguserlabel' => 'Täitja:',
+'speciallogtitlelabel' => 'Objekt (pealkiri või kasutaja):',
'log' => 'Logid',
'all-logs-page' => 'Kõik avalikud logid',
'alllogstext' => 'See on {{GRAMMAR:genitive|{{SITENAME}}}} kõigi olemasolevate logide ühendkuva.
@@ -2017,13 +2064,13 @@ Vaata ka [[Special:WantedCategories|puuduvaid kategooriaid]].',
'sp-deletedcontributions-contribs' => 'kaastöö',
# Special:LinkSearch
-'linksearch' => 'Välislingid',
+'linksearch' => 'Välislinkide otsimine',
'linksearch-pat' => 'Otsimisvorm:',
'linksearch-ns' => 'Nimeruum:',
'linksearch-ok' => 'Otsi',
'linksearch-text' => 'Metamärgina võib kasutada tärni, näiteks "*.wikipedia.org".
-
-Toetatud protokollid: <tt>$1</tt>',
+Otsingus peab olema vähemalt tipptaseme domeen, näiteks "*.org".<br />
+Toetatud protokollid: <tt>$1</tt> (otsingus ära neid kasuta).',
'linksearch-line' => '$1 on lingitud leheküljelt $2',
'linksearch-error' => 'Metamärk võib olla ainult internetiaadressi alguses.',
@@ -2083,6 +2130,10 @@ Toetatud protokollid: <tt>$1</tt>',
'noemailtext' => 'See kasutaja pole määranud kehtivat e-posti aadressi.',
'nowikiemailtitle' => 'E-kirja saatmine ei ole lubatud',
'nowikiemailtext' => 'See kasutaja ei soovi e-posti teistelt kasutajatelt.',
+'emailnotarget' => 'Saaja kasutajanimi on olematu või vigane.',
+'emailtarget' => 'Saaja kasutajanime sisestamine',
+'emailusername' => 'Kasutajanimi:',
+'emailusernamesubmit' => 'Sobib',
'email-legend' => 'Saada e-kiri {{GRAMMAR:genitive|{{SITENAME}}}} kasutajale',
'emailfrom' => 'Kellelt:',
'emailto' => 'Kellele:',
@@ -2107,13 +2158,13 @@ Toetatud protokollid: <tt>$1</tt>',
'watchlistanontext' => 'Oma jälgimisloendi nägemiseks ja muutmiseks pead $1.',
'watchnologin' => 'Ei ole sisse logitud',
'watchnologintext' => 'Jälgimisloendi muutmiseks pead [[Special:UserLogin|sisse logima]].',
-'addedwatch' => 'Lisatud jälgimisloendile',
+'addwatch' => 'Lisa jälgimisloendisse',
'addedwatchtext' => "Lehekülg \"[[:\$1]]\" on sinu [[Special:Watchlist|jälgimisloendisse]] lisatud.
Edasised muudatused käesoleval lehel ja sellega seotud aruteluleheküljel ilmuvad jälgimisloendisse ning [[Special:RecentChanges|viimaste muudatuste lehel]] tuuakse jälgitava lehe pealkiri esile '''rasvase''' kirja abil.
Kui tahad seda lehte hiljem jälgimisloendist eemaldada, klõpsa päisenupule \"Lõpeta jälgimine\".",
-'removedwatch' => 'Jälgimisloendist kustutatud',
+'removewatch' => 'Eemalda jälgimisloendist',
'removedwatchtext' => 'Lehekülg "[[:$1]]" on [[Special:Watchlist|jälgimisloendist]] eemaldatud.',
'watch' => 'Jälgi',
'watchthispage' => 'Jälgi seda lehekülge',
@@ -2134,8 +2185,9 @@ Kui tahad seda lehte hiljem jälgimisloendist eemaldada, klõpsa päisenupule \"
'watchlist-options' => 'Jälgimisloendi võimalused',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Jälgimine...',
-'unwatching' => 'Jälgimise lõpetamine...',
+'watching' => 'Jälgimine...',
+'unwatching' => 'Jälgimise lõpetamine...',
+'watcherrortext' => 'Lehekülje "$1" jaoks jälgimisloendi sätete muutmisel ilmnes tõrge.',
'enotif_mailer' => '{{GRAMMAR:genitive|{{SITENAME}}}} lehekülje muutmise teavitaja',
'enotif_reset' => 'Märgi kõik lehed loetuks',
@@ -2166,15 +2218,15 @@ Abivalmilt
--
E-kirjatsi saabuvate teavituste sätteid saad muuta leheküljel
-{{fullurl:{{#special:Preferences}}}}.
+{{canonicalurl:{{#special:Preferences}}}}.
Oma jälgimisloendi sätete muutmiseks mine leheküljele
-{{fullurl:Special:Watchlist/edit}}.
+{{canonicalurl:Special:Watchlist/edit}}.
Lehekülje kustutamiseks jälgimisloendist mine leheküljele $UNWATCHURL.
Tagasiside ja abi:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Kustuta lehekülg',
@@ -2186,10 +2238,11 @@ Tagasiside ja abi:
'delete-confirm' => 'Lehekülje "$1" kustutamine',
'delete-legend' => 'Kustutamine',
'historywarning' => "'''Hoiatus:''' Kustutataval leheküljel on ligikaudu {{PLURAL:$1|ühe redaktsiooniga|$1 redaktsiooniga}} ajalugu:",
-'confirmdeletetext' => 'Sa oled andmebaasist jäädavalt kustutamas lehte või pilti koos kogu tema ajalooga. Palun kinnita, et sa tahad seda tõepoolest teha, et sa mõistad tagajärgi ja et sinu tegevus on kooskõlas siinse [[{{MediaWiki:Policy-url}}|sisekorraga]].',
+'confirmdeletetext' => 'Sa oled andmebaasist kustutamas lehekülge koos kogu tema ajalooga.
+Palun kinnita, et tahad seda tõepoolest teha, et sa mõistad tagajärgi ja et sinu tegevus on kooskõlas siinse [[{{MediaWiki:Policy-url}}|sisekorraga]].',
'actioncomplete' => 'Toiming sooritatud',
'actionfailed' => 'Tegevus ebaõnnestus',
-'deletedtext' => '"<nowiki>$1</nowiki>" on kustutatud. Kustutatud leheküljed on ära toodud eraldi loendis ($2).',
+'deletedtext' => '"$1" on kustutatud. Kustutatud leheküljed on ära toodud eraldi loendis ($2).',
'deletedarticle' => 'kustutas lehekülje "[[$1]]"',
'suppressedarticle' => 'varjas lehekülje "[[$1]]"',
'dellogpage' => 'Kustutamislogi',
@@ -2246,7 +2299,7 @@ Mine tagasi eelmisele leheküljele ja taaslaadi see, seejärel proovi uuesti.',
'protect_expiry_invalid' => 'Sobimatu aegumise tähtaeg.',
'protect_expiry_old' => 'Aegumise tähtaeg on minevikus.',
'protect-unchain-permissions' => 'Ava edasised kaitsmissuvandid',
-'protect-text' => "Siin võid vaadata ja muuta lehekülje '''<nowiki>$1</nowiki>''' kaitsetaset.",
+'protect-text' => "Siin võid vaadata ja muuta lehekülje '''$1''' kaitsetaset.",
'protect-locked-blocked' => "Blokeerituna ei saa muuta kaitstuse taset.
Allpool on toodud lehekülje '''$1''' hetkel kehtivad seaded:",
'protect-locked-dblock' => "Kaitstuse taset ei saa muuta, sest andmebaas on lukustatud.
@@ -2300,9 +2353,8 @@ Sa saad muuta selle lehekülje kaitse staatust, kuid see ei mõjuta kaskaadkaits
'viewdeletedpage' => 'Kustutatud lehekülgede vaatamine',
'undeletepagetext' => '{{PLURAL:$1|Järgnev lehekülg on kustutatud|Järgnevad leheküljed on kustutatud}}, kuid arhiivis veel olemas ja taastatavad. Arhiivi sisu kustutatakse perioodiliselt.',
'undelete-fieldset-title' => 'Redaktsioonide taastamine',
-'undeleteextrahelp' => "Kogu lehe ja selle ajaloo taastamiseks jätke kõik linnukesed tühjaks ja vajutage '''''Taasta'''''.
-Et taastada valikuliselt, tehke linnukesed kastidesse, mida soovite taastada ja vajutage '''''Taasta'''''.
-Nupu '''''Tühjenda''''' vajutamine tühjendab põhjusevälja ja eemaldab kõik linnukesed.",
+'undeleteextrahelp' => "Kogu lehe ja selle ajaloo taastamiseks jäta kõik linnukesed tühjaks ja vajuta '''''{{int:undeletebtn}}'''''.
+Et taastada valikuliselt, tee linnukesed kastidesse, mida soovid taastada ja vajuta '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 arhiivitud {{PLURAL:$1|redaktsioon|redaktsiooni}}',
'undeletehistory' => 'Kui taastate lehekülje, taastuvad kõik versioonid artikli ajaloona.
Kui vahepeal on loodud uus samanimeline lehekülg, ilmuvad taastatud versioonid varasema ajaloona.',
@@ -2347,9 +2399,12 @@ $1',
'undelete-show-file-submit' => 'Jah',
# Namespace form on various pages
-'namespace' => 'Nimeruum:',
-'invert' => 'Näita kõiki peale valitud nimeruumi',
-'blanknamespace' => '(Artiklid)',
+'namespace' => 'Nimeruum:',
+'invert' => 'Näita kõiki peale valitud nimeruumi',
+'tooltip-invert' => 'Tee kasti linnuke, kui soovid peita muudatused valitud nimeruumi lehekülgedel (ja valiku korral ka sellega seotud nimeruumis)',
+'namespace_association' => 'Seonduv nimeruum',
+'tooltip-namespace_association' => 'Tee kasti linnuke, kui soovid valida ka valitud nimeruumiga seotud arutelu- või sisulehekülgede nimeruumi',
+'blanknamespace' => '(Artiklid)',
# Contributions
'contributions' => 'Kasutaja kaastöö',
@@ -2398,13 +2453,15 @@ Allpool on toodud viimane blokeerimislogi sissekanne:',
'whatlinkshere-filters' => 'Filtrid',
# Block/unblock
+'autoblockid' => 'Automaatblokeering #$1',
+'block' => 'Kasutaja blokeerimine',
+'unblock' => 'Kasutaja blokeeringu eemaldamine',
'blockip' => 'Kasutaja blokeerimine',
'blockip-title' => 'Kasutaja blokeerimine',
'blockip-legend' => 'Kasutaja blokeerimine',
'blockiptext' => 'See vorm on kindla IP-aadressi või kasutajanime kirjutamisõiguste blokeerimiseks.
Seda tohib teha ainult vandalismi vältimiseks ja kooskõlas [[{{MediaWiki:Policy-url}}|{{GRAMMAR:genitive|{{SITENAME}}}} sisekorraga]].
Täida ka põhjuse väli, näiteks viidates lehekülgedele, mis rikuti.',
-'ipaddress' => 'IP-aadress',
'ipadressorusername' => 'IP-aadress või kasutajanimi:',
'ipbexpiry' => 'Kehtivus:',
'ipbreason' => 'Põhjus:',
@@ -2416,7 +2473,7 @@ Täida ka põhjuse väli, näiteks viidates lehekülgedele, mis rikuti.',
** Mittesobiv kasutajanimi
** Spämmi levitamine
** Vale info levitamine',
-'ipbanononly' => 'Blokeeri ainult anonüümsed kasutajad',
+'ipb-hardblock' => 'Keela sellelt IP-aadressilt sisseloginud kasutajatel redigeerida',
'ipbcreateaccount' => 'Takista konto loomist',
'ipbemailban' => 'Takista kasutajal e-kirjade saatmine',
'ipbenableautoblock' => 'Blokeeri automaatselt viimane IP-aadress, mida see kasutaja kasutas, ja ka järgnevad, mille alt ta võib proovida kaastööd teha',
@@ -2427,12 +2484,15 @@ Täida ka põhjuse väli, näiteks viidates lehekülgedele, mis rikuti.',
'ipbotherreason' => 'Muu või täiendav põhjus:',
'ipbhidename' => 'Peida kasutajatunnus muudatustest ja loenditest',
'ipbwatchuser' => 'Jälgi selle kasutaja lehekülge ja arutelu',
-'ipballowusertalk' => 'Luba kasutajal vaatamata blokeeringule siiski muuta enese arutelulehekülge',
+'ipb-disableusertalk' => 'Keela sellel kasutajal blokeeringu ajal oma arutelulehekülge redigeerida',
'ipb-change-block' => 'Blokeeri uuesti samade sätete alusel',
+'ipb-confirm' => 'Kinnita blokeering',
'badipaddress' => 'Vigane IP-aadress',
'blockipsuccesssub' => 'Blokeerimine õnnestus',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] on blokeeritud.<br />
Kehtivaid blokeeringuid vaata [[Special:IPBlockList|blokeeringute loendist]].',
+'ipb-blockingself' => 'Sa blokeerid iseenda! Kas tahad tõesti seda teha?',
+'ipb-confirmhideuser' => 'Avaldasid soovi kasutaja blokeerida ja peita. Kasutaja nimi peidetakse kõigist loenditest ja logisissekannetest. Kas oled kindel, et soovid seda teha?',
'ipb-edit-dropdown' => 'Muuda blokeeringu põhjuseid',
'ipb-unblock-addr' => 'Kustuta $1 blokeering',
'ipb-unblock' => 'Kasutaja või IP-aadressi vabastamine blokeerimisest',
@@ -2442,17 +2502,23 @@ Kehtivaid blokeeringuid vaata [[Special:IPBlockList|blokeeringute loendist]].',
'unblockiptext' => 'Kasutage allpool olevat vormi redigeerimisõiguste taastamiseks varem blokeeritud IP aadressile.',
'ipusubmit' => 'Eemalda see blokeering',
'unblocked' => 'Kasutaja [[User:$1|$1]] blokeering on eemaldatud',
+'unblocked-range' => 'Vahemiku $1 blokeering on eemaldatud',
'unblocked-id' => 'Blokeerimine $1 on lõpetatud',
+'blocklist' => 'Blokeeritud kasutajad',
'ipblocklist' => 'Blokeeritud kasutajad',
'ipblocklist-legend' => 'Leia blokeeritud kasutaja',
-'ipblocklist-username' => 'Kasutajanimi või IP-aadress:',
-'ipblocklist-sh-userblocks' => '$1 kasutajanimed',
-'ipblocklist-sh-tempblocks' => '$1 ajutised blokeeringud',
-'ipblocklist-sh-addressblocks' => '$1 IP-aadressid',
+'blocklist-userblocks' => 'Peida kontod',
+'blocklist-tempblocks' => 'Peida ajutised',
+'blocklist-addressblocks' => 'Peida üksikud IP-aadressid',
+'blocklist-timestamp' => 'Ajatempel',
+'blocklist-target' => 'Blokeeritav',
+'blocklist-expiry' => 'Aegumistähtaeg',
+'blocklist-by' => 'Blokeerija',
+'blocklist-params' => 'Blokeerimissätted',
+'blocklist-reason' => 'Põhjus',
'ipblocklist-submit' => 'Otsi',
'ipblocklist-localblock' => 'Kohalikud blokeeringud',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Muu blokeering|Muud blokeeringud}}',
-'blocklistline' => '$1, $2 blokeeris kasutaja $3 ($4)',
'infiniteblock' => 'igavene',
'expiringblock' => 'aegub $1 $2',
'anononlyblock' => 'ainult nimetuna',
@@ -2472,7 +2538,7 @@ Kehtivaid blokeeringuid vaata [[Special:IPBlockList|blokeeringute loendist]].',
'blocklog-showsuppresslog' => 'See kasutaja on varem blokeeritud ja peidetud. Allpool on toodud varjamislogi:',
'blocklogentry' => 'blokeeris kasutaja [[$1]]. Blokeeringu aegumistähtaeg on $2 $3',
'reblock-logentry' => 'muutis kasutaja või IP-aadressi [[$1]] blokeeringu sätteid. Blokeering aegumistähtaeg: $2. Põhjus: $3',
-'blocklogtext' => 'See on kasutajate blokeerimiste ja blokeeringute eemaldamiste nimekiri. Automaatselt blokeeritud IP aadresse siin ei näidata. Hetkel aktiivsete blokeeringute ja redigeerimiskeeldude nimekirja vaata [[Special:IPBlockList|IP blokeeringute nimekirja]] leheküljelt.',
+'blocklogtext' => 'See on kasutajate blokeerimiste ja blokeeringute eemaldamiste nimekiri. Automaatselt blokeeritud IP aadresse siin ei näidata. Hetkel aktiivsete blokeeringute ja redigeerimiskeeldude nimekirja vaata [[Special:BlockList|IP blokeeringute nimekirja]] leheküljelt.',
'unblocklogentry' => 'eemaldas kasutaja $1 blokeeringu',
'block-log-flags-anononly' => 'ainult anonüümsed kasutajad',
'block-log-flags-nocreate' => 'kontode loomine on blokeeritud',
@@ -2486,10 +2552,10 @@ Kehtivaid blokeeringuid vaata [[Special:IPBlockList|blokeeringute loendist]].',
'ipb_expiry_temp' => 'Peidetud kasutajanime blokeeringud peavad olema alalised.',
'ipb_hide_invalid' => 'Selle konto varjamine ei õnnestunud. Sellelt võib olla tehtud liiga palju redigeerimisi.',
'ipb_already_blocked' => '"$1" on juba blokeeritud.',
-'ipb-needreblock' => '==Juba blokeeritud==
-$1 on juba blokeeritud.
+'ipb-needreblock' => '$1 on juba blokeeritud.
Kas soovid muuta blokeeringu sätteid?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Teine blokeering|Teised blokeeringud}}',
+'unblock-hideuser' => 'Selle kasutaja blokeeringut ei saa eemaldada, sest tema kasutajanimi on peidetud.',
'ipb_cant_unblock' => 'Tõrge: Blokeerimis-ID $1 pole leitav.
Blokeering võib juba eemaldatud olla.',
'ipb_blocked_as_range' => 'Tõrge: IP-aadressi $1 pole eraldi blokeeritud ja blokeeringut ei saa eemaldada.
@@ -2529,6 +2595,7 @@ Kui sinu hooldustöö on läbi, ära unusta [[Special:UnlockDB|kirjutuspääsu t
'lockfilenotwritable' => 'Andmebaasi lukufail ei ole kirjutatav.
Andmebaasi lukustamiseks ja avamiseks peavad veebiserveril olema sellele kirjutusõigused.',
'databasenotlocked' => 'Andmebaas ei ole lukustatud.',
+'lockedbyandtime' => '(lukustas $1; $2, kell $3)',
# Move page
'move-page' => 'Teisalda $1',
@@ -2649,7 +2716,7 @@ Viimasel juhul võid sa näiteks "[[{{MediaWiki:Mainpage}}]]" lehekülje, jaoks
'allmessagesdefault' => 'Vaikimisi tekst',
'allmessagescurrent' => 'Praegune tekst',
'allmessagestext' => 'See on loend kõikidest kättesaadavatest süsteemi sõnumitest MediaWiki: nimeruumis.
-Kui soovid MediaWiki tarkvara tõlkimises osaleda siis vaata lehti [http://www.mediawiki.org/wiki/Localisation MediaWiki lokaliseerimine] ja [http://translatewiki.net translatewiki.net].',
+Kui soovid MediaWiki tarkvara tõlkimises osaleda siis vaata lehti [//www.mediawiki.org/wiki/Localisation MediaWiki lokaliseerimine] ja [//translatewiki.net translatewiki.net].',
'allmessagesnotsupportedDB' => "Seda lehekülge ei saa kasutada, sest '''\$wgUseDatabaseMessages''' ei tööta.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Muutmisoleku filter:',
@@ -2800,9 +2867,7 @@ Samuti võimaldab see resümee reale põhjenduse lisamist.',
'common.js' => '/* Siinne JavaScript laaditakse igale kasutajatele igal laaditud leheküljel. */',
# Metadata
-'nodublincore' => "Dublin Core'i RDF-meta-andmed ei ole selles serveris lubatud.",
-'nocreativecommons' => 'Creative Commonsi RDF-meta-andmed ei ole selles serveris lubatud.',
-'notacceptable' => 'Viki server ei saa esitada andmeid formaadis, mida sinu veebiklient lugeda suudab.',
+'notacceptable' => 'Viki server ei saa esitada andmeid formaadis, mida sinu veebiklient lugeda suudab.',
# Attribution
'anonymous' => '{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$1|anonüümne kasutaja|anonüümsed kasutajad}}',
@@ -2826,12 +2891,17 @@ See on ilmselt põhjustatud linkimisest mustas nimekirjas olevasse välisvõrguk
'spam_blanking' => 'Kõik versioonid sisaldasid linke veebilehele $1. Lehekülg tühjendatud.',
# Info page
-'infosubtitle' => 'Lehekülje informatsioon',
-'numedits' => 'Lehekülje redigeerimiste arv: $1',
-'numtalkedits' => 'Arutelulehe redigeerimiste arv: $1',
-'numwatchers' => 'Jälgijate arv: $1',
-'numauthors' => 'Lehekülje erinevate toimetajate arv: $1',
-'numtalkauthors' => 'Arutelulehe erinevate toimetajate arv: $1',
+'pageinfo-title' => 'Teave lehekülje "$1" kohta',
+'pageinfo-header-edits' => 'Muudatusi',
+'pageinfo-header-watchlist' => 'Jälgimisloend',
+'pageinfo-header-views' => 'Vaatamisi',
+'pageinfo-subjectpage' => 'Lehekülg',
+'pageinfo-talkpage' => 'Arutelulehekülg',
+'pageinfo-watchers' => 'Jälgijate arv',
+'pageinfo-edits' => 'Redaktsioonide arv',
+'pageinfo-authors' => 'Eri autorite arv',
+'pageinfo-views' => 'Vaatamiste arv',
+'pageinfo-viewsperedit' => 'Vaatamisi redaktsiooni kohta',
# Skin names
'skinname-standard' => 'Algeline',
@@ -2844,26 +2914,6 @@ See on ilmselt põhjustatud linkimisest mustas nimekirjas olevasse välisvõrguk
'skinname-modern' => 'Uudne',
'skinname-vector' => 'Vektor',
-# Math options
-'mw_math_png' => 'Alati PNG',
-'mw_math_simple' => 'Kui väga lihtne, siis HTML, muidu PNG',
-'mw_math_html' => 'Võimaluse korral HTML, muidu PNG',
-'mw_math_source' => 'Säilitada TeX (tekstibrauserite puhul)',
-'mw_math_modern' => 'Soovitatav moodsate brauserite puhul',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'Arusaamatu süntaks',
-'math_unknown_error' => 'Tundmatu viga',
-'math_unknown_function' => 'Tundmatu funktsioon',
-'math_lexing_error' => 'Väljalugemisviga',
-'math_syntax_error' => 'Süntaksiviga',
-'math_image_error' => "PNG konverteerimine ebaõnnestus;
-kontrollige oma ''latex'', ''dvips'', ''gs'', ''convert'' installatsioonide korrektsust.",
-'math_bad_tmpdir' => 'Ajutise matemaatikakataloogi loomine või sinna kirjutamine ebaõnnestus',
-'math_bad_output' => 'Matemaatika-väljundkataloogi loomine või sinna kirjutamine ebaõnnestus',
-'math_notexvc' => 'Texvc-rakendus puudub; häälestamiseks vaata matemaatikakataloogist README-faili',
-
# Patrolling
'markaspatrolleddiff' => 'Märgi kui kontrollitud',
'markaspatrolledtext' => 'Märgi see leht kontrollituks',
@@ -2906,10 +2956,11 @@ Selle avamine võib su arvutit kahjustada.",
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|lehekülg|lehekülge}}',
'file-info' => 'faili suurus: $1, MIME tüüp: $2',
'file-info-size' => '$1 × $2 pikslit, faili suurus: $3, MIME tüüp: $4',
+'file-info-size-pages' => '$1 × $2 pikslit, faili suurus: $3 , MIME tüüp: $4, $5 {{PLURAL:$5|lehekülg|lehekülge}}',
'file-nohires' => '<small>Sellest suuremat pilti pole.</small>',
'svg-long-desc' => 'SVG fail, algsuurus $1 × $2 pikslit, faili suurus: $3',
'show-big-image' => 'Originaalsuurus',
-'show-big-image-thumb' => '<small>Selle eelvaate suurus: $1 × $2 pikslit</small>',
+'show-big-image-size' => '$1 × $2 pikslit',
'file-info-gif-looped' => 'korduv',
'file-info-gif-frames' => '$1 {{PLURAL:$1|kaader|kaadrit}}',
'file-info-png-looped' => 'korduv',
@@ -2940,7 +2991,7 @@ Samal real olevaid järgmiseid linke vaadeldakse kui erandeid, see tähendab art
Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud või täielikult eemaldatud.',
'metadata-expand' => 'Näita veel üksikasju',
'metadata-collapse' => 'Peida laiendatud üksikasjad',
-'metadata-fields' => 'Siin loetletud EXIF metaandmete välju näidatakse pildi kirjelduslehel vähemdetailse metaandmete vaate korral.
+'metadata-fields' => 'Siin loetletud pildi metaandmete välju näidatakse pildi kirjelduslehel vähemdetailse metaandmete vaate korral.
Ülejäänud andmed on vaikimisi peidetud.
* make
* model
@@ -2948,7 +2999,19 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Laius',
@@ -2962,13 +3025,11 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
'exif-ycbcrpositioning' => 'Y- ja C-positsioonimine',
'exif-xresolution' => 'Horisontaalne eraldus',
'exif-yresolution' => 'Vertikaalne eraldus',
-'exif-resolutionunit' => 'X ja Y resolutsiooni ühik',
'exif-stripoffsets' => 'Pildi andmete asukoht',
'exif-rowsperstrip' => 'Ridade arv riba kohta',
'exif-stripbytecounts' => 'Baitide hulk kokkusurutud riba kohta',
'exif-jpeginterchangeformat' => 'Kaugus JPEG SOI-ni',
'exif-jpeginterchangeformatlength' => 'JPEG-andmete suurus baitides',
-'exif-transferfunction' => 'Siirdefunktsioon',
'exif-whitepoint' => 'Valge punkti heledus',
'exif-primarychromaticities' => 'Põhivärvide värvsus',
'exif-ycbcrcoefficients' => 'Värviruumi ümberkujundamise maatriksi koefitsiendid',
@@ -2987,7 +3048,6 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
'exif-compressedbitsperpixel' => 'Pildi pakkimise meetod',
'exif-pixelydimension' => 'Pildi laius',
'exif-pixelxdimension' => 'Pildi kõrgus',
-'exif-makernote' => 'Tootja märkmed',
'exif-usercomment' => 'Kasutaja kommentaarid',
'exif-relatedsoundfile' => 'Seotud helifail',
'exif-datetimeoriginal' => 'Andmete loomise kuupäev ja kellaaeg',
@@ -3050,11 +3110,71 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
'exif-gpsareainformation' => 'GPS-ala nimi',
'exif-gpsdatestamp' => 'GPS kuupäev',
'exif-gpsdifferential' => 'GPS-i diferentsiaalparand',
+'exif-jpegfilecomment' => 'JPEG-faili kommentaar',
+'exif-keywords' => 'Märksõnad',
+'exif-worldregioncreated' => 'Maailma piirkond, kus pilt on üles võetud',
+'exif-countrycreated' => 'Maa, kus pilt on üles võetud',
+'exif-countrycodecreated' => 'Ülesvõtte maa ISO-kood',
+'exif-provinceorstatecreated' => 'Haldusüksus, kus pilt on üles võetud',
+'exif-citycreated' => 'Linn, kus pilt on üles võetud',
+'exif-sublocationcreated' => 'Linnaosa, kus pilt on üles võetud',
+'exif-worldregiondest' => 'Kujutatud maailma piirkond',
+'exif-countrydest' => 'Kujutatud maa',
+'exif-countrycodedest' => 'Kujutatud maa ISO-kood',
+'exif-provinceorstatedest' => 'Kujutatud haldusüksus',
+'exif-citydest' => 'Kujutatud linn',
+'exif-sublocationdest' => 'Kujutatud linnaosa',
'exif-objectname' => 'Lühipealkiri',
+'exif-specialinstructions' => 'Erijuhised',
+'exif-headline' => 'Pealkiri',
+'exif-source' => 'Allikas',
+'exif-urgency' => 'Pakilisus',
+'exif-locationdest' => 'Kujutatud asukoht',
+'exif-locationdestcode' => 'Kujutatud asukoha kood',
+'exif-objectcycle' => 'Päeva osa, milleks meediafail on ette nähtud',
+'exif-contact' => 'Kontaktteave',
+'exif-writer' => 'Autor',
+'exif-languagecode' => 'Keel',
+'exif-iimversion' => 'IIM-i versioon',
+'exif-iimcategory' => 'Kategooria',
+'exif-iimsupplementalcategory' => 'Lisakategooriad',
+'exif-datetimeexpires' => 'Mitte kasutada hiljem kui',
+'exif-datetimereleased' => 'Avaldamiskuupäev',
+'exif-identifier' => 'Identifikaator',
+'exif-lens' => 'Kasutatud objektiiv',
+'exif-serialnumber' => 'Kaamera seerianumber',
+'exif-cameraownername' => 'Kaamera omanik',
+'exif-label' => 'Silt',
+'exif-datetimemetadata' => 'Metaandmete viimane muutmisaeg',
+'exif-nickname' => 'Pildi vabas vormis nimi',
+'exif-rating' => 'Hinne (5 palli skaala)',
+'exif-copyrighted' => 'Autoriõiguslik seisund',
+'exif-copyrightowner' => 'Autoriõiguse valdaja',
+'exif-usageterms' => 'Kasutustingimused',
+'exif-webstatement' => 'Autoriõiguse ütlus võrgus',
+'exif-originaldocumentid' => 'Algse dokumendi ainuline ID',
+'exif-licenseurl' => 'Autoriõiguse litsentsi URL',
+'exif-morepermissionsurl' => 'Teave muude võimalike litsentside kohta',
+'exif-attributionurl' => 'Kui teost uuesti kasutad, lingi järgmiselt',
+'exif-preferredattributionname' => 'Kui teost uuesti kasutad, too ära järgmine autorinimi',
+'exif-pngfilecomment' => 'PNG-faili kommentaar',
+'exif-disclaimer' => 'Lahtiütlus',
+'exif-contentwarning' => 'Sisuhoiatus',
+'exif-giffilecomment' => 'GIF-faili kommentaar',
+'exif-intellectualgenre' => 'Üksuse tüüp',
+'exif-subjectnewscode' => 'Teemakood',
+'exif-event' => 'Kujutatud sündmus',
+'exif-organisationinimage' => 'Kujutatud organisatsioon',
+'exif-personinimage' => 'Kujutatud isik',
+'exif-originalimageheight' => 'Pildi kõrgus enne kärpimist',
+'exif-originalimagewidth' => 'Pildi laius enne kärpimist',
# EXIF attributes
'exif-compression-1' => 'Pakkimata',
+'exif-copyrighted-true' => 'Autoriõigustega kaitstud',
+'exif-copyrighted-false' => 'Avalikus omandis',
+
'exif-unknowndate' => 'Kuupäev teadmata',
'exif-orientation-1' => 'Normaalne',
@@ -3068,6 +3188,8 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
'exif-planarconfiguration-2' => 'tasapinnaline vorm',
+'exif-colorspace-65535' => 'Kalibreerimata',
+
'exif-componentsconfiguration-0' => 'ei ole',
'exif-exposureprogram-0' => 'Määratlemata',
@@ -3170,6 +3292,10 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
'exif-gpslongitude-e' => 'Idapikkus',
'exif-gpslongitude-w' => 'Läänepikkus',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meeter|meetrit}} üle merepinna',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meeter|meetrit}} allpool merepinda',
+
'exif-gpsstatus-a' => 'Mõõtmine pooleli',
'exif-gpsmeasuremode-2' => '2-mõõtmeline ulatus',
@@ -3180,21 +3306,67 @@ Kui faili on rakendustarkvaraga töödeldud, võib osa andmeid olla muudetud võ
'exif-gpsspeed-m' => 'Miili tunnis',
'exif-gpsspeed-n' => 'Sõlme',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilomeetrid',
+'exif-gpsdestdistance-m' => 'Miilid',
+'exif-gpsdestdistance-n' => 'Meremiilid',
+
+'exif-gpsdop-excellent' => 'Suurepärane ($1)',
+'exif-gpsdop-good' => 'Hea ($1)',
+'exif-gpsdop-moderate' => 'Keskpärane ($1)',
+'exif-gpsdop-fair' => 'Rahuldav ($1)',
+'exif-gpsdop-poor' => 'Vilets ($1)',
+
+'exif-objectcycle-a' => 'Ainult hommikuks',
+'exif-objectcycle-p' => 'Ainult õhtuks',
+'exif-objectcycle-b' => 'Nii hommikuks kui õhtuks',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Tegelik suund',
'exif-gpsdirection-m' => 'Magneetiline suund',
+'exif-dc-contributor' => 'Asjaosalised',
+'exif-dc-date' => 'Kuupäevad',
+'exif-dc-publisher' => 'Väljaandja',
+'exif-dc-relation' => 'Seotud teabevahendid',
+'exif-dc-rights' => 'Õigused',
+'exif-dc-source' => 'Allikmeediafail',
+'exif-dc-type' => 'Meediafaili tüüp',
+
+'exif-isospeedratings-overflow' => 'Suurem kui 65535',
+
+'exif-iimcategory-ace' => 'Kunstid, kultuur ja meelelahutus',
+'exif-iimcategory-clj' => 'Kuritegevus ja õigus',
+'exif-iimcategory-dis' => 'Katastroofid ja õnnetused',
+'exif-iimcategory-fin' => 'Majandus ja äri',
+'exif-iimcategory-edu' => 'Haridus',
+'exif-iimcategory-evn' => 'Keskkond',
+'exif-iimcategory-hth' => 'Tervis',
+'exif-iimcategory-hum' => 'Huviala',
+'exif-iimcategory-lab' => 'Töö',
+'exif-iimcategory-lif' => 'Eluviis ja vaba aeg',
+'exif-iimcategory-pol' => 'Poliitika',
+'exif-iimcategory-rel' => 'Religioon ja usk',
+'exif-iimcategory-sci' => 'Teadus ja tehnika',
+'exif-iimcategory-soi' => 'Sotsiaalküsimused',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Sõjad, konfliktid ja rahutused',
+'exif-iimcategory-wea' => 'Ilm',
+
+'exif-urgency-normal' => 'Harilik ($1)',
+'exif-urgency-low' => 'Madal ($1)',
+'exif-urgency-high' => 'Kõrge ($1)',
+'exif-urgency-other' => 'Kasutaja määratud tähtsus ($1)',
+
# External editor support
'edit-externally' => 'Töötle faili välise programmiga',
-'edit-externally-help' => '(Vaata väliste redaktorite [http://www.mediawiki.org/wiki/Manual:External_editors kasutusjuhendit])',
+'edit-externally-help' => '(Vaata väliste redaktorite [//www.mediawiki.org/wiki/Manual:External_editors kasutusjuhendit])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'kõik',
-'imagelistall' => 'kõik pildid',
-'watchlistall2' => 'Näita kõiki',
-'namespacesall' => 'kõik',
-'monthsall' => 'kõik',
-'limitall' => 'iga',
+'watchlistall2' => 'Näita kõiki',
+'namespacesall' => 'kõik',
+'monthsall' => 'kõik',
+'limitall' => 'iga',
# E-mail address confirmation
'confirmemail' => 'E-posti aadressi kinnitamine',
@@ -3260,17 +3432,24 @@ Selle kinnituskoodi aegumistähtaeg on $4.',
'trackbackremove' => '([$1 Kustuta])',
# Delete conflict
-'deletedwhileediting' => "'''Hoiatus''': Sel ajal, kui sina lehekülge redigeerisid, kustutas keegi selle ära!",
-'confirmrecreate' => "Kasutaja [[User:$1|$1]] ([[User talk:$1|arutelu]]) kustutas lehekülje sellel ajal, kui sina seda redigeerisid. Põhjus:
+'deletedwhileediting' => "'''Hoiatus''': Sel ajal, kui sina lehekülge redigeerisid, kustutas keegi selle ära!",
+'confirmrecreate' => "Kasutaja [[User:$1|$1]] ([[User talk:$1|arutelu]]) kustutas lehekülje sellel ajal, kui sina seda redigeerisid. Põhjus:
: ''$2''
Palun kinnita, et soovid tõesti selle lehekülje taasluua.",
-'recreate' => 'Taasta',
+'confirmrecreate-noreason' => 'Kasutaja [[User:$1|$1]] ([[User talk:$1|arutelu]]) kustutas selle lehekülje, pärast seda kui redigeerimist alustasid. Palun kinnita, et tahad tõesti selle lehekülje uuesti luua.',
+'recreate' => 'Taasta',
# action=purge
'confirm_purge_button' => 'Sobib',
'confirm-purge-top' => 'Tühjenda selle lehekülje vahemälu?',
'confirm-purge-bottom' => 'Toiming puhastab lehekülje vahemälu ja kuvab uusima versiooni.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Sobib',
+'confirm-watch-top' => 'Kas lisad selle lehekülje oma jälgimisloendisse?',
+'confirm-unwatch-button' => 'Sobib',
+'confirm-unwatch-top' => 'Kas eemaldad selle lehekülje oma jälgimisloendist?',
+
# Multipage image navigation
'imgmultipageprev' => '↠eelmine lehekülg',
'imgmultipagenext' => 'järgmine lehekülg →',
@@ -3312,7 +3491,7 @@ Proovi tavalist eelvaadet.',
'watchlistedit-normal-title' => 'Jälgimisloendi redigeerimine',
'watchlistedit-normal-legend' => 'Jälgimisloendist lehtede eemaldamine',
'watchlistedit-normal-explain' => 'Need lehed on sinu jälgimisloendis.
-Jälgimisloendist lehtekülgede eemaldamiseks tee vastava lehekülje ees olevasse kastikesse linnuke ja klõpsa nuppu "{{int:Watchlistedit-normal-submit}}". Saad ka jälgimisloendi [[Special:Watchlist/raw|algandmeid muuta]].',
+Jälgimisloendist lehtekülgede eemaldamiseks tee vastava lehekülje ees olevasse kastikesse linnuke ja klõpsa nuppu "{{int:Watchlistedit-normal-submit}}". Saad ka jälgimisloendi [[Special:EditWatchlist/raw|algandmeid muuta]].',
'watchlistedit-normal-submit' => 'Eemalda valitud lehed',
'watchlistedit-normal-done' => 'Jälgimisloendist eemaldati {{PLURAL:$1|üks lehekülg|$1 lehekülge}}:',
'watchlistedit-raw-title' => 'Jälgimisloendi algandmed',
@@ -3320,7 +3499,7 @@ Jälgimisloendist lehtekülgede eemaldamiseks tee vastava lehekülje ees olevass
'watchlistedit-raw-explain' => 'Sinu jälgimisloendis olevad leheküljed on kuvatud allpool asuvas tekstikastis, kus sa saad neid lisada või eemaldada;
Iga pealkiri asub ise real.
Kui sa oled lõpetanud, kliki nuppu "{{int:Watchlistedit-raw-submit}}".
-Sa võid [[Special:Watchlist/edit|kasutada ka harilikku tekstiredaktorit]].',
+Sa võid [[Special:EditWatchlist|kasutada ka harilikku tekstiredaktorit]].',
'watchlistedit-raw-titles' => 'Pealkirjad:',
'watchlistedit-raw-submit' => 'Uuenda jälgimisloendit',
'watchlistedit-raw-done' => 'Sinu jälgimisloend on uuendatud.',
@@ -3337,33 +3516,33 @@ Sa võid [[Special:Watchlist/edit|kasutada ka harilikku tekstiredaktorit]].',
'duplicate-defaultsort' => '\'\'\'Hoiatus:\'\'\' Järjestamisvõti "$2" tühistab eespool oleva järjestamisvõtme "$1".',
# Special:Version
-'version' => 'Versioon',
-'version-extensions' => 'Paigaldatud lisad',
-'version-specialpages' => 'Erileheküljed',
-'version-parserhooks' => 'Süntaksianalüsaatori lisad (Parser hooks)',
-'version-variables' => 'Muutujad',
-'version-skins' => 'Kujundused',
-'version-other' => 'Muu',
-'version-mediahandlers' => 'Meediatöötlejad',
-'version-hooks' => 'Redaktsioon',
-'version-extension-functions' => 'Lisafunktsioonid',
-'version-parser-extensiontags' => 'Parseri lisamärgendid',
-'version-parser-function-hooks' => 'Parserifunktsioonid',
-'version-skin-extension-functions' => 'Kujunduse lisa funktsioonid',
-'version-hook-name' => 'Redaktsiooni nimi',
-'version-hook-subscribedby' => 'Tellijad',
-'version-version' => '(Versioon $1)',
-'version-license' => 'Litsents',
-'version-poweredby-credits' => "See viki kasutab '''[http://www.mediawiki.org/ MediaWiki]''' tarkvara. Autoriõigus © 2001-$1 $2.",
-'version-poweredby-others' => 'teised',
-'version-license-info' => "MediaWiki on vaba tarkvara; tohid seda taaslevitada ja/või selle põhjal teisendeid luua vastavalt Vaba Tarkvara Fondi avaldatud GNU Üldise Avaliku Litsentsi versioonis 2 või hilisemas seatud tingimustele.
+'version' => 'Versioon',
+'version-extensions' => 'Paigaldatud lisad',
+'version-specialpages' => 'Erileheküljed',
+'version-parserhooks' => 'Süntaksianalüsaatori lisad (Parser hooks)',
+'version-variables' => 'Muutujad',
+'version-antispam' => 'Rämpsposti tõkestus',
+'version-skins' => 'Kujundused',
+'version-other' => 'Muu',
+'version-mediahandlers' => 'Meediatöötlejad',
+'version-hooks' => 'Redaktsioon',
+'version-extension-functions' => 'Lisafunktsioonid',
+'version-parser-extensiontags' => 'Parseri lisamärgendid',
+'version-parser-function-hooks' => 'Parserifunktsioonid',
+'version-hook-name' => 'Redaktsiooni nimi',
+'version-hook-subscribedby' => 'Tellijad',
+'version-version' => '(Versioon $1)',
+'version-license' => 'Litsents',
+'version-poweredby-credits' => "See viki kasutab '''[//www.mediawiki.org/ MediaWiki]''' tarkvara. Autoriõigus © 2001-$1 $2.",
+'version-poweredby-others' => 'teised',
+'version-license-info' => "MediaWiki on vaba tarkvara; tohid seda taaslevitada ja/või selle põhjal teisendeid luua vastavalt Vaba Tarkvara Fondi avaldatud GNU Üldise Avaliku Litsentsi versioonis 2 või hilisemas seatud tingimustele.
MediaWiki tarkvara levitatakse lootuses, et see on kasulik, aga '''igasuguse tagatiseta''', ka kaudse tagatiseta teose '''turustatavuse''' või '''müügikõlblikkuse''' kohta. Üksikasjad leiad GNU Üldisest Avalikust Litsentsist.
-GNU Üldise Avaliku Litsentsi [{{SERVER}}{{SCRIPTPATH}}/COPYING eksemplar] peaks selle programmiga kaasas olema; kui pole, kirjuta aadressil Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA või [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html loe seda võrgust].",
-'version-software' => 'Paigaldatud tarkvara',
-'version-software-product' => 'Toode',
-'version-software-version' => 'Versioon',
+GNU Üldise Avaliku Litsentsi [{{SERVER}}{{SCRIPTPATH}}/COPYING eksemplar] peaks selle programmiga kaasas olema; kui pole, kirjuta aadressil Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA või [//www.gnu.org/licenses/old-licenses/gpl-2.0.html loe seda võrgust].",
+'version-software' => 'Paigaldatud tarkvara',
+'version-software-product' => 'Toode',
+'version-software-version' => 'Versioon',
# Special:FilePath
'filepath' => 'Failitee',
@@ -3373,22 +3552,22 @@ GNU Ãœldise Avaliku Litsentsi [{{SERVER}}{{SCRIPTPATH}}/COPYING eksemplar] peaks
Pilt kuvatakse algupärases suuruses, muu fail avatakse koheselt seostuva programmiga.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Faili duplikaatide otsimine',
-'fileduplicatesearch-summary' => 'Otsi duplikaatfaile nende räsiväärtuse järgi.
-
-Sisesta faili nimi eesliiteta "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Otsi faili duplikaati',
-'fileduplicatesearch-filename' => 'Faili nimi:',
-'fileduplicatesearch-submit' => 'Otsi',
-'fileduplicatesearch-info' => '$1 × $2 pikslit<br />Faili suurus: $3<br />MIME-tüüp: $4',
-'fileduplicatesearch-result-1' => 'Failil "$1" ei ole identset duplikaati.',
-'fileduplicatesearch-result-n' => 'Failil "$1" on {{PLURAL:$2|1 samane duplikaat|$2 samast duplikaati}}.',
+'fileduplicatesearch' => 'Faili duplikaatide otsimine',
+'fileduplicatesearch-summary' => 'Otsi duplikaatfaile nende räsiväärtuse järgi.',
+'fileduplicatesearch-legend' => 'Otsi faili duplikaati',
+'fileduplicatesearch-filename' => 'Faili nimi:',
+'fileduplicatesearch-submit' => 'Otsi',
+'fileduplicatesearch-info' => '$1 × $2 pikslit<br />Faili suurus: $3<br />MIME-tüüp: $4',
+'fileduplicatesearch-result-1' => 'Failil "$1" ei ole identset duplikaati.',
+'fileduplicatesearch-result-n' => 'Failil "$1" on {{PLURAL:$2|1 samane duplikaat|$2 samast duplikaati}}.',
+'fileduplicatesearch-noresults' => 'Faili nimega "$1" ei leidu.',
# Special:SpecialPages
'specialpages' => 'Erileheküljed',
'specialpages-note' => '----
* Harilikud erileheküljed
-* <strong class="mw-specialpagerestricted">Piiranguga erileheküljed.</strong>',
+* <span class="mw-specialpagerestricted">Piiranguga erileheküljed</span>
+* <span class="mw-specialpagecached">Uuendamata sisuga erileheküljed (ei pruugi enam kasutuses olla)</span>',
'specialpages-group-maintenance' => 'Hooldusaruanded',
'specialpages-group-other' => 'Teised erileheküljed',
'specialpages-group-login' => 'Sisselogimine ja registreerumine',
diff --git a/languages/messages/MessagesEu.php b/languages/messages/MessagesEu.php
index d9a11884..833c7e59 100644
--- a/languages/messages/MessagesEu.php
+++ b/languages/messages/MessagesEu.php
@@ -47,58 +47,58 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'BirzuzenketaBikoitzak' ),
+ 'Allmessages' => array( 'MezuGuztiak' ),
+ 'Allpages' => array( 'OrrialdeGuztiak' ),
+ 'Ancientpages' => array( 'OrrialdeZaharrak' ),
+ 'Blankpage' => array( 'OrrialdeZuria' ),
+ 'Block' => array( 'Blokeatu' ),
+ 'Blockme' => array( 'BlokeaNazazu' ),
'BrokenRedirects' => array( 'HautsitakoBirzuzenketak' ),
- 'Disambiguations' => array( 'Argipenak' ),
- 'Userlogin' => array( 'SaioaHasi' ),
- 'Userlogout' => array( 'SaioaItxi' ),
+ 'Categories' => array( 'Kategoriak' ),
+ 'ChangePassword' => array( 'PasahitzaAldatu' ),
+ 'Confirmemail' => array( 'EmailaBaieztatu' ),
+ 'Contributions' => array( 'Ekarpenak' ),
'CreateAccount' => array( 'KontuaSortu' ),
- 'Preferences' => array( 'Hobespenak' ),
- 'Watchlist' => array( 'JarraipenZerrenda' ),
- 'Recentchanges' => array( 'AzkenAldaketak' ),
- 'Upload' => array( 'Igo' ),
+ 'Disambiguations' => array( 'Argipenak' ),
+ 'DoubleRedirects' => array( 'BirzuzenketaBikoitzak' ),
+ 'Emailuser' => array( 'LankideEmaila' ),
+ 'Export' => array( 'Esportatu' ),
+ 'Import' => array( 'Inportatu' ),
+ 'Listadmins' => array( 'AdministratzaileZerrenda' ),
+ 'Listbots' => array( 'BotZerrenda' ),
'Listfiles' => array( 'FitxategiZerrenda' ),
- 'Newimages' => array( 'FitxategiBerriak' ),
'Listusers' => array( 'LankideZerrenda' ),
- 'Statistics' => array( 'Estatistikak' ),
+ 'Longpages' => array( 'OrrialdeLuzeak' ),
+ 'Movepage' => array( 'OrrialdeaMugitu' ),
+ 'Mycontributions' => array( 'NireEkarpenak' ),
+ 'Mypage' => array( 'NireOrrialdea' ),
+ 'Mytalk' => array( 'NireEztabaida' ),
+ 'Newimages' => array( 'FitxategiBerriak' ),
+ 'Newpages' => array( 'OrrialdeBerriak' ),
+ 'Preferences' => array( 'Hobespenak' ),
+ 'Protectedpages' => array( 'BabestutakoOrrialdeak' ),
+ 'Protectedtitles' => array( 'BabestutakoIzenburuak' ),
'Randompage' => array( 'Ausazkoa' ),
- 'Uncategorizedpages' => array( 'KategorizatuGabekoOrrialdeak' ),
+ 'Recentchanges' => array( 'AzkenAldaketak' ),
+ 'Search' => array( 'Bilatu' ),
+ 'Shortpages' => array( 'OrrialdeMotzak' ),
+ 'Specialpages' => array( 'OrrialdeBereziak' ),
+ 'Statistics' => array( 'Estatistikak' ),
+ 'Tags' => array( 'Etiketak' ),
'Uncategorizedcategories' => array( 'KategorizatuGabekoKategoriak' ),
'Uncategorizedimages' => array( 'KategorizatuGabekoFitxategiak' ),
+ 'Uncategorizedpages' => array( 'KategorizatuGabekoOrrialdeak' ),
'Uncategorizedtemplates' => array( 'KategorizatuGabekoTxantiloiak' ),
- 'Wantedpages' => array( 'EskatutakoOrrialdeak' ),
+ 'Upload' => array( 'Igo' ),
+ 'Userlogin' => array( 'SaioaHasi' ),
+ 'Userlogout' => array( 'SaioaItxi' ),
+ 'Version' => array( 'Bertsioa' ),
'Wantedcategories' => array( 'EskatutakoKategoriak' ),
'Wantedfiles' => array( 'EskatutakoFitxategiak' ),
+ 'Wantedpages' => array( 'EskatutakoOrrialdeak' ),
'Wantedtemplates' => array( 'EskatutakoTxantiloiak' ),
- 'Shortpages' => array( 'OrrialdeMotzak' ),
- 'Longpages' => array( 'OrrialdeLuzeak' ),
- 'Newpages' => array( 'OrrialdeBerriak' ),
- 'Ancientpages' => array( 'OrrialdeZaharrak' ),
- 'Protectedpages' => array( 'BabestutakoOrrialdeak' ),
- 'Protectedtitles' => array( 'BabestutakoIzenburuak' ),
- 'Allpages' => array( 'OrrialdeGuztiak' ),
- 'Specialpages' => array( 'OrrialdeBereziak' ),
- 'Contributions' => array( 'Ekarpenak' ),
- 'Emailuser' => array( 'LankideEmaila' ),
- 'Confirmemail' => array( 'EmailaBaieztatu' ),
+ 'Watchlist' => array( 'JarraipenZerrenda' ),
'Whatlinkshere' => array( 'ZerkLotzenDuHona' ),
- 'Movepage' => array( 'OrrialdeaMugitu' ),
- 'Blockme' => array( 'BlokeaNazazu' ),
- 'Categories' => array( 'Kategoriak' ),
- 'Export' => array( 'Esportatu' ),
- 'Version' => array( 'Bertsioa' ),
- 'Allmessages' => array( 'MezuGuztiak' ),
- 'Blockip' => array( 'Blokeatu' ),
- 'Import' => array( 'Inportatu' ),
- 'Mypage' => array( 'NireOrrialdea' ),
- 'Mytalk' => array( 'NireEztabaida' ),
- 'Mycontributions' => array( 'NireEkarpenak' ),
- 'Listadmins' => array( 'AdministratzaileZerrenda' ),
- 'Listbots' => array( 'BotZerrenda' ),
- 'Search' => array( 'Bilatu' ),
- 'Resetpass' => array( 'PasahitzaAldatu' ),
- 'Blankpage' => array( 'OrrialdeZuria' ),
- 'Tags' => array( 'Etiketak' ),
);
$magicWords = array(
@@ -154,8 +154,8 @@ $messages = array(
'tog-shownumberswatching' => 'Jarraitzen duen erabiltzaile kopurua erakutsi',
'tog-oldsig' => 'Dagoen sinaduraren aurreikuspena:',
'tog-fancysig' => 'Sinadura wikitestu gisa tratatu (lotura automatikorik gabe)',
-'tog-externaleditor' => 'Lehenetsi bezala kanpoko editore bat erabili (adituentzako bakarrik, zure ordenagailuak konfigurazio berezia izan behar du. [http://www.mediawiki.org/wiki/Manual:External_editors Informazio gehiago.])',
-'tog-externaldiff' => 'Lehenetsi bezala kanpoko diff erreminta erabili (adituentzako bakarrik, zure ordenagailuak konfigurazio berezia izan behar du. [http://www.mediawiki.org/wiki/Manual:External_editors Informazio gehiago.])',
+'tog-externaleditor' => 'Lehenetsi bezala kanpoko editore bat erabili (adituentzako bakarrik, zure ordenagailuak konfigurazio berezia izan behar du. [//www.mediawiki.org/wiki/Manual:External_editors Informazio gehiago.])',
+'tog-externaldiff' => 'Lehenetsi bezala kanpoko diff erreminta erabili (adituentzako bakarrik, zure ordenagailuak konfigurazio berezia izan behar du. [//www.mediawiki.org/wiki/Manual:External_editors Informazio gehiago.])',
'tog-showjumplinks' => '"Hona jo" irisgarritasun loturak gaitu',
'tog-uselivepreview' => 'Zuzeneko aurrebista erakutsi (JavaScript) (Proba fasean)',
'tog-forceeditsummary' => 'Aldaketaren laburpena zuri uzterakoan ohartarazi',
@@ -252,15 +252,6 @@ $messages = array(
'index-category' => 'Indexatutako orrialdeak',
'noindex-category' => 'Indexatugabeko orrialdeak',
-'mainpagetext' => "'''MediaWiki arrakastaz instalatu da.'''",
-'mainpagedocfooter' => 'Ikus [http://meta.wikimedia.org/wiki/Help:Contents Erabiltzaile Gida] wiki softwarea erabiltzen hasteko informazio gehiagorako.
-
-== Nola hasi ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Konfigurazio balioen zerrenda]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ (Maiz egindako galderak)]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWikiren argitalpenen posta zerrenda]',
-
'about' => 'Honi buruz',
'article' => 'Artikulua',
'newwindow' => '(leiho berrian irekitzen da)',
@@ -311,10 +302,10 @@ $messages = array(
'history' => 'Orrialdearen historia',
'history_short' => 'Historia',
'updatedmarker' => 'nire azkeneko bisitaz geroztik eguneratuta',
-'info_short' => 'Informazioa',
'printableversion' => 'Inprimatzeko bertsioa',
'permalink' => 'Lotura finkoa',
'print' => 'Inprimatu',
+'view' => 'Ikusi',
'edit' => 'Aldatu',
'create' => 'Sortu',
'editthispage' => 'Orrialde hau aldatu',
@@ -322,6 +313,7 @@ $messages = array(
'delete' => 'Ezabatu',
'deletethispage' => 'Orrialde hau ezabatu',
'undelete_short' => 'Berreskuratu {{PLURAL:$1|aldaketa bat|$1 aldaketa}}',
+'viewdeleted_short' => 'Ikusi ezabatutako {{PLURAL:$1|bidalketa bat|$1 bidalketa}}',
'protect' => 'Babestu',
'protect_change' => 'aldatu',
'protectthispage' => 'Orrialde hau babestu',
@@ -404,6 +396,8 @@ $1',
'toc' => 'Edukiak',
'showtoc' => 'erakutsi',
'hidetoc' => 'ezkutatu',
+'collapsible-collapse' => 'Itxi',
+'collapsible-expand' => 'Zabaldu',
'thisisdeleted' => '$1 ikusi edo leheneratu?',
'viewdeleted' => '$1 ikusi?',
'restorelink' => '{{PLURAL:$1|ezabatutako aldaketa bat|ezabatutako $1 aldaketa}}',
@@ -498,12 +492,11 @@ Saia zaitez berriro minutu batzuen buruan, mesedez.',
'protectedinterface' => 'Orrialde honek softwarearentzako interfaze testua gordetzen du eta blokeatuta dago bandalismoak saihesteko.',
'editinginterface' => "'''Oharra:''' Softwarearentzako interfaze testua duen orrialde bat aldatzen ari zara.
Orrialde honetako aldaketek erabiltzaile guztiei eragingo die.
-Itzulpenetarako, [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] erabili ezazu, MediaWiki proiektuan.",
+Itzulpenetarako, [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] erabili ezazu, MediaWiki proiektuan.",
'sqlhidden' => '(ezkutuko SQL kontsulta)',
'cascadeprotected' => "Orrialde hau aldaketen aurka babestua dago, ''kaskada'' aukerarekin babestu {{PLURAL:$1|duten orrialde honetan|dituzten orrialde hauetan}} txertaturik dagoelako:
$2",
'namespaceprotected' => "Ez daukazu '''$1''' izen-tarteko orrialdeak aldatzeko baimenik.",
-'customcssjsprotected' => 'Ez daukazu orrialde hau aldatzeko baimenik, beste erabiltzaile baten hobespenak definitzen dituelako.',
'ns-specialprotected' => 'Ezin dira {{ns:special}} izen-tarteko orrialdeak editatu.',
'titleprotected' => "[[User:$1|$1]]ek izenburu hau sortzea ekidin zuen.
Emandako arrazoia ''$2'' izan zen.",
@@ -541,6 +534,7 @@ Zure kontua sortu egin da. Ez ahaztu [[Special:Preferences|{{SITENAME}}(e)ko hob
'createaccount' => 'Kontua sortu',
'gotaccount' => "Baduzu erabiltzaile kontua? '''$1'''.",
'gotaccountlink' => 'Saioa hasi',
+'userlogin-resetlink' => 'Saioa hasteko datuak ahaztu dituzu?',
'createaccountmail' => 'e-postaz',
'createaccountreason' => 'Arrazoia:',
'badretype' => 'Idatzitako pasahitzak ez dira berdinak.',
@@ -550,13 +544,15 @@ Mesedez, beste bat aukeratu.',
'createaccounterror' => 'Ezin izan da kontua sortu: $1',
'nocookiesnew' => 'Erabiltzaile kontua sortu da, baina ez da saioa hasi. {{SITENAME}}(e)k cookieak erabiltzen ditu saioekin eta ezgaituta dauzkazu. Gaitu itzazu mesedez, eta ondoren saiatu saioa hasten zure erabiltzaile izen eta pasahitz berriak erabiliz.',
'nocookieslogin' => '{{SITENAME}}(e)k cookieak erabiltzen ditu saioekin eta ezgaituta dauzkazu. Gaitu itzazu mesedez, eta saiatu berriz.',
+'nocookiesfornew' => 'Erabiltzaile kontua ez da sortu, bere jatorria ezin delako ziurtatu.
+Ziurta ezazu cookiak gaiturik dituzula, birkargatu orrialde hau eta saia saitez berriro ere.',
'noname' => 'Ez duzu baliozko erabiltzaile izen bat zehaztu.',
'loginsuccesstitle' => 'Saio hasiera egina',
'loginsuccess' => "'''Saioa hasi duzu {{SITENAME}}(e)n \"\$1\" izenarekin.'''",
'nosuchuser' => 'Ez dago "$1" izena duen lankiderik.
Lankide izenak zehatza izan behar du.
Egiaztatu ondo idatzi duzun, edo [[Special:UserLogin/signup|kontu berria sor ezazu]].',
-'nosuchusershort' => 'Ez dago "<nowiki>$1</nowiki>" izena duen erabiltzailerik. Egiaztatu ongi idatzi duzula.',
+'nosuchusershort' => 'Ez dago "$1" izena duen erabiltzailerik. Egiaztatu ongi idatzi duzula.',
'nouserspecified' => 'Erabiltzaile izena zehaztu beharra daukazu.',
'login-userblocked' => 'Erabiltzailea blokeatua dago. Ezin du saioa hasi.',
'wrongpassword' => 'Pasahitza ez da zuzena. Saiatu berriz.',
@@ -609,7 +605,7 @@ Berriro saiatu aurretik itxaron ezazu, mesedez.',
# E-mail sending
'php-mail-error-unknown' => 'PHPren mail() funtzioan arazo ezezagun bat egon da.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Pasahitza aldatu',
'resetpass_announce' => 'E-postaz jasotako kode tenporal baten bidez saioa hasi duzu. Saioa hasierarekin jarraitzeko, pasahitz berri bat definitu beharra daukazu:',
'resetpass_text' => '<!-- Testua hemen idatzi -->',
@@ -627,6 +623,15 @@ Berriro saiatu aurretik itxaron ezazu, mesedez.',
Agian dagoeneko ondo aldatu duzu zure pasahitza edo behin-behineko pasahitza bat eskatu duzu.',
'resetpass-temp-password' => 'Behin-behineko pasahitza:',
+# Special:PasswordReset
+'passwordreset' => 'Pasahitzaren berrezarpena',
+'passwordreset-legend' => 'Pasahitza berrezarri',
+'passwordreset-username' => 'Lankide izena:',
+'passwordreset-email' => 'E-mail helbidea:',
+'passwordreset-emailelement' => 'Erabiltzaile izena: $1
+Behin-behineko pasahitza: $2',
+'passwordreset-emailsent' => 'Gogorarazteko e-posta bidali da.',
+
# Edit page toolbar
'bold_sample' => 'Testu beltza',
'bold_tip' => 'Testu beltza',
@@ -638,8 +643,6 @@ Agian dagoeneko ondo aldatu duzu zure pasahitza edo behin-behineko pasahitza bat
'extlink_tip' => 'Kanpo lotura (gogoratu http:// aurrizkia)',
'headline_sample' => 'Goiburuko testua',
'headline_tip' => '2. mailako goiburukoa',
-'math_sample' => 'Formula hemen idatzi',
-'math_tip' => 'Formula matematikoa (LaTeX)',
'nowiki_sample' => 'Formatu gabeko testua hemen idatzi',
'nowiki_tip' => 'Ez egin jaramonik wiki formatuari',
'image_sample' => 'Adibidea.jpg',
@@ -654,7 +657,7 @@ Agian dagoeneko ondo aldatu duzu zure pasahitza edo behin-behineko pasahitza bat
'subject' => 'Izenburua:',
'minoredit' => 'Hau aldaketa txikia da',
'watchthis' => 'Orrialde hau jarraitu',
-'savearticle' => 'Orrialdea gorde',
+'savearticle' => 'Gorde orria',
'preview' => 'Aurrebista erakutsi',
'showpreview' => 'Aurrebista erakutsi',
'showlivepreview' => 'Zuzeneko aurrebista',
@@ -667,33 +670,34 @@ Agian dagoeneko ondo aldatu duzu zure pasahitza edo behin-behineko pasahitza bat
'summary-preview' => 'Laburpenaren aurreikuspena:',
'subject-preview' => 'Gaia/Izenburuaren aurreikuspena:',
'blockedtitle' => 'Erabiltzailea blokeatuta dago',
-'blockedtext' => "'''Zure lankide izena edo IP helbidea blokeaturik dago'''
-Blokeoa $1(e)k egin zuen.
-Emandako arrazoia ''$2'' da.
+'blockedtext' => "'''Zure erabiltzaile izena edo IP helbidea blokeaturik dago.'''
+
+$1 administratzaileak ezarri du blokeoa.
+Emandako arrazoia hau da: ''$2''.
* Blokeoaren hasiera: $8
* Blokeoaren bukaera: $6
-* Blokeoaren intentzioa: $7
+* Blokeatua: $7
-$1 edo beste [[{{MediaWiki:Grouppage-sysop}}|administratzaile]] batekin kontakta dezakezu blokeaoren inguruan eztabaidatzeko.
-Ezin duzu 'lanki honi e-posta bidali' tresna bidali ez baduzu zuren [[Special:Preferences|hobespenetan]] baliozko e-mail helbide bat jarri edo tresna erabiltzea ere ukatu badizute.
-
-Orain duzun IP helbidea $3 da eta zure blokeo zenbakia #$5 da.
-Mesedez, datu guzti hauek idatzi egiten duzun edozein galderarako.",
-'autoblockedtext' => 'Zure IP helbidea automatikoki blokeaturik dago, $1(e)k blokeatu zuen beste erabiltzaile batek erabili zuelako. Emandako arrazoia honakoa da:
+Blokeoari buruz eztabaidatzeko, jo ezazu $1 administratzailearengana edo beste [[{{MediaWiki:Grouppage-sysop}}|administratzaile]] batengana.
+«Bidali mezu elektronikoa lankide honi» tresna erabili ahal izateko, ezinbestekoa da zure [[Special:Preferences|hobespenetan]] baliozkoa den helbide elektroniko bat emanda izatea, eta tresna hori erabiltzeko aukera zuri blokeatu ez izana.
+Orain duzun IP helbidea $3 da, eta blokeoaren zenbakia #$5 da.
+Eman itzazu datu hauek guztiak, blokeoari buruzko edozein eskaera egitean.",
+'autoblockedtext' => "Zure IP helbidea automatikoki blokeaturik dago, $1 administratzaileak blokeatutako beste wikilari batek erabili zuelako. Emandako arrazoia hau da:
-:\'\'$2\'\'
+:''$2''
* Blokeoaren hasiera: $8
* Blokeoaren bukaera: $6
-* Blokeo saiakera: $7
+* Blokeatua: $7
-$1 edo beste [[{{MediaWiki:Grouppage-sysop}}|administratzaile]] bat kontakta dezakezu blokeoaren inguruan hitz egiteko.
+Blokeoari buruz eztabaidatzeko, jo ezazu $1 administratzailearengana edo beste [[{{MediaWiki:Grouppage-sysop}}|administratzaile]] batengana.
-Ohar zaitez ezin duzula "lankide honi e-mail bat bidali" tresna erabili ez baduzu zuren [[Special:Preferences|hobespenetan]] baliagarria den e-mail helbide bat eman eta gainera tresna hau erabiltzeko aukera ez badizute murriztu.
+«Bidali mezu elektronikoa lankide honi» tresna erabili ahal izateko, ezinbestekoa da zure [[Special:Preferences|hobespenetan]] baliozkoa den helbide elektroniko bat emanda izatea, eta tresna hori erabiltzeko aukera zuri blokeatu ez izana.
Orain duzun IP helbidea $3 da, eta blokeoaren zenbakia #$5 da.
-Mesedez, detaile hauek eman itzazu egin nahi duzun edozein kontsulta egiteko garaian.',
+
+Eman itzazu datu hauek guztiak, blokeoari buruzko edozein eskaera egitean.",
'blockednoreason' => 'ez da arrazoirik zehaztu',
'blockedoriginalsource' => "Jarraian ikus daiteke '''$1'''(r)en kodea:",
'blockededitsource' => "Jarraian ikus daitezke '''$1'''(e)n egin dituzun aldaketak:",
@@ -723,7 +727,7 @@ edo [{{fullurl:{{FULLPAGENAME}}|action=edit}} berau aldatu ere egin dezakezu]</s
'noarticletext-nopermission' => 'Une honetan ez dago texturik orri honetan.
Beste orrietan [[Special:Search/{{PAGENAME}}|testua bilatu dezakezu]],
edo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} erlazionatutako erregistroak ikusi]</span>.',
-'userpage-userdoesnotexist' => '"$1" lankidea ez dago erregistatuta. Mesedez, konprobatu orri hau editatu/sortu nahi duzun.',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" lankidea ez dago erregistatuta. Mesedez, konprobatu orri hau editatu/sortu nahi duzun.',
'userpage-userdoesnotexist-view' => '"$1" erabiltzaile-kontua ez dago erregistraturik.',
'blocked-notice-logextract' => 'Erabiltzaile hau blokeatuta dago une honetan.
Azken blokeoaren erregistroa ageri da behean, erreferentzia gisa:',
@@ -844,7 +848,7 @@ $3(e)k emandako arrazoia: ''$2''",
'viewpagelogs' => 'Orrialde honen erregistroak ikusi',
'nohistory' => 'Orrialde honek ez dauka aldaketa historiarik.',
'currentrev' => 'Oraingo berrikuspena',
-'currentrev-asof' => '$1 datarekin, hauxe da uneko bertsioa:',
+'currentrev-asof' => 'Hauxe da oraingo bertsioa, $1 data duena',
'revisionasof' => '$1(e)ko berrikuspena',
'revision-info' => '$2(r)en berrikusketa, ordua: $1',
'previousrevision' => 'â†Berrikuspen zaharragoa',
@@ -936,7 +940,7 @@ Administratzailea zarenez, diff hau ikus dezakezu. Xehetasunak ikusgai daude [{{
'revdelete-log' => 'Arrazoia:',
'revdelete-submit' => 'Hautatutako {{PLURAL:$1|berrikuspenari|berrikuspenei}} aplikatu',
'revdelete-logentry' => '[[$1]](r)entzako berriskupen ikusgaitasuna aldatu da',
-'logdelete-logentry' => '[[$1]]en gertakarien ikusgarritasuna aldatu da',
+'logdelete-logentry' => '[[$1]] zerrendako gertakarien ikusgaitasuna aldatu da',
'revdelete-success' => "'''Berrikuspenen ikusgarritasuna eguneratu da.'''",
'revdelete-failure' => "'''Ezin da berrikuspenaren ikuspena eguneratu:'''
$1",
@@ -949,14 +953,14 @@ $1",
'pagehist' => 'Orriaren historia',
'deletedhist' => 'Ezabatutako historia',
'revdelete-content' => 'edukia',
-'revdelete-summary' => 'laburpena aldatu',
-'revdelete-uname' => 'Erabiltzaile izena',
-'revdelete-restricted' => 'administratzaileei ezarritako mugak',
-'revdelete-unrestricted' => 'Administratzaileentzako mugak kendu dira',
-'revdelete-hid' => '$1 aldatu',
-'revdelete-unhid' => '$1 azalarazi',
+'revdelete-summary' => 'aldaketaren laburpena',
+'revdelete-uname' => 'lankide izena',
+'revdelete-restricted' => 'administratzaileentzako mugak ezarri dira',
+'revdelete-unrestricted' => 'administratzaileentzako mugak kendu dira',
+'revdelete-hid' => '$1 ezkutatu da',
+'revdelete-unhid' => '$1 agerrarazi da',
'revdelete-log-message' => '$1 {{PLURAL:$2|berrikuste baterako|$2 berrikustetarako}}',
-'logdelete-log-message' => '$1(e)tik {{PLURAL:$2|gertakari $2|$2 gertakari}}',
+'logdelete-log-message' => '$1 {{PLURAL:$2|gertakari baterako|$2 gertakaritarako}}',
'revdelete-hide-current' => 'Errorea, $1 $2 data duen elementua ezkutatzean: hau da oraingo bertsioa.
Ezin da ezkutatu.',
'revdelete-show-no-access' => 'Errorea, $1 $2 data duen elementua erakustean: elementu hau «mugatua» dela markatu da.
@@ -968,9 +972,9 @@ Ezin duzu atzitu.',
'revdelete-concurrent-change' => 'Errorea, $1 $2 data duen elementua aldatzean: badirudi haren egoera aldatu duela nor edo nork, zu aldatzen saiatzen ari zinela.
Begira itzazu erregistroak.',
'revdelete-reason-dropdown' => '*Ezabatzeko ohiko arrazoiak
-**Copyright urraketa
+**Egile eskubideen urraketa
**Informazio pertsonal desegokia
-**Ahalezko informazio iraingarria',
+**Iraingarria izan daitekeen informazioa',
'revdelete-otherreason' => 'Bestelako arrazoia:',
'revdelete-reasonotherlist' => 'Beste arrazoi bat',
'revdelete-edit-reasonlist' => 'Ezabaketa arrazoiak aldatu',
@@ -1104,9 +1108,10 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
'changepassword' => 'Pasahitza aldatu',
'prefs-skin' => 'Itxura',
'skin-preview' => 'Aurrebista',
-'prefs-math' => 'Formulak',
'datedefault' => 'Hobespenik ez',
+'prefs-beta' => 'Beta ezaugarriak',
'prefs-datetime' => 'Data eta ordua',
+'prefs-labs' => 'Labs ezaugarriak',
'prefs-personal' => 'Erabiltzaile profila',
'prefs-rc' => 'Azken aldaketak',
'prefs-watchlist' => 'Jarraipen zerrenda',
@@ -1128,8 +1133,6 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
'columns' => 'Zutabeak:',
'searchresultshead' => 'Bilaketa',
'resultsperpage' => 'Emaitza orrialdeko:',
-'contextlines' => 'Lerro emaitzako:',
-'contextchars' => 'Lerro bakoitzeko karaktere kopurua:',
'stub-threshold' => '<a href="#" class="stub">stub link</a> formaturako atalasea (byteak):',
'stub-threshold-disabled' => 'Ezgaitua',
'recentchangesdays' => 'Aldaketa berrietan erakutsi beharreko egun kopurua:',
@@ -1139,7 +1142,7 @@ Saia zaitez zure eskeraren aurretik ''all:'' jartzen eduki guztien artean bilatz
'savedprefs' => 'Zure hobespenak gorde egin dira.',
'timezonelegend' => 'Ordu-eremua:',
'localtime' => 'Ordu lokala:',
-'timezoneuseserverdefault' => 'Erabiltzailearen zerbitzariaren berezkoa',
+'timezoneuseserverdefault' => 'Erabili lehenetsitako wikia ($1)',
'timezoneuseoffset' => 'Beste bat (diferentzia ezarri)',
'timezoneoffset' => 'Ezberdintasuna¹:',
'servertime' => 'Zerbitzariko ordua:',
@@ -1185,8 +1188,7 @@ $1 {{PLURAL:$1|karakteretik|karakteretik}} behera izan behar ditu.',
'prefs-help-gender' => 'Hautazkoa: softwareak generoa zehazteko erabilia. Informazio hau publikoa da.',
'email' => 'E-posta',
'prefs-help-realname' => '* Benetako izena (aukerakoa): zehaztea erabakiz gero, zure lanarentzako atribuzio bezala balioko du.',
-'prefs-help-email' => 'E-posta helbidea aukerakoa da, baina zure pasahitza ahaztekotan berriro zure e-postara bidaltzeko aukera ematen dizu.
-Gainera beste lankideek zurekin kontakta dezakete zure lankide edo lankide_eztabaid orrialdeak erabilita zure identitatea ezagutzera eman gabe.',
+'prefs-help-email' => 'E-posta helbidea aukerakoa da, baina zure pasahitza ahaztekotan berriro zure e-postara bidaltzeko aukera ematen dizu.',
'prefs-help-email-required' => 'E-mail helbidea derrigorrezkoa da.',
'prefs-info' => 'Oinarrizko informazioa',
'prefs-i18n' => 'Nazioartekotasuna',
@@ -1311,7 +1313,6 @@ Gainera beste lankideek zurekin kontakta dezakete zure lankide edo lankide_eztab
'right-userrights' => 'Erabiltzaile guztien eskumenak aldatu',
'right-userrights-interwiki' => 'Beste wiki batzuetan erabiltzaileen eskumenak aldatu',
'right-siteadmin' => 'Databasea blokeatu eta desblokeatu',
-'right-reset-passwords' => 'Bese erabiltzaile batzuen pasahitzak berritu',
'right-override-export-depth' => '5eko sakonerararteko loturiko orrialdeak barne esportatu',
'right-sendemail' => 'Beste erabiltzaileei e-posta bidali',
@@ -1439,7 +1440,7 @@ Orrialde baten irudi bat txertatzeko, erabili kode hauetako bat:
'filetype-badmime' => 'Ezin dira "$1" MIME motako fitxategiak igo.',
'filetype-bad-ie-mime' => 'Ezin da fitxategia igo, Internet Explorerek "$1" bezala detektatuko lukeelako, zein fitxategi mota ez onartua eta arriskutsua den.',
'filetype-unwanted-type' => '\'\'\'".$1"\'\'\' fitxategi mota ez da gustokoa. Hobesten {{PLURAL:$3|den fitxategi mota|diren fitxategi motak}} {{PLURAL:$2|$2 da|$2 dira}}.',
-'filetype-banned-type' => '\'\'\'".$1"\'\'\' ez dago baimendutako fitxategi moten artean.
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' ez {{PLURAL:$4|dago|daude}} baimendutako fitxategi moten artean.
Baimendutako fitxategi {{PLURAL:$3|mota $2 da|motak $2 dira}}.',
'filetype-missing' => 'Fitxategi honek ez du luzapenik (adibidez, ".jpg").',
'empty-file' => 'Bidali duzun fitxategia hutsik dago.',
@@ -1498,10 +1499,6 @@ Oraindik ere fitxategia igo nahi baduzu atzera itzuli eta izen berri bat erabili
'upload-options' => 'Igoera-aukerak',
'watchthisupload' => 'Fitxategi hau jarraitu',
'filewasdeleted' => 'Izen hau duen fitxategi bat igo eta ezabatu da jada. $1 aztertu beharko zenuke berriz igo aurretik.',
-'upload-wasdeleted' => "'''Oharra: Lehenago ezabatutako fitxategia igotzen ari zara.'''
-
-Kontuan izan fitxategia igotzea egokia ote den.
-Fitxategi honen ezabaketa erregistroa jarraian ikus dezakezu:",
'filename-bad-prefix' => "Igotzen ari zaren fitxategiaren izena '''\"\$1\"'''ekin hasten da, normalki kamera digitalek automatikoki ezartzen duten izen ez deskriptibo bat.
Aukera ezazu, mesedez, fitxategi izen deskriptiboago bat.",
'upload-success-subj' => 'Igoera arrakastatsua',
@@ -1522,6 +1519,12 @@ $1',
'upload-unknown-size' => 'Tamaina ezezaguna',
'upload-http-error' => 'HTTP errorea gertatu da: $1',
+# ZipDirectoryReader
+'zip-wrong-format' => 'Zehaztutako fitxategia ez zen ZIP motakoa.',
+
+# Special:UploadStash
+'uploadstash-refresh' => 'Fitxategien zerrenda eguneratu',
+
# img_auth script messages
'img-auth-accessdenied' => 'Sarbide ukatua',
'img-auth-nopathinfo' => 'PATH_INFO falta da.
@@ -1597,7 +1600,7 @@ Ondorengo zerrendak fitxategira dauden {{PLURAL:$1|lehen lotura|lehen $1 loturak
[[Special:WhatLinksHere/$2|Zerrenda osoa]] ere eskuragarri dago.',
'nolinkstoimage' => 'Ez dago fitxategi honetara lotura egiten duen orrialderik.',
'morelinkstoimage' => 'Ikusi fitxategi honen [[Special:WhatLinksHere/$1|lotura gehiago]].',
-'redirectstofile' => 'Honako {{PLURAL:$1|artxiboak fitxategi honetara birzuzentzen du:|$1 artxiboek fitxategi honetara birzuzentzen dute:}}',
+'linkstoimage-redirect' => '$1 (fitxategi birzuzenketa) $2',
'duplicatesoffile' => 'Ondorengo fitxategi {{PLURAL:$1|hau beste honen berdina da|$1 hauek beste honen berdinak dira}} ([[Special:FileDuplicateSearch/$2|zehaztasun gehiago]]):',
'sharedupload' => 'Elkarbanatutako fitxategi hau $1-(e)ko igoera bat da eta beste proiektuek ere erabil dezakete.',
'filepage-nofile' => 'Izen horrekin ez dago fitxategirik.',
@@ -1682,10 +1685,11 @@ Ondorengo zerrendak fitxategira dauden {{PLURAL:$1|lehen lotura|lehen $1 loturak
'disambiguationspage' => 'Template:argipen',
'disambiguations-text' => "Jarraian azaltzen diren orrialdeek '''argipen orrialde''' baterako lotura dute. Kasu bakoitzean dagokion artikulu zuzenarekin izan beharko lukete lotura.<br />Orrialde bat argipen motakoa dela antzeman ohi da [[MediaWiki:Disambiguationspage]] orrialdean agertzen den txantiloietako bat duenean.",
-'doubleredirects' => 'Birzuzenketa bikoitzak',
-'doubleredirectstext' => 'Lerro bakoitzean lehen eta bigarren birzuzenketetarako loturak ikus daitezke, eta baita edukia daukan edo eduki beharko lukeen orrialderako lotura ere. Lehen birzuzenketak azken honetara <del>zuzendu</del> beharko luke.',
-'double-redirect-fixed-move' => '[[$1]] mugitu da eta orain [[$2]](e)ra birzuzenketa bat da',
-'double-redirect-fixer' => 'Birzuzenketa zuzentzailea',
+'doubleredirects' => 'Birzuzenketa bikoitzak',
+'doubleredirectstext' => 'Lerro bakoitzean lehen eta bigarren birzuzenketetarako loturak ikus daitezke, eta baita edukia daukan edo eduki beharko lukeen orrialderako lotura ere. Lehen birzuzenketak azken honetara <del>zuzendu</del> beharko luke.',
+'double-redirect-fixed-move' => '[[$1]] mugitu da eta orain [[$2]](e)ra birzuzenketa bat da',
+'double-redirect-fixed-maintenance' => 'Birzuzenketa bikoitza konpontzen [[$1]]-etik [[$2]]-ra',
+'double-redirect-fixer' => 'Birzuzenketa zuzentzailea',
'brokenredirects' => 'Hautsitako birzuzenketak',
'brokenredirectstext' => 'Jarraian zerrendatutako birzuzenketa loturak existitzen ez diren orrietara zuzenduta daude:',
@@ -1766,7 +1770,7 @@ Mesedez, kontuan izan beste webgune batzutatik URL zuzena erabiliz lotura izan d
'booksources-search-legend' => 'Liburuen bilaketa',
'booksources-go' => 'Joan',
'booksources-text' => 'Jarraian liburu berri eta erabiliak saltzen dituzten guneetarako loturen zerrenda bat ikus dezakezu, bilatzen ari zaren liburu horientzako informazio gehigarria aurkitzeko lagungarria izan daitekeena:',
-'booksources-invalid-isbn' => 'Emandako ISBNa ez dirudi baliagarria denik; ikusi ea akatsik egin duzun jatorrizko iturritik kopiatzerakoan.',
+'booksources-invalid-isbn' => 'Badirudi emandako ISBNa ez dela baliagarria; egiazta ezazu ea akatsik egin duzun jatorrizko iturritik kopiatzean.',
# Special:Log
'specialloguserlabel' => 'Lankidea:',
@@ -1873,6 +1877,8 @@ Badago [[{{MediaWiki:Listgrouprights-helppage}}|informazio osagarria]] banakako
'noemailtext' => 'Erabiltzaile honek ez du baliozko e-posta helbiderik zehaztu.',
'nowikiemailtitle' => 'Ezin da e-postarik bidali',
'nowikiemailtext' => 'Erabiltzaile honek beste erabiltzaileengandik e-postak ez jasotzea hautatu du.',
+'emailusername' => 'Lankide izena:',
+'emailusernamesubmit' => 'Bidali',
'email-legend' => 'Bidali e-posta bat {{SITENAME}}(e)ko beste lankide bati',
'emailfrom' => 'Nork:',
'emailto' => 'Nori:',
@@ -1896,11 +1902,9 @@ Badago [[{{MediaWiki:Listgrouprights-helppage}}|informazio osagarria]] banakako
'watchlistanontext' => 'Mesedez $1 zure jarraipen zerrendako orrialdeak ikusi eta aldatu ahal izateko.',
'watchnologin' => 'Saioa hasi gabe',
'watchnologintext' => '[[Special:UserLogin|Saioa hasi]] behar duzu zure jarraipen zerrenda aldatzeko.',
-'addedwatch' => 'Jarraipen zerrendan gehitu da',
'addedwatchtext' => "\"<nowiki>\$1</nowiki>\" orrialdea zure [[Special:Watchlist|jarraipen edo zelatatuen zerrendara]] erantsi da. Orrialde honen hurrengo aldaketak zerrenda horretan ageriko dira aurrerantzean, eta gainera [[Special:RecentChanges|aldaketa berrien zerrendan]] beltzez ageriko da, erraztasunez antzeman ahal izateko.
Jarraipen zerrendatik artikulua kentzeko, artikuluan ''ez jarraitu''ri eman.",
-'removedwatch' => 'Jarraipen zerrendatik ezabatuta',
'removedwatchtext' => '"[[:$1]]" orrialdea zure [[Special:Watchlist|jarraipen zerrendatik]] kendu da.',
'watch' => 'Jarraitu',
'watchthispage' => 'Orrialde hau jarraitu',
@@ -1953,16 +1957,16 @@ Horrez gain, orrialdeen oharpen konfigurazioa leheneratu dezakezu jarraipen zerr
--
Zure epostaren jakinarazpenen konfigurazioa aldatzeko, ikus
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Zure jarraipen zerrendako konfigurazioa aldatzeko, ikus
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Orrialdea zure jarraipen zerrendatik ezabatzeko, ikus
$UNWATCHURL
Laguntza:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Orrialdea ezabatu',
@@ -1977,7 +1981,7 @@ Laguntza:
'confirmdeletetext' => 'Orrialde edo irudi bat eta beste historia guztia datu-basetik ezabatzear zaude. Mesedez, egiaztatu hori egin nahi duzula, ondorioak zeintzuk diren badakizula, eta [[{{MediaWiki:Policy-url}}|politikak]] errespetatuz egingo duzula.',
'actioncomplete' => 'Ekintza burutu da',
'actionfailed' => 'Ekintzak huts egin du',
-'deletedtext' => '"<nowiki>$1</nowiki>" ezabatu egin da. Ikus $2 azken ezabaketen erregistroa ikusteko.',
+'deletedtext' => '"$1" ezabatu egin da. Ikus $2 azken ezabaketen erregistroa ikusteko.',
'deletedarticle' => '"[[$1]]" ezabatu da',
'suppressedarticle' => '"[[$1]]" kendua',
'dellogpage' => 'Ezabaketa erregistroa',
@@ -2009,8 +2013,9 @@ beste norbaitek editatu du edo jada desegin du.
Azken aldaketa [[User:$3|$3]](e)k ([[User talk:$3|Eztabaida]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]) egin du.',
'editcomment' => "Aldaketaren laburpena: \"''\$1''\".",
-'revertpage' => '$2ren aldaketak ezabatu dira, $1ren azken bertsiora itzuliz.',
-'rollback-success' => '$1(r)en aldaketak desegin dira, $2(r)en azken bertsiora itzuliz.',
+'revertpage' => '[[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) wikilariaren aldaketak deseginda, edukia [[User:$1|$1]] wikilariaren azken bertsiora itzuli da.',
+'rollback-success' => '$1 wikilariaren aldaketak deseginda,
+edukia $2 wikilariaren azken bertsiora itzuli da.',
# Edit tokens
'sessionfailure-title' => 'Saio-akatsa',
@@ -2031,7 +2036,7 @@ beste norbaitek editatu du edo jada desegin du.
'protect_expiry_invalid' => 'Babesaldiaren bukaerako data ez da baliozkoa.',
'protect_expiry_old' => 'Babesaldiaren bukaera iraganekoa da.',
'protect-unchain-permissions' => 'Babes aukerak desblokeatu',
-'protect-text' => "'''<nowiki>$1</nowiki>''' orrialdearen babes maila ikusi eta aldatu egin beharko zenuke.",
+'protect-text' => "'''$1''' orrialdearen babes maila ikusi eta aldatu egin beharko zenuke.",
'protect-locked-blocked' => "Babes-mailak ezin dira aldatu blokeatuta dagoen bitartean.
Hemen daude '''$1''' orrialdearen egungo ezarpenak:",
'protect-locked-dblock' => "Babes-mailak ezin dira aldatu, datu-basea blokeatuta baitago.
@@ -2086,9 +2091,8 @@ Orrialde honen babes maila alda dezakezu, baina ez du eraginik izango kaskada bi
'undeletepagetext' => 'Jarraian zerrendatzen {{PLURAL:$1|den orrialdea ezabatu da baina oraindik artxiboan gordeta dago eta leheneratu egin daiteke.|diren orrialdeak ezabatu dira baina oraindik artxiboan gordeta daude eta leheneratu egin daitezke.}}
Artxiboa noizean behin hustu egin liteke.',
'undelete-fieldset-title' => 'Berrikuspenak berrezarri',
-'undeleteextrahelp' => "Orrialde osoa leheneratzeko, koadrotxo guztiak hautatu gabe utzi eta '''''Leheneratu'''''n klik egin.
-Aukeratutako leheneratze bat burutzeko, leheneratu nahi dituzun berrikuspenen koadrotxoak markatu eta '''''Leheneratu''''' klik egin.
-'''''Hasiera'''''n klik eginez gero koadrotxo guztiak eta iruzkin koadroa hustu egingo dira.",
+'undeleteextrahelp' => "Orrialde osoko historia berreskuratzeko, koadrotxo guztiak hautatu gabe utzi eta '''''{{int:undeletebtn}}'''''-n klik egin.
+Aukeratutako leheneratze bat burutzeko, leheneratu nahi dituzun berrikuspenen koadrotxoak markatu eta '''''{{int:undeletebtn}}'''''-n klik egin.",
'undeleterevisions' => '$1 {{PLURAL:$1|berrikuspen|berrikuspen}} artxibatuta',
'undeletehistory' => 'Orrialdea leheneratzen baduzu, berrikuspena guztiak leheneratuko dira historian.
Ezabatu ondoren izen berdina duen orrialde berri bat sortzen bada leheneratutako berrikuspenak azalduko dira historian.',
@@ -2133,9 +2137,10 @@ $1',
'undelete-show-file-submit' => 'Bai',
# Namespace form on various pages
-'namespace' => 'Izen-tartea:',
-'invert' => 'Hautapena alderanztu',
-'blanknamespace' => '(Nagusia)',
+'namespace' => 'Izen-tartea:',
+'invert' => 'Hautapena alderanztu',
+'namespace_association' => 'Lotutako izen-tartea',
+'blanknamespace' => '(Nagusia)',
# Contributions
'contributions' => 'Lankidearen ekarpenak',
@@ -2183,11 +2188,12 @@ Blokeo erregistroa azken sarrera ematen da azpian erreferentziarako:',
'whatlinkshere-filters' => 'Iragazleak',
# Block/unblock
+'block' => 'Erabiltzailea blokeatu',
+'unblock' => 'Erabiltzailea desblokeatu',
'blockip' => 'Erabiltzailea blokeatu',
'blockip-title' => 'Erabiltzailea blokeatu',
'blockip-legend' => 'Erabiltzailea blokeatu',
'blockiptext' => 'IP helbide edo erabiltzaile izen bati idazketa baimenak kentzeko beheko formularioa erabil dezakezu. Ekintza hau bandalismoa saihesteko baino ez da burutu behar, eta beti ere [[{{MediaWiki:Policy-url}}|politikak]] errespetatuz. Blokeoaren arrazoi bat ere zehaztu ezazu (adibidez, orrialde batzuk zehaztuz).',
-'ipaddress' => 'IP Helbidea',
'ipadressorusername' => 'IP Helbidea edo erabiltzaile izena',
'ipbexpiry' => 'Iraungipena',
'ipbreason' => 'Arrazoia:',
@@ -2200,7 +2206,6 @@ Blokeo erregistroa azken sarrera ematen da azpian erreferentziarako:',
** Beste erabiltzaileei mehatxatzea
** Kontu ugari erabiltzea
** Erabiltzaile izen desegokia',
-'ipbanononly' => 'Erabiltzaile anonimoak bakarrik blokeatu',
'ipbcreateaccount' => 'Kontua sortzea debekatu',
'ipbemailban' => 'Erabiltzaileak e-mailak bidal ditzan ekidin',
'ipbenableautoblock' => 'Erabiltzaile honek erabilitako azken IP helbidea automatikoki blokeatu, eta baita erabili dezakeen beste edozein IP ere',
@@ -2211,8 +2216,8 @@ Blokeo erregistroa azken sarrera ematen da azpian erreferentziarako:',
'ipbotherreason' => 'Arrazoi gehigarria:',
'ipbhidename' => 'Lankide izena aldaketa eta zerrendetatik ezkutatu',
'ipbwatchuser' => 'Erabiltzaile honen erabiltzaile eta eztabaida orrialdeak jarraitu',
-'ipballowusertalk' => 'Blokeatuta izanagatik ere, lankide honek bere eztabaida-orria aldatzea baimendu',
'ipb-change-block' => 'Lankidea honako balioekin bir-blokeatu',
+'ipb-confirm' => 'Blokeoa baieztatu',
'badipaddress' => 'Baliogabeko IP helbidea',
'blockipsuccesssub' => 'Blokeoa burutu da',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] erabiltzaileari blokeoa ezarri zaio.<br />
@@ -2227,16 +2232,14 @@ Ikus [[Special:IPBlockList|IP blokeoen zerrenda]] blokeoak aztertzeko.',
'ipusubmit' => 'Blokeoa ezabatu',
'unblocked' => '[[User:$1|$1]] desblokeatu egin da',
'unblocked-id' => '$1 blokeaketa ezabatu da',
+'blocklist' => 'Blokeatutako erabiltzaileak',
'ipblocklist' => 'Blokeatutako erabiltzaileak',
'ipblocklist-legend' => 'Blokeatutako erabiltzaile bat bilatu',
-'ipblocklist-username' => 'Erabiltzaile izena edo IP helbidea:',
-'ipblocklist-sh-userblocks' => 'Kontuaren blokeoak $1',
-'ipblocklist-sh-tempblocks' => 'Denbora baterako blokeoak $1',
-'ipblocklist-sh-addressblocks' => 'IP bakarreko blokeoak $1',
+'blocklist-target' => 'Helburua',
+'blocklist-reason' => 'Arrazoia',
'ipblocklist-submit' => 'Bilatu',
'ipblocklist-localblock' => 'Tokiko blokeoa',
'ipblocklist-otherblocks' => 'Bestelako {{PLURAL:$1|blokeoa|blokeoak}}',
-'blocklistline' => '$1, $2(e)k $3 blokeatu du (iraungipena: $4)',
'infiniteblock' => 'infinitu',
'expiringblock' => 'blokeoaldiaren bukaera: $1, $2',
'anononlyblock' => 'anon. soilik',
@@ -2258,7 +2261,7 @@ Blokeo erregistroa ematen da azpian erreferentziarako:',
Erregistroa ematen da azpian erreferentziarako:',
'blocklogentry' => '"[[$1]]" wikilariari blokeoa ezarri zaio. Blokeoaldia: $2 $3',
'reblock-logentry' => '[[$1]] wikilariari blokeoaldia aldatu diogu. Blokeoaldi berria: $2 $3',
-'blocklogtext' => 'Erabiltzaileen blokeoen ezarpen eta ezabaketen erregistroa da hau. Ez dira automatikoki blokeatutako IP helbideak zerrendatzen. Ikus [[Special:IPBlockList|IP blokeoen zerrenda]] aktibo dauden blokeoak aztertzeko.',
+'blocklogtext' => 'Erabiltzaileen blokeoen ezarpen eta ezabaketen erregistroa da hau. Ez dira automatikoki blokeatutako IP helbideak zerrendatzen. Ikus [[Special:BlockList|IP blokeoen zerrenda]] aktibo dauden blokeoak aztertzeko.',
'unblocklogentry' => '$1 desblokeatu da',
'block-log-flags-anononly' => 'erabiltzaile anonimoak bakarrik',
'block-log-flags-nocreate' => 'kontuak sortzea ezgaituta',
@@ -2272,8 +2275,7 @@ Erregistroa ematen da azpian erreferentziarako:',
'ipb_expiry_temp' => 'Izkutuan dauden lankide izenen blokeoa betierekikoa izan behar du.',
'ipb_hide_invalid' => 'Ezin izan da kontu hau ezabatu; aldaketa asko izan baitezake.',
'ipb_already_blocked' => '"$1" badago blokeatuta',
-'ipb-needreblock' => '== Dagoeneko blokeaturik ==
-$1 dagoeneko blokeaturik dago. Ezarpenak aldatu nahi al dituzu?',
+'ipb-needreblock' => '$1 dagoeneko blokeaturik dago. Ezarpenak aldatu nahi al dituzu?',
'ipb-otherblocks-header' => 'Bestelako {{PLURAL:$1|blokeoa|blokeoak}}',
'ipb_cant_unblock' => 'Errorea: Ez da $1 IDa duen blokeoa aurkitu. Baliteke blokeoa jada kenduta egotea.',
'ipb_blocked_as_range' => 'Akatsa: $1 IPa ez dago zuzenean blokeatuta eta ezin da blokeoa kendu.
@@ -2311,17 +2313,18 @@ Hala ere, $2-(r)en parte denez, blokeoa kendu daiteke.',
'move-page' => '$1 mugitu',
'move-page-legend' => 'Orrialdea mugitu',
'movepagetext' => "Beheko formularioa erabiliz orrialde baten izena aldatuko da, historia osoa izen berrira mugituz.
-Izenburu zaharra izenburu berrira doan berbiderapena bilakatuko da.
-Jatorrizko izenburura doazen berbiderapenak automatikoki egunera ditzakezu.
-Ezetz aukeratzen baduzu, berbiderapen [[Special:DoubleRedirects|bikoitz]] edo [[Special:BrokenRedirects|apurtuak]] egiazta itzazu.
+Izenburu zaharra izenburu berrira daraman birbideratze bilakatuko da.
+Jatorrizko izenburura doazen birbideratzeak automatikoki egunera ditzakezu.
+Ezetz aukeratzen baduzu, egiazta itzazu birbideratze [[Special:DoubleRedirects|bikoitz]] edo [[Special:BrokenRedirects|apurtuak]].
Loturak modu zuzenean mantentzea zure erantzukizuna da.
-Konturatu zaitez orrialdea '''ez''' dela mugituko izenburu berria duen orrialde bat badago jadanik, ez bada aldaketa-historiarik gabeko orrialde huts edo berbiderapen bat.
+Konturatu zaitez orrialdea '''ez''' dela mugituko izenburu berria duen orrialde bat badago jadanik, ez bada aldaketa-historiarik gabeko orrialde huts edo birbideratze bat.
Horrek esan nahi du hanka sartzekotan orrialde baten jatorrizko izenburua berreskuratu daitekeela, baina ezin dela jada existitzen den orrialde baten gainean idatzi.
'''Oharra!'''
-Honakoa aldaketa drastiko eta ustekabekoa izan daiteke orrialde oso ezagunetan;
-mesedez honen ondorioak ulertzen dituzula ziurta ezazu jarraitu baino lehen.",
+
+Aldaketa hau drastikoa eta ustekabekoa izan daiteke orrialde oso ezagunetan;
+mesedez, egiazta ezazu honen ondorioak ulertzen dituzula, jarraitu baino lehen.",
'movepagetalktext' => "Dagokion eztabaida orrialdea berarekin batera mugitu da, honako kasu hauetan '''ezik:'''
* Hutsik ez dagoen eztabaida orrialde bat existitzen bada izen berrian.
* Beheko koadroa hautatzen ez baduzu.
@@ -2411,7 +2414,7 @@ Horrez gain, lotura zuzena ere erabil dezakezu; adibidez, [[{{#Special:Export}}/
'allmessagesdefault' => 'Testu lehenetsia',
'allmessagescurrent' => 'Oraingo testua',
'allmessagestext' => 'MediaWikin erabiltzen diren mezu guztien zerrenda.
-Mesedez bisitatu [http://www.mediawiki.org/wiki/Localisation MediaWiki] eta [http://translatewiki.net translatewiki.net] orrialdeak MediaWikira ekarpenak egin badituzu.',
+Mesedez bisitatu [//www.mediawiki.org/wiki/Localisation MediaWiki] eta [//translatewiki.net translatewiki.net] orrialdeak MediaWikira ekarpenak egin badituzu.',
'allmessagesnotsupportedDB' => "Ezin da '''{{ns:special}}:Allmessages''' erabili '''\$wgUseDatabaseMessages''' ezgaituta dagoelako.",
'allmessages-filter-legend' => 'Iragazi',
'allmessages-filter' => 'Aldaketa-egoeraren arabera iragazi:',
@@ -2555,9 +2558,7 @@ Laburpenean arrazoi bat gehitzea baimentzen du',
'common.js' => '/* Hemen idatzitako JavaScript kode oro erabiltzaile guztiek edozein orrialde irekitzerakoan kargatuko da. */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadatuak ezgaitu egin dira zerbitzari honetarako.',
-'nocreativecommons' => 'Creative Commons RDF metadatuak ezgaitu egin dira zerbitzari honetarako.',
-'notacceptable' => 'Wiki zerbitzariak ezin ditu datuak zure bezeroak irakur ditzakeen formatu batean eskaini.',
+'notacceptable' => 'Wiki zerbitzariak ezin ditu datuak zure bezeroak irakur ditzakeen formatu batean eskaini.',
# Attribution
'anonymous' => '{{SITENAME}}(e)ko lankide {{PLURAL:$1|anonimoa|anonimoak}}',
@@ -2581,12 +2582,12 @@ Baliteke zerrenda beltzean dagoen kanpo lotura batek sortzea arazo hori.',
'spam_blanking' => 'Berrikuspen guztiek $1(e)rako lotura zeukaten, husten',
# Info page
-'infosubtitle' => 'Orrialdearen informazioa',
-'numedits' => 'Aldaketa kopurua (artikulua): $1',
-'numtalkedits' => 'Aldaketa kopurua (eztabaida orrialdea): $1',
-'numwatchers' => 'Jarraitzaile kopurua: $1',
-'numauthors' => 'Egile ezberdinen kopurua (artikulua): $1',
-'numtalkauthors' => 'Egile ezberdinen kopurua (eztabaida orrialdea): $1',
+'pageinfo-header-edits' => 'Aldaketak',
+'pageinfo-header-views' => 'Bistaratzeak',
+'pageinfo-subjectpage' => 'Orrialdea',
+'pageinfo-talkpage' => 'Eztabaida-orria',
+'pageinfo-edits' => 'Aldaketa kopurua',
+'pageinfo-views' => 'Bistaratze-kopurua',
# Skin names
'skinname-standard' => 'Lehenetsia',
@@ -2595,25 +2596,6 @@ Baliteke zerrenda beltzean dagoen kanpo lotura batek sortzea arazo hori.',
'skinname-simple' => 'Arrunta',
'skinname-modern' => 'Modernoa',
-# Math options
-'mw_math_png' => 'Beti PNG irudiak sortu',
-'mw_math_simple' => 'Oso sinplea bada HTML, eta bestela PNG',
-'mw_math_html' => 'Posible bada HTML, eta bestela PNG',
-'mw_math_source' => 'TeX bezala utzi (testu bidezko nabigatzaileentzako)',
-'mw_math_modern' => 'Nabigatzaile berrientzako gomendatuta',
-'mw_math_mathml' => 'MathML posible bada (proba fasean)',
-
-# Math errors
-'math_failure' => 'Interpretazio errorea',
-'math_unknown_error' => 'errore ezezaguna',
-'math_unknown_function' => 'funtzio ezezaguna',
-'math_lexing_error' => 'errore lexikoa',
-'math_syntax_error' => 'sintaxi errorea',
-'math_image_error' => 'PNG bilakatze errorea; egiaztatu latex eta dvipng (edo dvips + gs + convert) ongi instalatuta dauden begiratu',
-'math_bad_tmpdir' => 'Ezin da math direktorio tenporala sortu edo bertan idatzi',
-'math_bad_output' => 'Ezin da math direktorioa sortu edo bertan idatzi',
-'math_notexvc' => 'texvc exekutagarria falta da; mesedez, ikus math/README konfiguratzeko.',
-
# Patrolling
'markaspatrolleddiff' => 'Patruilatu bezala markatu',
'markaspatrolledtext' => 'Artikulu hau patruilatu bezala markatu',
@@ -2649,21 +2631,23 @@ $1',
'nextdiff' => 'Aldaketa berriagoa →',
# Media information
-'mediawarning' => "'''Oharra''': Fitxategi honek kode mingarria izan lezake.
+'mediawarning' => "'''Oharra''': Fitxategi honek kode mingarria izan lezake.
Zure sisteman exekutatzea arriskutsua izan liteke.",
-'imagemaxsize' => "Irudiaren tamainaren muga:<br />''(fitxategi deskribapen-orrietarako)''",
-'thumbsize' => 'Irudi txikiaren tamaina:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|orri|orri}}',
-'file-info' => 'fitxategiaren tamaina: $1, MIME mota: $2',
-'file-info-size' => '$1 × $2 pixel, fitxategiaren tamaina: $3, MIME mota: $4',
-'file-nohires' => '<small>Ez dago bereizmen handiagorik.</small>',
-'svg-long-desc' => 'SVG fitxategia, nominaldi $1 × $2 pixel, fitxategiaren tamaina: $3',
-'show-big-image' => 'Bereizmen handikoa',
-'show-big-image-thumb' => '<small>Aurreikuspen honen neurria: $1 × $2 pixel</small>',
-'file-info-gif-looped' => 'kiribildua',
-'file-info-gif-frames' => '{{PLURAL:$1|Irudi $1|$1 irudi}}',
-'file-info-png-looped' => 'begiztatua',
-'file-info-png-frames' => '{{PLURAL:$1|Frame bat|$1 frame}}',
+'imagemaxsize' => "Irudiaren tamainaren muga:<br />''(fitxategi deskribapen-orrietarako)''",
+'thumbsize' => 'Irudi txikiaren tamaina:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|orri|orri}}',
+'file-info' => 'fitxategiaren tamaina: $1, MIME mota: $2',
+'file-info-size' => '$1 × $2 pixel, fitxategiaren tamaina: $3, MIME mota: $4',
+'file-nohires' => '<small>Ez dago bereizmen handiagorik.</small>',
+'svg-long-desc' => 'SVG fitxategia, nominaldi $1 × $2 pixel, fitxategiaren tamaina: $3',
+'show-big-image' => 'Bereizmen handikoa',
+'show-big-image-preview' => '<small>Aurreikuspen honen neurria: $1.</small>',
+'show-big-image-other' => '<small>Bestelako bereizmenak: $1.</small>',
+'show-big-image-size' => '$1 × $2 pixel',
+'file-info-gif-looped' => 'kiribildua',
+'file-info-gif-frames' => '{{PLURAL:$1|Irudi $1|$1 irudi}}',
+'file-info-png-looped' => 'begiztatua',
+'file-info-png-frames' => '{{PLURAL:$1|Frame bat|$1 frame}}',
# Special:NewFiles
'newimages' => 'Fitxategi berrien galeria',
@@ -2693,14 +2677,20 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
'metadata-help' => 'Fitxategi honek informazio gehigarri dauka, ziurrenik kamera digital edo eskanerrak egiterako momentuan gehitutakoa. Hori dela-eta, jatorrizko fitxategi hori aldatu egin bada, baliteke xehetasun batzuek errealitatearekin bat ez egitea.',
'metadata-expand' => 'Xehetasunak erakutsi',
'metadata-collapse' => 'Xehetasunak ezkutatu',
-'metadata-fields' => 'Mezu honetan zerrendatutako EXIF metadatu eremuak irudiaren orrialdean erakutsiko dira. Gainontzekoak ezkutatu egindako dira lehenetsi bezala.
+'metadata-fields' => 'Mezu honetan zerrendatutako irudi metadatu eremuak irudiaren orrialdean erakutsiko dira. Gainontzekoak ezkutatu egingo dira lehenetsiz.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Zabalera',
@@ -2715,13 +2705,11 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
'exif-ycbcrpositioning' => 'Y eta Cren kokatzea',
'exif-xresolution' => 'Bereizmen horizontala',
'exif-yresolution' => 'Bereizmen bertikala',
-'exif-resolutionunit' => 'X eta Yren erresoluzioen batura',
'exif-stripoffsets' => 'Irudiaren datuen kokalekua',
'exif-rowsperstrip' => 'Zutabe bakoitzean dauden lerro kopurua',
'exif-stripbytecounts' => 'Konprimatutako zerrenda bakoitzeko byte kopurua',
'exif-jpeginterchangeformat' => 'JPEG SOIren offseta',
'exif-jpeginterchangeformatlength' => 'JPEG datuen byteak',
-'exif-transferfunction' => 'Transferentzia funtzioa',
'exif-whitepoint' => 'Puntu txuriaren kromatizitatea',
'exif-primarychromaticities' => 'Primarioen kromatizitateak',
'exif-ycbcrcoefficients' => 'Kolore espzioaren aldatze koefiziente matrizeak',
@@ -2740,7 +2728,6 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
'exif-compressedbitsperpixel' => 'Irudi konpresio mota',
'exif-pixelydimension' => 'Irudiaren zabalera',
'exif-pixelxdimension' => 'Irudiaren altuera',
-'exif-makernote' => 'Egilearen oharrak',
'exif-usercomment' => 'Erabiltzailearen iruzkinak',
'exif-relatedsoundfile' => 'Harremanetan dagoen audio fitxategia',
'exif-datetimeoriginal' => 'Datuen sorreraren data eta ordua',
@@ -2755,7 +2742,6 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
'exif-exposureprogram' => 'Esposizio Programa',
'exif-spectralsensitivity' => 'Sentiberatasun espektrala',
'exif-isospeedratings' => 'ISO abiadura',
-'exif-oecf' => 'Aldatze faktore optoelektronikoa',
'exif-shutterspeedvalue' => 'APEX argazkiaren itxiera-abiadura',
'exif-aperturevalue' => 'APEX irekiera',
'exif-brightnessvalue' => 'APEX distira',
@@ -2769,7 +2755,6 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
'exif-focallength-format' => '$1 mm',
'exif-subjectarea' => 'Subjektuaren zonaldea',
'exif-flashenergy' => 'Flasharen indarra',
-'exif-spatialfrequencyresponse' => 'Frekuentzia espazialarekiko erantzuna',
'exif-focalplanexresolution' => 'Plano fokalaren X erresoluzioa',
'exif-focalplaneyresolution' => 'Plano fokalaren Y erresoluzioa',
'exif-focalplaneresolutionunit' => 'Plano fokalaren erresoluzio unitatea',
@@ -2778,7 +2763,6 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
'exif-sensingmethod' => 'Sensorearen metodoa',
'exif-filesource' => 'Fitxategiaren jatorria',
'exif-scenetype' => 'Eskena mota',
-'exif-cfapattern' => 'CFA patroia',
'exif-customrendered' => 'Irudien prozesamendu pertsonalizatua',
'exif-exposuremode' => 'Esposaketa mota',
'exif-whitebalance' => 'Txurien oreka',
@@ -2823,12 +2807,29 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
'exif-gpsareainformation' => 'GPS eskualdearen izena',
'exif-gpsdatestamp' => 'GPS data',
'exif-gpsdifferential' => 'GPSaren zuzenketa diferentziala',
+'exif-jpegfilecomment' => 'JPEG fitxategiaren iruzkina',
+'exif-keywords' => 'Hitz gakoak',
+'exif-countrydest' => 'Erakutsitako herrialdea',
'exif-objectname' => 'Izenburua laburra',
+'exif-headline' => 'Goiburua',
+'exif-source' => 'Jatorria',
+'exif-writer' => 'Idazlea',
+'exif-languagecode' => 'Hizkuntza',
+'exif-iimversion' => 'IIM bertsioa',
+'exif-iimcategory' => 'Kategoria',
+'exif-serialnumber' => 'Kameraren serie-zenbakia',
+'exif-cameraownername' => 'Kameraren jabea',
+'exif-label' => 'Etiketa',
+'exif-copyrightowner' => 'Copyright-aren jabea',
+'exif-usageterms' => 'Erabilera baldintzak',
# EXIF attributes
'exif-compression-1' => 'Konprimatu gabe',
'exif-compression-6' => 'JPEG',
+'exif-copyrighted-true' => 'Copyrightduna',
+'exif-copyrighted-false' => 'Domeinu askea',
+
'exif-photometricinterpretation-2' => 'GBU (RGB)',
'exif-photometricinterpretation-6' => 'YCbCr',
@@ -2849,8 +2850,8 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
'exif-xyresolution-i' => '$1 dpi',
'exif-xyresolution-c' => '$1 dpc',
-'exif-colorspace-1' => 'sRGB',
-'exif-colorspace-ffff.h' => 'FFFF.H',
+'exif-colorspace-1' => 'sRGB',
+'exif-colorspace-65535' => 'Kalibratu gabe',
'exif-componentsconfiguration-0' => 'ez da existitzen',
'exif-componentsconfiguration-1' => 'Y',
@@ -2975,6 +2976,10 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
'exif-gpslongitude-e' => 'Ekialdeko longitudea',
'exif-gpslongitude-w' => 'Mendebaldeko longitudea',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metro|metro}} itsasoaren mailaren gainetik',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metro|metro}} itsasoaren mailaren azpitik',
+
'exif-gpsstatus-a' => 'Neurketa burutzen',
'exif-gpsstatus-v' => 'Neurketen interoperabilitatea',
@@ -2986,21 +2991,50 @@ Zerrenda elementuak (hasieran * duten lerroak) baino ez dira kontuan hartzen. Le
'exif-gpsspeed-m' => 'Milia orduko',
'exif-gpsspeed-n' => 'Lotailuak',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometro',
+'exif-gpsdestdistance-m' => 'Milia',
+'exif-gpsdestdistance-n' => 'Itsas milia',
+
+'exif-gpsdop-excellent' => 'Bikaina ($1)',
+'exif-gpsdop-good' => 'Ona ($1)',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Benetako norabidea',
'exif-gpsdirection-m' => 'Norabide magnetikoa',
+'exif-dc-publisher' => 'Argitaratzailea',
+
+'exif-iimcategory-ace' => 'Arteak, kultura eta aisia',
+'exif-iimcategory-clj' => 'Krimena eta zuzenbidea',
+'exif-iimcategory-dis' => 'Hondamendiak eta istripuak',
+'exif-iimcategory-fin' => 'Ekonomia eta negozioa',
+'exif-iimcategory-edu' => 'Hezkuntza',
+'exif-iimcategory-evn' => 'Ingurumena',
+'exif-iimcategory-hth' => 'Osasuna',
+'exif-iimcategory-lab' => 'Lana',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Erlijioa eta sinesmenak',
+'exif-iimcategory-sci' => 'Zientzia eta teknologia',
+'exif-iimcategory-soi' => 'Gizarte gaiak',
+'exif-iimcategory-spo' => 'Kirola',
+'exif-iimcategory-war' => 'Gerra, gatazka eta iraultza',
+'exif-iimcategory-wea' => 'Eguraldia',
+
+'exif-urgency-normal' => 'Arrunta ($1)',
+'exif-urgency-low' => 'Baxua ($1)',
+'exif-urgency-high' => 'Altua ($1)',
+'exif-urgency-other' => 'Definitutako lehentasuna ($1)',
+
# External editor support
'edit-externally' => 'Fitxategi hau editatu kanpo-aplikazio bat erabiliz',
-'edit-externally-help' => '(Ikus [http://www.mediawiki.org/wiki/Manual:External_editors konfiguraziorako argibideak] informazio gehiagorako)',
+'edit-externally-help' => '(Ikus [//www.mediawiki.org/wiki/Manual:External_editors konfiguraziorako argibideak] informazio gehiagorako)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'guztiak',
-'imagelistall' => 'guztiak',
-'watchlistall2' => 'guztiak',
-'namespacesall' => 'guztiak',
-'monthsall' => 'guztiak',
-'limitall' => 'guztiak',
+'watchlistall2' => 'guztiak',
+'namespacesall' => 'guztiak',
+'monthsall' => 'guztiak',
+'limitall' => 'guztiak',
# E-mail address confirmation
'confirmemail' => 'E-posta helbidea egiaztatu',
@@ -3097,7 +3131,7 @@ $1',
'watchlistedit-normal-legend' => 'Jarraipen-zerrendatik izenburuak kendu',
'watchlistedit-normal-explain' => 'Zure jarraipen zerrendako izenburuak azpian daude.
Titulu bat kentzeko ondoan dagoen kutxa marka ezazu eta "{{int:Watchlistedit-normal-submit}}" gainean klik egin.
-Gainera [[Special:Watchlist/raw|zerrenda gordina aldatu]] dezakezu.',
+Gainera [[Special:EditWatchlist/raw|zerrenda gordina aldatu]] dezakezu.',
'watchlistedit-normal-submit' => 'Izenburuak kendu',
'watchlistedit-normal-done' => 'Zure jarraipen-zerrendatik {{PLURAL:$1|izenburu bat kendu da|$1 izenburu kendu dira}}.',
'watchlistedit-raw-title' => 'Jarraitze zerrenda gordina aldatu',
@@ -3105,7 +3139,7 @@ Gainera [[Special:Watchlist/raw|zerrenda gordina aldatu]] dezakezu.',
'watchlistedit-raw-explain' => 'Azpian zure jarraipen zerrendako izenburuak daude, eta aldatuak izan daitezke zerrendatik gehitu edo ezabatzean;
lerroko izenburu bat.
Bukatzean, klikatu "{{int:Watchlistedit-raw-submit}}" botoian.
-Halaber [[Special:Watchlist/edit|aldatzaile estandarra]] erabil dezakezu.',
+Halaber [[Special:EditWatchlist|aldatzaile estandarra]] erabil dezakezu.',
'watchlistedit-raw-titles' => 'Izenburuak:',
'watchlistedit-raw-submit' => 'Jarraitze-zerrenda eguneratu',
'watchlistedit-raw-done' => 'Zure jarraipen zerrenda berritu da.',
@@ -3122,27 +3156,26 @@ Halaber [[Special:Watchlist/edit|aldatzaile estandarra]] erabil dezakezu.',
'duplicate-defaultsort' => 'Adi: Berezko "$2" antolatzeak aurreko berezko "$1" antolatzea gainditzen du.',
# Special:Version
-'version' => 'Bertsioa',
-'version-extensions' => 'Instalatutako luzapenak',
-'version-specialpages' => 'Aparteko orrialdeak',
-'version-parserhooks' => 'Parser estentsioak',
-'version-variables' => 'Aldagaiak',
-'version-other' => 'Bestelakoak',
-'version-mediahandlers' => 'Media gordailuak',
-'version-hooks' => 'Estentsioak',
-'version-extension-functions' => 'Luzapen funtzioak',
-'version-parser-extensiontags' => 'Parser luzapen etiketak',
-'version-parser-function-hooks' => 'Parser funtzio estentsioak',
-'version-skin-extension-functions' => 'Itxura luzapen funtzioak',
-'version-hook-name' => 'Estentsioaren izena',
-'version-hook-subscribedby' => 'Hauen harpidetzarekin',
-'version-version' => '(Bertsioa $1)',
-'version-license' => 'Lizentzia',
-'version-poweredby-credits' => "Wiki hau '''[http://www.mediawiki.org/ MediaWiki]'''k sustatzen du (copyright © 2001-$1 $2).",
-'version-poweredby-others' => 'beste batzuk',
-'version-software' => 'Instalatutako softwarea',
-'version-software-product' => 'Produktua',
-'version-software-version' => 'Bertsioa',
+'version' => 'Bertsioa',
+'version-extensions' => 'Instalatutako luzapenak',
+'version-specialpages' => 'Aparteko orrialdeak',
+'version-parserhooks' => 'Parser estentsioak',
+'version-variables' => 'Aldagaiak',
+'version-other' => 'Bestelakoak',
+'version-mediahandlers' => 'Media gordailuak',
+'version-hooks' => 'Estentsioak',
+'version-extension-functions' => 'Luzapen funtzioak',
+'version-parser-extensiontags' => 'Parser luzapen etiketak',
+'version-parser-function-hooks' => 'Parser funtzio estentsioak',
+'version-hook-name' => 'Estentsioaren izena',
+'version-hook-subscribedby' => 'Hauen harpidetzarekin',
+'version-version' => '(Bertsioa $1)',
+'version-license' => 'Lizentzia',
+'version-poweredby-credits' => "Wiki hau '''[//www.mediawiki.org/ MediaWiki]'''k sustatzen du (copyright © 2001-$1 $2).",
+'version-poweredby-others' => 'beste batzuk',
+'version-software' => 'Instalatutako softwarea',
+'version-software-product' => 'Produktua',
+'version-software-version' => 'Bertsioa',
# Special:FilePath
'filepath' => 'Fitxategi bidea',
@@ -3153,9 +3186,7 @@ Irudiak bereizmen handienean daude, bestelako fitxategi motak beraiei esleitutak
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Artxibo bikoiztuen bilaketa',
-'fileduplicatesearch-summary' => 'Bikoiztutako fitxategiak bilatu bere hash balioaren arabera.
-
-Fitxategiaren izena sartu "{{ns:file}}:" aurrizkia gabe.',
+'fileduplicatesearch-summary' => 'Bikoiztutako fitxategiak bilatu bere hash balioaren arabera.',
'fileduplicatesearch-legend' => 'Duplikatu bat bilatu',
'fileduplicatesearch-filename' => 'Fitxategi izena:',
'fileduplicatesearch-submit' => 'Bilaketa',
@@ -3167,7 +3198,8 @@ Fitxategiaren izena sartu "{{ns:file}}:" aurrizkia gabe.',
'specialpages' => 'Orrialde bereziak',
'specialpages-note' => '----
* Orrialde berezi arruntak.
-* <strong class="mw-specialpagerestricted">Mugatutako orrialde bereziak.</strong>',
+* <strong class="mw-specialpagerestricted">Mugatutako orrialde bereziak.</strong>
+* <span class="mw-specialpagecached">Katxea duten orrialde bereziak.</span>',
'specialpages-group-maintenance' => 'Mantentze-oharrak',
'specialpages-group-other' => 'Beste orrialde berezi batzuk',
'specialpages-group-login' => 'Sartu / Izena eman',
diff --git a/languages/messages/MessagesExt.php b/languages/messages/MessagesExt.php
index 1141d04f..14996f9b 100644
--- a/languages/messages/MessagesExt.php
+++ b/languages/messages/MessagesExt.php
@@ -137,15 +137,6 @@ $messages = array(
'category-file-count-limited' => '{{PLURAL:$1|El siguienti archivu está|Los siguientis $1 archivus están}} nesta categoria.',
'listingcontinuesabbrev' => 'acont.',
-'mainpagetext' => "'''MeyaGüiqui s'á istalau satihatoriamenti.'''",
-'mainpagedocfooter' => "Consurta la [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] pa sabel mas al tentu el huncionamientu el software güiqui.
-
-== Esminciandu ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-
'about' => 'Al tentu',
'article' => 'Artículu',
'newwindow' => "(s'abrirá nuna nueva ventana)",
@@ -195,7 +186,6 @@ $messages = array(
'history' => 'Estorial',
'history_short' => 'Estorial',
'updatedmarker' => 'atualizau dendi la mi úrtima vesita',
-'info_short' => 'Enjolmación',
'printableversion' => 'Velsión pa imprental',
'permalink' => 'Atiju remanenti',
'print' => 'Imprental',
@@ -372,12 +362,11 @@ Pol favol, contauta con un [[Special:ListUsers/sysop|çajoril]], mentandu la URL
'viewsourcetext' => 'Pueis vel i copial el cóigu huenti desta páhina:',
'protectedinterface' => "Esta páhina proporciona el testu la entrihazi el software, razón pola que s'alcuentra atarugá.",
'editinginterface' => "'''Cudiau:''' Estás eitandu una página que propolciona el testu la entrijazi el software. Los chambus hechus aquina afeutarán a la entrijazi d'otrus ussuárius.
-Pa traucil, consiera gastal [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], el proyeutu de traución de MediaWiki.",
+Pa traucil, consiera gastal [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], el proyeutu de traución de MediaWiki.",
'sqlhidden' => '(Consurta SQL açonchá)',
'cascadeprotected' => 'Esta páhina s\'alcuentra protehia ebiu a que horma parti e {{PLURAL:$1|la siguienti páhina|las siguientis páhinas}}, qu\'están protehias cola oción "proteción en cascá" ativá:
$2',
'namespaceprotected' => "Nu tiinis premisu pa eital páhinas nel \"espaciu e nombris\" '''\$1'''.",
-'customcssjsprotected' => "Nu tiinis premisu pa eital esta páhina ebiu a que contieni la configuración presonal d'otru usuáriu.",
'ns-specialprotected' => 'Nu se puein eital las páhinas el {{ns:special}} "espaciu e nombris".',
'titleprotected' => "Esti entítulu á siu atarugau pol [[User:$1|$1]].
La razón es la siguienti: ''$2''.",
@@ -426,7 +415,7 @@ Alcuerdati de chambal las tus [[Special:Preferences|preferéncias de {{SITENAME}
'loginsuccess' => "'''Acabihas d'entral en {{SITENAME}} con el nombri \"\$1\".'''",
'nosuchuser' => 'Nu dessisti dengún usuáriu anombrau "$1".
Compreba que lo aigas escritu bien, u [[Special:UserLogin/signup|cria una cuenta nueva]].',
-'nosuchusershort' => 'Nu ai dengún usuáriu llamau "<nowiki>$1</nowiki>". Compreba qu\'esté bien escritu.',
+'nosuchusershort' => 'Nu ai dengún usuáriu llamau "$1". Compreba qu\'esté bien escritu.',
'nouserspecified' => "Ebis escribil un nombri d'usuáriu.",
'wrongpassword' => 'La consínia escrebia nu es correta. Pol favol, preba otra vezi.',
'wrongpasswordempty' => 'As ehau en brancu la consínia. Pol favol, preba otra vezi.',
@@ -466,7 +455,7 @@ Eberias entral ena tu cuenta i chambal la tu consínia.
Si s\'á criau la cuenta ebiu a angún marru, inora esti mensahi.',
'loginlanguagelabel' => 'Palra: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Escambial la consínia',
'resetpass_announce' => 'As entrau ena tu cuenta con una consínia temporal. Pol favol, escrebi una nueva consínia aquí:',
'resetpass_text' => '<!-- Aquí s´escrebi el testu -->',
@@ -492,8 +481,6 @@ Si s\'á criau la cuenta ebiu a angún marru, inora esti mensahi.',
'extlink_tip' => 'Atihu esternu (alcuerdati el prefihu http://)',
'headline_sample' => 'Entítulu',
'headline_tip' => 'Entítulu e nivel 2',
-'math_sample' => 'Añiil la hórmula aquí',
-'math_tip' => 'Hórmula matemática (LaTeX)',
'nowiki_sample' => 'Añiil testu sin hormatu aquí',
'nowiki_tip' => 'Inoral hormatu güiqui',
'image_sample' => 'Sabulugal.jpg',
@@ -568,7 +555,7 @@ Si nu quieis crial esti artículu, solu tiinis que pursal nel botón \"'''atrás
Pueis [[Special:Search/{{PAGENAME}}|landeal el entítulu del artículu]] en otras páhinas,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],
u [{{fullurl:{{FULLPAGENAME}}|action=edit}} eital ésta]</span>.',
-'userpage-userdoesnotexist' => 'La cuenta d\'usuáriu "$1" nu está rustria. Pol favol, compreba que rialmenti quieis crial/eital esta páhina.',
+'userpage-userdoesnotexist' => 'La cuenta d\'usuáriu "<nowiki>$1</nowiki>" nu está rustria. Pol favol, compreba que rialmenti quieis crial/eital esta páhina.',
'clearyourcache' => "'''Nota:''' Aluspués d'emburacal el archivu, ebi gorvel a cargal la página pa vel los chambus. '''Mozilla / Firefox / Safari:''' Pursa la tecra ''Shift'' mentris das a ''Recargal'', u pursa ''Ctrl-F5'' u ''Ctrl-R'' (''Command-R'' en Mac);
'''Konqueror:''' Pursa ''F5'' u ''Recargal'';
'''Opera:''' Esborra el caché en ''Herramientas→Preferéncias''.
@@ -851,7 +838,6 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
'changepassword' => 'Chambal consínia',
'prefs-skin' => 'Aparéncia',
'skin-preview' => 'Previsoreal',
-'prefs-math' => 'Hórmulas',
'datedefault' => 'Sin preferéncias',
'prefs-datetime' => 'Fecha i ora',
'prefs-personal' => 'Datus el usuáriu',
@@ -870,8 +856,6 @@ Asigurati e qu'esti chambu mantenga la continuiá el estorial la páhina.",
'columns' => 'Colunas:',
'searchresultshead' => 'Landeal',
'resultsperpage' => 'Resurtaus pol páhina:',
-'contextlines' => 'Númeru e línias de testu pol resurtau:',
-'contextchars' => 'Carateris de testu pol línia:',
'stub-threshold' => 'Arrayu superiol pa consieral cumu <a href="#" class="stub">atihu a prencipiu</a> (bytes):',
'recentchangesdays' => 'Númeru e dias a muestral en "úrtimus chambus":',
'recentchangesdays-max' => 'Máissimu $1 {{PLURAL:$1|dia|dias}}',
@@ -1126,10 +1110,6 @@ Si acontinas queriendu empuntal el archivu, vai alatrás i escambia el nombri el
'upload-maxfilesize' => 'Grandol máisimu el archivu: $1',
'watchthisupload' => 'Vegilal esti archivu',
'filewasdeleted' => 'Un archivu con el mesmu nombri ya hue empuntau i alogu esborrau. Eberias comprebal el $1 enantis de gorvel a empuntalu.',
-'upload-wasdeleted' => "'''Avisu: Estás tratandu d´empuntal un archivu que ya hue esborrau.'''
-
-Eberias arreparal en si es convenienti acontinal empuntandu el archivu u nu.
-Velaquí el antigu rustrihu d´esborrau pa esti archivu:",
'filename-bad-prefix' => "El nombri del archivu qu'estás empuntandu esmiença pol '''\"\$1\"''', es izil, es un nombri nu descritivu (típicu nombri dau autumaticamenti pol cámaras dehitalis). Pol favol, chamba el nombri del tu archivu.",
'upload-success-subj' => 'Empuntu satisfatoriu',
@@ -1433,13 +1413,11 @@ La direción email qu'aigas escrebiu enas tus preferéncias apaicirá cumu remit
'watchlistanontext' => 'Pa vel u eital las entrás ena tu lista e seguimientu es mestel $1.',
'watchnologin' => 'Nu estás rustriu',
'watchnologintext' => 'Ebis [[Special:UserLogin|abril la tu cuenta]] pa puel hazel chambus ena tu lista e seguimientu.',
-'addedwatch' => 'Añiiu a la lista e seguimientu',
'addedwatchtext' => "S´á añiiu la páhina \"[[:\$1]]\" a la tu [[Special:Watchlist|lista e seguimientu]].
Los huturus chambus de la páhina i ena su caraba se muestrarán aquí,
i el su entítulu apaicirá en '''negrina''' ena [[Special:RecentChanges|lista d´úrtimus chambus]].
Si quieis ehal de vehilal la páhina, pursa sobri \"Ehal de vehilal\".",
-'removedwatch' => 'Esborrau e la lista e seguimientu',
'removedwatchtext' => 'La página "[[:$1]]" á siu esborrá de la tu [[Special:Watchlist|lista de seguimientu]].',
'watch' => 'Vegilal',
'watchthispage' => 'Vehilal esta páhina',
@@ -1492,10 +1470,10 @@ Nel chascu en que nu vesitis el artículu, nu se te hazrán mas notificacionis.
--
Pa hazel chambus ena tu lista e seguimientu, vesita
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Ayua la Güiquipeya:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Esborral páhina',
@@ -1511,7 +1489,7 @@ Ayua la Güiquipeya:
Pol favol, confirma que realmenti quieis hazel esu, qu'entiendis las consecuencias, i que lo hazis dalcuerdu cola
[[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Ación acabihá',
-'deletedtext' => 'S\'á esborrau "<nowiki>$1</nowiki>" corretamenti.
+'deletedtext' => 'S\'á esborrau "$1" corretamenti.
Consurta $2 pa vel los úrtimus esborraus.',
'deletedarticle' => 'esborrau "[[$1]]"',
'dellogpage' => 'Rustrihu d´esborrau',
@@ -1559,7 +1537,7 @@ tu escrucaol pa cargal otra vezi la páhina i güervi a ententalu.",
'protectexpiry' => 'Acabiha:',
'protect_expiry_invalid' => 'La fecha e cauciá nu es correta.',
'protect_expiry_old' => 'La fecha e cauciá está nel pasau.',
-'protect-text' => "Aquí pueis vel i chambal el nivel de proteción la páhina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Aquí pueis vel i chambal el nivel de proteción la páhina '''$1'''.",
'protect-locked-blocked' => "Nu pueis chambal los nivelis de proteción mentris estés atarugau. Velaquí las ocionis atulais la páhina '''$1''':",
'protect-locked-dblock' => "Nu se puein chambal los nivelis de proteción ebiu a un tarugu ativu ena basi e datus.
Velaquí las ocionis atualis la páhina '''$1''':",
@@ -1684,7 +1662,6 @@ $1',
'blockiptext' => "Gasta el hormuláriu d'embahu p'atarugal el acesu duna IP u dun usuáriu.
Estu solu ebi hazelsi pa evital el vandalismu, i dalcuerdu cola [[{{MediaWiki:Policy-url}}|póliça]].
Escrebi una razón concreta embahu (pol sabulugal, almientandu páhinas qu'aigan siu vandalizás pol esti usuáriu).",
-'ipaddress' => 'Direción IP:',
'ipadressorusername' => 'IP u nombri d´usuáriu:',
'ipbexpiry' => 'Acabiha:',
'ipbreason' => 'Razón:',
@@ -1697,7 +1674,6 @@ Escrebi una razón concreta embahu (pol sabulugal, almientandu páhinas qu'aigan
** Comportamientu encévicu
** Abusal con varias cuentas
** Nombris d´usuárius enacetabris',
-'ipbanononly' => 'Atarugal sólu a los usuárius anónimus',
'ipbcreateaccount' => 'Atarugal el criaeru e cuentas',
'ipbemailban' => 'Atarugal al usuáriu envial emails',
'ipbenableautoblock' => "Atarugal autumáticamenti la direción IP gastá pol esti usuáriu, i cualisquiel IP posteriol endi la cual trati d'eital",
@@ -1724,11 +1700,7 @@ Escrebi una razón concreta embahu (pol sabulugal, almientandu páhinas qu'aigan
'unblocked-id' => 'S´á esborrau el tarugu $1',
'ipblocklist' => "Lista de IP i nombris d'usuárius atarugaus",
'ipblocklist-legend' => 'Landeal a un usuáriu atarugau',
-'ipblocklist-username' => 'Nombri d´usuáriu u IP:',
-'ipblocklist-sh-userblocks' => '$1 tarugus de cuentas',
-'ipblocklist-sh-tempblocks' => '$1 tarugus temporalis',
'ipblocklist-submit' => 'Landeal',
-'blocklistline' => '$1, $2 ataruga a $3 ($4)',
'infiniteblock' => 'enfinitu',
'expiringblock' => 'acabiha $1 $2',
'anononlyblock' => 'solu anón.',
@@ -1856,7 +1828,7 @@ Ya desisti la páhina "[[:$1]]". Te petaria esborrala pa premitil el treslau?',
'allmessagesdefault' => 'Testu pol defeutu',
'allmessagescurrent' => 'Testu atual',
'allmessagestext' => 'Esta es una lista e mensahis del sistema disponibris nel espaciu e nombris MediaWiki:
-Pol favol, vesita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] i [http://translatewiki.net translatewiki.net] si quieis colabutal.',
+Pol favol, vesita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] i [//translatewiki.net translatewiki.net] si quieis colabutal.',
'allmessagesnotsupportedDB' => "Nu se puei gastal esta páhina polque '''\$wgUseDatabaseMessages''' está desativau.",
# Thumbnails
@@ -1973,9 +1945,7 @@ Pol favol, gasta el botón "previsoreal" enantis d\'emburacal.',
'monobook.js' => '/* Antigu; gasta [[MediaWiki:common.js]] */',
# Metadata
-'nodublincore' => 'Metadatus RDF Dublin Core desativaus pa esti sirviol.',
-'nocreativecommons' => 'Metadatus RDF Creative Commons desativaus pa esti sirviol.',
-'notacceptable' => 'El sirviol de la güiqui nu puei chambal los datus a un hormatu leibri pol tu escrucaol.',
+'notacceptable' => 'El sirviol de la güiqui nu puei chambal los datus a un hormatu leibri pol tu escrucaol.',
# Attribution
'anonymous' => '{{PLURAL:$1|Ussuáriu anónimu|Ussuárius anónimus}} en {{SITENAME}}',
@@ -1995,33 +1965,6 @@ Pol favol, gasta el botón "previsoreal" enantis d\'emburacal.',
'spam_reverting' => 'Revirtiendu a la úrtima velsión que nu contenga atihus a $1',
'spam_blanking' => 'Tolas revisionis tienin atihus a $1, branqueandu',
-# Info page
-'infosubtitle' => 'Enhormación pala páhina',
-'numedits' => 'Númeru d´eicionis (artículu): $1',
-'numtalkedits' => 'Númeru d´eicionis (páhina e caraba): $1',
-'numwatchers' => 'Númeru d´usuárius vehilandu: $1',
-'numauthors' => 'Númeru d´autoris deferentis (artículu): $1',
-'numtalkauthors' => 'Númeru d´autoris deferentis (páhina e caraba): $1',
-
-# Math options
-'mw_math_png' => 'Renderiçal sempri PNG',
-'mw_math_simple' => 'HTML si es mu simpri, si nu, PNG',
-'mw_math_html' => 'HTML si es posibri, si nu, PNG',
-'mw_math_source' => 'Quealu cumu TeX (pa escrucaoris de testu)',
-'mw_math_modern' => 'Recomendau pa escrucaoris moernus',
-'mw_math_mathml' => 'MathML si es posibri (esperimental)',
-
-# Math errors
-'math_failure' => 'Nu es posibri entendel',
-'math_unknown_error' => 'marru andarriu',
-'math_unknown_function' => 'hunción andarria',
-'math_lexing_error' => 'marru lésicu',
-'math_syntax_error' => 'marru ena sintasis',
-'math_image_error' => 'Marru convirtiendu a PNG; compreba que latex, dvips, gs, i convert estén corretamenti istalaus',
-'math_bad_tmpdir' => 'Nu es posibri escribil u crial el diretoriu temporal de <em>math</em>',
-'math_bad_output' => 'Nu es posibri escribil u crial el diretoriu e salia e <em>math</em>',
-'math_notexvc' => 'Farta el ehecutabri e <strong>texvc</strong>; pol favol, lei <em>math/README</em> pa configuralu.',
-
# Patrolling
'markaspatrolleddiff' => 'Aseñalal cumu patrullau',
'markaspatrolledtext' => 'Aseñalal esti artículu cumu patrullau',
@@ -2056,14 +1999,13 @@ $1',
'nextdiff' => 'Siguienti def →',
# Media information
-'thumbsize' => 'Grandol el cuairu:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|página|páginas}}',
-'file-info' => 'grandol el archivu: $1, MIME type: $2',
-'file-info-size' => '$1 × $2 pixel, grandol el archivu: $3, MIME type: $4',
-'file-nohires' => '<small>Nu disponibri a mayol resolución.</small>',
-'svg-long-desc' => 'archivu SVG, $1 × $2 pixelis, grandol: $3',
-'show-big-image' => 'Resolución máisima',
-'show-big-image-thumb' => '<small>Grandol al previsoreal: $1 × $2 pixelis</small>',
+'thumbsize' => 'Grandol el cuairu:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|página|páginas}}',
+'file-info' => 'grandol el archivu: $1, MIME type: $2',
+'file-info-size' => '$1 × $2 pixel, grandol el archivu: $3, MIME type: $4',
+'file-nohires' => '<small>Nu disponibri a mayol resolución.</small>',
+'svg-long-desc' => 'archivu SVG, $1 × $2 pixelis, grandol: $3',
+'show-big-image' => 'Resolución máisima',
# Special:NewFiles
'newimages' => 'Correol d´archivus nuevus',
@@ -2097,7 +2039,13 @@ Cualisquiel otru atihu ena mesma línia se consierará ececión, p.s. páhinas o
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Anchón',
@@ -2112,7 +2060,6 @@ Cualisquiel otru atihu ena mesma línia se consierará ececión, p.s. páhinas o
'exif-xresolution' => 'Resolución orizontal',
'exif-yresolution' => 'Resolución vertical',
'exif-jpeginterchangeformatlength' => 'Bytes de datus JPEG',
-'exif-transferfunction' => 'Hunción de trasferencia',
'exif-whitepoint' => 'Cromaciá e puntu brancu',
'exif-primarychromaticities' => 'Cromaciais primarias',
'exif-imagedescription' => 'Entítulu la imáhin',
@@ -2128,7 +2075,6 @@ Cualisquiel otru atihu ena mesma línia se consierará ececión, p.s. páhinas o
'exif-compressedbitsperpixel' => 'Mó de compresión la imahin',
'exif-pixelydimension' => 'Anchón la imahin premitiu',
'exif-pixelxdimension' => 'Artu la imahin premitiu',
-'exif-makernote' => 'Notas el fabricanti',
'exif-usercomment' => 'Comentárius del usuáriu',
'exif-relatedsoundfile' => "Archivu d'audiu relacionau",
'exif-datetimeoriginal' => 'Fecha i ora la heneración los datus',
@@ -2147,7 +2093,6 @@ Cualisquiel otru atihu ena mesma línia se consierará ececión, p.s. páhinas o
'exif-sensingmethod' => 'Métu e sensol',
'exif-filesource' => 'Coigu el archivu',
'exif-scenetype' => "Crasi d'escena",
-'exif-cfapattern' => 'Patrón CFA',
'exif-customrendered' => "Procesamientu d'imahin presonalizau",
'exif-exposuremode' => "Mó d'esposición",
'exif-whitebalance' => 'Balanci e brancu',
@@ -2308,14 +2253,12 @@ Cualisquiel otru atihu ena mesma línia se consierará ececión, p.s. páhinas o
# External editor support
'edit-externally' => 'Eital esti archivu gastandu una apricación esterna',
-'edit-externally-help' => 'Pa mas enholmación, lei las [http://www.mediawiki.org/wiki/Manual:External_editors istrucionis de configuración] (en ingrés).',
+'edit-externally-help' => 'Pa mas enholmación, lei las [//www.mediawiki.org/wiki/Manual:External_editors istrucionis de configuración] (en ingrés).',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tó',
-'imagelistall' => 'tó',
-'watchlistall2' => 'tó',
-'namespacesall' => 'tó',
-'monthsall' => 'tó',
+'watchlistall2' => 'tó',
+'namespacesall' => 'tó',
+'monthsall' => 'tó',
# E-mail address confirmation
'confirmemail' => 'Confirmal email',
@@ -2414,14 +2357,14 @@ Pol favol, confirma si rialmenti quieis gorvel a crial la páhina.",
'watchlistedit-noitems' => 'Nu ai entítulus ena tu lista e seguimientu.',
'watchlistedit-normal-title' => 'Eital la lista e seguimientu',
'watchlistedit-normal-legend' => 'Esborral entítulus de la lista e seguimientu',
-'watchlistedit-normal-explain' => 'Los entítulus de la tu lista e seguimientu se muestran embahu. Pa esborral un entítulu, seleciona el cuairu d´al lau i pursa sobri "Esborral entítulus". Tamién pueis [[Special:Watchlist/raw|eital la lista]].',
+'watchlistedit-normal-explain' => 'Los entítulus de la tu lista e seguimientu se muestran embahu. Pa esborral un entítulu, seleciona el cuairu d´al lau i pursa sobri "Esborral entítulus". Tamién pueis [[Special:EditWatchlist/raw|eital la lista]].',
'watchlistedit-normal-submit' => 'Esborral entítulus',
'watchlistedit-normal-done' => 'As esborrau {{PLURAL:$1|1 entítulu e|$1 entítulus de}} la tu lista e seguimientu:',
'watchlistedit-raw-title' => 'Eital lista e seguimientu',
'watchlistedit-raw-legend' => 'Eital lista e seguimientu',
'watchlistedit-raw-explain' => 'Se muestran embahu los entítulus de la tu lista e seguimientu, que puein sel eitaus
añiendulus i esborrándulus de la lista; un entítulu pol línia. Cuandu acabihis, pursa sobri "Atualizal lista e seguimientu".
- Tamién pueis [[Special:Watchlist/edit|gastal el eitol estándal]].',
+ Tamién pueis [[Special:EditWatchlist|gastal el eitol estándal]].',
'watchlistedit-raw-titles' => 'Entítulus:',
'watchlistedit-raw-submit' => 'Atualizal la lista e seguimientu',
'watchlistedit-raw-done' => 'La tu lista e seguimientu s´acabiha d´atualizal!',
diff --git a/languages/messages/MessagesFa.php b/languages/messages/MessagesFa.php
index 57f79368..a8725852 100644
--- a/languages/messages/MessagesFa.php
+++ b/languages/messages/MessagesFa.php
@@ -18,6 +18,7 @@
* @author Meisam
* @author Meno25
* @author Mjbmr
+ * @author Mormegil
* @author Reza1615
* @author Roozbeh Pournader <roozbeh at gmail.com>
* @author Sahim
@@ -55,97 +56,101 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'تغییرمسیرهای_دوتایی' ),
+ 'Activeusers' => array( 'کاربران_Ùعال' ),
+ 'Allmessages' => array( 'تمام_پیغام‌ها' ),
+ 'Allpages' => array( 'تمام_صÙحه‌ها' ),
+ 'Ancientpages' => array( 'صÙحه‌های_قدیمی' ),
+ 'Blankpage' => array( 'صÙحه_خالی' ),
+ 'Block' => array( 'بستن_نشانی_آی‌پی' ),
+ 'Blockme' => array( 'بستن_من' ),
+ 'Booksources' => array( 'منابع_کتاب' ),
'BrokenRedirects' => array( 'تغییرمسیرهای_خراب' ),
- 'Disambiguations' => array( 'ابهام‌زدایی' ),
- 'Userlogin' => array( 'ورود_به_سامانه' ),
- 'Userlogout' => array( 'خروج_از_سامانه' ),
+ 'Categories' => array( 'رده‌ها' ),
+ 'ChangePassword' => array( 'از_نو_کردن_گذرواژه' ),
+ 'ComparePages' => array( 'مقایسه_صÙحات' ),
+ 'Confirmemail' => array( 'تایید_پست_الکترونیکی' ),
+ 'Contributions' => array( 'مشارکت‌ها' ),
'CreateAccount' => array( 'ایجاد_حساب_کاربری' ),
- 'Preferences' => array( 'ترجیحات' ),
- 'Watchlist' => array( 'Ùهرست_پی‌گیری' ),
- 'Recentchanges' => array( 'تغییرات_اخیر' ),
- 'Upload' => array( 'بارگذاری_پرونده' ),
+ 'Deadendpages' => array( 'صÙحه‌های_بن‌بست' ),
+ 'DeletedContributions' => array( 'مشارکت‌های_حذÙ_شده' ),
+ 'Disambiguations' => array( 'ابهام‌زدایی' ),
+ 'DoubleRedirects' => array( 'تغییرمسیرهای_دوتایی' ),
+ 'EditWatchlist' => array( 'ویرایش_پی‌گیری‌ها' ),
+ 'Emailuser' => array( 'نامه_به_کاربر' ),
+ 'Export' => array( 'برون_بری_صÙحه' ),
+ 'Fewestrevisions' => array( 'کمترین_نسخه' ),
+ 'FileDuplicateSearch' => array( 'جستجوی_پرونده_تکراری' ),
+ 'Filepath' => array( 'مسیر_پرونده' ),
+ 'Import' => array( 'درون_ریزی_صÙحه' ),
+ 'Invalidateemail' => array( 'باطل_کردن_پست_الکترونیکی' ),
+ 'BlockList' => array( 'Ùهرست_بستن_نشانی_آی‌پی' ),
+ 'LinkSearch' => array( 'جستجوی_پیوند' ),
+ 'Listadmins' => array( 'Ùهرست_مدیران' ),
+ 'Listbots' => array( 'Ùهرست_ربات‌ها' ),
'Listfiles' => array( 'Ùهرست_پرونده‌ها', 'Ùهرست_تصاویر' ),
- 'Newimages' => array( 'تصاویر_جدید' ),
- 'Listusers' => array( 'Ùهرست_کاربران' ),
'Listgrouprights' => array( 'اختیارات_گروه‌های_کاربری' ),
- 'Statistics' => array( 'آمار' ),
- 'Randompage' => array( 'صÙحه_تصادÙÛŒ' ),
+ 'Listredirects' => array( 'Ùهرست_تغییرمسیرها' ),
+ 'Listusers' => array( 'Ùهرست_کاربران' ),
+ 'Lockdb' => array( 'Ù‚ÙÙ„_کردن_پایگاه_داده' ),
+ 'Log' => array( 'سیاهه‌ها' ),
'Lonelypages' => array( 'صÙحه‌های_یتیم' ),
- 'Uncategorizedpages' => array( 'صÙحه‌های_رده‌بندی_نشده' ),
- 'Uncategorizedcategories' => array( 'رده‌های_رده‌بندی_نشده' ),
- 'Uncategorizedimages' => array( 'تصویرهای_رده‌بندی_‌نشده' ),
- 'Uncategorizedtemplates' => array( 'الگوهای_رده‌بندی_نشده' ),
- 'Unusedcategories' => array( 'رده‌های_استÙاده_نشده' ),
- 'Unusedimages' => array( 'تصاویر_استÙاده_نشده' ),
- 'Wantedpages' => array( 'صÙحه‌های_مورد_نیاز' ),
- 'Wantedcategories' => array( 'رده‌های_مورد_نیاز' ),
- 'Wantedfiles' => array( 'پرونده‌های_مورد_نیاز' ),
- 'Wantedtemplates' => array( 'الگوهای_مورد_نیاز' ),
+ 'Longpages' => array( 'صÙحه‌های_بلند' ),
+ 'MergeHistory' => array( 'ادغام_تاریخچه' ),
+ 'MIMEsearch' => array( 'جستجوی_MIME' ),
+ 'Mostcategories' => array( 'بیشترین_رده' ),
+ 'Mostimages' => array( 'بیشترین_تصویر' ),
'Mostlinked' => array( 'بیشترین_پیوند' ),
'Mostlinkedcategories' => array( 'رده_با_بیشترین_پیوند' ),
'Mostlinkedtemplates' => array( 'الگو_با_بیشترین_پیوند' ),
- 'Mostimages' => array( 'بیشترین_تصویر' ),
- 'Mostcategories' => array( 'بیشترین_رده' ),
'Mostrevisions' => array( 'بیشترین_نسخه' ),
- 'Fewestrevisions' => array( 'کمترین_نسخه' ),
- 'Shortpages' => array( 'صÙحه‌های_کوتاه' ),
- 'Longpages' => array( 'صÙحه‌های_بلند' ),
+ 'Movepage' => array( 'انتقال_صÙحه' ),
+ 'Mycontributions' => array( 'مشارکت‌های_من' ),
+ 'Mypage' => array( 'صÙحه_من' ),
+ 'Mytalk' => array( 'بحث_من' ),
+ 'Myuploads' => array( 'بارگذاری‌های_من' ),
+ 'Newimages' => array( 'تصاویر_جدید' ),
'Newpages' => array( 'صÙحه‌های_تازه' ),
- 'Ancientpages' => array( 'صÙحه‌های_قدیمی' ),
- 'Deadendpages' => array( 'صÙحه‌های_بن‌بست' ),
- 'Protectedpages' => array( 'صÙحه‌های_Ø­Ùاظت_شده' ),
- 'Protectedtitles' => array( 'عنوان‌های_Ø­Ùاظت_شده' ),
- 'Allpages' => array( 'تمام_صÙحه‌ها' ),
+ 'PasswordReset' => array( 'بازنشاندن_گذرواژه' ),
+ 'PermanentLink' => array( 'پیوند_دائمی' ),
+ 'Popularpages' => array( 'صÙحه‌های_محبوب' ),
+ 'Preferences' => array( 'ترجیحات' ),
'Prefixindex' => array( 'نمایه_پیشوندی' ),
- 'Ipblocklist' => array( 'Ùهرست_بستن_نشانی_آی‌پی' ),
- 'Unblock' => array( 'باز_کردن' ),
- 'Specialpages' => array( 'صÙحه‌های_ویژه' ),
- 'Contributions' => array( 'مشارکت‌ها' ),
- 'Emailuser' => array( 'نامه_به_کاربر' ),
- 'Confirmemail' => array( 'تایید_پست_الکترونیکی' ),
- 'Whatlinkshere' => array( 'پیوند_به_این_صÙحه' ),
+ 'Protectedpages' => array( 'صÙحه‌های_محاÙظت_شده' ),
+ 'Protectedtitles' => array( 'عنوان‌های_محاÙظت_شده' ),
+ 'Randompage' => array( 'صÙحه_تصادÙÛŒ' ),
+ 'Randomredirect' => array( 'تغییرمسیر_تصادÙÛŒ' ),
+ 'Recentchanges' => array( 'تغییرات_اخیر' ),
'Recentchangeslinked' => array( 'تغییرات_مرتبط' ),
- 'Movepage' => array( 'انتقال_صÙحه' ),
- 'Blockme' => array( 'بستن_من' ),
- 'Booksources' => array( 'منابع_کتاب' ),
- 'Categories' => array( 'رده‌ها' ),
- 'Export' => array( 'برون_بری_صÙحه' ),
- 'Version' => array( 'نسخه' ),
- 'Allmessages' => array( 'تمام_پیغام‌ها' ),
- 'Log' => array( 'سیاهه‌ها' ),
- 'Blockip' => array( 'بستن_نشانی_آی‌پی' ),
+ 'Revisiondelete' => array( 'حذÙ_نسخه' ),
+ 'RevisionMove' => array( 'انتقال_نسخه' ),
+ 'Search' => array( 'جستجو' ),
+ 'Shortpages' => array( 'صÙحه‌های_کوتاه' ),
+ 'Specialpages' => array( 'صÙحه‌های_ویژه' ),
+ 'Statistics' => array( 'آمار' ),
+ 'Tags' => array( 'برچسب‌ها' ),
+ 'Unblock' => array( 'باز_کردن' ),
+ 'Uncategorizedcategories' => array( 'رده‌های_رده‌بندی_نشده' ),
+ 'Uncategorizedimages' => array( 'تصویرهای_رده‌بندی_‌نشده' ),
+ 'Uncategorizedpages' => array( 'صÙحه‌های_رده‌بندی_نشده' ),
+ 'Uncategorizedtemplates' => array( 'الگوهای_رده‌بندی_نشده' ),
'Undelete' => array( 'احیای_صÙحهٔ_حذÙ‌شده' ),
- 'Import' => array( 'درون_ریزی_صÙحه' ),
- 'Lockdb' => array( 'Ù‚ÙÙ„_کردن_پایگاه_داده' ),
'Unlockdb' => array( 'باز_کردن_پایگاه_داده' ),
- 'Userrights' => array( 'اختیارات_کاربر' ),
- 'MIMEsearch' => array( 'جستجوی_MIME' ),
- 'FileDuplicateSearch' => array( 'جستجوی_پرونده_تکراری' ),
- 'Unwatchedpages' => array( 'صÙحه‌های_پی‌گیری_نشده' ),
- 'Listredirects' => array( 'Ùهرست_تغییرمسیرها' ),
- 'Revisiondelete' => array( 'حذÙ_نسخه' ),
+ 'Unusedcategories' => array( 'رده‌های_استÙاده_نشده' ),
+ 'Unusedimages' => array( 'تصاویر_استÙاده_نشده' ),
'Unusedtemplates' => array( 'الگوهای_استÙاده_نشده' ),
- 'Randomredirect' => array( 'تغییرمسیر_تصادÙÛŒ' ),
- 'Mypage' => array( 'صÙحه_من' ),
- 'Mytalk' => array( 'بحث_من' ),
- 'Mycontributions' => array( 'مشارکت‌های_من' ),
- 'Listadmins' => array( 'Ùهرست_مدیران' ),
- 'Listbots' => array( 'Ùهرست_ربات‌ها' ),
- 'Popularpages' => array( 'صÙحه‌های_محبوب' ),
- 'Search' => array( 'جستجو' ),
- 'Resetpass' => array( 'از_نو_کردن_گذرواژه' ),
+ 'Unwatchedpages' => array( 'صÙحه‌های_پی‌گیری_نشده' ),
+ 'Upload' => array( 'بارگذاری_پرونده' ),
+ 'Userlogin' => array( 'ورود_به_سامانه' ),
+ 'Userlogout' => array( 'خروج_از_سامانه' ),
+ 'Userrights' => array( 'اختیارات_کاربر' ),
+ 'Version' => array( 'نسخه' ),
+ 'Wantedcategories' => array( 'رده‌های_مورد_نیاز' ),
+ 'Wantedfiles' => array( 'پرونده‌های_مورد_نیاز' ),
+ 'Wantedpages' => array( 'صÙحه‌های_مورد_نیاز' ),
+ 'Wantedtemplates' => array( 'الگوهای_مورد_نیاز' ),
+ 'Watchlist' => array( 'Ùهرست_پی‌گیری' ),
+ 'Whatlinkshere' => array( 'پیوند_به_این_صÙحه' ),
'Withoutinterwiki' => array( 'بدون_میان‌ویکی' ),
- 'MergeHistory' => array( 'ادغام_تاریخچه' ),
- 'Filepath' => array( 'مسیر_پرونده' ),
- 'Invalidateemail' => array( 'باطل_کردن_پست_الکترونیکی' ),
- 'Blankpage' => array( 'صÙحه_خالی' ),
- 'LinkSearch' => array( 'جستجوی_پیوند' ),
- 'DeletedContributions' => array( 'مشارکت‌های_حذÙ_شده' ),
- 'Tags' => array( 'برچسب‌ها' ),
- 'Activeusers' => array( 'کاربران_Ùعال' ),
- 'ComparePages' => array( 'مقایسه_صÙحات' ),
- 'Badtitle' => array( 'عنوان_نامناسب' ),
);
@@ -169,12 +174,6 @@ $digitTransformTable = array(
$fallback8bitEncoding = 'windows-1256';
$rtl = true;
-$defaultUserOptionOverrides = array(
- # Swap sidebar to right side by default
- 'quickbar' => 2,
- # Underlines seriously harm legibility. Force off:
- 'underline' => 0,
-);
/**
@@ -446,8 +445,8 @@ $messages = array(
'tog-shownumberswatching' => 'شمار کاربران پی‌گیری‌کننده نمایش یابد',
'tog-oldsig' => 'امضای کنونی:',
'tog-fancysig' => 'امضا به صورت ویکی‌متن در نظر گرÙته شود (بدون درج خودکار پیوند)',
-'tog-externaleditor' => 'استÙاده از ویرایشگر خارجی به‌طور پیش‌Ùرض (Ùقط برای کاربران پیشرÙته. نیازمند تنظیمات ویژه در رایانهٔ‌تان است. [http://www.mediawiki.org/wiki/Manual:External_editors اطلاعات بیشتر].)',
-'tog-externaldiff' => 'استÙاده از تÙاوت‌گیر (diff) خارجی به‌طور پیش‌Ùرض (Ùقط برای کاربران پیشرÙته. نیازمند تنظیمات ویژه در رایانهٔ‌تان است. [http://www.mediawiki.org/wiki/Manual:External_editors اطلاعات بیشتر].)',
+'tog-externaleditor' => 'استÙاده از ویرایشگر خارجی به‌طور پیش‌Ùرض (Ùقط برای کاربران پیشرÙته. نیازمند تنظیمات ویژه در رایانهٔ‌تان است. [//www.mediawiki.org/wiki/Manual:External_editors اطلاعات بیشتر].)',
+'tog-externaldiff' => 'استÙاده از تÙاوت‌گیر (diff) خارجی به‌طور پیش‌Ùرض (Ùقط برای کاربران پیشرÙته. نیازمند تنظیمات ویژه در رایانهٔ‌تان است. [//www.mediawiki.org/wiki/Manual:External_editors اطلاعات بیشتر].)',
'tog-showjumplinks' => 'پیوندهای دسترسی‌پذیری «پرش به» Ùعال باشد',
'tog-uselivepreview' => 'استÙاده از پیش‌نمایش زنده (نیازمند جاوااسکریپت) (آزمایشی)',
'tog-forceeditsummary' => 'هنگامی که خلاصهٔ ویرایش ننوشته‌ام به من اطلاع داده شود',
@@ -544,16 +543,7 @@ $messages = array(
'listingcontinuesabbrev' => '(ادامه)',
'index-category' => 'صÙحه‌های نمایه شده',
'noindex-category' => 'صÙحه‌های نمایه نشده',
-
-'mainpagetext' => "'''نرم‌اÙزار ویکی با موÙقیت نصب شد.'''",
-'mainpagedocfooter' => 'از [http://meta.wikimedia.org/wiki/Help:Contents راهنمای کاربران]
-برای استÙاده از نرم‌اÙزار ویکی Ú©Ù…Ú© بگیرید.
-
-== آغاز به کار ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings تنظیم پیکربندی]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki پرسش‌های متداول]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Ùهرست پست الکترونیکی نسخه‌های مدیاویکی]',
+'broken-file-category' => 'صÙحه‌های دارای پیوندهای پروندهٔ خراب',
'about' => 'درباره',
'article' => 'صÙحهٔ محتوا',
@@ -605,10 +595,10 @@ $messages = array(
'history' => 'تاریخچهٔ صÙحه',
'history_short' => 'تاریخچه',
'updatedmarker' => 'به‌روزشده از پس از آخرین باری که سرزده‌ام',
-'info_short' => 'اطلاعات',
'printableversion' => 'نسخهٔ قابل چاپ',
'permalink' => 'پیوند پایدار',
'print' => 'چاپ',
+'view' => 'نمایش',
'edit' => 'ویرایش',
'create' => 'ایجاد',
'editthispage' => 'ویرایش این صÙحه',
@@ -616,6 +606,7 @@ $messages = array(
'delete' => 'حذÙ',
'deletethispage' => 'حذ٠این صÙحه',
'undelete_short' => 'احیای {{PLURAL:$1|یک ویرایش|$1 ویرایش}}',
+'viewdeleted_short' => 'نمایش {{PLURAL:$1|یک ویرایش حذ٠شده|$1 ویرایش حذ٠شده}}',
'protect' => 'محاÙظت',
'protect_change' => 'تغییر',
'protectthispage' => 'محاÙظت از این صÙحه',
@@ -700,6 +691,8 @@ $1',
'toc' => 'محتویات',
'showtoc' => 'نمایش',
'hidetoc' => 'نهÙتن',
+'collapsible-collapse' => 'نهÙتن',
+'collapsible-expand' => 'گسترش',
'thisisdeleted' => 'نمایش یا احیای $1؟',
'viewdeleted' => 'نمایش $1؟',
'restorelink' => '{{PLURAL:$1|یک|$1}} ویرایش حذÙ‌شده',
@@ -713,6 +706,8 @@ $1',
'feed-atom' => 'اتم',
'feed-rss' => 'آراس‌اس',
'red-link-title' => '$1 (صÙحه وجود ندارد)',
+'sort-descending' => 'مرتب‌سازی نزولی',
+'sort-ascending' => 'مرتب‌سازی صعودی',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'صÙحه',
@@ -802,12 +797,13 @@ $1',
'protectedinterface' => 'این صÙحه ارائه‌دهندهٔ متنی برای واسط کاربر این نرم‌اÙزار است Ùˆ به منظور پیشگیری از خرابکاری Ù‚ÙÙ„ شده‌است.',
'editinginterface' => "'''هشدار:''' شما صÙحه‌ای را ویرایش می‌کنید Ú©Ù‡ شامل متنی است Ú©Ù‡ در واسط کاربر این نرم‌اÙزار به کار رÙته‌است.
تغییر این صÙحه منجر به تغییر ظاهر واسط کاربر این نرم‌اÙزار برای دیگر کاربران خواهد شد.
-برای ترجمه، لطÙاً از [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net]ØŒ پروژهٔ ترجمهٔ مدیاویکی، استÙاده کنید.",
+برای ترجمه، لطÙاً از [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net]ØŒ پروژهٔ ترجمهٔ مدیاویکی، استÙاده کنید.",
'sqlhidden' => '(دستور اس‌کیوال پنهان شده)',
'cascadeprotected' => 'این صÙحه در مقابل ویرایش محاÙظت شده‌است برای اینکه در {{PLURAL:$1|صÙحهٔ|صÙحه‌های}} محاÙظت‌شدهٔ زیر Ú©Ù‡ گزینهٔ «آبشاری» در {{PLURAL:$1|آن|آنها}} انتخاب شده‌است، قرار گرÙته‌است:
$2',
'namespaceprotected' => "شما اجازهٔ ویرایش صÙحه‌های Ùضای نام '''$1''' را ندارید.",
-'customcssjsprotected' => 'شما اجازهٔ ویرایش این صÙحه را ندارید، چرا Ú©Ù‡ حاوی تنظیم‌های شخصی یک کاربر دیگر است.',
+'customcssprotected' => 'شما اجازهٔ ویرایش این صÙحهٔ سی‌اس‌اس را ندارید، چرا Ú©Ù‡ حاوی تنظیم‌های شخصی یک کاربر دیگر است.',
+'customjsprotected' => 'شما اجازهٔ ویرایش این صÙحهٔ جاوااسکریپت را ندارید، چرا Ú©Ù‡ حاوی تنظیم‌های شخصی یک کاربر دیگر است.',
'ns-specialprotected' => 'صÙحه‌های ویژه غیر قابل ویرایش هستند.',
'titleprotected' => "از ایجاد صÙحه‌ای با این عنوان توسط [[User:$1|$1]] جلوگیری شده‌است.
دلیل ذکر شده از این قرار است: ''$2''.",
@@ -846,6 +842,7 @@ $2',
'createaccount' => 'ایجاد حساب کاربری',
'gotaccount' => "حساب کاربری دارید؟ '''$1'''.",
'gotaccountlink' => 'وارد شوید',
+'userlogin-resetlink' => 'جزئیات ورود را Ùراموش کرده‌اید؟',
'createaccountmail' => 'با پست الکترونیکی',
'createaccountreason' => 'دلیل:',
'badretype' => 'گذرواژه‌هایی که وارد کرده‌اید یکسان نیستند.',
@@ -860,13 +857,15 @@ $2',
'nocookieslogin' => '{{SITENAME}} برای ورود کاربران به سامانه از کوکی‌ها استÙاده می‌کند.
شما کوکی‌ها را از کار انداخته‌اید.
لطÙاً کوکی‌ها را به کار بیندازید Ùˆ دوباره تلاش کنید.',
+'nocookiesfornew' => 'حساب کاربری ساخته نشد چون نتوانستیم منبع آن را تأیید کنیم.
+اطمینان حاصل کنید Ú©Ù‡ کوکی‌ها Ùعال هستند، آن‌گاه صÙحه را از نو بارگیری کنید Ùˆ دوباره تلاش کنید.',
'noname' => 'شما نام کاربری معتبری مشخص نکرده‌اید.',
'loginsuccesstitle' => 'ورود موÙقیت‌آمیز به سامانه',
'loginsuccess' => "'''شما اکنون با نام «$1» به {{SITENAME}} وارد شده‌اید.'''",
'nosuchuser' => 'کاربری با نام «$1» وجود ندارد.
نام کاربری به بزرگی و کوچکی حرو٠حساس است.
املای نام را بررسی کنید، یا [[Special:UserLogin/signup|یک حساب کاربری جدید بسازید]].',
-'nosuchusershort' => "هیچ کاربری با نام ''<nowiki>$1</nowiki>'' وجود ندارد.
+'nosuchusershort' => "هیچ کاربری با نام ''$1'' وجود ندارد.
املایتان را وارسی کنید.",
'nouserspecified' => 'باید یک نام کاربری مشخص کنید.',
'login-userblocked' => 'این کاربر بسته شده‌است. ورود به سامانه مجاز نیست.',
@@ -914,13 +913,14 @@ $2',
'usernamehasherror' => 'نام کاربری نمی‌تواند شامل نویسه‌های درهم باشد',
'login-throttled' => 'شما به تازگی چندین بار برای ورود به سامانه تلاش کرده‌اید.
لطÙاً پیش از آن Ú©Ù‡ دوباره تلاش کنید مدتی صبر کنید.',
+'login-abort-generic' => 'ورود شما به سیستم ناموÙÙ‚ بود - خاتمه ناگهانی داده شد',
'loginlanguagelabel' => 'زبان: $1',
'suspicious-userlogout' => 'درخواست شما برای خروج از سامانه رد شد زیرا به نظر می‌رسد که این درخواست توسط یک مرورگر معیوب یا پروکسی میانگیر ارسال شده باشد.',
# E-mail sending
'php-mail-error-unknown' => 'خطای ناشناخته در تابع mail()‎ پی‌اچ‌پی',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'تغییر گذرواژه',
'resetpass_announce' => 'شما با کد موقتی ارسال شده وارد شده‌اید.
برای انجام Ùرایند ورود به سامانه باید گذروازهٔ جدیدی وارد کنید:',
@@ -940,6 +940,33 @@ $2',
ممکن است Ú©Ù‡ شما همینک گذرواژه‌تان را با موÙقیت تغییر داده باشید یا درخواست یک گذرواژهٔ موقت جدید کرده باشید.',
'resetpass-temp-password' => 'گذرواژهٔ موقت:',
+# Special:PasswordReset
+'passwordreset' => 'بازنشانی گذرواژه',
+'passwordreset-text' => 'این Ùرم را برای دریاÙت نامهٔ یادآور جزئیات حسابتان کامل کنید.',
+'passwordreset-legend' => 'بازنشانی گذرواژه',
+'passwordreset-disabled' => 'بازنشانی گذرواژه در این ویکی غیرÙعال شده است.',
+'passwordreset-pretext' => '{{PLURAL:$1||یکی از قطعه‌های داده را در زیر وارد کنید}}',
+'passwordreset-username' => 'نام کاربری:',
+'passwordreset-domain' => 'دامنه:',
+'passwordreset-email' => 'نشانی پست الکترونیک:',
+'passwordreset-emailtitle' => 'جزئیات حساب در {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'یک Ùرد (احتمالاً شما، از نشانی آی‌پی $1) درخواست یادآور جزئیات حساب شما را برای تارنمای {{SITENAME}} ($4) درخواست کرده است. {{PLURAL:$3|حساب|حساب‌های}} کاربری زیر با این رایانشانی مرتبط هستند:
+
+$2
+
+{{PLURAL:$3|این گذرواژهٔ موقت|این گذرواژه‌های موقت}} تا {{PLURAL:$5|یک روز|$5 روز}} باطل می‌شود.
+شما باید اکنون وارد سایت شده Ùˆ گذرواژهٔ جدید را برگزینید. اگر شخص دیگری این درخواست را داده است، یا اگر گذرواژهٔ اصلی‌تان را به یاد آوردید، Ùˆ دیگر نمی‌خواهید Ú©Ù‡ آن را تغییر دهید، می‌توانید این پیغام را نادیده بگیرید Ùˆ به استÙاده از گذرواژهٔ قبلی‌تان ادامه دهید.',
+'passwordreset-emailtext-user' => 'کاربر $1 از {{SITENAME}} درخواست یادآور جزئیات حساب شما را برای {{SITENAME}}
+($4) کرده است. {{PLURAL:$3|حساب|حساب‌های}} کاربری زیر با این رایانشانی مرتبط است:
+
+$2
+
+{{PLURAL:$3|این گذرواژهٔ موقت|این گذرواژه‌های موقت}} تا {{PLURAL:$5|یک روز|$5 روز}} باطل می‌شود.
+شما باید هم‌اکنون وارد شده Ùˆ یک گذرواژهٔ جدید برگزینید. اگر شخص دیگری این درخواست را داده است، یا اگر گذرواژهٔ اصلی‌تان را به خاطر آوردید، Ùˆ دیگر نمی‌خواهید Ú©Ù‡ آن را تغییر دهید، می‌توانید این پیغام را نادیده بگیرید Ùˆ به استÙاده از گذرواژهٔ قبلی‌تان ادامه دهید.',
+'passwordreset-emailelement' => 'نام کاربری: $1
+گذرواژهٔ موقت: $2',
+'passwordreset-emailsent' => 'یک نامهٔ یادآور Ùرستاده شده است.',
+
# Edit page toolbar
'bold_sample' => 'متن ضخیم',
'bold_tip' => 'متن ضخیم',
@@ -951,8 +978,6 @@ $2',
'extlink_tip' => 'پیوند به بیرون (پیشوند http://‎ را Ùراموش نکنید)',
'headline_sample' => 'متن عنوان',
'headline_tip' => 'عنوان سطح ۲',
-'math_sample' => 'درج Ùرمول در اینجا',
-'math_tip' => 'Ùرمول ریاضی (LaTeX)',
'nowiki_sample' => 'اینجا متن قالب‌بندی‌نشده وارد شود',
'nowiki_tip' => 'نادیده گرÙتن قالب‌بندی ویکی',
'image_sample' => 'Example.jpg',
@@ -1048,7 +1073,7 @@ $2',
'noarticletext-nopermission' => 'در حال حاضر این صÙحه متنی ندارد.
شما می‌توانید در دیگر صÙحه‌ها [[Special:Search/{{PAGENAME}}|دنبال عنوان این صÙحه بگردید]]ØŒ
یا <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} سیاهه‌های مرتبط را جستجو کنید]</span>.',
-'userpage-userdoesnotexist' => 'حساب کاربر «$1» ثبت نشده است.
+'userpage-userdoesnotexist' => 'حساب کاربر «<nowiki>$1</nowiki>» ثبت نشده است.
اطمینان حاصلی کنید Ú©Ù‡ می‌خواهید این صÙحه را ایجاد یا ویرایش کنید.',
'userpage-userdoesnotexist-view' => 'حساب کاربری «$1» ثبت نشده‌است.',
'blocked-notice-logextract' => 'دسترسی این کاربر در حال حاضر بسته است.
@@ -1087,6 +1112,7 @@ $2',
'token_suffix_mismatch' => "'''ویرایش شما ذخیره نشد، زیرا مرورگر شما نویسه‌های نقطه‌گذاری را از هم پاشیده‌است.'''
ویرایش شما مردود شد تا از خراب شدن متن صÙحه جلوگیری شود.
گاهی این اشکال زمانی پیش می‌آید Ú©Ù‡ شما از یک پروکسی تحت وب استÙاده کنید.",
+'edit_form_incomplete' => "'''بعضی قسمت‌های Ùرم ویرایش به سرور نرسیدند؛ اطمینان حاصل کنید Ú©Ù‡ ویرایش‌های شما کامل است Ùˆ دوباره تلاش کنید.'''",
'editing' => 'در حال ویرایش $1',
'editingsection' => 'در حال ویرایش $1 (بخش)',
'editingcomment' => 'در حال ویرایش $1 (بخش جدید)',
@@ -1323,7 +1349,7 @@ $1",
# Suppression log
'suppressionlog' => 'سیاههٔ Ùرونشانی',
'suppressionlogtext' => 'در زیر Ùهرستی از آخرین حذÙ‌ها Ùˆ قطع دسترسی‌هایی Ú©Ù‡ حاوی محتوایی هستند Ú©Ù‡ از مدیران پنهان شده‌اند را می‌بینید.
-برای مشاهدهٔ Ùهرستی از قطع دسترسی‌های Ùعال [[Special:IPBlockList|Ùهرست قطع‌دسترسی‌ها]] را ببینید.',
+برای مشاهدهٔ Ùهرستی از قطع دسترسی‌های Ùعال [[Special:BlockList|IP block list]] را ببینید.',
# History merging
'mergehistory' => 'ادغام تاریخچه صÙحه‌ها',
@@ -1435,12 +1461,13 @@ $1",
توجه کنید که نتایج حاصل از جستجو با آن روش ممکن است به‌روز نباشند.',
# Quickbar
-'qbsettings' => 'نوار سریع',
-'qbsettings-none' => 'نباشد',
-'qbsettings-fixedleft' => 'ثابت چپ',
-'qbsettings-fixedright' => 'ثابت راست',
-'qbsettings-floatingleft' => 'شناور چپ',
-'qbsettings-floatingright' => 'شناور راست',
+'qbsettings' => 'نوار سریع',
+'qbsettings-none' => 'نباشد',
+'qbsettings-fixedleft' => 'ثابت چپ',
+'qbsettings-fixedright' => 'ثابت راست',
+'qbsettings-floatingleft' => 'شناور چپ',
+'qbsettings-floatingright' => 'شناور راست',
+'qbsettings-directionality' => 'ثابت، بسته به جهت نگارش زبان شما',
# Preferences page
'preferences' => 'ترجیحات',
@@ -1451,9 +1478,10 @@ $1",
'changepassword' => 'تغییر گذرواژه',
'prefs-skin' => 'پوسته',
'skin-preview' => 'پیش‌نمایش',
-'prefs-math' => 'نمایش ریاضیات',
'datedefault' => 'بدون ترجیح',
+'prefs-beta' => 'امکانات بتا',
'prefs-datetime' => 'تاریخ و زمان',
+'prefs-labs' => 'ویژگی‌های آزمایشی',
'prefs-personal' => 'داده‌های کاربر',
'prefs-rc' => 'تغییرات اخیر',
'prefs-watchlist' => 'Ùهرست پی‌گیری‌ها',
@@ -1475,8 +1503,6 @@ $1",
'columns' => 'تعداد ستون‌ها:',
'searchresultshead' => 'جستجو',
'resultsperpage' => 'تعداد نتایج در هر صÙحه:',
-'contextlines' => 'تعداد سطرها در هر نتیجه',
-'contextchars' => 'تعداد نویسه‌های اطرا٠در سطر',
'stub-threshold' => 'آستانهٔ ویرایش پیوندهای <a href="#" class="stub">ناقص</a> (بایت):',
'stub-threshold-disabled' => 'غیرÙعال',
'recentchangesdays' => 'تعداد روزهای نمایش داده‌شده در تغییرات اخیر:',
@@ -1489,7 +1515,7 @@ $1",
'savedprefs' => 'ترجیحات شما ذخیره شد.',
'timezonelegend' => 'منطقهٔ زمانی:',
'localtime' => 'زمان محلی:',
-'timezoneuseserverdefault' => 'استÙاده از پیش‌Ùرض کارگزار',
+'timezoneuseserverdefault' => 'استÙاده از پیش‌Ùرض ویکی ($1)',
'timezoneuseoffset' => 'دیگر (اختلا٠را مشخص کنید)',
'timezoneoffset' => 'اختلاÙ¹:',
'servertime' => 'زمان کارگزار:',
@@ -1513,7 +1539,7 @@ $1",
'prefs-custom-css' => 'سی‌اس‌اس شخصی',
'prefs-custom-js' => 'جاوااسکریپت شخصی',
'prefs-common-css-js' => 'سی‌اس‌اس/جاوااسکریپت مشترک برای تمام پوسته‌ها:',
-'prefs-reset-intro' => 'شما می‌توانید از این صÙحه برای بازگرداندن تنظیمات خود به پیش‌Ùرض وب‌گاه استÙاده کنید.
+'prefs-reset-intro' => 'شما می‌توانید از این صÙحه برای بازگرداندن تنظیمات خود به پیش‌Ùرض تارنما استÙاده کنید.
این کار بازگشت‌ناپذیر است.',
'prefs-emailconfirm-label' => 'تأیید پست الکترونیکی:',
'prefs-textboxsize' => 'اندازهٔ جعبهٔ ویرایش',
@@ -1540,8 +1566,9 @@ $1",
'email' => 'پست الکترونیکی',
'prefs-help-realname' => 'نام واقعی اختیاری است
اگر تصمیم بگیرید آن را وارد کنید، هنگام ارجاع به آثارتان Ùˆ انتساب آنها به شما از نام واقعی‌تان استÙاده خواهد شد.',
-'prefs-help-email' => '* نشانی پست الکترونیکی اختیاری است اما ارسال یک گذرواژه جدید در صورتی Ú©Ù‡ گذرواژه خود را Ùراموش کردید ممکن می‌سازد.
-شما هم‌چنین می‌توانید انتخاب کنید Ú©Ù‡ کاربران از طریق صÙحهٔ کاربری یا صÙحهٔ بحث کاربری، بدون Ùاش شدن هویت‌‌ Ùˆ نشانی واقعی پست الکترونیک‌تان، با شما تماس بگیرند.',
+'prefs-help-email' => 'نشانی پست الکترونیکی اختیاری است، اما ارسال یک گذرواژه جدید را در صورتی Ú©Ù‡ گذرواژه خود را Ùراموش کردید ممکن می‌سازد.',
+'prefs-help-email-others' => 'شما هم‌چنین می‌توانید انتخاب کنید Ú©Ù‡ کاربران بتوانند از طریق پیوندی در صÙحهٔ کاربری یا صÙحهٔ بحث کاربری‌تان به شما نامه الکترونیکی بÙرستند.
+نشانی پست الکترونیکی شما زمانی Ú©Ù‡ دیگران با شما تماس بگیرند Ùاش نمی‌شود.',
'prefs-help-email-required' => 'نشانی پست الکترونیکی الزامی است.',
'prefs-info' => 'اطلاعات اولیه',
'prefs-i18n' => 'بین‌المللی‌سازی',
@@ -1666,15 +1693,15 @@ $1",
'right-userrights' => 'ویرایش تمام اختیارات کاربرها',
'right-userrights-interwiki' => 'ویرایش اختیارات کاربرهای ویکی‌های دیگر',
'right-siteadmin' => 'Ù‚ÙÙ„ کردن Ùˆ باز کردن پایگاه داده',
-'right-reset-passwords' => 'صÙر کردن گذرواژهٔ دیگر کاربران',
'right-override-export-depth' => 'برون‌ریزی صÙحه‌ها شامل صÙحه‌های پیوند شده تا عمق Ûµ',
'right-sendemail' => 'ارسال نامه الکترونیکی به دیگر کاربران',
# User rights log
-'rightslog' => 'سیاههٔ اختیارات کاربر',
-'rightslogtext' => 'این سیاههٔ تغییرات اختیارات کاربر است.',
-'rightslogentry' => 'عضویت $1 را از گروه $2 به $3 تغییر داد',
-'rightsnone' => '(هیچ)',
+'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' => 'خواندن این صÙحه',
@@ -1799,13 +1826,13 @@ $1",
'illegalfilename' => 'نام پرونده «$1» نویسه‌هایی را شامل می‌شود Ú©Ù‡ در نام صÙحه‌ها مجاز نیستند.
لطÙاً نام پرونده را تغییر دهید Ùˆ آن را دوباره بارگذاری کنید.',
'badfilename' => 'نام پرونده به «$1» تغییر کرد.',
-'filetype-mime-mismatch' => 'پسوند پرونده با نوع MIME آن مطابقت ندارد.',
+'filetype-mime-mismatch' => 'پسوند پرونده «$1.‎» با نوع MIME آن ($2) مطابقت ندارد.',
'filetype-badmime' => 'پرونده‌هایی که نوع MIME آن‌ها $1 باشد برای بارگذاری مجاز نیستند.',
'filetype-bad-ie-mime' => 'این پرونده را نمی‌توانید بارگذاری کنید زیرا اینترنت اکسپلورر آن را به عنوان «$1» تشخیص می‌دهد، که یک نوع پروندهٔ غیرمجاز و احتمالاً خطرناک است.',
'filetype-unwanted-type' => "'''«‎.‎$1»''' یک نوع پرونده ناخواسته است.
{{PLURAL:$3|نوع پرونده ترجیح داده شده|انواع پرونده ترجیح داده شده}} از این قرار است: $2 .",
-'filetype-banned-type' => "&lrm;'''\".\$1\"''' یک نوع پرونده غیرمجاز است.
-{{PLURAL:\$3|نوع پرونده مجاز|انواع پرونده مجاز}} از این قرار است: \$2 .",
+'filetype-banned-type' => '&lrm;\'\'\'".$1"\'\'\' {{PLURAL:$4|یک نوع پرونده غیرمجاز است|انواعی پرونده غیرمجاز هستند}}.
+{{PLURAL:$3|نوع پرونده مجاز|انواع پرونده مجاز}} از این قرار است: $2 .',
'filetype-missing' => 'این پرونده پسوند (مثلاً «‎.jpg») ندارد.',
'empty-file' => 'پرونده‌ای که ارسال کردید خالی بود.',
'file-too-large' => 'پرونده‌ای که ارسال کردید بیش از اندازه بزرگ بود.',
@@ -1824,6 +1851,7 @@ $1",
'emptyfile' => 'پروندهٔ بارشده خالی به نظر می‌رسد.
این مساله ممکن است به دلیل خطای تایپی در نام پرونده رخ داده باشد.
لطÙاً تأیید کنید Ú©Ù‡ می‌خواهید این پرونده را با همین شرایط بارگذاری کنید.',
+'windows-nonascii-filename' => 'این ویکی از نام پرونده با نویسه‌های خاص پشتیبانی نمی‌کند.',
'fileexists' => "پرونده‌ای با همین نام از قبل موجود است، اگر مطمئن نیستید Ú©Ù‡ می‌خواهید آن پرونده را تغییر دهید، لطÙاً '''<tt>[[:$1]]</tt>''' را بررسی کنید.
[[$1|thumb]]",
'filepageexists' => "صÙحهٔ توضیح برای این پرونده از قبل در '''<tt>[[:$1]]</tt>''' ایجاد شده‌است، اما پرونده‌ای با این نام وجود ندارد.
@@ -1864,6 +1892,8 @@ $1",
'uploadscripted' => 'این صÙحه حاوی کد اچ‌تی‌ام‌ال یا اسکریپتی است Ú©Ù‡ ممکن است به‌نادرست توسط مرورگر وب تÙسیر شود.',
'uploadvirus' => 'این پرونده ویروس دارد!
جزئیات : $1',
+'uploadjava' => 'این پرونده یک پرونده زیپ است که حاوی پرونده‌ای از نوع ‎‎.class جاوا است.
+بارگذاری پرونده‌های جاوا مجاز نیست، چرا که ممکن است اجازه دور زدن محدودیت‌های امنیتی را بدهند.',
'upload-source' => 'پرونده منبع',
'sourcefilename' => 'نام پروندهٔ اصلی:',
'sourceurl' => 'نشانی منبع:',
@@ -1874,10 +1904,6 @@ $1",
'watchthisupload' => 'پی‌گیری این پرونده',
'filewasdeleted' => 'پرونده‌ای با همین نام پیشتر بارگذاری و پس از آن پاک شده‌است.
شما باید $1 را قبل از بارگذاری مجدد آن ببینید.',
-'upload-wasdeleted' => "'''هشدار: شما در حال بارگذاری پرونده‌ای هستید که پیش از این حذ٠شده است.'''
-
-در نظر داشته باشید که آیا بارگذاری مجدد آن کار درستی است یا نه.
-برای راحتی، سیاههٔ حذ٠مربوط به این پرونده در زیر آمده است:",
'filename-bad-prefix' => "نام پرونده‌ای که بارگذاری می‌کنید با '''$1''' آغاز می‌شود که یک پیشوند مخصوص تصاویر ثبت شده توسط دوربین‌های دیجیتال است.
لطÙاً نامی بهتر برای پرونده برگزینید.",
'upload-success-subj' => 'بارگذاری با موÙقیت انجام شد',
@@ -1902,6 +1928,23 @@ $1',
'upload-unknown-size' => 'اندازهٔ نامشخص',
'upload-http-error' => 'یک خطای اچ‌تی‌تی‌پی رخ داد: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'در هنگام باز کردن پرونده زیپ برای بررسی محتوای آن خطایی رخ داد.',
+'zip-wrong-format' => 'پرونده مشخص شده یک پرونده زیپ نیست.',
+'zip-bad' => 'پرونده زیپ خراب یا غیر قابل خواندن است.
+نمی‌توان محتوای آن را از نظر امنیت به درستی بررسی کرد.',
+'zip-unsupported' => 'پرونده زیپ از ویژگی‌هایی استÙاده می‌کند Ú©Ù‡ توسط مدیاویکی پشتیبانی نمی‌شوند.
+نمی‌توان محتوای آن را از نظر امنیت به درستی بررسی کرد.',
+
+# Special:UploadStash
+'uploadstash' => 'انبار بارگذاری',
+'uploadstash-summary' => 'این صÙحه دسترسی به پرونده‌هایی Ú©Ù‡ بارگذاری شده‌اند (یا در حال بارگذاری هستند) اما هنوز در ویکی منتشر نشده‌اند را Ùراهم می‌کند. این پرونده‌ها توسط هیچ کاربری به جز کسی Ú©Ù‡ آن‌ها را بارگذاری کرده قابل دیدن نیستند.',
+'uploadstash-clear' => 'پاک کردن پرونده‌های انبارشده',
+'uploadstash-nofiles' => 'شما هیچ پروندهٔ انبارشده‌ای ندارید.',
+'uploadstash-badtoken' => 'انجام این اقدام ناموÙÙ‚ بود، احتمالاً به این دلیل Ú©Ù‡ اعتبار ویرایش شما به اتمام رسیده است. دوباره امتحان کنید.',
+'uploadstash-errclear' => 'پاک کردن پرونده‌ها ناموÙÙ‚ بود.',
+'uploadstash-refresh' => 'تازه کردن Ùهرست پرونده‌ها',
+
# img_auth script messages
'img-auth-accessdenied' => 'منع دسترسی',
'img-auth-nopathinfo' => 'PATH_INFO موجود نیست.
@@ -1934,10 +1977,10 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'دسترسی به نشانی اینترنتی ممکن نشد',
'upload-curl-error6-text' => 'نشانی اینترنتی داده شده قابل دسترسی نیست.
-لطÙاً درستی آن Ùˆ اینکه وب‌گاه برقرار است را بررسی کنید.',
+لطÙاً درستی آن Ùˆ اینکه تارنما برقرار است را بررسی کنید.',
'upload-curl-error28' => 'مهلت بارگذاری به سر رسید',
-'upload-curl-error28-text' => 'این وب‌گاه بیش از اندازه در پاسخ تعلل کرد.
-لطÙاً بررسی کنید Ú©Ù‡ آیا وب‌گاه Ùعال Ùˆ برخط است یا نه، سپس لختی درنگ کنید Ùˆ دوباره تلاش نمایید.
+'upload-curl-error28-text' => 'این تارنما بیش از اندازه در پاسخ تعلل کرد.
+لطÙاً بررسی کنید Ú©Ù‡ آیا تارنما Ùعال Ùˆ برخط است یا نه، سپس لختی درنگ کنید Ùˆ دوباره تلاش نمایید.
شاید بد نباشد که در زمان خلوت‌تری دوباره تلاش کنید.',
'license' => 'اجازه‌نامه:',
@@ -1985,7 +2028,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
[[Special:WhatLinksHere/$2|Ùهرست کامل]] نیز موجود است.',
'nolinkstoimage' => 'هیچ صÙحه‌ای به این تصویر پیوند ندارد.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|پیوندهای دیگر]] به این پرونده را ببینید.',
-'redirectstofile' => '{{PLURAL:$1|پروندهٔ|پرونده‌های}} زیر به این صÙحه تغییر مسیر {{PLURAL:$1|می‌دهد|می‌دهند}}:',
+'linkstoimage-redirect' => '$1 (تغییرمسیر پرونده) $2',
'duplicatesoffile' => '{{PLURAL:$1|پروندهٔ|پرونده‌های}} زیر نسخهٔ تکراری این پرونده {{PLURAL:$1|است|هستند}} ([[Special:FileDuplicateSearch/$2|اطلاعات بیشتر]]):',
'sharedupload' => 'این پرونده در $1 قرار دارد Ùˆ ممکن است در دیگر پروژه‌ها هم استÙاده شود.',
'sharedupload-desc-there' => 'این پرونده در $1 قرار دارد Ùˆ ممکن است در دیگر پروژه‌ها هم استÙاده شود.
@@ -2084,12 +2127,13 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
این صÙحه‌ها باید در عوض به موضوعات مرتبط پیوند داده شوند.<br />
یک صÙحه هنگامی صÙحهٔ ابهام‌زدایی در نظر گرÙته می‌شود Ú©Ù‡ در آن از الگویی Ú©Ù‡ به [[MediaWiki:Disambiguationspage]] پیوند دارد استÙاده شده باشد.",
-'doubleredirects' => 'تغییرمسیرهای دوتایی',
-'doubleredirectstext' => 'این صÙحه Ùهرستی از صÙحه‌های تغییرمسیری را ارائه می‌کند Ú©Ù‡ به صÙحهٔ تغییرمسیر دیگری اشاره می‌کنند.
+'doubleredirects' => 'تغییرمسیرهای دوتایی',
+'doubleredirectstext' => 'این صÙحه Ùهرستی از صÙحه‌های تغییرمسیری را ارائه می‌کند Ú©Ù‡ به صÙحهٔ تغییرمسیر دیگری اشاره می‌کنند.
هر سطر دربردارندهٔ پیوندهایی به تغییرمسیر اول Ùˆ دوم Ùˆ همچنین مقصد تغییرمسیر دوم است، Ú©Ù‡ معمولاً صÙحهٔ مقصد واقعی است Ùˆ نخستین تغییرمسیر باید به آن اشاره کند.
موارد <del>خط خورده</del> درست شده‌اند.',
-'double-redirect-fixed-move' => '[[$1]] انتقال داده شده‌است، و در حال حاضر تغییرمسیری به [[$2]] است',
-'double-redirect-fixer' => 'تعمیرکار تغییرمسیرها',
+'double-redirect-fixed-move' => '[[$1]] انتقال داده شده‌است، و در حال حاضر تغییرمسیری به [[$2]] است',
+'double-redirect-fixed-maintenance' => 'رÙع تغییرمسیر دوتایی از [[$1]] به [[$2]].',
+'double-redirect-fixer' => 'تعمیرکار تغییرمسیرها',
'brokenredirects' => 'تغییرمسیرهای خراب',
'brokenredirectstext' => 'تغییرمسیرهای زیر به یک صÙحهٔ ناموجود پیوند دارند:',
@@ -2166,6 +2210,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
'pager-newer-n' => '{{PLURAL:$1|یک مورد جدیدتر|$1 مورد جدیدتر}}',
'pager-older-n' => '{{PLURAL:$1|یک مورد قدیمی‌تر|$1 مورد قدیمی‌تر}}',
'suppress' => 'نظارت',
+'querypage-disabled' => 'این صÙحه ویژه به دلایل عملکردی غیرÙعال شده‌است.',
# Book sources
'booksources' => 'منابع کتاب',
@@ -2283,6 +2328,10 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
'noemailtext' => 'این کاربر نشانی پست الکترونیکی معتبری مشخص نکرده است،',
'nowikiemailtitle' => 'اجازهٔ ارسال نامهٔ الکترونیکی داده نشده‌است',
'nowikiemailtext' => 'این کاربر انتخاب کرده Ú©Ù‡ از دیگر کاربران نامهٔ الکترونیکی دریاÙت نکند.',
+'emailnotarget' => 'نام کاربری ناموجود یا نامعتبر برای گیرنده.',
+'emailtarget' => 'نام کاربری دریاÙت‌کننده را وارد کنید',
+'emailusername' => 'نام کاربری:',
+'emailusernamesubmit' => 'ارسال',
'email-legend' => 'ارسال نامه الکترونیکی به یک کاربر دیگر {{SITENAME}}',
'emailfrom' => 'از:',
'emailto' => 'به:',
@@ -2307,10 +2356,10 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
'watchlistanontext' => 'برای مشاهده Ùˆ ویرایش Ùهرست پی‌گیری‌های خود از $1 استÙاده کنید.',
'watchnologin' => 'به سامانه وارد نشده‌اید',
'watchnologintext' => 'برای تغییر Ùهرست پی‌گیری‌هایتان باید [[Special:UserLogin|به سامانه وارد شوید]].',
-'addedwatch' => 'به Ùهرست پی‌گیری اÙزوده شد',
+'addwatch' => 'اÙزودن به Ùهرست پی‌گیری',
'addedwatchtext' => "صÙحهٔ «[[:$1]]» به [[Special:Watchlist|Ùهرست پی‌گیری‌های]] شما اضاÙÙ‡ شد.
تغییرات این صÙحه Ùˆ صÙحهٔ بحث متناظرش در آینده در اینجا Ùهرست خواهد شد؛ به‌علاوه، این صÙحه، برای واضح‌تر دیده شدن در [[Special:RecentChanges|Ùهرست تغییرات اخیر]] به Ø´Ú©Ù„ '''پررنگ''' نمایش خواهد یاÙت.",
-'removedwatch' => 'از Ùهرست پی‌گیری‌ها برداشته شد',
+'removewatch' => 'حذ٠از Ùهرست پی‌گیری',
'removedwatchtext' => 'صÙحهٔ «<nowiki>[[:$1]]</nowiki>» از [[Special:Watchlist|Ùهرست پی‌گیری‌های شما]] برداشته شد.',
'watch' => 'پی‌گیری',
'watchthispage' => 'پی‌گیری این صÙحه',
@@ -2331,8 +2380,9 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
'watchlist-options' => 'گزینه‌های پیگیری',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'پی‌گیری...',
-'unwatching' => 'توق٠پی‌گیری...',
+'watching' => 'پی‌گیری...',
+'unwatching' => 'توق٠پی‌گیری...',
+'watcherrortext' => 'ایرادی در هنگام عوض کردن تنظیمات Ùهرست پیگیرتان برای «$1» رخ داد.',
'enotif_mailer' => 'پست الکترونیکی اطلاع‌رسانی {{SITENAME}}',
'enotif_reset' => 'علامت‌گذاری همهٔ صÙحه‌ها به عنوان بازدید شده',
@@ -2346,7 +2396,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization را ببینید.',
'enotif_anon_editor' => 'کاربر ناشناس $1',
'enotif_body' => '$WATCHINGUSERNAME گرامی،
-صÙحهٔ «$PAGETITLE» {{SITENAME}} در $PAGEEDITDATE به‌دست $PAGEEDITOR $CHANGEDORCREATED است. برای دیدن نسخهٔ کنونی $PAGETITLE_URL را ببینید.
+صÙحهٔ «$PAGETITLE» در {{SITENAME}} در $PAGEEDITDATE به‌دست $PAGEEDITOR $CHANGEDORCREATED است. برای دیدن نسخهٔ کنونی $PAGETITLE_URL را ببینید.
$NEWPAGE
@@ -2357,19 +2407,19 @@ $NEWPAGE
ویکی: $PAGEEDITOR_WIKI
تا هنگامی Ú©Ù‡ به صÙحه سر نزده‌اید، در صورت رخ‌دادن٠احتمالی٠تغییرات٠بیشتر، اعلانیه‌ای برای شما Ùرستاده نخواهد شد.
-شما همچنین می‌توانید در صÙحهٔ پی‌گیری‌های خود پرچم‌های مربوط به آگاهی‌رسانی پستی را صÙر کنید.
+شما همچنین می‌توانید در صÙحهٔ پی‌گیری‌های خود پرچم‌های مربوط به آگاهی‌رسانی را صÙر کنید.
- دوستدار شما، سامانهٔ آگاهی‌رسانی {{SITENAME}}
+دوستدار شما، سامانهٔ آگاهی‌رسانی {{SITENAME}}
--
-برای تغییر تنظیمات Ùهرست آگاهی‌رسانی رایانامه‌ای شما به {{fullurl:{{#special:Watchlist}}/edit}} بروید.
+برای تغییر تنظیمات Ùهرست آگاهی‌رسانی رایانامه‌ای به {{canonicalurl:{{#special:EditWatchlist}}}} بروید.
-برای تغییر تنظیمات Ùهرست پی‌گیری‌هایتان به {{fullurl:{{#special:Watchlist}}/edit}} بروید.
+برای تغییر تنظیمات Ùهرست پی‌گیری‌هایتان به {{canonicalurl:{{#special:EditWatchlist}}}} بروید.
-برای حذ٠صÙحه از Ùهرصت پی‌گیری‌هایتان به $UNWATCHURL بروید.
+برای حذ٠صÙحه از Ùهرست پی‌گیری‌هایتان به $UNWATCHURL بروید.
بازخورد و کمک بیشتر:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'حذ٠صÙحه',
@@ -2386,7 +2436,7 @@ $NEWPAGE
لطÙاً این عمل را تأیید کنید Ùˆ اطمینان حاصل کنید Ú©Ù‡ عواقب این کار را می‌دانید Ùˆ این عمل را مطابق با [[{{MediaWiki:Policy-url}}|سیاست‌ها]] انجام می‌دهید.',
'actioncomplete' => 'عمل انجام شد',
'actionfailed' => 'عمل ناموÙÙ‚ بود',
-'deletedtext' => '«<nowiki>$1</nowiki>» حذ٠شد.
+'deletedtext' => '«$1» حذ٠شد.
برای سابقهٔ حذÙ‌های اخیر به $2 مراجعه کنید.',
'deletedarticle' => '«[[$1]]» را حذ٠کرد',
'suppressedarticle' => '«[[$1]]» را Ùرونشاند',
@@ -2448,7 +2498,7 @@ $NEWPAGE
'protect_expiry_invalid' => 'زمان سرآمدن نامعتبر است.',
'protect_expiry_old' => 'زمان سرآمدن در گذشته‌است.',
'protect-unchain-permissions' => 'باز کردن سایر گزینه‌های محاÙظت',
-'protect-text' => "شما می‌توانید سطح محاÙظت صÙحهٔ '''<nowiki>$1</nowiki>''' را ببینید Ùˆ از اینجا آن را تغییر دهید.",
+'protect-text' => "شما می‌توانید سطح محاÙظت صÙحهٔ '''$1''' را ببینید Ùˆ از اینجا آن را تغییر دهید.",
'protect-locked-blocked' => "شما در مدتی Ú©Ù‡ دسترسی‌تان قطع است نمی‌توانید سطح محاÙظت صÙحه‌ها را تغییر دهید.
تنظیمات Ùعلی صÙحهٔ '''$1''' از این قرار است:",
'protect-locked-dblock' => "به دلیل Ù‚ÙÙ„ شدن پایگاه داده، امکان تغییر سطح محاÙظت صÙحه وجود ندارد.
@@ -2503,9 +2553,8 @@ $NEWPAGE
'undeletepagetext' => '{{PLURAL:$1|صÙحهٔ زیر حد٠شده|صÙحه‌های زیر حذ٠شده‌اند}} ولی هنوز در بایگانی {{PLURAL:$1|هست|هستند}} Ùˆ {{PLURAL:$1|می‌تواند احیا شود|می‌توانند احیا شوند}}.
این بایگانی ممکن است هر چند وقت تمیز شود.',
'undelete-fieldset-title' => 'احیای نسخه‌ها',
-'undeleteextrahelp' => "برای احیای تمام صÙحه، همهٔ جعبه‌ها را خالی رها کرده Ùˆ دکمهٔ '''''احیا''''' را کلیک کنید.
-برای انجام احیای انتخابی، جعبه‌های متناظر با نسخه‌های مورد نظر برای احیا را علامت زده و دکمهٔ '''''احیا''''' را کلیک کنید.
-کلیک کردن روی دکمهٔ '''''از نو''''' محتویات بخش «توضیح» را پاک و تمام جعبه‌ها را خالی می‌کند.",
+'undeleteextrahelp' => "برای احیای تمام تاریخچهٔ صÙحه، همهٔ جعبه‌ها را خالی رها کرده Ùˆ دکمهٔ '''''{{int:undeletebtn}}''''' را کلیک کنید.
+برای انجام احیای انتخابی، جعبه‌های متناظر با نسخه‌های مورد نظر برای احیا را علامت زده و دکمهٔ '''''{{int:undeletebtn}}''''' را کلیک کنید.",
'undeleterevisions' => '$1 نسخه بایگانی {{PLURAL:$1|شده‌است|شده‌اند}}',
'undeletehistory' => 'اگر این صÙحه را احیا کنید، همهٔ نسخه‌های آن در تاریخچه احیا خواهند شد.
اگر صÙحهٔ جدیدی با نام یکسان از زمان حذ٠ایجاد شده باشد، نسخه‌های احیاشده در تاریخچهٔ قبلی خواهند آمد.',
@@ -2551,9 +2600,12 @@ $1',
'undelete-show-file-submit' => 'بله',
# Namespace form on various pages
-'namespace' => 'Ùضای نام:',
-'invert' => 'انتخاب برعکس شود',
-'blanknamespace' => '(اصلی)',
+'namespace' => 'Ùضای نام:',
+'invert' => 'انتخاب برعکس شود',
+'tooltip-invert' => 'این جعبه را علامت بزنید تا تغییرات صÙحه‌های داخل Ùضای نام انتخاب شده (Ùˆ دیگر Ùضاهای نام علامت زده‌ شده) پنهان شوند',
+'namespace_association' => 'Ùضای نام مرتبط',
+'tooltip-namespace_association' => 'این جعبه را علامت بزنید تا Ùضای نام بحث یا موضوع مرتبط با Ùضای نام انتخاب شده هم شامل شود',
+'blanknamespace' => '(اصلی)',
# Contributions
'contributions' => 'مشارکت‌های کاربری',
@@ -2603,13 +2655,15 @@ $1',
'whatlinkshere-filters' => 'پالایه‌ها',
# Block/unblock
+'autoblockid' => 'شناسه قطع دسترسی خودکار #$1',
+'block' => 'بستن کاربر',
+'unblock' => 'بازکردن کاربر',
'blockip' => 'بستن کاربر',
'blockip-title' => 'بستن کاربر',
'blockip-legend' => 'بستن کاربر',
'blockiptext' => 'از Ùرم زیر برای بستن دسترسی ویرایش یک نشانی آی‌پی یا نام کاربری مشخص استÙاده کنید.
این کار Ùقط Ùقط باید برای جلوگیری از خرابکاری Ùˆ بر اساس [[{{MediaWiki:Policy-url}}|سیاست قطع دسترسی]] انجام شود.
دلیل مشخص این کار را در زیر ذکر کنید (مثلاً با ذکر صÙحه‌های به‌خصوصی Ú©Ù‡ مورد خرابکاری واقع شده‌اند).',
-'ipaddress' => 'نشانی آی‌پی/نام کاربر',
'ipadressorusername' => 'نشانی آی‌پی یا نام کاربری:',
'ipbexpiry' => 'زمان سرآمدن:',
'ipbreason' => 'دلیل:',
@@ -2622,7 +2676,7 @@ $1',
**تهدید یا ارعاب دیگر کاربران
**سوء استÙاده از چند حساب کاربری
**نام کاربری نامناسب',
-'ipbanononly' => 'Ùقط بستن کاربران گمنام',
+'ipb-hardblock' => 'جلوگیری از ویرایش کردن کاربران ثبت نام کرده از طریق این نشانی آی‌پی',
'ipbcreateaccount' => 'جلوگیری از ایجاد حساب',
'ipbemailban' => 'جلوگیری از ارسال پست الکترونیکی',
'ipbenableautoblock' => 'بستن خودکار آخرین نشانی آی‌پی استÙاده شده توسط کاربر Ùˆ نشانی‌های دیگری Ú©Ù‡ از آن‌ها برای ویرایش تلاش می‌کند',
@@ -2633,12 +2687,15 @@ $1',
'ipbotherreason' => 'دلیل دیگر/اضاÙÛŒ:',
'ipbhidename' => 'نهÙتن نام کاربری از ویرایش‌ها Ùˆ Ùهرست‌ها',
'ipbwatchuser' => 'پیگیری صÙحهٔ کاربری Ùˆ بحث این کاربر',
-'ipballowusertalk' => 'به این کاربر اجازه بده در مدت قطع دسترسی صÙحهٔ بحث خودش را ویرایش کند.',
+'ipb-disableusertalk' => 'جلوگیری از ویرایشی صÙحهً بحث توسط خود کاربر در زمانی Ú©Ù‡ بسته است',
'ipb-change-block' => 'بستن دوبارهٔ کاربر با این تنظیم‌ها',
+'ipb-confirm' => 'تأیید بستن',
'badipaddress' => 'نشانی آی‌â€ÛŒ غیر مجاز',
'blockipsuccesssub' => 'بستن با موÙقیت انجام شد',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] بسته شد.<br />
برای بررسی بسته‌شدن‌ها [[Special:IPBlockList|Ùهرست نشانی‌های آی‌پی بسته‌شده]] را ببینید.',
+'ipb-blockingself' => 'شما در حال بستن خودتان هستید! آیا مطمئن هستید که می‌خواهید چنین کاری انجام دهید؟',
+'ipb-confirmhideuser' => 'شما در حال بستن یک کاربر هستید Ú©Ù‡ «پنهان‌سازی کاربر» برایش Ùعال شد‌ه‌است. این کار نام کاربر را از همهٔ Ùهرست‌ها Ùˆ سیاهه‌ها مخÙÛŒ می‌کند. آیا مطمئن هستید Ú©Ù‡ می‌خواهید آن را انجام دهید؟',
'ipb-edit-dropdown' => 'ویرایش دلایل قطع‌دسترسی',
'ipb-unblock-addr' => 'باز کردن $1',
'ipb-unblock' => 'باز کردن نام کاربری یا نشانی آی‌پی',
@@ -2648,17 +2705,23 @@ $1',
'unblockiptext' => 'برای بازگرداندن دسترسی نوشتن به یک نشانی آی‌پی یا نام کاربری بسته‌شده از Ùرم زیر استÙاده کنید.',
'ipusubmit' => 'باز کردن دسترسی',
'unblocked' => 'دسترسی [[User:$1|$1]] دوباره برقرار شد',
+'unblocked-range' => '$1 باز شد',
'unblocked-id' => 'قطع دسترسی شماره $1 خاتمه یاÙت',
+'blocklist' => 'کاربران بسته‌شده',
'ipblocklist' => 'کاربران بسته‌شده',
'ipblocklist-legend' => 'جستجوی کاربر بسته شده',
-'ipblocklist-username' => 'نام کاربری یا نشانی آی‌پی',
-'ipblocklist-sh-userblocks' => '$1 قطع دسترسی کاربر',
-'ipblocklist-sh-tempblocks' => '$1 قطع دسترسی موقت',
-'ipblocklist-sh-addressblocks' => '$1 قطع دسترسی نشانی آی‌پی',
+'blocklist-userblocks' => 'پنهان‌کردن بسته‌شدن‌های حساب',
+'blocklist-tempblocks' => 'پنهان‌کردن بستن‌های موقت',
+'blocklist-addressblocks' => 'پنهان‌کردن تک آی‌پی‌های بسته شده',
+'blocklist-timestamp' => 'برچسب زمان',
+'blocklist-target' => 'هدÙ',
+'blocklist-expiry' => 'زمان سرآمدن',
+'blocklist-by' => 'مدیر قطع دسترسی کننده',
+'blocklist-params' => 'پارامترهای بستن',
+'blocklist-reason' => 'دلیل',
'ipblocklist-submit' => 'جستجو',
'ipblocklist-localblock' => 'قطع دسترسی محلی',
'ipblocklist-otherblocks' => 'سایر {{PLURAL:$1|بستن‌ها|بستن‌ها}}',
-'blocklistline' => '$1، $2 $3 را بست ($4)',
'infiniteblock' => 'بی‌پایان',
'expiringblock' => 'در $1 ساعت $2 به پایان می‌رسد',
'anononlyblock' => 'Ùقط کاربران گمنام',
@@ -2683,7 +2746,7 @@ $1',
'reblock-logentry' => 'تنظیمات قطع دسترسی [[$1]] را تغییر داد به پایان قطع دسترسی در $2 $3',
'blocklogtext' => 'این سیاهه‌ای از اعمال بستن و باز کردن کاربرها است.
نشانی‌های آی‌پی Ú©Ù‡ به طور خودکار بسته شده‌اند Ùهرست نشده‌اند.
-برای Ùهرست محرومیت‌ها Ùˆ بسته‌شدن‌های عملیاتی در لحظهٔ حاضر، به [[Special:IPBlockList|Ùهرست آی‌پی‌های بسته]] مراجعه کنید.',
+برای Ùهرست محرومیت‌ها Ùˆ بسته‌شدن‌های Ùعال در لحظهٔ حاضر، به [[Special:BlockList|Ùهرست آی‌پی‌های بسته]] مراجعه کنید.',
'unblocklogentry' => '$1 را باز کرد',
'block-log-flags-anononly' => 'Ùقط کاربران گمنام',
'block-log-flags-nocreate' => 'قابلیت ایجاد حساب غیرÙعال شد',
@@ -2697,9 +2760,9 @@ $1',
'ipb_expiry_temp' => 'قطع دسترسی کاربرهای پهنان باید همیشگی باشد.',
'ipb_hide_invalid' => 'ناتوان از Ùرونشاندن این حساب؛ شاید ویرایش‌های زیادی دارد.',
'ipb_already_blocked' => '«$1» همین الان هم بسته‌است',
-'ipb-needreblock' => '== قطع دسترسی از قبل ==
-دسترسی $1 از قبل بسته است. آیا می‌خواهید تنظیم‌های آن را تغییر دهید؟',
+'ipb-needreblock' => 'دسترسی $1 از قبل بسته است. آیا می‌خواهید تنظیمات آن را تغییر دهید؟',
'ipb-otherblocks-header' => 'سایر {{PLURAL:$1|قطع دسترسی‌ها|قطع دسترسی‌ها}}',
+'unblock-hideuser' => '‫به این خاطر Ú©Ù‡ حساب کاربری این کاربر مخÙÛŒ شده‌است شما نمی‌توانید آن را باز کنید.‬',
'ipb_cant_unblock' => 'خطا: شناسه بسته‌شدن $1 یاÙت نشد. ممکن است پیشتر باز شده باشد.',
'ipb_blocked_as_range' => 'خطا: نشانی آی‌پی $1 به شکل مستقیم بسته نشده‌است و نمی‌تواند باز شود.
این نشانی به همراه بازه $2 بسته شده که قابل باز شدن است.',
@@ -2738,6 +2801,7 @@ $1',
'unlockdbsuccesstext' => 'پایگاه داده از Ù‚ÙÙ„ در آمد.',
'lockfilenotwritable' => 'Ù‚ÙÙ„ پایگاه داده نوشتنی نیست. برای این Ú©Ù‡ بتوانید پایگاه داده را Ù‚ÙÙ„ یا باز کنید، باید این پرونده نوشتنی باشد.',
'databasenotlocked' => 'پایگاه داده Ù‚ÙÙ„ نیست.',
+'lockedbyandtime' => '(به وسیلهٔ $1 در $2 ساعت $3)',
# Move page
'move-page' => 'انتقال $1',
@@ -2864,7 +2928,7 @@ $1',
'allmessagesdefault' => 'متن پیش‌Ùرض پیغام',
'allmessagescurrent' => 'متن کنونی پیغام',
'allmessagestext' => 'این Ùهرستی از پیغام‌های سامانه‌ای موجود در Ùضای نام مدیاویکی است.
-چنان‌چه مایل به مشارکت در محلی‌سازی مدیاویکی هستید لطÙاً [http://www.mediawiki.org/wiki/Localisation محلی‌سازی مدیاویکی] Ùˆ [http://translatewiki.net translatewiki.net] را ببینید.',
+چنان‌چه مایل به مشارکت در محلی‌سازی مدیاویکی هستید لطÙاً [//www.mediawiki.org/wiki/Localisation محلی‌سازی مدیاویکی] Ùˆ [//translatewiki.net translatewiki.net] را ببینید.',
'allmessagesnotsupportedDB' => "نمی‌توان از '''{{ns:special}}:همهٔ پیغام‌ها''' استÙاده کرد چود '''&lrm;\$wgUseDatabaseMessages''' خاموش شده است.",
'allmessages-filter-legend' => 'پالایه',
'allmessages-filter' => 'پالودن بر اساس وضعیت شخصی‌سازی:',
@@ -3009,9 +3073,7 @@ $1',
'monobook.css' => '/* دستورات این بخش کاربرانی را Ú©Ù‡ از پوستهٔ مونوبوک استÙاده کنند تحت تاثیر قرار می‌دهند. */',
# Metadata
-'nodublincore' => 'Ùراداه Dublin Core RDF برای این کارگذار غیر Ùعال شده‌است.',
-'nocreativecommons' => 'متاداده آردی‌ا٠عوام خلاق برای این کارگزار از کار انداخته شده است.',
-'notacceptable' => 'کارگذار این ویکی از ارسال داده به شکلی که برنامهٔ شما بتواند نمایش بدهد، عاجز است.',
+'notacceptable' => 'کارگذار این ویکی از ارسال داده به شکلی که برنامهٔ شما بتواند نمایش بدهد، عاجز است.',
# Attribution
'anonymous' => '{{PLURAL:$1|کاربر|کاربران}} گمنام {{SITENAME}}',
@@ -3035,12 +3097,17 @@ $1',
'spam_blanking' => 'تمام نسخه‌ها حاوی پیوند به $1 بود، در حال خالی کردن',
# Info page
-'infosubtitle' => 'اطلاعات در مورد صÙحه',
-'numedits' => 'تعداد ویرایش‌ها (ی نوشتار): $1',
-'numtalkedits' => 'تعداد ویرایش‌ها (صÙحهٔ بحث): $1',
-'numwatchers' => 'شمار پی‌گیری‌کنندگان: $1',
-'numauthors' => 'شمار نویسندگان متمایز (مقاله): $1',
-'numtalkauthors' => 'تعداد مؤلÙان مختل٠(صÙحهٔ بحث): $1',
+'pageinfo-title' => 'اطلاعات در مورد «$1»',
+'pageinfo-header-edits' => 'ویرایش',
+'pageinfo-header-watchlist' => 'Ùهرست پی‌گیری‌ها',
+'pageinfo-header-views' => 'بازدیدها',
+'pageinfo-subjectpage' => 'صÙحه',
+'pageinfo-talkpage' => 'صÙحه بحث',
+'pageinfo-watchers' => 'شمار پی‌گیری‌کنندگان',
+'pageinfo-edits' => 'شمار ویرایش‌ها',
+'pageinfo-authors' => 'شمار نویسندگان یکتا',
+'pageinfo-views' => 'شمار بازدیدها',
+'pageinfo-viewsperedit' => 'تعداد بازدید به ازای هر ویرایش',
# Skin names
'skinname-standard' => 'کلاسیک',
@@ -3053,25 +3120,6 @@ $1',
'skinname-modern' => 'مدرن',
'skinname-vector' => 'برداری',
-# Math options
-'mw_math_png' => 'همیشه PNG کشیده شود',
-'mw_math_simple' => 'اگر خیلی ساده بود HTML وگرنه PNG',
-'mw_math_html' => 'اگر ممکن بود HTML وگرنه PNG',
-'mw_math_source' => 'در قالب TeX باقی بماند (برای مرورگرهای متنی)',
-'mw_math_modern' => 'توصیه برای مرورگرهای امروزی',
-'mw_math_mathml' => 'استÙاده از MathML در صورت امکان (آزمایشی)',
-
-# Math errors
-'math_failure' => 'شکست در تجزیه',
-'math_unknown_error' => 'خطای ناشناخته',
-'math_unknown_function' => 'تابع ناشناختهٔ',
-'math_lexing_error' => 'خطای lexing',
-'math_syntax_error' => 'خطای نحوی',
-'math_image_error' => 'تبدیل به PNG شکست خورد؛ از نصب درست لاتکس و dvipng (یا dvips و gs و convert) اطمینان حاصل کنید',
-'math_bad_tmpdir' => 'امکان ایجاد یا نوشتن اطلاعات در پوشه موقت (temp) ریاضی وجود ندارد.',
-'math_bad_output' => 'امکان ایجاد یا نوشتن اطلاعات در پوشه خروجی (output) ریاضی وجود ندارد.',
-'math_notexvc' => 'برنامهٔ اجرایی texvc موجود نیست. برای اطلاعات بیشتر به <span dir=ltr>math/README</span> مراجعه کنید.',
-
# Patrolling
'markaspatrolleddiff' => 'برچسب گشت بزن',
'markaspatrolledtext' => 'به این صÙحه برچسب گشت بزن',
@@ -3107,23 +3155,26 @@ $1',
'nextdiff' => 'تÙاوت جدیدتر â†',
# Media information
-'mediawarning' => "'''هشدار''': این پرونده ممکن است حاوی کدهای مخرب باشد.
+'mediawarning' => "'''هشدار''': این پرونده ممکن است حاوی کدهای مخرب باشد.
با اجرای آن رایانهٔ شما ممکن است آسیب ببیند.",
-'imagemaxsize' => "محدودیت ابعاد تصویر:<br />''(برای صÙحه‌های توصی٠پرونده)''",
-'thumbsize' => 'اندازهٔ Thumbnail:',
-'widthheight' => '$1 در $2',
-'widthheightpage' => '$1×$2ØŒ $3 {{PLURAL:$3|صÙحه|صÙحه}}',
-'file-info' => 'اندازهٔ پرونده: $1، نوع MIME $2',
-'file-info-size' => '<span dir="ltr">$1 × $2</span> پیکسل، اندازهٔ پرونده: $3، نوع MIME پرونده: $4',
-'file-nohires' => '<small>تÙکیک‌پذیری بالاتری در دسترس نیست.</small>',
-'svg-long-desc' => 'پروندهٔ اس‌وی‌جی، با ابعاد <span dir="ltr">$1 × $2</span> پیکسل، اندازهٔ پرونده: $3',
-'show-big-image' => 'تصویر با تÙکیک‌پذیری بالاتر',
-'show-big-image-thumb' => '<small>اندازهٔ این پیش‌نمایش: <span dir="ltr">$1 × $2</span> پیکسل</small>',
-'file-info-gif-looped' => 'چرخش‌دار',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|قاب|قاب}}',
-'file-info-png-looped' => 'چرخش‌دار',
-'file-info-png-repeat' => '$1 {{PLURAL:$1|بار|بار}} پخش شد',
-'file-info-png-frames' => '$1 {{PLURAL:$1|قاب|قاب}}',
+'imagemaxsize' => "محدودیت ابعاد تصویر:<br />''(برای صÙحه‌های توصی٠پرونده)''",
+'thumbsize' => 'اندازهٔ Thumbnail:',
+'widthheight' => '$1 در $2',
+'widthheightpage' => '$1×$2ØŒ $3 {{PLURAL:$3|صÙحه|صÙحه}}',
+'file-info' => 'اندازهٔ پرونده: $1، نوع MIME $2',
+'file-info-size' => '<span dir="ltr">$1 × $2</span> پیکسل، اندازهٔ پرونده: $3، نوع MIME پرونده: $4',
+'file-info-size-pages' => '<span style="direction:ltr">$1 × $2</span> نقطه، حجم پرونده: $3ØŒ نوع MIME پرونده: $4ØŒ $5 صÙحه',
+'file-nohires' => '<small>تÙکیک‌پذیری بالاتری در دسترس نیست.</small>',
+'svg-long-desc' => 'پروندهٔ اس‌وی‌جی، با ابعاد <span dir="ltr">$1 × $2</span> پیکسل، اندازهٔ پرونده: $3',
+'show-big-image' => 'تصویر با تÙکیک‌پذیری بالاتر',
+'show-big-image-preview' => '<small>اندازهٔ این پیش‌نمایش: $1.</small>',
+'show-big-image-other' => '<small>Ú©ÛŒÙیت‌های دیگر: $1.</small>',
+'show-big-image-size' => '<span dir="ltr">$1 × $2</span> پیکسل',
+'file-info-gif-looped' => 'چرخش‌دار',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|قاب|قاب}}',
+'file-info-png-looped' => 'چرخش‌دار',
+'file-info-png-repeat' => '$1 {{PLURAL:$1|بار|بار}} پخش شد',
+'file-info-png-frames' => '$1 {{PLURAL:$1|قاب|قاب}}',
# Special:NewFiles
'newimages' => 'نگارخانهٔ پرونده‌های جدید',
@@ -3148,14 +3199,20 @@ $1',
'metadata-help' => 'این پرونده حاوی اطلاعات اضاÙه‌ای است Ú©Ù‡ احتمالاً توسط دوربین دیجیتالی‌ یا پویشگری Ú©Ù‡ در ایجاد یا دیجیتالی‌کردن آن به کار رÙته‌است، اÙزوده شده‌است. اگر پرونده از وضعیت ابتدایی‌اش تغییر داده شده باشد آنگاه ممکن است شرح Ùˆ تÙصیلات موجود اطلاعات عکس را تماماً بازتاب ندهد.',
'metadata-expand' => 'نمایش جزئیات تÙصیلی',
'metadata-collapse' => 'نهÙتن جزئیات تÙصیلی',
-'metadata-fields' => 'Ùرادادهٔ EXIF نشان داده شده در این پیغام وقتی جدول Ùراداده‌های تصویر جمع شده باشد هم نمایش داده می‌شوند. بقیهٔ موارد تنها زمانی نشان داده می‌شوند Ú©Ù‡ جدول یاد شده باز شود.
+'metadata-fields' => 'Ùرادادهٔ تصویر نشان داده شده در این پیغام وقتی جدول Ùراداده‌های تصویر جمع شده باشد هم نمایش داده می‌شود. بقیهٔ موارد تنها زمانی نشان داده می‌شوند Ú©Ù‡ جدول یاد شده باز شود.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'عرض',
@@ -3170,13 +3227,11 @@ $1',
'exif-ycbcrpositioning' => 'موقعیت Y و C',
'exif-xresolution' => 'تÙکیک‌پذیری اÙÙ‚ÛŒ',
'exif-yresolution' => 'تÙکیک‌پذیری عمودی',
-'exif-resolutionunit' => 'واحد تÙکیک‌پذیری X Ùˆ Y',
'exif-stripoffsets' => 'جایگاه داده‌های تصویر',
'exif-rowsperstrip' => 'تعداد ردیÙ‌ها در هر نوار',
'exif-stripbytecounts' => 'بایت در هر نوار Ùشرده',
'exif-jpeginterchangeformat' => 'جابه‌جایی نسبت به JPEG SOI',
'exif-jpeginterchangeformatlength' => 'بایت دادهٔ JPEG',
-'exif-transferfunction' => 'تابع تبدیل',
'exif-whitepoint' => 'رنگینگی نقطهٔ سÙید',
'exif-primarychromaticities' => 'رنگ‌پذیری اولویت‌ها',
'exif-ycbcrcoefficients' => 'ضرایب ماتریس تبدیل Ùضای رنگی',
@@ -3195,7 +3250,6 @@ $1',
'exif-compressedbitsperpixel' => 'حالت Ùشرده‌سازی تصویر',
'exif-pixelydimension' => 'پهنای تصویر',
'exif-pixelxdimension' => 'بلندی تصویر',
-'exif-makernote' => 'تذکرات شرکت سازنده',
'exif-usercomment' => 'توضیحات کاربر',
'exif-relatedsoundfile' => 'پروندهٔ صوتی مربوط',
'exif-datetimeoriginal' => 'تاریخ و زمان تولید داده‌ها',
@@ -3209,7 +3263,6 @@ $1',
'exif-exposureprogram' => 'برنامهٔ نوردهی',
'exif-spectralsensitivity' => 'حساسیت Ø·ÛŒÙÛŒ',
'exif-isospeedratings' => 'درجه‌بندی سرعت ایزو',
-'exif-oecf' => 'عامل تبدیل نوری‌-الکترونیک',
'exif-shutterspeedvalue' => 'سرعت آپکس شاتر',
'exif-aperturevalue' => 'اندازهٔ آپکس دیاÙراگم',
'exif-brightnessvalue' => 'روشنایی آپکس',
@@ -3223,7 +3276,6 @@ $1',
'exif-focallength-format' => '$1 میلی‌متر',
'exif-subjectarea' => 'مساحت جسم',
'exif-flashenergy' => 'قدرت Ùلاش',
-'exif-spatialfrequencyresponse' => 'پاسخ بسامد Ùاصله‌ای',
'exif-focalplanexresolution' => 'تÙکیک‌پذیری X صÙحهٔ کانونی',
'exif-focalplaneyresolution' => 'تÙکیک‌پذیری Y صÙحهٔ کانونی',
'exif-focalplaneresolutionunit' => 'واحد تÙکیک‌پذیری صÙحهٔ کانونی',
@@ -3232,7 +3284,6 @@ $1',
'exif-sensingmethod' => 'روش حسگری',
'exif-filesource' => 'منبع پرونده',
'exif-scenetype' => 'نوع صحنه',
-'exif-cfapattern' => 'الگوی CFA',
'exif-customrendered' => 'ظهور عکس سÙارشی',
'exif-exposuremode' => 'حالت نوردهی',
'exif-whitebalance' => 'تعادل رنگ سÙید (white balance)',
@@ -3277,10 +3328,79 @@ $1',
'exif-gpsareainformation' => 'نام ناحیهٔ جی‌پی‌اس',
'exif-gpsdatestamp' => 'تاریخ جی‌پی‌اس',
'exif-gpsdifferential' => 'تصحیح جزئی جی‌پی‌اس',
+'exif-jpegfilecomment' => 'توضیحات پرونده JPEG',
+'exif-keywords' => 'واژه‌های کلیدی',
+'exif-worldregioncreated' => 'منطقه‌ای از جهان Ú©Ù‡ تصویر در آن گرÙته شده',
+'exif-countrycreated' => 'کشوری Ú©Ù‡ تصویر در آن گرÙته شده',
+'exif-countrycodecreated' => 'کد کشوری Ú©Ù‡ تصویر در آن گرÙته شده',
+'exif-provinceorstatecreated' => 'استان یا ایالتی Ú©Ù‡ تصویر در آن گرÙته شده',
+'exif-citycreated' => 'شهری Ú©Ù‡ تصویر در آن گرÙته شده',
+'exif-sublocationcreated' => 'بخشی از شهر Ú©Ù‡ تصویر در آن گرÙته شده',
+'exif-worldregiondest' => 'منقطه جهان نمایش داده شده',
+'exif-countrydest' => 'کشور نمایش داده شده',
+'exif-countrycodedest' => 'کد کشور نمایش داده شده',
+'exif-provinceorstatedest' => 'استان یا ایالت نمایش داده شده',
+'exif-citydest' => 'شهر نمایش داده شده',
+'exif-sublocationdest' => 'بخش شهر نمایش داده شده',
'exif-objectname' => 'عنوان کوتاه',
+'exif-specialinstructions' => 'دستورالعمل‌های ویژه',
+'exif-headline' => 'عنوان',
+'exif-credit' => 'صاحب امتیاز/ارائه کننده',
+'exif-source' => 'منبع',
+'exif-editstatus' => 'وضعیت تحریریه تصویر',
+'exif-urgency' => 'Ùوریت',
+'exif-fixtureidentifier' => 'نام ستون نشریه',
+'exif-locationdest' => 'محل به تصویر کشیده شده',
+'exif-locationdestcode' => 'کد محل به تصویر کشیده شده',
+'exif-objectcycle' => 'زمان روز Ú©Ù‡ این رسانه برای آن در نظر گرÙته شده',
+'exif-contact' => 'اطلاعات تماس',
+'exif-writer' => 'نویسنده',
+'exif-languagecode' => 'زبان',
+'exif-iimversion' => 'نسخه IIM',
+'exif-iimcategory' => 'رده',
+'exif-iimsupplementalcategory' => 'رده‌های تکمیلی',
+'exif-datetimeexpires' => 'استÙاده تا تاریخ',
+'exif-datetimereleased' => 'منتشر شده در',
+'exif-originaltransmissionref' => 'کد محل انتقال اصلی',
+'exif-identifier' => 'شناسه',
+'exif-lens' => 'لنز مورد استÙاده',
+'exif-serialnumber' => 'شماره سریال دوربین',
+'exif-cameraownername' => 'صاحب دوربین',
+'exif-label' => 'برچسب',
+'exif-datetimemetadata' => 'تاریخی Ú©Ù‡ Ùراداده آخرین بار تغییر یاÙته',
+'exif-nickname' => 'نام غیررسمی تصویر',
+'exif-rating' => 'امتیاز (از 5)',
+'exif-rightscertificate' => 'گواهینامه مدیریت حقوق',
+'exif-copyrighted' => 'وضعیت حق تکثیر',
+'exif-copyrightowner' => 'دارندهٔ حق تکثیر',
+'exif-usageterms' => 'شرایط استÙاده',
+'exif-webstatement' => 'نسخه برخط اعلامیه حق تکثیر',
+'exif-originaldocumentid' => 'شناسه منحصر به Ùرد سند اصلی',
+'exif-licenseurl' => 'نشانی اینترنتی برای مجوز حق تکثیر',
+'exif-morepermissionsurl' => 'اطلاعات مجوزهای جایگزین',
+'exif-attributionurl' => 'در زمان استÙاده مجدد، لطÙاً پیوند دهید به',
+'exif-preferredattributionname' => 'در زمان استÙاده مجدد، لطÙاً اعتبار دهید به',
+'exif-pngfilecomment' => 'توضیحات پرونده PNG',
+'exif-disclaimer' => 'تکذیب‌نامه',
+'exif-contentwarning' => 'هشدار محتوا',
+'exif-giffilecomment' => 'توضیحات پرونده GIF',
+'exif-intellectualgenre' => 'نوع مورد',
+'exif-subjectnewscode' => 'کد موضوع',
+'exif-scenecode' => 'IPTC کد صحنه',
+'exif-event' => 'رویداد به تصویر کشیده شده',
+'exif-organisationinimage' => 'سازمان به تصویر کشیده شده',
+'exif-personinimage' => 'Ùرد به تصویر کشیده شده',
+'exif-originalimageheight' => 'بلندی تصویر قبل از برش دادن',
+'exif-originalimagewidth' => 'پهنای تصویر قبل از برش دادن',
# EXIF attributes
'exif-compression-1' => 'غیرÙشرده',
+'exif-compression-2' => 'رمزگذاری سی‌سی‌آی‌تی‌تی گروه Û³ یک بعدی به روش هاÙمن تغییریاÙته روی طول',
+'exif-compression-3' => 'رمزگذاری نمابر سی‌سی‌آی‌تی‌تی گروه ۳',
+'exif-compression-4' => 'رمزگذاری نمابر سی‌سی‌آی‌تی‌تی گروه ۴',
+
+'exif-copyrighted-true' => 'دارای حق تکثیر',
+'exif-copyrighted-false' => 'مالکیت عمومی',
'exif-unknowndate' => 'تاریخ نامعلوم',
@@ -3299,6 +3419,8 @@ $1',
'exif-xyresolution-i' => '$1 نقطه در اینچ',
'exif-xyresolution-c' => '$1 نقطه در سانتی‌متر',
+'exif-colorspace-65535' => 'تنظیم نشده',
+
'exif-componentsconfiguration-0' => 'وجود ندارد',
'exif-exposureprogram-0' => 'تعریÙ‌نشده',
@@ -3412,6 +3534,10 @@ $1',
'exif-gpslongitude-e' => 'طول جغراÙیایی شرقی',
'exif-gpslongitude-w' => 'طول جغراÙیایی غربی',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|متر|متر}} بالاتر از سطح دریا',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|متر|متر}} پایین‌تر از سطح دریا',
+
'exif-gpsstatus-a' => 'در حال اندازه‌گیری',
'exif-gpsstatus-v' => 'مقایسه‌پذیری اندازه‌گیری',
@@ -3423,21 +3549,73 @@ $1',
'exif-gpsspeed-m' => 'مایل بر ساعت',
'exif-gpsspeed-n' => 'گره',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'کیلومتر',
+'exif-gpsdestdistance-m' => 'مایل',
+'exif-gpsdestdistance-n' => 'مایل دریایی',
+
+'exif-gpsdop-excellent' => 'عالی ($1)',
+'exif-gpsdop-good' => 'خوب ($1)',
+'exif-gpsdop-moderate' => 'متوسط ($1)',
+'exif-gpsdop-fair' => 'نه چندان خوب ($1)',
+'exif-gpsdop-poor' => 'ضعی٠($1)',
+
+'exif-objectcycle-a' => 'تنها صبح',
+'exif-objectcycle-p' => 'تنها عصر',
+'exif-objectcycle-b' => 'صبح و عصر',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'جهت درست',
'exif-gpsdirection-m' => 'جهت مغناطیسی',
+'exif-ycbcrpositioning-1' => 'وسط‌چین شده',
+'exif-ycbcrpositioning-2' => 'اشتراکی',
+
+'exif-dc-contributor' => 'مشارکت‌کنندگان',
+'exif-dc-coverage' => 'محدوده مکانی و یا زمانی رسانه',
+'exif-dc-date' => 'تاریخ (ها)',
+'exif-dc-publisher' => 'ناشر',
+'exif-dc-relation' => 'رسانه‌های مرتبط',
+'exif-dc-rights' => 'حقوق',
+'exif-dc-source' => 'رسانه منبع',
+'exif-dc-type' => 'نوع رسانه',
+
+'exif-rating-rejected' => 'رد شده',
+
+'exif-isospeedratings-overflow' => 'بزرگتر از ۶۵۵۳۵',
+
+'exif-iimcategory-ace' => 'هنر، Ùرهنگ Ùˆ سرگرمی',
+'exif-iimcategory-clj' => 'جنایت و قانون',
+'exif-iimcategory-dis' => 'بلایا و حوادث',
+'exif-iimcategory-fin' => 'اقتصاد و تجارت',
+'exif-iimcategory-edu' => 'آموزش',
+'exif-iimcategory-evn' => 'محیط زیست',
+'exif-iimcategory-hth' => 'سلامت',
+'exif-iimcategory-hum' => 'علاقه بشر',
+'exif-iimcategory-lab' => 'کار',
+'exif-iimcategory-lif' => 'شیوه زندگی Ùˆ اوقات Ùراغت',
+'exif-iimcategory-pol' => 'سیاست',
+'exif-iimcategory-rel' => 'مذهب و اعتقاد',
+'exif-iimcategory-sci' => 'علم Ùˆ Ùناوری',
+'exif-iimcategory-soi' => 'مسائل اجتماعی',
+'exif-iimcategory-spo' => 'ورزش',
+'exif-iimcategory-war' => 'جنگ ، درگیری و ناآرامی',
+'exif-iimcategory-wea' => 'آب و هوا',
+
+'exif-urgency-normal' => 'عادی ($1)',
+'exif-urgency-low' => 'Ú©Ù… ($1)',
+'exif-urgency-high' => 'زیاد ($1)',
+'exif-urgency-other' => 'اولویت تعری٠شده توسط کاربر ($1)',
+
# External editor support
'edit-externally' => 'ویرایش این پرونده با استÙاده از ویرایشگر خارجی',
-'edit-externally-help' => '(برای اطلاعات بیشتر [http://www.mediawiki.org/wiki/Manual:External_editors دستورالعمل تنظیم] را ببینید)',
+'edit-externally-help' => '(برای اطلاعات بیشتر [//www.mediawiki.org/wiki/Manual:External_editors دستورالعمل تنظیم] را ببینید)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'همه',
-'imagelistall' => 'همه',
-'watchlistall2' => 'همه',
-'namespacesall' => 'همه',
-'monthsall' => 'همهٔ ماه‌ها',
-'limitall' => 'همه',
+'watchlistall2' => 'همه',
+'namespacesall' => 'همه',
+'monthsall' => 'همهٔ ماه‌ها',
+'limitall' => 'همه',
# E-mail address confirmation
'confirmemail' => 'تأیید نشانی پست الکترونیکی',
@@ -3511,17 +3689,24 @@ $1',
'trackbackdeleteok' => 'بازتاب صÙحه با موÙقیت حذ٠شد.',
# Delete conflict
-'deletedwhileediting' => "'''هشدار''': این صÙحه پس از اینکه شما آغاز به ویرایش آن کرده‌اید، حذ٠شده است!",
-'confirmrecreate' => "کاربر [[User:$1|$1]] ([[User talk:$1|بحث]]) این مقاله را پس از اینکه شما آغاز به ویرایش آن نموده‌اید به دلیل زیر حذ٠کرده است :
+'deletedwhileediting' => "'''هشدار''': این صÙحه پس از اینکه شما آغاز به ویرایش آن کرده‌اید، حذ٠شده است!",
+'confirmrecreate' => "کاربر [[User:$1|$1]] ([[User talk:$1|بحث]]) این مقاله را پس از اینکه شما آغاز به ویرایش آن نموده‌اید به دلیل زیر حذ٠کرده است :
: ''$2''
لطÙاً تأیید کنید Ú©Ù‡ مجدداً می‌خواهید این مقاله را بسازید.",
-'recreate' => 'بازایجاد',
+'confirmrecreate-noreason' => 'کاربر [[User:$1|$1]] ([[User talk:$1|بحث]]) این صÙحه را پس از شروع ویرایش‌تان پاک کرده‌است. لطÙاً تأیید کنید Ú©Ù‡ شما واقعاً می‌خواهید آن را دوباره ایجاد کنید.',
+'recreate' => 'بازایجاد',
# action=purge
'confirm_purge_button' => 'تأیید',
'confirm-purge-top' => 'پاک کردن نسخهٔ حاÙظهٔ نهانی (Cache) این صÙحه را تأیید می‌کنید؟',
'confirm-purge-bottom' => 'خالی کردن میانگیر یک صÙحه باعث می‌شود Ú©Ù‡ آخرین نسخهٔ آن نمایش یابد.',
+# action=watch/unwatch
+'confirm-watch-button' => 'تأیید',
+'confirm-watch-top' => 'این صÙحه به Ùهرست پی‌گیری‌های شما اÙزوده شود؟',
+'confirm-unwatch-button' => 'تأیید',
+'confirm-unwatch-top' => 'این صÙحه از Ùهرست پی‌گیری‌های شما حذ٠شود؟',
+
# Separators for various lists, etc.
'semicolon-separator' => 'Ø›&#32;',
'comma-separator' => '،&#32;',
@@ -3573,14 +3758,14 @@ $1',
'watchlistedit-normal-legend' => 'حذ٠عنوان‌ها از Ùهرست پی‌گیری‌ها',
'watchlistedit-normal-explain' => 'عنوان‌های موجود در Ùهرست پیگیری شما در زیر نشان داده شده‌اند.
برای حذ٠یک عنوان جعبهٔ کنار آن را علامت بزنید و دکمهٔ «{{int:Watchlistedit-normal-submit}}» را بزنید.
-شما هم‌چنین می‌توانید [[Special:Watchlist/raw|Ùهرست خام را ویرایش کنید]].',
+شما هم‌چنین می‌توانید [[Special:EditWatchlist/raw|Ùهرست خام را ویرایش کنید]].',
'watchlistedit-normal-submit' => 'حذ٠عنوان‌ها',
'watchlistedit-normal-done' => '$1 عنوان از Ùهرست پی‌گیری‌های شما حذ٠{{PLURAL:$1|شد|شدند}}:',
'watchlistedit-raw-title' => 'ویرایش Ùهرست خام پی‌گیری‌ها',
'watchlistedit-raw-legend' => 'ویرایش Ùهرست خام پی‌گیری‌ها',
'watchlistedit-raw-explain' => 'عنوان‌های موجود در Ùهرست پی‌گیری‌های شما در زیر نشان داده شده‌اند، Ùˆ شما می‌توانید مواردی را حذ٠یا اضاÙÙ‡ کنید؛ هر مورد در یک سطر جداگانه باید قرار بگیرد.
در پایان، دکمهٔ «{{int:Watchlistedit-raw-submit}}» را بÙشارید.
-توجه کنید Ú©Ù‡ شما می‌توانید از [[Special:Watchlist/edit|ویرایشگر استاندارد Ùهرست پی‌گیری‌ها]] هم استÙاده کنید.',
+توجه کنید Ú©Ù‡ شما می‌توانید از [[Special:EditWatchlist|ویرایشگر استاندارد Ùهرست پی‌گیری‌ها]] هم استÙاده کنید.',
'watchlistedit-raw-titles' => 'عنوان‌ها:',
'watchlistedit-raw-submit' => 'به روز رساندن پی‌گیری‌ها',
'watchlistedit-raw-done' => 'Ùهرست پی‌گیری‌های شما به روز شد.',
@@ -3655,34 +3840,34 @@ $1',
'duplicate-defaultsort' => 'هشدار: ترتیب پیش Ùرض «$2» ترتیب پیش Ùرض قبلی «$1» را باطل می‌سازد.',
# Special:Version
-'version' => 'نسخه',
-'version-extensions' => 'اÙزونه‌های نصب شده',
-'version-specialpages' => 'صÙحه‌های ویژه',
-'version-parserhooks' => 'قلاب‌های تجزیه‌گر',
-'version-variables' => 'متغیرها',
-'version-skins' => 'پوسته‌ها',
-'version-other' => 'غیره',
-'version-mediahandlers' => 'به‌دست‌گیرنده‌های رسانه‌ها',
-'version-hooks' => 'قلاب‌ها',
-'version-extension-functions' => 'عملگرهای اÙزونه',
-'version-parser-extensiontags' => 'برچسب‌های اÙزونه تجزیه‌گر',
-'version-parser-function-hooks' => 'قلاب‌های عملگر تجزیه‌گر',
-'version-skin-extension-functions' => 'عملگرهای اÙزونه‌های پوسته',
-'version-hook-name' => 'نام قلاب',
-'version-hook-subscribedby' => 'وارد شده توسط',
-'version-version' => '(نسخه $1)',
-'version-svn-revision' => '(&رلم;r$2)',
-'version-license' => 'اجازه‌نامه',
-'version-poweredby-credits' => "این ویکی توسط '''[http://www.mediawiki.org/ مدیاویکی]''' پشتیبانی می‌شود، کلیهٔ حقوق محÙوظ است © 2001-$1 $2.",
-'version-poweredby-others' => 'دیگران',
-'version-license-info' => 'مدیاویکی یک نرم‌اÙزار رایگان است؛ Ú©Ù‡ شما می‌توانید آن را تحت گنو ال‌جی‌پی‌ال Ú©Ù‡ توسط بنیاد نرم‌اÙزارهای رایگان منتشر شده‌است، باز نشر کنید؛ یا نسخهٔ Û² از این محوز، یا (بنا به اختیار) نسخه‌های بعدی.
+'version' => 'نسخه',
+'version-extensions' => 'اÙزونه‌های نصب شده',
+'version-specialpages' => 'صÙحه‌های ویژه',
+'version-parserhooks' => 'قلاب‌های تجزیه‌گر',
+'version-variables' => 'متغیرها',
+'version-antispam' => 'جلوگیری از هرزنامه',
+'version-skins' => 'پوسته‌ها',
+'version-other' => 'غیره',
+'version-mediahandlers' => 'به‌دست‌گیرنده‌های رسانه‌ها',
+'version-hooks' => 'قلاب‌ها',
+'version-extension-functions' => 'عملگرهای اÙزونه',
+'version-parser-extensiontags' => 'برچسب‌های اÙزونه تجزیه‌گر',
+'version-parser-function-hooks' => 'قلاب‌های عملگر تجزیه‌گر',
+'version-hook-name' => 'نام قلاب',
+'version-hook-subscribedby' => 'وارد شده توسط',
+'version-version' => '(نسخه $1)',
+'version-svn-revision' => '(&رلم;r$2)',
+'version-license' => 'اجازه‌نامه',
+'version-poweredby-credits' => "این ویکی توسط '''[//www.mediawiki.org/ مدیاویکی]''' پشتیبانی می‌شود، کلیهٔ حقوق محÙوظ است © 2001-$1 $2.",
+'version-poweredby-others' => 'دیگران',
+'version-license-info' => 'مدیاویکی یک نرم‌اÙزار رایگان است؛ Ú©Ù‡ شما می‌توانید آن را تحت گنو ال‌جی‌پی‌ال Ú©Ù‡ توسط بنیاد نرم‌اÙزارهای رایگان منتشر شده‌است، باز نشر کنید؛ یا نسخهٔ Û² از این محوز، یا (بنا به اختیار) نسخه‌های بعدی.
مدیاویکی منتشر شده‌است به امید اینکه Ù…Ùید واقع شود، بدون هیچ گونه ضمانتی»؛ بدون ضمانت ضمنی Ú©Ù‡ تجاری یا برای یک کار خاصی مناسب باشد. برای اطلاعات بیشتر مجوز گنو جی‌پی‌ال را مشاهده کنید.
-شما می‌بایست یک [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU General Public License] را همراه این برنامه دریاÙت کرده باشید؛ اگر نه، بنویسید برای شرکت بنیاد نرم‌اÙزارهای رایگان، 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA یا آن را [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html به صورت بر خط بخوانید].',
-'version-software' => 'نسخهٔ نصب‌شده',
-'version-software-product' => 'محصول',
-'version-software-version' => 'نسخه',
+شما می‌بایست یک [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU General Public License] را همراه این برنامه دریاÙت کرده باشید؛ اگر نه، بنویسید برای شرکت بنیاد نرم‌اÙزارهای رایگان، 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA یا آن را [//www.gnu.org/licenses/old-licenses/gpl-2.0.html به صورت بر خط بخوانید].',
+'version-software' => 'نسخهٔ نصب‌شده',
+'version-software-product' => 'محصول',
+'version-software-version' => 'نسخه',
# Special:FilePath
'filepath' => 'مسیر پرونده',
@@ -3691,21 +3876,22 @@ $1',
'filepath-summary' => 'این صÙحهٔ ویژه نشانی کامل برای یک پرونده را نشان می‌دهد. تصاویر با Ú©ÛŒÙیت وضوح کامل نشان داده می‌شوند، سایر انواع پرونده با برنامه مخصوص به خودشان باز می‌شوند.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'جستجو برای پرونده‌های تکراری',
-'fileduplicatesearch-summary' => 'جستجو برای پرونده‌های تکراری بر اساس مقدار درهم‌شدهٔ آن‌ها صورت می‌گیرد.
-
-نام پرونده را بدون پیشوند «{{ns:file}}:» وارد کنید.',
-'fileduplicatesearch-legend' => 'جستجوی موارد تکراری',
-'fileduplicatesearch-filename' => 'نام پرونده:',
-'fileduplicatesearch-submit' => 'جستجو',
-'fileduplicatesearch-info' => '<span dir="ltr">$1 × $2</span> پیکسل<br />اندازهٔ پرونده: $3<br />نوع MIME: $4',
-'fileduplicatesearch-result-1' => 'پروندهٔ «$1» مورد تکراری ندارد.',
-'fileduplicatesearch-result-n' => 'پروندهٔ «$1» دارای {{PLURAL:$2|یک مورد تکراری|$2 مورد تکراری}} است.',
+'fileduplicatesearch' => 'جستجو برای پرونده‌های تکراری',
+'fileduplicatesearch-summary' => 'جستجو برای پرونده‌های تکراری بر اساس مقدار درهم‌شدهٔ آن‌ها صورت می‌گیرد.',
+'fileduplicatesearch-legend' => 'جستجوی موارد تکراری',
+'fileduplicatesearch-filename' => 'نام پرونده:',
+'fileduplicatesearch-submit' => 'جستجو',
+'fileduplicatesearch-info' => '<span dir="ltr">$1 × $2</span> پیکسل<br />اندازهٔ پرونده: $3<br />نوع MIME: $4',
+'fileduplicatesearch-result-1' => 'پروندهٔ «$1» مورد تکراری ندارد.',
+'fileduplicatesearch-result-n' => 'پروندهٔ «$1» دارای {{PLURAL:$2|یک مورد تکراری|$2 مورد تکراری}} است.',
+'fileduplicatesearch-noresults' => 'پرونده‌ای با نام «$1» یاÙت نشد.',
# Special:SpecialPages
'specialpages' => 'صÙحه‌های ویژه',
-'specialpages-note' => '<hr />
-* دسترسی به صÙحه‌های ویژهٔ <strong class="mw-specialpagerestricted">رنگی</strong> محدود شده‌است.',
+'specialpages-note' => '----
+* صÙحه‌های ویژهٔ عادی.
+* <strong class="mw-specialpagerestricted">صÙحات ویژهٔ محدود شده.</strong>
+* <strong class="mw-specialpagerestricted">صÙحات ویژهٔ دارای میانگیر (ممکن است منسوخ باشند).</strong>',
'specialpages-group-maintenance' => 'گزارش‌های نگهداری',
'specialpages-group-other' => 'صÙحه‌های ویژهٔ دیگر',
'specialpages-group-login' => 'ورود / ثبت نام',
@@ -3758,7 +3944,7 @@ $1',
# Database error messages
'dberr-header' => 'این ویکی یک ایراد دارد',
'dberr-problems' => 'شرمنده!
-این وب‌گاه از مشکلات ÙÙ†ÛŒ رنج می‌برد.',
+این تارنما از مشکلات ÙÙ†ÛŒ رنج می‌برد.',
'dberr-again' => 'چند دقیقه صبر کند Ùˆ دوباره صÙحه را بارگیری کنید.',
'dberr-info' => '(امکان برقراری ارتباط با کارساز پایگاه داده وجود ندارد: $1)',
'dberr-usegoogle' => 'شما در این مدت می‌توانید با استÙاده از Ú¯ÙˆÚ¯Ù„ جستجو کنید.',
diff --git a/languages/messages/MessagesFi.php b/languages/messages/MessagesFi.php
index 33856685..836914c0 100644
--- a/languages/messages/MessagesFi.php
+++ b/languages/messages/MessagesFi.php
@@ -11,6 +11,7 @@
* @author Centerlink
* @author Cimon Avaro
* @author Crt
+ * @author Harriv
* @author Jaakonam
* @author Jack Phoenix
* @author Mobe
@@ -22,6 +23,7 @@
* @author Silvonen
* @author Str4nd
* @author Tarmo
+ * @author Tofu II
* @author Wix
* @author ZeiP
* @author לערי ריינה×רט
@@ -200,97 +202,99 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Kaksinkertaiset_ohjaukset', 'Kaksinkertaiset_uudelleenohjaukset' ),
+ 'Activeusers' => array( 'Aktiiviset_käyttäjät' ),
+ 'Allmessages' => array( 'Järjestelmäviestit' ),
+ 'Allpages' => array( 'Kaikki_sivut' ),
+ 'Ancientpages' => array( 'Kuolleet_sivut' ),
+ 'Blankpage' => array( 'Tyhjä_sivu' ),
+ 'Block' => array( 'Estä' ),
+ 'Blockme' => array( 'Estä_minut' ),
+ 'Booksources' => array( 'Kirjalähteet' ),
'BrokenRedirects' => array( 'Virheelliset_ohjaukset', 'Virheelliset_uudelleenohjaukset' ),
- 'Disambiguations' => array( 'Täsmennyssivut' ),
- 'Userlogin' => array( 'Kirjaudu_sisään' ),
- 'Userlogout' => array( 'Kirjaudu_ulos' ),
+ 'Categories' => array( 'Luokat' ),
+ 'ChangePassword' => array( 'Muuta_salasana', 'Alusta_salasana' ),
+ 'ComparePages' => array( 'Vertaa_sivuja' ),
+ 'Confirmemail' => array( 'Varmista_sähköpostiosoite' ),
+ 'Contributions' => array( 'Muokkaukset' ),
'CreateAccount' => array( 'Luo_tunnus' ),
- 'Preferences' => array( 'Asetukset' ),
- 'Watchlist' => array( 'Tarkkailulista' ),
- 'Recentchanges' => array( 'Tuoreet_muutokset' ),
- 'Upload' => array( 'Tallenna', 'Lisää_tiedosto' ),
+ 'Deadendpages' => array( 'Linkittömät_sivut' ),
+ 'DeletedContributions' => array( 'Poistetut_muokkaukset' ),
+ 'Disambiguations' => array( 'Täsmennyssivut' ),
+ 'DoubleRedirects' => array( 'Kaksinkertaiset_ohjaukset', 'Kaksinkertaiset_uudelleenohjaukset' ),
+ 'EditWatchlist' => array( 'Muokkaa_tarkkailulistaa' ),
+ 'Emailuser' => array( 'Lähetä_sähköpostia' ),
+ 'Export' => array( 'Vie_sivuja' ),
+ 'Fewestrevisions' => array( 'Vähiten_muokatut_sivut' ),
+ 'FileDuplicateSearch' => array( 'Kaksoiskappaleiden_haku' ),
+ 'Filepath' => array( 'Tiedostopolku' ),
+ 'Import' => array( 'Tuo_sivuja' ),
+ 'Invalidateemail' => array( 'Hylkää_sähköpostiosoite' ),
+ 'BlockList' => array( 'Muokkausestot' ),
+ 'LinkSearch' => array( 'Linkkihaku' ),
+ 'Listadmins' => array( 'Ylläpitäjät' ),
+ 'Listbots' => array( 'Botit' ),
'Listfiles' => array( 'Tiedostoluettelo' ),
- 'Newimages' => array( 'Uudet_tiedostot', 'Uudet_kuvat' ),
- 'Listusers' => array( 'Käyttäjät' ),
'Listgrouprights' => array( 'Käyttäjäryhmien_oikeudet' ),
- 'Statistics' => array( 'Tilastot' ),
- 'Randompage' => array( 'Satunnainen_sivu' ),
+ 'Listredirects' => array( 'Ohjaukset', 'Ohjaussivut', 'Uudelleenohjaukset' ),
+ 'Listusers' => array( 'Käyttäjät' ),
+ 'Lockdb' => array( 'Lukitse_tietokanta' ),
+ 'Log' => array( 'Loki', 'Lokit' ),
'Lonelypages' => array( 'Yksinäiset_sivut' ),
- 'Uncategorizedpages' => array( 'Luokittelemattomat_sivut' ),
- 'Uncategorizedcategories' => array( 'Luokittelemattomat_luokat' ),
- 'Uncategorizedimages' => array( 'Luokittelemattomat_tiedostot' ),
- 'Uncategorizedtemplates' => array( 'Luokittelemattomat_mallineet' ),
- 'Unusedcategories' => array( 'Käyttämättömät_luokat' ),
- 'Unusedimages' => array( 'Käyttämättömät_tiedostot' ),
- 'Wantedpages' => array( 'Halutuimmat_sivut' ),
- 'Wantedcategories' => array( 'Halutuimmat_luokat' ),
- 'Wantedfiles' => array( 'Halutuimmat_tiedostot' ),
- 'Wantedtemplates' => array( 'Halutuimmat_mallineet' ),
+ 'Longpages' => array( 'Pitkät_sivut' ),
+ 'MergeHistory' => array( 'Liitä_muutoshistoria' ),
+ 'MIMEsearch' => array( 'MIME-haku' ),
+ 'Mostcategories' => array( 'Luokitelluimmat_sivut' ),
+ 'Mostimages' => array( 'Viitatuimmat_tiedostot' ),
'Mostlinked' => array( 'Viitatuimmat_sivut' ),
'Mostlinkedcategories' => array( 'Viitatuimmat_luokat' ),
'Mostlinkedtemplates' => array( 'Viitatuimmat_mallineet' ),
- 'Mostimages' => array( 'Viitatuimmat_tiedostot' ),
- 'Mostcategories' => array( 'Luokitelluimmat_sivut' ),
'Mostrevisions' => array( 'Muokatuimmat_sivut' ),
- 'Fewestrevisions' => array( 'Vähiten_muokatut_sivut' ),
- 'Shortpages' => array( 'Lyhyet_sivut' ),
- 'Longpages' => array( 'Pitkät_sivut' ),
+ 'Movepage' => array( 'Siirrä_sivu' ),
+ 'Mycontributions' => array( 'Omat_muokkaukset' ),
+ 'Mypage' => array( 'Oma_sivu' ),
+ 'Mytalk' => array( 'Oma_keskustelu' ),
+ 'Newimages' => array( 'Uudet_tiedostot', 'Uudet_kuvat' ),
'Newpages' => array( 'Uudet_sivut' ),
- 'Ancientpages' => array( 'Kuolleet_sivut' ),
- 'Deadendpages' => array( 'Linkittömät_sivut' ),
+ 'PasswordReset' => array( 'Salasanan_pyyhkiminen' ),
+ 'Popularpages' => array( 'Suositut_sivut' ),
+ 'Preferences' => array( 'Asetukset' ),
+ 'Prefixindex' => array( 'Etuliiteluettelo' ),
'Protectedpages' => array( 'Suojatut_sivut' ),
'Protectedtitles' => array( 'Suojatut_sivunimet' ),
- 'Allpages' => array( 'Kaikki_sivut' ),
- 'Prefixindex' => array( 'Etuliiteluettelo' ),
- 'Ipblocklist' => array( 'Muokkausestot' ),
- 'Unblock' => array( 'Poista_esto' ),
- 'Specialpages' => array( 'Toimintosivut' ),
- 'Contributions' => array( 'Muokkaukset' ),
- 'Emailuser' => array( 'Lähetä_sähköpostia' ),
- 'Confirmemail' => array( 'Varmista_sähköpostiosoite' ),
- 'Whatlinkshere' => array( 'Tänne_viittaavat_sivut' ),
+ 'Randompage' => array( 'Satunnainen_sivu' ),
+ 'Randomredirect' => array( 'Satunnainen_ohjaus', 'Satunnainen_uudelleenohjaus' ),
+ 'Recentchanges' => array( 'Tuoreet_muutokset' ),
'Recentchangeslinked' => array( 'Linkitetyt_muutokset' ),
- 'Movepage' => array( 'Siirrä_sivu' ),
- 'Blockme' => array( 'Estä_minut' ),
- 'Booksources' => array( 'Kirjalähteet' ),
- 'Categories' => array( 'Luokat' ),
- 'Export' => array( 'Vie_sivuja' ),
- 'Version' => array( 'Versio' ),
- 'Allmessages' => array( 'Järjestelmäviestit' ),
- 'Log' => array( 'Loki', 'Lokit' ),
- 'Blockip' => array( 'Estä' ),
+ 'Revisiondelete' => array( 'Poista_muokkaus' ),
+ 'RevisionMove' => array( 'Versioiden_siirto' ),
+ 'Search' => array( 'Haku' ),
+ 'Shortpages' => array( 'Lyhyet_sivut' ),
+ 'Specialpages' => array( 'Toimintosivut' ),
+ 'Statistics' => array( 'Tilastot' ),
+ 'Tags' => array( 'Merkinnät' ),
+ 'Unblock' => array( 'Poista_esto' ),
+ 'Uncategorizedcategories' => array( 'Luokittelemattomat_luokat' ),
+ 'Uncategorizedimages' => array( 'Luokittelemattomat_tiedostot' ),
+ 'Uncategorizedpages' => array( 'Luokittelemattomat_sivut' ),
+ 'Uncategorizedtemplates' => array( 'Luokittelemattomat_mallineet' ),
'Undelete' => array( 'Palauta' ),
- 'Import' => array( 'Tuo_sivuja' ),
- 'Lockdb' => array( 'Lukitse_tietokanta' ),
'Unlockdb' => array( 'Avaa_tietokanta' ),
- 'Userrights' => array( 'Käyttöoikeudet' ),
- 'MIMEsearch' => array( 'MIME-haku' ),
- 'FileDuplicateSearch' => array( 'Kaksoiskappaleiden_haku' ),
- 'Unwatchedpages' => array( 'Tarkkailemattomat_sivut' ),
- 'Listredirects' => array( 'Ohjaukset', 'Ohjaussivut', 'Uudelleenohjaukset' ),
- 'Revisiondelete' => array( 'Poista_muokkaus' ),
+ 'Unusedcategories' => array( 'Käyttämättömät_luokat' ),
+ 'Unusedimages' => array( 'Käyttämättömät_tiedostot' ),
'Unusedtemplates' => array( 'Käyttämättömät_mallineet' ),
- 'Randomredirect' => array( 'Satunnainen_ohjaus', 'Satunnainen_uudelleenohjaus' ),
- 'Mypage' => array( 'Oma_sivu' ),
- 'Mytalk' => array( 'Oma_keskustelu' ),
- 'Mycontributions' => array( 'Omat_muokkaukset' ),
- 'Listadmins' => array( 'Ylläpitäjät' ),
- 'Listbots' => array( 'Botit' ),
- 'Popularpages' => array( 'Suositut_sivut' ),
- 'Search' => array( 'Haku' ),
- 'Resetpass' => array( 'Muuta_salasana', 'Alusta_salasana' ),
+ 'Unwatchedpages' => array( 'Tarkkailemattomat_sivut' ),
+ 'Upload' => array( 'Tallenna', 'Lisää_tiedosto' ),
+ 'Userlogin' => array( 'Kirjaudu_sisään' ),
+ 'Userlogout' => array( 'Kirjaudu_ulos' ),
+ 'Userrights' => array( 'Käyttöoikeudet' ),
+ 'Version' => array( 'Versio' ),
+ 'Wantedcategories' => array( 'Halutuimmat_luokat' ),
+ 'Wantedfiles' => array( 'Halutuimmat_tiedostot' ),
+ 'Wantedpages' => array( 'Halutuimmat_sivut' ),
+ 'Wantedtemplates' => array( 'Halutuimmat_mallineet' ),
+ 'Watchlist' => array( 'Tarkkailulista' ),
+ 'Whatlinkshere' => array( 'Tänne_viittaavat_sivut' ),
'Withoutinterwiki' => array( 'Kielilinkittömät_sivut' ),
- 'MergeHistory' => array( 'Liitä_muutoshistoria' ),
- 'Filepath' => array( 'Tiedostopolku' ),
- 'Invalidateemail' => array( 'Hylkää_sähköpostiosoite' ),
- 'Blankpage' => array( 'Tyhjä_sivu' ),
- 'LinkSearch' => array( 'Linkkihaku' ),
- 'DeletedContributions' => array( 'Poistetut_muokkaukset' ),
- 'Tags' => array( 'Merkinnät' ),
- 'Activeusers' => array( 'Aktiiviset_käyttäjät' ),
- 'ComparePages' => array( 'Vertaa_sivuja' ),
- 'Badtitle' => array( 'Kelpaamaton_otsikko' ),
);
$linkTrail = '/^([a-zäö]+)(.*)$/sDu';
@@ -327,8 +331,8 @@ $messages = array(
'tog-shownumberswatching' => 'Näytä sivua tarkkailevien käyttäjien määrä',
'tog-oldsig' => 'Nykyinen allekirjoitus',
'tog-fancysig' => 'Muotoilematon allekirjoitus ilman automaattista linkkiä',
-'tog-externaleditor' => 'Käytä ulkoista tekstieditoria oletuksena. Vain kokeneille käyttäjille, vaatii selaimen asetusten muuttamista. (<span class="plainlinks">[http://www.mediawiki.org/wiki/Manual:External_editors Ohje]</span>)',
-'tog-externaldiff' => 'Käytä oletuksena ulkoista työkalua sivun eri versioiden välisten erojen tarkasteluun. Vain kokeneille käyttäjille, vaatii selaimen asetusten muuttamista. (<span class="plainlinks">[http://www.mediawiki.org/wiki/Manual:External_editors Ohje]</span>)',
+'tog-externaleditor' => 'Käytä ulkoista tekstieditoria oletuksena. Vain kokeneille käyttäjille, vaatii selaimen asetusten muuttamista. (<span class="plainlinks">[//www.mediawiki.org/wiki/Manual:External_editors Ohje]</span>)',
+'tog-externaldiff' => 'Käytä oletuksena ulkoista työkalua sivun eri versioiden välisten erojen tarkasteluun. Vain kokeneille käyttäjille, vaatii selaimen asetusten muuttamista. (<span class="plainlinks">[//www.mediawiki.org/wiki/Manual:External_editors Ohje]</span>)',
'tog-showjumplinks' => 'Lisää loikkaa-käytettävyyslinkit sivun alkuun',
'tog-uselivepreview' => 'Käytä pikaesikatselua (JavaScript) (kokeellinen)',
'tog-forceeditsummary' => 'Huomauta, jos yhteenvetoa ei ole annettu',
@@ -424,25 +428,7 @@ $messages = array(
'listingcontinuesabbrev' => 'jatkuu',
'index-category' => 'Indeksoidut sivut',
'noindex-category' => 'Indeksointikiellolliset sivut',
-
-'mainpagetext' => "'''MediaWiki on onnistuneesti asennettu.'''",
-'mainpagedocfooter' => "Lisätietoja käytöstä on sivulla [http://meta.wikimedia.org/wiki/Help:Contents User's Guide].
-
-=== Lisäohjeita ===
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Asetusten teko-ohjeita]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWikin FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Sähköpostilista, jolla tiedotetaan MediaWikin uusista versioista]
-
-=== Asetukset ===
-
-Tarkista, että alla olevat taivutusmuodot ovat oikein. Jos eivät, tee tarvittavat muutokset LocalSettings.php:hen seuraavasti:
- \$wgGrammarForms['fi']['genitive']['{{SITENAME}}'] = '...';
- \$wgGrammarForms['fi']['partitive']['{{SITENAME}}'] = '...';
- \$wgGrammarForms['fi']['elative']['{{SITENAME}}'] = '...';
- \$wgGrammarForms['fi']['inessive']['{{SITENAME}}'] = '...';
- \$wgGrammarForms['fi']['illative']['{{SITENAME}}'] = '...';
-Taivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) — {{GRAMMAR:partitive|{{SITENAME}}}} (yötä) — {{GRAMMAR:elative|{{SITENAME}}}} (yöstä) — {{GRAMMAR:inessive|{{SITENAME}}}} (yössä) — {{GRAMMAR:illative|{{SITENAME}}}} (yöhön).",
+'broken-file-category' => 'Sivut, joilla toimimattomia tiedostolinkkejä',
'about' => 'Tietoja',
'article' => 'Sivu',
@@ -494,10 +480,10 @@ Taivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) — {{GRAMMAR:partitive
'history' => 'Historia',
'history_short' => 'Historia',
'updatedmarker' => 'päivitetty viimeisimmän käyntisi jälkeen',
-'info_short' => 'Tiedotus',
'printableversion' => 'Tulostettava versio',
'permalink' => 'Ikilinkki',
'print' => 'Tulosta',
+'view' => 'Näytä',
'edit' => 'Muokkaa',
'create' => 'Luo sivu',
'editthispage' => 'Muokkaa tätä sivua',
@@ -505,6 +491,7 @@ Taivutusmuodot: {{GRAMMAR:genitive|{{SITENAME}}}} (yön) — {{GRAMMAR:partitive
'delete' => 'Poista',
'deletethispage' => 'Poista tämä sivu',
'undelete_short' => 'Palauta {{PLURAL:$1|yksi muokkaus|$1 muokkausta}}',
+'viewdeleted_short' => 'Näytä {{PLURAL:$1|poistettu muokkaus|$1 poistettua muokkausta}}',
'protect' => 'Suojaa',
'protect_change' => 'muuta',
'protectthispage' => 'Suojaa tämä sivu',
@@ -589,6 +576,8 @@ $1',
'toc' => 'Sisällysluettelo',
'showtoc' => 'näytä',
'hidetoc' => 'piilota',
+'collapsible-collapse' => 'Piilota',
+'collapsible-expand' => 'Näytä',
'thisisdeleted' => 'Näytä tai palauta $1.',
'viewdeleted' => 'Näytä $1?',
'restorelink' => '{{PLURAL:$1|yksi poistettu muokkaus|$1 poistettua muokkausta}}',
@@ -600,6 +589,8 @@ $1',
'page-rss-feed' => '$1 (RSS-syöte)',
'page-atom-feed' => '$1 (Atom-syöte)',
'red-link-title' => '$1 (sivua ei ole)',
+'sort-descending' => 'Lajittele laskevassa järjestyksessä',
+'sort-ascending' => 'Lajittele nousevassa järjestyksessä',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Sivu',
@@ -633,7 +624,7 @@ Viimeinen tietokantakysely, jota yritettiin, oli:
Se tehtiin funktiosta â€<tt>$2</tt>â€.
Tietokanta palautti virheen â€<tt>$3: $4</tt>â€.',
'dberrortextcl' => 'Tietokantakyselyssä oli syntaksivirhe. Viimeinen tietokantakysely, jota yritettiin, oli: â€$1â€. Se tehtiin funktiosta â€$2â€. Tietokanta palautti virheen â€$3: $4â€.',
-'laggedslavemode' => 'Varoitus: Sivu ei välttämättä sisällä viimeisimpiä muutoksia.',
+'laggedslavemode' => "'''Varoitus:''' Sivu ei välttämättä sisällä viimeisimpiä muutoksia.",
'readonly' => 'Tietokanta on lukittu',
'enterlockreason' => 'Anna lukituksen syy sekä sen arvioitu poistamisaika',
'readonlytext' => 'Tietokanta on tällä hetkellä lukittu. Uusia sivuja ei voi luoda eikä muitakaan muutoksia tehdä. Syynä ovat todennäköisimmin rutiininomaiset tietokannan ylläpitotoimet.
@@ -676,14 +667,15 @@ Joku muu on saattanut poistaa sen.',
'protectedpagetext' => 'Tämä sivu on suojattu muutoksilta.',
'viewsourcetext' => 'Voit tarkastella ja kopioida tämän sivun lähdekoodia:',
'protectedinterface' => 'Tämä sivu sisältää ohjelmiston käyttöliittymätekstiä ja on suojattu häiriköinnin estämiseksi.',
-'editinginterface' => "'''Varoitus.''' Muokkaat sivua, joka sisältää ohjelmiston käyttöliittymätekstiä.
+'editinginterface' => "'''Varoitus:''' Muokkaat sivua, joka sisältää ohjelmiston käyttöliittymätekstiä.
Muutokset tähän sivuun vaikuttavat muiden käyttäjien käyttöliittymän ulkoasuun.
-Viestien kääntäminen tulisi tehdä [http://translatewiki.net/wiki/Main_Page?setlang=fi translatewiki.netissä] – MediaWikin kotoistusprojektissa.",
+Viestien kääntäminen tulisi tehdä [//translatewiki.net/wiki/Main_Page?setlang=fi translatewiki.netissä] – MediaWikin kotoistusprojektissa.",
'sqlhidden' => '(SQL-kysely piilotettu)',
'cascadeprotected' => 'Tämä sivu on suojattu muokkauksilta, koska se on sisällytetty alla {{PLURAL:$1|olevaan laajennetusti suojattuun sivuun|oleviin laajennetusti suojattuihin sivuihin}}:
$2',
'namespaceprotected' => "Et voi muokata sivuja nimiavaruudessa '''$1'''.",
-'customcssjsprotected' => 'Sinulla ei ole oikeuksia muuttaa toisten käyttäjien henkilökohtaisia asetuksia.',
+'customcssprotected' => 'Sinulla ei ole oikeutta muuttaa tätä CSS-sivua, koska se sisältää toisen käyttäjän henkilökohtaisia asetuksia.',
+'customjsprotected' => 'Sinulla ei ole oikeutta muuttaa tätä JavaScript-sivua, koska se sisältää toisen käyttäjän henkilökohtaisia asetuksia.',
'ns-specialprotected' => 'Toimintosivuja ei voi muokata.',
'titleprotected' => "Käyttäjä [[User:$1|$1]] on asettanut tämän sivun luontikieltoon: ''$2''.",
@@ -720,6 +712,7 @@ Käyttäjätunnuksesi on luotu.
'createaccount' => 'Luo uusi käyttäjätunnus',
'gotaccount' => "Jos sinulla on jo tunnus, voit '''$1'''.",
'gotaccountlink' => 'kirjautua sisään',
+'userlogin-resetlink' => 'Unohditko salasanasi?',
'createaccountmail' => 'sähköpostitse',
'createaccountreason' => 'Syy',
'badretype' => 'Syöttämäsi salasanat ovat erilaiset.',
@@ -728,11 +721,12 @@ Käyttäjätunnuksesi on luotu.
'createaccounterror' => 'Tunnuksen luonti ei onnistunut: $1',
'nocookiesnew' => 'Käyttäjä luotiin, mutta et ole kirjautunut sisään. {{SITENAME}} käyttää evästeitä sisäänkirjautumisen yhteydessä. Selaimesi ei salli evästeistä. Kytke ne päälle, ja sitten kirjaudu sisään juuri luomallasi käyttäjänimellä ja salasanalla.',
'nocookieslogin' => '{{SITENAME}} käyttää evästeitä sisäänkirjautumisen yhteydessä. Selaimesi ei salli evästeitä. Ota ne käyttöön, ja yritä uudelleen.',
+'nocookiesfornew' => 'Käyttäjätunnusta ei luotu, koska sen lähdettä ei kyetty varmistamaan. Varmista, että selaimessasi on käytössä evästeet, päivitä tämä sivu ja yritä uudelleen.',
'noname' => 'Et ole määritellyt kelvollista käyttäjänimeä.',
'loginsuccesstitle' => 'Sisäänkirjautuminen onnistui',
'loginsuccess' => "'''Olet kirjautunut käyttäjänä $1.'''",
'nosuchuser' => 'Käyttäjää â€$1†ei ole olemassa. Nimet ovat kirjainkoosta riippuvaisia. Tarkista kirjoititko nimen oikein, tai [[Special:UserLogin/signup|luo uusi käyttäjätunnus]].',
-'nosuchusershort' => 'Käyttäjää nimeltä â€<nowiki>$1</nowiki>†ei ole. Kirjoititko nimen oikein?',
+'nosuchusershort' => 'Käyttäjää nimeltä â€$1†ei ole. Kirjoititko nimen oikein?',
'nouserspecified' => 'Käyttäjätunnusta ei ole määritelty.',
'login-userblocked' => 'Tämä käyttäjä on estetty. Kirjautuminen ei ole sallittua.',
'wrongpassword' => 'Syöttämäsi salasana ei ole oikein. Ole hyvä ja yritä uudelleen.',
@@ -769,13 +763,14 @@ Sinun ei tarvitse huomioida tätä viestiä, jos tunnus on luotu virheellisesti.
'usernamehasherror' => 'Käyttäjätunnus ei voi sisältää tiivistemerkkejä.',
'login-throttled' => 'Olet tehnyt liian monta kirjautumisyritystä.
Odota ennen kuin yrität uudelleen.',
+'login-abort-generic' => 'Kirjautuminen epäonnistui – keskeytetty',
'loginlanguagelabel' => 'Kieli: $1',
'suspicious-userlogout' => 'Pyyntösi kirjautua ulos evättiin, koska se näytti rikkinäisen selaimen tai välimuistipalvelimen lähettämältä.',
# E-mail sending
'php-mail-error-unknown' => 'Tuntematon virhe PHP:n mail()-funktiossa',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Muuta salasana',
'resetpass_announce' => 'Kirjauduit sisään sähköpostitse lähetetyllä väliaikaissalasanalla. Päätä sisäänkirjautuminen asettamalla uusi salasana.',
'resetpass_text' => '<!-- Lisää tekstiä tähän -->',
@@ -793,6 +788,38 @@ Odota ennen kuin yrität uudelleen.',
Olet saattanut jo onnistuneesti vaihtaa salasanasi tai pyytää uutta väliaikaista salasanaa.',
'resetpass-temp-password' => 'Väliaikainen salasana:',
+# Special:PasswordReset
+'passwordreset' => 'Salasanan alustus',
+'passwordreset-text' => 'Saat sähköpostimuistutuksen tunnuksesi tiedoista, kun täytät tämän lomakkeen.',
+'passwordreset-legend' => 'Salasanan vaihto',
+'passwordreset-disabled' => 'Salasanojen alustus ei ole mahdollista tässä wikissä.',
+'passwordreset-pretext' => '{{PLURAL:$1||Kirjoita jokin jäljempänä pyydetty tieto}}',
+'passwordreset-username' => 'Käyttäjätunnus',
+'passwordreset-domain' => 'Verkkotunnus',
+'passwordreset-email' => 'Sähköpostiosoite',
+'passwordreset-emailtitle' => 'Tunnuksen tiedot {{GRAMMAR:inessive|{{SITENAME}}}}',
+'passwordreset-emailtext-ip' => 'Joku (todennäköisesti sinä, IP-osoitteesta $1) pyysi muistutusta tunnuksesi tiedoista sivustolla {{SITENAME}} ($4).
+{{PLURAL:$3|Seuraava käyttäjätunnus on|Seuraavat käyttäjätunnukset ovat}} liitetty tähän sähköpostiosoitteeseen:
+
+$2
+
+{{PLURAL:$3|Tämä väliaikainen salasana vanhentuu|Nämä väliaikaiset salasanat vanhentuvat}} {{PLURAL:$5|yhden päivän|$5 päivän}} kuluttua.
+Sinun kannattaa kirjautua sisään ja valita uusi salasana. Jos joku toinen teki tämän
+pyynnön, tai muistat sittenkin vanhan salasanasi, etkä halua muuttaa sitä,
+voit jättää tämän viestin huomiotta ja jatkaa vanhan salasanan käyttöä.',
+'passwordreset-emailtext-user' => 'Käyttäjä $1 pyysi muistutusta tunnuksesi tiedoista sivustolla {{SITENAME}} ($4).
+{{PLURAL:$3|Seuraava käyttäjätunnus on|Seuraavat käyttäjätunnukset ovat}} liitetty tähän sähköpostiosoitteeseen:
+
+$2
+
+{{PLURAL:$3|Tämä väliaikainen salasana vanhentuu|Nämä väliaikaiset salasanat vanhentuvat}} {{PLURAL:$5|yhden päivän|$5 päivän}} kuluttua.
+Sinun kannattaa kirjautua sisään ja valita uusi salasana. Jos joku toinen teki tämän
+pyynnön, tai muistat sittenkin vanhan salasanasi, etkä halua muuttaa sitä,
+voit jättää tämän viestin huomiotta ja jatkaa vanhan salasanan käyttöä.',
+'passwordreset-emailelement' => 'Käyttäjätunnus: $1
+Väliaikainen salasana: $2',
+'passwordreset-emailsent' => 'Sähköpostimuistutus on lähetetty.',
+
# Edit page toolbar
'bold_sample' => 'Lihavoitu teksti',
'bold_tip' => 'Lihavointi',
@@ -804,8 +831,6 @@ Olet saattanut jo onnistuneesti vaihtaa salasanasi tai pyytää uutta väliaikai
'extlink_tip' => 'Ulkoinen linkki (muista http:// edessä)',
'headline_sample' => 'Otsikkoteksti',
'headline_tip' => 'Otsikko',
-'math_sample' => 'Lisää kaava tähän',
-'math_tip' => 'Matemaattinen kaava (LaTeX)',
'nowiki_sample' => 'Lisää muotoilematon teksti tähän',
'nowiki_tip' => 'Tekstiä, jota wiki ei muotoile',
'image_sample' => 'Esimerkki.jpg',
@@ -890,16 +915,16 @@ tai [{{fullurl:{{FULLPAGENAME}}|action=edit}} muokata tätä sivua]</span>.',
'noarticletext-nopermission' => 'Tällä hetkellä tällä sivulla ei ole tekstiä.
Voit [[Special:Search/{{PAGENAME}}|etsiä sivun nimellä]] muilta sivuilta
tai <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hakea aiheeseen liittyviä lokeja]</span>',
-'userpage-userdoesnotexist' => 'Käyttäjätunnusta $1 ei ole rekisteröity. Varmista haluatko muokata tätä sivua.',
+'userpage-userdoesnotexist' => 'Käyttäjätunnusta <nowiki>$1</nowiki> ei ole rekisteröity. Varmista haluatko muokata tätä sivua.',
'userpage-userdoesnotexist-view' => 'Käyttäjätunnusta â€$1†ei ole rekisteröity.',
'blocked-notice-logextract' => 'Tämä käyttäjä on tällä hetkellä estetty.
Alla on viimeisin estolokin tapahtuma:',
'clearyourcache' => "'''Huomautus:''' Selaimen välimuisti pitää tyhjentää asetusten tallentamisen jälkeen, jotta muutokset tulisivat voimaan.
-* '''Firefox ja Safari:''' napsauta ''Shift''-näppäin pohjassa ''Päivitä'' tai paina ''Ctrl-F5'' tai ''Ctrl-R'' (''Command-R'' Macilla)
-* '''Google Chrome:''' paina ''Ctrl-Shift-R'' (''Command-Shift-R'' Macilla)
-* '''Internet Explorer:''' napsauta ''Ctrl''-näppäin pohjassa ''Päivitä'' tai paina ''Ctrl-F5''
-* '''Konqueror''': napsauta ''Päivitä'' tai paina ''F5''
-* '''Opera:''' tyhjennä välimuisti: ''Tools→Preferences''",
+* '''Firefox ja Safari:''' Napsauta ''Shift''-näppäin pohjassa ''Päivitä'' tai paina ''Ctrl-F5'' tai ''Ctrl-R'' (''Command-R'' Macilla)
+* '''Google Chrome:''' Paina ''Ctrl-Shift-R'' (''Command-Shift-R'' Macilla)
+* '''Internet Explorer:''' Napsauta ''Ctrl''-näppäin pohjassa ''Päivitä'' tai paina ''Ctrl-F5''
+* '''Konqueror''': Napsauta ''Päivitä'' tai paina ''F5''
+* '''Opera:''' Tyhjennä välimuisti: ''Tools→Preferences''",
'usercssyoucanpreview' => 'Voit testata uutta CSS:ää ennen tallennusta käyttämällä painiketta â€{{int:showpreview}}â€.',
'userjsyoucanpreview' => 'Voit testata uutta JavaScriptiä ennen tallennusta käyttämällä painiketta â€{{int:showpreview}}â€.',
'usercsspreview' => "'''Tämä on CSS:n esikatselu. Muutoksia ei ole vielä tallennettu.'''",
@@ -920,6 +945,7 @@ Esikatselu on piilotettu varokeinona JavaScript-hyökkäyksiä vastaan – täss
Yritä uudelleen. Jos ongelma ei katoa, yritä [[Special:UserLogout|kirjautua ulos]] ja takaisin sisään.",
'token_suffix_mismatch' => "'''Muokkauksesi on hylätty, koska asiakasohjelmasi ei osaa käsitellä välimerkkejä muokkaustarkisteessa. Syynä voi olla viallinen välityspalvelin.'''",
+'edit_form_incomplete' => "'''Osa muokkauslomakkeesta ei saavuttanut palvelinta. Tarkista, että muokkauksesi ovat vahingoittumattomia ja yritä uudelleen.'''",
'editing' => 'Muokataan sivua $1',
'editingsection' => 'Muokataan osiota sivusta $1',
'editingcomment' => 'Muokataan uutta osiota sivulla $1',
@@ -955,7 +981,7 @@ Alla on viimeisin lokitapahtuma:",
'hiddencategories' => 'Tämä sivu kuuluu {{PLURAL:$1|seuraavaan piilotettuun luokkaan|seuraaviin piilotettuihin luokkiin}}:',
'edittools' => '<!-- Tässä oleva teksti näytetään muokkauskentän alla. -->',
'nocreatetitle' => 'Sivujen luominen on rajoitettu',
-'nocreatetext' => 'Et voi luoda uusia sivuja. Voit muokata olemassa olevia sivuja tai luoda [[Special:UserLogin|käyttäjätunnuksen]].',
+'nocreatetext' => 'Et voi luoda uusia sivuja. Voit muokata olemassa olevia sivuja tai [[Special:UserLogin|luoda käyttäjätunnuksen]].',
'nocreate-loggedin' => 'Sinulla ei ole oikeuksia luoda uusia sivuja.',
'sectioneditnotsupported-title' => 'Osiomuokkaaminen ei ole tuettu.',
'sectioneditnotsupported-text' => 'Osiomuokkaaminen ei ole tuettu tällä sivulla.',
@@ -979,11 +1005,11 @@ Se on jo olemassa.',
'expensive-parserfunction-warning' => 'Tällä sivulla on liian monta hitaiden laajennusfunktioiden kutsua.
Kutsuja pitäisi olla alle $2 {{PLURAL:$2|kappale|kappaletta}}, mutta nyt niitä on $1 {{PLURAL:$1|kappale|kappaletta}}.',
'expensive-parserfunction-category' => 'Liiaksi hitaita jäsentimen laajennusfunktioita käyttävät sivut',
-'post-expand-template-inclusion-warning' => 'Varoitus: Sisällytettyjen mallineiden koko on liian suuri.
-Joitakin mallineita ei ole sisällytetty.',
+'post-expand-template-inclusion-warning' => "'''Varoitus:''' Sisällytettyjen mallineiden koko on liian suuri.
+Joitakin mallineita ei ole sisällytetty.",
'post-expand-template-inclusion-category' => 'Mallineiden sisällytyksen kokorajan ylittävät sivut',
-'post-expand-template-argument-warning' => 'Varoitus: Tällä sivulla on ainakin yksi mallineen muuttuja, jonka sisällytetty koko on liian suuri.
-Nämä muuttujat on jätetty käsittelemättä.',
+'post-expand-template-argument-warning' => "'''Varoitus:''' Tällä sivulla on ainakin yksi mallineen muuttuja, jonka sisällytetty koko on liian suuri.
+Nämä muuttujat on jätetty käsittelemättä.",
'post-expand-template-argument-category' => 'Käsittelemättömiä mallinemuuttujia sisältävät sivut',
'parser-template-loop-warning' => 'Mallinesilmukka havaittu: [[$1]]',
'parser-template-recursion-depth-warning' => 'Mallineen rekursioraja ylittyi ($1)',
@@ -1037,22 +1063,22 @@ Kokeile [[Special:Search|hakua]] löytääksesi asiaan liittyviä sivuja.',
'rev-deleted-user' => '(käyttäjänimi poistettu)',
'rev-deleted-event' => '(lokitapahtuma poistettu)',
'rev-deleted-user-contribs' => '[käyttäjänimi tai IP-osoite poistettu – muokkaus piilotettu muokkauksista]',
-'rev-deleted-text-permission' => "Tämä versio on '''poistettu'''.
-Lisätietoja saattaa olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokissa].",
+'rev-deleted-text-permission' => "Tämä versio sivusta on '''poistettu'''.
+Lisätietoja löytyy [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokista].",
'rev-deleted-text-unhide' => "Tämä versio sivusta on '''poistettu'''.
Lisätietoja löytyy [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokista].
Voit silti [$1 nähdä tämän muutoksen], jos haluat jatkaa.",
'rev-suppressed-text-unhide' => "Tämä versio sivusta on '''häivytetty'''.
Lisätietoja löytyy [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} häivytyslokista].
Voit silti [$1 nähdä tämän muutoksen], jos haluat jatkaa.",
-'rev-deleted-text-view' => "Tämä versio on '''poistettu'''.
+'rev-deleted-text-view' => "Tämä versio sivusta on '''poistettu'''.
Voit silti nähdä sen. Lisätietoja löytyy [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokista].",
-'rev-suppressed-text-view' => "Tämä sivun versio on '''häivytetty'''.
+'rev-suppressed-text-view' => "Tämä versio sivusta on '''häivytetty'''.
Voit silti nähdä sen. Lisätietoja löytyy [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} häivytyslokista].",
-'rev-deleted-no-diff' => "Et voi katsoa tätä muokkausta, koska yksi versioista on '''poistettu'''.
-Lisätietoja saattaa olla [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokissa].",
-'rev-suppressed-no-diff' => "Et voi katsoa tätä eroa koska yksi korjattu versio on '''poistettu'''.",
-'rev-deleted-unhide-diff' => "Yksi tämän muutoksen versioista on '''poistettu'''.
+'rev-deleted-no-diff' => "Et voi nähdä tätä muutosvertailua, koska yksi versioista on '''poistettu'''.
+Lisätietoja löytyy [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokista].",
+'rev-suppressed-no-diff' => "Et voi nähdä tätä muutosvertailua, koska yksi versioista on '''poistettu'''.",
+'rev-deleted-unhide-diff' => "Yksi tämän muutosvertailun versioista on '''poistettu'''.
Lisätietoja löytyy [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} poistolokista].
Voit silti [$1 nähdä tämän muutoksen], jos haluat jatkaa.",
'rev-suppressed-unhide-diff' => "Yksi tämän muutosvertailun versioista on '''häivytetty'''.
@@ -1137,7 +1163,7 @@ Sinulla ei ole oikeutta siihen.',
# Suppression log
'suppressionlog' => 'Häivytysloki',
'suppressionlogtext' => 'Alla on lista uusimmista poistoista ja muokkausestoista, jotka sisältävät ylläpitäjiltä piilotettua materiaalia.
-[[Special:IPBlockList|Muokkausestolistassa]] on tämänhetkiset muokkausestot.',
+[[Special:BlockList|Muokkausestolistassa]] on tämänhetkiset muokkausestot.',
# History merging
'mergehistory' => 'Yhdistä muutoshistoriat',
@@ -1233,7 +1259,7 @@ $1 {{int:pipe-separator}} $2',
'showingresultsnum' => "Alla on {{PLURAL:$3|'''Yksi''' hakutulos|'''$3''' hakutulosta}} alkaen '''$2.''' tuloksesta.",
'showingresultsheader' => "{{PLURAL:$5|Tulokset '''$1'''–'''$3'''|Tulokset '''$1'''–'''$2''' kaikkiaan '''$3''' osuman joukosto}} haulle '''$4'''",
'nonefound' => "'''Huomautus''': Haku kohdistuu oletuksena vain tiettyihin nimiavaruuksiin.
-Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön (mukaanlukien keskustelut, mallineet jne.) tai kohdista haku haluttuun nimiavaruuteen.",
+Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön (mukaan lukien keskustelut, mallineet jne.) tai kohdista haku haluttuun nimiavaruuteen.",
'search-nonefound' => 'Hakusi ei tuottanut tulosta.',
'powersearch' => 'Etsi',
'powersearch-legend' => 'Laajennettu haku',
@@ -1247,12 +1273,13 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
'searchdisabled' => 'Tekstihaku on poistettu toistaiseksi käytöstä suuren kuorman vuoksi. Voit käyttää alla olevaa Googlen hakukenttää sivujen etsimiseen, kunnes haku tulee taas käyttöön. <small>Huomaa, että ulkopuoliset kopiot {{GRAMMAR:genitive|{{SITENAME}}}} sisällöstä eivät välttämättä ole ajan tasalla.</small>',
# Quickbar
-'qbsettings' => 'Pikavalikko',
-'qbsettings-none' => 'Ei mitään',
-'qbsettings-fixedleft' => 'Tekstin mukana, vasen',
-'qbsettings-fixedright' => 'Tekstin mukana, oikea',
-'qbsettings-floatingleft' => 'Pysyen vasemmalla',
-'qbsettings-floatingright' => 'Pysyen oikealla',
+'qbsettings' => 'Pikavalikko',
+'qbsettings-none' => 'Ei mitään',
+'qbsettings-fixedleft' => 'Tekstin mukana, vasen',
+'qbsettings-fixedright' => 'Tekstin mukana, oikea',
+'qbsettings-floatingleft' => 'Pysyen vasemmalla',
+'qbsettings-floatingright' => 'Pysyen oikealla',
+'qbsettings-directionality' => 'Kiinteä, riippuen käyttämäsi kielen kirjoitusjärjestelmän suunnasta',
# Preferences page
'preferences' => 'Asetukset',
@@ -1263,9 +1290,10 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
'changepassword' => 'Salasanan vaihto',
'prefs-skin' => 'Ulkoasu',
'skin-preview' => 'esikatselu',
-'prefs-math' => 'Matematiikka',
'datedefault' => 'Ei valintaa',
+'prefs-beta' => 'Beta-ominaisuudet',
'prefs-datetime' => 'Aika ja päiväys',
+'prefs-labs' => 'Kokeelliset ominaisuudet',
'prefs-personal' => 'Käyttäjätiedot',
'prefs-rc' => 'Tuoreet muutokset',
'prefs-watchlist' => 'Tarkkailulista',
@@ -1287,8 +1315,6 @@ Kokeile lisätä haun alkuun ''all:'', niin haku kohdistuu kaikkeen sisältöön
'columns' => 'Sarakkeita',
'searchresultshead' => 'Haku',
'resultsperpage' => 'Tuloksia sivua kohti',
-'contextlines' => 'Rivien määrä tulosta kohti',
-'contextchars' => 'Sisällön merkkien määrä riviä kohden',
'stub-threshold' => '<a href="#" class="stub">Tynkäsivun</a> osoituskynnys',
'stub-threshold-disabled' => 'Ei käytössä',
'recentchangesdays' => 'Näytettävien päivien määrä tuoreissa muutoksissa',
@@ -1301,7 +1327,7 @@ Tässä satunnaisesti tuotettu arvo, jota voit käyttää: $1',
'savedprefs' => 'Asetuksesi tallennettiin onnistuneesti.',
'timezonelegend' => 'Aikavyöhyke',
'localtime' => 'Paikallinen aika',
-'timezoneuseserverdefault' => 'Käytä palvelimen oletusta',
+'timezoneuseserverdefault' => 'Käytä oletusta ($1)',
'timezoneuseoffset' => 'Muu (määritä aikaero)',
'timezoneoffset' => 'Aikaero',
'servertime' => 'Palvelimen aika',
@@ -1330,7 +1356,7 @@ Tässä satunnaisesti tuotettu arvo, jota voit käyttää: $1',
'prefs-textboxsize' => 'Muokkauskentän koko',
'youremail' => 'Sähköpostiosoite',
'username' => 'Käyttäjätunnus',
-'uid' => 'Numero',
+'uid' => 'Tunniste',
'prefs-memberingroups' => 'Jäsenenä {{PLURAL:$1|ryhmässä|ryhmissä}}',
'prefs-registration' => 'Rekisteröintiaika',
'yourrealname' => 'Oikea nimi',
@@ -1347,7 +1373,8 @@ Tässä satunnaisesti tuotettu arvo, jota voit käyttää: $1',
'prefs-help-gender' => 'Vapaaehtoinen. Tietoa käytetään ohjelmistossa kielellisesti oikeaan ilmaisuun. Tämä tieto on julkinen.',
'email' => 'Sähköpostitoiminnot',
'prefs-help-realname' => 'Vapaaehtoinen. Nimesi näytetään käyttäjätunnuksesi sijasta sivun tekijäluettelossa.',
-'prefs-help-email' => 'Vapaaehtoinen. Mahdollistaa uuden salasanan pyytämisen, jos unohdat salasanasi. Voit myös sallia muiden käyttäjien ottaa sinuun yhteyttä sähköpostilla ilman, että osoitteesi paljastuu.',
+'prefs-help-email' => 'Vapaaehtoinen, mutta tarvitaan uuden salasanan pyytämiseen, jos unohdat salasanasi.',
+'prefs-help-email-others' => 'Voit myös antaa muiden käyttäjien ottaa yhteyttä sinuun sähköpostilla. Osoitteesi ei paljastu toisen käyttäjän ottaessa sinuun yhteyttä.',
'prefs-help-email-required' => 'Sähköpostiosoite on pakollinen.',
'prefs-info' => 'Perustiedot',
'prefs-i18n' => 'Kieli',
@@ -1472,15 +1499,15 @@ Tässä satunnaisesti tuotettu arvo, jota voit käyttää: $1',
'right-userrights' => 'Muuttaa kaikkia käyttäjäoikeuksia',
'right-userrights-interwiki' => 'Muokata käyttäjien oikeuksia muissa wikeissä',
'right-siteadmin' => 'Lukita tietokanta',
-'right-reset-passwords' => 'Alustaa muiden käyttäjien salasanoja',
'right-override-export-depth' => 'Viedä sivuja sisältäen viitatut sivut viiden syvyydellä',
'right-sendemail' => 'Lähettää sähköpostia muille käyttäjille',
# 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',
-'rightsnone' => '(ei oikeuksia)',
+'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',
+'rightsnone' => '(ei oikeuksia)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'lukea tätä sivua',
@@ -1570,7 +1597,7 @@ Tässä satunnaisesti tuotettu arvo, jota voit käyttää: $1',
'uploadnologin' => 'Et ole kirjautunut sisään',
'uploadnologintext' => 'Sinun pitää olla [[Special:UserLogin|kirjautuneena sisään]], jotta voisit tallentaa tiedostoja.',
'upload_directory_missing' => 'Tallennushakemisto $1 puuttuu, eikä palvelin pysty luomaan sitä.',
-'upload_directory_read_only' => 'Palvelimella ei ole kirjoitusoikeuksia tallennushakemistoon â€<tt>$1</tt>â€.',
+'upload_directory_read_only' => 'Palvelimella ei ole kirjoitusoikeuksia tallennushakemistoon $1.',
'uploaderror' => 'Tallennusvirhe',
'upload-recreate-warning' => "'''Varoitus: Tiedosto tällä nimellä on poistettu tai siirretty.'''
@@ -1599,11 +1626,11 @@ Voit käyttää tiedostoja wikisivuilla seuraavilla tavoilla:
'minlength1' => 'Tiedoston nimessä pitää olla vähintään yksi merkki.',
'illegalfilename' => "Tiedoston nimessä '''$1''' on merkkejä, joita ei sallita sivujen nimissä. Vaihda tiedoston nimeä, ja yritä lähettämistä uudelleen.",
'badfilename' => 'Tiedoston nimi vaihdettiin: $1.',
-'filetype-mime-mismatch' => 'Tiedostopääte ei vastaa MIME-tyyppiä.',
+'filetype-mime-mismatch' => 'Tiedostopääte <tt>.$1</tt> ei vastaa havaittua tiedoston MIME-tyyppiä (<tt>$2</tt>).',
'filetype-badmime' => '<tt>$1</tt> -tyypisten tiedostojen tallennus on kielletty.',
'filetype-bad-ie-mime' => 'Tiedostoa ei voi tallentaa, koska Internet Explorer tunnistaa sen kielletyksi tiedostomuodoksi $1, joka on mahdollisesti vaarallinen.',
'filetype-unwanted-type' => "'''.$1''' ei ole toivottu tiedostomuoto. {{PLURAL:$3|Suositeltu tiedostomuoto on|Suositeltuja tiedostomuotoja ovat}} $2.",
-'filetype-banned-type' => "'''.$1''' ei ole sallittu tiedostomuoto. {{PLURAL:$3|Sallittu tiedostomuoto on|Sallittuja tiedostomuotoja ovat}} $2.",
+'filetype-banned-type' => "'''.$1''' {{PLURAL:$4|ei ole sallittu tiedostomuoto|eivät ole sallittuja tiedostomuotoja}}. {{PLURAL:$3|Sallittu tiedostomuoto on|Sallittuja tiedostomuotoja ovat}} $2.",
'filetype-missing' => 'Tiedostolta puuttuu tiedostopääte – esimerkiksi <tt>.jpg</tt>.',
'empty-file' => 'Lähettämäsi tiedosto oli tyhjä.',
'file-too-large' => 'Lähettämäsi tiedosto oli liian suuri.',
@@ -1619,6 +1646,7 @@ Voit käyttää tiedostoja wikisivuilla seuraavilla tavoilla:
'large-file' => 'Tiedostojen enimmäiskoko on $1. Lähettämäsi tiedoston koko on $2.',
'largefileserver' => 'Tämä tiedosto on suurempi kuin mitä palvelin sallii.',
'emptyfile' => 'Tiedosto, jota yritit lähettää, näyttää olevan tyhjä. Tarkista, että kirjoitit polun ja nimen oikein ja että se ei ole liian suuri kohdepalvelimelle.',
+'windows-nonascii-filename' => 'Tämä wiki ei tue tiedostonimiä, joissa on erikoismerkkejä.',
'fileexists' => "Samanniminen tiedosto on jo olemassa.
Katso tiedoston sivu '''<tt>[[:$1]]</tt>''', jos et ole varma, haluatko muuttaa sitä.
[[$1|thumb]]",
@@ -1651,6 +1679,8 @@ Jos sinulla on tämän kuvan alkuperäinen versio, tallenna se. Muussa tapaukses
'php-uploaddisabledtext' => 'PHP:n tiedostojen lähetys ei ole käytössä. Tarkista asetukset kohdasta file_uploads.',
'uploadscripted' => 'Tämä tiedosto sisältää HTML-koodia tai skriptejä, jotka selain saattaa virheellisesti suorittaa.',
'uploadvirus' => 'Tiedosto sisältää viruksen. Tarkemmat tiedot: $1',
+'uploadjava' => 'Tämä tiedosto on ZIP-tiedosto, joka sisältää Java .class-tiedoston.
+Java-tiedostojen tallentaminen ei ole sallittua, sillä ne saattavat aiheuttaa tietoturvariskejä.',
'upload-source' => 'Lähdetiedosto',
'sourcefilename' => 'Lähdenimi',
'sourceurl' => 'URL-lähde',
@@ -1660,9 +1690,6 @@ Jos sinulla on tämän kuvan alkuperäinen versio, tallenna se. Muussa tapaukses
'upload-options' => 'Tallennusasetukset',
'watchthisupload' => 'Tarkkaile tätä tiedostoa',
'filewasdeleted' => 'Tämän niminen tiedosto on lisätty ja poistettu aikaisemmin. Tarkista $1 ennen jatkamista.',
-'upload-wasdeleted' => "'''Varoitus: Olet tallentamassa tiedostoa, joka on jo aikaisemmin poistettu.'''
-
-Harkitse, haluatko jatkaa tämän tiedoston tallentamista. Tiedoston poistoloki näkyy tässä:",
'filename-bad-prefix' => "Tallentamasi tiedoston nimi alkaa merkkijonolla '''$1''', joka on yleensä digitaalikameroiden automaattisesti antama nimi, joka ei kuvaa tiedoston sisältöä. Anna tiedostolle kuvaavampi nimi.",
'upload-success-subj' => 'Tallennus onnistui',
'upload-success-msg' => 'Tallennuksesi [$2] onnistui. Tiedosto on saatavilla täällä: [[:{{ns:file}}:$1]]',
@@ -1675,7 +1702,7 @@ $1',
'upload-proto-error' => 'Virheellinen protokolla',
'upload-proto-error-text' => 'Etälähetys on mahdollista vain osoitteista, jotka alkavat merkkijonolla <code>http://</code> tai <code>ftp://</code>.',
-'upload-file-error' => 'Vakava virhe',
+'upload-file-error' => 'Sisäinen virhe',
'upload-file-error-text' => 'Väliaikaistiedoston luominen epäonnistui. Ota yhteyttä sivuston [[Special:ListUsers/sysop|ylläpitäjään]].',
'upload-misc-error' => 'Virhe',
'upload-misc-error-text' => 'Tiedoston etälähetys ei onnistunut. Varmista, että antamasi osoite on oikein ja toimiva. Jos virhe ei katoa, ota yhteyttä sivuston ylläpitäjään.',
@@ -1683,6 +1710,23 @@ $1',
'upload-unknown-size' => 'Tuntematon koko',
'upload-http-error' => 'HTTP-virhe: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Tiedostossa havaittiin virhe, kun se avattiin ZIP-tarkastuksia varten.',
+'zip-wrong-format' => 'Määritetty tiedosto ei ole ZIP-tiedosto.',
+'zip-bad' => 'Tiedosto on vahingoittunut tai muuten lukemattomissa oleva ZIP-tiedosto.
+Sitä ei voida tarkistaa tietoturvan varalta kunnolla.',
+'zip-unsupported' => 'Tiedosto on ZIP-tiedosto, joka käyttää ZIP-ominaisuuksia, joita MediaWiki ei tue.
+Sitä ei voida tarkistaa tietoturvan varalta kunnolla.',
+
+# Special:UploadStash
+'uploadstash' => 'Latausmuisti',
+'uploadstash-summary' => 'Tämä sivu tarjoaa pääsyn tiedostoihin, jotka on tallennettu tai joiden tallennus on käynnissä, mutta joita ei ole vielä julkaistu tässä wikissä. Vain tiedostot tallentanut käyttäjä voi tarkastella näitä tiedostoja.',
+'uploadstash-clear' => 'Poista muistissa olevat tiedostot',
+'uploadstash-nofiles' => 'Sinulla ei ole muistissa olevia tiedostoja.',
+'uploadstash-badtoken' => 'Toiminnon suoritus epäonnistui. Tähän voi olla syynä muokkausvaltuuksien vanhentuminen. Yritä uudelleen.',
+'uploadstash-errclear' => 'Muistin tyhjennys epäonnistui.',
+'uploadstash-refresh' => 'Päivitä tiedostoluettelo',
+
# img_auth script messages
'img-auth-accessdenied' => 'Pääsy estetty',
'img-auth-nopathinfo' => 'PATH_INFO puuttuu.
@@ -1763,7 +1807,7 @@ Seuraava lista näyttää {{PLURAL:$1|ensimmäisen linkittävän sivun|$1 ensimm
[[Special:WhatLinksHere/$2|Koko lista]] on saatavilla.',
'nolinkstoimage' => 'Tähän tiedostoon ei ole linkkejä miltään sivulta.',
'morelinkstoimage' => 'Näytä [[Special:WhatLinksHere/$1|lisää linkkejä]] tähän tiedostoon.',
-'redirectstofile' => '{{PLURAL:$1|Seuraava tiedosto ohjaa|Seuraavat $1 tiedostoa ohjaavat}} tähän tiedostoon:',
+'linkstoimage-redirect' => '$1 (tiedosto-ohjaus) $2',
'duplicatesoffile' => '{{PLURAL:$1|Seuraava tiedosto on tämän tiedoston kaksoiskappale|Seuraavat $1 tiedostoa ovat tämän tiedoston kaksoiskappaleita}} ([[Special:FileDuplicateSearch/$2|lisätietoja]]):',
'sharedupload' => 'Tämä tiedosto on jaettu kohteesta $1 ja muut projektit saattavat käyttää sitä.',
'sharedupload-desc-there' => 'Tämä tiedosto on jaettu kohteesta $1 ja muut projektit saattavat käyttää sitä.
@@ -1855,12 +1899,13 @@ Tiedot [$2 tiedoston kuvaussivulta] näkyvät alla.',
'disambiguationspage' => 'Template:Täsmennyssivu',
'disambiguations-text' => "Seuraavat artikkelit linkittävät ''täsmennyssivuun''. Täsmennyssivun sijaan niiden pitäisi linkittää asianomaiseen aiheeseen.<br />Sivua kohdellaan täsmennyssivuna jos se käyttää mallinetta, johon on linkki sivulta [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Kaksinkertaiset ohjaukset',
-'doubleredirectstext' => 'Tässä listassa on ohjaussivut, jotka ohjaavat toiseen ohjaussivuun.
+'doubleredirects' => 'Kaksinkertaiset ohjaukset',
+'doubleredirectstext' => 'Tässä listassa on ohjaussivut, jotka ohjaavat toiseen ohjaussivuun.
Jokaisella rivillä on linkit ensimmäiseen ja toiseen ohjaukseen sekä toisen ohjauksen kohteen ensimmäiseen riviin, eli yleensä â€oikeaan†kohteeseen, johon ensimmäisen ohjauksen pitäisi osoittaa.
<del>Yliviivatut</del> kohteet on korjattu.',
-'double-redirect-fixed-move' => '[[$1]] on siirretty, ja se ohjaa nyt sivulle [[$2]]',
-'double-redirect-fixer' => 'Ohjausten korjaaja',
+'double-redirect-fixed-move' => '[[$1]] on siirretty, ja se ohjaa nyt sivulle [[$2]]',
+'double-redirect-fixed-maintenance' => 'Korjataan kaksinkertainen ohjaus sivulta [[$1]] sivulle [[$2]]',
+'double-redirect-fixer' => 'Ohjausten korjaaja',
'brokenredirects' => 'Virheelliset ohjaukset',
'brokenredirectstext' => 'Seuraavat ohjaukset osoittavat sivuihin, joita ei ole olemassa.',
@@ -1937,6 +1982,7 @@ Huomaa, että muut verkkosivut saattavat viitata tiedostoon suoran URL:n avulla,
'pager-newer-n' => '↠{{PLURAL:$1|1 uudempi|$1 uudempaa}}',
'pager-older-n' => '{{PLURAL:$1|1 vanhempi|$1 vanhempaa}} →',
'suppress' => 'Häivytys',
+'querypage-disabled' => 'Tämä toimintosivu on poistettu käytöstä suorituskykysyistä.',
# Book sources
'booksources' => 'Kirjalähteet',
@@ -1988,7 +2034,7 @@ Katso myös [[Special:WantedCategories|halutut luokat]].',
'sp-deletedcontributions-contribs' => 'muokkaukset',
# Special:LinkSearch
-'linksearch' => 'Ulkoiset linkit',
+'linksearch' => 'Etsi ulkoisia linkkejä',
'linksearch-pat' => 'Osoite',
'linksearch-ns' => 'Nimiavaruus',
'linksearch-ok' => 'Etsi',
@@ -2054,6 +2100,10 @@ Lisätietoa yksittäisistä käyttäjäoikeuksista saattaa löytyä [[{{MediaWik
'noemailtext' => 'Tämä käyttäjä ei ole määritellyt kelvollista sähköpostiosoitetta.',
'nowikiemailtitle' => 'Sähköpostin lähettäminen ei sallittu',
'nowikiemailtext' => 'Tämä käyttäjä ei halua sähköpostia muilta käyttäjiltä.',
+'emailnotarget' => 'Vastaanottajan käyttäjänimeä ei ole tai se on väärä.',
+'emailtarget' => 'Vastaanottajan käyttäjätunnus',
+'emailusername' => 'Käyttäjätunnus',
+'emailusernamesubmit' => 'Hae lomake',
'email-legend' => 'Sähköpostin lähetys {{GRAMMAR:genitive|{{SITENAME}}}} käyttäjälle',
'emailfrom' => 'Lähettäjä',
'emailto' => 'Vastaanottaja',
@@ -2078,9 +2128,9 @@ Lisätietoa yksittäisistä käyttäjäoikeuksista saattaa löytyä [[{{MediaWik
'watchlistanontext' => 'Sinun täytyy $1, jos haluat käyttää tarkkailulistaa.',
'watchnologin' => 'Et ole kirjautunut sisään',
'watchnologintext' => 'Sinun pitää [[Special:UserLogin|kirjautua sisään]], jotta voisit käyttää tarkkailulistaasi.',
-'addedwatch' => 'Lisätty tarkkailulistalle',
-'addedwatchtext' => "Sivu '''<nowiki>$1</nowiki>''' on lisätty [[Special:Watchlist|tarkkailulistallesi]]. Tulevaisuudessa sivuun ja sen keskustelusivuun tehtävät muutokset listataan täällä. Sivu on '''lihavoitu''' [[Special:RecentChanges|tuoreiden muutosten listassa]], jotta huomaisit sen helpommin. Jos haluat myöhemmin poistaa sivun tarkkailulistaltasi, napsauta linkkiä ''lopeta tarkkailu'' sivun reunassa.",
-'removedwatch' => 'Poistettu tarkkailulistalta',
+'addwatch' => 'Lisää tarkkailulistalle',
+'addedwatchtext' => "Sivu '''[[:$1]]''' on lisätty [[Special:Watchlist|tarkkailulistallesi]]. Tulevaisuudessa sivuun ja sen keskustelusivuun tehtävät muutokset listataan täällä. Sivu on '''lihavoitu''' [[Special:RecentChanges|tuoreiden muutosten listassa]], jotta huomaisit sen helpommin. Jos haluat myöhemmin poistaa sivun tarkkailulistaltasi, napsauta linkkiä ''lopeta tarkkailu'' sivun reunassa.",
+'removewatch' => 'Poista tarkkailulistalta',
'removedwatchtext' => "Sivu '''[[:$1]]''' on poistettu [[Special:Watchlist|tarkkailulistaltasi]].",
'watch' => 'Tarkkaile',
'watchthispage' => 'Tarkkaile tätä sivua',
@@ -2101,8 +2151,9 @@ Lisätietoa yksittäisistä käyttäjäoikeuksista saattaa löytyä [[{{MediaWik
'watchlist-options' => 'Tarkkailulistan asetukset',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Lisätään tarkkailulistalle...',
-'unwatching' => 'Poistetaan tarkkailulistalta...',
+'watching' => 'Lisätään tarkkailulistalle...',
+'unwatching' => 'Poistetaan tarkkailulistalta...',
+'watcherrortext' => 'Sivun â€$1†tarkkailulista-asetusten muutoksissa tapahtui virhe.',
'enotif_mailer' => '{{GRAMMAR:genitive|{{SITENAME}}}} sivu on muuttunut -ilmoitus',
'enotif_reset' => 'Merkitse kaikki sivut katsotuiksi',
@@ -2114,7 +2165,7 @@ Lisätietoa yksittäisistä käyttäjäoikeuksista saattaa löytyä [[{{MediaWik
'enotif_lastvisited' => 'Osoitteessa $1 on kaikki muutokset viimeisen käyntisi jälkeen.',
'enotif_lastdiff' => 'Muutos on osoitteessa $1.',
'enotif_anon_editor' => 'kirjautumaton käyttäjä $1',
-'enotif_body' => 'Käyttäjä $WATCHINGUSERNAME,
+'enotif_body' => '$WATCHINGUSERNAME,
{{GRAMMAR:genitive|{{SITENAME}}}} käyttäjä $PAGEEDITOR on $CHANGEDORCREATED $PAGETITLE $PAGEEDITDATE. Nykyinen versio on osoitteessa $PAGETITLE_URL .
@@ -2131,14 +2182,17 @@ Uusia ilmoituksia tästä sivusta ei tule kunnes vierailet sivulla. Voit myös n
{{GRAMMAR:genitive|{{SITENAME}}}} ilmoitusjärjestelmä
--
-Tarkkailulistan asetuksia voit muuttaa osoitteessa:
-{{fullurl:Special:Watchlist/edit}}
+Voit muuttaa sähköpostimuistutusten asetuksia osoitteessa:
+{{canonicalurl:{{#special:Preferences}}}}
+
+Voit muuttaa tarkkailulistasi asetuksia osoitteessa:
+{{canonicalurl:{{#special:EditWatchlist}}}}
Voit poistaa sivun tarkkailulistalta osoitteessa:
$UNWATCHURL
Palaute ja lisäapu osoitteessa:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Poista sivu',
@@ -2153,7 +2207,7 @@ Palaute ja lisäapu osoitteessa:
'confirmdeletetext' => 'Olet poistamassa sivun tai tiedoston ja kaiken sen historian. Ymmärrä teon seuraukset ja tee poisto {{GRAMMAR:genitive|{{SITENAME}}}} [[{{MediaWiki:Policy-url}}|käytäntöjen]] mukaisesti.',
'actioncomplete' => 'Toiminto suoritettu',
'actionfailed' => 'Toiminto epäonnistui',
-'deletedtext' => 'â€<nowiki>$1</nowiki>†on poistettu.
+'deletedtext' => 'â€$1†on poistettu.
Sivulla $2 on lista viimeaikaisista poistoista.',
'deletedarticle' => 'poisti sivun [[$1]]',
'suppressedarticle' => 'häivytti sivun [[$1]]',
@@ -2184,7 +2238,7 @@ Viimeisimmän muokkauksen on tehnyt käyttäjä [[User:$3|$3]] ([[User talk:$3|k
'editcomment' => "Muokkauksen yhteenveto oli: ''$1''.",
'revertpage' => 'Käyttäjän [[Special:Contributions/$2|$2]] ([[User talk:$2|keskustelu]]) muokkaukset kumottiin ja sivu palautettiin viimeisimpään käyttäjän [[User:$1|$1]] tekemään versioon.',
'revertpage-nouser' => 'Käyttäjän (käyttäjänimi poistettu) muokkaukset kumottiin ja sivu palautettiin viimeisimpään käyttäjän [[User:$1|$1]] tekemään versioon.',
-'rollback-success' => 'Käyttäjän â€$1†tekemät muokkaukset kumottiin ja sivu palautettiin käyttäjän $2 versioon.',
+'rollback-success' => 'Käyttäjän $1 tekemät muokkaukset kumottiin ja sivu palautettiin käyttäjän $2 versioon.',
# Edit tokens
'sessionfailure-title' => 'Istuntovirhe',
@@ -2198,14 +2252,14 @@ Viimeisimmän muokkauksen on tehnyt käyttäjä [[User:$3|$3]] ([[User talk:$3|k
'unprotectedarticle' => 'poisti suojauksen sivulta [[$1]]',
'movedarticleprotection' => 'siirsi suojausasetukset sivulta [[$2]] sivulle [[$1]]',
'protect-title' => 'Sivun $1 suojaus',
-'prot_1movedto2' => 'siirsi sivun â€$1†uudelle nimelle â€$2â€',
+'prot_1movedto2' => 'siirsi sivun [[$1]] uudelle nimelle [[$2]]',
'protect-legend' => 'Suojaukset',
'protectcomment' => 'Syy',
'protectexpiry' => 'Vanhenee',
'protect_expiry_invalid' => 'Vanhenemisaika ei kelpaa.',
'protect_expiry_old' => 'Vanhenemisaika on menneisyydessä.',
'protect-unchain-permissions' => 'Avaa lisäsuojausvalinnat',
-'protect-text' => "Voit katsoa ja muuttaa sivun '''<nowiki>$1</nowiki>''' suojauksia.",
+'protect-text' => "Voit tarkastella ja muuttaa sivun '''$1''' suojauksia.",
'protect-locked-blocked' => "Et voi muuttaa sivun suojauksia, koska sinut on estetty. Alla on sivun â€'''$1'''†nykyiset suojaukset:",
'protect-locked-dblock' => "Sivun suojauksia ei voi muuttaa, koska tietokanta on lukittu. Alla on sivun â€'''$1'''†nykyiset suojaukset:",
'protect-locked-access' => "Sinulla ei ole tarvittavia oikeuksia sivujen suojauksen muuttamiseen. Alla on sivun â€'''$1'''†nykyiset suojaukset:",
@@ -2255,7 +2309,8 @@ Viimeisimmän muokkauksen on tehnyt käyttäjä [[User:$3|$3]] ([[User talk:$3|k
'viewdeletedpage' => 'Poistettujen sivujen selaus',
'undeletepagetext' => '{{PLURAL:$1|Seuraava sivu|Seuraavat sivut}} on poistettu, mutta {{PLURAL:$1|se löytyy|ne löytyvät}} vielä arkistosta, joten {{PLURAL:$1|se on|ne ovat}} palautettavissa. Arkisto saatetaan tyhjentää aika ajoin.',
'undelete-fieldset-title' => 'Palauta versiot',
-'undeleteextrahelp' => "Palauttaaksesi sivun koko muutoshistorian, jätä kaikki valintalaatikot tyhjiksi ja napsauta '''''Palauta'''''. Voit palauttaa versiota valikoivasti valitsemalla vain niiden versioiden valintalaatikot, jotka haluat palauttaa. Voit tyhjentää kommenttikentän ja kaikki valintalaatikot napsauttamalla '''''Tyhjennä'''''.",
+'undeleteextrahelp' => "Palauttaaksesi sivun koko muutoshistorian, jätä kaikki valintalaatikot tyhjiksi ja napsauta '''''{{int:undeletebtn}}'''''.
+Voit palauttaa versiota valikoivasti valitsemalla vain niiden versioiden valintalaatikot, jotka haluat palauttaa.",
'undeleterevisions' => '{{PLURAL:$1|Versio|$1 versiota}} arkistoitu.',
'undeletehistory' => 'Jos palautat sivun, kaikki versiot lisätään sivun historiaan. Jos uusi sivu samalla nimellä on luotu poistamisen jälkeen, palautetut versiot lisätään sen historiaan.',
'undeleterevdel' => 'Palautusta ei tehdä, jos sen seurauksena sivun uusin versio olisi osittain poistettu. Tässä tilanteessa poista uusimman poistettavan version piilotus. Tiedostoversioita, joihin sinulla ei ole katseluoikeutta ei palauteta.',
@@ -2294,9 +2349,12 @@ $1',
'undelete-show-file-submit' => 'Kyllä',
# Namespace form on various pages
-'namespace' => 'Nimiavaruus',
-'invert' => 'Käänteinen valinta',
-'blanknamespace' => '(sivut)',
+'namespace' => 'Nimiavaruus',
+'invert' => 'Käänteinen valinta',
+'tooltip-invert' => 'Valitse tämä kohta, jos haluat piilottaa muutokset sivuihin valitussa nimiavaruudessa (ja liittyviin nimiavaruuksiin, jos valittu)',
+'namespace_association' => 'Liitetty nimiavaruus',
+'tooltip-namespace_association' => 'Valitse tämä kohta, jos haluat sisällyttää myös keskustelu- tai aihe-nimiavaruudet, jotka on liitetty valittuun nimiavaruuteen',
+'blanknamespace' => '(sivut)',
# Contributions
'contributions' => 'Käyttäjän muokkaukset',
@@ -2345,11 +2403,13 @@ Alla on viimeisin estolokin tapahtuma:',
'whatlinkshere-filters' => 'Suotimet',
# Block/unblock
+'autoblockid' => 'Automaattinen esto #$1',
+'block' => 'Estä käyttäjä',
+'unblock' => 'Poista käyttäjän esto',
'blockip' => 'Estä käyttäjä',
'blockip-title' => 'Estä käyttäjä',
'blockip-legend' => 'Estä käyttäjä',
'blockiptext' => 'Tällä lomakkeella voit estää käyttäjän tai IP-osoitteen muokkausoikeudet. Muokkausoikeuksien poistamiseen [[{{MediaWiki:Policy-url}}|pitää olla syy]], esimerkiksi sivujen vandalisointi. Kirjoita syy siihen varattuun kenttään.<br />Vapaamuotoisen vanhenemisajat noudattavat GNUn standardimuotoa, joka on kuvattu tar-manuaalissa ([http://www.gnu.org/software/tar/manual/html_node/Date-input-formats.html] [EN]), esimerkiksi â€1 hourâ€, â€2 daysâ€, â€next Wednesdayâ€, â€2014-08-29â€.',
-'ipaddress' => 'IP-osoite',
'ipadressorusername' => 'IP-osoite tai käyttäjätunnus',
'ipbexpiry' => 'Kesto',
'ipbreason' => 'Syy',
@@ -2362,7 +2422,7 @@ Alla on viimeisin estolokin tapahtuma:',
** Häiriköinti
** Useamman käyttäjätunnuksen väärinkäyttö
** Sopimaton käyttäjätunnus',
-'ipbanononly' => 'Estä vain kirjautumattomat käyttäjät',
+'ipb-hardblock' => 'Estä sisäänkirjautuneita käyttäjiä muokkaamasta tästä IP-osoitteesta',
'ipbcreateaccount' => 'Estä tunnusten luonti',
'ipbemailban' => 'Estä käyttäjää lähettämästä sähköpostia',
'ipbenableautoblock' => 'Estä viimeisin IP-osoite, josta käyttäjä on muokannut, sekä ne osoitteet, joista hän jatkossa yrittää muokata.',
@@ -2373,12 +2433,15 @@ Alla on viimeisin estolokin tapahtuma:',
'ipbotherreason' => 'Muu syy tai tarkennus',
'ipbhidename' => 'Piilota tunnus muokkauksista ja listauksista',
'ipbwatchuser' => 'Tarkkaile tämän käyttäjän käyttäjä- ja keskustelusivua',
-'ipballowusertalk' => 'Salli tämän käyttäjän muokata omaa keskustelusivuaan ollessaan estetty',
+'ipb-disableusertalk' => 'Estä käyttäjää muokkaamasta omaa keskustelusivuaan eston aikana',
'ipb-change-block' => 'Estä uudelleen näillä asetuksilla',
+'ipb-confirm' => 'Vahvista esto',
'badipaddress' => 'IP-osoite on väärin muotoiltu.',
'blockipsuccesssub' => 'Esto onnistui',
'blockipsuccesstext' => 'Käyttäjä tai IP-osoite [[Special:Contributions/$1|$1]] on estetty.<br />
Nykyiset estot löytyvät [[Special:IPBlockList|estolistalta]].',
+'ipb-blockingself' => 'Olet estämässä itseäsi. Oletko varma, että haluat tehdä niin?',
+'ipb-confirmhideuser' => 'Olet estämässä käyttäjää â€piilota käyttäjä†-toiminnon kanssa. Tämä piilottaa käyttäjän nimen kaikissa luetteloissa ja lokitapahtumissa. Oletko varma, että haluat tehdä näin?',
'ipb-edit-dropdown' => 'Muokkaa estosyitä',
'ipb-unblock-addr' => 'Poista käyttäjän $1 esto',
'ipb-unblock' => 'Poista käyttäjän tai IP-osoitteen muokkausesto',
@@ -2388,17 +2451,23 @@ Nykyiset estot löytyvät [[Special:IPBlockList|estolistalta]].',
'unblockiptext' => 'Tällä lomakkeella voit poistaa käyttäjän tai IP-osoitteen muokkauseston.',
'ipusubmit' => 'Poista esto',
'unblocked' => 'Käyttäjän [[User:$1|$1]] esto on poistettu',
+'unblocked-range' => '$1 ei ole enää estettynä',
'unblocked-id' => 'Esto $1 on poistettu',
+'blocklist' => 'Estetyt käyttäjät',
'ipblocklist' => 'Estetyt käyttäjät',
'ipblocklist-legend' => 'Haku',
-'ipblocklist-username' => 'Käyttäjätunnus tai IP-osoite',
-'ipblocklist-sh-userblocks' => '$1 käyttäjätunnusten estot',
-'ipblocklist-sh-tempblocks' => '$1 väliaikaiset estot',
-'ipblocklist-sh-addressblocks' => '$1 yksittäiset IP-estot',
+'blocklist-userblocks' => 'Piilota tunnusten estot',
+'blocklist-tempblocks' => 'Piilota väliaikaiset estot',
+'blocklist-addressblocks' => 'Piilota yksittäiset IP-estot',
+'blocklist-timestamp' => 'Päiväys',
+'blocklist-target' => 'Kohde',
+'blocklist-expiry' => 'Vanhenee',
+'blocklist-by' => 'Estänyt ylläpitäjä',
+'blocklist-params' => 'Estoasetukset',
+'blocklist-reason' => 'Syy',
'ipblocklist-submit' => 'Hae',
'ipblocklist-localblock' => 'Paikallinen esto',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Muu esto|Muut estot}}',
-'blocklistline' => '$1 – $2 on estänyt käyttäjän $3 ($4)',
'infiniteblock' => 'ikuisesti',
'expiringblock' => 'vanhenee $1 kello $2',
'anononlyblock' => 'vain kirjautumattomat',
@@ -2420,7 +2489,7 @@ Alla on ote estolokista.',
Alla on ote häivytyslokista.',
'blocklogentry' => 'esti käyttäjän tai IP-osoitteen [[$1]]. Eston kesto $2 $3',
'reblock-logentry' => 'muutti käyttäjän tai IP-osoitteen [[$1]] eston asetuksia. Eston kesto $2 $3',
-'blocklogtext' => 'Tämä on loki muokkausestoista ja niiden purkamisista. Automaattisesti estettyjä IP-osoitteita ei kirjata. Tutustu [[Special:IPBlockList|estolistaan]] nähdäksesi listan tällä hetkellä voimassa olevista estoista.',
+'blocklogtext' => 'Tämä on loki muokkausestoista ja niiden purkamisista. Automaattisesti estettyjä IP-osoitteita ei kirjata. Tutustu [[Special:BlockList|estolistaan]] nähdäksesi listan tällä hetkellä voimassa olevista estoista.',
'unblocklogentry' => 'poisti käyttäjältä $1 muokkauseston',
'block-log-flags-anononly' => 'vain kirjautumattomat käyttäjät',
'block-log-flags-nocreate' => 'tunnusten luonti estetty',
@@ -2434,9 +2503,9 @@ Alla on ote häivytyslokista.',
'ipb_expiry_temp' => 'Piilotettujen käyttäjätunnusten estojen tulee olla pysyviä.',
'ipb_hide_invalid' => 'Tämän tunnuksen piilottaminen ei onnistu. Sillä saattaa olla liikaa muokkauksia.',
'ipb_already_blocked' => 'â€$1†on jo estetty.',
-'ipb-needreblock' => '== Estetty jo ==
-$1 on jo estetty. Haluatko muuttaa eston asetuksia?',
+'ipb-needreblock' => '$1 on jo estetty. Haluatko muuttaa eston asetuksia?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Muu esto|Muut estot}}',
+'unblock-hideuser' => 'Et voi poistaa estoa tältä käyttäjältä, kun käyttäjänimi on piilotettuna.',
'ipb_cant_unblock' => 'Estoa â€$1†ei löytynyt. Se on saatettu poistaa.',
'ipb_blocked_as_range' => 'IP-osoite $1 on estetty välillisesti ja sen estoa ei voi poistaa. Se on estetty osana verkkoaluetta $2, jonka eston voi poistaa',
'ip_range_invalid' => 'Virheellinen IP-alue.',
@@ -2469,6 +2538,7 @@ $1 on jo estetty. Haluatko muuttaa eston asetuksia?',
'unlockdbsuccesstext' => 'Tietokanta on vapautettu.',
'lockfilenotwritable' => 'Tietokannan lukitustiedostoa ei voi kirjoittaa. Tarkista oikeudet.',
'databasenotlocked' => 'Tietokanta ei ole lukittu.',
+'lockedbyandtime' => '(lukinnut {{GENDER:$1|$1}} $2 kello $3)',
# Move page
'move-page' => 'Sivun $1 siirto',
@@ -2585,7 +2655,7 @@ Sivujen koko historian vienti on estetty suorituskykysyistä.',
'allmessagesdefault' => 'Oletusarvo',
'allmessagescurrent' => 'Nykyinen arvo',
'allmessagestext' => 'Tämä on luettelo järjestelmäviesteistä, jotka ovat saatavilla MediaWiki-nimiavaruudessa.
-Jos haluat muokata MediaWikin yleistä kotoistusta, käy [http://www.mediawiki.org/wiki/Localisation MediaWikin kotoistussivuilla] ja sivustolla [http://translatewiki.net translatewiki.net].',
+Jos haluat muokata MediaWikin yleistä kotoistusta, käy [//www.mediawiki.org/wiki/Localisation MediaWikin kotoistussivuilla] ja sivustolla [//translatewiki.net translatewiki.net].',
'allmessagesnotsupportedDB' => 'Tämä sivu ei ole käytössä, koska <tt>$wgUseDatabaseMessages</tt>-asetus on pois päältä.',
'allmessages-filter-legend' => 'Suodata',
'allmessages-filter' => 'Suodata muutosten perusteella',
@@ -2625,7 +2695,7 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
'import-revision-count' => '$1 {{PLURAL:$1|versio|versiota}}',
'importnopages' => 'Ei tuotavia sivuja.',
'imported-log-entries' => 'Tuotu $1 {{PLURAL:$1|lokitapahtuma|lokitapahtumaa}}.',
-'importfailed' => 'Tuonti epäonnistui: $1',
+'importfailed' => 'Tuonti epäonnistui: <nowiki>$1</nowiki>',
'importunknownsource' => 'Tuntematon lähdetyyppi',
'importcantopen' => 'Tuontitiedoston avaus epäonnistui',
'importbadinterwiki' => 'Kelpaamaton wikienvälinen linkki',
@@ -2648,9 +2718,9 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
# Import log
'importlogpage' => 'Tuontiloki',
'importlogpagetext' => 'Loki toisista wikeistä tuoduista sivuista.',
-'import-logentry-upload' => 'toi sivun â€[[$1]]†lähettämällä tiedoston',
+'import-logentry-upload' => 'toi sivun [[$1]] lähettämällä tiedoston',
'import-logentry-upload-detail' => '{{PLURAL:$1|yksi versio|$1 versiota}}',
-'import-logentry-interwiki' => 'toi toisesta wikistä sivun â€$1â€',
+'import-logentry-interwiki' => 'toi toisesta wikistä sivun $1',
'import-logentry-interwiki-detail' => '{{PLURAL:$1|yksi versio|$1 versiota}} wikistä $2',
# Tooltip help for the actions
@@ -2680,8 +2750,8 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
'tooltip-search-go' => 'Siirry sivulle, joka on tarkalleen tällä nimellä',
'tooltip-search-fulltext' => 'Etsi sivuilta tätä tekstiä',
'tooltip-p-logo' => 'Etusivu',
-'tooltip-n-mainpage' => 'Mene etusivulle',
-'tooltip-n-mainpage-description' => 'Mene etusivulle',
+'tooltip-n-mainpage' => 'Siirry etusivulle',
+'tooltip-n-mainpage-description' => 'Siirry etusivulle',
'tooltip-n-portal' => 'Keskustelua projektista',
'tooltip-n-currentevents' => 'Taustatietoa tämänhetkisistä tapahtumista',
'tooltip-n-recentchanges' => 'Lista tuoreista muutoksista',
@@ -2733,9 +2803,7 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
'modern.js' => '/* Tämän sivun JavaScript-koodi liitetään Moderni-tyyliin */',
# Metadata
-'nodublincore' => 'Dublin Core RDF-metatieto on poissa käytöstä tällä palvelimella.',
-'nocreativecommons' => 'Creative Commonsin RDF-metatieto on poissa käytöstä tällä palvelimella.',
-'notacceptable' => 'Wikipalvelin ei voi näyttää tietoja muodossa, jota ohjelmasi voisi lukea.',
+'notacceptable' => 'Wikipalvelin ei voi näyttää tietoja muodossa, jota ohjelmasi voisi lukea.',
# Attribution
'anonymous' => '{{GRAMMAR:genitive|{{SITENAME}}}} {{PLURAL:$1|anonyymi käyttäjä|anonyymit käyttäjät}}',
@@ -2758,12 +2826,17 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
'spam_blanking' => 'Kaikki versiot sisälsivät linkkejä kohteeseen $1. Sivu tyhjennetty.',
# Info page
-'infosubtitle' => 'Tietoja sivusta',
-'numedits' => 'Sivun muokkausten määrä: $1',
-'numtalkedits' => 'Keskustelusivun muokkausten määrä: $1',
-'numwatchers' => 'Tarkkailijoiden määrä: $1',
-'numauthors' => 'Sivun erillisten kirjoittajien määrä: $1',
-'numtalkauthors' => 'Keskustelusivun erillisten kirjoittajien määrä: $1',
+'pageinfo-title' => 'Tietoja sivusta $1',
+'pageinfo-header-edits' => 'Muokkaukset',
+'pageinfo-header-watchlist' => 'Tarkkailulista',
+'pageinfo-header-views' => 'Näyttökerrat',
+'pageinfo-subjectpage' => 'Sivu',
+'pageinfo-talkpage' => 'Keskustelusivu',
+'pageinfo-watchers' => 'Tarkkailijoiden lukumäärä',
+'pageinfo-edits' => 'Muokkausten lukumäärä',
+'pageinfo-authors' => 'Eri tekijöiden lukumäärä',
+'pageinfo-views' => 'Katselukertojen määrä',
+'pageinfo-viewsperedit' => 'Katseluita per muokkaus',
# Skin names
'skinname-standard' => 'Perus',
@@ -2775,25 +2848,6 @@ Tallenna tiedot koneellesi ja tuo ne tällä sivulla.',
'skinname-simple' => 'Yksinkertainen',
'skinname-modern' => 'Moderni',
-# Math options
-'mw_math_png' => 'Näytä aina PNG:nä',
-'mw_math_simple' => 'Näytä HTML:nä, jos yksinkertainen, muuten PNG:nä',
-'mw_math_html' => 'Näytä HTML:nä, jos mahdollista, muuten PNG:nä',
-'mw_math_source' => 'Näytä TeX-muodossa (tekstiselaimille)',
-'mw_math_modern' => 'Suositus nykyselaimille',
-'mw_math_mathml' => 'Näytä MathML:nä jos mahdollista (kokeellinen)',
-
-# Math errors
-'math_failure' => 'Jäsentäminen epäonnistui',
-'math_unknown_error' => 'Tuntematon virhe',
-'math_unknown_function' => 'Tuntematon funktio',
-'math_lexing_error' => 'Tulkintavirhe',
-'math_syntax_error' => 'Jäsennysvirhe',
-'math_image_error' => 'Muuntaminen PNG-tiedostomuotoon epäonnistui; tarkista, että latex ja dvipng (tai dvips, gs ja convert) on asennettu oikein.',
-'math_bad_tmpdir' => 'Matematiikan kirjoittaminen väliaikaishakemistoon tai tiedostonluonti ei onnistu',
-'math_bad_output' => 'Matematiikan tulostehakemistoon kirjoittaminen tai tiedostonluonti ei onnistu',
-'math_notexvc' => 'Texvc-sovellus puuttuu, lue math/READMEstä asennustietoja',
-
# Patrolling
'markaspatrolleddiff' => 'Merkitse tarkastetuksi',
'markaspatrolledtext' => 'Merkitse muokkaus tarkastetuksi',
@@ -2829,22 +2883,25 @@ $1',
'nextdiff' => 'Uudempi muutos →',
# Media information
-'mediawarning' => "'''Varoitus''': Tämä tiedostomuoto saattaa sisältää vahingollista koodia.
+'mediawarning' => "'''Varoitus''': Tämä tiedostomuoto saattaa sisältää vahingollista koodia.
Suorittamalla sen järjestelmäsi voi muuttua epäluotettavaksi.",
-'imagemaxsize' => 'Kuvien enimmäiskoko kuvaussivuilla',
-'thumbsize' => 'Pikkukuvien koko',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|sivu|sivua}}',
-'file-info' => '$1, MIME-tyyppi: $2',
-'file-info-size' => '$1×$2 px, $3, MIME-tyyppi: $4',
-'file-nohires' => '<small>Tarkempaa kuvaa ei ole saatavilla.</small>',
-'svg-long-desc' => 'SVG-tiedosto; oletustarkkuus $1×$2 kuvapistettä; tiedostokoko $3',
-'show-big-image' => 'Korkeatarkkuuksinen versio',
-'show-big-image-thumb' => '<small>Esikatselun koko: $1×$2 px</small>',
-'file-info-gif-looped' => 'toistuva',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|kehys|kehystä}}',
-'file-info-png-looped' => 'toistuva',
-'file-info-png-repeat' => 'toistettu $1 {{PLURAL:$1|kertaa|kertaa}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|kehys|kehystä}}',
+'imagemaxsize' => 'Kuvien enimmäiskoko kuvaussivuilla',
+'thumbsize' => 'Pienoiskuvien koko',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|sivu|sivua}}',
+'file-info' => '$1, MIME-tyyppi: $2',
+'file-info-size' => '$1×$2 kuvapistettä, $3, MIME-tyyppi: $4',
+'file-info-size-pages' => '$1×$2 kuvapistettä, tiedoston koko $3, MIME-tyyppi $4, $5 {{PLURAL:$5|sivu|sivua}}',
+'file-nohires' => '<small>Tarkempaa kuvaa ei ole saatavilla.</small>',
+'svg-long-desc' => 'SVG-tiedosto; oletustarkkuus $1×$2 kuvapistettä; tiedostokoko $3',
+'show-big-image' => 'Korkeatarkkuuksinen versio',
+'show-big-image-preview' => '<small>Tämän esikatselun koko: $1.</small>',
+'show-big-image-other' => '<small>Muut resoluutiot: $1.</small>',
+'show-big-image-size' => '$1×$2 kuvapistettä',
+'file-info-gif-looped' => 'toistuva',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|kehys|kehystä}}',
+'file-info-png-looped' => 'toistuva',
+'file-info-png-repeat' => 'toistettu $1 {{PLURAL:$1|kertaa|kertaa}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|kehys|kehystä}}',
# Special:NewFiles
'newimages' => 'Uudet tiedostot',
@@ -2870,14 +2927,20 @@ Kaikki muut linkit ovat poikkeuksia eli toisin sanoen sivuja, joissa tiedostoa s
'metadata-help' => 'Tämä tiedosto sisältää esimerkiksi kuvanlukijan, digikameran tai kuvankäsittelyohjelman lisäämiä lisätietoja. Kaikki tiedot eivät enää välttämättä vastaa todellisuutta, jos kuvaa on muokattu sen alkuperäisen luonnin jälkeen.',
'metadata-expand' => 'Näytä kaikki sisältökuvaukset',
'metadata-collapse' => 'Näytä vain tärkeimmät sisältökuvaukset',
-'metadata-fields' => 'Seuraavat kentät ovat esillä kuvasivulla, kun sisältötietotaulukko on pienennettynä.
+'metadata-fields' => 'Seuraavat metatietojen kentät ovat esillä kuvasivulla, kun sisältötietotaulukko on pienennettynä. Muut kentät ovat oletuksena piilotettuja.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Leveys',
@@ -2892,13 +2955,11 @@ Kaikki muut linkit ovat poikkeuksia eli toisin sanoen sivuja, joissa tiedostoa s
'exif-ycbcrpositioning' => 'Y:n ja C:n asemointi',
'exif-xresolution' => 'Kuvan resoluutio leveyssuunnassa',
'exif-yresolution' => 'Kuvan resoluutio korkeussuunnassa',
-'exif-resolutionunit' => 'Resoluution yksikkö X- ja Y-suunnassa',
'exif-stripoffsets' => 'Kuvatiedon sijainti',
'exif-rowsperstrip' => 'Kaistan rivien lukumäärä',
'exif-stripbytecounts' => 'Tavua pakatussa kaistassa',
'exif-jpeginterchangeformat' => 'Etäisyys JPEG SOI:hin',
'exif-jpeginterchangeformatlength' => 'JPEG-tiedon tavujen lukumäärä',
-'exif-transferfunction' => 'Siirtofunktio',
'exif-whitepoint' => 'Valkoisen pisteen väriarvot',
'exif-primarychromaticities' => 'Päävärien väriarvot',
'exif-ycbcrcoefficients' => 'Väriavaruuden muuntomatriisin kertoimet',
@@ -2917,7 +2978,6 @@ Kaikki muut linkit ovat poikkeuksia eli toisin sanoen sivuja, joissa tiedostoa s
'exif-compressedbitsperpixel' => 'Kuvan pakkaustapa',
'exif-pixelydimension' => 'Kuvan leveys',
'exif-pixelxdimension' => 'Kuvan korkeus',
-'exif-makernote' => 'Valmistajan merkinnät',
'exif-usercomment' => 'Käyttäjän kommentit',
'exif-relatedsoundfile' => 'Liitetty äänitiedosto',
'exif-datetimeoriginal' => 'Luontipäivämäärä',
@@ -2931,7 +2991,6 @@ Kaikki muut linkit ovat poikkeuksia eli toisin sanoen sivuja, joissa tiedostoa s
'exif-exposureprogram' => 'Valotusohjelma',
'exif-spectralsensitivity' => 'Värikirjoherkkyys',
'exif-isospeedratings' => 'Herkkyys (ISO)',
-'exif-oecf' => 'Optoelektroninen muuntokerroin',
'exif-shutterspeedvalue' => 'APEX-suljinaika',
'exif-aperturevalue' => 'APEX-aukko',
'exif-brightnessvalue' => 'APEX-kirkkaus',
@@ -2944,7 +3003,6 @@ Kaikki muut linkit ovat poikkeuksia eli toisin sanoen sivuja, joissa tiedostoa s
'exif-focallength' => 'Linssin polttoväli',
'exif-subjectarea' => 'Kohteen ala',
'exif-flashenergy' => 'Salaman teho',
-'exif-spatialfrequencyresponse' => 'Tilataajuusvaste',
'exif-focalplanexresolution' => 'Tarkennustason X-resoluutio',
'exif-focalplaneyresolution' => 'Tarkennustason Y-resoluutio',
'exif-focalplaneresolutionunit' => 'Tarkennustason resoluution yksikkö',
@@ -2953,7 +3011,6 @@ Kaikki muut linkit ovat poikkeuksia eli toisin sanoen sivuja, joissa tiedostoa s
'exif-sensingmethod' => 'Mittausmenetelmä',
'exif-filesource' => 'Tiedostolähde',
'exif-scenetype' => 'Kuvatyyppi',
-'exif-cfapattern' => 'CFA-kuvio',
'exif-customrendered' => 'Muokattu kuvankäsittely',
'exif-exposuremode' => 'Valotustapa',
'exif-whitebalance' => 'Valkotasapaino',
@@ -2998,10 +3055,79 @@ Kaikki muut linkit ovat poikkeuksia eli toisin sanoen sivuja, joissa tiedostoa s
'exif-gpsareainformation' => 'GPS-alueen nimi',
'exif-gpsdatestamp' => 'GPS-päivämäärä',
'exif-gpsdifferential' => 'GPS-differentiaalikorjaus',
+'exif-jpegfilecomment' => 'JPEG-tiedoston kommentti',
+'exif-keywords' => 'Avainsanat',
+'exif-worldregioncreated' => 'Maailmanosa, jossa kuva on otettu',
+'exif-countrycreated' => 'Maa, jossa kuva on otettu',
+'exif-countrycodecreated' => 'Maakoodi, jossa kuva on otettu',
+'exif-provinceorstatecreated' => 'Maakunta tai osavaltio, jossa kuva on otettu',
+'exif-citycreated' => 'Kaupunki, jossa kuva on otettu',
+'exif-sublocationcreated' => 'Sijainti kaupungissa, jossa kuva otettiin',
+'exif-worldregiondest' => 'Kuvan maailmanosa',
+'exif-countrydest' => 'Kuvan maa',
+'exif-countrycodedest' => 'Kuvan maan maatunnus',
+'exif-provinceorstatedest' => 'Kuvan provinssi tai osavaltio',
+'exif-citydest' => 'Kuvan kaupunki',
+'exif-sublocationdest' => 'Sijainti kuvan kaupungissa',
'exif-objectname' => 'Lyhyt otsikko',
+'exif-specialinstructions' => 'Erityiset ohjeet',
+'exif-headline' => 'Otsikko',
+'exif-credit' => 'Tekijä/toimittaja',
+'exif-source' => 'Lähde',
+'exif-editstatus' => 'Kuvan toimituksellinen asema',
+'exif-urgency' => 'Kiireellisyys',
+'exif-fixtureidentifier' => 'Asetelman nimi',
+'exif-locationdest' => 'Kuvattu sijainti',
+'exif-locationdestcode' => 'Kuvatun sijainnin sijaintikoodi',
+'exif-objectcycle' => 'Päivän aika, jolloin median näyttö on suositeltavaa',
+'exif-contact' => 'Yhteystiedot',
+'exif-writer' => 'Kirjoittaja',
+'exif-languagecode' => 'Kieli',
+'exif-iimversion' => 'IIM:n versio',
+'exif-iimcategory' => 'Luokka',
+'exif-iimsupplementalcategory' => 'Täydentävät luokat',
+'exif-datetimeexpires' => 'Viimeinen käyttöpäivämäärä',
+'exif-datetimereleased' => 'Julkaistu',
+'exif-originaltransmissionref' => 'Alkuperäisen lähetyspaikan tunnus',
+'exif-identifier' => 'Tunniste',
+'exif-lens' => 'Objektiivi',
+'exif-serialnumber' => 'Kameran sarjanumero',
+'exif-cameraownername' => 'Kameran omistaja',
+'exif-label' => 'Merkinnät',
+'exif-datetimemetadata' => 'Metatietojen viimeinen muokkauspäivämäärä',
+'exif-nickname' => 'Kuvan epävirallinen nimi',
+'exif-rating' => 'Arvostelu (enintään 5)',
+'exif-rightscertificate' => 'Oikeuksien hallintasertifikaatti',
+'exif-copyrighted' => 'Tekijänoikeudellinen tila',
+'exif-copyrightowner' => 'Tekijänoikeuden haltija',
+'exif-usageterms' => 'Käyttöehdot',
+'exif-webstatement' => 'Verkossa oleva tekijänoikeustieto',
+'exif-originaldocumentid' => 'Alkuperäisen asiakirjan tunnusnumero',
+'exif-licenseurl' => 'Tekijänoikeuslisenssin URL',
+'exif-morepermissionsurl' => 'Vaihtoehtoiset lisenssitiedot',
+'exif-attributionurl' => 'Kun kuvaa käytetään, linkitä tähän osoitteeseen',
+'exif-preferredattributionname' => 'Kun kuvaa käytetään, mainitse nämä henkilöt',
+'exif-pngfilecomment' => 'PNG-tiedoston kommentti',
+'exif-disclaimer' => 'Vastuuvapauslauseke',
+'exif-contentwarning' => 'Sisältövaroitus',
+'exif-giffilecomment' => 'GIF-tiedoston kommentti',
+'exif-intellectualgenre' => 'Kohteen tyyppi',
+'exif-subjectnewscode' => 'Aihekoodi',
+'exif-scenecode' => 'IPTC-kohtauskoodi',
+'exif-event' => 'Kuvan tapahtuma',
+'exif-organisationinimage' => 'Kuvan organisaatio',
+'exif-personinimage' => 'Kuvan henkilö',
+'exif-originalimageheight' => 'Kuvan korkeus ennen kuin sitä rajattiin',
+'exif-originalimagewidth' => 'Kuvan leveys ennen kuin sitä rajattiin',
# EXIF attributes
'exif-compression-1' => 'Pakkaamaton',
+'exif-compression-2' => 'CCITT:n Group 3 -yksiulotteinen muokattu Huffman-ajopituuskoodaus',
+'exif-compression-3' => 'CCITT:n Group 3 -faksipakkaus',
+'exif-compression-4' => 'CCITT:n Group 4 -faksipakkaus',
+
+'exif-copyrighted-true' => 'Tekijänoikeuksien alainen',
+'exif-copyrighted-false' => 'Vapaasti käytettävä',
'exif-unknowndate' => 'Tuntematon päiväys',
@@ -3017,6 +3143,8 @@ Kaikki muut linkit ovat poikkeuksia eli toisin sanoen sivuja, joissa tiedostoa s
'exif-planarconfiguration-1' => 'kokkaremuoto',
'exif-planarconfiguration-2' => 'litteämuoto',
+'exif-colorspace-65535' => 'Kalibroimaton',
+
'exif-componentsconfiguration-0' => 'ei ole',
'exif-exposureprogram-0' => 'Ei määritelty',
@@ -3130,6 +3258,10 @@ Kaikki muut linkit ovat poikkeuksia eli toisin sanoen sivuja, joissa tiedostoa s
'exif-gpslongitude-e' => 'Itäistä pituutta',
'exif-gpslongitude-w' => 'Läntistä pituutta',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metri|metriä}} merenpinnan yläpuolella',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metri|metriä}} merenpinnan alapuolella',
+
'exif-gpsstatus-a' => 'Mittaus käynnissä',
'exif-gpsstatus-v' => 'Ristiinmittaus',
@@ -3141,21 +3273,73 @@ Kaikki muut linkit ovat poikkeuksia eli toisin sanoen sivuja, joissa tiedostoa s
'exif-gpsspeed-m' => 'mailia tunnissa',
'exif-gpsspeed-n' => 'solmua',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometriä',
+'exif-gpsdestdistance-m' => 'Mailia',
+'exif-gpsdestdistance-n' => 'Merimailia',
+
+'exif-gpsdop-excellent' => 'Erinomainen ($1)',
+'exif-gpsdop-good' => 'Hyvä ($1)',
+'exif-gpsdop-moderate' => 'Tyydyttävä ($1)',
+'exif-gpsdop-fair' => 'Välttävä ($1)',
+'exif-gpsdop-poor' => 'Huono ($1)',
+
+'exif-objectcycle-a' => 'vain aamulla',
+'exif-objectcycle-p' => 'Vain illalla',
+'exif-objectcycle-b' => 'Sekä aamulla että illalla',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Todellinen suunta',
'exif-gpsdirection-m' => 'Magneettinen suunta',
+'exif-ycbcrpositioning-1' => 'Keskitetty',
+'exif-ycbcrpositioning-2' => 'Rinnakkaissivuinen',
+
+'exif-dc-contributor' => 'Osallistujat',
+'exif-dc-coverage' => 'Median avaruudellinen ja ajallinen ulottuvuus',
+'exif-dc-date' => 'Päivämäärä(t)',
+'exif-dc-publisher' => 'Julkaisija',
+'exif-dc-relation' => 'Katso myös',
+'exif-dc-rights' => 'Oikeudet',
+'exif-dc-source' => 'Lähdemedia',
+'exif-dc-type' => 'Median tyyppi',
+
+'exif-rating-rejected' => 'Hylätty',
+
+'exif-isospeedratings-overflow' => 'Suurempi kuin 65535',
+
+'exif-iimcategory-ace' => 'Taide, kulttuuri ja viihde',
+'exif-iimcategory-clj' => 'Rikos ja oikeus',
+'exif-iimcategory-dis' => 'Katastrofit ja onnettomuudet',
+'exif-iimcategory-fin' => 'Talous ja liiketoiminta',
+'exif-iimcategory-edu' => 'Koulutus',
+'exif-iimcategory-evn' => 'Ympäristö',
+'exif-iimcategory-hth' => 'Terveys',
+'exif-iimcategory-hum' => 'Ihmisten kiinnostus',
+'exif-iimcategory-lab' => 'Työnteko',
+'exif-iimcategory-lif' => 'Elämäntapa ja vapaa-aika',
+'exif-iimcategory-pol' => 'Politiikka',
+'exif-iimcategory-rel' => 'Uskonto ja usko',
+'exif-iimcategory-sci' => 'Tiede ja tekniikka',
+'exif-iimcategory-soi' => 'Sosiaaliset kysymykset',
+'exif-iimcategory-spo' => 'Urheilu',
+'exif-iimcategory-war' => 'Sota, konflikti ja levottomuus',
+'exif-iimcategory-wea' => 'Sää',
+
+'exif-urgency-normal' => 'Tavallinen ($1)',
+'exif-urgency-low' => 'Matala ($1)',
+'exif-urgency-high' => 'Korkea ($1)',
+'exif-urgency-other' => 'Käyttäjän määrittelemä prioriteetti ($1)',
+
# External editor support
'edit-externally' => 'Muokkaa tätä tiedostoa ulkoisessa sovelluksessa',
-'edit-externally-help' => '(Katso [http://www.mediawiki.org/wiki/Manual:External_editors ohjeet], jos haluat lisätietoja.)',
+'edit-externally-help' => '(Katso [//www.mediawiki.org/wiki/Manual:External_editors ohjeet], jos haluat lisätietoja.)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'kaikki',
-'imagelistall' => 'kaikki',
-'watchlistall2' => ', koko historia',
-'namespacesall' => 'kaikki',
-'monthsall' => 'kaikki',
-'limitall' => 'kaikki',
+'watchlistall2' => ', koko historia',
+'namespacesall' => 'kaikki',
+'monthsall' => 'kaikki',
+'limitall' => 'kaikki',
# E-mail address confirmation
'confirmemail' => 'Varmenna sähköpostiosoite',
@@ -3170,7 +3354,8 @@ Kaikki muut linkit ovat poikkeuksia eli toisin sanoen sivuja, joissa tiedostoa s
Postitusohjelma palautti: $1',
'confirmemail_invalid' => 'Varmennuskoodi ei kelpaa. Koodi on voinut vanhentua.',
'confirmemail_needlogin' => 'Sinun täytyy $1, jotta voisit varmistaa sähköpostiosoitteesi.',
-'confirmemail_success' => 'Sähköpostiosoitteesi on nyt varmennettu. Voit kirjautua sisään.',
+'confirmemail_success' => 'Sähköpostiosoitteesi on nyt varmennettu.
+Voit [[Special:UserLogin|kirjautua sisään]].',
'confirmemail_loggedin' => 'Sähköpostiosoitteesi on nyt varmennettu.',
'confirmemail_error' => 'Jokin epäonnistui varmennuksen tallentamisessa.',
'confirmemail_subject' => '{{GRAMMAR:genitive|{{SITENAME}}}} sähköpostiosoitteen varmennus',
@@ -3223,11 +3408,13 @@ $1',
'trackbackdeleteok' => 'Trackback poistettiin.',
# Delete conflict
-'deletedwhileediting' => "'''Varoitus''': Tämä sivu on poistettu sen jälkeen, kun aloitit sen muokkaamisen!",
-'confirmrecreate' => "Käyttäjä '''[[User:$1|$1]]''' ([[User talk:$1|keskustelu]]) on poistanut sivun sen jälkeen, kun aloit muokata sitä. Syy oli:
+'deletedwhileediting' => "'''Varoitus''': Tämä sivu on poistettu sen jälkeen, kun aloitit sen muokkaamisen!",
+'confirmrecreate' => "Käyttäjä '''[[User:$1|$1]]''' ([[User talk:$1|keskustelu]]) on poistanut sivun sen jälkeen, kun aloit muokata sitä. Syy oli:
: ''$2''
Varmista, että haluat luoda sivun uudelleen.",
-'recreate' => 'Luo uudelleen',
+'confirmrecreate-noreason' => "Käyttäjä '''[[User:$1|$1]]''' ([[User talk:$1|keskustelu]]) on poistanut tämän sivun sen jälkeen, kun aloit muokata sitä.
+Varmista, että haluat luoda sivun uudelleen.",
+'recreate' => 'Luo uudelleen',
'unit-pixel' => ' px',
@@ -3236,6 +3423,12 @@ Varmista, että haluat luoda sivun uudelleen.",
'confirm-purge-top' => 'Poistetaanko tämän sivun välimuistikopiot?',
'confirm-purge-bottom' => 'Välimuistikopioiden poistaminen tyhjentää välimuistin ja pakottaa sivun uusimman version näkyviin.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Lisätäänkö tämä sivu tarkkailulistallesi?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Poistetaanko tämä sivu tarkkailulistaltasi?',
+
# Separators for various lists, etc.
'percent' => '$1&nbsp;%',
@@ -3285,14 +3478,14 @@ Yritä normaalia esikatselua.',
'watchlistedit-noitems' => 'Tarkkailulistasi on tyhjä.',
'watchlistedit-normal-title' => 'Tarkkailulistan muokkaus',
'watchlistedit-normal-legend' => 'Sivut',
-'watchlistedit-normal-explain' => 'Tarkkailulistasi sivut on lueteltu alla. Voit poistaa sivuja valitsemalla niitä vastaavat valintaruudut ja napsauttamalla â€{{int:Watchlistedit-normal-submit}}â€. Voit myös muokata listaa [[Special:Watchlist/raw|tekstimuodossa]].',
+'watchlistedit-normal-explain' => 'Tarkkailulistasi sivut on lueteltu alla. Voit poistaa sivuja valitsemalla niitä vastaavat valintaruudut ja napsauttamalla â€{{int:Watchlistedit-normal-submit}}â€. Voit myös muokata listaa [[Special:EditWatchlist/raw|tekstimuodossa]].',
'watchlistedit-normal-submit' => 'Poista',
'watchlistedit-normal-done' => '{{PLURAL:$1|Yksi sivu|$1 sivua}} poistettiin tarkkailulistaltasi:',
'watchlistedit-raw-title' => 'Tarkkailulistan muokkaus',
'watchlistedit-raw-legend' => 'Tarkkailulistan muokkaus',
'watchlistedit-raw-explain' => 'Tarkkailulistasi sivut on lueteltu alla jokainen omalla rivillään. Voit muokata listaa lisäämällä ja poistamalla rivejä.
Kun olet valmis, napsauta â€{{int:Watchlistedit-raw-submit}}â€.
-Voit myös muokata listaa [[Special:Watchlist/edit|tavalliseen tapaan]].',
+Voit myös muokata listaa [[Special:EditWatchlist|tavalliseen tapaan]].',
'watchlistedit-raw-titles' => 'Sivut',
'watchlistedit-raw-submit' => 'Päivitä tarkkailulista',
'watchlistedit-raw-done' => 'Tarkkailulistasi on päivitetty.',
@@ -3306,36 +3499,36 @@ Voit myös muokata listaa [[Special:Watchlist/edit|tavalliseen tapaan]].',
# Core parser functions
'unknown_extension_tag' => 'Tuntematon laajennuskoodi â€$1â€.',
-'duplicate-defaultsort' => 'Varoitus: Oletuslajitteluavain â€$2†korvaa aiemman oletuslajitteluavaimen â€$1â€.',
+'duplicate-defaultsort' => "'''Varoitus:''' Oletuslajitteluavain â€$2†korvaa aiemman oletuslajitteluavaimen â€$1â€.",
# Special:Version
-'version' => 'Versio',
-'version-extensions' => 'Asennetut laajennukset',
-'version-specialpages' => 'Toimintosivut',
-'version-parserhooks' => 'Jäsenninkytkökset',
-'version-variables' => 'Muuttujat',
-'version-skins' => 'Ulkoasut',
-'version-other' => 'Muut',
-'version-mediahandlers' => 'Median käsittelijät',
-'version-hooks' => 'Kytköspisteet',
-'version-extension-functions' => 'Laajennusfunktiot',
-'version-parser-extensiontags' => 'Jäsentimen laajennustagit',
-'version-parser-function-hooks' => 'Jäsentimen laajennusfunktiot',
-'version-skin-extension-functions' => 'Ulkoasun laajennusfunktiot',
-'version-hook-name' => 'Kytköspisteen nimi',
-'version-hook-subscribedby' => 'Kytkökset',
-'version-version' => '(Versio $1)',
-'version-license' => 'Lisenssi',
-'version-poweredby-credits' => "Tämä wiki käyttää '''[http://www.mediawiki.org/ MediaWikiä]'''. Copyright © 2001–$1 $2.",
-'version-poweredby-others' => 'muut',
-'version-license-info' => 'MediaWiki on vapaa ohjelmisto – voit levittää sitä ja/tai muokata sitä Free Software Foundationin GNU General Public Licensen ehdoilla, joko version 2 tai halutessasi mikä tahansa myöhemmän version mukaisesti.
+'version' => 'Versio',
+'version-extensions' => 'Asennetut laajennukset',
+'version-specialpages' => 'Toimintosivut',
+'version-parserhooks' => 'Jäsenninkytkökset',
+'version-variables' => 'Muuttujat',
+'version-antispam' => 'Roskapostin ja mainoslinkkien estäminen',
+'version-skins' => 'Ulkoasut',
+'version-other' => 'Muut',
+'version-mediahandlers' => 'Median käsittelijät',
+'version-hooks' => 'Kytköspisteet',
+'version-extension-functions' => 'Laajennusfunktiot',
+'version-parser-extensiontags' => 'Jäsentimen laajennustagit',
+'version-parser-function-hooks' => 'Jäsentimen laajennusfunktiot',
+'version-hook-name' => 'Kytköspisteen nimi',
+'version-hook-subscribedby' => 'Kytkökset',
+'version-version' => '(Versio $1)',
+'version-license' => 'Lisenssi',
+'version-poweredby-credits' => "Tämä wiki käyttää '''[//www.mediawiki.org/ MediaWikiä]'''. Copyright © 2001–$1 $2.",
+'version-poweredby-others' => 'muut',
+'version-license-info' => 'MediaWiki on vapaa ohjelmisto – voit levittää sitä ja/tai muokata sitä Free Software Foundationin GNU General Public Licensen ehdoilla, joko version 2 tai halutessasi mikä tahansa myöhemmän version mukaisesti.
MediaWikiä levitetään siinä toivossa, että se olisi hyödyllinen, mutta ilman mitään takuuta; ilman edes hiljaista takuuta kaupallisesti hyväksyttävästä laadusta tai soveltuvuudesta tiettyyn tarkoitukseen. Katso GPL-lisenssistä lisää yksityiskohtia.
-Sinun olisi pitänyt saada [{{SERVER}}{{SCRIPTPATH}}/COPYING kopio GNU General Public Licensestä] tämän ohjelman mukana. Jos et saanut kopiota, kirjoita siitä osoitteeseen Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA tai [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html lue se Internetissä].',
-'version-software' => 'Asennettu ohjelmisto',
-'version-software-product' => 'Tuote',
-'version-software-version' => 'Versio',
+Sinun olisi pitänyt saada [{{SERVER}}{{SCRIPTPATH}}/COPYING kopio GNU General Public Licensestä] tämän ohjelman mukana. Jos et saanut kopiota, kirjoita siitä osoitteeseen Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA tai [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lue se Internetissä].',
+'version-software' => 'Asennettu ohjelmisto',
+'version-software-product' => 'Tuote',
+'version-software-version' => 'Versio',
# Special:FilePath
'filepath' => 'Tiedoston osoite',
@@ -3345,22 +3538,22 @@ Sinun olisi pitänyt saada [{{SERVER}}{{SCRIPTPATH}}/COPYING kopio GNU General P
Kuvat näytetään täysikokoisina. Muut tiedostot avataan niille määritetyssä ohjelmassa.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Kaksoiskappaleiden haku',
-'fileduplicatesearch-summary' => 'Etsii tiedoston kaksoiskappaleita hajautusarvon perusteella.
-
-Kirjoita tiedostonimi ilman â€{{ns:file}}:â€-etuliitettä.',
-'fileduplicatesearch-legend' => 'Etsi kaksoiskappaleita',
-'fileduplicatesearch-filename' => 'Tiedostonimi',
-'fileduplicatesearch-submit' => 'Etsi',
-'fileduplicatesearch-info' => '$1×$2 kuvapistettä<br />Tiedostokoko: $3<br />MIME-tyyppi: $4',
-'fileduplicatesearch-result-1' => 'Tiedostolla â€$1†ei ole identtisiä kaksoiskappaleita.',
-'fileduplicatesearch-result-n' => 'Tiedostolla â€$1†on {{PLURAL:$2|yksi identtinen kaksoiskappale|$2 identtistä kaksoiskappaletta}}.',
+'fileduplicatesearch' => 'Kaksoiskappaleiden haku',
+'fileduplicatesearch-summary' => 'Etsii tiedoston kaksoiskappaleita hajautusarvon perusteella.',
+'fileduplicatesearch-legend' => 'Etsi kaksoiskappaleita',
+'fileduplicatesearch-filename' => 'Tiedostonimi',
+'fileduplicatesearch-submit' => 'Etsi',
+'fileduplicatesearch-info' => '$1×$2 kuvapistettä<br />Tiedostokoko: $3<br />MIME-tyyppi: $4',
+'fileduplicatesearch-result-1' => 'Tiedostolla â€$1†ei ole identtisiä kaksoiskappaleita.',
+'fileduplicatesearch-result-n' => 'Tiedostolla â€$1†on {{PLURAL:$2|yksi identtinen kaksoiskappale|$2 identtistä kaksoiskappaletta}}.',
+'fileduplicatesearch-noresults' => 'Tiedostoa nimeltä â€$1†ei löytynyt.',
# Special:SpecialPages
'specialpages' => 'Toimintosivut',
'specialpages-note' => '----
* Normaalit toimintosivut.
-* <strong class="mw-specialpagerestricted">Rajoitetut toimintosivut.</strong>',
+* <span class="mw-specialpagerestricted">Rajoitetut toimintosivut.</span>
+* <span class="mw-specialpagecached">Välimuistia käyttävät toimintosivut (saattavat olla vanhentuneita).</span>',
'specialpages-group-maintenance' => 'Ylläpito',
'specialpages-group-other' => 'Muut',
'specialpages-group-login' => 'Kirjautuminen ja tunnusten luonti',
diff --git a/languages/messages/MessagesFo.php b/languages/messages/MessagesFo.php
index c2b97de5..b6d3ce21 100644
--- a/languages/messages/MessagesFo.php
+++ b/languages/messages/MessagesFo.php
@@ -8,6 +8,7 @@
* @file
*
* @author Diupwijk
+ * @author EileenSanda
* @author Krun
* @author Quackor
* @author S.Örvarr.S
@@ -62,50 +63,50 @@ $dateFormats = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Tvífaldað ávísing' ),
+ 'Allmessages' => array( 'Øll kervisboð' ),
+ 'Allpages' => array( 'Allar síður' ),
+ 'Ancientpages' => array( 'Elstu síður' ),
+ 'Block' => array( 'Banna brúkara' ),
+ 'Booksources' => array( 'Bóka keldur' ),
'BrokenRedirects' => array( 'Brotnar ávísingar' ),
+ 'Categories' => array( 'Bólkar' ),
+ 'Contributions' => array( 'Brúkaraíkast' ),
+ 'Deadendpages' => array( 'Gøtubotns síður' ),
'Disambiguations' => array( 'Síður við fleirfaldum týdningi' ),
- 'Userlogin' => array( 'Stovna kontu ella rita inn' ),
- 'Userlogout' => array( 'Rita út' ),
- 'Preferences' => array( 'Innstillingar' ),
- 'Watchlist' => array( 'Mítt eftirlit' ),
- 'Recentchanges' => array( 'Seinastu broytingar' ),
- 'Upload' => array( 'Legg fílu upp' ),
+ 'DoubleRedirects' => array( 'Tvífaldað ávísing' ),
+ 'Emailuser' => array( 'Send t-post til brúkara' ),
+ 'Export' => array( 'Útflutningssíður' ),
+ 'Fewestrevisions' => array( 'Greinir við minst útgávum' ),
+ 'BlockList' => array( 'Bannað brúkaranøvn og IP-adressur' ),
'Listfiles' => array( 'Myndalisti' ),
- 'Newimages' => array( 'Nýggjar myndir' ),
'Listusers' => array( 'Brúkaralisti' ),
- 'Statistics' => array( 'Hagtøl' ),
- 'Randompage' => array( 'Tilvildarlig síða' ),
'Lonelypages' => array( 'Foreldraleysar síður' ),
- 'Uncategorizedpages' => array( 'Óbólkaðar síður' ),
+ 'Longpages' => array( 'Langar síður' ),
+ 'Mostcategories' => array( 'Greinir við flest bólkum' ),
+ 'Mostrevisions' => array( 'Greinir við flest útgávum' ),
+ 'Movepage' => array( 'Flyt síðu' ),
+ 'Newimages' => array( 'Nýggjar myndir' ),
+ 'Newpages' => array( 'Nýggjar síður' ),
+ 'Preferences' => array( 'Innstillingar' ),
+ 'Randompage' => array( 'Tilvildarlig síða' ),
+ 'Recentchanges' => array( 'Seinastu broytingar' ),
+ 'Search' => array( 'Leita' ),
+ 'Shortpages' => array( 'Stuttar síður' ),
+ 'Specialpages' => array( 'Serligar síður' ),
+ 'Statistics' => array( 'Hagtøl' ),
'Uncategorizedcategories' => array( 'Óbólkaðir bólkar' ),
'Uncategorizedimages' => array( 'Óbólkaðar myndir' ),
+ 'Uncategorizedpages' => array( 'Óbólkaðar síður' ),
'Uncategorizedtemplates' => array( 'Óbólkaðar fyrimyndir' ),
+ 'Undelete' => array( 'Endurstovna strikaðar síður' ),
'Unusedcategories' => array( 'Óbrúktir bólkar' ),
'Unusedimages' => array( 'Óbrúktar myndir' ),
- 'Wantedpages' => array( 'Ynsktar síður' ),
- 'Mostcategories' => array( 'Greinir við flest bólkum' ),
- 'Mostrevisions' => array( 'Greinir við flest útgávum' ),
- 'Fewestrevisions' => array( 'Greinir við minst útgávum' ),
- 'Shortpages' => array( 'Stuttar síður' ),
- 'Longpages' => array( 'Langar síður' ),
- 'Newpages' => array( 'Nýggjar síður' ),
- 'Ancientpages' => array( 'Elstu síður' ),
- 'Deadendpages' => array( 'Gøtubotns síður' ),
- 'Allpages' => array( 'Allar síður' ),
- 'Ipblocklist' => array( 'Bannað brúkaranøvn og IP-adressur' ),
- 'Specialpages' => array( 'Serligar síður' ),
- 'Contributions' => array( 'Brúkaraíkast' ),
- 'Emailuser' => array( 'Send t-post til brúkara' ),
- 'Movepage' => array( 'Flyt síðu' ),
- 'Booksources' => array( 'Bóka keldur' ),
- 'Categories' => array( 'Bólkar' ),
- 'Export' => array( 'Útflutningssíður' ),
+ 'Upload' => array( 'Legg fílu upp' ),
+ 'Userlogin' => array( 'Stovna kontu ella rita inn' ),
+ 'Userlogout' => array( 'Rita út' ),
'Version' => array( 'Útgáva' ),
- 'Allmessages' => array( 'Øll kervisboð' ),
- 'Blockip' => array( 'Banna brúkara' ),
- 'Undelete' => array( 'Endurstovna strikaðar síður' ),
- 'Search' => array( 'Leita' ),
+ 'Wantedpages' => array( 'Ynsktar síður' ),
+ 'Watchlist' => array( 'Mítt eftirlit' ),
);
$linkTrail = '/^([áðíóúýæøa-z]+)(.*)$/sDu';
@@ -116,34 +117,53 @@ $messages = array(
'tog-highlightbroken' => 'Brúka reyða ávísing til tómar síður',
'tog-justify' => 'Stilla greinpart',
'tog-hideminor' => 'Goym minni broytingar í seinast broytt listanum',
-'tog-extendwatchlist' => 'Víðkað eftirlit',
-'tog-usenewrc' => 'víðka seinastu broytingar lista (ikki til alla kagarar)',
+'tog-extendwatchlist' => 'Víðka eftirlitslistan fyri at vísa allar broytingar, ikki bara tær seinastu',
+'tog-usenewrc' => 'Nýt betraðar seinastu broytingar (krevur JavaScript)',
'tog-numberheadings' => 'Sjálvtalmerking av yvirskrift',
'tog-showtoolbar' => 'Vís amboðslinju í rætting',
'tog-editondblclick' => 'Rætta síðu við at tvíklikkja (JavaScript)',
'tog-editsection' => 'Rætta greinpart við hjálp av [rætta]-ávísing',
'tog-editsectiononrightclick' => 'Rætta greinpart við at høgraklikkja á yvirskrift av greinparti (JavaScript)',
'tog-showtoc' => 'Vís innihaldsyvurlit (Til greinir við meira enn trimun greinpartum)',
-'tog-rememberpassword' => 'Minst til loyniorð næstu ferð (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'tog-rememberpassword' => 'Minst til loyniorð á hesum kaga (í mesta lagi $1 {{PLURAL:$1|dag|dagar}})',
'tog-watchcreations' => 'Legg síður, sum eg stovni, í mítt eftirlit',
'tog-watchdefault' => 'Vaka yvur nýggjum og broyttum greinum',
+'tog-watchmoves' => 'Legg síður afturat, sum eg havi valt afturat mínum eftirkanningarlista.',
'tog-minordefault' => 'Merk sum standard allar broytingar sum smærri',
'tog-previewontop' => 'Vís forhondsvísning áðren rættingarkassan',
'tog-previewonfirst' => 'Sýn forskoðan við fyrstu broyting',
-'tog-nocache' => 'Minst ikki til síðurnar til næstu ferð',
-'tog-fancysig' => 'Rá undirskrift (uttan sjálvvirkandi slóð)',
-'tog-externaleditor' => 'Nýt útvortis ritil sum fyrimynd',
-'tog-externaldiff' => 'Nýt útvortis diff sum fyrimynd',
+'tog-nocache' => 'Deaktivera síðu "caching" í brovsaranum',
+'tog-enotifwatchlistpages' => 'Send mær teldupost, tá ein síða á mínum eftirlitslista er broytt',
+'tog-enotifusertalkpages' => 'Send mær teldubræv, tá mín brúarasíða er broytt',
+'tog-enotifminoredits' => 'Send mær eisini teldupost viðvíkjandi smærri broytingum á síðunum',
+'tog-enotifrevealaddr' => 'Avdúkað mína teldupost adressu í fráboðanar teldupostum',
+'tog-shownumberswatching' => 'Vís tal av brúkarum sum fylgja við',
+'tog-oldsig' => 'Verandi undirskrift:',
+'tog-fancysig' => 'Viðgerð undirskriftina sum wikitekstur (uttan sjálvvirkandi leinkju)',
+'tog-externaleditor' => 'Nýt útvortis ritil sum fyrimynd (bert fyri fólk við serkunnleika, tað er tørvur á serligum innstillingum á tínari teldu. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaldiff' => 'Nýt útvortis diff sum fyrimynd (bert fyri serfrøðingar, tín telda tørvar serligar innstillingar. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
'tog-showjumplinks' => 'Ger "far til"-tilgongd virkna',
+'tog-uselivepreview' => 'Nýt "live preview" (tørvar JavaScript) (á royndarstøði)',
'tog-forceeditsummary' => 'Gev mær boð, um eg ikki havi skrivað ein samandrátt um mína rætting',
'tog-watchlisthideown' => 'Fjal mínar rættingar frá eftirliti',
'tog-watchlisthidebots' => 'Fjal bot rættingar frá eftirliti',
'tog-watchlisthideminor' => 'Fjal minni rættingar frá eftirliti',
+'tog-watchlisthideliu' => 'Goym broytingar sum eru gjørdar av brúkarum, sum eru loggaðir á, frá hyggjaralistanum',
+'tog-watchlisthideanons' => 'Goym broytingar sum eru gjørdar av dulnevndum brúkarum frá hyggjaralistanum',
+'tog-watchlisthidepatrolled' => 'Fjal eftirhugdar broytingar frá eftirlitslistanum',
+'tog-ccmeonemails' => 'Send mær avrit av teldubrøvum, sum eg sendi til aðrir brúkarar',
+'tog-diffonly' => 'Vís ikki innihaldið av síðuni undir diffs',
+'tog-showhiddencats' => 'Vís goymdir bólkar',
+'tog-norollbackdiff' => 'Síggj burtur frá diff eftir eina afturrulling',
'underline-always' => 'Altíð',
'underline-never' => 'Ongantíð',
'underline-default' => 'Kagarastandard',
+# Font style option in Special:Preferences
+'editfont-style' => 'Rættað økið typografi:',
+'editfont-default' => 'Kagi (brovsari) standard',
+
# Dates
'sunday' => 'sunnudagur',
'monday' => 'mánadagur',
@@ -197,14 +217,17 @@ $messages = array(
'dec' => 'des',
# Categories related messages
-'pagecategories' => '{{PLURAL:$1|Bólkur|Bólkar}}',
-'category_header' => 'Greinir í bólki "$1"',
-'subcategories' => 'Undirbólkur',
-'category-media-header' => 'Media í bólkur "$1"',
-'category-empty' => "''Hesin bólkur inniheldur ongar greinir ella miðlar í løtuni.''",
-'listingcontinuesabbrev' => 'frh.',
-
-'mainpagetext' => "'''Innlegging av Wiki-ritbúnaði væleydnað.'''",
+'pagecategories' => '{{PLURAL:$1|Bólkur|Bólkar}}',
+'category_header' => 'Greinir í bólki "$1"',
+'subcategories' => 'Undirbólkur',
+'category-media-header' => 'Media í bólkur "$1"',
+'category-empty' => "''Hesin bólkur inniheldur ongar greinir ella miðlar í løtuni.''",
+'hidden-categories' => '{{PLURAL:$1|Hidden category|Fjaldir bólkar}}',
+'hidden-category-category' => 'Fjaldir bólkar',
+'category-subcat-count' => '{{PLURAL:$2|Hesin bólkur hevur bert henda undirbólk.|Hesin bólkur hevur fylgjandi {{PLURAL:$1|undirbólk|$1 undirbólkar}}, av $2 í alt.}}',
+'category-subcat-count-limited' => 'Hesin bólkur hevur fylgjandi {{PLURAL:$1|undirbólk|$1 undirbólkar}}.',
+'listingcontinuesabbrev' => 'frh.',
+'broken-file-category' => 'Síður við brotnum fílu slóðum',
'about' => 'Um',
'article' => 'Innihaldssíða',
@@ -241,6 +264,7 @@ $messages = array(
'vector-view-view' => 'Les',
'vector-view-viewsource' => 'Vís keldu',
'namespaces' => 'Navnarúm',
+'variants' => 'Ymisk sløg',
'errorpagetitle' => 'Villa',
'returnto' => 'Vend aftur til $1.',
@@ -252,33 +276,37 @@ $messages = array(
'searcharticle' => 'Far',
'history' => 'Síðusøga',
'history_short' => 'Søga',
-'info_short' => 'Upplýsingar',
+'updatedmarker' => 'dagført síðan mína seinastu vitjan',
'printableversion' => 'Prentvinarlig útgáva',
'permalink' => 'Støðug slóð',
'print' => 'Prenta',
+'view' => 'Les',
'edit' => 'Rætta',
'create' => 'Stovna',
'editthispage' => 'Rætta hesa síðuna',
'create-this-page' => 'Stovna hesa síðuna',
'delete' => 'Strika',
'deletethispage' => 'Strika hesa síðuna',
+'undelete_short' => 'Ógilda striking av {{PLURAL:$1|broyting|$1 broytingar}}',
+'viewdeleted_short' => 'Vís {{PLURAL:$1|eina strikaða broyting|$1 strikaðar broytingar}}',
'protect' => 'Friða',
+'protect_change' => 'broyt',
'protectthispage' => 'Friða hesa síðuna',
'unprotect' => 'Broyt friðing',
-'unprotectthispage' => 'Ófriða hesa síðuna',
+'unprotectthispage' => 'Broyt verju av hesi síðu',
'newpage' => 'Nýggj síða',
'talkpage' => 'Kjakast um hesa síðuna',
'talkpagelinktext' => 'Kjak',
'specialpage' => 'Serlig síða',
'personaltools' => 'Persónlig amboð',
-'postcomment' => 'Skriva eina viðmerking',
+'postcomment' => 'Nýtt brot',
'articlepage' => 'Skoða innihaldssíðuna',
'talk' => 'Kjak',
'views' => 'Skoðanir',
'toolbox' => 'Amboð',
'userpage' => 'Vís brúkarisíðu',
'projectpage' => 'Vís verkætlanarsíðu',
-'imagepage' => 'Vís myndasíðu',
+'imagepage' => 'Vís síðu við fílum',
'mediawikipage' => 'Vís kervisboðsíðu',
'templatepage' => 'Vís fyrimyndsíðu',
'viewhelppage' => 'Vís hjálpsíðu',
@@ -288,10 +316,19 @@ $messages = array(
'redirectedfrom' => '(Ãvíst frá $1)',
'redirectpagesub' => 'Ãvísingarsíða',
'lastmodifiedat' => 'Hendan síðan var seinast broytt $2, $1.',
+'viewcount' => 'Onkur hevur verið á hesi síðu {{PLURAL:$1|eina ferð|$1 ferðir}}.',
'protectedpage' => 'Friðað síða',
'jumpto' => 'Far til:',
'jumptonavigation' => 'navigatión',
'jumptosearch' => 'leita',
+'view-pool-error' => 'Haldið okkum til góðar, servarnir hava ov nógv at gera í løtuni.
+Ov nógvir brúkarir royna at síggja hesa síðuna.
+Vinarliga bíða eina løtu, áðrenn tú roynir enn einaferð at fáa atgongd til hesa síðuna.
+
+$1',
+'pool-timeout' => 'Støðgur bíða verður eftir lásinum',
+'pool-queuefull' => 'Køin til "hylin" er full',
+'pool-errorunknown' => 'Ókend 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}}',
@@ -313,7 +350,9 @@ $messages = array(
'privacy' => 'Handfaring av persónligum upplýsingum',
'privacypage' => 'Project:Handfaring av persónligum upplýsingum',
-'badaccess' => 'Loyvisbrek',
+'badaccess' => 'Loyvisbrek',
+'badaccess-group0' => 'Tú hevur ikki loyvi til at útføra hatta sum tú hevur biðið um.',
+'badaccess-groups' => 'Tað sum tú hevur biðið um at sleppa at gera er avmarkað til brúrkarar í {{PLURAL:$2|bólkinum|einum av bólkunum}}: $1.',
'ok' => 'Ã lagi',
'retrievedfrom' => 'Heinta frá "$1"',
@@ -330,6 +369,8 @@ $messages = array(
'toc' => 'Innihaldsyvirlit',
'showtoc' => 'skoða',
'hidetoc' => 'fjal',
+'collapsible-collapse' => 'Samanbrot',
+'collapsible-expand' => 'Víðka',
'thisisdeleted' => 'Sí ella endurstovna $1?',
'viewdeleted' => 'Vís $1?',
'restorelink' => '{{PLURAL:$1|strikaða rætting|$1 strikaðar rættingar}}',
@@ -337,12 +378,13 @@ $messages = array(
'site-rss-feed' => '$1 RSS Fóðurið',
'site-atom-feed' => '$1 Atom Fóðurið',
'page-rss-feed' => '"$1" RSS Feed',
+'red-link-title' => '$1 (síðan er ikki til)',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Grein',
'nstab-user' => 'Brúkarasíða',
'nstab-media' => 'Miðil',
-'nstab-special' => 'Serstøk',
+'nstab-special' => 'Serstøk síða',
'nstab-project' => 'Verkætlanarsíða',
'nstab-image' => 'Mynd',
'nstab-mediawiki' => 'Grein',
@@ -352,38 +394,44 @@ $messages = array(
# Main script and global functions
'nosuchaction' => 'Ongin slík gerð',
-'nosuchactiontext' => 'Gerðin, ið tilskilað er í url, er ikki
-afturkend av wiki',
+'nosuchactiontext' => "Gerðin, ið tilskilað er í url, virkar ikki.
+Møguliga hevur tú stava urlin skeivt, ella fylgt einari skeivari leinkju.
+Hetta kann eisini benda á ein feil í software'ini sum {{SITENAME}} brúkar.",
'nosuchspecialpage' => 'Ongin slík serlig síða',
'nospecialpagetext' => '<strong>Tú hevur biðið um eina serliga síðu, sum wiki ikki kennir aftur.</strong>
<!-- A list of valid special pages can be found at [[Special:SpecialPages]]. -->',
# General errors
-'error' => 'Villa',
-'databaseerror' => 'Villa í dátagrunni',
-'internalerror' => 'Innvortis brek',
-'filecopyerror' => 'Kundi ikki avrita fíluna "$1" til "$2".',
-'filerenameerror' => 'Kundi ikki umdoypa fílu "$1" til "$2".',
-'filedeleteerror' => 'Kundi ikki strika fíluna "$1".',
-'filenotfound' => 'Kundi ikki finna fílu "$1".',
-'badarticleerror' => 'Hendan gerðin kann ikki fremjast á hesi síðu.',
-'cannotdelete' => 'Síðan ella myndin kundi ikki strikast. (Møguliga hevur onkur annar longu strikað hana.)',
-'badtitle' => 'Ógyldugt heiti',
-'badtitletext' => 'Umbidna síðan er ógyldugt, tómt ella skeivt tilslóðað heiti millum mál ella wikur.',
-'perfcachedts' => 'Fylgjandi dáta er goymt, og var seinast goymt $1.',
-'viewsource' => 'Vís keldu',
-'viewsourcefor' => 'fyri $1',
-'protectedpagetext' => 'Hendan síða er læst fyri at steðga rættingum.',
-'viewsourcetext' => 'Tú kanst síggja og avrita kelduna til hesa grein:',
+'error' => 'Villa',
+'databaseerror' => 'Villa í dátagrunni',
+'internalerror' => 'Innvortis brek',
+'filecopyerror' => 'Kundi ikki avrita fíluna "$1" til "$2".',
+'filerenameerror' => 'Kundi ikki umdoypa fílu "$1" til "$2".',
+'filedeleteerror' => 'Kundi ikki strika fíluna "$1".',
+'filenotfound' => 'Kundi ikki finna fílu "$1".',
+'badarticleerror' => 'Hendan gerðin kann ikki fremjast á hesi síðu.',
+'cannotdelete' => 'Síðan ella fílan $1 kundi ikki strikast.
+Møguliga hevur onkur annar longu strikað hana.',
+'badtitle' => 'Ógyldugt heiti',
+'badtitletext' => 'Umbidna síðan er ógyldugt, tómt ella skeivt tilslóðað heiti millum mál ella wikur.',
+'perfcached' => 'Fylgjandi upplýsingar eru "cached" og eru møguliga ikki dagførdir.',
+'perfcachedts' => 'Fylgjandi dáta er goymt, og var seinast goymt $1.',
+'viewsource' => 'Vís keldu',
+'viewsourcefor' => 'fyri $1',
+'protectedpagetext' => 'Hendan síða er læst fyri at steðga rættingum.',
+'viewsourcetext' => 'Tú kanst síggja og avrita kelduna til hesa grein:',
+'namespaceprotected' => 'Tú hevur ikki loyvi til at rætta síður í $1 navnateiginum.',
+'customcssprotected' => 'Tú hevur ikki loyvi til at rætta hesa CSS síðuna, tí hon inniheldur persónligar innstillingar hjá øðrum brúkara.',
+'customjsprotected' => 'Tú hevur ikki loyvir til at rætta hesa JavaScript síðuna, tí hon inniheldur persónligar innstillingar hjá øðrum brúkara.',
+'ns-specialprotected' => 'Serstakar síður kunnu ikki rættast.',
+'titleprotected' => '[[User:$1|$1]] hevur vart hetta heitið frá skapan.
+Givin orsøk er "\'\'$2\'\'".',
# Login and logout pages
'logouttext' => "'''Tú hevur nú ritað út.'''
-
-Tú kanst halda áfram at nýta {{SITENAME}} dulnevnt.
-Ella kanst tú rita inn aftur sum sami ella annar brúkari.
-Legg til merkis at summar síður kunnu framhaldandi síggja út
-sum tú hevur ritað inn til goymslan í sneytara tínum er ruddað.",
+Tú kanst halda fram at brúka {{SITENAME}} sum dulnevndur, ella kanst tú [[Special:UserLogin|logga á aftur]] sum sami ella sum annar brúkari.
+Legg til merkis, at summar síður framvegis vera vístar, sum um tú enn vart loggaður á, til tú hevur reinsa tín brovsara fyri \"cache\".",
'welcomecreation' => '== Vælkomin, $1! ==
Tín konta er nú stovnað.
@@ -391,7 +439,9 @@ Gloym ikki at broyta tínar [[Special:Preferences|{{SITENAME}} innstillingar]].'
'yourname' => 'Títt brúkaranavn:',
'yourpassword' => 'Títt loyniorð:',
'yourpasswordagain' => 'Skriva loyniorð umaftur:',
-'remembermypassword' => 'Minst til loyniorðið hjá mær (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'remembermypassword' => 'Minst til logg inn hjá mær á hesum kaganum (í mesta lagi í $1 {{PLURAL:$1|dag|dagar}})',
+'securelogin-stick-https' => 'Varðveit sambandið við HTTPS eftir logg inn',
+'yourdomainname' => 'Títt domene:',
'login' => 'Rita inn',
'nav-login-createaccount' => 'Stovna kontu ella rita inn',
'loginprompt' => 'Cookies má verða sett til fyri at innrita á {{SITENAME}}.',
@@ -405,33 +455,59 @@ Gloym ikki at broyta tínar [[Special:Preferences|{{SITENAME}} innstillingar]].'
'createaccount' => 'Stovna nýggja kontu',
'gotaccount' => "Hevur tú longu eina kontu? '''$1'''.",
'gotaccountlink' => 'Rita inn',
+'userlogin-resetlink' => 'Hevur tú gloymt tínar logg inn upplýsingar',
'createaccountmail' => 'eftur t-posti',
+'createaccountreason' => 'Orsøk:',
'badretype' => 'Loyniorðið tú hevur skriva er ikki rætt.',
'loginerror' => 'Innritanarbrek',
'noname' => 'Tú hevur ikki skrivað eitt gyldugt brúkaranavn.',
'loginsuccesstitle' => 'Innritan væleydnað',
'loginsuccess' => "'''Tú hevur nú ritað inn í {{SITENAME}} sum \"\$1\".'''",
-'nosuchuser' => 'Eingin brúkari er við navninum "$1". Kanna stavseting ella nýt frymilin niðanfyri til at stovna nýggja kontu.',
-'nosuchusershort' => 'Eingin brúkari er við navninum "<nowiki>$1</nowiki>". Kanna stavseting.',
+'nosuchuser' => 'Eingin brúkari er við navninum "$1".
+Brúkaranøvn eru følsom fyri stórum og lítlum bókstavum.
+Eftirkanna um tú hevur stavað rætt, ella [[Special:UserLogin/signup|stovna eina nýggja konto]].',
+'nosuchusershort' => 'Eingin brúkari er við navninum "$1". Kanna stavseting.',
+'nouserspecified' => 'Tú mást skriva eitt brúkaranavn.',
+'login-userblocked' => 'Hesin brúkarin er blokkaður. Tað er ikki loyvt at logga á.',
'wrongpassword' => 'Loyniorðið, sum tú skrivaði, er skeivt. Vinaliga royn aftur.',
'wrongpasswordempty' => 'Loyniorð manglar. Vinarliga royn aftur.',
-'mailmypassword' => 'Send mær eitt nýtt loyniorð',
-'passwordremindertitle' => 'Loyniorðsámining frá {{SITENAME}}',
+'passwordtooshort' => 'Loyniorð mugu vera í minsta lagi {{PLURAL:$1|1 bókstav, tal, tekn|$1 bókstavir, tøl og tekn}}.',
+'password-name-match' => 'Loyniorðið hjá tær má vera annarleiðis enn títt brúkaranavn.',
+'password-login-forbidden' => 'Tað er ikki loyvt at brúka hetta brúkaranavnið og loyniorðið.',
+'mailmypassword' => 'Send mær eitt nýtt loyniorð við t-posti',
+'passwordremindertitle' => 'Nýtt fyribils loyniorð fyri {{SITENAME}}',
'passwordsent' => 'Eitt nýtt loyniorð er sent til t-postadressuna,
sum er skrásett fyri "$1".
Vinarliga rita inn eftir at tú hevur fingið hana.',
-'acct_creation_throttle_hit' => 'Tíverri hevur tú longu stovnað $1 kontur. Tú kanst ikki stovna fleiri.',
-'emailauthenticated' => 'Tín t-post adressa fekk gildi $1.',
+'acct_creation_throttle_hit' => 'Vitjandi á hesi wiki, sum nýta tína IP addressu, hava stovnað {{PLURAL:$1|1 kontu|$1 kontur}} seinastu dagarnar, sum er mest loyvda hetta tíðarskeið.
+Sum eitt úrslit av hesum, kunnu vitjandi sum brúka hesa IP adressuna ikki stovna fleiri kontur í løtuni.',
+'emailauthenticated' => 'Tín t-post adressa varð váttað hin $2 kl. $3.',
'emailnotauthenticated' => 'Tín t-post adressa er enn ikki komin í gildi. Ongin t-postur
verður sendur fyri nakað av fylgjandi hentleikum.',
'emailconfirmlink' => 'Vátta tína t-post adressu',
'accountcreated' => 'Konto upprættað',
'loginlanguagelabel' => 'Mál: $1',
-# Password reset dialog
-'oldpassword' => 'Gamalt loyniorð:',
-'newpassword' => 'Nýtt loyniorð:',
-'retypenew' => 'Skriva nýtt loyniorð umaftur:',
+# Change password dialog
+'resetpass' => 'Broyt loyniorð',
+'resetpass_announce' => 'Tú ritaði inn við einum fyribils loyniorði, sum tú hevur fingið við telduposti.
+Fyri at gera innritanina lidna, mást tú velja tær eitt nýtt loyniorð her:',
+'resetpass_header' => 'Broyt loyniorði á kontuni',
+'oldpassword' => 'Gamalt loyniorð:',
+'newpassword' => 'Nýtt loyniorð:',
+'retypenew' => 'Skriva nýtt loyniorð umaftur:',
+'resetpass_submit' => 'Vel loyniorð og rita inn',
+'resetpass_success' => 'Tað hevur eydnast tær at broyta títt loyniorð!
+Nú verður tú ritaður inn...',
+'resetpass_forbidden' => 'Loyniorð kunnu ikki broytast',
+'resetpass-no-info' => 'Tú mást vera loggaður á fyri at fáa beinleiðis atgongd til hesa síðu.',
+'resetpass-submit-loggedin' => 'Broyt loyniorð',
+'resetpass-submit-cancel' => 'Ógildað',
+
+# Special:PasswordReset
+'passwordreset-emailelement' => 'Brúkaranavn: $1
+Fyribils loyniorð: $2',
+'passwordreset-emailsent' => 'Ein áminningar teldupostur er blivin sendur.',
# Edit page toolbar
'bold_sample' => 'Feitir stavir',
@@ -444,13 +520,12 @@ verður sendur fyri nakað av fylgjandi hentleikum.',
'extlink_tip' => 'Útvortis slóð (minst til http:// forskoytið)',
'headline_sample' => 'Yvirskriftartekstur',
'headline_tip' => 'Annars stigs yvirskrift',
-'math_sample' => 'Set formil her',
-'math_tip' => 'Støddfrøðiligur formil (LaTeX)',
+'nowiki_sample' => 'Skriva ikki-formateraðan tekst her',
'nowiki_tip' => 'Ignorera wiki-forsniðan',
'image_sample' => 'Dømi.jpg',
'image_tip' => 'Innset mynd',
'media_sample' => 'Dømi.ogg',
-'media_tip' => 'Miðlafíluslóð',
+'media_tip' => 'Fílu slóð',
'sig_tip' => 'Tín undirskrift við tíðarstempli',
'hr_tip' => 'Vatnrøtt linja (vera sparin við)',
@@ -466,36 +541,47 @@ verður sendur fyri nakað av fylgjandi hentleikum.',
'showdiff' => 'Sýn broytingar',
'anoneditwarning' => "'''Ãvaring:''' Tú hevur ikki ritað inn.
Tín IP-adressa verður goymd í rættisøguni fyri hesa síðuna.",
+'anonpreviewwarning' => "''Tú ert ikki innritað/ur. Um tú goymir nú, so verður tín IP adressa goymd í rættingar søguni hjá hesi síðu. ''",
'summary-preview' => 'Samandráttaforskoðan:',
'blockedtitle' => 'Brúkarin er bannaður',
'loginreqtitle' => 'Innritan kravd',
'loginreqlink' => 'rita inn',
'accmailtitle' => 'Loyniorð sent.',
-'accmailtext' => 'Loyniorð fyri "$1" er sent til $2.',
+'accmailtext' => "Eitt tilvildarliga valt loyniorð fyri brúkaran [[User talk:$1|$1]] er blivið sent til $2.
+Loyniorðið fyri hesa nýggju kontuna kann verða broytt á ''[[Special:ChangePassword|broyt loyniorð]]'' síðuni tá tú ritar inn.",
'newarticle' => '(Nýggj)',
'newarticletext' => "Tú ert komin eftir eini slóð til eina síðu, ið ikki er til enn. Skriva í kassan niðanfyri, um tú vilt byrja uppá hesa síðuna.
(Sí [[{{MediaWiki:Helppage}}|hjálparsíðuna]] um tú ynskir fleiri upplýsingar).
Ert tú komin higar av einum mistaki, kanst tú trýsta á '''aftur'''-knøttin á kagaranum.",
-'anontalkpagetext' => "----''Hetta er ein kjaksíða hjá einum dulnevndum brúkara, sum ikki hevur stovnað eina kontu enn, ella ikki brúkar hana. Tí noyðast vit at brúka nummerisku IP-adressuna hjá honum ella henni.
+'anontalkpagetext' => "----''Hetta er ein kjaksíða hjá einum dulnevndum brúkara, sum ikki hevur stovnað eina kontu enn, ella ikki brúkar hana.
+Tí noyðast vit at brúka nummerisku IP-adressuna hjá honum ella henni.
Ein slík IP-adressa kann verða brúkt av fleiri brúkarum.
-Ert tú ein dulnevndur brúkari, og kennir, at óvikomandi viðmerkingar eru vendar til tín, so vinarliga [[Special:UserLogin|stovna eina kontu]] fyri at sleppa undan samanblanding við aðrar dulnevndar brúkarar í framtíðini.''",
-'clearyourcache' => "'''Viðmerking:''' Eftir at hava goymt mást tú fara uttanum minnið á sneytara tínum fyri at síggja broytingarnar. '''Mozilla/Safari/Konqueror:''' halt knøttinum ''Shift'' niðri meðan tú trýstir á ''Reload'' (ella trýst ''Ctrl-Shift-R''), '''IE:''' trýst ''Ctrl-F5'', '''Opera:''' trýst F5.",
+Ert tú ein dulnevndur brúkari, og meinar, at óviðkomandi viðmerkingar eru vendar til tín, so er best fyri teg at [[Special:UserLogin/signup|stovna eina kontu]] ella [[Special:UserLogin|rita inn]] fyri at sleppa undan samanblanding við aðrar dulnevndar brúkarar í framtíðini.''",
+'clearyourcache' => "'''Viðmerking:''' Eftir at hava goymt mást tú fara uttanum minnið á sneytara tínum fyri at síggja broytingarnar.
+* '''Firefox / Safari:''' Halt ''Shift'' meðan tú klikkir á ''Reload'', ella trýst antin ''Ctrl-F5'' ella ''Ctrl-R'' (''Command-R'' á einari Mac)
+* '''Google Chrome:''' Trýst ''Ctrl-Shift-R'' (''Command-Shift-R'' á einari Mac)
+* '''Internet Explorer:''' Halt ''Ctrl'' meðan tú trýstir á ''Refresh'', ella trýst á ''Ctrl-F5''
+* '''Konqueror:''' Trýst ''Reload'' ella trýst ''F5''
+* '''Opera:''' Reinsa cache í ''Tools → Preferences''",
'note' => "'''Viðmerking:'''",
'previewnote' => "'''Minst til at hetta bara er ein forskoðan, sum enn ikki er goymd!'''",
'previewconflict' => 'Henda forskoðanin vísir tekstin í erva soleiðis sum hann sær út, um tú velur at goyma.',
'editing' => 'Tú rættar $1',
'editingsection' => 'Tú rættar $1 (partur)',
-'editingcomment' => 'Tú rættar $1 (viðmerking)',
+'editingcomment' => 'Tú rættar $1 (nýtt brot)',
+'editconflict' => 'Rættingar konflikt: $1',
'yourtext' => 'Tín tekstur',
'storedversion' => 'Goymd útgáva',
'yourdiff' => 'Munir',
'copyrightwarning' => "Alt íkast til {{SITENAME}} er útgivið undir $2 (sí $1 fyri smálutir). Vilt tú ikki hava skriving tína broytta miskunnarleyst og endurspjadda frítt, so send hana ikki inn.<br />
Við at senda arbeiði títt inn, lovar tú, at tú hevur skrivað tað, ella at tú hevur avritað tað frá tilfeingi ið er almenn ogn &mdash; hetta umfatar '''ikki''' flestu vevsíður.
'''SEND IKKI UPPHAVSRÆTTARVART TILFAR UTTAN LOYVI!'''",
-'protectedpagewarning' => "'''ÃVARING: Henda síðan er friðað, so at einans brúkarar við umboðsstjóraheimildum kunnu broyta hana.'''",
-'semiprotectedpagewarning' => "'''Viðmerking:''' Hendan grein er læst soleiðis at bert skrásetir brúkaris kunnu rætta hana.",
-'templatesused' => 'Fyrimyndir brúktar á hesu síðu:',
-'templatesusedpreview' => 'Fyrimyndir brúktar í hesari forskoðan:',
+'protectedpagewarning' => "'''Ãvaring: Henda síðan er friðað, so at einans brúkarar við umboðsstjóra heimildum kunnu broyta hana.'''
+Tann seinasta logg inn er goymt niðanfyri fyri ávísing:",
+'semiprotectedpagewarning' => "'''Viðmerking:''' Hendan grein er vard soleiðis at bert skrásetir brúkarar kunnu rætta hana.
+Tann seinasta innritanin er víst niðanfyri sum ávísing:",
+'templatesused' => '{{PLURAL:$1|Fyrimynd|Fyrimyndir}} brúktar á hesu síðu:',
+'templatesusedpreview' => '{{PLURAL:$1|Fyrimynd|Fyrimyndir}} brúktar í hesi forskoðan:',
'template-protected' => '(friðað)',
# History pages
@@ -520,7 +606,10 @@ Við at senda arbeiði títt inn, lovar tú, at tú hevur skrivað tað, ella at
'historyempty' => '(tóm)',
# Revision deletion
-'rev-delundel' => 'skoða/fjal',
+'rev-delundel' => 'skoða/fjal',
+'revdelete-radio-set' => 'Ja',
+'revdelete-radio-unset' => 'Nei',
+'revdelete-suppress' => 'Síggj burtur frá data frá administratorum líka væl sum frá øðrum',
# History merging
'mergehistory-from' => 'Keldusíða:',
@@ -534,13 +623,22 @@ Við at senda arbeiði títt inn, lovar tú, at tú hevur skrivað tað, ella at
# Search results
'searchresults' => 'Leitúrslit',
'searchresulttext' => 'Ynskir tú fleiri upplýsingar um leiting á {{SITENAME}}, kanst tú skoða [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => "Tú leitaði eftur '''[[:$1]]'''",
+'searchsubtitle' => 'Tú leitaði eftur \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|allar síður sum byrja við "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|allar síður sum leinkja til "$1"]])',
'searchsubtitleinvalid' => "Tú leitaði eftur '''$1'''",
+'toomanymatches' => 'Alt ov nógvar úrslit vóru funnin, vinarliga royn aftur við nýggjum fyrispurningi',
+'titlematches' => 'Síðu heiti samsvarar',
'notitlematches' => 'Onki síðuheiti samsvarar',
+'textmatches' => 'Teksturin á síðuni samsvarar',
'notextmatches' => 'Ongin síðutekstur samsvarar',
'prevn' => 'undanfarnu {{PLURAL:$1|$1}}',
'nextn' => 'næstu {{PLURAL:$1|$1}}',
+'prevn-title' => 'Gomul $1 {{PLURAL:$1|úrslit|úrslit}}',
+'nextn-title' => 'Næstu $1 {{PLURAL:$1|úrslit|úrslit}}',
+'shown-title' => 'Vís $1 {{PLURAL:$1|úrslit|úrslit}} á hvørjari síðu',
'viewprevnext' => 'Vís ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-legend' => 'Leiti møguleikar',
+'searchmenu-exists' => "'''Tað er longu ein síða sum eitur \"[[:\$1]]\" á hesi wiki.'''",
+'searchmenu-new' => "'''Stovna síðuna \"[[:\$1]]\" á hesi wiki!'''",
'searchhelp-url' => 'Help:Innihald',
'search-result-size' => '$1 ({{PLURAL:$2|1 orð|$2 orð}})',
'showingresults' => "Niðanfyri standa upp til {{PLURAL:$1|'''$1''' úrslit, sum byrjar|'''$1''' úrslit, sum byrja}} við #<b>$2</b>.",
@@ -555,50 +653,86 @@ Við at senda arbeiði títt inn, lovar tú, at tú hevur skrivað tað, ella at
'qbsettings-floatingleft' => 'Flótandi vinstru',
# Preferences page
-'preferences' => 'Innstillingar',
-'mypreferences' => 'Mínar innstillingar',
-'prefsnologin' => 'Tú hevur ikki ritað inn',
-'changepassword' => 'Broyt loyniorð',
-'prefs-skin' => 'Hamur',
-'skin-preview' => 'Forskoðan',
-'prefs-math' => 'Støddfrøðiligir formlar',
-'prefs-datetime' => 'Dato og tíð',
-'prefs-personal' => 'Brúkaradáta',
-'prefs-rc' => 'Nýkomnar broytingar og stubbaskoðan',
-'prefs-watchlist' => 'Eftirlit',
-'prefs-watchlist-days' => 'Tal av døgum, sum skula vísast í eftirliti:',
-'prefs-watchlist-edits' => 'Tal av rættingum, sum skula vísast í víðkaðum eftirliti:',
-'prefs-misc' => 'Ymiskar innstillingar',
-'saveprefs' => 'Goym innstillingar',
-'resetprefs' => 'Endurset innstillingar',
-'prefs-editing' => 'Broyting av greinum',
-'rows' => 'Røð:',
-'columns' => 'Teigar:',
-'searchresultshead' => 'Leita',
-'resultsperpage' => 'Úrslit fyri hvørja síðu:',
-'contextlines' => 'Linjur fyri hvørt úrslit:',
-'contextchars' => 'Tekin fyri hvørja linju í úrslitinum:',
-'recentchangescount' => 'Heiti í seinastu broytingum:',
-'savedprefs' => 'Tínar innstillingar eru goymdar.',
-'timezonelegend' => 'Lokal tíð',
-'localtime' => 'Lokal klokka',
-'timezoneoffset' => 'Frávik¹',
-'servertime' => 'Ambætaraklokkan er nú',
-'guesstimezone' => 'Fyll út við kagara',
-'allowemail' => 'Tilset t-post frá øðrum brúkarum',
-'defaultns' => 'Leita í hesum navnarúminum sum fyrisett mál:',
-'prefs-files' => 'Fílur',
-'youremail' => 'T-postur (sjálvboðið)*:',
-'username' => 'Brúkaranavn:',
-'uid' => 'Brúkara ID:',
-'yourrealname' => 'Títt navn*:',
-'yourlanguage' => 'Mál til brúkaraflatu:',
-'yournick' => 'Títt eyknevni (til undirskriftir):',
-'yourgender' => 'Kyn:',
-'gender-male' => 'Maður',
-'gender-female' => 'Kvinna',
-'email' => 'T-post',
-'prefs-help-email' => 'T-postur (valfríður): Loyvir øðrum at seta seg í samband við teg gjøgnum brúkara tín ella brúkarakjaksíðu uttan at avdúka samleika tín.',
+'preferences' => 'Innstillingar',
+'mypreferences' => 'Mínar innstillingar',
+'prefsnologin' => 'Tú hevur ikki ritað inn',
+'changepassword' => 'Broyt loyniorð',
+'prefs-skin' => 'Hamur',
+'skin-preview' => 'Forskoðan',
+'prefs-datetime' => 'Dato og tíð',
+'prefs-personal' => 'Brúkaradáta',
+'prefs-rc' => 'Nýkomnar broytingar og stubbaskoðan',
+'prefs-watchlist' => 'Eftirlit',
+'prefs-watchlist-days' => 'Tal av døgum, sum skula vísast í eftirliti:',
+'prefs-watchlist-days-max' => 'Ã mesta lagi 7 dagar',
+'prefs-watchlist-edits' => 'Tal av rættingum, sum skula vísast í víðkaðum eftirliti:',
+'prefs-watchlist-edits-max' => 'Ã mesta lagi: 1000',
+'prefs-misc' => 'Ymiskar innstillingar',
+'prefs-resetpass' => 'Broyt loyniorð',
+'prefs-email' => 'T-post møguleikar',
+'saveprefs' => 'Goym innstillingar',
+'resetprefs' => 'Reinsa ikki goymdar broytingar',
+'restoreprefs' => 'Endurset alt til standard innstillingar',
+'prefs-editing' => 'Broyting av greinum',
+'prefs-edit-boxsize' => 'Støddin á rættingar vindeyganum.',
+'rows' => 'Røð:',
+'columns' => 'Teigar:',
+'searchresultshead' => 'Leita',
+'resultsperpage' => 'Úrslit fyri hvørja síðu:',
+'stub-threshold-disabled' => 'Er gjørt óvirki',
+'recentchangesdays' => 'Dagar av vísa í seinastu broytingum:',
+'recentchangesdays-max' => 'Ã mesta lagi $1 {{PLURAL:$1|dagur|dagar}}',
+'recentchangescount' => 'Tal av rættingum at vísa í standard:',
+'savedprefs' => 'Tínar innstillingar eru goymdar.',
+'timezonelegend' => 'Tíðar sona:',
+'localtime' => 'Lokal tíð:',
+'timezoneuseserverdefault' => 'Nýt wiki standard: ($1)',
+'timezoneoffset' => 'Offset¹:',
+'servertime' => 'Servara tíð:',
+'guesstimezone' => 'Fyll út við kagara',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Amerika',
+'timezoneregion-antarctica' => 'Antarktis',
+'timezoneregion-arctic' => 'Arktisk',
+'timezoneregion-asia' => 'Asia',
+'timezoneregion-atlantic' => 'Atlantarhavið',
+'timezoneregion-australia' => 'Avstralia',
+'timezoneregion-europe' => 'Evropa',
+'timezoneregion-indian' => 'Indiska Havið',
+'timezoneregion-pacific' => 'Stillahavið',
+'allowemail' => 'Tilset t-post frá øðrum brúkarum',
+'prefs-searchoptions' => 'Leiti møguleikar',
+'prefs-namespaces' => 'Navnarúm',
+'defaultns' => 'Um ikki, leita so í hesum navnateigum:',
+'default' => 'standard',
+'prefs-files' => 'Fílur',
+'prefs-custom-css' => 'Tilpassað CSS',
+'prefs-custom-js' => 'Tilpassað JavaScript',
+'youremail' => 'T-postur (sjálvboðið)*:',
+'username' => 'Brúkaranavn:',
+'uid' => 'Brúkara ID:',
+'yourrealname' => 'Títt navn*:',
+'yourlanguage' => 'Mál til brúkaraflatu:',
+'yournick' => 'Nýggj undirskrift:',
+'yourgender' => 'Kyn:',
+'gender-male' => 'Maður',
+'gender-female' => 'Kvinna',
+'email' => 'T-post',
+'prefs-help-realname' => 'Veruligt navn er valfrítt.
+Um tú velur at skriva tað her, so verður tað nýtt til at geva tær æruna fyri títt arbeiði.',
+'prefs-help-email' => 'Tú velur sjálvur, um tú vil skriva tína t-post adressu her, men tað er brúk fyri henni til at nullstilla loyniorðið, um tað skuldi hent, at tú gloymir títt loyniorð.',
+'prefs-help-email-others' => 'Tú kanst eisini velja at lata onnur seta seg í samband við teg við telduposti gjøgnum eina leinkju á tínari brúkara ella kjak síðu.
+Tín t-post adressa verður ikki avdúkað, tá aðrir brúkarir seta seg í samband við teg.',
+'prefs-help-email-required' => 'T-post adressa er kravd.',
+'prefs-info' => 'Grundleggjandi kunning',
+'prefs-advancedediting' => 'Víðkaðir møguleikar',
+'prefs-advancedrc' => 'Víðkaðir møguleikar',
+'prefs-advancedrendering' => 'Víðkaðir møguleikar',
+'prefs-advancedsearchoptions' => 'Víðkaðir møguleikar',
+'prefs-advancedwatchlist' => 'Víðkaðir møguleikar',
+'prefs-displayrc' => 'Vís møguleikar',
+'prefs-displaysearchoptions' => 'Vís møguleikar',
+'prefs-displaywatchlist' => 'Vís møguleikar',
# User rights
'saveusergroups' => 'Goym brúkaraflokk',
@@ -614,9 +748,23 @@ Við at senda arbeiði títt inn, lovar tú, at tú hevur skrivað tað, ella at
'group-sysop-member' => 'Umboðsstjóri',
'group-bureaucrat-member' => 'Embætismaður',
-'grouppage-bot' => '{{ns:project}}:Bottar',
-'grouppage-sysop' => '{{ns:project}}:Umboðsstjórar',
-'grouppage-bureaucrat' => '{{ns:project}}:Embætismenn',
+'grouppage-user' => '{{ns:project}}:Brúkarar',
+'grouppage-autoconfirmed' => '{{ns:project}}:Sjálvvirkandi váttaðir brúkarar',
+'grouppage-bot' => '{{ns:project}}:Bottar',
+'grouppage-sysop' => '{{ns:project}}:Umboðsstjórar',
+'grouppage-bureaucrat' => '{{ns:project}}:Embætismenn',
+'grouppage-suppress' => '{{ns:project}}:Eftirlit',
+
+# Rights
+'right-read' => 'Les síður',
+'right-edit' => 'Rætta síður',
+'right-createpage' => 'Stovna síður (sum ikki eru kjaksíður)',
+'right-createtalk' => 'Stovna kjaksíðu',
+'right-createaccount' => 'Stovna nýggja brúkara kontu',
+'right-minoredit' => 'Markera rættingar sum smáar',
+'right-move' => 'Flyt síður',
+'right-move-subpages' => 'Flyt síður saman við undirsíðum teirra',
+'right-movefile' => 'Flyt fílur',
# Associated actions - in the sentence "You do not have permission to X"
'action-edit' => 'rætta hesa síðuna',
@@ -666,16 +814,23 @@ fyri at leggja fílur upp.',
'badfilename' => 'Myndin er umnevnd til "$1".',
'savefile' => 'Goym fílu',
'uploadedimage' => 'sent "[[$1]]" upp',
-'sourcefilename' => 'Keldufílunavn:',
-'destfilename' => 'Málfílunavn:',
-'watchthisupload' => 'Hav eftirlit við hesi síðuni',
+'sourcefilename' => 'Kelda fílunavn:',
+'sourceurl' => 'Kelda URL:',
+'destfilename' => 'Destinatión fílunavn:',
+'upload-maxfilesize' => 'Fílu støddin má í mesta lagi vera: $1',
+'upload-description' => 'Frágreiðing av fílu',
+'upload-options' => 'Upplótingar møguleikar',
+'watchthisupload' => 'Halt eyga við hesi fílu',
+'filewasdeleted' => 'Ein fíla við hesum heitinum hevur fyrr verið upplóta og er seinni blivin strikað.
+Tú eigur at eftirkanna $1 áðrenn tú heldur á við at upplóta fíluna enn einaferð.',
'upload-success-subj' => 'Upplegging væleydnað',
'upload-file-error' => 'Innvortis brek',
-'license' => 'Loyvi:',
-'license-header' => 'Loyvi:',
-'nolicense' => 'Onki valt',
+'license' => 'Lisensur:',
+'license-header' => 'Lisensur',
+'nolicense' => 'Onki valt',
+'license-nopreview' => '(Fyrr ikki tøkt)',
# Special:ListFiles
'listfiles' => 'Myndalisti',
@@ -726,16 +881,20 @@ fyri at leggja fílur upp.',
'statistics-edits-average' => 'Miðal rættingar pr. síðu',
'statistics-users' => 'Skrásettir [[Special:ListUsers|brúkarir]]',
'statistics-users-active' => 'Virknir brúkarir',
+'statistics-mostpopular' => 'Mest sæddu síður',
'disambiguations' => 'Síður við fleirfaldum týdningi',
'disambiguationspage' => 'Template:fleiri týdningar',
-'doubleredirects' => 'Tvífaldað ávísing',
-'doubleredirectstext' => '<b>Gevið gætur:</b> Hetta yvirlitið kann innihalda skeiv úrslit. Tað merkir vanliga at síðan hevur eyka tekst niðanfyri fyrsta #REDIRECT.<br />
-Hvørt rað inniheldur slóðir til fyrstu og aðru ávísing, umframt tekstin á fyrstu reglu í aðru ávísing, sum vanliga vísir til "veruligu" málsíðuna, sum fyrsta ávísingin eigur at vísa til.',
+'doubleredirects' => 'Tvífaldað ávísing',
+'doubleredirectstext' => 'Henda síða gevur yvirlit yvir síður, sum vísa víðari til aðrar víðaristillaðar síður.
+Hvør linja inniheldur leinkjur til ta fyrstu og næstu víðaristillingina, eins væl og málið fyri tað næstu víðaristillingina, sum vanliga er tann "veruliga" endamáls síðan, sum tann fyrsta víðaristillingin átti at peika móti.
+<del>Útkrossaðir</del> postar eru loystir.',
+'double-redirect-fixed-move' => '[[$1]] er blivin flutt.
+Víðaristilling verður nú gjørd til [[$2]].',
'brokenredirects' => 'Brotnar ávísingar',
-'brokenredirectstext' => 'Hesar ávísingarnar slóða til síður, ið ikki eru til.',
+'brokenredirectstext' => 'Hesar víðaristillingar slóða til síður, ið ikki eru til:',
'brokenredirects-edit' => 'rætta',
'brokenredirects-delete' => 'strika',
@@ -772,7 +931,8 @@ Hvørt rað inniheldur slóðir til fyrstu og aðru ávísing, umframt tekstin Ã
'ancientpages' => 'Elstu síður',
'move' => 'Flyt',
'movethispage' => 'Flyt hesa síðuna',
-'unusedimagestext' => 'Vinarliga legg merki til, at vevsíður kunnu slóða til eina mynd við beinleiðis URL, so hon kann síggjast her hóast at hon er í regluligari nýtslu.',
+'unusedimagestext' => 'Fylgjandi fílur eru til, men eru ikki lagdar inn á nakra síðu.
+Vinarliga legg merki til, at vevsíður kunnu slóða til eina fílu við beinleiðis URL, og tí kann hon enn síggjast her, hóast at hon er í regluligari nýtslu.',
'notargettitle' => 'Onki mál',
# Book sources
@@ -783,9 +943,9 @@ Hvørt rað inniheldur slóðir til fyrstu og aðru ávísing, umframt tekstin Ã
'specialloguserlabel' => 'Brúkari:',
'speciallogtitlelabel' => 'Heitið:',
'log' => 'Gerðabøkur',
-'all-logs-page' => 'Allar gerðabøkur',
-'alllogstext' => 'Samansett sýning av upplegging, striking, friðing, forðing og sysop-gerðabókum.
-Tú kanst avmarka sýningina við at velja gerðabókaslag, brúkaranavn ella ávirkaðu síðuna.',
+'all-logs-page' => 'Allir almennir loggar',
+'alllogstext' => 'Samansett sýning av øllum atkomuligum loggum hjá {{SITENAME}}.
+Tú kanst avmarka sýningina við at velja slag av loggi, brúkaranavn (sum er følsamt fyri stórum og lítlum bókstavum) ella ávirkaðu síðuna (sum eisini er følsom fyri stórum og lítlum bókstavum).',
# Special:AllPages
'allpages' => 'Allar síður',
@@ -818,21 +978,26 @@ Also see [[Special:WantedCategories|wanted categories]].',
'newuserlog-create-entry' => 'Nýggjur brúkari',
# E-mail user
-'mailnologintext' => 'Tú mást hava [[Special:UserLogin|ritað inn]]
+'mailnologintext' => 'Tú mást hava [[Special:UserLogin|ritað inn]]
og hava virkandi teldupostadressu í [[Special:Preferences|innstillingum]] tínum
fyri at senda teldupost til aðrar brúkarar.',
-'emailuser' => 'Send t-post til brúkara',
-'emailpage' => 'Send t-post til brúkara',
-'defemailsubject' => '{{SITENAME}} t-postur',
-'noemailtitle' => 'Ongin t-post adressa',
-'noemailtext' => 'Hesin brúkarin hevur ikki upplýst eina gylduga t-post-adressu,
-ella hevur hann valt ikki at taka ímóti t-posti frá øðrum brúkarum.',
-'emailfrom' => 'Frá',
-'emailto' => 'Til',
-'emailsubject' => 'Evni',
-'emailmessage' => 'Boð',
-'emailsent' => 'T-postur sendur',
-'emailsenttext' => 'Títt t-post boð er sent.',
+'emailuser' => 'Send t-post til brúkara',
+'emailpage' => 'Send t-post til brúkara',
+'defemailsubject' => '{{SITENAME}} t-postur',
+'usermaildisabled' => 'Brúkara t-postur er óvirkin',
+'usermaildisabledtext' => 'Tú kanst ikki senda teldupost til aðrir brúkarar á hesi wiki',
+'noemailtitle' => 'Ongin t-post adressa',
+'noemailtext' => 'Hesin brúkarin hevur ikki upplýst eina gylduga t-post-adressu.',
+'nowikiemailtitle' => 'Ongin t-postur er loyvdur',
+'emailfrom' => 'Frá:',
+'emailto' => 'Til:',
+'emailsubject' => 'Evni:',
+'emailmessage' => 'Boð:',
+'emailsend' => 'Send',
+'emailccme' => 'Send mær avrit av mínum boðum.',
+'emailccsubject' => 'Avrit av tínum boðum til $1: $2',
+'emailsent' => 'T-postur sendur',
+'emailsenttext' => 'Títt t-post boð er sent.',
# Watchlist
'watchlist' => 'Mítt eftirlit',
@@ -840,14 +1005,12 @@ ella hevur hann valt ikki at taka ímóti t-posti frá øðrum brúkarum.',
'watchlistfor2' => 'Fyri $1 $2',
'nowatchlist' => 'Tú hevur ongar lutir í eftirlitinum.',
'watchnologin' => 'Tú hevur ikki ritað inn',
-'addedwatch' => 'Lagt undir eftirlit',
'addedwatchtext' => "Síðan \"<nowiki>\$1</nowiki>\" er løgd undir [[Special:Watchlist|eftirlit]] hjá tær.
Framtíðar broytingar á hesi síðu og tilknýttu kjaksíðuni verða at síggja her.
Tá sæst síðan sum '''feit skrift''' í [[Special:RecentChanges|broytingaryvirlitinum]] fyri at gera hana lættari at síggja.
Vilt tú flyta síðuna undan tínum eftirliti, kanst tú trýsta á \"Strika eftirlit\" á síðuni.",
-'removedwatch' => 'Strikað úr eftirliti',
-'removedwatchtext' => 'Síðan "[[:$1]]" er strikað úr tínum eftirliti.',
+'removedwatchtext' => 'Síðan "[[:$1]]" er strikað úr [[Special:Watchlist|tínum eftirliti]].',
'watch' => 'Eftirlit',
'watchthispage' => 'Hav eftirlit við hesi síðuni',
'unwatch' => 'strika eftirlit',
@@ -872,14 +1035,15 @@ Vilt tú flyta síðuna undan tínum eftirliti, kanst tú trýsta á \"Strika ef
'excontent' => "innihald var: '$1'",
'excontentauthor' => "innihaldið var: '$1' (og einasti rithøvundur var '[[Special:Contributions/$2|$2]]')",
'exblank' => 'síðan var tóm',
-'historywarning' => 'Ãvaring: Síðan, ið tú ert í gongd við at strika, hevur eina søgu:',
+'historywarning' => "'''Ãvaring:''' Síðan, ið tú ert í gongd við at strika, hevur eina søgu við umleið $1 {{PLURAL:$1|broyting|broytingum}}:",
'confirmdeletetext' => 'Tú ert í gongd við endaliga at strika ein a síðu
ella mynd saman við allari søgu úr dátugrunninum.
Vinarliga vátta at tú ætlar at gera hetta, at tú skilur
avleiðingarnar og at tú gert tað í tráð við
[[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Verkið er fullgjørt',
-'deletedtext' => '"<nowiki>$1</nowiki>" er nú strikað.
+'actionfailed' => 'Virksemi miseydnaðist',
+'deletedtext' => '"$1" er nú strikað.
Sí $2 fyri fulla skráseting av strikingum.',
'deletedarticle' => 'strikaði "[[$1]]"',
'dellogpage' => 'Striku logg',
@@ -895,7 +1059,7 @@ Sí $2 fyri fulla skráseting av strikingum.',
# Protect
'protectlogpage' => 'Friðingarbók',
'protectedarticle' => 'friðaði "[[$1]]"',
-'unprotectedarticle' => 'ófriðaði "[[$1]]"',
+'unprotectedarticle' => 'strikaði friðing á "[[$1]]"',
'protect-title' => 'Friðar "$1"',
'prot_1movedto2' => '$1 flutt til $2',
'protect-legend' => 'Vátta friðing',
@@ -945,25 +1109,25 @@ Sí $2 fyri fulla skráseting av strikingum.',
'whatlinkshere-links' => '↠slóðir',
# Block/unblock
-'blockip' => 'Banna brúkara',
-'ipaddress' => 'IP-adressa:',
-'ipadressorusername' => 'IP-adressa ella brúkaranavn:',
-'ipbreason' => 'Orsøk:',
-'ipbsubmit' => 'Banna henda brúkaran',
-'badipaddress' => 'Ógyldug IP-adressa',
-'blockipsuccesssub' => 'Banning framd',
-'ipb-unblock-addr' => 'Óbanna $1',
-'ipusubmit' => 'Óbanna hesa adressuna',
-'ipblocklist' => 'Bannaðir brúkarar',
-'ipblocklist-username' => 'Brúkaranavn ella IP-adressa:',
-'ipblocklist-submit' => 'Leita',
-'expiringblock' => 'gongur út $1 $2',
-'blocklink' => 'banna',
-'unblocklink' => 'óbanna',
-'contribslink' => 'íkøst',
-'blocklogpage' => 'Bannagerðabók',
-'unblocklogentry' => 'óbannaði $1',
-'proxyblocksuccess' => 'Liðugt.',
+'blockip' => 'Banna brúkara',
+'ipadressorusername' => 'IP-adressa ella brúkaranavn:',
+'ipbreason' => 'Orsøk:',
+'ipbsubmit' => 'Banna henda brúkaran',
+'badipaddress' => 'Ógyldug IP-adressa',
+'blockipsuccesssub' => 'Banning framd',
+'ipb-unblock-addr' => 'Óbanna $1',
+'ipusubmit' => 'Strika hesa blokaduna',
+'unblocked' => '[[User:$1|$1]] er ikki blokkaður longur',
+'ipblocklist' => 'Bannaðir brúkarar',
+'ipblocklist-submit' => 'Leita',
+'expiringblock' => 'gongur út $1kl. $2',
+'anononlyblock' => 'anon. bara',
+'blocklink' => 'banna',
+'unblocklink' => 'óbanna',
+'contribslink' => 'íkøst',
+'blocklogpage' => 'Bannagerðabók',
+'unblocklogentry' => 'óbannaði $1',
+'proxyblocksuccess' => 'Liðugt.',
# Developer tools
'lockdbtext' => 'At læsa dátugrunnin steðgar møguleikanum hjá øllum
@@ -980,16 +1144,15 @@ at læsa dátugrunnin upp aftur tá ið viðgerðin er liðug.',
'move-page-legend' => 'Flyt síðu',
'movepagetext' => "Við frymlinum niðanfyri kanst tú umnevna eina síðu og flyta alla hennara søgu við til nýggja navnið.
Gamla navnið verður ein tilvísingarsíða til ta nýggju.
-Slóðirnar til gomlu síðuna verða ikki broyttar.
-Ansa eftir at kanna um tvífaldar ella brotnar tilvísingar eru.
+Tú kanst dagføra tilvísingarsíður sum vísa til uppruna tittulin sjálvvirkandi.
+Um tú velur ikki at gera tað, ver so vís/ur í at eftirkanna [[Special:DoubleRedirects|dupultar]] ella [[Special:BrokenRedirects|brotnar tilvísingarsíður]].
Tú hevur ábyrgdina fyri at ansa eftir at slóðir framvegis fara hagar, tær skulu.
-Legg merki til at síðan '''ikki''' verður flutt, um ein síða longu er við nýggja navninum, uttan at hon er tóm og onga søgu hevur.
-Hetta merkir at tú kanst umnevna eina síðu aftur hagani hon kom, um tú gjørdi eitt mistak.
-Tú kanst ikki skriva yvir eina verandi síðu.
+Legg merki til at síðan '''ikki''' verður flutt, um ein síða longu er við nýggja navninum, uttan so at hon er tóm, er ein tilvísingarsíða og onga rættingarsøgu hevur.
+Hetta merkir at tú kanst umnevna eina síðu aftur hagani hon kom, um tú gjørdi eitt mistak og tú kanst ikki yvirskriva eina verandi síðu.
'''ÃVARING!'''
-Hetta kann vera ein ógvuslig og óvæntað flyting av einari vældámdari síðu.
+Hetta kann vera ein ógvuslig og óvæntað broyting av einari vældámdari síðu.
Vinarliga tryggja tær, at tú skilur avleiðingarnar av hesum áðrenn tú heldur áfam.",
'movepagetext-noredirectfixer' => "Við frymlinum niðanfyri kanst tú umnevna eina síðu og flyta alla hennara søgu við til nýggja navnið.
Gamla navnið verður ein tilvísingarsíða til ta nýggju.
@@ -1034,8 +1197,9 @@ Grein við navninum "[[:$1]]" finst longu. Ynskir tú at strika hana til tess at
'allmessagesdefault' => 'Enskur tekstur',
'allmessagescurrent' => 'Verandi tekstur',
'allmessagestext' => 'Hetta er eitt yvirlit av tøkum kervisboðum í MediaWiki-navnarúmi.
-Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Vinarliga vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//translatewiki.net translatewiki.net] um tú ynskir at geva títt íkast til ta generisku MediaWiki lokalisatiónina.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:AllMessages''' er ikki stuðlað orsakað av at '''\$wgUseDatabaseMessages''' er sløkt.",
+'allmessages-filter-legend' => 'Filtur',
'allmessages-language' => 'Mál:',
# Thumbnails
@@ -1046,18 +1210,19 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'import' => 'Innflyt síður',
'import-interwiki-submit' => 'Innflyta',
'importfailed' => 'Innflutningur miseydnaður: $1',
-'importsuccess' => 'Innflutningur væleydnaður!',
+'importsuccess' => 'Innflutningur er liðugur!',
# Tooltip help for the actions
'tooltip-pt-userpage' => 'Tín brúkarasíða',
'tooltip-pt-mytalk' => 'Tín kjaksíða',
'tooltip-pt-preferences' => 'Tínir innstillingar',
-'tooltip-pt-mycontris' => 'Yvirlit yvir mítt íkast',
+'tooltip-pt-mycontris' => 'Yvirlit yvir títt íkast',
'tooltip-pt-login' => 'Vit mæla til at tú ritar inn, men tað er ikki neyðugt.',
+'tooltip-pt-anonlogin' => 'Vit mæla til at tú ritar inn, tað er tó ikki eitt krav',
'tooltip-pt-logout' => 'Rita út',
'tooltip-ca-talk' => 'Umrøða av innihaldssíðuni',
'tooltip-ca-edit' => 'Tú kanst broyta hesa síðuna. Vinarliga nýt forskoðanarknøttin áðrenn tú goymir.',
-'tooltip-ca-addsection' => 'Skriva viðmerking til hesa umrøðuna.',
+'tooltip-ca-addsection' => 'Byrja eitt nýtt brot',
'tooltip-ca-viewsource' => 'Henda síðan er friðað. Tú kanst síggja keldukotuna.',
'tooltip-ca-history' => 'Fyrrverandi útgávur av hesi síðu.',
'tooltip-ca-protect' => 'Friða hesa síðuna',
@@ -1096,38 +1261,29 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-save' => 'Goym broytingar mínar',
# Attribution
-'anonymous' => 'Dulnevndir brúkarar í {{SITENAME}}',
+'anonymous' => 'Dulnevndir {{PLURAL:$1|brúkari|brúkarar}} í {{SITENAME}}',
'siteuser' => '{{SITENAME}}brúkari $1',
+'anonuser' => '{{SITENAME}} dulnevndur brúkari $1',
'othercontribs' => 'Grundað á arbeiði eftir $1.',
'others' => 'onnur',
-'siteusers' => '{{SITENAME}}brúkari(ar) $1',
-
-# Info page
-'infosubtitle' => 'Upplýsingar um síðu',
+'siteusers' => '{{SITENAME}} {{PLURAL:$2|brúkari|brúkarar}} $1',
+'anonusers' => '{{SITENAME}} dulnevndur/ir {{PLURAL:$2|brúkari|brúkarar}} $1',
# Skin names
'skinname-standard' => 'Standardur',
'skinname-nostalgia' => 'Nostalgiskur',
'skinname-cologneblue' => 'Cologne-bláur',
-# Math options
-'mw_math_png' => 'Vís altíð sum PNG',
-'mw_math_simple' => 'HTML um sera einfalt annars PNG',
-'mw_math_html' => 'HTML um møguligt annars PNG',
-'mw_math_source' => 'Lat verða sum TeX (til tekstkagara)',
-'mw_math_modern' => 'Tilmælt nýtíðarkagara',
-'mw_math_mathml' => 'MathML um møguligt (roynd)',
-
# Patrolling
'rcpatroldisabled' => 'Ansanin eftir nýkomnum broytingum er óvirkin',
'rcpatroldisabledtext' => 'Hentleikin við ansing eftir nýkomnum broytingum er óvirkin í løtuni.',
# Browsing diffs
-'previousdiff' => '↠Far til fyrra mun',
-'nextdiff' => 'Far til næsta mun →',
+'previousdiff' => '↠Eldri broytingar',
+'nextdiff' => 'Nýggjari broytingar →',
# Media information
-'imagemaxsize' => 'Avmarka myndir á myndalýsingarsíðum til:',
+'imagemaxsize' => "Stødd á mynd er avmarkað:<br />''(fyri frágreiðingar síður hjá fílum)''",
'thumbsize' => 'Smámyndastødd:',
'file-info-size' => '$1 × $2 pixel, stødd fílu: $3, MIME-slag: $4',
'svg-long-desc' => 'SVG fíle, nominelt $1 × $2 pixel, fíle stødd: $3',
@@ -1142,8 +1298,10 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'metadata' => 'Metadáta',
# EXIF tags
-'exif-artist' => 'Rithøvundur',
-'exif-copyright' => 'Upphavsrætt haldari',
+'exif-artist' => 'Rithøvundur',
+'exif-copyright' => 'Upphavsrætt haldari',
+'exif-headline' => 'Yvirskrift',
+'exif-iimcategory' => 'Bólkur',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'alt',
@@ -1159,17 +1317,18 @@ Tað er ikki neyðugt at hava hesa kodu fyri at rita inn, men tú mást veita ha
tú kanst nýta nakran T-post-grundaðan hentleika í hesi wiki.',
'confirmemail_loggedin' => 'Tín t-post adressa er nú váttað.',
'confirmemail_subject' => '{{SITENAME}} váttan av T-post adressu',
-'confirmemail_body' => 'Onkur, væntandi tú frá IP adressu $1, hevur skráset eina
-konti "$2" við hesu T-post adressu á {{SITENAME}}.
+'confirmemail_body' => 'Onkur, óiva tú frá IP adressu $1, hevur stovnað eina kontu "$2" við hesi t-post adressuni á {{SITENAME}}.
-Fyri at vátta at hendan konti veruliga hoyrur til tín,
-og fyri at aktivera T-post funktiónir á {{SITENAME}}, so skalt
+Fyri at vátta at hendan kontu veruliga hoyrur til tín og fyri at aktivera t-post funktiónir á {{SITENAME}}, so skalt
tú trýsta á fylgjandi slóð í tínum kagara:
$3
-Um hetta *ikki* er tú, skalt tú ikki trýsta á slóðina. Hendan váttanarkoda
-fer úr gildi tann $4.',
+Um tað *ikki* var tú sum stovnaði kontuna, fylg so hesi slóðini fyri at avlýsa t-post váttanina:
+
+$5
+
+Hendan váttanarkoda fer úr gildi tann $4.',
# action=purge
'confirm_purge_button' => 'Ã lagi',
@@ -1182,10 +1341,16 @@ fer úr gildi tann $4.',
# Table pager
'table_pager_next' => 'Næsta síða',
'table_pager_prev' => 'Fyrrverandi síða',
+'table_pager_first' => 'Fyrsta síða',
+'table_pager_last' => 'Seinasta síða',
+'table_pager_limit' => 'Vís $1 lutir á hvørjari síðu',
+'table_pager_limit_label' => 'Lutir á hvørjari síðu:',
'table_pager_limit_submit' => 'Far',
+'table_pager_empty' => 'Ongi úrslit',
# Auto-summaries
-'autosumm-new' => 'Nýggj síða: $1',
+'autosumm-blank' => 'Slettaði alt innihald á síðuni',
+'autosumm-new' => 'Stovnaði síðu við "$1"',
# Watchlist editor
'watchlistedit-normal-title' => 'Rætta eftirlit',
@@ -1210,4 +1375,8 @@ fer úr gildi tann $4.',
# Special:SpecialPages
'specialpages' => 'Serligar síður',
+# Special:ComparePages
+'compare-page1' => 'Síða 1',
+'compare-page2' => 'Síða 2',
+
);
diff --git a/languages/messages/MessagesFr.php b/languages/messages/MessagesFr.php
index 61492727..6a0ca9c5 100644
--- a/languages/messages/MessagesFr.php
+++ b/languages/messages/MessagesFr.php
@@ -27,6 +27,7 @@
* @author Guillom
* @author Hashar
* @author Hercule
+ * @author Houcinee1
* @author Hégésippe Cormier
* @author IAlex
* @author Jagwar
@@ -36,6 +37,7 @@
* @author Klutzy
* @author Korg
* @author Korrigan
+ * @author Krinkle
* @author Kropotkine 113
* @author Litlok
* @author Louperivois
@@ -43,6 +45,7 @@
* @author McDutchie
* @author Meithal
* @author Moyg
+ * @author Nicolas Raoul
* @author Od1n
* @author Omnipaedista
* @author Peter17
@@ -55,6 +58,7 @@
* @author Sherbrooke
* @author Skalman
* @author The Evil IP address
+ * @author TouzaxA
* @author Urhixidur
* @author Verdy p
* @author Wyz
@@ -252,96 +256,99 @@ $magicWords = array(
'numberingroup' => array( '1', 'NOMBREDANSGROUPE', 'NBDANSGROUPE', 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( '1', '__REDIRECTIONSTATIQUE__', '__STATICREDIRECT__' ),
'protectionlevel' => array( '1', 'NIVEAUDEPROTECTION', 'PROTECTIONLEVEL' ),
+ 'url_path' => array( '0', 'CHEMIN', 'PATH' ),
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Doubles_redirections', 'DoublesRedirections', 'Redirections_doubles', 'RedirectionsDoubles' ),
+ 'Activeusers' => array( 'Utilisateurs_actifs', 'UtilisateursActifs' ),
+ 'Allmessages' => array( 'Messages_système', 'Messages_systeme', 'Messagessystème', 'Messagessysteme' ),
+ 'Allpages' => array( 'Toutes_les_pages', 'ToutesLesPages' ),
+ 'Ancientpages' => array( 'Pages_anciennes', 'PagesAnciennes', 'Anciennes_pages', 'AnciennesPages' ),
+ 'Blankpage' => array( 'Page_blanche', 'PageBlanche' ),
+ 'Block' => array( 'Bloquer', 'Blocage' ),
+ 'Blockme' => array( 'Bloquez-moi', 'Bloquezmoi' ),
+ 'Booksources' => array( 'Ouvrages_de_référence', 'Ouvrages_de_reference', 'Ouvragesderéférence', 'Ouvragesdereference', 'Recherche_ISBN', 'Recherche_isbn', 'RechercheISBN', 'Rechercheisbn' ),
'BrokenRedirects' => array( 'Redirections_cassées', 'RedirectionCassées', 'Redirections_cassees', 'RedirectionsCassees' ),
- 'Disambiguations' => array( 'Homonymies', 'Homonymie', 'Pages_d\'homonymie' ),
- 'Userlogin' => array( 'Connexion', 'Identification' ),
- 'Userlogout' => array( 'Déconnexion', 'Deconnexion' ),
+ 'Categories' => array( 'Catégories' ),
+ 'ChangePassword' => array( 'Changement_du_mot_de_passe', 'ChangementDuMotDePasse' ),
+ 'Confirmemail' => array( 'Confirmer_l\'adresse_de_contact', 'Confirmer_le_courriel', 'ConfirmerLeCourriel' ),
'CreateAccount' => array( 'Créer_un_compte', 'CréerUnCompte', 'CréerCompte' ),
- 'Preferences' => array( 'Préférences' ),
- 'Watchlist' => array( 'Liste_de_suivi', 'ListeDeSuivi', 'Suivi' ),
- 'Recentchanges' => array( 'Modifications_récentes', 'Modifications_recentes', 'ModificationsRécentes', 'ModificationsRecentes' ),
- 'Upload' => array( 'Téléverser', 'Televerser', 'Téléversement', 'Televersement', 'Téléchargement', 'Telechargement' ),
+ 'Deadendpages' => array( 'Pages_en_impasse', 'PagesEnImpasse' ),
+ 'DeletedContributions' => array( 'Contributions_supprimées', 'ContributionsSupprimées', 'ContributionSupprimees' ),
+ 'Disambiguations' => array( 'Homonymies', 'Homonymie', 'Pages_d\'homonymie' ),
+ 'DoubleRedirects' => array( 'Doubles_redirections', 'DoublesRedirections', 'Redirections_doubles', 'RedirectionsDoubles' ),
+ 'Emailuser' => array( 'Envoyer_un_courriel', 'EnvoyerUnCourriel', 'Courriel', 'Envoyer_un_e-mail', 'EnvoyerUnEMail', 'E-mail', 'EMail' ),
+ 'Export' => array( 'Exporter', 'Exportation' ),
+ 'Fewestrevisions' => array( 'Pages_les_moins_modifiées', 'PagesLesMoinsModifiées', 'Pages_les_moins_modifiees', 'PagesLesMoinsModifiees', 'Les_moins_modifiés', 'LesMoinsModifiés', 'Les_moins_modifies', 'LesMoinsModifies' ),
+ 'FileDuplicateSearch' => array( 'Recherche_fichier_en_double', 'RechercheFichierEnDouble' ),
+ 'Filepath' => array( 'Chemin_du_fichier', 'CheminDuFichier', 'CheminFichier' ),
+ 'Import' => array( 'Importer', 'Importation' ),
+ 'Invalidateemail' => array( 'Invalider_le_courriel', 'Invalider_courriel', 'InvaliderCourriel' ),
+ 'BlockList' => array( 'Liste_des_blocages', 'ListeDesBlocages', 'Blocages', 'Utilisateurs_bloqués', 'UtilisateursBloqués', 'Utilisateurs_bloques', 'UtilisateursBloques', 'IP_bloquées', 'IPBloquees', 'IPBloquées' ),
+ 'LinkSearch' => array( 'Recherche_de_lien', 'Recherche_de_liens' ),
+ 'Listadmins' => array( 'Liste_des_administrateurs', 'Listedesadministrateurs', 'Liste_des_admins', 'Listedesadmins', 'Liste_admins', 'Listeadmins' ),
+ 'Listbots' => array( 'Liste_des_bots', 'ListedesBots' ),
'Listfiles' => array( 'Liste_des_fichiers', 'ListeDesFichiers', 'Liste_des_images', 'ListeDesImages' ),
- 'Newimages' => array( 'Nouveaux_fichiers', 'NouveauxFichiers', 'Nouvelles_images', 'NouvellesImages' ),
- 'Listusers' => array( 'Liste_des_utilisateurs', 'ListeDesUtilisateurs', 'Utilisateurs' ),
'Listgrouprights' => array( 'Liste_des_droits_de_groupe', 'ListeDesDroitsDeGroupes' ),
- 'Statistics' => array( 'Statistiques', 'Stats' ),
- 'Randompage' => array( 'Page_au_hasard', 'PageAuHasard', 'Au_hasard', 'AuHasard', 'Aléatoire', 'Aleatoire' ),
+ 'Listredirects' => array( 'Liste_des_redirections', 'Listedesredirections', 'Liste_des_redirects', 'Listedesredirects', 'Liste_redirections', 'Listeredirections', 'Liste_redirects', 'Listeredirects' ),
+ 'Listusers' => array( 'Liste_des_utilisateurs', 'ListeDesUtilisateurs', 'Utilisateurs' ),
+ 'Lockdb' => array( 'Verrouiller_la_base', 'Verrouillerlabase', 'Verrouiller_base', 'Verrouillerbase', 'Verrouiller_BD', 'VerrouillerBD', 'Verrouiller_bd', 'Verrouillerbd' ),
+ 'Log' => array( 'Journal', 'Journaux' ),
'Lonelypages' => array( 'Pages_orphelines', 'PagesOrphelines' ),
- 'Uncategorizedpages' => array( 'Pages_non_catégorisées', 'PagesNonCatégorisées', 'Pages_non_categorisees', 'PagesNonCategorisees', 'Pages_sans_catégorie', 'PagesSansCatégorie', 'Pages_sans_categorie', 'PagesSansCategorie' ),
- 'Uncategorizedcategories' => array( 'Catégories_non_catégorisées', 'CatégoriesNonCatégorisées', 'Categories_non_categorisees', 'CategoriesNonCategorisees', 'Catégories_sans_catégorie', 'CatégoriesSansCatégorie', 'Categories_sans_categorie', 'CategoriesSansCategorie' ),
- 'Uncategorizedimages' => array( 'Fichiers_non_catégorisés', 'FichiersNonCatégorisés', 'Fichiers_non_categorises', 'FichiersNonCategorises', 'Fichiers_sans_catégorie', 'FichiersSansCatégorie', 'Fichiers_sans_categorie', 'FichiersSansCategorie', 'Images_non_catégorisées', 'ImagesNonCatégorisées', 'Images_non_categorisees', 'ImagesNonCategorisees', 'Images_sans_catégorie', 'ImagesSansCatégorie', 'Images_sans_categorie', 'ImagesSansCategorie' ),
- 'Uncategorizedtemplates' => array( 'Modèles_non_catégorisés', 'ModèlesNonCatégorisés', 'Modeles_non_categorises', 'ModelesNonCategorises', 'Modèles_sans_catégorie', 'ModèlesSansCatégorie', 'Modeles_sans_catégorie', 'ModelesSansCatégorie' ),
- 'Unusedcategories' => array( 'Catégories_inutilisées', 'CatégoriesInutilisées', 'Categories_inutilisees', 'CategoriesInutilisees', 'Catégories_non_utilisées', 'CatégoriesNonUtilisées', 'Categories_non_utilisees', 'CategoriesNonUtilisees' ),
- 'Unusedimages' => array( 'Fichiers_inutilisés', 'FichiersInutilisés', 'Fichiers_inutilises', 'FichiersInutilises', 'Fichiers_non_utilisés', 'FichiersNon_utilisés', 'Fichiers_non_utilises', 'FichiersNon_utilises', 'Images_inutilisées', 'ImagesInutilisées', 'Images_inutilisees', 'ImagesInutilisees', 'Images_non_utilisées', 'ImagesNonUtilisées', 'Images_non_utilisees', 'ImagesNonUtilisees' ),
- 'Wantedpages' => array( 'Pages_demandées', 'PagesDemandées', 'Pages_demandees', 'PagesDemandees', 'Liens_brisés', 'LiensBrisés', 'Liens_brises', 'LiensBrises' ),
- 'Wantedcategories' => array( 'Catégories_demandées', 'CatégoriesDemandées', 'Categories_demandees', 'CategoriesDemandees' ),
- 'Wantedfiles' => array( 'Fichiers_demandés', 'FichiersDemandés', 'Fichiers_demandes', 'FichiersDemandes' ),
- 'Wantedtemplates' => array( 'Modèles_demandés', 'ModèlesDemandés', 'Modeles_demandes', 'ModelesDemandes' ),
+ 'Longpages' => array( 'Pages_longues', 'PagesLongues' ),
+ 'MergeHistory' => array( 'Fusionner_les_historiques', 'FusionnerHistoriques', 'Fusionner_l\'historique', 'Fusionnerlhistorique' ),
+ 'MIMEsearch' => array( 'Recherche_MIME', 'RechercheMIME', 'Recherche_mime', 'Recherchemime' ),
+ 'Mostcategories' => array( 'Pages_les_plus_catégorisées', 'PagesLesPlusCatégorisées', 'Pages_les_plus_categorisees', 'PagesLesPlusCategorisees', 'Les_plus_catégorisés', 'LesPlusCatégorisés', 'Les_plus_categorises', 'LesPlusCategorises' ),
+ 'Mostimages' => array( 'Fichiers_les_plus_liés', 'FichiersLesPlusLiés', 'Fichiers_les_plus_lies', 'FichiersLesPlusLies', 'Fichiers_les_plus_utilisés', 'FichiersLesPlusUtilisés', 'Fichiers_les_plus_utilises', 'FichiersLesPlusUtilises', 'Images_les_plus_liées', 'ImagesLesPlusLiées', 'Images_les_plus_liees', 'ImagesLesPlusLiees', 'Images_les_plus_utilisées', 'ImagesLesPlusUtilisées', 'Images_les_plus_utilisees', 'ImagesLesPlusUtilisees' ),
'Mostlinked' => array( 'Pages_les_plus_liées', 'PagesLesPlusLiées', 'Pages_les_plus_liees', 'PagesLesPlusLiees', 'Les_plus_liées', 'LesPlusLiées', 'Les_plus_liees', 'LesPlusLiees' ),
'Mostlinkedcategories' => array( 'Catégories_les_plus_liées', 'CatégoriesLesPlusLiées', 'Categories_les_plus_liees', 'CategoriesLesPlusLiees', 'Catégories_les_plus_utilisées', 'CatégoriesLesPlusUtilisées', 'Categories_les_plus_utilisees', 'CategoriesLesPlusUtilisees' ),
'Mostlinkedtemplates' => array( 'Modèles_les_plus_liés', 'ModèlesLesPlusLiés', 'Modeles_les_plus_lies', 'ModelesLesPlusLies', 'Modèles_les_plus_utilisés', 'ModèlesLesPlusUtilisés', 'Modeles_les_plus_utilises', 'ModelesLesPlusUtilises' ),
- 'Mostimages' => array( 'Fichiers_les_plus_liés', 'FichiersLesPlusLiés', 'Fichiers_les_plus_lies', 'FichiersLesPlusLies', 'Fichiers_les_plus_utilisés', 'FichiersLesPlusUtilisés', 'Fichiers_les_plus_utilises', 'FichiersLesPlusUtilises', 'Images_les_plus_liées', 'ImagesLesPlusLiées', 'Images_les_plus_liees', 'ImagesLesPlusLiees', 'Images_les_plus_utilisées', 'ImagesLesPlusUtilisées', 'Images_les_plus_utilisees', 'ImagesLesPlusUtilisees' ),
- 'Mostcategories' => array( 'Pages_les_plus_catégorisées', 'PagesLesPlusCatégorisées', 'Pages_les_plus_categorisees', 'PagesLesPlusCategorisees', 'Les_plus_catégorisés', 'LesPlusCatégorisés', 'Les_plus_categorises', 'LesPlusCategorises' ),
'Mostrevisions' => array( 'Pages_les_plus_modifiées', 'PagesLesPlusModifiées', 'Pages_les_plus_modifiees', 'PagesLesPlusModifiees', 'Les_plus_modifiés', 'LesPlusModifiés', 'Les_plus_modifies', 'LesPlusModifies' ),
- 'Fewestrevisions' => array( 'Pages_les_moins_modifiées', 'PagesLesMoinsModifiées', 'Pages_les_moins_modifiees', 'PagesLesMoinsModifiees', 'Les_moins_modifiés', 'LesMoinsModifiés', 'Les_moins_modifies', 'LesMoinsModifies' ),
- 'Shortpages' => array( 'Pages_courtes', 'PagesCourtes' ),
- 'Longpages' => array( 'Pages_longues', 'PagesLongues' ),
+ 'Movepage' => array( 'Renommer_une_page', 'Renommer', 'Renommage' ),
+ 'Mycontributions' => array( 'Mes_contributions', 'Mescontributions' ),
+ 'Mypage' => array( 'Ma_page', 'Mapage' ),
+ 'Mytalk' => array( 'Mes_discussions', 'Mesdiscussions' ),
+ 'Newimages' => array( 'Nouveaux_fichiers', 'NouveauxFichiers', 'Nouvelles_images', 'NouvellesImages' ),
'Newpages' => array( 'Nouvelles_pages', 'NouvellesPages', 'Pages_récentes', 'PagesRécentes', 'Pages_recentes', 'PagesRecentes' ),
- 'Ancientpages' => array( 'Pages_anciennes', 'PagesAnciennes', 'Anciennes_pages', 'AnciennesPages' ),
- 'Deadendpages' => array( 'Pages_en_impasse', 'PagesEnImpasse' ),
+ 'PasswordReset' => array( 'Réinitialisation_du_mot_de_passe', 'RéinitialisationDuMotDePasse' ),
+ 'PermanentLink' => array( 'LienPermanent', 'Lien_permanent' ),
+ 'Popularpages' => array( 'Pages_les_plus_visitées', 'Pages_les_plus_visitees', 'Pageslesplusvisitées', 'Pageslesplusvisitees' ),
+ 'Preferences' => array( 'Préférences' ),
+ 'Prefixindex' => array( 'Index', 'Préfixes', 'Prefixes' ),
'Protectedpages' => array( 'Pages_protégées', 'PagesProtégées', 'Pages_protegees', 'PagesProtegees' ),
'Protectedtitles' => array( 'Titres_protégés', 'TitresProtégés', 'Titres_proteges', 'TitresProteges' ),
- 'Allpages' => array( 'Toutes_les_pages', 'ToutesLesPages' ),
- 'Prefixindex' => array( 'Index', 'Préfixes', 'Prefixes' ),
- 'Ipblocklist' => array( 'Liste_des_blocages', 'ListeDesBlocages', 'Blocages', 'Utilisateurs_bloqués', 'UtilisateursBloqués', 'Utilisateurs_bloques', 'UtilisateursBloques', 'IP_bloquées', 'IPBloquees', 'IPBloquées' ),
- 'Unblock' => array( 'Débloquer', 'Déblocage' ),
- 'Specialpages' => array( 'Pages_spéciales', 'PagesSpéciales', 'Pages_speciales', 'PagesSpeciales' ),
- 'Emailuser' => array( 'Envoyer_un_courriel', 'EnvoyerUnCourriel', 'Courriel', 'Envoyer_un_e-mail', 'EnvoyerUnEMail', 'E-mail', 'EMail' ),
- 'Confirmemail' => array( 'Confirmer_l\'adresse_de_contact', 'Confirmer_le_courriel', 'ConfirmerLeCourriel' ),
- 'Whatlinkshere' => array( 'Pages_liées', 'PagesLiées', 'Pages_liees', 'PagesLiees' ),
+ 'Randompage' => array( 'Page_au_hasard', 'PageAuHasard', 'Au_hasard', 'AuHasard', 'Aléatoire', 'Aleatoire' ),
+ 'Randomredirect' => array( 'Redirection_au_hasard', 'Redirect_au_hasard', 'Redirectionauhasard', 'Redirectauhasard', 'Redirection_aléatoire', 'Redirect_aléatoire', 'Redirectionaléatoire', 'Redirectaléatoire', 'Redirection_aleatoire', 'Redirect_aleatoire', 'Redirectionaleatoire', 'Redirectaleatoire' ),
+ 'Recentchanges' => array( 'Modifications_récentes', 'Modifications_recentes', 'ModificationsRécentes', 'ModificationsRecentes' ),
'Recentchangeslinked' => array( 'Suivi_des_liens', 'SuiviDesLiens' ),
- 'Movepage' => array( 'Renommer_une_page', 'Renommer', 'Renommage' ),
- 'Blockme' => array( 'Bloquez-moi', 'Bloquezmoi' ),
- 'Booksources' => array( 'Ouvrages_de_référence', 'Ouvrages_de_reference', 'Ouvragesderéférence', 'Ouvragesdereference', 'Recherche_ISBN', 'Recherche_isbn', 'RechercheISBN', 'Rechercheisbn' ),
- 'Categories' => array( 'Catégories' ),
- 'Export' => array( 'Exporter', 'Exportation' ),
- 'Allmessages' => array( 'Messages_système', 'Messages_systeme', 'Messagessystème', 'Messagessysteme' ),
- 'Log' => array( 'Journal', 'Journaux' ),
- 'Blockip' => array( 'Bloquer', 'Blocage' ),
+ 'Revisiondelete' => array( 'Versions_supprimées', 'Versions_supprimees', 'Versionsupprimées', 'Versionsupprimees' ),
+ 'Search' => array( 'Recherche', 'Rechercher', 'Chercher' ),
+ 'Shortpages' => array( 'Pages_courtes', 'PagesCourtes' ),
+ 'Specialpages' => array( 'Pages_spéciales', 'PagesSpéciales', 'Pages_speciales', 'PagesSpeciales' ),
+ 'Statistics' => array( 'Statistiques', 'Stats' ),
+ 'Tags' => array( 'Balises' ),
+ 'Unblock' => array( 'Débloquer', 'Déblocage' ),
+ 'Uncategorizedcategories' => array( 'Catégories_non_catégorisées', 'CatégoriesNonCatégorisées', 'Categories_non_categorisees', 'CategoriesNonCategorisees', 'Catégories_sans_catégorie', 'CatégoriesSansCatégorie', 'Categories_sans_categorie', 'CategoriesSansCategorie' ),
+ 'Uncategorizedimages' => array( 'Fichiers_non_catégorisés', 'FichiersNonCatégorisés', 'Fichiers_non_categorises', 'FichiersNonCategorises', 'Fichiers_sans_catégorie', 'FichiersSansCatégorie', 'Fichiers_sans_categorie', 'FichiersSansCategorie', 'Images_non_catégorisées', 'ImagesNonCatégorisées', 'Images_non_categorisees', 'ImagesNonCategorisees', 'Images_sans_catégorie', 'ImagesSansCatégorie', 'Images_sans_categorie', 'ImagesSansCategorie' ),
+ 'Uncategorizedpages' => array( 'Pages_non_catégorisées', 'PagesNonCatégorisées', 'Pages_non_categorisees', 'PagesNonCategorisees', 'Pages_sans_catégorie', 'PagesSansCatégorie', 'Pages_sans_categorie', 'PagesSansCategorie' ),
+ 'Uncategorizedtemplates' => array( 'Modèles_non_catégorisés', 'ModèlesNonCatégorisés', 'Modeles_non_categorises', 'ModelesNonCategorises', 'Modèles_sans_catégorie', 'ModèlesSansCatégorie', 'Modeles_sans_catégorie', 'ModelesSansCatégorie' ),
'Undelete' => array( 'Restaurer', 'Restauration' ),
- 'Import' => array( 'Importer', 'Importation' ),
- 'Lockdb' => array( 'Verrouiller_la_base', 'Verrouillerlabase', 'Verrouiller_base', 'Verrouillerbase', 'Verrouiller_BD', 'VerrouillerBD', 'Verrouiller_bd', 'Verrouillerbd' ),
'Unlockdb' => array( 'Déverrouiller_la_base', 'Déverrouillerlabase', 'Deverrouiller_la_base', 'Deverrouillerlabase', 'Déverrouiller_base', 'Déverrouillerbase', 'Deverrouiller_base', 'Deverrouillerbase', 'Déverrouiller_BD', 'DéverrouillerBD', 'Deverrouiller_BD', 'DeverrouillerBD', 'Déverrouiller_bd', 'Déverrouillerbd', 'Deverrouiller_bd', 'Deverrouillerbd' ),
- 'Userrights' => array( 'Permissions', 'Droits', 'Droits_des_utilisateurs' ),
- 'MIMEsearch' => array( 'Recherche_MIME', 'RechercheMIME', 'Recherche_mime', 'Recherchemime' ),
- 'FileDuplicateSearch' => array( 'Recherche_fichier_en_double', 'RechercheFichierEnDouble' ),
- 'Unwatchedpages' => array( 'Pages_non_suivies', 'Pagesnonsuivies' ),
- 'Listredirects' => array( 'Liste_des_redirections', 'Listedesredirections', 'Liste_des_redirects', 'Listedesredirects', 'Liste_redirections', 'Listeredirections', 'Liste_redirects', 'Listeredirects' ),
- 'Revisiondelete' => array( 'Versions_supprimées', 'Versions_supprimees', 'Versionsupprimées', 'Versionsupprimees' ),
+ 'Unusedcategories' => array( 'Catégories_inutilisées', 'CatégoriesInutilisées', 'Categories_inutilisees', 'CategoriesInutilisees', 'Catégories_non_utilisées', 'CatégoriesNonUtilisées', 'Categories_non_utilisees', 'CategoriesNonUtilisees' ),
+ 'Unusedimages' => array( 'Fichiers_inutilisés', 'FichiersInutilisés', 'Fichiers_inutilises', 'FichiersInutilises', 'Fichiers_non_utilisés', 'FichiersNon_utilisés', 'Fichiers_non_utilises', 'FichiersNon_utilises', 'Images_inutilisées', 'ImagesInutilisées', 'Images_inutilisees', 'ImagesInutilisees', 'Images_non_utilisées', 'ImagesNonUtilisées', 'Images_non_utilisees', 'ImagesNonUtilisees' ),
'Unusedtemplates' => array( 'Modèles_inutilisés', 'Modèlesinutilisés', 'Modeles_inutilises', 'Modelesinutilises', 'Modèles_non_utilisés', 'Modèlesnonutilisés', 'Modeles_non_utilises', 'Modelesnonutilises' ),
- 'Randomredirect' => array( 'Redirection_au_hasard', 'Redirect_au_hasard', 'Redirectionauhasard', 'Redirectauhasard', 'Redirection_aléatoire', 'Redirect_aléatoire', 'Redirectionaléatoire', 'Redirectaléatoire', 'Redirection_aleatoire', 'Redirect_aleatoire', 'Redirectionaleatoire', 'Redirectaleatoire' ),
- 'Mypage' => array( 'Ma_page', 'Mapage' ),
- 'Mytalk' => array( 'Mes_discussions', 'Mesdiscussions' ),
- 'Mycontributions' => array( 'Mes_contributions', 'Mescontributions' ),
- 'Listadmins' => array( 'Liste_des_administrateurs', 'Listedesadministrateurs', 'Liste_des_admins', 'Listedesadmins', 'Liste_admins', 'Listeadmins' ),
- 'Listbots' => array( 'Liste_des_bots', 'ListedesBots' ),
- 'Popularpages' => array( 'Pages_les_plus_visitées', 'Pages_les_plus_visitees', 'Pageslesplusvisitées', 'Pageslesplusvisitees' ),
- 'Search' => array( 'Recherche', 'Rechercher', 'Chercher' ),
- 'Resetpass' => array( 'Changement_du_mot_de_passe', 'ChangementDuMotDePasse' ),
+ 'Unwatchedpages' => array( 'Pages_non_suivies', 'Pagesnonsuivies' ),
+ 'Upload' => array( 'Téléverser', 'Televerser', 'Téléversement', 'Televersement', 'Téléchargement', 'Telechargement' ),
+ 'Userlogin' => array( 'Connexion', 'Identification' ),
+ 'Userlogout' => array( 'Déconnexion', 'Deconnexion' ),
+ 'Userrights' => array( 'Permissions', 'Droits', 'Droits_des_utilisateurs' ),
+ 'Wantedcategories' => array( 'Catégories_demandées', 'CatégoriesDemandées', 'Categories_demandees', 'CategoriesDemandees' ),
+ 'Wantedfiles' => array( 'Fichiers_demandés', 'FichiersDemandés', 'Fichiers_demandes', 'FichiersDemandes' ),
+ 'Wantedpages' => array( 'Pages_demandées', 'PagesDemandées', 'Pages_demandees', 'PagesDemandees', 'Liens_brisés', 'LiensBrisés', 'Liens_brises', 'LiensBrises' ),
+ 'Wantedtemplates' => array( 'Modèles_demandés', 'ModèlesDemandés', 'Modeles_demandes', 'ModelesDemandes' ),
+ 'Watchlist' => array( 'Liste_de_suivi', 'ListeDeSuivi', 'Suivi' ),
+ 'Whatlinkshere' => array( 'Pages_liées', 'PagesLiées', 'Pages_liees', 'PagesLiees' ),
'Withoutinterwiki' => array( 'Sans_interwiki', 'Sansinterwiki', 'Sans_interwikis', 'Sansinterwikis' ),
- 'MergeHistory' => array( 'Fusionner_les_historiques', 'FusionnerHistoriques', 'Fusionner_l\'historique', 'Fusionnerlhistorique' ),
- 'Filepath' => array( 'Chemin_du_fichier', 'CheminDuFichier', 'CheminFichier' ),
- 'Invalidateemail' => array( 'Invalider_le_courriel', 'Invalider_courriel', 'InvaliderCourriel' ),
- 'Blankpage' => array( 'Page_blanche', 'PageBlanche' ),
- 'LinkSearch' => array( 'Recherche_de_lien', 'Recherche_de_liens' ),
- 'DeletedContributions' => array( 'Contributions_supprimées', 'ContributionsSupprimées', 'ContributionSupprimees' ),
- 'Tags' => array( 'Balises' ),
- 'Activeusers' => array( 'Utilisateurs_actifs', 'UtilisateursActifs' ),
);
$separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
@@ -476,14 +483,7 @@ $messages = array(
'listingcontinuesabbrev' => '(suite)',
'index-category' => 'Pages indexées',
'noindex-category' => 'Pages non indexées',
-
-'mainpagetext' => "'''MediaWiki a été installé avec succès.'''",
-'mainpagedocfooter' => 'Consultez le [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] pour plus d’informations sur l’utilisation de ce logiciel.
-
-== Démarrer avec MediaWiki ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste des paramètres de configuration]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ sur MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste de discussion sur les distributions de MediaWiki]',
+'broken-file-category' => 'Pages avec des liens de fichiers brisés',
'about' => 'À propos',
'article' => 'Page de contenu',
@@ -535,10 +535,10 @@ $messages = array(
'history' => 'Historique de la page',
'history_short' => 'Historique',
'updatedmarker' => 'modifié depuis ma dernière visite',
-'info_short' => 'Informations',
'printableversion' => 'Version imprimable',
'permalink' => 'Adresse de cette version',
'print' => 'Imprimer',
+'view' => 'Lire',
'edit' => 'Modifier',
'create' => 'Créer',
'editthispage' => 'Modifier cette page',
@@ -546,6 +546,7 @@ $messages = array(
'delete' => 'Supprimer',
'deletethispage' => 'Supprimer cette page',
'undelete_short' => 'Restaurer $1 modification{{PLURAL:$1||s}}',
+'viewdeleted_short' => 'Voir {{PLURAL:$1|une modification supprimée|$1 modifications supprimées}}',
'protect' => 'Protéger',
'protect_change' => 'modifier',
'protectthispage' => 'Protéger cette page',
@@ -629,6 +630,8 @@ $1',
'toc' => 'Sommaire',
'showtoc' => 'afficher',
'hidetoc' => 'masquer',
+'collapsible-collapse' => 'Replier',
+'collapsible-expand' => 'Développer',
'thisisdeleted' => 'Désirez-vous afficher ou restaurer $1 ?',
'viewdeleted' => 'Voir $1 ?',
'restorelink' => '{{PLURAL:$1|la modification effacée|les $1 modifications effacées}}',
@@ -640,6 +643,8 @@ $1',
'page-rss-feed' => 'Flux RSS de « $1 »',
'page-atom-feed' => 'Flux Atom de « $1 »',
'red-link-title' => '$1 (page inexistante)',
+'sort-descending' => 'Tri décroissant',
+'sort-ascending' => 'Tri croissant',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Page',
@@ -728,7 +733,8 @@ Essayez à nouveau dans quelques minutes.',
'cascadeprotected' => 'Cette page est protégée car elle est incluse par {{PLURAL:$1|la page suivante, qui a été protégée|les pages suivantes, qui ont été protégées}} avec l’option « protection en cascade » activée :
$2',
'namespaceprotected' => "Vous n’avez pas la permission de modifier les pages de l’espace de noms « '''$1''' ».",
-'customcssjsprotected' => 'Vous n’avez pas la permission de modifier cette page, car elle contient les préférences d’un autre utilisateur.',
+'customcssprotected' => "Vous n'avez pas la permission de modifier cette page de CSS, car elle contient les paramètres personnels d'un autre utilisateur.",
+'customjsprotected' => "Vous n'avez pas la permission de modifier cette page de JavaScript, car elle contient les paramètres personnels d'un autre utilisateur.",
'ns-specialprotected' => 'Les pages dans l’espace de noms « {{ns:special}} » ne peuvent pas être modifiées.',
'titleprotected' => "Ce titre a été protégé à la création par [[User:$1|$1]].
Le motif avancé est « ''$2'' ».",
@@ -750,7 +756,7 @@ N’oubliez pas de personnaliser vos [[Special:Preferences|préférences sur {{S
'yourname' => 'Nom d’utilisateur :',
'yourpassword' => 'Mot de passe :',
'yourpasswordagain' => 'Confirmez le mot de passe :',
-'remembermypassword' => 'Me reconnecter automatiquement aux prochaines visites (au maximum $1 {{PLURAL:$1|jour|jours}})',
+'remembermypassword' => 'Me reconnecter automatiquement aux prochaines visites avec ce navigateur (au maximum $1 {{PLURAL:$1|jour|jours}})',
'securelogin-stick-https' => 'Rester connecté en HTTPS après la connexion',
'yourdomainname' => 'Votre domaine',
'externaldberror' => 'Une erreur s’est produite avec la base de données d’authentification externe, ou bien vous n’êtes pas autorisé{{GENDER:||e|(e)}} à mettre à jour votre compte externe.',
@@ -767,6 +773,7 @@ N’oubliez pas de personnaliser vos [[Special:Preferences|préférences sur {{S
'createaccount' => 'Créer un compte',
'gotaccount' => "Vous avez déjà un compte ? '''$1'''.",
'gotaccountlink' => 'Connectez-vous',
+'userlogin-resetlink' => 'Vous avez oublié vos détails de connexion ?',
'createaccountmail' => 'par courriel',
'createaccountreason' => 'Motif :',
'badretype' => 'Les mots de passe que vous avez saisis ne correspondent pas.',
@@ -776,13 +783,15 @@ Veuillez choisir un nom différent.',
'createaccounterror' => 'Impossible de créer le compte : $1',
'nocookiesnew' => "Le compte utilisateur a été créé, mais vous n’êtes pas connecté{{GENDER:||e|(e)}}. {{SITENAME}} utilise des témoins (''cookies'') pour la connexion mais vous les avez désactivés. Veuillez les activer et vous reconnecter avec le même nom et le même mot de passe.",
'nocookieslogin' => "{{SITENAME}} utilise des témoins (''cookies'') pour la connexion mais vous les avez désactivés. Veuillez les activer et vous reconnecter.",
+'nocookiesfornew' => "Le compte utilisateur n'a pas été créé, car nous n'avons pas pu identifier son origine.
+Vérifiez que vous avez activé les cookies, rechargez la page et rééssayez.",
'noname' => 'Vous n’avez pas saisi un nom d’utilisateur valide.',
'loginsuccesstitle' => 'Connexion réussie',
'loginsuccess' => 'Vous êtes maintenant connecté{{GENDER:$1||e|(e)}} à {{SITENAME}} en tant que « $1 ».',
'nosuchuser' => 'L’utilisateur « $1 » n’existe pas.
Les noms d’utilisateurs sont sensibles à la casse.
Vérifiez l’orthographe, ou [[Special:UserLogin/signup|créez un nouveau compte]].',
-'nosuchusershort' => 'Il n’y a pas de contributeur avec le nom « <nowiki>$1</nowiki> ». Veuillez vérifier l’orthographe.',
+'nosuchusershort' => 'Il n’y a pas de contributeur avec le nom « $1 ». Veuillez vérifier l’orthographe.',
'nouserspecified' => 'Vous devez saisir un nom d’utilisateur.',
'login-userblocked' => 'Cet utilisateur est bloqué. Connexion non autorisée.',
'wrongpassword' => 'Le mot de passe est incorrect. Veuillez essayer à nouveau.',
@@ -827,13 +836,14 @@ Ignorez ce message si ce compte a été créé par erreur.',
'usernamehasherror' => 'Le nom d’utilisateur ne peut pas contenir des caractères de hachage',
'login-throttled' => 'Vous avez tenté un trop grand nombre de connexions dernièrement.
Veuillez attendre avant d’essayer à nouveau.',
+'login-abort-generic' => 'Votre tentative de connexion a échoué',
'loginlanguagelabel' => 'Langue : $1',
'suspicious-userlogout' => 'Votre demande de déconnexion a été refusée car il semble qu’elle a été envoyée par un navigateur cassé ou la mise en cache d’un proxy.',
# E-mail sending
'php-mail-error-unknown' => 'Erreur inconnue dans la fonction mail() de PHP.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Changer de mot de passe',
'resetpass_announce' => 'Vous vous êtes enregistré{{GENDER:||e|(e)}} avec un mot de passe temporaire envoyé par courriel. Pour terminer l’enregistrement, vous devez entrer un nouveau mot de passe ici :',
'resetpass_text' => '<!-- Ajoutez le texte ici -->',
@@ -851,6 +861,30 @@ Veuillez attendre avant d’essayer à nouveau.',
Vous avez peut-être déjà changé votre mot de passe ou demandé un nouveau mot de passe temporaire.',
'resetpass-temp-password' => 'Mot de passe temporaire :',
+# Special:PasswordReset
+'passwordreset' => 'Remise à zéro du mot de passe',
+'passwordreset-text' => 'Remplissez ce formulaire pour recevoir un courriel de rappel des détails de votre compte.',
+'passwordreset-legend' => 'Remise à zéro du mot de passe',
+'passwordreset-disabled' => 'La réinitialisation des mots de passe a été désactivée sur ce wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Entrez un élément de données ci-dessous}}',
+'passwordreset-username' => 'Nom d’utilisateur :',
+'passwordreset-domain' => 'Domaine :',
+'passwordreset-email' => 'Adresse de courriel :',
+'passwordreset-emailtitle' => 'Détails du compte sur {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Quelqu’un (probablement vous, depuis l’adresse IP $1) a demandé un rappel des informations de votre compte pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :
+
+$2
+
+{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. Vous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous vous êtes souvenu de votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.',
+'passwordreset-emailtext-user' => 'L’utilisateur $1 sur {{SITENAME}} a demandé un rappel des informations de votre compte pour {{SITENAME}} ($4). {{PLURAL:$3|Le compte utilisateur suivant est associé|Les comptes utilisateurs suivants sont associés}} à cette adresse de courriel :
+
+$2
+
+{{PLURAL:$3|Ce mot de passe temporaire expirera|Ces mots de passe temporaires expireront}} dans {{PLURAL:$5|un jour|$5 jours}}. Vous devez maintenant vous connecter et choisir un nouveau mot de passe. Si cette demande ne provient pas de vous, ou que vous vous êtes souvenu de votre mot de passe initial, et ne souhaitez plus le modifier, vous pouvez ignorer ce message et continuer à utiliser votre ancien mot de passe.',
+'passwordreset-emailelement' => "Nom d'utilisateur : $1
+Mot de passe temporaire : $2",
+'passwordreset-emailsent' => 'Un courriel de rappel a été envoyé.',
+
# Edit page toolbar
'bold_sample' => 'Texte gras',
'bold_tip' => 'Texte gras',
@@ -862,8 +896,6 @@ Vous avez peut-être déjà changé votre mot de passe ou demandé un nouveau mo
'extlink_tip' => 'Lien externe (n’oubliez pas le préfixe http://)',
'headline_sample' => 'Texte de sous-titre',
'headline_tip' => 'Sous-titre niveau 2',
-'math_sample' => 'Entrez votre formule ici',
-'math_tip' => 'Formule mathématique (LaTeX)',
'nowiki_sample' => 'Entrez le texte non formaté ici',
'nowiki_tip' => 'Ignorer la syntaxe wiki',
'image_sample' => 'Exemple.jpg',
@@ -949,7 +981,7 @@ ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} créer cette page]</span>.',
'noarticletext-nopermission' => 'Il n’y a pour l’instant aucun texte sur cette page.
Vous pouvez [[Special:Search/{{PAGENAME}}|faire une recherche sur ce titre]] dans les autres pages,
ou <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rechercher dans les journaux associés]</span>.',
-'userpage-userdoesnotexist' => 'Le compte utilisateur « $1 » n’est pas enregistré. Veuillez vérifier que vous voulez créer cette page.',
+'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 registre des blocages est indiquée ci-dessous à titre d’information :',
@@ -985,6 +1017,7 @@ Si cela échoue de nouveau, [[Special:UserLogout|déconnectez-vous]], puis recon
'token_suffix_mismatch' => "'''Votre modification n’a pas été acceptée car votre navigateur a mal codé les caractères de ponctuation dans l’identifiant de modification.'''
Ce rejet est nécessaire pour empêcher la corruption du texte de la page.
Ce problème se produit parfois lorsque vous utilisez un serveur mandataire anonyme problématique basé sur le web.",
+'edit_form_incomplete' => "'''Certaines parties du formulaire de modification n'ont pas atteint le serveur, vérifiez que vos modifications sont intactes et essayez à nouveau.'''",
'editing' => 'Modification de $1',
'editingsection' => 'Modification de $1 (section)',
'editingcomment' => 'Modification de $1 (nouvelle section)',
@@ -1211,7 +1244,7 @@ Vérifiez les journaux.',
# Suppression log
'suppressionlog' => 'Journal des suppressions',
'suppressionlogtext' => 'Voici la liste des suppressions et des blocages qui portent sur du contenu caché aux administrateurs.
-Voir la [[Special:IPBlockList|liste des adresses IP et utilisateurs bloqués]] pour la liste des bannissements et des blocages actuellement opérationnels.',
+Voir la [[Special:BlockList|liste des adresses IP et utilisateurs bloqués]] pour la liste des bannissements et des blocages actuellement opérationnels.',
# History merging
'mergehistory' => 'Fusionner les historiques des pages',
@@ -1319,12 +1352,13 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
'searchdisabled' => 'La recherche sur {{SITENAME}} est désactivée. En attendant la réactivation, vous pouvez effectuer une recherche via Google. Attention, leur indexation du contenu de {{SITENAME}} peut ne pas être à jour.',
# Quickbar
-'qbsettings' => 'Barre d’outils',
-'qbsettings-none' => 'Aucune',
-'qbsettings-fixedleft' => 'Gauche',
-'qbsettings-fixedright' => 'Droite',
-'qbsettings-floatingleft' => 'Flottante à gauche',
-'qbsettings-floatingright' => 'Flottante à droite',
+'qbsettings' => 'Barre d’outils',
+'qbsettings-none' => 'Aucune',
+'qbsettings-fixedleft' => 'Gauche',
+'qbsettings-fixedright' => 'Droite',
+'qbsettings-floatingleft' => 'Flottante à gauche',
+'qbsettings-floatingright' => 'Flottante à droite',
+'qbsettings-directionality' => "Fixe, en fonction de la directivité d'écriture de votre langue",
# Preferences page
'preferences' => 'Préférences',
@@ -1335,9 +1369,10 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
'changepassword' => 'Changer de mot de passe',
'prefs-skin' => 'Habillage',
'skin-preview' => 'Prévisualiser',
-'prefs-math' => 'Rendu des maths',
'datedefault' => 'Aucune préférence',
+'prefs-beta' => 'Fonctionnalités bêta',
'prefs-datetime' => 'Date et heure',
+'prefs-labs' => 'Fonctionnalités « labs »',
'prefs-personal' => 'Informations personnelles',
'prefs-rc' => 'Modifications récentes',
'prefs-watchlist' => 'Liste de suivi',
@@ -1359,8 +1394,6 @@ Essayez en utilisant le préfixe ''all:'' pour rechercher dans tout le contenu (
'columns' => 'Colonnes :',
'searchresultshead' => 'Recherches',
'resultsperpage' => 'Nombre de réponses par page :',
-'contextlines' => 'Nombre de lignes par réponse :',
-'contextchars' => 'Nombre de caractères de contexte par ligne :',
'stub-threshold' => 'Limite supérieure pour les <a href="#" class="stub">liens vers les ébauches</a> (octets) :',
'stub-threshold-disabled' => 'Désactivé',
'recentchangesdays' => 'Nombre de jours à afficher dans les modifications récentes :',
@@ -1373,7 +1406,7 @@ Voici une valeur générée aléatoirement que vous pouvez utiliser : $1',
'savedprefs' => 'Les préférences ont été sauvegardées.',
'timezonelegend' => 'Fuseau horaire :',
'localtime' => 'Heure locale :',
-'timezoneuseserverdefault' => 'Utiliser la valeur du serveur',
+'timezoneuseserverdefault' => 'Utiliser la valeur par défaut du wiki ($1)',
'timezoneuseoffset' => 'Autre (spécifier le décalage)',
'timezoneoffset' => 'Décalage horaire¹ :',
'servertime' => 'Heure du serveur :',
@@ -1421,8 +1454,8 @@ Elle ne doit pas dépasser $1 caractère{{PLURAL:$1||s}}.',
'prefs-help-gender' => 'Facultatif : utilisé pour accorder en genre les messages de l’interface. Cette information sera publique.',
'email' => 'Courriel',
'prefs-help-realname' => 'Facultatif : si vous le spécifiez, il sera utilisé pour vous attribuer vos contributions.',
-'prefs-help-email' => 'Facultatif : indiquer votre adresse de courriel permet de vous envoyer un nouveau mot de passe si vous oubliez le vôtre.
-Vous pouvez également décider de laisser les autres vous contacter via votre page de discussion, sans avoir besoin de révéler votre identité.',
+'prefs-help-email' => 'L’adresse de courriel est facultative, mais elle est nécessaire pour réinitialiser votre mot de passe, si vous veniez à l’oublier.',
+'prefs-help-email-others' => 'Vous pourriez aussi choisir de laisser les autres vous contacter sur votre page de discussion utilisateur sans que soit nécessaire de révéler votre identité.',
'prefs-help-email-required' => 'Une adresse de courriel est requise.',
'prefs-info' => 'Informations de base',
'prefs-i18n' => 'Internationalisation',
@@ -1547,15 +1580,15 @@ Vous pouvez également décider de laisser les autres vous contacter via votre p
'right-userrights' => 'Modifier tous les droits d’un utilisateur',
'right-userrights-interwiki' => 'Modifier les droits d’utilisateurs qui sont sur un autre wiki',
'right-siteadmin' => 'Verrouiller ou déverrouiller la base de données',
-'right-reset-passwords' => 'Changer le mot de passe d’autres utilisateurs',
'right-override-export-depth' => 'Exporter les pages en incluant les pages liées jusqu’à une profondeur de 5 niveaux',
'right-sendemail' => 'Envoyer un courriel aux autres utilisateurs',
# 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',
-'rightsnone' => '(aucun)',
+'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',
+'rightsnone' => '(aucun)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'lire cette page',
@@ -1676,13 +1709,13 @@ Voyez la [[Special:NewFiles|galerie des nouvelles images]] pour une présentatio
'minlength1' => 'Le noms de fichiers doivent comprendre au moins une lettre.',
'illegalfilename' => "Le nom de fichier « $1 » contient des caractères interdits dans les titres de pages. Merci de le renommer et de l'importer à nouveau.",
'badfilename' => 'Le fichier a été renommé en « $1 ».',
-'filetype-mime-mismatch' => 'L’extension du fichier ne correspond pas au type MIME.',
+'filetype-mime-mismatch' => 'L’extension du fichier « .$1 » ne correspond pas au type MIME détecté du fichier ($2).',
'filetype-badmime' => 'Les fichiers du type MIME « $1 » ne peuvent pas être importés.',
'filetype-bad-ie-mime' => 'Le fichier ne peut pas être importé parce qu’il serait détecté comme « $1 » par Internet Explorer, ce qui correspond à un type de fichier interdit car potentiellement dangereux.',
'filetype-unwanted-type' => "'''« .$1 »''' est un format de fichier non désiré.
{{PLURAL:$3|Le type de fichier préconisé est|Les types de fichiers préconisés sont}} $2.",
-'filetype-banned-type' => "'''« .$1 »''' n’est pas une extension de fichier autorisée.
-{{PLURAL:$3|Le type de fichiers accepté est|Les types de fichiers acceptés sont}} $2.",
+'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.",
'filetype-missing' => 'Le fichier n’a aucune extension (comme « .jpg » par exemple).',
'empty-file' => 'Le fichier que vous avez soumis était vide.',
'file-too-large' => 'Le fichier que vous avez soumis était trop grand.',
@@ -1700,6 +1733,7 @@ Voyez la [[Special:NewFiles|galerie des nouvelles images]] pour une présentatio
'emptyfile' => 'Le fichier que vous voulez importer semble vide.
Ceci peut être dû à une erreur dans le nom du fichier.
Veuillez vérifier que vous désirez vraiment importer ce fichier.',
+'windows-nonascii-filename' => 'Ce wiki ne supporte pas les noms de fichiers avec des caractères spéciaux.',
'fileexists' => "Un fichier existe déjà sous ce nom.
Merci de vérifier '''<tt>[[:$1]]</tt>''' si vous n’êtes pas certain{{GENDER:||e|}} de vouloir le modifier.
[[$1|thumb]]",
@@ -1734,6 +1768,8 @@ Si vous voulez toujours importer votre fichier, veuillez revenir en arrière et
'php-uploaddisabledtext' => "L'import de fichiers a été désactivé dans PHP. Vérifiez l’option de configuration file_uploads.",
'uploadscripted' => 'Ce fichier contient du code HTML ou un script qui pourrait être interprété de façon incorrecte par un navigateur web.',
'uploadvirus' => 'Ce fichier contient un virus ! Pour plus de détails, consultez : $1',
+'uploadjava' => "C'est un fichier ZIP qui contient un fichier Java .class.
+Le téléchargement de fichiers Java n'est pas autorisé, car ils peuvent entraîner des restrictions de sécurité.",
'upload-source' => 'Fichier source',
'sourcefilename' => 'Nom du fichier source :',
'sourceurl' => 'URL source :',
@@ -1744,9 +1780,6 @@ Si vous voulez toujours importer votre fichier, veuillez revenir en arrière et
'watchthisupload' => 'Suivre ce fichier',
'filewasdeleted' => 'Un fichier avec ce nom a déjà été importé, puis supprimé.
Vous devriez vérifier $1 avant de l’importer à nouveau.',
-'upload-wasdeleted' => "'''Attention : vous êtes en train de recréer un fichier qui a déjà été supprimé auparavant.'''
-
-Vous devriez considérer s’il est opportun de continuer l'import de ce fichier. Le journal des suppressions vous donnera les éléments d’information :",
'filename-bad-prefix' => "Le nom du fichier commence par '''« $1 »''' qui est typiquement un nom attribué automatiquement par les appareils photo numériques.
Veuillez choisir un nom de fichier descriptif.",
'filename-prefix-blacklist' => ' #<!-- laisser cette ligne telle quelle --><pre>
@@ -1784,12 +1817,29 @@ Si le problème persiste, contactez un [[Special:ListUsers/sysop|administrateur]
'upload-unknown-size' => 'Taille inconnue',
'upload-http-error' => 'Une erreur HTTP est intervenue : $1',
+# ZipDirectoryReader
+'zip-file-open-error' => "Une erreur s'est produite lors de l'ouverture du fichier ZIP pour contrôle.",
+'zip-wrong-format' => "Le fichier spécifié n'est pas un fichier ZIP.",
+'zip-bad' => 'Le fichier est un fichier ZIP corrompu ou illisible.
+Il ne peut pas être correctement vérifié pour la sécurité.',
+'zip-unsupported' => 'Le fichier est un fichier ZIP qui utilise ZIP non supportées par MediaWiki.
+Il ne peut pas être correctement vérifé pour la sécurité.',
+
+# Special:UploadStash
+'uploadstash' => "Cache d'import",
+'uploadstash-summary' => "Cette page donne accès aux fichiers qui sont importés (ou en cours d'importation), mais ne sont pas encore publiés dans le wiki. Ces fichiers ne sont pas encore visibles, sauf pour l'utilisateur qui les a importés.",
+'uploadstash-clear' => 'Effacer les fichiers en cache',
+'uploadstash-nofiles' => "Vous n'avez pas de fichiers en cache d'import.",
+'uploadstash-badtoken' => "L'exécution de cette action a échoué, peut-être parce que vos informations d'identification ont expiré. Réessayez.",
+'uploadstash-errclear' => "L'effacement des fichiers a échoué.",
+'uploadstash-refresh' => 'Actualiser la liste des fichiers',
+
# img_auth script messages
'img-auth-accessdenied' => 'Accès refusé',
-'img-auth-nopathinfo' => 'PATH_INFO manquant.
+'img-auth-nopathinfo' => "PATH_INFO manquant.
Votre serveur n’est pas paramétré pour passer cette information.
Il fonctionne peut-être en CGI et ne supporte pas img_auth.
-Consultez http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Voyez les droits d'image.]",
'img-auth-notindir' => "Le chemin demandé n’est pas le répertoire d'import configuré.",
'img-auth-badtitle' => 'Impossible de construire un titre valide à partir de « $1 ».',
'img-auth-nologinnWL' => 'Vous n’êtes pas connecté et « $1 » n’est pas dans la liste blanche.',
@@ -1864,7 +1914,7 @@ La liste suivante affiche seulement {{PLURAL:$1|la première page qui utilise|le
Une [[Special:WhatLinksHere/$2|liste complète]] est disponible.',
'nolinkstoimage' => 'Aucune page n’utilise ce fichier.',
'morelinkstoimage' => 'Voir [[Special:WhatLinksHere/$1|plus de liens]] vers ce fichier.',
-'redirectstofile' => '{{PLURAL:$1|Le fichier suivant redirige|Les fichiers suivants redirigent}} vers celui-ci :',
+'linkstoimage-redirect' => '$1 (redirection de fichier) $2',
'duplicatesoffile' => '{{PLURAL:$1|Le fichier suivant est un duplicata|Les fichiers suivants sont des duplicatas}} de celui-ci ([[Special:FileDuplicateSearch/$2|plus de détails]]) :',
'sharedupload' => 'Ce fichier provient de : $1. Il peut être utilisé par d’autres projets.',
'sharedupload-desc-there' => 'Ce fichier provient de : $1. Il peut être utilisé par d’autres projets.
@@ -1955,18 +2005,19 @@ N’oubliez pas de vérifier s’il n’y a pas d’autres liens vers les modèl
'statistics-users-active-desc' => 'Utilisateurs ayant fait au moins une action durant {{PLURAL:$1|le dernier jours|les $1 derniers jours}}',
'statistics-mostpopular' => 'Pages les plus consultées',
-'disambiguations' => 'Pages d’homonymie',
+'disambiguations' => 'Pages ayant des liens vers des pages d’homonymie',
'disambiguationspage' => 'Template:Homonymie',
'disambiguations-text' => "Les pages suivantes comportent un lien vers une '''page d’homonymie'''.
Ces liens ambigus devraient plutôt pointer vers le bon article.<br />
Une page est considérée comme une page d’homonymie si elle inclut (directement ou récursivement) un des modèles listés sur [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Doubles redirections',
-'doubleredirectstext' => 'Voici une liste des pages qui redirigent vers des pages qui sont elles-mêmes des pages de redirection.
+'doubleredirects' => 'Doubles redirections',
+'doubleredirectstext' => 'Voici une liste des pages qui redirigent vers des pages qui sont elles-mêmes des pages de redirection.
Chaque entrée contient des liens vers la première et la seconde redirections, ainsi que la première ligne de texte de la seconde page, ce qui fournit habituellement la « vraie » page cible, vers laquelle la première redirection devrait rediriger.
Les entrées <del>barrées</del> ont été résolues.',
-'double-redirect-fixed-move' => 'Cette redirection, dont la cible [[$1]] a été renommée, mène maintenant vers [[$2]].',
-'double-redirect-fixer' => 'Correcteur de redirection',
+'double-redirect-fixed-move' => 'Cette redirection, dont la cible [[$1]] a été renommée, mène maintenant vers [[$2]].',
+'double-redirect-fixed-maintenance' => 'Corrige la double redirection de [[$1]] vers [[$2]].',
+'double-redirect-fixer' => 'Correcteur de redirection',
'brokenredirects' => 'Redirections cassées',
'brokenredirectstext' => 'Ces redirections mènent vers des pages inexistantes :',
@@ -2043,6 +2094,7 @@ Veuillez noter que d’autres sites peuvent avoir un lien direct vers un fichier
'pager-newer-n' => '{{PLURAL:$1|plus récente|$1 plus récentes}}',
'pager-older-n' => '{{PLURAL:$1|plus ancienne|$1 plus anciennes}}',
'suppress' => 'Superviser',
+'querypage-disabled' => 'Cette page spéciale est désactivée pour des raisons de performances.',
# Book sources
'booksources' => 'Ouvrages de référence',
@@ -2053,8 +2105,8 @@ Veuillez noter que d’autres sites peuvent avoir un lien direct vers un fichier
'booksources-invalid-isbn' => 'L’ISBN donné ne semble pas être correct ; vérifiez si vous avez fait une erreur en copiant la source originale.',
# Special:Log
-'specialloguserlabel' => 'Utilisateur :',
-'speciallogtitlelabel' => 'Titre :',
+'specialloguserlabel' => 'Artiste:',
+'speciallogtitlelabel' => 'Cible (titre ou utilisateur):',
'log' => 'Journaux d’opérations',
'all-logs-page' => 'Tous les journaux publics',
'alllogstext' => 'Affichage combiné de tous les journaux disponibles sur {{SITENAME}}.<br />
@@ -2098,8 +2150,9 @@ Voyez aussi [[Special:WantedCategories|les catégories demandées]].',
'linksearch-pat' => 'Expression recherchée :',
'linksearch-ns' => 'Espace de noms :',
'linksearch-ok' => 'Rechercher',
-'linksearch-text' => 'Des caractères « jokers » peuvent être utilisés, par exemple <code>*.wikipedia.org</code>.<br />
-Protocoles reconnus : <tt>$1</tt>.',
+'linksearch-text' => 'Des caractères jokers comme "*.wikipedia.org" peuvent être utilisés.
+Ils nécessitent au moins un domaine de niveau supérieur, par exemple "*.org".<br />
+Protocoles reconnus : <tt>$1</tt> (n\'ajoutez aucun de ceux-ci dans votre recherche).',
'linksearch-line' => '$1 est lié depuis $2',
'linksearch-error' => 'Les caractères jokers ne peuvent être utilisés qu’au début du nom de domaine de l’hôte.',
@@ -2160,6 +2213,10 @@ L’adresse électronique que vous avez indiquée dans [[Special:Preferences|vos
'noemailtext' => 'Cet utilisateur n’a pas spécifié une adresse de courriel valide.',
'nowikiemailtitle' => 'Pas de courriel autorisé',
'nowikiemailtext' => 'Cet utilisateur a choisi de ne pas recevoir de courriel de la part d’autres utilisateurs.',
+'emailnotarget' => "Nom d'utilisateur du destinataire inexistant ou invalide.",
+'emailtarget' => "Entrez le nom d'utilisateur du destinataire",
+'emailusername' => "Nom de l'utilisateur :",
+'emailusernamesubmit' => 'Soumettre',
'email-legend' => 'Envoyer un courriel à un autre utilisateur de {{SITENAME}}',
'emailfrom' => 'Expéditeur :',
'emailto' => 'Destinataire :',
@@ -2184,9 +2241,9 @@ L’adresse électronique que vous avez indiquée dans [[Special:Preferences|vos
'watchlistanontext' => 'Veuillez vous $1 pour visualiser ou modifier les éléments de votre liste de suivi.',
'watchnologin' => 'Non connecté',
'watchnologintext' => 'Vous devez être [[Special:UserLogin|identifié]] pour modifier votre liste de suivi.',
-'addedwatch' => 'Ajouté à la liste de suivi',
+'addwatch' => 'Ajouter à la liste de suivi',
'addedwatchtext' => "La page « [[:$1]] » a été ajoutée à votre [[Special:Watchlist|liste de suivi]]. Les prochaines modifications de cette page et de la page de discussion associée y seront répertoriées. La page apparaîtra '''en gras''' dans la [[Special:RecentChanges|liste des modifications récentes]] pour en faciliter le repérage.",
-'removedwatch' => 'Retirée de la liste de suivi',
+'removewatch' => 'Supprimer de la liste de suivi',
'removedwatchtext' => 'La page « [[:$1]] » a été retirée de votre [[Special:Watchlist|liste de suivi]].',
'watch' => 'Suivre',
'watchthispage' => 'Suivre cette page',
@@ -2207,8 +2264,9 @@ L’adresse électronique que vous avez indiquée dans [[Special:Preferences|vos
'watchlist-options' => 'Options de la liste de suivi',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Suivi…',
-'unwatching' => 'Fin du suivi…',
+'watching' => 'Suivi…',
+'unwatching' => 'Fin du suivi…',
+'watcherrortext' => "Une erreur s'est produite lors de la modification des paramètres de votre liste de suivi pour « $1 ».",
'enotif_mailer' => 'Système de notification par courriel de {{SITENAME}}',
'enotif_reset' => 'Marquer toutes les pages comme visitées',
@@ -2239,16 +2297,16 @@ Vous pouvez aussi réinitialiser les drapeaux de notification pour toutes les pa
--
Pour modifier les paramètres de notification par courriel, visitez
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Pour modifier les paramètres de votre liste de suivi, visitez
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Pour supprimer la page de votre liste de suivi, visitez
$UNWATCHURL
Retour et assistance :
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Supprimer la page',
@@ -2263,7 +2321,7 @@ Retour et assistance :
'confirmdeletetext' => 'Vous êtes sur le point de supprimer une page ou un fichier, ainsi que toutes ses versions antérieures historisées. Veuillez confirmer que c’est bien là ce que vous voulez faire, que vous en comprenez les conséquences et que vous faites ceci en accord avec les [[{{MediaWiki:Policy-url}}|règles internes]].',
'actioncomplete' => 'Action effectuée',
'actionfailed' => 'L’action a échoué',
-'deletedtext' => '« <nowiki>$1</nowiki> » a été supprimée.
+'deletedtext' => '« $1 » a été supprimée.
Voir $2 pour une liste des suppressions récentes.',
'deletedarticle' => 'a supprimé « [[$1]] »',
'suppressedarticle' => 'a supprimé « [[$1]] »',
@@ -2324,7 +2382,7 @@ Consultez la [[Special:ProtectedPages|liste des pages protégées]] pour la list
'protect_expiry_invalid' => 'La date d’expiration est invalide.',
'protect_expiry_old' => 'La date d’expiration est déjà passée.',
'protect-unchain-permissions' => 'Déverrouiller davantage d’options de protection',
-'protect-text' => "Vous pouvez consulter et modifier le niveau de protection de la page '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Vous pouvez consulter et modifier le niveau de protection de la page '''$1'''.",
'protect-locked-blocked' => "Vous ne pouvez pas modifier les niveaux de protection tant que vous êtes bloqué{{GENDER:||e|(e)}}.
Voici les réglages actuels de la page '''$1''' :",
'protect-locked-dblock' => "Le niveau de protection ne peut pas être modifié car la base de données est verrouillée.
@@ -2379,8 +2437,7 @@ Voici les réglages actuels de la page '''$1''' :",
L’archive peut être nettoyée périodiquement.',
'undelete-fieldset-title' => 'Restaurer les versions',
'undeleteextrahelp' => "Pour restaurer l’historique complet de cette page, laissez toutes les cases décochées et cliquez sur '''''Restaurer'''''.
-Pour effectuer une restauration partielle, cochez les cases correspondant aux versions à rétablir, puis cliquez sur '''''Restaurer'''''.
-Cliquer sur '''''Réinitialiser''''' effacera la boîte de commentaire et réinitialisera toutes les cases à cocher.",
+Pour effectuer une restauration partielle, cochez les cases correspondant aux versions à rétablir, puis cliquez sur '''''Restaurer'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|version archivée|versions archivées}}',
'undeletehistory' => 'Si vous restaurez la page, toutes les versions seront replacées dans l’historique.
Si une nouvelle page avec le même nom a été créée depuis la suppression, les versions restaurées apparaîtront dans l’historique antérieur et la version courante ne sera pas automatiquement remplacée.',
@@ -2426,9 +2483,12 @@ $1',
'undelete-show-file-submit' => 'Oui',
# Namespace form on various pages
-'namespace' => 'Espace de noms :',
-'invert' => 'Inverser la sélection',
-'blanknamespace' => '(Principal)',
+'namespace' => 'Espace de noms :',
+'invert' => 'Inverser la sélection',
+'tooltip-invert' => "Cochez cette case pour cacher les modifications des pages dans l'espace de noms sélectionné (et l'espace de noms associé si coché)",
+'namespace_association' => 'Espace de noms associé',
+'tooltip-namespace_association' => "Cochez cette case pour inclure également l'espace de noms de discussion associé à l'espace de noms sélectionné",
+'blanknamespace' => '(Principal)',
# Contributions
'contributions' => 'Contributions de l’utilisateur',
@@ -2477,13 +2537,15 @@ La dernière entrée du journal des blocages est indiquée ci-dessous à titre d
'whatlinkshere-filters' => 'Filtres',
# Block/unblock
+'autoblockid' => 'Blocage automatique #$1',
+'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.
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).',
-'ipaddress' => 'Adresse IP :',
'ipadressorusername' => 'Adresse IP ou nom d’utilisateur :',
'ipbexpiry' => 'Durée avant expiration :',
'ipbreason' => 'Motif :',
@@ -2496,7 +2558,7 @@ Donnez ci-dessous un motif précis (par exemple en citant les pages qui ont étÃ
** Tentative d’intimidation ou harcèlement
** Abus d’utilisation de comptes multiples
** Nom d’utilisateur inacceptable, injurieux ou diffamant',
-'ipbanononly' => 'Bloquer uniquement les utilisateurs anonymes',
+'ipb-hardblock' => 'Empêche les modifications des utilisateurs enregistrés 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',
@@ -2507,12 +2569,15 @@ Donnez ci-dessous un motif précis (par exemple en citant les pages qui ont étÃ
'ipbotherreason' => 'Motif différent ou supplémentaire :',
'ipbhidename' => 'Masquer le nom d’utilisateur des modifications et des listes',
'ipbwatchuser' => 'Suivre les pages utilisateur et de discussion de cet utilisateur',
-'ipballowusertalk' => 'Permettre à cet utilisateur de modifier sa propre page de discussion durant sa période de blocage',
+'ipb-disableusertalk' => 'Empêche 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',
+'ipb-confirm' => 'Confirmer le blocage',
'badipaddress' => 'Adresse IP incorrecte',
'blockipsuccesssub' => 'Blocage réussi',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] a été bloqué{{GENDER:$1||e|}}.<br />
Consultez la [[Special:IPBlockList|liste des adresses IP et comptes bloqués]] 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-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',
@@ -2522,17 +2587,23 @@ Consultez la [[Special:IPBlockList|liste des adresses IP et comptes bloqués]] p
'unblockiptext' => 'Utilisez le formulaire ci-dessous pour rétablir l’accès aux modifications depuis une adresse IP ou un nom d’utilisateur.',
'ipusubmit' => 'Supprimer ce blocage',
'unblocked' => '[[User:$1|$1]] a été débloqué',
+'unblocked-range' => '$1 a été débloqué',
'unblocked-id' => 'Le blocage $1 a été enlevé',
+'blocklist' => 'Utilisateurs bloqués',
'ipblocklist' => 'Utilisateurs bloqués',
'ipblocklist-legend' => 'Chercher un utilisateur bloqué',
-'ipblocklist-username' => 'Nom de l’utilisateur ou adresse IP :',
-'ipblocklist-sh-userblocks' => '$1 les blocages de comptes',
-'ipblocklist-sh-tempblocks' => '$1 les blocages temporaires',
-'ipblocklist-sh-addressblocks' => '$1 les blocages d’adresses IP uniques',
+'blocklist-userblocks' => 'Masquer les blocages de comptes',
+'blocklist-tempblocks' => 'Masquer les blocages temporaires',
+'blocklist-addressblocks' => 'Masquer les blocages d’adresses IP uniques',
+'blocklist-timestamp' => 'Date et heure',
+'blocklist-target' => 'Cible',
+'blocklist-expiry' => 'Date d’expiration',
+'blocklist-by' => 'Administrateur ayant effectué le blocage',
+'blocklist-params' => 'Paramètres de blocage',
+'blocklist-reason' => 'Motif',
'ipblocklist-submit' => 'Rechercher',
'ipblocklist-localblock' => 'Blocage local',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Autre blocage|Autres blocages}}',
-'blocklistline' => '$1 : $2 a bloqué $3 ; $4',
'infiniteblock' => 'permanent',
'expiringblock' => 'expire le $1 à $2',
'anononlyblock' => 'utilisateur non enregistré uniquement',
@@ -2555,7 +2626,7 @@ Le motif fourni pour le blocage de $1 est : « $2 ».',
'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.
Les adresses IP automatiquement bloquées ne sont pas listées.
-Consultez la [[Special:IPBlockList|liste des IP bloquées]] pour voir les bannissements et blocages effectivement en cours.',
+Consultez la [[Special:BlockList|liste des IP bloquées]] 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',
@@ -2569,9 +2640,9 @@ Consultez la [[Special:IPBlockList|liste des IP bloquées]] pour voir les bannis
'ipb_expiry_temp' => 'Les blocages de noms d’utilisateurs cachés doivent être permanents.',
'ipb_hide_invalid' => 'Impossible de supprimer ce compte ; il semble avoir trop de modifications.',
'ipb_already_blocked' => '« $1 » est déjà bloqué',
-'ipb-needreblock' => '== Déjà bloqué ==
-$1 est déjà bloqué. Voulez-vous modifier les paramètres ?',
+'ipb-needreblock' => '$1 est déjà bloqué. Voulez-vous modifier les paramètres ?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Autre blocage|Autres blocages}}',
+'unblock-hideuser' => "Vous ne pouvez pas débloquer cet utilisateur, car son nom d'utilisateur a été masqué.",
'ipb_cant_unblock' => 'Erreur : identifiant de blocage $1 non trouvé.
Il est possible qu’un déblocage ait déjà été effectué.',
'ipb_blocked_as_range' => 'Erreur : l’adresse IP $1 n’est pas bloquée directement et ne peut donc pas être débloquée.
@@ -2612,6 +2683,7 @@ N’oubliez pas de la [[Special:UnlockDB|déverrouiller]] lorsque vous aurez ter
'lockfilenotwritable' => 'Le fichier de verrouillage de la base de données n’est pas inscriptible.
Pour bloquer ou débloquer la base de données, il doit être accessible par le serveur web.',
'databasenotlocked' => 'La base de données n’est pas verrouillée.',
+'lockedbyandtime' => '(par $1 le $2 à $3)',
# Move page
'move-page' => 'Renommer $1',
@@ -2881,6 +2953,7 @@ Permet de rétablir la version précédente et d’ajouter un motif dans la boî
'modern.css' => '/* Le CSS placé ici affectera les utilisateurs de l’habillage Modern. */',
'print.css' => '/* Le CSS placé ici affectera les impressions */',
'handheld.css' => '/* Le CSS placé ici affectera les appareils mobiles en fonction de l\'habillage configuré $wgHandheldStyle */',
+'group-sysop.css' => '/* Le CSS inclus ici n’affectera que les administrateurs */',
# Scripts
'common.js' => '/* Tout JavaScript ici sera chargé avec chaque page accédée par n’importe quel utilisateur. */',
@@ -2892,11 +2965,10 @@ Permet de rétablir la version précédente et d’ajouter un motif dans la boî
'chick.js' => '/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Poussin uniquement */',
'simple.js' => '/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Simple uniquement */',
'modern.js' => '/* Tout JavaScript ici sera chargé avec les pages accédées par les utilisateurs de l’habillage Moderne uniquement */',
+'group-sysop.js' => '/* Le JavaScript inclus ici n’affectera que les administrateurs */',
# Metadata
-'nodublincore' => 'Les métadonnées « Dublin Core RDF » sont désactivées sur ce serveur.',
-'nocreativecommons' => 'Les métadonnées « Creative Commons RDF » sont désactivées sur ce serveur.',
-'notacceptable' => 'Ce serveur wiki ne peut pas fournir les données dans un format que votre client soit capable de lire.',
+'notacceptable' => 'Ce serveur wiki ne peut pas fournir les données dans un format que votre client soit capable de lire.',
# Attribution
'anonymous' => '{{PLURAL:$1|Utilisateur non enregistré|Utilisateurs non enregistrés}} sur {{SITENAME}}',
@@ -2919,12 +2991,17 @@ Permet de rétablir la version précédente et d’ajouter un motif dans la boî
'spam_blanking' => 'Toutes les versions contenant des liens vers $1 sont blanchies',
# Info page
-'infosubtitle' => 'Informations pour la page',
-'numedits' => 'Nombre de modifications : $1',
-'numtalkedits' => 'Nombre de modifications (page de discussion) : $1',
-'numwatchers' => 'Nombre de contributeurs ayant la page dans leur liste de suivi : $1',
-'numauthors' => 'Nombre d’auteurs distincts : $1',
-'numtalkauthors' => 'Nombre d’auteurs distincts (page de discussion) : $1',
+'pageinfo-title' => 'Informations pour « $1 »',
+'pageinfo-header-edits' => 'Modifications',
+'pageinfo-header-watchlist' => 'Liste de suivi',
+'pageinfo-header-views' => 'Vues',
+'pageinfo-subjectpage' => 'Page',
+'pageinfo-talkpage' => 'Page de discussion',
+'pageinfo-watchers' => 'Nombre de contributeurs ayant la page dans leur liste de suivi',
+'pageinfo-edits' => 'Nombre de modifications',
+'pageinfo-authors' => "Nombre d'auteurs distincts",
+'pageinfo-views' => 'Nombre de vues',
+'pageinfo-viewsperedit' => 'Visites par modification',
# Skin names
'skinname-standard' => 'Standard',
@@ -2937,25 +3014,6 @@ Permet de rétablir la version précédente et d’ajouter un motif dans la boî
'skinname-modern' => 'Moderne',
'skinname-vector' => 'Vector',
-# Math options
-'mw_math_png' => 'Toujours produire une image PNG',
-'mw_math_simple' => 'HTML si très simple, autrement PNG',
-'mw_math_html' => 'HTML si possible, autrement PNG',
-'mw_math_source' => 'Laisser le code TeX original',
-'mw_math_modern' => 'Pour les navigateurs modernes',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'Erreur math',
-'math_unknown_error' => 'erreur indéterminée',
-'math_unknown_function' => 'fonction inconnue',
-'math_lexing_error' => 'erreur lexicale',
-'math_syntax_error' => 'erreur de syntaxe',
-'math_image_error' => 'La conversion en PNG a échoué ; vérifiez l’installation de latex et dvipng (ou dvips + gs + convert)',
-'math_bad_tmpdir' => 'Impossible de créer ou d’écrire dans le répertoire math temporaire',
-'math_bad_output' => 'Impossible de créer ou d’écrire dans le répertoire math de sortie',
-'math_notexvc' => 'L’exécutable « texvc » est introuvable. Lisez math/README pour le configurer.',
-
# Patrolling
'markaspatrolleddiff' => 'Marquer comme relue',
'markaspatrolledtext' => 'Marquer cette page comme relue',
@@ -2991,22 +3049,25 @@ $1',
'nextdiff' => 'Modification suivante →',
# Media information
-'mediawarning' => "'''Attention :''' ce type de fichier peut contenir du code malveillant.
+'mediawarning' => "'''Attention :''' ce type de fichier peut contenir du code malveillant.
Si vous l’exécutez, votre système peut être compromis.",
-'imagemaxsize' => "Taille maximale des images :<br />''(pour les pages de description de fichier)''",
-'thumbsize' => 'Taille de la miniature :',
-'widthheightpage' => '$1 × $2, $3 page{{PLURAL:$3||s}}',
-'file-info' => 'Taille du fichier : $1, type MIME : $2',
-'file-info-size' => '$1 × $2 pixels, taille du fichier : $3, type MIME : $4',
-'file-nohires' => '<small>Pas de plus haute résolution disponible.</small>',
-'svg-long-desc' => 'Fichier SVG, résolution de $1 × $2 pixels, taille : $3',
-'show-big-image' => 'Image en plus haute résolution',
-'show-big-image-thumb' => '<small>Taille de cet aperçu : $1 × $2 pixels</small>',
-'file-info-gif-looped' => 'en boucle',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|image|images}}',
-'file-info-png-looped' => 'en boucle',
-'file-info-png-repeat' => 'joué $1 {{PLURAL:$1|fois|fois}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|image|images}}',
+'imagemaxsize' => "Taille maximale des images :<br />''(pour les pages de description de fichier)''",
+'thumbsize' => 'Taille de la miniature :',
+'widthheightpage' => '$1 × $2, $3 page{{PLURAL:$3||s}}',
+'file-info' => 'Taille du fichier : $1, type MIME : $2',
+'file-info-size' => '$1 × $2 pixels, taille du fichier : $3, type MIME : $4',
+'file-info-size-pages' => '$1 × $2 pixels, taille de fichier: $3, type MIME: $4, $5 {{PLURAL:$5|page|pages}}',
+'file-nohires' => '<small>Pas de plus haute résolution disponible.</small>',
+'svg-long-desc' => 'Fichier SVG, résolution de $1 × $2 pixels, taille : $3',
+'show-big-image' => 'Image en plus haute résolution',
+'show-big-image-preview' => '<small>Taille de cet aperçu : $1.</small>',
+'show-big-image-other' => '<small>Autres résolutions : $1.</small>',
+'show-big-image-size' => '$1 × $2 pixels',
+'file-info-gif-looped' => 'en boucle',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|image|images}}',
+'file-info-png-looped' => 'en boucle',
+'file-info-png-repeat' => 'joué $1 {{PLURAL:$1|fois|fois}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|image|images}}',
# Special:NewFiles
'newimages' => 'Galerie des nouveaux fichiers',
@@ -3031,14 +3092,20 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
'metadata-help' => 'Ce fichier contient des informations supplémentaires, probablement ajoutées par l’appareil photo numérique ou le numériseur utilisé pour le créer. Si le fichier a été modifié depuis son état original, certains détails peuvent ne pas refléter entièrement l’image modifiée.',
'metadata-expand' => 'Afficher les informations détaillées',
'metadata-collapse' => 'Masquer les informations détaillées',
-'metadata-fields' => 'Les champs de métadonnées d’EXIF listés dans ce message seront inclus dans la page de description de l’image quand la table de métadonnées sera réduite. Les autres champs seront cachés par défaut.
+'metadata-fields' => 'Les champs de métadonnées d’image listés dans ce message seront inclus dans la page de description de l’image quand la table de métadonnées sera réduite. Les autres champs seront cachés par défaut.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Largeur',
@@ -3053,13 +3120,11 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
'exif-ycbcrpositioning' => 'Positionnement YCbCr',
'exif-xresolution' => 'Résolution horizontale',
'exif-yresolution' => 'Résolution verticale',
-'exif-resolutionunit' => 'Unité de résolution',
'exif-stripoffsets' => 'Emplacement des données de l’image',
'exif-rowsperstrip' => 'Nombre de lignes par bande',
'exif-stripbytecounts' => 'Taille en octets par bande',
'exif-jpeginterchangeformat' => 'Position du SOI JPEG',
'exif-jpeginterchangeformatlength' => 'Taille en octets des données JPEG',
-'exif-transferfunction' => 'Fonction de transfert',
'exif-whitepoint' => 'Chromaticité du point blanc',
'exif-primarychromaticities' => 'Chromaticité des primaires',
'exif-ycbcrcoefficients' => 'Coefficients YCbCr',
@@ -3078,7 +3143,6 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
'exif-compressedbitsperpixel' => 'Mode de compression de l’image',
'exif-pixelydimension' => 'Largeur de l’image',
'exif-pixelxdimension' => 'Hauteur de l’image',
-'exif-makernote' => 'Notes du fabricant',
'exif-usercomment' => 'Commentaires de l’utilisateur',
'exif-relatedsoundfile' => 'Fichier audio associé',
'exif-datetimeoriginal' => 'Date de la prise originelle',
@@ -3092,7 +3156,6 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
'exif-exposureprogram' => 'Programme d’exposition',
'exif-spectralsensitivity' => 'Sensibilité spectrale',
'exif-isospeedratings' => 'Sensibilité ISO',
-'exif-oecf' => 'Fonction de conversion opto-électronique',
'exif-shutterspeedvalue' => 'vitesse d’obturation de l’APEX',
'exif-aperturevalue' => 'Ouverture de l’APEX',
'exif-brightnessvalue' => 'Luminance APEX',
@@ -3105,7 +3168,6 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
'exif-focallength' => 'Longueur focale',
'exif-subjectarea' => 'Emplacement du sujet',
'exif-flashenergy' => 'Énergie du flash',
-'exif-spatialfrequencyresponse' => 'Fréquence spatiale',
'exif-focalplanexresolution' => 'Résolution horizontale du plan focal',
'exif-focalplaneyresolution' => 'Résolution verticale du plan focal',
'exif-focalplaneresolutionunit' => 'Unité de résolution du plan focal',
@@ -3114,7 +3176,6 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
'exif-sensingmethod' => 'Type de capteur',
'exif-filesource' => 'Source du fichier',
'exif-scenetype' => 'Type de scène',
-'exif-cfapattern' => 'Motif CFA',
'exif-customrendered' => 'Rendu personnalisé',
'exif-exposuremode' => 'Mode d’exposition',
'exif-whitebalance' => 'Balance des blancs',
@@ -3159,10 +3220,79 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
'exif-gpsareainformation' => 'Nom de la zone GPS',
'exif-gpsdatestamp' => 'Date GPS',
'exif-gpsdifferential' => 'Correction différentielle GPS',
+'exif-jpegfilecomment' => 'Commentaire de fichier JPEG',
+'exif-keywords' => 'Mots-clés',
+'exif-worldregioncreated' => 'Région du monde dans laquelle la photo a été prise',
+'exif-countrycreated' => 'Pays dans lequel la photo a été prise',
+'exif-countrycodecreated' => 'Code du pays dans lequel la photo a été prise',
+'exif-provinceorstatecreated' => 'Province ou État dans lequel la photo a été prise',
+'exif-citycreated' => 'Ville dans laquelle la photo a été prise',
+'exif-sublocationcreated' => 'Partie de la ville dans laquelle la photo a été prise',
+'exif-worldregiondest' => 'Région du monde représentée',
+'exif-countrydest' => 'Pays représenté',
+'exif-countrycodedest' => 'Code du pays représenté',
+'exif-provinceorstatedest' => 'Province ou État représenté',
+'exif-citydest' => 'Ville représentée',
+'exif-sublocationdest' => 'Partie de la ville représentée',
'exif-objectname' => 'Titre court',
+'exif-specialinstructions' => 'Instructions spéciales',
+'exif-headline' => 'Titre',
+'exif-credit' => 'Crédit / fournisseur',
+'exif-source' => 'Source',
+'exif-editstatus' => 'Statut éditorial de l’image',
+'exif-urgency' => 'Urgence',
+'exif-fixtureidentifier' => 'Nom élément récurrent',
+'exif-locationdest' => 'Lieu représenté',
+'exif-locationdestcode' => 'Code du lieu représenté',
+'exif-objectcycle' => 'Moment de la journée auquel ce média est destiné',
+'exif-contact' => 'Informations de contact',
+'exif-writer' => 'Auteur',
+'exif-languagecode' => 'Langue',
+'exif-iimversion' => 'version IIM',
+'exif-iimcategory' => 'Catégorie',
+'exif-iimsupplementalcategory' => 'Catégories supplémentaires',
+'exif-datetimeexpires' => 'Ne pas utiliser après',
+'exif-datetimereleased' => 'Paru le',
+'exif-originaltransmissionref' => 'Code de localisation de la transmission originale',
+'exif-identifier' => 'Identifiant',
+'exif-lens' => 'Lentille utilisée',
+'exif-serialnumber' => 'Numéro de série de l’appareil photo',
+'exif-cameraownername' => "Propriétaire de l'appareil photo",
+'exif-label' => 'Étiquette',
+'exif-datetimemetadata' => 'Date de la dernière modification des métadonnées',
+'exif-nickname' => 'Nom informel de l’image',
+'exif-rating' => 'Note (sur 5)',
+'exif-rightscertificate' => 'Certificat de gestion des droits',
+'exif-copyrighted' => 'Statut du droit d’auteur',
+'exif-copyrightowner' => 'Détenteur du droit d’auteur',
+'exif-usageterms' => 'Conditions d’utilisation',
+'exif-webstatement' => 'Déclaration de droits d’auteur en ligne',
+'exif-originaldocumentid' => 'Identifiant unique du document original',
+'exif-licenseurl' => 'URL de la licence',
+'exif-morepermissionsurl' => 'Informations sur les licences alternatives',
+'exif-attributionurl' => 'Lors de la réutilisation de ce travail, veuillez lier à',
+'exif-preferredattributionname' => 'Lors de la réutilisation de ce travail, veuillez créditer',
+'exif-pngfilecomment' => 'Commentaire de fichier PNG',
+'exif-disclaimer' => 'Désistement',
+'exif-contentwarning' => 'Avertissement sur le contenu',
+'exif-giffilecomment' => 'Commentaire de fichier GIF',
+'exif-intellectualgenre' => 'Type d’élément',
+'exif-subjectnewscode' => 'Code du sujet',
+'exif-scenecode' => 'Code de scène IPTC',
+'exif-event' => 'Événement représenté',
+'exif-organisationinimage' => 'Organisation représentée',
+'exif-personinimage' => 'Personne représentée',
+'exif-originalimageheight' => 'Hauteur de l’image avant qu’elle ait été recadrée',
+'exif-originalimagewidth' => 'Largeur de l’image avant qu’elle ait été recadrée',
# EXIF attributes
'exif-compression-1' => 'Non compressé',
+'exif-compression-2' => 'CCITT Groupe 3 Longueur du codage Huffman modifié de dimension 1',
+'exif-compression-3' => 'CCITT Groupe 3 codage du fax',
+'exif-compression-4' => 'CCITT Groupe 4 codage du fax',
+
+'exif-copyrighted-true' => 'Soumis au droit d’auteur',
+'exif-copyrighted-false' => 'Domaine public',
'exif-unknowndate' => 'Date inconnue',
@@ -3178,7 +3308,7 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
'exif-planarconfiguration-1' => 'Données contiguës',
'exif-planarconfiguration-2' => 'Données séparées',
-'exif-colorspace-ffff.h' => 'Non calibré',
+'exif-colorspace-65535' => 'Non calibré',
'exif-componentsconfiguration-0' => 'N’existe pas',
'exif-componentsconfiguration-5' => 'V',
@@ -3294,6 +3424,10 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
'exif-gpslongitude-e' => 'Est',
'exif-gpslongitude-w' => 'Ouest',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|mètre|mètres}} au-dessus du niveau de la mer',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|mètre|mètres}} au-dessous du niveau de la mer',
+
'exif-gpsstatus-a' => 'Mesure en cours',
'exif-gpsstatus-v' => 'Interfonctionnement de la mesure',
@@ -3305,21 +3439,73 @@ Les autres liens sur la même ligne sont considérés comme des exceptions, par
'exif-gpsspeed-m' => 'Milles à l’heure',
'exif-gpsspeed-n' => 'NÅ“ud',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilomètres',
+'exif-gpsdestdistance-m' => 'Milles',
+'exif-gpsdestdistance-n' => 'Milles marins',
+
+'exif-gpsdop-excellent' => 'Excellente ($1)',
+'exif-gpsdop-good' => 'Bonne ($1)',
+'exif-gpsdop-moderate' => 'Moyenne ($1)',
+'exif-gpsdop-fair' => 'Passable ($1)',
+'exif-gpsdop-poor' => 'Mauvaise ($1)',
+
+'exif-objectcycle-a' => 'Matin seulement',
+'exif-objectcycle-p' => 'Soirée seulement',
+'exif-objectcycle-b' => 'Matin et soir',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Nord vrai',
'exif-gpsdirection-m' => 'Nord magnétique',
+'exif-ycbcrpositioning-1' => 'Centré',
+'exif-ycbcrpositioning-2' => 'Co-situé',
+
+'exif-dc-contributor' => 'Contributeurs',
+'exif-dc-coverage' => 'Portée spatiale ou temporelle du média',
+'exif-dc-date' => 'Date(s)',
+'exif-dc-publisher' => 'Éditeur',
+'exif-dc-relation' => 'Médias connexes',
+'exif-dc-rights' => 'Droits',
+'exif-dc-source' => 'Média source',
+'exif-dc-type' => 'Type de média',
+
+'exif-rating-rejected' => 'Rejeté',
+
+'exif-isospeedratings-overflow' => 'Plus grand que 65535',
+
+'exif-iimcategory-ace' => 'Arts, culture et loisirs',
+'exif-iimcategory-clj' => 'Crime et droit',
+'exif-iimcategory-dis' => 'Catastrophes et accidents',
+'exif-iimcategory-fin' => 'Économie et affaires',
+'exif-iimcategory-edu' => 'Éducation',
+'exif-iimcategory-evn' => 'Environnement',
+'exif-iimcategory-hth' => 'Santé',
+'exif-iimcategory-hum' => 'Intérêt humain',
+'exif-iimcategory-lab' => 'Travail',
+'exif-iimcategory-lif' => 'Mode de vie et de loisirs',
+'exif-iimcategory-pol' => 'Politique',
+'exif-iimcategory-rel' => 'Religion et croyances',
+'exif-iimcategory-sci' => 'Science et technologie',
+'exif-iimcategory-soi' => 'Questions sociales',
+'exif-iimcategory-spo' => 'Sports',
+'exif-iimcategory-war' => 'Guerre, conflit et trouble',
+'exif-iimcategory-wea' => 'Météo',
+
+'exif-urgency-normal' => 'Normale ($1)',
+'exif-urgency-low' => 'Faible ($1)',
+'exif-urgency-high' => 'Haute ($1)',
+'exif-urgency-other' => 'Urgence définie par l’utilisateur ($1)',
+
# External editor support
'edit-externally' => 'Modifier ce fichier en utilisant une application externe',
'edit-externally-help' => '(Consulter [//www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] pour plus d’informations)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'toutes',
-'imagelistall' => 'toutes',
-'watchlistall2' => 'tout',
-'namespacesall' => 'Tous',
-'monthsall' => 'tous',
-'limitall' => 'tous',
+'watchlistall2' => 'tout',
+'namespacesall' => 'Tous',
+'monthsall' => 'tous',
+'limitall' => 'tous',
# E-mail address confirmation
'confirmemail' => 'Confirmer l’adresse de courriel',
@@ -3407,17 +3593,24 @@ $1',
'trackbackdeleteok' => 'Le rétrolien a été supprimé avec succès.',
# 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 :
+'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 :
: ''$2''
Veuillez confirmer que vous désirez réellement recréer cette page.",
-'recreate' => 'Recréer',
+'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.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Ajouter cette page à votre liste de suivi ?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Supprimer cette page de votre liste de suivi ?',
+
# Separators for various lists, etc.
'semicolon-separator' => '&nbsp;;&#32;',
'colon-separator' => '&nbsp;:&#32;',
@@ -3473,14 +3666,14 @@ Essayez la prévisualisation normale.',
'watchlistedit-normal-legend' => 'Retirer des titres de la liste de suivi',
'watchlistedit-normal-explain' => 'Les titres de votre liste de suivi sont visibles ci-dessous.
Pour enlever un titre de la liste (et sa page de discussion), cochez la case à côté puis cliquez sur le bouton « {{int:Watchlistedit-normal-submit}} ».
-Vous pouvez aussi [[Special:Watchlist/raw|modifier la liste en mode brut]].',
+Vous pouvez aussi [[Special:EditWatchlist/raw|modifier la liste en mode brut]].',
'watchlistedit-normal-submit' => 'Retirer les titres sélectionnés',
'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).
Lorsque vous avez fini, cliquez sur le bouton « {{int:Watchlistedit-raw-submit}} » en bas.
-Vous pouvez aussi [[Special:Watchlist/edit|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.',
@@ -3503,33 +3696,33 @@ Vous pouvez aussi [[Special:Watchlist/edit|utiliser l’éditeur normal]].',
'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-variables' => 'Variables',
-'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-skin-extension-functions' => 'Fonctions d’extension de l’habillage',
-'version-hook-name' => 'Nom du greffon',
-'version-hook-subscribedby' => 'Abonnés :',
-'version-version' => '(Version $1)',
-'version-license' => 'Licence',
-'version-poweredby-credits' => "Ce wiki fonctionne grâce à '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'autres',
-'version-license-info' => "MediaWiki est un logiciel libre, vous pouvez le redistribuer et / 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' => 'Version',
+'version-extensions' => 'Extensions installées',
+'version-specialpages' => 'Pages spéciales',
+'version-parserhooks' => 'Greffons de l’analyseur syntaxique',
+'version-variables' => 'Variables',
+'version-antispam' => 'Prévention du pourriel',
+'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-hook-name' => 'Nom du greffon',
+'version-hook-subscribedby' => 'Abonnés :',
+'version-version' => '(Version $1)',
+'version-license' => 'Licence',
+'version-poweredby-credits' => "Ce wiki fonctionne grâce à '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'autres',
+'version-license-info' => "MediaWiki est un logiciel libre, vous pouvez le redistribuer et / 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 A 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 [http://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',
+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',
# Special:FilePath
'filepath' => 'Chemin d’accès du fichier',
@@ -3539,22 +3732,22 @@ Vous devriez avoir reçu [{{SERVER}}{{SCRIPTPATH}}/COPYING une copie de la Licen
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.
-
-Entrez le nom du fichier sans le préfixe « {{ns:file}}: ».',
-'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-n' => 'Le fichier « $1 » a {{PLURAL:$2|1 doublon|$2 doublons}}.',
+'fileduplicatesearch' => 'Recherche de doublons',
+'fileduplicatesearch-summary' => 'Recherche des copies de fichiers identiques d’après leur empreinte de hachage.',
+'fileduplicatesearch-legend' => 'Rechercher un doublon',
+'fileduplicatesearch-filename' => 'Nom du fichier :',
+'fileduplicatesearch-submit' => 'Rechercher',
+'fileduplicatesearch-info' => '$1 × $2 pixels<br />Taille du fichier : $3<br />Type MIME : $4',
+'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é.',
# Special:SpecialPages
'specialpages' => 'Pages spéciales',
'specialpages-note' => '----
* Pages spéciales normales.
-* <strong class="mw-specialpagerestricted">Pages spéciales restreintes.</strong>',
+* <span class="mw-specialpagerestricted">Pages spéciales restreintes.</span>
+* <span class="mw-specialpagecached">Pages spéciales seulement en cache (pourraient être obsolètes).</span>',
'specialpages-group-maintenance' => 'Rapports de maintenance',
'specialpages-group-other' => 'Autres pages spéciales',
'specialpages-group-login' => 'S’identifier / s’inscrire',
diff --git a/languages/messages/MessagesFrc.php b/languages/messages/MessagesFrc.php
index 46d1a6f4..18da6dba 100644
--- a/languages/messages/MessagesFrc.php
+++ b/languages/messages/MessagesFrc.php
@@ -16,6 +16,8 @@
* @author Zetud
*/
+$fallback = 'fr';
+
$messages = array(
# User preference toggles
'tog-underline' => 'Souligner les liens:',
@@ -126,15 +128,6 @@ $messages = array(
'category-media-header' => 'Média dans classe "$1"',
'category-empty' => "''À présent, cette classe a ni articles ni média.''",
-'mainpagetext' => "'''Vous avez bien installé MediaWiki.'''",
-'mainpagedocfooter' => 'Lisez la [http://meta.wikimedia.org/wiki/Help:Contents Guide des Useurs] pour apprendre à user le wiki software.
-
-== Pour Commencer ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Réglage]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki: Questions Souvent Posées]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki Liste à Malle]',
-
'about' => 'Info',
'article' => 'Page des matières',
'newwindow' => '(va ouverre une nouvelle fenêtre)',
@@ -328,7 +321,6 @@ Demande: $2',
'cascadeprotected' => 'Cette page est protégée parce qu’elle est incluse par {{PLURAL:$1|la page suivante, qui est protégée|les pages suivantes, qui sont protégées}} avec l’option « protection en cascade » activée :
$2',
'namespaceprotected' => 'Vous avez pas la permission de changer les pages dans l\'espace de noms "$1".',
-'customcssjsprotected' => "Vous avez pas la permission de changer cette page parce qu'alle contient le réglage d'un autre useur.",
'ns-specialprotected' => "Vous pouvez pas changer les pages dans l'espace de noms {{ns:special}}.",
# Login and logout pages
@@ -357,17 +349,19 @@ Votre compte a été créé. Oubliez pas de changer votre réglage sus {{SITENA
'createaccount' => 'Créer un compte',
'gotaccount' => "Vous avez un compte déjà? '''$1'''.",
'gotaccountlink' => 'Connectez',
+'userlogin-resetlink' => 'Oublié vôtre détailes de log in?',
'createaccountmail' => 'par e-mail',
'badretype' => 'Les mots de passe que vous avez mis sont pas pareils.',
'userexists' => "Le nom d'useur choisi est déjà usé. Choissez donc un autre nom.",
'loginerror' => "Erreur d'identification",
'nocookiesnew' => "Votre compte a été créé, mais vous êtes pas connecté. {{SITENAME}} use les cookies pour connecter les useurs. Partez les cookies et connectez avec votre nouveau nom d'useur et votre mot de passe, s'il vous plaît.",
'nocookieslogin' => '{{SITENAME}} use les cookies pour connecter les useurs. Partez donc les cookies et assayez encore.',
+'nocookiesfornew' => "Le conte d'useur n'était pas fait, à cause qu'on pouvait pas confirmer la source. Ensurer que tu as des cookies, reload ce page et essayer encore.",
'noname' => "Vous avez pas mis un bon nom d'useur.",
'loginsuccesstitle' => 'Vous êtes connecté',
'loginsuccess' => "'''Asteur vous êtes connecté à {{SITENAME}} comme \"\$1\".'''",
'nosuchuser' => 'Y a aucun utilisateur avec le nom "$1". Les noms d\'utilisateur respectent les majuscules et minuscules. Vérifiez l\'orthographe, ou créez un nouveau compte.',
-'nosuchusershort' => 'Y a aucun useur avec le nom "<nowiki>$1</nowiki>". Regardez donc l\'espellage.',
+'nosuchusershort' => 'Y a aucun useur avec le nom "$1". Regardez donc l\'espellage.',
'nouserspecified' => "Il faut mettre un nom d'useur.",
'login-userblocked' => 'Cet useur est blockée. Log in pas accépté.',
'wrongpassword' => "Mauvais mot de passe. Assayez encore s'il vous plaît.",
@@ -394,7 +388,7 @@ Si quèqu\'une d\'autre a demandé ce mot de passe ou si vous vous rappelez de v
'accountcreatedtext' => "Le compte d'useur pour $1 a été créé.",
'loginlanguagelabel' => 'Langue: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Rétablir le mot de passe du compte',
'resetpass_announce' => "Pour le moment, vous êtes connecté avec un mot de passe qu'a été envoyé par e-mail. Pour finir de vous connecter, il faut créer un nouveau mot de passe ici:",
'resetpass_text' => '<!-- Mettez du texte ici -->',
@@ -414,8 +408,6 @@ Si quèqu\'une d\'autre a demandé ce mot de passe ou si vous vous rappelez de v
'extlink_tip' => 'Lien extérieur (Oubliez pas de mettre http:// avant.)',
'headline_sample' => 'Sujet',
'headline_tip' => 'Sujet niveau 2',
-'math_sample' => 'Mettez la formule ici',
-'math_tip' => "Formule d'arithmitique (LaTeX)",
'nowiki_sample' => 'Mettez du texte non-préparé ici',
'nowiki_tip' => 'Ignorez le code wiki',
'image_sample' => 'Exemple.jpg',
diff --git a/languages/messages/MessagesFrp.php b/languages/messages/MessagesFrp.php
index 44d2325f..3a8e64b9 100644
--- a/languages/messages/MessagesFrp.php
+++ b/languages/messages/MessagesFrp.php
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author Cedric31
* @author ChrisPtDe
* @author Reedy
* @author לערי ריינה×רט
@@ -51,94 +52,95 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Redirèccions_dobles', 'RedirèccionsDobles' ),
+ 'Activeusers' => array( 'Utilisators_actifs', 'UtilisatorsActifs' ),
+ 'Allmessages' => array( 'Mèssâjos_sistèmo', 'MèssâjosSistèmo' ),
+ 'Allpages' => array( 'Totes_les_pâges', 'TotesLesPâges' ),
+ 'Ancientpages' => array( 'Pâges_les_muens_dèrriérement_changiês', 'PâgesLesMuensDèrriérementChangiês' ),
+ 'Blankpage' => array( 'Pâge_voueda', 'PâgeVoueda' ),
+ 'Block' => array( 'Blocar', 'Blocâjo' ),
+ 'Blockme' => array( 'Blocâd-mè', 'BlocâdMè' ),
+ 'Booksources' => array( 'Ôvres_de_refèrence', 'ÔvresDeRefèrence' ),
'BrokenRedirects' => array( 'Redirèccions_câsses', 'RedirèccionsCâsses' ),
- 'Disambiguations' => array( 'Homonimia', 'Homonimies', 'Pâges_d\'homonimia', 'PâgesDHomonimia' ),
- 'Userlogin' => array( 'Branchiér', 'Branchement' ),
- 'Userlogout' => array( 'Dèbranchiér', 'Dèbranchement' ),
+ 'Categories' => array( 'Catègories' ),
+ 'ChangePassword' => array( 'Changement_de_mot_de_pâssa', 'ChangementDeMotDePâssa' ),
+ 'Confirmemail' => array( 'Confirmar_l\'adrèce_èlèctronica', 'ConfirmarLAdrèceÈlèctronica' ),
+ 'Contributions' => array( 'Contribucions' ),
'CreateAccount' => array( 'Fâre_un_compto', 'FâreUnCompto' ),
- 'Preferences' => array( 'Prèferences' ),
- 'Watchlist' => array( 'Lista_de_survelyence', 'ListaDeSurvelyence', 'Survelyence' ),
- 'Recentchanges' => array( 'Dèrriérs_changements', 'DèrriérsChangements' ),
- 'Upload' => array( 'Tèlèchargiér', 'Tèlèchargement' ),
+ 'Deadendpages' => array( 'Pâges_en_cul-de-sac', 'PâgesEnCulDeSac' ),
+ 'DeletedContributions' => array( 'Contribucions_suprimâs', 'ContribucionsSuprimâs' ),
+ 'Disambiguations' => array( 'Homonimia', 'Homonimies', 'Pâges_d\'homonimia', 'PâgesDHomonimia' ),
+ 'DoubleRedirects' => array( 'Redirèccions_dobles', 'RedirèccionsDobles' ),
+ 'Emailuser' => array( 'Mandar_un_mèssâjo', 'MandarUnMèssâjo', 'Mèssâjo' ),
+ 'Export' => array( 'Èxportar', 'Èxportacion' ),
+ 'Fewestrevisions' => array( 'Pâges_les_muens_changiês', 'PâgesLesMuensChangiês' ),
+ 'FileDuplicateSearch' => array( 'Rechèrche_des_fichiérs_en_doblo', 'RechèrcheDesFichiérsEnDoblo' ),
+ 'Filepath' => array( 'Chemin_d\'accès_du_fichiér', 'CheminDAccèsDuFichiér' ),
+ 'Import' => array( 'Importar', 'Importacion' ),
+ 'Invalidateemail' => array( 'Envalidar_l\'adrèce_èlèctronica', 'EnvalidarLAdrèceÈlèctronica' ),
+ 'BlockList' => array( 'Lista_des_blocâjos', 'ListaDesBlocâjos', 'Blocâjos', 'Utilisators_blocâs', 'UtilisatorsBlocâs', 'Adrèces_IP_blocâs', 'AdrècesIPBlocâs' ),
+ 'LinkSearch' => array( 'Rechèrche_de_lims', 'RechèrcheDeLims' ),
+ 'Listadmins' => array( 'Lista_ux_administrators', 'ListaUxAdministrators' ),
+ 'Listbots' => array( 'Lista_ux_bots', 'ListaUxBots' ),
'Listfiles' => array( 'Lista_des_fichiérs', 'ListaDesFichiérs', 'Lista_de_les_émâges', 'ListaDeLesÉmâges' ),
- 'Newimages' => array( 'Novéls_fichiérs', 'NovélsFichiérs', 'Émâges_novèles', 'ÉmâgesNovèles' ),
- 'Listusers' => array( 'Lista_ux_utilisators', 'ListaUxUtilisators', 'Utilisators' ),
'Listgrouprights' => array( 'Lista_des_drêts_a_les_tropes_d\'utilisators', 'ListaDesDrêtsALesTropesDUtilisators' ),
- 'Statistics' => array( 'Statistiques' ),
- 'Randompage' => array( 'Pâge_a_l\'hasârd', 'PâgeALHasârd' ),
+ 'Listredirects' => array( 'Lista_de_les_redirèccions', 'ListaDeLesRedirèccions' ),
+ 'Listusers' => array( 'Lista_ux_utilisators', 'ListaUxUtilisators', 'Utilisators' ),
+ 'Lockdb' => array( 'Vèrrolyér_la_bâsa_de_balyês', 'VèrrolyérLaBâsaDeBalyês' ),
+ 'Log' => array( 'Jornal', 'Jornals' ),
'Lonelypages' => array( 'Pâges_orfenes', 'PâgesOrfenes' ),
- 'Uncategorizedpages' => array( 'Pâges_sen_catègorie', 'PâgesSenCatègorie' ),
- 'Uncategorizedcategories' => array( 'Catègories_sen_catègorie', 'CatègoriesSenCatègorie' ),
- 'Uncategorizedimages' => array( 'Fichiérs_sen_catègorie', 'FichiérsSenCatègorie', 'Émâges_sen_catègorie', 'ÉmâgesSenCatègorie' ),
- 'Uncategorizedtemplates' => array( 'Modèlos_sen_catègorie', 'ModèlosSenCatègorie' ),
- 'Unusedcategories' => array( 'Catègories_inutilisâs', 'CatègoriesInutilisâs' ),
- 'Unusedimages' => array( 'Fichiérs_inutilisâs', 'FichiérsInutilisâs', 'Émâges_inutilisâs', 'ÉmâgesInutilisâs' ),
- 'Wantedpages' => array( 'Pâges_les_ples_demandâs', 'PâgesLesPlesDemandâs', 'Lims_câssos', 'LimsCâssos' ),
- 'Wantedcategories' => array( 'Catègories_les_ples_demandâs', 'CatègoriesLesPlesDemandâs' ),
- 'Wantedfiles' => array( 'Fichiérs_los_ples_demandâs', 'FichiérsLosPlesDemandâs' ),
- 'Wantedtemplates' => array( 'Modèlos_los_ples_demandâs', 'ModèlosLosPlesDemandâs' ),
+ 'Longpages' => array( 'Pâges_longes', 'PâgesLonges' ),
+ 'MergeHistory' => array( 'Fusionar_los_historicos', 'FusionarLosHistoricos' ),
+ 'MIMEsearch' => array( 'Rechèrche_per_tipo_de_contegnu_MIME', 'RechèrchePerTipoDeContegnuMIME' ),
+ 'Mostcategories' => array( 'Pâges_utilisent_lo_més_de_catègories', 'PâgesUtilisentLoMésDeCatègories' ),
+ 'Mostimages' => array( 'Fichiérs_los_ples_liyês', 'FichiérsLosPlesLiyês', 'Fichiérs_los_ples_utilisâs', 'FichiérsLosPlesUtilisâs', 'Émâges_les_ples_liyês', 'ÉmâgesLesPlesLiyês', 'Émâges_les_ples_utilisâs', 'ÉmâgesLesPlesUtilisâs' ),
'Mostlinked' => array( 'Pâges_les_ples_liyês', 'PâgesLesPlesLiyês' ),
'Mostlinkedcategories' => array( 'Catègories_les_ples_liyês', 'CatègoriesLesPlesLiyês', 'Catègories_les_ples_utilisâs', 'CatègoriesLesPlesUtilisâs' ),
'Mostlinkedtemplates' => array( 'Modèlos_los_ples_liyês', 'ModèlosLosPlesLiyês', 'Modèlos_los_ples_utilisâs', 'ModèlosLosPlesUtilisâs' ),
- 'Mostimages' => array( 'Fichiérs_los_ples_liyês', 'FichiérsLosPlesLiyês', 'Fichiérs_los_ples_utilisâs', 'FichiérsLosPlesUtilisâs', 'Émâges_les_ples_liyês', 'ÉmâgesLesPlesLiyês', 'Émâges_les_ples_utilisâs', 'ÉmâgesLesPlesUtilisâs' ),
- 'Mostcategories' => array( 'Pâges_utilisent_lo_més_de_catègories', 'PâgesUtilisentLoMésDeCatègories' ),
'Mostrevisions' => array( 'Pâges_les_ples_changiês', 'PâgesLesPlesChangiês' ),
- 'Fewestrevisions' => array( 'Pâges_les_muens_changiês', 'PâgesLesMuensChangiês' ),
- 'Shortpages' => array( 'Pâges_côrtes', 'PâgesCôrtes' ),
- 'Longpages' => array( 'Pâges_longes', 'PâgesLonges' ),
+ 'Movepage' => array( 'Renomar_una_pâge', 'RenomarUnaPâge', 'Changement_de_nom', 'ChangementDeNom' ),
+ 'Mycontributions' => array( 'Mes_contribucions', 'MesContribucions' ),
+ 'Mypage' => array( 'Ma_pâge', 'MaPâge' ),
+ 'Mytalk' => array( 'Mes_discussions', 'MesDiscussions' ),
+ 'Newimages' => array( 'Novéls_fichiérs', 'NovélsFichiérs', 'Émâges_novèles', 'ÉmâgesNovèles' ),
'Newpages' => array( 'Pâges_novèles', 'PâgesNovèles' ),
- 'Ancientpages' => array( 'Pâges_les_muens_dèrriérement_changiês', 'PâgesLesMuensDèrriérementChangiês' ),
- 'Deadendpages' => array( 'Pâges_en_cul-de-sac', 'PâgesEnCulDeSac' ),
+ 'PermanentLink' => array( 'Lim_fixo', 'LimFixo' ),
+ 'Popularpages' => array( 'Pâges_les_ples_consultâs', 'PâgesLesPlesConsultâs' ),
+ 'Preferences' => array( 'Prèferences' ),
+ 'Prefixindex' => array( 'Endèxe_des_prèfixos', 'EndèxeDesPrèfixos' ),
'Protectedpages' => array( 'Pâges_protègiês', 'PâgesProtègiês' ),
'Protectedtitles' => array( 'Titros_protègiês', 'TitrosProtègiês' ),
- 'Allpages' => array( 'Totes_les_pâges', 'TotesLesPâges' ),
- 'Prefixindex' => array( 'Endèxe_des_prèfixos', 'EndèxeDesPrèfixos' ),
- 'Ipblocklist' => array( 'Lista_des_blocâjos', 'ListaDesBlocâjos', 'Blocâjos', 'Utilisators_blocâs', 'UtilisatorsBlocâs', 'Adrèces_IP_blocâs', 'AdrècesIPBlocâs' ),
- 'Specialpages' => array( 'Pâges_spèciâles', 'PâgesSpèciâles' ),
- 'Contributions' => array( 'Contribucions' ),
- 'Emailuser' => array( 'Mandar_un_mèssâjo', 'MandarUnMèssâjo', 'Mèssâjo' ),
- 'Confirmemail' => array( 'Confirmar_l\'adrèce_èlèctronica', 'ConfirmarLAdrèceÈlèctronica' ),
- 'Whatlinkshere' => array( 'Pâges_liyês', 'PâgesLiyês' ),
+ 'Randompage' => array( 'Pâge_a_l\'hasârd', 'PâgeALHasârd' ),
+ 'Randomredirect' => array( 'Redirèccion_a_l\'hasârd', 'RedirèccionALHasârd' ),
+ 'Recentchanges' => array( 'Dèrriérs_changements', 'DèrriérsChangements' ),
'Recentchangeslinked' => array( 'Survelyence_des_lims', 'SurvelyenceDesLims' ),
- 'Movepage' => array( 'Renomar_una_pâge', 'RenomarUnaPâge', 'Changement_de_nom', 'ChangementDeNom' ),
- 'Blockme' => array( 'Blocâd-mè', 'BlocâdMè' ),
- 'Booksources' => array( 'Ôvres_de_refèrence', 'ÔvresDeRefèrence' ),
- 'Categories' => array( 'Catègories' ),
- 'Export' => array( 'Èxportar', 'Èxportacion' ),
- 'Version' => array( 'Vèrsion' ),
- 'Allmessages' => array( 'Mèssâjos_sistèmo', 'MèssâjosSistèmo' ),
- 'Log' => array( 'Jornal', 'Jornals' ),
- 'Blockip' => array( 'Blocar', 'Blocâjo' ),
+ 'Revisiondelete' => array( 'Vèrsions_suprimâs', 'VèrsionsSuprimâs' ),
+ 'Search' => array( 'Rechèrchiér', 'Rechèrche' ),
+ 'Shortpages' => array( 'Pâges_côrtes', 'PâgesCôrtes' ),
+ 'Specialpages' => array( 'Pâges_spèciâles', 'PâgesSpèciâles' ),
+ 'Statistics' => array( 'Statistiques' ),
+ 'Tags' => array( 'Balises' ),
+ 'Uncategorizedcategories' => array( 'Catègories_sen_catègorie', 'CatègoriesSenCatègorie' ),
+ 'Uncategorizedimages' => array( 'Fichiérs_sen_catègorie', 'FichiérsSenCatègorie', 'Émâges_sen_catègorie', 'ÉmâgesSenCatègorie' ),
+ 'Uncategorizedpages' => array( 'Pâges_sen_catègorie', 'PâgesSenCatègorie' ),
+ 'Uncategorizedtemplates' => array( 'Modèlos_sen_catègorie', 'ModèlosSenCatègorie' ),
'Undelete' => array( 'Refâre', 'Rèstoracion' ),
- 'Import' => array( 'Importar', 'Importacion' ),
- 'Lockdb' => array( 'Vèrrolyér_la_bâsa_de_balyês', 'VèrrolyérLaBâsaDeBalyês' ),
'Unlockdb' => array( 'Dèvèrrolyér_la_bâsa_de_balyês', 'DèvèrrolyérLaBâsaDeBalyês' ),
- 'Userrights' => array( 'Drêts_d\'utilisator', 'DrêtsDUtilisator' ),
- 'MIMEsearch' => array( 'Rechèrche_per_tipo_de_contegnu_MIME', 'RechèrchePerTipoDeContegnuMIME' ),
- 'FileDuplicateSearch' => array( 'Rechèrche_des_fichiérs_en_doblo', 'RechèrcheDesFichiérsEnDoblo' ),
- 'Unwatchedpages' => array( 'Pâges_pas_siuvues', 'PâgesPasSiuvues' ),
- 'Listredirects' => array( 'Lista_de_les_redirèccions', 'ListaDeLesRedirèccions' ),
- 'Revisiondelete' => array( 'Vèrsions_suprimâs', 'VèrsionsSuprimâs' ),
+ 'Unusedcategories' => array( 'Catègories_inutilisâs', 'CatègoriesInutilisâs' ),
+ 'Unusedimages' => array( 'Fichiérs_inutilisâs', 'FichiérsInutilisâs', 'Émâges_inutilisâs', 'ÉmâgesInutilisâs' ),
'Unusedtemplates' => array( 'Modèlos_inutilisâs', 'ModèlosInutilisâs' ),
- 'Randomredirect' => array( 'Redirèccion_a_l\'hasârd', 'RedirèccionALHasârd' ),
- 'Mypage' => array( 'Ma_pâge', 'MaPâge' ),
- 'Mytalk' => array( 'Mes_discussions', 'MesDiscussions' ),
- 'Mycontributions' => array( 'Mes_contribucions', 'MesContribucions' ),
- 'Listadmins' => array( 'Lista_ux_administrators', 'ListaUxAdministrators' ),
- 'Listbots' => array( 'Lista_ux_bots', 'ListaUxBots' ),
- 'Popularpages' => array( 'Pâges_les_ples_consultâs', 'PâgesLesPlesConsultâs' ),
- 'Search' => array( 'Rechèrchiér', 'Rechèrche' ),
- 'Resetpass' => array( 'Changement_de_mot_de_pâssa', 'ChangementDeMotDePâssa' ),
+ 'Unwatchedpages' => array( 'Pâges_pas_siuvues', 'PâgesPasSiuvues' ),
+ 'Upload' => array( 'Tèlèchargiér', 'Tèlèchargement' ),
+ 'Userlogin' => array( 'Branchiér', 'Branchement' ),
+ 'Userlogout' => array( 'Dèbranchiér', 'Dèbranchement' ),
+ 'Userrights' => array( 'Drêts_d\'utilisator', 'DrêtsDUtilisator' ),
+ 'Version' => array( 'Vèrsion' ),
+ 'Wantedcategories' => array( 'Catègories_les_ples_demandâs', 'CatègoriesLesPlesDemandâs' ),
+ 'Wantedfiles' => array( 'Fichiérs_los_ples_demandâs', 'FichiérsLosPlesDemandâs' ),
+ 'Wantedpages' => array( 'Pâges_les_ples_demandâs', 'PâgesLesPlesDemandâs', 'Lims_câssos', 'LimsCâssos' ),
+ 'Wantedtemplates' => array( 'Modèlos_los_ples_demandâs', 'ModèlosLosPlesDemandâs' ),
+ 'Watchlist' => array( 'Lista_de_survelyence', 'ListaDeSurvelyence', 'Survelyence' ),
+ 'Whatlinkshere' => array( 'Pâges_liyês', 'PâgesLiyês' ),
'Withoutinterwiki' => array( 'Pâges_sen_lims_entèrlengoues', 'PâgesSenLimsEntèrlengoues', 'Pâges_sen_lims_entèrvouiqui', 'PâgesSenLimsEntèrvouiqui' ),
- 'MergeHistory' => array( 'Fusionar_los_historicos', 'FusionarLosHistoricos' ),
- 'Filepath' => array( 'Chemin_d\'accès_du_fichiér', 'CheminDAccèsDuFichiér' ),
- 'Invalidateemail' => array( 'Envalidar_l\'adrèce_èlèctronica', 'EnvalidarLAdrèceÈlèctronica' ),
- 'Blankpage' => array( 'Pâge_voueda', 'PâgeVoueda' ),
- 'LinkSearch' => array( 'Rechèrche_de_lims', 'RechèrcheDeLims' ),
- 'DeletedContributions' => array( 'Contribucions_suprimâs', 'ContribucionsSuprimâs' ),
- 'Tags' => array( 'Balises' ),
- 'Activeusers' => array( 'Utilisators_actifs', 'UtilisatorsActifs' ),
);
$magicWords = array(
@@ -332,8 +334,8 @@ $messages = array(
'tog-shownumberswatching' => 'Fâre vêre lo nombro d’utilisators que siuvont les pâges',
'tog-oldsig' => 'Signatura ègzistenta :',
'tog-fancysig' => 'Trètar la signatura coment de vouiquitèxto (sen lim ôtomatico)',
-'tog-externaleditor' => 'Utilisar per dèfôt un èditor de tèxto de defôr (solament por los utilisators avanciês, at fôta d’una configuracion spèciâla sur voutron ordenator. [http://www.mediawiki.org/wiki/Manual:External_editors Més d’enformacions.])',
-'tog-externaldiff' => 'Utilisar per dèfôt un comparator de defôr (solament por los utilisators avanciês, at fôta d’una configuracion spèciâla sur voutron ordenator. [http://www.mediawiki.org/wiki/Manual:External_editors Més d’enformacions.])',
+'tog-externaleditor' => 'Utilisar per dèfôt un èditor de tèxto de defôr (solament por los utilisators avanciês, at fôta d’una configuracion spèciâla sur voutron ordenator. [//www.mediawiki.org/wiki/Manual:External_editors Més d’enformacions.])',
+'tog-externaldiff' => 'Utilisar per dèfôt un comparator de defôr (solament por los utilisators avanciês, at fôta d’una configuracion spèciâla sur voutron ordenator. [//www.mediawiki.org/wiki/Manual:External_editors Més d’enformacions.])',
'tog-showjumplinks' => 'Activar los lims « navigacion » et « rechèrche » d’amont la pâge',
'tog-uselivepreview' => 'Utilisar l’apèrçu vito fêt (at fôta de JavaScript) (èxpèrimentâl)',
'tog-forceeditsummary' => 'M’avèrtir quand j’é pas spècefiâ de rèsumâ de changement',
@@ -430,14 +432,7 @@ $messages = array(
'listingcontinuesabbrev' => '(suita)',
'index-category' => 'Pâges endèxâs',
'noindex-category' => 'Pâges pas endèxâs',
-
-'mainpagetext' => "'''MediaWiki at étâ enstalâ avouéc reusséta.'''",
-'mainpagedocfooter' => 'Vêde lo [http://meta.wikimedia.org/wiki/Aide:Contenu guido d’utilisator] por més d’enformacions sur l’usâjo de la programeria vouiqui.
-
-== Emmodar avouéc MediaWiki ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista des paramètres de configuracion]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FDQ sur MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discussion sur les distribucions de MediaWiki]',
+'broken-file-category' => 'Pâges avouéc des lims de fichiérs câssos',
'about' => 'A propôs',
'article' => 'Pâge de contegnu',
@@ -489,10 +484,10 @@ $messages = array(
'history' => 'Historico de la pâge',
'history_short' => 'Historico',
'updatedmarker' => 'betâ a jorn dês ma dèrriére visita',
-'info_short' => 'Enformacions',
'printableversion' => 'Vèrsion emprimâbla',
'permalink' => 'Lim historico',
'print' => 'Emprimar',
+'view' => 'Liére',
'edit' => 'Changiér',
'create' => 'Fâre',
'editthispage' => 'Changiér ceta pâge',
@@ -500,6 +495,7 @@ $messages = array(
'delete' => 'Suprimar',
'deletethispage' => 'Suprimar ceta pâge',
'undelete_short' => 'Refâre {{PLURAL:$1|yon changement|$1 changements}}',
+'viewdeleted_short' => 'Vêre {{PLURAL:$1|yon changement suprimâ|$1 changements suprimâs}}',
'protect' => 'Protègiér',
'protect_change' => 'changiér',
'protectthispage' => 'Protègiér ceta pâge',
@@ -584,6 +580,8 @@ Vêde la [[Special:Version|pâge de les vèrsions]].',
'toc' => 'Somèro',
'showtoc' => 'fâre vêre',
'hidetoc' => 'cachiér',
+'collapsible-collapse' => 'Recllôre',
+'collapsible-expand' => 'Dèvelopar',
'thisisdeleted' => 'Voléd-vos fâre vêre ou ben refâre $1 ?',
'viewdeleted' => 'Fâre vêre $1 ?',
'restorelink' => '{{PLURAL:$1|yon changement suprimâ|$1 changements suprimâs}}',
@@ -595,6 +593,8 @@ Vêde la [[Special:Version|pâge de les vèrsions]].',
'page-rss-feed' => 'Flux RSS de « $1 »',
'page-atom-feed' => 'Flux Atom de « $1 »',
'red-link-title' => '$1 (pâge pas ègzistenta)',
+'sort-descending' => 'Triyér per ôrdre dècrèssent',
+'sort-ascending' => 'Triyér per ôrdre crèssent',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Pâge',
@@ -682,12 +682,13 @@ Volyéd tornar èprovar dens doux-três menutes.',
'protectedinterface' => 'Ceta pâge fât de tèxto d’entèrface por la programeria et est protègiê por èvitar los abus.',
'editinginterface' => "'''Atencion :''' vos éte aprés changiér una pâge utilisâ por fâre lo tèxto d’entèrface por la programeria.
Los changements sè cognetront, d’aprés lo contèxto, sur totes ou ben quârques pâges visibles per los ôtros utilisators.
-Por les traduccions, nos vos envitens a utilisar lo seto [http://translatewiki.net/wiki/Main_Page?setlang=frp translatewiki.net], lo projèt de localisacion de MediaWiki.",
+Por les traduccions, nos vos envitens a utilisar lo seto [//translatewiki.net/wiki/Main_Page?setlang=frp translatewiki.net], lo projèt de localisacion de MediaWiki.",
'sqlhidden' => '(Requéta SQL cachiê)',
'cascadeprotected' => 'Ora, cela pâge est protègiê perce qu’el est encllua dens {{PLURAL:$1|ceta pâge|cetes pâges}}, {{PLURAL:$1|qu’at étâ protègiê|qu’ont étâ protègiês}} avouéc lo chouèx « protèccion en cascâda » activâ :
$2',
'namespaceprotected' => "Vos avéd pas la pèrmission de changiér les pâges de l’èspâço de noms '''« $1 »'''.",
-'customcssjsprotected' => 'Vos avéd pas la pèrmission de changiér ceta pâge, perce que contint les prèferences a un ôtro utilisator.',
+'customcssprotected' => 'Vos avéd pas la pèrmission de changiér ceta pâge CSS, perce que contint les prèferences a un ôtro utilisator.',
+'customjsprotected' => 'Vos avéd pas la pèrmission de changiér ceta pâge JavaScript, perce que contint les prèferences a un ôtro utilisator.',
'ns-specialprotected' => 'Les pâges dens l’èspâço de noms « {{ns:special}} » pôvont pas étre changiês.',
'titleprotected' => "Cél titro at étâ protègiê a la crèacion per [[User:$1|$1]].
La rêson balyê est « ''$2'' ».",
@@ -725,6 +726,7 @@ Oubliâd pas de pèrsonalisar voutres [[Special:Preferences|prèferences dessus
'createaccount' => 'Fâre un compto',
'gotaccount' => "Vos avéd ja un compto ? '''$1'''.",
'gotaccountlink' => 'Branchiéd-vos',
+'userlogin-resetlink' => 'Vos éd oubliâ voutros dètalys de branchement ?',
'createaccountmail' => 'per mèssageria èlèctronica',
'createaccountreason' => 'Rêson :',
'badretype' => 'Los mots de pâssa que vos éd buchiês sont pas pariérs.',
@@ -737,13 +739,15 @@ Nen volyéd chouèsir un ôtro.',
Los volyéd activar et pués vos tornar branchiér avouéc lo mémo nom et lo mémo mot de pâssa.",
'nocookieslogin' => "{{SITENAME}} utilise des tèmouens (''cookies'') por lo branchement mas vos los éd dèsactivâs.
Los volyéd activar et pués vos tornar branchiér.",
+'nocookiesfornew' => "Lo compto utilisator at pas étâ fêt, perce que nos ens pas possu confirmar sa 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 buchiê un nom d’utilisator valido.',
'loginsuccesstitle' => 'Branchement reussi.',
'loginsuccess' => "'''Ora, vos éte branchiê a {{SITENAME}} coment « $1 ».'''",
'nosuchuser' => 'L’utilisator « $1 » ègziste pas.
Los noms d’utilisator sont sensiblos a la câssa.
Controlâd l’ortografia, ou ben [[Special:UserLogin/signup|féte un compto novél]].',
-'nosuchusershort' => 'Y at gins de contributor avouéc lo nom « <nowiki>$1</nowiki> ».
+'nosuchusershort' => 'Y at gins de contributor avouéc lo nom « $1 ».
Volyéd controlar l’ortografia.',
'nouserspecified' => 'Vos dête buchiér un nom d’utilisator.',
'login-userblocked' => 'Ceti utilisator est blocâ. Branchement pas ôtorisâ.',
@@ -794,13 +798,14 @@ Ignorâd ceti mèssâjo se cél compto at étâ fêt per èrror.',
'usernamehasherror' => 'Lo nom d’utilisator pôt pas contegnir des caractèros de chaplâjo',
'login-throttled' => 'Vos éd tentâ dèrriérement un trop grant nombro de branchements.
Volyéd atendre devant que tornar èprovar.',
+'login-abort-generic' => 'Voutra tentativa de branchement at pas reussia - Anulâ',
'loginlanguagelabel' => 'Lengoua : $1',
'suspicious-userlogout' => "Voutra demanda de dèbranchement at étâ refusâ perce que semble qu’el at étâ mandâ per un navigator câsso ou ben la misa en cache d’un sèrvor mandatèro (''proxy'').",
# E-mail sending
'php-mail-error-unknown' => 'Èrror encognua dens la fonccion mail() de PHP.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Changiér lo mot de pâssa',
'resetpass_announce' => 'Vos vos éte branchiê avouéc un mot de pâssa temporèro mandâ per mèssageria èlèctronica.
Por chavonar lo branchement, vos dête buchiér un mot de pâssa novél ique :',
@@ -819,6 +824,32 @@ Por chavonar lo branchement, vos dête buchiér un mot de pâssa novél ique :',
Vos éd pôt-étre ja changiê voutron mot de pâssa avouéc reusséta ou ben demandâ un mot de pâssa temporèro novél.',
'resetpass-temp-password' => 'Mot de pâssa temporèro :',
+# Special:PasswordReset
+'passwordreset' => 'Remisa a zérô du mot de pâssa',
+'passwordreset-text' => 'Rempléd ceti formulèro por recêvre un mèssâjo de rapèl des dètalys de voutron compto.',
+'passwordreset-legend' => 'Remisa a zérô du mot de pâssa',
+'passwordreset-disabled' => 'La remisa a zérô des mots de pâssa at étâ dèsactivâ sur ceti vouiqui.',
+'passwordreset-pretext' => '{{PLURAL:$1||Buchiéd yon des bocons de balyês ce-desot}}',
+'passwordreset-username' => 'Nom d’utilisator :',
+'passwordreset-domain' => 'Domêno :',
+'passwordreset-email' => 'Adrèce èlèctronica :',
+'passwordreset-emailtitle' => 'Dètalys du compto dessus {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Quârqu’un (probâblament vos, avouéc l’adrèce IP $1) at demandâ un rapèl des dètalys
+de voutron compto por {{SITENAME}} ($4). {{PLURAL:$3|Ceti compto utilisator est associyê|Cetos comptos utilisators sont associyês}} a cela adrèce èlèctronica :
+
+$2
+
+{{PLURAL:$3|Cél mot de pâssa temporèro èxpirerat|Celos mots de pâssa temporèros èxpireront}} dens $5 jorn{{PLURAL:$5||s}}. Ora, vos vos dête branchiér et pués chouèsir un mot de pâssa novél. Se cela demanda vint pas de vos, ou ben se vos vos rapelâd ora de voutron mot de pâssa originâl et que vos souhètâd pas més nen changiér, vos pouede ignorar ceti mèssâjo et continuar a utilisar voutron viely mot de pâssa.',
+'passwordreset-emailtext-user' => 'L’utilisator $1 dessus {{SITENAME}} at demandâ un rapèl des dètalys
+de voutron compto por {{SITENAME}} ($4). {{PLURAL:$3|Ceti compto utilisator est associyê|Cetos comptos utilisators sont associyês}} a cela adrèce èlèctronica :
+
+$2
+
+{{PLURAL:$3|Cél mot de pâssa temporèro èxpirerat|Celos mots de pâssa temporèros èxpireront}} dens $5 jorn{{PLURAL:$5||s}}. Ora, vos vos dête branchiér et pués chouèsir un mot de pâssa novél. Se cela demanda vint pas de vos, ou ben se vos vos rapelâd ora de voutron mot de pâssa originâl et que vos souhètâd pas més nen changiér, vos pouede ignorar ceti mèssâjo et continuar a utilisar voutron viely mot de pâssa.',
+'passwordreset-emailelement' => 'Nom d’utilisator : $1
+Mot de pâssa temporèro : $2',
+'passwordreset-emailsent' => 'Un mèssâjo de rapèl at étâ mandâ.',
+
# Edit page toolbar
'bold_sample' => 'Tèxto en grâs',
'bold_tip' => 'Tèxto en grâs',
@@ -830,8 +861,6 @@ Vos éd pôt-étre ja changiê voutron mot de pâssa avouéc reusséta ou ben de
'extlink_tip' => 'Lim de defôr (oubliâd pas lo prèfixo http://)',
'headline_sample' => 'Tèxto de sot-titro',
'headline_tip' => 'Sot-titro nivél 2',
-'math_sample' => 'Buchiéd voutra formula ique',
-'math_tip' => 'Formula matèmatica (LaTeX)',
'nowiki_sample' => 'Buchiéd lo tèxto pas formatâ ique',
'nowiki_tip' => 'Ignorar lo formatâjo vouiqui',
'image_sample' => 'Ègzemplo.jpg',
@@ -922,7 +951,7 @@ ou ben [{{fullurl:{{FULLPAGENAME}}|action=edit}} fâre cela pâge]</span>.',
'noarticletext-nopermission' => 'Ora, y at gins de tèxto dens ceta pâge.
Vos pouede [[Special:Search/{{PAGENAME}}|fâre una rechèrche sur lo titro de la pâge]] dens les ôtres pâges,
ou ben <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rechèrchiér dens los jornals liyês]</span>.',
-'userpage-userdoesnotexist' => 'Lo compto utilisator « $1 » est pas encartâ.
+'userpage-userdoesnotexist' => 'Lo compto utilisator « <nowiki>$1</nowiki> » est pas encartâ.
Volyéd controlar que vos voléd fâre ou ben changiér cela pâge.',
'userpage-userdoesnotexist-view' => 'Lo compto utilisator « $1 » est pas encartâ.',
'blocked-notice-logextract' => 'Ceti utilisator est ora blocâ.
@@ -962,6 +991,7 @@ Se cen tôrne pas reussir, vos volyéd [[Special:UserLogout|dèbranchiér]], et
'token_suffix_mismatch' => "'''Voutron changement at pas étâ accèptâ perce que voutron navigator at mècllâ los caractèros de ponctuacion dens lo numerô de changement.'''
Lo changement at étâ refusâ por empachiér la corrupcion du tèxto de la pâge.
Ceti problèmo arreve quand vos utilisâd un sèrvor mandatèro (''proxy'') anonimo qu’est pas de sûr.",
+'edit_form_incomplete' => "'''Quârques parties du formulèro de changement ont pas avengiês lo sèrvor ; controlâd que voutros changements sont entiérs et pués tornâd èprovar.'''",
'editing' => 'Changement de $1',
'editingsection' => 'Changement de $1 (sèccion)',
'editingcomment' => 'Changement de $1 (novèla sèccion)',
@@ -1202,7 +1232,7 @@ Volyéd controlar los jornals.',
# Suppression log
'suppressionlog' => 'Jornal de les suprèssions',
'suppressionlogtext' => 'Vê-que la lista de les suprèssions et des blocâjos qu’ont de contegnu cachiê ux administrators.
-Vêde la [[Special:IPBlockList|lista ux utilisators et a les adrèces IP blocâs]] por vêre los banissements et los blocâjos que sont ora opèracionèls.',
+Vêde la [[Special:BlockList|lista ux utilisators et a les adrèces IP blocâs]] por vêre los banissements et los blocâjos que sont ora opèracionèls.',
# History merging
'mergehistory' => 'Fusionar los historicos de les pâges',
@@ -1314,12 +1344,13 @@ 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.',
# Quickbar
-'qbsettings' => 'Bârra d’outils',
-'qbsettings-none' => 'Niona',
-'qbsettings-fixedleft' => 'Gôche',
-'qbsettings-fixedright' => 'Drêta',
-'qbsettings-floatingleft' => 'Fllotenta a gôche',
-'qbsettings-floatingright' => 'Fllotenta a drêta',
+'qbsettings' => 'Bârra d’outils',
+'qbsettings-none' => 'Niona',
+'qbsettings-fixedleft' => 'Gôche',
+'qbsettings-fixedright' => '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',
# Preferences page
'preferences' => 'Prèferences',
@@ -1330,9 +1361,10 @@ Atencion, lor endèxacion du contegnu de {{SITENAME}} pôt pas étre a jorn.',
'changepassword' => 'Changement du mot de pâssa',
'prefs-skin' => 'Habelyâjo',
'skin-preview' => 'Prèvisualisar',
-'prefs-math' => 'Rendu de les formules matèmatiques',
'datedefault' => 'Gins de prèference',
+'prefs-beta' => 'Fonccionalitâts « Bèta »',
'prefs-datetime' => 'Dâta et hora',
+'prefs-labs' => 'Fonccionalitâts « Laboratiors »',
'prefs-personal' => 'Enformacions a sè',
'prefs-rc' => 'Dèrriérs changements',
'prefs-watchlist' => 'Lista de survelyence',
@@ -1354,8 +1386,6 @@ Atencion, lor endèxacion du contegnu de {{SITENAME}} pôt pas étre a jorn.',
'columns' => 'Colones :',
'searchresultshead' => 'Rechèrche',
'resultsperpage' => 'Nombro de rèponses per pâge :',
-'contextlines' => 'Nombro de legnes per rèponsa :',
-'contextchars' => 'Nombro de caractèros de contèxto per legne :',
'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 fâre vêre dens los dèrriérs changements :',
@@ -1368,7 +1398,7 @@ Vê-que una valor fêta per hasârd que vos pouede utilisar : $1',
'savedprefs' => 'Les prèferences ont étâ encartâs.',
'timezonelegend' => 'Fus horèro :',
'localtime' => 'Hora locala :',
-'timezoneuseserverdefault' => 'Utilisar la valor du sèrvor',
+'timezoneuseserverdefault' => 'Utilisar la valor per dèfôt du vouiqui ($1)',
'timezoneuseoffset' => 'Ôtro (spècefiar lo dècalâjo)',
'timezoneoffset' => 'Dècalâjo horèro¹ :',
'servertime' => 'Hora du sèrvor :',
@@ -1418,8 +1448,8 @@ Dêt pas dèpassar $1 caractèro{{PLURAL:$1||s}}.',
Ceta 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' => 'U chouèx : endicar voutra adrèce èlèctronica pèrmèt de vos mandar un mot de pâssa novél se vos oubliâd lo voutro.
-Vos pouede asse-ben dècidar de lèssiér los ôtros sè veriér vers vos avouéc voutra pâge de discussion, sen avêr fôta de dèvouèlar voutra identitât.',
+'prefs-help-email' => 'L’adrèce èlèctronica est u chouèx, mas el est nècèssèra por tornar inicialisar voutron mot de pâssa, 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 utilisator 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-info' => 'Enformacions de bâsa',
'prefs-i18n' => 'Entèrnacionalisacion',
@@ -1530,7 +1560,7 @@ Vos pouede asse-ben dècidar de lèssiér los ôtros sè veriér vers vos avoué
'right-editusercssjs' => 'Changiér los fichiérs CSS et JS d’ôtros utilisators',
'right-editusercss' => 'Changiér los fichiérs CSS d’ôtros utilisators',
'right-edituserjs' => 'Changiér los fichiérs JS d’ôtros utilisators',
-'right-rollback' => 'Rèvocar rêdo los changements u dèrriér contributor d’una pâge spècefica',
+'right-rollback' => 'Rèvocar rêdo los changements u dèrriér utilisator qu’at changiê una pâge spècefica',
'right-markbotedits' => 'Marcar des changements rèvocâs coment èyent étâ fêts per un bot',
'right-noratelimit' => 'Pas étre afèctâ per les limites de quota',
'right-import' => 'Importar des pâges dês d’ôtros vouiquis',
@@ -1544,15 +1574,15 @@ Vos pouede asse-ben dècidar de lèssiér los ôtros sè veriér vers vos avoué
'right-userrights' => 'Changiér tôs los drêts a un utilisator',
'right-userrights-interwiki' => 'Changiér los drêts ux utilisators sur d’ôtros vouiquis',
'right-siteadmin' => 'Vèrrolyér ou dèvèrrolyér la bâsa de balyês',
-'right-reset-passwords' => 'Changiér lo mot de pâssa d’ôtros utilisators',
'right-override-export-depth' => 'Èxportar les pâges en encllusent les pâges liyês tant qu’a una provondior de 5 nivéls',
'right-sendemail' => 'Mandar un mèssâjo ux ôtros utilisators',
# User rights log
-'rightslog' => 'Jornal des changements de statut d’utilisator',
-'rightslogtext' => 'Vê-que lo jornal des changements de statut d’utilisator.',
-'rightslogentry' => 'at changiê los drêts a l’utilisator « $1 » de $2 a $3',
-'rightsnone' => '(nion)',
+'rightslog' => 'Jornal des changements de statut d’utilisator',
+'rightslogtext' => 'Vê-que lo jornal des changements de statut d’utilisator.',
+'rightslogentry' => 'at changiê los drêts a l’utilisator « $1 » de $2 a $3',
+'rightslogentry-autopromote' => 'at étâ nomâ ôtomaticament de $2 a $3',
+'rightsnone' => '(nion)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'liére cela pâge',
@@ -1676,12 +1706,12 @@ Vêde la [[Special:NewFiles|galerie des novéls fichiérs]] por una presentacion
'illegalfilename' => 'Lo nom de fichiér « $1 » contint des caractèros dèfendus dens los titros de pâges.
Lo volyéd renomar et pués lo tornar tèlèchargiér.',
'badfilename' => 'Lo fichiér at étâ renomâ en « $1 ».',
-'filetype-mime-mismatch' => 'L’èxtension du fichiér corrèspond pas u tipo MIME.',
+'filetype-mime-mismatch' => 'L’èxtension du fichiér « .$1 » corrèspond pas u tipo MIME dècelâ du fichiér ($2).',
'filetype-badmime' => 'Los fichiérs du tipo MIME « $1 » pôvont pas étre tèlèchargiês.',
'filetype-bad-ie-mime' => 'Lo fichiér pôt pas étre tèlèchargiê perce que serêt dècelâ coment « $1 » per Internet Explorer, cen que corrèspond a un tipo de fichiér dèfendu perce que pôt-étre dangerox.',
'filetype-unwanted-type' => "'''« .$1 »''' est un format de fichiér pas dèsirâ.
{{PLURAL:$3|Lo tipo de fichiérs recomandâ est|Los tipos de fichiérs recomandâs sont}} $2.",
-'filetype-banned-type' => "'''« .$1 »''' est un format de fichiér pas ôtorisâ.
+'filetype-banned-type' => "'''« .$1 »''' {{PLURAL:$4|est pas un tipo de fichiérs ôtorisâ|sont pas des tipos de fichiérs ôtorisâs}}.
{{PLURAL:$3|Lo tipo de fichiérs accèptâ est|Los tipos de fichiérs accèptâs sont}} $2.",
'filetype-missing' => 'Lo fichiér at gins d’èxtension (coment « .jpg » per ègzemplo).',
'empty-file' => 'Lo fichiér que vos éd somês ére vouedo.',
@@ -1701,6 +1731,7 @@ cél fichiér fât $2.',
'emptyfile' => 'Lo fichiér que vos voléd tèlèchargiér semble vouedo.
Cen pôt étre diu a una èrror dedens lo nom du fichiér.
Volyéd controlar que vos voléd franc tèlèchargiér cél fichiér.',
+'windows-nonascii-filename' => 'Ceti vouiqui recognêt pas los noms de fichiérs avouéc des caractèros spèciâls.',
'fileexists' => "Un fichiér avouéc cél nom ègziste ja.
Volyéd controlar '''<tt>[[:$1]]</tt>'''.
Éte-vos de sûr de lo volêr changiér ? [[$1|thumb]]",
@@ -1741,6 +1772,8 @@ Vos devriâd controlar lo jornal de les suprèssions de cél fichiér devant que
Volyéd controlar lo chouèx de configuracion « file_uploads ».',
'uploadscripted' => 'Cél fichiér contint de code HTML ou ben un scripte que porrêt étre entèrprètâ de façon fôssa per un navigator vouèbe.',
'uploadvirus' => 'Cél fichiér contint un virus ! Por més de dètalys, vêde : $1',
+'uploadjava' => 'O est un fichiér ZIP que contint un fichiér Java .class.
+Lo tèlèchargement de fichiérs Java est pas ôtorisâ, perce que pôvont entrênar des rèstriccions de sècuritât.',
'upload-source' => 'Fichiér sôrsa',
'sourcefilename' => 'Nom du fichiér sôrsa :',
'sourceurl' => 'URL sôrsa :',
@@ -1751,10 +1784,6 @@ Volyéd controlar lo chouèx de configuracion « file_uploads ».',
'watchthisupload' => 'Siuvre ceti fichiér',
'filewasdeleted' => 'Un fichiér avouéc cél nom at ja étâ tèlèchargiê, et pués suprimâ.
Vos devriâd controlar lo $1 devant que lo tornar tèlèchargiér.',
-'upload-wasdeleted' => "'''Atencion : vos éte aprés tèlèchargiér un fichiér qu’at étâ suprimâ dês devant.'''
-
-Demandâd-vos se fôt franc continuar son tèlèchargement.
-Lo jornal de les suprèssions de cél fichiér est montrâ ce-desot :",
'filename-bad-prefix' => "Lo nom du fichiér que vos tèlèchargiéd comence per '''« $1 »''' qu’est tipicament un nom balyê ôtomaticament per los aparèlys-fotô numericos.
Volyéd chouèsir un nom de fichiér dèscriptif.",
'filename-prefix-blacklist' => ' #<!-- lèssiéd ceta legne justo d’ense --> <pre>
@@ -1793,12 +1822,29 @@ Se lo problèmo continue, veriéd-vos vers un [[Special:ListUsers/sysop|administ
'upload-unknown-size' => 'Talye encognua',
'upload-http-error' => 'Una èrror HTTP est arrevâ : $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Una èrror est arrevâ pendent l’uvèrtura du fichiér ZIP por contrôlo.',
+'zip-wrong-format' => 'Lo fichiér spècefiâ est pas un fichiér ZIP.',
+'zip-bad' => 'Lo fichiér est un fichiér ZIP corrompu ou ben iliésiblo.
+Pôt pas étre controlâ tot drêt por la sècuritât.',
+'zip-unsupported' => 'Lo fichiér est un fichiér ZIP qu’utilise ZIP pas recognues per MediaWiki.
+Pôt pas étre controlâ tot drêt por la sècuritât.',
+
+# Special:UploadStash
+'uploadstash' => 'Cache d’importacion',
+'uploadstash-summary' => 'Ceta pâge balye accès ux fichiérs que sont importâs (ou ben en cors d’importacion), mas sont p’oncor publeyês dens lo vouiqui. Celos fichiérs sont p’oncor visiblos, solament por l’utilisator que los at importâs.',
+'uploadstash-clear' => 'Èfaciér los fichiérs en cache d’importacion',
+'uploadstash-nofiles' => 'Vos avéd gins de fichiér en cache d’importacion.',
+'uploadstash-badtoken' => 'L’ègzécucion de cela accion at pas reussia, pôt-étre perce que voutres enformacions de branchement ont èxpirâs. Tornâd èprovar.',
+'uploadstash-errclear' => 'L’èfacement des fichiérs at pas reussi.',
+'uploadstash-refresh' => 'Rafrèchir la lista des fichiérs',
+
# img_auth script messages
'img-auth-accessdenied' => 'Accès refusâ',
'img-auth-nopathinfo' => 'PATH_INFO manquent.
-Voutron sèrvor est pas dèfeni por passar ceta enformacion.
+Voutron sèrvor est pas dèfeni por passar cela enformacion.
Fonccione pôt-étre en CGI et pués recognêt pas img_auth.
-Vêde http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Vêde los drêts d’émâge.]',
'img-auth-notindir' => 'Lo chemin demandâ est pas lo rèpèrtouèro de tèlèchargement configurâ.',
'img-auth-badtitle' => 'Empossiblo de construire un titro valido dês « $1 ».',
'img-auth-nologinnWL' => 'Vos éte pas branchiê et pués « $1 » est pas dens la lista blanche.',
@@ -1876,7 +1922,7 @@ Ceta lista montre ren que {{PLURAL:$1|la premiére pâge qu’utilise|les $1 pre
Una [[Special:WhatLinksHere/$2|lista complèta]] est disponibla.',
'nolinkstoimage' => 'Niona pâge utilise ceti fichiér.',
'morelinkstoimage' => 'Vêde [[Special:WhatLinksHere/$1|més de lims]] de vers ceti fichiér.',
-'redirectstofile' => '{{PLURAL:$1|Ceti fichiér redirige|Cetos fichiérs redirijont}} vers ceti :',
+'linkstoimage-redirect' => '$1 (redirèccion de fichiér) $2',
'duplicatesoffile' => '{{PLURAL:$1|Ceti fichiér est un doblo|Cetos fichiérs sont des doblos}} de ceti ([[Special:FileDuplicateSearch/$2|més de dètalys]]) :',
'sharedupload' => 'Ceti fichiér vint de $1 et pôt étre utilisâ per d’ôtros projèts.',
'sharedupload-desc-there' => 'Ceti fichiér vint de $1 et pôt étre utilisâ per d’ôtros projèts.
@@ -1967,18 +2013,19 @@ Oubliâd pas de controlar s’y at pas d’ôtros lims de vers los modèlos deva
'statistics-users-active-desc' => 'Utilisators qu’ont fêt u muens una accion pendent {{PLURAL:$1|lo jorn passâ|los $1 jorns passâs}}',
'statistics-mostpopular' => 'Pâges les ples vues',
-'disambiguations' => 'Pâges d’homonimia',
+'disambiguations' => 'Pâges qu’ont des lims de vers des pâges d’homonimia',
'disambiguationspage' => 'Template:Homonimia',
'disambiguations-text' => "Cetes pâges ont un lim de vers una '''pâge d’homonimia'''.
Devriant pletout pouentar vers una pâge que vat avouéc.<br />
Una pâge est trètâ coment una pâge d’homonimia s’encllut (tot drêt ou ben rècursivament) yon des modèlos listâs dessus [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Redirèccions dobles',
-'doubleredirectstext' => 'Vê-que la lista de les pâges que redirijont vers des pâges que sont lor-mémes des pâges de redirèccion.
+'doubleredirects' => 'Redirèccions dobles',
+'doubleredirectstext' => 'Vê-que la lista de les pâges que redirijont vers des pâges que sont lor-mémes des pâges de redirèccion.
Châque entrâ contint des lims de vers la premiére et la seconda redirèccion, et pués la premiére legne de tèxto de la seconda pâge, cen que balye habituèlament la « veré » pâge ciba, de vers laquinta la premiére redirèccion devrêt redirigiér.
Les entrâs <del>barrâs</del> ont étâ solucionâs.',
-'double-redirect-fixed-move' => 'Cela redirèccion, que la ciba [[$1]] at étâ renomâ, mène ora vers [[$2]].',
-'double-redirect-fixer' => 'Corrèctor de redirèccion',
+'double-redirect-fixed-move' => 'Cela redirèccion, que la ciba [[$1]] at étâ renomâ, mène ora vers [[$2]].',
+'double-redirect-fixed-maintenance' => 'Correge la redirèccion dobla de [[$1]] vers [[$2]].',
+'double-redirect-fixer' => 'Corrèctor de redirèccion',
'brokenredirects' => 'Redirèccions câsses',
'brokenredirectstext' => 'Cetes redirèccions mènont vers des pâges pas ègzistentes :',
@@ -2055,6 +2102,7 @@ Volyéd notar que d’ôtros setos pôvont avêr un lim drêt de vers un fichié
'pager-newer-n' => '{{PLURAL:$1|ples novèla|$1 ples novèles}}',
'pager-older-n' => '{{PLURAL:$1|ples vielye|$1 ples vielyes}}',
'suppress' => 'Supèrvisar',
+'querypage-disabled' => 'Ceta pâge spèciâla est dèsactivâ por des rêsons de capacitât.',
# Book sources
'booksources' => 'Ôvres de refèrence',
@@ -2107,7 +2155,7 @@ Vêde asse-ben les [[Special:WantedCategories|catègories les ples demandâs]].'
'sp-deletedcontributions-contribs' => 'contribucions',
# Special:LinkSearch
-'linksearch' => 'Lims de defôr',
+'linksearch' => 'Rechèrche de lims de defôr',
'linksearch-pat' => 'Modèlo de rechèrche :',
'linksearch-ns' => 'Èspâço de noms :',
'linksearch-ok' => 'Rechèrchiér',
@@ -2174,6 +2222,10 @@ L’adrèce èlèctronica que vos éd endicâ dens voutres [[Special:Preferences
'noemailtext' => 'Ceti utilisator at pas spècefiâ una adrèce èlèctronica valida.',
'nowikiemailtitle' => 'Gins de mèssageria èlèctronica ôtorisâ',
'nowikiemailtext' => 'Ceti utilisator at chouèsi de pas recêvre de mèssâjo de la pârt d’ôtros utilisators.',
+'emailnotarget' => 'Nom d’utilisator u dèstinatèro pas ègzistent ou ben envalido.',
+'emailtarget' => 'Buchiéd lo nom d’utilisator u dèstinatèro',
+'emailusername' => 'Nom d’utilisator :',
+'emailusernamesubmit' => 'Sometre',
'email-legend' => 'Mandar un mèssâjo a un ôtro utilisator de {{SITENAME}}',
'emailfrom' => 'Èxpèdior :',
'emailto' => 'Dèstinatèro :',
@@ -2199,10 +2251,10 @@ L’adrèce èlèctronica que vos éd endicâ dens voutres [[Special:Preferences
'watchlistanontext' => 'Vos volyéd $1 por fâre vêre ou changiér los èlèments de voutra lista de survelyence.',
'watchnologin' => 'Pas branchiê',
'watchnologintext' => 'Vos dête étre [[Special:UserLogin|branchiê]] por changiér voutra lista de survelyence.',
-'addedwatch' => 'Apondua a la lista de survelyence',
+'addwatch' => 'Apondre a la lista de survelyence',
'addedwatchtext' => "La pâge « [[:$1]] » at étâ apondua a voutra [[Special:Watchlist|lista de survelyence]].
Los changements a vegnir de ceta pâge et de sa pâge de discussion y seront listâs et la pâge aparètrat '''en grâs''' dedens la [[Special:RecentChanges|lista des dèrriérs changements]] por étre repèrâ ples facilament.",
-'removedwatch' => 'Enlevâ de la lista de survelyence',
+'removewatch' => 'Enlevar de la lista de survelyence',
'removedwatchtext' => 'La pâge « [[:$1]] » at étâ enlevâ de voutra [[Special:Watchlist|lista de survelyence]].',
'watch' => 'Siuvre',
'watchthispage' => 'Siuvre ceta pâge',
@@ -2223,8 +2275,9 @@ Los changements a vegnir de ceta pâge et de sa pâge de discussion y seront lis
'watchlist-options' => 'Chouèx de la lista de survelyence',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Survelyence...',
-'unwatching' => 'Fin de la survelyence...',
+'watching' => 'Survelyence...',
+'unwatching' => 'Fin de la survelyence...',
+'watcherrortext' => 'Una èrror est arrevâ pendent lo changement des paramètres de voutra lista de survelyence por « $1 ».',
'enotif_mailer' => 'Sistèmo de notificacion per mèssageria èlèctronica de {{SITENAME}}',
'enotif_reset' => 'Marcar totes les pâges coment visitâs',
@@ -2256,16 +2309,16 @@ Vos pouede asse-ben tornar inicialisar los drapéls de notificacion por totes le
--
Por changiér los paramètres de notificacion per mèssageria èlèctronica, visitâd
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Por changiér los paramètres de voutra lista de survelyence, visitâd
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Por suprimar la pâge de voutra lista de survelyence, visitâd
$UNWATCHURL
Retôrn et assistance :
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Suprimar la pâge',
@@ -2281,7 +2334,7 @@ Retôrn et assistance :
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]].',
'actioncomplete' => 'Accion fêta',
'actionfailed' => 'L’accion at pas reussia',
-'deletedtext' => '« <nowiki>$1</nowiki> » at étâ suprimâ.
+'deletedtext' => '« $1 » at étâ suprimâ.
Vêde lo $2 por una lista de les novèles suprèssions.',
'deletedarticle' => 'at suprimâ « [[$1]] »',
'suppressedarticle' => 'at suprimâ « [[$1]] »',
@@ -2342,7 +2395,7 @@ Vêde la [[Special:ProtectedPages|lista de les pâges protègiês]] por la lista
'protect_expiry_invalid' => 'La dâta d’èxpiracion est envalida.',
'protect_expiry_old' => 'La dâta d’èxpiracion est ja passâ.',
'protect-unchain-permissions' => 'Dèvèrrolyér adés més de chouèx de protèccion',
-'protect-text' => "Vos pouede vêre et changiér lo nivél de protèccion de la pâge '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Vos pouede vêre et changiér lo nivél de protèccion de la pâge '''$1'''.",
'protect-locked-blocked' => "Vos pouede pas changiér los nivéls de protèccion tant que vos éte blocâ.
Vê-que la configuracion d’ora de la pâge '''$1''' :",
'protect-locked-dblock' => "Los nivéls de protèccion pôvont pas étre changiês perce que la bâsa de balyês est vèrrolyê.
@@ -2397,9 +2450,8 @@ Vos pouede changiér lo nivél de protèccion de ceta pâge sen que cen afècte
'undeletepagetext' => '{{PLURAL:$1|Ceta pâge at étâ suprimâ et sè trove|Cetes pâges ont étâ suprimâs et sè trovont}} dens les arch·ives, de yô que pô{{PLURAL:$1||von}}t adés étre refêt{{PLURAL:$1|a|es}}.
Les arch·ives pôvont étre èfaciês règuliérement.',
'undelete-fieldset-title' => 'Refâre les vèrsions',
-'undeleteextrahelp' => "Por refâre l’historico complèt de cela pâge, lèssiéd totes les câses pas pouentâs et pués clicâd dessus '''''Refâre'''''.
-Por fâre una rèstoracion encomplèta, pouentâd les câses que corrèspondont a les vèrsions a refâre, et pués clicâd dessus '''''Refâre'''''.
-Clicar dessus '''''Tornar inicialisar''''' èfacierat la bouèta de rèsumâ et tornerat inicialisar totes les câses a pouentar.",
+'undeleteextrahelp' => "Por refâre l’historico complèt de la pâge, lèssiéd totes les câses pas pouentâs et pués clicâd dessus '''''{{int:undeletebtn}}'''''.
+Por fâre una rèstoracion encomplèta, pouentâd les câses que corrèspondont a les vèrsions a refâre, et pués clicâd dessus '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|vèrsion arch·ivâ|vèrsions arch·ivâs}}',
'undeletehistory' => 'Se vos reféte la pâge, totes les vèrsions seront replaciês dens l’historico.
S’una pâge novèla avouéc lo mémo nom at étâ fêta dês la suprèssion, les vèrsions refêtes aparètront dens l’historico devant et la vèrsion d’ora serat pas remplaciê ôtomaticament.',
@@ -2445,9 +2497,12 @@ $1',
'undelete-show-file-submit' => 'Ouè',
# Namespace form on various pages
-'namespace' => 'Èspâço de noms :',
-'invert' => 'Envèrsar lo chouèx',
-'blanknamespace' => '(Principâl)',
+'namespace' => 'Èspâço de noms :',
+'invert' => 'Envèrsar lo chouèx',
+'tooltip-invert' => 'Pouentâd ceta câsa por cachiér los changements de les pâges dens l’èspâço de noms chouèsi (et l’èspâço de noms associyê avouéc se pouentâ)',
+'namespace_association' => 'Èspâço de noms associyê',
+'tooltip-namespace_association' => 'Pouentâd ceta câsa por encllure avouéc l’èspâço de noms de discussion associyê a l’èspâço de noms chouèsi',
+'blanknamespace' => '(Principâl)',
# Contributions
'contributions' => 'Contribucions a l’utilisator',
@@ -2497,13 +2552,15 @@ La dèrriére entrâ du jornal des blocâjos est disponibla ce-desot :',
'whatlinkshere-filters' => 'Filtros',
# Block/unblock
+'autoblockid' => 'Blocâjo ôtomatico #$1',
+'block' => 'Blocar l’utilisator',
+'unblock' => 'Dèblocar l’utilisator',
'blockip' => 'Blocar l’utilisator',
'blockip-title' => 'Blocar l’utilisator',
'blockip-legend' => 'Blocar l’utilisator',
'blockiptext' => 'Utilisâd lo formulèro ce-desot por blocar l’accès en ècritura dês una adrèce IP spècefica ou ben un nom d’utilisator.
Una tâla mesera devrêt étre prêsa ren que por empachiér lo vandalismo et en acôrd avouéc les [[{{MediaWiki:Policy-url}}|règlles de dedens]].
Balyéd ce-desot una rêson justa (per ègzemplo en citent les pâges qu’ont étâ vandalisâs).',
-'ipaddress' => 'Adrèce IP :',
'ipadressorusername' => 'Adrèce IP ou ben nom d’utilisator :',
'ipbexpiry' => 'Temps devant èxpiracion :',
'ipbreason' => 'Rêson :',
@@ -2516,7 +2573,7 @@ Balyéd ce-desot una rêson justa (per ègzemplo en citent les pâges qu’ont Ã
** Tentativa d’entimidacion ou ben de torment
** Abus d’usâjo d’un mouél de comptos
** Nom d’utilisator pas accèptâblo, ofensent ou ben difament',
-'ipbanononly' => 'Blocar ren que los utilisators pas encartâs',
+'ipb-hardblock' => 'Empache los changements des utilisators encartâs qu’utilisont cela adrèce IP',
'ipbcreateaccount' => 'Empachiér la crèacion de compto',
'ipbemailban' => 'Empachiér l’utilisator de mandar des mèssâjos',
'ipbenableautoblock' => 'Blocar ôtomaticament la dèrriére adrèce IP utilisâ per l’utilisator et pués totes ses adrèces IP a vegnir que porrêt èprovar',
@@ -2527,12 +2584,15 @@ Balyéd ce-desot una rêson justa (per ègzemplo en citent les pâges qu’ont Ã
'ipbotherreason' => 'Ôtra rêson / rêson de ples :',
'ipbhidename' => 'Cachiér lo nom d’utilisator des changements et de les listes',
'ipbwatchuser' => 'Siuvre les pâges utilisator et de discussion a ceti utilisator',
-'ipballowusertalk' => 'Pèrmèt a ceti utilisator de changiér sa prôpra pâge de discussion pendent son temps de blocâjo',
+'ipb-disableusertalk' => 'Empache cél utilisator de changiér sa prôpra pâge de discussion pendent lo temps de son blocâjo',
'ipb-change-block' => 'Tornar blocar ceti utilisator avouéc celos paramètres',
+'ipb-confirm' => 'Confirmar lo blocâjo',
'badipaddress' => 'L’adrèce IP est fôssa.',
'blockipsuccesssub' => 'Blocâjo reussi',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] at étâ blocâ.<br />
Vêde la [[Special:IPBlockList|lista ux utilisators et a les adrèces IP blocâs]] por revêre los blocâjos.',
+'ipb-blockingself' => 'Vos éte prèst a vos blocar vos-mémo ! Éte-vos de sûr de lo volêr fâre ?',
+'ipb-confirmhideuser' => 'Vos éte prèst a blocar un utilisator avouéc « cachiér l’utilisator » activâ. Cen suprime lo nom a l’utilisator dens totes les listes et les entrâs du jornal. Éte-vos de sûr de lo volêr fâre ?',
'ipb-edit-dropdown' => 'Changiér les rêsons de blocâjo',
'ipb-unblock-addr' => 'Dèblocar $1',
'ipb-unblock' => 'Dèblocar un compto utilisator ou ben una adrèce IP',
@@ -2542,17 +2602,23 @@ Vêde la [[Special:IPBlockList|lista ux utilisators et a les adrèces IP blocâs
'unblockiptext' => 'Utilisâd lo formulèro ce-desot por rètablir l’accès en ècritura dês una adrèce IP spècefica ou ben un nom d’utilisator.',
'ipusubmit' => 'Enlevar ceti blocâjo',
'unblocked' => '[[User:$1|$1]] at étâ dèblocâ',
+'unblocked-range' => '$1 at étâ dèblocâ',
'unblocked-id' => 'Lo blocâjo $1 at étâ enlevâ',
+'blocklist' => 'Utilisators blocâs',
'ipblocklist' => 'Utilisators blocâs',
'ipblocklist-legend' => 'Chèrchiér un utilisator blocâ',
-'ipblocklist-username' => 'Nom d’utilisator ou ben adrèce IP :',
-'ipblocklist-sh-userblocks' => '$1 los blocâjos de comptos',
-'ipblocklist-sh-tempblocks' => '$1 los blocâjos temporèros',
-'ipblocklist-sh-addressblocks' => '$1 los blocâjos d’adrèces IP solètes',
+'blocklist-userblocks' => 'Cachiér los blocâjos de comptos',
+'blocklist-tempblocks' => 'Cachiér los blocâjos temporèros',
+'blocklist-addressblocks' => 'Cachiér los blocâjos d’adrèces IP solètes',
+'blocklist-timestamp' => 'Dâta et hora',
+'blocklist-target' => 'Ciba',
+'blocklist-expiry' => 'Dâta d’èxpiracion',
+'blocklist-by' => 'Administrator qu’at fêt lo blocâjo',
+'blocklist-params' => 'Paramètres de blocâjo',
+'blocklist-reason' => 'Rêson',
'ipblocklist-submit' => 'Rechèrchiér',
'ipblocklist-localblock' => 'Blocâjo local',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Ôtro blocâjo|Ôtros blocâjos}}',
-'blocklistline' => '$1 : $2 at blocâ $3 ; $4',
'infiniteblock' => 'sen fin',
'expiringblock' => 'èxpire lo $1 a $2',
'anononlyblock' => 'ren que los utilisators pas encartâs',
@@ -2577,7 +2643,7 @@ Lo jornal de les suprèssions est disponiblo ce-desot :',
'reblock-logentry' => 'at changiê los paramètres du blocâjo a [[$1]] avouéc una èxpiracion u $2 $3',
'blocklogtext' => 'O est lo jornal des blocâjos et des dèblocâjos ux utilisators.
Les adrèces IP blocâs ôtomaticament sont pas listâs.
-Vêde la [[Special:IPBlockList|lista ux utilisators et a les adrèces IP blocâs]] por vêre los banissements et los blocâjos que sont ora opèracionèls.',
+Vêde la [[Special:BlockList|lista ux utilisators et a les adrèces IP blocâs]] por vêre los banissements et los blocâjos que sont ora opèracionèls.',
'unblocklogentry' => 'at dèblocâ $1',
'block-log-flags-anononly' => 'ren que los utilisators pas encartâs',
'block-log-flags-nocreate' => 'crèacion de compto dèfendua',
@@ -2591,10 +2657,10 @@ Vêde la [[Special:IPBlockList|lista ux utilisators et a les adrèces IP blocâs
'ipb_expiry_temp' => 'Los blocâjos de noms d’utilisator cachiês dêvont étre sen fin.',
'ipb_hide_invalid' => 'Empossiblo de suprimar ceti compto ; semble avêr trop de changements.',
'ipb_already_blocked' => '« $1 » est ja blocâ',
-'ipb-needreblock' => '== Ja blocâ ==
-$1 est ja blocâ.
+'ipb-needreblock' => '$1 est ja blocâ.
Voléd-vos changiér los paramètres ?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Ôtro blocâjo|Ôtros blocâjos}}',
+'unblock-hideuser' => 'Vos pouede pas dèblocar cél utilisator, perce que son nom d’utilisator at étâ cachiê.',
'ipb_cant_unblock' => 'Èrror : numerô de blocâjo $1 pas trovâ.
O est possiblo qu’un dèblocâjo èye ja étâ fêt.',
'ipb_blocked_as_range' => 'Èrror : l’adrèce IP $1 est pas blocâ tot drêt et pôt vêr pas étre dèblocâ.
@@ -2635,6 +2701,7 @@ Oubliâd pas de [[Special:UnlockDB|la dèvèrrolyér]] quand vos aréd chavonâ
'lockfilenotwritable' => 'Lo fichiér de vèrrolyâjo de la bâsa de balyês est pas enscriptiblo.
Por vèrrolyér ou ben dèvèrrolyér la bâsa de balyês, dêt étre accèssiblo en ècritura dês lo sèrvor vouèbe.',
'databasenotlocked' => 'La bâsa de balyês est pas vèrrolyê.',
+'lockedbyandtime' => '(per $1 lo $2 a $3)',
# Move page
'move-page' => 'Renomar $1',
@@ -2759,7 +2826,7 @@ Dens cél dèrriér câs, vos pouede asse-ben utilisar un lim, coment [[{{#Speci
'allmessagesdefault' => 'Tèxto per dèfôt',
'allmessagescurrent' => 'Tèxto d’ora',
'allmessagestext' => 'O est la lista des mèssâjos sistèmo disponiblos dens l’èspâço MediaWiki.
-Volyéd visitar la [http://www.mediawiki.org/wiki/Localisation localisacion de MediaWiki] et pués [http://translatewiki.net translatewiki.net] se vos voléd contribuar a la localisacion g·ènèrica de MediaWiki.',
+Volyéd visitar la [//www.mediawiki.org/wiki/Localisation localisacion de MediaWiki] et pués [//translatewiki.net translatewiki.net] se vos voléd contribuar a la localisacion g·ènèrica de MediaWiki.',
'allmessagesnotsupportedDB' => "Ceta pâge '''{{ns:special}}:Allmessages''' est inutilisâbla perce que '''\$wgUseDatabaseMessages''' at étâ dèsactivâ.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtrar per ètat de changement :',
@@ -2904,35 +2971,42 @@ Pèrmèt de rètablir la vèrsion devant et pués d’apondre una rêson dens la
'tooltip-summary' => 'Buchiéd un côrt rèsumâ',
# Stylesheets
-'common.css' => '/* Lo code CSS betâ ique serat aplicâ a tôs los habelyâjos. */',
-'standard.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Estandârd ». */',
-'nostalgia.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Cafârd ». */',
-'cologneblue.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Blu de Cologne ». */',
-'monobook.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « MonoBook ». */',
-'myskin.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « MonHabelyâjo ». */',
-'chick.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Pugin ». */',
-'simple.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Simplo ». */',
-'modern.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Modèrno ». */',
-'vector.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Vèctor ». */',
-'print.css' => '/* Lo code CSS betâ ique afècterat les emprèssions. */',
-'handheld.css' => '/* Lo code CSS betâ ique afècterat los aparèlys mobilos d’aprés l’habelyâjo configurâ dedens « $wgHandheldStyle ». */',
+'common.css' => '/* Lo code CSS betâ ique serat aplicâ a tôs los habelyâjos. */',
+'standard.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Estandârd ». */',
+'nostalgia.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Cafârd ». */',
+'cologneblue.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Blu de Cologne ». */',
+'monobook.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « MonoBook ». */',
+'myskin.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « MonHabelyâjo ». */',
+'chick.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Pugin ». */',
+'simple.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Simplo ». */',
+'modern.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Modèrno ». */',
+'vector.css' => '/* Lo code CSS betâ ique afècterat los utilisators de l’habelyâjo « Vèctor ». */',
+'print.css' => '/* Lo code CSS betâ ique afècterat les emprèssions. */',
+'handheld.css' => '/* Lo code CSS betâ ique afècterat los aparèlys mobilos d’aprés l’habelyâjo configurâ dedens « $wgHandheldStyle ». */',
+'noscript.css' => '/* Lo code CSS betâ ique afècterat los utilisators qu’ont dèsactivâ lo code JavaScript. */',
+'group-autoconfirmed.css' => '/* Lo code CSS betâ ique afècterat ren que los utilisators encartâs. */',
+'group-bot.css' => '/* Lo code CSS betâ ique afècterat ren que los bots. */',
+'group-sysop.css' => '/* Lo code CSS betâ ique afècterat ren que los administrators. */',
+'group-bureaucrat.css' => '/* Lo code CSS betâ ique afècterat ren que los grata-papiérs. */',
# Scripts
-'common.js' => '/* Tot code JavaScript betâ ique serat chargiê per tôs los utilisators avouéc châque chargement de pâge. */',
-'standard.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Estandârd ». */',
-'nostalgia.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Cafârd ». */',
-'cologneblue.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Blu de Cologne ». */',
-'monobook.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « MonoBook ». */',
-'myskin.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « MonHabelyâjo ». */',
-'chick.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Pugin ». */',
-'simple.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Simplo ». */',
-'modern.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Modèrno ». */',
-'vector.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Vèctor ». */',
+'common.js' => '/* Tot code JavaScript betâ ique serat chargiê per tôs los utilisators avouéc châque chargement de pâge. */',
+'standard.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Estandârd ». */',
+'nostalgia.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Cafârd ». */',
+'cologneblue.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Blu de Cologne ». */',
+'monobook.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « MonoBook ». */',
+'myskin.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « MonHabelyâjo ». */',
+'chick.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Pugin ». */',
+'simple.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Simplo ». */',
+'modern.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Modèrno ». */',
+'vector.js' => '/* Tot code JavaScript betâ ique serat chargiê per los utilisators de l’habelyâjo « Vèctor ». */',
+'group-autoconfirmed.js' => '/* Tot code JavaScript betâ ique serat chargiê per ren que los utilisators encartâs. */',
+'group-bot.js' => '/* Tot code JavaScript betâ ique serat chargiê per ren que los bots. */',
+'group-sysop.js' => '/* Tot code JavaScript betâ ique serat chargiê per ren que los administrators. */',
+'group-bureaucrat.js' => '/* Tot code JavaScript betâ ique serat chargiê per ren que los grata-papiérs. */',
# Metadata
-'nodublincore' => 'Les mètabalyês « Dublin Core RDF » sont dèsactivâs sur ceti sèrvor.',
-'nocreativecommons' => 'Les mètabalyês « Creative Commons RDF » sont dèsactivâs sur ceti sèrvor.',
-'notacceptable' => 'Lo sèrvor vouiqui pôt pas balyér les balyês dens un format que voutron cliant est capâblo de liére.',
+'notacceptable' => 'Lo sèrvor vouiqui pôt pas balyér les balyês dens un format que voutron cliant est capâblo de liére.',
# Attribution
'anonymous' => '{{PLURAL:$1|Utilisator pas encartâ|Utilisators pas encartâs}} dessus {{SITENAME}}',
@@ -2956,12 +3030,17 @@ O est probâblament diu a un lim de vers un seto de defôr qu’aparêt sur la l
'spam_blanking' => 'Totes les vèrsions que contegnont des lims de vers $1 sont blanchies',
# Info page
-'infosubtitle' => 'Enformacions por la pâge',
-'numedits' => 'Nombro de changements (pâge) : $1',
-'numtalkedits' => 'Nombro de changements (pâge de discussion) : $1',
-'numwatchers' => 'Nombro de contributors qu’ont la pâge dens lor lista de survelyence : $1',
-'numauthors' => 'Nombro d’ôtors difèrents (pâge) : $1',
-'numtalkauthors' => 'Nombro d’ôtors difèrents (pâge de discussion) : $1',
+'pageinfo-title' => 'Enformacions por « $1 »',
+'pageinfo-header-edits' => 'Changements',
+'pageinfo-header-watchlist' => 'Lista de survelyence',
+'pageinfo-header-views' => 'Visualisacions',
+'pageinfo-subjectpage' => 'Pâge',
+'pageinfo-talkpage' => 'Pâge de discussion',
+'pageinfo-watchers' => 'Nombro de contributors qu’ont la pâge dens lor lista de survelyence',
+'pageinfo-edits' => 'Nombro de changements',
+'pageinfo-authors' => 'Nombro d’ôtors difèrents',
+'pageinfo-views' => 'Nombro de visualisacions',
+'pageinfo-viewsperedit' => 'Visualisacions per changement',
# Skin names
'skinname-standard' => 'Estandârd',
@@ -2974,26 +3053,6 @@ O est probâblament diu a un lim de vers un seto de defôr qu’aparêt sur la l
'skinname-modern' => 'Modèrno',
'skinname-vector' => 'Vèctor',
-# Math options
-'mw_math_png' => 'Tojorn fâre una émâge PNG',
-'mw_math_simple' => 'HTML se prod simplo, ôtrament PNG',
-'mw_math_html' => 'HTML se possiblo, ôtrament PNG',
-'mw_math_source' => 'Lèssiér lo code TeX originâl',
-'mw_math_modern' => 'Por los navigators modèrnos',
-'mw_math_mathml' => 'MathML se possiblo (èxpèrimentâl)',
-
-# Math errors
-'math_failure' => 'Èrror d’analise sintaxica',
-'math_unknown_error' => 'èrror encognua',
-'math_unknown_function' => 'fonccion encognua',
-'math_lexing_error' => 'èrror lèxicâla',
-'math_syntax_error' => 'èrror de sintaxa',
-'math_image_error' => 'La convèrsion en PNG at pas reussia ; controlâd l’enstalacion de LaTeX et dvipng (ou ben dvips + gs + convert)',
-'math_bad_tmpdir' => 'Empossiblo d’ècrire dens ou ben de fâre lo rèpèrtouèro math temporèro',
-'math_bad_output' => 'Empossiblo d’ècrire dens ou ben de fâre lo rèpèrtouèro math de sortia',
-'math_notexvc' => 'L’ègzécutâblo « texvc » est entrovâblo.
-Volyéd liére « math/README » por lo configurar.',
-
# Patrolling
'markaspatrolleddiff' => 'Marcar coment survelyê',
'markaspatrolledtext' => 'Marcar ceta pâge coment survelyê',
@@ -3029,22 +3088,25 @@ $1',
'nextdiff' => 'Changement aprés →',
# Media information
-'mediawarning' => "'''Atencion :''' ceti tipo de fichiér pôt contegnir de code mâlvelyent.
+'mediawarning' => "'''Atencion :''' ceti tipo de fichiér pôt contegnir de code mâlvelyent.
Se vos l’ègzécutâd, voutron sistèmo pôt étre compromês.",
-'imagemaxsize' => "Format lo ples grant de les émâges :<br />''(por les pâges de dèscripcion d’émâges)''",
-'thumbsize' => 'Talye de la figura :',
-'widthheightpage' => '$1 × $2, $3 pâge{{PLURAL:$3||s}}',
-'file-info' => 'Talye du fichiér : $1, tipo MIME : $2',
-'file-info-size' => '$1 × $2 pixèls, talye du fichiér : $3, tipo MIME : $4',
-'file-nohires' => '<small>Gins de rèsolucion ples hôta disponibla.</small>',
-'svg-long-desc' => 'Fichiér SVG, rèsolucion de $1 × $2 pixèls, talye : $3',
-'show-big-image' => 'Émâge en rèsolucion ples hôta',
-'show-big-image-thumb' => '<small>Talye de ceti apèrçu : $1 × $2 pixèls</small>',
-'file-info-gif-looped' => 'en boclla',
-'file-info-gif-frames' => '$1 émâge{{PLURAL:$1||s}}',
-'file-info-png-looped' => 'en boclla',
-'file-info-png-repeat' => 'jouyê $1 côp{{PLURAL:$1||s}}',
-'file-info-png-frames' => '$1 émâge{{PLURAL:$1||s}}',
+'imagemaxsize' => "Format lo ples grant de les émâges :<br />''(por les pâges de dèscripcion d’émâges)''",
+'thumbsize' => 'Talye de la figura :',
+'widthheightpage' => '$1 × $2, $3 pâge{{PLURAL:$3||s}}',
+'file-info' => 'Talye du fichiér : $1, tipo MIME : $2',
+'file-info-size' => '$1 × $2 pixèls, talye du fichiér : $3, tipo MIME : $4',
+'file-info-size-pages' => '$1 × $2 pixèls, talye du fichiér : $3, tipo MIME : $4, $5 pâge{{PLURAL:$5||s}}',
+'file-nohires' => '<small>Gins de rèsolucion ples hôta disponibla.</small>',
+'svg-long-desc' => 'Fichiér SVG, rèsolucion de $1 × $2 pixèls, talye : $3',
+'show-big-image' => 'Émâge en rèsolucion ples hôta',
+'show-big-image-preview' => '<small>Talye de ceti apèrçu : $1.</small>',
+'show-big-image-other' => '<small>Ôtres rèsolucions : $1.</small>',
+'show-big-image-size' => '$1 × $2 pixèls',
+'file-info-gif-looped' => 'en boclla',
+'file-info-gif-frames' => '$1 émâge{{PLURAL:$1||s}}',
+'file-info-png-looped' => 'en boclla',
+'file-info-png-repeat' => 'jouyê $1 côp{{PLURAL:$1||s}}',
+'file-info-png-frames' => '$1 émâge{{PLURAL:$1||s}}',
# Special:NewFiles
'newimages' => 'Galerie des novéls fichiérs',
@@ -3058,6 +3120,9 @@ Se vos l’ègzécutâd, voutron sistèmo pôt étre compromês.",
'bydate' => 'per dâta',
'sp-newimages-showfrom' => 'Fâre vêre los novéls fichiérs dês lo $1 a $2',
+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'days-abbrev' => 'j',
+
# Bad image list
'bad_image_list' => 'Lo format est ceti :
@@ -3071,7 +3136,7 @@ Los ôtros lims sur la méma legne sont considèrâs coment des èxcèpcions, pe
Se lo fichiér at étâ changiê dês son ètat originâl, quârques dètalys pôvont pas reflètar a chavon l’émâge changiê.',
'metadata-expand' => 'Fâre vêre les enformacions dètalyês',
'metadata-collapse' => 'Cachiér les enformacions dètalyês',
-'metadata-fields' => 'Los champs de mètabalyês d’EXIF listâs dens ceti mèssâjo seront encllus dens la pâge de dèscripcion de l’émâge quand la trâbla de mètabalyês serat rèduita.
+'metadata-fields' => 'Los champs de mètabalyês d’émâge listâs dens ceti mèssâjo seront encllus dens la pâge de dèscripcion de l’émâge quand la trâbla de mètabalyês serat rèduita.
Los ôtros champs seront cachiês per dèfôt.
* make
* model
@@ -3079,7 +3144,14 @@ Los ôtros champs seront cachiês per dèfôt.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+'metadata-langitem' => "'''$2 :''' $1",
# EXIF tags
'exif-imagewidth' => 'Largior',
@@ -3094,13 +3166,11 @@ Los ôtros champs seront cachiês per dèfôt.
'exif-ycbcrpositioning' => 'Posicionement Y et C',
'exif-xresolution' => 'Rèsolucion plana',
'exif-yresolution' => 'Rèsolucion drêta',
-'exif-resolutionunit' => 'Unitât de rèsolucion plana et drêta',
'exif-stripoffsets' => 'Emplacement de les balyês de l’émâge',
'exif-rowsperstrip' => 'Nombro de legnes per benda',
'exif-stripbytecounts' => 'Talye en octèts per benda',
'exif-jpeginterchangeformat' => 'Posicion du SOI JPEG',
'exif-jpeginterchangeformatlength' => 'Talye en octèts de les balyês JPEG',
-'exif-transferfunction' => 'Fonccion de transfèrt',
'exif-whitepoint' => 'Cromaticitât du pouent blanc',
'exif-primarychromaticities' => 'Cromaticitât de les colors primères',
'exif-ycbcrcoefficients' => 'Factors de la matrice de transformacion de l’èspâço colorimètrico',
@@ -3119,7 +3189,6 @@ Los ôtros champs seront cachiês per dèfôt.
'exif-compressedbitsperpixel' => 'Fôrma de comprèssion de l’émâge',
'exif-pixelydimension' => 'Largior de l’émâge',
'exif-pixelxdimension' => 'Hôtior de l’émâge',
-'exif-makernote' => 'Notes u fabrecant',
'exif-usercomment' => 'Comentèros a l’utilisator',
'exif-relatedsoundfile' => 'Fichiér ôdiô associyê',
'exif-datetimeoriginal' => 'Dâta et hora de la g·ènèracion de les balyês',
@@ -3133,7 +3202,6 @@ Los ôtros champs seront cachiês per dèfôt.
'exif-exposureprogram' => 'Programo d’èxposicion',
'exif-spectralsensitivity' => 'Sensibilitât spèctrâla',
'exif-isospeedratings' => 'Sensibilitât ISO',
-'exif-oecf' => 'Factor de convèrsion optoèlèctronico',
'exif-shutterspeedvalue' => 'Vitèsse d’ètopâ de l’APEX',
'exif-aperturevalue' => 'Uvèrtura de l’APEX',
'exif-brightnessvalue' => 'Luminance APEX',
@@ -3146,7 +3214,6 @@ Los ôtros champs seront cachiês per dèfôt.
'exif-focallength' => 'Longior focâla',
'exif-subjectarea' => 'Emplacement du sujèt',
'exif-flashenergy' => 'Nèrf de l’èludo',
-'exif-spatialfrequencyresponse' => 'Rèponsa en frèquence espaciâla',
'exif-focalplanexresolution' => 'Rèsolucion plana de la vision focâla',
'exif-focalplaneyresolution' => 'Rèsolucion drêta de la vision focâla',
'exif-focalplaneresolutionunit' => 'Unitât de rèsolucion de la vision focâla',
@@ -3155,7 +3222,6 @@ Los ôtros champs seront cachiês per dèfôt.
'exif-sensingmethod' => 'Tipo de captior',
'exif-filesource' => 'Sôrsa du fichiér',
'exif-scenetype' => 'Tipo de scèna',
-'exif-cfapattern' => 'Modèlo CFA',
'exif-customrendered' => 'Rendu d’émâge pèrsonalisâ',
'exif-exposuremode' => 'Fôrma d’èxposicion',
'exif-whitebalance' => 'Balance des blancs',
@@ -3200,10 +3266,80 @@ Los ôtros champs seront cachiês per dèfôt.
'exif-gpsareainformation' => 'Nom de la zona GPS',
'exif-gpsdatestamp' => 'Dâta GPS',
'exif-gpsdifferential' => 'Corrèccion difèrencièla GPS',
+'exif-jpegfilecomment' => 'Comentèro de fichiér JPEG',
+'exif-keywords' => 'Mots-cllâfs',
+'exif-worldregioncreated' => 'Règ·ion du mondo que la fotô at étâ prêsa',
+'exif-countrycreated' => 'Payis que la fotô at étâ prêsa',
+'exif-countrycodecreated' => 'Code du payis que la fotô at étâ prêsa',
+'exif-provinceorstatecreated' => 'Province ou ben ètat que la fotô at étâ prêsa',
+'exif-citycreated' => 'Vela que la fotô at étâ prêsa',
+'exif-sublocationcreated' => 'Partia de la vela que la fotô at étâ prêsa',
+'exif-worldregiondest' => 'Règ·ion du mondo montrâ',
+'exif-countrydest' => 'Payis montrâ',
+'exif-countrycodedest' => 'Code du payis montrâ',
+'exif-provinceorstatedest' => 'Province ou ben ètat montrâ',
+'exif-citydest' => 'Vela montrâ',
+'exif-sublocationdest' => 'Partia de la vela montrâ',
'exif-objectname' => 'Titro côrt',
+'exif-specialinstructions' => 'Enstruccions spèciâles',
+'exif-headline' => 'Titro',
+'exif-credit' => 'Crèdit / fornissor',
+'exif-source' => 'Sôrsa',
+'exif-editstatus' => 'Statut èditoriâl de l’émâge',
+'exif-urgency' => 'Urgence',
+'exif-fixtureidentifier' => 'Nom de l’outil',
+'exif-locationdest' => 'Endrêt fotografiâ',
+'exif-locationdestcode' => 'Code de l’endrêt fotografiâ',
+'exif-objectcycle' => 'Moment de la jornâ que ceti mèdia est dèstinâ',
+'exif-contact' => 'Enformacions de contacte',
+'exif-writer' => 'Ôtor',
+'exif-languagecode' => 'Lengoua',
+'exif-iimversion' => 'Vèrsion IIM',
+'exif-iimcategory' => 'Catègorie',
+'exif-iimsupplementalcategory' => 'Catègories de ples',
+'exif-datetimeexpires' => 'Pas utilisar aprés',
+'exif-datetimereleased' => 'Paru lo',
+'exif-originaltransmissionref' => 'Code de l’endrêt de la transmission originâla',
+'exif-identifier' => 'Numerô',
+'exif-lens' => 'Lentelye utilisâ',
+'exif-serialnumber' => 'Numerô de sèria de l’aparèly-fotô',
+'exif-cameraownername' => 'Propriètèro de l’aparèly-fotô',
+'exif-label' => 'Lambél',
+'exif-datetimemetadata' => 'Dâta du dèrriér changement de les mètabalyês',
+'exif-nickname' => 'Nom enformèl de l’émâge',
+'exif-rating' => 'Nota (sur 5)',
+'exif-rightscertificate' => 'Cèrtificat d’administracion des drêts',
+'exif-copyrighted' => 'Statut des drêts d’ôtor',
+'exif-copyrightowner' => 'Propriètèro du drêt d’ôtor',
+'exif-usageterms' => 'Condicions d’usâjo',
+'exif-webstatement' => 'Dècllaracion des drêts d’ôtor en legne',
+'exif-originaldocumentid' => 'Numerô solèt du document originâl',
+'exif-licenseurl' => 'URL de la licence',
+'exif-morepermissionsurl' => 'Enformacions sur les licences altèrnatives',
+'exif-attributionurl' => 'Pendent lo reusâjo de cela ôvra, volyéd liyér a',
+'exif-preferredattributionname' => 'Pendent lo reusâjo de cela ôvra, volyéd crèditar',
+'exif-pngfilecomment' => 'Comentèro de fichiér PNG',
+'exif-disclaimer' => 'Avèrtissement',
+'exif-contentwarning' => 'Avèrtissement sur lo contegnu',
+'exif-giffilecomment' => 'Comentèro de fichiér GIF',
+'exif-intellectualgenre' => 'Tipo d’èlèment',
+'exif-subjectnewscode' => 'Code du sujèt',
+'exif-scenecode' => 'Code de scèna IPTC',
+'exif-event' => 'Èvènement fotografiâ',
+'exif-organisationinimage' => 'Organisacion fotografiâ',
+'exif-personinimage' => 'Pèrsona fotografiâ',
+'exif-originalimageheight' => 'Hôtior de l’émâge devant qu’el èye étâ tornâ cadrar',
+'exif-originalimagewidth' => 'Largior de l’émâge devant qu’el èye étâ tornâ cadrar',
# EXIF attributes
'exif-compression-1' => 'Pas comprèssâ',
+'exif-compression-2' => 'CCITT tropa 3 longior du codâjo Huffman changiê de dimension 1',
+'exif-compression-3' => 'CCITT tropa 3 codâjo du faxe',
+'exif-compression-4' => 'CCITT tropa 4 codâjo du faxe',
+'exif-compression-6' => 'JPEG (viely)',
+
+'exif-copyrighted-true' => 'Somês a drêt d’ôtor',
+'exif-copyrighted-false' => 'Domêno publico',
'exif-unknowndate' => 'Dâta encognua',
@@ -3219,7 +3355,7 @@ Los ôtros champs seront cachiês per dèfôt.
'exif-planarconfiguration-1' => 'Balyês ategnentes',
'exif-planarconfiguration-2' => 'Balyês sèparâs',
-'exif-colorspace-ffff.h' => 'Pas calibrâ',
+'exif-colorspace-65535' => 'Pas calibrâ',
'exif-componentsconfiguration-0' => 'Ègziste pas',
'exif-componentsconfiguration-5' => 'V',
@@ -3335,6 +3471,10 @@ Los ôtros champs seront cachiês per dèfôt.
'exif-gpslongitude-e' => "Longituda levant (''èst'')",
'exif-gpslongitude-w' => "Longituda ponant (''ouèst'')",
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 mètre{{PLURAL:$1||s}} en-d’amont du nivél de la mar',
+'exif-gpsaltitude-below-sealevel' => '$1 mètre{{PLURAL:$1||s}} en-desot du nivél de la mar',
+
'exif-gpsstatus-a' => 'Mesera en cors',
'exif-gpsstatus-v' => 'Entèropèrabilitât de la mesera',
@@ -3346,21 +3486,73 @@ Los ôtros champs seront cachiês per dèfôt.
'exif-gpsspeed-m' => 'Miles per hora',
'exif-gpsspeed-n' => 'Nuods',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilomètres',
+'exif-gpsdestdistance-m' => 'Miles',
+'exif-gpsdestdistance-n' => 'Miles marins',
+
+'exif-gpsdop-excellent' => 'Famosa ($1)',
+'exif-gpsdop-good' => 'Bôna ($1)',
+'exif-gpsdop-moderate' => 'Moyena ($1)',
+'exif-gpsdop-fair' => 'Passâbla ($1)',
+'exif-gpsdop-poor' => 'Crouye ($1)',
+
+'exif-objectcycle-a' => 'Matin solament',
+'exif-objectcycle-p' => 'Nuet solament',
+'exif-objectcycle-b' => 'Matin et nuet',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Veré dirèccion',
'exif-gpsdirection-m' => 'Dirèccion magnètica',
+'exif-ycbcrpositioning-1' => 'Centrâ',
+'exif-ycbcrpositioning-2' => 'Co-situâ',
+
+'exif-dc-contributor' => 'Contributors',
+'exif-dc-coverage' => 'Portâ espaciâla ou ben temporèla du mèdia',
+'exif-dc-date' => 'Dâta(/-es)',
+'exif-dc-publisher' => 'Èditor',
+'exif-dc-relation' => 'Mèdias liyês',
+'exif-dc-rights' => 'Drêts',
+'exif-dc-source' => 'Mèdia sôrsa',
+'exif-dc-type' => 'Tipo de mèdia',
+
+'exif-rating-rejected' => 'Refusâ',
+
+'exif-isospeedratings-overflow' => 'Ples grant que 65535',
+
+'exif-iimcategory-ace' => 'Ârts, cultura et amusament',
+'exif-iimcategory-clj' => 'Crimo et drêt',
+'exif-iimcategory-dis' => 'Catastrofes et accidents',
+'exif-iimcategory-fin' => 'Èconomia et afâres',
+'exif-iimcategory-edu' => 'Èducacion',
+'exif-iimcategory-evn' => 'Enveronance',
+'exif-iimcategory-hth' => 'Santât',
+'exif-iimcategory-hum' => 'Entèrèt de l’homo',
+'exif-iimcategory-lab' => 'Travâly',
+'exif-iimcategory-lif' => 'Fôrma de via et pâssa-temps',
+'exif-iimcategory-pol' => 'Politica',
+'exif-iimcategory-rel' => 'Religion et creyences',
+'exif-iimcategory-sci' => 'Science et tècnolog·ie',
+'exif-iimcategory-soi' => 'Quèstions sociâles',
+'exif-iimcategory-spo' => 'Sports',
+'exif-iimcategory-war' => 'Guèrra, conflit et troblo',
+'exif-iimcategory-wea' => 'Mètèô',
+
+'exif-urgency-normal' => 'Normala ($1)',
+'exif-urgency-low' => 'Fêbla ($1)',
+'exif-urgency-high' => 'Hôta ($1)',
+'exif-urgency-other' => 'Prioritât dèfenia per l’utilisator ($1)',
+
# External editor support
'edit-externally' => 'Changiér ceti fichiér en utilisent una aplicacion de defôr',
-'edit-externally-help' => '(Vêde les [http://www.mediawiki.org/wiki/Manual:External_editors enstruccions d’enstalacion] por més d’enformacions)',
+'edit-externally-help' => '(Vêde les [//www.mediawiki.org/wiki/Manual:External_editors enstruccions d’enstalacion] por més d’enformacions)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'totes',
-'imagelistall' => 'totes',
-'watchlistall2' => 'tot',
-'namespacesall' => 'tôs',
-'monthsall' => 'tôs',
-'limitall' => 'tôs',
+'watchlistall2' => 'tot',
+'namespacesall' => 'tôs',
+'monthsall' => 'tôs',
+'limitall' => 'tôs',
# E-mail address confirmation
'confirmemail' => 'Confirmar l’adrèce èlèctronica',
@@ -3449,17 +3641,25 @@ $1',
'trackbackdeleteok' => 'Lo rètrolim at étâ suprimâ avouéc reusséta.',
# Delete conflict
-'deletedwhileediting' => "'''Atencion :''' ceta pâge at étâ suprimâ aprés que vos vos éte betâ a la changiér !",
-'confirmrecreate' => "L’utilisator [[User:$1|$1]] ([[User talk:$1|Discussion]]) at suprimâ ceta pâge, pendent que vos vos érâd betâ a la changiér, por ceta rêson :
+'deletedwhileediting' => "'''Atencion :''' ceta pâge at étâ suprimâ aprés que vos vos éte betâ a la changiér !",
+'confirmrecreate' => "L’utilisator [[User:$1|$1]] ([[User talk:$1|Discussion]]) at suprimâ ceta pâge, pendent que vos vos érâd betâ a la changiér, por ceta rêson :
: ''$2''
Volyéd confirmar que vos voléd franc refâre cela pâge.",
-'recreate' => 'Refâre',
+'confirmrecreate-noreason' => 'L’utilisator [[User:$1|$1]] ([[User talk:$1|Discussion]]) at suprimâ ceta pâge, pendent que vos vos érâd betâ a la changiér.
+Volyéd confirmar que vos voléd franc refâre cela pâge.',
+'recreate' => 'Refâre',
# action=purge
'confirm_purge_button' => 'Confirmar',
'confirm-purge-top' => 'Voléd-vos purgiér lo cache de ceta pâge ?',
'confirm-purge-bottom' => 'Purgiér una pâge èface lo cache et pués fôrce la dèrriére vèrsion a étre montrâ.',
+# action=watch/unwatch
+'confirm-watch-button' => 'D’acôrd',
+'confirm-watch-top' => 'Apondre ceta pâge a voutra lista de survelyence ?',
+'confirm-unwatch-button' => 'D’acôrd',
+'confirm-unwatch-top' => 'Enlevar ceta pâge de voutra lista de survelyence ?',
+
# Separators for various lists, etc.
'semicolon-separator' => '&nbsp;;&#32;',
'colon-separator' => '&nbsp;:&#32;',
@@ -3515,7 +3715,7 @@ Volyéd confirmar que vos voléd franc refâre cela pâge.",
'watchlistedit-normal-legend' => 'Enlevar des titros de la lista de survelyence',
'watchlistedit-normal-explain' => 'Los titros de voutra lista de survelyence sont montrâs ce-desot.
Por enlevar un titro (et sa pâge de discussion), pouentâd la câsa a coutâ et pués clicâd sur lo boton « {{int:Watchlistedit-normal-submit}} ».
-Vos pouede asse-ben changiér la [[Special:Watchlist/raw|lista en fôrma bruta]].',
+Vos pouede asse-ben changiér la [[Special:EditWatchlist/raw|lista en fôrma bruta]].',
'watchlistedit-normal-submit' => 'Enlevar los titros',
'watchlistedit-normal-done' => '{{PLURAL:$1|Yon titro at étâ enlevâ|$1 titros ont étâ enlevâs}} de voutra lista de survelyence :',
'watchlistedit-raw-title' => 'Changiér la lista de survelyence en fôrma bruta',
@@ -3523,7 +3723,7 @@ Vos pouede asse-ben changiér la [[Special:Watchlist/raw|lista en fôrma bruta]]
'watchlistedit-raw-explain' => 'Los titros de voutra lista de survelyence sont montrâs ce-desot et pôvont étre changiês en los apondent ou ben en los enlevent de la lista ;
yon titro per legne.
Quand vos éd feni, clicâd sur lo boton « {{int:Watchlistedit-raw-submit}} ».
-Vos pouede asse-ben utilisar l’[[Special:Watchlist/edit|èditor normal]].',
+Vos pouede asse-ben utilisar l’[[Special:EditWatchlist|èditor normal]].',
'watchlistedit-raw-titles' => 'Titros :',
'watchlistedit-raw-submit' => 'Betar a jorn la lista de survelyence',
'watchlistedit-raw-done' => 'Voutra lista de survelyence at étâ betâ a jorn.',
@@ -3598,34 +3798,34 @@ Vos pouede asse-ben utilisar l’[[Special:Watchlist/edit|èditor normal]].',
'duplicate-defaultsort' => "'''Atencion :''' la cllâf de tri per dèfôt « $2 » ècllafe cela « $1 ».",
# Special:Version
-'version' => 'Vèrsion',
-'version-extensions' => 'Èxtensions enstalâs',
-'version-specialpages' => 'Pâges spèciâles',
-'version-parserhooks' => 'Grèfons du parsor',
-'version-variables' => 'Variâbles',
-'version-skins' => 'Habelyâjos',
-'version-other' => 'De totes sôrtes',
-'version-mediahandlers' => 'Maneyors de mèdia',
-'version-hooks' => 'Grèfons',
-'version-extension-functions' => 'Fonccions d’èxtension de dedens',
-'version-parser-extensiontags' => 'Balises d’èxtension du parsor',
-'version-parser-function-hooks' => 'Grèfons de les fonccions du parsor',
-'version-skin-extension-functions' => 'Fonccions d’èxtension de l’habelyâjo',
-'version-hook-name' => 'Nom du grèfon',
-'version-hook-subscribedby' => 'Soscrit per',
-'version-version' => '(Vèrsion $1)',
-'version-svn-revision' => '(v$2)',
-'version-license' => 'Licence',
-'version-poweredby-credits' => "Ceti vouiqui fonccione grâce a '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'ôtros',
-'version-license-info' => 'MediaWiki est una programeria abada ; vos la pouede tornar distribuar et / ou changiér d’aprés los tèrmos de la Licence publica g·ènèrala GNU coment publeyê per la Free Software Foundation ; seye la vèrsion 2 de la Licence, ou ben (a voutron chouèx) tota novèla vèrsion.
+'version' => 'Vèrsion',
+'version-extensions' => 'Èxtensions enstalâs',
+'version-specialpages' => 'Pâges spèciâles',
+'version-parserhooks' => 'Grèfons du parsor',
+'version-variables' => 'Variâbles',
+'version-antispam' => 'Prèvencion du spame',
+'version-skins' => 'Habelyâjos',
+'version-other' => 'De totes sôrtes',
+'version-mediahandlers' => 'Maneyors de mèdia',
+'version-hooks' => 'Grèfons',
+'version-extension-functions' => 'Fonccions d’èxtension de dedens',
+'version-parser-extensiontags' => 'Balises d’èxtension du parsor',
+'version-parser-function-hooks' => 'Grèfons de les fonccions du parsor',
+'version-hook-name' => 'Nom du grèfon',
+'version-hook-subscribedby' => 'Soscrit per',
+'version-version' => '(Vèrsion $1)',
+'version-svn-revision' => '(v$2)',
+'version-license' => 'Licence',
+'version-poweredby-credits' => "Ceti vouiqui fonccione grâce a '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'ôtros',
+'version-license-info' => 'MediaWiki est una programeria abada ; vos la pouede tornar distribuar et / ou changiér d’aprés los tèrmos de la Licence publica g·ènèrala GNU coment publeyê per la Free Software Foundation ; seye la vèrsion 2 de la Licence, ou ben (a voutron chouèx) tota novèla vèrsion.
MediaWiki est distribuâ dens l’èsperance que serat utila, mas SEN GINS DE GARANTIA ; sen mémo la garantia emplicita de COMÈRCIALISACION ou ben d’ADAPTACION A UN USÂJO PARTICULIÉR. Vêde la Licence publica g·ènèrala GNU por més de dètalys.
-Vos devriâd avêr reçu un [{{SERVER}}{{SCRIPTPATH}}/COPYING ègzemplèro de la Licence publica g·ènèrala GNU] avouéc ceti programo ; ôtrament, ècrîde a la « Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA » ou ben [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html liéséd-la en legne].',
-'version-software' => 'Programeries enstalâs',
-'version-software-product' => 'Marchandie',
-'version-software-version' => 'Vèrsion',
+Vos devriâd avêr reçu un [{{SERVER}}{{SCRIPTPATH}}/COPYING ègzemplèro de la Licence publica g·ènèrala GNU] avouéc ceti programo ; ôtrament, ècrîde a la « Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA » ou ben [//www.gnu.org/licenses/old-licenses/gpl-2.0.html liéséd-la en legne].',
+'version-software' => 'Programeries enstalâs',
+'version-software-product' => 'Marchandie',
+'version-software-version' => 'Vèrsion',
# Special:FilePath
'filepath' => 'Chemin d’accès du fichiér',
@@ -3635,22 +3835,22 @@ Vos devriâd avêr reçu un [{{SERVER}}{{SCRIPTPATH}}/COPYING ègzemplèro de la
Les émâges sont montrâs dens lor plêna rèsolucion, los ôtros fichiérs sont chargiês et dèmarrâs tot drêt avouéc lor programo associyê.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Rechèrche des fichiérs en doblo',
-'fileduplicatesearch-summary' => 'Rechèrche des fichiérs en doblo d’aprés lor mârca de chaplâjo.
-
-Buchiéd lo nom du fichiér sen lo prèfixo « {{ns:file}}: ».',
-'fileduplicatesearch-legend' => 'Rechèrche d’un doblo',
-'fileduplicatesearch-filename' => 'Nom du fichiér :',
-'fileduplicatesearch-submit' => 'Rechèrchiér',
-'fileduplicatesearch-info' => '$1 × $2 pixèls<br />Talye du fichiér : $3<br />Tipo MIME : $4',
-'fileduplicatesearch-result-1' => 'Lo fichiér « $1 » at gins de doblo pariér.',
-'fileduplicatesearch-result-n' => 'Lo fichiér « $1 » at $2 {{PLURAL:$2|doblo pariér|doblos pariérs}}.',
+'fileduplicatesearch' => 'Rechèrche des fichiérs en doblo',
+'fileduplicatesearch-summary' => 'Rechèrche des fichiérs en doblo d’aprés lor mârca de chaplâjo.',
+'fileduplicatesearch-legend' => 'Rechèrche d’un doblo',
+'fileduplicatesearch-filename' => 'Nom du fichiér :',
+'fileduplicatesearch-submit' => 'Rechèrchiér',
+'fileduplicatesearch-info' => '$1 × $2 pixèls<br />Talye du fichiér : $3<br />Tipo MIME : $4',
+'fileduplicatesearch-result-1' => 'Lo fichiér « $1 » at gins de doblo pariér.',
+'fileduplicatesearch-result-n' => 'Lo fichiér « $1 » at $2 {{PLURAL:$2|doblo pariér|doblos pariérs}}.',
+'fileduplicatesearch-noresults' => 'Nion fichiér apelâ « $1 » at étâ trovâ.',
# Special:SpecialPages
'specialpages' => 'Pâges spèciâles',
'specialpages-note' => '----
* Pâges spèciâles normales.
-* <strong class="mw-specialpagerestricted">Pâges spèciâles rètrentes.</strong>',
+* <span class="mw-specialpagerestricted">Pâges spèciâles rètrentes.</span>
+* <span class="mw-specialpagecached">Pâges spèciâles solament en cache (porriant étre dèpassâs).</span>',
'specialpages-group-maintenance' => 'Rapôrts de mantegnence',
'specialpages-group-other' => 'Ôtres pâges spèciâles',
'specialpages-group-login' => 'Branchement / encartâjo',
diff --git a/languages/messages/MessagesFrr.php b/languages/messages/MessagesFrr.php
index 35c81ac4..e0e59836 100644
--- a/languages/messages/MessagesFrr.php
+++ b/languages/messages/MessagesFrr.php
@@ -50,8 +50,8 @@ $messages = array(
'tog-oldsig' => 'Aktuel signatuur:',
'tog-fancysig' => 'Signatuur behoonle ås wikitäkst',
'tog-externaleditor' => 'Gewöönlik äksterne ediitor for färsjoonsunerschiise brüke (bloot for ekspärte, deer mönje spetsjäle önjstalinge aw di äine kompjuuter fornümen wårde
-[http://www.mediawiki.org/wiki/Manual:External_editors Mör informatsjoone.])',
-'tog-externaldiff' => 'Gewöönlik äkstern program for färsjoonsunerschiise brüke (bloot for ekspärte, deer mönje spetsjäle önjstalinge aw di äine kompjuuter fornümen wårde[http://www.mediawiki.org/wiki/Manual:External_editors Mör informatsjoone.])',
+[//www.mediawiki.org/wiki/Manual:External_editors Mör informatsjoone.])',
+'tog-externaldiff' => 'Gewöönlik äkstern program for färsjoonsunerschiise brüke (bloot for ekspärte, deer mönje spetsjäle önjstalinge aw di äine kompjuuter fornümen wårde[//www.mediawiki.org/wiki/Manual:External_editors Mör informatsjoone.])',
'tog-showjumplinks' => '"Schafte tu"-ferbininge aktiwiire',
'tog-uselivepreview' => 'Live-forbekiik ferwiinje (brükt JavaScript) (äksperimentäl)',
'tog-forceeditsummary' => 'Woorschoue, wan bai dåt spiikern jü tuhuupefooting breecht',
@@ -146,16 +146,7 @@ $messages = array(
'listingcontinuesabbrev' => '(fortseeting)',
'index-category' => 'Indisiirde side',
'noindex-category' => 'Ai indisiirde side',
-
-'mainpagetext' => "'''MediaWiki wörd ma erfolch instaliird.'''",
-'mainpagedocfooter' => 'Heelp tu jü benjüting än konfigurasjoon foon e Wiki-software fanst dü önj dåt [http://meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuch].
-
-
-== Startheelpe ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste der Konfigurationsvariablen]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
+'broken-file-category' => 'Sid ma önjstöögne ferwisinge',
'about' => 'Ouer',
'article' => 'Sid',
@@ -207,10 +198,10 @@ $messages = array(
'history' => 'Färsjoone',
'history_short' => 'Färsjoone/autoore',
'updatedmarker' => 'änred sunt man leest besäk',
-'info_short' => 'Informasjoon',
'printableversion' => 'Prantfärsjoon',
'permalink' => 'Permanänten link',
'print' => 'Prante',
+'view' => 'Lees',
'edit' => 'Beårbe',
'create' => 'Mååge',
'editthispage' => 'Sid beårbe',
@@ -218,6 +209,7 @@ $messages = array(
'delete' => 'Strike',
'deletethispage' => 'Jüdeer sid strike',
'undelete_short' => '{{PLURAL:$1|1 färsjoon|$1 färsjoone}} widermååge',
+'viewdeleted_short' => '$1 {{PLURAL:$1|iinj sträägen färsjoon|$1 sträägene färsjoone}} önjkiike',
'protect' => 'Sääkere',
'protect_change' => 'änre',
'protectthispage' => 'Sid önj ferbading hüülje',
@@ -305,6 +297,8 @@ Sii jü [[Special:Version|Färsjoonssid]]',
'toc' => 'Inhåltsfertiiknis',
'showtoc' => 'Wise',
'hidetoc' => 'Ferbärje',
+'collapsible-collapse' => 'Tuupdoble',
+'collapsible-expand' => 'Ütjenööderdoble',
'thisisdeleted' => '$1 önjkiike unti widermååge?',
'viewdeleted' => '$1 wise?',
'restorelink' => '$1 {{PLURAL:$1|sträägen Färsjoon|sträägene Färsjoone}}',
@@ -318,6 +312,8 @@ Sii jü [[Special:Version|Färsjoonssid]]',
'feed-atom' => 'Atom',
'feed-rss' => 'RSS',
'red-link-title' => '$1 (sid ai deer)',
+'sort-descending' => 'Sortiare faan boowen tu onern',
+'sort-ascending' => 'Sortiare faan onern tu boowen',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Sid',
@@ -399,13 +395,14 @@ Ouffrååch: $2',
'protectedinterface' => 'Jüdeer sid önjthålt takst for ju brükerouerfläche foon e software än as späred, am masbrük tu ferhanern.',
'editinginterface' => "'''Woorschauing:''' Jüdeer sid önjthålt foon jü MesiaWiki-software bënjüteden takst.
Änringe wirke jam aw jü brükerouerfläche üt.
-For ouerseetinge tånk deeram, jü önj di [http://translatewiki.net/wiki/Main_Page?setlang=frr Translatewiki], dåt MediaWiki lokalisiiringsprojekt, döörtufäären.",
+For ouerseetinge tånk deeram, jü önj di [//translatewiki.net/wiki/Main_Page?setlang=frr Translatewiki], dåt MediaWiki lokalisiiringsprojekt, döörtufäären.",
'sqlhidden' => 'SCL-ouffrååg ferstäägen',
'cascadeprotected' => 'Jüdeer sid as for beårbing spärd. Jü as önj {{PLURAL:$1|e füliende sid|da füliende side}}
önjbünen, {{PLURAL:$1|jü|da}} madels e kaskaadespäropsjoon önj febading hüüljen {{PLURAL:$1|as|san}}:
$2',
'namespaceprotected' => "Dü hääst niinj beruchtiging, jü sid önj di '''$1'''-noomerüm tu beårben.",
-'customcssjsprotected' => 'Dü bast ai beruchtiged, jüdeer sid tu beårben, deer jü tu da persöönlike önjstalinge foon en ouderen brüker hiirt.',
+'customcssprotected' => 'Dü mutst detheer CSS sidj ei bewerke, auer det hoker ööders hiart.',
+'customjsprotected' => 'Dü mutst detheer JavaScript sidj ei bewerke, auer det hoker ööders hiart.',
'ns-specialprotected' => 'Spetsjåålside koone ai beårbed wårde.',
'titleprotected' => 'En sid ma dideer noome koon ai önjläid wårde.
Jü späre wörd döör [[User:$1|$1]] ma grün "$2" inruchted.',
@@ -444,6 +441,7 @@ Ferjees ai, din [[Special:Preferences|{{SITENAME}}-önjstalinge]] önjtupååsen
'createaccount' => 'Brükerkonto inruchte',
'gotaccount' => "Dü hääst ål en brükerkonto? '''$1'''.",
'gotaccountlink' => 'Önjmälde',
+'userlogin-resetlink' => 'Heest dü din login dooten ferjiden?',
'createaccountmail' => 'ouer E-mail',
'createaccountreason' => 'Grün:',
'badretype' => 'Da biise pååsuurde stime ai oueriinj.',
@@ -455,12 +453,14 @@ Wees sü gödj en kiis en ouderen.',
Wees sü gödj än aktiwiir da än mäld de dan ma dan naien benjüternoome än dåt tuhiirend pååsuurd önj.',
'nocookieslogin' => '{{SITENAME}} benjütet cookies tu e önjmälding foon da benjütere. Dü heest Cookis deaktiwiird.
Wees sü gödj än aktiwiir da än fersäk dåt wider.',
+'nocookiesfornew' => 'Det brükerkonto as ei iinracht wurden, auer wi ei witj, huar a dooten faan kem.
+Üüb dan kompjuuter skel cookies aktiwiaret wees. Do rep detheer sidj noch ans nei ap.',
'noname' => 'Dü möist en gültigen brükernooem önjjeewe.',
'loginsuccesstitle' => 'Önjmälding erfolchrik',
'loginsuccess' => "'''Dü bast nü ås „$1“ bai {{SITENAME}} önjmälded.'''",
'nosuchuser' => 'Di brükernoome „$1“ bestoont ai.
Präiw jü schriwwise (grut-/latjschriwing beåchte) unti [[Special:UserLogin/signup|mäld de ås naie brüker önj]].',
-'nosuchusershort' => 'Deer as nåån brüker ma noome "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Deer as nåån brüker ma noome "$1".
Präiw din ruchtschriwing.',
'nouserspecified' => 'Dü schäät en brükernoome spesifisiire.',
'login-userblocked' => 'Dideer brüker as spärd. Niinj ferloof tu önjmälding.',
@@ -507,13 +507,14 @@ Fåls dåt benjüterkonto üt fersiinj önjläid wörd, koost dü jüdeer tising
'usernamehasherror' => 'Benjüternoome mötje niinj rütetiikne önjthüulje',
'login-throttled' => 'Dü heest tu oofding fersoocht, di önjtumälden.
Wees sü gödj än täif, bit dü wider ferseechst.',
+'login-abort-generic' => 'Din önjmälding wus ei erfolchrik - Oufbräägen',
'loginlanguagelabel' => 'Spräke: $1',
'suspicious-userlogout' => 'Dan Oufmäldönjfrååge wörd ferwaigred, deer ja fermouslik foon en defäkte browser unti en cache-proxy sånd wörd.',
# E-mail sending
'php-mail-error-unknown' => 'Ünbekäänd feeler mä det funktsjuun mail() faan PHP.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Pååsuurd änre',
'resetpass_announce' => 'Önjmälding ma di ouer E-mail tusånde kode. Am e önjmälding ouftusliten, möist dü en nai pååsuurd kiise.',
'resetpass_header' => 'Account pååsuurd änre',
@@ -531,6 +532,19 @@ Nü wårst dü önjmälded...',
Möölikerwise heest dü din pååsuurd ål ma erfolch änred heest unti en nai tämporäär pååsuurd beönjdräägen.',
'resetpass-temp-password' => 'Tidwise pååsuurd:',
+# Special:PasswordReset
+'passwordreset' => 'Paasuurd tubääg seete',
+'passwordreset-text' => 'Fal detheer formulaar ütj, an do woort di en e-mail tusjüürd mä henwiiser tu din brükerkonto-uunmeldang.',
+'passwordreset-legend' => 'Paasuurd tubääg seete',
+'passwordreset-disabled' => 'Dü koost din paasuurd aw jüdeer wiki ai tubääg seete',
+'passwordreset-pretext' => '{{PLURAL:$1||Du ian faan jo dooten oner iin}}',
+'passwordreset-username' => 'Brükernoome:',
+'passwordreset-domain' => 'Domain:',
+'passwordreset-email' => 'E-mail adres:',
+'passwordreset-emailtitle' => 'Brükerkonto aw {{SITENAME}}',
+'passwordreset-emailelement' => 'Brükernoome: $1
+Tidwis paasuurd: $2',
+
# Edit page toolbar
'bold_sample' => 'Fåten täkst',
'bold_tip' => 'Fåten täkst',
@@ -542,8 +556,6 @@ Möölikerwise heest dü din pååsuurd ål ma erfolch änred heest unti en nai
'extlink_tip' => 'Äkstärnen link (http:// beåchte)',
'headline_sample' => 'Schuchte 2 ouerschraft',
'headline_tip' => 'Schuchte 2 ouerschraft',
-'math_sample' => 'Formel heer önjfäige',
-'math_tip' => 'Matemaatisch formel (LaTex)',
'nowiki_sample' => 'Ünformatiirden täkst heer önjfäige',
'nowiki_tip' => 'Ünformatiirden täkst',
'image_tip' => 'Dååtäilink',
@@ -598,7 +610,7 @@ Dü koost dideere tiitel aw da ouder side [[Special:Search/{{PAGENAME}}|säke]],
'noarticletext-nopermission' => 'Jüdeer sid önjhålt uugenblaklik nuch nån täkst.
Dü koost dideere tiitel aw da oudre side [[Special:Search/{{PAGENAME}}|säke]],
unti<span class="plainlinks">önj da deertuhiirende [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} logböke säke] </span>.',
-'userpage-userdoesnotexist' => 'Dåt benjüterkonto "$1" as ai deer.
+'userpage-userdoesnotexist' => 'Dåt benjüterkonto "<nowiki>$1</nowiki>" as ai deer.
Wees sü gödj än präif, weer dü jüdeer sid wörklik mååge/beårbe wååt.',
'userpage-userdoesnotexist-view' => 'Benjüterkonto "$1" bestoont ai.',
'blocked-notice-logextract' => 'Dideer benjüter as tutids spärd.
@@ -735,30 +747,29 @@ Grün foon jü späre: ''$2''",
'rev-deleted-user-contribs' => '[Benjüternoome unti IP-adräs wächhååld - beårbing üt baidråge ferstäägen]',
'rev-deleted-text-permission' => "Judeer Färsjoon wörd '''straagen'''.
Näre önjgoowen tu di strikforgung ås uk en begrüning fant huum önj dåt [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} strik-logbök].",
-'rev-deleted-text-unhide' => "Jüdeer färsjoon wörd '''straagen'''.
+'rev-deleted-text-unhide' => "Jüdeer färsjoon as '''straagen''' wörden.
Ainkelthäide fant huum önj dåt [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} strik-logbök].
-Ås en administraator koost dü nuch [$1 jüdeer färsjoon bekiike], wan dü wider gunge mååst.",
-'rev-suppressed-text-unhide' => "Jüdeer färsjoon wörd '''unerdrükt'''.
+Dü koost nuch [$1 jüdeer färsjoon bekiike], wan dü wider gunge mååst.",
+'rev-suppressed-text-unhide' => "Jüdeer färsjoon as '''unerdrükt''' wörden.
Ainkelthäide fant huum önj dåt [{{fullurl:{{#special:Log}}/suppress|page={{FULLPAGENAMEE}}}} strik-logbök].
-Ås en administraator koost dü nuch [$1 jüdeer färsjoon bekiike], wan dü wider gunge mååst.",
-'rev-deleted-text-view' => "Jüdeer Färsjoon wörd '''straagen'''.
-Ås administraator koost dü da wider önjkiike.
-Näre önjgoowen tu di sleekforgung ås uk en begrüning fant huum önj dåt [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} strik-logbök].",
-'rev-suppressed-text-view' => "Jüdeer färsjoon wörd '''unerdruked'''.
-Administratoore koone da önjkiike; ainkelthäide stönje önj dåt [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} unerdrukings-logbök].",
+Dü koost nuch [$1 jüdeer färsjoon bekiike], wan dü wider gunge mååst.",
+'rev-deleted-text-view' => "Jüdeer Färsjoon as '''straagen''' wörden.
+Dü koost da wider önjkiike. Näre önjgoowen tu di sleekforgung ås uk en begrüning fant huum önj dåt [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} strik-logbök].",
+'rev-suppressed-text-view' => "Jüdeer färsjoon as '''unerdrükd''' wörden.
+Dü koost da önjkiike. Ainkelthäide stönje önj dåt [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} unerdrukings-logbök].",
'rev-deleted-no-diff' => "Dü koost jüdeer ferschääl ai bekiike, dan iinj foon da änringe wörd '''straagen'''. Näre önjgoowen tu di strikforgung ås uk en begrüning fant huum önj dåt [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} strik-logbök].",
'rev-suppressed-no-diff' => "Dü koost jüdeer ferschääl ai bekiike, dan iinj foon da änringe wörd '''straagen'''.",
-'rev-deleted-unhide-diff' => "Iinj foon da änringe doon jüdeer ferschääl wörd '''straagen'''.
+'rev-deleted-unhide-diff' => "Iinj foon da änringe doon jüdeer ferschääl as '''straagen''' wörden.
Ainkelthäide fant huum önj dåt [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} strik-logbök].
-Ås en administraator koost dü nuch [$1 jüdeer färsjoon bekiike], wan dü wider gunge mååst.",
-'rev-suppressed-unhide-diff' => "Iinj foon da färsjoone foon dåtdeer ferschääl wörd '''unerdruked'''.
+Dü koost nuch [$1 jüdeer färsjoon bekiike], wan dü wider gunge mååst.",
+'rev-suppressed-unhide-diff' => "Iinj foon da färsjoone foon dåtdeer ferschääl wörd '''unerdrükd'''.
Ainkelthäide fant huum önj dåt [{{fullurl:{{#special:Log}}/delete|page={{FULLPAGENAMEE}}}} unerdruk-logbök].
-Ås en administraator koost dü  nuch [$1 dåtdeer ferschääl bekiike], wan dü wider gunge mååst.",
+Dü koost nuch [$1 dåtdeer ferschääl bekiike], wan dü wider gunge mååst.",
'rev-deleted-diff-view' => "En Färsjoon foon dåtdeer färsjoonsferschääl wörd '''straagen'''.
-Ås administraator koost dü dåt färsjoonsferschääl siinj.
+Dü koost dåt färsjoonsferschääl siinj.
Näre önjgoowen fant huum önj dåt [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} strik-logbök].",
-'rev-suppressed-diff-view' => "Iinj foon da färsjoone foon dåtdeer färsjoonsferschääl wörd '''unerdruked'''.
-Administratoore koone dåtheer färsjoonsferschääl siinj; ainkelthäide stönje önj dåt [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} unerdrukings-logbök].",
+'rev-suppressed-diff-view' => "Iinj foon da färsjoone foon dåtdeer färsjoonsferschääl wörd '''unerdrükd'''.
+Dü koost dåtheer färsjoonsferschääl siinj. Ainkelthäide stönje önj dåt [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} unerdrukings-logbök].",
'rev-delundel' => 'wis/fersteeg',
'rev-showdeleted' => 'wise',
'revisiondelete' => 'Färsjoone strike/wider mååge',
@@ -927,7 +938,6 @@ Stal sääker, dåt jü färsjoonshistoori foon en sid histoorisch koräkt as.',
'prefsnologin' => 'Ai önjmälded',
'changepassword' => 'Pååsuurd änre',
'skin-preview' => 'Forlök',
-'prefs-math' => 'TeX',
'prefs-personal' => 'Brüker dooten',
'prefs-rc' => 'Leeste änringe',
'prefs-watchlist-days-max' => 'Ai lunger as 7 deege',
@@ -955,9 +965,11 @@ Stal sääker, dåt jü färsjoonshistoori foon en sid histoorisch koräkt as.',
'youremail' => 'E-mail:',
'username' => 'Brükernoome:',
'yourrealname' => 'Rocht nööm:',
-'yourlanguage' => 'Spräke: $1',
+'yourlanguage' => 'Spräke:',
'yournick' => 'Nai signatuur:',
'email' => 'E-mail',
+'prefs-help-email' => 'Dü säärst din e-mail-adres ei uundu, oober do könst dü uk nian mädialangen fu, wan dü ans din paaswurd ferjiden heest.',
+'prefs-help-email-others' => 'Mä ööder brükern könst dü uk auer hör an din brükersidj kontakt apnem. Diarför woort din e-mail-adres ei brükt.',
'prefs-signature' => 'Signatuur',
'prefs-advancedediting' => 'Ütwided möölikhäide',
'prefs-advancedrc' => 'Ütwided möölikhäide',
@@ -1129,7 +1141,7 @@ Det beskriiwang faan't [$2 beskriiwangssidj] woort oner uunwiset.",
'categories' => 'Kategoriin',
# Special:LinkSearch
-'linksearch' => 'Weblink-säkj',
+'linksearch' => "Sjük efter ferwisangen uun't näät",
'linksearch-ns' => 'Noomerüm:',
'linksearch-ok' => 'Säk',
'linksearch-line' => '$2 ferwiset üüb $1',
@@ -1148,14 +1160,12 @@ Det beskriiwang faan't [$2 beskriiwangssidj] woort oner uunwiset.",
'watchlist' => 'Eefterkiikliste',
'mywatchlist' => 'Eefterkiikliste',
'watchlistfor2' => 'Foon $1 $2',
-'addedwatch' => 'Tu eefterkiiksid tubaifäiged',
'addedwatchtext' => 'Jü sid „[[:$1]]“ wörd tu din [[Special:Watchlist|eefterkiiklist]] tubaifäiged.
Lääsere änringe bai jüdeer sid än jü deertuhiirende diskusjoonssid wårde deer listed än
önj e ouersicht foon da [[Special:RecentChanges|leeste änringe]] önj fåtschraft deerstald.
Wan dü jü sid wider foon din eefterkiikliste wächhååle mååst, klik aw jüdeer sid aw „{{int:Unwatch}}“.',
-'removedwatch' => 'Foon jü eefterlöksid wächhååld',
'removedwatchtext' => 'Jü sid „[[:$1]]“ wörd foon din [[Special:Watchlist|eefterkiiklist]] wächhååld.',
'watch' => 'Kiike eefter',
'watchthispage' => 'Side eefterkiike',
@@ -1174,7 +1184,7 @@ Wan dü jü sid wider foon din eefterkiikliste wächhååle mååst, klik aw jü
'confirmdeletetext' => 'Dü bast deerbai, en sid ma åle tuhiirende ålere färsjoone tuninte tu måågen. Bestääsie hål deertu, dåt dü de foon da konsekwänse bewust bast, än dåt dü önj oueriinjstiming ma da [[{{MediaWiki:Policy-url}}|ruchtliinjen]] hoonelst.',
'actioncomplete' => 'Aksjoon beånd',
'actionfailed' => 'Diar ging wat skiaf',
-'deletedtext' => '„<nowiki>$1</nowiki>“ wörd tunintemååged. In e $2 fanst dü en list foon da tuleest tunintemåågede side.',
+'deletedtext' => '„$1“ wörd tunintemååged. In e $2 fanst dü en list foon da tuleest tunintemåågede side.',
'deletedarticle' => 'heet "[[$1]]" tunintemååged',
'dellogpage' => 'Tunintemååg-Logbök',
'deletecomment' => 'Grün:',
@@ -1256,6 +1266,7 @@ Wan dü jü sid wider foon din eefterkiikliste wächhååle mååst, klik aw jü
# Block/unblock
'blockip' => 'IP-adräs/brüker späre',
'ipboptions' => '2 stüne:2 hours,1 däi:1 day,3 deege:3 days,1 wääg:1 week,2 wääge:2 weeks,1 moune:1 month,3 moune:3 months,6 moune:6 months,1 iir:1 year,suner iinje:infinite',
+'blocklist' => 'Spärd brükere',
'ipblocklist' => 'Spärd brükere',
'ipblocklist-legend' => 'Spärd brükere fine',
'expiringblock' => 'iinjet aw e $1 am e klook $2',
@@ -1269,7 +1280,7 @@ Wan dü jü sid wider foon din eefterkiikliste wächhååle mååst, klik aw jü
'reblock-logentry' => 'änerd jü spär for „[[$1]]“ for di tidrüm: $2 $3',
'blocklogtext' => 'Dåtdeer as dåt logbök ouer späringe än önjtspäringe foon brükere än IP-adräse.
Automatisch spärd IP-adräse wårde ai footed.
-Sii jü [[Special:IPBlockList|list foon da spärd IP-adräse än brükernoome]] for ål da aktive späre.',
+Sii jü [[Special:BlockList|list foon da spärd IP-adräse än brükernoome]] for ål da aktive späre.',
'unblocklogentry' => 'heet jü späre foon „$1“ aphääwen',
'block-log-flags-anononly' => 'bloot anonyme',
'block-log-flags-nocreate' => 'Måågen foon brükerkonte spärd',
@@ -1354,7 +1365,7 @@ Hål di '''naie''' tiitel uner '''muul''' önjdreege, deeruner jü ambenååming
'tooltip-ca-viewsource' => 'Jüdeer sid wårt uner ferbading hülen. Di kwältäkst koon önjkiiked wårde.',
'tooltip-ca-history' => 'Iire färsjoone foon jüdeer sid',
'tooltip-ca-protect' => 'Jüdeer sid schütse',
-'tooltip-ca-unprotect' => 'Sääkering aphääwe',
+'tooltip-ca-unprotect' => 'Seekerang feranere',
'tooltip-ca-delete' => 'Jüdeer sid tunintemååge',
'tooltip-ca-move' => 'Jüdeer sid ferschüwe',
'tooltip-ca-watch' => 'Jüdeer sid tu jü persöönlike eefterkiiksid baitufäige',
@@ -1403,11 +1414,10 @@ Hål di '''naie''' tiitel uner '''muul''' önjdreege, deeruner jü ambenååming
'nextdiff' => 'Tu di näist färsjoonsferschääl →',
# Media information
-'file-info-size' => '$1 × $2 pixele, dååtäigrutelse: $3, MIME-typ: $4',
-'file-nohires' => '<small>Niinj huuger apliising as deer.</small>',
-'svg-long-desc' => 'SVG-dåtäi, basisgrutelse: $1 × $2 pixel, dåtäigrutelse: $3',
-'show-big-image' => 'Färsjon önj huuger apliising',
-'show-big-image-thumb' => '<small>Grutelse foon jü forlök: $1 × $2 pixele</small>',
+'file-info-size' => '$1 × $2 pixele, dååtäigrutelse: $3, MIME-typ: $4',
+'file-nohires' => '<small>Niinj huuger apliising as deer.</small>',
+'svg-long-desc' => 'SVG-dåtäi, basisgrutelse: $1 × $2 pixel, dåtäigrutelse: $3',
+'show-big-image' => 'Färsjon önj huuger apliising',
# Bad image list
'bad_image_list' => 'Formååt:
@@ -1420,26 +1430,31 @@ Deeraw föliende sidelinke önj dåtseelwi ra definiire ütnååme, önj di kont
'metadata-help' => 'Jüdeer dåtäi önjthålt widere informasjoon, jü önj e räigel foon jü digitoolamera unti di ferwånd scanner ståme. Döör eefterdräägen beårbing foon jü originooldåtäi koone hu detaile feränret wörden weese.',
'metadata-expand' => 'Ãœtbriidede detaile wise',
'metadata-collapse' => 'Ãœtbriidede detaile fersteege',
-'metadata-fields' => 'Da füliende fälje foon da EXIF-metadååte önju dideere MediaWiki-systeemtäkst wårde aw bilbeschriwingsside wist; widere standardmääsi „inklapede“ detaile koone wised wårde.
+'metadata-fields' => 'Da füliende fälje foon da EXIF-metadååte, da önj dideere MediaWiki-systeemtäkst önjjääwen san, wårde aw bilbeschriwingsside ma inklapede metadååtetabäle wist. Widere wårde standardmääsi ai wised.
+
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Jüdeer dåtäi ma en äkstärn prugram beårbe',
-'edit-externally-help' => '(Sii da [http://www.mediawiki.org/wiki/Manual:External_editors Installationsanweisungen] for widere Informasjoon)',
+'edit-externally-help' => '(Sii da [//www.mediawiki.org/wiki/Manual:External_editors Installationsanweisungen] for widere Informasjoon)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Ã¥le',
-'imagelistall' => 'Ã¥le',
-'watchlistall2' => 'Ã¥le',
-'namespacesall' => 'Ã¥le',
-'monthsall' => 'Ã¥le',
-'limitall' => 'Ã¥le',
+'watchlistall2' => 'Ã¥le',
+'namespacesall' => 'Ã¥le',
+'monthsall' => 'Ã¥le',
+'limitall' => 'Ã¥le',
# Auto-summaries
'autosumm-blank' => 'Det sidj wurd leesagd.',
diff --git a/languages/messages/MessagesFur.php b/languages/messages/MessagesFur.php
index e1c233c1..d7aec76d 100644
--- a/languages/messages/MessagesFur.php
+++ b/languages/messages/MessagesFur.php
@@ -37,71 +37,71 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ReIndreçamentsDoplis' ),
+ 'Allmessages' => array( 'Messaçs' ),
+ 'Allpages' => array( 'DutisLisPagjinis' ),
+ 'Ancientpages' => array( 'PagjinisPluiVieris' ),
+ 'Block' => array( 'BlocheIP' ),
+ 'Booksources' => array( 'RicercjeISBN' ),
'BrokenRedirects' => array( 'ReIndreçamentsSbaliâts' ),
- 'Disambiguations' => array( 'Omonimiis' ),
- 'Userlogin' => array( 'Jentre', 'Login' ),
- 'Userlogout' => array( 'Jes', 'Logout' ),
+ 'Categories' => array( 'Categoriis' ),
+ 'ChangePassword' => array( 'ReimpuestePerauleClâf' ),
+ 'Confirmemail' => array( 'ConfermePuesteEletroniche' ),
+ 'Contributions' => array( 'Contribûts', 'ContribûtsUtent' ),
'CreateAccount' => array( 'CreeIdentitât' ),
- 'Preferences' => array( 'Preferencis' ),
- 'Watchlist' => array( 'TignudisDiVoli' ),
- 'Recentchanges' => array( 'UltinsCambiaments' ),
- 'Upload' => array( 'Cjame' ),
+ 'Deadendpages' => array( 'PagjinisCenceJessude' ),
+ 'Disambiguations' => array( 'Omonimiis' ),
+ 'DoubleRedirects' => array( 'ReIndreçamentsDoplis' ),
+ 'Emailuser' => array( 'MandeEmail' ),
+ 'Export' => array( 'Espuarte' ),
+ 'Import' => array( 'Impuarte' ),
+ 'BlockList' => array( 'IPBlocâts' ),
+ 'Listadmins' => array( 'ListeAministradôrs' ),
+ 'Listbots' => array( 'ListeBots' ),
'Listfiles' => array( 'Figuris' ),
- 'Newimages' => array( 'GnovisFiguris' ),
+ 'Listredirects' => array( 'ListeReIndreçaments' ),
'Listusers' => array( 'Utents', 'ListeUtents' ),
- 'Statistics' => array( 'Statistichis' ),
- 'Randompage' => array( 'PagjineCasuâl' ),
+ 'Lockdb' => array( 'BlocheDB' ),
+ 'Log' => array( 'Regjistri', 'Regjistris' ),
'Lonelypages' => array( 'PagjinisSolitariis' ),
- 'Uncategorizedpages' => array( 'PagjinisCenceCategorie' ),
- 'Uncategorizedcategories' => array( 'CategoriisCenceCategorie' ),
- 'Uncategorizedimages' => array( 'FigurisCenceCategorie' ),
- 'Uncategorizedtemplates' => array( 'ModeiCenceCategorie' ),
- 'Unusedcategories' => array( 'CategoriisNoDopradis' ),
- 'Unusedimages' => array( 'FigurisNoDopradis' ),
- 'Wantedcategories' => array( 'CategoriisDesideradis' ),
- 'Shortpages' => array( 'PagjinisPluiCurtis' ),
'Longpages' => array( 'PagjinisPluiLungjis' ),
+ 'MIMEsearch' => array( 'RicercjeMIME' ),
+ 'Movepage' => array( 'Môf', 'CambieNon' ),
+ 'Mycontributions' => array( 'MieiContribûts' ),
+ 'Mypage' => array( 'MêPagjineUtent' ),
+ 'Mytalk' => array( 'MêsDiscussions' ),
+ 'Newimages' => array( 'GnovisFiguris' ),
'Newpages' => array( 'GnovisPagjinis' ),
- 'Ancientpages' => array( 'PagjinisPluiVieris' ),
- 'Deadendpages' => array( 'PagjinisCenceJessude' ),
+ 'Popularpages' => array( 'PagjinisPopolârs' ),
+ 'Preferences' => array( 'Preferencis' ),
+ 'Prefixindex' => array( 'Prefìs' ),
'Protectedpages' => array( 'PagjinisProtezudis' ),
'Protectedtitles' => array( 'TituiProtezûts' ),
- 'Allpages' => array( 'DutisLisPagjinis' ),
- 'Prefixindex' => array( 'Prefìs' ),
- 'Ipblocklist' => array( 'IPBlocâts' ),
- 'Specialpages' => array( 'PagjinisSpeciâls' ),
- 'Contributions' => array( 'Contribûts', 'ContribûtsUtent' ),
- 'Emailuser' => array( 'MandeEmail' ),
- 'Confirmemail' => array( 'ConfermePuesteEletroniche' ),
- 'Whatlinkshere' => array( 'Leams' ),
+ 'Randompage' => array( 'PagjineCasuâl' ),
+ 'Randomredirect' => array( 'ReIndreçamentCasuâl' ),
+ 'Recentchanges' => array( 'UltinsCambiaments' ),
'Recentchangeslinked' => array( 'CambiamentsLeâts' ),
- 'Movepage' => array( 'Môf', 'CambieNon' ),
- 'Booksources' => array( 'RicercjeISBN' ),
- 'Categories' => array( 'Categoriis' ),
- 'Export' => array( 'Espuarte' ),
- 'Allmessages' => array( 'Messaçs' ),
- 'Log' => array( 'Regjistri', 'Regjistris' ),
- 'Blockip' => array( 'BlocheIP' ),
+ 'Revisiondelete' => array( 'ScanceleRevision' ),
+ 'Search' => array( 'Ricercje', 'Cîr' ),
+ 'Shortpages' => array( 'PagjinisPluiCurtis' ),
+ 'Specialpages' => array( 'PagjinisSpeciâls' ),
+ 'Statistics' => array( 'Statistichis' ),
+ 'Uncategorizedcategories' => array( 'CategoriisCenceCategorie' ),
+ 'Uncategorizedimages' => array( 'FigurisCenceCategorie' ),
+ 'Uncategorizedpages' => array( 'PagjinisCenceCategorie' ),
+ 'Uncategorizedtemplates' => array( 'ModeiCenceCategorie' ),
'Undelete' => array( 'Ripristine' ),
- 'Import' => array( 'Impuarte' ),
- 'Lockdb' => array( 'BlocheDB' ),
'Unlockdb' => array( 'SblocheDB' ),
- 'Userrights' => array( 'PermèsUtents' ),
- 'MIMEsearch' => array( 'RicercjeMIME' ),
- 'Unwatchedpages' => array( 'PagjinisNoTignudisDiVoli' ),
- 'Listredirects' => array( 'ListeReIndreçaments' ),
- 'Revisiondelete' => array( 'ScanceleRevision' ),
+ 'Unusedcategories' => array( 'CategoriisNoDopradis' ),
+ 'Unusedimages' => array( 'FigurisNoDopradis' ),
'Unusedtemplates' => array( 'ModeiNoDoprâts' ),
- 'Randomredirect' => array( 'ReIndreçamentCasuâl' ),
- 'Mypage' => array( 'MêPagjineUtent' ),
- 'Mytalk' => array( 'MêsDiscussions' ),
- 'Mycontributions' => array( 'MieiContribûts' ),
- 'Listadmins' => array( 'ListeAministradôrs' ),
- 'Listbots' => array( 'ListeBots' ),
- 'Popularpages' => array( 'PagjinisPopolârs' ),
- 'Search' => array( 'Ricercje', 'Cîr' ),
- 'Resetpass' => array( 'ReimpuestePerauleClâf' ),
+ 'Unwatchedpages' => array( 'PagjinisNoTignudisDiVoli' ),
+ 'Upload' => array( 'Cjame' ),
+ 'Userlogin' => array( 'Jentre', 'Login' ),
+ 'Userlogout' => array( 'Jes', 'Logout' ),
+ 'Userrights' => array( 'PermèsUtents' ),
+ 'Wantedcategories' => array( 'CategoriisDesideradis' ),
+ 'Watchlist' => array( 'TignudisDiVoli' ),
+ 'Whatlinkshere' => array( 'Leams' ),
'Withoutinterwiki' => array( 'CenceInterwiki' ),
);
@@ -140,7 +140,7 @@ $messages = array(
'tog-enotifrevealaddr' => 'Distapone fûr il gno recapit email tai messaçs di notifiche',
'tog-shownumberswatching' => 'Mostre il numar di utents che a stan tignint di voli',
'tog-fancysig' => 'Interprete lis firmis come test wiki (cence un leam automatic)',
-'tog-externaleditor' => 'Dopre un editôr esterni come opzion predeterminade (dome par utents esperts, a coventin impuestazions specifichis, [http://www.mediawiki.org/wiki/Manual:External_editors cjale culì par altris informazions.])',
+'tog-externaleditor' => 'Dopre un editôr esterni come opzion predeterminade (dome par utents esperts, a coventin impuestazions specifichis, [//www.mediawiki.org/wiki/Manual:External_editors cjale culì par altris informazions.])',
'tog-externaldiff' => 'Dopre editôr difarencis esterni come opzion predeterminade',
'tog-watchlisthideown' => 'Plate i miei cambiaments inte liste des pagjinis tignudis di voli',
'tog-ccmeonemails' => 'Mandimi une copie dai messaçs che o mandi ai altris utents',
@@ -222,8 +222,6 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'noindex-category' => 'Pagjinis no indicizadis',
-'mainpagetext' => "'''MediaWiki e je stade instalade cun sucès.'''",
-
'about' => 'Informazions',
'article' => 'Vôs',
'newwindow' => '(al vierç un gnûf barcon)',
@@ -272,10 +270,10 @@ $messages = array(
'history' => 'Storic de pagjine',
'history_short' => 'Storic',
'updatedmarker' => 'inzornât de mê ultime visite',
-'info_short' => 'Informazions',
'printableversion' => 'Version stampabil',
'permalink' => 'Leam permanent',
'print' => 'Stampe',
+'view' => 'Viodi',
'edit' => 'Cambie',
'create' => 'Cree',
'editthispage' => 'Cambie cheste pagjine',
@@ -283,6 +281,7 @@ $messages = array(
'delete' => 'Elimine',
'deletethispage' => 'Elimine cheste pagjine',
'undelete_short' => 'Recupere {{PLURAL:$1|modifiche eliminade|$1 modifichis eliminadis}}',
+'viewdeleted_short' => 'Viôt {{PLURAL:$1|une modifiche eliminade|$1 modifichis eliminadis}}',
'protect' => 'Protêç',
'protect_change' => 'cambie',
'protectthispage' => 'Protêç cheste pagjine',
@@ -355,6 +354,8 @@ $messages = array(
'toc' => 'Tabele dai contignûts',
'showtoc' => 'mostre',
'hidetoc' => 'plate',
+'collapsible-collapse' => 'Strenç',
+'collapsible-expand' => 'Slargje',
'thisisdeleted' => 'Vuelistu cjalâ o ripristinâ $1?',
'viewdeleted' => 'Vuelistu viodi $1?',
'restorelink' => '{{PLURAL:$1|une modifiche eliminade|$1 modifichis eliminadis}}',
@@ -432,6 +433,7 @@ No stâ dismenteâti di gambiâ lis [[Special:Preferences|preferencis di {{SITEN
'createaccount' => 'Cree une gnove identitât',
'gotaccount' => "Âstu za une identitât? '''$1'''.",
'gotaccountlink' => 'Jentre',
+'userlogin-resetlink' => 'Dismenteât i detais par jentrâ?',
'createaccountmail' => 'par pueste eletroniche',
'createaccountreason' => 'Reson:',
'badretype' => 'Lis peraulis clâfs inseridis no son compagnis.',
@@ -444,7 +446,7 @@ No stâ dismenteâti di gambiâ lis [[Special:Preferences|preferencis di {{SITEN
'loginsuccesstitle' => 'Jentrât cun sucès',
'loginsuccess' => 'Cumò tu sês jentrât te {{SITENAME}} sicu "$1".',
'nosuchuser' => 'Nissun utent regjistrât cul non "$1". Controle il non inserît o [[Special:UserLogin/signup|cree tu une gnove identitât]].',
-'nosuchusershort' => 'Nol esist nissun utent cul non "<nowiki>$1</nowiki>". Controle di no vê sbaliât di scrivi.',
+'nosuchusershort' => 'Nol esist nissun utent cul non "$1". Controle di no vê sbaliât di scrivi.',
'nouserspecified' => 'Tu scugnis specificâ un non utent.',
'wrongpassword' => 'La peraule clâf zontade no je juste. Torne par plasê a provâ.',
'wrongpasswordempty' => 'La peraule clâf inseride e je vueide. Torne a provâ.',
@@ -471,7 +473,7 @@ Prime di ricevi cualsisei altri messaç di pueste, tu scugnis seguî lis istruzi
'createaccount-title' => 'Creazion di une identitât par {{SITENAME}}',
'loginlanguagelabel' => 'Lenghe: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Gambie peraule clâf',
'resetpass_header' => 'Cambie peraule clâf de identitât',
'oldpassword' => 'Vecje peraule clâf',
@@ -479,6 +481,9 @@ Prime di ricevi cualsisei altri messaç di pueste, tu scugnis seguî lis istruzi
'retypenew' => 'Torne a scrivi chê gnove',
'resetpass-submit-cancel' => 'Scancele',
+# Special:PasswordReset
+'passwordreset-username' => 'Non utent:',
+
# Edit page toolbar
'bold_sample' => 'Test in gruessut',
'bold_tip' => 'Test in gruessut',
@@ -490,8 +495,6 @@ Prime di ricevi cualsisei altri messaç di pueste, tu scugnis seguî lis istruzi
'extlink_tip' => 'Leam esterni (visiti dal prefìs http://)',
'headline_sample' => 'Test dal titul',
'headline_tip' => 'Titul di nivel 2',
-'math_sample' => 'Inserìs la formule culì',
-'math_tip' => 'Formule matematiche (LaTeX)',
'nowiki_sample' => 'Inserìs test no formatât culì',
'nowiki_tip' => 'Ignore la formatazion wiki',
'image_sample' => 'Esempli.jpg',
@@ -549,7 +552,7 @@ Tu puedis [[Special:Search/{{PAGENAME}}|cirî chest titul]] in altris pagjinis o
o ben [{{fullurl:{{FULLPAGENAME}}|action=edit}} cambiâ cheste pagjine]</span>.',
'noarticletext-nopermission' => 'Par cumò nol è nuie in cheste pagjine.
Tu puedis [[Special:Search/{{PAGENAME}}|cirî chest titul]] in altris pagjinis o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cirî i regjistris leâts].',
-'userpage-userdoesnotexist' => 'La identitât "$1" no je di un utent regjistrât. Controle che tu vuelis pardabon creâ o modificâ cheste pagjine.',
+'userpage-userdoesnotexist' => 'La identitât "<nowiki>$1</nowiki>" no je di un utent regjistrât. Controle che tu vuelis pardabon creâ o modificâ cheste pagjine.',
'clearyourcache' => "'''Ocjo: dopo vê salvât, tu podaressis scugnî netâ la cache dal to sgarfadôr par viodi i cambiaments.''' Par '''Mozilla / Firefox / Safari''': frache ''Torne a cjamâ'' tignint jù ancje il tast des maiusculis, o se no frache ''Ctrl-F5'' o ''Ctrl-R'' (''Command-R'' su Mac); par '''Konqueror''': frache ''Reload'' o il tast ''F5''; par '''Opera''' al pues jessi necessari disvuedâ dal dut la cache doprant il menù ''Tools → Preferencis''; par '''Internet Explorer:''' ten fracât il tast ''Ctrl'' cuant che tu cjalcjis su ''Aggiorna'' o frache ''Ctrl-F5''.",
'updated' => '(Inzornât)',
'note' => "'''Note:'''",
@@ -730,7 +733,6 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
'changepassword' => 'Gambie peraule clâf',
'prefs-skin' => 'Mascare',
'skin-preview' => 'Anteprime',
-'prefs-math' => 'Matematiche',
'datedefault' => 'Nissune preference',
'prefs-datetime' => 'Date e ore',
'prefs-personal' => 'Dâts utents',
@@ -751,8 +753,6 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
'columns' => 'Colonis:',
'searchresultshead' => 'Ricercje',
'resultsperpage' => 'Risultâts par pagjine',
-'contextlines' => 'Riis par risultât',
-'contextchars' => 'Numar di caratars par capî il contest:',
'stub-threshold' => 'Valôr minim pe formatazion dai <a href="#" class="stub">leams aboç</a> (bytes):',
'recentchangesdays' => 'Numar di zornadis di mostrâ tai ultins cambiaments:',
'recentchangesdays-max' => '(massim $1 {{PLURAL:$1|zornade|zornadis}})',
@@ -760,7 +760,7 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
'savedprefs' => 'Lis preferencis a son stadis salvadis',
'timezonelegend' => 'Fûs orari:',
'localtime' => 'Ore locâl:',
-'timezoneuseserverdefault' => 'Dopre la ore dal servidôr',
+'timezoneuseserverdefault' => 'Dopre la ore dal servidôr ($1)',
'timezoneuseoffset' => 'Altri (inserìs la difarence)',
'timezoneoffset' => 'Difarence¹:',
'servertime' => 'Ore dal servidôr:',
@@ -800,7 +800,9 @@ Leiende: (cur) = difarencis cun la version atuâl, (prec) = difarencis cun la ve
'prefs-help-gender' => 'Opzionâl: doprât intal software par indreçâsi ai utents cul gjenar just. Cheste informazion e sarà publiche.',
'email' => 'Pueste eletroniche',
'prefs-help-realname' => '* Non vêr (opzionâl): se tu sielzis di inserîlu al vignarà doprât par dâti un ricognossiment dal tô lavôr.',
-'prefs-help-email' => 'La direzion di pueste eletroniche e je opzionâl, ma nus permet di mandâti une gnove peraule clâf se tu ti la sês dismenteade. Cun di plui, permet a chei altris di contatâti vie la tô pagjine utent o di discussion cence scugnî mostrâ a ducj la tô identitât.',
+'prefs-help-email' => 'La direzion di pueste eletroniche e je opzionâl, ma nus permet di mandâti une gnove peraule clâf se tu ti la dismenteis.',
+'prefs-help-email-others' => 'Tu puedis ancje permeti a chei altris di contatâti par pueste eletroniche par mieç di un leam te tô pagjine utent o di discussion.
+La tô direzion di pueste no ven mostrade cuant che i utents ti contatin.',
'prefs-help-email-required' => 'E covente une direzion di pueste eletroniche.',
'prefs-info' => 'Informazions di base',
'prefs-signature' => 'Firme',
@@ -1161,13 +1163,11 @@ Cjale ancje lis [[Special:WantedCategories|categoriis desideradis]].',
'nowatchlist' => 'Nissun element al è tignût di voli.',
'watchnologin' => 'No tu sês jentrât',
'watchnologintext' => "Tu 'nd âs di [[Special:UserLogin|jentrâ]] par modificâ la liste des pagjinis tignudis di voli.",
-'addedwatch' => 'Zontât aes pagjinis tignudis di voli',
'addedwatchtext' => "La pagjine \"<nowiki>\$1</nowiki>\" e je stade zontade ae [[Special:Watchlist|liste di chês tignudis di voli]].
Tal futûr i cambiaments a cheste pagjine e ae pagjine di discussion relative a saran segnalâts ca,
e la pagjine e sarà '''gruessute''' te [[Special:RecentChanges|liste dai ultins cambiaments]] cussì che tu puedis notâle daurman.
<p>Se tu vuelis gjavâle de liste pi indevant, frache su \"No stâ tignî di voli\" te sbare in alt.",
-'removedwatch' => 'Gjavade de liste',
'removedwatchtext' => 'La pagjine "[[:$1]]" e je stade gjavade de [[Special:Watchlist|liste di chês tignudis di voli]].',
'watch' => 'Ten di voli',
'watchthispage' => 'Ten di voli cheste pagjine',
@@ -1208,7 +1208,7 @@ e la pagjine e sarà '''gruessute''' te [[Special:RecentChanges|liste dai ultins
Par plasê, da la conferme che tu vuelis fâlu, che tu capissis lis conseguencis e che tu lu stâs fasint tal rispiet de [[{{MediaWiki:Policy-url}}|politiche dal progjet]].',
'actioncomplete' => 'Azion completade',
'actionfailed' => 'Azion falide',
-'deletedtext' => '"<nowiki>$1</nowiki>" al è stât eliminât.
+'deletedtext' => '"$1" al è stât eliminât.
Cjale $2 par une liste des ultimis eliminazions.',
'deletedarticle' => 'eliminât "[[$1]]"',
'dellogpage' => 'Regjistri des eliminazions',
@@ -1232,7 +1232,7 @@ Cjale $2 par une liste des ultimis eliminazions.',
'protectexpiry' => 'Scjadence:',
'protect_expiry_invalid' => 'Scjadence no valide.',
'protect_expiry_old' => 'La scjadence e je za passade.',
-'protect-text' => "Ca tu puedis viodi e cambiâ il nivel di protezion pe pagjine '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Ca tu puedis viodi e cambiâ il nivel di protezion pe pagjine '''$1'''.",
'protect-locked-access' => "No tu âs i permès che a coventis par cambiâ i nivei di protezion de pagjine.
Lis impuestazions atuâls pe pagjine a son '''$1''':",
'protect-cascadeon' => 'Cheste pagjine e je blocade par cumò parcè che e je includude {{PLURAL:$1|inte pagjine|intes pagjinis}} culì sot, dulà che e je ative la protezion ricorsive.
@@ -1318,12 +1318,10 @@ Tu puedis cambiâ il nivel di protezion di cheste pagjine, ma chest nol varà ef
'blockip' => 'Bloche utent',
'blockip-title' => "Bloche l'utent",
'blockip-legend' => "Bloche l'utent",
-'ipaddress' => 'Direzion IP:',
'ipadressorusername' => 'Direzion IP o non utent:',
'ipbexpiry' => 'Scjadence dal bloc:',
'ipbreason' => 'Reson dal bloc:',
'ipbreasonotherlist' => 'Altri motîf',
-'ipbanononly' => 'Bloche dome i utents anonims',
'ipbsubmit' => 'Bloche chest utent',
'ipboptions' => '2 oris:2 hours,1 zornade:1 day,3 zornadis:3 days,1 setemane:1 week,2 setemanis:2 weeks,1 mês:1 month,3 mês:3 months,6 mês:6 months,1 an:1 year,infinît:infinite',
'badipaddress' => 'La direzion IP no je valide',
@@ -1398,7 +1396,7 @@ Sielç par plasê un altri non.',
'allmessagesdefault' => 'Test predeterminât',
'allmessagescurrent' => 'Test curint',
'allmessagestext' => 'Cheste e je une liste dai messaçs di sisteme disponibii tal non dal spazi MediaWiki.
-Par plasê va su [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] se tu vuelis contribuî ae traduzion gjeneriche di MediaWiki.',
+Par plasê va su [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] se tu vuelis contribuî ae traduzion gjeneriche di MediaWiki.',
'allmessages-filter-all' => 'Ducj',
'allmessages-language' => 'Lenghe:',
'allmessages-filter-submit' => 'Va',
@@ -1504,27 +1502,11 @@ Par plasê va su [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisat
'creditspage' => 'Pagjine dai ricognossiments',
'nocredits' => 'Nissune informazion sui ricognossiments disponibil par cheste pagjine.',
-# Info page
-'infosubtitle' => 'Informazions pe pagjine',
-'numedits' => 'Numar di cambiaments (vôs): $1',
-'numtalkedits' => 'Numar di cambiaments (pagjine di discussion): $1',
-'numwatchers' => 'Numar di chei che e àn cjalât: $1',
-'numauthors' => 'Numar di autôrs diviers (vôs): $1',
-'numtalkauthors' => 'Numar di autôrs diviers (pagjine di discussion): $1',
-
# Skin names
'skinname-standard' => 'Classiche',
'skinname-nostalgia' => 'Nostalgjie',
'skinname-modern' => 'Moderne',
-# Math options
-'mw_math_png' => 'Torne simpri PNG',
-'mw_math_simple' => 'HTML se une vore sempliç, se no PNG',
-'mw_math_html' => 'HTML se pussibil se no PNG',
-'mw_math_source' => 'Lassile come TeX (par sgarfadôrs testuâi)',
-'mw_math_modern' => 'Racomandât pai sgarfadôrs testuâi',
-'mw_math_mathml' => 'MathML se pussibil (sperimentâl)',
-
# Patrol log
'patrol-log-line' => 'al à segnât $1 di $2 come verificade $3',
'patrol-log-auto' => '(in automatic)',
@@ -1535,14 +1517,13 @@ Par plasê va su [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisat
'nextdiff' => 'Prossime difarence →',
# Media information
-'thumbsize' => 'Dimension miniature:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagjine|pagjinis}}',
-'file-info' => 'Dimensions: $1, gjenar MIME: $2',
-'file-info-size' => '$1 × $2 pixel, dimensions: $3, gjenar MIME: $4',
-'file-nohires' => '<small>No son disponibilis versions cun risoluzion plui alte.</small>',
-'svg-long-desc' => 'file tal formât SVG, dimensions nominâls $1 × $2 pixels, dimensions dal file: $3',
-'show-big-image' => 'Version a risoluzion plene',
-'show-big-image-thumb' => '<small>Dimensions di cheste anteprime: $1 × $2 pixels</small>',
+'thumbsize' => 'Dimension miniature:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagjine|pagjinis}}',
+'file-info' => 'Dimensions: $1, gjenar MIME: $2',
+'file-info-size' => '$1 × $2 pixel, dimensions: $3, gjenar MIME: $4',
+'file-nohires' => '<small>No son disponibilis versions cun risoluzion plui alte.</small>',
+'svg-long-desc' => 'file tal formât SVG, dimensions nominâls $1 × $2 pixels, dimensions dal file: $3',
+'show-big-image' => 'Version a risoluzion plene',
# Special:NewFiles
'newimages' => 'Galarie dai gnûfs files',
@@ -1572,7 +1553,13 @@ Se il file al è stât cambiât rispiet al so stât origjinâl, cualchi informaz
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Largjece',
@@ -1601,14 +1588,12 @@ Se il file al è stât cambiât rispiet al so stât origjinâl, cualchi informaz
# External editor support
'edit-externally' => 'Modifiche chest file cuntune aplicazion esterne',
-'edit-externally-help' => '(Cjale lis [http://www.mediawiki.org/wiki/Manual:External_editors istruzions] par vê altris informazions)',
+'edit-externally-help' => '(Cjale lis [//www.mediawiki.org/wiki/Manual:External_editors istruzions] par vê altris informazions)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ducj',
-'imagelistall' => 'ducj',
-'watchlistall2' => 'dutis',
-'namespacesall' => 'ducj',
-'monthsall' => 'ducj',
+'watchlistall2' => 'dutis',
+'namespacesall' => 'ducj',
+'monthsall' => 'ducj',
# E-mail address confirmation
'confirmemail' => 'Conferme direzione di pueste',
diff --git a/languages/messages/MessagesFy.php b/languages/messages/MessagesFy.php
index cf1b7c20..d1287041 100644
--- a/languages/messages/MessagesFy.php
+++ b/languages/messages/MessagesFy.php
@@ -62,79 +62,79 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Dûbele trochferwizings', 'Dûbeletrochferwizings' ),
+ 'Allmessages' => array( 'Alle wikiberjochten' ),
+ 'Allpages' => array( 'Alle titels', 'Alle siden' ),
+ 'Ancientpages' => array( 'Alde siden', 'Âlde siden', 'Siden dy\'t lang net feroare binne' ),
+ 'Block' => array( 'Slút brûker út', 'Slút meidogger út' ),
+ 'Booksources' => array( 'Boekynformaasje' ),
'BrokenRedirects' => array( 'Misse trochferwizings', 'Missetrochferwizings' ),
- 'Disambiguations' => array( 'Betsjuttingssiden', 'Trochferwizings' ),
- 'Userlogin' => array( 'Oanmelde', 'Oanmeld' ),
- 'Userlogout' => array( 'Ofmelde', 'Ofmeld', 'Ôfmelde', 'Ôfmeld' ),
+ 'Categories' => array( 'Kategoryen', 'Rubriken' ),
+ 'Confirmemail' => array( 'Befêstigjen netpostadres' ),
+ 'Contributions' => array( 'Meidogger-bydragen', 'Meidogger bydragen', 'Bydragen', 'Brûker bydragen' ),
'CreateAccount' => array( 'Nije ynstellings oanmeitsje', 'Nijeynstellingsoanmeitsje' ),
- 'Preferences' => array( 'Ynstellings', 'Ynsteld' ),
- 'Watchlist' => array( 'Folchlist', 'Jo Folchlist' ),
- 'Recentchanges' => array( 'Koartlyn feroare', 'Koarts feroare' ),
- 'Upload' => array( 'Bied triem oan', 'Oanbied', 'Bied bestân oan' ),
+ 'Deadendpages' => array( 'Siden sûnder keppelings', 'Siden sûnder ferwizings', 'Siden sûnder links' ),
+ 'Disambiguations' => array( 'Betsjuttingssiden', 'Trochferwizings' ),
+ 'DoubleRedirects' => array( 'Dûbele trochferwizings', 'Dûbeletrochferwizings' ),
+ 'Emailuser' => array( 'Skriuw meidogger', 'Skriuw dizze brûker', 'Skriuw dizze meidogger' ),
+ 'Export' => array( 'Eksportearje' ),
+ 'Fewestrevisions' => array( 'Siden mei de minste bewurkings', 'Siden mei de minste ferzjes', 'Siden mei de minste wizigings' ),
+ 'Filepath' => array( 'Triempad' ),
+ 'Import' => array( 'Ymport' ),
+ 'BlockList' => array( 'List fan útsletten Ynternet-adressen en brûkersnammen', 'List fan útsletten ynternet-adressen en meidochnammen', 'Útslette brûkers', 'Utslette brûkers', 'Útsletten meidoggers', 'Utsletten meidoggers' ),
+ 'Listadmins' => array( 'Meidoggerlist Behearders' ),
+ 'Listbots' => array( 'Meidoggerlist Bots' ),
'Listfiles' => array( 'Ofbyld list', 'Ofbyldlist' ),
- 'Newimages' => array( 'Nije ôfbylden', 'Nije ôfbyldings', 'Nije ôfbyldingen', 'List mei nije ôfbylden', 'Nije Ofbylden' ),
+ 'Listredirects' => array( 'List fan trochferwizings' ),
'Listusers' => array( 'Meidoggerlist', 'Brûkerlist' ),
- 'Statistics' => array( 'Statistyk' ),
- 'Randompage' => array( 'Samar in side' ),
+ 'Lockdb' => array( 'Meitsje de database \'Net-skriuwe\'', 'Meitsje de databank \'Net-skriuwe\'' ),
+ 'Log' => array( 'Loch', 'Logboek', 'Logboeken', 'Lochs' ),
'Lonelypages' => array( 'Lossteande siden' ),
- 'Uncategorizedpages' => array( 'Siden sûnder rubryk', 'Siden sûnder kategory', 'Net-kategorisearre siden' ),
- 'Uncategorizedcategories' => array( 'Kategoryen sûnder kategory', 'Rubriken sûnder rubryk', 'Net-kategorisearre kategoryen' ),
- 'Uncategorizedimages' => array( 'Net-kategorisearre ôfbyldings', 'Ofbylden sûnder kategory', 'Ofbylden sûnder rubryk' ),
- 'Uncategorizedtemplates' => array( 'Net-kategorisearre sjabloanen', 'Net-kategorisearre berjochten', 'Berjochten sûnder rubryk', 'Berjochten sûnder kategory' ),
- 'Unusedcategories' => array( 'Net-brûkte kategoryen', 'Lege kategoryen' ),
- 'Unusedimages' => array( 'Lossteande ôfbylden' ),
- 'Wantedpages' => array( 'Nedige siden' ),
- 'Wantedcategories' => array( 'Nedige kategoryen', 'Net-besteande kategoryen dêr\'t it meast nei ferwiisd wurdt' ),
+ 'Longpages' => array( 'Lange siden' ),
+ 'MIMEsearch' => array( 'Sykje op MIME-type' ),
+ 'Mostcategories' => array( 'Siden mei de measte rubriken', 'Siden mei de measte kategoryen' ),
+ 'Mostimages' => array( 'Ofbylden dy\'t it meast brûkt wurde', 'Meast brûkte ôfbyldings' ),
'Mostlinked' => array( 'Siden wêr it meast mei keppele is', 'Siden dêr\'t it meast nei ferwiisd wurdt' ),
'Mostlinkedcategories' => array( 'Kategoryen dy\'t it meast brûkt wurde', 'Kategoryen dêr\'t it meast nei ferwiisd wurdt' ),
'Mostlinkedtemplates' => array( 'Meast brûkte sjabloanen', 'Meast brûkte berjochten' ),
- 'Mostimages' => array( 'Ofbylden dy\'t it meast brûkt wurde', 'Meast brûkte ôfbyldings' ),
- 'Mostcategories' => array( 'Siden mei de measte rubriken', 'Siden mei de measte kategoryen' ),
'Mostrevisions' => array( 'Siden mei de measte wizigings', 'Siden mei de measte bewurkings' ),
- 'Fewestrevisions' => array( 'Siden mei de minste bewurkings', 'Siden mei de minste ferzjes', 'Siden mei de minste wizigings' ),
- 'Shortpages' => array( 'Koarte siden' ),
- 'Longpages' => array( 'Lange siden' ),
+ 'Movepage' => array( 'Werneam side' ),
+ 'Mycontributions' => array( 'Myn bydragen' ),
+ 'Mypage' => array( 'Myn side' ),
+ 'Mytalk' => array( 'Myn oerlis' ),
+ 'Newimages' => array( 'Nije ôfbylden', 'Nije ôfbyldings', 'Nije ôfbyldingen', 'List mei nije ôfbylden', 'Nije Ofbylden' ),
'Newpages' => array( 'Nije siden' ),
- 'Ancientpages' => array( 'Alde siden', 'Âlde siden', 'Siden dy\'t lang net feroare binne' ),
- 'Deadendpages' => array( 'Siden sûnder keppelings', 'Siden sûnder ferwizings', 'Siden sûnder links' ),
- 'Protectedpages' => array( 'Befeilige siden', 'Skoattele siden' ),
- 'Allpages' => array( 'Alle titels', 'Alle siden' ),
+ 'Popularpages' => array( 'Populêre siden', 'Grage siden' ),
+ 'Preferences' => array( 'Ynstellings', 'Ynsteld' ),
'Prefixindex' => array( 'Alle siden neffens foarheaksel' ),
- 'Ipblocklist' => array( 'List fan útsletten Ynternet-adressen en brûkersnammen', 'List fan útsletten ynternet-adressen en meidochnammen', 'Útslette brûkers', 'Utslette brûkers', 'Útsletten meidoggers', 'Utsletten meidoggers' ),
- 'Specialpages' => array( 'Bysûndere siden' ),
- 'Contributions' => array( 'Meidogger-bydragen', 'Meidogger bydragen', 'Bydragen', 'Brûker bydragen' ),
- 'Emailuser' => array( 'Skriuw meidogger', 'Skriuw dizze brûker', 'Skriuw dizze meidogger' ),
- 'Confirmemail' => array( 'Befêstigjen netpostadres' ),
- 'Whatlinkshere' => array( 'Wat is hjirmei keppele', 'Wat is hjirmei keppele?', 'List fan alle siden dy\'t nei dizze side ferwize' ),
+ 'Protectedpages' => array( 'Befeilige siden', 'Skoattele siden' ),
+ 'Randompage' => array( 'Samar in side' ),
+ 'Randomredirect' => array( 'Samar in trochferwizing' ),
+ 'Recentchanges' => array( 'Koartlyn feroare', 'Koarts feroare' ),
'Recentchangeslinked' => array( 'Folgje keppelings' ),
- 'Movepage' => array( 'Werneam side' ),
- 'Booksources' => array( 'Boekynformaasje' ),
- 'Categories' => array( 'Kategoryen', 'Rubriken' ),
- 'Export' => array( 'Eksportearje' ),
- 'Version' => array( 'Ferzje', 'Programmatuerferzje' ),
- 'Allmessages' => array( 'Alle wikiberjochten' ),
- 'Log' => array( 'Loch', 'Logboek', 'Logboeken', 'Lochs' ),
- 'Blockip' => array( 'Slút brûker út', 'Slút meidogger út' ),
+ 'Search' => array( 'Sykje' ),
+ 'Shortpages' => array( 'Koarte siden' ),
+ 'Specialpages' => array( 'Bysûndere siden' ),
+ 'Statistics' => array( 'Statistyk' ),
+ 'Uncategorizedcategories' => array( 'Kategoryen sûnder kategory', 'Rubriken sûnder rubryk', 'Net-kategorisearre kategoryen' ),
+ 'Uncategorizedimages' => array( 'Net-kategorisearre ôfbyldings', 'Ofbylden sûnder kategory', 'Ofbylden sûnder rubryk' ),
+ 'Uncategorizedpages' => array( 'Siden sûnder rubryk', 'Siden sûnder kategory', 'Net-kategorisearre siden' ),
+ 'Uncategorizedtemplates' => array( 'Net-kategorisearre sjabloanen', 'Net-kategorisearre berjochten', 'Berjochten sûnder rubryk', 'Berjochten sûnder kategory' ),
'Undelete' => array( 'Side werom set' ),
- 'Import' => array( 'Ymport' ),
- 'Lockdb' => array( 'Meitsje de database \'Net-skriuwe\'', 'Meitsje de databank \'Net-skriuwe\'' ),
'Unlockdb' => array( 'Meitsje de databank skriuwber' ),
- 'Userrights' => array( 'Meidoggerrjochten', 'Behear fan meidoggerrjochten' ),
- 'MIMEsearch' => array( 'Sykje op MIME-type' ),
- 'Unwatchedpages' => array( 'Siden dy\'t net op in folchlist steane' ),
- 'Listredirects' => array( 'List fan trochferwizings' ),
+ 'Unusedcategories' => array( 'Net-brûkte kategoryen', 'Lege kategoryen' ),
+ 'Unusedimages' => array( 'Lossteande ôfbylden' ),
'Unusedtemplates' => array( 'Net brûkte sjabloanen', 'Net brûkte berjochten' ),
- 'Randomredirect' => array( 'Samar in trochferwizing' ),
- 'Mypage' => array( 'Myn side' ),
- 'Mytalk' => array( 'Myn oerlis' ),
- 'Mycontributions' => array( 'Myn bydragen' ),
- 'Listadmins' => array( 'Meidoggerlist Behearders' ),
- 'Listbots' => array( 'Meidoggerlist Bots' ),
- 'Popularpages' => array( 'Populêre siden', 'Grage siden' ),
- 'Search' => array( 'Sykje' ),
+ 'Unwatchedpages' => array( 'Siden dy\'t net op in folchlist steane' ),
+ 'Upload' => array( 'Bied triem oan', 'Oanbied', 'Bied bestân oan' ),
+ 'Userlogin' => array( 'Oanmelde', 'Oanmeld' ),
+ 'Userlogout' => array( 'Ofmelde', 'Ofmeld', 'Ôfmelde', 'Ôfmeld' ),
+ 'Userrights' => array( 'Meidoggerrjochten', 'Behear fan meidoggerrjochten' ),
+ 'Version' => array( 'Ferzje', 'Programmatuerferzje' ),
+ 'Wantedcategories' => array( 'Nedige kategoryen', 'Net-besteande kategoryen dêr\'t it meast nei ferwiisd wurdt' ),
+ 'Wantedpages' => array( 'Nedige siden' ),
+ 'Watchlist' => array( 'Folchlist', 'Jo Folchlist' ),
+ 'Whatlinkshere' => array( 'Wat is hjirmei keppele', 'Wat is hjirmei keppele?', 'List fan alle siden dy\'t nei dizze side ferwize' ),
'Withoutinterwiki' => array( 'Siden sûnder links nei oare talen', 'Siden sûnder ferwizings nei oare talen', 'Siden sûnder keppelings nei oare talen' ),
- 'Filepath' => array( 'Triempad' ),
);
$separatorTransformTable = array( ',' => '.', '.' => ',' );
@@ -267,15 +267,6 @@ $messages = array(
'category-file-count-limited' => 'Dizze kategory befettet {{PLURAL:$1|de folgjende triem|de folgjende $1 triemmen}}.',
'listingcontinuesabbrev' => '(ferfolch)',
-'mainpagetext' => "'''MediaWiki-program goed ynstallearre.'''",
-'mainpagedocfooter' => "Rieplachtsje de [http://meta.wikimedia.org/wiki/Help:Ynhâldsopjefte hantlieding] foar ynformaasje oer it gebrûk fan 'e wikisoftware.
-
-== Mear help oer Mediawiki ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings List mei ynstellings]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Faak stelde fragen (FAQ)]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglist foar oankundigings fan nije ferzjes]",
-
'about' => 'Ynfo',
'article' => 'Ynhâld side',
'newwindow' => '(nij finster)',
@@ -323,7 +314,6 @@ $messages = array(
'history' => 'Sideskiednis',
'history_short' => 'Skiednis',
'updatedmarker' => 'bewurke sûnt myn lêste besite',
-'info_short' => 'Ynformaasje',
'printableversion' => 'Ofdruk-ferzje',
'permalink' => 'Fêste keppeling',
'print' => 'Ofdrukke',
@@ -501,11 +491,10 @@ Query: $2',
'protectedpagetext' => 'Dizze side is befeilige. Bewurkjen is net mûglik.',
'viewsourcetext' => 'Jo kinne de boarnetekst fan dizze side besjen en kopiearje:',
'protectedinterface' => "Dizze side befettet tekst foar berjochten fan 'e software en is befeilige om misbrûk tefoaren te kommen.",
-'editinginterface' => "'''Warskôging;''' Jo bewurkje in side dy't brûkt wurdt troch software. Bewurkings op dizze side beynfloedzje de gebrûksynterface fan elkenien. Oerweagje foar oersettings [http://translatewiki.net/wiki/Main_Page?setlang=fy translatewiki.net] te brûken, it oersetprojekt foar MediaWiki.",
+'editinginterface' => "'''Warskôging;''' Jo bewurkje in side dy't brûkt wurdt troch software. Bewurkings op dizze side beynfloedzje de gebrûksynterface fan elkenien. Oerweagje foar oersettings [//translatewiki.net/wiki/Main_Page?setlang=fy translatewiki.net] te brûken, it oersetprojekt foar MediaWiki.",
'sqlhidden' => '(SQL query ferburgen)',
'cascadeprotected' => 'Dizze side is skoattele tsjin wizigjen, om\'t der in ûnderdiel útmakket fan de neikommende {{PLURAL:$1|side|siden}}, dy\'t skoattele {{PLURAL:$1|is|binne}} mei de "ûnderlizzende siden" opsje ynskeakele: $2',
'namespaceprotected' => "Jo hawwe gjin rjochten om siden yn'e nammerûmte '''$1''' te bewurkjen.",
-'customcssjsprotected' => "Jo kinne dizze side net bewurkje, om't er persoanlike ynstellings fan in oare brûker befettet.",
'ns-specialprotected' => "Siden yn'e nammerûmte {{ns:special}} kinne net bewurke wurde.",
'titleprotected' => "It oanmeitsjen fan dizze side is befeilige troch [[User:$1|$1]].
De oanfierde reden is ''$2''.",
@@ -593,7 +582,7 @@ Negearje it berjocht as dizze brûker sûnder jo meiwitten oanmakke is.',
Jo moatte efkes wachtsje foar't jo it op'e nij besykje kinne.",
'loginlanguagelabel' => 'Taal: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Wachtwurd feroarje',
'resetpass_announce' => "Jo binne oanmeld mei in tydlike koade dy't jo per e-mail tastjoerd is. Fier in nij wachtwurd yn om it oanmelden ôf te meitsjen.",
'resetpass_header' => 'Wachtwurd feroarje',
@@ -609,6 +598,9 @@ Jo moatte efkes wachtsje foar't jo it op'e nij besykje kinne.",
Mûglik hawwe Jo Jo wachtwurd al feroare of in nij tydlik wachtwurd oanfrege.',
'resetpass-temp-password' => 'Tydlik wachtwurd:',
+# Special:PasswordReset
+'passwordreset-username' => 'Meidoggernamme',
+
# Edit page toolbar
'bold_sample' => 'Fette tekst',
'bold_tip' => 'Fette tekst',
@@ -620,8 +612,6 @@ Mûglik hawwe Jo Jo wachtwurd al feroare of in nij tydlik wachtwurd oanfrege.',
'extlink_tip' => 'Eksterne link (ferjit http:// net)',
'headline_sample' => 'Koptekst',
'headline_tip' => 'Underkopke',
-'math_sample' => 'Foechje hjir in formule yn',
-'math_tip' => 'Wiskundige formule (LaTeX)',
'nowiki_sample' => 'Foechje hjir platte tekst yn',
'nowiki_tip' => 'Negearje it wiki formaat',
'image_tip' => 'Mediatriem',
@@ -691,7 +681,7 @@ Oars kinne jo tebek mei de tebek-knop fan jo blêder.",
'anontalkpagetext' => "----''Dit is de oerlisside fan in ûnbekende meidogger; in meidogger dy't him/har net oanmeld hat. Om't der gjin namme bekend is, wurdt it ynternet-adres brûkt om oan te jaan wa. Mar faak is it sa dat sa'n adres net altyd troch deselde persoan brûkt wurdt. As jo it idee hawwe dat jo as ûnbekende meidogger opmerkings foar in oar krije, dan kinne jo jo [[Special:UserLogin/signup|registrearje]], of jo [[Special:UserLogin|oanmelde]]. Fan in oanmelde meidogger is it ynternet-adres net sichtber, en as oanmelde meidogger krije jo allinnich opmerkings dy't foar josels bedoeld binne.''",
'noarticletext' => 'Der stjit noch gjin tekst op dizze side. Jo kinne
[[Special:Search/{{PAGENAME}}|hjirboppe nei dy tekst sykje]], of [{{fullurl:{{FULLPAGENAME}}|action=edit}} de side skriuwe].',
-'userpage-userdoesnotexist' => 'Jo bewurkje in brûkersside fan in brûker dy\'t net bestiet (brûker "$1").
+'userpage-userdoesnotexist' => 'Jo bewurkje in brûkersside fan in brûker dy\'t net bestiet (brûker "<nowiki>$1</nowiki>").
Kontrolearje oft jo dizze side wol oanmeitsje/bewurkje wolle.',
'clearyourcache' => "'''Opmerking:''' Nei it fêstlizzen kin it nedich wêze de oerslach fan dyn blêder te leegjen foardat de wizigings te sjen binne.
@@ -1011,7 +1001,6 @@ Jo kinne ek in nammerûmte as foarheaksel brûke.",
'changepassword' => 'Wachtwurd feroarje',
'prefs-skin' => 'Side-oansjen',
'skin-preview' => 'Proefbyld',
-'prefs-math' => 'Formules',
'datedefault' => 'Gjin foarkar',
'prefs-datetime' => 'Datum en tiid',
'prefs-personal' => 'Persoanlike gegevens',
@@ -1032,8 +1021,6 @@ Jo kinne ek in nammerûmte as foarheaksel brûke.",
'columns' => 'Kolommen',
'searchresultshead' => 'Sykje',
'resultsperpage' => 'Treffers de side',
-'contextlines' => 'Rigels ynhâld de treffer:',
-'contextchars' => 'Tekens fan de ynhâld de rigel:',
'stub-threshold' => 'Drompel foar markearring <a href="#" class="stub">stobbe</a> (bytes):',
'recentchangesdays' => 'Dagen om sjen te litten yn Koartlyn feroare:',
'recentchangesdays-max' => '(maksimaal $1 {{PLURAL:$1|dei|dagen}})',
@@ -1190,7 +1177,6 @@ Jo kinne ek oaren de mûglikheid jaan kontakt mei jo op te nimmen troch in ferwi
'right-userrights' => 'Alle meidoggerrjochten bywurkje',
'right-userrights-interwiki' => "Wizigje meidoggerrjochten fan meidoggers yn oare wiki's",
'right-siteadmin' => 'De database blokkearje en wer frij jaan',
-'right-reset-passwords' => "Wachtwurden fan oare meidoggers op 'e nij ynstelle",
'right-override-export-depth' => 'Alle siden oant en mei in keppelingsdjipte fan fiif fuortskriuwe',
# User rights log
@@ -1367,10 +1353,6 @@ Rieplachtsje it fuorthel-logboek foar't jo fierder geane.",
'watchthisupload' => 'Folgje dizze side',
'filewasdeleted' => "Der is earder in triem mei dizze namme fuorthelle.
Rieplachtsje it $1 foar't jo him op'e nij tafoegje.",
-'upload-wasdeleted' => "'''Warskôging: jo binne in triem oan it oanbieden, dy't earder fuorthelle wie.'''
-
-Kontrolearje oft it wier jo bedoeling is de triem oan te bieden.
-It fuorthellogboek fan dizze triem kinne jo hjir sjen:",
'filename-bad-prefix' => "De namme fan de triem dy't jo oanbiede begjint mei '''\"\$1\"''', dit wiist op in namme dy't automatysk troch in digitale kamera oanmakke wurdt. Feroarje de namme as jo wolle yn ien dy't in omskriuwing jout fan de triem.",
'filename-prefix-blacklist' => " #<!-- lit dizze line exakt sa't er is --> <pre>
# Syntax is as folget:
@@ -1454,7 +1436,6 @@ De folgjende list jout allinne de earste {{PLURAL:$1|ferwizing|$1 ferwizings}} n
Der is ek in [[Special:WhatLinksHere/$2|folsleine list]].',
'nolinkstoimage' => 'Der binne gjin siden oan dit ôfbyld keppele.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Mear ferwizings]] nei dizze triem besjen.',
-'redirectstofile' => '{{PLURAL:$1|De folgjende triem ferwiist|De folgjende $1 triemmen ferwize}} troch nei dizze triem:',
'duplicatesoffile' => '{{PLURAL:$1|De folgjende triem is|De folgjende $1 triemmen binne}} idintyk oan dizze triem:',
'sharedupload' => 'Dizze triem is in dielde oanbieding en kin ek troch oare projekten brûkt wurde.',
'filepage-nofile' => "Der bestiet gjin triem mei sa'n namme.",
@@ -1738,11 +1719,9 @@ De ûntfanger kin dus daliks nei jo reagearje.',
'nowatchlist' => 'Jo hawwe gjin siden op jo folchlist.',
'watchnologin' => 'Net oanmeld yn',
'watchnologintext' => 'Jo moatte [[Special:UserLogin|oanmeld]] wêze om jo folchlist te feroarjen.',
-'addedwatch' => 'Oan folchlist tafoege',
'addedwatchtext' => "De side \"'''[[:\$1]]'''\" is tafoege oan jo [[Special:Watchlist|folchlist]]. Bewurkings fan dizze side en oerlisside wurde yn de takomst op jo folchlist oanjûn. Hja wurde foar jo ek '''fet''' printe op [[Special:RecentChanges|Koartlyn feroare]].
At jo letter in side net mear folgje wolle, dan brûke jo op dy side de keppeling \"Ferjit dizze side.\" Jo [[Special:Watchlist|folchlist]] hat ek in keppeling \"Jo folchlist bewurkje,\" foar at jo mear as ien side \"ferjitte\" wolle.",
-'removedwatch' => 'Net mear folgje',
'removedwatchtext' => 'De side "[[:$1]]" stiet net mear op jo folchlist.',
'watch' => 'Folgje',
'watchthispage' => 'Folgje dizze side',
@@ -1784,11 +1763,11 @@ Fierdere meldings wurde jo net tastjoerd, oant jo de side lêzen hawwe. Op jo fo
Jo freonlike {{SITENAME}}-meldingssysteem.
--
-Gean nei {{fullurl:{{#special:Watchlist}}/edit}}
+Gean nei {{canonicalurl:{{#special:EditWatchlist}}}}
om jo folchlistynstellings te feroarjen.
Reaksjes en fierdere help:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Wisk side',
@@ -1805,7 +1784,7 @@ of ôfbyld, tegearre mei alle skiednis, út de databank.
Befêstigje dat jo dat wier dwaan wolle. Befêstigje dat dat is wat jo witte wat it gefolch
is en dat jo dit dogge neffens de [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Dien',
-'deletedtext' => '"<nowiki>$1</nowiki>" is wiske.
+'deletedtext' => '"$1" is wiske.
Sjoch "$2" foar in list fan wat resint wiske is.',
'deletedarticle' => '"[[$1]]" is wiske',
'dellogpage' => 'Wiskloch',
@@ -1849,7 +1828,7 @@ Sjoch [[Special:ProtectedPages|Skoattele side]] foar mear ynformaasje.',
'protectexpiry' => 'Ferrint nei',
'protect_expiry_invalid' => 'Tiid fan ferrinnen is net jildich.',
'protect_expiry_old' => 'Tiid fan ferrinnen leit yn it ferline.',
-'protect-text' => "Hjir kin jo it nivo fan skoatteljen sjen en oanpasse foar de side '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Hjir kin jo it nivo fan skoatteljen sjen en oanpasse foar de side '''$1'''.",
'protect-locked-blocked' => "Jo kinne it befeiligingsnivo net feroarje wylst jo blokkearre binne.
Hjir binne de hjoeddeiske ynstellings foar de side '''$1''':",
'protect-locked-dblock' => "It befeiligingsnivo kin net feroare wurde om't de database sletten is.
@@ -1951,18 +1930,17 @@ Dit binne de rinnende ynstellings foar de side '''$1''':",
'whatlinkshere-hidelinks' => '$1 keppelings',
# Block/unblock
-'blockip' => 'Slút meidogger út',
-'blockip-legend' => 'Slút brûker út',
-'blockiptext' => "Brûk dizze fjilden om in meidogger fan skriuwtagong út te sluten.
+'blockip' => 'Slút meidogger út',
+'blockip-legend' => 'Slút brûker út',
+'blockiptext' => "Brûk dizze fjilden om in meidogger fan skriuwtagong út te sluten.
Dat soe allinnich fanwege fandalisme dien wurde moatte, sa't de
[[{{MediaWiki:Policy-url}}|útslut-rie]] it oanjout.
Meld de krekte reden! Neam bygelyks de siden dy't oantaaste waarden.",
-'ipaddress' => 'Meidochnamme of ynternet-adres',
-'ipadressorusername' => 'IP Adres of meidoggernamme:',
-'ipbexpiry' => 'Ferrint nei:',
-'ipbreason' => 'Reden:',
-'ipbreasonotherlist' => 'Oare reden',
-'ipbreason-dropdown' => '*Faak foarkommende redenen foar blokkades
+'ipadressorusername' => 'IP Adres of meidoggernamme:',
+'ipbexpiry' => 'Ferrint nei:',
+'ipbreason' => 'Reden:',
+'ipbreasonotherlist' => 'Oare reden',
+'ipbreason-dropdown' => '*Faak foarkommende redenen foar blokkades
** Ferkearde ynformaasje ynfiere
** Fuortheljen fan ynformaasje út siden
** Spamferwizing nei eksterne websites
@@ -1970,42 +1948,39 @@ Meld de krekte reden! Neam bygelyks de siden dy't oantaaste waarden.",
** Yntimidearjend gedrach
** Misbrûk troch meardere brûkers
** Unakseptabele brûkersnamme',
-'ipbanononly' => 'Slút allinich anonyme meidoggers út',
-'ipbcreateaccount' => 'Blokkearje it oanmeitsjen fan in nij profyl',
-'ipbenableautoblock' => "Automatysk de lêste IP adressen útslute dy't troch dizze meidogger brûkt binne.",
-'ipbsubmit' => 'Slút dizze meidogger út',
-'ipbother' => 'In oare tiid:',
-'ipboptions' => '2 oeren:2 hours,1 dei:1 day,3 dagen:3 days,1 wike:1 week,2 wiken:2 weeks,1 moanne:1 month,3 moanne:3 months,6 moanne:6 months,1 jier:1 year,ûnbeheind:infinite',
-'ipbotheroption' => 'oare tiid',
-'ipbotherreason' => 'Oare/eventuele reden:',
-'badipaddress' => 'Gjin jildige IP-adres',
-'blockipsuccesssub' => 'Utsluting slagge',
-'blockipsuccesstext' => 'Meidogger [[Special:Contributions/$1|$1]] is útsletten.<br />
+'ipbcreateaccount' => 'Blokkearje it oanmeitsjen fan in nij profyl',
+'ipbenableautoblock' => "Automatysk de lêste IP adressen útslute dy't troch dizze meidogger brûkt binne.",
+'ipbsubmit' => 'Slút dizze meidogger út',
+'ipbother' => 'In oare tiid:',
+'ipboptions' => '2 oeren:2 hours,1 dei:1 day,3 dagen:3 days,1 wike:1 week,2 wiken:2 weeks,1 moanne:1 month,3 moanne:3 months,6 moanne:6 months,1 jier:1 year,ûnbeheind:infinite',
+'ipbotheroption' => 'oare tiid',
+'ipbotherreason' => 'Oare/eventuele reden:',
+'badipaddress' => 'Gjin jildige IP-adres',
+'blockipsuccesssub' => 'Utsluting slagge',
+'blockipsuccesstext' => 'Meidogger [[Special:Contributions/$1|$1]] is útsletten.<br />
(List fan [[Special:IPBlockList|útslette meidoggers]].)',
-'ipb-unblock-addr' => 'Lit $1 yn',
-'ipb-unblock' => 'Lit in meidogger of IP-adres yn',
-'ipb-blocklist' => 'Besteande útslutings besjen',
-'unblockip' => 'Lit meidogger wer ta',
-'unblockiptext' => 'Brûk dizze fjilden om in meidogger wer skriuwtagong te jaan.',
-'ipusubmit' => 'Lit dizze meidogger wer ta.',
-'ipblocklist' => 'List fan útsletten ynternet-adressen en meidochnammen',
-'ipblocklist-username' => 'Meidoggernamme of IP-adres:',
-'ipblocklist-submit' => 'Sykje',
-'blocklistline' => '"$3", troch "$2" op $1 ($4)',
-'infiniteblock' => 'trochgeand',
-'blocklink' => 'slút út',
-'unblocklink' => 'lit yn',
-'change-blocklink' => 'blokkade feroarje',
-'contribslink' => 'bydragen',
-'autoblocker' => 'Jo wiene útsletten om\'t jo ynternet-adres oerienkomt mei dat fan "[[User:$1|$1]]". Foar it útsluten fan dy meidogger waard dizze reden jûn: "$2".',
-'blocklogpage' => 'Utslútloch',
-'blocklogentry' => '"[[$1]]" útsletten foar $2 $3',
-'blocklogtext' => 'Dit is in loch fan it útsluten en talitten fan meidoggers. Fansels útsletten net-adressen binne net opnaam. Sjoch de [[Special:IPBlockList|útsletlist]] foar de no jildende utslettings.',
-'unblocklogentry' => 'hat de blokkade fan $1 fuorthelle',
-'ipb_expiry_invalid' => 'Tiid fan ferrinnen is net goed.',
-'ipb_already_blocked' => '"$1" is al útsluten',
-'ipb_cant_unblock' => 'Flater: It útsluten fan ID $1 kin net fûn wurde. It is miskien al net mear útsluten.',
-'proxyblocksuccess' => 'Dien.',
+'ipb-unblock-addr' => 'Lit $1 yn',
+'ipb-unblock' => 'Lit in meidogger of IP-adres yn',
+'ipb-blocklist' => 'Besteande útslutings besjen',
+'unblockip' => 'Lit meidogger wer ta',
+'unblockiptext' => 'Brûk dizze fjilden om in meidogger wer skriuwtagong te jaan.',
+'ipusubmit' => 'Lit dizze meidogger wer ta.',
+'ipblocklist' => 'List fan útsletten ynternet-adressen en meidochnammen',
+'ipblocklist-submit' => 'Sykje',
+'infiniteblock' => 'trochgeand',
+'blocklink' => 'slút út',
+'unblocklink' => 'lit yn',
+'change-blocklink' => 'blokkade feroarje',
+'contribslink' => 'bydragen',
+'autoblocker' => 'Jo wiene útsletten om\'t jo ynternet-adres oerienkomt mei dat fan "[[User:$1|$1]]". Foar it útsluten fan dy meidogger waard dizze reden jûn: "$2".',
+'blocklogpage' => 'Utslútloch',
+'blocklogentry' => '"[[$1]]" útsletten foar $2 $3',
+'blocklogtext' => 'Dit is in loch fan it útsluten en talitten fan meidoggers. Fansels útsletten net-adressen binne net opnaam. Sjoch de [[Special:BlockList|útsletlist]] foar de no jildende utslettings.',
+'unblocklogentry' => 'hat de blokkade fan $1 fuorthelle',
+'ipb_expiry_invalid' => 'Tiid fan ferrinnen is net goed.',
+'ipb_already_blocked' => '"$1" is al útsluten',
+'ipb_cant_unblock' => 'Flater: It útsluten fan ID $1 kin net fûn wurde. It is miskien al net mear útsluten.',
+'proxyblocksuccess' => 'Dien.',
# Developer tools
'lockdb' => "Meitsje de database 'Net-skriuwe'",
@@ -2082,7 +2057,7 @@ De doelside "[[:$1]]" is der al. Moat dy wiske wurde om plak te meitsjen foar it
'allmessagesdefault' => 'Standerttekst',
'allmessagescurrent' => 'Tekst yn de nijste ferzje',
'allmessagestext' => 'Dit is in list fan alle systeemberjochten beskikber yn de MediaWiki-nammeromte.
-Sjoch: [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation], [http://translatewiki.net translatewiki.net].',
+Sjoch: [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation], [//translatewiki.net translatewiki.net].',
# Thumbnails
'thumbnail-more' => 'Fergrutsje',
@@ -2179,33 +2154,10 @@ Sjoch: [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation], [htt
'spamprotectiontext' => "De side dy't jo fêstlizze woene is blokkearre troch in spam filter. Dit wurdt wierskynlik feroarsake troch in ferwizing nei in ekstern webstee.",
'spamprotectionmatch' => 'De neikommende tekst hat it spam filter aktivearre: $1',
-# Info page
-'infosubtitle' => 'Ynformaasje foar side',
-
# Skin names
'skinname-standard' => 'Standert',
'skinname-nostalgia' => 'Nostalgy',
-# Math options
-'mw_math_png' => 'Altiten as PNG ôfbyldzje',
-'mw_math_simple' => 'HTML foar ienfâldiche formules, oars PNG',
-'mw_math_html' => 'HTML as mooglik, oars PNG',
-'mw_math_source' => 'Lit de TeX ferzje stean (foar tekstblêders)',
-'mw_math_modern' => 'Oanbefelle foar resinte blêders',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'Untsjutbere formule',
-'math_unknown_error' => 'Unbekinde fout',
-'math_unknown_function' => 'Unbekinde funksje',
-'math_lexing_error' => 'Unbekind wurd',
-'math_syntax_error' => 'Sinboufout',
-'math_image_error' => 'PNG-omsetting is mislearre.
-Gean nei oft latex, dvips, en gs goed ynstallearre binne en set om',
-'math_bad_tmpdir' => 'De tydlike formulepad kin net skreaun of makke wêze.',
-'math_bad_output' => 'De formulepad kin net skreaun of makke wêze.',
-'math_notexvc' => 'It programma texvc net fûn; sjoch math/README te ynstallearjen.',
-
# Patrolling
'markaspatrolleddiff' => 'Markearje as kontroleare',
'markaspatrolledtext' => 'Markearje dizze side as kontrolearre',
@@ -2220,14 +2172,13 @@ Gean nei oft latex, dvips, en gs goed ynstallearre binne en set om',
'nextdiff' => 'Neikommende ferskillen →',
# Media information
-'imagemaxsize' => 'Behein ôfmjittings fan ôfbyld op beskriuwingsside ta:',
-'thumbsize' => 'Mjitte fan miniatueren:',
-'file-info' => 'triemgrutte: $1, MIME-type: $2',
-'file-info-size' => '$1 × $2 pixel, triemgrutte: $3, MIME type: $4',
-'file-nohires' => '<small>Gjin hegere resolúsje beskikber.</small>',
-'svg-long-desc' => 'SVG-triem, nominaal $1 × $2 pixels, triemgrutte: $3',
-'show-big-image' => 'Hegere resolúsje',
-'show-big-image-thumb' => '<small>Grutte fan dizze ôfbylding: $1 × $2 pixels</small>',
+'imagemaxsize' => 'Behein ôfmjittings fan ôfbyld op beskriuwingsside ta:',
+'thumbsize' => 'Mjitte fan miniatueren:',
+'file-info' => 'triemgrutte: $1, MIME-type: $2',
+'file-info-size' => '$1 × $2 pixel, triemgrutte: $3, MIME type: $4',
+'file-nohires' => '<small>Gjin hegere resolúsje beskikber.</small>',
+'svg-long-desc' => 'SVG-triem, nominaal $1 × $2 pixels, triemgrutte: $3',
+'show-big-image' => 'Hegere resolúsje',
# Special:NewFiles
'newimages' => 'Nije ôfbylden',
@@ -2256,7 +2207,13 @@ Alle folgjende links dy't op deselde rigel steane, wurde behannele as útsûnder
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-samplesperpixel' => 'Oantal komponinten',
@@ -2267,7 +2224,6 @@ Alle folgjende links dy't op deselde rigel steane, wurde behannele as útsûnder
'exif-artist' => 'Auteur',
'exif-colorspace' => 'Kleurromte',
'exif-compressedbitsperpixel' => 'Ofbylding kompresjemetoade',
-'exif-makernote' => 'Opmerkings fan makker',
'exif-usercomment' => 'Opmerkings',
'exif-relatedsoundfile' => 'Besibbe audiotriem',
'exif-exposuretime-format' => '$1 sek ($2)',
@@ -2311,14 +2267,12 @@ Alle folgjende links dy't op deselde rigel steane, wurde behannele as útsûnder
# External editor support
'edit-externally' => 'Wizigje dizze triem mei in ekstern programma',
-'edit-externally-help' => 'Sjoch de [http://www.mediawiki.org/wiki/Manual:External_editors ynstel-hantlieding] foar mear ynformaasje.',
+'edit-externally-help' => 'Sjoch de [//www.mediawiki.org/wiki/Manual:External_editors ynstel-hantlieding] foar mear ynformaasje.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'alle',
-'imagelistall' => 'alle',
-'watchlistall2' => 'alles',
-'namespacesall' => 'alles',
-'monthsall' => 'alle',
+'watchlistall2' => 'alles',
+'namespacesall' => 'alles',
+'monthsall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'Befêstigjen netpostadres',
diff --git a/languages/messages/MessagesGa.php b/languages/messages/MessagesGa.php
index 79e1f818..2e47fe30 100644
--- a/languages/messages/MessagesGa.php
+++ b/languages/messages/MessagesGa.php
@@ -124,8 +124,8 @@ $messages = array(
'tog-shownumberswatching' => 'Taispeán an méid úsáideoirí atá ag faire',
'tog-oldsig' => 'Réamhamharc ar an síniú atá ann:',
'tog-fancysig' => 'Sínithe bunúsacha mar vicítéacs (gan nasc uathoibríoch)',
-'tog-externaleditor' => 'Bain úsáid as eagarthóir seachtrach mar réamhshocrú (saineolaithe amháin, tá socrú speisialta de dhíth ort. [http://www.mediawiki.org/wiki/Manual:External_editors Tuilleadh eolais.])',
-'tog-externaldiff' => 'Bain úsáid as difríocht sheachtrach mar réamhshocrú (saineolaithe amháin, tá socrú speisialta de dhíth ort. [http://www.mediawiki.org/wiki/Manual:External_editors Tuilleadh eolais.])',
+'tog-externaleditor' => 'Bain úsáid as eagarthóir seachtrach mar réamhshocrú (saineolaithe amháin, tá socrú speisialta de dhíth ort. [//www.mediawiki.org/wiki/Manual:External_editors Tuilleadh eolais.])',
+'tog-externaldiff' => 'Bain úsáid as difríocht sheachtrach mar réamhshocrú (saineolaithe amháin, tá socrú speisialta de dhíth ort. [//www.mediawiki.org/wiki/Manual:External_editors Tuilleadh eolais.])',
'tog-showjumplinks' => 'Cumasaigh naisc insroichteachta “léim go dtíâ€',
'tog-uselivepreview' => 'Bain úsáid as réamhamharc beo (JavaScript) (Turgnamhach)',
'tog-forceeditsummary' => 'Cuir in iúl dom nuair a chuirim isteach achoimre eagair folamh',
@@ -219,10 +219,7 @@ $messages = array(
'listingcontinuesabbrev' => 'ar lean.',
'index-category' => 'Leathanaigh innéacsaithe',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''D'éirigh le suiteáil MediaWiki.'''",
-'mainpagedocfooter' => 'Féach ar [http://meta.wikimedia.org/wiki/MediaWiki_localisation doiciméid um conas an chomhéadán a athrú]
-agus an [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Lámhleabhar úsáideora] chun cabhair úsáide agus fíoraíochta a fháil.',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Maidir leis',
'article' => 'Leathanach ábhair',
@@ -273,10 +270,10 @@ agus an [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Lámhleabhar ú
'history' => 'Stair an lch seo',
'history_short' => 'Stair',
'updatedmarker' => 'leasaithe (ó shin mo chuairt dheireanach)',
-'info_short' => 'Eolas',
'printableversion' => 'Eagrán inphriontáilte',
'permalink' => 'Nasc buan',
'print' => 'Priontáil',
+'view' => 'Amharc',
'edit' => 'Athraigh an lch seo',
'create' => 'Cruthaigh',
'editthispage' => 'Athraigh an lch seo',
@@ -284,6 +281,7 @@ agus an [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Lámhleabhar ú
'delete' => 'Scrios',
'deletethispage' => 'Scrios an lch seo',
'undelete_short' => 'Díscrios {{PLURAL:$1|athrú amháin|$1 athrú}}',
+'viewdeleted_short' => 'Féach ar {{PLURAL:$1|athrú scriosta amháin|$1 athrú scriosta}}',
'protect' => 'Glasáil',
'protect_change' => 'athraigh',
'protectthispage' => 'Glasáil an lch seo',
@@ -364,6 +362,8 @@ agus an [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Lámhleabhar ú
'toc' => 'Clár ábhair',
'showtoc' => 'taispeáin',
'hidetoc' => 'folaigh',
+'collapsible-collapse' => 'Laghdaigh',
+'collapsible-expand' => 'Leathnaigh',
'thisisdeleted' => 'Breathnaigh nó cuir ar ais $1?',
'viewdeleted' => 'Féach ar $1?',
'restorelink' => '{{PLURAL:$1|athrú scriosta amháin|$1 athruithe scriosta}}',
@@ -463,10 +463,9 @@ Bain trial arís as i gcionn cúpla bomaite más é do thoil é.',
'protectedpagetext' => 'Tá an leathanach seo glasáilte chun coisc ar eagarthóireacht.',
'viewsourcetext' => 'Is féidir foinse an leathanach seo a fheiceáil ná a cóipeáil:',
'editinginterface' => "'''Rabhadh:''' Tá tú ag athrú leathanaigh a bhfuil téacs comhéadain do na bogearraí air. Cuirfear athruithe ar an leathanach seo i bhfeidhm ar an gcomhéadan úsáideora.
-Más maith leat MediaWiki a aistriú, cuimhnigh ar [http://translatewiki.net/wiki/Main_Page?setlang=ga translatewiki.net] (tionscadal logánaithe MediaWiki) a úsáid.",
+Más maith leat MediaWiki a aistriú, cuimhnigh ar [//translatewiki.net/wiki/Main_Page?setlang=ga translatewiki.net] (tionscadal logánaithe MediaWiki) a úsáid.",
'sqlhidden' => '(Iarratas SQL folaithe)',
'namespaceprotected' => "Ní chead agat leathanaigh a chur in eagar san ainmspás '''$1'''.",
-'customcssjsprotected' => 'Níl cead agat an leathanach seo a athrú, mar is sainroghanna úsáideora eile atá ann.',
'ns-specialprotected' => 'Ní féidir leathanaigh speisialta a chur in eagar.',
'titleprotected' => "Tá an teideal seo cosanta ar chruthú le [[User:$1|$1]].
An fáth ná ''$2''.",
@@ -517,13 +516,14 @@ Cumasaigh iad le do thoil, agus ansin logáil isteach le d'ainm úsáideora agus
'nocookieslogin' => 'Úsáideann {{SITENAME}} fianáin chun úsáideoirí a logáil isteach.
Tá fianáin díchumasaithe agat.
Cumasaigh iad agus bain triail eile as, le do thoil.',
+'nocookiesforlogin' => '{{int:nocookieslogin}}',
'noname' => 'Níor thug tú ainm úsáideora bailí.',
'loginsuccesstitle' => 'Logáladh isteach thú',
'loginsuccess' => "'''Tá tú logáilte isteach anois sa {{SITENAME}} mar \"<nowiki>\$1</nowiki>\".'''",
'nosuchuser' => 'Níl aon úsáideoir ann leis an ainm "$1".
Tá ainmneacha úsáideoir cásíogair.
Cinntigh do litriú, nó [[Special:UserLogin/signup|bain úsáid as an foirm thíos]] chun cuntas úsáideora nua a chruthú.',
-'nosuchusershort' => 'Níl aon úsáideoir ann leis an ainm "<nowiki>$1</nowiki>". Cinntigh do litriú.',
+'nosuchusershort' => 'Níl aon úsáideoir ann leis an ainm "$1". Cinntigh do litriú.',
'nouserspecified' => 'Caithfidh ainm úsáideoir a shonrú.',
'login-userblocked' => 'Tá an t-úsáideoir seo faoi bhac. Níl cead aige/aici logáil isteach.',
'wrongpassword' => "D'iontráil tú focal faire mícheart.<br />
@@ -564,7 +564,7 @@ Iontráil seoladh dea-fhormáidte le do thoil, nó glan an réimse sin.',
# E-mail sending
'php-mail-error-unknown' => 'Earráid anaithnid i bhfeidhm mail() de chuid PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => "Athraigh d'fhocal faire",
'resetpass_announce' => "Tá tú logáilte isteach le cód sealadach a seoladh chugat i r-phost.
Chun d'iarratas logáil isteach a chríochnú, caithfidh tú focal faire nua a roghnú anseo:",
@@ -591,8 +591,6 @@ Chun d'iarratas logáil isteach a chríochnú, caithfidh tú focal faire nua a r
'extlink_tip' => 'Nasc seachtrach (cuimhnigh an réimír http://)',
'headline_sample' => 'Cló ceannlíne',
'headline_tip' => 'Ceannlíne Leibhéil 2',
-'math_sample' => 'Cuir foirmle isteach anseo',
-'math_tip' => 'Foirmle mhatamataice (LaTeX)',
'nowiki_sample' => 'Cuir téacs neamhfhormáidithe anseo',
'nowiki_tip' => 'Cuir vicífhormáidiú ar ceal',
'image_sample' => 'Sámpla.jpg',
@@ -837,7 +835,6 @@ Bain triail as ''all:'' a chur roimh d'iarratas chun an t-inneachar ar fad (leat
'changepassword' => "Athraigh d'fhocal faire",
'prefs-skin' => 'Craiceann',
'skin-preview' => 'Réamhamharc',
-'prefs-math' => 'Matamaitice',
'datedefault' => 'Is cuma liom',
'prefs-datetime' => 'Dáta agus am',
'prefs-personal' => 'Sonraí úsáideora',
@@ -857,8 +854,6 @@ Bain triail as ''all:'' a chur roimh d'iarratas chun an t-inneachar ar fad (leat
'columns' => 'Colúin',
'searchresultshead' => 'Cuardaigh',
'resultsperpage' => 'Torthaí le taispeáint ó leathanach:',
-'contextlines' => 'Línte le taispeáint do gach toradh:',
-'contextchars' => 'Litreacha chomhthéacs ar gach líne:',
'stub-threshold-disabled' => 'Díchumasaithe',
'recentchangesdays' => 'Méid laethanta le taispeáint sna hathruithe is déanaí:',
'recentchangesdays-max' => '(uasmhéid $1 {{PLURAL:$1|lá|lá}})',
@@ -1284,11 +1279,9 @@ Beidh do seoladh ríomhphoist a d\'iontráil tú i [[Special:Preferences|do chui
'watchlistanontext' => "$1, le d'thoil, chun míreanna ar do liosta faire a fheiceáil ná a athrú.",
'watchnologin' => 'Níl tú logáilte isteach',
'watchnologintext' => 'Tá ort a bheith [[Special:UserLogin|logáilte isteach]] chun do liosta faire a athrú.',
-'addedwatch' => 'Curtha ar an liosta faire',
'addedwatchtext' => "Cuireadh an leathanach \"<nowiki>\$1</nowiki>\" le do [[Special:Watchlist|liosta faire]].
Amach anseo liostálfar athruithe don leathanach seo agus dá leathanach plé ansin,
agus beidh '''cló trom''' ar a theideal san [[Special:RecentChanges|liosta de na hathruithe is déanaí]] sa chaoi go bhfeicfeá iad go héasca.",
-'removedwatch' => 'Bainte den liosta faire',
'removedwatchtext' => 'Baineadh an leathanach "[[:$1]]" as [[Special:Watchlist|do liosta faire]].',
'watch' => 'Déan faire',
'watchthispage' => 'Déan faire ar an leathanach seo',
@@ -1342,13 +1335,13 @@ Is féidir freisin na bratacha fógartha a athrú do gach leathanach ar do liost
--
Chun socruithe do liosta faire a athrú, tabhair cuairt ar
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:Special:Watchlist/edit}}
Chun an leathanach a bhaint de do liosta faire, tabhair cuairt ar
$UNWATCHURL
Aiseolas agus a thuilleadh cabhrach:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Scrios an leathanach',
@@ -1363,7 +1356,7 @@ Aiseolas agus a thuilleadh cabhrach:
'confirmdeletetext' => 'Tá tú ar tí leathanach, agus a chuid staire, a scriosadh.
Deimhnigh, le do thoil, gur mhian leat é seo a dhéanamh, go dtuigeann tú torthaí an ghnímh seo agus go bhfuil tú dá dhéanamh de réir [[{{MediaWiki:Policy-url}}|an pholasaí]].',
'actioncomplete' => 'Gníomh críochnaithe',
-'deletedtext' => 'scriosadh "<nowiki>$1</nowiki>".
+'deletedtext' => 'scriosadh "$1".
Féach ar $2 chun cuntas na scriosiadh deireanacha a fháil.',
'deletedarticle' => 'scriosadh "[[$1]]"',
'dellogpage' => 'Loga scriosta',
@@ -1404,7 +1397,7 @@ Féach ar [[Special:ProtectedPages|Leathanach glasáilte]] chun a thuilleadh eol
'protectexpiry' => 'As feidhm:',
'protect_expiry_invalid' => 'Am éaga neamhbhailí.',
'protect_expiry_old' => 'Am éaga san am atá thart.',
-'protect-text' => "Is féidir leat an leibhéal glasála a athrú anseo don leathanach '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Is féidir leat an leibhéal glasála a athrú anseo don leathanach '''$1'''.",
'protect-locked-access' => "Ní chead ag do chuntas chun athraigh leibhéal cosaint an leathanach.
Seo iad na socruithe reatha faoin leathanach '''$1''':",
'protect-cascadeon' => 'Tá an leathanach seo ghlasáil le athrú mar tá se iniata ar {{PLURAL:$1|an leathanach seo|na leathanaigh seo}} a leanas, agus iad ghlasáil le glasáil cascáideach.
@@ -1512,7 +1505,6 @@ Is féidir leat an rud seo a dhéanamh amháin chun an chreachadóireacht a chos
mar a deirtear sa [[{{MediaWiki:Policy-url}}|polasaí {{GRAMMAR:genitive|{{SITENAME}}}}]].
Líonaigh cúis áirithe anseo thíos (mar shampla, is féidir leat a luaigh
leathanaigh áirithe a rinne an duine damáiste ar).',
-'ipaddress' => 'Seoladh IP / ainm úsáideora',
'ipadressorusername' => 'Seoladh IP nó ainm úsáideora:',
'ipbexpiry' => 'Am éaga',
'ipbreason' => 'Fáth:',
@@ -1543,9 +1535,7 @@ IP nó ainm úsáideora a raibh faoi chosc roimhe seo.',
'unblocked' => 'Díchoisceadh [[User:$1|$1]]',
'ipblocklist' => 'Liosta seoltaí IP agus ainmneacha úsáideoirí coiscthe',
'ipblocklist-legend' => 'Aimsigh úsáideoir coiscthe',
-'ipblocklist-username' => 'Ainm úsáideora ná seoladh IP:',
'ipblocklist-submit' => 'Cuardaigh',
-'blocklistline' => '$1, $2 a choisc $3 (am éaga $4)',
'infiniteblock' => 'gan teorainn',
'anononlyblock' => 'úsáideoirí gan ainm agus iad amháin',
'ipblocklist-empty' => 'Tá an liosta coisc folamh.',
@@ -1559,7 +1549,7 @@ Is é seo an chúis don chosc ar $1: "$2".',
'blocklogentry' => 'coisceadh [[$1]]; am éaga $2. $3',
'blocklogtext' => 'Seo é cuntas de gníomhartha coisc úsáideoirí agus míchoisc úsáideoirí. Ní cuirtear
seoltaí IP a raibh coiscthe go huathoibríoch ar an liosta seo. Féach ar an
-[[Special:IPBlockList|Liosta coisc IP]] chun
+[[Special:BlockList|Liosta coisc IP]] chun
liosta a fháil de coisc atá i bhfeidhm faoi láthair.',
'unblocklogentry' => 'díchoisceadh $1',
'block-log-flags-nocreate' => 'cuntas chruthú díchumasaithe',
@@ -1665,7 +1655,7 @@ Sa dara cás, is féidir leat nasc a úsáid, mar shampla [[{{#Special:Export}}/
'allmessagesdefault' => 'Téacs réamhshocraithe',
'allmessagescurrent' => 'Téacs reatha',
'allmessagestext' => 'Is liosta é seo de theachtaireachtaí córais atá le fáil san ainmspás MediaWiki.
-Tabhair cuairt ar [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] agus [http://translatewiki.net translatewiki.net] le do thoil más mian leat cur leis an logánú ginearálta MediaWiki.',
+Tabhair cuairt ar [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] agus [//translatewiki.net translatewiki.net] le do thoil más mian leat cur leis an logánú ginearálta MediaWiki.',
'allmessagesnotsupportedDB' => "Ní féidir an leathanach seo a úsáid dá bharr gur díchumasaíodh '''\$wgUseDatabaseMessages'''.",
# Thumbnails
@@ -1760,9 +1750,7 @@ ní féidir uaslódála staire díreacha a dhéanamh faoi láthair.",
'monobook.css' => '/* athraigh an comhad seo chun an craiceann MonoBook a athrú don suíomh ar fad */',
# Metadata
-'nodublincore' => 'Míchumasaítear meitea-shonraí Dublin Core RDF ar an freastalaí seo.',
-'nocreativecommons' => 'Míchumasaítear meitea-shonraí Creative Commons RDF ar an freastalaí seo.',
-'notacceptable' => 'Ní féidir leis an freastalaí vicí na sonraí a chur ar fáil i bhformáid atá inléite ag do chliant.',
+'notacceptable' => 'Ní féidir leis an freastalaí vicí na sonraí a chur ar fáil i bhformáid atá inléite ag do chliant.',
# Attribution
'anonymous' => '{{PLURAL:$1|Úsáideoir|Úsáideoirí}} gan ainm ar {{SITENAME}}',
@@ -1781,14 +1769,6 @@ iarradh sábháil. Is dócha gur nasc chuig suíomh seachtrach ba chúis leis.',
'spamprotectionmatch' => 'Truicear ár scagaire dramhála ag an téacs seo a leanas: $1',
'spambot_username' => 'MediaWiki turscar glanadh',
-# Info page
-'infosubtitle' => 'Eolas don leathanach',
-'numedits' => 'Méid athruithe (alt): $1',
-'numtalkedits' => 'Méid athruithe (leathanach phlé): $1',
-'numwatchers' => 'Méid féachnóirí: $1',
-'numauthors' => 'Méid údair ar leith (alt): $1',
-'numtalkauthors' => 'Méid údair ar leith (leathanach phlé): $1',
-
# Skin names
'skinname-standard' => 'Clasaiceach',
'skinname-nostalgia' => 'Sean-nós',
@@ -1800,25 +1780,6 @@ iarradh sábháil. Is dócha gur nasc chuig suíomh seachtrach ba chúis leis.',
'skinname-modern' => 'Nua-aimseartha',
'skinname-vector' => 'Veicteoir',
-# Math options
-'mw_math_png' => 'Déan PNG-íomhá gach uair',
-'mw_math_simple' => 'Déan HTML má tá sin an-easca, nó PNG ar mhodh eile',
-'mw_math_html' => 'Déan HTML más féidir, nó PNG ar mhodh eile',
-'mw_math_source' => 'Fág mar cló TeX (do teacsleitheoirí)',
-'mw_math_modern' => 'Inmholta do bhrabhsálaithe nua',
-'mw_math_mathml' => 'MathML más féidir (turgnamhach)',
-
-# Math errors
-'math_failure' => 'Theip ó anailís na foirmle',
-'math_unknown_error' => 'earráid anaithnid',
-'math_unknown_function' => 'foirmle anaithnid',
-'math_lexing_error' => 'Theip ó anailís an fhoclóra',
-'math_syntax_error' => 'earráid comhréire',
-'math_image_error' => 'Theip ó aistriú an PNG; tástáil má tá na ríomh-oidis latex, dvips, gs, agus convert i suite go maith.',
-'math_bad_tmpdir' => 'Ní féidir scríobh chuig an fillteán mata sealadach, nó é a chruthú',
-'math_bad_output' => 'Ní féidir scríobh chuig an fillteán mata aschomhaid, nó é a chruthú',
-'math_notexvc' => 'Níl an ríomhchlár texvc ann; féach ar mata/EOLAIS chun é a sainathrú.',
-
# Patrolling
'markaspatrolleddiff' => 'Comharthaigh mar patrólta.',
'markaspatrolledtext' => 'Comharthaigh an t-alt seo mar patrólta',
@@ -1841,16 +1802,15 @@ iarradh sábháil. Is dócha gur nasc chuig suíomh seachtrach ba chúis leis.',
'nextdiff' => 'An chéad dhifear eile →',
# Media information
-'mediawarning' => "'''Rabhadh''': Tá seans ann go bhfuil cód mailíseach sa chineál comhaid seo.
+'mediawarning' => "'''Rabhadh''': Tá seans ann go bhfuil cód mailíseach sa chineál comhaid seo.
B'fheidir go gcuirfear do chóras i gcontúirt dá rithfeá é.",
-'imagemaxsize' => "Teorainn mhéid íomhá:<br />''(leathanaigh thuarascáil chomhaid)''",
-'thumbsize' => 'Méid mionsamhlacha:',
-'file-info' => 'méid comhad : $1, saghas MIME: $2',
-'file-info-size' => '$1 × $2 picteilín, méid comhaid: $3, cineál MIME: $4',
-'file-nohires' => '<small>Níl aon taifeach is mó ar fáil.</small>',
-'svg-long-desc' => 'Comhad SVG, ainmniúil $1 × $2 picteilíni, méid comhaid: $3',
-'show-big-image' => 'Taispeáin leagan ardtaifigh den íomhá',
-'show-big-image-thumb' => '<small>Méid an réamhamhairc seo: $1 × $2 picteilín</small>',
+'imagemaxsize' => "Teorainn mhéid íomhá:<br />''(leathanaigh thuarascáil chomhaid)''",
+'thumbsize' => 'Méid mionsamhlacha:',
+'file-info' => 'méid comhad : $1, saghas MIME: $2',
+'file-info-size' => '$1 × $2 picteilín, méid comhaid: $3, cineál MIME: $4',
+'file-nohires' => '<small>Níl aon taifeach is mó ar fáil.</small>',
+'svg-long-desc' => 'Comhad SVG, ainmniúil $1 × $2 picteilíni, méid comhaid: $3',
+'show-big-image' => 'Taispeáin leagan ardtaifigh den íomhá',
# Special:NewFiles
'newimages' => 'Gailearaí na n-íomhánna nua',
@@ -1883,7 +1843,13 @@ Beidh na cinn eile ceilte de réir réamhshocraithe.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Leithead',
@@ -1898,13 +1864,11 @@ Beidh na cinn eile ceilte de réir réamhshocraithe.
'exif-ycbcrpositioning' => 'Suí Y agus C',
'exif-xresolution' => 'Taifeach íomhá i dtreo an leithid',
'exif-yresolution' => 'Taifeach íomhá i dtreo an airde',
-'exif-resolutionunit' => 'Aonad an taifigh X agus Y',
'exif-stripoffsets' => 'Suíomh na sonraí íomhá',
'exif-rowsperstrip' => 'Líon na rónna sa stráice',
'exif-stripbytecounts' => 'Bearta sa stráice comhbhrúite',
'exif-jpeginterchangeformat' => 'Aischló don SOI JPEG',
'exif-jpeginterchangeformatlength' => 'Bearta sonraí JPEG',
-'exif-transferfunction' => 'Feidhm aistrithe',
'exif-whitepoint' => 'Crómatacht na bpointí bán',
'exif-primarychromaticities' => 'Crómatachta na bpríomhacht',
'exif-ycbcrcoefficients' => 'Comhéifeachtaí mhaitrís trasfhoirmithe an dathspáis',
@@ -1923,7 +1887,6 @@ Beidh na cinn eile ceilte de réir réamhshocraithe.
'exif-compressedbitsperpixel' => 'Modh chomhbhrú na n-íomhánna',
'exif-pixelydimension' => 'Leithead bailí don íomhá',
'exif-pixelxdimension' => 'Airde bailí don íomhá',
-'exif-makernote' => 'Nótaí an déantóra',
'exif-usercomment' => 'Nótaí an úsáideora',
'exif-relatedsoundfile' => 'comhad gaolmhara fuaime',
'exif-datetimeoriginal' => 'Dáta agus am ghiniúint na sonraí',
@@ -1937,7 +1900,6 @@ Beidh na cinn eile ceilte de réir réamhshocraithe.
'exif-exposureprogram' => 'Clár nochta',
'exif-spectralsensitivity' => 'Ãogaireacht an speictrim',
'exif-isospeedratings' => 'Grádú ISO luais',
-'exif-oecf' => 'Fachtóir optaileictreonach tiontaithe',
'exif-shutterspeedvalue' => 'Luas nochta',
'exif-aperturevalue' => 'Cró',
'exif-brightnessvalue' => 'Gile',
@@ -1950,7 +1912,6 @@ Beidh na cinn eile ceilte de réir réamhshocraithe.
'exif-focallength' => 'Fad fócasach an lionsa',
'exif-subjectarea' => 'Achar an ábhair',
'exif-flashenergy' => 'Splancfhuinneamh',
-'exif-spatialfrequencyresponse' => 'Freagairt minicíochta spáis',
'exif-focalplanexresolution' => 'Taifeach an plána fócasaigh X',
'exif-focalplaneyresolution' => 'Taifeach an plána fócasaigh Y',
'exif-focalplaneresolutionunit' => 'Aonad taifigh an plána fócasaigh',
@@ -1959,7 +1920,6 @@ Beidh na cinn eile ceilte de réir réamhshocraithe.
'exif-sensingmethod' => 'Modh braite',
'exif-filesource' => 'Foinse comhaid',
'exif-scenetype' => 'Cineál radhairc',
-'exif-cfapattern' => 'Patrún CFA',
'exif-customrendered' => 'Ãomháphróiseáil saincheaptha',
'exif-exposuremode' => 'Modh nochta',
'exif-whitebalance' => 'Bánchothromaíocht',
@@ -2140,14 +2100,12 @@ cúlra i bhfócas)',
# External editor support
'edit-externally' => 'Athraigh an comhad seo le feidhmchlár seachtrach',
-'edit-externally-help' => '(Féach ar na [http://www.mediawiki.org/wiki/Manual:External_editors treoracha cumraíochta] as Béarla le tuilleadh eolais)',
+'edit-externally-help' => '(Féach ar na [//www.mediawiki.org/wiki/Manual:External_editors treoracha cumraíochta] as Béarla le tuilleadh eolais)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'iad uile',
-'imagelistall' => 'iad uile',
-'watchlistall2' => 'an t-iomlán',
-'namespacesall' => 'iad uile',
-'monthsall' => 'gach mí',
+'watchlistall2' => 'an t-iomlán',
+'namespacesall' => 'iad uile',
+'monthsall' => 'gach mí',
# E-mail address confirmation
'confirmemail' => 'Deimhnigh do ríomhsheoladh',
diff --git a/languages/messages/MessagesGag.php b/languages/messages/MessagesGag.php
index 8c62d9a6..49eb5269 100644
--- a/languages/messages/MessagesGag.php
+++ b/languages/messages/MessagesGag.php
@@ -15,6 +15,87 @@
$fallback = 'tr';
+$namespaceNames = array(
+ NS_MEDIA => 'Mediya',
+ NS_SPECIAL => 'Maasus',
+ NS_TALK => 'Dartışma',
+ NS_USER => 'Kullanıcı',
+ NS_USER_TALK => 'Kullanıcı_dartışma',
+ NS_PROJECT_TALK => '$1_dartışma',
+ NS_FILE => 'Dosye',
+ NS_FILE_TALK => 'Dosye_dartışma',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_dartışma',
+ NS_TEMPLATE => 'Åžablon',
+ NS_TEMPLATE_TALK => 'Şablon_dartışma',
+ NS_HELP => 'Yardım',
+ NS_HELP_TALK => 'Yardım_dartışma',
+ NS_CATEGORY => 'Kategoriya',
+ NS_CATEGORY_TALK => 'Kategoriya_dartışma',
+);
+
+$namespaceAliases = array(
+ # Turkish namespaces
+ 'Medya' => NS_MEDIA,
+ 'Özel' => NS_SPECIAL,
+ 'Tartışma' => NS_TALK,
+ 'Kullanıcı' => NS_USER,
+ 'Kullanıcı_mesaj' => NS_USER_TALK,
+ '$1_tartışma' => NS_PROJECT_TALK,
+ 'Dosya' => NS_FILE,
+ 'Dosya_tartışma' => NS_FILE_TALK,
+ 'MediaWiki' => NS_MEDIAWIKI,
+ 'MediaWiki_tartışma' => NS_MEDIAWIKI_TALK,
+ 'Åžablon' => NS_TEMPLATE,
+ 'Şablon_tartışma' => NS_TEMPLATE_TALK,
+ 'Yardım' => NS_HELP,
+ 'Yardım_tartışma' => NS_HELP_TALK,
+ 'Kategori' => NS_CATEGORY,
+ 'Kategori_tartışma' => NS_CATEGORY_TALK,
+);
+
+$specialPageAliases = array(
+ 'Allpages' => array( 'HepsiYazılar', 'HepsiSayfalar', 'HepsiYapraklar' ),
+ 'Ancientpages' => array( 'EskiYazılar', 'EskiSayfalar', 'EskiYapraklar' ),
+ 'Categories' => array( 'Kategoriyalar' ),
+ 'Contributions' => array( 'Katılmaklar' ),
+ 'CreateAccount' => array( 'EsapYarat', 'EsapAç' ),
+ 'Deadendpages' => array( 'BaalantısızYazılar', 'BaalantısızSayfalar', 'BaalantısızYapraklar' ),
+ 'Disambiguations' => array( 'MaanaAydınnatmak', 'MaanaAydınnatma' ),
+ 'DoubleRedirects' => array( 'İkiKeräYönnendirmäler', 'İkiKeräYönnendirmeler' ),
+ 'Listadmins' => array( 'İzmetliListası' ),
+ 'Listbots' => array( 'BotListası' ),
+ 'Listfiles' => array( 'DosyeListası', 'PätretListası' ),
+ 'Listredirects' => array( 'YönnedirmeListası', 'YönndermäListası' ),
+ 'Listusers' => array( 'KullanıcıListası' ),
+ 'Mycontributions' => array( 'Katılmaklarım' ),
+ 'Mytalk' => array( 'SözleşmäkSayfam', 'SözleşmäkYapraım' ),
+ 'Newimages' => array( 'EniDosyeler', 'EniPätretler' ),
+ 'Newpages' => array( 'EniYazılar', 'EniSayfalar', 'EniYapraklar' ),
+ 'Popularpages' => array( 'EnAnılmışSayfalar', 'EnAnılmışYazılar' ),
+ 'Preferences' => array( 'Seçimner' ),
+ 'Prefixindex' => array( 'PrefiksÄ°ndeksi' ),
+ 'Randompage' => array( 'Razgele', 'RazgeleYazı', 'RazgeleSayfa', 'RazgeleYaprak' ),
+ 'Randomredirect' => array( 'RazgeleYönnendirme', 'RazgeleYönndermä' ),
+ 'Recentchanges' => array( 'BitkiDiişikmäklär' ),
+ 'Search' => array( 'Ara' ),
+ 'Specialpages' => array( 'MaasusSayfalar', 'MaasusYazılar', 'MaasusYapraklar' ),
+ 'Statistics' => array( 'Ä°statistikalar' ),
+ 'Uncategorizedcategories' => array( 'KategorizațiyasızKategoriyalar' ),
+ 'Uncategorizedimages' => array( 'KategorizațiyasızDosyeler', 'KategorizațiyasızPätretler' ),
+ 'Uncategorizedpages' => array( 'KategorizațiyasızYazılar', 'KategorizațiyasızSayfalar', 'KategorizațiyasızYapraklar' ),
+ 'Uncategorizedtemplates' => array( 'KategorizațiyasızŞablonnar' ),
+ 'Unusedcategories' => array( 'KullanılmayanKategoriyalar' ),
+ 'Unusedimages' => array( 'KullanılmayanDosyeler', 'KullanılmayanPätretler' ),
+ 'Upload' => array( 'Ãœkle' ),
+ 'Watchlist' => array( 'SiirListası', 'BakmaaListası' ),
+ 'Withoutinterwiki' => array( 'Ä°ntervikisiz' ),
+);
+
+$magicWords = array(
+ 'redirect' => array( '0', '#YÖNNENDİRMÄKLER', '#YÖNNENDİR', '#YÖNNENDİRMÄ', '#YÖNLENDİRME', '#YÖNLENDİR', '#REDIRECT' ),
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'Baalantıların altını çiz',
@@ -122,15 +203,6 @@ $messages = array(
'category-article-count' => '{{PLURAL:$2|Bu kategoriyaa girer sadä aşaadaki sayfa.|Hepsi $2 den, aşaadaki {{PLURAL:$1|sayfa|$1 sayfa}} bu kategoriyadan.}}',
'listingcontinuesabbrev' => '(devam)',
-'mainpagetext' => "'''MediaWiki başarılan kuruldu.'''",
-'mainpagedocfooter' => "Vikilän iş uurunda bilgi almaa için [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] sayfasına bakınız
-
-== Eni başlayanlar için ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-
'about' => 'Uurunda',
'article' => 'Yazı',
'newwindow' => '(eni bir pencerädä açılêr)',
@@ -168,7 +240,6 @@ $messages = array(
'history' => 'Sayfanın istoriyası',
'history_short' => 'Ä°storiya',
'updatedmarker' => 'bitki gelişimdän sora enilenmiş',
-'info_short' => 'Bilgi',
'printableversion' => 'Tiparlanacêk versiya',
'permalink' => 'Bitki haline baalantı',
'print' => 'Tiparla',
@@ -337,7 +408,7 @@ Kullanıcı adınız '''var nicä içersin'''gagauzça nışan, boşluk . Savaş
'loginsuccesstitle' => 'Sessiya başarılan açıldı',
'loginsuccess' => '{{SITENAME}} saytında "$1" kullanıcı adılan sessiya açtınız.',
'nosuchuser' => 'Burada "$1" adlı kullanıcı yok. Yokla bir taa nesoy yazdın, yaki eni esap yarat.',
-'nosuchusershort' => 'Burada "<nowiki>$1</nowiki>" adlı kullanıcı yok. Yoklayın ani ad nesoy yazıldı.',
+'nosuchusershort' => 'Burada "$1" adlı kullanıcı yok. Yoklayın ani ad nesoy yazıldı.',
'nouserspecified' => 'Läazım bir kullanıcı adı göstermää.',
'wrongpassword' => 'Parolu yannış girdiniz. Yalvarerêz tekrar denämää.',
'wrongpasswordempty' => 'Boş parol girdiniz. Yalvarerez tekrar denämää.',
@@ -363,7 +434,7 @@ O zamana kadar ani e-maildaki instrukțiyalar yapılmaycêk hem doorulanmaycêk
'createaccount-title' => '{{SITENAME}} için esap açılışı',
'loginlanguagelabel' => 'Dil: $1',
-# Password reset dialog
+# Change password dialog
'retypenew' => 'Eni parolu tekrar girin',
'resetpass_forbidden' => 'Saytında parol yok nicä diiştirilsin',
@@ -378,8 +449,6 @@ O zamana kadar ani e-maildaki instrukțiyalar yapılmaycêk hem doorulanmaycêk
'extlink_tip' => 'Dış baalantı (Unutmayın adresin önüne http:// koymaa)',
'headline_sample' => 'Başlık teksti',
'headline_tip' => '2. düzey başlık',
-'math_sample' => 'Matematik-formulanı-koyun',
-'math_tip' => 'Matematik formula (LaTeX formatında)',
'nowiki_sample' => 'Serbest format yazınızı buraya yazınız',
'nowiki_tip' => 'Wiki formatlamasını ignor et',
'image_tip' => 'Pätret eklemää',
@@ -746,7 +815,6 @@ Sizin bakmaa [[Special:Watchlist|listasındaki]] sayfalar verildi '''kalın''' b
# Watchlist
'watchlist' => 'Bakmaa listam',
'mywatchlist' => 'Bakmaa listam',
-'addedwatch' => 'Bakmaa listasına registrat edildi.',
'addedwatchtext' => '"<nowiki>$1</nowiki>" adlı sayfa [[Special:Watchlist|bakmaa listanıza]] registrat olundu.
Gelecektä, bu sayfaya hem ilgili konuşmaa sayfasına yapılacêk diişmäkler burada yazılacêk.
@@ -754,7 +822,6 @@ Gelecektä, bu sayfaya hem ilgili konuşmaa sayfasına yapılacêk diişmäkler
[[Special:RecentChanges|Bitki diişmäkler listası]] başlıı altında yazılacêk kalın bukvalarnan neçin ki kolayca seçilsin.
Ne zaman neetlendiniz sayfayı bakmaa listasınnan çıkarmaa tuşlayın "sayfaya bakmaa durgun" baalantısına.',
-'removedwatch' => 'Bakmaa listanızdan silindi',
'removedwatchtext' => '"[[:$1]]" yapraı siir [[Special:Watchlist|listanızdan]] silindi.',
'watch' => 'Bak',
'watchthispage' => 'Bak bu sayfaya',
@@ -773,7 +840,7 @@ Ne zaman neetlendiniz sayfayı bakmaa listasınnan çıkarmaa tuşlayın "sayfay
'confirmdeletetext' => 'Bu sayfayı yaki faylı silersiniz hepsi istoriyasılan bilä.
Lütfen doorulayın ani siz neetlenersiniz bunu yapmaa, annêêrsiniz onun rezultatlarını hem inanêrsiniz ani bu [[{{MediaWiki:Policy-url}}|Silmää kanonnarına]] uyêr.',
'actioncomplete' => 'İşlik tamannandı.',
-'deletedtext' => '"<nowiki>$1</nowiki>" silindi.
+'deletedtext' => '"$1" silindi.
Yakın zamanda silinenleri görmää deyni: $2.',
'deletedarticle' => '"[[$1]]" silindi',
'dellogpage' => 'Silmää jurnalı',
@@ -794,7 +861,7 @@ Yakın zamanda silinenleri görmää deyni: $2.',
'protectexpiry' => 'Bitmää datası:',
'protect_expiry_invalid' => 'Yannış bitmää datası.',
'protect_expiry_old' => 'Bitmää datası geçti.',
-'protect-text' => "Var nicä görmää hem diiştirmää buradan '''<nowiki>$1</nowiki>''' sayfasın korunmaa düzeyini.",
+'protect-text' => "Var nicä görmää hem diiştirmää buradan '''$1''' sayfasın korunmaa düzeyini.",
'protect-locked-access' => "Sizin esapın yok izni yazının korunmak düzeyini diiştirmää.
Burada bitki seçimner '''$1''' yazı diiştirmää deyni:",
'protect-cascadeon' => 'Bu sayfa şindi korunêr onuştan ani girer {{PLURAL:$1|aşaadaki sayfaa, angısına|||aşaadaki sayfalara, angılarına}} konuldu kaskad korunmak. Sizä yakışêr diiştirin bu sayfanın korunmak düzeyin, ama bu etkilemez kaskad korunmaa.',
@@ -980,11 +1047,10 @@ Dönün baş yapraa',
'nextdiff' => 'Geerki versiyalan aradaki fark →',
# Media information
-'file-info-size' => '$1 × $2 piksel, fayl ölçüsü: $3, MIME tipi: $4',
-'file-nohires' => '<small>Taa üüksek aydınnıklı versiya bulunmêêr.</small>',
-'svg-long-desc' => 'SVG faylı, nominal $1 × $2 piksel, fayl ölçüsü: $3',
-'show-big-image' => 'Taman aydınnık',
-'show-big-image-thumb' => '<small>Ön siir ölçüsü: $1 × $2 piksel</small>',
+'file-info-size' => '$1 × $2 piksel, fayl ölçüsü: $3, MIME tipi: $4',
+'file-nohires' => '<small>Taa üüksek aydınnıklı versiya bulunmêêr.</small>',
+'svg-long-desc' => 'SVG faylı, nominal $1 × $2 piksel, fayl ölçüsü: $3',
+'show-big-image' => 'Taman aydınnık',
# Special:NewFiles
'newimages' => 'Eni pätretler',
@@ -1010,11 +1076,17 @@ Herliim fayl diiÅŸtirildi yaratılıştan sora, bir takım parametrlär var nicÃ
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Kompyuterinizdäki uygulamaklarlan faylı düz',
-'edit-externally-help' => 'Taa çok bilgi için var nicä bakmaa metadaki [http://www.mediawiki.org/wiki/Manual:External_editors dış uygulama instrumentläri] (angliyça) sayfasına.',
+'edit-externally-help' => 'Taa çok bilgi için var nicä bakmaa metadaki [//www.mediawiki.org/wiki/Manual:External_editors dış uygulama instrumentläri] (angliyça) sayfasına.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'Hepsini göster',
diff --git a/languages/messages/MessagesGan_hans.php b/languages/messages/MessagesGan_hans.php
index b928663d..b113f305 100644
--- a/languages/messages/MessagesGan_hans.php
+++ b/languages/messages/MessagesGan_hans.php
@@ -160,15 +160,6 @@ $messages = array(
'index-category' => 'åšæ­£ç´¢å¼•ð ®¶é¡µé¢',
'noindex-category' => '冇åšç´¢å¼•ð ®¶é¡µé¢',
-'mainpagetext' => "'''安装正MediaWiki喽。'''",
-'mainpagedocfooter' => 'å‚看[http://meta.wikimedia.org/wiki/Help:Contents 用户指å—]里头会è¯åˆ°å•·ç”¨wiki软件
-
-== 开始使用 ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置设定列表]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 平常问题解答]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki å‘布email清å•]',
-
'about' => '关于',
'article' => '文章',
'newwindow' => '(开åªæ–°çª—å£ï¼‰',
@@ -218,7 +209,6 @@ $messages = array(
'history' => '文章历å²',
'history_short' => '历å²',
'updatedmarker' => '最末é“æµè§ˆåŽð ®¶æ”¹åŠ¨',
-'info_short' => '消æ¯',
'printableversion' => 'å¯æ‰“å°ç‰ˆæœ¬',
'permalink' => '永久链接',
'print' => '打å°',
@@ -398,7 +388,6 @@ MySQL回到错误“$3: $4â€ã€‚',
'cascadeprotected' => '个页已拖ä¿æŠ¤ï¼Œå› ä¸ºä½¢æ‹–“è”é”ä¿æŠ¤â€ð ®¶{{PLURAL:$1|一åª|几åª}}æ‹–ä¿æŠ¤é¡µåŒ…到:
$2',
'namespaceprotected' => "倷冇æƒç¼–写'''$1'''空间里度𠮶页é¢ã€‚",
-'customcssjsprotected' => '倷冇æƒç¼–写个页,佢å«åˆ°åˆ«ð ®¶ç”¨æˆ·ð ®¶ä¸ªäººè®¾å®šã€‚',
'ns-specialprotected' => '编写伓正{{ns:special}}空间𠮶页é¢ã€‚',
# Virus scanner
@@ -469,7 +458,7 @@ $2',
è¦ç³»å¸æˆ·åˆ›å»ºä¸å¯¹ð ®¶è¯ï¼Œå€·å°±èŽ«æ­ä¸ªåªæ¶ˆæ¯ã€‚',
'loginlanguagelabel' => '语言: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => '设过å¸æˆ·å¯†ç ',
'resetpass_announce' => '倷系用到临时email𠮶代ç ç™»å…¥ð ®¶ã€‚è¦ç™»æ­£å…¥ï¼Œå€·è¦åˆ°ä¸ªé¦–设定åªæ–°å¯†ç :',
'resetpass_header' => '设过密ç ',
@@ -493,8 +482,6 @@ $2',
'extlink_tip' => '外部链接(头上加 http://)',
'headline_sample' => '标题文字',
'headline_tip' => '二级标题',
-'math_sample' => '到个首扻入数学公å¼',
-'math_tip' => 'æ•°å­¦å…¬å¼ ï¼ˆLaTeX)',
'nowiki_sample' => '到个首扻入éžæ ¼å¼æ–‡æœ¬',
'nowiki_tip' => '扻入éžæ ¼å¼æ–‡æœ¬',
'image_tip' => '扻进文件',
@@ -776,7 +763,6 @@ $2',
'changepassword' => '改过密ç ',
'prefs-skin' => 'çš®',
'skin-preview' => '(预览)',
-'prefs-math' => '数学公å¼',
'datedefault' => '默认项目',
'prefs-datetime' => '日期åŒåˆ°æ—¶é—´',
'prefs-personal' => '用户介ç»',
@@ -792,8 +778,6 @@ $2',
'columns' => 'ç«–:',
'searchresultshead' => '设置寻到𠮶结果',
'resultsperpage' => '设置寻到𠮶链接数',
-'contextlines' => '设置寻到𠮶行数:',
-'contextchars' => '设置寻到𠮶字数:',
'stub-threshold' => '<a href="#" class="stub">细文链接</a>æ ¼å¼é—¨æ§›:',
'recentchangesdays' => '最近更改中𠮶显示日数:',
'recentchangescount' => '最近更改中𠮶编辑数:',
@@ -962,10 +946,6 @@ $2',
'destfilename' => '目标档案å:',
'watchthisupload' => 'çœåˆ°ä¸ªé¡µ',
'filewasdeleted' => 'å…ˆå‰æœ‰åªåŒå档案上传åŽåˆæ‹–删å¥å˜žã€‚上传个åªæ¡£æ¡ˆä¹‹å‰å€·éžè¦æ£€æŸ¥$1。',
-'upload-wasdeleted' => "'''警告: 倷于今上传𠮶档案系先å‰åˆ è¿‡ð ®¶ã€‚'''
-
-倷è¦æƒ³æ­£ç³»çœŸð ®¶ä¸Šä¼ ä¸ªåªæ¡£æ¡ˆã€‚
-为到方便起è§ï¼Œä¸ªåªæ¡£æ¡ˆð ®¶åˆ é™¤è®°å½•åˆ°ä¸‹åº•æ供嘞:",
'filename-bad-prefix' => "倷上传𠮶档案å系以'''\"\$1\"'''åšå¼€å¤´ð ®¶ï¼Œé€šå¸¸ä¸ªç§å†‡æ„义𠮶å字系数ç ç›¸æœºåº¦ð ®¶è‡ªåŠ¨ç¼–排。请到倷𠮶档案拣过åªæ›´åŠ æœ‰æ„义𠮶å字。",
'upload-success-subj' => '上传正嘞',
@@ -1245,9 +1225,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlistanontext' => '请$1眵å–或改å–倷𠮶监视列表。',
'watchnologin' => '冇登入',
'watchnologintext' => '倷è¦[[Special:UserLogin|登入]]èµ·æ‰æ”¹å¾—正倷𠮶监视列表。',
-'addedwatch' => '加到嘞监视列表',
'addedwatchtext' => "页é¢\"[[:\$1]]\" 加到嘞倷𠮶[[Special:Watchlist|监视列表]]。个页åŒä½¢ð ®¶è®¨è®ºé¡µð ®¶å…¨éƒ¨æ”¹åŠ¨ä»¥åŽéƒ½ä¼šåˆ—到许首,佢会用'''粗体''' 列到[[Special:RecentChanges|最近更改]]让倷更加容易识别。 倷以åŽè¦ç³»æ‹¿ä½¢åˆ°ç›‘视列表删åŸä½¢ð ®¶è¯ï¼Œå°±åˆ°å¯¼èˆªæ¡ç‚¹å–“莫çœåˆ°â€ã€‚",
-'removedwatch' => '莫çœåˆ°',
'removedwatchtext' => '页é¢"$1"到倷𠮶监视列表删åŸå˜žã€‚',
'watch' => 'çœåˆ°',
'watchthispage' => 'çœåˆ°ä¸ªé¡µ',
@@ -1290,9 +1268,9 @@ $NEWPAGE
本站: $PAGEEDITOR_WIKI 今åŽä¼“会通知倷将æ¥ð ®¶æ”¹åŠ¨ï¼Œé™¤éžæŽ¥åˆ°æ¥åˆ°ä¸ªé¡µã€‚倷也能设过倷全部监视页𠮶通知标记。
-{{SITENAME}}通知系统 – 会改åŸå€·ð ®¶ç›‘视列表设置,请去 {{fullurl:{{#special:Watchlist}}/edit}}
+{{SITENAME}}通知系统 – 会改åŸå€·ð ®¶ç›‘视列表设置,请去 {{canonicalurl:{{#special:EditWatchlist}}}}
-回馈åŒåˆ°åˆ«ð ®¶è¯´æ˜Ž: {{fullurl:{{MediaWiki:Helppage}}}}',
+回馈åŒåˆ°åˆ«ð ®¶è¯´æ˜Ž: {{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => '删åŸé¡µé¢',
@@ -1468,7 +1446,6 @@ $1',
# Block/unblock
'blockip' => 'å°åˆ°IP地å€',
'blockiptext' => '用下底𠮶表格去阻止æŸä¸€IP𠮶修改æƒé™ã€‚除éžå€·ç³»ä¸ºåˆ°æ€•ä½¢ä¹±æ‰¤ï¼ŒæŽ¥åˆ°éžè¦ç¬¦åˆ[[{{MediaWiki:Policy-url}}|守则]]𠮶æ¡ä»¶ä¸‹æ‰èƒ½å•–åšã€‚请到下底è¯åªç¡®åˆ‡åŽŸå› ï¼ˆæ¯”如引用一åªæ‹–ç ´å𠮶页é¢ï¼‰ã€‚',
-'ipaddress' => 'IP地å€:',
'ipadressorusername' => 'IP地å€æˆ–用户å:',
'ipbexpiry' => '期é™:',
'ipbreason' => '原因:',
@@ -1481,7 +1458,6 @@ $1',
** å“人ï¼éªšæ‰°åˆ«ð ®¶
** 滥用å¸å·
** 乱起用户å',
-'ipbanononly' => '光防到匿å用户',
'ipbcreateaccount' => '防止开新å¸å·',
'ipbemailban' => '防止用户å‘email',
'ipbenableautoblock' => '自动å°é”个åªç”¨æˆ·æœ€æ™ð ®¶IP,åŒåŽæ¥ä½¢ç¼–写用过𠮶地å€',
@@ -1505,9 +1481,7 @@ $1',
'unblocked-id' => 'å°ç¦$1拖删åŸå˜ž',
'ipblocklist' => 'æ‹–å°IP列表',
'ipblocklist-legend' => '寻å–æ‹–å°é”𠮶用户',
-'ipblocklist-username' => '用户å或IP地å€:',
'ipblocklist-submit' => '寻',
-'blocklistline' => '$1,$2å°åˆ°$3 ($4)',
'infiniteblock' => '伓é™æœŸ',
'expiringblock' => '$1 $2到期',
'anononlyblock' => 'å•é™åˆ¶åŒ¿å用户',
@@ -1523,7 +1497,7 @@ $1',
'autoblocker' => '倷åŒ"[[$1]]"共用一åªIP,故系倷也拖自动é”到嘞。$1å°é”𠮶缘故系"$2"。',
'blocklogpage' => 'å°é”日志',
'blocklogentry' => '[[$1]]æ‹–å°åˆ°$3 ,结æŸæ—¶é—´åˆ°$2',
-'blocklogtext' => '个系用户å°é”åŒè§£å°æ“作𠮶日志。拖自动å°é”𠮶IP冇列出。请å‚看[[Special:IPBlockList|æ‹–å°IP地å€åˆ—表]]。',
+'blocklogtext' => '个系用户å°é”åŒè§£å°æ“作𠮶日志。拖自动å°é”𠮶IP冇列出。请å‚看[[Special:BlockList|æ‹–å°IP地å€åˆ—表]]。',
'unblocklogentry' => '$1 拖解å°å˜ž',
'block-log-flags-anononly' => 'å•é™åˆ¶åŒ¿å用户',
'block-log-flags-nocreate' => 'ç¦æ­¢ä¸ªåªIP/用户新开å¸æˆ·',
@@ -1625,7 +1599,7 @@ $1',
'allmessagesdefault' => '默认文字',
'allmessagescurrent' => '眼å‰ð ®¶æ–‡å­—',
'allmessagestext' => '个首列到全部制定得正𠮶系统界é¢ã€‚
-Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:系统界é¢åŠŸèƒ½'''å…³åŸå˜žï¼ˆ'''\$wgUseDatabaseMessages''')。",
# Thumbnails
@@ -1748,9 +1722,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'monobook.js' => '/* 伓å†ä½¿ç”¨ï¼›è¯·ç”¨[[MediaWiki:common.js]] */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata到个åªæœåŠ¡å™¨ç”¨ä¼“正。',
-'nocreativecommons' => 'Creative Commons RDF metadata到个åªæœåŠ¡å™¨ç”¨ä¼“正。',
-'notacceptable' => '个åªç½‘ç«™æœåŠ¡å™¨æ供伓正倷𠮶用户端认得𠮶格å¼ã€‚',
+'notacceptable' => '个åªç½‘ç«™æœåŠ¡å™¨æ供伓正倷𠮶用户端认得𠮶格å¼ã€‚',
# Attribution
'anonymous' => '{{SITENAME}}𠮶匿å用户',
@@ -1772,33 +1744,6 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'spam_reverting' => '返回到伓包连到$1最æ™ð ®¶ç‰ˆæœ¬',
'spam_blanking' => '全部包å«è¿žåˆ°$1𠮶改动,留空',
-# Info page
-'infosubtitle' => '页é¢ð ®¶ä¿¡æ¯',
-'numedits' => '编辑数 (文章): $1',
-'numtalkedits' => '编辑数 (讨论页): $1',
-'numwatchers' => '监视人数: $1',
-'numauthors' => '作者人数 (文章): $1',
-'numtalkauthors' => '作者人数 (讨论页): $1',
-
-# Math options
-'mw_math_png' => '全部使用PNG图åƒ',
-'mw_math_simple' => 'è¦ç³»ç®€å•ð ®¶è¯éƒ½ç”¨HTML,ä¸ç„¶å°±ç”¨PNG图åƒ',
-'mw_math_html' => 'å¯ä»¥ð ®¶è¯éƒ½ç”¨HTML,ä¸ç„¶å°±ç”¨PNG图åƒ',
-'mw_math_source' => '显示系TeXä»£ç  ï¼ˆæ–‡å­—æµè§ˆå™¨ç”¨ï¼‰',
-'mw_math_modern' => '新版æµè§ˆå™¨ð ®¶å»ºè®®',
-'mw_math_mathml' => 'å°½å¯èƒ½ç”¨MathML (试验中)',
-
-# Math errors
-'math_failure' => '分æžå¤±è´¥',
-'math_unknown_error' => '未知错误',
-'math_unknown_function' => '未知函数',
-'math_lexing_error' => 'å¥æ³•é”™è¯¯',
-'math_syntax_error' => '文法错误',
-'math_image_error' => 'PNG转æ¢å¤±è´¥ï¼›è¯·æ£€æŸ¥ç³»å¦è£…正嘞latex, dvips, gsåŒåˆ°convert',
-'math_bad_tmpdir' => '写伓正或建伓正数学公å¼ä¸´æ—¶ç›®å½•',
-'math_bad_output' => '写伓正或建伓正数学公å¼è¾“出目录',
-'math_notexvc' => '执行伓正"texvc";请å‚看 math/README å†é…置过。',
-
# Patrolling
'markaspatrolleddiff' => '标到系检查过𠮶',
'markaspatrolledtext' => '标到个篇文章系检查过𠮶',
@@ -1831,16 +1776,15 @@ $1',
'nextdiff' => '下一åªå·®å¼‚→',
# Media information
-'mediawarning' => "'''警告''': è¯ä¼“定个åªæ¡£æ¡ˆå«åˆ°æ¶æ„代ç ï¼Œæ‰§è¡Œä½¢è¯ä¼“定会æŸå倷𠮶系统。",
-'imagemaxsize' => '档案解释页𠮶图åƒå¤§ç»†é™åˆ¶åˆ°:',
-'thumbsize' => '缩略图大细:',
-'widthheightpage' => '$1×$2,$3页',
-'file-info' => '档案大细: $1, MIME 类型: $2',
-'file-info-size' => '$1 × $2 åƒç´ ï¼Œæ¡£æ¡ˆå¤§ç»†ï¼š$3 ,MIME类型:$4',
-'file-nohires' => '<small>冇更高分辨率𠮶图åƒã€‚</small>',
-'svg-long-desc' => 'SVG档案,表é¢å¤§ç»†ï¼š $1 × $2 åƒç´ ï¼Œæ¡£æ¡ˆå¤§ç»†ï¼š$3',
-'show-big-image' => '完整分辨率',
-'show-big-image-thumb' => '<small>个幅缩略图𠮶分辨率: $1 × $2 åƒç´ </small>',
+'mediawarning' => "'''警告''': è¯ä¼“定个åªæ¡£æ¡ˆå«åˆ°æ¶æ„代ç ï¼Œæ‰§è¡Œä½¢è¯ä¼“定会æŸå倷𠮶系统。",
+'imagemaxsize' => '档案解释页𠮶图åƒå¤§ç»†é™åˆ¶åˆ°:',
+'thumbsize' => '缩略图大细:',
+'widthheightpage' => '$1×$2,$3页',
+'file-info' => '档案大细: $1, MIME 类型: $2',
+'file-info-size' => '$1 × $2 åƒç´ ï¼Œæ¡£æ¡ˆå¤§ç»†ï¼š$3 ,MIME类型:$4',
+'file-nohires' => '<small>冇更高分辨率𠮶图åƒã€‚</small>',
+'svg-long-desc' => 'SVG档案,表é¢å¤§ç»†ï¼š $1 × $2 åƒç´ ï¼Œæ¡£æ¡ˆå¤§ç»†ï¼š$3',
+'show-big-image' => '完整分辨率',
# Special:NewFiles
'newimages' => '新建图åƒç”»å»Š',
@@ -1870,7 +1814,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => '阔',
@@ -1885,13 +1835,11 @@ $1',
'exif-ycbcrpositioning' => '黄色åŒæ´‹çº¢é…ç½®',
'exif-xresolution' => '横分辨率',
'exif-yresolution' => '直分辨率',
-'exif-resolutionunit' => 'Xè½´åŒY轴𠮶分辨率å•ä½',
'exif-stripoffsets' => '图åƒèµ„æ–™ä½ç½®',
'exif-rowsperstrip' => 'æ¯å¸¦è¡Œæ•°',
'exif-stripbytecounts' => 'æ¯åŽ‹ç¼©å¸¦byteæ•°',
'exif-jpeginterchangeformat' => 'JPEG SOI𠮶å移é‡',
'exif-jpeginterchangeformatlength' => 'JPEG𠮶byte数',
-'exif-transferfunction' => '转移功能',
'exif-whitepoint' => '白点色度',
'exif-primarychromaticities' => '主è¦ð ®¶è‰²åº¦',
'exif-ycbcrcoefficients' => '颜色空间转æ¢çŸ©é˜µç³»æ•°',
@@ -1910,7 +1858,6 @@ $1',
'exif-compressedbitsperpixel' => '图åƒåŽ‹ç¼©æ¨¡å¼',
'exif-pixelydimension' => '有效图åƒð ®¶é˜”',
'exif-pixelxdimension' => '有效图åƒð ®¶é«˜',
-'exif-makernote' => '厂商摘è¦',
'exif-usercomment' => '用户摘è¦',
'exif-relatedsoundfile' => '相关𠮶声气资料',
'exif-datetimeoriginal' => '资料创作时间',
@@ -1924,7 +1871,6 @@ $1',
'exif-exposureprogram' => 'æ›å…‰æ¨¡å¼',
'exif-spectralsensitivity' => '感光度',
'exif-isospeedratings' => 'ISO速率',
-'exif-oecf' => '光电转æ¢å› å­',
'exif-shutterspeedvalue' => '快门速度',
'exif-aperturevalue' => '光圈',
'exif-brightnessvalue' => '亮度',
@@ -1937,7 +1883,6 @@ $1',
'exif-focallength' => '焦è·',
'exif-subjectarea' => '主体区域',
'exif-flashenergy' => '闪光ç¯å¼ºåº¦',
-'exif-spatialfrequencyresponse' => '空间频率å应',
'exif-focalplanexresolution' => '焦平é¢X轴𠮶分辨率',
'exif-focalplaneyresolution' => '焦平é¢Y轴𠮶分辨率',
'exif-focalplaneresolutionunit' => '焦平é¢ð ®¶åˆ†è¾¨çŽ‡å•ä½',
@@ -1946,7 +1891,6 @@ $1',
'exif-sensingmethod' => '感光模å¼',
'exif-filesource' => '档案æ¥æº',
'exif-scenetype' => '场景类型',
-'exif-cfapattern' => 'CFA模å¼',
'exif-customrendered' => '自定义图åƒå¤„ç†',
'exif-exposuremode' => 'æ›å…‰æ¨¡å¼',
'exif-whitebalance' => '白平衡',
@@ -2125,14 +2069,12 @@ $1',
# External editor support
'edit-externally' => '用外部程å¼æ¥ç¼–辑个åªæ¡£æ¡ˆ',
-'edit-externally-help' => '请å‚看[http://www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解别𠮶内容。',
+'edit-externally-help' => '请å‚看[//www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解别𠮶内容。',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => '全部',
-'imagelistall' => '全部',
-'watchlistall2' => '全部',
-'namespacesall' => '全部',
-'monthsall' => '全部',
+'watchlistall2' => '全部',
+'namespacesall' => '全部',
+'monthsall' => '全部',
# E-mail address confirmation
'confirmemail' => '确认email地å€',
@@ -2224,12 +2166,12 @@ $1',
'watchlistedit-noitems' => '倷𠮶监视列表冇标题。',
'watchlistedit-normal-title' => '编写监视列表',
'watchlistedit-normal-legend' => '到监视列表移åŸæ ‡é¢˜',
-'watchlistedit-normal-explain' => '倷𠮶监视列表𠮶标题会到下底显到。想移åŸåªæ ‡é¢˜ï¼Œåˆ°ä½¢å‰å¤´å‹¾å–,跟到按å–移除标题。倷也能[[Special:Watchlist/raw|编辑原始监视列表]]或[[Special:Watchlist/clear|移除所全部标题]]。',
+'watchlistedit-normal-explain' => '倷𠮶监视列表𠮶标题会到下底显到。想移åŸåªæ ‡é¢˜ï¼Œåˆ°ä½¢å‰å¤´å‹¾å–,跟到按å–移除标题。倷也能[[Special:EditWatchlist/raw|编辑原始监视列表]]或[[Special:Watchlist/clear|移除所全部标题]]。',
'watchlistedit-normal-submit' => '移除标题',
'watchlistedit-normal-done' => '$1åªæ ‡é¢˜ä»Žå€·ð ®¶ç›‘视列表移åŸå˜ž:',
'watchlistedit-raw-title' => '编写原始监视列表',
'watchlistedit-raw-legend' => '编写原始监视列表',
-'watchlistedit-raw-explain' => '倷𠮶监视列表𠮶标题会到下底显到,哈能利用个åªè¡¨åŽ»åŠ è¿›åŒåˆ°ç§»é™¤æ ‡é¢˜ï¼›ä¸€è¡Œä¸€åªæ ‡é¢˜ã€‚扤完åŽï¼ŒæŒ‰æ›´æ–°ç›‘视列表。倷也能[[Special:Watchlist/edit|标准编辑器]]。',
+'watchlistedit-raw-explain' => '倷𠮶监视列表𠮶标题会到下底显到,哈能利用个åªè¡¨åŽ»åŠ è¿›åŒåˆ°ç§»é™¤æ ‡é¢˜ï¼›ä¸€è¡Œä¸€åªæ ‡é¢˜ã€‚扤完åŽï¼ŒæŒ‰æ›´æ–°ç›‘视列表。倷也能[[Special:EditWatchlist|标准编辑器]]。',
'watchlistedit-raw-titles' => '标题:',
'watchlistedit-raw-submit' => '更新监视列表',
'watchlistedit-raw-done' => '倷𠮶监视列表更新正嘞。',
@@ -2245,22 +2187,21 @@ $1',
'unknown_extension_tag' => '伓认得𠮶扩展标签 "$1"',
# Special:Version
-'version' => '版本',
-'version-extensions' => '装正𠮶æ’件',
-'version-specialpages' => '特别𠮶页é¢',
-'version-parserhooks' => '解æžå™¨é’©å­',
-'version-variables' => 'å˜é‡',
-'version-other' => '别𠮶',
-'version-mediahandlers' => '媒体处ç†ç¨‹åº',
-'version-extension-functions' => '扩展功能',
-'version-parser-extensiontags' => '解æžå™¨æ‰©å±•æ ‡ç­¾',
-'version-skin-extension-functions' => 'å°çš®æ’件功能',
-'version-hook-name' => 'é’©å­å',
-'version-hook-subscribedby' => '订阅人',
-'version-version' => '(版本 $1)',
-'version-license' => '许å¯è¯',
-'version-software' => '装正𠮶软件',
-'version-software-version' => '版本',
+'version' => '版本',
+'version-extensions' => '装正𠮶æ’件',
+'version-specialpages' => '特别𠮶页é¢',
+'version-parserhooks' => '解æžå™¨é’©å­',
+'version-variables' => 'å˜é‡',
+'version-other' => '别𠮶',
+'version-mediahandlers' => '媒体处ç†ç¨‹åº',
+'version-extension-functions' => '扩展功能',
+'version-parser-extensiontags' => '解æžå™¨æ‰©å±•æ ‡ç­¾',
+'version-hook-name' => 'é’©å­å',
+'version-hook-subscribedby' => '订阅人',
+'version-version' => '(版本 $1)',
+'version-license' => '许å¯è¯',
+'version-software' => '装正𠮶软件',
+'version-software-version' => '版本',
# Special:FilePath
'filepath' => '文件路径',
diff --git a/languages/messages/MessagesGan_hant.php b/languages/messages/MessagesGan_hant.php
index 6737916f..e558bc8e 100644
--- a/languages/messages/MessagesGan_hant.php
+++ b/languages/messages/MessagesGan_hant.php
@@ -28,29 +28,29 @@ $namespaceNames = array(
);
$specialPageAliases = array(
+ 'Ancientpages' => array( 'è€æ—©å—°é é¢' ),
'BrokenRedirects' => array( '壞å¥å—°é‡å®šå‘é ' ),
- 'Disambiguations' => array( '多義項' ),
'CreateAccount' => array( '新建隻帳戶' ),
+ 'Disambiguations' => array( '多義項' ),
+ 'Fewestrevisions' => array( '最少改動嗰é é¢' ),
+ 'Longpages' => array( '莽文章' ),
+ 'Mostcategories' => array( '最多分類嗰é é¢' ),
+ 'Mostimages' => array( '拕連得最多嗰檔案' ),
+ 'Mostlinked' => array( '拕連得最多嗰é é¢' ),
+ 'Mostlinkedcategories' => array( '拕連得最多嗰分類' ),
+ 'Mostlinkedtemplates' => array( '拕連得最多嗰模æ¿' ),
+ 'Mostrevisions' => array( '最多改動嗰é é¢' ),
+ 'Newpages' => array( '全新嗰é é¢' ),
'Preferences' => array( '個人設定' ),
- 'Watchlist' => array( '監視列表' ),
'Recentchanges' => array( '最æ™å—°æ”¹å‹•' ),
- 'Uncategorizedpages' => array( '冇歸類嗰é é¢' ),
+ 'Shortpages' => array( '細文章' ),
'Uncategorizedcategories' => array( '冇歸類嗰分類' ),
'Uncategorizedimages' => array( '冇歸類嗰檔案' ),
+ 'Uncategorizedpages' => array( '冇歸類嗰é é¢' ),
'Uncategorizedtemplates' => array( '冇歸類嗰模æ¿' ),
'Unusedcategories' => array( '冇用嗰分類' ),
'Unusedimages' => array( '冇用嗰檔案' ),
- 'Mostlinked' => array( '拕連得最多嗰é é¢' ),
- 'Mostlinkedcategories' => array( '拕連得最多嗰分類' ),
- 'Mostlinkedtemplates' => array( '拕連得最多嗰模æ¿' ),
- 'Mostimages' => array( '拕連得最多嗰檔案' ),
- 'Mostcategories' => array( '最多分類嗰é é¢' ),
- 'Mostrevisions' => array( '最多改動嗰é é¢' ),
- 'Fewestrevisions' => array( '最少改動嗰é é¢' ),
- 'Shortpages' => array( '細文章' ),
- 'Longpages' => array( '莽文章' ),
- 'Newpages' => array( '全新嗰é é¢' ),
- 'Ancientpages' => array( 'è€æ—©å—°é é¢' ),
+ 'Watchlist' => array( '監視列表' ),
);
$messages = array(
@@ -86,7 +86,7 @@ $messages = array(
'tog-oldsig' => 'ç¾æœ‰å—°ç°½å:',
'tog-fancysig' => 'æ¦ç°½å以維基字å°å¾…(冇自動連çµï¼‰',
'tog-externaleditor' => '默èªç”¨å¤–部編輯器(專家用嗰功能,è¦åˆ°å€·å—°é›»è…¦ä¸Šé ­ç‰¹åˆ¥å—°è¨­ç½®ä¸€ä¸‹ï¼‰',
-'tog-externaldiff' => '默èªç”¨å¤–部差異比較器(專家用嗰功能,è¦åˆ°æ±å—°é›»è…¦ä¸Šé ­ç‰¹åˆ¥å—°è¨­ç½®ä¸‹ã€‚[http://www.mediawiki.org/wiki/Manual:External_editors 別嗰信æ¯])',
+'tog-externaldiff' => '默èªç”¨å¤–部差異比較器(專家用嗰功能,è¦åˆ°æ±å—°é›»è…¦ä¸Šé ­ç‰¹åˆ¥å—°è¨­ç½®ä¸‹ã€‚[//www.mediawiki.org/wiki/Manual:External_editors 別嗰信æ¯])',
'tog-showjumplinks' => '啟用“跳到â€è¨ªå•é€£çµ',
'tog-uselivepreview' => '使用å³æ™‚é è¦½ï¼ˆJavaScript)(實驗中)',
'tog-forceeditsummary' => '冇改動注解時è¦åŒæˆ‘話',
@@ -183,15 +183,6 @@ $messages = array(
'index-category' => 'åšæ­£ç´¢å¼•å—°é é¢',
'noindex-category' => '冇åšç´¢å¼•å—°é é¢',
-'mainpagetext' => "'''安è£æ­£MediaWikiå˜ã€‚'''",
-'mainpagedocfooter' => 'åƒçœ‹[http://meta.wikimedia.org/wiki/Help:Contents 用戶指å—]裡頭會話到啷用wiki軟件
-
-== 開始使用 ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置設定列表]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 平常å•é¡Œè§£ç­”]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈email清單]',
-
'about' => '關於',
'article' => '文章',
'newwindow' => '(開隻新窗å£ï¼‰',
@@ -241,10 +232,10 @@ $messages = array(
'history' => '文章歷å²',
'history_short' => 'æ­·å²',
'updatedmarker' => '最末é“ç€è¦½å¾Œå—°æ”¹å‹•',
-'info_short' => '消æ¯',
'printableversion' => 'å¯æ‰“å°ç‰ˆæœ¬',
'permalink' => '永久連çµ',
'print' => '打å°',
+'view' => '眵',
'edit' => '編寫',
'create' => '創建',
'editthispage' => '編寫箇é ',
@@ -252,6 +243,7 @@ $messages = array(
'delete' => '刪å¥åŽ»',
'deletethispage' => '刪å¥ç®‡é ',
'undelete_short' => 'å刪å¥$1嗰修改',
+'viewdeleted_short' => '眵$1隻拕刪å¥å—°ç‰ˆæœ¬',
'protect' => 'ä¿è­·',
'protect_change' => '修改',
'protectthispage' => 'ä¿è­·ç®‡é ',
@@ -421,7 +413,6 @@ MySQL回到錯誤“$3: $4â€ã€‚',
'cascadeprotected' => '箇é å·²æ‹•ä¿è­·ï¼Œå› ç‚ºä½¢æ‹•ã€Œè¯éŽ–ä¿è­·ã€å—°{{PLURAL:$1|一隻|幾隻}}æ‹•ä¿è­·é åŒ…到:
$2',
'namespaceprotected' => "倷冇權編寫'''$1'''空間裡度嗰é é¢ã€‚",
-'customcssjsprotected' => '倷冇權編寫箇é ï¼Œä½¢å«åˆ°åˆ¥å—°ç”¨æˆ¶å—°å€‹äººè¨­å®šã€‚',
'ns-specialprotected' => '編寫伓正{{ns:special}}空間嗰é é¢ã€‚',
# Virus scanner
@@ -453,6 +444,7 @@ $2',
'createaccount' => '新開隻帳戶',
'gotaccount' => "有帳戶哩? '''$1'''。",
'gotaccountlink' => '登入',
+'userlogin-resetlink' => '誺記æ±å—°ç™»éŒ„ä¿¡æ¯ï¼Ÿ',
'createaccountmail' => '通éŽemail',
'createaccountreason' => '原因:',
'badretype' => 'æ±æºå—°å¯†ç¢¼ä¼“åˆã€‚',
@@ -464,7 +456,7 @@ $2',
'loginsuccesstitle' => '登入正哩',
'loginsuccess' => 'æ±æ¦åˆ°"$1"嗰身份登到{{SITENAME}}。',
'nosuchuser' => '箇首冇å«"$1"嗰用戶。望å–倷嗰拼寫,è¦ä¼“建éŽéš»æ–°å¸³æˆ¶ã€‚',
-'nosuchusershort' => '箇首冇å«"<nowiki>$1</nowiki>"嗰用戶。請望å–倷嗰拼寫。',
+'nosuchusershort' => '箇首冇å«"$1"嗰用戶。請望å–倷嗰拼寫。',
'nouserspecified' => 'æ±è¦æ“¢æ­£ä¸€éš»ç”¨æˆ¶å。',
'wrongpassword' => 'æ±å—°å¯†ç¢¼éŒ¯èª¤ä¼“佮,請較éŽå–著。',
'wrongpasswordempty' => 'æ±å†‡è¼¸å…¥å¯†ç¢¼ï¼Œè«‹è¼ƒéŽå–著。',
@@ -492,7 +484,7 @@ $2',
è¦ä¿‚帳戶創建ä¸å°å—°è©±ï¼Œå€·å°±èŽ«æ­ç®‡éš»æ¶ˆæ¯ã€‚',
'loginlanguagelabel' => '語言:$1',
-# Password reset dialog
+# Change password dialog
'resetpass' => '設éŽå¸³æˆ¶å¯†ç¢¼',
'resetpass_announce' => '倷係用到臨時email嗰代碼登入嗰。è¦ç™»æ­£å…¥ï¼Œå€·è¦åˆ°ç®‡é¦–設定隻新密碼:',
'resetpass_header' => '設éŽå¯†ç¢¼',
@@ -516,8 +508,6 @@ $2',
'extlink_tip' => '外部連çµï¼ˆé ­ä¸ŠåŠ  http://)',
'headline_sample' => '標題文字',
'headline_tip' => '二級標題',
-'math_sample' => '到箇首扻入數學公å¼',
-'math_tip' => 'æ•¸å­¸å…¬å¼ ï¼ˆLaTeX)',
'nowiki_sample' => '到箇首扻入éžæ ¼å¼æ–‡æœ¬',
'nowiki_tip' => '扻入éžæ ¼å¼æ–‡æœ¬',
'image_tip' => '扻進文件',
@@ -785,7 +775,7 @@ $2',
'shown-title' => 'æ¯é é¡¯ç¤º$1éš»{{PLURAL:$1|çµæžœ}}',
'viewprevnext' => '望å–($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-exists' => "'''箇隻wiki已有一隻å«ã€Œ[[:$1]]ã€å—°é ã€‚'''",
-'searchmenu-new' => "'''嘚箇隻wiki上建立「[[:$1]]ã€é ï¼''",
+'searchmenu-new' => "'''嘚箇隻wiki上建立「[[:$1]]ã€é ï¼'''",
'searchhelp-url' => 'Help:説明',
'searchprofile-articles' => '內容é ',
'searchprofile-project' => '幫助åŒå¾—計劃é ',
@@ -838,7 +828,6 @@ $2',
'changepassword' => '改éŽå¯†ç¢¼',
'prefs-skin' => 'çš®',
'skin-preview' => '(é è¦½ï¼‰',
-'prefs-math' => '數學公å¼',
'datedefault' => '默èªé …ç›®',
'prefs-datetime' => '日期åŒåˆ°æ™‚é–“',
'prefs-personal' => '用戶介紹',
@@ -854,8 +843,6 @@ $2',
'columns' => '豎:',
'searchresultshead' => '設置尋到嗰çµæžœ',
'resultsperpage' => '設置尋到嗰連çµæ•¸',
-'contextlines' => '設置尋到嗰行數:',
-'contextchars' => '設置尋到嗰字數:',
'stub-threshold' => '<a href="#" class="stub">細文連çµ</a>æ ¼å¼é–€æª»:',
'recentchangesdays' => '最近更改中嗰顯示日數:',
'recentchangescount' => '最近更改中嗰編輯數:',
@@ -880,7 +867,8 @@ $2',
'badsiglength' => '花åå’長?佢嗰長度è¦å°‘éŽ$1隻字符。',
'email' => 'é›»å­éƒµä»¶',
'prefs-help-realname' => '真åä¿‚é¸å¡«å—°ï¼Œè¦ä¿‚倷填嘞,倷嗰作å“就會標到倷嗰å字。',
-'prefs-help-email' => 'emailä¿‚é¸å¡«å—°ï¼Œä½¢å¯ä»¥è®“伓èªå¾—倷嗰人通éŽemailè¯ç¹«æ­£å€·ã€‚',
+'prefs-help-email' => 'emailä¿‚é¸å¡«å—°ï¼Œä½¢å¯ä»¥ç­‰æ±èªºè¨˜å¯†ç¢¼å—°æ™‚間寄email告誦æ±ã€‚',
+'prefs-help-email-others' => 'æ±ä¸å…¬é–‹è‡ªå®¶å—°ç”¨æˆ¶èº«åˆ†ä¹Ÿå¾—通éŽç”¨æˆ¶é æˆ–用戶談詑é è·Ÿå¾—æ±è¯ç¹«ã€‚',
'prefs-help-email-required' => '需è¦é›»å­éƒµä»¶åœ°å€ã€‚',
# User rights
@@ -1028,10 +1016,6 @@ $2',
'destfilename' => '目標檔案å:',
'watchthisupload' => 'çœåˆ°ç®‡é ',
'filewasdeleted' => 'å…ˆå‰æœ‰éš»åŒå檔案上傳後åˆæ‹•åˆªå¥å˜žã€‚上傳箇隻檔案之å‰å€·éžè¦æª¢æŸ¥$1。',
-'upload-wasdeleted' => "'''警告: 倷於今上傳嗰檔案係先å‰åˆªéŽå—°ã€‚'''
-
-倷è¦æƒ³æ­£ä¿‚真嗰上傳箇隻檔案。
-為到方便起見,箇隻檔案嗰刪除記錄到下底æ供嘞:",
'filename-bad-prefix' => "倷上傳嗰檔案å係以'''\"\$1\"'''åšé–‹é ­å—°ï¼Œé€šå¸¸ç®‡ç¨®å†‡æ„義嗰å字係數碼相機度嗰自動編排。請到倷嗰檔案æ€éŽéš»æ›´åŠ æœ‰æ„義嗰å字。",
'upload-success-subj' => '上傳正嘞',
@@ -1316,9 +1300,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlistanontext' => 'è«‹$1眵å–或改å–倷嗰監視列表。',
'watchnologin' => '冇登入',
'watchnologintext' => '倷è¦[[Special:UserLogin|登入]]èµ·æ‰æ”¹å¾—正倷嗰監視列表。',
-'addedwatch' => '加到嘞監視列表',
'addedwatchtext' => "é é¢ã€Œ[[:$1]]ã€åŠ åˆ°å˜žå€·å—°[[Special:Watchlist|監視列表]]。箇é åŒä½¢å—°è¨Žè«–é å—°å…¨éƒ¨æ”¹å‹•ä»¥å¾Œéƒ½æœƒåˆ—到許首,佢會用'''ç²—é«”''' 列到[[Special:RecentChanges|最近更改]]讓倷更加容易識別。 倷以後è¦ä¿‚拿佢到監視列表刪åŸä½¢å—°è©±ï¼Œå°±åˆ°å°Žèˆªæ¢é»žå–「莫çœåˆ°ã€ã€‚",
-'removedwatch' => '莫çœåˆ°',
'removedwatchtext' => 'é é¢[[:$1]]到[[Special:Watchlist|倷嗰監視列表]]刪åŸå“©ã€‚',
'watch' => 'çœåˆ°',
'watchthispage' => 'çœåˆ°ç®‡é ',
@@ -1361,9 +1343,9 @@ $NEWPAGE
本站: $PAGEEDITOR_WIKI 今後伓會通知倷將來嗰改動,除éžæŽ¥åˆ°ä¾†åˆ°ç®‡é ã€‚倷也能設éŽå€·å…¨éƒ¨ç›£è¦–é å—°é€šçŸ¥æ¨™è¨˜ã€‚
-{{SITENAME}}通知系統 – 會改åŸå€·å—°ç›£è¦–列表設置,請去 {{fullurl:{{#special:Watchlist}}/edit}}
+{{SITENAME}}通知系統 – 會改åŸå€·å—°ç›£è¦–列表設置,請去 {{canonicalurl:{{#special:EditWatchlist}}}}
-回饋åŒåˆ°åˆ¥å—°èª¬æ˜Ž: {{fullurl:{{MediaWiki:Helppage}}}}',
+回饋åŒåˆ°åˆ¥å—°èª¬æ˜Ž: {{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => '刪åŸé é¢',
@@ -1376,9 +1358,9 @@ $NEWPAGE
'delete-legend' => '刪åŸåŽ»',
'historywarning' => "'''警告''': 倷è¦åˆªåŸå—°é é¢å«åˆ°$1到{{PLURAL:$1|修訂|修訂}}å—°æ­·å²",
'confirmdeletetext' => '仰上倷就è¦æ°¸ä¹…刪åŸè³‡æ–™åº«å—°ä¸€éš»é é¢æˆ–圖åƒåŒä½¢å—°æ­·å²ã€‚請確定倷è¦å™‰åšï¼Œå“ˆè¦æ›‰å¾—佢嗰後果,更加伓能é•å[[{{MediaWiki:Policy-url}}]]。',
-'actioncomplete' => '扤正嘞',
+'actioncomplete' => '舞正哩',
'actionfailed' => 'æ“作冇舞正',
-'deletedtext' => '"<nowiki>$1</nowiki>"刪åŸå˜žã€‚最æ™å—°åˆªé™¤è¨˜éŒ„請望$2。',
+'deletedtext' => '"$1"刪åŸå˜žã€‚最æ™å—°åˆªé™¤è¨˜éŒ„請望$2。',
'deletedarticle' => '"[[$1]]"刪åŸå˜ž',
'dellogpage' => '刪除日誌',
'dellogpagetext' => '下底係最æ™åˆªé™¤å—°è¨˜éŒ„列表:',
@@ -1424,7 +1406,7 @@ $NEWPAGE
'protectexpiry' => '期é™:',
'protect_expiry_invalid' => '到期時間無效。',
'protect_expiry_old' => '到期時間已éŽã€‚',
-'protect-text' => "倷到箇首能ç€è¦½æˆ–修改é é¢'''<nowiki>$1</nowiki>'''å—°ä¿è­·ç´šåˆ¥ã€‚",
+'protect-text' => "倷到箇首能ç€è¦½æˆ–修改é é¢'''$1'''å—°ä¿è­·ç´šåˆ¥ã€‚",
'protect-locked-blocked' => "倷改伓正拕å°éŽ–時嗰ä¿è­·ç´šåˆ¥ã€‚下底係'''$1'''ç¾ä»Šå—°ä¿è­·ç´šåˆ¥:",
'protect-locked-dblock' => "資料庫鎖到嘞就改伓正ä¿è­·ç´šåˆ¥ã€‚下底係'''$1'''ç¾ä»Šå—°ä¿è­·ç´šåˆ¥:",
'protect-locked-access' => "倷嗰許å¯æ¬Šæ”¹ä¼“æ­£ä¿è­·ç´šåˆ¥ã€‚
@@ -1545,7 +1527,6 @@ $1',
# Block/unblock
'blockip' => 'å°åˆ°IP地å€',
'blockiptext' => '用下底嗰表格去阻止æŸä¸€IP嗰修改許å¯æ¬Šã€‚除éžå€·ä¿‚為到怕佢亂扤,接到éžè¦ç¬¦åˆ[[{{MediaWiki:Policy-url}}|守則]]å—°æ¢ä»¶ä¸‹æ‰èƒ½å™‰åšã€‚請到下底話隻確切原因(比如引用一隻拕破壞嗰é é¢ï¼‰ã€‚',
-'ipaddress' => 'IP地å€:',
'ipadressorusername' => 'IP地å€æˆ–用戶å:',
'ipbexpiry' => '期é™:',
'ipbreason' => '原因:',
@@ -1558,7 +1539,6 @@ $1',
** 嚇人ï¼é¨·æ“¾åˆ¥å—°
** 濫用帳號
** 亂起用戶å',
-'ipbanononly' => '光防到匿å用戶',
'ipbcreateaccount' => '防止開新帳號',
'ipbemailban' => '防止用戶發email',
'ipbenableautoblock' => '自動å°éŽ–箇隻用戶最æ™å—°IP,åŒå¾Œä¾†ä½¢ç·¨å¯«ç”¨éŽå—°åœ°å€',
@@ -1582,9 +1562,7 @@ $1',
'unblocked-id' => 'å°ç¦$1拕刪åŸå˜ž',
'ipblocklist' => 'æ‹•å°ç”¨æˆ¶å—°åå–®',
'ipblocklist-legend' => 'å°‹å–æ‹•å°éŽ–嗰用戶',
-'ipblocklist-username' => '用戶å或IP地å€:',
'ipblocklist-submit' => 'å°‹',
-'blocklistline' => '$1,$2å°åˆ°$3 ($4)',
'infiniteblock' => '伓é™æœŸ',
'expiringblock' => '$1 $2到期',
'anononlyblock' => 'å–®é™åˆ¶åŒ¿å用戶',
@@ -1600,7 +1578,7 @@ $1',
'autoblocker' => '倷åŒ"[[$1]]"共用一隻IP,故係倷也拕自動鎖到嘞。$1å°éŽ–嗰緣故係"$2"。',
'blocklogpage' => 'å°éŽ–日誌',
'blocklogentry' => '[[$1]]æ‹•å°åˆ°$3 ,çµæŸæ™‚間到$2',
-'blocklogtext' => '箇係用戶å°éŽ–åŒè§£å°æ“作嗰日誌。拕自動å°éŽ–å—°IP冇列出。請åƒçœ‹[[Special:IPBlockList|æ‹•å°IP地å€åˆ—表]]。',
+'blocklogtext' => '箇係用戶å°éŽ–åŒè§£å°æ“作嗰日誌。拕自動å°éŽ–å—°IP冇列出。請åƒçœ‹[[Special:BlockList|æ‹•å°IP地å€åˆ—表]]。',
'unblocklogentry' => '$1 拕解å°å˜ž',
'block-log-flags-anononly' => 'å–®é™åˆ¶åŒ¿å用戶',
'block-log-flags-nocreate' => 'ç¦æ­¢ç®‡éš»IP/用戶新開帳戶',
@@ -1702,7 +1680,7 @@ $1',
'allmessagesdefault' => '默èªæ–‡å­—',
'allmessagescurrent' => '眼å‰å—°æ–‡å­—',
'allmessagestext' => '箇首列到全部制定得正嗰系統界é¢ã€‚
-Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:系統界é¢åŠŸèƒ½'''é—œåŸå˜žï¼ˆ'''\$wgUseDatabaseMessages''')。",
# Thumbnails
@@ -1784,7 +1762,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-n-currentevents' => 'æ供目å‰å—°äº‹å—°èƒŒæ™¯',
'tooltip-n-recentchanges' => '列出箇隻網站該æœå­å—°æ”¹å‹•',
'tooltip-n-randompage' => '隨機載進一隻é é¢',
-'tooltip-n-help' => '求人幫',
+'tooltip-n-help' => '尋人幫',
'tooltip-t-whatlinkshere' => '列出全部åŒç®‡é é€£åˆ°å—°é é¢',
'tooltip-t-recentchangeslinked' => '從箇é é€£å‡ºå—°å…¨éƒ¨é é¢å—°æ”¹å‹•',
'tooltip-feed-rss' => '箇é å—°RSS訂閱',
@@ -1826,9 +1804,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'monobook.js' => '/* 伓å†ä½¿ç”¨ï¼›è«‹ç”¨[[MediaWiki:common.js]] */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata到箇隻æœå‹™å™¨ç”¨ä¼“正。',
-'nocreativecommons' => 'Creative Commons RDF metadata到箇隻æœå‹™å™¨ç”¨ä¼“正。',
-'notacceptable' => '箇隻網站æœå‹™å™¨æ供伓正倷嗰用戶端èªå¾—å—°æ ¼å¼ã€‚',
+'notacceptable' => '箇隻網站æœå‹™å™¨æ供伓正倷嗰用戶端èªå¾—å—°æ ¼å¼ã€‚',
# Attribution
'anonymous' => '{{SITENAME}}嗰匿å用戶',
@@ -1850,33 +1826,6 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'spam_reverting' => '去歸冇包連到$1最æ™å—°ç‰ˆæœ¬',
'spam_blanking' => '全部包å«é€£åˆ°$1嗰改動,留空',
-# Info page
-'infosubtitle' => 'é é¢å—°ä¿¡æ¯',
-'numedits' => '編輯數 (文章): $1',
-'numtalkedits' => '編輯數 (討論é ï¼‰: $1',
-'numwatchers' => '監視人數: $1',
-'numauthors' => '作者人數 (文章): $1',
-'numtalkauthors' => '作者人數 (討論é ï¼‰: $1',
-
-# Math options
-'mw_math_png' => '全部使用PNG圖åƒ',
-'mw_math_simple' => 'è¦ä¿‚簡單嗰話都用HTML,ä¸ç„¶å°±ç”¨PNG圖åƒ',
-'mw_math_html' => 'å¯ä»¥å—°è©±éƒ½ç”¨HTML,ä¸ç„¶å°±ç”¨PNG圖åƒ',
-'mw_math_source' => '顯示係TeX代碼 (文字ç€è¦½å™¨ç”¨ï¼‰',
-'mw_math_modern' => '新版ç€è¦½å™¨å—°å»ºè­°',
-'mw_math_mathml' => '儘å¯èƒ½ç”¨MathML (試驗中)',
-
-# Math errors
-'math_failure' => '分æžå¤±æ•—',
-'math_unknown_error' => '未知錯誤',
-'math_unknown_function' => '未知函數',
-'math_lexing_error' => 'å¥æ³•éŒ¯èª¤',
-'math_syntax_error' => '文法錯誤',
-'math_image_error' => 'PNG轉æ›å¤±æ•—;請檢查係å¦è£æ­£å˜žlatex, dvips, gsåŒåˆ°convert',
-'math_bad_tmpdir' => '寫伓正或建伓正數學公å¼è‡¨æ™‚目錄',
-'math_bad_output' => '寫伓正或建伓正數學公å¼è¼¸å‡ºç›®éŒ„',
-'math_notexvc' => '執行伓正"texvc";請åƒçœ‹ math/README å†é…ç½®éŽã€‚',
-
# Patrolling
'markaspatrolleddiff' => '標到係檢查éŽå—°',
'markaspatrolledtext' => '標到箇篇文章係檢查éŽå—°',
@@ -1909,16 +1858,15 @@ $1',
'nextdiff' => '後背嗰差異→',
# Media information
-'mediawarning' => "'''警告''': 話伓定箇隻檔案å«åˆ°æƒ¡æ„代碼,執行佢話伓定會æ壞倷嗰系統。",
-'imagemaxsize' => '檔案解釋é å—°åœ–åƒå¤§ç´°é™åˆ¶åˆ°:',
-'thumbsize' => '縮略圖大細:',
-'widthheightpage' => '$1×$2,$3é ',
-'file-info' => '檔案大細: $1, MIME 類型: $2',
-'file-info-size' => '$1 × $2 åƒç´ ï¼Œæª”案大細:$3 ,MIME類型:$4',
-'file-nohires' => '<small>冇更高解åƒåº¦å—°åœ–åƒã€‚</small>',
-'svg-long-desc' => 'SVG檔案,表é¢å¤§ç´°ï¼š $1 × $2 åƒç´ ï¼Œæª”案大細:$3',
-'show-big-image' => '完整解æžåº¦',
-'show-big-image-thumb' => '<small>箇幅縮略圖嗰解æžåº¦: $1 × $2 åƒç´ </small>',
+'mediawarning' => "'''警告''': 話伓定箇隻檔案å«åˆ°æƒ¡æ„代碼,執行佢話伓定會æ壞倷嗰系統。",
+'imagemaxsize' => '檔案解釋é å—°åœ–åƒå¤§ç´°é™åˆ¶åˆ°:',
+'thumbsize' => '縮略圖大細:',
+'widthheightpage' => '$1×$2,$3é ',
+'file-info' => '檔案大細: $1, MIME 類型: $2',
+'file-info-size' => '$1 × $2 åƒç´ ï¼Œæª”案大細:$3 ,MIME類型:$4',
+'file-nohires' => '<small>冇更高解åƒåº¦å—°åœ–åƒã€‚</small>',
+'svg-long-desc' => 'SVG檔案,表é¢å¤§ç´°ï¼š $1 × $2 åƒç´ ï¼Œæª”案大細:$3',
+'show-big-image' => '完整解æžåº¦',
# Special:NewFiles
'newimages' => '新建圖åƒç•«å»Š',
@@ -1941,14 +1889,20 @@ $1',
'metadata-help' => '箇隻檔案å«åˆ°é¡å¤–å—°ä¿¡æ¯ã€‚å’å¯èƒ½ä¿‚數碼相機或掃æ儀扤得。 è¦ä¿‚改å¥ç®‡éš»æª”å—°æºæª”案,佢嗰資料伓見得會åŒæ”¹éŽå¾Œä¸€æ¨£ã€‚',
'metadata-expand' => '顯到詳細資料',
'metadata-collapse' => '弆到詳細資料',
-'metadata-fields' => '箇隻信æ¯åˆ—到嗰 EXIF 元數據表會å«åˆ°åœ–片顯示é é¢è£¡é ­, è¦ä¿‚元數據表扤壞嘞就åªæœƒé¡¯ä¸‹åº•å—°è³‡æ–™ï¼Œåˆ¥å—°å…ƒæ•¸æ“šæœƒè‡ªå‹•å¼†åˆ°ã€‚
+'metadata-fields' => '箇隻信æ¯åˆ—到嗰 EXIF 元數據表會å«åˆ°åœ–片顯示é é¢è£¡é ­ï¼Œè¦ä¿‚元數據表扤壞哩就光會顯下底嗰資料,別嗰元數據會自動弆到。
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'é—Š',
@@ -1963,13 +1917,11 @@ $1',
'exif-ycbcrpositioning' => '黃色åŒæ´‹ç´…é…ç½®',
'exif-xresolution' => '橫解æžåº¦',
'exif-yresolution' => '直解æžåº¦',
-'exif-resolutionunit' => 'X軸åŒY軸嗰解æžåº¦å–®ä½',
'exif-stripoffsets' => '圖åƒè³‡æ–™ä½ç½®',
'exif-rowsperstrip' => 'æ¯å¸¶è¡Œæ•¸',
'exif-stripbytecounts' => 'æ¯å£“縮帶byte數',
'exif-jpeginterchangeformat' => 'JPEG SOIå—°å移é‡',
'exif-jpeginterchangeformatlength' => 'JPEG嗰byte數',
-'exif-transferfunction' => '轉移功能',
'exif-whitepoint' => '白點色度',
'exif-primarychromaticities' => '主è¦å—°è‰²åº¦',
'exif-ycbcrcoefficients' => 'é¡è‰²ç©ºé–“轉æ›çŸ©é™£ç³»æ•¸',
@@ -1988,7 +1940,6 @@ $1',
'exif-compressedbitsperpixel' => '圖åƒå£“縮模å¼',
'exif-pixelydimension' => '有效圖åƒå—°é—Š',
'exif-pixelxdimension' => '有效圖åƒå—°é«˜',
-'exif-makernote' => '廠商摘è¦',
'exif-usercomment' => '用戶摘è¦',
'exif-relatedsoundfile' => '相關嗰è²æ°£è³‡æ–™',
'exif-datetimeoriginal' => '資料創作時間',
@@ -2002,7 +1953,6 @@ $1',
'exif-exposureprogram' => 'æ›å…‰æ¨¡å¼',
'exif-spectralsensitivity' => '感光度',
'exif-isospeedratings' => 'ISO速率',
-'exif-oecf' => '光電轉æ›å› æ•¸',
'exif-shutterspeedvalue' => '快門速度',
'exif-aperturevalue' => '光圈',
'exif-brightnessvalue' => '亮度',
@@ -2015,7 +1965,6 @@ $1',
'exif-focallength' => '焦è·',
'exif-subjectarea' => '主體å€åŸŸ',
'exif-flashenergy' => '閃光燈強度',
-'exif-spatialfrequencyresponse' => '空間頻率å應',
'exif-focalplanexresolution' => '焦平é¢X軸嗰解æžåº¦',
'exif-focalplaneyresolution' => '焦平é¢Y軸嗰解æžåº¦',
'exif-focalplaneresolutionunit' => '焦平é¢å—°è§£æžåº¦å–®ä½',
@@ -2024,7 +1973,6 @@ $1',
'exif-sensingmethod' => '感光模å¼',
'exif-filesource' => '檔案來æº',
'exif-scenetype' => '場景類型',
-'exif-cfapattern' => 'CFA模å¼',
'exif-customrendered' => '自定義圖åƒè™•ç†',
'exif-exposuremode' => 'æ›å…‰æ¨¡å¼',
'exif-whitebalance' => '白平衡',
@@ -2203,14 +2151,12 @@ $1',
# External editor support
'edit-externally' => '用外部程å¼ä¾†ç·¨è¼¯ç®‡éš»æª”案',
-'edit-externally-help' => 'è«‹åƒçœ‹[http://www.mediawiki.org/wiki/Manual:External_editors 設置步驟]瞭解別嗰內容。',
+'edit-externally-help' => 'è«‹åƒçœ‹[//www.mediawiki.org/wiki/Manual:External_editors 設置步驟]瞭解別嗰內容。',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => '全部',
-'imagelistall' => '全部',
-'watchlistall2' => '全部',
-'namespacesall' => '全部',
-'monthsall' => '全部',
+'watchlistall2' => '全部',
+'namespacesall' => '全部',
+'monthsall' => '全部',
# E-mail address confirmation
'confirmemail' => '確èªemail地å€',
@@ -2302,12 +2248,12 @@ $1',
'watchlistedit-noitems' => '倷嗰監視列表冇標題。',
'watchlistedit-normal-title' => '編寫監視列表',
'watchlistedit-normal-legend' => '到監視列表移åŸæ¨™é¡Œ',
-'watchlistedit-normal-explain' => '倷嗰監視列表嗰標題會到下底顯到。想移åŸéš»æ¨™é¡Œï¼Œåˆ°ä½¢å‰é ­å‹¾å–,跟到按å–移除標題。倷也能[[Special:Watchlist/raw|編輯原始監視列表]]或[[Special:Watchlist/clear|移除所全部標題]]。',
+'watchlistedit-normal-explain' => '倷嗰監視列表嗰標題會到下底顯到。想移åŸéš»æ¨™é¡Œï¼Œåˆ°ä½¢å‰é ­å‹¾å–,跟到按å–移除標題。倷也能[[Special:EditWatchlist/raw|編輯原始監視列表]]或[[Special:Watchlist/clear|移除所全部標題]]。',
'watchlistedit-normal-submit' => '移除標題',
'watchlistedit-normal-done' => '$1隻標題從倷嗰監視列表移åŸå˜ž:',
'watchlistedit-raw-title' => '編寫原始監視列表',
'watchlistedit-raw-legend' => '編寫原始監視列表',
-'watchlistedit-raw-explain' => '倷嗰監視列表嗰標題會到下底顯到,哈能利用箇隻表去加進åŒåˆ°ç§»é™¤æ¨™é¡Œï¼›ä¸€è¡Œä¸€éš»æ¨™é¡Œã€‚扤完後,按更新監視列表。倷也能[[Special:Watchlist/edit|標準編輯器]]。',
+'watchlistedit-raw-explain' => '倷嗰監視列表嗰標題會到下底顯到,哈能利用箇隻表去加進åŒåˆ°ç§»é™¤æ¨™é¡Œï¼›ä¸€è¡Œä¸€éš»æ¨™é¡Œã€‚扤完後,按更新監視列表。倷也能[[Special:EditWatchlist|標準編輯器]]。',
'watchlistedit-raw-titles' => '標題:',
'watchlistedit-raw-submit' => '更新監視列表',
'watchlistedit-raw-done' => '倷嗰監視列表更新正嘞。',
@@ -2324,22 +2270,21 @@ $1',
'duplicate-defaultsort' => '\'\'\'警告:\'\'\'é è¨­å—°æŽ’åºéµ "$2" 覆蓋先頭嗰é è¨­æŽ’åºéµ "$1"。',
# Special:Version
-'version' => '版本',
-'version-extensions' => 'è£æ­£å—°æ’件',
-'version-specialpages' => '特別嗰é é¢',
-'version-parserhooks' => '解æžå™¨é‰¤å­',
-'version-variables' => '變é‡',
-'version-other' => '別嗰',
-'version-mediahandlers' => '媒體處ç†ç¨‹åº',
-'version-extension-functions' => '擴展功能',
-'version-parser-extensiontags' => '解æžå™¨æ“´å±•æ¨™ç±¤',
-'version-skin-extension-functions' => 'å°çš®æ’件功能',
-'version-hook-name' => '鉤å­å',
-'version-hook-subscribedby' => '訂閱人',
-'version-version' => '(版本 $1)',
-'version-license' => '許å¯è­‰',
-'version-software' => 'è£æ­£å—°è»Ÿä»¶',
-'version-software-version' => '版本',
+'version' => '版本',
+'version-extensions' => 'è£æ­£å—°æ’件',
+'version-specialpages' => '特別嗰é é¢',
+'version-parserhooks' => '解æžå™¨é‰¤å­',
+'version-variables' => '變é‡',
+'version-other' => '別嗰',
+'version-mediahandlers' => '媒體處ç†ç¨‹åº',
+'version-extension-functions' => '擴展功能',
+'version-parser-extensiontags' => '解æžå™¨æ“´å±•æ¨™ç±¤',
+'version-hook-name' => '鉤å­å',
+'version-hook-subscribedby' => '訂閱人',
+'version-version' => '(版本 $1)',
+'version-license' => '許å¯è­‰',
+'version-software' => 'è£æ­£å—°è»Ÿä»¶',
+'version-software-version' => '版本',
# Special:FilePath
'filepath' => '文件路徑',
diff --git a/languages/messages/MessagesGd.php b/languages/messages/MessagesGd.php
index 8f3fbcde..f9064140 100644
--- a/languages/messages/MessagesGd.php
+++ b/languages/messages/MessagesGd.php
@@ -47,8 +47,8 @@ $messages = array(
'tog-shownumberswatching' => "Nochd àireamh nan cleachdaichean a tha a' cumail sùil air",
'tog-oldsig' => 'An t-earr-sgrìobhadh làithreach:',
'tog-fancysig' => 'Làimhsich an t-earr-sgrìobhadh mar wikitext (gun cheangal leis fhèin)',
-'tog-externaleditor' => "Cleachd deasaichear on taobh a-muigh a ghnàth (do shàr-eòlaichean a-mhàin, feumaidh seo roghainnean sònraichte air a' choimpiutair agad [http://www.mediawiki.org/wiki/Manual:External_editors Barrachd fiosrachaidh.])",
-'tog-externaldiff' => "Cleachd diff on taobh a-muigh a ghnàth (do shàr-eòlaichean a-mhàin, feumaidh seo roghainnean sònraichte air a' choimpiutair agad. [http://www.mediawiki.org/wiki/Manual:External_editors Barrachd fiosrachaidh.])",
+'tog-externaleditor' => "Cleachd deasaichear on taobh a-muigh a ghnàth (do shàr-eòlaichean a-mhàin, feumaidh seo roghainnean sònraichte air a' choimpiutair agad [//www.mediawiki.org/wiki/Manual:External_editors Barrachd fiosrachaidh.])",
+'tog-externaldiff' => "Cleachd diff on taobh a-muigh a ghnàth (do shàr-eòlaichean a-mhàin, feumaidh seo roghainnean sònraichte air a' choimpiutair agad. [//www.mediawiki.org/wiki/Manual:External_editors Barrachd fiosrachaidh.])",
'tog-showjumplinks' => 'Cuir an comas ceanglaichean so-inntrigeachd "gearr leum gu"',
'tog-uselivepreview' => 'Cleachd an ro-shealladh beò (feumaidh seo JavaScript) (deuchainneach)',
'tog-forceeditsummary' => "Cuir ceist nuair a dh'fhàgas mi gearr-chunntas an deasachaidh bàn",
@@ -143,14 +143,7 @@ $messages = array(
'listingcontinuesabbrev' => 'leant.',
'index-category' => "Duilleagan air a' chlàr-innse",
'noindex-category' => "Duilleagan nach eil air a' chlàr-innse",
-
-'mainpagetext' => "'''Chaidh MediaWiki a stàladh gu soirbheachail.'''",
-'mainpagedocfooter' => "Cuir sùil air [http://meta.wikimedia.org/wiki/Help:Contents treòir nan cleachdaichean] airson fiosrachadh mu chleachdadh a' bhathar-bhog wiki.
-
-== Toiseach tòiseachaidh ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liosta suidheachadh nan roghainnean]
-* [http://www.mediawiki.org/wiki/Manual:FAQ CÀBHA MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liosta puist nan sgaoilidhean MediaWiki]",
+'broken-file-category' => 'Duilleagan sa bheil ceanglaichean faidhle a tha briste',
'about' => 'Mu',
'article' => 'Duilleag susbainte',
@@ -202,10 +195,10 @@ $messages = array(
'history' => 'Eachdraidh na duilleige',
'history_short' => 'Eachdraidh',
'updatedmarker' => 'air ùrachadh on turas mu dheireadh a thadhail mi air',
-'info_short' => 'Fiosrachadh',
'printableversion' => 'Tionndadh a ghabhas a chlò-bhualadh',
'permalink' => 'Ceangal buan',
'print' => 'Clò-bhuail',
+'view' => 'Seall',
'edit' => 'Deasaich',
'create' => 'Cruthaich',
'editthispage' => 'Deasaich an duilleag seo',
@@ -213,6 +206,7 @@ $messages = array(
'delete' => 'Sguab às',
'deletethispage' => 'Sguab às an duilleag seo',
'undelete_short' => "Neo-dhèan sguabadh às de {{PLURAL:$1|dh'aon deasachadh|$1 dheasachadh|$1 deasachadh|$1 dheasachadh|$1 deasachaidhean|$1 deasachadh}}",
+'viewdeleted_short' => 'Seall {{PLURAL:$1|aon deasachadh|$1 dheasachadh|$1 deasachadh|$1 dheasachadh|$1 deasachaidhean|$1 deasachadh}} a chaidh a sguabadh às',
'protect' => 'Dìon',
'protect_change' => 'mùth',
'protectthispage' => 'Dìon an duilleag seo',
@@ -297,6 +291,8 @@ Seall air [[Special:Version|duilleag an tionndaidh]].',
'toc' => 'Susbaint',
'showtoc' => 'seall',
'hidetoc' => 'falaich',
+'collapsible-collapse' => 'Co-theannaich',
+'collapsible-expand' => 'Leudaich',
'thisisdeleted' => 'Seall no aisig $1?',
'viewdeleted' => 'Seall $1?',
'restorelink' => '{{PLURAL:$1|aon deasachadh|$1 dheasachadh|$1 deasachadh|$1 dheasachadh|$1 deasachaidhean|$1 deasachadh}} a chaidh a sguabadh às',
@@ -308,6 +304,8 @@ Seall air [[Special:Version|duilleag an tionndaidh]].',
'page-rss-feed' => '"$1" Inbhir RSS',
'page-atom-feed' => '"$1" Inbhir Atom',
'red-link-title' => '$1 (chan eil duilleag ann fhathast)',
+'sort-descending' => "Seòrsaich a' tèarnadh",
+'sort-ascending' => "Seòrsaich a' dìreadh",
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Duilleag',
@@ -395,10 +393,13 @@ Feuch ris a-rithist às a dhèidh seo.",
'protectedinterface' => "Tha an duilleag seo a' solar teacsa eadar-aghaidh airson a' bhathar-bhog is chaidh a ghlaadh gus casg a chur air mì-chleachdadh.",
'editinginterface' => "'''Rabhadh:''' Tha thu a' deasachadh duilleag a tha 'ga chleachdadh a chum teacsa eadar-aghaidh a sholar airson a' bhathar-bhog.
Ma dh'atharraicheas tu an duilleag seo, bidh buaidh ann air coltas na h-eadar-aghaidh mar a chì càch i.
-Ma tha thu airson Gàidhlig a chur air, saoil an cleachd thu [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], am pròiseact ionadailidh aig MediaWiki?",
+Ma tha thu airson Gàidhlig a chur air, saoil an cleachd thu [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], am pròiseact ionadailidh aig MediaWiki?",
'sqlhidden' => "(Iarrtas SQL 'ga fhalach)",
+'cascadeprotected' => 'Chaidh an duilleag seo a dhìon o dheasachadh a chionn \'s gu bheil e am broinn {{PLURAL:$1|na duilleige|nan duilleagan}} a leanas a chaidh an dìon \'s an roghainn "mar eas" air:
+$2',
'namespaceprotected' => "Chan eil cead agad duilleagan san namespace '''$1''' a dheasachadh.",
-'customcssjsprotected' => "Chan eil cead agad an duilleag seo a dheasachadh a chionn 's gu bheil na roghainnean pearsanta aig cleachdaiche eile innte.",
+'customcssprotected' => "Chan eil cead agad an duilleag CSS seo a dheasachadh a chionn 's gu bheil na roghainnean pearsanta aig cleachdaiche eile innte.",
+'customjsprotected' => "Chan eil cead agad an duilleag JavaScript seo a dheasachadh a chionn 's gu bheil na roghainnean pearsanta aig cleachdaiche eile innte.",
'ns-specialprotected' => 'Chan ghabh duilleagan sònraichte a dheasachadh.',
'titleprotected' => 'Chaidh an duilleag seo a dhìon o chruthachadh le [[User:$1|$1]].
Seo am mìneachadh: "\'\'$2\'\'".',
@@ -409,6 +410,9 @@ Seo am mìneachadh: "\'\'$2\'\'".',
'virus-unknownscanner' => 'sganair bhìorasan neo-aithnichte:',
# Login and logout pages
+'logouttext' => "'''Chaidh do logadh a-mach.'''
+'S urrainn dhut leantainn air adhart a' cleachdadh {{SITENAME}} a chleachdadh gun urra no 's urrainn dhut [[Special:UserLogin|logadh a-steach a-rithist]] mar an dearbh-chleachdaiche no mar chleachdaiche eile.
+Thoir an aire gum bi coltas air cuide dhe na duilleagan mar gum biodh tu air logadh a-steach gus am falamhaich thu tasgadan a' bhrabhsair agad.",
'welcomecreation' => '== Fàilte ort, $1! ==
Chaidh an cunntas agad a chruthachadh.
Na dìochuimhnich na [[Special:Preferences|roghainnean agad air {{SITENAME}}]] a ghleusadh dhut fhèin.',
@@ -416,18 +420,30 @@ Na dìochuimhnich na [[Special:Preferences|roghainnean agad air {{SITENAME}}]] a
'yourpassword' => 'Am facal-faire agad',
'yourpasswordagain' => 'Ath-sgrìobh facal-faire',
'remembermypassword' => "Cuimhnich gu bheil mi air logadh a-steach air a' choimpiutair seo (suas gu $1 {{PLURAL:$1|latha|làithean}})",
+'securelogin-stick-https' => 'Glèidh an ceangal ri HTTPS as dèidh logadh a-steach',
+'yourdomainname' => 'An àrainn-lìn agad:',
+'externaldberror' => 'Thachair mearachd le dearbhadh an stòir-dhàta air neo chan eil cead agad an cunntas agad air an taobh a-muigh ùrachadh.',
'login' => 'Log a-steach',
'nav-login-createaccount' => 'Log a-steach / cruthaich cunntas',
'loginprompt' => 'Feumaidh briosgaidean a bhith ceadaichte mus dèan thu logadh a-steach do {{SITENAME}}.',
'userlogin' => 'Log a-steach / cruthaich cunntas',
+'userloginnocreate' => 'Log a-steach',
'logout' => 'Log a-mach',
'userlogout' => 'Log a-mach',
+'notloggedin' => 'Chan eil thu air logadh a-steach',
'nologin' => 'Nach eil cunntas agad fhathast? $1.',
'nologinlink' => 'Cruthaich cunntas',
'createaccount' => 'Cruthaich cunntas ùr',
'gotaccount' => 'A bheil cunntas agad mu thràth? $1.',
'gotaccountlink' => 'Log a-steach',
+'userlogin-resetlink' => "Na dhìochuimhnich thu d' ainm is facal-faire?",
+'createaccountmail' => 'Le post-d',
+'createaccountreason' => 'Adhbhar:',
+'badretype' => "Chan eil an dà fhacal-faire a chuir thu a-steach a' freagairt ri chèile.",
+'userexists' => "Tha an t-ainm-cleachdaiche a chuir thu a-steach 'ga chleachdadh mu thràth.
+Nach tagh thu ainm eile?",
'loginerror' => 'Mearachd log a-steach',
+'createaccounterror' => 'Cha do ghabh an cunntas a leanas a chruthachadh: $1',
'noname' => 'Cha do thagh thu ainm-cleachdaiche dligheach.',
'nosuchusershort' => 'Chan eil cleachdaiche ann leis an ainm "$1".
Cuir sùil air an litreachadh.',
@@ -438,7 +454,7 @@ Am feuch thu ris a-rithist?',
'accountcreated' => 'Cunntas cruthaichte',
'loginlanguagelabel' => 'Cànan: $1',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Seann fhacal-faire',
'newpassword' => 'Facal-faire ùr',
'retypenew' => 'Ath-sgrìobh am facal-faire ùr',
@@ -454,8 +470,6 @@ Am feuch thu ris a-rithist?',
'extlink_tip' => 'Ceangal dhan taobh a-muigh (cuimhnich an ro-leasachan http://)',
'headline_sample' => 'Teacsa ceann-loidhne',
'headline_tip' => 'Ceann-loidhne ìre 2',
-'math_sample' => 'Cuir a-steach foirmle an-seo',
-'math_tip' => 'Foirmle matamataig (LaTeX)',
'nowiki_sample' => 'Cuir a-steach teacsa gun fhòrmatadh an-seo',
'nowiki_tip' => 'Leig seachad fòrmatadh uici',
'image_sample' => 'Eisimpleir.jpg',
@@ -637,23 +651,28 @@ Feuch ri ''all:'' a chuir air beulaibh an iarrtais agad gus rannsachadh a dhèan
'powersearch-field' => 'Lorg',
# Preferences page
-'preferences' => 'Roghainnean',
-'mypreferences' => 'Mo roghainnean',
-'changepassword' => 'Atharraich facal-faire',
-'prefs-skin' => 'Bian',
-'skin-preview' => 'Ro-shealladh',
-'prefs-personal' => "Pròifil a' chleachdaiche",
-'saveprefs' => 'Sàbhail',
-'resetprefs' => 'Falamhaich atharrachaidhean nach deach a shàbhaladh fhathast',
-'rows' => 'Sreathan',
-'columns' => 'Colbhan',
-'savedprefs' => 'Tha na roghainnean agad air an sàbhaladh.',
-'default' => 'an roghainn bhunaiteach',
-'youremail' => 'Post-dealain:',
-'username' => 'Ainm-cleachdaiche:',
-'yourrealname' => "An dearbh ainm a th' ort:",
-'yourlanguage' => 'Cànan:',
-'yournick' => 'Earr-sgrìobhadh ùr:',
+'preferences' => 'Roghainnean',
+'mypreferences' => 'Mo roghainnean',
+'changepassword' => 'Atharraich facal-faire',
+'prefs-skin' => 'Bian',
+'skin-preview' => 'Ro-shealladh',
+'prefs-beta' => 'Feartan Beta',
+'prefs-labs' => 'Feartan nan deuchainn-lannan',
+'prefs-personal' => "Pròifil a' chleachdaiche",
+'saveprefs' => 'Sàbhail',
+'resetprefs' => 'Falamhaich atharrachaidhean nach deach a shàbhaladh fhathast',
+'rows' => 'Sreathan',
+'columns' => 'Colbhan',
+'savedprefs' => 'Tha na roghainnean agad air an sàbhaladh.',
+'default' => 'an roghainn bhunaiteach',
+'youremail' => 'Post-dealain:',
+'username' => 'Ainm-cleachdaiche:',
+'yourrealname' => "An dearbh ainm a th' ort:",
+'yourlanguage' => 'Cànan:',
+'yournick' => 'Earr-sgrìobhadh ùr:',
+'prefs-help-email' => "Chan leig thu leas post-dealain a chur ann ach bidh feum air ma dhìochuimhnicheas tu am facal-faire agad 's ma dh'iarras tu fear ùr.",
+'prefs-help-email-others' => "'S urrainn dhut leigeil le daoine eile post-dealain a chur thugad tro cheangal air an duilleag agad.
+Chan fhaicear an seòladh fhèin nuair a chuireas cuideigin post-dealain thugad.",
# User rights
'userrights-changeable-col' => 'Buidhnean as urrainn dhut atharrachadh',
@@ -835,10 +854,8 @@ Thoir sùil air na [[Special:WantedCategories|roinntean-seòrsa a thathar 'gan i
'mywatchlist' => 'Mo chlàr-faire',
'watchlistfor2' => 'Do $1 $2',
'nowatchlist' => "Chan eil rud sam bith air a' chlàr-fhaire agad.",
-'addedwatch' => 'Air a chur ri do chlàr-faire',
'addedwatchtext' => "Chaidh an duilleag \"[[:\$1]]\" a chur ri [[Special:Watchlist|do chlàr-faire]].
Nochdaidh mùthaidhean a nithear air an duilleag seo 's air an duilleag deasbaireachd a tha co-cheangailte ris an-seo san àm ri teachd agus nochdaidh an duilleag ann an litrichean '''troma''' ann an [[Special:RecentChanges|liosta nam mùthaidhean ùra]] gum bi e furasta ri fhaicinn.",
-'removedwatch' => 'Air a thoir air falbh o do chlàr-faire',
'removedwatchtext' => 'Chaidh an duilleag "[[:$1]]" a thoirt air falbh o [[Special:Watchlist|do chlàr-faire]].',
'watch' => 'Cum sùil air',
'watchthispage' => 'Cum sùil air an duilleag seo',
@@ -867,7 +884,7 @@ Nochdaidh mùthaidhean a nithear air an duilleag seo 's air an duilleag deasbair
Dearbhaich gu bheil thu airson seo a dhèanamh 's gun tuig thu a' bhuaidh a bhios ann agus gu bheil thu a' dèanamh seo a-rèir [[{{MediaWiki:Policy-url}}|a' phoileasaidh]].",
'actioncomplete' => 'Gnìomh deiseil',
'actionfailed' => "Dh'fhàillig ort",
-'deletedtext' => 'Chaidh "<nowiki>$1</nowiki>" a sguabadh às.
+'deletedtext' => 'Chaidh "$1" a sguabadh às.
Seall air $2 airson clàr de dhuilleagan a chaidh a sguabadh às o chionn ghoirid.',
'deletedarticle' => '"[[$1]]" air a sguabadh às',
'dellogpage' => 'Loga an sguabaidh às',
@@ -900,7 +917,7 @@ Cuir sùil air [[Special:ProtectedPages|liosta nan duilleagan fo dhìon]] airson
'protectexpiry' => 'Falbhaidh an ùine air:',
'protect_expiry_invalid' => 'Tha an t-àm-crìochnachaidh mì-dhligheach.',
'protect_expiry_old' => 'Tha an t-àm crìochnachaidh seachad mu thràth.',
-'protect-text' => "Chì thu an ìre dìon dhen duilleag '''<nowiki>$1</nowiki>''' an-seo agus is urrainn dhut atharrachadh an-seo.",
+'protect-text' => "Chì thu an ìre dìon dhen duilleag '''$1''' an-seo agus is urrainn dhut atharrachadh an-seo.",
'protect-locked-access' => "Chan eil cead aig a' chunntas agad an ìre dìon de dhuilleag atharrachadh.
Seo roghainnean làithreach na duilleige '''$1''':",
'protect-cascadeon' => "Tha an duilleag seo fo dhìon an-dràsta a chionn 's gu bheil e air a ghabhail a-steach {{PLURAL:$1|san duilleag|sna duilleagan|san duilleag|sna duilleagan|san duilleag|sna duilleagan}} a leanas aig a bheil dìon easach air.
@@ -966,7 +983,6 @@ Seo roghainnean làithreach na duilleige '''$1''':",
# Block/unblock
'blockip' => 'Bac cleachdaiche',
-'ipaddress' => 'IP Seòladh/ainm-cleachdaiche',
'ipbreason' => 'Adhbhar:',
'ipbsubmit' => 'Bac an cleachdaiche seo',
'ipboptions' => '2 uair a thìde:2 hours, 1 latha:1 day, 3 làithean:3 days, 1 seachdain:1 week, 2 sheachdain:2 weeks, 1 mhìos:1 month, 3 mìosan:3 months, 6 mìosan:6 months, 1 bhliadhna:1 year,neo-chrìochnach:infinite',
@@ -1042,7 +1058,7 @@ Bidh agad ris an co-aontachadh a làimh.'''",
'allmessagesname' => 'Ainm',
'allmessagesdefault' => 'Teacsa bunaiteach na teachdaireachd',
'allmessagestext' => 'Seo liosta de theachdaireachdan an t-siostaim a tha ri làimh ann an namespace MediaWiki.
-Tadhail air [http://www.mediawiki.org/wiki/Localisation Ionadaileadh MediaWiki] is [http://translatewiki.net translatewiki.net] ma tha thu airson pàirt a ghabhail ann an ionadaileadh MediaWiki.',
+Tadhail air [//www.mediawiki.org/wiki/Localisation Ionadaileadh MediaWiki] is [//translatewiki.net translatewiki.net] ma tha thu airson pàirt a ghabhail ann an ionadaileadh MediaWiki.',
# Thumbnails
'thumbnail-more' => 'Meudaich',
@@ -1116,13 +1132,6 @@ Tadhail air [http://www.mediawiki.org/wiki/Localisation Ionadaileadh MediaWiki]
'others' => 'eile',
'siteusers' => '{{PLURAL:$2|chleachdaiche|chleachdaiche|chleachdaiche|chleachdaiche|cleachdaichean|cleachdaiche}} {{SITENAME}} $1',
-# Info page
-'infosubtitle' => 'Fiosrachadh mun duilleag',
-'numwatchers' => "Àireamh de dhaoine a tha a' cumail sùil air: $1",
-
-# Math errors
-'math_unknown_error' => 'mearachd neo-aithnichte',
-
# Patrol log
'patrol-log-line' => 'a chomharraich $1 dhen duilleag $2 freiceadan $3',
'patrol-log-diff' => 'lèirmheas $1',
@@ -1132,11 +1141,10 @@ Tadhail air [http://www.mediawiki.org/wiki/Localisation Ionadaileadh MediaWiki]
'nextdiff' => 'Deasachadh nas ùire →',
# Media information
-'file-info-size' => '$1 × $2 pixel, meud an fhaidhle: $3, seòrsa MIME: $4',
-'file-nohires' => '<small>Chan eil dùmhlachd-bhreacaidh nas fhearr ri fhaighinn.</small>',
-'svg-long-desc' => 'Faidhle SVG, a-rèir ainm $1 × $2 pixel, meud faidhle: $3',
-'show-big-image' => 'Dùmhlachd-bhreacaidh shlàn',
-'show-big-image-thumb' => '<small>Meud an ro-sheallaidh seo: $1 × $2 pixel</small>',
+'file-info-size' => '$1 × $2 pixel, meud an fhaidhle: $3, seòrsa MIME: $4',
+'file-nohires' => '<small>Chan eil dùmhlachd-bhreacaidh nas fhearr ri fhaighinn.</small>',
+'svg-long-desc' => 'Faidhle SVG, a-rèir ainm $1 × $2 pixel, meud faidhle: $3',
+'show-big-image' => 'Dùmhlachd-bhreacaidh shlàn',
# Special:NewFiles
'ilsubmit' => 'Rannsaich',
@@ -1155,7 +1163,7 @@ Thathar a' coimhead air ceangal sam bith eile san loidhne sin mar eisgeachdan, '
Ma chaidh am faidhle tùsail atharrachadh, faodaidh nach eil cuid dhen fhiosrachadh ceart a thaobh an fhaidhle atharraichte tuilleadh.",
'metadata-expand' => 'Seall am fiosrachadh a bharrachd',
'metadata-collapse' => 'Cuir am fiosrachadh a bharrachd am falach',
-'metadata-fields' => "Thèid raointean EXIF metadata a tha ainmichte san teachdaireachd seo a ghabhail a-steach air duilleag an deilbh nuair a bhios clàr a' mhetadata air a dhùmhlachadh.
+'metadata-fields' => "Thèid raointean meata-dhàta nan dealbhan a tha ainmichte san teachdaireachd seo a ghabhail a-steach air duilleag an deilbh nuair a bhios clàr a' mheata-dàta air a dhùmhlachadh.
Bidh an fheadhainn eile falaichte a ghnàth.
* make
* model
@@ -1163,11 +1171,17 @@ Bidh an fheadhainn eile falaichte a ghnàth.
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# External editor support
'edit-externally' => 'Deasaich am faidhle le prògram on taobh a-muigh',
-'edit-externally-help' => '(Seall air [http://www.mediawiki.org/wiki/Manual:External_editors mìneachadh an t-suidheachaidh] airson barrachd fiosrachaidh)',
+'edit-externally-help' => '(Seall air [//www.mediawiki.org/wiki/Manual:External_editors mìneachadh an t-suidheachaidh] airson barrachd fiosrachaidh)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'a h-uile',
diff --git a/languages/messages/MessagesGl.php b/languages/messages/MessagesGl.php
index 281c813a..99931bf1 100644
--- a/languages/messages/MessagesGl.php
+++ b/languages/messages/MessagesGl.php
@@ -46,6 +46,11 @@ $namespaceAliases = array(
'Conversa_Categoría' => NS_CATEGORY_TALK,
);
+$namespaceGenderAliases = array(
+ NS_USER => array( 'male' => 'Usuario', 'female' => 'Usuaria' ),
+ NS_USER_TALK => array( 'male' => 'Conversa_usuario', 'female' => 'Conversa_usuaria' ),
+);
+
$defaultDateFormat = 'dmy';
$dateFormats = array(
@@ -55,97 +60,101 @@ $dateFormats = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Redireccións_dobres' ),
+ 'Activeusers' => array( 'Usuarios_activos' ),
+ 'Allmessages' => array( 'Todas_as_mensaxes' ),
+ 'Allpages' => array( 'Todas_as_páxinas' ),
+ 'Ancientpages' => array( 'Páxinas_máis_antigas' ),
+ 'Blankpage' => array( 'Baleirar_a_páxina' ),
+ 'Block' => array( 'Bloquear', 'Bloquear_o_enderezo_IP', 'Bloquear_o_usuario' ),
+ 'Blockme' => array( 'Bloquearme' ),
+ 'Booksources' => array( 'Fontes_bibliográficas' ),
'BrokenRedirects' => array( 'Redireccións_rotas' ),
- 'Disambiguations' => array( 'Homónimos' ),
- 'Userlogin' => array( 'Rexistro' ),
- 'Userlogout' => array( 'Saír_ao_anonimato' ),
+ 'Categories' => array( 'Categorías' ),
+ 'ChangePassword' => array( 'Cambiar_o_contrasinal' ),
+ 'ComparePages' => array( 'Comparar_as_páxinas' ),
+ 'Confirmemail' => array( 'Confirmar_o_correo_electrónico' ),
+ 'Contributions' => array( 'Contribucións' ),
'CreateAccount' => array( 'Crear_unha_conta' ),
- 'Preferences' => array( 'Preferencias' ),
- 'Watchlist' => array( 'Lista_de_vixilancia' ),
- 'Recentchanges' => array( 'Cambios_recentes' ),
- 'Upload' => array( 'Cargar' ),
+ 'Deadendpages' => array( 'Páxinas_mortas' ),
+ 'DeletedContributions' => array( 'Contribucións_borradas' ),
+ 'Disambiguations' => array( 'Homónimos' ),
+ 'DoubleRedirects' => array( 'Redireccións_dobres' ),
+ 'EditWatchlist' => array( 'Editar_a_lista_de_vixilancia' ),
+ 'Emailuser' => array( 'Correo_electrónico' ),
+ 'Export' => array( 'Exportar' ),
+ 'Fewestrevisions' => array( 'Páxinas_con_menos_revisións' ),
+ 'FileDuplicateSearch' => array( 'Procura_de_ficheiros_duplicados' ),
+ 'Filepath' => array( 'Ruta_do_ficheiro' ),
+ 'Import' => array( 'Importar' ),
+ 'Invalidateemail' => array( 'Invalidar_o_enderezo_de_correo_electrónico' ),
+ 'BlockList' => array( 'Lista_de_bloqueos', 'Lista_dos_bloqueos_a_enderezos_IP' ),
+ 'LinkSearch' => array( 'Buscar_ligazóns_web' ),
+ 'Listadmins' => array( 'Lista_de_administradores' ),
+ 'Listbots' => array( 'Lista_de_bots' ),
'Listfiles' => array( 'Lista_de_imaxes' ),
- 'Newimages' => array( 'Imaxes_novas' ),
- 'Listusers' => array( 'Lista_de_usuarios' ),
'Listgrouprights' => array( 'Lista_de_dereitos_segundo_o_grupo' ),
- 'Statistics' => array( 'Estatísticas' ),
- 'Randompage' => array( 'Ao_chou', 'Páxina_aleatoria' ),
+ 'Listredirects' => array( 'Lista_de_redireccións' ),
+ 'Listusers' => array( 'Lista_de_usuarios' ),
+ 'Lockdb' => array( 'Pechar_a_base_de_datos' ),
+ 'Log' => array( 'Rexistros' ),
'Lonelypages' => array( 'Páxinas_orfas' ),
- 'Uncategorizedpages' => array( 'Páxinas_sen_categoría' ),
- 'Uncategorizedcategories' => array( 'Categorías_sen_categoría' ),
- 'Uncategorizedimages' => array( 'Imaxes_sen_categoría' ),
- 'Uncategorizedtemplates' => array( 'Modelos_sen_categoría' ),
- 'Unusedcategories' => array( 'Categorías_sen_uso' ),
- 'Unusedimages' => array( 'Imaxes_sen_uso' ),
- 'Wantedpages' => array( 'Páxinas_requiridas', 'Ligazóns_rotas' ),
- 'Wantedcategories' => array( 'Categorías_requiridas' ),
- 'Wantedfiles' => array( 'Ficheiros_requiridos' ),
- 'Wantedtemplates' => array( 'Modelos_requiridos' ),
+ 'Longpages' => array( 'Páxinas_longas' ),
+ 'MergeHistory' => array( 'Fusionar_os_historiais' ),
+ 'MIMEsearch' => array( 'Procura_MIME' ),
+ 'Mostcategories' => array( 'Páxinas_con_máis_categorías' ),
+ 'Mostimages' => array( 'Ficheiros_máis_ligados' ),
'Mostlinked' => array( 'Páxinas_máis_ligadas' ),
'Mostlinkedcategories' => array( 'Categorías_máis_ligadas' ),
'Mostlinkedtemplates' => array( 'Modelos_máis_ligados' ),
- 'Mostimages' => array( 'Ficheiros_máis_ligados' ),
- 'Mostcategories' => array( 'Páxinas_con_máis_categorías' ),
'Mostrevisions' => array( 'Páxinas_con_máis_revisións' ),
- 'Fewestrevisions' => array( 'Páxinas_con_menos_revisións' ),
- 'Shortpages' => array( 'Páxinas_curtas' ),
- 'Longpages' => array( 'Páxinas_longas' ),
+ 'Movepage' => array( 'Mover_a_páxina' ),
+ 'Mycontributions' => array( 'As_miñas_contribucións' ),
+ 'Mypage' => array( 'A_miña_páxina_de_usuario' ),
+ 'Mytalk' => array( 'A_miña_conversa' ),
+ 'Myuploads' => array( 'As_miñas_subidas' ),
+ 'Newimages' => array( 'Imaxes_novas' ),
'Newpages' => array( 'Páxinas_novas' ),
- 'Ancientpages' => array( 'Páxinas_máis_antigas' ),
- 'Deadendpages' => array( 'Páxinas_mortas' ),
+ 'PasswordReset' => array( 'Restablecer_o_contrasinal' ),
+ 'PermanentLink' => array( 'Ligazón_permanente' ),
+ 'Popularpages' => array( 'Páxinas_populares' ),
+ 'Preferences' => array( 'Preferencias' ),
+ 'Prefixindex' => array( 'Ãndice_de_prefixos' ),
'Protectedpages' => array( 'Páxinas_protexidas' ),
'Protectedtitles' => array( 'Títulos_protexidos' ),
- 'Allpages' => array( 'Todas_as_páxinas' ),
- 'Prefixindex' => array( 'Ãndice_de_prefixos' ),
- 'Ipblocklist' => array( 'Lista_de_bloqueos', 'Lista_dos_bloqueos_a_enderezos_IP' ),
- 'Unblock' => array( 'Desbloquear' ),
- 'Specialpages' => array( 'Páxinas_especiais' ),
- 'Contributions' => array( 'Contribucións' ),
- 'Emailuser' => array( 'Correo_electrónico' ),
- 'Confirmemail' => array( 'Confirmar_o_correo_electrónico' ),
- 'Whatlinkshere' => array( 'Páxinas_que_ligan_con_esta' ),
+ 'Randompage' => array( 'Ao_chou', 'Páxina_aleatoria' ),
+ 'Randomredirect' => array( 'Redirección_aleatoria' ),
+ 'Recentchanges' => array( 'Cambios_recentes' ),
'Recentchangeslinked' => array( 'Cambios_relacionados' ),
- 'Movepage' => array( 'Mover_a_páxina' ),
- 'Blockme' => array( 'Bloquearme' ),
- 'Booksources' => array( 'Fontes_bibliográficas' ),
- 'Categories' => array( 'Categorías' ),
- 'Export' => array( 'Exportar' ),
- 'Version' => array( 'Versión' ),
- 'Allmessages' => array( 'Todas_as_mensaxes' ),
- 'Log' => array( 'Rexistros' ),
- 'Blockip' => array( 'Bloquear', 'Bloquear_o_enderezo_IP', 'Bloquear_o_usuario' ),
+ 'Revisiondelete' => array( 'Revisións_borradas' ),
+ 'RevisionMove' => array( 'Traslado_de_revisión' ),
+ 'Search' => array( 'Procurar' ),
+ 'Shortpages' => array( 'Páxinas_curtas' ),
+ 'Specialpages' => array( 'Páxinas_especiais' ),
+ 'Statistics' => array( 'Estatísticas' ),
+ 'Tags' => array( 'Etiquetas' ),
+ 'Unblock' => array( 'Desbloquear' ),
+ 'Uncategorizedcategories' => array( 'Categorías_sen_categoría' ),
+ 'Uncategorizedimages' => array( 'Imaxes_sen_categoría' ),
+ 'Uncategorizedpages' => array( 'Páxinas_sen_categoría' ),
+ 'Uncategorizedtemplates' => array( 'Modelos_sen_categoría' ),
'Undelete' => array( 'Restaurar' ),
- 'Import' => array( 'Importar' ),
- 'Lockdb' => array( 'Pechar_a_base_de_datos' ),
'Unlockdb' => array( 'Abrir_a_base_de_datos' ),
- 'Userrights' => array( 'Dereitos_de_usuario' ),
- 'MIMEsearch' => array( 'Procura_MIME' ),
- 'FileDuplicateSearch' => array( 'Procura_de_ficheiros_duplicados' ),
- 'Unwatchedpages' => array( 'Páxinas_sen_vixiar' ),
- 'Listredirects' => array( 'Lista_de_redireccións' ),
- 'Revisiondelete' => array( 'Revisións_borradas' ),
+ 'Unusedcategories' => array( 'Categorías_sen_uso' ),
+ 'Unusedimages' => array( 'Imaxes_sen_uso' ),
'Unusedtemplates' => array( 'Modelos_non_usados' ),
- 'Randomredirect' => array( 'Redirección_aleatoria' ),
- 'Mypage' => array( 'A_miña_páxina_de_usuario' ),
- 'Mytalk' => array( 'A_miña_conversa' ),
- 'Mycontributions' => array( 'As_miñas_contribucións' ),
- 'Listadmins' => array( 'Lista_de_administradores' ),
- 'Listbots' => array( 'Lista_de_bots' ),
- 'Popularpages' => array( 'Páxinas_populares' ),
- 'Search' => array( 'Procurar' ),
- 'Resetpass' => array( 'Cambiar_o_contrasinal' ),
+ 'Unwatchedpages' => array( 'Páxinas_sen_vixiar' ),
+ 'Upload' => array( 'Cargar' ),
+ 'Userlogin' => array( 'Rexistro' ),
+ 'Userlogout' => array( 'Saír_ao_anonimato' ),
+ 'Userrights' => array( 'Dereitos_de_usuario' ),
+ 'Version' => array( 'Versión' ),
+ 'Wantedcategories' => array( 'Categorías_requiridas' ),
+ 'Wantedfiles' => array( 'Ficheiros_requiridos' ),
+ 'Wantedpages' => array( 'Páxinas_requiridas', 'Ligazóns_rotas' ),
+ 'Wantedtemplates' => array( 'Modelos_requiridos' ),
+ 'Watchlist' => array( 'Lista_de_vixilancia' ),
+ 'Whatlinkshere' => array( 'Páxinas_que_ligan_con_esta' ),
'Withoutinterwiki' => array( 'Sen_interwiki' ),
- 'MergeHistory' => array( 'Fusionar_os_historiais' ),
- 'Filepath' => array( 'Ruta_do_ficheiro' ),
- 'Invalidateemail' => array( 'Invalidar_o_enderezo_de_correo_electrónico' ),
- 'Blankpage' => array( 'Baleirar_a_páxina' ),
- 'LinkSearch' => array( 'Buscar_ligazóns_web' ),
- 'DeletedContributions' => array( 'Contribucións_borradas' ),
- 'Tags' => array( 'Etiquetas' ),
- 'Activeusers' => array( 'Usuarios_activos' ),
- 'ComparePages' => array( 'Comparar_as_páxinas' ),
- 'Badtitle' => array( 'Título_incorrecto' ),
);
$magicWords = array(
@@ -238,8 +247,8 @@ $messages = array(
'tog-shownumberswatching' => 'Mostrar o número de usuarios que están a vixiar',
'tog-oldsig' => 'Sinatura actual:',
'tog-fancysig' => 'Tratar a sinatura como se fose texto wiki (sen ligazón automática)',
-'tog-externaleditor' => 'Usar un editor externo por omisión (só para expertos, precisa duns parámetros especiais no seu computador. [http://www.mediawiki.org/wiki/Manual:External_editors Máis información.])',
-'tog-externaldiff' => 'Usar as diferenzas externas por omisión (só para expertos, precisa duns parámetros especiais no seu computador [http://www.mediawiki.org/wiki/Manual:External_editors Máis información.])',
+'tog-externaleditor' => 'Usar un editor externo por omisión (só para expertos, precisa duns parámetros especiais no seu computador. [//www.mediawiki.org/wiki/Manual:External_editors Máis información.])',
+'tog-externaldiff' => 'Usar as diferenzas externas por omisión (só para expertos, precisa duns parámetros especiais no seu computador. [//www.mediawiki.org/wiki/Manual:External_editors Máis información.])',
'tog-showjumplinks' => 'Permitir as ligazóns de accesibilidade "ir a"',
'tog-uselivepreview' => 'Usar a vista previa en tempo real (cómpre JavaScript) (experimental)',
'tog-forceeditsummary' => 'Avisádeme cando o campo resumo estea baleiro',
@@ -268,20 +277,20 @@ $messages = array(
'editfont-serif' => 'Tipo de letra serif',
# Dates
-'sunday' => 'Domingo',
-'monday' => 'Luns',
-'tuesday' => 'Martes',
-'wednesday' => 'Mércores',
-'thursday' => 'Xoves',
-'friday' => 'Venres',
-'saturday' => 'Sábado',
-'sun' => 'Dom',
-'mon' => 'Lun',
-'tue' => 'Mar',
-'wed' => 'Mér',
-'thu' => 'Xov',
-'fri' => 'Ven',
-'sat' => 'Sáb',
+'sunday' => 'domingo',
+'monday' => 'luns',
+'tuesday' => 'martes',
+'wednesday' => 'mércores',
+'thursday' => 'xoves',
+'friday' => 'venres',
+'saturday' => 'sábado',
+'sun' => 'dom',
+'mon' => 'lun',
+'tue' => 'mar',
+'wed' => 'mér',
+'thu' => 'xov',
+'fri' => 'ven',
+'sat' => 'sáb',
'january' => 'xaneiro',
'february' => 'febreiro',
'march' => 'marzo',
@@ -294,30 +303,30 @@ $messages = array(
'october' => 'outubro',
'november' => 'novembro',
'december' => 'decembro',
-'january-gen' => 'Xaneiro',
-'february-gen' => 'Febreiro',
-'march-gen' => 'Marzo',
-'april-gen' => 'Abril',
-'may-gen' => 'Maio',
-'june-gen' => 'Xuño',
-'july-gen' => 'Xullo',
-'august-gen' => 'Agosto',
-'september-gen' => 'Setembro',
-'october-gen' => 'Outubro',
-'november-gen' => 'Novembro',
-'december-gen' => 'Decembro',
-'jan' => 'Xan',
-'feb' => 'Feb',
-'mar' => 'Mar',
-'apr' => 'Abr',
-'may' => 'Mai',
-'jun' => 'Xuñ',
-'jul' => 'Xul',
-'aug' => 'Ago',
-'sep' => 'Set',
-'oct' => 'Out',
-'nov' => 'Nov',
-'dec' => 'Dec',
+'january-gen' => 'xaneiro',
+'february-gen' => 'febreiro',
+'march-gen' => 'marzo',
+'april-gen' => 'abril',
+'may-gen' => 'maio',
+'june-gen' => 'xuño',
+'july-gen' => 'xullo',
+'august-gen' => 'agosto',
+'september-gen' => 'setembro',
+'october-gen' => 'outubro',
+'november-gen' => 'novembro',
+'december-gen' => 'decembro',
+'jan' => 'xan',
+'feb' => 'feb',
+'mar' => 'mar',
+'apr' => 'abr',
+'may' => 'maio',
+'jun' => 'xuñ',
+'jul' => 'xul',
+'aug' => 'ago',
+'sep' => 'set',
+'oct' => 'out',
+'nov' => 'nov',
+'dec' => 'dec',
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Categoría|Categorías}}',
@@ -336,14 +345,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Páxinas indexadas',
'noindex-category' => 'Páxinas non indexadas',
-
-'mainpagetext' => "'''MediaWiki instalouse correctamente.'''",
-'mainpagedocfooter' => 'Consulte a [http://meta.wikimedia.org/wiki/Help:Contents Guía do usuario] para máis información sobre como usar o software wiki.
-
-== Comezando ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista de opcións de configuración]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Preguntas frecuentes sobre MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de correo das edicións de MediaWiki]',
+'broken-file-category' => 'Páxinas con ligazóns rotas cara a ficheiros',
'about' => 'Acerca de',
'article' => 'Artigo',
@@ -395,10 +397,10 @@ $messages = array(
'history' => 'Historial da páxina',
'history_short' => 'Historial',
'updatedmarker' => 'actualizado desde a miña última visita',
-'info_short' => 'Información',
'printableversion' => 'Versión para imprimir',
'permalink' => 'Ligazón permanente',
'print' => 'Imprimir',
+'view' => 'Ver',
'edit' => 'Editar',
'create' => 'Crear',
'editthispage' => 'Editar esta páxina',
@@ -406,6 +408,7 @@ $messages = array(
'delete' => 'Borrar',
'deletethispage' => 'Borrar esta páxina',
'undelete_short' => 'Restaurar {{PLURAL:$1|unha edición|$1 edicións}}',
+'viewdeleted_short' => 'Ver {{PLURAL:$1|unha edición borrada|$1 edicións borradas}}',
'protect' => 'Protexer',
'protect_change' => 'cambiar',
'protectthispage' => 'Protexer esta páxina',
@@ -489,6 +492,8 @@ $1',
'toc' => 'Ãndice',
'showtoc' => 'mostrar',
'hidetoc' => 'agochar',
+'collapsible-collapse' => 'Contraer',
+'collapsible-expand' => 'Expandir',
'thisisdeleted' => 'Quere ver ou restaurar $1?',
'viewdeleted' => 'Quere ver $1?',
'restorelink' => '{{PLURAL:$1|unha edición borrada|$1 edicións borradas}}',
@@ -500,6 +505,8 @@ $1',
'page-rss-feed' => 'Fonte de novas RSS de "$1"',
'page-atom-feed' => 'Fonte de novas Atom de "$1"',
'red-link-title' => '$1 (a páxina aínda non existe)',
+'sort-descending' => 'Orde descendente',
+'sort-ascending' => 'Orde ascendente',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Artigo',
@@ -537,20 +544,20 @@ A última consulta á base de datos foi:
"$1"
desde a función "$2".
A base de datos devolveu o erro "$3: $4"',
-'laggedslavemode' => "'''Aviso:''' a páxina pode non conter as actualizacións recentes.",
+'laggedslavemode' => "'''Aviso:''' A páxina pode non conter as actualizacións recentes.",
'readonly' => 'Base de datos fechada',
'enterlockreason' => 'Dea unha razón para o fechamento, incluíndo unha estimación de até cando se manterá.',
'readonlytext' => 'Nestes intres a base de datos está pechada a novas entradas e outras modificacións, probabelmente debido a rutinas de mantemento, tras as que volverá á normalidade.
O administrador que a pechou deu esta explicación: $1',
-'missing-article' => 'A base de datos non atopa o texto da páxina chamada "$1" $2, que debera ter atopado.
+'missing-article' => 'A base de datos non atopou o texto da páxina chamada "$1" $2, que debera ter atopado.
-Normalmente, isto é causado por seguir unha ligazón cara a unha diferenza vella ou a unha páxina que foi borrada.
+Normalmente, isto está causado por seguir unha ligazón cara a unha diferenza vella ou a unha páxina que foi borrada.
-Se este non é o caso, pode ter atopado un erro no software.
+Se este non é o caso, poida que atopase un erro no software.
Por favor, comuníquello a un [[Special:ListUsers/sysop|administrador]] tomando nota do enderezo URL.',
'missingarticle-rev' => '(nº de revisión: $1)',
-'missingarticle-diff' => '(Dif: $1, $2)',
+'missingarticle-diff' => '(dif: $1, $2)',
'readonly_lag' => 'A base de datos bloqueouse automaticamente mentres os servidores levan a cabo a sincronización co servidor principal',
'internalerror' => 'Erro interno',
'internalerror_info' => 'Erro interno: $1',
@@ -561,10 +568,10 @@ Por favor, comuníquello a un [[Special:ListUsers/sysop|administrador]] tomando
'filedeleteerror' => 'Non se deu borrado o ficheiro "$1".',
'directorycreateerror' => 'Non se puido crear o directorio "$1".',
'filenotfound' => 'Non se deu atopado o ficheiro "$1".',
-'fileexistserror' => 'Resultou imposíbel escribir no ficheiro "$1": O ficheiro xa existe',
+'fileexistserror' => 'Resultou imposíbel escribir no ficheiro "$1": O ficheiro xa existe.',
'unexpected' => 'Valor inesperado: "$1"="$2".',
-'formerror' => 'Erro: Non se pode enviar o formulario',
-'badarticleerror' => 'Non pode efectuarse esta acción nesta páxina.',
+'formerror' => 'Erro: Non se pode enviar o formulario.',
+'badarticleerror' => 'Non pode efectuarse esa acción nesta páxina.',
'cannotdelete' => 'Non se puido borrar a páxina ou imaxe "$1".
Se cadra, xa a borrou alguén.',
'badtitle' => 'Título incorrecto',
@@ -584,14 +591,15 @@ Inténteo de novo nuns minutos.",
'protectedpagetext' => 'Esta páxina foi protexida para evitar a edición.',
'viewsourcetext' => 'Pode ver e copiar o código fonte desta páxina:',
'protectedinterface' => 'Esta páxina fornece o texto da interface do software e está protexida para evitar o seu abuso.',
-'editinginterface' => "'''Aviso:''' está editando unha páxina usada para fornecer o texto da interface do software.
+'editinginterface' => "'''Aviso:''' Está editando unha páxina usada para fornecer o texto da interface do software.
Os cambios nesta páxina afectarán á aparencia da interface para os outros usuarios.
-Para traducións, considere usar [http://translatewiki.net/wiki/Main_Page?setlang=gl translatewiki.net], o proxecto de localización de MediaWiki.",
+Para realizar traducións, considere usar [//translatewiki.net/wiki/Main_Page?setlang=gl translatewiki.net], o proxecto de localización de MediaWiki.",
'sqlhidden' => '(Procura SQL agochada)',
'cascadeprotected' => 'Esta páxina foi protexida fronte á edición debido a que está incluída {{PLURAL:$1|na seguinte páxina protexida, que ten|nas seguintes páxinas protexidas, que teñen}} a "protección en serie" activada:
$2',
'namespaceprotected' => "Non dispón de permisos para modificar páxinas no espazo de nomes '''$1'''.",
-'customcssjsprotected' => 'Non dispón de permisos para modificar esta páxina, dado que contén a configuración persoal doutro usuario.',
+'customcssprotected' => 'Non dispón de permisos para modificar esta páxina de CSS, dado que contén a configuración persoal doutro usuario.',
+'customjsprotected' => 'Non dispón de permisos para modificar esta páxina de JavaScript, dado que contén a configuración persoal doutro usuario.',
'ns-specialprotected' => 'Non se poden editar as páxinas no espazo de nomes {{ns:special}}.',
'titleprotected' => "Este título foi protexido da creación por [[User:$1|$1]].
A razón dada foi ''$2''.",
@@ -605,7 +613,7 @@ A razón dada foi ''$2''.",
'logouttext' => "'''Agora está fóra do sistema.'''
Pode continuar usando {{SITENAME}} de xeito anónimo, ou pode [[Special:UserLogin|acceder de novo]] co mesmo nome de usuario ou con outro.
-Teña en conta que mentres non se limpa a memoria caché do seu navegador algunhas páxinas poden continuar a ser amosadas como se aínda estivese dentro do sistema.",
+Teña en conta que mentres non se limpa a memoria caché do seu navegador algunhas páxinas poden continuar aparecendo como se aínda estivese dentro do sistema.",
'welcomecreation' => '== Reciba a nosa benvida, $1! ==
A súa conta foi creada correctamente.
Non esqueza personalizar as súas [[Special:Preferences|preferencias de {{SITENAME}}]].',
@@ -629,6 +637,7 @@ Non esqueza personalizar as súas [[Special:Preferences|preferencias de {{SITENA
'createaccount' => 'Crear unha conta nova',
'gotaccount' => "Xa ten unha conta? '''$1'''.",
'gotaccountlink' => 'Acceda ao sistema',
+'userlogin-resetlink' => 'Esqueceu os seus datos de rexistro?',
'createaccountmail' => 'Por correo electrónico',
'createaccountreason' => 'Motivo:',
'badretype' => 'Os contrasinais que inseriu non coinciden.',
@@ -643,13 +652,15 @@ Por favor, habilíteas e logo acceda ao sistema co seu novo nome de usuario e co
'nocookieslogin' => '{{SITENAME}} usa cookies para rexistrar os usuarios.
Vostede ten as cookies deshabilitadas.
Por favor, habilíteas e inténteo de novo.',
+'nocookiesfornew' => 'Non se creou a conta de usuario porque non puidemos confirmar a súa orixe.
+Asegúrese de que ten as cookies habilitadas, volva cargar a páxina e inténteo de novo.',
'noname' => 'Non especificou un nome de usuario válido.',
'loginsuccesstitle' => 'Acceso exitoso',
'loginsuccess' => "'''Accedeu ao sistema {{SITENAME}} como \"\$1\".'''",
'nosuchuser' => 'Non existe ningún usuario chamado "$1".
Os nomes de usuario diferencian entre maiúsculas e minúsculas.
Verifique o nome que inseriu ou [[Special:UserLogin/signup|cree unha nova conta]].',
-'nosuchusershort' => 'Non existe ningún usuario chamado "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Non existe ningún usuario chamado "$1".
Verifique o nome que inseriu.',
'nouserspecified' => 'Debe especificar un nome de usuario.',
'login-userblocked' => 'Este usuario está bloqueado. Acceso non autorizado.',
@@ -699,13 +710,14 @@ Pode facer caso omiso desta mensaxe se se creou esta conta por erro.',
'usernamehasherror' => 'O nome de usuario non pode conter cancelos ("#")',
'login-throttled' => 'Fixo demasiados intentos de inserir o contrasinal.
Por favor, agarde antes de probar outra vez.',
+'login-abort-generic' => 'Acceso ao sistema incorrecto; abortado',
'loginlanguagelabel' => 'Lingua: $1',
'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',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Cambiar o contrasinal',
'resetpass_announce' => 'Debe rexistrarse co código temporal que recibiu por correo electrónico. Para finalizar o rexistro debe indicar un novo contrasinal aquí:',
'resetpass_text' => '<!-- Engadir texto aquí -->',
@@ -723,6 +735,40 @@ Por favor, agarde antes de probar outra vez.',
Pode ser que xa cambiase o seu contrasinal ou que solicitase un novo contrasinal temporal.',
'resetpass-temp-password' => 'Contrasinal temporal:',
+# Special:PasswordReset
+'passwordreset' => 'Restablecer o contrasinal',
+'passwordreset-text' => 'Encha este formulario para recibir un recordatorio por correo electrónico cos detalles da súa conta.',
+'passwordreset-legend' => 'Restablecer o contrasinal',
+'passwordreset-disabled' => 'O restablecemento de contrasinais está desactivado neste wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Introduza un dos datos a continuación}}',
+'passwordreset-username' => 'Nome de usuario:',
+'passwordreset-domain' => 'Dominio:',
+'passwordreset-email' => 'Enderezo de correo electrónico:',
+'passwordreset-emailtitle' => 'Detalles da conta de {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Alguén (probablemente vostede, desde o enderezo IP $1) solicitou un recordatorio coa
+información da súa conta en {{SITENAME}} ($4). {{PLURAL:$3|A seguinte conta de usuario está asociada|As seguintes contas de usuarios están asociadas}}
+a este enderezo de correo electrónico:
+
+$2
+
+{{PLURAL:$3|Este contrasinal temporal caducará|Estes contrasinais temporais caducarán}} {{PLURAL:$5|nun día|en $5 días}}.
+Debería acceder ao sistema e elixir un novo contrasinal agora. Se outro fixo esta
+solicitude ou se lembrou o seu contrasinal orixinal e xa non o quere cambiar,
+ignore esta mensaxe e continúe empregando o seu contrasinal vello.',
+'passwordreset-emailtext-user' => 'O usuario $1 solicitou un recordatorio coa información da súa conta en {{SITENAME}}
+($4). {{PLURAL:$3|A seguinte conta de usuario está asociada|As seguintes contas de usuarios están asociadas}}
+a este enderezo de correo electrónico:
+
+$2
+
+{{PLURAL:$3|Este contrasinal temporal caducará|Estes contrasinais temporais caducarán}} {{PLURAL:$5|nun día|en $5 días}}.
+Debería acceder ao sistema e elixir un novo contrasinal agora. Se outro fixo esta
+solicitude ou se lembrou o seu contrasinal orixinal e xa non o quere cambiar,
+ignore esta mensaxe e continúe empregando o seu contrasinal vello.',
+'passwordreset-emailelement' => 'Nome de usuario: $1
+Contrasinal temporal: $2',
+'passwordreset-emailsent' => 'Enviouse o correo electrónico co recordatorio.',
+
# Edit page toolbar
'bold_sample' => 'Texto en negra',
'bold_tip' => 'Texto en negra',
@@ -734,8 +780,6 @@ Pode ser que xa cambiase o seu contrasinal ou que solicitase un novo contrasinal
'extlink_tip' => 'Ligazón externa (lembre o prefixo http://)',
'headline_sample' => 'Texto de cabeceira',
'headline_tip' => 'Cabeceira de nivel 2',
-'math_sample' => 'Insira unha fórmula aquí',
-'math_tip' => 'Fórmula matemática (LaTeX)',
'nowiki_sample' => 'Insira aquí un texto sen formato',
'nowiki_tip' => 'Ignorar o formato wiki',
'image_sample' => 'Exemplo.jpg',
@@ -761,7 +805,7 @@ O seu enderezo IP quedará rexistrado no historial de revisións desta páxina."
'missingsummary' => "'''Aviso:''' Esqueceu incluír o texto do campo resumo.
Se preme en \"{{int:savearticle}}\" a súa edición gardarase sen ningunha descrición da edición.",
'missingcommenttext' => 'Por favor, escriba un comentario a continuación.',
-'missingcommentheader' => "'''Aviso:''' non escribiu ningún texto no asunto/título deste comentario.
+'missingcommentheader' => "'''Aviso:''' Non escribiu ningún texto no asunto/título deste comentario.
Se preme sobre \"{{int:savearticle}}\", a súa edición gardarase sen el.",
'summary-preview' => 'Vista previa do resumo:',
'subject-preview' => 'Vista previa do asunto/título:',
@@ -822,7 +866,7 @@ ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar a páxina]</span>.',
'noarticletext-nopermission' => 'Actualmente non hai ningún texto nesta páxina.
Pode [[Special:Search/{{PAGENAME}}|procurar polo título desta páxina]] noutras páxinas
ou <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ollar os rexistros relacionados]</span>.',
-'userpage-userdoesnotexist' => 'A conta do usuario "$1" non está rexistrada. Comprobe se desexa crear/editar esta páxina.',
+'userpage-userdoesnotexist' => 'A conta do usuario "<nowiki>$1</nowiki>" non está rexistrada. Comprobe se desexa crear/editar esta páxina.',
'userpage-userdoesnotexist-view' => 'A conta de usuario "$1" non está rexistrada.',
'blocked-notice-logextract' => 'Este usuario está bloqueado.
Velaquí está a última entrada do rexistro de bloqueos, por se quere consultala:',
@@ -832,8 +876,8 @@ Velaquí está a última entrada do rexistro de bloqueos, por se quere consultal
* '''Internet Explorer:''' prema ''Ctrl'' ao tempo que fai clic en ''Refrescar'', ou prema en ''Ctrl-F5''
* '''Konqueror:''' prema en ''Recargar'' ou prema en ''F5''
* '''Opera:''' limpe a súa memoria caché en ''Ferramentas → Preferencias''",
-'usercssyoucanpreview' => "'''Nota:''' use o botón \"{{int:showpreview}}\" para verificar o novo CSS antes de gardalo.",
-'userjsyoucanpreview' => "'''Nota:''' use o botón \"{{int:showpreview}}\" para verificar o novo JS antes de gardalo.",
+'usercssyoucanpreview' => "'''Nota:''' Use o botón \"{{int:showpreview}}\" para verificar o novo CSS antes de gardalo.",
+'userjsyoucanpreview' => "'''Nota:''' Use o botón \"{{int:showpreview}}\" para verificar o novo JS antes de gardalo.",
'usercsspreview' => "'''Lembre que só está vendo a vista previa do seu CSS de usuario.'''
'''Este aínda non foi gardado!'''",
'userjspreview' => "'''Lembre que só está probando/previsualizando o seu JavaScript de usuario.'''
@@ -842,12 +886,12 @@ Velaquí está a última entrada do rexistro de bloqueos, por se quere consultal
'''Este aínda non foi gardado!'''",
'sitejspreview' => "'''Lembre que só está vendo a vista previa deste código JavaScript.'''
'''Este aínda non foi gardado!'''",
-'userinvalidcssjstitle' => "'''Aviso:''' non hai ningún tema chamado \"\$1\".
+'userinvalidcssjstitle' => "'''Aviso:''' Non hai ningún tema chamado \"\$1\".
Lembre que as páxinas .css e .js personalizadas utilizan un título en minúsculas, como por exemplo {{ns:user}}:Foo/vector.css no canto de {{ns:user}}:Foo/Vector.css.",
'updated' => '(Actualizado)',
'note' => "'''Nota:'''",
'previewnote' => "'''Lembre que esta é só unha vista previa e que aínda non gardou os seus cambios!'''",
-'previewconflict' => 'Esta vista previa amosa o texto na área superior tal e como aparecerá se escolle gardar.',
+'previewconflict' => 'Esta vista previa mostra o texto na área superior tal e como aparecerá se escolle gardar.',
'session_fail_preview' => "'''O sistema non pode procesar a súa edición porque se perderon os datos de inicio da sesión.
Por favor, inténteo de novo.
Se segue sen funcionar, probe a [[Special:UserLogout|saír do sistema]] e volver entrar.'''",
@@ -860,6 +904,7 @@ Se segue sen funcionar, probe a [[Special:UserLogout|saír do sistema]] e volver
'token_suffix_mismatch' => "'''Rexeitouse a súa edición porque o seu cliente confundiu os signos de puntuación na edición.'''
Rexeitouse a edición para evitar que se corrompa o texto do artigo.
Isto pode acontecer porque estea a empregar un servizo de ''proxy'' anónimo defectuoso baseado na web.",
+'edit_form_incomplete' => "'''Algunhas partes do formulario de edición non chegaron ao servidor; comprobe que a súa modificación está intacta e inténteo de novo.'''",
'editing' => 'Editando "$1"',
'editingsection' => 'Editando unha sección de "$1"',
'editingcomment' => 'Editando unha nova sección de "$1"',
@@ -882,7 +927,7 @@ Ao mesmo tempo, prométanos que o que escribiu é da súa autoría ou que está
'copyrightwarning2' => "Por favor, decátese de que todas as súas contribucións a {{SITENAME}} poden ser editadas, alteradas ou eliminadas por outras persoas. Se non quere que os seus escritos sexan editados sen piedade, non os publique aquí.<br />
Do mesmo xeito, comprométese a que o que vostede escriba sexa da súa autoría ou copiado dunha fonte de dominio público ou recurso público semellante (vexa $1 para detalles).
'''NON ENVÃE SEN PERMISO TRABALLOS CON DEREITOS DE COPIA!'''",
-'longpageerror' => "'''Erro: o texto que pretende gardar ocupa $1 kilobytes, e existe un límite dun máximo de $2 kilobytes.'''
+'longpageerror' => "'''Erro: O texto que pretende gardar ocupa $1 kilobytes, e existe un límite dun máximo de $2 kilobytes.'''
Polo tanto, non se pode gardar.",
'readonlywarning' => "'''Atención: A base de datos foi fechada para facer mantemento, polo que non vai poder gardar as súas edicións polo de agora.'''
Se cadra, pode cortar e pegar o texto nun ficheiro de texto e gardalo para despois.
@@ -943,8 +988,8 @@ Estes argumentos foron omitidos.",
'language-converter-depth-warning' => 'Excedeuse o límite de profundidade do convertedor de lingua ($1)',
# "Undo" feature
-'undo-success' => 'A edición pode ser desfeita.
-Por favor, comprobe a comparación que aparece a continuación para confirmar que isto é o que desexa facer, despois, garde os cambios para desfacer a edición.',
+'undo-success' => 'A edición pódese desfacer.
+Comprobe a comparación que aparece a continuación para confirmar que isto é o que desexa facer; despois, garde os cambios para desfacer a edición.',
'undo-failure' => 'Non se pode desfacer a edición debido a un conflito con algunha das edicións intermedias.',
'undo-norev' => 'A edición non se pode desfacer porque non existe ou foi eliminada.',
'undo-summary' => 'Desfíxose a edición $1 de [[Special:Contributions/$2|$2]] ([[User talk:$2|conversa]])',
@@ -1074,17 +1119,17 @@ $1",
'revdelete-unhid' => 'descubriu $1',
'revdelete-log-message' => '$1 {{PLURAL:$2|dunha revisión|de $2 revisións}}',
'logdelete-log-message' => '$1 {{PLURAL:$2|dun evento|de $2 eventos}}',
-'revdelete-hide-current' => 'Produciuse un erro ao agochar o elemento con data de $1 ás $2: esta é a revisión actual.
-Non pode ser agochado.',
-'revdelete-show-no-access' => 'Produciuse un erro ao mostrar o elemento con data de $1 ás $2: este elemento marcouse como "restrinxido".
+'revdelete-hide-current' => 'Produciuse un erro ao agochar o elemento con data do $1 ás $2: Esta é a revisión actual.
+Non se pode agochar.',
+'revdelete-show-no-access' => 'Produciuse un erro ao mostrar o elemento con data do $1 ás $2: Este elemento marcouse como "restrinxido".
Non ten acceso a el.',
-'revdelete-modify-no-access' => 'Produciuse un erro ao modificar o elemento con data de $1 ás $2: este elemento marcouse como "restrinxido".
+'revdelete-modify-no-access' => 'Produciuse un erro ao modificar o elemento con data do $1 ás $2: Este elemento marcouse como "restrinxido".
Non ten acceso a el.',
-'revdelete-modify-missing' => 'Produciuse un erro ao modificar o elemento con ID $1: falta na base de datos!',
-'revdelete-no-change' => "'''Aviso:''' o elemento con data de $1 ás $2 xa ten solicitado as configuracións de visibilidade.",
-'revdelete-concurrent-change' => 'Produciuse un erro ao modificar o elemento con data de $1 ás $2: o seu estado parece ter sido cambiado por alguén mentres intentaba modificalo.
-Por favor, comprobe o rexistros.',
-'revdelete-only-restricted' => 'Erro ao agochar o elemento con data de $1 ás $2: non pode eliminar elementos da vista dos administradores sen tamén seleccionar algunha das outras opcións de visibilidade.',
+'revdelete-modify-missing' => 'Produciuse un erro ao modificar o elemento con ID $1: Falta na base de datos!',
+'revdelete-no-change' => "'''Aviso:''' O elemento con data do $1 ás $2 xa ten as configuracións de visibilidade solicitadas.",
+'revdelete-concurrent-change' => 'Produciuse un erro ao modificar o elemento con data do $1 ás $2: Semella que alguén modificou o seu estado mentres intentaba modificalo.
+Por favor, comprobe os rexistros.',
+'revdelete-only-restricted' => 'Erro ao agochar o elemento con data do $1 ás $2: Non pode eliminar elementos da vista dos administradores sen tamén seleccionar algunha das outras opcións de visibilidade.',
'revdelete-reason-dropdown' => '* Motivos frecuentes para borrar
** Violación dos dereitos de autor
** Información persoal inapropiada',
@@ -1095,8 +1140,8 @@ Por favor, comprobe o rexistros.',
# Suppression log
'suppressionlog' => 'Rexistro de supresións',
-'suppressionlogtext' => 'Embaixo amósase unha lista coas eliminacións e cos bloqueos recentes, que inclúen contido oculto dos administradores.
-Vexa a [[Special:IPBlockList|lista de enderezos IP bloqueados]] para comprobar as prohibicións e os bloqueos vixentes.',
+'suppressionlogtext' => 'A continuación móstrase unha lista coas eliminacións e cos bloqueos recentes, que inclúen contido oculto dos administradores.
+Vexa a [[Special:BlockList|lista de enderezos IP bloqueados]] para comprobar as prohibicións e os bloqueos vixentes.',
# History merging
'mergehistory' => 'Fusionar os historiais das páxinas',
@@ -1107,25 +1152,25 @@ Asegúrese de que esta modificación da páxina mantén a continuidade históric
'mergehistory-into' => 'Páxina de destino:',
'mergehistory-list' => 'Historial de edicións fusionábeis',
'mergehistory-merge' => 'As revisións seguintes de [[:$1]] pódense fusionar con [[:$2]]. Use a columna de botóns de selección para fusionar só as revisións creadasen e antes da hora indicada. Teña en conta que se usa as ligazóns de navegación a columna limparase.',
-'mergehistory-go' => 'Amosar edicións fusionábeis',
-'mergehistory-submit' => 'Fusionar revisións',
+'mergehistory-go' => 'Mostrar as edicións que se poden fusionar',
+'mergehistory-submit' => 'Fusionar as revisións',
'mergehistory-empty' => 'Non hai revisións que se poidan fusionar.',
'mergehistory-success' => '{{PLURAL:$3|Unha revisión|$3 revisións}} de [[:$1]] {{PLURAL:$3|fusionouse|fusionáronse}} sen problemas en [[:$2]].',
'mergehistory-fail' => 'Non se puido fusionar o historial; comprobe outra vez os parámetros de páxina e hora.',
-'mergehistory-no-source' => 'Non existe a páxina de orixe $1.',
-'mergehistory-no-destination' => 'Non existe a páxina de destino $1.',
+'mergehistory-no-source' => 'Non existe a páxina de orixe "$1".',
+'mergehistory-no-destination' => 'Non existe a páxina de destino "$1".',
'mergehistory-invalid-source' => 'A páxina de orixe ten que ter un título válido.',
'mergehistory-invalid-destination' => 'A páxina de destino ten que ter un título válido.',
-'mergehistory-autocomment' => '[[:$1]] fusionouse en [[:$2]]',
-'mergehistory-comment' => '[[:$1]] fusionouse en [[:$2]]: $3',
+'mergehistory-autocomment' => '"[[:$1]]" fusionouse en "[[:$2]]"',
+'mergehistory-comment' => '"[[:$1]]" fusionouse en "[[:$2]]": $3',
'mergehistory-same-destination' => 'A orixe das páxinas e o seu destino non poden ser os mesmos',
'mergehistory-reason' => 'Motivo:',
# Merge log
'mergelog' => 'Rexistro de fusións',
-'pagemerge-logentry' => 'fusionouse [[$1]] con [[$2]] (revisións até $3)',
+'pagemerge-logentry' => 'fusionou "[[$1]]" con "[[$2]]" (revisións até o $3)',
'revertmerge' => 'Desfacer a fusión',
-'mergelogpagetext' => 'Embaixo hai unha lista coas fusións máis recentes do historial dunha páxina co doutra.',
+'mergelogpagetext' => 'A continuación hai unha lista coas fusións máis recentes do historial dunha páxina co doutra.',
# Diffs
'history-title' => 'Historial de revisións de "$1"',
@@ -1144,7 +1189,7 @@ Asegúrese de que esta modificación da páxina mantén a continuidade históric
'searchresulttext' => 'Para máis información sobre como realizar procuras en {{SITENAME}}, vexa [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => 'A súa busca de "\'\'\'[[:$1]]\'\'\'" ([[Special:Prefixindex/$1|todas as páxinas que comezan por "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|todas as páxinas que ligan con "$1"]])',
'searchsubtitleinvalid' => "A súa busca de \"'''\$1'''\"",
-'toomanymatches' => 'Demasiadas coincidencias foron devoltas, por favor tente unha consulta diferente',
+'toomanymatches' => 'Devolvéronse demasiadas coincidencias; inténteo cunha consulta diferente',
'titlematches' => 'O título do artigo coincide',
'notitlematches' => 'Non coincide ningún título de páxina',
'textmatches' => 'O texto da páxina coincide',
@@ -1189,8 +1234,8 @@ Asegúrese de que esta modificación da páxina mantén a continuidade históric
'showingresults' => "{{PLURAL:$1|Móstrase '''1''' resultado|Móstranse '''$1''' resultados}}, comezando polo número '''$2'''.",
'showingresultsnum' => "A continuación {{PLURAL:$3|móstrase '''1''' resultado|móstranse '''$3''' resultados}}, comezando polo número '''$2'''.",
'showingresultsheader' => "{{PLURAL:\$5|Resultado '''\$1''' de '''\$3'''|Resultados do '''\$1''' ao '''\$2''', dun total de '''\$3''',}} para \"'''\$4'''\"",
-'nonefound' => "'''Nota:''' só algúns espazos de nomes son procurados por omisión.
-Probe a fixar a súa petición con ''all:'' para procurar en todo o contido (incluíndo páxinas de conversa, modelos, etc.) ou use como prefixo o espazo de nomes desexado.",
+'nonefound' => "'''Nota:''' Por defecto, só algúns espazos de nomes se utilizan para as procuras.
+Probe a fixar a súa petición con ''all:'' para procurar en todo o contido (incluíndo páxinas de conversa, modelos etc.) ou use como prefixo o espazo de nomes desexado.",
'search-nonefound' => 'Non se atopou ningún resultado que coincidise coa procura.',
'powersearch' => 'Procurar',
'powersearch-legend' => 'Busca avanzada',
@@ -1206,12 +1251,13 @@ Mentres tanto pode procurar usando o Google.
Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados.',
# Quickbar
-'qbsettings' => 'Opcións da barra rápida',
-'qbsettings-none' => 'Ningunha',
-'qbsettings-fixedleft' => 'Fixa á esquerda',
-'qbsettings-fixedright' => 'Fixa á dereita',
-'qbsettings-floatingleft' => 'Flotante á esquerda',
-'qbsettings-floatingright' => 'Flotante á dereita',
+'qbsettings' => 'Opcións da barra rápida',
+'qbsettings-none' => 'Ningunha',
+'qbsettings-fixedleft' => 'Fixa á esquerda',
+'qbsettings-fixedright' => 'Fixa á dereita',
+'qbsettings-floatingleft' => 'Flotante á esquerda',
+'qbsettings-floatingright' => 'Flotante á dereita',
+'qbsettings-directionality' => 'Fixa, segundo a dirección de escritura da súa lingua',
# Preferences page
'preferences' => 'Preferencias',
@@ -1222,15 +1268,16 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
'changepassword' => 'Cambiar o meu contrasinal',
'prefs-skin' => 'Aparencia',
'skin-preview' => 'Vista previa',
-'prefs-math' => 'Fórmulas matemáticas',
'datedefault' => 'Ningunha preferencia',
+'prefs-beta' => 'Características en probas',
'prefs-datetime' => 'Data e hora',
+'prefs-labs' => 'Características experimentais',
'prefs-personal' => 'Información do usuario',
'prefs-rc' => 'Cambios recentes',
'prefs-watchlist' => 'Lista de vixilancia',
-'prefs-watchlist-days' => 'Días para amosar na lista de vixilancia:',
+'prefs-watchlist-days' => 'Número de días que mostrar na lista de vixilancia:',
'prefs-watchlist-days-max' => 'Máximo 7 días',
-'prefs-watchlist-edits' => 'Número de edicións para mostrar na lista de vixilancia completa:',
+'prefs-watchlist-edits' => 'Número máximo de edicións que mostrar na lista de vixilancia completa:',
'prefs-watchlist-edits-max' => 'Número máximo: 1000',
'prefs-watchlist-token' => 'Pase para a lista de vixilancia:',
'prefs-misc' => 'Preferencias varias',
@@ -1246,8 +1293,6 @@ Note que os seus índices do contido de {{SITENAME}} poden estar desactualizados
'columns' => 'Columnas:',
'searchresultshead' => 'Procurar',
'resultsperpage' => 'Número de resultados por páxina:',
-'contextlines' => 'Número de liñas por resultado:',
-'contextchars' => 'Número de caracteres de contexto por liña:',
'stub-threshold' => 'Límite superior para o formato de <a href="#" class="stub">ligazóns de bosquexo</a> (bytes):',
'stub-threshold-disabled' => 'Desactivado',
'recentchangesdays' => 'Número de días a mostrar nos cambios recentes:',
@@ -1260,7 +1305,7 @@ Velaquí un valor xerado ao chou que pode usar: $1',
'savedprefs' => 'Gardáronse as súas preferencias.',
'timezonelegend' => 'Zona horaria:',
'localtime' => 'Hora local:',
-'timezoneuseserverdefault' => 'Usar a hora do servidor por defecto',
+'timezoneuseserverdefault' => 'Usar a hora do servidor por defecto ($1)',
'timezoneuseoffset' => 'Outra (especifique o desprazamento)',
'timezoneoffset' => 'Desprazamento¹:',
'servertime' => 'Hora do servidor:',
@@ -1308,8 +1353,8 @@ Ha de ter menos {{PLURAL:$1|dun carácter|de $1 caracteres}}.',
'prefs-help-gender' => 'Opcional: Usado para xerar correctamente o sexo por parte do software. Esta información será pública.',
'email' => 'Correo electrónico',
'prefs-help-realname' => 'O seu nome real é opcional, pero se escolle dalo utilizarase para atribuírlle o seu traballo.',
-'prefs-help-email' => 'O enderezo de correo electrónico é opcional, pero permite que se lle envíe un contrasinal novo se se esquece del.
-Tamén pode deixar que outras persoas se poñan en contacto con vostede desde a súa páxina de usuario ou de conversa sen necesidade de revelar a súa identidade.',
+'prefs-help-email' => 'O enderezo de correo electrónico é opcional, pero permite que se lle envíe un contrasinal novo se se esquece del.',
+'prefs-help-email-others' => 'Tamén pode optar por deixar aos outros que se poidan poñer en contacto con vostede a través da súa páxina de usuario sen necesidade de revelar a súa identidade.',
'prefs-help-email-required' => 'Requírese o enderezo de correo electrónico.',
'prefs-info' => 'Información básica',
'prefs-i18n' => 'Internacionalización',
@@ -1420,7 +1465,7 @@ Tamén pode deixar que outras persoas se poñan en contacto con vostede desde a
'right-editusercssjs' => 'Editar os ficheiros CSS e JS doutros usuarios',
'right-editusercss' => 'Editar os ficheiros CSS doutros usuarios',
'right-edituserjs' => 'Editar os ficheiros JS doutros usuarios',
-'right-rollback' => 'Reversión rápida da edición dun usuario dunha páxina particular',
+'right-rollback' => 'Reverter rapidamente as edicións do último usuario que editou unha páxina en particular',
'right-markbotedits' => 'Marcar as edicións desfeitas como edicións dun bot',
'right-noratelimit' => 'Non lle afectan os límites de frecuencia',
'right-import' => 'Importar páxinas doutros wikis',
@@ -1434,15 +1479,15 @@ Tamén pode deixar que outras persoas se poñan en contacto con vostede desde a
'right-userrights' => 'Editar todos os dereitos de usuario',
'right-userrights-interwiki' => 'Editar os dereitos de usuario dos usuarios doutros wikis',
'right-siteadmin' => 'Fechar e abrir a base de datos',
-'right-reset-passwords' => 'Restablecer os contrasinais doutros usuarios',
'right-override-export-depth' => 'Exportar páxinas incluíndo as páxinas ligadas ata unha profundidade de 5',
'right-sendemail' => 'Enviar correos electrónicos a outros usuarios',
# User rights log
-'rightslog' => 'Rexistro de dereitos de usuario',
-'rightslogtext' => 'Este é un rexistro de permisos dos usuarios.',
-'rightslogentry' => 'cambiou o grupo ao que pertence "$1" de $2 a $3',
-'rightsnone' => '(ningún)',
+'rightslog' => 'Rexistro de dereitos de usuario',
+'rightslogtext' => 'Este é un rexistro de permisos dos usuarios.',
+'rightslogentry' => 'cambiou o grupo ao que pertence "$1" de $2 a $3',
+'rightslogentry-autopromote' => 'foi promovido automaticamente de $2 a $3',
+'rightsnone' => '(ningún)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'ler esta páxina',
@@ -1535,7 +1580,7 @@ As páxinas da súa [[Special:Watchlist|lista de vixilancia]] aparecen en '''neg
'upload_directory_missing' => 'Falta o directorio de carga ($1) e non pode ser creado polo servidor da páxina web.',
'upload_directory_read_only' => 'Non se pode escribir no directorio de subida ($1) do servidor web.',
'uploaderror' => 'Erro ao cargar',
-'upload-recreate-warning' => "'''Atención: borrouse ou trasladouse un ficheiro con ese nome.'''
+'upload-recreate-warning' => "'''Atención: Borrouse ou trasladouse un ficheiro con ese nome.'''
Velaquí están o rexistro de borrados e mais o de traslados desta páxina, por se quere consultalos:",
'uploadtext' => "Use o formulario de embaixo para cargar ficheiros.
@@ -1550,8 +1595,8 @@ Para incluír un ficheiro nunha páxina, use unha ligazón do seguinte xeito:
'upload-prohibited' => 'Tipos de arquivos prohibidos: $1.',
'uploadlog' => 'rexistro de cargas',
'uploadlogpage' => 'Rexistro de cargas',
-'uploadlogpagetext' => 'Embaixo hai unha lista cos ficheiros subidos máis recentemente.
-Vexa a [[Special:NewFiles|galería de imaxes novas]] para unha visión máis xeral.',
+'uploadlogpagetext' => 'A continuación está a lista cos últimos ficheiros cargados no servidor.
+Vexa a [[Special:NewFiles|galería de imaxes novas]] para ollar unha visión máis xeral.',
'filename' => 'Nome do ficheiro',
'filedesc' => 'Resumo',
'fileuploadsummary' => 'Descrición:',
@@ -1565,13 +1610,13 @@ Vexa a [[Special:NewFiles|galería de imaxes novas]] para unha visión máis xer
'illegalfilename' => 'O nome de ficheiro "$1" contén caracteres que non están permitidos nos títulos das páxinas.
Por favor, cambie o nome do ficheiro e intente cargalo de novo.',
'badfilename' => 'O nome deste ficheiro cambiouse a "$1".',
-'filetype-mime-mismatch' => 'A extensión do ficheiro non coincide co tipo MIME.',
+'filetype-mime-mismatch' => 'A extensión do ficheiro ".$1" non coincide co tipo MIME detectado ($2).',
'filetype-badmime' => 'Non se permite enviar ficheiros de tipo MIME "$1".',
'filetype-bad-ie-mime' => 'Non se pode cargar este ficheiro porque o Internet Explorer detectaríao como "$1", o cal é un tipo de ficheiro non permitido e potencialmente perigoso.',
'filetype-unwanted-type' => "'''\".\$1\"''' é un tipo de ficheiro non desexado.
{{PLURAL:\$3|O tipo de ficheiro preferido é|Os tipos de ficheiro preferidos son}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' non é un tipo de ficheiro permitido.
-{{PLURAL:\$3|O tipo de ficheiro permitido é|Os tipos de ficheiros permitidos son}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' non {{PLURAL:$4|é un tipo de ficheiro permitido|son tipos de ficheiro permitidos}}.
+{{PLURAL:$3|O tipo de ficheiro permitido é|Os tipos de ficheiro permitidos son}} $2.',
'filetype-missing' => 'O ficheiro non conta cunha extensión (como ".jpg").',
'empty-file' => 'O ficheiro que enviou estaba baleiro.',
'file-too-large' => 'O ficheiro que enviou era grande de máis.',
@@ -1589,6 +1634,7 @@ Por favor, cambie o nome do ficheiro e intente cargalo de novo.',
'emptyfile' => 'O ficheiro que cargou semella estar baleiro.
Isto pode deberse a un erro ortográfico no seu nome.
Por favor, verifique se realmente quere cargar este ficheiro.',
+'windows-nonascii-filename' => 'Este wiki non soporta os nomes de ficheiros con caracteres especiais.',
'fileexists' => "Xa existe un ficheiro con ese nome. Por favor, comprobe '''<tt>[[:$1]]</tt>''' se non está seguro de querer cambialo.
[[$1|thumb]]",
'filepageexists' => "A páxina de descrición deste ficheiro xa foi creada en '''<tt>[[:$1]]</tt>''', pero polo de agora non existe ningún ficheiro con este nome.
@@ -1625,6 +1671,8 @@ Se aínda quere cargar o seu ficheiro, volva atrás e use outro nome.
'php-uploaddisabledtext' => 'As cargas de ficheiros PHP están desactivadas. Por favor, comprobe a característica file_uploads.',
'uploadscripted' => 'Este ficheiro contén HTML ou código (script code) que pode producir erros ao ser interpretado polo navegador.',
'uploadvirus' => 'O ficheiro contén un virus! Detalles: $1',
+'uploadjava' => 'O ficheiro é un ZIP que contén un ficheiro .class de Java.
+Non están permitidas as cargas de ficheiros Java, dado que poden causar restricións de seguridade.',
'upload-source' => 'Ficheiro de orixe',
'sourcefilename' => 'Nome do ficheiro a cargar:',
'sourceurl' => 'URL de orixe:',
@@ -1635,10 +1683,6 @@ Se aínda quere cargar o seu ficheiro, volva atrás e use outro nome.
'watchthisupload' => 'Vixiar este ficheiro',
'filewasdeleted' => 'Un ficheiro con ese nome foi cargado con anterioridade e a continuación borrado.
Debe comprobar o $1 antes de proceder a cargalo outra vez.',
-'upload-wasdeleted' => "'''Aviso: Está cargando un ficheiro que foi previamente borrado.'''
-
-Debería considerar se é apropiado continuar a carga deste ficheiro.
-A continuación móstrase o rexistro de borrados deste ficheiro, por se quere consultalo:",
'filename-bad-prefix' => "O nome do ficheiro que está cargando comeza con '''\"\$1\"''', que é un típico nome non descritivo asignado automaticamente polas cámaras dixitais.
Por favor, escolla un nome máis descritivo para o seu ficheiro.",
'filename-prefix-blacklist' => ' #<!-- deixe esta liña exactamente como está --> <pre>
@@ -1677,12 +1721,29 @@ Se o problema persiste contacte cun [[Special:ListUsers/sysop|administrador]] do
'upload-unknown-size' => 'Tamaño descoñecido',
'upload-http-error' => 'Produciuse un erro HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Atopouse un erro ao abrir o ficheiro ZIP para realizar as comprobacións.',
+'zip-wrong-format' => 'O ficheiro especificado non é ZIP.',
+'zip-bad' => 'O ficheiro ZIP está corrompido ou a súa lectura é imposible.
+Non pode superar adecuadamente as comprobacións de seguridade.',
+'zip-unsupported' => 'O ficheiro é un ZIP que emprega características non soportadas por MediaWiki.
+Non pode superar adecuadamente as comprobacións de seguridade.',
+
+# Special:UploadStash
+'uploadstash' => 'Ficheiros agochados',
+'uploadstash-summary' => 'Esta páxina proporciona acceso a ficheiros que xa están cargados (ou en proceso de carga), pero que aínda non están publicados no wiki. Estes ficheiros non son visibles para ninguén, agás para o usuario que os cargou.',
+'uploadstash-clear' => 'Borrar os ficheros agochados',
+'uploadstash-nofiles' => 'Non ten ningún ficheiro agochado.',
+'uploadstash-badtoken' => 'A acción non se puido completar, seica porque caducou a información de acceso. Inténteo de novo.',
+'uploadstash-errclear' => 'Fallou o borrado de ficheiros.',
+'uploadstash-refresh' => 'Actualizar a lista de ficheiros',
+
# img_auth script messages
'img-auth-accessdenied' => 'Acceso rexeitado',
'img-auth-nopathinfo' => 'Falta a PATH_INFO.
O seu servidor non está configurado para pasar esta información.
-Pode ser que estea baseado en CGI e non puidese soportar img_auth.
-Olle http://www.mediawiki.org/wiki/Manual:Image_Authorization para obter máis información.',
+Pode ser que estea baseado en CGI e non soporte img_auth.
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Olle a autorización de imaxes para obter máis información.]',
'img-auth-notindir' => 'A ruta solicitada non está no directorio de carga configurado.',
'img-auth-badtitle' => 'Non é posible construír un título válido a partir de "$1".',
'img-auth-nologinnWL' => 'Non accedeu ao sistema e "$1" non está na lista de branca.',
@@ -1759,7 +1820,7 @@ A seguinte lista só amosa {{PLURAL:$1|a primeira páxina que liga|as primeiras
Hai dispoñible [[Special:WhatLinksHere/$2|unha lista completa]].',
'nolinkstoimage' => 'Ningunha páxina liga con este ficheiro.',
'morelinkstoimage' => 'Ver [[Special:WhatLinksHere/$1|máis ligazóns]] cara a este ficheiro.',
-'redirectstofile' => '{{PLURAL:$1|O seguinte ficheiro redirixe|Os seguintes $1 ficheiros redirixen}} cara a este:',
+'linkstoimage-redirect' => '$1 (redirección de ficheiro) $2',
'duplicatesoffile' => '{{PLURAL:$1|O seguinte ficheiro é un duplicado|Os seguintes $1 ficheiros son duplicados}} destoutro ([[Special:FileDuplicateSearch/$2|máis detalles]]):',
'sharedupload' => 'Este ficheiro é de $1 e pode ser usado por outros proxectos.',
'sharedupload-desc-there' => 'Este ficheiro é de $1 e pode ser usado por outros proxectos.
@@ -1795,7 +1856,7 @@ A descrición da [$2 páxina de descrición do ficheiro] móstrase a continuaciÃ
'filedelete-nofile' => "\"'''\$1'''\" non existe.",
'filedelete-nofile-old' => "Non existe unha versión arquivada de \"'''\$1'''\" cos atributos especificados.",
'filedelete-otherreason' => 'Outro motivo:',
-'filedelete-reason-otherlist' => 'Outra razón',
+'filedelete-reason-otherlist' => 'Outro motivo',
'filedelete-reason-dropdown' => '*Motivos frecuentes para borrar
** Violación dos dereitos de autor
** Ficheiro duplicado',
@@ -1850,18 +1911,19 @@ Lembre verificar outras ligazóns cara aos modelos antes de borralos.',
'statistics-users-active-desc' => 'Usuarios que teñen levado a cabo unha acción {{PLURAL:$1|no último día|nos últimos $1 días}}',
'statistics-mostpopular' => 'Páxinas máis vistas',
-'disambiguations' => 'Páxinas de homónimos',
+'disambiguations' => 'Páxinas que ligan con páxinas de homónimos',
'disambiguationspage' => 'Template:Homónimos',
'disambiguations-text' => "As seguintes páxinas ligan cunha '''páxina de homónimos'''.
No canto de ligar cos homónimos deben apuntar cara á páxina apropiada.<br />
Unha páxina trátase como páxina de homónimos cando nela se usa un modelo que está ligado desde [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Redireccións dobres',
-'doubleredirectstext' => 'Esta lista contén as páxinas que redirixen cara a outras páxinas de redirección.
+'doubleredirects' => 'Redireccións dobres',
+'doubleredirectstext' => 'Esta lista contén as páxinas que redirixen cara a outras páxinas de redirección.
Cada ringleira contén ligazóns cara á primeira e segunda redireccións, así como a primeira liña de texto da segunda páxina, que é frecuentemente o artigo "real", á que a primeira redirección debera apuntar.
As entradas <del>riscadas</del> xa foron resoltas.',
-'double-redirect-fixed-move' => 'A páxina "[[$1]]" foi movida, agora é unha redirección cara a "[[$2]]"',
-'double-redirect-fixer' => 'Amañador de redireccións',
+'double-redirect-fixed-move' => 'A páxina "[[$1]]" foi movida, agora é unha redirección cara a "[[$2]]"',
+'double-redirect-fixed-maintenance' => 'Arranxo a redirección dobre entre "[[$1]]" e "[[$2]]".',
+'double-redirect-fixer' => 'Amañador de redireccións',
'brokenredirects' => 'Redireccións rotas',
'brokenredirectstext' => 'As seguintes redireccións ligan cara a páxinas que non existen:',
@@ -1919,7 +1981,7 @@ As entradas <del>riscadas</del> xa foron resoltas.',
'protectedtitlestext' => 'Os seguintes títulos están protexidos da creación',
'protectedtitlesempty' => 'Actualmente non están protexidos títulos con eses parámetros.',
'listusers' => 'Lista de usuarios',
-'listusers-editsonly' => 'Amosar só os usuarios con edicións',
+'listusers-editsonly' => 'Mostrar só os usuarios con edicións',
'listusers-creationsort' => 'Ordenar por data de creación',
'usereditcount' => '$1 {{PLURAL:$1|edición|edicións}}',
'usercreated' => '{{GENDER:$3|Creado|Creada}} o $1 ás $2',
@@ -1938,6 +2000,7 @@ Por favor, teña en conta que outras páxinas web poden ligar cara a un ficheiro
'pager-newer-n' => '{{PLURAL:$1|unha posterior|$1 posteriores}}',
'pager-older-n' => '{{PLURAL:$1|unha anterior|$1 anteriores}}',
'suppress' => 'Supervisor',
+'querypage-disabled' => 'Esta páxina especial está desactivada por razóns de rendemento.',
# Book sources
'booksources' => 'Fontes bibliográficas',
@@ -1947,8 +2010,8 @@ Por favor, teña en conta que outras páxinas web poden ligar cara a un ficheiro
'booksources-invalid-isbn' => 'O ISBN inserido parece non ser válido; comprobe que non haxa erros ao copialo da fonte orixinal.',
# Special:Log
-'specialloguserlabel' => 'Usuario:',
-'speciallogtitlelabel' => 'Título:',
+'specialloguserlabel' => 'Executante:',
+'speciallogtitlelabel' => 'Obxectivo (título ou usuario):',
'log' => 'Rexistros',
'all-logs-page' => 'Todos os rexistros públicos',
'alllogstext' => 'Vista combinada de todos os rexistros dipoñibles en {{SITENAME}}.
@@ -1976,7 +2039,7 @@ Pode precisar máis a vista seleccionando o tipo de rexistro, o nome do usuario
# Special:Categories
'categories' => 'Categorías',
'categoriespagetext' => '{{PLURAL:$1|A seguinte categoría contén|As seguintes categorías conteñen}} páxinas ou contidos multimedia.
-Aquí non se amosan as [[Special:UnusedCategories|categorías sen uso]].
+Aquí non se mostran as [[Special:UnusedCategories|categorías sen uso]].
Olle tamén as [[Special:WantedCategories|categorías requiridas]].',
'categoriesfrom' => 'Mostrar as categorías que comecen por:',
'special-categories-sort-count' => 'ordenar por número',
@@ -1988,12 +2051,13 @@ Olle tamén as [[Special:WantedCategories|categorías requiridas]].',
'sp-deletedcontributions-contribs' => 'contribucións',
# Special:LinkSearch
-'linksearch' => 'Ligazóns externas',
+'linksearch' => 'Procura de ligazóns externas',
'linksearch-pat' => 'Patrón de procura:',
'linksearch-ns' => 'Espazo de nomes:',
'linksearch-ok' => 'Procurar',
-'linksearch-text' => 'Pódense usar caracteres comodín como "*.wikipedia.org".<br />
-Protocolos soportados: <tt>$1</tt>',
+'linksearch-text' => 'Pódense usar caracteres comodín como "*.wikipedia.org".
+Cómpre, polo menos, un dominio de nivel superior, por exemplo "*.org".<br />
+Protocolos soportados: <tt>$1</tt> (non engada ningún destes na súa procura).',
'linksearch-line' => '$1 está ligado desde a páxina "$2"',
'linksearch-error' => 'Os caracteres comodín só poden aparecer ao principio do nome do servidor.',
@@ -2054,6 +2118,10 @@ O correo electrónico que inseriu [[Special:Preferences|nas súas preferencias]]
'noemailtext' => 'Este usuario non especificou un enderezo de correo electrónico válido.',
'nowikiemailtitle' => 'Sen correo electrónico habilitado',
'nowikiemailtext' => 'Este usuario elixiu non recibir correos electrónicos doutros usuarios.',
+'emailnotarget' => 'O nome de usuario do destinatario non existe ou é incorrecto.',
+'emailtarget' => 'Introduza o nome de usuario do destinatario',
+'emailusername' => 'Nome de usuario:',
+'emailusernamesubmit' => 'Enviar',
'email-legend' => 'Enviar un correo electrónico a outro usuario de {{SITENAME}}',
'emailfrom' => 'De:',
'emailto' => 'Para:',
@@ -2078,10 +2146,10 @@ O correo electrónico que inseriu [[Special:Preferences|nas súas preferencias]]
'watchlistanontext' => 'Faga o favor de $1 ao sistema para ver ou editar os elementos da súa lista de vixilancia.',
'watchnologin' => 'Non accedeu ao sistema',
'watchnologintext' => 'Debe [[Special:UserLogin|acceder ao sistema]] para modificar a súa lista de vixilancia.',
-'addedwatch' => 'Engadido á lista de vixilancia',
+'addwatch' => 'Engadir á lista vixilancia',
'addedwatchtext' => "A páxina \"[[:\$1]]\" foi engadida á súa [[Special:Watchlist|lista de vixilancia]].
Os cambios futuros nesta páxina e na súa páxina de conversa asociada serán listados alí, e a páxina aparecerá en '''negra''' na [[Special:RecentChanges|lista de cambios recentes]] para facer máis sinxela a súa sinalización.",
-'removedwatch' => 'Eliminado da lista de vixilancia',
+'removewatch' => 'Eliminar da lista de vixilancia',
'removedwatchtext' => 'A páxina "[[:$1]]" foi eliminada [[Special:Watchlist|da súa lista de vixilancia]].',
'watch' => 'Vixiar',
'watchthispage' => 'Vixiar esta páxina',
@@ -2089,7 +2157,7 @@ Os cambios futuros nesta páxina e na súa páxina de conversa asociada serán l
'unwatchthispage' => 'Deixar de vixiar',
'notanarticle' => 'Non é unha páxina de contido',
'notvisiblerev' => 'A revisión foi borrada',
-'watchnochange' => 'Ningún dos elementos baixo vixilancia foi editado no período de tempo amosado.',
+'watchnochange' => 'Ningún dos elementos baixo vixilancia foi editado no período de tempo indicado.',
'watchlist-details' => 'Hai {{PLURAL:$1|unha páxina|$1 páxinas}} na súa lista de vixilancia, sen contar as de conversa.',
'wlheader-enotif' => '* Está dispoñible a notificación por correo electrónico.',
'wlheader-showupdated' => "* As páxinas que cambiaron desde a súa última visita móstranse en '''negra'''",
@@ -2102,8 +2170,9 @@ Os cambios futuros nesta páxina e na súa páxina de conversa asociada serán l
'watchlist-options' => 'Opcións de vixilancia',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Vixiando...',
-'unwatching' => 'Deixando de vixiar...',
+'watching' => 'Vixiando...',
+'unwatching' => 'Deixando de vixiar...',
+'watcherrortext' => 'Houbo un erro ao cambiar as súas opcións de vixilancia para a páxina "$1".',
'enotif_mailer' => 'Correo de aviso de {{SITENAME}}',
'enotif_reset' => 'Marcar todas as páxinas como visitadas',
@@ -2135,17 +2204,17 @@ Pode borrar os indicadores de aviso de notificación para o conxunto das páxina
--
Para cambiar as notificacións por correo electrónico, visite
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Para cambiar a súa lista de vixilancia, visite
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Para borrar a páxina da súa lista de vixilancia, visite
$UNWATCHURL
Axuda:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Borrar a páxina',
@@ -2156,12 +2225,12 @@ Axuda:
'exblank' => 'a páxina estaba baleira',
'delete-confirm' => 'Borrar "$1"',
'delete-legend' => 'Borrar',
-'historywarning' => "'''Atención:''' a páxina que está a piques de borrar ten un historial con aproximadamente $1 {{PLURAL:$1|revisión|revisións}}:",
+'historywarning' => "'''Atención:''' A páxina que está a piques de borrar ten un historial con aproximadamente $1 {{PLURAL:$1|revisión|revisións}}:",
'confirmdeletetext' => 'Está a piques de borrar de xeito permanente unha páxina ou imaxe con todo o seu historial na base de datos.
Por favor, confirme que é realmente a súa intención, que comprende as consecuencias e que está obrando de acordo coas regras [[{{MediaWiki:Policy-url}}|da política e normas]].',
'actioncomplete' => 'A acción foi completada',
'actionfailed' => 'Fallou a acción',
-'deletedtext' => 'Borrouse a páxina "<nowiki>$1</nowiki>".
+'deletedtext' => 'Borrouse a páxina "$1".
No $2 pode ver unha lista cos borrados máis recentes.',
'deletedarticle' => 'borrou "[[$1]]"',
'suppressedarticle' => 'suprimiu "[[$1]]"',
@@ -2220,7 +2289,7 @@ Vexa a [[Special:ProtectedPages|lista de páxinas protexidas]] se quere obter a
'protect_expiry_invalid' => 'O tempo de duración da protección non e válido.',
'protect_expiry_old' => 'O momento de remate da protección corresponde ao pasado.',
'protect-unchain-permissions' => 'Desbloquear as opcións de protección adicionais',
-'protect-text' => "Aquí é onde pode ver e cambiar os niveis de protección da páxina chamada \"'''<nowiki>\$1</nowiki>'''\".",
+'protect-text' => "Aquí é onde pode ver e cambiar os niveis de protección da páxina chamada \"'''\$1'''\".",
'protect-locked-blocked' => "Non pode modificar os niveis de protección mentres exista un bloqueo. Velaquí a configuración actual da páxina '''$1''':",
'protect-locked-dblock' => "Os niveis de protección non se poden modificar debido a un bloqueo da base de datos activa.
Velaquí a configuración actual da páxina '''$1''':",
@@ -2229,7 +2298,7 @@ Velaquí a configuración actual da páxina '''$1''':",
'protect-cascadeon' => 'Esta páxina está protexida neste momento porque está incluída {{PLURAL:$1|na seguinte páxina, que foi protexida|nas seguintes páxinas, que foron protexidas}} coa opción protección en serie activada.
Pode mudar o nivel de protección da páxina pero iso non afectará á protección en serie.',
'protect-default' => 'Permitir a todos os usuarios',
-'protect-fallback' => 'Require permisos de "$1"',
+'protect-fallback' => 'Cómpre ter permisos de "$1"',
'protect-level-autoconfirmed' => 'Bloquear os usuarios novos e anónimos',
'protect-level-sysop' => 'Só os administradores',
'protect-summary-cascade' => 'protección en serie',
@@ -2274,9 +2343,8 @@ Pode mudar o nivel de protección da páxina pero iso non afectará á protecciÃ
'undeletepagetext' => '{{PLURAL:$1|A seguinte páxina foi borrada|As seguintes páxinas foron borradas}}, pero aínda {{PLURAL:$1|está|están}} no arquivo e {{PLURAL:$1|pode|poden}} ser {{PLURAL:$1|restaurada|restauradas}}.
O arquivo será limpado periodicamente.',
'undelete-fieldset-title' => 'Restaurar as revisións',
-'undeleteextrahelp' => "Para restaurar o historial dunha páxina ao completo, deixe todas as caixas sen marcar e prema en '''''Restaurar'''''.
-Para realizar unha recuperación parcial, marque só aquelas caixas que correspondan ás revisións que se queiran recuperar e prema en '''''Restaurar'''''.
-Ao premer en '''''Limpar''''', bórranse o campo do comentario e todas as caixas.",
+'undeleteextrahelp' => "Para restaurar o historial dunha páxina ao completo, deixe todas as caixas sen marcar e prema en '''''{{int:undeletebtn}}'''''.
+Para realizar unha recuperación parcial, marque só aquelas caixas que correspondan ás revisións que se queiran recuperar e prema en '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|revisión arquivada|revisións arquivadas}}',
'undeletehistory' => 'Se restaura a páxina, todas as revisións van ser restauradas no historial.
Se se creou unha páxina nova co mesmo nome desde o seu borrado, as revisións restauradas van aparecer no historial anterior.',
@@ -2303,7 +2371,7 @@ O texto destas revisións eliminadas só está á disposición dos administrador
Comprobe o [[Special:Log/delete|rexistro de borrados]] para ver as entradas recentes no rexistro de páxinas eliminadas e restauradas.",
'undelete-header' => 'Vexa [[Special:Log/delete|no rexistro de borrados]] as páxinas eliminadas recentemente.',
-'undelete-search-box' => 'Buscar páxinas borradas',
+'undelete-search-box' => 'Procurar páxinas borradas',
'undelete-search-prefix' => 'Mostrar as páxinas que comecen por:',
'undelete-search-submit' => 'Procurar',
'undelete-no-results' => 'Non se atoparon páxinas coincidentes no arquivo de eliminacións.',
@@ -2319,9 +2387,12 @@ $1',
'undelete-show-file-submit' => 'Si',
# Namespace form on various pages
-'namespace' => 'Espazo de nomes:',
-'invert' => 'Inverter a selección',
-'blanknamespace' => '(Principal)',
+'namespace' => 'Espazo de nomes:',
+'invert' => 'Inverter a selección',
+'tooltip-invert' => 'Marque esta caixa para agochar os cambios nas páxinas pertencentes ao espazo de nomes seleccionado (e o espazo de nomes asociado, se escolleu a opción)',
+'namespace_association' => 'Espazo de nomes asociado',
+'tooltip-namespace_association' => 'Marque esta caixa para incluír tamén o espazo de nomes de conversa ou de contidos asociado a aquel seleccionado',
+'blanknamespace' => '(Principal)',
# Contributions
'contributions' => 'Contribucións {{GENDER:{{BASEPAGENAME}}|do usuario|da usuaria}}',
@@ -2370,13 +2441,15 @@ Velaquí está a última entrada do rexistro de bloqueos, por se quere consultal
'whatlinkshere-filters' => 'Filtros',
# Block/unblock
+'autoblockid' => 'Bloqueo automático nº$1',
+'block' => 'Bloquear un usuario',
+'unblock' => 'Desbloquear un usuario',
'blockip' => 'Bloquear o usuario',
'blockip-title' => 'Bloquear un usuario',
'blockip-legend' => 'Bloquear un usuario',
'blockiptext' => 'Use o seguinte formulario para bloquear o acceso de escritura desde un enderezo IP ou para bloquear un usuario específico.
Isto debería facerse só para previr vandalismo, e de acordo coa [[{{MediaWiki:Policy-url}}|política e normas]] vixentes.
Explique a razón específica do bloqueo (por exemplo, citando as páxinas concretas que sufriron vandalismo).',
-'ipaddress' => 'Enderezo IP:',
'ipadressorusername' => 'Enderezo IP ou nome de usuario:',
'ipbexpiry' => 'Duración:',
'ipbreason' => 'Motivo:',
@@ -2389,7 +2462,7 @@ Explique a razón específica do bloqueo (por exemplo, citando as páxinas concr
** Comportamento intimidatorio/acoso
** Abuso de múltiples contas de usuario
** Nome de usuario inaceptábel',
-'ipbanononly' => 'Bloquear só os usuarios anónimos',
+'ipb-hardblock' => 'Impedir que usuarios rexistrados editen desde este enderezo IP',
'ipbcreateaccount' => 'Previr a creación de contas',
'ipbemailban' => 'Impedir que o usuario envíe correos electrónicos',
'ipbenableautoblock' => 'Bloquear automaticamente o último enderezo IP utilizado por este usuario, e calquera outro enderezo desde o que intente editar',
@@ -2400,12 +2473,15 @@ Explique a razón específica do bloqueo (por exemplo, citando as páxinas concr
'ipbotherreason' => 'Outro motivo:',
'ipbhidename' => 'Agochar o nome de usuario nas edicións e listas',
'ipbwatchuser' => 'Vixiar a páxina de usuario e a de conversa deste usuario',
-'ipballowusertalk' => 'Permitir que este usuario poida editar a súa páxina de conversa mentres estea bloqueado',
+'ipb-disableusertalk' => 'Impedir que o usuario edite a súa propia páxina de conversa mentres dure o bloqueo',
'ipb-change-block' => 'Volver bloquear o usuario con estas configuracións',
+'ipb-confirm' => 'Confirmar o bloqueo',
'badipaddress' => 'O enderezo IP non é válido',
'blockipsuccesssub' => 'Bloqueo exitoso',
'blockipsuccesstext' => 'O enderezo IP [[Special:Contributions/$1|$1]] foi bloqueado.<br />
Olle a [[Special:IPBlockList|lista de enderezos IP e usuarios bloqueados]] para revisalo.',
+'ipb-blockingself' => 'Está a piques de se bloquear! Está seguro de querer facelo?',
+'ipb-confirmhideuser' => 'Está a piques de bloquear un usuario coa opción "agochar o usuario" activada. Isto suprime o nome de usuario de todas as listas e entradas de rexistro. Está seguro de querer facelo?',
'ipb-edit-dropdown' => 'Editar os motivos de bloqueo',
'ipb-unblock-addr' => 'Desbloquear a "$1"',
'ipb-unblock' => 'Desbloquear un usuario ou enderezo IP',
@@ -2415,17 +2491,23 @@ Olle a [[Special:IPBlockList|lista de enderezos IP e usuarios bloqueados]] para
'unblockiptext' => 'Use o seguinte formulario para dar de novo acceso de escritura a un enderezo IP ou usuario que estea bloqueado.',
'ipusubmit' => 'Retirar este bloqueo',
'unblocked' => '"[[User:$1|$1]]" foi desbloqueado',
+'unblocked-range' => '$1 foi desbloqueado',
'unblocked-id' => 'O bloqueo $1 foi eliminado',
+'blocklist' => 'Usuarios bloqueados',
'ipblocklist' => 'Usuarios bloqueados',
'ipblocklist-legend' => 'Buscar un usuario bloqueado',
-'ipblocklist-username' => 'Nome de usuario ou enderezo IP:',
-'ipblocklist-sh-userblocks' => '$1 os bloqueos de contas',
-'ipblocklist-sh-tempblocks' => '$1 os bloqueos temporais',
-'ipblocklist-sh-addressblocks' => '$1 os bloqueos a enderezos IP únicos',
+'blocklist-userblocks' => 'Agochar os bloqueos de contas',
+'blocklist-tempblocks' => 'Agochar os bloqueos temporais',
+'blocklist-addressblocks' => 'Agochar os bloqueos a enderezos IP únicos',
+'blocklist-timestamp' => 'Data e hora',
+'blocklist-target' => 'Destino',
+'blocklist-expiry' => 'Caduca',
+'blocklist-by' => 'Administrador que realizou o bloqueo',
+'blocklist-params' => 'Parámetros de bloqueo',
+'blocklist-reason' => 'Motivo',
'ipblocklist-submit' => 'Procurar',
'ipblocklist-localblock' => 'Bloqueo local',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Outro bloqueo|Outros bloqueos}}',
-'blocklistline' => '$1, $2 bloqueou a "$3" ($4)',
'infiniteblock' => 'para sempre',
'expiringblock' => 'remata o $1 ás $2',
'anononlyblock' => 'só anón.',
@@ -2448,7 +2530,7 @@ O motivo do bloqueo de $1 é: "$2"',
'reblock-logentry' => 'cambiou as configuracións do bloqueo de "[[$1]]" cunha caducidade de $2 $3',
'blocklogtext' => 'Este é o rexistro das accións de bloqueo e desbloqueo de usuarios.
Non se listan os enderezos IP bloqueados automaticamente.
-Olle a [[Special:IPBlockList|lista de enderezos IP e usuarios bloqueados]] se quere comprobar a lista cos bloqueos vixentes.',
+Olle a [[Special:BlockList|lista de enderezos IP e usuarios bloqueados]] se quere comprobar a lista cos bloqueos vixentes.',
'unblocklogentry' => 'desbloqueou a "$1"',
'block-log-flags-anononly' => 'só os usuarios anónimos',
'block-log-flags-nocreate' => 'desactivada a creación de contas de usuario',
@@ -2462,9 +2544,9 @@ Olle a [[Special:IPBlockList|lista de enderezos IP e usuarios bloqueados]] se qu
'ipb_expiry_temp' => 'Os bloqueos a nomes de usuario agochados deberían ser permanentes.',
'ipb_hide_invalid' => 'Incapaz de suprimir esta conta; pode que teña moitas edicións.',
'ipb_already_blocked' => '"$1" xa está bloqueado',
-'ipb-needreblock' => '== Xa está bloqueado ==
-"$1" xa está bloqueado. Quere cambiar as configuracións?',
+'ipb-needreblock' => '"$1" xa está bloqueado. Quere cambiar as configuracións?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Outro bloqueo|Outros bloqueos}}',
+'unblock-hideuser' => 'Non pode desbloquear o usuario porque o seu nome foi agochado.',
'ipb_cant_unblock' => 'Erro: Non se atopa o identificador do bloqueo $1. Posiblemente xa foi desbloqueado.',
'ipb_blocked_as_range' => 'Erro: O enderezo IP $1 non está bloqueado directamente e non se pode desbloquear. Porén, está bloqueado por estar no rango $2, que si se pode desbloquear.',
'ip_range_invalid' => 'Rango IP non válido.',
@@ -2502,6 +2584,7 @@ Lembre [[Special:UnlockDB|eliminar o bloqueo]] unha vez completado o seu manteme
'unlockdbsuccesstext' => 'A base de datos foi desbloqueada.',
'lockfilenotwritable' => 'Non se pode escribir no ficheiro de bloqueo da base de datos. Para bloquear ou desbloquear a base de datos, o servidor web ten que poder escribir neste ficheiro.',
'databasenotlocked' => 'A base de datos non está bloqueada.',
+'lockedbyandtime' => '(por $1 o $2 ás $3)',
# Move page
'move-page' => 'Mover "$1"',
@@ -2624,8 +2707,8 @@ No último caso, pode usar tamén unha ligazón, por exemplo [[{{#Special:Export
'allmessagesdefault' => 'Texto predeterminado',
'allmessagescurrent' => 'Texto actual',
'allmessagestext' => 'Esta é unha lista de todas as mensaxes dispoñibles no espazo de nomes MediaWiki.
-Por favor, visite a [http://www.mediawiki.org/wiki/Localisation localización MediaWiki] e [http://translatewiki.net translatewiki.net] se quere contribuír á localización xenérica de MediaWiki.',
-'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' non está dispoñíbel porque '''\$wgUseDatabaseMessages''' está desactivado.",
+Por favor, visite a [//www.mediawiki.org/wiki/Localisation localización MediaWiki] e [//translatewiki.net translatewiki.net] se quere contribuír á localización xenérica de MediaWiki.',
+'allmessagesnotsupportedDB' => "Esta páxina non está dispoñíbel porque '''\$wgUseDatabaseMessages''' está desactivado.",
'allmessages-filter-legend' => 'Filtrar',
'allmessages-filter' => 'Filtrar por estado de personalización:',
'allmessages-filter-unmodified' => 'Inalteradas',
@@ -2756,41 +2839,48 @@ Gárdeo no seu disco duro e cárgueo aquí.',
'tooltip-watch' => 'Engadir esta páxina á súa lista de vixilancia',
'tooltip-recreate' => 'Recrear a páxina a pesar de que foi borrada',
'tooltip-upload' => 'Iniciar o envío',
-'tooltip-rollback' => '"Reverter" desfai, cun só clic, a(s) edición(s) feita(s) nesta páxina polo último colaborador.',
+'tooltip-rollback' => '"Reverter" desfai, cun único clic, a(s) edición(s) feita(s) nesta páxina polo último colaborador.',
'tooltip-undo' => '"Desfacer" reverte esta edición e abre o formulario de edición nun modo previo. Permite engadir un motivo no resumo de edición.',
'tooltip-preferences-save' => 'Gardar as preferencias',
'tooltip-summary' => 'Escriba un breve resumo',
# Stylesheets
-'common.css' => '/** O CSS que se coloque aquí será aplicado a todas as aparencias */',
-'standard.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Clásica */',
-'nostalgia.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Morriña */',
-'cologneblue.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Azul colonial */',
-'monobook.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Monobook */',
-'myskin.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia A miña aparencia */',
-'chick.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Parrulo */',
-'simple.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Sinxela */',
-'modern.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Moderna */',
-'vector.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Vector */',
-'print.css' => '/* O CSS que se coloque aquí afectará ás impresións */',
-'handheld.css' => '/* O CSS que se coloque aquí afectará aos dispositivos móbiles baseados na aparencia configurada en $wgHandheldStyle */',
+'common.css' => '/** O CSS que se coloque aquí será aplicado a todas as aparencias */',
+'standard.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Clásica */',
+'nostalgia.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Morriña */',
+'cologneblue.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Azul colonial */',
+'monobook.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Monobook */',
+'myskin.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia A miña aparencia */',
+'chick.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Parrulo */',
+'simple.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Sinxela */',
+'modern.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Moderna */',
+'vector.css' => '/* O CSS que se coloque aquí afectará a quen use a aparencia Vector */',
+'print.css' => '/* O CSS que se coloque aquí afectará ás impresións */',
+'handheld.css' => '/* O CSS que se coloque aquí afectará aos dispositivos móbiles baseados na aparencia configurada en $wgHandheldStyle */',
+'noscript.css' => '/* O CSS que se coloque aquí afectará aos usuarios co JavaScript desactivado */',
+'group-autoconfirmed.css' => '/* O CSS que se coloque aquí afectará soamente aos usuarios autoconfirmados */',
+'group-bot.css' => '/* O CSS que se coloque aquí afectará soamente aos bots */',
+'group-sysop.css' => '/* O CSS que se coloque aquí afectará soamente aos administradores */',
+'group-bureaucrat.css' => '/* O CSS que se coloque aquí afectará soamente aos burócratas */',
# Scripts
-'common.js' => '/* Calquera JavaScript que haxa aquí será cargado para todos os usuarios en cada páxina que vexan. */',
-'standard.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Clásica */',
-'nostalgia.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Morriña */',
-'cologneblue.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Azul colonial */',
-'monobook.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia MonoBook */',
-'myskin.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia A miña aparencia */',
-'chick.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Parrulo */',
-'simple.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Sinxela */',
-'modern.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Moderna */',
-'vector.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Vector */',
+'common.js' => '/* Calquera JavaScript que haxa aquí será cargado para todos os usuarios en cada páxina que vexan. */',
+'standard.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Clásica */',
+'nostalgia.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Morriña */',
+'cologneblue.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Azul colonial */',
+'monobook.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia MonoBook */',
+'myskin.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia A miña aparencia */',
+'chick.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Parrulo */',
+'simple.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Sinxela */',
+'modern.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Moderna */',
+'vector.js' => '/* Calquera JavaScript que haxa aquí será cargado para os usuarios que usen a aparencia Vector */',
+'group-autoconfirmed.js' => '/* Calquera JavaScript que haxa aquí será cargado soamente para os usuarios autoconfirmados */',
+'group-bot.js' => '/* Calquera JavaScript que haxa aquí será cargado soamente para os bots */',
+'group-sysop.js' => '/* Calquera JavaScript que haxa aquí será cargado soamente para os administradores */',
+'group-bureaucrat.js' => '/* Calquera JavaScript que haxa aquí será cargado soamente para os burócratas */',
# Metadata
-'nodublincore' => 'A opción de metadatos RDF do Dublin Core está desactivada neste servidor.',
-'nocreativecommons' => 'A opción de metadatos Creative Commons RDF está desactivada neste servidor.',
-'notacceptable' => 'O servidor do wiki non pode fornecer os datos nun formato que o seu cliente poida ler.',
+'notacceptable' => 'O servidor do wiki non pode fornecer os datos nun formato que o seu cliente poida ler.',
# Attribution
'anonymous' => '{{PLURAL:$1|Usuario anónimo|Usuarios anónimos}} de {{SITENAME}}',
@@ -2805,21 +2895,26 @@ Gárdeo no seu disco duro e cárgueo aquí.',
'nocredits' => 'Non hai información de créditos dispoñíbel para esta páxina.',
# Spam protection
-'spamprotectiontitle' => "Filtro de protección de ''spam''",
-'spamprotectiontext' => "A páxina que quixo gardar foi bloqueada polo filtro ''antispam''.
-Isto, probabelmente, se debe a unha ligazón cara a un sitio externo que está na lista negra.",
-'spamprotectionmatch' => "O seguinte texto foi o que activou o noso filtro de ''spam'': $1",
-'spambot_username' => "MediaWiki limpeza de ''spam''",
+'spamprotectiontitle' => 'Filtro de protección de spam',
+'spamprotectiontext' => 'A páxina que quixo gardar foi bloqueada polo filtro antispam.
+Isto, probabelmente, se debe a unha ligazón cara a un sitio externo que está na lista negra.',
+'spamprotectionmatch' => 'O seguinte texto foi o que activou o noso filtro de spam: $1',
+'spambot_username' => 'Limpeza de spam de MediaWiki',
'spam_reverting' => 'Revertida á última edición sen ligazóns a $1',
'spam_blanking' => 'Limpáronse todas as revisións con ligazóns a "$1"',
# Info page
-'infosubtitle' => 'Información da páxina',
-'numedits' => 'Número de edicións (artigo): $1',
-'numtalkedits' => 'Número de edicións (páxina de conversa): $1',
-'numwatchers' => 'Número de vixiantes: $1',
-'numauthors' => 'Número de autores distintos (artigo): $1',
-'numtalkauthors' => 'Número de autores distintos (páxina de conversa): $1',
+'pageinfo-title' => 'Información sobre "$1"',
+'pageinfo-header-edits' => 'Edicións',
+'pageinfo-header-watchlist' => 'Lista de vixilancia',
+'pageinfo-header-views' => 'Visitas',
+'pageinfo-subjectpage' => 'Páxina',
+'pageinfo-talkpage' => 'Páxina de conversa',
+'pageinfo-watchers' => 'Número de vixiantes',
+'pageinfo-edits' => 'Número de edicións',
+'pageinfo-authors' => 'Número de autores distintos',
+'pageinfo-views' => 'Número de visitas',
+'pageinfo-viewsperedit' => 'Visitas por edición',
# Skin names
'skinname-standard' => 'Clásica',
@@ -2831,25 +2926,6 @@ Isto, probabelmente, se debe a unha ligazón cara a un sitio externo que está n
'skinname-simple' => 'Sinxela',
'skinname-modern' => 'Moderna',
-# Math options
-'mw_math_png' => 'Orixinar sempre unha imaxe PNG',
-'mw_math_simple' => 'HTML se é moi simple, en caso contrario PNG',
-'mw_math_html' => 'Se é posible HTML, se non PNG',
-'mw_math_source' => 'Deixalo como TeX (para navegadores de texto)',
-'mw_math_modern' => 'Recomendado para as versións recentes dos navegadores',
-'mw_math_mathml' => 'MathML se é posible (experimental)',
-
-# Math errors
-'math_failure' => 'Fallou a conversión do código',
-'math_unknown_error' => 'erro descoñecido',
-'math_unknown_function' => 'función descoñecida',
-'math_lexing_error' => 'erro de léxico',
-'math_syntax_error' => 'erro de sintaxe',
-'math_image_error' => 'Fallou a conversión a PNG; comprobe que latex, dvips, gs e convert están ben instalados (ou dvips + gs + convert)',
-'math_bad_tmpdir' => 'Non se puido crear ou escribir no directorio temporal de fórmulas',
-'math_bad_output' => 'Non se puido crear ou escribir no directorio de saída de fórmulas',
-'math_notexvc' => 'Falta o executable texvc. Por favor consulte math/README para configurar.',
-
# Patrolling
'markaspatrolleddiff' => 'Marcar como revisada',
'markaspatrolledtext' => 'Marcar esta páxina como revisada',
@@ -2885,22 +2961,25 @@ $1',
'nextdiff' => 'Edición máis nova →',
# Media information
-'mediawarning' => "'''Aviso:''' este tipo de ficheiro pode conter código malicioso.
+'mediawarning' => "'''Aviso:''' Este tipo de ficheiro pode conter código malicioso.
O seu sistema pode quedar comprometido se o executa.",
-'imagemaxsize' => "Límite de tamaño das imaxes:<br />''(nas páxinas de descrición de ficheiros)''",
-'thumbsize' => 'Tamaño da miniatura:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|páxina|páxinas}}',
-'file-info' => 'Tamaño do ficheiro: $1, tipo MIME: $2',
-'file-info-size' => '$1 × $2 píxeles, tamaño do ficheiro: $3, tipo MIME: $4',
-'file-nohires' => '<small>Non se dispón dunha resolución máis grande.</small>',
-'svg-long-desc' => 'ficheiro SVG, nominalmente $1 × $2 píxeles, tamaño do ficheiro: $3',
-'show-big-image' => 'Imaxe na máxima resolución',
-'show-big-image-thumb' => '<small>Tamaño desta presentación da imaxe: $1 × $2 píxeles</small>',
-'file-info-gif-looped' => 'en bucle',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|fotograma|fotogramas}}',
-'file-info-png-looped' => 'en bucle',
-'file-info-png-repeat' => 'reproducido $1 {{PLURAL:$1|vez|veces}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|fotograma|fotogramas}}',
+'imagemaxsize' => "Límite de tamaño das imaxes:<br />''(nas páxinas de descrición de ficheiros)''",
+'thumbsize' => 'Tamaño da miniatura:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|páxina|páxinas}}',
+'file-info' => 'Tamaño do ficheiro: $1, tipo MIME: $2',
+'file-info-size' => '$1 × $2 píxeles, tamaño do ficheiro: $3, tipo MIME: $4',
+'file-info-size-pages' => '$1 × $2 píxeles, tamaño do ficheiro: $3, tipo MIME: $4, $5 {{PLURAL:$5|páxina|páxinas}}',
+'file-nohires' => '<small>Non se dispón dunha resolución máis grande.</small>',
+'svg-long-desc' => 'ficheiro SVG, nominalmente $1 × $2 píxeles, tamaño do ficheiro: $3',
+'show-big-image' => 'Imaxe na máxima resolución',
+'show-big-image-preview' => '<small>Tamaño desta vista previa: $1.</small>',
+'show-big-image-other' => '<small>Outras resolucións: $1.</small>',
+'show-big-image-size' => '$1 × $2 píxeles',
+'file-info-gif-looped' => 'en bucle',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|fotograma|fotogramas}}',
+'file-info-png-looped' => 'en bucle',
+'file-info-png-repeat' => 'reproducido $1 {{PLURAL:$1|vez|veces}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|fotograma|fotogramas}}',
# Special:NewFiles
'newimages' => 'Galería de imaxes novas',
@@ -2929,7 +3008,7 @@ As ligazóns posteriores da mesma liña considéranse excepcións, isto é, páx
'metadata-help' => 'Este ficheiro contén información adicional, probabelmente engadida pola cámara dixital ou polo escáner usado para crear ou dixitalizar a imaxe. Se o ficheiro orixinal foi modificado, pode que algúns detalles non se reflictan no ficheiro modificado.',
'metadata-expand' => 'Mostrar os detalles',
'metadata-collapse' => 'Agochar os detalles',
-'metadata-fields' => 'Os campos de datos meta EXIF listados nesta mensaxe incluiranse ao exhibir a páxina da imaxe cando se reduza a táboa dos datos meta.
+'metadata-fields' => 'Os campos de metadatos listados nesta mensaxe incluiranse na páxina da imaxe ao contraer a táboa dos metadatos.
Os demais agocharanse por omisión.
* make
* model
@@ -2937,7 +3016,13 @@ Os demais agocharanse por omisión.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Ancho',
@@ -2952,13 +3037,11 @@ Os demais agocharanse por omisión.
'exif-ycbcrpositioning' => 'Posicionamentos Y e C',
'exif-xresolution' => 'Resolución horizontal',
'exif-yresolution' => 'Resolución vertical',
-'exif-resolutionunit' => 'Unidade de resolución X e Y',
'exif-stripoffsets' => 'Localización dos datos da imaxe',
'exif-rowsperstrip' => 'Número de filas por tira',
'exif-stripbytecounts' => 'Bytes por tira comprimida',
'exif-jpeginterchangeformat' => 'Distancia ao inicio (SOI) do JPEG',
'exif-jpeginterchangeformatlength' => 'Bytes de datos JPEG',
-'exif-transferfunction' => 'Función de transferencia',
'exif-whitepoint' => 'Coordenadas cromáticas de referencia do branco',
'exif-primarychromaticities' => 'Cromacidades primarias',
'exif-ycbcrcoefficients' => 'Coeficientes da matriz de transformación do espazo de cores',
@@ -2977,7 +3060,6 @@ Os demais agocharanse por omisión.
'exif-compressedbitsperpixel' => 'Modo de compresión da imaxe',
'exif-pixelydimension' => 'Ancho da imaxe',
'exif-pixelxdimension' => 'Altura da imaxe',
-'exif-makernote' => 'Notas do fabricante',
'exif-usercomment' => 'Comentarios do usuario',
'exif-relatedsoundfile' => 'Ficheiro de son relacionado',
'exif-datetimeoriginal' => 'Data e hora de xeración do ficheiro',
@@ -2991,7 +3073,6 @@ Os demais agocharanse por omisión.
'exif-exposureprogram' => 'Programa de exposición',
'exif-spectralsensitivity' => 'Sensibilidade espectral',
'exif-isospeedratings' => 'Relación da velocidade ISO',
-'exif-oecf' => 'Factor de conversión optoelectrónica',
'exif-shutterspeedvalue' => 'Velocidade de obturación APEX',
'exif-aperturevalue' => 'Apertura APEX',
'exif-brightnessvalue' => 'Brillo APEX',
@@ -3004,7 +3085,6 @@ Os demais agocharanse por omisión.
'exif-focallength' => 'Lonxitude focal',
'exif-subjectarea' => 'Ãrea do suxeito',
'exif-flashenergy' => 'Enerxía do flash',
-'exif-spatialfrequencyresponse' => 'Resposta de frecuencia espacial',
'exif-focalplanexresolution' => 'Resolución X do plano focal',
'exif-focalplaneyresolution' => 'Resolución Y do plano focal',
'exif-focalplaneresolutionunit' => 'Unidade de resolución do plano focal',
@@ -3013,7 +3093,6 @@ Os demais agocharanse por omisión.
'exif-sensingmethod' => 'Tipo de sensor',
'exif-filesource' => 'Fonte do ficheiro',
'exif-scenetype' => 'Tipo de escena',
-'exif-cfapattern' => 'Patrón da matriz de filtro de cor',
'exif-customrendered' => 'Procesamento da imaxe personalizado',
'exif-exposuremode' => 'Modo de exposición',
'exif-whitebalance' => 'Balance de brancos',
@@ -3058,10 +3137,80 @@ Os demais agocharanse por omisión.
'exif-gpsareainformation' => 'Nome da área GPS',
'exif-gpsdatestamp' => 'Data do GPS',
'exif-gpsdifferential' => 'Corrección diferencial do GPS',
+'exif-jpegfilecomment' => 'Comentario do ficheiro JPEG',
+'exif-keywords' => 'Palabras clave',
+'exif-worldregioncreated' => 'Rexión do mundo onde se tirou a foto',
+'exif-countrycreated' => 'País onde se tirou a foto',
+'exif-countrycodecreated' => 'Código do país onde se tirou a foto',
+'exif-provinceorstatecreated' => 'Provincia ou estado onde se tirou a foto',
+'exif-citycreated' => 'Cidade onde se tirou a foto',
+'exif-sublocationcreated' => 'Sublocalización da cidade onde se tirou a foto',
+'exif-worldregiondest' => 'Rexión do mundo mostrada',
+'exif-countrydest' => 'País mostrado',
+'exif-countrycodedest' => 'Código do país mostrado',
+'exif-provinceorstatedest' => 'Provincia ou estado mostrado',
+'exif-citydest' => 'Cidade mostrada',
+'exif-sublocationdest' => 'Sublocalización da cidade mostrada',
'exif-objectname' => 'Título curto',
+'exif-specialinstructions' => 'Instrucións especiais',
+'exif-headline' => 'Cabeceira',
+'exif-credit' => 'Créditos/Provedor',
+'exif-source' => 'Orixe',
+'exif-editstatus' => 'Estado editorial da imaxe',
+'exif-urgency' => 'Urxencia',
+'exif-fixtureidentifier' => 'Nome do elemento habitual',
+'exif-locationdest' => 'Localización representada',
+'exif-locationdestcode' => 'Código da localización representada',
+'exif-objectcycle' => 'Hora do día para o que está destinado',
+'exif-contact' => 'Información de contacto',
+'exif-writer' => 'Escritor',
+'exif-languagecode' => 'Lingua',
+'exif-iimversion' => 'Versión IIM',
+'exif-iimcategory' => 'Categoría',
+'exif-iimsupplementalcategory' => 'Categorías suplementarias',
+'exif-datetimeexpires' => 'Non utilizar despois do',
+'exif-datetimereleased' => 'Publicado o',
+'exif-originaltransmissionref' => 'Código orixinal do lugar de transmisión',
+'exif-identifier' => 'Identificador',
+'exif-lens' => 'Lente usada',
+'exif-serialnumber' => 'Número de serie da cámara',
+'exif-cameraownername' => 'Propietario da cámara',
+'exif-label' => 'Etiqueta',
+'exif-datetimemetadata' => 'Data da última modificación dos metadatos',
+'exif-nickname' => 'Nome informal da imaxe',
+'exif-rating' => 'Valoración (sobre 5)',
+'exif-rightscertificate' => 'Certificado de xestión dos dereitos',
+'exif-copyrighted' => 'Estado dos dereitos de autor',
+'exif-copyrightowner' => 'Propietario dos dereitos de autor',
+'exif-usageterms' => 'Termos de uso',
+'exif-webstatement' => 'Declaración de dereitos de autor en liña',
+'exif-originaldocumentid' => 'Identificación única do documento orixinal',
+'exif-licenseurl' => 'URL da licenza',
+'exif-morepermissionsurl' => 'Información de licenza alternativa',
+'exif-attributionurl' => 'Ao reusar esta obra, cómpre ligar cara a',
+'exif-preferredattributionname' => 'Ao reusar esta obra, cómpre atribuír os dereitos a',
+'exif-pngfilecomment' => 'Comentario do ficheiro PNG',
+'exif-disclaimer' => 'Advertencia',
+'exif-contentwarning' => 'Aviso sobre o contido',
+'exif-giffilecomment' => 'Comentario do ficheiro GIF',
+'exif-intellectualgenre' => 'Tipo de elemento',
+'exif-subjectnewscode' => 'Código do tema',
+'exif-scenecode' => 'Código de escena IPTC',
+'exif-event' => 'Evento representado',
+'exif-organisationinimage' => 'Organización representada',
+'exif-personinimage' => 'Persoa retratada',
+'exif-originalimageheight' => 'Altura da imaxe antes de ser cortada',
+'exif-originalimagewidth' => 'Ancho da imaxe antes de ser cortada',
# EXIF attributes
'exif-compression-1' => 'Sen comprimir',
+'exif-compression-2' => 'CCITT Grupo 3 Lonxitude de codificación unidimensional Huffman modificada',
+'exif-compression-3' => 'CCITT Grupo 3 codificación de fax',
+'exif-compression-4' => 'CCITT Grupo 4 codificación de fax',
+'exif-compression-6' => 'JPEG (vello)',
+
+'exif-copyrighted-true' => 'Con dereitos de autor',
+'exif-copyrighted-false' => 'Dominio público',
'exif-unknowndate' => 'Data descoñecida',
@@ -3077,6 +3226,8 @@ Os demais agocharanse por omisión.
'exif-planarconfiguration-1' => 'Formato de paquete de píxeles',
'exif-planarconfiguration-2' => 'Formato de planos',
+'exif-colorspace-65535' => 'Sen calibrar',
+
'exif-componentsconfiguration-0' => 'non hai',
'exif-exposureprogram-0' => 'Sen definir',
@@ -3190,6 +3341,10 @@ Os demais agocharanse por omisión.
'exif-gpslongitude-e' => 'Lonxitude leste',
'exif-gpslongitude-w' => 'Lonxitude oeste',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metro|metros}} sobre o nivel do mar',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metro|metros}} baixo o nivel do mar',
+
'exif-gpsstatus-a' => 'Medida en progreso',
'exif-gpsstatus-v' => 'Interoperabilidade da medida',
@@ -3201,21 +3356,73 @@ Os demais agocharanse por omisión.
'exif-gpsspeed-m' => 'Millas por hora',
'exif-gpsspeed-n' => 'Nós',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Quilómetros',
+'exif-gpsdestdistance-m' => 'Millas',
+'exif-gpsdestdistance-n' => 'Millas náuticas',
+
+'exif-gpsdop-excellent' => 'Excelente ($1)',
+'exif-gpsdop-good' => 'Boa ($1)',
+'exif-gpsdop-moderate' => 'Moderada ($1)',
+'exif-gpsdop-fair' => 'Xusta ($1)',
+'exif-gpsdop-poor' => 'Pobre ($1)',
+
+'exif-objectcycle-a' => 'Mañá soamente',
+'exif-objectcycle-p' => 'Serán soamente',
+'exif-objectcycle-b' => 'Tanto na mañá como no serán',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Dirección verdadeira',
'exif-gpsdirection-m' => 'Dirección magnética',
+'exif-ycbcrpositioning-1' => 'Centrado',
+'exif-ycbcrpositioning-2' => 'Co-localizados',
+
+'exif-dc-contributor' => 'Colaboradores',
+'exif-dc-coverage' => 'Eido espacial ou temporal do contido',
+'exif-dc-date' => 'Data(s)',
+'exif-dc-publisher' => 'Editor',
+'exif-dc-relation' => 'Contidos relacionados',
+'exif-dc-rights' => 'Dereitos',
+'exif-dc-source' => 'Imaxe de orixe',
+'exif-dc-type' => 'Tipo de contido',
+
+'exif-rating-rejected' => 'Rexeitado',
+
+'exif-isospeedratings-overflow' => 'Superior a 65535',
+
+'exif-iimcategory-ace' => 'Arte, cultura e entretemento',
+'exif-iimcategory-clj' => 'Crime e dereito',
+'exif-iimcategory-dis' => 'Desastres e accidentes',
+'exif-iimcategory-fin' => 'Economía e negocios',
+'exif-iimcategory-edu' => 'Educación',
+'exif-iimcategory-evn' => 'Medio ambiente',
+'exif-iimcategory-hth' => 'Saúde',
+'exif-iimcategory-hum' => 'Intereses humanos',
+'exif-iimcategory-lab' => 'Traballo',
+'exif-iimcategory-lif' => 'Estilo de vida e lecer',
+'exif-iimcategory-pol' => 'Política',
+'exif-iimcategory-rel' => 'Relixión e crenzas',
+'exif-iimcategory-sci' => 'Ciencia e tecnoloxía',
+'exif-iimcategory-soi' => 'Cuestións sociais',
+'exif-iimcategory-spo' => 'Deportes',
+'exif-iimcategory-war' => 'Guerras e conflitos',
+'exif-iimcategory-wea' => 'Tempo',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Baixa ($1)',
+'exif-urgency-high' => 'Alta ($1)',
+'exif-urgency-other' => 'Prioridade definida polo usuario ($1)',
+
# External editor support
'edit-externally' => 'Editar este ficheiro cunha aplicación externa',
-'edit-externally-help' => '(Vexa as seguintes [http://www.mediawiki.org/wiki/Manual:External_editors instrucións] <small>(en inglés)</small> para obter máis información)',
+'edit-externally-help' => '(Vexa as seguintes [//www.mediawiki.org/wiki/Manual:External_editors instrucións] <small>(en inglés)</small> para obter máis información)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'todos',
-'imagelistall' => 'todas',
-'watchlistall2' => 'todo',
-'namespacesall' => 'todos',
-'monthsall' => 'todos',
-'limitall' => 'todas',
+'watchlistall2' => 'todo',
+'namespacesall' => 'todos',
+'monthsall' => 'todos',
+'limitall' => 'todas',
# E-mail address confirmation
'confirmemail' => 'Confirmar o enderezo de correo electrónico',
@@ -3298,17 +3505,24 @@ $1',
'trackbackdeleteok' => 'O trackback foi eliminado sen problemas.',
# Delete conflict
-'deletedwhileediting' => "'''Aviso:''' Esta páxina foi borrada despois de que comezase a editala!",
-'confirmrecreate' => "O usuario [[User:$1|$1]] ([[User talk:$1|conversa]]) borrou este artigo despois de que vostede comezara a editalo, dando o seguinte motivo:
+'deletedwhileediting' => "'''Aviso:''' Esta páxina foi borrada despois de que comezase a editala!",
+'confirmrecreate' => "O usuario [[User:$1|$1]] ([[User talk:$1|conversa]]) borrou este artigo despois de que vostede comezara a editalo, dando o seguinte motivo:
: ''$2''
Por favor, confirme que realmente quere recrear esta páxina.",
-'recreate' => 'Recrear',
+'confirmrecreate-noreason' => 'O usuario [[User:$1|$1]] ([[User talk:$1|conversa]]) borrou esta páxina despois de que vostede comezara a editala. Por favor, confirme que realmente quere recrear esta páxina.',
+'recreate' => 'Recrear',
# action=purge
'confirm_purge_button' => 'Aceptar',
'confirm-purge-top' => 'Quere limpar a memoria caché desta páxina?',
'confirm-purge-bottom' => 'Ao purgar unha páxina, límpase a memoria caché e isto obriga tamén a que apareza a versión máis recente da páxina.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Aceptar',
+'confirm-watch-top' => 'Quere engadir esta páxina á lista de vixilancia?',
+'confirm-unwatch-button' => 'Aceptar',
+'confirm-unwatch-top' => 'Quere eliminar esta páxina da lista de vixilancia?',
+
# Separators for various lists, etc.
'colon-separator' => ':&#32;',
@@ -3357,14 +3571,14 @@ Probe coa vista previa normal.',
'watchlistedit-normal-legend' => 'Eliminar títulos da lista de vixilancia',
'watchlistedit-normal-explain' => 'Os títulos da súa lista de vixilancia aparecen a continuación.
Para eliminar un título, escóllao na súa caixa de selección e prema en "{{int:Watchlistedit-normal-submit}}".
-Tamén pode [[Special:Watchlist/raw|editar a lista simple]].',
+Tamén pode [[Special:EditWatchlist/raw|editar a lista simple]].',
'watchlistedit-normal-submit' => 'Eliminar os títulos',
'watchlistedit-normal-done' => '{{PLURAL:$1|Eliminouse un título|Elimináronse $1 títulos}} da súa lista de vixilancia:',
'watchlistedit-raw-title' => 'Editar a lista de vixilancia simple',
'watchlistedit-raw-legend' => 'Editar a lista de vixilancia simple',
'watchlistedit-raw-explain' => 'Os títulos da súa lista de vixilancia aparecen a continuación. Pódense editar engadíndoos ou retirándoos da lista; un título por liña.
Ao rematar, prema en "{{int:Watchlistedit-raw-submit}}".
-Tamén pode [[Special:Watchlist/edit|empregar o editor normal]].',
+Tamén pode [[Special:EditWatchlist|empregar o editor normal]].',
'watchlistedit-raw-titles' => 'Títulos:',
'watchlistedit-raw-submit' => 'Actualizar a lista de vixilancia',
'watchlistedit-raw-done' => 'Actualizouse a súa lista de vixilancia.',
@@ -3381,33 +3595,33 @@ Tamén pode [[Special:Watchlist/edit|empregar o editor normal]].',
'duplicate-defaultsort' => '\'\'\'Aviso:\'\'\' A clave de ordenación por defecto "$2" anula a clave de ordenación anterior por defecto "$1".',
# Special:Version
-'version' => 'Versión',
-'version-extensions' => 'Extensións instaladas',
-'version-specialpages' => 'Páxinas especiais',
-'version-parserhooks' => 'Asociadores analíticos',
-'version-variables' => 'Variábeis',
-'version-skins' => 'Aparencias',
-'version-other' => 'Outros',
-'version-mediahandlers' => 'Executadores de multimedia',
-'version-hooks' => 'Asociadores',
-'version-extension-functions' => 'Funcións das extensións',
-'version-parser-extensiontags' => 'Etiquetas das extensións do analizador',
-'version-parser-function-hooks' => 'Asociadores da función do analizador',
-'version-skin-extension-functions' => 'Funcións da extensión da aparencia',
-'version-hook-name' => 'Nome do asociador',
-'version-hook-subscribedby' => 'Subscrito por',
-'version-version' => '(Versión $1)',
-'version-license' => 'Licenza',
-'version-poweredby-credits' => "Este wiki está desenvolvido por '''[http://www.mediawiki.org/wiki/MediaWiki/gl MediaWiki]''', dereitos de autor © 2001-$1 $2.",
-'version-poweredby-others' => 'outros',
-'version-license-info' => 'MediaWiki é software libre; pode redistribuílo e/ou modificalo segundo os termos da licenza pública xeral GNU publicada pola Free Software Foundation; versión 2 ou (na súa escolla) calquera outra posterior.
-
-MediaWiki distribúese coa esperanza de que poida ser útil, pero SEN NINGUNHA GARANTÃA; nin sequera a garantía implícita de COMERCIALIZACIÓN ou ADECUACIÓN A UNHA FINALIDADE ESPECÃFICA. Olle a licenza pública xeral GNU para obter máis detalles.
-
-Debería recibir [{{SERVER}}{{SCRIPTPATH}}/COPYING unha copia da licenza pública xeral GNU] xunto ao programa; se non é así, escriba á Free Software Foundation, Inc., 51 da rúa Franklin, quinto andar, Boston, MA 02110-1301, Estados Unidos ou [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html lea a licenza en liña].',
-'version-software' => 'Software instalado',
-'version-software-product' => 'Produto',
-'version-software-version' => 'Versión',
+'version' => 'Versión',
+'version-extensions' => 'Extensións instaladas',
+'version-specialpages' => 'Páxinas especiais',
+'version-parserhooks' => 'Asociadores analíticos',
+'version-variables' => 'Variábeis',
+'version-antispam' => 'Prevención contra spam',
+'version-skins' => 'Aparencias',
+'version-other' => 'Outros',
+'version-mediahandlers' => 'Executadores de multimedia',
+'version-hooks' => 'Asociadores',
+'version-extension-functions' => 'Funcións das extensións',
+'version-parser-extensiontags' => 'Etiquetas das extensións do analizador',
+'version-parser-function-hooks' => 'Asociadores da función do analizador',
+'version-hook-name' => 'Nome do asociador',
+'version-hook-subscribedby' => 'Subscrito por',
+'version-version' => '(Versión $1)',
+'version-license' => 'Licenza',
+'version-poweredby-credits' => "Este wiki está desenvolvido por '''[//www.mediawiki.org/wiki/MediaWiki/gl MediaWiki]''', dereitos de autor © 2001-$1 $2.",
+'version-poweredby-others' => 'outros',
+'version-license-info' => 'MediaWiki é software libre; pode redistribuílo e/ou modificalo segundo os termos da licenza pública xeral GNU publicada pola Free Software Foundation; versión 2 ou (na súa escolla) calquera outra posterior.
+
+MediaWiki distribúese coa esperanza de que poida ser útil, pero SEN GARANTÃA NINGUNHA; nin sequera a garantía implícita de COMERCIALIZACIÓN ou ADECUACIÓN A UNHA FINALIDADE ESPECÃFICA. Olle a licenza pública xeral GNU para obter máis detalles.
+
+Debería recibir [{{SERVER}}{{SCRIPTPATH}}/COPYING unha copia da licenza pública xeral GNU] xunto ao programa; se non é así, escriba á Free Software Foundation, Inc., rúa Franklin, número 51, quinto andar, Boston, Massachusetts, 02110-1301, Estados Unidos de América ou [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lea a licenza en liña].',
+'version-software' => 'Software instalado',
+'version-software-product' => 'Produto',
+'version-software-version' => 'Versión',
# Special:FilePath
'filepath' => 'Ruta do ficheiro',
@@ -3417,22 +3631,22 @@ Debería recibir [{{SERVER}}{{SCRIPTPATH}}/COPYING unha copia da licenza públic
As imaxes móstranse na súa resolución completa; outros tipos de ficheiros inícianse directamente co seu programa asociado.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Procurar ficheiros duplicados',
-'fileduplicatesearch-summary' => 'Procurar ficheiros duplicados a partir do valor de <i>hash</i> (un mecanismo de comprobación).
-
-Introduza o nome do ficheiro sen o prefixo "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Procurar un duplicado',
-'fileduplicatesearch-filename' => 'Nome do ficheiro:',
-'fileduplicatesearch-submit' => 'Procurar',
-'fileduplicatesearch-info' => '$1 × $2 píxeles<br />Tamaño do ficheiro: $3<br />Tipo MIME: $4',
-'fileduplicatesearch-result-1' => 'O ficheiro "$1" non ten un duplicado idéntico.',
-'fileduplicatesearch-result-n' => 'O ficheiro "$1" ten {{PLURAL:$2|1 duplicado idéntico|$2 duplicados idénticos}}.',
+'fileduplicatesearch' => 'Procurar ficheiros duplicados',
+'fileduplicatesearch-summary' => 'Procurar ficheiros duplicados a partir do valor de <i>hash</i> (un mecanismo de comprobación).',
+'fileduplicatesearch-legend' => 'Procurar un duplicado',
+'fileduplicatesearch-filename' => 'Nome do ficheiro:',
+'fileduplicatesearch-submit' => 'Procurar',
+'fileduplicatesearch-info' => '$1 × $2 píxeles<br />Tamaño do ficheiro: $3<br />Tipo MIME: $4',
+'fileduplicatesearch-result-1' => 'O ficheiro "$1" non ten un duplicado idéntico.',
+'fileduplicatesearch-result-n' => 'O ficheiro "$1" ten {{PLURAL:$2|1 duplicado idéntico|$2 duplicados idénticos}}.',
+'fileduplicatesearch-noresults' => 'Non se atopou ningún ficheiro chamado "$1".',
# Special:SpecialPages
'specialpages' => 'Páxinas especiais',
'specialpages-note' => '----
* Páxinas especiais normais.
-* <strong class="mw-specialpagerestricted">Páxinas especiais restrinxidas.</strong>',
+* <span class="mw-specialpagerestricted">Páxinas especiais restrinxidas.</span>
+* <span class="mw-specialpagecached">Páxinas especiais só con caché (poden estar desactualizadas).</span>',
'specialpages-group-maintenance' => 'Informes de mantemento',
'specialpages-group-other' => 'Outras páxinas especiais',
'specialpages-group-login' => 'Rexistro',
diff --git a/languages/messages/MessagesGn.php b/languages/messages/MessagesGn.php
index 83537e62..46208d7b 100644
--- a/languages/messages/MessagesGn.php
+++ b/languages/messages/MessagesGn.php
@@ -210,7 +210,6 @@ $messages = array(
'link_tip' => 'Joaju hyepyguávandi',
'extlink_tip' => 'Joaju okapeguávandi (recuerde añadir el prefijo http://)',
'headline_tip' => 'Teraete mokõiha',
-'math_tip' => 'Matemátika kuaareko (LaTeX)',
'nowiki_tip' => "Viki jehaireko ñembo'yke",
'image_tip' => "Ta'ãnga moĩngepyréva",
'media_tip' => "Joaju jehai'aty multimediaguándi",
@@ -475,7 +474,7 @@ Reomĩsérõ ta'ãnga peteĩ kuatiaroguépe, eipuru peteĩ joaju:
'ipblocklist-submit' => 'Heka',
'blocklink' => 'ejoko',
'contribslink' => "mba'emoĩmbyre",
-'blocklogtext' => 'Esto es un registro de bloqueos y desbloqueos de usuarios. Las direcciones bloqueadas automáticamente no aparecen aquí. Consulte la [[Special:IPBlockList|IP mbohape rysýi imbotypyréva]] para ver la lista de prohibiciones y bloqueos actualmente vigente.',
+'blocklogtext' => 'Esto es un registro de bloqueos y desbloqueos de usuarios. Las direcciones bloqueadas automáticamente no aparecen aquí. Consulte la [[Special:BlockList|IP mbohape rysýi imbotypyréva]] para ver la lista de prohibiciones y bloqueos actualmente vigente.',
# Move page
'movearticle' => 'Guerova kuatiarogue',
diff --git a/languages/messages/MessagesGot.php b/languages/messages/MessagesGot.php
index 59b0d821..5f343985 100644
--- a/languages/messages/MessagesGot.php
+++ b/languages/messages/MessagesGot.php
@@ -108,6 +108,7 @@ $messages = array(
'history_short' => 'ðŒ°ðŒ¹ð‚ðŒ¹ðƒ ðŒ¼ðŒ°ðŒ¹ðŒ³ðŒ´ðŒ¹ðŒ½ðƒ',
'printableversion' => 'ðŒ³ð‚ðŒ¹ðŒ¿ðƒðŒ°ðŒ½ ðƒðŒ´ðŒ¹ðŒ³ð‰',
'permalink' => 'ðŒ°ð…ðŒ´ðŒ¹ðŒ½ðƒ ð„ðŒ°ðŒ¹ðŒºðŒ½ðŒ¾ðŒ°ðŒ±ðŒ°ðŒ½ðŒ³ðŒ¹',
+'view' => 'Saíhvan',
'edit' => 'ðŒ¼ðŒ°ðŒ¹ðŒ³ðŒ¾ðŒ°ðŒ½',
'create' => 'Skapjan',
'editthispage' => 'ðŒ¼ðŒ°ðŒ¹ðŒ³ðŒ¾ðŒ° ðŒ¸ð‰ ðƒðŒ´ðŒ¹ðŒ³ð‰',
@@ -203,8 +204,6 @@ $messages = array(
'extlink_tip' => 'Uta táikjabandi (maúdjan http://)',
'headline_sample' => 'Háubidawaúrda',
'headline_tip' => 'Háuhs háubidaboka 2',
-'math_sample' => 'Lagjan formula her',
-'math_tip' => 'Maþemateikaleiks formula (LaTeX)',
'media_tip' => 'Táikjabandjis feilanis',
'hr_tip' => 'Ráihtsbáurd (brukjan miþ niufarussus)',
@@ -496,11 +495,9 @@ $messages = array(
'metadata' => 'Ufardata',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'allis',
-'imagelistall' => 'allis',
-'watchlistall2' => 'allis',
-'namespacesall' => 'allis',
-'monthsall' => 'ðŒ°ðŒ»ðŒ»ðŒ¹ðƒ',
+'watchlistall2' => 'allis',
+'namespacesall' => 'allis',
+'monthsall' => 'ðŒ°ðŒ»ðŒ»ðŒ¹ðƒ',
# Multipage image navigation
'imgmultigo' => 'Afgaggan!',
diff --git a/languages/messages/MessagesGrc.php b/languages/messages/MessagesGrc.php
index bca963b5..83530583 100644
--- a/languages/messages/MessagesGrc.php
+++ b/languages/messages/MessagesGrc.php
@@ -164,14 +164,6 @@ $messages = array(
'index-category' => 'Δέλτοι μετὰ δεικτῶν',
'noindex-category' => 'Δέλτοι ἄνευ δεικτῶν',
-'mainpagetext' => "'''Ἡ á¼Î³ÎºÎ±Ï„άστασις τῆς MediaWiki ἦν á¼Ï€Î¹Ï„υχής'''",
-'mainpagedocfooter' => 'Βουλευθήσεσθε Ï„á½°Ï‚ [http://meta.wikimedia.org/wiki/Help:Contents βουλὰς τοῖς ΧÏωμένοις] ἵνα πληÏοφοÏηθῇτε πεÏὶ τοῦ βίκιλογισμικοῦ.
-
-== ἌÏξασθε ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Διαλογή παÏαμέτÏων διαμοÏφώσεως]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki: τὰ πολλάκις αἰτηθέντα]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Διαλογή διαλέξεων á¼Ï€á½¶ τῶν διανομῶν τῆς MediaWiki]',
-
'about' => 'ΠεÏὶ',
'article' => 'Ἡ á¼Î³Î³Ïαφή',
'newwindow' => '(ἀνοίξεται á¼Î½ νέᾳ θυÏίδι)',
@@ -221,10 +213,10 @@ $messages = array(
'history' => 'Αἱ τῆς δέλτου Ï€ÏότεÏαι',
'history_short' => 'Αἱ Ï€ÏότεÏαι',
'updatedmarker' => 'αἱ δέλτου á¼Î½Î·Î¼ÎµÏώσεις ἀφ’ ὅτε á¼Ï€ÎµÏƒÎºÎ­Ï†Î¸Î·Î½ αá½Ï„ὴν ὑστάτως',
-'info_short' => 'Μάθησις',
'printableversion' => 'Ἐκτυπώσιμος μοÏφή',
'permalink' => 'ΣÏνδεσμος μόνιμος',
'print' => 'Τυποῦν',
+'view' => 'ὉÏᾶν',
'edit' => 'ΜεταγÏάφειν',
'create' => 'Ποιεῖν',
'editthispage' => 'ΜεταγÏάφειν τήνδε τὴν δέλτον',
@@ -315,6 +307,8 @@ $1',
'toc' => 'ΠεÏιεχόμενα',
'showtoc' => 'δεικνÏναι',
'hidetoc' => 'κÏÏπτειν',
+'collapsible-collapse' => 'ΚατάÏÏευσις',
+'collapsible-expand' => 'Ἀνάπτυξις',
'thisisdeleted' => 'ὉÏᾶν á¼¢ ἀποκαθιστάναι $1;',
'viewdeleted' => 'ὉÏᾶν $1;',
'restorelink' => '{{PLURAL:$1|μία διαγεγÏαμμένη μεταγÏαφή|$1 διαγεγÏαμμέναι μεταγÏαφαί}}',
@@ -408,7 +402,6 @@ $1',
'cascadeprotected' => 'Ἥδε ἡ δέλτος πεφÏλακται, διότι συμπεÏιλαμβάνεται á¼Î½ {{PLURAL:$1|τῇ ἑξῆς δέλτῳ á¼¥Ï€ÎµÏ Ï€ÎµÏ†Ï…Î»Î±Î³Î¼Î­Î½Î· á¼ÏƒÏ„ὶ|ταῖς ἑξῆς δέλτοις Î±á¼µÏ€ÎµÏ Ï€ÎµÏ†Ï…Î»Î±Î³Î¼Î­Î½Î±Î¹ εἰσὶ}} μέσῳ τῆς á¼Î½ÎµÏγοποιηθεῖσας διαδοχικῆς Ï€Ïοστασίας á¼Î½ Ï„á¿·:
$2',
'namespaceprotected' => "Οá½Îº ἔξεστί σοι μεταγÏάφειν δέλτους á¼Î½ Ï„á¿· ὀνοματείῳ '''$1'''.",
-'customcssjsprotected' => 'Οá½Îº ἔξεστί σοι μεταγÏάφειν τήνδε τὴν δέλτον, διότι πεÏιέχει Ï€Ïοσωπικὰς ῥυθμίσεις ἑτέÏου χÏωμένου.',
'ns-specialprotected' => 'Αἱ εἰδικαὶ δέλτοι μὴ μεταγÏαπτέαι εἰσίν.',
'titleprotected' => 'Ἡ ποίησις τῆσδε τῆς á¼Ï€Î¹Î³Ïαφῆς πεφÏλακται ὑπὸ τοῦ [[User:$1|$1]].
Ἡ δεδομένη αἰτιολογία á¼ÏƒÏ„ὶ "\'\'$2\'\'".',
@@ -461,7 +454,7 @@ $2',
'nosuchuser' => 'Οá½Îº á¼ÏƒÏ„ὶ χÏώμενος ὀνόματι "$1".
Τὰ γÏάμματα τῶν ὀνομάτων χÏωμένων διακÏίνονται εἰς κεφαλαῖα καὶ μικÏά.
Σκόπει τὴν τῶν γÏαμμάτων ἀκÏιβείαν á¼¢ [[Special:UserLogin/signup|λογισμὸν νέον ποίει]].',
-'nosuchusershort' => 'Οá½Îº á¼ÏƒÏ„ὶ χÏώμενος ἔχων τὸ ὄνομα "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Οá½Îº á¼ÏƒÏ„ὶ χÏώμενος ἔχων τὸ ὄνομα "$1".
Ἔλεγξον τὴν á½€ÏθογÏαφίαν σου.',
'nouserspecified' => 'Ὄνομα χÏωμένου καθοÏιστέον ὑποχÏεωτικώς.',
'wrongpassword' => 'Εἰσηγμένον σÏνθημα á¼ÏƒÏ†Î±Î»Î¼Î­Î½Î¿Î½. ΠείÏασον πάλιν.',
@@ -492,7 +485,7 @@ $2',
'createaccount-title' => 'Ποίησις λογισμοῦ διὰ {{SITENAME}}',
'loginlanguagelabel' => 'Γλῶσσα: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Ἀλλαγὴ συνθήματος',
'resetpass_header' => 'ἈναδιοÏισμὸς συνθήματος λογισμοῦ',
'oldpassword' => 'ΠÏότεÏον σÏνθημα:',
@@ -506,6 +499,9 @@ $2',
'resetpass-submit-cancel' => 'ἈκυÏοῦν',
'resetpass-temp-password' => 'ΠÏοσωÏινὸν σÏνθημα:',
+# Special:PasswordReset
+'passwordreset-username' => 'Ὄνομα χÏωμένου:',
+
# Edit page toolbar
'bold_sample' => 'ΓÏάμματα παχέα',
'bold_tip' => 'ΓÏάμματα παχέα',
@@ -517,8 +513,6 @@ $2',
'extlink_tip' => 'ἘξώτεÏος σÏνδεσμος (μέμνησο τοῦ Ï€Ïοθέματος http://)',
'headline_sample' => 'Κείμενον á¼Ï€Î¹ÎºÎµÏ†Î±Î»Î¯Î´Î¿Ï‚',
'headline_tip' => 'Κλίμακος 2 á¼Ï€Î¹ÎºÎµÏ†Î±Î»Î¯Ï‚',
-'math_sample' => 'Εἰσάγειν Ï„Ïπον ὧδε',
-'math_tip' => 'Μαθηματικὸς Ï„Ïπος (LaTeX)',
'nowiki_sample' => 'Εἰσάγειν ἀμόÏφωτον κείμενον ὧδε',
'nowiki_tip' => 'Ἀγνοεῖν βικι-μοÏφοποιίαν',
'image_tip' => 'Ἐμβεβαπτισμένον á¼€Ïχεῖον',
@@ -880,9 +874,10 @@ $1",
'changepassword' => 'Ἀλλάττειν σÏνθημα',
'prefs-skin' => 'Ἐμφάνισις',
'skin-preview' => 'ΠÏοεπισκοπεῖν',
-'prefs-math' => 'Τὰ μαθηματικά',
'datedefault' => 'Οá½Î´ÎµÎ¼Î¯Î± Ï€Ïοτίμησις',
+'prefs-beta' => 'ΛειτουÏγίαι τῆς Beta',
'prefs-datetime' => 'ΧÏονολογία καὶ á½¥Ïα',
+'prefs-labs' => 'ΛειτουÏγίαι τῶν Labs',
'prefs-personal' => 'Στοιχεῖα χÏωμένου',
'prefs-rc' => 'Αἱ νέαι μεταβολαί',
'prefs-watchlist' => 'Τὰ á¼Ï†Î¿Ïώμενα',
@@ -904,8 +899,6 @@ $1",
'columns' => 'Στῆλαι:',
'searchresultshead' => 'Ζητεῖν',
'resultsperpage' => 'Ἀποτελέσματα ἀνά δέλτον:',
-'contextlines' => 'ΣειÏαὶ ἀνά ἀποτέλεσμα:',
-'contextchars' => 'Συναφὲς κείμενον ἀνά σειÏάν:',
'stub-threshold' => 'Ἄνω φÏάγμα διὰ τοῦς <a href="#" class="stub">συνδέσμους Ï€Ïὸς λείμματα</a> (δυφία):',
'stub-threshold-disabled' => 'ἈπενεÏγηθέν',
'recentchangesdays' => 'Αἱ ἡμέÏαι αἱ δεικτέαι á¼Î½ ταῖς Ï€Ïοσφάτοις ἀλλαγαῖς:',
@@ -915,7 +908,7 @@ $1",
'savedprefs' => 'Αἱ Ï€ÏοαιÏέσεις σου καταγεγÏαμμέναι εἰσίν.',
'timezonelegend' => 'ΧÏονικὴ ζώνη:',
'localtime' => 'Τοπικὴ á½¥Ïα:',
-'timezoneuseserverdefault' => 'ΧÏῆσθαι τῆς á¼Î¾Ï…πηÏετητικῆς μηχανῆς Ï„á¿· Ï€ÏοκαθωÏισμένῳ',
+'timezoneuseserverdefault' => 'ΧÏῆσθαι Ï„á¿· Ï€ÏοκαθωÏισμένῳ τοῦ βίκι ($1)',
'timezoneuseoffset' => 'Ἄλλον (καθοÏίζειν τὸ á¼ÎºÏ„όπισμα)',
'timezoneoffset' => 'Ἐκτόπισμα¹:',
'servertime' => 'á½­Ïα ὑπολογιστικῆς á¼Î¾Ï…πηÏετητικῆς μηχανῆς:',
@@ -1069,7 +1062,6 @@ $1",
'right-userrights' => 'ΜεταγÏάφειν ἅπαντα τοῦ χÏωμένου δικαιώματα',
'right-userrights-interwiki' => 'ΜεταγÏάφειν Ï„á½° δικαιώματα χÏωμένων á¼Î½ ἄλλοις βίκι',
'right-siteadmin' => 'ΦÏάττειν καὶ ἀποφÏάττειν τὴν βάσιν δεδομένων',
-'right-reset-passwords' => 'ἈναÏÏυθμίζειν συνθήματα ἄλλων χÏωμένων',
'right-override-export-depth' => 'Ἐξάγειν δέλτους πεÏιλαμβανομένων συνδεδεμένων δέλτων ἕως βάθος τι 5 á¼Ï€Î¹Ï€Î­Î´Ï‰Î½',
# User rights log
@@ -1191,8 +1183,8 @@ $1",
'filetype-badmime' => 'ἈÏχεῖα Ï„Ïπου MIME "$1" μὴ á¼Ï€Î¹Ï†Î¿Ïτίσιμα εἰσίν.',
'filetype-unwanted-type' => "'''\".\$1\"''' á¼ÏƒÏ„ὶ μὴ á¼Ï€Î¹Î¸Ï…μητὸς Ï„Ïπος á¼€Ïχείου.
{{PLURAL:\$3|ΠÏοῃÏημένος Ï„Ïπος á¼€Ïχείων á¼ÏƒÏ„ὶ|ΠÏοῃÏημένοι Ï„Ïποι á¼€Ïχείων εἰσὶ}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' á¼ÏƒÏ„ὶ μὴ á¼Ï€Î¹Ï„Ïεπτὸς Ï„Ïπος á¼€Ïχείου.
-{{PLURAL:\$3|ἘπιτÏεπτὸς Ï„Ïπος á¼€Ïχείων á¼ÏƒÏ„ὶ|ἘπιτÏεπτοὶ Ï„Ïποι á¼€Ïχείων εἰσὶ}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' μὴ {{PLURAL:$4|á¼Ï€Î¹Ï„Ïεπόμενος Ï„Ïπος á¼€Ïχείου|á¼Ï€Î¹Ï„Ïεπόμενοι Ï„Ïποι á¼€Ïχείων}}.
+{{PLURAL:$3|ἘπιτÏεπὀμενος Ï„Ïπος á¼€Ïχείων á¼ÏƒÏ„ὶ|ἘπιτÏεπόμενοι Ï„Ïποι á¼€Ïχείων εἰσὶ}} $2.',
'filetype-missing' => 'Τόδε τὸ á¼€Ïχεῖον οá½Îº ἔχει á¼Ï€Î­ÎºÏ„ασιν (ὅπως ".jpg").',
'large-file' => 'Τὸ Ï€Ïοτεινόμενον μέγεθος τῶν á¼€Ïχείων οὔκ á¼ÏƒÏ„ι μεγαλÏτεÏον τοῦ $1·
τοῦδε τοῦ á¼€Ïχείου á¼ÏƒÏ„ὶ $2.',
@@ -1233,6 +1225,9 @@ $1",
'upload-unknown-size' => 'Ἄγνωτον μέγεθος',
'upload-http-error' => 'Συνέβη σφάλμα τι τῆς HTTP: $1',
+# Special:UploadStash
+'uploadstash' => 'ἘπιφοÏτίζειν ἀπόθεμα',
+
# img_auth script messages
'img-auth-accessdenied' => 'Οá½Îº á¼Ï€ÎµÏ„Ïάπη ἡ Ï€Ïόσβασις',
'img-auth-nofile' => 'Τὸ á¼€Ïχεῖον "$1" οá½Ï‡ ὑπάÏχει.',
@@ -1288,7 +1283,6 @@ $1",
Ἡ [[Special:WhatLinksHere/$2|πλήÏης διαλογὴ]] διαθέσιμός á¼ÏƒÏ„ιν.',
'nolinkstoimage' => 'Οá½Î´Î­Î½Î± á¼ÏƒÏ„ὶ Ï€Ïοσάγον τόδε τὸ φοÏτίον.',
'morelinkstoimage' => 'ὉÏᾶν [[Special:WhatLinksHere/$1|πλείονας συνδέσμους]] Ï€Ïὸς τήνδε τὴν δέλτον.',
-'redirectstofile' => '{{PLURAL:$1|Τὸ ἀκόλουθον á¼€Ïχεῖον ἀναδιευθÏνεται|$1 Τὰ ἀκόλουθα á¼€Ïχεῖα ἀναδιευθÏνονται}} Ï€Ïὸς τόδε τὸ á¼€Ïχεῖον:',
'duplicatesoffile' => '{{PLURAL:$1|Τὸ ἀκόλουθον á¼€Ïχεῖον διπλότυπον á¼ÏƒÏ„ὶ|$1 Τὰ ἀκόλουθα á¼€Ïχεῖα διπλότυπα εἰσὶ}} τοῦδε τοῦ á¼€Ïχείου ([[Special:FileDuplicateSearch/$2|πλείω]]):',
'sharedupload' => 'Τόδε τὸ á¼€Ïχεῖον ἀπὸ τὴν $1 á¼ÏƒÏ„ὶ καὶ δÏνασαι χÏῆσθαι τοÏτῳ εἰς ἕτεÏα σχέδια á¼Î¾á¼´ÏƒÎ¿Ï….',
'filepage-nofile' => 'Οá½Î´Î­Î½ á¼ÏƒÏ„ὶν á¼€Ïχεῖον ἔχον τόδε τὸ ὄνομα.',
@@ -1533,27 +1527,29 @@ $1",
'listgrouprights-removegroup-self-all' => 'ἈφαιÏεῖν á¼Ï€Î¬ÏƒÎ±Ï‚ Ï„á½°Ï‚ á½Î¼Î¬Î´Î±Ï‚ ἀπὸ τὸν λογισμὸν á¼Î¼Î¿á¿¦ τοῦ ἰδίου',
# E-mail user
-'mailnologin' => 'Οá½Î´ÎµÎ¼Î¯Î± διεÏθυνσις παÏαλήπτου',
-'emailuser' => 'ἨλεκτÏονικὴν á¼Ï€Î¹ÏƒÏ„ολὴν τῷδε Ï„á¿· χÏωμένῳ πέμπειν',
-'emailpage' => 'ΧÏώμενος ἠλ.-ταχυδÏομείου',
-'emailpagetext' => 'ΧÏώμενος Ï„á¿· κάτωθι Ï€ÏοτÏπῳ, ἀπόστειλον μήνυμά τι, á¼Ï†á½„σον δεδήλωκας ἔγκυÏον ἠλ-διεÏθυνσιν τινὰ εἰς Ï„á½°Ï‚ [[Special:Preferences|Ï€Ïοτιμήσεις χÏωμένου]]. Ἥδε ἡ διεÏθυνσις πεφασμένη ἔσεται ὡς διεÏθυνσις ἀποστολέως τοῦ μηνÏματος, οὕτως ὥστε ὠπαÏαλήπτης δÏνηται ἀποκÏιθῆναι.',
-'usermailererror' => 'Τὸ ἠλ-ταχυδÏομεῖον á¼Ï€Î­ÏƒÏ„Ïεψεν σφάλμα:',
-'defemailsubject' => '{{SITENAME}} ἠλ.-ταχυδÏομεῖον',
-'noemailtitle' => 'Οá½Î´ÎµÎ¼Î¯Î± ἠλ-διεÏθυνσις',
-'noemailtext' => 'á½Î´Îµ ὠχÏώμενος οá½Ï‡ á½¥Ïικεν ἔγκυÏον τινὰ ἠλεκτÏονικὴν διεÏθυνσιν.',
-'nowikiemailtitle' => 'Ἠ-διεÏθυνσις μὴ á¼Ï€Î¹Ï„Ïεπτός',
-'nowikiemailtext' => 'á½Î´Îµ ὠχÏώμενος á¼Ï€ÎµÎ¯Î»Î¿Ï‡ÎµÎ½ τὸ μὴ παÏαλαμβάνειν μηνÏματα ἠλεκτÏονικοῦ ταχυδÏομείου á¼Î¾ ἑτέÏων χÏωμένων.',
-'email-legend' => 'Ἀποστολὴ ἠλ-μηνÏματος Ï€Ïὸς ἕτεÏον τινὰ χÏώμενον τοῦ {{SITENAME}}',
-'emailfrom' => 'Ἐκ:',
-'emailto' => 'ΠÏός:',
-'emailsubject' => 'ΧÏῆμα:',
-'emailmessage' => 'Ἀγγελία:',
-'emailsend' => 'Πέμπειν',
-'emailccme' => 'Ἀπόστειλόν μοι ἀντίγÏαφόν τι τοῦ μηνÏματός μου.',
-'emailccsubject' => 'ἈντιγÏαφὴ τοῦ μηνÏματός σου Ï€Ïὸς $1: $2',
-'emailsent' => 'Ἠλ.-á¼Ï€Î¹ÏƒÏ„ολὴ ἀπεστάλη',
-'emailsenttext' => 'Τὸ μήνυμα ἠλ-ταχυδÏομείου σου á¼ÏƒÏ„άλη.',
-'emailuserfooter' => 'Ἥδε ἡ á¼Ï€Î¹ÏƒÏ„ολὴ á¼ÏƒÏ„άλη ὑπὸ τοῦ/τῆς $1 εἰς τὸν/τὴν $2 κατὰ τὴν τέλεσιν "Ἁποστολὴ ἠλ-μηνÏματος" á¼Ï‚ τὸ {{SITENAME}}.',
+'mailnologin' => 'Οá½Î´ÎµÎ¼Î¯Î± διεÏθυνσις παÏαλήπτου',
+'emailuser' => 'ἨλεκτÏονικὴν á¼Ï€Î¹ÏƒÏ„ολὴν τῷδε Ï„á¿· χÏωμένῳ πέμπειν',
+'emailpage' => 'ΧÏώμενος ἠλ.-ταχυδÏομείου',
+'emailpagetext' => 'ΧÏώμενος Ï„á¿· κάτωθι Ï€ÏοτÏπῳ, ἀπόστειλον μήνυμά τι, á¼Ï†á½„σον δεδήλωκας ἔγκυÏον ἠλ-διεÏθυνσιν τινὰ εἰς Ï„á½°Ï‚ [[Special:Preferences|Ï€Ïοτιμήσεις χÏωμένου]]. Ἥδε ἡ διεÏθυνσις πεφασμένη ἔσεται ὡς διεÏθυνσις ἀποστολέως τοῦ μηνÏματος, οὕτως ὥστε ὠπαÏαλήπτης δÏνηται ἀποκÏιθῆναι.',
+'usermailererror' => 'Τὸ ἠλ-ταχυδÏομεῖον á¼Ï€Î­ÏƒÏ„Ïεψεν σφάλμα:',
+'defemailsubject' => '{{SITENAME}} ἠλ.-ταχυδÏομεῖον',
+'noemailtitle' => 'Οá½Î´ÎµÎ¼Î¯Î± ἠλ-διεÏθυνσις',
+'noemailtext' => 'á½Î´Îµ ὠχÏώμενος οá½Ï‡ á½¥Ïικεν ἔγκυÏον τινὰ ἠλεκτÏονικὴν διεÏθυνσιν.',
+'nowikiemailtitle' => 'Ἠ-διεÏθυνσις μὴ á¼Ï€Î¹Ï„Ïεπτός',
+'nowikiemailtext' => 'á½Î´Îµ ὠχÏώμενος á¼Ï€ÎµÎ¯Î»Î¿Ï‡ÎµÎ½ τὸ μὴ παÏαλαμβάνειν μηνÏματα ἠλεκτÏονικοῦ ταχυδÏομείου á¼Î¾ ἑτέÏων χÏωμένων.',
+'emailusername' => 'Ὄνομα χÏωμένου:',
+'emailusernamesubmit' => 'Ὑποβάλλειν',
+'email-legend' => 'Ἀποστολὴ ἠλ-μηνÏματος Ï€Ïὸς ἕτεÏον τινὰ χÏώμενον τοῦ {{SITENAME}}',
+'emailfrom' => 'Ἐκ:',
+'emailto' => 'ΠÏός:',
+'emailsubject' => 'ΧÏῆμα:',
+'emailmessage' => 'Ἀγγελία:',
+'emailsend' => 'Πέμπειν',
+'emailccme' => 'Ἀπόστειλόν μοι ἀντίγÏαφόν τι τοῦ μηνÏματός μου.',
+'emailccsubject' => 'ἈντιγÏαφὴ τοῦ μηνÏματός σου Ï€Ïὸς $1: $2',
+'emailsent' => 'Ἠλ.-á¼Ï€Î¹ÏƒÏ„ολὴ ἀπεστάλη',
+'emailsenttext' => 'Τὸ μήνυμα ἠλ-ταχυδÏομείου σου á¼ÏƒÏ„άλη.',
+'emailuserfooter' => 'Ἥδε ἡ á¼Ï€Î¹ÏƒÏ„ολὴ á¼ÏƒÏ„άλη ὑπὸ τοῦ/τῆς $1 εἰς τὸν/τὴν $2 κατὰ τὴν τέλεσιν "Ἁποστολὴ ἠλ-μηνÏματος" á¼Ï‚ τὸ {{SITENAME}}.',
# Watchlist
'watchlist' => 'Τὰ á¼Ï†Î¿Ïώμενά μου',
@@ -1563,10 +1559,8 @@ $1",
'watchlistanontext' => '$1 Ï€Ïὸ τοῦ á½Ïᾶν á¼¢ τοῦ μεταγÏάφειν τεμάχια τινὰ á¼Î½ τῇ á¼Ï†Î¿Ïοδιαλογῇ σου.',
'watchnologin' => 'Μὴ συνδεδεμένος',
'watchnologintext' => 'Δεῖ σε [[Special:UserLogin|συνδεῖσθαι]] Ï€Ïὸ τοῦ μεταβάλλειν τὴν á¼Ï†Î¿Ïοδιαλογήν σου.',
-'addedwatch' => 'Δέλτος Ï€Ïοστεθειμένη εἰς τὸν á¼Ï€Î¿Ï€Ï„ευομένων κατάλογον á¼ÏƒÏ„ίν',
'addedwatchtext' => "Ἡ δέλτος \"[[:\$1]]\" Ï€Ïοσετέθη á¼Î½ Ï„á¿· [[Special:Watchlist|καταλόγῳ á¼Ï†Î¿Ïωμένων]] σου.
Μελλοντικαὶ ἀλλαγαὶ τῆσδε τῆς δέλτου καὶ τῆς σχετικῆς δέλτου διαλέξεως καταλεχθήσονται á¼ÎºÎµá¿–σε καὶ ἡ δέλτος á¼Î¼Ï†Î±Î½Î¯ÏƒÎµÏ„αι '''ἔντονος''' á¼Î½ Ï„á¿· [[Special:RecentChanges|καταλόγῳ Ï€Ïοσφάτων ἀλλαγῶν]] οὕτως ὥστε εá½Ï‡ÎµÏεστέÏα á¾– ἡ διάκÏισις αá½Ï„ῆς.",
-'removedwatch' => 'ἈνεώÏαται ἥδε ἡ δέλτος',
'removedwatchtext' => 'Ἡ δέλτος "[[:$1]]" ἀφῃÏέθη á¼Îº τοῦ [[Special:Watchlist|καταλόγου á¼Ï†Î¿Ïωμένων σου]].',
'watch' => 'ἘφοÏᾶν',
'watchthispage' => 'ἘφοÏᾶν τήνδε τὴν δέλτον',
@@ -1618,10 +1612,10 @@ $NEWPAGE
--
Διὰ τὸ ἀλλάξειν Ï„á½°Ï‚ ῥυθμίσεις Ï„á½´Ï‚ á¼Ï†Î¿Ïοδιαλογῆς σου, á¼Ï€Î¯ÏƒÎºÎµÏˆÎ±Î¹ τὸ
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
ἈνάδÏασις καὶ πεÏαιτέÏω βοήθεια:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'ΔιαγÏάφειν τὴν δέλτον',
@@ -1636,7 +1630,7 @@ $NEWPAGE
'confirmdeletetext' => 'ΒοÏλεσαι διαγÏάψειν á½Ïιστικῶς á¼Îº τῆς βάσεως δεδομένων δέλτον τίνα (á¼¢ εἰκόνα τινα) μετὰ τῆς á¼á¿†Ï‚ ἱστοÏίας. ΠαÏακαλοῦμεν ὑμᾶς ἵνα á¼Ï€Î¹Î²ÎµÎ²Î±Î¹ÏŽÏƒÎ·Ï„ε τὴν θέλησιν ὑμῶν πεÏὶ τοῦ αá½Ï„ὸ Ï€Ïάττειν καὶ πεÏὶ τῆς ἀντιλήψεως τῶν συνεπειῶν, και πεÏὶ τοῦ Ï€Ïάττειν ὑμῶν συμφώνως τῶν [[{{MediaWiki:Policy-url}}|κανόνων]].',
'actioncomplete' => 'Τέλειον τὸ ποιηθέν',
'actionfailed' => 'ΔÏάσις ἀνεπιτυχής',
-'deletedtext' => 'Τὸ "<nowiki>$1</nowiki>" διεγÏάφη.
+'deletedtext' => 'Τὸ "$1" διεγÏάφη.
Ἴδε τὸ $2 διὰ μητÏῷόν τι Ï€Ïοσφάτων διαγÏαφῶν.',
'deletedarticle' => 'Ἐσβέσθη ἡ δέλτος "[[$1]]"',
'suppressedarticle' => '"[[$1]]" κατεσταλμένον',
@@ -1679,7 +1673,7 @@ $NEWPAGE
'protect_expiry_invalid' => 'ἌκυÏος χÏόνος λήξεως.',
'protect_expiry_old' => 'ΧÏόνος λήξεως á¼Î½ Ï„á¿· παÏελθόντι á¼ÏƒÏ„ίν.',
'protect-unchain-permissions' => 'ἈναίÏεσις ἀποκλεισμοῦ πεÏαιτέÏω á¼Ï€Î¹Î»Î¿Î³á¿¶Î½ πεÏιφÏουÏήσεως',
-'protect-text' => "ὉÏᾶν τε καὶ ἀλλάττειν δÏνασθε τὴν κλίμακα φυλάξεως á¼Î½Î¸Î¬Î´Îµ διὰ τὴν δέλτον '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "ὉÏᾶν τε καὶ ἀλλάττειν δÏνασθε τὴν κλίμακα φυλάξεως á¼Î½Î¸Î¬Î´Îµ διὰ τὴν δέλτον '''$1'''.",
'protect-locked-access' => "Ὁ λογισμός σου οá½Îº ἔχει ἄδειαν ἀλλαγῆς τῆς κλίμακος φυλάξεως δέλτων.
Ἐνθάδε εἰσὶν αἱ Ï„Ïέχουσαι ῥυθμίσεις διὰ τὴν δέλτον '''$1''':",
'protect-cascadeon' => 'Ἡδε δέλτος Ï„á¿· παÏόντι πεφυλαγμένη á¼ÏƒÏ„ὶν á¼Ï€Îµá½¶ πεÏιλαμβάνεται {{PLURAL:$1|τῇ ἀκολοÏθῳ δέλτῳ, á¼¥Ï€ÎµÏ á¼”Ï‡ÎµÎ¹|ταῖς ἀκολοÏθοις δέλτοις, Î±á¼µÏ€ÎµÏ á¼”Ï‡Î¿Ï…ÏƒÎ¹}} τὴν διαδοχικὴν φÏλαξιν á¼Î½ÎµÏγόν. ΔÏνασαι ἀλλάττειν τὴν κλίμακα φÏλαξις τῆσδε δέλτου, ἄνευ á¼Ï€Î·Ïεασμοῦ τῆς διαδοχικῆς φυλάξεως.',
@@ -1807,7 +1801,6 @@ $1',
'blockip' => 'Ἀποκλῄειν τόνδε τὸν χÏώμενον',
'blockip-title' => 'ΦÏάττειν χÏώμενον',
'blockip-legend' => 'ΦÏάττειν χÏώμενον',
-'ipaddress' => 'ΔιεÏθυνσις IP:',
'ipadressorusername' => 'ΔιεÏθυνσις IP á¼¢ ὄνομα χÏωμένου:',
'ipbexpiry' => 'Λῆξις:',
'ipbreason' => 'Αἰτία:',
@@ -1820,7 +1813,6 @@ $1',
** Ἐκφοβιστικὴ συμπεÏιφοÏά/á¼Î½ÏŒÏ‡Î»Î·ÏƒÎ¹Ï‚
** ΚατάχÏησις πολλαπλῶν λογισμῶν
** Ἀναπόδεκτον ὄνομα χÏωμένου',
-'ipbanononly' => 'ΦÏάττειν μόνον ἀνωνÏμους χÏωμένους',
'ipbcreateaccount' => 'ἈποτÏέπειν τὴν ποίησιν λογισμοῦ',
'ipbemailban' => 'ἈποτÏέπειν τὴν ἀποστολὴν ἠλ-ἀγγελίας ὑπὸ τοῦ χÏωμένου',
'ipbsubmit' => 'ΦÏάττειν τόνδε τὸν χÏώμενον',
@@ -1830,7 +1822,6 @@ $1',
'ipbotherreason' => 'ΠÏόσθετος/ἄλλη αἰτία:',
'ipbhidename' => 'ΚÏÏπτειν τὸ ὄνομα χÏωμένου á¼Î½ μεταγÏαφαῖς καὶ διαλογαῖς',
'ipbwatchuser' => 'ἘφοÏᾶν τοῦδε τοῦ χÏωμένου Ï„á½°Ï‚ δέλτους χÏωμένου καὶ διαλέξεως',
-'ipballowusertalk' => 'Ἄφες τῷδε χÏωμένῳ μεταγÏάψειν τὴν ἰδίαν οὑ δέλτον διαλέξεως á¼Î½ ὅσῳ πεφÏαγμένος á¼ÏƒÏ„ίν',
'ipb-change-block' => 'ἘπαναφÏάττειν τόνδε τὸν χÏώμενον μετὰ τῶνδε τῶν ῥυθμίσεων',
'badipaddress' => 'ἌκυÏος IP-διεÏθυνσις',
'blockipsuccesssub' => 'ΦÏαγὴ á¼Ï€Î¹Ï„ευκτός á¼ÏƒÏ„ιν',
@@ -1845,14 +1836,12 @@ $1',
'unblocked-id' => 'Ἡ φÏαγὴ τοῦ/τῆς $1 ἀφῃÏέθη',
'ipblocklist' => 'ΠεφÏαγμέναι IP-διευθÏνσεις καὶ ὀνόματα τῶν χÏωμένων',
'ipblocklist-legend' => 'ΕὑÏίσκειν πεφÏαγμένον χÏώμενον τινά',
-'ipblocklist-username' => 'Ὄνομα χÏωμένου á¼¢ IP-διεÏθυνσις:',
-'ipblocklist-sh-userblocks' => '$1 φÏαγαὶ λογισμῶν',
-'ipblocklist-sh-tempblocks' => '$1 Ï€ÏοσωÏιναὶ φÏαγαί',
-'ipblocklist-sh-addressblocks' => '$1 μεμονωμέναι φÏαγαὶ IP',
+'blocklist-timestamp' => 'ἩμεÏομηνία καὶ á½¥Ïα',
+'blocklist-target' => 'Στόχος',
+'blocklist-reason' => 'Αἰτία',
'ipblocklist-submit' => 'Ζητεῖν',
'ipblocklist-localblock' => 'Τοπικὴ φÏαγή',
'ipblocklist-otherblocks' => '{{PLURAL:$1|ἙτέÏα φÏαγή|á¼Ï„εÏαι φÏαγαί}}',
-'blocklistline' => '$3 á¼Ï†Ïάχθη ὑπὸ $1, $2 ($4)',
'infiniteblock' => 'ἄπειÏον',
'expiringblock' => 'λῆξαν ἔσεται á¼Î½ $1 á¼Î½ $2',
'anononlyblock' => 'ἀνωνÏμους μόνον',
@@ -1880,8 +1869,7 @@ $1',
'ipb_expiry_invalid' => 'ΧÏόνος λήξεως ἄκυÏος.',
'ipb_expiry_temp' => 'Αἱ φÏαγαὶ τῶν κεκÏυμμένων ὀνομάτων χÏωμένων δεῖ εἶναι μόνιμοι.',
'ipb_already_blocked' => '"$1" ἤδη πεφÏαγμέν-ος/-η á¼ÏƒÏ„ίν',
-'ipb-needreblock' => '== Ἤδη ἀποκεκλῃσμένος==
-Ἤδη ἀποκεκλῃσμένος á½ $1 á¼ÏƒÏ„ίν. ΒοÏλεσαι ἀλλάξειν Ï„á½°Ï‚ ῥυθμίσεις;',
+'ipb-needreblock' => 'Ἤδη ἀποκεκλῃσμένος á½ $1 á¼ÏƒÏ„ίν. ΒοÏλεσαι ἀλλάξειν Ï„á½°Ï‚ ῥυθμίσεις;',
'ipb-otherblocks-header' => '{{PLURAL:$1|ἙτέÏα φÏαγή|á¼Ï„εÏαι φÏαγαί}}',
'ipb_cant_unblock' => 'Σφάλμα: Ἡ φÏαγὴ τῆς ID $1 οá½Ï‡ εὑÏέθη.
Εἰκότως ἀποπεφÏαγμένη ἤδη á¼ÏƒÏ„ίν.',
@@ -2136,9 +2124,7 @@ $1',
'tooltip-preferences-save' => 'Τιθέναι Ï„á½°Ï‚ Ï€ÏοαιÏέσεις',
# Metadata
-'nodublincore' => 'Τὰ μεταδεδομένα RDF Ï„á½° ἀφοÏῶντα τὸ Ï€Ïότυπον κανόνων Dublin Core ἀπενεÏγηθέντα εἰσὶ á¼Î½ τῇδε τῇ á¼Î¾Ï…πηÏετητικῇ μηχανῇ.',
-'nocreativecommons' => 'Τὰ μεταδεδομένα RDF Ï„á½° ἀφοÏῶντα Ï„á½° Creative Commons (ΔημιουÏγικὰ Κοινά) ἀπενεÏγηθέντα εἰσὶ á¼Î½ τῇδε τῇ á¼Î¾Ï…πηÏετητικῇ μηχανῇ.',
-'notacceptable' => 'Ἡ á¼Î¾Ï…πηÏετητικὴ μηχανὴ τοῦ βίκι οὠδÏναται παÏάσχειν δεδομένα á¼Î½ διαμοÏφώσει τινὰ ἀναγνωσίμῳ ὑπá¼ÏƒÎ¿á¿¦.',
+'notacceptable' => 'Ἡ á¼Î¾Ï…πηÏετητικὴ μηχανὴ τοῦ βίκι οὠδÏναται παÏάσχειν δεδομένα á¼Î½ διαμοÏφώσει τινὰ ἀναγνωσίμῳ ὑπá¼ÏƒÎ¿á¿¦.',
# Attribution
'anonymous' => '{{PLURAL:$1|Ἀνώνυμος χÏώμενος|Ἀνώνυμοι χÏώμενοι}} Ï„á¿· {{SITENAME}}',
@@ -2157,33 +2143,15 @@ $1',
'spambot_username' => 'ΚάθαÏσις τῶν ἀνεπιθυμήτων ἀγγελιῶν τῆς MediaWiki',
# Info page
-'infosubtitle' => 'ΠληÏοφοÏίαι πεÏὶ τῆς δá¼Î»Ï„ου',
-'numedits' => 'ἈÏιθμὸς μεταγÏαφῶν (á¼Î½ τῇ δέλτῳ): $1',
-'numtalkedits' => 'ἈÏιθμὸς μεταγÏαφῶν (δέλτος διαλέξεως): $1',
-'numwatchers' => 'ἈÏιθμὸς á¼Ï†Î¿Ïώντων: $1',
-'numauthors' => 'ἈÏιθμὸς διακεκÏιμένων Ï€ÏωτουÏγῶν (á¼Î½ τῇ δέλτῳ): $1',
-'numtalkauthors' => 'ἈÏιθμὸς διακεκÏιμένων Ï€ÏωτουÏγῶν (á¼Î½ τῇ δέλτῳ διαλέξεως): $1',
-
-# Math options
-'mw_math_png' => 'Ἀπόδοσις PNG πάντοτε',
-'mw_math_simple' => 'HTML εἰ λίαν á¼Ï€Î»Î¿á¿¦Î½, εἰδἄλλως PNG',
-'mw_math_html' => 'HTML εἰ δυνατὸν, εἰδἄλλως PNG',
-'mw_math_source' => 'Ἄφες το ὡς TeX (διὰ Ï„á½° πλοηγητήÏια κειμένων)',
-'mw_math_modern' => 'ΠÏοτεινομένη διὰ σÏγχÏονα πλοηγητήÏια',
-'mw_math_mathml' => 'MathML εἰ δυνατόν (πειÏαστικόν)',
-
-# Math errors
-'math_failure' => 'Λεξιανάλυσις ἀποτετυχηκυῖα',
-'math_unknown_error' => 'ἄγνωστον σφάλμα',
-'math_unknown_function' => 'ἄγνωστος á¼Î½Î­Ïγεια',
-'math_lexing_error' => 'σφάλμα λεξικῆς ἀναλÏσεως',
-'math_syntax_error' => 'σφάλμα συντάξεως',
-'math_image_error' => 'Ἡ PNG-μετατÏοπὴ ἀπετεÏχθη·
-ἔλεγξον τὴν á½€Ïθὴν á¼Î³ÎºÎ±Ï„άστασιν τῶν latex καὶ dvipng (á¼¢ dvips + gs + convert)',
-'math_bad_tmpdir' => 'ἈδÏνατος ἦτο ἡ ποίησις μαθηματικῶν δεδομένων á¼¢ ἡ á¼Î³Î³Ïαφὴ á¼Î½ Ï€ÏοσκαίÏῳ á¼€Ïχειοκαταλόγῳ',
-'math_bad_output' => 'ἈδÏνατος ἦτο ἡ ποίησις μαθηματικῶν δεδομένων á¼¢ ἡ á¼Î³Î³Ïαφὴ á¼Î½ á¼€Ïχειοκαταλόγῳ á¼Î¾ÏŒÎ´Î¿Ï…',
-'math_notexvc' => 'Ἐλλεῖπον á¼ÎºÏ„ελέσιμον texvc;
-ἴδε math/README διὰ τὸ διαμοÏφοῦν.',
+'pageinfo-title' => 'ΠÏστις πεÏὶ "$1"',
+'pageinfo-header-edits' => 'ΜεταγÏαφαί',
+'pageinfo-header-watchlist' => 'Τὰ á¼Ï†Î¿Ïώμενα',
+'pageinfo-header-views' => 'ΠÏοβολαί',
+'pageinfo-subjectpage' => 'Δέλτος',
+'pageinfo-talkpage' => 'Δέλτος διαλέξεως',
+'pageinfo-edits' => 'ἈÏιθμὸς μεταγÏαφῶν',
+'pageinfo-views' => 'ἈÏιθμὸς Ï€Ïοβολῶν',
+'pageinfo-viewsperedit' => 'ΠÏοβολαὶ ἀνὰ μεταγÏαφήν',
# Patrolling
'markaspatrolleddiff' => 'Σεσημασμένη ὡς φÏουÏουμένη',
@@ -2226,7 +2194,7 @@ $1',
'file-nohires' => '<small>Οὠδιατίθεται ὑψηλοτέÏα ἀνάλυσις.</small>',
'svg-long-desc' => 'á¼€Ïχεῖον SVG, ὀνομαστὶ $1 × $2 εἰκονοστοιχεῖα, μέγεθος á¼€Ïχείου: $3',
'show-big-image' => 'ΠλήÏης ἀνάλυσις',
-'show-big-image-thumb' => '<small>Τῆσδε τῆς Ï€ÏοθεωÏήσεως μέγεθος: $1 × $2 εἰκονοστοιχεῖα</small>',
+'show-big-image-size' => '$1 × $2 εἰκονοστοιχεία',
'file-info-gif-looped' => 'ἄπειÏος βÏόγχος',
'file-info-gif-frames' => '$1 {{PLURAL:$1|πλαίσιον|πλαίσια}}',
'file-info-png-looped' => 'á¼Î½ ἀπείÏῳ βÏόγχῳ',
@@ -2263,7 +2231,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Πλάτος',
@@ -2278,13 +2252,11 @@ $1',
'exif-ycbcrpositioning' => 'Τοποθέτησις τῶν Y καὶ C',
'exif-xresolution' => 'ὉÏιζόντιος ἀνάλυσις',
'exif-yresolution' => 'Κάθετος ἀνάλυσις',
-'exif-resolutionunit' => 'Μονὰς τῆς τῶν X καὶ Y ἀναλÏσεως',
'exif-stripoffsets' => 'Τοποθεσία δεδομένων εἰκόνος',
'exif-rowsperstrip' => 'ἈÏιθμὸς σειÏῶν ἀνὰ λῶÏον',
'exif-stripbytecounts' => 'Δυφία ἀνὰ συμπεπιεσμένον λῶÏον',
'exif-jpeginterchangeformat' => 'Μετάθεσις εἰς JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Δυφιολέξεις δεδομένων JPEG',
-'exif-transferfunction' => 'ΣυνάÏτησις μεταφοÏᾶς',
'exif-whitepoint' => 'ΧÏωματικότης λευκοῦ σημείου',
'exif-primarychromaticities' => 'ΠÏωτεÏουσαι χÏωματικότητες',
'exif-ycbcrcoefficients' => 'Συντελεσταὶ μητÏῶν μετασχηματισμοῦ χÏώματος',
@@ -2303,7 +2275,6 @@ $1',
'exif-compressedbitsperpixel' => 'ΤÏόπος συμπιέσεως εἰκόνος',
'exif-pixelydimension' => 'Πλάτος εἰκόνος',
'exif-pixelxdimension' => 'á½ÏˆÎ¿Ï‚ εἰκόνος',
-'exif-makernote' => 'Ἐπισημειώσεις á¼Î¾ÎµÏγαστοῦ',
'exif-usercomment' => 'Σχόλια χÏωμένου',
'exif-relatedsoundfile' => 'Σχετιζόμενον á¼€Ïχεῖον ἤχου',
'exif-datetimeoriginal' => 'ΧÏονολογία καὶ á½¥Ïα παÏαγωγῆς δεδομένων',
@@ -2317,7 +2288,6 @@ $1',
'exif-exposureprogram' => 'ΠÏόγÏαμμα á¼ÎºÎ¸Î­ÏƒÎµÏ‰Ï‚',
'exif-spectralsensitivity' => 'Φασματικὴ εá½Î±Î¹ÏƒÎ¸Î·Ï„ότης',
'exif-isospeedratings' => 'Βαθμολόγησις ταχÏτητος ISO',
-'exif-oecf' => 'ΠαÏάγων ὀπτοηλεκτÏονικῆς μετατÏοπῆς',
'exif-shutterspeedvalue' => 'ΤαχÏτης κλῄσεως APEX',
'exif-aperturevalue' => 'Ἄνοιξις διαφÏάγματος APEX',
'exif-brightnessvalue' => 'Φωτεινότης APEX',
@@ -2330,7 +2300,6 @@ $1',
'exif-focallength' => 'Ἑστιακὸν μῆκος φακοῦ',
'exif-subjectarea' => 'Θεματικὸν πεδίον',
'exif-flashenergy' => 'ἘνέÏγεια τῆς ἀστÏαποβόλου συσκευῆς',
-'exif-spatialfrequencyresponse' => 'ἈπόκÏισις χωÏικῆς συχνότητος',
'exif-focalplanexresolution' => 'Ἀνάλυσις ἑστιακοῦ á¼Ï€Î¹Ï€Î­Î´Î¿Ï… X',
'exif-focalplaneyresolution' => 'Ἀνάλυσις ἑστιακοῦ á¼Ï€Î¹Ï€Î­Î´Î¿Ï… Y',
'exif-focalplaneresolutionunit' => 'Μονὰς μετÏήσεως ἀναλÏσεως ἑστιακοῦ á¼Ï€Î¹Ï€Î­Î´Î¿Ï…',
@@ -2339,7 +2308,6 @@ $1',
'exif-sensingmethod' => 'Μέθοδος αἰσθητῆÏος',
'exif-filesource' => 'Πηγὴ á¼€Ïχείου',
'exif-scenetype' => 'ΤÏπος σκηνῆς',
-'exif-cfapattern' => 'ΠÏὀτυπον CFA',
'exif-customrendered' => 'Συνήθης á¼Ï€ÎµÎ¾ÎµÏγασία εἰκόνος',
'exif-exposuremode' => 'ΤÏόπος á¼ÎºÎ¸Î­ÏƒÎµÏ‰Ï‚',
'exif-whitebalance' => 'ἸσοÏÏοπία λευκῶν',
@@ -2384,10 +2352,21 @@ $1',
'exif-gpsareainformation' => 'Ὄνομα GPS-ζώνης',
'exif-gpsdatestamp' => 'ΧÏονολογία GPS',
'exif-gpsdifferential' => 'ΔιαφοÏικὴ διόÏθωσις τοῦ GPS',
+'exif-keywords' => 'Λέξεις κλειδία',
+'exif-source' => 'Πηγή',
+'exif-urgency' => 'Ἐπεῖγον',
+'exif-writer' => 'ΣυγγÏαφεÏÏ‚',
+'exif-languagecode' => 'Γλῶττα',
+'exif-iimcategory' => 'ΚατηγοÏία',
+'exif-label' => 'ἘπιγÏαφή',
+'exif-disclaimer' => 'Ἀποποίησις εá½Î¸Ïνης',
# EXIF attributes
'exif-compression-1' => 'Ἀσυμπίεστος',
+'exif-copyrighted-true' => 'Ὑποκείμενον έν δικαιώμασιν',
+'exif-copyrighted-false' => 'Κοινὸ κτῆμα',
+
'exif-unknowndate' => 'Ἄγνωτος χÏονολογία',
'exif-orientation-1' => 'Κανονικόν',
@@ -2524,21 +2503,30 @@ $1',
'exif-gpsspeed-m' => 'Μίλια ἀνὰ á½¥Ïα',
'exif-gpsspeed-n' => 'Κόμβοι',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'ΧιλιόμετÏα',
+'exif-gpsdestdistance-m' => 'Μίλια',
+'exif-gpsdestdistance-n' => 'Îαυτικά μίλια',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Ἀληθὴς κατεÏθυνσις',
'exif-gpsdirection-m' => 'Μαγνητικὴ διεÏθυνσις',
+'exif-dc-contributor' => 'ΣυνεισφέÏοντες',
+'exif-dc-publisher' => 'Ἐκδότης',
+
+'exif-iimcategory-pol' => 'Πολιτική',
+'exif-iimcategory-spo' => 'Άθλοπαιδιαί',
+
# External editor support
'edit-externally' => 'ΜεταγÏάφειν τόδε τὸ á¼€Ïχεῖον χÏώμενος á¼Î¾ÏŽÏ„εÏήν τινα á¼Ï†Î±Ïμογήν.',
-'edit-externally-help' => 'Εἰ πλείοντα βοÏλει μαθεῖν, [http://www.mediawiki.org/wiki/Manual:External_editors Ï„á½°Ï‚ πεÏὶ τοῦ σχῆματος διδασκαλίας] ἴδε.',
+'edit-externally-help' => 'Εἰ πλείοντα βοÏλει μαθεῖν, [//www.mediawiki.org/wiki/Manual:External_editors Ï„á½°Ï‚ πεÏὶ τοῦ σχῆματος διδασκαλίας] ἴδε.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Πᾶσαι',
-'imagelistall' => 'Πᾶσαι',
-'watchlistall2' => 'ἅπασαι',
-'namespacesall' => 'ἅπασαι',
-'monthsall' => 'ἅπαντες',
-'limitall' => 'ἅπασαι',
+'watchlistall2' => 'ἅπασαι',
+'namespacesall' => 'ἅπασαι',
+'monthsall' => 'ἅπαντες',
+'limitall' => 'ἅπασαι',
# E-mail address confirmation
'confirmemail' => 'Ἐπιβεβαίωσον διεÏθυνσιν ἠλ-ταχυδÏομείου',
@@ -2585,6 +2573,10 @@ $1',
'confirm-purge-top' => 'ΚαθαίÏειν τὴν λανθάνουσαν μνήμην τῆσδε τῆς δέλτου.',
'confirm-purge-bottom' => 'Τὸ á¼ÎºÎºÎ±Î¸Î±Î¯Ïειν δέλτον τινὰ συμβάλλει Ï„á¿· καθαίÏειν τῆν λανθάνουσαν μνήμην καὶ ἀναγκάζει τὴν παÏοῦσαν ἀναθεώÏησιν ἵνα φανθῇ.',
+# action=watch/unwatch
+'confirm-watch-button' => 'εἶεν',
+'confirm-unwatch-button' => 'εἶεν',
+
# Multipage image navigation
'imgmultipageprev' => '↠ἡ δέλτος ἡ Ï€ÏοτέÏα',
'imgmultipagenext' => 'ἡ δέλτος ἡ ἑπομένη →',
@@ -2651,26 +2643,25 @@ $1',
'duplicate-defaultsort' => 'Eἴδησις: Ἡ Ï€ÏοκαθωÏισμένη κλεὶς ταξινομήσεως "$2" ὑπεÏκαλÏπτει Ï€Ïοηγουμένην Ï€ÏοκαθωÏισμένην κλεῖδα ταξινομήσεως "$1".',
# Special:Version
-'version' => 'ἘπανόÏθωμα',
-'version-extensions' => 'Ἐγκατεστημέναι á¼Ï€ÎµÎºÏ„άσεις',
-'version-specialpages' => 'Εἰδικαὶ δέλτοι',
-'version-parserhooks' => 'ἈγγÏλαι λεξιαναλυτικοῦ Ï€ÏογÏάμματος',
-'version-variables' => 'Μεταβληταί',
-'version-other' => 'Ἄλλα',
-'version-mediahandlers' => 'ΧειÏισταὶ μέσων',
-'version-hooks' => 'ἈγγÏλαι',
-'version-extension-functions' => 'ἘνέÏγειαι á¼Ï€ÎµÎºÏ„άσεων',
-'version-parser-extensiontags' => 'ΣἠμαντÏα á¼Ï€ÎµÎºÏ„άσεων λεξιαναλυτικοῦ Ï€ÏογÏάμματος',
-'version-parser-function-hooks' => 'ἈγγÏλαι á¼Î½ÎµÏγειῶν λεξιαναλυτικοῦ Ï€ÏογÏάμματος',
-'version-skin-extension-functions' => 'ἘνέÏγειαι á¼Ï€ÎµÎºÏ„άσεων á¼Ï€Î¹ÎºÎ±Î»Ïψεων',
-'version-hook-name' => 'Ὄνομα ἀγκÏλης',
-'version-hook-subscribedby' => 'ὙπογεγÏαφυῖα ὑπὸ',
-'version-version' => '(Ἔκδοσις $1)',
-'version-license' => 'Ἄδεια',
-'version-poweredby-others' => 'ἄλλα',
-'version-software' => 'Ἐγκατεστημένον λογισμικόν',
-'version-software-product' => 'ΠÏοϊόν',
-'version-software-version' => 'Ἔκδοσις',
+'version' => 'ἘπανόÏθωμα',
+'version-extensions' => 'Ἐγκατεστημέναι á¼Ï€ÎµÎºÏ„άσεις',
+'version-specialpages' => 'Εἰδικαὶ δέλτοι',
+'version-parserhooks' => 'ἈγγÏλαι λεξιαναλυτικοῦ Ï€ÏογÏάμματος',
+'version-variables' => 'Μεταβληταί',
+'version-other' => 'Ἄλλα',
+'version-mediahandlers' => 'ΧειÏισταὶ μέσων',
+'version-hooks' => 'ἈγγÏλαι',
+'version-extension-functions' => 'ἘνέÏγειαι á¼Ï€ÎµÎºÏ„άσεων',
+'version-parser-extensiontags' => 'ΣἠμαντÏα á¼Ï€ÎµÎºÏ„άσεων λεξιαναλυτικοῦ Ï€ÏογÏάμματος',
+'version-parser-function-hooks' => 'ἈγγÏλαι á¼Î½ÎµÏγειῶν λεξιαναλυτικοῦ Ï€ÏογÏάμματος',
+'version-hook-name' => 'Ὄνομα ἀγκÏλης',
+'version-hook-subscribedby' => 'ὙπογεγÏαφυῖα ὑπὸ',
+'version-version' => '(Ἔκδοσις $1)',
+'version-license' => 'Ἄδεια',
+'version-poweredby-others' => 'ἄλλα',
+'version-software' => 'Ἐγκατεστημένον λογισμικόν',
+'version-software-product' => 'ΠÏοϊόν',
+'version-software-version' => 'Ἔκδοσις',
# Special:FilePath
'filepath' => 'ΔιαδÏομὴ á¼€Ïχείου',
@@ -2679,9 +2670,7 @@ $1',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Ζήτησις διπλότυπων á¼€Ïχείων',
-'fileduplicatesearch-summary' => 'Ζητεῖν διπλότυπα á¼€Ïχεῖα βάσει κεÏματιζομένων τιμῶν.
-
-Εἰσάγαγε τὸ ὄνομα á¼€Ïχείου ἄνευ τοῦ Ï€Ïοθέματος "{{ns:file}}:".',
+'fileduplicatesearch-summary' => 'Ζητεῖν διπλότυπα á¼€Ïχεῖα βάσει κεÏματιζομένων τιμῶν.',
'fileduplicatesearch-legend' => 'Ζήτησις διπλότυπου',
'fileduplicatesearch-filename' => 'Ὄνομα á¼€Ïχείου:',
'fileduplicatesearch-submit' => 'Ἀναζήτησις',
@@ -2693,7 +2682,8 @@ $1',
'specialpages' => 'Εἰδικαὶ δέλτοι',
'specialpages-note' => '----
* Κανονικαὶ εἰδικαὶ δέλτοι.
-* <strong class="mw-specialpagerestricted">ΠεÏιωÏισμέναι εἰδικαὶ δá¼Î»Ï„οι.</strong>',
+* <strong class="mw-specialpagerestricted">ΠεÏιωÏισμέναι εἰδικαὶ δá¼Î»Ï„οι.</strong>
+* <span class="mw-specialpagecached">Μόναι δέλτοι ἀποτεταμιευμέναι.</span>',
'specialpages-group-maintenance' => 'ἈναφοÏαὶ συντηÏήσεως',
'specialpages-group-other' => 'á¼Ï„εÏαι εἰδικαὶ δέλτοι',
'specialpages-group-login' => 'Συνδεῖσθαι / á¼Î³Î³Ïάφεσθαι',
diff --git a/languages/messages/MessagesGsw.php b/languages/messages/MessagesGsw.php
index b2db85c0..294f0499 100644
--- a/languages/messages/MessagesGsw.php
+++ b/languages/messages/MessagesGsw.php
@@ -27,91 +27,95 @@
$fallback = 'de';
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Doppleti Wyterlaitige' ),
+ 'Allmessages' => array( 'Alli Nochrichte' ),
+ 'Allpages' => array( 'Alli Syte' ),
+ 'Ancientpages' => array( 'Veralteti Syte' ),
+ 'Blankpage' => array( 'Läärsyte' ),
+ 'Block' => array( 'Sperre' ),
+ 'Blockme' => array( 'Proxy-Sperre' ),
+ 'Booksources' => array( 'ISBN-Suech' ),
'BrokenRedirects' => array( 'Kaputti Wyterlaitige' ),
- 'Disambiguations' => array( 'Begriffschlärigsverwyys' ),
- 'Userlogin' => array( 'Amälde' ),
- 'Userlogout' => array( 'Abmälde' ),
+ 'Categories' => array( 'Kategorie' ),
+ 'ChangePassword' => array( 'Passwort ändre' ),
+ 'Confirmemail' => array( 'E-Mail bstetige' ),
+ 'Contributions' => array( 'Byytreeg' ),
'CreateAccount' => array( 'Benutzerchonto aaleege' ),
- 'Preferences' => array( 'Ystellige' ),
- 'Watchlist' => array( 'Beobachtigslischte' ),
- 'Recentchanges' => array( 'Letschti Änderige' ),
- 'Upload' => array( 'Uffelade' ),
+ 'Deadendpages' => array( 'Sackgassesyte' ),
+ 'DeletedContributions' => array( 'Gleschti Byytreeg' ),
+ 'Disambiguations' => array( 'Begriffschlärigsverwyys' ),
+ 'DoubleRedirects' => array( 'Doppleti Wyterlaitige' ),
+ 'Emailuser' => array( 'E-Mail' ),
+ 'Export' => array( 'Exportiere' ),
+ 'Fewestrevisions' => array( 'Syte wo am wenigschte bearbeitet sin' ),
+ 'FileDuplicateSearch' => array( 'Datei-Duplikat-Suech' ),
+ 'Filepath' => array( 'Dateipfad' ),
+ 'Import' => array( 'Importiere' ),
+ 'Invalidateemail' => array( 'E-Mail nit bstetige' ),
+ 'BlockList' => array( 'Gsperrti IP' ),
+ 'LinkSearch' => array( 'Suech no Gleicher' ),
+ 'Listadmins' => array( 'Ammanne' ),
+ 'Listbots' => array( 'Bötli' ),
'Listfiles' => array( 'Dateie' ),
- 'Newimages' => array( 'Neji Dateie' ),
- 'Listusers' => array( 'Benutzerlischte' ),
'Listgrouprights' => array( 'Grupperächt' ),
- 'Statistics' => array( 'Statischtik' ),
- 'Randompage' => array( 'Zuefelligi Syte' ),
+ 'Listredirects' => array( 'Wyterleitige' ),
+ 'Listusers' => array( 'Benutzerlischte' ),
+ 'Lockdb' => array( 'Datebank sperre' ),
+ 'Log' => array( 'Logbuech' ),
'Lonelypages' => array( 'Verwaisti Syte' ),
- 'Uncategorizedpages' => array( 'Syte wo nit kategorisiert sin' ),
- 'Uncategorizedcategories' => array( 'Kategorie wo nit kategorisiert sin' ),
- 'Uncategorizedimages' => array( 'Dateie wo nit kategorisiert sin' ),
- 'Uncategorizedtemplates' => array( 'Vorlage wo nit kategorisiert sin' ),
- 'Unusedcategories' => array( 'Kategorie wo nit brucht wäre' ),
- 'Unusedimages' => array( 'Dateie wo nit brucht wäre' ),
- 'Wantedpages' => array( 'Syte wo gwinscht sin' ),
- 'Wantedcategories' => array( 'Kategorie wo gwinscht sin' ),
- 'Wantedfiles' => array( 'Dateie wo fähle' ),
- 'Wantedtemplates' => array( 'Vorlage wo fähle' ),
+ 'Longpages' => array( 'Langi Syte' ),
+ 'MergeHistory' => array( 'Versionsgschichte zämefiere' ),
+ 'MIMEsearch' => array( 'MIME-Suech' ),
+ 'Mostcategories' => array( 'Syte wo am meischte kategorisiert sin' ),
+ 'Mostimages' => array( 'Dateie wo am meischte brucht wäre' ),
'Mostlinked' => array( 'Syte wo am meischte vergleicht sin' ),
'Mostlinkedcategories' => array( 'Kategorie wo am meischte brucht wäre' ),
'Mostlinkedtemplates' => array( 'Vorlage wo am meischte brucht wäre' ),
- 'Mostimages' => array( 'Dateie wo am meischte brucht wäre' ),
- 'Mostcategories' => array( 'Syte wo am meischte kategorisiert sin' ),
'Mostrevisions' => array( 'Syte wo am meischte bearbeitet sin' ),
- 'Fewestrevisions' => array( 'Syte wo am wenigschte bearbeitet sin' ),
- 'Shortpages' => array( 'Churzi Syte' ),
- 'Longpages' => array( 'Langi Syte' ),
+ 'Movepage' => array( 'Verschiebe' ),
+ 'Mycontributions' => array( 'Myyni Byytreeg' ),
+ 'Mypage' => array( 'Myyni Benutzersyte' ),
+ 'Mytalk' => array( 'Myyni Diskussionssyte' ),
+ 'Newimages' => array( 'Neji Dateie' ),
'Newpages' => array( 'Neji Syte' ),
- 'Ancientpages' => array( 'Veralteti Syte' ),
- 'Deadendpages' => array( 'Sackgassesyte' ),
+ 'Popularpages' => array( 'Beliebteschti Syte' ),
+ 'Preferences' => array( 'Ystellige' ),
+ 'Prefixindex' => array( 'Vorsilbeverzeichnis' ),
'Protectedpages' => array( 'Gschitzti Syte' ),
'Protectedtitles' => array( 'Gsperrti Titel' ),
- 'Allpages' => array( 'Alli Syte' ),
- 'Prefixindex' => array( 'Vorsilbeverzeichnis' ),
- 'Ipblocklist' => array( 'Gsperrti IP' ),
- 'Specialpages' => array( 'Spezialsyte' ),
- 'Contributions' => array( 'Byytreeg' ),
- 'Emailuser' => array( 'E-Mail' ),
- 'Confirmemail' => array( 'E-Mail bstetige' ),
- 'Whatlinkshere' => array( 'Was gleicht do ane?' ),
+ 'Randompage' => array( 'Zuefelligi Syte' ),
+ 'Randomredirect' => array( 'Zuefelligi Wyterleitig' ),
+ 'Recentchanges' => array( 'Letschti Änderige' ),
'Recentchangeslinked' => array( 'Änderige an vergleichte Syte' ),
- 'Movepage' => array( 'Verschiebe' ),
- 'Blockme' => array( 'Proxy-Sperre' ),
- 'Booksources' => array( 'ISBN-Suech' ),
- 'Categories' => array( 'Kategorie' ),
- 'Export' => array( 'Exportiere' ),
- 'Allmessages' => array( 'Alli Nochrichte' ),
- 'Log' => array( 'Logbuech' ),
- 'Blockip' => array( 'Sperre' ),
+ 'Revisiondelete' => array( 'Versionsleschig' ),
+ 'Search' => array( 'Suech' ),
+ 'Shortpages' => array( 'Churzi Syte' ),
+ 'Specialpages' => array( 'Spezialsyte' ),
+ 'Statistics' => array( 'Statischtik' ),
+ 'Uncategorizedcategories' => array( 'Kategorie wo nit kategorisiert sin' ),
+ 'Uncategorizedimages' => array( 'Dateie wo nit kategorisiert sin' ),
+ 'Uncategorizedpages' => array( 'Syte wo nit kategorisiert sin' ),
+ 'Uncategorizedtemplates' => array( 'Vorlage wo nit kategorisiert sin' ),
'Undelete' => array( 'Widerhärstelle' ),
- 'Import' => array( 'Importiere' ),
- 'Lockdb' => array( 'Datebank sperre' ),
'Unlockdb' => array( 'Sperrig vu dr Datebank ufhebe' ),
- 'Userrights' => array( 'Benutzerrächt' ),
- 'MIMEsearch' => array( 'MIME-Suech' ),
- 'FileDuplicateSearch' => array( 'Datei-Duplikat-Suech' ),
- 'Unwatchedpages' => array( 'Syte wu nit beobachtet wäre' ),
- 'Listredirects' => array( 'Wyterleitige' ),
- 'Revisiondelete' => array( 'Versionsleschig' ),
+ 'Unusedcategories' => array( 'Kategorie wo nit brucht wäre' ),
+ 'Unusedimages' => array( 'Dateie wo nit brucht wäre' ),
'Unusedtemplates' => array( 'Vorlage wo nit brucht wäre' ),
- 'Randomredirect' => array( 'Zuefelligi Wyterleitig' ),
- 'Mypage' => array( 'Myyni Benutzersyte' ),
- 'Mytalk' => array( 'Myyni Diskussionssyte' ),
- 'Mycontributions' => array( 'Myyni Byytreeg' ),
- 'Listadmins' => array( 'Ammanne' ),
- 'Listbots' => array( 'Bötli' ),
- 'Popularpages' => array( 'Beliebteschti Syte' ),
- 'Search' => array( 'Suech' ),
- 'Resetpass' => array( 'Passwort ändre' ),
+ 'Unwatchedpages' => array( 'Syte wu nit beobachtet wäre' ),
+ 'Upload' => array( 'Uffelade' ),
+ 'Userlogin' => array( 'Amälde' ),
+ 'Userlogout' => array( 'Abmälde' ),
+ 'Userrights' => array( 'Benutzerrächt' ),
+ 'Wantedcategories' => array( 'Kategorie wo gwinscht sin' ),
+ 'Wantedfiles' => array( 'Dateie wo fähle' ),
+ 'Wantedpages' => array( 'Syte wo gwinscht sin' ),
+ 'Wantedtemplates' => array( 'Vorlage wo fähle' ),
+ 'Watchlist' => array( 'Beobachtigslischte' ),
+ 'Whatlinkshere' => array( 'Was gleicht do ane?' ),
'Withoutinterwiki' => array( 'Ohni Interwiki' ),
- 'MergeHistory' => array( 'Versionsgschichte zämefiere' ),
- 'Filepath' => array( 'Dateipfad' ),
- 'Invalidateemail' => array( 'E-Mail nit bstetige' ),
- 'Blankpage' => array( 'Läärsyte' ),
- 'LinkSearch' => array( 'Suech no Gleicher' ),
- 'DeletedContributions' => array( 'Gleschti Byytreeg' ),
+);
+
+$magicWords = array(
+ 'displaytitle' => array( '1', 'SYTETITEL', 'SEITENTITEL', 'DISPLAYTITLE' ),
);
$linkTrail = '/^([äöüßa-z]+)(.*)$/sDu';
@@ -148,8 +152,8 @@ $messages = array(
'tog-shownumberswatching' => 'Aazahl Benutzer aazeige, wo ne Syten am Aaluege sy (i den Artikelsyte, i de «letschten Änderigen» und i der Beobachtigslischte)',
'tog-oldsig' => 'Vorschau vu dr Unterschrift:',
'tog-fancysig' => 'Signatur as Wikitext behandle (ohni automatischi Vergleichig)',
-'tog-externaleditor' => 'Externe Editor als Standard bruche (nume fir Experte, doderzue brucht s speziälli Yystellige uf em Computer. [http://www.mediawiki.org/wiki/Manual:External_editors Wyteri Informatione doderzue.])',
-'tog-externaldiff' => 'Extern Programm fir Versionsunterschid als Standard bruche (nume fir Experte, doderzue brucht s speziälli Yystellige uf em Computer. [http://www.mediawiki.org/wiki/Manual:External_editors Wyteri Informatione doderzue.])',
+'tog-externaleditor' => 'Externe Editor als Standard bruche (nume fir Experte, doderzue brucht s speziälli Yystellige uf em Computer. [//www.mediawiki.org/wiki/Manual:External_editors Wyteri Informatione doderzue.])',
+'tog-externaldiff' => 'Extern Programm fir Versionsunterschid als Standard bruche (nume fir Experte, doderzue brucht s speziälli Yystellige uf em Computer. [//www.mediawiki.org/wiki/Manual:External_editors Wyteri Informatione doderzue.])',
'tog-showjumplinks' => '«Wächsle-zu»-Links ermügleche',
'tog-uselivepreview' => 'Live-Vorschau bruche (JavaScript) (experimentell)',
'tog-forceeditsummary' => 'Sag mer s, wänn i s Zämmefassigsfeld läär loss',
@@ -246,9 +250,7 @@ $messages = array(
'listingcontinuesabbrev' => '(Forts.)',
'index-category' => 'Verzeichneti Syte',
'noindex-category' => 'Syte wu nit verzeichnet sin',
-
-'mainpagetext' => "'''MediaWiki isch erfolgrich inschtalliert worre.'''",
-'mainpagedocfooter' => 'Lueg uf d [http://meta.wikimedia.org/wiki/MediaWiki_localisation Dokumentation fir d Aapassig vu dr Benutzeroberflächi] un s [http://meta.wikimedia.org/wiki/Help:Contents Benutzerhandbuech] fir d Hilf iber d Benutzig un s Yystelle.',
+'broken-file-category' => 'Syte mit kaputtige Dateilink',
'about' => 'Ãœber',
'article' => 'Inhaltssyte',
@@ -300,10 +302,10 @@ $messages = array(
'history' => 'Versione',
'history_short' => 'Versione/Autore',
'updatedmarker' => '(gändret syt mym letschte Bsuech)',
-'info_short' => 'Information',
'printableversion' => 'Druck-Aasicht',
'permalink' => 'Bschtändigi URL',
'print' => 'Drucke',
+'view' => 'Aaluege',
'edit' => 'Ändere',
'create' => 'Erstelle',
'editthispage' => 'Syte bearbeite',
@@ -311,6 +313,7 @@ $messages = array(
'delete' => 'Lösche',
'deletethispage' => 'Syte lösche',
'undelete_short' => '{{PLURAL:$1|1 Version|$1 Versione}} widerherstelle',
+'viewdeleted_short' => '{{PLURAL:$1|ei gleschti Änderig|$1 gleschti Ändrige}} aaluege',
'protect' => 'Schütze',
'protect_change' => 'ändere',
'protectthispage' => 'Artikel schütze',
@@ -395,6 +398,8 @@ Di maximal Wartezyt fir e Lock isch umme',
'toc' => 'Inhaltsverzeichnis',
'showtoc' => 'ufklappe',
'hidetoc' => 'zueklappe',
+'collapsible-collapse' => 'zueklappe',
+'collapsible-expand' => 'ufklappe',
'thisisdeleted' => 'Aaluege oder widerherstelle vu $1?',
'viewdeleted' => '$1 aaluege?',
'restorelink' => '{{PLURAL:$1|gleschti Änderig|$1 gleschti Ändrige}}',
@@ -406,6 +411,8 @@ Di maximal Wartezyt fir e Lock isch umme',
'page-rss-feed' => 'RSS-Feed für „$1“',
'page-atom-feed' => 'Atom-Feed fir „$1“',
'red-link-title' => '$1 (Syte git s nit)',
+'sort-descending' => 'Abezues sortiere',
+'sort-ascending' => 'Ufezues sortiere',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Syte',
@@ -487,12 +494,13 @@ Abfrog: $2',
'protectedpagetext' => 'Die Syte isch fir s Bearbeite gsperrt.',
'viewsourcetext' => 'Quelltext vo dere Syte:',
'protectedinterface' => 'In däre Syte het s Text fir s Sproch-Interface vu dr Software un si isch gsperrt, zum Missbruch z verhindre.',
-'editinginterface' => "'''Obacht:''' Du bisch e Syten am Verändere, wu zum User.Interface ghert. Wänn Du die Syte veränderesch, no änderet sich s User-Interface au fir di andere Benutzer. Fir Ibersetzige lueg bitte, eb Du doodefir s [http://translatewiki.net/wiki/Main_Page?setlang=gsw Translatewiki] witt bruuche, s MediaWiki-Lokalisierigsprojäkt.",
+'editinginterface' => "'''Obacht:''' Du bisch e Syten am Verändere, wu zum User.Interface ghert. Wänn Du die Syte veränderesch, no änderet sich s User-Interface au fir di andere Benutzer. Fir Ibersetzige lueg bitte, eb Du doodefir s [//translatewiki.net/wiki/Main_Page?setlang=gsw Translatewiki] witt bruuche, s MediaWiki-Lokalisierigsprojäkt.",
'sqlhidden' => '(SQL-Abfrog verschteckt)',
'cascadeprotected' => 'Die Syte isch fir s Bearbeite gsperrt. Si isch yybunde in {{PLURAL:$1|die Syte, wu do chunnt|die Syte, wu do chemme}} , wu mit ere Kaskadesperroption gschitzt {{PLURAL:$1|isch|sin}}:
$2',
'namespaceprotected' => "Du hesch kei Berächtigung, die Syte im '''$1'''-Namensruum z bearbeite.",
-'customcssjsprotected' => 'Du bisch nid berächtigt, die Syte z bearbeite, wel si zue dr persenlige Yystellige vun eme andere Benutzer ghert.',
+'customcssprotected' => 'Du bisch nid berächtigt, die Syte mit CSS z bearbeite, wel si zue dr persenlige Yystellige vun eme andere Benutzer ghert.',
+'customjsprotected' => 'Du bisch nid berächtigt, die Javaskript-Syte z bearbeite, wel si zue dr persenlige Yystellige vun eme andere Benutzer ghert.',
'ns-specialprotected' => 'Spezialsyte chenne nid bearbeitet wäre.',
'titleprotected' => "E Syte mit däm Name cha nid aaglait wäre.
Die Sperri isch dur [[User:$1|$1]] yygrichtet wore mit dr Begrindig ''„$2“''.",
@@ -531,6 +539,7 @@ Vergiss nid, dyni [[Special:Preferences|{{SITENAME}}-Yystellige]] aazpasse.',
'createaccount' => 'Nöis Benutzerkonto aalege',
'gotaccount' => "Du häsch scho a Konto? '''$1'''",
'gotaccountlink' => '»Login fir Benutzer, wu scho aagmäldet sin«',
+'userlogin-resetlink' => 'Hesch Dyy Aamäldedate vergässe?',
'createaccountmail' => 'iber E-Mail',
'createaccountreason' => 'Grund:',
'badretype' => 'Di beidi Passwörter stimme nid zämme.',
@@ -540,13 +549,15 @@ Bitte nimm e andere.',
'createaccounterror' => 'Het s Benutzerkonto nit chenne aalege: $1',
'nocookiesnew' => 'Dr Benutzerzuegang isch aaglait wore, aber Du bisch nid yygloggt. {{SITENAME}} brucht fir die Funktion Cookies, bitte tue die aktiviere un logg Di derno mit Dyynem neje Benutzername un em Passwort, wu drzue ghert, yy.',
'nocookieslogin' => '{{SITENAME}} brucht Cookies fir e Aamäldig. Du hesch d Cookies deaktiviert. Aktivier si bitte un versuech s no mol.',
+'nocookiesfornew' => 'S Benutzerkonto isch nit aagleit wore, wel d Datehärchumft nit het chenne uusgmacht wäre.
+S mueß sichergstellt syy, ass Cookies aktiviert sin. Derno ddie Syte nomol lade un s wider versueche.',
'noname' => 'Du muesch e Benutzername aagee.',
'loginsuccesstitle' => 'Aamäldig erfolgrych',
'loginsuccess' => "'''Du bisch jetz als \"\$1\" bi {{SITENAME}} aagmäldet.'''",
'nosuchuser' => 'Dr Benutzername "$1" git s nit.
Iberprief d Schrybwys, oder mäld Di as [[Special:UserLogin/signup|neje Benutzer aa]].',
-'nosuchusershort' => 'S git kei Benutzername „<nowiki>$1</nowiki>“. Bitte iberprief d Schrybwys.',
+'nosuchusershort' => 'S git kei Benutzername „$1“. Bitte iberprief d Schrybwys.',
'nouserspecified' => 'Bitte gib e Benutzername yy.',
'login-userblocked' => 'Dää Benutzer isch gsperrt. Aamäldig nit erlaubt.',
'wrongpassword' => 'Des Passwort isch falsch (oder fählt). Bitte versuech s nomol.',
@@ -594,13 +605,14 @@ Bitte gib ä neiji Adress in nem gültige Format ii, odr tue s Feld leere.',
Wänn s Benutzerkonto us Versäh aaglait woren isch, chasch die Nochricht ignoriere.',
'usernamehasherror' => 'In Benutzernäme derf s kei Rautezeiche din haa',
'login-throttled' => 'Du hesch z vilmol vergebli versuecht, Di aazmälde. Bitte wart, voreb Du s non emol versuechsch.',
+'login-abort-generic' => 'Dyy Aamäldig isch nit erfolgryych gsii – Abbroche',
'loginlanguagelabel' => 'Sproch: $1',
'suspicious-userlogout' => 'Dyy Versuech di abzmälde isch abbroche wore, wel s uusgsäh het, wie wänn s vun eme bschedigte Browser oder eme Cacheproxy uus gsändet woren isch.',
# E-mail sending
'php-mail-error-unknown' => 'Nit bekannte Fähler mit dr Funktion mail() vu PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Passwort fir s Benutzerkonto ändere oder zrucksetze',
'resetpass_announce' => 'Aamäldig mit em Code, wu per Mail zuegschickt woren isch. Zum d Aamäldig abzschliesse, muesch jetz e nej Passwort wehle.',
'resetpass_text' => '<!-- Tue do dr Text ergänze -->',
@@ -618,6 +630,32 @@ Wänn s Benutzerkonto us Versäh aaglait woren isch, chasch die Nochricht ignori
Villicht hesch Dyy Passwort scho gänderet oder e nej temporär Passwort aagforderet.',
'resetpass-temp-password' => 'Temporär Passwort:',
+# Special:PasswordReset
+'passwordreset' => 'Passwort zruggsetze',
+'passwordreset-text' => 'Bitte des Formular uusfille, ass De E-Mail e Erinnerig zue dr Aamäldeinformatione vu Dyym Benutzerkonto iberchunnsch.',
+'passwordreset-legend' => 'Passwort zrucksetze',
+'passwordreset-disabled' => 'S Zrucksetze vu Passwerter isch in däm Wiki deaktiviert wore.',
+'passwordreset-pretext' => '{{PLURAL:$1||Gib eis vu däne Daten aa}}',
+'passwordreset-username' => 'Benutzername:',
+'passwordreset-domain' => 'Domain:',
+'passwordreset-email' => 'E-Mail-Adräss:',
+'passwordreset-emailtitle' => 'Benutzerkontoinformationen uf {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Eber mit dr IP-Adresse $1, wahrschyns Du sälber, het e Erinnerig an Dyyni Benutzerkonteninformatione fir {{SITENAME}} aagforderet ($4). {{PLURAL:$3|Des Benutzerkonto isch|Die Benutzerkonte sin}} mit däre E-Mail-Adräss verchnipft:
+
+$2
+
+{{PLURAL:$3|Des temporär Passwort lauft|Die temporäre Passwerter laufe}} in {{PLURAL:$5|eim Tag|$5 Täg}} ab.
+Du sottsch di aamälden un e nej Passwort vergee. Wänn eber ander die Aafrog gstellt het oder Du di wider an Dyy alt Passwort chasch erinnere un s nimi wettsch ändere, chasch die Nochricht ignorieren un alsfurt Dyy alt Passwort bruche.',
+'passwordreset-emailtext-user' => 'Benutzer $1 uf {{SITENAME}} het e Erinnerig an Dyyni Benutzerkonteninformatione fir {{SITENAME}} aagforderet ($4). {{PLURAL:$3|Des Benutzerkonto isch|Die Benutzerkonte sin}} mit däre E-Mail-Adräss verchnipft:
+
+$2
+
+{{PLURAL:$3|Des temporär Passwort lauft|Die temporäre Passwerter laufe}} in {{PLURAL:$5|eim Tag|$5 Täg}} ab.
+Du sottsch di aamälden un e nej Passwort vergee. Wänn eber ander die Aafrog gstellt het oder Du di wider an Dyy alt Passwort chasch erinnere un s nimi wettsch ändere, chasch die Nochricht ignorieren un alsfurt Dyy alt Passwort bruche.',
+'passwordreset-emailelement' => 'Benutzername: $1
+Temporär Passwort: $2',
+'passwordreset-emailsent' => 'E Erinnerig isch per E-Mail verschickt wore.',
+
# Edit page toolbar
'bold_sample' => 'fetti Schrift',
'bold_tip' => 'Fetti Schrift',
@@ -629,8 +667,6 @@ Villicht hesch Dyy Passwort scho gänderet oder e nej temporär Passwort aagford
'extlink_tip' => 'Externer Link (http:// beachte)',
'headline_sample' => 'Abschnitts-Ãœberschrift',
'headline_tip' => 'Überschrift Äbeni 2',
-'math_sample' => 'Formel do yfüge',
-'math_tip' => 'Mathematisch Formel (LaTeX)',
'nowiki_sample' => 'Doo nit-formatierte Text yygee',
'nowiki_tip' => 'Wiki-Formatierige ignoriere',
'image_sample' => 'Byschpil.jpg',
@@ -718,7 +754,7 @@ oder [{{fullurl:{{FULLPAGENAME}}|action=edit}} die Syte bearbeite]</span>.',
'noarticletext-nopermission' => 'In däre Syte het s zur Zyt no kei Text.
Du chasch dää Titel uf andre Syte [[Special:Search/{{PAGENAME}}|sueche]]
oder <span class="plainlinks">in dr zuegherige [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbiecher sueche].</span>',
-'userpage-userdoesnotexist' => 'S Benutzerkonto „$1“ git s nit. Bitte prief, eb Du die Syte wirkli wit aalege/bearbeite.',
+'userpage-userdoesnotexist' => 'S Benutzerkonto „<nowiki>$1</nowiki>“ git s nit. Bitte prief, eb Du die Syte wirkli wit aalege/bearbeite.',
'userpage-userdoesnotexist-view' => 'S Benutzerkonto „$1“ isch nit registriert.',
'blocked-notice-logextract' => 'Dää Benutzer isch zur Zyt gsperrt.
As Information chunnt do ne aktuälle Uuszug us em Benutzersperr-Logbuech:',
@@ -757,6 +793,7 @@ Bitte versuech s nomol. Derzue drucksch unter däre Täxtvorschau nomol uf „Sy
Wänn s Problem blybt, [[Special:UserLogout|mäld Di ab]] un derno wider aa.'''",
'token_suffix_mismatch' => "'''Dyyni Bearbeitig isch zruckgwise wore, wel Dyy Browser Zeiche im Bearbeite-Token verstimmlet het.
S Spichere cha dr Inhalt vu dr Syte hii mache. Des git s e mänkmol, wänn eber e anonyme Proxy-Dienscht brucht, wu Fähler macht.'''",
+'edit_form_incomplete' => "'''Dr Inhalt vum Bearbeitigsformular isch nit vollständig zum Server chuu. Bitte prief Dyy Bearbeitigen uf Vollständigkeit un versuech s nomol.'''",
'editing' => 'Bearbeite vo «$1»',
'editingsection' => 'Bearbeite vo «$1» (Absatz)',
'editingcomment' => 'Bearbeite vu $1 (Neje Abschnitt)',
@@ -983,7 +1020,8 @@ Bitte prief d Logbiecher.',
# Suppression log
'suppressionlog' => 'Oversight-Logbuech',
-'suppressionlogtext' => 'Des isch s Logbuech vu dr Oversight-Aktione (Änderige vu dr Sichtbarkeit vu Versione, Bearbeitigskommentar, Benutzernäme un Benutzersperrine).',
+'suppressionlogtext' => 'Des isch s Logbuech vu dr Oversight-Aktione (Änderige vu dr Sichtbarkeit vu Versione, Bearbeitigskommentar, Benutzernäme un Benutzersperrine).
+Lueg uff d [[Special:BlockList|Lischt vo gsperrte IP-Adrässe un Benutzernäme]] für aktuell Sperre.',
# History merging
'mergehistory' => 'Versionsgschichte zämmefiere',
@@ -1090,12 +1128,13 @@ Stell sicher, ass d Versionsgschicht vun eme Artikel historisch korrekt isch.',
'searchdisabled' => 'D {{SITENAME}}-Suech isch deaktiviert. Du chasch mit Google sueche, s cha aber syy ass dr Suechindex vu Google fir {{SITENAME}} veraltet isch.',
# Quickbar
-'qbsettings' => 'Syteleischte',
-'qbsettings-none' => 'Keini',
-'qbsettings-fixedleft' => 'Links, fescht',
-'qbsettings-fixedright' => 'Rächts, fescht',
-'qbsettings-floatingleft' => 'Links, in dr Schwebi',
-'qbsettings-floatingright' => 'Rächts, in dr Schwebi',
+'qbsettings' => 'Syteleischte',
+'qbsettings-none' => 'Keini',
+'qbsettings-fixedleft' => 'Links, fescht',
+'qbsettings-fixedright' => 'Rächts, fescht',
+'qbsettings-floatingleft' => 'Links, in dr Schwebi',
+'qbsettings-floatingright' => 'Rächts, in dr Schwebi',
+'qbsettings-directionality' => 'Fescht, abhängig vu dr Schrybrichtig vu dr gwehlte Sproch',
# Preferences page
'preferences' => 'Yystellige',
@@ -1106,9 +1145,10 @@ Stell sicher, ass d Versionsgschicht vun eme Artikel historisch korrekt isch.',
'changepassword' => 'Passwort ändere',
'prefs-skin' => 'Benutzeroberflechi',
'skin-preview' => 'Vorschou',
-'prefs-math' => 'TeX',
'datedefault' => 'kei Aagab',
+'prefs-beta' => 'Betafunktione',
'prefs-datetime' => 'Datum un Zyt',
+'prefs-labs' => 'Alphafunktione',
'prefs-personal' => 'Benutzerdate',
'prefs-rc' => 'Letschti Änderige',
'prefs-watchlist' => 'Beobachtigslischte',
@@ -1130,8 +1170,6 @@ Stell sicher, ass d Versionsgschicht vun eme Artikel historisch korrekt isch.',
'columns' => 'Spaltene',
'searchresultshead' => 'Suech-Ergäbnis',
'resultsperpage' => 'Träffer pro Syte',
-'contextlines' => 'Zyle pro Träffer',
-'contextchars' => 'Zeiche pro Zyle',
'stub-threshold' => 'Gleichformatierig <a href="#" class="stub">vu chleine Syte</a> (in Byte):',
'stub-threshold-disabled' => 'Deaktiviert',
'recentchangesdays' => 'Aazahl vu dr Täg, wu d Lischt vu dr „Letschte Änderige“ standardmässig soll umfasse:',
@@ -1144,7 +1182,7 @@ Do het s e zuefellig generierte Wärt, wu du chasch bruche: $1',
'savedprefs' => 'Dyni Ystellige sy gspycheret worde.',
'timezonelegend' => 'Zytzone:',
'localtime' => 'Ortszyt:',
-'timezoneuseserverdefault' => 'Standardzyt vum Server',
+'timezoneuseserverdefault' => 'Standardzyt vum Server bruche ($1)',
'timezoneuseoffset' => 'Anderi (Unterschiid aagee)',
'timezoneoffset' => 'Unterschiid¹',
'servertime' => 'Aktuälli Serverzyt:',
@@ -1191,8 +1229,8 @@ Des cha nimmi ruckgängig gmacht wäre.',
'prefs-help-gender' => 'Optional: bruucht fir gschlächtsspezifischi Adrässierig dur d Software. Die Information isch effentlig.',
'email' => 'E-Mail',
'prefs-help-realname' => '* <strong>Dyy ächte Name</strong> (optional): Wänn du wetsch, ass Dyyni Änderige uf Dii chenne zruckgfierd wäre.',
-'prefs-help-email' => '* <strong>E-Mail-Adrässe</strong> (optional): We du en E-Mail-Adrässen aagisch, überchömen anderi Benutzer d Müglechkeit, di über dyni Benutzer- oder Benutzer_Diskussionsyte z kontaktiere. Im Fall das du mal ds Passwort sötsch vergässe ha, cha dir es nöis Zuefalls-Passwort gmailet wärde.<br />
-** <strong>Signatur</strong> (optional): D Signatur wird ygsetzt, we du e Diskussionsbytrag mit «<nowiki>~~~~</nowiki>» unterschrybsch; we du ke spezielli Signatur aagisch, de wird eifach di Benutzername mit emne Link uf dyni Benutzersyten ygfüegt.',
+'prefs-help-email' => 'D Aagab vun ere E-Mail isch optional, macht aber s Zueschicke vun eme Ersatzpasswort meglig, wänn Du dyy Passwort vergässe hesch.',
+'prefs-help-email-others' => 'Mit andere Benutzer chasch au iber d Benutzerdiskussionssyte Kontakt ufneh, ohne dass Du dyy Identitet muesch uffelege.',
'prefs-help-email-required' => 'S brucht e giltigi E-Mail-Adräss.',
'prefs-info' => 'Basisinformatione',
'prefs-i18n' => 'Internationalisierig',
@@ -1316,15 +1354,15 @@ Des cha nimmi ruckgängig gmacht wäre.',
'right-userrights' => 'Benutzerrächt bearbeite',
'right-userrights-interwiki' => 'Benutzerrächt in andere Wiki bearbeite',
'right-siteadmin' => 'Datebank sperre un entsperre',
-'right-reset-passwords' => 'S Passwort vun eme andere Benutzer zrucksetze',
'right-override-export-depth' => 'Exportier Syte mitsamt dr vergleichte Syte bis zuen ere Tiefi vu 5',
'right-sendemail' => 'E-Mail an anderi Benutzer schicke',
# 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',
-'rightsnone' => '(keini)',
+'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',
+'rightsnone' => '(keini)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'die Syte z läse',
@@ -1447,11 +1485,12 @@ Lueg au d [[Special:NewFiles|Galerii vu neije Dateie]] fir e visuälle Iberblick
'minlength1' => 'Dateinäme mien zmindescht e Buechstab lang syy.',
'illegalfilename' => 'Im Dateiname „$1“ het s zmindescht ei Zeiche, wu nit erlaubt isch. Bitte gib dr Datei e andere Name un versuech nomol si uffezlade.',
'badfilename' => 'Dr Dateiname isch in „$1“ gänderet wore.',
-'filetype-mime-mismatch' => 'Dateierwyterig passt nit zum MIME-Typ.',
+'filetype-mime-mismatch' => 'D Dateierwyterig „.$1“ passt nit zum MIME-Typ ($2).',
'filetype-badmime' => 'Dateie mit em MIME-Typ „$1“ derfe nit uffeglade wäre.',
'filetype-bad-ie-mime' => 'Die Datei cha nit uffeglade wäre, wel dr Internet Explorer si as „$1“ kennt, wu e nit erlaubte, villicht gferlige Dateityp isch.',
'filetype-unwanted-type' => "'''„.$1“''' isch e Dateiformat, wu nit gwinscht isch. Erlaubt {{PLURAL:$3|isch s Dateiformat|sin d Dateiformat}}: $2.",
-'filetype-banned-type' => "'''„.$1“''' isch e Dateiformat, wu nit erlaubt isch. Erlaubt {{PLURAL:$3|isch s Dateiformat|sin d Dateiformat}}: $2.",
+'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|isch e Dateiformat, wu nit erlaubt isch|sin Dateitype, wu nit erlaubt sin}}.
+ Erlaubt {{PLURAL:$3|isch s Dateiformat|sin d Dateiformat}} $2.",
'filetype-missing' => 'D Datei, wu soll uffeglade wäre, het kei Erwyterig (z. B. „.jpg“).',
'empty-file' => 'D Datei, wu Du ibertrait hesch, isch läär.',
'file-too-large' => 'D Datei, wu Du ibertrait hesch, isch z groß.',
@@ -1467,6 +1506,7 @@ Lueg au d [[Special:NewFiles|Galerii vu neije Dateie]] fir e visuälle Iberblick
'large-file' => 'D Dateigressi sott, wänn s goht, nit gresser syy wie $1. Die Datei isch $2 gross.',
'largefileserver' => 'Die Datei isch gresser wie die vum Server yygstellti Maximalgressi.',
'emptyfile' => 'Di uffeglade Datei isch schyyns läär. Dr Grund cha ne Tippfähler im Dateiname syy. Bitte iberprief, eb du die Datei wirkli wit uffelade.',
+'windows-nonascii-filename' => 'Des Wiki unterstitzt kei Dateinäme mit Sonderzeiche.',
'fileexists' => "S git scho ne Datei mit däm Name.
Wänn Du uf \"Datei spichere\" drucksch, no wird die Datei iberschribe.
Bitte prief '''<tt>[[:\$1]]</tt>''', wänn Der nit sicher bisch.
@@ -1502,6 +1542,8 @@ Wänn Du die Datei einewäg wit uffelade, gang bitte zruck un ändere dr Name.
'php-uploaddisabledtext' => 'S Uffelade vu PHP-Dateie isch deaktiviert wore. Bitte iberprief d file_uploads-Yystellig.',
'uploadscripted' => 'In däre Datei git s HTML- oder Scriptcode, wu fälschligerwyys vun eme Webbrowser usgfiert chennt were.',
'uploadvirus' => 'In däre Datei het s e Virus! Detail: $1',
+'uploadjava' => 'Des isch e ZIP-Datei, wu s e CLASS-Datei vu Java din het.
+S Uffelade vu Java-Dateien isch nit gstattet, wel si s Umgoh vu Sicherheitsyyschränkige chennte megli mache.',
'upload-source' => 'Quälldatei',
'sourcefilename' => 'Quälldatei:',
'sourceurl' => 'Quäll-URL:',
@@ -1511,10 +1553,6 @@ Wänn Du die Datei einewäg wit uffelade, gang bitte zruck un ändere dr Name.
'upload-options' => 'Optione fir s Uffelade',
'watchthisupload' => 'Die Syte beobachte',
'filewasdeleted' => 'E Datei mit däm Name isch scho mol uffeglade wore un isch in dr Zwischezyt wider glescht wore. Bitte prief zerscht dr Yytrag im $1, voreb Du die Datei wirkli spycheresch.',
-'upload-wasdeleted' => "'''Obacht: Du ladsch e Datei uffe, wu scho mol glescht woren isch.'''
-
-Bitte prief, eb s dr Richtlinie entspricht, wänn Du die Datei no mol uffeladesch..
-Zue Dyynere Information chunnt do s Lesch-Logbuech mit dr Begrindig fir di friejer Leschig:",
'filename-bad-prefix' => "Dr Dateiname fangt mit '''„$1“''' aa. Des isch isch normalerwyys dr Dateiname, wu vun ere Digitalkamera vorgee wird un d Datei nit bschryybt.
Bitte gib dr Datei e Name, wu dr Inhalt besser bschryybt.",
'upload-success-subj' => 'Erfolgryych uffegelade',
@@ -1539,6 +1577,23 @@ Wänn s Problem alno uftritt, informier e [[Special:ListUsers/sysop|Ammann]].',
'upload-unknown-size' => 'Nit bekannti Greßi',
'upload-http-error' => 'E HTTP-Fähler isch ufträtte: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'S het e Fähler gee bim Ufmache vu dr Datei fir d ZIP-Iberpriefig.',
+'zip-wrong-format' => 'D Datei, wu Du aagee hesch, isch kei ZIP-Datei.',
+'zip-bad' => 'D Datei isch kaputt oder e ZIP-Datei, wu us andere Grind nit cha gläse wäre.
+Si cha wäge däm nit richtig iberprieft wäre.',
+'zip-unsupported' => 'Die ZIP-Datei het Komprimierigseigeschafte, wu nit vu MediaWiki unterstitzt wäre.
+Si cha wäge däm nit richtig iberprieft wäre.',
+
+# Special:UploadStash
+'uploadstash' => 'Vorabspycherig binm Uffelade',
+'uploadstash-summary' => 'Die Syte macht dr Zuegriff uf Dateie megli, wu uffeglade wore sin (oder grad uffeglade wäre), wu aber nonig uf em Wiki publiziert wore sin. Die Dateie cha no niemer aaluege, ußer däjenig, wu si uffelade duet.',
+'uploadstash-clear' => 'Di vorab gspycherete Dateie uuseneh',
+'uploadstash-nofiles' => 'S git keini vorab gspycherete Dateie.',
+'uploadstash-badtoken' => 'S Uuseneh vu dr vorab gspycherete Dateien isch fählgschlaa, villicht wel d Sitzigsdaten abglofe sin. Bitte versuech s nomol.',
+'uploadstash-errclear' => 'S Uuseneh vu dr vorab gspycherete Dateie isch fählgschlaa.',
+'uploadstash-refresh' => 'Lischt vu dr Dateie aktualisiere',
+
# img_auth script messages
'img-auth-accessdenied' => 'Zuegriff verweigeret',
'img-auth-nopathinfo' => 'PATH_INFO fählt.
@@ -1618,7 +1673,7 @@ Die Lischt zeigt nume {{PLURAL:$1|dr erscht Gleich|di erschte $1 Gleicher}} uf d
E [[Special:WhatLinksHere/$2|vollständigi Lischt]] isch verfiegbar.',
'nolinkstoimage' => 'Kei Artikel verwändet des Bild.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Meh Gleicher]] fir die Datei.',
-'redirectstofile' => 'Die {{PLURAL:$1|Datei leitet|$1 Dateie leite}} uf die Datei wyter:',
+'linkstoimage-redirect' => '$1 (Dateiwyterleitig) $2',
'duplicatesoffile' => 'Die {{PLURAL:$1|Datei isch e Duplikat|$1 Dateie sin Duplikat}} vu däre Datei ([[Special:FileDuplicateSearch/$2|meh Detail]]):',
'sharedupload' => 'Die Datei isch vu $1. S cha syy, ass si vu andere Projekt brucht wird.',
'sharedupload-desc-there' => 'Die Datei isch vu $1 un derf vu andere Projäkt bruucht wäre. Lueg uf dr [$2 Dateibschryybigssyte] no wytere Informatione.',
@@ -1709,12 +1764,13 @@ Iberprief anderi Gleicher zue dr Vorlage, voreb Du die leschesch.',
'disambiguationspage' => 'Template:Begriffsklärig',
'disambiguations-text' => 'Die Syte vergleiche uf e Begriffsklärigs-Syte. Sie sotte aber besser uf d Syte vergleiche, wu eigetli gmeint sin.<br />E Syte wird as Begriffsklärigs-Syte behandlet, wänn [[MediaWiki:Disambiguationspage]] uf si vergleicht.<br />Gleicher us Namensryym wäre do nit ufglischtet.',
-'doubleredirects' => 'Doppleti Wyterleitige (Redirects)',
-'doubleredirectstext' => 'Die Lischt zeigt Wyterleitige, wu uf anderi Wyterleitige vergleiche.
+'doubleredirects' => 'Doppleti Wyterleitige (Redirects)',
+'doubleredirectstext' => 'Die Lischt zeigt Wyterleitige, wu uf anderi Wyterleitige vergleiche.
In jedere Zyylete het s Gleicher zue dr erschte un dr zwote Wyterleitig un s Ziil vu dr zwote Wyterleitig, wu normalerwys di gwinscht Ziilsyten isch. Do sott eigetli scho di erscht Wyterleitig druf zeige.
<del>Durgstricheni</del> Yytreg sin scho erledigt wore.',
-'double-redirect-fixed-move' => 'doppleti Wyterleitig ufglest: [[$1]] → [[$2]]',
-'double-redirect-fixer' => 'DoubleRedirectBot',
+'double-redirect-fixed-move' => 'doppleti Wyterleitig ufglest: [[$1]] → [[$2]]',
+'double-redirect-fixed-maintenance' => 'Di dopplet Wyterleitig vu [[$1]] no [[$2]] isch ufglest wore.',
+'double-redirect-fixer' => 'DoubleRedirectBot',
'brokenredirects' => 'Kaputti Wyterleitige',
'brokenredirectstext' => 'Die Spezialsyte lischtet Wyterleitige uf, wu zue Artikel fiere, wu s gar nid git:',
@@ -1791,6 +1847,7 @@ Bitte gib Acht, ass anderi Netzsyte die Datei mit ere diräkte URL chenne vergle
'pager-newer-n' => '{{PLURAL:$1|nächschte|nächschte $1}}',
'pager-older-n' => '{{PLURAL:$1|vorige|vorige $1}}',
'suppress' => 'Oversight',
+'querypage-disabled' => 'Die Spezialsyte isch deaktiviert wore us Leischtigserhaltigs-Grind.',
# Book sources
'booksources' => 'ISBN-Suech',
@@ -1906,6 +1963,10 @@ As Absender wird d E-Mail-Adräss us Dyyne [[Special:Preferences|Yystellige]] yy
'noemailtext' => 'Dää Benutzer het kei bstätigti E-Mail-Adräss aagee oder wet kei E-Mail vo andere Benutzer.',
'nowikiemailtitle' => 'Kei E-Mail Versand mögli',
'nowikiemailtext' => 'De Benutzer möcht kei E-Mails vo andri Benutzer erhalte',
+'emailnotarget' => 'Benutzername fir dr Empfang vun ere E-Mail git s nit oder isch nit giltig.',
+'emailtarget' => 'Dr Benutzername vum Empfänger yygee',
+'emailusername' => 'Benutzername:',
+'emailusernamesubmit' => 'Ibertrage',
'email-legend' => 'E-Mail an e andere {{SITENAME}}-Benutzer schicke',
'emailfrom' => 'Vu:',
'emailto' => 'An:',
@@ -1930,12 +1991,12 @@ As Absender wird d E-Mail-Adräss us Dyyne [[Special:Preferences|Yystellige]] yy
'watchlistanontext' => 'Du muesch Di $1 go Dyyni Beobachtungslischt z säh oder go Yytreg uf ere bearbeite.',
'watchnologin' => 'Du bisch nit aagmäldet',
'watchnologintext' => 'Du muesch [[Special:UserLogin|aagmäldet]] syy, zum Dyyni Beobachtigssyte z bearbeite.',
-'addedwatch' => 'zue de Beobachtigslischte derzue tue',
+'addwatch' => 'zue de Beobachtigslischte derzue tue',
'addedwatchtext' => "D Syte \"[[:\$1]]\" stoht jetz uf Dyyre [[Special:Watchlist|Beobachtigslischt]].
Neji Änderige an dr Syte oder dr Diskussionssyte drvo chasch jetz dert säh. Usserdem sin die Änderige uf dr [[Special:RecentChanges|letschte Änderige]] '''fett''' gschribe, ass De si schnäller findsch.
Wänn Du d Syte speter wider vu dr Lischt witt stryyche, deno druck eifach uf „{{int:Unwatch}}“.",
-'removedwatch' => 'Us der Beobachtigsliste usegnuu',
+'removewatch' => 'Us der Beobachtigsliste usegnuu',
'removedwatchtext' => 'D Syte «[[:$1]]» isch us dyre [[Special:Watchlist|Beobachtigsliste]] glösche worde.',
'watch' => 'Beobachte',
'watchthispage' => 'Die Syte beobachte',
@@ -1956,8 +2017,9 @@ Wänn Du d Syte speter wider vu dr Lischt witt stryyche, deno druck eifach uf â€
'watchlist-options' => 'Aazeigoptione',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Am beobachte …',
-'unwatching' => 'Nümm am beobachten …',
+'watching' => 'Am beobachte …',
+'unwatching' => 'Nümm am beobachten …',
+'watcherrortext' => 'Bim Ändere vu dr Beobachtigslischtenyystellige fir „$1“ het s e Fähler gee.',
'enotif_mailer' => '{{SITENAME}} E-Mail-Benochrichtigungsdienscht',
'enotif_reset' => 'Alli Syte as aagluegt markiere',
@@ -1981,19 +2043,20 @@ Kontakt zum Autor:
Mail $PAGEEDITOR_EMAIL
Wiki $PAGEEDITOR_WIKI
+
Es wird kei wyteri Nochricht iber Änderige gschickt, bis Du uf sälli Syte gohsch.
Uf Dyyre Beobachtigssyte chasch d Beobachtigsmarker fir alli Syte zrucksetze, wu Du beobachte tuesch.
Dyy fryndli {{SITENAME}}-Nochrichtesyschtem
---
-Go d Yystellige vu Dyyre Beobachtigslischte ändere, gang uf {{fullurl:Special:Watchlist/edit}}
+Go d Yystellige vu dr E-Mail-Benochrichtigung aapasse, gang uf {{canonicalurl:{{#special:Preferences}}}}
-Go d Syte us Dyyre Beobachtigslischte uuseneh, gang uf
-$UNWATCHURL
+Go d Yystellige vu Dyyre Beobachtigslischte ändere, gang uf {{canonicalurl:{{#special:EditWatchlist}}}}
-Ruckmäldig un wyteri Hilf:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+Go d Syte us Dyyre Beobachtigslischte uuseneh, gang uf $UNWATCHURL
+
+Ruckmäldig un wyteri Hilf: {{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Syte lösche',
@@ -2009,7 +2072,7 @@ Ruckmäldig un wyteri Hilf:
Bitte bi Dir iber d Konsequänze bewusst, un bi sicher, dass Du Di an unsri [[{{MediaWiki:Policy-url}}|Leitlinie]] haltsch.',
'actioncomplete' => 'Uftrag usgfiert.',
'actionfailed' => 'Aktion fählgschlaa',
-'deletedtext' => '«<nowiki>$1</nowiki>» isch glescht wore.
+'deletedtext' => '«$1» isch glescht wore.
Im $2 het s e Lischt vu dr letschte Leschige.',
'deletedarticle' => 'het „[[$1]]“ glescht',
'suppressedarticle' => 'het d Sichtbarkeit vu „[[$1]]“ gänderet',
@@ -2064,7 +2127,7 @@ Lueg d [[Special:ProtectedPages|Lischt vu dr gschitzte Syte]] fir alli zurzyt gs
'protect_expiry_invalid' => 'Di gwählti Duur isch nid gültig.',
'protect_expiry_old' => 'Di gwählti Duur isch scho vergange.',
'protect-unchain-permissions' => 'Wyteri Schutzoptione frej schalte',
-'protect-text' => "Hie chasch der Schutzstatus vor Syte '''<nowiki>$1</nowiki>''' azeigen und ändere.",
+'protect-text' => "Hie chasch der Schutzstatus vor Syte '''$1''' azeigen und ändere.",
'protect-locked-blocked' => "Du chasch dr Syteschutz nit ändere, wel Dyy Benutzerkonto gsperrt isch. Do sin di aktuälle Syteschutz-Yystellige fir d Syte '''„$1“:'''",
'protect-locked-dblock' => "D Datebank isch gsperrt, dr Syteschutz cha wäge däm nit gänderet wäre. Doo sin di aktuälle Syteschutz-Yystellige fir d Syte '''„$1“:'''",
'protect-locked-access' => "Dys Konto het nid di nötige Rächt, für der Schutzstatus z ändere.
@@ -2116,9 +2179,8 @@ Der Schutzstatus vo dere Syte lat sech la ändere, aber das het kei Yfluss uf d
'viewdeletedpage' => 'Gleschti Syte aazeige',
'undeletepagetext' => 'Die {{PLURAL:$1|Syte isch glescht wore un cha|$1 Syte sin glescht wore un chenne}} vu Ammanne widerhärgstellt wäre:',
'undelete-fieldset-title' => 'Widerhärstelle',
-'undeleteextrahelp' => '* Go d Syte ganz mit allene Versione widerhärzstelle, wehl kei Version us, gib e Begrindig aa un druck uf „Widerhärstelle“.
-* Mechtsch nume bstimmti Versione widerhärstelle, no wehl die bitte einzeln no dr Markierige us, gib e Begrindig aa un druck derno uf „Widerhärstelle“..
-* „Abbräche“ läärt s Kommentarfäld un nimmt alli Markierige bi dr Versione use.',
+'undeleteextrahelp' => '* Go d Syte ganz mit allene Versione widerhärzstelle, wehl kei Version us, gib e Begrindig aa un druck uf „{{int:undeletebtn}}“.
+* Mechtsch nume bstimmti Versione widerhärstelle, no wehl die bitte einzeln no dr Markierige us, gib e Begrindig aa un druck derno uf „{{int:undeletebtn}}“..',
'undeleterevisions' => '{{PLURAL:$1|1 Version|$1 Versione}} archiviert',
'undeletehistory' => 'Wänn Du die Syte widerhärstellsch, wäre au alli alte Versione widerhärgstellt.
Wänn syt dr Leschig e neiji Syte mit em glyche Name aagleit woren isch, no wäre di widerhärgstellte Versione chronologisch in d Versionsgschicht yygordnet.',
@@ -2159,9 +2221,12 @@ $1',
'undelete-show-file-submit' => 'Jo',
# Namespace form on various pages
-'namespace' => 'Namensruum:',
-'invert' => 'Uswahl umkehre',
-'blanknamespace' => '(Haupt-)',
+'namespace' => 'Namensruum:',
+'invert' => 'Uswahl umkehre',
+'tooltip-invert' => 'Des Chäschtli aaklicke go Änderige im gwehlte Namensruum un, wänn uusgwehlt, im zuegherige Namensruum uusblände',
+'namespace_association' => 'Zuegordnete Namensruum',
+'tooltip-namespace_association' => 'Des Chäschtli aaklicke go dr Diskussionsnamensruum oder dr Namesnruum zuesätzlig mityybezie, wu zue Dyre Uuswahl derzue ghert.',
+'blanknamespace' => '(Haupt-)',
# Contributions
'contributions' => 'Benutzer-Byträg',
@@ -2210,12 +2275,14 @@ Do chunnt dr aktuäll Yytrag us em Benutzersperr-Logbuech:',
'whatlinkshere-filters' => 'Filter',
# Block/unblock
+'autoblockid' => 'Automatischi Sperrig #$1',
+'block' => 'Benutzer sperre',
+'unblock' => 'Benutzer frejgee',
'blockip' => 'Benutzer bzw. IP blockyre',
'blockip-title' => 'Benutzer sperre',
'blockip-legend' => 'IP-Adräss/Benutzer sperre',
'blockiptext' => 'Nimm des Formular go ne Benutzer oder e IP-Adräss sperre.
Des sott numme erfolge go Vandalismus verhindere un in Ibereinstimmig mit in dr [[{{MediaWiki:Policy-url}}|Leitlinie]]. Bitte gib au ne Grund fi d Sperri aa (z. B. indäm du einzel ni Syte zitiersch, wu vandaliert wore sin).',
-'ipaddress' => 'IP-Adräss oder Benutzername:',
'ipadressorusername' => 'IP-Adräss oder Benutzername:',
'ipbexpiry' => 'Sperrduur:',
'ipbreason' => 'Grund:',
@@ -2230,7 +2297,7 @@ Des sott numme erfolge go Vandalismus verhindere un in Ibereinstimmig mit in dr
** Neijaamäldig vun eme uubschränkt gsperrte Benutzer
* IP-spezifischi Sperrgrind
** Proxy, wäge Vandalismus vu einzelne Benutzer lengerfrischtig gsperrt',
-'ipbanononly' => 'Nume anonymi Benutzer sperre',
+'ipb-hardblock' => 'Aagmäldeti Benutzer dra hindere, Bearbeitige unter däre IP-Adräss vorzneh',
'ipbcreateaccount' => 'Aalege vu Benutzerchonte verhindere',
'ipbemailban' => 'E-Mail-Versand sperre',
'ipbenableautoblock' => 'Sperr di aktuäll vu däm Benutzer brucht IP-Adräss un automatisch alli wytere, wun er nimmt go Syte bearbeite oder Benutzerchonte aalege',
@@ -2241,12 +2308,15 @@ Des sott numme erfolge go Vandalismus verhindere un in Ibereinstimmig mit in dr
'ipbotherreason' => 'Anderi/zuesätzligi Begrindig:',
'ipbhidename' => 'Benutzername in dr Lischt vu aktive Sperrine un im Benutzerverzeichnis verstecke.',
'ipbwatchuser' => 'Benutzer(diskussions)syte beobachte',
-'ipballowusertalk' => 'Benutzer derf di eige Diskussionssyte bearbeite derwylscht er gsperrt isch',
+'ipb-disableusertalk' => 'Dää Benutzer dra hindere syy eigeni Diskussionssyte z bearbeite, solang er gsperrt isch',
'ipb-change-block' => 'Nomol sperre mit däne Sperrparameter',
+'ipb-confirm' => 'Sperrig bstetige',
'badipaddress' => 'D IP-Adräss het e falsch Format.',
'blockipsuccesssub' => 'Mit Erfolg gsperrt',
'blockipsuccesstext' => 'Dr Benutzer/d IP-Adräss [[Special:Contributions/$1|$1]] isch gsperrt wore.<br />
Go d Sperri ufhebe lueg d [[Special:IPBlockList|Lisch vu allene aktive Sperrine]].',
+'ipb-blockingself' => 'Du bist grad am Sperre vu Dir sälber! Wettsch des wirkli mache?',
+'ipb-confirmhideuser' => 'Du bist grad am Sperre vun eme Benutzer im Modus „Benutzer verstecke“. Des fiert derzue, ass dr Benutzername in allne Lischten un Logbiecher unterdruckt wird. Wettsch des wirkli mache?',
'ipb-edit-dropdown' => 'Sperrgrind bearbeite',
'ipb-unblock-addr' => '„$1“ frejgee',
'ipb-unblock' => 'IP-Adräss/Benutzer frejgee',
@@ -2256,17 +2326,23 @@ Go d Sperri ufhebe lueg d [[Special:IPBlockList|Lisch vu allene aktive Sperrine]
'unblockiptext' => 'Mit däm Formular chasch e IP-Adräss oder e Benutzer frejgee.',
'ipusubmit' => 'Die Sperri useneh',
'unblocked' => '[[User:$1|$1]] isch frejgee wore',
+'unblocked-range' => 'D Sperri fir $1 isch ufghobe',
'unblocked-id' => 'Sperr-ID $1 isch freijgee wore',
+'blocklist' => 'Gsperrti Benutzer',
'ipblocklist' => 'Gsperrti Benutzer',
'ipblocklist-legend' => 'Suech no eme gsperrte Benutzer',
-'ipblocklist-username' => 'Benutzername oder IP-Adräss:',
-'ipblocklist-sh-userblocks' => 'Benutzersperrine $1',
-'ipblocklist-sh-tempblocks' => 'Befrischteti Sperrine $1',
-'ipblocklist-sh-addressblocks' => 'IP-Sperrine $1',
+'blocklist-userblocks' => 'Benutzersperrine uusblände',
+'blocklist-tempblocks' => 'Befrischteti Sperrine uusblände',
+'blocklist-addressblocks' => 'IP-Sperrine uusblände',
+'blocklist-timestamp' => 'Zytstämpfel',
+'blocklist-target' => 'Ziil',
+'blocklist-expiry' => 'Gsperrt bis',
+'blocklist-by' => 'Gsperrt vu',
+'blocklist-params' => 'Sperrparameter',
+'blocklist-reason' => 'Grund',
'ipblocklist-submit' => 'Sueche',
'ipblocklist-localblock' => 'Lokali Sperri',
'ipblocklist-otherblocks' => 'Anderi {{PLURAL:$1|Sperri|Sperrine}}',
-'blocklistline' => '$1, $2 het $3 ($4) gsperrt',
'infiniteblock' => 'uubegränzt',
'expiringblock' => 'hert uf am $1 am $2',
'anononlyblock' => 'nume Anonymi',
@@ -2286,7 +2362,7 @@ Go d Sperri ufhebe lueg d [[Special:IPBlockList|Lisch vu allene aktive Sperrine]
'blocklog-showsuppresslog' => 'Dää Benutzer isch schon emol gsperrt wore un syyni Bearbeitige sin uusblädet wore. S Uusbländigs-Logbuech git s do as Referänz:',
'blocklogentry' => 'sperrt [[$1]] für d Ziit vo: $2 $3',
'reblock-logentry' => 'het d Sperri fir „[[$1]]“ gänderet fir dr Zytruum: $2 $3',
-'blocklogtext' => 'Des isch s Logbuech iber Sperrige un Entsperrige vu Benutzer. Automatisch blockierti IP-Adrässe wäre nit erfasst. Lueg au [[Special:IPBlockList|IP-Block Lischt]] fir e Lischt vu gsperrte Benutzer.',
+'blocklogtext' => 'Des isch s Logbuech iber Sperrige un Entsperrige vu Benutzer. Automatisch blockierti IP-Adrässe wäre nit erfasst. Lueg au [[Special:BlockList|IP-Block Lischt]] fir e Lischt vu gsperrte Benutzer.',
'unblocklogentry' => 'het d Sperri vu „$1“ ufghobe',
'block-log-flags-anononly' => 'nume Anonymi',
'block-log-flags-nocreate' => 'Aalege vu Benutzerchonte gsperrt',
@@ -2300,9 +2376,9 @@ Go d Sperri ufhebe lueg d [[Special:IPBlockList|Lisch vu allene aktive Sperrine]
'ipb_expiry_temp' => 'Versteckti Benutzername-Sperrine solle permanent syy.',
'ipb_hide_invalid' => 'S isch nit megli des Benutzerkonto z unterdrucke; villicht het s viili Bearbeitige.',
'ipb_already_blocked' => '„$1“ isch scho gsperrt wore.',
-'ipb-needreblock' => '== Sperri vorhande ==
-{{GENDER:|De|D|}} „$1“ isch scho gsperrt. Mechtsch d Sperrparameter ändere?',
+'ipb-needreblock' => '{{GENDER:|De|D|}} „$1“ isch scho gsperrt. Mechtsch d Sperrparameter ändere?',
'ipb-otherblocks-header' => 'Anderi {{PLURAL:$1|Sperri|Sperrine}}',
+'unblock-hideuser' => 'Du chasch dää Benutzer nit entsperre, wel syy Benutzername versteckt woren isch.',
'ipb_cant_unblock' => 'Fähler: Sperr-ID $1 nit gfunde. S cha syy, ass d Sperri scho ufghoben isch .',
'ipb_blocked_as_range' => 'Fähler: D IP-Adräss $1 isch as Teil vu dr Beryychssperri $2 indirekt gsperrt. S isch nit megli, nume $1 z entsperre.',
'ip_range_invalid' => 'Uugiltige IP-Adrässberyych.',
@@ -2335,6 +2411,7 @@ Go d Sperri ufhebe lueg d [[Special:IPBlockList|Lisch vu allene aktive Sperrine]
'unlockdbsuccesstext' => 'D {{SITENAME}}-Datebank isch freigää worde.',
'lockfilenotwritable' => 'Die Datebank-Sperrdatei cha nüt beschrybe werde. Zume die Datebank chönne Sperre oder Freigää, muess si vum Webserver chönne bschrybe werde.',
'databasenotlocked' => 'D Datebank isch nüt gsperrt.',
+'lockedbyandtime' => '(vu $1 am $2 am $3 Uhr)',
# Move page
'move-page' => '„$1“ verschiebe',
@@ -2442,7 +2519,7 @@ Zum Exportiere trag dr Sytetitel in dr Täxtchaschte unter yy, ei Titel pro Zyyl
'allmessagesdefault' => 'Standard-Tekscht',
'allmessagescurrent' => 'jetzige Tekscht',
'allmessagestext' => 'Des isch e Lischt vu allene meglige Syschtemnochrichte us em MediaWiki Namensruum.
-Lueg au uf [http://www.mediawiki.org/wiki/Localisation MediaWiki Lokalisierig] un [http://translatewiki.net translatewiki.net], wänn Du zue dr MediaWiki-Lokalisierig wit byytrage.',
+Lueg au uf [//www.mediawiki.org/wiki/Localisation MediaWiki Lokalisierig] un [//translatewiki.net translatewiki.net], wänn Du zue dr MediaWiki-Lokalisierig wit byytrage.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' cha nit bruucht wärde will '''\$wgUseDatabaseMessages''' abgschalte isch.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter fir dr aapasst Zuestand:',
@@ -2580,9 +2657,7 @@ Die uf em lokale Rächner spychere un derno do uffelade.',
'tooltip-summary' => 'Gib e churzi Zämmefassig yy',
# Metadata
-'nodublincore' => 'Dublin-Core-RDF-Metadate sin fir dää Server deaktiviert.',
-'nocreativecommons' => 'Creative-Commons-RDF-Metadate sin fir dää Server deaktiviert.',
-'notacceptable' => 'Dr Wiki-Server cha d Date nit im e Format z Verfiegig stelle, wu Dyy Grät cha läse.',
+'notacceptable' => 'Dr Wiki-Server cha d Date nit im e Format z Verfiegig stelle, wu Dyy Grät cha läse.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonyme Benutzer|Anonymi Benutzer}} uff {{SITENAME}}',
@@ -2605,31 +2680,17 @@ Die uf em lokale Rächner spychere un derno do uffelade.',
'spam_blanking' => 'In allene Versione het s Gleicher zue $1 gha, sufer gmacht.',
# Info page
-'infosubtitle' => 'Syteinformation',
-'numedits' => 'Aazaal vo Ändrige aa dr Syte: $1',
-'numtalkedits' => 'Aazaal vo Ändrige aa de Diskussionssyte: $1',
-'numwatchers' => 'Die Syte wird vo $1 Lüt beobachtet',
-'numauthors' => 'Aazaal vo Autore: $1',
-'numtalkauthors' => 'Aazaal vo Diskussionsteilnäämer: $1',
-
-# Math options
-'mw_math_png' => 'Immer als PNG aazeige',
-'mw_math_simple' => 'Eifachs TeX als HTML aazeige, süsch als PNG',
-'mw_math_html' => 'Falls müglech als HTML aazeige, süsch als PNG',
-'mw_math_source' => 'Als TeX la sy (für Tekschtbrowser)',
-'mw_math_modern' => 'Empfolnigi Ystellig für modärni Browser',
-'mw_math_mathml' => 'MathML (experimentäll)',
-
-# Math errors
-'math_failure' => 'Parser-Fähler',
-'math_unknown_error' => 'Nit bekannte Fähler',
-'math_unknown_function' => 'Nit bekannti Funktion',
-'math_lexing_error' => "'Lexing'-Fähler",
-'math_syntax_error' => 'Syntaxfähler',
-'math_image_error' => 'D PNG-Konvertierig het nit funktioniert; prief di korrekt Installation vu LaTeX un dvipng (oder dvips + gs + convert)',
-'math_bad_tmpdir' => 'S temporär Verzeichnis fir mathematischi Formle cha nit aagleit oder bschribe wäre.',
-'math_bad_output' => 'S Ziilverzeichnis fir mathematischi Formle cha nit aagleit oder bschribe wäre.',
-'math_notexvc' => 'S texvc-Programm isch nit gfunde wore. Bitte acht gee uf math/README.',
+'pageinfo-title' => 'Informatione zue „$1“',
+'pageinfo-header-edits' => 'Bearbeitunge',
+'pageinfo-header-watchlist' => 'Beobachtigslischte',
+'pageinfo-header-views' => 'Ufruef',
+'pageinfo-subjectpage' => 'Syte',
+'pageinfo-talkpage' => 'Diskussionssyte',
+'pageinfo-watchers' => 'Aazahl vu Beobachter',
+'pageinfo-edits' => 'Aazahl Bearbeitige',
+'pageinfo-authors' => 'Aazahl vu unterschidlige Autore',
+'pageinfo-views' => 'Aazahl Sytenufruef',
+'pageinfo-viewsperedit' => 'Sytenufruef pro Bearbeitig',
# Patrolling
'markaspatrolleddiff' => 'Als patrulyrt markyre',
@@ -2666,21 +2727,24 @@ $1',
'nextdiff' => 'Nächschti Änderig →',
# Media information
-'mediawarning' => "'''Warnig:''' In däre Art Datei chennt s e beswillige Programmcode din ha. Wänn du die Datei uusfiersch, cha s syy, ass Dyy Syschtem bschädigt wird.",
-'imagemaxsize' => "Maximali Gressi vu Bilder :<br />'' (uf Bildbschrybigs-Syte)''",
-'thumbsize' => 'Bildvorschou-Gröössi:',
-'widthheightpage' => '$1×$2, {{PLURAL:$3|1 Syte|$3 Syte}}',
-'file-info' => 'Dateigressi: $1, MIME-Typ: $2',
-'file-info-size' => '$1 × $2 Pixel, Dateigrößi: $3, MIME-Typ: $4',
-'file-nohires' => '<small>Kei höcheri Uflösig verfüegbar.</small>',
-'svg-long-desc' => 'SVG-Datei, Basisgrößi: $1 × $2 Pixel, Dateigrößi: $3',
-'show-big-image' => 'Originalgrößi',
-'show-big-image-thumb' => '<small>Greßi vu däre Vorschau: $1 × $2 Pixel</small>',
-'file-info-gif-looped' => 'Ändlosschlupf',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|Ramme|Ramme}}',
-'file-info-png-looped' => 'Ändlosschlupf',
-'file-info-png-repeat' => 'het $1 {{PLURAL:$1|Mol|Mol}} gspilt',
-'file-info-png-frames' => '$1 {{PLURAL:$1|Ramme|Ramme}}',
+'mediawarning' => "'''Warnig:''' In däre Art Datei chennt s e beswillige Programmcode din ha. Wänn du die Datei uusfiersch, cha s syy, ass Dyy Syschtem bschädigt wird.",
+'imagemaxsize' => "Maximali Gressi vu Bilder :<br />'' (uf Bildbschrybigs-Syte)''",
+'thumbsize' => 'Bildvorschou-Gröössi:',
+'widthheightpage' => '$1×$2, {{PLURAL:$3|1 Syte|$3 Syte}}',
+'file-info' => 'Dateigressi: $1, MIME-Typ: $2',
+'file-info-size' => '$1 × $2 Pixel, Dateigrößi: $3, MIME-Typ: $4',
+'file-info-size-pages' => '$1 × $2 Pixel, Dateigreßi: $3, MIME-Typ: $4, $5 {{PLURAL:$5|Syte| Syte}}',
+'file-nohires' => '<small>Kei höcheri Uflösig verfüegbar.</small>',
+'svg-long-desc' => 'SVG-Datei, Basisgrößi: $1 × $2 Pixel, Dateigrößi: $3',
+'show-big-image' => 'Originalgrößi',
+'show-big-image-preview' => '<small>Greßi vu däre Vorschau: $1.</small>',
+'show-big-image-other' => '<small>Wyteri Uflesige: $1.</small>',
+'show-big-image-size' => '$1 × $2 Pixel',
+'file-info-gif-looped' => 'Ändlosschlupf',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|Ramme|Ramme}}',
+'file-info-png-looped' => 'Ändlosschlupf',
+'file-info-png-repeat' => 'het $1 {{PLURAL:$1|Mol|Mol}} gspilt',
+'file-info-png-frames' => '$1 {{PLURAL:$1|Ramme|Ramme}}',
# Special:NewFiles
'newimages' => 'Gallery vo noie Bilder',
@@ -2707,15 +2771,22 @@ Wyteri Links uf der glyche Zyle wärden als Usnahme behandlet, wo die Datei trot
We die Datei isch veränderet worde, de cha's sy, das die zuesätzlechi Information für di verändereti Datei nümm richtig zuetrifft.",
'metadata-expand' => 'Erwytereti Details azeige',
'metadata-collapse' => 'Erwytereti Details verstecke',
-'metadata-fields' => 'Die EXIF-Metadate wärden ir Bildbeschrybig ou denn azeigt, we d Metadate-Tabälle versteckt isch.
-Anderi Metadate sy standardmäßig versteckt.
+'metadata-fields' => 'Die Fälder vu dr EXIF-Metadate, wu in däm MediaWiki-Systemtext aagee sin, wäre uf Bildbschrybigssyte mit ere yyklappte Metadatetabälle aazeigt.
+Andri wäre standardmäßig nit aazeigt.
+
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Breiti',
@@ -2730,13 +2801,11 @@ Anderi Metadate sy standardmäßig versteckt.
'exif-ycbcrpositioning' => 'Y un C Positionierig',
'exif-xresolution' => 'Horizontali Uflesig',
'exif-yresolution' => 'Vertikali Uflesig',
-'exif-resolutionunit' => 'Masseinheit vu dr Uflesig',
'exif-stripoffsets' => 'Bilddate-Versatz',
'exif-rowsperstrip' => 'Aazahl vu dr Zyylete pro Streife',
'exif-stripbytecounts' => 'Bytes pro komprimiertem Streife',
'exif-jpeginterchangeformat' => 'Offset zue JPEG SOI',
'exif-jpeginterchangeformatlength' => 'JPEG-Date in Bytes',
-'exif-transferfunction' => 'Ibertragigsfunktion',
'exif-whitepoint' => 'Manuäll mit Mässig',
'exif-primarychromaticities' => 'Primäri Farbart',
'exif-ycbcrcoefficients' => 'YCbCr-Koeffiziente',
@@ -2755,7 +2824,6 @@ Anderi Metadate sy standardmäßig versteckt.
'exif-compressedbitsperpixel' => 'Komprimierti Bit pro Pixel',
'exif-pixelydimension' => 'Bildbreiti',
'exif-pixelxdimension' => 'Bildhechi',
-'exif-makernote' => 'Herstellernotiz',
'exif-usercomment' => 'Benutzerkommentar',
'exif-relatedsoundfile' => 'Zuegherigi Tondatei',
'exif-datetimeoriginal' => 'Erfassigszytpunkt',
@@ -2769,7 +2837,6 @@ Anderi Metadate sy standardmäßig versteckt.
'exif-exposureprogram' => 'Beliechtigsprogramm',
'exif-spectralsensitivity' => 'Spektrali Empfindligkeit',
'exif-isospeedratings' => 'Filmempfindlichkeit (ISO)',
-'exif-oecf' => 'Optoelektronische Umrächnigsfaktor',
'exif-shutterspeedvalue' => 'APEX-Beliechtigszytwärt',
'exif-aperturevalue' => 'APEX-Bländewärt',
'exif-brightnessvalue' => 'APEX-Hälligkeitswärt',
@@ -2782,7 +2849,6 @@ Anderi Metadate sy standardmäßig versteckt.
'exif-focallength' => 'Brännwyti',
'exif-subjectarea' => 'Beryych',
'exif-flashenergy' => 'Blitzstärchi',
-'exif-spatialfrequencyresponse' => 'Spatial-Frequenz',
'exif-focalplanexresolution' => 'Sensor-Uflesig horizontal',
'exif-focalplaneyresolution' => 'Sensor-Uflesig vertikal',
'exif-focalplaneresolutionunit' => 'Einheit vu dr Sensor-Uflesig',
@@ -2791,7 +2857,6 @@ Anderi Metadate sy standardmäßig versteckt.
'exif-sensingmethod' => 'Mässmethod',
'exif-filesource' => 'Quäll vu dr Datei',
'exif-scenetype' => 'Szenetyp',
-'exif-cfapattern' => 'CFA-Muschter',
'exif-customrendered' => 'Benutzerdefinierti Bildverarbeitig',
'exif-exposuremode' => 'Beliechtigsmodus',
'exif-whitebalance' => 'Wyssabglyych',
@@ -2836,10 +2901,79 @@ Anderi Metadate sy standardmäßig versteckt.
'exif-gpsareainformation' => 'Name vum GPS-Biet',
'exif-gpsdatestamp' => 'GPS-Datum',
'exif-gpsdifferential' => 'GPS-Differentialkorrektur',
+'exif-jpegfilecomment' => 'JPEG-Dateikommentar',
+'exif-keywords' => 'Schlisselwerter',
+'exif-worldregioncreated' => 'Wältregion, wu s Foto ufgnuu woren isch',
+'exif-countrycreated' => 'Staat, wu s Foto ufgnuu woren isch',
+'exif-countrycodecreated' => 'Code fir dr Staat, wu s Foto ufgnuu woren isch',
+'exif-provinceorstatecreated' => 'Provinz oder Gliedstaat, wu s Foto ufgnuu woren isch',
+'exif-citycreated' => 'Stadt, wu s Foto ufgnuu woren isch',
+'exif-sublocationcreated' => 'Stadtteil, wu s Foto ufgnuu woren isch',
+'exif-worldregiondest' => 'Zeigti Wältregione',
+'exif-countrydest' => 'Zeigte Staat',
+'exif-countrycodedest' => 'Code fir dr zeigt Staat',
+'exif-provinceorstatedest' => 'Zeigti Provinz oder zeigte Gliedstaat',
+'exif-citydest' => 'Zeigti Stadt',
+'exif-sublocationdest' => 'Zeigte Stadtteil',
'exif-objectname' => 'Churztitel',
+'exif-specialinstructions' => 'Bsunderi Aawysige',
+'exif-headline' => 'Iberschrift',
+'exif-credit' => 'Namesnännig/ Vereffetliger',
+'exif-source' => 'Quälle',
+'exif-editstatus' => 'Redaktionälle Status vum Foto',
+'exif-urgency' => 'Dringligkeit',
+'exif-fixtureidentifier' => 'Kolumne',
+'exif-locationdest' => 'Dargstellte Standort',
+'exif-locationdestcode' => 'Code fir dr dargstellte Standort',
+'exif-objectcycle' => 'Tageszyt, wu des Medium drfir bstimmt isch',
+'exif-contact' => 'Kontaktinformatione',
+'exif-writer' => 'Schryber',
+'exif-languagecode' => 'Sproch',
+'exif-iimversion' => 'IIM-Version',
+'exif-iimcategory' => 'Kategorii',
+'exif-iimsupplementalcategory' => 'Zuesätzligi Kategorie',
+'exif-datetimeexpires' => 'Nit bruche no',
+'exif-datetimereleased' => 'Vereffetligt am',
+'exif-originaltransmissionref' => 'Code vum Standort wu s Foto uus ibermittlet woren isch',
+'exif-identifier' => 'Chännig',
+'exif-lens' => 'Brucht Objektiv',
+'exif-serialnumber' => 'Serienummere vu dr Kamera',
+'exif-cameraownername' => 'Kamerabsitzer',
+'exif-label' => 'Bezeichnig',
+'exif-datetimemetadata' => 'Datum, wu d Metadate s letscht Mol gänderet wore sin',
+'exif-nickname' => 'Gängige Name vum Foto',
+'exif-rating' => 'Bewärting (us 5)',
+'exif-rightscertificate' => 'Rächtverwaltigszertifikat',
+'exif-copyrighted' => 'Urheberrächtsstatus',
+'exif-copyrightowner' => 'Urheberrächtsinhaber',
+'exif-usageterms' => 'Nutzigsbedingige',
+'exif-webstatement' => 'Online-Urheberrächtsaagab',
+'exif-originaldocumentid' => 'Eidytigi Chännig vum Orginaldokumänt',
+'exif-licenseurl' => 'URL vu dr Urheberrächtsaagab (Lizänz)',
+'exif-morepermissionsurl' => 'Alternativi Lizänzinformatione',
+'exif-attributionurl' => 'Bi Wyterverwändig vu däm Wärch bitte verlinke uf:',
+'exif-preferredattributionname' => 'Bi Wyterverwändig vu däm Wärch, bitte nänne:',
+'exif-pngfilecomment' => 'PNG-Dateikommentar',
+'exif-disclaimer' => 'Haftigsuusschluss',
+'exif-contentwarning' => 'Inhaltswarnig',
+'exif-giffilecomment' => 'GIF-Dateikommentar',
+'exif-intellectualgenre' => 'Art vum Medium',
+'exif-subjectnewscode' => 'Themecode',
+'exif-scenecode' => 'IPTC-Aasichtcode',
+'exif-event' => 'Dargstellt Ereignis',
+'exif-organisationinimage' => 'Dargstellti Organisation',
+'exif-personinimage' => 'Dargstellti Person',
+'exif-originalimageheight' => 'Bildhechi vor em Zueschnyde',
+'exif-originalimagewidth' => 'Bildbreiti vor em Zueschnyde',
# EXIF attributes
'exif-compression-1' => 'Uukomprimiert',
+'exif-compression-2' => 'CCITT Gruppe 3 1-dimensionali modifizierti Huffman-Lauflengekodierig',
+'exif-compression-3' => 'CCITT Gruppe 3 Faxkodierig',
+'exif-compression-4' => 'CCITT Gruppe 4 Faxkodierig',
+
+'exif-copyrighted-true' => 'Gschitzt',
+'exif-copyrighted-false' => 'Public Domain',
'exif-unknowndate' => 'Nit bekannt Datum',
@@ -2855,6 +2989,8 @@ Anderi Metadate sy standardmäßig versteckt.
'exif-planarconfiguration-1' => 'Grobformat',
'exif-planarconfiguration-2' => 'Planarformat',
+'exif-colorspace-65535' => 'Nit kalibriert',
+
'exif-componentsconfiguration-0' => 'Git s nit',
'exif-exposureprogram-0' => 'Nit bekannt',
@@ -2968,6 +3104,10 @@ Anderi Metadate sy standardmäßig versteckt.
'exif-gpslongitude-e' => 'eschtl. Längi',
'exif-gpslongitude-w' => 'weschtl. Längi',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{plural:$1|Meter|Meter}} iber em Meeresspiegel',
+'exif-gpsaltitude-below-sealevel' => '$1 {{plural:$1|Meter|Meter}} unter em Meeresspiegel',
+
'exif-gpsstatus-a' => 'Mässig lauft',
'exif-gpsstatus-v' => 'Interoperabilität vu Mässige',
@@ -2979,21 +3119,73 @@ Anderi Metadate sy standardmäßig versteckt.
'exif-gpsspeed-m' => 'mph',
'exif-gpsspeed-n' => 'Chnote',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometer',
+'exif-gpsdestdistance-m' => 'Myle',
+'exif-gpsdestdistance-n' => 'Seemyle',
+
+'exif-gpsdop-excellent' => 'Uuszeichnet ($1)',
+'exif-gpsdop-good' => 'Guet ($1)',
+'exif-gpsdop-moderate' => 'Mittel ($1)',
+'exif-gpsdop-fair' => 'Akzeptabel ($1)',
+'exif-gpsdop-poor' => 'Schwach ($1)',
+
+'exif-objectcycle-a' => 'Nume demorge',
+'exif-objectcycle-p' => 'Nume zobe',
+'exif-objectcycle-b' => 'Demorge un zobe',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Tatsächligi Richtig',
'exif-gpsdirection-m' => 'Magnetischi Richtig',
+'exif-ycbcrpositioning-1' => 'Zäntriert',
+'exif-ycbcrpositioning-2' => 'Benochbert',
+
+'exif-dc-contributor' => 'Mitmacher',
+'exif-dc-coverage' => 'Ertlige oder zytlige Ramme vum Medium',
+'exif-dc-date' => 'Datumsaagabe',
+'exif-dc-publisher' => 'Vereffentlige',
+'exif-dc-relation' => 'Ähnligi Medie',
+'exif-dc-rights' => 'Rächt',
+'exif-dc-source' => 'Mediehärchumft',
+'exif-dc-type' => 'Medietyp',
+
+'exif-rating-rejected' => 'Abglähnt',
+
+'exif-isospeedratings-overflow' => 'Greßer wie 65535',
+
+'exif-iimcategory-ace' => 'Chunscht, Kultur un Unterhaltig',
+'exif-iimcategory-clj' => 'Kriminalitet un Rächt',
+'exif-iimcategory-dis' => 'Katastrofen un Uafäll',
+'exif-iimcategory-fin' => 'Wirtschaft un Gschäft',
+'exif-iimcategory-edu' => 'Bildig',
+'exif-iimcategory-evn' => 'Umwält',
+'exif-iimcategory-hth' => 'Gsundheit',
+'exif-iimcategory-hum' => 'Inträssebiet',
+'exif-iimcategory-lab' => 'Arbet',
+'exif-iimcategory-lif' => 'Lifestyle un Frejzyt',
+'exif-iimcategory-pol' => 'Politik',
+'exif-iimcategory-rel' => 'Religion un Glaube',
+'exif-iimcategory-sci' => 'Wisseschaft un Tächnologi',
+'exif-iimcategory-soi' => 'Soziali Theme',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Chrieg, Konflikt un Uurueje',
+'exif-iimcategory-wea' => 'Wätter',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Nider ($1)',
+'exif-urgency-high' => 'Hoch ($1)',
+'exif-urgency-other' => 'Benutzerdefinierti Prioritet ($1)',
+
# External editor support
'edit-externally' => 'Die Datei mit emnen externe Programm bearbeite',
-'edit-externally-help' => '(Lueg d [http://www.mediawiki.org/wiki/Manual:External_editors Installationsaawisige] fir witeri Informatione)',
+'edit-externally-help' => '(Lueg d [//www.mediawiki.org/wiki/Manual:External_editors Installationsaawisige] fir witeri Informatione)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'alli',
-'imagelistall' => 'alli',
-'watchlistall2' => 'alli',
-'namespacesall' => 'alli',
-'monthsall' => 'alli',
-'limitall' => 'alli',
+'watchlistall2' => 'alli',
+'namespacesall' => 'alli',
+'monthsall' => 'alli',
+'limitall' => 'alli',
# E-mail address confirmation
'confirmemail' => 'Bstätigung vo Ihre E-Poscht-Adräss',
@@ -3072,18 +3264,25 @@ $1',
'trackbackdeleteok' => 'Trackback isch mit Erfolg glescht wore.',
# Delete conflict
-'deletedwhileediting' => "'''Obacht''': Die Syte isch glescht wore, nochdäm Du aagfange hesch si z bearbeite!",
-'confirmrecreate' => "Benutzer [[User:$1|$1]] ([[User talk:$1|Diskussion]]) het die Syte glescht, nochdäm Du aagfange hesch si z bearbeite.
+'deletedwhileediting' => "'''Obacht''': Die Syte isch glescht wore, nochdäm Du aagfange hesch si z bearbeite!",
+'confirmrecreate' => "Benutzer [[User:$1|$1]] ([[User talk:$1|Diskussion]]) het die Syte glescht, nochdäm Du aagfange hesch si z bearbeite.
D Begrindig isch gsi:
:''$2''
Bitte bstätig, ass Du die Syte wirkli wit nej aalege.",
-'recreate' => 'Nomol aalege',
+'confirmrecreate-noreason' => 'Benutzer [[User:$1|$1]] ([[User talk:$1|Diskussion]]) het die Syte glescht, nochdäm Du aagfange hesch si z bearbeite. Bitte bstätig, ass Du die Syte wirkli wit nej aalege.',
+'recreate' => 'Nomol aalege',
# action=purge
'confirm_purge_button' => 'In Ornig',
'confirm-purge-top' => 'D Zwischespycherig vu dr Syte lesche?',
'confirm-purge-bottom' => 'Läärt dr Cache vun ere Syte un macht, ass di nejscht Version aazeigt wird.',
+# action=watch/unwatch
+'confirm-watch-button' => 'In Ornig',
+'confirm-watch-top' => 'Tue die Syten uf dyni Beobachtigslischte.',
+'confirm-unwatch-button' => 'In Ornig',
+'confirm-unwatch-top' => 'Nim die Syte us dyre Beobachtungslischte furt.',
+
# Multipage image navigation
'imgmultipageprev' => '↠vorderi Syte',
'imgmultipagenext' => 'nächschti Syte →',
@@ -3123,14 +3322,14 @@ Bitte bstätig, ass Du die Syte wirkli wit nej aalege.",
'watchlistedit-noitems' => 'Du hesch kei Syte uf dynrer Beobachtigslischt.',
'watchlistedit-normal-title' => 'D Beobachtigslischt bearbeite',
'watchlistedit-normal-legend' => 'Yträg vo dynrer Beobachtigslischt entferne',
-'watchlistedit-normal-explain' => 'Doo unte sihsch d Yytreg uf Dyyre Beobachtigslischt. Zum e Yytrag uusenee muesch s Chäschtli dernäbe markiere un derno ganz unte uf „{{int:Watchlistedit-normal-submit}}“ drucke. Du chasch Dyyni Beobachtigslischt au als [[Special:Watchlist/raw|Lischte bearbeite]].',
+'watchlistedit-normal-explain' => 'Doo unte sihsch d Yytreg uf Dyyre Beobachtigslischt. Zum e Yytrag uusenee muesch s Chäschtli dernäbe markiere un derno ganz unte uf „{{int:Watchlistedit-normal-submit}}“ drucke. Du chasch Dyyni Beobachtigslischt au als [[Special:EditWatchlist/raw|Lischte bearbeite]].',
'watchlistedit-normal-submit' => 'Yträg usenää',
'watchlistedit-normal-done' => '{{PLURAL:$1|ei Ytrag isch|$1 Yträg sin}} vo dynrer Beobachtigslischt entfernt worde:',
'watchlistedit-raw-title' => 'D Beobachtigslischt als Lischte bearbeite',
'watchlistedit-raw-legend' => 'D Beobachtigslischt als Lischte bearbeite',
'watchlistedit-raw-explain' => 'Do unte sihsch d Yytreg uf Dyyre Beobachtigslischt im Lischteformat. Du chasch die Yytreg zyyledewyys uusenee oder zuefiege.
Pro Zyylede isch ei Yytrag erlaubt. Wänn fertig bisch, druck uf „{{int:Watchlistedit-raw-submit}}“.
-Du chasch au d [[Special:Watchlist/edit|Standard-Bearbeitigssyte]] bruuche.',
+Du chasch au d [[Special:EditWatchlist|Standard-Bearbeitigssyte]] bruuche.',
'watchlistedit-raw-titles' => 'Yträg:',
'watchlistedit-raw-submit' => 'D Beobachtigslischt aktualisiere',
'watchlistedit-raw-done' => 'Dyni Beobachtigslischt isch aktualisiert worde.',
@@ -3147,33 +3346,33 @@ Du chasch au d [[Special:Watchlist/edit|Standard-Bearbeitigssyte]] bruuche.',
'duplicate-defaultsort' => 'Obacht: Dr Sortierigsschlüssel „$2“ iberschrybt dr vorig brucht Schlüssel „$1“.',
# Special:Version
-'version' => 'Version',
-'version-extensions' => 'Installierti Erwyterige',
-'version-specialpages' => 'Spezialsyte',
-'version-parserhooks' => 'Parser-Schnittstelle',
-'version-variables' => 'Variable',
-'version-skins' => 'Benutzeroberflechine',
-'version-other' => 'Anders',
-'version-mediahandlers' => 'Medie-Handler',
-'version-hooks' => "Schnittstelle ''(Hook)''",
-'version-extension-functions' => 'Funktionsufruef',
-'version-parser-extensiontags' => "Parser-Erwyterige ''(tags)''",
-'version-parser-function-hooks' => 'Parser-Funktione',
-'version-skin-extension-functions' => 'Skin-Erwyterigs-Funktione',
-'version-hook-name' => 'Schnittstellename',
-'version-hook-subscribedby' => 'Ufruef vu',
-'version-version' => '(Version $1)',
-'version-license' => 'Lizänz',
-'version-poweredby-credits' => "Die Websyte nutzt '''[http://www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
-'version-poweredby-others' => 'anderi',
-'version-license-info' => 'MediaWiki isch e freji Software, d. h. s cha, no dr Bedingige vu dr GNU General Public-Lizänz, wu vu dr Free Software Foundation vereffentligt woren isch, wyterverteilt un/oder modifiziert wäre. Doderbyy cha d Version 2, oder no eigenem Ermässe, jedi nejeri Version vu dr Lizänz brucht wäre.
+'version' => 'Version',
+'version-extensions' => 'Installierti Erwyterige',
+'version-specialpages' => 'Spezialsyte',
+'version-parserhooks' => 'Parser-Schnittstelle',
+'version-variables' => 'Variable',
+'version-antispam' => 'Spamschutz',
+'version-skins' => 'Benutzeroberflechine',
+'version-other' => 'Anders',
+'version-mediahandlers' => 'Medie-Handler',
+'version-hooks' => "Schnittstelle ''(Hook)''",
+'version-extension-functions' => 'Funktionsufruef',
+'version-parser-extensiontags' => "Parser-Erwyterige ''(tags)''",
+'version-parser-function-hooks' => 'Parser-Funktione',
+'version-hook-name' => 'Schnittstellename',
+'version-hook-subscribedby' => 'Ufruef vu',
+'version-version' => '(Version $1)',
+'version-license' => 'Lizänz',
+'version-poweredby-credits' => "Die Websyte nutzt '''[//www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
+'version-poweredby-others' => 'anderi',
+'version-license-info' => 'MediaWiki isch e freji Software, d. h. s cha, no dr Bedingige vu dr GNU General Public-Lizänz, wu vu dr Free Software Foundation vereffentligt woren isch, wyterverteilt un/oder modifiziert wäre. Doderbyy cha d Version 2, oder no eigenem Ermässe, jedi nejeri Version vu dr Lizänz brucht wäre.
Des Programm wird in dr Hoffnig verteilt, ass es nitzli isch, aber OHNI JEDI GARANTI un sogar ohni di impliziert Garanti vun ere MÄRTGÄNGIGKEIT oder EIGNIG FIR E BSTIMMTE ZWÄCK. Doderzue git meh Hiiwys in dr GNU General Public-Lizänz.
-E [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopi vu dr GNU General Public-Lizänz] sott zämme mit däm Programm verteilt wore syy. Wänn des nit eso isch, cha ne Kopi bi dr Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, schriftli aagforderet oder [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html online gläse] wäre.',
-'version-software' => 'Installierti Software',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Version',
+E [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopi vu dr GNU General Public-Lizänz] sott zämme mit däm Programm verteilt wore syy. Wänn des nit eso isch, cha ne Kopi bi dr Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, schriftli aagforderet oder [//www.gnu.org/licenses/old-licenses/gpl-2.0.html online gläse] wäre.',
+'version-software' => 'Installierti Software',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath' => 'Dateipfad',
@@ -3183,22 +3382,22 @@ E [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopi vu dr GNU General Public-Lizänz] sott
Di aagfrogt Datei wird diräkt dargstellt bzw. mit dr verchnipfte Aawändig gstartet.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Datei-Duplikat sueche',
-'fileduplicatesearch-summary' => 'Suech no Datei-Duplikat uf dr Grundlag vu ihrem Hash-Wärt.
-
-D Yygab muess ohni dr Zuesatz „{{ns:file}}:“ erfolge.',
-'fileduplicatesearch-legend' => 'No Duplikat sueche',
-'fileduplicatesearch-filename' => 'Dateiname:',
-'fileduplicatesearch-submit' => 'Sueche',
-'fileduplicatesearch-info' => '$1 × $2 Pixel<br />Dateigressi: $3<br />MIME-Typ: $4',
-'fileduplicatesearch-result-1' => 'D Datei „$1“ het kei identischi Duplikat.',
-'fileduplicatesearch-result-n' => 'D Datei „$1“ het {{PLURAL:$2|1 identisch Duplikat|$2 identischi Duplikat}}.',
+'fileduplicatesearch' => 'Datei-Duplikat sueche',
+'fileduplicatesearch-summary' => 'Suech no Datei-Duplikat uf dr Grundlag vu ihrem Hash-Wärt.',
+'fileduplicatesearch-legend' => 'No Duplikat sueche',
+'fileduplicatesearch-filename' => 'Dateiname:',
+'fileduplicatesearch-submit' => 'Sueche',
+'fileduplicatesearch-info' => '$1 × $2 Pixel<br />Dateigressi: $3<br />MIME-Typ: $4',
+'fileduplicatesearch-result-1' => 'D Datei „$1“ het kei identischi Duplikat.',
+'fileduplicatesearch-result-n' => 'D Datei „$1“ het {{PLURAL:$2|1 identisch Duplikat|$2 identischi Duplikat}}.',
+'fileduplicatesearch-noresults' => 'S isch kei Datei mit em Name „$1“ gfunde wore.',
# Special:SpecialPages
'specialpages' => 'Spezialsytene',
'specialpages-note' => '----
-* D Spezialsyte für alli
-* <strong class="mw-specialpagerestricted">d Spezialsyte für d Benutzer mit bsundri Rächt</strong>',
+* Reguläri Spezialsyte
+* <span class="mw-specialpagerestricted">Zuegriffsbschränkti Spezialsyte</span>
+* <span class="mw-specialpagecached">Cachegenerierti Spezialsyte</span>',
'specialpages-group-maintenance' => 'Wartigslischte',
'specialpages-group-other' => 'Andri Spezialsyte',
'specialpages-group-login' => 'Aamälde',
diff --git a/languages/messages/MessagesGu.php b/languages/messages/MessagesGu.php
index 295e46bb..8bec5c7b 100644
--- a/languages/messages/MessagesGu.php
+++ b/languages/messages/MessagesGu.php
@@ -11,6 +11,8 @@
* @author Ashok modhvadia
* @author Dineshjk
* @author Dsvyas
+ * @author Haritosh
+ * @author Rangilo Gujarati
* @author RaviC
* @author Sushant savla
* @author לערי ריינה×רט
@@ -36,88 +38,88 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'દà«àªµàª¿_પà«àª¨àªƒàª®àª¾àª°à«àª—દરà«àª¶àª¨' ),
+ 'Allmessages' => array( 'બધાંસંદેશા' ),
+ 'Allpages' => array( 'બધાંપાનાં' ),
+ 'Ancientpages' => array( 'પà«àª°àª¾àªšà«€àª¨àªªàª¾àª¨àª¾àª‚' ),
+ 'Blankpage' => array( 'કોરૂં_પાનà«àª‚' ),
+ 'Block' => array( 'પà«àª°àª¤àª¿àª¬àª‚ધ', 'IP_પર_પà«àª°àª¤àª¿àª¬àª‚ધ', 'સભà«àª¯àªªàª°_પà«àª°àª¤àª¿àª¬àª‚ધ' ),
+ 'Booksources' => array( 'પà«àª¸à«àª¤àª•àª¸à«àª°à«‹àª¤' ),
'BrokenRedirects' => array( 'ખંડિત_પà«àª¨àªƒàª®àª¾àª°à«àª—દરà«àª¶àª¨' ),
- 'Disambiguations' => array( 'અસંદિગà«àª§àª¤àª¾' ),
- 'Userlogin' => array( 'સભà«àª¯àªªà«àª°àªµà«‡àª¶' ),
- 'Userlogout' => array( 'સભà«àª¯àª¨àª¿àªµà«‡àª¶' ),
+ 'Categories' => array( 'શà«àª°à«‡àª£à«€àª“' ),
+ 'ChangePassword' => array( 'ગà«àªªà«àª¤àª¸àª‚જà«àªžàª¾_બદલો', 'ગà«àªªà«àª¤àª¸àª‚જà«àªžàª¾_પà«àª¨:_સà«àª¥àª¾àªªàª¨' ),
+ 'Confirmemail' => array( 'ઇમેઇલખાતરીકરો' ),
+ 'Contributions' => array( 'પà«àª°àª¦àª¾àª¨' ),
'CreateAccount' => array( 'ખાતà«àª‚_ખોલો' ),
- 'Preferences' => array( 'પસંદ' ),
- 'Watchlist' => array( 'ધà«àª¯àª¾àª¨àª¸à«‚ચિ' ),
- 'Recentchanges' => array( 'તાજાફેરફારો' ),
- 'Upload' => array( 'ચડાવો' ),
+ 'Deadendpages' => array( 'મૃતાંતપાનાં' ),
+ 'DeletedContributions' => array( 'હટાવેલાં_યોગદાન' ),
+ 'Disambiguations' => array( 'અસંદિગà«àª§àª¤àª¾' ),
+ 'DoubleRedirects' => array( 'દà«àªµàª¿_પà«àª¨àªƒàª®àª¾àª°à«àª—દરà«àª¶àª¨' ),
+ 'Emailuser' => array( 'સભà«àª¯àª¨à«‡àª‡àª®à«‡àª²' ),
+ 'Export' => array( 'નિકાસ' ),
+ 'Fewestrevisions' => array( 'લઘà«àª¤à«àª¤àª®_પà«àª¨àª°àª¾àªµàª°à«àª¤àª¨' ),
+ 'FileDuplicateSearch' => array( 'ફાઇલપà«àª°àª¤àª¿àª•à«ƒàª¤àª¿_શોધ' ),
+ 'Filepath' => array( 'ફાઇલપથ' ),
+ 'Import' => array( 'આયાત' ),
+ 'Invalidateemail' => array( 'અમાનà«àª¯_ઇ-મેઇલ' ),
+ 'LinkSearch' => array( 'કડી_શોધ' ),
+ 'Listadmins' => array( 'યાદીપà«àª°àª¬àª‚ધક' ),
+ 'Listbots' => array( 'યાદીબૉટ' ),
'Listfiles' => array( 'યાદીફાઇલ', 'ફાઇલયાદી', 'ચિતà«àª°àª¯àª¾àª¦à«€' ),
- 'Newimages' => array( 'નવીફાઇલો', 'નવાંચિતà«àª°à«‹' ),
- 'Listusers' => array( 'યાદીસભà«àª¯à«‹', 'સભà«àª¯àª¯àª¾àª¦à«€' ),
'Listgrouprights' => array( 'યાદીસમà«àª¹àª…ધિકારો', 'સભà«àª¯àª¸àª®à«àª¹àª…ધિકારો' ),
- 'Statistics' => array( 'આંકડાકીયમાહિતી' ),
- 'Randompage' => array( 'યાદચà«àª›', 'કોઈ_પણ_àªàª•' ),
+ 'Listredirects' => array( 'પà«àª¨àªƒàª®àª¾àª°à«àª—દરà«àª¶àª¨àª¯àª¾àª¦à«€' ),
+ 'Listusers' => array( 'યાદીસભà«àª¯à«‹', 'સભà«àª¯àª¯àª¾àª¦à«€' ),
+ 'Log' => array( 'લૉગ', 'લૉગà«àª¸' ),
'Lonelypages' => array( 'àªàª•àª¾àª•à«€àªªàª¾àª¨àª¾àª‚', 'અનાથપાનાં' ),
- 'Uncategorizedpages' => array( 'અવરà«àª—િકૃત_પાનાં' ),
- 'Uncategorizedcategories' => array( 'અવરà«àª—િકૃત_શà«àª°à«‡àª£à«€àª“' ),
- 'Uncategorizedimages' => array( 'અવરà«àª—િકૃત_ફાઇલો', 'અવરà«àª—િકૃત_ચિતà«àª°à«‹' ),
- 'Uncategorizedtemplates' => array( 'અવરà«àª—િકૃત_ઢાંચા' ),
- 'Unusedcategories' => array( 'વણવપરાયેલી_શà«àª°à«‡àª£à«€àª“' ),
- 'Unusedimages' => array( 'વણવપરાયેલ_ફાઇલો', 'વણવપરાયેલ_ચિતà«àª°à«‹' ),
- 'Wantedpages' => array( 'જોઇતા_પાનાં', 'તà«àª°à«àªŸàª•_કડી' ),
- 'Wantedcategories' => array( 'જોઇતી_શà«àª°à«‡àª£à«€àª“' ),
- 'Wantedfiles' => array( 'જોઇતી_ફાઇલો' ),
- 'Wantedtemplates' => array( 'જોઇતા_ઢાંચા' ),
+ 'Longpages' => array( 'લાંબાપાના' ),
+ 'MergeHistory' => array( 'વિલિનિકરણ_ઈતિહાસ' ),
+ 'Mostcategories' => array( 'મોટાભાગની_શà«àª°à«‡àª£à«€àª“' ),
+ 'Mostimages' => array( 'સૌથી_વધà«àªœà«‹àª¡àª¾àª¯à«‡àª²à«€_ફાઇલો', 'મહતà«àª¤àª®_ફાઇલો', 'મહતà«àª¤àª®_ચિતà«àª°à«‹' ),
'Mostlinked' => array( 'સૌથીવધà«_જોડાયેલાં_પાનાં', 'સૌથીવધà«_જોડાયેલ' ),
'Mostlinkedcategories' => array( 'સૌથીવધà«àªœà«‹àª¡àª¾àª¯à«‡àª²à«€_શà«àª°à«‡àª£à«€', 'સૌથીવધà«àªµàªªàª°àª¾àª¯à«‡àª²à«€_શà«àª°à«‡àª£à«€àª“' ),
'Mostlinkedtemplates' => array( 'સૌથીવધà«_જોડાયેલાં_ઢાંચા', 'સૌથી_વધà«àªµàªªàª°àª¾àª¯à«‡àª²àª¾àª‚_ઢાંચા' ),
- 'Mostimages' => array( 'સૌથી_વધà«àªœà«‹àª¡àª¾àª¯à«‡àª²à«€_ફાઇલો', 'મહતà«àª¤àª®_ફાઇલો', 'મહતà«àª¤àª®_ચિતà«àª°à«‹' ),
- 'Mostcategories' => array( 'મોટાભાગની_શà«àª°à«‡àª£à«€àª“' ),
'Mostrevisions' => array( 'મહતà«àª¤àª®_પà«àª¨àª°àª¾àªµàª°à«àª¤àª¨' ),
- 'Fewestrevisions' => array( 'લઘà«àª¤à«àª¤àª®_પà«àª¨àª°àª¾àªµàª°à«àª¤àª¨' ),
- 'Shortpages' => array( 'ટà«àª‚કાપાનાં' ),
- 'Longpages' => array( 'લાંબાપાના' ),
+ 'Movepage' => array( 'પાનà«àª‚ખસેડો' ),
+ 'Mycontributions' => array( 'મારૂપà«àª°àª¦àª¾àª¨' ),
+ 'Mypage' => array( 'મારૂપાનà«àª‚' ),
+ 'Mytalk' => array( 'મારીચરà«àªšàª¾' ),
+ 'Newimages' => array( 'નવીફાઇલો', 'નવાંચિતà«àª°à«‹' ),
'Newpages' => array( 'નવાપાનાં' ),
- 'Ancientpages' => array( 'પà«àª°àª¾àªšà«€àª¨àªªàª¾àª¨àª¾àª‚' ),
- 'Deadendpages' => array( 'મૃતાંતપાનાં' ),
+ 'Popularpages' => array( 'લોકપà«àª°àª¿àª¯àªªàª¾àª¨àª¾àª‚' ),
+ 'Preferences' => array( 'પસંદ' ),
+ 'Prefixindex' => array( 'ઉપસરà«àª—' ),
'Protectedpages' => array( 'સંરકà«àª·àª¿àª¤àªªàª¾àª¨àª¾àª‚' ),
'Protectedtitles' => array( 'સંરકà«àª·àª¿àª¤_શિરà«àª·àª•à«‹' ),
- 'Allpages' => array( 'બધાંપાનાં' ),
- 'Prefixindex' => array( 'ઉપસરà«àª—' ),
- 'Specialpages' => array( 'ખાસપાનાં' ),
- 'Contributions' => array( 'પà«àª°àª¦àª¾àª¨' ),
- 'Emailuser' => array( 'સભà«àª¯àª¨à«‡àª‡àª®à«‡àª²' ),
- 'Confirmemail' => array( 'ઇમેઇલખાતરીકરો' ),
- 'Whatlinkshere' => array( 'અહિં_શà«àª‚_જોડાય_છે?' ),
+ 'Randompage' => array( 'યાદચà«àª›', 'કોઈ_પણ_àªàª•' ),
+ 'Randomredirect' => array( 'યાદચà«àª›_પà«àª¨àªƒàª®àª¾àª°à«àª—દરà«àª¶àª¨' ),
+ 'Recentchanges' => array( 'તાજાફેરફારો' ),
'Recentchangeslinked' => array( 'તાજેતરનાં_ફેરફારો', 'સંલગà«àª¨_ફેરફારો' ),
- 'Movepage' => array( 'પાનà«àª‚ખસેડો' ),
- 'Booksources' => array( 'પà«àª¸à«àª¤àª•àª¸à«àª°à«‹àª¤' ),
- 'Categories' => array( 'શà«àª°à«‡àª£à«€àª“' ),
- 'Export' => array( 'નિકાસ' ),
- 'Version' => array( 'સંસà«àª•àª°àª£' ),
- 'Allmessages' => array( 'બધાંસંદેશા' ),
- 'Log' => array( 'લૉગ', 'લૉગà«àª¸' ),
- 'Blockip' => array( 'પà«àª°àª¤àª¿àª¬àª‚ધ', 'IP_પર_પà«àª°àª¤àª¿àª¬àª‚ધ', 'સભà«àª¯àªªàª°_પà«àª°àª¤àª¿àª¬àª‚ધ' ),
- 'Undelete' => array( 'પà«àª¨àªƒàªªà«àª°àª¾àªªà«àª¤' ),
- 'Import' => array( 'આયાત' ),
- 'Userrights' => array( 'સભà«àª¯àª¾àª§àª¿àª•àª¾àª°' ),
- 'FileDuplicateSearch' => array( 'ફાઇલપà«àª°àª¤àª¿àª•à«ƒàª¤àª¿_શોધ' ),
- 'Unwatchedpages' => array( 'વણજોયેલા_પાનાં' ),
- 'Listredirects' => array( 'પà«àª¨àªƒàª®àª¾àª°à«àª—દરà«àª¶àª¨àª¯àª¾àª¦à«€' ),
'Revisiondelete' => array( 'રદકરેલà«àª‚_સà«àª§àª¾àª°à«‹' ),
- 'Unusedtemplates' => array( 'વણવપરાયેલાં_ઢાંચા' ),
- 'Randomredirect' => array( 'યાદચà«àª›_પà«àª¨àªƒàª®àª¾àª°à«àª—દરà«àª¶àª¨' ),
- 'Mypage' => array( 'મારૂપાનà«àª‚' ),
- 'Mytalk' => array( 'મારીચરà«àªšàª¾' ),
- 'Mycontributions' => array( 'મારૂપà«àª°àª¦àª¾àª¨' ),
- 'Listadmins' => array( 'યાદીપà«àª°àª¬àª‚ધક' ),
- 'Listbots' => array( 'યાદીબૉટ' ),
- 'Popularpages' => array( 'લોકપà«àª°àª¿àª¯àªªàª¾àª¨àª¾àª‚' ),
'Search' => array( 'શોધ' ),
- 'Resetpass' => array( 'ગà«àªªà«àª¤àª¸àª‚જà«àªžàª¾_બદલો', 'ગà«àªªà«àª¤àª¸àª‚જà«àªžàª¾_પà«àª¨:_સà«àª¥àª¾àªªàª¨' ),
- 'Withoutinterwiki' => array( 'આંતરવિકિવિહીન' ),
- 'MergeHistory' => array( 'વિલિનિકરણ_ઈતિહાસ' ),
- 'Filepath' => array( 'ફાઇલપથ' ),
- 'Invalidateemail' => array( 'અમાનà«àª¯_ઇ-મેઇલ' ),
- 'Blankpage' => array( 'કોરૂં_પાનà«àª‚' ),
- 'LinkSearch' => array( 'કડી_શોધ' ),
- 'DeletedContributions' => array( 'હટાવેલાં_યોગદાન' ),
+ 'Shortpages' => array( 'ટà«àª‚કાપાનાં' ),
+ 'Specialpages' => array( 'ખાસપાનાં' ),
+ 'Statistics' => array( 'આંકડાકીયમાહિતી' ),
'Tags' => array( 'ટેગ' ),
+ 'Uncategorizedcategories' => array( 'અવરà«àª—િકૃત_શà«àª°à«‡àª£à«€àª“' ),
+ 'Uncategorizedimages' => array( 'અવરà«àª—િકૃત_ફાઇલો', 'અવરà«àª—િકૃત_ચિતà«àª°à«‹' ),
+ 'Uncategorizedpages' => array( 'અવરà«àª—િકૃત_પાનાં' ),
+ 'Uncategorizedtemplates' => array( 'અવરà«àª—િકૃત_ઢાંચા' ),
+ 'Undelete' => array( 'પà«àª¨àªƒàªªà«àª°àª¾àªªà«àª¤' ),
+ 'Unusedcategories' => array( 'વણવપરાયેલી_શà«àª°à«‡àª£à«€àª“' ),
+ 'Unusedimages' => array( 'વણવપરાયેલ_ફાઇલો', 'વણવપરાયેલ_ચિતà«àª°à«‹' ),
+ 'Unusedtemplates' => array( 'વણવપરાયેલાં_ઢાંચા' ),
+ 'Unwatchedpages' => array( 'વણજોયેલા_પાનાં' ),
+ 'Upload' => array( 'ચડાવો' ),
+ 'Userlogin' => array( 'સભà«àª¯àªªà«àª°àªµà«‡àª¶' ),
+ 'Userlogout' => array( 'સભà«àª¯àª¨àª¿àªµà«‡àª¶' ),
+ 'Userrights' => array( 'સભà«àª¯àª¾àª§àª¿àª•àª¾àª°' ),
+ 'Version' => array( 'સંસà«àª•àª°àª£' ),
+ 'Wantedcategories' => array( 'જોઇતી_શà«àª°à«‡àª£à«€àª“' ),
+ 'Wantedfiles' => array( 'જોઇતી_ફાઇલો' ),
+ 'Wantedpages' => array( 'જોઇતા_પાનાં', 'તà«àª°à«àªŸàª•_કડી' ),
+ 'Wantedtemplates' => array( 'જોઇતા_ઢાંચા' ),
+ 'Watchlist' => array( 'ધà«àª¯àª¾àª¨àª¸à«‚ચિ' ),
+ 'Whatlinkshere' => array( 'અહિં_શà«àª‚_જોડાય_છે?' ),
+ 'Withoutinterwiki' => array( 'આંતરવિકિવિહીન' ),
);
$digitTransformTable = array(
@@ -165,8 +167,8 @@ $messages = array(
'tog-shownumberswatching' => 'ધà«àª¯àª¾àª¨àª®àª¾àª‚ રાખતા સભà«àª¯à«‹àª¨à«€ સંખà«àª¯àª¾ બતાવો',
'tog-oldsig' => 'વિદà«àª¯àª®àª¾àª¨ હસà«àª¤àª¾àª•à«àª·àª°àª¨à«àª‚ પૂરà«àªµàª¦àª°à«àª¶àª¨:',
'tog-fancysig' => 'સà«àªµàª¾àªšàª¾àª²àª¿àª¤ કડી વગરની (કાચી) સહી',
-'tog-externaleditor' => 'બીજà«àª‚ àªàª¡à«€àªŸàª° વાપરો. (ફકà«àª¤ àªàª•àª¸àªªàª°à«àªŸ માટે, તમારા કમà«àªªà«àª¯à«àªŸàª°àª®àª¾àª‚ સેટીંગà«àª¸ બદલવા પડશે. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
-'tog-externaldiff' => 'Use external diff by default (for experts only, needs special settings on your computer. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaleditor' => 'બીજà«àª‚ àªàª¡à«€àªŸàª° વાપરો. (ફકà«àª¤ àªàª•àª¸àªªàª°à«àªŸ માટે, તમારા કમà«àªªà«àª¯à«àªŸàª°àª®àª¾àª‚ સેટીંગà«àª¸ બદલવા પડશે. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaldiff' => 'Use external diff by default (for experts only, needs special settings on your computer. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
'tog-showjumplinks' => "''આના પર જાવ'' કડીને સકà«àª°à«€àª¯ કરો.",
'tog-uselivepreview' => 'લાઇવ પà«àª°àª¿àªµà«àª¯à« જà«àª“ (જાવાસà«àª•à«àª°à«€àªªà«àªŸ જરૂરી) (પà«àª°àª¾àª¯à«‹àª—ીક)',
'tog-forceeditsummary' => "કોરો 'ફેરફાર સારાંશ' ઉમેરતા પહેલા મને ચેતવો",
@@ -264,14 +266,7 @@ $messages = array(
'index-category' => 'અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ બનાવેલા પાનાં',
'noindex-category' => 'અનà«àª•à«àª°àª®àª£àª¿àª•àª¾ નહી બનાવેલા પાનાં',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''મિડીયાવિકિ સફળતાપૂરà«àªµàª• ઇનà«àª¸àªŸà«‹àª² થયà«àª‚ છે.'''",
-'mainpagedocfooter' => 'વિકિ સોફà«àªŸàªµà«‡àª° વાપરવાની માહીતિ માટે [http://meta.wikimedia.org/wiki/Help:Contents સભà«àª¯ મારà«àª—દરà«àª¶àª¿àª•àª¾] જà«àª“.
-
-== શરૂઆતના તબકà«àª•à«‡ ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings કોનફીગà«àª¯à«àª°à«‡àª¶àª¨ સેટીંગà«àª¸àª¨à«€ યાદી]
-* [http://www.mediawiki.org/wiki/Manual:FAQ વારંવાર પà«àª›àª¾àª¤àª¾ પà«àª°àª¶à«àª¨à«‹]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce મિડીયાવિકિ રીલીઠમેઇલીંગ લીસà«àªŸ]',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'વિષે',
'article' => 'લેખનà«àª‚ પાનà«àª‚',
@@ -324,10 +319,10 @@ $messages = array(
'history' => 'પાનાનો ઇતિહાસ',
'history_short' => 'ઇતિહાસ',
'updatedmarker' => 'મારી ગઇ મà«àª²àª¾àª•àª¾àª¤ પછીના બદલાવ',
-'info_short' => 'માહિતી',
'printableversion' => 'છાપવા માટેની આવૃતà«àª¤àª¿',
'permalink' => 'સà«àª¥àª¾àª¯à«€ કડી',
'print' => 'છાપો',
+'view' => 'જà«àª“',
'edit' => 'ફેરફાર કરો',
'create' => 'બનાવો',
'editthispage' => 'આ પાનામાં ફેરફાર કરો',
@@ -335,6 +330,7 @@ $messages = array(
'delete' => 'રદ કરો',
'deletethispage' => 'આ પાનà«àª‚ હટાવો',
'undelete_short' => 'હટાવેલ {{PLURAL:$1|àªàª• ફેરફાર|$1 ફેરફારો}} પરત લાવો.',
+'viewdeleted_short' => '{{PLURAL:$1|ભૂંસી નાખેલો àªàª•|ભૂંસી નાખેલા $1}} ફેરફાર જà«àª“',
'protect' => 'સà«àª°àª•à«àª·àª¿àª¤ કરો',
'protect_change' => 'ફેરફાર કરો',
'protectthispage' => 'આ પાનà«àª‚ સà«àª°àª•à«àª·àª¿àª¤ કરો.',
@@ -423,6 +419,8 @@ $1',
'toc' => 'અનà«àª•à«àª°àª®àª£àª¿àª•àª¾',
'showtoc' => 'બતાવો',
'hidetoc' => 'છà«àªªàª¾àªµà«‹',
+'collapsible-collapse' => 'સંકેલો',
+'collapsible-expand' => 'વિસà«àª¤àª¾àª°à«‹',
'thisisdeleted' => 'જà«àª“ અથવા મૂળરૂપે ફેરવો $1?',
'viewdeleted' => '$1 જોવà«àª‚ છે?',
'restorelink' => '{{PLURAL:$1|àªàª• ભà«àª¸à«€àª¨àª¾àª–ેલો ફેરફાર|$1 ભà«àª¸à«€àª¨àª¾àª–ેલા ફેરફારો}}',
@@ -434,6 +432,8 @@ $1',
'page-rss-feed' => '"$1" RSS Feed',
'page-atom-feed' => '"$1" àªàªŸà«‹àª® ફીડ',
'red-link-title' => '$1 (પાનà«àª‚ અસà«àª¤àª¿àª¤à«àªµàª®àª¾àª‚ નથી)',
+'sort-descending' => 'ઉતરતા કà«àª°àª®àª®àª¾àª‚ ગોઠવો',
+'sort-ascending' => 'ચડતા કà«àª°àª®àª®àª¾àª‚ ગોઠવો',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'લેખ',
@@ -520,12 +520,13 @@ Query: $2',
'protectedinterface' => 'આ પાનà«àª‚ સોફà«àªŸàªµà«‡àª° માટે ઇનà«àªŸàª°àª«à«‡àª‡àª¸ ટેકà«àª¸àªŸ આપે છે, અને તેને દà«àª°à«àªªàª¯à«‹àª— રોકવા માટે સà«àª¥àª—િત કરà«àª¯à«àª‚ છે.',
'editinginterface' => "'''ચેતવણી:''' તમે જે પાનામાં ફેરફાર કરી રહà«àª¯àª¾ છો તે પાનà«àª‚ સોફà«àªŸàªµà«‡àª° માટે ઇનà«àªŸàª°àª«à«‡àª¸ ટેકà«àª¸àªŸ પà«àª°à«€ પાડે છે.
અહીંનો બદલાવ બીજા સભà«àª¯à«‹àª¨àª¾ ઇનà«àªŸàª°àª«à«‡àª¸àª¨àª¾àª‚ દેખાવ ઉપર અસરકરà«àª¤àª¾ બનશે.
-ભાષાંતર કરવા માટે કૃપા કરી [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] -- મિડિયાવિકી લોકલાઇàªà«‡àª¶àª¨ પà«àª°àª•àª²à«àªª વાપરો.",
+ભાષાંતર કરવા માટે કૃપા કરી [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] -- મિડિયાવિકી લોકલાઇàªà«‡àª¶àª¨ પà«àª°àª•àª²à«àªª વાપરો.",
'sqlhidden' => '(છà«àªªà«€ SQL કà«àªµà«‡àª°à«€)',
'cascadeprotected' => 'આ પાના પર ફેરફાર પà«àª°àª¤àª¿àª¬àª‚ધિત છે કેમ કે આ પાનà«àª‚ {{PLURAL:$1|àªàªµà«àª‚ પાનà«àª‚|àªàªµàª¾ પાના}} માં શામિલ છે જેમાં અનà«àªµàª°à«àª¤à«€ (પગથિયામય)સંરકà«àª·àª£ સકà«àª°à«€àª¯ છે :
$2',
'namespaceprotected' => "તમને '''$1''' નામાવકાશનાં પાનાંમાં ફેરફાર કરવાની પરવાનગી નથી.",
-'customcssjsprotected' => 'તમને આ પાનà«àª‚ બદલવાની પરવાનગી નથી કારણકે આ પાનામાં બીજા સભà«àª¯àª¨à«€ પસંદગીના સેટીંગà«àª¸ છે.',
+'customcssprotected' => 'તમને આ પાનà«àª‚ બદલવાની પરવાનગી નથી કારણકે આ પાનામાં બીજા સભà«àª¯àª¨à«€ પસંદગીના સેટીંગà«àª¸ છે.',
+'customjsprotected' => 'તમને આ JavaScript પાનà«àª‚ બદલવાની પરવાનગી નથી કારણકે આ પાનામાં બીજા સભà«àª¯àª¨à«€ પસંદગીના સેટીંગà«àª¸ છે.',
'ns-specialprotected' => 'ખાસ પાનાંમાં ફેરફાર ન થઇ શકે.',
'titleprotected' => 'આ મથાળà«àª‚ (વિષય) [[User:$1|$1]] બનાવવા માટે સà«àª°àª•à«àª·àª¿àª¤ કરવામાં આવà«àª¯à«‹ છે.
આ માટેનà«àª‚ કારણ છે-- "\'\'$2\'\'".',
@@ -563,6 +564,7 @@ $2',
'createaccount' => 'નવà«àª‚ ખાતà«àª‚ ખોલો',
'gotaccount' => "પહેલેથી ખાતà«àª‚ ખોલેલà«àª‚ છે? '''$1'''.",
'gotaccountlink' => 'પà«àª°àªµà«‡àª¶à«‹ (લૉગ ઇન કરો)',
+'userlogin-resetlink' => 'પોતાની પà«àª°àªµà«‡àª¶ માહિતી ભૂલી ગયા છો?',
'createaccountmail' => 'ઇ-મેઇલ દà«àªµàª¾àª°àª¾',
'createaccountreason' => 'કારણ:',
'badretype' => 'તમે દાખલ કરેલ ગà«àªªà«àª¤àª¸àª‚જà«àªžàª¾ મળતી આવતી નથી.',
@@ -578,6 +580,8 @@ $2',
'nocookieslogin' => '{{SITENAME}} કà«àª•à«€àª સિવાય પà«àª°àªµà«‡àª¶ કરવા નહીં દે.
તમે કà«àª•à«€àª બંધ કરી છે.
કૃપા કરી કà«àª•à«€àª ચાલૠકરીને તમારા સભà«àª¯àª¨àª¾àª® સાથે પà«àª°àªµà«‡àª¶ કરો.',
+'nocookiesfornew' => 'સભà«àª¯ ખાતાની પà«àª·à«àªŸàª¿ નથી થઇ, અમે તેના સà«àª¤à«àª°à«‹àª¤àª¨à«€ પà«àª·à«àªŸàª¿ ન કરી શકà«àª¯àª¾.
+ખાતà«àª°à«€ કરો કે તમે કà«àª•à«€àª સકà«àª°à«€àª¯ કરી છે, અને પાનà«àª‚ ફરીથી ચડાવો',
'noname' => 'તમે પà«àª°àª®àª¾àª£àª­à«‚ત સભà«àª¯àª¨àª¾àª® જણાવેલ નથી.',
'loginsuccesstitle' => 'પà«àª°àªµà«‡àª¶ સફળ',
'loginsuccess' => "'''તમે હવે {{SITENAME}}માં \"\$1\" તરીકે પà«àª°àªµà«‡àª¶à«€ ચà«àª•à«àª¯àª¾ છો.'''",
@@ -586,7 +590,7 @@ $2',
સભà«àª¯àª¨àª¾àª®à«‹ અકà«àª·àª°àª¸àª‚વેદી (કેસ સેનà«àª¸àª¿àªŸà«€àªµ) હોય છે.
કૃપા કરી સà«àªªà«‡àª²à«€àª‚ગ/જોડણી ચકાસો અથવા [[Special:UserLogin/signup|નવà«àª‚ ખાતૠખોલો]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" નામનો કોઇ સભà«àª¯ નથી, તમારી જોડણી તપાસો.',
+'nosuchusershort' => '"$1" નામનો કોઇ સભà«àª¯ નથી, તમારી જોડણી તપાસો.',
'nouserspecified' => 'તમારે સભà«àª¯ નામ દરà«àª¶àª¾àªµàªµàª¾àª¨à«€ જરૂર છે.',
'login-userblocked' => 'આ યà«àªàª° પà«àª°àª¤àª¿àª¬àª‚ધિત છે. પà«àª°àªµà«‡àª¶ વરà«àªœà«€àª¤.',
'wrongpassword' => 'તમે લખેલી ગà«àªªà«àª¤ સંજà«àªžàª¾ ખોટી છે.
@@ -635,13 +639,14 @@ Please log in again after you receive it.
'usernamehasherror' => 'સભà«àª¯àª¨àª¾àª®àª®àª¾àª‚ ગડબડિયા ચિહà«àª¨à«‹ ન હોઈ શકે',
'login-throttled' => 'તમે હાલમાં જ ઘણા પà«àª°àªµà«‡àª¶ પà«àª°àª¯àª¤à«àª¨à«‹ કરà«àª¯àª¾.
કૃપા કરી ફરી પà«àª°àª¯àª¾àª¸ પહેલાં થોડી રાહ જà«àª“.',
+'login-abort-generic' => 'તમારà«àª‚ પà«àª°àªµà«‡àª¶ નિષà«àª«àª³ થયà«àª‚ - છોડી દેવાયà«àª‚',
'loginlanguagelabel' => 'ભાષા: $1',
'suspicious-userlogout' => 'લોગ આઉટ કરવાની તમારી વિનંતિ પૂરી ન કરી શકાઇ. àªàª® લાગે છે કે તેને તૃટિ પામેલ બà«àª°àª¾àª‰àªàª° કે પà«àª°à«‹àª•à«àª¸à«€ દà«àªµàª¾àª°àª¾ મોકલાઈ હતી.',
# E-mail sending
'php-mail-error-unknown' => 'PHPની મેલ() કામગીરીમાં અજà«àªžàª¾àª¤ તà«àª°à«àªŸàª¿',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ગà«àªªà«àª¤àª¸àª‚જà«àªžàª¾ બદલો',
'resetpass_announce' => 'તમે હંગામી ઇમેઇલ કોડ સાથે લોગ ઇન કરà«àª¯à«àª‚.
લોગીંગ પà«àª°à«‚ં કરવા માટે તમારે નવી ગà«àªªà«àª¤ સંજà«àªžàª¾ (પાસવરà«àª¡) આપવો પડશે:',
@@ -660,6 +665,13 @@ Please log in again after you receive it.
કદાચ તમે પહેલેથી સફળતા પૂરà«àªµàª• તમારી ગà«àªªà«àª¤ સંજà«àªžàª¾ બદલી દીધી હોય કે નવી ગà«àªªà«àª¤ સંંજà«àªžàª¾àª®àª¾àªŸà«‡ વિનંતિ કરી હોય',
'resetpass-temp-password' => 'કામચલાવ ગà«àªªà«àª¤àª¸àª‚જà«àªžàª¾:',
+# Special:PasswordReset
+'passwordreset' => 'પાસવરà«àª¡ રીસેટ કરો',
+'passwordreset-legend' => 'પાસવરà«àª¡ રીસેટ કરો',
+'passwordreset-disabled' => 'આ વિકી પર પાસવરà«àª¡ રીસેટ કરવા પર પà«àª°àª¤àª¿àª¬àª‚ધ છે.',
+'passwordreset-username' => 'સભà«àª¯ નામ:',
+'passwordreset-email' => 'ઇ મેલ સરનામà«àª‚:',
+
# Edit page toolbar
'bold_sample' => 'ઘાટા અકà«àª·àª°',
'bold_tip' => 'ઘાટા અકà«àª·àª°',
@@ -671,8 +683,6 @@ Please log in again after you receive it.
'extlink_tip' => "બાહà«àª¯ કડી (શરૂઆતામાં '''http://''' ઉમેરવાનà«àª‚ ભà«àª²àª¶à«‹ નહી)",
'headline_sample' => 'મથાળાનાં મોટા અકà«àª·àª°',
'headline_tip' => 'બીજા કà«àª°àª®àª¨à«àª‚ મથાળà«àª‚',
-'math_sample' => 'સૂતà«àª° અહીં દાખલ કરો',
-'math_tip' => 'ગણિતિક સૂતà«àª° (LaTeX)',
'nowiki_sample' => 'ફોરà«àª®à«‡àªŸ કરà«àª¯àª¾ વગરનà«àª‚ લખાણ અહીં ઉમેરો',
'nowiki_tip' => 'વિકિ ફોરà«àª®à«‡àªŸà«€àª‚ગને અવગણો',
'image_tip' => 'અંદર વણાયેલી (Embedded) ફાઇલ',
@@ -759,7 +769,7 @@ Please log in again after you receive it.
'noarticletext-nopermission' => 'આ પાનામાં હાલમાં કોઇ માહિતિ નથી.
તમે [[Special:Search/{{PAGENAME}}|આ શબà«àª¦]] ધરાવતાં અનà«àª¯ લેખો શોધી શકો છો, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} સંલગà«àª¨ માહિતિ પતà«àª°àª•à«‹àª®àª¾àª‚ શોધી શકો છો],
અથવા [{{fullurl:{{FULLPAGENAME}}|action=edit}} આ પાનામાં ફેરફાર કરી] માહિતિ ઉમેરવાનà«àª‚ શરૂ કરી શકો છો</span>.',
-'userpage-userdoesnotexist' => 'સભà«àª¯ ખાતà«àª‚ "$1"ની નોંધણીનથી થઈ.
+'userpage-userdoesnotexist' => 'સભà«àª¯ ખાતà«àª‚ "<nowiki>$1</nowiki>"ની નોંધણીનથી થઈ.
શà«àª‚ તમે ખરેખર આ પાનાની રચના કે ફેરફાર કરવા માંગો છો',
'userpage-userdoesnotexist-view' => 'સભà«àª¯àª¨àª¾ ખાતા $1 ની નોંધણી નથી થઈ',
'blocked-notice-logextract' => 'આ સભà«àª¯ હાલમાં પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
@@ -798,6 +808,7 @@ Please log in again after you receive it.
'token_suffix_mismatch' => "'''તમારા ફેરફારો કેમકે તમારા ગà«àª°àª¾àª¹àª•àª ફેરફાર નાકામાં વિરામચિનà«àª¹à«‹ અસà«àª¤ વà«àª¯àª¸à«àª¤ કરી દેતા.'''
આ પાનાને ખરાબ થતો અટકાવવા આ ફેરફાર રદà«àª¦ કરાયો છે.
જà«àª¯àª¾àª°à«‡ તમે વેબ આધારિત અજà«àªžàª¾àª¤ પà«àª°à«‹àª•à«àª¸à«€ વાપરતા હોવ તà«àª¯àª¾àª°à«‡ આવà«àª‚ બની શકે છે.",
+'edit_form_incomplete' => "'''ફેરફાર પતà«àª°àª¨à«‹ અમà«àª• ભાગ સરà«àªµàª° સà«àª§à«€ ન પહોંચà«àª¯à«‹; ખાતà«àª°à«€ કરો કે તમે કરેલા ફેરફાર બરાબર છે અને ફરી પà«àª°àª¯àª¤à«àª¨ કરો.'''",
'editing' => '$1નો ફેરફાર કરી રહà«àª¯àª¾ છે',
'editingsection' => '$1 (પરિચà«àª›à«‡àª¦)નો ફેરફાર કરી રહà«àª¯àª¾ છો',
'editingcomment' => '$1 (પરિચà«àª›à«‡àª¦)નો ફેરફાર કરી રહà«àª¯àª¾ છો',
@@ -1035,7 +1046,9 @@ $1",
'revdelete-offender' => 'પà«àª¨àª°àª¾àªµàª°à«àª¤àª¨àª¨àª¾ મૂળ લેખક',
# Suppression log
-'suppressionlog' => 'દાબ નોંધ',
+'suppressionlog' => 'દાબ નોંધ',
+'suppressionlogtext' => 'નીચે પà«àª°àª¬àª‚ધકોથી છà«àªªàª¾àª¯à«‡àª² àªàªµàª¾ હટાવ અને રોકની યાદિ આપેલી છે.
+હાલમાં સકà«àª°à«€àª¯ àªàªµàª¾ પà«àª°àª¤àª¿àª¬àª‚ધ અને રોકની યાદિ અહીં [[Special:IPBlockList|IP block list]] આપેલ છે.',
# History merging
'mergehistory' => 'પાનાનાં ઇતિહાસોનà«àª‚ વિલીનીકરણ',
@@ -1163,7 +1176,6 @@ $1",
'changepassword' => 'ગà«àªªà«àª¤àª¸àª‚જà«àªžàª¾ બદલો',
'prefs-skin' => 'ફલક',
'skin-preview' => 'ફેરફાર બતાવો',
-'prefs-math' => 'ગણિત',
'datedefault' => 'મારી પસંદ',
'prefs-datetime' => 'તારીખ અને સમય',
'prefs-personal' => 'સભà«àª¯ ઓળખ',
@@ -1187,8 +1199,6 @@ $1",
'columns' => 'સà«àª¤àª‚ભ',
'searchresultshead' => 'શોધો',
'resultsperpage' => 'પà«àª°àª¤àª¿ પાના પર પરિણામો',
-'contextlines' => 'પà«àª°àª¤àª¿ પરિણામ માં હરોળ',
-'contextchars' => 'સંદરà«àª­ પà«àª°àª¤àª¿ હરોળ',
'stub-threshold' => '<a href="#" class="stub">stub link</a>નાફોરà«àª®àª®à«‡àªŸàª¿àª‚ગ માટે શરૂઆતિ પગથિયà«àª‚ (બાઈટà«àª¸):',
'stub-threshold-disabled' => 'નિષà«àª•à«àª°à«€àª¯àª¾àª¨à«àªµà«€àª¤',
'recentchangesdays' => 'તાજા ફેરફારોમાં દેખાડવાના દિવસો',
@@ -1251,8 +1261,8 @@ HTML નાકà«àª‚ ચકાસો',
'email' => 'ઇ-મેઇલ',
'prefs-help-realname' => 'સાચà«àª‚ નામ મરજીયાત છે.
જો આપ સાચà«àª‚ નામ આપવાનà«àª‚ પસંદ કરશો, તો તેનો ઉપયોગ તમારા કરેલાં યોગદાનનà«àª‚ શà«àª°à«‡àª¯ આપવા માટે થશે.',
-'prefs-help-email' => "ઇ-મેઇલ સરનામૠવૈકલà«àªªàª¿àª• છે, પરંતૠજો તમે તમારી ગà«àªªà«àª¤àª¸àª‚જà«àªžàª¾ ભà«àª²à«€ ગયા હો તો ઠદà«àªµàª¾àª°àª¾ તમને નવી ગà«àªªà«àª¤àª¸àª‚જà«àªžàª¾ ઇ-મેઇલ કરી શકાશે.
-તમે ઠપણ પસંદ કરી શકો કે, તમારી ઓળખ જાહેર થયા વગર, અનà«àª¯ લોકો તમારા 'મારા વિષે' કે 'મારી ચરà«àªšàª¾'ના પાના પરથી તમારો સંપરà«àª• કરી શકે.",
+'prefs-help-email' => 'ઇમેલ સરનામૠવૈકલà«àªªàª¿àª• છે, પરંતૠજો તમે કà«àª¯àª¾àª°à«‡àª• તમારી ગà«àªªà«àª¤àª¸àª‚જà«àªžàª¾ ભૂલી જાવ તો નવી ગà«àªªà«àª¤àª¸àª‚જà«àªžàª¾ મેળવવા માટે તે જરૂરી છે.',
+'prefs-help-email-others' => 'તમે તમારી ઓળખ છતી કરà«àª¯àª¾ સિવાય તમે અનà«àª¯ સભà«àª¯à«‹ તમારો સંપરà«àª• તમારી ચરà«àªšàª¾àª¨àª¾ પાના પર કરી શકો છો.',
'prefs-help-email-required' => 'ઇ-મેઇલ સરનામૠજરૂરી.',
'prefs-info' => 'મૂળ માહિતી',
'prefs-i18n' => 'વૈશà«àªµà«€àª•àª°àª£',
@@ -1377,7 +1387,6 @@ HTML નાકà«àª‚ ચકાસો',
'right-userrights' => 'બધા સભà«àª¯à«‹àª¨àª¾ હકà«àª•à«‹àª®àª¾àª‚ ફેરફાર કરો',
'right-userrights-interwiki' => 'અનà«àª¯ વિકિ પરના સભà«àª¯à«‹àª¨àª¾ હકà«àª•à«‹ સંપાદિત કરો.',
'right-siteadmin' => 'માહિતી સંચયને ઉઘાડો અને વાસો.',
-'right-reset-passwords' => 'અનà«àª¯ સભà«àª¯à«‹àª¨à«€ ગà«àªªà«àª¤ સંજà«àªžàª¾àª“ ફરી ગોઠવો',
'right-override-export-depth' => 'à«« સà«àª¤àª° સà«àª§à«€ જોડાયેલ પાના સહીત પાના નિકાસ કરો',
'right-sendemail' => ' અનà«àª¯ સભà«àª¯à«‹àª¨à«‡ ઈ-મેલ મોકલો',
@@ -1507,10 +1516,13 @@ HTML નાકà«àª‚ ચકાસો',
'illegalfilename' => 'ફાઇલનામ "$1" àªàªµàª¾ ચિનà«àª¹à«‹ ધરાવે છે જેનો પà«àª°àª¯à«‹àª— શીરà«àª·àª•à«‹àª®àª¾àª‚ વરà«àªœàª¿àª¤ છે.
કૃપયા ફાઇઅલ નà«àª‚ નામ બદલીને ફરી ચઢાવો.',
'badfilename' => 'ફાઇલ નામ "$1" નામે બદલાયà«àª‚ છે.',
+'filetype-mime-mismatch' => 'ફાઇલ પà«àª°àª•àª¾àª° ".$1" શોધાયેલ MIME પà«àª°àª•àª¾àª°àª¨à«€ ફાઇલ ($2) સાથે મેળ ખાતો નથી.',
'filetype-badmime' => 'MIME પà«àª°àª•àª¾àª°àª¨à«€ "$1" ફાઇલ ચડાવવાની પરવાનગી નથી',
'filetype-bad-ie-mime' => 'આ ફાઈલ ચડાવી નહીં શકાય કેમ કે ઇંટરનેટ àªàª•à«àª¸àªªà«àª²à«‹àª°àª° આને "$1" તરીકે ઓળખશે, જેની પરવાનગી નથે અને આ ખતરનાક પà«àª°àª•àª¾àª°àª¨à«€ ફાઇલ હોઇ શકે.',
'filetype-unwanted-type' => "'''\".\$1\"''' ઠàªàª• બિન જરૂરી ફાઇલ પà«àª°àª•àª¾àª° છે.
ઇચà«àª›àª¨à«€àª¯ {{PLURAL:\$3|ફાઇલ પà«àª°àª•àª¾àª°|ફાઇલ પà«àª°àª•àª¾àª°à«‹}} \$2 છે.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|ઠફાઇલ પà«àª°àª•àª¾àª°àª¨à«‡ પà«àª°àªµàª¾àª¨àª—à«€ નથી|ઠફાઇલ પà«àª°àª•àª¾àª°à«‹àª¨à«‡ પà«àª°àªµàª¾àª¨àª—à«€ નથી }}.
+પરવાનગી મેળવેલ {{PLURAL:$3|ફાઇલ પà«àª°àª•àª¾àª° છે|ફાઇલ પà«àª°àª•àª¾àª°à«‹ છે}} $2.',
'filetype-missing' => 'ફાઇલને કોઇ વિસà«àª¤àª¾àª° શબà«àª¦ નથી (જેમકે ".jpg").',
'empty-file' => 'તમે ચડાવેલી ફાઈલ ખાલી છે',
'file-too-large' => 'તમે ચડાવેલી ફાઈલ ખૂબ મોટી છે',
@@ -1568,6 +1580,8 @@ HTML નાકà«àª‚ ચકાસો',
'uploadscripted' => 'આ ફાઇલ HTML કે અનà«àª¯ સà«àª•à«àª°à«€àªªà«àªŸ કોડ ધરાવે છે જે વેબ બà«àª°àª¾àª‰àªàª° દà«àªµàª¾àª°àª¾ ભૂલથી ઉપયોગમાં લઇ શકાય છે.',
'uploadvirus' => 'ફાઇલ વાયરસ સંકà«àª°à«àª®àª¿àª¤ છે
વિવરણ : $1',
+'uploadjava' => 'આ ફાઇલ ઠZIP ફાઈલ છે જે Java .class ધરાવે છે.
+Java ફાઇલ ચડાવવાની પરવાનગી નથી, કેમકે તેઓ સà«àª°àª•à«àª·àª¾ તપાસને અવગણી નાખવાની કà«àª·àª®àª¤àª¾ ધરાવે છે.',
'upload-source' => 'સà«àª¤à«àª°à«‹àª¤ ફાઇલ',
'sourcefilename' => 'સà«àª¤à«àª°à«‹àª¤ ફાઇલ નામ',
'sourceurl' => 'સà«àª¤à«àª°à«‹àª¤ URL:',
@@ -1578,10 +1592,6 @@ HTML નાકà«àª‚ ચકાસો',
'watchthisupload' => 'આ પાનાને ધà«àª¯àª¾àª¨àª®àª¾àª‚ રાખો',
'filewasdeleted' => 'આ નામે ફાઇલ ચડાવાઇ હતી અને પછે થી ભૂંસાડી દેવાઇ હતી.
ફરીથી ફાઇલ ચડાવતા પહેલા $1 ચકાસો.',
-'upload-wasdeleted' => "'''ચેતવણી: તમે જે પાનà«àª‚ નવà«àª‚ બનાવવા જઇ રહà«àª¯àª¾àª‚ છો તે પહેલાં દૂર કરવામાં આવà«àª¯à«àª‚ છે.'''
-
-આ પાનà«àª‚ સંપાદિત કરતા પહેલાં ગંભીરતાપૂરà«àªµàª• વિચારજો અને જો તમને લાગે કે આ પાનà«àª‚ ફરી વાર બનાવવà«àª‚ ઉચિત છે, તો જ અહીં ફેરફાર કરજો.
-પાનà«àª‚ હટાવà«àª¯àª¾àª‚ પહેલાનાં બધા ફેરફારોની સૂચિ તમારી અનà«àª•à«‚ળતા માટે અહીં આપી છે:",
'filename-bad-prefix' => "તમે ચડાવેલી ફાઇલનà«àª‚ નામ '''\"\$1\"''' થી શરૂ થાય છે, જેમાં ફાઇલની માહિતી વિષે વરà«àª£àª¨ નથી. લાગે ચે તે ડિજીટલ કેમેરા દà«àªµàª¾àª°àª¾ સામાનà«àª¯ રીતે સà«àªµàª¯àª‚ચાલિત રીતે અપાતà«àª‚ છબીનà«àª‚ નામ છે.
કૃપયા તમે ચડાવેલી ફાઇલ માટે àªàª• વરà«àª£àª¨àª¾àª¤à«àª®àª• નામ આપો.",
'upload-success-subj' => 'ફાઇલ ચડાવ સફળ',
@@ -1606,6 +1616,23 @@ $1',
'upload-unknown-size' => 'અજà«àªžàª¾àª¤ કદ',
'upload-http-error' => ' HTTP તà«àª°à«àªŸàª¿ : $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'ZIP તપાસ કરતી વખતે તà«àª°à«àªŸàª¿ નિરà«àª®àª¾àª£ થઈ',
+'zip-wrong-format' => 'જણાવેલી ફાઇલ ZIP ફાઇલ નથી.',
+'zip-bad' => 'આ ફાઇલોઅ યા તો ખરાબ છે અથવા તો ન વાંચી શકાય àªàªµà«€ ZIP ફાઇલ છે.
+આની સંતોષકારક સà«àª°àª•à«àª·àª¾ તપાસ ન થઈ શકી.',
+'zip-unsupported' => 'આ ZIP ફાઇલ àªàªµàª¾ આયામો વાપરે છે જેને મિડિયા વિકિ નથી સમજતà«àª‚
+સà«àª°àª•à«àª·àª¾ સંબંધી તપાસ સંતોષ પૂરà«àªµàª• નહીં થાય.',
+
+# Special:UploadStash
+'uploadstash' => 'ગà«àªªà«àª¤ ફાઈલ ચડાવો',
+'uploadstash-summary' => 'આ પાનà«àª‚ તે ફાઇલો સà«àª§à«€ પહોંચાડે છે જે ફાઇલો ચડાવાઇ/ચડાવાઇ રહી છે પણ વિકિ પર પà«àª°àª¸àª¿àª¦à«àª§ થવાની બાકી છે. આ ફાઇલ તેને ચડાવનાર સિવાય અનà«àª¯ કોઇ સભà«àª¯àª¨à«‡ દà«àª°àª¶à«àª¯àª®àª¾àª¨ નથી.',
+'uploadstash-clear' => 'ગà«àªªà«àª¤ ફાઈલ સાફ કરો',
+'uploadstash-nofiles' => 'કોઈ ગà«àªªà«àª¤ ફાઈલ નથી',
+'uploadstash-badtoken' => 'તે કારà«àª¯ કરવà«àª‚ નિષà«àª«àª³. કદાચ તમારા ફેરફાર હકà«àª•à«‹ કાલાતિત થયાં છે. ફરી પà«àª°àª¯àª¤à«àª¨ કરો.',
+'uploadstash-errclear' => 'ફાઇલ સાફ સફાઇ અસફળ રહી',
+'uploadstash-refresh' => 'અધà«àª¯àª¤àª¨ ફાઇલ યાદિ',
+
# img_auth script messages
'img-auth-accessdenied' => 'પà«àª°àªµà«‡àª¶ વરà«àªœà«€àª¤',
'img-auth-nopathinfo' => 'પથ માહિતી ગાયબ.
@@ -1689,7 +1716,6 @@ $1',
અહીં [[Special:WhatLinksHere/$2|પà«àª°à«€ યાદી]] મળશે.',
'nolinkstoimage' => 'આ ફાઇલ સાથે કોઇ પાનાં જોડાયેલાં નથી.',
'morelinkstoimage' => 'આ ફાઇલ સાથે જોડાયેલ [[Special:WhatLinksHere/$1|વધૠકડીઓ]] જà«àª“.',
-'redirectstofile' => 'નીચે જણાવેલ {{PLURAL:$1|ફાઇલ|$1 ફાઇલો}} આ ફાઇલ પર વાળેલી છે:',
'duplicatesoffile' => 'નીચે જણાવેલ {{PLURAL:$1|ફાઇલ|$1 ફાઇલો}} આ ફાઇલની નકલ છે. ([[Special:FileDuplicateSearch/$2|વધૠવિગતો]])',
'sharedupload' => 'આ ફાઇલ $1માં આવેલી છે અને શકà«àª¯ છે કે તે અનà«àª¯ પરિયોજનાઓમાં પણ વપરાતી હોય.',
'sharedupload-desc-there' => 'આ ફાઇલ $1નો ભાગ છે અને શકà«àª¯ છે કે અનà«àª¯ પà«àª°àª•àª²à«àªªà«‹àª®àª¾àª‚ પણ વપરાઇ હોય.
@@ -1787,12 +1813,13 @@ $1',
તેના કરતા તેને યોગà«àª¯ તે વિષà«àª¯ સાથે જોડાયેલા હોવા જોઇàª.<br />
આ પાનાને સંદિગà«àª§ વાકà«àª¯à«‹ વાળા પાના તà«àª¯àª¾àª°à«‡ કહી શકાય જà«àª¯àª¾àª°à«‡ તે [[MediaWiki:Disambiguationspage]] નામના ઢાંચા સાથે જોડાયેલા હોય.",
-'doubleredirects' => 'બનણà«àª‚ દિશાનિરà«àª¦à«‡àª¶àª¿àª¤',
-'doubleredirectstext' => 'આ પાનà«àª‚ દિશા નિરà«àª¦à«‡àª¶àª¿àª¤ પાના પર થયેલા દિશા નિરà«àª¦à«‡àª¶àª¿àª¤ પાનાની યાદિ બતાવે છે.
+'doubleredirects' => 'બનણà«àª‚ દિશાનિરà«àª¦à«‡àª¶àª¿àª¤',
+'doubleredirectstext' => 'આ પાનà«àª‚ દિશા નિરà«àª¦à«‡àª¶àª¿àª¤ પાના પર થયેલા દિશા નિરà«àª¦à«‡àª¶àª¿àª¤ પાનાની યાદિ બતાવે છે.
દરેક લિટીમાં પાના પà«àª°àª¥àª® અને દà«àªµà«€àª¤à«€àª¯ દિશા નિરà«àª¦à«‡àª¶àª¨ કà«àª¡à«€ બતાવે છે, તે સિવાય દà«àªµà«€àª¤à«€àª¯ દિશા નિરà«àª¦à«‡àª¶àª¨àª¨à«àª‚ લકà«àª·à«àª¯ પણ બતાવે છે કે મોટે ભાગે મૂળ પાનà«àª‚ હોઇ શકે છેૢ જેના પર પà«àª°àª¥àª® દિશા નિરà«àª¦à«‡àª¶àª¨ લકà«àª·àª¿àª¤ છે. <del>Crossed out</del> લિટીઓ નો ઉતà«àª¤àª° મેળવાયો છે.',
-'double-redirect-fixed-move' => '[[$1]] હટાવી દેવાયà«àª‚ છે.
+'double-redirect-fixed-move' => '[[$1]] હટાવી દેવાયà«àª‚ છે.
હવે તે [[$2]] પરાનિરà«àª¦à«‡àª¶à«€àª¤ છે.',
-'double-redirect-fixer' => 'નિરà«àª¦à«‡àª¶àª¨ સમારનાર',
+'double-redirect-fixed-maintenance' => '[[$1]] થી [[$2]] સà«àª§à«€ બમણા દિશાનિરà«àª¦à«‡àª¶àª¨ સમાકરાયા.',
+'double-redirect-fixer' => 'નિરà«àª¦à«‡àª¶àª¨ સમારનાર',
'brokenredirects' => 'તà«àª°à«àªŸàª• નિરà«àª¦à«‡àª¶àª¨',
'brokenredirectstext' => 'આ નોરà«àª¦à«‡àª¶àª¨ કડી દરà«àª¶àª¾àªµàª¤àª¾ પાના અસà«àª¤àª¿àª¤à«àªµàª®àª¾àª‚ નથી.',
@@ -1869,6 +1896,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|નવà«àª‚ 1|નવા $1}}',
'pager-older-n' => '{{PLURAL:$1|જà«àª¨à«àª‚ 1|જà«àª¨àª¾àª‚ $1}}',
'suppress' => 'દà«àª°à«àª²àª•à«àª·',
+'querypage-disabled' => 'કારà«àª¯ બજવણી ના કારણે આ ખાસ પાનà«àª‚ નિસà«àª•à«àª°à«€àª¯ કરાયà«àª‚ છે.',
# Book sources
'booksources' => 'પà«àª¸à«àª¤àª• સà«àª¤à«àª°à«‹àª¤',
@@ -1987,6 +2015,7 @@ $1',
'noemailtext' => 'આ સભà«àª¯àª વૈધ ઇ-મેલ સરનામà«àª‚ નથી આપà«àª¯à«àª‚.',
'nowikiemailtitle' => 'કોઇ પણ ઇ મેલની રજા નથી',
'nowikiemailtext' => 'અનà«àª¯ સભà«àª¯à«‹ ઇ-મેલ ન મોકલે તેવી આ સભà«àª¯àª¨à«€ પસંદગી છે.',
+'emailusername' => 'સભà«àª¯àª¨à«àª‚ નામ',
'email-legend' => 'અનà«àª¯ {{SITENAME}} સભà«àª¯ નેઈ-મેલ મોકલો',
'emailfrom' => 'પà«àª°à«‡àª·àª•:',
'emailto' => 'પà«àª°àª¤àª¿:',
@@ -2011,10 +2040,8 @@ $1',
'watchlistanontext' => 'તમારી ધà«àª¯àª¾àª¨àª¸à«‚ચિની વસà«àª¤à«àª“ જોવા અને ફેરફાર કરવા $1 કરો',
'watchnologin' => 'પà«àª°àªµà«‡àª¶ કરેલ નથી',
'watchnologintext' => 'ધà«àª¯àª¾àª¨àª¸à«‚ચિમાં ફેરફારાકરવા તમે પà«àª°àªµà«‡àª¶ [[Special:UserLogin|logged in]] કરેલો હોવો જરૂરી છે.',
-'addedwatch' => 'ધà«àª¯àª¾àª¨àª¸à«‚ચિમાં ઉમેરવામાં આવà«àª¯à«àª‚ છે',
'addedwatchtext' => 'પાનà«àª‚ "[[:$1]]" તમારી [[Special:Watchlist|ધà«àª¯àª¾àª¨àª¸à«‚ચિ]]માં ઉમેરાઈ ગયà«àª‚ છે.
ભવિષà«àª¯àª®àª¾àª‚ આ પાના અને તેનાં સંલગà«àª¨ ચરà«àªšàª¾àª¨àª¾àª‚ પાનામાં થનારા ફેરફારોની યાદી તà«àª¯àª¾àª‚ આપવામાં આવશે અને આ પાનà«àª‚ [[Special:RecentChanges|તાજેતરમાં થયેલા ફેરફારોની યાદી]]માં ઘાટા અકà«àª·àª°à«‡ જોવા મળશે, જેથી આપ સહેલાઇથી તેને અલગ તારવી શકો.',
-'removedwatch' => 'ધà«àª¯àª¾àª¨àª¸à«‚ચિમાંથી કાઢી નાંખà«àª¯à«àª‚ છે',
'removedwatchtext' => '"[[:$1]]" શિરà«àª·àª• હેઠળનà«àª‚ પાનà«àª‚ [[Special:Watchlist|તમારી ધà«àª¯àª¾àª¨àª¸à«‚ચિમાંથી]] કાઢી નાંખવામાં આવà«àª¯à«àª‚ છે.',
'watch' => 'ધà«àª¯àª¾àª¨ માં રાખો',
'watchthispage' => 'આ પાનà«àª‚ ધà«àª¯àª¾àª¨àª®àª¾àª‚ રાખો',
@@ -2067,13 +2094,13 @@ wiki: $PAGEEDITOR_WIKI
તમારો મિતà«àª° {{SITENAME}} સૂચના પà«àª°àª•à«àª°àª¿àª¯àª¾
--
-તમારી ધà«àª¯àª¾àª¨àª¸à«‚ચિ ના વિકà«àª²à«àªª ગોઠવણ માટે આ જà«àª“ {{fullurl:{{#special:Watchlist}}/edit}}
+તમારી ધà«àª¯àª¾àª¨àª¸à«‚ચિ ના વિકà«àª²à«àªª ગોઠવણ માટે આ જà«àª“ {{canonicalurl:{{#special:EditWatchlist}}}}
ધà«àª¯àª¾àª¨àª¸à«‚ચિમાંથી વિષà«àª¯ હટાવવા , આ જà«àª“
$UNWATCHURL
મંતવà«àª¯à«‹ અને આગળની મદદ માટે
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'પાનà«àª‚ હટાવો',
@@ -2089,7 +2116,7 @@ $UNWATCHURL
કૃપા કરી મંજૂરી આપો કે, આપ આમ કરવા ચાહો છો, આપ આના સરા-નરસા પરિણામોથી વાકેફ છો, અને આપ આ કૃતà«àª¯ [[{{MediaWiki:Policy-url}}|નીતિ]]ને અનà«àª°à«‚પ જ કરી રહà«àª¯àª¾àª‚ છો.',
'actioncomplete' => 'કામ પૂરà«àª‚ થઈ ગયà«àª‚',
'actionfailed' => 'કારà«àª¯ અસફળ',
-'deletedtext' => '"<nowiki>$1</nowiki>" દૂર કરવામાં આવà«àª¯à«àª‚ છે.
+'deletedtext' => '"$1" દૂર કરવામાં આવà«àª¯à«àª‚ છે.
તાજેતરમાં દૂર કરેલા લેખોની વિગત માટે $2 જà«àª“.',
'deletedarticle' => 'હટાવવામાં આવેલા "[[$1]]"',
'suppressedarticle' => 'છà«àªªàª¾àªµà«‡àª²àª¾ "[[$1]]"',
@@ -2153,7 +2180,7 @@ Deleting it may disrupt database operations of {{SITENAME}};',
'protect_expiry_invalid' => 'સમાપà«àª¤àª¿àª¨à«‹ સમય માનà«àª¯ નથી.',
'protect_expiry_old' => 'સમાપà«àª¤àª¿àª¨à«‹ સમય ભૂતકાળમાં છે.',
'protect-unchain-permissions' => 'આગળના સંરકà«àª·àª£ પà«àª°àª¤àª¿àª¬àª‚ધ વિકલà«àªª મà«àª•à«àª¤ કરો',
-'protect-text' => "અહિં તમે પાના '''<nowiki>$1</nowiki>'''નà«àª‚ સà«àª°àª•à«àª·àª¾ સà«àª¤àª° જોઈ શકો છો અને તેમાં ફેરફાર પણ કરી શકશો.",
+'protect-text' => "અહિં તમે પાના '''$1'''નà«àª‚ સà«àª°àª•à«àª·àª¾ સà«àª¤àª° જોઈ શકો છો અને તેમાં ફેરફાર પણ કરી શકશો.",
'protect-locked-blocked' => "જà«àª¯àª¾àª°à«‡ પાના પર રોક લગાવેલી હોય તà«àª¯àª¾àª°à«‡ તેનà«àª‚ સà«àª°àª•à«àª·àª¾ સà«àª¤àª° બદલાવી ન શકાય.
'''$1''' પાનાની હાલની સà«àª°àª•à«àª·àª¾ ગોઠવણી આપેલી છે",
'protect-locked-dblock' => 'માહિતી સંચ બંધ હોવાથી સંરકà«àª·àª£ સà«àª¤àª° બદલી નહીં શકાયà«
@@ -2307,13 +2334,14 @@ Clicking '''''{{int:undeletereset}}''''' will clear the comment field and all ch
'whatlinkshere-filters' => 'ચાળણી',
# Block/unblock
+'block' => 'સભà«àª¯ પર પà«àª°àª¤àª¿àª¬àª‚ધ મà«àª•à«‹',
+'unblock' => 'સભà«àª¯ પરનો પà«àª°àª¤àª¿àª¬àª‚ધ હટાવો',
'blockip' => 'સભà«àª¯ પર પà«àª°àª¤àª¿àª¬àª‚ધ મà«àª•à«‹',
'blockip-title' => 'સભà«àª¯ પર પà«àª°àª¤àª¿àª¬àª‚ધ મà«àª•à«‹',
'blockip-legend' => 'સભà«àª¯ પર પà«àª°àª¤àª¿àª¬àª‚ધ મà«àª•à«‹',
'blockiptext' => 'કોઇ ચોકà«àª•àª¸ IP સરનામà«àª‚ કે સભà«àª¯ ના લેખન યોગદાન પર પà«àª°àª¤àª¿àª¬àª‚ધ મà«àª•àªµàª¾ નીચેનà«àª‚ ફોરà«àª® વાપરો.
તેનો ઉપયોગ માતà«àª° ભાંગફોડિયા પà«àª°àªµà«ƒàª¤à«àª¤àª¿àª“ને રોકવા અને [[{{MediaWiki:Policy-url}}|policy]] અનà«àª¸àª¾àª° જ હોવી જોઇàª.
કારણનà«àª‚ ખાનà«àª‚ અવશà«àª¯ ફરશો (દા.ત. અમà«àª• ભાંગફોડ કરાયેલ પાનà«àª‚)',
-'ipaddress' => 'IP સરનામà«àª‚:',
'ipadressorusername' => 'IP સરનામà«àª‚ અથવા સભà«àª¯àª¨àª¾àª®:',
'ipbexpiry' => 'કાલાતિત',
'ipbreason' => 'કારણ:',
@@ -2326,7 +2354,6 @@ Clicking '''''{{int:undeletereset}}''''' will clear the comment field and all ch
** તà«àª°àª¾àª¸àª¦àª¾àª¯àª• વરà«àª¤àª¨
** ઘણા ખાતાઓનà«àª‚ સાથે શોષણ
** અસà«àªµà«€àª•àª¾àª°à«àª¯ સભà«àª¯ નામ',
-'ipbanononly' => 'માતà«àª° બેનામી સભà«àª¯à«àª¨à«‡ છà«àªªàª¾àªµà«‹',
'ipbcreateaccount' => 'ખાતા ખોલવા પર પà«àª°àª¤àª¿àª¬àª‚ધ',
'ipbemailban' => 'સભà«àª¯àª¨àª¾ ઇ-મેલ મોકલવા પર પà«àª°àª¤àª¿àª¬àª‚ધ મૂકો',
'ipbenableautoblock' => 'આ સભà«àª¯ દà«àªµàª¾àª°àª¾ વપરાયેલ IP સરનામા પર અને તત-પશà«àªšà«àª¯àª¾àª¤ વપરાયેલ IP સરનામા ને સà«àªµàª¯àª‚ચાલિત રીતે રોક લગાવો',
@@ -2337,12 +2364,12 @@ Clicking '''''{{int:undeletereset}}''''' will clear the comment field and all ch
'ipbotherreason' => 'અનà«àª¯/વધારાનà«àª‚ કારણ:',
'ipbhidename' => 'ફેરફારો અને યાદિમાંથી સભà«àª¯ નામ છà«àªªàª¾àªµà«‹',
'ipbwatchuser' => 'આ સભà«àª¯àª¨àª¾ સભà«àª¯ અને ચરà«àªšàª¾ પાના જà«àª“',
-'ipballowusertalk' => 'આ સભà«àª¯ પà«àª°àª¤àª¿àª¬àª‚ધિત હોય તà«àª¯àª¾àª°à«‡ પણ ફેરફારા કરવાની રજા આપો',
'ipb-change-block' => 'આ પà«àª°àª£àª¾àª²à«€ સાથે સભà«àª¯àª¨à«‡ ફરી પà«àª°àª¤àª¿àª¬àª‚ધિત કરો',
'badipaddress' => 'અવૈધ IP સરનામà«àª‚',
'blockipsuccesssub' => 'સફળ પà«àª°àª¤àª¿àª¬àª‚ધ મà«àª•àª¾àª¯à«‹',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] પરા રોક લગાવાઈ છે<br />
રોક લગાવેલ સભà«àª¯à«‹àª¨à«€ યાદિ [[Special:IPBlockList|IP block list]].',
+'ipb-blockingself' => 'તમે પોતાના પર પà«àª°àª¤àª¿àª¬àª‚ધ મà«àª•àªµàª¾ જાઓ છો! શà«àª‚ તમે સાચેજમાં આ કરવા માગો છો?',
'ipb-edit-dropdown' => 'પà«àª°àª¤àª¿àª¬àª‚ધ કારણોમાં ફેરફાર કરો',
'ipb-unblock-addr' => '$1 પરનો પà«àª°àª¤àª¿àª¬àª‚ધ ઉઠાવો',
'ipb-unblock' => 'સભà«àª¯àª¨àª¾àª® કે IP સરનામà«àª‚ અપà«àª°àª¤àª¿àª¬àª‚ધિત કરો.',
@@ -2353,16 +2380,14 @@ Clicking '''''{{int:undeletereset}}''''' will clear the comment field and all ch
'ipusubmit' => 'આપà«àª°àª¤àª¿àª¬àª‚ધન હટાવો',
'unblocked' => '[[User:$1|$1]] પà«àª°àª¤àª¿àª¬àª‚ધિત કરાયા',
'unblocked-id' => ' $1 નો પà«àª°àª¤àª¿àª¬àª‚ધ હટાવાયો',
+'blocklist' => 'પà«àª°àª¤àª¿àª¬àª‚ધિત સભà«àª¯à«‹ ના નામ',
'ipblocklist' => 'પà«àª°àª¤àª¿àª¬àª‚ધિત IP સરનામા અને સભà«àª¯à«‹àª¨à«€ યાદી',
'ipblocklist-legend' => 'પà«àª°àª¤àª¿àª¬àª‚ધિત સભà«àª¯ શોધો',
-'ipblocklist-username' => 'સભà«àª¯àª¨àª¾àª® કે IP સરનામà«àª‚:',
-'ipblocklist-sh-userblocks' => '$1 ખાતા પર પà«àª°àª¤àª¿àª¬àª‚ધ',
-'ipblocklist-sh-tempblocks' => '$1 હંગામી પà«àª°àª¤àª¿àª¬àª‚ધની યાદિ',
-'ipblocklist-sh-addressblocks' => ' $1 àªàª•àª¾àª®àª¾àª¤à«àª° IP પà«àª°àª¤àª¿àª¬àª‚ધન',
+'blocklist-target' => 'લકà«àª·à«àª¯',
+'blocklist-reason' => 'કારણ',
'ipblocklist-submit' => 'શોધો',
'ipblocklist-localblock' => 'સà«àª¥àª¾àª¨à«€àª¯ પà«àª°àª¤àª¿àª¬àª‚ધ',
'ipblocklist-otherblocks' => 'અનà«àª¯ {{PLURAL:$1|પà«àª°àª¤àª¿àª¬àª‚ધન|પà«àª°àª¤àª¿àª¬àª‚ધનો}}',
-'blocklistline' => '$1, $2 પà«àª°àª¤àª¿àª¬àª‚ધ $3 ($4)',
'infiniteblock' => 'અનિશà«àªšàª¿àª¤',
'expiringblock' => '$1 તારીખે $2 વાગà«àª¯à«‡ કાલાતીત થયà«àª‚',
'anononlyblock' => 'માતà«àª° અનામી',
@@ -2387,7 +2412,7 @@ Clicking '''''{{int:undeletereset}}''''' will clear the comment field and all ch
'reblock-logentry' => '[[$1]] ની પà«àª°àª¤àª¿àª¬àª‚ધ વિકલà«àªªà«‹ બદલà«àª¯àª¾ જે નો કલાતિત સમય છે $2 $3',
'blocklogtext' => 'આ સભà«àª¯à«‹ પર રોક લગાવવા અને હટાવવા સંબંધિત યાદિ છે.
સà«àªµàª¯àª‚ચાલિત રીતે રોક લગાવાયેલ IP સરનામાની યાદિ અહીં નથી આપી.
-હાલમાં પà«àª°àªµàª°à«àª¤àª®àª¾àª¨ રોક ની યાદિ અહીં જà«àª“ [[Special:IPBlockList|IP block list]].',
+હાલમાં પà«àª°àªµàª°à«àª¤àª®àª¾àª¨ રોક ની યાદિ અહીં જà«àª“ [[Special:BlockList|IP block list]].',
'unblocklogentry' => '$1 પરનો પà«àª°àª¤àª¿àª¬àª‚ધ ઉઠાવà«àª¯à«‹',
'block-log-flags-anononly' => 'માતà«àª° અજà«àªžàª¾àª¤ સભà«àª¯',
'block-log-flags-nocreate' => 'ખાતà«àª‚ ખોલવા પર પà«àª°àª¤àª¿àª¬àª‚ધ છે',
@@ -2401,10 +2426,10 @@ Clicking '''''{{int:undeletereset}}''''' will clear the comment field and all ch
'ipb_expiry_temp' => 'સંતાડેલા સભà«àª¯àª¨àª¾àª® પà«àª°àª¤àª¿àª¬àª‚ધનો કાયમી જ હોવા જોઇàª.',
'ipb_hide_invalid' => 'આ પાનાને છà«àªªàª¾àªµàªµà«‹ સંભવ નથી તેમાં ઘણા બધાં ફેરફારો છે',
'ipb_already_blocked' => ' "$1" પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે',
-'ipb-needreblock' => '== પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત ==
-$1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
+'ipb-needreblock' => '$1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
તમારે આ સેટીંગ બદલવી છે?',
'ipb-otherblocks-header' => 'અનà«àª¯ {{PLURAL:$1|પà«àª°àª¤àª¿àª¬àª‚ધન|પà«àª°àª¤àª¿àª¬àª‚ધનો}}',
+'unblock-hideuser' => 'તમે આ સભà«àª¯ પરનો પà«àª°àª¤àª¿àª¬àª‚ધ નહીં હટાવી શકો, કેમ કે આ સભà«àª¯ નà«àª‚ નામ છà«àªªàª¾àª¯à«‡àª²à«àª‚ છે.',
'ipb_cant_unblock' => 'તૃટિ પà«àª°àª¤àª¿àª¬àª‚ધિત ID $1 ન મળà«àª¯à«‹.
તેપહેલેથી અપà«àª°àª¤àª¿àª¬àª‚ધિત કરાયà«àª‚ હોઇ શકે',
'ipb_blocked_as_range' => 'તà«àª°à«àªŸàª¿: IP સરનામà«àª‚ $1 પર સીધી રોક નથી લગાવાઇ આથી તેના પર રોક ન હટાવી શકાય.
@@ -2570,7 +2595,7 @@ $1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
'allmessagesdefault' => 'મૂળ સંદેશ',
'allmessagescurrent' => 'વરà«àª¤àª®àª¾àª¨ દસà«àª¤àª¾àªµà«‡àªœ',
'allmessagestext' => 'આ મિડિયાવિકિ નામ સà«àª¥àª³àª®àª¾àª‚ આવેલ પà«àª°àª£àª¾àª²à«€àªœàª¨àª¿àª¤ સંદેશાની યાદà«àª‡ આ મà«àªœàª¬ છે.
-કૃપયા [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] અને [http://translatewiki.net translatewiki.net]ની મà«àª²àª¾àª•àª¾àª¤ લો જો ત મિડિયાયાવિકિના સà«àª¥àª¾àª¨àª¿àª¯ કરણમાં મદદરૂપ થવા ઇચà«àª›àª¤àª¾ હોવ.',
+કૃપયા [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] અને [//translatewiki.net translatewiki.net]ની મà«àª²àª¾àª•àª¾àª¤ લો જો ત મિડિયાયાવિકિના સà«àª¥àª¾àª¨àª¿àª¯ કરણમાં મદદરૂપ થવા ઇચà«àª›àª¤àª¾ હોવ.',
'allmessagesnotsupportedDB' => "આ પાનà«àª‚ ન વાપરી શકાશે કેમકે '''\$wgUseDatabaseMessages''' નિષà«àª•à«àª°à«€àª¯ કરાયà«àª‚ છે",
'allmessages-filter-legend' => 'ચાળણી',
'allmessages-filter' => 'સà«àª¥àª¾àª¨à«€àª¯àª•àª°àª£ સà«àª¥àª¿àª¤àª¿ દà«àªµàª¾àª°àª¾ ચાળો',
@@ -2713,9 +2738,7 @@ $1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
'tooltip-summary' => 'ટૂંક સારાંશ ઉમેરો',
# Metadata
-'nodublincore' => 'સરà«àªµàª° માટે Dublin Core RDF metadata નિષà«àª•à«àª°à«€àª¯ કરાયો.',
-'nocreativecommons' => 'આ સરà«àªµàª° માટે કલાકૃતિ Commons RDF metadata નિષà«àª•à«àª°à«€àª¯ કરાયો.',
-'notacceptable' => 'તમારા ગà«àª°àª¾àª¹àª• સમજી શકે તે રીતે વિકિ માહિતી નહીં આપી શકે',
+'notacceptable' => 'તમારા ગà«àª°àª¾àª¹àª• સમજી શકે તે રીતે વિકિ માહિતી નહીં આપી શકે',
# Attribution
'anonymous' => '{{SITENAME}} ના અâ€àªœà«àªžàª¾àª¤ {{PLURAL:$1|સભà«àª¯|સભà«àª¯à«‹}}',
@@ -2739,31 +2762,8 @@ $1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
'spam_blanking' => 'બધા ફેરફારોમાં $1 પર કડી હતી, આને હટાવી દેવામાં આવે છે',
# Info page
-'infosubtitle' => 'પાના વિષે માહિતી',
-'numedits' => 'ફેરફારોની સંખà«àª¯àª¾ (લેખ): $1',
-'numtalkedits' => 'ફેરફારોની સંખà«àª¯àª¾ (ચરà«àªšàª¾àª¨à«àª‚ પાનà«àª‚): $1',
-'numwatchers' => 'નીરીકà«àª·àª•à«‹àª¨à«€ સંખà«àª¯àª¾ : $1',
-'numauthors' => 'લેખકોની સંખà«àª¯àª¾ (પાનà«àª‚): $1',
-'numtalkauthors' => 'લેખકોની સંખà«àª¯àª¾ (ચરà«àªšàª¾ પાનà«àª‚): $1',
-
-# Math options
-'mw_math_png' => 'PNGને હમેંશા પરત કરો',
-'mw_math_simple' => ' જો સરળ હોય તો HTML અનà«àª¯àª¥àª¾ PNG',
-'mw_math_html' => 'જો સરળ હોય તો HTML અનà«àª¯àª¥àª¾ PNG',
-'mw_math_source' => 'આને શબà«àª¦ રહેવા દો (ટેકà«àª¸à«àªŸ બà«àª°àª¾àª‰àªàª°)',
-'mw_math_modern' => 'અતà«àª¯àª¾àª§à«àª¨àª¿àª• બà«àª°àª¾àª‰àªàª°à«‹ માટે ભલામણ યોગà«àª¯',
-'mw_math_mathml' => ' MathML શકà«àª¯ હોય તો (પà«àª°àª¯à«‹àª—ાતà«àª®àª•)',
-
-# Math errors
-'math_failure' => 'પદચà«àª›à«‡àª¦ અસફળ',
-'math_unknown_error' => 'અજà«àªžàª¾àª¤ તà«àª°à«àªŸàª¿',
-'math_unknown_function' => 'અજà«àªžàª¾àª¤ ફંકà«àª¶àª¨',
-'math_lexing_error' => 'લેખન કà«àª°à«àª® / વિધી તà«àª°à«àªŸàª¿',
-'math_syntax_error' => 'સૂતà«àª° લેખન તà«àª°à«àªŸàª¿',
-'math_image_error' => 'PNG રૂપાંતરણ નિષà«àª«àª³; latex અને dvipng (or dvips + gs + convert) બરાબર ચડાવાયà«àª‚ છે કે કેમ તે ચકાસો',
-'math_bad_tmpdir' => 'હંગામી ગણિત ડીરેકà«àªŸàª°à«€ લખી કે રચી નહીં શકાય.',
-'math_bad_output' => 'ઉતà«àª¤àª°à«€àª¯ ગણિત ડીરેકà«àªŸàª°à«€ લખી કે રચી નહીં શકાય.',
-'math_notexvc' => 'ચલાવી શકાય તેવી texvc ગાયબ ; આને ચડાવવા math/README જà«àª“.',
+'pageinfo-header-edits' => 'કરેલા ફેરફાર',
+'pageinfo-subjectpage' => 'પૃષà«àª ',
# Patrolling
'markaspatrolleddiff' => 'નિરીકà«àª·à«€àª¤ અંકિત કરો',
@@ -2808,7 +2808,6 @@ $1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
'file-nohires' => '<small>આથી વધૠઆવરà«àª¤àª¨ ઉપલબà«àª§ નથી.</small>',
'svg-long-desc' => 'SVG ફાઇલ, માતà«àª° $1 × $2 પીકà«àª¸àª², ફાઇલનà«àª‚ કદ: $3',
'show-big-image' => 'મહતà«àª¤àª® આવરà«àª¤àª¨',
-'show-big-image-thumb' => '<small>આ પà«àª°à«àªµàª¾àªµàª²à«‹àª•àª¨àª¨à«àª‚ પરિમાણ: $1 × $2 પીકà«àª¸àª²</small>',
'file-info-gif-looped' => 'આવરà«àª¤àª¨ (લà«àªª)',
'file-info-gif-frames' => ' $1 {{PLURAL:$1|છબી|છબીઓ}}',
'file-info-png-looped' => 'આવરà«àª¤àª¨',
@@ -2848,7 +2847,13 @@ $1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'પહોળાઈ',
@@ -2863,13 +2868,11 @@ $1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
'exif-ycbcrpositioning' => 'Y અને C સà«àª¥àª¾àª¨àª¾àª‚તરણ',
'exif-xresolution' => 'આડà«àª‚ ઘનતà«àªµ',
'exif-yresolution' => 'ઊભà«àª‚ ઘનતà«àªµ',
-'exif-resolutionunit' => 'X અને Y અકà«àª·àª¨àª¾ ચિતà«àª° ઘનતà«àªµàª¨à«‹ (રેસોલà«àª¯à«‚શન) àªàª•àª®',
'exif-stripoffsets' => 'ચિતà«àª° સંબંધિત માહિતીનà«àª‚ સà«àª¥àª¾àª¨',
'exif-rowsperstrip' => 'દરેક પટà«àªŸà«€àª®àª¾àª‚ હરોળની સંખà«àª¯àª¾',
'exif-stripbytecounts' => 'સંકà«àªšàª¿àª¤ પટà«àªŸà«€àª®àª¾àª‚ બાઈટની સંખà«àª¯àª¾',
'exif-jpeginterchangeformat' => 'JPEG SOI નો ફણગો',
'exif-jpeginterchangeformatlength' => 'JPEG માહિતીની બાઇટà«àª¸',
-'exif-transferfunction' => 'સà«àª¥àª³àª¾àª‚તર કારà«àª¯',
'exif-whitepoint' => 'ધવલ બિંદૠરંગ તીવà«àª°àª¤àª¾',
'exif-primarychromaticities' => 'મૂળ રંગોની રંગછટા',
'exif-ycbcrcoefficients' => 'રંગ અવકાશ પરિવરà«àª¤àª¨ ગરà«àª­ અચળાંક',
@@ -2888,7 +2891,6 @@ $1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
'exif-compressedbitsperpixel' => 'ચિતà«àª° સરખામણી મોડ',
'exif-pixelydimension' => 'ચિતà«àª° માટે વૈધ પહોળાઇ',
'exif-pixelxdimension' => 'ચિતà«àª°àª¨à«€ વૈધ ઊàªàªšàª¾àªˆ',
-'exif-makernote' => 'ઉતà«àªªàª¾àª¦àª•àª¨à«€ નોંધ',
'exif-usercomment' => 'સભà«àª¯àª¨à«€ ટિપà«àªªàª£à«€',
'exif-relatedsoundfile' => 'સંબંધિત શà«àª°àª¾àªµà«àª¯ ફાઈલો',
'exif-datetimeoriginal' => 'નિરà«àª®àª¿àª¤à«€àª¨à«‹ સમય અને તારીખ',
@@ -2902,7 +2904,6 @@ $1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
'exif-exposureprogram' => 'પà«àª°àª•àª¾àª¶àª¾àª—મ પà«àª°à«‹àª—à«àª°àª¾àª®',
'exif-spectralsensitivity' => 'રંગપટલ સંવેદના',
'exif-isospeedratings' => 'ISO àªàª¡àªª કà«àª°à«àª®àª¾àª‚ક',
-'exif-oecf' => 'દà«àª°àª¸à«àªŸàª¿ ઇલેકà«àªŸà«àª°à«‹àª¨à«€àª• રૂપાંતરણ અચળાંક',
'exif-shutterspeedvalue' => 'દà«àªµàª¾àª°àª¨à«€ àªàª¡àªª',
'exif-aperturevalue' => 'છીદà«àª° માપ',
'exif-brightnessvalue' => 'તેજસà«àªµà«€àª¤àª¾',
@@ -2915,7 +2916,6 @@ $1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
'exif-focallength' => 'કાંચનà«àª‚ કેનà«àª¦à«àª°à«€àª¯ લંબાઇ (ફોકલ લેંથ)',
'exif-subjectarea' => 'વિષà«àª¯àªµàª¸à«àª¤à« કà«àª·à«‡àª¤à«àª°',
'exif-flashenergy' => 'àªàª¬àª•àª¾àª°àª¾àª¨à«€ શકà«àª¤àª¿',
-'exif-spatialfrequencyresponse' => 'અવકાશી કંપન પà«àª°àª¤à«àª¯à«àª¤à«àª¤àª°',
'exif-focalplanexresolution' => 'કેનà«àª¦à«àª°à«€àª¤ X ફલક નà«àª‚ ઘનતà«àªµ',
'exif-focalplaneyresolution' => 'કેનà«àª¦à«àª°à«€àª¤ Y ફલક નà«àª‚ ઘનતà«àªµ',
'exif-focalplaneresolutionunit' => 'કેંનà«àª¦à«àª°à«€àª¤ ફલક ઘનતà«àªµàª¨à«‹ àªàª•àª®',
@@ -2924,7 +2924,6 @@ $1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
'exif-sensingmethod' => 'સંવેદનાની રીત',
'exif-filesource' => 'ફાઇલ સà«àª¤à«àª°à«‹àª¤',
'exif-scenetype' => 'દà«àª°àª¶à«àª¯ પà«àª°àª•àª¾àª°',
-'exif-cfapattern' => 'CFA ભાત',
'exif-customrendered' => 'સà«àª¥àª¾àª¨à«€àª¯ ચિતà«àª° પà«àª°àª•à«àª°àª¿àª¯àª¾',
'exif-exposuremode' => 'પà«àª°àª•àª¾àª¶àª¾àª—મ પà«àª°àª•àª¾àª°',
'exif-whitebalance' => 'ધવલ સમતોલન',
@@ -2969,7 +2968,9 @@ $1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
'exif-gpsareainformation' => 'GPS કà«àª·à«‡àª¤à«àª°àª¨à«àª‚ નામ',
'exif-gpsdatestamp' => 'GPS તારીખ',
'exif-gpsdifferential' => 'GPS ફેરફારનો સà«àª§àª¾àª°à«‹',
+'exif-jpegfilecomment' => 'JPEG ફાઈલ પરની ટીપà«àªªàª£à«€',
'exif-objectname' => 'લઘૠશીરà«àª·àª•',
+'exif-writer' => 'લેખક',
# EXIF attributes
'exif-compression-1' => 'અસંકોચિત',
@@ -3116,15 +3117,13 @@ $1 પહેલેથી પà«àª°àª¤àª¿àª¬àª‚ધિત છે.
# External editor support
'edit-externally' => 'બાહà«àª¯ સોફà«àªŸàªµà«‡àª° વાપરીને આ ફાઇલમાં ફેરફાર કરો',
-'edit-externally-help' => '(વધૠમાહિતિ માટે [http://www.mediawiki.org/wiki/Manual:External_editors સેટ-અપ સà«àªšàª¨àª¾àª“] જà«àª“)',
+'edit-externally-help' => '(વધૠમાહિતિ માટે [//www.mediawiki.org/wiki/Manual:External_editors સેટ-અપ સà«àªšàª¨àª¾àª“] જà«àª“)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'બધા',
-'imagelistall' => 'બધા',
-'watchlistall2' => 'બધા',
-'namespacesall' => 'બધા',
-'monthsall' => 'બધા',
-'limitall' => 'બધા',
+'watchlistall2' => 'બધા',
+'namespacesall' => 'બધા',
+'monthsall' => 'બધા',
+'limitall' => 'બધા',
# E-mail address confirmation
'confirmemail' => 'તમારા ઇ-મેઇલ સરનામાની પà«àª·à«àªŸàª¿ કરો',
@@ -3256,7 +3255,7 @@ $1',
'watchlistedit-normal-legend' => 'ધà«àª¯àª¾àª¨àª¸à«‚ચિમાંથી આશીરà«àª·àª•à«‹ કાઢી નાખો',
'watchlistedit-normal-explain' => 'તમારી ધà«àª¯àª¾àª¨àª¸à«‚ચિના શીરà«àª·àª•à«‹ અહીં બતાવà«àª¯àª¾àª‚ છે.
કોઇ શીરà«àª·àª• હતાવવા માટે , તેની બાજà«àª‚ નà«àª‚ ખાનà«àª‚ અંકિત કરો , અને "{{int:Watchlistedit-normal-submit}}"ના પર કà«àª²àª¿àª• કરો.
-તમે [[Special:Watchlist/raw|edit the raw list]]માં બદલાવ પણ કરી શકો.',
+તમે [[Special:EditWatchlist/raw|edit the raw list]]માં બદલાવ પણ કરી શકો.',
'watchlistedit-normal-submit' => 'શીરà«àª·àª•à«‹ હટાવો',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 શીરà«àª·àª• |$1 શીરà«àª·àª•à«‹ }} ને તમારી ધà«àª¯àª¾àª¨àª¸à«‚ચિમાંથી હટાવાયા:',
'watchlistedit-raw-title' => 'કાચી ધà«àª¯àª¾àª¨àª¸à«‚ચિમાં ફેરફાર કરો',
@@ -3264,7 +3263,7 @@ $1',
'watchlistedit-raw-explain' => 'તમારી ધà«àª¯àª¾àª¨àª¸à«‚ચિના શીરà«àª·àª•à«‹ અહીં બતાવà«àª¯àª¾àª‚ છે , તેમાં વસà«àª¤à« ઓ ઉમેરીઠઅને હટાવીને તેમાં ફેરફાર કરી શકાય છે;
àªàª• શીરà«àª·àª• પà«àª°àª¤àª¿ લિટી.
જà«àª¯àª¾àª°à«‡ કારà«àª¯ સમાપà«àª¤ થાય તà«àª¯àª¾àª°à«‡, અહીં કà«àª²àª¿àª• કરો "{{int:Watchlistedit-raw-submit}}".
-તેમે [[Special:Watchlist/edit|use the standard editor]] પણ કરી શકો.',
+તેમે [[Special:EditWatchlist|use the standard editor]] પણ કરી શકો.',
'watchlistedit-raw-titles' => 'શિરà«àª·àª•:',
'watchlistedit-raw-submit' => 'ધà«àª¯àª¾àª¨àª¸à«‚ચિ અધà«àª¯àª¤àª¨ બનાવો',
'watchlistedit-raw-done' => 'તમારી ધà«àª¯àª¾àª¨àª¾ સૂચિ અધà«àª¯àª¤àª¨ કરાઈ.',
@@ -3281,33 +3280,33 @@ $1',
'duplicate-defaultsort' => '\'\'\'ચેતવણી:\'\'\' કી "$2" આગળનામૂળે પà«àª°àª¸à«àª¥àª¾àªªàª¿àª¤ કà«àª°àª®àª¿àª•àª¾àªµàª°à«àª—ીકરણ કી "$1"નà«àª‚ સà«àª¥àª¾àª¨ લઈ લેશે..',
# Special:Version
-'version' => 'આવૃતà«àª¤àª¿',
-'version-extensions' => 'પà«àª°àª¸à«àª¥àª¾àªªàª¿àª¤ વિસà«àª¤àª¾àª°àª•à«‹',
-'version-specialpages' => 'ખાસ પાનાં',
-'version-parserhooks' => 'પદચà«àª›à«‡àª¦ ખૂંટો',
-'version-variables' => 'સહગà«àª£àª•à«‹',
-'version-skins' => 'ફલક',
-'version-other' => 'અનà«àª¯',
-'version-mediahandlers' => 'દà«àª°àª¶à«àª¯àª¶à«àª°àª¾àªµà«àª¯ માધà«àª¯àª®àª¨àª¾ ધારક',
-'version-hooks' => 'ખૂંટા',
-'version-extension-functions' => 'વિસà«àª¤àª¾àª°àª• કારà«àª¯',
-'version-parser-extensiontags' => 'પદચà«àªšà«‡àª¦ વિસà«àª¤àª¾àª°àª• નાકા',
-'version-parser-function-hooks' => 'પદચà«àª›à«‡àª¦ કારà«àª¯ ખૂંટા',
-'version-skin-extension-functions' => 'ફલક વિસà«àª¤àª¾àª°àª• કારà«àª¯',
-'version-hook-name' => 'ખૂંટાનà«àª‚ નામà«',
-'version-hook-subscribedby' => 'દà«àªµà«àª°àª¾àª°àª¾ લાભાનà«àªµà«€àª¤',
-'version-version' => '(આવૃતà«àª¤àª¿ $1)',
-'version-license' => 'પરવાનો',
-'version-poweredby-credits' => "આ વિકિ '''[http://www.mediawiki.org/ MediaWiki]''' દà«àªµàª¾àª°àª¾ ચાલે છે, પà«àª°àª•àª¾àª¶àª¨àª¾àª§àª¿àª•àª¾àª° © 2001-$1 $2.",
-'version-poweredby-others' => 'અનà«àª¯à«‹',
-'version-license-info' => 'મિડિયાવિકિ àªàª• મà«àª•à«àª¤ સોફà«àªŸàªµà«‡àª° છે. તમે તેનà«àª‚ પà«àª¨àªƒàªµàª¿àª¤àª°àª£ કરી શકો છો અને/અથવા તેને the Free Software Foundation દà«àªµàª¾àª°àª¾ પà«àª°àª•àª¾àª¶àª¿àª¤ GNU General Public License હેઠળ તેના સંસà«àª•àª°àª£ 2 ને કે તે પછીના સંસà«àª•àª°àª£ મઠારી શકો છો .
+'version' => 'આવૃતà«àª¤àª¿',
+'version-extensions' => 'પà«àª°àª¸à«àª¥àª¾àªªàª¿àª¤ વિસà«àª¤àª¾àª°àª•à«‹',
+'version-specialpages' => 'ખાસ પાનાં',
+'version-parserhooks' => 'પદચà«àª›à«‡àª¦ ખૂંટો',
+'version-variables' => 'સહગà«àª£àª•à«‹',
+'version-antispam' => 'સà«àªªà«‡àª® સંરકà«àª·àª£',
+'version-skins' => 'ફલક',
+'version-other' => 'અનà«àª¯',
+'version-mediahandlers' => 'દà«àª°àª¶à«àª¯àª¶à«àª°àª¾àªµà«àª¯ માધà«àª¯àª®àª¨àª¾ ધારક',
+'version-hooks' => 'ખૂંટા',
+'version-extension-functions' => 'વિસà«àª¤àª¾àª°àª• કારà«àª¯',
+'version-parser-extensiontags' => 'પદચà«àªšà«‡àª¦ વિસà«àª¤àª¾àª°àª• નાકા',
+'version-parser-function-hooks' => 'પદચà«àª›à«‡àª¦ કારà«àª¯ ખૂંટા',
+'version-hook-name' => 'ખૂંટાનà«àª‚ નામà«',
+'version-hook-subscribedby' => 'દà«àªµà«àª°àª¾àª°àª¾ લાભાનà«àªµà«€àª¤',
+'version-version' => '(આવૃતà«àª¤àª¿ $1)',
+'version-license' => 'પરવાનો',
+'version-poweredby-credits' => "આ વિકિ '''[//www.mediawiki.org/ MediaWiki]''' દà«àªµàª¾àª°àª¾ ચાલે છે, પà«àª°àª•àª¾àª¶àª¨àª¾àª§àª¿àª•àª¾àª° © 2001-$1 $2.",
+'version-poweredby-others' => 'અનà«àª¯à«‹',
+'version-license-info' => 'મિડિયાવિકિ àªàª• મà«àª•à«àª¤ સોફà«àªŸàªµà«‡àª° છે. તમે તેનà«àª‚ પà«àª¨àªƒàªµàª¿àª¤àª°àª£ કરી શકો છો અને/અથવા તેને the Free Software Foundation દà«àªµàª¾àª°àª¾ પà«àª°àª•àª¾àª¶àª¿àª¤ GNU General Public License હેઠળ તેના સંસà«àª•àª°àª£ 2 ને કે તે પછીના સંસà«àª•àª°àª£ મઠારી શકો છો .
મિડિયા વિકિ ને તે આશાથી વિતરીત કરાયà«àª‚ છે કે તે લોકોને ઉપયોગિ થશે કોઇ વોરેંટી વિના અથવા કોઇ કારà«àª¯ સંબધી વેચાણકે તેની યોગà«àª¯àª¤àª¾ બદà«àª¦àª² ખાતà«àª°à«€ સિવાય. વધારે માહિતે માટે GNU General Public Licens જà«àª“.
-આ પà«àª°à«‹àª—à«àª°àª¾àª® સાથે તમને [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU General Public License]ની કૉપી મળી હશે. જો ન મલી હોય તો અહીં લખશો the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA કે [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html ઓનલાઇન વાંચો ].',
-'version-software' => 'બેસાડેલા સોફà«àªŸàªµà«‡àª°',
-'version-software-product' => 'ઉતà«àªªàª¾àª¦',
-'version-software-version' => 'આવૃતà«àª¤àª¿',
+આ પà«àª°à«‹àª—à«àª°àª¾àª® સાથે તમને [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU General Public License]ની કૉપી મળી હશે. જો ન મલી હોય તો અહીં લખશો the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA કે [//www.gnu.org/licenses/old-licenses/gpl-2.0.html ઓનલાઇન વાંચો ].',
+'version-software' => 'બેસાડેલા સોફà«àªŸàªµà«‡àª°',
+'version-software-product' => 'ઉતà«àªªàª¾àª¦',
+'version-software-version' => 'આવૃતà«àª¤àª¿',
# Special:FilePath
'filepath' => 'ફાઈલ પથ',
@@ -3317,19 +3316,22 @@ $1',
ચિતà«àª°à«‹àª¨à«‡ તેમના પૂરà«àª£ ઘનતà«àªµ સાથે બતાવાય છે, અનà«àª¯ ફાઈલો તેમને તેમના સંલગà«àª¨ પà«àª°à«‹àª—à«àª°àª¾àª® દà«àªµàª¾àª°àª¾ સીધી ખોલવામાં આવશે.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'નકલ ફાઇલ શોધો',
-'fileduplicatesearch-legend' => 'નકલ શોધો',
-'fileduplicatesearch-filename' => 'ફાઇલ નામ',
-'fileduplicatesearch-submit' => 'શોધ',
-'fileduplicatesearch-info' => '$1 × $2 પીકà«àª¸àª², ફાઇલનà«àª‚ કદ: $3, MIME પà«àª°àª•àª¾àª°: $4',
-'fileduplicatesearch-result-1' => 'ફાઇલ "$1" ની સમાન કોઇ નકલ નથી.',
-'fileduplicatesearch-result-n' => '"$1" ફાઇલની તેની સમાન {{PLURAL:$2|1 નકલ |$2 નકલો }} છે.',
+'fileduplicatesearch' => 'નકલ ફાઇલ શોધો',
+'fileduplicatesearch-summary' => 'હેશ કિંમત પર આધારિત આબેહૂબ ફાઇલો શોધો.',
+'fileduplicatesearch-legend' => 'નકલ શોધો',
+'fileduplicatesearch-filename' => 'ફાઇલ નામ',
+'fileduplicatesearch-submit' => 'શોધ',
+'fileduplicatesearch-info' => '$1 × $2 પીકà«àª¸àª², ફાઇલનà«àª‚ કદ: $3, MIME પà«àª°àª•àª¾àª°: $4',
+'fileduplicatesearch-result-1' => 'ફાઇલ "$1" ની સમાન કોઇ નકલ નથી.',
+'fileduplicatesearch-result-n' => '"$1" ફાઇલની તેની સમાન {{PLURAL:$2|1 નકલ |$2 નકલો }} છે.',
+'fileduplicatesearch-noresults' => ' "$1" નામ ધરાવતી કોઇ ફાઇલ ન મળી',
# Special:SpecialPages
'specialpages' => 'ખાસ પાનાં',
'specialpages-note' => '----
-* સામાનà«àª¯ ખાસ પાનાઓ.
-* <strong class="mw-specialpagerestricted">Restricted special pages.</strong>',
+* નિયમિત ખાસ પાનાં.
+* <span class="mw-specialpagerestricted">સીમિત ખાસ પાનાં.</span>
+* <span class="mw-specialpagecached">માતà«àª°-સંગà«àª°àª¹àª¿àª¤ ખાસ પાનાં.</span>',
'specialpages-group-maintenance' => 'સમારકામ અહેવાલ',
'specialpages-group-other' => 'અનà«àª¯ ખાસ પાનાઓ',
'specialpages-group-login' => 'પà«àª°àªµà«‡àª¶ / નોંધણી કરો',
diff --git a/languages/messages/MessagesGv.php b/languages/messages/MessagesGv.php
index 3791b923..fb358f24 100644
--- a/languages/messages/MessagesGv.php
+++ b/languages/messages/MessagesGv.php
@@ -141,8 +141,7 @@ $messages = array(
'listingcontinuesabbrev' => 'tooil.',
'index-category' => 'Duillagyn er ayndagh',
'noindex-category' => 'Duillagyn nagh vel er ayndagh',
-
-'mainpagetext' => "'''Ta MediaWiki currit stiagh nish.'''",
+'broken-file-category' => 'Duillagyn as kianglaghyn brishtey coadan oc',
'about' => 'Mychione',
'article' => 'Duillag chummal',
@@ -191,10 +190,10 @@ $messages = array(
'searcharticle' => 'Gow',
'history' => 'Shennaghys ny duillag',
'history_short' => 'Shennaghys',
-'info_short' => 'Oayllys',
'printableversion' => 'Lhieggan clou',
'permalink' => 'Kiangley yiarn',
'print' => 'Clou',
+'view' => 'Lhaih',
'edit' => 'Reagh',
'create' => 'Croo',
'editthispage' => 'Reagh yn duillag shoh',
@@ -202,6 +201,7 @@ $messages = array(
'delete' => 'Scryss',
'deletethispage' => 'Scryss y duillag shoh',
'undelete_short' => 'Jee-scryss {{PLURAL:$1|$1 caghlaa|$1 chaghlaa|$1 chaghlaa|$1 caghlaaghyn}}',
+'viewdeleted_short' => 'Jeeagh er {{PLURAL:$1|$1 caghlaa scryssit magh|$1 chaghlaa scryssit magh|$1 chaghlaa scryssit magh|$1 caghlaaghyn scryssit magh}}',
'protect' => 'Coadee',
'protect_change' => 'caghlaa',
'protectthispage' => 'Coadee yn duillag shoh',
@@ -272,6 +272,8 @@ $messages = array(
'toc' => 'Cummal',
'showtoc' => 'taishbyn',
'hidetoc' => 'follee',
+'collapsible-collapse' => 'Follee',
+'collapsible-expand' => 'Taishbyn',
'viewdeleted' => 'Jeeagh er $1?',
'site-rss-feed' => 'Scoltey RSS $1',
'site-atom-feed' => 'Scoltey Atom $1',
@@ -295,28 +297,27 @@ $messages = array(
'nosuchspecialpage' => 'Cha nel y duillag er lheh shoh ayn',
# General errors
-'error' => 'Marranys',
-'missing-article' => 'Cha row teks duillag, lhisagh ve er gheddyn lesh yn ennym "$1" $2, feddynit ec y stoyr-fysseree.
+'error' => 'Marranys',
+'missing-article' => 'Cha row teks duillag, lhisagh ve er gheddyn lesh yn ennym "$1" $2, feddynit ec y stoyr-fysseree.
Dy cadjin, she y chooish da\'n taghyrt shen na jannoo shelg er kiangley caghlaa ass date ny kiangley shennaghys dys duillag va scrysst.
Mannagh vel eh y chooish, foddee dy vel doghan \'sy chooid vog er ve feddynit magh ayd.<br />
Cur coontey jeh da [[Special:ListUsers/sysop|reireyder]], as gow notey jeh\'n URL.',
-'missingarticle-rev' => '(caghlaa#: $1)',
-'internalerror' => 'Marranys ynveanagh',
-'internalerror_info' => 'Marranys yn-veanagh: $1',
-'badarticleerror' => 'Cha nod oo jannoo yn obbyr shen er y duillag shoh.',
-'badtitle' => 'Drogh-ennym',
-'badtitletext' => "Va marranys ayn bentyn rish ennym ny duillag v'ou shirrey. Foddee dy row eh follym ny gyn vree, ny kianglt dy moal myr kiangley eddyr-wiki. Foddee dy vel cowraghyn 'syn ennym nagh nod oo jannoo ymmyd jeu ayns enmyn.",
-'viewsource' => 'Jeeagh er bun',
-'viewsourcefor' => 'dy $1',
-'actionthrottled' => 'Obbyr er ny phlooghey',
-'actionthrottledtext' => "Myr saase noi-spam, cha nod oo jannoo yn obbyr shoh rouyr keayrtyn ayns tammylt beg, as t'ou er roshtyn yn earroo smoo. Jean eab noa dy gerrid, my saillt.",
-'protectedpagetext' => "Ta'n duillag shoh fo ghlass, as cha nod oo eshyn y reaghey.",
-'viewsourcetext' => 'Foddee oo jeeagh as jean aascreeuyn er bun ny duillag shoh:',
-'namespaceprotected' => "Cha nel kiart ayd duillagyn 'sy reamys '''$1''' y reaghey.",
-'customcssjsprotected' => 'Cha nel kiart ayd y duillag shoh y reaghey. Ta tosheeaghtyn persoonagh ymmydeyr elley ayn.',
-'ns-specialprotected' => 'Cha nod oo reaghey duillagyn er lheh.',
+'missingarticle-rev' => '(caghlaa#: $1)',
+'internalerror' => 'Marranys ynveanagh',
+'internalerror_info' => 'Marranys yn-veanagh: $1',
+'badarticleerror' => 'Cha nod oo jannoo yn obbyr shen er y duillag shoh.',
+'badtitle' => 'Drogh-ennym',
+'badtitletext' => "Va marranys ayn bentyn rish ennym ny duillag v'ou shirrey. Foddee dy row eh follym ny gyn vree, ny kianglt dy moal myr kiangley eddyr-wiki. Foddee dy vel cowraghyn 'syn ennym nagh nod oo jannoo ymmyd jeu ayns enmyn.",
+'viewsource' => 'Jeeagh er bun',
+'viewsourcefor' => 'dy $1',
+'actionthrottled' => 'Obbyr er ny phlooghey',
+'actionthrottledtext' => "Myr saase noi-spam, cha nod oo jannoo yn obbyr shoh rouyr keayrtyn ayns tammylt beg, as t'ou er roshtyn yn earroo smoo. Jean eab noa dy gerrid, my saillt.",
+'protectedpagetext' => "Ta'n duillag shoh fo ghlass, as cha nod oo eshyn y reaghey.",
+'viewsourcetext' => 'Foddee oo jeeagh as jean aascreeuyn er bun ny duillag shoh:',
+'namespaceprotected' => "Cha nel kiart ayd duillagyn 'sy reamys '''$1''' y reaghey.",
+'ns-specialprotected' => 'Cha nod oo reaghey duillagyn er lheh.',
# Login and logout pages
'welcomecreation' => '== Failt ort, $1! ==
@@ -349,7 +350,7 @@ Ny jean jarrood dty [[Special:Preferences|hosheeaghtyn {{SITENAME}}]] y chaghlaa
'nosuchuser' => 'Cha nel ymmydeyr ayn lesh yn ennym "$1".<br />
Ta case ny lettyryn ayns enmyn ymmydeyr dendeaysagh.<br />
Cur streean er dty lettraghey, ny [[Special:UserLogin/signup|croo coontys noa]].',
-'nosuchusershort' => 'Cha nel ymmydeyr lesh yn ennym "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Cha nel ymmydeyr ayn lesh yn ennym "$1".
Cur streean er dty lettraghey.',
'nouserspecified' => 'Shegin diu ennym ymmydeyr y honraghey.',
'wrongpassword' => 'Va fockle arrey neuchiart screeuit eu.<br />
@@ -370,7 +371,7 @@ Myr eiyrtys, cha nod keayrtee lesh yn enmys IP shoh ny smoo coontyssyn noa y chr
'createaccount-title' => 'Coontys crooit son {{SITENAME}}',
'loginlanguagelabel' => 'Çhengey: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Caghlaa fockle yn arrey',
'resetpass_header' => 'Caghlaa fockle arrey yn choontys',
'oldpassword' => 'Shenn-ockle yn arrey:',
@@ -380,6 +381,12 @@ Myr eiyrtys, cha nod keayrtee lesh yn enmys IP shoh ny smoo coontyssyn noa y chr
'resetpass_forbidden' => 'Cha nod focklyn arrey y arraghey er {{SITENAME}}',
'resetpass-submit-loggedin' => 'Caghlaa fockle yn arrey',
+# Special:PasswordReset
+'passwordreset-username' => "Dt'ennym ymmydeyr:",
+'passwordreset-email' => 'Enmys post-L:',
+'passwordreset-emailelement' => 'Ennym ymmydeyr: $1
+Fockle arrey shallidagh: $2',
+
# Edit page toolbar
'bold_sample' => 'Clou trome',
'bold_tip' => 'Clou trome',
@@ -391,8 +398,6 @@ Myr eiyrtys, cha nod keayrtee lesh yn enmys IP shoh ny smoo coontyssyn noa y chr
'extlink_tip' => 'Kiangley mooie (cooiney roie-ockle http://)',
'headline_sample' => 'Teks y chione-linney',
'headline_tip' => 'Kione-linney corrym 2',
-'math_sample' => 'Cur formley stiagh ayns shoh',
-'math_tip' => 'Formley maddaghtoil (LaTeX)',
'nowiki_sample' => 'Cur stiagh teks gyn cummey ayns shoh',
'nowiki_tip' => 'Ny chur tastey da cummey wikiagh',
'image_tip' => 'Coadan jingit',
@@ -580,7 +585,9 @@ My t'ou uss son ronsaghey dagh cooid (as shen goaill stiagh duillagyn resooney,
'changepassword' => 'Fockle yn arrey y cheaghley',
'prefs-skin' => 'Crackan',
'skin-preview' => 'Roie-haishbynys',
+'prefs-beta' => 'Troyn as greieyn beta',
'prefs-datetime' => 'Date as am',
+'prefs-labs' => 'Troyn as greieyn prowaltagh',
'prefs-personal' => 'Gruaie yn ymmydeyr',
'prefs-rc' => "Caghlaaghyn s'noa",
'prefs-watchlist' => 'Rolley arrey',
@@ -910,10 +917,8 @@ Ta duillagyn er [[Special:Watchlist|dty rolley arrey]] ayns '''clou trome'''.",
'watchlist' => 'My rolley arrey',
'mywatchlist' => 'My rolley arrey',
'watchnologin' => 'Cha nel oo loggit stiagh',
-'addedwatch' => 'Currit rish y rolley arrey',
'addedwatchtext' => "Va'n duillag \"[[:\$1]]\" currit rish dty [[Special:Watchlist|rolley arrey]].<br />
Bee caghlaaghyn jeant er y duillag shoh as e ghuillag resoonaght ry-akin ayns y rolley shoh, as bee '''clou trome''' er ayns rolley ny [[Special:RecentChanges|caghlaaghyn s'noa]].",
-'removedwatch' => 'Gowit ass y rolley arrey',
'removedwatchtext' => 'Va\'n duillag "[[:$1]]" goit veih dty [[Special:Watchlist|rolley arrey]].',
'watch' => 'Freill arrey',
'watchthispage' => 'Freill arrey er y duillag shoh',
@@ -948,17 +953,24 @@ Cur fys er y reagheyder:
post: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Cha bee fograghyn elley er caghlaaghyn elley agh my vel shiu er jeet dys y duillag shen ynrican.
+Cha bee fograghyn elley er caghlaaghyn elley agh my jigys shiu dys y duillag shen ynrican.
Foddee shiu aajeshaghey bratteeyn ny fograghyn ry hoi dagh duillag er dty rolley arrey.
Dty chorys fograghyn caarjoil ec {{SITENAME}}
--
-Dys kiartee dty rolley arrey y chaghlaa, cur keayrt er
-{{fullurl:{{#special:Watchlist}}/edit}}
+
+Dys toshiaghtyn fys post-y y chaghlaa, cur keayrt er
+{{canonicalurl:{{#special:Preferences}}}}
+
+Dys toshiaghtyn dty rolley arrey y chaghlaa, cur keayrt er
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+Dys scryssey duillag ass dty rolley arrey, cur keayrt er
+$UNWATCHURL
Aaveaghey as cooney s\'odjey:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Scryss y duillag',
@@ -971,7 +983,7 @@ Aaveaghey as cooney s\'odjey:
'confirmdeletetext' => 'Ta shiu er-çhee scryssey magh duillag myrane lesh y shennaghys eck.<br />
Feeraghey dy vel eh y çhalee ayd eh y yannoo, dy vel ny scanshyn toiggit ayd, as dy vel oo jannoo eh ayns coardailys rish [[{{MediaWiki:Policy-url}}|y pholasee]].',
'actioncomplete' => 'Obbraghey creaghnit',
-'deletedtext' => 'Ta "<nowiki>$1</nowiki>" scrysst.<br />
+'deletedtext' => 'Ta "$1" scrysst.<br />
Jeeagh er $2 son recortys ny scryssaghyn magh jeianagh.',
'deletedarticle' => '"[[$1]]" scryssit',
'dellogpage' => 'Lioar scryssaghyn magh',
@@ -997,7 +1009,7 @@ Jeeagh er $2 son recortys ny scryssaghyn magh jeianagh.',
'protectexpiry' => 'Jerrey:',
'protect_expiry_invalid' => 'Ta jerrey yn amm gyn vree.',
'protect_expiry_old' => 'Ta jerrey yn amm er ngoll shaghey hannah.',
-'protect-text' => "Foddee oo jeeagh er as arraghey yn rea choadee ayns shoh son y duillag '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Foddee oo jeeagh er as arraghey yn rea choadee ayns shoh son y duillag '''$1'''.",
'protect-locked-access' => "Cha nel kied ec dty choontys dys arraghey cormidyn coadee.<br />
Shoh ny reaghaghyn roie da'n duillag '''$1''':",
'protect-cascadeon' => "Ta'n duillag shoh coadit nish, er y fa dy vel eh goit stiagh {{PLURAL:$1|'sy $1 duillag|'syn $1 duillag| 'sy $1 ghuillag|ayns ny $1 duillagyn}} heese as adsyn fo coadey eiraghtagh. Ga dy nod oo caghlaa keim coadee y ghuillag shoh, cha jean eh bentyn rish y coadey eiraghtagh.",
@@ -1077,7 +1089,6 @@ Shoh ny reaghaghyn roie da'n duillag '''$1''':",
# Block/unblock
'blockip' => 'Glass magh yn ymmydeyr',
'blockip-legend' => 'Glass magh yn ymmydeyr',
-'ipaddress' => 'Enmys IP / ennym ymmydeyr',
'ipadressorusername' => 'Enmys IP ny ennym ymmydeyr:',
'ipbexpiry' => 'Jerrey:',
'ipbreason' => 'Fa:',
@@ -1092,7 +1103,6 @@ Shoh ny reaghaghyn roie da'n duillag '''$1''':",
* Oyr elley
** Ennym ymmydeyryn neuchooie
** Feyshtyn eddyr-wiki',
-'ipbanononly' => 'Glass magh ymmydeyryn neuenmyssit',
'ipbcreateaccount' => 'Crooaght coontys y chumrail',
'ipbsubmit' => 'Glass magh yn ymmydeyr shoh',
'ipbother' => 'Mooad elley am:',
@@ -1101,9 +1111,8 @@ Shoh ny reaghaghyn roie da'n duillag '''$1''':",
'ipbotherreason' => 'Fa elley/tooilley:',
'badipaddress' => 'Enmys IP gyn vree',
'ipblocklist' => 'Ymmydeyryn fo ghlass',
-'ipblocklist-username' => 'Ennym ymmydeyr ny enmys IP:',
+'blocklist-reason' => 'Fa:',
'ipblocklist-submit' => 'Ronsee',
-'blocklistline' => '$1, $3 er ny g(h)lassey magh ec $2 ($4)',
'infiniteblock' => 'neuyerrinagh',
'createaccountblock' => 'crooaght coontys glasst',
'blocklink' => 'glassey magh',
@@ -1244,15 +1253,6 @@ T'eh lhiggey da oyr y chur 'sy ghiare-choontey.",
'others' => 'sleih elley',
'siteusers' => '{{PLURAL:$2|Ymmydeyr|Ymmydeyryn}} ec {{SITENAME}} $1',
-# Info page
-'infosubtitle' => 'Oayllys da duillag',
-
-# Math options
-'mw_math_png' => 'Jean PNG dagh ooilley hraa',
-
-# Math errors
-'math_syntax_error' => 'Co-ordrail marranagh',
-
# Patrol log
'patrol-log-auto' => '(seyr-obbragh)',
'patrol-log-diff' => 'caghlaa $1',
@@ -1262,12 +1262,11 @@ T'eh lhiggey da oyr y chur 'sy ghiare-choontey.",
'nextdiff' => 'Y caghlaa ny snoa →',
# Media information
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|duillag|duillagyn}}',
-'file-info-size' => '$1 × {{PLURAL:$2|$2 pixel|$2 phixel|$2 phixel|$2 pixelyn}}, mooadys y choadan: $3, sorçh MIME: $4',
-'file-nohires' => '<small>Cha nel jeeskeaylley ny smoo ry-gheddyn.</small>',
-'svg-long-desc' => 'coadan SVG, $1 × {{PLURAL:$2|$2 pixel|$2 phixel|$2 phixel|$2 pixelyn}} dy ennymagh, mooadys y choadan: $3',
-'show-big-image' => 'Jeeskeaylley ymlane',
-'show-big-image-thumb' => '<small>Mooadys y roie-haishbynys shoh: $1 × {{PLURAL:$2|$2 pixel|$2 phixel|$2 phixel|$2 pixelyn}}</small>',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|duillag|duillagyn}}',
+'file-info-size' => '$1 × {{PLURAL:$2|$2 pixel|$2 phixel|$2 phixel|$2 pixelyn}}, mooadys y choadan: $3, sorçh MIME: $4',
+'file-nohires' => '<small>Cha nel jeeskeaylley ny smoo ry-gheddyn.</small>',
+'svg-long-desc' => 'coadan SVG, $1 × {{PLURAL:$2|$2 pixel|$2 phixel|$2 phixel|$2 pixelyn}} dy ennymagh, mooadys y choadan: $3',
+'show-big-image' => 'Jeeskeaylley ymlane',
# Special:NewFiles
'newimages' => 'Laaragh coadanyn noa',
@@ -1288,7 +1287,7 @@ Kianglaghyn eiyrtyssagh erbee er yn linney shoh, t'ad goll er loaghtey myr lhimm
My vel y coadan ceaghlit veih'n chummey bunneydagh, foddee nagh beagh mynphoyntyn ennagh cohoilshaghey yn coadan ceaghlit.",
'metadata-expand' => 'Taishbyn ny sonreeaghtyn sheeynt',
'metadata-collapse' => 'Follee ny sonreeaghtyn sheeynt',
-'metadata-fields' => "Bee magheryn metafysseree EXIF er y rolley 'sy çhaghteraght shoh currit er taishbynys duillag y jalloo nar ta taabyl ny metafysseree fillit.<br />
+'metadata-fields' => 'Ny magheryn metafysseree jalloo heese, hed ad er goaill stiagh er duillag taishbyney jalloo tra ta taabyl ny metafysseree fillit.<br />
Bee adsyn elley follit dy seyr-obbragh.<br />
* make
* model
@@ -1296,7 +1295,13 @@ Bee adsyn elley follit dy seyr-obbragh.<br />
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Lheead',
@@ -1304,7 +1309,6 @@ Bee adsyn elley follit dy seyr-obbragh.<br />
'exif-ycbcrpositioning' => 'Soie Y as C',
'exif-xresolution' => 'Cruinnys co-chruinnagh',
'exif-yresolution' => 'Cruinnys pontreilagh',
-'exif-resolutionunit' => 'Unnid chruinnys X as Y',
'exif-imagedescription' => 'Ennym y chochaslys',
'exif-make' => 'Jeantagh y hamraig',
'exif-artist' => 'Ughtar',
@@ -1350,14 +1354,12 @@ Bee adsyn elley follit dy seyr-obbragh.<br />
# External editor support
'edit-externally' => 'Reaghey yn coadan shoh lesh sheeyntagh mooie',
-'edit-externally-help' => 'Jeeagh er [http://www.mediawiki.org/wiki/Manual:External_editors saraghyn soiaghey seose] son tooilley oayllys.',
+'edit-externally-help' => 'Jeeagh er [//www.mediawiki.org/wiki/Manual:External_editors saraghyn soiaghey seose] son tooilley oayllys.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'yn clane',
-'imagelistall' => 'yn clane',
-'watchlistall2' => 'yn clane',
-'namespacesall' => 'yn clane',
-'monthsall' => 'yn clane',
+'watchlistall2' => 'yn clane',
+'namespacesall' => 'yn clane',
+'monthsall' => 'yn clane',
# Delete conflict
'recreate' => 'Aachroo',
diff --git a/languages/messages/MessagesHa.php b/languages/messages/MessagesHa.php
index 08116137..4cbbdb89 100644
--- a/languages/messages/MessagesHa.php
+++ b/languages/messages/MessagesHa.php
@@ -246,7 +246,7 @@ Tana yiyuwa yana da harafi ko haruffa da ba su karɓuwa cikin kanu.",
'createaccountreason' => 'Dalili:',
'mailmypassword' => 'Aiken kalmar sirri ta Imel',
-# Password reset dialog
+# Change password dialog
'resetpass-submit-cancel' => 'Soke',
# Edit page toolbar
@@ -260,8 +260,6 @@ Tana yiyuwa yana da harafi ko haruffa da ba su karɓuwa cikin kanu.",
'extlink_tip' => 'MahaÉ—i mai zuwa waje (a tuna da zagin http://)',
'headline_sample' => 'Sunan kai',
'headline_tip' => 'Kan mataki na 2',
-'math_sample' => 'Shigar da haÉ—i a nan',
-'math_tip' => 'HaÉ—in lissafi (LaTeX)',
'nowiki_sample' => 'shigar da É—anyen rubutu a nan',
'nowiki_tip' => 'Kawar da sufantawar Wiki',
'image_tip' => 'Ƙumsashen fayil',
@@ -502,10 +500,8 @@ Ku gwada tare da amfani da \"all:\" don bincikar duka shafunan (har da shafunan
# Watchlist
'watchlist' => 'Jerina na bin sawu',
'mywatchlist' => 'Jerina na bin sawu',
-'addedwatch' => 'An daÉ—a a cikin jerin bin sawu',
'addedwatchtext' => "An daÉ—a shafin \"[[:\$1]]\" a cikin [[Special:Watchlist|jerinku na bin sawu]].
A nan ne kuma za a yi rajistan dukkan sauye-sauye ga shafin ko shafinsa na muhawara, kuma sunan shafin zai kasance '''mai gwaɓi''' a cikin [[Special:RecentChanges|jerin sauye-sauyen baya-bayan nan]] don sauƙin gani.",
-'removedwatch' => 'An fitar daga cikin jerin bin sawu',
'removedwatchtext' => 'An fitar da shafin "[[:$1]]" daga [[Special:Watchlist|jerinku na bin sawu]].',
'watch' => 'Bin sawu',
'watchthispage' => 'Bin sawun wannan shafi',
@@ -523,7 +519,7 @@ A nan ne kuma za a yi rajistan dukkan sauye-sauye ga shafin ko shafinsa na muhaw
'delete-legend' => 'Soke',
'confirmdeletetext' => "Kuna kan hanyar soke wani shafi tare da duk tarihinsa. Ku tabbatar lalle kuna son yin hakan, tare da cewa kun fahimci sakamakon yin haka, kuma kuna yi ne da la'akari da [[{{MediaWiki:Policy-url}}|manufofi]].",
'actioncomplete' => 'Aiki cikakke',
-'deletedtext' => 'An soke "<nowiki>$1</nowiki>".
+'deletedtext' => 'An soke "$1".
Ku duba $2 ku ga rajistan soke-soke na baya-bayan nan.',
'deletedarticle' => 'an soke "[[$1]]"',
'dellogpage' => 'Rajistan sauye-sauye',
@@ -542,7 +538,7 @@ Ku duba $2 ku ga rajistan soke-soke na baya-bayan nan.',
'protectexpiry' => "Wa'adi:",
'protect_expiry_invalid' => "Lokacin wa'adi bai da tasiri.",
'protect_expiry_old' => "Lokacin wa'adi ya wuce.",
-'protect-text' => "Kuna iya duba tare da sauya matakin kariya na shafin '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Kuna iya duba tare da sauya matakin kariya na shafin '''$1'''.",
'protect-locked-access' => "Akwantinku bai da izinin sauya matakan kariya na shafuna.
Ga dai matakan kariya na yanzu na shafin '''$1''':",
'protect-cascadeon' => 'A yanzu an kiyaye wannan shafi saboda yana cikin {{PLURAL:$1|wannan shafi mai|waÉ—annan shafuna masu}} kariya mai zuzzubowa.
@@ -725,11 +721,10 @@ Tana ba da damar bayyana dalilin soke gyaran.',
'nextdiff' => 'Gyaran gaba →',
# Media information
-'file-info-size' => 'pikisal $1 × $2, girman fayil: $3, irin MIME: $4',
-'file-nohires' => '<small>Babu wata babbar saƙa.</small>',
-'svg-long-desc' => 'Fayil kin SVG, saƙar fikisal $1 x $2, girman fayil: $3',
-'show-big-image' => 'Cikakkar saƙa',
-'show-big-image-thumb' => '<small>Girman wanna rigya-gani: pikisal $1 × $2</small>',
+'file-info-size' => 'pikisal $1 × $2, girman fayil: $3, irin MIME: $4',
+'file-nohires' => '<small>Babu wata babbar saƙa.</small>',
+'svg-long-desc' => 'Fayil kin SVG, saƙar fikisal $1 x $2, girman fayil: $3',
+'show-big-image' => 'Cikakkar saƙa',
# Special:NewFiles
'ilsubmit' => 'Nema',
@@ -755,18 +750,22 @@ Idan an sauya fayil kin, to wasu bayannan na ainahi ba za su fito ba sosai a cik
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Gyara wannan fayil da wani safuwai daban',
-'edit-externally-help' => '(Duba [http://www.mediawiki.org/wiki/Manual:External_editors bayannan shimfiɗawa] don ƙarin bayani)',
+'edit-externally-help' => '(Duba [//www.mediawiki.org/wiki/Manual:External_editors bayannan shimfiɗawa] don ƙarin bayani)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'duka',
-'imagelistall' => 'duka',
-'watchlistall2' => 'duka',
-'namespacesall' => 'duka',
-'monthsall' => 'duka',
+'watchlistall2' => 'duka',
+'namespacesall' => 'duka',
+'monthsall' => 'duka',
# Watchlist editing tools
'watchlisttools-view' => 'Duba sauye-sauyen da suka dace',
diff --git a/languages/messages/MessagesHak.php b/languages/messages/MessagesHak.php
index 546c4bbb..674cc81a 100644
--- a/languages/messages/MessagesHak.php
+++ b/languages/messages/MessagesHak.php
@@ -119,15 +119,6 @@ $messages = array(
'hidden-categories' => '$1-ke Yún-chhòng fûn-lui',
'listingcontinuesabbrev' => 'Chhṳ̀-siuÌk',
-'mainpagetext' => "'''Yí-kîn sṳ̀n-kûng ôn-chông MediaWiki.'''",
-'mainpagedocfooter' => 'chhiáng fóng-mun [http://meta.wikimedia.org/wiki/Help:Contents Yung-fu sú-chhak] yî-khiÌp sá¹³Ì-yung chhá¹³Ì wiki ngiôn-khien ke sin-sitï¼
-
-== NgiÌp-mùn ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki Phi-chṳ sat-thin chhîn-tân]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki Phìn-sòng mun-thì kié-tap]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki fat-phu email chhîn-tân]',
-
'about' => 'Kôan-yî',
'article' => 'Vùn-chông',
'newwindow' => '(chhai sîn sṳ-chhûng chûng tá-khôi)',
@@ -170,7 +161,6 @@ $messages = array(
'history' => 'Vùn-chông liÌt-sá¹³Ì',
'history_short' => 'LiÌt-sá¹³Ì',
'updatedmarker' => 'Ngô song-chhṳ fóng-mun yî-lòi ke siû-kói',
-'info_short' => 'Chṳ̂-liau',
'printableversion' => 'Khó-lieÌt yin-pán',
'permalink' => 'Yún-kiú lièn-kiet',
'print' => 'LieÌt-yin',
@@ -371,7 +361,7 @@ Ngì khó-yî ki-siuÌk yî ngiaÌk-miàng fông-sá¹³t sá¹³Ì-yung {{SITENAME}},
'loginsuccesstitle' => 'Tên-ngiÌp sṳ̀n-kûng',
'loginsuccess' => "'''Ngì hien-chhai yî \"\$1\" ke sṳ̂n-fun tên-ngiÌp {{SITENAME}}.'''",
'nosuchuser' => 'Chhìm-cháu put-to yung-fu "$1". Kiám-chhà ngì-ke piang-siá, feÌt-chá yung ha-mien ke péu-kak kien-liÌp yit-ke sîn chong-ho.',
-'nosuchusershort' => 'Mò-yû yit-ke miàng vi "<nowiki>$1</nowiki>" ke yung-fu. Chhiáng kiám-chhà ngì-ke sû-ngiÌp ke vùn-sá¹³ he-féu yû chho-ngu.',
+'nosuchusershort' => 'Mò-yû yit-ke miàng vi "$1" ke yung-fu. Chhiáng kiám-chhà ngì-ke sû-ngiÌp ke vùn-sá¹³ he-féu yû chho-ngu.',
'nouserspecified' => 'Ngì sî-yeu chá¹³Ì-thin yit-ke yung-fu-miàng.',
'wrongpassword' => 'Ngì sû-ngiÌp ke meÌt-meÌt chho-ngu, chhiáng chai chhá¹³ yit-chhá¹³.',
'wrongpasswordempty' => 'Hàn-mò sû-ngiÌp meÌt-meÌt! chhiáng chhûng-chhá¹³.',
@@ -396,7 +386,7 @@ Ngì khó-yî ki-siuÌk yî ngiaÌk-miàng fông-sá¹³t sá¹³Ì-yung {{SITENAME}},
'createaccount-title' => 'Chhai {{SITENAME}} tsûng-kiên kien-liÌp sîn tsong-ho',
'loginlanguagelabel' => 'Ngî-ngièn: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Kiên-kói meÌt-meÌt',
'resetpass_announce' => 'Ngì he theu-ko yit-ke lìm-sṳ̀ ke fat-sung to email chûng ke chhí-meÌt tên-ngiÌp ke. Yeu vàn-sṳ̀n tên-ngiÌp, ngì pit-sî chhai liá-piên sat-thin yit-ke sîn meÌt-meÌt:',
'resetpass_text' => '<!-- Chhai chhá¹³Ì-chhu kâ-ngiÌp vùn-sá¹³ -->',
@@ -410,6 +400,9 @@ Ngì khó-yî ki-siuÌk yî ngiaÌk-miàng fông-sá¹³t sá¹³Ì-yung {{SITENAME}},
'resetpass-submit-loggedin' => 'Kiên-kói meÌt-meÌt',
'resetpass-submit-cancel' => 'Chhí-sêu',
+# Special:PasswordReset
+'passwordreset-username' => 'Yung-fu-miàng',
+
# Edit page toolbar
'bold_sample' => 'Chhû-thí vùn-sṳ',
'bold_tip' => 'Chhû-thí vùn-sṳ',
@@ -421,8 +414,6 @@ Ngì khó-yî ki-siuÌk yî ngiaÌk-miàng fông-sá¹³t sá¹³Ì-yung {{SITENAME}},
'extlink_tip' => 'Ngoi-phu lièn-kiet (ki-tet http://)',
'headline_sample' => 'Thai-phêu-thì vùn-sṳ',
'headline_tip' => 'Ngi-khiÌp phêu-thì vùn-sá¹³',
-'math_sample' => 'Chhai-chhá¹³Ìchhap-ngiÌp sá¹³-hoÌk kûng-sá¹³t',
-'math_tip' => 'Chhap-ngiÌp sá¹³-hoÌk kûng-sá¹³t (LaTeX)',
'nowiki_sample' => 'Chhai-chhá¹³Ì chhap-ngiÌp fui kak-sá¹³t vùn-sá¹³',
'nowiki_tip' => 'Chhap-ngiÌp fui kak-sá¹³t vùn-sá¹³',
'image_tip' => 'Chhṳ̀m-ngiÌ thù-hiong',
@@ -469,7 +460,7 @@ Yeu kien-chho ke vùn-chông, chhiáng chhai ha-mien ke phiên-cho-khiông chûn
Kó-yèn ngì-he put-séu-sîm to chhá¹³Ì hong-mien, chhá¹³Ìt-chiap tiám-kit ngì hi-khí chûng ke "fì-chón" on-néu fán-fì.',
'anontalkpagetext' => "---- ''Liá-he yit-ke hàn-mò kien-liÌp chong-ho ke ngiaÌk-miàng yung-fu ke tui-fa-hong. Só-yî chá¹³Ì-nèn yung IP thi-tiám lòi lâu kí lièn-loÌk. Ke-IP thi-tiám khó-nèn yù-chhai kí-miàng yung-fu khiung-hióng. Kó-yèn ngì-he yit-miàng ngiaÌk-miàng yung-fu ngin-vì pún-hong song ke phìn-lî kiên ngì mò-kôan, chhiáng [[Special:UserLogin|Chhóng-kien sîn chong-ho feÌt-chá Tên-ngiÌp]] khó-yî phit-miên lòi-yì khì-thâ ngiaÌk-miàng yung-fu ke fun-lon.''",
'noarticletext' => 'Chhá¹³Ì-chông muk-chhièn hàn-mò nui-yùng, ngì khó-yî chhai khì-thâ hong [[Special:Search/{{PAGENAME}}|sêu-chhà chhá¹³Ì-chông phêu-thì]] feÌt-chá [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} phiên-chho chhá¹³Ì-chông].',
-'userpage-userdoesnotexist' => 'Sá¹³Ì-yung-tsá tsong-ho "$1" hàn-mò kien-liÌp.
+'userpage-userdoesnotexist' => 'Sá¹³Ì-yung-tsá tsong-ho "<nowiki>$1</nowiki>" hàn-mò kien-liÌp.
Tshiáng chhai kien-liÌpï¼piên-sip liá-ke vùn-tsông tshièn siên kiám-tshà yit-ha-é.',
'clearyourcache' => "'''Chu-yi:''' Chhai tú-chhùn yî-heu, ngì pit-sî khoai chhái-chhí chhîn-chhù hi-khí chhòi-nèn khon-tó chok-chhut ke kói-pien. '''Mozilla / Firefox / Safari:''' on-tén ''Shift'' chai tiám-kit '' Chhùng-sîn chá¹³Ìn-lî ''(feÌt-chá on-hâ ''Ctrl-Shift-R'', chhai Phìn-kó Mac song on-hâ ''Cmd-Shift-R''); '''IE:''' on-tén ''Ctrl'' chai tiám-kit ''Chhùng-sîn chá¹³Ìn-lî'', feÌt-he on-hâ ''Ctrl-F5''ï¼›'''Konqueror:''' chak sî-yeu tiám-kit ''Chhùng-sîn chá¹³Ìn-lî''; '''Opera:''' yung-fu sî-yeu chhai ''kûng-khí-sat-thin'' chûng vàn-cháng-thi chhîn-chhù ke khoai-chhí.",
'usercssyoucanpreview' => "'''Thì-sṳ:''' Chhai pó-chhùn chhièn chhiáng yung 'hién-sṳ yi-ko' on-néu lòi chhet-chhṳ ngì sîn-ke CSS.",
@@ -678,7 +669,6 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
'changepassword' => 'Kiên-kói meÌt-meÌt',
'prefs-skin' => 'Mien-pán',
'skin-preview' => 'Yi-ko',
-'prefs-math' => 'Sá¹³-hoÌk kûng-sá¹³t',
'datedefault' => 'Yi-sat-chhá¹³Ìt',
'prefs-datetime' => 'Ngit-khì khiÌp sṳ̀-kiên',
'prefs-personal' => 'Yung-fu chṳ̂-liau',
@@ -694,8 +684,6 @@ Tông-tsûng pûn $3 fûng-só ke ngièn-yîn he ''$2''",
'columns' => 'LieÌt-su:',
'searchresultshead' => 'Chhìm-cháu kiet-kó sat-thin',
'resultsperpage' => 'Mî-chông hién-sṳ lièn-kiet su:',
-'contextlines' => 'Mî lièn-kiet hàng-su:',
-'contextchars' => 'Mî-hàng ke sṳ-su:',
'stub-threshold' => 'Tón vùn-chông hién-sṳ kî-pún han-chṳ',
'recentchangesdays' => 'Chui-khiûn kiên-kói chûng ke hién-sṳ ngit-su:',
'recentchangescount' => 'Chui-khiûn kiên-kói chûng ke phiên-siá chúng-su:',
@@ -1072,9 +1060,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlistanontext' => 'Chhiáng $1 yî kiám-sá¹³ feÌt-chá phiên-chho ngì-ke kam-sá¹³ lieÌt-péu.',
'watchnologin' => 'Hàn-mò tên-ngiÌp',
'watchnologintext' => 'Ngì pit-sî siên [[Special:UserLogin|tên-ngiÌp]] chhòi-nèn kiên-kói ngì-ke kam-sá¹³ lieÌt-péu.',
-'addedwatch' => 'Kâ-ngiÌp to kam-sá¹³ lieÌt-péu',
'addedwatchtext' => "Hong-mien \"[[:\$1]]\" yí-kîn pûn kâ-ngiÌp to ngì-ke [[Special:Watchlist|Kam-sá¹³ chhîn-tân]] chûng. Chiông-lòi yû-kôan chhá¹³Ì hong-mien khiÌp khì-thâ thó-lun-hong ke ngim-hò siû-cháng chiông-voi chhai hong-mien lieÌt-chhut, song-chhiá hàn-voi chhai [[Special:RecentChanges|Chui-khiûn ke kiên-kói]] chûng ke '''chhû-thí''' hìn-sá¹³t lieÌt-chhut. Kó-yèn ngì heu-lòi sióng chhiùng hong-mien kam-sá¹³ chhîn-tân chûng chhîn-chhù, hí-khó tiám-kit thô-hòng thiàu-chûng \"thìn-chá¹³Ì kam-sá¹³\" ke lièn-kiet。",
-'removedwatch' => 'Yí-kîn thìn-chá¹³Ì kam-sá¹³',
'removedwatchtext' => 'Vùn-chông "[[:$1]]" yí-kîn chhiùng Ngì kekam-sá¹³ lieÌt-péu mien-chûng yì-chhù.',
'watch' => 'Kam-sá¹³',
'watchthispage' => 'Kam-sṳ pún-chông',
@@ -1107,7 +1093,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'enotif_lastvisited' => 'Kiám-sṳ ngì song-chhṳ fóng-mun heu ke só-yû kiên-kói chhián chhâm-siòng $1.',
'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 {{fullurl:{{#special:Watchlist}}/edit}} chin-yit-phu ke pông-chhu: {{fullurl:{{MediaWiki:Helppage}}}}',
+'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}}}}',
# Delete
'deletepage' => 'Chhù-thet hong-mien',
@@ -1120,7 +1106,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'historywarning' => 'Kín-ko: Ngì chiông-yeu chhù-hi ke chông-nui hàm-yû liÌt-sá¹³Ì:',
'confirmdeletetext' => 'Ngì chiông-voi chhiùng chṳ̂-liau-khu chûng yún-yén chhù-thet yit-ke vùn-chông feÌt-chá thù-chhiong yî-khiÌp liÌt-sá¹³Ì. Chhiáng khok-thin ngì-yeu chin-hàng chhâu-chok, pin liáu-kié heu-kó, thùng-sṳ̀ ngì-ke hàng-vì fù-haÌp [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Chhâu-chok vàn-sṳ̀n',
-'deletedtext' => '"<nowiki>$1</nowiki>" yí-kîn pûn chhù-thet. Chui-khiûn chhù-hi ke ki-liuÌk chhiáng chhâm-siòng $2.',
+'deletedtext' => '"$1" yí-kîn pûn chhù-thet. Chui-khiûn chhù-hi ke ki-liuÌk chhiáng chhâm-siòng $2.',
'deletedarticle' => 'Yí-kîn chhù-thet "[[$1]]"',
'dellogpage' => 'Chhù-chhiang ki-liuÌk',
'dellogpagetext' => 'Yî-ha he chui-khiûn chhù-thet ke ki-liuÌk lieÌt-péu.',
@@ -1156,7 +1142,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'protectexpiry' => 'Chûng-chá¹³Ì sṳ̀-kiên',
'protect_expiry_invalid' => 'Sû-ngiÌp ke chûng-chá¹³Ì sṳ̀-kiên mò-háu.',
'protect_expiry_old' => 'Chûng-chá¹³Ì sṳ̀-kiên yí-kîn ko-hi.',
-'protect-text' => "Ngì khó-yî chhai liá-piên chhùng-siû tui vùn-chông '''<nowiki>$1</nowiki>''' ke pó-fu kip-pheÌt.",
+'protect-text' => "Ngì khó-yî chhai liá-piên chhùng-siû tui vùn-chông '''$1''' ke pó-fu kip-pheÌt.",
'protect-locked-blocked' => "Ngì put-nèn chhai pûn chhà-fûng sṳ̀ kiên-kói pó-fu khiÌp-pheÌt. Yî-ha he '''$1''' hien-sṳ̀ ke pó-fu khiÌp-pheÌt:",
'protect-locked-dblock' => "Chhai chṳ̂-liau-khu só-thin sṳ̀ mò-fap kiên-kói pó-fu khiÌp-pheÌt.
Yî-ha he '''$1''' hien-sṳ̀ ke pó-fu khiÌp-pheÌt:",
@@ -1263,7 +1249,6 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
# Block/unblock
'blockip' => 'chhà-fûng IP thi-tiám',
'blockiptext' => 'Yung ha-mien ke péu-tân kim-chá¹³Ì lòi-chhá¹³ mêu-yit thiÌt-thin IP thi-tiám ke kiên-kói hí-khó-khièn. Chá¹³Ì-yû chhai-vi fòng-chá¹³Ì pho-fái, khiÌp fù-haÌp [[{{MediaWiki:Policy-url}}|Sú-chet]] ke chhìn-khóng hâ chhòi khó chhái-chhí chhá¹³Ì hàng-thung. Chhiáng chhai ha-mien sû-ngiÌp yit-ke khí-thí ke lî-yù (chhiong-he yîn-sut yit-ke pûn-ngìn pho-fái ke hong-mien).',
-'ipaddress' => 'IP thi-tiám',
'ipadressorusername' => 'IP thi-tiám feÌt-he yung-fu-miàng',
'ipbexpiry' => 'Khì-han:',
'ipbreason' => 'Ngièn-yîn:',
@@ -1276,7 +1261,6 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
** Mò-lî ke hàng-vì, kûng-kit/sâu-yéu pheÌt-ngìn
** Lam-yung tô-ke chong-ho
** Put-nèn chiap-su ke yung-fu-miàng',
-'ipbanononly' => 'Chak kim-chá¹³Ì ngiaÌk-mià yung-fu phiên-cho',
'ipbcreateaccount' => 'Chú-chá¹³Ì chhóng-liÌp sîn chong-ho',
'ipbenableautoblock' => 'Chhá¹³-thung chhà-fûng ke-yung-fu sá¹³Ì-yung-ko ke IP thi-tiám',
'ipbsubmit' => 'Chhà-fûng ke-yung-fu',
@@ -1299,7 +1283,6 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
'unblocked-id' => 'Fûng-kim $1 yí-kîn pûn yì-chhù',
'ipblocklist' => 'Pûn fûng IP thi-tiám lieÌt-péu',
'ipblocklist-submit' => 'Chhìm-cháu',
-'blocklistline' => '$1,$2 kim-fûng $3 ($4)',
'infiniteblock' => 'yún-kiú',
'expiringblock' => '$1 $2 to-khì',
'anononlyblock' => 'Han-chá¹³ ngiaÌk-miàng yung-fu.',
@@ -1314,7 +1297,7 @@ Chhiáng chhâm-kháu [[Special:Log/delete|chhù-hi ngit-ki]] lòi chhà-chhut c
'autoblocker' => 'Ngì-ke IP lâu pûn fûng-liáu ke "$1" he yit-yong ke. Fûng-só ngièn-yîn: "$2".',
'blocklogpage' => 'Fûng-só ki-liuÌk',
'blocklogentry' => '"[[$1]]" yí-kîn pûn chhà-fûng $3, chûng-chá¹³Ì sṳ̀-kiên he $2',
-'blocklogtext' => 'Liá-he kôan-yî yung-fu fûng-kim lâu kié-chhù fûng-kim chhâu-chok ke ki-liuÌk. Pûn chhá¹³-thung fûng-kim ke IP thi-tiám mò-yû lieÌt-chhut. Chhiáng chhâm-kháu [[Special:IPBlockList|Pûn chhà-fûng ke IP thi-tiám lâu yung-fu lieÌt-péu]].',
+'blocklogtext' => 'Liá-he kôan-yî yung-fu fûng-kim lâu kié-chhù fûng-kim chhâu-chok ke ki-liuÌk. Pûn chhá¹³-thung fûng-kim ke IP thi-tiám mò-yû lieÌt-chhut. Chhiáng chhâm-kháu [[Special:BlockList|Pûn chhà-fûng ke IP thi-tiám lâu yung-fu lieÌt-péu]].',
'unblocklogentry' => '"$1" yí-kîn pûn kié-fûng',
'block-log-flags-anononly' => 'Han-chá¹³ ngiaÌk-miàng ke yung-fu',
'block-log-flags-nocreate' => 'Kim-chá¹³Ì chhá¹³Ì IP/Yung-fu kien-liÌp sîn chong-fu',
@@ -1414,7 +1397,7 @@ Nang-ngoi ngì hí-khó li-yung lièn-kiet thô-chhut tóng-on, yì-yi ngì hí-
'allmessagesdefault' => 'Yi-sat ke vùn-sṳ',
'allmessagescurrent' => 'Tông-chhièn ke vùn-sṳ',
'allmessagestext' => 'Liá-piên lieÌt-chhut só-yû hí-khó thin-chá¹³ ke ne-thúng kie-mien.
-Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => 'Ne-thúng kie-mien kûng-yung chhu-yî kôan-pit chong-thai (wgUseDatabaseMessages)。',
# Thumbnails
@@ -1527,9 +1510,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'monobook.js' => '/* Yí-kîn put-chai sá¹³Ì-yung; chhiáng-yung [[MediaWiki:common.js]] */',
# Metadata
-'nodublincore' => 'Dublin Core RDF ngièn su-kí chhai ke-fuÌk-vu hi put-hí-khó sá¹³Ì-yung.',
-'nocreativecommons' => 'Creative Commons RDF ngièn su-kí chhai ke-fuÌk-vu hi put-hí-khó sá¹³Ì-yung.',
-'notacceptable' => 'Ke-mióng-chham fuÌk-vu-hi put-nèn thì-kiûng ngì-ke hak-fu tôn-nèn sá¹³t-pheÌt ke su-kí kak-sá¹³t.',
+'notacceptable' => 'Ke-mióng-chham fuÌk-vu-hi put-nèn thì-kiûng ngì-ke hak-fu tôn-nèn sá¹³t-pheÌt ke su-kí kak-sá¹³t.',
# Attribution
'anonymous' => '{{SITENAME}} ke ngiaÌk-miàng yung-fu',
@@ -1549,33 +1530,6 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'spam_reverting' => 'Fî-fuÌk to put pâu-hàm lièn-kiet chá¹³ $1 ke chui-khiûn pán-pún',
'spam_blanking' => 'Só-yû pâu-hàm lièn-kiet chṳ $1 ke siû-thin, chhîn-v',
-# Info page
-'infosubtitle' => 'Thiàu-muk sêu-sit',
-'numedits' => 'Phiên-chho su-liòng (vùn-chông): $1',
-'numtalkedits' => 'Phiên-chho su-liòng (Thó-lun-chông): $1',
-'numwatchers' => 'Kam-sṳ-chá su-muk: $1',
-'numauthors' => 'Chok-chá su-liòng (vùn-chông): $1',
-'numtalkauthors' => 'Chok-chá su-liòng (thó-lun-chông): $1',
-
-# Math options
-'mw_math_png' => 'Yún-yén sá¹³Ì-yung PNG thù-chhiong',
-'mw_math_simple' => 'Kó-yèn he kién-tân ke kûng-sá¹³t sá¹³Ì-yung HTML, feu-chet sá¹³Ì-yung PNG thù-chhiong',
-'mw_math_html' => 'Chhin khó-nèn chhái-yung HTML, feÌt-he yung PNG thù-tóng',
-'mw_math_source' => 'Hién-sá¹³ TeX thoi-ho (sá¹³Ì-yung vùn-sá¹³ hi-khí sṳ̀)',
-'mw_math_modern' => 'Chhûi-chien sîn-pán hi-khí sá¹³Ì-yung',
-'mw_math_mathml' => 'Chhin khó-nèn sá¹³Ì-yung MathML (sá¹³-ngiam chûng)',
-
-# Math errors
-'math_failure' => 'Kié-sak sṳt-phai',
-'math_unknown_error' => 'Mò-tî chho-ngu',
-'math_unknown_function' => 'Mò-tî chhṳ-su',
-'math_lexing_error' => 'ki-fap chho-ngu',
-'math_syntax_error' => 'ngî-fap chho-ngu',
-'math_image_error' => 'PNG chón-von sṳt-phai; chhiáng kiám-chhà he-feu chṳn-khok ôn-chông latex, dvips, gs lâu convert',
-'math_bad_tmpdir' => 'Mò-fap siá-ngiÌp feÌt-chá kien-liÌp su-hoÌk kûng-sá¹³t lìm-sṳ̀ muk-liuÌk',
-'math_bad_output' => 'Mò-fap siá-ngiÌp feÌt-chá kien-liÌp su-hoÌk kûng-sá¹³t sû-chhut muk-liuÌk',
-'math_notexvc' => 'Mò-fap chṳp-hàng "texvc"; chhiáng chhâm-cheu math/README chin-hàng phi-chṳ.',
-
# Patrolling
'markaspatrolleddiff' => 'Phêu-ki sṳ̀n-vì yí-kîn kiám-chhà',
'markaspatrolledtext' => 'Phêu-ki chhá¹³Ì vùn-chông sṳ̀n-vì yí-kîn kiám-chhà',
@@ -1600,15 +1554,14 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'nextdiff' => 'Hâ-yit pán-pún →',
# Media information
-'mediawarning' => "'''Kín-ko''': Ke-tóng-on khó-nèn pâu-hàm ok-yi am-ho, chṳp-hàng kì khó-nèn tui ngì-ke ne-thúng tai-lòi ngùi-hiám.",
-'imagemaxsize' => 'Chhai thù-chhiong mèu-siá chông tui thù-chhiong thai-séu han-chṳ he:',
-'thumbsize' => 'LioÌk-thù thai-séu:',
-'file-info' => 'tóng-on thai-séu: $1, MIME lui-hìn: $2',
-'file-info-size' => '$1 × $2 chhiong-su, tóng-on thai-séu:$3 ,MIME lui-hìn:$4',
-'file-nohires' => '<small>Mò kien-kô kié-chhiong-thu khó-yî thì-kiûng.</small>',
-'svg-long-desc' => 'SVG tóng-on, péu-mien thai-séu: $1 × $2 siong-su, tóng-on thai-séu: $3',
-'show-big-image' => 'Vàn-cháng ke kié-chhiong-thu',
-'show-big-image-thumb' => '<small>Liá-ke puk-suk-thù ke kié-chhiong-thu he: $1 × $2 chhiong-su</small>',
+'mediawarning' => "'''Kín-ko''': Ke-tóng-on khó-nèn pâu-hàm ok-yi am-ho, chṳp-hàng kì khó-nèn tui ngì-ke ne-thúng tai-lòi ngùi-hiám.",
+'imagemaxsize' => 'Chhai thù-chhiong mèu-siá chông tui thù-chhiong thai-séu han-chṳ he:',
+'thumbsize' => 'LioÌk-thù thai-séu:',
+'file-info' => 'tóng-on thai-séu: $1, MIME lui-hìn: $2',
+'file-info-size' => '$1 × $2 chhiong-su, tóng-on thai-séu:$3 ,MIME lui-hìn:$4',
+'file-nohires' => '<small>Mò kien-kô kié-chhiong-thu khó-yî thì-kiûng.</small>',
+'svg-long-desc' => 'SVG tóng-on, péu-mien thai-séu: $1 × $2 siong-su, tóng-on thai-séu: $3',
+'show-big-image' => 'Vàn-cháng ke kié-chhiong-thu',
# Special:NewFiles
'newimages' => 'Sîn-kien thù-chhiong ke vaÌk-lòng',
@@ -1637,18 +1590,22 @@ yèn-heu thùng yit-hòng heu-fông ke lièn-chiap chiông-voi pûn sṳ-vì li-
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Yung ngoi-phu chhàng-sá¹³t phiên-siá chhá¹³Ì tóng-on',
-'edit-externally-help' => 'Chhiáng chhâm-siòng [http://www.mediawiki.org/wiki/Manual:External_editors sat-thin phu] liáu-kié siòng-se sin-sit.',
+'edit-externally-help' => 'Chhiáng chhâm-siòng [//www.mediawiki.org/wiki/Manual:External_editors sat-thin phu] liáu-kié siòng-se sin-sit.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Chhiòn-phu',
-'imagelistall' => 'chhiòn-phu',
-'watchlistall2' => 'chhiòn-phu',
-'namespacesall' => 'Chhiòn-phu',
-'monthsall' => 'chhiòn-phu',
+'watchlistall2' => 'chhiòn-phu',
+'namespacesall' => 'Chhiòn-phu',
+'monthsall' => 'chhiòn-phu',
# E-mail address confirmation
'confirmemail' => 'Khok-ngin email thi-tiám',
diff --git a/languages/messages/MessagesHaw.php b/languages/messages/MessagesHaw.php
index e79281b9..3daad79c 100644
--- a/languages/messages/MessagesHaw.php
+++ b/languages/messages/MessagesHaw.php
@@ -38,26 +38,26 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Userlogout' => array( 'Haʻalele', 'Haalele' ),
- 'CreateAccount' => array( 'KÄinoa', 'Kainoa' ),
- 'Preferences' => array( 'Makemake' ),
- 'Watchlist' => array( 'PapaNÄnÄPono', 'PapaNanaPono' ),
- 'Recentchanges' => array( 'NÄLoliHou', 'NaLoliHou' ),
- 'Upload' => array( 'Hoʻouka', 'Hoouka' ),
- 'Randompage' => array( 'Kaulele' ),
- 'Shortpages' => array( 'Ê»AoÊ»aoPÅkole', 'AoaoPokole' ),
- 'Longpages' => array( 'ʻAoʻaoLoa', 'AoaoLoa' ),
- 'Newpages' => array( 'ʻAoʻaoHou', 'AoaoHou' ),
'Ancientpages' => array( 'ʻAoʻaoKahiko', 'AoaoKahiko' ),
- 'Specialpages' => array( 'PapaNui' ),
+ 'Categories' => array( 'MÄhele', 'Mahele' ),
'Contributions' => array( 'Haʻawina', 'Haawina' ),
+ 'CreateAccount' => array( 'KÄinoa', 'Kainoa' ),
'Emailuser' => array( 'LekaUila' ),
+ 'Longpages' => array( 'ʻAoʻaoLoa', 'AoaoLoa' ),
'Movepage' => array( 'HoʻoneʻeʻAoʻao', 'HooneeAoao' ),
- 'Categories' => array( 'MÄhele', 'Mahele' ),
+ 'Mycontributions' => array( 'KaʻuHaʻawina', 'KauHaawina' ),
'Mypage' => array( 'KaʻuʻAoʻao', 'KauAoao' ),
'Mytalk' => array( 'KaÊ»uKÅ«kÄkÅ«kÄ', 'KauKukakuka' ),
- 'Mycontributions' => array( 'KaʻuHaʻawina', 'KauHaawina' ),
+ 'Newpages' => array( 'ʻAoʻaoHou', 'AoaoHou' ),
+ 'Preferences' => array( 'Makemake' ),
+ 'Randompage' => array( 'Kaulele' ),
+ 'Recentchanges' => array( 'NÄLoliHou', 'NaLoliHou' ),
'Search' => array( 'Huli' ),
+ 'Shortpages' => array( 'Ê»AoÊ»aoPÅkole', 'AoaoPokole' ),
+ 'Specialpages' => array( 'PapaNui' ),
+ 'Upload' => array( 'Hoʻouka', 'Hoouka' ),
+ 'Userlogout' => array( 'Haʻalele', 'Haalele' ),
+ 'Watchlist' => array( 'PapaNÄnÄPono', 'PapaNanaPono' ),
);
$magicWords = array(
@@ -176,8 +176,6 @@ $messages = array(
'hidden-category-category' => 'NÄ mahele hÅ«nÄ',
'listingcontinuesabbrev' => '(ho‘omau ‘ia)',
-'mainpagetext' => "'''Ua pono ka ho‘ouka ‘ana o MediaWiki.'''",
-
'about' => 'E pili ana',
'newwindow' => '(wehe i loko o kekahi pukaaniani ʻē aʻe)',
'cancel' => 'Ho‘Åki',
@@ -213,10 +211,10 @@ $messages = array(
'searcharticle' => 'Hele',
'history' => 'Mo‘olelo o ka ‘ao‘ao',
'history_short' => 'MÅÊ»aukala',
-'info_short' => 'HÅ‘ike',
'printableversion' => 'Mana paʻi pono',
'permalink' => 'Ka loulou paʻa',
'print' => 'Pa‘i',
+'view' => 'NÄnÄ',
'edit' => 'E ho‘ololi',
'create' => 'Hana',
'editthispage' => 'E ho‘opololei i kēia ‘ao‘ao',
@@ -366,7 +364,7 @@ E ʻoluʻolu, e kūlia hou.',
'accountcreatedtext' => 'Ua lilo ‘ia ka mea ho‘ohana no $1.',
'loginlanguagelabel' => "Kou 'Ålelo: $1",
-# Password reset dialog
+# Change password dialog
'newpassword' => 'ʻŌlelo hÅ«nÄ hou:',
'resetpass_success' => 'Ua loli ‘ia kÄu hua‘Ålelo huna! E ‘e‘e iÄ‘oe...',
@@ -379,7 +377,6 @@ E ʻoluʻolu, e kūlia hou.',
'link_tip' => 'Loulou loko wahi',
'extlink_tip' => 'Loulou kÅ«waho (e ho‘omana‘o i ka poÊ»o pÄÊ»Älua http://)',
'headline_sample' => 'Po‘o‘Ålelo',
-'math_tip' => 'Ha‘ilula makemakika (LaTeX)',
'media_tip' => 'Loulou waihona',
'sig_tip' => 'Kou kÄkau inoa a me ka manawa',
'hr_tip' => 'Laina ‘ilikai (e ho‘ohana pÄkiko)',
@@ -493,7 +490,6 @@ E Ê»oluÊ»olu, e hÅÊ»oia i ka hoÊ»okÅ«kÅ« Ê»ana i lalo, a laila, e mÄlama i nÄ
'changepassword' => 'E loli i ka palapala hua‘Ålelo',
'prefs-skin' => 'ʻIli',
'skin-preview' => 'NÄmua',
-'prefs-math' => 'Makemakika',
'datedefault' => 'ʻAʻohe makemake',
'prefs-datetime' => 'Ka lÄ a me ka hola',
'prefs-personal' => 'ʻAoʻao ʻike mea hoʻohana',
@@ -662,7 +658,6 @@ E Ê»oluÊ»olu, e hÅÊ»oia i ka hoÊ»okÅ«kÅ« Ê»ana i lalo, a laila, e mÄlama i nÄ
# Watchlist
'watchlist' => 'KaÊ»u papa nÄnÄ pono',
'mywatchlist' => 'Ka‘u papa nÄnÄ pono',
-'removedwatch' => 'Wehe Ê»ia mai kÄu papa nÄnÄ pono',
'removedwatchtext' => 'Wehe Ê»ia Ê»o "[[:$1]]" mai [[Special:Watchlist|kÄu papa nÄnÄ pono]].',
'watch' => 'E kia‘i',
'watchthispage' => 'E nÄnÄ pono i kÄ“ia mea',
@@ -679,7 +674,7 @@ E Ê»oluÊ»olu, e hÅÊ»oia i ka hoÊ»okÅ«kÅ« Ê»ana i lalo, a laila, e mÄlama i nÄ
# Delete
'deletepage' => 'KÄpae Ê»aoÊ»ao',
'actioncomplete' => 'Ua pau',
-'deletedtext' => 'Ua kÄpae Ê»ia Ê»o "<nowiki>$1</nowiki>".
+'deletedtext' => 'Ua kÄpae Ê»ia Ê»o "$1".
E Ê»ike iÄ $2 no ka papa o nÄ kÄpae Ê»ana hou.',
'deletedarticle' => 'ua kÄpae ‘ia "[[$1]]"',
'dellogpage' => 'Mo‘olelo kÄpae',
@@ -838,14 +833,12 @@ Hiki iÄ Ê»oe ke Ê»ikena i kÄna molekumu.',
'ilsubmit' => 'Huli',
# External editor support
-'edit-externally-help' => '(E Ê»ike i nÄ [http://www.mediawiki.org/wiki/Manual:External_editors aÊ»o palapala no ka hoÊ»okuene Ê»ana])',
+'edit-externally-help' => '(E Ê»ike i nÄ [//www.mediawiki.org/wiki/Manual:External_editors aÊ»o palapala no ka hoÊ»okuene Ê»ana])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'apau',
-'imagelistall' => 'Äpau',
-'watchlistall2' => 'apau',
-'namespacesall' => 'apau',
-'monthsall' => 'Äpau',
+'watchlistall2' => 'apau',
+'namespacesall' => 'apau',
+'monthsall' => 'Äpau',
# action=purge
'confirm_purge_button' => 'Hiki nÅ',
diff --git a/languages/messages/MessagesHe.php b/languages/messages/MessagesHe.php
index 41f440af..4102c8fa 100644
--- a/languages/messages/MessagesHe.php
+++ b/languages/messages/MessagesHe.php
@@ -21,10 +21,6 @@
*/
$rtl = true;
-$defaultUserOptionOverrides = array(
- # Swap sidebar to right side by default
- 'quickbar' => 2,
-);
$linkTrail = '/^([a-z×-ת]+)(.*)$/sDu';
$fallback8bitEncoding = 'windows-1255';
@@ -220,99 +216,102 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'הפניות_כפולות' ),
+ 'Activeusers' => array( 'משתמשי×_פעילי×' ),
+ 'Allmessages' => array( 'הודעות_המערכת' ),
+ 'Allpages' => array( 'כל_הדפי×' ),
+ 'Ancientpages' => array( 'דפי×_מוזנחי×' ),
+ 'Blankpage' => array( 'דף_ריק' ),
+ 'Block' => array( 'חסימה', 'חסימת_כתובת', 'חסימת_משתמש' ),
+ 'Blockme' => array( 'חסו×_×ותי' ),
+ 'Booksources' => array( 'מש×בי_ספרות', 'מש×בי_ספרות_חיצוניי×' ),
'BrokenRedirects' => array( 'הפניות_ל×_תקינות', 'הפניות_שבורות' ),
- 'Disambiguations' => array( 'פירושוני×', 'דפי_פירושוני×' ),
- 'Userlogin' => array( 'כניסה_לחשבון', 'כניסה', 'כניסה_/_הרשמה_לחשבון' ),
- 'Userlogout' => array( 'יצי××”_מהחשבון', 'יצי××”' ),
+ 'Categories' => array( 'קטגוריות', 'רשימת_קטגוריות' ),
+ 'ChangeEmail' => array( 'שינוי_דו×ר_×לקטרוני', 'שינוי_דו×ל' ),
+ 'ChangePassword' => array( 'שינוי_סיסמה' ),
+ 'ComparePages' => array( 'השוו×ת_דפי×' ),
+ 'Confirmemail' => array( '×ימות_כתובת_דו×ר' ),
+ 'Contributions' => array( 'תרומות', 'תרומות_המשתמש' ),
'CreateAccount' => array( 'הרשמה_לחשבון' ),
- 'Preferences' => array( 'העדפות', 'ההעדפות_שלי' ),
- 'Watchlist' => array( 'רשימת_המעקב', 'רשימת_מעקב', 'רשימת_המעקב_שלי' ),
- 'Recentchanges' => array( 'שינויי×_×חרוני×' ),
- 'Upload' => array( 'העל××”', 'העל×ת_קובץ_לשרת' ),
- 'UploadStash' => array( 'מ×גר_העל×ות' ),
+ 'Deadendpages' => array( 'דפי×_לל×_קישורי×' ),
+ 'DeletedContributions' => array( 'תרומות_מחוקות' ),
+ 'Disambiguations' => array( 'פירושוני×', 'דפי_פירושוני×' ),
+ 'DoubleRedirects' => array( 'הפניות_כפולות' ),
+ 'EditWatchlist' => array( 'עריכת_רשימת_המעקב' ),
+ 'Emailuser' => array( 'שליחת_דו×ר_למשתמש' ),
+ 'Export' => array( 'ייצו×', 'ייצו×_דפי×' ),
+ 'Fewestrevisions' => array( 'הגרס×ות_המעטות_ביותר', 'הדפי×_בעלי_מספר_העריכות_הנמוך_ביותר' ),
+ 'FileDuplicateSearch' => array( 'חיפוש_קבצי×_כפולי×' ),
+ 'Filepath' => array( 'נתיב_לקובץ' ),
+ 'Import' => array( 'ייבו×', 'ייבו×_דפי×' ),
+ 'Invalidateemail' => array( 'ביטול_דו×ר' ),
+ 'BlockList' => array( 'רשימת_חסומי×', 'רשימת_משתמשי×_חסומי×', 'משתמשי×_חסומי×' ),
+ 'LinkSearch' => array( 'חיפוש_קישורי×_חיצוניי×' ),
+ 'Listadmins' => array( 'רשימת_מפעילי×' ),
+ 'Listbots' => array( 'רשימת_בוטי×' ),
'Listfiles' => array( 'רשימת_קבצי×', 'רשימת_תמונות', 'קבצי×', 'תמונות' ),
- 'Newimages' => array( 'קבצי×_חדשי×', 'תמונות_חדשות', 'גלריית_קבצי×_חדשי×', 'גלריית_תמונות_חדשות' ),
- 'Listusers' => array( 'רשימת_משתמשי×', 'משתמשי×' ),
'Listgrouprights' => array( 'רשימת_הרש×ות_לקבוצה' ),
- 'Statistics' => array( 'סטטיסטיקות' ),
- 'Randompage' => array( '×קר××™', 'דף_×קר××™' ),
+ 'Listredirects' => array( 'רשימת_הפניות', 'הפניות' ),
+ 'Listusers' => array( 'רשימת_משתמשי×', 'משתמשי×' ),
+ 'Lockdb' => array( 'נעילת_בסיס_הנתוני×' ),
+ 'Log' => array( 'יומני×' ),
'Lonelypages' => array( 'דפי×_יתומי×' ),
- 'Uncategorizedpages' => array( 'דפי×_חסרי_קטגוריה' ),
- 'Uncategorizedcategories' => array( 'קטגוריות_חסרות_קטגוריה' ),
- 'Uncategorizedimages' => array( 'קבצי×_חסרי_קטגוריה', 'תמונות_חסרות_קטגוריה' ),
- 'Uncategorizedtemplates' => array( 'תבניות_חסרות_קטגוריות' ),
- 'Unusedcategories' => array( 'קטגוריות_ש×ינן_בשימוש' ),
- 'Unusedimages' => array( 'קבצי×_ש××™× ×_בשימוש', 'תמונות_ש×ינן_בשימוש' ),
- 'Wantedpages' => array( 'דפי×_מבוקשי×' ),
- 'Wantedcategories' => array( 'קטגוריות_מבוקשות' ),
- 'Wantedfiles' => array( 'קבצי×_מבוקשי×' ),
- 'Wantedtemplates' => array( 'תבניות_מבוקשות' ),
+ 'Longpages' => array( 'דפי×_×רוכי×' ),
+ 'MergeHistory' => array( 'מיזוג_גרס×ות' ),
+ 'MIMEsearch' => array( 'חיפוש_MIME' ),
+ 'Mostcategories' => array( 'הקטגוריות_הרבות_ביותר', 'הדפי×_מרובי-הקטגוריות_ביותר' ),
+ 'Mostimages' => array( 'הקבצי×_המקושרי×_ביותר', 'התמונות_המקושרות_ביותר' ),
'Mostlinked' => array( 'הדפי×_המקושרי×_ביותר', 'המקושרי×_ביותר' ),
'Mostlinkedcategories' => array( 'הקטגוריות_המקושרות_ביותר' ),
'Mostlinkedtemplates' => array( 'התבניות_המקושרות_ביותר' ),
- 'Mostimages' => array( 'הקבצי×_המקושרי×_ביותר', 'התמונות_המקושרות_ביותר' ),
- 'Mostcategories' => array( 'הקטגוריות_הרבות_ביותר', 'הדפי×_מרובי-הקטגוריות_ביותר' ),
'Mostrevisions' => array( 'הגרס×ות_הרבות_ביותר', 'הדפי×_בעלי_מספר_העריכות_הגבוה_ביותר' ),
- 'Fewestrevisions' => array( 'הגרס×ות_המעטות_ביותר', 'הדפי×_בעלי_מספר_העריכות_הנמוך_ביותר' ),
- 'Shortpages' => array( 'דפי×_קצרי×' ),
- 'Longpages' => array( 'דפי×_×רוכי×' ),
+ 'Movepage' => array( 'העברת_דף', 'העברה' ),
+ 'Mycontributions' => array( 'התרומות_שלי' ),
+ 'Mypage' => array( 'הדף_שלי', 'דף_המשתמש_שלי' ),
+ 'Mytalk' => array( 'השיחה_שלי', 'דף_השיחה_שלי' ),
+ 'Myuploads' => array( 'ההעל×ות_שלי' ),
+ 'Newimages' => array( 'קבצי×_חדשי×', 'תמונות_חדשות', 'גלריית_קבצי×_חדשי×', 'גלריית_תמונות_חדשות' ),
'Newpages' => array( 'דפי×_חדשי×' ),
- 'Ancientpages' => array( 'דפי×_מוזנחי×' ),
- 'Deadendpages' => array( 'דפי×_לל×_קישורי×' ),
+ 'PermanentLink' => array( 'קישור_קבוע' ),
+ 'Popularpages' => array( 'הדפי×_הנצפי×_ביותר', 'דפי×_פופולריי×' ),
+ 'Preferences' => array( 'העדפות', 'ההעדפות_שלי' ),
+ 'Prefixindex' => array( 'דפי×_המתחילי×_ב' ),
'Protectedpages' => array( 'דפי×_מוגני×' ),
'Protectedtitles' => array( 'כותרות_מוגנות' ),
- 'Allpages' => array( 'כל_הדפי×' ),
- 'Prefixindex' => array( 'דפי×_המתחילי×_ב' ),
- 'Ipblocklist' => array( 'רשימת_חסומי×', 'רשימת_משתמשי×_חסומי×', 'משתמשי×_חסומי×' ),
- 'Unblock' => array( 'שחרור_חסימה' ),
- 'Specialpages' => array( 'דפי×_מיוחדי×' ),
- 'Contributions' => array( 'תרומות', 'תרומות_המשתמש' ),
- 'Emailuser' => array( 'שליחת_דו×ר_למשתמש' ),
- 'Confirmemail' => array( '×ימות_כתובת_דו×ר' ),
- 'Whatlinkshere' => array( 'דפי×_המקושרי×_לכ×ן' ),
+ 'Randompage' => array( '×קר××™', 'דף_×קר××™' ),
+ 'Randomredirect' => array( 'הפניה_×קר×ית' ),
+ 'Recentchanges' => array( 'שינויי×_×חרוני×' ),
'Recentchangeslinked' => array( 'שינויי×_בדפי×_המקושרי×' ),
- 'Movepage' => array( 'העברת_דף', 'העברה' ),
- 'Blockme' => array( 'חסו×_×ותי' ),
- 'Booksources' => array( 'מש×בי_ספרות', 'מש×בי_ספרות_חיצוניי×' ),
- 'Categories' => array( 'קטגוריות', 'רשימת_קטגוריות' ),
- 'Export' => array( 'ייצו×', 'ייצו×_דפי×' ),
- 'Version' => array( 'גרסה', 'גרסת_התוכנה' ),
- 'Allmessages' => array( 'הודעות_המערכת' ),
- 'Log' => array( 'יומני×' ),
- 'Blockip' => array( 'חסימה', 'חסימת_כתובת', 'חסימת_משתמש' ),
+ 'Revisiondelete' => array( 'מחיקת_ושחזור_גרס×ות' ),
+ 'RevisionMove' => array( 'העברת_גרס×ות' ),
+ 'Search' => array( 'חיפוש' ),
+ 'Shortpages' => array( 'דפי×_קצרי×' ),
+ 'Specialpages' => array( 'דפי×_מיוחדי×' ),
+ 'Statistics' => array( 'סטטיסטיקות' ),
+ 'Tags' => array( 'תגיות' ),
+ 'Unblock' => array( 'שחרור_חסימה' ),
+ 'Uncategorizedcategories' => array( 'קטגוריות_חסרות_קטגוריה' ),
+ 'Uncategorizedimages' => array( 'קבצי×_חסרי_קטגוריה', 'תמונות_חסרות_קטגוריה' ),
+ 'Uncategorizedpages' => array( 'דפי×_חסרי_קטגוריה' ),
+ 'Uncategorizedtemplates' => array( 'תבניות_חסרות_קטגוריות' ),
'Undelete' => array( 'צפייה_בדפי×_מחוקי×' ),
- 'Import' => array( 'ייבו×', 'ייבו×_דפי×' ),
- 'Lockdb' => array( 'נעילת_בסיס_הנתוני×' ),
'Unlockdb' => array( 'שחרור_בסיס_הנתוני×' ),
- 'Userrights' => array( 'ניהול_הרש×ות_משתמש', 'הפיכת_משתמש_למפעיל_מערכת', 'הענקת_×ו_ביטול_הרש×ת_בוט' ),
- 'MIMEsearch' => array( 'חיפוש_MIME' ),
- 'FileDuplicateSearch' => array( 'חיפוש_קבצי×_כפולי×' ),
- 'Unwatchedpages' => array( 'דפי×_ש××™× ×_במעקב' ),
- 'Listredirects' => array( 'רשימת_הפניות', 'הפניות' ),
- 'Revisiondelete' => array( 'מחיקת_ושחזור_גרס×ות' ),
+ 'Unusedcategories' => array( 'קטגוריות_ש×ינן_בשימוש' ),
+ 'Unusedimages' => array( 'קבצי×_ש××™× ×_בשימוש', 'תמונות_ש×ינן_בשימוש' ),
'Unusedtemplates' => array( 'תבניות_ש×ינן_בשימוש' ),
- 'Randomredirect' => array( 'הפניה_×קר×ית' ),
- 'Mypage' => array( 'הדף_שלי', 'דף_המשתמש_שלי' ),
- 'Mytalk' => array( 'השיחה_שלי', 'דף_השיחה_שלי' ),
- 'Mycontributions' => array( 'התרומות_שלי' ),
- 'Listadmins' => array( 'רשימת_מפעילי×' ),
- 'Listbots' => array( 'רשימת_בוטי×' ),
- 'Popularpages' => array( 'הדפי×_הנצפי×_ביותר', 'דפי×_פופולריי×' ),
- 'Search' => array( 'חיפוש' ),
- 'Resetpass' => array( 'שינוי_סיסמה', '×יפוס_סיסמה' ),
+ 'Unwatchedpages' => array( 'דפי×_ש××™× ×_במעקב' ),
+ 'Upload' => array( 'העל××”', 'העל×ת_קובץ_לשרת' ),
+ 'UploadStash' => array( 'מ×גר_העל×ות' ),
+ 'Userlogin' => array( 'כניסה_לחשבון', 'כניסה', 'כניסה_/_הרשמה_לחשבון' ),
+ 'Userlogout' => array( 'יצי××”_מהחשבון', 'יצי××”' ),
+ 'Userrights' => array( 'ניהול_הרש×ות_משתמש', 'הפיכת_משתמש_למפעיל_מערכת', 'הענקת_×ו_ביטול_הרש×ת_בוט' ),
+ 'Version' => array( 'גרסה', 'גרסת_התוכנה' ),
+ 'Wantedcategories' => array( 'קטגוריות_מבוקשות' ),
+ 'Wantedfiles' => array( 'קבצי×_מבוקשי×' ),
+ 'Wantedpages' => array( 'דפי×_מבוקשי×' ),
+ 'Wantedtemplates' => array( 'תבניות_מבוקשות' ),
+ 'Watchlist' => array( 'רשימת_המעקב', 'רשימת_מעקב', 'רשימת_המעקב_שלי' ),
+ 'Whatlinkshere' => array( 'דפי×_המקושרי×_לכ×ן' ),
'Withoutinterwiki' => array( 'דפי×_לל×_קישורי_שפה' ),
- 'MergeHistory' => array( 'מיזוג_גרס×ות' ),
- 'Filepath' => array( 'נתיב_לקובץ' ),
- 'Invalidateemail' => array( 'ביטול_דו×ר' ),
- 'Blankpage' => array( 'דף_ריק' ),
- 'LinkSearch' => array( 'חיפוש_קישורי×_חיצוניי×' ),
- 'DeletedContributions' => array( 'תרומות_מחוקות' ),
- 'Tags' => array( 'תגיות' ),
- 'Activeusers' => array( 'משתמשי×_פעילי×' ),
- 'ComparePages' => array( 'השוו×ת_דפי×' ),
- 'Badtitle' => array( 'כותרת_שגויה' ),
- 'DisableAccount' => array( 'ביטול_חשבון' ),
);
$namespaceNames = array(
@@ -338,6 +337,10 @@ $namespaceAliases = array(
'תמונה' => NS_FILE,
'שיחת_תמונה' => NS_FILE_TALK,
);
+$namespaceGenderAliases = array(
+ NS_USER => array( 'female' => 'משתמשת' ),
+ NS_USER_TALK => array( 'female' => 'שיחת_משתמשת' ),
+);
$messages = array(
# User preference toggles
@@ -355,7 +358,7 @@ $messages = array(
'tog-editsection' => 'עריכת פסק×ות ב×מצעות קישורי [עריכה]',
'tog-editsectiononrightclick' => 'עריכת פסק×ות על ידי לחיצה ימנית על כותרות הפסק×ות (דרוש JavaScript)',
'tog-showtoc' => 'הצגת תוכן ×¢× ×™×™× ×™× (עבור ×“×¤×™× ×¢× ×™×•×ª×¨ מ־3 כותרות)',
-'tog-rememberpassword' => 'זכירת הכניסה שלי בדפדפן ×–×” (למשך עד {{PLURAL:$1|×™×•× ×חד|$1 ימי×|יומיי×}})',
+'tog-rememberpassword' => 'שמירת הכניסה שלי בדפדפן ×–×” (ל{{PLURAL:$1|×™×•× ×חד|Ö¾$1 ימי×|יומיי×}} לכל היותר)',
'tog-watchcreations' => 'מעקב ×חרי ×“×¤×™× ×©×™×¦×¨×ª×™',
'tog-watchdefault' => 'מעקב ×חרי ×“×¤×™× ×©×¢×¨×›×ª×™',
'tog-watchmoves' => 'מעקב ×חרי ×“×¤×™× ×©×”×¢×‘×¨×ª×™',
@@ -371,8 +374,8 @@ $messages = array(
'tog-shownumberswatching' => 'הצגת מספר ×”×ž×©×ª×ž×©×™× ×”×¢×•×§×‘×™× ×חרי הדף',
'tog-oldsig' => 'החתימה הקיימת:',
'tog-fancysig' => 'פירוש החתימה כקוד ויקי (×œ×œ× ×§×™×©×•×¨ ×וטומטי)',
-'tog-externaleditor' => 'שימוש בעורך חיצוני כברירת מחדל (×œ×ž×©×ª×ž×©×™× ×ž×•×ž×—×™× ×‘×œ×‘×“, דורש הגדרות מיוחדות במחשב. [http://www.mediawiki.org/wiki/Manual:External_editors למידע נוסף.])',
-'tog-externaldiff' => 'שימוש בתוכנת השוו×ת הגרס×ות החיצונית כברירת מחדל (×œ×ž×©×ª×ž×©×™× ×ž×•×ž×—×™× ×‘×œ×‘×“, דורש הגדרות מיוחדות במחשב. [http://www.mediawiki.org/wiki/Manual:External_editors למידע נוסף.])',
+'tog-externaleditor' => 'שימוש בעורך חיצוני כברירת מחדל (×œ×ž×©×ª×ž×©×™× ×ž×•×ž×—×™× ×‘×œ×‘×“, דורש הגדרות מיוחדות במחשב. [//www.mediawiki.org/wiki/Manual:External_editors למידע נוסף.])',
+'tog-externaldiff' => 'שימוש בתוכנת השוו×ת הגרס×ות החיצונית כברירת מחדל (×œ×ž×©×ª×ž×©×™× ×ž×•×ž×—×™× ×‘×œ×‘×“, דורש הגדרות מיוחדות במחשב. [//www.mediawiki.org/wiki/Manual:External_editors למידע נוסף.])',
'tog-showjumplinks' => 'הצגת קישורי נגישות מסוג "קפוץ ×ל"',
'tog-uselivepreview' => 'שימוש בתצוגה מקדימה מהירה (דרוש JavaScript) (ניסיוני)',
'tog-forceeditsummary' => 'הצגת ×זהרה כש×× ×™ מכניס תקציר עריכה ריק',
@@ -469,14 +472,7 @@ $messages = array(
'listingcontinuesabbrev' => '(המשך)',
'index-category' => '×“×¤×™× ×”×ž×•×¤×™×¢×™× ×‘×ž× ×•×¢×™ חיפוש',
'noindex-category' => '×“×¤×™× ×”×ž×•×¡×ª×¨×™× ×ž×ž× ×•×¢×™ חיפוש',
-
-'mainpagetext' => "'''תוכנת מדיה־ויקי הותקנה בהצלחה.'''",
-'mainpagedocfooter' => 'היעזרו ב[http://meta.wikimedia.org/wiki/Help:Contents מדריך למשתמש] למידע על שימוש בתוכנת הוויקי.
-
-== ×§×™×©×•×¨×™× ×©×™×ž×•×©×™×™× ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings רשימת ההגדרות]
-* [http://www.mediawiki.org/wiki/Manual:FAQ ש×לות ותשובות על מדיה־ויקי]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce רשימת התפוצה על השקת גרס×ות]',
+'broken-file-category' => '×“×¤×™× ×¢× ×§×™×©×•×¨×™× ×©×‘×•×¨×™× ×œ×§×‘×¦×™×',
'about' => '×ודות',
'article' => 'דף תוכן',
@@ -528,10 +524,10 @@ $messages = array(
'history' => 'היסטוריית הדף',
'history_short' => 'היסטוריית הדף',
'updatedmarker' => 'עודכן מ××– ביקורך ×”×חרון',
-'info_short' => 'מידע',
'printableversion' => 'גרסת הדפסה',
'permalink' => 'קישור קבוע',
'print' => 'גרסה להדפסה',
+'view' => 'צפייה',
'edit' => 'עריכה',
'create' => 'יצירה',
'editthispage' => 'עריכת דף זה',
@@ -539,6 +535,7 @@ $messages = array(
'delete' => 'מחיקה',
'deletethispage' => 'מחיקת דף זה',
'undelete_short' => 'שחזור {{PLURAL:$1|עריכה ×חת|$1 עריכות}}',
+'viewdeleted_short' => 'צפייה ב{{PLURAL:$1|עריכה מחוקה ×חת|Ö¾$1 עריכות מחוקות}}',
'protect' => '×”×’× ×”',
'protect_change' => 'שינוי',
'protectthispage' => 'הגנה על דף זה',
@@ -623,6 +620,8 @@ $1',
'toc' => 'תוכן ×¢× ×™×™× ×™×',
'showtoc' => 'הצגה',
'hidetoc' => 'הסתרה',
+'collapsible-collapse' => 'הסתרה',
+'collapsible-expand' => 'הצגה',
'thisisdeleted' => 'לשחזר ×ו להציג $1?',
'viewdeleted' => 'להציג $1?',
'restorelink' => '{{PLURAL:$1|גרסה מחוקה ×חת|$1 גרס×ות מחוקות}}',
@@ -634,6 +633,8 @@ $1',
'page-rss-feed' => 'RSS של $1',
'page-atom-feed' => 'Atom של $1',
'red-link-title' => '$1 (הדף ×ינו קיי×)',
+'sort-descending' => 'מיון בסדר יורד',
+'sort-ascending' => 'מיון בסדר עולה',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'דף תוכן',
@@ -723,7 +724,8 @@ $1',
'cascadeprotected' => 'דף ×–×” מוגן מעריכה ×›×™ ×”×•× ×ž×•×›×œ×œ {{PLURAL:$1|בדף הב×, שמופעלת עליו|×‘×“×¤×™× ×”×‘××™×, שמופעלת עליה×}} ×”×’× ×” מדורגת:
$2',
'namespaceprotected' => "××™× ×›× ×ž×•×¨×©×™× ×œ×¢×¨×•×š ×“×¤×™× ×‘×ž×¨×—×‘ ×”×©× '''$1'''.",
-'customcssjsprotected' => '××™× ×›× ×ž×•×¨×©×™× ×œ×¢×¨×•×š דף ×–×”, כיוון ×©×”×•× ×›×•×œ×œ ×ת ההגדרות ×”×ישיות של משתמש ×חר.',
+'customcssprotected' => '××™× ×›× ×ž×•×¨×©×™× ×œ×¢×¨×•×š דף CSS ×–×”, כיוון ×©×”×•× ×›×•×œ×œ ×ת ההגדרות ×”×ישיות של משתמש ×חר.',
+'customjsprotected' => '××™× ×›× ×ž×•×¨×©×™× ×œ×¢×¨×•×š דף JavaScript ×–×”, כיוון ×©×”×•× ×›×•×œ×œ ×ת ההגדרות ×”×ישיות של משתמש ×חר.',
'ns-specialprotected' => '×œ× × ×™×ª×Ÿ לערוך ×“×¤×™× ×ž×™×•×—×“×™×.',
'titleprotected' => '×œ× × ×™×ª×Ÿ ליצור דף ×–×”, כיוון שהמשתמש [[User:$1|$1]] הגן עליו מפני יצירה.
הסיבה שניתנה לכך ×”×™× "$2".',
@@ -744,7 +746,7 @@ $2',
'yourname' => '×©× ×ž×©×ª×ž×©:',
'yourpassword' => 'סיסמה:',
'yourpasswordagain' => 'הקש סיסמה שנית:',
-'remembermypassword' => 'זכירת הכניסה שלי בדפדפן ×”×–×” (ל{{PLURAL:$1|×™×•× ×חד|Ö¾$1 ימי×|יומיי×}} לכל היותר)',
+'remembermypassword' => 'שמירת הכניסה שלי בדפדפן ×”×–×” (ל{{PLURAL:$1|×™×•× ×חד|Ö¾$1 ימי×|יומיי×}} לכל היותר)',
'securelogin-stick-https' => 'המשך שימוש ב־HTTPS ×חרי הכניסה',
'yourdomainname' => '×”×ž×ª×—× ×©×œ×š:',
'externaldberror' => 'הייתה שגי××” בבסיס ×”× ×ª×•× ×™× ×©×œ ההזדהות, ×ו ש××™× ×›× ×¨×©××™× ×œ×¢×“×›×Ÿ ×ת ×—×©×‘×•× ×›× ×”×—×™×¦×•× ×™.',
@@ -761,6 +763,7 @@ $2',
'createaccount' => 'יצירת משתמש חדש',
'gotaccount' => 'כבר נרשמת×? $1.',
'gotaccountlink' => 'כניסה לחשבון',
+'userlogin-resetlink' => 'שכחת ×ת פרטי הכניסה?',
'createaccountmail' => 'ב×מצעות דו×"ל',
'createaccountreason' => 'סיבה:',
'badretype' => 'הסיסמ×ות ×©×”×–× ×ª× ×ינן מת×ימות.',
@@ -775,12 +778,15 @@ $2',
'nocookieslogin' => '{{SITENAME}} משתמש בעוגיות כדי להכניס ×ž×©×ª×ž×©×™× ×œ×ž×¢×¨×›×ª.
בדפדפן ×©×œ×›× ×”×¢×•×’×™×•×ª מבוטלות.
×× × ×”×¤×¢×™×œ×• ×ותן מחדש ונסו שוב.',
+'nocookiesfornew' => 'חשבון המשתמש ×œ× × ×•×¦×¨, כיוון ×©×œ× ×™×›×•×œ× ×• ×œ×•×•×“× ×ת מקורו.
+וד×ו שהעוגיות מופעלות בדפדפן שלכ×, העלו מחדש דף ×–×” ונסו שוב.',
'noname' => '×œ× ×”×›× ×¡×ª× ×©× ×ž×©×ª×ž×© חוקי',
'loginsuccesstitle' => 'הכניסה הושלמה בהצלחה',
'loginsuccess' => "'''נכנסת ל{{grammar:תחילית|{{SITENAME}}}} ×‘×©× \"\$1\".'''",
'nosuchuser' => '×ין משתמש ×‘×©× "$1".
×× × ×•×“×ו שה×יות נכון (כולל ×ותיות רישיות וקטנות), ×ו [[Special:UserLogin/signup|צרו חשבון חדש]].',
-'nosuchusershort' => '×ין משתמש ×‘×©× "<nowiki>$1</nowiki>". ×× × ×•×“×ו שה×יות נכון.',
+'nosuchusershort' => '×ין משתמש ×‘×©× "$1".
+×× × ×•×“×ו שה×יות נכון.',
'nouserspecified' => '×¢×œ×™×›× ×œ×¦×™×™×Ÿ ×©× ×ž×©×ª×ž×©.',
'login-userblocked' => 'משתמש ×–×” חסו×. ××™× ×›× ×ž×•×¨×©×™× ×œ×”×™×›× ×¡ לחשבון.',
'wrongpassword' => 'הסיסמה ×©×”×§×œ×“×ª× ×©×’×•×™×”.
@@ -825,13 +831,14 @@ $2',
'usernamehasherror' => '×©× ×ž×©×ª×ž×© ×ינו יכול לכלול תווי סולמית',
'login-throttled' => '×‘×™×¦×¢×ª× ×œ×חרונה ניסיונות ×¨×‘×™× ×ž×“×™ להיכנס לחשבון ×–×”.
×× × ×”×ž×ª×™× ×• לפני שתנסו שוב.',
+'login-abort-generic' => 'הכניסה לחשבון ×œ× ×”×¦×œ×™×—×” - ×”×™× ×”×•×¤×¡×§×”',
'loginlanguagelabel' => 'שפה: $1',
'suspicious-userlogout' => '×‘×§×©×ª×›× ×œ×¦×ת מהחשבון נדחתה כיוון שנר××” ×©×”×™× × ×©×œ×—×” על ידי דפדפן שבור ×ו שרת פרוקסי ×¢× ×–×™×›×¨×•×Ÿ מטמון.',
# E-mail sending
'php-mail-error-unknown' => 'שגי××” ×œ× ×™×“×•×¢×” בפונקציה mail()‎ של PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'שינוי סיסמה',
'resetpass_announce' => '× ×›× ×¡×ª× ×‘×מצעות סיסמה זמנית שנשלחה ××œ×™×›× ×‘×“×•×"ל.
כדי ×œ×¡×™×™× ×ת הכניסה, ×¢×œ×™×›× ×œ×§×‘×•×¢ ×›×ן סיסמה חדשה:',
@@ -850,6 +857,40 @@ $2',
ייתכן שכבר ×©×™× ×™×ª× ×ת ×¡×™×¡×ž×ª×›× ×ו שכבר ×‘×™×§×©×ª× ×¡×™×¡×ž×” זמנית חדשה.',
'resetpass-temp-password' => 'סיסמה זמנית:',
+# Special:PasswordReset
+'passwordreset' => '×יפוס סיסמה',
+'passwordreset-text' => 'מל×ו טופס ×–×” כדי לקבל דו×ר ×לקטרוני ובו תזכורת של פרטי החשבון.',
+'passwordreset-legend' => '×יפוס סיסמה',
+'passwordreset-disabled' => '×יפוסי סיסמה בוטלו ב×תר ויקי ×–×”.',
+'passwordreset-pretext' => '{{PLURAL:$1||הקלידו ×חד מפריטי המידע למטה}}',
+'passwordreset-username' => '×©× ×ž×©×ª×ž×©:',
+'passwordreset-domain' => 'תחו×:',
+'passwordreset-email' => 'כתובת דו×"ל:',
+'passwordreset-emailtitle' => 'פרטי חשבון ב{{grammar:תחילית|{{SITENAME}}}}',
+'passwordreset-emailtext-ip' => 'מישהו (ככל הנר××” ×ת×, מכתובת ×”Ö¾IP מספר $1) ביקש תזכורת של פרטי
+החשבון ×©×œ×›× ×‘{{grammar:תחילית|{{SITENAME}}}} ($4). {{PLURAL:$3|חשבון המשתמש הב×|חשבונות המשתמש הב××™×}}
+×©×™×™×›×™× ×œ×›×ª×•×‘×ª הדו×ר ×”×לקטרוני הזו:
+
+$2
+
+{{PLURAL:$3|סיסמה זמנית זו|סיסמ×ות זמניות ×לה}} יפקעו תוך {{PLURAL:$5|יו×|$5 ימי×|יומיי×}}.
+×¢×œ×™×›× ×œ×”×™×›× ×¡ ולבחור סיסמה חדשה עכשיו. ×× ×ž×™×©×”×• ×חר ביצע בקשה זו, ×ו ×©× ×–×›×¨×ª× ×‘×¡×™×¡×ž×ª×›×
+המקורית ו××™× ×›× ×¨×•×¦×™× ×¢×•×“ לשנות ×ותה, ב××¤×©×¨×•×ª×›× ×œ×”×ª×¢×œ× ×ž×”×•×“×¢×” זו ולהמשיך להשתמש בסיסמה
+הישנה.',
+'passwordreset-emailtext-user' => 'המשתמש $1 ב{{grammar:תחילית|{{SITENAME}}}} ביקש תזכורת של פרטי
+החשבון ×©×œ×›× ×‘{{grammar:תחילית|{{SITENAME}}}} ($4). {{PLURAL:$3|חשבון המשתמש הב×|חשבונות המשתמש הב××™×}}
+×©×™×™×›×™× ×œ×›×ª×•×‘×ª הדו×ר ×”×לקטרוני הזו:
+
+$2
+
+{{PLURAL:$3|סיסמה זמנית זו|סיסמ×ות זמניות ×לה}} יפקעו תוך {{PLURAL:$5|יו×|$5 ימי×|יומיי×}}.
+×¢×œ×™×›× ×œ×”×™×›× ×¡ ולבחור סיסמה חדשה עכשיו. ×× ×ž×™×©×”×• ×חר ביצע בקשה זו, ×ו ×©× ×–×›×¨×ª× ×‘×¡×™×¡×ž×ª×›×
+המקורית ו××™× ×›× ×¨×•×¦×™× ×¢×•×“ לשנות ×ותה, ב××¤×©×¨×•×ª×›× ×œ×”×ª×¢×œ× ×ž×”×•×“×¢×” זו ולהמשיך להשתמש בסיסמה
+הישנה.',
+'passwordreset-emailelement' => '×©× ×ž×©×ª×ž×©: $1
+סיסמה זמנית: $2',
+'passwordreset-emailsent' => 'נשלח דו×ר ×לקטרוני ×¢× ×ª×–×›×•×¨×ª.',
+
# Edit page toolbar
'bold_sample' => 'טקסט מודגש',
'bold_tip' => 'טקסט מודגש',
@@ -861,8 +902,6 @@ $2',
'extlink_tip' => 'קישור חיצוני (כולל קידומת http מל××”)',
'headline_sample' => 'כותרת',
'headline_tip' => 'כותרת – דרגה 2',
-'math_sample' => 'formula',
-'math_tip' => 'נוסחה מתמטית (LaTeX)',
'nowiki_sample' => 'טקסט ×œ× ×ž×¢×•×¦×‘',
'nowiki_tip' => 'טקסט ×œ× ×ž×¢×•×¦×‘ (×”×ª×¢×œ× ×ž×¡×™×ž× ×™ ויקי)',
'image_tip' => 'קובץ המוצג בתוך הדף',
@@ -984,6 +1023,7 @@ $2',
'token_suffix_mismatch' => "'''×¢×¨×™×›×ª×›× × ×“×—×ª×” כיוון שהדפדפן ×©×œ×›× ×ž×—×§ ×ת תווי הפיסוק ב×סימון העריכה.'''
העריכה נדחתה כדי למנוע בעיות ×›×לה בטקסט של הדף.
×œ×¢×ª×™× ×”×ª×§×œ×” מתרחשת עקב שימוש בשירות פרוקסי ×נונימי פגו×.",
+'edit_form_incomplete' => "'''כמה ×—×œ×§×™× ×ž×˜×•×¤×¡ העריכה ×œ× ×”×’×™×¢×• לשרת; בדקו היטב ×©×¢×¨×™×›×•×ª×™×›× ×œ× × ×¤×’×¢×• ונסו שוב.'''",
'editing' => 'עריכת $1',
'editingsection' => 'עריכת $1 (פסקה)',
'editingcomment' => 'עריכת $1 (פסקה חדשה)',
@@ -1213,7 +1253,8 @@ $1",
# Suppression log
'suppressionlog' => 'יומן הסתרות',
-'suppressionlogtext' => 'להלן רשימת המחיקות והחסימות הכוללות תוכן המוסתר ממפעילי המערכת. ר×ו ×ת [[Special:IPBlockList|רשימת ×”×ž×©×ª×ž×©×™× ×”×—×¡×•×ž×™×]] לרשימת החסימות הפעילות כעת.',
+'suppressionlogtext' => 'להלן רשימת המחיקות והחסימות הכוללות תוכן המוסתר ממפעילי המערכת.
+ר×ו ×ת [[Special:BlockList|רשימת כתובות ×”Ö¾IP החסומות]] לרשימת החסימות הפעילות כעת.',
# History merging
'mergehistory' => 'מיזוג גרס×ות של דפי×',
@@ -1324,12 +1365,13 @@ $1",
שימו לב שייתכן שהמידע של {{SITENAME}} ×©× ×ינו מעודכן.',
# Quickbar
-'qbsettings' => 'הגדרות סרגל כלי×',
-'qbsettings-none' => 'לל×',
-'qbsettings-fixedleft' => 'קבוע משמ×ל',
-'qbsettings-fixedright' => 'קבוע מימין',
-'qbsettings-floatingleft' => 'צף משמ×ל',
-'qbsettings-floatingright' => 'צף מימין',
+'qbsettings' => 'הגדרות סרגל כלי×',
+'qbsettings-none' => 'לל×',
+'qbsettings-fixedleft' => 'קבוע משמ×ל',
+'qbsettings-fixedright' => 'קבוע מימין',
+'qbsettings-floatingleft' => 'צף משמ×ל',
+'qbsettings-floatingright' => 'צף מימין',
+'qbsettings-directionality' => 'קבוע, תלוי בכיוון הכתב של השפה שלך',
# Preferences page
'preferences' => 'העדפות',
@@ -1340,9 +1382,10 @@ $1",
'changepassword' => 'שינוי סיסמה',
'prefs-skin' => 'עיצוב',
'skin-preview' => 'תצוגה מקדימה',
-'prefs-math' => 'נוסח×ות מתמטיות',
'datedefault' => 'ברירת המחדל',
+'prefs-beta' => '×פשרויות בט×',
'prefs-datetime' => 'ת×ריך ושעה',
+'prefs-labs' => '×פשרויות מעבדה',
'prefs-personal' => 'פרטי המשתמש',
'prefs-rc' => '×©×™× ×•×™×™× ×חרוני×',
'prefs-watchlist' => 'רשימת המעקב',
@@ -1364,8 +1407,6 @@ $1",
'columns' => 'עמודות:',
'searchresultshead' => 'חיפוש',
'resultsperpage' => 'מספר תוצ×ות בעמוד:',
-'contextlines' => 'שורות לכל תוצ××”:',
-'contextchars' => 'מספר תווי קונטקסט בשורה:',
'stub-threshold' => 'סף לעיצוב <a href="#" class="stub">קישורי×</a> ×œ×§×¦×¨×ž×¨×™× (בתי×):',
'stub-threshold-disabled' => 'מבוטל',
'recentchangesdays' => 'מספר ×”×™×ž×™× ×©×™×•×¦×’×• בדף ×”×©×™× ×•×™×™× ×”×חרוני×:',
@@ -1378,7 +1419,7 @@ $1",
'savedprefs' => 'העדפותיך נשמרו.',
'timezonelegend' => '×זור זמן:',
'localtime' => 'זמן מקומי:',
-'timezoneuseserverdefault' => 'ברירת המחדל של השרת',
+'timezoneuseserverdefault' => 'ברירת המחדל של ×”×תר ($1)',
'timezoneuseoffset' => '×חר (× × ×¦×™×™× ×• ×ת ההפרש)',
'timezoneoffset' => 'הפרש¹:',
'servertime' => 'השעה הנוכחית בשרת:',
@@ -1422,14 +1463,15 @@ $1",
×”×™× ×—×™×™×‘×ª ×œ× ×œ×”×™×•×ª ×רוכה מ{{PLURAL:$1|תו ×חד|Ö¾$1 תווי×}}.',
'yourgender' => 'מגדר:',
'gender-unknown' => '×œ× ×’×œ×•×™',
-'gender-male' => 'זכר',
-'gender-female' => 'נקבה',
+'gender-male' => 'משתמש',
+'gender-female' => 'משתמשת',
'prefs-help-gender' => '×ופציונ×לי: מידע ×–×” ×™×פשר לתוכנה להתייחס ××œ×™×›× ×‘×ופן נכון מבחינה מגדרית. מידע ×–×” ×™×”×™×” ציבורי.',
'email' => 'דו×"ל',
'prefs-help-realname' => '×”×©× ×”×מיתי ×”×•× ×ופציונ×לי.
×× ×ª×‘×—×¨×• לספקו, ×”×•× ×™×©×ž×© לייחוס ×¢×‘×•×“×ª×›× ×ליכ×.',
-'prefs-help-email' => 'כתובת דו×ר ×לקטרוני ×”×™× ×ופציונ×לית, ×ך ×”×™× ×“×¨×•×©×” ל×יפוס הסיסמה במקרה שתשכחו ×ת הסיסמה.
-תוכלו ×’× ×œ×‘×—×•×¨ ל×פשר ל××—×¨×™× ×œ×©×œ×•×— ×œ×›× ×ž×¡×¨ דרך דף המשתמש ×ו דף השיחה ×©×œ×›× ×œ×œ× ×¦×•×¨×š לחשוף ×ת כתובתכ×.',
+'prefs-help-email' => 'כתובת דו×ר ×לקטרוני ×”×™× ×ופציונ×לית, ×ך ×”×™× ×“×¨×•×©×” ל×יפוס הסיסמה במקרה שתשכחו ×ת הסיסמה.',
+'prefs-help-email-others' => 'ב××¤×©×¨×•×ª×›× ×’× ×œ×‘×—×•×¨ ל×פשר ל××—×¨×™× ×œ×™×¦×•×¨ ××ª×›× ×§×©×¨ ב×מצעות דו×"ל דרך קישור בדף המשתמש ×ו בדף השיחה שלכ×.
+כתובת הדו×"ל ×©×œ×›× ×œ× ×ª×™×—×©×£ ×›×©×ž×©×ª×ž×©×™× ××—×¨×™× ×™×™×¦×¨×• קשר ×יתכ×.',
'prefs-help-email-required' => 'כתובת דו×ר ×לקטרוני נדרשת לכתיבה ב×תר.',
'prefs-info' => 'מידע בסיסי',
'prefs-i18n' => 'בינ×ו×',
@@ -1554,15 +1596,15 @@ $1",
'right-userrights' => 'עריכת כל הרש×ות המשתמש',
'right-userrights-interwiki' => 'עריכת הרש×ות המשתמש של ×ž×©×ª×ž×©×™× ×‘×תרי ויקי ×חרי×',
'right-siteadmin' => 'נעילה וביטול נעילה של בסיס הנתוני×',
-'right-reset-passwords' => '×יפוס סיסמ×ות של ×ž×©×ª×ž×©×™× ×חרי×',
'right-override-export-depth' => '×™×™×¦×•× ×“×¤×™× ×›×•×œ×œ ×“×¤×™× ×ž×§×•×©×¨×™× ×¢×“ עומק של חמישה',
'right-sendemail' => 'שליחת דו×ר ×לקטרוני ×œ×ž×©×ª×ž×©×™× ×חרי×',
# User rights log
-'rightslog' => 'יומן תפקידי×',
-'rightslogtext' => 'זהו יומן ×”×©×™× ×•×™×™× ×‘×ª×¤×§×™×“×™ המשתמשי×.',
-'rightslogentry' => 'שינה ×ת ההרש×ות של $1 מ$2 ל$3',
-'rightsnone' => '(כלו×)',
+'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' => '×œ×§×¨×•× ×“×£ ×–×”',
@@ -1686,12 +1728,13 @@ $1",
'minlength1' => 'שמות ×§×‘×¦×™× ×¦×¨×™×›×™× ×œ×”×™×•×ª בני תו ×חד לפחות.',
'illegalfilename' => 'הקובץ "$1" מכיל ×ª×•×•×™× ×‘×œ×ª×™ חוקיי×. ×× × ×©× ×• ×ת שמו ונסו להעלותו שנית.',
'badfilename' => '×©× ×”×§×•×‘×¥ שונה ל־"$1".',
-'filetype-mime-mismatch' => 'סיומת הקובץ ××™× ×” מת×ימה לסוג ×”Ö¾MIME.',
+'filetype-mime-mismatch' => 'סיומת הקובץ ".$1" ××™× ×” מת×ימה לסוג ×”Ö¾MIME ×©× ×ž×¦× ×œ×§×•×‘×¥ ×–×” ($2).',
'filetype-badmime' => '×œ× × ×™×ª×Ÿ להעלות ×§×‘×¦×™× ×©×¡×•×’ ×”Ö¾MIME ×©×œ×”× ×”×•× "$1".',
'filetype-bad-ie-mime' => '×œ× × ×™×ª×Ÿ להעלות קובץ ×–×”, כיוון ש×ינטרנט ×קספלורר ×™×–×”×” ×ותו כקובץ מסוג "$1", ×©×”×•× ×¡×•×’ קובץ ×סור שעלול להיות מסוכן.',
'filetype-unwanted-type' => "'''\".\$1\"''' ×”×•× ×¡×•×’ קובץ בלתי מומלץ.
{{PLURAL:\$3|סוג הקובץ המומלץ הו×|סוגי ×”×§×‘×¦×™× ×”×ž×•×ž×œ×¦×™× ×”×}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' ×”×•× ×¡×•×’ קובץ ×סור להעל××”. {{PLURAL:\$3|סוג הקובץ המותר הו×|סוגי ×”×§×‘×¦×™× ×”×ž×•×ª×¨×™× ×”×}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|×”×•× ×¡×•×’ קובץ ×סור להעל××”|×”× ×¡×•×’×™ ×§×‘×¦×™× ××¡×•×¨×™× ×œ×”×¢×œ××”}}.
+{{PLURAL:$3|סוג הקובץ המותר הו×|סוגי ×”×§×‘×¦×™× ×”×ž×•×ª×¨×™× ×”×}} $2.',
'filetype-missing' => 'לקובץ ×ין סיומת (כדוגמת "<span dir="ltr">.jpg</span>").',
'empty-file' => 'הקובץ ששלחת היה ריק',
'file-too-large' => 'הקובץ ששלחת היה גדול מדי',
@@ -1707,6 +1750,7 @@ $1",
'large-file' => 'מומלץ ×©×”×§×‘×¦×™× ×œ× ×™×”×™×• ×’×“×•×œ×™× ×™×•×ª×¨ מ־$1 (גודל הקובץ ×©×”×¢×œ×™×ª× ×”×•× $2).',
'largefileserver' => 'גודל הקובץ ×©×”×¢×œ×™×ª× ×—×•×¨×’ ממגבלת השרת.',
'emptyfile' => 'נר××” שהקובץ ×©×”×¢×œ×™×ª× ×¨×™×§. ייתכן שהסיבה לכך ×”×™× ×©×’×™×ת הקלדה ×‘×©× ×”×§×•×‘×¥. ×× × ×•×“×ו שזהו הקובץ ×©×‘×¨×¦×•× ×›× ×œ×”×¢×œ×•×ª.',
+'windows-nonascii-filename' => '×תר ויקי ×–×” ×ינו תומך בשמות ×§×‘×¦×™× ×¢× ×ª×•×•×™× ×ž×™×•×—×“×™× ×ו ×ª×•×•×™× ×©××™× × ×‘×נגלית.',
'fileexists' => "קובץ ×‘×©× ×–×” כבר קיי×, ×× × ×‘×“×§×• ×ת '''<tt>[[:$1]]</tt>''' ×× ××™× ×›× ×‘×˜×•×—×™× ×©×‘×¨×¦×•× ×›× ×œ×”×—×œ×™×£ ×ותו.
[[$1|thumb]]",
'filepageexists' => "דף תי×ור הקובץ עבור קובץ ×–×” כבר נוצר ב'''<tt>[[:$1]]</tt>''', ×ך ×œ× ×§×™×™× ×§×•×‘×¥ ×‘×©× ×–×”.
@@ -1744,6 +1788,8 @@ $1",
'uploadvirus' => 'הקובץ מכיל וירוס!
פרטי×:
<div dir="ltr">$1</div>',
+'uploadjava' => 'קובץ ×–×” ×”×•× ×§×•×‘×¥ ZIP שמכיל קובץ &lrm;.class של Java.
+העל×ת קובצי Java ×סורה, כיוון ×©×”× ×™×›×•×œ×™× ×œ×’×¨×•× ×œ×¢×§×™×¤×ª מגבלות ×”×בטחה.',
'upload-source' => 'קובץ המקור',
'sourcefilename' => '×©× ×”×§×•×‘×¥:',
'sourceurl' => 'כתובת URL של המקור:',
@@ -1753,10 +1799,6 @@ $1",
'upload-options' => '×פשרויות העל××”',
'watchthisupload' => 'מעקב ×חרי קובץ ×–×”',
'filewasdeleted' => 'קובץ ×‘×©× ×–×” כבר הועלה בעבר, ול×חר מכן נמחק. ×× × ×‘×“×§×• ×ת הדף $1 לפני שתמשיכו להעלותו שנית.',
-'upload-wasdeleted' => "'''×זהרה: ×”× ×›× ×ž×¢×œ×™× ×§×•×‘×¥ שנמחק בעבר.'''
-
-×× × ×©×§×œ×• ×”×× ×™×”×™×” ×–×” נכון להמשיך בהעל×ת הקובץ.
-יומן המחיקות של הקובץ מוצג להלן:",
'filename-bad-prefix' => "×©× ×”×§×•×‘×¥ ש××ª× ×ž×¢×œ×™× ×ž×ª×—×™×œ ×¢× '''\"\$1\"''', ×©×”×•× ×©× ×©×ינו מת×ר ×ת הקובץ ובדרך כלל מוכנס ×וטומטית על ידי מצלמות דיגיטליות. ×× × ×‘×—×¨×• ×©× ×ž×ª××™× ×™×•×ª×¨ לקובץ, שית×ר ×ת תכניו.",
'filename-prefix-blacklist' => ' #<!-- × × ×œ×”×©×יר שורה זו בדיוק כפי ×©×”×™× --> <pre>
# התחביר ×”×•× ×›×“×œ×§×ž×Ÿ:
@@ -1794,12 +1836,29 @@ $1',
'upload-unknown-size' => 'גודל בלתי ידוע',
'upload-http-error' => 'התרחשה שגי×ת HTTPâ€: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => '×ירעה שגי××” במהלך פתיחת הקובץ לבדיקות ZIP.',
+'zip-wrong-format' => 'הקובץ שצוין ×ינו קובץ ZIP.',
+'zip-bad' => 'הקובץ ×”×•× ×§×•×‘×¥ ZIP ×¤×’×•× ×ו בלתי ×§×¨×™× ×ž×¡×™×‘×” ×חרת.
+×œ× × ×™×ª×Ÿ לבצע עליו בדיקת ×בטחה כנדרש.',
+'zip-unsupported' => 'קובץ ×–×” ×”×•× ×§×•×‘×¥ ZIP המשתמש בתכונות ZIP ש×ינן נתמכות על ידי מדיה־ויקי.
+×œ× × ×™×ª×Ÿ לבצע עליו בדיקת ×בטחה כנדרש.',
+
+# Special:UploadStash
+'uploadstash' => 'מ×גר העל×ות',
+'uploadstash-summary' => 'דף ×–×” מ×פשר גישה ×œ×§×‘×¦×™× ×©×”×•×¢×œ×• (×ו נמצ××™× ×‘×ª×”×œ×™×š העל××”), ×ך ×˜×¨× ×¤×•×¨×¡×ž×• ב×תר הוויקי. ×§×‘×¦×™× ×לה ××™× × ×’×œ×•×™×™× ×œ×יש מלבד המשתמש שהעלה ×ות×.',
+'uploadstash-clear' => 'מחיקת ×”×§×‘×¦×™× ×‘×ž×גר',
+'uploadstash-nofiles' => '×ין ×œ×›× ×§×‘×¦×™× ×‘×ž×גר.',
+'uploadstash-badtoken' => 'ביצוע הפעולה נכשל, ×ולי בגלל פקיעת תוקפו של ×סימון העריכה שלכ×. נסו שוב.',
+'uploadstash-errclear' => 'מחיקת ×”×§×‘×¦×™× × ×›×©×œ×”.',
+'uploadstash-refresh' => 'רענון רשימת הקבצי×',
+
# img_auth script messages
'img-auth-accessdenied' => 'הגישה נדחתה',
'img-auth-nopathinfo' => 'PATH_INFO חסר.
השרת ×ינו מוגדר להעברת מידע ×–×”.
ייתכן ×©×”×•× ×ž×‘×•×¡×¡ על CGI ולכן ×ינו יכול לתמוך ב־img_auth.
-ר×ו http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization ר×ו דף עזרה על ×ישור תמונות].',
'img-auth-notindir' => 'הנתיב המבוקש ×ינו בתיקיית ההעל×ות שהוגדרה.',
'img-auth-badtitle' => '×œ× × ×™×ª×Ÿ ליצור כותרת תקינה מתוך "$1".',
'img-auth-nologinnWL' => '××™× ×›× ×ž×—×•×‘×¨×™× ×œ×—×©×‘×•×Ÿ והדף "$1" ×ינו ברשימה המותרת.',
@@ -1874,7 +1933,7 @@ $1',
ניתן לצפות ב[[Special:WhatLinksHere/$2|רשימה המל××”]].',
'nolinkstoimage' => '×ין ×“×¤×™× ×©×ž×©×ª×ž×©×™× ×‘×§×•×‘×¥ ×–×”.',
'morelinkstoimage' => 'ר×ו [[Special:WhatLinksHere/$1|×“×¤×™× × ×•×¡×¤×™×]] ×©×ž×©×ª×ž×©×™× ×‘×§×•×‘×¥ ×–×”.',
-'redirectstofile' => '{{PLURAL:$1|הדף ×”×‘× ×”×•× ×“×£ הפניה|×”×“×¤×™× ×”×‘××™× ×”× ×“×¤×™ הפניה}} לקובץ ×–×”:',
+'linkstoimage-redirect' => '$1 (הפניה של קובץ) $2',
'duplicatesoffile' => '{{PLURAL:$1|הקובץ ×”×‘× ×–×”×”|×”×§×‘×¦×™× ×”×‘××™× ×–×”×™×}} לקובץ ×–×” ([[Special:FileDuplicateSearch/$2|×œ×¤×¨×˜×™× × ×•×¡×¤×™×]]):',
'sharedupload' => 'זהו קובץ מתוך $1 וניתן להשתמש בו ×’× ×‘×ž×™×–×ž×™× ×חרי×.',
'sharedupload-desc-there' => 'זהו קובץ מתוך $1 וניתן להשתמש בו ×’× ×‘×ž×™×–×ž×™× ×חרי×.
@@ -1967,18 +2026,19 @@ $1',
'statistics-users-active-desc' => '×ž×©×ª×ž×©×™× ×©×‘×™×¦×¢×• פעולה כלשהי ב{{PLURAL:$1|×™×•× ×”×חרון|Ö¾$1 ×”×™×ž×™× ×”×חרוני×}}',
'statistics-mostpopular' => '×”×“×¤×™× ×”× ×¦×¤×™× ×‘×™×•×ª×¨',
-'disambiguations' => 'דפי פירושוני×',
+'disambiguations' => '×“×¤×™× ×©×ž×§×©×¨×™× ×œ×“×¤×™ פירושוני×',
'disambiguationspage' => 'Template:פירושוני×',
'disambiguations-text' => "×”×“×¤×™× ×”×‘××™× ×ž×§×©×¨×™× ×œ'''דפי פירושוני×'''.
×¢×œ×™×”× ×œ×§×©×¨ לדף ×”× ×•×©× ×”×¨×œ×•×•× ×˜×™ ×‘×ž×§×•× ×–×ת.<br />
הדף נחשב לדף ×¤×™×¨×•×©×•× ×™× ×× ×”×•× ×ž×©×ª×ž×© בתבנית המקושרת מהדף [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'הפניות כפולות',
-'doubleredirectstext' => 'בדף ×”×–×” מופיעה רשימת דפי הפניה ×©×ž×¤× ×™× ×œ×“×¤×™ הפניה ×חרי×.
+'doubleredirects' => 'הפניות כפולות',
+'doubleredirectstext' => 'בדף ×”×–×” מופיעה רשימת דפי הפניה ×©×ž×¤× ×™× ×œ×“×¤×™ הפניה ×חרי×.
כל שורה מכילה קישור לשתי ההפניות הר×שונות, וכן ×ת היעד של ההפניה השנייה, ×©×”×™× ×œ×¨×•×‘ היעד ×”"×מיתי" של ההפניה, שההפניה הר×שונה ×מורה להצביע ×ליו.
×¤×¨×™×˜×™× <del>מחוקי×</del> כבר תוקנו.',
-'double-redirect-fixed-move' => '[[$1]] הועבר. כעת ×”×•× ×”×¤× ×™×” לדף [[$2]].',
-'double-redirect-fixer' => 'מתקן הפניות',
+'double-redirect-fixed-move' => '[[$1]] הועבר. כעת ×”×•× ×”×¤× ×™×” לדף [[$2]].',
+'double-redirect-fixed-maintenance' => 'תיקון הפניה כפולה מ[[$1]] ל[[$2]].',
+'double-redirect-fixer' => 'מתקן הפניות',
'brokenredirects' => 'הפניות ×œ× ×ª×§×™× ×•×ª',
'brokenredirectstext' => 'ההפניות שלהלן מפנות ×œ×“×¤×™× ×©××™× × ×§×™×™×ž×™×:',
@@ -2055,6 +2115,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|הב××”|$1 הב×ות}}',
'pager-older-n' => '{{PLURAL:$1|הקודמת|$1 הקודמות}}',
'suppress' => 'הסתרה',
+'querypage-disabled' => 'דף מיוחד ×–×” מבוטל עקב בעיות ביצועי×.',
# Book sources
'booksources' => 'מש×בי ספרות חיצוניי×',
@@ -2065,8 +2126,8 @@ $1',
'booksources-invalid-isbn' => 'המסת"ב שניתן כנר××” ×ינו תקין; ×× × ×‘×“×§×• ×× ×‘×™×¦×¢×ª× ×˜×¢×•×™×•×ª בהעתקה מהמידע המקורי.',
# Special:Log
-'specialloguserlabel' => 'משתמש:',
-'speciallogtitlelabel' => 'כותרת:',
+'specialloguserlabel' => 'בוצעו על ידי המשתמש:',
+'speciallogtitlelabel' => 'יעד (כותרת ×ו משתמש):',
'log' => 'יומני×',
'all-logs-page' => 'כל ×”×™×•×ž× ×™× ×”×¦×™×‘×•×¨×™×™×',
'alllogstext' => 'תצוגה משולבת של כל סוגי ×”×™×•×ž× ×™× ×”×–×ž×™× ×™× ×‘{{grammar:תחילית|{{SITENAME}}}}.
@@ -2110,8 +2171,9 @@ $1',
'linksearch-pat' => 'תבנית קישור לחיפוש:',
'linksearch-ns' => 'מרחב ש×:',
'linksearch-ok' => 'חיפוש',
-'linksearch-text' => 'ניתן להשתמש ×‘×ª×•×•×™× ×›×œ×œ×™×™×, לדוגמה <span dir="ltr">"*.wikipedia.org"</span>.<br />
-×¤×¨×•×˜×•×§×•×œ×™× × ×ª×ž×›×™×: <tt dir="ltr">$1</tt>',
+'linksearch-text' => 'ניתן להשתמש ×‘×ª×•×•×™× ×›×œ×œ×™×™×, לדוגמה <span dir="ltr">"*.wikipedia.org"</span>.
+נדרשת לפחות סיומת ×ינטרנט (TLD), למשל <span dir="ltr">"*.org"</span>.<br />
+×¤×¨×•×˜×•×§×•×œ×™× × ×ª×ž×›×™×: <tt dir="ltr">$1</tt> (×ין להוסיף ××•×ª× ×‘×—×™×¤×•×©).',
'linksearch-line' => '$1 מקושר מהדף $2',
'linksearch-error' => '×ª×•×•×™× ×›×œ×œ×™×™× ×™×›×•×œ×™× ×œ×”×•×¤×™×¢ רק בתחילת ×©× ×”×©×¨×ª.',
@@ -2172,6 +2234,10 @@ $1',
'noemailtext' => 'משתמש ×–×” ×œ× ×”×–×™×Ÿ כתובת דו×ר ×לקטרוני חוקית.',
'nowikiemailtitle' => 'שליחת דו×"ל ××™× ×” ×פשרית',
'nowikiemailtext' => 'משתמש ×–×” בחר ×©×œ× ×œ×§×‘×œ דו×ר ×לקטרוני ×ž×ž×©×ª×ž×©×™× ×חרי×.',
+'emailnotarget' => '×©× ×”×ž×©×ª×ž×© של הנמען ×œ× ×§×™×™× ×ו בלתי תקין.',
+'emailtarget' => 'הקלידו ×ת ×©× ×”×ž×©×ª×ž×© של הנמען',
+'emailusername' => '×©× ×ž×©×ª×ž×©:',
+'emailusernamesubmit' => 'שליחה',
'email-legend' => 'שליחת דו×ר ×לקטרוני למשתמש ×חר של {{SITENAME}}',
'emailfrom' => 'מ×ת:',
'emailto' => '×ל:',
@@ -2196,11 +2262,11 @@ $1',
'watchlistanontext' => '×¢×œ×™×›× $1 כדי לצפות ×ו לערוך ×¤×¨×™×˜×™× ×‘×¨×©×™×ž×ª המעקב.',
'watchnologin' => '×œ× × ×›× ×¡×ª× ×œ×—×©×‘×•×Ÿ',
'watchnologintext' => '×¢×œ×™×›× [[Special:UserLogin|להיכנס לחשבון]] כדי לערוך ×ת רשימת המעקב.',
-'addedwatch' => 'הדף נוסף לרשימת המעקב',
+'addwatch' => 'הוספה לרשימת המעקב',
'addedwatchtext' => 'הדף [[:$1]] נוסף ל[[Special:Watchlist|רשימת המעקב]]. ×©×™× ×•×™×™× ×©×™×™×¢×¨×›×• בעתיד, בדף ×–×” ובדף השיחה שלו, יוצגו ברשימת המעקב.
בנוסף, הדף יופיע בכתב מודגש ב[[Special:RecentChanges|רשימת ×”×©×™× ×•×™×™× ×”×חרוני×]], כדי להקל ×¢×œ×™×›× ×ת המעקב ×חריו.',
-'removedwatch' => 'הדף הוסר מרשימת המעקב',
+'removewatch' => 'הסרה מרשימת המעקב',
'removedwatchtext' => 'הדף [[:$1]] הוסר מ[[Special:Watchlist|רשימת המעקב]].',
'watch' => 'מעקב',
'watchthispage' => 'מעקב ×חרי דף ×–×”',
@@ -2221,8 +2287,9 @@ $1',
'watchlist-options' => '×פשרויות ברשימת המעקב',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'בהוספה לרשימת המעקב…',
-'unwatching' => 'בהסרה מרשימת המעקב…',
+'watching' => 'בהוספה לרשימת המעקב…',
+'unwatching' => 'בהסרה מרשימת המעקב…',
+'watcherrortext' => '×ירעה שגי××” בעת שינוי הגדרות רשימת המעקב של "$1".',
'enotif_mailer' => 'הודעות {{SITENAME}}',
'enotif_reset' => 'לסמן ×ת כל ×”×“×¤×™× ×›×ילו נצפו',
@@ -2252,16 +2319,16 @@ $NEWPAGE
--
כדי לשנות ×ת ההגדרות של הודעות הדו×"ל הנשלחות ×ליכ×, בקרו בדף
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
כדי לשנות ×ת הגדרות רשימת המעקב, בקרו בדף
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
כדי למחוק ×ת הדף מרשימת המעקב שלכ×, בקרו בדף
$UNWATCHURL
למשוב ולעזרה נוספת:
-{{fullurl::{{MediaWiki:Helppage}}}}',
+{{canonicalurl::{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'מחיקה',
@@ -2279,7 +2346,8 @@ $UNWATCHURL
×× × ×שרו שזה ×כן מה ש××ª× ×ž×ª×›×•×•× ×™× ×œ×¢×©×•×ª, ש××ª× ×ž×‘×™× ×™× ×ת התוצ×ות של מעשה ×›×–×”, ושהמעשה מבוצע בהת×× ×œ[[{{MediaWiki:Policy-url}}|נוהלי ×”×תר]].',
'actioncomplete' => 'הפעולה בוצעה',
'actionfailed' => 'הפעולה נכשלה',
-'deletedtext' => '<strong><nowiki>$1</nowiki></strong> נמחק. ר×ו $2 לרשימת המחיקות ×”×חרונות.',
+'deletedtext' => '"$1" נמחק.
+ר×ו $2 לרשימת המחיקות ×”×חרונות.',
'deletedarticle' => 'מחק ×ת [[$1]]',
'suppressedarticle' => 'הסתיר ×ת [[$1]]',
'dellogpage' => 'יומן מחיקות',
@@ -2335,7 +2403,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'זמן פקיעת ההגנה בלתי חוקי.',
'protect_expiry_old' => 'זמן פקיעת ההגנה כבר עבר.',
'protect-unchain-permissions' => 'שינוי ×פשרויות ×”×’× ×” נוספות',
-'protect-text' => "בדף ×–×” ×פשר לר×ות ולשנות ×ת רמת ×”×”×’× ×” של הדף '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "בדף ×–×” ×פשר לר×ות ולשנות ×ת רמת ×”×”×’× ×” של הדף '''$1'''.",
'protect-locked-blocked' => "××™× ×›× ×™×›×•×œ×™× ×œ×©× ×•×ª ×ת רמת ×”×”×’× ×” של הדף ×‘×¢×•×“×›× ×—×¡×•×ž×™×.
להלן ההגדרות הנוכחיות עבור הדף '''$1''':",
'protect-locked-dblock' => "××™× ×›× ×™×›×•×œ×™× ×œ×©× ×•×ª ×ת רמת ×”×”×’× ×” על הדף שכן בסיס ×”× ×ª×•× ×™× ×—×¡×•× ×‘×¨×’×¢ ×–×”.
@@ -2390,8 +2458,7 @@ $UNWATCHURL
ייתכן שה×רכיון ינוקה מעת לעת.',
'undelete-fieldset-title' => 'שחזור גרס×ות',
'undeleteextrahelp' => "לשחזור היסטוריית הגרס×ות המל××” של הדף, ×ל תסמנו ×©×•× ×ª×™×‘×ª סימון ולחצו על '''{{int:undeletebtn}}'''.
-לשחזור של גרס×ות מסוימות בלבד, סמנו ×ת תיבות הסימון של הגרס×ות הללו, ולחצו על '''{{int:undeletebtn}}'''.
-לחיצה על '''{{int:undeletereset}}''' תנקה ×ת התקציר, ו×ת כל תיבות הסימון.",
+לשחזור של גרס×ות מסוימות בלבד, סמנו ×ת תיבות הסימון של הגרס×ות הללו, ולחצו על '''{{int:undeletebtn}}'''.",
'undeleterevisions' => '{{PLURAL:$1|גרסה ×חת נשמרה|$1 גרס×ות נשמרו}} ב×רכיון',
'undeletehistory' => '×× ×ª×©×—×–×¨×• ×ת הדף, כל הגרס×ות תשוחזרנה להיסטוריית ×”×©×™× ×•×™×™× ×©×œ×•.
×× ×™×© כבר דף חדש ב×ותו הש×, הגרס×ות ×•×”×©×™× ×•×™×™× ×™×•×¤×™×¢×• רק בדף ההיסטוריה שלו.',
@@ -2431,9 +2498,12 @@ $1',
'undelete-show-file-submit' => 'כן',
# Namespace form on various pages
-'namespace' => 'מרחב ש×:',
-'invert' => '×œ×œ× ×ž×¨×—×‘ ×–×”',
-'blanknamespace' => '(ר×שי)',
+'namespace' => 'מרחב ש×:',
+'invert' => '×œ×œ× ×ž×¨×—×‘ ×–×”',
+'tooltip-invert' => 'יש לסמן תיבה זו כדי להסתיר ×©×™× ×•×™×™× ×‘×“×¤×™× ×‘×ª×•×š מרחב ×”×©× ×©× ×‘×—×¨ (ובתוך מרחב ×”×©× ×”×¦×ž×•×“, ×× ×”×•× ×¡×•×ž×Ÿ)',
+'namespace_association' => 'מרחב ×©× ×¦×ž×•×“',
+'tooltip-namespace_association' => 'יש לסמן תיבה זו כדי לכלול ×’× ×ת מרחב דפי השיחה ×ו דפי ×”× ×•×©× ×”×ž×©×•×™×›×™× ×œ×ž×¨×—×‘ ×”×©× ×”× ×‘×—×¨',
+'blanknamespace' => '(ר×שי)',
# Contributions
'contributions' => 'תרומות המשתמש',
@@ -2484,13 +2554,15 @@ $1',
'whatlinkshere-filters' => 'מסנני×',
# Block/unblock
+'autoblockid' => 'חסימה ×וטומטית #$1',
+'block' => 'חסימת משתמש',
+'unblock' => 'שחרור משתמש',
'blockip' => 'חסימת משתמש',
'blockip-title' => 'חסימת משתמש',
'blockip-legend' => 'חסימת משתמש',
'blockiptext' => 'השתמשו בטופס שלהלן כדי ×œ×—×¡×•× ×ת הרש×ות הכתיבה מכתובת IP ×ו משתמש מסוימי×.
חסימות ×›×לה צריכות להתבצע רק כדי למנוע השחתה, ובהת×× ×œ[[{{MediaWiki:Policy-url}}|נהלי×]].
×× × ×ž×œ×ו ×ת הסיבה הפרטנית לחסימה להלן (לדוגמה, ב×מצעות ציון ×“×¤×™× ×ž×¡×•×™×ž×™× ×©×”×©×—×™×ª המשתמש).',
-'ipaddress' => 'כתובת IP:',
'ipadressorusername' => 'כתובת IP ×ו ×©× ×ž×©×ª×ž×©:',
'ipbexpiry' => 'פקיעה:',
'ipbreason' => 'סיבה:',
@@ -2503,7 +2575,7 @@ $1',
** התנהגות מ×יימת/הטרדה
** שימוש לרעה בחשבונות מרובי×
** ×©× ×ž×©×ª×ž×© בעייתי",
-'ipbanononly' => 'חסימה של ×ž×©×ª×ž×©×™× ×× ×•× ×™×ž×™×™× ×‘×œ×‘×“',
+'ipb-hardblock' => 'ביטול ×”×פשרות של ×ž×©×ª×ž×©×™× ×¨×©×•×ž×™× ×œ×¢×¨×•×š מכתובת IP זו',
'ipbcreateaccount' => 'חסימה של יצירת חשבונות',
'ipbemailban' => 'חסימה של שליחת דו×ר ×לקטרוני',
'ipbenableautoblock' => 'חסימה ×’× ×©×œ כתובת ×”Ö¾IP שלו וכל כתובת IP ×חרת שישתמש בה',
@@ -2514,13 +2586,16 @@ $1',
'ipbotherreason' => 'סיבה ×חרת/נוספת:',
'ipbhidename' => 'הסתרת ×©× ×”×ž×©×ª×ž×© מהעריכות ומהרשימות',
'ipbwatchuser' => 'מעקב ×חרי דפי המשתמש והשיחה של משתמש ×–×”',
-'ipballowusertalk' => 'מתן ×פשרות למשתמש לערוך ×ת דף השיחה של עצמו בעת החסימה',
+'ipb-disableusertalk' => 'ביטול ×”×פשרות של המשתמש לערוך ×ת דף השיחה של עצמו בעת החסימה',
'ipb-change-block' => 'חסימת המשתמש מחדש ×¢× ×”×’×“×¨×•×ª ×לה',
+'ipb-confirm' => '×ישור החסימה',
'badipaddress' => 'משתמש ×ו כתובת IP שגויי×.',
'blockipsuccesssub' => 'החסימה הושלמה בהצלחה',
-'blockipsuccesstext' => "{{GENDER:$1|המשתמש|המשתמשת}} [[Special:Contributions/$1|$1]] {{GENDER:$1|נחס×|נחסמה}}.
+'blockipsuccesstext' => '{{GENDER:$1|המשתמש|המשתמשת}} [[Special:Contributions/$1|$1]] {{GENDER:$1|נחס×|נחסמה}}.
-ר' ×ת [[Special:IPBlockList|רשימת הכתובות החסומות]] כדי לסקור חסימות.",
+ר×ו ×ת [[Special:BlockList|רשימת הכתובות החסומות]] כדי לצפות בחסימות.',
+'ipb-blockingself' => '××ª× ×¢×•×ž×“×™× ×œ×—×¡×•× ×ת עצמכ×! ×”×× ××ª× ×‘×מת ×¨×•×¦×™× ×œ×¢×©×•×ª ×ת ×–×”?',
+'ipb-confirmhideuser' => '××ª× ×¢×•×ž×“×™× ×œ×—×¡×•× ×ž×©×ª×ž×© ×¢× ×”×פשרות "הסתרת משתמש". פעולה זו תסתיר ×ת ×©× ×”×ž×©×ª×ž×© בכל הרשימות ופעולות היומן. ×”×× ××ª× ×‘×˜×•×—×™× ×©×‘×¨×¦×•× ×›× ×œ×¢×©×•×ª ×–×ת?',
'ipb-edit-dropdown' => 'עריכת סיבות החסימה',
'ipb-unblock-addr' => 'הסרת חסימה של $1',
'ipb-unblock' => 'הסרת חסימה של ×©× ×ž×©×ª×ž×© ×ו כתובת IP',
@@ -2530,17 +2605,23 @@ $1',
'unblockiptext' => 'השתמשו בטופס שלהלן כדי להחזיר ×ת הרש×ות הכתיבה למשתמש ×ו כתובת IP חסומי×.',
'ipusubmit' => 'שחרור חסימה',
'unblocked' => 'המשתמש [[User:$1|$1]] שוחרר מחסימתו.',
+'unblocked-range' => '$1 שוחרר מחסימתו',
'unblocked-id' => 'חסימה מספר $1 שוחררה.',
+'blocklist' => '×ž×©×ª×ž×©×™× ×—×¡×•×ž×™×',
'ipblocklist' => '×ž×©×ª×ž×©×™× ×—×¡×•×ž×™×',
'ipblocklist-legend' => 'מצי×ת משתמש חסו×',
-'ipblocklist-username' => '×©× ×ž×©×ª×ž×© ×ו כתובת IP:',
-'ipblocklist-sh-userblocks' => '$1 חסימות של חשבונות',
-'ipblocklist-sh-tempblocks' => '$1 חסימות זמניות',
-'ipblocklist-sh-addressblocks' => '$1 חסימות של כתובות IP יחידות',
+'blocklist-userblocks' => 'הסתרת חסימת חשבונות',
+'blocklist-tempblocks' => 'הסתרת חסימות זמניות',
+'blocklist-addressblocks' => 'הסתרת חסימות IP בודד',
+'blocklist-timestamp' => 'זמן',
+'blocklist-target' => 'יעד',
+'blocklist-expiry' => 'פקיעה',
+'blocklist-by' => 'מפעיל חוס×',
+'blocklist-params' => 'הגדרות חסימה',
+'blocklist-reason' => 'סיבה',
'ipblocklist-submit' => 'חיפוש',
'ipblocklist-localblock' => 'חסימה מקומית',
'ipblocklist-otherblocks' => '{{PLURAL:$1|חסימה ×חרת|חסימות ×חרות}}',
-'blocklistline' => '$1 $2 ×—×¡× ×ת $3 ($4)',
'infiniteblock' => 'בלתי מוגבל בזמן',
'expiringblock' => 'פוקע ב־$2, $1',
'anononlyblock' => '×ž×©×ª×ž×©×™× ×× ×•× ×™×ž×™×™× ×‘×œ×‘×“',
@@ -2562,7 +2643,7 @@ $1',
'reblock-logentry' => 'שינה ×ת הגדרות החסימה של [[$1]] ×¢× ×–×ž×Ÿ פקיעה של $2 $3',
'blocklogtext' => 'זהו יומן פעולות החסימה והשחרור של משתמשי×.
כתובות IP שנחסמו ×וטומטית ×ינן מופיעות.
-ר×ו ×’× ×ת [[Special:IPBlockList|רשימת הכתובות החסומות]] לרשימה של החרמות וחסימות פעילות כעת.',
+ר×ו ×’× ×ת [[Special:BlockList|רשימת הכתובות החסומות]] לרשימה של החרמות וחסימות פעילות כעת.',
'unblocklogentry' => 'שחרר ×ת $1',
'block-log-flags-anononly' => '×ž×©×ª×ž×©×™× ×× ×•× ×™×ž×™×™× ×‘×œ×‘×“',
'block-log-flags-nocreate' => 'יצירת חשבונות נחסמה',
@@ -2576,9 +2657,9 @@ $1',
'ipb_expiry_temp' => 'חסימות הכוללות הסתרת ×©× ×ž×©×ª×ž×© חייבות להיות לזמן בלתי מוגבל.',
'ipb_hide_invalid' => '×œ× × ×™×ª×Ÿ להסתיר ×©× ×ž×©×ª×ž×© ×–×”; ייתכן שבוצעו ממנו יותר מדי עריכות.',
'ipb_already_blocked' => 'המשתמש "$1" כבר נחס×',
-'ipb-needreblock' => '== כבר × ×—×¡× ==
-$1 כבר נחס×. ×”×× ×‘×¨×¦×•× ×›× ×œ×©× ×•×ª ×ת הגדרות החסימה?',
+'ipb-needreblock' => '$1 כבר נחס×. ×”×× ×‘×¨×¦×•× ×›× ×œ×©× ×•×ª ×ת הגדרות החסימה?',
'ipb-otherblocks-header' => '{{PLURAL:$1|חסימה ×חרת|חסימות ×חרות}}',
+'unblock-hideuser' => '×œ× × ×™×ª×Ÿ לשחרר משתמש ×–×”, כיוון ×©×©× ×”×ž×©×ª×ž×© שלו הוסתר.',
'ipb_cant_unblock' => 'שגי××”: חסימה מספר $1 ×œ× × ×ž×¦××”. ייתכן ×©×”×™× ×›×‘×¨ שוחררה.',
'ipb_blocked_as_range' => 'שגי××”: כתובת ×”Ö¾IP $1 ××™× ×” חסומה ישירות ולכן ×œ× × ×™×ª×Ÿ לשחרר ×ת חסימתה. ×¢× ×–×ת, ×”×™× ×—×¡×•×ž×” כחלק מהטווח $2, שניתן לשחרר ×ת חסימתו.',
'ip_range_invalid' => 'טווח IP שגוי.',
@@ -2617,10 +2698,10 @@ $1 כבר נחס×. ×”×× ×‘×¨×¦×•× ×›× ×œ×©× ×•×ª ×ת הגדרות החסי×
'unlockdbsuccesstext' => 'שוחררה הנעילה של בסיס הנתוני×',
'lockfilenotwritable' => 'קובץ נעילת בסיס ×”× ×ª×•× ×™× ×ינו ניתן לכתיבה. כדי ש×פשר ×™×”×™×” לנעול ×ת בסיס ×”× ×ª×•× ×™× ×ו לבטל ×ת נעילתו, שרת ×”×ינטרנט צריך לקבל הרש×ות לכתוב ×ליו.',
'databasenotlocked' => 'בסיס ×”× ×ª×•× ×™× ×ינו נעול.',
+'lockedbyandtime' => '(על־ידי $1 ב־$3, $2)',
# Move page
'move-page' => 'העברת $1',
-'move-page-backlink' => '→ $1',
'move-page-legend' => 'העברת דף',
'movepagetext' => "שימוש בטופס שלהלן ישנה ×ת שמו של דף, ויעביר ×ת כל ההיסטוריה שלו ×œ×©× ×—×“×©.
×”×©× ×”×™×©×Ÿ יהפוך לדף הפניה ×ל הדף ×¢× ×”×©× ×”×—×“×©.
@@ -2880,35 +2961,42 @@ $1 כבר נחס×. ×”×× ×‘×¨×¦×•× ×›× ×œ×©× ×•×ª ×ת הגדרות החסי×
'tooltip-summary' => 'להכנסת תקציר קצר',
# Stylesheets
-'common.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על כל ×”×¢×™×¦×•×‘×™× */',
-'standard.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Standard בלבד */',
-'nostalgia.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Nostalgia בלבד */',
-'cologneblue.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב CologneBlue בלבד */',
-'monobook.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Monobook בלבד */',
-'myskin.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב MySkin בלבד */',
-'chick.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Chick בלבד */',
-'simple.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Simple בלבד */',
-'modern.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Modern בלבד */',
-'vector.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Vector בלבד */',
-'print.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על הפלט בהדפסה בלבד */',
-'handheld.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על ×ž×›×©×™×¨×™× × ×™×™×“×™× ×”×ž×‘×•×¡×¡×™× ×¢×œ העיצוב שבהגדרה $wgHandheldStyle בלבד */',
+'common.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על כל ×”×¢×™×¦×•×‘×™× */',
+'standard.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Standard בלבד */',
+'nostalgia.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Nostalgia בלבד */',
+'cologneblue.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב CologneBlue בלבד */',
+'monobook.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Monobook בלבד */',
+'myskin.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב MySkin בלבד */',
+'chick.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Chick בלבד */',
+'simple.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Simple בלבד */',
+'modern.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Modern בלבד */',
+'vector.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על העיצוב Vector בלבד */',
+'print.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על הפלט בהדפסה בלבד */',
+'handheld.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על ×ž×›×©×™×¨×™× × ×™×™×“×™× ×”×ž×‘×•×¡×¡×™× ×¢×œ העיצוב שבהגדרה $wgHandheldStyle בלבד */',
+'noscript.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על ×ž×©×ª×ž×©×™× ×¢× JavaScript מבוטל */',
+'group-autoconfirmed.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על ×ž×©×ª×ž×©×™× ×•×ª×™×§×™× ×‘×œ×‘×“ */',
+'group-bot.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על ×‘×•×˜×™× ×‘×œ×‘×“ */',
+'group-sysop.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על מפעילי מערכת בלבד */',
+'group-bureaucrat.css' => '/* הסגנונות ×”× ×›×ª×‘×™× ×›×ן ישפיעו על ×‘×™×•×¨×•×§×¨×˜×™× ×‘×œ×‘×“ */',
# Scripts
-'common.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ עבור כל ×”×ž×©×ª×ž×©×™× ×‘×›×œ טעינת עמוד */',
-'standard.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Standard */',
-'nostalgia.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Nostalgia */',
-'cologneblue.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ CologneBlue */',
-'monobook.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Monobook */',
-'myskin.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ MySkin */',
-'chick.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Chick */',
-'simple.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Simple */',
-'modern.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Modern */',
-'vector.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Vector */',
+'common.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ עבור כל ×”×ž×©×ª×ž×©×™× ×‘×›×œ טעינת עמוד */',
+'standard.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Standard */',
+'nostalgia.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Nostalgia */',
+'cologneblue.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ CologneBlue */',
+'monobook.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Monobook */',
+'myskin.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ MySkin */',
+'chick.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Chick */',
+'simple.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Simple */',
+'modern.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Modern */',
+'vector.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×”×ž×©×ª×ž×©×™× ×‘×¢×™×¦×•×‘ Vector */',
+'group-autoconfirmed.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×ž×©×ª×ž×©×™× ×•×ª×™×§×™× */',
+'group-bot.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×‘×•×˜×™× */',
+'group-sysop.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור מפעילי מערכת */',
+'group-bureaucrat.js' => '/* כל סקריפט JavaScript שנכתב ×›×ן ירוץ רק עבור ×‘×™×•×¨×•×§×¨×˜×™× */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata מבוטל בשרת זה.',
-'nocreativecommons' => 'Creative Commons RDF metadata מבוטל בשרת זה.',
-'notacceptable' => '×”×תר ×œ× ×™×›×•×œ לספק מידע בפורמט שתוכנת הלקוח יכולה לקרו×.',
+'notacceptable' => '×”×תר ×œ× ×™×›×•×œ לספק מידע בפורמט שתוכנת הלקוח יכולה לקרו×.',
# Attribution
'anonymous' => '{{PLURAL:$1|משתמש ×נונימי|×ž×©×ª×ž×©×™× ×נונימיי×}} של {{SITENAME}}',
@@ -2932,12 +3020,17 @@ $1 כבר נחס×. ×”×× ×‘×¨×¦×•× ×›× ×œ×©× ×•×ª ×ת הגדרות החסי×
'spam_blanking' => 'כל הגרס×ות כוללות ×§×™×©×•×¨×™× ×œÖ¾$1, מרוקן ×ת הדף',
# Info page
-'infosubtitle' => 'מידע על הדף',
-'numedits' => 'מספר עריכות (דף תוכן): $1',
-'numtalkedits' => 'מספר עריכות (דף שיחה): $1',
-'numwatchers' => 'מספר ×”×¢×•×§×‘×™× ×חרי הדף: $1',
-'numauthors' => 'מספר ×›×•×ª×‘×™× × ×¤×¨×“×™× (דף תוכן): $1',
-'numtalkauthors' => 'מספר ×›×•×ª×‘×™× × ×¤×¨×“×™× (דף שיחה): $1',
+'pageinfo-title' => 'מידע על "$1"',
+'pageinfo-header-edits' => 'עריכות',
+'pageinfo-header-watchlist' => 'רשימת המעקב',
+'pageinfo-header-views' => 'צפיות',
+'pageinfo-subjectpage' => 'דף',
+'pageinfo-talkpage' => 'דף שיחה',
+'pageinfo-watchers' => 'מספר עוקבי×',
+'pageinfo-edits' => 'מספר עריכות',
+'pageinfo-authors' => 'מספר ×›×•×ª×‘×™× × ×¤×¨×“×™×',
+'pageinfo-views' => 'מספר צפיות',
+'pageinfo-viewsperedit' => 'צפיות לכל עריכה',
# Skin names
'skinname-standard' => 'קל×סי',
@@ -2950,25 +3043,6 @@ $1 כבר נחס×. ×”×× ×‘×¨×¦×•× ×›× ×œ×©× ×•×ª ×ת הגדרות החסי×
'skinname-modern' => 'מודרני',
'skinname-vector' => 'וקטור',
-# Math options
-'mw_math_png' => 'תמיד להציג כ־PNG',
-'mw_math_simple' => 'להציג HTML לנוסח×ות פשוטות מ×וד, ×חרת להציג PNG',
-'mw_math_html' => 'להציג HTML ×× ×פשר, ×חרת להציג PNG',
-'mw_math_source' => 'להש×יר כקוד TeX (לדפדפני טקסט)',
-'mw_math_modern' => 'מומלץ ×œ×“×¤×“×¤× ×™× ×¢×“×›× ×™×™×',
-'mw_math_mathml' => 'להציג MathML ×× ×פשר (ניסיוני)',
-
-# Math errors
-'math_failure' => 'עיבוד הנוסחה נכשל',
-'math_unknown_error' => 'שגי××” ×œ× ×™×“×•×¢×”',
-'math_unknown_function' => 'פונקציה ×œ× ×ž×•×›×¨×ª',
-'math_lexing_error' => 'שגי×ת לקסינג',
-'math_syntax_error' => 'שגי×ת תחביר',
-'math_image_error' => 'ההמרה ל־PNG נכשלה; ×× × ×‘×“×§×• ×× ×”×ª×§× ×ª× × ×›×•×Ÿ ×ת latex ו×ת dvipng (×ו צירוף של dvipsâ€, gs ו־convert)',
-'math_bad_tmpdir' => 'התוכנה ×œ× ×”×¦×œ×™×—×” לכתוב ×ו ליצור ×ת הספרייה הזמנית של המתמטיקה',
-'math_bad_output' => 'התוכנה ×œ× ×”×¦×œ×™×—×” לכתוב ×ו ליצור ×ת ספריית הפלט של המתמטיקה',
-'math_notexvc' => 'קובץ בר־ביצוע של texvc ×ינו זמין; ×× × ×¦×¤×• בקובץ math/README למידע על ההגדרות.',
-
# Patrolling
'markaspatrolleddiff' => 'סימון השינוי כבדוק',
'markaspatrolledtext' => 'סימון דף זה כבדוק',
@@ -3004,22 +3078,25 @@ $1',
'nextdiff' => 'מעבר להשוו×ת הגרס×ות הב××” â†',
# Media information
-'mediawarning' => "'''×זהרה:''' סוג קובץ ×–×” עלול להכיל קוד זדוני.
+'mediawarning' => "'''×זהרה:''' סוג קובץ ×–×” עלול להכיל קוד זדוני.
הרצת הקוד עלולה לסכן ×ת המערכת שלכ×.",
-'imagemaxsize' => 'גודל תמונה מרבי:<br />(לדפי תי×ור קובץ)',
-'thumbsize' => 'הקטנה לגודל של:',
-'widthheightpage' => '<span dir="ltr">$1 × $2</span>, {{PLURAL:$3|דף ×חד|$3 דפי×}}',
-'file-info' => 'גודל הקובץ: $1, סוג MIMEâ€: $2',
-'file-info-size' => '<span dir="ltr">$1 × $2</span> פיקסלי×, גודל הקובץ: $3, סוג MIMEâ€: $4',
-'file-nohires' => '<small>×ין גרסת רזולוציה גבוהה יותר.</small>',
-'svg-long-desc' => 'קובץ SVG, הגודל המקורי: <span dir="ltr">$1 × $2</span> פיקסלי×, גודל הקובץ: $3',
-'show-big-image' => 'תמונה ברזולוציה גבוהה יותר',
-'show-big-image-thumb' => '<small>גודל התצוגה הזו: $1 × $2 פיקסלי×</small>',
-'file-info-gif-looped' => 'בלול××”',
-'file-info-gif-frames' => '{{PLURAL:$1|תמונה ×חת|$1 תמונות}}',
-'file-info-png-looped' => 'בלול××”',
-'file-info-png-repeat' => 'הוצג {{PLURAL:$1|×¤×¢× ×חת|$1 פעמי×|פעמיי×}}',
-'file-info-png-frames' => '{{PLURAL:$1|תמונה ×חת|$1 תמונות}}',
+'imagemaxsize' => 'גודל תמונה מרבי:<br />(לדפי תי×ור קובץ)',
+'thumbsize' => 'הקטנה לגודל של:',
+'widthheightpage' => '<span dir="ltr">$1 × $2</span>, {{PLURAL:$3|דף ×חד|$3 דפי×}}',
+'file-info' => 'גודל הקובץ: $1, סוג MIMEâ€: $2',
+'file-info-size' => '<span dir="ltr">$1 × $2</span> פיקסלי×, גודל הקובץ: $3, סוג MIMEâ€: $4',
+'file-info-size-pages' => '<span dir="ltr">$1 × $2</span> פיקסלי×, גודל הקובץ: $3, סוג MIMEâ€: $4, {{PLURAL:$5|דף ×חד|$5 דפי×}}',
+'file-nohires' => '<small>×ין גרסת רזולוציה גבוהה יותר.</small>',
+'svg-long-desc' => 'קובץ SVG, הגודל המקורי: <span dir="ltr">$1 × $2</span> פיקסלי×, גודל הקובץ: $3',
+'show-big-image' => 'תמונה ברזולוציה גבוהה יותר',
+'show-big-image-preview' => '<small>גודל תצוגה זו: $1.</small>',
+'show-big-image-other' => '<small>רזולוציות ×חרות: $1.</small>',
+'show-big-image-size' => '<span dir="ltr">$1 × $2</span> פיקסלי×',
+'file-info-gif-looped' => 'בלול××”',
+'file-info-gif-frames' => '{{PLURAL:$1|תמונה ×חת|$1 תמונות}}',
+'file-info-png-looped' => 'בלול××”',
+'file-info-png-repeat' => 'הוצג {{PLURAL:$1|×¤×¢× ×חת|$1 פעמי×|פעמיי×}}',
+'file-info-png-frames' => '{{PLURAL:$1|תמונה ×חת|$1 תמונות}}',
# Special:NewFiles
'newimages' => 'גלריית ×§×‘×¦×™× ×—×“×©×™×',
@@ -3045,14 +3122,21 @@ $1',
×× ×”×§×•×‘×¥ שונה ממצבו הר×שוני, כמה ×ž×”× ×ª×•× ×™× ×œ×”×œ×Ÿ ×¢×œ×•×œ×™× ×©×œ× ×œ×©×§×£ ב×ופן ×ž×œ× ×ת הקובץ הנוכחי.',
'metadata-expand' => 'הצגת ×¤×¨×˜×™× ×ž×•×¨×—×‘×™×',
'metadata-collapse' => 'הסתרת ×¤×¨×˜×™× ×ž×•×¨×—×‘×™×',
-'metadata-fields' => 'שדות המידע הנוסף של EXIF ×”×לה ××™× × ×¤×¨×˜×™× ×ž×•×¨×—×‘×™× ×•×™×•×¦×’×• תמיד, לעומת הש×ר:
+'metadata-fields' => 'שדות המידע ×”×›×ª×•×‘×™× ×‘×”×•×“×¢×” זו ייכללו בתצוגת דף התמונה ×’× ×›×©×˜×‘×œ×ª המידע הנוסף מוקטנת.
+×”××—×¨×™× ×™×•×¡×ª×¨×• כברירת מחדל.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'רוחב',
@@ -3067,13 +3151,11 @@ $1',
'exif-ycbcrpositioning' => '×ž×™×§×•× Y ו־C',
'exif-xresolution' => 'רזולוציה ×ופקית',
'exif-yresolution' => 'רזולוציה ×נכית',
-'exif-resolutionunit' => 'יחידות מידה של רזולוציות X ו־Y',
'exif-stripoffsets' => '×ž×™×§×•× ×ž×™×“×¢ התמונה',
'exif-rowsperstrip' => 'מספר השורות לרצועה',
'exif-stripbytecounts' => '×‘×™×™×˜×™× ×œ×¨×¦×•×¢×” דחוסה',
'exif-jpeginterchangeformat' => 'יחס ל־JPEG SOI',
'exif-jpeginterchangeformatlength' => '×‘×™×™×˜×™× ×©×œ מידע JPEG',
-'exif-transferfunction' => 'פונקציית העברה',
'exif-whitepoint' => 'נקודה לבנה צבעונית',
'exif-primarychromaticities' => 'צבעוניות ה־Primarity',
'exif-ycbcrcoefficients' => 'מקדמי פעולת הטרנספורמציה של מרחב הצבע',
@@ -3092,7 +3174,6 @@ $1',
'exif-compressedbitsperpixel' => 'שיטת דחיסת התמונה',
'exif-pixelydimension' => 'רוחב התמונה הנכון',
'exif-pixelxdimension' => 'גובה התמונה הנכון',
-'exif-makernote' => 'הערות היצרן',
'exif-usercomment' => 'הערות המשתמש',
'exif-relatedsoundfile' => 'קובץ שמע מקושר',
'exif-datetimeoriginal' => 'הת×ריך והשעה של יצירת הקובץ',
@@ -3106,7 +3187,6 @@ $1',
'exif-exposureprogram' => 'תוכנית החשיפה',
'exif-spectralsensitivity' => 'רגישות הספקטרו×',
'exif-isospeedratings' => 'דירוג מהירות ה־ISO',
-'exif-oecf' => '×ž×§×“× ×”×ž×¨×” ×ופטו־×לקטרוני',
'exif-shutterspeedvalue' => 'מהירות ×¦×ž×¦× ×‘×™×—×™×“×•×ª APEX',
'exif-aperturevalue' => 'מִפתח APEX',
'exif-brightnessvalue' => 'בהירות ביחידות APEX',
@@ -3120,7 +3200,6 @@ $1',
'exif-focallength-format' => '$1 מ"מ',
'exif-subjectarea' => '× ×•×©× ×”×זור',
'exif-flashenergy' => '×נרגיית המַבזק',
-'exif-spatialfrequencyresponse' => 'תדירות התגובה המרחבית',
'exif-focalplanexresolution' => 'משטח הפוקוס ברזולוציה ×”×ופקית',
'exif-focalplaneyresolution' => 'משטח הפוקוס ברזולוציה ×”×נכית',
'exif-focalplaneresolutionunit' => 'יחידת המידה של משטח הפוקוס ברזולוציה',
@@ -3129,7 +3208,6 @@ $1',
'exif-sensingmethod' => 'שיטת חישה',
'exif-filesource' => 'מקור הקובץ',
'exif-scenetype' => 'סוג הסצנה',
-'exif-cfapattern' => 'תבנית CFA',
'exif-customrendered' => 'עיבוד תמונה מות××',
'exif-exposuremode' => 'מצב החשיפה',
'exif-whitebalance' => '×יזון צבע לבן',
@@ -3174,10 +3252,79 @@ $1',
'exif-gpsareainformation' => '×©× ×זור ×”Ö¾GPS',
'exif-gpsdatestamp' => 'ת×ריך ×”Ö¾GPS',
'exif-gpsdifferential' => 'תיקון דיפרנצי×לי של ×”Ö¾GPS',
+'exif-jpegfilecomment' => 'הערה בקובץ JPEG',
+'exif-keywords' => 'מילות מפתח',
+'exif-worldregioncreated' => '×”×זור ×‘×¢×•×œ× ×©×‘×• התמונה צולמה',
+'exif-countrycreated' => 'מדינה שבה התמונה צולמה',
+'exif-countrycodecreated' => 'קוד מדינה שבה התמונה צולמה',
+'exif-provinceorstatecreated' => 'הישות התת־ל×ומית שבה התמונה צולמה',
+'exif-citycreated' => 'העיר שבה התמונה צולמה',
+'exif-sublocationcreated' => '×”×ª×ªÖ¾×ž×™×§×•× ×‘×ª×•×š העיר שבו התמונה צולמה',
+'exif-worldregiondest' => '×”×זור ×‘×¢×•×œ× ×©×ž×•×¦×’',
+'exif-countrydest' => 'המדינה המוצגת',
+'exif-countrycodedest' => 'קוד המדינה המוצגת',
+'exif-provinceorstatedest' => 'הישות התת־ל×ומיות המוצגת',
+'exif-citydest' => 'העיר המוצגת',
+'exif-sublocationdest' => '×”×ª×ªÖ¾×ž×™×§×•× ×‘×ª×•×š העיר שמוצג',
'exif-objectname' => 'כותרת קצרה',
+'exif-specialinstructions' => 'הור×ות מיוחדות',
+'exif-headline' => 'כותרת',
+'exif-credit' => 'מִזכה/סַפָּק',
+'exif-source' => 'מקור',
+'exif-editstatus' => 'מצב העריכה של תמונה',
+'exif-urgency' => 'דחיפות',
+'exif-fixtureidentifier' => 'קבועה',
+'exif-locationdest' => '×”×ž×™×§×•× ×”×ž×•×¦×’',
+'exif-locationdestcode' => 'קוד ×”×ž×™×§×•× ×”×ž×•×¦×’',
+'exif-objectcycle' => 'הזמן ×‘×™×•× ×©×”×ž×“×™×” מיועדת ×ליו',
+'exif-contact' => 'מידע ליצירת קשר',
+'exif-writer' => 'כותב',
+'exif-languagecode' => 'שפה',
+'exif-iimversion' => 'גרסת IIM',
+'exif-iimcategory' => 'קטגוריה',
+'exif-iimsupplementalcategory' => 'קטגוריות־משנה',
+'exif-datetimeexpires' => '×ין להשתמש ל×חר',
+'exif-datetimereleased' => 'ת×ריך הוצ××” ל×ור',
+'exif-originaltransmissionref' => 'קוד ×ž×™×§×•× ×©×™×“×•×¨ מקורי',
+'exif-identifier' => 'מזהה',
+'exif-lens' => 'עדשה',
+'exif-serialnumber' => 'המספר הסידורי של המצלמה',
+'exif-cameraownername' => 'בעל המצלמה',
+'exif-label' => 'תווית',
+'exif-datetimemetadata' => 'ת×ריך השינוי ×”×חרון של המט×־נתוני×',
+'exif-nickname' => '×©× ×ª×™×ורי של התמונה',
+'exif-rating' => 'דירוג (מתוך 5)',
+'exif-rightscertificate' => '×ישור ניהול זכויות',
+'exif-copyrighted' => 'מצב זכויות היוצרי×',
+'exif-copyrightowner' => 'בעל זכויות היוצרי×',
+'exif-usageterms' => 'תנ××™ שימוש',
+'exif-webstatement' => 'הצהרת זכויות ×™×•×¦×¨×™× ×ž×§×•×•× ×ª',
+'exif-originaldocumentid' => 'מזהה ייחודי של המסמך המקורי',
+'exif-licenseurl' => 'כתובת ×”×תר עבור רישיון זכויות יוצרי×',
+'exif-morepermissionsurl' => 'מידע על רישוי חלופי',
+'exif-attributionurl' => '×›×שר נעשה שימוש חוזר ביצירה ×”×–×ת, × × ×œ×§×©×¨ ×ל',
+'exif-preferredattributionname' => '×›×שר נעשה שימוש חוזר ביצירה ×”×–×ת, × × ×œ×ª×ª ייחוס ל־',
+'exif-pngfilecomment' => 'הערה בקובץ PNG',
+'exif-disclaimer' => 'כתב ויתור',
+'exif-contentwarning' => '×זהרת תוכן',
+'exif-giffilecomment' => 'הערה בקובץ GIF',
+'exif-intellectualgenre' => 'סוג פריט',
+'exif-subjectnewscode' => 'קוד נוש×',
+'exif-scenecode' => 'קוד IPTC של זירה',
+'exif-event' => '×”×ירוע המוצג',
+'exif-organisationinimage' => '×”×רגון המוצג',
+'exif-personinimage' => '×”××“× ×”×ž×•×¦×’',
+'exif-originalimageheight' => 'גובה התמונה לפני קיטוע',
+'exif-originalimagewidth' => 'רוחב התמונה לפני קיטוע',
# EXIF attributes
'exif-compression-1' => '×œ× ×“×—×•×¡',
+'exif-compression-2' => 'קידוד הופמן מו××ª× ×—×“-מימדי ל×ורך ריצה CCITT קבוצה 3',
+'exif-compression-3' => 'קידוד פקס CCITT קבוצה 3',
+'exif-compression-4' => 'קידוד פקס CCITT קבוצה 4',
+
+'exif-copyrighted-true' => 'מוגן בזכויות יוצרי×',
+'exif-copyrighted-false' => 'נחלת הכלל',
'exif-unknowndate' => 'ת×ריך בלתי ידוע',
@@ -3193,6 +3340,8 @@ $1',
'exif-planarconfiguration-1' => 'פורמט חסון',
'exif-planarconfiguration-2' => 'פורמט שטוח',
+'exif-colorspace-65535' => '×œ×œ× ×›×™×•×œ צבעי×',
+
'exif-componentsconfiguration-0' => '×ינו קיי×',
'exif-exposureprogram-0' => '×œ× ×”×•×’×“×¨×”',
@@ -3306,6 +3455,10 @@ $1',
'exif-gpslongitude-e' => 'קו־×ורך מזרחי',
'exif-gpslongitude-w' => 'קו־×ורך מערבי',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '{{PLURAL:$1|מטר ×חר|$1 מטרי×}} מעל פני ×”×™×',
+'exif-gpsaltitude-below-sealevel' => '{{PLURAL:$1|מטר ×חר|$1 מטרי×}} מתחת לפני ×”×™×',
+
'exif-gpsstatus-a' => 'מדידה בתהליך',
'exif-gpsstatus-v' => 'מדידה בו־זמנית',
@@ -3317,21 +3470,73 @@ $1',
'exif-gpsspeed-m' => '×ž×™×™×œ×™× ×‘×©×¢×”',
'exif-gpsspeed-n' => '×ž×™×™×œ×™× ×™×ž×™×™× ×‘×©×¢×”',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'קילומטרי×',
+'exif-gpsdestdistance-m' => 'מיילי×',
+'exif-gpsdestdistance-n' => '×ž×™×™×œ×™× ×™×ž×™×™×',
+
+'exif-gpsdop-excellent' => 'מצוין ($1)',
+'exif-gpsdop-good' => 'טוב ($1)',
+'exif-gpsdop-moderate' => 'בינוני ($1)',
+'exif-gpsdop-fair' => 'סביר ($1)',
+'exif-gpsdop-poor' => 'גרוע ($1)',
+
+'exif-objectcycle-a' => 'בוקר בלבד',
+'exif-objectcycle-p' => 'ערב בלבד',
+'exif-objectcycle-b' => 'בוקר וערב',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'כיוון ×מיתי',
'exif-gpsdirection-m' => 'כיוון מגנטי',
+'exif-ycbcrpositioning-1' => 'ממורכזי×',
+'exif-ycbcrpositioning-2' => 'ב×ותו מקו×',
+
+'exif-dc-contributor' => 'תורמי×',
+'exif-dc-coverage' => 'היקף מרחבי ×ו זמני של המדיה',
+'exif-dc-date' => 'ת×ריך/ת×ריכי×',
+'exif-dc-publisher' => '×ž×•×¦×™× ×œ×ור',
+'exif-dc-relation' => 'מדיה קשורה',
+'exif-dc-rights' => 'זכויות',
+'exif-dc-source' => 'המדיה המקורית',
+'exif-dc-type' => 'סוג המדיה',
+
+'exif-rating-rejected' => 'נדחה',
+
+'exif-isospeedratings-overflow' => 'מעל 65535',
+
+'exif-iimcategory-ace' => '×מנויות, תרבות ובידור',
+'exif-iimcategory-clj' => 'פשע ומשפט',
+'exif-iimcategory-dis' => '×סונות ות×ונות',
+'exif-iimcategory-fin' => 'כלכלה ועסקי×',
+'exif-iimcategory-edu' => 'חינוך',
+'exif-iimcategory-evn' => 'סביבה',
+'exif-iimcategory-hth' => 'ברי×ות',
+'exif-iimcategory-hum' => 'עניין ל×ד×',
+'exif-iimcategory-lab' => 'עבודה',
+'exif-iimcategory-lif' => 'סגנון ×—×™×™× ×•×¤× ××™',
+'exif-iimcategory-pol' => 'פוליטיקה',
+'exif-iimcategory-rel' => 'דת ו×מונה',
+'exif-iimcategory-sci' => 'מדע וטכנולוגיה',
+'exif-iimcategory-soi' => 'סוגיות חברתיות',
+'exif-iimcategory-spo' => 'ספורט',
+'exif-iimcategory-war' => 'מלחמה, סכסוך והפרת סדר',
+'exif-iimcategory-wea' => 'מזג ×וויר',
+
+'exif-urgency-normal' => 'רגילה ($1)',
+'exif-urgency-low' => 'נמוכה ($1)',
+'exif-urgency-high' => 'גבוהה ($1)',
+'exif-urgency-other' => 'מות×מת ×ישית ($1)',
+
# External editor support
'edit-externally' => 'עריכת קובץ ×–×” ב×מצעות ×™×™×©×•× ×—×™×¦×•× ×™',
-'edit-externally-help' => '(ר×ו ×ת [http://www.mediawiki.org/wiki/Manual:External_editors הור×ות ההתקנה] למידע נוסף)',
+'edit-externally-help' => '(ר×ו ×ת [//www.mediawiki.org/wiki/Manual:External_editors הור×ות ההתקנה] למידע נוסף)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'הכול',
-'imagelistall' => 'הכול',
-'watchlistall2' => 'הכול',
-'namespacesall' => 'הכול',
-'monthsall' => 'הכול',
-'limitall' => 'הכול',
+'watchlistall2' => 'הכול',
+'namespacesall' => 'הכול',
+'monthsall' => 'הכול',
+'limitall' => 'הכול',
# E-mail address confirmation
'confirmemail' => '×ימות כתובת דו×"ל',
@@ -3404,17 +3609,25 @@ $1',
'trackbackdeleteok' => 'הטרקבק נמחק בהצלחה.',
# Delete conflict
-'deletedwhileediting' => "'''×זהרה''': דף ×–×” נמחק ל×חר ×©×”×ª×—×œ×ª× ×œ×¢×¨×•×š!",
-'confirmrecreate' => "הדף נמחק על ידי המשתמש [[User:$1|$1]] ([[User talk:$1|שיחה]]) ל×חר ×©×”×ª×—×œ×ª× ×œ×¢×¨×•×š ×ותו, מסיבה זו:
+'deletedwhileediting' => "'''×זהרה''': דף ×–×” נמחק ל×חר ×©×”×ª×—×œ×ª× ×œ×¢×¨×•×š!",
+'confirmrecreate' => "הדף נמחק על ידי המשתמש [[User:$1|$1]] ([[User talk:$1|שיחה]]) ל×חר ×©×”×ª×—×œ×ª× ×œ×¢×¨×•×š ×ותו, מסיבה זו:
:'''$2'''
×× × ×שרו ש××ª× ×כן ×¨×•×¦×™× ×œ×™×¦×•×¨ מחדש ×ת הדף.",
-'recreate' => 'יצירה מחדש',
+'confirmrecreate-noreason' => 'הדף נמחק על ידי המשתמש [[User:$1|$1]] ([[User talk:$1|שיחה]]) ל×חר ×©×”×ª×—×œ×ª× ×œ×¢×¨×•×š ×ותו.
+×× × ×שרו ש××ª× ×כן ×¨×•×¦×™× ×œ×™×¦×•×¨ מחדש ×ת הדף.',
+'recreate' => 'יצירה מחדש',
# action=purge
'confirm_purge_button' => '×ישור',
'confirm-purge-top' => 'לנקות ×ת המטמון של דף ×–×”?',
'confirm-purge-bottom' => 'ניקוי המטמון של דף ×’×•×¨× ×œ×’×¨×¡×” החדשה ביותר להופיע.',
+# action=watch/unwatch
+'confirm-watch-button' => '×ישור',
+'confirm-watch-top' => 'להוסיף דף זה לרשימת המעקב שלך?',
+'confirm-unwatch-button' => '×ישור',
+'confirm-unwatch-top' => 'להסיר דף זה מרשימת המעקב שלך?',
+
# Multipage image navigation
'imgmultipageprev' => '→ לדף הקוד×',
'imgmultipagenext' => 'לדף ×”×‘× â†',
@@ -3462,7 +3675,7 @@ $1',
'watchlistedit-normal-legend' => 'הסרת ×“×¤×™× ×ž×¨×©×™×ž×ª המעקב',
'watchlistedit-normal-explain' => 'כל ×”×“×¤×™× ×‘×¨×©×™×ž×ª המעקב ×ž×•×¦×’×™× ×œ×”×œ×Ÿ.
כדי להסיר דף, יש לסמן ×ת התיבה לידו, וללחוץ על "{{int:Watchlistedit-normal-submit}}".
-ב××¤×©×¨×•×ª×›× ×’× [[Special:Watchlist/raw|לערוך ×ת הרשימה הגולמית]].',
+ב××¤×©×¨×•×ª×›× ×’× [[Special:EditWatchlist/raw|לערוך ×ת הרשימה הגולמית]].',
'watchlistedit-normal-submit' => 'הסרת הדפי×',
'watchlistedit-normal-done' => '{{PLURAL:$1|כותרת ×חת הוסרה|$1 כותרות הוסרו}} מרשימת המעקב:',
'watchlistedit-raw-title' => 'עריכת הרשימה הגולמית',
@@ -3470,7 +3683,7 @@ $1',
'watchlistedit-raw-explain' => '×”×“×¤×™× ×‘×¨×©×™×ž×ª המעקב ×ž×•×¦×’×™× ×œ×”×œ×Ÿ, וניתן לערוך ××•×ª× ×‘×מצעות הוספה והסרה ×©×œ×”× ×ž×”×¨×©×™×ž×”;
כל כותרת מופיעה בשורה נפרדת.
ל×חר ×¡×™×•× ×”×¢×¨×™×›×”, יש ללחוץ על "{{int:Watchlistedit-raw-submit}}".
-ב××¤×©×¨×•×ª×›× ×’× [[Special:Watchlist/edit|להשתמש בעורך הרגיל]].',
+ב××¤×©×¨×•×ª×›× ×’× [[Special:EditWatchlist|להשתמש בעורך הרגיל]].',
'watchlistedit-raw-titles' => 'דפי×:',
'watchlistedit-raw-submit' => 'עדכון הרשימה',
'watchlistedit-raw-done' => 'רשימת המעקב עודכנה.',
@@ -3545,33 +3758,33 @@ $1',
'duplicate-defaultsort' => '\'\'\'×זהרה:\'\'\' המיון הרגיל "$2" דורס ×ת המיון הרגיל ×”×ž×•×§×“× ×ž×ž× ×• "$1".',
# Special:Version
-'version' => 'גרסת התוכנה',
-'version-extensions' => 'הרחבות מותקנות',
-'version-specialpages' => '×“×¤×™× ×ž×™×•×—×“×™×',
-'version-parserhooks' => 'הרחבות מפענח',
-'version-variables' => 'משתני×',
-'version-skins' => 'עיצובי×',
-'version-other' => '×חר',
-'version-mediahandlers' => 'מציגי מדיה',
-'version-hooks' => 'מבני Hook',
-'version-extension-functions' => 'פונקציות של הרחבות',
-'version-parser-extensiontags' => 'תגיות של הרחבות מפענח',
-'version-parser-function-hooks' => 'משתני×',
-'version-skin-extension-functions' => 'פונקציות הרחבת עיצוב',
-'version-hook-name' => '×©× ×”Ö¾Hook',
-'version-hook-subscribedby' => 'הפונקציה הרושמת',
-'version-version' => '(גרסה $1)',
-'version-license' => 'רישיון',
-'version-poweredby-credits' => "×תר הוויקי ×”×–×” מופעל על ידי '''[http://www.mediawiki.org/ מדיה־ויקי]''', © 2001–$1 $2.",
-'version-poweredby-others' => '×חרי×',
-'version-license-info' => "מדיה־ויקי ×”×™× ×ª×•×›× ×” חופשית; ב××¤×©×¨×•×ª×›× ×œ×”×¤×™×¥ ×ותה מחדש ו/×ו לשנות ×ותה לפי תנ××™ הרישיון הציבורי הכללי של גנו ×”×ž×¤×•×¨×¡× ×¢×œ ידי המוסד לתוכנה חופשית: גרסה 2 של רישיון ×–×”, ×ו (לפי בחירתכ×) כל גרסה מ×וחרת יותר.
+'version' => 'גרסת התוכנה',
+'version-extensions' => 'הרחבות מותקנות',
+'version-specialpages' => '×“×¤×™× ×ž×™×•×—×“×™×',
+'version-parserhooks' => 'הרחבות מפענח',
+'version-variables' => 'משתני×',
+'version-antispam' => 'מניעת ספ××',
+'version-skins' => 'עיצובי×',
+'version-other' => '×חר',
+'version-mediahandlers' => 'מציגי מדיה',
+'version-hooks' => 'מבני Hook',
+'version-extension-functions' => 'פונקציות של הרחבות',
+'version-parser-extensiontags' => 'תגיות של הרחבות מפענח',
+'version-parser-function-hooks' => 'משתני×',
+'version-hook-name' => '×©× ×”Ö¾Hook',
+'version-hook-subscribedby' => 'הפונקציה הרושמת',
+'version-version' => '(גרסה $1)',
+'version-license' => 'רישיון',
+'version-poweredby-credits' => "×תר הוויקי ×”×–×” מופעל על ידי '''[//www.mediawiki.org/ מדיה־ויקי]''', © 2001–$1 $2.",
+'version-poweredby-others' => '×חרי×',
+'version-license-info' => "מדיה־ויקי ×”×™× ×ª×•×›× ×” חופשית; ב××¤×©×¨×•×ª×›× ×œ×”×¤×™×¥ ×ותה מחדש ו/×ו לשנות ×ותה לפי תנ××™ הרישיון הציבורי הכללי של גנו ×”×ž×¤×•×¨×¡× ×¢×œ ידי המוסד לתוכנה חופשית: גרסה 2 של רישיון ×–×”, ×ו (לפי בחירתכ×) כל גרסה מ×וחרת יותר.
מדיה־ויקי מופצת בתקווה ×©×”×™× ×ª×”×™×” שימושית, ×ך '''×œ×œ× ×›×œ הבטחה ל×חריות'''; ×פילו ×œ× ×חריות משתמעת של '''יכולת להיסחר''' ×ו '''הת×מה לרישיון מסוי×'''. ר×ו ×ת הרישיון הציבורי הכללי של גנו ×œ×¤×¨×˜×™× × ×•×¡×¤×™×.
-×”×™×™×ª× ×¦×¨×™×›×™× ×œ×§×‘×œ [{{SERVER}}{{SCRIPTPATH}}/COPYING העתק של הרישיון הציבורי הכללי של גנו] יחד ×¢× ×ª×•×›× ×” זו; ×× ×œ×, כתבו למוסד לתוכנה חופשית: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ×ו [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html קר×ו ×ותו ברשת].",
-'version-software' => 'תוכנות מותקנות',
-'version-software-product' => 'תוכנה',
-'version-software-version' => 'גרסה',
+×”×™×™×ª× ×¦×¨×™×›×™× ×œ×§×‘×œ [{{SERVER}}{{SCRIPTPATH}}/COPYING העתק של הרישיון הציבורי הכללי של גנו] יחד ×¢× ×ª×•×›× ×” זו; ×× ×œ×, כתבו למוסד לתוכנה חופשית: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ×ו [//www.gnu.org/licenses/old-licenses/gpl-2.0.html קר×ו ×ותו ברשת].",
+'version-software' => 'תוכנות מותקנות',
+'version-software-product' => 'תוכנה',
+'version-software-version' => 'גרסה',
# Special:FilePath
'filepath' => 'נתיב לקובץ',
@@ -3581,22 +3794,22 @@ $1',
תמונות מוצגות ברזולוציה מל××”, וסוגי ×§×‘×¦×™× ××—×¨×™× ×ž×•×¦×’×™× ×™×©×™×¨×•×ª ב×מצעות התוכנה שהוגדרה להצגת×.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'חיפוש ×§×‘×¦×™× ×›×¤×•×œ×™×',
-'fileduplicatesearch-summary' => 'חיפוש ×§×‘×¦×™× ×›×¤×•×œ×™× ×¢×œ בסיס ערכי ×”Ö¾Hash שלה×.
-
-הקלידו ×ת ×©× ×”×§×•×‘×¥ ×œ×œ× ×”×§×™×“×•×ž×ª "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'חיפוש ×§×‘×¦×™× ×›×¤×•×œ×™×',
-'fileduplicatesearch-filename' => 'קובץ:',
-'fileduplicatesearch-submit' => 'חיפוש',
-'fileduplicatesearch-info' => '<span dir="ltr">$1 × $2</span> פיקסלי×<br />גודל הקובץ: $3<br />סוג MIMEâ€: $4',
-'fileduplicatesearch-result-1' => '×ין קובץ כפול לקובץ "$1".',
-'fileduplicatesearch-result-n' => 'לקובץ "$1" יש {{PLURAL:$2|עותק כפול ×חד|$2 ×¢×•×ª×§×™× ×›×¤×•×œ×™×}}.',
+'fileduplicatesearch' => 'חיפוש ×§×‘×¦×™× ×›×¤×•×œ×™×',
+'fileduplicatesearch-summary' => 'חיפוש ×§×‘×¦×™× ×›×¤×•×œ×™× ×¢×œ בסיס ערכי הגיבוב שלה×.',
+'fileduplicatesearch-legend' => 'חיפוש ×§×‘×¦×™× ×›×¤×•×œ×™×',
+'fileduplicatesearch-filename' => 'קובץ:',
+'fileduplicatesearch-submit' => 'חיפוש',
+'fileduplicatesearch-info' => '<span dir="ltr">$1 × $2</span> פיקסלי×<br />גודל הקובץ: $3<br />סוג MIMEâ€: $4',
+'fileduplicatesearch-result-1' => '×ין קובץ כפול לקובץ "$1".',
+'fileduplicatesearch-result-n' => 'לקובץ "$1" יש {{PLURAL:$2|עותק כפול ×חד|$2 ×¢×•×ª×§×™× ×›×¤×•×œ×™×}}.',
+'fileduplicatesearch-noresults' => '×œ× × ×ž×¦× ×§×•×‘×¥ ×‘×©× "$1".',
# Special:SpecialPages
'specialpages' => '×“×¤×™× ×ž×™×•×—×“×™×',
'specialpages-note' => '----
* ×“×¤×™× ×ž×™×•×—×“×™× ×¨×’×™×œ×™×.
-* <strong class="mw-specialpagerestricted">×“×¤×™× ×ž×™×•×—×“×™× ×ž×•×’×‘×œ×™×.</strong>',
+* <span class="mw-specialpagerestricted">×“×¤×™× ×ž×™×•×—×“×™× ×ž×•×’×‘×œ×™×.</span>
+* <span class="mw-specialpagecached">×“×¤×™× ×ž×™×•×—×“×™× ×”×ž×ª×§×‘×œ×™× ×ž×–×™×›×¨×•×Ÿ המטמון (×©×¢×œ×•×œ×™× ×œ×”×™×•×ª ×œ× ×ž×¢×•×“×›× ×™×).</span>',
'specialpages-group-maintenance' => 'דיווחי תחזוקה',
'specialpages-group-other' => '×“×¤×™× ×ž×™×•×—×“×™× ×חרי×',
'specialpages-group-login' => 'כניסה / הרשמה לחשבון',
diff --git a/languages/messages/MessagesHi.php b/languages/messages/MessagesHi.php
index d3edcaa6..ed3b7ae5 100644
--- a/languages/messages/MessagesHi.php
+++ b/languages/messages/MessagesHi.php
@@ -9,6 +9,7 @@
*
* @author Akansha
* @author Aksi great
+ * @author Alolitas
* @author Bhawani Gautam
* @author Bhawani Gautam Rhk
* @author Charu
@@ -19,6 +20,7 @@
* @author Kiranmayee
* @author Krinkle
* @author Kumar
+ * @author Odisha1
* @author Purodha
* @author Rajivkurjee
* @author Reedy
@@ -65,7 +67,7 @@ $digitTransformTable = array(
'8' => '८', # &#x096e;
'9' => '९', # &#x096f;
);
-$linkTrail = "/^([a-z]+)(.*)\$/sD";
+$linkTrail = "/^([a-z]+)(.*)$/sD";
$messages = array(
# User preference toggles
@@ -99,8 +101,8 @@ $messages = array(
'tog-shownumberswatching' => 'धà¥à¤¯à¤¾à¤¨ रखने वाले पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤“ं की संखà¥à¤¯à¤¾ दिखाà¤à¤‚',
'tog-oldsig' => 'वरà¥à¤¤à¤®à¤¾à¤¨ हसà¥à¤¤à¤¾à¤•à¥à¤·à¥à¤°à¤° की à¤à¤²à¤•:',
'tog-fancysig' => 'हसà¥à¤¤à¤¾à¤•à¥à¤·à¤° का विकिपाठ के समान उपयोग करें (बिना सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤ कड़ी के)',
-'tog-externaleditor' => 'डिफ़ॉलà¥à¤Ÿ रूप से बाहà¥à¤¯ समà¥à¤ªà¤¾à¤¦à¤• का उपयोग करें (केवल विशेषजà¥à¤žà¥‹à¤‚ के लिà¤, इसके लिठसंगणक पर विशेष जमाव चाहिठहोंगे। [http://www.mediawiki.org/wiki/Manual:External_editors अधिक जानकारी।])',
-'tog-externaldiff' => 'डिफ़ॉलà¥à¤Ÿ रूप से बाहà¥à¤¯ अनà¥à¤¤à¤° का उपयोग करें (केवल विशेषजà¥à¤žà¥‹à¤‚ के लिà¤, इसके लिठसंगणक पर विशेष जमाव चाहिठहोंगे। [http://www.mediawiki.org/wiki/Manual:External_editors अधिक जानकारी।])',
+'tog-externaleditor' => 'डिफ़ॉलà¥à¤Ÿ रूप से बाहà¥à¤¯ समà¥à¤ªà¤¾à¤¦à¤• का उपयोग करें (केवल विशेषजà¥à¤žà¥‹à¤‚ के लिà¤, इसके लिठसंगणक पर विशेष जमाव चाहिठहोंगे। [//www.mediawiki.org/wiki/Manual:External_editors अधिक जानकारी।])',
+'tog-externaldiff' => 'डिफ़ॉलà¥à¤Ÿ रूप से बाहà¥à¤¯ अनà¥à¤¤à¤° का उपयोग करें (केवल विशेषजà¥à¤žà¥‹à¤‚ के लिà¤, इसके लिठसंगणक पर विशेष जमाव चाहिठहोंगे। [//www.mediawiki.org/wiki/Manual:External_editors अधिक जानकारी।])',
'tog-showjumplinks' => '"की ओर जाà¤à¤‚" कड़ियाठउपलबà¥à¤§ कराà¤à¤‚',
'tog-uselivepreview' => 'सजीवन à¤à¤²à¤• का उपयोग करें (जावासà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ चाहिà¤) (पà¥à¤°à¤¯à¥‹à¤—कà¥à¤·à¤®)',
'tog-forceeditsummary' => 'यदि बदलाव सारांश ना दिया गया हो तो मà¥à¤à¥‡ सूचित करें',
@@ -196,14 +198,7 @@ $messages = array(
'listingcontinuesabbrev' => 'आगे.',
'index-category' => 'सूचीबदà¥à¤§ पनà¥à¤¨à¥‡',
'noindex-category' => 'असूचीबदà¥à¤§ पनà¥à¤¨à¥‡',
-
-'mainpagetext' => "'''मीडियाविकिका इनà¥à¤¸à¥à¤Ÿà¥‰à¤²à¥‡à¤¶à¤¨ पूरा हो गया हैं ।'''",
-'mainpagedocfooter' => 'विकि सॉफà¥à¤Ÿà¤µà¥‡à¤¯à¤°à¤•à¥‡ इसà¥à¤¤à¥‡à¤®à¤¾à¤² के लिये [http://meta.wikimedia.org/wiki/Help:Contents उपयोगकरà¥à¤¤à¤¾ गाईड] देखें ।
-
-== शà¥à¤°à¥à¤µà¤¾à¤¤ करें ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings कॉनà¥à¤«à¤¿à¤—रेशन सेटींगकी सूची]
-* [http://www.mediawiki.org/wiki/Manual:FAQ मीडियाविकिके बारे में पà¥à¤°à¤¾à¤¯: पूछे जाने वाले सवाल]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce मीडियाविकि मेलिंग लिसà¥à¤Ÿ]',
+'broken-file-category' => 'टूटी हà¥à¤ˆ सञà¥à¤šà¤¿à¤•à¤¾ कड़ियों वाले पृषà¥à¤ ',
'about' => 'के बारे में',
'article' => 'लेख',
@@ -255,10 +250,10 @@ $messages = array(
'history' => 'पृषà¥à¤  इतिहास',
'history_short' => 'इतिहास',
'updatedmarker' => 'मेरे अनà¥à¤¤à¤¿à¤® बार पधारने के बाद के अदà¥à¤¯à¤¤à¤¨',
-'info_short' => 'जानकारी',
'printableversion' => 'छापने योगà¥à¤¯ उदà¥à¤§à¤°à¤£',
'permalink' => 'सà¥à¤¥à¤¾à¤¯à¥€ कड़ी',
'print' => 'मà¥à¤¦à¥à¤°à¤¾à¤‚कन करें',
+'view' => 'दरà¥à¤¶à¤¾à¤µ',
'edit' => 'समà¥à¤ªà¤¾à¤¦à¤¨',
'create' => 'बनाà¤à¤',
'editthispage' => 'इस पृषà¥à¤  को बदलें',
@@ -266,11 +261,12 @@ $messages = array(
'delete' => 'विलोपित करें',
'deletethispage' => 'इस पृषà¥à¤  को हटायें',
'undelete_short' => '{{PLURAL:$1|à¤à¤• हटायागया|$1 हटायागये}} बदलाव वापस लायें',
+'viewdeleted_short' => 'देखें {{PLURAL:$1|à¤à¤• विनषà¥à¤Ÿ समà¥à¤ªà¤¾à¤¦à¤¨|$1 विनषà¥à¤Ÿ समà¥à¤ªà¤¾à¤¦à¤¨}}',
'protect' => 'सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करें',
'protect_change' => 'बदलें',
'protectthispage' => 'इस पृषà¥à¤  को सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करें',
-'unprotect' => 'असà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करें',
-'unprotectthispage' => 'इस पृषà¥à¤  को असà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करें',
+'unprotect' => 'असà¥à¤°à¤•à¥à¤·à¤¿à¤¤',
+'unprotectthispage' => 'इस पृषà¥à¤  को सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करै',
'newpage' => 'नया पृषà¥à¤ ',
'talkpage' => 'इस पृषà¥à¤  के बारे में बात करें',
'talkpagelinktext' => 'वारà¥à¤¤à¤¾',
@@ -349,6 +345,8 @@ $1',
'toc' => 'विषय सूची',
'showtoc' => 'दिखाà¤à¤‚',
'hidetoc' => 'छिपाà¤à¤‚',
+'collapsible-collapse' => 'छोटा करें',
+'collapsible-expand' => 'विसà¥à¤¤à¤¾à¤° करें',
'thisisdeleted' => '$1 देखें या बदलें?',
'viewdeleted' => '$1 दिखायें?',
'restorelink' => '{{PLURAL:$1|à¤à¤• हटाया हà¥à¤†|$1 हटाये हà¥à¤}} बदलाव',
@@ -362,6 +360,8 @@ $1',
'feed-atom' => 'à¤à¤Ÿà¤®',
'feed-rss' => 'आरà¤à¤¸à¤à¤¸',
'red-link-title' => '$1 (पृषà¥à¤  मौजूद नहीं है)',
+'sort-descending' => 'उतरते कà¥à¤°à¤® में कà¥à¤°à¤®à¤¬à¤¦à¥à¤§ करें',
+'sort-ascending' => 'चढ़ते कà¥à¤°à¤® में कà¥à¤°à¤®à¤¬à¤¦à¥à¤§ करें',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'पनà¥à¤¨à¤¾',
@@ -444,12 +444,13 @@ $1',
'protectedpagetext' => 'यह पान संपादनोंसे सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ किया हà¥à¤µà¤¾ है ।',
'viewsourcetext' => 'आप इस पनà¥à¤¨à¥‡ का सà¥à¤°à¥‹à¤¤ देख सकते हैं और उसकी नकल उतार सकतें हैं:',
'protectedinterface' => 'यह पनà¥à¤¨à¤¾ सॉफà¥à¤Ÿà¤µà¥‡à¤¯à¤°à¤•à¥‹ इंटरफ़ेस देता हैं, और इसके गलत इसà¥à¤¤à¥‡à¤®à¤¾à¤²à¤¸à¥‡ बचने के लिये इसे सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ कर दिया गया हैं ।',
-'editinginterface' => "'''चेतावनी:''' आप à¤à¤• à¤à¤¸à¥‡ पनà¥à¤¨à¥‡ को बदल रहे हैं जो तंतà¥à¤°à¤¾à¤‚श के अंतरापृषà¥à¤  की सामगà¥à¤°à¥€ पà¥à¤°à¤¦à¤¾à¤¨ करता है। इस पनà¥à¤¨à¥‡ को बदलने से अनà¥à¤¯ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤“ं को पà¥à¤°à¤¦à¤°à¥à¤¶à¤¿à¤¤ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ अंतरापृषà¥à¤  की शकà¥à¤²à¥‹à¤¸à¥‚रत में बदलाव आà¤à¤—ा। अनà¥à¤µà¤¾à¤¦à¥‹à¤‚ के लिठकृपया [http://translatewiki.net/wiki/Main_Page?setlang=hi टà¥à¤°à¤¾à¤‚सलेटविकि.नेट] का पà¥à¤°à¤¯à¥‹à¤— करें, यह मीडियाविकि की कà¥à¤·à¥‡à¤¤à¥à¤°à¥€à¤¯à¤•à¤°à¤£ परियोजना है।",
+'editinginterface' => "'''चेतावनी:''' आप à¤à¤• à¤à¤¸à¥‡ पनà¥à¤¨à¥‡ को बदल रहे हैं जो तंतà¥à¤°à¤¾à¤‚श के अंतरापृषà¥à¤  की सामगà¥à¤°à¥€ पà¥à¤°à¤¦à¤¾à¤¨ करता है। इस पनà¥à¤¨à¥‡ को बदलने से अनà¥à¤¯ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤“ं को पà¥à¤°à¤¦à¤°à¥à¤¶à¤¿à¤¤ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ अंतरापृषà¥à¤  की शकà¥à¤²à¥‹à¤¸à¥‚रत में बदलाव आà¤à¤—ा। अनà¥à¤µà¤¾à¤¦à¥‹à¤‚ के लिठकृपया [//translatewiki.net/wiki/Main_Page?setlang=hi टà¥à¤°à¤¾à¤‚सलेटविकि.नेट] का पà¥à¤°à¤¯à¥‹à¤— करें, यह मीडियाविकि की कà¥à¤·à¥‡à¤¤à¥à¤°à¥€à¤¯à¤•à¤°à¤£ परियोजना है।",
'sqlhidden' => '(छà¥à¤ªà¤¾à¤ˆ हà¥à¤ˆ SQL पृचà¥à¤›à¤¾)',
'cascadeprotected' => 'यह पनà¥à¤¨à¤¾ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ हैं, कà¥à¤¯à¥‹à¤‚की यह निमà¥à¤¨à¤²à¤¿à¤–ित {{PLURAL:$1|पनà¥à¤¨à¥‡ की|पनà¥à¤¨à¥‹à¤‚ की}} सà¥à¤°à¤•à¥à¤·à¤¾-सीढीमें समाविषà¥à¤Ÿ हैं:
$2',
'namespaceprotected' => "आपको '''$1''' नामसà¥à¤¥à¤¾à¤¨à¤®à¥‡à¤‚ समाविषà¥à¤Ÿ पनà¥à¤¨à¥‹à¤‚को बदलने की अनà¥à¤®à¤¤à¤¿ नहीं हैं ।",
-'customcssjsprotected' => 'इस पनà¥à¤¨à¥‡à¤ªà¤° दà¥à¤¸à¤°à¥‡ सदसà¥à¤¯à¤•à¥€ वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त वरीयताà¤à¤‚ होने के कारण, आपको यह पनà¥à¤¨à¤¾ बदलने की अनà¥à¤®à¤¤à¤¿ नहीं हैं ।',
+'customcssprotected' => 'आपको इस CSS पृषà¥à¤  को संपादित करने की अनà¥à¤®à¤¤à¤¿ नहीं है, कà¥à¤¯à¥‹à¤‚कि इसमें अनà¥à¤¯ उपयोगकरà¥à¤¤à¤¾ की वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त सेटिंगà¥à¤¸ शामिल हैं।',
+'customjsprotected' => 'आपको इस JavaScript पृषà¥à¤  को संपादित करने की अनà¥à¤®à¤¤à¤¿ नहीं है, कà¥à¤¯à¥‹à¤‚कि इसमें अनà¥à¤¯ उपयोगकरà¥à¤¤à¤¾ की वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त सेटिंगà¥à¤¸ शामिल हैं।',
'ns-specialprotected' => 'विशेष पनà¥à¤¨à¥‡ बदलें नहीं जा सकतें ।',
'titleprotected' => "सदसà¥à¤¯ [[User:$1|$1]] ने इस शीरà¥à¤·à¤• का पनà¥à¤¨à¤¾ बनानेसे मना किया हà¥à¤† हैं ।
इसके लिये दिया हà¥à¤† कारण ''$2'' ।",
@@ -485,6 +486,7 @@ $2',
'createaccount' => 'खाता बनाà¤à¤',
'gotaccount' => "पहलेसे आपका खाता हैं? '''$1'''.",
'gotaccountlink' => 'लॉग इन',
+'userlogin-resetlink' => 'अपनी पà¥à¤°à¤µà¥‡à¤¶ जानकारी भूल गठहैं?',
'createaccountmail' => 'ई-मेल दà¥à¤µà¤¾à¤°à¤¾',
'createaccountreason' => 'कारण:',
'badretype' => 'आपने जो पासवरà¥à¤¡ दिये हैं वे à¤à¤• दूसरे से नहीं मिलते। फिर से लिखें।',
@@ -499,13 +501,15 @@ $2',
'nocookieslogin' => '{{SITENAME}} पर लॉग इन करने के लिये कूकीस का पà¥à¤°à¤¯à¥‹à¤— होता हैं ।
आपने कूकीस इसà¥à¤¤à¥‡à¤®à¤¾à¤² करने की अनà¥à¤®à¤¤à¤¿ नहीं दी हैं ।
कृपया कूकीस का इसà¥à¤¤à¥‡à¤®à¤¾à¤² करने की अनà¥à¤®à¤¤à¤¿ दें, तथा फिरसे कोशीश करें ।',
+'nocookiesfornew' => 'सà¥à¤°à¥‹à¤¤ की पà¥à¤·à¥à¤Ÿà¤¿ ना हो पाने के कारण यह खाता निरà¥à¤®à¤¿à¤¤ नहीं किया गया।
+सà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ करें कि आपने कà¥à¤•à¥€à¤œà¤¼ सकà¥à¤·à¤® की हैं, पृषà¥à¤  को पà¥à¤¨à¤ƒ लोड करें और पà¥à¤¨à¤ƒ पà¥à¤°à¤¯à¤¾à¤¸ करें।',
'noname' => 'आपने वैध सदसà¥à¤¯à¤¨à¤¾à¤® नहीं दिया हैं ।',
'loginsuccesstitle' => 'लॉग इन हो गया है',
'loginsuccess' => 'आप विकिपीडिया में "$1" सदसà¥à¤¯ नाम से लॉग इन हो चà¥à¤•à¥‡ हैं ।',
'nosuchuser' => '"$1" नाम को कोई सदसà¥à¤¯ नहीं है।
सदसà¥à¤¯à¤¨à¤¾à¤® में लघॠऔर दीरà¥à¤˜ अकà¥à¤·à¤°à¥‹à¤‚ से फ़रà¥à¤• पड़ता है।
अपनी वरà¥à¤¤à¤¨à¥€ जाà¤à¤šà¥‡à¤‚, या [[Special:UserLogin/signup|नई सदसà¥à¤¯à¤¤à¤¾ लें]]।',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" इस नाम का कोई सदसà¥à¤¯ नहीं है ।
+'nosuchusershort' => '"$1" इस नाम का कोई सदसà¥à¤¯ नहीं है ।
कृपया आपने दिया हà¥à¤µà¤¾ नाम जाà¤à¤šà¤¿à¤¯à¥‡à¤‚ ।',
'nouserspecified' => 'आपको सदसà¥à¤¯à¤¨à¤¾à¤® देना जरूरी है ।',
'login-userblocked' => 'यह सदसà¥à¤¯ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ है। सतà¥à¤°à¤¾à¤°à¤®à¥à¤­ की अनà¥à¤®à¤¤à¤¿ नहीं है।',
@@ -547,13 +551,14 @@ $2',
'usernamehasherror' => 'उपयोगकरà¥à¤¤à¤¾ के नाम में हेस वरà¥à¤£ शामिल नहीं.',
'login-throttled' => 'आपने हाल ही में काफ़ी बार सतà¥à¤°à¤¾à¤°à¤‚भ के पà¥à¤°à¤¯à¤¾à¤¸ किठहैं।
पà¥à¤¨à¤ƒ पà¥à¤°à¤¯à¤¾à¤¸ करने के पहले थोड़ी पà¥à¤°à¤¤à¥€à¤•à¥à¤·à¤¾ करें।',
+'login-abort-generic' => 'आपका सतà¥à¤°à¤¾à¤°à¤®à¥à¤­ असफल रहा - निषà¥à¤«à¤²à¤¿à¤¤',
'loginlanguagelabel' => 'भाषा: $1',
'suspicious-userlogout' => 'अपको लॉग आउट अनà¥à¤°à¥‹à¤§ है कà¥à¤¯à¥‹à¤‚कि यह à¤à¤• टूटी हà¥à¤ˆ बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤° या पà¥à¤°à¥‰à¤•à¥à¤¸à¥€ कैशिंग दà¥à¤µà¤¾à¤°à¤¾ भेजा गया था',
# E-mail sending
'php-mail-error-unknown' => 'PHP के mail() कà¥à¤°à¤¿à¤¯à¤¾ में अजà¥à¤žà¤¾à¤¤ तà¥à¤°à¥à¤Ÿà¤¿',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'कूटशबà¥à¤¦ बदलें',
'resetpass_announce' => 'आप इ-मेल से पà¥à¤°à¤¾à¤ªà¥à¤¤ असà¥à¤¥à¤¾à¤¯à¥€ कोडसे लॉग इन हैं ।
लॉग इन को पूरा करने के लिये, आप à¤à¤• नया कूटशबà¥à¤¦ दें:',
@@ -572,6 +577,12 @@ $2',
संभव है कि या तो आपने पहले ही सफलतापूरà¥à¤µà¤• अपना कूटशबà¥à¤¦ बदल लिया हो, या आपने à¤à¤• नठअसà¥à¤¥à¤¾à¤¯à¥€ कूटशबà¥à¤¦ का अनà¥à¤°à¥‹à¤§ किया हो।',
'resetpass-temp-password' => 'असà¥à¤¥à¤¾à¤¯à¥€ कूटशबà¥à¤¦:',
+# Special:PasswordReset
+'passwordreset' => 'कूटशबà¥à¤¦ रिसैट',
+'passwordreset-legend' => 'कूटशबà¥à¤¦ रीसेट करें',
+'passwordreset-username' => 'सदसà¥à¤¯à¤¨à¤¾à¤®:',
+'passwordreset-email' => 'ई-मेल पता:',
+
# Edit page toolbar
'bold_sample' => 'मोटा पाठ',
'bold_tip' => 'मोटे अकà¥à¤·à¤°',
@@ -583,8 +594,6 @@ $2',
'extlink_tip' => 'बाहरी कड़ी (उपसरà¥à¤— http:// अवशà¥à¤¯ लगाà¤à¤)',
'headline_sample' => 'शीरà¥à¤·à¤•',
'headline_tip' => 'दà¥à¤µà¤¿à¤¤à¥€à¤¯-सà¥à¤¤à¤° शीरà¥à¤·à¤•',
-'math_sample' => 'गणितीय सूतà¥à¤° यहाठडालें',
-'math_tip' => 'गणितीय सूतà¥à¤° (लेटेकà¥à¤¸)',
'nowiki_sample' => 'अपà¥à¤°à¤¾à¤°à¥‚पित सामगà¥à¤°à¥€ यहाठडालें',
'nowiki_tip' => 'विकि पà¥à¤°à¤¾à¤°à¥‚पण नज़रंदाज़ करें',
'image_sample' => 'उदाहरण.jpg',
@@ -673,7 +682,7 @@ $2',
'noarticletext-nopermission' => 'फ़िलहाल इस पनà¥à¤¨à¥‡ पर कोई सामगà¥à¤°à¥€ नहीं है।
आप अनà¥à¤¯ पनà¥à¤¨à¥‹à¤‚ में [[Special:Search/{{PAGENAME}}|इस पनà¥à¤¨à¤¾ शीरà¥à¤·à¤• की खोज]] कर सकते हैं,
या <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} संबंधित चिटà¥à¤ à¥‹à¤‚ में खोज कर सकते हैं] </span>।',
-'userpage-userdoesnotexist' => 'सदसà¥à¤¯ खाता "$1" पंजिकृत नहीं हैं । कृपया यह लेख आप संपादित अथवा निरà¥à¤®à¤¿à¤¤ करना चाहते हैं इसकी जाà¤à¤š करें ।',
+'userpage-userdoesnotexist' => 'सदसà¥à¤¯ खाता "<nowiki>$1</nowiki>" पंजिकृत नहीं हैं । कृपया यह लेख आप संपादित अथवा निरà¥à¤®à¤¿à¤¤ करना चाहते हैं इसकी जाà¤à¤š करें ।',
'userpage-userdoesnotexist-view' => 'सदसà¥à¤¯ "$1" पंजीकृत नहीं है',
'blocked-notice-logextract' => 'यह सदसà¥à¤¯ फ़िलहाल अवरोधित हैं। सदंरà¥à¤­ के लिठताज़ातरीन अवरोध चिटà¥à¤ à¤¾ पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿ नीचे है:',
'clearyourcache' => "'''धà¥à¤¯à¤¾à¤¨ दें - सà¤à¤œà¥‹à¤¨à¥‡ के बाद बदलाव देखने के लिठआपको अपने विचरक की संचिका खाली करने पड़ सकती है।'''
@@ -1064,7 +1073,6 @@ $2, $1 की तिथि के आइटम को छà¥à¤ªà¤¾à¤¨à¥‡ मेà
'changepassword' => 'कूटशबà¥à¤¦ बदलें',
'prefs-skin' => 'तà¥à¤µà¤šà¤¾',
'skin-preview' => 'à¤à¤²à¤•',
-'prefs-math' => 'गणित',
'datedefault' => 'खा़स पसंद नहीं',
'prefs-datetime' => 'दिनांक तथा समय',
'prefs-personal' => 'सदसà¥à¤¯ वà¥à¤¯à¤•à¥à¤¤à¤¿à¤°à¥‡à¤–ा',
@@ -1088,8 +1096,6 @@ $2, $1 की तिथि के आइटम को छà¥à¤ªà¤¾à¤¨à¥‡ मेà
'columns' => 'कॉलम:',
'searchresultshead' => 'खोज',
'resultsperpage' => 'पà¥à¤°à¤¤à¤¿ पनà¥à¤¨à¤¾ हिटà¥à¤¸:',
-'contextlines' => 'पà¥à¤°à¤¤à¤¿ हिट कतारें:',
-'contextchars' => 'पà¥à¤°à¤¤à¤¿ कतार संदरà¥à¤­:',
'stub-threshold' => '<a href="#" class="stub">आधार कड़ियों</a> का जà¥à¤¯à¤¾à¤¦à¤¾à¤¸à¥‡ जà¥à¤¯à¤¾à¤¦à¤¾ आकार (बाईटà¥à¤¸):',
'stub-threshold-disabled' => 'अकà¥à¤·à¤® किया गया',
'recentchangesdays' => 'हाल में हà¥à¤ बदलावोंमें दरà¥à¤¶à¤¾à¤¨à¥‡ के दिन:',
@@ -1151,8 +1157,8 @@ $2, $1 की तिथि के आइटम को छà¥à¤ªà¤¾à¤¨à¥‡ मेà
यह जानकारी सारà¥à¤µà¤œà¤¨à¤¿à¤• होगी।',
'email' => 'इ-मेल',
'prefs-help-realname' => 'आपका असली नाम देना जरूरी नहीं है पर अगर दिया तो आपके योगदानको आपसे आरोपण करने के लिये इसà¥à¤¤à¥‡à¤®à¤¾à¤² किया जायेगा ।',
-'prefs-help-email' => 'डाक पता वैकलà¥à¤ªà¤¿à¤• है, पर यदि आप अपना कूटशबà¥à¤¦ भूल जाà¤à¤ तो इसके जरिठनया कूटशबà¥à¤¦ आपको भेजा जा सकता है।
-आप चाहें तो बिना अपना पता किसी को दिà¤, अपने सदसà¥à¤¯ पनà¥à¤¨à¥‡ या वारà¥à¤¤à¤¾ पनà¥à¤¨à¥‡ के जरिठभी लोगों से संपरà¥à¤• में रह सकते हैं।',
+'prefs-help-email' => 'ई-मेल पता वैकलà¥à¤ªà¤¿à¤• है, पर यदि आप अपना कूटशबà¥à¤¦ भूल जाà¤à¤ तो इसके जरिठरीसेट किया जा सकता है।',
+'prefs-help-email-others' => 'आप अपनी पहचान उजागर किठबिना अनà¥à¤¯ सदसà¥à¤¯à¥‹à¤‚ को अपने पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ या वारà¥à¤¤à¤¾ पृषà¥à¤  के दà¥à¤µà¤¾à¤°à¤¾ सà¥à¤µà¤¯à¤‚ से समà¥à¤ªà¤°à¥à¤• करने दे सकते हैं।',
'prefs-help-email-required' => 'इ-मेल पता ज़रूरी हैं ।',
'prefs-info' => 'मूलभूत जानकारी',
'prefs-i18n' => 'अंतरà¥à¤°à¤¾à¤·à¥à¤Ÿà¥à¤°à¥€à¤¯à¤•à¤°à¤£',
@@ -1277,7 +1283,6 @@ $2, $1 की तिथि के आइटम को छà¥à¤ªà¤¾à¤¨à¥‡ मेà
'right-userrights' => 'सभी सदसà¥à¤¯à¥‹à¤‚के अधिकार बदलें',
'right-userrights-interwiki' => 'अनà¥à¤¯ विकियोंपर सदसà¥à¤¯ अधिकार बदलें',
'right-siteadmin' => 'डाटाबेस को ताला लगायें या खोलें',
-'right-reset-passwords' => 'अनà¥à¤¯ सदसà¥à¤¯à¥‹à¤‚ के कूटशबà¥à¤¦ बदलना',
'right-override-export-depth' => 'पनà¥à¤¨à¥‹à¤‚ का निरà¥à¤¯à¤¾à¤¤, ५वीं गहराई तक के हवाले वाले पनà¥à¤¨à¥‹à¤‚ समेत',
'right-sendemail' => 'सही ईमेल भेजें',
@@ -1430,6 +1435,7 @@ $2, $1 की तिथि के आइटम को छà¥à¤ªà¤¾à¤¨à¥‡ मेà
यह फ़ाईल $2 आकार की हैं।',
'largefileserver' => 'इस फ़ाईल का आकार निरà¥à¤§à¤¾à¤°à¤¿à¤¤ आकार से जà¥à¤¯à¤¾à¤¦à¤¾ हैं।',
'emptyfile' => 'आपके दà¥à¤µà¤¾à¤°à¤¾ अपलोड की गई फ़ाईल रिकà¥à¤¤ हैं। यह फ़ाईल का नाम लिखने में गलती के चलते हो सकता हैं। कॄपया आप यहीं फ़ाईल अपलोड करना चाहतें हैं इसकी जाà¤à¤š करें।',
+'windows-nonascii-filename' => 'यह विकि विशेष वरà¥à¤£ के साथ फ़ाइल के नामों का समरà¥à¤¥à¤¨ नहीं करता।',
'fileexists' => "इस नामकी फ़ाईल पहले से असà¥à¤¤à¤¿à¤¤à¥à¤µà¤®à¥‡à¤‚ हैं, कृपया यह फ़ाईल बदलनेमें आप साशंक हैं तो '''<tt>[[:$1]]</tt>''' देखें। [[$1|thumb]]",
'filepageexists' => 'इस सञà¥à¤šà¤¿à¤•à¤¾ के लिठविवरण पृषà¥à¤  पहले ही इस पर बनाया जा चà¥à¤•à¤¾ है, लेकिन इस नाम की कोई सञà¥à¤šà¤¿à¤•à¤¾ अभी उपसà¥à¤¥à¤¿à¤¤ नहीं है।
आप जो सारांश देंगे वह विवरण पृषà¥à¤  में नहीं दिखेगा।
@@ -1466,6 +1472,8 @@ $2, $1 की तिथि के आइटम को छà¥à¤ªà¤¾à¤¨à¥‡ मेà
कृपया file_uploads जमाव की जाà¤à¤š करें।',
'uploadscripted' => 'इस फ़ाईलमें HTML या फिर सà¥à¤•à¥à¤°à¥€à¤ªà¥à¤Ÿ कोड हैं, जो की à¤à¤–ाद वेब बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤° दà¥à¤µà¤¾à¤°à¤¾ गलती से पढ़ लिया जा सकता हैं।',
'uploadvirus' => 'इस फ़ाईल में वà¥à¤¹à¤¾à¤ˆà¤°à¤¸ हैं! अधिक ज़ानकारी: $1',
+'uploadjava' => 'यह सञà¥à¤šà¤¿à¤•à¤¾ à¤à¤• ज़िप सञà¥à¤šà¤¿à¤•à¤¾ है जिसमें à¤à¤• जावा .class सञà¥à¤šà¤¿à¤•à¤¾ है।
+जावा सञà¥à¤šà¤¿à¤•à¤¾à¤“ं को अपलोड करना वरà¥à¤œà¤¿à¤¤ है, कà¥à¤¯à¥‹à¤‚कि इनके कारण सà¥à¤°à¤•à¥à¤·à¤¾ बाधाà¤à¤‚ पार की जा सकती हैं।',
'upload-source' => 'सà¥à¤°à¥‹à¤¤ फ़ाइल',
'sourcefilename' => 'सà¥à¤°à¥‹à¤¤ फ़ाईलका नाम:',
'sourceurl' => 'सà¥à¤°à¥‹à¤¤ URL',
@@ -1476,10 +1484,6 @@ $2, $1 की तिथि के आइटम को छà¥à¤ªà¤¾à¤¨à¥‡ मेà
'watchthisupload' => 'इस संचिका पर धà¥à¤¯à¤¾à¤¨ रखें',
'filewasdeleted' => 'इस नामकी à¤à¤• फ़ाईल अपलोड करनेके बाद हटाईं गईं हैं।
फिरसे अपलोड करने से पहले आप $1 को अचà¥à¤›à¥€ तरह से जाà¤à¤šà¥‡à¥¤',
-'upload-wasdeleted' => "'''सूचना: आप पहले हटाई गई फ़ाईल फिर से अपलोड कर रहें हैं।'''
-
-आपको यह कà¥à¤°à¤¿à¤¯à¤¾ वैध हैं इसके बारें में सोचना चाहियें।
-इस फ़ाईल की हटाने की सूची आपके सहायता के लिये यहां दी गई हैं:",
'filename-bad-prefix' => "आप अपलोड कर रहे फ़ाईल का नाम '''\"\$1\"''' से शà¥à¤°à¥‚ होता हैं, जो की डिजिटल कैमेरे दà¥à¤µà¤¾à¤°à¤¾ दिया गया नाम हैं।
कृपया इस फ़ाईलके लिये कोई दूसरा जà¥à¤¯à¤¾à¤¦à¤¾ ज़ानकारीयà¥à¤•à¥à¤¤ नाम चà¥à¤¨à¥‡à¤‚।",
'filename-prefix-blacklist' => '#<!-- leave this line exactly as it is --> <pre>
@@ -1516,6 +1520,23 @@ PICT # misc.
'upload-unknown-size' => 'अजà¥à¤žà¤¾à¤¤ आकार',
'upload-http-error' => 'à¤à¤• à¤à¤šà¤Ÿà¥€à¤Ÿà¥€à¤ªà¥€ तà¥à¤°à¥à¤Ÿà¤¿ आई: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'ज़िप जाà¤à¤š के लिठसञà¥à¤šà¤¿à¤•à¤¾ खोलते समय तà¥à¤°à¥à¤Ÿà¤¿ का सामना करना पड़ा।',
+'zip-wrong-format' => 'निरà¥à¤¦à¤¿à¤·à¥à¤Ÿ सञà¥à¤šà¤¿à¤•à¤¾ à¤à¤• ज़िप सञà¥à¤šà¤¿à¤•à¤¾ नहीं थी।',
+'zip-bad' => 'सञà¥à¤šà¤¿à¤•à¤¾ या तो दूषित है या अनà¥à¤¯à¤¥à¤¾ अपठनीय ज़िप सञà¥à¤šà¤¿à¤•à¤¾ है।
+इसकी ठीक से सà¥à¤°à¤•à¥à¤·à¤¾ जाà¤à¤š नहीं की जा सकती।',
+'zip-unsupported' => 'यह सञà¥à¤šà¤¿à¤•à¤¾ à¤à¤• ज़िप सञà¥à¤šà¤¿à¤•à¤¾ है जो ज़िप विशेषताओं को पà¥à¤°à¤¯à¥à¤•à¥à¤¤ करती है और मीडियाविकी दà¥à¤µà¤¾à¤°à¤¾ समरà¥à¤¥à¤¿à¤¤ नहीं है।
+इसकी ठीक से सà¥à¤°à¤•à¥à¤·à¤¾ जाà¤à¤š नहीं की जा सकती।',
+
+# Special:UploadStash
+'uploadstash' => 'छिपाई-सà¥à¤¥à¤¾à¤¨ अपलोड करें',
+'uploadstash-summary' => 'यह पृषà¥à¤  उन सञà¥à¤šà¤¿à¤•à¤¾à¤“ं के लिठअभिगम उपलबà¥à¤§ कराता है जो अपलोड किठगठहैं â€â€Œâ€â€Œ(या अपलोड पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾ में हैं) लेकिन विकी पर अभी भी पà¥à¤°à¤•à¤¾à¤¶à¤¿à¤¤ नहीं किठगठहैं। यह सञà¥à¤šà¤¿à¤•à¤¾à¤à¤‚ अपलोड करने वाले पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ को छोड़कर किसी के लिठभी दरà¥à¤¶à¤¿à¤¤ नहीं हैं।',
+'uploadstash-clear' => 'छिपाई गई सञà¥à¤šà¤¿à¤•à¤¾à¤à¤‚ साफ़ करें',
+'uploadstash-nofiles' => 'आपके पास कोई छिपी-हà¥à¤ˆ सञà¥à¤šà¤¿à¤•à¤¾à¤à¤‚ नहीं हैं।',
+'uploadstash-badtoken' => 'उस कारà¥à¤¯ का पà¥à¤°à¤¦à¤°à¥à¤¶à¤¨ असफल रहा, समà¥à¤­à¤µà¤¤à¤ƒ आपके पà¥à¤°à¤¤à¥à¤¯à¤¾à¤¯à¤•à¥‹à¤‚(साख) की अवधि समापà¥à¤¤ हो गई है। पà¥à¤¨à¤ƒ पà¥à¤°à¤¯à¤¾à¤¸ करें।',
+'uploadstash-errclear' => 'सञà¥à¤šà¤¿à¤•à¤¾à¤“ं का समाशोधन असफल रहा।',
+'uploadstash-refresh' => 'सञà¥à¤šà¤¿à¤•à¤¾à¤“ं की सूची का पà¥à¤¨à¤ƒ भरण करें',
+
# img_auth script messages
'img-auth-accessdenied' => 'अनà¥à¤®à¤¤à¤¿ नहीं है',
'img-auth-nopathinfo' => 'PATH_INFO मौजूद नहीं है।
@@ -1599,7 +1620,6 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization को देखेंà
[[Special:WhatLinksHere/$2|पूरी सूची]] भी मौजूद है।',
'nolinkstoimage' => 'इस चितà¥à¤° से कोई पनà¥à¤¨à¥‡ नहीं जà¥à¤¡à¤¤à¥‡',
'morelinkstoimage' => 'इस फ़ाईलकी [[Special:WhatLinksHere/$1|और कडी़याà¤]] देखें।',
-'redirectstofile' => 'निमà¥à¤¨à¥‹à¤•à¥à¤¤ {{PLURAL:$1|à¤à¤• संचिका इस संचिका की ओर पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¿à¤¤ होती है|$1 संचिकाà¤à¤ इस संचिका की ओर पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¿à¤¤ होती हैं}}:',
'duplicatesoffile' => 'निमà¥à¤¨à¥‹à¤•à¥à¤¤ {{PLURAL:$1|संचिका इस संचिका की पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿ है|$1 संचिकाà¤à¤ इस संचिका की पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿à¤¯à¤¾à¤ हैं}} ([[Special:FileDuplicateSearch/$2|और जानकारी]]):',
'sharedupload' => 'यह संचिका $1 से है और संभवतः अनà¥à¤¯ परियोजनाà¤à¤ भी इसका इसà¥à¤¤à¥‡à¤®à¤¾à¤² कर रही होंगी।',
'sharedupload-desc-there' => 'यह संचिका $1 से है और अनà¥à¤¯ परियोजनाओं दà¥à¤µà¤¾à¤°à¤¾ भी पà¥à¤°à¤¯à¥à¤•à¥à¤¤ हो सकती है।
@@ -1696,13 +1716,14 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization को देखेंà
वरन, ये पृषà¥à¤  उपयà¥à¤•à¥à¤¤ विषय से जà¥à¤¡à¤¼à¥‡ हà¥à¤ होने चाहिà¤à¥¤<br />
यदि कोई पृषà¥à¤  à¤à¤¸à¥‡ सांचे का पà¥à¤°à¤¯à¥‹à¤— करता है, जो की [[MediaWiki:Disambiguationspage]] से जà¥à¤¡à¤¼à¤¾ हà¥à¤† है, तो उसे असमंजश पृषà¥à¤  समà¤à¤¾ जाता है।",
-'doubleredirects' => 'दà¥à¤—à¥à¤¨à¥€-अनà¥à¤ªà¥à¤°à¥‡à¤·à¤¿à¤¤à¥‡',
-'doubleredirectstext' => 'यह पनà¥à¤¨à¤¾ उन पनà¥à¤¨à¥‹à¤‚ की सूची देता है जो अनà¥à¤¯ पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¿à¤¤ पनà¥à¤¨à¥‹à¤‚ की ओर पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¿à¤¤ होते हैं।
+'doubleredirects' => 'दà¥à¤—à¥à¤¨à¥€-अनà¥à¤ªà¥à¤°à¥‡à¤·à¤¿à¤¤à¥‡',
+'doubleredirectstext' => 'यह पनà¥à¤¨à¤¾ उन पनà¥à¤¨à¥‹à¤‚ की सूची देता है जो अनà¥à¤¯ पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¿à¤¤ पनà¥à¤¨à¥‹à¤‚ की ओर पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¿à¤¤ होते हैं।
हर कतार में पहले और दूसरे पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ की कड़ियाà¤, तथा दूसरे पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ का लकà¥à¤·à¥à¤¯ भी है, आमतौर पर यही "वासà¥à¤¤à¤µà¤¿à¤•" लकà¥à¤·à¥à¤¯à¤¿à¤¤ पृषà¥à¤  होगा, और पहला पà¥à¤¨à¤°à¥à¤¦à¥‡à¤¶à¤¨ वासà¥à¤¤à¤µ में इसी को लकà¥à¤·à¥à¤¯à¤¿à¤¤ होना चाहिठथा।
<del>à¤à¤• दूसरे को काटने वाली</del> पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤¯à¤¾à¤ सà¥à¤²à¤à¤¾ दी गई हैं।',
-'double-redirect-fixed-move' => '[[$1]] की जगह बदली जा चà¥à¤•à¥€ है।
+'double-redirect-fixed-move' => '[[$1]] की जगह बदली जा चà¥à¤•à¥€ है।
अब यह [[$2]] की ओर पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¿à¤¤ होता है।',
-'double-redirect-fixer' => 'पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ मिसà¥à¤¤à¥à¤°à¥€',
+'double-redirect-fixed-maintenance' => '[[$1]] से [[$2]] को दोहरे अनà¥à¤ªà¥à¤°à¥‡à¤·à¤¿à¤£ को सही कर रहा है।',
+'double-redirect-fixer' => 'पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ मिसà¥à¤¤à¥à¤°à¥€',
'brokenredirects' => 'टूटे हà¥à¤ अनà¥à¤ªà¥à¤°à¥‡à¤·',
'brokenredirectstext' => 'निमà¥à¤¨à¥‹à¤•à¥à¤¤ पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ नामौजूद पनà¥à¤¨à¥‹à¤‚ की ओर ले जाते हैं:',
@@ -1778,6 +1799,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization को देखेंà
'pager-newer-n' => '{{PLURAL:$1|नया 1|नये $1}}',
'pager-older-n' => '{{PLURAL:$1|पà¥à¤°à¤¾à¤¨à¤¾ 1|पà¥à¤°à¤¾à¤¨à¥‡ $1}}',
'suppress' => 'ओवरसाईट',
+'querypage-disabled' => 'पà¥à¤°à¤¦à¤°à¥à¤¶à¤¨ कारणों से यह विशेष पृषà¥à¤  अकà¥à¤·à¤® किया गया।',
# Book sources
'booksources' => 'पà¥à¤¸à¥à¤¤à¤• के सà¥à¤°à¥‹à¤¤',
@@ -1894,6 +1916,8 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization को देखेंà
'noemailtext' => 'इस सदसà¥à¤¯ ने वैध डाक पता नहीं दिया है।',
'nowikiemailtitle' => 'डाक की अनà¥à¤®à¤¤à¤¿ नहीं है',
'nowikiemailtext' => 'इस सदसà¥à¤¯ ने अनà¥à¤¯ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤“ं से डाक न पà¥à¤°à¤¾à¤ªà¥à¤¤ करने का फ़ैसला लिया हà¥à¤† है।',
+'emailusername' => 'सदसà¥à¤¯à¤¨à¤¾à¤®:',
+'emailusernamesubmit' => 'जमा करें',
'email-legend' => 'किसी और {{SITENAME}} सदसà¥à¤¯ को डाक भेजें',
'emailfrom' => 'पà¥à¤°à¥‡à¤·à¤•:',
'emailto' => 'पà¥à¤°à¤¾à¤ªà¥à¤¤à¤•à¤°à¥à¤¤à¤¾:',
@@ -1918,12 +1942,10 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization को देखेंà
'watchlistanontext' => 'अपने धà¥à¤¯à¤¾à¤¨à¤¸à¥‚चीमें होने वाले लेख देखने या फिर संपादित करने के लिये कॄपया $1 करें।',
'watchnologin' => 'लॉग इन नहीं किया हैं',
'watchnologintext' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚चीमें बदलाव के लिये आपने [[Special:UserLogin|लॉग इन]] किया होना आवशà¥à¤¯à¤• हैं।',
-'addedwatch' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में जोड़ दिया गया',
'addedwatchtext' => 'आपकी [[Special:Watchlist|धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची]] में "<nowiki>$1</nowiki>" का समावेश कर दिया गया है ।
भविषà¥à¤¯ में इस पनà¥à¤¨à¥‡ तथा इस पनà¥à¤¨à¥‡ की वारà¥à¤¤à¤¾ में होने वाले बदलाव आपकी धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में दिखेंगे तथा [[Special:RecentChanges|हाल में हà¥à¤ बदलावों की सूची]] में यह पनà¥à¤¨à¤¾ बोलà¥à¤¡ दिखेगा ताकि आप आसानी से इसका धà¥à¤¯à¤¾à¤¨ रख सके ।
<p>अगर आपको इस पनà¥à¤¨à¥‡ को अपनी धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची से निकालना हो तो "धà¥à¤¯à¤¾à¤¨ हटायें" पर कà¥à¤²à¤¿à¤• करें ।',
-'removedwatch' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची से हटाया गया है',
'removedwatchtext' => '"[[:$1]]" नामक पनà¥à¤¨à¥‡ को आपकी [[Special:Watchlist|धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची]] से हटाया दिया गया है।',
'watch' => 'धà¥à¤¯à¤¾à¤¨ रखें',
'watchthispage' => 'इस पनà¥à¤¨à¥‡ का धà¥à¤¯à¤¾à¤¨ रखें',
@@ -1978,10 +2000,10 @@ $NEWPAGE
--
धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची के जमाव को बदलने के लिठयहाठजाà¤à¤
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
राय देने या अधिक मदद पाने के लिà¤:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'पनà¥à¤¨à¤¾ हटायें',
@@ -1997,7 +2019,7 @@ $NEWPAGE
आपसे अनà¥à¤°à¥‹à¤§ है कि आप जो कर रहे है वह मीडियाविकिके [[{{MediaWiki:Policy-url}}|नीतिनà¥à¤¸à¤¾à¤°]] है इस बात की पà¥à¤·à¥à¤Ÿà¤¿ किजीये । तथा कà¥à¤°à¤¿à¤¯à¤¾ करने से पहले आपकी कà¥à¤°à¤¿à¤¯à¤¾ के परिणाम जान लें ।',
'actioncomplete' => 'कारà¥à¤¯ पूरà¥à¤£',
'actionfailed' => 'कà¥à¤°à¤¿à¤¯à¤¾ विफल',
-'deletedtext' => '"<nowiki>$1</nowiki>" को हटाया गया है ।
+'deletedtext' => '"$1" को हटाया गया है ।
हाल में हटाये गये लेखोंकी सूची के लिये $2 देखें ।',
'deletedarticle' => '"$1" को हटाया गया है।',
'suppressedarticle' => '"[[$1]]" को सपà¥à¤°à¥‡à¤¸ किया',
@@ -2058,7 +2080,7 @@ $2 दà¥à¤µà¤¾à¤°à¤¾ संपादित आखिरी अवतरण कà
'protect_expiry_invalid' => 'समापà¥à¤¤à¥€ समय गलत है ।',
'protect_expiry_old' => 'समापà¥à¤¤à¥€ समय बीत चà¥à¤•à¤¾ है ।',
'protect-unchain-permissions' => 'अनलॉक आगे विकलà¥à¤ªà¥‹à¤‚ की रकà¥à¤·à¤¾',
-'protect-text' => "'''<nowiki>$1</nowiki>''' पनà¥à¤¨à¥‡ का सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤° आप यहां देख सकते है और उसे बदल भी सकते है ।",
+'protect-text' => "'''$1''' पनà¥à¤¨à¥‡ का सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤° आप यहां देख सकते है और उसे बदल भी सकते है ।",
'protect-locked-blocked' => "आप बाधित होने की सà¥à¤¥à¤¿à¤¤à¤¿ में सà¥à¤°à¤•à¥à¤·à¤¾ सà¥à¤¥à¤° में परिवरà¥à¤¤à¤¨ नहीं कर सकते।
पृषà¥à¤  '''$1''' की वरà¥à¤¤à¥à¤¤à¤®à¤¾à¤¨ सà¥à¤¤à¤¿à¤¥à¤¿ यहाठपर है:",
'protect-locked-dblock' => "सकà¥à¤°à¤¿à¤¯ डेटाबेस बंद होने की वजह से सà¥à¤°à¤•à¥à¤·à¤¾ सà¥à¤¤à¤° में कोई परिवरà¥à¤¤à¤¨ नहीं किया जा सकता।
@@ -2160,9 +2182,10 @@ $1',
'undelete-show-file-submit' => 'हाà¤',
# Namespace form on various pages
-'namespace' => 'नामसà¥à¤¥à¤¾à¤¨:',
-'invert' => 'विपरीत पà¥à¤°à¤µà¤°à¤£',
-'blanknamespace' => '(मà¥à¤–à¥à¤¯)',
+'namespace' => 'नामसà¥à¤¥à¤¾à¤¨:',
+'invert' => 'विपरीत पà¥à¤°à¤µà¤°à¤£',
+'namespace_association' => 'समà¥à¤¬à¤¦à¥à¤§ नामसà¥à¤¥à¤¾à¤¨',
+'blanknamespace' => '(मà¥à¤–à¥à¤¯)',
# Contributions
'contributions' => 'सदसà¥à¤¯ योगदान',
@@ -2211,13 +2234,15 @@ $1',
'whatlinkshere-filters' => 'छनà¥à¤¨à¥‡',
# Block/unblock
+'autoblockid' => 'सà¥à¤µà¤¤à¤ƒ अवरोध #$1',
+'block' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾/आईपी पता अवरोधित करें',
+'unblock' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾/आईपी पता अनवरोधित करें',
'blockip' => 'अवरोधित करें',
'blockip-title' => 'बà¥à¤²à¥‰à¤• उपयोगकरà¥à¤¤à¤¾',
'blockip-legend' => 'सदसà¥à¤¯ को बà¥à¤²à¥‰à¤• करें',
'blockiptext' => 'विशिषà¥à¤  IP पते अथवा सदसà¥à¤¯ नाम को लिखने के अधिकार से बाधà¥à¤¯ करने के लिठनिमà¥à¤¨ पतà¥à¤° का पà¥à¤°à¤¯à¥‹à¤— करें।
यह सिरà¥à¤« बरà¥à¤¬à¤°à¤¤à¤¾ को रोकने के लिठही किया जाना चाहिà¤, और [[{{MediaWiki:Policy-url}}|नीति]] के अनà¥à¤¸à¤¾à¤° ही करना चाहिà¤à¥¤
नीचे विशिषà¥à¤  कारण भी लिखें (उदाहरण के लिà¤, सटीक पृषà¥à¤ à¥‹à¤‚ को दरà¥à¤¶à¤¾à¤¤à¥‡ हà¥à¤, जिनमें बरà¥à¤¬à¤°à¤¤à¤¾ की गई हो)।',
-'ipaddress' => 'आईपी à¤à¤¡à¥à¤°à¥‡à¤¸:',
'ipadressorusername' => 'आईपी à¤à¤¡à¥à¤°à¥‡à¤¸ या सदसà¥à¤¯à¤¨à¤¾à¤®:',
'ipbexpiry' => 'समापà¥à¤¤à¤¿:',
'ipbreason' => 'कारण:',
@@ -2230,7 +2255,7 @@ $1',
** पृषà¥à¤ à¥‹à¤‚ से सामगà¥à¤°à¥€ हटानाâ€â€â€â€â€
** बाहरी जालसà¥à¤¥à¤²à¥‹à¤‚ की फ़ालतू कड़ियां देना
** सदसà¥à¤¯à¥‹à¤‚ को तंग करना',
-'ipbanononly' => 'सिरà¥à¤« अनामक सदसà¥à¤¯à¥‹à¤‚को बà¥à¤²à¥‰à¤• करें',
+'ipb-hardblock' => 'सतà¥à¤°à¤¾à¤°à¤¾à¤®à¥à¤­à¤¿à¤¤ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤“ं को इस आईपी पते का समà¥à¤ªà¤¾à¤¦à¤¨ करने से रोकें',
'ipbcreateaccount' => 'खाते का निरà¥à¤®à¤¾à¤£ रोकें',
'ipbemailban' => 'सदसà¥à¤¯ को इ-मेल भेजने से रोकें',
'ipbenableautoblock' => 'इस सदसà¥à¤¯à¤¦à¥à¤µà¤¾à¤°à¤¾ इसà¥à¤¤à¥‡à¤®à¤¾à¤² किया गया आखिरी आईपी à¤à¤¡à¥à¤°à¥‡à¤¸ और यहां से आगे इस सदसà¥à¤¯ दà¥à¤µà¤¾à¤°à¤¾ इसà¥à¤¤à¥‡à¤®à¤¾à¤²à¤®à¥‡à¤‚ लाये जाने वाले सभी à¤à¤¡à¥à¤°à¥‡à¤¸ बà¥à¤²à¥‰à¤• करें।',
@@ -2241,7 +2266,7 @@ $1',
'ipbotherreason' => 'अनà¥à¤¯/दूसरा कारण:',
'ipbhidename' => 'संपादन व सूचियों से सदसà¥à¤¯ नाम छिपाà¤à¤',
'ipbwatchuser' => 'इस सदसà¥à¤¯ के सदसà¥à¤¯ तथा वारà¥à¤¤à¤¾ पृषà¥à¤  पर धà¥à¤¯à¤¾à¤¨ रखें',
-'ipballowusertalk' => 'अवरोधित होने पर भी इस सदसà¥à¤¯ को अपना वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾ बदलने दें',
+'ipb-disableusertalk' => 'इस पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ को अवरà¥à¤¦à¥à¤§ होने पर सà¥à¤µà¤¯à¤‚ का वारà¥à¤¤à¤¾ पृषà¥à¤  समà¥à¤ªà¤¾à¤¦à¤¨ करने से रोकें',
'ipb-change-block' => 'इन जमावों के साथ सदसà¥à¤¯ को फिर से अवरोधित करें',
'badipaddress' => 'अमानà¥à¤¯ आईपी पता।',
'blockipsuccesssub' => 'अवरोधन सफल ।(संपादन करने से रोक दिया गया है)',
@@ -2256,17 +2281,23 @@ $1',
'unblockiptext' => 'पहले बà¥à¤²à¥‰à¤• किये हà¥à¤ आईपी à¤à¤¡à¥à¤°à¥‡à¤¸ या सदसà¥à¤¯à¤¨à¤¾à¤® को अनबà¥à¤²à¥‰à¤• करने के लिये नीचे दिया गया फारà¥à¤® भरें।',
'ipusubmit' => 'यह अवरोध हटाà¤à¤',
'unblocked' => '[[User:$1|$1]] को अनबà¥à¤²à¥‰à¤• कर दिया हैं',
+'unblocked-range' => '$1 को अनवरोधित किया गया',
'unblocked-id' => 'अवरोध $1 निकाल दिया गया है',
+'blocklist' => 'अवरोधित आईपी पते व पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤®',
'ipblocklist' => 'अवरोधित आईपी पते व सदसà¥à¤¯à¤¨à¤¾à¤®',
'ipblocklist-legend' => 'अवरोधित सदसà¥à¤¯ को खोजें',
-'ipblocklist-username' => 'सदसà¥à¤¯à¤¨à¤¾à¤µ या आईपी à¤à¤¡à¥à¤°à¥‡à¤¸:',
-'ipblocklist-sh-userblocks' => 'खाता अवरोध $1',
-'ipblocklist-sh-tempblocks' => 'असà¥à¤¥à¤¾à¤¯à¥€ अवरोध $1',
-'ipblocklist-sh-addressblocks' => 'à¤à¤•à¤² आईपी अवरोध $1',
+'blocklist-userblocks' => 'खाते के अवरोध छिपाà¤à¤‚',
+'blocklist-tempblocks' => 'असà¥à¤¥à¤¾à¤ˆ अवरोध छिपाà¤à¤‚',
+'blocklist-addressblocks' => 'à¤à¤•à¤² आईपी अवरोध छिपाà¤à¤‚',
+'blocklist-timestamp' => 'टाइमसà¥à¤Ÿà¥ˆà¤®à¥à¤ª',
+'blocklist-target' => 'लकà¥à¤·à¥à¤¯',
+'blocklist-expiry' => 'अवसान',
+'blocklist-by' => 'पà¥à¤°à¤¶à¤¾à¤¸à¤• अवरà¥à¤¦à¥à¤§',
+'blocklist-params' => 'अवरोध मापदणà¥à¤¡',
+'blocklist-reason' => 'कारण',
'ipblocklist-submit' => 'खोज',
'ipblocklist-localblock' => 'सà¥à¤¥à¤¾à¤¨à¥€à¤¯ अवरोध',
'ipblocklist-otherblocks' => 'आईपी बà¥à¤²à¥‰à¤• सूची से अनà¥à¤¯ बà¥à¤²à¥‰à¤•à¥‹à¤‚',
-'blocklistline' => '$1, $2 ने $3 को बदलाव करने से रोक दिया है (यह रोक $4 तक मानà¥à¤¯ है)',
'infiniteblock' => 'इनफाईनाईट',
'expiringblock' => '$1 को $2 बजे मियाद खतà¥à¤® होती है',
'anononlyblock' => 'केवल अनाम सदसà¥à¤¯',
@@ -2291,7 +2322,7 @@ $1 को बाधà¥à¤¯ करने का कारण है: "$2"',
'reblock-logentry' => '[[$1]] का अवरोध जमाव बदला गया, मियाद अब $2 $3 पर खतà¥à¤® होगी',
'blocklogtext' => 'यह सदसà¥à¤¯à¥‹à¤‚ को बाधà¥à¤¯ à¤à¤µà¤‚ अबाधà¥à¤¯ करने के कà¥à¤°à¤¿à¤¯à¤¾à¤•à¤²à¤¾à¤ªà¥‹à¤‚ का अभिलेख है।
सà¥à¤µà¤¤: बाधित होने वाले IP पते इस सूची में उपलबà¥à¤§ नहीं है।
-वरà¥à¤¤à¥à¤¤à¤®à¤¾à¤¨ में कà¥à¤°à¤¿à¤¯à¤¾à¤¶à¥€à¤² पà¥à¤°à¤¤à¤¿à¤¬à¤‚धों और बाधà¥à¤¯à¥‹à¤‚ की सूची के लिठ[[Special:IPBlockList|IP बाधित सूची]] देखें।',
+वरà¥à¤¤à¥à¤¤à¤®à¤¾à¤¨ में कà¥à¤°à¤¿à¤¯à¤¾à¤¶à¥€à¤² पà¥à¤°à¤¤à¤¿à¤¬à¤‚धों और बाधà¥à¤¯à¥‹à¤‚ की सूची के लिठ[[Special:BlockList|IP बाधित सूची]] देखें।',
'unblocklogentry' => '$1 अनवरोधित',
'block-log-flags-anononly' => 'केवल अनाम सदसà¥à¤¯',
'block-log-flags-nocreate' => 'खाता निरà¥à¤®à¤¾à¤£ पर रोक',
@@ -2305,9 +2336,9 @@ $1 को बाधà¥à¤¯ करने का कारण है: "$2"',
'ipb_expiry_temp' => 'छà¥à¤ªà¤¾à¤¯à¥‡à¤‚ हà¥à¤ सदसà¥à¤¯à¤¨à¤¾à¤® बà¥à¤²à¥‰à¤•à¥à¤¸ हमेशा के लिये होने चाहिये।',
'ipb_hide_invalid' => 'इस खाते को छिपा नहीं पाà¤; संभव है कि इसमें बहà¥à¤¤ अधिक संपादन हà¥à¤ हों।',
'ipb_already_blocked' => '"$1" को पहलेसे बà¥à¤²à¥‰à¤• हैं',
-'ipb-needreblock' => '== पहले ही अवरोधित है ==
-$1 पहले ही अवरोधित है।
+'ipb-needreblock' => '$1 पहले ही अवरोधित है।
कà¥à¤¯à¤¾ आप अवरोध के जमाव बदलना चाहेंगे?',
+'unblock-hideuser' => 'आप इस पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ को अनवरोधित नहीं कर सकते, कà¥à¤¯à¥‹à¤‚कि इनका पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤® छिपा हà¥à¤† है।',
'ipb_cant_unblock' => 'समसà¥à¤¯à¤¾: बà¥à¤²à¥‰à¤• ID $1 मिला नहीं। इसे पहले अनबà¥à¤²à¥‰à¤• कर दिया गया हो सकता हैं।',
'ipb_blocked_as_range' => 'गलती: $1 यह आइपी सीधे बाधित नहीं है और अबाधà¥à¤¯ नहीं किया जा सकता।
फिर भी, $2 पà¥à¤°à¤•à¤¾à¤° को बाधà¥à¤¯ किया जा सकता है, जिनको अबाधà¥à¤¯ किया जा सकता है।',
@@ -2457,7 +2488,7 @@ $1 पहले ही अवरोधित है।
'allmessagesname' => 'नाम',
'allmessagesdefault' => 'डिफॉलà¥à¤Ÿ पाठ',
'allmessagescurrent' => 'वरà¥à¤¤à¤®à¤¾à¤¨ पाठ',
-'allmessagestext' => 'ये मीडियाविकि नामसà¥à¤¥à¤¾à¤¨ में उपलबà¥à¤§ पà¥à¤°à¤£à¤¾à¤²à¥€ संदेशों की à¤à¤• सूची है। यदि आप सामानà¥à¤¯ मीडियाविकि कà¥à¤·à¥‡à¤¤à¥à¤°à¥€à¤¯à¤•à¤°à¤£ में योगदान देना चाहें तो कृपया [http://www.mediawiki.org/wiki/Localisation मीडियाविकि कà¥à¤·à¥‡à¤¤à¥à¤°à¥€à¤¯à¤•à¤°à¤£] व [http://translatewiki.net translatewiki.net] को देखें।',
+'allmessagestext' => 'ये मीडियाविकि नामसà¥à¤¥à¤¾à¤¨ में उपलबà¥à¤§ पà¥à¤°à¤£à¤¾à¤²à¥€ संदेशों की à¤à¤• सूची है। यदि आप सामानà¥à¤¯ मीडियाविकि कà¥à¤·à¥‡à¤¤à¥à¤°à¥€à¤¯à¤•à¤°à¤£ में योगदान देना चाहें तो कृपया [//www.mediawiki.org/wiki/Localisation मीडियाविकि कà¥à¤·à¥‡à¤¤à¥à¤°à¥€à¤¯à¤•à¤°à¤£] व [//translatewiki.net translatewiki.net] को देखें।',
'allmessagesnotsupportedDB' => "इस पनà¥à¤¨à¥‡ का इसà¥à¤¤à¥‡à¤®à¤¾à¤² नहीं कर सकते कà¥à¤¯à¥‹à¤‚की '''\$wgUseDatabaseMessages''' बंद हैं।",
'allmessages-filter-legend' => 'छानें',
'allmessages-filter' => 'अनà¥à¤•à¥‚लन सà¥à¤¥à¤¿à¤¤à¤¿ के आधार पर छानें:',
@@ -2605,9 +2636,7 @@ $1 पहले ही अवरोधित है।
'monobook.js' => '/* डिपà¥à¤°à¤¿à¤•à¥‡à¤Ÿà¥‡à¤¡;[[MediaWiki:common.js]] का इसà¥à¤¤à¥‡à¤®à¤¾à¤² करें */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata इस सरà¥à¤µà¤° के लिये पà¥à¤°à¤¾à¤ªà¥à¤¤ नहीं हैं।',
-'nocreativecommons' => 'Creative Commons RDF metadata इस सरà¥à¤µà¤° के लिये पà¥à¤°à¤¾à¤ªà¥à¤¤ नहीं हैं।',
-'notacceptable' => 'विकि सरà¥à¤µà¤° आपके कà¥à¤²à¤¾à¤¯à¤‚टको जिस पà¥à¤°à¤•à¤¾à¤°à¤¸à¥‡ डाटा चाहिये उस पà¥à¤°à¤•à¤¾à¤°à¤¸à¥‡ नहीं दे सकता।',
+'notacceptable' => 'विकि सरà¥à¤µà¤° आपके कà¥à¤²à¤¾à¤¯à¤‚टको जिस पà¥à¤°à¤•à¤¾à¤°à¤¸à¥‡ डाटा चाहिये उस पà¥à¤°à¤•à¤¾à¤°à¤¸à¥‡ नहीं दे सकता।',
# Attribution
'anonymous' => '{{SITENAME}} के {{PLURAL:$1||}} बेनामी सदसà¥à¤¯',
@@ -2630,35 +2659,6 @@ $1 पहले ही अवरोधित है।
'spam_reverting' => '$1 को कड़ी ना होने वाले पà¥à¤°à¤¾à¤¨à¥‡ अवतरण को पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ कर रहें हैं',
'spam_blanking' => 'सभी अवतरणोंमें $1 को कड़ियां हैं, पूरा पाठ निकाल रहें हैं',
-# Info page
-'infosubtitle' => 'पनà¥à¤¨à¥‡à¤•à¥‡ बारे में ज़ानकारी',
-'numedits' => 'बदलावोंकी संखà¥à¤¯à¤¾ (पनà¥à¤¨à¤¾): $1',
-'numtalkedits' => 'बदलावों की संखà¥à¤¯à¤¾ (वारà¥à¤¤à¤¾ पॄषà¥à¤ ): $1',
-'numwatchers' => 'पहरा देनेवालोंकी संखà¥à¤¯à¤¾: $1',
-'numauthors' => 'अलग लेखकोंकी संखà¥à¤¯à¤¾ (पनà¥à¤¨à¤¾): $1',
-'numtalkauthors' => 'अलग लेखकोंकी संखà¥à¤¯à¤¾ (वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾): $1',
-
-# Math options
-'mw_math_png' => 'हमेशा PNG बनायें',
-'mw_math_simple' => 'HTML अलग आसानी से बनें या फिर PNG बनायें',
-'mw_math_html' => 'HTML अगर हो सकें तो अनà¥à¤¯à¤¥à¤¾ PNG',
-'mw_math_source' => 'उसे TeX ही रखियें (पाठ बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤° के लिये)',
-'mw_math_modern' => 'आधà¥à¤¨à¤¿à¤• बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤°à¤•à¥‡ लिये उपयà¥à¤•à¥à¤¤',
-'mw_math_mathml' => 'MathML अगर हो सके तो (पà¥à¤°à¤¾à¤¯à¥‹à¤—िक)',
-
-# Math errors
-'math_failure' => 'पारà¥à¤¸ नहीं कर पायें',
-'math_unknown_error' => 'अपरिचीत समसà¥à¤¯à¤¾',
-'math_unknown_function' => 'अजà¥à¤žà¤¾à¤¤ कारà¥à¤¯',
-'math_lexing_error' => 'लेकà¥à¤¸à¥€à¤‚ग समसà¥à¤¯à¤¾',
-'math_syntax_error' => 'सिनà¥à¤Ÿà¥ˆà¤•à¥à¤¸ गलती',
-'math_image_error' => 'PNG में रà¥à¤ªà¤¾à¤‚तरण अयशसà¥à¤µà¥€;
-latex, dvips, gs, और convert के इनà¥à¤¸à¥à¤Ÿà¥‰à¤²à¥‡à¤¶à¤¨ की जाà¤à¤š करें',
-'math_bad_tmpdir' => 'मैथ असà¥à¤¥à¤¾à¤¯à¥€ डाइरेकà¥à¤Ÿà¤°à¥€ या तो बना नहीं सकतें या फिर उसमें लिख नहीं सकतें',
-'math_bad_output' => 'मैथ आउटपà¥à¤Ÿ डाइरेकà¥à¤Ÿà¤°à¥€ या तो बना नहीं सकतें या फिर उसमें लिख नहीं सकतें',
-'math_notexvc' => 'texvc à¤à¤•à¥à¤à¥€à¤•à¥à¤¯à¥‚टेबल फ़ाईल मिल नहीं रहीं;
-समनà¥à¤°à¥‚प बनाने के लियें math/README देखें।',
-
# Patrolling
'markaspatrolleddiff' => 'देख लिया à¤à¤¸à¤¾ मारà¥à¤• करें',
'markaspatrolledtext' => 'इस पनà¥à¤¨à¥‡ को देख लिया à¤à¤¸à¤¾ मारà¥à¤• करें',
@@ -2703,7 +2703,6 @@ $1',
'file-nohires' => '<small>इससे जà¥à¤¯à¤¾à¤¦à¤¾ रिज़ोलà¥à¤¯à¥‚शन उपलबà¥à¤§ नहीं हैं.</small>',
'svg-long-desc' => 'SVG फ़ाईल, साधारणत: $1 × $2 पीकà¥à¤¸à¥‡à¤²à¥à¤¸, फ़ाईलका आकार: $3',
'show-big-image' => 'समà¥à¤ªà¥‚रà¥à¤£ रिज़ोलà¥à¤¯à¥‚शन',
-'show-big-image-thumb' => '<small>इस à¤à¤²à¤• का आकार: $1 × $2 पीकà¥à¤¸à¥‡à¤²à¥à¤¸</small>',
'file-info-gif-looped' => 'चकà¥à¤°à¤¿à¤¤',
'file-info-gif-frames' => '$1 {{PLURAL:$1|ढाà¤à¤šà¤¾|ढाà¤à¤šà¥‡}}',
'file-info-png-looped' => 'चकà¥à¤°à¤¿à¤¤',
@@ -2732,7 +2731,7 @@ $1',
'metadata-help' => 'इस फ़ाईलमें बढ़ाई हà¥à¤ˆ जानकारी हैं, हो सकता है कि यह फ़ाईल बनानेमें इसà¥à¤¤à¥‡à¤®à¤¾à¤² किये गठसà¥à¤•à¥ˆà¤¨à¤° अथवा कैमेरा से यह पà¥à¤°à¤¾à¤ªà¥à¤¤ हà¥à¤ˆ हैं । अगर यह फ़ाईल बदलदी गई हैं तो यह जानकारी नई फ़ाईलसे मेल नहीं खाने की आशंका हैं ।',
'metadata-expand' => 'विसà¥à¤¤à¥ƒà¤¤ जानकारियां दिखाà¤à¤‚',
'metadata-collapse' => 'विसà¥à¤¤à¥ƒà¤¤ जानकारियां छिपाà¤à¤‚',
-'metadata-fields' => 'जब मेटाडाटा तालिका को लघà¥à¤°à¥‚प किया जाà¤à¤—ा तो इस सनà¥à¤¦à¥‡à¤¶ में सूचीबदà¥à¤§ EXIF मेटाडाटा जानकारियां छवि पà¥à¤°à¤¦à¤°à¥à¤¶à¤¿à¤¤ होते समय समà¥à¤®à¤¿à¤²à¤¿à¤¤ की जाà¤à¤‚गी।
+'metadata-fields' => 'जब मेटाडाटा तालिका को लघà¥à¤°à¥‚प किया जाà¤à¤—ा तो इस सनà¥à¤¦à¥‡à¤¶ में सूचीबदà¥à¤§ इà¤à¤•à¥à¤¸à¤†à¤¯à¤à¤« मेटाडाटा जानकारियां छवि पà¥à¤°à¤¦à¤°à¥à¤¶à¤¿à¤¤ होते समय समà¥à¤®à¤¿à¤²à¤¿à¤¤ की जाà¤à¤‚गी।
अनà¥à¤¯ डिफ़ॉलà¥à¤Ÿ रूप से छिपी रहेंगी।
* make
* model
@@ -2740,7 +2739,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'चौडाई',
@@ -2755,13 +2760,11 @@ $1',
'exif-ycbcrpositioning' => 'Y और C का पोज़िशनिंग',
'exif-xresolution' => 'होरिज़ॉंटल रिज़ोलà¥à¤¯à¥‚शन',
'exif-yresolution' => 'वà¥à¤¹à¤°à¥à¤Ÿà¤¿à¤•à¤² रिज़ोलà¥à¤¯à¥‚शन',
-'exif-resolutionunit' => 'X और Y रिज़ोलà¥à¤¯à¥‚शन का मानक पà¥à¤°à¤®à¤¾à¤£',
'exif-stripoffsets' => 'चितà¥à¤° डाटा सà¥à¤¥à¤¾à¤¨',
'exif-rowsperstrip' => 'हर सà¥à¤Ÿà¥à¤°à¥€à¤ªà¤®à¥‡à¤‚ कतारोंकी संखà¥à¤¯à¤¾',
'exif-stripbytecounts' => 'कॉमà¥à¤ªà¥à¤°à¥‡à¤¸à¥à¤¸à¥à¤¡ सà¥à¤Ÿà¥à¤°à¥€à¤ªà¤®à¥‡à¤‚ बाईटà¥à¤¸',
'exif-jpeginterchangeformat' => 'JPEG SOI के लिये ऑफसेट',
'exif-jpeginterchangeformatlength' => 'JPEG डाटाके बाईटà¥à¤¸',
-'exif-transferfunction' => 'टà¥à¤°à¤¾à¤¨à¥à¤¸à¥à¤«à¤° फंकà¥à¤¶à¤¨',
'exif-whitepoint' => 'सफेद बिंदू कà¥à¤°à¥‹à¤®à¥…टिसिटी',
'exif-primarychromaticities' => 'कà¥à¤°à¥‹à¤®à¥…टिसिटीज ऑफ पà¥à¤°à¤¾à¤ˆà¤®à¤¾à¤°à¤¿à¤Ÿà¥€à¤œ',
'exif-ycbcrcoefficients' => 'कलर सà¥à¤ªà¥‡à¤¸ टà¥à¤°à¤¾à¤¨à¥à¤¸à¥à¤«à¥‰à¤°à¥à¤®à¥‡à¤¶à¤¨ मॅटà¥à¤°à¥€à¤•à¥à¤¸ कोà¤à¤«à¤¿à¤¶à¥€à¤¯à¤‚टà¥à¤¸',
@@ -2780,7 +2783,6 @@ $1',
'exif-compressedbitsperpixel' => 'चितà¥à¤° कॉमà¥à¤ªà¥à¤°à¥‡à¤¶à¤¨ मोड',
'exif-pixelydimension' => 'चितà¥à¤°à¤•à¥€ वैध चौड़ाई',
'exif-pixelxdimension' => 'चितà¥à¤°à¤•à¥€ वैध उंचाई',
-'exif-makernote' => 'उतà¥à¤ªà¤¾à¤¦à¤•à¤•à¥€ टिपà¥à¤ªà¤£à¥€',
'exif-usercomment' => 'सदसà¥à¤¯ टिपà¥à¤ªà¤£à¥€',
'exif-relatedsoundfile' => 'संबंधित धà¥à¤µà¤¨à¥€ फ़ाईल',
'exif-datetimeoriginal' => 'डाटा बनाने का दिनांक और समय',
@@ -2794,7 +2796,6 @@ $1',
'exif-exposureprogram' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥‹à¤œà¤¼à¤° पà¥à¤°à¥‹à¤—à¥à¤°à¥‡à¤®',
'exif-spectralsensitivity' => 'सà¥à¤ªà¥‡à¤•à¥à¤Ÿà¥à¤°à¤² सेनà¥à¤¸à¤¿à¤Ÿà¥€à¤µà¥à¤¹à¤¿à¤Ÿà¥€',
'exif-isospeedratings' => 'ISO गती मूलà¥à¤¯à¤®à¤¾à¤ªà¤¨',
-'exif-oecf' => 'ऑपà¥à¤Ÿà¥‹à¤ˆà¤²à¥‡à¤•à¥à¤Ÿà¥à¤°à¥‰à¤¨à¤¿à¤• कनà¥à¤µà¥à¤¹à¤°à¥à¤¶à¤¨ फॅकà¥à¤Ÿà¤°',
'exif-shutterspeedvalue' => 'शटरकी गती',
'exif-aperturevalue' => 'à¤à¤ªà¤°à¥à¤šà¤°',
'exif-brightnessvalue' => 'बà¥à¤°à¤¾à¤ˆà¤Ÿà¤¨à¥‡à¤¸',
@@ -2807,7 +2808,6 @@ $1',
'exif-focallength' => 'लेनà¥à¤¸ की फोकल लंबाई',
'exif-subjectarea' => 'सबà¥à¤œà¥‡à¤•à¥à¤Ÿ à¤à¤°à¤¿à¤¯à¤¾',
'exif-flashenergy' => 'फà¥à¤²à¥…श à¤à¤¨à¤°à¥à¤œà¥€',
-'exif-spatialfrequencyresponse' => 'सà¥à¤ªà¥…शिअल फà¥à¤°à¤¿à¤•à¥à¤µà¥‡à¤¨à¥à¤¸à¥€ रिसà¥à¤ªà¥‰à¤¨à¥à¤¸',
'exif-focalplanexresolution' => 'फोकल पà¥à¤²à¥‡à¤¨ x रिज़ोलà¥à¤¯à¥‚शन',
'exif-focalplaneyresolution' => 'फोकल पà¥à¤²à¥‡à¤¨ Y रिज़ोलà¥à¤¯à¥‚शन',
'exif-focalplaneresolutionunit' => 'फोकल पà¥à¤²à¥‡à¤¨ रिज़ोलà¥à¤¯à¥‚शन à¤à¤•à¤•',
@@ -2816,7 +2816,6 @@ $1',
'exif-sensingmethod' => 'सेनà¥à¤¸à¥€à¤‚ग पदà¥à¤§à¤¤à¥€',
'exif-filesource' => 'फ़ाईल सà¥à¤°à¥‹à¤¤',
'exif-scenetype' => 'सीनका पà¥à¤°à¤•à¤¾à¤°',
-'exif-cfapattern' => 'CFA पॅटरà¥à¤¨',
'exif-customrendered' => 'कसà¥à¤Ÿà¤® इमेज पà¥à¤°à¥‹à¤¸à¥‡à¤¸à¤¿à¤‚ग',
'exif-exposuremode' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥‹à¤œà¤¼à¤° मोड',
'exif-whitebalance' => 'वà¥à¤¹à¤¾à¤ˆà¤Ÿ बॅलनà¥à¤¸',
@@ -3009,15 +3008,13 @@ $1',
# External editor support
'edit-externally' => 'बाहरी पà¥à¤°à¤£à¤¾à¤²à¥€ का उपयोग करते हà¥à¤ इस सञà¥à¤šà¤¿à¤•à¤¾ को समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ करें ।',
-'edit-externally-help' => '(और जानकारी के लिठ[http://www.mediawiki.org/wiki/Manual:External_editors जमाव निरà¥à¤¦à¥‡à¤¶] देखें)',
+'edit-externally-help' => '(और जानकारी के लिठ[//www.mediawiki.org/wiki/Manual:External_editors जमाव निरà¥à¤¦à¥‡à¤¶] देखें)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'सभी',
-'imagelistall' => 'सभी',
-'watchlistall2' => 'सभी',
-'namespacesall' => 'सभी',
-'monthsall' => 'सभी',
-'limitall' => 'सभी',
+'watchlistall2' => 'सभी',
+'namespacesall' => 'सभी',
+'monthsall' => 'सभी',
+'limitall' => 'सभी',
# E-mail address confirmation
'confirmemail' => 'ई-मेल पà¥à¤°à¤®à¤¾à¤£à¤¿à¤¤ करे',
@@ -3135,7 +3132,7 @@ $1',
'watchlistedit-normal-legend' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची से शीरà¥à¤·à¤• हटायें',
'watchlistedit-normal-explain' => 'आपकी धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में उपलबà¥à¤§ शीरà¥à¤·à¤• नीचे दिये गये हैं।
à¤à¤• शीरà¥à¤·à¤• हटाने के लिये, उसके आगे दिये बकà¥à¤¸à¥‡ पर कà¥à¤²à¤¿à¤• करें, और शीरà¥à¤·à¤• हटायें पर कà¥à¤²à¤¿à¤• करें।
-आप [[Special:Watchlist/raw|कचà¥à¤šà¥€ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची का संपादन]] भी कर सकतें हैं।',
+आप [[Special:EditWatchlist/raw|कचà¥à¤šà¥€ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची का संपादन]] भी कर सकतें हैं।',
'watchlistedit-normal-submit' => 'शीरà¥à¤·à¤• हटायें',
'watchlistedit-normal-done' => 'आपकी धà¥à¤¯à¤¾à¤¨à¤¸à¥‚चीसे {{PLURAL:$1|1शीरà¥à¤·à¤•|$1 शीरà¥à¤·à¤•}} हटा दिये:',
'watchlistedit-raw-title' => 'कचà¥à¤šà¥€ धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची बदलें',
@@ -3143,7 +3140,7 @@ $1',
'watchlistedit-raw-explain' => 'आपकी धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची में उपलबà¥à¤§ शीरà¥à¤·à¤• नीचे दिये गये हैं, और वे सूची से निकालकर या बढाकर बदलें जा सकतें हैं;
हर लाइन पर à¤à¤• शीरà¥à¤·à¤• देकर।
जब खतम हो जायें, तो धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची अपडेट पर कà¥à¤²à¤¿à¤• करें।
-आप [[Special:Watchlist/edit|सà¥à¤Ÿà¥ˆà¤£à¥à¤¡à¤°à¥à¤¡ संपादक का इसà¥à¤¤à¥‡à¤®à¤¾à¤²]] भी कर सकतें हैं।',
+आप [[Special:EditWatchlist|सà¥à¤Ÿà¥ˆà¤£à¥à¤¡à¤°à¥à¤¡ संपादक का इसà¥à¤¤à¥‡à¤®à¤¾à¤²]] भी कर सकतें हैं।',
'watchlistedit-raw-titles' => 'शीरà¥à¤·à¤•:',
'watchlistedit-raw-submit' => 'धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची अपडेट करें',
'watchlistedit-raw-done' => 'आपकी धà¥à¤¯à¤¾à¤¨à¤¸à¥‚ची अपडेट कर दी गई हैं',
@@ -3204,26 +3201,26 @@ $1',
'duplicate-defaultsort' => '\'\'\'Warning:\'\'\' पà¥à¤°à¤¾à¤¨à¥€ मूल कà¥à¤°à¤®à¤¾à¤‚कन कà¥à¤‚जी "$1" के बजाय अब मूल कà¥à¤°à¤®à¤¾à¤‚कन कà¥à¤‚जी "$2" होगी।',
# Special:Version
-'version' => 'रूपानà¥à¤¤à¤°',
-'version-extensions' => 'इनà¥à¤¸à¥à¤Ÿà¥‰à¤² की हà¥à¤ˆ à¤à¤•à¥à¤¸à¥à¤Ÿà¥‡à¤‚शन',
-'version-specialpages' => 'विशेष पनà¥à¤¨à¥‡',
-'version-parserhooks' => 'पारà¥à¤¸à¤° हूक',
-'version-variables' => 'वेरिà¤à¤¬à¤²',
-'version-skins' => 'तà¥à¤µà¤šà¤¾à¤à¤‚',
-'version-other' => 'अनà¥à¤¯',
-'version-mediahandlers' => 'मीडिया संचालक',
-'version-hooks' => 'हूक',
-'version-extension-functions' => 'विसà¥à¤¤à¤¾à¤° पà¥à¤°à¤•à¤¾à¤°à¥à¤¯à¤¾à¤¤à¥à¤®à¤•à¤¤à¤¾',
-'version-parser-extensiontags' => 'पारà¥à¤¸à¤° à¤à¤•à¥à¤¸à¥à¤Ÿà¥‡à¤‚शन टैग',
-'version-parser-function-hooks' => 'पारà¥à¤¸à¤° कारà¥à¤¯ हूक',
-'version-skin-extension-functions' => 'तà¥à¤µà¤šà¤¾ à¤à¤•à¥à¤¸à¥à¤Ÿà¥‡à¤‚शन कà¥à¤°à¤¿à¤¯à¤¾',
-'version-hook-name' => 'हूक नाम',
-'version-hook-subscribedby' => 'ने सदसà¥à¤¯à¤¤à¥à¤µ लिया',
-'version-version' => '(अवतरण $1)',
-'version-license' => 'अनà¥à¤œà¥à¤žà¤¾à¤ªà¤¤à¥à¤°',
-'version-software' => 'इनà¥à¤¸à¥à¤Ÿà¥‰à¤² की हà¥à¤ˆ पà¥à¤°à¤£à¤¾à¤²à¥€',
-'version-software-product' => 'पà¥à¤°à¥‹à¤¡à¤•à¥à¤Ÿ',
-'version-software-version' => 'अवतरण',
+'version' => 'रूपानà¥à¤¤à¤°',
+'version-extensions' => 'इनà¥à¤¸à¥à¤Ÿà¥‰à¤² की हà¥à¤ˆ à¤à¤•à¥à¤¸à¥à¤Ÿà¥‡à¤‚शन',
+'version-specialpages' => 'विशेष पनà¥à¤¨à¥‡',
+'version-parserhooks' => 'पारà¥à¤¸à¤° हूक',
+'version-variables' => 'वेरिà¤à¤¬à¤²',
+'version-antispam' => 'अवांछित-ईमेल रोकथाम',
+'version-skins' => 'तà¥à¤µà¤šà¤¾à¤à¤‚',
+'version-other' => 'अनà¥à¤¯',
+'version-mediahandlers' => 'मीडिया संचालक',
+'version-hooks' => 'हूक',
+'version-extension-functions' => 'विसà¥à¤¤à¤¾à¤° पà¥à¤°à¤•à¤¾à¤°à¥à¤¯à¤¾à¤¤à¥à¤®à¤•à¤¤à¤¾',
+'version-parser-extensiontags' => 'पारà¥à¤¸à¤° à¤à¤•à¥à¤¸à¥à¤Ÿà¥‡à¤‚शन टैग',
+'version-parser-function-hooks' => 'पारà¥à¤¸à¤° कारà¥à¤¯ हूक',
+'version-hook-name' => 'हूक नाम',
+'version-hook-subscribedby' => 'ने सदसà¥à¤¯à¤¤à¥à¤µ लिया',
+'version-version' => '(अवतरण $1)',
+'version-license' => 'अनà¥à¤œà¥à¤žà¤¾à¤ªà¤¤à¥à¤°',
+'version-software' => 'इनà¥à¤¸à¥à¤Ÿà¥‰à¤² की हà¥à¤ˆ पà¥à¤°à¤£à¤¾à¤²à¥€',
+'version-software-product' => 'पà¥à¤°à¥‹à¤¡à¤•à¥à¤Ÿ',
+'version-software-version' => 'अवतरण',
# Special:FilePath
'filepath' => 'सञà¥à¤šà¤¿à¤•à¤¾ पथ',
@@ -3234,9 +3231,7 @@ $1',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'फ़ाईल दà¥à¤µà¤¿à¤°à¤¾à¤µà¥ƒà¤¤à¥à¤¤à¤¿ खोजें',
-'fileduplicatesearch-summary' => 'हैश वैलà¥à¤¯à¥‚ के अनà¥à¤¸à¤¾à¤° फ़ाईल की दà¥à¤µà¤¿à¤°à¤¾à¤µà¥ƒà¤¤à¥à¤¤à¤¿ खोजें।
-
-फ़ाईलनाम "{{ns:file}}:" उपपद के बिना लिखें।',
+'fileduplicatesearch-summary' => 'हैश वैलà¥à¤¯à¥‚ के अनà¥à¤¸à¤¾à¤° फ़ाईल की दà¥à¤µà¤¿à¤°à¤¾à¤µà¥ƒà¤¤à¥à¤¤à¤¿ खोजें।',
'fileduplicatesearch-legend' => 'दà¥à¤µà¤¿à¤°à¤¾à¤µà¥ƒà¤¤à¥à¤¤à¤¿ के लिये खोजें',
'fileduplicatesearch-filename' => 'फ़ाईलनाम:',
'fileduplicatesearch-submit' => 'खोज',
diff --git a/languages/messages/MessagesHif_latn.php b/languages/messages/MessagesHif_latn.php
index a913304f..5cb66f03 100644
--- a/languages/messages/MessagesHif_latn.php
+++ b/languages/messages/MessagesHif_latn.php
@@ -45,8 +45,8 @@ $messages = array(
'tog-shownumberswatching' => 'Ketna sadasya dekhe hai ke number dekhao',
'tog-oldsig' => 'Abhi ke signature:',
'tog-fancysig' => 'Signature ke wikitext ke rakam dekho (binaa automatic jorr se)',
-'tog-externaleditor' => 'Apne se bahaari editor ke kaam me lao (khaali chalaak logan khatir, computer me special settings ke jaruri hai. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
-'tog-externaldiff' => ' Apne se bahaari editor ke kaam me lao (khaali chalaak logan khatir, computer me special settings ke jaruri hai. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaleditor' => 'Apne se bahaari editor ke kaam me lao (khaali chalaak logan khatir, computer me special settings ke jaruri hai. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaldiff' => ' Apne se bahaari editor ke kaam me lao (khaali chalaak logan khatir, computer me special settings ke jaruri hai. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
'tog-showjumplinks' => '"jump to" accessibility jorr ke laabu karo',
'tog-uselivepreview' => 'Jinda jhalak ke kaam me lao (JavaScript) (Experimental)',
'tog-forceeditsummary' => 'Ek khali badlao waala summary ke likhe ke time hamse puchho',
@@ -142,14 +142,7 @@ $messages = array(
'listingcontinuesabbrev' => 'aur',
'index-category' => 'Indexed panna',
'noindex-category' => 'Bina index karaa gais panna',
-
-'mainpagetext' => "'''MediaWiki ke safalta se install kar dewa gais hai.'''",
-'mainpagedocfooter' => "Wiki software ke use kare ke aur jaankari ke khatir [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] ke dekho.
-
-== Getting started ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+'broken-file-category' => 'Panna jisme tuuta file ke jorr hae',
'about' => 'Baare me',
'article' => 'Content waala panna',
@@ -201,10 +194,10 @@ $messages = array(
'history' => 'Panna ke itihaas',
'history_short' => 'Itihaas',
'updatedmarker' => 'hamaar pahile waala visit ke baad badla gais hai',
-'info_short' => 'Jankari',
'printableversion' => 'Chhape ke khaatir',
'permalink' => 'Pakka jorr',
'print' => 'Print karo',
+'view' => 'Dekho',
'edit' => 'Badlo',
'create' => 'Banao',
'editthispage' => 'Ii panna ke badlo',
@@ -212,6 +205,7 @@ $messages = array(
'delete' => 'Mitao',
'deletethispage' => 'Ii panna ke mitao',
'undelete_short' => '{{PLURAL:$1|ek badlao|$1 badlao}} ke pahile jaise karo',
+'viewdeleted_short' => 'Dekho {{PLURAL:$1|ek mitawal badlao|$1 mitawal badlao}}',
'protect' => 'Bachao',
'protect_change' => 'badlo',
'protectthispage' => 'Ii panna ke bacaho',
@@ -295,6 +289,8 @@ $1',
'toc' => 'vishay suchi',
'showtoc' => 'dekhao',
'hidetoc' => 'chupao',
+'collapsible-collapse' => 'Chhota karo',
+'collapsible-expand' => 'Barraa karo',
'thisisdeleted' => 'Dekho ki $1 ke pahile jaise karo?',
'viewdeleted' => '$1 ke dekho?',
'restorelink' => '{{PLURAL:$1|ek mitawal badlao|$1 mitawal badlao}}',
@@ -306,6 +302,8 @@ $1',
'page-rss-feed' => '"$1" RSS Feed',
'page-atom-feed' => '"$1" Atom Feed',
'red-link-title' => '$1 (panna abhi likha nai gais hai)',
+'sort-descending' => 'Barraa se chhota karo',
+'sort-ascending' => 'Chhota se barraa karo',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Panna',
@@ -390,12 +388,13 @@ Kuch deri be baad fir se kosis karna.',
'protectedinterface' => 'Ii panna software ke interface text dewe hai, aur iske barbaadi se roke ke khatir band kar dewa gais hai.',
'editinginterface' => "'''Chetawani:''' Aap ek panna ke badaltaa hai jon ki software ke interface text dewe hae.
Ii panna me badlao ke asar duusra sadasya ke interface ke bhi hoi.
-Translation khatir [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], the MediaWiki localisation project, ke kaam me lao.",
+Translation khatir [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], the MediaWiki localisation project, ke kaam me lao.",
'sqlhidden' => '(SQL query lukawal hai)',
'cascadeprotected' => 'Ii panna ke badlao se bachawa gais hai, kahe ki iske {{PLURAL:$1|panna, jon ki|panna, jon ki}} surakchhit hae "cascading" option turned on ke saathe me rakkhaa gais hai:
$2',
'namespaceprotected' => "Aap ke paas '''$1''' namespace me panna ke badle ke adhikar nai hai.",
-'customcssjsprotected' => 'Aap ke paas ii panna ke badle ke adkikar nai hai, kahe ki isme duusra sadasya ke personal settings hai.',
+'customcssprotected' => 'Aap ke ii CSS panna ke badle ke ijaajat nai hae, kaahe ki isme duusra sadasya ke personal settings hae.',
+'customjsprotected' => 'Aap ke ii JavaScript panna ke badle ke ijaajat nai hae, kaahe ki isme duusra sadasya ke personal settings hae.',
'ns-specialprotected' => 'Khaas panna ke badla nai jae sake hai.',
'titleprotected' => "Ii title ke banae se [[User:$1|$1]] rokis hai.
Iske kaaran hai ''$2''.",
@@ -433,6 +432,7 @@ Aapan [[Special:Preferences|{{SITENAME}} pasand]] ke badle nai bhulna.',
'createaccount' => 'Nawaa account banao',
'gotaccount' => "Aap ke pas pahile se account hai ki nai? '''$1'''.",
'gotaccountlink' => 'Log in',
+'userlogin-resetlink' => 'Ka aap aapan login kare waala jaankari ke bhulae gaya hae?',
'createaccountmail' => 'e-mail se',
'createaccountreason' => 'Kaaran:',
'badretype' => 'Jon duuno password aap likha hai uu ek rakam nai hae.',
@@ -447,13 +447,15 @@ Cookies ke enable kar ke, aapan nawaa username aur password se login karo.',
'nocookieslogin' => '{{SITENAME}} me sadasya ke login khatir cookies hae.
Aap cookies ke disabled karaa hae.
Cookies ke enable kar ke fir se kosis karo.',
+'nocookiesfornew' => 'Sadasya ke account ke nai banawa gais hae, kaahe ki source ke confirm nai karaa jaae sakis hae.
+Cookies ke enable kar ke, ii panna ke fir se load karo aur fir se kosis karo.',
'noname' => 'Aap achchha user name ke nai specify karaa hai.',
'loginsuccesstitle' => 'Login safal bhais',
'loginsuccess' => "'''Aap \"\$1\" ke naam pe {{SITENAME}} me logged in hai.'''",
'nosuchuser' => '"$1" naam ke koi sadasya nai hai.
Sadasya ke naam case sensitive hai.
Aapan spelling check karo nai to [[Special:UserLogin/signup|nawaa account banao]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" naam ke koi sadasya nai hai.
+'nosuchusershort' => '"$1" naam ke koi sadasya nai hai.
Aapan spelling check karo.',
'nouserspecified' => 'Aap ke aapan username de ke parri.',
'login-userblocked' => 'Ii sadasya ke rok dewa gais hae. Login kare ke ijajat nai hae.',
@@ -497,13 +499,14 @@ Agar ii account galti se banaa hai tab ii sandes ke ignore kar do.',
'usernamehasherror' => 'Sadasya ke naam me hash akchhar ke nai kaam me lawa jaae sake hae',
'login-throttled' => 'Aap bahut jaada dafe ii account ke password ke enter kare ke kosis karaa hai.
Thora deri baad fir se kosis karna.',
+'login-abort-generic' => 'Aap ke login nai chalaa - Aborted',
'loginlanguagelabel' => 'Bhasa: $1',
'suspicious-userlogout' => 'Aap ke log out kare ke maang ke na kar dewa gais hae kaahe ki ii janaawe hae ki ii maang ke ek tuuta browser nai to caching proxy bhejis hae.',
# E-mail sending
'php-mail-error-unknown' => 'PHP ke mail() function me koi anjaan kharaabi hae',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Password ke badlo',
'resetpass_announce' => 'Aap ek temporary e-mailed code se login bhaya hai
Login khatam kare khatir, aap ke nawaa password set kare ke parri hian:',
@@ -522,6 +525,20 @@ Login khatam kare khatir, aap ke nawaa password set kare ke parri hian:',
Sait aap password ke safalta se badal sia hoga nai to nawaa temporary password ke maang karaa hoga.',
'resetpass-temp-password' => 'Kachcha password:',
+# Special:PasswordReset
+'passwordreset' => 'Password ke badlo',
+'passwordreset-text' => 'Aapan account ke baare me jaankari ke receive kare ke khatir ii fom ke bharo.',
+'passwordreset-legend' => 'Password ke badlo',
+'passwordreset-disabled' => 'II wiki me password ke badle ke ijaajat nai hae.',
+'passwordreset-pretext' => '{{PLURAL:$1||Niche ke ek data ke likho}}',
+'passwordreset-username' => 'Sadasya ke naam:',
+'passwordreset-domain' => 'Domain:',
+'passwordreset-email' => 'E-mail ke address',
+'passwordreset-emailtitle' => '{{SITENAME}} me account ke jaankari',
+'passwordreset-emailelement' => 'Sadasya ke naam: $1
+Kuchh din ke khatir password: $2',
+'passwordreset-emailsent' => 'Aap ke yaad karae ke khatir ek e-mail ke bhej dewa gais hae.',
+
# Edit page toolbar
'bold_sample' => 'Motaa text',
'bold_tip' => 'Motaa text',
@@ -533,8 +550,6 @@ Sait aap password ke safalta se badal sia hoga nai to nawaa temporary password k
'extlink_tip' => 'Bahari jorr (yaad rakhna http:// prefix)',
'headline_sample' => 'Khaas samaachar ke akchhar',
'headline_tip' => 'Duusra level ke headline',
-'math_sample' => 'Hian pe formula insert karo',
-'math_tip' => 'Mathematiical niyam (LaTeX)',
'nowiki_sample' => 'Non-formatted text ke hian par insert karo',
'nowiki_tip' => 'Wiki bhasa ke anusaar badlao nahi karo',
'image_tip' => 'Jamawa gais suchi',
@@ -624,7 +639,7 @@ nai to [{{fullurl:{{FULLPAGENAME}}|action=edit}} ii panna ke badlo]</span>.',
'noarticletext-nopermission' => 'Abhi ii panna pe koi chij likha nai hae.
Aap sakta hae [[Special:Search/{{PAGENAME}}|ii panna ke title ke khoje]] duusra panna me,
nai to <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs]</span>.',
-'userpage-userdoesnotexist' => 'User account "$1" abi registered nai hai.
+'userpage-userdoesnotexist' => 'User account "<nowiki>$1</nowiki>" abi registered nai hai.
Check karo ki Ii panna ke aap banae/badle mangta hai.',
'userpage-userdoesnotexist-view' => 'User account "$1" abhi register nai karaa gais hae',
'blocked-notice-logextract' => 'Ii sadasya ke abhi rok dewa gais hae.
@@ -662,6 +677,7 @@ Agar ii fir bhi kaam nai kare, tab [[Special:UserLogout|logging out]] aur loggin
'token_suffix_mismatch' => "''' Aap ke badlao ke reject kar dewa gais hai kahe ki aap ke client punctuation charcters ke token edit me mangle kar diis hai.
Ii badlao ke reject kar dewa gais hai to prevent corruption of the page text.
Ii kabhi kabhi hoe hai jab aap ek buggy web-based anonymous proxy service ke use karta hai.'''",
+'edit_form_incomplete' => 'Edit form ke kuchh hissa server ke lage nai pahunche paais hae; fir se check karo ki aap ke badlao form me hae, aur fir se form ke bhejo.',
'editing' => '$1 badlawa jae hai',
'editingsection' => 'Sampadan $1 (bhaag)',
'editingcomment' => '$1 ke badla jae hai (nawaa section)',
@@ -1010,12 +1026,13 @@ Aap tab tak Google se khoje sakta hai.
Yaad rakhna ki uu log ke {{SITENAME}} ke index saait purana hoi.',
# Quickbar
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'Koi nai',
-'qbsettings-fixedleft' => 'Left me fixed hai',
-'qbsettings-fixedright' => 'Right me fixed hai',
-'qbsettings-floatingleft' => 'Baaen or baho',
-'qbsettings-floatingright' => 'Daaen or baho',
+'qbsettings' => 'Quickbar',
+'qbsettings-none' => 'Koi nai',
+'qbsettings-fixedleft' => 'Left me fixed hai',
+'qbsettings-fixedright' => 'Right me fixed hai',
+'qbsettings-floatingleft' => 'Baaen or baho',
+'qbsettings-floatingright' => 'Daaen or baho',
+'qbsettings-directionality' => 'Banae dewa gais hae, lekin ii aap ke bhasa ke script directionality ke uppar nibhar hae',
# Preferences page
'preferences' => 'Pasand',
@@ -1026,9 +1043,10 @@ Yaad rakhna ki uu log ke {{SITENAME}} ke index saait purana hoi.',
'changepassword' => 'Pasword ke badlo',
'prefs-skin' => 'Skin',
'skin-preview' => 'Jhalak',
-'prefs-math' => 'Math',
'datedefault' => 'Koi pasand nai',
+'prefs-beta' => 'Nawaa features',
'prefs-datetime' => 'Tarik aur time',
+'prefs-labs' => 'Try kare waala features',
'prefs-personal' => 'Sadasya ke profile',
'prefs-rc' => 'Nawaa badlao',
'prefs-watchlist' => 'Dhyan suchi',
@@ -1050,8 +1068,6 @@ Yaad rakhna ki uu log ke {{SITENAME}} ke index saait purana hoi.',
'columns' => 'Column:',
'searchresultshead' => 'Khojo',
'resultsperpage' => 'Panna ke ketna dafe dekha gais hai:',
-'contextlines' => 'Ek hit me ketnaa line hae:',
-'contextchars' => 'Ek line me ketnaa context hae:',
'stub-threshold' => 'Threshold ke khatir <a href="#" class="stub">stub link</a> formatting (bytes):',
'stub-threshold-disabled' => 'Band kar dewa gais hae',
'recentchangesdays' => 'Nawaa badlao me ketna roj dekhawa jaae:',
@@ -1064,7 +1080,7 @@ Hian pe ek, apne se banaa sabd hae, jiske aap kaam me laae saktaa hae: $1',
'savedprefs' => 'Aap ke pasand ke save kar lewa gais hai.',
'timezonelegend' => 'Time ke zone:',
'localtime' => 'Sthaniye samay:',
-'timezoneuseserverdefault' => 'Server default ke use karo',
+'timezoneuseserverdefault' => 'Wiki default ke kaam me laao ($1)',
'timezoneuseoffset' => 'Aur koi (offset ke specify karo)',
'timezoneoffset' => 'Offset¹:',
'servertime' => 'Server ke time:',
@@ -1112,8 +1128,8 @@ Iske $1 {{PLURAL:$1|character|characters}} se kamti rahe ke chaahi.',
'prefs-help-gender' => 'Optional: used for gender-correct addressing by the software. This information will be public.',
'email' => 'E-mail',
'prefs-help-realname' => 'Asli naam ke jaruri nai hai lekin agar jo aap aapan naam diya hai to iske aap ke kaam ke pahachane khatir kaam me lawa jai.',
-'prefs-help-email' => 'E-mail address ke jaruri nai hai, lekin isse nawaa password aap ke lage bheja jaae skae hai agar aap aapan password bhul gaya tab.
-Aap duusra log ke aap se aapan user_talk panna se aap ke contact kar le de sakta hai agar aap aapan aslii naam nai batae mangtaa hai tab.',
+'prefs-help-email' => 'E-mail address ke jaruri nai hai, lekin isse nawaa password aap ke lage bheja jaae sake hai agar aap aapan password bhul gaya tab.',
+'prefs-help-email-others' => 'Aap aapan user, nai to baat waala panna, pe se aur log ke aap se baat kare ke ijaajat de sakta hae, bina aapan identitiy de ke.',
'prefs-help-email-required' => 'E-mail address ke jaruri hai.',
'prefs-info' => 'Basic jaankari',
'prefs-i18n' => 'Sab des ke khatir',
@@ -1238,15 +1254,15 @@ Aap duusra log ke aap se aapan user_talk panna se aap ke contact kar le de sakta
'right-userrights' => 'Sadasya ke adhikar ke badlo',
'right-userrights-interwiki' => 'Duusra wiki me sadasya ke adhikar ke badlo',
'right-siteadmin' => 'Database ke band karo aur kholo',
-'right-reset-passwords' => 'Duusra sadasya ke password ke badlo',
'right-override-export-depth' => 'Panna aur jurra panna, 5 ke gahirrai talak, ke export karo',
'right-sendemail' => 'Duusra sadasya ke lage e-mail bhejo',
# 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',
-'rightsnone' => '(koi nai hai)',
+'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',
+'rightsnone' => '(koi nai hai)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'ii panna ke parrho',
@@ -1368,13 +1384,13 @@ Visual overview ke khatir [[Special:NewFiles|nawaa file ke gallery]] ke dekho.',
'illegalfilename' => 'Filename "$1" me uu akchhar hai jiske panna ke title me allowed nai hai.
Maharbaani kar ke file ke naam ke badal ke fir se upload kare ke kosis karo.',
'badfilename' => 'File ke naam badak ke "$1" kar dewa gais hai.',
-'filetype-mime-mismatch' => 'File ke extension, jon rakam ke MIME hae, se nai mile hae.',
+'filetype-mime-mismatch' => 'File ke extension ".$1", jon rakam ke MIME hae, se nai mile hae ($2).',
'filetype-badmime' => 'MIME rakam "$1" ke upload kare ke ijajat nai hai.',
'filetype-bad-ie-mime' => 'Ii file ke upload nai kare sakta hai kahe ki Internet Explorer iske "$1" ke rakam dekhi, jon ki allowed nai hai aur khatarnaat rakam ke file jaana jaae hai.',
'filetype-unwanted-type' => "'''\".\$1\"''' rakam ke file ke hian nai maaga jaae hai.
Maange waala {{PLURAL:\$3|file ke rakam hai|file ke rakam hai}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' ke rakam ke file hian pe allowed nai hai.
-Allowed {{PLURAL:\$3|rakam ke file hai|rakam ke fle hai}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\'{{PLURAL:$4| ke rakam ke file hian pe allowed nai hai.}}
+Allowed {{PLURAL:$3|rakam ke file hai|rakam ke fle hai}} $2.',
'filetype-missing' => 'File ke koi extension nai hai (jaise ki ".jpg").',
'empty-file' => 'Aap ke bheja gais panna khaali hae.',
'file-too-large' => 'Aap ke bheja gais panna bahut barraa hae.',
@@ -1393,6 +1409,7 @@ ii file hai $2',
'emptyfile' => 'Jon file aap upload karaa rahaa uu khaali rahaa.
Ii saait file ke naam likhe me typing mistake ke kaaran hoi.
Meharbaani kar ke ii dekho ki aap such me ii file upload kare mangtaa hai ki nai.',
+'windows-nonascii-filename' => 'Ii wiki me password jisme special characters hae, ke kaam me nai lawa jaae sake hae.',
'fileexists' => "Ii naam ke file abhi hai, meharbani kar ke check karo '''<tt>[[:$1]]</tt>''' agar jo aap sure nai hai ki aap iske badle mangta hai.
[[$1|thumb]]",
'filepageexists' => "Ii file ke description ke '''<tt>[[:$1]]</tt>''' me banae dewa gais rahaa, lekin ii naam ke koi file abhi nai hai.
@@ -1437,9 +1454,6 @@ Agar jo aap fir bhi aapan file upload kare manta hai tab pichhe jaae ke nawaa na
'watchthisupload' => 'Ii panna pe dhyan rakhho',
'filewasdeleted' => 'Ii naam ke file ke pahile upload kar ke baad me delete karaa gais hai.
Aap ke chaahi ki aap $1 check kar lo fir se upload kare se pahile.',
-'upload-wasdeleted' => "'''Chetauni: Aap uu file ke upload karta hai jiske pahile delete karaa gais hai.'''
-Aap ke ii soche ke chaahi ki ii file ke upload karna appropriate hai ki nai.
-Aap ke subidha khatir deletion log hian pe hai:",
'filename-bad-prefix' => "Jon file aap upload kartaa hai uske naam '''\"\$1\"''' se suruu hoe hai, jon ki non-descriptive naam hai jiske jaada kar ke digital camera automatically assign kare hai.
Meharbaani kar ke aur jaada descriptive filename chose karo.",
'upload-success-subj' => 'Upload safal bhais',
@@ -1464,6 +1478,16 @@ Agar jo problem fir nai khatam hoe tab [[Special:ListUsers/sysop|administrator]]
'upload-unknown-size' => 'Nai pataa ki ketnaa barraa hae',
'upload-http-error' => 'Ek HTTP galti hoe gais hae: $1',
+# Special:UploadStash
+'uploadstash' => 'Gupt file ke upload karo',
+'uploadstash-summary' => 'Ii panna se uu file pe jaawa jaae sake hae jiske upload karaa gais hae (nai to upload karaa jaawe hae) lekin abhi talak wiki me publish nai karaa gais hae.
+Ii sab panna khaali uu sadasya ke dekhae hae jon ki iske uplaod karis hae.',
+'uploadstash-clear' => 'Gupt file ke hatao',
+'uploadstash-nofiles' => 'Aap ke lage koi gupt file nai hae.',
+'uploadstash-badtoken' => 'Aap uu chij nai kare saktaa hae, saait ii kaaran se ki aap ke ijaajat khalaas hoe gais hae. Fir se kosis karo.',
+'uploadstash-errclear' => 'File ke hatawa nai jaae sakaa hae.',
+'uploadstash-refresh' => 'File ke suchi ke fir se dekhao',
+
# img_auth script messages
'img-auth-accessdenied' => 'ijajat nai hae',
'img-auth-nopathinfo' => 'PATH_INFO nai hae
@@ -1546,7 +1570,6 @@ Niche ke suchi dekhae hai {{PLURAL:$1|pahila panna ke jorr|pahila $1 panna ke jo
Ek [[Special:WhatLinksHere/$2|Puura suchi]] available hai.',
'nolinkstoimage' => 'Ii file se koi panna nai jurre hai.',
'morelinkstoimage' => 'Dekho [[Special:WhatLinksHere/$1|more links]] ii file se.',
-'redirectstofile' => 'Niche waala file ii file {{PLURAL:$1|file redirects|$1 files redirect}} se redirect hoe hai:',
'duplicatesoffile' => 'Niche ke suchi waala {{PLURAL:$1|file ke dui copy hai|$1 files ke dui copy hai}} ii file ke ([[Special:FileDuplicateSearch/$2|more details]]):',
'sharedupload' => 'Ii file $1 se aais hai aur duusra project me bhi kaam lawa jaae sake hai.',
'sharedupload-desc-there' => 'Ii file $1 se aais hai aur duusra projects me bhi kaam me lawa jaae sake hai.
@@ -1842,6 +1865,9 @@ Jon e-mail address aap [[Special:Preferences|your user preferences]] me enter ka
'noemailtext' => 'Ii sadasya thiik e-mail address nai diis hai.',
'nowikiemailtitle' => 'Koi e-mail ke ijajat nai hai',
'nowikiemailtext' => 'Ii sadasya e-mail nai le ke decide karis hai.',
+'emailtarget' => 'Mie waala jan ke username ke enter karo',
+'emailusername' => 'Sadasya ke naam:',
+'emailusernamesubmit' => 'Bhejo',
'email-legend' => 'Duusra {{SITENAME}} ke sadasya ke lage ek e-mail bhejo',
'emailfrom' => 'Iske lage se:',
'emailto' => 'Iske lage:',
@@ -1866,10 +1892,10 @@ Jon e-mail address aap [[Special:Preferences|your user preferences]] me enter ka
'watchlistanontext' => 'Aapan dhyan suchi me ke dekhe nai to badle ke khatir meharbani kar ke $1 karo.',
'watchnologin' => 'Logged in nai hai',
'watchnologintext' => 'Aapan dhyan suchi ke badle ke khatir aap ke [[Special:UserLogin|logged in]] rahe ke chaahi.',
-'addedwatch' => 'Dhyan suchi me jorro',
+'addwatch' => 'Dhyan suchi me jorro',
'addedwatchtext' => "Panna \"[[:\$1]]\" ke aap ke [[Special:Watchlist|watchlist]] me jorr dewa gais hae.
Ii panna ke aage ke badlao aur usse jurra baat waala panna ki suchi hian pe hae, aur ii panna ke '''mota akchhar''' me dekhawa jaai [[Special:RecentChanges|abhi haali ke badlao ke suchi]] me jisse ki aap iske sahaj se dekhe sakta hae.",
-'removedwatch' => 'Dhyan suchi me se hatao',
+'removewatch' => 'Dhyan suchi me se hatao',
'removedwatchtext' => 'Panna "[[:$1]]" ke aap ke [[Special:Watchlist|aap ke dhyan suchi]] se hatae dewa gais hai.',
'watch' => 'Dekho',
'watchthispage' => 'Ii panna par dhyan rakho',
@@ -1918,18 +1944,23 @@ wiki: $PAGEEDITOR_WIKI
Aur koi notifications nai rahii, kahe ki koi aur badlao hoe sake hai, jab talak aap ii panna ke visit nai karta hai.
Aap aapan dhyan suchi me sab dhyan me rakha gais panna pe notification flags ke reset kare sakta hai.
- Aap ke dayalu {{SITENAME}} notification system
+
+Aap ke dayalu {{SITENAME}} notification system
--
+Aapan Email notofication setting ke badle ke khatir, jaao
+{{canonicalurl:{{#special:Preferences}}}}
+
Aapan dhyan ke settings ke badle ke khatir, jaao
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
Aapan dhyan suchi se panna ke mitae ke khatir, jaao
$UNWATCHURL
Aapan bichar de ke khatir aur aage ke sahaeta:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Pana ke delete karo',
@@ -1945,7 +1976,7 @@ Aapan bichar de ke khatir aur aage ke sahaeta:
Meharbani kar ke iske confirm karo, ki aap iske consequences ke samajhta hai, aur aap iske [[{{MediaWiki:Policy-url}}|the policy]] ke policy ke niche delete karta hai.',
'actioncomplete' => 'Action puura hoe gais hai',
'actionfailed' => 'Action fail hoe gais',
-'deletedtext' => '"<nowiki>$1</nowiki>" ke delete kar dewa gais hai. Abhi jaldi ke deletions ke record dekhe khatir $2 ke dekho.',
+'deletedtext' => '"$1" ke delete kar dewa gais hai. Abhi jaldi ke deletions ke record dekhe khatir $2 ke dekho.',
'deletedarticle' => '"[[$1]]" ke mitae dewa gais hae',
'suppressedarticle' => 'suppressed "[[$1]]"',
'dellogpage' => 'Mitae ke suchi',
@@ -2006,7 +2037,7 @@ Abhi ke laabu panna surakchha ke dekho [[Special:ProtectedPages|protected pages
'protect_expiry_old' => 'Khalas hoe waala time past me hai.',
'protect-unchain-permissions' => 'Aur jaada bachae waala option ke kholo',
'protect-text' => "Aap ii panna ke protection level ke dekhe aur badle sakta hai
-'''<nowiki>$1</nowiki>'''.",
+'''$1'''.",
'protect-locked-blocked' => "Aap blocked rahe pe protection level ke nai badle sakta hai.
Panna '''$1''' ke abhi ke settings hai:",
'protect-locked-dblock' => "Active database lock ke kaaran protection level ke bala nai jaawe sake hai.
@@ -2062,8 +2093,8 @@ Aap ii panna ke ijaajat level badle sakta hai, lekin ii cascading protection nai
'undeletepagetext' => 'Niche dekhawa gais {{PLURAL:$1|panna ke mitae dewa gais hai lekin|$1 panna ke mitae dewa gais hai lekin}} abhi archive me hai aur iske pahile jaise karaa jaawe sake hai.
Archive ke time time se safaa karaa jaawe hai.',
'undelete-fieldset-title' => 'Badlao ke pahile jaise karo',
-'undeleteextrahelp' => "Panna ke itihaas ke pahile jaise kare ke khatir sab checkboxes me kuch nai karna aur '''''Restore''''' ke click karo.
-Chuna gais panna ke pahile jaise kare ke khatir, uu box ke check karo jon badlao ke aap pahile jaise kare mangta hai aur '''''Restore''''' ke click karo.
+'undeleteextrahelp' => "Panna ke itihaas ke pahile jaise kare ke khatir sab checkboxes me kuch nai karna aur ''''{{int:undeletebtn}}''''' ke click karo.
+Chuna gais panna ke pahile jaise kare ke khatir, uu box ke check karo jon badlao ke aap pahile jaise kare mangta hai aur ''''{{int:undeletebtn}}''''' ke click karo.
'''''Reset''''' click kare se comment field aur sab checkboxes clear hoe jaai.",
'undeleterevisions' => '$1 {{PLURAL:$1|badlao|badlao}} ke archive kar dewa gais hai',
'undeletehistory' => 'Agar aap panna ke pahile jaise karaa tab sab badlao itihass me restore hoe jaai.
@@ -2162,13 +2193,14 @@ Sab se nawaa roke ke suchi ke, aap ke khatir, niche dewa gais hae.',
'whatlinkshere-filters' => 'Filters',
# Block/unblock
+'block' => 'Sadasya ke roko',
+'unblock' => 'Sadasya ke rukawat k khalaas karo',
'blockip' => 'Sadasya ke roko',
'blockip-title' => 'Sadasya ke roko',
'blockip-legend' => 'Sadasya ke roko',
'blockiptext' => 'Niche ke form ke use kar ke koi khaas IP address nai to username ke write access ke roko.
Iske khaali vandalism ke roke ke khatir use kare ke chaahi [[{{MediaWiki:Policy-url}}|policy]] ke niche.
Niche ek khaas kaaran likho (jaise ki, citing particular pages that were vandalized).',
-'ipaddress' => 'IP Address:',
'ipadressorusername' => 'IP Address nai to username:',
'ipbexpiry' => 'Expiry:',
'ipbreason' => 'Kaaran:',
@@ -2181,7 +2213,6 @@ Niche ek khaas kaaran likho (jaise ki, citing particular pages that were vandali
** Duusre ke dhamki do
** Ek se jaada account ke khraab kaam me laao
** Sadasya ke naam thiik nai hae',
-'ipbanononly' => 'Khaali anonymous sadasya ke roko',
'ipbcreateaccount' => 'account banae se roko',
'ipbemailban' => 'Sadasya ke e-mail bheje se roko',
'ipbenableautoblock' => 'Apne se sadasya ke kaam me lawa gais last IP address ke roko, aur iske saathe aur koi IPs jisme se baad me badlao kare ke kosis karaa jaae ke bhi roko.',
@@ -2192,7 +2223,6 @@ Niche ek khaas kaaran likho (jaise ki, citing particular pages that were vandali
'ipbotherreason' => 'Duusra/aur kaaran:',
'ipbhidename' => 'Badlao aur suchi se username ke hatao',
'ipbwatchuser' => 'Ii sadasya ke user aur talk panna pe dhyan rakho',
-'ipballowusertalk' => 'Blocked rake par bhi ii sadasya ke aapan baat waala panna ke badle ke ijajat do',
'ipb-change-block' => 'Ii sadasya ke jiske ii settings hai ke fir se roko',
'badipaddress' => 'IP address kharaab hai',
'blockipsuccesssub' => 'Rukawat safal rahaa',
@@ -2210,14 +2240,12 @@ Ii rukawat pe fir se bichar kare ke khatir [[Special:IPBlockList|IP block list]]
'unblocked-id' => 'Roko $1 ke khalaas kar dewa gais hai',
'ipblocklist' => 'Roka gais sadasya',
'ipblocklist-legend' => 'Ek roka gais sadasya ke khojo',
-'ipblocklist-username' => 'Username nai to IP address:',
-'ipblocklist-sh-userblocks' => '$1 account rukawat',
-'ipblocklist-sh-tempblocks' => '$1 temporary rukawat',
-'ipblocklist-sh-addressblocks' => '$1 ek IP rukawat',
+'blocklist-userblocks' => 'Roka gais account ke lukao',
+'blocklist-expiry' => 'Khalaas hoe hae',
+'blocklist-reason' => 'Kaaran',
'ipblocklist-submit' => 'Khojo',
'ipblocklist-localblock' => 'Sthaniye rukawat',
'ipblocklist-otherblocks' => 'Duusra {{PLURAL:$1|block|blocks}}',
-'blocklistline' => '$1, $2 $3 ($4) ke rok diis hai',
'infiniteblock' => 'sab din ke khatir',
'expiringblock' => 'khalaas hoe hai $1 at $2',
'anononlyblock' => 'khaali bina naam ke',
@@ -2242,7 +2270,7 @@ Iske suchi ke niche dekhawa jaawe hae aap ke jankari ke khatir.',
'reblock-logentry' => '[[$1]] ke block settings with an expiry time of $2 $3 ke badal dewa gais hai.',
'blocklogtext' => 'Ii suchi sadasya ke rukawat aur rukawat ke reverse kare ke baare me hai.
Apne se rokaa gais IP adress ii suchi me nai hai.
-Abhi ke rukawat ke dekhe ke khatir meharbani kar ke [[Special:IPBlockList|IP block list]] ke dekho.',
+Abhi ke rukawat ke dekhe ke khatir meharbani kar ke [[Special:BlockList|IP block list]] ke dekho.',
'unblocklogentry' => '$1 ke rukawat ke reverse kar dewa gais hai',
'block-log-flags-anononly' => 'khaali bina naam ke sadasya',
'block-log-flags-nocreate' => 'nawaa account banae ke nai hai',
@@ -2256,8 +2284,7 @@ Abhi ke rukawat ke dekhe ke khatir meharbani kar ke [[Special:IPBlockList|IP blo
'ipb_expiry_temp' => 'Lukawa gais username ke rukawat ke permanent hoe ke chaahi.',
'ipb_hide_invalid' => 'Ii account ke dabae nai sakaa hai; saait bahut jaada badlao hoi.',
'ipb_already_blocked' => '"$1" ke pahile rok dewa gais hai',
-'ipb-needreblock' => '== Pahile se rok dewa gais hai ==
-$1 ke rok dewa gais hai.
+'ipb-needreblock' => '$1 ke rok dewa gais hai.
Ka aapp ii settings ke badle mangtaa hai?',
'ipb-otherblocks-header' => 'Duusra {{PLURAL:$1|block|blocks}}',
'ipb_cant_unblock' => 'Error: Roke waala ID $1 nai milaa.
@@ -2412,7 +2439,7 @@ Duusra case me aap ek link ke bhi use kare saktaa hai, jaise ki [[{{#Special:Exp
'allmessagesdefault' => 'Default text',
'allmessagescurrent' => 'Abhi ke text',
'allmessagestext' => 'Ii ek system sandes ke suchi hai jon ki MediaWiki namespace me pawa jaae sake hai.
-Agar aap generic MediaWiki localisation ke yogdaan de mangtaa hai tab meharbani kar ke [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] aur [http://translatewiki.net translatewiki.net] pe jao.',
+Agar aap generic MediaWiki localisation ke yogdaan de mangtaa hai tab meharbani kar ke [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] aur [//translatewiki.net translatewiki.net] pe jao.',
'allmessagesnotsupportedDB' => "Ii panna ke kaam me nai lawa jaae sake hai kahe ki '''\$wgUseDatabaseMessages''' ke band kar dewa gais hai.",
'allmessages-filter-legend' => 'Chaalo',
'allmessages-filter' => 'Customisation state se chhaano',
@@ -2555,9 +2582,7 @@ Ii summary me ek kaaran jorre ke ijajat de hai.',
'tooltip-summary' => 'Thora sabd me likho',
# Metadata
-'nodublincore' => 'Ii server ke khatir Dublin Core RDF metadata ke disable kar dewa gais hai',
-'nocreativecommons' => 'Ii server ke khatir Creative Commons RDF metadata ke disable kar dewa gais hai.',
-'notacceptable' => 'Wiki server uu rakam se data nai dewe sake hai jisse ki aap ke client parrhe sake.',
+'notacceptable' => 'Wiki server uu rakam se data nai dewe sake hai jisse ki aap ke client parrhe sake.',
# Attribution
'anonymous' => 'Anonymous {{PLURAL:$1|sadasya|sadasya}} {{SITENAME}} ke',
@@ -2581,32 +2606,7 @@ Ii saait ii kaaran se hoi ki panna ke ek jorr koi blacklisted external site se h
'spam_blanking' => 'Sab badlao jisme $1 se jorr hai, ke mitawa jaawe hai',
# Info page
-'infosubtitle' => 'Panna ke baare me jaankari',
-'numedits' => 'Badlao ke ginti (panna): $1',
-'numtalkedits' => 'Badlao ke ginti (salah waala panna): $1',
-'numwatchers' => 'Dekhe waala ke ginti: $1',
-'numauthors' => 'Likhe waala ke ginti (panna): $1',
-'numtalkauthors' => 'Likhe waala ke ginti (salah waala panna): $1',
-
-# Math options
-'mw_math_png' => 'PNG ke sab time render karo',
-'mw_math_simple' => 'HTML agar bahut sahaj hai, nai to PNG',
-'mw_math_html' => 'HTML agar hoe sake, nai to PNG',
-'mw_math_source' => 'TeX ke rakam chhorr do (text browsers ke khatir)',
-'mw_math_modern' => 'Modern browsers khatir thiik hai',
-'mw_math_mathml' => 'MathML hoe sake tab (experimental)',
-
-# Math errors
-'math_failure' => 'Parse nai kare sakaa',
-'math_unknown_error' => 'galti ke nai samajhta',
-'math_unknown_function' => 'nai samajhta ki ii kon chij khatir hai',
-'math_lexing_error' => 'lexing me galti',
-'math_syntax_error' => 'syntax me galti',
-'math_image_error' => 'PNG conversion fail hoe gais; latex, dvips aur gs ke correct installation ke check kar ke convert convert karo',
-'math_bad_tmpdir' => 'Math temporary directory nai banae sakta hai',
-'math_bad_output' => 'Math output directory me likhe nai to banae nai sakta hai',
-'math_notexvc' => 'Texvc executable nai hai;
-Configure kare khatir meharbani kar ke math/README ke dekho.',
+'pageinfo-subjectpage' => 'Panna',
# Patrolling
'markaspatrolleddiff' => 'Mark karo ke pahraa dewa jaawe hai',
@@ -2653,7 +2653,6 @@ Iske execute kare se aap ke system me garrbarr hoe sake hae.",
'file-nohires' => '<small>Aur achchha resolution nai hai.</small>',
'svg-long-desc' => 'SVG file, naam kare ke khatir $1 × $2 pixels, file size: $3',
'show-big-image' => 'Puura resolution',
-'show-big-image-thumb' => '<small>Ii preview ke size: $1 × $2 pixels</small>',
'file-info-gif-looped' => 'Ghuum ghumae ke wahii jagha pe aawe hae',
'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frames}}',
'file-info-png-looped' => 'ghum ghumae ke wahii jagha pe aae hae',
@@ -2683,14 +2682,20 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
'metadata-help' => 'Ii file me aur jaakari hai, sake hai ki digital camera nai to scanner se ii file ke banawa gais rahaa. Agar jo ii file ke original source se badal dewa gais hai tkorra kuch chij modified file se farak rahi.',
'metadata-expand' => 'Barrhaya gais jankari dekhao',
'metadata-collapse' => 'Aur details ke lukae do.',
-'metadata-fields' => 'Ii list me dewa gae jaankari file ke niche sab time dekhai. Bachaa jaankari chhupaa rahi
+'metadata-fields' => 'Ii suchi me dewa gae jaankari file ke niche sab time dekhai. Bachaa jaankari chhupaa rahi
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Chaurrai',
@@ -2705,13 +2710,11 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
'exif-ycbcrpositioning' => 'Y aur C ke jagha',
'exif-xresolution' => 'Baraabar ke resolution',
'exif-yresolution' => 'Kharraa resolution',
-'exif-resolutionunit' => 'X aur Y ke unit ke resolution',
'exif-stripoffsets' => 'Chapa ke aankrraa ke jagha',
'exif-rowsperstrip' => 'Ek strip me etna row hae',
'exif-stripbytecounts' => 'Ek compressed strip pe ketna byte',
'exif-jpeginterchangeformat' => 'JPEG SOI se ketna offset',
'exif-jpeginterchangeformatlength' => 'Ketna JPEG data, bytes me',
-'exif-transferfunction' => 'Duusre ke hawaale kare waala function',
'exif-whitepoint' => 'Ujjar point ke quality',
'exif-primarychromaticities' => 'Primary rang ke quality',
'exif-ycbcrcoefficients' => 'Rang space transformation matrix coefficients',
@@ -2730,7 +2733,6 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
'exif-compressedbitsperpixel' => 'Chapa ke compression mode',
'exif-pixelydimension' => 'Chaapa ke thiik chaurrai',
'exif-pixelxdimension' => 'Chaapa ke thiik uunchai',
-'exif-makernote' => 'Manufacturer se jaankari',
'exif-usercomment' => 'Sadasysa ke bichar',
'exif-relatedsoundfile' => 'Saathe waala awaaj waala file',
'exif-datetimeoriginal' => 'Data generation ke tarik aur time',
@@ -2744,7 +2746,6 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
'exif-exposureprogram' => 'Exposure Program',
'exif-spectralsensitivity' => 'Ketna achchhaa se ujaala ke pakrre sake hae',
'exif-isospeedratings' => 'ISO ke raftaar rating',
-'exif-oecf' => 'Optoelectronic conversion factor',
'exif-shutterspeedvalue' => 'APEX shutter ke raftaar',
'exif-aperturevalue' => 'APEX aperture',
'exif-brightnessvalue' => 'APEX chamak',
@@ -2802,15 +2803,13 @@ Wahii line pe aur koi jorr exception consider karaa jai i.e. jahaan pe panna sak
# External editor support
'edit-externally' => 'Ii file ke bahaari program me kaam me laae ke badlo',
-'edit-externally-help' => '(Aur jaankari khatir [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] ke dekho)',
+'edit-externally-help' => '(Aur jaankari khatir [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] ke dekho)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'sab',
-'imagelistall' => 'sab',
-'watchlistall2' => 'sab',
-'namespacesall' => 'sab',
-'monthsall' => 'sab',
-'limitall' => 'sab',
+'watchlistall2' => 'sab',
+'namespacesall' => 'sab',
+'monthsall' => 'sab',
+'limitall' => 'sab',
# E-mail address confirmation
'confirmemail' => 'E-mail address ke pakka karo',
diff --git a/languages/messages/MessagesHil.php b/languages/messages/MessagesHil.php
index 79050641..9d0bf49f 100644
--- a/languages/messages/MessagesHil.php
+++ b/languages/messages/MessagesHil.php
@@ -46,8 +46,8 @@ $messages = array(
'tog-shownumberswatching' => 'Ipakita ang numero sang mga nagalantaw nga manug-gamit',
'tog-oldsig' => 'Nagapabilin nga pirma:',
'tog-fancysig' => 'Tratoha ang pirma bilang wikitext (wala sang tabid nga dayon)',
-'tog-externaleditor' => 'Gamiton dayon ang pang-guha nga manug-ilis (para sa mga sagad lamang, nagakinahanglan sang espesyal nga pagkay-o sa imo computer. [http://www.mediawiki.org/wiki/Manual:External_editors Mas madamo pa nga impormasyon.])',
-'tog-externaldiff' => 'Gamiton dayon ang pang-guha nga diff (para sa mga sagad lamang, nagakinahanglan sang espesyal nga pagkay-o sa imo computer. [http://www.mediawiki.org/wiki/Manual:External_editors Mas madamo pa nga impormasyon.])',
+'tog-externaleditor' => 'Gamiton dayon ang pang-guha nga manug-ilis (para sa mga sagad lamang, nagakinahanglan sang espesyal nga pagkay-o sa imo computer. [//www.mediawiki.org/wiki/Manual:External_editors Mas madamo pa nga impormasyon.])',
+'tog-externaldiff' => 'Gamiton dayon ang pang-guha nga diff (para sa mga sagad lamang, nagakinahanglan sang espesyal nga pagkay-o sa imo computer. [//www.mediawiki.org/wiki/Manual:External_editors Mas madamo pa nga impormasyon.])',
'tog-showjumplinks' => 'Sugtan ang "maglumpat sa" nga mga tabid sang paalagyan',
'tog-uselivepreview' => 'Gamiton ang preview nga live (nagakinahanglan sang JavaScript) (experimentohanon)',
'tog-forceeditsummary' => 'Sugidi ako kon magasulod ako sa blanko nga kabilogan sang pag-ilis',
@@ -142,14 +142,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Naka-index nga mga panid',
'noindex-category' => 'Wala naka-index nga mga panid',
-
-'mainpagetext' => "'''Ang MediaWiki madinalag-on nga na-instala.'''",
-'mainpagedocfooter' => " Magkonsulta sa [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] para sa mga impormasyon sa paggamit sang wiki nga software.
-
-== Pag-umpisa ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista sang mga konpigorasyon sang pagkay-o]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Mga Masami Pamangkoton sa MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista sang mga ginapadal-an sang sulat kon may paguha-on nga MediaWiki]",
+'broken-file-category' => 'Mga panid nga may guba nga link sang hilera',
'about' => 'Nahanungod',
'article' => 'Panid sang unod',
@@ -201,10 +194,10 @@ $messages = array(
'history' => 'Pahina historya',
'history_short' => 'Saysay',
'updatedmarker' => 'ginbag-o halin sang akon pinaka-ulihe nga pagbisita',
-'info_short' => 'Impormasyon',
'printableversion' => 'Pang-imprinta nga bersyon',
'permalink' => 'Permanente nga tabid',
'print' => 'I-imprinta',
+'view' => 'Lantawon',
'edit' => 'Ilisan',
'create' => 'Himuon',
'editthispage' => 'Islan ini nga pahina',
@@ -212,6 +205,7 @@ $messages = array(
'delete' => 'Panason',
'deletethispage' => 'Panason ang ini nga panid',
'undelete_short' => 'Dulaon ang pagpanas sang {{PLURAL:$1|isa ka pag-ilis|$1 ka pag-ilis}}',
+'viewdeleted_short' => 'Lantawon ang {{PLURAL:$1|isa ka ginpanas nga pag-ilis|$1 ka ginpanas nga pag-ilis}}',
'protect' => 'Pangapinan',
'protect_change' => 'bag-ohon',
'protectthispage' => 'Pangapinan ang ini nga panid',
@@ -296,6 +290,8 @@ Lantawa ang [[Special:Version|panid sang mga bersiyon]].',
'toc' => 'Kontents',
'showtoc' => 'ipakita',
'hidetoc' => 'pagatagu-on',
+'collapsible-collapse' => 'Pagamayon',
+'collapsible-expand' => 'Palaparon',
'thisisdeleted' => 'Tan-awon o Ibalik ang sang una $1?',
'viewdeleted' => 'Tan-awon $1?',
'restorelink' => '{{PLURAL:$1|isa ka ginpanas nga pag-ilis|$1 ka ginpanas nga pag-ilis}}',
@@ -307,6 +303,8 @@ Lantawa ang [[Special:Version|panid sang mga bersiyon]].',
'page-rss-feed' => '"$1" RSS Feed',
'page-atom-feed' => '"$1" Atom Feed',
'red-link-title' => '$1 (wala pa ini nahimo nga pahina)',
+'sort-descending' => 'Himuson nga nagapanaog',
+'sort-ascending' => 'Himuson nga nagapasaka',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Pahina',
@@ -394,12 +392,13 @@ Palihog tilawan mo liwat pagkatapos sang malip-ot nga tinion.',
'protectedinterface' => 'Ang ini nga panid nagahatag sang mga teksto sang interface para sa software, kag ginapangapinan agod indi maabuso.',
'editinginterface' => "'''Pahibalo:''' Naga-ilis ka sang panid nga ginagamit sa paghatag sang mga teksto sang interface para sa software.
Ang mga pagbag-o sang sini nga panid maga-apekto sa hitsura sang interface sang panid sang manug-gamit sang iban.
-Para sa mga paglubad/pagbadbad, palihog kilalanon ang paggamit sang [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], ang proyekto sang MediaWiki para sa localisasyon.",
+Para sa mga paglubad/pagbadbad, palihog kilalanon ang paggamit sang [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], ang proyekto sang MediaWiki para sa localisasyon.",
'sqlhidden' => '(Nakatago ang pagpamangkot sang SQL)',
'cascadeprotected' => 'Ang ini nga panid ginpangapinan agod nga indi ma-ilisan, bangud nga ini nadal sa masunod nga {{PLURAL:$1|panid, nga|mga panid, nga}} ginapangapinan sang naga-"kaskad" nga pililian nga naga-andar:
$2',
'namespaceprotected' => "Wala ka ginapasugtan nga mag-ilis sang mga panid sa '''$1''' nga lugar-espasyo.",
-'customcssjsprotected' => 'Wala ka ginapasugtan nga mag-ilis sang sini nga panid, bagud nga may yara ini sang pagpilian sang isa pa gid nga manug-gamit.',
+'customcssprotected' => 'Wala ka ginapasugtan nga mag-ilis sang sini nga panid nga CSS, tungod nga may yara ini sang pagpilian sang isa pa gid nga manug-gamit.',
+'customjsprotected' => 'Wala ka ginapasugtan nga mag-ilis sang sini nga panid nga JavaScript, tungod nga may yara ini sang pagpilian sang isa pa gid nga manug-gamit.',
'ns-specialprotected' => 'Ang mga espesyal nga panid indi mahimo nga paga-ilisan.',
'titleprotected' => 'Ang ini nga titulo ginpangapinan batok sa pagbuhat ni [[User:$1|$1]].
Ang iya rason amo ang "\'\'$2\'\'".',
@@ -437,6 +436,7 @@ Indi pagkalimti ang pag-ilis sang imo mga [[Special:Preferences|{{SITENAME}} pag
'createaccount' => 'Maghimo Account',
'gotaccount' => 'May yara ka na sang akawnt? $1.',
'gotaccountlink' => 'Mag sulod',
+'userlogin-resetlink' => 'Nalipatan mo bala ang mga detalye sang imo pagsulod?',
'createaccountmail' => 'Paagi sa e-mail',
'createaccountreason' => 'Rason:',
'badretype' => 'Ang mga pasword nga imo gintum-ok wala naga-santo.',
@@ -451,13 +451,15 @@ Palihog bukas sa ila, dayon magsulod gamit ang imo bag-o nga gamit-pangalan kag
'nocookieslogin' => 'Ang {{SITENAME}} nagagamit sang kokes (cookies) para makasulod ang mga manug-gamit.
Ang imo kokes wala nabuksan.
Palihog bukas sa ila, dayon magsulod gamit ang imo bag-o nga gamit-pangalan kag pasword.',
+'nocookiesfornew' => 'Ang akawnt sang manug-gamit wala nabuhat, bangud nga wala namon mahibal-i ang iya ginhalinan.
+Palihog sigurado kon nakabukas ang imo kokes, dayon ipakarga liwat ang ini nga panid kag tilawan mo liwat.',
'noname' => 'Wala ka nagbutang sang tood-tood nga gamit-pangalan.',
'loginsuccesstitle' => 'Madinalag-on nga pagsulod',
'loginsuccess' => "'''Nakasulod ka na subong sa {{SITENAME}} bilang si \"\$1\".'''",
'nosuchuser' => 'Wala sang manug-gamit nga iya pangalan "$1".
Ang mga gamit-pangalan sensitibo sa kadakoon sang letra.
Siguradoha ang pagbaybay sang pumolongon, ukon [[Special:UserLogin/signup|magbuhat sang bag-o nga akawnt]].',
-'nosuchusershort' => 'Wala sang manug-gamit nga iya pangalan "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Wala sang manug-gamit nga iya pangalan "$1".
Siguradoha ang pagbaybay sang pumolongon.',
'nouserspecified' => 'Kinahanglan mo magbutang sa gamit-pangalan.',
'login-userblocked' => 'Ang ini nga manug-gamit ginapungga. Indi ka mahimo nga magsulod.',
@@ -508,13 +510,14 @@ Mahimo nga imo pabayaan ang ini nga mensahe, kon ang ini nga akawnt sala lang an
'usernamehasherror' => 'Ang gamit-pangalan indi mahimo nga may hash nga karakter',
'login-throttled' => 'May tuman ka na na kadamo nga pagtilaw sa pagsulod.
Palihog maghulat anay bag-o tilawan liwat.',
+'login-abort-generic' => 'Ang imo pagsulod indi madinalag-on - Gin-untat',
'loginlanguagelabel' => 'Hambalanon: $1',
'suspicious-userlogout' => 'Ang imo pagpangabay nga mag-guha ginpungga bangud nga ini mahimo nga ginpadala sang guba nga brawser ukon sang proksy nga nagapang-tago.',
# E-mail sending
'php-mail-error-unknown' => 'Wala nahibaluan nga sala sa kapuslanan nga sulat() sang PHP.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Ilisan ang pasword',
'resetpass_announce' => 'Nagsulod ka paagi sang temporary nga kod nga gin-email.
Agod nga makatapos ka sa pagsulod, kinahanglan mo magbutang sang bag-o nga pasword dire:',
@@ -533,6 +536,39 @@ Ginapasulod ka na...',
Mahimo nga madinalag-on mo nga nga gin-ilisan ang imo pasword ukon nagpangabay ka na sang bag-o nga temporaryo nga pasword.',
'resetpass-temp-password' => 'Temporaryo nga pasword:',
+# Special:PasswordReset
+'passwordreset' => 'Liwaton ang pasword',
+'passwordreset-text' => 'Taposon ang ini nga formas agod nga makabaton sang e-mail nga nagapahanumdom sang mga detalye sang imo akawnt.',
+'passwordreset-legend' => 'Liwaton ang pasword',
+'passwordreset-disabled' => 'Ang mga pagliwat sang pasword gin-untat sa sini nga wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Magbutang sang isa sang mga datos sa idalom}}',
+'passwordreset-username' => 'Ngalan sang Manog-gamit"',
+'passwordreset-domain' => 'Domeyn:',
+'passwordreset-email' => 'Adres sang e-mail:',
+'passwordreset-emailtitle' => 'Ang mga detalye sang akawnt sa {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'May tawo nga (mahimo ikaw, halin sa IP adres nga $1) nagpangabay sang pahanumdom sang mga detalye
+sang imo akawnt para sa {{SITENAME}} ($4). Ang masunod nga {{PLURAL:$3|akawnt|mga akawnt}} sang manuggamit
+may kabahin sa sini nga adres sang e-mail:
+
+$2
+
+{{PLURAL:$3|Ang ini nga temporaryo nga pasword|Ang mga ini nga temporaryo nga pasword}} indi na magamit sa {{PLURAL:$5|isa ka adlaw|$5 ka adlaw}}.
+Kinahanglan mo nga magsulod kag magpili sang bag-o nga pasword subong. Kon lain nga tawo ang nagbuhat sini
+nga pagpangabay, ukon nadumduman mo na ang imo pasword, kag indi mo na kinahanglan nga ini
+paga-ilisan, mahimo mo nga pabay-an ang ini nga pahanumdom kag magpadayon sa paggamit sang imo daan nga pasword.',
+'passwordreset-emailtext-user' => 'Ang manuggamit nga si $1 sa {{SITENAME}} nagpangabay sang pahanumdom sang mga detalye sang imo akawnt para sa {{SITENAME}}
+($4). Ang masunod nga {{PLURAL:$3|akawnt|mga akawnt}} sang manuggamit may kabahin sa sini nga adres sang e-mail:
+
+$2
+
+{{PLURAL:$3|Ang ini nga temporaryo nga pasword|Ang mga ini nga temporaryo nga pasword}} indi na magamit sa {{PLURAL:$5|isa ka adlaw|$5 ka adlaw}}.
+Kinahanglan mo nga magsulod kag magpili sang bag-o nga pasword subong. Kon lain nga tawo ang nagbuhat sini
+nga pagpangabay, ukon nadumduman mo na ang imo pasword, kag indi mo na kinahanglan nga ini
+paga-ilisan, mahimo mo nga pabay-an ang ini nga pahanumdom kag magpadayon sa paggamit sang imo daan nga pasword.',
+'passwordreset-emailelement' => 'Gamit-pangalan: $1
+Temporaryo nga pasword: $2',
+'passwordreset-emailsent' => 'May pahanumdom nga e-mail nga ginpadala.',
+
# Edit page toolbar
'bold_sample' => 'Dukot nga teksto',
'bold_tip' => 'Dukot nga teksto',
@@ -544,8 +580,6 @@ Mahimo nga madinalag-on mo nga nga gin-ilisan ang imo pasword ukon nagpangabay k
'extlink_tip' => 'Sa guha nga Tabid (tandaan http:// prefiks)',
'headline_sample' => 'Teksto sang pangunang-dinalang',
'headline_tip' => 'Lebel 2 pangunang-dinalan',
-'math_sample' => 'Ibutang ang pormula diri',
-'math_tip' => 'Math pormula (LaTeX)',
'nowiki_sample' => 'Ibutang ang di-sulundan nga teksto diri',
'nowiki_tip' => 'Pabay-an ang wiki sulundanon',
'image_tip' => 'Gintapik nga file',
@@ -634,7 +668,7 @@ o [{{fullurl:{{FULLPAGENAME}}|action=edit}} islan ini nga pahina]</span>.',
'noarticletext-nopermission' => 'Wala subong sang teksto ang ini nga panid.
Pwede ka [[Special:Search/{{PAGENAME}}|mangita para sa titulo sang ini nga panid]] sa iban man nga panid,
ukon <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mangita ka sang kaparehas nga logs]</span>.',
-'userpage-userdoesnotexist' => 'Ang akawnt sang manuggamit nga "$1" wala pa marehistro.
+'userpage-userdoesnotexist' => 'Ang akawnt sang manuggamit nga "<nowiki>$1</nowiki>" wala pa marehistro.
Palihog tsek kon luyag mo nga himuon/ilisan ang ini nga panid.',
'userpage-userdoesnotexist-view' => 'Ang akawnt sang manuggamit nga "$1" wala pa marehistro.',
'blocked-notice-logextract' => 'Ang ini nga manuggamit ginapunggan karon.
@@ -674,6 +708,7 @@ Kon indi man sa gihapon mag-gana, tilawi [[Special:UserLogout|mag-guha]] kag ma
'token_suffix_mismatch' => "'''Ang imo pag-ilis wala ginbaton tungod nga ang imo kleyente nag-guba sang mga letra sa token sang pag-ilis.'''
Ang pag-ilis wala ginbaton agod to nga malikawan ang kalainan sang mga teksto sa panid.
Ini nagakatabo kon kaisa kon nagagamit ka sang nakabase sa web nga serbisyo proxy nga madamo sing lusot.",
+'edit_form_incomplete' => "'''Ang iban nga bahin sang formas sa pag-ilis wala nakalab-ot sa serber; palihog verificar kon ang imo pag-ilis santo man sa gihapon kag tilawi liwat.'''",
'editing' => 'Gina-islan $1',
'editingsection' => 'Gina-Islan $1 (seksiyon)',
'editingcomment' => 'Gina-islan ang $1 (bag-o nga bahin)',
@@ -912,7 +947,9 @@ Palihog sekyar sang mga logs.',
'revdelete-offender' => 'Ang nagbuhat sang pagbag-o:',
# Suppression log
-'suppressionlog' => 'Log sang pagkakas',
+'suppressionlog' => 'Log sang pagkakas',
+'suppressionlogtext' => 'Sa idalom isa ka lista sang mga gindula kag pagpugong nga naga-dala sang mga unod nga gintago halin sa mga administrador.
+Lantawa ang [[Special:BlockList|lista sang mga ginpunggan nga IP]] para sa lista sang mga naga-eksister nga pagdula kag pagpugong.',
# History merging
'mergehistory' => 'Isugpon ang mga kasaysayan sang panid',
@@ -1024,12 +1061,13 @@ Mahimo ka nga magpangita gamit ang Google sa sini nga tion.
Tandai nga ang ila nga palasulundan sang mga unod sang {{SITENAME}} mahimo nga madaan na.',
# Quickbar
-'qbsettings' => 'Bar nga mahapos',
-'qbsettings-none' => 'Wala',
-'qbsettings-fixedleft' => 'Gintadlong sa wala',
-'qbsettings-fixedright' => 'Gintadlong sa too',
-'qbsettings-floatingleft' => 'Nagalutaw sa wala',
-'qbsettings-floatingright' => 'Nagalutaw sa too',
+'qbsettings' => 'Bar nga mahapos',
+'qbsettings-none' => 'Wala',
+'qbsettings-fixedleft' => 'Gintadlong sa wala',
+'qbsettings-fixedright' => 'Gintadlong sa too',
+'qbsettings-floatingleft' => 'Nagalutaw sa wala',
+'qbsettings-floatingright' => 'Nagalutaw sa too',
+'qbsettings-directionality' => 'Indi na maliwat, depende sa direksyon sang iskrip sang imo lenggwahe',
# Preferences page
'preferences' => 'Mga Ginabasehan',
@@ -1041,7 +1079,9 @@ Tandai nga ang ila nga palasulundan sang mga unod sang {{SITENAME}} mahimo nga m
'prefs-skin' => 'Panit',
'skin-preview' => 'Ipakita subong',
'datedefault' => 'Wala sang pagpalabi',
+'prefs-beta' => 'Mga kaupod sang Beta',
'prefs-datetime' => 'Petsa kag oras',
+'prefs-labs' => 'Mga kaupod sang Labs',
'prefs-personal' => 'Profayl sang manuggamit',
'prefs-rc' => 'Mga Bag-o nga Inislan',
'prefs-watchlist' => 'Lista sang mga ginabantayan',
@@ -1075,6 +1115,7 @@ Ini isa ka wala pinilian nga balor nga imo mahimo gamiton: $1',
'savedprefs' => 'Ang imo mga pagpalabi gintipon na.',
'timezonelegend' => 'Sona sang oras:',
'localtime' => 'Lokal nga oras:',
+'timezoneuseserverdefault' => 'Gamiton ang ginagamit sang wiki ($1)',
'timezoneuseoffset' => 'Iban pa (ibutang ang offset)',
'timezoneoffset' => 'Offset¹:',
'servertime' => 'Oras sang server:',
@@ -1267,10 +1308,8 @@ Mga Pahina sa [[Special:Watchlist|imo lista-lantaw]] ay '''dukot'''.",
'watchlist' => 'Akon Ginabantayan',
'mywatchlist' => 'Akon Ginabantayan',
'watchnologin' => 'Wala naka-sulod',
-'addedwatch' => 'Nadugang sa lista sang lantaw',
'addedwatchtext' => "Ang pahina \"[[:\$1]]\" ay nadugang sa imo [[Special:Watchlist|lista sang pagtan-aw]].
Buwas-damlag nga pagbag-o sang pahina kag ang iya upod na hisayrany pahina ay ipagalista didto, kag ang pahina magapakita balang '''dukot''' sa may [[Special:RecentChanges|lista sang mga bag-o lang na-islan]] para mahapos lang ini kuhaon.",
-'removedwatch' => 'Ginkakas halin sa lista sang lantaw',
'removedwatchtext' => 'Ang pahina "[[:$1]]" ay nakakas na sa [[Special:Watchlist|imo lista sang pagtan-aw]].',
'watch' => 'Bantayan',
'watchthispage' => 'Bantayan ining panid',
@@ -1289,7 +1328,7 @@ Buwas-damlag nga pagbag-o sang pahina kag ang iya upod na hisayrany pahina ay ip
'confirmdeletetext' => 'Ikaw ay magapanas sang pahina upod sang tanan niya nga historya.
Palihog lang nga sigurado nga kinagusto mo ini nga himuon, nga na-intindihan mo ang resulta sang ginahimo mo, kag ang gina obra mo ga santo upod sa [[{{MediaWiki:Policy-url}}|polisiya]].',
'actioncomplete' => 'Kompleto nga aksiyon',
-'deletedtext' => '"<nowiki>$1</nowiki>" ay nakakas na.
+'deletedtext' => '"$1" ay nakakas na.
Lantawa $2 para sa mga lista sang mga bag-o lang ginkakas.',
'deletedarticle' => 'ginkakas "[[$1]]"',
'dellogpage' => 'Ginkakas na log',
@@ -1309,7 +1348,7 @@ Lantawa $2 para sa mga lista sang mga bag-o lang ginkakas.',
'protectexpiry' => 'Ekspayr:',
'protect_expiry_invalid' => 'Ang Oras sang pag-ekspayr ay hindi tuod.',
'protect_expiry_old' => 'Ang Oras sang pag-ekspayr ay sang ligad pa.',
-'protect-text' => "Pwede mo malantaw kag mabag-o ang lebel sang proteksiyon diri para sa pahina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Pwede mo malantaw kag mabag-o ang lebel sang proteksiyon diri para sa pahina '''$1'''.",
'protect-locked-access' => "Ang imo akawnt ay wala permiso para mabag-o ang pahina sa lebel sang proteksiyon.
Ari diri ang mga pinkabag-o nga mga seting para sa pahina '''$1''':",
'protect-cascadeon' => 'Protektado ang ini nga pahina kay man nasakop ini sa mga sumunod {{PLURAL:$1|pahina, nga may ara|mga pahina, nga may ara}} pasunod nga proteksiyon nga naka andar.
@@ -1496,11 +1535,10 @@ Gapasugot sa pagdugang sang rason sa kabilugan.',
'nextdiff' => 'Mas bag-o nga gin-islan →',
# Media information
-'file-info-size' => '$1 × $2 piksel, kadakuon sang file: $3, MIME type: $4',
-'file-nohires' => '<small>Wala sang yara na taas nga resolusyon.</small>',
-'svg-long-desc' => 'SVG file, nominalya $1 × $2 piksels, kadakuon sang file: $3',
-'show-big-image' => 'Kabilogan nga resolusyon',
-'show-big-image-thumb' => '<small>Kadakuon sa sini nga prebyu: $1 × $2 piksels</small>',
+'file-info-size' => '$1 × $2 piksel, kadakuon sang file: $3, MIME type: $4',
+'file-nohires' => '<small>Wala sang yara na taas nga resolusyon.</small>',
+'svg-long-desc' => 'SVG file, nominalya $1 × $2 piksels, kadakuon sang file: $3',
+'show-big-image' => 'Kabilogan nga resolusyon',
# Special:NewFiles
'ilsubmit' => 'Pangita-a',
@@ -1526,11 +1564,17 @@ Ang iban ay pagataguon sang default.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Islan ini nga file gamit ang eksternal nga aplikasyon',
-'edit-externally-help' => '(Lantawa ang [http://www.mediawiki.org/wiki/Manual:External_editors tudlo sa pag panugod] para sa mga dugang nga impormasyon)',
+'edit-externally-help' => '(Lantawa ang [//www.mediawiki.org/wiki/Manual:External_editors tudlo sa pag panugod] para sa mga dugang nga impormasyon)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tanan',
diff --git a/languages/messages/MessagesHr.php b/languages/messages/MessagesHr.php
index 095fb192..b6a94772 100644
--- a/languages/messages/MessagesHr.php
+++ b/languages/messages/MessagesHr.php
@@ -52,95 +52,95 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Dvostruka_preusmjeravanja' ),
+ 'Activeusers' => array( 'Aktivni_suradnici' ),
+ 'Allmessages' => array( 'Sve_poruke' ),
+ 'Allpages' => array( 'Sve_stranice' ),
+ 'Ancientpages' => array( 'Stare_stranice' ),
+ 'Blankpage' => array( 'Prazna_stranica' ),
+ 'Block' => array( 'Blokiraj' ),
+ 'Blockme' => array( 'Blokiraj_me' ),
+ 'Booksources' => array( 'Traži_ISBN' ),
'BrokenRedirects' => array( 'Kriva_preusmjeravanja' ),
- 'Disambiguations' => array( 'Razdvojbe' ),
- 'Userlogin' => array( 'Prijava' ),
- 'Userlogout' => array( 'Odjava' ),
+ 'Categories' => array( 'Kategorije' ),
+ 'ChangePassword' => array( 'Izmijeni_lozinku' ),
+ 'Confirmemail' => array( 'E-mail_potvrda' ),
+ 'Contributions' => array( 'Doprinosi' ),
'CreateAccount' => array( 'Stvori_raÄun' ),
- 'Preferences' => array( 'Postavke' ),
- 'Watchlist' => array( 'Praćene_stranice' ),
- 'Recentchanges' => array( 'Nedavne_promjene' ),
- 'Upload' => array( 'Postavi_datoteku' ),
+ 'Deadendpages' => array( 'Slijepe_ulice' ),
+ 'DeletedContributions' => array( 'Obrisani_doprinosi' ),
+ 'Disambiguations' => array( 'Razdvojbe' ),
+ 'DoubleRedirects' => array( 'Dvostruka_preusmjeravanja' ),
+ 'Emailuser' => array( 'ElektroniÄka_poÅ¡ta', 'E-mail' ),
+ 'Export' => array( 'Izvezi' ),
+ 'Fewestrevisions' => array( 'Najmanje_uređivane_stranice' ),
+ 'FileDuplicateSearch' => array( 'Traži_kopije_datoteka' ),
+ 'Filepath' => array( 'Putanja_datoteke' ),
+ 'Import' => array( 'Uvezi' ),
+ 'Invalidateemail' => array( 'Nevaljana_elektroniÄka_poÅ¡ta' ),
+ 'BlockList' => array( 'Blokirane_adrese' ),
+ 'LinkSearch' => array( 'Traži_poveznice', 'Traži_linkove' ),
+ 'Listadmins' => array( 'Administratori', 'Admini' ),
+ 'Listbots' => array( 'Botovi' ),
'Listfiles' => array( 'Datoteke', 'Slike' ),
- 'Newimages' => array( 'Nove_datoteke', 'Nove_slike' ),
- 'Listusers' => array( 'Suradnici', 'Popis_suradnika' ),
'Listgrouprights' => array( 'SuradniÄke_skupine' ),
- 'Statistics' => array( 'Statistika' ),
- 'Randompage' => array( 'SluÄajna_stranica' ),
+ 'Listredirects' => array( 'Preusmjeravanja' ),
+ 'Listusers' => array( 'Suradnici', 'Popis_suradnika' ),
+ 'Lockdb' => array( 'ZakljuÄaj_bazu' ),
+ 'Log' => array( 'Evidencije' ),
'Lonelypages' => array( 'SiroÄad' ),
- 'Uncategorizedpages' => array( 'Nekategorizirane_stranice' ),
- 'Uncategorizedcategories' => array( 'Nekategorizirane_kategorije' ),
- 'Uncategorizedimages' => array( 'Nekategorizirane_slike' ),
- 'Uncategorizedtemplates' => array( 'Nekategorizirani_predlošci' ),
- 'Unusedcategories' => array( 'Nekorištene_kategorije' ),
- 'Unusedimages' => array( 'Nekorištene_datoteke', 'Nekorištene_slike' ),
- 'Wantedpages' => array( 'Tražene_stranice' ),
- 'Wantedcategories' => array( 'Tražene_kategorije' ),
- 'Wantedfiles' => array( 'Tražene_datoteke' ),
- 'Wantedtemplates' => array( 'Traženi_predlošci' ),
+ 'Longpages' => array( 'Duge_stranice' ),
+ 'MergeHistory' => array( 'Spoji_povijest' ),
+ 'MIMEsearch' => array( 'MIME_tražilica' ),
+ 'Mostcategories' => array( 'Najviše_kategorija' ),
+ 'Mostimages' => array( 'Najviše_povezane_datoteke', 'Najviše_povezane_slike' ),
'Mostlinked' => array( 'Najviše_povezane_stranice' ),
'Mostlinkedcategories' => array( 'Najviše_povezane_kategorije' ),
'Mostlinkedtemplates' => array( 'Najviše_povezani_predlošci' ),
- 'Mostimages' => array( 'Najviše_povezane_datoteke', 'Najviše_povezane_slike' ),
- 'Mostcategories' => array( 'Najviše_kategorija' ),
'Mostrevisions' => array( 'Najviše_uređivane_stranice' ),
- 'Fewestrevisions' => array( 'Najmanje_uređivane_stranice' ),
- 'Shortpages' => array( 'Kratke_stranice' ),
- 'Longpages' => array( 'Duge_stranice' ),
+ 'Movepage' => array( 'Premjesti_stranicu' ),
+ 'Mycontributions' => array( 'Moji_doprinosi' ),
+ 'Mypage' => array( 'Moja_stranica' ),
+ 'Mytalk' => array( 'Moj_razgovor' ),
+ 'Newimages' => array( 'Nove_datoteke', 'Nove_slike' ),
'Newpages' => array( 'Nove_stranice' ),
- 'Ancientpages' => array( 'Stare_stranice' ),
- 'Deadendpages' => array( 'Slijepe_ulice' ),
+ 'Popularpages' => array( 'Popularne_stranice' ),
+ 'Preferences' => array( 'Postavke' ),
+ 'Prefixindex' => array( 'Prefiks_indeks', 'Stranice_po_prefiksu' ),
'Protectedpages' => array( 'Zaštićene_stranice' ),
'Protectedtitles' => array( 'Zaštićeni_naslovi' ),
- 'Allpages' => array( 'Sve_stranice' ),
- 'Prefixindex' => array( 'Prefiks_indeks', 'Stranice_po_prefiksu' ),
- 'Ipblocklist' => array( 'Blokirane_adrese' ),
- 'Unblock' => array( 'Odblokiraj' ),
- 'Specialpages' => array( 'Posebne_stranice' ),
- 'Contributions' => array( 'Doprinosi' ),
- 'Emailuser' => array( 'ElektroniÄka_poÅ¡ta', 'E-mail' ),
- 'Confirmemail' => array( 'E-mail_potvrda' ),
- 'Whatlinkshere' => array( 'Å to_vodi_ovamo' ),
+ 'Randompage' => array( 'SluÄajna_stranica' ),
+ 'Randomredirect' => array( 'SluÄajno_preusmjeravanje' ),
+ 'Recentchanges' => array( 'Nedavne_promjene' ),
'Recentchangeslinked' => array( 'Povezane_promjene' ),
- 'Movepage' => array( 'Premjesti_stranicu' ),
- 'Blockme' => array( 'Blokiraj_me' ),
- 'Booksources' => array( 'Traži_ISBN' ),
- 'Categories' => array( 'Kategorije' ),
- 'Export' => array( 'Izvezi' ),
- 'Version' => array( 'Verzija' ),
- 'Allmessages' => array( 'Sve_poruke' ),
- 'Log' => array( 'Evidencije' ),
- 'Blockip' => array( 'Blokiraj' ),
+ 'Revisiondelete' => array( 'Brisanje_izmjene' ),
+ 'Search' => array( 'Traži' ),
+ 'Shortpages' => array( 'Kratke_stranice' ),
+ 'Specialpages' => array( 'Posebne_stranice' ),
+ 'Statistics' => array( 'Statistika' ),
+ 'Tags' => array( 'Oznake' ),
+ 'Unblock' => array( 'Odblokiraj' ),
+ 'Uncategorizedcategories' => array( 'Nekategorizirane_kategorije' ),
+ 'Uncategorizedimages' => array( 'Nekategorizirane_slike' ),
+ 'Uncategorizedpages' => array( 'Nekategorizirane_stranice' ),
+ 'Uncategorizedtemplates' => array( 'Nekategorizirani_predlošci' ),
'Undelete' => array( 'Vrati' ),
- 'Import' => array( 'Uvezi' ),
- 'Lockdb' => array( 'ZakljuÄaj_bazu' ),
'Unlockdb' => array( 'OtkljuÄaj_bazu' ),
- 'Userrights' => array( 'SuradniÄka_prava' ),
- 'MIMEsearch' => array( 'MIME_tražilica' ),
- 'FileDuplicateSearch' => array( 'Traži_kopije_datoteka' ),
- 'Unwatchedpages' => array( 'Negledane_stranice' ),
- 'Listredirects' => array( 'Preusmjeravanja' ),
- 'Revisiondelete' => array( 'Brisanje_izmjene' ),
+ 'Unusedcategories' => array( 'Nekorištene_kategorije' ),
+ 'Unusedimages' => array( 'Nekorištene_datoteke', 'Nekorištene_slike' ),
'Unusedtemplates' => array( 'Nekorišteni_predlošci' ),
- 'Randomredirect' => array( 'SluÄajno_preusmjeravanje' ),
- 'Mypage' => array( 'Moja_stranica' ),
- 'Mytalk' => array( 'Moj_razgovor' ),
- 'Mycontributions' => array( 'Moji_doprinosi' ),
- 'Listadmins' => array( 'Administratori', 'Admini' ),
- 'Listbots' => array( 'Botovi' ),
- 'Popularpages' => array( 'Popularne_stranice' ),
- 'Search' => array( 'Traži' ),
- 'Resetpass' => array( 'Izmijeni_lozinku' ),
+ 'Unwatchedpages' => array( 'Negledane_stranice' ),
+ 'Upload' => array( 'Postavi_datoteku' ),
+ 'Userlogin' => array( 'Prijava' ),
+ 'Userlogout' => array( 'Odjava' ),
+ 'Userrights' => array( 'SuradniÄka_prava' ),
+ 'Version' => array( 'Verzija' ),
+ 'Wantedcategories' => array( 'Tražene_kategorije' ),
+ 'Wantedfiles' => array( 'Tražene_datoteke' ),
+ 'Wantedpages' => array( 'Tražene_stranice' ),
+ 'Wantedtemplates' => array( 'Traženi_predlošci' ),
+ 'Watchlist' => array( 'Praćene_stranice' ),
+ 'Whatlinkshere' => array( 'Å to_vodi_ovamo' ),
'Withoutinterwiki' => array( 'Bez_međuwikipoveznica', 'Bez_interwikija' ),
- 'MergeHistory' => array( 'Spoji_povijest' ),
- 'Filepath' => array( 'Putanja_datoteke' ),
- 'Invalidateemail' => array( 'Nevaljana_elektroniÄka_poÅ¡ta' ),
- 'Blankpage' => array( 'Prazna_stranica' ),
- 'LinkSearch' => array( 'Traži_poveznice', 'Traži_linkove' ),
- 'DeletedContributions' => array( 'Obrisani_doprinosi' ),
- 'Tags' => array( 'Oznake' ),
- 'Activeusers' => array( 'Aktivni_suradnici' ),
);
$magicWords = array(
@@ -338,8 +338,8 @@ $messages = array(
'tog-shownumberswatching' => 'Prikaži broj suradnika koji prate stranicu (u nedavnim izmjenama, popisu praćenja i samim Älancima)',
'tog-oldsig' => 'Pregled postojećeg potpisa:',
'tog-fancysig' => 'ObiÄan potpis kao wikitekst (bez automatske poveznice)',
-'tog-externaleditor' => 'Uvijek koristi vanjski program za ureÄ‘ivanje (samo za napredne, potrebne su posebne postavke na raÄunalu. [http://www.mediawiki.org/wiki/Manual:External_editors Dodatne informacije.])',
-'tog-externaldiff' => 'Uvijek koristi vanjski program za usporedbu (samo za napredne, potrebne su posebne postavke na raÄunalu. [http://www.mediawiki.org/wiki/Manual:External_editors Dodatne informacije.])',
+'tog-externaleditor' => 'Uvijek koristi vanjski program za ureÄ‘ivanje (samo za napredne, potrebne su posebne postavke na raÄunalu. [//www.mediawiki.org/wiki/Manual:External_editors Dodatne informacije.])',
+'tog-externaldiff' => 'Uvijek koristi vanjski program za usporedbu (samo za napredne, potrebne su posebne postavke na raÄunalu. [//www.mediawiki.org/wiki/Manual:External_editors Dodatne informacije.])',
'tog-showjumplinks' => 'UkljuÄi pomoćne poveznice "SkoÄi na"',
'tog-uselivepreview' => 'UkljuÄi trenutaÄni pretpregled (JavaScript) (eksperimentalno)',
'tog-forceeditsummary' => 'Podsjeti me ako sažetak uređivanja ostavljam praznim',
@@ -435,10 +435,7 @@ $messages = array(
'listingcontinuesabbrev' => 'nast.',
'index-category' => 'Indeksirane stranice',
'noindex-category' => 'Neindeksirane stranice',
-
-'mainpagetext' => "'''Softver MediaWiki je uspješno instaliran.'''",
-'mainpagedocfooter' => 'Pogledajte [http://meta.wikimedia.org/wiki/MediaWiki_localisation dokumentaciju o prilagodbi suÄelja]
-i [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide VodiÄ za suradnike] za pomoć pri uporabi i podeÅ¡avanju.',
+'broken-file-category' => 'Stranice s neispravnim poveznicama datoteka',
'about' => 'O',
'article' => 'ÄŒlanak',
@@ -490,10 +487,10 @@ i [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide VodiÄ za suradnike]
'history' => 'Stare izmjene',
'history_short' => 'Stare izmjene',
'updatedmarker' => 'obnovljeno od zadnjeg posjeta',
-'info_short' => 'Informacija',
'printableversion' => 'Verzija za ispis',
'permalink' => 'Trajna poveznica',
'print' => 'Ispiši',
+'view' => 'Vidi',
'edit' => 'Uredi',
'create' => 'ZapoÄni',
'editthispage' => 'Uredi ovu stranicu',
@@ -501,6 +498,7 @@ i [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide VodiÄ za suradnike]
'delete' => 'Izbriši',
'deletethispage' => 'Izbriši ovu stranicu',
'undelete_short' => 'Vrati {{PLURAL:$1|$1 uređivanje|$1 uređivanja}}',
+'viewdeleted_short' => 'Prikaži $1 {{plural: $1|izbrisano uređivanje|izbrisana uređivanja|izbrisanih uređivanja}}',
'protect' => 'Zaštiti',
'protect_change' => 'promijeni',
'protectthispage' => 'Zaštiti ovu stranicu',
@@ -584,6 +582,8 @@ $1',
'toc' => 'Sadržaj',
'showtoc' => 'prikaži',
'hidetoc' => 'sakrij',
+'collapsible-collapse' => 'sklopi stablo',
+'collapsible-expand' => 'raširi stablo',
'thisisdeleted' => 'Vidi ili vrati $1?',
'viewdeleted' => 'Vidi $1?',
'restorelink' => '{{PLURAL:$1|$1 pobrisanu izmjenu|$1 pobrisane izmjene|$1 pobrisanih izmjena}}',
@@ -595,10 +595,12 @@ $1',
'page-rss-feed' => '"$1" RSS izvor',
'page-atom-feed' => '"$1" Atom izvor',
'red-link-title' => '$1 (stranica ne postoji)',
+'sort-descending' => 'Sortiraj silazno',
+'sort-ascending' => 'Sortiraj uzlazno',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'ÄŒlanak',
-'nstab-user' => 'Stranica suradnika',
+'nstab-user' => '{{GENDER:{{BASEPAGENAME}}|Stranica suradnika|Stranica suradnice}}',
'nstab-media' => 'Mediji',
'nstab-special' => 'Posebna stranica',
'nstab-project' => 'Stranica o projektu',
@@ -676,12 +678,13 @@ Upit: $2',
'protectedpagetext' => 'Ova stranica je zakljuÄana da bi se onemogućile izmjene.',
'viewsourcetext' => 'Možete pogledati i kopirati izvorni sadržaj ove stranice:',
'protectedinterface' => 'Ova stranica je zaštićena od izmjena jer sadrži tekst MediaWiki softvera.',
-'editinginterface' => "'''Upozorenje:''' UreÄ‘ujete stranicu koja se rabi za prikaz teksta u suÄelju softvera. Promjene uÄinjene na ovoj stranici će se odraziti na izgled korisniÄkog suÄelja kod drugih suradnika. Za prijevod, razmotrite koriÅ¡tenje [http://translatewiki.net/wiki/Main_Page?setlang=hr translatewiki.net], projekta lokalizacije MedijeWiki.",
+'editinginterface' => "'''Upozorenje:''' UreÄ‘ujete stranicu koja se rabi za prikaz teksta u suÄelju softvera. Promjene uÄinjene na ovoj stranici će se odraziti na izgled korisniÄkog suÄelja kod drugih suradnika. Za prijevod, razmotrite koriÅ¡tenje [//translatewiki.net/wiki/Main_Page?setlang=hr translatewiki.net], projekta lokalizacije MedijeWiki.",
'sqlhidden' => '(SQL upit sakriven)',
'cascadeprotected' => 'Ova je stranica zakljuÄana za ureÄ‘ivanja jer je ukljuÄena u {{PLURAL:$1|slijedeću stranicu|slijedeće stranice}}, koje su zaÅ¡tićene "prenosivom zaÅ¡titom":
$2',
'namespaceprotected' => "Ne možete uređivati stranice u imenskom prostoru '''$1'''.",
-'customcssjsprotected' => 'Ne možete uređivati ovu stranicu zato što ona sadrži osobne postavke drugog suradnika.',
+'customcssprotected' => 'Ne možete uređivati ovu CSS stranicu zato što ona sadrži osobne postavke drugog suradnika.',
+'customjsprotected' => 'Ne možete uređivati ovu JavaScript stranicu zato što ona sadrži osobne postavke drugog suradnika.',
'ns-specialprotected' => "Stranice u imenskom prostoru ''{{ns:special}}'' ne mogu se uređivati.",
'titleprotected' => "Ovaj naslov je od kreiranja zaštitio suradnik [[User:$1|$1]], uz razlog: ''$2''.",
@@ -719,6 +722,7 @@ Ne zaboravite prilagoditi [[Special:Preferences|{{SITENAME}} postavke]].',
'createaccount' => 'Otvori novi suradniÄki raÄun',
'gotaccount' => "Već imate suradniÄki raÄun? '''$1'''.",
'gotaccountlink' => 'Prijavite se',
+'userlogin-resetlink' => 'Zaboravili ste detalje vaše prijave?',
'createaccountmail' => 'poštom',
'createaccountreason' => 'Razlog:',
'badretype' => 'Unesene lozinke nisu istovjetne.',
@@ -728,13 +732,15 @@ Unesite neko drugo ime.',
'createaccounterror' => 'Ne može se stvoriti raÄun: $1',
'nocookiesnew' => "SuradniÄki raÄun je otvoren, ali niste uspjeÅ¡no prijavljeni. Naime, {{SITENAME}} koristi kolaÄiće (''cookies'') u procesu prijave. IskljuÄili ste kolaÄiće. Molim ukljuÄite ih i pokuÅ¡ajte ponovo s VaÅ¡im novim imenom i lozinkom.",
'nocookieslogin' => "{{SITENAME}} koristi kolaÄiće (''cookies'') u procesu prijave. IskljuÄili ste kolaÄiće. Molim ukljuÄite ih i pokuÅ¡ajte ponovo.",
+'nocookiesfornew' => "SuradniÄki raÄun nije napravljen, jer nismo mogli potvrditi njegov izvor.
+Provjerite jesu li kolaÄići (''cookies'') omogućeni, ponovo uÄitajte ovu stranicu i pokuÅ¡ajte opet.",
'noname' => 'Niste unijeli valjano suradniÄko ime.',
'loginsuccesstitle' => 'Prijava uspješna',
'loginsuccess' => 'Prijavili ste se na wiki kao "$1".',
'nosuchuser' => 'Ne postoji suradnik s imenom "$1".
SuradniÄka imena su osjetljiva na veliÄinu slova.
Provjerite jeste li toÄno upisali, ili [[Special:UserLogin/signup|otvorite novi suradniÄki raÄun]].',
-'nosuchusershort' => 'Ne postoji suradnik s imenom "<nowiki>$1</nowiki>". Provjerite Vaš unos.',
+'nosuchusershort' => 'Ne postoji suradnik s imenom "$1". Provjerite Vaš unos.',
'nouserspecified' => 'Molimo navedite suradniÄko ime.',
'login-userblocked' => 'Ovaj suradnik je blokiran. Prijava nije dozvoljena.',
'wrongpassword' => 'Lozinka koju ste unijeli nije ispravna. Pokušajte ponovno.',
@@ -779,13 +785,14 @@ Možete zanemariti ovu poruku ako je suradniÄki raÄun stvoren nenamjerno.',
'usernamehasherror' => 'SuradniÄko ime ne može sadržavati znakove #',
'login-throttled' => 'Nedavno ste se previše puta pokušali prijaviti.
Molimo Vas da priÄekate prije nego Å¡to pokuÅ¡ate ponovo.',
+'login-abort-generic' => 'Vaša prijava je bila neuspješna - Prekinuto',
'loginlanguagelabel' => 'Jezik: $1',
'suspicious-userlogout' => 'Vaš zahtjev za odjavu je odbijen jer to izgleda kao da je poslan preko pokvarenog preglednika ili keširanog posrednika (proxyja).',
# E-mail sending
'php-mail-error-unknown' => 'Nepoznata pogreška u PHP-mail() funkciji',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Promijeni lozinku',
'resetpass_announce' => 'Prijavljeni ste s privremenom lozinkom. Da završite proces mijenjanja lozinke, upišite ovdje novu lozinku:',
'resetpass_header' => 'Promijeni lozinku raÄuna',
@@ -802,6 +809,38 @@ Molimo Vas da priÄekate prije nego Å¡to pokuÅ¡ate ponovo.',
Možda ste već uspješno promijenili Vašu lozinku ili ste zatražili novu privremenu lozinku.',
'resetpass-temp-password' => 'Privremena lozinka:',
+# Special:PasswordReset
+'passwordreset' => 'Ponovno postavi lozinku',
+'passwordreset-text' => 'Ispunite ovaj obrazac da biste dobili e-mail podsjetnik o vaÅ¡im detaljima raÄuna.',
+'passwordreset-legend' => 'Poništi lozinku',
+'passwordreset-disabled' => 'Poništavanje lozinke je onemogućeno na ovom wikiju.',
+'passwordreset-pretext' => '{{PLURAL:$1||Unesite jedan od dijelova podataka u nastavku}}',
+'passwordreset-username' => 'SuradniÄko ime:',
+'passwordreset-email' => 'E-mail adresa:',
+'passwordreset-emailtitle' => 'Pojedinosti o raÄunu na {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Netko (vjerojatno Vi, s IP adrese $1) zatražio je podsjetnik za VaÅ¡e detalje raÄuna
+za {{SITENAME}} ($4). Sljedeći {{PLURAL:$3|raÄun suradnika je|raÄuni suradnika su}}
+povezani s ovom e-mail adresom:
+
+$2
+
+{{PLURAL:$3|Ova privremena lozinka|Ove privremene lozinke}} će isteći u {{PLURAL:$5|jedan dan|$5 dana}}.
+Trebate se prijaviti i odabrati novu lozinku. Ukoliko je netko drugi napravio ovaj
+zahtjev, ili ako ste sjeti Vaše izvorne lozinke, a vi je više ne želite promijeniti,
+možete zanemariti ovu poruku i nastavite koristiti staru lozinku.',
+'passwordreset-emailtext-user' => 'Suradnik $1 na {{SITENAME}} zatražio podsjetnik o pojedinostima vaÅ¡eg raÄuna za {{SITENAME}}
+($4). Sljedeći {{PLURAL:$3|raÄun suradnika je|raÄuni suradnika su}} povezani s ovom e-mail adresom:
+
+$2
+
+{{PLURAL:$3|Ova privremena lozinka|Ove privremene lozinke}} će isteći u {{PLURAL:$5|jedan dan|$5 dana}}.
+Trebate se prijaviti i odabrati novu lozinku. Ukoliko je netko drugi napravio ovaj
+zahtjev, ili ako ste sjeti Vaše izvorne lozinke, a vi je više ne želite promijeniti,
+možete zanemariti ovu poruku i nastavite koristiti staru lozinku.',
+'passwordreset-emailelement' => 'SuradniÄko ime: $1
+Privremena lozinka: $2',
+'passwordreset-emailsent' => 'E-mail podsjetnik je poslan.',
+
# Edit page toolbar
'bold_sample' => 'Podebljani tekst',
'bold_tip' => 'Podebljani tekst',
@@ -813,8 +852,6 @@ Možda ste već uspješno promijenili Vašu lozinku ili ste zatražili novu priv
'extlink_tip' => 'Vanjska poveznica (pazi, nužan je prefiks http://)',
'headline_sample' => 'Tekst naslova',
'headline_tip' => 'Podnaslov',
-'math_sample' => 'Ovdje unesi formulu',
-'math_tip' => 'MatematiÄka formula (LaTeX)',
'nowiki_sample' => 'Ovdje unesite neoblikovani tekst',
'nowiki_tip' => 'Neoblikovani tekst',
'image_sample' => 'Primjer.jpg',
@@ -896,7 +933,7 @@ Možete [[Special:Search/{{PAGENAME}}|potražiti ovaj naslov]] na drugim stranic
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane evidencije]
ili [{{fullurl:{{FULLPAGENAME}}|action=edit}} urediti ovu stranicu]</span>.',
'noarticletext-nopermission' => 'Možete [[Special:Search/{{PAGENAME}}|tražiti naslov ove stranice]] na drugim stranicama ili <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane evidencije]</span>.',
-'userpage-userdoesnotexist' => 'SuradniÄko ime "$1" nije prijavljeno. Jeste li sigurni da želite stvoriti/ureÄ‘ivati ovu stranicu?',
+'userpage-userdoesnotexist' => 'SuradniÄko ime "<nowiki>$1</nowiki>" nije prijavljeno. Jeste li sigurni da želite stvoriti/ureÄ‘ivati ovu stranicu?',
'userpage-userdoesnotexist-view' => 'SuradniÄki raÄun "$1" nije registriran.',
'blocked-notice-logextract' => 'Ovaj suradnik je trenutaÄno blokiran.
Posljednja stavka evidencije blokiranja navedena je niže kao napomena:',
@@ -930,6 +967,7 @@ Molimo pokušajte ponovno. Ako i dalje ne bude uspijevalo, pokušajte se [[Speci
'token_suffix_mismatch' => "'''VaÅ¡e ureÄ‘ivanje je odbaÄeno jer je VaÅ¡ web preglednik ubacio znak/znakove interpunkcije u token ureÄ‘ivanja.'''
Stoga je ureÄ‘ivanje odbaÄeno da se sprijeÄi uniÅ¡tavanje teksta stranice.
To se ponekad događa kad rabite neispravan web-baziran anonimni posrednik (proxy).",
+'edit_form_incomplete' => "'''Neki dijelovi obrasca za uređivanja nisu dostigli do poslužitelja; provjerite jesu li izmjene netaknute i pokušajte ponovno.'''",
'editing' => 'Uređujete $1',
'editingsection' => 'Uređujete $1 (odlomak)',
'editingcomment' => 'Uređujete $1 (novi odlomak)',
@@ -1263,12 +1301,13 @@ Primijetite da uporaba navigacijskih poveznica resetira Vaše izbore u stupcu.',
'searchdisabled' => '<p>Oprostite! Pretraga po cjelokupnoj bazi je zbog bržeg rada projekta {{SITENAME}} trenutaÄno onemogućena. Možete se poslužiti tražilicom Google.</p>',
# Quickbar
-'qbsettings' => 'Traka',
-'qbsettings-none' => 'Bez',
-'qbsettings-fixedleft' => 'Lijevo nepomiÄno',
-'qbsettings-fixedright' => 'Desno nepomiÄno',
-'qbsettings-floatingleft' => 'Lijevo leteće',
-'qbsettings-floatingright' => 'Desno leteće',
+'qbsettings' => 'Traka',
+'qbsettings-none' => 'Bez',
+'qbsettings-fixedleft' => 'Lijevo nepomiÄno',
+'qbsettings-fixedright' => 'Desno nepomiÄno',
+'qbsettings-floatingleft' => 'Lijevo leteće',
+'qbsettings-floatingright' => 'Desno leteće',
+'qbsettings-directionality' => 'Fiksno, ovisno o smjeru pisma Vašeg jezika',
# Preferences page
'preferences' => 'Postavke',
@@ -1279,9 +1318,10 @@ Primijetite da uporaba navigacijskih poveznica resetira Vaše izbore u stupcu.',
'changepassword' => 'Promjena lozinke',
'prefs-skin' => 'Izgled',
'skin-preview' => 'Pregled',
-'prefs-math' => 'Prikaz matematiÄkih formula',
'datedefault' => 'Nemoj postaviti',
+'prefs-beta' => 'Beta mogućnosti',
'prefs-datetime' => 'Datum i vrijeme',
+'prefs-labs' => 'Labs mogućnosti',
'prefs-personal' => 'Podaci o suradniku',
'prefs-rc' => 'Nedavne promjene i kratki Älanci',
'prefs-watchlist' => 'Praćene stranice',
@@ -1303,8 +1343,6 @@ Primijetite da uporaba navigacijskih poveznica resetira Vaše izbore u stupcu.',
'columns' => 'Stupaca',
'searchresultshead' => 'Prikaz rezultata pretrage',
'resultsperpage' => 'Koliko pogodaka na jednoj stranici',
-'contextlines' => 'Koliko redova teksta po pogotku',
-'contextchars' => 'Koliko znakova po retku',
'stub-threshold' => 'Prag za formatiranje poput <a href="#" class="stub">poveznice mrve</a>:',
'stub-threshold-disabled' => 'Onemogućeno',
'recentchangesdays' => 'Broj dana prikazanih u nedavnim promjenama:',
@@ -1315,7 +1353,7 @@ Primijetite da uporaba navigacijskih poveznica resetira Vaše izbore u stupcu.',
'savedprefs' => 'VaÅ¡e postavke su saÄuvane.',
'timezonelegend' => 'Vremenska zona:',
'localtime' => 'Lokalno vrijeme:',
-'timezoneuseserverdefault' => 'Koristi vrijeme na poslužitelji',
+'timezoneuseserverdefault' => 'Koristi postavke wikija ($1)',
'timezoneuseoffset' => 'Drugo (odredite razliku)',
'timezoneoffset' => 'Razlika¹:',
'servertime' => 'Vrijeme na poslužitelju:',
@@ -1362,8 +1400,8 @@ Ne smije biti duži od $1 {{PLURAL:$1|znaka|znaka|znakova}}.',
'prefs-help-gender' => 'Mogućnost: softver koristi za ispravno oslovljavanje razlikujući spol. Ovaj podatak bit će javan.',
'email' => 'Adresa elektroniÄke poÅ¡te *',
'prefs-help-realname' => 'Pravo ime nije obvezno. Ako ga navedete, bit će korišteno za pravnu atribuciju Vaših doprinosa.',
-'prefs-help-email' => 'E-mail adresa nije obvezna, ali omogućuje slanje nove lozinke e-mailom u sluÄaju da zaboravite svoju.
-Možete omogućiti drugima da Vas kontaktiraju na suradniÄkoj stranici ili stranici za razgovor bez javnog otkrivanja VaÅ¡e e-mail adrese.',
+'prefs-help-email' => 'E-mail adresa nije obvezna, ali je potrebna za obnovu lozinke u sluÄaju da ju zaboravite.',
+'prefs-help-email-others' => 'TakoÄ‘er možete odabrati da vas ostali kontaktiraju preko vaÅ¡e suradniÄke ili stranice za razgovor bez javnog otkrivanja vaÅ¡eg identiteta.',
'prefs-help-email-required' => 'Potrebno je navesti adresu e-pošte (e-mail).',
'prefs-info' => 'Osnovni podaci',
'prefs-i18n' => 'Internacionalizacija',
@@ -1488,15 +1526,15 @@ Možete omogućiti drugima da Vas kontaktiraju na suradniÄkoj stranici ili stra
'right-userrights' => 'UreÄ‘ivanje svih suradniÄkih prava',
'right-userrights-interwiki' => 'UreÄ‘ivanje suradniÄkih prava na drugim Wikijima',
'right-siteadmin' => 'ZakljuÄavanje i otkljuÄavanje baze podataka',
-'right-reset-passwords' => "Poništi (''resetiraj'') lozinku drugog suradnika",
'right-override-export-depth' => 'Izvezi stranice ukljuÄujući i povezane stranice do dubine od 5',
'right-sendemail' => 'Slanje e-maila drugim korisnicima',
# 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',
-'rightsnone' => '(suradnik)',
+'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',
+'rightsnone' => '(suradnik)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'Äitanje ove stranice',
@@ -1616,11 +1654,12 @@ Da biste na stranicu stavili datoteku, koristite poveznice tipa
'minlength1' => 'Ime datoteke mora imati barem jedno slovo.',
'illegalfilename' => 'Ime datoteke "$1" sadrži znakove koji nisu dopušteni u imenima stranica. Preimenujte datoteku i ponovno je postavite.',
'badfilename' => 'Ime slike automatski je promijenjeno u "$1".',
-'filetype-mime-mismatch' => 'Proširenje datoteke ne odgovara MIME tipu.',
+'filetype-mime-mismatch' => 'Ekstenzija datoteke ".$1" ne odgovara MIME tipu datoteke ($2).',
'filetype-badmime' => 'Datoteke MIME tipa "$1" ne mogu se snimati.',
'filetype-bad-ie-mime' => 'Ne mogu postaviti ovu datoteku jer je Internet Explorer prepoznaje kao "$1", koji nije dopušten i potencijalno je opasan tip datoteke.',
'filetype-unwanted-type' => "'''\".\$1\"''' je neželjena vrsta datoteke. {{PLURAL:\$3|PreporuÄena vrsta je|PreporuÄene vrste su}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' je nedopuštena vrsta datoteke. {{PLURAL:\$3|Dopuštena vrsta je|Dopuštene vrste su}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|je nedopušteni tip datoteke|su nedopušteni tipovi datoteke}}.
+Dopušteni {{PLURAL:$3|tip datoteke je|tipovi datoteke su}} $2.',
'filetype-missing' => 'Datoteka nema nastavak koji određuje tip (poput ".jpg").',
'empty-file' => 'Datoteka koju ste poslali je prazna.',
'file-too-large' => 'Datoteka koju ste poslali bila je prevelika.',
@@ -1636,6 +1675,7 @@ Da biste na stranicu stavili datoteku, koristite poveznice tipa
'large-file' => 'PreporuÄljivo je da datoteke ne prelaze $1; Ova datoteka je $2.',
'largefileserver' => 'VeliÄina ove datoteke veća je od one dopuÅ¡tene postavkama poslužitelja.',
'emptyfile' => 'Datoteka koju ste postavili je prazna. Možda se radi o krivo utipkanom imenu datoteke. Provjerite želite li zaista postaviti ovu datoteku.',
+'windows-nonascii-filename' => 'Ovaj wiki ne podržava imena datoteka s posebnim znakovima.',
'fileexists' => "Datoteka s ovim imenom već postoji, pogledajte '''<tt>[[:$1]]</tt>''' ako niste sigurni želite li je uistinu promijeniti.
[[$1|thumb]]",
'filepageexists' => "Opis stranice za ovu datoteku je već napravljen ovdje '''<tt>[[:$1]]</tt>''', ali datoteka sa ovim nazivom trenutno ne postoji.
@@ -1670,6 +1710,8 @@ Ako još uvijek želite postaviti svoju datoteku, idite nazad i postavite ju pod
'php-uploaddisabledtext' => 'Postavljanja datoteka su onemogućena u PHP-u. Molimo provjerite postavke za postavljanje datoteka.',
'uploadscripted' => 'Ova datoteka sadrži HTML ili skriptu, što može dovesti do grešaka u web pregledniku.',
'uploadvirus' => 'Datoteka sadrži virus! Podrobnije: $1',
+'uploadjava' => 'Datoteka je ZIP koja sadrži Java .class datotoeku.
+Postavljanje Java datoteka nije dopuÅ¡teno, jer mogu izazvati zaobilazak sigurnosnih ograniÄenja.',
'upload-source' => 'Izvorna datoteka',
'sourcefilename' => 'Ime datoteke na VaÅ¡em raÄunalu:',
'sourceurl' => 'URL izvora:',
@@ -1679,10 +1721,6 @@ Ako još uvijek želite postaviti svoju datoteku, idite nazad i postavite ju pod
'upload-options' => 'Mogućnosti postavljanja',
'watchthisupload' => 'Prati ovu datoteku',
'filewasdeleted' => 'Datoteka istog imena već je bila postavljena, a kasnije i obrisana. Trebali bi provjeriti $1 prije nego što ponovno postavite datoteku.',
-'upload-wasdeleted' => "'''Upozorenje: Pokušavate postaviti datoteku koja je prethodno obrisana.'''
-
-Razmislite je li prigodno nastaviti s postavljanjem ove datoteke.
-Slijedi evidencija brisanja ove datoteke s obrazloženjem prethodnog brisanja:",
'filename-bad-prefix' => "Ime datoteke koju snimate poÄinje s '''\"\$1\"''', Å¡to je ime koje slikama tipiÄno dodjeljuju digitalni fotoaparati. Molimo izaberite bolje ime (neko koje bolje opisuje sliku nego \$1).",
'upload-success-subj' => 'Postavljanje uspješno.',
'upload-success-msg' => 'Vaša datoteka iz [$2] je uspješno postavljena. Dostupna je ovdje: [[:{{ns:file}}:$1]]',
@@ -1705,6 +1743,23 @@ Ako se problem ponovi, javite to [[Special:ListUsers/sysop|administratoru]].',
'upload-unknown-size' => 'Nepoznata veliÄina',
'upload-http-error' => 'HTTP pogreška: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Došlo je do pogreške pri otvaranju datoteke za ZIP provjeru.',
+'zip-wrong-format' => 'Navedena datoteka nije ZIP datoteka.',
+'zip-bad' => 'Datoteka je oÅ¡tećena ili je na drugi naÄin neÄitljiva ZIP datoteka.
+Ne može biti ispravno sigurnosno oznaÄena.',
+'zip-unsupported' => 'Datoteka je ZIP vrsta datoteka koji koristi ZIP znaÄajke koje ne podržava MediaWiki.
+Ne može biti ispravno sigurnosno oznaÄena.',
+
+# Special:UploadStash
+'uploadstash' => 'Snimi niz datoteka',
+'uploadstash-summary' => 'Ova stranica pruža pristup datotekama koje su snimljene na wiki (ili u procesu snimanja), ali još nisu objavljeni na wiki. Ove datoteke nisu vidljive nikome, osim suradniku koji ih je snimio.',
+'uploadstash-clear' => 'OÄisti niz datoteka',
+'uploadstash-nofiles' => 'Nemate neobjavljenih datoteka',
+'uploadstash-badtoken' => 'Obavljanje akcije je bilo neuspješano, možda jer je vaša prijava istekla. Pokušajte ponovno.',
+'uploadstash-errclear' => 'Brisanje neobjavljenih datoteka nije uspjelo.',
+'uploadstash-refresh' => 'Osvježi popis datoteka',
+
# img_auth script messages
'img-auth-accessdenied' => 'Pristup onemogućen',
'img-auth-nopathinfo' => 'Nedostaje PATH_INFO.
@@ -1785,7 +1840,7 @@ Slijedeći popis prikazuje {{PLURAL:$1|stranice koje|prvih $1 stranica koje}} vo
[[Special:WhatLinksHere/$2|Ovdje se nalazi]] potpuni popis.',
'nolinkstoimage' => 'Nijedna stranica ne povezuje na ovu sliku.',
'morelinkstoimage' => 'Pogledaj [[Special:WhatLinksHere/$1|više poveznica]] za ovu datoteku.',
-'redirectstofile' => '{{PLURAL:$1|Sljedeća datoteka preusmjerava|$1 Sljedeće datoteke preusmjeravaju}} na ovu datoteku:',
+'linkstoimage-redirect' => '$1 (preusmjeravanje datoteke) $2',
'duplicatesoffile' => '{{PLURAL:$1|Sljedeća datoteka je kopija|$1 sljedeće datoteke su kopije|$1 sljedećih datoteka su kopije}} ove datoteke ([[Special:FileDuplicateSearch/$2|više detalja]]):',
'sharedupload' => 'Ova je datoteka postavljena na $1 i mogu je koristiti ostali projekti.',
'sharedupload-desc-there' => 'Ova datoteka je s $1 i mogu je koristiti drugi projekti. Pogledajte [$2 stranicu s opisom datoteke] za dodatne informacije.',
@@ -1878,13 +1933,14 @@ Slijedeći popis prikazuje {{PLURAL:$1|stranice koje|prvih $1 stranica koje}} vo
Umjesto toga bi trebale povezivati na prikladnu temu.<br />
Stranica se tretira kao razdvojbena stranica ako koristi predložak na kojega vodi [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Dvostruka preusmjeravanja',
-'doubleredirectstext' => 'Ova stranica sadrži popis stranica koje preusmjeravju na druge stranice za preusmjeravanje.
+'doubleredirects' => 'Dvostruka preusmjeravanja',
+'doubleredirectstext' => 'Ova stranica sadrži popis stranica koje preusmjeravju na druge stranice za preusmjeravanje.
Svaki redak sadrži poveznice na prvo i drugo preusmjeravanje, kao i odredište drugog preusmjeravanja
koja obiÄno ukazuje na "pravu" odrediÅ¡nu stranicu, na koju bi trebalo pokazivati prvo preusmjeravanje.
<del>Precrtane</del> stavke su riješene.',
-'double-redirect-fixed-move' => '[[$1]] je premješten, sada je preusmjeravanje na [[$2]]',
-'double-redirect-fixer' => 'PopravljaÄ preusmjeravanja',
+'double-redirect-fixed-move' => '[[$1]] je premješten, sada je preusmjeravanje na [[$2]]',
+'double-redirect-fixed-maintenance' => 'Ispravljanje dvostrukih preusmjeravanja s [[$1]] na [[$2]].',
+'double-redirect-fixer' => 'PopravljaÄ preusmjeravanja',
'brokenredirects' => 'Kriva preusmjeravanja',
'brokenredirectstext' => 'Sljedeća preusmjeravanja povezuju na nepostojeće stranice:',
@@ -1961,6 +2017,7 @@ Molimo obratite pozornost da druge web stranice mogu povezivati sliku izravnim U
'pager-newer-n' => '{{PLURAL:$1|novija $1|novije $1|novijih $1}}',
'pager-older-n' => '{{PLURAL:$1|starija $1|starije $1|starijih $1}}',
'suppress' => 'Nadzor',
+'querypage-disabled' => 'Ova posebna stranica onemogućena je jer bi usporila funkcioniranje projekta.',
# Book sources
'booksources' => 'Pretraživanje po ISBN-u',
@@ -2078,6 +2135,10 @@ E-mail adresa iz Vaših [[Special:Preferences|postavki]] nalazit će se u "From"
'noemailtext' => 'Ovaj suradnik nije odredio valjanu e-mail adresu.',
'nowikiemailtitle' => 'E-mail nije dozvoljen',
'nowikiemailtext' => 'Ovaj suradnik je odluÄio ne primati e-mail od drugih suradnika.',
+'emailnotarget' => 'Nepostojeće ili nevažeće suradniÄko ime za primatelja.',
+'emailtarget' => 'Unesite suradniÄko ime primatelja',
+'emailusername' => 'SuradniÄko ime:',
+'emailusernamesubmit' => 'Pošalji',
'email-legend' => 'PoÅ¡alji elektroniÄku poÅ¡tu drugom suradniku projekta {{SITENAME}}',
'emailfrom' => 'Od:',
'emailto' => 'Za:',
@@ -2103,10 +2164,10 @@ E-mail adresa iz Vaših [[Special:Preferences|postavki]] nalazit će se u "From"
'watchnologin' => 'Niste prijavljeni',
'watchnologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]]
za promjene u popisu praćenja.',
-'addedwatch' => 'Dodano u popis praćenja',
+'addwatch' => 'Dodaj u popis praćenja',
'addedwatchtext' => "Stranica \"[[:\$1]]\" je dodana na Vaš [[Special:Watchlist|popis praćenja]].
Promjene na toj stranici i njenoj stranici za razgovor bit će prikazane na popisu praćenja, a stranica će biti ispisana '''podebljano''' u [[Special:RecentChanges|popisu nedavnih promjena]] kako biste je lakše primijetili. Ako poželite ukloniti stranicu s popisa praćenja, pritisnite \"Prekini praćenje\" u traci s naredbama.",
-'removedwatch' => 'Uklonjeno s popisa praćenja',
+'removewatch' => 'Ukloni s popisa praćenja',
'removedwatchtext' => 'Stranica "[[:$1]]" je uklonjena s [[Special:Watchlist|Vašeg popisa praćenja]].',
'watch' => 'Prati',
'watchthispage' => 'Prati ovu stranicu',
@@ -2127,8 +2188,9 @@ Promjene na toj stranici i njenoj stranici za razgovor bit će prikazane na popi
'watchlist-options' => 'Izbornik popisa praćenja',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Pratim...',
-'unwatching' => 'Prestajem pratiti...',
+'watching' => 'Pratim...',
+'unwatching' => 'Prestajem pratiti...',
+'watcherrortext' => 'Došlo je do pogreške kod izmjene Vašeg popisa praćenja za "$1".',
'enotif_mailer' => '{{SITENAME}} - izvješća o promjenama',
'enotif_reset' => 'OznaÄi sve stranice kao već posjećene',
@@ -2159,13 +2221,13 @@ Postavke za izvješćivanje možete resetirati za sve praćene stranice svog pop
--
Za promjene svog popisa praćenja, posjetite
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Za brisanje stranica iz svog popisa praćenja, posjetite
$UNWATCHURL
Za povratne informacije i pomoć posjetite:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Izbriši stranicu',
@@ -2181,7 +2243,7 @@ Za povratne informacije i pomoć posjetite:
Molim potvrdite svoju namjeru, da razumijete posljedice i da ovo radite u skladu s [[{{MediaWiki:Policy-url}}|pravilima]].',
'actioncomplete' => 'Zahvat završen',
'actionfailed' => 'Radnja nije uspjela',
-'deletedtext' => '"<nowiki>$1</nowiki>" je izbrisana.
+'deletedtext' => '"$1" je izbrisana.
Vidi $2 za evidenciju nedavnih brisanja.',
'deletedarticle' => 'izbrisano "$1"',
'suppressedarticle' => 'sakriven "[[$1]]"',
@@ -2235,7 +2297,7 @@ Pogledajte [[Special:ProtectedPages|zaÅ¡tićene stranice]] za popis trenutaÄno
'protect_expiry_invalid' => 'Upisani vremenski rok nije valjan.',
'protect_expiry_old' => 'Vrijeme isteka je u prošlosti.',
'protect-unchain-permissions' => 'OtkljuÄaj daljnje mogućnosti zaÅ¡tićivanja',
-'protect-text' => "Ovdje možete pregledati i promijeniti razinu zaštite za stranicu '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Ovdje možete pregledati i promijeniti razinu zaštite za stranicu '''$1'''.",
'protect-locked-blocked' => "Ne možete mijenjati nivo zaštite dok ste blokirani.
Slijede postavke stranice '''$1''':",
'protect-locked-dblock' => "Razina zaÅ¡tite ne može biti promijenjena jer je baza zakljuÄana.
@@ -2332,9 +2394,10 @@ $1',
'undelete-show-file-submit' => 'Da',
# Namespace form on various pages
-'namespace' => 'Imenski prostor:',
-'invert' => 'Sve osim odabranog',
-'blanknamespace' => '(Glavni)',
+'namespace' => 'Imenski prostor:',
+'invert' => 'Sve osim odabranog',
+'namespace_association' => 'Povezani imenski prostor',
+'blanknamespace' => '(Glavni)',
# Contributions
'contributions' => 'Doprinosi suradnika',
@@ -2351,7 +2414,7 @@ $1',
'sp-contributions-newbies-title' => 'Doprinosi novih suradnika',
'sp-contributions-blocklog' => 'Evidencija blokiranja',
'sp-contributions-deleted' => 'obrisani suradniÄki doprinosi',
-'sp-contributions-uploads' => "snimljene datoteke (''uploads'')",
+'sp-contributions-uploads' => 'postavljene datoteke',
'sp-contributions-logs' => 'evidencije',
'sp-contributions-talk' => 'razgovor',
'sp-contributions-userrights' => 'upravljanje suradniÄkim pravima',
@@ -2383,6 +2446,9 @@ Posljednja stavka evidencije blokiranja navedena je niže kao napomena:',
'whatlinkshere-filters' => 'Filteri',
# Block/unblock
+'autoblockid' => 'Automatsko blokiranje #$1',
+'block' => 'Blokiraj suradnika',
+'unblock' => 'Deblokiraj suradnika',
'blockip' => 'Blokiraj suradnika',
'blockip-title' => 'Blokiraj suradnika',
'blockip-legend' => 'Blokiraj suradnika',
@@ -2391,7 +2457,6 @@ To biste trebali raditi samo zbog sprjeÄavanja vandalizma i u skladu
sa [[{{MediaWiki:Policy-url}}|smjernicama]].
Upišite i razlog za ovo blokiranje (npr. stranice koje su
vandalizirane).',
-'ipaddress' => 'IP adresa',
'ipadressorusername' => 'IP adresa ili suradniÄko ime',
'ipbexpiry' => 'Rok (na engleskom)',
'ipbreason' => 'Razlog:',
@@ -2404,7 +2469,7 @@ vandalizirane).',
** Osobni napadi (ili napadaÄko ponaÅ¡anje)
** ÄŒarapare (zloporaba viÅ¡e suradniÄkih raÄuna)
** Neprihvatljivo suradniÄko ime",
-'ipbanononly' => 'Blokiraj samo neprijavljene suradnike',
+'ipb-hardblock' => 'Onemogući prijavljene suradnike uređivati s ove IP adrese',
'ipbcreateaccount' => 'SprijeÄi otvaranje suradniÄkih raÄuna',
'ipbemailban' => 'Onemogući blokiranom suradniku slanje e-mailova',
'ipbenableautoblock' => 'Automatski blokiraj IP adrese koje koristi ovaj suradnik',
@@ -2415,12 +2480,15 @@ vandalizirane).',
'ipbotherreason' => 'Drugi/dodatni razlog:',
'ipbhidename' => 'Sakrij suradniÄko ime iz ureÄ‘ivanja i popisa',
'ipbwatchuser' => 'Prati suradniÄku stranicu i stranicu za razgovor ovog suradnika',
-'ipballowusertalk' => 'Omogući suradniku uređivanje vlastite stranice za razgovor',
+'ipb-disableusertalk' => 'Onemogući ovog suradnika da uređuje svoju stranicu za razgovor dok je blokiran',
'ipb-change-block' => 'Ponovno blokiraj suradnika s ovim postavkama',
+'ipb-confirm' => 'Potvrdi blokiranje',
'badipaddress' => 'Nevaljana IP adresa.',
'blockipsuccesssub' => 'Uspješno blokirano',
'blockipsuccesstext' => 'Suradnik [[Special:Contributions/$1|$1]] je blokiran.<br />
Pogledaj [[Special:IPBlockList|popis blokiranih IP adresa]] za pregled.',
+'ipb-blockingself' => 'Blokirat ćete se! Jeste li sigurni da to želite?',
+'ipb-confirmhideuser' => 'Upravo ćete blokirati suradnika koji ima mogućnost "sakrij suradnika" omogućenu. To će sakriti suradniÄko ime na svim popisima i evidencijama. Jeste li sigurni da želite to uÄiniti?',
'ipb-edit-dropdown' => 'Uredi razloge blokiranja',
'ipb-unblock-addr' => 'Odblokiraj $1',
'ipb-unblock' => 'Odblokiraj suradniÄko ime ili IP adresu',
@@ -2430,17 +2498,23 @@ Pogledaj [[Special:IPBlockList|popis blokiranih IP adresa]] za pregled.',
'unblockiptext' => 'Ovaj se obrazac koristi za vraćanje prava na pisanje prethodno blokiranoj IP adresi.',
'ipusubmit' => 'Ukloni ovaj blok',
'unblocked' => '[[User:$1|$1]] je deblokiran',
+'unblocked-range' => '$1 je deblokiran',
'unblocked-id' => 'Blok $1 je uklonjen',
+'blocklist' => 'Blokirani suradnici',
'ipblocklist' => 'Blokirani suradnici',
'ipblocklist-legend' => 'Pronađi blokiranog suradnika',
-'ipblocklist-username' => 'Ime suradnika ili IP adresa:',
-'ipblocklist-sh-userblocks' => '$1 blokirane raÄune',
-'ipblocklist-sh-tempblocks' => '$1 privremena blokiranja',
-'ipblocklist-sh-addressblocks' => '$1 blokirane IP-eve',
+'blocklist-userblocks' => 'Sakrij blokiranja raÄuna',
+'blocklist-tempblocks' => 'Sakrij privremena blokiranja',
+'blocklist-addressblocks' => 'Sakrij pojedinaÄna IP blokiranja',
+'blocklist-timestamp' => 'Vremenska oznaka',
+'blocklist-target' => 'Cilj',
+'blocklist-expiry' => 'IstjeÄe',
+'blocklist-by' => 'Administrator koji je blokirao',
+'blocklist-params' => 'Parametri blokiranja',
+'blocklist-reason' => 'Razlog',
'ipblocklist-submit' => 'Traži',
'ipblocklist-localblock' => 'Lokalno blokiranje',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Ostalo blokiranje|Ostala blokiranja}}',
-'blocklistline' => '$1, $2 je blokirao $3 ($4)',
'infiniteblock' => 'neograniÄeno',
'expiringblock' => 'istjeÄe $1 u $2',
'anononlyblock' => 'samo IP adrese',
@@ -2462,7 +2536,7 @@ Evidencija blokiranja je prikazan ispod kao napomena:',
Zapisnik skrivanja je prikazan ispod kao napomena:',
'blocklogentry' => 'Blokiran je "[[$1]]" na rok $2 $3',
'reblock-logentry' => 'promijenjene postavke blokiranja za [[$1]] na rok od $2 $3',
-'blocklogtext' => 'Ovo je evidencija blokiranja i deblokiranja. Na popisu nema automatski blokiranih IP adresa. Za popis trenutaÄnih zabrana i blokiranja vidi [[Special:IPBlockList|popis IP blokiranja]].',
+'blocklogtext' => 'Ovo je evidencija blokiranja i deblokiranja. Na popisu nema automatski blokiranih IP adresa. Za popis trenutaÄnih zabrana i blokiranja vidi [[Special:BlockList|popis IP blokiranja]].',
'unblocklogentry' => 'Deblokiran "$1"',
'block-log-flags-anononly' => 'samo za neprijavljene suradnike',
'block-log-flags-nocreate' => 'otvaranje novih suradniÄkih imena nije moguće',
@@ -2476,9 +2550,9 @@ Zapisnik skrivanja je prikazan ispod kao napomena:',
'ipb_expiry_temp' => 'Sakriveni raÄuni bi trebali biti trajno blokirani.',
'ipb_hide_invalid' => 'Ne može se sakriti ovaj raÄun, možda ima previÅ¡e ureÄ‘ivanja.',
'ipb_already_blocked' => '"$1" je već blokiran',
-'ipb-needreblock' => '== Već blokiran ==
-$1 je već blokiran. Želite promijeniti postavke blokiranja?',
+'ipb-needreblock' => '$1 je već blokiran. Želite promijeniti postavke blokiranja?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Ostalo blokiranje|Ostala blokiranja}}',
+'unblock-hideuser' => 'Ne možete deblokirati ovog suradnika, jer je njegovo suradniÄko ime skriveno.',
'ipb_cant_unblock' => 'Pogreška: blok ID $1 nije nađen. Moguće je da je suradnik već odblokiran.',
'ipb_blocked_as_range' => 'Pogreška: IP adresa $1 nije blokirana direktno te stoga ne može biti odblokirana. Blokirana je kao dio opsega $2, koji može biti odblokiran.',
'ip_range_invalid' => 'Raspon IP adresa nije valjan.',
@@ -2635,7 +2709,7 @@ U potonjem sluÄaju možete koristiti i poveznicu, npr. [[{{#Special:Export}}/{{
'allmessagesname' => 'Ime',
'allmessagesdefault' => 'Prvotni tekst',
'allmessagescurrent' => 'TrenutaÄni tekst',
-'allmessagestext' => 'Ovo je popis svih sistemskih poruka u imenskom prostoru MediaWiki. Molimo posjetite [http://www.mediawiki.org/wiki/Localisation lokalizaciju MediaWikija] i [http://translatewiki.net translatewiki.net] ako želite doprinijeti lokalizaciji MediaWiki softvera.',
+'allmessagestext' => 'Ovo je popis svih sistemskih poruka u imenskom prostoru MediaWiki. Molimo posjetite [//www.mediawiki.org/wiki/Localisation lokalizaciju MediaWikija] i [//translatewiki.net translatewiki.net] ako želite doprinijeti lokalizaciji MediaWiki softvera.',
'allmessagesnotsupportedDB' => "Ova stranica ne može biti koriÅ¡tena jer je iskljuÄen parametar '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'Filtriraj',
'allmessages-filter' => 'Filtriraj prema prilagođenom obliku:',
@@ -2781,9 +2855,7 @@ Snimite je na svoje raÄunalo i postavite je ovdje.',
'monobook.js' => '/* Ne rabi se više; molimo rabite [[MediaWiki:common.js]] */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metapodaci su iskljuÄeni na ovom serveru.',
-'nocreativecommons' => 'Creative Commons RDF metapodaci su iskljuÄeni na ovom serveru.',
-'notacceptable' => 'Wiki server ne može dobaviti podatke u obliku kojega VaÅ¡ preglednik može proÄitati.',
+'notacceptable' => 'Wiki server ne može dobaviti podatke u obliku kojega VaÅ¡ preglednik može proÄitati.',
# Attribution
'anonymous' => 'Neprijavljeni {{PLURAL:$1|suradnik|suradnici}} projekta {{SITENAME}}',
@@ -2806,14 +2878,6 @@ Razlog je vjerojatno vanjska poveznica koja se nalazi na crnom popisu.',
'spam_reverting' => 'Vraćam na zadnju inaÄicu koja ne sadrži poveznice na $1',
'spam_blanking' => 'Sve inaÄice sadrže poveznice na $1, briÅ¡em cjelokupni sadržaj',
-# Info page
-'infosubtitle' => 'Podaci o stranici',
-'numedits' => 'Broj promjena (Älanak): $1',
-'numtalkedits' => 'Broj promjena (stranica za razgovor): $1',
-'numwatchers' => 'Broj pratitelja: $1',
-'numauthors' => 'Broj autora (Älanak): $1',
-'numtalkauthors' => 'Broj autora (stranica za razgovor): $1',
-
# Skin names
'skinname-standard' => 'Standardna',
'skinname-nostalgia' => 'Nostalgija',
@@ -2822,25 +2886,6 @@ Razlog je vjerojatno vanjska poveznica koja se nalazi na crnom popisu.',
'skinname-myskin' => 'MySkin',
'skinname-chick' => 'Chick',
-# Math options
-'mw_math_png' => 'Uvijek kao PNG',
-'mw_math_simple' => 'Ako je vrlo jednostavno HTML, inaÄe PNG',
-'mw_math_html' => 'Ako je moguće HTML, inaÄe PNG',
-'mw_math_source' => 'Ostavi u formatu TeX (za tekstualne preglednike)',
-'mw_math_modern' => 'PreporuÄeno za danaÅ¡nje preglednike',
-'mw_math_mathml' => 'Ako je moguće MathML (u pokusnoj fazi)',
-
-# Math errors
-'math_failure' => 'Obrada nije uspjela.',
-'math_unknown_error' => 'nepoznata pogreška',
-'math_unknown_function' => 'nepoznata funkcija',
-'math_lexing_error' => 'rjeÄniÄka pogreÅ¡ka (lexing error)',
-'math_syntax_error' => 'sintaksna pogreška',
-'math_image_error' => 'Pretvorba u PNG nije uspjela; provjerite jesu li dobro instalirani latex, dvips, gs, i convert',
-'math_bad_tmpdir' => 'Ne mogu otvoriti ili pisati u privremeni direktorij za matematiku',
-'math_bad_output' => 'Ne mogu otvoriti ili pisati u odredišni direktorij za matematiku',
-'math_notexvc' => 'Nedostaje izvršna datoteka texvc-a; pogledajte math/README za postavke.',
-
# Patrolling
'markaspatrolleddiff' => 'OznaÄi za pregledano',
'markaspatrolledtext' => 'OznaÄi ovaj Älanak pregledanim',
@@ -2876,22 +2921,24 @@ $1',
'nextdiff' => 'Novija izmjena →',
# Media information
-'mediawarning' => "'''Upozorenje''': Ova datoteka možda sadrži štetan kod.
+'mediawarning' => "'''Upozorenje''': Ova datoteka možda sadrži štetan kod.
Njegovim izvršavanjem mogli biste oštetiti svoj sustav.",
-'imagemaxsize' => "OgraniÄi veliÄinu slike:<br />''(za stranicu s opisom datoteke)''",
-'thumbsize' => 'VeliÄina sliÄice (umanjene inaÄice slike):',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stranica|stranice}}',
-'file-info' => 'veliÄina datoteke: $1, MIME tip: $2',
-'file-info-size' => '$1 × $2 piksela, veliÄina datoteke: $3, MIME tip: $4',
-'file-nohires' => '<small>Viša rezolucija nije dostupna.</small>',
-'svg-long-desc' => 'SVG datoteka, nominalno $1 × $2 piksela, veliÄina datoteke: $3',
-'show-big-image' => 'Vidi sliku u punoj veliÄini (rezoluciji)',
-'show-big-image-thumb' => '<small>VeliÄina pretpregleda: $1 × $2 piksela</small>',
-'file-info-gif-looped' => 'animacija se ponavlja',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|okvir|okvira}}',
-'file-info-png-looped' => 'animacija se ponavlja',
-'file-info-png-repeat' => 'prikazano $1 {{PLURAL:$1|puta|puta|puta}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|okvir|okvira}}',
+'imagemaxsize' => "OgraniÄi veliÄinu slike:<br />''(za stranicu s opisom datoteke)''",
+'thumbsize' => 'VeliÄina sliÄice (umanjene inaÄice slike):',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stranica|stranice}}',
+'file-info' => 'veliÄina datoteke: $1, MIME tip: $2',
+'file-info-size' => '$1 × $2 piksela, veliÄina datoteke: $3, MIME tip: $4',
+'file-nohires' => '<small>Viša rezolucija nije dostupna.</small>',
+'svg-long-desc' => 'SVG datoteka, nominalno $1 × $2 piksela, veliÄina datoteke: $3',
+'show-big-image' => 'Vidi sliku u punoj veliÄini (rezoluciji)',
+'show-big-image-preview' => '<small>VeliÄina ovog prikaza: $1.</small>',
+'show-big-image-other' => '<small>Ostale rezolucije: $1.</small>',
+'show-big-image-size' => '$1 × $2 piksela',
+'file-info-gif-looped' => 'animacija se ponavlja',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|okvir|okvira}}',
+'file-info-png-looped' => 'animacija se ponavlja',
+'file-info-png-repeat' => 'prikazano $1 {{PLURAL:$1|puta|puta|puta}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|okvir|okvira}}',
# Special:NewFiles
'newimages' => 'Galerija novih datoteka',
@@ -2920,14 +2967,20 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
'metadata-help' => 'Ova datoteka sadržava dodatne podatke koje je vjerojatno dodala digitalna kamera ili skener u procesu snimanja odnosno digitalizacije. Ako je datoteka mijenjana, podatci možda nisu u skladu sa stvarnim stanjem.',
'metadata-expand' => 'Pokaži sve podatke',
'metadata-collapse' => 'Sakrij dodatne podatke',
-'metadata-fields' => "Slijedeći EXIF metapodaci će biti prikazani ispod slike u tablici s metapodacima. Ostali će biti sakriveni (možete ih vidjeti ako kliknete na poveznicu ''Pokaži sve podatke'').
+'metadata-fields' => 'EXIF polja metapodataka pobrojana u ovoj poruci bit će prikazani na stranici s prikazom slike kada je tablica s metapodacima sakrivena. Ostali će biti uobiÄajeno sakriveni.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Å irina',
@@ -2942,13 +2995,11 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
'exif-ycbcrpositioning' => 'Razmještaj komponenata Y i C',
'exif-xresolution' => 'Vodoravna razluÄivost',
'exif-yresolution' => 'Okomita razluÄivost',
-'exif-resolutionunit' => 'Jedinica razluÄivosti',
'exif-stripoffsets' => 'Položaj bloka podataka',
'exif-rowsperstrip' => 'Broj redova u bloku',
'exif-stripbytecounts' => 'VeliÄina komprimiranog bloka',
'exif-jpeginterchangeformat' => 'Udaljenost JPEG previewa od poÄetka datoteke',
'exif-jpeginterchangeformatlength' => 'KoliÄina bajtova JPEG previewa',
-'exif-transferfunction' => 'Funkcija preoblikovanja kolor prostora',
'exif-whitepoint' => 'Kromaticitet bijele toÄke',
'exif-primarychromaticities' => 'Kromaticitet primarnih boja',
'exif-ycbcrcoefficients' => 'MatriÄni koeficijenti preobrazbe kolor prostora',
@@ -2967,7 +3018,6 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
'exif-compressedbitsperpixel' => 'Dubina boje poslije sažimanja',
'exif-pixelydimension' => 'Važeća širina slike',
'exif-pixelxdimension' => 'Važeća visina slike',
-'exif-makernote' => 'Napomene proizvoÄ‘aÄa',
'exif-usercomment' => 'SuradniÄki komentar',
'exif-relatedsoundfile' => 'Povezani zvuÄni zapis',
'exif-datetimeoriginal' => 'Datum i vrijeme slikanja',
@@ -2981,7 +3031,6 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
'exif-exposureprogram' => 'Program ekspozicije',
'exif-spectralsensitivity' => 'Spektralna osjetljivost',
'exif-isospeedratings' => 'ISO vrijednost',
-'exif-oecf' => 'Optoelektronski faktor konverzije',
'exif-shutterspeedvalue' => 'Brzina zatvaraÄa',
'exif-aperturevalue' => 'Otvor',
'exif-brightnessvalue' => 'Osvijetljenost',
@@ -2994,7 +3043,6 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
'exif-focallength' => 'Žarišna duljina leće',
'exif-subjectarea' => 'Položaj i površina objekta snimke',
'exif-flashenergy' => 'Energija bljeskalice',
-'exif-spatialfrequencyresponse' => 'Prostorna frekvencijska karakteristika',
'exif-focalplanexresolution' => 'Vodoravna razluÄivost žariÅ¡ne ravnine',
'exif-focalplaneyresolution' => 'Okomita razluÄivost žariÅ¡ne ravnine',
'exif-focalplaneresolutionunit' => 'Jedinica razluÄivosti žariÅ¡ne ravnine',
@@ -3003,7 +3051,6 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
'exif-sensingmethod' => 'Tip senzora',
'exif-filesource' => 'Izvorna datoteka',
'exif-scenetype' => 'Tip scene',
-'exif-cfapattern' => 'Tip kolor filtera',
'exif-customrendered' => 'Dodatna obrada slike',
'exif-exposuremode' => 'Režim izbora ekspozicije',
'exif-whitebalance' => 'Balans bijele',
@@ -3048,11 +3095,77 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
'exif-gpsareainformation' => 'Ime GPS podruÄja',
'exif-gpsdatestamp' => 'GPS datum',
'exif-gpsdifferential' => 'GPS diferencijalna korekcija',
+'exif-jpegfilecomment' => 'JPEG komentar datoteke',
+'exif-keywords' => 'KljuÄne rijeÄi',
+'exif-worldregioncreated' => 'Regija svijeta u kojoj je slika snimljena',
+'exif-countrycreated' => 'Zemlja u kojoj je slika snimljena',
+'exif-countrycodecreated' => 'Kôd za zemlju u kojoj je slika snimljena',
+'exif-provinceorstatecreated' => 'Provincija ili država u kojoj je slika snimljena',
+'exif-citycreated' => 'Grad u kojem je slika snimljena',
+'exif-sublocationcreated' => 'Podlokacija grada gdje je slika snimljena',
+'exif-worldregiondest' => 'Prikazana regija svijeta',
+'exif-countrydest' => 'Prikazana zemlja',
+'exif-countrycodedest' => 'Kôd za prikazanu zemlju',
+'exif-provinceorstatedest' => 'Prikazana provincija ili država',
+'exif-citydest' => 'Prikazani grad',
+'exif-sublocationdest' => 'Prikazana podlokacija grada',
'exif-objectname' => 'Kratki naslov',
+'exif-specialinstructions' => 'Posebne upute',
+'exif-headline' => 'Naslov',
+'exif-credit' => 'Pripisivanje/Pružatelj',
+'exif-source' => 'Izvor',
+'exif-editstatus' => 'UredniÄki status slike',
+'exif-urgency' => 'Žurnost',
+'exif-fixtureidentifier' => 'Naziv rubrike',
+'exif-locationdest' => 'Prikazana lokacija',
+'exif-locationdestcode' => 'Kôd prikazane lokacije',
+'exif-objectcycle' => 'Doba dana za koji je medij namijenjen',
+'exif-contact' => 'Podaci za kontakt',
+'exif-writer' => 'Pisac',
+'exif-languagecode' => 'Jezik',
+'exif-iimversion' => 'IIM inaÄica',
+'exif-iimcategory' => 'Kategorija',
+'exif-iimsupplementalcategory' => 'Dopunske kategorije',
+'exif-datetimeexpires' => 'Nemojte rabiti nakon',
+'exif-datetimereleased' => 'Objavljeno',
+'exif-originaltransmissionref' => 'Izvorni prijenos kôda lokacije',
+'exif-identifier' => 'Oznaka',
+'exif-lens' => 'Korišteni objektiv',
+'exif-serialnumber' => 'Serijski broj kamere',
+'exif-cameraownername' => 'Vlasnik kamere',
+'exif-label' => 'Oznaka',
+'exif-datetimemetadata' => 'Datum zadnje promjene metapodataka',
+'exif-nickname' => 'Neformalni naziv slike',
+'exif-rating' => 'Ocjena (od 5)',
+'exif-rightscertificate' => 'Certifikat za upravljanje pravima',
+'exif-copyrighted' => 'Status autorskog prava',
+'exif-copyrightowner' => 'Nositelj autorskog prava',
+'exif-usageterms' => 'Uporaba pojmova',
+'exif-webstatement' => 'Online izjava o autorskom pravu',
+'exif-originaldocumentid' => 'Jedinstveni ID izvornog dokumenta',
+'exif-licenseurl' => 'URL za licenciju o autorskom pravu',
+'exif-morepermissionsurl' => 'Informacije o alternativnom licenciranju',
+'exif-attributionurl' => 'Kada ponovno rabite ovo djelo, molim povežite ga s',
+'exif-preferredattributionname' => 'Kada ponovno rabite ovo djelo, molim naslovite ga',
+'exif-pngfilecomment' => 'PNG komentar datoteke',
+'exif-disclaimer' => 'Odricanje od odgovornosti',
+'exif-contentwarning' => 'Upozorenje o sadržaju',
+'exif-giffilecomment' => 'GIF komentar datoteke',
+'exif-intellectualgenre' => 'Vrsta stavke',
+'exif-subjectnewscode' => 'Kôd predmeta',
+'exif-scenecode' => 'IPTC kôd scene',
+'exif-event' => 'Prikazani događaj',
+'exif-organisationinimage' => 'Prikazana organizacija',
+'exif-personinimage' => 'Prikazana osoba',
+'exif-originalimageheight' => 'Visina slike prije nego Å¡to je obrezana',
+'exif-originalimagewidth' => 'Å irina slike prije nego Å¡to je obrezana',
# EXIF attributes
'exif-compression-1' => 'Nesažeto',
+'exif-copyrighted-true' => 'Zaštićeno autorskim pravom',
+'exif-copyrighted-false' => 'Javno dobro',
+
'exif-unknowndate' => 'Datum nepoznat',
'exif-orientation-1' => 'Normalno',
@@ -3067,6 +3180,8 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
'exif-planarconfiguration-1' => 'zrnasti format',
'exif-planarconfiguration-2' => 'planarni format',
+'exif-colorspace-65535' => 'Nekalibrirano',
+
'exif-componentsconfiguration-0' => 'ne postoji',
'exif-exposureprogram-0' => 'Nepoznato',
@@ -3180,6 +3295,10 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
'exif-gpslongitude-e' => 'Istok',
'exif-gpslongitude-w' => 'Zapad',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metar|metra|metara}} nadmorske visine',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metar|metra|metara}} ispod razine mora',
+
'exif-gpsstatus-a' => 'Mjerenje u tijeku',
'exif-gpsstatus-v' => 'Spreman za prijenos',
@@ -3191,21 +3310,73 @@ Svaka sljedeća poveznica u istom retku je izuzetak, npr. kod stranica gdje se s
'exif-gpsspeed-m' => 'mph',
'exif-gpsspeed-n' => 'Äv',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometara',
+'exif-gpsdestdistance-m' => 'Milja',
+'exif-gpsdestdistance-n' => 'NautiÄkih milja',
+
+'exif-gpsdop-excellent' => 'OdliÄno ($1)',
+'exif-gpsdop-good' => 'Dobro ($1)',
+'exif-gpsdop-moderate' => 'Umjereno ($1)',
+'exif-gpsdop-fair' => 'U redu ($1)',
+'exif-gpsdop-poor' => 'Loše ($1)',
+
+'exif-objectcycle-a' => 'Samo jutro',
+'exif-objectcycle-p' => 'Samo veÄer',
+'exif-objectcycle-b' => 'Oba jutro i veÄer',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Pravi sjever',
'exif-gpsdirection-m' => 'Magnetni sjever',
+'exif-ycbcrpositioning-1' => 'Centrirano',
+'exif-ycbcrpositioning-2' => 'Susmještene',
+
+'exif-dc-contributor' => 'Doprinositelji',
+'exif-dc-coverage' => 'Prostorni i vremenski opseg medija',
+'exif-dc-date' => 'Datum(i)',
+'exif-dc-publisher' => 'IzdavaÄ',
+'exif-dc-relation' => 'Povezani mediji',
+'exif-dc-rights' => 'Prava',
+'exif-dc-source' => 'Izvor medija',
+'exif-dc-type' => 'Vrsta medija',
+
+'exif-rating-rejected' => 'Odbijeno',
+
+'exif-isospeedratings-overflow' => 'Veći od 65535',
+
+'exif-iimcategory-ace' => 'Umjetnost, kultura i zabava',
+'exif-iimcategory-clj' => 'Kriminal i zakon',
+'exif-iimcategory-dis' => 'Katastrofe i nesreće',
+'exif-iimcategory-fin' => 'Gospodarstvo i poslovanje',
+'exif-iimcategory-edu' => 'Obrazovanje',
+'exif-iimcategory-evn' => 'Okoliš',
+'exif-iimcategory-hth' => 'Zdravlje',
+'exif-iimcategory-hum' => 'ÄŒovjekov interes',
+'exif-iimcategory-lab' => 'Rad',
+'exif-iimcategory-lif' => 'Životni stil i slobodno vrijeme',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Religija i vjerovanje',
+'exif-iimcategory-sci' => 'Znanost i tehnologija',
+'exif-iimcategory-soi' => 'Socijalna pitanja',
+'exif-iimcategory-spo' => 'Å port',
+'exif-iimcategory-war' => 'Rat, sukob i nemiri',
+'exif-iimcategory-wea' => 'Vrijeme',
+
+'exif-urgency-normal' => 'Normalno ($1)',
+'exif-urgency-low' => 'Nisko ( $1 )',
+'exif-urgency-high' => 'Visoko ($1)',
+'exif-urgency-other' => 'SuradniÄki definiran prioritet ($1)',
+
# External editor support
'edit-externally' => 'Uredi koristeći se vanjskom aplikacijom',
-'edit-externally-help' => '(Vidi [http://www.mediawiki.org/wiki/Manual:External_editors setup upute] za više informacija)',
+'edit-externally-help' => '(Vidi [//www.mediawiki.org/wiki/Manual:External_editors setup upute] za više informacija)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'sve',
-'imagelistall' => 'sve',
-'watchlistall2' => 'sve',
-'namespacesall' => 'sve',
-'monthsall' => 'sve',
-'limitall' => 'sve',
+'watchlistall2' => 'sve',
+'namespacesall' => 'sve',
+'monthsall' => 'sve',
+'limitall' => 'sve',
# E-mail address confirmation
'confirmemail' => 'Potvrda e-mail adrese',
@@ -3285,11 +3456,12 @@ $1",
'trackbackdeleteok' => 'Trackback izbrisan.',
# Delete conflict
-'deletedwhileediting' => "'''Upozorenje''': Ova stranica je obrisana nakon Å¡to ste poÄeli ureÄ‘ivati!",
-'confirmrecreate' => "Suradnik [[User:$1|$1]] ([[User talk:$1|talk]]) izbrisao je ovaj Älanak nakon Å¡to ste ga poÄeli ureÄ‘ivati. Razlog brisanja
+'deletedwhileediting' => "'''Upozorenje''': Ova stranica je obrisana nakon Å¡to ste poÄeli ureÄ‘ivati!",
+'confirmrecreate' => "Suradnik [[User:$1|$1]] ([[User talk:$1|talk]]) izbrisao je ovaj Älanak nakon Å¡to ste ga poÄeli ureÄ‘ivati. Razlog brisanja
: ''$2''
Potvrdite namjeru vraćanja ovog Älanka.",
-'recreate' => 'Vrati',
+'confirmrecreate-noreason' => 'Suradnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovaj Älanak nakon Å¡to ste ga poÄeli ureÄ‘ivati. Molimo potvrdite da stvarno želite ponovo zapoÄeti ovaj Älanak.',
+'recreate' => 'Vrati',
# action=purge
'confirm_purge_button' => 'U redu',
@@ -3337,14 +3509,14 @@ Potvrdite namjeru vraćanja ovog Älanka.",
'watchlistedit-normal-legend' => 'Ukloni stranice iz popisa praćenja',
'watchlistedit-normal-explain' => 'Prikazane su stranice na Vašem popisu praćenja.
Da uklonite stranicu s popisa praćenja, oznaÄite kućicu kraj nje i kliknite gumb "{{int:Watchlistedit-normal-submit}}".
-Možete također [[Special:Watchlist/raw|uređivati ovaj popis u okviru za uređivanje]].',
+Možete također [[Special:EditWatchlist/raw|uređivati ovaj popis u okviru za uređivanje]].',
'watchlistedit-normal-submit' => 'Ukloni stranice',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 stranica je uklonjena|$1 stranice su uklonjene|$1 stranica je uklonjeno}} iz Vašeg popisa praćenja:',
'watchlistedit-raw-title' => 'Uredi praćene stranice u okviru za uređivanje',
'watchlistedit-raw-legend' => 'Uredi praćene stranice',
'watchlistedit-raw-explain' => 'Stranice na Vašem popisu praćenja su prikazane ispod, možete uređivati taj popis dodavanjem novih stranica ili brisanjem postojećih; u jednom retku je ime jedne stranice.
Kad završite s uređivanjem, kliknite na "{{int:Watchlistedit-raw-submit}}".
-Također možete koristiti [[Special:Watchlist/edit|standardni editor]].',
+Također možete koristiti [[Special:EditWatchlist|standardni editor]].',
'watchlistedit-raw-titles' => 'Imena stranica:',
'watchlistedit-raw-submit' => 'Snimi promjene',
'watchlistedit-raw-done' => 'Vaš popis praćenja je snimljen.',
@@ -3356,38 +3528,82 @@ Također možete koristiti [[Special:Watchlist/edit|standardni editor]].',
'watchlisttools-edit' => 'Pregled i uređivanje praćenih stranica',
'watchlisttools-raw' => 'Uređivanje praćenih stranica u okviru za uređivanje',
+# Hijri month names
+'hijri-calendar-m1' => 'muhàrem',
+'hijri-calendar-m2' => 'sàfer',
+'hijri-calendar-m3' => 'rebiulèvel',
+'hijri-calendar-m4' => 'rebiuláhir',
+'hijri-calendar-m5' => 'džumadelula',
+'hijri-calendar-m6' => 'džumadelahire',
+'hijri-calendar-m7' => 'rèdžeb',
+'hijri-calendar-m8' => 'šàbÄn',
+'hijri-calendar-m9' => 'ramàzÄn',
+'hijri-calendar-m10' => 'šèvÄl',
+'hijri-calendar-m11' => 'zulkáde',
+'hijri-calendar-m12' => 'zulhidže',
+
+# Hebrew month names
+'hebrew-calendar-m1' => 'tišri',
+'hebrew-calendar-m2' => 'hešvan',
+'hebrew-calendar-m3' => 'kislev',
+'hebrew-calendar-m4' => 'tevet',
+'hebrew-calendar-m5' => 'Å¡evat',
+'hebrew-calendar-m6' => 'adar',
+'hebrew-calendar-m6a' => 'adar I.',
+'hebrew-calendar-m6b' => 'adar II.',
+'hebrew-calendar-m7' => 'nisan',
+'hebrew-calendar-m8' => 'ijar',
+'hebrew-calendar-m9' => 'sivan',
+'hebrew-calendar-m10' => 'tamuz',
+'hebrew-calendar-m11' => 'av',
+'hebrew-calendar-m12' => 'elul',
+'hebrew-calendar-m1-gen' => 'tišrija',
+'hebrew-calendar-m2-gen' => 'hešvana',
+'hebrew-calendar-m3-gen' => 'kisleva',
+'hebrew-calendar-m4-gen' => 'teveta',
+'hebrew-calendar-m5-gen' => 'Å¡evata',
+'hebrew-calendar-m6-gen' => 'adara',
+'hebrew-calendar-m6a-gen' => 'adara I.',
+'hebrew-calendar-m6b-gen' => 'adara II.',
+'hebrew-calendar-m7-gen' => 'nisana',
+'hebrew-calendar-m8-gen' => 'ijara',
+'hebrew-calendar-m9-gen' => 'sivana',
+'hebrew-calendar-m10-gen' => 'tamuza',
+'hebrew-calendar-m11-gen' => 'ava',
+'hebrew-calendar-m12-gen' => 'elula',
+
# Core parser functions
'unknown_extension_tag' => "Nepoznat ''tag'' ekstenzije \"\$1\"",
'duplicate-defaultsort' => '\'\'\'Upozorenje:\'\'\' Razvrstavanje po "$2" poništava ranije razvrstavanje po "$1".',
# Special:Version
-'version' => 'InaÄica softvera',
-'version-extensions' => 'Instalirana proširenja',
-'version-specialpages' => 'Posebne stranice',
-'version-parserhooks' => 'Kuke parsera',
-'version-variables' => 'Varijable',
-'version-skins' => 'Izgledi',
-'version-other' => 'Ostalo',
-'version-mediahandlers' => 'Rukovatelji medijima',
-'version-hooks' => 'Kuke',
-'version-extension-functions' => 'Funkcije proširenja',
-'version-parser-extensiontags' => 'Oznake proširenja parsera',
-'version-parser-function-hooks' => 'Kuke funkcija parsera',
-'version-skin-extension-functions' => 'Funkcije proširenja izgleda',
-'version-hook-name' => 'Ime kuke',
-'version-hook-subscribedby' => 'Pretplaćeno od',
-'version-version' => '(InaÄica $1)',
-'version-license' => 'Licencija',
-'version-poweredby-credits' => "Ovaj wiki pogoni '''[http://www.mediawiki.org/ MediaWiki]''', autorska prava © 2001-$1 $2.",
-'version-poweredby-others' => 'ostali',
-'version-license-info' => 'MediaWiki je slobodni softver; možete ga distribuirati i/ili mijenjati pod uvjetima GNU opće javne licencije u obliku u kojem ju je objavila Free Software Foundation; bilo verzije 2 licencije, ili (Vama na izbor) bilo koje kasnije verzije.
+'version' => 'InaÄica softvera',
+'version-extensions' => 'Instalirana proširenja',
+'version-specialpages' => 'Posebne stranice',
+'version-parserhooks' => 'Kuke parsera',
+'version-variables' => 'Varijable',
+'version-antispam' => 'SprjeÄavanje spama',
+'version-skins' => 'Izgledi',
+'version-other' => 'Ostalo',
+'version-mediahandlers' => 'Rukovatelji medijima',
+'version-hooks' => 'Kuke',
+'version-extension-functions' => 'Funkcije proširenja',
+'version-parser-extensiontags' => 'Oznake proširenja parsera',
+'version-parser-function-hooks' => 'Kuke funkcija parsera',
+'version-hook-name' => 'Ime kuke',
+'version-hook-subscribedby' => 'Pretplaćeno od',
+'version-version' => '(InaÄica $1)',
+'version-license' => 'Licencija',
+'version-poweredby-credits' => "Ovaj wiki pogoni '''[//www.mediawiki.org/ MediaWiki]''', autorska prava © 2001-$1 $2.",
+'version-poweredby-others' => 'ostali',
+'version-license-info' => 'MediaWiki je slobodni softver; možete ga distribuirati i/ili mijenjati pod uvjetima GNU opće javne licencije u obliku u kojem ju je objavila Free Software Foundation; bilo verzije 2 licencije, ili (Vama na izbor) bilo koje kasnije verzije.
MediaWiki je distribuiran u nadi da će biti koristan, no BEZ IKAKVOG JAMSTVA; Äak i bez impliciranog jamstva MOGUĆNOSTI PRODAJE ili PRIKLADNOSTI ZA ODREÄENU NAMJENU. Pogledajte GNU opću javnu licenciju za viÅ¡e detalja.
-Trebali ste primiti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju GNU opće javne licencije] uz ovaj program; ako ne, piÅ¡ite na Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, ili je [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html proÄitajte online].',
-'version-software' => 'Instalirani softver',
-'version-software-product' => 'Proizvod',
-'version-software-version' => 'Verzija',
+Trebali ste primiti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju GNU opće javne licencije] uz ovaj program; ako ne, piÅ¡ite na Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, ili je [//www.gnu.org/licenses/old-licenses/gpl-2.0.html proÄitajte online].',
+'version-software' => 'Instalirani softver',
+'version-software-product' => 'Proizvod',
+'version-software-version' => 'Verzija',
# Special:FilePath
'filepath' => 'Putanja datoteke',
@@ -3397,22 +3613,21 @@ Trebali ste primiti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju GNU opće javne lic
Slike se na taj naÄin prikazuju u punoj rezoluciji, a drugi tipovi datoteka se otvaraju na klik (kako je već namjeÅ¡teno u VaÅ¡em operacijskom sustavu).',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Traži kopije datoteka',
-'fileduplicatesearch-summary' => 'Traži kopije datoteka na temelju njihove hash vrijednosti.
-
-Unesite ime datoteke bez prefiksa "{{ns:file}}:"',
-'fileduplicatesearch-legend' => 'Traži kopije datoteka',
-'fileduplicatesearch-filename' => 'Ime datoteke:',
-'fileduplicatesearch-submit' => 'Traži',
-'fileduplicatesearch-info' => '$1 × $2 piksela<br />VeliÄina datoteke: $3<br />MIME tip: $4',
-'fileduplicatesearch-result-1' => 'Datoteka "$1" nema identiÄnih kopija.',
-'fileduplicatesearch-result-n' => 'Datoteka "$1" ima {{PLURAL:$2|1 identiÄnu kopiju|$2 identiÄne kopije}}.',
+'fileduplicatesearch' => 'Traži kopije datoteka',
+'fileduplicatesearch-summary' => 'Traži kopije datoteka na temelju njihove hash vrijednosti.',
+'fileduplicatesearch-legend' => 'Traži kopije datoteka',
+'fileduplicatesearch-filename' => 'Ime datoteke:',
+'fileduplicatesearch-submit' => 'Traži',
+'fileduplicatesearch-info' => '$1 × $2 piksela<br />VeliÄina datoteke: $3<br />MIME tip: $4',
+'fileduplicatesearch-result-1' => 'Datoteka "$1" nema identiÄnih kopija.',
+'fileduplicatesearch-result-n' => 'Datoteka "$1" ima {{PLURAL:$2|1 identiÄnu kopiju|$2 identiÄne kopije}}.',
+'fileduplicatesearch-noresults' => 'Nije pronađena datoteka s imenom "$1".',
# Special:SpecialPages
'specialpages' => 'Posebne stranice',
'specialpages-note' => '----
* Normalne posebne stranice
-*<strong class="mw-specialpagerestricted">Posebne stranice s ograniÄenim pristupom</strong>',
+* <strong class="mw-specialpagerestricted">Posebne stranice s ograniÄenim pristupom.</strong>',
'specialpages-group-maintenance' => 'Izvještaji za održavanje',
'specialpages-group-other' => 'Ostale posebne stranice',
'specialpages-group-login' => 'Prijava / Otvaranje raÄuna',
diff --git a/languages/messages/MessagesHsb.php b/languages/messages/MessagesHsb.php
index 26067654..5c83b1d9 100644
--- a/languages/messages/MessagesHsb.php
+++ b/languages/messages/MessagesHsb.php
@@ -41,95 +41,100 @@ $namespaceAliases = array(
'Diskusija_k_wobrazej' => NS_FILE_TALK,
);
+$namespaceGenderAliases = array(
+ NS_USER => array( 'male' => 'Wužiwar', 'female' => 'Wužiwarka' ),
+ NS_USER_TALK => array( 'male' => 'Diskusija_z_wužiwarjom', 'female' => 'Diskusija_z_wužiwarku' ),
+);
+
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Dwójne_daleposrědkowanja' ),
+ 'Activeusers' => array( 'Aktiwni_wužiwarjo' ),
+ 'Allmessages' => array( 'MediaWiki-zdźělenki' ),
+ 'Allpages' => array( 'Wšě_strony' ),
+ 'Ancientpages' => array( 'Najstarše_strony' ),
+ 'Blankpage' => array( 'Prózdna_strona' ),
+ 'Block' => array( 'Blokować' ),
+ 'Blockme' => array( 'Blokowanje_proksijow' ),
+ 'Booksources' => array( 'Pytanje_po_ISBN' ),
'BrokenRedirects' => array( 'Skóncowane_daleposrědkowanja' ),
- 'Disambiguations' => array( 'Rozjasnjenja_wjazmyslnosće' ),
- 'Userlogin' => array( 'Přizwjewić' ),
- 'Userlogout' => array( 'Wotzjewić' ),
+ 'Categories' => array( 'Kategorije' ),
+ 'ChangePassword' => array( 'Hesło_wróćo_stajić' ),
+ 'Confirmemail' => array( 'E-Mejl_potwjerdźić' ),
+ 'Contributions' => array( 'Přinoški' ),
'CreateAccount' => array( 'Konto_wutworić' ),
- 'Preferences' => array( 'Nastajenja' ),
- 'Watchlist' => array( 'Wobkedźbowanki' ),
- 'Recentchanges' => array( 'Aktualne_změny' ),
- 'Upload' => array( 'Nahraće' ),
+ 'Deadendpages' => array( 'Strony_bjez_wotkazow' ),
+ 'DeletedContributions' => array( 'ZniÄene_pÅ™inoÅ¡ki' ),
+ 'Disambiguations' => array( 'Rozjasnjenja_wjazmyslnosće' ),
+ 'DoubleRedirects' => array( 'Dwójne_daleposrědkowanja' ),
+ 'Emailuser' => array( 'E-Mejl' ),
+ 'Export' => array( 'Eksport' ),
+ 'Fewestrevisions' => array( 'Strony_z_najmjenje_wersijemi' ),
+ 'FileDuplicateSearch' => array( 'Duplikatowe_pytanje' ),
+ 'Filepath' => array( 'Datajowy_puć' ),
+ 'Import' => array( 'Importować' ),
+ 'Invalidateemail' => array( 'Njepłaćiwa_e-mejl' ),
+ 'BlockList' => array( 'Blokowane_IP-adresy' ),
+ 'LinkSearch' => array( 'Wotkazowe_pytanje' ),
+ 'Listadmins' => array( 'Administratorojo' ),
+ 'Listbots' => array( 'Boćiki' ),
'Listfiles' => array( 'Dataje' ),
- 'Newimages' => array( 'Nowe_dataje' ),
- 'Listusers' => array( 'Wužiwarjo' ),
'Listgrouprights' => array( 'Prawa_skupinow' ),
- 'Statistics' => array( 'Statistika' ),
- 'Randompage' => array( 'Připadna_strona' ),
+ 'Listredirects' => array( 'Daleposrědkowanja' ),
+ 'Listusers' => array( 'Wužiwarjo' ),
+ 'Lockdb' => array( 'Datowu_banku_zamknyć' ),
+ 'Log' => array( 'Protokol' ),
'Lonelypages' => array( 'Wosyroćene_strony' ),
- 'Uncategorizedpages' => array( 'Njekategorizowane_strony' ),
- 'Uncategorizedcategories' => array( 'Njekategorizowane_kategorije' ),
- 'Uncategorizedimages' => array( 'Njekategorizowane_dataje' ),
- 'Uncategorizedtemplates' => array( 'Njekategorizowane_předłohi' ),
- 'Unusedcategories' => array( 'Njewužiwane_kategorije' ),
- 'Unusedimages' => array( 'Njewužiwane_dataje' ),
- 'Wantedpages' => array( 'Požadane_strony' ),
- 'Wantedcategories' => array( 'Požadane_kategorije' ),
- 'Wantedfiles' => array( 'Falowace_dataje' ),
- 'Wantedtemplates' => array( 'Falowace_předłohi' ),
+ 'Longpages' => array( 'Najdlěše_strony' ),
+ 'MergeHistory' => array( 'Stawizny_zjednoćić' ),
+ 'MIMEsearch' => array( 'Pytanje_po_MIME' ),
+ 'Mostcategories' => array( 'Strony_z_najwjace_kategorijemi' ),
+ 'Mostimages' => array( 'Z_najwjace_stronami_zwjazane_dataje' ),
'Mostlinked' => array( 'Z_najwjace_stronami_zwjazane_strony' ),
'Mostlinkedcategories' => array( 'Najhusćišo_wužiwane_kategorije' ),
'Mostlinkedtemplates' => array( 'Najhusćišo_wužiwane_předłohi' ),
- 'Mostimages' => array( 'Z_najwjace_stronami_zwjazane_dataje' ),
- 'Mostcategories' => array( 'Strony_z_najwjace_kategorijemi' ),
'Mostrevisions' => array( 'Strony_z_najwjace_wersijemi' ),
- 'Fewestrevisions' => array( 'Strony_z_najmjenje_wersijemi' ),
- 'Shortpages' => array( 'Najkrótše_strony' ),
- 'Longpages' => array( 'Najdlěše_strony' ),
+ 'Movepage' => array( 'Přesunyć' ),
+ 'Mycontributions' => array( 'Moje_přinoški' ),
+ 'Mypage' => array( 'Moja_wužiwarska_strona' ),
+ 'Mytalk' => array( 'Moja_diskusijna_strona' ),
+ 'Newimages' => array( 'Nowe_dataje' ),
'Newpages' => array( 'Nowe_strony' ),
- 'Ancientpages' => array( 'Najstarše_strony' ),
- 'Deadendpages' => array( 'Strony_bjez_wotkazow' ),
+ 'Popularpages' => array( 'Najwoblubowaniše_strony' ),
+ 'Preferences' => array( 'Nastajenja' ),
+ 'Prefixindex' => array( 'Prefiksindeks' ),
'Protectedpages' => array( 'Å kitane_strony' ),
'Protectedtitles' => array( 'Å kitane_titule' ),
- 'Allpages' => array( 'Wšě_strony' ),
- 'Prefixindex' => array( 'Prefiksindeks' ),
- 'Ipblocklist' => array( 'Blokowane_IP-adresy' ),
- 'Specialpages' => array( 'Specialne_strony' ),
- 'Contributions' => array( 'Přinoški' ),
- 'Emailuser' => array( 'E-Mejl' ),
- 'Confirmemail' => array( 'E-Mejl_potwjerdźić' ),
- 'Whatlinkshere' => array( 'Lisćina_wotkazow' ),
+ 'Randompage' => array( 'Připadna_strona' ),
+ 'Randomredirect' => array( 'Připadne_daleposrědkowanje' ),
+ 'Recentchanges' => array( 'Aktualne_změny' ),
'Recentchangeslinked' => array( 'Změny_zwjazanych_stronow' ),
- 'Movepage' => array( 'Přesunyć' ),
- 'Blockme' => array( 'Blokowanje_proksijow' ),
- 'Booksources' => array( 'Pytanje_po_ISBN' ),
- 'Categories' => array( 'Kategorije' ),
- 'Export' => array( 'Eksport' ),
- 'Version' => array( 'Wersija' ),
- 'Allmessages' => array( 'MediaWiki-zdźělenki' ),
- 'Log' => array( 'Protokol' ),
- 'Blockip' => array( 'Blokować' ),
+ 'Revisiondelete' => array( 'Wušmórnjenje_wersijow' ),
+ 'Search' => array( 'Pytać' ),
+ 'Shortpages' => array( 'Najkrótše_strony' ),
+ 'Specialpages' => array( 'Specialne_strony' ),
+ 'Statistics' => array( 'Statistika' ),
+ 'Tags' => array( 'TafliÄki' ),
+ 'Uncategorizedcategories' => array( 'Njekategorizowane_kategorije' ),
+ 'Uncategorizedimages' => array( 'Njekategorizowane_dataje' ),
+ 'Uncategorizedpages' => array( 'Njekategorizowane_strony' ),
+ 'Uncategorizedtemplates' => array( 'Njekategorizowane_předłohi' ),
'Undelete' => array( 'Wobnowić' ),
- 'Import' => array( 'Importować' ),
- 'Lockdb' => array( 'Datowu_banku_zamknyć' ),
'Unlockdb' => array( 'Datowu_banku_wotamknyć' ),
- 'Userrights' => array( 'Prawa' ),
- 'MIMEsearch' => array( 'Pytanje_po_MIME' ),
- 'FileDuplicateSearch' => array( 'Duplikatowe_pytanje' ),
- 'Unwatchedpages' => array( 'Njewobkedźbowane_strony' ),
- 'Listredirects' => array( 'Daleposrědkowanja' ),
- 'Revisiondelete' => array( 'Wušmórnjenje_wersijow' ),
+ 'Unusedcategories' => array( 'Njewužiwane_kategorije' ),
+ 'Unusedimages' => array( 'Njewužiwane_dataje' ),
'Unusedtemplates' => array( 'Njewužiwane_předłohi' ),
- 'Randomredirect' => array( 'Připadne_daleposrědkowanje' ),
- 'Mypage' => array( 'Moja_wužiwarska_strona' ),
- 'Mytalk' => array( 'Moja_diskusijna_strona' ),
- 'Mycontributions' => array( 'Moje_přinoški' ),
- 'Listadmins' => array( 'Administratorojo' ),
- 'Listbots' => array( 'Boćiki' ),
- 'Popularpages' => array( 'Najwoblubowaniše_strony' ),
- 'Search' => array( 'Pytać' ),
- 'Resetpass' => array( 'Hesło_wróćo_stajić' ),
+ 'Unwatchedpages' => array( 'Njewobkedźbowane_strony' ),
+ 'Upload' => array( 'Nahraće' ),
+ 'Userlogin' => array( 'Přizwjewić' ),
+ 'Userlogout' => array( 'Wotzjewić' ),
+ 'Userrights' => array( 'Prawa' ),
+ 'Version' => array( 'Wersija' ),
+ 'Wantedcategories' => array( 'Požadane_kategorije' ),
+ 'Wantedfiles' => array( 'Falowace_dataje' ),
+ 'Wantedpages' => array( 'Požadane_strony' ),
+ 'Wantedtemplates' => array( 'Falowace_předłohi' ),
+ 'Watchlist' => array( 'Wobkedźbowanki' ),
+ 'Whatlinkshere' => array( 'Lisćina_wotkazow' ),
'Withoutinterwiki' => array( 'Falowace_mjezyrÄ›Äne_wotkazy' ),
- 'MergeHistory' => array( 'Stawizny_zjednoćić' ),
- 'Filepath' => array( 'Datajowy_puć' ),
- 'Invalidateemail' => array( 'Njepłaćiwa_e-mejl' ),
- 'Blankpage' => array( 'Prózdna_strona' ),
- 'LinkSearch' => array( 'Wotkazowe_pytanje' ),
- 'DeletedContributions' => array( 'ZniÄene_pÅ™inoÅ¡ki' ),
- 'Tags' => array( 'TafliÄki' ),
- 'Activeusers' => array( 'Aktiwni_wužiwarjo' ),
);
$messages = array(
@@ -164,8 +169,8 @@ $messages = array(
'tog-shownumberswatching' => 'LiÄbu wobkedźbowacych wužiwarjow pokazać',
'tog-oldsig' => 'Eksistowaca signatura:',
'tog-fancysig' => 'Ze signaturu kaž z wikitekstom wobchadźeć (bjez awtomatiskeho wotkaza)',
-'tog-externaleditor' => 'Eksterny editor jako standard wužiwać (jenož za ekspertow, žada sej specialne nastajenja na waÅ¡im liÄaku. [http://www.mediawiki.org/wiki/Manual:External_editors DalÅ¡e informacije.])',
-'tog-externaldiff' => 'Eksterny diff-program jako standard wužiwać (jenož za ekspertow, žada sej specialne nastajenja na waÅ¡im liÄaku. [http://www.mediawiki.org/wiki/Manual:External_editors DalÅ¡e informacije.])',
+'tog-externaleditor' => 'Eksterny editor jako standard wužiwać (jenož za ekspertow, žada sej specialne nastajenja na waÅ¡im liÄaku. [//www.mediawiki.org/wiki/Manual:External_editors DalÅ¡e informacije.])',
+'tog-externaldiff' => 'Eksterny diff-program jako standard wužiwać (jenož za ekspertow, žada sej specialne nastajenja na waÅ¡im liÄaku. [//www.mediawiki.org/wiki/Manual:External_editors DalÅ¡e informacije.])',
'tog-showjumplinks' => 'Wotkazy typa „dźi do†zmóžnić',
'tog-uselivepreview' => 'Live-přehlad wužiwać (JavaScript) (eksperimentalnje)',
'tog-forceeditsummary' => 'Mje skedźbnić, jeli zabudu zjeće',
@@ -261,15 +266,7 @@ $messages = array(
'listingcontinuesabbrev' => ' (pokroÄowane)',
'index-category' => 'Indicěrowane strony',
'noindex-category' => 'Njeindicěrowane strony',
-
-'mainpagetext' => "'''MediaWiki bu wuspěšnje instalowany.'''",
-'mainpagedocfooter' => 'Prošu hlej [http://meta.wikimedia.org/wiki/Help:Contents dokumentaciju] za informacije wo wužiwanju softwary.
-
-== Za nowaÄkow ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Wo nastajenjach]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
+'broken-file-category' => 'Strony z njepłaćiwymi datajowymi wotkazami',
'about' => 'Wo',
'article' => 'Nastawk',
@@ -321,10 +318,10 @@ $messages = array(
'history' => 'stawizny',
'history_short' => 'stawizny',
'updatedmarker' => 'Změny z mojeho poslednjeho wopyta',
-'info_short' => 'Informacija',
'printableversion' => 'Ćišćomna wersija',
'permalink' => 'Trajny wotkaz',
'print' => 'Ćišćeć',
+'view' => 'Wobhladać',
'edit' => 'wobdźěłać',
'create' => 'Wutworić',
'editthispage' => 'Stronu wobdźěłać',
@@ -332,6 +329,7 @@ $messages = array(
'delete' => 'wušmórnyć',
'deletethispage' => 'Stronu wušmórnyć',
'undelete_short' => '{{PLURAL:$1|jednu wersiju|$1 wersiji|$1 wersije|$1 wersijow}} wobnowić',
+'viewdeleted_short' => '{{PLURAL:$1|jednu wušmórnjenu změnu|$1 wušmórnjenej změnje|$1 wušmórnjene změny|$1 wušmórnjenych změnow}} sej wobhladać',
'protect' => 'škitać',
'protect_change' => 'změnić',
'protectthispage' => 'Stronu škitać',
@@ -415,6 +413,8 @@ $1',
'toc' => 'Wobsah',
'showtoc' => 'pokazać',
'hidetoc' => 'schować',
+'collapsible-collapse' => 'Schować',
+'collapsible-expand' => 'Pokazać',
'thisisdeleted' => '$1 pokazać abo wobnowić?',
'viewdeleted' => '$1 pokazać?',
'restorelink' => '{{PLURAL:$1|1 wušmórnjenu wersiju|$1 wušmórnjenej wersiji|$1 wušmórnjene wersije|$1 wušmórnjenych wersijow}}',
@@ -426,6 +426,8 @@ $1',
'page-rss-feed' => 'RSS-kanal za „$1“',
'page-atom-feed' => 'Atom-Kanal za „$1“',
'red-link-title' => '$1 (strona njeeksistuje)',
+'sort-descending' => 'Spadowacy sortěrować',
+'sort-ascending' => 'Postupowacy sortěrować',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'nastawk',
@@ -509,12 +511,13 @@ Wotprašenje: $2',
'protectedpagetext' => 'Strona je přećiwo wobdźěłowanju škitana.',
'viewsourcetext' => 'Móžeš pak jeje žórło wobhladać a jo kopěrować:',
'protectedinterface' => 'Tuta strona skići tekst za rÄ›Äny zwjerch a je Å¡kitana zo by so znjewužiwanju zadźěwaÅ‚o.',
-'editinginterface' => "'''Warnowanje:''' Wobdźěłuješ stronu, kotraž so wužiwa, zo by tekst za softwaru k dispoziciji stajiła. Změny wuskutkuja so na napohlad wužiwarskeho powjercha za druhich wužiwarjow. Hlej za přełožki [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], projekt lokalizacije MediaWiki.",
+'editinginterface' => "'''Warnowanje:''' Wobdźěłuješ stronu, kotraž so wužiwa, zo by tekst za softwaru k dispoziciji stajiła. Změny wuskutkuja so na napohlad wužiwarskeho powjercha za druhich wužiwarjow. Hlej za přełožki [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], projekt lokalizacije MediaWiki.",
'sqlhidden' => '(SQL wotprašenje schowane)',
'cascadeprotected' => 'Strona je za wobdźěłowanje zawrjena, dokelž je w {{PLURAL:$1|slědowacej stronje|slědowacymaj stronomaj|slědowacych stronach}} zapřijata, {{PLURAL:$1|kotraž je|kotrejž stej|kotrež su}} přez kaskadowu opciju {{PLURAL:$1|škitana|škitanej|škitane}}:
$2',
'namespaceprotected' => "Nimaš dowolnosć, zo by stronu w mjenowym rumje '''$1''' wobdźěłał.",
-'customcssjsprotected' => 'Nimaš prawo, zo by tutu stronu wobdźěłał, dokelž wosobinske nastajenja druheho wužiwarja wobsahuje.',
+'customcssprotected' => 'Nimaš prawo, zo by tutu CSS-stronu wobdźěłał, dokelž wosobinske nastajenja druheho wužiwarja wobsahuje.',
+'customjsprotected' => 'Nimaš prawo, zo by tutu JavaScript-stronu wobdźěłał, dokelž wosobinske nastajenja druheho wužiwarja wobsahuje.',
'ns-specialprotected' => 'Specialne strony njedadźa so wobdźěłać.',
'titleprotected' => "Tutón titul bu přećiwo wutworjenju přez [[User:$1|$1]] škitany.
Podata pÅ™iÄina je ''$2''.",
@@ -552,6 +555,7 @@ Twoje konto bu wutworjene. Njezabudź swoje nastajenja za [[Special:Preferences|
'createaccount' => 'Wužiwarske konto wutworić',
'gotaccount' => "Maš hižo wužiwarske konto? '''$1'''.",
'gotaccountlink' => 'Přizjewić',
+'userlogin-resetlink' => 'Přizjewjenske daty zabył?',
'createaccountmail' => 'z mejlku',
'createaccountreason' => 'PÅ™iÄina:',
'badretype' => 'Hesle, kotrejž sy zapodał, so njekryjetej.',
@@ -561,13 +565,15 @@ Prošu wubjer druhe mjeno.',
'createaccounterror' => 'Wužiwarske konto njeda so załožić: $1',
'nocookiesnew' => 'Wužiwarske konto bu wutworjene, njejsy pak přizjewjeny. {{SITENAME}} wužiwa placki (cookies), zo bychu so wužiwarjo přizjewili. Sy placki znjemóžnił. Prošu zmóžń je a přizjew so potom ze swojim nowym wužiwarskim mjenom a hesłom.',
'nocookieslogin' => '{{SITENAME}} wužiwa placki (cookies) za přizjewjenje wužiwarjow wužiwa. Sy placki znjemóžnił. Prošu zmóžń je a spytaj hišće raz.',
+'nocookiesfornew' => 'Wužiwarske konto njeje so załožiło, dokelž njemóžachmy jeho žórło wobkrućić.
+PÅ™eswÄ›dÄ so, zo placki su zmóžnjene, aÄitaj tutu stronu znowa a spytaj hišće raz.',
'noname' => 'Njejsy płaćiwe wužiwarske mjeno podał.',
'loginsuccesstitle' => 'Přizjewjenje wuspěšne',
'loginsuccess' => "'''Sy nětko jako \"\$1\" w {{GRAMMAR:lokatiw|{{SITENAME}}}} {{GENDER:|přizjewjeny|přizjewjena|přizjewjene}}.'''",
'nosuchuser' => 'Njeje wužiwar z mjenom "$1".
Wužiwarske mjena wobkedźbuja wulkopisanje.
Přepruwuj swój prawopis abo [[Special:UserLogin/signup|wutwor nowe konto]].',
-'nosuchusershort' => 'Wužiwarske mjeno „<nowiki>$1</nowiki>†njeeksistuje. Prošu přepruwuj prawopis.',
+'nosuchusershort' => 'Wužiwarske mjeno „$1†njeeksistuje. Prošu přepruwuj prawopis.',
'nouserspecified' => 'Dyrbiš wužiwarske mjeno podać',
'login-userblocked' => 'Tutón wužiwar je zablokowany. Přizjewjenje njedowolene.',
'wrongpassword' => 'HesÅ‚o, kotrež sy zapodaÅ‚, je wopaÄne. ProÅ¡u spytaj hišće raz.',
@@ -603,13 +609,14 @@ Prjedy haÄ so druha mejlka ke kontu pósćele, dyrbiÅ¡ so po instrukcijach w me
Móžeš tutu zdźělenku ignorować, jeli so wužiwarske konto zmylnje wutworiło.',
'usernamehasherror' => 'Wužiwarske mjeno njesmě hašowe znamješka wpbsahować',
'login-throttled' => 'Sy pÅ™ehusto spytaÅ‚ so pÅ™izjewić. PoÄakaj proÅ¡u, prjedy haÄ znowa spytaÅ¡.',
+'login-abort-generic' => 'Twoje přizjewjenje njebě wuspěšne - přetorhnjene',
'loginlanguagelabel' => 'RÄ›Ä: $1',
'suspicious-userlogout' => 'Twoje naprašowanje za wotzjewjenje bu wotpokazane, dokelž zda so, jako by so přez wobškodźeny wobhladowak abo pufrowacy proksy pósłało',
# E-mail sending
'php-mail-error-unknown' => 'Njeznaty zmylk w PHP-funkciji mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Hesło změnić',
'resetpass_announce' => 'Sy so z nachwilnym e-mejlowanym hesÅ‚om pÅ™izjewiÅ‚. Zo by pÅ™izjewjenje zakónÄiÅ‚, dyrbiÅ¡ nÄ›tko nowe hesÅ‚o postajić.',
'resetpass_text' => '<!-- Tu tekst zasunyć -->',
@@ -627,6 +634,32 @@ MóžeÅ¡ tutu zdźělenku ignorować, jeli so wužiwarske konto zmylnje wutworiÅ
Snano sy swoje hesło hižo wuspěšnje změnił abo nowe nachwilne hesło požadał.',
'resetpass-temp-password' => 'Nachwilne hesło:',
+# Special:PasswordReset
+'passwordreset' => 'Hesło wróćo stajić',
+'passwordreset-text' => 'Wupjelń tutón formular, zo by dopomnjensku e-mejl wo swojich kontowych podrobnosćach dóstał.',
+'passwordreset-legend' => 'Hesło wróćo stajić',
+'passwordreset-disabled' => 'Wróćostajenje hesłow je so na tutym wikiju znjemóžniło.',
+'passwordreset-pretext' => '{{PLURAL:$1||Zapodaj deleka jedne ze slědowacych datowych podaćow}}',
+'passwordreset-username' => 'Wužiwarske mjeno:',
+'passwordreset-domain' => 'Domena:',
+'passwordreset-email' => 'E-mejlowa adresa:',
+'passwordreset-emailtitle' => 'Kontowe podrobnosće na {{GRAMMAR:lokatiw|{{SITENAME}}}}',
+'passwordreset-emailtext-ip' => 'Něchtó (najskerje ty, z IP-adresu $1) je dopomnjenku na twoje kontowe podrobnosće za {{SITENAME}} požadał ($4). {{PLURAL:$3|Slědowace wužiwarske konto je|Slědowacej wužiwarskej konće stej|Slědowace wužiwarske konta su|Slědowace wužiwarske konta su}} z tutej e-mejlowej adresu {{PLURAL:$3|zwjazane|zwjazanej|zwjazane|zwjazane}}:
+
+$2
+
+{{PLURAL:$3|Tute nachwilne hesło spadnje|Tutej nachwilnej hesle spadnjetej|Tute nachwilne hesła spadnu|Tute nachwilne hesła spadnu}} za {{PLURAL:$5|jedyn dźeń|$5 dnjej|$5 dny|$5 dnjow}}.
+Ty měł so nětko přizjewić a nowe hesło wubrać. Jeli něchtó druhi je tute naprašowanje pósłał, abo jeli sy so zaso na prěnjotne hesło dopomnił a wjace nochceš jo změnić, móžeš tutu zdźělenku ignorować a swoje stare hesło dale wužiwać.',
+'passwordreset-emailtext-user' => 'Wužiwar $1 je dopomnjenku na twoje kontowe podrobnosće za {{SITENAME}} požadał ($4). {{PLURAL:$3|Slědowace wužiwarske konto je|Slědowacej wužiwarskej konće stej|Slědowace wužiwarske konta su|Slědowace wužiwarske konta su}} z tutej e-mejlowej adresu {{PLURAL:$3|zwjazane|zwjazanej|zwjazane|zwjazane}}:
+
+$2
+
+{{PLURAL:$3|Tute nachwilne hesło spadnje|Tutej nachwilnej hesle spadnjetej|Tute nachwilne hesła spadnu|Tute nachwilne hesła spadnu}} za {{PLURAL:$5|jedyn dźeń|$5 dnjej|$5 dny|$5 dnjow}}.
+Ty měł so nětko přizjewić a nowe hesło wubrać. Jeli něchtó druhi je tute naprašowanje pósłał, abo jeli sy so zaso na prěnjotne hesło dopomnił a wjace nochceš jo změnić, móžeš tutu zdźělenku ignorować a swoje stare hesło dale wužiwać.',
+'passwordreset-emailelement' => 'Wužiwarske mjeno: $1
+Nachwilne hesło: $2',
+'passwordreset-emailsent' => 'Wopomnjenska e-mejlka je so pósłała.',
+
# Edit page toolbar
'bold_sample' => 'TuÄny tekst',
'bold_tip' => 'TuÄny tekst',
@@ -638,8 +671,6 @@ Snano sy swoje hesło hižo wuspěšnje změnił abo nowe nachwilne hesło poža
'extlink_tip' => 'Zwonkowny wotkaz (pomysli sej na prefiks http://)',
'headline_sample' => 'Nadpismo',
'headline_tip' => 'Nadpismo runiny 2',
-'math_sample' => 'Zasuń tu formulu',
-'math_tip' => 'Matematiska formula (LaTeX)',
'nowiki_sample' => 'Zasuń tu njeformatowany tekst',
'nowiki_tip' => 'Wiki-syntaksu ignorować',
'image_sample' => 'Přikład.jpg',
@@ -716,7 +747,7 @@ HesÅ‚o za tute nowe konto da so na stronje ''[[Special:ChangePassword|hesÅ‚o zmÄ
'noarticletext' => 'Tuchwilu tuta strona žadyn tekst njewobsahuje, móžeš [[Special:Search/{{PAGENAME}}|tutón titul strony na druhich stronach pytać]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} wotpowědne protokole pytać] abo [{{fullurl:{{FULLPAGENAME}}|action=edit}} tutu stronu wobdźěłać]</span>.',
'noarticletext-nopermission' => 'Tuchwilu žadyn tekst na tutej stronje njeje.
Móžeš [[Special:Search/{{PAGENAME}}|tutón titul strony]] na druhich stronach pytać abo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pytaj wotpowědne protokole]</span>.',
-'userpage-userdoesnotexist' => 'Wužiwarske konto „$1“ njeje zregistrowane. ProÅ¡u pruwuj, haÄ chceÅ¡ tutu stronu woprawdźe wutworić/wobdźěłać.',
+'userpage-userdoesnotexist' => 'Wužiwarske konto „<nowiki>$1</nowiki>“ njeje zregistrowane. ProÅ¡u pruwuj, haÄ chceÅ¡ tutu stronu woprawdźe wutworić/wobdźěłać.',
'userpage-userdoesnotexist-view' => 'Wužiwarske konto "$1" njeje zregistrowane.',
'blocked-notice-logextract' => 'Tutón wužiwar je tuchwilu zablokowany. Najnowši protokolowy zapisk so deleka jako referenca podawa:',
'clearyourcache' => "'''Kedźbu: Po składowanju dyrbiš snano pufrowak swojeho wobhladowaka wuprózdnić, zo by změny widźał.'''
@@ -748,6 +779,7 @@ Jeli to hišće njefunguje, [[Special:UserLogout|wotzjew so]] a přizjew so zaso
'''Jeli to je legitimny wobdźěłowanski pospyt, spytaj prošu hišće raz. Jeli to hišće njefunguje, [[Special:UserLogout|wotzjew so]] a přizjew so znowa.'''",
'token_suffix_mismatch' => "'''Twoja změna je so wotpokazała, dokelž twój wobhladowak je znamješka skepsał.
SkÅ‚adowanje móže wobsah strony zniÄić. Móže so to na pÅ™ikÅ‚ad pÅ™ez wopaÄnje dźěłowacy proksy stać.'''",
+'edit_form_incomplete' => "'''NÄ›kotre dźěle wobdźěłowanskeho formulara njejsu serwer docpÄ›li; proÅ¡u pÅ™epruwuj, haÄ twoje zmÄ›ny su w porjadku a spytaj hišće raz.'''",
'editing' => 'Wobdźěłanje strony $1',
'editingsection' => 'Wobdźěłanje strony $1 (wotrězk)',
'editingcomment' => '$1 so wobdźěłuje (nowy wotrězk)',
@@ -974,7 +1006,8 @@ Prošu přepruwuj protokole.',
# Suppression log
'suppressionlog' => 'Protokol potłóÄenjow',
-'suppressionlogtext' => 'Deleka je lisćina wušmórnjenjow a zablokowanjow, inkluziwnje wobsaha schowaneho wot administratorow. Hlej [[Special:IPBlockList|Lisćina zablokowanjow IP]] za lisćinu tuchwilnych zablokowanjow.',
+'suppressionlogtext' => 'Deleka je lisćina wušmórnjenjow a zablokowanjow, inkluziwnje wobsaha schowaneho wot administratorow.
+Hlej [[Special:BlockList|Lisćina zablokowanych IP-adresow]] za lisćinu tuchwilnych zablokowanjow.',
# History merging
'mergehistory' => 'Stawizny stronow zjednoćić',
@@ -1082,12 +1115,13 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
'searchdisabled' => 'Pytanje w {{GRAMMAR:lokatiw|{{SITENAME}}}} tuchwilu móžne njeje. Móžeš mjeztym z Google pytać. Wobkedźbuj, zo móža wuslědki z wobsaha {{GRAMMAR:genitiw|{{SITENAME}}}} zestarjene być.',
# Quickbar
-'qbsettings' => 'PobóÄna lajsta',
-'qbsettings-none' => 'Žane',
-'qbsettings-fixedleft' => 'Leži nalěwo',
-'qbsettings-fixedright' => 'Leži naprawo',
-'qbsettings-floatingleft' => 'Wisa nalěwo',
-'qbsettings-floatingright' => 'Wisa naprawo',
+'qbsettings' => 'PobóÄna lajsta',
+'qbsettings-none' => 'Žane',
+'qbsettings-fixedleft' => 'Leži nalěwo',
+'qbsettings-fixedright' => 'Leži naprawo',
+'qbsettings-floatingleft' => 'Wisa nalěwo',
+'qbsettings-floatingright' => 'Wisa naprawo',
+'qbsettings-directionality' => 'Kruty, wotwisny wot pisanskeho smÄ›ra twojeje rÄ›Äe',
# Preferences page
'preferences' => 'Nastajenja',
@@ -1098,9 +1132,10 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
'changepassword' => 'Hesło změnić',
'prefs-skin' => 'Å at',
'skin-preview' => 'Přehlad',
-'prefs-math' => 'Math',
'datedefault' => 'Žane nastajenje',
+'prefs-beta' => 'Betafunkcije',
'prefs-datetime' => 'Datum a Äas',
+'prefs-labs' => 'Laborowe funkcije',
'prefs-personal' => 'Wužiwarske daty',
'prefs-rc' => 'Aktualne změny',
'prefs-watchlist' => 'Wobkedźbowanki',
@@ -1122,8 +1157,6 @@ Spytaj swoje naprašowanje z prefiksom ''all:'' wužiwać, zo by wšón wobsah (
'columns' => 'Stołpiki:',
'searchresultshead' => 'Pytać',
'resultsperpage' => 'Wuslědki za stronu:',
-'contextlines' => 'Rjadki na wuslědk:',
-'contextchars' => 'Kontekst na rjadku:',
'stub-threshold' => 'Wotkazowe formatowanje <a href="#" class="stub">małych stronow</a> (w bajtach):',
'stub-threshold-disabled' => 'Znjemóžnjeny',
'recentchangesdays' => 'LiÄba dnjow w lisćinje aktualnych zmÄ›now:',
@@ -1136,7 +1169,7 @@ Tu je připadnje wupłodźena hódnota, kotruž móžeš wužiwać: $1',
'savedprefs' => 'Nastajenja buchu składowane.',
'timezonelegend' => 'ÄŒasowe pasmo:',
'localtime' => 'Lokalny Äas:',
-'timezoneuseserverdefault' => 'Standard serwera wužiwać',
+'timezoneuseserverdefault' => 'Wikijowy standard serwera wužiwać ($1)',
'timezoneuseoffset' => 'Druhe (pódaj wotchilenje)',
'timezoneoffset' => 'Rozdźěl¹:',
'servertime' => 'ÄŒas serwera:',
@@ -1184,7 +1217,8 @@ SmÄ› mjenje haÄ $1 {{PLURAL:$1|znamjeÅ¡ko|znamjeÅ¡ce|znamjeÅ¡ka|znamjeÅ¡kow}} d
'prefs-help-gender' => 'Opcionalny: wužiwa so za po splahu specifiske narÄ›Äenje pÅ™ez softwaru. Tuta informacija budźe zjawna.',
'email' => 'E-mejl',
'prefs-help-realname' => '* Woprawdźite mjeno (opcionalne): jeli so rozsudźiš to zapodać, budźe to so wužiwać, zo by tebi woprawnjenje za twoje dźěło dało.',
-'prefs-help-email' => 'E-mejlowa adresa je opcionalna, ale zmóžnja ći nowe hesło emejlować, jeli sy swoje hesło zabył. Móžeš tež druhim dowolić, će přez swoju wužiwarsku abo diskusijnu stronu skontaktować, bjeztoho zo by dyrbjał swoju identitu wotkrył.',
+'prefs-help-email' => 'E-mejlowa adresa je opcionalna, ale zmóžnja ći nowe hesło emejlować, jeli sy swoje hesło zabył.',
+'prefs-help-email-others' => 'Móžeš tež druhim dowolić, so z tobu přez swoju diskusijnu stronu do zwiska stajić, bjeztoho zo dyrbiš swoju identitu přeradźić.',
'prefs-help-email-required' => 'Je płaćiwa emejlowa adresa trjeba.',
'prefs-info' => 'Zakładne informacije',
'prefs-i18n' => 'Internacionalizacija',
@@ -1309,15 +1343,15 @@ SmÄ› mjenje haÄ $1 {{PLURAL:$1|znamjeÅ¡ko|znamjeÅ¡ce|znamjeÅ¡ka|znamjeÅ¡kow}} d
'right-userrights' => 'Wužiwarske prawa wobdźěłać',
'right-userrights-interwiki' => 'Wužiwarske prawa wužiwarjow druhich wikijow wobdźěłać',
'right-siteadmin' => 'Datowu banku zawrěć a wotewrěć',
-'right-reset-passwords' => 'Hesła druhich wužiwarjow wróćo stajić',
'right-override-export-depth' => 'Strony inkluziwnje wotkazanych stronow haÄ do hÅ‚ubokosće 5 eksportować',
'right-sendemail' => 'Druhim wužiwarjam e-mejl pósłać',
# User rights log
-'rightslog' => 'Protokol zrjadowanja wužiwarskich prawow',
-'rightslogtext' => 'To je protokol změnow wužiwarskich prawow.',
-'rightslogentry' => 'skupinowe ÄÅ‚onstwo za $1 z $2 na $3 zmÄ›njene',
-'rightsnone' => '(niÄo)',
+'rightslog' => 'Protokol zrjadowanja wužiwarskich prawow',
+'rightslogtext' => 'To je protokol změnow wužiwarskich prawow.',
+'rightslogentry' => 'skupinowe ÄÅ‚onstwo za $1 z $2 na $3 zmÄ›njene',
+'rightslogentry-autopromote' => 'je so awtomatisce wot $2 do $3 změnił',
+'rightsnone' => '(niÄo)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'tutu stronu Äitać',
@@ -1442,13 +1476,13 @@ Hlej [[Special:NewFiles|galeriju nowych datajow]] za wizuelny přehlad.',
'minlength1' => 'Datajowe mjena dyrbja znajmjeńša jedyn pismik dołhe być.',
'illegalfilename' => 'Mjeno dataje „$1†wobsahuje znamješka, kotrež w titlach stronow dowolene njejsu. Prošu přemjenuj dataju a spytaj ju znowa nahrać.',
'badfilename' => 'Mjeno dataje bu do „$1†změnjene.',
-'filetype-mime-mismatch' => 'Datajowy sufiks njewotpowěduje MIME-typej.',
+'filetype-mime-mismatch' => 'Datajowy sufiks ".$1" njewotpowěduje MIME-typej dataje ($2).',
'filetype-badmime' => 'Dataje typa MIME „$1†njesmědźa so nahrać.',
'filetype-bad-ie-mime' => 'Tuta dataja njeda so nahrać, dokelž Internet Explorer by ju jako "$1" interpretował, kotryž je njedowoleny a potencielnje strašny datajowy typ.',
'filetype-unwanted-type' => "'''\".\$1\"''' je njepožadany datajowy typ.
{{PLURAL:\$3|Preferowany datajowy typ je|Preferowanej datajowej typaj stej|Preferowane datajowe typy su|Preferowane datajowe typy su}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' njeje dowoleny datajowy typ.
-{{PLURAL:\$3|Dowoleny datajowy typ je|Dowolenej datajowej typaj stej|Dowolene datajowe typy su|Dowolene datajowe typy su}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|dowoleny datajowy typ njeje|dowolenej datajowej typaj njejstej|dowolene datajowe typy njejsu|dowolene datajowe typy njejsu}}.
+{{PLURAL:$3|Dowoleny datajowy typ je|Dowolenej datajowej typaj stej|Dowolene datajowe typy su|Dowolene datajowe typy su}} $2.',
'filetype-missing' => 'Dataja nima kóncowku (na přikład „.jpg“).',
'empty-file' => 'Dataja, kotruž sy wotpósłał, bě prózdna.',
'file-too-large' => 'Dataja, kotruž sy wotpósłał, bě přewulka.',
@@ -1464,6 +1498,7 @@ Hlej [[Special:NewFiles|galeriju nowych datajow]] za wizuelny přehlad.',
'large-file' => 'DoporuÄa so, zo dataje wjetÅ¡e haÄ $1 njejsu; tuta dataja ma $2.',
'largefileserver' => 'Dataja je wjetÅ¡a haÄ serwer dowoluje.',
'emptyfile' => 'Dataja, kotruž sy nahraÅ‚, zda so prózdna być. Z pÅ™iÄinu móhÅ‚ pisanski zmylk w mjenje dataje być. ProÅ¡u pruwuj haÄ chceÅ¡ ju woprawdźe nahrać.',
+'windows-nonascii-filename' => 'Tutón wiki datajowe mjena ze specialnymi znamješkami njepodpěruje.',
'fileexists' => "Dataja z tutym mjenom hižo eksistuje.
Jeli kliknjeÅ¡ na „SkÅ‚adowaćâ€, so wona pÅ™episuje.
ProÅ¡u pruwuj '''<tt>[[:$1]]</tt>''' jeli njejsy wÄ›sty haÄ chceÅ¡ ju zmÄ›nić.
@@ -1498,6 +1533,8 @@ Jeli maš tutón wobraz z połnym rozeznaćom, nahraj tutón, hewak změń proš
'php-uploaddisabledtext' => 'Nahraća PHP-datajow su znjemóžnjene. Prošu skontroluj nastajenje file_uploads.',
'uploadscripted' => 'Dataja wobsahuje HTML- abo skriptowy kod, kotryž móhł so mylnje přez wobhladowak wuwjesć.',
'uploadvirus' => 'Dataja wirus wobsahuje! Podrobnosće: $1',
+'uploadjava' => 'Tuta dataja je ZIP-dataja, kotraž .class-dataju z Javy wobsahuje.
+Nahraće datajow Javy njeje dowolene, dokelž móhli wobeńdźenje wěstotnych wobmjezowanjow zmóžnić.',
'upload-source' => 'Žórłowa dataja',
'sourcefilename' => 'Mjeno žórłoweje dataje:',
'sourceurl' => 'URL žórła:',
@@ -1507,10 +1544,6 @@ Jeli maš tutón wobraz z połnym rozeznaćom, nahraj tutón, hewak změń proš
'upload-options' => 'Nahrawanske opcije',
'watchthisupload' => 'Tutu dataju wobkedźbować',
'filewasdeleted' => 'Dataja z tutym mjenom bu prjedy nahrata a pozdźiÅ¡o wuÅ¡mórnjena. ProÅ¡u pÅ™epruwuj $1 prjedy haÄ ju znowa skÅ‚adujeÅ¡.',
-'upload-wasdeleted' => "'''Kedźbu: Nahrawaš dataju, kotraž bu prjedy wušmórnjena.'''
-
-ProÅ¡u pÅ™epruwuj dokÅ‚adnje, haÄ wospjetowane nahraće smÄ›rnicam wotpowÄ›duje.
-Za twoju informaciju slěduje protokol wušmórnjenjow z wopodstatnjenjom za předchadne wušmórnjenje:",
'filename-bad-prefix' => "Datajowe mjeno zapoÄina so z '''„$1“'''. To je powÅ¡itkownje datajowe mjeno, kotrež digitalna kamera zwjetÅ¡a dawa a kotrež tohodla jara wuprajiwe njeje. ProÅ¡u wubjer bóle wuprajiwe mjeno za twoju dataju.",
'filename-prefix-blacklist' => ' #<!-- Njezměń tutu linku! --> <pre>
# Syntaksa:
@@ -1546,12 +1579,29 @@ $1',
'upload-unknown-size' => 'Njeznata wulkosć',
'upload-http-error' => 'HTTP-zmylk je wustupił: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'PÅ™i woÄinjenju dataje za ZIP-pÅ™epruwowanje je zmylk wustupiÅ‚.',
+'zip-wrong-format' => 'Podata dataja ZIP-dataja njebÄ›.',
+'zip-bad' => 'Tute ZIP-dataja je wobÅ¡kodźena abo z hinaÅ¡ich pÅ™iÄinow njeÄitajomna.
+Tohodla njeda so jeje wěstota porjadnje přepruwować.',
+'zip-unsupported' => 'Tuta dataja je ZIP-dataja, kotraž ZIP-funkcije wužiwa, kotrež so wot MediaWiki njepodpěruja.
+Tohodla njeda so jeje wěstota porjadnje přepruwować.',
+
+# Special:UploadStash
+'uploadstash' => 'Schowanje nahratych datajow',
+'uploadstash-summary' => 'Tuta strona zmóžnja přistup k datajam, kotrež su nahrate (abo so nahrawaja), ale hišće njejsu do wikija wozjejwene. Tute dataje za nikoho widźomne njejsu, jenož za wužiwarja, kiž je je nahrał.',
+'uploadstash-clear' => 'Schowane nahrate dataje zhašeć',
+'uploadstash-nofiles' => 'Nimaš žane schowane nahrate dataje.',
+'uploadstash-badtoken' => 'Wuwjedźenje teje akcije je so njeporadźiło, snano dokelž twoje wobdźěłowanske daty su spadnjene. Spytaj hišće raz.',
+'uploadstash-errclear' => 'Wotstronjenje datajow je so njeporadźiło.',
+'uploadstash-refresh' => 'Lisćinu datajow aktualizować',
+
# img_auth script messages
'img-auth-accessdenied' => 'Přistup wotpokazany',
'img-auth-nopathinfo' => 'PATH_INFO faluje.
Twój serwer njeje za to konfigurował, zo by tute informacije dale posrědkował.
By móhł na CGI bazować a ani njemóže img_auth podpěrać.
-Hlej http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+Hlej [//www.mediawiki.org/wiki/Manual:Image_Authorization image authorization].',
'img-auth-notindir' => 'Požadana šćežka w konfigurowanym nahraćowym zapisu njeje.',
'img-auth-badtitle' => 'Njeje móžno z "$1" płaćiwy titul tworić.',
'img-auth-nologinnWL' => 'Njejsy přizjewjeny a "$1" w běłej lisćinje njeje.',
@@ -1626,7 +1676,7 @@ Slědowaca lisćina pokazuje jenož {{PLURAL:$1|prěni wotkaz strony|prěnjej $1
[[Special:WhatLinksHere/$2|Dospołna lisćina]] steji k dispoziciji.',
'nolinkstoimage' => 'Njejsu strony, kotrež na tutu dataju wotkazuja.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Dalše wotkazy]] k tutej dataji wobhladać.',
-'redirectstofile' => '{{PLURAL:$1|Slědowaca dataja pósrednja|Slědowacej $1 pósrědnjatej|Slědowace $1 posrědnjaju|Slěddowacych $1 pósrědnja}} k toś tej dataji dalej:',
+'linkstoimage-redirect' => '$1 (datajowe dalesposrědkowanje) $2',
'duplicatesoffile' => '{{PLURAL:$1|Slědowaca dataja je duplikat|Slědowacej $1 dataji stej duplikata|Slědowace $1 dataje su duplikaty|Slědowacych $1 duplikatow je duplikaty}} tuteje dataje ([[Special:FileDuplicateSearch/$2|dalše podrobnosće]])::',
'sharedupload' => 'Tuta dataja je z $1 a da so za druhe projekty wužiwać.',
'sharedupload-desc-there' => 'Tuta dataja je z $1 a da so přez druhe projekty wužiwać. Prošu hlej [$2 stronu datajoweho wopisanja] za dalše informacije.',
@@ -1712,15 +1762,16 @@ Slědowaca lisćina pokazuje jenož {{PLURAL:$1|prěni wotkaz strony|prěnjej $1
'statistics-users-active-desc' => 'Wužiwarjo, kotÅ™iž su {{PLURAL:$1|wÄera|w zaÅ„dźenymaj $1 dnjomaj|w zaÅ„dźenych $1 dnjach|w zaÅ„dźenych $1 dnjach}} aktiwni byli',
'statistics-mostpopular' => 'Najhusćišo wopytowane strony',
-'disambiguations' => 'Rozjasnjenja wjacezmyslnosće',
+'disambiguations' => 'Strony, kotrež na strony wjacezmyslnosće wotkazuja',
'disambiguationspage' => 'Template:Wjacezmyslnosć',
'disambiguations-text' => "Slědowace strony na '''rozjasnjenje wjacezmyslnosće''' wotkazuja. Měli město toho na poprawnu stronu wotkazać.<br />Strona so jako rozjasnjenje wjacezmyslnosće zarjaduje, jeli předłohu wužiwa, na kotruž so wot [[MediaWiki:Disambiguationspage]] wotkazuje.",
-'doubleredirects' => 'Dwójne daleposrědkowanja',
-'doubleredirectstext' => 'Tuta strona nalistuje strony, kotrež k druhim daleposrědkowanskim stronam dale posrědkuja.
+'doubleredirects' => 'Dwójne daleposrědkowanja',
+'doubleredirectstext' => 'Tuta strona nalistuje strony, kotrež k druhim daleposrědkowanskim stronam dale posrědkuja.
Kóžda rjadka wobsahuje wotkazy k prÄ›njemu a druhemu daleposrÄ›dkowanju kaž tež cil druheho daleposrÄ›dkowanja, kotryž je zwjetÅ¡a "woprawdźita" cilowa strona, na kotruž prÄ›nje daleposrÄ›dkowanje měło pokazać. <del>PÅ™eÅ¡mórnjene</del> zapiski su hižo sÄinjene.',
-'double-redirect-fixed-move' => '[[$1]] bu přesunjeny, je nětko daleposrědkowanje do [[$2]]',
-'double-redirect-fixer' => 'Porjedźer daleposrědkowanjow',
+'double-redirect-fixed-move' => '[[$1]] bu přesunjeny, je nětko daleposrědkowanje do [[$2]]',
+'double-redirect-fixed-maintenance' => 'Dwójne dalesposrědkowanje wot [[$1]] do [[$2]] so porjedźuje',
+'double-redirect-fixer' => 'Porjedźer daleposrědkowanjow',
'brokenredirects' => 'Skóncowane daleposrědkowanja',
'brokenredirectstext' => 'Slědowace daleposrědkowanja wotkazuja na njeeksistowace strony:',
@@ -1797,6 +1848,7 @@ Prošu wobkedźbuj, zo druhe websydła móža na dataju z direktnym URL wotkazow
'pager-newer-n' => '{{PLURAL:$1|nowši 1|nowšej $1|nowše $1|nowšich $1}}',
'pager-older-n' => '{{PLURAL:$1|starši 1|staršej $1|starše $1|staršich $1}}',
'suppress' => 'Dohladowanje',
+'querypage-disabled' => 'Tuta specialna strona je z wukonowych pÅ™iÄinow znjemóžnjena.',
# Book sources
'booksources' => 'Pytanje po ISBN',
@@ -1806,8 +1858,8 @@ Prošu wobkedźbuj, zo druhe websydła móža na dataju z direktnym URL wotkazow
'booksources-invalid-isbn' => 'Podate ISBN-ÄisÅ‚o njezda so pÅ‚aćiwe być; pÅ™epruwuj za zmylkami, z tym zo z orginialneho žórÅ‚a kopÄ›rujeÅ¡.',
# Special:Log
-'specialloguserlabel' => 'Wužiwar:',
-'speciallogtitlelabel' => 'Strona:',
+'specialloguserlabel' => 'Wukonjer:',
+'speciallogtitlelabel' => 'Cil (titul abo wužiwar):',
'log' => 'Protokole',
'all-logs-page' => 'WÅ¡Ä› zjawne protokole',
'alllogstext' => 'Kombinowane zwobraznjenje wšěch k dispozicij stejacych protokolow w {{GRAMMAR:lokatiw|{{SITENAME}}}}. Móžeš napohlad wobmjezować, wuběrajo typ protokola, wužiwarske mjeno (dźiwajo na wulkopisanje) abo potrjechu stronu (tež dźiwajo na wulkopisanje).',
@@ -1846,11 +1898,13 @@ Hlej tež [[Special:WantedCategories|požadane kategorije]].',
'sp-deletedcontributions-contribs' => 'přinoški',
# Special:LinkSearch
-'linksearch' => 'Eksterne wotkazy',
+'linksearch' => 'Pytanje eksternych wotkazow',
'linksearch-pat' => 'Pytanski muster:',
'linksearch-ns' => 'Mjenowy rum:',
'linksearch-ok' => 'Pytać',
-'linksearch-text' => 'Zastupniske znamjenja kaž "*.wikipedia.org" smědźa so wužiwać.<br />Podpěrowane protokole: <tt>$1</tt>',
+'linksearch-text' => 'Zastupniske znamješka kaž "*.wikipedia.org" móža so wužiwać.
+Znajmjeńša hłowna domena je trěbna, na přikład "*.org".<br />
+Podpěrowane protokole: <tt>$1</tt> (prošu njepodaj je w swojim pytanje).',
'linksearch-line' => '$1 je z $2 wotkazany.',
'linksearch-error' => 'Zastupniske znamjenja dadźa so jenož na spoÄatku URL wužiwać.',
@@ -1910,6 +1964,10 @@ E-mejlowa adresa, kotruž sy w [[Special:Preferences|swojich wužiwarskich nasta
'noemailtext' => 'Tutón wužiwar njeje płaćiwu e-mejlowu adresu podał.',
'nowikiemailtitle' => 'Žana e-mejl dowolena',
'nowikiemailtext' => 'Tutón wužiwar nochce žane e-mejlki wot druhich wužiwarjow dóstać.',
+'emailnotarget' => 'Njeeksistowace abo njepłaćiwe wužiwarske mjeno za přijimowarja.',
+'emailtarget' => 'Wužiwarske mjeno přijimowarja zapodać',
+'emailusername' => 'Wužiwarske mjeno:',
+'emailusernamesubmit' => 'Wotpósłać',
'email-legend' => 'E-mejlku druhemu wužiwarjej {{GRAMMAR:genitiw|{{SITENAME}}}} pósłać',
'emailfrom' => 'Wot:',
'emailto' => 'Komu:',
@@ -1934,12 +1992,12 @@ E-mejlowa adresa, kotruž sy w [[Special:Preferences|swojich wužiwarskich nasta
'watchlistanontext' => 'Dyrbiš so $1, zo by swoje wobkedźbowanki wobhladać abo wobdźěłać móhł.',
'watchnologin' => 'Njejsy přizjewjeny.',
'watchnologintext' => 'Dyrbiš [[Special:UserLogin|přizjewjeny]] być, zo by swoje wobkedźbowanki změnić móhł.',
-'addedwatch' => 'Strona bu wobkedźbowankam přidata.',
+'addwatch' => 'K wobkedźbowankam přidać',
'addedwatchtext' => "Strona [[:$1]] bu k twojim [[Special:Watchlist|wobkedźbowankam]] přidata.
PÅ™ichodne zmÄ›ny tuteje strony a pÅ™isÅ‚uÅ¡neje diskusijneje strony budu so tam nalistować a strona so '''w tuÄnym pismje''' w [[Special:RecentChanges|lisćinje aktualnych zmÄ›nach]] zjewi, zo by so wosnadniÅ‚o ju wubrać.
Jeli chceš stronu pozdźišo ze swojich wobkedźbowankow wotstronić, klikń na rajtark „njewobkedźbować†horjeka na tutej stronje.",
-'removedwatch' => 'Strona bu z wobkedźbowankow wotstronjena',
+'removewatch' => 'Z wobkedźbowankow wotstronić',
'removedwatchtext' => 'Strona "[[:$1]]" bu z [[Special:Watchlist|twojich wobkedźbowankow]] wotstronjena.',
'watch' => 'wobkedźbować',
'watchthispage' => 'stronu wobkedźbować',
@@ -1960,8 +2018,9 @@ Jeli chceš stronu pozdźišo ze swojich wobkedźbowankow wotstronić, klikń na
'watchlist-options' => 'Opcije wobkedźbowankow',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Wobkedźbuju…',
-'unwatching' => 'Njewobkedźbuju…',
+'watching' => 'Wobkedźbuju…',
+'unwatching' => 'Njewobkedźbuju…',
+'watcherrortext' => 'Při měnjenju nastajenjow wašich wobkedźbowankow za "$1" je zmylk wustupił.',
'enotif_mailer' => '{{SITENAME}} E-mejlowe zdźělenje',
'enotif_reset' => 'Wšě strony jako wopytane woznamjenić',
@@ -1980,9 +2039,9 @@ Strona we {{GRAMMAR:lokatiw|{{SITENAME}}}} z mjenom $PAGETITLE bu dnja $PAGEEDIT
$NEWPAGE
-Zjeće wobdźěłaćerja: $PAGESUMMARY $PAGEMINOREDIT
+Zjeće wobdźěłarja: $PAGESUMMARY $PAGEMINOREDIT
-Skontaktuj wobdźěłarja:
+Staj so z wobdźěłarjom do zwiska:
e-mejl: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
@@ -1992,15 +2051,18 @@ Móžeš tež zdźělenske marki za wšě swoje wobkedźbowane strony we swojich
Twój přećelny zdźělenski system {{GRAMMAR:genitiw|{{SITENAME}}}}
--
-Zo by nastajenja twojich wobkedźbowankow změnił, wopytaj
-{{fullurl:{{#special:Watchlist}}/edit}}
+Zo by swoje nastajenja za e-mejlowe zdźělenja změnił, wopytaj
+{{canonicalurl:{{#special:Preferences}}}}
+
+Zo by nastajenja swojich wobkedźbowankow změnił, wopytaj
+{{canonicalurl:{{#special:EditWatchlist}}}}
Zo by stronu ze swojich wobkedźbowankow zhašał, wopytaj
$UNWATCHURL
Wotmołwy a dalša pomoc:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Stronu zhašeć',
@@ -2016,7 +2078,7 @@ Wotmołwy a dalša pomoc:
ProÅ¡u potwjerdź, zo maÅ¡ wotpohlad to Äinić, zo rozumiÅ¡ sćěwki a zo to wotpowÄ›dujo [[{{MediaWiki:Policy-url}}|zasadam tutoho wikija]] ÄiniÅ¡.',
'actioncomplete' => 'DokónÄene',
'actionfailed' => 'Akcija je so njeporadźiła',
-'deletedtext' => 'Strona „<nowiki>$1</nowiki>†bu wušmórnjena. Hlej $2 za lisćinu aktualnych wušmórnjenjow.',
+'deletedtext' => 'Strona „$1†bu wušmórnjena. Hlej $2 za lisćinu aktualnych wušmórnjenjow.',
'deletedarticle' => 'je stronu [[$1]] wušmórnył.',
'suppressedarticle' => '"[[$1]]" potłóÄeny',
'dellogpage' => 'Protokol wušmórnjenjow',
@@ -2068,7 +2130,7 @@ Hlej [[Special:ProtectedPages|lisćinu škitanych stronow]] za lisćinu tuchwilu
'protect_expiry_invalid' => 'NjepÅ‚aćiwy Äas spadnjenja.',
'protect_expiry_old' => 'Čas škita leži w zańdźenosći.',
'protect-unchain-permissions' => 'Dalše škitne opcije dopušćić',
-'protect-text' => 'Tu móžeš status škita strony <b><nowiki>$1</nowiki></b> wobhladać a změnić.',
+'protect-text' => 'Tu móžeš status škita strony <b>$1</b> wobhladać a změnić.',
'protect-locked-blocked' => "NjemóžeÅ¡ Å¡kit strony zmÄ›niÄ, dokelž twoje konto je zablokowane. Tu widźiÅ¡ aktualne Å¡kitne nastajenja za stronu'''„$1“:'''",
'protect-locked-dblock' => "Datowa banka je zawrjena, tohodla njemóžeš škit strony změnić. Tu widźiš aktualne škitne nastajenja za stronu'''„$1“:'''",
'protect-locked-access' => "Nimaš trěbne prawa, zo by škit strony změnił. Tu widźiš aktualne škitne nastajenja za stronu'''„$1“:'''",
@@ -2119,8 +2181,8 @@ Hlej [[Special:ProtectedPages|lisćinu škitanych stronow]] za lisćinu tuchwilu
'undeletepagetext' => '{{PLURAL:$1|Slědowaca strona bu wušmórnjena, ale je|Slědowacej $1 stronje buštej wušmórnjenej, ale stej|Slědowace $1 strony buchu wušmórnjene, ale su|Slědowacych $1 bu wušmórnjene, ale je}} hišće w archiwje a {{PLURAL:$1|da so|datej so|dadźa so|da so}} wobnowić.
Archiw da so periodisce wuprózdnić.',
'undelete-fieldset-title' => 'Wersije wobnowić',
-'undeleteextrahelp' => "Zo by wšě stawizny strony wobnowił, wostaj prošu wšě kontrolowe kašćiki njewubrane a klikń na '''''Wobnowić'''''. Zo by selektiwne wobnowjenje přewjedł, wubjer kašćiki, kotrež wersijam wotpowěduja, kotrež maja so wobnowić a klikń na '''''Wobnowić'''''.
-Kliknjenje na '''''Wróćo stajić''''' komentarne polo a wšě kontrolowe kašćiki wuprózdni.",
+'undeleteextrahelp' => "Zo by wšě stawizny strony wobnowił, wostaj prošu wšě kontrolowe kašćiki njewubrane a klikń na '''''{{int:undeletebtn}}'''''.
+Zo by selektiwne wobnowjenje přewjedł, wubjer kašćiki, kotrež wersijam wotpowěduja, kotrež maja so wobnowić, a klikń na '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|wersija|wersiji|wersije|wersijow}} {{PLURAL:$1|archiwowana|archiwowanej|archiwowane|archiwowane}}',
'undeletehistory' => 'Jeli tutu stronu wobnowiš, so wšě (tež prjedy wušmórnjene) wersije zaso do stawiznow wobnowja. Jeli bu po wušmórnjenju nowa strona ze samsnym mjenom wutworjena, budu so wobnowjene wersije w prjedawšich stawiznach jewić.',
'undeleterevdel' => 'Wobnowjenje so njepřewjedźe, jeli je najwyša strona docpěta abo datajowa wersija budźe so zdźěla wušmórnje.
@@ -2160,9 +2222,12 @@ $1',
'undelete-show-file-submit' => 'Haj',
# Namespace form on various pages
-'namespace' => 'Mjenowy rum:',
-'invert' => 'Wuběr wobroćić',
-'blanknamespace' => '(Nastawki)',
+'namespace' => 'Mjenowy rum:',
+'invert' => 'Wuběr wobroćić',
+'tooltip-invert' => 'Klikń na tutón kašćik, zo by změny na stronach we wubranym mjenowym rumje schował (a, jeli wubrany, w zwjazanym mjenowym rumje)',
+'namespace_association' => 'Nawjazany mjenowy rum',
+'tooltip-namespace_association' => 'Klikń na tutón kašćik, zo by diskusijny mjenowy rum abo temowy mjenowy rum, kotryž je z wubranym mjenowym rumom zwjazany, tež zapřijał',
+'blanknamespace' => '(Nastawki)',
# Contributions
'contributions' => 'Přinoški wužiwarja',
@@ -2211,11 +2276,13 @@ Najnowši zapisk w protokolu blokowanjow so deleka jako referenca podawa:',
'whatlinkshere-filters' => 'Filtry',
# Block/unblock
+'autoblockid' => '#$1 awtomatisce blokować',
+'block' => 'Wužiwarja blokować',
+'unblock' => 'Blokowanje wužiwarja zběhnyć',
'blockip' => 'Wužiwarja zablokować',
'blockip-title' => 'Wužiwarja blokować',
'blockip-legend' => 'Wužiwarja blokować',
'blockiptext' => 'Wužij slÄ›dowacy formular deleka, zo by pisanski pÅ™istup za podatu IP-adresu abo wužiwarske mjeno blokowaÅ‚. To měło so jenož stać, zo by wandalizmej zadźěwaÅ‚o a woptpowÄ›dujo [[{{MediaWiki:Policy-url}}|zasadam]]. Zapodaj deleka pÅ™iÄinu (na pÅ™. citujo wosebite strony, kotrež bÄ›chu z woporom wandalizma).',
-'ipaddress' => 'IP-adresa',
'ipadressorusername' => 'IP-adresa abo wužiwarske mjeno',
'ipbexpiry' => 'Spadnjenje',
'ipbreason' => 'PÅ™iÄina:',
@@ -2229,7 +2296,7 @@ Najnowši zapisk w protokolu blokowanjow so deleka jako referenca podawa:',
** njepřihódne wužiwarske mjeno
** znowapřizjewjenje na přeco zablokowaneho wužiwarja
** proksy, wandalizma jednotliwych wužiwarjow dla dołhodobnje zablokowany',
-'ipbanononly' => 'Jenož anonymnych wužiwarjow zablokować',
+'ipb-hardblock' => 'Přizjewjenym wužiwarjam zadźěwać, pod tutej IP-adresu změny přewjesć',
'ipbcreateaccount' => 'Wutworjenju nowych kontow zadźěwać',
'ipbemailban' => 'Wotpósłanje mejlkow znjemóžnić',
'ipbenableautoblock' => 'IP-adresy blokować kiž buchu přez tutoho wužiwarja hižo wužiwane kaž tež naslědne adresy, z kotrychž so wobdźěłanje pospytuje',
@@ -2240,12 +2307,15 @@ Najnowši zapisk w protokolu blokowanjow so deleka jako referenca podawa:',
'ipbotherreason' => 'Druha/pÅ™idatna pÅ™iÄina:',
'ipbhidename' => 'Wužiwarske mjeno stawiznach a lisćinach schować',
'ipbwatchuser' => 'Wužiwarsku a diskusijnu stronu tutoho wužiwarja wobkedźbować',
-'ipballowusertalk' => 'Tutomu wužiwarjej dowolić swójsku diskusijnu stronu wobdźěłać, mjeztym zo je blokowany',
+'ipb-disableusertalk' => 'Tutomu wužiwarjej zadźěwać, swoju diskusijnu stronu wobdźěłać, mjeztym zo je zablokowany',
'ipb-change-block' => 'Wužiwarja z tutymi nastajenjemi znowa blokować',
+'ipb-confirm' => 'Blokowanje wobkrućić',
'badipaddress' => 'Njepłaćiwa IP-adresa',
'blockipsuccesssub' => 'Zablokowanje wuspěšne',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] bu zablokowany.
<br />Hlej [[Special:IPBlockList|lisćinu blokowanjow IP]], zo by zablokowanjow pruwował.',
+'ipb-blockingself' => 'ChceÅ¡ samoho blokować! ChceÅ¡ to woprawdźe Äinić?',
+'ipb-confirmhideuser' => 'ChceÅ¡ runje wužiwarja z nastajenjom "wužiwarja schować" blokować. To k tomu dowjedźe, zo mjeno wužiwarja so we wÅ¡ch lisćinach a protokolowych zapiskach potłóÄi. ChceÅ¡ to woprawdźe Äinić?',
'ipb-edit-dropdown' => 'pÅ™iÄiny zablokowanjow wobdźěłać',
'ipb-unblock-addr' => 'zablokowanje wužiwarja „$1“ zběhnyć',
'ipb-unblock' => 'zablokowanje wužiwarja abo IP-adresy zběhnyć',
@@ -2255,17 +2325,23 @@ Najnowši zapisk w protokolu blokowanjow so deleka jako referenca podawa:',
'unblockiptext' => 'Wužij formular deleka, zo by blokowanje IP-adresy abo wužiwarskeho mjena zběhnył.',
'ipusubmit' => 'Tute blokÄ›rowanje skónÄić',
'unblocked' => 'Blokowanje wužiwarja [[User:$1|$1]] bu zběhnjene',
+'unblocked-range' => 'Blokowanje za $1 je so zběhnyło',
'unblocked-id' => 'Blokowanje ID $1 bu zběhnjene.',
+'blocklist' => 'Zablokowani wužiwarjo',
'ipblocklist' => 'Zablokowani wužiwarjo',
'ipblocklist-legend' => 'Pytanje za zablokowanym wužiwarjom',
-'ipblocklist-username' => 'Wužiwarske mjeno abo IP-adresa:',
-'ipblocklist-sh-userblocks' => '$1 kontowe zablokowanja',
-'ipblocklist-sh-tempblocks' => '$1 nachwilne zablokowanja',
-'ipblocklist-sh-addressblocks' => '$1 IP-zablokowanja',
+'blocklist-userblocks' => 'Kontowe blokowanja schować',
+'blocklist-tempblocks' => 'Nachwilne blokowanja schować',
+'blocklist-addressblocks' => 'Blokowanja jednotliwych IP-adresow schować',
+'blocklist-timestamp' => 'Časowy kołk',
+'blocklist-target' => 'Cil',
+'blocklist-expiry' => 'Spadnje',
+'blocklist-by' => 'Blokowacy administrator',
+'blocklist-params' => 'Blokowanske parametry',
+'blocklist-reason' => 'PÅ™iÄina',
'ipblocklist-submit' => 'Pytać',
'ipblocklist-localblock' => 'Lokalne blokowanje',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Druhe blokowanje|Druhej blokowani|Druhe blokowanja|Druhe blokowanja}}',
-'blocklistline' => '$1, $2 je wužiwarja $3 zablokował ($4)',
'infiniteblock' => 'na přeco',
'expiringblock' => 'spadnje $1 $2',
'anononlyblock' => 'jenož anonymnych blokować',
@@ -2285,7 +2361,7 @@ Najnowši zapisk w protokolu blokowanjow so deleka jako referenca podawa:',
'blocklog-showsuppresslog' => 'Tutón wužiwar bu prjedy zablokowany a schowany. Protokol potłóÄenjow so deleka jako referenca podawa:',
'blocklogentry' => 'je wužiwarja [[$1]] zablokowaÅ‚ z Äasom spadnjenja $2 $3',
'reblock-logentry' => 'zmÄ›ni blokowanske nastajenja za [[$1]] z Äasom spadnjenja $2 $3',
-'blocklogtext' => 'To je protokol blokowanja a wotblokowanja wužiwarjow. Awtomatisce blokowane IP-adresy so njenalistuja. Hlej [[Special:IPBlockList|lisćinu zablokowanych IP-adresow]] za lisćinu tuchwilnych wuhnaćow a zablokowanjow.',
+'blocklogtext' => 'To je protokol blokowanja a wotblokowanja wužiwarjow. Awtomatisce blokowane IP-adresy so njenalistuja. Hlej [[Special:BlockList|lisćinu zablokowanych IP-adresow]] za lisćinu tuchwilnych wuhnaćow a zablokowanjow.',
'unblocklogentry' => 'zablokowanje wužiwarja $1 bu zběhnjene',
'block-log-flags-anononly' => 'jenož anonymnych',
'block-log-flags-nocreate' => 'wutworjenje wužiwarskich kontow znjemóžnjene',
@@ -2299,9 +2375,9 @@ Najnowši zapisk w protokolu blokowanjow so deleka jako referenca podawa:',
'ipb_expiry_temp' => 'Blokowanja schowanych wužiwarskich mjenow maja permanentne być.',
'ipb_hide_invalid' => 'Njeje móžno tute konto potłóÄić; ma snano pÅ™ewjele zmÄ›now.',
'ipb_already_blocked' => 'Wužiwar „$1†je hižo zablokowany.',
-'ipb-needreblock' => '== Hižo zablokowany ==
-$1 je hižo zablokowany. Chceš nastajenja změnić?',
+'ipb-needreblock' => '$1 je hižo zablokowany. Chceš nastajenja změnić?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Druhe blokowanje|Druhej blokowani|Druhe blokowanja|Druhe blokowanja}}',
+'unblock-hideuser' => 'Njemóžeš blokowanje za tutoho wužiwarja zběhnyć, dokelž jeho wužiwarske mjeno je so schowało.',
'ipb_cant_unblock' => 'Zmylk: Njemóžno ID zablokowanja $1 namakać. Zablokowanje je so najskerje mjeztym zběhnyło.',
'ipb_blocked_as_range' => 'Zmylk: IP $1 njeje direktnje zablokowana a njeda so wublokować. Blokuje so wšak jako dźěl wobwoda $2, kotryž da so wublokować.',
'ip_range_invalid' => 'Njepłaciwy wobłuk IP-adresow.',
@@ -2336,6 +2412,7 @@ $1 je hižo zablokowany. Chceš nastajenja změnić?',
'unlockdbsuccesstext' => 'Datowa banka bu wotamknjena.',
'lockfilenotwritable' => 'Do dataje zamknjenja datoweje banki njeda so zapisować. Za zamknjenje abo wotamknjenje datoweje banki dyrbi webowy serwer pisanske prawo měć.',
'databasenotlocked' => 'Datajowa banka zamknjena njeje.',
+'lockedbyandtime' => '(wot {{GENDER:$1|$1}} dnja $2 $3)',
# Move page
'move-page' => '$1 přesunyć',
@@ -2448,7 +2525,7 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
'allmessagesname' => 'Mjeno',
'allmessagesdefault' => 'Standardny tekst',
'allmessagescurrent' => 'Aktualny tekst',
-'allmessagestext' => 'To je lisćina systemowych zdźělenkow, kotrež w mjenowym rumje MediaWiki k dispoziciji steja. Prošu wopytaj [http://www.mediawiki.org/wiki/Localisation lokalizaciju MediaWiki] a [http://translatewiki.net translatewiki.net], jeli chceš k powšitkownej lokalizaciji MediaWiki přinošować.',
+'allmessagestext' => 'To je lisćina systemowych zdźělenkow, kotrež w mjenowym rumje MediaWiki k dispoziciji steja. Prošu wopytaj [//www.mediawiki.org/wiki/Localisation lokalizaciju MediaWiki] a [//translatewiki.net translatewiki.net], jeli chceš k powšitkownej lokalizaciji MediaWiki přinošować.',
'allmessagesnotsupportedDB' => "Tuta strona njeda so wužiwać, dokelž '''\$wgUseDatabaseMessages''' bu znjemóžnjeny.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Po přiměrjenskim stawje filtrować:',
@@ -2591,9 +2668,7 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
'monobook.js' => '/* SlÄ›dowacy JavaScript zaÄita so za wužiwarjow, kotÅ™iž Å¡at MonoBook wužiwaja */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadaty su za tutón serwer znjemóžnjene.',
-'nocreativecommons' => 'Creative Commons RDF metadaty su za tutón serwer znjemóžnjene.',
-'notacceptable' => 'Serwer wikija njemóže daty we formaće poskićić, kotryž twój wudawanski nastroj móže Äitać.',
+'notacceptable' => 'Serwer wikija njemóže daty we formaće poskićić, kotryž twój wudawanski nastroj móže Äitać.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonymny wužiwar|Anonymnaj wužiwarjej|Anonymni wužiwarjo|Anonymni wužiwarjo}} we {{GRAMMAR:lokatiw|{{SITENAME}}}}',
@@ -2616,12 +2691,17 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
'spam_blanking' => 'WÅ¡Ä› wersije wobsahowachu wotkazy na $1, wuÄisćene.',
# Info page
-'infosubtitle' => 'Informacije za stronu',
-'numedits' => 'LiÄba zmÄ›now (nastawk): $1',
-'numtalkedits' => 'LiÄba zmÄ›now (diskusijna strona): $1',
-'numwatchers' => 'LiÄba wobkedźbowarjow: $1',
-'numauthors' => 'LiÄba rozdźělnych awtorow (nastawk): $1',
-'numtalkauthors' => 'LiÄba rozdźělnych awtorow (diskusijna strona): $1',
+'pageinfo-title' => 'Informacije za stronu "$1"',
+'pageinfo-header-edits' => 'Změny',
+'pageinfo-header-watchlist' => 'Wobkedźbowanki',
+'pageinfo-header-views' => 'Zwobraznjenja',
+'pageinfo-subjectpage' => 'Strona',
+'pageinfo-talkpage' => 'Diskusijna strona',
+'pageinfo-watchers' => 'LiÄba wobkedźbowarjow',
+'pageinfo-edits' => 'LiÄba zmÄ›now',
+'pageinfo-authors' => 'LiÄba rozdźělnych awtorow',
+'pageinfo-views' => 'LiÄba zwobraznjenjow',
+'pageinfo-viewsperedit' => 'Zwobraznjenja na změnu',
# Skin names
'skinname-standard' => 'Klasiski',
@@ -2633,25 +2713,6 @@ W poslednim padźe móžeš tež wotkaz wužiwać, na př. „[[{{#Special:Expor
'skinname-simple' => 'Jednory',
'skinname-modern' => 'Moderny',
-# Math options
-'mw_math_png' => 'Přeco jako PNG zwobraznić',
-'mw_math_simple' => 'HTML jeli jara jednory, hewak PNG',
-'mw_math_html' => 'HTML jeli móžno, hewak PNG',
-'mw_math_source' => 'Jako TeX wostajić (za tekstowe wobhladowaki)',
-'mw_math_modern' => 'Za moderne wobhladowaki doporuÄene',
-'mw_math_mathml' => 'MathML jeli móžno (eksperimentalnje)',
-
-# Math errors
-'math_failure' => 'Analyza njeje so poradźiła',
-'math_unknown_error' => 'njeznaty zmylk',
-'math_unknown_function' => 'njeznata funkcija',
-'math_lexing_error' => 'leksikalny zmylk',
-'math_syntax_error' => 'syntaktiski zmylk',
-'math_image_error' => 'Konwertowanje do PNG zwrěšćiło; kontroluj prawu instalaciju latex a dvipng (abo dvips + gs + konwertuj)',
-'math_bad_tmpdir' => 'Njemóžno do nachwilneho matematiskeho zapisa pisać abo jón wutworić',
-'math_bad_output' => 'Njemóžno do matematiskeho zapisa za wudaće pisać abo jón wutworić',
-'math_notexvc' => 'Wuwjedźomny texvc pobrachuje; prošu hlej math/README za konfiguraciju.',
-
# Patrolling
'markaspatrolleddiff' => 'Změnu jako přepruwowanu woznamjenić',
'markaspatrolledtext' => 'Tutu změnu nastawka jako přepruwowanu woznamjenić',
@@ -2687,22 +2748,25 @@ $1',
'nextdiff' => 'Přichodna změna →',
# Media information
-'mediawarning' => "'''Warnowanje''': Tutón datajowy typ móhł złowólny kod wobsahować. Hdyž so wuwjedźe, móhł so twój system wobškodźić.",
-'imagemaxsize' => "Maksimalna wobrazowa wulkosć:<br />''(za strony datajoweho wopisanja)''",
-'thumbsize' => 'Wulkosć miniaturkow (thumbnails):',
-'widthheight' => '$1x$2',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|strona|stronje|strony|stronow}}',
-'file-info' => 'Wulkosć dataje: $1, typ MIME: $2',
-'file-info-size' => '$1 × $2 pikselow, wulkosć dataje: $3, typ MIME: $4',
-'file-nohires' => '<small>Za tutu dataju žane wyše rozeznaće njeje.</small>',
-'svg-long-desc' => 'SVG-dataja, zakładna wulkosć: $1 × $2 pikselow, datajowa wulkosć: $3',
-'show-big-image' => 'Wersija z wyšim rozeznaćom',
-'show-big-image-thumb' => '<small>Wulkosć miniaturki: $1 × $2 pikselow</small>',
-'file-info-gif-looped' => 'BjezkónÄna sekla',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|wobłuk|wobłukaj|wobłuki|wobłukow}}',
-'file-info-png-looped' => 'Sekla',
-'file-info-png-repeat' => '{{PLURAL:$1|$1 raz|dwójce|$1 razy|$1 razow}} wotehrata',
-'file-info-png-frames' => '$1 {{PLURAL:$1|wobłuk|wobłukaj|wobłuki|wobłukow}}',
+'mediawarning' => "'''Warnowanje''': Tutón datajowy typ móhł złowólny kod wobsahować. Hdyž so wuwjedźe, móhł so twój system wobškodźić.",
+'imagemaxsize' => "Maksimalna wobrazowa wulkosć:<br />''(za strony datajoweho wopisanja)''",
+'thumbsize' => 'Wulkosć miniaturkow (thumbnails):',
+'widthheight' => '$1x$2',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|strona|stronje|strony|stronow}}',
+'file-info' => 'Wulkosć dataje: $1, typ MIME: $2',
+'file-info-size' => '$1 × $2 pikselow, wulkosć dataje: $3, typ MIME: $4',
+'file-info-size-pages' => '$1 × $2 pikselow, wulkosć dataje: $3, MIME-typ: $4, $5 {{PLURAL:$5|strona|stronje|strony|stronow}}',
+'file-nohires' => '<small>Za tutu dataju žane wyše rozeznaće njeje.</small>',
+'svg-long-desc' => 'SVG-dataja, zakładna wulkosć: $1 × $2 pikselow, datajowa wulkosć: $3',
+'show-big-image' => 'Wersija z wyšim rozeznaćom',
+'show-big-image-preview' => '<small>Wulkosć tutoho přehlada: $1.</small>',
+'show-big-image-other' => '<small>Druhe rozeznaća: $1.</small>',
+'show-big-image-size' => '$1 × $2 pikselow',
+'file-info-gif-looped' => 'BjezkónÄna sekla',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|wobłuk|wobłukaj|wobłuki|wobłukow}}',
+'file-info-png-looped' => 'Sekla',
+'file-info-png-repeat' => '{{PLURAL:$1|$1 raz|dwójce|$1 razy|$1 razow}} wotehrata',
+'file-info-png-frames' => '$1 {{PLURAL:$1|wobłuk|wobłukaj|wobłuki|wobłukow}}',
# Special:NewFiles
'newimages' => 'Nowe dataje',
@@ -2727,14 +2791,20 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
'metadata-help' => 'Dataja wobsahuje pÅ™idatne informacije, kotrež pochadźa z digitalneje kamery abo skenera. Jeli dataja bu wot toho zmÄ›njena je móžno, zo nÄ›kotre podrobnosće z nÄ›tÄiÅ¡eho stawa wotchila.',
'metadata-expand' => 'Podrobnosće pokazać',
'metadata-collapse' => 'Podrobnosće schować',
-'metadata-fields' => 'Sćěhowace EXIF-metadaty so standardnje pokazuja. Druhe so po standardźe schowaja a móža so z tabele rozfałdować.
+'metadata-fields' => 'Slědowace pola metadatow, kotrež su w tutej zdźělence podate, budu so do stronow wopisanje wobrazow zapřijimać, hdyž tabela metadatow je sfałdowana. Druhe so po standardźe njepokazuja.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Šěrokosć',
@@ -2749,13 +2819,11 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
'exif-ycbcrpositioning' => 'Zaměstnjenje Y a C',
'exif-xresolution' => 'Wodorune rozeznaće',
'exif-yresolution' => 'Padorune rozeznaće',
-'exif-resolutionunit' => 'Jednotka rozeznaća X a Y',
'exif-stripoffsets' => 'Městno wobrazowych datow',
'exif-rowsperstrip' => 'LiÄba rjadkow na pas',
'exif-stripbytecounts' => 'Bajty na komprimowany pas',
'exif-jpeginterchangeformat' => 'Offset k JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bajty JPEG datow',
-'exif-transferfunction' => 'Přenošowanska funkcija',
'exif-whitepoint' => 'Barbowa kwalita běłeho dypka',
'exif-primarychromaticities' => 'Barbowa kwalita primarnych barbow',
'exif-ycbcrcoefficients' => 'Koeficienty matriksy za transformaciju barbneho ruma',
@@ -2774,7 +2842,6 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
'exif-compressedbitsperpixel' => 'Modus wobrazoweje kompresije',
'exif-pixelydimension' => 'Šěrokosć wobraza',
'exif-pixelxdimension' => 'Wysokosć wobraza',
-'exif-makernote' => 'Přispomnjenki zhotowjerja',
'exif-usercomment' => 'Přispomjenja wužiwarja',
'exif-relatedsoundfile' => 'Zwjazana zynkowa dataja',
'exif-datetimeoriginal' => 'Datum a Äas wutworjenja datow',
@@ -2788,7 +2855,6 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
'exif-exposureprogram' => 'Naswětlenski program',
'exif-spectralsensitivity' => 'Spektralna cutliwosć',
'exif-isospeedratings' => 'Cutliwosć filma abo sensora (ISO)',
-'exif-oecf' => 'Optoelektroniski pÅ™eliÄenski faktor (OECF)',
'exif-shutterspeedvalue' => 'Čas zasłonoweje zawěrki APEX',
'exif-aperturevalue' => 'Zasłonowa šěrokosć APEX',
'exif-brightnessvalue' => 'APEX-swětłosć',
@@ -2801,7 +2867,6 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
'exif-focallength' => 'Palnišćowa zdalenosć',
'exif-subjectarea' => 'Wobwod předmjeta',
'exif-flashenergy' => 'Sylnosć błyska',
-'exif-spatialfrequencyresponse' => 'Cutliwosć rumoweje frekwency',
'exif-focalplanexresolution' => 'Wodorune rozeznaće sensora',
'exif-focalplaneyresolution' => 'Padorune rozeznaće sensora',
'exif-focalplaneresolutionunit' => 'Jednotka rozeznaća sensora',
@@ -2810,7 +2875,6 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
'exif-sensingmethod' => 'Měrjenska metoda',
'exif-filesource' => 'Žórło dataje',
'exif-scenetype' => 'Typ sceny',
-'exif-cfapattern' => 'Muster CFA',
'exif-customrendered' => 'Wot wužiwarja definowane předźěłanje wobrazow',
'exif-exposuremode' => 'Naswětlenski modus',
'exif-whitebalance' => 'Balansa běłeho dypka',
@@ -2855,10 +2919,79 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
'exif-gpsareainformation' => 'Mjeno wobwoda GPS',
'exif-gpsdatestamp' => 'Datum GPS',
'exif-gpsdifferential' => 'Diferencialna korektura GPS',
+'exif-jpegfilecomment' => 'Komentar JPEG-dataje',
+'exif-keywords' => 'KluÄowe sÅ‚owa',
+'exif-worldregioncreated' => 'Swětowy region, w kotrymž bu sfotografowane',
+'exif-countrycreated' => 'Kraj, w kotrymž bu sfotografowane',
+'exif-countrycodecreated' => 'Kod za kraj, w kotrymž je so sfotografowało',
+'exif-provinceorstatecreated' => 'Zwjazkowy kraj, w kotrymž bu sfotografowane',
+'exif-citycreated' => 'Město, w kotrymž bu sfotografowane',
+'exif-sublocationcreated' => 'Wobwod města, w kotrymž wobraz je so sfotografował',
+'exif-worldregiondest' => 'Pokazany swětowy region',
+'exif-countrydest' => 'Pokazany kraj',
+'exif-countrycodedest' => 'Kod za pokazany kraj',
+'exif-provinceorstatedest' => 'Pokazany zwjazkowy kraj',
+'exif-citydest' => 'Pokazane město',
+'exif-sublocationdest' => 'Wobwod pokazaneho města',
'exif-objectname' => 'Krótki titul',
+'exif-specialinstructions' => 'Wosebite instrukcije',
+'exif-headline' => 'Nadpis',
+'exif-credit' => 'Mjenowanje/Poskićowar',
+'exif-source' => 'Žórło',
+'exif-editstatus' => 'Wobdźěłowanski status wobraza',
+'exif-urgency' => 'Nuznosć',
+'exif-fixtureidentifier' => 'Mjeno kolumny',
+'exif-locationdest' => 'Zwobraznjene městno',
+'exif-locationdestcode' => 'Kod za zwobraznjene městno',
+'exif-objectcycle' => 'Čas dnja, za kotryž medij je mysleny',
+'exif-contact' => 'Kontaktowe informacije',
+'exif-writer' => 'Spisar',
+'exif-languagecode' => 'RÄ›Ä',
+'exif-iimversion' => 'IIM-wersija',
+'exif-iimcategory' => 'Kategorija',
+'exif-iimsupplementalcategory' => 'Přidatne kategorije',
+'exif-datetimeexpires' => 'Njewužiwać po',
+'exif-datetimereleased' => 'Wozjewjeny dnja',
+'exif-originaltransmissionref' => 'Kod městna, wot kotrehož je so foto přenjesło',
+'exif-identifier' => 'Identfikator',
+'exif-lens' => 'Wužity objektiw',
+'exif-serialnumber' => 'Serijowe ÄisÅ‚o kamery',
+'exif-cameraownername' => 'Wobsedźer kamery',
+'exif-label' => 'Pomjenowanje',
+'exif-datetimemetadata' => 'Datum, hdyž su so metadaty posledni raz změnili',
+'exif-nickname' => 'ZwuÄene mjeno wobraza',
+'exif-rating' => 'Pohódnoćenje (z 5)',
+'exif-rightscertificate' => 'Certifikat zarjadowanja prawow',
+'exif-copyrighted' => 'Status awtorskeho prawa:',
+'exif-copyrightowner' => 'Mějićel awtorskeho prawa',
+'exif-usageterms' => 'Wužiwanske wuměnjenja',
+'exif-webstatement' => 'Online-deklaracija wo awtorskim prawje',
+'exif-originaldocumentid' => 'Jednozmyslny ID originalneho dokumenta',
+'exif-licenseurl' => 'URL za licencu awtorskeho prawa',
+'exif-morepermissionsurl' => 'Alternatiwne licencne informacije',
+'exif-attributionurl' => 'Při zasowužiwanju tutoho dźěła, wotkazaj prošu do:',
+'exif-preferredattributionname' => 'Při zasowužiwanju tutoho dźěła, naspomń prošu',
+'exif-pngfilecomment' => 'Komentar PNG-dataje',
+'exif-disclaimer' => 'Wuzamknjenje rukowanja',
+'exif-contentwarning' => 'Wobsahowe warnowanje',
+'exif-giffilecomment' => 'Komentar GIF-dataje',
+'exif-intellectualgenre' => 'Typ medija',
+'exif-subjectnewscode' => 'Temowy kod',
+'exif-scenecode' => 'IPTC-kod napohlada',
+'exif-event' => 'Zwobraznjeny podawk',
+'exif-organisationinimage' => 'Zwobraznjena organizacija',
+'exif-personinimage' => 'Zwobraznjena wosoba',
+'exif-originalimageheight' => 'Wysokosć wobraza před přitřihowanjom',
+'exif-originalimagewidth' => 'Šěrokosć wobraza před přitřihowanjom',
# EXIF attributes
'exif-compression-1' => 'Njekomprimowany',
+'exif-compression-2' => 'CCITT skupina 3 jednodimensionalne modificěrowane kodowanje Huffman běhoweje dołhosće',
+'exif-compression-3' => 'CCITT skupina 3 faksowe kodowanje',
+'exif-compression-4' => 'CCITT skupina 4 faksowe kodowanje',
+
+'exif-copyrighted-true' => 'Přez awtorske prawo škitany',
+'exif-copyrighted-false' => 'Zjawnosći přistupny',
'exif-unknowndate' => 'Njeznaty datum',
@@ -2874,6 +3007,8 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
'exif-planarconfiguration-1' => 'Å kropawy format',
'exif-planarconfiguration-2' => 'PÅ‚ony format',
+'exif-colorspace-65535' => 'Njekalibrowany',
+
'exif-componentsconfiguration-0' => 'Njeeksistuje',
'exif-exposureprogram-0' => 'Njeznaty',
@@ -2987,6 +3122,10 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
'exif-gpslongitude-e' => 'Wuchodna dołhosć',
'exif-gpslongitude-w' => 'Zapadna dołhosć',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|metraj|metry|metrow}} nad mórskej hładźinu',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|metraj|metry|metrow}} pod mórskej hładźinu',
+
'exif-gpsstatus-a' => 'Měrjenje běži',
'exif-gpsstatus-v' => 'Interoperabilita měrjenja',
@@ -2998,21 +3137,73 @@ Nasledne wotkazy na samsnej lince definuja wuwzaća, hdźež so wobraz smě naje
'exif-gpsspeed-m' => 'mila/h',
'exif-gpsspeed-n' => 'Suki',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometry',
+'exif-gpsdestdistance-m' => 'Mile',
+'exif-gpsdestdistance-n' => 'Mórske mile',
+
+'exif-gpsdop-excellent' => 'Wuběrny ($1)',
+'exif-gpsdop-good' => 'Dobry ($1)',
+'exif-gpsdop-moderate' => 'Srěni ($1)',
+'exif-gpsdop-fair' => 'Akceptabelny ($1)',
+'exif-gpsdop-poor' => 'Å patny ($1)',
+
+'exif-objectcycle-a' => 'Jenož rano',
+'exif-objectcycle-p' => 'Jenož wjeÄor',
+'exif-objectcycle-b' => 'Rano kaž tež wjeÄor',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Woprawdźity směr',
'exif-gpsdirection-m' => 'Magnetiski směr',
+'exif-ycbcrpositioning-1' => 'Centrowano',
+'exif-ycbcrpositioning-2' => 'Susodny',
+
+'exif-dc-contributor' => 'Sobuskutkowarjo',
+'exif-dc-coverage' => 'MÄ›stny abo Äasny wobÅ‚uk medija',
+'exif-dc-date' => 'Datumowe podaća',
+'exif-dc-publisher' => 'Wudawaćel',
+'exif-dc-relation' => 'Přiwuzne medije',
+'exif-dc-rights' => 'Prawa',
+'exif-dc-source' => 'Žórło medija',
+'exif-dc-type' => 'Typ medija',
+
+'exif-rating-rejected' => 'Wotpokazany',
+
+'exif-isospeedratings-overflow' => 'WjetÅ¡e haÄ 65535',
+
+'exif-iimcategory-ace' => 'Wuměłstwo, kultura a zabawa',
+'exif-iimcategory-clj' => 'Kriminalita a prawo',
+'exif-iimcategory-dis' => 'Katastrofy a njezboža',
+'exif-iimcategory-fin' => 'Hospodarstwo a wobchody',
+'exif-iimcategory-edu' => 'Zdźěłanosć',
+'exif-iimcategory-evn' => 'Wobswět',
+'exif-iimcategory-hth' => 'Strowosć',
+'exif-iimcategory-hum' => 'Zajimowy wobwod',
+'exif-iimcategory-lab' => 'Dźěło',
+'exif-iimcategory-lif' => 'Žiwjenske waÅ¡nje a swobodny Äas',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Nabožina a wěra',
+'exif-iimcategory-sci' => 'Wědomosć a technika',
+'exif-iimcategory-soi' => 'Socialne problemy',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Wójna, konfikty a zběžki',
+'exif-iimcategory-wea' => 'Wjedro',
+
+'exif-urgency-normal' => 'Normalna ($1)',
+'exif-urgency-low' => 'Niska ($1)',
+'exif-urgency-high' => 'Wysoka ($1)',
+'exif-urgency-other' => 'Swójska priorita ($1)',
+
# External editor support
'edit-externally' => 'Dataju z eksternym programom wobdźěłać',
-'edit-externally-help' => '(Hlej [http://www.mediawiki.org/wiki/Manual:External_editors pokiwy za instalaciju] za dalše informacije)',
+'edit-externally-help' => '(Hlej [//www.mediawiki.org/wiki/Manual:External_editors pokiwy za instalaciju] za dalše informacije)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'wšě',
-'imagelistall' => 'wšě',
-'watchlistall2' => 'wšě',
-'namespacesall' => 'wšě',
-'monthsall' => 'wšě',
-'limitall' => 'wšě',
+'watchlistall2' => 'wšě',
+'namespacesall' => 'wšě',
+'monthsall' => 'wšě',
+'limitall' => 'wšě',
# E-mail address confirmation
'confirmemail' => 'Emailowu adresu wobkrućić',
@@ -3082,17 +3273,24 @@ $1',
'trackbackdeleteok' => 'Trackback bu wuspěšnje wušmórnjeny.',
# Delete conflict
-'deletedwhileediting' => "'''Kedźbu''': Tuta strona bu wuÅ¡mórnjena, po tym zo sy zapoÄaÅ‚ ju wobdźěłać!",
-'confirmrecreate' => "Wužiwar [[User:$1|$1]] ([[User talk:$1|diskusija]]) je stronu wuÅ¡mórnyÅ‚, po tym zo sy zapoÄaÅ‚ ju wobdźěłać. PÅ™iÄina:
+'deletedwhileediting' => "'''Kedźbu''': Tuta strona bu wuÅ¡mórnjena, po tym zo sy zapoÄaÅ‚ ju wobdźěłać!",
+'confirmrecreate' => "Wužiwar [[User:$1|$1]] ([[User talk:$1|diskusija]]) je stronu wuÅ¡mórnyÅ‚, po tym zo sy zapoÄaÅ‚ ju wobdźěłać. PÅ™iÄina:
: ''$2''
Prošu potwjerdź, zo chceš tutu stronu woprawdźe znowa wutworić.",
-'recreate' => 'Znowa wutworić',
+'confirmrecreate-noreason' => 'Wužiwar [[User:$1|$1]] ([[User talk:$1|diskusija]]) je tutu stronu zhaÅ¡aÅ‚, po tym zo sće wobdźěłanje zapoÄaÅ‚. ProÅ¡u wobkruć, zo woprawdźe chceÅ¡ tutu stronu znowa wutworić.',
+'recreate' => 'Znowa wutworić',
# action=purge
'confirm_purge_button' => 'W porjadku',
'confirm-purge-top' => 'Pufrowak strony wuprózdnić?',
'confirm-purge-bottom' => 'Wuprózdnja pufrowak a wunuzuje zwobraznjenje aktualneje wersije.',
+# action=watch/unwatch
+'confirm-watch-button' => 'W porjadku',
+'confirm-watch-top' => 'Tutu stronu wobkedźbowankam přidać?',
+'confirm-unwatch-button' => 'W porjadku',
+'confirm-unwatch-top' => 'Tutu stronu z wobkedźbowankow wotstronić?',
+
# Multipage image navigation
'imgmultipageprev' => '↠předchadna strona',
'imgmultipagenext' => 'přichodna strona →',
@@ -3137,7 +3335,7 @@ Spytaj normalny přehlad.',
'watchlistedit-noitems' => 'Twoje wobkedźbowanki su prózdne.',
'watchlistedit-normal-title' => 'Wobkedźbowanki wobdźěłać',
'watchlistedit-normal-legend' => 'Zapiski z wobkedźbowankow wotstronić',
-'watchlistedit-normal-explain' => 'Tu su zapiski z twojich wobkedźbowankow. Zo by zapisk wušmórnył, markěruj kašćik pódla njeho a klikń na {{int:Watchlistedit-normal-submit}}". Móžeš tež swoje wobkedźbowanki [[Special:Watchlist/raw|w lisćinowym formaće wobdźěłać]].',
+'watchlistedit-normal-explain' => 'Tu su zapiski z twojich wobkedźbowankow. Zo by zapisk wušmórnył, markěruj kašćik pódla njeho a klikń na {{int:Watchlistedit-normal-submit}}". Móžeš tež swoje wobkedźbowanki [[Special:EditWatchlist/raw|w lisćinowym formaće wobdźěłać]].',
'watchlistedit-normal-submit' => 'Zapiski wotstronić',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 zapisk bu|$1 zapiskaj buštej|$1 zapiski buchu|$1 zapiskow buchu}} z twojich wobkedźbowankow {{PLURAL:$1|wotstronjeny|wotstronjenej|wotstronjene|wotstronjene}}:',
'watchlistedit-raw-title' => 'Wobkedźbowanki w lisćinowym formaće wobdźěłać',
@@ -3145,7 +3343,7 @@ Spytaj normalny přehlad.',
'watchlistedit-raw-explain' => 'Titule mjez twojimi wobkedźbowankach so deleka pokazuja, a dadźa so lisćinje přidać abo z njeje wotstronić;
jedyn titul na linku.
Hdyž sy hotowy, klikń na "{{int:Watchlistedit-raw-submit}}".
-Móžeš tež [[Special:Watchlist/edit|standardnu wobdźěłowansku stronu]] wužiwać.',
+Móžeš tež [[Special:EditWatchlist|standardnu wobdźěłowansku stronu]] wužiwać.',
'watchlistedit-raw-titles' => 'Zapiski:',
'watchlistedit-raw-submit' => 'Wobkedźbowanki składować',
'watchlistedit-raw-done' => 'Twoje wobkedźbowanki buchu składowane.',
@@ -3165,33 +3363,33 @@ MóžeÅ¡ tež [[Special:Watchlist/edit|standardnu wobdźěłowansku stronu]] wuÅ
'duplicate-defaultsort' => 'Warnowanje: Standardny sortÄ›rowonski kluÄ (DEFAULTSORTKEY) "$2" pÅ™episa prjedawÅ¡u sortÄ›rowanski kluÄ "$1".',
# Special:Version
-'version' => 'Wersija',
-'version-extensions' => 'Instalowane rozšěrjenja',
-'version-specialpages' => 'Specialne strony',
-'version-parserhooks' => 'Parserowe hoki',
-'version-variables' => 'Wariable',
-'version-skins' => 'Å aty',
-'version-other' => 'Druhe',
-'version-mediahandlers' => 'Předźěłaki medijow',
-'version-hooks' => 'Hoki',
-'version-extension-functions' => 'Funkcije rozšěrjenjow',
-'version-parser-extensiontags' => "Parserowe rozÅ¡Ä›rjenja ''(tafliÄki)''",
-'version-parser-function-hooks' => 'Parserowe funkcije',
-'version-skin-extension-functions' => 'Rozšěrjenske funkcije za šaty',
-'version-hook-name' => 'Mjeno hoki',
-'version-hook-subscribedby' => 'Abonowany wot',
-'version-version' => '(Wersija $1)',
-'version-license' => 'Licenca',
-'version-poweredby-credits' => "Tutón wiki so wot '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2 podpěruje.",
-'version-poweredby-others' => 'druzy',
-'version-license-info' => 'MediaWiki je swobodna softwara: móžeš ju pod wuměnjenjemi licency GNU General Public License, wozjewjeneje wot załožby Free Software Foundation, rozdźělić a/abo změnić: pak pod wersiju 2 licency pak pod někajkej pozdźišej wersiju.
+'version' => 'Wersija',
+'version-extensions' => 'Instalowane rozšěrjenja',
+'version-specialpages' => 'Specialne strony',
+'version-parserhooks' => 'Parserowe hoki',
+'version-variables' => 'Wariable',
+'version-antispam' => 'Škit přećiwo spamej',
+'version-skins' => 'Å aty',
+'version-other' => 'Druhe',
+'version-mediahandlers' => 'Předźěłaki medijow',
+'version-hooks' => 'Hoki',
+'version-extension-functions' => 'Funkcije rozšěrjenjow',
+'version-parser-extensiontags' => "Parserowe rozÅ¡Ä›rjenja ''(tafliÄki)''",
+'version-parser-function-hooks' => 'Parserowe funkcije',
+'version-hook-name' => 'Mjeno hoki',
+'version-hook-subscribedby' => 'Abonowany wot',
+'version-version' => '(Wersija $1)',
+'version-license' => 'Licenca',
+'version-poweredby-credits' => "Tutón wiki so wot '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2 podpěruje.",
+'version-poweredby-others' => 'druzy',
+'version-license-info' => 'MediaWiki je swobodna softwara: móžeš ju pod wuměnjenjemi licency GNU General Public License, wozjewjeneje wot załožby Free Software Foundation, rozdźělić a/abo změnić: pak pod wersiju 2 licency pak pod někajkej pozdźišej wersiju.
MediaWiki so w nadźiji rozdźěla, zo budźe wužitny, ale BJEZ GARANTIJU: samo bjez wobsahowaneje garantije PŘEDAWAJOMNOSĆE abo PŘIHÓDNOSĆE ZA WĚSTY ZAMĚR. Hlej GNU general Public License za dalše podrobnosće.
-Ty měł [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licency GNU General Public License] hromadźe z tutym programom dóstanu měć: jeli nic, napisaj do zaÅ‚ožby Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA abo [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html pÅ™eÄitaj ju online].',
-'version-software' => 'Instalowana software',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Wersija',
+Ty měł [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licency GNU General Public License] hromadźe z tutym programom dóstanu měć: jeli nic, napisaj do zaÅ‚ožby Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA abo [//www.gnu.org/licenses/old-licenses/gpl-2.0.html pÅ™eÄitaj ju online].',
+'version-software' => 'Instalowana software',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Wersija',
# Special:FilePath
'filepath' => 'Datajowy puć',
@@ -3201,22 +3399,22 @@ Ty měł [{{SERVER}}{{SCRIPTPATH}}/COPYING kopiju licency GNU General Public Lic
Wobrazy so połnym rozeznaću pokazuja, druhe datajowe typy so ze zwjazanym programom startuja.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Dwójne dataje pytać',
-'fileduplicatesearch-summary' => "Pytanje za duplikatnymi datajemi na zakładźe jich hašoweje hódnoty.
-
-Zapodaj datajowe mjeno '''bjez''' prefiksa \"{{ns:file}}:\".",
-'fileduplicatesearch-legend' => 'Duplikaty pytać',
-'fileduplicatesearch-filename' => 'Datajowe mjeno:',
-'fileduplicatesearch-submit' => 'Pytać',
-'fileduplicatesearch-info' => '$1 × $2 pikselow<br />Datajowa wulkosć: $3<br />Typ MIME: $4',
-'fileduplicatesearch-result-1' => 'Dataja "$1" identiske duplikaty nima.',
-'fileduplicatesearch-result-n' => 'Dataja "$1" ma {{PLURAL:$2|1 identiski duplikat|$2 identiskej duplikataj|$2 identiske duplikaty|$2 identiskich duplikatow}}.',
+'fileduplicatesearch' => 'Dwójne dataje pytać',
+'fileduplicatesearch-summary' => 'Pytanje za duplikatnymi datajemi na zakładźe jich hašoweje hódnoty.',
+'fileduplicatesearch-legend' => 'Duplikaty pytać',
+'fileduplicatesearch-filename' => 'Datajowe mjeno:',
+'fileduplicatesearch-submit' => 'Pytać',
+'fileduplicatesearch-info' => '$1 × $2 pikselow<br />Datajowa wulkosć: $3<br />Typ MIME: $4',
+'fileduplicatesearch-result-1' => 'Dataja "$1" identiske duplikaty nima.',
+'fileduplicatesearch-result-n' => 'Dataja "$1" ma {{PLURAL:$2|1 identiski duplikat|$2 identiskej duplikataj|$2 identiske duplikaty|$2 identiskich duplikatow}}.',
+'fileduplicatesearch-noresults' => 'Žana dataja z mjenom "$1" namakana.',
# Special:SpecialPages
'specialpages' => 'Specialne strony',
'specialpages-note' => '----
* Normalne specialne strony.
-* <strong class="mw-specialpagerestricted">Specialne strony z wobmjezowanym přistupom</strong>',
+* <span class="mw-specialpagerestricted">Specialne strony z wobmjezowanym přistupom.</span>
+* <span class="mw-specialpagecached">Specialne strony z pufrowaka.</span>',
'specialpages-group-maintenance' => 'Hladanske lisćiny',
'specialpages-group-other' => 'Druhe specialne strony',
'specialpages-group-login' => 'Přizjewjenje',
diff --git a/languages/messages/MessagesHt.php b/languages/messages/MessagesHt.php
index 24b3ccb6..dfd70e77 100644
--- a/languages/messages/MessagesHt.php
+++ b/languages/messages/MessagesHt.php
@@ -41,100 +41,101 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'RedireksyonDoub' ),
+ 'Activeusers' => array( 'ItilizatèAktif' ),
+ 'Allmessages' => array( 'ToutMesaj' ),
+ 'Allpages' => array( 'ToutPaj' ),
+ 'Ancientpages' => array( 'PajAnsyen' ),
+ 'Blankpage' => array( 'PajVid' ),
+ 'Block' => array( 'Bloke', 'BlokeIP', 'BlokeItilizatè' ),
+ 'Blockme' => array( 'BlokeM' ),
+ 'Booksources' => array( 'SousLiv' ),
'BrokenRedirects' => array( 'RedireksyonKase' ),
- 'Disambiguations' => array( 'Tokay' ),
- 'Userlogin' => array( 'Koneksyon' ),
- 'Userlogout' => array( 'Dekoneksyon' ),
+ 'Categories' => array( 'Kategori' ),
+ 'ChangePassword' => array( 'ChanjeMopas', 'ResètMopas' ),
+ 'ComparePages' => array( 'KonparePaj' ),
+ 'Confirmemail' => array( 'VerifyeImèl' ),
+ 'Contributions' => array( 'Kontribisyon', 'Kontrib' ),
'CreateAccount' => array( 'KreyeKont' ),
- 'Preferences' => array( 'Preferans' ),
- 'Watchlist' => array( 'LisSwivi' ),
- 'Recentchanges' => array( 'ChanjmanResan' ),
- 'Upload' => array( 'Chaje' ),
- 'UploadStash' => array( 'ChajePil' ),
+ 'Deadendpages' => array( 'PajEnpas' ),
+ 'DeletedContributions' => array( 'SiprimeKontribisyon' ),
+ 'Disambiguations' => array( 'Tokay' ),
+ 'DoubleRedirects' => array( 'RedireksyonDoub' ),
+ 'Emailuser' => array( 'ImèlItilizatè' ),
+ 'Export' => array( 'Ekspòte' ),
+ 'Fewestrevisions' => array( 'MwensRevizyon' ),
+ 'FileDuplicateSearch' => array( 'ChacheFichyeDoub' ),
+ 'Filepath' => array( 'ChemenFichye' ),
+ 'Import' => array( 'Enpòte' ),
+ 'Invalidateemail' => array( 'EnvalideImèl' ),
+ 'BlockList' => array( 'LisBloke', 'LisIPBloke' ),
+ 'LinkSearch' => array( 'ChacheLyen' ),
+ 'Listadmins' => array( 'LisAdmin' ),
+ 'Listbots' => array( 'LisWobo' ),
'Listfiles' => array( 'LisFichye', 'Lis_Fichye', 'LisImaj' ),
- 'Newimages' => array( 'NouvoImaj' ),
- 'Listusers' => array( 'LisItilizatè' ),
'Listgrouprights' => array( 'LisDwaGwoup' ),
- 'Statistics' => array( 'Estatistik' ),
- 'Randompage' => array( 'Oaza', 'PajOaza' ),
+ 'Listredirects' => array( 'LisRedireksyon' ),
+ 'Listusers' => array( 'LisItilizatè' ),
+ 'Lockdb' => array( 'KadnaseDB' ),
+ 'Log' => array( 'Jounal' ),
'Lonelypages' => array( 'PajPoukontli', 'PajOfelen' ),
- 'Uncategorizedpages' => array( 'PajPakategorize' ),
- 'Uncategorizedcategories' => array( 'KategoriPakategorize' ),
- 'Uncategorizedimages' => array( 'ImajPakategorize' ),
- 'Uncategorizedtemplates' => array( 'ModèlPakategorize' ),
- 'Unusedcategories' => array( 'KategoriPaItilize' ),
- 'Unusedimages' => array( 'FichyePaItilize', 'ImajPaItilize' ),
- 'Wantedpages' => array( 'PajNouBezwen', 'LyenKase' ),
- 'Wantedcategories' => array( 'KategoriNouBezwen' ),
- 'Wantedfiles' => array( 'FichyeNouBezwen' ),
- 'Wantedtemplates' => array( 'ModèlNouBezwen' ),
+ 'Longpages' => array( 'PajLong' ),
+ 'MergeHistory' => array( 'FizyoneIstwa' ),
+ 'MIMEsearch' => array( 'ChacheMIME' ),
+ 'Mostcategories' => array( 'PlisKategori' ),
+ 'Mostimages' => array( 'ImajPlisLye', 'PlisFichye', 'PlisImaj' ),
'Mostlinked' => array( 'PajPlisLye', 'PlisLye' ),
'Mostlinkedcategories' => array( 'KategoriPlisLye', 'KategoriPlisItilize' ),
'Mostlinkedtemplates' => array( 'ModèlPlisLye', 'ModèlPlisItilize' ),
- 'Mostimages' => array( 'ImajPlisLye', 'PlisFichye', 'PlisImaj' ),
- 'Mostcategories' => array( 'PlisKategori' ),
'Mostrevisions' => array( 'PlisRevizyon' ),
- 'Fewestrevisions' => array( 'MwensRevizyon' ),
- 'Shortpages' => array( 'PajKout' ),
- 'Longpages' => array( 'PajLong' ),
+ 'Movepage' => array( 'DeplasePaj' ),
+ 'Mycontributions' => array( 'KontribisyonM' ),
+ 'Mypage' => array( 'PajMwen' ),
+ 'Mytalk' => array( 'DiskisyonM' ),
+ 'Myuploads' => array( 'ChajmanM' ),
+ 'Newimages' => array( 'NouvoImaj' ),
'Newpages' => array( 'PajNouvo' ),
- 'Ancientpages' => array( 'PajAnsyen' ),
- 'Deadendpages' => array( 'PajEnpas' ),
+ 'PasswordReset' => array( 'ResètMopas2' ),
+ 'PermanentLink' => array( 'LyenPouToutTan' ),
+ 'Popularpages' => array( 'PajPopilè' ),
+ 'Preferences' => array( 'Preferans' ),
+ 'Prefixindex' => array( 'EndèksPrefiks' ),
'Protectedpages' => array( 'PajPwoteje' ),
'Protectedtitles' => array( 'TitPwoteje' ),
- 'Allpages' => array( 'ToutPaj' ),
- 'Prefixindex' => array( 'EndèksPrefiks' ),
- 'Ipblocklist' => array( 'LisBloke', 'LisIPBloke' ),
- 'Unblock' => array( 'Debloke' ),
- 'Specialpages' => array( 'PajEspesyal' ),
- 'Contributions' => array( 'Kontribisyon', 'Kontrib' ),
- 'Emailuser' => array( 'ImèlItilizatè' ),
- 'Confirmemail' => array( 'VerifyeImèl' ),
- 'Whatlinkshere' => array( 'SakLye' ),
+ 'Randompage' => array( 'Oaza', 'PajOaza' ),
+ 'Randomredirect' => array( 'RedireksyonOaza' ),
+ 'Recentchanges' => array( 'ChanjmanResan' ),
'Recentchangeslinked' => array( 'LyenChanjmanResan', 'ChanjmanAk' ),
- 'Movepage' => array( 'DeplasePaj' ),
- 'Blockme' => array( 'BlokeM' ),
- 'Booksources' => array( 'SousLiv' ),
- 'Categories' => array( 'Kategori' ),
- 'Export' => array( 'Ekspòte' ),
- 'Version' => array( 'Vèsyon' ),
- 'Allmessages' => array( 'ToutMesaj' ),
- 'Log' => array( 'Jounal' ),
- 'Blockip' => array( 'Bloke', 'BlokeIP', 'BlokeItilizatè' ),
+ 'Revisiondelete' => array( 'RevizyonSiprime' ),
+ 'RevisionMove' => array( 'DeplaseRevizyon' ),
+ 'Search' => array( 'Chache', 'Fouye' ),
+ 'Shortpages' => array( 'PajKout' ),
+ 'Specialpages' => array( 'PajEspesyal' ),
+ 'Statistics' => array( 'Estatistik' ),
+ 'Tags' => array( 'Etikèt' ),
+ 'Unblock' => array( 'Debloke' ),
+ 'Uncategorizedcategories' => array( 'KategoriPakategorize' ),
+ 'Uncategorizedimages' => array( 'ImajPakategorize' ),
+ 'Uncategorizedpages' => array( 'PajPakategorize' ),
+ 'Uncategorizedtemplates' => array( 'ModèlPakategorize' ),
'Undelete' => array( 'Restore' ),
- 'Import' => array( 'Enpòte' ),
- 'Lockdb' => array( 'KadnaseDB' ),
'Unlockdb' => array( 'DekadnaseDB' ),
- 'Userrights' => array( 'DwaItilizatè', 'FèSysop', 'FèBot' ),
- 'MIMEsearch' => array( 'ChacheMIME' ),
- 'FileDuplicateSearch' => array( 'ChacheFichyeDoub' ),
- 'Unwatchedpages' => array( 'PajPaSiveye' ),
- 'Listredirects' => array( 'LisRedireksyon' ),
- 'Revisiondelete' => array( 'RevizyonSiprime' ),
+ 'Unusedcategories' => array( 'KategoriPaItilize' ),
+ 'Unusedimages' => array( 'FichyePaItilize', 'ImajPaItilize' ),
'Unusedtemplates' => array( 'ModèlVyèj' ),
- 'Randomredirect' => array( 'RedireksyonOaza' ),
- 'Mypage' => array( 'PajMwen' ),
- 'Mytalk' => array( 'DiskisyonM' ),
- 'Mycontributions' => array( 'KontribisyonM' ),
- 'Myuploads' => array( 'ChajmanM' ),
- 'Listadmins' => array( 'LisAdmin' ),
- 'Listbots' => array( 'LisWobo' ),
- 'Popularpages' => array( 'PajPopilè' ),
- 'Search' => array( 'Chache', 'Fouye' ),
- 'Resetpass' => array( 'ChanjeMopas', 'ResètMopas' ),
+ 'Unwatchedpages' => array( 'PajPaSiveye' ),
+ 'Upload' => array( 'Chaje' ),
+ 'UploadStash' => array( 'ChajePil' ),
+ 'Userlogin' => array( 'Koneksyon' ),
+ 'Userlogout' => array( 'Dekoneksyon' ),
+ 'Userrights' => array( 'DwaItilizatè', 'FèSysop', 'FèBot' ),
+ 'Version' => array( 'Vèsyon' ),
+ 'Wantedcategories' => array( 'KategoriNouBezwen' ),
+ 'Wantedfiles' => array( 'FichyeNouBezwen' ),
+ 'Wantedpages' => array( 'PajNouBezwen', 'LyenKase' ),
+ 'Wantedtemplates' => array( 'ModèlNouBezwen' ),
+ 'Watchlist' => array( 'LisSwivi' ),
+ 'Whatlinkshere' => array( 'SakLye' ),
'Withoutinterwiki' => array( 'SanEntèwiki' ),
- 'MergeHistory' => array( 'FizyoneIstwa' ),
- 'Filepath' => array( 'ChemenFichye' ),
- 'Invalidateemail' => array( 'EnvalideImèl' ),
- 'Blankpage' => array( 'PajVid' ),
- 'LinkSearch' => array( 'ChacheLyen' ),
- 'DeletedContributions' => array( 'SiprimeKontribisyon' ),
- 'Tags' => array( 'Etikèt' ),
- 'Activeusers' => array( 'ItilizatèAktif' ),
- 'ComparePages' => array( 'KonparePaj' ),
- 'Badtitle' => array( 'MovèTit' ),
- 'DisableAccount' => array( 'DeaktiveKont' ),
);
$linkTrail = '/^([a-zàèòÀÈÒ]+)(.*)$/sDu';
@@ -268,15 +269,6 @@ $messages = array(
'index-category' => 'Paj endèkse yo',
'noindex-category' => 'Paj ki pa endèkse yo',
-'mainpagetext' => "'''MedyaWiki byen enstale l.'''",
-'mainpagedocfooter' => 'Konsilte [http://meta.wikimedia.org/wiki/Help:Konteni Gid Itilizatè] pou enfòmasyon sou kijan pou w itilize logisyèl wiki a.
-
-== Kijan pou kòmanse ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lis paramèt yo pou konfigirasyon]
-* [http://www.mediawiki.org/wiki/Manyèl:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lis diskisyon ki parèt sou MediaWiki]',
-
'about' => 'Apwopo',
'article' => 'Atik',
'newwindow' => '(Ouvè nan yon lòt fenèt)',
@@ -327,10 +319,10 @@ $messages = array(
'history' => 'Istorik paj la',
'history_short' => 'Istorik',
'updatedmarker' => 'Aktyalize depi dènyè visit mwen',
-'info_short' => 'Enfòmasyon',
'printableversion' => 'Vèsyon ou kapab enprime',
'permalink' => 'Lyen pou tout tan',
'print' => 'Enprime',
+'view' => 'Gade',
'edit' => 'Modifye',
'create' => 'Kreye',
'editthispage' => 'Modifye paj sa a',
@@ -338,6 +330,7 @@ $messages = array(
'delete' => 'Efase',
'deletethispage' => 'Efase paj sa',
'undelete_short' => 'Restore {{PLURAL:$1|Yon modifikasyon| $1 modifikasyon yo}}',
+'viewdeleted_short' => 'Gade {{PLURAL:$1|yon modifikasyon ki te efase|$1 modifikasyon yo ki te efase}}',
'protect' => 'Pwoteje',
'protect_change' => 'Chanje pwoteksyon paj sa',
'protectthispage' => 'Pwoteje paj sa',
@@ -421,6 +414,8 @@ $1',
'toc' => 'Kontni yo',
'showtoc' => 'montre',
'hidetoc' => 'kache',
+'collapsible-collapse' => 'Redui',
+'collapsible-expand' => 'Etann',
'thisisdeleted' => 'Ou vle wè oubyen restore $1 ?',
'viewdeleted' => 'Wè $1 ?',
'restorelink' => '{{PLURAL:$1|yon revizion efase|$1 revizion efase yo}}',
@@ -514,12 +509,11 @@ Demann : $2',
'protectedpagetext' => 'Paj sa pwoteje pou anpeche tout modifikasyon nou ta kapab fè sou li. Gade paj diskisyon sou li pito.',
'viewsourcetext' => 'Ou kapab gade epitou modifye kontni atik sa a pou ou travay anlè li :',
'protectedinterface' => 'Paj sa ap bay tèks pou entèfas lojisyèl an e li pwoteje pou anpeche move itilizasyon nou ta kapab fè ak li.',
-'editinginterface' => "'''Pòte atansyon :''' ou ap modifye yon paj ki itilize nan kreyasyon tèks entèfas lojisyèl an. Chanjman yo ap ritounen, li ap depann de kèk sityasyon, nan tout paj ke lòt itilizatè yo kapab wè tou. Pou tradiksyon yo, nap envite w itilize pwojè MediaWiki pou mesaj entènasyonal yo (tradiksyon) nan paj sa [http://translatewiki.net/wiki/Main_Page?setlang=fr translatewiki.net].",
+'editinginterface' => "'''Pòte atansyon :''' ou ap modifye yon paj ki itilize nan kreyasyon tèks entèfas lojisyèl an. Chanjman yo ap ritounen, li ap depann de kèk sityasyon, nan tout paj ke lòt itilizatè yo kapab wè tou. Pou tradiksyon yo, nap envite w itilize pwojè MediaWiki pou mesaj entènasyonal yo (tradiksyon) nan paj sa [//translatewiki.net/wiki/Main_Page?setlang=fr translatewiki.net].",
'sqlhidden' => '(Demann SQL an kache)',
'cascadeprotected' => 'Paj sa pwoteje kounye a paske l nan {{PLURAL:$1|paj ki douvan l|paj yo ki douvan l}}, paske {{PLURAL:$1|l te pwoteje|yo te pwoteje}} ak opsyon « pwoteksyon pou tout paj ki nan premye paj an - kaskad » aktive :
$2',
'namespaceprotected' => "Ou pa gen dwa modifye paj nan espas non « '''$1''' ».",
-'customcssjsprotected' => 'Ou pa kapab modifye paj sa paske li manke w kèk otorizasyon; li genyen preferans yon lòt itilizatè.',
'ns-specialprotected' => 'Paj yo ki nan espas non « {{ns:special}} » pa kapab modifye.',
'titleprotected' => "Tit, sijè sa pwoteje pandan kreyasyon l pa [[User:$1|$1]].
Rezon li bay yo se « ''$2'' ».",
@@ -565,13 +559,15 @@ Kont ou an kreye. Pa bliye pèsonalize l nan [[Special:Preferences|preferans ou
'createaccounterror' => 'Pa kapab kreye kont: $1',
'nocookiesnew' => "Kont itilizatè a kreye, men ou pa konekte. {{SITENAME}} ap itilize koukiz (''cookies'') pou konekte l.Li sanble ou dezaktive fonksyon sa. Tanpri, aktive fonksyon sa epi rekonekte ou ak menm non epi mopas ou yo.",
'nocookieslogin' => "{{SITENAME}} ap itilize koukiz (''cookies'') pou li kapab konekte kò l. Men li sanble ou dezaktive l; tanpri, aktive fonksyon sa epi rekonekte w.",
+'nocookiesfornew' => 'Kont itilizatè pa t kreye poutèt nou pa kapab konnen sous li.
+Asire w koukiz (cookies) yo aktive nan navigatè w, chaje paj la ankò epi eseye ankò.',
'noname' => 'Ou pa bay sistèm an yon non itilizatè ki bon.',
'loginsuccesstitle' => 'Ou byen konekte nan sistèm la',
'loginsuccess' => 'Ou konekte kounye a nan {{SITENAME}} ak idantifyan sa a « $1 ».',
'nosuchuser' => 'Itilizatè "$1" pa ekziste.
Majiskil ak miniskil chanje non itilizatè.
Byen gade ke ou te byen ekri non ou, oubyen [[Special:UserLogin/signup|kreye yon nouvo kont]].',
-'nosuchusershort' => 'Pa genyen itilizatè ak non « <nowiki>$1</nowiki> » sa a. Byen gade lòtograf ou an.',
+'nosuchusershort' => 'Pa genyen itilizatè ak non « $1 » sa a. Byen gade lòtograf ou an.',
'nouserspecified' => 'Ou dwe mete non itilizatè ou an.',
'login-userblocked' => 'Itilizatè sa bloke. Li pa gendwa konekte.',
'wrongpassword' => 'Mopas an pa korèk. Eseye ankò.',
@@ -613,7 +609,7 @@ Pa pòte atansyon pou mesaj sa si kont sa kreye pa erè.',
# E-mail sending
'php-mail-error-unknown' => 'Erè nou pa konnen nan fonksyon mail() PHP a.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Chanje mopas ou an',
'resetpass_announce' => 'Ou konekte ou ak yon mopas ki valab yon moman; mopas sa te voye pa imèl. Pou ou kapab fini anrejistreman an, ou dwe mete yon nouvo mopas la :',
'resetpass_header' => 'Chanje mopas kont ou an',
@@ -641,8 +637,6 @@ Gendwa ou te deja modifye li oubyen ou te mande yon nouvo mopas tanporè.',
'extlink_tip' => 'Lyen andeyò (pa blye prefiks http:// an)',
'headline_sample' => 'Tèks pou tit',
'headline_tip' => 'Sou-tit nivo 2',
-'math_sample' => 'Antre fòmil ou an isit',
-'math_tip' => 'Fòmil matematik (LaTeX)',
'nowiki_sample' => 'Antre tèks ki pa fòmate a',
'nowiki_tip' => 'Pa konte sentaks wiki an',
'image_tip' => 'Fichye anndan paj sa',
@@ -720,7 +714,7 @@ Si se paske ou fè yon erè ke ou rive nan paj sa a, klike anlè bouton '''fè b
Ou mèt [[Special:Search/{{PAGENAME}}|fè yon rechèch, fouye ak non paj sa a]] nan lòt paj yo, oubyen <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} chache jounal modifikasyon yo ki an relasyon ak paj sa] oubyen tou [{{fullurl:{{FULLPAGENAME}}|action=edit}} modifye paj sa]</span>.',
'noarticletext-nopermission' => 'Poko genyen tèks nan paj sa a.
Ou mèt [[Special:Search/{{PAGENAME}}|fè yon rechèch, fouye ak non paj sa a]] nan lòt paj yo, oubyen <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} chache jounal modifikasyon yo ki an relasyon ak paj sa].',
-'userpage-userdoesnotexist' => 'Kont itilizatè « $1 » sa pa anrejistre. Verifye toutbon ke ou vle kreye paj sa.',
+'userpage-userdoesnotexist' => 'Kont itilizatè « <nowiki>$1</nowiki> » sa pa anrejistre. Verifye toutbon ke ou vle kreye paj sa.',
'userpage-userdoesnotexist-view' => 'Itilizatè "$1" pa ekziste.',
'blocked-notice-logextract' => 'Itilizatè sa a bloke kounye a.
Dènye jounal pou blokaj yo parèt anba kòm referans:',
@@ -1136,10 +1130,8 @@ Gade tou [[Special:WantedCategories|kategori moun mande]].',
# Watchlist
'watchlist' => 'Lis swivi mwen',
'mywatchlist' => 'Lis swivi mwen',
-'addedwatch' => 'Ajoute nan lis swivi',
'addedwatchtext' => 'Paj « [[:$1]] » te byen ajoute nan [[Special:Watchlist|lis swivi ou an]].
Depi kounye a, tout modifikasyon nan paj sa a ak nan paj diskisyon li pral parèt <b>fonse</b> nan [[Special:RecentChanges|lis chanjman ki fèk fèt]] pou ou ka wè yo pi byen.',
-'removedwatch' => 'Retire nan lis swivi',
'removedwatchtext' => 'Paj "[[:$1]]" byen retire nan [[Special:Watchlist|lis swivi ou an]].',
'watch' => 'Swiv',
'watchthispage' => 'Swiv paj sa a',
@@ -1157,7 +1149,7 @@ Depi kounye a, tout modifikasyon nan paj sa a ak nan paj diskisyon li pral parè
'historywarning' => "'''Atansyon:''' paj w ap efase a genyen yon istorik ki genyen $1 {{PLURAL:$1|revizyon|revizyon yo}} ladan l:",
'confirmdeletetext' => 'W ap efase yon paj oubyen yon imaj epi tout vèsyon li yo toutbon nan bazdone a. Tanpri, konfime aksyon enpòtan sa a, ke ou konprann sa w ap fè, epi ke ou fè l nan dwa ak [[{{MediaWiki:Policy-url}}|lwa medyawiki a]].',
'actioncomplete' => 'Aksyon an fèt',
-'deletedtext' => '« <nowiki>$1</nowiki> » efase.
+'deletedtext' => '« $1 » efase.
Gade $2 pou wè yon lis efasman resan.',
'deletedarticle' => 'efase « [[$1]] »',
'dellogpage' => 'Jounal efasman yo',
@@ -1178,7 +1170,7 @@ Gade $2 pou wè yon lis efasman resan.',
'protectexpiry' => 'Ekspirasyon:',
'protect_expiry_invalid' => 'Dat ou mete a pou li ekspire pa bon',
'protect_expiry_old' => 'Dat ekspirasyon an deja pase.',
-'protect-text' => "Ou mèt konsilte epi modifye nivo pwoteksyon paj '''<nowiki>$1</nowiki>''' isit.",
+'protect-text' => "Ou mèt konsilte epi modifye nivo pwoteksyon paj '''$1''' isit.",
'protect-locked-access' => "Ou pa genyen dwa ki ap pèmèt ou modifye pwoteksyon paj sa a.
Men reglaj pou paj '''$1''' an kounye a:",
'protect-cascadeon' => 'Paj sa a pwoteje kounye a paske li nan {{PLURAL:$1|paj|paj yo}}, ki gen opsyon pwoteksyon "enbrike" aktif. Ou mèt chanje nivo pwoteksyon paj sa a men li pap modifye pwoteksyon enbrike an.',
@@ -1360,11 +1352,10 @@ Li pèmèt retabli vèsyon ki te anvan li epi ajoute yon rezon ki esplike poukis
'nextdiff' => 'Modifikasyon swivan →',
# Media information
-'file-info-size' => '$1 × $2 piksèl, gwosè fichye a : $3, tip MIME li ye : $4',
-'file-nohires' => '<small>Pa genyen rezolisyon ki pi wo ki disponib.</small>',
-'svg-long-desc' => 'Fichye SVG, rezolisyon de $1 × $2 piksèl, gwosè fichye : $3',
-'show-big-image' => 'Pi bon rezolisyon',
-'show-big-image-thumb' => '<small>Lajè apèsi sa a : $1 × $2 piksèl</small>',
+'file-info-size' => '$1 × $2 piksèl, gwosè fichye a : $3, tip MIME li ye : $4',
+'file-nohires' => '<small>Pa genyen rezolisyon ki pi wo ki disponib.</small>',
+'svg-long-desc' => 'Fichye SVG, rezolisyon de $1 × $2 piksèl, gwosè fichye : $3',
+'show-big-image' => 'Pi bon rezolisyon',
# Special:NewFiles
'newimages' => 'Galri pou nouvo fichye yo',
@@ -1388,11 +1379,17 @@ Nenpòt lòt lyen nan menm liy nan konsidere kòm yon eksèpsyon, i.e. paj kote
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Modifye fichye sa a nan aplikasyon pa ou (ki pa nan sistèm an, sou machin ou pa egzanp).',
-'edit-externally-help' => '(Gade [http://www.mediawiki.org/wiki/Manual:External_editors komand ak enstriksyon yo] pou plis enfòmasyon oubyen pou konnen plis)',
+'edit-externally-help' => '(Gade [//www.mediawiki.org/wiki/Manual:External_editors komand ak enstriksyon yo] pou plis enfòmasyon oubyen pou konnen plis)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tout',
diff --git a/languages/messages/MessagesHu.php b/languages/messages/MessagesHu.php
index 510b6d9c..cbfa4f00 100644
--- a/languages/messages/MessagesHu.php
+++ b/languages/messages/MessagesHu.php
@@ -15,6 +15,7 @@
* @author CERminator
* @author Cerasus
* @author Dani
+ * @author Dj
* @author Dorgan
* @author Enbéká
* @author Glanthor Reviol
@@ -63,94 +64,100 @@ $fallback8bitEncoding = "iso8859-2";
$separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Kettős_átirányítások', 'Dupla_átirányítások' ),
+ 'Activeusers' => array( 'Aktív_felhasználók', 'Aktív_szerkesztők' ),
+ 'Allmessages' => array( 'Rendszerüzenetek' ),
+ 'Allpages' => array( 'Az_összes_lap_listája' ),
+ 'Ancientpages' => array( 'Régóta_nem_változott_szócikkek' ),
+ 'Blankpage' => array( 'Ãœres_lap' ),
+ 'Block' => array( 'Blokkolás' ),
+ 'Blockme' => array( 'Blokkolj' ),
+ 'Booksources' => array( 'Könyvforrások' ),
'BrokenRedirects' => array( 'Nem_létező_lapra_mutató_átirányítások', 'Hibás_átirányítások' ),
- 'Disambiguations' => array( 'Egyértelműsítő_lapok' ),
- 'Userlogin' => array( 'Belépés' ),
- 'Userlogout' => array( 'Kilépés' ),
+ 'Categories' => array( 'Kategóriák' ),
+ 'ChangePassword' => array( 'Jelszócsere' ),
+ 'ComparePages' => array( 'Lapok_összehasonlítása' ),
+ 'Confirmemail' => array( 'Emailcím_megerősítése' ),
+ 'Contributions' => array( 'Szerkesztő_közreműködései' ),
'CreateAccount' => array( 'Szerkesztői_fiók_létrehozása', 'Felhasználói_fiók_létrehozása' ),
- 'Preferences' => array( 'Beállításaim' ),
- 'Watchlist' => array( 'Figyelőlistám' ),
- 'Recentchanges' => array( 'Friss_változtatások' ),
- 'Upload' => array( 'Feltöltés' ),
+ 'Deadendpages' => array( 'Zsákutcalapok' ),
+ 'DeletedContributions' => array( 'Törölt_szerkesztések' ),
+ 'Disambiguations' => array( 'Egyértelműsítő_lapok' ),
+ 'DoubleRedirects' => array( 'Kettős_átirányítások', 'Dupla_átirányítások' ),
+ 'EditWatchlist' => array( 'Figyelőlista_szerkesztése' ),
+ 'Emailuser' => array( 'E-mail_küldése', 'E-mail_küldése_ezen_szerkesztőnek' ),
+ 'Export' => array( 'Lapok_exportálása' ),
+ 'Fewestrevisions' => array( 'Legkevesebbet_szerkesztett_lapok' ),
+ 'FileDuplicateSearch' => array( 'Duplikátumok_keresése' ),
+ 'Filepath' => array( 'Fájl_elérési_útja', 'Fájl_elérési_út' ),
+ 'Import' => array( 'Lapok_importálása' ),
+ 'Invalidateemail' => array( 'E-mail_cím_érvénytelenítése' ),
+ 'BlockList' => array( 'Blokkolt_IP-címek_listája' ),
+ 'LinkSearch' => array( 'Hivatkozás_keresés' ),
+ 'Listadmins' => array( 'Adminisztrátorok', 'Adminisztrátorok_listája', 'Sysopok' ),
+ 'Listbots' => array( 'Botok', 'Botok_listája' ),
'Listfiles' => array( 'Fájlok_listája', 'Képek_listája', 'Fájllista', 'Képlista' ),
- 'Newimages' => array( 'Új_fájlok', 'Új_képek', 'Új_képek_galériája' ),
- 'Listusers' => array( 'Szerkesztők_listája', 'Szerkesztők', 'Felhasználók' ),
'Listgrouprights' => array( 'Szerkesztői_csoportok_jogai' ),
- 'Statistics' => array( 'Statisztika', 'Statisztikák' ),
- 'Randompage' => array( 'Lap_találomra' ),
+ 'Listredirects' => array( 'Ãtirányítások_listája' ),
+ 'Listusers' => array( 'Szerkesztők_listája', 'Szerkesztők', 'Felhasználók' ),
+ 'Lockdb' => array( 'Adatbázis_lezárása' ),
+ 'Log' => array( 'Rendszernaplók', 'Naplók', 'Napló' ),
'Lonelypages' => array( 'Ãrva_lapok', 'Magányos_lapok' ),
- 'Uncategorizedpages' => array( 'Kategorizálatlan_lapok' ),
- 'Uncategorizedcategories' => array( 'Kategorizálatlan_kategóriák' ),
- 'Uncategorizedimages' => array( 'Kategorizálatlan_fájlok', 'Kategorizálatlan_képek' ),
- 'Uncategorizedtemplates' => array( 'Kategorizálatlan_sablonok' ),
- 'Unusedcategories' => array( 'Nem_használt_kategóriák' ),
- 'Unusedimages' => array( 'Nem_használt_képek' ),
- 'Wantedpages' => array( 'Keresett_lapok' ),
- 'Wantedcategories' => array( 'Keresett_kategóriák' ),
- 'Wantedfiles' => array( 'Keresett_fájlok' ),
- 'Wantedtemplates' => array( 'Keresett_sablonok' ),
+ 'Longpages' => array( 'Hosszú_lapok' ),
+ 'MergeHistory' => array( 'Laptörténetek_egyesítése', 'Laptörténet-egyesítés' ),
+ 'MIMEsearch' => array( 'Keresés_MIME-típus_alapján' ),
+ 'Mostcategories' => array( 'Legtöbb_kategóriába_tartozó_lapok' ),
+ 'Mostimages' => array( 'Legtöbbet_használt_fájlok', 'Legtöbbet_használt_képek' ),
'Mostlinked' => array( 'Legtöbbet_hivatkozott_lapok' ),
'Mostlinkedcategories' => array( 'Legtöbbet_hivatkozott_kategóriák' ),
'Mostlinkedtemplates' => array( 'Legtöbbet_hivatkozott_sablonok' ),
- 'Mostimages' => array( 'Legtöbbet_használt_fájlok', 'Legtöbbet_használt_képek' ),
- 'Mostcategories' => array( 'Legtöbb_kategóriába_tartozó_lapok' ),
'Mostrevisions' => array( 'Legtöbbet_szerkesztett_lapok' ),
- 'Fewestrevisions' => array( 'Legkevesebbet_szerkesztett_lapok' ),
- 'Shortpages' => array( 'Rövid_lapok' ),
- 'Longpages' => array( 'Hosszú_lapok' ),
+ 'Movepage' => array( 'Lap_átnevezése' ),
+ 'Mycontributions' => array( 'Közreműködéseim' ),
+ 'Mypage' => array( 'Lapom', 'Userlapom' ),
+ 'Mytalk' => array( 'Vitám', 'Vitalapom', 'Uservitalapom' ),
+ 'Myuploads' => array( 'Saját_feltöltéseim' ),
+ 'Newimages' => array( 'Új_fájlok', 'Új_képek', 'Új_képek_galériája' ),
'Newpages' => array( 'Új_lapok' ),
- 'Ancientpages' => array( 'Régóta_nem_változott_szócikkek' ),
- 'Deadendpages' => array( 'Zsákutcalapok' ),
+ 'PasswordReset' => array( 'Jelszó_helyreállítása' ),
+ 'Popularpages' => array( 'Népszerű_lapok', 'Népszerű_oldalak' ),
+ 'Preferences' => array( 'Beállításaim' ),
+ 'Prefixindex' => array( 'Keresés_előtag_szerint' ),
'Protectedpages' => array( 'Védett_lapok' ),
'Protectedtitles' => array( 'Védett_címek' ),
- 'Allpages' => array( 'Az_összes_lap_listája' ),
- 'Prefixindex' => array( 'Keresés_előtag_szerint' ),
- 'Ipblocklist' => array( 'Blokkolt_IP-címek_listája' ),
- 'Unblock' => array( 'Blokkolás_feloldása' ),
- 'Specialpages' => array( 'Speciális_lapok' ),
- 'Contributions' => array( 'Szerkesztő_közreműködései' ),
- 'Emailuser' => array( 'E-mail_küldése', 'E-mail_küldése_ezen_szerkesztőnek' ),
- 'Confirmemail' => array( 'Emailcím_megerősítése' ),
- 'Whatlinkshere' => array( 'Mi_hivatkozik_erre' ),
+ 'Randompage' => array( 'Lap_találomra' ),
+ 'Randomredirect' => array( 'Ãtirányítás_találomra' ),
+ 'Recentchanges' => array( 'Friss_változtatások' ),
'Recentchangeslinked' => array( 'Kapcsolódó_változtatások' ),
- 'Movepage' => array( 'Lap_átnevezése' ),
- 'Blockme' => array( 'Blokkolj' ),
- 'Booksources' => array( 'Könyvforrások' ),
- 'Categories' => array( 'Kategóriák' ),
- 'Export' => array( 'Lapok_exportálása' ),
- 'Version' => array( 'Névjegy', 'Verziószám', 'Verzió' ),
- 'Allmessages' => array( 'Rendszerüzenetek' ),
- 'Log' => array( 'Rendszernaplók', 'Naplók', 'Napló' ),
- 'Blockip' => array( 'Blokkolás' ),
+ 'Revisiondelete' => array( 'Változat_törlése' ),
+ 'RevisionMove' => array( 'Változat_áthelyezése' ),
+ 'Search' => array( 'Keresés' ),
+ 'Shortpages' => array( 'Rövid_lapok' ),
+ 'Specialpages' => array( 'Speciális_lapok' ),
+ 'Statistics' => array( 'Statisztika', 'Statisztikák' ),
+ 'Tags' => array( 'Címkék' ),
+ 'Unblock' => array( 'Blokkolás_feloldása' ),
+ 'Uncategorizedcategories' => array( 'Kategorizálatlan_kategóriák' ),
+ 'Uncategorizedimages' => array( 'Kategorizálatlan_fájlok', 'Kategorizálatlan_képek' ),
+ 'Uncategorizedpages' => array( 'Kategorizálatlan_lapok' ),
+ 'Uncategorizedtemplates' => array( 'Kategorizálatlan_sablonok' ),
'Undelete' => array( 'Törölt_lapváltozatok_visszaállítása' ),
- 'Import' => array( 'Lapok_importálása' ),
- 'Lockdb' => array( 'Adatbázis_lezárása' ),
'Unlockdb' => array( 'Adatbázis_lezárás_feloldása' ),
- 'Userrights' => array( 'Szerkesztők_jogai', 'Szerkesztői_jogok', 'Szerkesztőjogok', 'Szerkesztő_jogai' ),
- 'MIMEsearch' => array( 'Keresés_MIME-típus_alapján' ),
- 'FileDuplicateSearch' => array( 'Duplikátumok_keresése' ),
- 'Unwatchedpages' => array( 'Nem_figyelt_lapok' ),
- 'Listredirects' => array( 'Ãtirányítások_listája' ),
- 'Revisiondelete' => array( 'Változat_törlése' ),
+ 'Unusedcategories' => array( 'Nem_használt_kategóriák' ),
+ 'Unusedimages' => array( 'Nem_használt_képek' ),
'Unusedtemplates' => array( 'Nem_használt_sablonok' ),
- 'Randomredirect' => array( 'Ãtirányítás_találomra' ),
- 'Mypage' => array( 'Lapom', 'Userlapom' ),
- 'Mytalk' => array( 'Vitám', 'Vitalapom', 'Uservitalapom' ),
- 'Mycontributions' => array( 'Közreműködéseim' ),
- 'Listadmins' => array( 'Adminisztrátorok', 'Adminisztrátorok_listája', 'Sysopok' ),
- 'Listbots' => array( 'Botok', 'Botok_listája' ),
- 'Popularpages' => array( 'Népszerű_oldalak' ),
- 'Search' => array( 'Keresés' ),
- 'Resetpass' => array( 'Jelszócsere' ),
+ 'Unwatchedpages' => array( 'Nem_figyelt_lapok' ),
+ 'Upload' => array( 'Feltöltés' ),
+ 'Userlogin' => array( 'Belépés' ),
+ 'Userlogout' => array( 'Kilépés' ),
+ 'Userrights' => array( 'Szerkesztők_jogai', 'Szerkesztői_jogok', 'Szerkesztőjogok', 'Szerkesztő_jogai' ),
+ 'Version' => array( 'Névjegy', 'Verziószám', 'Verzió' ),
+ 'Wantedcategories' => array( 'Keresett_kategóriák' ),
+ 'Wantedfiles' => array( 'Keresett_fájlok' ),
+ 'Wantedpages' => array( 'Keresett_lapok' ),
+ 'Wantedtemplates' => array( 'Keresett_sablonok' ),
+ 'Watchlist' => array( 'Figyelőlistám' ),
+ 'Whatlinkshere' => array( 'Mi_hivatkozik_erre' ),
'Withoutinterwiki' => array( 'Nyelvközi_hivatkozás_nélküli_lapok', 'Wikiközi_hivatkozás_nélküli_lapok', 'Interwikilinkek_nélküli_lapok' ),
- 'MergeHistory' => array( 'Laptörténetek_egyesítése', 'Laptörténet-egyesítés' ),
- 'Filepath' => array( 'Fájl_elérési_útja', 'Fájl_elérési_út' ),
- 'Invalidateemail' => array( 'E-mail_cím_érvénytelenítése' ),
- 'Blankpage' => array( 'Ãœres_lap' ),
- 'LinkSearch' => array( 'Hivatkozás_keresés' ),
- 'DeletedContributions' => array( 'Törölt_szerkesztések' ),
- 'Tags' => array( 'Címkék' ),
);
$datePreferences = array(
@@ -300,7 +307,7 @@ $linkTrail = '/^([a-záéíóúöüőűÃÉÃÓÚÖÜÅÅ°]+)(.*)$/sDu';
$messages = array(
# User preference toggles
'tog-underline' => 'Hivatkozások aláhúzása:',
-'tog-highlightbroken' => 'A nem létező lapokat <a href="" class="new">így</a> jelölje. (Alternatíva: így<a href="" class="internal">?</a>)',
+'tog-highlightbroken' => 'A nem létező lapokra való hivatkozásokat <a href="" class="new">így</a> jelölje. (Alternatíva: így<a href="" class="internal">?</a>)',
'tog-justify' => 'Sorkizárt fejezetek',
'tog-hideminor' => 'Apró változtatások elrejtése a friss változtatások lapon',
'tog-hidepatrolled' => 'Az ellenőrzött szerkesztések elrejtése a friss változtatások lapon',
@@ -313,24 +320,24 @@ $messages = array(
'tog-editsection' => '[szerkesztés] linkek az egyes szakaszok szerkesztéséhez',
'tog-editsectiononrightclick' => 'Szakaszok szerkesztése a szakaszcímre való jobb kattintással (JavaScript-alapú)',
'tog-showtoc' => 'Tartalomjegyzék megjelenítése a három fejezetnél többel rendelkező cikkeknél',
-'tog-rememberpassword' => 'Emlékezzen rám ezzel a böngészővel (legfeljebb $1 napig)',
+'tog-rememberpassword' => 'Emlékezzen rám ezzel a böngészővel (legfeljebb {{PLURAL:$1|egy|$1}} napig)',
'tog-watchcreations' => 'Az általam létrehozott lapok felvétele a figyelőlistára',
'tog-watchdefault' => 'Az általam szerkesztett lapok felvétele a figyelőlistára',
'tog-watchmoves' => 'Az általam átnevezett lapok felvétele a figyelőlistára',
'tog-watchdeletion' => 'Az általam törölt lapok felvétele a figyelőlistára',
-'tog-minordefault' => 'Alapértelmezésben minden szerkesztésemet jelölje aprónak',
+'tog-minordefault' => 'Alapértelmezetten minden szerkesztésemet jelölje aprónak',
'tog-previewontop' => 'Előnézet megjelenítése a szerkesztőablak előtt',
'tog-previewonfirst' => 'Előnézet első szerkesztésnél',
'tog-nocache' => 'A lapok gyorstárazásának letiltása a böngészőben',
-'tog-enotifwatchlistpages' => 'Értesítés küldése e-mailben, ha egy általam figyelt lap megváltozik',
-'tog-enotifusertalkpages' => 'Értesítés e-mailben, ha megváltozik a vitalapom',
-'tog-enotifminoredits' => 'Értesítés e-mailben a lapok apró változtatásairól',
-'tog-enotifrevealaddr' => 'Jelenítse meg az e-mail címemet a figyelmeztető e-mailekben',
-'tog-shownumberswatching' => 'Az oldalt figyelő szerkesztők számának mutatása',
+'tog-enotifwatchlistpages' => 'Kapjak értesítést e-mailben, ha egy általam figyelt lap megváltozik',
+'tog-enotifusertalkpages' => 'Kapjak értesítést e-mailben, ha megváltozik a vitalapom',
+'tog-enotifminoredits' => 'Kapjak értesítést e-mailben a lapok apró változtatásairól',
+'tog-enotifrevealaddr' => 'Jelenjen meg az e-mail címem a figyelmeztető e-mailekben',
+'tog-shownumberswatching' => 'A lapot figyelő szerkesztők számának megjelenítése',
'tog-oldsig' => 'A jelenlegi aláírás:',
'tog-fancysig' => 'Az aláírás wikiszöveg (nem lesz automatikusan hivatkozásba rakva)',
-'tog-externaleditor' => 'Külső szerkesztőprogram használata (Csak haladók számára, speciális beállításokra van szükség a számítógépen. [http://www.mediawiki.org/wiki/Manual:External_editors További információ angolul.])',
-'tog-externaldiff' => 'Külső diff program használata (Csak haladók számára, speciális beállításokra van szükség a számítógépen. [http://www.mediawiki.org/wiki/Manual:External_editors További információ angolul.])',
+'tog-externaleditor' => 'Külső szerkesztőprogram használata (Csak haladók számára, speciális beállításokra van szükség a számítógépen. [//www.mediawiki.org/wiki/Manual:External_editors További információ angolul.])',
+'tog-externaldiff' => 'Külső diff program használata (Csak haladók számára, speciális beállításokra van szükség a számítógépen. [//www.mediawiki.org/wiki/Manual:External_editors További információ angolul.])',
'tog-showjumplinks' => 'Helyezzen el hivatkozást („Ugrásâ€) a beépített eszköztárra',
'tog-uselivepreview' => 'Élő előnézet használata (JavaScript-alapú, kísérleti)',
'tog-forceeditsummary' => 'Figyelmeztessen, ha nem adok meg szerkesztési összefoglalót',
@@ -338,17 +345,17 @@ $messages = array(
'tog-watchlisthidebots' => 'Robotok szerkesztéseinek elrejtése',
'tog-watchlisthideminor' => 'Apró változtatások elrejtése',
'tog-watchlisthideliu' => 'Bejelentkezett szerkesztők módosításainak elrejtése a figyelőlistáról',
-'tog-watchlisthideanons' => 'Névtelen szerkesztések elrejtése a figyelőlistáról',
-'tog-watchlisthidepatrolled' => 'Az ellenőrzött szerkesztések elrejtése a figyelőlistán',
-'tog-nolangconversion' => 'A változók átalakításának letiltása',
+'tog-watchlisthideanons' => 'Névtelen szerkesztések elrejtése',
+'tog-watchlisthidepatrolled' => 'Az ellenőrzött szerkesztések elrejtése',
+'tog-nolangconversion' => 'Nyelvvariánsok közötti átalakítás letiltása',
'tog-ccmeonemails' => 'A másoknak küldött e-mailjeimről kapjak én is másolatot',
'tog-diffonly' => 'Ne mutassa a lap tartalmát lapváltozatok közötti eltérések megtekintésekor',
'tog-showhiddencats' => 'Rejtett kategóriák megjelenítése',
-'tog-norollbackdiff' => 'Ne jelenjenek meg az eltérések a visszaállítás után',
+'tog-norollbackdiff' => 'Ne jelenjenek meg az eltérések visszaállítás után',
-'underline-always' => 'Mindig',
-'underline-never' => 'Soha',
-'underline-default' => 'A böngésző alapértelmezése szerint',
+'underline-always' => 'mindig',
+'underline-never' => 'soha',
+'underline-default' => 'a böngésző alapértelmezése szerint',
# Font style option in Special:Preferences
'editfont-style' => 'A szerkesztőterület betűtípusa:',
@@ -370,7 +377,7 @@ $messages = array(
'tue' => 'kedd',
'wed' => 'sze',
'thu' => 'csü',
-'fri' => 'péntek',
+'fri' => 'pé',
'sat' => 'szo',
'january' => 'január',
'february' => 'február',
@@ -414,26 +421,19 @@ $messages = array(
'category_header' => 'A(z) „$1†kategóriába tartozó lapok',
'subcategories' => 'Alkategóriák',
'category-media-header' => 'A(z) „$1†kategóriába tartozó médiafájlok',
-'category-empty' => "''Ebben a kategóriában pillanatnyilag egyetlen lap, médiafájl vagy alkategória sem szerepel.''",
+'category-empty' => "''Ebben a kategóriában pillanatnyilag egyetlen lap vagy médiafájl sem szerepel.''",
'hidden-categories' => '{{PLURAL:$1|Rejtett kategória|Rejtett kategóriák}}',
'hidden-category-category' => 'Rejtett kategóriák',
'category-subcat-count' => "''{{PLURAL:$2|Ennek a kategóriának csak egyetlen alkategóriája van.|Ez a kategória az alábbi {{PLURAL:$1|alkategóriával|$1 alkategóriával}} rendelkezik (összesen $2 alkategóriája van).}}''",
'category-subcat-count-limited' => 'Ebben a kategóriában {{PLURAL:$1|egy|$1}} alkategória található.',
-'category-article-count' => '{{PLURAL:$2|Csak a következő lap található ebben a kategóriában.|Az összesen $2 lapból a következő $1-t listázza ez a kategóriaoldal, a többi a további oldalakon található.}}',
-'category-article-count-limited' => 'Ebben a kategóriában a következő {{PLURAL:$1|lap|$1 lap}} található.',
+'category-article-count' => '{{PLURAL:$2|Csak a következő lap található ebben a kategóriában:|Az összesen $2 lapból a következő $1-t listázza ez a kategóriaoldal, a többi a további oldalakon található.}}',
+'category-article-count-limited' => 'Ebben a kategóriában a következő {{PLURAL:$1|lap|$1 lap}} található:',
'category-file-count' => '{{PLURAL:$2|Csak a következő fájl található ebben a kategóriában.|Az összesen $2 fájlból a következő $1-t listázza ez a kategórialap, a többi a további oldalakon található.}}',
-'category-file-count-limited' => '{{PLURAL:$1|Egy|$1}} fájl található ebben a kategóriában.',
+'category-file-count-limited' => 'Ebben a kategóriában {{PLURAL:$1|egy|$1}} fájl található.',
'listingcontinuesabbrev' => 'folyt.',
'index-category' => 'Indexelt lapok',
'noindex-category' => 'Nem indexelt lapok',
-
-'mainpagetext' => "'''A MediaWiki telepítése sikeresen befejeződött.'''",
-'mainpagedocfooter' => "Ha segítségre van szükséged a wikiszoftver használatához, akkor keresd fel a [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] oldalt.
-
-== Alapok (angol nyelven) ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Beállítások listája]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki GyIK]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-kiadások levelezőlistája]",
+'broken-file-category' => 'Hibás fájlhivatkozásokat tartalmazó lapok',
'about' => 'Névjegy',
'article' => 'Szócikk',
@@ -442,7 +442,7 @@ $messages = array(
'moredotdotdot' => 'Tovább…',
'mypage' => 'Lapom',
'mytalk' => 'Vitalapom',
-'anontalk' => 'az IP-címhez tartozó vitalap',
+'anontalk' => 'Az IP-címhez tartozó vitalap',
'navigation' => 'Navigáció',
'and' => '&#32;és',
@@ -485,10 +485,10 @@ $messages = array(
'history' => 'Laptörténet',
'history_short' => 'Laptörténet',
'updatedmarker' => 'az utolsó látogatásom óta frissítették',
-'info_short' => 'Információ',
'printableversion' => 'Nyomtatható változat',
'permalink' => 'Link erre a változatra',
'print' => 'Nyomtatás',
+'view' => 'Olvasás',
'edit' => 'Szerkesztés',
'create' => 'Létrehozás',
'editthispage' => 'Lap szerkesztése',
@@ -496,13 +496,14 @@ $messages = array(
'delete' => 'Törlés',
'deletethispage' => 'Lap törlése',
'undelete_short' => '{{PLURAL:$1|Egy|$1}} szerkesztés helyreállítása',
+'viewdeleted_short' => '{{PLURAL:$1|Egy|$1}} törölt szerkesztés megtekintése',
'protect' => 'Lapvédelem',
'protect_change' => 'módosítás',
'protectthispage' => 'Lapvédelem',
'unprotect' => 'Védelem módosítása',
'unprotectthispage' => 'A lap védelmének módosítása',
'newpage' => 'Új lap',
-'talkpage' => 'Megbeszélés a lappal kapcsolatban',
+'talkpage' => 'A lappal kapcsolatos megbeszélés',
'talkpagelinktext' => 'vitalap',
'specialpage' => 'Speciális lap',
'personaltools' => 'Személyes eszközök',
@@ -528,12 +529,12 @@ $messages = array(
'jumpto' => 'Ugrás:',
'jumptonavigation' => 'navigáció',
'jumptosearch' => 'keresés',
-'view-pool-error' => 'Sajnáljuk, de a szerverek jelenleg túl vannak terhelve.
-Túl sok felhasználó próbálta megtekinteni ezt az oldalt.
-Kérlek, várj egy kicsit, mielőtt újrapróbálkoznál a lap megtekintésével.
+'view-pool-error' => 'Sajnos a szerverek jelen pillanatban túl vannak terhelve, mert
+túl sok felhasználó próbálta megtekinteni ezt az oldalt.
+Kérjük, várj egy kicsit, mielőtt újrapróbálkoznál a lap megtekintésével!
$1',
-'pool-timeout' => 'Letelt a várakozási idő a zároláshoz',
+'pool-timeout' => 'Letelt a zárolás feloldására szánt várakozási idő',
'pool-queuefull' => 'A pool sor megtelt',
'pool-errorunknown' => 'Ismeretlen hiba',
@@ -546,12 +547,12 @@ $1',
'currentevents-url' => 'Project:Friss események',
'disclaimers' => 'Jogi nyilatkozat',
'disclaimerpage' => 'Project:Jogi nyilatkozat',
-'edithelp' => 'Szerkesztési súgó',
+'edithelp' => 'Szerkesztési segítség',
'edithelppage' => 'Help:Szerkesztés',
'helppage' => 'Help:Tartalom',
'mainpage' => 'Kezdőlap',
'mainpage-description' => 'Kezdőlap',
-'policy-url' => 'Project:Nyilatkozat',
+'policy-url' => 'Project:Irányelvek',
'portal' => 'Közösségi portál',
'portal-url' => 'Project:Közösségi portál',
'privacy' => 'Adatvédelmi irányelvek',
@@ -562,7 +563,8 @@ $1',
'badaccess-groups' => 'Ezt a tevékenységet csak a(z) $1 {{PLURAL:$2|csoportba|csoportok valamelyikébe}} tartozó felhasználó végezheti el.',
'versionrequired' => 'A MediaWiki $1-s verziója szükséges',
-'versionrequiredtext' => 'A lap használatához a MediaWiki $1-s verziójára van szükség. Lásd a [[Special:Version|verzió]] lapot.',
+'versionrequiredtext' => 'A lap használatához a MediaWiki $1-s verziójára van szükség.
+További információkat a [[Special:Version|verzióinformációs lapon]] találhatsz.',
'ok' => 'OK',
'retrievedfrom' => 'A lap eredeti címe: „$1â€',
@@ -579,21 +581,26 @@ $1',
'toc' => 'Tartalomjegyzék',
'showtoc' => 'megjelenítés',
'hidetoc' => 'elrejtés',
+'collapsible-collapse' => 'becsuk',
+'collapsible-expand' => 'kinyit',
'thisisdeleted' => '$1 megtekintése vagy helyreállítása?',
'viewdeleted' => '$1 megtekintése',
'restorelink' => '{{PLURAL:$1|Egy|$1}} törölt szerkesztés',
'feedlinks' => 'Hírcsatorna:',
-'feed-invalid' => 'Érvénytelen a figyelt hírcsatorna típusa.',
-'feed-unavailable' => 'Ezen wikin nincs elérhető hírcsatorna',
-'site-rss-feed' => '$1 RSS csatorna',
-'site-atom-feed' => '$1 Atom hírcsatorna',
-'page-rss-feed' => '„$1†RSS hírcsatorna',
-'page-atom-feed' => '„$1†Atom hírcsatorna',
+'feed-invalid' => 'A figyelt hírcsatorna típusa érvénytelen.',
+'feed-unavailable' => 'Nincs elérhető hírcsatorna',
+'site-rss-feed' => '$1 RSS-hírcsatorna',
+'site-atom-feed' => '$1 Atom-hírcsatorna',
+'page-rss-feed' => '„$1†RSS-hírcsatorna',
+'page-atom-feed' => '„$1†Atom-hírcsatorna',
+'feed-rss' => 'RSS',
'red-link-title' => '$1 (a lap nem létezik)',
+'sort-descending' => 'Csökkenő sorrend',
+'sort-ascending' => 'Növekvő sorrend',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Szócikk',
-'nstab-user' => 'Szerkesztői lap',
+'nstab-user' => 'Felhasználói lap',
'nstab-media' => 'Média',
'nstab-special' => 'Speciális lap',
'nstab-project' => 'Projektlap',
@@ -605,19 +612,19 @@ $1',
# Main script and global functions
'nosuchaction' => 'Nincs ilyen művelet',
-'nosuchactiontext' => 'Az URL-ben megadott műveletet érvénytelen.
-Valószínűleg elgépelted, hibás hivatkozásra kattintottál, vagy a
-a(z) {{SITENAME}} által használt szoftver hibája is lehet.',
+'nosuchactiontext' => 'Az URL-ben megadott művelet érvénytelen.
+Valószínűleg elgépelted vagy hibás hivatkozásra kattintottál.
+Az is előfordulhat, hogy a(z) {{SITENAME}} wiki szoftverében hiba található.',
'nosuchspecialpage' => 'Nem létezik ilyen speciális lap',
'nospecialpagetext' => '<strong>Érvénytelen speciális lapot akartál megtekinteni.</strong>
-Az érvényes speciális lapok listáját a [[Special:SpecialPages|Speciális lapok]] oldalon találod.',
+Az érvényes speciális lapok listáját a [[Special:SpecialPages|{{int:specialpages}}]] oldalon találod.',
# General errors
'error' => 'Hiba',
'databaseerror' => 'Adatbázishiba',
'dberrortext' => 'Szintaktikai hiba található az adatbázis-lekérdezésben.
-Ez szoftverhiba miatt történhetett.
+Ezt szoftverhiba okozhatta.
Az utolsó adatbázis-lekérdezés a(z) „<tt>$2</tt>†függvényből történt, és a következő volt:
<blockquote><tt>$1</tt></blockquote>
Az adatbázis ezzel a hibával tért vissza: „<tt>$3: $4</tt>â€.',
@@ -625,7 +632,7 @@ Az adatbázis ezzel a hibával tért vissza: „<tt>$3: $4</tt>â€.',
Az utolsó adatbázis-lekérdezés a(z) „$2†függvényből történt, és a következő volt:
„$1â€
Az adatbázis ezzel a hibával tért vissza: „$3: $4â€.',
-'laggedslavemode' => 'Figyelem: Ez a lap nem feltétlenül tartalmazza a legfrissebb változtatásokat!',
+'laggedslavemode' => "'''Figyelem:''' Ez a lap nem feltétlenül tartalmazza a legfrissebb változtatásokat!",
'readonly' => 'Az adatbázis le van zárva',
'enterlockreason' => 'Add meg a lezárás okát, valamint egy becslést, hogy mikor kerül a lezárás feloldásra',
'readonlytext' => 'A wiki adatbázisa ideiglenesen le van zárva (valószínűleg adatbázis-karbantartás miatt). A lezárás időtartama alatt a lapok nem szerkeszthetők, és új szócikkek sem hozhatóak létre, az oldalak azonban továbbra is böngészhetőek.
@@ -670,12 +677,13 @@ Lekérdezés: $2',
'protectedpagetext' => 'Ez egy védett lap, nem szerkeszthető.',
'viewsourcetext' => 'Megtekintheted és másolhatod a lap forrását:',
'protectedinterface' => 'Ez a lap a szoftver felületéhez szolgáltat szöveget, és a visszaélések elkerülése miatt le van zárva.',
-'editinginterface' => "'''Vigyázat:''' egy olyan lapot szerkesztesz, ami a MediaWiki szoftver felületéthez tarzozik. A lap megváltoztatása hatással lesz más szerkesztők számára is. Fordításra inkább használd a MediaWiki fordítására indított kezdeményezést, a [http://translatewiki.net/wiki/Main_Page?setlang=hu translatewiki.net-et].",
+'editinginterface' => "'''Vigyázat:''' egy olyan lapot szerkesztesz, ami a MediaWiki szoftver felületéthez tarzozik. A lap megváltoztatása hatással lesz más szerkesztők számára is. Fordításra inkább használd a MediaWiki fordítására indított kezdeményezést, a [//translatewiki.net/wiki/Main_Page?setlang=hu translatewiki.net-et].",
'sqlhidden' => '(rejtett SQL lekérdezés)',
'cascadeprotected' => 'Ez a lap szerkesztés elleni védelemmel lett ellátva, mert a következő {{PLURAL:$1|lapon|lapokon}} be van kapcsolva a „kaszkádolt†védelem:
$2',
'namespaceprotected' => "Nincs jogosultságod a(z) '''$1''' névtérben található lapok szerkesztésére.",
-'customcssjsprotected' => 'Nincs jogosultságod a lap szerkesztéséhez, mert egy másik szerkesztő személyes beállításait tartalmazza.',
+'customcssprotected' => 'Nem szerkesztheted ezt a CSS-lapot, mert egy másik felhasználó személyes beállításait tartalmazza.',
+'customjsprotected' => 'Nem szerkesztheted ezt a JavaScript-lapot, mert egy másik felhasználó személyes beállításait tartalmazza.',
'ns-specialprotected' => 'A speciális lapok nem szerkeszthetőek.',
'titleprotected' => "Ilyen címmel nem lehet szócikket készíteni, [[User:$1|$1]] letiltotta.
A blokkolás oka: „''$2''â€.",
@@ -713,6 +721,7 @@ Ne felejtsd el átnézni a [[Special:Preferences|személyes beállításaidat]].
'createaccount' => 'Regisztráció',
'gotaccount' => "Ha már korábban regisztráltál, '''$1'''!",
'gotaccountlink' => 'Bejelentkezés',
+'userlogin-resetlink' => 'Elfelejtetted a bejelentkezési adataidat?',
'createaccountmail' => 'e-mailben',
'createaccountreason' => 'Indoklás:',
'badretype' => 'A megadott jelszavak nem egyeznek.',
@@ -724,13 +733,15 @@ Kérlek, válassz másikat!',
'nocookieslogin' => 'A wiki sütiket („cookieâ€) használ a szerkesztÅ‘k azonosításhoz.
Nálad ezek le vannak tiltva.
Engedélyezd őket, majd próbáld meg újra.',
+'nocookiesfornew' => 'A felhasználói fiók nem lett létrehozva, mivel nem sikerült megerősítenünk a forrását.
+Ellenőrizd, hogy a sütik engedélyezve vannak-e, majd frissítsd az oldalt, és próbálkozz újra.',
'noname' => 'Érvénytelen szerkesztőnevet adtál meg.',
'loginsuccesstitle' => 'Sikeres bejelentkezés',
'loginsuccess' => "'''Sikeresen bejelentkeztél a(z) {{SITENAME}} wikibe „$1†néven.'''",
'nosuchuser' => 'Nem létezik „$1†nevű szerkesztő.
A szerkesztőnevek kis- és nagybetű-érzékenyek.
Ellenőrizd, hogy helyesen írtad-e be, vagy [[Special:UserLogin/signup|hozz létre egy új fiókot]].',
-'nosuchusershort' => 'Nem létezik „<nowiki>$1</nowiki>†nevű szerkesztő.
+'nosuchusershort' => 'Nem létezik „$1†nevű szerkesztő.
Ellenőrizd, hogy helyesen írtad-e be.',
'nouserspecified' => 'Meg kell adnod a felhasználói nevet.',
'login-userblocked' => 'Ez a szerkesztő blokkolva van, a bejelentkezés nem engedélyezett.',
@@ -775,13 +786,14 @@ Ha nem kértél új azonosítót, és tévedésből kaptad ezt a levelet, nyugod
'usernamehasherror' => 'A felhasználónév nem tartalmazhat hash karaktereket',
'login-throttled' => 'Túl sok hibás bejelentkezés.
Várj egy kicsit, mielőtt újra próbálkozol.',
+'login-abort-generic' => 'Bejelentkezés sikertelen – megszakítva',
'loginlanguagelabel' => 'Nyelv: $1',
'suspicious-userlogout' => 'A kijelentkezési kérésed vissza lett utasítva, mert úgy tűnik, hogy egy hibás böngésző vagy gyorsítótárazó proxy küldte.',
# E-mail sending
'php-mail-error-unknown' => 'Ismeretlen hiba a PHP mail() függvényében',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Jelszó módosítása',
'resetpass_announce' => 'Az e-mailben elküldött ideiglenes kóddal jelentkeztél be. A bejelentkezés befejezéséhez meg kell megadnod egy új jelszót:',
'resetpass_text' => '<!-- Ide írd a szöveget -->',
@@ -799,6 +811,30 @@ Várj egy kicsit, mielőtt újra próbálkozol.',
Lehet, hogy már sikeresen megváltoztattad a jelszavad, vagy pedig időközben új ideiglenes jelszót kértél.',
'resetpass-temp-password' => 'Ideiglenes jelszó:',
+# Special:PasswordReset
+'passwordreset' => 'Jelszó beállítása',
+'passwordreset-text' => 'Az alábbi űrlap kitöltése után egy értesítő e-mailt kapsz a fiók adataival.',
+'passwordreset-legend' => 'Új jelszó kérése',
+'passwordreset-disabled' => 'Új jelszó kérése nem engedélyezett ezen a wikin.',
+'passwordreset-pretext' => '{{PLURAL:$1||Ãrd be az alábbi adatok egyikét}}',
+'passwordreset-username' => 'Felhasználónév:',
+'passwordreset-domain' => 'Tartomány:',
+'passwordreset-email' => 'E-mail cím:',
+'passwordreset-emailtitle' => 'A(z) {{SITENAME}}-fiók adatai',
+'passwordreset-emailtext-ip' => 'Valaki (vélhetően Te, a $1 IP-címrő)l emlékeztetők kért a {{SITENAME}} ($4) oldalon felvett fiókokról. A következő felhasználói {{PLURAL:$3|fiók van|fiókok vannak}} hozzárendelve ehhez az e-mail címhez:
+
+$2
+
+{{PLURAL:$3|Ez az ideiglenes jelszó|Ezek az ideiglenes jelszavak}} $5 nap múlva {{PLURAL:$3|jár|járnak}} le. Jelentkezz be, és cseréld le a jelszavadat. Ha valaki más kérte az emlékeztetőt, vagy eszedbe jutott a régi jelszó, és nem akarod lecserélni a jelszavadat, hagyd figyelmen kívül ezt az üzenetet, és használd a régi jelszavadat.',
+'passwordreset-emailtext-user' => '$1 felhasználó emlékeztetők kért a {{SITENAME}} ($4) oldalon felvett fiókokról. A következő felhasználói {{PLURAL:$3|fiók van|fiókok vannak}} hozzárendelve ehhez az e-mail címhez:
+
+$2
+
+{{PLURAL:$3|Ez az ideiglenes jelszó|Ezek az ideiglenes jelszavak}} $5 nap múlva {{PLURAL:$3|jár|járnak}} le. Jelentkezz be, és cseréld le a jelszavadat. Ha valaki más kérte az emlékeztetőt, vagy eszedbe jutott a régi jelszó, és nem akarod lecserélni a jelszavadat, hagyd figyelmen kívül ezt az üzenetet, és használd a régi jelszavadat.',
+'passwordreset-emailelement' => 'Felhaználónév: $1
+Ideiglenes jelszó: $2',
+'passwordreset-emailsent' => 'Emlékeztető e-mail elküldve.',
+
# Edit page toolbar
'bold_sample' => 'Félkövér szöveg',
'bold_tip' => 'Félkövér szöveg',
@@ -810,8 +846,6 @@ Lehet, hogy már sikeresen megváltoztattad a jelszavad, vagy pedig időközben
'extlink_tip' => 'Külső hivatkozás (ne felejtsd el a http:// előtagot)',
'headline_sample' => 'Alfejezet címe',
'headline_tip' => 'Alfejezetcím',
-'math_sample' => 'Ide írd a képletet',
-'math_tip' => 'Matematikai képlet (LaTeX)',
'nowiki_sample' => 'Ide írd a formázatlan szöveget',
'nowiki_tip' => 'Wiki formázás kikapcsolása',
'image_sample' => 'Pelda.jpg',
@@ -899,7 +933,7 @@ Ha úgy látod, hogy az üzenetek, amiket ide kapsz, nem neked szólnak, [[Speci
vagy [{{fullurl:{{FULLPAGENAME}}|action=edit}} szerkesztheted a lapot].</span>',
'noarticletext-nopermission' => 'Ez a lap jelenleg nem tartalmaz szöveget.
[[Special:Search/{{PAGENAME}}|Rákereshetsz a lap címére]] más lapok tartalmában, vagy <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} megtekintheted a kapcsolódó naplófájlokat]</span>.',
-'userpage-userdoesnotexist' => 'Nincs „$1†nevű regisztrált felhasználónk.
+'userpage-userdoesnotexist' => 'Nincs „<nowiki>$1</nowiki>†nevű regisztrált felhasználónk.
Nézd meg, hogy valóban ezt a lapot szeretnéd-e létrehozni vagy szerkeszteni.',
'userpage-userdoesnotexist-view' => 'Nincs regisztrálva „$1†szerkesztői azonosító.',
'blocked-notice-logextract' => 'A felhasználó jelenleg blokkolva van.
@@ -934,6 +968,7 @@ Amennyiben továbbra sem sikerül, próbálj meg [[Special:UserLogout|kijelentke
'token_suffix_mismatch' => "'''A szerkesztésedet elutasítottuk, mert a kliensprogramod megváltoztatta a központozó karaktereket
a szerkesztési tokenben. A szerkesztés azért lett visszautasítva, hogy megelőzzük a lap szövegének sérülését.
Ez a probléma akkor fordulhat elő, ha hibás, web-alapú proxyszolgáltatást használsz.'''",
+'edit_form_incomplete' => "'''A szerkesztési űrlap egyes részei nem érkeztek meg a szerverre; ellenőrizd újra, hogy a szerkesztés sértetlen-e, majd próbáld újra.'''",
'editing' => '$1 szerkesztése',
'editingsection' => '$1 szerkesztése (szakasz)',
'editingcomment' => '$1 szerkesztése (új szakasz)',
@@ -1068,26 +1103,25 @@ További információkat a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAM
További részleteket a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.
Mivel adminisztrátor vagy, még mindig [$1 megtekintheted a tartalmát], ha szeretnéd.",
'rev-suppressed-text-unhide' => "A lap ezen változatát '''elrejtették'''.
-További részleteket az [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} elrejtési naplóban] találhatsz.
+További részleteket az [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} elrejtési naplóban] találhatsz.
Mivel adminisztrátor vagy, még mindig [$1 megtekintheted a tartalmát], ha szeretnéd.",
'rev-deleted-text-view' => "A lap ezen változatát '''törölték'''.
-Adminisztrátorként megnézheted; további részleteket a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.",
+Te megnézheted. További részleteket a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.",
'rev-suppressed-text-view' => "A lap ezen változatát '''elrejtették'''.
-Mivel adminisztrátor vagy, még mindig megtekintheted.
-További részleteket az [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} elrejtési naplóban] találhatsz.",
+Te megtekintheted. További részleteket az [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} elrejtési naplóban] találhatsz.",
'rev-deleted-no-diff' => "Nem nézheted meg a két változat közötti eltérést, mert a változatok egyikét '''törölték'''.
További részleteket a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.",
'rev-suppressed-no-diff' => "Nem nézheted meg ezt a változtatást, mert az egyik változatot '''törölték'''.",
'rev-deleted-unhide-diff' => "A változatok közötti eltéréshez kiválasztott változatok egyike '''törölve''' lett.
További részleteket a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.
-Mivel adminisztrátor vagy, még mindig [$1 megtekintheted a változatok közötti eltérést], ha szeretnéd.",
+Te még mindig [$1 megtekintheted a változatok közötti eltérést], ha szeretnéd.",
'rev-suppressed-unhide-diff' => "A változatok közötti eltéréshez kiválasztott változatok egyike '''el lett rejtve'''.
Részleteket az [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} elrejtési naplójában találhatsz].
-Mivel adminisztrátor vagy, még mindig [$1 megtekintheted a változatok közötti eltérést], ha szeretnéd.",
+Te még mindig [$1 megtekintheted a változatok közötti eltérést], ha szeretnéd.",
'rev-deleted-diff-view' => "A változatok közötti eltéréshez kiválasztott változatok egyike '''törölve''' lett.
-Mivel adminisztrátor vagy, még mindig megtekintheted a változatok közötti eltérést; további részleteket pedig a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.",
+Te még mindig megtekintheted a változatok közötti eltérést. További részleteket a [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} törlési naplóban] találhatsz.",
'rev-suppressed-diff-view' => "A változatok közötti eltéréshez kiválasztott változatok egyike '''el lett rejtve'''.
-Mivel adminisztrátor vagy, még mindig megtekintheted a változatok közötti eltérést; további részleteket pedig az [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} elrejtési naplójában találhatsz].",
+Te még mindig megtekintheted a változatok közötti eltérést. További részleteket az [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} elrejtési naplójában találhatsz].",
'rev-delundel' => 'megjelenítés/elrejtés',
'rev-showdeleted' => 'megjelenítés',
'revisiondelete' => 'Változatok törlése vagy helyreállítása',
@@ -1164,7 +1198,7 @@ Ellenőrizd a naplókat.',
# Suppression log
'suppressionlog' => 'Adatvédelmibiztos-napló',
-'suppressionlogtext' => 'Lenn látható az adminisztrátorok elől legutóbb elrejtett törlések és blokkok listája. Lásd a [[Special:IPBlockList|blokkolt IP-címek listája]] lapot a jelenleg érvényben lévő kitiltásokhoz és blokkokhoz.',
+'suppressionlogtext' => 'Lenn látható az adminisztrátorok elől legutóbb elrejtett törlések és blokkok listája. Lásd a [[Special:BlockList|blokkolt IP-címek listája]] lapot a jelenleg érvényben lévő kitiltásokhoz és blokkokhoz.',
# History merging
'mergehistory' => 'Laptörténetek egyesítése',
@@ -1271,12 +1305,13 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
'searchdisabled' => 'Elnézésed kérjük, de a teljes szöveges keresés terhelési okok miatt átmenetileg nem használható. Ezidő alatt használhatod a lenti Google keresést, mely viszont lehetséges, hogy nem teljesen friss adatokkal dolgozik.',
# Quickbar
-'qbsettings' => 'Gyorsmenü',
-'qbsettings-none' => 'Nincs',
-'qbsettings-fixedleft' => 'Fix baloldali',
-'qbsettings-fixedright' => 'Fix jobboldali',
-'qbsettings-floatingleft' => 'Lebegő baloldali',
-'qbsettings-floatingright' => 'Lebegő jobboldali',
+'qbsettings' => 'Gyorsmenü',
+'qbsettings-none' => 'Nincs',
+'qbsettings-fixedleft' => 'Fix baloldali',
+'qbsettings-fixedright' => 'Fix jobboldali',
+'qbsettings-floatingleft' => 'Lebegő baloldali',
+'qbsettings-floatingright' => 'Lebegő jobboldali',
+'qbsettings-directionality' => 'Rögzített, a nyelved írásának irányától függően',
# Preferences page
'preferences' => 'Beállítások',
@@ -1287,9 +1322,10 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
'changepassword' => 'Jelszócsere',
'prefs-skin' => 'Felület',
'skin-preview' => 'előnézet',
-'prefs-math' => 'Képletek',
'datedefault' => 'Nincs beállítás',
+'prefs-beta' => 'Béta funkciók',
'prefs-datetime' => 'Dátum és idő',
+'prefs-labs' => 'Kísérleti funkciók',
'prefs-personal' => 'Felhasználói adatok',
'prefs-rc' => 'Friss változtatások',
'prefs-watchlist' => 'Figyelőlista',
@@ -1311,8 +1347,6 @@ Győződj meg róla, hogy a laptörténet folytonossága megmarad.',
'columns' => 'Oszlop',
'searchresultshead' => 'Keresés',
'resultsperpage' => 'Laponként mutatott találatok száma:',
-'contextlines' => 'Találatonként mutatott sorok száma:',
-'contextchars' => 'Soronkénti szövegkörnyezet (karakterszám):',
'stub-threshold' => 'A hivatkozások <a href="#" class="stub">csonkként</a> történő formázásának határa (bájtban):',
'stub-threshold-disabled' => 'Kikapcsolva',
'recentchangesdays' => 'A friss változtatásokban mutatott napok száma:',
@@ -1325,7 +1359,7 @@ Itt van egy véletlenszerűen generált érték, amit használhatsz: $1',
'savedprefs' => 'Az új beállításaid érvénybe léptek.',
'timezonelegend' => 'Időzóna:',
'localtime' => 'Helyi idő:',
-'timezoneuseserverdefault' => 'A kiszolgáló alapértelmezett értékének használata',
+'timezoneuseserverdefault' => 'Az alapértelmezett beállítás használata ($1)',
'timezoneuseoffset' => 'Egyéb (eltérés megadása)',
'timezoneoffset' => 'Eltérés¹:',
'servertime' => 'A kiszolgáló ideje:',
@@ -1373,8 +1407,8 @@ A műveletet nem lehet visszavonni.',
'prefs-help-gender' => 'Nem kötelező: a szoftver használja a nemtől függő üzenetek megjelenítéséhez. Az információ mindenki számára látható.',
'email' => 'E-mail',
'prefs-help-realname' => 'A valódi nevet nem kötelező megadni, de ha úgy döntesz, hogy megadod, azzal leszel feltüntetve a munkád szerzőjeként.',
-'prefs-help-email' => 'Az e-mail cím megadása nem kötelező, de így kérhetsz új jelszót, ha elfelejtenéd a meglévőt.
-Ezen kívül más szerkesztők is kapcsolatba lépjenek veled a szerkesztői vagy vitalapodon keresztül, anélkül, hogy névtelenséged feladnád.',
+'prefs-help-email' => 'Az e-mail cím megadása nem kötelező, de szükséges új jelszó kéréséhez, ha elfelejtenéd a meglévőt.',
+'prefs-help-email-others' => 'Úgy is dönthetsz, hogy lehetővé teszed mások számára, hogy kapcsolatba lépjenek veled a felhasználói vagy vitalapodon keresztül, anélkül, hogy fel kellene fedned a személyazonosságodat.',
'prefs-help-email-required' => 'Meg kell adnod az e-mail címedet.',
'prefs-info' => 'Alapinformációk',
'prefs-i18n' => 'Nyelvi beállítások',
@@ -1498,15 +1532,15 @@ Ezen kívül más szerkesztők is kapcsolatba lépjenek veled a szerkesztői vag
'right-userrights' => 'az összes szerkesztő jogainak módosítása',
'right-userrights-interwiki' => 'más wikik szerkesztői jogainak módosítása',
'right-siteadmin' => 'adatbázis lezárása, felnyitása',
-'right-reset-passwords' => 'Más felhasználók jelszavának visszaállítása',
'right-override-export-depth' => 'Lapok exportálása a hivatkozott lapokkal együtt, legfeljebb 5-ös mélységig',
'right-sendemail' => 'e-mail küldése más felhasználóknak',
# 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)',
-'rightsnone' => '(semmi)',
+'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',
+'rightsnone' => '(semmi)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'lap olvasása',
@@ -1627,13 +1661,13 @@ Lásd még az [[Special:NewFiles|új fáljlok galériáját]]',
'minlength1' => 'A fájlnévnek legalább egy betűből kell állnia.',
'illegalfilename' => 'A „$1†lap neve olyan karaktereket tartalmaz, melyek nincsenek megengedve lapcímben. Kérlek, változtasd meg a nevet, és próbálkozz a mentéssel újra.',
'badfilename' => 'A fájl új neve „$1â€.',
-'filetype-mime-mismatch' => 'A fájl kiterjesztése nem egyezik a MIME-típusával.',
+'filetype-mime-mismatch' => 'A fájl kiterjesztése („.$1â€) nem egyezik meg az észlelt MIME-típussal ($2).',
'filetype-badmime' => '„$1†MIME-típusú fájlokat nem lehet feltölteni.',
'filetype-bad-ie-mime' => 'A fájlt nem lehet feltölteni, mert az Internet Explorer „$1†típusúnak tekintené, ami tiltott és potenciálisan veszélyes fájltípus.',
'filetype-unwanted-type' => "A(z) '''„.$1â€''' nem javasolt fájltípus.
Az ajánlott {{PLURAL:$3|típus|típusok}}: $2.",
-'filetype-banned-type' => "A(z) '''„.$1â€''' nem megengedett fájltípus.
-Az engedélyezett {{PLURAL:$3|típus|típusok}}: $2.",
+'filetype-banned-type' => "A következÅ‘ {{PLURAL:$4|fájltípus nem engedélyezett|fájltípusok nem engedélyezettek}}: '''„.$1â€'''
+Engedélyezett {{PLURAL:$3|típus|típusok}}: $2.",
'filetype-missing' => 'A fájlnak nincs kiterjesztése (pl. „.jpgâ€).',
'empty-file' => 'Az elküldött fájl üres volt.',
'file-too-large' => 'Az elküldött fájl túl nagy volt.',
@@ -1652,6 +1686,7 @@ ez a fájl $2.',
'emptyfile' => 'Az általad feltöltött fájl üresnek tűnik.
Ez valószínűleg azért van, mert hibásan adtad meg a feltöltendő fájl nevét.
Ellenőrizd, hogy valóban fel akarod-e tölteni ezt a fájlt.',
+'windows-nonascii-filename' => 'A wiki nem támogatja a speciális karaktereket tartalmazó fájlneveket.',
'fileexists' => "'''<tt>[[:$1]]</tt>''' névvel már létezik egy állomány.
Ellenőrizd, hogy biztosan felül akarod-e írni! [[$1|thumb]]",
'filepageexists' => "Ehhez a fájlnévhez már létezik leírás a '''<tt>[[:$1]]</tt>''' lapon, de jelenleg nincs feltöltve ilyen nevű fájl.
@@ -1685,6 +1720,8 @@ Ha még mindig fel szeretnéd tölteni a fájlt, menj vissza, és adj meg egy ú
'php-uploaddisabledtext' => 'A PHP-s fájlfeltöltés le van tiltva. Ellenőrizd a file_uploads beállítást.',
'uploadscripted' => 'Ez a fájl olyan HTML- vagy parancsfájlkódot tartalmaz, melyet tévedésből egy webböngésző esetleg értelmezni próbálhatna.',
'uploadvirus' => 'Ez a fájl vírust tartalmaz! A részletek: $1',
+'uploadjava' => 'A fájl egy ZIP-fájl, ami egy Java .class fájlt tartalmaz.
+Java fájlok feltöltése nem engedélyezett, mert segítségükkel kijátszhatóak a biztonsági korlátozások.',
'upload-source' => 'Forrásfájl',
'sourcefilename' => 'Forrásfájl neve:',
'sourceurl' => 'A forrás URL-címe:',
@@ -1694,9 +1731,6 @@ Ha még mindig fel szeretnéd tölteni a fájlt, menj vissza, és adj meg egy ú
'upload-options' => 'Feltöltési beállítások',
'watchthisupload' => 'Fájl figyelése',
'filewasdeleted' => 'Korábban valaki már feltöltött ilyen néven egy fájlt, amelyet később töröltünk. Ellenőrizd a $1 bejegyzését, nehogy újra feltöltsd ugyanezt a fájlt.',
-'upload-wasdeleted' => "'''Vigyázat: egy olyan fájlt akarsz feltölteni, ami korábban már törölve lett.'''
-
-Mielőtt ismét feltöltenéd, nézd meg, miért lett korábban törölve, és ellenőrizd, hogy a törlés indoka nem érvényes-e még. A törlési naplóban a lapról az alábbi bejegyzések szerepelnek:",
'filename-bad-prefix' => "Annak a fájlnak a neve, amelyet fel akarsz tölteni '''„$1â€''' karakterekkel kezdÅ‘dik. Ilyeneket általában a digitális kamerák adnak a fájloknak, automatikusan, azonban ezek nem írják le annak tartalmát. Válassz egy leíró nevet!",
'filename-prefix-blacklist' => ' #<!-- ezt a sort hagyd így --> <pre>
#A szintaktika a következő:
@@ -1732,12 +1766,30 @@ Kérjük, hogy lépj kapcsolatba egy [[Special:ListUsers/sysop|adminisztrátorr
'upload-unknown-size' => 'Ismeretlen méretű',
'upload-http-error' => 'HTTP-hiba történt: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Hiba történt a ZIP fájlokon végzett ellenőrzés elindítása közben.',
+'zip-wrong-format' => 'A fájl sérült, vagy más miatt olvashatatlan ZIP fájl.
+Nem lehet megfelelően ellenőrizni a biztonságosságát.',
+'zip-bad' => 'A fájl sérült, vagy más miatt olvashatatlan ZIP fájl.
+Nem lehet megfelelően ellenőrizni a biztonságosságát.',
+'zip-unsupported' => 'A fájl ZIP fájl, ami olyan ZIP funkciókat használ, melyeket nem támogat a MediaWiki.
+Nem lehet megfelelően ellenőrizni a biztonságosságát.',
+
+# Special:UploadStash
+'uploadstash' => 'Feltöltéstároló',
+'uploadstash-summary' => 'Ezen a lapon lehet hozzáférni azokhoz a fájlokhoz, melyek fel lettek töltve (vagy épp feltöltés alatt vannak), de még nem lettek közzétéve a wikin. Az ilyen fájlok csak a feltöltőik számára láthatóak.',
+'uploadstash-clear' => 'Tárolt fájlok törlése',
+'uploadstash-nofiles' => 'Nincsenek tárolt fájljaid.',
+'uploadstash-badtoken' => 'A művelet végrehajtása sikertelen volt. Lehetséges, hogy lejártak a szerkesztést hitelesítő adataid. Próbáld újra!',
+'uploadstash-errclear' => 'A fájlok törlése nem sikerült.',
+'uploadstash-refresh' => 'Fájlok listájának frissítése',
+
# img_auth script messages
'img-auth-accessdenied' => 'Hozzáférés megtagadva',
'img-auth-nopathinfo' => 'Hiányzó PATH_INFO.
A szerver nincs beállítva, hogy továbbítsa ezt az információt.
Lehet, hogy CGI-alapú, és nem támogatja az img_auth-ot.
-Lásd a http://www.mediawiki.org/wiki/Manual:Image_Authorization lapot.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Lásd kép hitelesítési lapot.]',
'img-auth-notindir' => 'A kért elérési út nincs a beállított feltöltési könyvtárban.',
'img-auth-badtitle' => 'Nem sikerült érvényes címet készíteni a(z) „$1†szövegből.',
'img-auth-nologinnWL' => 'Nem vagy bejelentkezve, és a(z) „$1†nincs az engedélyezési listán.',
@@ -1774,8 +1826,7 @@ Ez a wiki publikus, így a biztonság miatt az img_auth.php ki van kapcsolva.',
# Special:ListFiles
'listfiles-summary' => 'Ezen a speciális lapon látható az összes feltöltött fájl.
-A legutóbb feltöltött fájlok vannak a lista elején.
-Az oszlopok címeire kattintva változtathatod meg a rendezést.',
+Amennyiben a szerkesztő szűrést állított be, úgy csak azok a fájlok jelennek meg, amikor a szerkesztő töltötte fel a legfrissebb verziót.',
'listfiles_search_for' => 'Keresés fájl nevére:',
'imgfile' => 'fájl',
'listfiles' => 'Fájllista',
@@ -1804,14 +1855,14 @@ Az oszlopok címeire kattintva változtathatod meg a rendezést.',
'filehist-filesize' => 'Fájlméret',
'filehist-comment' => 'Megjegyzés',
'filehist-missing' => 'A fájl hiányzik',
-'imagelinks' => 'Fájlhivatkozások',
+'imagelinks' => 'Fájlhasználat',
'linkstoimage' => 'Az alábbi {{PLURAL:$1|lap hivatkozik|lapok hivatkoznak}} erre a fájlra:',
'linkstoimage-more' => 'Több, mint {{PLURAL:$1|egy|$1}} oldal hivatkozik erre a fájlra.
A következő lista csak az {{PLURAL:$1|első linket|első $1 linket}} tartalmazza.
A teljes lista [[Special:WhatLinksHere/$2|ezen a lapon]] található meg.',
'nolinkstoimage' => 'Erre a fájlra nem hivatkozik lap.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|További hivatkozások]] megtekintése',
-'redirectstofile' => 'A következő {{PLURAL:$1|fájl|$1 fájl}} van átirányítva erre a névre:',
+'linkstoimage-redirect' => '$1 (fájlátirányítás) $2',
'duplicatesoffile' => 'A következő {{PLURAL:$1|fájl|$1 fájl}} ennek a fájlnak a duplikátuma ([[Special:FileDuplicateSearch/$2|további részletek]]):',
'sharedupload' => 'Ez a fájl a(z) $1 megosztott tárhelyről származik, és más projektek is használhatják.',
'sharedupload-desc-there' => 'Ez a fájl a $1 megosztott tárhelyről származik, és más projektek is használhatják.
@@ -1900,18 +1951,19 @@ Ellenőrizd a meglévő hivatkozásokat, mielőtt törölnéd őket.',
'statistics-users-active-desc' => 'Szerkesztők, akik csináltak valamit az elmúlt {{PLURAL:$1|egy|$1}} napban',
'statistics-mostpopular' => 'Legtöbbször megtekintett lapok',
-'disambiguations' => 'Egyértelműsítő lapok',
+'disambiguations' => 'Egyértelműsítő lapokra mutató lapok',
'disambiguationspage' => 'Template:Egyért',
'disambiguations-text' => "A következő oldalak '''egyértelműsítő lapra''' mutató hivatkozást tartalmaznak.
A megfelelő szócikkre kellene mutatniuk inkább.<br />
Egy oldal egyértelműsítő lapnak számít, ha tartalmazza a [[MediaWiki:Disambiguationspage]] oldalról belinkelt sablonok valamelyikét.",
-'doubleredirects' => 'Dupla átirányítások',
-'doubleredirectstext' => 'Ez a lap azokat a lapokat listázza, melyek átirányító lapokra irányítanak át.
+'doubleredirects' => 'Dupla átirányítások',
+'doubleredirectstext' => 'Ez a lap azokat a lapokat listázza, melyek átirányító lapokra irányítanak át.
Minden sor tartalmaz egy hivatkozást az első, valamint a második átirányításra, valamint a második átirányítás céljára, ami általában a valódi céllap, erre kellene az első átirányításnak mutatnia.
Az <del>áthúzott</del> sorok a lista elkészülése óta javítva lettek.',
-'double-redirect-fixed-move' => '[[$1]] átnevezve, a továbbiakban átirányításként működik a(z) [[$2]] lapra',
-'double-redirect-fixer' => 'Ãtirányításjavító',
+'double-redirect-fixed-move' => '[[$1]] átnevezve, a továbbiakban átirányításként működik a(z) [[$2]] lapra',
+'double-redirect-fixed-maintenance' => '[[$1]] dupla átirányítás javítása a következőre: [[$2]]',
+'double-redirect-fixer' => 'Ãtirányításjavító',
'brokenredirects' => 'Nem létező lapra mutató átirányítások',
'brokenredirectstext' => 'A következő átirányítások nem létező lapokra hivatkoznak:',
@@ -1988,6 +2040,7 @@ Vedd figyelembe, hogy más weboldalak közvetlenül hivatkozhatnak egy fájl URL
'pager-newer-n' => '{{PLURAL:$1|1 újabb|$1 újabb}}',
'pager-older-n' => '{{PLURAL:$1|1 régebbi|$1 régebbi}}',
'suppress' => 'adatvédelmi biztos',
+'querypage-disabled' => 'Ez a speciális lap a megfelelő teljesítmény fenntartása érdekében le van tiltva.',
# Book sources
'booksources' => 'Könyvforrások',
@@ -1998,8 +2051,8 @@ további információkat lelhetsz ott az általad keresett könyvekről:',
'booksources-invalid-isbn' => 'A megadott ISBN hibásnak tűnik; ellenőrizd, hogy jól másoltad-e át az eredeti forrásból.',
# Special:Log
-'specialloguserlabel' => 'Felhasználó:',
-'speciallogtitlelabel' => 'Cím:',
+'specialloguserlabel' => 'Szerkesztő:',
+'speciallogtitlelabel' => 'Cél (cím vagy felhasználó):',
'log' => 'Rendszernaplók',
'all-logs-page' => 'Minden nyilvános napló',
'alllogstext' => 'A(z) {{SITENAME}} naplóinak összesített listája.
@@ -2039,12 +2092,12 @@ Lásd még a [[Special:WantedCategories|keresett kategóriák]] listáját.',
'sp-deletedcontributions-contribs' => 'közreműködései',
# Special:LinkSearch
-'linksearch' => 'Külső hivatkozások',
+'linksearch' => 'Külső hivatkozások keresése',
'linksearch-pat' => 'Keresett minta:',
'linksearch-ns' => 'Névtér:',
'linksearch-ok' => 'keresés',
-'linksearch-text' => 'Helyettesítő karaktereket is lehet használni, például "*.wikipedia.org".<br />
-Támogatott protokollok: <tt>$1</tt>',
+'linksearch-text' => 'Helyettesítő karaktereket is lehet használni, például "*.wikipedia.org". Legalább egy felső szintű tartománynak lennie kell, például "*.org"<br />
+Támogatott protokollok: <tt>$1</tt> (ezeket ne írd be a keresésbe).',
'linksearch-line' => '$1 hivatkozva innen: $2',
'linksearch-error' => 'Helyettesítő karakterek csak a cím elején szerepelhetnek.',
@@ -2105,6 +2158,10 @@ Feladóként a [[Special:Preferences|beállításaid]]nál megadott e-mail-címe
'noemailtext' => 'Ez a szerkesztő nem adott meg érvényes e-mail címet.',
'nowikiemailtitle' => 'Nem küldhető e-mail üzenet',
'nowikiemailtext' => 'Ez a szerkesztő nem kíván másoktól e-mail üzeneteket fogadni.',
+'emailnotarget' => 'A címzett nem létezik vagy a felhasználónév érvénytelen.',
+'emailtarget' => 'Ãrd be címzett felhasználónevét',
+'emailusername' => 'Felhasználónév:',
+'emailusernamesubmit' => 'Küldés',
'email-legend' => 'E-mail küldése egy másik {{SITENAME}}-szerkesztőnek',
'emailfrom' => 'Feladó:',
'emailto' => 'Címzett:',
@@ -2129,10 +2186,10 @@ Feladóként a [[Special:Preferences|beállításaid]]nál megadott e-mail-címe
'watchlistanontext' => 'A figyelőlistád megtekintéséhez és szerkesztéséhez $1.',
'watchnologin' => 'Nem vagy bejelentkezve',
'watchnologintext' => 'Ahhoz, hogy figyelőlistád lehessen, [[Special:UserLogin|be kell lépned]].',
-'addedwatch' => 'Figyelőlistához hozzáfűzve',
+'addwatch' => 'Hozzáadás a figyelőlistához',
'addedwatchtext' => "A(z) „[[:$1]]†lapot hozzáadtam a [[Special:Watchlist|figyelőlistádhoz]].
Ezután minden, a lapon vagy annak vitalapján történő változást ott fogsz látni, és a lap '''vastagon''' fog szerepelni a [[Special:RecentChanges|friss változtatások]] lapon, hogy könnyen észrevehető legyen.",
-'removedwatch' => 'Figyelőlistáról eltávolítva',
+'removewatch' => 'Eltávolítás a figyelőlistáról',
'removedwatchtext' => 'A(z) „[[:$1]]†lapot eltávolítottam a [[Special:Watchlist|figyelőlistáról]].',
'watch' => 'Lap figyelése',
'watchthispage' => 'Lap figyelése',
@@ -2153,8 +2210,9 @@ Ezután minden, a lapon vagy annak vitalapján történő változást ott fogsz
'watchlist-options' => 'A figyelőlista beállításai',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Figyelés...',
-'unwatching' => 'Figyelés befejezése...',
+'watching' => 'Figyelés...',
+'unwatching' => 'Figyelés befejezése...',
+'watcherrortext' => 'Hiba történt a(z) „$1†lapra vonatkozó figyelőlista-beállítások módosítása közben.',
'enotif_mailer' => '{{SITENAME}} Értesítéspostázó',
'enotif_reset' => 'Az összes lap megjelölése felkeresettként',
@@ -2184,14 +2242,17 @@ Amíg nem keresed fel az oldalt, addig nem érkeznek újabb értesítések az ol
Baráti üdvözlettel: a(z) {{SITENAME}} értesítő rendszere
--
+Az e-mail értesítéseid módosításához keresd fel a
+{{canonicalurl:{{#special:Preferences}}}} címet
+
A figyelőlistád módosításához keresd fel a
-{{fullurl:{{#special:Watchlist}}/edit}} címet
+{{canonicalurl:{{#special:EditWatchlist}}}} címet
A lap figyelőlistádról való törléséhez keresd fel a
$UNWATCHURL címet
Visszajelzés és további segítség:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Lap törlése',
@@ -2207,7 +2268,7 @@ Visszajelzés és további segítség:
Kérjük, erősítsd meg, hogy valóban ezt szeretnéd tenni, átlátod a következményeit, és hogy a műveletet a [[{{MediaWiki:Policy-url}}|törlési irányelvekkel]] összhangban végzed.',
'actioncomplete' => 'Művelet végrehajtva',
'actionfailed' => 'A művelet nem sikerült',
-'deletedtext' => 'A(z) „<nowiki>$1</nowiki>†lapot törölted.
+'deletedtext' => 'A(z) „$1†lapot törölted.
A legutóbbi törlések listájához lásd a $2 lapot.',
'deletedarticle' => '„[[$1]]†törölve',
'suppressedarticle' => 'elrejtette a(z) „[[$1]]†szócikket',
@@ -2263,7 +2324,7 @@ A [[Special:ProtectedPages|védett lapok listáján]] megtekintheted a jelenleg
'protect_expiry_invalid' => 'A lejárati idő érvénytelen.',
'protect_expiry_old' => 'A lejárati idő a múltban van.',
'protect-unchain-permissions' => 'További védelmi lehetőségek feloldása',
-'protect-text' => "Itt megtekintheted és módosíthatod a(z) '''<nowiki>$1</nowiki>''' lap védelmi szintjét.",
+'protect-text' => "Itt megtekintheted és módosíthatod a(z) '''$1''' lap védelmi szintjét.",
'protect-locked-blocked' => "Nem változtathatod meg a védelmi szinteket, amíg blokkolnak. Itt vannak a(z)
'''$1''' lap jelenlegi beállításai:",
'protect-locked-dblock' => "A védelmi szinteket egy aktív adatbázis zárolás miatt nem változtathatod meg.
@@ -2318,9 +2379,8 @@ Megváltoztathatod ezen lap védelmi szintjét, de az nem lesz hatással a kaszk
'undeletepagetext' => 'Az alábbi {{PLURAL:$1|lapot törölték, de még helyreállítható|$1 lapot törölték, de még helyreállíthatók}} az archívumból.
Az archívumot időről időre üríthetik!',
'undelete-fieldset-title' => 'Változatok helyreállítása',
-'undeleteextrahelp' => "A lap teljes helyreállításához ne jelölj be egy jelölőnégyzetet sem, csak kattints a '''''Helyreállítás''''' gombra.
-A lap részleges helyreállításához jelöld be a kívánt változatok melletti jelölőnégyzeteket, és kattints a '''''Helyreállítás''''' gombra.
-Ha megnyomod a '''''Vissza''''' gombot, az törli a jelölőnégyzetek és az összefoglaló jelenlegi tartalmát.",
+'undeleteextrahelp' => "A lap teljes helyreállításához ne jelölj be egy jelölőnégyzetet sem, csak kattints a '''''{{int:undeletebtn}}''''' gombra.
+A lap részleges helyreállításához jelöld be a kívánt változatok melletti jelölőnégyzeteket, és kattints a '''''{{int:undeletebtn}}''''' gombra.",
'undeleterevisions' => '{{PLURAL:$1|egy|$1}} változat archiválva',
'undeletehistory' => 'Ha helyreállítasz egy lapot, azzal visszahozod laptörténet összes változatát.
Ha lap törlése óta azonos néven már létrehoztak egy újabb lapot, a helyreállított
@@ -2366,9 +2426,12 @@ $1',
'undelete-show-file-submit' => 'Igen',
# Namespace form on various pages
-'namespace' => 'Névtér:',
-'invert' => 'Kijelölés megfordítása',
-'blanknamespace' => '(FÅ‘)',
+'namespace' => 'Névtér:',
+'invert' => 'Kijelölés megfordítása',
+'tooltip-invert' => 'Pipáld ki a dobozt, ha el szeretnéd rejteni a kiválasztott névterekben történt változtatásokat (és a kapcsolódó névterekben, amennyiben úgy van beállítva)',
+'namespace_association' => 'Kapcsolódó névtér',
+'tooltip-namespace_association' => 'Pipáld ki ezt a dobozt, ha a kiválasztott névtérhez tartozó vita- vagy tárgynévteret is bele szeretnéd venni.',
+'blanknamespace' => '(FÅ‘)',
# Contributions
'contributions' => 'Szerkesztő közreműködései',
@@ -2417,13 +2480,15 @@ A blokknapló legutóbbi ide vonatkozó bejegyzése a következő:',
'whatlinkshere-filters' => 'Elemek szűrése',
# Block/unblock
+'autoblockid' => '$1. autoblokk',
+'block' => 'Felhasználó blokkolása',
+'unblock' => 'Felhasználó blokkolásának feloldása',
'blockip' => 'Blokkolás',
'blockip-title' => 'Felhasználó blokkolása',
'blockip-legend' => 'Felhasználó blokkolása',
'blockiptext' => 'Az alábbi űrlap segítségével megvonhatod egy szerkesztő vagy IP-cím szerkesztési jogait.
Ügyelj rá, hogy az intézkedésed mindig legyen tekintettel a vonatkozó [[{{MediaWiki:Policy-url}}|irányelvekre]].
Add meg a blokkolás okát is (például idézd a blokkolandó személy által vandalizált lapokat).',
-'ipaddress' => 'IP-cím',
'ipadressorusername' => 'IP-cím vagy felhasználói név',
'ipbexpiry' => 'Lejárat:',
'ipbreason' => 'Ok:',
@@ -2436,7 +2501,7 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
** Megfélemlítő viselkedés, zaklatás
** Több szerkesztői fiókkal való visszaélés
** Elfogadhatatlan azonosító',
-'ipbanononly' => 'Csak anonim felhasználók blokkolása',
+'ipb-hardblock' => 'Megakadályozza, hogy a bejelentkezett felhasználók erről az IP-címről szerkesszenek',
'ipbcreateaccount' => 'Új regisztráció megakadályozása',
'ipbemailban' => 'E-mailt se tudjon küldeni',
'ipbenableautoblock' => 'A szerkesztő által használt IP-címek automatikus blokkolása',
@@ -2447,12 +2512,15 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
'ipbotherreason' => 'Más/további ok:',
'ipbhidename' => 'A felhasználónév ne jelenjen meg a szerkesztéseknél és a listákban',
'ipbwatchuser' => 'A felhasználó lapjának és vitalapjának figyelése',
-'ipballowusertalk' => 'A szerkesztő módosíthatja saját vitalapját a blokkolás ideje alatt',
+'ipb-disableusertalk' => 'Megakadályozza, hogy a felhasználó szerkeszthesse a saját vitalapját, miközben blokkolva van',
'ipb-change-block' => 'Blokk beállításainak megváltoztatása',
+'ipb-confirm' => 'Blokk megerősítése',
'badipaddress' => 'Érvénytelen IP-cím',
'blockipsuccesssub' => 'Sikeres blokkolás',
'blockipsuccesstext' => '„[[Special:Contributions/$1|$1]]†felhasználót blokkoltad.
<br />Lásd a [[Special:IPBlockList|blokkolt IP-címek listáját]] az érvényben lévő blokkok áttekintéséhez.',
+'ipb-blockingself' => 'Saját magad blokkolására készülsz! Biztos, hogy ezt szeretnéd tenni?',
+'ipb-confirmhideuser' => 'Egy felhasználó blokkolására készülsz, úgy, hogy a „felhasználó elrejtése†funkció be van kapcsolva. Ez elrejti a felhasználó nevét az összes listában és naplóbejegyzésben. Biztosan ezt szeretnéd tenni?',
'ipb-edit-dropdown' => 'Blokkolási okok szerkesztése',
'ipb-unblock-addr' => '$1 blokkjának feloldása',
'ipb-unblock' => 'Felhasználónév vagy IP-cím blokkolásának feloldása',
@@ -2462,17 +2530,23 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
'unblockiptext' => 'Itt tudod visszaadni egy blokkolt felhasználónévnek vagy IP-nek a szerkesztési jogosultságot.',
'ipusubmit' => 'Blokk eltávolítása',
'unblocked' => '[[User:$1|$1]] blokkolása feloldva',
+'unblocked-range' => '$1 blokkja feloldva',
'unblocked-id' => '$1 blokkolása feloldásra került',
+'blocklist' => 'Blokkolt felhasználók',
'ipblocklist' => 'Blokkolt felhasználók',
'ipblocklist-legend' => 'Blokkolt felhasználó keresése',
-'ipblocklist-username' => 'Felhasználónév vagy IP-cím:',
-'ipblocklist-sh-userblocks' => 'felhasználói fiókok blokkjainak $1',
-'ipblocklist-sh-tempblocks' => 'ideiglenes blokkok $1',
-'ipblocklist-sh-addressblocks' => 'egy IP-címre vonatkozó blokkok $1',
+'blocklist-userblocks' => 'Fiókblokkolások elrejtése',
+'blocklist-tempblocks' => 'Ideiglenes blokkolások elrejtése',
+'blocklist-addressblocks' => 'IP-címek blokkolásainak elrejtése',
+'blocklist-timestamp' => 'Időbélyeg',
+'blocklist-target' => 'Célpont',
+'blocklist-expiry' => 'Lejárat',
+'blocklist-by' => 'Blokkoló adminisztrátor',
+'blocklist-params' => 'Blokkparaméterek',
+'blocklist-reason' => 'Ok',
'ipblocklist-submit' => 'Keresés',
'ipblocklist-localblock' => 'Helyi blokk',
'ipblocklist-otherblocks' => 'További {{PLURAL:$1|blokk|blokkok}}',
-'blocklistline' => '$1, $2 blokkolta $3 felhasználót ($4)',
'infiniteblock' => 'végtelen',
'expiringblock' => 'lejárat: $1 $2',
'anononlyblock' => 'csak anon.',
@@ -2492,7 +2566,7 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
'blocklog-showsuppresslog' => 'Ez a felhasználó korábban blokkot kapott, és a naplóbejegyzés el lett rejtve. Az elrejtési napló alább látható tájékoztatásként:',
'blocklogentry' => '„[[$1]]†blokkolva $2 $3 időtartamra',
'reblock-logentry' => 'megváltoztatta [[$1]] blokkjának beállításait, a blokk lejárta: $2 $3',
-'blocklogtext' => 'Ez a felhasználókra helyezett blokkoknak és azok feloldásának listája. Az IP-autoblokkok nem szerepelnek a listában. Lásd még [[Special:IPBlockList|a jelenleg életben lévő blokkok listáját]].',
+'blocklogtext' => 'Ez a felhasználókra helyezett blokkoknak és azok feloldásának listája. Az IP-autoblokkok nem szerepelnek a listában. Lásd még [[Special:BlockList|a jelenleg életben lévő blokkok listáját]].',
'unblocklogentry' => '„$1†blokkolása feloldva',
'block-log-flags-anononly' => 'csak anonok',
'block-log-flags-nocreate' => 'nem hozhat létre új fiókot',
@@ -2506,9 +2580,9 @@ Add meg a blokkolás okát is (például idézd a blokkolandó személy által v
'ipb_expiry_temp' => 'A láthatatlan felhasználóinév-blokkok lehetnek állandóak.',
'ipb_hide_invalid' => 'A felhasználói fiókot nem lehet elrejteni; lehet, hogy túl sok szerkesztése van.',
'ipb_already_blocked' => '"$1" már blokkolva',
-'ipb-needreblock' => '== Már blokkolva ==
-$1 már blokkolva van. Meg szeretnéd változtatni a beállításokat?',
+'ipb-needreblock' => '$1 már blokkolva van. Meg szeretnéd változtatni a beállításokat?',
'ipb-otherblocks-header' => 'További {{PLURAL:$1|blokk|blokkok}}',
+'unblock-hideuser' => 'Nem oldhatod fel a felhasználó blokkját, mivel a felhasználóneve el van rejtve.',
'ipb_cant_unblock' => 'Hiba: A(z) $1 blokkolási azonosító nem található. Lehet, hogy már feloldották a blokkolását.',
'ipb_blocked_as_range' => 'Hiba: a(z) $1 IP-cím nem blokkolható közvetlenül, és nem lehet feloldani. A(z) $2 tartomány részeként van blokkolva, amely feloldható.',
'ip_range_invalid' => 'Érvénytelen IP-tartomány.',
@@ -2549,6 +2623,7 @@ változtatni. Kérjük, erősítsd meg, hogy ezt kívánod tenni.',
'unlockdbsuccesstext' => 'Az adatbázis kinyitása kész.',
'lockfilenotwritable' => 'Az adatbázist zároló fájl nem írható. Az adatbázis zárolásához vagy kinyitásához ennek a webkiszolgáló által írhatónak kell lennie.',
'databasenotlocked' => 'Az adatbázis nincs lezárva.',
+'lockedbyandtime' => '($1 zárta le $2 $3-kor)',
# Move page
'move-page' => '$1 átnevezése',
@@ -2674,7 +2749,7 @@ Az utóbbi esetben közvetlen hivatkozást is használhatsz, például a [[{{#Sp
'allmessagesdefault' => 'Alapértelmezett szöveg',
'allmessagescurrent' => 'Jelenlegi szöveg',
'allmessagestext' => 'Ezen a lapon a MediaWiki-névtérben elérhető rendszerüzenetek listája látható.
-Ha részt szeretnél venni a MediaWiki fordításában, látogass el a [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation], valamint a [http://translatewiki.net translatewiki.net] oldalra.',
+Ha részt szeretnél venni a MediaWiki fordításában, látogass el a [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation], valamint a [//translatewiki.net translatewiki.net] oldalra.',
'allmessagesnotsupportedDB' => "A '''''{{ns:special}}:Allmessages''''' lap nem használható, mert a '''\$wgUseDatabaseMessages''' ki van kapcsolva.",
'allmessages-filter-legend' => 'Elemek szűrése',
'allmessages-filter' => 'Módosítás állapota:',
@@ -2812,25 +2887,32 @@ Mentsd el a számítógépedre, majd töltsd fel ide.',
'tooltip-summary' => 'Adj meg egy rövid összefoglalót',
# Stylesheets
-'common.css' => '/* Közös CSS az összes felületnek */',
-'monobook.css' => '/* Az ide elhelyezett CSS hatással lesz a Monobook felület használóira */',
-'vector.css' => '/******************************************************************************************\\
-* Ezek a stílusok csak a Vector felületre vonatkoznak *
-* A nem kifejezetten Vector-specifikus stílusokat a [[MediaWiki:Common.css]]-be írd! *
-\\******************************************************************************************/',
+'common.css' => '/* Közös CSS az összes felületnek */',
+'standard.css' => '/* Az ide elhelyezett CSS hatással lesz a Klasszikus felület használóira */',
+'nostalgia.css' => '/* Az ide elhelyezett CSS hatással lesz a Nosztalgia felület használóira */',
+'cologneblue.css' => '/* Az ide elhelyezett CSS hatással lesz a Kölni kék felület használóira */',
+'monobook.css' => '/* Az ide elhelyezett CSS hatással lesz a Monobook felület használóira */',
+'myskin.css' => '/* Az ide elhelyezett CSS hatással lesz a MySkin felület használóira */',
+'chick.css' => '/* Az ide elhelyezett CSS hatással lesz a Chick felület használóira */',
+'simple.css' => '/* Az ide elhelyezett CSS hatással lesz a Egyszerű felület használóira */',
+'modern.css' => '/* Az ide elhelyezett CSS hatással lesz a Modern felület használóira */',
+'vector.css' => '/* Az ide elhelyezett CSS hatással lesz a Vector felület használóira */',
+'print.css' => '/* Az ide elhelyezett CSS hatással lesz a nyomtatás kimenetelére */',
# Scripts
-'common.js' => '/* Az ide elhelyezett JavaScript kód minden felhasználó számára lefut az oldalak betöltésekor. */',
-'monobook.js' => '/* A Monobook felületet használó szerkesztők számára betöltendő JavaScriptek */',
-'vector.js' => '/******************************************************************************************\\
-* Ezek a szkriptek csak a Vector skin alatt futnak le. *
-* A nem kifejezetten Vector-specifikus szkripteket a [[MediaWiki:Common.js]]-be írd! *
-\\******************************************************************************************/',
+'common.js' => '/* Az ide elhelyezett JavaScript kód minden felhasználó számára lefut az oldalak betöltésekor. */',
+'standard.js' => '/* A Klasszikus felületet használó szerkesztők számára betöltendő JavaScriptek */',
+'nostalgia.js' => '/* A Nosztalgia felületet használó szerkesztők számára betöltendő JavaScriptek */',
+'cologneblue.js' => '/* A Kölni kék felületet használó szerkesztők számára betöltendő JavaScriptek */',
+'monobook.js' => '/* A Monobook felületet használó szerkesztők számára betöltendő JavaScriptek */',
+'myskin.js' => '/* A MySkin felületet használó szerkesztők számára betöltendő JavaScriptek */',
+'chick.js' => '/* A Chick felületet használó szerkesztők számára betöltendő JavaScriptek */',
+'simple.js' => '/* Az Egyszerű felületet használó szerkesztők számára betöltendő JavaScriptek */',
+'modern.js' => '/* A Modern felületet használó szerkesztők számára betöltendő JavaScriptek */',
+'vector.js' => '/* A Vector felületet használó szerkesztők számára betöltendő JavaScriptek */',
# Metadata
-'nodublincore' => 'Ezen a kiszolgálón a Dublin Core RDF metaadatok használata letiltott.',
-'nocreativecommons' => 'Ezen a kiszolgálón a Creative Commons RDF metaadatok használata letiltott.',
-'notacceptable' => 'A wiki kiszolgálója nem tudja olyan formátumban biztosítani az adatokat, amit a kliens olvasni tud.',
+'notacceptable' => 'A wiki kiszolgálója nem tudja olyan formátumban biztosítani az adatokat, amit a kliens olvasni tud.',
# Attribution
'anonymous' => 'Névtelen {{SITENAME}}-{{PLURAL:$1|szerkesztő|szerkesztők}}',
@@ -2854,12 +2936,17 @@ Ez valószínűleg egy olyan link miatt van, ami egy feketelistán lévő oldalr
'spam_blanking' => 'Az összes változat tartalmazott a $1 lapra mutató hivatkozásokat, kiürítés',
# Info page
-'infosubtitle' => 'Információk a lapról',
-'numedits' => 'Szerkesztések száma (szócikk): $1',
-'numtalkedits' => 'Szerkesztések száma (vitalap): $1',
-'numwatchers' => 'Figyelők száma: $1',
-'numauthors' => 'Önálló szerzők száma (szócikk): $1',
-'numtalkauthors' => 'Önálló szerzők száma (vitalap): $1',
+'pageinfo-title' => 'Információk a(z) „$1†lapról',
+'pageinfo-header-edits' => 'Szerkesztések',
+'pageinfo-header-watchlist' => 'Figyelőlista',
+'pageinfo-header-views' => 'Megtekintések',
+'pageinfo-subjectpage' => 'Lap',
+'pageinfo-talkpage' => 'Vitalap',
+'pageinfo-watchers' => 'Figyelők száma',
+'pageinfo-edits' => 'Szerkesztések száma',
+'pageinfo-authors' => 'Egyedi szerkesztők száma',
+'pageinfo-views' => 'Megtekintések száma',
+'pageinfo-viewsperedit' => 'Megtekintés/szerkesztés',
# Skin names
'skinname-standard' => 'Klasszikus',
@@ -2871,25 +2958,6 @@ Ez valószínűleg egy olyan link miatt van, ami egy feketelistán lévő oldalr
'skinname-simple' => 'Egyszerű',
'skinname-modern' => 'Modern',
-# Math options
-'mw_math_png' => 'Mindig készítsen PNG-t',
-'mw_math_simple' => 'HTML, ha nagyon egyszerű, egyébként PNG',
-'mw_math_html' => 'HTML, ha lehetséges, egyébként PNG',
-'mw_math_source' => 'Hagyja TeX formában (szöveges böngészőknek)',
-'mw_math_modern' => 'Modern böngészőknek ajánlott beállítás',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'Értelmezés sikertelen',
-'math_unknown_error' => 'ismeretlen hiba',
-'math_unknown_function' => 'ismeretlen függvény',
-'math_lexing_error' => 'lexikai hiba',
-'math_syntax_error' => 'formai hiba',
-'math_image_error' => 'PNG-vé alakítás sikertelen; ellenőrizd, hogy a latex és dvipng (vagy dvips + gs + convert) helyesen van-e telepítve',
-'math_bad_tmpdir' => 'Nem írható vagy nem hozható létre a matematikai ideiglenes könyvtár',
-'math_bad_output' => 'Nem lehet létrehozni vagy írni a matematikai függvények kimeneti könyvtárába',
-'math_notexvc' => 'HIányzó texvc végrehajtható fájl; a beállítást lásd a math/README fájlban.',
-
# Patrolling
'markaspatrolleddiff' => 'Ellenőrzöttnek jelölöd',
'markaspatrolledtext' => 'Ellenőriztem',
@@ -2925,22 +2993,25 @@ $1',
'nextdiff' => 'Újabb szerkesztés →',
# Media information
-'mediawarning' => "'''Figyelmeztetés''': Ez a fájltípus kártékony kódot tartalmazhat.
+'mediawarning' => "'''Figyelmeztetés''': Ez a fájltípus kártékony kódot tartalmazhat.
A futtatása során kárt tehet a számítógépedben.",
-'imagemaxsize' => "A képek mérete, legfeljebb:<br />''(a leírólapokon)''",
-'thumbsize' => 'Bélyegkép mérete:',
-'widthheightpage' => '$1×$2, {{PLURAL:$3|egy|$3}} oldal',
-'file-info' => 'fájlméret: $1, MIME-típus: $2',
-'file-info-size' => '$1 × $2 képpont, fájlméret: $3, MIME-típus: $4',
-'file-nohires' => '<small>Nem érhető el nagyobb felbontású változat.</small>',
-'svg-long-desc' => 'SVG fájl, névlegesen $1 × $2 képpont, fájlméret: $3',
-'show-big-image' => 'A kép nagyfelbontású változata',
-'show-big-image-thumb' => '<small>Az előnézet mérete: $1 × $2 képpont</small>',
-'file-info-gif-looped' => 'ismétlődik',
-'file-info-gif-frames' => '{{PLURAL:$1|egy|$1}} képkocka',
-'file-info-png-looped' => 'ismétlődik',
-'file-info-png-repeat' => 'lejátszva {{PLURAL:$1|egy|$1}} alkalommal',
-'file-info-png-frames' => '{{PLURAL:$1|egy|$1}} képkocka',
+'imagemaxsize' => "A képek mérete, legfeljebb:<br />''(a leírólapokon)''",
+'thumbsize' => 'Bélyegkép mérete:',
+'widthheightpage' => '$1×$2, {{PLURAL:$3|egy|$3}} oldal',
+'file-info' => 'fájlméret: $1, MIME-típus: $2',
+'file-info-size' => '$1 × $2 képpont, fájlméret: $3, MIME-típus: $4',
+'file-info-size-pages' => '$1 × $2 képpont, fájlméret: $3, MIME típus: $4, $5 oldal',
+'file-nohires' => '<small>Nem érhető el nagyobb felbontású változat.</small>',
+'svg-long-desc' => 'SVG fájl, névlegesen $1 × $2 képpont, fájlméret: $3',
+'show-big-image' => 'A kép nagyfelbontású változata',
+'show-big-image-preview' => '<small>Az előnézet mérete: $1</small>',
+'show-big-image-other' => '<small>Más felbontás: $1.</small>',
+'show-big-image-size' => '$1 × $2 képpont',
+'file-info-gif-looped' => 'ismétlődik',
+'file-info-gif-frames' => '{{PLURAL:$1|egy|$1}} képkocka',
+'file-info-png-looped' => 'ismétlődik',
+'file-info-png-repeat' => 'lejátszva {{PLURAL:$1|egy|$1}} alkalommal',
+'file-info-png-frames' => '{{PLURAL:$1|egy|$1}} képkocka',
# Special:NewFiles
'newimages' => 'Új fájlok galériája',
@@ -2965,16 +3036,21 @@ Ugyanazon sor további hivatkozásai kivételnek tekintettek, pl. a szócikkek,
'metadata-help' => 'Ez a kép járulékos adatokat tartalmaz, amelyek feltehetően a kép létrehozásához használt digitális fényképezőgép vagy lapolvasó beállításairól adnak tájékoztatást. Ha a képet az eredetihez képest módosították, ezen adatok eltérhetnek a kép tényleges jellemzőitől.',
'metadata-expand' => 'További képadatok',
'metadata-collapse' => 'További képadatok elrejtése',
-'metadata-fields' => 'Az ebben az üznetben kilistázott EXIF metaadat mezőket
-a képlap megjelenítés a metaadat táblázat összecsukásakor
-tartalmazni fogja. A többi alapértelmezésként rejtett marad.
+'metadata-fields' => 'Az alábbi mezőben kilistázott képmetaadat mezők láthatóak maradnak a kép leírólapján,
+míg a többi elem a táblázat összecsukása után alapértelmezett esetben rejtve marad.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Szélesség',
@@ -2989,13 +3065,11 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
'exif-ycbcrpositioning' => 'Y és C pozicionálása',
'exif-xresolution' => 'Vízszintes felbontás',
'exif-yresolution' => 'Függőleges felbontás',
-'exif-resolutionunit' => 'Az X és Y felbontás mértékegysége',
'exif-stripoffsets' => 'Képadatok elhelyezése',
'exif-rowsperstrip' => 'Egy csíkban levő sorok száma',
'exif-stripbytecounts' => 'Bájt/csík',
'exif-jpeginterchangeformat' => 'Eltolás JPEG SOI-be',
'exif-jpeginterchangeformatlength' => 'JPEG adatok bájtjai',
-'exif-transferfunction' => 'Ãtviteli funkció',
'exif-whitepoint' => 'Fehér pont színérték',
'exif-primarychromaticities' => 'Színinger',
'exif-ycbcrcoefficients' => 'Színtér transzformációs mátrixának együtthatói',
@@ -3014,7 +3088,6 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
'exif-compressedbitsperpixel' => 'Képtömörítési mód',
'exif-pixelydimension' => 'Képszélesség',
'exif-pixelxdimension' => 'Képmagasság',
-'exif-makernote' => 'Gyártó jegyzetei',
'exif-usercomment' => 'Felhasználók megjegyzései',
'exif-relatedsoundfile' => 'Kapcsolódó hangfájl',
'exif-datetimeoriginal' => 'EXIF információ létrehozásának dátuma',
@@ -3028,7 +3101,6 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
'exif-exposureprogram' => 'Expozíciós program',
'exif-spectralsensitivity' => 'Színkép érzékenysége',
'exif-isospeedratings' => 'ISO érzékenység minősítése',
-'exif-oecf' => 'Optoelectronikai konverziós tényező',
'exif-shutterspeedvalue' => 'APEX zársebesség',
'exif-aperturevalue' => 'APEX lencsenyílás',
'exif-brightnessvalue' => 'APEX fényerő',
@@ -3041,7 +3113,6 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
'exif-focallength' => 'Fókusztávolság',
'exif-subjectarea' => 'Tárgy területe',
'exif-flashenergy' => 'Vaku ereje',
-'exif-spatialfrequencyresponse' => 'Térbeli frekvenciareakció',
'exif-focalplanexresolution' => 'Mátrixdetektor X felbontása',
'exif-focalplaneyresolution' => 'Mátrixdetektor Y felbontása',
'exif-focalplaneresolutionunit' => 'Mátrixdetektor felbontásának mértékegysége',
@@ -3050,7 +3121,6 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
'exif-sensingmethod' => 'Érzékelési mód',
'exif-filesource' => 'Fájl forrása',
'exif-scenetype' => 'Színhely típusa',
-'exif-cfapattern' => 'CFA minta',
'exif-customrendered' => 'Egyéni képfeldolgozás',
'exif-exposuremode' => 'Expozíciós mód',
'exif-whitebalance' => 'Fehéregyensúly',
@@ -3095,10 +3165,79 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
'exif-gpsareainformation' => 'GPS terület neve',
'exif-gpsdatestamp' => 'GPS dátum',
'exif-gpsdifferential' => 'GPS különbözeti korrekció',
+'exif-jpegfilecomment' => 'JPEG fájlmegjegyzés',
+'exif-keywords' => 'Kulcsszavak',
+'exif-worldregioncreated' => 'Világrész, ahol a kép készült',
+'exif-countrycreated' => 'Ország, ahol a kép készült',
+'exif-countrycodecreated' => 'Ország kódja, ahol a kép készült',
+'exif-provinceorstatecreated' => 'Tartomány vagy állam, ahol a kép készült',
+'exif-citycreated' => 'Város, ahol a kép készült',
+'exif-sublocationcreated' => 'Városbeli hely, ahol a kép készült',
+'exif-worldregiondest' => 'Ãbrázolt világrész',
+'exif-countrydest' => 'Ãbrázolt ország',
+'exif-countrycodedest' => 'Ãbrázolt ország kódja',
+'exif-provinceorstatedest' => 'Ãbrázolt tartomány vagy állam',
+'exif-citydest' => 'Ãbrázolt város',
+'exif-sublocationdest' => 'Ãbrázolt városbeli hely',
'exif-objectname' => 'Rövid cím',
+'exif-specialinstructions' => 'Különleges utasítások',
+'exif-headline' => 'Fejléc',
+'exif-credit' => 'Köszönet/Készítő',
+'exif-source' => 'Forrás',
+'exif-editstatus' => 'Kép szerkesztési állapota',
+'exif-urgency' => 'Sürgősség',
+'exif-fixtureidentifier' => 'A készülék neve',
+'exif-locationdest' => 'Ãbrázolt helyszín',
+'exif-locationdestcode' => 'Ãbrázolt helyszín kódja',
+'exif-objectcycle' => 'Napszak, amikorra a média készült',
+'exif-contact' => 'Elérhetőségi adatok',
+'exif-writer' => 'Ãró',
+'exif-languagecode' => 'Nyelv',
+'exif-iimversion' => 'IIM-verzió',
+'exif-iimcategory' => 'Kategória',
+'exif-iimsupplementalcategory' => 'Kiegészítő kategóriák',
+'exif-datetimeexpires' => 'Nem használandó ezután',
+'exif-datetimereleased' => 'Megjelenés ideje',
+'exif-originaltransmissionref' => 'Eredeti átviteli hely kódja',
+'exif-identifier' => 'Azonosító',
+'exif-lens' => 'Használt lencse',
+'exif-serialnumber' => 'Kamera sorozatszáma',
+'exif-cameraownername' => 'Kamera tulajdonosa',
+'exif-label' => 'Címke',
+'exif-datetimemetadata' => 'Dátum metaadat utolsó módosítása',
+'exif-nickname' => 'A kép informális neve',
+'exif-rating' => 'Értékelés (5-ből)',
+'exif-rightscertificate' => 'Jogokat kezelő tanúsítvány',
+'exif-copyrighted' => 'Szerzői jogi állapot',
+'exif-copyrightowner' => 'Szerzői jog tulajdonosa',
+'exif-usageterms' => 'Felhasználási feltételek',
+'exif-webstatement' => 'Online szerzői jogi nyilatkozat',
+'exif-originaldocumentid' => 'Eredeti dokumentum egyedi azonosítója',
+'exif-licenseurl' => 'Szerzői jog engedély URL-címe',
+'exif-morepermissionsurl' => 'Alternatív licencinformáció',
+'exif-attributionurl' => 'Újrafelhasználás során hivatkozz erre:',
+'exif-preferredattributionname' => 'Ha újra felhasználód, köszönd meg:',
+'exif-pngfilecomment' => 'PNG fájlmegjegyzés',
+'exif-disclaimer' => 'Jogi nyilatkozat',
+'exif-contentwarning' => 'Tartalom figyelmeztetés',
+'exif-giffilecomment' => 'GIF fájlmegjegyzés',
+'exif-intellectualgenre' => 'Elemtípus',
+'exif-subjectnewscode' => 'Tárgykód',
+'exif-scenecode' => 'IPTC jelenet kód',
+'exif-event' => 'Ãbrázolt esemény',
+'exif-organisationinimage' => 'Ãbrázolt szervezet',
+'exif-personinimage' => 'Ãbrázolt személy',
+'exif-originalimageheight' => 'Kép magassága a levágás előtt',
+'exif-originalimagewidth' => 'Kép szélessége a levágás előtt',
# EXIF attributes
'exif-compression-1' => 'Nem tömörített',
+'exif-compression-2' => 'CCITT Group 3 1 dimenziós módosított Huffman kódolás',
+'exif-compression-3' => 'CCITT Group 3 fax kódolás',
+'exif-compression-4' => 'CCITT Group 4 fax kódolás',
+
+'exif-copyrighted-true' => 'Szerzői jog által védett',
+'exif-copyrighted-false' => 'Közkincs',
'exif-unknowndate' => 'Ismeretlen dátum',
@@ -3107,13 +3246,15 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
'exif-orientation-3' => 'Elforgatott 180°',
'exif-orientation-4' => 'Függőlegesen tükrözött',
'exif-orientation-5' => 'Elforgatott 90° ÓE és függőlegesen tükrözött',
-'exif-orientation-6' => 'Elforgatott 90° ÓSZ',
+'exif-orientation-6' => 'Elforgatott 90° ÓE',
'exif-orientation-7' => 'Elforgatott 90° ÓSZ és függőlegesen tükrözött',
-'exif-orientation-8' => 'Elforgatott 90° ÓE',
+'exif-orientation-8' => 'Elforgatott 90° ÓSZ',
'exif-planarconfiguration-1' => 'Egyben',
'exif-planarconfiguration-2' => 'sík formátum',
+'exif-colorspace-65535' => 'Nem kalibrált',
+
'exif-componentsconfiguration-0' => 'nem létezik',
'exif-exposureprogram-0' => 'Nem meghatározott',
@@ -3140,7 +3281,7 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
'exif-lightsource-0' => 'Ismeretlen',
'exif-lightsource-1' => 'Természetes fény',
'exif-lightsource-2' => 'Fénycső',
-'exif-lightsource-3' => 'Tungsten (izzófény)',
+'exif-lightsource-3' => 'Wolfram (izzófény)',
'exif-lightsource-4' => 'Vaku',
'exif-lightsource-9' => 'Derült idő',
'exif-lightsource-10' => 'Felhős idő',
@@ -3227,6 +3368,10 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
'exif-gpslongitude-e' => 'Keleti hosszúsági fok',
'exif-gpslongitude-w' => 'Nyugati hosszúsági fok',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 méterrel a tengerszint felett',
+'exif-gpsaltitude-below-sealevel' => '$1 méterrel a tengerszint alatt',
+
'exif-gpsstatus-a' => 'Mérés folyamatban',
'exif-gpsstatus-v' => 'Mérés közbeni működőképesség',
@@ -3238,21 +3383,73 @@ tartalmazni fogja. A többi alapértelmezésként rejtett marad.
'exif-gpsspeed-m' => 'Márföld óránként',
'exif-gpsspeed-n' => 'Csomó',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'kilométer',
+'exif-gpsdestdistance-m' => 'mérföld',
+'exif-gpsdestdistance-n' => 'tengeri mérföld',
+
+'exif-gpsdop-excellent' => 'Kiváló ($1)',
+'exif-gpsdop-good' => 'Jó ($1)',
+'exif-gpsdop-moderate' => 'Mérsékelt ($1)',
+'exif-gpsdop-fair' => 'Elfogadható ($1)',
+'exif-gpsdop-poor' => 'Gyenge ($1)',
+
+'exif-objectcycle-a' => 'Csak reggel',
+'exif-objectcycle-p' => 'Csak este',
+'exif-objectcycle-b' => 'Reggel és este',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Igazi irány',
'exif-gpsdirection-m' => 'Mágneses irány',
+'exif-ycbcrpositioning-1' => 'Központosított',
+'exif-ycbcrpositioning-2' => 'Szomszédos',
+
+'exif-dc-contributor' => 'Közreműködők',
+'exif-dc-coverage' => 'A média térbeli vagy időbeli hatálya',
+'exif-dc-date' => 'Dátum(ok)',
+'exif-dc-publisher' => 'Kiadó',
+'exif-dc-relation' => 'Kapcsolódó média',
+'exif-dc-rights' => 'Jogok',
+'exif-dc-source' => 'Forrás-adathordozó',
+'exif-dc-type' => 'Adathordozó típusa',
+
+'exif-rating-rejected' => 'Elutasítva',
+
+'exif-isospeedratings-overflow' => 'Nagyobb, mint 65535',
+
+'exif-iimcategory-ace' => 'Művészetek, kultúra és szórakoztatás',
+'exif-iimcategory-clj' => 'Bűnözés és törvény',
+'exif-iimcategory-dis' => 'Katasztrófák és a balesetek',
+'exif-iimcategory-fin' => 'Gazdaság és üzlet',
+'exif-iimcategory-edu' => 'Oktatás',
+'exif-iimcategory-evn' => 'Környezet',
+'exif-iimcategory-hth' => 'Egészség',
+'exif-iimcategory-hum' => 'Emberi érdeklődés',
+'exif-iimcategory-lab' => 'Munka',
+'exif-iimcategory-lif' => 'Életmód és szabadidő',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Vallás és hit',
+'exif-iimcategory-sci' => 'Tudomány és technológia',
+'exif-iimcategory-soi' => 'Társadalmi kérdések',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Háború, konfliktus és nyugtalanság',
+'exif-iimcategory-wea' => 'Időjárás',
+
+'exif-urgency-normal' => 'Normális ($1)',
+'exif-urgency-low' => 'Alacsony ($1)',
+'exif-urgency-high' => 'Magas ($1)',
+'exif-urgency-other' => 'Egyedi prioritás ($1)',
+
# External editor support
'edit-externally' => 'A fájl szerkesztése külső alkalmazással',
-'edit-externally-help' => '(Lásd a [http://www.mediawiki.org/wiki/Manual:External_editors használati utasítást] (angolul) a beállításához.)',
+'edit-externally-help' => '(Lásd a [//www.mediawiki.org/wiki/Manual:External_editors használati utasítást] (angolul) a beállításához.)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'összes',
-'imagelistall' => 'összes',
-'watchlistall2' => 'bármikor',
-'namespacesall' => 'Összes',
-'monthsall' => 'mind',
-'limitall' => 'mind',
+'watchlistall2' => 'bármikor',
+'namespacesall' => 'Összes',
+'monthsall' => 'mind',
+'limitall' => 'mind',
# E-mail address confirmation
'confirmemail' => 'E-mail cím megerősítése',
@@ -3332,17 +3529,24 @@ $1',
'trackbackdeleteok' => 'A visszakövetés törlése sikerült.',
# Delete conflict
-'deletedwhileediting' => "'''Figyelmeztetés:''' A lapot a szerkesztés megkezdése után törölték!",
-'confirmrecreate' => "Miután elkezdted szerkeszteni, [[User:$1|$1]] ([[User talk:$1|vita]]) törölte ezt a lapot a következő indokkal:
+'deletedwhileediting' => "'''Figyelmeztetés:''' A lapot a szerkesztés megkezdése után törölték!",
+'confirmrecreate' => "Miután elkezdted szerkeszteni, [[User:$1|$1]] ([[User talk:$1|vita]]) törölte ezt a lapot a következő indokkal:
: ''$2''
Kérlek erősítsd meg, hogy tényleg újra akarod-e írni a lapot.",
-'recreate' => 'Újraírás',
+'confirmrecreate-noreason' => '[[User:$1|$1]] ([[User talk:$1|vita]]) törölte ezt a lapot, miután elkezdtél szerkeszteni. Erősítsd meg, hogy tényleg ismét létre szeretnéd hozni a lapot.',
+'recreate' => 'Újraírás',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Törlöd az oldal gyorsítótárban (cache) található változatát?',
'confirm-purge-bottom' => 'A lap ürítésével törlődik annak gyorsítótárazott változata, és a legújabb tartalom fog megjelenni.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Hozzá szeretnéd adni a lapot a figyelőlistádhoz?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'El szeretnéd távolítani a lapot a figyelőlistádról?',
+
# Separators for various lists, etc.
'ellipsis' => '…',
@@ -3387,14 +3591,14 @@ Kérlek erősítsd meg, hogy tényleg újra akarod-e írni a lapot.",
'watchlistedit-normal-legend' => 'Lapok eltávolítása a figyelőlistáról',
'watchlistedit-normal-explain' => 'A figyelőlistádra felvett lapok címei alább láthatóak.
Ha el szeretnél távolítani egy címet, pipáld ki a mellette található jelölőnégyzetet, majd kattints „{{int:Watchlistedit-normal-submit}}†gombra.
-Lehetőséged van a [[Special:Watchlist/raw|figyelőlista nyers változatának]] szerkesztésére is.',
+Lehetőséged van a [[Special:EditWatchlist/raw|figyelőlista nyers változatának]] szerkesztésére is.',
'watchlistedit-normal-submit' => 'A kijelöltek eltávolítása',
'watchlistedit-normal-done' => '{{PLURAL:$1|A következő|A következő $1}} cikket eltávolítottam a figyelőlistádról:',
'watchlistedit-raw-title' => 'A nyers figyelőlista szerkesztése',
'watchlistedit-raw-legend' => 'A nyers figyelőlista szerkesztése',
'watchlistedit-raw-explain' => 'A figyelőlistádra felvett lapok az alábbi listában találhatók. A lista szerkeszthető;
minden egyes sor egy figyelt lap címe. Ha kész vagy, kattints a lista alatt található
-„{{int:Watchlistedit-raw-submit}}†feliratú gombra. Használhatod a [[Special:Watchlist/edit|hagyományos listaszerkesztőt]] is.',
+„{{int:Watchlistedit-raw-submit}}†feliratú gombra. Használhatod a [[Special:EditWatchlist|hagyományos listaszerkesztőt]] is.',
'watchlistedit-raw-titles' => 'A figyelőlistádon található cikkek:',
'watchlistedit-raw-submit' => 'Mentés',
'watchlistedit-raw-done' => 'A figyelőlistád változtatásait elmentettem.',
@@ -3411,33 +3615,33 @@ minden egyes sor egy figyelt lap címe. Ha kész vagy, kattints a lista alatt ta
'duplicate-defaultsort' => 'Figyelem: a(z) „$2†rendezÅ‘kulcs felülírja a korábbit („$1â€).',
# Special:Version
-'version' => 'Névjegy',
-'version-extensions' => 'Telepített kiterjesztések',
-'version-specialpages' => 'Speciális lapok',
-'version-parserhooks' => 'Értelmező hookok',
-'version-variables' => 'Változók',
-'version-skins' => 'Felületek',
-'version-other' => 'Egyéb',
-'version-mediahandlers' => 'Médiafájl-kezelők',
-'version-hooks' => 'Hookok',
-'version-extension-functions' => 'A kiterjesztések függvényei',
-'version-parser-extensiontags' => 'Az értelmező kiterjesztéseinek tagjei',
-'version-parser-function-hooks' => 'Az értelmező függvényeinek hookjai',
-'version-skin-extension-functions' => 'Felület kiterjeszések függvényei',
-'version-hook-name' => 'Hook neve',
-'version-hook-subscribedby' => 'Használja',
-'version-version' => '(verzió: $1)',
-'version-license' => 'Licenc',
-'version-poweredby-credits' => "Ez a wiki '''[http://www.mediawiki.org/ MediaWiki]''' szoftverrel működik, copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'mások',
-'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.
+'version' => 'Névjegy',
+'version-extensions' => 'Telepített kiterjesztések',
+'version-specialpages' => 'Speciális lapok',
+'version-parserhooks' => 'Értelmező hookok',
+'version-variables' => 'Változók',
+'version-antispam' => 'Spammegelőzés',
+'version-skins' => 'Felületek',
+'version-other' => 'Egyéb',
+'version-mediahandlers' => 'Médiafájl-kezelők',
+'version-hooks' => 'Hookok',
+'version-extension-functions' => 'A kiterjesztések függvényei',
+'version-parser-extensiontags' => 'Az értelmező kiterjesztéseinek tagjei',
+'version-parser-function-hooks' => 'Az értelmező függvényeinek hookjai',
+'version-hook-name' => 'Hook neve',
+'version-hook-subscribedby' => 'Használja',
+'version-version' => '(verzió: $1)',
+'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-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.
-Önnek kapnia kellett [{{SERVER}}{{SCRIPTPATH}}/COPYING egy példányt a GNU General Public License-ből] ezzel a programmal együtt, ha nem, írjon a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA címre vagy [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html olvassa el online].',
-'version-software' => 'Telepített szoftverek',
-'version-software-product' => 'Termék',
-'version-software-version' => 'Verzió',
+Önnek kapnia kellett [{{SERVER}}{{SCRIPTPATH}}/COPYING egy példányt a GNU General Public License-ből] ezzel a programmal együtt, ha nem, írjon a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA címre vagy [//www.gnu.org/licenses/old-licenses/gpl-2.0.html olvassa el online].',
+'version-software' => 'Telepített szoftverek',
+'version-software-product' => 'Termék',
+'version-software-version' => 'Verzió',
# Special:FilePath
'filepath' => 'Fájlelérés',
@@ -3447,22 +3651,22 @@ A MediaWikit abban a reményben terjesztjük, hogy hasznos lesz, de GARANCIA NÉ
A képek teljes méretben jelennek meg, más fájltípusok közvetlenül a hozzájuk rendelt programmal indulnak el.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Duplikátumok keresése',
-'fileduplicatesearch-summary' => 'Fájlok duplikátumainak keresése hash értékük alapján.
-
-Add meg a fájl nevét „{{ns:file}}:†előtag nélkül.',
-'fileduplicatesearch-legend' => 'Duplikátum keresése',
-'fileduplicatesearch-filename' => 'Fájlnév:',
-'fileduplicatesearch-submit' => 'Keresés',
-'fileduplicatesearch-info' => '$1 × $2 pixel<br />Fájlméret: $3<br />MIME-típus: $4',
-'fileduplicatesearch-result-1' => 'A(z) „$1“ nevű fájlnak nincs duplikátuma.',
-'fileduplicatesearch-result-n' => 'A(z) „$1†nevű fájlnak {{PLURAL:$2|egy|$2}} duplikátuma van.',
+'fileduplicatesearch' => 'Duplikátumok keresése',
+'fileduplicatesearch-summary' => 'Fájlok duplikátumainak keresése hash értékük alapján.',
+'fileduplicatesearch-legend' => 'Duplikátum keresése',
+'fileduplicatesearch-filename' => 'Fájlnév:',
+'fileduplicatesearch-submit' => 'Keresés',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />Fájlméret: $3<br />MIME-típus: $4',
+'fileduplicatesearch-result-1' => 'A(z) „$1“ nevű fájlnak nincs duplikátuma.',
+'fileduplicatesearch-result-n' => 'A(z) „$1†nevű fájlnak {{PLURAL:$2|egy|$2}} duplikátuma van.',
+'fileduplicatesearch-noresults' => 'Nincs „$1†nevű fájl.',
# Special:SpecialPages
'specialpages' => 'Speciális lapok',
'specialpages-note' => '----
* Mindenki számára elérhető speciális lapok.
-* <strong class="mw-specialpagerestricted">Korlátozott hozzáférésű speciális lapok.</strong>',
+* <span class="mw-specialpagerestricted">Korlátozott hozzáférésű speciális lapok.</span>
+* <span class="mw-specialpagecached">Csak gyorsítótárazott adatokat tartalmazó speciális lapok.</span>',
'specialpages-group-maintenance' => 'Ãllapotjelentések',
'specialpages-group-other' => 'További speciális lapok',
'specialpages-group-login' => 'Bejelentkezés / fiók létrehozása',
diff --git a/languages/messages/MessagesHy.php b/languages/messages/MessagesHy.php
index d1013cd7..714acc0a 100644
--- a/languages/messages/MessagesHy.php
+++ b/languages/messages/MessagesHy.php
@@ -196,75 +196,75 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Ô¿Ö€Õ¯Õ¶Õ¡Õ¯Õ«Õ¾Õ¥Ö€Õ¡Õ°Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨' ),
+ 'Allmessages' => array( 'Ô²Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ²Õ¥Ö€Õ±Õ¶Õ¥Ö€Õ¨' ),
+ 'Allpages' => array( 'Ô²Õ¸Õ¬Õ¸Ö€Õ§Õ»Õ¥Ö€Õ¨' ),
+ 'Ancientpages' => array( 'Ô±Õ´Õ¥Õ¶Õ¡Õ°Õ«Õ¶Õ§Õ»Õ¥Ö€Õ¨' ),
+ 'Block' => array( 'Ô±Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¥Õ¬ip' ),
+ 'Blockme' => array( 'Ô±Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¥Õ¬' ),
+ 'Booksources' => array( 'Ô³Ö€Ö„Õ¡ÕµÕ«Õ¶Õ¡Õ²Õ¢ÕµÕ¸Ö‚Ö€Õ¶Õ¥Ö€Õ¨' ),
'BrokenRedirects' => array( 'Ô¿Õ¸Õ¿Ö€Õ¾Õ¡Õ®Õ¾Õ¥Ö€Õ¡Õ°Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨' ),
+ 'Categories' => array( 'Ô¿Õ¡Õ¿Õ¥Õ£Õ¸Ö€Õ«Õ¡Õ¶Õ¥Ö€Õ¨' ),
+ 'ChangePassword' => array( 'Õ†Õ¸Ö€Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼' ),
+ 'Contributions' => array( 'Õ†Õ¥Ö€Õ¤Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨' ),
+ 'Deadendpages' => array( 'Õ€Õ²Õ¸Ö‚Õ´Õ¹ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Õ²Õ§Õ»Õ¥Ö€Õ¨' ),
'Disambiguations' => array( 'ÔµÖ€Õ¯Õ«Õ´Õ¡Õ½Õ¿Õ§Õ»Õ¥Ö€Õ¨' ),
- 'Userlogin' => array( 'Õ„Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ«Õ´Õ¸Ö‚Õ¿Ö„' ),
- 'Userlogout' => array( 'Õ„Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ«Õ¥Õ¬Ö„' ),
- 'Preferences' => array( 'Õ†Õ¡Õ­Õ¨Õ¶Õ¿Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨' ),
- 'Watchlist' => array( 'Õ€Õ½Õ¯Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ¶ÖÕ¡Õ¶Õ¯Õ¨' ),
- 'Recentchanges' => array( 'ÕŽÕ¥Ö€Õ»Õ«Õ¶ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨' ),
- 'Upload' => array( 'Ô²Õ¥Õ¼Õ¶Õ¥Õ¬' ),
+ 'DoubleRedirects' => array( 'Ô¿Ö€Õ¯Õ¶Õ¡Õ¯Õ«Õ¾Õ¥Ö€Õ¡Õ°Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨' ),
+ 'Emailuser' => array( 'Ô³Ö€Õ¥Õ¬Õ¶Õ¡Õ´Õ¡Õ¯' ),
+ 'Export' => array( 'Ô±Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ¥Õ¬Õ§Õ»Õ¥Ö€Õ¨' ),
+ 'FileDuplicateSearch' => array( 'Ô¿Ö€Õ¯Õ¶Ö…Ö€Õ«Õ¶Õ¡Õ¯Ö†Õ¡ÕµÕ¬Õ¥Ö€Õ«Õ¸Ö€Õ¸Õ¶Õ¸Ö‚Õ´' ),
+ 'Import' => array( 'Õ†Õ¥Ö€Õ´Õ¸Ö‚Õ®Õ¥Õ¬' ),
+ 'BlockList' => array( 'Ô±Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¾Õ¡Õ®IPÕ¶Õ¥Ö€Õ¨' ),
+ 'Listadmins' => array( 'Ô±Õ¤Õ´Õ«Õ¶Õ¶Õ¥Ö€Õ«ÖÕ¡Õ¶Õ¯Õ¨' ),
'Listfiles' => array( 'ÕŠÕ¡Õ¿Õ¯Õ¥Ö€Õ¶Õ¥Ö€Õ«ÖÕ¡Õ¶Õ¯Õ¨' ),
- 'Newimages' => array( 'Õ†Õ¸Ö€ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¶Õ¥Ö€' ),
+ 'Listredirects' => array( 'Õ‘Õ¸Ö‚ÕµÖÕ¿Õ¡Õ¬Õ¾Õ¥Ö€Õ¡Õ°Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨' ),
'Listusers' => array( 'Õ„Õ¡Õ½Õ¶Õ¡Õ¯Õ«ÖÕ¶Õ¥Ö€Õ«ÖÕ¡Õ¶Õ¯Õ¨' ),
- 'Statistics' => array( 'ÕŽÕ«Õ³Õ¡Õ¯Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶' ),
- 'Randompage' => array( 'ÕŠÕ¡Õ¿Õ¡Õ°Õ¡Õ¯Õ¡Õ¶Õ§Õ»' ),
+ 'Lockdb' => array( 'Ô¿Õ¸Õ²ÕºÕ¥Õ¬Õ¿Õ°' ),
+ 'Log' => array( 'ÕÕ¥Õ²Õ¥Õ¯Õ¡Õ´Õ¡Õ¿ÕµÕ¡Õ¶' ),
'Lonelypages' => array( 'Õ„Õ«Õ¡ÕµÕ¶Õ¡Õ¯Õ§Õ»Õ¥Ö€Õ¨' ),
- 'Uncategorizedpages' => array( 'Õ‰Õ¤Õ¡Õ½Õ¡Õ¯Õ¡Ö€Õ£Õ¾Õ¡Õ®Õ§Õ»Õ¥Ö€Õ¨' ),
- 'Uncategorizedcategories' => array( 'Õ‰Õ¤Õ¡Õ½Õ¡Õ¯Õ¡Ö€Õ£Õ¾Õ¡Õ®Õ¯Õ¡Õ¿Õ¥Õ£Õ¸Ö€Õ«Õ¡Õ¶Õ¥Ö€Õ¨' ),
- 'Uncategorizedimages' => array( 'Õ‰Õ¤Õ¡Õ½Õ¡Õ¯Õ¡Ö€Õ£Õ¾Õ¡Õ®ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¶Õ¥Ö€Õ¨' ),
- 'Uncategorizedtemplates' => array( 'Õ‰Õ¤Õ¡Õ½Õ¡Õ¯Õ¡Ö€Õ£Õ¾Õ¡Õ®Õ¯Õ¡Õ²Õ¡ÕºÕ¡Ö€Õ¶Õ¥Ö€Õ¨' ),
- 'Unusedcategories' => array( 'Õ‰Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ®Õ¯Õ¡Õ¿Õ¥Õ£Õ¸Ö€Õ«Õ¡Õ¶Õ¥Ö€Õ¨' ),
- 'Unusedimages' => array( 'Õ‰Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ®ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¶Õ¥Ö€Õ¨' ),
- 'Wantedpages' => array( 'Ô±Õ¶Õ°Ö€Õ¡ÕªÕ¥Õ·Õ¿Õ§Õ»Õ¥Ö€Õ¨' ),
- 'Wantedcategories' => array( 'Ô±Õ¶Õ°Ö€Õ¡ÕªÕ¥Õ·Õ¿Õ¯Õ¡Õ¿Õ¥Õ£Õ¸Ö€Õ«Õ¡Õ¶Õ¥Ö€Õ¨' ),
+ 'Longpages' => array( 'ÔµÖ€Õ¯Õ¡Ö€Õ§Õ»Õ¥Ö€Õ¨' ),
+ 'MIMEsearch' => array( 'MIMEÕˆÖ€Õ¸Õ¶Õ¸Ö‚Õ´' ),
+ 'Mostcategories' => array( 'Ô±Õ´Õ¥Õ¶Õ¡Õ·Õ¡Õ¿Õ¯Õ¡Õ¿Õ¥Õ£Õ¸Ö€Õ«Õ¡Õ¶Õ¥Ö€Õ¸Õ¾' ),
+ 'Mostimages' => array( 'Ô±Õ´Õ¥Õ¶Õ¡Õ·Õ¡Õ¿Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¸Õ²Õ¶Õ¯Õ¡Ö€Õ¶Õ¥Ö€Õ¨' ),
'Mostlinked' => array( 'Ô±Õ´Õ¥Õ¶Õ¡Õ·Õ¡Õ¿Õ°Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¸Õ¾' ),
'Mostlinkedcategories' => array( 'Õ‡Õ¡Õ¿Õ°Õ²Õ¾Õ¸Õ²Õ¯Õ¡Õ¿Õ¥Õ£Õ¸Ö€Õ«Õ¡Õ¶Õ¥Ö€Õ¨' ),
- 'Mostimages' => array( 'Ô±Õ´Õ¥Õ¶Õ¡Õ·Õ¡Õ¿Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¸Õ²Õ¶Õ¯Õ¡Ö€Õ¶Õ¥Ö€Õ¨' ),
- 'Mostcategories' => array( 'Ô±Õ´Õ¥Õ¶Õ¡Õ·Õ¡Õ¿Õ¯Õ¡Õ¿Õ¥Õ£Õ¸Ö€Õ«Õ¡Õ¶Õ¥Ö€Õ¸Õ¾' ),
'Mostrevisions' => array( 'Ô±Õ´Õ¥Õ¶Õ¡Õ·Õ¡Õ¿ÖƒÕ¸ÖƒÕ¸Õ­Õ¾Õ¸Õ²' ),
- 'Shortpages' => array( 'Ô¿Õ¡Ö€Õ³Õ§Õ»Õ¥Ö€Õ¨' ),
- 'Longpages' => array( 'ÔµÖ€Õ¯Õ¡Ö€Õ§Õ»Õ¥Ö€Õ¨' ),
+ 'Movepage' => array( 'ÕÕ¥Õ²Õ¡ÖƒÕ¸Õ­Õ¥Õ¬Õ§Õ»Õ¨' ),
+ 'Mycontributions' => array( 'Ô»Õ´Õ¶Õ¥Ö€Õ¤Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨' ),
+ 'Mypage' => array( 'Ô»Õ´Õ§Õ»Õ¨' ),
+ 'Mytalk' => array( 'Ô»Õ´Ö„Õ¶Õ¶Õ¡Ö€Õ¯Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨' ),
+ 'Newimages' => array( 'Õ†Õ¸Ö€ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¶Õ¥Ö€' ),
'Newpages' => array( 'Õ†Õ¸Ö€Õ§Õ»Õ¥Ö€Õ¨' ),
- 'Ancientpages' => array( 'Ô±Õ´Õ¥Õ¶Õ¡Õ°Õ«Õ¶Õ§Õ»Õ¥Ö€Õ¨' ),
- 'Deadendpages' => array( 'Õ€Õ²Õ¸Ö‚Õ´Õ¹ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Õ²Õ§Õ»Õ¥Ö€Õ¨' ),
- 'Allpages' => array( 'Ô²Õ¸Õ¬Õ¸Ö€Õ§Õ»Õ¥Ö€Õ¨' ),
+ 'Popularpages' => array( 'Õ€Õ¡Õ¶Ö€Õ¡Õ³Õ¡Õ¶Õ¡Õ¹Õ§Õ»Õ¥Ö€Õ¨' ),
+ 'Preferences' => array( 'Õ†Õ¡Õ­Õ¨Õ¶Õ¿Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨' ),
'Prefixindex' => array( 'ÕˆÖ€Õ¸Õ¶Õ¸Ö‚Õ´Õ¶Õ¡Õ­Õ¡Õ®Õ¡Õ¶ÖÕ¸Õ¾' ),
- 'Ipblocklist' => array( 'Ô±Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¾Õ¡Õ®IPÕ¶Õ¥Ö€Õ¨' ),
- 'Specialpages' => array( 'ÕÕºÕ¡Õ½Õ¡Ö€Õ¯Õ¸Õ²Õ§Õ»Õ¥Ö€Õ¨' ),
- 'Contributions' => array( 'Õ†Õ¥Ö€Õ¤Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨' ),
- 'Emailuser' => array( 'Ô³Ö€Õ¥Õ¬Õ¶Õ¡Õ´Õ¡Õ¯' ),
- 'Whatlinkshere' => array( 'Ô±ÕµÕ½Õ¿Õ¥Õ²Õ°Õ²Õ¾Õ¸Õ²Õ§Õ»Õ¥Ö€Õ¨' ),
+ 'Randompage' => array( 'ÕŠÕ¡Õ¿Õ¡Õ°Õ¡Õ¯Õ¡Õ¶Õ§Õ»' ),
+ 'Randomredirect' => array( 'ÕŠÕ¡Õ¿Õ¡Õ°Õ¡Õ¯Õ¡Õ¶Õ¾Õ¥Ö€Õ¡Õ°Õ²Õ¸Ö‚Õ´' ),
+ 'Recentchanges' => array( 'ÕŽÕ¥Ö€Õ»Õ«Õ¶ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨' ),
'Recentchangeslinked' => array( 'Ô¿Õ¡ÕºÕ¾Õ¡Õ®Õ§Õ»Õ¥Ö€Õ«ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨' ),
- 'Movepage' => array( 'ÕÕ¥Õ²Õ¡ÖƒÕ¸Õ­Õ¥Õ¬Õ§Õ»Õ¨' ),
- 'Blockme' => array( 'Ô±Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¥Õ¬' ),
- 'Booksources' => array( 'Ô³Ö€Ö„Õ¡ÕµÕ«Õ¶Õ¡Õ²Õ¢ÕµÕ¸Ö‚Ö€Õ¶Õ¥Ö€Õ¨' ),
- 'Categories' => array( 'Ô¿Õ¡Õ¿Õ¥Õ£Õ¸Ö€Õ«Õ¡Õ¶Õ¥Ö€Õ¨' ),
- 'Export' => array( 'Ô±Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ¥Õ¬Õ§Õ»Õ¥Ö€Õ¨' ),
- 'Version' => array( 'ÕÕ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯' ),
- 'Allmessages' => array( 'Ô²Õ¸Õ¬Õ¸Ö€Õ¸Ö‚Õ²Õ¥Ö€Õ±Õ¶Õ¥Ö€Õ¨' ),
- 'Log' => array( 'ÕÕ¥Õ²Õ¥Õ¯Õ¡Õ´Õ¡Õ¿ÕµÕ¡Õ¶' ),
- 'Blockip' => array( 'Ô±Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¥Õ¬ip' ),
+ 'Revisiondelete' => array( 'ÕÕ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯Õ«Õ°Õ¥Õ¼Õ¡ÖÕ¸Ö‚Õ´' ),
+ 'Search' => array( 'ÕˆÖ€Õ¸Õ¶Õ¥Õ¬' ),
+ 'Shortpages' => array( 'Ô¿Õ¡Ö€Õ³Õ§Õ»Õ¥Ö€Õ¨' ),
+ 'Specialpages' => array( 'ÕÕºÕ¡Õ½Õ¡Ö€Õ¯Õ¸Õ²Õ§Õ»Õ¥Ö€Õ¨' ),
+ 'Statistics' => array( 'ÕŽÕ«Õ³Õ¡Õ¯Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶' ),
+ 'Uncategorizedcategories' => array( 'Õ‰Õ¤Õ¡Õ½Õ¡Õ¯Õ¡Ö€Õ£Õ¾Õ¡Õ®Õ¯Õ¡Õ¿Õ¥Õ£Õ¸Ö€Õ«Õ¡Õ¶Õ¥Ö€Õ¨' ),
+ 'Uncategorizedimages' => array( 'Õ‰Õ¤Õ¡Õ½Õ¡Õ¯Õ¡Ö€Õ£Õ¾Õ¡Õ®ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¶Õ¥Ö€Õ¨' ),
+ 'Uncategorizedpages' => array( 'Õ‰Õ¤Õ¡Õ½Õ¡Õ¯Õ¡Ö€Õ£Õ¾Õ¡Õ®Õ§Õ»Õ¥Ö€Õ¨' ),
+ 'Uncategorizedtemplates' => array( 'Õ‰Õ¤Õ¡Õ½Õ¡Õ¯Õ¡Ö€Õ£Õ¾Õ¡Õ®Õ¯Õ¡Õ²Õ¡ÕºÕ¡Ö€Õ¶Õ¥Ö€Õ¨' ),
'Undelete' => array( 'ÕŽÕ¥Ö€Õ¡Õ¯Õ¡Õ¶Õ£Õ¶Õ¥Õ¬' ),
- 'Import' => array( 'Õ†Õ¥Ö€Õ´Õ¸Ö‚Õ®Õ¥Õ¬' ),
- 'Lockdb' => array( 'Ô¿Õ¸Õ²ÕºÕ¥Õ¬Õ¿Õ°' ),
'Unlockdb' => array( 'Ô²Õ¡ÖÕ¡Õ¶Õ¥Õ¬Õ¿Õ°' ),
- 'Userrights' => array( 'Õ„Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ«Õ«Ö€Õ¡Õ¾Õ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€Õ¨' ),
- 'MIMEsearch' => array( 'MIMEÕˆÖ€Õ¸Õ¶Õ¸Ö‚Õ´' ),
- 'FileDuplicateSearch' => array( 'Ô¿Ö€Õ¯Õ¶Ö…Ö€Õ«Õ¶Õ¡Õ¯Ö†Õ¡ÕµÕ¬Õ¥Ö€Õ«Õ¸Ö€Õ¸Õ¶Õ¸Ö‚Õ´' ),
- 'Unwatchedpages' => array( 'Õ‰Õ°Õ½Õ¯Õ¾Õ¸Õ²Õ§Õ»Õ¥Ö€Õ¨' ),
- 'Listredirects' => array( 'Õ‘Õ¸Ö‚ÕµÖÕ¿Õ¡Õ¬Õ¾Õ¥Ö€Õ¡Õ°Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨' ),
- 'Revisiondelete' => array( 'ÕÕ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯Õ«Õ°Õ¥Õ¼Õ¡ÖÕ¸Ö‚Õ´' ),
+ 'Unusedcategories' => array( 'Õ‰Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ®Õ¯Õ¡Õ¿Õ¥Õ£Õ¸Ö€Õ«Õ¡Õ¶Õ¥Ö€Õ¨' ),
+ 'Unusedimages' => array( 'Õ‰Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¡Õ®ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¶Õ¥Ö€Õ¨' ),
'Unusedtemplates' => array( 'Õ‰Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¾Õ¸Õ²Õ¯Õ¡Õ²Õ¡ÕºÕ¡Ö€Õ¶Õ¥Ö€Õ¨' ),
- 'Randomredirect' => array( 'ÕŠÕ¡Õ¿Õ¡Õ°Õ¡Õ¯Õ¡Õ¶Õ¾Õ¥Ö€Õ¡Õ°Õ²Õ¸Ö‚Õ´' ),
- 'Mypage' => array( 'Ô»Õ´Õ§Õ»Õ¨' ),
- 'Mytalk' => array( 'Ô»Õ´Ö„Õ¶Õ¶Õ¡Ö€Õ¯Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨' ),
- 'Mycontributions' => array( 'Ô»Õ´Õ¶Õ¥Ö€Õ¤Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨' ),
- 'Listadmins' => array( 'Ô±Õ¤Õ´Õ«Õ¶Õ¶Õ¥Ö€Õ«ÖÕ¡Õ¶Õ¯Õ¨' ),
- 'Popularpages' => array( 'Õ€Õ¡Õ¶Ö€Õ¡Õ³Õ¡Õ¶Õ¡Õ¹Õ§Õ»Õ¥Ö€Õ¨' ),
- 'Search' => array( 'ÕˆÖ€Õ¸Õ¶Õ¥Õ¬' ),
- 'Resetpass' => array( 'Õ†Õ¸Ö€Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼' ),
+ 'Unwatchedpages' => array( 'Õ‰Õ°Õ½Õ¯Õ¾Õ¸Õ²Õ§Õ»Õ¥Ö€Õ¨' ),
+ 'Upload' => array( 'Ô²Õ¥Õ¼Õ¶Õ¥Õ¬' ),
+ 'Userlogin' => array( 'Õ„Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ«Õ´Õ¸Ö‚Õ¿Ö„' ),
+ 'Userlogout' => array( 'Õ„Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ«Õ¥Õ¬Ö„' ),
+ 'Userrights' => array( 'Õ„Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ«Õ«Ö€Õ¡Õ¾Õ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€Õ¨' ),
+ 'Version' => array( 'ÕÕ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯' ),
+ 'Wantedcategories' => array( 'Ô±Õ¶Õ°Ö€Õ¡ÕªÕ¥Õ·Õ¿Õ¯Õ¡Õ¿Õ¥Õ£Õ¸Ö€Õ«Õ¡Õ¶Õ¥Ö€Õ¨' ),
+ 'Wantedpages' => array( 'Ô±Õ¶Õ°Ö€Õ¡ÕªÕ¥Õ·Õ¿Õ§Õ»Õ¥Ö€Õ¨' ),
+ 'Watchlist' => array( 'Õ€Õ½Õ¯Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ¶ÖÕ¡Õ¶Õ¯Õ¨' ),
+ 'Whatlinkshere' => array( 'Ô±ÕµÕ½Õ¿Õ¥Õ²Õ°Õ²Õ¾Õ¸Õ²Õ§Õ»Õ¥Ö€Õ¨' ),
);
$linkTrail = '/^([a-zÕ¡Õ¢Õ£Õ¤Õ¥Õ¦Õ§Õ¨Õ©ÕªÕ«Õ¬Õ­Õ®Õ¯Õ°Õ±Õ²Õ³Õ´ÕµÕ¶Õ·Õ¸Õ¹ÕºÕ»Õ¼Õ½Õ¾Õ¿Ö€Öւփքօֆև«»]+)(.*)$/sDu';
@@ -285,7 +285,7 @@ $messages = array(
'tog-editsection' => 'Õ‘Õ¸Ö‚ÕµÖ Õ¿Õ¡Õ¬ [Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬] Õ°Õ²Õ¸Ö‚Õ´Õ¨ Õ¡Õ´Õ¥Õ¶ Õ¢Õ¡ÕªÕ¶Õ« Õ°Õ¡Õ´Õ¡Ö€',
'tog-editsectiononrightclick' => 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ¢Õ¡ÕªÕ«Õ¶Õ¶Õ¥Ö€Õ¨ Õ¾Õ¥Ö€Õ¶Õ¡Õ£Ö€Õ« Õ¡Õ» Õ´Õ¡Õ¿Õ¶Õ¡Õ°Õ¡Ö€Õ´Õ¡Õ´Õ¢ (JavaScript)',
'tog-showtoc' => 'Õ‘Õ¸Ö‚ÕµÖ Õ¿Õ¡Õ¬ Õ¢Õ¸Õ¾Õ¡Õ¶Õ¤Õ¡Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ (3 Õ¯Õ¡Õ´ Õ¡Õ¾Õ¥Õ¬ Õ¾Õ¥Ö€Õ¶Õ¡Õ£Ö€Õ¥Ö€ Õ¸Ö‚Õ¶Õ¥ÖÕ¸Õ² Õ§Õ»Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€)',
-'tog-rememberpassword' => 'Õ€Õ«Õ·Õ¥Õ¬ Õ«Õ´ Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Õ°Õ¡Õ·Õ«Õ¾Õ¨ Õ¡ÕµÕ½ Õ°Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£Õ¹Õ¸Ö‚Õ´ (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'tog-rememberpassword' => 'Õ€Õ«Õ·Õ¥Õ¬ Õ«Õ´ Õ´Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¾Õ¡Õ® Õ¿Õ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö€Õ¶ Õ¡ÕµÕ½ Õ°Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£Õ¹Õ¸Ö‚Õ´ ($1 {{PLURAL:$1|Ö…Ö€Õ«Ö}} Õ¸Õ¹ Õ¡Õ¾Õ¥Õ¬ ÕªÕ¡Õ´Õ¯Õ¥Õ¿Õ¸Õ¾)',
'tog-watchcreations' => 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ«Õ´ Õ½Õ¿Õ¥Õ²Õ®Õ¡Õ® Õ§Õ»Õ¥Ö€Õ¨ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ«Õ¶',
'tog-watchdefault' => 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ«Õ´ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¡Õ® Õ§Õ»Õ¥Ö€Õ¨ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ«Õ¶',
'tog-watchmoves' => 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ«Õ´ Õ¿Õ¥Õ²Õ¡ÖƒÕ¸Õ­Õ¡Õ® Õ§Õ»Õ¥Ö€Õ¨ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ«Õ¶',
@@ -399,15 +399,6 @@ $messages = array(
'index-category' => 'Ô»Õ¶Õ¤Õ¥Ö„Õ½Õ¡Õ¾Õ¸Ö€Õ¾Õ¡Õ® Õ§Õ»Õ¥Ö€',
'noindex-category' => 'Ô»Õ¶Õ¤Õ¥Ö„Õ½Õ¡Õ¾Õ¸Ö€Õ¾Õ¡Õ® Õ§Õ»Õ¥Ö€ Õ¹Õ¯Õ¡Õ¶',
-'mainpagetext' => "'''«MediaWiki» Õ®Ö€Õ¡Õ£Õ«Ö€Õ¨ Õ°Õ¡Õ»Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ¿Õ¥Õ²Õ¡Õ¤Ö€Õ¾Õ¥ÖÖ‰'''",
-'mainpagedocfooter' => "Ô±ÕµÖÕ¥Õ¬Õ¥Ö„ [http://meta.wikimedia.org/wiki/Help:Contents User's Guide]Õ Õ¾Õ«Ö„Õ« Õ®Ö€Õ¡Õ£Ö€Õ¡ÕµÕ«Õ¶ Õ¡ÕºÕ¡Õ°Õ¸Õ¾Õ´Õ¡Õ¶ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ´Õ¡Õ¶ Õ´Õ¡Õ½Õ«Õ¶ Õ¿Õ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€Ö‰
-
-== ÕˆÖ€Õ¸Õ· Ö…Õ£Õ¿Õ¡Õ¯Õ¡Ö€ Õ¼Õ¥Õ½Õ¸Ö‚Ö€Õ½Õ¶Õ¥Ö€ ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-
'about' => 'Ô·Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨',
'article' => 'Õ€Õ¸Õ¤Õ¾Õ¡Õ®',
'newwindow' => '(Õ¢Õ¡ÖÕ¾Õ¥Õ¬Õ¸Ö‚ Õ§ Õ¶Õ¸Ö€ ÕºÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶Õ« Õ´Õ¥Õ»)',
@@ -457,10 +448,10 @@ $messages = array(
'history' => 'Ô·Õ»Õ« ÕºÕ¡Õ¿Õ´Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶',
'history_short' => 'ÕŠÕ¡Õ¿Õ´Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶',
'updatedmarker' => 'Õ©Õ¡Ö€Õ´Õ¡ÖÕ¾Õ¥Õ¬ Õ§ Õ«Õ´ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ¡ÕµÖÕ«Ö Õ°Õ¥Õ¿Õ¸',
-'info_short' => 'ÕÕ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶',
'printableversion' => 'ÕÕºÕ¥Õ¬Õ¸Ö‚ Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯',
'permalink' => 'Õ„Õ·Õ¿Õ¡Õ¯Õ¡Õ¶ Õ°Õ²Õ¸Ö‚Õ´',
'print' => 'ÕÕºÕ¥Õ¬',
+'view' => 'Ô´Õ«Õ¿Õ¥Õ¬',
'edit' => 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬',
'create' => 'ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬',
'editthispage' => 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ¨',
@@ -468,11 +459,12 @@ $messages = array(
'delete' => 'Õ‹Õ¶Õ»Õ¥Õ¬',
'deletethispage' => 'Õ‹Õ¶Õ»Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ¨',
'undelete_short' => 'ÕŽÕ¥Ö€Õ¡Õ¯Õ¡Õ¶Õ£Õ¶Õ¥Õ¬ {{PLURAL:$1|Õ´Õ¥Õ¯ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´|$1 Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´}}',
+'viewdeleted_short' => 'Ô´Õ«Õ¿Õ¥Õ¬ {{PLURAL:$1|Õ»Õ¶Õ»Õ¾Õ¡Õ® Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´}}',
'protect' => 'ÕŠÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ¥Õ¬',
'protect_change' => 'ÖƒÕ¸Õ­Õ¥Õ¬',
'protectthispage' => 'ÕŠÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ¨',
-'unprotect' => 'Õ€Õ¡Õ¶Õ¥Õ¬ ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ¸Ö‚Õ´Õ«Ö',
-'unprotectthispage' => 'Õ€Õ¡Õ¶Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ¨ ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ¸Ö‚Õ´Õ«Ö',
+'unprotect' => 'Õ“Õ¸Õ­Õ¥Õ¬ ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ¸Ö‚Õ´Õ¨',
+'unprotectthispage' => 'Õ“Õ¸Õ­Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ« ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ¸Ö‚Õ´Õ¨',
'newpage' => 'Õ†Õ¸Ö€ Õ§Õ»',
'talkpage' => 'Õ”Õ¶Õ¶Õ¡Ö€Õ¯Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ¨',
'talkpagelinktext' => 'Õ”Õ¶Õ¶Õ¡Ö€Õ¯Õ¸Ö‚Õ´',
@@ -643,12 +635,11 @@ $1',
'viewsourcetext' => 'Ô´Õ¸Ö‚Ö„ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¤Õ«Õ¿Õ¥Õ¬ Ö‡ ÕºÕ¡Õ¿Õ³Õ¥Õ¶Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ« Õ¥Õ¬Õ¡Õ¿Õ¥Ö„Õ½Õ¿Õ¨.',
'protectedinterface' => 'Ô±ÕµÕ½ Õ§Õ»Õ¨ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ§ Õ®Ö€Õ¡Õ£Ö€Õ¡ÕµÕ«Õ¶ Õ¡ÕºÕ¡Õ°Õ¸Õ¾Õ´Õ¡Õ¶ Õ«Õ¶Õ¿Õ¥Ö€Ö†Õ¥ÕµÕ½Õ« Õ¸Ö‚Õ¦Õ¥Ö€Õ± Ö‡ Õ¯Õ¸Õ²ÕºÕ¾Õ¡Õ® Õ§ Õ¹Õ¡Ö€Õ¡Õ·Õ¡Õ°Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ« Õ¯Õ¡Õ¶Õ­Õ¡Ö€Õ£Õ¥Õ¬Õ´Õ¡Õ¶ Õ¶ÕºÕ¡Õ¿Õ¡Õ¯Õ¸Õ¾Ö‰.',
'editinginterface' => "'''Ô¶Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´.''' Ô´Õ¸Ö‚Ö„ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´ Õ¥Ö„ Õ®Ö€Õ¡Õ£Ö€Õ¡ÕµÕ«Õ¶ Õ¡ÕºÕ¡Õ°Õ¸Õ¾Õ´Õ¡Õ¶ Õ«Õ¶Õ¿Õ¥Ö€Ö†Õ¥ÕµÕ½Õ« Õ¿Õ¥Ö„Õ½Õ¿ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Õ² Õ§Õ»Ö‰ Ô±ÕµÕ½ Õ§Õ»Õ« ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¯Õ¡Õ¶Õ¤Ö€Õ¡Õ¤Õ¡Õ¼Õ¶Õ¡ Õ¡ÕµÕ¬ Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«ÖÕ¶Õ¥Ö€Õ«Õ¶ Õ¿Õ¥Õ½Õ¡Õ¶Õ¥Õ¬Õ« Õ«Õ¶Õ¿Õ¥Ö€Ö†Õ¥ÕµÕ½Õ« Õ¿Õ¥Õ½Ö„Õ« Õ¾Ö€Õ¡Ö‰
-Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€ Õ¶Õ¡Õ­Õ¨Õ¶Õ¿Ö€Õ¥Õ¬Õ« Õ§ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ [http://translatewiki.net/wiki/Main_Page?setlang=hy translatewiki.net]Õ MediaWiki Õ®Ö€Õ¡Õ£Ö€Õ« Õ¿Õ¥Õ²Õ¡ÕµÕ¶Õ¡ÖÕ´Õ¡Õ¶ Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®Õ¨Ö‰",
+Ô¹Õ¡Ö€Õ£Õ´Õ¡Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€ Õ¶Õ¡Õ­Õ¨Õ¶Õ¿Ö€Õ¥Õ¬Õ« Õ§ Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ [//translatewiki.net/wiki/Main_Page?setlang=hy translatewiki.net]Õ MediaWiki Õ®Ö€Õ¡Õ£Ö€Õ« Õ¿Õ¥Õ²Õ¡ÕµÕ¶Õ¡ÖÕ´Õ¡Õ¶ Õ¶Õ¡Õ­Õ¡Õ£Õ«Õ®Õ¨Ö‰",
'sqlhidden' => '(SQL Õ°Õ¡ÕµÖÕ¸Ö‚Õ´Õ¨ Õ©Õ¡Ö„ÖÕ¾Õ¡Õ® Õ§)',
'cascadeprotected' => 'Ô±ÕµÕ½ Õ§Õ»Õ¨ ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ¾Õ¡Õ® Õ§ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´Õ«Ö, Ö„Õ¡Õ¶Õ« Õ¸Ö€ Õ¨Õ¶Õ¤Õ£Ö€Õ¯Õ¾Õ¡Õ® Õ§ Õ°Õ¥Õ¿Ö‡ÕµÕ¡Õ¬ {{PLURAL:$1|Õ§Õ»Õ«|Õ§Õ»Õ¥Ö€Õ«}} Õ¿Õ¥Ö„Õ½Õ¿Õ¸Ö‚Õ´, {{PLURAL:$1|Õ¸Ö€Õ¨|Õ¸Ö€Õ¸Õ¶Ö„}} ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ¾Õ¥Õ¬ {{PLURAL:$1|Õ§|Õ¥Õ¶}} Õ¯Õ¡Õ½Õ¯Õ¡Õ¤Õ¡ÕµÕ«Õ¶ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢.
$2',
'namespaceprotected' => 'Դուք չունեք «$1» անվանատարածքի էջերի խմբագրման իրավունք։',
-'customcssjsprotected' => 'Ô´Õ¸Ö‚Ö„ Õ¹Õ¸Ö‚Õ¶Õ¥Ö„ Õ¡ÕµÕ½ Õ§Õ»Õ« Õ­Õ´Õ¢Õ¡Õ£Ö€Õ´Õ¡Õ¶ Õ«Ö€Õ¡Õ¾Õ¸Ö‚Õ¶Ö„, Ö„Õ¡Õ¶Õ« Õ¸Ö€ Õ¡ÕµÕ¶ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ§ Õ¡ÕµÕ¬ Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Õ¡Õ¶Õ±Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¶Õ¡Õ­Õ¨Õ¶Õ¿Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Ö‰',
'ns-specialprotected' => '«{{ns:special}}» անվանատարածքի էջերը չեն կարող խմբագրվել։',
'titleprotected' => "Ô±ÕµÕ½ Õ¡Õ¶Õ¾Õ¡Õ¶Õ´Õ¡Õ´Õ¢ Õ§Õ»Õ« Õ½Õ¿Õ¥Õ²Õ®Õ¸Ö‚Õ´Õ¨ Õ¡Ö€Õ£Õ¥Õ¬Õ¾Õ¥Õ¬ Õ§ [[User:$1|$1]] Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Õ¯Õ¸Õ²Õ´Õ«ÖÖ‰
ÕÖ€Õ¾Õ¡Õ® ÕºÕ¡Õ¿Õ³Õ¡Õ¼Õ¶ Õ§Õ ''$2''Ö‰",
@@ -697,7 +688,7 @@ $2',
'nosuchuser' => '$1 Õ¡Õ¶Õ¸Ö‚Õ¶Õ¸Õ¾ Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«Ö Õ£Õ¸ÕµÕ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¹Õ¸Ö‚Õ¶Õ«Ö‰
Õ„Õ¡Õ½Õ¶Õ¡Õ¯Õ«ÖÕ¶Õ¥Ö€Õ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¦Õ£Õ¡ÕµÕ¸Ö‚Õ¶ Õ¥Õ¶ Õ´Õ¥Õ®Õ¡Õ¿Õ¡Õ¼Õ¥Ö€Õ« Õ¶Õ¯Õ¡Õ¿Õ´Õ¡Õ´Õ¢Ö‰
ÕÕ¿Õ¸Ö‚Õ£Õ¥Ö„ Õ±Õ¥Ö€ Õ¸Ö‚Õ²Õ²Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¯Õ¡Õ´ [[Special:UserLogin/signup|Õ½Õ¿Õ¥Õ²Õ®Õ¥Ö„ Õ¶Õ¸Ö€ Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Õ°Õ¡Õ·Õ«Õ¾]]Ö‰',
-'nosuchusershort' => '<nowiki>$1</nowiki> Õ¡Õ¶Õ¸Ö‚Õ¶Õ¸Õ¾ Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«Ö Õ£Õ¸ÕµÕ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¹Õ¸Ö‚Õ¶Õ«Ö‰ ÕÕ¿Õ¸Ö‚Õ£Õ¥Ö„ Õ±Õ¥Ö€ Õ¸Ö‚Õ²Õ²Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Ö‰',
+'nosuchusershort' => '$1 Õ¡Õ¶Õ¸Ö‚Õ¶Õ¸Õ¾ Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«Ö Õ£Õ¸ÕµÕ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¹Õ¸Ö‚Õ¶Õ«Ö‰ ÕÕ¿Õ¸Ö‚Õ£Õ¥Ö„ Õ±Õ¥Ö€ Õ¸Ö‚Õ²Õ²Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Ö‰',
'nouserspecified' => 'Õ€Õ¡Ö€Õ¯Õ¡Õ¾Õ¸Ö€ Õ§ Õ¶Õ·Õ¥Õ¬ Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ¡ÕµÕ«Õ¶ Õ¡Õ¶Õ¸Ö‚Õ¶Ö‰',
'login-userblocked' => 'Ô±ÕµÕ½ Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«ÖÕ¨ Õ¡Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¾Õ¡Õ® Õ§: Õ„Õ¸Ö‚Õ¿Ö„Õ¨ Õ¡Ö€Õ£Õ¥Õ¬Õ¾Õ¡Õ® Õ§:',
'wrongpassword' => 'Õ„Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¾Õ¡Õ® Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨ Õ½Õ­Õ¡Õ¬ Õ§Ö€Ö‰ Ô½Õ¶Õ¤Ö€Õ¸Ö‚Õ´ Õ¥Õ¶Ö„ Õ¯Ö€Õ¯Õ«Õ¶ ÖƒÕ¸Ö€Õ±Õ¥Õ¬Ö‰',
@@ -737,7 +728,7 @@ $2',
Ô½Õ¶Õ¤Ö€Õ¸Ö‚Õ´ Õ¥Õ¶Ö„ Õ½ÕºÕ¡Õ½Õ¥Õ¬ Õ¸Ö€Õ¸Õ· ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯ Õ¯Ö€Õ¯Õ«Õ¶ ÖƒÕ¸Ö€Õ±Õ¥Õ¬Õ¸Ö‚Ö Õ¡Õ¼Õ¡Õ»Ö‰',
'loginlanguagelabel' => 'Ô¼Õ¥Õ¦Õ¸Ö‚. $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Õ“Õ¸Õ­Õ¥Õ¬ Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨',
'resetpass_announce' => 'Ô´Õ¸Ö‚Ö„ Õ¶Õ¥Ö€Õ¯Õ¡ÕµÕ¡ÖÕ¥Õ¬ Õ¥Ö„ Õ§Õ¬-ÖƒÕ¸Õ½Õ¿Õ¸Õ¾ Õ½Õ¿Õ¡ÖÕ¾Õ¡Õ® ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ¡Õ¾Õ¸Ö€ Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¸Õ¾Ö‰ Õ€Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£ Õ´Õ¸Ö‚Õ¿Ö„Õ« Õ°Õ¡Õ´Õ¡Ö€ Õ¡Õ¶Õ°Ö€Õ¡ÕªÕ¥Õ·Õ¿ Õ§ Õ¶Õ¸Ö€ Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼ Õ¨Õ¶Õ¿Ö€Õ¥Õ¬ Õ¡ÕµÕ½Õ¿Õ¥Õ².',
'resetpass_text' => '<!-- Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ¿Õ¥Ö„Õ½Õ¿Õ¨ Õ¡ÕµÕ½Õ¿Õ¥Õ² -->',
@@ -754,6 +745,9 @@ $2',
Õ€Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ§, Õ¸Ö€ Õ¤Õ¸Ö‚Ö„ Õ¡Ö€Õ¤Õ¥Õ¶ Õ¢Õ¡Ö€Õ¥Õ°Õ¡Õ»Õ¸Õ² ÖƒÕ¸Õ­Õ¥Õ¬ Õ¥Ö„ Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Ö€Õ¨ Õ¯Õ¡Õ´ Õ°Õ¡ÕµÖÕ¥Õ¬ Õ¥Ö„ Õ¶Õ¸Ö€ ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ¡Õ¾Õ¸Ö€ Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Ö‰',
'resetpass-temp-password' => 'ÔºÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ¡Õ¾Õ¸Ö€ Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼.',
+# Special:PasswordReset
+'passwordreset-username' => 'Õ„Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Õ¡Õ¶Õ¸Ö‚Õ¶.',
+
# Edit page toolbar
'bold_sample' => 'Ô¹Õ¡Õ¾Õ¡Õ¿Õ¡Õ¼ Õ¿Õ¥Ö„Õ½Õ¿',
'bold_tip' => 'Ô¹Õ¡Õ¾Õ¡Õ¿Õ¡Õ¼ Õ¿Õ¥Ö„Õ½Õ¿',
@@ -765,8 +759,6 @@ $2',
'extlink_tip' => 'Ô±Ö€Õ¿Õ¡Ö„Õ«Õ¶ Õ°Õ²Õ¸Ö‚Õ´ (Õ°Õ«Õ·Õ¥Ö„ http:// Õ¶Õ¡Õ­Õ¡Õ®Õ¡Õ¶ÖÕ¨)',
'headline_sample' => 'ÔµÕ¶Õ©Õ¡Õ£Õ¬Õ¸Ö‚Õ­',
'headline_tip' => 'ÔµÕ¶Õ©Õ¡Õ£Õ¬Õ¸Ö‚Õ­',
-'math_sample' => 'Ô³Ö€Õ¥Ö„ Õ¢Õ¡Õ¶Õ¡Õ±Ö‡Õ¨ Õ¡ÕµÕ½Õ¿Õ¥Õ²',
-'math_tip' => 'Õ„Õ¡Õ©Õ¥Õ´Õ¡Õ¿Õ«Õ¯Õ¡Õ¯Õ¡Õ¶ Õ¢Õ¡Õ¶Õ¡Õ±Ö‡ (LaTeX)',
'nowiki_sample' => 'Õ„Õ¸Ö‚Õ¿Ö„Õ¡Õ£Ö€Õ¥Ö„ Õ¹Õ±Ö‡Õ¡Õ¾Õ¸Ö€Õ¾Õ¡Õ® Õ¿Õ¥Ö„Õ½Õ¿Õ¨ Õ¡ÕµÕ½Õ¿Õ¥Õ²',
'nowiki_tip' => 'Ô±Õ¶Õ¿Õ¥Õ½Õ¥Õ¬ Õ¾Õ«Ö„Õ« Õ±Ö‡Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¨',
'image_tip' => 'Õ†Õ¥Ö€Õ¤Ö€Õ¾Õ¡Õ® Õ¶Õ«Õ·Ö„',
@@ -846,7 +838,7 @@ $2',
Ô´Õ¸Ö‚Ö„ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ [[Special:Search/{{PAGENAME}}|Õ¸Ö€Õ¸Õ¶Õ¥Õ¬ Õ¡ÕµÕ½ Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ¨]] Õ¡ÕµÕ¬ Õ§Õ»Õ¥Ö€Õ¸Ö‚Õ´, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Õ¸Ö€Õ¸Õ¶Õ¥Õ¬ Õ°Õ¡Õ´Õ¡ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶ Õ¿Õ¥Õ²Õ¥Õ¯Õ¡Õ´Õ¡Õ¿ÕµÕ¡Õ¶Õ¶Õ¥Ö€Õ¨] Õ¯Õ¡Õ´ [{{fullurl:{{FULLPAGENAME}}|action=edit}} Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¶Õ¸Ö€ Õ§Õ» Õ¡ÕµÕ½ Õ¡Õ¶Õ¾Õ¡Õ¶Õ´Õ¡Õ´Õ¢]</span>Ö‰',
'noarticletext-nopermission' => 'Õ†Õ¥Ö€Õ¯Õ¡ÕµÕ¸Ö‚Õ´Õ½ Õ¡ÕµÕ½ Õ§Õ»Õ¸Ö‚Õ´ Õ¸Ö€Ö‡Õ§ Õ¿Õ¥Ö„Õ½Õ¿ Õ¹Õ¯Õ¡Ö‰
Ô´Õ¸Ö‚Ö„ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ [[Special:Search/{{PAGENAME}}|Õ¸Ö€Õ¸Õ¶Õ¥Õ¬ Õ¡ÕµÕ½ Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ¶Õ¨]] Õ¡ÕµÕ¬ Õ§Õ»Õ¥Ö€Õ¸Ö‚Õ´ Õ¯Õ¡Õ´ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Õ¸Ö€Õ¸Õ¶Õ¥Õ¬ Õ¡ÕµÕ¶ Õ¿Õ¥Õ²Õ¥Õ¯Õ¡Õ´Õ¡Õ¿ÕµÕ¡Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´]</span>Ö‰',
-'userpage-userdoesnotexist' => '«$1» Õ¡Õ¶Õ¾Õ¡Õ¶Õ´Õ¡Õ´Õ¢ Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«Ö Õ£Õ¸ÕµÕ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¹Õ¸Ö‚Õ¶Õ«Ö‰
+'userpage-userdoesnotexist' => '«<nowiki>$1</nowiki>» Õ¡Õ¶Õ¾Õ¡Õ¶Õ´Õ¡Õ´Õ¢ Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«Ö Õ£Õ¸ÕµÕ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ¹Õ¸Ö‚Õ¶Õ«Ö‰
Ô½Õ¶Õ¤Ö€Õ¸Ö‚Õ´ Õ¥Õ¶Ö„ Õ°Õ¡Õ¾Õ¡Õ½Õ¿Õ«Õ¡Õ¶Õ¡Õ¬ Õ¶Ö€Õ¡Õ¶Õ¸Ö‚Õ´, Õ©Õ¥ Õ¡Ö€Õ¤ÕµÕ¸Ö„ Õ¸Ö‚Õ¦Õ¸Ö‚Õ´ Õ¥Ö„ Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬/Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ¨Ö‰',
'userpage-userdoesnotexist-view' => '«$1» Õ¡Õ¶Õ¾Õ¡Õ¶Õ´Õ¡Õ´Õ¢ Õ£Ö€Õ¡Õ¶ÖÕ¾Õ¡Õ® Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«Ö Õ¹Õ¯Õ¡Ö‰',
'clearyourcache' => "'''Ô¾Õ¡Õ¶Õ¸Ö‚ÖÕ¸Ö‚Õ´. Õ€Õ«Õ·Õ¥Õ¬Õ¸Ö‚Ö Õ°Õ¥Õ¿Õ¸ Õ¯Õ¡Õ¿Õ¡Ö€Õ¾Õ¡Õ® ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¿Õ¥Õ½Õ¶Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ Õ´Õ¡Ö„Ö€Õ¥Ö„ Õ±Õ¥Ö€ Õ¦Õ¶Õ¶Õ¡Ö€Õ¯Õ«Õ¹Õ« Õ°Õ«Õ·Õ¡ÕºÕ¡Õ°Õ¥Õ½Õ¿Õ¨. '''
@@ -1097,7 +1089,6 @@ $3 Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«ÖÕ¨ Õ¿Õ¾Õ¥Õ¬ Õ§ Õ°Õ¥Õ¿Ö‡ÕµÕ¡Õ¬ ÕºÕ¡Õ¿Õ³Õ¡Õ¼Õ¨. ''$2''",
'changepassword' => 'Õ“Õ¸Õ­Õ¥Õ¬ Õ£Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼Õ¨',
'prefs-skin' => 'ÕÕ¥Õ½Ö„',
'skin-preview' => 'Õ¶Õ¡Õ­Õ¡Õ¤Õ«Õ¿Õ¥Õ¬',
-'prefs-math' => 'Õ„Õ¡Õ©Õ¥Õ´Õ¡Õ¿Õ«Õ¯Õ¡Õ¯Õ¡Õ¶ Õ¢Õ¡Õ¶Õ¡Õ±Ö‡Õ¥Ö€',
'datedefault' => 'Ô±Õ¼Õ¡Õ¶Ö Õ¶Õ¡Õ­Õ¨Õ¶Õ¿Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶',
'prefs-datetime' => 'Õ•Ö€ Õ¸Ö‚ ÕªÕ¡Õ´',
'prefs-personal' => 'Ô±Õ¶Õ±Õ¶Õ¡Õ¯Õ¡Õ¶',
@@ -1121,8 +1112,6 @@ $3 Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«ÖÕ¨ Õ¿Õ¾Õ¥Õ¬ Õ§ Õ°Õ¥Õ¿Ö‡ÕµÕ¡Õ¬ ÕºÕ¡Õ¿Õ³Õ¡Õ¼Õ¨. ''$2''",
'columns' => 'ÕÕµÕ¸Ö‚Õ¶Õ¡Õ¯Õ¶Õ¥Ö€',
'searchresultshead' => 'ÕˆÖ€Õ¸Õ¶Õ¸Ö‚Õ´',
'resultsperpage' => 'Ô±Ö€Õ¤ÕµÕ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€Õ« Ö„Õ¡Õ¶Õ¡Õ¯Õ¨ Õ´Õ¥Õ¯ Õ§Õ»Õ¸Ö‚Õ´.',
-'contextlines' => 'ÕÕ¸Õ²Õ¥Ö€Õ« Ö„Õ¡Õ¶Õ¡Õ¯Õ¨ ÕµÕ¸Ö‚Ö€Õ¡Ö„Õ¡Õ¶Õ¹ÕµÕ¸Ö‚Ö€ Õ¡Ö€Õ¤ÕµÕ¸Ö‚Õ¶Ö„Õ¸Ö‚Õ´.',
-'contextchars' => 'ÕÕ«Õ´Õ¾Õ¸Õ¬Õ¶Õ¥Ö€Õ« Ö„Õ¡Õ¶Õ¡Õ¯Õ¨ ÕµÕ¸Ö‚Ö€Õ¡Ö„Õ¡Õ¶Õ¹ÕµÕ¸Ö‚Ö€ Õ¿Õ¸Õ²Õ¸Ö‚Õ´.',
'stub-threshold' => '<a href="#" class="stub">ÕŠÕ¡Õ¿Õ¡Õ¼ Õ°Õ¸Õ¤Õ¾Õ¡Õ®Õ¶Õ¥Ö€Õ« Õ°Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ«</a> Õ±Ö‡Õ¡Õ¾Õ¸Ö€Õ´Õ¡Õ¶ Õ¸Ö€Õ¸Õ·Õ´Õ¡Õ¶ Õ½Õ¡Õ°Õ´Õ¡Õ¶Õ¨.',
'recentchangesdays' => 'ÕŽÕ¥Ö€Õ»Õ«Õ¶ ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´ ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¾Õ¸Õ² Ö…Ö€Õ¥Ö€Õ« Õ©Õ«Õ¾Õ¨Õ',
'recentchangesdays-max' => '($1 {{PLURAL:$1|Ö…Ö€Õ«Ö|Ö…Ö€Õ«Ö}} Õ¸Õ¹ Õ¡Õ¾Õ¥Õ¬)',
@@ -1352,10 +1341,6 @@ $3 Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«ÖÕ¨ Õ¿Õ¾Õ¥Õ¬ Õ§ Õ°Õ¥Õ¿Ö‡ÕµÕ¡Õ¬ ÕºÕ¡Õ¿Õ³Õ¡Õ¼Õ¨. ''$2''",
'destfilename' => 'Õ†Õ«Õ·Ö„Õ« Õ¶Õ¸Ö€ Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ',
'watchthisupload' => 'Õ€Õ½Õ¯Õ¥Õ¬ Õ¡ÕµÕ½ Õ¶Õ«Õ·Ö„Õ¨',
'filewasdeleted' => 'Ô±ÕµÕ½ Õ¡Õ¶Õ¾Õ¡Õ¶Õ´Õ¡Õ´Õ¢ Õ¶Õ«Õ·Ö„ Õ¶Õ¡Õ­Õ¯Õ«Õ¶Õ¸Ö‚Õ´ Õ¢Õ¥Õ¼Õ¶Õ¾Õ¥Õ¬ Õ§ Ö‡ Õ°Õ¥Õ¿Õ¡Õ£Õ¡ÕµÕ¸Ö‚Õ´ Õ»Õ¶Õ»Õ¾Õ¥Õ¬Ö‰ Ô±ÕµÕ¶ Õ¯Ö€Õ¯Õ«Õ¶ Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬Õ¸Ö‚Ö Õ¡Õ¼Õ¡Õ» Õ­Õ¶Õ¤Ö€Õ¸Ö‚Õ´ Õ¥Õ¶Ö„ Õ½Õ¿Õ¸Ö‚Õ£Õ¥Õ¬ $1Ö‰',
-'upload-wasdeleted' => "'''Ô¶Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´. Ô´Õ¸Ö‚Ö„ ÖƒÕ¸Ö€Õ±Õ¸Ö‚Õ´ Õ¥Ö„ Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Õ¶Õ¡Õ­Õ¯Õ«Õ¶Õ¸Ö‚Õ´ Õ»Õ¶Õ»Õ¾Õ¡Õ® Õ¶Õ«Õ·Ö„Ö‰'''
-
-Ô½Õ¶Õ¤Ö€Õ¸Ö‚Õ´ Õ¥Õ¶Ö„ Õ¾Õ¥Ö€Õ¡Õ¶Õ¡ÕµÕ¥Õ¬ Õ¶Õ«Õ·Ö„Õ« Õ¢Õ¥Õ¼Õ¶Õ´Õ¡Õ¶ Õ¶ÕºÕ¡Õ¿Õ¡Õ¯Õ¡Õ°Õ¡Ö€Õ´Õ¡Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Ö‰
-Ô±ÕµÕ½ Õ¶Õ«Õ·Ö„Õ« Õ»Õ¶Õ»Õ´Õ¡Õ¶ Õ¿Õ¥Õ²Õ¥Õ¯Õ¡Õ´Õ¡Õ¿ÕµÕ¡Õ¶Õ¨ Õ¢Õ¥Ö€Õ¾Õ¡Õ® Õ§ Õ½Õ¿Õ¸Ö€Ö‡.",
'filename-bad-prefix' => "Ô²Õ¥Õ¼Õ¶Õ¾Õ¸Õ² Õ¶Õ«Õ·Ö„Õ« Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ¨ Õ½Õ¯Õ½Õ¾Õ¸Ö‚Õ´ Õ§ '''<tt>«$1»</tt>''' Õ¡Ö€Õ¿Õ¡Õ°Õ¡ÕµÕ¿Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢, Õ¸Ö€Õ¨ Õ¸Õ¹-Õ¶Õ¯Õ¡Ö€Õ¡Õ£Ö€Õ¡Õ¯Õ¡Õ¶ Õ§ Ö‡ Õ½Õ¸Õ¾Õ¸Ö€Õ¡Õ¢Õ¡Ö€ Õ¿Ö€Õ¾Õ¸Ö‚Õ´ Õ§ Õ©Õ¾Õ¡ÕµÕ«Õ¶ Õ¬Õ¸Ö‚Õ½Õ¡Õ¶Õ¯Õ¡Ö€Õ¹Õ¡Õ¯Õ¡Õ¶ Õ¡ÕºÕ¡Ö€Õ¡Õ¿Õ¶Õ¥Ö€Õ« Õ¯Õ¸Õ²Õ´Õ«ÖÖ‰ Ô½Õ¶Õ¤Ö€Õ¸Ö‚Õ´ Õ¥Õ¶Ö„ Õ¨Õ¶Õ¿Ö€Õ¥Õ¬ Õ¡Õ¾Õ¥Õ¬Õ« Õ¶Õ¯Õ¡Ö€Õ¡Õ£Ö€Õ¡Õ¯Õ¡Õ¶ Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´ Õ±Õ¥Ö€ Õ¶Õ«Õ·Ö„Õ« Õ°Õ¡Õ´Õ¡Ö€Ö‰",
'upload-success-subj' => 'Ô²Õ¥Õ¼Õ¶Õ¸Ö‚Õ´Õ¨ Õ¯Õ¡Õ¿Õ¡Ö€Õ¾Õ¡Õ® Õ§',
@@ -1651,11 +1636,9 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlistanontext' => 'Ô±Õ¶Õ°Ö€Õ¡ÕªÕ¥Õ·Õ¿ Õ§ $1Õ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ¨ Õ¤Õ«Õ¿Õ¥Õ¬Õ¸Ö‚ Õ¯Õ¡Õ´ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€Ö‰',
'watchnologin' => 'Õ‰Õ¥Ö„ Õ´Õ¿Õ¥Õ¬ Õ°Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£',
'watchnologintext' => 'Ô±Õ¶Õ°Ö€Õ¡ÕªÕ¥Õ·Õ¿ Õ§ [[Special:UserLogin|Õ´Õ¿Õ¶Õ¥Õ¬ Õ°Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£]]Õ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ¨ ÖƒÕ¸ÖƒÕ¸Õ­Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€Ö‰',
-'addedwatch' => 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¾Õ¡Õ® Õ§ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ«Õ¶',
'addedwatchtext' => '«[[:$1]]» Õ§Õ»Õ¨ Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¾Õ¡Õ® Õ§ Õ±Õ¥Ö€ [[Special:Watchlist|Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ«Õ¶]]Ö‰ Ô±ÕµÕ½ Õ§Õ»Õ« Ö‡ Õ¶Ö€Õ¡Õ¶ Õ¯Õ¡ÕºÕ¾Õ¡Õ® Ö„Õ¶Õ¶Õ¡Ö€Õ¯Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ« Õ§Õ»Õ« Õ°Õ¥Õ¿Õ¡Õ£Õ¡ ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ Õ¯Õ£Ö€Õ¡Õ¶ÖÕ¾Õ¥Õ¶ Õ¡ÕµÕ¤Õ¿Õ¥Õ², Ö‡ Õ¯ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¾Õ¥Õ¶ Õ©Õ¡Õ¾Õ¡Õ¿Õ¡Õ¼ [[Special:RecentChanges|Õ¾Õ¥Ö€Õ»Õ«Õ¶ ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ«]] ÖÕ¡Õ¶Õ¯Õ¸Ö‚Õ´Ö‰
Õ€Õ¥Õ¿Õ¡Õ£Õ¡ÕµÕ¸Ö‚Õ´ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ«Ö Õ§Õ»Õ¨ Õ°Õ¥Õ¼Õ¡ÖÕ¶Õ¥Õ¬Õ¸Ö‚ ÖÕ¡Õ¶Õ¯Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¤Õ¥ÕºÖ„Õ¸Ö‚Õ´ Õ´Õ¡Õ¿Õ¶Õ¡Õ°Õ¡Ö€Õ¥Ö„ Õ§Õ»Õ« Õ¾Õ¥Ö€Õ¶Õ¡Õ´Õ¡Õ½Õ« Õ¨Õ¶Õ¿Ö€Õ¡ÖÕ¡Õ¶Õ¯Õ¸Ö‚Õ´ Õ£Õ¿Õ¶Õ¾Õ¸Õ² «հանել Õ°Õ½Õ¯Õ¸Ö‚Õ´Õ«Ö» Õ¯Õ¸Õ³Õ¡Õ¯Õ«Õ¶Ö‰',
-'removedwatch' => 'Õ€Õ¡Õ¶Õ¾Õ¡Õ® Õ§ Õ°Õ½Õ¯Õ´Õ¡Õ¶ ÖÕ¡Õ¶Õ¯Õ«Ö',
'removedwatchtext' => '«[[:$1]]» Õ§Õ»Õ¨ Õ°Õ¡Õ¶Õ¾Õ¡Õ® Õ§ [[Special:Watchlist|Õ±Õ¥Ö€ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ«Ö]]Ö‰',
'watch' => 'Õ€Õ½Õ¯Õ¥Õ¬',
'watchthispage' => 'Õ€Õ½Õ¯Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ¨',
@@ -1706,10 +1689,10 @@ $NEWPAGE
--
ÕÕ¥Ö€ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ« Õ¶Õ¡Õ­Õ¨Õ¶Õ¿Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨ ÖƒÕ¸Õ­Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ Õ¡ÕµÖÕ¥Õ¬Õ¥Ö„Õ
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Õ€Õ¥Õ¿Õ¡Õ¤Õ¡Ö€Õ± Õ¯Õ¡Õº Ö‡ Ö…Õ£Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Õ‹Õ¶Õ»Õ¥Õ¬ Õ§Õ»Õ¨',
@@ -1723,7 +1706,7 @@ $NEWPAGE
'historywarning' => 'Ô¶Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´. Õ§Õ»Õ¨, Õ¸Ö€Õ¨ Õ¤Õ¸Ö‚Ö„ ÕºÕ¡Õ¿Ö€Õ¡Õ½Õ¿Õ¾Õ¸Ö‚Õ´ Õ¥Ö„ Õ»Õ¶Õ»Õ¥Õ¬ Õ¸Ö‚Õ¶Õ« ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« ÕºÕ¡Õ¿Õ´Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Ö‰',
'confirmdeletetext' => 'Ô´Õ¸Ö‚Ö„ ÕºÕ¡Õ¿Ö€Õ¡Õ½Õ¿Õ¾Õ¸Ö‚Õ´ Õ¥Ö„ Õ¨Õ¶Õ¤Õ´Õ«Õ·Õ¿ Õ»Õ¶Õ»Õ¥Õ¬ Õ§Õ»Õ¨ Õ¯Õ¡Õ´ ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¨ Õ¿Õ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö€Õ« Õ¢Õ¡Õ¦Õ¡ÕµÕ«Ö Õ«Ö€ ÖƒÕ¸ÖƒÕ¸Õ­Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« ÕºÕ¡Õ¿Õ´Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ°Õ¡Õ¶Õ¤Õ¥Ö€Õ±Ö‰ Ô½Õ¶Õ¤Ö€Õ¸Ö‚Õ´ Õ¥Õ¶Ö„ Õ°Õ¡Õ½Õ¿Õ¡Õ¿Õ¥Õ¬, Õ¸Ö€ Õ¤Õ¸Ö‚Ö„ Õ«Ö€Õ¸Ö„ Õ´Õ¿Õ¡Õ¤Ö€Õ¾Õ¡Õ® Õ¥Ö„ Õ¤Õ¡ Õ¡Õ¶Õ¥Õ¬, Õ°Õ¡Õ½Õ¯Õ¡Õ¶Õ¸Ö‚Õ´ Õ¥Ö„ Õ¤Ö€Õ¡ Õ°Õ¥Õ¿Ö‡Õ¡Õ¶Ö„Õ¶Õ¥Ö€Õ¨ Ö‡ Õ£Õ¸Ö€Õ®Õ¸Ö‚Õ´ Õ¥Ö„ [[{{MediaWiki:Policy-url}}|Õ¯Õ¡Õ¶Õ¸Õ¶Õ¡Õ¤Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶]] Õ½Õ¡Õ°Õ´Õ¡Õ¶Õ¶Õ¥Ö€Õ¸Ö‚Õ´Ö‰',
'actioncomplete' => 'Ô³Õ¸Ö€Õ®Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¡Õ¾Õ¡Ö€Õ¿Õ¾Õ¡Õ® Õ§',
-'deletedtext' => '«<nowiki>$1</nowiki>» էջը ջնջված է։
+'deletedtext' => '«$1» էջը ջնջված է։
ÕÕ¥Õ½ $2Õ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ»Õ¶Õ»Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ« ÕºÕ¡Õ¿Õ´Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ°Õ¡Õ´Õ¡Ö€Ö‰',
'deletedarticle' => 'ջնջված է «[[$1]]»',
'dellogpage' => 'Õ‹Õ¶Õ»Õ´Õ¡Õ¶ Õ¿Õ¥Õ²Õ¥Õ¯Õ¡Õ´Õ¡Õ¿ÕµÕ¡Õ¶',
@@ -1765,7 +1748,7 @@ $NEWPAGE
'protectexpiry' => 'Õ„Õ¡Ö€Õ¸Ö‚Õ´.',
'protect_expiry_invalid' => 'Ô±Õ¶Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¥Õ¬Õ« Õ´Õ¡Ö€Õ´Õ¡Õ¶ ÕªÕ¡Õ´Õ¯Õ¥Õ¿Ö‰',
'protect_expiry_old' => 'Õ„Õ¡Ö€Õ´Õ¡Õ¶ ÕªÕ¡Õ´Õ¯Õ¥Õ¿Õ¨ Õ¡Õ¶ÖÕµÕ¡Õ¬Õ¸Ö‚Õ´ Õ§Ö‰',
-'protect-text' => "Ô±ÕµÕ½Õ¿Õ¥Õ² Õ¤Õ¸Ö‚Ö„ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¤Õ«Õ¿Õ¥Õ¬ Ö‡ ÖƒÕ¸Õ­Õ¥Õ¬ '''<nowiki>$1</nowiki>''' Õ§Õ»Õ« ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ´Õ¡Õ¶ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ¨Ö‰",
+'protect-text' => "Ô±ÕµÕ½Õ¿Õ¥Õ² Õ¤Õ¸Ö‚Ö„ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¤Õ«Õ¿Õ¥Õ¬ Ö‡ ÖƒÕ¸Õ­Õ¥Õ¬ '''$1''' Õ§Õ»Õ« ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ´Õ¡Õ¶ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ¨Ö‰",
'protect-locked-blocked' => "Ô´Õ¸Ö‚Ö„ Õ¹Õ¥Ö„ Õ¯Õ¡Ö€Õ¸Õ² ÖƒÕ¸Õ­Õ¥Õ¬ Õ§Õ»Õ« ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ´Õ¡Õ¶ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ¨ Ö„Õ¡Õ¶Õ« Õ¤Õ¥Õ¼ Õ¡Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¾Õ¡Õ® Õ¥Ö„Ö‰ Ô·Õ»Õ« Õ¨Õ¶Õ©Õ¡ÖÕ«Õ¯ Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¶ Õ§Õ '''$1'''.",
'protect-locked-dblock' => "ÕŠÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ´Õ¡Õ¶ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ¨ Õ¹Õ« Õ¯Õ¡Ö€Õ¸Õ² ÖƒÕ¸Õ­Õ¾Õ¥Õ¬ Õ¿Õ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö€Õ« Õ¢Õ¡Õ¦Õ¡ÕµÕ« Õ¯Õ¸Õ²ÕºÕ´Õ¡Õ¶ ÕºÕ¡Õ¿Õ³Õ¡Õ¼Õ¸Õ¾Ö‰ Ô·Õ»Õ« Õ¨Õ¶Õ©Õ¡ÖÕ«Õ¯ Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¶ Õ§Õ '''$1'''.",
'protect-locked-access' => "ÕÕ¥Ö€ Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ¡ÕµÕ«Õ¶ Õ°Õ¡Õ·Õ«Õ¾Õ¨ Õ¹Õ¸Ö‚Õ¶Õ« Õ§Õ»Õ« ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ´Õ¡Õ¶ Õ´Õ¡Õ¯Õ¡Ö€Õ¤Õ¡Õ¯Õ¨ ÖƒÕ¸ÖƒÕ¸Õ­Õ¥Õ¬Õ¸Ö‚ Õ«Ö€Õ¡Õ¾Õ¸Ö‚Õ¶Ö„Ö‰
@@ -1889,7 +1872,6 @@ $1',
'blockiptext' => 'Õ•Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Ö„ Õ½Õ¿Õ¸Ö€Ö‡ Õ¢Õ¥Ö€Õ¾Õ¡Õ® Õ±Ö‡Õ¨ Õ¸Ö€Õ¸Õ·Õ¡Õ¯Õ« IP-Õ°Õ¡Õ½ÖÕ¥Õ«Ö Õ¯Õ¡Õ´ Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Õ¡Õ¶Õ¸Ö‚Õ¶Õ«Ö Õ£Ö€Õ¥Õ¬Õ¸Ö‚ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¡Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€Ö‰
Õ†Õ´Õ¡Õ¶ Õ¢Õ¡Õ¶ Õ°Õ¡Ö€Õ¯Õ¡Õ¾Õ¸Ö€ Õ§ Õ¡Õ¶Õ¥Õ¬ Õ´Õ«Õ¡ÕµÕ¶ Õ¾Õ¡Õ¶Õ¤Õ¡Õ¬Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¯Õ¡Õ¶Õ­Õ¡Ö€Õ£Õ¥Õ¬Õ´Õ¡Õ¶ Õ¶ÕºÕ¡Õ¿Õ¡Õ¯Õ¸Õ¾ Ö‡ Õ°Õ¡Õ´Õ¡Õ±Õ¡ÕµÕ¶ [[{{MediaWiki:Policy-url}}|Õ¯Õ¡Õ¶Õ¸Õ¶Õ¡Õ¯Õ¡Ö€Õ£Õ«]]Ö‰
Õ†Õ·Õ¥Ö„ Õ¡Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ´Õ¡Õ¶ Õ¸Ö€Õ¸Õ·Õ¡Õ¯Õ« ÕºÕ¡Õ¿Õ³Õ¡Õ¼Õ¨ Õ½Õ¿Õ¸Ö€Ö‡ (Ö…Ö€Õ«Õ¶Õ¡Õ¯Õ Õ¶Õ·Õ¥Ö„ Õ¡ÕµÕ¶ Õ§Õ»Õ¨, Õ¸Ö€Õ¸Ö‚Õ´ Õ¾Õ¡Õ¶Õ¤Õ¡Õ¬Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶ Õ§ Õ¿Õ¥Õ²Õ« Õ¸Ö‚Õ¶Õ¥ÖÕ¥Õ¬)Ö‰',
-'ipaddress' => 'IP-Õ°Õ¡Õ½ÖÕ¥.',
'ipadressorusername' => 'IP-Õ°Õ¡Õ½ÖÕ¥ Õ¯Õ¡Õ´ Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Õ¡Õ¶Õ¸Ö‚Õ¶.',
'ipbexpiry' => 'Õ„Õ¡Ö€Õ´Õ¡Õ¶ ÕªÕ¡Õ´Õ¯Õ¥Õ¿.',
'ipbreason' => 'ÕŠÕ¡Õ¿Õ³Õ¡Õ¼.',
@@ -1902,7 +1884,6 @@ $1',
** ÕŽÕ¡Ö€Õ¯Õ¡Õ¢Õ¥Õ¯Õ¸Õ²/Õ¡Õ°Õ¡Õ¢Õ¥Õ¯Õ¸Õ² ÕºÕ¡Õ°Õ¾Õ¡Õ®Ö„
** Ô²Õ¡Õ¦Õ´Õ¡Õ©Õ«Õ¾ Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ¡ÕµÕ«Õ¶ Õ°Õ¡Õ·Õ«Õ¾Õ¶Õ¥Ö€Õ« Õ¹Õ¡Ö€Õ¡Õ·Õ¡Õ°Õ¸Ö‚Õ´
** Ô±Õ¶ÕºÕ¡Õ¿Õ·Õ¡Õ³ Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Õ¡Õ¶Õ¸Ö‚Õ¶',
-'ipbanononly' => 'Ô±Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¥Õ¬ Õ´Õ«Õ¡ÕµÕ¶ Õ¡Õ¶Õ¡Õ¶Õ¸Ö‚Õ¶ Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«ÖÕ¶Õ¥Ö€Õ«Õ¶',
'ipbcreateaccount' => 'Ô¿Õ¡Õ¶Õ­Õ¡Ö€Õ£Õ¥Õ¬Õ¥Õ¬ Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ¡ÕµÕ«Õ¶ Õ°Õ¡Õ·Õ¾Õ« Õ½Õ¿Õ¥Õ²Õ®Õ¸Ö‚Õ´Õ¨',
'ipbemailban' => 'Ô¿Õ¡Õ¶Õ­Õ¡Ö€Õ£Õ¥Õ¬Õ¥Õ¬ Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Õ¯Õ¸Õ²Õ´Õ«Ö Õ§Õ¬-Õ¶Õ¡Õ´Õ¡Õ¯Õ¶Õ¥Ö€Õ« Õ¸Ö‚Õ²Õ¡Ö€Õ¯Õ¸Ö‚Õ´Õ¨',
'ipbenableautoblock' => 'Ô±Õ¾Õ¿Õ¸Õ´Õ¡Õ¿Õ«Õ¯ Õ¡Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¥Õ¬ Õ¡ÕµÕ½ Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Õ¾Õ¥Ö€Õ»Õ«Õ¶ IP-Õ°Õ¡Õ½ÖÕ¥Õ¶ Ö‡ Õ¢Õ¸Õ¬Õ¸Ö€ Õ°Õ¥Õ¿Õ¡Õ£Õ¡ IP-Õ°Õ¡Õ½ÖÕ¥Õ¶Õ¥Ö€Õ¨, Õ¸Ö€Õ¸Õ¶ÖÕ«Ö Õ¶Õ¡ Õ¯ÖƒÕ¸Ö€Õ±Õ« Õ­Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€ Õ¯Õ¡Õ¿Õ¡Ö€Õ¥Õ¬',
@@ -1928,9 +1909,7 @@ $1',
'unblocked-id' => '$1 Õ¡Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¸Ö‚Õ´Õ¨ Õ°Õ¡Õ¶Õ¾Õ¡Õ® Õ§',
'ipblocklist' => 'Ô±Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¾Õ¡Õ® IP-Õ°Õ¡Õ½ÖÕ¥Õ¶Õ¥Ö€Õ¨ Ö‡ Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«ÖÕ¶Õ¥Ö€Õ¨',
'ipblocklist-legend' => 'Ô±Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¾Õ¡Õ® Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Õ¸Ö€Õ¸Õ¶Õ¸Ö‚Õ´',
-'ipblocklist-username' => 'Õ„Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ« Õ¡Õ¶Õ¸Ö‚Õ¶ Õ¯Õ¡Õ´ IP-Õ°Õ¡Õ½ÖÕ¥.',
'ipblocklist-submit' => 'ÕˆÖ€Õ¸Õ¶Õ¥Õ¬',
-'blocklistline' => '$1, $2 Õ¡Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¥Õ¬ Õ§ $3 ($4)',
'infiniteblock' => 'Õ¨Õ¶Õ¤Õ´Õ«Õ·Õ¿',
'expiringblock' => 'Õ¯Õ´Õ¡Ö€Õ¾Õ« $1 $2',
'anononlyblock' => 'Õ´Õ«Õ¡ÕµÕ¶ Õ¡Õ¶Õ¡Õ¶Õ¸Ö‚Õ¶',
@@ -1949,7 +1928,7 @@ $1',
'blocklogentry' => 'Õ¡Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¾Õ¥Õ¬ Õ§ [[$1]]. Õ¡Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ´Õ¡Õ¶ ÕªÕ¡Õ´Õ¯Õ¥Õ¿Õ¶ Õ§Õ $2 $3',
'blocklogtext' => 'ÕÕ¡ Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«ÖÕ¶Õ¥Ö€Õ« Õ¡Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ´Õ¡Õ¶ Ö‡ Õ¡Õ¶Õ¡Ö€Õ£Õ¥Õ¬Õ´Õ¡Õ¶ Õ£Õ¸Ö€Õ®Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ¿Õ¥Õ²Õ¥Õ¯Õ¡Õ´Õ¡Õ¿ÕµÕ¡Õ¶Õ¶ Õ§Ö‰
Ô±Õ¾Õ¿Õ¸Õ´Õ¡Õ¿Õ«Õ¯ Õ¡Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¾Õ¡Õ® IP-Õ°Õ¡Õ½ÖÕ¥Õ¶Õ¥Ö€Õ¨ Õ¨Õ¶Õ¤Õ£Ö€Õ¯Õ¾Õ¡Õ® Õ¹Õ¥Õ¶ Õ¡ÕµÕ½Õ¿Õ¥Õ²Ö‰
-ÕÕ¥Õ½ [[Special:IPBlockList|Õ¶Õ¡Õ¥Ö€Õ¯Õ¡ÕµÕ¸Ö‚Õ´Õ½ Õ£Õ¸Ö€Õ®Õ¸Õ² Õ¡Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ« ÖÕ¡Õ¶Õ¯Õ¨]]Ö‰',
+ÕÕ¥Õ½ [[Special:BlockList|Õ¶Õ¡Õ¥Ö€Õ¯Õ¡ÕµÕ¸Ö‚Õ´Õ½ Õ£Õ¸Ö€Õ®Õ¸Õ² Õ¡Ö€Õ£Õ¥Õ¬Õ¡ÖƒÕ¡Õ¯Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ« ÖÕ¡Õ¶Õ¯Õ¨]]Ö‰',
'unblocklogentry' => 'Õ¡Õ¶Õ¡Ö€Õ£Õ¥Õ¬Õ¾Õ¡Õ® Õ§ $1',
'block-log-flags-anononly' => 'Õ´Õ«Õ¡ÕµÕ¶ Õ¡Õ¶Õ¡Õ¶Õ¸Ö‚Õ¶ Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«ÖÕ¶Õ¥Ö€',
'block-log-flags-nocreate' => 'Õ´Õ¡Õ½Õ¶Õ¡Õ¯ÖÕ¡ÕµÕ«Õ¶ Õ°Õ¡Õ·Õ¾Õ« Õ½Õ¿Õ¥Õ²Õ®Õ¸Ö‚Õ´Õ¨ Õ¡Ö€Õ£Õ¥Õ¬Õ¾Õ¡Õ® Õ§',
@@ -2055,7 +2034,7 @@ $1',
'allmessagesdefault' => 'Ô¼Õ¼Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ¿Õ¥Ö„Õ½Õ¿',
'allmessagescurrent' => 'Ô¸Õ¶Õ©Õ¡ÖÕ«Õ¯ Õ¿Õ¥Ö„Õ½Õ¿',
'allmessagestext' => 'ÕÕ¿Õ¸Ö€Ö‡ Õ¢Õ¥Ö€Õ¾Õ¡Õ® Õ§ «MediaWiki» Õ¡Õ¶Õ¾Õ¡Õ¶Õ¡Õ¿Õ¡Ö€Õ¡Õ®Ö„Õ« Õ¢Õ¸Õ¬Õ¸Ö€ Õ°Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£Õ¡ÕµÕ«Õ¶ Õ¸Ö‚Õ²Õ¥Ö€Õ±Õ¶Õ¥Ö€Õ« ÖÕ¡Õ¶Õ¯Õ¨Ö‰
-Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "Ô±ÕµÕ½ Õ§Õ»Õ¨ Õ¹Õ« Õ£Õ¸Ö€Õ®Õ¸Ö‚Õ´, Ö„Õ¡Õ¶Õ« Õ¸Ö€ '''\$wgUseDatabaseMessages''' Õ°Õ¡Õ¿Õ¯Õ¡Õ¶Õ«Õ·Õ¨ Õ¡Õ¶Õ»Õ¡Õ¿Õ¾Õ¡Õ® Õ§Ö‰",
# Thumbnails
@@ -2172,9 +2151,7 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'monobook.js' => '/* Õ€Õ¶Õ¡ÖÕ¡Õ® Õ§. Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Ö„ [[MediaWiki:common.js]] */',
# Metadata
-'nodublincore' => 'Dublin Core RDF Õ´Õ¥Õ¿Õ¡Õ¿Õ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö€Õ¨ Õ¡Ö€Õ£Õ¥Õ¬Õ¾Õ¡Õ® Õ¥Õ¶ Õ¡ÕµÕ½ Õ½Õ¥Ö€Õ¾Õ¥Ö€Õ¸Ö‚Õ´Ö‰',
-'nocreativecommons' => 'Creative Commons RDF Õ´Õ¥Õ¿Õ¡Õ¿Õ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö€Õ¨ Õ¡Ö€Õ£Õ¥Õ¬Õ¾Õ¡Õ® Õ¥Õ¶ Õ¡ÕµÕ½ Õ½Õ¥Ö€Õ¾Õ¥Ö€Õ¸Ö‚Õ´Ö‰',
-'notacceptable' => 'ÕŽÕ«Ö„Õ«-Õ½ÕºÕ¡Õ½Õ¡Ö€Õ¯Õ«Õ¹Õ¨ Õ¹Õ« Õ¯Õ¡Ö€Õ¸Õ² Õ¿Õ¾ÕµÕ¬Õ¡Õ¶Õ¥Ö€Õ¨ Õ¿Ö€Õ¡Õ´Õ¡Õ¤Ö€Õ¥Õ¬ Õ±Õ¥Ö€ Õ¦Õ¶Õ¶Õ¡Ö€Õ¯Õ«Õ¹Õ« Õ¯Õ¸Õ²Õ´Õ«Ö Õ¯Õ¡Ö€Õ¤Õ¡ÖÕ¾Õ¸Õ² Ö†Õ¸Ö€Õ´Õ¡Õ¿Õ¸Õ¾Ö‰',
+'notacceptable' => 'ÕŽÕ«Ö„Õ«-Õ½ÕºÕ¡Õ½Õ¡Ö€Õ¯Õ«Õ¹Õ¨ Õ¹Õ« Õ¯Õ¡Ö€Õ¸Õ² Õ¿Õ¾ÕµÕ¬Õ¡Õ¶Õ¥Ö€Õ¨ Õ¿Ö€Õ¡Õ´Õ¡Õ¤Ö€Õ¥Õ¬ Õ±Õ¥Ö€ Õ¦Õ¶Õ¶Õ¡Ö€Õ¯Õ«Õ¹Õ« Õ¯Õ¸Õ²Õ´Õ«Ö Õ¯Õ¡Ö€Õ¤Õ¡ÖÕ¾Õ¸Õ² Ö†Õ¸Ö€Õ´Õ¡Õ¿Õ¸Õ¾Ö‰',
# Attribution
'anonymous' => '{{grammar:genitive|{{SITENAME}}}} Õ¡Õ¶Õ¡Õ¶Õ¸Ö‚Õ¶ Õ´Õ¡Õ½Õ¶Õ¡Õ¯Õ«ÖÕ¶Õ¥Ö€Õ¨',
@@ -2194,14 +2171,6 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'spam_reverting' => 'Õ€Õ¥Õ¿ Õ§ Õ·Ö€Õ»Õ¾Õ¸Ö‚Õ´ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯Õ«, Õ¸Ö€Õ¨ Õ¹Õ« ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ°Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€ Õ¤Õ¥ÕºÕ« $1',
'spam_blanking' => 'Ô²Õ¸Õ¬Õ¸Ö€ Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯Õ¶Õ¥Ö€Õ¨ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¸Ö‚Õ´ Õ¥Õ¶ Õ°Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€ Õ¤Õ¥ÕºÕ« $1, Õ´Õ¡Ö„Ö€Õ¸Ö‚Õ´',
-# Info page
-'infosubtitle' => 'ÕÕ¥Õ²Õ¥Õ¯Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ§Õ»Õ« Õ´Õ¡Õ½Õ«Õ¶',
-'numedits' => 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ« Õ©Õ«Õ¾ (Õ°Õ¸Õ¤Õ¾Õ¡Õ®). $1',
-'numtalkedits' => 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ« Õ©Õ«Õ¾ (Ö„Õ¶Õ¶Õ¡Ö€Õ¯Õ´Õ¡Õ¶ Õ§Õ»). $1',
-'numwatchers' => 'Õ€Õ½Õ¯Õ¸Õ²Õ¶Õ¥Ö€Õ« Õ©Õ«Õ¾. $1',
-'numauthors' => 'ÕÕ¡Ö€Õ¢Õ¥Ö€ Õ°Õ¥Õ²Õ«Õ¶Õ¡Õ¯Õ¶Õ¥Ö€Õ« Õ©Õ«Õ¾ (Õ°Õ¸Õ¤Õ¾Õ¡Õ®). $1',
-'numtalkauthors' => 'ÕÕ¡Ö€Õ¢Õ¥Ö€ Õ°Õ¥Õ²Õ«Õ¶Õ¡Õ¯Õ¶Õ¥Ö€Õ« Õ©Õ«Õ¾ (Ö„Õ¶Õ¶Õ¡Ö€Õ¯Õ´Õ¡Õ¶ Õ§Õ»). $1',
-
# Skin names
'skinname-standard' => 'Ô´Õ¡Õ½Õ¡Õ¯Õ¡Õ¶',
'skinname-nostalgia' => 'Õ€Õ¡ÕµÖ€Õ¥Õ¶Õ¡Õ¢Õ¡Õ²Õ±Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶',
@@ -2211,25 +2180,6 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'skinname-chick' => 'Ô¾Õ«Õ¿',
'skinname-simple' => 'ÕŠÕ¡Ö€Õ¦',
-# Math options
-'mw_math_png' => 'Õ„Õ«Õ·Õ¿ Õ¤Õ¡Ö€Õ±Õ¶Õ¥Õ¬ PNG',
-'mw_math_simple' => 'HTMLÕ ÕºÕ¡Ö€Õ¦ Õ¤Õ¥ÕºÖ„Õ¥Ö€Õ¸Ö‚Õ´, Õ¡ÕµÕ¬Õ¡ÕºÕ¥Õ½Õ PNG',
-'mw_math_html' => 'HTML, Õ¥Õ©Õ¥ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ§, Õ¡ÕµÕ¬Õ¡ÕºÕ¥Õ½Õ PNG',
-'mw_math_source' => 'Թողնել որպես ТеХ (տեքստային բրաուզերների համար)',
-'mw_math_modern' => 'Ô½Õ¸Ö€Õ°Õ¸Ö‚Ö€Õ¤ Õ§ Õ¿Ö€Õ¾Õ¸Ö‚Õ´ ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ¡Õ¯Õ«Ö Õ¢Ö€Õ¡Õ¸Ö‚Õ¦Õ¥Ö€Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€',
-'mw_math_mathml' => 'MathML, Õ¥Õ©Õ¥ Õ°Õ¶Õ¡Ö€Õ¡Õ¾Õ¸Ö€ Õ§ (ÖƒÕ¸Ö€Õ±Õ¶Õ¡Õ¯Õ¡Õ¶)',
-
-# Math errors
-'math_failure' => 'Õ‰Õ°Õ¡Õ»Õ¸Õ²Õ¾Õ¥Ö Õ¾Õ¥Ö€Õ¬Õ¸Ö‚Õ®Õ¥Õ¬',
-'math_unknown_error' => 'Õ¡Õ¶Õ°Õ¡ÕµÕ¿ Õ½Õ­Õ¡Õ¬',
-'math_unknown_function' => 'Õ¡Õ¶Õ°Õ¡ÕµÕ¿ Ö†Õ¸Ö‚Õ¶Õ¯ÖÕ«Õ¡',
-'math_lexing_error' => 'Õ¢Õ¡Õ¼Õ¡Õ¯Õ¡Õ¶ Õ½Õ­Õ¡Õ¬',
-'math_syntax_error' => 'Õ·Õ¡Ö€Õ¡Õ°ÕµÕ¸Ö‚Õ½Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ½Õ­Õ¡Õ¬',
-'math_image_error' => 'PNG Õ¾Õ¥Ö€Õ¡Õ®Õ¸Ö‚Õ´Õ¨ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö. Õ½Õ¿Õ¸Ö‚Õ£Õ¥Ö„ latex, dvips, gs Ö‡ convert Õ®Ö€Õ¡Õ£Ö€Õ¥Ö€Õ« Õ¿Õ¥Õ²Õ¡Õ¤Ö€Õ´Õ¡Õ¶ Õ³Õ·Õ¿Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨Ö‰',
-'math_bad_tmpdir' => 'Õ‰Õ« Õ°Õ¡Õ»Õ¸Õ²Õ¾Õ¸Ö‚Õ´ Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¯Õ¡Õ´ Õ£Ö€Õ¥Õ¬ Õ´Õ¡Õ©Õ¥Õ´Õ¡Õ¿Õ«Õ¯Õ¡ÕµÕ« ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ¡Õ¾Õ¸Ö€ Õ©Õ²Õ©Õ¡ÕºÕ¡Õ¶Õ¡Õ¯Õ«Õ¶Ö‰',
-'math_bad_output' => 'Õ‰Õ« Õ°Õ¡Õ»Õ¸Õ²Õ¾Õ¸Ö‚Õ´ Õ½Õ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¯Õ¡Õ´ Õ£Ö€Õ¥Õ¬ Õ´Õ¡Õ©Õ¥Õ´Õ¡Õ¿Õ«Õ¯Õ¡ÕµÕ« Õ¡Ö€Õ¿Õ¡Õ®Õ´Õ¡Õ¶ Õ©Õ²Õ©Õ¡ÕºÕ¡Õ¶Õ¡Õ¯Õ«Õ¶',
-'math_notexvc' => 'Ô¿Õ¡Õ¿Õ¡Ö€Õ´Õ¡Õ¶ texvc Õ¶Õ«Õ·Ö„Õ¨ Õ¹Õ« Õ£Õ¿Õ¶Õ¾Õ¥Õ¬Ö‰ ÕÕ¥Õ½Õ¥Ö„ math/READMEÕ Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ´Õ¡Õ¶ Õ°Õ¡Õ´Õ¡Ö€Ö‰',
-
# Patrolling
'markaspatrolleddiff' => 'Õ†Õ·Õ¥Õ¬ Õ¸Ö€ÕºÕ¥Õ½ Õ½Õ¿Õ¸Ö‚Õ£Õ¾Õ¡Õ®',
'markaspatrolledtext' => 'Õ†Õ·Õ¥Õ¬ Õ¡ÕµÕ½ Õ§Õ»Õ¨ Õ¸Ö€ÕºÕ¥Õ½ Õ½Õ¿Õ¸Ö‚Õ£Õ¾Õ¡Õ®',
@@ -2262,16 +2212,15 @@ $1',
'nextdiff' => 'Հաջորդ խմբագրում →',
# Media information
-'mediawarning' => "'''Ô¶Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´'''. Õ¡ÕµÕ½ Õ¶Õ«Õ·Ö„Õ« Õ¿Õ¥Õ½Õ¡Õ¯Õ¨ Õ¯Õ¡Ö€Õ¸Õ² Õ§ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¥Õ¬ Õ¾Õ¶Õ¡Õ½Õ¡Õ¯Õ¡Ö€ Õ®Ö€Õ¡Õ£Ö€Õ¡ÕµÕ«Õ¶ Õ¯Õ¸Õ¤Ö‰ Ô±ÕµÕ¶ Õ¯Õ«Ö€Õ¡Ö€Õ¯Õ¥Õ¬Õ¨ Õ¯Õ¡Ö€Õ¸Õ² Õ§ Õ¾Õ¿Õ¡Õ¶Õ£Õ¥Õ¬ Õ±Õ¥Ö€ Õ°Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£Õ¨Ö‰",
-'imagemaxsize' => 'ÕŠÕ¡Õ¿Õ¯Õ¥Ö€Õ« Õ§Õ»Õ¸Ö‚Õ´ ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ« Õ¹Õ¡ÖƒÕ« Õ½Õ¡Õ°Õ´Õ¡Õ¶Õ¡ÖƒÕ¡Õ¯Õ¸Ö‚Õ´.',
-'thumbsize' => 'ÕŠÕ¡Õ¿Õ¯Õ¥Ö€Õ¶Õ¥Ö€Õ« ÖƒÕ¸Ö„Ö€Õ¡ÖÕ¾Õ¡Õ® Õ¹Õ¡Öƒ.',
-'widthheightpage' => '$1 × $2, $3 էջեր',
-'file-info' => 'Õ¶Õ«Õ·Ö„Õ« Õ¹Õ¡ÖƒÕ $1, MIME-Õ¿Õ¥Õ½Õ¡Õ¯Õ $2',
-'file-info-size' => '$1 × $2 ÖƒÕ«Ö„Õ½Õ¥Õ¬, Õ¶Õ«Õ·Ö„Õ« Õ¹Õ¡ÖƒÕ¨Õ $3, MIME-Õ¿Õ¥Õ½Õ¡Õ¯Õ¨Õ $4',
-'file-nohires' => '<small>Ô²Õ¡Ö€Õ±Ö€ Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯ Õ¹Õ¯Õ¡Ö‰</small>',
-'svg-long-desc' => 'SVG-Õ¶Õ«Õ·Ö„, Õ¡Õ¶Õ¾Õ¡Õ¶Õ¡ÕºÕ¥Õ½ $1 × $2 ÖƒÕ«Ö„Õ½Õ¥Õ¬, Õ¶Õ«Õ·Ö„Õ« Õ¹Õ¡ÖƒÕ¨Õ $3',
-'show-big-image' => 'Ô¼Ö€Õ«Õ¾ Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢',
-'show-big-image-thumb' => '<small>Նախադիտման չափ. $1 × $2 փիքսել</small>',
+'mediawarning' => "'''Ô¶Õ£Õ¸Ö‚Õ·Õ¡ÖÕ¸Ö‚Õ´'''. Õ¡ÕµÕ½ Õ¶Õ«Õ·Ö„Õ« Õ¿Õ¥Õ½Õ¡Õ¯Õ¨ Õ¯Õ¡Ö€Õ¸Õ² Õ§ ÕºÕ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¥Õ¬ Õ¾Õ¶Õ¡Õ½Õ¡Õ¯Õ¡Ö€ Õ®Ö€Õ¡Õ£Ö€Õ¡ÕµÕ«Õ¶ Õ¯Õ¸Õ¤Ö‰ Ô±ÕµÕ¶ Õ¯Õ«Ö€Õ¡Ö€Õ¯Õ¥Õ¬Õ¨ Õ¯Õ¡Ö€Õ¸Õ² Õ§ Õ¾Õ¿Õ¡Õ¶Õ£Õ¥Õ¬ Õ±Õ¥Ö€ Õ°Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ£Õ¨Ö‰",
+'imagemaxsize' => 'ÕŠÕ¡Õ¿Õ¯Õ¥Ö€Õ« Õ§Õ»Õ¸Ö‚Õ´ ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ« Õ¹Õ¡ÖƒÕ« Õ½Õ¡Õ°Õ´Õ¡Õ¶Õ¡ÖƒÕ¡Õ¯Õ¸Ö‚Õ´.',
+'thumbsize' => 'ÕŠÕ¡Õ¿Õ¯Õ¥Ö€Õ¶Õ¥Ö€Õ« ÖƒÕ¸Ö„Ö€Õ¡ÖÕ¾Õ¡Õ® Õ¹Õ¡Öƒ.',
+'widthheightpage' => '$1 × $2, $3 էջեր',
+'file-info' => 'Õ¶Õ«Õ·Ö„Õ« Õ¹Õ¡ÖƒÕ $1, MIME-Õ¿Õ¥Õ½Õ¡Õ¯Õ $2',
+'file-info-size' => '$1 × $2 ÖƒÕ«Ö„Õ½Õ¥Õ¬, Õ¶Õ«Õ·Ö„Õ« Õ¹Õ¡ÖƒÕ¨Õ $3, MIME-Õ¿Õ¥Õ½Õ¡Õ¯Õ¨Õ $4',
+'file-nohires' => '<small>Ô²Õ¡Ö€Õ±Ö€ Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢ Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯ Õ¹Õ¯Õ¡Ö‰</small>',
+'svg-long-desc' => 'SVG-Õ¶Õ«Õ·Ö„, Õ¡Õ¶Õ¾Õ¡Õ¶Õ¡ÕºÕ¥Õ½ $1 × $2 ÖƒÕ«Ö„Õ½Õ¥Õ¬, Õ¶Õ«Õ·Ö„Õ« Õ¹Õ¡ÖƒÕ¨Õ $3',
+'show-big-image' => 'Ô¼Ö€Õ«Õ¾ Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Õ¾Õ¸Ö‚Õ©ÕµÕ¡Õ´Õ¢',
# Special:NewFiles
'newimages' => 'Õ†Õ¸Ö€ Õ¶Õ«Õ·Ö„Õ¥Ö€Õ« Õ½Ö€Õ¡Õ°',
@@ -2308,7 +2257,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Ô¼Õ¡ÕµÕ¶Ö„',
@@ -2319,15 +2274,13 @@ $1',
# External editor support
'edit-externally' => 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ¡ÕµÕ½ Õ¶Õ«Õ·Ö„Õ¨ Õ¡Ö€Õ¿Õ¡Ö„Õ«Õ¶ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ«Õ¹Õ¸Õ¾',
-'edit-externally-help' => '(Õ„Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€ Õ¿Õ¥Õ½ [http://www.mediawiki.org/wiki/Manual:External_editors Õ¿Õ¥Õ²Õ¡Õ¯Õ¡ÕµÕ´Õ¡Õ¶ Õ°Ö€Õ¡Õ°Õ¡Õ¶Õ£Õ¶Õ¥Ö€Õ¨])',
+'edit-externally-help' => '(Õ„Õ¡Õ¶Ö€Õ¡Õ´Õ¡Õ½Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ« Õ°Õ¡Õ´Õ¡Ö€ Õ¿Õ¥Õ½ [//www.mediawiki.org/wiki/Manual:External_editors Õ¿Õ¥Õ²Õ¡Õ¯Õ¡ÕµÕ´Õ¡Õ¶ Õ°Ö€Õ¡Õ°Õ¡Õ¶Õ£Õ¶Õ¥Ö€Õ¨])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Õ¢Õ¸Õ¬Õ¸Ö€',
-'imagelistall' => 'Õ¢Õ¸Õ¬Õ¸Ö€',
-'watchlistall2' => 'Õ¢Õ¸Õ¬Õ¸Ö€',
-'namespacesall' => 'Õ¢Õ¸Õ¬Õ¸Ö€',
-'monthsall' => 'Õ¢Õ¸Õ¬Õ¸Ö€',
-'limitall' => 'Õ¢Õ¸Õ¬Õ¸Ö€',
+'watchlistall2' => 'Õ¢Õ¸Õ¬Õ¸Ö€',
+'namespacesall' => 'Õ¢Õ¸Õ¬Õ¸Ö€',
+'monthsall' => 'Õ¢Õ¸Õ¬Õ¸Ö€',
+'limitall' => 'Õ¢Õ¸Õ¬Õ¸Ö€',
# E-mail address confirmation
'confirmemail' => 'Ô·Õ¬-Õ°Õ¡Õ½ÖÕ¥Õ« Õ¾Õ¡Õ¾Õ¥Ö€Õ¡ÖÕ¸Ö‚Õ´',
@@ -2425,12 +2378,12 @@ $1',
'watchlistedit-normal-legend' => 'Õ€Õ¥Õ¼Õ¡ÖÕ¶Õ¥Õ¬ Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ«Ö',
'watchlistedit-normal-explain' => 'ÕÕ¥Ö€ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ« Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¢Õ¥Ö€Õ¾Õ¡Õ® Õ¥Õ¶ Õ½Õ¿Õ¸Ö€Ö‡Ö‰
Ô±Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ¨ Õ°Õ¥Õ¼Õ¡ÖÕ¶Õ¥Õ¬Õ¸Ö‚ Õ°Õ¡Õ´Õ¡Ö€ Õ¶Õ·Õ¥Ö„ Õ¡Õ¶Õ¾Õ¡Õ¶Õ´Õ¡Õ¶ Õ¯Õ¸Õ²Ö„Õ« Õ¡Ö€Õ¯Õ²Õ¸Ö‚Õ´ Ö‡ Õ´Õ¡Õ¿Õ¶Õ¡Õ°Õ¡Ö€Õ¥Ö„ Õ€Õ¥Õ¼Õ¡ÖÕ¶Õ¥Õ¬ Ô±Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨Ö‰
-Ô´Õ¸Ö‚Ö„ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¶Õ¡Ö‡ [[Special:Watchlist/raw|Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ°Õ¸Ö‚Õ´ ÖÕ¡Õ¶Õ¯Õ¨]]Ö‰',
+Ô´Õ¸Ö‚Ö„ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¶Õ¡Ö‡ [[Special:EditWatchlist/raw|Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ°Õ¸Ö‚Õ´ ÖÕ¡Õ¶Õ¯Õ¨]]Ö‰',
'watchlistedit-normal-submit' => 'Õ€Õ¥Õ¼Õ¡ÖÕ¶Õ¥Õ¬ Ô±Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´|$1 Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´}} Õ°Õ¥Õ¼Õ¡ÖÕ¾Õ¥Ö Õ±Õ¥Ö€ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ«Ö.',
'watchlistedit-raw-title' => 'Õ€Õ¸Ö‚Õ´ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ« Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´',
'watchlistedit-raw-legend' => 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ°Õ¸Ö‚Õ´ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ¨',
-'watchlistedit-raw-explain' => 'ÕÕ¥Ö€ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ« Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¢Õ¥Ö€Õ¾Õ¡Õ® Õ¥Õ¶ Õ½Õ¿Õ¸Ö€Ö‡Ö‰ Ô´Õ¸Ö‚Ö„ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¡ÕµÕ¶ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ°Õ¥Õ¼Õ¡ÖÕ¶Õ¥Õ¬Õ¸Õ¾ Õ¥Õ²Õ¡Õ®Õ¶Õ¥Ö€Õ¨ Õ¯Õ¡Õ´ Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬Õ¸Õ¾ Õ¶Õ¸Ö€ Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ Õ¡Õ´Õ¥Õ¶ Õ¿Õ¸Õ²Õ¸Ö‚Õ´ Õ´Õ¥Õ¯ Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Ö‰ Ô±Õ¾Õ¡Ö€Õ¿Õ¥Õ¬Õ¸Ö‚Ö Õ°Õ¥Õ¿Õ¸ Õ´Õ¡Õ¿Õ¶Õ¡Õ°Õ¡Ö€Õ¥Ö„ Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ Õ€Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ¨Ö‰ Ô¿Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¶Õ¡Ö‡ [[Special:Watchlist/edit|Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ½Õ¿Õ¡Õ¶Õ¤Õ¡Ö€Õ¿ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ«Õ¹Õ¨]]Ö‰',
+'watchlistedit-raw-explain' => 'ÕÕ¥Ö€ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ« Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ¨ Õ¢Õ¥Ö€Õ¾Õ¡Õ® Õ¥Õ¶ Õ½Õ¿Õ¸Ö€Ö‡Ö‰ Ô´Õ¸Ö‚Ö„ Õ¯Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¡ÕµÕ¶ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ°Õ¥Õ¼Õ¡ÖÕ¶Õ¥Õ¬Õ¸Õ¾ Õ¥Õ²Õ¡Õ®Õ¶Õ¥Ö€Õ¨ Õ¯Õ¡Õ´ Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬Õ¸Õ¾ Õ¶Õ¸Ö€ Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ Õ¡Õ´Õ¥Õ¶ Õ¿Õ¸Õ²Õ¸Ö‚Õ´ Õ´Õ¥Õ¯ Õ¡Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Ö‰ Ô±Õ¾Õ¡Ö€Õ¿Õ¥Õ¬Õ¸Ö‚Ö Õ°Õ¥Õ¿Õ¸ Õ´Õ¡Õ¿Õ¶Õ¡Õ°Õ¡Ö€Õ¥Ö„ Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ Õ€Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ¨Ö‰ Ô¿Õ¡Ö€Õ¸Õ² Õ¥Ö„ Õ¶Õ¡Ö‡ [[Special:EditWatchlist|Ö…Õ£Õ¿Õ¡Õ£Õ¸Ö€Õ®Õ¥Õ¬ Õ½Õ¿Õ¡Õ¶Õ¤Õ¡Ö€Õ¿ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ«Õ¹Õ¨]]Ö‰',
'watchlistedit-raw-titles' => 'Ô±Õ¶Õ¾Õ¡Õ¶Õ¸Ö‚Õ´Õ¶Õ¥Ö€.',
'watchlistedit-raw-submit' => 'Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬ Õ€Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ¨',
'watchlistedit-raw-done' => 'ÕÕ¥Ö€ Õ°Õ½Õ¯Õ¡ÖÕ¡Õ¶Õ¯Õ¨ Õ©Õ¡Ö€Õ´Õ¡ÖÕ¾Õ¡Õ® Õ§Ö‰',
diff --git a/languages/messages/MessagesIa.php b/languages/messages/MessagesIa.php
index 4b23151b..7513f465 100644
--- a/languages/messages/MessagesIa.php
+++ b/languages/messages/MessagesIa.php
@@ -41,95 +41,96 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Redirectiones_duple' ),
+ 'Activeusers' => array( 'Usatores_active' ),
+ 'Allmessages' => array( 'Tote_le_messages' ),
+ 'Allpages' => array( 'Tote_le_paginas' ),
+ 'Ancientpages' => array( 'Paginas_ancian' ),
+ 'Blankpage' => array( 'Pagina_vacue' ),
+ 'Block' => array( 'Blocar', 'Blocar_IP', 'Blocar_usator' ),
+ 'Blockme' => array( 'Blocar_me' ),
+ 'Booksources' => array( 'Fontes_de_libros' ),
'BrokenRedirects' => array( 'Redirectiones_rupte' ),
- 'Disambiguations' => array( 'Disambiguationes' ),
- 'Userlogin' => array( 'Aperir_session', 'Identificar' ),
- 'Userlogout' => array( 'Clauder_session', 'Disconnecter' ),
+ 'Categories' => array( 'Categorias' ),
+ 'ChangePassword' => array( 'Cambiar_contrasigno' ),
+ 'ComparePages' => array( 'Comparar_paginas' ),
+ 'Confirmemail' => array( 'Confirmar_e-mail' ),
+ 'Contributions' => array( 'Contributiones' ),
'CreateAccount' => array( 'Crear_conto' ),
- 'Preferences' => array( 'Preferentias' ),
- 'Watchlist' => array( 'Observatorio' ),
- 'Recentchanges' => array( 'Modificationes_recente' ),
- 'Upload' => array( 'Incargar', 'Cargar' ),
+ 'Deadendpages' => array( 'Paginas_sin_exito' ),
+ 'DeletedContributions' => array( 'Contributiones_delite' ),
+ 'Disambiguations' => array( 'Disambiguationes' ),
+ 'DoubleRedirects' => array( 'Redirectiones_duple' ),
+ 'Emailuser' => array( 'Inviar_e-mail_a_un_usator' ),
+ 'Export' => array( 'Exportar' ),
+ 'Fewestrevisions' => array( 'Le_minus_versiones' ),
+ 'FileDuplicateSearch' => array( 'Recerca_de_files_duplice' ),
+ 'Filepath' => array( 'Cammino_al_file' ),
+ 'Import' => array( 'Importar' ),
+ 'Invalidateemail' => array( 'Invalidar_e-mail' ),
+ 'BlockList' => array( 'Lista_de_blocadas', 'Lista_de_blocadas_IP' ),
+ 'LinkSearch' => array( 'Recerca_de_ligamines' ),
+ 'Listadmins' => array( 'Lista_de_administratores' ),
+ 'Listbots' => array( 'Lista_de_robots' ),
'Listfiles' => array( 'Lista_de_files', 'Lista_de_imagines' ),
- 'Newimages' => array( 'Nove_files', 'Nove_imagines' ),
- 'Listusers' => array( 'Lista_de_usatores' ),
'Listgrouprights' => array( 'Lista_del_derectos_de_gruppos' ),
- 'Statistics' => array( 'Statisticas' ),
- 'Randompage' => array( 'Aleatori', 'Pagina_aleatori' ),
+ 'Listredirects' => array( 'Lista_de_redirectiones' ),
+ 'Listusers' => array( 'Lista_de_usatores' ),
+ 'Lockdb' => array( 'Blocar_BDD' ),
+ 'Log' => array( 'Registro', 'Registros' ),
'Lonelypages' => array( 'Paginas_orphanate' ),
- 'Uncategorizedpages' => array( 'Paginas_non_categorisate' ),
- 'Uncategorizedcategories' => array( 'Categorias_non_categorisate' ),
- 'Uncategorizedimages' => array( 'Files_non_categorisate', 'Imagines_non_categorisate' ),
- 'Uncategorizedtemplates' => array( 'Patronos_non_categorisate' ),
- 'Unusedcategories' => array( 'Categorias_non_usate' ),
- 'Unusedimages' => array( 'Files_non_usate', 'Imagines_non_usate' ),
- 'Wantedpages' => array( 'Paginas_desirate', 'Ligamines_rupte' ),
- 'Wantedcategories' => array( 'Categorias_desirate' ),
- 'Wantedfiles' => array( 'Files_desirate' ),
- 'Wantedtemplates' => array( 'Patronos_desirate' ),
+ 'Longpages' => array( 'Paginas_longe' ),
+ 'MergeHistory' => array( 'Fusionar_historia' ),
+ 'MIMEsearch' => array( 'Recerca_MIME' ),
+ 'Mostcategories' => array( 'Le_plus_categorias' ),
+ 'Mostimages' => array( 'Files_le_plus_ligate', 'Le_plus_files', 'Le_plus_imagines' ),
'Mostlinked' => array( 'Paginas_le_plus_ligate', 'Le_plus_ligate' ),
'Mostlinkedcategories' => array( 'Categorias_le_plus_ligate', 'Categorias_le_plus_usate' ),
'Mostlinkedtemplates' => array( 'Patronos_le_plus_ligate', 'Patronos_le_plus_usate' ),
- 'Mostimages' => array( 'Files_le_plus_ligate', 'Le_plus_files', 'Le_plus_imagines' ),
- 'Mostcategories' => array( 'Le_plus_categorias' ),
'Mostrevisions' => array( 'Le_plus_versiones' ),
- 'Fewestrevisions' => array( 'Le_minus_versiones' ),
- 'Shortpages' => array( 'Paginas_curte' ),
- 'Longpages' => array( 'Paginas_longe' ),
+ 'Movepage' => array( 'Renominar_pagina' ),
+ 'Mycontributions' => array( 'Mi_contributiones' ),
+ 'Mypage' => array( 'Mi_pagina' ),
+ 'Mytalk' => array( 'Mi_discussion' ),
+ 'Newimages' => array( 'Nove_files', 'Nove_imagines' ),
'Newpages' => array( 'Paginas_nove', 'Nove_paginas' ),
- 'Ancientpages' => array( 'Paginas_ancian' ),
- 'Deadendpages' => array( 'Paginas_sin_exito' ),
+ 'PasswordReset' => array( 'Reinitialisar_contrasigno' ),
+ 'Popularpages' => array( 'Paginas_popular' ),
+ 'Preferences' => array( 'Preferentias' ),
+ 'Prefixindex' => array( 'Indice_de_prefixos' ),
'Protectedpages' => array( 'Paginas_protegite' ),
'Protectedtitles' => array( 'Titulos_protegite' ),
- 'Allpages' => array( 'Tote_le_paginas' ),
- 'Prefixindex' => array( 'Indice_de_prefixos' ),
- 'Ipblocklist' => array( 'Lista_de_blocadas', 'Lista_de_blocadas_IP' ),
- 'Specialpages' => array( 'Paginas_special' ),
- 'Contributions' => array( 'Contributiones' ),
- 'Emailuser' => array( 'Inviar_e-mail_a_un_usator' ),
- 'Confirmemail' => array( 'Confirmar_e-mail' ),
- 'Whatlinkshere' => array( 'Referentias_a_iste_pagina' ),
+ 'Randompage' => array( 'Aleatori', 'Pagina_aleatori' ),
+ 'Randomredirect' => array( 'Redirection_aleatori' ),
+ 'Recentchanges' => array( 'Modificationes_recente' ),
'Recentchangeslinked' => array( 'Modificationes_recente_ligate', 'Modificationes_connexe' ),
- 'Movepage' => array( 'Renominar_pagina' ),
- 'Blockme' => array( 'Blocar_me' ),
- 'Booksources' => array( 'Fontes_de_libros' ),
- 'Categories' => array( 'Categorias' ),
- 'Export' => array( 'Exportar' ),
- 'Allmessages' => array( 'Tote_le_messages' ),
- 'Log' => array( 'Registro', 'Registros' ),
- 'Blockip' => array( 'Blocar', 'Blocar_IP', 'Blocar_usator' ),
+ 'Revisiondelete' => array( 'Deletion_de_versiones' ),
+ 'RevisionMove' => array( 'Displaciar_versiones' ),
+ 'Search' => array( 'Recerca' ),
+ 'Shortpages' => array( 'Paginas_curte' ),
+ 'Specialpages' => array( 'Paginas_special' ),
+ 'Statistics' => array( 'Statisticas' ),
+ 'Tags' => array( 'Etiquettas' ),
+ 'Uncategorizedcategories' => array( 'Categorias_non_categorisate' ),
+ 'Uncategorizedimages' => array( 'Files_non_categorisate', 'Imagines_non_categorisate' ),
+ 'Uncategorizedpages' => array( 'Paginas_non_categorisate' ),
+ 'Uncategorizedtemplates' => array( 'Patronos_non_categorisate' ),
'Undelete' => array( 'Restaurar' ),
- 'Import' => array( 'Importar' ),
- 'Lockdb' => array( 'Blocar_BDD' ),
'Unlockdb' => array( 'Disblocar_BDD' ),
- 'Userrights' => array( 'Derectos_de_usatores' ),
- 'MIMEsearch' => array( 'Recerca_MIME' ),
- 'FileDuplicateSearch' => array( 'Recerca_de_files_duplice' ),
- 'Unwatchedpages' => array( 'Paginas_non_observate' ),
- 'Listredirects' => array( 'Lista_de_redirectiones' ),
- 'Revisiondelete' => array( 'Deletion_de_versiones' ),
+ 'Unusedcategories' => array( 'Categorias_non_usate' ),
+ 'Unusedimages' => array( 'Files_non_usate', 'Imagines_non_usate' ),
'Unusedtemplates' => array( 'Patronos_non_usate' ),
- 'Randomredirect' => array( 'Redirection_aleatori' ),
- 'Mypage' => array( 'Mi_pagina' ),
- 'Mytalk' => array( 'Mi_discussion' ),
- 'Mycontributions' => array( 'Mi_contributiones' ),
- 'Listadmins' => array( 'Lista_de_administratores' ),
- 'Listbots' => array( 'Lista_de_robots' ),
- 'Popularpages' => array( 'Paginas_popular' ),
- 'Search' => array( 'Recerca' ),
- 'Resetpass' => array( 'Cambiar_contrasigno' ),
+ 'Unwatchedpages' => array( 'Paginas_non_observate' ),
+ 'Upload' => array( 'Incargar', 'Cargar' ),
+ 'Userlogin' => array( 'Aperir_session', 'Identificar' ),
+ 'Userlogout' => array( 'Clauder_session', 'Disconnecter' ),
+ 'Userrights' => array( 'Derectos_de_usatores' ),
+ 'Wantedcategories' => array( 'Categorias_desirate' ),
+ 'Wantedfiles' => array( 'Files_desirate' ),
+ 'Wantedpages' => array( 'Paginas_desirate', 'Ligamines_rupte' ),
+ 'Wantedtemplates' => array( 'Patronos_desirate' ),
+ 'Watchlist' => array( 'Observatorio' ),
+ 'Whatlinkshere' => array( 'Referentias_a_iste_pagina' ),
'Withoutinterwiki' => array( 'Sin_interwiki' ),
- 'MergeHistory' => array( 'Fusionar_historia' ),
- 'Filepath' => array( 'Cammino_al_file' ),
- 'Invalidateemail' => array( 'Invalidar_e-mail' ),
- 'Blankpage' => array( 'Pagina_vacue' ),
- 'LinkSearch' => array( 'Recerca_de_ligamines' ),
- 'DeletedContributions' => array( 'Contributiones_delite' ),
- 'Tags' => array( 'Etiquettas' ),
- 'Activeusers' => array( 'Usatores_active' ),
- 'ComparePages' => array( 'Comparar_paginas' ),
- 'Badtitle' => array( 'Titulo_invalide' ),
);
$messages = array(
@@ -164,8 +165,8 @@ $messages = array(
'tog-shownumberswatching' => 'Monstrar le numero de usatores que observa le pagina',
'tog-oldsig' => 'Signatura existente:',
'tog-fancysig' => 'Tractar signatura como wikitexto (sin ligamine automatic)',
-'tog-externaleditor' => 'Usar un editor externe qua standard (pro expertos solmente, necessita configuration special in tu computator. [http://www.mediawiki.org/wiki/Manual:External_editors Plus informationes.])',
-'tog-externaldiff' => "Usar un programma ''diff'' externe qua standard (pro expertos solmente, necessita configuration special in tu computator. [http://www.mediawiki.org/wiki/Manual:External_editors Plus informationes.])",
+'tog-externaleditor' => 'Usar un editor externe qua standard (pro expertos solmente, necessita configuration special in tu computator. [//www.mediawiki.org/wiki/Manual:External_editors Plus informationes.])',
+'tog-externaldiff' => "Usar un programma ''diff'' externe qua standard (pro expertos solmente, necessita configuration special in tu computator. [//www.mediawiki.org/wiki/Manual:External_editors Plus informationes.])",
'tog-showjumplinks' => 'Activar ligamines de accessibilitate "saltar a"',
'tog-uselivepreview' => 'Usar previsualisation in directo (require JavaScript) (experimental)',
'tog-forceeditsummary' => 'Avisar me si io non entra un summario de modification',
@@ -262,14 +263,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Paginas indexate',
'noindex-category' => 'Paginas non indexate',
-
-'mainpagetext' => "'''MediaWiki ha essite installate con successo.'''",
-'mainpagedocfooter' => 'Consulta le [http://meta.wikimedia.org/wiki/Help:Contents Guida del usator] pro informationes super le uso del software wiki.
-
-== Pro initiar ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista de configurationes]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ a proposito de MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de diffusion pro annuncios de nove versiones de MediaWiki]',
+'broken-file-category' => 'Paginas con ligamines rupte a files',
'about' => 'A proposito',
'article' => 'Pagina de contento',
@@ -316,15 +310,15 @@ $messages = array(
'help' => 'Adjuta',
'search' => 'Recerca',
'searchbutton' => 'Cercar',
-'go' => 'Ir',
-'searcharticle' => 'Ir',
+'go' => 'Va',
+'searcharticle' => 'Va',
'history' => 'Historia del pagina',
'history_short' => 'Historia',
'updatedmarker' => 'actualisate post mi ultime visita',
-'info_short' => 'Information',
'printableversion' => 'Version imprimibile',
'permalink' => 'Ligamine permanente',
'print' => 'Imprimer',
+'view' => 'Leger',
'edit' => 'Modificar',
'create' => 'Crear',
'editthispage' => 'Modificar iste pagina',
@@ -332,6 +326,7 @@ $messages = array(
'delete' => 'Deler',
'deletethispage' => 'Deler iste pagina',
'undelete_short' => 'Restaurar {{PLURAL:$1|un modification|$1 modificationes}}',
+'viewdeleted_short' => 'Vider {{PLURAL:$1|un modification|$1 modificationes}} delite',
'protect' => 'Proteger',
'protect_change' => 'cambiar',
'protectthispage' => 'Proteger iste pagina',
@@ -415,6 +410,8 @@ $1',
'toc' => 'Contento',
'showtoc' => 'revelar',
'hidetoc' => 'celar',
+'collapsible-collapse' => 'Plicar',
+'collapsible-expand' => 'Displicar',
'thisisdeleted' => 'Vider o restaurar $1?',
'viewdeleted' => 'Vider $1?',
'restorelink' => '{{PLURAL:$1|un modification|$1 modificationes}} delite',
@@ -426,6 +423,8 @@ $1',
'page-rss-feed' => 'Syndication RSS de "$1"',
'page-atom-feed' => 'Syndication Atom de "$1"',
'red-link-title' => '$1 (pagina non existe)',
+'sort-descending' => 'Mitter in ordine descendente',
+'sort-ascending' => 'Mitter in ordine ascendente',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Pagina',
@@ -513,12 +512,13 @@ Per favor reprova post alcun minutas.',
'protectedinterface' => 'Iste pagina contine texto pro le interfacie del software, e es protegite pro impedir le abuso.',
'editinginterface' => "'''Attention:''' Le texto de iste pagina face parte del interfacie pro le software.
Omne modification a iste pagina cambiara le apparentia del interfacie pro altere usatores.
-Pro traductiones, per favor considera usar [http://translatewiki.net/wiki/Main_Page?setlang=ia translatewiki.net], le projecto pro localisar MediaWiki.",
+Pro traductiones, per favor considera usar [//translatewiki.net/wiki/Main_Page?setlang=ia translatewiki.net], le projecto pro localisar MediaWiki.",
'sqlhidden' => '(Consulta SQL non monstrate)',
'cascadeprotected' => 'Iste pagina ha essite protegite contra modificationes, proque illo es includite in le sequente {{PLURAL:$1|pagina, le qual|paginas, le quales}} es protegite usante le option "cascada":
$2',
'namespaceprotected' => "Tu non ha le permission de modificar paginas in le spatio de nomines '''$1'''.",
-'customcssjsprotected' => 'Tu non ha le permission de modificar iste pagina perque illo contine le configuration personal de un altere usator.',
+'customcssprotected' => 'Tu non ha le permission de modificar iste pagina de CSS perque illo contine le configuration personal de un altere usator.',
+'customjsprotected' => 'Tu non ha le permission de modificar iste pagina de JavaScript perque illo contine le configuration personal de un altere usator.',
'ns-specialprotected' => 'Le paginas special non es modificabile.',
'titleprotected' => "Iste titulo ha essite protegite contra creation per [[User:$1|$1]].
Le motivo specificate es ''$2''.",
@@ -556,6 +556,7 @@ Non oblida personalisar tu [[Special:Preferences|preferentias in {{SITENAME}}]].
'createaccount' => 'Crear conto',
'gotaccount' => "Tu jam ha un conto? '''$1'''.",
'gotaccountlink' => 'Aperir session',
+'userlogin-resetlink' => 'Datos de authentication oblidate?',
'createaccountmail' => 'per e-mail',
'createaccountreason' => 'Motivo:',
'badretype' => 'Le duo contrasignos que tu scribeva non es identic.',
@@ -570,13 +571,15 @@ Per favor activa lo, postea aperi un session con tu nove nomine de usator e cont
'nocookieslogin' => "{{SITENAME}} usa ''cookies'' pro mantener le sessiones del usatores.
Tu ha disactivate le functionalitate del ''cookies''.
Per favor activa lo e reprova.",
+'nocookiesfornew' => 'Le conto de usator non esseva create, proque nos non poteva confirmar su origine.
+Verifica que tu ha activate le "cookies", recarga iste pagina e reproba.',
'noname' => 'Tu non specificava un nomine de usator valide.',
'loginsuccesstitle' => 'Session aperite con successo',
'loginsuccess' => "'''Tu es ora authenticate in {{SITENAME}} como \"\$1\".'''",
'nosuchuser' => 'Non existe un usator con le nomine "$1".
In le nomines de usator se distingue inter majusculas e minusculas.
Verifica le orthographia, o [[Special:UserLogin/signup|crea un nove conto]].',
-'nosuchusershort' => 'Non existe un usator con le nomine "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Non existe un usator con le nomine "$1".
Verifica le orthographia.',
'nouserspecified' => 'Tu debe specificar un nomine de usator.',
'login-userblocked' => 'Iste usator es blocate. Apertura de session non permittite.',
@@ -627,13 +630,14 @@ Tu pote ignorar iste message si iste conto ha essite create in error.',
'usernamehasherror' => 'Le nomine de usator non pote continer grillias/cardinales/signos de numero ("#")',
'login-throttled' => 'Tu ha facite troppo de tentativas de identification.
Per favor attende ante de probar lo novemente.',
+'login-abort-generic' => 'Apertura de session non succedite - Abortate',
'loginlanguagelabel' => 'Lingua: $1',
'suspicious-userlogout' => 'Le requesta de clauder le session ha essite refusate proque illo pare haber essite inviate per un navigator o proxy de cache defectuose.',
# E-mail sending
'php-mail-error-unknown' => 'Error incognite in le function mail() de PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Cambiar contrasigno',
'resetpass_announce' => 'Tu ha aperite un session con un codice temporari que tu recipeva in e-mail.
Pro completar le accesso, tu debe definir un nove contrasigno hic:',
@@ -652,6 +656,41 @@ Pro completar le accesso, tu debe definir un nove contrasigno hic:',
Es possibile que tu ha ja cambiate tu contrasigno o requestate un nove contrasigno temporari.',
'resetpass-temp-password' => 'Contrasigno temporari:',
+# Special:PasswordReset
+'passwordreset' => 'Reinitialisar contrasigno',
+'passwordreset-text' => 'Complete iste formulario pro reciper un rememoration in e-mail del datos de tu conto.',
+'passwordreset-legend' => 'Reinitialisar contrasigno',
+'passwordreset-disabled' => 'Le reinitialisation de contrasignos ha essite disactivate in iste wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Entra un del elementos de datos hic infra}}',
+'passwordreset-username' => 'Nomine de usator:',
+'passwordreset-domain' => 'Dominio:',
+'passwordreset-email' => 'Adresse de e-mail:',
+'passwordreset-emailtitle' => 'Detalios del conto in {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Un persona (probabilemente tu, ab le adresse IP $1) requestava un rememoration del
+detalios de tu conto in {{SITENAME}} ($4). Le {{PLURAL:$3|conto|contos}} de usator sequente es
+associate con iste adresse de e-mail:
+
+$2
+
+Iste {{PLURAL:$3|contrasigno|contrasignos}} temporari expirara post {{PLURAL:$5|un die|$5 dies}}.
+Tu deberea ora aperir session e eliger un nove contrasigno. Si un altere persona faceva iste
+requesta, o si tu te ha rememorate tu contrasigno original e non plus
+vole cambiar lo, tu pote ignorar iste message e continuar a usar le ancian
+contrasigno.',
+'passwordreset-emailtext-user' => 'Le usator $1 in {{SITENAME}} requestava un rememoration del detalios de tu conto in {{SITENAME}}
+($4). Le {{PLURAL:$3|conto|contos}} de usator sequente es associate con iste adresse de e-mail:
+
+$2
+
+Iste {{PLURAL:$3|contrasigno|contrasignos}} temporari expirara post {{PLURAL:$5|un die|$5 dies}}.
+Tu deberea ora aperir session e eliger un nove contrasigno. Si un altere persona faceva iste
+requesta, o si tu te ha rememorate tu contrasigno original e non plus
+vole cambiar lo, tu pote ignorar iste message e continuar a usar le ancian
+contrasigno.',
+'passwordreset-emailelement' => 'Nomine de usator: $1
+Contrasigno temporari: $2',
+'passwordreset-emailsent' => 'Un e-mail de rememoration ha essite inviate.',
+
# Edit page toolbar
'bold_sample' => 'Texto grasse',
'bold_tip' => 'Texto grasse',
@@ -663,8 +702,6 @@ Es possibile que tu ha ja cambiate tu contrasigno o requestate un nove contrasig
'extlink_tip' => 'Ligamine externe (non oblida le prefixo http://)',
'headline_sample' => 'Texto del titulo',
'headline_tip' => 'Titulo de nivello 2',
-'math_sample' => 'Inserer formula hic',
-'math_tip' => 'Formula mathematic (LaTeX)',
'nowiki_sample' => 'Inserer texto non formatate hic',
'nowiki_tip' => 'Ignorar formatation wiki',
'image_sample' => 'Exemplo.jpg',
@@ -755,7 +792,7 @@ o [{{fullurl:{{FULLPAGENAME}}|action=edit}} modificar iste pagina]</span>.',
'noarticletext-nopermission' => 'Al momento il non ha texto in iste pagina.
Tu pote [[Special:Search/{{PAGENAME}}|cercar le titulo de iste pagina]] in altere paginas,
o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercar in le registros pertinente].</span>',
-'userpage-userdoesnotexist' => 'Le conto de usator "$1" non es registrate. Per favor verifica que tu vole crear/modificar iste pagina.',
+'userpage-userdoesnotexist' => 'Le conto de usator "<nowiki>$1</nowiki>" non es registrate. Per favor verifica que tu vole crear/modificar iste pagina.',
'userpage-userdoesnotexist-view' => 'Le conto de usator "$1" non es registrate.',
'blocked-notice-logextract' => 'Iste usator es actualmente blocate.
Le ultime entrata del registro de blocadas es reproducite ci infra pro information:',
@@ -795,6 +832,7 @@ Si illo ancora non va, prova [[Special:UserLogout|clauder tu session]] e aperir
'token_suffix_mismatch' => "'''Tu modification ha essite refusate proque tu cliente corrumpeva le characteres de punctuation in le indicio de modification.
Iste refusa es pro evitar le corruption del texto del pagina.
Isto pote occurrer quando tu usa un servicio problematic de ''proxy'' anonyme a base de web.'''",
+'edit_form_incomplete' => "'''Certe partes del formulario de modification non attingeva le servitor; re-verifica que tu modificationes es intacte e reproba.'''",
'editing' => 'Modification de $1',
'editingsection' => 'Modification de $1 (section)',
'editingcomment' => 'Modification de $1 (nove section)',
@@ -1033,7 +1071,7 @@ Per favor verifica le registros.',
# Suppression log
'suppressionlog' => 'Registro de suppressiones',
'suppressionlogtext' => 'Infra es un lista de deletiones e blocadas que involve contento que es celate de administratores.
-Vide le [[Special:IPBlockList|lista de blocadas IP]] pro le lista de bannimentos e blocadas actualmente in operation.',
+Vide le [[Special:BlockList|lista de blocadas IP]] pro le lista de bannimentos e blocadas actualmente in operation.',
# History merging
'mergehistory' => 'Fusionar historias del paginas',
@@ -1145,12 +1183,13 @@ Tu pote cercar via Google in le interim.
Nota que lor indices del contento de {{SITENAME}} pote esser obsolete.',
# Quickbar
-'qbsettings' => 'Barra rapide',
-'qbsettings-none' => 'Necun',
-'qbsettings-fixedleft' => 'Fixe a sinistra',
-'qbsettings-fixedright' => 'Fixe a dextra',
-'qbsettings-floatingleft' => 'Flottante a sinistra',
-'qbsettings-floatingright' => 'Flottante a dextra',
+'qbsettings' => 'Barra rapide',
+'qbsettings-none' => 'Necun',
+'qbsettings-fixedleft' => 'Fixe a sinistra',
+'qbsettings-fixedright' => 'Fixe a dextra',
+'qbsettings-floatingleft' => 'Flottante a sinistra',
+'qbsettings-floatingright' => 'Flottante a dextra',
+'qbsettings-directionality' => 'Fixe, dependente del direction de scriptura de tu lingua',
# Preferences page
'preferences' => 'Preferentias',
@@ -1161,9 +1200,10 @@ Nota que lor indices del contento de {{SITENAME}} pote esser obsolete.',
'changepassword' => 'Cambiar contrasigno',
'prefs-skin' => 'Apparentia',
'skin-preview' => 'Previsualisation',
-'prefs-math' => 'Mathematica',
'datedefault' => 'Nulle preferentia',
+'prefs-beta' => 'Functiones beta',
'prefs-datetime' => 'Data e hora',
+'prefs-labs' => 'Functiones experimental',
'prefs-personal' => 'Profilo del usator',
'prefs-rc' => 'Modificationes recente',
'prefs-watchlist' => 'Observatorio',
@@ -1185,8 +1225,6 @@ Nota que lor indices del contento de {{SITENAME}} pote esser obsolete.',
'columns' => 'Columnas:',
'searchresultshead' => 'Recerca',
'resultsperpage' => 'Resultatos per pagina:',
-'contextlines' => 'Lineas per resultato:',
-'contextchars' => 'Characteres de contexto per linea:',
'stub-threshold' => 'Limite pro formatar le ligamines in <a href="#" class="stub">stilo de peciettas</a> (bytes):',
'stub-threshold-disabled' => 'Disactivate',
'recentchangesdays' => 'Numero de dies a monstrar in modificationes recente:',
@@ -1199,7 +1237,7 @@ Ecce un valor aleatorimente generate que tu pote usar: $1',
'savedprefs' => 'Tu preferentias ha essite confirmate.',
'timezonelegend' => 'Fuso horari:',
'localtime' => 'Hora local:',
-'timezoneuseserverdefault' => 'Usar le hora del servitor',
+'timezoneuseserverdefault' => 'Usar le valor predefinite del wiki ($1)',
'timezoneuseoffset' => 'Altere (specifica le differentia)',
'timezoneoffset' => 'Differentia¹:',
'servertime' => 'Hora del servitor:',
@@ -1248,7 +1286,8 @@ Illo debe haber minus de $1 {{PLURAL:$1|character|characteres}}.',
'email' => 'E-mail',
'prefs-help-realname' => 'Le nomine real es optional.
Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contributiones.',
-'prefs-help-email' => 'Le adresse de e-mail es optional, ma es necessari pro le reinitialisation de tu contrasigno, in caso que tu lo oblida. Tu pote etiam optar pro permitter que altere personas te contacta via tu pagina de usator o de discussion, sin necessitate de revelar tu identitate.',
+'prefs-help-email' => 'Le adresse de e-mail es optional, ma es necessari pro le reinitialisation de tu contrasigno, in caso que tu lo oblida.',
+'prefs-help-email-others' => 'Tu pote etiam optar pro permitter que altere personas te contacta via tu pagina de usator o de discussion, sin necessitate de revelar tu identitate.',
'prefs-help-email-required' => 'Le adresse de e-mail es requirite.',
'prefs-info' => 'Informationes de base',
'prefs-i18n' => 'Internationalisation',
@@ -1373,15 +1412,15 @@ Si tu opta pro dar lo, isto essera usate pro dar te attribution pro tu contribut
'right-userrights' => 'Modificar tote le derectos de usator',
'right-userrights-interwiki' => 'Modificar le derectos de usatores in altere wikis',
'right-siteadmin' => 'Blocar e disblocar le base de datos',
-'right-reset-passwords' => 'Redefinir le contrasigno de altere usatores',
'right-override-export-depth' => 'Exportar paginas includente paginas ligate usque a un profunditate de 5',
'right-sendemail' => 'Inviar e-mail a altere 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',
-'rightsnone' => '(nulle)',
+'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',
+'rightsnone' => '(nulle)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'leger iste pagina',
@@ -1504,13 +1543,13 @@ Vide le [[Special:NewFiles|galeria de nove files]] pro un presentation plus visu
'illegalfilename' => 'Le nomine de file "$1" contine characteres que non es permittite in le titulos de paginas.
Per favor renomina le file e tenta re-incargar lo.',
'badfilename' => 'Le nomine del imagine esseva cambiate a "$1".',
-'filetype-mime-mismatch' => 'Le extension del nomine del file non corresponde al typo MIME.',
+'filetype-mime-mismatch' => 'Le extension del nomine del file ".$1" non corresponde a su typo MIME detegite ($2).',
'filetype-badmime' => 'Non es permittite incargar files del typo MIME "$1".',
'filetype-bad-ie-mime' => 'Non pote incargar iste file proque Internet Explorer lo detegerea como "$1", le qual es un typo de file prohibite e potentialmente periculose.',
'filetype-unwanted-type' => "'''\".\$1\"''' es un typo de file non desirate.
Le {{PLURAL:\$3|typo|typos}} de file preferite es \$2.",
-'filetype-banned-type' => "Le typo de file '''\".\$1\"''' non es permittite.
-Le {{PLURAL:\$3|typo|typos}} de file permittite es \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' non es {{PLURAL:$4|un typo|typos}} de file permittite.
+Le {{PLURAL:$3|typo|typos}} de file permittite es $2.',
'filetype-missing' => 'Le nomine del file non ha un extension (como ".jpg").',
'empty-file' => 'Le file submittite es vacue',
'file-too-large' => 'Le file submittite es troppo grande',
@@ -1529,6 +1568,7 @@ iste file occupa $2.',
'emptyfile' => 'Le file que tu incargava pare esser vacue.
Isto pote esser debite a un error in le nomine del file.
Per favor verifica que tu realmente vole incargar iste file.',
+'windows-nonascii-filename' => 'Iste wiki non supporta nomines de file con characteres special.',
'fileexists' => "Un file con iste nomine existe ja.
Per favor verifica '''<tt>[[:$1]]</tt>''' si tu non es secur de voler cambiar lo.
[[$1|thumb]]",
@@ -1564,6 +1604,8 @@ Si tu vole totevia incargar iste file, per favor retorna e usa un nove nomine. [
'php-uploaddisabledtext' => 'Le incargamento de files PHP es disactivate. Per favor verifica le configuration file_uploads.',
'uploadscripted' => 'Iste file contine codice de HTML o de script que pote esser interpretate erroneemente per un navigator del web.',
'uploadvirus' => 'Le file contine un virus! Detalios: $1',
+'uploadjava' => 'Iste file es un archivo ZIP que contine un file .class de Java.
+Non es permittite incargar files Java, proque istes pote contornar le restrictiones de securitate.',
'upload-source' => 'File de origine',
'sourcefilename' => 'Nomine del file de origine:',
'sourceurl' => 'URL de origine:',
@@ -1574,10 +1616,6 @@ Si tu vole totevia incargar iste file, per favor retorna e usa un nove nomine. [
'watchthisupload' => 'Observar iste file',
'filewasdeleted' => 'Un file con iste nomine ha anteriormente essite incargate e postea delite.
Tu debe verificar le $1 ante de re-incargar lo de novo.',
-'upload-wasdeleted' => "'''Attention: Tu es super le puncto de incargar un file que esseva anteriormente delite.'''
-
-Tu deberea considerar si es appropriate continuar a incargar iste file.
-Pro major commoditate se trova hic le registro de deletiones correspondente a iste file:",
'filename-bad-prefix' => "Le nomine del file que tu es super le puncto de incargar comencia con '''\"\$1\"''', le qual es un nomine non descriptive, typicamente assignate automaticamente per le cameras digital.
Per favor selige un nomine plus descriptive pro tu file.",
'filename-prefix-blacklist' => ' #<!-- non modificar de alcun modo iste linea --> <pre>
@@ -1616,12 +1654,29 @@ Si le problema persiste, contacta un [[Special:ListUsers/sysop|administrator]].'
'upload-unknown-size' => 'Dimension incognite',
'upload-http-error' => 'Un error HTTP occurreva: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Un error esseva incontrate durante le apertura del file pro verification de ZIP.',
+'zip-wrong-format' => 'Le file specificate non es un file ZIP.',
+'zip-bad' => 'Iste file es un archivo ZIP defectuose o alteremente illegibile.
+Un verification correcte de su securitate es impossibile.',
+'zip-unsupported' => 'Iste file es un archivo ZIP que usa functionalitate de ZIP non supportate per MediaWiki.
+Un verification correcte de su securitate es impossibile.',
+
+# Special:UploadStash
+'uploadstash' => 'Pila de files incargate',
+'uploadstash-summary' => 'Iste pagina forni accesso al files que ha essite incargate (o que es in le processo de incargamento) ma non es ancora publicate in le wiki. Iste files es solmente visibile pro le usator qui los incargava.',
+'uploadstash-clear' => 'Rader le pila de files incargate',
+'uploadstash-nofiles' => 'Il non ha files in le pila.',
+'uploadstash-badtoken' => 'Le execution de iste action non succedeva, forsan proque le datos del session expirava. Tenta lo de novo.',
+'uploadstash-errclear' => 'Le radimento del files non succedeva.',
+'uploadstash-refresh' => 'Refrescar le lista de files',
+
# img_auth script messages
'img-auth-accessdenied' => 'Accesso refusate',
-'img-auth-nopathinfo' => 'PATH_INFO mancante.
+'img-auth-nopathinfo' => 'PATH_INFO manca.
Le servitor non ha essite configurate pro passar iste information.
Illo pote esser basate super CGI e non pote supportar img_auth.
-Vide http://www.mediawiki.org/wiki/Manual:Image_Authorization .',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Vide: Autorisation de imagines.]',
'img-auth-notindir' => 'Le cammino requestate non es in le directorio de incargamentos configurate.',
'img-auth-badtitle' => 'Impossibile construer un titulo valide ex "$1".',
'img-auth-nologinnWL' => 'Tu non ha aperite un session e "$1" non es in le lista blanc.',
@@ -1699,7 +1754,7 @@ Le sequente lista monstra le {{PLURAL:$1|prime pagina|prime $1 paginas}} que pun
Un [[Special:WhatLinksHere/$2|lista complete]] es disponibile.',
'nolinkstoimage' => 'Nulle pagina usa iste file.',
'morelinkstoimage' => 'Vider [[Special:WhatLinksHere/$1|plus ligamines]] a iste file.',
-'redirectstofile' => 'Le sequente {{PLURAL:$1|file|$1 files}} se redirige a iste file:',
+'linkstoimage-redirect' => '$1 (redirection de file) $2',
'duplicatesoffile' => 'Le sequente {{PLURAL:$1|file es un duplicato|$1 files es duplicatos}} de iste file ([[Special:FileDuplicateSearch/$2|plus detalios]]):',
'sharedupload' => 'Iste file proveni de $1 e pote esser usate per altere projectos.',
'sharedupload-desc-there' => 'Iste file proveni de $1 e pote esser usate per altere projectos.
@@ -1789,18 +1844,19 @@ Memora verificar que non existe altere ligamines al patronos ante que tu los del
'statistics-users-active-desc' => 'Usatores qui ha facite un action durante le {{PLURAL:$1|die|$1 dies}} passate',
'statistics-mostpopular' => 'Le paginas plus visitate',
-'disambiguations' => 'Paginas de disambiguation',
+'disambiguations' => 'Paginas con ligamines a paginas de disambiguation',
'disambiguationspage' => 'Template:Disambiguation',
'disambiguations-text' => "Le sequente paginas ha ligamines a un '''pagina de disambiguation'''.
Istes deberea esser reimplaciate con ligamines al topicos appropriate.<br />
Un pagina se tracta como pagina de disambiguation si illo usa un patrono al qual [[MediaWiki:Disambiguationspage]] ha un ligamine.",
-'doubleredirects' => 'Redirectiones duple',
-'doubleredirectstext' => 'Iste pagina lista paginas de redirection verso altere paginas de redirection.
+'doubleredirects' => 'Redirectiones duple',
+'doubleredirectstext' => 'Iste pagina lista paginas de redirection verso altere paginas de redirection.
Cata linea contine ligamines al prime e al secunde redirection, con le destination del secunde redirection. Iste es normalmente le "ver" pagina de destination, al qual le prime redirection tamben deberea punctar.
Le entratas <del>cancellate</del> ha essite resolvite.',
-'double-redirect-fixed-move' => '[[$1]] ha essite renominate, illo es ora un redirection verso [[$2]]',
-'double-redirect-fixer' => 'Corrector de redirectiones',
+'double-redirect-fixed-move' => '[[$1]] ha essite renominate, illo es ora un redirection verso [[$2]]',
+'double-redirect-fixed-maintenance' => 'Corrige redirection duple de [[$1]] a [[$2]].',
+'double-redirect-fixer' => 'Corrector de redirectiones',
'brokenredirects' => 'Redirectiones rupte',
'brokenredirectstext' => 'Le sequente redirectiones mena a paginas non existente:',
@@ -1878,17 +1934,18 @@ executar iste function.',
'pager-newer-n' => '{{PLURAL:$1|1 plus recente|$1 plus recente}}',
'pager-older-n' => '{{PLURAL:$1|1 minus recente|$1 minus recente}}',
'suppress' => 'Supervisor',
+'querypage-disabled' => 'Iste pagina special es disactivate pro evitar de supercargar le systema.',
# Book sources
'booksources' => 'Fontes de libros',
'booksources-search-legend' => 'Cercar fontes de libros',
-'booksources-go' => 'Ir',
+'booksources-go' => 'Va',
'booksources-text' => 'Infra es un lista de ligamines a altere sitos que vende libros nove e usate, e pote etiam haber altere informationes super libros que tu cerca:',
'booksources-invalid-isbn' => 'Le ISBN date non pare esser valide; verifica que tu non ha facite errores copiante lo del fonte original.',
# Special:Log
-'specialloguserlabel' => 'Usator:',
-'speciallogtitlelabel' => 'Titulo:',
+'specialloguserlabel' => 'Executor:',
+'speciallogtitlelabel' => 'Objectivo (titulo o usator):',
'log' => 'Registros',
'all-logs-page' => 'Tote le registros public',
'alllogstext' => 'Presentation combinate de tote le registros disponibile de {{SITENAME}}.
@@ -1908,7 +1965,7 @@ Pro restringer le presentation, selige un typo de registro, le nomine de usator
'allnotinnamespace' => 'Tote le paginas (non in le spatio de nomines $1)',
'allpagesprev' => 'Previe',
'allpagesnext' => 'Sequente',
-'allpagessubmit' => 'Ir',
+'allpagessubmit' => 'Va',
'allpagesprefix' => 'Monstrar le paginas con prefixo:',
'allpagesbadtitle' => 'Le titulo de pagina date es invalide o ha un prefixo interlingual o interwiki.
Es possibile que illo contine un o plus characteres que non pote esser usate in titulos.',
@@ -1929,12 +1986,13 @@ Vide etiam le [[Special:WantedCategories|categorias desirate]].',
'sp-deletedcontributions-contribs' => 'contributiones',
# Special:LinkSearch
-'linksearch' => 'Ligamines externe',
+'linksearch' => 'Recerca de ligamines externe',
'linksearch-pat' => 'Patrono a cercar:',
'linksearch-ns' => 'Spatio de nomines:',
'linksearch-ok' => 'Cercar',
-'linksearch-text' => 'Es possibile usar metacharacteres como in "*.wikipedia.org".<br />
-Protocollos supportate: <tt>$1</tt>',
+'linksearch-text' => 'Es possibile usar metacharacteres como in "*.wikipedia.org".
+Necessita al minus un dominio de nivello superior, per exemplo "*.org".<br />
+Protocollos supportate: <tt>$1</tt> (non include alcun de istes in tu recerca).',
'linksearch-line' => '$1 ligate ab $2',
'linksearch-error' => 'Le metacharacteres pote apparer solmente al initio del nomine de host.',
@@ -1998,6 +2056,10 @@ como le adresse del expeditor del e-mail, de modo que le destinatario pote respo
'noemailtext' => 'Iste usator non ha specificate un adresse de e-mail valide.',
'nowikiemailtitle' => 'E-mail non permittite',
'nowikiemailtext' => 'Iste usator ha optate pro non reciper e-mail de altere usatores.',
+'emailnotarget' => 'Nomine de usator inexistente o invalide pro le destinatario.',
+'emailtarget' => 'Entra le nomine de usator del destinatario.',
+'emailusername' => 'Nomine de usator:',
+'emailusernamesubmit' => 'Submitter',
'email-legend' => 'Inviar e-mail a un altere usator de {{SITENAME}}',
'emailfrom' => 'Expeditor:',
'emailto' => 'Destinatario:',
@@ -2022,12 +2084,12 @@ como le adresse del expeditor del e-mail, de modo que le destinatario pote respo
'watchlistanontext' => 'Tu debe $1 pro poter vider o modificar entratas in tu observatorio.',
'watchnologin' => 'Tu non ha aperite un session',
'watchnologintext' => 'Tu debe [[Special:UserLogin|aperir un session]] pro modificar tu observatorio.',
-'addedwatch' => 'Addite al observatorio',
+'addwatch' => 'Adder al observatorio',
'addedwatchtext' => "Le pagina \"[[:\$1]]\" ha essite addite a tu [[Special:Watchlist|observatorio]].
Le modificationes futur in iste pagina e in su pagina de discussion essera listate ibi,
e le pagina apparera '''in litteras grasse''' in le [[Special:RecentChanges|lista de modificationes recente]] pro
render lo plus facile de deteger.",
-'removedwatch' => 'Removite del observatorio',
+'removewatch' => 'Remover del observatorio',
'removedwatchtext' => 'Le pagina "[[:$1]]" ha essite removite de [[Special:Watchlist|tu observatorio]].',
'watch' => 'Observar',
'watchthispage' => 'Observar iste pagina',
@@ -2048,8 +2110,9 @@ render lo plus facile de deteger.",
'watchlist-options' => 'Optiones del observatorio',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Observation in curso...',
-'unwatching' => 'Disobservation in curso...',
+'watching' => 'Observation in curso...',
+'unwatching' => 'Disobservation in curso...',
+'watcherrortext' => 'Un error occurreva durante le modification del configuration de tu observatorio pro "$1".',
'enotif_mailer' => 'Systema de notification via e-mail de {{SITENAME}}',
'enotif_reset' => 'Marcar tote le paginas como visitate',
@@ -2081,16 +2144,16 @@ Como alternativa tu pote reinitialisar le optiones de notification pro tote le p
--
Pro configurar le notification per e-mail, visita
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Pro configurar le observatorio, visita
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Pro retirar le pagina de tu observatorio, visita
$UNWATCHURL
Feedback e ulterior assistentia:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Deler pagina',
@@ -2106,7 +2169,7 @@ Feedback e ulterior assistentia:
Per favor confirma que tu ha le intention de facer isto, que tu comprende le consequentias, e que tu face isto in accordo con [[{{MediaWiki:Policy-url}}|le politicas]].',
'actioncomplete' => 'Action complete',
'actionfailed' => 'Action fallite',
-'deletedtext' => '"<nowiki>$1</nowiki>" ha essite delite.
+'deletedtext' => '"$1" ha essite delite.
Vide $2 pro un registro de deletiones recente.',
'deletedarticle' => 'deleva "[[$1]]"',
'suppressedarticle' => 'supprimeva "[[$1]]"',
@@ -2168,7 +2231,7 @@ Vide le [[Special:ProtectedPages|lista de paginas protegite]] pro le lista de pr
'protect_expiry_invalid' => 'Le tempore de expiration es invalide.',
'protect_expiry_old' => 'Le tempore de expiration es in le passato.',
'protect-unchain-permissions' => 'Disblocar ulterior optiones de protection',
-'protect-text' => "In basso tu pote vider e modificar le nivello de protection del pagina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "In basso tu pote vider e modificar le nivello de protection del pagina '''$1'''.",
'protect-locked-blocked' => "Tu non pote cambiar le nivellos de protection durante que tu es blocate.
Ecce le configurationes actual del pagina '''$1''':",
'protect-locked-dblock' => "Le nivellos de protection non pote esser cambiate proque es active un blocada del base de datos.
@@ -2223,9 +2286,8 @@ Tu pote cambiar le nivello de protection de iste pagina, ma isto non cambiara le
'undeletepagetext' => 'Le {{PLURAL:$1|pagina|paginas}} sequente ha essite delite, sed es ancora in le archivo e pote esser restaurate.
Le archivo pote esser vacuate periodicamente.',
'undelete-fieldset-title' => 'Restaurar versiones',
-'undeleteextrahelp' => "Pro restaurar le historia integre del pagina, lassa tote le quadratos dismarcate e clicca '''''Restaurar'''''.
-Pro executar un restauration selective, marca le quadratos correspondente al versiones pro restaurar, e clicca '''''Restaurar'''''.
-Le button '''''Reinitialisar''''' face rader le campo de commento e tote le quadratos.",
+'undeleteextrahelp' => "Pro restaurar le historia integre del pagina, lassa tote le quadratos dismarcate e clicca super '''''{{int:undeletebtn}}'''''.
+Pro executar un restauration selective, marca le quadratos correspondente al versiones a restaurar, e clicca super '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|version|versiones}} archivate',
'undeletehistory' => 'Si tu restaura un pagina, tote le versiones essera restaurate al historia.
Si un nove pagina con le mesme nomine ha essite create post le deletion, le versiones
@@ -2272,9 +2334,12 @@ $1',
'undelete-show-file-submit' => 'Si',
# Namespace form on various pages
-'namespace' => 'Spatio de nomine:',
-'invert' => 'Inverter selection',
-'blanknamespace' => '(Principal)',
+'namespace' => 'Spatio de nomine:',
+'invert' => 'Inverter selection',
+'tooltip-invert' => 'Marca iste quadrato pro celar le modificationes in paginas intra le spatio de nomines seligite (e le spatio de nomines associate, si tal option es seligite)',
+'namespace_association' => 'Spatio de nomines associate',
+'tooltip-namespace_association' => 'Marca iste quadrato pro includer anque le spatio de nomines de discussion o de subjecto associate al spatio de nomines seligite',
+'blanknamespace' => '(Principal)',
# Contributions
'contributions' => 'Contributiones del usator',
@@ -2323,6 +2388,9 @@ Le ultime entrata del registro de blocadas es reproducite hic infra pro informat
'whatlinkshere-filters' => 'Filtros',
# Block/unblock
+'autoblockid' => 'Auto-blocada â„–$1',
+'block' => 'Blocar usator',
+'unblock' => 'Disblocar usator',
'blockip' => 'Blocar usator',
'blockip-title' => 'Blocar usator',
'blockip-legend' => 'Blocar usator',
@@ -2332,7 +2400,6 @@ Isto debe esser facite solmente pro impedir vandalismo, e de
accordo con le [[{{MediaWiki:Policy-url}}|politica de {{SITENAME}}]].
Scribe un motivo specific infra (per exemplo, citante paginas
specific que ha essite vandalisate).',
-'ipaddress' => 'Adresse IP:',
'ipadressorusername' => 'Adresse IP o nomine de usator:',
'ipbexpiry' => 'Expiration:',
'ipbreason' => 'Motivo:',
@@ -2345,7 +2412,7 @@ specific que ha essite vandalisate).',
** Comportamento intimidatori/molestation
** Abuso de contos multiple
** Nomine de usator inacceptabile",
-'ipbanononly' => 'Blocar solmente usatores anonyme',
+'ipb-hardblock' => 'Impedir le usatores authenticate de facer modificationes ab iste adresse IP',
'ipbcreateaccount' => 'Impedir creation de contos',
'ipbemailban' => 'Impedir que le usator invia e-mail',
'ipbenableautoblock' => 'Blocar automaticamente le adresse IP usate le plus recentemente per iste usator, e omne IPs successive desde le quales ille/-a tenta facer modificationes',
@@ -2356,12 +2423,15 @@ specific que ha essite vandalisate).',
'ipbotherreason' => 'Motivo altere/additional:',
'ipbhidename' => 'Celar le nomine del usator del modificationes e del listas',
'ipbwatchuser' => 'Observar le paginas de usator e de discussion de iste usator',
-'ipballowusertalk' => 'Permitter que iste usator modifica su proprie pagina de discussion in despecto de esser blocate',
+'ipb-disableusertalk' => 'Impedir iste usator de modificar su proprie pagina de discussion durante que ille es blocate',
'ipb-change-block' => 'Reblocar le usator con iste configurationes',
+'ipb-confirm' => 'Confirmar blocada',
'badipaddress' => 'Adresse IP mal formate.',
'blockipsuccesssub' => 'Blocada succedite',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ha essite blocate.<br />
Vide le [[Special:IPBlockList|lista de adresses IP blocate]] pro revider le blocadas.',
+'ipb-blockingself' => 'Tu sta super le puncto de blocar te mesme! Es tu secur de voler facer isto?',
+'ipb-confirmhideuser' => 'Tu es super le puncto de blocar un usator con le option "celar usator" activate. Isto supprimera le nomine del usator in tote le listas e entratas de registro. Es tu secur de voler facer isto?',
'ipb-edit-dropdown' => 'Modificar le motivos pro blocar',
'ipb-unblock-addr' => 'Disblocar $1',
'ipb-unblock' => 'Disblocar un nomine de usator o un adresse IP',
@@ -2372,17 +2442,23 @@ Vide le [[Special:IPBlockList|lista de adresses IP blocate]] pro revider le bloc
a un adresse IP blocate previemente.',
'ipusubmit' => 'Cancellar iste blocada',
'unblocked' => '[[User:$1|$1]] ha essite disblocate',
+'unblocked-range' => '$1 ha essite disblocate',
'unblocked-id' => 'Le blocada $1 ha essite eliminate',
+'blocklist' => 'Usatores blocate',
'ipblocklist' => 'Usatores blocate',
'ipblocklist-legend' => 'Cercar un usator blocate',
-'ipblocklist-username' => 'Nomine de usator o adresse IP:',
-'ipblocklist-sh-userblocks' => '$1 blocadas de contos',
-'ipblocklist-sh-tempblocks' => '$1 blocadas temporari',
-'ipblocklist-sh-addressblocks' => '$1 blocadas de singule adresses IP',
+'blocklist-userblocks' => 'Celar blocadas de conto',
+'blocklist-tempblocks' => 'Celar blocadas temporari',
+'blocklist-addressblocks' => 'Celar blocadas de singule adresse IP',
+'blocklist-timestamp' => 'Data e hora',
+'blocklist-target' => 'Objectivo',
+'blocklist-expiry' => 'Expira',
+'blocklist-by' => 'Blocate per',
+'blocklist-params' => 'Parametros del blocada',
+'blocklist-reason' => 'Motivo',
'ipblocklist-submit' => 'Cercar',
'ipblocklist-localblock' => 'Blocada local',
'ipblocklist-otherblocks' => 'Altere {{PLURAL:$1|blocada|blocadas}}',
-'blocklistline' => '$1, $2 blocava $3 ($4)',
'infiniteblock' => 'infinite',
'expiringblock' => 'expira le $1 a $2',
'anononlyblock' => 'anon. solmente',
@@ -2405,7 +2481,7 @@ Le motivo specificate pro le blocada de $1 es: "$2"',
'reblock-logentry' => 'cambiava configurationes de blocada pro [[$1]] con un tempore de expiration de $2 $3',
'blocklogtext' => 'Isto es un registro de blocadas e disblocadas de usatores.
Le adresses IP automaticamente blocate non es includite.
-Vide le [[Special:IPBlockList|lista de blocadas IP]] pro le lista de bannimentos e blocadas actualmente in operation.',
+Vide le [[Special:BlockList|lista de blocadas IP]] pro le lista de bannimentos e blocadas actualmente in operation.',
'unblocklogentry' => 'disblocava $1',
'block-log-flags-anononly' => 'usatores anonyme solmente',
'block-log-flags-nocreate' => 'creation de contos disactivate',
@@ -2419,9 +2495,9 @@ Vide le [[Special:IPBlockList|lista de blocadas IP]] pro le lista de bannimentos
'ipb_expiry_temp' => 'Le blocadas de nomines de usator celate debe esser permanente.',
'ipb_hide_invalid' => 'Impossibile supprimer iste conto; illo pote haber troppo de modificationes.',
'ipb_already_blocked' => '"$1" es ja blocate',
-'ipb-needreblock' => '== Ja blocate ==
-$1 es ja blocate. Esque tu vole cambiar le configurationes?',
+'ipb-needreblock' => '$1 es ja blocate. Esque tu vole cambiar le configurationes?',
'ipb-otherblocks-header' => 'Altere {{PLURAL:$1|blocada|blocadas}}',
+'unblock-hideuser' => 'Tu non pote disblocar iste usator, proque su nomine de usator ha essite celate.',
'ipb_cant_unblock' => 'Error: ID de blocada $1 non trovate. Es possibile que illo ha ja essite disblocate.',
'ipb_blocked_as_range' => 'Error: Le IP $1 non es blocate directemente e non pote esser disblocate.
Illo es, nonobstante, blocate como parte del intervallo $2, le qual pote esser disblocate.',
@@ -2466,6 +2542,7 @@ Per favor confirma que isto es tu intention.',
'lockfilenotwritable' => 'Impossibile scriber al file de blocada del base de datos.
Pro blocar o disblocar le base de datos, le servitor web debe poter scriber a iste file.',
'databasenotlocked' => 'Le base de datos non es blocate.',
+'lockedbyandtime' => '(per $1 le $2 a $3)',
# Move page
'move-page' => 'Renominar $1',
@@ -2588,7 +2665,7 @@ In le secunde caso tu pote etiam usar un ligamine, p.ex. [[{{#Special:Export}}/{
'allmessagesdefault' => 'Texto predefinite',
'allmessagescurrent' => 'Texto actual',
'allmessagestext' => 'Isto es un lista de messages de systema disponibile in le spatio de nomines MediaWiki.
-Per favor visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] si tu desira contribuer al localisation general de MediaWiki.',
+Per favor visita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] si tu desira contribuer al localisation general de MediaWiki.',
'allmessagesnotsupportedDB' => "Iste pagina non pote esser usate proque '''\$wgUseDatabaseMessages''' ha essite disactivate.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtrar per stato de personalisation:',
@@ -2597,7 +2674,7 @@ Per favor visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisat
'allmessages-filter-modified' => 'Modificate',
'allmessages-prefix' => 'Filtrar per prefixo:',
'allmessages-language' => 'Lingua:',
-'allmessages-filter-submit' => 'Ir',
+'allmessages-filter-submit' => 'Va',
# Thumbnails
'thumbnail-more' => 'Aggrandir',
@@ -2754,9 +2831,7 @@ Es possibile adder un motivo in le summario.',
'vector.js' => '/* Omne JavaScript hic se executara pro le usatores del apparentia Vector */',
# Metadata
-'nodublincore' => 'Le metadatos Dublin Core RDF ha essite disactivate in iste servitor.',
-'nocreativecommons' => 'Le metadatos Creative Commons RDF ha essite disactivate in iste servitor.',
-'notacceptable' => 'Le servitor wiki non pote provider datos in un formato que tu cliente sape leger.',
+'notacceptable' => 'Le servitor wiki non pote provider datos in un formato que tu cliente sape leger.',
# Attribution
'anonymous' => '{{PLURAL:$1|Usator|Usatores}} anonyme de {{SITENAME}}',
@@ -2780,12 +2855,17 @@ Le causa es probabilemente un ligamine verso un sito externe que es presente in
'spam_blanking' => 'Tote le versiones contineva ligamines a $1. Le pagina ha essite vacuate.',
# Info page
-'infosubtitle' => 'Informationes del pagina',
-'numedits' => 'Numero de modificationes (pagina): $1',
-'numtalkedits' => 'Numero de modificationes (pagina de discussion): $1',
-'numwatchers' => 'Numero de observatores: $1',
-'numauthors' => 'Numero de autores distincte (pagina): $1',
-'numtalkauthors' => 'Numero de autores distincte (pagina de discussion): $1',
+'pageinfo-title' => 'Informationes pro "$1"',
+'pageinfo-header-edits' => 'Modificationes',
+'pageinfo-header-watchlist' => 'Observatorio',
+'pageinfo-header-views' => 'Visitas',
+'pageinfo-subjectpage' => 'Pagina',
+'pageinfo-talkpage' => 'Discussion',
+'pageinfo-watchers' => 'Numero de observatores',
+'pageinfo-edits' => 'Numero de modificationes',
+'pageinfo-authors' => 'Numero de autores distincte',
+'pageinfo-views' => 'Numero de visitas',
+'pageinfo-viewsperedit' => 'Visitas per modification',
# Skin names
'skinname-standard' => 'Classic',
@@ -2797,27 +2877,6 @@ Le causa es probabilemente un ligamine verso un sito externe que es presente in
'skinname-simple' => 'Simple',
'skinname-modern' => 'Moderne',
-# Math options
-'mw_math_png' => 'Sempre producer PNG',
-'mw_math_simple' => 'HTML si multo simple, alteremente PNG',
-'mw_math_html' => 'HTML si possibile, alteremente PNG',
-'mw_math_source' => 'Lassa lo como TeX (pro navigatores in modo texto)',
-'mw_math_modern' => 'Recommendate pro navigatores moderne',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'Error durante le analyse del syntaxe',
-'math_unknown_error' => 'error incognite',
-'math_unknown_function' => 'function incognite',
-'math_lexing_error' => 'error lexic',
-'math_syntax_error' => 'error de syntaxe',
-'math_image_error' => 'Le conversion in PNG ha fallite;
-verifica le installation del programmas \'\'latex" e "dvipng" (o "dvips" + "gs" + \'\'convert\'\').',
-'math_bad_tmpdir' => 'Non pote scriber in o crear le directorio temporari "math".',
-'math_bad_output' => 'Non pote scriber in o crear le directorio de output "math".',
-'math_notexvc' => "Le executabile ''texvc'' manca;
-per favor vide math/README pro configurar lo.",
-
# Patrolling
'markaspatrolleddiff' => 'Marcar como patruliate',
'markaspatrolledtext' => 'Marcar iste pagina como patruliate',
@@ -2853,22 +2912,25 @@ $1',
'nextdiff' => 'Version plus nove →',
# Media information
-'mediawarning' => "'''Attention''': Iste typo de file pote continer codice maligne.
+'mediawarning' => "'''Attention''': Iste typo de file pote continer codice maligne.
Le execution de illo pote compromitter le securitate de tu systema.",
-'imagemaxsize' => "Dimension maxime de imagines:<br />''(pro paginas de description de files)''",
-'thumbsize' => 'Dimension del miniaturas:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagina|paginas}}',
-'file-info' => 'grandor del file: $1, typo MIME: $2',
-'file-info-size' => '$1 × $2 pixel, grandor del file: $3, typo MIME: $4',
-'file-nohires' => '<small>Non disponibile in resolution plus alte.</small>',
-'svg-long-desc' => 'File SVG, dimensiones nominal: $1 × $2 pixels, grandor del file: $3',
-'show-big-image' => 'Plen resolution',
-'show-big-image-thumb' => '<small>Dimensiones de iste previsualisation: $1 × $2 pixels</small>',
-'file-info-gif-looped' => 'repetente',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|photogramma|photogrammas}}',
-'file-info-png-looped' => 'repetente',
-'file-info-png-repeat' => 'repetite $1 {{PLURAL:$1|vice|vices}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|photogramma|photogrammas}}',
+'imagemaxsize' => "Dimension maxime de imagines:<br />''(pro paginas de description de files)''",
+'thumbsize' => 'Dimension del miniaturas:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagina|paginas}}',
+'file-info' => 'grandor del file: $1, typo MIME: $2',
+'file-info-size' => '$1 × $2 pixel, grandor del file: $3, typo MIME: $4',
+'file-info-size-pages' => '$1 × $2 pixels, dimension del file: $3, typo MIME: $4, $5 {{PLURAL:$5|pagina|paginas}}',
+'file-nohires' => '<small>Non disponibile in resolution plus alte.</small>',
+'svg-long-desc' => 'File SVG, dimensiones nominal: $1 × $2 pixels, grandor del file: $3',
+'show-big-image' => 'Plen resolution',
+'show-big-image-preview' => '<small> Dimension de iste previsualisation: $1.</small>',
+'show-big-image-other' => '<small>Altere resolutiones: $1.</small>',
+'show-big-image-size' => '$1 × $2 pixels',
+'file-info-gif-looped' => 'repetente',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|photogramma|photogrammas}}',
+'file-info-png-looped' => 'repetente',
+'file-info-png-repeat' => 'repetite $1 {{PLURAL:$1|vice|vices}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|photogramma|photogrammas}}',
# Special:NewFiles
'newimages' => 'Galeria de nove files',
@@ -2895,7 +2957,7 @@ Omne ligamines posterior in le mesme linea es considerate como exceptiones, i.e.
Si le file ha essite modificate ab su stato original, es possibile que alcun detalios non reflecte completemente le file modificate.',
'metadata-expand' => 'Revelar detalios extense',
'metadata-collapse' => 'Celar detalios extense',
-'metadata-fields' => 'Le campos de metadatos EXIF listate in iste message essera includite in le visualisation del pagina de imagine quando le tabula de metadatos es collabite.
+'metadata-fields' => 'Le campos de metadatos de imagine listate in iste message essera includite in le visualisation del pagina de imagine quando le tabula de metadatos es plicate.
Le alteres essera initialmente celate.
* make
* model
@@ -2903,7 +2965,13 @@ Le alteres essera initialmente celate.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Latitude',
@@ -2918,13 +2986,11 @@ Le alteres essera initialmente celate.
'exif-ycbcrpositioning' => 'Positionamento Y e C',
'exif-xresolution' => 'Resolution horizontal',
'exif-yresolution' => 'Resolution vertical',
-'exif-resolutionunit' => 'Unitate de resolution X e Y',
'exif-stripoffsets' => 'Location del datos del imagine',
'exif-rowsperstrip' => 'Numero de lineas per banda',
'exif-stripbytecounts' => 'Bytes per banda comprimite',
'exif-jpeginterchangeformat' => 'Position de JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytes del datos JPEG',
-'exif-transferfunction' => 'Function de transferimento',
'exif-whitepoint' => 'Chromaticitate del puncto blanc',
'exif-primarychromaticities' => 'Chromaticitates del colores primari',
'exif-ycbcrcoefficients' => 'Coefficientes del matrice de transformation del spatio de colores',
@@ -2943,7 +3009,6 @@ Le alteres essera initialmente celate.
'exif-compressedbitsperpixel' => 'Modo de compression del imagine',
'exif-pixelydimension' => 'Latitude del imagine',
'exif-pixelxdimension' => 'Altitude del imagine',
-'exif-makernote' => 'Notas del fabricante',
'exif-usercomment' => 'Commentos del usator',
'exif-relatedsoundfile' => 'File audio connexe',
'exif-datetimeoriginal' => 'Data e hora del generation del datos',
@@ -2957,7 +3022,6 @@ Le alteres essera initialmente celate.
'exif-exposureprogram' => 'Programma de exposition',
'exif-spectralsensitivity' => 'Sensibilitate spectral',
'exif-isospeedratings' => 'Classification de velocitate ISO',
-'exif-oecf' => 'Factor de conversion optoelectronic',
'exif-shutterspeedvalue' => 'Velocitate del obturator in unitates APEX',
'exif-aperturevalue' => 'Latitude del apertura in unitates APEX',
'exif-brightnessvalue' => 'Luminositate in unitates APEX',
@@ -2970,7 +3034,6 @@ Le alteres essera initialmente celate.
'exif-focallength' => 'Longitude focal del lente',
'exif-subjectarea' => 'Area de subjecto',
'exif-flashenergy' => 'Energia del flash',
-'exif-spatialfrequencyresponse' => 'Responsa de frequentia spatial',
'exif-focalplanexresolution' => 'Resolution X del plano focal',
'exif-focalplaneyresolution' => 'Resolution Y del plano focal',
'exif-focalplaneresolutionunit' => 'Unitate del resolution del plano focal',
@@ -2979,7 +3042,6 @@ Le alteres essera initialmente celate.
'exif-sensingmethod' => 'Methodo de sensor',
'exif-filesource' => 'Origine del file',
'exif-scenetype' => 'Typo de scena',
-'exif-cfapattern' => 'Patrono CFA',
'exif-customrendered' => 'Processamento de imagines personalisate',
'exif-exposuremode' => 'Modo de exposition',
'exif-whitebalance' => 'Balancia de blanc',
@@ -3024,10 +3086,79 @@ Le alteres essera initialmente celate.
'exif-gpsareainformation' => 'Nomine de area GPS',
'exif-gpsdatestamp' => 'Data GPS',
'exif-gpsdifferential' => 'Correction differential GPS',
+'exif-jpegfilecomment' => 'Commento del file JPEG',
+'exif-keywords' => 'Parolas-clave',
+'exif-worldregioncreated' => 'Region del mundo ubi le photo esseva prendite',
+'exif-countrycreated' => 'Pais ubi le photo esseva prendite',
+'exif-countrycodecreated' => 'Codice pro le pais ubi le photo esseva prendite',
+'exif-provinceorstatecreated' => 'Provincia o stato ubi le photo esseva prendite',
+'exif-citycreated' => 'Citate ubi le photo esseva prendite',
+'exif-sublocationcreated' => 'Sublocalitate del citate ubi le photo esseva prendite',
+'exif-worldregiondest' => 'Region del mundo monstrate',
+'exif-countrydest' => 'Pais monstrate',
+'exif-countrycodedest' => 'Codice pro pais monstrate',
+'exif-provinceorstatedest' => 'Provincia o stato monstrate',
+'exif-citydest' => 'Citate monstrate',
+'exif-sublocationdest' => 'Sublocalitate del citate monstrate',
'exif-objectname' => 'Titulo curte',
+'exif-specialinstructions' => 'Instructiones special',
+'exif-headline' => 'Titulo',
+'exif-credit' => 'Credito/Fornitor',
+'exif-source' => 'Origine',
+'exif-editstatus' => 'Stato redactorial del imagine',
+'exif-urgency' => 'Urgentia',
+'exif-fixtureidentifier' => 'Nomine del rubrica',
+'exif-locationdest' => 'Loco representate',
+'exif-locationdestcode' => 'Codice del loco representate',
+'exif-objectcycle' => 'Horas del die a que iste objecto es destinate',
+'exif-contact' => 'Informationes de contacto',
+'exif-writer' => 'Scriptor',
+'exif-languagecode' => 'Lingua',
+'exif-iimversion' => 'Version de IIM',
+'exif-iimcategory' => 'Categoria',
+'exif-iimsupplementalcategory' => 'Categorias supplementari',
+'exif-datetimeexpires' => 'Non usar post',
+'exif-datetimereleased' => 'Data de publication',
+'exif-originaltransmissionref' => 'Codice de localitate del transmission original',
+'exif-identifier' => 'Identificator',
+'exif-lens' => 'Objectivo usate',
+'exif-serialnumber' => 'Numero de serie del camera',
+'exif-cameraownername' => 'Proprietario del camera',
+'exif-label' => 'Etiquetta',
+'exif-datetimemetadata' => 'Data del ultime modification del metadatos',
+'exif-nickname' => 'Nomine informal del imagine',
+'exif-rating' => 'Evalutation (1-5)',
+'exif-rightscertificate' => 'Certificato de gestion de derectos',
+'exif-copyrighted' => 'Stato de copyright',
+'exif-copyrightowner' => 'Titular del copyright',
+'exif-usageterms' => 'Conditiones de uso',
+'exif-webstatement' => 'Declaration in linea de copyright',
+'exif-originaldocumentid' => 'ID unic del documento original',
+'exif-licenseurl' => 'URL pro licentia de copyright',
+'exif-morepermissionsurl' => 'Information alternative de licentia',
+'exif-attributionurl' => 'Si tu re-usa iste obra, per favor insere un ligamine a',
+'exif-preferredattributionname' => 'Si tu re-usa iste obra, per favor da recognoscentia a',
+'exif-pngfilecomment' => 'Commento del file PNG',
+'exif-disclaimer' => 'Repudiation',
+'exif-contentwarning' => 'Advertimento de contento',
+'exif-giffilecomment' => 'Commento del file GIF',
+'exif-intellectualgenre' => 'Typo de elemento',
+'exif-subjectnewscode' => 'Codice de subjecto',
+'exif-scenecode' => 'Codice de scena IPTC',
+'exif-event' => 'Evento representate',
+'exif-organisationinimage' => 'Organisation representate',
+'exif-personinimage' => 'Persona representate',
+'exif-originalimageheight' => 'Altitude del imagine ante taliar',
+'exif-originalimagewidth' => 'Latitude del imagine ante taliar',
# EXIF attributes
'exif-compression-1' => 'Non comprimite',
+'exif-compression-2' => 'CCITT Group 3 1-Dimensional Modified Huffman run length encoding',
+'exif-compression-3' => 'CCITT Group 3 codification fax',
+'exif-compression-4' => 'CCITT Group 4 codification fax',
+
+'exif-copyrighted-true' => 'Sub copyright',
+'exif-copyrighted-false' => 'Dominio public',
'exif-unknowndate' => 'Data incognite',
@@ -3043,6 +3174,8 @@ Le alteres essera initialmente celate.
'exif-planarconfiguration-1' => 'formato a blocos (chunky)',
'exif-planarconfiguration-2' => 'formato planar',
+'exif-colorspace-65535' => 'Non calibrate',
+
'exif-componentsconfiguration-0' => 'non existe',
'exif-exposureprogram-0' => 'Non definite',
@@ -3156,6 +3289,10 @@ Le alteres essera initialmente celate.
'exif-gpslongitude-e' => 'Longitude est',
'exif-gpslongitude-w' => 'Longitude west',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metro|metros}} super le nivello del mar',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metro|metros}} sub le nivello del mar',
+
'exif-gpsstatus-a' => 'Mesura in curso',
'exif-gpsstatus-v' => 'Interoperabilitate del mesura',
@@ -3167,21 +3304,73 @@ Le alteres essera initialmente celate.
'exif-gpsspeed-m' => 'Millias per hora',
'exif-gpsspeed-n' => 'Nodos',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometros',
+'exif-gpsdestdistance-m' => 'Millias',
+'exif-gpsdestdistance-n' => 'Millias nautic',
+
+'exif-gpsdop-excellent' => 'Excellente ($1)',
+'exif-gpsdop-good' => 'Bon ($1)',
+'exif-gpsdop-moderate' => 'Moderate ($1)',
+'exif-gpsdop-fair' => 'Acceptabile ($1)',
+'exif-gpsdop-poor' => 'Mal ($1)',
+
+'exif-objectcycle-a' => 'Matino solmente',
+'exif-objectcycle-p' => 'Vespere solmente',
+'exif-objectcycle-b' => 'Matino e vespere',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Direction real',
'exif-gpsdirection-m' => 'Direction magnetic',
+'exif-ycbcrpositioning-1' => 'Centrate',
+'exif-ycbcrpositioning-2' => 'Co-situate',
+
+'exif-dc-contributor' => 'Contributores',
+'exif-dc-coverage' => 'Scopo spatial o temporal del objecto',
+'exif-dc-date' => 'Data(s)',
+'exif-dc-publisher' => 'Editor',
+'exif-dc-relation' => 'Objectos connexe',
+'exif-dc-rights' => 'Derectos',
+'exif-dc-source' => 'Objecto original',
+'exif-dc-type' => 'Typo de objecto',
+
+'exif-rating-rejected' => 'Rejectate',
+
+'exif-isospeedratings-overflow' => 'Superior a 65535',
+
+'exif-iimcategory-ace' => 'Arte, cultura e intertenimento',
+'exif-iimcategory-clj' => 'Crimine e lege',
+'exif-iimcategory-dis' => 'Catastrophes e accidentes',
+'exif-iimcategory-fin' => 'Economia e negotios',
+'exif-iimcategory-edu' => 'Education',
+'exif-iimcategory-evn' => 'Ambiente',
+'exif-iimcategory-hth' => 'Sanitate',
+'exif-iimcategory-hum' => 'Interesse human',
+'exif-iimcategory-lab' => 'Labor',
+'exif-iimcategory-lif' => 'Stilo de vita e tempore libere',
+'exif-iimcategory-pol' => 'Politica',
+'exif-iimcategory-rel' => 'Religion e credentia',
+'exif-iimcategory-sci' => 'Scientia e technologia',
+'exif-iimcategory-soi' => 'Questiones social',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Guerra, conflicto e perturbation',
+'exif-iimcategory-wea' => 'Meteo',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Basse ($1)',
+'exif-urgency-high' => 'Alte ($1)',
+'exif-urgency-other' => 'Prioritate definite per usator ($1)',
+
# External editor support
'edit-externally' => 'Modificar iste file con un programma externe',
-'edit-externally-help' => '(Vide le [http://www.mediawiki.org/wiki/Manual:External_editors instructiones de configuration] pro ulterior informationes)',
+'edit-externally-help' => '(Vide le [//www.mediawiki.org/wiki/Manual:External_editors instructiones de configuration] pro ulterior informationes)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'totes',
-'imagelistall' => 'totes',
-'watchlistall2' => 'totes',
-'namespacesall' => 'totes',
-'monthsall' => 'totes',
-'limitall' => 'totes',
+'watchlistall2' => 'totes',
+'namespacesall' => 'totes',
+'monthsall' => 'totes',
+'limitall' => 'totes',
# E-mail address confirmation
'confirmemail' => 'Confirmar adresse de e-mail',
@@ -3266,17 +3455,24 @@ $1',
'trackbackdeleteok' => 'Le retroligamine ha essite delite con successo.',
# Delete conflict
-'deletedwhileediting' => "'''Attention:''' Iste pagina esseva delite post que tu comenciava a modificar lo!",
-'confirmrecreate' => "Le usator [[User:$1|$1]] ([[User talk:$1|discussion]]) ha delite iste pagina post que tu comenciava a modificar lo, dante le motivo:
+'deletedwhileediting' => "'''Attention:''' Iste pagina esseva delite post que tu comenciava a modificar lo!",
+'confirmrecreate' => "Le usator [[User:$1|$1]] ([[User talk:$1|discussion]]) ha delite iste pagina post que tu comenciava a modificar lo, dante le motivo:
: ''$2''
Per favor confirma que tu realmente vole recrear iste pagina.",
-'recreate' => 'Recrear',
+'confirmrecreate-noreason' => 'Le usator [[User:$1|$1]] ([[User talk:$1|discussion]]) ha delite iste pagina post que tu comenciava a modificar lo. Per favor confirma que tu realmente vole recrear iste pagina.',
+'recreate' => 'Recrear',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Rader le cache de iste pagina?',
'confirm-purge-bottom' => 'Purgar un pagina vacua le cache e fortia que appare le version le plus recente.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Adder iste pagina a tu observatorio?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Remover iste pagina de tu observatorio?',
+
# Multipage image navigation
'imgmultipageprev' => '↠precedente pagina',
'imgmultipagenext' => 'sequente pagina →',
@@ -3292,7 +3488,7 @@ Per favor confirma que tu realmente vole recrear iste pagina.",
'table_pager_last' => 'Ultime pagina',
'table_pager_limit' => 'Monstrar $1 entratas per pagina',
'table_pager_limit_label' => 'Elementos per pagina:',
-'table_pager_limit_submit' => 'Ir',
+'table_pager_limit_submit' => 'Va',
'table_pager_empty' => 'Nulle resultato',
# Auto-summaries
@@ -3318,7 +3514,7 @@ Per favor confirma que tu realmente vole recrear iste pagina.",
'watchlistedit-normal-legend' => 'Remover titulos del observatorio',
'watchlistedit-normal-explain' => 'Le titulos in tu observatorio es monstrate hic infra.
Pro eliminar un titulo, marca le quadrato correspondente, e clicca "{{int:Watchlistedit-normal-submit}}".
-Tu pote etiam [[Special:Watchlist/raw|modificar le lista in forma crude]].',
+Tu pote etiam [[Special:EditWatchlist/raw|modificar le lista in forma crude]].',
'watchlistedit-normal-submit' => 'Remover titulos',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 titulo|$1 titulos}} ha essite removite de tu observatorio:',
'watchlistedit-raw-title' => 'Modification del observatorio in forma crude',
@@ -3326,7 +3522,7 @@ Tu pote etiam [[Special:Watchlist/raw|modificar le lista in forma crude]].',
'watchlistedit-raw-explain' => 'Le titulos in tu observatorio es monstrate hic infra, e pote esser modificate per adder e eliminar entratas del lista;
un titulo per linea.
Quando tu ha finite, clicca super "{{int:Watchlistedit-raw-submit}}".
-Tu pote etiam [[Special:Watchlist/edit|usar le editor standard]].',
+Tu pote etiam [[Special:EditWatchlist|usar le editor standard]].',
'watchlistedit-raw-titles' => 'Titulos:',
'watchlistedit-raw-submit' => 'Actualisar observatorio',
'watchlistedit-raw-done' => 'Tu observatorio ha essite actualisate.',
@@ -3343,58 +3539,58 @@ Tu pote etiam [[Special:Watchlist/edit|usar le editor standard]].',
'duplicate-defaultsort' => 'Attention: Le clave de ordination predefinite "$2" supplanta le anterior clave de ordination predefinite "$1".',
# Special:Version
-'version' => 'Version',
-'version-extensions' => 'Extensiones installate',
-'version-specialpages' => 'Paginas special',
-'version-parserhooks' => 'Uncinos del analysator syntactic',
-'version-variables' => 'Variabiles',
-'version-skins' => 'Apparentias',
-'version-other' => 'Altere',
-'version-mediahandlers' => 'Executores de media',
-'version-hooks' => 'Uncinos',
-'version-extension-functions' => 'Functiones de extensiones',
-'version-parser-extensiontags' => 'Etiquettas de extension del analysator syntactic',
-'version-parser-function-hooks' => 'Uncinos de functiones del analysator syntactic',
-'version-skin-extension-functions' => 'Functiones de extension de stilos',
-'version-hook-name' => 'Nomine del uncino',
-'version-hook-subscribedby' => 'Subscribite per',
-'version-version' => '(Version $1)',
-'version-license' => 'Licentia',
-'version-poweredby-credits' => "Iste wiki es actionate per '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'alteres',
-'version-license-info' => 'MediaWiki es software libere; vos pote redistribuer lo e/o modificar lo sub le conditiones del Licentia Public General de GNU publicate per le Free Software Foundation; version 2 del Licentia, o (a vostre option) qualcunque version posterior.
+'version' => 'Version',
+'version-extensions' => 'Extensiones installate',
+'version-specialpages' => 'Paginas special',
+'version-parserhooks' => 'Uncinos del analysator syntactic',
+'version-variables' => 'Variabiles',
+'version-antispam' => 'Prevention de spam',
+'version-skins' => 'Apparentias',
+'version-other' => 'Altere',
+'version-mediahandlers' => 'Executores de media',
+'version-hooks' => 'Uncinos',
+'version-extension-functions' => 'Functiones de extensiones',
+'version-parser-extensiontags' => 'Etiquettas de extension del analysator syntactic',
+'version-parser-function-hooks' => 'Uncinos de functiones del analysator syntactic',
+'version-hook-name' => 'Nomine del uncino',
+'version-hook-subscribedby' => 'Subscribite per',
+'version-version' => '(Version $1)',
+'version-license' => 'Licentia',
+'version-poweredby-credits' => "Iste wiki es actionate per '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'alteres',
+'version-license-info' => 'MediaWiki es software libere; vos pote redistribuer lo e/o modificar lo sub le conditiones del Licentia Public General de GNU publicate per le Free Software Foundation; version 2 del Licentia, o (a vostre option) qualcunque version posterior.
Iste programma es distribuite in le sperantia que illo sia utile, ma SIN GARANTIA; sin mesmo le implicite garantia de COMMERCIALISATION o APTITUDE PRO UN PROPOSITO PARTICULAR. Vide le Licentia Public General de GNU pro plus detalios.
-Vos deberea haber recipite [{{SERVER}}{{SCRIPTPATH}}/COPYING un exemplar del Licentia Public General de GNU] con iste programma; si non, scribe al Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, o [http://www.gnu.org/copyleft/gpl.html lege lo in linea].',
-'version-software' => 'Software installate',
-'version-software-product' => 'Producto',
-'version-software-version' => 'Version',
+Vos deberea haber recipite [{{SERVER}}{{SCRIPTPATH}}/COPYING un exemplar del Licentia Public General de GNU] con iste programma; si non, scribe al Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, o [//www.gnu.org/copyleft/gpl.html lege lo in linea].',
+'version-software' => 'Software installate',
+'version-software-product' => 'Producto',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath' => 'Cammino del file',
'filepath-page' => 'File:',
-'filepath-submit' => 'Ir',
+'filepath-submit' => 'Va',
'filepath-summary' => 'Iste pagina special retorna le cammino complete de un file.
Le imagines se monstra in plen resolution, le altere typos de file se executa directemente con lor programmas associate.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Cercar files duplicate',
-'fileduplicatesearch-summary' => "Cercar files duplicate a base de lor summas de verification ''(hash).''
-
-Entra le nomine del file sin le prefixo \"{{ns:file}}:\".",
-'fileduplicatesearch-legend' => 'Cercar un duplicato',
-'fileduplicatesearch-filename' => 'Nomine del file:',
-'fileduplicatesearch-submit' => 'Cercar',
-'fileduplicatesearch-info' => '$1 × $2 pixel<br />Grandor del file: $3<br />Typo MIME: $4',
-'fileduplicatesearch-result-1' => 'Le file "$1" ha nulle duplicato identic.',
-'fileduplicatesearch-result-n' => 'Le file "$1" ha {{PLURAL:$2|1 duplicato|$2 duplicatos}} identic.',
+'fileduplicatesearch' => 'Cercar files duplicate',
+'fileduplicatesearch-summary' => "Cercar files duplicate a base de lor summas de verification ''(hash).''",
+'fileduplicatesearch-legend' => 'Cercar un duplicato',
+'fileduplicatesearch-filename' => 'Nomine del file:',
+'fileduplicatesearch-submit' => 'Cercar',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />Grandor del file: $3<br />Typo MIME: $4',
+'fileduplicatesearch-result-1' => 'Le file "$1" ha nulle duplicato identic.',
+'fileduplicatesearch-result-n' => 'Le file "$1" ha {{PLURAL:$2|1 duplicato|$2 duplicatos}} identic.',
+'fileduplicatesearch-noresults' => 'Nulle file con nomine "$1" trovate.',
# Special:SpecialPages
'specialpages' => 'Paginas special',
'specialpages-note' => '----
* Paginas special normal.
-* <strong class="mw-specialpagerestricted">Paginas special restringite.</strong>',
+* <span class="mw-specialpagerestricted">Paginas special restringite.</span>
+* <span class="mw-specialpagecached">Paginas special del cache (poterea esser obsolete).</span>',
'specialpages-group-maintenance' => 'Reportos de mantenentia',
'specialpages-group-other' => 'Altere paginas special',
'specialpages-group-login' => 'Aperir session / crear conto',
diff --git a/languages/messages/MessagesId.php b/languages/messages/MessagesId.php
index e4ad9f35..f27bb6d2 100644
--- a/languages/messages/MessagesId.php
+++ b/languages/messages/MessagesId.php
@@ -9,6 +9,7 @@
*
* @author -iNu-
* @author Aldnonymous
+ * @author ArdWar
* @author Bennylin
* @author Borgx
* @author Farras
@@ -209,96 +210,117 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Pengalihan_ganda', 'PengalihanGanda' ),
+ 'Activeusers' => array( 'Pengguna_aktif', 'PenggunaAktif' ),
+ 'Allmessages' => array( 'Pesan_sistem', 'PesanSistem' ),
+ 'Allpages' => array( 'Daftar_halaman', 'DaftarHalaman' ),
+ 'Ancientpages' => array( 'Halaman_lama', 'HalamanLama' ),
+ 'Blankpage' => array( 'Halaman_kosong', 'HalamanKosong' ),
+ 'Block' => array( 'Blokir_pengguna', 'BlokirPengguna' ),
+ 'Blockme' => array( 'Blokir_saya', 'BlokirSaya' ),
+ 'Booksources' => array( 'Sumber_buku', 'SumberBuku' ),
'BrokenRedirects' => array( 'Pengalihan_rusak', 'PengalihanRusak' ),
- 'Disambiguations' => array( 'Disambiguasi' ),
- 'Userlogin' => array( 'Masuk_log', 'MasukLog' ),
- 'Userlogout' => array( 'Keluar_log', 'KeluarLog' ),
+ 'Categories' => array( 'Daftar_kategori', 'DaftarKategori', 'Kategori' ),
+ 'ChangePassword' => array( 'Ganti_sandi', 'GantiSandi' ),
+ 'ComparePages' => array( 'Bandingkan_halaman', 'BandingkanHalaman' ),
+ 'Confirmemail' => array( 'Konfirmasi_surel', 'KonfirmasiSurel' ),
+ 'Contributions' => array( 'Kontribusi_pengguna', 'KontribusiPengguna', 'Kontribusi' ),
'CreateAccount' => array( 'Buat_akun', 'BuatAkun' ),
- 'Preferences' => array( 'Preferensi' ),
- 'Watchlist' => array( 'Daftar_pantauan', 'DaftarPantauan' ),
- 'Recentchanges' => array( 'Perubahan_terbaru', 'PerubahanTerbaru', 'RC', 'PT' ),
- 'Upload' => array( 'Pengunggahan', 'Pemuatan', 'Unggah' ),
+ 'Deadendpages' => array( 'Halaman_buntu', 'HalamanBuntu' ),
+ 'DeletedContributions' => array( 'Kontribusi_yang_dihapus', 'KontribusiDihapus' ),
+ 'Disambiguations' => array( 'Disambiguasi' ),
+ 'DoubleRedirects' => array( 'Pengalihan_ganda', 'PengalihanGanda' ),
+ 'Emailuser' => array( 'Surel_pengguna', 'SurelPengguna' ),
+ 'Export' => array( 'Ekspor_halaman', 'Ekspor' ),
+ 'Fewestrevisions' => array( 'Perubahan_tersedikit', 'PerubahanTersedikit' ),
+ 'FileDuplicateSearch' => array( 'Pencarian_berkas_duplikat', 'PencarianBerkasDuplikat' ),
+ 'Filepath' => array( 'Lokasi_berkas', 'Lokasi_arsip', 'LokasiArsip' ),
+ 'Import' => array( 'Impor_halaman', 'Impor' ),
+ 'Invalidateemail' => array( 'Batalkan_validasi_surel', 'BatalkanValidasiSurel' ),
+ 'BlockList' => array( 'Daftar_pemblokiran', 'DaftarPemblokiran' ),
+ 'LinkSearch' => array( 'Pranala_luar', 'PranalaLuar', 'Pencarian_pranala', 'PencarianPranala' ),
+ 'Listadmins' => array( 'Daftar_pengurus', 'DaftarPengurus' ),
+ 'Listbots' => array( 'Daftar_bot', 'DaftarBot' ),
'Listfiles' => array( 'Daftar_berkas', 'DaftarBerkas' ),
- 'Newimages' => array( 'Berkas_baru', 'BerkasBaru' ),
- 'Listusers' => array( 'Daftar_pengguna', 'DaftarPengguna' ),
'Listgrouprights' => array( 'Daftar_hak_kelompok', 'DaftarHakKelompok', 'DaftarHak' ),
- 'Statistics' => array( 'Statistik' ),
- 'Randompage' => array( 'Halaman_sembarang', 'HalamanSembarang' ),
+ 'Listredirects' => array( 'Daftar_pengalihan', 'DaftarPengalihan' ),
+ 'Listusers' => array( 'Daftar_pengguna', 'DaftarPengguna' ),
+ 'Lockdb' => array( 'Kunci_basis_data', 'KunciBasisData' ),
+ 'Log' => array( 'Catatan' ),
'Lonelypages' => array( 'Halaman_yatim', 'Halaman_tak_bertuan', 'HalamanYatim', 'HalamanTakBertuan' ),
- 'Uncategorizedpages' => array( 'Halaman_tak_terkategori', 'HalamanTakTerkategori' ),
- 'Uncategorizedcategories' => array( 'Kategori_tak_terkategori', 'KategoriTakTerkategori' ),
- 'Uncategorizedimages' => array( 'Berkas_tak_terkategori', 'BerkasTakTerkategori' ),
- 'Uncategorizedtemplates' => array( 'Templat_tak_terkategori', 'TemplatTakTerkategori' ),
- 'Unusedcategories' => array( 'Kategori_kosong', 'KategoriKosong', 'Kategori_tak_terpakai', 'KategoriTakTerpakai' ),
- 'Unusedimages' => array( 'Berkas_tak_terpakai', 'BerkasTakTerpakai', 'Berkas_tak_digunakan', 'BerkasTakDigunakan' ),
- 'Wantedpages' => array( 'Halaman_yang_diinginkan', 'HalamanDiinginkan' ),
- 'Wantedcategories' => array( 'Kategori_yang_diinginkan', 'KategoriDiinginkan' ),
- 'Wantedfiles' => array( 'Berkas_yang_diinginkan', 'BerkasDiinginkan' ),
- 'Wantedtemplates' => array( 'Templat_yang_diinginkan', 'TemplatDiinginkan' ),
+ 'Longpages' => array( 'Halaman_panjang', 'HalamanPanjang' ),
+ 'MergeHistory' => array( 'Riwayat_penggabungan', 'RiwayatPenggabungan' ),
+ 'MIMEsearch' => array( 'Pencarian_MIME', 'PencarianMIME' ),
+ 'Mostcategories' => array( 'Kategori_terbanyak', 'KategoriTerbanyak' ),
+ 'Mostimages' => array( 'Berkas_paling_digunakan', 'BerkasPalingDigunakan' ),
'Mostlinked' => array( 'Halaman_paling_digunakan', 'HalamanPalingDigunakan' ),
'Mostlinkedcategories' => array( 'Kategori_paling_digunakan', 'KategoriPalingDigunakan' ),
'Mostlinkedtemplates' => array( 'Templat_paling_digunakan', 'TemplatPalingDigunakan' ),
- 'Mostimages' => array( 'Berkas_paling_digunakan', 'BerkasPalingDigunakan' ),
- 'Mostcategories' => array( 'Kategori_terbanyak', 'KategoriTerbanyak' ),
'Mostrevisions' => array( 'Perubahan_terbanyak', 'PerubahanTerbanyak' ),
- 'Fewestrevisions' => array( 'Perubahan_tersedikit', 'PerubahanTersedikit' ),
- 'Shortpages' => array( 'Halaman_pendek', 'HalamanPendek' ),
- 'Longpages' => array( 'Halaman_panjang', 'HalamanPanjang' ),
+ 'Movepage' => array( 'Pindahkan_halaman', 'PindahkanHalaman' ),
+ 'Mycontributions' => array( 'Kontribusi_saya', 'KontribusiSaya' ),
+ 'Mypage' => array( 'Halaman_saya', 'HalamanSaya' ),
+ 'Mytalk' => array( 'Pembicaraan_saya', 'PembicaraanSaya' ),
+ 'Newimages' => array( 'Berkas_baru', 'BerkasBaru' ),
'Newpages' => array( 'Halaman_baru', 'HalamanBaru' ),
- 'Ancientpages' => array( 'Halaman_lama', 'HalamanLama' ),
- 'Deadendpages' => array( 'Halaman_buntu', 'HalamanBuntu' ),
+ 'PasswordReset' => array( 'Reset_sandi', 'ResetSandi' ),
+ 'Popularpages' => array( 'Halaman_populer', 'HalamanPopuler' ),
+ 'Preferences' => array( 'Preferensi' ),
+ 'Prefixindex' => array( 'Indeks_awalan', 'IndeksAwalan' ),
'Protectedpages' => array( 'Halaman_yang_dilindungi', 'HalamanDilindungi' ),
'Protectedtitles' => array( 'Judul_yang_dilindungi', 'JudulDilindungi' ),
- 'Allpages' => array( 'Daftar_halaman', 'DaftarHalaman' ),
- 'Prefixindex' => array( 'Indeks_awalan', 'IndeksAwalan' ),
- 'Ipblocklist' => array( 'Daftar_pemblokiran', 'DaftarPemblokiran' ),
- 'Unblock' => array( 'Pembatalan_pemblokiran', 'PembatalanPemblokiran' ),
- 'Specialpages' => array( 'Halaman_istimewa', 'HalamanIstimewa' ),
- 'Contributions' => array( 'Kontribusi_pengguna', 'KontribusiPengguna', 'Kontribusi' ),
- 'Emailuser' => array( 'Surel_pengguna', 'SurelPengguna' ),
- 'Confirmemail' => array( 'Konfirmasi_surel', 'KonfirmasiSurel' ),
- 'Whatlinkshere' => array( 'Pranala_balik', 'PranalaBalik' ),
+ 'Randompage' => array( 'Halaman_sembarang', 'HalamanSembarang' ),
+ 'Randomredirect' => array( 'Pengalihan_sembarang', 'PengalihanSembarang' ),
+ 'Recentchanges' => array( 'Perubahan_terbaru', 'PerubahanTerbaru', 'RC', 'PT' ),
'Recentchangeslinked' => array( 'Perubahan_terkait', 'PerubahanTerkait' ),
- 'Movepage' => array( 'Pindahkan_halaman', 'PindahkanHalaman' ),
- 'Blockme' => array( 'Blokir_saya', 'BlokirSaya' ),
- 'Booksources' => array( 'Sumber_buku', 'SumberBuku' ),
- 'Categories' => array( 'Daftar_kategori', 'DaftarKategori', 'Kategori' ),
- 'Export' => array( 'Ekspor' ),
- 'Version' => array( 'Versi' ),
- 'Allmessages' => array( 'Pesan_sistem', 'PesanSistem' ),
- 'Log' => array( 'Catatan' ),
- 'Blockip' => array( 'Blokir_pengguna', 'BlokirPengguna' ),
+ 'Revisiondelete' => array( 'Hapus_revisi', 'HapusRevisi' ),
+ 'RevisionMove' => array( 'Revisi_pemindahan', 'RevisiPemindahan' ),
+ 'Search' => array( 'Pencarian', 'Cari' ),
+ 'Shortpages' => array( 'Halaman_pendek', 'HalamanPendek' ),
+ 'Specialpages' => array( 'Halaman_istimewa', 'HalamanIstimewa' ),
+ 'Statistics' => array( 'Statistik' ),
+ 'Tags' => array( 'Tag' ),
+ 'Unblock' => array( 'Pembatalan_pemblokiran', 'PembatalanPemblokiran' ),
+ 'Uncategorizedcategories' => array( 'Kategori_tak_terkategori', 'KategoriTakTerkategori' ),
+ 'Uncategorizedimages' => array( 'Berkas_tak_terkategori', 'BerkasTakTerkategori' ),
+ 'Uncategorizedpages' => array( 'Halaman_tak_terkategori', 'HalamanTakTerkategori' ),
+ 'Uncategorizedtemplates' => array( 'Templat_tak_terkategori', 'TemplatTakTerkategori' ),
'Undelete' => array( 'Pembatalan_penghapusan', 'PembatalanPenghapusan' ),
- 'Import' => array( 'Impor' ),
- 'Lockdb' => array( 'Kunci_basis_data', 'KunciBasisData' ),
'Unlockdb' => array( 'Buka_kunci_basis_data', 'BukaKunciBasisData' ),
- 'Userrights' => array( 'Hak_pengguna', 'HakPengguna' ),
- 'MIMEsearch' => array( 'Pencarian_MIME', 'PencarianMIME' ),
- 'FileDuplicateSearch' => array( 'Pencarian_berkas_duplikat', 'PencarianBerkasDuplikat' ),
- 'Unwatchedpages' => array( 'Halaman_tak_terpantau', 'HalamanTakTerpantau' ),
- 'Listredirects' => array( 'Daftar_pengalihan', 'DaftarPengalihan' ),
- 'Revisiondelete' => array( 'Hapus_revisi', 'HapusRevisi' ),
+ 'Unusedcategories' => array( 'Kategori_kosong', 'KategoriKosong', 'Kategori_tak_terpakai', 'KategoriTakTerpakai' ),
+ 'Unusedimages' => array( 'Berkas_tak_terpakai', 'BerkasTakTerpakai', 'Berkas_tak_digunakan', 'BerkasTakDigunakan' ),
'Unusedtemplates' => array( 'Templat_tak_terpakai', 'TemplatTakTerpakai' ),
- 'Randomredirect' => array( 'Pengalihan_sembarang', 'PengalihanSembarang' ),
- 'Mypage' => array( 'Halaman_saya', 'HalamanSaya' ),
- 'Mytalk' => array( 'Pembicaraan_saya', 'PembicaraanSaya' ),
- 'Mycontributions' => array( 'Kontribusi_saya', 'KontribusiSaya' ),
- 'Listadmins' => array( 'Daftar_pengurus', 'DaftarPengurus' ),
- 'Listbots' => array( 'Daftar_bot', 'DaftarBot' ),
- 'Popularpages' => array( 'Halaman_populer', 'HalamanPopuler' ),
- 'Search' => array( 'Pencarian', 'Cari' ),
- 'Resetpass' => array( 'Ganti_sandi', 'GantiSandi' ),
+ 'Unwatchedpages' => array( 'Halaman_tak_terpantau', 'HalamanTakTerpantau' ),
+ 'Upload' => array( 'Pengunggahan', 'Pemuatan', 'Unggah' ),
+ 'Userlogin' => array( 'Masuk_log', 'MasukLog' ),
+ 'Userlogout' => array( 'Keluar_log', 'KeluarLog' ),
+ 'Userrights' => array( 'Hak_pengguna', 'HakPengguna' ),
+ 'Version' => array( 'Versi' ),
+ 'Wantedcategories' => array( 'Kategori_yang_diinginkan', 'KategoriDiinginkan' ),
+ 'Wantedfiles' => array( 'Berkas_yang_diinginkan', 'BerkasDiinginkan' ),
+ 'Wantedpages' => array( 'Halaman_yang_diinginkan', 'HalamanDiinginkan' ),
+ 'Wantedtemplates' => array( 'Templat_yang_diinginkan', 'TemplatDiinginkan' ),
+ 'Watchlist' => array( 'Daftar_pantauan', 'DaftarPantauan' ),
+ 'Whatlinkshere' => array( 'Pranala_balik', 'PranalaBalik' ),
'Withoutinterwiki' => array( 'Tanpa_interwiki', 'TanpaInterwiki' ),
- 'MergeHistory' => array( 'Riwayat_penggabungan', 'RiwayatPenggabungan' ),
- 'Filepath' => array( 'Lokasi_arsip', 'LokasiArsip' ),
- 'Invalidateemail' => array( 'Batalkan_validasi_surel', 'BatalkanValidasiSurel' ),
- 'Blankpage' => array( 'Halaman_kosong', 'HalamanKosong' ),
- 'LinkSearch' => array( 'Pranala_luar', 'PranalaLuar', 'Pencarian_pranala', 'PencarianPranala' ),
- 'DeletedContributions' => array( 'Kontribusi_yang_dihapus', 'KontribusiDihapus' ),
- 'Tags' => array( 'Tag' ),
- 'Activeusers' => array( 'Pengguna_aktif', 'PenggunaAktif' ),
- 'ComparePages' => array( 'Bandingkan_halaman', 'BandingkanHalaman' ),
+);
+
+$datePreferences = array(
+ 'default',
+ 'dmy',
+ 'ymd',
+ 'ISO 8601',
+);
+
+$defaultDateFormat = 'dmy';
+
+$dateFormats = array(
+ 'dmy time' => 'H.i',
+ 'dmy date' => 'j F Y',
+ 'dmy both' => 'j F Y H.i',
+
+ 'ymd time' => 'H.i',
+ 'ymd date' => 'Y F j',
+ 'ymd both' => 'Y F j H.i',
);
$messages = array(
@@ -334,9 +356,9 @@ $messages = array(
'tog-oldsig' => 'Tanda tangan sekarang:',
'tog-fancysig' => 'Perlakukan tanda tangan sebagai teks wiki (tanpa suatu pranala otomatis)',
'tog-externaleditor' => 'Gunakan editor eksternal secara bawaan (hanya untuk ahli, perlu pengaturan khusus pada komputer Anda.
-[http://www.mediawiki.org/wiki/Manual:External_editors Informasi selengkapnya].)',
+[//www.mediawiki.org/wiki/Manual:External_editors Informasi selengkapnya].)',
'tog-externaldiff' => 'Gunakan diff eksternal secara bawaan (hanya untuk ahli, perlu pengaturan khusus pada komputer Anda.
-[http://www.mediawiki.org/wiki/Manual:External_editors Informasi selengkapnya].)',
+[//www.mediawiki.org/wiki/Manual:External_editors Informasi selengkapnya].)',
'tog-showjumplinks' => 'Aktifkan pranala pembantu "langsung ke"',
'tog-uselivepreview' => 'Gunakan pratayang langsung (JavaScript) (eksperimental)',
'tog-forceeditsummary' => 'Ingatkan saya bila kotak ringkasan suntingan masih kosong',
@@ -433,15 +455,7 @@ $messages = array(
'listingcontinuesabbrev' => 'samb.',
'index-category' => 'Halaman yang diindeks',
'noindex-category' => 'Halaman yang tidak diindeks',
-
-'mainpagetext' => "'''MediaWiki telah terpasang dengan sukses'''.",
-'mainpagedocfooter' => 'Silakan baca [http://www.mediawiki.org/wiki/Help:Contents/id Panduan Pengguna] untuk cara penggunaan perangkat lunak wiki ini.
-
-== Memulai penggunaan ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings/id Daftar pengaturan konfigurasi]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/id Daftar pertanyaan yang sering diajukan mengenai MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Milis rilis MediaWiki]',
+'broken-file-category' => 'Halaman dengan gambar rusak',
'about' => 'Tentang',
'article' => 'Halaman isi',
@@ -493,10 +507,10 @@ $messages = array(
'history' => 'Versi terdahulu halaman',
'history_short' => 'Versi terdahulu',
'updatedmarker' => 'diubah sejak kunjungan terakhir saya',
-'info_short' => 'Informasi',
'printableversion' => 'Versi cetak',
'permalink' => 'Pranala permanen',
'print' => 'Cetak',
+'view' => 'Baca',
'edit' => 'Sunting',
'create' => 'Buat',
'editthispage' => 'Sunting halaman ini',
@@ -504,6 +518,7 @@ $messages = array(
'delete' => 'Hapus',
'deletethispage' => 'Hapus halaman ini',
'undelete_short' => 'Batal hapus $1 {{PLURAL:$1|suntingan|suntingan}}',
+'viewdeleted_short' => 'Lihat {{PLURAL:$1|satu suntingan|$1 suntingan}} yang dihapus',
'protect' => 'Lindungi',
'protect_change' => 'ubah',
'protectthispage' => 'Lindungi halaman ini',
@@ -587,6 +602,8 @@ $1',
'toc' => 'Daftar isi',
'showtoc' => 'tampilkan',
'hidetoc' => 'sembunyikan',
+'collapsible-collapse' => 'Ciutkan',
+'collapsible-expand' => 'Kembangkan',
'thisisdeleted' => 'Lihat atau kembalikan $1?',
'viewdeleted' => 'Lihat $1?',
'restorelink' => '$1 {{PLURAL:$1|suntingan|suntingan}} yang telah dihapus',
@@ -599,6 +616,8 @@ $1',
'page-atom-feed' => 'Umpan Atom "$1"',
'feed-atom' => 'Atom',
'red-link-title' => '$1 (halaman belum tersedia)',
+'sort-descending' => 'Urutkan menurun',
+'sort-ascending' => 'Urutkan menaik',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Halaman',
@@ -676,12 +695,13 @@ Mungkin telah dihapus oleh orang lain.',
'viewsourcetext' => 'Anda dapat melihat atau menyalin sumber halaman ini:',
'protectedinterface' => 'Halaman ini berisi teks antarmuka untuk digunakan oleh perangkat lunak dan telah dikunci untuk menghindari kesalahan.',
'editinginterface' => "'''Peringatan:''' Anda menyunting suatu halaman yang digunakan untuk menyediakan teks antarmuka untuk perangkat lunak situs ini. Perubahan teks ini akan mempengaruhi tampilan pada antarmuka pengguna untuk pengguna lain.
-Untuk terjemahan, harap gunakan [http://translatewiki.net/wiki/Main_Page?setlang=id translatewiki.net], proyek pelokalan MediaWiki.",
+Untuk terjemahan, harap gunakan [//translatewiki.net/wiki/Main_Page?setlang=id translatewiki.net], proyek pelokalan MediaWiki.",
'sqlhidden' => '(Permintaan SQL disembunyikan)',
'cascadeprotected' => 'Halaman ini telah dilindungi dari penyuntingan karena disertakan di {{PLURAL:$1|halaman|halaman-halaman}} berikut yang telah dilindungi dengan opsi "runtun":
$2',
'namespaceprotected' => "Anda tak memiliki hak akses untuk menyunting halaman di ruang nama '''$1'''.",
-'customcssjsprotected' => 'Anda tak memiliki hak menyunting halaman ini karena mengandung pengaturan pribadi pengguna lain.',
+'customcssprotected' => 'Anda tidak memiliki izin untuk menyunting halaman CSS ini, karena berisi pengaturan pribadi pengguna lain.',
+'customjsprotected' => 'Anda tidak memiliki izin untuk menyunting halaman JavaScript ini, karena berisi pengaturan pribadi pengguna lain.',
'ns-specialprotected' => 'Halaman pada ruang nama {{ns:special}} tidak dapat disunting.',
'titleprotected' => "Judul ini dilindungi dari pembuatan oleh [[User:$1|$1]].
Alasan yang diberikan adalah ''$2''.",
@@ -719,6 +739,7 @@ Akun Anda telah dibuat. Jangan lupa mengatur konfigurasi [[Special:Preferences|p
'createaccount' => 'Buat akun baru',
'gotaccount' => "Sudah terdaftar sebagai pengguna? '''$1'''.",
'gotaccountlink' => 'Masuk log',
+'userlogin-resetlink' => 'Lupa detail info masuk Anda?',
'createaccountmail' => 'melalui surel',
'createaccountreason' => 'Alasan:',
'badretype' => 'Kata sandi yang Anda masukkan salah.',
@@ -728,13 +749,15 @@ Silakan tentukan nama yang lain.',
'createaccounterror' => 'Tidak dapat membuat akun: $1',
'nocookiesnew' => "Akun pengguna telah dibuat, tetapi Anda belum masuk log. {{SITENAME}} menggunakan ''cookies'' untuk log pengguna. ''Cookies'' pada penjelajah web Anda dimatikan. Silakan aktifkan dan masuk log kembali dengan nama pengguna dan kata sandi Anda.",
'nocookieslogin' => "{{SITENAME}} menggunakan ''cookies'' untuk log penggunanya. ''Cookies'' pada penjelajah web Anda dimatikan. Silakan aktifkan dan coba lagi.",
+'nocookiesfornew' => 'Akun pengguna tidak dibuat karena kami tidak dapat memastikan sumbernya.
+Pastikan Anda telah mengaktifkan kuki, lalu muat ulang halaman ini dan coba lagi.',
'noname' => 'Nama pengguna yang Anda masukkan tidak sah.',
'loginsuccesstitle' => 'Berhasil masuk log',
'loginsuccess' => "'''Anda sekarang masuk log di {{SITENAME}} sebagai \"\$1\".'''",
'nosuchuser' => 'Tidak ada pengguna dengan nama "$1".
Nama pengguna membedakan kapitalisasi.
Periksa kembali ejaan Anda, atau [[Special:UserLogin/signup|buat akun baru]].',
-'nosuchusershort' => 'Tidak ada pengguna dengan nama "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Tidak ada pengguna dengan nama "$1".
Silakan periksa kembali ejaan Anda.',
'nouserspecified' => 'Anda harus memasukkan nama pengguna.',
'login-userblocked' => 'Pengguna ini diblokir. Tidak diizinkan/diperbolehkan untuk masuk log.',
@@ -775,13 +798,14 @@ Anda dapat mengabaikan pesan ini jika akun ini dibuat karena suatu kesalahan.',
'usernamehasherror' => 'Nama pengguna tidak bisa mengandung tanda pagar',
'login-throttled' => 'Anda telah berkali-kali mencoba masuk log.
Silakan menunggu sebelum mencoba lagi.',
+'login-abort-generic' => 'Proses masuk Anda tidak berhasil - Dibatalkan',
'loginlanguagelabel' => 'Bahasa: $1',
'suspicious-userlogout' => 'Permintaan Anda untuk keluar log ditolak karena tampaknya dikirim oleh penjelajah yang rusak atau proksi penyinggah.',
# E-mail sending
'php-mail-error-unknown' => 'Kesalahan yang tidak dikenal dalam fungsi mail() PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Ganti kata sandi',
'resetpass_announce' => 'Anda telah masuk log dengan kode sementara yang dikirim melalui surel. Untuk melanjutkan, Anda harus memasukkan kata sandi baru di sini:',
'resetpass_text' => '<!-- Tambahkan teks di sini -->',
@@ -799,6 +823,39 @@ Silakan menunggu sebelum mencoba lagi.',
Anda mungkin telah berhasil mengganti kata sandi Anda atau telah meminta kata sandi sementara yang baru.',
'resetpass-temp-password' => 'Kata sandi sementara:',
+# Special:PasswordReset
+'passwordreset' => 'Setel ulang sandi',
+'passwordreset-text' => 'Lengkapi formulir ini untuk menerima surel pengingat detail akun Anda.',
+'passwordreset-legend' => 'Setel ulang sandi',
+'passwordreset-disabled' => 'Penyetelan ulang sandi telah dimatikan di wiki ini.',
+'passwordreset-pretext' => '{{PLURAL:$1||Masukkan salah satu data di bawah ini}}',
+'passwordreset-username' => 'Nama pengguna:',
+'passwordreset-domain' => 'Domain:',
+'passwordreset-email' => 'Alamat surel:',
+'passwordreset-emailtitle' => 'Detail akun di {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Seseorang (mungkin Anda, dari alamat IP $1) meminta pengingat
+detail akun untuk {{SITENAME}} ($4). {{PLURAL:$3|Akun|Akun-akun}} berikut
+terkait dengan alamat surel ini:
+
+$2
+
+{{PLURAL:$3|Sandi sementara|Sandi sementara}} berikut akan kedaluwarsa dalam {{PLURAL:$5|satu hari|$5 hari}}.
+Anda harus masuk dan memilih sandi baru sekarang. Jika orang lain membuat
+permintaan ini atau jika Anda ingat sandi asli dan tidak lagi
+ingin mengubahnya, Anda dapat mengabaikan pesan ini dan terus menggunakan sandi lama.',
+'passwordreset-emailtext-user' => 'Seseorang (mungkin Anda, dari alamat IP $1) meminta pengingat detail akun untuk {{SITENAME}} ($4).
+{{PLURAL:$3|Akun|Akun-akun}} berikut terkait dengan alamat surel ini:
+
+$2
+
+{{PLURAL:$3|Sandi sementara|Sandi sementara}} berikut akan kedaluwarsa dalam {{PLURAL:$5|satu hari|$5 hari}}.
+Anda harus masuk dan memilih sandi baru sekarang. Jika orang lain membuat
+permintaan ini atau jika Anda ingat sandi asli dan tidak lagi
+ingin mengubahnya, Anda dapat mengabaikan pesan ini dan terus menggunakan sandi lama.',
+'passwordreset-emailelement' => 'Nama pengguna: $1
+Sandi sementara: $2',
+'passwordreset-emailsent' => 'Surel pengingat telah dikirimkan.',
+
# Edit page toolbar
'bold_sample' => 'Teks ini akan dicetak tebal',
'bold_tip' => 'Teks tebal',
@@ -810,8 +867,6 @@ Anda mungkin telah berhasil mengganti kata sandi Anda atau telah meminta kata sa
'extlink_tip' => 'Pranala luar (jangan lupa awalan http:// )',
'headline_sample' => 'Teks judul',
'headline_tip' => 'Subbagian tingkat 1',
-'math_sample' => 'Masukkan rumus di sini',
-'math_tip' => 'Rumus matematika (LaTeX)',
'nowiki_sample' => 'Masukkan teks yang tidak akan diformat di sini',
'nowiki_tip' => 'Abaikan pemformatan wiki',
'image_sample' => 'Contoh.jpg',
@@ -895,7 +950,7 @@ Jika Anda adalah seorang pengguna anonim dan merasa mendapatkan komentar-komenta
Anda dapat [[Special:Search/{{PAGENAME}}|melakukan pencarian untuk judul halaman ini]] di halaman-halaman lain, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mencari log terkait], atau [{{fullurl:{{FULLPAGENAME}}|action=edit}} menyunting halaman ini]</span>.',
'noarticletext-nopermission' => 'Saat ini tidak ada teks di halaman ini.
Anda dapat [[Special:Search/{{PAGENAME}}|melakukan pencarian untuk judul halaman ini]] di halaman-halaman lain, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mencari log terkait], atau [{{fullurl:{{FULLPAGENAME}}|action=edit}} menyunting halaman ini]</span>.',
-'userpage-userdoesnotexist' => 'Akun pengguna "$1" tidak terdaftar.',
+'userpage-userdoesnotexist' => 'Akun pengguna "<nowiki>$1</nowiki>" tidak terdaftar.',
'userpage-userdoesnotexist-view' => 'Pengguna "$1" tidak terdaftar.',
'blocked-notice-logextract' => 'Pengguna ini sedang diblokir.
Entri log pemblokiran terakhir tersedia di bawah ini sebagai rujukan.',
@@ -931,6 +986,7 @@ Jika masih tetap tidak berhasil, cobalah [[Special:UserLogout|keluar log]] dan m
'token_suffix_mismatch' => "'''Suntingan Anda ditolak karena aplikasi klien Anda mengubah karakter tanda baca pada suntingan.'''
Suntingan tersebut ditolak untuk mencegah kesalahan pada teks halaman.
Hal ini kadang terjadi jika Anda menggunakan layanan proxy anonim berbasis web yang bermasalah.",
+'edit_form_incomplete' => "'''Beberapa bagian dari formulir suntingan tidak mencapai server; periksa ulang apakah suntingan Anda tetap utuh dan coba lagi.'''",
'editing' => 'Menyunting $1',
'editingsection' => 'Menyunting $1 (bagian)',
'editingcomment' => 'Menyunting $1 (bagian baru)',
@@ -1160,7 +1216,7 @@ Silakan periksa catatan log.',
# Suppression log
'suppressionlog' => 'Log penyembunyian',
'suppressionlogtext' => 'Berikut adalah daftar penghapusan dan pemblokiran, termasuk konten yang disembunyikan dari para opsis.
-Lihat [[Special:IPBlockList|daftar IP yang diblokir]] untuk daftar terkininya.',
+Lihat [[Special:BlockList|IP block list]] untuk daftar terkininya.',
# History merging
'mergehistory' => 'Gabung sejarah halaman',
@@ -1269,12 +1325,13 @@ Anda dapat mencari melalui Google untuk sementara waktu.
Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencakup perubahan-perubahan terakhir.',
# Quickbar
-'qbsettings' => 'Pengaturan bar pintas',
-'qbsettings-none' => 'Tidak ada',
-'qbsettings-fixedleft' => 'Tetap sebelah kiri',
-'qbsettings-fixedright' => 'Tetap sebelah kanan',
-'qbsettings-floatingleft' => 'Mengambang sebelah kiri',
-'qbsettings-floatingright' => 'Mengambang sebelah kanan',
+'qbsettings' => 'Pengaturan bar pintas',
+'qbsettings-none' => 'Tidak ada',
+'qbsettings-fixedleft' => 'Tetap sebelah kiri',
+'qbsettings-fixedright' => 'Tetap sebelah kanan',
+'qbsettings-floatingleft' => 'Mengambang sebelah kiri',
+'qbsettings-floatingright' => 'Mengambang sebelah kanan',
+'qbsettings-directionality' => 'Tetap, tergantung pada bentuk skrip dari bahasa Anda',
# Preferences page
'preferences' => 'Preferensi',
@@ -1285,9 +1342,10 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
'changepassword' => 'Ganti kata sandi',
'prefs-skin' => 'Kulit',
'skin-preview' => 'Pratayang',
-'prefs-math' => 'Matematika',
'datedefault' => 'Tak ada preferensi',
+'prefs-beta' => 'Fitur Beta',
'prefs-datetime' => 'Tanggal dan waktu',
+'prefs-labs' => 'Fitur Labs',
'prefs-personal' => 'Profil',
'prefs-rc' => 'Perubahan terbaru',
'prefs-watchlist' => 'Pemantauan',
@@ -1309,8 +1367,6 @@ Perlu diingat bahwa indeks Google untuk konten {{SITENAME}} mungkin belum mencak
'columns' => 'Kolom:',
'searchresultshead' => 'Cari',
'resultsperpage' => 'Hasil per halaman:',
-'contextlines' => 'Baris ditampilkan per hasil:',
-'contextchars' => 'Karakter untuk konteks per baris:',
'stub-threshold' => 'Ambang batas untuk format <a href="#" class="stub">pranala rintisan</a>:',
'stub-threshold-disabled' => 'Dinonaktifkan',
'recentchangesdays' => 'Jumlah hari yang ditampilkan di perubahan terbaru:',
@@ -1322,7 +1378,7 @@ Berikut ini adalah nilai acak yang dapat Anda gunakan: $1',
'savedprefs' => 'Preferensi Anda telah disimpan',
'timezonelegend' => 'Zona waktu:',
'localtime' => 'Waktu setempat:',
-'timezoneuseserverdefault' => 'Gunakan standar server',
+'timezoneuseserverdefault' => 'Gunakan bawaan wiki ($1)',
'timezoneuseoffset' => 'Lainnya (tentukan perbedaannya)',
'timezoneoffset' => 'Perbedaan¹:',
'servertime' => 'Waktu server:',
@@ -1357,7 +1413,7 @@ Pengembalian preferensi tidak dapat dibatalkan.',
'prefs-registration' => 'Waktu pendaftaran:',
'yourrealname' => 'Nama asli:',
'yourlanguage' => 'Bahasa:',
-'yourvariant' => 'Varian bahasa',
+'yourvariant' => 'Varian bahasa isi:',
'yournick' => 'Tanda tangan:',
'prefs-help-signature' => 'Komentar pada halaman pembicaraan perlu ditandatangani dengan "<nowiki>~~~~</nowiki>" yang akan diubah menjadi tanda tangan Anda dan waktu saat ini.',
'badsig' => 'Tanda tangan mentah tak sah; periksa tag HTML.',
@@ -1371,8 +1427,8 @@ Jangan lebih dari $1 {{PLURAL:$1|karakter|karakter}}.',
'email' => 'Surel',
'prefs-help-realname' => 'Nama asli bersifat opsional.
Jika Anda memberikannya, nama asli Anda akan digunakan untuk memberi pengenalan atas hasil kerja Anda.',
-'prefs-help-email' => 'Alamat surel bersifat opsional, namun bila sewaktu-waktu Anda lupa akan kata sandi Anda, kami dapat mengirimkannya melalui surel tersebut.
-Anda juga dapat memilih untuk memungkinkan orang lain menghubungi Anda melalui halaman pengguna atau halaman pembicaraan pengguna Anda tanpa perlu membuka identitas Anda.',
+'prefs-help-email' => 'Alamat surel bersifat opsional, namun diperlukan untuk menyetel ulang sandi jika Anda lupa.',
+'prefs-help-email-others' => 'Anda juga dapat memilih untuk mengizinkan orang lain menghubungi Anda melalui halaman pengguna atau pembicaraan tanpa perlu membongkar identitas Anda.',
'prefs-help-email-required' => 'Alamat surel wajib diisi.',
'prefs-info' => 'Informasi dasar',
'prefs-i18n' => 'Internasionalisasi',
@@ -1497,15 +1553,15 @@ Anda juga dapat memilih untuk memungkinkan orang lain menghubungi Anda melalui h
'right-userrights' => 'Menyunting seluruh hak pengguna',
'right-userrights-interwiki' => 'Menyunting hak para pengguna di wiki lain',
'right-siteadmin' => 'Mengunci dan membuka kunci basis data',
-'right-reset-passwords' => 'Mereset kata sandi pengguna lain',
'right-override-export-depth' => 'Ekspor halaman termasuk halaman-halaman terkait hingga kedalaman 5',
'right-sendemail' => 'Mengirim surel ke pengguna lain',
# 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',
-'rightsnone' => '(tidak ada)',
+'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',
+'rightsnone' => '(tidak ada)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'membaca halaman ini',
@@ -1627,13 +1683,13 @@ Lihat [[Special:NewFiles|galeri berkas baru]] untuk tampilan visual.',
'minlength1' => 'Nama berkas paling tidak harus terdiri dari satu huruf.',
'illegalfilename' => 'Nama berkas "$1" mengandung aksara yang tidak diperbolehkan ada dalam judul halaman. Silakan ubah nama berkas tersebut dan cobalah memuatkannya kembali.',
'badfilename' => 'Nama berkas telah diubah menjadi "$1".',
-'filetype-mime-mismatch' => 'Ekstensi berkas tidak cocok dengan tipe MIME.',
+'filetype-mime-mismatch' => 'Ekstensi berkas ".$1" tidak cocok dengan jenis MIME yang terdeteksi dari berkas ($2).',
'filetype-badmime' => 'Berkas dengan tipe MIME "$1" tidak diperkenankan untuk dimuat.',
'filetype-bad-ie-mime' => 'Tidak dapat memuat berkas ini karena Internet Explorer mendeteksinya sebagai "$1", yang tak diizinkan dan merupakan tipe berkas yang memiliki potensi bahaya.',
'filetype-unwanted-type' => "'''\".\$1\"''' termasuk jenis berkas yang tidak diijinkan.
{{PLURAL:\$3|Jenis berkas yang disarankan adalah|Jenis berkas yang disarankan adalah}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' termasuk dalam jenis berkas yang tidak diijinkan.
-{{PLURAL:\$3|Jenis berkas yang diijinkan adalah|Jenis berkas yang diijinkan adalah}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|adalah ekstensi berkas yang tidak diizinkan|adalah ekstensi berkas yang tidak diizinkan}}.
+{{PLURAL:$3|Jenis berkas yang diperolehkan adalah|Jenis berkas yang diperolehkan adalah}} $2.',
'filetype-missing' => 'Berkas tak memiliki ekstensi (misalnya ".jpg").',
'empty-file' => 'Berkas yang Anda kirim kosong.',
'file-too-large' => 'Ukuran berkas yang Anda muat terlalu besar.',
@@ -1649,6 +1705,7 @@ Lihat [[Special:NewFiles|galeri berkas baru]] untuk tampilan visual.',
'large-file' => 'Ukuran berkas disarankan untuk tidak melebihi $1 bita; berkas ini berukuran $2 bita.',
'largefileserver' => 'Berkas ini lebih besar dari pada yang diizinkan server.',
'emptyfile' => 'Berkas yang Anda muatkan kelihatannya kosong. Hal ini mungkin disebabkan karena adanya kesalahan ketik pada nama berkas. Silakan pastikan apakah Anda benar-benar ingin memuatkan berkas ini.',
+'windows-nonascii-filename' => 'Wiki ini tidak mendukung nama berkas dengan karakter istimewa.',
'fileexists' => "Suatu berkas dengan nama tersebut telah ada, harap periksa '''<tt>[[:$1]]</tt>''' jika Anda tidak yakin untuk mengubahnya.
[[$1|thumb]]",
'filepageexists' => "Halaman deskripsi untuk berkas ini telah dibuat di '''<tt>[[:$1]]</tt>''', tapi saat ini tak ditemukan berkas dengan nama tersebut. Ringkasan yang Anda masukkan tidak akan tampil pada halaman deskripsi. Untuk memunculkannya, Anda perlu untuk menyuntingnya secara manual.
@@ -1681,6 +1738,8 @@ Jika Anda tetap ingin memuatkan berkas Anda, harap kembali dan gunakan nama lain
'php-uploaddisabledtext' => 'Pemuatan berkas dimatikan di PHP. Silakan cek pengaturan file_uploads.',
'uploadscripted' => 'Berkas ini mengandung HTML atau kode yang dapat diinterpretasikan dengan keliru oleh penjelajah web.',
'uploadvirus' => 'Berkas tersebut mengandung virus! Rincian: $1',
+'uploadjava' => 'Berkas ini adalah berkas ZIP yang mengnadung berkas .class Java.
+Penggunggahan berkas Java tidak diperbolehkan karena dapat menyebabkan pengabaian batasan keamanan.',
'upload-source' => 'Berkas sumber',
'sourcefilename' => 'Nama berkas sumber:',
'sourceurl' => 'URL sumber:',
@@ -1690,10 +1749,6 @@ Jika Anda tetap ingin memuatkan berkas Anda, harap kembali dan gunakan nama lain
'upload-options' => 'Opsi pengunggahan',
'watchthisupload' => 'Pantau berkas ini',
'filewasdeleted' => 'Suatu berkas dengan nama ini pernah dimuat dan selanjutnya dihapus. Harap cek $1 sebelum memuat lagi berkas tersebut.',
-'upload-wasdeleted' => "'''Peringatan: Anda memuat suatu berkas yang telah pernah dihapus.'''
-
-Anda harus mempertimbangkan apakah perlu untuk melanjutkan pemuatan berkas ini.
-Log penghapusan berkas adalah sebagai berikut:",
'filename-bad-prefix' => "Nama berkas yang Anda muat diawali dengan '''\"\$1\"''', yang merupakan nama non-deskriptif yang biasanya diberikan secara otomatis oleh kamera digital. Harap pilih nama lain yang lebih deskriptif untuk berkas Anda.",
'upload-success-subj' => 'Berhasil dimuat',
'upload-success-msg' => 'Pengunggahan Anda dari [$2] berhasil. Hasilnya tersedia di sini: [[:{{ns:file}}:$1]]',
@@ -1715,6 +1770,23 @@ Silakan hubungi salah seorang [[Special:ListUsers/sysop|pengurus]].',
'upload-unknown-size' => 'Ukuran tidak diketahui',
'upload-http-error' => 'Kesalahan HTTP terjadi: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Timbul galat saat membuka berkas untuk pengecekan ZIP.',
+'zip-wrong-format' => 'Berkas yang diberikan bukanlah berkas ZIP.',
+'zip-bad' => 'Berkas adalah berkas ZIP yang rusak atau tidak terbaca.
+Berkas tersebut tidak dapat diperiksa keamanannya dengan baik.',
+'zip-unsupported' => 'Berkas ini adalah berkas ZIP yang menggunakan fitur ZIP yang tidak didukung oleh MediaWiki.
+Berkas tersebut tidak dapat diperiksa keamanannya dengan baik.',
+
+# Special:UploadStash
+'uploadstash' => 'Simpanan unggahan',
+'uploadstash-summary' => 'Halaman ini memberikan akses terhadap berkas yang diunggah (atau dalam proses pengunggahan), namun belum diterbitkan ke wiki. Berkas-berkas ini tidak dapat dilihat oleh siapa pun kecuali pengunggahnya.',
+'uploadstash-clear' => 'Hapus berkas simpanan',
+'uploadstash-nofiles' => 'Anda tidak memiliki berkas simpanan.',
+'uploadstash-badtoken' => 'Pelaksanaan tindakan tersebut gagal. Mungkin karena hak penyuntingan Anda telah kedaluwarsa. Coba lagi.',
+'uploadstash-errclear' => 'Penghapusan berkas gagal.',
+'uploadstash-refresh' => 'Segarkan daftar berkas.',
+
# img_auth script messages
'img-auth-accessdenied' => 'Akses ditolak',
'img-auth-nopathinfo' => 'PATH_INFO hilang.
@@ -1795,7 +1867,7 @@ Daftar berikut menampilkan {{PLURAL:$1|halaman dengan pranala langsung|$1 halama
Juga tersedia [[Special:WhatLinksHere/$2|daftar selengkapnya]].',
'nolinkstoimage' => 'Tidak ada halaman yang memiliki pranala ke berkas ini.',
'morelinkstoimage' => 'Lihat [[Special:WhatLinksHere/$1|pranala lainnya]] ke berkas ini.',
-'redirectstofile' => 'Berkas berikut {{PLURAL:$1|dialihkan|$1 dialihkan}} ke berkas ini:',
+'linkstoimage-redirect' => '$1 (pengalihan berkas) $2',
'duplicatesoffile' => '{{PLURAL:$1|Ada satu berkas yang|Sebanyak $1 berkas berikut}} merupakan duplikat dari berkas ini ([[Special:FileDuplicateSearch/$2|rincian lebih lanjut]]):',
'sharedupload' => 'Berkas ini berasal dari $1 dan mungkin digunakan oleh proyek-proyek lain.',
'sharedupload-desc-there' => 'Berkas ini berasal dari $1 dan mungkin digunakan oleh proyek-proyek lain.
@@ -1891,12 +1963,13 @@ Cek dahulu pranala lain ke templat tersebut sebelum menghapusnya.',
Halaman-halaman tersebut seharusnya berpaut ke topik-topik yang sesuai.<br />
Suatu halaman dianggap sebagai halaman disambiguasi apabila halaman tersebut menggunakan templat yang terhubung ke [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Pengalihan ganda',
-'doubleredirectstext' => 'Halaman ini memuat daftar halaman yang dialihkan ke halaman pengalihan yang lain.
+'doubleredirects' => 'Pengalihan ganda',
+'doubleredirectstext' => 'Halaman ini memuat daftar halaman yang dialihkan ke halaman pengalihan yang lain.
Setiap baris memuat pranala ke pengalihan pertama dan pengalihan kedua serta target dari pengalihan kedua yang umumnya adalah halaman yang "sebenarnya". Halaman peralihan pertama seharusnya dialihkan ke halaman yang bukan merupakan halaman peralihan.
Nama yang telah <del>dicoret</del> berarti telah dibetulkan.',
-'double-redirect-fixed-move' => '[[$1]] telah dipindahkan menjadi halaman peralihan ke [[$2]]',
-'double-redirect-fixer' => 'Revisi pengalihan',
+'double-redirect-fixed-move' => '[[$1]] telah dipindahkan menjadi halaman peralihan ke [[$2]]',
+'double-redirect-fixed-maintenance' => 'Memperbaiki pengalihan ganda dari [[$1]] ke [[$2]].',
+'double-redirect-fixer' => 'Revisi pengalihan',
'brokenredirects' => 'Pengalihan rusak',
'brokenredirectstext' => 'Pengalihan-pengalihan berikut merujuk pada halaman yang tidak ada:',
@@ -1973,6 +2046,7 @@ Harap perhatikan bahwa situs web lain mungkin memiliki pranala ke suatu berkas d
'pager-newer-n' => '{{PLURAL:$1|1 lebih baru|$1 lebih baru}}',
'pager-older-n' => '{{PLURAL:$1|1 lebih lama|$1 lebih lama}}',
'suppress' => 'Pengawas',
+'querypage-disabled' => 'Halaman istimewa ini dinonaktifkan demi alasan kinerja.',
# Book sources
'booksources' => 'Sumber buku',
@@ -2023,7 +2097,7 @@ Lihat pula [[Special:WantedCategories|kategori yang diinginkan]].',
'sp-deletedcontributions-contribs' => 'kontribusi',
# Special:LinkSearch
-'linksearch' => 'Pranala luar',
+'linksearch' => 'Pencarian pranala luar',
'linksearch-pat' => 'Pola pencarian:',
'linksearch-ns' => 'Ruang nama:',
'linksearch-ok' => 'Cari',
@@ -2087,6 +2161,10 @@ Alamat surel yang Anda masukkan di [[Special:Preferences|preferensi akun Anda]]
'noemailtext' => 'Pengguna ini tidak memberikan suatu alamat surel yang valid.',
'nowikiemailtitle' => 'Surel tak diizinkan',
'nowikiemailtext' => 'Pengguna ini telah memilih untuk tidak menerima surel dari pengguna lain.',
+'emailnotarget' => 'Nama pengguna penerima tidak ada atau tidak sah.',
+'emailtarget' => 'Masukkan nama pengguna penerima',
+'emailusername' => 'Nama pengguna:',
+'emailusernamesubmit' => 'Kirim',
'email-legend' => 'Kirim surel ke pengguna {{SITENAME}} lainnya',
'emailfrom' => 'Dari:',
'emailto' => 'Untuk:',
@@ -2111,10 +2189,10 @@ Alamat surel yang Anda masukkan di [[Special:Preferences|preferensi akun Anda]]
'watchlistanontext' => 'Silakan $1 untuk melihat atau menyunting daftar pantauan Anda.',
'watchnologin' => 'Belum masuk log',
'watchnologintext' => 'Anda harus [[Special:UserLogin|masuk log]] untuk mengubah daftar pantauan Anda.',
-'addedwatch' => 'Telah ditambahkan ke daftar pantauan',
+'addwatch' => 'Tambahkan ke daftar pantauan',
'addedwatchtext' => "Halaman \"[[:\$1]]\" telah ditambahkan ke [[Special:Watchlist|daftar pantauan]] Anda.
Perubahan-perubahan berikutnya pada halaman tersebut dan halaman pembicaraan terkaitnya akan tercantum di sini, dan halaman itu akan ditampilkan '''tebal''' pada [[Special:RecentChanges|daftar perubahan terbaru]] agar lebih mudah terlihat.",
-'removedwatch' => 'Telah dihapus dari daftar pantauan',
+'removewatch' => 'Hapus dari daftar pantauan',
'removedwatchtext' => 'Halaman "[[:$1]]" telah dihapus dari [[Special:Watchlist|daftar pantauan]] Anda.',
'watch' => 'Pantau',
'watchthispage' => 'Pantau halaman ini',
@@ -2135,8 +2213,9 @@ Perubahan-perubahan berikutnya pada halaman tersebut dan halaman pembicaraan ter
'watchlist-options' => 'Opsi daftar pantauan',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Memantau...',
-'unwatching' => 'Menghilangkan pemantauan...',
+'watching' => 'Memantau...',
+'unwatching' => 'Menghilangkan pemantauan...',
+'watcherrortext' => 'Terjadi kesalahan saat mengubah preferensi daftar pantauan Anda untuk " $1 ".',
'enotif_mailer' => 'Pengirim Notifikasi {{SITENAME}}',
'enotif_reset' => 'Tandai semua halaman sebagai telah dikunjungi',
@@ -2168,16 +2247,16 @@ Anda juga dapat menyetel ulang tanda pemberitahuan untuk semua halaman pantauan
--
Untuk mengubah setelan pemberitahuan surel, kunjungi
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Untuk mengubah setelan daftar pantauan, kunjungi
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Untuk menghapus halaman dari daftar pantauan, kunjungi
$UNWATCHURL
Umpan balik dan bantuan lebih lanjut:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Hapus halaman',
@@ -2192,7 +2271,7 @@ Umpan balik dan bantuan lebih lanjut:
'confirmdeletetext' => 'Anda akan menghapus halaman atau berkas ini secara permanen berikut semua sejarahnya dari basis data. Pastikan bahwa Anda memang ingin melakukannya, mengetahui segala akibatnya, dan apa yang Anda lakukan ini adalah sejalan dengan [[{{MediaWiki:Policy-url}}|kebijakan {{SITENAME}}]].',
'actioncomplete' => 'Proses selesai',
'actionfailed' => 'Eksekusi gagal',
-'deletedtext' => '"<nowiki>$1</nowiki>" telah dihapus. Lihat $2 untuk log terkini halaman yang telah dihapus.',
+'deletedtext' => '"$1" telah dihapus. Lihat $2 untuk log terkini halaman yang telah dihapus.',
'deletedarticle' => 'menghapus "[[$1]]"',
'suppressedarticle' => '"[[$1]]" disembunyikan',
'dellogpage' => 'Log penghapusan',
@@ -2248,7 +2327,7 @@ Lihat [[Special:ProtectedPages|daftar halaman terlindungi]] untuk daftar perlind
'protect_expiry_invalid' => 'Waktu kedaluwarsa tidak sah.',
'protect_expiry_old' => 'Waktu kedaluwarsa adalah pada masa lampau.',
'protect-unchain-permissions' => 'Aktifkan opsi pelindungan lanjutan',
-'protect-text' => "Anda dapat melihat atau mengganti tingkatan pelindungan untuk halaman '''<nowiki>$1</nowiki>''' di sini.",
+'protect-text' => "Anda dapat melihat atau mengganti tingkatan pelindungan untuk halaman '''$1''' di sini.",
'protect-locked-blocked' => "Anda tak dapat mengganti tingkat pelindungan selagi diblokir. Berikut adalah konfigurasi saat ini untuk halaman '''$1''':",
'protect-locked-dblock' => "Tingkat pelindungan tak dapat diganti karena aktifnya penguncian basis data. Berikut adalah konfigurasi saat ini untuk halaman '''$1''':",
'protect-locked-access' => "Akun Anda tidak dapat memiliki hak untuk mengganti tingkat pelindungan halaman. Berikut adalah konfigurasi saat ini untuk halaman '''$1''':",
@@ -2298,9 +2377,8 @@ Lihat [[Special:ProtectedPages|daftar halaman terlindungi]] untuk daftar perlind
'viewdeletedpage' => 'Pembatalan penghapusan',
'undeletepagetext' => '{{PLURAL:$1|Halaman berikut|Sejumlah $1 halaman}} telah dihapus tapi masih ada di dalam arsip dan dapat dikembalikan. Arsip tersebut mungkin akan dibersihkan secara berkala.',
'undelete-fieldset-title' => 'Mengembalikan revisi',
-'undeleteextrahelp' => "Untuk mengembalikan seluruh revisi-revisi terdahulu halaman, biarkan seluruh kotak cek tidak terpilih dan klik '''''Kembalikan'''''.
-Untuk melakukan pengembalian selektif, cek kotak revisi yang diinginkan dan klik '''''Kembalikan'''''.
-Menekan tombol '''''Reset''''' akan mengosongkan isian komentar dan semua kotak cek.",
+'undeleteextrahelp' => "Untuk mengembalikan seluruh versi terdahulu halaman, biarkan semua kotak cek tidak terpilih dan klik '''''{{int:undeletebtn}}'''''.
+Untuk melakukan pengembalian selektif, cek kotak revisi yang sesuai dengan revisi yang ingin dikembalikan, dan klik '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|revisi|revisi}} diarsipkan',
'undeletehistory' => 'Jika Anda mengembalikan halaman tersebut, semua revisi juga akan dikembalikan ke dalam daftar versi terdahulu halaman.
Jika sebuah halaman baru dengan nama yang sama telah dibuat sejak penghapusan, revisi-revisi yang dikembalikan tersebut akan ditampilkan dalam daftar versi terdahulu.',
@@ -2341,9 +2419,12 @@ $1',
'undelete-show-file-submit' => 'Ya',
# Namespace form on various pages
-'namespace' => 'Ruang nama:',
-'invert' => 'Balikkan pilihan',
-'blanknamespace' => '(Utama)',
+'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',
+'tooltip-namespace_association' => 'Centang halaman ini untuk menyertakan ruang nama pembicaraan atau subjek yang terkait dengan ruang nama terpilih',
+'blanknamespace' => '(Utama)',
# Contributions
'contributions' => 'Kontribusi pengguna',
@@ -2392,13 +2473,15 @@ Catatan log pemblokiran terakhir tersedia di bawah ini sebagai rujukan:',
'whatlinkshere-filters' => 'Penyaring',
# Block/unblock
+'autoblockid' => 'Blokir otomatis #$1',
+'block' => 'Blokir pengguna',
+'unblock' => 'Buka blokir pengguna',
'blockip' => 'Blokir pengguna',
'blockip-title' => 'Blokir pengguna',
'blockip-legend' => 'Blokir pengguna',
'blockiptext' => 'Gunakan formulir di bawah untuk memblokir akses penulisan dari sebuah alamat IP atau pengguna tertentu.
Ini hanya boleh dilakukan untuk mencegah vandalisme, dan sejalan dengan [[{{MediaWiki:Policy-url}}|kebijakan]].
Masukkan alasan Anda di bawah (contoh, menuliskan nama halaman yang telah divandalisasi).',
-'ipaddress' => 'Alamat IP:',
'ipadressorusername' => 'Alamat IP atau nama pengguna:',
'ipbexpiry' => 'Kedaluwarsa:',
'ipbreason' => 'Alasan:',
@@ -2412,7 +2495,7 @@ Masukkan alasan Anda di bawah (contoh, menuliskan nama halaman yang telah divand
** Perilaku intimidasi/pelecehan
** Menyalahgunakan beberapa akun
** Nama pengguna tak layak',
-'ipbanononly' => 'Hanya blokir pengguna anonim',
+'ipb-hardblock' => 'Cegah pengguna terdaftar untuk menyunting dari alamat IP ini',
'ipbcreateaccount' => 'Cegah pembuatan akun',
'ipbemailban' => 'Cegah pengguna mengirimkan surel',
'ipbenableautoblock' => 'Blokir alamat IP terakhir yang digunakan pengguna ini secara otomatis, dan semua alamat berikutnya yang mereka coba gunakan untuk menyunting.',
@@ -2423,12 +2506,15 @@ Masukkan alasan Anda di bawah (contoh, menuliskan nama halaman yang telah divand
'ipbotherreason' => 'Alasan lain/tambahan:',
'ipbhidename' => 'Sembunyikan nama pengguna dari suntingan dan daftar',
'ipbwatchuser' => 'Pantau halaman pengguna dan pembicaraan pengguna ini',
-'ipballowusertalk' => 'Izinkan pengguna ini untuk menyunting halaman pembicaraan sendiri ketika diblokir',
+'ipb-disableusertalk' => 'Cegah pengguna ini untuk menyunting halaman pembicaraannya saat diblokir',
'ipb-change-block' => 'Blokir kembali pengguna dengan set konfigurasi berikut',
+'ipb-confirm' => 'Konfirmasi blokir',
'badipaddress' => 'Format alamat IP atau nama pengguna salah.',
'blockipsuccesssub' => 'Pemblokiran sukses',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] telah diblokir.<br />
Lihat [[Special:IPBlockList|Daftar IP]] untuk meninjau kembali pemblokiran.',
+'ipb-blockingself' => 'Anda akan memblokir diri sendiri! Apakah Anda yakin akan melakukannya?',
+'ipb-confirmhideuser' => 'Anda akan memblokir pengguna dengan mengaktifkan "sembunyikan pengguna" diaktifkan. Ini akan menyembunyikan nama pengguna pada semua daftar dan entri log. Apakah Anda yakin ingin melakukannya?',
'ipb-edit-dropdown' => 'Sunting alasan pemblokiran',
'ipb-unblock-addr' => 'Hilangkan blokir $1',
'ipb-unblock' => 'Hilangkan blokir seorang pengguna atau suatu alamat IP',
@@ -2438,17 +2524,23 @@ Lihat [[Special:IPBlockList|Daftar IP]] untuk meninjau kembali pemblokiran.',
'unblockiptext' => 'Gunakan formulir di bawah untuk mengembalikan kemampuan menulis sebuah alamat IP atau pengguna yang sebelumnya telah diblokir.',
'ipusubmit' => 'Hilangkan blokir ini',
'unblocked' => 'Blokir terhadap [[User:$1|$1]] telah dicabut',
+'unblocked-range' => '$1 telah diblokir',
'unblocked-id' => 'Blokir $1 telah dicabut',
+'blocklist' => 'Pengguna terblokir',
'ipblocklist' => 'Pengguna terblokir',
'ipblocklist-legend' => 'Cari pengguna yang diblokir',
-'ipblocklist-username' => 'Nama pengguna atau alamat IP:',
-'ipblocklist-sh-userblocks' => '$1 pemblokiran akun',
-'ipblocklist-sh-tempblocks' => '$1 pemblokiran sementara',
-'ipblocklist-sh-addressblocks' => '$1 pemblokiran IP tunggal',
+'blocklist-userblocks' => 'Sembunyikan pemblokiran akun',
+'blocklist-tempblocks' => 'Sembunyikan pemblokiran sementara',
+'blocklist-addressblocks' => 'Sembunyikan pemblokiran IP tunggal',
+'blocklist-timestamp' => 'Stempel waktu',
+'blocklist-target' => 'Target',
+'blocklist-expiry' => 'Kedaluwarsa',
+'blocklist-by' => 'Admin pemblokir',
+'blocklist-params' => 'Parameter pemblokiran',
+'blocklist-reason' => 'Alasan',
'ipblocklist-submit' => 'Cari',
'ipblocklist-localblock' => 'Blok lokal',
'ipblocklist-otherblocks' => '{{PLURAL:$1|pemblokiran|pemblokiran}} lain',
-'blocklistline' => '$1, $2 memblokir $3 ($4)',
'infiniteblock' => 'tak terbatas',
'expiringblock' => 'kedaluwarsa pada $1 $2',
'anononlyblock' => 'hanya pengguna anonim',
@@ -2471,7 +2563,7 @@ Alasan yang diberikan untuk pemblokiran $1 adalah: "$2"',
'reblock-logentry' => 'mengubah pemblokiran [[$1]] dengan waktu kedaluwarsa $2 $3',
'blocklogtext' => 'Di bawah ini adalah log pemblokiran dan pembukaan blokir terhadap pengguna.
Alamat IP yang diblokir secara otomatis tidak terdapat di dalam daftar ini.
-Lihat [[Special:IPBlockList|daftar alamat IP yang diblokir]] untuk daftar pemblokiran terkini.',
+Lihat [[Special:BlockList|daftar alamat IP yang diblokir]] untuk daftar pemblokiran terkini.',
'unblocklogentry' => 'menghilangkan blokir "$1"',
'block-log-flags-anononly' => 'hanya pengguna anonim',
'block-log-flags-nocreate' => 'pembuatan akun dimatikan',
@@ -2485,9 +2577,9 @@ Lihat [[Special:IPBlockList|daftar alamat IP yang diblokir]] untuk daftar pemblo
'ipb_expiry_temp' => 'Pemblokiran atas nama pengguna yang disembunyikan harus permanen.',
'ipb_hide_invalid' => 'Tak dapat menutup akun ini; mungkin akun tersebut memiliki terlalu banyak suntingan.',
'ipb_already_blocked' => '"$1" telah diblokir',
-'ipb-needreblock' => '== Sudah diblokir ==
-$1 sudah diblokir. Apakah Anda ingin mengubah set pemblokiran yang bersangkutan?',
+'ipb-needreblock' => '$1 sudah diblokir. Apakah Anda ingin mengubah set pemblokiran yang bersangkutan?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Blok|Blok}} lain',
+'unblock-hideuser' => 'Anda tidak dapat membuka blokir pengguna ini karena nama pengguna mereka telah disembunyikan.',
'ipb_cant_unblock' => 'Kesalahan: Blokir dengan ID $1 tidak ditemukan. Blokir tersebut kemungkinan telah dibuka.',
'ipb_blocked_as_range' => 'Kesalahan: IP $1 tidak diblok secara langsung dan tidak dapat dilepaskan. IP $1 diblok sebagai bagian dari pemblokiran kelompok IP $2, yang dapat dilepaskan.',
'ip_range_invalid' => 'Blok IP tidak sah.',
@@ -2521,6 +2613,7 @@ Pastikan Anda [[Special:UnlockDB|membuka kuncinya]] setelah pemeliharaan selesai
'unlockdbsuccesstext' => 'Kunci basis data telah dibuka.',
'lockfilenotwritable' => 'Berkas kunci basis data tidak dapat ditulis. Untuk mengunci atau membuka basis data, berkas ini harus dapat ditulis oleh server web.',
'databasenotlocked' => 'Basis data tidak terkunci.',
+'lockedbyandtime' => '(oleh $1 pada $2 $3)',
# Move page
'move-page' => 'Pindahkan $1',
@@ -2636,7 +2729,7 @@ Jika Anda hanya ingin mengimpor versi terbaru, Anda melakukannya lebih cepat den
'allmessagesdefault' => 'Teks baku',
'allmessagescurrent' => 'Teks sekarang',
'allmessagestext' => 'Ini adalah daftar semua pesan sistem yang tersedia dalam ruang nama MediaWiki.
-Silakan kunjungi [http://www.mediawiki.org/wiki/Localisation Pelokalan MediaWiki] dan [http://translatewiki.net translatewiki.net] jika Anda ingin berkontribusi untuk pelokalan generik MediaWiki.',
+Silakan kunjungi [//www.mediawiki.org/wiki/Localisation Pelokalan MediaWiki] dan [//translatewiki.net translatewiki.net] jika Anda ingin berkontribusi untuk pelokalan generik MediaWiki.',
'allmessagesnotsupportedDB' => "Halaman ini tidak dapat digunakan karena '''\$wgUseDatabaseMessages''' telah dimatikan.",
'allmessages-filter-legend' => 'Penyaring',
'allmessages-filter' => 'Saring dengan keadaan kustomisasi:',
@@ -2800,9 +2893,7 @@ Simpan ke komputer Anda dan unggah ke sini.',
'vector.js' => '/* Semua JavaScript di sini akan dimuatkan untuk para pengguna yang menggunakan kulit Vector */',
# Metadata
-'nodublincore' => 'Metadata Dublin Core RDF dimatikan di server ini.',
-'nocreativecommons' => 'Metadata Creative Commons RDF dimatikan di server ini.',
-'notacceptable' => 'Server wiki tidak dapat menyediakan data dalam format yang dapat dibaca oleh client Anda.',
+'notacceptable' => 'Server wiki tidak dapat menyediakan data dalam format yang dapat dibaca oleh client Anda.',
# Attribution
'anonymous' => '{{PLURAL:$1|pengguna|para pengguna}} anonim {{SITENAME}}',
@@ -2826,36 +2917,22 @@ Ini mungkin disebabkan oleh pranala ke situs luar yang termasuk dalam daftar hit
'spam_blanking' => 'Semua revisi yang memiliki pranala ke $1, pengosongan',
# Info page
-'infosubtitle' => 'Informasi halaman',
-'numedits' => 'Jumlah suntingan (halaman): $1',
-'numtalkedits' => 'Jumlah suntingan (halaman pembicaraan): $1',
-'numwatchers' => 'Jumlah pengamat: $1',
-'numauthors' => 'Jumlah pengarang yang berbeda (halaman): $1',
-'numtalkauthors' => 'Jumlah pengarang yang berbeda (halaman pembicaraan): $1',
+'pageinfo-title' => 'Informasi untuk "$1"',
+'pageinfo-header-edits' => 'Suntingan',
+'pageinfo-header-watchlist' => 'Daftar pantauan',
+'pageinfo-header-views' => 'Tampilan',
+'pageinfo-subjectpage' => 'Halaman',
+'pageinfo-talkpage' => 'Halaman pembicaraan',
+'pageinfo-watchers' => 'Jumlah pemantau',
+'pageinfo-edits' => 'Jumlah suntingan',
+'pageinfo-authors' => 'Jumlah penulis yang berbeda',
+'pageinfo-views' => 'Jumlah penampilan',
+'pageinfo-viewsperedit' => 'Jumlah penampilan per suntingan',
# Skin names
'skinname-standard' => 'Klasik',
'skinname-simple' => 'Sederhana',
-# Math options
-'mw_math_png' => 'Selalu buat PNG',
-'mw_math_simple' => 'HTML jika sangat sederhana atau PNG',
-'mw_math_html' => 'HTML jika mungkin atau PNG',
-'mw_math_source' => 'Biarkan sebagai TeX (untuk penjelajah web teks)',
-'mw_math_modern' => 'Disarankan untuk penjelajah web modern',
-'mw_math_mathml' => 'MathML jika mungkin (percobaan)',
-
-# Math errors
-'math_failure' => 'Gagal memparse',
-'math_unknown_error' => 'Kesalahan yang tidak diketahui',
-'math_unknown_function' => 'fungsi yang tidak diketahui',
-'math_lexing_error' => 'kesalahan lexing',
-'math_syntax_error' => 'kesalahan sintaks',
-'math_image_error' => 'Konversi PNG gagal; periksa apakah latex dan dvips (atau dvips + gs + convert) terinstal dengan benar',
-'math_bad_tmpdir' => 'Tidak dapat menulisi atau membuat direktori sementara math',
-'math_bad_output' => 'Tidak dapat menulisi atau membuat direktori keluaran math',
-'math_notexvc' => 'Executable texvc hilang; silakan lihat math/README untuk cara konfigurasi.',
-
# Patrolling
'markaspatrolleddiff' => 'Tandai telah dipatroli',
'markaspatrolledtext' => 'Tandai halaman ini telah dipatroli',
@@ -2891,22 +2968,25 @@ $1',
'nextdiff' => 'Revisi selanjutnya →',
# Media information
-'mediawarning' => "'''Peringatan''': Berkas ini mungkin mengandung kode berbahaya.
+'mediawarning' => "'''Peringatan''': Berkas ini mungkin mengandung kode berbahaya.
Jika dijalankan, sistem Anda akan berisiko terserang.",
-'imagemaxsize' => "Batas ukuran gambar:<br />''(untuk halaman deskripsi berkas)''",
-'thumbsize' => 'Ukuran miniatur:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|halaman|halaman}}',
-'file-info' => 'ukuran berkas: $1, tipe MIME: $2',
-'file-info-size' => '$1 × $2 piksel, ukuran berkas: $3, tipe MIME: $4',
-'file-nohires' => '<small>Tak tersedia resolusi yang lebih tinggi.</small>',
-'svg-long-desc' => 'Berkas SVG, nominal $1 × $2 piksel, besar berkas: $3',
-'show-big-image' => 'Resolusi penuh',
-'show-big-image-thumb' => '<small>Ukuran pratayang ini: $1 × $2 piksel</small>',
-'file-info-gif-looped' => 'melingkar',
-'file-info-gif-frames' => '$1 {{PLURAL:$1||}}frame',
-'file-info-png-looped' => 'ulang',
-'file-info-png-repeat' => 'dimainkan $1 {{PLURAL:$1|kali|kali}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|bingkai|bingkai}}',
+'imagemaxsize' => "Batas ukuran gambar:<br />''(untuk halaman deskripsi berkas)''",
+'thumbsize' => 'Ukuran miniatur:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|halaman|halaman}}',
+'file-info' => 'ukuran berkas: $1, tipe MIME: $2',
+'file-info-size' => '$1 × $2 piksel, ukuran berkas: $3, tipe MIME: $4',
+'file-info-size-pages' => '$1 × $2 piksel, ukuran berkas: $3, jenis MIME: $4, $5 {{PLURAL:$5|halaman|halaman}}',
+'file-nohires' => '<small>Tak tersedia resolusi yang lebih tinggi.</small>',
+'svg-long-desc' => 'Berkas SVG, nominal $1 × $2 piksel, besar berkas: $3',
+'show-big-image' => 'Resolusi penuh',
+'show-big-image-preview' => '<small>Ukuran pratayang ini: $1.</small>',
+'show-big-image-other' => '<small>Resolusi lain: $1.</small>',
+'show-big-image-size' => '$1 × $2 piksel',
+'file-info-gif-looped' => 'melingkar',
+'file-info-gif-frames' => '$1 {{PLURAL:$1||}}frame',
+'file-info-png-looped' => 'ulang',
+'file-info-png-repeat' => 'dimainkan $1 {{PLURAL:$1|kali|kali}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|bingkai|bingkai}}',
# Special:NewFiles
'newimages' => 'Berkas baru',
@@ -2937,14 +3017,21 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
'metadata-help' => 'Berkas ini mengandung informasi tambahan yang mungkin ditambahkan oleh kamera digital atau pemindai yang digunakan untuk membuat atau mendigitalisasi berkas. Jika berkas ini telah mengalami modifikasi, rincian yang ada mungkin tidak secara penuh merefleksikan informasi dari gambar yang sudah dimodifikasi ini.',
'metadata-expand' => 'Tampilkan rincian tambahan',
'metadata-collapse' => 'Sembunyikan rincian tambahan',
-'metadata-fields' => 'Entri metadata EXIF berikut akan ditampilkan pada halaman informasi gambar jika tabel metadata disembunyikan. Entri lain secara baku akan disembunyikan
-* make
+'metadata-fields' => 'Bidang metadata gambar yang tercantum dalam pesan ini akan dimasukkan pada tampilan halaman gambar ketika tabel metadata diciutkan.
+Data lain akan disembunyikan secara bawaan.
+ * make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Lebar',
@@ -2959,13 +3046,11 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
'exif-ycbcrpositioning' => 'Penempatan Y dan C',
'exif-xresolution' => 'Resolusi horizontal',
'exif-yresolution' => 'Resolusi vertikal',
-'exif-resolutionunit' => 'Satuan resolusi X dan Y',
'exif-stripoffsets' => 'Lokasi data gambar',
'exif-rowsperstrip' => 'Jumlah baris per strip',
'exif-stripbytecounts' => 'Bita per strip kompresi',
'exif-jpeginterchangeformat' => 'Ofset ke JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bita data JPEG',
-'exif-transferfunction' => 'Fungsi transfer',
'exif-whitepoint' => 'Kromatisitas titik putih',
'exif-primarychromaticities' => 'Kromatisitas warna primer',
'exif-ycbcrcoefficients' => 'Koefisien matriks transformasi ruang warna',
@@ -2984,7 +3069,6 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
'exif-compressedbitsperpixel' => 'Mode kompresi gambar',
'exif-pixelydimension' => 'Lebar gambar',
'exif-pixelxdimension' => 'Tinggi gambar',
-'exif-makernote' => 'Catatan produsen',
'exif-usercomment' => 'Komentar pengguna',
'exif-relatedsoundfile' => 'Berkas audio yang berhubungan',
'exif-datetimeoriginal' => 'Tanggal dan waktu pembuatan data',
@@ -2998,7 +3082,6 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
'exif-exposureprogram' => 'Program pajanan',
'exif-spectralsensitivity' => 'Sensitivitas spektral',
'exif-isospeedratings' => 'Rating kecepatan ISO',
-'exif-oecf' => 'Faktor konversi optoelektronik',
'exif-shutterspeedvalue' => 'Kecepatan rana APEX',
'exif-aperturevalue' => 'Bukaan APEX',
'exif-brightnessvalue' => 'Kecerahan APEX',
@@ -3011,7 +3094,6 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
'exif-focallength' => 'Jarak fokus lensa',
'exif-subjectarea' => 'Wilayah subjek',
'exif-flashenergy' => 'Energi kilas',
-'exif-spatialfrequencyresponse' => 'Respons frekuensi spasial',
'exif-focalplanexresolution' => 'Resolusi bidang fokus X',
'exif-focalplaneyresolution' => 'Resolusi bidang fokus Y',
'exif-focalplaneresolutionunit' => 'Unit resolusi bidang fokus',
@@ -3020,7 +3102,6 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
'exif-sensingmethod' => 'Metode penginderaan',
'exif-filesource' => 'Sumber berkas',
'exif-scenetype' => 'Tipe pemandangan',
-'exif-cfapattern' => 'Pola CFA',
'exif-customrendered' => 'Proses buatan gambar',
'exif-exposuremode' => 'Mode pajanan',
'exif-whitebalance' => 'Keseimbangan putih',
@@ -3065,10 +3146,79 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
'exif-gpsareainformation' => 'Nama wilayah GPS',
'exif-gpsdatestamp' => 'Tanggal GPS',
'exif-gpsdifferential' => 'Koreksi diferensial GPS',
+'exif-jpegfilecomment' => 'Komentar berkas JPEG',
+'exif-keywords' => 'Kata kunci',
+'exif-worldregioncreated' => 'Wilayah dunia tempat pengambilan gambar',
+'exif-countrycreated' => 'Negara tempat pengambilan gambar',
+'exif-countrycodecreated' => 'Kode negara tempat pengambilan gambar',
+'exif-provinceorstatecreated' => 'Provinsi atau negara bagian tempat pengambilan gambar',
+'exif-citycreated' => 'Kota tempat pengambilan gambar',
+'exif-sublocationcreated' => 'Sublokasi kota tempat pengambilan gambar',
+'exif-worldregiondest' => 'Wilayah dunia yang ditampilkan',
+'exif-countrydest' => 'Negara yang ditampilkan',
+'exif-countrycodedest' => 'Kode negara yang ditampilkan',
+'exif-provinceorstatedest' => 'Provinsi atau negara bagian yang ditampilkan',
+'exif-citydest' => 'Kota yang ditampilkan',
+'exif-sublocationdest' => 'Sublokasi kota yang ditampilkan',
'exif-objectname' => 'Judul singkat',
+'exif-specialinstructions' => 'Instruksi khusus',
+'exif-headline' => 'Tajuk',
+'exif-credit' => 'Kredit/Penyedia',
+'exif-source' => 'Sumber',
+'exif-editstatus' => 'Status editorial gambar',
+'exif-urgency' => 'Urgensi',
+'exif-fixtureidentifier' => 'Nama fikstur',
+'exif-locationdest' => 'Lokasi yang digambarkan',
+'exif-locationdestcode' => 'Kode lokasi yang digambarkan',
+'exif-objectcycle' => 'Waktu tujuan media',
+'exif-contact' => 'Informasi kontak',
+'exif-writer' => 'Penulis',
+'exif-languagecode' => 'Bahasa',
+'exif-iimversion' => 'Versi IIM',
+'exif-iimcategory' => 'Kategori',
+'exif-iimsupplementalcategory' => 'Kategori tambahan',
+'exif-datetimeexpires' => 'Jangan gunakan setelah',
+'exif-datetimereleased' => 'Dirilis pada',
+'exif-originaltransmissionref' => 'Kode lokasi transmisi asli',
+'exif-identifier' => 'Pengenal',
+'exif-lens' => 'Lensa yang digunakan',
+'exif-serialnumber' => 'Nomor seri kamera',
+'exif-cameraownername' => 'Pemilik kamera',
+'exif-label' => 'Label',
+'exif-datetimemetadata' => 'Tanggal terakhir perubahan metadata',
+'exif-nickname' => 'Nama informal gambar',
+'exif-rating' => 'Nilai (dari 5)',
+'exif-rightscertificate' => 'Sertifikat manajemen hak',
+'exif-copyrighted' => 'Status hak cipta',
+'exif-copyrightowner' => 'Pemilik hak cipta',
+'exif-usageterms' => 'Ketentuan penggunaan',
+'exif-webstatement' => 'Pernyataan hak cipta daring',
+'exif-originaldocumentid' => 'ID unik dokumen asli',
+'exif-licenseurl' => 'URL lisensi hak cipta',
+'exif-morepermissionsurl' => 'Informasi lisensi alternatif',
+'exif-attributionurl' => 'Ketika menggunakan kembali karya ini, tolong tautkan ke',
+'exif-preferredattributionname' => 'Ketika menggunakan kembali karya ini, tolong berikan kredit',
+'exif-pngfilecomment' => 'Komentar berkas PNG',
+'exif-disclaimer' => 'Penyangkalan',
+'exif-contentwarning' => 'Peringatan konten',
+'exif-giffilecomment' => 'Komentar berkas GIF',
+'exif-intellectualgenre' => 'Jenis objek',
+'exif-subjectnewscode' => 'Kode subjek',
+'exif-scenecode' => 'Kode adegan IPTC',
+'exif-event' => 'Peristiwa yang digambarkan',
+'exif-organisationinimage' => 'Organisasi yang digambarkan',
+'exif-personinimage' => 'Orang yang digambarkan',
+'exif-originalimageheight' => 'Tinggi gambar sebelum dipotong',
+'exif-originalimagewidth' => 'Lebar gambar sebelum dipotong',
# EXIF attributes
'exif-compression-1' => 'Tak terkompresi',
+'exif-compression-2' => 'CCITT Group 3 1-Dimensional Modified Huffman RLE',
+'exif-compression-3' => 'CCITT Group 3 fax encoding',
+'exif-compression-4' => 'CCITT Group 4 fax encoding',
+
+'exif-copyrighted-true' => 'Berhak cipta',
+'exif-copyrighted-false' => 'Domain publik',
'exif-unknowndate' => 'Tanggal tak diketahui',
@@ -3084,6 +3234,8 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
'exif-planarconfiguration-1' => 'format chunky',
'exif-planarconfiguration-2' => 'format planar',
+'exif-colorspace-65535' => 'Tidak dikalibrasi',
+
'exif-componentsconfiguration-0' => 'tak tersedia',
'exif-exposureprogram-0' => 'Tak terdefinisi',
@@ -3197,6 +3349,10 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
'exif-gpslongitude-e' => 'Bujur timur',
'exif-gpslongitude-w' => 'Bujur barat',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|meter}} di atas permukaan laut',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|meter}} di bawah permukaan laut',
+
'exif-gpsstatus-a' => 'Pengukuran sedang berlangsung',
'exif-gpsstatus-v' => 'Interoperabilitas pengukuran',
@@ -3208,21 +3364,73 @@ Pranala-pranala selanjutnya pada baris yang sama dianggap sebagai pengecualian,
'exif-gpsspeed-m' => 'Mil per jam',
'exif-gpsspeed-n' => 'Knot',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometer',
+'exif-gpsdestdistance-m' => 'Mil',
+'exif-gpsdestdistance-n' => 'Mil laut',
+
+'exif-gpsdop-excellent' => 'Sangat baik ($1)',
+'exif-gpsdop-good' => 'Baik ($1)',
+'exif-gpsdop-moderate' => 'Moderat ($1)',
+'exif-gpsdop-fair' => 'Cukup ($1)',
+'exif-gpsdop-poor' => 'Buruk ($1)',
+
+'exif-objectcycle-a' => 'Hanya pagi',
+'exif-objectcycle-p' => 'Hanya malam',
+'exif-objectcycle-b' => 'Baik pagi maupun malam',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Arah sejati',
'exif-gpsdirection-m' => 'Arah magnetis',
+'exif-ycbcrpositioning-1' => 'Tengah (centered)',
+'exif-ycbcrpositioning-2' => 'Atas (co-sited)',
+
+'exif-dc-contributor' => 'Kontributor',
+'exif-dc-coverage' => 'Lingkup temporal atau spasial media',
+'exif-dc-date' => 'Tanggal',
+'exif-dc-publisher' => 'Penerbit',
+'exif-dc-relation' => 'Media terkait',
+'exif-dc-rights' => 'Hak',
+'exif-dc-source' => 'Media sumber',
+'exif-dc-type' => 'Jenis media',
+
+'exif-rating-rejected' => 'Ditolak',
+
+'exif-isospeedratings-overflow' => 'Lebih dari 65535',
+
+'exif-iimcategory-ace' => 'Seni, budaya, dan hiburan',
+'exif-iimcategory-clj' => 'Kejahatan dan hukum',
+'exif-iimcategory-dis' => 'Bencana dan kecelakaan',
+'exif-iimcategory-fin' => 'Ekonomi dan bisnis',
+'exif-iimcategory-edu' => 'Pendidikan',
+'exif-iimcategory-evn' => 'Lingkungan',
+'exif-iimcategory-hth' => 'Kesehatan',
+'exif-iimcategory-hum' => 'Minat insani',
+'exif-iimcategory-lab' => 'Ketenagakerjaan',
+'exif-iimcategory-lif' => 'Gaya hidup dan rekreasi',
+'exif-iimcategory-pol' => 'Politik',
+'exif-iimcategory-rel' => 'Agama dan kepercayaan',
+'exif-iimcategory-sci' => 'Ilmu dan teknologi',
+'exif-iimcategory-soi' => 'Isu sosial',
+'exif-iimcategory-spo' => 'Olahraga',
+'exif-iimcategory-war' => 'Perang, konflik, dan keresahan',
+'exif-iimcategory-wea' => 'Cuaca',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Rendah ($1)',
+'exif-urgency-high' => 'Tinggi ($1)',
+'exif-urgency-other' => 'Prioritas ubahsuaian ($1)',
+
# External editor support
'edit-externally' => 'Sunting berkas ini dengan aplikasi luar',
-'edit-externally-help' => '(Lihat [http://www.mediawiki.org/wiki/Manual:External_editors instruksi pengaturan] untuk informasi lebih lanjut)',
+'edit-externally-help' => '(Lihat [//www.mediawiki.org/wiki/Manual:External_editors instruksi pengaturan] untuk informasi lebih lanjut)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'semua',
-'imagelistall' => 'semua',
-'watchlistall2' => 'semua',
-'namespacesall' => 'semua',
-'monthsall' => 'semua',
-'limitall' => 'semua',
+'watchlistall2' => 'semua',
+'namespacesall' => 'semua',
+'monthsall' => 'semua',
+'limitall' => 'semua',
# E-mail address confirmation
'confirmemail' => 'Konfirmasi alamat surel',
@@ -3301,17 +3509,24 @@ $1',
'trackbackdeleteok' => 'Pelacakan balik berhasil dihapus.',
# Delete conflict
-'deletedwhileediting' => "'''Peringatan''': Halaman ini telah dihapus setelah Anda mulai melakukan penyuntingan!",
-'confirmrecreate' => "Pengguna [[User:$1|$1]] ([[User talk:$1|bicara]]) telah menghapus halaman selagi Anda mulai melakukan penyuntingan dengan alasan:
+'deletedwhileediting' => "'''Peringatan''': Halaman ini telah dihapus setelah Anda mulai melakukan penyuntingan!",
+'confirmrecreate' => "Pengguna [[User:$1|$1]] ([[User talk:$1|bicara]]) telah menghapus halaman selagi Anda mulai melakukan penyuntingan dengan alasan:
: ''$2''
Silakan konfirmasi jika Anda ingin membuat ulang halaman ini.",
-'recreate' => 'Buat ulang',
+'confirmrecreate-noreason' => 'Pengguna [[User:$1|$1]] ([[User talk:$1|bicara]]) telah menghapus halaman ini setelah Anda mulai menyunting. Harap konfirmasikan bahwa Anda ingin membuat ulang halaman ini.',
+'recreate' => 'Buat ulang',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Hapus singgahan halaman ini?',
'confirm-purge-bottom' => 'Membersihkan halaman akan sekaligus menghapus singgahan dan menampilkan versi halaman terkini.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Tambahkan halaman ini ke daftar pantauan Anda?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Hapus halaman ini dari daftar pantauan Anda?',
+
# Multipage image navigation
'imgmultipageprev' => '&larr; halaman sebelumnya',
'imgmultipagenext' => 'halaman selanjutnya &rarr;',
@@ -3355,7 +3570,7 @@ Coba dengan pratayang normal.',
'watchlistedit-normal-legend' => 'Hapus judul dari daftar pantauan',
'watchlistedit-normal-explain' => 'Judul pada daftar pantauan Anda ditampilkan di bawah ini.
Untuk menghapus judul, berikan tanda cek pada kotak di sampingnya, dan klik "{{int:Watchlistedit-normal-submit}}".
-Anda juga dapat [[Special:Watchlist/raw|menyunting daftar mentahnya]].',
+Anda juga dapat [[Special:EditWatchlist/raw|menyunting daftar mentahnya]].',
'watchlistedit-normal-submit' => 'Hapus judul',
'watchlistedit-normal-done' => '{{PLURAL:$1|satu|$1}} judul telah dihapus dari daftar pantauan Anda:',
'watchlistedit-raw-title' => 'Sunting daftar pantauan mentah',
@@ -3363,7 +3578,7 @@ Anda juga dapat [[Special:Watchlist/raw|menyunting daftar mentahnya]].',
'watchlistedit-raw-explain' => 'Judul pada daftar pantauan Anda ditampilkan di bawah ini, dan dapat disunting dengan menambahkan atau menghapusnya dari daftar;
satu judul pada setiap barisnya.
Setelah selesai, klik "{{int:Watchlistedit-raw-submit}}".
-Anda juga dapat [[Special:Watchlist/edit|menggunakan penyunting standar Anda]].',
+Anda juga dapat [[Special:EditWatchlist|menggunakan penyunting standar Anda]].',
'watchlistedit-raw-titles' => 'Judul:',
'watchlistedit-raw-submit' => 'Perbarui daftar pantauan',
'watchlistedit-raw-done' => 'Daftar pantauan Anda telah diperbarui.',
@@ -3420,33 +3635,33 @@ Anda juga dapat [[Special:Watchlist/edit|menggunakan penyunting standar Anda]].'
'duplicate-defaultsort' => 'Peringatan: Kunci pengurutan baku "$2" mengabaikan kunci pengurutan baku "$1" sebelumnya.',
# Special:Version
-'version' => 'Versi',
-'version-extensions' => 'Ekstensi terinstal',
-'version-specialpages' => 'Halaman istimewa',
-'version-parserhooks' => 'Kait parser',
-'version-variables' => 'Variabel',
-'version-skins' => 'Kulit',
-'version-other' => 'Lain-lain',
-'version-mediahandlers' => 'Penanganan media',
-'version-hooks' => 'Kait',
-'version-extension-functions' => 'Fungsi ekstensi',
-'version-parser-extensiontags' => 'Tag ekstensi parser',
-'version-parser-function-hooks' => 'Kait fungsi parser',
-'version-skin-extension-functions' => 'Fungsi ekstensi kulit',
-'version-hook-name' => 'Nama kait',
-'version-hook-subscribedby' => 'Dilanggani oleh',
-'version-version' => '(Versi $1)',
-'version-license' => 'Lisensi',
-'version-poweredby-credits' => "Wiki ini didukung oleh '''[http://www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
-'version-poweredby-others' => 'lainnya',
-'version-license-info' => 'MediaWiki adalah perangkat lunak bebas; Anda diperbolehkan untuk mendistribusikan dan/atau memodfikasinya dengan persyaratan Lisensi Publik Umum GNU yang diterbitkan oleh Free Software Foundation; versi 2 atau terbaru.
+'version' => 'Versi',
+'version-extensions' => 'Ekstensi terinstal',
+'version-specialpages' => 'Halaman istimewa',
+'version-parserhooks' => 'Kait parser',
+'version-variables' => 'Variabel',
+'version-antispam' => 'Pencegahan spam',
+'version-skins' => 'Kulit',
+'version-other' => 'Lain-lain',
+'version-mediahandlers' => 'Penanganan media',
+'version-hooks' => 'Kait',
+'version-extension-functions' => 'Fungsi ekstensi',
+'version-parser-extensiontags' => 'Tag ekstensi parser',
+'version-parser-function-hooks' => 'Kait fungsi parser',
+'version-hook-name' => 'Nama kait',
+'version-hook-subscribedby' => 'Dilanggani oleh',
+'version-version' => '(Versi $1)',
+'version-license' => 'Lisensi',
+'version-poweredby-credits' => "Wiki ini didukung oleh '''[//www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
+'version-poweredby-others' => 'lainnya',
+'version-license-info' => 'MediaWiki adalah perangkat lunak bebas; Anda diperbolehkan untuk mendistribusikan dan/atau memodfikasinya dengan persyaratan Lisensi Publik Umum GNU yang diterbitkan oleh Free Software Foundation; versi 2 atau terbaru.
MediaWiki didistribusikan dengan harapan dapat digunakan, tetapi TANPA JAMINAN APA PUN; tanpa jaminan PERDAGANGAN atau KECOCOKAN UNTUK TUJUAN TERTENTU. Lihat Lisensi Publik Umum GNU untuk informasi lebih lanjut.
-Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi Publik Umum GNU] bersama dengan program ini; jika tidak, kirim surat ke Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA atau [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html baca daring].',
-'version-software' => 'Perangkat lunak terinstal',
-'version-software-product' => 'Produk',
-'version-software-version' => 'Versi',
+Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi Publik Umum GNU] bersama dengan program ini; jika tidak, kirim surat ke Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA atau [//www.gnu.org/licenses/old-licenses/gpl-2.0.html baca daring].',
+'version-software' => 'Perangkat lunak terinstal',
+'version-software-product' => 'Produk',
+'version-software-version' => 'Versi',
# Special:FilePath
'filepath' => 'Lokasi berkas',
@@ -3456,23 +3671,22 @@ Anda seharusnya telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING salinan Lisensi
Gambar ditampilkan dalam resolusi penuh dan tipe lain berkas akan dibuka langsung dengan program terkaitnya.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Pencarian berkas duplikat',
-'fileduplicatesearch-summary' => 'Pencarian duplikat berkas berdasarkan nilai hash-nya.
-
-Masukkan nama berkas tanpa prefiks "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Cari duplikat',
-'fileduplicatesearch-filename' => 'Nama berkas:',
-'fileduplicatesearch-submit' => 'Cari',
-'fileduplicatesearch-info' => '$1 × $2 piksel<br />Besar berkas: $3<br />Tipe MIME: $4',
-'fileduplicatesearch-result-1' => 'Berkas "$1" tidak memiliki duplikat identik.',
-'fileduplicatesearch-result-n' => 'Berkas "$1" memiliki {{PLURAL:$2|1 duplikat identik|$2 duplikat identik}}.',
+'fileduplicatesearch' => 'Pencarian berkas duplikat',
+'fileduplicatesearch-summary' => 'Pencarian duplikat berkas berdasarkan nilai hash-nya.',
+'fileduplicatesearch-legend' => 'Cari duplikat',
+'fileduplicatesearch-filename' => 'Nama berkas:',
+'fileduplicatesearch-submit' => 'Cari',
+'fileduplicatesearch-info' => '$1 × $2 piksel<br />Besar berkas: $3<br />Tipe MIME: $4',
+'fileduplicatesearch-result-1' => 'Berkas "$1" tidak memiliki duplikat identik.',
+'fileduplicatesearch-result-n' => 'Berkas "$1" memiliki {{PLURAL:$2|1 duplikat identik|$2 duplikat identik}}.',
+'fileduplicatesearch-noresults' => 'Tidak ditemukan berkas dengan nama "$1".',
# Special:SpecialPages
'specialpages' => 'Halaman istimewa',
'specialpages-note' => '----
-Keterangan tampilan:
-* Halaman istimewa normal
-* <strong class="mw-specialpagerestricted">Halaman istimewa terbatas</strong>',
+* Halaman istimewa normal.
+* <span class="mw-specialpagerestricted">Halaman istimewa terlarang.</span>
+* <span class="mw-specialpagecached">Halaman istimewa tersinggah (mungkin usang).</span>',
'specialpages-group-maintenance' => 'Laporan pemeliharaan',
'specialpages-group-other' => 'Lain-lain',
'specialpages-group-login' => 'Masuk log / mendaftar',
diff --git a/languages/messages/MessagesIe.php b/languages/messages/MessagesIe.php
index 8eda13fe..ed02396f 100644
--- a/languages/messages/MessagesIe.php
+++ b/languages/messages/MessagesIe.php
@@ -16,6 +16,122 @@
* @author לערי ריינה×רט
*/
+$namespaceNames = array(
+ NS_MEDIA => 'Media',
+ NS_SPECIAL => 'Special',
+ NS_TALK => 'Discussion',
+ NS_USER => 'Usator',
+ NS_USER_TALK => 'Usator_Discussion',
+ NS_PROJECT_TALK => '$1_Discussion',
+ NS_FILE => 'File',
+ NS_FILE_TALK => 'File_Discussion',
+ NS_MEDIAWIKI => 'MediaWiki',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Discussion',
+ NS_TEMPLATE => 'Avise',
+ NS_TEMPLATE_TALK => 'Avise_Discussion',
+ NS_HELP => 'Auxilie',
+ NS_HELP_TALK => 'Auxilie_Discussion',
+ NS_CATEGORY => 'Categorie',
+ NS_CATEGORY_TALK => 'Categorie_Discussion',
+);
+
+$specialPageAliases = array(
+ 'Activeusers' => array( 'Usatores_activ' ),
+ 'Allmessages' => array( 'Omni_li_missages' ),
+ 'Allpages' => array( 'Omni_li_págines' ),
+ 'Ancientpages' => array( 'Págines_antiqui' ),
+ 'Blankpage' => array( 'Págine_in_blanc' ),
+ 'Block' => array( 'Blocar', 'Blocar_IP', 'Blocar_usator' ),
+ 'Blockme' => array( 'Blocar_in_mi_self' ),
+ 'Booksources' => array( 'Fontes_de_libres' ),
+ 'BrokenRedirects' => array( 'Redirectionmentes_ínperfect' ),
+ 'ChangePassword' => array( 'Change_parol-clave' ),
+ 'ComparePages' => array( 'Comparar_págines' ),
+ 'Confirmemail' => array( 'Confirmar_email' ),
+ 'Contributions' => array( 'Contributiones' ),
+ 'CreateAccount' => array( 'Crear_conto' ),
+ 'Deadendpages' => array( 'Págines_moderat' ),
+ 'DeletedContributions' => array( 'Contributiones_deletet' ),
+ 'Disambiguations' => array( 'Disambiguitones' ),
+ 'DoubleRedirects' => array( 'Redirectionmentes_duplic' ),
+ 'EditWatchlist' => array( 'Redacter_liste_de_págines_vigilat' ),
+ 'Emailuser' => array( 'Email_de_usator' ),
+ 'Export' => array( 'Exportar' ),
+ 'Fewestrevisions' => array( 'Revisiones_max_poc' ),
+ 'FileDuplicateSearch' => array( 'Sercha_de_file_duplicat' ),
+ 'Filepath' => array( 'Viette_de_file' ),
+ 'Import' => array( 'Importar' ),
+ 'Invalidateemail' => array( 'Email_ínvalid' ),
+ 'BlockList' => array( 'Liste_de_bloc', 'Liste_de_bloces', 'Liste_de_bloc_de_IP' ),
+ 'LinkSearch' => array( 'Sercha_de_catenun' ),
+ 'Listadmins' => array( 'Liste_de_administratores' ),
+ 'Listbots' => array( 'Liste_de_machines' ),
+ 'Listfiles' => array( 'Liste_de_files', 'Liste_de_file', 'Liste_de_figura' ),
+ 'Listgrouprights' => array( 'Jures_de_gruppe_de_liste', 'Jures_de_gruppe_de_usator' ),
+ 'Listredirects' => array( 'Liste_de_redirectionmentes' ),
+ 'Listusers' => array( 'Liste_de_usatores', 'Liste_de_usator' ),
+ 'Lockdb' => array( 'Serrar_DB' ),
+ 'Log' => array( 'Diarium', 'Diariumes' ),
+ 'Lonelypages' => array( 'Págines_solitari', 'Págines_orfan' ),
+ 'Longpages' => array( 'Págines_long' ),
+ 'MergeHistory' => array( 'Historie_de_fusion' ),
+ 'MIMEsearch' => array( 'Serchar_MIME' ),
+ 'Mostcategories' => array( 'Plu_categories' ),
+ 'Mostimages' => array( 'Files_max_ligat', 'Plu_files', 'Plu_figuras' ),
+ 'Mostlinked' => array( 'Págines_max_ligat', 'Max_ligat' ),
+ 'Mostlinkedcategories' => array( 'Categories_max_ligat', 'Categories_max_usat' ),
+ 'Mostlinkedtemplates' => array( 'Avises_max_ligat', 'Avises_max_usat' ),
+ 'Mostrevisions' => array( 'Plu_revisiones' ),
+ 'Movepage' => array( 'Mover_págine' ),
+ 'Mycontributions' => array( 'Mi_contributiones' ),
+ 'Mypage' => array( 'Mi_págine' ),
+ 'Mytalk' => array( 'Mi_discussion' ),
+ 'Myuploads' => array( 'Mi_cargamentes' ),
+ 'Newimages' => array( 'Nov_files', 'Nov_figuras' ),
+ 'Newpages' => array( 'Nov_págines' ),
+ 'PasswordReset' => array( 'Recomensar_parol-clave' ),
+ 'PermanentLink' => array( 'Catenun_permanen' ),
+ 'Popularpages' => array( 'Págines_populari' ),
+ 'Preferences' => array( 'Preferenties' ),
+ 'Prefixindex' => array( 'Index_de_prefixe' ),
+ 'Protectedpages' => array( 'Págines_gardat' ),
+ 'Protectedtitles' => array( 'Titules_gardat' ),
+ 'Randompage' => array( 'Sporadic', 'Págine_sporadic' ),
+ 'Randomredirect' => array( 'Redirectionmente_sporadic' ),
+ 'Recentchanges' => array( 'Nov_changes' ),
+ 'Recentchangeslinked' => array( 'Changes_referet', 'Changes_relatet' ),
+ 'Revisiondelete' => array( 'Deleter_revision' ),
+ 'RevisionMove' => array( 'Mover_revision' ),
+ 'Search' => array( 'Serchar' ),
+ 'Shortpages' => array( 'Págines_curt' ),
+ 'Specialpages' => array( 'Págines_special' ),
+ 'Statistics' => array( 'Statistica' ),
+ 'Tags' => array( 'Puntales' ),
+ 'Unblock' => array( 'Desblocar' ),
+ 'Uncategorizedcategories' => array( 'Categories_íncategorizet' ),
+ 'Uncategorizedimages' => array( 'Files_íncategorizet', 'Figuras_íncategorizet' ),
+ 'Uncategorizedpages' => array( 'Págines_íncategorizet' ),
+ 'Uncategorizedtemplates' => array( 'Avises_íncategorizet' ),
+ 'Undelete' => array( 'Restaurar' ),
+ 'Unlockdb' => array( 'Disserrar_DB' ),
+ 'Unusedcategories' => array( 'Categories_sin_use' ),
+ 'Unusedimages' => array( 'Files_sin_use', 'Figuras_sin_use' ),
+ 'Unusedtemplates' => array( 'Avises_sin_use' ),
+ 'Unwatchedpages' => array( 'Págines_desvigilat' ),
+ 'Upload' => array( 'Cargar_file' ),
+ 'UploadStash' => array( 'Cargamente_stash_de_file' ),
+ 'Userlogin' => array( 'Intrar' ),
+ 'Userlogout' => array( 'Surtida' ),
+ 'Userrights' => array( 'Jures_de_usator', 'Crear_administrator', 'Crear_machine' ),
+ 'Wantedcategories' => array( 'Categories_carit' ),
+ 'Wantedfiles' => array( 'Files_carit' ),
+ 'Wantedpages' => array( 'Págines_carit', 'Catenunes_ínperfect' ),
+ 'Wantedtemplates' => array( 'Avises_carit' ),
+ 'Watchlist' => array( 'Liste_de_págines_vigilat' ),
+ 'Whatlinkshere' => array( 'Quo_catenunes_ci' ),
+ 'Withoutinterwiki' => array( 'Sin_interwiki' ),
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'Ultracatenun:',
@@ -46,8 +162,8 @@ $messages = array(
'tog-shownumberswatching' => 'Monstrar li númere de usatores vigilant',
'tog-oldsig' => 'Prevision de signature in existentie:',
'tog-fancysig' => 'Tractar signature quam textu wiki (sin un catenun auto-crate)',
-'tog-externaleditor' => 'Usar redactor extern per contumacie (solmen por usatores expert, besona de colocationes special in tui computator. [http://www.mediawiki.org/wiki/Manual:External_editors Plu information.])',
-'tog-externaldiff' => 'Usar diferentie extern per contumacie (solmen por usatores expert, besona de colocationes special in tui computator. [http://www.mediawiki.org/wiki/Manual:External_editors Plu information.])',
+'tog-externaleditor' => 'Usar redactor extern per contumacie (solmen por usatores expert, besona de colocationes special in tui computator. [//www.mediawiki.org/wiki/Manual:External_editors Plu information.])',
+'tog-externaldiff' => 'Usar diferentie extern per contumacie (solmen por usatores expert, besona de colocationes special in tui computator. [//www.mediawiki.org/wiki/Manual:External_editors Plu information.])',
'tog-showjumplinks' => 'Permisser catenunes de accessebilitá "saltar a"',
'tog-uselivepreview' => 'Usar prevision in vivi (exige JavaScript) (experimental)',
'tog-forceeditsummary' => 'Suggester me quande intrar un redaction che summarium in blanc',
@@ -133,8 +249,6 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'noindex-category' => 'Págines ne indexet',
-'mainpagetext' => "'''Software del wiki installat con successe.'''",
-
'about' => 'Concernent',
'article' => 'Articul',
'newwindow' => '(inaugurar in nov planca de fenestre)',
@@ -331,6 +445,7 @@ Ne oblivia de mutar tui [[Special:Preferences|preferenties de {{SITENAME}}]].',
'createaccount' => 'Crear un conto',
'gotaccount' => 'Ja have un conto? $1.',
'gotaccountlink' => 'Intrar',
+'userlogin-resetlink' => 'Obliviat tui detallies de registre?',
'badretype' => 'Li passa-paroles queles vu tippat ne es identic.',
'userexists' => 'Nómine de usator ja in usu.
Pleser opta por un nómine diferent.',
@@ -349,11 +464,14 @@ Por preventer misusa, solmen un parol-clave amemora va esser inviat per {{PLURAL
'usernamehasherror' => 'Nómine de usator ne posse contene mixtura de carácteres',
'loginlanguagelabel' => 'Lingue: $1',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Anteyan passa-parol:',
'newpassword' => 'Nov passa-parol:',
'retypenew' => 'Confirmar nov passa-parol',
+# Special:PasswordReset
+'passwordreset-username' => 'Vor nómine usatori',
+
# Edit page toolbar
'bold_sample' => 'Textu in nigri',
'bold_tip' => 'Textu in nigri',
@@ -365,7 +483,6 @@ Por preventer misusa, solmen un parol-clave amemora va esser inviat per {{PLURAL
'extlink_tip' => 'Catenun extern (memorar prefixe http://)',
'headline_sample' => 'Division de nivelle 2',
'headline_tip' => 'Division de nivelle 2',
-'math_tip' => 'Formul mathematical (LaTeX)',
'nowiki_sample' => 'Ignorar formate wiki',
'nowiki_tip' => 'Ignorar formate wiki',
'image_tip' => 'File fixat',
@@ -399,6 +516,8 @@ Vu posse [[Special:Search/{{PAGENAME}}|serchar por ti titul de págine]] in altr
'noarticletext-nopermission' => 'Vi currentmen ne textu in ti págine.
Vu posse [[Special:Search/{{PAGENAME}}|serchar por titul de ti págine]] in altri págines,
o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchar li diariumes relatet]</span>.',
+'userpage-userdoesnotexist' => 'Conto de usator "$1" ne es registrat.
+Pleser controla si vu cari crear/redacter ti págine.',
'userpage-userdoesnotexist-view' => 'Conto de usator "$1" ne es registrat.',
'usercssyoucanpreview' => "'''Punta:''' Usa li buton \"{{int:showpreview}}\" por provar tui nov CSS ante de conservar.",
'userjsyoucanpreview' => "'''Punta:''' Usa li buton \"{{int:showpreview}}\" por provar tui nov JavaScript ante de conservar.",
@@ -532,21 +651,24 @@ Legende: '''({{int:cur}})''' = diferenties che ultim revision, '''({{int:last}})
'qbsettings' => 'Personalisation del barre de utensiles',
# Preferences page
-'preferences' => 'Preferenties',
-'mypreferences' => 'Mi preferenties',
-'prefsnologin' => 'Vu ne ha intrat',
-'changepassword' => 'Modificar passa-parol',
-'skin-preview' => 'Prevision',
-'saveprefs' => 'Conservar',
-'searchresultshead' => 'Serchar',
-'youremail' => 'E-mail:',
-'username' => 'Nómine de usator:',
-'uid' => 'Identification de usator:',
-'yourrealname' => 'Nómine real:',
-'yourlanguage' => 'Lingue:',
-'yourvariant' => 'Variante:',
-'yournick' => 'Nov signature:',
-'yourgender' => 'Génere:',
+'preferences' => 'Preferenties',
+'mypreferences' => 'Mi preferenties',
+'prefsnologin' => 'Vu ne ha intrat',
+'changepassword' => 'Modificar passa-parol',
+'skin-preview' => 'Prevision',
+'saveprefs' => 'Conservar',
+'searchresultshead' => 'Serchar',
+'youremail' => 'E-mail:',
+'username' => 'Nómine de usator:',
+'uid' => 'Identification de usator:',
+'yourrealname' => 'Nómine real:',
+'yourlanguage' => 'Lingue:',
+'yourvariant' => 'Variante:',
+'yournick' => 'Nov signature:',
+'yourgender' => 'Génere:',
+'prefs-help-email' => 'Adresse de e-mail es optional, ma es necessitá por recomensar parol-clave, deve vu obliviar tui parol-clave.',
+'prefs-help-email-others' => 'Vu posse anc optar por permisser altri contacter vu per e-mail complet che un catenun in tui págine de usator o págine de discussion.
+Tui adresse de e-mail ne es revelat quande altri usatores contacter vu.',
# User rights
'userrights' => 'Gerement de jures de usator',
@@ -832,7 +954,6 @@ Li descrition es in li [$2 págine de descrition del file] ta e es monstrat in i
'watchlistanontext' => 'Pleser $1 por vider o redacter articules in tui liste de págines vigilat.',
'watchnologin' => 'Vu ne ha intrat',
'watchnologintext' => 'Vu deve esser [[Special:UserLogin|registrat]] por redacter tui liste de págines vigilat.',
-'addedwatch' => 'Adjuntet al liste',
'addedwatchtext' => "Li págine ''[[$1]]'' ha esset adjuntet a vor [[Special:Watchlist|liste de sequet págines]]. Li proxim modificationes de ti ci págine e del associat págine de discussion va esser listat ci, e li págine va aperir '''aspessat''' in li [[Special:RecentChanges|liste de recent modificationes]] por esser trovat plu facilmen. Por supresser ti ci págine ex vor liste, ples claccar sur « Ne plu sequer » in li cadre de navigation.",
'watch' => 'Vigilar',
'watchthispage' => 'Vigilar ti págine',
@@ -888,6 +1009,8 @@ Li descrition es in li [$2 págine de descrition del file] ta e es monstrat in i
'viewdeletedpage' => 'Vider págines deletet',
'undeletepagetext' => 'Li proxim {{PLURAL:$1|págine ha esset deletet ma es|$1 págines have esset esset deletet ma es}} ínmobil in li archive e posse esser restaurat. Li archive posse esser periodicomen demuddat.',
'undelete-fieldset-title' => 'Restaurar revisiones',
+'undeleteextrahelp' => "Por restaurar li historie complet de págine, abandona omni li buxes de controle deselectet e clacca '''''{{int:undeletebtn}}'''''.
+Por efectuar un restauration selectiv, controla li buxes secun por li revisiones por esser restaurat, e clacca '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|revision|revisiones}} conservat',
'undeletehistory' => 'Si vu restaurar li págine, omni li revisiones va esser restaurat por li historie.
Si un nov págine che nómine identic ha esset creat desde li deletion, li revisiones restaurat va aparir in li historie precedent.',
@@ -1128,19 +1251,32 @@ Li prim catenun in un linea deve esser un catenun por un file maliciosi.
Alqual catenunes subsequent in li linea identic es considerat por esser exceptiones, i.e. págines u li file posse ocurrer in linea identic.',
# Metadata
-'metadata' => 'Metadata',
-'metadata-help' => 'Ti file contene information additional, probabilmen adjuntet de li cámera digitale o scandetor usat por crear o digitalizar it. Si li file ha esset redactet de tui statu original, alcun detallies posse ne reflecter completmen li file redactet.',
+'metadata' => 'Metadata',
+'metadata-help' => 'Ti file contene information additional, probabilmen adjuntet de li cámera digitale o scandetor usat por crear o digitalizar it. Si li file ha esset redactet de tui statu original, alcun detallies posse ne reflecter completmen li file redactet.',
+'metadata-fields' => 'Campes metadata de figura listat in ti missage va esser includet in págine de figura monstra quande li tabelle metadata es crulat.
+Altri va esser ocultat per contumacie.
+* fabrication
+* modelle
+* origine de figura
+* témpor de exposition
+* númere
+* percentages de velocitá
+* longore focal
+* artist
+* jure editorial
+* descrition de figura
+* latitúdine
+* longitúdine
+* altitudine',
# External editor support
'edit-externally' => 'Redacter ti file usant un aplication extern',
-'edit-externally-help' => '(Vider li [http://www.mediawiki.org/wiki/Manual:External_editors instructiones de installation] por plu information)',
+'edit-externally-help' => '(Vider li [//www.mediawiki.org/wiki/Manual:External_editors instructiones de installation] por plu information)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'omni',
-'imagelistall' => 'omni',
-'watchlistall2' => 'omni',
-'namespacesall' => 'omni',
-'monthsall' => 'omni',
+'watchlistall2' => 'omni',
+'namespacesall' => 'omni',
+'monthsall' => 'omni',
# Trackbacks
'trackbackbox' => 'Tracies de dorse por ti págine:<br /> $1',
@@ -1156,19 +1292,25 @@ Alqual catenunes subsequent in li linea identic es considerat por esser exceptio
'table_pager_limit_submit' => 'Ear',
# Watchlist editor
-'watchlistedit-numitems' => 'Tui liste de págines vigilat contene {{PLURAL:$1|1 titul|$1 titules}}, excludent págines de discussion.',
-'watchlistedit-noitems' => 'Tui liste de págines vigilat ne contene titules.',
-'watchlistedit-normal-title' => 'Redacter liste de págines vigilat',
-'watchlistedit-normal-legend' => 'Remove titules del liste de págines vigilat',
-'watchlistedit-normal-submit' => 'Remover titules',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 titul esset|$1 titules esset}} removet de tui liste de págines vigilat:',
-'watchlistedit-raw-title' => 'Redacter liste de págines vigilat vulnerosi',
-'watchlistedit-raw-legend' => 'Redacter liste de págines vigilat vulnerosi',
-'watchlistedit-raw-titles' => 'Titules:',
-'watchlistedit-raw-submit' => 'Modernisar liste de págines vigilat',
-'watchlistedit-raw-done' => 'Tui liste de págines vigilat ha esset modernisat.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 titul esset|$1 titules esset}} adjuntet:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 titul esset|$1 titules esset}} removet:',
+'watchlistedit-numitems' => 'Tui liste de págines vigilat contene {{PLURAL:$1|1 titul|$1 titules}}, excludent págines de discussion.',
+'watchlistedit-noitems' => 'Tui liste de págines vigilat ne contene titules.',
+'watchlistedit-normal-title' => 'Redacter liste de págines vigilat',
+'watchlistedit-normal-legend' => 'Remove titules del liste de págines vigilat',
+'watchlistedit-normal-explain' => 'Titules in tui liste de págines vigilat es monstrat infra.
+Por remover un titul, controla li buxe proxim por it, e clacca "{{int:Watchlistedit-normal-submit}}".
+Vu posse anc [[Special:EditWatchlist/raw|redacter li liste vulnerosi]].',
+'watchlistedit-normal-submit' => 'Remover titules',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1 titul esset|$1 titules esset}} removet de tui liste de págines vigilat:',
+'watchlistedit-raw-title' => 'Redacter liste de págines vigilat vulnerosi',
+'watchlistedit-raw-legend' => 'Redacter liste de págines vigilat vulnerosi',
+'watchlistedit-raw-explain' => 'Titules in tui liste de págines vigilat es monstrat in infra, e posse esser redactet solmen adjuntent por e removent de li liste; un titul per linea.
+Quande terminat, clacca "{{int:Watchlistedit-raw-submit}}".
+Vu posse anc [[Special:EditWatchlist|usar li redactor uniform]].',
+'watchlistedit-raw-titles' => 'Titules:',
+'watchlistedit-raw-submit' => 'Modernisar liste de págines vigilat',
+'watchlistedit-raw-done' => 'Tui liste de págines vigilat ha esset modernisat.',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1 titul esset|$1 titules esset}} adjuntet:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 titul esset|$1 titules esset}} removet:',
# Watchlist editing tools
'watchlisttools-view' => 'Vider changes aplicabil',
@@ -1179,26 +1321,25 @@ Alqual catenunes subsequent in li linea identic es considerat por esser exceptio
'duplicate-defaultsort' => '\'\'\'Advertiment:\'\'\' Clave de specie contumacie "$2" substitue temporanmen clave de specie contumacie "$1".',
# Special:Version
-'version' => 'Version',
-'version-extensions' => 'Extensiones installat',
-'version-specialpages' => 'Págines special',
-'version-parserhooks' => 'Croces analisatores',
-'version-variables' => 'Variabiles',
-'version-other' => 'Altri',
-'version-mediahandlers' => 'Manuettes de media',
-'version-hooks' => 'Croces',
-'version-extension-functions' => 'Functiones de extension',
-'version-parser-extensiontags' => 'Puntales de extension analisatores',
-'version-parser-function-hooks' => 'Croces de functiones analisatores',
-'version-skin-extension-functions' => 'Functiones de extension pelle',
-'version-hook-name' => 'Nómine de croc',
-'version-hook-subscribedby' => 'Subscrit per',
-'version-version' => '(Version $1)',
-'version-svn-revision' => '(r$2)',
-'version-license' => 'Licentie',
-'version-software' => 'Software installat',
-'version-software-product' => 'Producte',
-'version-software-version' => 'Version',
+'version' => 'Version',
+'version-extensions' => 'Extensiones installat',
+'version-specialpages' => 'Págines special',
+'version-parserhooks' => 'Croces analisatores',
+'version-variables' => 'Variabiles',
+'version-other' => 'Altri',
+'version-mediahandlers' => 'Manuettes de media',
+'version-hooks' => 'Croces',
+'version-extension-functions' => 'Functiones de extension',
+'version-parser-extensiontags' => 'Puntales de extension analisatores',
+'version-parser-function-hooks' => 'Croces de functiones analisatores',
+'version-hook-name' => 'Nómine de croc',
+'version-hook-subscribedby' => 'Subscrit per',
+'version-version' => '(Version $1)',
+'version-svn-revision' => '(r$2)',
+'version-license' => 'Licentie',
+'version-software' => 'Software installat',
+'version-software-product' => 'Producte',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath-page' => 'Figura:',
diff --git a/languages/messages/MessagesIg.php b/languages/messages/MessagesIg.php
index a65b600b..da9ab124 100644
--- a/languages/messages/MessagesIg.php
+++ b/languages/messages/MessagesIg.php
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author Reedy
* @author Ukabia
*/
@@ -30,19 +31,19 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'Userlogin' => array( 'Ọ\'bàniféÃBànyé' ),
- 'Userlogout' => array( 'Ọ\'bàniféÃFụtá' ),
- 'Preferences' => array( 'Ọtúm_dá»sẹrẹ_ihem' ),
- 'Upload' => array( 'TinyéIheNélú' ),
'Allpages' => array( 'IhüNílé' ),
- 'Specialpages' => array( 'IhüKá' ),
+ 'Blankpage' => array( 'HịcháIhü' ),
'Export' => array( 'MÄ“Ká»Fùtá' ),
- 'Undelete' => array( 'Ãbàkàshịkwàlà' ),
+ 'Filepath' => array( 'Uzá»rAkwúkwóOrünotu' ),
'Import' => array( 'BàÃfé' ),
'Mypage' => array( 'IhüNkèm' ),
'Mytalk' => array( 'OkwuNkèm' ),
- 'Filepath' => array( 'Uzá»rAkwúkwóOrünotu' ),
- 'Blankpage' => array( 'HịcháIhü' ),
+ 'Preferences' => array( 'Ọtúm_dá»sẹrẹ_ihem' ),
+ 'Specialpages' => array( 'IhüKá' ),
+ 'Undelete' => array( 'Ãbàkàshịkwàlà' ),
+ 'Upload' => array( 'TinyéIheNélú' ),
+ 'Userlogin' => array( 'Ọ\'bàniféÃBànyé' ),
+ 'Userlogout' => array( 'Ọ\'bàniféÃFụtá' ),
);
$magicWords = array(
@@ -186,14 +187,7 @@ $messages = array(
'listingcontinuesabbrev' => 'mewá.',
'index-category' => 'Ẹdẹle Ihü',
'noindex-category' => 'Ihü ẹdẹlebu',
-
-'mainpagetext' => "'''MediaWiki a banyélé nke oma.'''",
-'mainpagedocfooter' => "Gbàkpó [http://meta.wikimedia.org/wiki/Help:Contents Ǹdù Ọ'bànifé] màkà ụmá màkà à jí ngwa nsónùsòrò bu wiki.
-
-== I bídó ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Ndétu ndósé ihe]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce wéfù ndétu nke ozi MediaWiki]",
+'broken-file-category' => 'Ihü nwere jká»dá» na ga fail gbajírí',
'about' => 'Abwátà',
'article' => 'Ihü ihe dị',
@@ -245,10 +239,10 @@ $messages = array(
'history' => 'Akíkó mbu nke ihü',
'history_short' => 'Akiko mbú',
'updatedmarker' => 'ihe gáráníru ké mgbe m byàrà nga mbu',
-'info_short' => 'Ómárí',
'printableversion' => 'Nkè I nweríkí dotié',
'permalink' => 'Jikodo ekechịrị',
'print' => 'Dotié',
+'view' => 'Zi',
'edit' => 'Mèzi',
'create' => 'Ké',
'editthispage' => 'Rüwa na ihü nka',
@@ -256,6 +250,7 @@ $messages = array(
'delete' => 'Kàcha',
'deletethispage' => 'Kàcha ihü nkea',
'undelete_short' => 'A gbakashikwala {{PLURAL:$1|orü otù|$1 orü}}',
+'viewdeleted_short' => 'Zi {{PLURAL:$1|orü otụ bakashịrị|orü $1 bakashịrị}}',
'protect' => 'Cẹdolu',
'protect_change' => 'gbanwe',
'protectthispage' => 'Cẹdolu ihü nka',
@@ -340,6 +335,8 @@ Lé [[Special:Version|ụdì ihü]].',
'toc' => 'Ihe dị ime',
'showtoc' => 'zi',
'hidetoc' => 'zonari',
+'collapsible-collapse' => 'Zekpùdo',
+'collapsible-expand' => 'Gbásà',
'thisisdeleted' => 'Lé ma tinyechárá $1?',
'viewdeleted' => 'Lé $1?',
'restorelink' => '{{PLURAL:$1|orü otụ bakashịrị|orü $1 bakashịrị}}',
@@ -351,6 +348,8 @@ Lé [[Special:Version|ụdì ihü]].',
'page-rss-feed' => "''$1'' ntabì RSS",
'page-atom-feed' => "''$1'' ntabì Atom",
'red-link-title' => '$1 (ihü a di gì)',
+'sort-descending' => 'Dozi shí àlà',
+'sort-ascending' => 'Dozi shí élú',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Ihü',
@@ -415,10 +414,9 @@ Orürü: $1<br />
'protectedinterface' => 'Ihü nè nyé édé nke mkpátá màkà ngwa nsónùsòrò, na ó cẹdolu gbò mmelụ.',
'editinginterface' => "'''Okwu egú:''' I na rü ihü né nyé ihu maka mkpurụ edemede nke eji-a-rü nka.
Gbanwere më ihüa ga mètú ihu élélé nke onye-na-banife maka ndi ozor.
-Maka ikuwaria na asụsụ nke ozor, biko chetu I ji [http://translatewiki.net/wiki/Main_Page?setlang=ig translatewiki.net], ihe orü MediaWiki di na ama ama.",
+Maka ikuwaria na asụsụ nke ozor, biko chetu I ji [//translatewiki.net/wiki/Main_Page?setlang=ig translatewiki.net], ihe orü MediaWiki di na ama ama.",
'sqlhidden' => '(nchowa SQL zonari a zonari)',
'namespaceprotected' => "I weghị ike I rüwa élu ihü nor na '''$1''' áháama.",
-'customcssjsprotected' => 'à nwéghi á»dà à rü na ihü nka, maka ó nwèrè ihe doséré ka onye ozor na banife.',
'ns-specialprotected' => 'Ihü mkpà, a nweriki ru na ya.',
# Virus scanner
@@ -462,7 +460,7 @@ Bíkó nwèré áhà nke ozor.",
'noname' => 'I nyétubỠáhạ buwa di mkpà.',
'loginsuccesstitle' => 'I batala nke oma',
'loginsuccess' => "'''à bátálá nke á»ma na ime {{SITENAME}} na áhà \"\$1\".'''",
-'nosuchusershort' => 'Ọ díghị á»\'bànifé nwéré áhà nke "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Ọ díghị á»\'bànifé nwéré áhà nke "$1".
Lèmá òtú à dèrè ya.',
'nouserspecified' => 'I kweshiri nyetu áhà gi iji a rüoru.',
'login-userblocked' => 'Ha gbachịrị onye á ezi. Anaá kweté kör banyé.',
@@ -480,7 +478,7 @@ Biko meríáríá ya.',
'usernamehasherror' => "Ãhè á»'bànifé ènwéghịkị nwé nkárí",
'loginlanguagelabel' => 'Asụsụ: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Gbanwe okwu éjị à gáfe',
'resetpass_header' => 'Gbanwe okwúngáfè nke bùwá',
'oldpassword' => 'Mkpurụ okwu ejị a gafẹ ochië:',
@@ -494,6 +492,11 @@ I na á banye...',
'resetpass-submit-cancel' => 'Kàchá',
'resetpass-temp-password' => 'mkpurụ okwu ejị a gafẹ I gi kushi ngwa ngwa:',
+# Special:PasswordReset
+'passwordreset' => 'Nkuwaria okwúngáfè',
+'passwordreset-emailelement' => "Ãhà Ọ'banife: $1
+Passwod nke gi gbanwe: $2",
+
# Edit page toolbar
'bold_sample' => 'Mkpúrù èdè íke',
'bold_tip' => 'Mkpúrù èdè íke',
@@ -505,8 +508,6 @@ I na á banye...',
'extlink_tip' => 'Jikodo ná»r na ẹzí (chètá íshí http://)',
'headline_sample' => 'Ahiri ishi mkpurụ edemede',
'headline_tip' => 'Larri 2 ishiahiri',
-'math_sample' => 'Tinyé zùbe ómárí ngá',
-'math_tip' => 'Ihe á»tùtù á»múmú-ónúá»gụgụ (LaTeX)',
'nowiki_sample' => 'Tinyé mkụrụ edemede enweghị ihe á»bula na ya ti ya nga',
'nowiki_tip' => 'É gekwàlà otu wiki shi edé',
'image_tip' => 'Njikota édé a pá»rá»gwụla',
@@ -762,7 +763,6 @@ Nwàné ótù okwu íshí na ihe à nè tú jí ''háníle:'' à tuó ihe nílé
'changepassword' => 'Gbanwe okwu éjị à gáfe',
'prefs-skin' => 'Akpụkpá»',
'skin-preview' => 'Lètú',
-'prefs-math' => 'Ọmúmú-ónúá»gụgụ',
'datedefault' => 'Otú é shị na dose ihe efù',
'prefs-datetime' => 'Ubochi na ogẹ',
'prefs-personal' => "Nkówá á»'bànifé",
@@ -779,7 +779,6 @@ Nwàné ótù okwu íshí na ihe à nè tú jí ''háníle:'' à tuó ihe nílé
'columns' => 'Ogìdì:',
'searchresultshead' => 'Chá»wa',
'resultsperpage' => 'Nlé na ihü:',
-'contextlines' => 'Ahịrị na nke nlé:',
'stub-threshold-disabled' => 'Ãpụgị òkò',
'timezonelegend' => 'Nkeji ogẹ:',
'localtime' => 'Ogẹ ebeaná»r:',
@@ -1128,10 +1127,8 @@ Ubwa, o na ga [[$2]].',
'watchlist' => 'Ndetu ihem ne lé',
'mywatchlist' => 'Ndetu ihem ne lé',
'watchlistfor2' => 'Maka $1 $2',
-'addedwatch' => 'Tìrì na ndétu nlé',
'addedwatchtext' => "Ihü \"[[:\$1]]\" à bányéré [[Special:Watchlist|ndétu ihe à ne lé]].
Ihe gi gbanwe na ógè gi bya nà ihüá na ihü okwu ya gi di ndétu ngáhù, na ihü gi da na mkpụrụ édé '''sírí íke''' ímé [[Special:RecentChanges|ndétu gbanwere méré na ogè nso]] ka ȯ dí òfelè à hü ya.",
-'removedwatch' => 'Wéfùrù shí ndétu ihe à ne lé',
'removedwatchtext' => 'Ihü "[[:$1]]" à fwüó lá [[Special:Watchlist|ihe ndétu ihe à ne lé]].',
'watch' => 'Hü',
'watchthispage' => 'Lèwá ihüá',
@@ -1161,7 +1158,7 @@ Ihe gi gbanwe na ógè gi bya nà ihüá na ihü okwu ya gi di ndétu ngáhù, n
'confirmdeletetext' => 'à gálá à gbákashiá ihü na ákíkó mbu ya.
Biko sí nà á» bụ ihe à chá»rá», na à mà ihe gi mè, na à nè me ya kà yá na [[{{MediaWiki:Policy-url}}|òtù há nè mé ihe]] di óma.',
'actioncomplete' => 'Ọ méchá',
-'deletedtext' => '"<nowiki>$1</nowiki>" à gbákáshíálá.
+'deletedtext' => '"$1" à gbákáshíálá.
Lé $2 màkà okwu gbásárá ihe Ỡgbakashiri màkà.',
'deletedarticle' => 'gbakashịrị "[[$1]]"',
'dellogpage' => 'Ntínyé ngbákashị',
@@ -1182,7 +1179,7 @@ Lé $2 màkà okwu gbásárá ihe Ỡgbakashiri màkà.',
'protectexpiry' => 'Gbá okà:',
'protect_expiry_invalid' => 'Ógẹ mgbe ó gị gbá ùkà adíghị ómá.',
'protect_expiry_old' => 'Ógẹ mgbe ȯ gbàrà úkà à gafele.',
-'protect-text' => "à nwèríkí lá mà à gbanwe ncẹdolu ihü '''<nowiki>$1</nowiki>''' nke.",
+'protect-text' => "à nwèríkí lá mà à gbanwe ncẹdolu ihü '''$1''' nke.",
'protect-locked-access' => "Bùwá gi ènwéghị òdạ à gbanwe ncẹdolu ihü.
Ngá bu ihe hé mèkwàrà nà ihü '''$1''':",
'protect-cascadeon' => ' Ihüá cẹdolu màkà ȯ dị nà {{PLURAL:$1|ihü, nwéré|ihü, ndi nwéré}} cẹdolu mgbàwéré dí.
@@ -1271,7 +1268,6 @@ Ngá bu ihe hé mèkwàrà nà ihü '''$1''':",
'blockip' => "Kwàchí á»'bànifé",
'blockip-title' => "Kwàchí á»'bànifé",
'blockip-legend' => "Kwàchí á»'bànifé",
-'ipaddress' => 'Ãhàebeíbị IP:',
'ipadressorusername' => "IP mà á» bu áhà á»'bànifé:",
'ipbexpiry' => 'Gbá okà:',
'ipbreason' => 'Mgbághapụtà:',
@@ -1476,7 +1472,6 @@ Biko meríáríá ozor.',
'file-nohires' => '<small>Nke káchá mmá na ányá àdíghị.</small>',
'svg-long-desc' => 'usòrò SVG, nà áhà pixel $1 × $2, ívụ usòrò: $3',
'show-big-image' => 'Hü ya ka o dị',
-'show-big-image-thumb' => '<small>Ãvù nlétú nke: pixel $1 × $2</small>',
'file-info-gif-looped' => 'etemte',
# Special:NewFiles
@@ -1501,13 +1496,19 @@ Jikodo nke gị byá àzú na áhìrì nke òfu á bu nke nwéríkí gáfè, dí
'metadata-collapse' => 'Zonari nkówá di ógólógó',
'metadata-fields' => 'Ómárí nso nke nkeji nke EXIF détùrù na ozi nká gí banyé na nlé ihü nhuunuche mgbè ómárí nso mgbe àgàdà gi dátù.
Nke ozor gí zonari na áká onwe ha.
-* okíké
-* àtụ
-* úbochịógèmbuyá
-* háfùrù na anwü
-* onúf
-* nkówá íjè ISO
-* ógólógó focal',
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Àsáa',
@@ -1572,15 +1573,13 @@ Nke ozor gí zonari na áká onwe ha.
# External editor support
'edit-externally' => 'Rüo na élú usòrò nke na ngwa á»rụ nsónùsòrò nke á»zȯ',
-'edit-externally-help' => '(Lé nà [http://www.mediawiki.org/wiki/Manual:External_editors nkụzí mbídó] màkà nkúzí ozor)',
+'edit-externally-help' => '(Lé nà [//www.mediawiki.org/wiki/Manual:External_editors nkụzí mbídó] màkà nkúzí ozor)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'nke níle',
-'imagelistall' => 'nke níle',
-'watchlistall2' => 'nke níle',
-'namespacesall' => 'nke níle',
-'monthsall' => 'nke níle',
-'limitall' => 'nke níle',
+'watchlistall2' => 'nke níle',
+'namespacesall' => 'nke níle',
+'monthsall' => 'nke níle',
+'limitall' => 'nke níle',
# Trackbacks
'trackbackremove' => '([$1 Kàcha])',
diff --git a/languages/messages/MessagesIke_cans.php b/languages/messages/MessagesIke_cans.php
index 522966e7..d5723012 100644
--- a/languages/messages/MessagesIke_cans.php
+++ b/languages/messages/MessagesIke_cans.php
@@ -365,10 +365,6 @@ $messages = array(
# Attribution
'anonymous' => 'áƒá“•á“´á•á“‡á™±á‘Žá‘¦á‘á–… ᖃᑕᙳᑎ ᓇᑭᑦ {{SITENAME}}',
-# Math errors
-'math_unknown_error' => 'á‘á“´á…ᒪᔭá…á™±á‘á–… ᑕᒻᒪᓇᖅá‘á–…',
-'math_unknown_function' => 'á‘á“´á…ᒪᔭá…á™±á‘á–… áƒá“•á…á•á“‚á–…',
-
# Image deletion
'deletedrevision' => 'á“‚á¸á–… á…á‘ᖃᖅ á‘Žá‘Žá•‹á–…á‘•á…á’‹áŠá•á–“ᕈᑦ $1',
@@ -380,6 +376,11 @@ $messages = array(
'ilsubmit' => 'áƒá•šá–…á³á–…',
'bydate' => 'á±á‘–ᕈᑦá‘á–… áƒá“…á“•á•á••á’ƒ',
+# Variants for Inuktitut language
+'variantname-ike-cans' => 'á‘Žá‘Žá•‹á…ᓯᖅ á“„á‘–á–…',
+'variantname-ike-latn' => 'ilisautik',
+'variantname-iu' => 'disable',
+
# EXIF tags
'exif-imagelength' => 'á–ᑦᓯᖕᓂᖅ',
'exif-imagedescription' => 'áƒá“„ᙳáŠá–… áŠá‘Žá–…',
diff --git a/languages/messages/MessagesIke_latn.php b/languages/messages/MessagesIke_latn.php
index c84d17a0..e67c03a1 100644
--- a/languages/messages/MessagesIke_latn.php
+++ b/languages/messages/MessagesIke_latn.php
@@ -333,10 +333,6 @@ pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiq
# Attribution
'anonymous' => 'ilisarnanngitittuq qatannguti nakit {{SITENAME}}',
-# Math errors
-'math_unknown_error' => 'tusaumajaunngituq tammanaqtuq',
-'math_unknown_function' => 'tusaumajaunngituq iliurniq',
-
# Image deletion
'deletedrevision' => 'nipaq utuqaq titiraqtaugiarngarut $1',
@@ -348,6 +344,11 @@ pigivuq qatannguti uikipitia kiinaujaqutiqarvik isuillingaitjapaa. iqtuu suqusiq
'ilsubmit' => 'ivaaqpuq',
'bydate' => 'pitaaruttuq inuulirvik',
+# Variants for Inuktitut language
+'variantname-ike-cans' => 'á‘Žá‘Žá•‹á…ᓯᖅ á“„á‘–á–…',
+'variantname-ike-latn' => 'ilisautik',
+'variantname-iu' => 'disable',
+
# EXIF tags
'exif-imagelength' => 'qutsingniq',
'exif-imagedescription' => 'inunnguaq atiq',
diff --git a/languages/messages/MessagesIlo.php b/languages/messages/MessagesIlo.php
index 5240d51c..51e36821 100644
--- a/languages/messages/MessagesIlo.php
+++ b/languages/messages/MessagesIlo.php
@@ -16,38 +16,38 @@
$messages = array(
# User preference toggles
'tog-underline' => 'Ugedan iti baba dagiti panilpo:',
-'tog-highlightbroken' => 'Simpaen dagiti nadadael a panilpo <a href="" class="new">a kas itoy</a> (wenno: kastoy<a href="" class="internal">?</a>).',
+'tog-highlightbroken' => 'Simpaen dagiti nadadael a panilpo <a href="" class="new">A kas itoy</a> (wenno: kastoy<a href="" class="internal">?</a>).',
'tog-justify' => 'Limpiaen dagiti parapo',
'tog-hideminor' => 'Ilemmeng dagiti babasit nga nabaliwan idiay kaudian nga balbaliw',
'tog-hidepatrolled' => 'Ilemmeng dagiti napatrolan nga nabaliwan kadagiti kaudian nga balbaliw',
'tog-newpageshidepatrolled' => 'Ilemmeng idiay baro nga listaan dagiti napatrol nga panid',
'tog-extendwatchlist' => 'Ipalawam ti listaan ti bambantayan tapno maipakita amin a panagbaliw, ta saan laeng dagita nakakabkabil',
'tog-usenewrc' => 'Usaren ti napasayaat nga dagiti napakabkabil nga baliwan (masapul ti JavaScript)',
-'tog-numberheadings' => 'Auto-number dagiti paulo',
+'tog-numberheadings' => 'Automatiko a pinagbilang kadagiti paulo',
'tog-showtoolbar' => 'Ipakita ti ramramit ti panagbaliw (masapul ti JavaScript)',
'tog-editondblclick' => 'Baliwan dagiti pampanid no idoble nga iklik (masapul ti JavaScript)',
-'tog-editsection' => 'Pagbalinen ti panagbaliw iti benneg babaen ti [baliwan] a panilpo',
+'tog-editsection' => 'Pagbalinen ti panagbaliw iti benneg babaen dagiti [baliwan] a panilpo',
'tog-editsectiononrightclick' => 'Pagmayaten ti benneg nga pabaliwan no iklik ti kannawan kadagiti benneg nga titulo (masapul ti JavaScript)',
-'tog-showtoc' => 'Ipakita dagiti linaon (para kadagiti panid nga addaan ad-adu ngem dagiti 3 nga benneg)',
-'tog-rememberpassword' => 'Laglagipem ti iseserrekko daytoy nga "browser" (iti magkamano nga $1 {{PLURAL:$1|nga aldaw|nga aldaw}})',
+'tog-showtoc' => 'Ipakita dagiti linaon (para kadagiti panid nga addaan ad-adu ngem dagiti 3 nga paulo)',
+'tog-rememberpassword' => 'Laglagipem ti iseserrekko daytoy nga browser (iti kinangato nga $1 {{PLURAL:$1|nga aldaw|nga aldaw}})',
'tog-watchcreations' => 'Inayon dagiti inaramidko a pampanid iti listaan ti bambantayak',
'tog-watchdefault' => 'Inayon dagiti binaliwak a pampanid iti listaan ti bambantayak',
'tog-watchmoves' => 'Inayon dagiti inyalisko a pampanid iti listaan ti bambantayak',
'tog-watchdeletion' => 'Inayon dagiti inikkatko a pampanid iti listaan ti bambantayak',
'tog-minordefault' => 'Markaan amin a panangbaliw kas bassit a kas kasisigud',
'tog-previewontop' => 'Ipakita ti ipadas sakbay ti kahon ti baliwan',
-'tog-previewonfirst' => 'Ipakita ti ipadas iti umuna a baliw',
+'tog-previewonfirst' => 'Ipakita ti ipadas iti umuna a baliwan',
'tog-nocache' => 'Ikkatem ti pagcache ti browser daytoy nga panid',
-'tog-enotifwatchlistpages' => 'E-suratnak no adda mabaliwan nga panid iti listaan dagiti bambantayak a pampanid',
-'tog-enotifusertalkpages' => 'E-suratnak no mabaliwan ti panidko a tungtongan ti agar-aramat',
-'tog-enotifminoredits' => 'E-suratnak met kadagiti bassit nga baliwan ti pampanid',
+'tog-enotifwatchlistpages' => 'E-suratannak no adda mabaliwan nga panid iti listaan dagiti bambantayak a pampanid',
+'tog-enotifusertalkpages' => 'E-suratannak no mabaliwan ti panidko a tungtongan ti agar-aramat',
+'tog-enotifminoredits' => 'E-suratannak met kadagiti bassit nga baliwan ti pampanid',
'tog-enotifrevealaddr' => 'Iparang ti e-surat addressko iti panangpalagip nga dagiti e-surat',
'tog-shownumberswatching' => 'Ipakita ti bilang dagiti agbambantay nga agar-aramat',
'tog-oldsig' => 'Daytoy ti pirmam:',
-'tog-fancysig' => 'Usaren ti wikitext nga agpirma (awan ti automatiko nga panagsilpo)',
-'tog-externaleditor' => 'Isigud ti agusar iti ruar nga pagibaliwan (para dagiti experto laeng, masapul ti naiduma nga settings idiay komputer mo. [http://www.mediawiki.org/wiki/Manual:External_editors Adu pay nga informasion.])',
-'tog-externaldiff' => 'Isigud ti agusar iti ruar nga sabali (para dagiti experto laeng, masapul ti naiduma nga settings idiay komputer mo. [http://www.mediawiki.org/wiki/Manual:External_editors Adu pay nga informasion.])',
-'tog-showjumplinks' => 'Ipagbalin mo ti "mapan iti" nga agpalaka dagiti panagsilpo',
+'tog-fancysig' => 'Usaren ti wikitext nga agpirma (nga awan ti automatiko nga panagsilpo)',
+'tog-externaleditor' => 'Isigud ti agusar iti ruar nga pagibaliwan (para dagiti experto laeng, masapul ti naiduma nga pinakaikabil idiay komputer mo. [//www.mediawiki.org/wiki/Manual:External_editors Adu pay nga informasion.])',
+'tog-externaldiff' => 'Isigud ti agusar iti ruar nga sabali (para dagiti experto laeng, masapul ti naiduma nga pinakaikabil idiay komputer mo. [//www.mediawiki.org/wiki/Manual:External_editors Adu pay nga informasion.])',
+'tog-showjumplinks' => 'Ipagbalin mo ti "mapan iti" nga agpalaka ti papan kadagiti panagsilpo',
'tog-uselivepreview' => 'Usaren ti pagpadas tattan (masapul ti JavaScript) (experimento laeng)',
'tog-forceeditsummary' => 'Pakaammuannak no sumrek ti blanko nga pakabuklan ti baliw',
'tog-watchlisthideown' => 'Ilemmeng idiay listaan ti bambantayan dagiti binaliwak',
@@ -57,8 +57,8 @@ $messages = array(
'tog-watchlisthideanons' => 'Ilemmeng idiay listaan ti bambantayan dagiti binaliwan ti di am-ammo nga agar-aramat',
'tog-watchlisthidepatrolled' => 'Ilemmeng idiay listaan ti bambantayan dagiti napatrol nga binaliwan',
'tog-ccmeonemails' => 'Patulodandak iti kopya dagiti e-surat nga ipatulodko iti sabsabali nga agar-aramat',
-'tog-diffonly' => 'Saan nga iparang ti linaon ti panid iti baba ti sabali',
-'tog-showhiddencats' => 'Ipakita dagiti nakalemmeng nga kategoria',
+'tog-diffonly' => 'Saan nga iparang ti linaon ti panid iti baba ti sasabali',
+'tog-showhiddencats' => 'Ipakita dagiti nailemmeng nga kategoria',
'tog-norollbackdiff' => 'Ikkatem ti sabali no malpaska nga agipasubli',
'underline-always' => 'Kanayon',
@@ -66,7 +66,7 @@ $messages = array(
'underline-default' => 'Kasisigud nga browser',
# Font style option in Special:Preferences
-'editfont-style' => 'Baliwan ti kita ti letra dita nga parte:',
+'editfont-style' => 'Baliwan ti kita ti letra dita nga lugar:',
'editfont-default' => 'Kasisigud ti browser',
'editfont-monospace' => 'Monospaced nga letra',
'editfont-sansserif' => 'Sans-serif nga letra',
@@ -126,11 +126,11 @@ $messages = array(
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Kategoria|Dagiti kategoria}}',
-'category_header' => 'Dagiti panid iti kategoria "$1"',
+'category_header' => 'Dagiti panid idiay kategoria "$1"',
'subcategories' => 'Dagiti apo ti kategoria',
'category-media-header' => 'Dagiti media idiay kategoria "$1"',
'category-empty' => "''Daytoy nga kategoria ket awanan pampanid wenno media iti agdama.''",
-'hidden-categories' => '{{PLURAL:$1|Nakalemmeng nga kategoria|Dagiti nakalemmeng nga kategoria}}',
+'hidden-categories' => '{{PLURAL:$1|Nailemmeng nga kategoria|Dagiti nailemmeng nga kategoria}}',
'hidden-category-category' => 'Dagiti nailemmeng nga kategoria',
'category-subcat-count' => '{{PLURAL:$2|Daytoy nga kategoria ket addaan laeng iti sumaganad nga apo ti kategoria.|Daytoy nga kategoria ket addaan iti sumaganad a {{PLURAL:$1|apo ti kategoria|$1 dagiti apo ti kategoria}}, manipud iti dagup nga $2.}}',
'category-subcat-count-limited' => 'Daytoy nga kategoria ket addaan kadagiti sumaganad a {{PLURAL:$1|apo ti kategoria|$1 dagiti apo ti kategoria}}.',
@@ -141,8 +141,7 @@ $messages = array(
'listingcontinuesabbrev' => 'tuloy.',
'index-category' => 'Dagiti nayraman nga panid',
'noindex-category' => 'Dagiti saan nga nayraman nga panid',
-
-'mainpagetext' => "'''Sibaballigi a nainstolar ti MediaWiki.'''",
+'broken-file-category' => 'Dagiti panid nga nadadael ti pinagsilpo na iti papeles',
'about' => 'Maipapan iti',
'article' => 'Panid ti linaon',
@@ -151,7 +150,7 @@ $messages = array(
'moredotdotdot' => 'Adu pay...',
'mypage' => 'Panidko',
'mytalk' => 'Pakitungtongak',
-'anontalk' => 'Tungtongan iti daytoy nga IP',
+'anontalk' => 'Tungtongan iti daytoy nga IP address',
'navigation' => 'Pagdaliasatan',
'and' => '&#32;ken',
@@ -194,10 +193,10 @@ $messages = array(
'history' => 'Pakasaritaan ti panid',
'history_short' => 'Pakasaritaan',
'updatedmarker' => 'napabaro sipud naudi nga isasarungkarko',
-'info_short' => 'Informasion',
'printableversion' => 'Version a maimaldit',
'permalink' => 'Permanente a silpo',
'print' => 'Imaldit',
+'view' => 'Kitaen',
'edit' => 'Baliwan',
'create' => 'Agaramid',
'editthispage' => 'Baliwan daytoy nga panid',
@@ -205,6 +204,7 @@ $messages = array(
'delete' => 'Ikkaten',
'deletethispage' => 'Ikkaten daytoy a panid',
'undelete_short' => 'Isubli ti naikkat a {{PLURAL:$1|maysa nga binaliwan|$1 dagiti binaliwan}}',
+'viewdeleted_short' => 'Kitaen {{PLURAL:$1|ti maysa nga naikkat nga binaliwan|$1 digiti naikkat nga binaliwan}}',
'protect' => 'Saluadan',
'protect_change' => 'sukatan',
'protectthispage' => 'Saluadan daytoy nga panid',
@@ -228,10 +228,10 @@ $messages = array(
'viewhelppage' => 'Kitaem ti panid ti tulong',
'categorypage' => 'Kitaen ti panid ti kategoria',
'viewtalkpage' => 'Kitaen ti pagtungtungan',
-'otherlanguages' => 'Ti sabali nga pagsasao',
+'otherlanguages' => 'Dagiti sabali nga pagsasao',
'redirectedfrom' => '(Naibaw-ing manipud iti $1)',
'redirectpagesub' => 'Ibaw-ing ti panid',
-'lastmodifiedat' => 'Naudi a nabaliwan daytoy a panid idi $2, $1',
+'lastmodifiedat' => 'Naudi a nabaliwan daytoy a panid idi $1, ti oras nga $2.',
'viewcount' => 'Naserrekan daytoy a panid iti {{PLURAL:$1|naminsan|$1 a daras}}.',
'protectedpage' => 'Nasaluadan a panid',
'jumpto' => 'Mapan iti:',
@@ -244,7 +244,7 @@ Pangaasim nga aguray ka met bago mo nga padasen ti mangkita daytoy nga panid.
$1',
'pool-timeout' => 'Madamdama agururay ti pinakaserra',
'pool-queuefull' => 'Napunnon ti nagyanan ti agur-uray',
-'pool-errorunknown' => 'Di ammo nga biddut',
+'pool-errorunknown' => 'Di am-ammo a biddut',
# 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' => 'Maipapan iti {{SITENAME}}',
@@ -288,17 +288,21 @@ $1',
'toc' => 'Linaon',
'showtoc' => 'ipakita',
'hidetoc' => 'ilemmeng',
+'collapsible-collapse' => 'Ilemmeng',
+'collapsible-expand' => 'Ipakita',
'thisisdeleted' => 'Kitaen wenno isubli ti $1?',
'viewdeleted' => 'Kitaen ti $1?',
'restorelink' => '{{PLURAL:$1|maysa nga naikkat nga baliwan|$1 dagiti naikkat nga baliwan}}',
'feedlinks' => 'Pakan:',
-'feed-invalid' => 'Saan a mabalin nga kita ti subscription feed.',
+'feed-invalid' => 'Saan a mabalin nga kita ti maalala a pakan.',
'feed-unavailable' => 'Awan dagiti pakan a sindikasyon',
'site-rss-feed' => '$1 Pakan ti RSS',
'site-atom-feed' => '$1 Pakan ti Atom',
'page-rss-feed' => '"$1" Pakan ti RSS',
'page-atom-feed' => 'Pakan nga Atom ti "$1"',
'red-link-title' => '$1 (awan ti panid)',
+'sort-descending' => 'Ilasin mo nga agpababa',
+'sort-ascending' => 'Ilasin mo nga agpangato',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Articulo',
@@ -309,7 +313,7 @@ $1',
'nstab-image' => 'Papeles',
'nstab-mediawiki' => 'Mensahe',
'nstab-template' => 'Templeta',
-'nstab-help' => 'tulong',
+'nstab-help' => 'Tulong',
'nstab-category' => 'Kategoria',
# Main script and global functions
@@ -359,7 +363,7 @@ Panngaasim ta ibagam kadagiti [[Special:ListUsers/sysop|administrador]], lagipem
'filecopyerror' => 'Saan a makopia ti papeles "$1" iti "$2".',
'filerenameerror' => 'Saan a masuktan ti nagan ti papeles a "$1" iti "$2".',
'filedeleteerror' => 'Saan a maikkat ti papeles a "$1".',
-'directorycreateerror' => 'Saan a mapartuat ti direktorio a "$1".',
+'directorycreateerror' => 'Saan a maaramid ti direktorio a "$1".',
'filenotfound' => 'Saan a masarakan ti papeles a "$1".',
'fileexistserror' => 'Di mabalin a maisurat ti papeles a "$1": addan kasta a papeles',
'unexpected' => 'Di mapakpakadaaan a kuwenta: "$1"="$2".',
@@ -378,18 +382,21 @@ Function: $1<br />
Query: $2',
'viewsource' => 'Kitaen ti taudan',
'viewsourcefor' => 'para iti $1',
-'actionthrottled' => 'Napabenteg ti aramid',
+'actionthrottled' => 'Napabuntog ti aramid',
+'actionthrottledtext' => 'Para ti pagkontra ti spam, nalimitado ka ti pinagaramid ti adu unay iti daytoy nga aksion iti nasiket nga oras, ken nalippasamon ti limitado.
+Pangngaasi ta ipadas mo manen no madamdama.',
'protectedpagetext' => 'Narikpan daytoy a panid tapno maliklikan ti panangbaliw',
'viewsourcetext' => 'Mabalinmo a kitaen ken kopyaen ti taudan daytoy a panid:',
'protectedinterface' => 'Daytoy nga panid ket mangited ti teksto nga interface para iti software, ken nasaluadan tapno agpasardeng ti pinagabuso.',
'editinginterface' => "'''Ballaag:''' Balbaliwam ti maysa a panid a maar-aramat a mangted iti teksto ti interface para iti software.
Dagiti panangbalbaliw iti daytoy a panid ket apektaranna ti langa ti agaramat a interface ti sabsabali nga agar-aramat.
-Para kadagiti patarus, pangngaasim ta padasem nga aramaten ti [http://translatewiki.net/wiki/Main_Page?setlang=ilo translatewiki.net], ti MediaWiki projecto nga agpabaliw ti pagsasao.",
+Para kadagiti patarus, pangngaasim ta padasem nga aramaten ti [//translatewiki.net/wiki/Main_Page?setlang=ilo translatewiki.net], ti MediaWiki projecto nga agpabaliw ti pagsasao.",
'sqlhidden' => '(nakalemmeng ti binirok nga SQL )',
'cascadeprotected' => 'Daytoy nga panid ket nasualadan ti pinagbaliw, ngamin ket nairaman kadagiti sumaganad nga {{PLURAL:$1|panid, nga|dagiti panid, nga}} nasaluadan iti na-ipabalin a pagpilian nga "cascading" :
$2',
'namespaceprotected' => "Awananka iti pammalubos a mangbaliw kadagiti panid iti '''$1''' a namespace.",
-'customcssjsprotected' => 'Awananka iti pammalubos a mangedit iti daytoy a panid, agsipud ta adda linaonna a personal a settings ti sabali nga agar-aramat.',
+'customcssprotected' => 'Awan ti pammalubos mo ti agpabaliw ditoy nga panid ti CSS, agsipud ta adda linaonna kadagiti kukua ti agar-aramat ti sabali nga pinagikabil .',
+'customjsprotected' => 'Awan ti pammalubos mo ti agpabaliw ditoy nga panid ti JavaScript, agsipud ta adda linaonna a personal a settings ti sabali nga agar-aramat.',
'ns-specialprotected' => 'Saan a mabalin a baliwan dagiti naiduma a panid.',
'titleprotected' => "Sinaluadan daytoy a titulo manipud iti pinakaaramid ni [[User:$1|$1]].
Ti naited a rason ket ''$2''.",
@@ -427,6 +434,7 @@ Dimo liplipatan a sukatan dagiti kaykayatmo idiay [[Special:Preferences|{{SITENA
'createaccount' => 'Angaramid ti baro nga pakabilan',
'gotaccount' => "Addaanka kadin iti pakabilan mo? '''$1'''.",
'gotaccountlink' => 'Sumrek',
+'userlogin-resetlink' => 'Nalipatam dagiti pagserrek mo?',
'createaccountmail' => 'babaen ti e-surat',
'createaccountreason' => 'Rason:',
'badretype' => 'Saan nga agparis dagiti impanmo a pasesbalikas.',
@@ -440,13 +448,15 @@ Pangaasim ta usarem metten, no sumrek ka usarem ti baro nga pasesbalikas ken na
'nocookieslogin' => 'Agus-usar ti {{SITENAME}} iti cookies tapno makastrek dagiti agar-aramat.
Saan a mabalin dagiti cookiesmo.
Pangngaasim ta pagbalinem ida ket padasem manen ti sumrek.',
+'nocookiesfornew' => 'Ti pakabilan ti agar-aramat ket saan nga naaramid, saan mi nga ammo ti naggapuan na.
+Usarem dagita cookies mo, ipadas mo manen daytoy nga panid.',
'noname' => 'Saanka a nangipan iti mabalin a nagan ti agar-aramat.',
'loginsuccesstitle' => 'Balligi ti panagserrek',
'loginsuccess' => "'''Nakastrekkan idiay {{SITENAME}} a kas ni \"\$1\".'''",
'nosuchuser' => 'Awan ti agar-aramat nga agnagan iti "$1".
Kitaem ti espelingmo, wenno [[Special:UserLogin/signup|agaramid ka ti baro nga pakabilan]].',
-'nosuchusershort' => 'Awan ti agar-aramat nga addaan iti nagan a "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Awan ti agar-aramat nga addaan iti nagan a "$1".
Kitaem ti espelingmo.',
'nouserspecified' => 'Nasken a mangipanka iti nagan.',
'login-userblocked' => 'Naserraan daytoy nga agar-aramat. Maiparit ti sumrek.',
@@ -492,13 +502,14 @@ Saan mo nga ikaskaso daytoy nga mensahe, no biddut nga naaramid daytoy nga pakab
'usernamehasherror' => 'Dagiti nagan ti agar-aramat ke saan nga ikkan iti "hash" karakter',
'login-throttled' => 'Adu unay ti pinagpadas mo nga sumrek.
Pangaasim ta aguray ka saka agipadas manen.',
+'login-abort-generic' => 'Madi ti pinakastrekmo - Napasardeng',
'loginlanguagelabel' => 'Pagsasao: $1',
'suspicious-userlogout' => 'Madi ti pinagdawat mo nga rummuar, ngamin ket kasla inpatulod ti nadadael nga "browser" wenno "caching proxy".',
# E-mail sending
'php-mail-error-unknown' => "Di am-ammo nga biddut ti PHP's mail () function.",
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Sukatan ti pasesbalikas',
'resetpass_announce' => 'Nagserrek ka nga nagusar iti temporario nga na e-surat nga kodigo.
Tapno malpas ka nga makastrek, mangikabil ka ti baro nga pasesbalikas ditoy:',
@@ -518,6 +529,40 @@ Sumsumrekkan...',
Baka mabalin nga nakapagbaliw ka metten iti pasesbalikas mo wenno nakadawat ka ti temporario nga pasesbalikas.',
'resetpass-temp-password' => 'Temporario nga pasesbalikas:',
+# Special:PasswordReset
+'passwordreset' => 'Ipasubli ti pasesbalikas',
+'passwordreset-text' => 'Lippasem daytoy nga porma tapno maipatulodan ka ti e-surat nga palagipan kadagiti detalye ti pakabilam.',
+'passwordreset-legend' => 'Ipasubli ti pasesbalikas',
+'passwordreset-disabled' => 'Naikkat dagiti pagisubli ti pasesbalikas daytoy nga wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Ikabil ti maysa nga parte ti data dita baba}}',
+'passwordreset-username' => 'Nagan ti agar-aramat:',
+'passwordreset-domain' => 'Kadagaan:',
+'passwordreset-email' => 'E-surat address:',
+'passwordreset-emailtitle' => 'Detalye ti pakabilan idiay {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Addaan (baka sika, ti naggapuan ti IP address $1) a nagdawat ti palagip para
+dagiti detalye ti pakabilan mo para ti {{SITNAME}} ($4) . Ti sumaganad {{PLURAL:$3|a pakabilan ket|kadagiti pakabilan}} ti agar-aramat ket
+nakairaman iti daytoy nga e-surat address:
+
+$2
+
+{{PLURAL:$3|Daytoy nga temporario a pasesbalikas|Dagitoy nga temporario a pasesbalikas}} ket agtapos iti {{PLURAL:$5|maysa nga aldaw|$5 nga aldaw}}.
+Sumrekka kuman ta agpili ka ti baro apasesbalikas mo tattan. No adda met sabali nga nagaramid daytoy nga
+pinagdawat, wenno malagip mo ti dati nga pasesbalikas mo, ket saan mo nga kayat ten nga sukatan, saan mon nga ikaskaso daytoy nga mensahe ken
+agtuloy kan nga agusar ti daan nga pasesbalikas mo.',
+'passwordreset-emailtext-user' => 'Daytoy nga agar-aramat $1 idiay {{SITENAME}} ket nagdawat ti palagip para dagiti detalye ti pakabilan idiay {{SITENAME}}
+($4) . Ti sumaganad {{PLURAL:$3|a pakabilan ket|kadagiti pakabilan}} ti agar-aramat ket
+nakairaman iti daytoy nga e-surat address:
+
+$2
+
+{{PLURAL:$3|Daytoy nga temporario a pasesbalikas|Dagitoy nga temporario a pasesbalikas}} ket agtapos iti {{PLURAL:$5|maysa nga aldaw|$5 nga aldaw}}.
+Sumrekka kuman ta agpili ka ti baro a pasesbalikas mo tattan. No adda met sabali nga nagaramid daytoy nga
+pinagdawat, wenno malagip mo ti dati nga pasesbalikas mo, ket saan mo nga kayat ten nga sukatan, saan mon nga ikaskaso daytoy nga mensahe ken
+agtuloy kan nga agusar ti daan nga pasesbalikas mo.',
+'passwordreset-emailelement' => 'Nagan ti agar-aramat: $1
+Temporario nga pasesbalikas: $2',
+'passwordreset-emailsent' => 'Maipatuloden ti e-surat nga palagip.',
+
# Edit page toolbar
'bold_sample' => 'Napuskol a teksto',
'bold_tip' => 'Napuskol a teksto',
@@ -529,8 +574,6 @@ Baka mabalin nga nakapagbaliw ka metten iti pasesbalikas mo wenno nakadawat ka t
'extlink_tip' => 'Akinruar a panilpo (laglagipen ti http:// a prefix)',
'headline_sample' => 'Letra ti benneg',
'headline_tip' => 'Kangato 2 a paulo',
-'math_sample' => 'Isulbong ti formula ditoy',
-'math_tip' => 'Matematikal a formula (LaTeX)',
'nowiki_sample' => 'Mangisuldong iti saan a napormat a teksto ditoy',
'nowiki_tip' => 'Saan nga ikaskaso ti pinagporma ti wiki',
'image_tip' => 'Naibinggas a papeles',
@@ -605,7 +648,7 @@ Kitkitaem daytoy panid idi naiyalis wenno naikkat .',
Ti pasesbalikas ti baro nga pakabilan ket masukatan idiay ''[[Special:ChangePassword|pagsukatan ti pasesbalikas]]'' nga panid no sumrekka.",
'newarticle' => '(Baro)',
-'newarticletext' => "Nasurotmo ti maysa a panilpo iti saan pay a narugian wenno naaramid a panid. Tapno marugian daytoy a panid, rugiamon ti agikur-it wenno agisurat iti pagsuratan a kahon iti baba (kitaen ti [[{{MediaWiki:Helppage}}|panid ti tulong]] para iti ad-adu pay nga informasion). No met nakadanonka ditoy a dimo inggagara wenno gapu iti biddut, iklikmo laeng ti '''agsubli'' button ti browsermo tapno makasublika iti naggapuam a panid.",
+'newarticletext' => "Nasurotmo ti maysa a panilpo iti saan pay a narugian wenno naaramid a panid. Tapno marugian daytoy a panid, rugiamon ti agikur-it wenno agisurat iti pagsuratan a kahon iti baba (kitaen ti [[{{MediaWiki:Helppage}}|panid ti tulong]] para iti ad-adu pay nga informasion). No met nakadanonka ditoy a dimo inggagara wenno gapu iti biddut, iklikmo laeng ti '''agsubli'' buton ti browsermo tapno makasublika iti naggapuam a panid.",
'anontalkpagetext' => "----''Daytoy ti pakitungtungan a panid para iti di am-ammo nga agar-aramat nga saan pay nga nakaaramid ti pakabilan, wenno saan na nga us-usaren.
Dakami ket agusar kami ti numero nga IP address ti pinangilasin dagiti lalaki/babai.
Ti kastoy nga IP address ket us-usaren a padawatan ti adu pay a sabsabali nga agar-aramat.
@@ -619,7 +662,8 @@ wenno [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} baliwam daytoy nga pan
Mabalinmo ti [[Special:Search/{{PAGENAME}}|agsapul iti kastoy a titulo ti panid]] iti sabsabali a pampanid,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} agbirokka],
wenno [{{fullurl:{{NAMESPACE}}:{{PAGENAME}}|action=edit}} baliwam daytoy nga panid].',
-'userpage-userdoesnotexist' => 'Ti account ti agar-aramat "$1" ket saan a nakarehistro. Pangngaasim ta tsek-apem no kayatmo a partuaten wenno editen daytoy a panid.',
+'userpage-userdoesnotexist' => 'Ti pakabilan ti agar-aramat "$1" ket saan a nakarehistro.
+Pangngaasim ta kitaem no kayatmo nga agaramid/baliwan daytoy nga panid.',
'userpage-userdoesnotexist-view' => 'Ti pakabilan ni agar-aramat "$1" ket saan nga nakarehistro.',
'blocked-notice-logextract' => 'Naserraan tatta daytoy nga agar-aramat.
Ti naudi nga listaan ti pinakaserra ket adda ti baba ta usaren nga referencia:',
@@ -654,6 +698,10 @@ No saan pay a mabalin, padasem ti [[Special:UserLogout|rummuar]] ken sumrek ka m
'''No daytoy ket pudno nga pinagbaliwan, pangngaasi ta padasem manen.'''
No saan pay a mabalin, padasem ti [[Special:UserLogout|rummuar]] ken sumrek manen.",
+'token_suffix_mismatch' => "'''Ti binaliwam ket saan nga naawat ngamin ket ti klientem ket dinadael na ti kuldit ti karakter idiat pagpudno ti binaliwan.'''
+Ti pinagbaliw ket saan nga naawat tapno maprebenta ti pinakadadael ti teksto ti panid.
+Mapasamak daytoy no agususar ka ti saan nga nasayaat a naibasta ti sapot a diamammo nga proxy a serbisyo.",
+'edit_form_incomplete' => "'''Adda dagiti parte ti pinagbaliwan a forma nga saan nga nakadanon dita server; kitkitaen nga dagiti pinagbaliwmo ket saan a naikkatan ken padasem manen.'''",
'editing' => 'Mabalbaliwan ti $1',
'editingsection' => 'Mabalbaliwan ti $1 (benneg)',
'editingcomment' => 'Mabalbaliwan ti $1 (baro nga benneg)',
@@ -821,6 +869,8 @@ awan ti naibaga nga pinagbaliw, wenno padpadasem nga ilemlemmeng ti kadama nga p
'revdelete-show-file-submit' => 'Wen',
'revdelete-selected' => "'''{{PLURAL:$2|Napili nga nabaliwan|Dagiti napili nga nabaliwan}} ti [[:$1]]:'''",
'logdelete-selected' => "'''{{PLURAL:$1|Ti napili a listaan ti napasamak|Dagiti napili a listaan ti napasamak}}:'''",
+'revdelete-text' => "'''Dagiti naikkat binaliwan ken dagiti napasamak ket agparang idiay panid ti pakasaritaan ken dagiti listaan, ngem addaan dagiti parte ti nagyanda nga saan to maserrekan ti publiko.'''
+Dagit sabsabali nga administrador idiay {{SITENAME}} ket mabalin dan tupay nga serrekan ti nailemmeng a nagyan ken isubli ti pinakaikkat da manen idiay dati a interface, ngem saan no adda dagiti nainayon a naikabil a pinagparit.",
'revdelete-legend' => 'Iplastar dagiti pinagparit ti pinagkita',
'revdelete-hide-text' => 'Ilemmeng ti teksto ti binaliwan',
'revdelete-hide-image' => 'Ilemmeng ti linaon ti papeles',
@@ -873,7 +923,9 @@ Saan mo a mabalin nga serrekan.',
'revdelete-offender' => 'Nangsukat nga mannurat:',
# Suppression log
-'suppressionlog' => 'Listaan ti napasardeng',
+'suppressionlog' => 'Listaan ti napasardeng',
+'suppressionlogtext' => 'Dita baba ket addaan dagiti listaan ti pinagikkat ken pinagserra nga adda nagyanna nga nailemmeng kadagiti administrador.
+Kitaen ti [[Special:BlockList|Listaan ti serra nga IP]] iti listaan ti agdama nga kadagiti operasiyonal nga pinagparit ken pinagserra.',
# History merging
'mergehistory' => 'Pagtiponen dagiti pakasaritaan ti pampanid',
@@ -982,12 +1034,13 @@ Mabalin mo ti agbirok idiay Google tattan.
Laglagipem laeng nga tdagiti listaan da nga nagyan ti {{SITENAME}} saan nga barbaro.',
# Quickbar
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'Awan',
-'qbsettings-fixedleft' => 'Agyan latta iti kannigid',
-'qbsettings-fixedright' => 'Agyan latta iti kannawan',
-'qbsettings-floatingleft' => 'Tumpaw ti kannigid',
-'qbsettings-floatingright' => 'Tumpaw ti kannawan',
+'qbsettings' => 'Quickbar',
+'qbsettings-none' => 'Awan',
+'qbsettings-fixedleft' => 'Agyan latta iti kannigid',
+'qbsettings-fixedright' => 'Agyan latta iti kannawan',
+'qbsettings-floatingleft' => 'Tumpaw ti kannigid',
+'qbsettings-floatingright' => 'Tumpaw ti kannawan',
+'qbsettings-directionality' => 'Nasimpa, gapu laeng ti papanan ti pinagsurat mo ti pagsasaom.',
# Preferences page
'preferences' => 'Kaykayatan',
@@ -998,14 +1051,15 @@ Laglagipem laeng nga tdagiti listaan da nga nagyan ti {{SITENAME}} saan nga barb
'changepassword' => 'Baliwan ti pasesbalikas',
'prefs-skin' => 'Kudil',
'skin-preview' => 'padasem',
-'prefs-math' => 'Math',
'datedefault' => 'Awan ti kaykayatan',
+'prefs-beta' => 'Dagiti beta nga pagkarupa',
'prefs-datetime' => 'Petsa ken oras',
+'prefs-labs' => 'Dagiti labs nga pagkarupa',
'prefs-personal' => 'Parupaan ti agar-aramat',
'prefs-rc' => 'Kaudian a balbaliw',
'prefs-watchlist' => 'Listaan ti bambantayan',
'prefs-watchlist-days' => 'Bilang ti aldaw nga agparang iti listaan ti bambantayan:',
-'prefs-watchlist-days-max' => 'Pinakangato 7 nga aldaw',
+'prefs-watchlist-days-max' => 'Pinakangato a 7 nga aldaw',
'prefs-watchlist-edits' => 'Pinakangato nga bilang ti ipakita kadagiti pinagbaliw nga napadakkel a bambantayan:',
'prefs-watchlist-edits-max' => 'Pinakangato nga bilang: 1000',
'prefs-watchlist-token' => 'Pagpudno ti bambantayan:',
@@ -1020,8 +1074,6 @@ Laglagipem laeng nga tdagiti listaan da nga nagyan ti {{SITENAME}} saan nga barb
'prefs-edit-boxsize' => 'Kadakkel ti tawa ti pinagbaliw',
'searchresultshead' => 'Biroken',
'resultsperpage' => 'Nabirokan ti kada panid:',
-'contextlines' => 'Hit kada linia:',
-'contextchars' => 'Contexto ti kada linia:',
'stub-threshold' => 'Pangruggian ti pinagpormat kadagiti<a href="#" class="stub">pangted a panilpo</a> (bytes):',
'stub-threshold-disabled' => 'Naikkat',
'recentchangesdays' => 'Mano nga aldaw nga ipakita dagiti kaudian nga balbaliw:',
@@ -1035,6 +1087,7 @@ Adda ditoy ti pugto nga kuwenta nga mausar mo: $1',
'savedprefs' => 'Naidulin dagitoy kaykayatmon.',
'timezonelegend' => 'Zona ti oras:',
'localtime' => 'Lokal nga oras:',
+'timezoneuseserverdefault' => 'Usaren ti kinasigud ti wiki ($1)',
'timezoneuseoffset' => 'Sabsabali (ibaga ti supli)',
'timezoneoffset' => 'Supli¹:',
'servertime' => 'Oras ti server:',
@@ -1085,6 +1138,9 @@ Daytoy nga informasion ket makita ti publiko.',
'email' => 'E-surat',
'prefs-help-realname' => 'Saan a nasken ti pudno a nagan.
Ngem no kayatmo nga ited, maaramat daytoy kas pammadayaw ken pangpatalged iti obram.',
+'prefs-help-email' => 'Ti e-surat address ket saan nga masapul, ngem masapul no agsukat ka ti pasesbalikas, baka no malipatam ti pasesblikas mo.',
+'prefs-help-email-others' => 'Mabalin mo nga agpili tapno dagiti sabsabali nga agar-aramat ket ma e-suratandaka idiay panagsilpo ti panidmo wenno ti panid ti kapatangam.
+Ti e-surat addressmo ket saan nga maipakita kadagit agar-aramat nga agkontak kenka.',
'prefs-help-email-required' => 'Masapul ti e-surat address.',
'prefs-info' => 'Kaunaan nga kaamammuan',
'prefs-i18n' => 'Internasyonalisasyon',
@@ -1167,6 +1223,8 @@ Ngem no kayatmo nga ited, maaramat daytoy kas pammadayaw ken pangpatalged iti ob
'right-upload_by_url' => 'Pag-ipan ti papeles a naggapu ti URL',
'right-purge' => 'Pasariwaam ti cache ti site nga ti panid ket awan ti pasingkedan na.',
'right-autoconfirmed' => 'Baliwan dagiti nasaluadan-bassit a pampanid',
+'right-bot' => 'Matrato a kas automatiko a pinagaramid',
+'right-nominornewtalk' => 'Nga awanan ti bassit nga pinagbaliw dagiti tungtungan a panid ti mangkalbit dagiti agpakabil ti baro a mensahe',
'right-apihighlimits' => 'Agusar ti nangatngato a limitado kadagiti pinagsapul ti API.',
'right-writeapi' => 'Pinagusar ti pagsurat ti API',
'right-delete' => 'Ikkaten dagiti pampanid',
@@ -1181,7 +1239,7 @@ Ngem no kayatmo nga ited, maaramat daytoy kas pammadayaw ken pangpatalged iti ob
'right-block' => 'Serraan dagiti sabali nga agar-aramat nga agpabaliw',
'right-blockemail' => 'Serraan dagiti agar-aramat nga agpatulod iti e-surat',
'right-hideuser' => 'Serran ti maysa nga nagan ti agar-aramat, ilemmeng iti publiko',
-'right-ipblock-exempt' => 'Labsan ti IP nga serra, dagiti auto nga serra ken raange nga serra.',
+'right-ipblock-exempt' => 'Labsan dagiti IP nga serra, dagiti automatiko nga serra ken dagiti naabutan nga serra.',
'right-proxyunbannable' => 'Labsan dagiti automatiko a serra iti proxies',
'right-unblockself' => 'Ikkaten ti serra kanyayo',
'right-protect' => 'Sukatan dagiti kangato ti saluadan ken dagiti panid a nasaluadan ti pinagbaliw',
@@ -1208,10 +1266,11 @@ Ngem no kayatmo nga ited, maaramat daytoy kas pammadayaw ken pangpatalged iti ob
'right-sendemail' => 'Agpatulod ti e-surat dagiti sabali nga agar-aramat',
# User rights log
-'rightslog' => 'Listaan dagiti karbengan ti agar-aramat',
-'rightslogtext' => 'Listaan daytoy ti pinabaliw dagiti karbengan ti agararamat.',
-'rightslogentry' => 'Nasukatan ti panagkameng iti bunggoy ti $1 manipud $2 iti $3',
-'rightsnone' => '(awan)',
+'rightslog' => 'Listaan dagiti karbengan ti agar-aramat',
+'rightslogtext' => 'Listaan daytoy ti pinabaliw dagiti karbengan ti agararamat.',
+'rightslogentry' => 'Nasukatan ti panagkameng iti bunggoy ti $1 manipud $2 iti $3',
+'rightslogentry-autopromote' => 'na automatiko a naipangato nga naggapo iti $2 idiay $3',
+'rightsnone' => '(awan)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'basaem datoy panid',
@@ -1222,7 +1281,7 @@ Ngem no kayatmo nga ited, maaramat daytoy kas pammadayaw ken pangpatalged iti ob
'action-minoredit' => 'markaam a bassit nga baliwan daytoy',
'action-move' => 'Iyalis daytoy nga panid',
'action-move-subpages' => 'iyalis daytoy nga panid, ken dagiti anak na a panid',
-'action-move-rootuserpages' => 'Iyalis dagiti ro-ot nga pampanid dagiti agar-aramat',
+'action-move-rootuserpages' => 'iyalis dagiti ramut nga pampanid ti agar-aramat',
'action-movefile' => 'Iyalis daytoy nga papeles',
'action-upload' => 'ipapan daytoy nga papeles',
'action-reupload' => 'suratam manen dagiti adda nga papeles',
@@ -1241,12 +1300,12 @@ Ngem no kayatmo nga ited, maaramat daytoy kas pammadayaw ken pangpatalged iti ob
'action-import' => 'agala ka ti panid iti sabali nga wiki',
'action-importupload' => 'alaem daytoy nga panid idiay naipan nga papeles',
'action-patrol' => 'Markaan a kas napatrolan dagiti pabaliw ti dadduma',
-'action-autopatrol' => 'markaem dagiti napatrol mo nga baliwan',
+'action-autopatrol' => 'markaam dagiti napatrol mo nga baliwan',
'action-unwatchedpages' => 'kitaen ti listaan dagiti saan nga nabambantayan nga panid',
'action-trackback' => 'mangted iti trackback',
'action-mergehistory' => 'Pagtitiponen ti pakasaritaan daytoy nga panid',
'action-userrights' => 'baliwan amin a karbengan ti agar-aramat',
-'action-userrights-interwiki' => 'baliwan dagiti karbengan ti agar-aramat iti agar-aramat iti sabsabali a wikis',
+'action-userrights-interwiki' => 'baliwan dagiti karbengan ti agar-aramat iti agar-aramat kadagiti sabsabali a wiki',
'action-siteadmin' => 'serraan wenno lukatan daytoy "database"',
# Recent changes
@@ -1334,11 +1393,13 @@ Kitaen dagiti [[Special:NewFiles|galleria ti baro nga papeles]] ti adu pay nga p
'illegalfilename' => 'Ti nagan ti papeles "$1" ket adda nagyan na a karakter nga saan nga mabalin kadagiti titulo ti panid.
Pangngaasi ta naganan manen ti papeles ken padasen manen nga ipapan.',
'badfilename' => 'Nasukatan ti nagan ti papeles iti "$1".',
+'filetype-mime-mismatch' => 'Ti pagpa-atiddog ti papeles ".$1" ket saan nga kapada ti nakitaan a kita ti MIME iti papeles ($2).',
'filetype-badmime' => 'Dagiti papeles a kas MIME type "$1" ket saan a mapalubosan a maipan.',
'filetype-bad-ie-mime' => 'Saan nga makapag-ipan ti papeles ngamin ket masarakan ti Internet Explorer a kas "$1", nga saan nga mabalin ken potensiyal nga dakes a kita ti papeles.',
'filetype-unwanted-type' => "'''\".\$1\"''' ti saan nga mapalubusan nga kita ti papeles.
Mapalubusan nga {{PLURAL:\$3|kita ti papeles ket|kadagiti kita ti papeles ket}} \$2.",
-'filetype-banned-type' => "Ti '''\".\$1\"''' ket saan a mapalubosan a file type. Dagiti mabalin a file types ket \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|saan nga mapalubusan nga kita ti papeles|dagiti saan nga mapalubusan nga kita ti papeles}}.
+Mapalubusan nga {{PLURAL:$3|kitati papeles ket|dagiti kita ti papeles ket}} $2.',
'filetype-missing' => 'Daytoy nga papeles ket awan ti kita na nga (kasla ".jpg").',
'empty-file' => 'Ti papeles nga intedmo ket awan ti nagyan na.',
'file-too-large' => 'Ti papeles nga intedmo ket dakkel unay.',
@@ -1357,6 +1418,7 @@ daytoy nga papeles ket $2.',
'emptyfile' => 'Ti papeles mga impapan mo ket kasla awan ti nagyan na.
Baka daytoy ket gapu ti kamali ti inkabil nga nagan ti papeles.
Pangaasi ta kitaem no kayatmo latta nga ipapan daytoy nga papeles.',
+'windows-nonascii-filename' => 'Daytoy nga wiki ket saan na a suportaran dagiti nagan ti papeles nga addaan ti naiduma a karakter.',
'fileexists' => "Addaan ti nagan ti papeles a kastoy, pangngaasi ta kitaem '''<tt>[[:$1]]</tt>''' no saan ka a sarado ti agpasukat.
[[$1|thumb]]",
'filepageexists' => "Ti deskripsiyon a panid ti daytoy a papeles ket naaramiden idiay '''<tt>[[:$1]]</tt>''', mgem awan ti papeles nga kastoy ti addaan ti nagan na..
@@ -1396,6 +1458,8 @@ Kitaem kuma ti pakasaritaan nga pinakaikkat ti papeles bago ka nga mangirugi ti
Panngaasi ta kitaem ti pannakaikabil ti pag-ipan ti papeles.',
'uploadscripted' => 'Daytoy nga papeles ket adda nagyan na a HTML wenno script a kodigo nga baka agpakamali ti pinagbasa ti web browser.',
'uploadvirus' => 'Addaan virus daytoy a papeles! Detalye: $1',
+'uploadjava' => 'Daytoy nga papeles ket ZIP papeles nga adda nagyan na a Java .nga kita ti papeles.
+Saan nga mabalin ti pinag-ipan ti Java nga papeles, ngamin ket palabsan da dagiti seguridad nga pangrestrikto.',
'upload-source' => 'Taudan ti papeles',
'sourcefilename' => 'Taudan a nagan ti papeles:',
'sourceurl' => 'Taudan ti URL:',
@@ -1428,6 +1492,23 @@ No ti problema ket agsubli latta, kontaken ti [[Special:ListUsers/sysop|administ
'upload-unknown-size' => 'Di ammo ti kadakkel na',
'upload-http-error' => 'Naka-adda ti biddut ti HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Adda biddut a nasarakan idi pinaglukat ti papeles ti pinagkita a ZIP.',
+'zip-wrong-format' => 'Ti inted a papeles ket saan a ZIP a papeles.',
+'zip-bad' => 'Daytoy nga papeles ket nadadael wenno saan nga mabasa a kas ZIP a papeles.
+Saan nga mabalin ti pinagkita ti pinakaseguridad na.',
+'zip-unsupported' => 'Ti papeles ket ZIP a papeles nga agusar ti ZIP a pagkarupa nga saan a nasuportaran ti MediaWiki .
+Saan nga mapahusto ti pinagkita ti seguridad na.',
+
+# Special:UploadStash
+'uploadstash' => 'Pinag-ipan ti stash',
+'uploadstash-summary' => 'Daytoy a panid ket mangted to panaserrek ti papeles nga napag-ipan (wenno nairugi nga ipan) ngem saan pay nga naipablaak dita wiki. Dagitoy nga papeles ket saan nga makita ti sabsabali ngem laeng ti agar-aramat nga nag-ipan kaniada.',
+'uploadstash-clear' => 'Dalusan dagiti na stash a papeles',
+'uploadstash-nofiles' => 'Awan ti na stash a papeles mo.',
+'uploadstash-badtoken' => 'Ti pinag-aramid dayta nga aksion ket napaay, ngamin ta dagiti kredensiyal mo ti pinagbaliw ket nagtaposen. Padasem manen.',
+'uploadstash-errclear' => 'Ti pinagdalus kadagiti papeles ket napaay.',
+'uploadstash-refresh' => 'Pasadiwaam dagiti listaan ti papeles',
+
# img_auth script messages
'img-auth-accessdenied' => 'naiparit ti iseserrek',
'img-auth-notindir' => 'Ti dinawat nga dalan ket saan nga ti naaramid nga direktoria ti pag-ipan',
@@ -1498,12 +1579,12 @@ Dagiti sumaganad nga listaan ket ipakita na ti {{PLURAL:$1|umona nga panilpo ti
Ti [[Special:WhatLinksHere/$2|kompleto nga listaan]] ket addaan.',
'nolinkstoimage' => 'Awan ti pampanid a nakasilpo iti daytoy a papeles.',
'morelinkstoimage' => 'Kitaen ti [[Special:WhatLinksHere/$1|ad-adu pay a panilpo]] kadaytoy a papeles.',
-'redirectstofile' => 'Dagiti sumaganad a files ket ag-redirect iti daytoy a file:',
+'linkstoimage-redirect' => '$1 (baw-ing ti papeles) $2',
'duplicatesoffile' => 'Ti sumaganad nga {{PLURAL:$1|papeles ket duplikado|$1 kadagiti papeles ket duplikado}} daytoy nga papeles ([[Special:FileDuplicateSearch/$2|adu pay nga palawag]]):',
'sharedupload' => 'Daytoy nga papeles ket naggapu idiay $1 ken mabalin nga mausar kadagiti sabsabali nga projecto.',
-'sharedupload-desc-there' => 'Daytoy nga papeles ket naggapu idiay $1 ket baka ususaren dagiti sabsabali nga projecto.
+'sharedupload-desc-there' => 'Daytoy nga papeles ket naggapu idiay $1 ken mabalin nga mausar kadagiti sabsabali nga projecto.
Pangaasin ta kitaen ti [$2 deskripsiyon ti panid] ti adu pay nga informasion.',
-'sharedupload-desc-here' => 'Daytoy nga papeles ket naggapu idiay $1 ken mabalin nga usaren dagiti sabsabali nga projecto.
+'sharedupload-desc-here' => 'Daytoy nga papeles ket naggapu idiay $1 ken mabalin nga mausar kadagiti sabsabali nga projecto.
Ti deskripsiyon na idiay [$2 deskripsiyon a panid ti papeles ] ket naipakita dita baba.',
'filepage-nofile' => 'Awan ti agnagan ti kasta nga papeles.',
'filepage-nofile-link' => 'Awan ti agnagan ti kastoy nga papeles, ngem mabalin mo ti [$1 mangipan].',
@@ -1524,7 +1605,7 @@ Ti deskripsiyon na idiay [$2 deskripsiyon a panid ti papeles ] ket naipakita di
# File deletion
'filedelete' => 'Ikkaten ti $1',
'filedelete-legend' => 'ikkaten ti papeles',
-'filedelete-intro' => "Makarugi ka agikkat ti '''[[Media:$1|$1]]''' ken dagiti amin nga pa pagsasarita na.",
+'filedelete-intro' => "Makarugi ka agikkat ti '''[[Media:$1|$1]]''' ken dagiti amin nga pa pakasaritaan na.",
'filedelete-intro-old' => "Ikikatem ti version daytoy '''[[Media:$1|$1]]''' nangrugi idi [$4 $3, $2].",
'filedelete-comment' => 'Rason:',
'filedelete-submit' => 'Ikkaten',
@@ -1587,19 +1668,20 @@ Palagipem ti agkita kadagiti sabsabali a panilpo iti templeta bago nga ikkatem i
'statistics-users-active-desc' => 'Dagit agar-aramat nga nagaramid iti aksion idi napalubos nga {{PLURAL:$1|aldaw|$1 aldaw}}',
'statistics-mostpopular' => 'Kanayon a mabuya a pampanid',
-'disambiguations' => 'Dagiti panid ti panangilawlawag',
+'disambiguations' => 'Dagiti panid a nakasilpo kadagiti panangilawlawag',
'disambiguationspage' => 'Template:pangipalpalawag',
'disambiguations-text' => "Dagiti sumaganad a panid ket manilpo iti '''pagpalawag a panid'''.
Ngem agpasilpo da kuma ti usto a topiko.<br />
Ti panid ket kas a pagpalawag a panid no agusar ti templeta nga nakasilpo idiay [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Dagiti doble a panangbaw-ing',
-'doubleredirectstext' => 'Daytoy nga panid ilista na dagiti panid nga agbaw-ing kadagiti sabsabali a baw-ing a pampanid.
+'doubleredirects' => 'Dagiti doble a panangbaw-ing',
+'doubleredirectstext' => 'Daytoy nga panid ilista na dagiti panid nga agbaw-ing kadagiti sabsabali a baw-ing a pampanid.
Iti kada pila ket adda nagyan na kadagiti panilpo iti umuna ken maikadua a baw-ing, ken iti puntaan iti maikatdua a baw-ing, nga isu ti "pudno" a puntaan ti panid, nga ti umuna a baw-ing ket isu ti ipatudo na.
<del>Nakurosan</del> dagita naikabil ket nasulbaren.',
-'double-redirect-fixed-move' => '[[$1]] naiyalisen idiay.
+'double-redirect-fixed-move' => '[[$1]] naiyalisen idiay.
Tattan ket naka baw-ing idiay [[$2]].',
-'double-redirect-fixer' => 'Pagsimpa ti baw-ing',
+'double-redirect-fixed-maintenance' => 'Simsimpaen dagiti doble nga baw-ing nga naggapo idiay [[$1]] idiay [[$2]].',
+'double-redirect-fixer' => 'Pagsimpa ti baw-ing',
'brokenredirects' => 'Dagiti naputed a panangbaw-ing',
'brokenredirectstext' => 'Dagitoy nga baw-ing ket napasilpo kadagiti awan nga panid:',
@@ -1634,6 +1716,7 @@ Tattan ket naka baw-ing idiay [[$2]].',
'popularpages' => 'Nasikat a pampanid',
'wantedcategories' => 'Dagiti makidkiddaw a kategoria',
'wantedpages' => 'Makidkiddaw a pampanid',
+'wantedpages-badtitle' => 'Saan a pudno a titulo idiay naikabil a resulta: $1',
'wantedfiles' => 'Dagiti makidkiddaw a papeles',
'wantedtemplates' => 'Dagiti makidkiddaw a templeta',
'mostlinked' => 'Dagiti panid a kaaduan iti nakasilpo',
@@ -1675,6 +1758,7 @@ Pangngaasi a laglagipen nga dagiti sabali nga web site ket makapanilpo ti papele
'pager-newer-n' => '{{PLURAL:$1|nabarbaro 1|dagiti nabarbaro $1}}',
'pager-older-n' => '{{PLURAL:$1|nadadaan 1|nadadaan $1}}',
'suppress' => 'Pakapansin',
+'querypage-disabled' => 'Daytoy nga naiduma a panid ket naiddep gapu dagiti rason nga panagaramid.',
# Book sources
'booksources' => 'Nagtaudan a liblibro',
@@ -1684,10 +1768,12 @@ Pangngaasi a laglagipen nga dagiti sabali nga web site ket makapanilpo ti papele
'booksources-invalid-isbn' => 'Ti naited nga ISBN ket kasla saan a napudno; kitaen dagiti biddut ti pinagkopya kadagiti nagappuanna a taudan.',
# Special:Log
-'specialloguserlabel' => 'Agar-aramat:',
-'speciallogtitlelabel' => 'Titulo:',
+'specialloguserlabel' => 'Ti nagaramid:',
+'speciallogtitlelabel' => 'Puntaan (titulo wenno agus-usar) :',
'log' => 'Dagiti listaan',
'all-logs-page' => 'Dagiti listaan nga publiko',
+'alllogstext' => 'Naipagtipon a pinagpakita kadagiti amin nga adda alistaan ti {{SITENAME}}.
+Mapabassit mo ti pinagpakita no piliam ti kita ti listaan, ti nagan ti gar-aramat (sensitibo ti kadakkel ti letra), wenno ti naapektaran a panid (ket sensitibo met ti kadakkel ti letra).',
'logempty' => 'Awan ti agpada nga bagay dita listaan.',
'log-title-wildcard' => 'Agsapul dagiti titulo nga agrugi iti daytoy a teksto',
@@ -1723,18 +1809,19 @@ Kitaen met ti [[Special:WantedCategories|dagiti makidkiddaw nga kategoria]].',
'sp-deletedcontributions-contribs' => 'dagiti naararamid',
# Special:LinkSearch
-'linksearch' => 'Dagiti ruar nga panilpo',
+'linksearch' => 'Dagiti pinagbirok ti ruar nga panilpo',
'linksearch-pat' => 'Kita ti pinagbirok:',
'linksearch-ns' => 'Namespace:',
'linksearch-ok' => 'Biroken',
-'linksearch-text' => 'Ti wildcard a kas "*.wikipedia.org" ket mabalin nga usaren.<br />
-Nasuportaran a protokol: <tt>$1</tt>',
+'linksearch-text' => 'Ti wildcard a kas "*.wikipedia.org" ket mabalin nga usaren.
+Masapul ti kangatuan a domain, a kaspagarigan "*.org".<br />
+Nasuportaran a protokol: <tt>$1</tt> (saan mo nga inayun dagitoy iti pinagbirok mo) .',
'linksearch-line' => '$1 ket nakasilpo idiay $2',
# Special:ListUsers
'listusersfrom' => 'Iparang dagiti agar-aramat mangrugi iti:',
'listusers-submit' => 'Ipakita',
-'listusers-noresult' => 'Awan nasarakan nga agar-aramat.',
+'listusers-noresult' => 'Awan ti nasarakan nga agar-aramat.',
'listusers-blocked' => '(naserraan)',
# Special:ActiveUsers
@@ -1744,7 +1831,7 @@ Nasuportaran a protokol: <tt>$1</tt>',
'activeusers-from' => 'Iparang dagiti agar-aramat mangrugi iti:',
'activeusers-hidebots' => 'Ilemmeng dagiti bots',
'activeusers-hidesysops' => 'Ilemmeng dagiti adminitrador',
-'activeusers-noresult' => 'Awan nasarakan nga agar-aramat.',
+'activeusers-noresult' => 'Awan ti nasarakan nga agar-aramat.',
# Special:Log/newusers
'newuserlogpage' => 'Listaan ti inaramid ti agar-aramat',
@@ -1783,6 +1870,10 @@ Ti e-surat nga inkabil mo idiay [[Special:Preferences|kakaykayatam]] ket agpara
'noemailtext' => 'Ti agar-aramat ket saan nga nagikabil ti agpaypayso nga e-surat address.',
'nowikiemailtitle' => 'Maiparit ti e-surat',
'nowikiemailtext' => 'Ti agar-aramat ket mabalin na ti agpili nga saan nga umawat iti e-surat kadagiti sabali nga agar-aramat.',
+'emailnotarget' => 'Awan wenno saan nga agpaypayso nga nagan ti agar-aramat ti nagipatulodan.',
+'emailtarget' => 'Ikabil ti nagan ti agar-aramat nga pangitulodam',
+'emailusername' => 'Nagan ti agar-aramat:',
+'emailusernamesubmit' => 'Ited',
'email-legend' => 'Ipatulod ti e-surat ti sabali nga {{SITENAME}} agar-aramat',
'emailfrom' => 'Naggapo ken ni:',
'emailto' => 'Para kenni:',
@@ -1807,10 +1898,10 @@ Ti e-surat nga inkabil mo idiay [[Special:Preferences|kakaykayatam]] ket agpara
'watchlistanontext' => 'Pangngaasim ti $1 tapno makitam dagiti binaliw mo dita bambantayam.',
'watchnologin' => 'Saan a nakastrek',
'watchnologintext' => 'Masapul nga [[Special:UserLogin|nakastrekka]] tapno mabaliwam dagiti bambantayam a panid.',
-'addedwatch' => 'Nainayon kadagiti bambantayan',
+'addwatch' => 'Inayon iti bambantayan',
'addedwatchtext' => "Nainayonen ti panid a \"[[:\$1]]\" iti [[Special:Watchlist|listaan ti bambantayam]].
Mailistanto ditoy dagiti pannkabalbaliw daytoy a panid iti masakbayan agraman ti kanaigna a panid-tungtongan, ket agparang ti panid a kas '''napuskol''' iti [[Special:RecentChanges|listaan ti naudi a balbaliw]] tapno nalaklaka a malasin.",
-'removedwatch' => 'Naikkaten kadagiti bambantayan',
+'removewatch' => 'Ikkaten dita bambantayan',
'removedwatchtext' => 'Daytoy nga panid "[[:$1]]" ket naikkat idiay [[Special:Watchlist|bambantayam]].',
'watch' => 'bantayan',
'watchthispage' => 'Bantayan daytoy a panid',
@@ -1831,8 +1922,9 @@ Mailistanto ditoy dagiti pannkabalbaliw daytoy a panid iti masakbayan agraman ti
'watchlist-options' => 'Dagiti pagpilian ti listaan nga bambantayan',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Bambantayan...',
-'unwatching' => 'Saanen a bantayan...',
+'watching' => 'Bambantayan...',
+'unwatching' => 'Saanen a bantayan...',
+'watcherrortext' => 'Adda nagkabiddut idi suksukatam ti kita ti bambantayam "$1".',
'enotif_mailer' => 'Agipatulod ti pakiammo ti {{SITENAME}}',
'enotif_reset' => 'Markaan amin a pampanid a kas nasarungkaranen',
@@ -1844,6 +1936,36 @@ Mailistanto ditoy dagiti pannkabalbaliw daytoy a panid iti masakbayan agraman ti
'enotif_lastvisited' => 'Kitaen ti $1 para iti am-amin a panagbaliw sipud ti naudi nga isasarungkarmo.',
'enotif_lastdiff' => 'kitaen ti $1 tapno mabuya daytoy a panangbaliw.',
'enotif_anon_editor' => 'di am-ammo nga agar-aramat $1',
+'enotif_body' => 'Nadungngo a $WATCHINGUSERNAME,
+
+
+Ti {{SITENAME}} a panid $PAGETITLE ket $CHANGEDORCREATED idi $PAGEEDITDATE ni $PAGEEDITOR, kitaen ti $PAGETITLE_URL ti agdama nga pinagbaliw.
+
+$NEWPAGE
+
+Pakabuklan ti mannurat: $PAGESUMMARY $PAGEMINOREDIT
+
+Kontaken ti mannurat:
+surat: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
+
+Awanen iti sabali pay a pagpa-ammo a maipatulod kenka no adda pay dagiti masukatan inggana laeng no bisitaem daytoy a panid.
+Mabalin met nga ipasadiwa dagiti bandera ti pagpa-ammom para amin kadagiti buybuyaem a panid idiay bambantayam.
+
+ Ti gayyem mo iti {{SITENAME}} a sistema ti pagpa-ammo
+
+--
+Ti pinagsukat ti settings ti e-surat a pagpa-ammom, bisitaem ti
+{{canonicalurl:{{#special:Preferences}}}}
+
+Ti pinagsukat ti settings ti bambantayam, bisitaem ti
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+Ti pinagikkat ti panid kadagiti bambantayam, bisitaem ti
+$UNWATCHURL
+
+Ti makunkunam ken no masapulmo pay ti tulong:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Ikkaten ti panid',
@@ -1859,7 +1981,7 @@ Mailistanto ditoy dagiti pannkabalbaliw daytoy a panid iti masakbayan agraman ti
Pangngaasim ta pasingkedam a talaga a kayatmo nga aramiden daytoy, a maawatam ti bunga ti panangikkatmo, ken aramidem daytoy kas maiyannugot iti [[{{MediaWiki:Policy-url}}|annuroten]].',
'actioncomplete' => 'Nalpasen a naaramid',
'actionfailed' => 'Napaay ti aksion',
-'deletedtext' => 'Naikkaten ti "<nowiki>$1</nowiki>".
+'deletedtext' => 'Naikkaten ti "$1".
Kitaen ti $2 para iti record dagiti naudi a naikkat.',
'deletedarticle' => 'naikkaten ti "[[$1]]"',
'dellogpage' => 'Listaan ti panagikkat',
@@ -1871,7 +1993,7 @@ Kitaen ti $2 para iti record dagiti naudi a naikkat.',
'deletereasonotherlist' => 'Sabali a rason',
'deletereason-dropdown' => '*Kadawyan a gapgapu dagiti pannakaikkat
** Kiddaw ti mannurat
-** Panaglabsing iti copyright
+** Panaglabsing iti karbengan ti kopya
** Vandalismo',
'delete-edit-reasonlist' => 'Baliwan dagiti rason ti pinaikkat',
'delete-toobig' => 'Daytoy a apanid ket dakkel ti pakasaritaan na, mabalin ket $1 {{PLURAL:a pinagbaliwan|dagiti pinagbaliwan}}.
@@ -1899,6 +2021,9 @@ naisubli manen iti naudi a version ni $2.',
# Edit tokens
'sessionfailure-title' => 'Napaay ti sesyon',
+'sessionfailure' => 'Addaan ti problema ti sesyon ti pinagserrek mo;
+daytoy nga aksion ket naibabawi a kas pagprebenta ti pinaghijack ti sesyon.
+Agsubli ka ti naggapuam a panid, ikargam ti panid ken padasem manen.',
# Protect
'protectlogpage' => 'Listaan ti panangsaluad',
@@ -1916,7 +2041,11 @@ Kitaen ti [[Special:ProtectedPages|listaan kadagiti nasaluadan a panid]] ti list
'protect_expiry_invalid' => 'Saan a mabalin ti oras a panagpaso.',
'protect_expiry_old' => 'Adda iti napalabas ti oras ti panagpaso.',
'protect-unchain-permissions' => 'Lukatan dagiti pagpilian ti saluadan',
-'protect-text' => "Mabalinmo a kitaen ken sukatan ti agpang ti saluad ditoy ti panid a '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Mabalinmo a kitaen ken sukatan ti agpang ti saluad ditoy ti panid a '''$1'''.",
+'protect-locked-blocked' => "Saan mo a mabalin a sukatan dagiti kita ti saluad no naserraan ka.
+Adda ditoy kadagiti pinnakaikabil a kita ti panid '''$1''':",
+'protect-locked-dblock' => "Ti kita ti saluad ket saan nga masukatan gapu ti agdama a serra ti database.
+Adda ditoy kadagiti pinnakaikabil a kita ti panid '''$1''':",
'protect-locked-access' => "Awanan pammalubos ti pakabilam a mangbaliw kadagiti level ti saluad ti panid.
Dagitoy dagiti agdama a settings ti panid a '''$1''':",
'protect-cascadeon' => 'Daytoy a panid ket sisasaluad iti agdama gapu ta nairaman iti sumaganad a {{PLURAL:$1|panid, nga addaan|pampanid, nga addaan}} iti sipapakat a saluadan ti amin-amin.
@@ -1943,7 +2072,7 @@ Mabalinmo a sukatan ti level ti saluad daytoy a panid, ngem saanna nga apektaran
'protect-edit-reasonlist' => 'Baliwan dagiti rason ti saluadan',
'protect-expiry-options' => '1 nga oras:1 hour,1 nga aldaw:1 day,1 a lawas:1 week,2 a lawas:2 weeks,1 a bulan:1 month,3 a bulan:3 months,6 a bulan:6 months,1 a tawen:1 year,awan inggana:infinite',
'restriction-type' => 'Pammalubos:',
-'restriction-level' => 'Level ti pannakaiparit:',
+'restriction-level' => 'Kangato wenno kababla ti pannakaiparit:',
'minimum-size' => 'Kinababa a kadakkel:',
'maximum-size' => 'Kinangato a kadakkel:',
'pagesize' => '(bytes)',
@@ -1957,7 +2086,7 @@ Mabalinmo a sukatan ti level ti saluad daytoy a panid, ngem saanna nga apektaran
# Restriction levels
'restriction-level-sysop' => 'sibubukel a nasaluadan',
'restriction-level-autoconfirmed' => 'nasaluadan bassit',
-'restriction-level-all' => 'ania man a level',
+'restriction-level-all' => 'ania man a kangato wenno kababa',
# Undelete
'undelete' => 'Kitaen dagiti naikkat a pampanid',
@@ -1967,6 +2096,8 @@ Mabalinmo a sukatan ti level ti saluad daytoy a panid, ngem saanna nga apektaran
'undeletepagetext' => 'Dagiti sumaganad {{PLURAL:a panid ket naikkaten ngem|$1 dagiti panid ket naikkaten ngem}} addaan da pay idiay a nailebbeng ken maipasubli pay.
Ti lebbeng ket mabalin a mapaminsanan a dalusan.',
'undelete-fieldset-title' => 'Ipasubli dagiti pinagbaliwan',
+'undeleteextrahelp' => "Ti pinagisubli dagiti amin a pakasaritaan ti panid, ibatim a saan nga nakur-itan dagita kahon ken ikklik ti '''''{{int:undeletebtn}}'''''.
+Ti agaramid ti napilian a pagisubli, ikur-it dagita napilim kadagiti kahon ti kayatmo nga ipasubli, ken ikklik ti '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|pinagbaliwan|dagiti pinagbaliwan}} ti nailebben',
'undeletehistory' => 'No ipasublim daytoy a panid, amin dagiti pinagbaliwan ket maipasubli idiay pakasaritaan.
Ket no adda baro a panid nga kanagnagan na a naaramid ti napalabas a pinagikkat, dagiti naipasubli a pinagbaliwan ket agparang idiay napalabas a pakasaritaan.',
@@ -2012,9 +2143,12 @@ $1',
'undelete-show-file-submit' => 'Wen',
# Namespace form on various pages
-'namespace' => 'Namespace:',
-'invert' => 'Baliktaden ti napili',
-'blanknamespace' => '(Umuna)',
+'namespace' => 'Namespace:',
+'invert' => 'Baliktaden ti napili',
+'tooltip-invert' => 'Ikur-it daytoy nga kahon ti pinagilemmeng kadagiti binaliwan a panid iti uneg ti napili nga namespace (ken ti nairaman a namespace no naikur-it)',
+'namespace_association' => 'Nairaman a namespace',
+'tooltip-namespace_association' => 'Ikur-t daytoy nga kahon ti pinagiraman ti kapatangan wenno sujeto ti namespace nga nairaman kadagiti napili a namespace.',
+'blanknamespace' => '(Umuna)',
# Contributions
'contributions' => 'Naaramidan dagiti agar-aramat',
@@ -2064,15 +2198,17 @@ Ti naudi nga listaan ti pinakaserra ket adda ti baba ta usaren nga referencia:',
'whatlinkshere-filters' => 'Dagiti sagat',
# Block/unblock
+'autoblockid' => 'Autongaserra #$1',
+'block' => 'Serraan ti agar-aramat',
+'unblock' => 'Ikkaten ti serra ti agar-aramat',
'blockip' => 'Pengdan ti agar-aramat',
'blockip-title' => 'Serraan ti agar-aramat',
'blockip-legend' => 'Serraan ti agar-aramat',
-'ipaddress' => 'IP Address:',
'ipadressorusername' => 'IP Address wenno nagan ti agar-aramat:',
'ipbexpiry' => 'Panagpaso:',
'ipbreason' => 'Rason:',
'ipbreasonotherlist' => 'Sabali nga rason',
-'ipbanononly' => 'Serraan dagiti di am-ammo nga agar-aramat laeng',
+'ipb-hardblock' => 'Iparit kadagiti nakastrek nga agar-aramat ti agpabaliw iti naggapo ditoy nga IP address',
'ipbcreateaccount' => 'Lappedan ti panagparnuay iti pakabilan',
'ipbemailban' => 'Lappedan ti agar-aramar nga agipatulod iti e-surat',
'ipbenableautoblock' => 'Automatiko ti serra ti naudi nga IP address nga inusar daytoy nga agar-aramat, ken dagiti sumaruno nga IP address nga padasen da nga agpabaliw',
@@ -2083,9 +2219,15 @@ Ti naudi nga listaan ti pinakaserra ket adda ti baba ta usaren nga referencia:',
'ipbotherreason' => 'Sabali/nayon a rason:',
'ipbhidename' => 'Ilemmeng ti nagan ti agar-aramat kadagiti listaan ken baliwan',
'ipbwatchuser' => 'Bantayan ti panid-agar-ramat ken panid-tungtongan daytoy nga agar-aramat',
+'ipb-disableusertalk' => 'No naserran da iparit daytoy nga agar-aramat ti agbaliw kadagiti kania da nga kapatangan a panid',
'ipb-change-block' => 'Serraan manen ti agar-aramat kadagitoy nga settings',
+'ipb-confirm' => 'Pasingkedan ti serra',
'badipaddress' => 'Saan a agpaypayso nga IP address',
'blockipsuccesssub' => 'Balligi ti panangserra',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ket naserraan.<br />
+Kitaen ti [[Special:BlockList|listaan ti IP nga serra ]] taa kitaen dagiti serra..',
+'ipb-blockingself' => 'Mangrugrugi ka nga ag serra kenka! Kayatmo talaga nga aramiden daytoy?',
+'ipb-confirmhideuser' => 'Mangrugrugi ka ti mangserra ti agar-aramat nga addaan ti napabalin na a "ilemmeng ti agar-aramat". Pasardengan na ti nagan daytoy nga agar-aramat dagiti amin nga listaan ken dagiti naikabkabil ti listaan. Sarudo ka kasta ti kayatmo?',
'ipb-edit-dropdown' => 'Baliwan dagiti rason ti panagserra',
'ipb-unblock-addr' => 'Lukatan ti serra ni $1',
'ipb-unblock' => 'Lukatan ti serra ti nagan agar-aramat wenno IP address',
@@ -2095,14 +2237,23 @@ Ti naudi nga listaan ti pinakaserra ket adda ti baba ta usaren nga referencia:',
'unblockiptext' => 'Usaren ti forma dita baba ti pingisubli ti pinagserrek nga agsurat ti napalubos a naserran nga IP address wenno nagan ti agar-aramat.',
'ipusubmit' => 'Ikkaten daytoy nga serra',
'unblocked' => 'Naikkat ti pannakaserra ni [[User:$1|$1]]',
+'unblocked-range' => '$1 naikkaten ti serra na',
'unblocked-id' => 'Naikkaten ti serra ti $1',
+'blocklist' => 'Dagiti naserraan nga agar-aramat',
'ipblocklist' => 'Dagiti naserraan nga agar-aramat',
'ipblocklist-legend' => 'Biroken ti napengdan nga agar-aramat',
-'ipblocklist-username' => 'Nagan-agar-aramat wenno IP address:',
+'blocklist-userblocks' => 'Ilemmeng dagiti serra ti pakabilan',
+'blocklist-tempblocks' => 'Ilemmeng dagiti temporario nga serra',
+'blocklist-addressblocks' => 'Ilemmeng maysa nga serra dagiti IP',
+'blocklist-timestamp' => 'Petsa ken oras',
+'blocklist-target' => 'Puntaan',
+'blocklist-expiry' => 'Agpaso',
+'blocklist-by' => 'Ti nagserra nga admin',
+'blocklist-params' => 'Parametro ti serra',
+'blocklist-reason' => 'Rason',
'ipblocklist-submit' => 'Biroken',
'ipblocklist-localblock' => 'Serra nga lokal',
'ipblocklist-otherblocks' => 'Sabali {{PLURAL:$1|serra|dagiti serra}}',
-'blocklistline' => 'Ni $1, $2 sinerraanna ni $3 ($4)',
'infiniteblock' => "inggana't inggana",
'expiringblock' => 'agpaso no $1 ti oras nga $2',
'anononlyblock' => 'di am-ammo laeng',
@@ -2125,6 +2276,9 @@ Ti listaan ti serra ket naikabil dita baba tapno mausar a referencia:',
Ti listaan ti napasardeng ket naikabil dita baba tapno mausar a referencia:',
'blocklogentry' => 'naserran ti [[$1]] nga addaan oras ti panagpaso a $2 $3',
'reblock-logentry' => 'sukatan ti pinakaserra ni [[$1]] nga adda ti agtapos nga oras a $2 $3',
+'blocklogtext' => 'Daytoy ket listaan ti gar-aramat kadagiti pinagseera ken pinaglukat ti serra
+Dagiti na-automatiko nga pinakaserra ti IP address ket saan nga nailista.
+Kitaen ti [[Special:BlockList|Listaan ti serra ti IP]] ti listaan kadagiti agdama a naiparit nga operasiyonal ken dagiti serra.',
'unblocklogentry' => 'lukatan ti serra ni $1',
'block-log-flags-anononly' => 'dagiti di am-ammo nga agar-aramat laeng',
'block-log-flags-nocreate' => 'naisardeng ti pinagaramid iti pakabilan',
@@ -2138,7 +2292,9 @@ Ti listaan ti napasardeng ket naikabil dita baba tapno mausar a referencia:',
'ipb_expiry_temp' => 'Ti serra ti nagan ti agar-aramat ket masapul nga permanente.',
'ipb_hide_invalid' => 'Saan nga mapasardeng daytoy nga pakabilan; adda ngata adu unay nga pinabaliwan na.',
'ipb_already_blocked' => ' "$1" ket naserraanen.',
+'ipb-needreblock' => '$1 ket nasarranen. Kayatmo nga sukatan ti serra na?',
'ipb-otherblocks-header' => 'Sabali {{PLURAL:$1|naserraan|dagiti naserraan}}',
+'unblock-hideuser' => 'Saanmo nga maisubli ti serra daytoy nga agar-aramat, nailemmengen ti nagan daytoy nga gar-aramat.',
'ipb_cant_unblock' => 'Biddut: ID $1 ti serra nga nabirokan. Baka nalukatan ti serranan.',
'ipb_blocked_as_range' => 'Ballag: Ti IP address $1 ket saan a deretso a naserraan ken saan a malukatan ti serra na.
Ngem, naserran a kas parte ti naabutan $2, nga mabalin a malukatan ti serra na.',
@@ -2177,6 +2333,7 @@ Laglagipem nga [[Special:UnlockDB|ikkaten ti balunetna]] kalpasan a malpas ti pa
'lockfilenotwritable' => 'Ti serra nga papeles ti database ket saan nga masuratan.
Ti agserra ken aglukat iti database, masapul nga masuratan ti web server.',
'databasenotlocked' => 'Saan a nabalunetan ti database.',
+'lockedbyandtime' => '(ni {{GENDER:$1|$1}} idi $2 ti oras $3)',
# Move page
'move-page' => 'Iyalis ti $1',
@@ -2294,7 +2451,7 @@ Pangngaasi ta agpili ka ti sabali a nagan.',
'allmessagesdefault' => 'Naisigud nga teksto ti mensahe',
'allmessagescurrent' => 'Agdama nga teksto ti mensahe',
'allmessagestext' => 'Daytoy ti listaan dagiti mensahe ti sistema nga addaan idiay MediaWiki namespace.
-Pangngaasi ta bisitaeen ti [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ken [http://translatewiki.net translatewiki.net] no kayatmo ti mangted
+Pangngaasi ta bisitaeen ti [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ken [//translatewiki.net translatewiki.net] no kayatmo ti mangted
kadagiti pinagpatarus ti MediaWiki.',
'allmessagesnotsupportedDB' => "Saan nga mausar daytoy nga panid ngamin ta ti '''\$wgUseDatabaseMessages''' ket naideppen.",
'allmessages-filter-legend' => 'Sagat',
@@ -2460,23 +2617,17 @@ Daytoy ngata ket gapu ti panilpo a naiparit ti akin ruar a site.',
'spam_blanking' => 'Dagiti amin nga revision ket adda panilpo na idiay $1, ipina-blanko',
# Info page
-'infosubtitle' => 'Informasion para iti panid',
-'numedits' => 'Bilang ti panangbaliw (panid): $1',
-'numtalkedits' => 'Bilang ti edits (panid ti diskusion): $1',
-'numwatchers' => 'Bilang dagiti agbambantay: $1',
-
-# Math options
-'mw_math_png' => 'Kanayon a pagbalinen a PNG',
-'mw_math_source' => 'Ibati lattan a kas TeX (para kadagiti text browsers)',
-
-# Math errors
-'math_failure' => 'Napaay nga ag-parse',
-'math_unknown_error' => 'di ammo a biddut',
-'math_unknown_function' => 'di ammo a function',
-'math_lexing_error' => 'lexing error',
-'math_syntax_error' => 'biddut iti syntax',
-'math_image_error' => 'Napaay ti PNG conversion;
-itsek ti husto a panangikapet iti latex, dvips, gs, samo i-convert',
+'pageinfo-title' => 'Informasion para iti "$1"',
+'pageinfo-header-edits' => 'Dagiti baliwan',
+'pageinfo-header-watchlist' => 'Listaan ti bambantayan',
+'pageinfo-header-views' => 'Dagiti pangkitaan',
+'pageinfo-subjectpage' => 'Panid',
+'pageinfo-talkpage' => 'Makipatang nga panid',
+'pageinfo-watchers' => 'Bilang dagiti agbuybuya',
+'pageinfo-edits' => 'Bilang dagiti binalbaliwan:',
+'pageinfo-authors' => 'Ti bilang dagiti sabsabali nga mannurat',
+'pageinfo-views' => 'Bilang dagiti pinagkita',
+'pageinfo-viewsperedit' => 'Mano nga pagkita ti maysa nga baliwan',
# Patrolling
'markaspatrolleddiff' => 'Markaan a kas napatruliaan',
@@ -2519,10 +2670,11 @@ No usarem ket, baka makompromiso ti sistema.",
'widthheightpage' => '$1×$2, $3 a {{PLURAL:$3|panid|pampanid}}',
'file-info' => 'kadakkel ti papeles: $1, MIME type: $2',
'file-info-size' => '$1 × $2 dagiti pixel, kadakkel ti papeles: $3, kita ti MIME: $4',
+'file-info-size-pages' => '$1 × $2 pixels, kadakkel ti papeles: $3, kita ti MIME: $4, $5 {{PLURAL:$5|panid|pampanid}}',
'file-nohires' => '<small>Awan mabalin a nangatngato a resolusion.</small>',
'svg-long-desc' => 'SVG a papeles, babassit ngem $1 × $2 pixels, kadakkel ti papeles: $3',
'show-big-image' => 'Sibubukel a resolusyon',
-'show-big-image-thumb' => '<small>Rukod daytoy a preview: $1 × $2 a pixels</small>',
+'show-big-image-size' => '$1 × $2 pixels',
'file-info-gif-looped' => 'nasiluan',
'file-info-gif-frames' => '$1 {{PLURAL:$1|kuadro| dagiti kuadro}}',
'file-info-png-looped' => 'nasiluan',
@@ -2554,15 +2706,21 @@ Ania man a sumarsaruno a panpanilpo iti isu met la a linia ket maikonsidera kas
No ti papeles ket saan a nabalbaliwan manipud iti kasisigudna a kasasaad, sumagmamano a detalye ket mabalin a saan a sibubukel a mangipakita iti nabaliwan a papeles.',
'metadata-expand' => 'Ipakita dagiti naipaadu a detalye',
'metadata-collapse' => 'Ilemmeng dagiti naipaadu a detalye',
-'metadata-fields' => 'Dagiti EXIF metadata fields a nakalista iti daytoy a mensahe ket mairaman iti maipakita a panid ti imahen no ti metadata table ket maipadakkel.
-ODagiti dadduma ket sigud a nakalemmeng.
+'metadata-fields' => 'Dagiti metadata field a nakalista iti daytoy a mensahe ket mairaman iti maipakita a panid ti imahen no ti metadata table ket maipabassit.
+Dagiti dadduma ket mailemmeng a kinasigud.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Kaakaba',
@@ -2577,12 +2735,10 @@ ODagiti dadduma ket sigud a nakalemmeng.
'exif-ycbcrpositioning' => 'Y ken C positioning',
'exif-xresolution' => 'Horizontal resolution',
'exif-yresolution' => 'Vertical resolution',
-'exif-resolutionunit' => 'Unit ti X ken Y resolution',
'exif-stripoffsets' => 'Image data location',
'exif-stripbytecounts' => 'Bytes per compressed strip',
'exif-jpeginterchangeformat' => 'Offset to JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytes ti JPEG data',
-'exif-transferfunction' => 'Transfer function',
'exif-whitepoint' => 'White point chromaticity',
'exif-primarychromaticities' => 'Chromaticities dagiti primarities',
'exif-datetime' => 'Pinagsukat ti papeles ti petsa ken oras',
@@ -2598,7 +2754,6 @@ ODagiti dadduma ket sigud a nakalemmeng.
'exif-componentsconfiguration' => 'Ti kayat a satwen ti agmamaysa a nagnagyan',
'exif-pixelydimension' => 'Kaaba ti imahen',
'exif-pixelxdimension' => 'Katayag ti imahen',
-'exif-makernote' => 'Manufacturer notes',
'exif-usercomment' => 'Dagiti komento ti agar-aramat',
'exif-relatedsoundfile' => 'Mainaig nga nangnangeg a papeles',
'exif-datetimeoriginal' => 'Petsa ken oras ti pinakaaramid ti data',
@@ -2612,7 +2767,6 @@ ODagiti dadduma ket sigud a nakalemmeng.
'exif-exposureprogram' => 'Exposure Program',
'exif-spectralsensitivity' => 'Spectral sensitivity',
'exif-isospeedratings' => 'ISO speed rating',
-'exif-oecf' => 'Optoelectronic conversion factor',
'exif-shutterspeedvalue' => 'APEX Shutter speed',
'exif-aperturevalue' => 'Apex aperture',
'exif-brightnessvalue' => 'APEX brightness',
@@ -2625,7 +2779,6 @@ ODagiti dadduma ket sigud a nakalemmeng.
'exif-focallength' => 'Lens focal length',
'exif-subjectarea' => 'Subject area',
'exif-flashenergy' => 'Flash energy',
-'exif-spatialfrequencyresponse' => 'Spatial frequency response',
'exif-focalplanexresolution' => 'Focal plane X resolution',
'exif-focalplaneyresolution' => 'Focal plane Y resolution',
'exif-focalplaneresolutionunit' => 'Focal plane resolution unit',
@@ -2634,7 +2787,6 @@ ODagiti dadduma ket sigud a nakalemmeng.
'exif-sensingmethod' => 'Sensing method',
'exif-filesource' => 'Nagtaudan ti papeles',
'exif-scenetype' => 'Scene type',
-'exif-cfapattern' => 'CFA pattern',
'exif-customrendered' => 'Custom image processing',
'exif-exposuremode' => 'Exposure mode',
'exif-whitebalance' => 'White Balance',
@@ -2661,22 +2813,67 @@ ODagiti dadduma ket sigud a nakalemmeng.
'exif-gpsdop' => 'Measurement precision',
'exif-gpsspeedref' => 'Speed unit',
'exif-gpsspeed' => 'Kapaspas ti GPS receiver',
+'exif-gpstrackref' => 'Referencia iti direksiyon ti pinagunay',
'exif-gpstrack' => 'Direksiyon ti kuti',
+'exif-gpsimgdirectionref' => 'Referencia iti direksiyon ti imahen',
'exif-gpsimgdirection' => 'Direksiyon ti imahen',
'exif-gpsmapdatum' => 'Naaramat a geodetic survey data',
'exif-gpsdestlatitude' => 'Latitude destination',
'exif-gpsdestlongitude' => 'Longitude ti destination',
'exif-gpsdestbearing' => 'Bearing ti destination',
+'exif-gpsdestdistanceref' => 'Referencia ti kaadayo ti papanan',
'exif-gpsdestdistance' => 'Kaadayo iti papanan na',
'exif-gpsprocessingmethod' => 'Nagan ti GPS processing method',
'exif-gpsareainformation' => 'Nagan ti GPS area',
'exif-gpsdatestamp' => 'Petsa ti GPS',
'exif-gpsdifferential' => 'GPS differential correction',
+'exif-jpegfilecomment' => 'Komento ti JPEG a papeles',
+'exif-worldregioncreated' => 'Ti parte ti lubong nga nakaalaan ti litrato',
+'exif-countrycreated' => 'Ti pagilian nga nakaalaan ti litrato',
+'exif-countrycodecreated' => 'Kodigo ti pagilian nga nakaalaan ti litrato',
+'exif-provinceorstatecreated' => 'Probinsiya wenno estado nga nakaalaan ti litrato',
+'exif-citycreated' => 'Ti ciudad nga nakaalaan ti litrato',
+'exif-worldregiondest' => 'Parte ti lubong a naipakita',
+'exif-countrydest' => 'Naipakita nga pagilian',
+'exif-countrycodedest' => 'Kodigo ti pagilian a naipakita',
+'exif-provinceorstatedest' => 'Probinsiya wenno estado a naipakita',
+'exif-citydest' => 'Naipakita nga ciudad',
'exif-objectname' => 'Pandek a titulo',
+'exif-specialinstructions' => 'Naiduma nga instruksiyon',
+'exif-headline' => 'Paulo',
+'exif-credit' => 'Pammadayaw/Nangted',
+'exif-source' => 'Taudan',
+'exif-locationdest' => 'Lugar a naibaga',
+'exif-locationdestcode' => 'Kodigo ti lugar a naibaga',
+'exif-writer' => 'Mannurat',
+'exif-languagecode' => 'Pagsasao',
+'exif-iimversion' => 'Version ti IIM',
+'exif-iimcategory' => 'Kategoria',
+'exif-iimsupplementalcategory' => 'Dagiti sabali pay a kategoria',
+'exif-datetimeexpires' => 'Saan nga usaren ti kallabes nga',
+'exif-datetimereleased' => 'Nakairuar idi',
+'exif-cameraownername' => 'Akinkukua ti kamera',
+'exif-copyrighted' => 'Kasasaad ti karbengan-panagipablaak',
+'exif-copyrightowner' => 'Akinkukua ti kaberngan ti kopya',
+'exif-licenseurl' => 'URL iti ti karbengan ti kopya a lisensia',
+'exif-attributionurl' => 'No usaren manen daytoy nga obra, pangngaasi ta isilpo idiay',
+'exif-preferredattributionname' => 'No usaren manen daytoy nga obra, pangngaasi ta padayawen ni',
+'exif-pngfilecomment' => 'Komento ti PNG a papeles',
+'exif-contentwarning' => 'Ballaag ti nagyan',
+'exif-giffilecomment' => 'Komento ti GIF a papeles',
+'exif-subjectnewscode' => 'Kodigo ti sujeto',
+'exif-event' => 'Paspasamak a naibaga',
+'exif-organisationinimage' => 'Kaurnusan a naibaga',
+'exif-personinimage' => 'Ti tao a naibaga',
+'exif-originalimageheight' => 'Kangato ti imahen sakbay nga naputed',
+'exif-originalimagewidth' => 'Kalawa ti imahen sakbay nga naputed',
# EXIF attributes
'exif-compression-1' => 'Uncompressed',
+'exif-copyrighted-true' => 'Nakarbengan a kopya',
+'exif-copyrighted-false' => 'Daga ti publiko',
+
'exif-unknowndate' => 'Di ammo a petsa',
'exif-orientation-1' => 'Normal',
@@ -2693,7 +2890,7 @@ ODagiti dadduma ket sigud a nakalemmeng.
'exif-componentsconfiguration-0' => 'awan',
-'exif-exposureprogram-0' => 'Saan a defined',
+'exif-exposureprogram-0' => 'Saan a naipalpalawag',
'exif-exposureprogram-1' => 'Manual',
'exif-exposureprogram-2' => 'Normal a programa',
'exif-exposureprogram-3' => 'Aperture priority',
@@ -2730,7 +2927,7 @@ ODagiti dadduma ket sigud a nakalemmeng.
'exif-focalplaneresolutionunit-2' => 'pulgada',
-'exif-sensingmethod-1' => 'Undefined',
+'exif-sensingmethod-1' => 'Saan a naipalpalawag',
'exif-sensingmethod-2' => 'One-chip color area sensor',
'exif-sensingmethod-3' => 'Two-chip color area sensor',
'exif-sensingmethod-4' => 'Three-chip color area sensor',
@@ -2770,7 +2967,7 @@ ODagiti dadduma ket sigud a nakalemmeng.
'exif-saturation-2' => 'Nangato a saturation',
'exif-sharpness-0' => 'Normal',
-'exif-sharpness-1' => 'Nalutneng',
+'exif-sharpness-1' => 'Nalamuyot',
'exif-sharpness-2' => 'Natangken',
'exif-subjectdistancerange-0' => 'Di ammo',
@@ -2786,6 +2983,10 @@ ODagiti dadduma ket sigud a nakalemmeng.
'exif-gpslongitude-e' => 'Daya a longitude',
'exif-gpslongitude-w' => 'Abagatan a longitude',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metro|metro}} nga nangatngato ngem ti baybay',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metro|metro}} nga nababbaba ngem ti baybay',
+
'exif-gpsstatus-a' => 'Measurement in progress',
'exif-gpsstatus-v' => 'Measurement interoperability',
@@ -2797,21 +2998,53 @@ ODagiti dadduma ket sigud a nakalemmeng.
'exif-gpsspeed-m' => 'Milia kada oras',
'exif-gpsspeed-n' => 'Knots',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometro',
+'exif-gpsdestdistance-m' => 'Milia',
+
+'exif-gpsdop-poor' => 'Napanglaw ($1)',
+
+'exif-objectcycle-a' => 'Agsapa laeng',
+'exif-objectcycle-p' => 'Rabii laeng',
+'exif-objectcycle-b' => 'Agsapa ken rabii',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Agpayso a direksiyon',
-'exif-gpsdirection-m' => 'Magnetic direction',
+'exif-gpsdirection-m' => 'Magnetiko a direksiyon',
+
+'exif-ycbcrpositioning-1' => 'Ipatingnga',
+
+'exif-dc-contributor' => 'Dagiti nakaaramid',
+'exif-dc-date' => 'Petsa (dagiti petsa)',
+'exif-dc-publisher' => 'Nangipablaak',
+'exif-dc-rights' => 'Dagiti Kaberngan',
+'exif-dc-source' => 'Taudan ti media',
+'exif-dc-type' => 'Kita ti media',
+
+'exif-rating-rejected' => 'Saan nga naawat',
+
+'exif-isospeedratings-overflow' => 'Dakdakkel ngem 65535',
+
+'exif-iimcategory-edu' => 'Edukasyon',
+'exif-iimcategory-hth' => 'Salun-at',
+'exif-iimcategory-lab' => 'Trabaho',
+'exif-iimcategory-pol' => 'Dagiti politiko',
+'exif-iimcategory-rel' => 'Relihion ken pammati',
+'exif-iimcategory-spo' => 'Ay-ayam',
+'exif-iimcategory-wea' => 'Panawen',
+
+'exif-urgency-low' => 'Nababa ($1)',
+'exif-urgency-high' => 'Nangato ($1)',
# External editor support
'edit-externally' => 'Baliwan daytoy a papeles babaen ti akinruar nga aplikasion',
-'edit-externally-help' => '(Kitaen ti [http://www.mediawiki.org/wiki/Manual:External_editors instruksion iti panangikabil] para iti ad-adu pay nga informasion).',
+'edit-externally-help' => '(Kitaen ti [//www.mediawiki.org/wiki/Manual:External_editors instruksion iti panangikabil] para iti ad-adu pay nga informasion).',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'amin',
-'imagelistall' => 'amin',
-'watchlistall2' => 'am-amin',
-'namespacesall' => 'amin',
-'monthsall' => 'am-amin',
-'limitall' => 'amin',
+'watchlistall2' => 'am-amin',
+'namespacesall' => 'amin',
+'monthsall' => 'am-amin',
+'limitall' => 'amin',
# E-mail address confirmation
'confirmemail' => 'Pasingkedan ti e-surat address',
@@ -2896,17 +3129,24 @@ $1',
'trackbackdeleteok' => 'Sibaballigi a naikkat ti trackback.',
# Delete conflict
-'deletedwhileediting' => "'''Warning''': Naikkaten daytoy a panid kalpasan a rinugiam nga agbaliw!",
-'confirmrecreate' => "Ti ([[User talk:$1|patungtungan]]) ti agar-aramat [[User:$1|$1]] ket inikkat na daytoy a panid idi kalkalpas mo nga magirugi ti agpabaliwan nga adda rason:
+'deletedwhileediting' => "'''Warning''': Naikkaten daytoy a panid kalpasan a rinugiam nga agbaliw!",
+'confirmrecreate' => "Ti ([[User talk:$1|patungtungan]]) ti agar-aramat [[User:$1|$1]] ket inikkat na daytoy a panid idi kalkalpas mo nga magirugi ti agpabaliwan nga adda rason:
: ''$2''
Pangngaasi ta pasingkedam nga kayatmo a aramiden manen daytoy a panid.",
-'recreate' => 'Partuaten manen',
+'confirmrecreate-noreason' => 'Ti ([[User talk:$1|patungtungan]]) ti agar-aramat [[User:$1|$1]] ket inikkat na daytoy a panid idi kalkalpas mo nga magirugi ti agpabaliwan. Pangngaasi ta pasingkedam nga kayatmo a aramiden manen daytoy a panid.',
+'recreate' => 'Partuaten manen',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Dalusan ti cache daytoy a panid?',
'confirm-purge-bottom' => 'Ti pinagpasadiwa ti panid ket ipalabas na ti cache ken pursaran na dagiti agdama nga pinagbaliwan ti agparang.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Inayon daytoy a panid kadagiti bambantayam',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Ikkatem daytoy nga panid ti bambantayam',
+
# Multipage image navigation
'imgmultipageprev' => '↠napalabas nga panid',
'imgmultipagenext' => 'sumaruno nga panid →',
@@ -2942,19 +3182,26 @@ Pangngaasi ta pasingkedam nga kayatmo a aramiden manen daytoy a panid.",
'lag-warn-high' => 'Gapu ti kinabuntog ti database server, dagiti nasukatan a barbaro ngem $1 {{PLURAL:$1|segundo|segundo}} ket mabalin nga saan nga agparang ditoy nga listaan.',
# Watchlist editor
-'watchlistedit-numitems' => 'Addaan ti listaan ti bambantayam iti {{PLURAL:$1|1 titulo|$1 dagiti titulo}}, di mairaman dagiti patungtungan a panid.',
-'watchlistedit-noitems' => 'Awan linaonna dagiti titulo ti listaan ti bambantayam.',
-'watchlistedit-normal-title' => 'Baliwan ti listaan ti bambantayan',
-'watchlistedit-normal-legend' => 'Ikkaten dagiti titulo iti listaan ti bambantayam',
-'watchlistedit-normal-submit' => 'Ikkaten dagiti titulo',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1 ti titulo nga|$1 dagiti titulo nga}} naikkat iti listaan ti bambantayam:',
-'watchlistedit-raw-title' => 'Baliwan ti kilaw a bambantayan',
-'watchlistedit-raw-legend' => 'Baliwan ti kilaw a bambantayan',
-'watchlistedit-raw-titles' => 'Dagiti titulo:',
-'watchlistedit-raw-submit' => 'Pabaruen ti listaan ti bambantayan',
-'watchlistedit-raw-done' => 'Napabaro ti listaan ti bambantayam.',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 ti titulo nga|$1 dagiti titulo nga}} nainayon:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 ti titulo nga|$1 dagiti titulo nga}} naikkat:',
+'watchlistedit-numitems' => 'Addaan ti listaan ti bambantayam iti {{PLURAL:$1|1 titulo|$1 dagiti titulo}}, di mairaman dagiti patungtungan a panid.',
+'watchlistedit-noitems' => 'Awan linaonna dagiti titulo ti listaan ti bambantayam.',
+'watchlistedit-normal-title' => 'Baliwan ti listaan ti bambantayan',
+'watchlistedit-normal-legend' => 'Ikkaten dagiti titulo iti listaan ti bambantayam',
+'watchlistedit-normal-explain' => 'Dagiti titulo ti bambantayam ket naipakita dita baba.
+Ti mangikkat ti titulo, ikur-it ti kaasideg na a kahon, ken ikklik ti "{{int:Watchlistedit-normal-submit}}".
+Mabalin mo met a [[Special:EditWatchlist/raw|baliwan ti listaan nga kilaw]].',
+'watchlistedit-normal-submit' => 'Ikkaten dagiti titulo',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1 ti titulo nga|$1 dagiti titulo nga}} naikkat iti listaan ti bambantayam:',
+'watchlistedit-raw-title' => 'Baliwan ti kilaw a bambantayan',
+'watchlistedit-raw-legend' => 'Baliwan ti kilaw a bambantayan',
+'watchlistedit-raw-explain' => 'Dagiti titulo ti bambantayam ket naipakita dita baba, ken mabaliwam no nayunam, ken ikkaten idiay listaan;
+maysa a titulo kada linia.
+No malpas ka, ikklik ti "{{int:Watchlistedit-raw-submit}}".
+Mabalin mo met a [[Special:EditWatchlist|usaren ti dati a pinagbaliw]].',
+'watchlistedit-raw-titles' => 'Dagiti titulo:',
+'watchlistedit-raw-submit' => 'Pabaruen ti listaan ti bambantayan',
+'watchlistedit-raw-done' => 'Napabaro ti listaan ti bambantayam.',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1 ti titulo nga|$1 dagiti titulo nga}} nainayon:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 ti titulo nga|$1 dagiti titulo nga}} naikkat:',
# Watchlist editing tools
'watchlisttools-view' => 'Kitaen dagiti napapateg a panangbalbaliw',
@@ -2966,28 +3213,28 @@ Pangngaasi ta pasingkedam nga kayatmo a aramiden manen daytoy a panid.",
'duplicate-defaultsort' => '\'\'\'Ballag:\'\'\' Kinasigud nga pinagilasin ti "$2" ket sukatan na ti immuna nga kinasigud nga pinagilasin "$1".',
# Special:Version
-'version' => 'Version',
-'version-extensions' => 'Dagiti naikabil a pagpaatiddog',
-'version-specialpages' => 'Naiduma a pampanid',
-'version-parserhooks' => 'Parser nga kawit',
-'version-variables' => 'Variables',
-'version-skins' => 'Dagiti Kudil',
-'version-other' => 'Sabali',
-'version-mediahandlers' => 'Media handlers',
-'version-hooks' => 'Kawit',
-'version-extension-functions' => 'Extension functions',
-'version-parser-extensiontags' => 'Parser extension tags',
-'version-parser-function-hooks' => 'Parser function nga kawit',
-'version-skin-extension-functions' => 'Extension functions ti kudil',
-'version-hook-name' => 'Nagan ti kawit',
-'version-hook-subscribedby' => 'Sinubskriber ni',
-'version-version' => '(Version $1)',
-'version-license' => 'Lisensia',
-'version-poweredby-credits' => "Daytoy nga wiki ket pinaandar ti '''[http://www.mediawiki.org/ MediaWiki]''', karbengan a kopya © 2001-$1 $2.",
-'version-poweredby-others' => 'dadduma pay',
-'version-software' => 'Naikabil a software',
-'version-software-product' => 'Produkto',
-'version-software-version' => 'Version',
+'version' => 'Version',
+'version-extensions' => 'Dagiti naikabil a pagpaatiddog',
+'version-specialpages' => 'Naiduma a pampanid',
+'version-parserhooks' => 'Parser nga kawit',
+'version-variables' => 'Variables',
+'version-antispam' => 'Pinagpasardeng ti spam',
+'version-skins' => 'Dagiti Kudil',
+'version-other' => 'Sabali',
+'version-mediahandlers' => 'Media handlers',
+'version-hooks' => 'Kawit',
+'version-extension-functions' => 'Extension functions',
+'version-parser-extensiontags' => 'Parser extension tags',
+'version-parser-function-hooks' => 'Parser function nga kawit',
+'version-hook-name' => 'Nagan ti kawit',
+'version-hook-subscribedby' => 'Sinubskriber ni',
+'version-version' => '(Version $1)',
+'version-license' => 'Lisensia',
+'version-poweredby-credits' => "Daytoy nga wiki ket pinaandar ti '''[//www.mediawiki.org/ MediaWiki]''', karbengan a kopya © 2001-$1 $2.",
+'version-poweredby-others' => 'dadduma pay',
+'version-software' => 'Naikabil a software',
+'version-software-product' => 'Produkto',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath' => 'Dalanan ti papeles',
@@ -2997,13 +3244,15 @@ Pangngaasi ta pasingkedam nga kayatmo a aramiden manen daytoy a panid.",
Dagiti imahen ket agparang iti kadakkelan a resolusyon, dagiti sabali a kita ti papeles ket mangrugi da a idiay nakairamanan da a programa.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Agbirok kadagiti duplikado a papeles',
-'fileduplicatesearch-legend' => 'Agsapul iti duplikado',
-'fileduplicatesearch-filename' => 'Nagan ti papeles:',
-'fileduplicatesearch-submit' => 'Biroken',
-'fileduplicatesearch-info' => '$1 × $2 pixel<br />Rukod ti papeles: $3<br />Kita ti MIME: $4',
-'fileduplicatesearch-result-1' => 'Awanan iti kapadpada na a duplikado ti papeles a "$1".',
-'fileduplicatesearch-result-n' => 'Ti papeles a "$1" ket addaan {{PLURAL:$2|1 nga agpadpada a duplikado|$2 dagiti agpadpada a duplikado}}.',
+'fileduplicatesearch' => 'Agbirok kadagiti duplikado a papeles',
+'fileduplicatesearch-summary' => 'Agbirok kadagiti duplikado a file nga naibasta kadagiti "hash" a kuwento.',
+'fileduplicatesearch-legend' => 'Agsapul iti duplikado',
+'fileduplicatesearch-filename' => 'Nagan ti papeles:',
+'fileduplicatesearch-submit' => 'Biroken',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />Rukod ti papeles: $3<br />Kita ti MIME: $4',
+'fileduplicatesearch-result-1' => 'Awanan iti kapadpada na a duplikado ti papeles a "$1".',
+'fileduplicatesearch-result-n' => 'Ti papeles a "$1" ket addaan {{PLURAL:$2|1 nga agpadpada a duplikado|$2 dagiti agpadpada a duplikado}}.',
+'fileduplicatesearch-noresults' => 'Awan ti nagan ti papeles a "$1" ti nabirokan.',
# Special:SpecialPages
'specialpages' => 'Naiduma a pampanid',
diff --git a/languages/messages/MessagesInh.php b/languages/messages/MessagesInh.php
index c3058bbc..0bfea492 100644
--- a/languages/messages/MessagesInh.php
+++ b/languages/messages/MessagesInh.php
@@ -45,8 +45,8 @@ $messages = array(
'tog-enotifrevealaddr' => 'ЗӀы хоамаш тӀа Ñа фоштмоттиг хьахьокха',
'tog-shownumberswatching' => 'Ший теркама дагарченгахь оагӀув чулаьца бола дакъалаьцархой таьрах хьахьокха',
'tog-fancysig' => 'Ший кулга Ñздара вики-хоамбаккхам (ший лоӀаме Ӏинка йоацаш)',
-'tog-externaleditor' => 'Ðрена гӀалатнийÑдарца болх бе (ший болх ховш болачара мара мегаш дац, хьамлоархара ший-тайпара оттам Ñша; [http://www.mediawiki.org/wiki/Manual:External_editors хьажа Ñша])',
-'tog-externaldiff' => 'Ðрена бӀаÑакхоÑÑа болхоагӀувца болх бе (ший болх ховш болачара мара мегаш дац, хьамлоархара ший-тайпара оттам Ñша; [http://www.mediawiki.org/wiki/Manual:External_editors хьажа Ñша])',
+'tog-externaleditor' => 'Ðрена гӀалатнийÑдарца болх бе (ший болх ховш болачара мара мегаш дац, хьамлоархара ший-тайпара оттам Ñша; [//www.mediawiki.org/wiki/Manual:External_editors хьажа Ñша])',
+'tog-externaldiff' => 'Ðрена бӀаÑакхоÑÑа болхоагӀувца болх бе (ший болх ховш болачара мара мегаш дац, хьамлоархара ший-тайпара оттам Ñша; [//www.mediawiki.org/wiki/Manual:External_editors хьажа Ñша])',
'tog-showjumplinks' => '"Дехьадала" Ñха новкъоÑтала Ӏинк хьахьокха',
'tog-uselivepreview' => 'Сиха бӀарахьажар (JavaScript) (ЭкÑпериментально)',
'tog-forceeditsummary' => 'Хоам бе, хувцамий лоацам белгал даь деци',
@@ -132,6 +132,7 @@ $messages = array(
'category-file-count-limited' => 'Укх цатегчоахь {{PLURAL:$1|$1 паьл|$1 паьлаш}}.',
'listingcontinuesabbrev' => 'дӀахо',
'noindex-category' => 'Моттигза оагӀувнаш',
+'broken-file-category' => 'Болхбеш йоаца паьла Ӏинкашца оагӀувнаш',
'about' => 'Лоацам',
'article' => 'Йоазув',
@@ -183,10 +184,10 @@ $messages = array(
'history' => 'иÑкар',
'history_short' => 'ИÑкар',
'updatedmarker' => 'Со ханача денца хувцамаш хиннaй',
-'info_short' => 'Лоаца маIандар',
'printableversion' => 'Каьхати зарба бӀаÑа',
'permalink' => 'Даим латта Ӏинк',
'print' => 'Каьхат арадаккха',
+'view' => 'БӀаргтаÑÑар',
'edit' => 'Хувца',
'create' => 'Хьаде',
'editthispage' => 'Ер оагӀув хувца',
@@ -194,6 +195,7 @@ $messages = array(
'delete' => 'ДӀадаккха',
'deletethispage' => 'Ер оагӀув дӀаÑккха',
'undelete_short' => 'Меттаоттае {{PLURAL:$1|хувцам|$1 хувцамаш}}',
+'viewdeleted_short' => 'БӀаргтаÑÑа {{PLURAL:$1|дӀадаьккха хувцам тӀа|$1 дӀадаьккха хувцамаш тӀа}}',
'protect' => 'Лораде',
'protect_change' => 'хувца',
'protectthispage' => 'Лорае ер оагӀув',
@@ -271,6 +273,8 @@ $messages = array(
'toc' => 'Чулоацам',
'showtoc' => 'хьахокха',
'hidetoc' => 'къайладаккха',
+'collapsible-collapse' => 'чудерзаде',
+'collapsible-expand' => 'хьадоаржаде',
'thisisdeleted' => '$1 бӀаргтаÑÑа е юхаметтаоттаде?',
'viewdeleted' => '$1 бӀаргтаÑÑа?',
'restorelink' => '{{PLURAL:$1|дӀаÑккха хувцам|$1 дӀаÑккха хувцамаш}}',
@@ -331,18 +335,23 @@ $messages = array(
'createaccount' => 'Керда дакъалаьцархо кхолла',
'gotaccount' => "Укхаза дӀаÑзабенна дий шо? '''$1'''.",
'gotaccountlink' => 'Чувала/Ñла',
+'userlogin-resetlink' => 'Чувала/Ñла цӀеи доагӀеи дийцаденнадий?',
'createaccountmail' => 'Д-фоштаца',
'createaccountreason' => 'Бахьан:',
'mailmypassword' => 'Керда къайладоагӀа хьаÑца',
'loginlanguagelabel' => 'Мотт: $1',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Къаьна къайладоагӀ:',
'newpassword' => 'Керда къайладоагӀ:',
'retypenew' => 'Керда къайладоагӀа юха ӀоÑзаде:',
'resetpass-submit-loggedin' => 'КъайладогӀа дӀахувца',
'resetpass-submit-cancel' => 'Юхавал/Ñлa',
+# Special:PasswordReset
+'passwordreset-username' => 'Дакъалаьцархочунна цӀи:',
+'passwordreset-email' => 'Д-фошта моттиг:',
+
# Edit page toolbar
'bold_sample' => 'Сома Ñздам',
'bold_tip' => 'Сома Ñздам',
@@ -576,6 +585,8 @@ $messages = array(
'gender-male' => 'МаIа',
'gender-female' => 'Кхал',
'email' => 'Д-фошт',
+'prefs-help-email' => 'Д-фоштий моттиг ала Ñшаш дац, амма новка даца, наггах Ñанна къайладоагIа шоан дийцалой, цу Ñ‚Iа хьатIадайтаргда.',
+'prefs-help-email-others' => 'Кхыбола дакъалаьцархоша шоаца бувзам Ñ Ð¹Ð¸Ð¹ÑˆÑ…ÑƒÑ€Ð³ÑŒÑ ÑˆÑƒÐ½ оагIува Ñ‚Iа гIолла, д-фошт хьаела ца езаш.',
'prefs-signature' => 'КулгÑздар',
# User rights
@@ -779,10 +790,8 @@ $messages = array(
'watchlist' => 'Теркама дагарче',
'mywatchlist' => 'Теркама дагарче',
'watchlistfor2' => '$1 $2 царна',
-'addedwatch' => 'Теркама оагIув Ñ‚Iа дIатIаÑккха Ñ',
'addedwatchtext' => '"[[:$1]]" оагIув, шун [[Special:Watchlist|теркама дагаршкахь]] чуÑккха Ñ.
Техьара мел йола укх оагIувни хувцамаш цу дагаршкахь хоам беш хургьÑ. Вешта [[Special:RecentChanges|керда хувцама дагаршкаехь]] Ñома къоалмаца хьакъоаÑтлуш хургьÑ.',
-'removedwatch' => 'Теркама дагарчера дIаÑккха Ñ',
'removedwatchtext' => '"[[:$1]]" оагIув, шун [[Special:Watchlist|теркама дарагчера]] дIаÑккха хиннай.',
'watch' => 'Тохкам бе',
'watchthispage' => 'Укх оагIува теркам бе',
@@ -801,7 +810,7 @@ $messages = array(
Дехар да, жоп дала, шоай из бокъонцахь де безам болаш да, шоай даьчоахь хургдолчоахь кхеташ долга, [[{{MediaWiki:Policy-url}}]] декъамачу IоÑзадаь дола адаташ ца из деш долга.',
'actioncomplete' => 'Дулархам баьб',
'actionfailed' => 'Оттам даьдац',
-'deletedtext' => '"<nowiki>$1</nowiki>" дIаÑккха хиннай.
+'deletedtext' => '"$1" дIаÑккха хиннай.
ТIехьара дIадаьккха дагарчена хьожаргволаш/хьожаргьйолаш, $2 хьажа.',
'deletedarticle' => ' "[[$1]]" дIадаьккхад',
'dellogpage' => 'ДIадаккхара тептар',
@@ -820,7 +829,7 @@ $messages = array(
'protectexpiry' => 'Кхоачалуш латта:',
'protect_expiry_invalid' => 'Чаккхабоала лорама харца ха',
'protect_expiry_old' => 'Чаккхайоала ха - Ñха зама Ñ.',
-'protect-text' => "'''<nowiki>$1</nowiki>''' укхаз шоана шоай оагIув лорамлагIа хувца a бIаргтаÑÑа a йийш хургьÑ.",
+'protect-text' => "'''$1''' укхаз шоана шоай оагIув лорамлагIа хувца a бIаргтаÑÑа a йийш хургьÑ.",
'protect-locked-access' => "Шун лархама йоазуви нидза кхоачаш бац оагIувни лорама лагIа хувца. '''$1''' оагIувни дIаоттамаш:",
'protect-cascadeon' => '{{PLURAL:$1|КIалхахь хьагойташ йола оагIувчу|КIалхахь хьагойташ йола оагIувнашчу}} ер оагIув чуÑккха халарахь, лорам IÐ¾Ñ‚Ñ‚Ð°Ñ Ñ, хурхала лорам IÐ¾Ñ‚Ñ‚Ð°Ñ Ñ. Укх оагIувни лорама лагIа хувца йийш йолаш Ñ, амма хурхала лорам хувцлургдац.',
'protect-default' => 'Лорамза',
@@ -1043,6 +1052,20 @@ $messages = array(
'metadata-help' => 'ÐŸÐ°ÑŒÐ»Ð°Ñ Ñ‡ÑƒÐ»Ð¾Ð°Ñ†Ð°, кхыдола Ñ…Iамаш, таьрахьа Ñуртдоаккхаргца е Ñ‚IагIолладоаккхаргца чудаккхаш дола. Ð¥ÑŒÐ°Ñ Ð¿Ð°ÑŒÐ», гIалатахь мукъадаьккха хинна дале, хьахокхаш дола Ñурт, деррига Ñ…Iамаш чулоацаргдац.',
'metadata-expand' => 'Кхыдола хIамаш хьахокха',
'metadata-collapse' => 'Кхыдола хIамаш къайладаккха',
+'metadata-fields' => 'Укх дагарченгахь дагaрадаь метахIамаша Ñуртий мугIаш, Ñурт оагIув Ñ‚Iа хьахекха хургьÑ, Ñ‡ÑƒÐµÑ€Ð·Ð°Ñ Ð¼ÐµÑ‚Ð°Ñ…Iамашийца. Вож мугIанаш ха йоалаш къайла хургьÑ.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Шерал',
@@ -1052,21 +1075,33 @@ $messages = array(
'exif-colorspace' => 'БаÑара аре',
'exif-pixelydimension' => 'Сурти шерал',
'exif-pixelxdimension' => 'Сурти лакхал',
+'exif-writer' => 'Яздама да',
+'exif-languagecode' => 'Мотт',
+'exif-iimcategory' => 'Цатег',
'exif-scenecapturetype-1' => 'ЛаьттабIаÑа',
'exif-scenecapturetype-2' => 'Сурт',
+'exif-iimcategory-edu' => 'Дешар',
+'exif-iimcategory-evn' => 'Ðрена буне',
+'exif-iimcategory-hth' => 'Могар',
+'exif-iimcategory-hum' => 'Ðдамий иÑкараш',
+'exif-iimcategory-rel' => 'Динеи тешареи',
+'exif-iimcategory-sci' => 'Iилмеи кулгболхеи',
+'exif-iimcategory-soi' => 'Сагий хаттараш',
+'exif-iimcategory-spo' => 'Ðидзоамал',
+'exif-iimcategory-war' => 'ТIомаш, кховÑамашеи латтарашеи',
+'exif-iimcategory-wea' => 'Хаоттам',
+
# External editor support
'edit-externally' => 'Йола болхоагIувца паьла гIалатахь мукъаÑккха',
-'edit-externally-help' => '(ма даррачунга хьажа [http://www.mediawiki.org/wiki/Manual:External_editors хьаоттама кулгалхо])',
+'edit-externally-help' => '(ма даррачунга хьажа [//www.mediawiki.org/wiki/Manual:External_editors хьаоттама кулгалхо])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'деррига',
-'imagelistall' => 'деррига',
-'watchlistall2' => 'деррига',
-'namespacesall' => 'деррига',
-'monthsall' => 'деррига',
-'limitall' => 'деррига',
+'watchlistall2' => 'деррига',
+'namespacesall' => 'деррига',
+'monthsall' => 'деррига',
+'limitall' => 'деррига',
# action=purge
'confirm_purge_button' => 'ХIаа',
diff --git a/languages/messages/MessagesIo.php b/languages/messages/MessagesIo.php
index b88db159..122b38fc 100644
--- a/languages/messages/MessagesIo.php
+++ b/languages/messages/MessagesIo.php
@@ -44,66 +44,66 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Userlogin' => array( 'Enirar' ),
- 'Userlogout' => array( 'Ekirar' ),
+ 'Allmessages' => array( 'OmnaMesaji' ),
+ 'Allpages' => array( 'OmnaPagini' ),
+ 'Ancientpages' => array( 'AncienaPagini' ),
+ 'Blankpage' => array( 'BlankaPagini' ),
+ 'Block' => array( 'Blokusar', 'BlokusarIP', 'BlokusarUzanto' ),
+ 'Booksources' => array( 'LibroFonti' ),
+ 'Categories' => array( 'Kategorii' ),
+ 'ChangePassword' => array( 'ChanjarPasovorto', 'Ripasvortizar' ),
+ 'Confirmemail' => array( 'KontrolarEposto' ),
+ 'Contributions' => array( 'Kontributaji' ),
'CreateAccount' => array( 'KrearKonto' ),
- 'Preferences' => array( 'Preferaji' ),
- 'Watchlist' => array( 'Surveyaji' ),
- 'Recentchanges' => array( 'RecentaChanji' ),
- 'Upload' => array( 'AdkargarArkivo' ),
+ 'DeletedContributions' => array( 'EfacitaKontributaji' ),
+ 'Emailuser' => array( 'EpostarUzanto' ),
+ 'Export' => array( 'Ekportar' ),
+ 'BlockList' => array( 'BlokusoListo' ),
+ 'Listadmins' => array( 'AdministrantiListo' ),
+ 'Listbots' => array( 'RobotoListo' ),
'Listfiles' => array( 'ArkivoListo' ),
- 'Newimages' => array( 'NovaArkivi' ),
- 'Listusers' => array( 'UzantoListo' ),
'Listgrouprights' => array( 'GrupoYuroListo' ),
- 'Statistics' => array( 'Statistiko' ),
+ 'Listredirects' => array( 'RidirektiloListo' ),
+ 'Listusers' => array( 'UzantoListo' ),
+ 'Log' => array( 'Registrari', 'Registraro' ),
+ 'Longpages' => array( 'LongaPagini' ),
+ 'Movepage' => array( 'MovarPagino' ),
+ 'Mycontributions' => array( 'MeaKontributaji' ),
+ 'Mypage' => array( 'MeaPagino' ),
+ 'Mytalk' => array( 'MeaDiskuti' ),
+ 'Newimages' => array( 'NovaArkivi' ),
+ 'Newpages' => array( 'NovaPagini' ),
+ 'Preferences' => array( 'Preferaji' ),
+ 'Prefixindex' => array( 'PrefixoIndexo' ),
+ 'Protectedpages' => array( 'ProtektitaPagini' ),
+ 'Protectedtitles' => array( 'ProtektitaTituli' ),
'Randompage' => array( 'HazardaPagino' ),
- 'Uncategorizedpages' => array( 'NekategoriizitaPagini' ),
+ 'Randomredirect' => array( 'HazardaRidirektilo' ),
+ 'Recentchanges' => array( 'RecentaChanji' ),
+ 'Recentchangeslinked' => array( 'RelatantaChanji', 'RecentaChanjiLigata' ),
+ 'Revisiondelete' => array( 'VersionoEfacar', 'EfacarVersiono' ),
+ 'Search' => array( 'Serchar' ),
+ 'Shortpages' => array( 'KurtaPagini' ),
+ 'Specialpages' => array( 'SpecalaPagini' ),
+ 'Statistics' => array( 'Statistiko' ),
'Uncategorizedcategories' => array( 'NekategoriizitaKategorii' ),
'Uncategorizedimages' => array( 'NekategoriizitaArkivi' ),
+ 'Uncategorizedpages' => array( 'NekategoriizitaPagini' ),
'Uncategorizedtemplates' => array( 'NekategoriizitaShabloni' ),
'Unusedcategories' => array( 'NeuzataKategorii' ),
'Unusedimages' => array( 'NeuzataArkivi' ),
- 'Wantedpages' => array( 'BezonataPagini' ),
+ 'Unusedtemplates' => array( 'NeuzataShabloni' ),
+ 'Unwatchedpages' => array( 'NesurveyataPagini' ),
+ 'Upload' => array( 'AdkargarArkivo' ),
+ 'Userlogin' => array( 'Enirar' ),
+ 'Userlogout' => array( 'Ekirar' ),
+ 'Version' => array( 'Versiono' ),
'Wantedcategories' => array( 'BezonataKategorii' ),
'Wantedfiles' => array( 'BezonataArkivi' ),
+ 'Wantedpages' => array( 'BezonataPagini' ),
'Wantedtemplates' => array( 'BezonataShabloni' ),
- 'Shortpages' => array( 'KurtaPagini' ),
- 'Longpages' => array( 'LongaPagini' ),
- 'Newpages' => array( 'NovaPagini' ),
- 'Ancientpages' => array( 'AncienaPagini' ),
- 'Protectedpages' => array( 'ProtektitaPagini' ),
- 'Protectedtitles' => array( 'ProtektitaTituli' ),
- 'Allpages' => array( 'OmnaPagini' ),
- 'Prefixindex' => array( 'PrefixoIndexo' ),
- 'Ipblocklist' => array( 'BlokusoListo' ),
- 'Specialpages' => array( 'SpecalaPagini' ),
- 'Contributions' => array( 'Kontributaji' ),
- 'Emailuser' => array( 'EpostarUzanto' ),
- 'Confirmemail' => array( 'KontrolarEposto' ),
+ 'Watchlist' => array( 'Surveyaji' ),
'Whatlinkshere' => array( 'QuoLigasHike' ),
- 'Recentchangeslinked' => array( 'RelatantaChanji', 'RecentaChanjiLigata' ),
- 'Movepage' => array( 'MovarPagino' ),
- 'Booksources' => array( 'LibroFonti' ),
- 'Categories' => array( 'Kategorii' ),
- 'Export' => array( 'Ekportar' ),
- 'Version' => array( 'Versiono' ),
- 'Allmessages' => array( 'OmnaMesaji' ),
- 'Log' => array( 'Registrari', 'Registraro' ),
- 'Blockip' => array( 'Blokusar', 'BlokusarIP', 'BlokusarUzanto' ),
- 'Unwatchedpages' => array( 'NesurveyataPagini' ),
- 'Listredirects' => array( 'RidirektiloListo' ),
- 'Revisiondelete' => array( 'VersionoEfacar', 'EfacarVersiono' ),
- 'Unusedtemplates' => array( 'NeuzataShabloni' ),
- 'Randomredirect' => array( 'HazardaRidirektilo' ),
- 'Mypage' => array( 'MeaPagino' ),
- 'Mytalk' => array( 'MeaDiskuti' ),
- 'Mycontributions' => array( 'MeaKontributaji' ),
- 'Listadmins' => array( 'AdministrantiListo' ),
- 'Listbots' => array( 'RobotoListo' ),
- 'Search' => array( 'Serchar' ),
- 'Resetpass' => array( 'ChanjarPasovorto', 'Ripasvortizar' ),
- 'Blankpage' => array( 'BlankaPagini' ),
- 'DeletedContributions' => array( 'EfacitaKontributaji' ),
);
$messages = array(
@@ -137,7 +137,7 @@ $messages = array(
'tog-enotifrevealaddr' => 'Montrez mea e-posto adreso en notifiko e-posti',
'tog-shownumberswatching' => 'Montrez nombro di surveyanta uzanti',
'tog-fancysig' => 'Traktez signaturo kom wikikodo (sen automata ligilo)',
-'tog-externaleditor' => 'Uzez extera redaktanto nespecigite (nur por experti, bezonas specala moderi ye vua komputoro .[http://www.mediawiki.org/wiki/Manual:External_editors Plusa informo.])',
+'tog-externaleditor' => 'Uzez extera redaktanto nespecigite (nur por experti, bezonas specala moderi ye vua komputoro .[//www.mediawiki.org/wiki/Manual:External_editors Plusa informo.])',
'tog-forceeditsummary' => 'Notifikez me kande skribanta vakua redakto-rezumo',
'tog-watchlisthideown' => 'Celez mea redaktaji de la surveyaji',
'tog-watchlisthidebots' => 'Celez redaktaji da roboti de la surveyaji',
@@ -219,14 +219,6 @@ $messages = array(
'category-file-count-limited' => 'La sequanta {{PLURAL:$1|arkivo|$1 arkivi}} es en la aktuala kategorio.',
'listingcontinuesabbrev' => 'seq.',
-'mainpagetext' => "'''MediaWiki instalesis sucese.'''",
-'mainpagedocfooter' => "Videz la [http://meta.wikimedia.org/wiki/Help:Contents Guidilo por Uzanti] por informo pri uzar la wiki programo.
-
-== Komencar ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Listo di ''Configuration setting'']
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki OQQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki nova versioni posto-listo]",
-
'about' => 'Pri',
'article' => 'artiklo',
'newwindow' => '(aparos en nova panelo)',
@@ -273,7 +265,6 @@ $messages = array(
'history' => 'Paginala historio',
'history_short' => 'Versionaro',
'updatedmarker' => 'aktualigita pos mea lasta vizito',
-'info_short' => 'Informajo',
'printableversion' => 'Imprimebla versiono',
'permalink' => 'Permananta ligilo',
'print' => 'Imprimar',
@@ -455,7 +446,7 @@ Voluntez, elektez ula diferanta uzantonomo.',
'nosuchuser' => 'Ne existas uzanto "$1".
Uzanto-nomi esas mayu/minuskulo-distingenda.
Kontrolez vua espelado, o [[Special:UserLogin/signup|krear nova konto]].',
-'nosuchusershort' => 'Esas nula uzanto "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Esas nula uzanto "$1".
Kontrolez la espelado.',
'nouserspecified' => 'Vu mustas specigar uzantonomo.',
'wrongpassword' => 'La skribita pasovorto esis nekorekta. Voluntez probar itere.',
@@ -475,7 +466,7 @@ Voluntez enirar altrafoye pos recevar ol.',
'createaccount-title' => 'Kreo di konto en {{SITENAME}}',
'loginlanguagelabel' => 'Linguo: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Chanjar pasovorto',
'resetpass_header' => 'Chanjar pasovorto di konto',
'oldpassword' => 'Anciena pasovorto:',
@@ -486,6 +477,9 @@ Voluntez enirar altrafoye pos recevar ol.',
'resetpass-submit-loggedin' => 'Chanjar pasovorto',
'resetpass-temp-password' => 'Provizora pasovorto:',
+# Special:PasswordReset
+'passwordreset-username' => 'Uzantonomo:',
+
# Edit page toolbar
'bold_sample' => 'Dika literi',
'bold_tip' => 'Dika literi',
@@ -497,8 +491,6 @@ Voluntez enirar altrafoye pos recevar ol.',
'extlink_tip' => 'Extera ligilo (memorez adjuntar la prefixo "http://")',
'headline_sample' => 'Texto dil titulo',
'headline_tip' => 'Titulo di duesma nivelo',
-'math_sample' => 'Insertez formulo hike',
-'math_tip' => 'Formulo matematika (LaTeX)',
'nowiki_sample' => 'Insertar senformizita texto hike',
'nowiki_tip' => 'Ignorez formatigo wikial',
'image_sample' => 'Exemplo.jpg',
@@ -544,7 +536,7 @@ Se vu esas hike erore, kliktez sur la butono por retrovenar en vua navigilo.',
Vu povas [[Special:Search/{{PAGENAME}}|serchar ica titulo]] en altra pagini,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} serchar en la relata registri],
o [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktar ica pagino]</span>.',
-'userpage-userdoesnotexist' => 'Uzanto-nomo "$1" no registragesis.
+'userpage-userdoesnotexist' => 'Uzanto-nomo "<nowiki>$1</nowiki>" no registragesis.
Voluntez konfirmez se vu volas krear/redaktar ica pagino.',
'userpage-userdoesnotexist-view' => 'Uzanto-nomo "$1" no registragesis.',
'clearyourcache' => "'''Atencez: Pos registragar, vu probable mustas renovigar la tempala-magazino di vua navigilo por vidar la chanji.'''
@@ -720,7 +712,6 @@ Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzant
'changepassword' => 'Chanjar pasovorto',
'prefs-skin' => 'Pelo',
'skin-preview' => 'Pre-videz',
-'prefs-math' => 'Quale montrar la formuli',
'datedefault' => 'Sen prefero',
'prefs-datetime' => 'Dato e tempo',
'prefs-personal' => 'Personala informo',
@@ -739,8 +730,6 @@ Probez prefixizar vua demando kun ''all:'' por serchar omna kontenajo (inkluzant
'columns' => 'Kolumni:',
'searchresultshead' => 'Preferaji di la rezultaji dil sercho',
'resultsperpage' => 'Trovaji po pagino:',
-'contextlines' => 'Linei por montrar singlarezulte:',
-'contextchars' => 'Tipi di kuntexto ye singla lineo:',
'recentchangesdays' => 'Dii montrota en la recenta chanji:',
'recentchangesdays-max' => 'Maximo $1 {{PLURAL:$1|dio|dii}}',
'recentchangescount' => 'Quanto de redakti montrota kustume:',
@@ -1086,11 +1075,9 @@ Volutez kontrolar '''<tt>[[:$1]]</tt>''' se vu ne esas certa pri chanjar olu.
'nowatchlist' => 'Vu ne havas objekti en vua listo di surveyaji.',
'watchnologin' => 'Vu ne startis sesiono',
'watchnologintext' => 'Vu mustas [[Special:UserLogin|enirir]] por modifikar vua surveyaji.',
-'addedwatch' => 'Adjuntita a la listo de surveyaji',
'addedwatchtext' => "La pagino \"<nowiki>\$1</nowiki>\" atachesis a vua [[Special:Watchlist|listo de surveyaji]]. Futura chanji di ica pagino ed olua relatanta debato-pagini montresos ibe, ed la pagino aparos per '''dika literi''' en la [[Special:RecentChanges|listo de recenta chanji]] por faciligar sua trovebleso.
<p> Se vu volas efacar la pagino de vua listo de surveyaji pose, presez \"Ne plus surveyar\" en la selektaro.",
-'removedwatch' => 'Efacita de surveyo-listo',
'removedwatchtext' => 'La pagino "[[:$1]]" forigesis de [[Special:Watchlist|vua surveyado]].',
'watch' => 'Surveyar',
'watchthispage' => 'Surveyar ica pagino',
@@ -1124,7 +1111,7 @@ Volutez kontrolar '''<tt>[[:$1]]</tt>''' se vu ne esas certa pri chanjar olu.
'delete-legend' => 'Efacar',
'historywarning' => 'Egardez: La pagino, quan vu efaceskas, havas versionaro:',
'actioncomplete' => 'Ago kompletigita',
-'deletedtext' => '"<nowiki>$1</nowiki>" efacesis.
+'deletedtext' => '"$1" efacesis.
Videz $2 por obtenar registro di recenta efaci.',
'deletedarticle' => 'efacis "[[$1]]"',
'dellogpage' => 'Efaco-registraro',
@@ -1243,7 +1230,6 @@ restauris ad lasta versiono da $2.',
# Block/unblock
'blockip' => 'Blokusado di IP-adresi',
'blockip-legend' => 'Blokusar uzanto',
-'ipaddress' => 'IP-adreso:',
'ipadressorusername' => 'IP-adreso od uzantonomo:',
'ipbexpiry' => 'Expiro:',
'ipbreason' => 'Motivo:',
@@ -1256,7 +1242,6 @@ restauris ad lasta versiono da $2.',
** Timidiganta ago
** Trouzar multa konti
** Neaceptebla uzanto-nomo',
-'ipbanononly' => 'Blokusez nur anonimala uzanti',
'ipbcreateaccount' => 'Preventez kreo di konti',
'ipbsubmit' => 'Blokusar ica uzanto',
'ipbother' => 'Altra tempo:',
@@ -1273,7 +1258,6 @@ Videz [[Special:IPBlockList|IP-blokuslisto]] por revizor blokusadi.',
'ipusubmit' => 'Desblokusar',
'ipblocklist' => 'Blokusita IP-adresi ed uzantonomi',
'ipblocklist-submit' => 'Serchar',
-'blocklistline' => '$1, $2 blokusas $3 (expiras $4)',
'blocklink' => 'blokusar',
'unblocklink' => 'desblokusar',
'change-blocklink' => 'chanjar blokuso',
@@ -1346,7 +1330,7 @@ Voluntez selektar altra nomo.',
'allmessages' => 'Omna sistemo-mesaji',
'allmessagesname' => 'Nomo',
'allmessagestext' => 'Ico esas listo di omna sistemo-mesaji disponebla en la MediaWiki nomaro.
-Voluntez vizitar [http://www.mediawiki.org/wiki/Localisation MediaWiki Lokizado] e [http://translatewiki.net translatewiki.net] se vu volus kontributar ad generala MediaWiki lokizado.',
+Voluntez vizitar [//www.mediawiki.org/wiki/Localisation MediaWiki Lokizado] e [//translatewiki.net translatewiki.net] se vu volus kontributar ad generala MediaWiki lokizado.',
'allmessages-language' => 'Linguo:',
# Thumbnails
@@ -1436,16 +1420,6 @@ Vu darfos adjuntar kauso en la rezumo.',
# Spam protection
'spamprotectiontitle' => 'Filtrilo kontre spamo',
-# Info page
-'numedits' => 'Quanto di redakti (pagino): $1',
-'numwatchers' => 'Quanto di vizitanti: $1',
-'numauthors' => 'Quanto di aparta autori (pagino): $1',
-
-# Math errors
-'math_unknown_error' => 'nekonocata eroro',
-'math_bad_tmpdir' => 'Onu ne povas skribar o krear la tempala matematikala arkivaro',
-'math_bad_output' => 'Onu ne povas skribar o krear la arkivaro por la matematiko',
-
# Patrol log
'patrol-log-auto' => '(automata)',
'patrol-log-diff' => 'revizado $1',
@@ -1455,10 +1429,9 @@ Vu darfos adjuntar kauso en la rezumo.',
'nextdiff' => 'Plu recenta versiono →',
# Media information
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagino|pagini}}',
-'file-nohires' => '<small>Ne existas grandeso plu granda.</small>',
-'show-big-image' => 'Grandeso kompleta',
-'show-big-image-thumb' => '<small>Dimensioni di ca previdajo: $1 × $2 pixel-i</small>',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagino|pagini}}',
+'file-nohires' => '<small>Ne existas grandeso plu granda.</small>',
+'show-big-image' => 'Grandeso kompleta',
# Special:NewFiles
'newimages' => 'Galerio di nova arkivi',
@@ -1510,11 +1483,9 @@ Vu darfos adjuntar kauso en la rezumo.',
'edit-externally' => 'Chanjez ta arkivo per externa programo',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'omna',
-'imagelistall' => 'omna',
-'watchlistall2' => 'omna',
-'namespacesall' => 'omna',
-'monthsall' => 'omna',
+'watchlistall2' => 'omna',
+'namespacesall' => 'omna',
+'monthsall' => 'omna',
# E-mail address confirmation
'confirmemail_needlogin' => 'Vu mustas $1 pro konfirmar vua adreso di e-posto.',
diff --git a/languages/messages/MessagesIs.php b/languages/messages/MessagesIs.php
index 4aba9d4b..80415010 100644
--- a/languages/messages/MessagesIs.php
+++ b/languages/messages/MessagesIs.php
@@ -130,87 +130,87 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Tvöfaldar tilvísanir' ),
+ 'Allmessages' => array( 'Meldingar' ),
+ 'Allpages' => array( 'Allar síður' ),
+ 'Ancientpages' => array( 'Elstu síður' ),
+ 'Block' => array( 'Banna vistföng' ),
+ 'Blockme' => array( 'Banna mig' ),
+ 'Booksources' => array( 'Bókaheimildir' ),
'BrokenRedirects' => array( 'Brotnar tilvísanir' ),
- 'Disambiguations' => array( 'Tenglar í aðgreiningarsíður' ),
- 'Userlogin' => array( 'Innskrá' ),
- 'Userlogout' => array( 'Útskrá' ),
+ 'Categories' => array( 'Flokkar' ),
+ 'ChangePassword' => array( 'Endurkalla aðgangsorðið' ),
+ 'Confirmemail' => array( 'Staðfesta netfang' ),
+ 'Contributions' => array( 'Framlög' ),
'CreateAccount' => array( 'Búa til aðgang' ),
- 'Preferences' => array( 'Stillingar' ),
- 'Watchlist' => array( 'Vaktlistinn' ),
- 'Recentchanges' => array( 'Nýlegar breytingar' ),
- 'Upload' => array( 'Hlaða inn' ),
+ 'Deadendpages' => array( 'Botnlangar' ),
+ 'Disambiguations' => array( 'Tenglar í aðgreiningarsíður' ),
+ 'DoubleRedirects' => array( 'Tvöfaldar tilvísanir' ),
+ 'Emailuser' => array( 'Senda tölvupóst' ),
+ 'Export' => array( 'Flytja út' ),
+ 'Fewestrevisions' => array( 'Fæstar útgáfur' ),
+ 'FileDuplicateSearch' => array( 'Afritunarskráarleit' ),
+ 'Filepath' => array( 'Skráarslóð' ),
+ 'Import' => array( 'Flytja inn' ),
+ 'Invalidateemail' => array( 'Rangt netfang' ),
+ 'BlockList' => array( 'Bönnuð vistföng' ),
+ 'Listadmins' => array( 'Stjórnendalisti' ),
+ 'Listbots' => array( 'Vélmennalisti' ),
'Listfiles' => array( 'Myndalisti' ),
- 'Newimages' => array( 'Nýjar myndir' ),
- 'Listusers' => array( 'Notendalisti' ),
'Listgrouprights' => array( 'Réttindalisti' ),
- 'Statistics' => array( 'Tölfræði' ),
- 'Randompage' => array( 'Handahófsvalin síða' ),
+ 'Listredirects' => array( 'Tilvísanalisti' ),
+ 'Listusers' => array( 'Notendalisti' ),
+ 'Lockdb' => array( 'Læsa gagnagrunni' ),
+ 'Log' => array( 'Aðgerðaskrár' ),
'Lonelypages' => array( 'Munaðarlausar síður' ),
- 'Uncategorizedpages' => array( 'Óflokkaðar síður' ),
- 'Uncategorizedcategories' => array( 'Óflokkaðir flokkar' ),
- 'Uncategorizedimages' => array( 'Óflokkaðar myndir' ),
- 'Uncategorizedtemplates' => array( 'Óflokkuð snið' ),
- 'Unusedcategories' => array( 'Ónotaðir flokkar' ),
- 'Unusedimages' => array( 'Munaðarlausar myndir' ),
- 'Wantedpages' => array( 'Eftirsóttar síður' ),
- 'Wantedcategories' => array( 'Eftirsóttir flokkar' ),
+ 'Longpages' => array( 'Langar síður' ),
+ 'MergeHistory' => array( 'Sameina breytingaskrá' ),
+ 'MIMEsearch' => array( 'MIME-leit' ),
+ 'Mostcategories' => array( 'Flestir flokkar' ),
+ 'Mostimages' => array( 'Flestar myndir' ),
'Mostlinked' => array( 'Mest ítengt' ),
'Mostlinkedcategories' => array( 'Mest ítengdu flokkar' ),
'Mostlinkedtemplates' => array( 'Mest ítengdu snið' ),
- 'Mostimages' => array( 'Flestar myndir' ),
- 'Mostcategories' => array( 'Flestir flokkar' ),
'Mostrevisions' => array( 'Flestar útgáfur' ),
- 'Fewestrevisions' => array( 'Fæstar útgáfur' ),
- 'Shortpages' => array( 'Stuttar síður' ),
- 'Longpages' => array( 'Langar síður' ),
+ 'Movepage' => array( 'Færa síðu' ),
+ 'Mycontributions' => array( 'Framlög mín' ),
+ 'Mypage' => array( 'Notandasíða mín' ),
+ 'Mytalk' => array( 'Spjallasíða mín' ),
+ 'Newimages' => array( 'Nýjar myndir' ),
'Newpages' => array( 'Nýjustu greinar' ),
- 'Ancientpages' => array( 'Elstu síður' ),
- 'Deadendpages' => array( 'Botnlangar' ),
+ 'Popularpages' => array( 'Vinsælar síður' ),
+ 'Preferences' => array( 'Stillingar' ),
+ 'Prefixindex' => array( 'Forskeyti' ),
'Protectedpages' => array( 'Verndaðar síður' ),
'Protectedtitles' => array( 'Verndaðir titlar' ),
- 'Allpages' => array( 'Allar síður' ),
- 'Prefixindex' => array( 'Forskeyti' ),
- 'Ipblocklist' => array( 'Bönnuð vistföng' ),
- 'Specialpages' => array( 'Kerfissíður' ),
- 'Contributions' => array( 'Framlög' ),
- 'Emailuser' => array( 'Senda tölvupóst' ),
- 'Confirmemail' => array( 'Staðfesta netfang' ),
- 'Whatlinkshere' => array( 'Síður sem tengjast hingað' ),
+ 'Randompage' => array( 'Handahófsvalin síða' ),
+ 'Randomredirect' => array( 'Handahófsvalin tilvísun' ),
+ 'Recentchanges' => array( 'Nýlegar breytingar' ),
'Recentchangeslinked' => array( 'Nýlegar breytingar tengdar' ),
- 'Movepage' => array( 'Færa síðu' ),
- 'Blockme' => array( 'Banna mig' ),
- 'Booksources' => array( 'Bókaheimildir' ),
- 'Categories' => array( 'Flokkar' ),
- 'Export' => array( 'Flytja út' ),
- 'Version' => array( 'Útgáfa' ),
- 'Allmessages' => array( 'Meldingar' ),
- 'Log' => array( 'Aðgerðaskrár' ),
- 'Blockip' => array( 'Banna vistföng' ),
+ 'Revisiondelete' => array( 'Eyðingarendurskoðun' ),
+ 'Search' => array( 'Leit' ),
+ 'Shortpages' => array( 'Stuttar síður' ),
+ 'Specialpages' => array( 'Kerfissíður' ),
+ 'Statistics' => array( 'Tölfræði' ),
+ 'Uncategorizedcategories' => array( 'Óflokkaðir flokkar' ),
+ 'Uncategorizedimages' => array( 'Óflokkaðar myndir' ),
+ 'Uncategorizedpages' => array( 'Óflokkaðar síður' ),
+ 'Uncategorizedtemplates' => array( 'Óflokkuð snið' ),
'Undelete' => array( 'Endurvekja eydda síðu' ),
- 'Import' => array( 'Flytja inn' ),
- 'Lockdb' => array( 'Læsa gagnagrunni' ),
'Unlockdb' => array( 'Opna gagnagrunn' ),
- 'Userrights' => array( 'Notandaréttindi' ),
- 'MIMEsearch' => array( 'MIME-leit' ),
- 'FileDuplicateSearch' => array( 'Afritunarskráarleit' ),
- 'Unwatchedpages' => array( 'Óvaktaðar síður' ),
- 'Listredirects' => array( 'Tilvísanalisti' ),
- 'Revisiondelete' => array( 'Eyðingarendurskoðun' ),
+ 'Unusedcategories' => array( 'Ónotaðir flokkar' ),
+ 'Unusedimages' => array( 'Munaðarlausar myndir' ),
'Unusedtemplates' => array( 'Ónotuð snið' ),
- 'Randomredirect' => array( 'Handahófsvalin tilvísun' ),
- 'Mypage' => array( 'Notandasíða mín' ),
- 'Mytalk' => array( 'Spjallasíða mín' ),
- 'Mycontributions' => array( 'Framlög mín' ),
- 'Listadmins' => array( 'Stjórnendalisti' ),
- 'Listbots' => array( 'Vélmennalisti' ),
- 'Popularpages' => array( 'Vinsælar síður' ),
- 'Search' => array( 'Leit' ),
- 'Resetpass' => array( 'Endurkalla aðgangsorðið' ),
+ 'Unwatchedpages' => array( 'Óvaktaðar síður' ),
+ 'Upload' => array( 'Hlaða inn' ),
+ 'Userlogin' => array( 'Innskrá' ),
+ 'Userlogout' => array( 'Útskrá' ),
+ 'Userrights' => array( 'Notandaréttindi' ),
+ 'Version' => array( 'Útgáfa' ),
+ 'Wantedcategories' => array( 'Eftirsóttir flokkar' ),
+ 'Wantedpages' => array( 'Eftirsóttar síður' ),
+ 'Watchlist' => array( 'Vaktlistinn' ),
+ 'Whatlinkshere' => array( 'Síður sem tengjast hingað' ),
'Withoutinterwiki' => array( 'Síður án tungumálatengla' ),
- 'MergeHistory' => array( 'Sameina breytingaskrá' ),
- 'Filepath' => array( 'Skráarslóð' ),
- 'Invalidateemail' => array( 'Rangt netfang' ),
);
$separatorTransformTable = array( ',' => '.', '.' => ',' );
@@ -248,7 +248,7 @@ $messages = array(
'tog-enotifrevealaddr' => 'Gefa upp netfang mitt í tilkynningarpóstum',
'tog-shownumberswatching' => 'Sýna fjölda vaktandi notenda',
'tog-oldsig' => 'Núverandi undirskrift:',
-'tog-fancysig' => 'Taka undirskrift sem wikitexti (án sjálfkrafa tengils)',
+'tog-fancysig' => 'Meðhöndla undirskrift sem wikitexti (án sjálfvirks tengils)',
'tog-externaleditor' => 'Nota utanaðkomandi ritil sjálfgefið (eingöngu fyrir reynda, þarfnast sérstakra stillinga á tölvunni þinni)',
'tog-externaldiff' => 'Nota utanaðkomandi mismun sjálfgefið (eingöngu fyrir reynda, þarfnast sérstakra stillinga á tölvunni þinni)',
'tog-showjumplinks' => 'Virkja „stökkva á“ aðgengitengla',
@@ -263,6 +263,7 @@ $messages = array(
'tog-ccmeonemails' => 'Senda mér afrit af tölvupóstum sem ég sendi öðrum notendum',
'tog-diffonly' => 'Ekki sýna síðuefni undir mismunum',
'tog-showhiddencats' => 'Sýna falda flokka',
+'tog-norollbackdiff' => 'Sleppa breytingu eftir að endurvakning síðu hefur verið gerð.',
'underline-always' => 'Alltaf',
'underline-never' => 'Aldrei',
@@ -342,16 +343,11 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Þessi flokkur inniheldur einungis eftirfarandi skrá.|Eftirfarandi {{PLURAL:$1|skrá er|$1 skrár eru}} í þessum flokki, af alls $2.}}',
'category-file-count-limited' => 'Eftirfarandi {{PLURAL:$1|skrá er|$1 skrár eru}} í þessum flokki.',
'listingcontinuesabbrev' => 'frh.',
+'index-category' => 'Raðaðar skrár',
+'noindex-category' => 'Óraðaðar skrár',
+'broken-file-category' => 'Síður með brotna myndatengla',
-'linkprefix' => '/^(.*?)([áÃðÃéÉíÃóÓúÚýÃþÞæÆöÖA-Za-z-–]+)$/sDu',
-'mainpagetext' => "'''Uppsetning á MediaWiki heppnaðist.'''",
-'mainpagedocfooter' => 'Ráðfærðu þig við [http://meta.wikimedia.org/wiki/Help:Contents Notandahandbókina] fyrir frekari upplýsingar um notkun wiki-hugbúnaðarins.
-
-== Fyrir byrjendur ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Listi yfir uppsetningarstillingar]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki Algengar spurningar MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Póstlisti MediaWiki-útgáfa]',
+'linkprefix' => '/^(.*?)([áÃðÃéÉíÃóÓúÚýÃþÞæÆöÖA-Za-z-–]+)$/sDu',
'about' => 'Um',
'article' => 'Efnissíða',
@@ -376,20 +372,21 @@ $messages = array(
'faqpage' => 'Project:Algengar spurningar',
# Vector skin
-'vector-action-addsection' => 'Bæta við umræðu',
-'vector-action-delete' => 'Eyða',
-'vector-action-move' => 'Færa',
-'vector-action-protect' => 'Vernda',
-'vector-action-undelete' => 'Hætta við eyðingu',
-'vector-action-unprotect' => 'Breyta verndunarstigi',
-'vector-view-create' => 'Skapa',
-'vector-view-edit' => 'Breyta',
-'vector-view-history' => 'Breytingaskrá',
-'vector-view-view' => 'Lesa',
-'vector-view-viewsource' => 'Sýna frumkóða',
-'actions' => 'Aðgerðir',
-'namespaces' => 'Nafnrými',
-'variants' => 'Útgáfur',
+'vector-action-addsection' => 'Bæta við umræðu',
+'vector-action-delete' => 'Eyða',
+'vector-action-move' => 'Færa',
+'vector-action-protect' => 'Vernda',
+'vector-action-undelete' => 'Hætta við eyðingu',
+'vector-action-unprotect' => 'Breyta verndunarstigi',
+'vector-simplesearch-preference' => 'Virkja leitaruppástungur (eingöngu fyrir vector þema)',
+'vector-view-create' => 'Skapa',
+'vector-view-edit' => 'Breyta',
+'vector-view-history' => 'Breytingaskrá',
+'vector-view-view' => 'Lesa',
+'vector-view-viewsource' => 'Sýna frumkóða',
+'actions' => 'Aðgerðir',
+'namespaces' => 'Nafnrými',
+'variants' => 'Útgáfur',
'errorpagetitle' => 'Villa',
'returnto' => 'Aftur á: $1.',
@@ -402,10 +399,10 @@ $messages = array(
'history' => 'Breytingaskrá',
'history_short' => 'Breytingaskrá',
'updatedmarker' => 'uppfært frá síðustu heimsókn minni',
-'info_short' => 'Upplýsingar',
'printableversion' => 'Prentvæn útgáfa',
'permalink' => 'Varanlegur tengill',
'print' => 'Prenta',
+'view' => 'Skoða',
'edit' => 'Breyta',
'create' => 'Skapa',
'editthispage' => 'Breyta þessari síðu',
@@ -413,6 +410,7 @@ $messages = array(
'delete' => 'Eyða',
'deletethispage' => 'Eyða þessari síðu',
'undelete_short' => 'Endurvekja {{PLURAL:$1|eina breytingu|$1 breytingar}}',
+'viewdeleted_short' => 'Skoða {{PLURAL:$1|eina eydda breytingu|$1 eyddar breytingar}}',
'protect' => 'Vernda',
'protect_change' => 'breyta',
'protectthispage' => 'Vernda þessa síðu',
@@ -450,6 +448,7 @@ 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-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).
@@ -495,6 +494,8 @@ Sjá [[Special:Version|útgáfusíðuna]].',
'toc' => 'Efnisyfirlit',
'showtoc' => 'sýna',
'hidetoc' => 'fela',
+'collapsible-collapse' => 'Fela',
+'collapsible-expand' => 'Sýna',
'thisisdeleted' => 'Endurvekja eða skoða $1?',
'viewdeleted' => 'Skoða $1?',
'restorelink' => '{{PLURAL:$1|eina eydda breytingu|$1 eyddar breytingar}}',
@@ -506,6 +507,8 @@ Sjá [[Special:Version|útgáfusíðuna]].',
'page-rss-feed' => '„$1“ RSS-streymi',
'page-atom-feed' => '„$1“ Atom-streymi',
'red-link-title' => '$1 (síða er ekki enn til)',
+'sort-descending' => 'Raða í lækkandi röð',
+'sort-ascending' => 'Raða í hækkandi röð',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Síða',
@@ -559,6 +562,7 @@ Gjörðu svo vel og tilkynntu atvikið til [[Special:ListUsers/sysop|stjórnanda
'readonly_lag' => 'Gagnagrunninum hefur verið læst sjálfkrafa á meðan undirvefþjónarnir reyna að hafa í við aðalvefþjóninn',
'internalerror' => 'Kerfisvilla',
'internalerror_info' => 'Innri villa: $1',
+'fileappenderrorread' => 'Mistókst að lesa "$1" á meðan skeytt var við síðuna.',
'fileappenderror' => 'Gat ekki bætt „$1“ við „$2“.',
'filecopyerror' => 'Gat ekki afritað skjal "$1" á "$2".',
'filerenameerror' => 'Gat ekki endurnefnt skrána „$1“ í „$2“.',
@@ -588,12 +592,13 @@ Spurn: $2',
'protectedinterface' => 'Þessi síða útvegar textann sem birtist í viðmóti hugbúnaðarins, og er læst til að koma í veg fyrir misnotkun.',
'editinginterface' => "'''Aðvörun:''' Þú ert að breyta síðu sem hefur að geyma texta fyrir notendaumhverfi hugbúnaðarins.
Breytingar á þessari síðu munu hafa áhrif á notendaumhverfi annarra notenda.
-Fyrir þýðingar, gjörðu svo vel að nota [http://translatewiki.net/wiki/Main_Page?setlang=is translatewiki.net], staðfæringverkefni MediaWiki.",
+Fyrir þýðingar, gjörðu svo vel að nota [//translatewiki.net/wiki/Main_Page?setlang=is translatewiki.net], staðfæringverkefni MediaWiki.",
'sqlhidden' => '(SQL-fyrirspurn falin)',
'cascadeprotected' => 'Þessi síða hefur verið vernduð fyrir breytingum, vegna þess að hún er innifalin í eftirfarandi {{PLURAL:$1|síðu, sem er vernduð|síðum, sem eru verndaðar}} með „keðjuverndun“:
$2',
'namespaceprotected' => "Þú hefur ekki leyfi til að breyta síðum í '''$1''' nafnrýminu.",
-'customcssjsprotected' => 'Þú hefur ekki leyfi til að breyta þessari síðu, því hún hefur notandastillingar annars notanda.',
+'customcssprotected' => 'Þú hefur ekki leyfi að breyta þessari CSS-umbrotsíðu, því hún hefur notendastillingar annars notanda.',
+'customjsprotected' => 'Þú hefur ekki leyfi til að breyta þessari JavaScript síðu, því hún hefur notendastillingar annars notanda.',
'ns-specialprotected' => 'Kerfissíðum er ekki hægt að breyta.',
'titleprotected' => "Þessi titill hefur verið verndaður fyrir sköpun af [[User:$1|$1]].
Ãstæðan sem gefin var ''$2''.",
@@ -615,7 +620,9 @@ Ekki gleyma að breyta [[Special:Preferences|{{SITENAME}}-stillingunum]] þínum
'yourpassword' => 'Lykilorð:',
'yourpasswordagain' => 'Endurrita lykilorð:',
'remembermypassword' => 'Muna innskráninguna mína í þessum vafra (í allt að $1 {{PLURAL:$1|dag|daga}})',
+'securelogin-stick-https' => 'Halda öllum samskiptum áfram yfir HTTPS eftir að þú skráir þig inn',
'yourdomainname' => 'Þitt lén:',
+'externaldberror' => 'Uppfærsla mistókst. Annaðhvort varð villa í gagnasafninu eða að þér sé óheimilt að uppfæra aðra aðganga.',
'login' => 'Innskrá',
'nav-login-createaccount' => 'Innskrá / Búa til aðgang',
'loginprompt' => 'Þú verður að leyfa vefkökur til þess að geta skráð þig inn á {{SITENAME}}.',
@@ -629,6 +636,7 @@ Ekki gleyma að breyta [[Special:Preferences|{{SITENAME}}-stillingunum]] þínum
'createaccount' => 'Nýskrá',
'gotaccount' => "Nú þegar með notandanafn? '''$1'''.",
'gotaccountlink' => 'Skráðu þig inn',
+'userlogin-resetlink' => 'Gleymdir þú notendaupplýsingunum þínum?',
'createaccountmail' => 'með tölvupósti',
'createaccountreason' => 'Ãstæða:',
'badretype' => 'Lykilorðin sem þú skrifaðir eru ekki eins.',
@@ -641,13 +649,15 @@ Vinsamlegast veldu þér annað.',
Þú hefur lokað fyrir vefkökur.
Gjörðu svo vel og opnaðu fyrir þær, skráðu þig svo inn með notandanafni og lykilorði.',
'nocookieslogin' => '{{SITENAME}} notar vefkökur til innskráningar. Vafrinn þinn er ekki að taka á móti þeim sem gerir það ókleyft að innskrá þig. Vinsamlegast virkjaðu móttöku kakna í vafranum þínum til að geta skráð þig inn.',
+'nocookiesfornew' => 'Notenda aðgangurinn var ekki stofnaður, því ekki fannst uppruni beiðnarinnar.
+Gakktu úr skugga um að vefkökur séu virkar, endurhladdu þessari síðu og reyndu aftur.',
'noname' => 'Þú hefur ekki tilgreint gilt notandanafn.',
'loginsuccesstitle' => 'Innskráning tókst',
'loginsuccess' => "'''Þú ert nú innskráð(ur) á {{SITENAME}} sem „$1“.'''",
'nosuchuser' => 'Það er enginn notandi með þetta nafn: "$1".
Gerður er greinarmunur á há- og lágstöfum.
Athugaðu hvort um innsláttavillu er að ræða eða [[Special:UserLogin/signup|búðu til nýtt notendanafn]].',
-'nosuchusershort' => 'Það er enginn notandi með nafnið „<nowiki>$1</nowiki>“. Athugaðu hvort nafnið sé ritað rétt.',
+'nosuchusershort' => 'Það er enginn notandi með nafnið „$1“. Athugaðu hvort nafnið sé ritað rétt.',
'nouserspecified' => 'Þú verður að taka fram notandanafn.',
'login-userblocked' => 'Þessi notandi hefur verið settur í bann. Innskráning ekki leyfð.',
'wrongpassword' => 'Uppgefið lykilorð er rangt. Vinsamlegast reyndu aftur.',
@@ -692,9 +702,14 @@ Gjörðu svo vel og settu inn netfang á gildu formi eða tæmdu reitinn.',
'usernamehasherror' => 'Notendanöfn mega ekki innihalda kassa (#)',
'login-throttled' => 'Þér hefur mistekist að skrá þig inn undir þessu notendanafni of oft.
Vinsamlegast reynið aftur síðar.',
+'login-abort-generic' => 'Innskráningin misheppnaðist - hætt var við hana.',
'loginlanguagelabel' => 'Tungumál: $1',
+'suspicious-userlogout' => 'Beiðni um útskráningu hafnað því hún var líklegast send frá biluðum vafra eða vefseli sem hefur vistað vefsíðuna í flýtiminni.',
+
+# E-mail sending
+'php-mail-error-unknown' => 'Óþekkt villa í PHP mail() aðgerð.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Breyta lykilorði',
'resetpass_announce' => 'Þú skráðir þig inn með tímabundnum netfangskóða.
Til að klára að skrá þig inn, verður þú að endurstilla lykilorðið hér:',
@@ -713,6 +728,34 @@ Til að klára að skrá þig inn, verður þú að endurstilla lykilorðið hé
Þú gætir þegar verið búin/n að breyta lykilorðinu eða sótt um nýtt tímabundið lykilorð',
'resetpass-temp-password' => 'Tímabundið lykilorð:',
+# Special:PasswordReset
+'passwordreset' => 'Endurstilla lykilorð',
+'passwordreset-text' => 'Fylltu út þennan reit til að fá tölvupóst um áminningu um notendauplýsingarnar þínar.',
+'passwordreset-legend' => 'Endurstilla lykilorð',
+'passwordreset-disabled' => 'Lokað hefur verið fyrir að endurstilla lykilorð á þessum wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Sláðu inn einn hluta gagnanna hér fyrir neðan}}',
+'passwordreset-username' => 'Notandanafn:',
+'passwordreset-domain' => 'Lén:',
+'passwordreset-email' => 'Netfang:',
+'passwordreset-emailtitle' => 'Notendaupplýsingar á {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Einhver (líklegast þú, á vistfanginu $1) hefur beðið um notendaupplýsingar þínar fyrir {{SITENAME}} ($4). Aðgangur eftirfarandi {{PLURAL:$3|notanda er|notendum eru}} tengd þessu netfangi:
+
+$2
+
+Ef þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorð|Tímabundnu lykilorðin}} renna út eftir {{PLURAL:$5|einn dag|$5 daga}}.
+
+Ef það varst ekki þú sem fórst fram á þetta, eða ef þú mannst lykilorðið þitt, og villt ekki lengur breyta því, skaltu hunsa þessi skilaboð og halda áfram að nota gamla lykilorðið.',
+'passwordreset-emailtext-user' => 'Notandinn $1 á {{SITENAME}} hefur beðið um notendaupplýsingar þínar fyrir {{SITENAME}} ($4). Aðgangur eftirfarandi {{PLURAL:$3|notanda er|notendum eru}} tengd þessu netfangi:
+
+$2
+
+Ef þetta er það sem þú vildir, þarftu að skrá þig inn og velja nýtt lykilorð. {{PLURAL:$3|Tímabundna lykilorð|Tímabundnu lykilorðin}} renna út eftir {{PLURAL:$5|einn dag|$5 daga}}.
+
+Ef það varst ekki þú sem fórst fram á þetta, eða ef þú mannst lykilorðið þitt, og villt ekki lengur breyta því, skaltu hunsa þessi skilaboð og halda áfram að nota gamla lykilorðið.',
+'passwordreset-emailelement' => 'Notendanafn: $1
+Tímabundið lykilorð: $2',
+'passwordreset-emailsent' => 'Ãminning hefur verið send í tölvupósti.',
+
# Edit page toolbar
'bold_sample' => 'Feitletraður texti',
'bold_tip' => 'Feitletraður texti',
@@ -724,8 +767,6 @@ Til að klára að skrá þig inn, verður þú að endurstilla lykilorðið hé
'extlink_tip' => 'Ytri tengill (munið að setja http:// á undan)',
'headline_sample' => 'Fyrirsagnartexti',
'headline_tip' => 'Annars stigs fyrirsögn',
-'math_sample' => 'Sláið inn formúlu hér',
-'math_tip' => 'Stærðfræðiformúla (LaTeX)',
'nowiki_sample' => 'Innsetjið ósniðinn texta hér',
'nowiki_tip' => 'Hunsa wiki-snið',
'image_sample' => 'Sýnishorn.jpg',
@@ -790,12 +831,15 @@ Vinsamlegast tilgreindu allt að ofanverðu í fyrirspurnum þínum.",
'whitelistedittext' => 'Þú þarft að $1 til að breyta síðum.',
'confirmedittext' => 'Þú verður að staðfesta netfangið þitt áður en þú getur breytt síðum. Vinsamlegast stilltu og staðfestu netfangið þitt í gegnum [[Special:Preferences|stillingarnar]].',
'nosuchsectiontitle' => 'Hluti ekki til',
-'nosuchsectiontext' => 'Það hefur komið upp villa.',
+'nosuchsectiontext' => 'Þú reyndir að breyta hluta sem er ekki til.
+Hlutinn gæti hafa verið fluttur til eða hent á meðan þú varst að skoða síðuna.',
'loginreqtitle' => 'Innskráningar krafist',
'loginreqlink' => 'innskrá',
'loginreqpagetext' => 'Þú þarft að $1 til að geta séð aðrar síður.',
'accmailtitle' => 'Lykilorð sent.',
-'accmailtext' => 'Lykilorðið fyrir „$1“ hefur verið sent á $2.',
+'accmailtext' => "Lykilorðið fyrir [[User talk:$1|$1]] hefur verið sent á $2.
+
+Hægt er að breyta lykilorðinu fyrir aðganginn á ''[[Special:ChangePassword|change password]]'' þegar notandinn hefur skráð sig inn.",
'newarticle' => '(Ný)',
'newarticletext' => "Þú hefur fylgt tengli á síðu sem ekki er til.
Þú getur búið til síðu með þessu nafni með því að skrifa í formið fyrir neðan
@@ -811,11 +855,11 @@ Ef þú ert óþekktur notandi og finnst að óviðkomandi athugasemdum hafa ver
'noarticletext-nopermission' => 'Enginn texti er á þessari síðu enn sem komið er.
Þú getur [[Special:Search/{{PAGENAME}}|leitað í öðrum síðum]],
eða <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} leitað í tengdum skrám]</span>.',
-'userpage-userdoesnotexist' => 'Notandaaðgangurinn „$1“ er ekki skráður.
+'userpage-userdoesnotexist' => 'Notandaaðgangurinn „<nowiki>$1</nowiki>“ er ekki skráður.
Gjörðu svo vel og athugaðu hvort að þú viljir skapa/breyta þessari síðu.',
'userpage-userdoesnotexist-view' => 'Notandinn "$1" er ekki skráður.',
'blocked-notice-logextract' => 'Þessi notandi er í banni.
-Síðasta færsla úr bönnunarskrá er sýnd hér fyrir neðan til skýringar:',
+Síðasta færsla notandans úr bönnunarskrá er sýnd hér fyrir neðan til skýringar:',
'clearyourcache' => "Athugaðu - Eftir vistun, má vera að þú þurfir að komast hjá skyndiminni vafrans til að sjá breytingarnar.'''
'''Mozilla / Firefox / Safari:''' haltu ''Shift'' og smelltu á ''Reload'', eða ýttu á annaðhvort ''Ctrl-F5'' eða ''Ctrl-R'' (''Command-R'' á Mac)
'''Google Chrome: '''smelltu á ''Ctrl-Shift-R'' (''Command-Shift-R'' á Mac)
@@ -832,9 +876,11 @@ Síðasta færsla úr bönnunarskrá er sýnd hér fyrir neðan til skýringar:'
'''Hann hefur ekki enn verið vistaður!'''",
'sitejspreview' => "'''Mundu að þú ert aðeins að prófa/forskoða JavaScript-kóðann.'''
'''Hann hefur ekki enn verið vistaður!'''",
+'userinvalidcssjstitle' => "'''Viðvörun:''' Þemað $1 er ekki til. Sérsniðin CSS og JavaScript útlit nota lágstafi, t.d. {{ns:user}}:Foo/vector.css en alls ekki {{ns:user}}:Foo/Vector.css.",
'updated' => '(Uppfært)',
'note' => "'''Athugið:'''",
'previewnote' => "'''Það sem sést hér er aðeins forskoðun og hefur ekki enn verið vistað!'''",
+'previewconflict' => 'Þessi forskoðun endurspeglar textann í efra breytingarsvæði eins og hann myndi líta út ef þú vistar.',
'session_fail_preview' => "'''Því miður! Gat ekki unnið úr breytingum þínum vegna týndra lotugagna.
Vinsamlegast reyndu aftur síðar. Ef það virkar ekki heldur skaltu reyna að skrá þig út og inn á ný.'''",
'session_fail_preview_html' => "'''Því miður gátum við ekki unnið úr breytingu þinni vegna týndra lotugagna.'''
@@ -843,6 +889,10 @@ Vinsamlegast reyndu aftur síðar. Ef það virkar ekki heldur skaltu reyna að
'''Ef þetta er vingjarnleg breyting, reyndu þá aftur.'''
Ef þetta leysir ekki vandamálið, reyndu að [[Special:UserLogout|skrá þig út]] og skrá þig aftur inn.",
+'token_suffix_mismatch' => "'''Breytingu þinni hefur verið hafnað því að biðlarinn þinn ruglaði greinarmerkingum í breytingar tókanum.\"
+Þetta er gert til að hindra spillingu texta síðunnar.
+Þetta getur gerst þegar þú notar bilaðan vafra eða ónafngreinda vefsels þjónustu.",
+'edit_form_incomplete' => "'''Sumir hlutar breytingarinnar bárust ekki til vefþjónsins; athugaðu hvort breytingin þín er óbreytt og reyndu aftur.'''",
'editing' => 'Breyti $1',
'editingsection' => 'Breyti $1 (hluta)',
'editingcomment' => 'Breyti $1 (nýr hluti)',
@@ -851,6 +901,8 @@ Ef þetta leysir ekki vandamálið, reyndu að [[Special:UserLogout|skrá þig Ã
'''Aðeins''' texti úr efri reitnum mun vera vistaður þegar þú vistar.",
'yourtext' => 'Þinn texti',
'storedversion' => 'Geymd útgáfa',
+'nonunicodebrowser' => "'''Viðvörun: Vafrarinn þinn styður ekki unicode.'''
+Lausn er í gildi sem leyfir þér að breyta síðum: Stafatákn sem eru ekki í ASCII kerfinu birtast í breytingarglugganum eins og sextándakóðar.",
'editingold' => "'''ATH: Þú ert að breyta gamalli útgáfu þessarar síðu og munu allar breytingar sem gerðar hafa verið á henni frá þeirri útgáfu vera fjarlægðar ef þú vistar.'''",
'yourdiff' => 'Mismunur',
'copyrightwarning' => "Vinsamlegast athugaðu að öll framlög á {{SITENAME}} eru álitin leyfisbundin samkvæmt $2 (sjá $1 fyrir frekari upplýsingar). Ef þú vilt ekki að skrif þín falli undir þetta leyfi og öllum verði frjálst að breyta og endurútgefa efnið samkvæmt því skaltu ekki leggja þau fram hér.<br />
@@ -865,9 +917,13 @@ Ef þú vilt ekki að textanum verði breytt skaltu ekki senda hann inn hér.<br
Þú kannt að vilja að klippa og líma textann í textaskjal og vista hann fyrir síðar.'''
Stjórnandinn sem læsti honum gaf þessa skýringu: $1",
-'protectedpagewarning' => "'''Viðvörun: Þessari síðu hefur verið læst svo aðeins notendur með möppudýraréttindi geti breytt henni.'''",
-'semiprotectedpagewarning' => "'''Athugið''': Þessari síðu hefur verið læst þannig að aðeins innskráðir notendur geti breytt henni.",
-'titleprotectedwarning' => "'''VIÃVÖRUN: Þessari síðu hefur verið læst svo aðeins [[Special:ListGroupRights|sérstakir notendur]] geta breytt henni.'''",
+'protectedpagewarning' => "'''Viðvörun: Þessari síðu hefur verið læst svo aðeins notendur með möppudýraréttindi geti breytt henni.'''
+Síðasta færsla síðunnar úr verndunarskrá er sýnd til skýringar:",
+'semiprotectedpagewarning' => "'''Athugið''': Þessari síðu hefur verið læst þannig að aðeins innskráðir notendur geti breytt henni.
+Síðasta færsla síðunnar úr verndunarskrá er sýnd til skýringar:",
+'cascadeprotectedwarning' => "'''Viðvörun:''' Þessari síðu hefur verið læst svo aðeins möppudýr geta breytt henni, því hún er innifalin í keðjuvörn eftirfarandi {{PLURAL:$1|síðu|síðna}}:",
+'titleprotectedwarning' => "''VIÃVÖRUN: Þessari síðu hefur verið læst svo aðeins [[Special:ListGroupRights|sérstakir notendur]] geta breytt henni.'''
+Verndunarskrá síðunnar er gefin fyrir neðan til tilvísunar.",
'templatesused' => 'Snið {{PLURAL:$1|notað|notuð}} á þessari síðu:',
'templatesusedpreview' => 'Snið {{PLURAL:$1|notað|notuð}} í forskoðuninni:',
'templatesusedsection' => 'Snið {{PLURAL:$1|notað|notuð}} í þessum hluta:',
@@ -878,6 +934,8 @@ Stjórnandinn sem læsti honum gaf þessa skýringu: $1",
'nocreatetext' => '{{SITENAME}} hefur takmarkað eiginleikann að gera nýjar síður.
Þú getur farið til baka og breytt núverandi síðum, eða [[Special:UserLogin|skráð þið inn eða búið til aðgang]].',
'nocreate-loggedin' => 'Þú hefur ekki leyfi til að skapa nýjar síður.',
+'sectioneditnotsupported-title' => 'Hlutabreyting er ekki virk',
+'sectioneditnotsupported-text' => 'Hlutabreyting er ekki virk á þessari síðu.',
'permissionserrors' => 'Leyfisvillur',
'permissionserrorstext' => 'Þú hefur ekki leyfi til að gera þetta, af eftirfarandi {{PLURAL:$1|ástæðu|ástæðum}}:',
'permissionserrorstext-withaction' => 'Þú hefur ekki réttindi til að $2, af eftirfarandi {{PLURAL:$1|ástæðu|ástæðum}}:',
@@ -887,6 +945,7 @@ Athuga skal hvort viðeigandi sé að gera þessa síðu.
Eyðingarskrá og flutningaskrá fyrir þessa síðu eru útvegaðar hér til þæginda:",
'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-gone-missing' => 'Gat ekki uppfært síðu.
Svo virðist sem henni hafi verið eytt.',
'edit-conflict' => 'Breytingaárekstur.',
@@ -895,9 +954,16 @@ Svo virðist sem henni hafi verið eytt.',
Hún er nú þegar til.',
# Parser/template warnings
+'expensive-parserfunction-warning' => "'''Viðvörun:''' Þessi síða inniheldur of mörg vinnslufrek aðgerðar þáttunar köll.
+
+Hún ætti að innihalda minna en $2 {{PLURAL:$2|kall|köll}}, en {{PLURAL:$1|er nú eitt kall|eru nú $1 köll}}.",
+'expensive-parserfunction-category' => 'Síður með of mörg vinnslufrek aðgerðar þáttunar köll',
'post-expand-template-inclusion-warning' => "'''Viðvörun:''' Sniðið tekur of mikið pláss.
Hluti sniðsins verður ekki með.",
'post-expand-template-inclusion-category' => 'Síður þar sem eru stærri en stærðartakmörkun sniða segir til um',
+'post-expand-template-argument-warning' => "'''Viðvörun:''' Þessi síða inniheldur í minnsta lagi eitt vinnslufrekt frumgildi.
+Þeim hefur verið sleppt.",
+'post-expand-template-argument-category' => 'Síður sem innihalda frumbreytur sniða sem hefur verið sleppt',
'parser-template-loop-warning' => 'Lykkja í sniði fundin: [[$1]]',
# "Undo" feature
@@ -946,7 +1012,7 @@ Möglegt er að henni hafi verið eytt út af þessari wiki síðu, eða endurne
Prófaðu [[Special:Search|að leita á þessari wiki síðu]] að svipuðum síðum.',
# Revision deletion
-'rev-deleted-comment' => '(athugasemd fjarlægð)',
+'rev-deleted-comment' => '(breytingarágrip fjarlægt)',
'rev-deleted-user' => '(notandanafn fjarlægt)',
'rev-deleted-event' => '(skráarbreyting fjarlægð)',
'rev-deleted-user-contribs' => '[notandanafn eða vistfang falið - breyting falin í framlögum]',
@@ -955,8 +1021,13 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
'rev-deleted-text-unhide' => "Þessari útgáfu síðunnar hefur verið '''eytt'''.
Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} eyðingaskrá].
Þú getur enn skoðað [$1 þessa útgáfu] ef þú vilt halda áfram.",
+'rev-suppressed-text-unhide' => "Þessari útgáfu síðunnar hefur verið '''bæld niður'''.
+Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} bælingarskrá].
+Þú getur enn skoðað [$1 þessa útgáfu] ef þú vilt halda áfram.",
'rev-deleted-text-view' => "Þessari útgáfu síðunnar hefur verið '''eytt'''.
Þú getur enn skoðað hana; frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} eyðingaskrá].",
+'rev-suppressed-text-view' => "Þessari útgáfu síðunnar hefur verið '''bæld niður'''.
+Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} bælingarskrá].",
'rev-delundel' => 'sýna/fela',
'rev-showdeleted' => 'sýna',
'revisiondelete' => 'Eyða/endurvekja breytingar',
@@ -972,14 +1043,16 @@ Frekari upplýsingar eru í [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENA
'revdelete-hide-name' => 'Fela aðgerð og mark',
'revdelete-hide-comment' => 'Fela breytingaathugasemdir',
'revdelete-hide-user' => 'Fela notandanafn/vistfang',
-'revdelete-hide-restricted' => 'Setja þessar hömlur á fyrir stjórnendur og læsa viðmótinu',
+'revdelete-hide-restricted' => 'Dylja gögn frá stjórnendum og öðrum',
'revdelete-radio-same' => '(ekki breyta)',
'revdelete-radio-set' => 'Já',
'revdelete-radio-unset' => 'Nei',
'revdelete-suppress' => 'Dylja gögn frá stjórnendum og öðrum',
'revdelete-log' => 'Ãstæða:',
-'revdelete-submit' => 'Setja á valda breytingu',
+'revdelete-submit' => 'Setja á {{PLURAL:$1|valda breytingu|valdar breytingar}}',
'revdel-restore' => 'Breyta sýn',
+'revdel-restore-deleted' => 'eyddar breytingar',
+'revdel-restore-visible' => 'sýnilegar breytingar',
'pagehist' => 'Breytingaskrá',
'deletedhist' => 'Eyðingaskrá',
'revdelete-content' => 'efni',
@@ -1000,17 +1073,21 @@ Sjáðu til þess að þessi breyting sameini breytingarskrárnar samfellt.',
'mergehistory-list' => 'Breytingarskrá sem hægt er að sameina',
# Merge log
-'mergelog' => 'Sameina skrá',
-'revertmerge' => 'Taka aftur sameiningu',
+'mergelog' => 'Sameiningar skrá',
+'pagemerge-logentry' => 'sameinaði [[$1]] við [[$2]] (útgáfur frá $3)',
+'revertmerge' => 'Taka aftur sameiningu',
+'mergelogpagetext' => 'Þetta er skrá yfir síðustu sameiningar einnar síðu við aðra.',
# Diffs
'history-title' => 'Breytingaskrá fyrir "$1"',
'difference' => '(Munur milli útgáfa)',
+'difference-multipage' => '(Munur á milli síðna)',
'lineno' => 'Lína $1:',
'compareselectedversions' => 'Bera saman valdar útgáfur',
'showhideselectedversions' => 'Sýna/fela valdar breytingar',
'editundo' => 'Taka aftur þessa breytingu',
'diff-multi' => '({{PLURAL:$1|Ein millibreyting ekki sýnd|$1 millibreytingar ekki sýndar}} frá {{PLURAL:$2|notanda|$2 notendum}}.)',
+'diff-multi-manyusers' => '({{PLURAL:$1|Ein millibreyting ekki sýnd|$1 millibreytingar ekki sýndar}} frá fleiri en {{PLURAL:$2|einum notanda|$2 notendum}}.)',
# Search results
'searchresults' => 'Leitarniðurstöður',
@@ -1062,6 +1139,7 @@ Sjáðu til þess að þessi breyting sameini breytingarskrárnar samfellt.',
'searchall' => 'öllum',
'showingresults' => "Sýni {{PLURAL:$1|'''1''' niðurstöðu|'''$1''' niðurstöður}} frá og með #'''$2'''.",
'showingresultsnum' => "Sýni {{PLURAL:$3|'''$3''' niðurstöðu|'''$3''' niðurstöður}} frá og með #<b>$2</b>.",
+'showingresultsheader' => "{{PLURAL:$5|Niðurstaða '''$1''' af '''$3'''|Niðurstöður'''$1 - $2''' af '''$3'''}} fyrir '''$4'''",
'nonefound' => "'''Athugaðu''': Það er aðeins leitað í sumum nafnrýmum sjálfkrafa. Prófaðu að setja forskeytið ''all:'' í fyrirspurnina til að leita í öllu efni (þar á meðal notandaspjallsíðum, sniðum, o.s.frv.), eða notaðu tileigandi nafnrými sem forskeyti.",
'search-nonefound' => 'Engar niðurstöður pössuðu við fyrirspurnina.',
'powersearch' => 'Ãtarleg leit',
@@ -1078,12 +1156,13 @@ Sjáðu til þess að þessi breyting sameini breytingarskrárnar samfellt.',
Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
# Quickbar
-'qbsettings' => 'Valblað',
-'qbsettings-none' => 'Sleppa',
-'qbsettings-fixedleft' => 'Fast vinstra megin',
-'qbsettings-fixedright' => 'Fast hægra megin',
-'qbsettings-floatingleft' => 'Fljótandi til vinstri',
-'qbsettings-floatingright' => 'Fljótandi til hægri',
+'qbsettings' => 'Valblað',
+'qbsettings-none' => 'Sleppa',
+'qbsettings-fixedleft' => 'Fast vinstra megin',
+'qbsettings-fixedright' => 'Fast hægra megin',
+'qbsettings-floatingleft' => 'Fljótandi til vinstri',
+'qbsettings-floatingright' => 'Fljótandi til hægri',
+'qbsettings-directionality' => 'Lagað, fer eftir því í hvaða átt er skrifað á þínu tungumáli.',
# Preferences page
'preferences' => 'Stillingar',
@@ -1094,9 +1173,10 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
'changepassword' => 'Breyta lykilorði',
'prefs-skin' => 'Þema',
'skin-preview' => 'Forskoða',
-'prefs-math' => 'Stærðfræðiformúlur',
'datedefault' => 'Sjálfgefið',
+'prefs-beta' => 'Stillingar á prufustigi',
'prefs-datetime' => 'Tímasnið og tímabelti',
+'prefs-labs' => 'Stillingar á tilraunastigi',
'prefs-personal' => 'Notandaupplýsingar',
'prefs-rc' => 'Nýlegar breytingar',
'prefs-watchlist' => 'Vaktlistinn',
@@ -1104,6 +1184,7 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
'prefs-watchlist-days-max' => 'Hámark 7 dagar',
'prefs-watchlist-edits' => 'Fjöldi breytinga sem vaktlistinn nær yfir:',
'prefs-watchlist-edits-max' => 'Hámarkstala: 1000',
+'prefs-watchlist-token' => 'Tóki vaktlistans:',
'prefs-misc' => 'Aðrar stillingar',
'prefs-resetpass' => 'Breyta lykilorði',
'prefs-email' => 'Tölvupóststillingar',
@@ -1117,17 +1198,18 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
'columns' => 'Dálkar',
'searchresultshead' => 'Leit',
'resultsperpage' => 'Niðurstöður á síðu',
-'contextlines' => 'Línur á hverja niðurstöðu',
-'contextchars' => 'Stafir í samhengi á hverja línu',
'stub-threshold' => 'Þröskuldur fyrir sniði <a href="#" class="stub">stubbatengla</a> (bæt):',
'stub-threshold-disabled' => 'Óvirkt',
-'recentchangesdays' => 'Hve marga daga á að sýna í nýlegum breytingum:',
+'recentchangesdays' => 'Fjöldi daga sem nýlegar breytingar ná yfir:',
'recentchangesdays-max' => '(hámark $1 {{PLURAL:$1|dag|daga}})',
'recentchangescount' => 'Fjöldi síðna:',
'prefs-help-recentchangescount' => 'Taldar eru með nýlegar breytingar, breytingarskrár og aðgerðarskrár.',
+'prefs-help-watchlist-token' => 'Með því að fylla út þennan reit með leynilegum lykli býr til RSS-efnistraum fyrir vaktlistann þinn. Allir sem vita hver lykillinn er geta lesið vaktlistann þinn, svo veldu öruggt eigindargildi.
+Hér er gildi sem var valið af handahófi sem þú getur notað: $1',
'savedprefs' => 'Stillingarnar þínar hafa verið vistaðar.',
'timezonelegend' => 'Tímabelti:',
'localtime' => 'Staðartími:',
+'timezoneuseserverdefault' => 'Nota sjálfgefið tímabelti ($1)',
'timezoneuseoffset' => 'Annað (tilgreinið tímamismun)',
'timezoneoffset' => 'Hliðrun¹:',
'servertime' => 'Tími netþjóns:',
@@ -1149,6 +1231,10 @@ Athugaðu að skrár þeirra yfir {{SITENAME}}-efni kunna að vera úreltar.',
'default' => 'sjálfgefið',
'prefs-files' => 'Skrár',
'prefs-custom-css' => 'Sérsniðið CSS-útlit',
+'prefs-custom-js' => 'Sérsniðin JavaScript',
+'prefs-common-css-js' => 'Sérsniðin útlit fyrir öll þemu:',
+'prefs-reset-intro' => 'Þessi síða er til að endurstilla stillingarnar til sjálfgefnum gildum.
+Ekki er hægt að taka þessa breytingu til baka.',
'prefs-emailconfirm-label' => 'Staðfesting netfangs:',
'prefs-textboxsize' => 'Stærð breytingarglugga',
'youremail' => 'Netfang:',
@@ -1172,39 +1258,50 @@ Hún þarf að vera færri en $1 {{PLURAL:$1|stafur|stafir}}.',
'email' => 'Tölvupóstur',
'prefs-help-realname' => 'Alvöru nafn er valfrjálst.
Ef þú kýst að gefa það upp, verður það notað til að gefa þér heiður af verkum þínum.',
-'prefs-help-email' => 'Tölvupóstfang er valfrjálst, en gerir það kleift að fá nýtt lykilorð sent ef þú gleymir lykilorðinu þínu.
-Þú getur einnig leyft öðrum að hafa samband við þig á notanda- eða spjallsíðunni þinni án þess að opinbera þig.',
+'prefs-help-email' => 'Tölvupóstfang er valfrjálst, en gerir þér kleift að fá nýtt lykilorð ef þú gleymir lykilorðinu þínu.',
+'prefs-help-email-others' => 'Þú getur einnig valið að láta aðra hafa samband við þig með tölvupósti í gegnum tengil á notendasíðu eða notendaspjallsíðu þinni.
+Tölvupóstfang þitt er ekki gefið upp þegar aðrir notendur hafa samband við þig.',
'prefs-help-email-required' => 'Þörf er á netfangi.',
'prefs-info' => 'Undirstöðuupplýsingar',
'prefs-i18n' => 'Alþjóðavæðing',
'prefs-signature' => 'Undirskrift',
'prefs-dateformat' => 'Dagasnið',
'prefs-timeoffset' => 'Tímamismunur',
+'prefs-advancedediting' => 'Háþróaðir möguleikar',
+'prefs-advancedrc' => 'Háþróaðir möguleikar',
+'prefs-advancedrendering' => 'Háþróaðir möguleikar',
+'prefs-advancedsearchoptions' => 'Háþróaðir möguleikar',
+'prefs-advancedwatchlist' => 'Háþróaðir möguleikar',
+'prefs-displayrc' => 'Útlitsmöguleikar',
+'prefs-displaysearchoptions' => 'Útlitsmöguleikar',
+'prefs-displaywatchlist' => 'Útlitsmöguleikar',
+'prefs-diffs' => 'Breytingar',
# User preference: e-mail validation using jQuery
'email-address-validity-valid' => 'Netfang virðist vera virkt.',
'email-address-validity-invalid' => 'Settu inn rétt netfang',
# User rights
-'userrights' => 'Breyta notandaréttindum',
-'userrights-lookup-user' => 'Yfirlit notandahópa',
-'userrights-user-editname' => 'Skráðu notandanafn:',
-'editusergroup' => 'Breyta notandahópum',
-'editinguser' => "Breyti réttindum '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Breyta notandahópum',
-'saveusergroups' => 'Vista notandahóp',
-'userrights-groupsmember' => 'Meðlimur:',
-'userrights-groups-help' => 'Þú getur breytt hópunum sem að þessi notandi er í.
+'userrights' => 'Breyta notandaréttindum',
+'userrights-lookup-user' => 'Yfirlit notandahópa',
+'userrights-user-editname' => 'Skráðu notandanafn:',
+'editusergroup' => 'Breyta notandahópum',
+'editinguser' => "Breyti réttindum '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Breyta notandahópum',
+'saveusergroups' => 'Vista notandahóp',
+'userrights-groupsmember' => 'Meðlimur:',
+'userrights-groupsmember-auto' => 'Sjálfvirkt bætt við sem meðlimur í:',
+'userrights-groups-help' => 'Þú getur breytt hópunum sem að þessi notandi er í.
* Valinn reitur þýðir að notandinn er í hópnum.
* Óvalinn reitur þýðir að notandinn er ekki í hópnum.
* Stjarnan (*) þýðir að þú getur ekki fært hópinn eftir að þú hefur breytt honum, eða öfugt.',
-'userrights-reason' => 'Ãstæða:',
-'userrights-no-interwiki' => 'Þú hefur ekki leyfi til að breyta notandaréttindum á öðrum wiki-síðum.',
-'userrights-nodatabase' => 'Gagnagrunnurinn $1 er ekki til eða ekki staðbundinn.',
-'userrights-nologin' => 'Þú verður að [[Special:UserLogin|innskrá]] þig á möppudýraaðgang til að geta útdeilt notandaréttindum.',
-'userrights-notallowed' => 'Þinn aðgangur hefur ekki réttindi til að útdeila notandaréttindum.',
-'userrights-changeable-col' => 'Hópar sem þú getur breytt',
-'userrights-unchangeable-col' => 'Hópar sem þú getur ekki breytt',
+'userrights-reason' => 'Ãstæða:',
+'userrights-no-interwiki' => 'Þú hefur ekki leyfi til að breyta notandaréttindum á öðrum wiki-síðum.',
+'userrights-nodatabase' => 'Gagnagrunnurinn $1 er ekki til eða ekki staðbundinn.',
+'userrights-nologin' => 'Þú verður að [[Special:UserLogin|innskrá]] þig á möppudýraaðgang til að geta útdeilt notandaréttindum.',
+'userrights-notallowed' => 'Þinn aðgangur hefur ekki réttindi til að útdeila notandaréttindum.',
+'userrights-changeable-col' => 'Hópar sem þú getur breytt',
+'userrights-unchangeable-col' => 'Hópar sem þú getur ekki breytt',
# Groups
'group' => 'Hópur:',
@@ -1233,26 +1330,30 @@ Ef þú kýst að gefa það upp, verður það notað til að gefa þér heiðu
# Rights
'right-read' => 'Lesa síður',
'right-edit' => 'Breyta síðum',
-'right-createpage' => 'Gera síður (sem eru ekki spjallsíður)',
-'right-createtalk' => 'Gera spjallsíður',
-'right-createaccount' => 'Gera nýja notandaaðganga',
+'right-createpage' => 'Skapa síður (sem eru ekki spjallsíður)',
+'right-createtalk' => 'Skapa spjallsíður',
+'right-createaccount' => 'Stofna nýja notandaaðganga',
'right-minoredit' => 'Merkja sem minniháttarbreytingar',
'right-move' => 'Færa síður',
'right-move-subpages' => 'Færa síður með undirsíðum þeirra',
+'right-move-rootuserpages' => 'Færa notandasíður',
'right-movefile' => 'Færa skrár',
'right-suppressredirect' => 'Ekki búa til tilvísun frá gamla nafninu þegar síða er færð',
'right-upload' => 'Hlaða inn skrám',
'right-reupload' => 'Yfirrita núverandi skrá',
'right-reupload-own' => 'Yfirrita núverandi skrá sem að ég hlóð inn sjálf(ur)',
+'right-reupload-shared' => 'Hunsa skrár á sameiginlegu myndasafni staðbundið',
'right-upload_by_url' => 'Hlaða inn skrám frá vefslóð',
'right-purge' => 'Hreinsa skyndiminni síðu án staðfestingar',
'right-autoconfirmed' => 'Breyta hálfvernduðum síðum',
'right-bot' => 'Eru meðhöndlaðir eins og sjálfvirk aðgerð',
'right-nominornewtalk' => 'Ekki láta minniháttar breytingar á spjallsíðum kveða upp áminningu um ný skilaboð',
'right-apihighlimits' => 'Setja hærri mörk á fjölda API fyrirspurna',
+'right-writeapi' => 'Nota API skrifun',
'right-delete' => 'Eyða síðum',
'right-bigdelete' => 'Eyða síðum með stórum breytingaskrám',
'right-deleterevision' => 'Eyða og endurvekja sérstaka breytignar á síðum',
+'right-deletedhistory' => 'Skoða eyddar færslur úr breytingarskrá, án efnis þeirra',
'right-deletedtext' => 'Sjá eyddan texta og breytingar á milli eyddra útgáfna',
'right-browsearchive' => 'Leita í eyddum síðum',
'right-undelete' => 'Endurvekja eydda síðu',
@@ -1261,6 +1362,7 @@ Ef þú kýst að gefa það upp, verður það notað til að gefa þér heiðu
'right-block' => 'Banna öðrum notendum að gera breytingar',
'right-blockemail' => 'Banna notanda að senda tölvupóst',
'right-hideuser' => 'Banna notandanafn, og þannig fela það frá almenningi',
+'right-ipblock-exempt' => 'Hunsa bönn vistfanga, sjálfvirk bönn og fjöldabönn',
'right-proxyunbannable' => 'Sneiða hjá sjálfvirkum proxy-bönnum',
'right-unblockself' => 'Afbanna sjálfan sig',
'right-protect' => 'Breyta verndunarstigi og breyta vernduðum síðum',
@@ -1270,10 +1372,13 @@ Ef þú kýst að gefa það upp, verður það notað til að gefa þér heiðu
'right-editusercss' => 'Breyta CSS-skrám annarra',
'right-edituserjs' => 'Breyta JS-skrám annarra',
'right-rollback' => 'Taka snögglega aftur breytingar síðasta notanda sem breytti síðunni',
+'right-markbotedits' => 'Merkja endurtektar breytingar sem vélmennabreytingar',
'right-noratelimit' => 'Sneiða hjá takmörkunum',
'right-import' => 'Flytja inn síður frá öðrum wiki',
+'right-importupload' => 'Flytja inn síður frá skráar upphali',
'right-patrol' => 'Merkja breytingar annara sem yfirfarnar',
'right-autopatrol' => 'Egin breytingar merktar sem yfirfarnar',
+'right-patrolmarks' => 'Skoða yfirferðir nýlegra breytinga',
'right-unwatchedpages' => 'Skoða lista yfir óvaktaðar síður',
'right-mergehistory' => 'Sameina breytingarskrá síðna',
'right-userrights' => 'Breyta öllum notandaréttindum',
@@ -1283,10 +1388,11 @@ Ef þú kýst að gefa það upp, verður það notað til að gefa þér heiðu
'right-sendemail' => 'Senda tölvupóst til annara notenda',
# User rights log
-'rightslog' => 'Réttindaskrá notenda',
-'rightslogtext' => 'Þetta er skrá yfir breytingar á réttindum notenda.',
-'rightslogentry' => 'breytti réttindum $1 frá $2 í $3',
-'rightsnone' => '(engin)',
+'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',
@@ -1297,10 +1403,13 @@ Ef þú kýst að gefa það upp, verður það notað til að gefa þér heiðu
'action-minoredit' => 'merkja þessa breytingu sem minniháttar',
'action-move' => 'færa þessa síðu',
'action-move-subpages' => 'færa þessa síðu, og undirsíður hennar',
+'action-move-rootuserpages' => 'Færa notandasíður',
'action-movefile' => 'færa þessa skrá',
'action-upload' => 'hlaða inn þessari skrá',
'action-reupload' => 'yfirrita þessa skrá',
+'action-reupload-shared' => 'Hunsa þessa skrá á sameiginlega myndasafninu',
'action-upload_by_url' => 'hlaða inn þessari skrá frá vefslóð',
+'action-writeapi' => 'Nota API skrifun',
'action-delete' => 'eyða þessari síðu',
'action-deleterevision' => 'eyða þessari breytingu',
'action-deletedhistory' => 'skoða breytingaskrá þessarar síðu',
@@ -1311,6 +1420,8 @@ Ef þú kýst að gefa það upp, verður það notað til að gefa þér heiðu
'action-block' => 'Banna notandanum að gera breytingar',
'action-protect' => 'breyta verndunarstigum fyrir þessa síðu',
'action-import' => 'Flytja inn þessa skrá frá öðrum wiki',
+'action-importupload' => 'Flytja inn þessa síðu frá skráar upphali',
+'action-patrol' => 'Merkja breytingar annara sem yfirfarnar',
'action-autopatrol' => 'Merkja eigin breytingu sem yfirfarna',
'action-unwatchedpages' => 'Skoða lista yfir óvaktaðar síður',
'action-mergehistory' => 'Sameina breytingarskrá þessarar síðu',
@@ -1364,92 +1475,194 @@ Síður á [[Special:Watchlist|vaktlistanum þínum]] eru '''feitletraðar'''.",
'recentchangeslinked-to' => 'Sýna breytingar á síðum sem tengjast uppgefinni síðu í staðinn',
# Upload
-'upload' => 'Hlaða inn skrá',
-'uploadbtn' => 'Hlaða inn skrá',
-'reuploaddesc' => 'Aftur á innhlaðningarformið.',
-'uploadnologin' => 'Óinnskráð(ur)',
-'uploadnologintext' => 'Þú verður að vera [[Special:UserLogin|skráð(ur) inn]]
+'upload' => 'Hlaða inn skrá',
+'uploadbtn' => 'Hlaða inn skrá',
+'reuploaddesc' => 'Aftur á innhlaðningarformið.',
+'upload-tryagain' => 'Sendu breytta myndlýsingu',
+'uploadnologin' => 'Óinnskráð(ur)',
+'uploadnologintext' => 'Þú verður að vera [[Special:UserLogin|skráð(ur) inn]]
til að hlaða inn skrám.',
-'uploaderror' => 'Villa í innhlaðningu',
-'uploadtext' => "Notaðu eyðublaðið hér fyrir neðan til að hlaða inn skrám.
+'upload_directory_missing' => 'Mappa upphlaða ($1) er týnd og vefþjónninn gat ekki búið hana til.',
+'upload_directory_read_only' => 'Mistókst að skrifa í möppu upphlaða ($1) á vefþjóni.',
+'uploaderror' => 'Villa í innhlaðningu',
+'upload-recreate-warning' => "'''Viðvörun: Skrá með þessu nafni hefur verið eytt eða færð.'''
+
+Síðasta færsla skráarinnar úr bönnunarskrá og flutningskrá er sýnd hér fyrir neðan til skýringar:",
+'uploadtext' => "Notaðu eyðublaðið hér fyrir neðan til að hlaða inn skrám.
Til að skoða eða leita í áður innhlöðnum skrám ferðu á [[Special:FileList|skráarlistann]], (endur)innhlaðnar skrár eru skráðar í [[Special:Log/upload|innhlaðningarskránni]], eyðingar í [[Special:Log/delete|eyðingaskránni]].
* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Skrá.jpg]]</nowiki></tt>''' til að sýna skránna í fullri upplausn.
* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Skrá.png|200px|thumb|left|alt-texti]]</nowiki></tt>''' til að nota 200 díla upplausn í kassa, sett til vinstri með 'alt text' sem myndlýsingu.
* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Skrá.ogg]]</nowiki></tt>''' til að tengja í myndina án þess að sýna hana.",
-'upload-permitted' => 'Heimilaðar skráargerðir: $1.',
-'upload-preferred' => 'Ãkjósanlegustu skrárgerðirnar: $1.',
-'upload-prohibited' => 'Óheimiluð skrárgerð: $1.',
-'uploadlog' => 'innhlaðningarskrá',
-'uploadlogpage' => 'Innhlaðningarskrá',
-'uploadlogpagetext' => 'Fyrir neðan er listi yfir nýlegustu innhlöðnu skrárnar.
+'upload-permitted' => 'Heimilaðar skráargerðir: $1.',
+'upload-preferred' => 'Ãkjósanlegustu skrárgerðirnar: $1.',
+'upload-prohibited' => 'Óheimiluð skrárgerð: $1.',
+'uploadlog' => 'innhlaðningarskrá',
+'uploadlogpage' => 'Innhlaðningarskrá',
+'uploadlogpagetext' => 'Fyrir neðan er listi yfir nýlegustu innhlöðnu skrárnar.
Sjá [[Special:NewFiles|myndasafn nýrra mynda]] fyrir myndrænna yfirlit.',
-'filename' => 'Skráarnafn',
-'filedesc' => 'Lýsing',
-'fileuploadsummary' => 'Ãgrip:',
-'filereuploadsummary' => 'Skráarbreytingar:',
-'filestatus' => 'Staða höfundaréttar:',
-'filesource' => 'Heimild:',
-'uploadedfiles' => 'Hlóð inn skráunum',
-'ignorewarning' => 'Hunsa viðvaranir og vista þessa skrá',
-'ignorewarnings' => 'Hunsa allar viðvaranir',
-'minlength1' => 'Skráarnöfn þurfa að vera að minnsta kosti einn stafur að lengd',
-'illegalfilename' => 'Skráarnafnið „$1“ inniheldur stafi sem eru ekki leyfðir í síðutitlum.
+'filename' => 'Skráarnafn',
+'filedesc' => 'Lýsing',
+'fileuploadsummary' => 'Ãgrip:',
+'filereuploadsummary' => 'Skráarbreytingar:',
+'filestatus' => 'Staða höfundaréttar:',
+'filesource' => 'Heimild:',
+'uploadedfiles' => 'Hlóð inn skráunum',
+'ignorewarning' => 'Hunsa viðvaranir og vista þessa skrá',
+'ignorewarnings' => 'Hunsa allar viðvaranir',
+'minlength1' => 'Skráarnöfn þurfa að vera að minnsta kosti einn stafur að lengd',
+'illegalfilename' => 'Skráarnafnið „$1“ inniheldur stafi sem eru ekki leyfðir í síðutitlum.
Gjörðu svo vel og endurnefndu skrána og hladdu henni inn aftur.',
-'badfilename' => 'Skáarnafninu hefur verið breytt í „$1“.',
-'filetype-badmime' => 'Skrárir af MIME-gerðinni „$1“ er ekki leyfilegt að hlaða inn.',
-'filetype-unwanted-type' => "'''„.$1“''' er óæskileg skráargerð.
+'badfilename' => 'Skáarnafninu hefur verið breytt í „$1“.',
+'filetype-mime-mismatch' => 'Skráarendingin ".$1" samræmist ekki MIME gerð skráarinnar ($2).',
+'filetype-badmime' => 'Skrárir af MIME-gerðinni „$1“ er ekki leyfilegt að hlaða inn.',
+'filetype-bad-ie-mime' => 'Mistókst að hlaða inn skrá því Internet Explorer myndi uppgvötva hana sem "$1" sem er óheimil og mögulega hættulegt skráarsnið.',
+'filetype-unwanted-type' => "'''„.$1“''' er óæskileg skráargerð.
{{PLURAL:$3|Ãkjósanleg skráargerð er|Ãkjósanlegar skráargerðir eru}} $2.",
-'filetype-banned-type' => "'''„.$1“''' er ekki leyfileg skráargerð.
+'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|er ekki leifileg skráargerð|eru ekki leifilegar skráargerðir}}.
{{PLURAL:$3|Leyfileg skráargerð er|Leyfilegar skráargerðir eru}} $2.",
-'filetype-missing' => 'Skráin hefur engan viðauka (dæmi ".jpg").',
-'empty-file' => 'Skráin sem þú valdir var tóm.',
-'file-too-large' => 'Skráin sem þú valdir er of stór.',
-'filename-tooshort' => 'Skráarnafnið er of stutt',
-'filetype-banned' => 'Þessi skráarending er bönnuð.',
-'illegal-filename' => 'Þetta skráarnafn er ekki leyft.',
-'overwrite' => 'Óheimilt er að skrifa yfir skrá sem er þegar til.',
-'unknown-error' => 'Óþekkt villa kom upp.',
-'tmp-create-error' => 'Gat ekki búið til tímabundna skrá.',
-'tmp-write-error' => 'Villa við skrifun tímabundinnar skrár.',
-'large-file' => 'Það er mælt með að skrár séu ekki stærri en $1; þessi skrá er $2.',
-'fileexists' => "Skrá með þessu nafni er þegar til, skoðaðu '''<tt>[[:$1]]</tt>''' ef þú ert óviss um hvort þú viljir breyta henni, ekki verður skrifað yfir gömlu skránna hlaðiru inn nýrri með sama nafni heldur verður núverandi útgáfa geymd í útgáfusögu.
+'filetype-missing' => 'Skráin hefur engan viðauka (dæmi ".jpg").',
+'empty-file' => 'Skráin sem þú valdir var tóm.',
+'file-too-large' => 'Skráin sem þú valdir er of stór.',
+'filename-tooshort' => 'Skráarnafnið er of stutt',
+'filetype-banned' => 'Þessi skráarending er bönnuð.',
+'verification-error' => 'Þessi skrá stóðst ekki sannprófun.',
+'illegal-filename' => 'Þetta skráarnafn er ekki leyft.',
+'overwrite' => 'Óheimilt er að skrifa yfir skrá sem er þegar til.',
+'unknown-error' => 'Óþekkt villa kom upp.',
+'tmp-create-error' => 'Gat ekki búið til tímabundna skrá.',
+'tmp-write-error' => 'Villa við skrifun tímabundinnar skrár.',
+'large-file' => 'Það er mælt með að skrár séu ekki stærri en $1; þessi skrá er $2.',
+'largefileserver' => 'Þessi skrá er of stór. Vefþjónninn getur ekki tekið við skránni.',
+'emptyfile' => 'Skráin sem þú hlóðst inn virðist vera tóm.
+Þetta gæti verið vegna ásláttarvillu í skráarnafninu.
+Vinsamlegast athugaðu hvort þú viljir hlaða skránni inn.',
+'windows-nonascii-filename' => 'Þessi wiki styður ekki skráarnöfn með sérstökum stöfum',
+'fileexists' => "Skrá með þessu nafni er þegar til, skoðaðu '''<tt>[[:$1]]</tt>''' ef þú ert óviss um hvort þú viljir breyta henni, ekki verður skrifað yfir gömlu skránna hlaðiru inn nýrri með sama nafni heldur verður núverandi útgáfa geymd í útgáfusögu.
[[$1|thumb]]",
-'uploadwarning' => 'Aðvörun',
-'savefile' => 'Vista',
-'uploadedimage' => 'hlóð inn „[[$1]]“',
-'overwroteimage' => 'hlóð inn nýrri útgáfu af "[[$1]]"',
-'uploadscripted' => 'Þetta skjal inniheldur (X)HTML eða forskriftu sem gæti valdið villum í vöfrum.',
-'uploadvirus' => 'Skráin inniheldur veiru! Nánari upplýsingar: $1',
-'upload-source' => 'Upprunaleg skrá',
-'sourcefilename' => 'Upprunalegt skráarnafn:',
-'sourceurl' => 'Uppruni:',
-'destfilename' => 'Móttökuskráarnafn:',
-'upload-maxfilesize' => 'Hámarks skráarstærð: $1',
-'upload-description' => 'Myndlýsing',
-'watchthisupload' => 'Vakta þessa skrá',
-'filewasdeleted' => 'Skrá af sama nafni hefur áður verið hlaðið inn og síðan eytt. Þú ættir að athuga $1 áður en þú hleður skránni inn.',
-'upload-success-subj' => 'Innhlaðning tókst',
-
-'upload-proto-error' => 'Vitlaus samskiptaregla',
-'upload-file-error' => 'Innri villa',
-'upload-misc-error' => 'Óþekkt innhleðsluvilla',
-'upload-unknown-size' => 'Óþekkt stærð',
+'filepageexists' => "Myndasíðan fyrir þessa síðu hefur þegar verið búin til '''<tt>[[:$1]]</tt>''', en engin skrá er til með þessu nafni.
+Lýsingin sem þú skrifaðir verður ekki birt á myndasíðunni.
+Til þess að lýsingin geti birst á síðunni, þá þarft þú að breyta síðunni sérstaklega.
+[[$1|thumb]]",
+'fileexists-extension' => "Skrá með svipuðu nafni er til: [[$2|thumb]]
+*Nafn skráarinnar sem hlaða á inn: '''<tt>[[:$1]]</tt>'''
+*Nafn skráarinnar sem er þegar til: '''<tt>[[:$2]]</tt>'''
+Vinsamlegast veldu annað skráarnafn.",
+'fileexists-thumbnail-yes' => "Skráin virðist vera smámynd [[$1|thumb]]
+Vinsamlegast athugaðu skránna '''<tt>[[:$1]]</tt>'''.
+Ef skráin er sama myndin í upprunalegri stærð er ekki þörf á annari smámynd.",
+'file-thumbnail-no' => "Skráin er líklega smámynd, því skráarnafnið byrjar á '''<tt>$1</tt>'''.
+Ef skráin er í fullri upplausn haltu þá áfram að hlaða henni inn, en ef ekki breyttu þá skráarnafninu.",
+'fileexists-forbidden' => 'Skrá með þessu nafni er þegar til og ekki er hægt að skrifa yfir skránna.
+Ef þú villt hlaða inn skránni þinni engu að síður, farðu þá til baka og veldu annað skráarnafn.
+[[File:$1|thumb|center|$1]]',
+'fileexists-shared-forbidden' => 'Skrá með þessu nafni er þegar til í sameiginlega myndasafninu.
+Ef þú villt hlaða inn skránni þinni engu að síður, farðu þá til baka og veldu annað skráarnafn.
+[[File:$1|thumb|center|$1]]',
+'file-exists-duplicate' => 'Þessi skrá er afrit eftirfarandi {{PLURAL:$1|skráar|skráa}}:',
+'file-deleted-duplicate' => 'Afriti þessarar skráar ([[:$1]]) hefur verið eytt.
+Þú ættir að fara yfir eyðingarsögu skráarinnar áður en þú velur að hlaða skránni aftur inn.',
+'uploadwarning' => 'Aðvörun',
+'uploadwarning-text' => 'Vinsamlegast breyttu myndalýsingunni hér fyrir neðan og reyndu aftur.',
+'savefile' => 'Vista',
+'uploadedimage' => 'hlóð inn „[[$1]]“',
+'overwroteimage' => 'hlóð inn nýrri útgáfu af "[[$1]]"',
+'uploaddisabled' => 'Lokað er fyrir að hlaða inn myndum.',
+'copyuploaddisabled' => 'Lokað er fyrir að hlaða inn myndum frá vefslóð.',
+'uploadfromurl-queued' => 'Upphlaðið þitt hefur verið sett í biðröð.',
+'uploaddisabledtext' => 'Lokað er fyrir að hlaða inn skrám.',
+'php-uploaddisabledtext' => 'Skráar upphlöð eru óvirk í PHP.
+Vinsamlegast athugaðu stillinguna í file_uploads.',
+'uploadscripted' => 'Þetta skjal inniheldur (X)HTML eða forskriftu sem gæti valdið villum í vöfrum.',
+'uploadvirus' => 'Skráin inniheldur veiru! Nánari upplýsingar: $1',
+'uploadjava' => 'Þessi skrá er ZIP skrá sem inniheldur Java .class skráarsnið.
+Upphlöðun Java skráa er óheimil, því þær hunsa öryggis hömlur.',
+'upload-source' => 'Upprunaleg skrá',
+'sourcefilename' => 'Upprunalegt skráarnafn:',
+'sourceurl' => 'Uppruni:',
+'destfilename' => 'Móttökuskráarnafn:',
+'upload-maxfilesize' => 'Hámarks skráarstærð: $1',
+'upload-description' => 'Myndlýsing',
+'upload-options' => 'Valmöguleikar fyrir upphöl',
+'watchthisupload' => 'Vakta þessa skrá',
+'filewasdeleted' => 'Skrá af sama nafni hefur áður verið hlaðið inn og síðan eytt. Þú ættir að athuga $1 áður en þú hleður skránni inn.',
+'filename-bad-prefix' => "Sráarnafnið lýsir ekki skránni, heldur var það búið til af myndavélinni, því það byrjar á '''\"\$1\"'''.
+Veldu lýsandi nafn fyrir skránna og reyndu aftur.",
+'upload-success-subj' => 'Innhlaðning tókst',
+'upload-success-msg' => 'Upphlöðun frá [$2] tókst. Það er aðgengilegt hér: [[:{{ns:file}}:$1]]',
+'upload-failure-subj' => 'Vandamál við upphleðslu skráarinnar',
+'upload-failure-msg' => 'Upphlaðið frá [$2] mistókst:
+
+$1',
+'upload-warning-subj' => 'Aðvörun',
+
+'upload-proto-error' => 'Vitlaus samskiptaregla',
+'upload-file-error' => 'Innri villa',
+'upload-file-error-text' => 'Innri villa: Gat ekki búið til tímabundna skrá á vefþjóni.
+Vinsamlegast hafðu samband við [[Special:ListUsers/sysop|möppudýr]].',
+'upload-misc-error' => 'Óþekkt innhleðsluvilla',
+'upload-unknown-size' => 'Óþekkt stærð',
+'upload-http-error' => 'HTTP villa kom upp við upphal skráarinnar: $1',
+
+# ZipDirectoryReader
+'zip-file-open-error' => 'Mistök við opnun skráarinnar fyrir ZIP athuganir.',
+'zip-wrong-format' => 'Skráin var ekki ZIP skrá.',
+'zip-bad' => 'Þessi ZIP skrá er skemmd eða ólesanleg.
+Ekki var hægt að athuga öryggi skráarinnar almennilega.',
+'zip-unsupported' => 'Þessi skrá er ZIP skrá sem notar möguleika sem eru ekki studdir af MediaWiki.
+Ekki er hægt að athuga öryggi skráarinnar almennilega.',
+
+# Special:UploadStash
+'uploadstash' => 'Óútgefnar skrár',
+'uploadstash-summary' => 'Þessi síða gefur aðgang að þeim skrám sem hafa verið hlaðið inn (eða eru í biðröð eftir því að vera hlaðið inn) en hafa ekki verið útgefnar. Þessar skrár eru eingöngu sýnilegar þeim notanda sem hlóð þeim inn.',
+'uploadstash-clear' => 'Tæma listann',
+'uploadstash-nofiles' => 'Þú hefur engar skrár sem eru í bið eftir því að verða útgefnar.',
+'uploadstash-badtoken' => 'Þessi aðgerð misheppnaðist, kannski hafa réttindi þín til breytinga runnið út.
+Reyndu aftur.',
+'uploadstash-errclear' => 'Tæming listans mistókst.',
+'uploadstash-refresh' => 'Endurhlaða listann',
+
+# img_auth script messages
+'img-auth-accessdenied' => 'Aðgangur óheimill',
+'img-auth-nopathinfo' => 'PATH_INFO vantar.
+Biðlarinn þínn er ekki stilltur til að gefa upp þessar upplýsingar.
+Þær mega vera CGI-byggðar og mega ekki styðja img_auth.
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Sjá mynda hópréttindi.]',
+'img-auth-nofile' => 'Skráin "$1" er ekki til.',
+'img-auth-streaming' => 'Streymi "$1".',
+'img-auth-noread' => 'Notandinn hefur ekki rétt til að lesa "$1"',
+'img-auth-bad-query-string' => 'Vefslóðin hefur ógildan fyrirspurnar streng.',
+
+# HTTP errors
+'http-invalid-url' => 'Vitlaust veffang: $1',
+'http-invalid-scheme' => 'Vefslóðir með "$1" forskeyti eru óstuddar.',
+'http-request-error' => 'HTTP beiðni mistókst vegna óþekktrar villu.',
+'http-read-error' => 'HTTP lesturs villa.',
+'http-timed-out' => 'Tímamörk HTTP beiðni rann út.',
+'http-curl-error' => 'Villa við að sækja vefslóð: $1',
+'http-host-unreachable' => 'Gat ekki náð í vefslóðina',
+'http-bad-status' => 'Mistök við HTTP beiðnina: $1 $2',
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
-'upload-curl-error6' => 'Gat ekki náð í slóðina',
-'upload-curl-error28' => 'Innhleðslutími útrunninn',
+'upload-curl-error6' => 'Gat ekki náð í slóðina',
+'upload-curl-error6-text' => 'Mistókst að sækja tilgreinda vefslóð.
+Athugaðu hvort vefslóðin sé rétt og vefsíðan sé aðgengileg.',
+'upload-curl-error28' => 'Innhleðslutími útrunninn',
'license' => 'Leyfisupplýsingar:',
'license-header' => 'Leyfisupplýsingar:',
'nolicense' => 'Ekkert valið',
'license-nopreview' => '(Forskoðun ekki fáanleg)',
+'upload_source_url' => '(gild, aðgengileg vefslóð)',
'upload_source_file' => '(skrá á tölvunni þinni)',
# Special:ListFiles
+'listfiles-summary' => 'Þessi kerfissíða sýnir allar upphlaðnar skrár.
+Þegar hún er síuð ákveðnu notendanafni birtast eingöngu myndir frá honum.',
'listfiles_search_for' => 'Leita að miðilsnafni:',
'imgfile' => 'skrá',
'listfiles' => 'Skráalisti',
+'listfiles_thumb' => 'Smámynd',
'listfiles_date' => 'Dagsetning',
'listfiles_name' => 'Nafn',
'listfiles_user' => 'Notandi',
@@ -1473,41 +1686,63 @@ Gjörðu svo vel og endurnefndu skrána og hladdu henni inn aftur.',
'filehist-dimensions' => 'Víddir',
'filehist-filesize' => 'Stærð skráar',
'filehist-comment' => 'Athugasemd',
+'filehist-missing' => 'Skrá vantar',
'imagelinks' => 'Skráartenglar',
'linkstoimage' => 'Eftirfarandi {{PLURAL:$1|síða tengist|$1 síður tengjast}} í þessa skrá:',
+'linkstoimage-more' => 'Fleiri en $1 {{PLURAL:$1|síða tengist|síður tengjast}} þessari skrá.
+Eftirfarandi listi sýnir {{PLURAL:$1|fyrsta myndatengilinn|fyrstu $1 myndatenglana}}.
+[[Special:WhatLinksHere/$2|Tæmandi listi]] er til staðar.',
'nolinkstoimage' => 'Engar síður tengja í þessa skrá.',
+'morelinkstoimage' => 'Skoða [[Special:WhatLinksHere/$1|fleiri myndatengla]] á þessa skrá.',
+'linkstoimage-redirect' => '$1 (tilvísun) $2',
+'duplicatesoffile' => 'Eftirfarandi {{PLURAL:$1|skrá er afrit|$1 skrár eru afrit}} af þessari skrá ([[Special:FileDuplicateSearch/$2|Frekari upplýsingar]]):',
'sharedupload' => 'Skrá þessi er af $1, og deilt meðal annarra verkefna og nýtist því þar.',
'sharedupload-desc-there' => 'Skrá þessi er af $1, og deilt meðal annarra verkefna og nýtist því þar.
Gjörðu svo vel og sjáðu [$2 skráarsíðuna þar] fyrir fleiri upplýsingar.',
'sharedupload-desc-here' => 'Skrá þessi er af $1, og deilt meðal annarra verkefna og nýtist því þar.
Hér fyrir neðan er afrit af [$2 skráarsíðunni þar].',
+'filepage-nofile' => 'Engin skrá er til með þessu nafni.',
+'filepage-nofile-link' => 'Engin skrá er til með þessu nafni, en þú getur [$1 hlaðið henni inn].',
'uploadnewversion-linktext' => 'Hlaða inn nýrri útgáfu af þessari skrá',
+'shared-repo-from' => 'frá $1',
+'shared-repo' => 'sameiginlegu myndasafni',
# File reversion
-'filerevert' => 'Taka aftur $1',
-'filerevert-legend' => 'Taka aftur skrá',
-'filerevert-comment' => 'Athugasemdir:',
-'filerevert-submit' => 'Taka aftur',
+'filerevert' => 'Taka aftur $1',
+'filerevert-legend' => 'Taka aftur skrá',
+'filerevert-intro' => "Þú ert í þann mund að breyta skránni '''[[Media:$1|$1]]''' aftur til [$4 útgáfu frá $3, $2].",
+'filerevert-comment' => 'Ãstæða:',
+'filerevert-defaultcomment' => 'Breytt til útgáfu $2 $1',
+'filerevert-submit' => 'Taka aftur',
+'filerevert-success' => "'''[[Media:$1|$1]]''' var breytt aftur til [$4 útgáfu frá $3, $2].",
+'filerevert-badversion' => 'Það er ekki til nein fyrri staðbundin útgáfa af þessari skrá með þessum tímastimpli.',
# File deletion
'filedelete' => 'Eyði „$1“',
'filedelete-legend' => 'Eyða skrá',
-'filedelete-intro' => "Þú ert að eyða '''[[Media:$1|$1]]'''.",
+'filedelete-intro' => "Þú ert að eyða '''[[Media:$1|$1]]''' ásamt breytingarskrá hennar.",
+'filedelete-intro-old' => "Þú ert í þann mund að eyða útgáfu '''[[Media:$1|$1]]''' frá [$4 $3, kl. $2].",
'filedelete-comment' => 'Ãstæða:',
'filedelete-submit' => 'Eyða',
'filedelete-success' => "'''$1''' hefur verið eytt.",
+'filedelete-success-old' => "Útgáfu '''[[Media:$1|$1]]''' frá $3, kl. $2 hefur verið eytt.",
'filedelete-nofile' => "'''$1''' er ekki til.",
+'filedelete-nofile-old' => 'Ekkert skjalasafn af $1 er til með tilgreindum táknum.',
'filedelete-otherreason' => 'Aðrar/fleiri ástæður:',
'filedelete-reason-otherlist' => 'Önnur ástæða',
'filedelete-reason-dropdown' => '* Algengar eyðingarástæður
** Höfundarréttarbrot
** Endurtekin skrá',
'filedelete-edit-reasonlist' => 'Eyðingarástæður',
+'filedelete-maintenance' => 'à meðan viðhaldi stendur er lokað fyrir eyðingu og endurvakningu skráa.',
# MIME search
-'mimesearch' => 'MIME-leit',
-'mimetype' => 'MIME-tegund:',
-'download' => 'Hlaða niður',
+'mimesearch' => 'MIME-leit',
+'mimesearch-summary' => 'Þessi síða gerir þér kleift að leita eftir skrám eftir MIME-gerð þeirra.
+
+Leitarstrengurinn á að vera á þessu formi: efnistag/myndasnið, t.d. <tt>image/jpeg</tt>.',
+'mimetype' => 'MIME-tegund:',
+'download' => 'Hlaða niður',
# Unwatched pages
'unwatchedpages' => 'Óvaktaðar síður',
@@ -1517,7 +1752,7 @@ Hér fyrir neðan er afrit af [$2 skráarsíðunni þar].',
# Unused templates
'unusedtemplates' => 'Ónotuð snið',
-'unusedtemplatestext' => 'Þetta er listi yfir allar síður í sniðanafnrýminu sem ekki eru notaðar í neinum öðrum síðum. Munið að gá að öðrum tenglum í sniðin áður en þeim er eytt.',
+'unusedtemplatestext' => 'Þetta er listi yfir allar síður í {{ns:snið}} nafnrýminu sem ekki eru notaðar í neinum öðrum síðum. Munið að gá að öðrum tenglum í sniðin áður en þeim er eytt.',
'unusedtemplateswlh' => 'aðrir tenglar',
# Random page
@@ -1542,19 +1777,24 @@ Hér fyrir neðan er afrit af [$2 skráarsíðunni þar].',
'statistics-edits' => 'Síðubreytingar frá því {{SITENAME}} byrjaði',
'statistics-edits-average' => 'Meðal breytingafjöldi á síðu',
'statistics-views-total' => 'Uppflettingar alls',
+'statistics-views-total-desc' => 'Flettingar á síður sem eru ekki til eða kerfisíður eru ekki innifaldar.',
'statistics-views-peredit' => 'Uppflettingar á hverja breytingu (meðaltal)',
'statistics-users' => 'Skráðir [[Special:ListUsers|notendur]]',
'statistics-users-active' => 'Virkir notendur',
'statistics-users-active-desc' => 'Notendur sem hafa framkvæmt aðgerð {{PLURAL:$1|síðastliðin dag|síðastliðna $1 daga}}',
'statistics-mostpopular' => 'Mest skoðuðu síður',
-'disambiguations' => 'Tenglar í aðgreiningarsíður',
+'disambiguations' => 'Síður sem tengja á aðgreiningarsíður',
'disambiguationspage' => 'Template:Aðgreining',
'disambiguations-text' => "Þessar síður innihalda tengla á svokallaðar „'''aðgreiningarsíður'''“.
Laga ætti tenglanna og láta þá vísa á rétta síðu.<br />
Farið er með síðu sem aðgreiningarsíðu ef að hún inniheldur snið sem vísað er í frá [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Tvöfaldar tilvísanir',
+'doubleredirects' => 'Tvöfaldar tilvísanir',
+'double-redirect-fixed-move' => '[[$1]] hefur verið færð.
+Hún er tilvísun á [[$2]].',
+'double-redirect-fixed-maintenance' => 'Laga tvöfalda tilvísun frá [[$1]] til [[$2]].',
+'double-redirect-fixer' => 'Laga tilvísun',
'brokenredirects' => 'Brotnar tilvísanir',
'brokenredirectstext' => 'Eftirfarandi tilvísanir vísa á síður sem ekki eru til:',
@@ -1575,6 +1815,8 @@ Farið er með síðu sem aðgreiningarsíðu ef að hún inniheldur snið sem v
'nmembers' => '$1 {{PLURAL:$1|meðlimur|meðlimir}}',
'nrevisions' => '$1 {{PLURAL:$1|breyting|breytingar}}',
'nviews' => '$1 {{PLURAL:$1|fletting|flettingar}}',
+'nimagelinks' => 'Ãtengd á $1 {{PLURAL:$1|síðu|síðum}}',
+'ntransclusions' => 'Ãtengd á $1 {{PLURAL:$1|síðu|síðum}}',
'specialpage-empty' => 'Þessi síða er tóm.',
'lonelypages' => 'Munaðarlausar síður',
'lonelypagestext' => 'Eftirfarandi síður eru munaðarlausar á {{SITENAME}}.',
@@ -1587,6 +1829,7 @@ Farið er með síðu sem aðgreiningarsíðu ef að hún inniheldur snið sem v
'popularpages' => 'Vinsælar síður',
'wantedcategories' => 'Eftirsóttir flokkar',
'wantedpages' => 'Eftirsóttar síður',
+'wantedpages-badtitle' => 'Ógildur titill í listanum: $1',
'wantedfiles' => 'Eftirsóttar skrár',
'wantedtemplates' => 'Eftirsótt snið',
'mostlinked' => 'Mest ítengdu síður',
@@ -1604,8 +1847,13 @@ Farið er með síðu sem aðgreiningarsíðu ef að hún inniheldur snið sem v
'protectedpages-indef' => 'Aðeins óendanlegar verndanir',
'protectedpages-cascade' => 'Keðjuverndun eingöngu',
'protectedpagestext' => 'Eftirfarandi síður hafa verið verndaðar svo ekki sé hægt að breyta þeim eða færa þær',
+'protectedpagesempty' => 'Engar síður eru verndaðar með þessum stikum.',
'protectedtitles' => 'Verndaðir titlar',
+'protectedtitlestext' => 'Eftirfarandi titlar eru verndaðir gegn því að vera skapaðir',
+'protectedtitlesempty' => 'Engir titlar eru verndaðir með þessum stikum.',
'listusers' => 'Notendalisti',
+'listusers-editsonly' => 'Sýna eingöngu notendur með breytingar',
+'listusers-creationsort' => 'Raða eftir stofndegi',
'usereditcount' => '$1 {{PLURAL:$1|breyting|breytingar}}',
'usercreated' => 'Stofnað $1 $2',
'newpages' => 'Nýjustu greinar',
@@ -1613,17 +1861,24 @@ Farið er með síðu sem aðgreiningarsíðu ef að hún inniheldur snið sem v
'ancientpages' => 'Elstu síður',
'move' => 'Færa',
'movethispage' => 'Færa þessa síðu',
-'unusedimagestext' => 'Vinsamlegast athugið að aðrar vefsíður gætu tengt beint í skrár héðan, svo að þær gætu komið fram á þessum lista þrátt fyrir að vera í notkun.',
+'unusedimagestext' => 'Eftirfarandi skrár eru til, en eru ekki notaðar í greinum.
+Vinsamlegast athugið að aðrar vefsíður gætu tengt beint í skrár héðan, svo að þær gætu komið fram á þessum lista þrátt fyrir að vera í notkun.',
'unusedcategoriestext' => 'Þessir flokkar eru til en engar síður eða flokkar eru í þeim.',
+'notargettitle' => 'Ekkert skotmark',
+'notargettext' => 'Villa: Engin síða eða notandi tilgreind til að nota þennan möguleika á.',
+'nopagetitle' => 'Síðan er ekki til',
+'nopagetext' => 'Síðan sem á að færa frá er ekki til.',
'pager-newer-n' => '{{PLURAL:$1|nýrri 1|nýrri $1}}',
'pager-older-n' => '{{PLURAL:$1|1 eldri|$1 eldri}}',
'suppress' => 'Yfirsýn',
+'querypage-disabled' => 'Þessi kerfisíða er óvirk til að minnka ekki afköst vefþjónsins.',
# Book sources
'booksources' => 'Bókaleit',
'booksources-search-legend' => 'Leita að bókaverslunum',
'booksources-go' => 'Ãfram',
'booksources-text' => 'Fyrir neðan er listi af tenglum í aðrar síður sem selja nýjar og notaðar bækur og gætu einnig haft nánari upplýsingar í sambandi við bókina sem þú varst að leita að:',
+'booksources-invalid-isbn' => 'ISBN gildið virðist ekki vera gilt; leitaðu eftir villum við innslátt eða afritun gildisins frá upsprettu þess.',
# Special:Log
'specialloguserlabel' => 'Notandi:',
@@ -1654,7 +1909,7 @@ Farið er með síðu sem aðgreiningarsíðu ef að hún inniheldur snið sem v
# Special:Categories
'categories' => 'Flokkar',
-'categoriespagetext' => 'Eftirfarandi flokkar innihalda síður eða skrár.
+'categoriespagetext' => 'Eftirfarandi {{PLURAL:$1|flokkur inniheldur|flokkar innihalda}} síður eða skrár.
[[Special:UnusedCategories|Ónotaðir flokkar]] birtast ekki hér.
Sjá einnig [[Special:WantedCategories|eftirsótta flokka]].',
'categoriesfrom' => 'Sýna flokka frá:',
@@ -1662,22 +1917,35 @@ Sjá einnig [[Special:WantedCategories|eftirsótta flokka]].',
'special-categories-sort-abc' => 'raða eftir stafrófinu',
# Special:DeletedContributions
-'deletedcontributions' => 'Eyddar breytingar notanda',
-'deletedcontributions-title' => 'Eyddar breytingar notanda',
+'deletedcontributions' => 'Eyddar breytingar notanda',
+'deletedcontributions-title' => 'Eyddar breytingar notanda',
+'sp-deletedcontributions-contribs' => 'Framlög',
# Special:LinkSearch
-'linksearch' => 'Útværir tenglar',
-'linksearch-ns' => 'Nafnrými:',
-'linksearch-ok' => 'Leita',
+'linksearch' => 'Leita að útværum tenglum',
+'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: <tt>$1</tt> (ekki bæta neinum af þessum í leitina)',
+'linksearch-line' => 'Tengt er í $1 á síðunni $2',
+'linksearch-error' => 'Algildistafir mega engöngu birtast í upphafi vefslóðarinnar.',
# Special:ListUsers
'listusersfrom' => 'Sýna notendur sem byrja á:',
'listusers-submit' => 'Sýna',
'listusers-noresult' => 'Enginn notandi fannst.',
+'listusers-blocked' => '(bannaður)',
# Special:ActiveUsers
+'activeusers' => 'Virkir notendur',
+'activeusers-intro' => 'Þetta er listi yfir notendur sem hafa verið virkir {{PLURAL:$1|síðasta|síðustu}} $1 {{PLURAL:$1|dag|daga}}.',
+'activeusers-count' => '$1 {{PLURAL:$1|breyting|breytingar}} á {{PLURAL:$3|síðastliðnum degi|síðustu $3 dögum}}',
+'activeusers-from' => 'Sýna notendur sem byrja á:',
'activeusers-hidebots' => 'Fela vélmenni',
'activeusers-hidesysops' => 'Fela möppudýr',
+'activeusers-noresult' => 'Enginn notandi fannst.',
# Special:Log/newusers
'newuserlogpage' => 'Skrá yfir nýja notendur',
@@ -1688,49 +1956,78 @@ Sjá einnig [[Special:WantedCategories|eftirsótta flokka]].',
'newuserlog-autocreate-entry' => 'Aðgangur búinn til sjálfkrafa',
# Special:ListGroupRights
-'listgrouprights' => 'Notandahópréttindi',
-'listgrouprights-group' => 'Hópur',
-'listgrouprights-rights' => 'Réttindi',
-'listgrouprights-helppage' => 'Help:Hópréttindi',
-'listgrouprights-members' => '(listi yfir meðlimi)',
+'listgrouprights' => 'Notandahópréttindi',
+'listgrouprights-summary' => 'Hér er listi yfir notendahópa á þessum wiki, með þeirra réttindum.
+Það gæti verið til síða með [[{{MediaWiki:Listgrouprights-helppage}}|frekari upplýsingar]] um einstök réttindi.',
+'listgrouprights-key' => '* <span class="listgrouprights-granted">Veitt réttindi</span>
+* <span class="listgrouprights-revoked">Afturkölluð réttindi</span>',
+'listgrouprights-group' => 'Hópur',
+'listgrouprights-rights' => 'Réttindi',
+'listgrouprights-helppage' => 'Help:Hópréttindi',
+'listgrouprights-members' => '(listi yfir meðlimi)',
+'listgrouprights-addgroup' => 'Bæta við meðlimum í {{PLURAL:$2|hópinn|hópana}}: $1',
+'listgrouprights-removegroup' => 'Fjarlægja meðlimi úr {{PLURAL:$2|hópinum|hópunum}}: $1',
+'listgrouprights-addgroup-all' => 'Bæta meðlimum við alla hópa',
+'listgrouprights-removegroup-all' => 'Fjarlægja meðlimi úr öllum hópum',
+'listgrouprights-addgroup-self' => 'Bæta sjálfum sér í {{PLURAL:$2|hópinn|hópana}}: $1',
+'listgrouprights-removegroup-self' => 'Fjarlægja sjálfan sig úr {{PLURAL:$2|hópinum|hópunum}}: $1',
+'listgrouprights-addgroup-self-all' => 'Bæta sjálfum sér í alla hópa',
+'listgrouprights-removegroup-self-all' => 'Fjarlægja sjálfan sig úr öllum hópum',
# E-mail user
-'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',
-'emailpage' => 'Senda tölvupóst',
-'emailpagetext' => 'Hafi notandi þessi fyllt út gild tölvupóstfang í stillingum sínum er hægt að senda póst til hans hér. Póstfangið sem þú fylltir út í stillingum þínum mun birtast í „From:“ hlutanum svo viðtakandinn geti svarað.',
-'defemailsubject' => 'Varðandi {{SITENAME}}',
-'noemailtitle' => 'Ekkert póstfang',
-'noemailtext' => 'Notandi þessi hefur kosið að fá ekki tölvupóst frá öðrum notendum eða hefur ekki fyllt út netfang sitt í stillingum.',
-'email-legend' => 'Senda tölvupóst á annan {{SITENAME}}-notanda',
-'emailfrom' => 'Frá:',
-'emailto' => 'Til:',
-'emailsubject' => 'Fyrirsögn:',
-'emailmessage' => 'Skilaboð:',
-'emailsend' => 'Senda',
-'emailccme' => 'Senda mér tölvupóst með afriti af mínum skeytum.',
-'emailccsubject' => 'Afrit af skilaboðinu þínu til $1: $2',
-'emailsent' => 'Sending tókst',
-'emailsenttext' => 'Skilaboðin þín hafa verið send.',
+'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',
+'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.',
+'usermailererror' => 'Póst hlutur skilaði villu:',
+'defemailsubject' => 'Varðandi {{SITENAME}}',
+'usermaildisabled' => 'Netfang notenda er óvirkt',
+'usermaildisabledtext' => 'Þú getur ekki sent tölvupóst til annara notenda á þessum wiki',
+'noemailtitle' => 'Ekkert póstfang',
+'noemailtext' => 'Þessi notandi hefur ekki tilgreint gilt netfang.',
+'nowikiemailtitle' => 'Tölvupóstur óheimill',
+'nowikiemailtext' => 'Þessi notandi hefur valið að fá engan tölvupóst frá öðrum notendum.',
+'emailnotarget' => 'Notendanafn er ekki til eða ógilt fyrir þennan viðtakanda.',
+'emailtarget' => 'Tilgreindu notendanafn viðtakanda',
+'emailusername' => 'Notandanafn:',
+'emailusernamesubmit' => 'Senda',
+'email-legend' => 'Senda tölvupóst á annan {{SITENAME}}-notanda',
+'emailfrom' => 'Frá:',
+'emailto' => 'Til:',
+'emailsubject' => 'Fyrirsögn:',
+'emailmessage' => 'Skilaboð:',
+'emailsend' => 'Senda',
+'emailccme' => 'Senda mér tölvupóst með afriti af mínum skeytum.',
+'emailccsubject' => 'Afrit af skilaboðinu þínu til $1: $2',
+'emailsent' => 'Sending tókst',
+'emailsenttext' => 'Skilaboðin þín hafa verið send.',
+'emailuserfooter' => 'Þessi tölvupóstur var sendur af $1 til $2 með möguleikanum "Senda notanda tölvupóst" á {{SITENAME}}.',
+
+# User Messenger
+'usermessage-summary' => 'Skil eftir meldingu.',
+'usermessage-editor' => 'Meldinga sendiboði',
# Watchlist
'watchlist' => 'Vaktlistinn',
'mywatchlist' => 'Vaktlistinn',
+'watchlistfor2' => 'Eftir $1 $2',
'nowatchlist' => 'Vaktlistinn er tómur.',
'watchlistanontext' => 'Vinsamlegast $1 til að skoða eða breyta vaktlistanum þínum.',
'watchnologin' => 'Óinnskráð(ur)',
'watchnologintext' => 'Þú verður að vera [[Special:UserLogin|innskáð(ur)]] til að geta breytt vaktlistanum.',
-'addedwatch' => 'Bætt á vaktlistann',
+'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.",
-'removedwatch' => 'Fjarlægt af vaktlistanum',
+'removewatch' => 'Fjarlægja af vaktlistanum',
'removedwatchtext' => 'Síðan „[[:$1]]“ hefur verið fjarlægð af [[Special:Watchlist|vaktlistanum þínum]].',
'watch' => 'Vakta',
'watchthispage' => 'Vakta þessa síðu',
'unwatch' => 'Afvakta',
'unwatchthispage' => 'Hætta vöktun',
'notanarticle' => 'Ekki efnisleg síða',
+'notvisiblerev' => 'Síðasta breyting eftir annan notanda hefur verið eytt.',
'watchnochange' => 'Engri síðu á vaktlistanum þínum hefur verið breytt á tilgreindu tímabili.',
'watchlist-details' => '{{PLURAL:$1|$1 síða|$1 síður}} á vaktlistanum þínum, fyrir utan spjallsíður.',
'wlheader-enotif' => '* Tilkynning með tölvupósti er virk.',
@@ -1744,16 +2041,49 @@ Frekari breytingar á henni eða spallsíðu hennar munu verða sýndar þar, og
'watchlist-options' => 'Vaktlistastillingar',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Vakta...',
-'unwatching' => 'Afvakta...',
+'watching' => 'Vakta...',
+'unwatching' => 'Afvakta...',
+'watcherrortext' => 'Villa kom upp við breytingu á stillingum vaktlistans fyrir "$1".',
'enotif_reset' => 'Merkja allar síður sem skoðaðar',
'enotif_newpagetext' => 'Þetta er ný síða.',
'enotif_impersonal_salutation' => '{{SITENAME}}notandi',
'changed' => 'breytt',
'created' => 'búið til',
+'enotif_subject' => '$PAGETITLE á {{SITENAME}} hefur verið $CHANGEDORCREATED af $PAGEEDITOR',
+'enotif_lastvisited' => 'Sjá $1 fyrir allar breytingar síðan þú sóttir síðuna síðast.',
'enotif_lastdiff' => 'Sjá $1 til að skoða þessa breytingu.',
'enotif_anon_editor' => 'ónefndur notandi $1',
+'enotif_body' => 'Kæri $WATCHINGUSERNAME,
+
+
+Síðan $PAGETITLE á {{SITENAME}} hefur verið $CHANGEDORCREATED þann $PAGEEDITDATE eftir $PAGEEDITOR, sjá $PAGETITLE_URL fyrir núverandi útgáfu.
+
+$NEWPAGE
+
+Breytingarágrip notandans: $PAGESUMMARY $PAGEMINOREDIT
+
+Samskipta upplýsingar notandans:
+netfang: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
+
+Engar frekari tilkynningar verða sendar nema þú heimsækir síðuna.
+Þú getur einnig endursett tilkynninga merkingar fyrir allar síður á vaktlistanum.
+
+ Vingjarnlega {{SITENAME}} tilkynningar kerfið
+
+--
+Til þess að breyta tilkynningum sem sendast á netfangið, smelltu á
+{{canonicalurl:{{#special:Preferences}}}}
+
+Til þess að breyta stillingum vaktlistans, smelltu á
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+Til þess að eyða síðunni af vaktlistanum, smelltu á
+$UNWATCHURL
+
+Svörun og frekari aðstoð:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Eyða',
@@ -1764,12 +2094,12 @@ Frekari breytingar á henni eða spallsíðu hennar munu verða sýndar þar, og
'exblank' => 'síðan var tóm',
'delete-confirm' => 'Eyða „$1“',
'delete-legend' => 'Eyða',
-'historywarning' => 'Athugið: Síðan sem þú ert um það bil að eyða á sér',
+'historywarning' => "'''Viðvörun:''' Síðan sem þú ert um það bil að eyða hefur breytingarskrá með $1 {{PLURAL:$1|breytingu|breytingum}}:",
'confirmdeletetext' => 'Þú ert um það bil að eyða síðu ásamt breytingaskrá hennar.
Vinsamlegast staðfestu það að þú ætlir að gera svo, það að þú skiljir afleiðingarnar, og að þú sért að gera þetta í samræmi við [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Aðgerð lokið',
'actionfailed' => 'Aðgerð mistókst',
-'deletedtext' => '„<nowiki>$1</nowiki>“ hefur verið eytt.
+'deletedtext' => '„$1“ hefur verið eytt.
Sjá lista yfir nýlegar eyðingar í $2.',
'deletedarticle' => 'eyddi „[[$1]]“',
'dellogpage' => 'Eyðingaskrá',
@@ -1784,25 +2114,36 @@ Sjá lista yfir nýlegar eyðingar í $2.',
** Höfundaréttarbrot
** Skemmdarverk',
'delete-edit-reasonlist' => 'Breyta eyðingarástæðum',
+'delete-toobig' => 'Þessi síða hefur stóra breytingarskrá, yfir $1 {{PLURAL:$1|breyting|breytingar}}.
+Óheimilt er að eyða slíkum síðum til að valda ekki óæskilegum truflunum á {{SITENAME}}.',
+'delete-warning-toobig' => 'Þessi síða hefur stóra breytingarskrá, yfir $1 {{PLURAL:$1|breyting|breytingar}}.
+Eyðing síðunnar gæti truflað vinnslu gangnasafns {{SITENAME}}; haltu áfram með varúð.',
# Rollback
-'rollback' => 'Taka aftur breytingar',
-'rollback_short' => 'Taka aftur',
-'rollbacklink' => 'taka aftur',
-'rollbackfailed' => 'Mistókst að taka aftur',
-'cantrollback' => 'Ekki hægt að taka aftur breytingu, síðasti höfundur er eini höfundur þessarar síðu.',
-'alreadyrolled' => 'Ekki var hægt að taka síðustu breytingu [[:$1]] eftir [[User:$2|$2]] ([[User talk:$2|spjall]]) til baka;
-eitthver annar hefur breytt síðunni eða nú þegar tekið breytinguna til baka.
-
-Síðasta breyting er frá [[User:$3|$3]] ([[User talk:$3|Spjall]]).',
-'editcomment' => "Beytingarágripið var: \"''\$1''\".",
-'revertpage' => 'Tók aftur breytingar [[Special:Contributions/$2|$2]] ([[User talk:$2|spjall]]), breytt til síðustu útgáfu [[User:$1|$1]]',
-'rollback-success' => 'Tók til baka breytingar eftir $1; núverandi $2.',
+'rollback' => 'Taka aftur breytingar',
+'rollback_short' => 'Taka aftur',
+'rollbacklink' => 'taka aftur',
+'rollbackfailed' => 'Mistókst að taka aftur',
+'cantrollback' => 'Ekki hægt að taka aftur breytingu, síðasti höfundur er eini höfundur þessarar síðu.',
+'alreadyrolled' => 'Ekki var hægt að taka síðustu breytingu [[:$1]] eftir [[User:$2|$2]] ([[User talk:$2|talk]]{{int:pipe-separator}}[[Special:Contributions/$2|{{int:contribslink}}]]) til baka;
+einhver annar hefur breytt síðunni eða tekið breytinguna til baka.
+
+Síðasta breyting síðunnar er frá [[User:$3|$3]] ([[User talk:$3|talk]]{{int:pipe-separator}}[[Special:Contributions/$3|{{int:contribslink}}]]).',
+'editcomment' => "Beytingarágripið var: \"''\$1''\".",
+'revertpage' => 'Tók aftur breytingar [[Special:Contributions/$2|$2]] ([[User talk:$2|spjall]]), breytt til síðustu útgáfu [[User:$1|$1]]',
+'revertpage-nouser' => 'Tók aftur breytingar (notendanafn fjarlægt) til síðustu útgáfu [[User:$1|$1]]',
+'rollback-success' => 'Tók til baka breytingar eftir $1; núverandi $2.',
+
+# Edit tokens
+'sessionfailure-title' => 'Mistök í setu',
+'sessionfailure' => 'Líklega er vandamál með innskráningar setuna þína;
+hætt hefur verið við þessa aðgerð sem vörn gegn mögulegu samskiptaráni setunar.
+Farðu aftur á fyrri síðu, endurhladdu hana og reyndu aftur.',
# Protect
'protectlogpage' => 'Verndunarskrá',
'protectlogtext' => 'Fyrir neðan er listi yfir síðuverndanir og -afverndanir.
-Sjáðu [[Special:ProtectedPages|listann yfir verndaðar síður]] fyrir núverandi lista yfir verndaðar síður.',
+Sjáðu [[Special:ProtectedPages|Verndunarskrá]] fyrir núverandi lista yfir verndaðar síður.',
'protectedarticle' => 'verndaði „[[$1]]“',
'modifiedarticleprotection' => 'breytti verndunarstigi fyrir "[[$1]]"',
'unprotectedarticle' => 'afverndaði „[[$1]]“',
@@ -1814,7 +2155,12 @@ Sjáðu [[Special:ProtectedPages|listann yfir verndaðar síður]] fyrir núvera
'protectexpiry' => 'Rennur út:',
'protect_expiry_invalid' => 'Ógildur tími.',
'protect_expiry_old' => 'Tíminn er þegar runninn út.',
-'protect-text' => "Hér getur þú skoðað og breytt verndunarstigi síðunnar '''<nowiki>$1</nowiki>'''.",
+'protect-unchain-permissions' => 'Aflæsa frekari verndunarmöguleika',
+'protect-text' => "Hér getur þú skoðað og breytt verndunarstigi síðunnar '''$1'''.",
+'protect-locked-blocked' => "Þú getur ekki breytt verndunarstigi á meðan þú ert bannaður.
+Hérna er núverandi verndunarstig fyrir síðuna '''$1''':",
+'protect-locked-dblock' => "à meðan gangnabankinn er læstur er ekki hægt að breyta verndunarstigi.
+Hér eru núverandi verndunarstig fyrir síðuna '''$1''':",
'protect-locked-access' => "Þú hefur ekki heimild til þess að vernda eða afvernda síður.
Núverandi staða síðunnar er '''$1''':",
'protect-cascadeon' => 'Þessi síða er vernduð vegna þess að hún er innifalin í eftirfarandi {{PLURAL:$1|síðu, sem er keðjuvernduð|síðum, sem eru keðjuverndaðar}}.
@@ -1830,6 +2176,15 @@ Núverandi staða síðunnar er '''$1''':",
'protect-cantedit' => 'Þú getur ekki breytt verndunarstigi þessarar síðu, vegna þess að þú hefur ekki réttindin til að breyta því.',
'protect-othertime' => 'Annar tími:',
'protect-othertime-op' => 'annar tími',
+'protect-existing-expiry' => 'Fyrri gildislok: $3, $2',
+'protect-otherreason' => 'Aðrar/fleiri ástæður:',
+'protect-otherreason-op' => 'Önnur ástæða',
+'protect-dropdown' => '*Algengar ástæður fyrir verndun
+** Gengdarlaus skemmdarverk
+** Gengdarlausar amasendingar
+** Breytingarstríð
+** Síða með margar heimsóknir',
+'protect-edit-reasonlist' => 'Breyta verndarástæðum',
'protect-expiry-options' => '1 tím:1 hour,1 dag:1 day,1 viku:1 week,2 vikur:2 weeks,1 mánuð:1 month,3 mánuði:3 months,6 mánuði:6 months,1 ár:1 year,aldrei:infinite',
'restriction-type' => 'Réttindi:',
'restriction-level' => 'Takmarkaði við:',
@@ -1849,40 +2204,64 @@ Núverandi staða síðunnar er '''$1''':",
'restriction-level-all' => 'öll stig',
# Undelete
-'undelete' => 'Endurvekja eydda síðu',
-'undeletepage' => 'Skoða og endurvekja eyddar síður',
-'undeletepagetitle' => "'''Eftirfarandi er samansafn af eyddum breytingum á [[:$1|$1]]'''.",
-'viewdeletedpage' => 'Skoða eyddar síður',
-'undeletepagetext' => 'Eftirfarandi {{PLURAL:$1|síðu hefur verið eytt en hún er þó enn í gagnagrunninum og getur verið endurvakin|$1 síðum hefur verið eytt en eru þó enn í gagnagrunninum og geta verið endurvaknar}}.
+'undelete' => 'Endurvekja eydda síðu',
+'undeletepage' => 'Skoða og endurvekja eyddar síður',
+'undeletepagetitle' => "'''Eftirfarandi er samansafn af eyddum breytingum á [[:$1|$1]]'''.",
+'viewdeletedpage' => 'Skoða eyddar síður',
+'undeletepagetext' => 'Eftirfarandi {{PLURAL:$1|síðu hefur verið eytt en hún er þó enn í gagnagrunninum og getur verið endurvakin|$1 síðum hefur verið eytt en eru þó enn í gagnagrunninum og geta verið endurvaknar}}.
Gagnagrunnurinn kann að vera tæmdur reglulega.',
-'undeleterevisions' => '$1 {{PLURAL:$1|breyting|breytingar}}',
-'undeletehistorynoadmin' => 'Þessari síðu hefur verið eytt. Ãstæðan sést í ágripinu fyrir neðan, ásamt upplýsingum um hvaða notendur breyttu síðunni fyrir eyðingu.
+'undelete-fieldset-title' => 'Endurvekja breytingar',
+'undeleteextrahelp' => "Til þess að endurvekja alla breytingarskrá síðunnar, skildu öll box eftir óhökuð og ýttu á '''''{{int:undeletebtn}}'''''.
+Til þess að framkvæma ákveðna endurvakningu, ýttu á þau box sem standa hliðiná þeim útgáfum sem á að endurvekja og ýttu á '''''{{int:undeletebtn}}'''''.",
+'undeleterevisions' => '$1 {{PLURAL:$1|breyting|breytingar}}',
+'undeletehistory' => 'Ef þú endurvekur síðuna verða allar útgáfur færðar í breytingarsögu.
+Ef ný síða með sama nafni hefur verið stofnuð síðan henni var eytt, verða breytingar síðunnar færðar síðast í breytingarskránna.',
+'undeleterevdel' => 'Endurvakning síðu verður ekki framkvæmd ef það leiðir til þess að haus síðunnar eða breytingarsaga hennar verði að hluta til eydd.
+à slíkum málum, þarft þú að afhaka við eða affela nýjustu eyddu breytinguna.',
+'undeletehistorynoadmin' => 'Þessari síðu hefur verið eytt. Ãstæðan sést í ágripinu fyrir neðan, ásamt upplýsingum um hvaða notendur breyttu síðunni fyrir eyðingu.
Innihald greinarinnar er einungis aðgengilegt möppudýrum.',
-'undeletebtn' => 'Endurvekja',
-'undeletelink' => 'skoða/endurvekja',
-'undeleteviewlink' => 'skoða',
-'undeletereset' => 'Endurstilla',
-'undeleteinvert' => 'Snúa vali við',
-'undeletecomment' => 'Athugasemd:',
-'undeletedarticle' => 'endurvakti „[[$1]]“',
-'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.)',
-'undeletedpage' => "'''$1 var endurvakin'''
+'undelete-revision' => 'Eydd breyting $1 (frá $4, kl. $5) eftir $3:',
+'undeleterevision-missing' => 'Ógild eða týnd útgáfa.
+Þú gætir verið með vitlausan tengil, eða útgáfan gæti hafa verið tekin til baka eða fjarlægð úr breytingarskránni.',
+'undelete-nodiff' => 'Engin fyrri útgáfa fannst.',
+'undeletebtn' => 'Endurvekja',
+'undeletelink' => 'skoða/endurvekja',
+'undeleteviewlink' => 'skoða',
+'undeletereset' => 'Endurstilla',
+'undeleteinvert' => 'Snúa vali við',
+'undeletecomment' => 'Ãstæða:',
+'undeletedarticle' => 'endurvakti „[[$1]]“',
+'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.)',
+'undeletedpage' => "'''$1 var endurvakin'''
Skoðaðu [[Special:Log/delete|eyðingaskrána]] til að skoða eyðingar og endurvakningar.",
-'undelete-search-box' => 'Leita að eyddum síðum',
-'undelete-search-prefix' => 'Sýna síður sem byrja á:',
-'undelete-search-submit' => 'Leita',
-'undelete-no-results' => 'Engar samsvarandi síður fundust í eyðingarskjalasafninu.',
-'undelete-error-short' => 'Villa við endurvakningu skráar: $1',
-'undelete-show-file-submit' => 'Já',
+'undelete-header' => 'Sjá [[Special:Log/delete|eyðingarskrá]] fyrir síður sem nýlega hefur verið eytt.',
+'undelete-search-box' => 'Leita að eyddum síðum',
+'undelete-search-prefix' => 'Sýna síður sem byrja á:',
+'undelete-search-submit' => 'Leita',
+'undelete-no-results' => 'Engar samsvarandi síður fundust í eyðingarskjalasafninu.',
+'undelete-filename-mismatch' => 'Endurvakningu skráar mistókst með tímastipilinn $1: Skráarnafnið stenst ekki.',
+'undelete-bad-store-key' => 'Endurvakningu útgáfu skráar mistókst með tímastipilinn $1: Skráin fannst ekki fyrir eyðingu.',
+'undelete-cleanup-error' => 'Villa við eyðingu ónotaðs skjalasafns $1',
+'undelete-missing-filearchive' => 'Mistókst að endurvekja skjalasafn með auðkenninu $1 því það er ekki til í gagnabankanum.
+Mögulega er þegar búið að endurvekja það.',
+'undelete-error-short' => 'Villa við endurvakningu skráar: $1',
+'undelete-error-long' => 'Það kom upp villa við endurvakningu skráarinnar:
+
+$1',
+'undelete-show-file-confirm' => 'Ertu viss um að þú viljir sjá eydda breytingu af skránni "<nowiki>$1</nowiki>" frá $2 $3?',
+'undelete-show-file-submit' => 'Já',
# Namespace form on various pages
-'namespace' => 'Nafnrými:',
-'invert' => 'allt nema valið',
-'blanknamespace' => '(Aðalnafnrýmið)',
+'namespace' => 'Nafnrými:',
+'invert' => 'allt nema valið',
+'tooltip-invert' => 'Hakaðu við þennan kassa til að fela breytingar á síðum innan við ákveðið nafnrými',
+'namespace_association' => 'Tengd nafnrými',
+'tooltip-namespace_association' => 'Hakaðu við þennan kassa til að hafa með spjallsíður eða tengd nafnrými.',
+'blanknamespace' => '(Aðalnafnrýmið)',
# Contributions
'contributions' => 'Framlög notanda',
@@ -1894,15 +2273,23 @@ Skoðaðu [[Special:Log/delete|eyðingaskrána]] til að skoða eyðingar og end
'month' => 'Frá mánuðinum (og fyrr):',
'year' => 'Frá árinu (og fyrr):',
-'sp-contributions-newbies' => 'Sýna aðeins breytingar frá nýjum notendum',
-'sp-contributions-newbies-sub' => 'Fyrir nýliða',
-'sp-contributions-blocklog' => 'Fyrri bönn',
-'sp-contributions-deleted' => 'Eyddar breytingar notanda',
-'sp-contributions-talk' => 'spjall',
-'sp-contributions-userrights' => 'Breyta notandaréttindum',
-'sp-contributions-search' => 'Leita að framlögum',
-'sp-contributions-username' => 'Vistfang eða notandanafn:',
-'sp-contributions-submit' => 'Leita að breytingum',
+'sp-contributions-newbies' => 'Sýna aðeins breytingar frá nýjum notendum',
+'sp-contributions-newbies-sub' => 'Fyrir nýliða',
+'sp-contributions-newbies-title' => 'Breytingar nýrra notenda',
+'sp-contributions-blocklog' => 'Fyrri bönn',
+'sp-contributions-deleted' => 'Eyddar breytingar notanda',
+'sp-contributions-uploads' => 'upphlöð',
+'sp-contributions-logs' => 'Aðgerðaskrá',
+'sp-contributions-talk' => 'spjall',
+'sp-contributions-userrights' => 'Breyta notandaréttindum',
+'sp-contributions-blocked-notice' => 'Þessi notandi er í banni.
+Síðasta færsla notandans úr bönnunarskrá er sýnd hér fyrir neðan til skýringar:',
+'sp-contributions-blocked-notice-anon' => 'Þetta vistfang er í banni.
+Síðasta færsla vistfangsins úr bönnunarskrá er sýnd hér fyrir neðan til skýringar:',
+'sp-contributions-search' => 'Leita að framlögum',
+'sp-contributions-username' => 'Vistfang eða notandanafn:',
+'sp-contributions-toponly' => 'Aðeins sýna síðustu breytingar',
+'sp-contributions-submit' => 'Leita að breytingum',
# What links here
'whatlinkshere' => 'Hvað tengist hingað',
@@ -1924,18 +2311,20 @@ Skoðaðu [[Special:Log/delete|eyðingaskrána]] til að skoða eyðingar og end
'whatlinkshere-filters' => 'Síur',
# Block/unblock
-'blockip' => 'Banna notanda',
-'blockip-title' => 'Banna notanda',
-'blockip-legend' => 'Banna notanda',
-'blockiptext' => 'Notaðu eyðublaðið hér að neðan til þess að banna ákveðið vistfang eða notandanafn.
+'autoblockid' => 'Sjálfvirkt bann $1',
+'block' => 'Banna notanda',
+'unblock' => 'Afbanna notanda',
+'blockip' => 'Banna notanda',
+'blockip-title' => 'Banna notanda',
+'blockip-legend' => 'Banna notanda',
+'blockiptext' => 'Notaðu eyðublaðið hér að neðan til þess að banna ákveðið vistfang eða notandanafn.
Þetta ætti einungis að gera til þess að koma í veg fyrir skemmdarverk, og í samræmi við [[{{MediaWiki:Policy-url}}|samþykktir]].
Gefðu nákvæma skýringu að neðan (til dæmis, með því að vísa í þær síður sem skemmdar voru).',
-'ipaddress' => 'Vistfang:',
-'ipadressorusername' => 'Vistfang eða notandanafn:',
-'ipbexpiry' => 'Bannið rennur út:',
-'ipbreason' => 'Ãstæða:',
-'ipbreasonotherlist' => 'Aðrar ástæður',
-'ipbreason-dropdown' => '* Algengar bannástæður
+'ipadressorusername' => 'Vistfang eða notandanafn:',
+'ipbexpiry' => 'Bannið rennur út:',
+'ipbreason' => 'Ãstæða:',
+'ipbreasonotherlist' => 'Aðrar ástæður',
+'ipbreason-dropdown' => '* Algengar bannástæður
** Setur inn rangar upplýsingar
** Fjarlægir efni af síðum
** Setur inn rusltengla á utanaðkomandi síður
@@ -1943,72 +2332,112 @@ Gefðu nákvæma skýringu að neðan (til dæmis, með því að vísa í þær
** Yfirþyrmandi framkoma/áreitni
** Misnotkun á fjölda notandanafna
** Óásættanlegt notandanafn',
-'ipbanononly' => 'Banna einungis ónafngreinda notendur',
-'ipbcreateaccount' => 'Banna nýskráningu notanda',
-'ipbemailban' => 'Banna notanda að senda tölvupóst',
-'ipbenableautoblock' => 'Banna síðasta vistfang notanda sjálfkrafa; og þau vistföng sem viðkomandi notar til að breyta síðum',
-'ipbsubmit' => 'Banna notanda',
-'ipbother' => 'Annar tími:',
-'ipboptions' => '2 tíma:2 hours,1 dag:1 day,3 daga:3 days,1 viku:1 week,2 vikur:2 weeks,1 mánuð:1 month,3 mánuði:3 months,6 mánuði:6 months,1 ár:1 year,aldrei:infinite',
-'ipbotheroption' => 'annar',
-'ipbotherreason' => 'Önnur/auka ástæða:',
-'ipbhidename' => 'Fela notandanafn/vistfang úr bannskrá og notandaskrá',
-'ipbwatchuser' => 'Vakta notanda- og spjallsíður þessa notanda',
-'ipballowusertalk' => 'Leyfa notanda að breyta eigin spjallsíðu á meðan hann er í banni',
-'ipb-change-block' => 'Endurbanna notanda með þessum stillingum',
-'badipaddress' => 'Ógilt vistfang',
-'blockipsuccesssub' => 'Bann tókst',
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] hefur verið bannaður/bönnuð.<br />
+'ipb-hardblock' => 'Hindra innskráðum notendum frá því að breyta frá þessu vistfangi.',
+'ipbcreateaccount' => 'Banna nýskráningu notanda',
+'ipbemailban' => 'Banna notanda að senda tölvupóst',
+'ipbenableautoblock' => 'Banna síðasta vistfang notanda sjálfkrafa; og þau vistföng sem viðkomandi notar til að breyta síðum',
+'ipbsubmit' => 'Banna notanda',
+'ipbother' => 'Annar tími:',
+'ipboptions' => '2 tíma:2 hours,1 dag:1 day,3 daga:3 days,1 viku:1 week,2 vikur:2 weeks,1 mánuð:1 month,3 mánuði:3 months,6 mánuði:6 months,1 ár:1 year,aldrei:infinite',
+'ipbotheroption' => 'annar',
+'ipbotherreason' => 'Önnur/auka ástæða:',
+'ipbhidename' => 'Fela notandanafn úr breytingarskrá og listum',
+'ipbwatchuser' => 'Vakta notanda- og spjallsíður þessa notanda',
+'ipb-disableusertalk' => 'Banna þessum notenda að breyta egin spjallsíðu',
+'ipb-change-block' => 'Endurbanna notanda með þessum stillingum',
+'ipb-confirm' => 'Staðfesta bann',
+'badipaddress' => 'Ógilt vistfang',
+'blockipsuccesssub' => 'Bann tókst',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] hefur verið bannaður/bönnuð.<br />
Sjá [[Special:IPBlockList|bannaðar notendur og vistföng]] fyrir yfirlit yfir núverandi bönn.',
-'ipb-edit-dropdown' => 'Breyta ástæðu fyrir banni',
-'ipb-unblock-addr' => 'Afbanna $1',
-'ipb-unblock' => 'Afbanna notanda eða vistfang',
-'ipb-blocklist' => 'Sjá núverandi bönn',
-'ipb-blocklist-contribs' => 'Framlög fyrir $1',
-'unblockip' => 'Afbanna notanda',
-'unblockiptext' => 'Endurvekja skrifréttindi bannaðra notenda eða vistfanga.',
-'ipusubmit' => 'Afbanna',
-'unblocked' => '[[User:$1|$1]] hefur verið afbannaður',
-'unblocked-id' => 'Bann $1 hefur verið fjarlægt',
-'ipblocklist' => 'Bannaðir notendur og vistföng',
-'ipblocklist-legend' => 'Finna bannaðan notanda',
-'ipblocklist-username' => 'Notandanafn eða vistfang:',
-'ipblocklist-submit' => 'Leita',
-'blocklistline' => '$1, $2 bannaði $3 (rennur út $4)',
-'infiniteblock' => 'aldrei',
-'expiringblock' => 'rennur út $1 $2',
-'anononlyblock' => 'bara ónafngreindir',
-'noautoblockblock' => 'sjálfbönnun óvirk',
-'createaccountblock' => 'bann við stofnun nýrra aðganga',
-'emailblock' => 'tölvupóstur bannaður',
-'blocklist-nousertalk' => 'getur ekki breytt eigin spjallsíðu',
-'ipblocklist-empty' => 'Bannlistinn er tómur.',
-'ipblocklist-no-results' => 'Umbeðið vistfang eða notandanafn er ekki í banni.',
-'blocklink' => 'banna',
-'unblocklink' => 'afbanna',
-'change-blocklink' => 'breyta bönnun',
-'contribslink' => 'framlög',
-'autoblocker' => 'Vistfang þitt er bannað vegna þess að það hefur nýlega verið notað af „[[User:$1|$1]]“.
+'ipb-blockingself' => 'Þú ert í þann mund að banna sjálfan þig! Ertu viss um að þú viljir gera það?',
+'ipb-confirmhideuser' => 'Þú ert í þann mund að banna notenda sem er falinn. Notendanafn hans mun ekki birtast í listum og aðgerðarskrám. Ertu viss um að þú viljir gera það?',
+'ipb-edit-dropdown' => 'Breyta ástæðu fyrir banni',
+'ipb-unblock-addr' => 'Afbanna $1',
+'ipb-unblock' => 'Afbanna notanda eða vistfang',
+'ipb-blocklist' => 'Sjá núverandi bönn',
+'ipb-blocklist-contribs' => 'Framlög fyrir $1',
+'unblockip' => 'Afbanna notanda',
+'unblockiptext' => 'Endurvekja skrifréttindi bannaðra notenda eða vistfanga.',
+'ipusubmit' => 'Afbanna',
+'unblocked' => '[[User:$1|$1]] hefur verið afbannaður',
+'unblocked-range' => '$1 hefur verið afbannaður',
+'unblocked-id' => 'Bann $1 hefur verið fjarlægt',
+'blocklist' => 'Bannaðir notendur og vistföng',
+'ipblocklist' => 'Bannaðir notendur og vistföng',
+'ipblocklist-legend' => 'Finna bannaðan notanda',
+'blocklist-userblocks' => 'Fela notendabönn',
+'blocklist-tempblocks' => 'Fela tímabundin bönn',
+'blocklist-addressblocks' => 'Fela einstök bönn vistfanga',
+'blocklist-timestamp' => 'Tímastimpill',
+'blocklist-target' => 'Beinist að',
+'blocklist-expiry' => 'Rennur út',
+'blocklist-by' => 'Bannaður af',
+'blocklist-params' => 'Bönnunar stikar',
+'blocklist-reason' => 'Ãstæða',
+'ipblocklist-submit' => 'Leita',
+'ipblocklist-localblock' => 'Svæðisbundið bann',
+'ipblocklist-otherblocks' => '{{PLURAL:$1|Annað bann|Önnur bönn}}',
+'infiniteblock' => 'aldrei',
+'expiringblock' => 'rennur út $1 $2',
+'anononlyblock' => 'bara ónafngreindir',
+'noautoblockblock' => 'sjálfbönnun óvirk',
+'createaccountblock' => 'bann við stofnun nýrra aðganga',
+'emailblock' => 'tölvupóstur bannaður',
+'blocklist-nousertalk' => 'getur ekki breytt eigin spjallsíðu',
+'ipblocklist-empty' => 'Bannlistinn er tómur.',
+'ipblocklist-no-results' => 'Umbeðið vistfang eða notandanafn er ekki í banni.',
+'blocklink' => 'banna',
+'unblocklink' => 'afbanna',
+'change-blocklink' => 'breyta bönnun',
+'contribslink' => 'framlög',
+'autoblocker' => 'Vistfang þitt er bannað vegna þess að það hefur nýlega verið notað af „[[User:$1|$1]]“.
Ãstæðan fyrir því að $1 var bannaður er: „$2“',
-'blocklogpage' => 'Bönnunarskrá',
-'blocklogentry' => 'bannaði „[[$1]]“; rennur út eftir: $2 $3',
-'blocklogtext' => 'Þetta er skrá yfir bönn sem lögð hafa verið á notendur eða bönn sem hafa verið numin úr gildi.
+'blocklogpage' => 'Bönnunarskrá',
+'blocklog-showlog' => 'Notandinn hefur verið bannaður áður.
+Síðasta færsla notandans úr bönnunarskrá er sýnd hér fyrir neðan til skýringar:',
+'blocklog-showsuppresslog' => 'Notandinn hefur verið bældur niður áður.
+Síðasta færsla notandans úr bælingarskrá er sýnd hér fyrir neðan til skýringar:',
+'blocklogentry' => 'bannaði „[[$1]]“; rennur út eftir: $2 $3',
+'reblock-logentry' => 'breytti banni [[$1]] rennur út $2 $3',
+'blocklogtext' => 'Þetta er skrá yfir bönn sem lögð hafa verið á notendur eða bönn sem hafa verið numin úr gildi.
Vistföng sem sett hafa verið í bann sjálfvirkt birtast ekki hér.
-Sjá [[Special:IPBlockList|ítarlegri lista]] fyrir öll núgildandi bönn.',
-'unblocklogentry' => 'afbannaði $1',
-'block-log-flags-anononly' => 'bara ónefndir notendur',
-'block-log-flags-nocreate' => 'gerð aðganga bönnuð',
-'block-log-flags-noautoblock' => 'sjálfkrafa bann óvirkt',
-'block-log-flags-noemail' => 'netfang bannað',
-'block-log-flags-hiddenname' => 'notandanafn falið',
-'ipb_expiry_invalid' => 'Tími ógildur.',
-'ipb_already_blocked' => '„$1“ er nú þegar í banni',
-'ipb_cant_unblock' => 'Villa: Bann-tala $1 fannst ekki. Bannið gæti verið útrunnið eða hún afbönnuð.',
-'ip_range_invalid' => 'Ógilt vistfangasvið.',
-'blockme' => 'Banna mig',
-'proxyblocker-disabled' => 'Þessi virkni er óvirk.',
-'proxyblocksuccess' => 'Búinn.',
-'cant-block-while-blocked' => 'Þú getur ekki bannað aðra notendur á meðan þú ert í banni.',
+Sjá [[Special:BlockList|ítarlegri lista]] fyrir öll núgildandi bönn.',
+'unblocklogentry' => 'afbannaði $1',
+'block-log-flags-anononly' => 'bara ónefndir notendur',
+'block-log-flags-nocreate' => 'gerð aðganga bönnuð',
+'block-log-flags-noautoblock' => 'sjálfkrafa bann óvirkt',
+'block-log-flags-noemail' => 'netfang bannað',
+'block-log-flags-nousertalk' => 'getur ekki breytt eigin spjallsíðu',
+'block-log-flags-angry-autoblock' => 'sjálfkrafa bann virkt',
+'block-log-flags-hiddenname' => 'notandanafn falið',
+'range_block_disabled' => 'Möppudýr geta ekki fjöldabannað vistföng á þessum wiki.',
+'ipb_expiry_invalid' => 'Tími ógildur.',
+'ipb_expiry_temp' => 'Bönn faldra notenda verða að vera varanleg.',
+'ipb_hide_invalid' => 'Mistókst að bæla niður þennan aðgang; mögulega hefur hann of margar breytingar.',
+'ipb_already_blocked' => '„$1“ er nú þegar í banni',
+'ipb-needreblock' => '$1 er þegar bannaður. Vilt þú breyta banninu?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|Annað bann|Önnur bönn}}',
+'unblock-hideuser' => 'Þú getur ekki afbannað þennan notanda, því notendanafn hans hefur verið falið.',
+'ipb_cant_unblock' => 'Villa: Bann-tala $1 fannst ekki. Bannið gæti verið útrunnið eða hún afbönnuð.',
+'ipb_blocked_as_range' => 'Villa: Ekki er hægt að afbanna vistfangið $1, því það er hluti af fjöldabanni.
+Vistfangið var bannað sem hluti af fjöldabanninu $2, sem er hægt að afbanna.',
+'ip_range_invalid' => 'Ógilt vistfangasvið.',
+'ip_range_toolarge' => 'Fjöldabönn stærri en /$1 eru óheimil.',
+'blockme' => 'Banna mig',
+'proxyblocker' => 'Vefsels bann',
+'proxyblocker-disabled' => 'Þessi virkni er óvirk.',
+'proxyblockreason' => 'Vistfangið þitt hefur verið bannað því það er opið vefsel.
+Vinsamlegast hafðu samband við internetþjónustuaðilann þinn eða netstjóra félagsins og láttu þá vita af þessu alvarlegu öryggisvandamáli.',
+'proxyblocksuccess' => 'Búinn.',
+'sorbsreason' => 'Vistfangið þitt er á lista yfir opin vefsel í DNSBL sem er í notkun á {{SITENAME}}.',
+'sorbs_create_account_reason' => 'Vistfangið þitt er á lista yfir opin vefsel í DNSBL sem er notað af {{SITENAME}}.
+Þú getur ekki stofnað aðgang.',
+'cant-block-while-blocked' => 'Þú getur ekki bannað aðra notendur á meðan þú ert í banni.',
+'cant-see-hidden-user' => 'Notandinn sem þú ert að reyna að banna hefur þegar verið bannaður og falinn.
+Þar sem þú hefur ekki þau réttindi að fela notendur, þá getur þú ekki séð eða breytt banni notandans.',
+'ipbblocked' => 'Þú getur ekki bannað eða afbannað aðra notendur, því þú ert sjálfur í banni.',
+'ipbnounblockself' => 'Þér er óheimilt að afbanna sjálfan þig',
# Developer tools
'lockdb' => 'Læsa gagnagrunninum',
@@ -2026,97 +2455,140 @@ Mundu að [[Special:UnlockDB|opna hann aftur]] þegar þú hefur lokið viðgerÃ
'databasenotlocked' => 'Gagnagrunnurinn er ekki læstur.',
# Move page
-'move-page' => 'Færa $1',
-'move-page-legend' => 'Færa síðu',
-'movepagetext' => "Hér er hægt að endurnefna síðu. Hún færist, ásamt breytingaskránni, yfir á nýtt heiti og eldra heitið myndar tilvísun á það. Þú getur sjálfkrafa uppfært tilvísanir á nýja heitið. Ef þú vilt það síður, athugaðu þá hvort nokkuð myndist [[Special:DoubleRedirects|tvöfaldar]] eða [[Special:BrokenRedirects|brotnar tilvísanir]].
+'move-page' => 'Færa $1',
+'move-page-legend' => 'Færa síðu',
+'movepagetext' => "Hér er hægt að endurnefna síðu. Hún færist, ásamt breytingaskránni, yfir á nýtt heiti og eldra heitið myndar tilvísun á það. Þú getur sjálfkrafa uppfært tilvísanir á nýja heitið. Ef þú vilt það síður, athugaðu þá hvort nokkuð myndist [[Special:DoubleRedirects|tvöfaldar]] eða [[Special:BrokenRedirects|brotnar tilvísanir]].
Þú berð ábyrgð á því að tenglar vísi á rétta staði.
Athugaðu að síðan mun '''ekki''' færast ef þegar er síða á nafninu sem þú hyggst færa hana á, nema sú síða sé tóm eða tilvísun sem vísar á síðuna sem þú ætlar að færa. Þú getur þar með fært síðuna aftur til baka án þess að missa breytingarsöguna, en ekki fært hana yfir venjulega síðu.
'''Varúð:'''
Athugaðu að þessi aðgerð getur kallað fram viðbrögð annarra notenda og getur þýtt mjög rótækar breytingar á vinsælum síðum.",
-'movepagetalktext' => 'Spallsíða síðunnar verður sjálfkrafa færð með ef hún er til nema:
+'movepagetext-noredirectfixer' => "Með þessu eyðublaði er hægt að endurnefna síðu og færa alla breytingarskrá hennar á nýja nafnið. Gamli titillinn verður að tilvísun á nýja titilinn.
+Athugaðu hvort síðan tengist [[Special:DoubleRedirects|tvöfaldri]]- eða [[Special:BrokenRedirects|brotinni]] tilvísun.
+Þú berð ábyrgð á því að tenglarnir haldi áfram að tengjast á réttan stað.
+
+Athugaðu að síðan verður '''ekki''' færð ef síða er þegar til á nýja titlinum, nema hann sé annaðhvort tómur, tilvísun eða hafi enga breytingarskrá.
+Þetta merkir að þú getur fært síðu aftur til baka á þann stað sem hún var færð frá ef þú gerir mistök og þú getur ekki skrifað yfir síðu sem er þegar til.
+
+'''Varúð:'''
+Ef síðan er vinsæl þá getur þessi aðgerð kallað fram viðbrögð annara notenda og getur þýtt mjög rótækar breytingar á öðrum síðum. Vertu viss um að þú skiljir hættuna áður en þú heldur áfram.",
+'movepagetalktext' => 'Spallsíða síðunnar verður sjálfkrafa færð með ef hún er til nema:
* Þú sért að færa síðuna á milli nafnrýma
* Spallsíða sé þegar til undir nýja nafninu
* Þú veljir að færa hana ekki
à þeim tilfellum verður að færa hana handvirkt.',
-'movearticle' => 'Færa síðu:',
-'movenologin' => 'Óinnskráð(ur)',
-'movenologintext' => 'Þú verður að vera [[Special:UserLogin|innskráð(ur)]] til að geta fært síður.',
-'movenotallowed' => 'Þú hefur ekki leyfi til að færa síður.',
-'movenotallowedfile' => 'Þú hefur ekki leyfi til að færa skrár.',
-'cant-move-user-page' => 'Þú hefur ekki leyfi til að færa notandasíðu (fyrir utan undirsíður).',
-'cant-move-to-user-page' => 'Þú hefur ekki leyfi til að færa síðu á notandasíðu (að frátöldum undirsíðum notanda).',
-'newtitle' => 'à nýja titilinn:',
-'move-watch' => 'Vakta þessa síðu',
-'movepagebtn' => 'Færa síðu',
-'pagemovedsub' => 'Færsla tókst',
-'movepage-moved' => "'''„$1“ hefur verið færð á „$2“'''",
-'movepage-moved-redirect' => 'Tilvísun hefur verið búin til.',
-'movepage-moved-noredirect' => 'Tilvísun var ekki búin til.',
-'articleexists' => 'Annaðhvort er þegar til síða undir þessum titli, eða sá titill sem þú hefur valið er ekki gildur.
+'movearticle' => 'Færa síðu:',
+'moveuserpage-warning' => "'''Viðvörun:''' Þú ert í þann mund að færa notendasíðu. Athugaðu aðeins síðan verður færð og notendanafni hans verður '''ekki''' breytt.",
+'movenologin' => 'Óinnskráð(ur)',
+'movenologintext' => 'Þú verður að vera [[Special:UserLogin|innskráð(ur)]] til að geta fært síður.',
+'movenotallowed' => 'Þú hefur ekki leyfi til að færa síður.',
+'movenotallowedfile' => 'Þú hefur ekki leyfi til að færa skrár.',
+'cant-move-user-page' => 'Þú hefur ekki leyfi til að færa notandasíðu (fyrir utan undirsíður).',
+'cant-move-to-user-page' => 'Þú hefur ekki leyfi til að færa síðu á notandasíðu (að frátöldum undirsíðum notanda).',
+'newtitle' => 'à nýja titilinn:',
+'move-watch' => 'Vakta þessa síðu',
+'movepagebtn' => 'Færa síðu',
+'pagemovedsub' => 'Færsla tókst',
+'movepage-moved' => "'''„$1“ hefur verið færð á „$2“'''",
+'movepage-moved-redirect' => 'Tilvísun hefur verið búin til.',
+'movepage-moved-noredirect' => 'Tilvísun var ekki búin til.',
+'articleexists' => 'Annaðhvort er þegar til síða undir þessum titli, eða sá titill sem þú hefur valið er ekki gildur.
Vinsamlegast veldu annan titil.',
-'cantmove-titleprotected' => 'Þú getur ekki fært síðu á þessa staðsetningu, því nýi titillinn hefur verið verndaður gegn sköpun',
-'talkexists' => "'''Færsla á síðunni sjálfri heppnaðist, en ekki var hægt að færa spjallsíðuna því hún er nú þegar til á nýja titlinum.
+'cantmove-titleprotected' => 'Þú getur ekki fært síðu á þessa staðsetningu, því nýi titillinn hefur verið verndaður gegn sköpun',
+'talkexists' => "'''Færsla á síðunni sjálfri heppnaðist, en ekki var hægt að færa spjallsíðuna því hún er nú þegar til á nýja titlinum.
Gjörðu svo vel og færðu hana handvirkt.'''",
-'movedto' => 'fært á',
-'movetalk' => 'Færa meðfylgjandi spjallsíðu',
-'move-subpages' => 'Færa undirstíður (upp að $1)',
-'move-talk-subpages' => 'Færa undirstíður spjallsíðunnar (upp að $1)',
-'movepage-page-exists' => 'Síðan $1 er nú þegar til og er ekki hægt að yfirskrifa sjálfkrafa.',
-'movepage-page-moved' => 'Síðan $1 hefur verið færð á $2.',
-'movepage-page-unmoved' => 'Ekki var hægt að færa síðuna $1 á $2.',
-'movepage-max-pages' => 'Hámarkinu, $1 {{PLURAL:$1|síða|síður}}, hefur verið náð og verða engar fleiri færðar sjálfvirkt.',
-'1movedto2' => '[[$1]] færð á [[$2]]',
-'1movedto2_redir' => '[[$1]] færð á [[$2]] yfir tilvísun',
-'move-redirect-suppressed' => 'tilvísun leynd',
-'movelogpage' => 'Flutningaskrá',
-'movelogpagetext' => 'Þetta er listi yfir síður sem nýlega hafa verið færðar.',
-'movesubpage' => '{{Plural:$1|Undirsíða|Undirsíður}}',
-'movereason' => 'Ãstæða:',
-'revertmove' => 'taka til baka',
-'delete_and_move' => 'Eyða og flytja',
-'delete_and_move_text' => '==Beiðni um eyðingu==
+'movedto' => 'fært á',
+'movetalk' => 'Færa meðfylgjandi spjallsíðu',
+'move-subpages' => 'Færa undirstíður (upp að $1)',
+'move-talk-subpages' => 'Færa undirstíður spjallsíðunnar (upp að $1)',
+'movepage-page-exists' => 'Síðan $1 er nú þegar til og er ekki hægt að yfirskrifa sjálfkrafa.',
+'movepage-page-moved' => 'Síðan $1 hefur verið færð á $2.',
+'movepage-page-unmoved' => 'Ekki var hægt að færa síðuna $1 á $2.',
+'movepage-max-pages' => 'Hámarkinu, $1 {{PLURAL:$1|síða|síður}}, hefur verið náð og verða engar fleiri færðar sjálfvirkt.',
+'1movedto2' => '[[$1]] færð á [[$2]]',
+'1movedto2_redir' => '[[$1]] færð á [[$2]] yfir tilvísun',
+'move-redirect-suppressed' => 'tilvísun leynd',
+'movelogpage' => 'Flutningaskrá',
+'movelogpagetext' => 'Þetta er listi yfir síður sem nýlega hafa verið færðar.',
+'movesubpage' => '{{Plural:$1|Undirsíða|Undirsíður}}',
+'movesubpagetext' => 'Þessi síða hefur {{PLURAL:$1|eina undirsíðu|$1 undirsíður}} sem {{PLURAL:$1|er sýnd|eru sýndar}} hér fyrir neðan.',
+'movenosubpage' => 'Þessi síða hefur engar undirsíður.',
+'movereason' => 'Ãstæða:',
+'revertmove' => 'taka til baka',
+'delete_and_move' => 'Eyða og flytja',
+'delete_and_move_text' => '==Beiðni um eyðingu==
Síðan „[[:$1]]“ er þegar til. Viltu eyða henni til þess að rýma til fyrir flutningi?',
-'delete_and_move_confirm' => 'Já, eyða síðunni',
-'delete_and_move_reason' => 'Eytt til að rýma til fyrir flutning',
-'selfmove' => 'Nýja nafnið er það sama og gamla, þú verður að velja annað nafn.',
-'immobile-source-namespace' => 'Get ekki fært síður í nafnrýminu „$1“',
-'immobile-target-namespace' => 'Get ekki fært síður inn í nafnrýmið „$1“',
-'immobile-source-page' => 'Þessi síða er ekki færanleg.',
-'immobile-target-page' => 'Get ekki fært á áætlaðan titil.',
-'imagenocrossnamespace' => 'Get ekki fært skrá í skrálaust nafnrými',
-'imagetypemismatch' => 'Nýi nafnaukinn passar ekki við tegund hennar',
-'imageinvalidfilename' => 'Markskráarnafnið er ógilt',
-'fix-double-redirects' => 'Uppfæra tilvísanir sem vísa á upphaflegan titil',
-'move-leave-redirect' => 'Skilja tilvísun eftir',
+'delete_and_move_confirm' => 'Já, eyða síðunni',
+'delete_and_move_reason' => 'Eytt til að rýma til fyrir flutning',
+'selfmove' => 'Nýja nafnið er það sama og gamla, þú verður að velja annað nafn.',
+'immobile-source-namespace' => 'Get ekki fært síður í nafnrýminu „$1“',
+'immobile-target-namespace' => 'Get ekki fært síður inn í nafnrýmið „$1“',
+'immobile-target-namespace-iw' => 'Óheimilt er að færa síðu með tungumálatengli.',
+'immobile-source-page' => 'Þessi síða er ekki færanleg.',
+'immobile-target-page' => 'Get ekki fært á áætlaðan titil.',
+'imagenocrossnamespace' => 'Get ekki fært skrá í skrálaust nafnrými',
+'nonfile-cannot-move-to-file' => 'Get ekki fært annað en skrár í nafnrými skráa.',
+'imagetypemismatch' => 'Nýi nafnaukinn passar ekki við tegund hennar',
+'imageinvalidfilename' => 'Markskráarnafnið er ógilt',
+'fix-double-redirects' => 'Uppfæra tilvísanir sem vísa á upphaflegan titil',
+'move-leave-redirect' => 'Skilja tilvísun eftir',
+'protectedpagemovewarning' => "'''Viðvörun:''' Þessari síðu hefur verið læst svo aðeins notendur með möppudýraréttindi geta fært hana.
+Síðasta færsla síðunnar úr verndunarskrá er sýnd til skýringar:",
+'semiprotectedpagemovewarning' => "'''Athugið''': Þessari síðu hefur verið læst þannig að aðeins innskráðir notendur geti fært hana.
+Síðasta færsla síðunnar úr verndunarskrá er sýnd til skýringar:",
+'move-over-sharedrepo' => '== Skráin er þegar til ==
+[[:$1]] er þegar til í sameiginlega myndasafninu. Ef skráin yrði færð á þennan titil myndi hún sjást í stað þeirrar skráar sem er til fyrir á sameiginlega myndasafninu.',
+'file-exists-sharedrepo' => 'Skráarnafnið er þegar í notkun á sameiginlega myndasafninu.
+Vinsamlegast veldu annað nafn.',
# Export
'export' => 'Flytja út síður',
+'exporttext' => 'Þú getur flutt texta og breytingarsögu síðu eða fjölda síðna sem eru tilgreindar í XML skjali.
+Þessi gögn er hægt að flytja inn á annan wiki með möguleikanum að [[Special:Import|flytja inn síðu]].
+
+Til þess að flytja út síður, skrifaðu titla þeirra í reitina hér fyrir neðan, einn titil í hvern reit og veldu hvort þú viljir núverandi útgáfu með eldri útgáfum hennar, eða núverandi breytingu með upplýsingum um síðustu breytingu.
+
+Ef síðari möguleikinn á við getur þú einnig notað tengil, til dæmis
+[[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] fyrir síðuna "[[{{MediaWiki:Mainpage}}]]".',
'exportcuronly' => 'Aðeins núverandi útgáfu án breytingaskrár',
'exportnohistory' => "----
'''Athugaðu:''' Að flytja út alla breytingasögu síðna á þennan hátt hefur verið óvirkjað vegna ástæðna afkasta.",
'export-submit' => 'Flytja',
'export-addcattext' => 'Bæta við síðum frá flokkinum:',
'export-addcat' => 'Bæta við',
+'export-addnstext' => 'Bæta við síðum frá nafnrýminu:',
+'export-addns' => 'Bæta við',
'export-download' => 'Vista sem skjal',
+'export-templates' => 'Innifala sniðin með',
+'export-pagelinks' => 'Innifela tengdar síður með dýptinni:',
# Namespace 8 related
-'allmessages' => 'Meldingar',
-'allmessagesname' => 'Titill',
-'allmessagesdefault' => 'Sjálfgefinn texti',
-'allmessagescurrent' => 'Núverandi texti',
-'allmessagestext' => 'Þetta er listi yfir kerfismeldingar í Melding-nafnrýminu.
-Gjörðu svo vel og heimsæktu [http://www.mediawiki.org/wiki/Localisation MediaWiki-staðfæringuna] og [http://translatewiki.net translatewiki.net] ef þú vilt taka þátt í almennri MediaWiki-staðfæringu.',
-'allmessagesnotsupportedDB' => "Það er ekki hægt að nota '''{{ns:special}}:Allmessages''' því '''\$wgUseDatabaseMessages''' hefur verið gerð óvirk.",
-'allmessages-language' => 'Tungumál:',
-'allmessages-filter-submit' => 'Ãfram',
+'allmessages' => 'Meldingar',
+'allmessagesname' => 'Titill',
+'allmessagesdefault' => 'Sjálfgefinn texti',
+'allmessagescurrent' => 'Núverandi texti',
+'allmessagestext' => 'Þetta er listi yfir kerfismeldingar í Melding-nafnrýminu.
+Gjörðu svo vel og heimsæktu [//www.mediawiki.org/wiki/Localisation MediaWiki-staðfæringuna] og [//translatewiki.net translatewiki.net] ef þú vilt taka þátt í almennri MediaWiki-staðfæringu.',
+'allmessagesnotsupportedDB' => "Það er ekki hægt að nota '''{{ns:special}}:Allmessages''' því '''\$wgUseDatabaseMessages''' hefur verið gerð óvirk.",
+'allmessages-filter-legend' => 'Sía',
+'allmessages-filter' => 'Sía með breytingarstöðu:',
+'allmessages-filter-unmodified' => 'Óbreytt',
+'allmessages-filter-all' => 'Allt',
+'allmessages-filter-modified' => 'Breyttar',
+'allmessages-prefix' => 'Sía með forskeyti:',
+'allmessages-language' => 'Tungumál:',
+'allmessages-filter-submit' => 'Ãfram',
# Thumbnails
-'thumbnail-more' => 'Stækka',
-'filemissing' => 'Skrá vantar',
-'thumbnail_error' => 'Villa við gerð smámyndar: $1',
+'thumbnail-more' => 'Stækka',
+'filemissing' => 'Skrá vantar',
+'thumbnail_error' => 'Villa við gerð smámyndar: $1',
+'thumbnail_invalid_params' => 'Breytur smámyndarinnar eru rangar',
+'thumbnail_dest_directory' => 'Mistókst að búa til niðurhals möppu',
+'thumbnail_image-type' => 'Enginn stuðningur er við þetta skráarsnið',
+'thumbnail_image-missing' => 'Skránna vantar: $1',
# Special:Import
'import' => 'Flytja inn síður',
@@ -2124,25 +2596,46 @@ Gjörðu svo vel og heimsæktu [http://www.mediawiki.org/wiki/Localisation Media
'import-interwiki-text' => 'Veldu Wiki-kerfi og síðutitil til að flytja inn.
Breytingaupplýsingar s.s. dagsetningar og höfundanöfn eru geymd.
Allir innflutningar eru skráð í [[Special:Log/import|innflutningsskránna]].',
+'import-interwiki-source' => 'Uppruni wiki síðunnar:',
'import-interwiki-history' => 'Afrita allar breytingar þessarar síðu',
+'import-interwiki-templates' => 'Innifala öll snið með',
'import-interwiki-submit' => 'Flytja inn',
'import-interwiki-namespace' => 'Ãkvörðunarnafnrými:',
'import-upload-filename' => 'Skráarnafn:',
'import-comment' => 'Athugasemdir:',
+'importtext' => 'Vinsamlegast fluttu út skránna frá upprunalegum wiki með því að nota [[Special:Export|Flytja út síður]].
+Vistaðu skránna á tölvunni þinni og hladdu henni inn hér.',
'importstart' => 'Flyt inn síður...',
'import-revision-count' => '$1 {{PLURAL:$1|breyting|breytingar}}',
'importnopages' => 'Engar síður til innflutnings.',
+'imported-log-entries' => '$1 {{PLURAL:$1|breytingar færsla|breytingar færslur}} hafa verið fluttar inn',
'importfailed' => 'Innhlaðning mistókst: $1',
'importcantopen' => 'Get ekki opnað innflutt skjal',
'importbadinterwiki' => 'Villa í tungumálatengli',
'importnotext' => 'Tómt eða enginn texti',
'importsuccess' => 'Innflutningi lokið!',
+'importhistoryconflict' => 'Breytingarskrá þessarar síðu er þegar til (gæti hafa verið flutt inn áður)',
+'importnosources' => 'Engin uppspretta hefur verið valin og bein upphlöð breytingarskráa eru óvirk.',
+'importnofile' => 'Engri skrá var hlaðið inn.',
+'importuploaderrorsize' => 'Upphlöðun skráarinnar mistókst.
+Skráin er stærri en hámarsstærð síðna segir til um.',
+'importuploaderrorpartial' => 'Upphlöðun skráarinnar mistókst.
+Skráinni var eingöngu að hluta til hlaðið inn.',
+'importuploaderrortemp' => 'Upphlöðun skráarinnar mistókst.
+Tímabundin mappa fannst ekki.',
+'import-parse-failure' => 'Þáttunarvilla við innflutning XML skjals',
'import-noarticle' => 'Engin síða til innflutnings!',
+'import-nonewrevisions' => 'Allar breytingar voru fluttar inn.',
+'xml-error-string' => '$1 í línu $2, dálki $3 ($4 bæt): $5',
'import-upload' => 'Hlaða inn XML-gögnum',
+'import-token-mismatch' => 'Týnd setu gögn.
+Vinsamlegast reyndu aftur.',
+'import-invalid-interwiki' => 'Get ekki flutt inn frá þessum wiki.',
# Import log
'importlogpage' => 'Innflutningsskrá',
-'import-logentry-upload' => 'flutti inn [[$1]] með innflutningi',
+'importlogpagetext' => 'Hér er listi yfir innflutninga möppdýra á síðum ásamt breytingarskránni frá öðrum wiki.',
+'import-logentry-upload' => 'flutti inn [[$1]] frá skrá',
'import-logentry-upload-detail' => '$1 {{PLURAL:$1|breyting|breytingar}}',
'import-logentry-interwiki' => 'flutti inn $1',
'import-logentry-interwiki-detail' => '$1 {{PLURAL:$1|breyting|breytingar}} frá $2',
@@ -2209,6 +2702,10 @@ Allir innflutningar eru skráð í [[Special:Log/import|innflutningsskránna]].'
'tooltip-watch' => 'Bæta þessari síðu á vaktlistann þinn',
'tooltip-recreate' => 'Endurvekja síðuna þó henni hafi verið eytt',
'tooltip-upload' => 'Hefja innhleðslu',
+'tooltip-rollback' => '"taka aftur" breytir greininni til síðasta höfundar með einum smelli',
+'tooltip-undo' => '"Tek aftur þessa breytingu" breytir aftur til síðustu breytingu og opnar breytinguna í forskoðun. Hægt er að bæta við ástæðu í breytingarávarpinu.',
+'tooltip-preferences-save' => 'Vista stillingar',
+'tooltip-summary' => 'Bættu við stuttu ágripi',
# Stylesheets
'common.css' => '/* Allt CSS sem sett er hér mun virka á öllum þemum. */',
@@ -2217,21 +2714,40 @@ Allir innflutningar eru skráð í [[Special:Log/import|innflutningsskránna]].'
# Scripts
'common.js' => '/* Allt JavaScript sem sett er hér mun virka í hvert skipti sem að síða hleðst. */',
+# Metadata
+'notacceptable' => 'Wiki vefþjónninn getur ekki útvegað gögn á því formi sem biðlarinn þinn getur lesið.',
+
# Attribution
'anonymous' => '{{PLURAL:$1|Óþekktur notandi|Óþekktir notendur}} á {{SITENAME}}',
'siteuser' => '{{SITENAME}} notandi $1',
+'anonuser' => '{{SITENAME}} nafnlaus notandi $1',
'lastmodifiedatby' => 'Þessari síðu var síðast breytt $1 klukkan $2 af $3.',
'othercontribs' => 'Byggt á verkum $1.',
'others' => 'aðrir',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|notandi|notendur}} $1',
+'anonusers' => '{{SITENAME}} {{PLURAL:$2|nafnlaus notandi|nafnlausir notendur}} $1',
+
+# Spam protection
+'spamprotectiontitle' => 'Amapósts sía',
+'spamprotectiontext' => 'Textinn sem þú vildir vista var hafnað af amapósts síunni.
+Þetta er líklega vegna tengils á síðu sem er á svörtum lista.',
+'spamprotectionmatch' => 'Eftirfarandi texti hrinti amapósts síunni af stað: $1',
+'spambot_username' => 'MediaWiki amapósts hreinsun',
+'spam_reverting' => 'Tek aftur síðustu breytingu sem inniheldur ekki tengil á $1',
+'spam_blanking' => 'Allar útgáfur innihéldu tengla á $1, tæmi síðuna',
# Info page
-'infosubtitle' => 'Upplýsingar um síðu',
-'numedits' => 'Fjöldi breytinga (síða): $1',
-'numtalkedits' => 'Fjöldi breytinga (spjall síða): $1',
-'numwatchers' => 'Fjöldi vaktara: $1',
-'numauthors' => 'Fjöldi frábrugðinna höfunda (grein): $1',
-'numtalkauthors' => 'Fjöldi frábrugðinna höfunda (spjall síða): $1',
+'pageinfo-title' => 'Upplýsingar um $1',
+'pageinfo-header-edits' => 'Breytingar',
+'pageinfo-header-watchlist' => 'Vaktlistinn',
+'pageinfo-header-views' => 'Flettingar',
+'pageinfo-subjectpage' => 'Síða',
+'pageinfo-talkpage' => 'Spjallsíða',
+'pageinfo-watchers' => 'Fjöldi notenda',
+'pageinfo-edits' => 'Fjöldi breytinga',
+'pageinfo-authors' => 'Fjöldi einstakra höfunda',
+'pageinfo-views' => 'Fjöldi innlita',
+'pageinfo-viewsperedit' => 'Flettingar á hverja breytingu',
# Skin names
'skinname-standard' => 'Sígilt',
@@ -2243,26 +2759,11 @@ Allir innflutningar eru skráð í [[Special:Log/import|innflutningsskránna]].'
'skinname-simple' => 'Einfalt',
'skinname-modern' => 'Nútímalegt',
-# Math options
-'mw_math_png' => 'Alltaf birta PNG mynd',
-'mw_math_simple' => 'HTML fyrir einfaldar jöfnur annars PNG',
-'mw_math_html' => 'HTML ef hægt er, annars PNG',
-'mw_math_source' => 'Sýna TeX jöfnu (fyrir textavafra)',
-'mw_math_modern' => 'Mælt með fyrir nýja vafra',
-'mw_math_mathml' => 'MathML ef mögulegt (tilraun)',
-
-# Math errors
-'math_failure' => 'Þáttun mistókst',
-'math_unknown_error' => 'óþekkt villa',
-'math_unknown_function' => 'óþekkt virkni',
-'math_lexing_error' => 'lestrarvilla',
-'math_syntax_error' => 'málfræðivilla',
-
# Patrolling
'markaspatrolleddiff' => 'Merkja sem yfirfarið',
'markaspatrolledtext' => 'Merkja þessa síðu sem yfirfarna',
'markedaspatrolled' => 'Merkja sem yfirfarið',
-'markedaspatrolledtext' => 'Valin breyting hefur verið merkt sem yfirfarin.',
+'markedaspatrolledtext' => 'Valda breytingin [[:$1]] hefur verið merkt sem yfirfarin.',
'rcpatroldisabled' => 'Slökkt á yfirferð nýlegra breytinga',
'rcpatroldisabledtext' => 'Yfirferð nýlegra breytinga er ekki virk.',
'markedaspatrollederror' => 'Get ekki merkt sem yfirfarið',
@@ -2270,17 +2771,21 @@ Allir innflutningar eru skráð í [[Special:Log/import|innflutningsskránna]].'
'markedaspatrollederror-noautopatrol' => 'Þú hefur ekki réttindi til að merkja eigin breytingar sem yfirfarnar.',
# Patrol log
-'patrol-log-page' => 'Yfirferðarskrá',
-'patrol-log-header' => 'Þetta er skrá yfir yfirfarna breytingar.',
-'patrol-log-line' => 'merkti $1 eftir $2 sem yfirfarið $3',
-'patrol-log-auto' => '(sjálfkrafa)',
-'patrol-log-diff' => 'útgáfa $1',
+'patrol-log-page' => 'Yfirferðarskrá',
+'patrol-log-header' => 'Þetta er skrá yfir yfirfarnar breytingar.',
+'patrol-log-line' => 'merkti $2 frá $1 $3 sem yfirfarna',
+'patrol-log-auto' => 'sjálfkrafa',
+'patrol-log-diff' => 'útgáfu $1',
+'log-show-hide-patrol' => '$1 Listi yfir vaktaðar síður',
# Image deletion
-'deletedrevision' => 'Eydd gömul útgáfu $1',
-'filedeleteerror-short' => 'Villa við eyðingu: $1',
-'filedeleteerror-long' => 'Það kom upp villa við eyðingu skráarinnar: $1',
-'filedelete-missing' => 'Skránni „$1“ er ekki hægt að eyða vegna þess að hún er ekki til.',
+'deletedrevision' => 'Eyddi gamla útgáfu $1',
+'filedeleteerror-short' => 'Villa við eyðingu: $1',
+'filedeleteerror-long' => 'Það kom upp villa við eyðingu skráarinnar: $1',
+'filedelete-missing' => 'Skránni „$1“ er ekki hægt að eyða vegna þess að hún er ekki til.',
+'filedelete-old-unregistered' => 'Tilgreind útgáfa "$1" er ekki til í gagnabankanum.',
+'filedelete-current-unregistered' => 'Tilgreind skrá "$1" er ekki til í gagnabankanum.',
+'filedelete-archive-read-only' => 'Mistókst að skrifa möppu skjalasafna ($1) á vefþjón.',
# Browsing diffs
'previousdiff' => '↠Eldri breyting',
@@ -2288,15 +2793,21 @@ Allir innflutningar eru skráð í [[Special:Log/import|innflutningsskránna]].'
# Media information
'mediawarning' => "'''AÃVÖRUN''': Þessi skrá kann að hafa meinfýsinn kóða, ef keyrður kann hann að stofna kerfinu þínu í hættu.",
-'imagemaxsize' => 'Takmarka myndir á skráarlýsingasíðum við:',
+'imagemaxsize' => "Takmarka myndastærð:<br />''(fyrir skráarsíður)''",
'thumbsize' => 'Stærð smámynda:',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|síða|síður}}',
'file-info' => 'stærð skráar: $1, MIME-tegund: $2',
'file-info-size' => '$1 × $2 dílar, stærð skráar: $3, MIME-gerð: $4',
+'file-info-size-pages' => '$1 x $2 dílar, skráarstærð: $3, MIME-gerð: $4, $5 {{PLURAL:$5|síða|síður}} tengja í skránna.',
'file-nohires' => '<small>Það er engin hærri upplausn til.</small>',
'svg-long-desc' => 'SVG-skrá, að nafni til $1 × $2 dílar, skráarstærð: $3',
'show-big-image' => 'Mesta upplausn',
-'show-big-image-thumb' => '<small>Myndin er í upplausninni $1 × $2 </small>',
+'show-big-image-size' => '$1 x $2 dílar',
+'file-info-gif-looped' => 'síendurtekin hreyfimynd',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|rammi|rammar}}',
+'file-info-png-looped' => 'síendurtekin hreyfimynd',
+'file-info-png-repeat' => 'spilað {{PLURAL:$1|einu sinni|$1 sinnum}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|rammi|rammar}}',
# Special:NewFiles
'newimages' => 'Myndasafn nýlegra skráa',
@@ -2323,7 +2834,7 @@ Allir síðari tenglar á sömu línu eru taldir vera undantekningar, þ.e. síÃ
Ef skránni hefur verið breytt, kann að vera að einhverjar upplýsingar eigi ekki við um hana.',
'metadata-expand' => 'Sýna frekari upplýsingar',
'metadata-collapse' => 'Fela auka upplýsingar',
-'metadata-fields' => 'EXIF-lýsigögn listuð í þessu skilaboði munu vera innifalin á myndasíðusýningu þegar lýsigagnataflan er samfallin.
+'metadata-fields' => 'EXIF-lýsigögn í þessum skilaboðum verða innifalin á síðu myndarinnar þegar tafla lýsisgangnana er samfallin.
Önnur verða sjálfkrafa falin.
* make
* model
@@ -2331,88 +2842,374 @@ Ef skránni hefur verið breytt, kann að vera að einhverjar upplýsingar eigi
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
-'exif-imagewidth' => 'Breidd',
-'exif-imagelength' => 'Hæð',
-'exif-xresolution' => 'Lárétt upplausn',
-'exif-yresolution' => 'Lóðrétt upplausn',
-'exif-imagedescription' => 'Titill myndar',
-'exif-make' => 'Framleiðandi myndavélar',
-'exif-model' => 'Tegund',
-'exif-software' => 'Hugbúnaður notaður',
-'exif-artist' => 'Höfundur',
-'exif-exifversion' => 'Exif-útgáfa',
-'exif-pixelydimension' => 'Leyfð myndalengd',
-'exif-pixelxdimension' => 'Leyfð myndahæð',
-'exif-usercomment' => 'Athugunarsemdir notanda',
-'exif-flash' => 'Leiftur',
-'exif-gpslatitude' => 'Breiddargráða',
-'exif-gpslongitude' => 'Lengdargráða',
-'exif-gpsaltitude' => 'Stjörnuhæð',
+'exif-imagewidth' => 'Breidd',
+'exif-imagelength' => 'Hæð',
+'exif-bitspersample' => 'Bæti á einingu',
+'exif-compression' => 'Þjöppunar aðferð',
+'exif-photometricinterpretation' => 'Díla myndbygging',
+'exif-orientation' => 'Lega',
+'exif-samplesperpixel' => 'Fjöldi eininga',
+'exif-planarconfiguration' => 'Tilhögun gagna',
+'exif-ycbcrpositioning' => 'Staðsetning Y og C',
+'exif-xresolution' => 'Lárétt upplausn',
+'exif-yresolution' => 'Lóðrétt upplausn',
+'exif-stripoffsets' => 'Staðsetning gagna',
+'exif-rowsperstrip' => 'Fjöldi raða á ræmu',
+'exif-stripbytecounts' => 'Bæti á hverri þjappaðri ræmu',
+'exif-jpeginterchangeformatlength' => 'bæti af JPEG gögnum',
+'exif-whitepoint' => 'Krómatísmi hvíta punkts',
+'exif-primarychromaticities' => 'Krómatísmi grunnlita',
+'exif-referenceblackwhite' => 'Pör svartra og hvítra tilvísana gilda',
+'exif-datetime' => 'Dagsetning og tími breytingar',
+'exif-imagedescription' => 'Titill myndar',
+'exif-make' => 'Framleiðandi myndavélar',
+'exif-model' => 'Tegund',
+'exif-software' => 'Hugbúnaður notaður',
+'exif-artist' => 'Höfundur',
+'exif-copyright' => 'höfundur',
+'exif-exifversion' => 'Exif-útgáfa',
+'exif-flashpixversion' => 'Studd Flashpix útgáfa',
+'exif-colorspace' => 'Litróf',
+'exif-componentsconfiguration' => 'Merking hverrar einingar',
+'exif-compressedbitsperpixel' => 'Þjöppunar aðferð',
+'exif-pixelydimension' => 'Breidd myndar',
+'exif-pixelxdimension' => 'Hæð myndar',
+'exif-usercomment' => 'Athugunarsemdir notanda',
+'exif-relatedsoundfile' => 'Tengd hljóðskrá',
+'exif-datetimeoriginal' => 'Upprunaleg dagsetning',
+'exif-datetimedigitized' => 'Dagsetning stafrænnar myndar',
+'exif-subsectime' => 'DagsetningTími sekúndubrot',
+'exif-exposuretime' => 'Lýsingartími',
+'exif-exposuretime-format' => '$1 sekúnda ($2)',
+'exif-exposureprogram' => 'Ljósastilling',
+'exif-spectralsensitivity' => 'Litrófsnæmni',
+'exif-isospeedratings' => 'ISO filmuhraði',
+'exif-shutterspeedvalue' => 'APEX lokunarhraði',
+'exif-aperturevalue' => 'APEX ljósop',
+'exif-brightnessvalue' => 'APEX birtustig',
+'exif-subjectdistance' => 'Lengd að viðfangsefni',
+'exif-lightsource' => 'Uppspretta ljóssins',
+'exif-flash' => 'Leifturljós',
+'exif-focallength' => 'Brennivídd',
+'exif-subjectarea' => 'Svæði viðfangsefnis',
+'exif-flashenergy' => 'orka leifturljóss',
+'exif-focalplanexresolution' => 'Upplausn brennidepils flatar X',
+'exif-focalplaneyresolution' => 'Upplausn brennidepils flatar Y',
+'exif-focalplaneresolutionunit' => 'Eining upplausnar brennidepils flatar',
+'exif-subjectlocation' => 'Staðsetning viðfangsefnis',
+'exif-exposureindex' => 'Vísistala lýsingar',
+'exif-sensingmethod' => 'Skynjun',
+'exif-filesource' => 'Uppruni skráar',
+'exif-scenetype' => 'Myndefni',
+'exif-customrendered' => 'Sérstök myndvinnsla',
+'exif-exposuremode' => 'Stilling lýsingar',
+'exif-whitebalance' => 'Ljóshiti',
+'exif-digitalzoomratio' => 'Aðdráttar hlutfall',
+'exif-focallengthin35mmfilm' => 'Brennivídd 35 mm filmu',
+'exif-scenecapturetype' => 'Gerð myndefnis',
+'exif-contrast' => 'Andstæður',
+'exif-saturation' => 'Litstyrkur',
+'exif-sharpness' => 'Skerpa',
+'exif-devicesettingdescription' => 'Lýsing stillinga tækisins',
+'exif-subjectdistancerange' => 'Svið lengdar á viðfangsefni',
+'exif-imageuniqueid' => 'Einstakt einkenni myndar',
+'exif-gpsversionid' => 'GPS tag útgáfa',
+'exif-gpslatituderef' => 'Norður- eða suður breiddargráða',
+'exif-gpslatitude' => 'Breiddargráða',
+'exif-gpslongituderef' => 'Austur- eða vestur lengdargráða',
+'exif-gpslongitude' => 'Lengdargráða',
+'exif-gpsaltitude' => 'Stjörnuhæð',
+'exif-gpstimestamp' => 'GPS tími (atómklukka)',
+'exif-gpssatellites' => 'Gervihnettir sem voru notaðir við mælingu',
+'exif-gpsstatus' => 'Staða móttakara',
+'exif-gpsmeasuremode' => 'Mælingarmáti',
+'exif-gpsdop' => 'Nákvæmni mælinga',
+'exif-gpsspeedref' => 'Hraða eining',
+'exif-gpsspeed' => 'Móttökuhraði GPS',
+'exif-gpstrack' => 'Ãtt hreyfingar',
+'exif-gpsimgdirection' => 'Stefna myndarinnar',
+'exif-gpsmapdatum' => 'Landmælinga gögn',
+'exif-gpsdestlatitude' => 'Breiddargráða',
+'exif-gpsdestlongitude' => 'Lengdargráða',
+'exif-gpsdestdistance' => 'Fjarlægð á áfangastað',
+'exif-gpsprocessingmethod' => 'GPS vinnsluaðferð',
+'exif-gpsareainformation' => 'Nafn GPS svæðis',
+'exif-gpsdatestamp' => 'GPS dagsetning',
+'exif-gpsdifferential' => 'GPS mismuns leiðrétting',
+'exif-jpegfilecomment' => 'JPEG athugasemd',
+'exif-keywords' => 'Lykilorð',
+'exif-worldregioncreated' => 'Heimsálfa sem myndin var tekin í',
+'exif-countrycreated' => 'Land sem myndin var tekin í',
+'exif-countrycodecreated' => 'Kóði fyrir landið sem myndin var tekin í',
+'exif-provinceorstatecreated' => 'Fylki sem myndin var tekin í',
+'exif-citycreated' => 'Borg sem myndin var tekin í',
+'exif-sublocationcreated' => 'Hverfi borgarinnar sem myndin var tekin í',
+'exif-worldregiondest' => 'Heimsálfa sýnd',
+'exif-countrydest' => 'Land sýnt',
+'exif-countrycodedest' => 'Kóði fyrir landið sýndur',
+'exif-provinceorstatedest' => 'Fylki sýnt',
+'exif-citydest' => 'Borg sýnd',
+'exif-sublocationdest' => 'Hverfi borgar sýnt',
+'exif-objectname' => 'Stuttur titill',
+'exif-specialinstructions' => 'Sérstakar leiðbeiningar',
+'exif-headline' => 'Fyrirsögn',
+'exif-source' => 'Uppruni',
+'exif-urgency' => 'Nauðsyn',
+'exif-objectcycle' => 'Tími dags sem efnið er ætlað fyrir',
+'exif-contact' => 'Samskipta upplýsingar',
+'exif-writer' => 'Ritari myndlýsingar',
+'exif-languagecode' => 'Tungumál',
+'exif-iimcategory' => 'Flokkur',
+'exif-iimsupplementalcategory' => 'Undirflokkar',
+'exif-datetimeexpires' => 'Ekki nota eftir',
+'exif-datetimereleased' => 'Útgefið klukkan',
+'exif-originaltransmissionref' => 'Upphaflegur sendingarkóði staðsetningar',
+'exif-identifier' => 'Auðkenni',
+'exif-lens' => 'Linsa notuð',
+'exif-serialnumber' => 'Raðnúmer myndavélarinnar',
+'exif-cameraownername' => 'Eigandi myndavélarinnar',
+'exif-label' => 'Merki',
+'exif-datetimemetadata' => 'Lýsigögnum síðast breytt',
+'exif-nickname' => 'Látlaust nafn myndar',
+'exif-rating' => 'Einkunn (af 5 mögulegum)',
+'exif-copyrighted' => 'Staða höfundaréttar',
+'exif-copyrightowner' => 'Eigandi höfundarétts',
+'exif-usageterms' => 'Notkunar skilmálar',
+'exif-webstatement' => 'Höfundaréttarleyfi á netinu',
+'exif-originaldocumentid' => 'Einstakt auðkenni upphafslegs skjals',
+'exif-licenseurl' => 'Vefslóð höfundarleyfis',
+'exif-morepermissionsurl' => 'Aðrar leyfisupplýsingar',
+'exif-attributionurl' => 'Þegar þetta verk er endurnotað, tengdu á',
+'exif-pngfilecomment' => 'PNG athugasemd',
+'exif-disclaimer' => 'Fyrirvari',
+'exif-contentwarning' => 'Viðvörun innihalds myndar',
+'exif-giffilecomment' => 'GIF athugasemd',
+'exif-scenecode' => 'IPTC kóði myndefnis',
+'exif-event' => 'Lýsir viðburðinum',
+'exif-organisationinimage' => 'Lýsir félaginu',
+'exif-originalimageheight' => 'Hæð myndarinnar fyrir skerðingu',
+'exif-originalimagewidth' => 'Breidd myndar fyrir skerðingu',
# EXIF attributes
'exif-compression-1' => 'Ósamþjappað',
+'exif-copyrighted-true' => 'Höfundaréttarvarið',
+'exif-copyrighted-false' => 'Ã Almenningi',
+
+'exif-unknowndate' => 'Óþekkt dagsetning',
+
+'exif-orientation-1' => 'Venjuleg',
+'exif-orientation-2' => 'Speglað lárétt',
+'exif-orientation-3' => 'Snýr 180°',
+'exif-orientation-4' => 'Speglað lóðrétt',
+'exif-orientation-5' => 'Snúið 90° rangsælis og speglað lóðrétt',
+'exif-orientation-6' => 'Snýr 90° rangsælis',
+'exif-orientation-7' => 'Snúið 90° réttsælis og speglað lóðrétt',
+'exif-orientation-8' => 'Snýr 90° réttsælis',
+
+'exif-planarconfiguration-2' => 'planar snið',
+
'exif-componentsconfiguration-0' => 'er ekki til',
-'exif-exposureprogram-0' => 'Ekki skilgreint',
+'exif-exposureprogram-0' => 'Ekki skilgreind',
+'exif-exposureprogram-1' => 'Sjálfvirk',
+'exif-exposureprogram-2' => 'Hefðbundin stilling',
+'exif-exposureprogram-3' => 'Forgangur ljósops',
+'exif-exposureprogram-4' => 'Forgangur lokara',
+'exif-exposureprogram-7' => 'Andlitsmynda stilling (fyrir nærmyndir með bakrunninn í þoku)',
+'exif-exposureprogram-8' => 'Landslags stilling (fyrir landslagsmyndir með skarpan bakrunn)',
'exif-subjectdistance-value' => '$1 metrar',
-'exif-lightsource-1' => 'Dagsbirta',
-'exif-lightsource-4' => 'Leiftur',
-'exif-lightsource-9' => 'Gott veður',
-'exif-lightsource-10' => 'Skýjað',
-'exif-lightsource-11' => 'Skuggi',
+'exif-meteringmode-0' => 'Óþekkt',
+'exif-meteringmode-1' => 'Miðlungs',
+'exif-meteringmode-2' => 'Miðjuvegið meðaltal',
+'exif-meteringmode-3' => 'Blettur',
+'exif-meteringmode-4' => 'Margir-blettir',
+'exif-meteringmode-5' => 'Mynstur',
+'exif-meteringmode-255' => 'Annað',
+
+'exif-lightsource-0' => 'Óþekkt',
+'exif-lightsource-1' => 'Dagsbirta',
+'exif-lightsource-2' => 'Flúrljós',
+'exif-lightsource-3' => 'Wolfram ljós (hvítglóandi ljós)',
+'exif-lightsource-4' => 'Leiftur',
+'exif-lightsource-9' => 'Gott veður',
+'exif-lightsource-10' => 'Skýjað',
+'exif-lightsource-11' => 'Skuggi',
+'exif-lightsource-17' => 'Staðaljós A',
+'exif-lightsource-18' => 'Staðaljós B',
+'exif-lightsource-19' => 'Staðaljós C',
+'exif-lightsource-255' => 'Önnur ljósuppspretta',
+
+# Flash modes
+'exif-flash-fired-0' => 'Leifturljósið var slökkt',
+'exif-flash-fired-1' => 'Leifturljósið kviknaði',
+'exif-flash-mode-1' => 'skyldubundið leifturljós',
+'exif-flash-mode-2' => 'skyldubundin bæling leifturljóss',
+'exif-flash-mode-3' => 'sjálfvirkt',
+'exif-flash-function-1' => 'Ekkert leifturljós',
+'exif-flash-redeye-1' => 'lagfæring rauðra-augna',
'exif-focalplaneresolutionunit-2' => 'tommur',
+'exif-sensingmethod-1' => 'Óskilgreint',
+'exif-sensingmethod-2' => 'Einnar-kísilflögu litsviðs skynjari',
+'exif-sensingmethod-3' => 'Tveggja-kísilflögu litsviðs skynjari',
+'exif-sensingmethod-4' => 'Þriggja-kísilflögu litsviðs skynjari',
+'exif-sensingmethod-5' => 'Raðbundinn litsviðs skynjari',
+
+'exif-customrendered-0' => 'Venjuleg vinnsla',
+'exif-customrendered-1' => 'Sérstök vinnsla',
+
+'exif-exposuremode-0' => 'Sjálfvirk lýsing',
+'exif-exposuremode-1' => 'Handstillt lýsing',
+
+'exif-whitebalance-0' => 'Sjálfgefinn ljóshiti',
+'exif-whitebalance-1' => 'Handstilltur ljóshiti',
+
'exif-scenecapturetype-0' => 'Staðlað',
'exif-scenecapturetype-1' => 'Landslag',
'exif-scenecapturetype-2' => 'Skammsnið',
'exif-scenecapturetype-3' => 'Næturvettvangur',
+'exif-gaincontrol-0' => 'Ekkert',
+'exif-gaincontrol-1' => 'Lægðar hækkun',
+'exif-gaincontrol-2' => 'Hæðar hækkun',
+'exif-gaincontrol-3' => 'Lægðar lækkun',
+'exif-gaincontrol-4' => 'Hæðar lækkun',
+
+'exif-contrast-0' => 'Venjuleg',
+'exif-contrast-1' => 'Mjúk',
+'exif-contrast-2' => 'Hörð',
+
+'exif-saturation-0' => 'Venjulegur',
+'exif-saturation-1' => 'Lítill litstyrkur',
+'exif-saturation-2' => 'Mikill litstyrkur',
+
+'exif-sharpness-0' => 'Venjulegur',
+'exif-sharpness-1' => 'Mjúkur',
+'exif-sharpness-2' => 'Harður',
+
+'exif-subjectdistancerange-0' => 'Óþekkt',
+'exif-subjectdistancerange-1' => 'Nærmyndar fókus',
+'exif-subjectdistancerange-2' => 'Nærmynd',
+'exif-subjectdistancerange-3' => 'Fjarlægt sjónarhorn',
+
+# Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef
+'exif-gpslatitude-n' => 'Norður breiddargráða',
+'exif-gpslatitude-s' => 'Suður breiddargráða',
+
+# Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef
+'exif-gpslongitude-e' => 'Austur lengdargráða',
+'exif-gpslongitude-w' => 'Vestur lengdargráða',
+
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metri|metra}} fyrir ofan sjávarmál',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metri|metra}} fyrir neðan sjávarmál',
+
+'exif-gpsstatus-a' => 'Mæling í vinnslu',
+'exif-gpsstatus-v' => 'Samvirkni mælinga',
+
+'exif-gpsmeasuremode-2' => '2-víddar mæling',
+'exif-gpsmeasuremode-3' => '3-víddar mæling',
+
# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'Kílómetrar á klukkustund',
'exif-gpsspeed-m' => 'Mílur á klukkustund',
'exif-gpsspeed-n' => 'Hnútar',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kílómetrar',
+'exif-gpsdestdistance-m' => 'Mílur',
+'exif-gpsdestdistance-n' => 'Sjómílur',
+
+'exif-gpsdop-excellent' => 'Frábært ($1)',
+'exif-gpsdop-good' => 'Gott ($1)',
+'exif-gpsdop-moderate' => 'Miðlungs ($1)',
+'exif-gpsdop-fair' => 'Sæmilegt ($1)',
+'exif-gpsdop-poor' => 'Lélegt ($1)',
+
+'exif-objectcycle-a' => 'að morgni',
+'exif-objectcycle-p' => 'að kvöldi',
+'exif-objectcycle-b' => 'að morgni og kvöldi',
+
+'exif-ycbcrpositioning-1' => 'Miðjuð',
+
+'exif-dc-contributor' => 'Framleggjendur',
+'exif-dc-date' => 'Dagsetning(ar)',
+'exif-dc-publisher' => 'Útgefandi',
+'exif-dc-relation' => 'Tengd margmiðlunargögn',
+'exif-dc-rights' => 'Réttindi',
+'exif-dc-source' => 'Uppruni margmiðlunarskrár',
+
+'exif-rating-rejected' => 'Hafnað',
+
+'exif-isospeedratings-overflow' => 'Stærri en 65535',
+
+'exif-iimcategory-ace' => 'Listir, menning og skemmtun',
+'exif-iimcategory-clj' => 'Gæpir og lög',
+'exif-iimcategory-dis' => 'Hamfarir og slys',
+'exif-iimcategory-fin' => 'Hagkerfi og viðskipti',
+'exif-iimcategory-edu' => 'Menntun',
+'exif-iimcategory-evn' => 'Umhverfi',
+'exif-iimcategory-hth' => 'Heilsa',
+'exif-iimcategory-lab' => 'Verkamennska',
+'exif-iimcategory-lif' => 'Lífstíll og tómstundagaman',
+'exif-iimcategory-pol' => 'Pólitík',
+'exif-iimcategory-rel' => 'Trúarbrögð og trú',
+'exif-iimcategory-sci' => 'Vísindi og tækni',
+'exif-iimcategory-soi' => 'Félagsleg mál',
+'exif-iimcategory-spo' => 'Ãþróttir',
+'exif-iimcategory-war' => 'Stríð, átök og ókyrrð',
+'exif-iimcategory-wea' => 'Veður',
+
+'exif-urgency-normal' => 'Venjulegt ($1)',
+'exif-urgency-low' => 'Lítið ($1)',
+'exif-urgency-high' => 'Hátt ($1)',
+'exif-urgency-other' => 'Mikilvægi ákveðið af notanda ($1)',
+
# External editor support
'edit-externally' => 'Breyta þessari skrá með utanaðkomandi hugbúnaði',
-'edit-externally-help' => '(Sjá [http://www.mediawiki.org/wiki/Manual:External_editors leiðbeiningar] fyrir meiri upplýsingar)',
+'edit-externally-help' => '(Sjá [//www.mediawiki.org/wiki/Manual:External_editors leiðbeiningar] fyrir meiri upplýsingar)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'allt',
-'imagelistall' => 'allar',
-'watchlistall2' => 'allt',
-'namespacesall' => 'öll',
-'monthsall' => 'allir',
-'limitall' => 'alla',
+'watchlistall2' => 'allt',
+'namespacesall' => 'öll',
+'monthsall' => 'allir',
+'limitall' => 'alla',
# E-mail address confirmation
-'confirmemail' => 'Staðfesta netfang',
-'confirmemail_noemail' => 'Þú hefur ekki gefið upp gilt netfang í [[Special:Preferences|notandastillingum]] þínum.',
-'confirmemail_text' => '{{SITENAME}} krefst þess að þú staðfestir netfangið þitt áður en að þú getur notað eiginleika tengt því. Smelltu á hnappinn að neðan til að fá staðfestingarpóst sendan á netfangið. Pósturinn mun innihalda tengil með kóða í sér; opnaðu tengilinn í vafranum til að staðfesta að netfangið sé rétt.',
-'confirmemail_pending' => 'Þér hefur þegar verið sendur staðfestingarkóði á netfang þitt;
+'confirmemail' => 'Staðfesta netfang',
+'confirmemail_noemail' => 'Þú hefur ekki gefið upp gilt netfang í [[Special:Preferences|notandastillingum]] þínum.',
+'confirmemail_text' => '{{SITENAME}} krefst þess að þú staðfestir netfangið þitt áður en að þú getur notað eiginleika tengt því. Smelltu á hnappinn að neðan til að fá staðfestingarpóst sendan á netfangið. Pósturinn mun innihalda tengil með kóða í sér; opnaðu tengilinn í vafranum til að staðfesta að netfangið sé rétt.',
+'confirmemail_pending' => 'Þér hefur þegar verið sendur staðfestingarkóði á netfang þitt;
ef þú varst að enda við að búa til nýtt notendanafn skaltu bíða í nokkrar mínútur og sjá hvort staðfestingarkóðinn berist þér ekki í pósti á næstunni áður en þú reynir aftur að fá nýjan staðfestingarkóða.',
-'confirmemail_send' => 'Senda staðfestingarkóða með tölvupósti',
-'confirmemail_sent' => 'Staðfestingartölvupóstur sendur.',
-'confirmemail_oncreate' => 'Staðfestingarkóði hefur verði sendur á netfangið.
+'confirmemail_send' => 'Senda staðfestingarkóða með tölvupósti',
+'confirmemail_sent' => 'Staðfestingartölvupóstur sendur.',
+'confirmemail_oncreate' => 'Staðfestingarkóði hefur verði sendur á netfangið.
Þennan kóða þarf ekki að staðfesta til að skrá sig inn, en þú þarft að gefa hann upp áður
en opnað verður fyrir valmöguleika tengdum netfangi á þessu wiki-verkefni.',
-'confirmemail_sendfailed' => '{{SITENAME}} gat ekki sent staðfestingarpóst.
+'confirmemail_sendfailed' => '{{SITENAME}} gat ekki sent staðfestingarpóst.
Athugaðu hvort ógild tákn séu í netfanginu þínu.
Póstþjónninn skilaði: $1',
-'confirmemail_invalid' => 'Ógildur staðfestingarkóði. Hann gæti verið útrunninn.',
-'confirmemail_needlogin' => 'Þú verður að $1 til að staðfesta netfangið þitt.',
-'confirmemail_success' => 'Netfang þitt hefur verið staðfest. Þú getur nú skráð þig inn og vafrað um wiki-kerfið.',
-'confirmemail_loggedin' => 'Netfang þitt hefur verið staðfest.',
-'confirmemail_error' => 'Eitthvað fór úrskeiðis við vistun staðfestingarinnar.',
-'confirmemail_subject' => '{{SITENAME}} netfangs-staðfesting',
-'confirmemail_body' => 'Einhver, sennilega þú, með vistfangið $1 hefur skráð sig á {{SITENAME}} undir notandanafninu „$2“ og gefið upp þetta netfang.
+'confirmemail_invalid' => 'Ógildur staðfestingarkóði. Hann gæti verið útrunninn.',
+'confirmemail_needlogin' => 'Þú verður að $1 til að staðfesta netfangið þitt.',
+'confirmemail_success' => 'Netfang þitt hefur verið staðfest. Þú getur nú [[Special:UserLogin|skráð þig inn]] og vafrað um wiki-kerfið.',
+'confirmemail_loggedin' => 'Netfang þitt hefur verið staðfest.',
+'confirmemail_error' => 'Eitthvað fór úrskeiðis við vistun staðfestingarinnar.',
+'confirmemail_subject' => '{{SITENAME}} netfangs-staðfesting',
+'confirmemail_body' => 'Einhver, sennilega þú, með vistfangið $1 hefur skráð sig á {{SITENAME}} undir notandanafninu „$2“ og gefið upp þetta netfang.
Til að staðfesta að það hafi verið þú sem skráðir þig undir þessu nafni, og til þess að virkja póstsendingar í gegnum {{SITENAME}}, skaltu opna þennan tengil í vafranum þínum:
@@ -2423,8 +3220,30 @@ Ef þú ert *ekki* sá/sú sem skráði þetta notandanafn, skaltu opna þennan
$5
Þessi staðfestingarkóði rennur út $4.',
-'confirmemail_invalidated' => 'Hætt við staðfestingu netfangs',
-'invalidateemail' => 'Hætta við staðfestingu netfangs',
+'confirmemail_body_changed' => 'Einhver, sennilega þú, með vistfangið $1 hefur breytt netfangi aðgangsins "$2" yfir á þetta netfang á {{SITENAME}}.
+
+Til að staðfesta að það hafi verið þú sem skráðir þig undir þessu nafni, og til þess að virkja póstsendingar í gegnum {{SITENAME}}, skaltu opna þennan tengil í vafranum þínum:
+
+$3
+
+Ef þú ert *ekki* sá/sú sem skráði þetta notandanafn, skaltu opna þennan tengil til að ógilda staðfestinguna:
+
+$5
+
+Þessi staðfestingarkóði rennur út $4.',
+'confirmemail_body_set' => 'Einhver, sennilega þú, með vistfangið $1 hefur gefið upp þetta netfang fyrir aðganginn "$2" á {{SITENAME}}.
+
+Til að staðfesta að það hafi verið þú sem skráðir þig undir þessu nafni, og til þess að virkja póstsendingar í gegnum {{SITENAME}}, skaltu opna þennan tengil í vafranum þínum:
+
+$3
+
+Ef þú ert *ekki* sá/sú sem skráði þetta notandanafn, skaltu opna þennan tengil til að ógilda staðfestinguna:
+
+$5
+
+Þessi staðfestingarkóði rennur út $4.',
+'confirmemail_invalidated' => 'Hætt við staðfestingu netfangs',
+'invalidateemail' => 'Hætta við staðfestingu netfangs',
# Scary transclusion
'scarytranscludefailed' => '[Gat ekki sótt snið fyrir $1]',
@@ -2438,15 +3257,24 @@ $1',
'trackbackdeleteok' => 'Varanlega tenglinum var eytt.',
# Delete conflict
-'deletedwhileediting' => "'''Viðvörun''': Þessari síðu var eytt eftir að þú fórst að breyta henni!",
-'confirmrecreate' => "Notandi [[User:$1|$1]] ([[User talk:$1|spjall]]) eyddi þessari síðu eftir að þú fórst að breyta henni út af:
+'deletedwhileediting' => "'''Viðvörun''': Þessari síðu var eytt eftir að þú fórst að breyta henni!",
+'confirmrecreate' => "Notandi [[User:$1|$1]] ([[User talk:$1|spjall]]) eyddi þessari síðu eftir að þú fórst að breyta henni út af:
: ''$2''
Vinsamlegast staðfestu að þú viljir endurvekja hana.",
-'recreate' => 'Endurvekja',
+'confirmrecreate-noreason' => 'Notandinn [[User:$1|$1]] ([[User talk:$1|spjall]]) eyddi þessari síðu eftir að þú fórst að breyta henni.
+Vinsamlegast staðfestu að þú viljir endurvekja hana.',
+'recreate' => 'Endurvekja',
# action=purge
'confirm_purge_button' => 'Ã lagi',
'confirm-purge-top' => 'Hreinsa skyndiminni þessarar síðu?',
+'confirm-purge-bottom' => 'Förgun síðu tæmir skyndimynnið og lætur nýjustu útgáfu síðunnar birtast.',
+
+# action=watch/unwatch
+'confirm-watch-button' => 'Ã lagi',
+'confirm-watch-top' => 'Bæta þessari síðu á vaktlistann þinn?',
+'confirm-unwatch-button' => 'Ã lagi',
+'confirm-unwatch-top' => 'Fjarlægja þessa síðu af vaktlistanum þínum?',
# Multipage image navigation
'imgmultipageprev' => '↠fyrri síða',
@@ -2462,6 +3290,7 @@ Vinsamlegast staðfestu að þú viljir endurvekja hana.",
'table_pager_first' => 'Fyrsta síðan',
'table_pager_last' => 'Síðasta síðan',
'table_pager_limit' => 'Sýna $1 hluta á hverri síðu',
+'table_pager_limit_label' => 'Færslur á síðu:',
'table_pager_limit_submit' => 'Ãfram',
'table_pager_empty' => 'Engar niðurstöður',
@@ -2484,12 +3313,16 @@ Vinsamlegast staðfestu að þú viljir endurvekja hana.",
'watchlistedit-noitems' => 'Vaktlistinn þinn inniheldur enga titla.',
'watchlistedit-normal-title' => 'Breyta vaktlistanum',
'watchlistedit-normal-legend' => 'Fjarlægja titla af vaktlistanum',
-'watchlistedit-normal-explain' => 'Titlarnir á vaktlistanum þínum er sýndir fyrir neðan. Til að fjarlægja titil hakaðu í kassan við hliðina á honum og smelltu á „Fjarlægja titla“. Þú getur einnig [[Special:Watchlist/raw|breytt honum opnum]].',
+'watchlistedit-normal-explain' => 'Titlarnir á vaktlistanum þínum er sýndir fyrir neðan.
+Til að fjarlægja titil hakaðu í kassann við hliðina á honum og smelltu á „{{int:Watchlistedit-normal-submit}}“. Þú getur einnig [[Special:EditWatchlist/raw|breytt honum opnum]].',
'watchlistedit-normal-submit' => 'Fjarlægja titla',
'watchlistedit-normal-done' => '{{PLURAL:$1|Ein síða var fjarlægð|$1 síður voru fjarlægðar}} af vaktlistanum þínum:',
'watchlistedit-raw-title' => 'Breyta opnum vaktlistanum',
'watchlistedit-raw-legend' => 'Breyta opnum vaktlistanum',
-'watchlistedit-raw-explain' => 'Titlarnir á vaktlistanum þínum er sýndir fyrir neðan, þar sem mögulegt er að breyta þeim með því að bæta við hann og taka af honum; einn tiltil í hverri línu. Þegar þú er búinn, smelltu þá á „Uppfæra vaktlistann“. Þú getur einnig notað [[Special:Watchlist/edit|staðlaða breytinn]].',
+'watchlistedit-raw-explain' => 'Titlarnir á vaktlistanum þínum eru sýndir hér fyrir neðan og þeim er hægt að breyta með því að bæta við og taka út af honum;
+einn titil í hverri línu.
+Þegar þú ert búinn, smelltu á "{{int:Watchlistedit-raw-submit}}".
+Þú getur einnig notað [[Special:EditWatchlist|hefðbundna ritilinn]].',
'watchlistedit-raw-titles' => 'Titlar:',
'watchlistedit-raw-submit' => 'Uppfæra vaktlistann',
'watchlistedit-raw-done' => 'Vaktlistinn þinn hefur verið uppfærður.',
@@ -2501,30 +3334,52 @@ Vinsamlegast staðfestu að þú viljir endurvekja hana.",
'watchlisttools-edit' => 'Skoða og breyta vaktlistanum',
'watchlisttools-raw' => 'Breyta opnum vaktlistanum',
+# Core parser functions
+'unknown_extension_tag' => 'Óþekkt tákn "$1"',
+'duplicate-defaultsort' => '\'\'\'Viðvörun:\'\'\' Sjálfgildur flýtihnappur "$2" tekur yfir fyrri flýtihnapp "$1".',
+
# Special:Version
-'version' => 'Útgáfa',
-'version-extensions' => 'Uppsettar viðbætur',
-'version-specialpages' => 'Kerfissíður',
-'version-variables' => 'Breytur',
-'version-other' => 'Aðrar',
-'version-version' => '(Útgáfa $1)',
-'version-license' => 'Leyfi',
-'version-software' => 'Uppsettur hugbúnaður',
-'version-software-product' => 'Vara',
-'version-software-version' => 'Útgáfa',
+'version' => 'Útgáfa',
+'version-extensions' => 'Uppsettar viðbætur',
+'version-specialpages' => 'Kerfissíður',
+'version-variables' => 'Breytur',
+'version-antispam' => 'Amapósts sía',
+'version-skins' => 'Þemu',
+'version-other' => 'Aðrar',
+'version-mediahandlers' => 'Rekill margmiðlunarskráa',
+'version-extension-functions' => 'Aðgerðir smáforrita',
+'version-parser-extensiontags' => 'Þáttuð smáforrita tög',
+'version-hook-subscribedby' => 'à áskrift af',
+'version-version' => '(Útgáfa $1)',
+'version-license' => 'Leyfi',
+'version-poweredby-credits' => "Þessi wiki er knúin af '''[//www.mediawiki.org/ MediaWiki]''', höfundaréttur © 2001-$1 $2.",
+'version-poweredby-others' => 'aðrir',
+'version-license-info' => 'MediaWiki er frjáls hugbúnaður; þú mátt endurútgefa hann og/eða breyta honum undir GNU General Public leyfi eins og það er gefið út af Free Software stofnuninni, annaðhvort útgáfu 2 eða (að þínu mati) hvaða nýrri útgáfa sem er.
+
+MediaWiki er útgefin í þeirri von að hann sé gagnlegur, en ÃN ALLRAR ÃBYRGÃAR; þar meðtalið er undanskilin ábyrgð við MARKAÃSETNINGU og að hugbúnaðurinn VIRKI à ÃKVEÃNUM TILGANGI. Sjá GNU General Public leyfið fyrir frekari upplýsingar.
+
+Þú ættir að hafa fengið [{{SERVER}}{{SCRIPTPATH}}/COPYING afrit af GNU General Public leyfinu] með þessum hugbúnaði, en ef ekki, skrifaðu til Free Software stofnunarinnar, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, Bandaríkjunum eða [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lestu það á netinu]',
+'version-software' => 'Uppsettur hugbúnaður',
+'version-software-product' => 'Vara',
+'version-software-version' => 'Útgáfa',
# Special:FilePath
-'filepath' => 'Slóð skráar',
-'filepath-page' => 'Skrá:',
-'filepath-submit' => 'Slóð',
+'filepath' => 'Slóð skráar',
+'filepath-page' => 'Skrá:',
+'filepath-submit' => 'Ãfram',
+'filepath-summary' => 'Þessi kerfisíða birtir fulla vefslóð skráar.
+Myndir eru sýndar í fullri upplausn og önnur skráarsnið eru ræst í sjálfvöldu forriti til þess að opna skránna.',
# Special:FileDuplicateSearch
-'fileduplicatesearch-legend' => 'Leita að afriti',
-'fileduplicatesearch-filename' => 'Skráarnafn:',
-'fileduplicatesearch-submit' => 'Leita',
-'fileduplicatesearch-info' => '$1 × $2 myndeining<br />Skráarstærð: $3<br />MIME-gerð: $4',
-'fileduplicatesearch-result-1' => 'Skráin „$1“ hefur engin nákvæmlega eins afrit.',
-'fileduplicatesearch-result-n' => 'Skráin „$1“ hefur {{PLURAL:$2|1 nákvæmlega eins afrit|$2 nákvæmlega eins afrit}}.',
+'fileduplicatesearch' => 'Leita að afriti',
+'fileduplicatesearch-summary' => 'Leita að afritum sem hafa sama hakk gildi.',
+'fileduplicatesearch-legend' => 'Leita að afriti',
+'fileduplicatesearch-filename' => 'Skráarnafn:',
+'fileduplicatesearch-submit' => 'Leita',
+'fileduplicatesearch-info' => '$1 × $2 myndeining<br />Skráarstærð: $3<br />MIME-gerð: $4',
+'fileduplicatesearch-result-1' => 'Skráin „$1“ hefur engin nákvæmlega eins afrit.',
+'fileduplicatesearch-result-n' => 'Skráin „$1“ hefur {{PLURAL:$2|1 nákvæmlega eins afrit|$2 nákvæmlega eins afrit}}.',
+'fileduplicatesearch-noresults' => 'Mistókst að finna skránna "$1"',
# Special:SpecialPages
'specialpages' => 'Kerfissíður',
@@ -2537,14 +3392,70 @@ Vinsamlegast staðfestu að þú viljir endurvekja hana.",
'specialpages-group-highuse' => 'Mest notaðar síður',
'specialpages-group-pages' => 'Listar yfir síður',
'specialpages-group-pagetools' => 'Síðuverkfæri',
+'specialpages-group-wiki' => 'Wiki gögn og tól',
+'specialpages-group-redirects' => 'Tilvísaðar kerfisíður',
+'specialpages-group-spam' => 'Amapósts sía',
# Special:BlankPage
-'blankpage' => 'Tóm síða',
+'blankpage' => 'Tóm síða',
+'intentionallyblankpage' => 'Þessi síða er viljandi höfð tóm.',
+
+# External image whitelist
+'external_image_whitelist' => '#Ekki breyta þessari línu<pre>
+#Settu brot úr reglulegum segðum (bara þann hluta sem er á milli //) hér fyrir neðan
+#Þær verða bornar saman við vefslóðir ytri mynda
+#Þær sem passa saman verða sýndar sem myndir, en hinar eingöngu sem tengill á myndina
+#Línur sem byrja á # verða sýndar sem athugasemdir
+#Þetta er hástafafrjálst
+
+#Settu allar reglulegar segðir fyrir ofan þessa línu. Ekki breyta þessari línu.</pre>',
# Special:Tags
-'tags-edit' => 'breyta',
+'tags' => 'Breyta virkum tögum',
+'tag-filter' => '[[Special:Tags|Tag]] sía:',
+'tag-filter-submit' => 'Sía',
+'tags-title' => 'Tög',
+'tags-intro' => 'à þessari síðu er listi yfir þau tög sem hugbúnaðurinn gæti merkt breytingar með og merkingu þeirra.',
+'tags-tag' => 'Nafn tags',
+'tags-display-header' => 'Útlit í breytingarskrá',
+'tags-description-header' => 'Tæmandi merkingarlýsing',
+'tags-hitcount-header' => 'Merktar breytingar',
+'tags-edit' => 'breyta',
+'tags-hitcount' => '$1 {{PLURAL:$1|breyting|breytingar}}',
+
+# Special:ComparePages
+'comparepages' => 'Bera saman síður',
+'compare-selector' => 'Bera saman útgáfur síðna',
+'compare-page1' => 'Síða 1',
+'compare-page2' => 'Síða 2',
+'compare-rev1' => 'Útgáfa 1',
+'compare-rev2' => 'Útgáfa 2',
+'compare-submit' => 'Bera saman',
# Database error messages
-'dberr-usegoogle' => 'Þú getur notað Google til að leita á meðan.',
+'dberr-header' => 'Vandamál við þennan wiki',
+'dberr-problems' => 'Því miður!
+Tæknilegir örðugleikar eru á þessari síðu.',
+'dberr-again' => 'Reyndu að bíða í nokkrar mínútur og endurhladdu síðan síðuna.',
+'dberr-info' => '(Mistókst að hafa samband við gagnaþjón: $1)',
+'dberr-usegoogle' => 'Þú getur notað Google til að leita á meðan.',
+'dberr-outofdate' => 'Athugaðu að afrit þeirra gætu verið úreld.',
+'dberr-cachederror' => 'Þetta er afritað eintak af umbeðinni síðu og gæti verið úreld.',
+
+# HTML forms
+'htmlform-invalid-input' => 'Vandamál við hluta af innleggi þínu',
+'htmlform-select-badoption' => 'Gildið sem þú tilgreindir er ekki gildur möguleiki.',
+'htmlform-int-invalid' => 'Gildið sem þú tilgreindir er ekki heil tala.',
+'htmlform-float-invalid' => 'Gildið sem þú tilgreindir er ekki tala.',
+'htmlform-int-toolow' => 'Gildið sem þú tilgreindir er minna en lágmarkið $1',
+'htmlform-int-toohigh' => 'Gildið sem þú tilgreindir er stærra en hámarkið $1',
+'htmlform-required' => 'Þú þarft að fylla út þetta gildi.',
+'htmlform-submit' => 'Senda',
+'htmlform-reset' => 'Taka aftur breytingu',
+'htmlform-selectorother-other' => 'Annað',
+
+# SQLite database support
+'sqlite-has-fts' => '$1 með fullum texta leitar stuðningi',
+'sqlite-no-fts' => '$1 án fullum texta leitar stuðningi',
);
diff --git a/languages/messages/MessagesIt.php b/languages/messages/MessagesIt.php
index 9e8febb7..0438f7ab 100644
--- a/languages/messages/MessagesIt.php
+++ b/languages/messages/MessagesIt.php
@@ -9,6 +9,7 @@
*
* @author .anaconda
* @author Airon90
+ * @author Amire80
* @author Andria
* @author Beta16
* @author Blaisorblade
@@ -44,6 +45,7 @@
* @author Pinodd
* @author Ramac
* @author Remember the dot
+ * @author Rippitippi
* @author S.Örvarr.S
* @author SabineCretella
* @author Stefano-c
@@ -51,6 +53,7 @@
* @author Trixt
* @author Una giornata uggiosa '94
* @author Vajotwo
+ * @author Valepert
* @author Xpensive
* @author לערי ריינה×רט
*/
@@ -96,97 +99,97 @@ $dateFormats = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'RedirectDoppi' ),
+ 'Activeusers' => array( 'UtentiAttivi' ),
+ 'Allmessages' => array( 'Messaggi' ),
+ 'Allpages' => array( 'TutteLePagine' ),
+ 'Ancientpages' => array( 'PagineMenoRecenti' ),
+ 'Blankpage' => array( 'PaginaVuota' ),
+ 'Block' => array( 'Blocca' ),
+ 'Blockme' => array( 'BloccaProxy' ),
+ 'Booksources' => array( 'RicercaISBN' ),
'BrokenRedirects' => array( 'RedirectErrati' ),
- 'Disambiguations' => array( 'Disambigue' ),
- 'Userlogin' => array( 'Entra', 'Login' ),
- 'Userlogout' => array( 'Esci', 'Logout' ),
+ 'Categories' => array( 'Categorie' ),
+ 'ChangePassword' => array( 'CambiaPassword' ),
+ 'ComparePages' => array( 'ComparaPagine' ),
+ 'Confirmemail' => array( 'ConfermaEMail' ),
+ 'Contributions' => array( 'Contributi', 'ContributiUtente' ),
'CreateAccount' => array( 'CreaAccount' ),
- 'Preferences' => array( 'Preferenze' ),
- 'Watchlist' => array( 'OsservatiSpeciali' ),
- 'Recentchanges' => array( 'UltimeModifiche' ),
- 'Upload' => array( 'Carica' ),
+ 'Deadendpages' => array( 'PagineSenzaUscita' ),
+ 'DeletedContributions' => array( 'ContributiCancellati' ),
+ 'Disambiguations' => array( 'Disambigue' ),
+ 'DoubleRedirects' => array( 'RedirectDoppi' ),
+ 'Emailuser' => array( 'InviaEMail' ),
+ 'Export' => array( 'Esporta' ),
+ 'Fewestrevisions' => array( 'PagineConMenoRevisioni' ),
+ 'FileDuplicateSearch' => array( 'CercaFileDuplicati' ),
+ 'Filepath' => array( 'Percorso' ),
+ 'Import' => array( 'Importa' ),
+ 'Invalidateemail' => array( 'InvalidaEMail' ),
+ 'BlockList' => array( 'IPBloccati', 'ElencoBlocchi', 'Blocchi' ),
+ 'LinkSearch' => array( 'CercaCollegamenti' ),
+ 'Listadmins' => array( 'Amministratori', 'ElencoAmministratori', 'Admin' ),
+ 'Listbots' => array( 'Bot', 'ElencoBot' ),
'Listfiles' => array( 'File', 'Immagini' ),
- 'Newimages' => array( 'ImmaginiRecenti' ),
- 'Listusers' => array( 'Utenti', 'ElencoUtenti' ),
'Listgrouprights' => array( 'ElencoPermessiGruppi' ),
- 'Statistics' => array( 'Statistiche' ),
- 'Randompage' => array( 'PaginaCasuale' ),
+ 'Listredirects' => array( 'Redirect', 'ElencoRedirect' ),
+ 'Listusers' => array( 'Utenti', 'ElencoUtenti' ),
+ 'Lockdb' => array( 'BloccaDB' ),
+ 'Log' => array( 'Registri', 'Registro' ),
'Lonelypages' => array( 'PagineOrfane' ),
- 'Uncategorizedpages' => array( 'PagineSenzaCategorie' ),
- 'Uncategorizedcategories' => array( 'CategorieSenzaCategorie' ),
- 'Uncategorizedimages' => array( 'ImmaginiSenzaCategorie' ),
- 'Uncategorizedtemplates' => array( 'TemplateSenzaCategorie' ),
- 'Unusedcategories' => array( 'CategorieNonUsate', 'CategorieVuote' ),
- 'Unusedimages' => array( 'ImmaginiNonUsate' ),
- 'Wantedpages' => array( 'PagineRichieste' ),
- 'Wantedcategories' => array( 'CategorieRichieste' ),
- 'Wantedfiles' => array( 'FileRichiesti' ),
- 'Wantedtemplates' => array( 'TemplateRichiesti' ),
+ 'Longpages' => array( 'PaginePiùLunghe' ),
+ 'MergeHistory' => array( 'FondiCronologia', 'UnificaCronologia' ),
+ 'MIMEsearch' => array( 'RicercaMIME' ),
+ 'Mostcategories' => array( 'PagineConPiùCategorie' ),
+ 'Mostimages' => array( 'ImmaginiPiùRichiamate' ),
'Mostlinked' => array( 'PaginePiùRichiamate' ),
'Mostlinkedcategories' => array( 'CategoriePiùRichiamate' ),
'Mostlinkedtemplates' => array( 'TemplatePiùRichiamati' ),
- 'Mostimages' => array( 'ImmaginiPiùRichiamate' ),
- 'Mostcategories' => array( 'PagineConPiùCategorie' ),
'Mostrevisions' => array( 'PagineConPiùRevisioni' ),
- 'Fewestrevisions' => array( 'PagineConMenoRevisioni' ),
- 'Shortpages' => array( 'PaginePiùCorte' ),
- 'Longpages' => array( 'PaginePiùLunghe' ),
+ 'Movepage' => array( 'Sposta', 'Rinomina' ),
+ 'Mycontributions' => array( 'MieiContributi' ),
+ 'Mypage' => array( 'MiaPaginaUtente', 'MiaPagina' ),
+ 'Mytalk' => array( 'MieDiscussioni' ),
+ 'Newimages' => array( 'ImmaginiRecenti' ),
'Newpages' => array( 'PaginePiùRecenti' ),
- 'Ancientpages' => array( 'PagineMenoRecenti' ),
- 'Deadendpages' => array( 'PagineSenzaUscita' ),
+ 'PasswordReset' => array( 'ReimpostaPassword' ),
+ 'Popularpages' => array( 'PaginePiùVisitate' ),
+ 'Preferences' => array( 'Preferenze' ),
+ 'Prefixindex' => array( 'Prefissi' ),
'Protectedpages' => array( 'PagineProtette' ),
'Protectedtitles' => array( 'TitoliProtetti' ),
- 'Allpages' => array( 'TutteLePagine' ),
- 'Prefixindex' => array( 'Prefissi' ),
- 'Ipblocklist' => array( 'IPBloccati', 'ElencoBlocchi', 'Blocchi' ),
- 'Unblock' => array( 'ElencoSblocchi', 'Sblocchi' ),
- 'Specialpages' => array( 'PagineSpeciali' ),
- 'Contributions' => array( 'Contributi', 'ContributiUtente' ),
- 'Emailuser' => array( 'InviaEMail' ),
- 'Confirmemail' => array( 'ConfermaEMail' ),
- 'Whatlinkshere' => array( 'PuntanoQui' ),
+ 'Randompage' => array( 'PaginaCasuale' ),
+ 'Randomredirect' => array( 'RedirectCasuale' ),
+ 'Recentchanges' => array( 'UltimeModifiche' ),
'Recentchangeslinked' => array( 'ModificheCorrelate' ),
- 'Movepage' => array( 'Sposta', 'Rinomina' ),
- 'Blockme' => array( 'BloccaProxy' ),
- 'Booksources' => array( 'RicercaISBN' ),
- 'Categories' => array( 'Categorie' ),
- 'Export' => array( 'Esporta' ),
- 'Version' => array( 'Versione' ),
- 'Allmessages' => array( 'Messaggi' ),
- 'Log' => array( 'Registri', 'Registro' ),
- 'Blockip' => array( 'Blocca' ),
+ 'Revisiondelete' => array( 'CancellaRevisione' ),
+ 'Search' => array( 'Ricerca', 'Cerca' ),
+ 'Shortpages' => array( 'PaginePiùCorte' ),
+ 'Specialpages' => array( 'PagineSpeciali' ),
+ 'Statistics' => array( 'Statistiche' ),
+ 'Tags' => array( 'Etichette' ),
+ 'Unblock' => array( 'ElencoSblocchi', 'Sblocchi' ),
+ 'Uncategorizedcategories' => array( 'CategorieSenzaCategorie' ),
+ 'Uncategorizedimages' => array( 'ImmaginiSenzaCategorie' ),
+ 'Uncategorizedpages' => array( 'PagineSenzaCategorie' ),
+ 'Uncategorizedtemplates' => array( 'TemplateSenzaCategorie' ),
'Undelete' => array( 'Ripristina' ),
- 'Import' => array( 'Importa' ),
- 'Lockdb' => array( 'BloccaDB' ),
'Unlockdb' => array( 'SbloccaDB' ),
- 'Userrights' => array( 'PermessiUtente' ),
- 'MIMEsearch' => array( 'RicercaMIME' ),
- 'FileDuplicateSearch' => array( 'CercaFileDuplicati' ),
- 'Unwatchedpages' => array( 'PagineNonOsservate' ),
- 'Listredirects' => array( 'Redirect', 'ElencoRedirect' ),
- 'Revisiondelete' => array( 'CancellaRevisione' ),
+ 'Unusedcategories' => array( 'CategorieNonUsate', 'CategorieVuote' ),
+ 'Unusedimages' => array( 'ImmaginiNonUsate' ),
'Unusedtemplates' => array( 'TemplateNonUsati' ),
- 'Randomredirect' => array( 'RedirectCasuale' ),
- 'Mypage' => array( 'MiaPaginaUtente', 'MiaPagina' ),
- 'Mytalk' => array( 'MieDiscussioni' ),
- 'Mycontributions' => array( 'MieiContributi' ),
- 'Listadmins' => array( 'Amministratori', 'ElencoAmministratori', 'Admin' ),
- 'Listbots' => array( 'Bot', 'ElencoBot' ),
- 'Popularpages' => array( 'PaginePiùVisitate' ),
- 'Search' => array( 'Ricerca', 'Cerca' ),
- 'Resetpass' => array( 'CambiaPassword' ),
+ 'Unwatchedpages' => array( 'PagineNonOsservate' ),
+ 'Upload' => array( 'Carica' ),
+ 'Userlogin' => array( 'Entra', 'Login' ),
+ 'Userlogout' => array( 'Esci', 'Logout' ),
+ 'Userrights' => array( 'PermessiUtente' ),
+ 'Version' => array( 'Versione' ),
+ 'Wantedcategories' => array( 'CategorieRichieste' ),
+ 'Wantedfiles' => array( 'FileRichiesti' ),
+ 'Wantedpages' => array( 'PagineRichieste' ),
+ 'Wantedtemplates' => array( 'TemplateRichiesti' ),
+ 'Watchlist' => array( 'OsservatiSpeciali' ),
+ 'Whatlinkshere' => array( 'PuntanoQui' ),
'Withoutinterwiki' => array( 'PagineSenzaInterwiki' ),
- 'MergeHistory' => array( 'FondiCronologia', 'UnificaCronologia' ),
- 'Filepath' => array( 'Percorso' ),
- 'Invalidateemail' => array( 'InvalidaEMail' ),
- 'Blankpage' => array( 'PaginaVuota' ),
- 'LinkSearch' => array( 'CercaCollegamenti' ),
- 'DeletedContributions' => array( 'ContributiCancellati' ),
- 'Tags' => array( 'Etichette' ),
- 'Activeusers' => array( 'UtentiAttivi' ),
- 'ComparePages' => array( 'ComparaPagine' ),
- 'Badtitle' => array( 'TitoloErrato' ),
);
$magicWords = array(
@@ -279,8 +282,8 @@ $messages = array(
'tog-shownumberswatching' => 'Mostra il numero di utenti che hanno la pagina in osservazione',
'tog-oldsig' => 'Firma attuale:',
'tog-fancysig' => 'Tratta la firma come wikitesto (senza un collegamento automatico)',
-'tog-externaleditor' => "Usa per default un editor di testi esterno (solo per utenti esperti, richiede l'uso di impostazioni particolari sul proprio computer. [http://www.mediawiki.org/wiki/Manual:External_editors Ulteriori informazioni.])",
-'tog-externaldiff' => "Usa per default un programma di diff esterno (solo per utenti esperti, richiede l'uso di impostazioni particolari sul proprio computer. [http://www.mediawiki.org/wiki/Manual:External_editors Ulteriori informazioni.])",
+'tog-externaleditor' => "Usa per default un editor di testi esterno (solo per utenti esperti, richiede l'uso di impostazioni particolari sul proprio computer. [//www.mediawiki.org/wiki/Manual:External_editors Ulteriori informazioni.])",
+'tog-externaldiff' => "Usa per default un programma di diff esterno (solo per utenti esperti, richiede l'uso di impostazioni particolari sul proprio computer. [//www.mediawiki.org/wiki/Manual:External_editors Ulteriori informazioni.])",
'tog-showjumplinks' => 'Attiva i collegamenti accessibili "vai a"',
'tog-uselivepreview' => "Attiva la funzione ''Live preview'' (anteprima in diretta - richiede JavaScript; sperimentale)",
'tog-forceeditsummary' => 'Chiedi conferma se il campo oggetto è vuoto',
@@ -377,16 +380,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Pagine indicizzate',
'noindex-category' => 'Pagine non indicizzate',
-
-'mainpagetext' => "'''Installazione di MediaWiki completata correttamente.'''",
-'mainpagedocfooter' => "Consultare la [http://meta.wikimedia.org/wiki/Aiuto:Sommario Guida utente] per maggiori informazioni sull'uso di questo software wiki.
-
-== Per iniziare ==
-I seguenti collegamenti sono in lingua inglese:
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Impostazioni di configurazione]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Domande frequenti su MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list annunci MediaWiki]",
+'broken-file-category' => 'Pagine che includono file inesistenti',
'about' => 'Informazioni',
'article' => 'Voce',
@@ -438,10 +432,10 @@ I seguenti collegamenti sono in lingua inglese:
'history' => 'Versioni precedenti',
'history_short' => 'Cronologia',
'updatedmarker' => 'modificata dalla mia ultima visita',
-'info_short' => 'Informazioni',
'printableversion' => 'Versione stampabile',
'permalink' => 'Link permanente',
'print' => 'Stampa',
+'view' => 'Visualizzare',
'edit' => 'Modifica',
'create' => 'Crea',
'editthispage' => 'Modifica questa pagina',
@@ -449,6 +443,7 @@ I seguenti collegamenti sono in lingua inglese:
'delete' => 'Cancella',
'deletethispage' => 'Cancella questa pagina',
'undelete_short' => 'Recupera {{PLURAL:$1|una revisione|$1 revisioni}}',
+'viewdeleted_short' => 'Vedi {{PLURAL:$1|una modifica cancellata|$1 modifiche cancellate}}',
'protect' => 'Proteggi',
'protect_change' => 'cambia',
'protectthispage' => 'Proteggi questa pagina',
@@ -532,6 +527,8 @@ $1',
'toc' => 'Indice',
'showtoc' => 'mostra',
'hidetoc' => 'nascondi',
+'collapsible-collapse' => 'Comprimi',
+'collapsible-expand' => 'Espandi',
'thisisdeleted' => 'Vedi o ripristina $1?',
'viewdeleted' => 'Vedi $1?',
'restorelink' => '{{PLURAL:$1|una modifica cancellata|$1 modifiche cancellate}}',
@@ -543,6 +540,8 @@ $1',
'page-rss-feed' => 'Feed RSS per "$1"',
'page-atom-feed' => 'Feed Atom per "$1"',
'red-link-title' => '$1 (la pagina non esiste)',
+'sort-descending' => 'Ordinamento decrescente',
+'sort-ascending' => 'Ordinamento crescente',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Pagina',
@@ -626,12 +625,13 @@ Query: $2',
'viewsourcetext' => 'È possibile visualizzare e copiare il codice sorgente di questa pagina:',
'protectedinterface' => "Questa pagina contiene un elemento che fa parte dell'interfaccia utente del software; è quindi protetta per evitare possibili abusi.",
'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.
-Per le traduzioni, considera la possibilità di usare [http://translatewiki.net/wiki/Main_Page?setlang=it translatewiki.net], il progetto MediaWiki per la localizzazione.",
+Per le traduzioni, 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)',
'cascadeprotected' => 'Su questa pagina non è possibile effettuare modifiche perché è stata inclusa {{PLURAL:$1|nella pagina indicata di seguito, che è stata protetta|nelle pagine indicate di seguito, che sono state protette}} selezionando la protezione "ricorsiva":
$2',
'namespaceprotected' => "Non si dispone dei permessi necessari per modificare le pagine del namespace '''$1'''.",
-'customcssjsprotected' => 'Non si dispone dei permessi necessari alla modifica di questa pagina, in quanto contiene le impostazioni personali di un altro utente.',
+'customcssprotected' => 'Non si dispone dei permessi necessari alla modifica di questa pagina CSS, in quanto contiene le impostazioni personali di un altro utente.',
+'customjsprotected' => 'Non si dispone dei permessi necessari alla modifica di questa pagina JavaScript, in quanto contiene le impostazioni personali di un altro utente.',
'ns-specialprotected' => 'Non è possibile modificare le pagine speciali.',
'titleprotected' => "La creazione di una pagina con questo titolo è stata bloccata da [[User:$1|$1]].
La motivazione è la seguente: ''$2''.",
@@ -669,6 +669,7 @@ L'account è stato creato correttamente. Non dimenticare di personalizzare le [[
'createaccount' => 'Crea un nuovo utente',
'gotaccount' => "Hai già un accesso? '''$1'''.",
'gotaccountlink' => 'Entra',
+'userlogin-resetlink' => 'Hai dimenticato i tuoi dati di accesso?',
'createaccountmail' => 'via e-mail',
'createaccountreason' => 'Motivo:',
'badretype' => 'Le password inserite non coincidono tra loro.',
@@ -678,11 +679,13 @@ Scegliere un nome utente diverso.',
'createaccounterror' => "Impossìbile creare s'account: $1",
'nocookiesnew' => "La registrazione è stata completata, ma non è stato possibile accedere a {{SITENAME}} perché i cookie sono disattivati. Riprovare l'accesso con il nome utente e la password appena creati dopo aver attivato i cookie nel proprio browser.",
'nocookieslogin' => "L'accesso a {{SITENAME}} richiede l'uso dei cookie, che risultano disattivati. Riprovare l'accesso dopo aver attivato i cookie nel proprio browser.",
+'nocookiesfornew' => "L'account utente non è stato creato, poiché non abbiamo potuto confermare la sua fonte.
+Assicurati di avere attivato i cookie, ricarica questa pagina e riprova.",
'noname' => 'Il nome utente indicato non è valido.',
'loginsuccesstitle' => 'Accesso effettuato',
'loginsuccess' => "'''Sei stato connesso al server di {{SITENAME}} con il nome utente di \"\$1\".'''",
'nosuchuser' => 'Non è registrato alcun utente di nome "$1". I nomi utente sono sensibili alle maiuscole. Verificare il nome inserito o [[Special:UserLogin/signup|creare un nuovo accesso]].',
-'nosuchusershort' => 'Non è registrato alcun utente di nome "<nowiki>$1</nowiki>". Verificare il nome inserito.',
+'nosuchusershort' => 'Non è registrato alcun utente di nome "$1". Verificare il nome inserito.',
'nouserspecified' => 'È necessario specificare un nome utente.',
'login-userblocked' => 'Questa utenza è bloccata. Non è possibile effettuare il login.',
'wrongpassword' => 'La password inserita non è corretta. Riprovare.',
@@ -724,13 +727,14 @@ Se l\'accesso è stato creato per errore, si può ignorare questo messaggio.',
'usernamehasherror' => 'Il nome utente non può contenere caratteri hash',
'login-throttled' => 'Sono stati effettuati troppi tentativi di accesso in breve tempo.
Riprovare più tardi.',
+'login-abort-generic' => 'Il tuo login non ha avuto successo - Annullato',
'loginlanguagelabel' => 'Lingua: $1',
'suspicious-userlogout' => 'La tua richiesta di disconnessione è stata negata perché sembra inviata da un browser non funzionante o un proxy di caching.',
# E-mail sending
'php-mail-error-unknown' => 'Errore sconosciuto nella funzione PHP mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Cambia la password',
'resetpass_announce' => "L'accesso è stato effettuato con un codice temporaneo, inviato via e-mail. Per completare l'accesso è necessario impostare una nuova password:",
'resetpass_text' => '<!-- Aggiungere il testo qui -->',
@@ -748,6 +752,36 @@ Riprovare più tardi.',
La password potrebbe essere stata già cambiata, oppure potrebbe essere stata richiesta una nuova password temporanea.',
'resetpass-temp-password' => 'Password temporanea:',
+# Special:PasswordReset
+'passwordreset' => 'Reimposta password',
+'passwordreset-text' => 'Completa questo modulo per ricevere i dettagli del tuo account via e-mail.',
+'passwordreset-legend' => 'Reimposta password',
+'passwordreset-disabled' => 'La reimpostazione delle password è stata disabilitata su questa wiki',
+'passwordreset-pretext' => '{{PLURAL:$1||Immetti una delle porzioni di dati qui sotto}}',
+'passwordreset-username' => 'Nome utente:',
+'passwordreset-domain' => 'Dominio:',
+'passwordreset-email' => 'Indirizzo e-mail:',
+'passwordreset-emailtitle' => 'Dettagli account su {{SITENAME}}',
+'passwordreset-emailtext-ip' => "Qualcuno (probabilmente tu, con indirizzo IP $1) ha richiesto l'invio di una nuova password per l'accesso a {{SITENAME}} ($4). {{PLURAL:$3|L'utente associato|Gli utenti associati}} a questo indirizzo e-mail sono:
+
+$2
+
+{{PLURAL:$3|Questa password temporanea scadrà|Queste password temporanee scadranno}} dopo {{PLURAL:$5|un giorno|$5 giorni}}.
+Dovresti accedere e scegliere una nuova password ora.
+
+Se non sei stato tu a fare la richiesta, o se ti sei ricordato la password originale e non vuoi più cambiarla, puoi ignorare questo messaggio e continuare al utilizzare la tua vecchia password.",
+'passwordreset-emailtext-user' => "L'utente $1 di {{SITENAME}} ha richiesto l'invio di una nuova password per l'accesso a {{SITENAME}} ($4). {{PLURAL:$3|L'utente associato|Gli utenti associati}} a questo indirizzo e-mail sono:
+
+$2
+
+{{PLURAL:$3|Questa password temporanea scadrà|Queste password temporanee scadranno}} dopo {{PLURAL:$5|un giorno|$5 giorni}}.
+Dovresti accedere e scegliere una nuova password ora.
+
+Se non sei stato tu a fare la richiesta, o se ti sei ricordato la password originale e non vuoi più cambiarla, puoi ignorare questo messaggio e continuare al utilizzare la tua vecchia password.",
+'passwordreset-emailelement' => 'Nome utente: $1
+Password temporanea: $2',
+'passwordreset-emailsent' => 'È stata inviata una e-mail di promemoria.',
+
# Edit page toolbar
'bold_sample' => 'Grassetto',
'bold_tip' => 'Grassetto',
@@ -759,8 +793,6 @@ La password potrebbe essere stata già cambiata, oppure potrebbe essere stata ri
'extlink_tip' => 'Collegamento esterno (ricorda il prefisso http:// )',
'headline_sample' => 'Intestazione',
'headline_tip' => 'Intestazione di 2° livello',
-'math_sample' => 'Inserire qui la formula',
-'math_tip' => 'Formula matematica (LaTeX)',
'nowiki_sample' => 'Inserire qui il testo non formattato',
'nowiki_tip' => 'Ignora la formattazione wiki',
'image_sample' => 'Esempio.jpg',
@@ -834,13 +866,13 @@ Potrebbe essere stata spostata o eliminata mentre si stava visionando la pagina.
La password per questo nuovo account può essere modificata all'accesso nella pagina per ''[[Special:ChangePassword|cambiare la password]]''.",
'newarticle' => '(Nuovo)',
-'newarticletext' => "Il collegamento appena aperto corrisponde ad una pagina non ancora esistente.
+'newarticletext' => "Il collegamento appena seguito corrisponde ad una pagina non ancora esistente.
Se vuoi creare la pagina ora, basta cominciare a scrivere il testo nella casella qui sotto (vedi la [[{{MediaWiki:Helppage}}|pagina di aiuto]] per maggiori informazioni).
Se il collegamento è stato aperto per errore, è sufficiente fare clic sul pulsante '''Indietro''' del proprio browser.",
'anontalkpagetext' => "----''Questa è la pagina di discussione di un utente anonimo, che non ha ancora creato un accesso o comunque non lo usa. Per identificarlo è quindi necessario usare il numero del suo indirizzo IP. Gli indirizzi IP possono però essere condivisi da più utenti. Se sei un utente anonimo e ritieni che i commenti presenti in questa pagina non si riferiscano a te, [[Special:UserLogin/signup|crea un nuovo accesso]] o [[Special:UserLogin|entra con quello che già hai]] per evitare di essere confuso con altri utenti anonimi in futuro.''",
'noarticletext' => 'In questo momento la pagina richiesta è vuota. È possibile [[Special:Search/{{PAGENAME}}|cercare questo titolo]] nelle altre pagine del sito, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercare nei registri correlati] oppure [{{fullurl:{{FULLPAGENAME}}|action=edit}} modificare la pagina ora]</span>.',
'noarticletext-nopermission' => 'In questo momento la pagina richiesta è vuota. È possibile [[Special:Search/{{PAGENAME}}|cercare questo titolo]] nelle altre pagine del sito o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cercare nei registri correlati]</span>.',
-'userpage-userdoesnotexist' => 'L\'account "$1" non corrisponde a un utente registrato. Verificare che si intenda davvero creare o modificare questa pagina.',
+'userpage-userdoesnotexist' => 'L\'account "<nowiki>$1</nowiki>" non corrisponde a un utente registrato. Verificare che si intenda davvero creare o modificare questa pagina.',
'userpage-userdoesnotexist-view' => 'L\'account utente "$1" non è registrato.',
'blocked-notice-logextract' => "Questo utente è attualmente bloccato.
L'ultimo elemento del registro dei blocchi è riportato di seguito per informazione:",
@@ -870,6 +902,7 @@ Se il problema persiste, si può provare a [[Special:UserLogout|scollegarsi]] ed
'''Se questo è un legittimo tentativo di modifica, riprovare. Se il problema persiste, si può provare a [[Special:UserLogout|scollegarsi]] ed effettuare un nuovo accesso.'''",
'token_suffix_mismatch' => "'''La modifica non è stata salvata perché il client ha mostrato di gestire in modo errato i caratteri di punteggiatura nel token associato alla stessa. Per evitare una possibile corruzione del testo della pagina, è stata rifiutata l'intera modifica. Questa situazione può verificarsi, talvolta, quando vengono usati alcuni servizi di proxy anonimi via web che presentano dei bug.'''",
+'edit_form_incomplete' => "' ' Alcune parti del modulo di modifica non hanno raggiunto il server; controllare che le modifiche siano intatte e riprovare. ' '",
'editing' => 'Modifica di $1',
'editingsection' => 'Modifica di $1 (sezione)',
'editingcomment' => 'Modifica di $1 (nuova sezione)',
@@ -1094,7 +1127,7 @@ $1",
# Suppression log
'suppressionlog' => 'Log delle soppressioni',
-'suppressionlogtext' => "Di seguito sono elencate le cancellazioni e i blocchi più recenti riguardanti contenuti nascosti agli amministratori. Vedi l'[[Special:IPBlockList|elenco degli IP bloccati]] per l'elenco dei blocchi attivi al momento.",
+'suppressionlogtext' => "Di seguito sono elencate le cancellazioni e i blocchi con del contenuto nascosto agli amministratori. Vedi l'[[Special:BlockList|elenco degli IP bloccati]] per l'elenco dei blocchi attivi al momento.",
# History merging
'mergehistory' => 'Unione cronologie',
@@ -1201,12 +1234,13 @@ $1",
'searchdisabled' => 'La ricerca interna di {{SITENAME}} non è attiva; nel frattempo si può provare ad usare un motore di ricerca esterno come Google. (Si noti però che i contenuti di {{SITENAME}} presenti in tali motori potrebbero non essere aggiornati.)',
# Quickbar
-'qbsettings' => 'Quickbar',
-'qbsettings-none' => 'Nessuno',
-'qbsettings-fixedleft' => 'Fisso a sinistra',
-'qbsettings-fixedright' => 'Fisso a destra',
-'qbsettings-floatingleft' => 'Fluttuante a sinistra',
-'qbsettings-floatingright' => 'Fluttuante a destra',
+'qbsettings' => 'Quickbar',
+'qbsettings-none' => 'Nessuno',
+'qbsettings-fixedleft' => 'Fisso a sinistra',
+'qbsettings-fixedright' => 'Fisso a destra',
+'qbsettings-floatingleft' => 'Fluttuante a sinistra',
+'qbsettings-floatingright' => 'Fluttuante a destra',
+'qbsettings-directionality' => 'Fisso, a seconda della direzione del testo nella tua lingua',
# Preferences page
'preferences' => 'Preferenze',
@@ -1217,9 +1251,10 @@ $1",
'changepassword' => 'Cambia password',
'prefs-skin' => 'Aspetto grafico (skin)',
'skin-preview' => 'Anteprima',
-'prefs-math' => 'Formule matematiche',
'datedefault' => 'Nessuna preferenza',
+'prefs-beta' => 'Funzionalità beta',
'prefs-datetime' => 'Data e ora',
+'prefs-labs' => 'Funzionalità dei laboratori',
'prefs-personal' => 'Profilo utente',
'prefs-rc' => 'Ultime modifiche',
'prefs-watchlist' => 'Osservati speciali',
@@ -1241,8 +1276,6 @@ $1",
'columns' => 'Colonne:',
'searchresultshead' => 'Ricerca',
'resultsperpage' => 'Numero di risultati per pagina:',
-'contextlines' => 'Righe di testo per ciascun risultato:',
-'contextchars' => 'Numero di caratteri di contesto:',
'stub-threshold' => 'Valore minimo per i <a href="#" class="stub">collegamenti agli stub</a>, in byte:',
'stub-threshold-disabled' => 'Disattivato',
'recentchangesdays' => 'Numero di giorni da mostrare nelle ultime modifiche:',
@@ -1253,7 +1286,7 @@ $1",
'savedprefs' => 'Le preferenze sono state salvate.',
'timezonelegend' => 'Fuso orario:',
'localtime' => 'Ora locale:',
-'timezoneuseserverdefault' => 'Usa ora del server',
+'timezoneuseserverdefault' => 'Usa ora predefinita del wiki ($1)',
'timezoneuseoffset' => 'Altro (specificare differenza)',
'timezoneoffset' => 'Differenza¹:',
'servertime' => 'Ora del server:',
@@ -1300,7 +1333,8 @@ L'operazione non può essere annullata.",
'prefs-help-gender' => "Opzionale: consente di adattare i messaggi del software in funzione del genere dell'utente. Questa informazione sarà pubblica.",
'email' => 'Indirizzo e-mail',
'prefs-help-realname' => "L'indicazione del proprio nome vero è opzionale; se si sceglie di inserirlo, verrà utilizzato per attribuire la paternità dei contenuti inviati.",
-'prefs-help-email' => "L'inserimento del proprio indirizzo e-mail è opzionale ma permette di ricevere la propria password via e-mail qualora venisse dimenticata. È inoltre possibile permettere di essere contattati dagli altri utenti attraverso un link nella propria pagina utente o nella relativa pagina di discussione, senza dover rivelare la propria identità.",
+'prefs-help-email' => "L'inserimento del proprio indirizzo e-mail è facoltativo, ma permette di ricevere la propria password qualora venisse dimenticata.",
+'prefs-help-email-others' => 'Puoi anche scegliere di lasciare che gli altri ti contattino tramite le vostre pagine utente o di discussione senza rivelare la tua identità.',
'prefs-help-email-required' => 'Indirizzo e-mail necessario.',
'prefs-info' => 'Informazioni di base',
'prefs-i18n' => 'Internazionalizzazione',
@@ -1411,7 +1445,7 @@ L'operazione non può essere annullata.",
'right-editusercssjs' => 'Modifica i file CSS e JS di altri utenti',
'right-editusercss' => 'Modifica i file CSS di altri utenti',
'right-edituserjs' => 'Modifica i file JS di altri utenti',
-'right-rollback' => "Rollback rapido delle modifiche dell'ultimo utente che ha modificato una particolare pagina",
+'right-rollback' => "Annullamento rapido delle modifiche dell'ultimo utente che ha modificato una particolare pagina",
'right-markbotedits' => 'Segna le modifiche soggette a rollback come effettuate da bot',
'right-noratelimit' => 'Non soggetto al limite di azioni',
'right-import' => 'Importa pagine da altri wiki',
@@ -1425,15 +1459,15 @@ L'operazione non può essere annullata.",
'right-userrights' => "Modifica tutti i diritti dell'utente",
'right-userrights-interwiki' => 'Modifica i diritti degli utenti di altre wiki',
'right-siteadmin' => 'Blocca e sblocca il database',
-'right-reset-passwords' => 'Reimposta le password di altri utenti',
'right-override-export-depth' => 'Esporta le pagine includendo le pagine collegate fino ad una profondità di 5',
'right-sendemail' => 'Invia e-mail ad altri utenti',
# 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",
-'rightsnone' => '(nessuno)',
+'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',
+'rightsnone' => '(nessuno)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'leggere questa pagina',
@@ -1553,11 +1587,11 @@ Consultare la [[Special:NewFiles|galleria dei nuovi file]] per una visione d'ins
'minlength1' => "Il nome del file dev'essere composto da almeno un carattere.",
'illegalfilename' => 'Il nome "$1" contiene dei caratteri non ammessi nei titoli delle pagine. Dare al file un nome diverso e provare a caricarlo di nuovo.',
'badfilename' => 'Il nome del file è stato convertito in "$1".',
-'filetype-mime-mismatch' => "L'estensione del file non corrisponde con il tipo MIME.",
+'filetype-mime-mismatch' => 'L\'estensione del file ".$1" non corrisponde al tipo MIME rilevato dal file ($2).',
'filetype-badmime' => 'Non è consentito caricare file di tipo MIME "$1".',
'filetype-bad-ie-mime' => 'Impossibile caricare il file perché Internet Explorer lo rileverebbe come "$1", che è un tipo di file non consentito e potenzialmente pericoloso.',
'filetype-unwanted-type' => "Caricare file di tipo '''\".\$1\"''' è sconsigliato. {{PLURAL:\$3|Il tipo di file consigliato è|I tipi di file consigliati sono}} \$2.",
-'filetype-banned-type' => "Caricare file di tipo '''\".\$1\"''' non è consentito. {{PLURAL:\$3|Il tipo di file consentito è|I tipi di file consentiti sono}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|non è un tipo di file consentito|non sono tipi di file consentiti}}. {{PLURAL:$3|Il tipo di file consentito è|I tipi di file consentiti sono}} $2.',
'filetype-missing' => 'Il file è privo di estensione (ad es. ".jpg").',
'empty-file' => 'Il file che hai inviato è vuoto.',
'file-too-large' => 'Il file che hai inviato è troppo grande.',
@@ -1573,6 +1607,7 @@ Consultare la [[Special:NewFiles|galleria dei nuovi file]] per una visione d'ins
'large-file' => 'Si raccomanda di non superare le dimensioni di $1 per ciascun file; questo file è grande $2.',
'largefileserver' => 'Il file supera le dimensioni consentite dalla configurazione del server.',
'emptyfile' => 'Il file appena caricato sembra essere vuoto. Ciò potrebbe essere dovuto ad un errore nel nome del file. Verificare che si intenda realmente caricare questo file.',
+'windows-nonascii-filename' => 'Questo wiki non supporta nomi di file con caratteri speciali.',
'fileexists' => "Un file con questo nome esiste già.
Verificare prima '''<tt>[[:$1]]</tt>''' se non si è sicuri di volerlo sovrascrivere.
[[$1|thumb]]",
@@ -1603,6 +1638,8 @@ Se si dispone dell'immagine nella risoluzione originale, si prega di caricarla.
'php-uploaddisabledtext' => 'Il caricamento di file tramite PHP è disabilitato. Controlla la configurazione di file_uploads.',
'uploadscripted' => 'Questo file contiene codice HTML o di script, che potrebbe essere interpretato erroneamente da un browser web.',
'uploadvirus' => 'Questo file contiene un virus! Dettagli: $1',
+'uploadjava' => "Questo file è un file ZIP che contiene un file .class Java.
+Carica i file Java non è consentito, perché possono causare l'aggiramento delle restrizioni di sicurezza.",
'upload-source' => 'File di origine',
'sourcefilename' => 'Nome del file di origine:',
'sourceurl' => 'URL di origine:',
@@ -1612,10 +1649,6 @@ Se si dispone dell'immagine nella risoluzione originale, si prega di caricarla.
'upload-options' => 'Opzioni di caricamento',
'watchthisupload' => 'Aggiungi agli osservati speciali',
'filewasdeleted' => 'Un file con questo nome è stato già caricato e cancellato in passato. Verificare il log delle $1 prima di caricarlo di nuovo.',
-'upload-wasdeleted' => "'''Attenzione: si sta per caricare un file già cancellato in passato.'''
-
-Accertarsi che sia davvero opportuno continuare a caricare questo file.
-L'elenco delle relative cancellazioni viene riportato di seguito per comodità:",
'filename-bad-prefix' => "Il nome del file che si sta caricando inizia con '''\"\$1\"''', che è un nome generico simile a quelli assegnati automaticamente dalle fotocamere digitali. Si prega di scegliere un nome più descrittivo per il file.",
'filename-prefix-blacklist' => ' #<!-- lascia questa riga esattamente com\'è --> <pre>
# La sintassi è la seguente:
@@ -1650,12 +1683,29 @@ $1',
'upload-unknown-size' => 'Dimensione sconosciuta',
'upload-http-error' => 'Si è verificato un errore HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => "Si è verificato un errore durante l'apertura del file per i controlli ZIP.",
+'zip-wrong-format' => 'Il file specificato non è un file ZIP.',
+'zip-bad' => 'Il file è un file ZIP corrotto o altrimenti illeggibile.
+Non può essere adeguatamente controllato per la sicurezza.',
+'zip-unsupported' => 'Il file è un file ZIP che usa caratteristiche ZIP non supportate da MediaWiki.
+Non può essere adeguatamente controllato per la sicurezza.',
+
+# Special:UploadStash
+'uploadstash' => 'Carica stash',
+'uploadstash-summary' => "Questa pagina consente l'accesso ai file che sono stati caricati (o sono in fase di caricamento) ma che non sono stati ancora pubblicati sul wiki. Questi file sono visibili solo all'utente che li ha caricati.",
+'uploadstash-clear' => 'Elimina i file in stash',
+'uploadstash-nofiles' => 'Non hai file in stash.',
+'uploadstash-badtoken' => 'Questa azione non ha avuto successo, forse perché le tue credenziali di modifica sono scadute. Prova ancora.',
+'uploadstash-errclear' => 'La cancellazione dei file non ha avuto successo.',
+'uploadstash-refresh' => "Aggiorna l'elenco dei file",
+
# img_auth script messages
'img-auth-accessdenied' => 'Accesso negato',
'img-auth-nopathinfo' => 'PATH_INFO mancante.
Il server non è impostato per passare questa informazione.
Potrebbe essere basato su CGI e non può supportare img_auth.
-Consultare http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Consultare la documentazione.]',
'img-auth-notindir' => 'Il percorso richiesto non si trova nella directory di upload configurata.',
'img-auth-badtitle' => 'Impossibile costruire un titolo valido da "$1".',
'img-auth-nologinnWL' => 'Non si è effettuato l\'accesso e "$1" non è nella whitelist.',
@@ -1730,7 +1780,7 @@ Di seguito sono elencate solo {{PLURAL:$1|la prima pagina che punta|le prime $1
È disponibile un [[Special:WhatLinksHere/$2|elenco completo]].',
'nolinkstoimage' => 'Nessuna pagina contiene collegamenti al file.',
'morelinkstoimage' => 'Visualizza [[Special:WhatLinksHere/$1|altri link]] a questo file.',
-'redirectstofile' => '{{PLURAL:$1|Il seguente|I seguenti $1}} file {{PLURAL:$1|è|sono}} un redirect a questo file:',
+'linkstoimage-redirect' => '$1 (reindirizzamento file) $2',
'duplicatesoffile' => '{{PLURAL:$1|Il seguente file è un duplicato|I seguenti $1 file sono duplicati}} di questo file ([[Special:FileDuplicateSearch/$2|ulteriori dettagli]]):',
'sharedupload' => 'Questo file proviene da $1 e può essere utilizzato da altri progetti.',
'sharedupload-desc-there' => 'Questo file proviene da $1 e può essere utilizzato da altri progetti.
@@ -1823,12 +1873,13 @@ Di seguito viene mostrata la descrizione presente nella [$2 pagina di descrizion
'disambiguationspage' => 'Template:Disambigua',
'disambiguations-text' => "Le pagine nella lista che segue contengono dei collegamenti a '''pagine di disambiguazione''' e non all'argomento cui dovrebbero fare riferimento.<br />Vengono considerate pagine di disambiguazione tutte quelle che contengono i template elencati in [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Redirect doppi',
-'doubleredirectstext' => 'In questa pagina sono elencate pagine che reindirizzano ad altre pagine di redirect.
+'doubleredirects' => 'Redirect doppi',
+'doubleredirectstext' => 'In questa pagina sono elencate pagine che reindirizzano ad altre pagine di redirect.
Ciascuna riga contiene i collegamenti al primo ed al secondo redirect, oltre alla prima riga di testo del secondo redirect che di solito contiene la pagina di destinazione "corretta" alla quale dovrebbe puntare anche il primo redirect.
I redirect <del>cancellati</del> sono stati corretti.',
-'double-redirect-fixed-move' => '[[$1]] è stata spostata automaticamente, ora è un redirect a [[$2]]',
-'double-redirect-fixer' => 'Correttore di redirect',
+'double-redirect-fixed-move' => '[[$1]] è stata spostata automaticamente, ora è un redirect a [[$2]]',
+'double-redirect-fixed-maintenance' => 'Corretto doppio redirect da [[$1]] a [[$2]].',
+'double-redirect-fixer' => 'Correttore di redirect',
'brokenredirects' => 'Redirect errati',
'brokenredirectstext' => 'I seguenti redirect puntano a pagine inesistenti:',
@@ -1905,6 +1956,7 @@ Potrebbero essere presenti immagini che sono usate da altri siti con un collegam
'pager-newer-n' => '{{PLURAL:$1|1 più recente|$1 più recenti}}',
'pager-older-n' => '{{PLURAL:$1|1 meno recente|$1 meno recenti}}',
'suppress' => 'Oversight',
+'querypage-disabled' => 'Questa pagina speciale è disattivata per motivi di prestazioni.',
# Book sources
'booksources' => 'Fonti librarie',
@@ -1915,8 +1967,8 @@ Potrebbero essere presenti immagini che sono usate da altri siti con un collegam
'booksources-invalid-isbn' => "L'ISBN inserito sembra non essere valido; verificare che non siano stati commessi errori nel copiarlo dalla fonte originale.",
# Special:Log
-'specialloguserlabel' => 'Utente:',
-'speciallogtitlelabel' => 'Titolo:',
+'specialloguserlabel' => 'Azione effettuata da:',
+'speciallogtitlelabel' => 'Azione effettuata su:',
'log' => 'Log',
'all-logs-page' => 'Tutti i registri pubblici',
'alllogstext' => "Presentazione unificata di tutti i registri di {{SITENAME}}.
@@ -1956,7 +2008,7 @@ Vedi anche le [[Special:WantedCategories|categorie richieste]].',
'sp-deletedcontributions-contribs' => 'contributi',
# Special:LinkSearch
-'linksearch' => 'Collegamenti esterni',
+'linksearch' => 'Ricerca collegamenti esterni',
'linksearch-pat' => 'Pattern di ricerca:',
'linksearch-ns' => 'Namespace:',
'linksearch-ok' => 'Cerca',
@@ -2021,6 +2073,10 @@ Potrebbero esserci [[{{MediaWiki:Listgrouprights-helppage}}|ulteriori informazio
'noemailtext' => 'Questo utente non ha indicato un indirizzo e-mail valido.',
'nowikiemailtitle' => 'E-mail non permessa',
'nowikiemailtext' => 'Questo utente ha scelto di non ricevere messaggi di posta elettronica dagli altri utenti.',
+'emailnotarget' => 'Nome utente del destinatario inesistente o non valido.',
+'emailtarget' => 'Inserisci il nome utente del destinatario',
+'emailusername' => 'Nome utente:',
+'emailusernamesubmit' => 'Invia',
'email-legend' => 'Invia un messaggio e-mail a un altro utente di {{SITENAME}}',
'emailfrom' => 'Da:',
'emailto' => 'A:',
@@ -2046,11 +2102,11 @@ Potrebbero esserci [[{{MediaWiki:Listgrouprights-helppage}}|ulteriori informazio
'watchlistanontext' => "Per visualizzare e modificare l'elenco degli osservati speciali è necessario $1.",
'watchnologin' => 'Accesso non effettuato',
'watchnologintext' => "Per modificare la lista degli osservati speciali è necessario prima eseguire l'[[Special:UserLogin|accesso al sito]].",
-'addedwatch' => 'Pagina aggiunta alla lista degli osservati speciali',
+'addwatch' => 'Aggiungi agli osservati speciali',
'addedwatchtext' => "La pagina \"[[:\$1]]\" è stata aggiunta alla propria [[Special:Watchlist|lista degli osservati speciali]].
D'ora in poi, le modifiche apportate alla pagina e alla sua discussione verranno elencate in quella sede;
il titolo della pagina apparirà in '''grassetto''' nella pagina delle [[Special:RecentChanges|ultime modifiche]] per renderlo più visibile.",
-'removedwatch' => 'Pagina eliminata dalla lista degli osservati speciali',
+'removewatch' => 'Rimuovi dagli osservati speciali',
'removedwatchtext' => 'La pagina "[[:$1]]" è stata eliminata dalla [[Special:Watchlist|lista degli osservati speciali]].',
'watch' => 'Segui',
'watchthispage' => 'Segui questa pagina',
@@ -2071,8 +2127,9 @@ il titolo della pagina apparirà in '''grassetto''' nella pagina delle [[Special
'watchlist-options' => 'Opzioni osservati speciali',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Aggiunta agli osservati speciali...',
-'unwatching' => 'Eliminazione dagli osservati speciali...',
+'watching' => 'Aggiunta agli osservati speciali...',
+'unwatching' => 'Eliminazione dagli osservati speciali...',
+'watcherrortext' => 'Si è verificato un errore durante la modifica degli osservati speciali per "$1".',
'enotif_mailer' => 'Sistema di notifica via e-mail di {{SITENAME}}',
'enotif_reset' => 'Segna tutte le pagine come già visitate',
@@ -2102,16 +2159,16 @@ Non verranno inviate altre notifiche in caso di ulteriori cambiamenti, a meno ch
--
Per modificare le impostazioni delle notifiche via e-mail, visita
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Per modificare la lista degli osservati speciali, visita
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Per rimuovere la pagina dalla lista degli osservati speciali, visita
$UNWATCHURL
Per commentare e ricevere aiuto:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Cancella pagina',
@@ -2126,7 +2183,7 @@ Per commentare e ricevere aiuto:
'confirmdeletetext' => 'Stai per cancellare una pagina con tutta la sua cronologia. Per cortesia, conferma che è tua intenzione procedere a tale cancellazione, che hai piena consapevolezza delle conseguenze della tua azione e che essa è conforme alle linee guida stabilite in [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Azione completata',
'actionfailed' => 'Azione fallita',
-'deletedtext' => 'La pagina "<nowiki>$1</nowiki>" è stata cancellata.
+'deletedtext' => 'La pagina "$1" è stata cancellata.
Consultare il log delle $2 per un elenco delle pagine cancellate di recente.',
'deletedarticle' => 'ha cancellato "[[$1]]"',
'suppressedarticle' => 'ha soppresso "[[$1]]"',
@@ -2179,7 +2236,7 @@ Vedi la [[Special:ProtectedPages|lista delle pagine protette]] per l'elenco dell
'protect_expiry_invalid' => 'Scadenza non valida.',
'protect_expiry_old' => 'Scadenza già trascorsa.',
'protect-unchain-permissions' => 'Sblocca ulteriori opzioni di protezione',
-'protect-text' => "Questo modulo consente di vedere e modificare il livello di protezione per la pagina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Questo modulo consente di vedere e modificare il livello di protezione per la pagina '''$1'''.",
'protect-locked-blocked' => "Non è possibile modificare i livelli di protezione quando è attivo un blocco. Le impostazioni correnti per la pagina sono '''$1''':",
'protect-locked-dblock' => "Impossibile modificare i livelli di protezione durante un blocco del database.
Le impostazioni correnti per la pagina sono '''$1''':",
@@ -2231,7 +2288,8 @@ Le impostazioni correnti per la pagina sono '''$1''':",
'viewdeletedpage' => 'Visualizza le pagine cancellate',
'undeletepagetext' => "{{PLURAL:$1|La pagina indicata di seguito è stata cancellata, ma è ancora in archivio e pertanto può essere recuperata|Le pagine indicate di seguito sono state cancellate, ma sono ancora in archivio e pertanto possono essere recuperate}}. L'archivio può essere svuotato periodicamente.",
'undelete-fieldset-title' => 'Recupera revisioni',
-'undeleteextrahelp' => "Per recuperare l'intera cronologia della pagina, lasciare tutte le caselle deselezionate e fare clic su '''''Ripristina'''''. Per effettuare un ripristino selettivo, selezionare le caselle corrispondenti alle revisioni da ripristinare e fare clic su '''''Ripristina'''''. Facendo clic su '''''Reimposta''''' verranno deselezionate tutte le caselle e svuotato lo spazio per il commento.",
+'undeleteextrahelp' => "Per recuperare l'intera cronologia della pagina, lasciare tutte le caselle deselezionate e fare clic su '''''{{int:undeletebtn}}'''''.
+Per effettuare un ripristino selettivo, selezionare le caselle corrispondenti alle revisioni da ripristinare e fare clic su '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '{{PLURAL:$1|Una revisione|$1 revisioni}} in archivio',
'undeletehistory' => 'Recuperando questa pagina, tutte le sue revisioni verranno ripristinate nella relativa cronologia. Se dopo la cancellazione è stata creata una nuova pagina con lo stesso titolo, le revisioni recuperate saranno inserite nella cronologia precedente.',
'undeleterevdel' => "Il ripristino non verrà effettuato se determina la cancellazione parziale della versione attuale della pagina o del file interessato. In tal caso, è necessario rimuovere il segno di spunta o l'oscuramento dalle revisioni cancellate più recenti.",
@@ -2272,9 +2330,12 @@ $1',
'undelete-show-file-submit' => 'Sì',
# Namespace form on various pages
-'namespace' => 'Namespace:',
-'invert' => 'inverti la selezione',
-'blanknamespace' => '(Principale)',
+'namespace' => 'Namespace:',
+'invert' => 'inverti la selezione',
+'tooltip-invert' => "Seleziona questa casella per nascondere le modifiche alle pagine all'interno del namespace selezionato (ed il relativo namespace, se selezionato)",
+'namespace_association' => 'Namespace associato',
+'tooltip-namespace_association' => "Seleziona questa casella per includere anche la pagina di discussione o l'oggetto del namespace associato con il namespace selezionato",
+'blanknamespace' => '(Principale)',
# Contributions
'contributions' => 'Contributi utente',
@@ -2322,13 +2383,15 @@ $1',
'whatlinkshere-filters' => 'Filtri',
# Block/unblock
+'autoblockid' => 'Autoblocco #$1',
+'block' => 'Blocca utente',
+'unblock' => 'Sblocca utente',
'blockip' => 'Blocco utente',
'blockip-title' => 'Blocca utente',
'blockip-legend' => "Blocca l'utente",
'blockiptext' => "Usare il modulo sottostante per bloccare l'accesso in scrittura a uno specifico indirizzo IP o un utente registrato.
Il blocco dev'essere operato per prevenire atti di vandalismo e in stretta osservanza della [[{{MediaWiki:Policy-url}}|policy di {{SITENAME}}]].
Indicare il motivo specifico per il quale si procede al blocco (per esempio, citando i titoli di eventuali pagine oggetto di vandalismo).",
-'ipaddress' => 'Indirizzo IP:',
'ipadressorusername' => 'Indirizzo IP o nome utente:',
'ipbexpiry' => 'Scadenza del blocco:',
'ipbreason' => 'Motivo:',
@@ -2341,7 +2404,7 @@ Indicare il motivo specifico per il quale si procede al blocco (per esempio, cit
** Comportamenti intimidatori o molestie
** Uso indebito di più account
** Nome utente non consono',
-'ipbanononly' => 'Blocca solo utenti anonimi',
+'ipb-hardblock' => 'Impedisci agli utenti registrati di contribuire da questo indirizzo IP',
'ipbcreateaccount' => 'Impedisci la creazione di altri account',
'ipbemailban' => "Impedisci all'utente l'invio di e-mail",
'ipbenableautoblock' => "Blocca automaticamente l'ultimo indirizzo IP usato dall'utente e i successivi con cui vengono tentate modifiche",
@@ -2352,12 +2415,17 @@ Indicare il motivo specifico per il quale si procede al blocco (per esempio, cit
'ipbotherreason' => 'Altri motivi/dettagli:',
'ipbhidename' => 'Nascondi il nome utente dalle modifiche e dagli elenchi.',
'ipbwatchuser' => 'Segui le pagine e le discussioni utente di questo utente',
-'ipballowusertalk' => "Permetti all'utente di modificare la propria pagina di discussione mentre è bloccato",
+'ipb-disableusertalk' => 'Impedisci a questo utente di modificare la propria pagina di discussioni mentre è bloccato',
'ipb-change-block' => "Ri-blocca l'utente con queste impostazioni",
+'ipb-confirm' => 'Conferma il blocco',
'badipaddress' => 'Indirizzo IP non valido.',
'blockipsuccesssub' => 'Blocco eseguito',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] è stato bloccato. <br />
Consultare la [[Special:IPBlockList|lista degli IP bloccati]] per vedere i blocchi attivi.',
+'ipb-blockingself' => 'Stai per bloccare te stesso! Sei sicuro di volerlo fare?',
+'ipb-confirmhideuser' => 'Si sta per bloccare un utente con l\'opzione "Nascondi utente" abilitata.
+In questo modo si evita che il nome utente compaia in tutte le liste e le voci di registro.
+Sei sicuro di voler continuare?',
'ipb-edit-dropdown' => 'Modifica i motivi per il blocco',
'ipb-unblock-addr' => 'Sblocca $1',
'ipb-unblock' => 'Sblocca un utente o un indirizzo IP',
@@ -2367,17 +2435,23 @@ Consultare la [[Special:IPBlockList|lista degli IP bloccati]] per vedere i blocc
'unblockiptext' => "Usare il modulo sottostante per restituire l'accesso in scrittura ad un utente o indirizzo IP bloccato.",
'ipusubmit' => 'Rimuovi questo blocco',
'unblocked' => "L'utente [[User:$1|$1]] è stato sbloccato",
+'unblocked-range' => '$1 è stato sbloccato',
'unblocked-id' => 'Il blocco $1 è stato rimosso',
+'blocklist' => 'Utenti bloccati',
'ipblocklist' => 'Utenti bloccati',
'ipblocklist-legend' => 'Trova un utente bloccato',
-'ipblocklist-username' => 'Nome utente o indirizzo IP:',
-'ipblocklist-sh-userblocks' => '$1 i blocchi degli utenti registrati',
-'ipblocklist-sh-tempblocks' => '$1 i blocchi temporanei',
-'ipblocklist-sh-addressblocks' => '$1 i blocchi dei singoli IP',
+'blocklist-userblocks' => 'Nascondi i blocchi degli account',
+'blocklist-tempblocks' => 'Nascondi i blocchi temporanei',
+'blocklist-addressblocks' => 'Nascondi i blocchi di un solo IP',
+'blocklist-timestamp' => 'Data e ora',
+'blocklist-target' => 'Destinazione',
+'blocklist-expiry' => 'Scade',
+'blocklist-by' => 'Amministratore che ha bloccato',
+'blocklist-params' => 'Parametri di blocco',
+'blocklist-reason' => 'Motivo',
'ipblocklist-submit' => 'Ricerca',
'ipblocklist-localblock' => 'Blocchi locali',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Altro blocco|Altri blocchi}}',
-'blocklistline' => '$1, $2 ha bloccato $3 ($4)',
'infiniteblock' => 'infinito',
'expiringblock' => 'scade il $1 alle $2',
'anononlyblock' => 'solo anonimi',
@@ -2398,7 +2472,7 @@ Il blocco dell\'utente $1 è stato imposto per il seguente motivo: "$2".',
'blocklog-showsuppresslog' => 'Questo utente è stato bloccato e nascosto in precedenza. Il registro delle rimozioni è riportato di seguito per informazione:',
'blocklogentry' => 'ha bloccato [[$1]] per un periodo di $2 $3',
'reblock-logentry' => 'ha cambiato le impostazioni del blocco per [[$1]] con una scadenza di $2 $3',
-'blocklogtext' => "Di seguito sono elencate le azioni di blocco e sblocco utenti. Gli indirizzi IP bloccati automaticamente non sono elencati. Consultare l'[[Special:IPBlockList|elenco IP bloccati]] per l'elenco degli indirizzi e nomi utente il cui blocco è operativo.",
+'blocklogtext' => "Di seguito sono elencate le azioni di blocco e sblocco utenti. Gli indirizzi IP bloccati automaticamente non sono elencati. Consultare l'[[Special:BlockList|elenco IP bloccati]] per l'elenco degli indirizzi e nomi utente il cui blocco è operativo.",
'unblocklogentry' => 'ha sbloccato $1',
'block-log-flags-anononly' => 'solo utenti anonimi',
'block-log-flags-nocreate' => 'creazione account bloccata',
@@ -2412,9 +2486,9 @@ Il blocco dell\'utente $1 è stato imposto per il seguente motivo: "$2".',
'ipb_expiry_temp' => 'I blocchi dei nomi utenti nascosti dovrebbero essere infiniti',
'ipb_hide_invalid' => "Impossibile cancellare l'account; potrebbe avere troppe modifiche.",
'ipb_already_blocked' => 'L\'utente "$1" è già bloccato',
-'ipb-needreblock' => "== Già bloccato ==
-L'utente $1 è già bloccato. Modificare le impostazioni?",
+'ipb-needreblock' => "L'utente $1 è già bloccato. Modificare le impostazioni?",
'ipb-otherblocks-header' => '{{PLURAL:$1|Altro blocco|Altri blocchi}}',
+'unblock-hideuser' => 'Non puoi sbloccare questo utente, perché il suo nome utente è stato nascosto.',
'ipb_cant_unblock' => 'Errore: Impossibile trovare il blocco con ID $1. Il blocco potrebbe essere già stato rimosso.',
'ipb_blocked_as_range' => "Errore: L'indirizzo IP $1 non è soggetto a blocco individuale e non può essere sbloccato. Il blocco è invece attivo a livello dell'intervallo $2, che può essere sbloccato.",
'ip_range_invalid' => 'Intervallo di indirizzi IP non valido.',
@@ -2448,6 +2522,7 @@ Ricordare di [[Special:UnlockDB|rimuovere il blocco]] dopo aver terminato le ope
'unlockdbsuccesstext' => 'Il database è stato sbloccato.',
'lockfilenotwritable' => "Impossibile scrivere sul file di ''lock'' del database. L'accesso in scrittura a tale file da parte del server web è necessario per bloccare e sbloccare il database.",
'databasenotlocked' => 'Il database non è bloccato.',
+'lockedbyandtime' => '(da $1 il $2 alle $3)',
# Move page
'move-page' => 'Spostamento di $1',
@@ -2559,7 +2634,7 @@ In quest'ultimo caso si può anche utilizzare un collegamento, ad esempio [[{{#S
'allmessagesdefault' => 'Testo predefinito',
'allmessagescurrent' => 'Testo attuale',
'allmessagestext' => 'Questa è la lista di tutti i messaggi di sistema disponibili nel namespace MediaWiki.
-Visitare [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] se si desidera contribuire alla localizzazione generica di MediaWiki.',
+Visitare [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] se si desidera contribuire alla localizzazione generica di MediaWiki.',
'allmessagesnotsupportedDB' => "Non è possibile utilizzare questa pagina perché il flag '''\$wgUseDatabaseMessages''' non è attivo.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtra per stato di modifica:',
@@ -2722,9 +2797,7 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
'vector.js' => '/* Il codice JavaScript inserito qui viene caricato dagli utenti che usano la skin Vector */',
# Metadata
-'nodublincore' => 'Metadati Dublin Core RDF non attivi su questo server.',
-'nocreativecommons' => 'Metadati Creative Commons RDF non attivi su questo server.',
-'notacceptable' => 'Il server wiki non è in grado di fornire i dati in un formato leggibile dal client.',
+'notacceptable' => 'Il server wiki non è in grado di fornire i dati in un formato leggibile dal client.',
# Attribution
'anonymous' => '{{PLURAL:$1|Utente anonimo|Utenti anonimi}} di {{SITENAME}}',
@@ -2747,31 +2820,17 @@ Tutte le operazioni di importazione trans-wiki sono registrate nel [[Special:Log
'spam_blanking' => 'Pagina svuotata, tutte le versioni contenevano collegamenti a $1',
# Info page
-'infosubtitle' => 'Informazioni per la pagina',
-'numedits' => 'Numero di modifiche (pagina): $1',
-'numtalkedits' => 'Numero di modifiche (pagina di discussione): $1',
-'numwatchers' => 'Numero di osservatori: $1',
-'numauthors' => 'Numero di autori distinti (pagina): $1',
-'numtalkauthors' => 'Numero di autori distinti (pagina di discussione): $1',
-
-# Math options
-'mw_math_png' => 'Mostra sempre in PNG',
-'mw_math_simple' => 'HTML se molto semplice, altrimenti PNG',
-'mw_math_html' => 'HTML se possibile, altrimenti PNG',
-'mw_math_source' => 'Lascia in formato TeX (per browser testuali)',
-'mw_math_modern' => 'Formato consigliato per i browser moderni',
-'mw_math_mathml' => 'Usa MathML se possibile (sperimentale)',
-
-# Math errors
-'math_failure' => 'Errore del parser',
-'math_unknown_error' => 'errore sconosciuto',
-'math_unknown_function' => 'funzione sconosciuta',
-'math_lexing_error' => 'errore lessicale',
-'math_syntax_error' => 'errore di sintassi',
-'math_image_error' => 'Conversione in PNG non riuscita; verificare che siano correttamente installati i seguenti programmi: latex e dvipng (o dvips, gs e convert).',
-'math_bad_tmpdir' => 'Impossibile scrivere o creare la directory temporanea per math',
-'math_bad_output' => 'Impossibile scrivere o creare la directory di output per math',
-'math_notexvc' => 'Eseguibile texvc mancante; per favore consultare math/README per la configurazione.',
+'pageinfo-title' => 'Informazioni per "$1"',
+'pageinfo-header-edits' => 'Edit',
+'pageinfo-header-watchlist' => 'Osservati speciali',
+'pageinfo-header-views' => 'Visualizzazioni',
+'pageinfo-subjectpage' => 'Pagina',
+'pageinfo-talkpage' => 'Pagina di discussione',
+'pageinfo-watchers' => 'Numero di utenti che hanno la pagina nei loro Osservati Speciali',
+'pageinfo-edits' => 'Numero di edit',
+'pageinfo-authors' => 'Numero di autori diversi',
+'pageinfo-views' => 'Numero di visualizzazioni',
+'pageinfo-viewsperedit' => 'Visualizzazioni per modifica',
# Patrolling
'markaspatrolleddiff' => 'Segna la modifica come verificata',
@@ -2808,21 +2867,24 @@ $1',
'nextdiff' => 'Differenza successiva →',
# Media information
-'mediawarning' => "'''Attenzione''': Questo file potrebbe contenere codice maligno. La sua esecuzione potrebbe danneggiare il tuo sistema.",
-'imagemaxsize' => "Dimensione massima delle immagini:<br />''(per le pagine di descrizione del file)''",
-'thumbsize' => 'Grandezza delle miniature:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagina|pagine}}',
-'file-info' => 'dimensione del file: $1, tipo MIME: $2',
-'file-info-size' => '$1 × $2 pixel, dimensione del file: $3, tipo MIME: $4',
-'file-nohires' => '<small>Non sono disponibili versioni a risoluzione più elevata.</small>',
-'svg-long-desc' => 'file in formato SVG, dimensioni nominali $1 × $2 pixel, dimensione del file: $3',
-'show-big-image' => 'Versione ad alta risoluzione',
-'show-big-image-thumb' => '<small>Dimensioni di questa anteprima: $1 × $2 pixel</small>',
-'file-info-gif-looped' => 'ciclico',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frame}}',
-'file-info-png-looped' => 'ciclico',
-'file-info-png-repeat' => 'ripetuto $1 {{PLURAL:$1|volta|volte}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|frame|frame}}',
+'mediawarning' => "'''Attenzione''': Questo file potrebbe contenere codice maligno. La sua esecuzione potrebbe danneggiare il tuo sistema.",
+'imagemaxsize' => "Dimensione massima delle immagini:<br />''(per le pagine di descrizione del file)''",
+'thumbsize' => 'Grandezza delle miniature:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagina|pagine}}',
+'file-info' => 'dimensione del file: $1, tipo MIME: $2',
+'file-info-size' => '$1 × $2 pixel, dimensione del file: $3, tipo MIME: $4',
+'file-info-size-pages' => '$1× $2 pixel, dimensione del file: $3, tipo MIME: $4, $5 {{PLURAL:$5|pagina|pagine}}',
+'file-nohires' => '<small>Non sono disponibili versioni a risoluzione più elevata.</small>',
+'svg-long-desc' => 'file in formato SVG, dimensioni nominali $1 × $2 pixel, dimensione del file: $3',
+'show-big-image' => 'Versione ad alta risoluzione',
+'show-big-image-preview' => '<small>Dimensioni di questa anteprima: $1.</small>',
+'show-big-image-other' => '<small>Altre risoluzioni: $1.</small>',
+'show-big-image-size' => '$1 × $2 pixel',
+'file-info-gif-looped' => 'ciclico',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frame}}',
+'file-info-png-looped' => 'ciclico',
+'file-info-png-repeat' => 'ripetuto $1 {{PLURAL:$1|volta|volte}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|frame|frame}}',
# Special:NewFiles
'newimages' => 'Galleria dei nuovi file',
@@ -2847,14 +2909,20 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'metadata-help' => 'Questo file contiene informazioni aggiuntive, probabilmente aggiunte dalla fotocamera o dallo scanner usati per crearlo o digitalizzarlo. Se il file è stato modificato, alcuni dettagli potrebbero non corrispondere alla realtà.',
'metadata-expand' => 'Mostra dettagli',
'metadata-collapse' => 'Nascondi dettagli',
-'metadata-fields' => "I campi relativi ai metadati EXIF elencati in questo messaggio verranno mostrati sulla pagina dell'immagine quando la tabella dei metadati è presentata nella forma breve. Per impostazione predefinita, gli altri campi verranno nascosti.
+'metadata-fields' => "I campi relativi ai metadati dell'immagine elencati in questo messaggio verranno mostrati sulla pagina dell'immagine quando la tabella dei metadati è presentata nella forma breve. Per impostazione predefinita, gli altri campi verranno nascosti.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Larghezza',
@@ -2869,13 +2937,11 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'exif-ycbcrpositioning' => 'Posizionamento componenti Y e C',
'exif-xresolution' => 'Risoluzione orizzontale',
'exif-yresolution' => 'Risoluzione verticale',
-'exif-resolutionunit' => 'Unità di misura risoluzione X e Y',
'exif-stripoffsets' => 'Posizione dei dati immagine',
'exif-rowsperstrip' => 'Numero righe per striscia',
'exif-stripbytecounts' => 'Numero di byte per striscia compressa',
'exif-jpeginterchangeformat' => 'Posizione byte SOI JPEG',
'exif-jpeginterchangeformatlength' => 'Numero di byte di dati JPEG',
-'exif-transferfunction' => 'Funzione di trasferimento',
'exif-whitepoint' => 'Coordinate cromatiche del punto di bianco',
'exif-primarychromaticities' => 'Coordinate cromatiche dei colori primari',
'exif-ycbcrcoefficients' => 'Coefficienti matrice di trasformazione spazi dei colori',
@@ -2894,7 +2960,6 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'exif-compressedbitsperpixel' => 'Modalità di compressione immagine',
'exif-pixelydimension' => 'Larghezza immagine',
'exif-pixelxdimension' => 'Altezza immagine',
-'exif-makernote' => 'Note del produttore',
'exif-usercomment' => "Note dell'utente",
'exif-relatedsoundfile' => 'File audio collegato',
'exif-datetimeoriginal' => 'Data e ora di creazione dei dati',
@@ -2908,7 +2973,6 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'exif-exposureprogram' => 'Programma di esposizione',
'exif-spectralsensitivity' => 'Sensibilità spettrale',
'exif-isospeedratings' => 'Sensibilità ISO',
-'exif-oecf' => 'Fattore di conversione optoelettronica',
'exif-shutterspeedvalue' => "Velocità dell'otturatore APEX",
'exif-aperturevalue' => 'Apertura APEX',
'exif-brightnessvalue' => 'Luminosità APEX',
@@ -2921,7 +2985,6 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'exif-focallength' => 'Distanza focale obiettivo',
'exif-subjectarea' => 'Area inquadrante il soggetto',
'exif-flashenergy' => 'Potenza del flash',
-'exif-spatialfrequencyresponse' => 'Risposta in frequenza spaziale',
'exif-focalplanexresolution' => 'Risoluzione X sul piano focale',
'exif-focalplaneyresolution' => 'Risoluzione Y sul piano focale',
'exif-focalplaneresolutionunit' => 'Unità di misura risoluzione sul piano focale',
@@ -2930,7 +2993,6 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'exif-sensingmethod' => 'Metodo di rilevazione',
'exif-filesource' => 'Origine del file',
'exif-scenetype' => 'Tipo di inquadratura',
-'exif-cfapattern' => 'Disposizione filtro colore',
'exif-customrendered' => 'Elaborazione personalizzata',
'exif-exposuremode' => 'Modalità di esposizione',
'exif-whitebalance' => 'Bilanciamento del bianco',
@@ -2975,10 +3037,79 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'exif-gpsareainformation' => 'Nome della zona GPS',
'exif-gpsdatestamp' => 'Data GPS',
'exif-gpsdifferential' => 'Correzione differenziale GPS',
+'exif-jpegfilecomment' => 'Commento del file JPEG',
+'exif-keywords' => 'Parole chiave',
+'exif-worldregioncreated' => "Regione del Mondo in cui l'immagine è stata scattata",
+'exif-countrycreated' => 'Paese dove è stata scattata la foto',
+'exif-countrycodecreated' => 'Codice del paese dove è stata scattata la foto',
+'exif-provinceorstatecreated' => 'Provincia o stato dove è stata scattata la foto',
+'exif-citycreated' => 'Città dove è stata scattata la foto',
+'exif-sublocationcreated' => 'Parte della città in cui la foto è stata scattata',
+'exif-worldregiondest' => 'Regione del Mondo visualizzata',
+'exif-countrydest' => 'Nazione visualizzata',
+'exif-countrycodedest' => 'Codice per il Paese indicato',
+'exif-provinceorstatedest' => 'Provincia o stato visualizzato',
+'exif-citydest' => 'Città mostrata',
+'exif-sublocationdest' => 'Parte della città visualizzata',
'exif-objectname' => 'Titolo breve',
+'exif-specialinstructions' => 'Istruzioni speciali',
+'exif-headline' => 'Titolo',
+'exif-credit' => 'Crediti',
+'exif-source' => 'Fonte',
+'exif-editstatus' => "Stato di edizione dell'immagine",
+'exif-urgency' => 'Urgenza',
+'exif-fixtureidentifier' => 'Nome del riferimento',
+'exif-locationdest' => 'Località raffigurata',
+'exif-locationdestcode' => 'Codice del luogo raffigurato',
+'exif-objectcycle' => 'Momento del giorno per il quale il medium è progettato',
+'exif-contact' => 'Informazioni di contatto',
+'exif-writer' => 'Scrittore',
+'exif-languagecode' => 'Lingua',
+'exif-iimversion' => 'Versione IIM',
+'exif-iimcategory' => 'Categoria',
+'exif-iimsupplementalcategory' => 'Categorie aggiuntive',
+'exif-datetimeexpires' => 'Non utilizzare dopo',
+'exif-datetimereleased' => 'Rilasciato il',
+'exif-originaltransmissionref' => 'Codice del luogo di trasmissione originaria',
+'exif-identifier' => 'Identificativo',
+'exif-lens' => 'Obiettivo utilizzato',
+'exif-serialnumber' => 'Numero di serie della fotocamera',
+'exif-cameraownername' => 'Proprietario della macchina fotografica',
+'exif-label' => 'Etichetta',
+'exif-datetimemetadata' => "Data in cui i metadata sono stati modificati l'ultima volta",
+'exif-nickname' => "Nome informale dell'immagine",
+'exif-rating' => 'Valutazione (su 5)',
+'exif-rightscertificate' => 'Certificato di gestione dei diritti',
+'exif-copyrighted' => 'Informazioni sul copyright',
+'exif-copyrightowner' => 'Detentore del copyright',
+'exif-usageterms' => 'Termini di utilizzo',
+'exif-webstatement' => 'Dichiarazione online di copyright',
+'exif-originaldocumentid' => 'ID univoco del documento originale',
+'exif-licenseurl' => 'URL per la licenza del copyright',
+'exif-morepermissionsurl' => 'Informazioni sulle licenze alternative',
+'exif-attributionurl' => "Per il riutilizzo di quest'opera, si prega di inserire un collegamento ipertestuale a",
+'exif-preferredattributionname' => "Per il riutilizzo di quest'opera, si prega di attribuirne la paternità a",
+'exif-pngfilecomment' => 'Commento del file PNG',
+'exif-disclaimer' => 'Avvertenze',
+'exif-contentwarning' => 'Avviso sul contenuto',
+'exif-giffilecomment' => 'Commento del file GIF',
+'exif-intellectualgenre' => 'Tipo di elemento',
+'exif-subjectnewscode' => "Codice dell'oggetto",
+'exif-scenecode' => 'Codice di scena IPTC',
+'exif-event' => 'Evento raffigurato',
+'exif-organisationinimage' => 'Organizzazione raffigurata',
+'exif-personinimage' => 'Persona raffigurata',
+'exif-originalimageheight' => "Altezza dell'immagine prima che fosse ritagliata",
+'exif-originalimagewidth' => "Larghezza dell'immagine prima che fosse ritagliata",
# EXIF attributes
'exif-compression-1' => 'Nessuno',
+'exif-compression-2' => 'CCITT gruppo 3 monodimensionale - codifica run length di Huffman modificata',
+'exif-compression-3' => 'Codifica fax CCITT Group 3',
+'exif-compression-4' => 'Codifica fax CCITT gruppo 4',
+
+'exif-copyrighted-true' => 'Protetto da copyright',
+'exif-copyrighted-false' => 'Pubblico dominio',
'exif-unknowndate' => 'Data sconosciuta',
@@ -2987,9 +3118,9 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'exif-orientation-3' => 'Ruotato di 180°',
'exif-orientation-4' => 'Capovolto verticalmente',
'exif-orientation-5' => 'Ruotato 90° in senso antiorario e capovolto verticalmente',
-'exif-orientation-6' => 'Ruotato di 90° CCW',
+'exif-orientation-6' => 'Ruotato di 90° in senso antiorario',
'exif-orientation-7' => 'Ruotato 90° in senso orario e capovolto verticalmente',
-'exif-orientation-8' => 'Ruotato di 90° CW',
+'exif-orientation-8' => 'Ruotato di 90° in senso orario',
'exif-planarconfiguration-1' => 'a blocchi (chunky)',
'exif-planarconfiguration-2' => 'lineare (planar)',
@@ -2997,7 +3128,7 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'exif-xyresolution-i' => '$1 punti per pollice (dpi)',
'exif-xyresolution-c' => '$1 punti per centimetro (dpc)',
-'exif-colorspace-ffff.h' => 'Non calibrato',
+'exif-colorspace-65535' => 'Non calibrato',
'exif-componentsconfiguration-0' => 'assente',
@@ -3116,6 +3247,10 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'exif-gpslongitude-e' => 'Longitudine est',
'exif-gpslongitude-w' => 'Longitudine ovest',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metro|metri}} sul livello del mare',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metro|metri}} sotto il livello del mare',
+
'exif-gpsstatus-a' => 'Misurazione in corso',
'exif-gpsstatus-v' => 'Misurazione interoperabile',
@@ -3127,21 +3262,73 @@ I collegamenti successivi, sulla stessa riga, sono considerati come eccezioni (o
'exif-gpsspeed-m' => 'Miglia orarie',
'exif-gpsspeed-n' => 'Nodi',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Chilometri',
+'exif-gpsdestdistance-m' => 'Miglia',
+'exif-gpsdestdistance-n' => 'Miglia nautiche',
+
+'exif-gpsdop-excellent' => 'Eccellente ($1)',
+'exif-gpsdop-good' => 'Buono ($1)',
+'exif-gpsdop-moderate' => 'Moderata ($1)',
+'exif-gpsdop-fair' => 'Discreto ($1)',
+'exif-gpsdop-poor' => 'Scarso ($1)',
+
+'exif-objectcycle-a' => 'Solo la mattina',
+'exif-objectcycle-p' => 'Solo la sera',
+'exif-objectcycle-b' => 'Mattina e sera',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Direzione reale',
'exif-gpsdirection-m' => 'Direzione magnetica',
+'exif-ycbcrpositioning-1' => 'Centrato',
+'exif-ycbcrpositioning-2' => 'Co-situato',
+
+'exif-dc-contributor' => 'Collaboratori',
+'exif-dc-coverage' => 'Ambito spaziale o temporale dei media',
+'exif-dc-date' => 'Data (e)',
+'exif-dc-publisher' => 'Editore',
+'exif-dc-relation' => 'File correlati',
+'exif-dc-rights' => 'Diritti',
+'exif-dc-source' => 'Fonte del file',
+'exif-dc-type' => 'Tipologia di file',
+
+'exif-rating-rejected' => 'Rifiutato',
+
+'exif-isospeedratings-overflow' => 'Maggiore di 65535',
+
+'exif-iimcategory-ace' => 'Arte, cultura e spettacolo',
+'exif-iimcategory-clj' => 'Criminalità e diritto',
+'exif-iimcategory-dis' => 'Disastri e incidenti',
+'exif-iimcategory-fin' => 'Economia e affari',
+'exif-iimcategory-edu' => 'Istruzione',
+'exif-iimcategory-evn' => 'Ambiente',
+'exif-iimcategory-hth' => 'Salute',
+'exif-iimcategory-hum' => 'Interesse umano',
+'exif-iimcategory-lab' => 'Lavoro',
+'exif-iimcategory-lif' => 'Stile di vita e tempo libero',
+'exif-iimcategory-pol' => 'Politica',
+'exif-iimcategory-rel' => 'Religione e fede',
+'exif-iimcategory-sci' => 'Scienza e tecnologia',
+'exif-iimcategory-soi' => 'Questioni sociali',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Guerra, conflitti e disordini',
+'exif-iimcategory-wea' => 'Meteo',
+
+'exif-urgency-normal' => 'Normale ($1)',
+'exif-urgency-low' => 'Bassa ($1)',
+'exif-urgency-high' => 'Alta ($1)',
+'exif-urgency-other' => "Priorità definite dal'utente ($1)",
+
# External editor support
'edit-externally' => 'Modifica questo file usando un programma esterno',
-'edit-externally-help' => '(Per maggiori informazioni consultare le [http://www.mediawiki.org/wiki/Manual:External_editors istruzioni])',
+'edit-externally-help' => '(Per maggiori informazioni consultare le [//www.mediawiki.org/wiki/Manual:External_editors istruzioni])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tutte',
-'imagelistall' => 'tutte',
-'watchlistall2' => 'tutte',
-'namespacesall' => 'Tutti',
-'monthsall' => 'tutti',
-'limitall' => 'tutti',
+'watchlistall2' => 'tutte',
+'namespacesall' => 'Tutti',
+'monthsall' => 'tutti',
+'limitall' => 'tutti',
# E-mail address confirmation
'confirmemail' => 'Conferma indirizzo e-mail',
@@ -3220,16 +3407,24 @@ $1',
'trackbackdeleteok' => 'Informazioni di trackback eliminate correttamente.',
# Delete conflict
-'deletedwhileediting' => "'''Attenzione''': questa pagina è stata cancellata dopo che hai cominciato a modificarla!",
-'confirmrecreate' => "L'utente [[User:$1|$1]] ([[User talk:$1|discussioni]]) ha cancellato questa pagina dopo che hai iniziato a modificarla, per il seguente motivo: ''$2''
+'deletedwhileediting' => "'''Attenzione''': questa pagina è stata cancellata dopo che hai cominciato a modificarla!",
+'confirmrecreate' => "L'utente [[User:$1|$1]] ([[User talk:$1|discussioni]]) ha cancellato questa pagina dopo che hai iniziato a modificarla, per il seguente motivo: ''$2''
+Per favore, conferma che desideri veramente ricreare questa pagina.",
+'confirmrecreate-noreason' => "L'utente [[User:$1|$1]] ([[User talk:$1|discussioni]]) ha cancellato questa pagina dopo che hai iniziato a modificarla.
Per favore, conferma che desideri veramente ricreare questa pagina.",
-'recreate' => 'Ricrea',
+'recreate' => 'Ricrea',
# action=purge
'confirm_purge_button' => 'Conferma',
'confirm-purge-top' => 'Vuoi pulire la cache di questa pagina?',
'confirm-purge-bottom' => 'Ripulire la cache di una pagina consente di mostrare la sua versione più aggiornata.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Aggiungi questa pagina alla tua lista degli osservati speciali?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Elimina questa pagina dalla tua lista degli osservati speciali?',
+
# Multipage image navigation
'imgmultipageprev' => '↠pagina precedente',
'imgmultipagenext' => 'pagina seguente →',
@@ -3276,14 +3471,14 @@ Usare l\'anteprima standard.',
'watchlistedit-normal-legend' => 'Eliminazione di pagine dagli osservati speciali',
'watchlistedit-normal-explain' => 'Di seguito sono elencate tutte le pagine osservate.
Per rimuovere una o più pagine dalla lista, selezionare le caselle relative e fare clic sul pulsante "{{int:Watchlistedit-normal-submit}}" in fondo all\'elenco.
-Si noti che è anche possibile [[Special:Watchlist/raw|modificare la lista in formato testuale]].',
+Si noti che è anche possibile [[Special:EditWatchlist/raw|modificare la lista in formato testuale]].',
'watchlistedit-normal-submit' => 'Elimina pagine',
'watchlistedit-normal-done' => 'Dalla lista degli osservati speciali {{PLURAL:$1|è stata eliminata una pagina|sono state eliminate $1 pagine}}:',
'watchlistedit-raw-title' => 'Modifica degli osservati speciali in forma testuale',
'watchlistedit-raw-legend' => 'Modifica testuale osservati speciali',
'watchlistedit-raw-explain' => 'Di seguito sono elencate tutte le pagine osservate. Per modificare la lista aggiungere o rimuovere i rispettivi titoli, uno per riga.
Una volta terminato, fare clic su "{{int:Watchlistedit-raw-submit}}" in fondo all\'elenco.
-Si noti che è anche possibile [[Special:Watchlist/edit|modificare la lista con l\'interfaccia standard]].',
+Si noti che è anche possibile [[Special:EditWatchlist|modificare la lista con l\'interfaccia standard]].',
'watchlistedit-raw-titles' => 'Titoli delle pagine:',
'watchlistedit-raw-submit' => 'Aggiorna la lista',
'watchlistedit-raw-done' => 'La lista degli osservati speciali è stata aggiornata.',
@@ -3304,33 +3499,33 @@ Si noti che è anche possibile [[Special:Watchlist/edit|modificare la lista con
'duplicate-defaultsort' => 'Attenzione: la chiave di ordinamento predefinita "$2" sostituisce la precedente "$1".',
# Special:Version
-'version' => 'Versione',
-'version-extensions' => 'Estensioni installate',
-'version-specialpages' => 'Pagine speciali',
-'version-parserhooks' => 'Hook del parser',
-'version-variables' => 'Variabili',
-'version-skins' => 'Skin',
-'version-other' => 'Altro',
-'version-mediahandlers' => 'Gestori di contenuti multimediali',
-'version-hooks' => 'Hook',
-'version-extension-functions' => 'Funzioni introdotte da estensioni',
-'version-parser-extensiontags' => 'Tag riconosciuti dal parser introdotti da estensioni',
-'version-parser-function-hooks' => 'Hook per funzioni del parser',
-'version-skin-extension-functions' => "Funzioni legate all'aspetto grafico (skin) introdotte da estensioni",
-'version-hook-name' => "Nome dell'hook",
-'version-hook-subscribedby' => 'Sottoscrizioni',
-'version-version' => '(Versione $1)',
-'version-license' => 'Licenza',
-'version-poweredby-credits' => "Questo wiki è alimentato da '''[http://www.mediawiki.org/ MediaWiki ]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'altri',
-'version-license-info' => 'MediaWiki è software libero; è lecito redistribuirlo e/o modificarlo secondo i termini della GNU General Public License, come pubblicata dalla Free Software Foundation; o la versione 2 della Licenza o (a propria scelta) qualunque versione successiva.
+'version' => 'Versione',
+'version-extensions' => 'Estensioni installate',
+'version-specialpages' => 'Pagine speciali',
+'version-parserhooks' => 'Hook del parser',
+'version-variables' => 'Variabili',
+'version-antispam' => 'Prevenzione dello spam',
+'version-skins' => 'Skin',
+'version-other' => 'Altro',
+'version-mediahandlers' => 'Gestori di contenuti multimediali',
+'version-hooks' => 'Hook',
+'version-extension-functions' => 'Funzioni introdotte da estensioni',
+'version-parser-extensiontags' => 'Tag riconosciuti dal parser introdotti da estensioni',
+'version-parser-function-hooks' => 'Hook per funzioni del parser',
+'version-hook-name' => "Nome dell'hook",
+'version-hook-subscribedby' => 'Sottoscrizioni',
+'version-version' => '(Versione $1)',
+'version-license' => 'Licenza',
+'version-poweredby-credits' => "Questo wiki è alimentato da '''[//www.mediawiki.org/ MediaWiki ]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'altri',
+'version-license-info' => 'MediaWiki è software libero; è lecito redistribuirlo e/o modificarlo secondo i termini della GNU General Public License, come pubblicata dalla Free Software Foundation; o la versione 2 della Licenza o (a propria scelta) qualunque versione successiva.
MediaWiki è distribuito nella speranza che sia utile, ma SENZA ALCUNA GARANZIA; senza neppure la garanzia implicita di NEGOZIABILITÀ o di APPLICABILITÀ PER UN PARTICOLARE SCOPO. Si veda la GNU General Public License per maggiori dettagli.
-Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia di una copia della GNU General Public License]; in caso contrario, in caso contrario, se ne può ottenere una scrivendo alla Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oppure [http://www.softwarelibero.it/gnudoc/gpl.it.txt leggerla in rete].',
-'version-software' => 'Software installato',
-'version-software-product' => 'Prodotto',
-'version-software-version' => 'Versione',
+Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/COPYING una copia di una copia della GNU General Public License]; in caso contrario, in caso contrario, se ne può ottenere una scrivendo alla Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oppure [//www.softwarelibero.it/gnudoc/gpl.it.txt leggerla in rete].',
+'version-software' => 'Software installato',
+'version-software-product' => 'Prodotto',
+'version-software-version' => 'Versione',
# Special:FilePath
'filepath' => 'Percorso di un file',
@@ -3340,22 +3535,22 @@ Questo programma deve essere distribuito assieme ad [{{SERVER}}{{SCRIPTPATH}}/CO
Le immagini vengono mostrate alla massima risoluzione disponibile, per gli altri tipi di file viene avviato direttamente il programma associato.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Ricerca dei file duplicati',
-'fileduplicatesearch-summary' => "Ricerca di eventuali duplicati del file in base al valore di ''hash''.
-
-Inserire il nome del file senza il prefisso \"{{ns:file}}:\"",
-'fileduplicatesearch-legend' => 'Ricerca di un duplicato',
-'fileduplicatesearch-filename' => 'Nome del file:',
-'fileduplicatesearch-submit' => 'Ricerca',
-'fileduplicatesearch-info' => '$1 × $2 pixel<br />Dimensione del file: $3<br />Tipo MIME: $4',
-'fileduplicatesearch-result-1' => 'Non esistono duplicati identici al file "$1".',
-'fileduplicatesearch-result-n' => '{{PLURAL:$2|Esiste un duplicato identico|Esistono $2 duplicati identici}} al file "$1".',
+'fileduplicatesearch' => 'Ricerca dei file duplicati',
+'fileduplicatesearch-summary' => "Ricerca di eventuali duplicati del file in base al valore di ''hash''.",
+'fileduplicatesearch-legend' => 'Ricerca di un duplicato',
+'fileduplicatesearch-filename' => 'Nome del file:',
+'fileduplicatesearch-submit' => 'Ricerca',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />Dimensione del file: $3<br />Tipo MIME: $4',
+'fileduplicatesearch-result-1' => 'Non esistono duplicati identici al file "$1".',
+'fileduplicatesearch-result-n' => '{{PLURAL:$2|Esiste un duplicato identico|Esistono $2 duplicati identici}} al file "$1".',
+'fileduplicatesearch-noresults' => 'Nessun file di nome "$1" trovato.',
# Special:SpecialPages
'specialpages' => 'Pagine speciali',
'specialpages-note' => '----
* Pagine speciali non riservate.
-* <strong class="mw-specialpagerestricted">Pagine speciali riservate ad alcune categorie di utenti.</strong>',
+* <span class="mw-specialpagerestricted">Pagine speciali riservate ad alcune categorie di utenti.</span>
+* <span class="mw-specialpagecached">Pagine speciali disponibili in versione cache (potrebbero essere obsolete).</span>',
'specialpages-group-maintenance' => 'Resoconti di manutenzione',
'specialpages-group-other' => 'Altre pagine speciali',
'specialpages-group-login' => 'Login / registrazione',
diff --git a/languages/messages/MessagesJa.php b/languages/messages/MessagesJa.php
index 05af95ac..8830f552 100644
--- a/languages/messages/MessagesJa.php
+++ b/languages/messages/MessagesJa.php
@@ -12,6 +12,7 @@
* @author Aotake
* @author Aphaia
* @author Broad-Sky
+ * @author Chatama
* @author Chinneeb
* @author Emk
* @author Fievarsty
@@ -35,6 +36,7 @@
* @author Mzm5zbC3
* @author Ohgi
* @author Penn Station
+ * @author Reedy
* @author Schu
* @author Suisui
* @author VZP10224
@@ -99,97 +101,100 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( '二é‡ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ' ),
+ 'Activeusers' => array( '活動中ã®åˆ©ç”¨è€…', '活動中ã®åˆ©ç”¨è€…一覧' ),
+ 'Allmessages' => array( 'メッセージ一覧', 'システムメッセージã®ä¸€è¦§', '表示メッセージã®ä¸€è¦§' ),
+ 'Allpages' => array( 'ページ一覧', '全ページ' ),
+ 'Ancientpages' => array( 'æ›´æ–°ã•ã‚Œã¦ã„ãªã„ページ' ),
+ 'Blankpage' => array( '白紙ページ' ),
+ 'Block' => array( '投稿ブロック', 'ブロック' ),
+ 'Blockme' => array( '自己ブロック' ),
+ 'Booksources' => array( '文献資料' ),
'BrokenRedirects' => array( 'è¿·å­ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ', '壊れãŸãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ' ),
- 'Disambiguations' => array( '曖昧ã•å›žé¿ã®ãƒšãƒ¼ã‚¸', '曖昧ã•å›žé¿' ),
- 'Userlogin' => array( 'ログイン' ),
- 'Userlogout' => array( 'ログアウト' ),
+ 'Categories' => array( 'カテゴリ', 'カテゴリ一覧' ),
+ 'ChangePassword' => array( 'パスワードã®å¤‰æ›´', 'パスワード変更', 'パスワードå†ç™ºè¡Œ', 'パスワードã®å†ç™ºè¡Œ' ),
+ 'ComparePages' => array( 'ページã®æ¯”較' ),
+ 'Confirmemail' => array( 'メールアドレスã®ç¢ºèª' ),
+ 'Contributions' => array( '投稿記録' ),
'CreateAccount' => array( 'アカウント作æˆ', 'アカウントã®ä½œæˆ' ),
- 'Preferences' => array( '個人設定', 'オプション' ),
- 'Watchlist' => array( 'ウォッãƒãƒªã‚¹ãƒˆ' ),
- 'Recentchanges' => array( '最近ã®æ›´æ–°', '最近更新ã—ãŸãƒšãƒ¼ã‚¸' ),
- 'Upload' => array( 'アップロード' ),
+ 'Deadendpages' => array( '有効ãªãƒšãƒ¼ã‚¸ã¸ã®ãƒªãƒ³ã‚¯ãŒãªã„ページ', 'è¡Œãæ­¢ã¾ã‚Šãƒšãƒ¼ã‚¸' ),
+ 'DeletedContributions' => array( '削除ã•ã‚ŒãŸæŠ•ç¨¿è¨˜éŒ²', '削除ã•ã‚ŒãŸæŠ•ç¨¿å±¥æ­´', '削除歴' ),
+ 'Disambiguations' => array( '曖昧ã•å›žé¿ã®ãƒšãƒ¼ã‚¸', '曖昧ã•å›žé¿' ),
+ 'DoubleRedirects' => array( '二é‡ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ' ),
+ 'Emailuser' => array( 'メールé€ä¿¡', 'ウィキメール' ),
+ 'Export' => array( 'データ書ã出ã—', 'データー書ã出ã—', 'エクスãƒãƒ¼ãƒˆ' ),
+ 'Fewestrevisions' => array( '編集履歴ã®å°‘ãªã„ページ', '版ã®å°‘ãªã„é …ç›®', '版ã®å°‘ãªã„ページ' ),
+ 'FileDuplicateSearch' => array( 'é‡è¤‡ãƒ•ã‚¡ã‚¤ãƒ«æ¤œç´¢' ),
+ 'Filepath' => array( 'パスã®å–å¾—' ),
+ 'Import' => array( 'データå–ã‚Šè¾¼ã¿', 'データーå–ã‚Šè¾¼ã¿', 'インãƒãƒ¼ãƒˆ' ),
+ 'Invalidateemail' => array( 'メール無効化', 'メール無効' ),
+ 'BlockList' => array( 'ブロック一覧', 'ブロックã®ä¸€è¦§' ),
+ 'LinkSearch' => array( '外部リンク検索' ),
+ 'Listadmins' => array( '管ç†è€…一覧' ),
+ 'Listbots' => array( 'ボット一覧', 'Bot一覧' ),
'Listfiles' => array( 'ファイル一覧', 'ファイルリスト' ),
- 'Newimages' => array( 'æ–°ç€ãƒ•ã‚¡ã‚¤ãƒ«', 'æ–°ã—ã„ファイルã®ä¸€è¦§', 'æ–°ç€ç”»åƒå±•ç¤ºå®¤' ),
- 'Listusers' => array( '登録利用者一覧', '登録利用者ã®ä¸€è¦§' ),
'Listgrouprights' => array( '利用者グループ権é™', '利用者グループã®æ¨©é™ä¸€è¦§', '利用者権é™ä¸€è¦§' ),
- 'Statistics' => array( '統計' ),
- 'Randompage' => array( 'ãŠã¾ã‹ã›è¡¨ç¤º' ),
+ 'Listredirects' => array( 'リダイレクト一覧', 'リダイレクトã®ä¸€è¦§', 'リダイレクトリスト' ),
+ 'Listusers' => array( '登録利用者一覧', '登録利用者ã®ä¸€è¦§' ),
+ 'Lockdb' => array( 'データベースロック' ),
+ 'Log' => array( 'ログ', '記録' ),
'Lonelypages' => array( '孤立ã—ã¦ã„るページ' ),
- 'Uncategorizedpages' => array( 'カテゴリ未導入ã®ãƒšãƒ¼ã‚¸' ),
- 'Uncategorizedcategories' => array( 'カテゴリ未導入ã®ã‚«ãƒ†ã‚´ãƒª' ),
- 'Uncategorizedimages' => array( 'カテゴリ未導入ã®ãƒ•ã‚¡ã‚¤ãƒ«' ),
- 'Uncategorizedtemplates' => array( 'カテゴリ未導入ã®ãƒ†ãƒ³ãƒ—レート' ),
- 'Unusedcategories' => array( '使ã‚ã‚Œã¦ã„ãªã„カテゴリ', '未使用カテゴリ' ),
- 'Unusedimages' => array( '使ã‚ã‚Œã¦ã„ãªã„ファイル', '未使用ファイル', '未使用画åƒ' ),
- 'Wantedpages' => array( '存在ã—ãªã„ページã¸ã®ãƒªãƒ³ã‚¯', '赤リンク' ),
- 'Wantedcategories' => array( '存在ã—ãªã„カテゴリã¸ã®ãƒªãƒ³ã‚¯', '赤リンクカテゴリ' ),
- 'Wantedfiles' => array( 'ファイルページãŒå­˜åœ¨ã—ãªã„ファイル', '赤リンクファイル' ),
- 'Wantedtemplates' => array( '存在ã—ãªã„テンプレートã¸ã®ãƒªãƒ³ã‚¯', '赤リンクテンプレート' ),
+ 'Longpages' => array( 'é•·ã„ページ' ),
+ 'MergeHistory' => array( '履歴統åˆ' ),
+ 'MIMEsearch' => array( 'MIME検索', 'MIMEタイプ検索' ),
+ 'Mostcategories' => array( 'カテゴリã®å¤šã„ページ', 'カテゴリã®å¤šã„é …ç›®' ),
+ 'Mostimages' => array( '被リンクã®å¤šã„ファイル', '使用箇所ã®å¤šã„ファイル' ),
'Mostlinked' => array( '被リンクã®å¤šã„ページ' ),
'Mostlinkedcategories' => array( '被リンクã®å¤šã„カテゴリ' ),
'Mostlinkedtemplates' => array( '使用箇所ã®å¤šã„テンプレート', '被リンクã®å¤šã„テンプレート' ),
- 'Mostimages' => array( '被リンクã®å¤šã„ファイル', '使用箇所ã®å¤šã„ファイル' ),
- 'Mostcategories' => array( 'カテゴリã®å¤šã„ページ', 'カテゴリã®å¤šã„é …ç›®' ),
'Mostrevisions' => array( '編集履歴ã®å¤šã„ページ', '版ã®å¤šã„é …ç›®', '版ã®å¤šã„ページ' ),
- 'Fewestrevisions' => array( '編集履歴ã®å°‘ãªã„ページ', '版ã®å°‘ãªã„é …ç›®', '版ã®å°‘ãªã„ページ' ),
- 'Shortpages' => array( '短ã„ページ' ),
- 'Longpages' => array( 'é•·ã„ページ' ),
+ 'Movepage' => array( '移動', 'ページã®ç§»å‹•' ),
+ 'Mycontributions' => array( '自分ã®æŠ•ç¨¿è¨˜éŒ²' ),
+ 'Mypage' => array( '利用者ページ', 'マイページ', 'マイ・ページ' ),
+ 'Mytalk' => array( 'トークページ', '会話ページ', 'マイトーク', 'マイ・トーク' ),
+ 'Myuploads' => array( '自分ã®ã‚¢ãƒƒãƒ—ロード記録' ),
+ 'Newimages' => array( 'æ–°ç€ãƒ•ã‚¡ã‚¤ãƒ«', 'æ–°ã—ã„ファイルã®ä¸€è¦§', 'æ–°ç€ç”»åƒå±•ç¤ºå®¤' ),
'Newpages' => array( 'æ–°ã—ã„ページ', 'æ–°è¦é …ç›®' ),
- 'Ancientpages' => array( 'æ›´æ–°ã•ã‚Œã¦ã„ãªã„ページ' ),
- 'Deadendpages' => array( '有効ãªãƒšãƒ¼ã‚¸ã¸ã®ãƒªãƒ³ã‚¯ãŒãªã„ページ', 'è¡Œãæ­¢ã¾ã‚Šãƒšãƒ¼ã‚¸' ),
+ 'PasswordReset' => array( 'パスワードå†è¨­å®š', 'パスワードã®å†è¨­å®š', 'パスワードã®ãƒªã‚»ãƒƒãƒˆ', 'パスワードリセット' ),
+ 'PermanentLink' => array( '固定リンク' ),
+ 'Popularpages' => array( '人気ページ' ),
+ 'Preferences' => array( '個人設定', 'オプション' ),
+ 'Prefixindex' => array( 'å‰æ–¹ä¸€è‡´ãƒšãƒ¼ã‚¸ä¸€è¦§', '始点指定ページ一覧' ),
'Protectedpages' => array( 'ä¿è­·ã•ã‚Œã¦ã„るページ' ),
'Protectedtitles' => array( '作æˆä¿è­·ã•ã‚Œã¦ã„るページå' ),
- 'Allpages' => array( 'ページ一覧', '全ページ' ),
- 'Prefixindex' => array( 'å‰æ–¹ä¸€è‡´ãƒšãƒ¼ã‚¸ä¸€è¦§', '始点指定ページ一覧' ),
- 'Ipblocklist' => array( 'ブロック一覧', 'ブロックã®ä¸€è¦§' ),
- 'Unblock' => array( 'ブロック解除' ),
- 'Specialpages' => array( '特別ページ一覧' ),
- 'Contributions' => array( '投稿記録' ),
- 'Emailuser' => array( 'メールé€ä¿¡', 'ウィキメール' ),
- 'Confirmemail' => array( 'メールアドレスã®ç¢ºèª' ),
- 'Whatlinkshere' => array( 'リンク元' ),
+ 'Randompage' => array( 'ãŠã¾ã‹ã›è¡¨ç¤º' ),
+ 'Randomredirect' => array( 'ãŠã¾ã‹ã›ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ', 'ãŠã¾ã‹ã›è»¢é€' ),
+ 'Recentchanges' => array( '最近ã®æ›´æ–°', '最近更新ã—ãŸãƒšãƒ¼ã‚¸' ),
'Recentchangeslinked' => array( '関連ページã®æ›´æ–°çŠ¶æ³', 'リンク先ã®æ›´æ–°çŠ¶æ³' ),
- 'Movepage' => array( '移動', 'ページã®ç§»å‹•' ),
- 'Blockme' => array( '自己ブロック' ),
- 'Booksources' => array( '文献資料' ),
- 'Categories' => array( 'カテゴリ', 'カテゴリ一覧' ),
- 'Export' => array( 'データ書ã出ã—', 'データー書ã出ã—', 'エクスãƒãƒ¼ãƒˆ' ),
- 'Version' => array( 'ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±', 'ãƒãƒ¼ã‚¸ãƒ§ãƒ³' ),
- 'Allmessages' => array( 'メッセージ一覧', 'システムメッセージã®ä¸€è¦§', '表示メッセージã®ä¸€è¦§' ),
- 'Log' => array( '記録', 'ログ' ),
- 'Blockip' => array( '投稿ブロック', 'ブロック' ),
+ 'Revisiondelete' => array( '版指定削除', '特定版削除' ),
+ 'RevisionMove' => array( '版移動' ),
+ 'Search' => array( '検索' ),
+ 'Shortpages' => array( '短ã„ページ' ),
+ 'Specialpages' => array( '特別ページ一覧' ),
+ 'Statistics' => array( '統計' ),
+ 'Tags' => array( 'タグ一覧' ),
+ 'Unblock' => array( 'ブロック解除' ),
+ 'Uncategorizedcategories' => array( 'カテゴリ未導入ã®ã‚«ãƒ†ã‚´ãƒª' ),
+ 'Uncategorizedimages' => array( 'カテゴリ未導入ã®ãƒ•ã‚¡ã‚¤ãƒ«' ),
+ 'Uncategorizedpages' => array( 'カテゴリ未導入ã®ãƒšãƒ¼ã‚¸' ),
+ 'Uncategorizedtemplates' => array( 'カテゴリ未導入ã®ãƒ†ãƒ³ãƒ—レート' ),
'Undelete' => array( '復帰' ),
- 'Import' => array( 'データå–ã‚Šè¾¼ã¿', 'データーå–ã‚Šè¾¼ã¿', 'インãƒãƒ¼ãƒˆ' ),
- 'Lockdb' => array( 'データベースロック' ),
'Unlockdb' => array( 'データベースロック解除', 'データベース解除' ),
- 'Userrights' => array( '利用者権é™', '利用者権é™ã®å¤‰æ›´' ),
- 'MIMEsearch' => array( 'MIME検索', 'MIMEタイプ検索' ),
- 'FileDuplicateSearch' => array( 'é‡è¤‡ãƒ•ã‚¡ã‚¤ãƒ«æ¤œç´¢' ),
- 'Unwatchedpages' => array( 'ウォッãƒã•ã‚Œã¦ã„ãªã„ページ' ),
- 'Listredirects' => array( 'リダイレクト一覧', 'リダイレクトã®ä¸€è¦§', 'リダイレクトリスト' ),
- 'Revisiondelete' => array( '版指定削除', '特定版削除' ),
+ 'Unusedcategories' => array( '使ã‚ã‚Œã¦ã„ãªã„カテゴリ', '未使用カテゴリ' ),
+ 'Unusedimages' => array( '使ã‚ã‚Œã¦ã„ãªã„ファイル', '未使用ファイル', '未使用画åƒ' ),
'Unusedtemplates' => array( '使ã‚ã‚Œã¦ã„ãªã„テンプレート', '未使用テンプレート' ),
- 'Randomredirect' => array( 'ãŠã¾ã‹ã›è»¢é€', 'ãŠã¾ã‹ã›ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ' ),
- 'Mypage' => array( '利用者ページ', 'マイページ', 'マイ・ページ' ),
- 'Mytalk' => array( 'トークページ', '会話ページ', 'マイトーク', 'マイ・トーク' ),
- 'Mycontributions' => array( '自分ã®æŠ•ç¨¿è¨˜éŒ²' ),
- 'Listadmins' => array( '管ç†è€…一覧' ),
- 'Listbots' => array( 'ボット一覧', 'Bot一覧' ),
- 'Popularpages' => array( '人気ページ' ),
- 'Search' => array( '検索' ),
- 'Resetpass' => array( 'パスワードã®å¤‰æ›´', 'パスワード変更', 'パスワードå†ç™ºè¡Œ', 'パスワードã®å†ç™ºè¡Œ' ),
+ 'Unwatchedpages' => array( 'ウォッãƒã•ã‚Œã¦ã„ãªã„ページ' ),
+ 'Upload' => array( 'アップロード' ),
+ 'Userlogin' => array( 'ログイン' ),
+ 'Userlogout' => array( 'ログアウト' ),
+ 'Userrights' => array( '利用者権é™', '利用者権é™ã®å¤‰æ›´' ),
+ 'Version' => array( 'ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±', 'ãƒãƒ¼ã‚¸ãƒ§ãƒ³' ),
+ 'Wantedcategories' => array( '存在ã—ãªã„カテゴリã¸ã®ãƒªãƒ³ã‚¯', '赤リンクカテゴリ' ),
+ 'Wantedfiles' => array( 'ファイルページãŒå­˜åœ¨ã—ãªã„ファイル', '赤リンクファイル' ),
+ 'Wantedpages' => array( '存在ã—ãªã„ページã¸ã®ãƒªãƒ³ã‚¯', '赤リンク' ),
+ 'Wantedtemplates' => array( '存在ã—ãªã„テンプレートã¸ã®ãƒªãƒ³ã‚¯', '赤リンクテンプレート' ),
+ 'Watchlist' => array( 'ウォッãƒãƒªã‚¹ãƒˆ' ),
+ 'Whatlinkshere' => array( 'リンク元' ),
'Withoutinterwiki' => array( '言語間リンクをæŒãŸãªã„ページ', '言語間リンクã®ãªã„ページ' ),
- 'MergeHistory' => array( '履歴統åˆ' ),
- 'Filepath' => array( 'パスã®å–å¾—' ),
- 'Invalidateemail' => array( 'メール無効化', 'メール無効' ),
- 'Blankpage' => array( '白紙ページ' ),
- 'LinkSearch' => array( '外部リンク検索' ),
- 'DeletedContributions' => array( '削除ã•ã‚ŒãŸæŠ•ç¨¿è¨˜éŒ²', '削除ã•ã‚ŒãŸæŠ•ç¨¿å±¥æ­´', '削除歴' ),
- 'Tags' => array( 'タグ一覧' ),
- 'Activeusers' => array( '活動中ã®åˆ©ç”¨è€…', '活動中ã®åˆ©ç”¨è€…一覧' ),
- 'ComparePages' => array( 'ページã®æ¯”較' ),
- 'Badtitle' => array( 'ä¸æ­£ãªãƒšãƒ¼ã‚¸å' ),
);
$magicWords = array(
@@ -375,8 +380,8 @@ $messages = array(
'tog-shownumberswatching' => 'ページをウォッãƒã—ã¦ã„る利用者数を表示ã™ã‚‹',
'tog-oldsig' => '既存ã®ç½²å:',
'tog-fancysig' => 'ç½²åをウィキ文ã¨ã—ã¦æ‰±ã†ï¼ˆè‡ªå‹•ã§ãƒªãƒ³ã‚¯ã—ãªã„)',
-'tog-externaleditor' => '既定ã§ç·¨é›†ã«å¤–部アプリケーションを使ã†ï¼ˆä¸Šç´šè€…å‘ã‘ã€ã‚³ãƒ³ãƒ”ューターã«ç‰¹æ®Šãªè¨­å®šãŒå¿…è¦ã€‚[http://www.mediawiki.org/wiki/Manual:External_editors 詳細])',
-'tog-externaldiff' => '差分表示ã«å¤–部アプリケーションを使ã†ï¼ˆä¸Šç´šè€…å‘ã‘ã€ã‚³ãƒ³ãƒ”ューターã«ç‰¹æ®Šãªè¨­å®šãŒå¿…è¦ã€‚[http://www.mediawiki.org/wiki/Manual:External_editors 詳細])',
+'tog-externaleditor' => '既定ã§ç·¨é›†ã«å¤–部アプリケーションを使ã†ï¼ˆä¸Šç´šè€…å‘ã‘ã€ã‚³ãƒ³ãƒ”ューターã«ç‰¹æ®Šãªè¨­å®šãŒå¿…è¦ã€‚[//www.mediawiki.org/wiki/Manual:External_editors 詳細])',
+'tog-externaldiff' => '差分表示ã«å¤–部アプリケーションを使ã†ï¼ˆä¸Šç´šè€…å‘ã‘ã€ã‚³ãƒ³ãƒ”ューターã«ç‰¹æ®Šãªè¨­å®šãŒå¿…è¦ã€‚[//www.mediawiki.org/wiki/Manual:External_editors 詳細])',
'tog-showjumplinks' => '利用ã—ã‚„ã™ã•å‘上ã®ãŸã‚ã®ã€Œ{{int:jumpto}}ã€ãƒªãƒ³ã‚¯ã‚’有効ã«ã™ã‚‹',
'tog-uselivepreview' => 'ライブプレビューを使用ã™ã‚‹ï¼ˆJavaScriptãŒå¿…è¦ï¼‰ï¼ˆè©¦é¨“中ã®æ©Ÿèƒ½ï¼‰',
'tog-forceeditsummary' => 'è¦ç´„欄ãŒç©ºæ¬„ã®å ´åˆã«è­¦å‘Šã™ã‚‹',
@@ -473,14 +478,7 @@ $messages = array(
'listingcontinuesabbrev' => 'ã®ç¶šã',
'index-category' => '検索エンジンã«åŽé›†ã•ã‚Œã‚‹ãƒšãƒ¼ã‚¸',
'noindex-category' => '検索エンジンã«åŽé›†ã•ã‚Œãªã„ページ',
-
-'mainpagetext' => "'''MediaWikiãŒæ­£å¸¸ã«ã‚¤ãƒ³ã‚¹ãƒˆãƒ¼ãƒ«ã•ã‚Œã¾ã—ãŸã€‚'''",
-'mainpagedocfooter' => 'ウィキソフトウェアã®ä½¿ã„æ–¹ã«é–¢ã™ã‚‹æƒ…å ±ã¯[http://meta.wikimedia.org/wiki/Help:Contents 利用者案内]ã‚’å‚ç…§ã—ã¦ãã ã•ã„。
-
-== ã¯ã˜ã‚ã¾ã—ょㆠ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings/ja 設定ã®ä¸€è¦§]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/ja MediaWiki よãã‚る質å•ã¨å›žç­”]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWikiリリース情報メーリングリスト]',
+'broken-file-category' => '壊れãŸãƒ•ã‚¡ã‚¤ãƒ«ã¸ã®ãƒªãƒ³ã‚¯ãŒã‚るページ',
'about' => '解説',
'article' => '本文',
@@ -532,10 +530,10 @@ $messages = array(
'history' => 'ページã®å±¥æ­´',
'history_short' => '履歴',
'updatedmarker' => '最後ã®è¨ªå•ã‹ã‚‰æ›´æ–°ã•ã‚Œã¦ã„ã¾ã™',
-'info_short' => '情報',
'printableversion' => 'å°åˆ·ç”¨ãƒãƒ¼ã‚¸ãƒ§ãƒ³',
'permalink' => 'ã“ã®ç‰ˆã¸ã®å›ºå®šãƒªãƒ³ã‚¯',
'print' => 'å°åˆ·',
+'view' => '閲覧',
'edit' => '編集',
'create' => '作æˆ',
'editthispage' => 'ã“ã®ãƒšãƒ¼ã‚¸ã‚’編集',
@@ -543,6 +541,7 @@ $messages = array(
'delete' => '削除',
'deletethispage' => 'ã“ã®ãƒšãƒ¼ã‚¸ã‚’削除',
'undelete_short' => '{{PLURAL:$1|$1版}}を復帰',
+'viewdeleted_short' => '削除ã•ã‚ŒãŸ$1件ã®ç·¨é›†ã‚’閲覧',
'protect' => 'ä¿è­·',
'protect_change' => '設定変更',
'protectthispage' => 'ã“ã®ãƒšãƒ¼ã‚¸ã‚’ä¿è­·',
@@ -626,6 +625,8 @@ $1',
'toc' => '目次',
'showtoc' => '表示',
'hidetoc' => 'éžè¡¨ç¤º',
+'collapsible-collapse' => '折り畳む',
+'collapsible-expand' => '展開ã™ã‚‹',
'thisisdeleted' => '$1を閲覧ã¾ãŸã¯å¾©å¸°ã—ã¾ã™ã‹ï¼Ÿ',
'viewdeleted' => '$1を表示ã—ã¾ã™ã‹ï¼Ÿ',
'restorelink' => '削除ã•ã‚ŒãŸ$1編集',
@@ -637,6 +638,8 @@ $1',
'page-rss-feed' => '「$1ã€ã®RSSフィード',
'page-atom-feed' => '「$1ã€ã®Atomフィード',
'red-link-title' => '$1(存在ã—ãªã„ページ)',
+'sort-descending' => 'é™é †ã«æ•´åˆ—',
+'sort-ascending' => '昇順ã«æ•´åˆ—',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'ページ',
@@ -724,12 +727,13 @@ URLã‚’é–“é•ã£ã¦æ‰“ã£ãŸã‹ã€ä¸æ­£ãªãƒªãƒ³ã‚¯ã‚’辿ã£ãŸå¯èƒ½æ€§ãŒã‚ã‚
'protectedinterface' => 'ã“ã®ãƒšãƒ¼ã‚¸ã¯ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«ä½¿ç”¨ã•ã‚Œã‚‹ãƒ†ã‚­ã‚¹ãƒˆãŒä¿å­˜ã•ã‚Œã¦ãŠã‚Šã€ã„ãŸãšã‚‰ãªã©ã®é˜²æ­¢ã®ãŸã‚ã«ä¿è­·ã•ã‚Œã¦ã„ã¾ã™ã€‚',
'editinginterface' => "'''警告:'''ソフトウェアã®ã‚¤ãƒ³ã‚¿ãƒ¼ãƒ•ã‚§ãƒ¼ã‚¹ã«ä½¿ç”¨ã•ã‚Œã¦ã„るテキストを編集ã—ã¦ã„ã¾ã™ã€‚
ã“ã®ãƒšãƒ¼ã‚¸ã®å¤‰æ›´ã¯ã™ã¹ã¦ã®åˆ©ç”¨è€…ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã‚¤ãƒ³ã‚¿ãƒ•ã‚§ãƒ¼ã‚¹ã«å½±éŸ¿ã—ã¾ã™ã€‚
-翻訳をã™ã‚‹å ´åˆã€MediaWikiã®åœ°åŸŸåŒ–プロジェクト[http://translatewiki.net/wiki/Main_Page?setlang=ja translatewiki.net]ã®åˆ©ç”¨ã‚’検討ã—ã¦ãã ã•ã„。",
+翻訳をã™ã‚‹å ´åˆã€MediaWikiã®åœ°åŸŸåŒ–プロジェクト[//translatewiki.net/wiki/Main_Page?setlang=ja translatewiki.net]ã®åˆ©ç”¨ã‚’検討ã—ã¦ãã ã•ã„。",
'sqlhidden' => '(SQLクエリéžè¡¨ç¤ºï¼‰',
'cascadeprotected' => 'ã“ã®ãƒšãƒ¼ã‚¸ã¯ã€ã€Œã‚«ã‚¹ã‚±ãƒ¼ãƒ‰ä¿è­·ã€ãŒæŒ‡å®šã•ã‚ŒãŸçŠ¶æ…‹ã§ä¿è­·ã•ã‚Œã¦ã„る以下ã®{{PLURAL:$1|ページ}}ã§èª­ã¿è¾¼ã¾ã‚Œã¦ã„ã‚‹ãŸã‚ã€ç·¨é›†ã§ããªã„よã†ã«ä¿è­·ã•ã‚Œã¦ã„ã¾ã™ã€‚
$2',
'namespaceprotected' => "'''$1'''åå‰ç©ºé–“ã«ã‚るページを編集ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。",
-'customcssjsprotected' => 'ã“ã®ãƒšãƒ¼ã‚¸ã¯ä»–ã®åˆ©ç”¨è€…ã®å€‹äººè¨­å®šã‚’å«ã‚“ã§ã„ã‚‹ãŸã‚ã€ç·¨é›†ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。',
+'customcssprotected' => 'ã“ã®CSSページã¯ã»ã‹ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®å€‹äººè¨­å®šãŒå«ã¾ã‚Œã¦ã„ã‚‹ãŸã‚ã€ç·¨é›†ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。',
+'customjsprotected' => 'ä»–ã®åˆ©ç”¨è€…ã®å€‹äººè¨­å®šã‚’å«ã‚€ãŸã‚ã€ã“ã®JavaScriptã®ãƒšãƒ¼ã‚¸ã‚’編集ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。',
'ns-specialprotected' => '特別ページã¯ç·¨é›†ã§ãã¾ã›ã‚“。',
'titleprotected' => "[[User:$1|$1]]ã«ã‚ˆã‚Šã“ã®ãƒšãƒ¼ã‚¸åã‚’æŒã¤ãƒšãƒ¼ã‚¸ã®ä½œæˆã¯ä¿è­·ã•ã‚Œã¦ã„ã¾ã™ã€‚
ç†ç”±ã¯ã€Œ''$2''ã€ã§ã™ã€‚",
@@ -767,6 +771,7 @@ $2',
'createaccount' => 'アカウント作æˆ',
'gotaccount' => 'æ—¢ã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’æŒã£ã¦ã„ã‚‹å ´åˆã€$1。',
'gotaccountlink' => 'ログインã—ã¦ãã ã•ã„',
+'userlogin-resetlink' => 'ログイン情報を忘れãŸ',
'createaccountmail' => 'メールã§é€ä¿¡',
'createaccountreason' => 'ç†ç”±ï¼š',
'badretype' => '入力ã—ãŸãƒ‘スワードãŒä¸€è‡´ã—ã¾ã›ã‚“。',
@@ -781,13 +786,15 @@ $2',
'nocookieslogin' => '{{SITENAME}}ã§ã¯ãƒ­ã‚°ã‚¤ãƒ³ã«ã‚¯ãƒƒã‚­ãƒ¼ã‚’使用ã—ã¾ã™ã€‚
クッキーãŒç„¡åŠ¹ã«ãªã£ã¦ã„るよã†ã§ã™ã€‚
クッキーを有効ã«ã—ã¦ã€ã‚‚ã†ä¸€åº¦è©¦ã—ã¦ãã ã•ã„。',
+'nocookiesfornew' => '発信元を確èªã§ããªã‹ã£ãŸãŸã‚ã€ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ä½œæˆã•ã‚Œã¾ã›ã‚“ã§ã—ãŸã€‚
+クッキーãŒæœ‰åŠ¹ã«ãªã£ã¦ã„ã‚‹ã“ã¨ã‚’確èªã®ä¸Šã€ã“ã®ãƒšãƒ¼ã‚¸ã‚’リロードã—ã¦ã‚‚ã†ä¸€åº¦è¡Œã£ã¦ãã ã•ã„。',
'noname' => '利用者åã‚’æ­£ã—ã指定ã—ã¦ã„ã¾ã›ã‚“。',
'loginsuccesstitle' => 'ログインæˆåŠŸ',
'loginsuccess' => "'''{{SITENAME}}ã«ã€Œ$1ã€ã¨ã—ã¦ãƒ­ã‚°ã‚¤ãƒ³ã—ã¾ã—ãŸã€‚'''",
'nosuchuser' => '「$1ã€ã¨ã„ã†åå‰ã®åˆ©ç”¨è€…ã¯è¦‹å½“ãŸã‚Šã¾ã›ã‚“。
利用者åã§ã¯å¤§æ–‡å­—ã¨å°æ–‡å­—を区別ã—ã¾ã™ã€‚
綴りãŒæ­£ã—ã„ã“ã¨ã‚’確èªã™ã‚‹ã‹ã€[[Special:UserLogin/signup|æ–°ãŸã«ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’作æˆã—ã¦ãã ã•ã„]]。',
-'nosuchusershort' => '「<nowiki>$1</nowiki>ã€ã¨ã„ã†åˆ©ç”¨è€…ã¯è¦‹å½“ãŸã‚Šã¾ã›ã‚“。
+'nosuchusershort' => '「$1ã€ã¨ã„ã†åˆ©ç”¨è€…ã¯è¦‹å½“ãŸã‚Šã¾ã›ã‚“。
綴りãŒæ­£ã—ã„ã“ã¨ã‚’å†åº¦ç¢ºèªã—ã¦ãã ã•ã„。',
'nouserspecified' => '利用者åを指定ã—ã¦ãã ã•ã„。',
'login-userblocked' => 'ã“ã®åˆ©ç”¨è€…ã¯ãƒ–ロックã•ã‚Œã¦ã„ã¾ã™ã€‚ログインã¯æ‹’å¦ã•ã‚Œã¾ã™ã€‚',
@@ -835,13 +842,14 @@ $2',
'usernamehasherror' => '利用者åã«ã¯ç•ªå·è¨˜å·ã‚’å«ã‚€ã“ã¨ãŒã§ãã¾ã›ã‚“',
'login-throttled' => 'ログインã®å¤±æ•—ãŒåˆ¶é™å›žæ•°ã‚’超ãˆã¾ã—ãŸã€‚
ã—ã°ã‚‰ã時間をãŠã„ã¦ã‹ã‚‰å†åº¦ãŠè©¦ã—ãã ã•ã„。',
+'login-abort-generic' => 'ログインã«å¤±æ•—ã—ã¾ã—ãŸã€‚− 中止',
'loginlanguagelabel' => '言語: $1',
'suspicious-userlogout' => '壊れãŸãƒ–ラウザもã—ãã¯ã‚­ãƒ£ãƒƒã‚·ãƒ¥ãƒ»ãƒ—ロキシã«ã‚ˆã£ã¦é€ä¿¡ã•ã‚ŒãŸå¯èƒ½æ€§ãŒã‚ã‚‹ãŸã‚ã€ãƒ­ã‚°ã‚¢ã‚¦ãƒˆè¦æ±‚ã¯æ‹’å¦ã•ã‚Œã¾ã—ãŸã€‚',
# E-mail sending
'php-mail-error-unknown' => 'PHPã®mail()関数ã§ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'パスワードã®å¤‰æ›´',
'resetpass_announce' => 'é›»å­ãƒ¡ãƒ¼ãƒ«ã§é€ä¿¡ã•ã‚ŒãŸä»®ãƒ‘スワードã§ãƒ­ã‚°ã‚¤ãƒ³ã—ã¦ã„ã¾ã™ã€‚
ログインを完了ã™ã‚‹ã«ã¯ã€ã“ã“ã§æ–°ã—ã„パスワードを設定ã—ãªãŠã™å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼š',
@@ -861,6 +869,42 @@ $2',
ã™ã§ã«ãƒ‘スワード変更を行ã£ã¦ã„ã‚‹ã‹ã€æ–°ã—ã„仮パスワードã®ç™ºè¡Œã‚’ä¾é ¼ã—ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚',
'resetpass-temp-password' => '仮パスワード:',
+# Special:PasswordReset
+'passwordreset' => 'パスワードã®å†è¨­å®š',
+'passwordreset-text' => 'ã“ã®ãƒ•ã‚©ãƒ¼ãƒ ã«å›žç­”ã™ã‚‹ã¨ã€ã”自身ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®è©³ç´°ãŒé›»å­ãƒ¡ãƒ¼ãƒ«ã§é€šçŸ¥ã•ã‚Œã¾ã™ã€‚',
+'passwordreset-legend' => 'パスワードã®å†è¨­å®š',
+'passwordreset-disabled' => 'パスワードã®å†è¨­å®šã¯ã€ã“ã®ã‚¦ã‚£ã‚­ã§ã¯ç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚',
+'passwordreset-pretext' => '{{PLURAL:$1||以下ã®ãƒ‡ãƒ¼ã‚¿ã®ã†ã¡ã®ã²ã¨ã¤ã‚’入力ã—ã¦ãã ã•ã„。}}',
+'passwordreset-username' => '利用者å:',
+'passwordreset-domain' => 'ドメイン:',
+'passwordreset-email' => 'é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹:',
+'passwordreset-emailtitle' => '{{SITENAME}}上ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®è©³ç´°',
+'passwordreset-emailtext-ip' => 'ã©ãªãŸã‹ãŒï¼ˆãŠãらãã‚ãªãŸã€IP アドレス $1 )ã‚ãªãŸã® {{SITENAME}} ($4)
+ã«ãŠã‘るアカウントã®è©³ç´°æƒ…報をé€ä¿¡ã™ã‚‹ã‚ˆã†ç”³è«‹ã•ã‚Œã¾ã—ãŸã€‚
+下記ã®åˆ©ç”¨è€…{{PLURAL:$3|アカウント}}ãŒã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ç´ä»˜ã‘られã¦ã„ã¾ã™ã€‚
+
+$2
+
+{{PLURAL:$3|ã“ã®ä¸€æ™‚çš„ãªãƒ‘スワード}}ã¯{{PLURAL:$5|$5æ—¥}}ã§æœ‰åŠ¹æœŸé™ãŒåˆ‡ã‚Œã¾ã™ã€‚
+ã‚ãªãŸã¯ãƒ­ã‚°ã‚¤ãƒ³ã—ã€æ–°ã—ã„パスワードをã™ãã«é¸ã¶å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
+ã“ã®ç”³è«‹ãŒä»–ã®ã ã‚Œã‹ã«ã‚ˆã‚‹ã‚‚ã®ã§ã‚ã‚‹ã‹ã€ã‚ã‚‹ã„ã¯ã‚ãªãŸãŒè‡ªèº«ã®å…ƒã€…ã®ãƒ‘スワードを
+覚ãˆã¦ãŠã‚Šã€å¤‰ãˆãŸããªã„å ´åˆã«ã¯ã€ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’無視ã—ã¦
+以å‰ã®ãƒ‘スワードを使ã„続ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚',
+'passwordreset-emailtext-user' => '{{SITENAME}} ã®åˆ©ç”¨è€… $1 ãŒã‚ãªãŸã® {{SITENAME}} ($4)
+ã«ãŠã‘るアカウントã®è©³ç´°æƒ…報をé€ä¿¡ã™ã‚‹ã‚ˆã†ç”³è«‹ã•ã‚Œã¾ã—ãŸã€‚
+下記ã®åˆ©ç”¨è€…{{PLURAL:$3|アカウント}}ãŒã“ã®ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¨ç´ä»˜ã‘られã¦ã„ã¾ã™ã€‚
+
+$2
+
+{{PLURAL:$3|ã“ã®ä¸€æ™‚çš„ãªãƒ‘スワード}}ã¯{{PLURAL:$5|$5æ—¥}}ã§æœ‰åŠ¹æœŸé™ãŒåˆ‡ã‚Œã¾ã™ã€‚
+ã‚ãªãŸã¯ãƒ­ã‚°ã‚¤ãƒ³ã—ã€æ–°ã—ã„パスワードをã™ãã«é¸ã¶å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚
+ã“ã®ç”³è«‹ãŒä»–ã®ã ã‚Œã‹ã«ã‚ˆã‚‹ã‚‚ã®ã§ã‚ã‚‹ã‹ã€ã‚ã‚‹ã„ã¯ã‚ãªãŸãŒè‡ªèº«ã®å…ƒã€…ã®ãƒ‘スワードを
+覚ãˆã¦ãŠã‚Šã€å¤‰ãˆãŸããªã„å ´åˆã«ã¯ã€ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’無視ã—ã¦
+以å‰ã®ãƒ‘スワードを使ã„続ã‘ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚',
+'passwordreset-emailelement' => '利用者å: $1
+仮パスワード: $2',
+'passwordreset-emailsent' => '確èªã®ãƒ¡ãƒ¼ãƒ«ãŒé€ä¿¡ã•ã‚Œã¾ã—ãŸã€‚',
+
# Edit page toolbar
'bold_sample' => '太字',
'bold_tip' => '太字',
@@ -872,8 +916,6 @@ $2',
'extlink_tip' => '外部リンク (http:// を忘れãšã«ã¤ã‘ã¦ãã ã•ã„)',
'headline_sample' => '見出ã—æ–‡',
'headline_tip' => '2段目ã®è¦‹å‡ºã—',
-'math_sample' => 'ã“ã“ã«æ•°å¼ã‚’挿入',
-'math_tip' => 'æ•°å¼ (LaTeX)',
'nowiki_sample' => 'ã“ã“ã«ãƒžãƒ¼ã‚¯ã‚¢ãƒƒãƒ—を無効ã«ã™ã‚‹ãƒ†ã‚­ã‚¹ãƒˆã‚’入力ã—ã¾ã™',
'nowiki_tip' => 'ウィキ書å¼ã‚’無視',
'image_sample' => 'サンプル.jpg',
@@ -962,7 +1004,7 @@ IPアドレスã¯è¤‡æ•°ã®åˆ©ç”¨è€…ã®é–“ã§å…±æœ‰ã•ã‚Œã¦ã„ã‚‹ã“ã¨ãŒã‚ã‚Š
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連記録を検索ã™ã‚‹]ã‹ã€
ã‚‚ã—ãã¯ã€[{{fullurl:{{FULLPAGENAME}}|action=edit}} ã“ã®ãƒšãƒ¼ã‚¸ã‚’編集]</span>ã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚',
'noarticletext-nopermission' => 'ç¾åœ¨ã“ã®ãƒšãƒ¼ã‚¸ã«ã¯å†…容ãŒã‚ã‚Šã¾ã›ã‚“。他ã®ãƒšãƒ¼ã‚¸ã«å«ã¾ã‚Œã‚‹[[Special:Search/{{PAGENAME}}|ã“ã®ãƒšãƒ¼ã‚¸åを検索ã™ã‚‹]]ã‹ã€ã‚‚ã—ãã¯<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 関連記録を検索ã™ã‚‹]</span>ã“ã¨ãŒã§ãã¾ã™ã€‚',
-'userpage-userdoesnotexist' => '「$1ã€ã¨ã„ã†åå‰ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“。
+'userpage-userdoesnotexist' => '「<nowiki>$1</nowiki>ã€ã¨ã„ã†åå‰ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã¯ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“。
ã“ã®ãƒšãƒ¼ã‚¸ã‚’編集ã™ã‚‹ã“ã¨ãŒé©åˆ‡ã‹ã©ã†ã‹ç¢ºèªã—ã¦ãã ã•ã„。',
'userpage-userdoesnotexist-view' => '利用者アカウント「$1ã€ã¯ç™»éŒ²ã•ã‚Œã¦ã„ã¾ã›ã‚“。',
'blocked-notice-logextract' => 'ã“ã®åˆ©ç”¨è€…ã¯ç¾åœ¨ãƒ–ロックã•ã‚Œã¦ã„ã¾ã™ã€‚
@@ -1002,6 +1044,7 @@ IPアドレスã¯è¤‡æ•°ã®åˆ©ç”¨è€…ã®é–“ã§å…±æœ‰ã•ã‚Œã¦ã„ã‚‹ã“ã¨ãŒã‚ã‚Š
'token_suffix_mismatch' => "'''使用中ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒç·¨é›†ãƒˆãƒ¼ã‚¯ãƒ³å†…ã®å¥èª­ç‚¹ã‚’æ­£ã—ã処ç†ã—ã¦ã„ãªã„ãŸã‚ã€ç·¨é›†ã‚’å—ã‘付ã‘られã¾ã›ã‚“。'''
ページ本文ã®ç ´æを防ããŸã‚ã€ç·¨é›†ã¯å映ã•ã‚Œã¾ã›ã‚“。
ã“ã‚Œã¯ã€å•é¡Œã®ã‚る匿åプロキシサービスを利用ã—ã¦ã„ã‚‹ã¨ã€èµ·ã“ã‚‹ã“ã¨ãŒã‚ã‚Šã¾ã™ã€‚",
+'edit_form_incomplete' => "'''一部ã®ç·¨é›†ãƒ•ã‚©ãƒ¼ãƒ ã®å€¤ãŒã‚µãƒ¼ãƒãƒ¼ã«å±Šãã¾ã›ã‚“ã§ã—ãŸã€‚ã”確èªã®ä¸Šã€ãã®ã¾ã¾å†åº¦æŠ•ç¨¿ã—ã¦ãã ã•ã„。'''",
'editing' => '「$1ã€ã‚’編集中',
'editingsection' => '「$1ã€ã‚’編集中 (節å˜ä½)',
'editingcomment' => '「$1ã€ã‚’編集中 (æ–°ã—ã„節)',
@@ -1072,7 +1115,7 @@ IPアドレスã¯è¤‡æ•°ã®åˆ©ç”¨è€…ã®é–“ã§å…±æœ‰ã•ã‚Œã¦ã„ã‚‹ã“ã¨ãŒã‚ã‚Š
ãã®ãƒšãƒ¼ã‚¸ã¯ã€ã™ã§ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚',
# Parser/template warnings
-'expensive-parserfunction-warning' => "'''警告:'''ã“ã®ãƒšãƒ¼ã‚¸ã§ã®ã€é«˜è² è·ãªæ§‹æ–‡è§£æžé–¢æ•°ã®å‘¼ã³å‡ºã—回数ãŒå¤šéŽãŽã¾ã™ã€‚
+'expensive-parserfunction-warning' => "'''警告:'''ã“ã®ãƒšãƒ¼ã‚¸ã§ã®ã€é«˜è² è·ãªãƒ‘ーサー関数ã®å‘¼ã³å‡ºã—回数ãŒå¤šéŽãŽã¾ã™ã€‚
呼ã³å‡ºã—ã¯{{PLURAL:$2|$2}}回以下ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ï¼ˆç¾åœ¨ã¯{{PLURAL:$1|$1}}回)。",
'expensive-parserfunction-category' => '高負è·ãªæ§‹æ–‡è§£æžé–¢æ•°ã®å‘¼ã³å‡ºã—ãŒå¤šéŽãŽã‚‹ãƒšãƒ¼ã‚¸',
@@ -1140,27 +1183,27 @@ $3ã«ã‚ˆã‚‹ç†ç”±ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼š''$2''",
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。",
'rev-deleted-text-unhide' => "ã“ã®ç‰ˆã¯'''削除ã•ã‚Œã¦ã„ã¾ã™'''。
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。
-管ç†è€…ã¯ã€ã“ã®ã¾ã¾[$1 ã“ã®ç‰ˆã‚’見る]ã“ã¨ãŒã§ãã¾ã™ã€‚",
+ã“ã®ã¾ã¾[$1 ã“ã®ç‰ˆã‚’見る]ã“ã¨ãŒã§ãã¾ã™ã€‚",
'rev-suppressed-text-unhide' => "ã“ã®ç‰ˆã¯'''秘匿ã•ã‚Œã¦ã„ã¾ã™'''。
[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。
-管ç†è€…ã¯ã€ã“ã®ã¾ã¾[$1 ã“ã®ç‰ˆã‚’見る]ã“ã¨ãŒã§ãã¾ã™ã€‚",
+ã“ã®ã¾ã¾[$1 ã“ã®ç‰ˆã‚’見る]ã“ã¨ãŒã§ãã¾ã™ã€‚",
'rev-deleted-text-view' => "ã“ã®ç‰ˆã¯'''削除ã•ã‚Œã¦ã„ã¾ã™'''。
-管ç†è€…ã¯ã€å†…容を見るã“ã¨ãŒã§ãã¾ã™ã€‚[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。",
+内容を見るã“ã¨ãŒã§ãã¾ã™ã€‚[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。",
'rev-suppressed-text-view' => "ã“ã®ç‰ˆã¯'''秘匿ã•ã‚Œã¦ã„ã¾ã™'''。
-管ç†è€…ã¯ã€å†…容を見るã“ã¨ãŒã§ãã¾ã™ã€‚[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。",
+内容を見るã“ã¨ãŒã§ãã¾ã™ã€‚[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。",
'rev-deleted-no-diff' => "ã©ã¡ã‚‰ã‹ã®ç‰ˆãŒ'''削除ã•ã‚Œã¦ã„ã‚‹ãŸã‚'''ã€å·®åˆ†è¡¨ç¤ºã§ãã¾ã›ã‚“。
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。",
'rev-suppressed-no-diff' => "指定ã•ã‚ŒãŸå·®åˆ†ã¯'''削除ã•ã‚ŒãŸ'''版をå«ã‚“ã§ã„ã‚‹ãŸã‚表示出æ¥ã¾ã›ã‚“。",
'rev-deleted-unhide-diff' => "ã“ã®å·®åˆ†ã®ä¸€æ–¹ã®ç‰ˆã¯'''削除ã•ã‚Œã¦ã„ã¾ã™'''。
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。
-管ç†è€…ã¯ã€ã“ã®ã¾ã¾[$1 ã“ã®å·®åˆ†ã‚’見る]ã“ã¨ãŒã§ãã¾ã™ã€‚",
+ã“ã®ã¾ã¾[$1 ã“ã®å·®åˆ†ã‚’見る]ã“ã¨ãŒã§ãã¾ã™ã€‚",
'rev-suppressed-unhide-diff' => "ã“ã®å·®åˆ†ã®ä¸€æ–¹ã®ç‰ˆã¯'''秘匿ã•ã‚Œã¦ã„ã¾ã™'''。
[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。
-管ç†è€…ã¯ã€ã“ã®ã¾ã¾[$1 ã“ã®å·®åˆ†ã‚’見る]ã“ã¨ãŒã§ãã¾ã™ã€‚",
+ã“ã®ã¾ã¾[$1 ã“ã®å·®åˆ†ã‚’見る]ã“ã¨ãŒã§ãã¾ã™ã€‚",
'rev-deleted-diff-view' => "ã“ã®å·®åˆ†ã®ä¸€æ–¹ã®ç‰ˆã¯'''削除ã•ã‚Œã¦ã„ã¾ã™'''。
-管ç†è€…ã¯ã€ã“ã®å·®åˆ†ã‚’見るã“ã¨ãŒã§ãã¾ã™ã€‚[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。",
+ã“ã®å·®åˆ†ã‚’見るã“ã¨ãŒã§ãã¾ã™ã€‚[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 削除記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。",
'rev-suppressed-diff-view' => "ã“ã®å·®åˆ†ã®ä¸€æ–¹ã®ç‰ˆã¯'''秘匿ã•ã‚Œã¦ã„ã¾ã™'''。
-管ç†è€…ã¯ã€ã“ã®å·®åˆ†ã‚’見るã“ã¨ãŒã§ãã¾ã™ã€‚[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。",
+ã“ã®å·®åˆ†ã‚’見るã“ã¨ãŒã§ãã¾ã™ã€‚[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 秘匿記録]ã«è©³ç´°æƒ…å ±ãŒã‚ã‚‹ã‹ã‚‚ã—ã‚Œã¾ã›ã‚“。",
'rev-delundel' => '表示/éžè¡¨ç¤º',
'rev-showdeleted' => '表示',
'revisiondelete' => '版ã®å‰Šé™¤ã¨å¾©å¸°',
@@ -1212,8 +1255,8 @@ $1",
'revdelete-content' => '本文',
'revdelete-summary' => '編集内容ã®è¦ç´„',
'revdelete-uname' => '利用者å',
-'revdelete-restricted' => '管ç†è€…ã«å¯¾ã™ã‚‹åˆ¶é™ã‚’é©ç”¨',
-'revdelete-unrestricted' => '管ç†è€…ã«å¯¾ã™ã‚‹åˆ¶é™ã‚’除去ã—ã¾ã—ãŸ',
+'revdelete-restricted' => '管ç†è€…ã«å¯¾ã™ã‚‹åˆ¶é™ã®é©ç”¨',
+'revdelete-unrestricted' => '管ç†è€…ã«å¯¾ã™ã‚‹åˆ¶é™ã®é™¤åŽ»',
'revdelete-hid' => '$1ã‚’éš ã—ã¾ã—ãŸ',
'revdelete-unhid' => '$1ã®ç‰ˆæŒ‡å®šå‰Šé™¤ã‚’解除ã—ã¾ã—ãŸ',
'revdelete-log-message' => '$2版ã«å¯¾ã—ã¦$1',
@@ -1240,8 +1283,8 @@ $1",
# Suppression log
'suppressionlog' => '秘匿記録',
-'suppressionlogtext' => '以下ã¯ç®¡ç†è€…ã‹ã‚‰ç§˜åŒ¿ã•ã‚ŒãŸå†…容をå«ã‚€å‰Šé™¤ãŠã‚ˆã³ãƒ–ロック記録ã§ã™ã€‚
-ç¾åœ¨æ“作ã§ãるブロックã«ã¤ã„ã¦ã¯[[Special:IPBlockList|投稿ブロック中ã®åˆ©ç”¨è€…ã‚„IPアドレス]]ã‚’å‚ç…§ã—ã¦ãã ã•ã„。',
+'suppressionlogtext' => '以下ã¯ç®¡ç†è€…ã‹ã‚‰ç§˜åŒ¿ã•ã‚ŒãŸå†…容をå«ã‚€å‰Šé™¤ãŠã‚ˆã³ãƒ–ロックã®ä¸€è¦§ã§ã™ã€‚
+ç¾åœ¨æ“作ã§ãる追放ã¨ãƒ–ロックã®ä¸€è¦§ã«ã¤ã„ã¦ã¯[[Special:BlockList|IPブロックã®ä¸€è¦§]]ã‚’å‚ç…§ã—ã¦ãã ã•ã„。',
# History merging
'mergehistory' => 'ページ履歴ã®çµ±åˆ',
@@ -1353,12 +1396,13 @@ $1",
ãŸã ã—外部ã®æ¤œç´¢ã‚¨ãƒ³ã‚¸ãƒ³ã«è“„ç©ã•ã‚Œã¦ã„ã‚‹{{SITENAME}}ã®æƒ…å ±ã¯å¤ã„å ´åˆãŒã‚ã‚Šã¾ã™ã€‚',
# Quickbar
-'qbsettings' => 'クイックãƒãƒ¼',
-'qbsettings-none' => 'ãªã—',
-'qbsettings-fixedleft' => '左端',
-'qbsettings-fixedright' => 'å³ç«¯',
-'qbsettings-floatingleft' => 'ウィンドウã®å·¦ä¸Šã«å›ºå®š',
-'qbsettings-floatingright' => 'ウィンドウã®å³ä¸Šã«å›ºå®š',
+'qbsettings' => 'クイックãƒãƒ¼',
+'qbsettings-none' => 'ãªã—',
+'qbsettings-fixedleft' => '左端',
+'qbsettings-fixedright' => 'å³ç«¯',
+'qbsettings-floatingleft' => 'ウィンドウã®å·¦ä¸Šã«å›ºå®š',
+'qbsettings-floatingright' => 'ウィンドウã®å³ä¸Šã«å›ºå®š',
+'qbsettings-directionality' => 'ã‚ãªãŸã®è¨€èªžã®ã‚¹ã‚¯ãƒªãƒ—トã®æ–¹å‘ã«å¿œã˜ã¦å›ºå®š',
# Preferences page
'preferences' => '個人設定',
@@ -1369,9 +1413,10 @@ $1",
'changepassword' => 'パスワードã®å¤‰æ›´',
'prefs-skin' => '外装',
'skin-preview' => 'プレビュー',
-'prefs-math' => 'æ•°å¼',
'datedefault' => 'é¸æŠžãªã—',
+'prefs-beta' => 'ベータ版機能',
'prefs-datetime' => '日付ã¨æ™‚刻',
+'prefs-labs' => 'ラボã®æ©Ÿèƒ½',
'prefs-personal' => '利用者情報',
'prefs-rc' => '最近ã®æ›´æ–°',
'prefs-watchlist' => 'ウォッãƒãƒªã‚¹ãƒˆ',
@@ -1393,8 +1438,6 @@ $1",
'columns' => '列数:',
'searchresultshead' => '検索',
'resultsperpage' => '1ページã‚ãŸã‚Šã®è¡¨ç¤ºä»¶æ•°ï¼š',
-'contextlines' => '1件ã‚ãŸã‚Šã®è¡Œæ•°ï¼š',
-'contextchars' => '1è¡Œã‚ãŸã‚Šã®æ–‡å­—数:',
'stub-threshold' => '<a href="#" class="stub">スタブリンク</a>ã¨ã—ã¦è¡¨ç¤ºã™ã‚‹é–¾å€¤ï¼ˆãƒã‚¤ãƒˆï¼‰ï¼š',
'stub-threshold-disabled' => '無効',
'recentchangesdays' => '最近ã®æ›´æ–°ã«è¡¨ç¤ºã™ã‚‹æ—¥æ•°ï¼š',
@@ -1407,7 +1450,7 @@ $1",
'savedprefs' => '個人設定をä¿å­˜ã—ã¾ã—ãŸã€‚',
'timezonelegend' => '時間帯:',
'localtime' => 'ç¾åœ°æ™‚間:',
-'timezoneuseserverdefault' => 'サーãƒãƒ¼ã®æ—¢å®šã‚’使用',
+'timezoneuseserverdefault' => '既定を使用 ($1)',
'timezoneuseoffset' => 'ãã®ä»–(時差を指定)',
'timezoneoffset' => '時差¹:',
'servertime' => 'サーãƒãƒ¼ã®æ™‚間:',
@@ -1457,8 +1500,8 @@ HTMLタグを見直ã—ã¦ãã ã•ã„。',
'email' => 'é›»å­ãƒ¡ãƒ¼ãƒ«',
'prefs-help-realname' => '本å登録ã¯çœç•¥å¯èƒ½ã§ã™ã€‚
登録ã—ãŸå ´åˆã€è‘—作物ã®å¸°å±žè¡¨ç¤ºã«æœ¬åãŒç”¨ã„られã¾ã™ã€‚',
-'prefs-help-email' => 'é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®è¨­å®šã¯çœç•¥å¯èƒ½ã§ã™ãŒã€ãƒ‘スワードを忘れãŸéš›ã«æ–°ã—ã„パスワードを電å­ãƒ¡ãƒ¼ãƒ«ã§å—ã‘å–ã‚‹å ´åˆã«å¿…è¦ã§ã™ã€‚
-一方ã§ã€åˆ©ç”¨è€…ページやトークページを使ã£ã¦ã®ä»–者ã¨ã®é€£çµ¡ã¯èº«å…ƒã‚’明らã‹ã«ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã›ã‚“。',
+'prefs-help-email' => 'é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®è¨­å®šã¯çœç•¥å¯èƒ½ã§ã™ãŒã€ãƒ‘スワードを忘れãŸéš›ã«æ–°ã—ã„パスワードを電å­ãƒ¡ãƒ¼ãƒ«ã§å—ã‘å–ã‚‹å ´åˆã«å¿…è¦ã§ã™ã€‚',
+'prefs-help-email-others' => 'ã‚ãªãŸã®èº«å…ƒã‚’明らã‹ã«ã™ã‚‹ã“ã¨ãªãã€ä»–ã®åˆ©ç”¨è€…ã«åˆ©ç”¨è€…ページやトークページを使ã£ã¦é€£çµ¡ã‚’ã—ã¦ã‚‚らã†ã‚ˆã†ã«ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚',
'prefs-help-email-required' => 'メールアドレスãŒå¿…è¦ã§ã™ã€‚',
'prefs-info' => '基本情報',
'prefs-i18n' => '国際化',
@@ -1476,8 +1519,8 @@ HTMLタグを見直ã—ã¦ãã ã•ã„。',
'prefs-diffs' => '差分',
# User preference: e-mail validation using jQuery
-'email-address-validity-valid' => '有効ãªã‚ˆã†ã§ã™',
-'email-address-validity-invalid' => '有効ãªã‚¢ãƒ‰ãƒ¬ã‚¹ãŒå¿…è¦ã§ã™!',
+'email-address-validity-valid' => 'é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã¯æœ‰åŠ¹ãªã‚ˆã†ã§ã™',
+'email-address-validity-invalid' => '有効ãªé›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ãã ã•ã„',
# User rights
'userrights' => '利用者権é™ã®ç®¡ç†',
@@ -1496,8 +1539,8 @@ HTMLタグを見直ã—ã¦ãã ã•ã„。',
'userrights-reason' => 'ç†ç”±ï¼š',
'userrights-no-interwiki' => '他ウィキ上ã«ãŠã‘る利用者権é™ã®ç·¨é›†æ¨©é™ã¯ã‚ã‚Šã¾ã›ã‚“。',
'userrights-nodatabase' => 'データベース$1ã¯å­˜åœ¨ã—ãªã„ã‹ã€ãƒ­ãƒ¼ã‚«ãƒ«ä¸Šã«ã‚ã‚Šã¾ã›ã‚“。',
-'userrights-nologin' => '利用者権é™ãŒå‰²ã‚Šå½“ã¦ã‚‰ã‚Œã¦ã„る管ç†è€…権é™ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã§[[Special:UserLogin|ログイン]]ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚',
-'userrights-notallowed' => 'ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã¯åˆ©ç”¨è€…権é™ã‚’追加åˆã¯å‰Šé™¤ã™ã‚‹æ¨©é™ã¯ã‚ã‚Šã¾ã›ã‚“。',
+'userrights-nologin' => '利用者権é™ã‚’付与ã™ã‚‹ã«ã¯ã€ç®¡ç†è€…アカウントã§[[Special:UserLogin|ログイン]]ã™ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚',
+'userrights-notallowed' => 'ã‚ãªãŸã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã«ã¯åˆ©ç”¨è€…権é™ã‚’追加ã¾ãŸã¯é™¤åŽ»ã™ã‚‹æ¨©é™ãŒã‚ã‚Šã¾ã›ã‚“。',
'userrights-changeable-col' => '変更å¯èƒ½ãªã‚°ãƒ«ãƒ¼ãƒ—',
'userrights-unchangeable-col' => '変更ã§ããªã„グループ',
@@ -1583,15 +1626,15 @@ HTMLタグを見直ã—ã¦ãã ã•ã„。',
'right-userrights' => '全利用者権é™ã®ç·¨é›†',
'right-userrights-interwiki' => 'ä»–ã®ã‚¦ã‚£ã‚­ã®åˆ©ç”¨è€…ã®åˆ©ç”¨è€…権é™ã®ç·¨é›†',
'right-siteadmin' => 'データベースã®ãƒ­ãƒƒã‚¯ãŠã‚ˆã³ãƒ­ãƒƒã‚¯è§£é™¤',
-'right-reset-passwords' => 'ä»–ã®åˆ©ç”¨è€…ã®ãƒ‘スワードをå†è¨­å®šã™ã‚‹',
'right-override-export-depth' => 'リンク先ページを5階層ã¾ã§å«ã‚ã¦æ›¸ã出ã™',
'right-sendemail' => 'ä»–ã®åˆ©ç”¨è€…ã¸é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’é€ã‚‹',
# User rights log
-'rightslog' => '利用者権é™å¤‰æ›´è¨˜éŒ²',
-'rightslogtext' => '以下ã¯åˆ©ç”¨è€…権é™ã®å¤‰æ›´è¨˜éŒ²ã§ã™ã€‚',
-'rightslogentry' => '$1ã®æ‰€å±žã‚°ãƒ«ãƒ¼ãƒ—ã‚’$2ã‹ã‚‰$3ã¸å¤‰æ›´ã—ã¾ã—ãŸ',
-'rightsnone' => '(ãªã—)',
+'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' => 'ã“ã®ãƒšãƒ¼ã‚¸ã®é–²è¦§',
@@ -1639,7 +1682,7 @@ HTMLタグを見直ã—ã¦ãã ã•ã„。',
'recentchanges-label-minor' => 'ã“ã‚Œã¯ç´°éƒ¨ã®ç·¨é›†ã§ã™',
'recentchanges-label-bot' => 'ã“ã®ç·¨é›†ã¯ãƒœãƒƒãƒˆã«ã‚ˆã£ã¦è¡Œã‚ã‚Œã¾ã—ãŸ',
'recentchanges-label-unpatrolled' => 'ã“ã®ç·¨é›†ã¯ã¾ã å·¡å›žã•ã‚Œã¦ã„ã¾ã›ã‚“',
-'rcnote' => "以下ã¯ã€$4$5ã¾ã§ã®{{PLURAL:$2|1æ—¥|ç›´å‰'''$2'''日間}}ã«ãªã•ã‚ŒãŸ'''$1'''件ã®å¤‰æ›´ã§ã™ã€‚",
+'rcnote' => "$4 $5ã¾ã§ã®{{PLURAL:$2|'''1'''æ—¥|'''$2'''日間}}ã«ãªã•ã‚ŒãŸ'''$1'''件ã®å¤‰æ›´ã¯ä»¥ä¸‹ã®ã¨ãŠã‚Šã§ã™ã€‚",
'rcnotefrom' => "以下ã¯ã€'''$2'''以é™ã®æ›´æ–°ã§ã™ï¼ˆæœ€å¤§'''$1'''件)。",
'rclistfrom' => '$1以é™ã®æ›´æ–°ã‚’表示ã™ã‚‹',
'rcshowhideminor' => '細部ã®ç·¨é›†ã‚’$1',
@@ -1656,7 +1699,7 @@ HTMLタグを見直ã—ã¦ãã ã•ã„。',
'minoreditletter' => 'ç´°',
'newpageletter' => 'æ–°',
'boteditletter' => 'ボ',
-'unpatrolledletter' => 'ï¼',
+'unpatrolledletter' => '!',
'number_of_watching_users_pageview' => '[$1人ã®åˆ©ç”¨è€…ãŒã‚¦ã‚©ãƒƒãƒã—ã¦ã„ã¾ã™]',
'rc_categories' => 'カテゴリを制é™ï¼ˆ"|"区切り)',
'rc_categories_any' => 'ã™ã¹ã¦',
@@ -1715,13 +1758,13 @@ HTMLタグを見直ã—ã¦ãã ã•ã„。',
'illegalfilename' => 'ファイルå「$1ã€ã«ãƒšãƒ¼ã‚¸åã¨ã—ã¦è¨±å¯ã•ã‚Œã¦ã„ãªã„文字ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ã€‚
ファイルåを変更ã—ã¦ã‹ã‚‰ã‚‚ã†ä¸€åº¦ã‚¢ãƒƒãƒ—ロードã—ã¦ãã ã•ã„。',
'badfilename' => 'ファイルåã¯ã€Œ$1ã€ã¸å¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚',
-'filetype-mime-mismatch' => 'ファイルã®æ‹¡å¼µå­ãŒMIMEタイプã¨ä¸€è‡´ã—ã¾ã›ã‚“。',
+'filetype-mime-mismatch' => 'ファイルã®æ‹¡å¼µå­ã€Œ$1ã€ãŒMIMEタイプ「$2ã€ã¨ä¸€è‡´ã—ã¾ã›ã‚“。',
'filetype-badmime' => 'MIMEタイプ「$1ã€ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚¢ãƒƒãƒ—ロードã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。',
'filetype-bad-ie-mime' => 'Internet ExplorerãŒã€è¨±å¯ã•ã‚Œã¦ã„ãªã„潜在的å±é™ºæ€§ã®ã‚るファイル形å¼ã€Œ$1ã€ã¨èªè­˜ã—ã¦ã—ã¾ã†ãŸã‚ã€ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’アップロードã§ãã¾ã›ã‚“。',
'filetype-unwanted-type' => "'''「.$1ã€'''ã¯å¥½ã¾ã—ããªã„ファイル形å¼ã§ã™ã€‚
推奨ã•ã‚Œã‚‹{{PLURAL:$3|ファイル形å¼}}ã¯$2ã§ã™ã€‚",
-'filetype-banned-type' => "'''「.$1ã€''' ã¯è¨±å¯ã•ã‚Œã¦ã„ãªã„ファイル形å¼ã§ã™ã€‚
-許å¯ã•ã‚Œã¦ã„ã‚‹{{PLURAL:$3|ファイル形å¼}}ã¯$2ã§ã™ã€‚",
+'filetype-banned-type' => "'''「.$1ã€''' ã¯è¨±å¯ã•ã‚Œã¦ã„ãªã„ファイル形å¼ã§ã™{{PLURAL:$4|}}。
+許å¯ã•ã‚Œã¦ã„るファイル形å¼{{PLURAL:$3|}}ã¯$2ã§ã™ã€‚",
'filetype-missing' => 'ファイルã«ã€ã€Œ.jpgã€ã®ã‚ˆã†ãªæ‹¡å¼µå­ãŒã‚ã‚Šã¾ã›ã‚“。',
'empty-file' => 'é€ä¿¡ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯ç©ºã§ã—ãŸã€‚',
'file-too-large' => 'é€ä¿¡ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯å¤§ãã™ãŽã¾ã™ã€‚',
@@ -1740,6 +1783,7 @@ HTMLタグを見直ã—ã¦ãã ã•ã„。',
'emptyfile' => 'アップロードã—ãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯å†…容ãŒç©ºã®ã‚ˆã†ã§ã™ã€‚
ファイルåã®æŒ‡å®šãŒé–“é•ã£ã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚
本当ã«ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’アップロードã—ãŸã„ã®ã‹ã€ç¢ºèªã—ã¦ãã ã•ã„。',
+'windows-nonascii-filename' => 'ã“ã®wikiã§ã¯ã€ãƒ•ã‚¡ã‚¤ãƒ«åã«ç‰¹æ®Šæ–‡å­—を使ã†ã“ã¨ãŒã§ãã¾ã›ã‚“。',
'fileexists' => "ã“ã®åå‰ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ—¢ã«å­˜åœ¨ã—ã¦ã„ã¾ã™ã€‚ç½®ãæ›ãˆãŸã„ã‹ç¢ºä¿¡ãŒã‚‚ã¦ãªã„å ´åˆã¯ã€'''<tt>[[:$1]]</tt>'''を確èªã—ã¦ãã ã•ã„。
[[$1|thumb]]",
'filepageexists' => "ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®ãŸã‚ã®èª¬æ˜Žãƒšãƒ¼ã‚¸ã¯æ—¢ã«'''<tt>[[:$1]]</tt>'''ã«ä½œæˆã•ã‚Œã¦ã„ã¾ã™ãŒã€ç¾åœ¨ã€ã“ã®åå‰ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯å­˜åœ¨ã—ã¦ã„ã¾ã›ã‚“。
@@ -1780,6 +1824,8 @@ file_uploadsã®è¨­å®šã‚’確èªã—ã¦ãã ã•ã„。',
'uploadscripted' => 'ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€ã‚¦ã‚§ãƒ–ブラウザãŒèª¤ã£ã¦è§£é‡ˆã—ã¦ã—ã¾ã†ãŠãã‚Œã®ã‚ã‚‹HTMLã¾ãŸã¯ã‚¹ã‚¯ãƒªãƒ—トコードをå«ã‚“ã§ã„ã¾ã™ã€‚',
'uploadvirus' => 'ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã«ã¯ã‚¦ã‚¤ãƒ«ã‚¹ãŒå«ã¾ã‚Œã¦ã„ã¾ã™ï¼
詳細:$1',
+'uploadjava' => 'ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€Javaã®.classファイルをå«ã‚€ZIPファイルã§ã™ã€‚
+セキュリティã®åˆ¶é™ã‚’回é¿ã•ã‚Œã‚‹ãŠãã‚ŒãŒã‚ã‚‹ãŸã‚ã€Javaファイルをアップロードã™ã‚‹ã“ã¨ã¯è¨±å¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。',
'upload-source' => 'アップロード先ã®ãƒ•ã‚¡ã‚¤ãƒ«',
'sourcefilename' => 'アップロード元ã®ãƒ•ã‚¡ã‚¤ãƒ«å:',
'sourceurl' => 'アップロード元ã®URL:',
@@ -1790,10 +1836,6 @@ file_uploadsã®è¨­å®šã‚’確èªã—ã¦ãã ã•ã„。',
'watchthisupload' => 'ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ウォッãƒ',
'filewasdeleted' => 'ã“ã®åå‰ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ä¸€åº¦ã‚¢ãƒƒãƒ—ロードã•ã‚Œã€ãã®å¾Œå‰Šé™¤ã•ã‚Œã¦ã„ã¾ã™ã€‚
å†åº¦ã‚¢ãƒƒãƒ—ロードã™ã‚‹å‰ã«$1を確èªã—ã¦ãã ã•ã„。',
-'upload-wasdeleted' => "'''警告:éŽåŽ»ã«å‰Šé™¤ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã‚’アップロードã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚'''
-
-ã“ã®ã¾ã¾ã‚¢ãƒƒãƒ—ロードを行ã†ã“ã¨ãŒé©åˆ‡ã‹ã©ã†ã‹ç¢ºèªã—ã¦ãã ã•ã„。
-å‚考ã¨ã—ã¦ä»¥ä¸‹ã«ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã®å‰Šé™¤è¨˜éŒ²ã‚’表示ã—ã¦ã„ã¾ã™ï¼š",
'filename-bad-prefix' => "アップロードã—よã†ã¨ã—ã¦ã„るファイルã®åå‰ãŒ'''「$1ã€'''ã‹ã‚‰å§‹ã¾ã£ã¦ã„ã¾ã™ãŒã€ã“ã‚Œã¯ãƒ‡ã‚¸ã‚¿ãƒ«ã‚«ãƒ¡ãƒ©ã«ã‚ˆã£ã¦è‡ªå‹•çš„ã«ä»˜ä¸Žã•ã‚Œã‚‹ã‚ˆã†ãªå…·ä½“性を欠ã„ãŸåå‰ã§ã™ã€‚
ファイルã®å†…容をより具体的ã«èª¬æ˜Žã™ã‚‹åå‰ã‚’使用ã—ã¦ãã ã•ã„。",
'filename-prefix-blacklist' => ' #<!-- ã“ã®è¡Œã¯ãã®ã¾ã¾ã«ã—ã¦ãŠã„ã¦ãã ã•ã„ --> <pre>
@@ -1832,12 +1874,29 @@ $1',
'upload-unknown-size' => 'サイズä¸æ˜Ž',
'upload-http-error' => 'HTTPエラー発生:$1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'ZIPã®ãƒã‚§ãƒƒã‚¯ã‚’è¡Œã£ãŸéš›ã«ã‚¨ãƒ©ãƒ¼ãŒæ¤œå‡ºã•ã‚Œã¾ã—ãŸã€‚',
+'zip-wrong-format' => '指定ã•ã‚ŒãŸãƒ•ã‚¡ã‚¤ãƒ«ã¯ZIPファイルã§ã¯ã‚ã‚Šã¾ã›ã‚“ã§ã—ãŸã€‚',
+'zip-bad' => 'ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ç ´æã—ã¦ã„ã‚‹ã‹è§£èª­ä¸èƒ½ã®ZIPファイルã§ã™ã€‚
+セキュリティã«ã¤ã„ã¦é©åˆ‡ã«æ¤œæŸ»ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。',
+'zip-unsupported' => 'ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯MediaWikiã§åˆ©ç”¨ã™ã‚‹ã“ã¨ãŒã§ããªã„ZIPå½¢å¼ã‚’使用ã—ãŸZIPファイルã§ã™ã€‚
+セキュリティã«ã¤ã„ã¦é©åˆ‡ã«æ¤œæŸ»ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“。',
+
+# Special:UploadStash
+'uploadstash' => '未公開アップロード',
+'uploadstash-summary' => 'ã“ã®ãƒšãƒ¼ã‚¸ã§ã¯ã€ã‚¢ãƒƒãƒ—ロードã•ã‚ŒãŸã€ã‚‚ã—ãã¯ã‚¢ãƒƒãƒ—ロード中ã®ã€ã‚¦ã‚£ã‚­ä¸Šã§ã¾ã å…¬é–‹ã•ã‚Œã¦ã„ãªã„ファイルを表示ã—ã¾ã™ã€‚ã“れらã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã€ã‚¢ãƒƒãƒ—ロードã—ãŸåˆ©ç”¨è€…以外閲覧ã§ãã¾ã›ã‚“。',
+'uploadstash-clear' => '未公開ファイルを消去',
+'uploadstash-nofiles' => '未公開ファイルã¯ã‚ã‚Šã¾ã›ã‚“。',
+'uploadstash-badtoken' => '実行ã™ã‚‹ã“ã¨ãŒã§ãã¾ã›ã‚“ã§ã—ãŸã€‚ã“ã‚Œã¯ã€ç·¨é›†ã™ã‚‹ãŸã‚ã®èªè¨¼ãŒç„¡åŠ¹ã«ãªã£ãŸãŸã‚ã§ã‚ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚å†åº¦ãŠè©¦ã—ãã ã•ã„。',
+'uploadstash-errclear' => 'ファイルã®æ¶ˆåŽ»ã«å¤±æ•—ã—ã¾ã—ãŸã€‚',
+'uploadstash-refresh' => 'ファイルã®ä¸€è¦§ã‚’æ›´æ–°',
+
# img_auth script messages
'img-auth-accessdenied' => 'アクセスãŒæ‹’å¦ã•ã‚Œã¾ã—ãŸ',
-'img-auth-nopathinfo' => 'PATH_INFOãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
+'img-auth-nopathinfo' => 'PATH_INFO ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
サーãƒãƒ¼ãŒã€ã“ã®æƒ…報を渡ã™ã‚ˆã†ã«æ§‹æˆã•ã‚Œã¦ã„ã¾ã›ã‚“。
-CGIベースã§ã€img_authã«å¯¾å¿œã§ããªã„å¯èƒ½æ€§ã‚‚ã‚ã‚Šã¾ã™ã€‚
-http://www.mediawiki.org/wiki/Manual:Image_Authorization ã‚’å‚ç…§ã—ã¦ãã ã•ã„。',
+CGI ベースã§ã‚ã‚‹ãŸã‚ã€img_auth ã«å¯¾å¿œã§ããªã„å¯èƒ½æ€§ã‚‚ã‚ã‚Šã¾ã™ã€‚
+[//www.mediawiki.org/wiki/Manual:Image_Authorization ç”»åƒã®èªå¯ã‚’å‚ç…§ã—ã¦ãã ã•ã„。]',
'img-auth-notindir' => 'è¦æ±‚ã•ã‚ŒãŸãƒ‘スã¯ã€è¨­å®šæ¸ˆã¿ã®ã‚¢ãƒƒãƒ—ロード用ディレクトリーã®ä¸­ã«ã‚ã‚Šã¾ã›ã‚“。',
'img-auth-badtitle' => '「$1ã€ã‹ã‚‰ã¯æœ‰åŠ¹ãªãƒšãƒ¼ã‚¸åを構築ã§ãã¾ã›ã‚“。',
'img-auth-nologinnWL' => 'ログインã—ã¦ãŠã‚‰ãšã€ã•ã‚‰ã«ã€Œ$1ã€ã¯ãƒ›ãƒ¯ã‚¤ãƒˆãƒªã‚¹ãƒˆã«å…¥ã£ã¦ã„ã¾ã›ã‚“。',
@@ -1915,7 +1974,7 @@ URLãŒæ­£ã—ã„ã‚‚ã®ã§ã‚ã‚‹ã‹ã€æŒ‡å®šã—ãŸã‚µã‚¤ãƒˆãŒç¾åœ¨ä½¿ç”¨å¯èƒ½ã
[[Special:WhatLinksHere/$2|完全ãªä¸€è¦§]]ã‚‚å‚ç…§ã—ã¦ãã ã•ã„。',
'nolinkstoimage' => 'ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¸ãƒªãƒ³ã‚¯ã—ã¦ã„るページã¯ã‚ã‚Šã¾ã›ã‚“。',
'morelinkstoimage' => 'ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¸ã®[[Special:WhatLinksHere/$1|リンク元を更ã«]]を表示ã™ã‚‹ã€‚',
-'redirectstofile' => '以下ã®{{PLURAL:$1|ファイル|$1ファイル}}ã¯ã€ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¸ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ã™ï¼š',
+'linkstoimage-redirect' => '$1 (リダイレクト) $2',
'duplicatesoffile' => '以下ã®$1ファイルãŒã€ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¨å†…容ãŒåŒä¸€ã§ã™ï¼ˆ[[Special:FileDuplicateSearch/$2|詳細]]):',
'sharedupload' => 'ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯$1ã®ã‚‚ã®ã§ã‚ã‚Šã€ä»–ã®ãƒ—ロジェクトã§ä½¿ç”¨ã•ã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚',
'sharedupload-desc-there' => 'ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯$1ã®ã‚‚ã®ã§ã‚ã‚Šã€ä»–ã®ãƒ—ロジェクトã§ä½¿ç”¨ã•ã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚
@@ -2006,19 +2065,20 @@ contenttype/subtypeã®å½¢å¼ã§æŒ‡å®šã—ã¦ãã ã•ã„(例:<tt>image/jpeg</
'statistics-users-active-desc' => 'éŽåŽ»$1{{PLURAL:$1|日間}}ã«ä½•ã‚‰ã‹ã®æ“作を行ã£ãŸåˆ©ç”¨è€…',
'statistics-mostpopular' => '最も閲覧ã•ã‚Œã¦ã„るページ',
-'disambiguations' => '曖昧ã•å›žé¿ãƒšãƒ¼ã‚¸',
+'disambiguations' => '曖昧ã•å›žé¿ãƒšãƒ¼ã‚¸ã«ãƒªãƒ³ã‚¯ã—ã¦ã„るページ',
'disambiguationspage' => 'Template:曖昧回é¿',
'disambiguations-text' => "以下ã®ãƒšãƒ¼ã‚¸ã¯'''曖昧ã•å›žé¿ãƒšãƒ¼ã‚¸'''ã¸ãƒªãƒ³ã‚¯ã—ã¦ã„ã¾ã™ã€‚
ã“れらã®ãƒšãƒ¼ã‚¸ã¯ã€ã‚ˆã‚Šé©ã—ãŸä¸»é¡Œã®ãƒšãƒ¼ã‚¸ã¸ãƒªãƒ³ã‚¯ã•ã‚Œã‚‹ã¹ãã§ã™ã€‚<br />
[[MediaWiki:Disambiguationspage]]ã‹ã‚‰ãƒªãƒ³ã‚¯ã•ã‚ŒãŸãƒ†ãƒ³ãƒ—レートを使用ã—ã¦ã„るページã¯ã€æ›–昧ã•å›žé¿ãƒšãƒ¼ã‚¸ã¨è¦‹ãªã•ã‚Œã¾ã™ã€‚",
-'doubleredirects' => '二é‡è»¢é€',
-'doubleredirectstext' => 'ã“ã‚Œã¯ä»–ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãƒšãƒ¼ã‚¸ã¸ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã®ä¸€è¦§ã§ã™ã€‚
+'doubleredirects' => '二é‡è»¢é€',
+'doubleredirectstext' => 'ã“ã‚Œã¯ä»–ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆãƒšãƒ¼ã‚¸ã¸ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã®ä¸€è¦§ã§ã™ã€‚
å„è¡Œã«ã¯ã€æœ€åˆã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã¨ã€ãã®è»¢é€å…ˆã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã€ãã®ã¾ãŸè»¢é€å…ˆã¸ã®ãƒªãƒ³ã‚¯ãŒè¡¨ç¤ºã•ã‚Œã¦ã„ã¾ã™ã€‚多ãã®å ´åˆã€æœ€çµ‚ã®è»¢é€å…ˆãŒæ­£ã—ã„転é€å…ˆã§ã‚ã‚Šã€æœ€åˆã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã¯ç›´æŽ¥æœ€å¾Œã®è»¢é€å…ˆã«å‘ã‘ã‚‹ã¹ãã§ã™ã€‚
<del>打ã¡æ¶ˆã—ç·š</del>ã®ã¯ã„ã£ãŸé …ç›®ã¯æ—¢ã«ä¿®æ­£ã•ã‚Œã¦ã„ã¾ã™ã€‚',
-'double-redirect-fixed-move' => '[[$1]]ãŒç§»å‹•ã•ã‚Œã¦ã„ã¾ã™ã€‚
+'double-redirect-fixed-move' => '[[$1]]ãŒç§»å‹•ã•ã‚Œã¦ã„ã¾ã™ã€‚
[[$2]]ã«è»¢é€ã•ã‚Œã¾ã™ã€‚',
-'double-redirect-fixer' => '転é€ä¿®æ­£ä¿‚',
+'double-redirect-fixed-maintenance' => '[[$1]]ã‹ã‚‰[[$2]]ã¸ã®äºŒé‡è»¢é€ã‚’修正ã—ã¾ã™ã€‚',
+'double-redirect-fixer' => '転é€ä¿®æ­£ä¿‚',
'brokenredirects' => 'è¿·å­ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆ',
'brokenredirectstext' => '以下ã®ãƒšãƒ¼ã‚¸ã¯ã€å­˜åœ¨ã—ãªã„ページã¸ã®ãƒªãƒ€ã‚¤ãƒ¬ã‚¯ãƒˆã§ã™ï¼š',
@@ -2095,6 +2155,7 @@ contenttype/subtypeã®å½¢å¼ã§æŒ‡å®šã—ã¦ãã ã•ã„(例:<tt>image/jpeg</
'pager-newer-n' => '以後ã®$1件',
'pager-older-n' => '以å‰ã®$1件',
'suppress' => '秘匿ã™ã‚‹',
+'querypage-disabled' => 'パフォーマンスã«æ‚ªå½±éŸ¿ã‚’与ãˆã‚‹ãŠãã‚ŒãŒã‚ã‚‹ãŸã‚ã€ã“ã®ç‰¹åˆ¥ãƒšãƒ¼ã‚¸ã¯ç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚',
# Book sources
'booksources' => '書ç±æƒ…å ±æº',
@@ -2104,8 +2165,8 @@ contenttype/subtypeã®å½¢å¼ã§æŒ‡å®šã—ã¦ãã ã•ã„(例:<tt>image/jpeg</
'booksources-invalid-isbn' => '指定ã•ã‚ŒãŸISBN番å·ã¯æœ‰åŠ¹ã§ã¯ãªã„よã†ã§ã™ã€‚å‚ç…§ã—ã¦ã„る情報æºã‹ã‚‰å†™ã—é–“é•ãˆã¦ã„ã¾ã›ã‚“ã‹ã€‚',
# Special:Log
-'specialloguserlabel' => '利用者å:',
-'speciallogtitlelabel' => 'ページå:',
+'specialloguserlabel' => '実行者:',
+'speciallogtitlelabel' => '対象(ページã¾ãŸã¯åˆ©ç”¨è€…):',
'log' => '記録',
'all-logs-page' => 'ã™ã¹ã¦ã®å…¬é–‹è¨˜éŒ²',
'alllogstext' => '{{SITENAME}}ã®å–å¾—å¯èƒ½ãªè¨˜éŒ²ãŒã¾ã¨ã‚ã¦è¡¨ç¤ºã•ã‚Œã¦ã„ã¾ã™ã€‚
@@ -2146,12 +2207,13 @@ contenttype/subtypeã®å½¢å¼ã§æŒ‡å®šã—ã¦ãã ã•ã„(例:<tt>image/jpeg</
'sp-deletedcontributions-contribs' => '投稿記録',
# Special:LinkSearch
-'linksearch' => '外部リンク',
+'linksearch' => '外部リンクã®æ¤œç´¢',
'linksearch-pat' => '検索パターン:',
'linksearch-ns' => 'åå‰ç©ºé–“:',
'linksearch-ok' => '検索',
-'linksearch-text' => '"*.wikipedia.org" ã®ã‚ˆã†ã«ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã‚’使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚<br />
-対応プロトコル:<tt>$1</tt>',
+'linksearch-text' => '"*.wikipedia.org" ã®ã‚ˆã†ã«ãƒ¯ã‚¤ãƒ«ãƒ‰ã‚«ãƒ¼ãƒ‰ã‚’使ã†ã“ã¨ãŒã§ãã¾ã™ã€‚
+å°‘ãªãã¨ã‚‚ã€"*.org" ã®ã‚ˆã†ãªãƒˆãƒƒãƒ—レベルドメインãŒå¿…è¦ã§ã™ã€‚<br />
+対応プロトコル: <tt>$1</tt> (ã“れらを検索ã«å«ã‚ãªã„ã§ãã ã•ã„)。',
'linksearch-line' => '$1 ㌠$2 ã‹ã‚‰ãƒªãƒ³ã‚¯ã•ã‚Œã¦ã„ã¾ã™',
'linksearch-error' => 'ワイルドカードã¯ãƒ›ã‚¹ãƒˆåã®å…ˆé ­ã§ã®ã¿ä½¿ç”¨ã§ãã¾ã™ã€‚',
@@ -2212,6 +2274,10 @@ contenttype/subtypeã®å½¢å¼ã§æŒ‡å®šã—ã¦ãã ã•ã„(例:<tt>image/jpeg</
'noemailtext' => 'ã“ã®åˆ©ç”¨è€…ã¯æœ‰åŠ¹ãªãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’登録ã—ã¦ã„ã¾ã›ã‚“。',
'nowikiemailtitle' => 'é›»å­ãƒ¡ãƒ¼ãƒ«ä¸è¨±å¯',
'nowikiemailtext' => 'ã“ã®åˆ©ç”¨è€…ã¯ä»–ã®åˆ©ç”¨è€…ã‹ã‚‰ãƒ¡ãƒ¼ãƒ«ã‚’å—ã‘å–らãªã„設定ã«ã—ã¦ã„ã¾ã™ã€‚',
+'emailnotarget' => 'å—信者ã®åˆ©ç”¨è€…åãŒå­˜åœ¨ã—ãªã„ã€ã‚ã‚‹ã„ã¯ç„¡åŠ¹ã§ã™ã€‚',
+'emailtarget' => 'å—信者ã®åˆ©ç”¨è€…åを入力ã—ã¦ãã ã•ã„',
+'emailusername' => '利用者å:',
+'emailusernamesubmit' => 'é€ä¿¡',
'email-legend' => '{{SITENAME}}ã®ä»–ã®åˆ©ç”¨è€…ã«é›»å­ãƒ¡ãƒ¼ãƒ«ã‚’é€ã‚‹',
'emailfrom' => '差出人:',
'emailto' => '宛先:',
@@ -2236,10 +2302,10 @@ contenttype/subtypeã®å½¢å¼ã§æŒ‡å®šã—ã¦ãã ã•ã„(例:<tt>image/jpeg</
'watchlistanontext' => 'ウォッãƒãƒªã‚¹ãƒˆã«å…¥ã£ã¦ã„る項目を表示ã¾ãŸã¯ç·¨é›†ã™ã‚‹ã«ã¯ã€$1ã—ã¦ãã ã•ã„。',
'watchnologin' => 'ログインã—ã¦ã„ã¾ã›ã‚“',
'watchnologintext' => 'ウォッãƒãƒªã‚¹ãƒˆã‚’変更ã™ã‚‹ãŸã‚ã«ã¯ã€[[Special:UserLogin|ログイン]]ã—ã¦ã„ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚',
-'addedwatch' => 'ウォッãƒãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã—ãŸ',
+'addwatch' => 'ウォッãƒãƒªã‚¹ãƒˆã«è¿½åŠ ',
'addedwatchtext' => "ページ 「[[:$1]]ã€ã‚’[[Special:Watchlist|ウォッãƒãƒªã‚¹ãƒˆ]]ã«è¿½åŠ ã—ã¾ã—ãŸã€‚
ã“ã®ãƒšãƒ¼ã‚¸ã¨ä»˜å±žã®ãƒˆãƒ¼ã‚¯ãƒšãƒ¼ã‚¸ã«å¤‰æ›´ãŒã‚ã£ãŸéš›ã«ã¯ã€ã‚¦ã‚©ãƒƒãƒãƒªã‚¹ãƒˆã«è¡¨ç¤ºã•ã‚Œã¾ã™ã€‚ã¾ãŸã€ã‚¦ã‚©ãƒƒãƒãƒªã‚¹ãƒˆã«ç™»éŒ²ã•ã‚Œã¦ã„るページã¯[[Special:RecentChanges|最近ã®æ›´æ–°ã®ä¸€è¦§]]ã«'''太字'''ã§è¡¨ç¤ºã•ã‚Œã€è¦‹ã¤ã‘ã‚„ã™ããªã‚Šã¾ã™ã€‚",
-'removedwatch' => 'ウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰é™¤åŽ»ã—ã¾ã—ãŸ',
+'removewatch' => 'ウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰é™¤åŽ»',
'removedwatchtext' => 'ページ「[[:$1]]ã€ã‚’[[Special:Watchlist|ウォッãƒãƒªã‚¹ãƒˆ]]ã‹ã‚‰é™¤åŽ»ã—ã¾ã—ãŸã€‚',
'watch' => 'ウォッãƒ',
'watchthispage' => 'ã“ã®ãƒšãƒ¼ã‚¸ã‚’ウォッãƒã™ã‚‹',
@@ -2260,8 +2326,9 @@ contenttype/subtypeã®å½¢å¼ã§æŒ‡å®šã—ã¦ãã ã•ã„(例:<tt>image/jpeg</
'watchlist-options' => 'ウォッãƒãƒªã‚¹ãƒˆã®ã‚ªãƒ—ション',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'ウォッãƒãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¦ã„ã¾ã™ãƒ»ãƒ»ãƒ»',
-'unwatching' => 'ウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰é™¤åŽ»ã—ã¦ã„ã¾ã™ãƒ»ãƒ»ãƒ»',
+'watching' => 'ウォッãƒãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¦ã„ã¾ã™ãƒ»ãƒ»ãƒ»',
+'unwatching' => 'ウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰é™¤åŽ»ã—ã¦ã„ã¾ã™ãƒ»ãƒ»ãƒ»',
+'watcherrortext' => 'ウォッãƒãƒªã‚¹ãƒˆã®ã€Œ$1ã€ã®è¨­å®šã‚’変更中ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚',
'enotif_mailer' => '{{SITENAME}} 通知メール',
'enotif_reset' => 'ã™ã¹ã¦ã®ãƒšãƒ¼ã‚¸ã‚’訪å•æ¸ˆã¿ã«ã™ã‚‹',
@@ -2292,16 +2359,16 @@ $NEWPAGE
--
メール通知ã®è¨­å®šã¯ã€æ¬¡ã®ãƒšãƒ¼ã‚¸ã‹ã‚‰å¤‰æ›´ã—ã¦ãã ã•ã„。
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
ウォッãƒãƒªã‚¹ãƒˆã®è¨­å®šã¯ã€æ¬¡ã®ãƒšãƒ¼ã‚¸ã‹ã‚‰å¤‰æ›´ã—ã¦ä¸‹ã•ã„。
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
ã“ã®ãƒšãƒ¼ã‚¸ã¯ã€æ¬¡ã®ãƒšãƒ¼ã‚¸ã§ã‚¦ã‚©ãƒƒãƒãƒªã‚¹ãƒˆã‹ã‚‰é™¤åŽ»ã™ã‚‹ã“ã¨ãŒå‡ºæ¥ã¾ã™ã€‚
$UNWATCHURL
ã”æ„見ã€ãŠå•ã„åˆã‚ã›ï¼š
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'ページを削除',
@@ -2317,7 +2384,7 @@ $UNWATCHURL
本当ã«ã“ã®æ“作を行ã„ãŸã„ã‹ã€æ“作ã®çµæžœã‚’ç†è§£ã—ã¦ã„ã‚‹ã‹ã€ãŠã‚ˆã³ã“ã®æ“作ãŒ[[{{MediaWiki:Policy-url}}|æ–¹é‡]]ã«å¾“ã£ã¦ã„ã‚‹ã‹ã©ã†ã‹ã€ç¢ºèªã‚’ã—ã¦ãã ã•ã„。',
'actioncomplete' => '完了ã—ã¾ã—ãŸ',
'actionfailed' => 'æ“作失敗',
-'deletedtext' => '「<nowiki>$1</nowiki>ã€ã¯å‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚
+'deletedtext' => '「$1ã€ã¯å‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚
最近ã®å‰Šé™¤ã«é–¢ã—ã¦ã¯ã€$2ã‚’å‚ç…§ã—ã¦ãã ã•ã„。',
'deletedarticle' => '「[[$1]]ã€ã‚’削除ã—ã¾ã—ãŸ',
'suppressedarticle' => '「[[$1]]ã€ã‚’隠蔽ã—ã¾ã—ãŸ',
@@ -2378,7 +2445,7 @@ $2ã«ã‚ˆã‚‹æœ€å¾Œã®ç‰ˆã¸å¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚',
'protect_expiry_invalid' => '有効期間ãŒä¸æ­£ã§ã™ã€‚',
'protect_expiry_old' => '有効期é™ãŒéŽåŽ»ã®æ™‚刻ã§ã™ã€‚',
'protect-unchain-permissions' => '追加ä¿è­·ã‚ªãƒ—ションをロック解除',
-'protect-text' => "ページ「'''<nowiki>$1</nowiki>'''ã€ã«å¯¾ã™ã‚‹ä¿è­·ãƒ¬ãƒ™ãƒ«ã®è¡¨ç¤ºã¨æ“作ãŒã§ãã¾ã™ã€‚",
+'protect-text' => "ページ「'''$1'''ã€ã«å¯¾ã™ã‚‹ä¿è­·ãƒ¬ãƒ™ãƒ«ã®è¡¨ç¤ºã¨æ“作ãŒã§ãã¾ã™ã€‚",
'protect-locked-blocked' => "ブロック中ã¯ã€ä¿è­·ãƒ¬ãƒ™ãƒ«ã‚’変更ã§ãã¾ã›ã‚“。
ページ'''$1'''ã®ç¾åœ¨ã®çŠ¶æ…‹ã¯ä»¥ä¸‹ã®é€šã‚Šã§ã™ï¼š",
'protect-locked-dblock' => "使用中ã®ã§ãƒ‡ãƒ¼ã‚¿ãƒ™ãƒ¼ã‚¹ãŒç¾åœ¨ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã‚‹ãŸã‚ã€ä¿è­·ãƒ¬ãƒ™ãƒ«ã‚’変更ã§ãã¾ã›ã‚“。
@@ -2434,8 +2501,7 @@ $2ã«ã‚ˆã‚‹æœ€å¾Œã®ç‰ˆã¸å¤‰æ›´ã•ã‚Œã¾ã—ãŸã€‚',
ä¿å­˜ç‰ˆã¯å®šæœŸçš„ã«æ¶ˆåŽ»ã•ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚',
'undelete-fieldset-title' => '削除ã•ã‚ŒãŸç‰ˆã®å¾©å…ƒ',
'undeleteextrahelp' => "ã™ã¹ã¦ã®ç‰ˆã‚’復元ã™ã‚‹å ´åˆã¯ã€ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚’ã©ã‚Œã‚‚é¸æŠžã—ã¦ã„ãªã„状態ã§'''''{{int:undeletebtn}}'''''をクリックã—ã¦ãã ã•ã„。
-特定ã®ç‰ˆã‚’復帰ã™ã‚‹å ´åˆã¯ã€å¾©å¸°ã™ã‚‹ç‰ˆã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚’é¸æŠžã—ãŸçŠ¶æ…‹ã§'''''{{int:undeletebtn}}'''''をクリックã—ã¦ãã ã•ã„。
-'''''{{int:undeletereset}}'''''をクリックã™ã‚‹ã¨ã€ã‚³ãƒ¡ãƒ³ãƒˆæ¬„ã¨å…¨ã¦ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ãŒæ¶ˆåŽ»ã•ã‚Œã¾ã™ã€‚",
+特定ã®ç‰ˆã‚’復帰ã™ã‚‹å ´åˆã¯ã€å¾©å¸°ã™ã‚‹ç‰ˆã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚’é¸æŠžã—ãŸçŠ¶æ…‹ã§'''''{{int:undeletebtn}}'''''をクリックã—ã¦ãã ã•ã„。",
'undeleterevisions' => '$1版ãŒä¿å­˜ã•ã‚Œã¦ã„ã¾ã™',
'undeletehistory' => 'ページã®å¾©å¸°ã‚’è¡Œã†ã¨ã€ã™ã¹ã¦ã®ç‰¹å®šç‰ˆãŒå±¥æ­´ã«å¾©å¸°ã—ã¾ã™ã€‚ページãŒå‰Šé™¤ã•ã‚ŒãŸå¾Œã«ã€åŒã˜åå‰ã§æ–°ã—ã„ページãŒä½œæˆã•ã‚Œã¦ã„ãŸå ´åˆã€å¾©å¸°ã—ãŸç‰¹å®šç‰ˆã¯ã€ãã®å‰ã®å±¥æ­´ã¨ã—ã¦å‡ºç¾ã—ã¾ã™ã€‚',
'undeleterevdel' => '復帰ã—ãŸçµæžœã€ç‰ˆæŒ‡å®šå‰Šé™¤ã•ã‚Œã¦ã„るページã¾ãŸã¯ãƒ•ã‚¡ã‚¤ãƒ«ã®ç‰ˆãŒæœ€æ–°ã¨ãªã‚‹å ´åˆã€å¾©å¸°ã¯å®Ÿè¡Œã•ã‚Œã¾ã›ã‚“。
@@ -2480,9 +2546,12 @@ $1',
'undelete-show-file-submit' => 'ã¯ã„',
# Namespace form on various pages
-'namespace' => 'åå‰ç©ºé–“:',
-'invert' => 'é¸æŠžã—ãŸã‚‚ã®ã‚’除ã',
-'blanknamespace' => '(標準)',
+'namespace' => 'åå‰ç©ºé–“:',
+'invert' => 'é¸æŠžã—ãŸã‚‚ã®ã‚’除ã',
+'tooltip-invert' => 'é¸æŠžã—ãŸåå‰ç©ºé–“(ãŠã‚ˆã³ã€ãƒã‚§ãƒƒã‚¯ã•ã‚Œã¦ã„ã‚‹å ´åˆã€é–¢é€£ã¥ã‘られãŸåå‰ç©ºé–“)ã®ãƒšãƒ¼ã‚¸ã®å¤‰æ›´ã‚’éžè¡¨ç¤ºã«ã™ã‚‹ã«ã¯ã€ã“ã®ãƒã‚§ãƒƒã‚¯ãƒœãƒƒã‚¯ã‚¹ã‚’オンã«ã—ã¾ã™ã€‚',
+'namespace_association' => '対応付ã‘られãŸåå‰ç©ºé–“',
+'tooltip-namespace_association' => 'é¸æŠžã—ãŸåå‰ç©ºé–“ã«é–¢é€£ä»˜ã‘られã¦ã„ã‚‹ã€è­°è«–ページã¾ãŸã¯å¯¾è±¡ã®åå‰ç©ºé–“ã‚‚å«ã‚ã‚‹ã«ã¯ã€ã“ã®ãƒœãƒƒã‚¯ã‚¹ã‚’ãƒã‚§ãƒƒã‚¯',
+'blanknamespace' => '(標準)',
# Contributions
'contributions' => '利用者ã®æŠ•ç¨¿è¨˜éŒ²',
@@ -2532,13 +2601,15 @@ $1',
'whatlinkshere-filters' => '絞り込ã¿',
# Block/unblock
+'autoblockid' => '自動ブロック #$1',
+'block' => '利用者をブロック',
+'unblock' => '利用者ã®ãƒ–ロックを解除',
'blockip' => '利用者をブロック',
'blockip-title' => '利用者ã®ãƒ–ロック',
'blockip-legend' => '利用者をブロック',
'blockiptext' => '以下ã®ãƒ•ã‚©ãƒ¼ãƒ ã‚’使用ã—ã¦ã€æŒ‡å®šã—ãŸåˆ©ç”¨è€…ã‚„IPアドレスã‹ã‚‰ã®æ›¸ãè¾¼ã¿ã‚¢ã‚¯ã‚»ã‚¹ãƒ–ロックã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
ã“ã®ã‚ˆã†ãªæŽªç½®ã¯ã€è’らã—ã‹ã‚‰ã®é˜²å¾¡ã®ãŸã‚ã«ã®ã¿è¡Œã‚れるã¹ãã§ã€ã¾ãŸ[[{{MediaWiki:Policy-url}}|æ–¹é‡]]ã«æ²¿ã£ãŸã‚‚ã®ã§ã‚ã‚‹ã¹ãã§ã™ã€‚
以下ã«ãƒ–ロックã®ç†ç”±ã‚’具体的ã«æ›¸ã„ã¦ãã ã•ã„(例ãˆã°ã€è’らã•ã‚ŒãŸãƒšãƒ¼ã‚¸ã¸ã®è¨€åŠãªã©ï¼‰ã€‚',
-'ipaddress' => 'IPアドレス:',
'ipadressorusername' => 'IPアドレスã¾ãŸã¯åˆ©ç”¨è€…å:',
'ipbexpiry' => '有効期é™ï¼š',
'ipbreason' => 'ç†ç”±ï¼š',
@@ -2551,7 +2622,7 @@ $1',
** å¨åœ§çš„ãªæ…‹åº¦/å«ŒãŒã‚‰ã›
** 複数アカウントã®ä¸æ­£åˆ©ç”¨
** ä¸é©åˆ‡ãªåˆ©ç”¨è€…å',
-'ipbanononly' => '匿å利用者ã®ã¿ãƒ–ロック',
+'ipb-hardblock' => 'ログインã—ã¦ã„る利用者ã«ã‚ˆã‚‹ã“ã®IPアドレスã‹ã‚‰ã®ç·¨é›†ã‚’ä¸è¨±å¯',
'ipbcreateaccount' => 'アカウント作æˆã‚’ç¦æ­¢ã™ã‚‹',
'ipbemailban' => 'メールé€ä¿¡ã‚’防止',
'ipbenableautoblock' => 'ã“ã®åˆ©ç”¨è€…ãŒæœ€å¾Œã«ä½¿ç”¨ã—ãŸIPアドレスã¨ã€å¾Œã«ç·¨é›†ã—よã†ã¨ã—ãŸIPアドレスを自動的ã«ãƒ–ロック',
@@ -2562,12 +2633,15 @@ $1',
'ipbotherreason' => 'ä»–ã®ã€ã¾ãŸã¯è¿½åŠ ã®ç†ç”±ï¼š',
'ipbhidename' => '利用者åを編集履歴やå„種一覧ã‹ã‚‰ç§˜åŒ¿ã™ã‚‹',
'ipbwatchuser' => 'ã“ã®åˆ©ç”¨è€…ã®åˆ©ç”¨è€…ページã¨ãƒˆãƒ¼ã‚¯ãƒšãƒ¼ã‚¸ã‚’ウォッãƒã™ã‚‹',
-'ipballowusertalk' => 'ã“ã®åˆ©ç”¨è€…ã«å¯¾ã—ã¦ã€ãƒ–ロック中ã®è‡ªèº«ã®ãƒˆãƒ¼ã‚¯ãƒšãƒ¼ã‚¸ç·¨é›†ã‚’許å¯',
+'ipb-disableusertalk' => 'ã“ã®åˆ©ç”¨è€…ãŒãƒ–ロック中ã«è‡ªèº«ã®ãƒˆãƒ¼ã‚¯ãƒšãƒ¼ã‚¸ã‚’編集ã™ã‚‹ã“ã¨ã‚’ä¸è¨±å¯',
'ipb-change-block' => 'ã“れらã®è¨­å®šã§ã€åˆ©ç”¨è€…ã‚’å†ã³ãƒ–ロック',
+'ipb-confirm' => 'ブロックã®ç¢ºèª',
'badipaddress' => 'ä¸æ­£ãªIPアドレス',
'blockipsuccesssub' => 'ブロックã—ã¾ã—ãŸ',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]をブロックã—ã¾ã—ãŸã€‚<br />
[[Special:IPBlockList|投稿ブロック中ã®åˆ©ç”¨è€…ã‚„IPアドレス]]ã‚’å‚ç…§ã—ã¦ãã ã•ã„。',
+'ipb-blockingself' => '自分自身をブロックã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚本当ã«å®Ÿè¡Œã—ã¾ã™ã‹ã€‚',
+'ipb-confirmhideuser' => '利用者åã®ç§˜åŒ¿ã‚’有効ã«ã—ã¦ãƒ–ロックã—よã†ã¨ã—ã¦ã„ã¾ã™ã€‚実行ã™ã‚‹ã¨ã€ã™ã¹ã¦ã®ãƒªã‚¹ãƒˆã‚„ログã«ãŠã„ã¦åˆ©ç”¨è€…åãŒéžè¡¨ç¤ºã«ãªã‚Šã¾ã™ã€‚本当ã«ã“ã‚Œã§ã‚ˆã‚ã—ã„ã§ã™ã‹ã€‚',
'ipb-edit-dropdown' => 'ブロックç†ç”±ã‚’編集ã™ã‚‹',
'ipb-unblock-addr' => '$1ã®ãƒ–ロックを解除',
'ipb-unblock' => '利用者ã¾ãŸã¯IPアドレスã®ãƒ–ロックを解除ã™ã‚‹',
@@ -2577,17 +2651,23 @@ $1',
'unblockiptext' => '以下ã®ãƒ•ã‚©ãƒ¼ãƒ ã§åˆ©ç”¨è€…ã¾ãŸã¯IPアドレスã®æŠ•ç¨¿ãƒ–ロックを解除ã§ãã¾ã™ã€‚',
'ipusubmit' => 'ã“ã®æŠ•ç¨¿ãƒ–ロックを解除',
'unblocked' => '[[User:$1|$1]]ã®ãƒ–ロックを解除ã—ã¾ã—ãŸ',
+'unblocked-range' => '$1ã®ãƒ–ロックã¯è§£é™¤ã•ã‚Œã¦ã„ã¾ã™',
'unblocked-id' => 'ブロック$1ã¯é™¤åŽ»ã•ã‚Œã¾ã—ãŸ',
+'blocklist' => 'ブロック中ã®åˆ©ç”¨è€…',
'ipblocklist' => 'ブロック中ã®åˆ©ç”¨è€…',
'ipblocklist-legend' => 'ブロック中ã®åˆ©ç”¨è€…を検索',
-'ipblocklist-username' => '利用者åã¾ãŸã¯IPアドレス:',
-'ipblocklist-sh-userblocks' => 'アカウントã®ãƒ–ロックを$1',
-'ipblocklist-sh-tempblocks' => '一時ブロックを$1',
-'ipblocklist-sh-addressblocks' => 'å˜ä¸€IPã®ãƒ–ロックを$1',
+'blocklist-userblocks' => 'アカウントã®ãƒ–ロックをéžè¡¨ç¤º',
+'blocklist-tempblocks' => '有期ブロックをéžè¡¨ç¤º',
+'blocklist-addressblocks' => 'å˜ä¸€IPã®ãƒ–ロックをéžè¡¨ç¤º',
+'blocklist-timestamp' => 'タイムスタンプ',
+'blocklist-target' => '対象',
+'blocklist-expiry' => '期é™',
+'blocklist-by' => 'ブロックã—ãŸç®¡ç†è€…',
+'blocklist-params' => 'ブロックã®ãƒ‘ラメータ',
+'blocklist-reason' => 'ç†ç”±',
'ipblocklist-submit' => '検索',
'ipblocklist-localblock' => 'ローカルã§ã®ãƒ–ロック',
'ipblocklist-otherblocks' => 'ãã®ä»–ã®{{PLURAL:$1|ブロック}}',
-'blocklistline' => '$1ã«$2ãŒ$3をブロック($4)',
'infiniteblock' => '無期é™',
'expiringblock' => '$1$2ã«è§£é™¤',
'anononlyblock' => '匿åã®ã¿',
@@ -2612,7 +2692,7 @@ $1ã®ãƒ–ロックã®ç†ç”±ã¯ã€Œ$2ã€ã§ã™ã€‚',
'reblock-logentry' => '[[$1]]ブロック設定を$2ã«å¤‰æ›´ã—ã¾ã—ãŸã€‚ブロックã®è©³ç´°$3',
'blocklogtext' => 'ã“ã®ãƒšãƒ¼ã‚¸ã¯åˆ©ç”¨è€…ã®ãƒ–ロックã¨è§£é™¤ã®è¨˜éŒ²ã§ã™ã€‚
自動的ã«ãƒ–ロックã•ã‚ŒãŸIPアドレスã¯è¡¨ç¤ºã•ã‚Œã¦ã„ã¾ã›ã‚“。
-ç¾æ™‚点ã§æœ‰åŠ¹ãªãƒ–ロックã¯[[Special:IPBlockList|ブロックã®ä¸€è¦§]]ã‚’ã”覧ãã ã•ã„。',
+ç¾æ™‚点ã§æœ‰åŠ¹ãªãƒ–ロックã¯[[Special:BlockList|ブロックã®ä¸€è¦§]]ã‚’ã”覧ãã ã•ã„。',
'unblocklogentry' => '$1ã®ãƒ–ロックを解除ã—ã¾ã—ãŸ',
'block-log-flags-anononly' => '匿å利用者ã®ã¿',
'block-log-flags-nocreate' => 'アカウント作æˆã®ãƒ–ロック',
@@ -2626,10 +2706,10 @@ $1ã®ãƒ–ロックã®ç†ç”±ã¯ã€Œ$2ã€ã§ã™ã€‚',
'ipb_expiry_temp' => '利用者å秘匿ã®ãƒ–ロックã¯ã€ç„¡æœŸé™ãƒ–ロックã«ãªã‚Šã¾ã™ã€‚',
'ipb_hide_invalid' => 'ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã‚’秘匿ã§ãã¾ã›ã‚“。編集回数ãŒéžå¸¸ã«å¤šã„ãŸã‚ã ã¨æ€ã‚ã‚Œã¾ã™ã€‚',
'ipb_already_blocked' => '「$1ã€ã¯æ—¢ã«ãƒ–ロックã•ã‚Œã¦ã„ã¾ã™',
-'ipb-needreblock' => '== ã™ã§ã«ãƒ–ロックã•ã‚Œã¦ã„ã¾ã™ ==
-$1ã¯ã€ã™ã§ã«ãƒ–ロックã•ã‚Œã¦ã„ã¾ã™ã€‚
+'ipb-needreblock' => '$1ã¯ã€ã™ã§ã«ãƒ–ロックã•ã‚Œã¦ã„ã¾ã™ã€‚
設定を変更ã—ã¾ã™ã‹ï¼Ÿ',
'ipb-otherblocks-header' => 'ãã®ä»–ã®{{PLURAL:$1|ブロック}}',
+'unblock-hideuser' => '利用者åãŒéš ã•ã‚Œã¦ã„ã‚‹ãŸã‚ã€ã“ã®åˆ©ç”¨è€…ã®ãƒ–ロックを解除ã§ãã¾ã›ã‚“。',
'ipb_cant_unblock' => 'エラー:ブロックID$1ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。
ブロックãŒæ—¢ã«è§£é™¤ã•ã‚Œã¦ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚',
'ipb_blocked_as_range' => 'エラー:IPアドレス$1ã¯ç›´æŽ¥ãƒ–ロックã•ã‚Œã¦ãŠã‚‰ãšã€ãƒ–ロックを解除ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚
@@ -2671,6 +2751,7 @@ hideuser権é™ã‚’æŒã£ã¦ã„ãªã„ãŸã‚ã€ã“ã®åˆ©ç”¨è€…ã®ãƒ–ロックを閲
'lockfilenotwritable' => 'データベースã®ãƒ­ãƒƒã‚¯ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ›¸ãè¾¼ã¿ä¸å¯ã§ã™ã€‚
データベースをロックã¾ãŸã¯è§£é™¤ã™ã‚‹ã«ã¯ã€ã‚¦ã‚§ãƒ–サーãƒãƒ¼ã«ã‚ˆã‚Šæ›¸ãè¾¼ã¿å¯èƒ½ã§ã‚ã‚‹å¿…è¦ãŒã‚ã‚Šã¾ã™ã€‚',
'databasenotlocked' => 'データベースã¯ãƒ­ãƒƒã‚¯ã•ã‚Œã¦ã„ã¾ã›ã‚“。',
+'lockedbyandtime' => '($1 ㌠$2 $3 ã‹ã‚‰)',
# Move page
'move-page' => '「$1ã€ã®ç§»å‹•',
@@ -2792,7 +2873,7 @@ hideuser権é™ã‚’æŒã£ã¦ã„ãªã„ãŸã‚ã€ã“ã®åˆ©ç”¨è€…ã®ãƒ–ロックを閲
'allmessagesdefault' => '既定ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸æ–‡',
'allmessagescurrent' => 'ç¾åœ¨ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸æ–‡',
'allmessagestext' => 'ã“ã‚Œã¯MediaWikiåå‰ç©ºé–“ã§åˆ©ç”¨å¯èƒ½ãªã‚·ã‚¹ãƒ†ãƒ ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ä¸€è¦§ã§ã™ã€‚
-一般的ãªMediaWikiã®åœ°åŸŸåŒ–ã«è²¢çŒ®ã—ãŸã„å ´åˆã¯ã€[http://www.mediawiki.org/wiki/Localisation MediaWikiã®åœ°åŸŸåŒ–]ã‚„[http://translatewiki.net?setlang=ja translatewiki.net]を訪れã¦ã¿ã¦ãã ã•ã„。',
+一般的ãªMediaWikiã®åœ°åŸŸåŒ–ã«è²¢çŒ®ã—ãŸã„å ´åˆã¯ã€[//www.mediawiki.org/wiki/Localisation MediaWikiã®åœ°åŸŸåŒ–]ã‚„[//translatewiki.net?setlang=ja translatewiki.net]を訪れã¦ã¿ã¦ãã ã•ã„。',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''ãŒç„¡åŠ¹ãªã®ã§ã€ã“ã®ãƒšãƒ¼ã‚¸ã‚’使ã†ã“ã¨ã¯ã§ãã¾ã›ã‚“。",
'allmessages-filter-legend' => '絞り込ã¿',
'allmessages-filter' => '変更状態ã«ã‚ˆã‚Šçµžã‚Šè¾¼ã‚€ï¼š',
@@ -2935,35 +3016,42 @@ hideuser権é™ã‚’æŒã£ã¦ã„ãªã„ãŸã‚ã€ã“ã®åˆ©ç”¨è€…ã®ãƒ–ロックを閲
'tooltip-summary' => '短ã„è¦ç´„を入力ã—ã¦ãã ã•ã„',
# Stylesheets
-'common.css' => '/* ã“ã“ã«æ›¸ã„ãŸCSSã¯ã™ã¹ã¦ã®å¤–装ã«å映ã•ã‚Œã¾ã™ */',
-'standard.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰å¤–装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
-'nostalgia.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒŽã‚¹ã‚¿ãƒ«ã‚¸ã‚¢å¤–装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
-'cologneblue.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ã‚±ãƒ«ãƒ³ãƒ–ルー外装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
-'monobook.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒ¢ãƒŽãƒ–ック外装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
-'myskin.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒžã‚¤ã‚¹ã‚­ãƒ³å¤–装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
-'chick.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒãƒƒã‚¯å¤–装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
-'simple.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ã‚·ãƒ³ãƒ—ル外装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
-'modern.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒ¢ãƒ€ãƒ³å¤–装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
-'vector.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒ™ã‚¯ã‚¿ãƒ¼å¤–装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
-'print.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯å°åˆ·å‡ºåŠ›ã«å½±éŸ¿ã—ã¾ã™ */',
-'handheld.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯$wgHandheldStyleã§è¨­å®šã•ã‚ŒãŸå¤–装ã«åŸºã¥ãæºå¸¯æ©Ÿå™¨ã«å½±éŸ¿ã—ã¾ã™ */',
+'common.css' => '/* ã“ã“ã«æ›¸ã„ãŸCSSã¯ã™ã¹ã¦ã®å¤–装ã«å映ã•ã‚Œã¾ã™ */',
+'standard.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰å¤–装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
+'nostalgia.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒŽã‚¹ã‚¿ãƒ«ã‚¸ã‚¢å¤–装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
+'cologneblue.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ã‚±ãƒ«ãƒ³ãƒ–ルー外装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
+'monobook.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒ¢ãƒŽãƒ–ック外装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
+'myskin.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒžã‚¤ã‚¹ã‚­ãƒ³å¤–装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
+'chick.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒãƒƒã‚¯å¤–装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
+'simple.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ã‚·ãƒ³ãƒ—ル外装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
+'modern.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒ¢ãƒ€ãƒ³å¤–装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
+'vector.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒ™ã‚¯ã‚¿ãƒ¼å¤–装ã®åˆ©ç”¨è€…ã«å½±éŸ¿ã—ã¾ã™ */',
+'print.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯å°åˆ·å‡ºåŠ›ã«å½±éŸ¿ã—ã¾ã™ */',
+'handheld.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯$wgHandheldStyleã§è¨­å®šã•ã‚ŒãŸå¤–装ã«åŸºã¥ãæºå¸¯æ©Ÿå™¨ã«å½±éŸ¿ã—ã¾ã™ */',
+'noscript.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯JavaScriptを無効ã«ã—ã¦ã„る利用者ã«å½±éŸ¿ã—ã¾ã™ */',
+'group-autoconfirmed.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯è‡ªå‹•æ‰¿èªã•ã‚ŒãŸåˆ©ç”¨è€…ã®ã¿ã«å½±éŸ¿ã—ã¾ã™ */',
+'group-bot.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒœãƒƒãƒˆã®ã¿ã«å½±éŸ¿ã—ã¾ã™ */',
+'group-sysop.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ç®¡ç†è€…ã®ã¿ã«å½±éŸ¿ã—ã¾ã™ */',
+'group-bureaucrat.css' => '/* ã“ã“ã«è¨˜è¿°ã—ãŸCSSã¯ãƒ“ューロクラットã®ã¿ã«å½±éŸ¿ã—ã¾ã™ */',
# Scripts
-'common.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ã™ã¹ã¦ã®ãƒšãƒ¼ã‚¸èª­ã¿è¾¼ã¿ã§ã™ã¹ã¦ã®åˆ©ç”¨è€…ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
-'standard.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰å¤–装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
-'nostalgia.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒŽã‚¹ã‚¿ãƒ«ã‚¸ã‚¢å¤–装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
-'cologneblue.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ã‚±ãƒ«ãƒ³ãƒ–ルー外装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
-'monobook.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒ¢ãƒŽãƒ–ック外装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
-'myskin.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒžã‚¤ã‚¹ã‚­ãƒ³å¤–装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
-'chick.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒãƒƒã‚¯å¤–装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
-'simple.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ã‚·ãƒ³ãƒ—ル外装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
-'modern.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒ¢ãƒ€ãƒ³å¤–装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
-'vector.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒ™ã‚¯ã‚¿ãƒ¼å¤–装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'common.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ã™ã¹ã¦ã®ãƒšãƒ¼ã‚¸èª­ã¿è¾¼ã¿ã§ã™ã¹ã¦ã®åˆ©ç”¨è€…ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'standard.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ã‚¹ã‚¿ãƒ³ãƒ€ãƒ¼ãƒ‰å¤–装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'nostalgia.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒŽã‚¹ã‚¿ãƒ«ã‚¸ã‚¢å¤–装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'cologneblue.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ã‚±ãƒ«ãƒ³ãƒ–ルー外装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'monobook.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒ¢ãƒŽãƒ–ック外装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'myskin.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒžã‚¤ã‚¹ã‚­ãƒ³å¤–装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'chick.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒãƒƒã‚¯å¤–装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'simple.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ã‚·ãƒ³ãƒ—ル外装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'modern.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒ¢ãƒ€ãƒ³å¤–装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'vector.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒ™ã‚¯ã‚¿ãƒ¼å¤–装を使用ã—ã¦ã„る利用者ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'group-autoconfirmed.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€è‡ªå‹•æ‰¿èªã•ã‚ŒãŸåˆ©ç”¨è€…ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'group-bot.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒœãƒƒãƒˆã®ã¿ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'group-sysop.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ç®¡ç†è€…ã®ã¿ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
+'group-bureaucrat.js' => '/* ã“ã“ã«ã‚ã‚‹ã™ã¹ã¦ã®JavaScriptã¯ã€ãƒ“ューロクラットã®ã¿ã«å¯¾ã—ã¦èª­ã¿è¾¼ã¾ã‚Œã¾ã™ */',
# Metadata
-'nodublincore' => 'ã“ã®ã‚µãƒ¼ãƒãƒ¼ã§ã¯Dublin Core RDFメタデータãŒç„¡åŠ¹ã«ãªã£ã¦ã„ã¾ã™ã€‚',
-'nocreativecommons' => 'ã“ã®ã‚µãƒ¼ãƒãƒ¼ã§ã¯ã‚¯ãƒªã‚¨ã‚¤ãƒ†ã‚£ãƒ–・コモンズã®RDFメタデータãŒç„¡åŠ¹åŒ–ã•ã‚Œã¦ã„ã¾ã™ã€‚',
-'notacceptable' => 'ウィキサーãƒãƒ¼ã¯ã€ä½¿ç”¨ä¸­ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒèª­ã‚ã‚‹å½¢å¼ã§ã®æƒ…報をã€æä¾›ã§ãã¾ã›ã‚“。',
+'notacceptable' => 'ウィキサーãƒãƒ¼ã¯ã€ä½¿ç”¨ä¸­ã®ã‚¯ãƒ©ã‚¤ã‚¢ãƒ³ãƒˆãŒèª­ã‚ã‚‹å½¢å¼ã§ã®æƒ…報をã€æä¾›ã§ãã¾ã›ã‚“。',
# Attribution
'anonymous' => '{{SITENAME}}ã®åŒ¿å{{PLURAL:$1|利用者}}',
@@ -2987,12 +3075,17 @@ hideuser権é™ã‚’æŒã£ã¦ã„ãªã„ãŸã‚ã€ã“ã®åˆ©ç”¨è€…ã®ãƒ–ロックを閲
'spam_blanking' => 'ã™ã¹ã¦ã®ç‰ˆãŒ$1ã¸ã®ãƒªãƒ³ã‚¯ã‚’å«ã‚“ã§ã„ã¾ã™ã€‚白紙化ã—ã¾ã™ã€‚',
# Info page
-'infosubtitle' => 'ページ情報',
-'numedits' => '編集数(ページ):$1',
-'numtalkedits' => '編集数(議論ページ):$1',
-'numwatchers' => 'ウォッãƒã—ã¦ã„る利用者数:$1',
-'numauthors' => '個別ã®è‘—者数(ページ):$1',
-'numtalkauthors' => '個別ã®è‘—者数(議論ページ):$1',
+'pageinfo-title' => '「$1ã€ã®æƒ…å ±',
+'pageinfo-header-edits' => '編集',
+'pageinfo-header-watchlist' => 'ウォッãƒãƒªã‚¹ãƒˆ',
+'pageinfo-header-views' => '表示',
+'pageinfo-subjectpage' => 'ページ',
+'pageinfo-talkpage' => 'トークページ',
+'pageinfo-watchers' => 'ウォッãƒãƒªã‚¹ãƒˆã«å…¥ã‚Œã¦ã„る利用者数',
+'pageinfo-edits' => '編集回数',
+'pageinfo-authors' => '投稿者数',
+'pageinfo-views' => '閲覧数',
+'pageinfo-viewsperedit' => '閲覧回数ã«å¯¾ã™ã‚‹ç·¨é›†å›žæ•°',
# Skin names
'skinname-standard' => 'クラシック',
@@ -3005,25 +3098,6 @@ hideuser権é™ã‚’æŒã£ã¦ã„ãªã„ãŸã‚ã€ã“ã®åˆ©ç”¨è€…ã®ãƒ–ロックを閲
'skinname-modern' => 'モダン',
'skinname-vector' => 'ベクター',
-# Math options
-'mw_math_png' => '常ã«PNGã§æç”»',
-'mw_math_simple' => 'ç°¡å˜ãªã‚‰HTMLã€ãれ以外ã¯PNG',
-'mw_math_html' => 'å¯èƒ½ãªã‚‰HTMLã€ãれ以外ã¯PNG',
-'mw_math_source' => 'TeXã®ã¾ã¾ï¼ˆãƒ†ã‚­ã‚¹ãƒˆãƒ–ラウザーå‘ã‘)',
-'mw_math_modern' => '最新ã®ãƒ–ラウザーã§ã®æŽ¨å¥¨',
-'mw_math_mathml' => 'å¯èƒ½ãªã‚‰MathML(試験中ã®æ©Ÿèƒ½ï¼‰',
-
-# Math errors
-'math_failure' => '構文解æžå¤±æ•—',
-'math_unknown_error' => 'ä¸æ˜Žãªã‚¨ãƒ©ãƒ¼',
-'math_unknown_function' => 'ä¸æ˜Žãªé–¢æ•°',
-'math_lexing_error' => 'å­—å¥è§£æžã‚¨ãƒ©ãƒ¼',
-'math_syntax_error' => '構文エラー',
-'math_image_error' => 'PNGã¸ã®å¤‰æ›ã«å¤±æ•—ã—ã¾ã—ãŸã€‚dvipng(もã—ãã¯dvipsã¨gsã¨convert)ãŠã‚ˆã³latexãŒæ­£ã—ãインストールã•ã‚Œã¦ã„ã‚‹ã‹ç¢ºèªã—ã¦ãã ã•ã„。',
-'math_bad_tmpdir' => 'æ•°å¼ä¸€æ™‚ディレクトリーã¸ã®æ›¸ãè¾¼ã¿ã¾ãŸã¯ä½œæˆãŒã§ãã¾ã›ã‚“',
-'math_bad_output' => 'æ•°å¼ä¸€æ™‚ディレクトリーã¸ã®æ›¸ãè¾¼ã¿ã¾ãŸã¯ä½œæˆãŒã§ãã¾ã›ã‚“',
-'math_notexvc' => 'texvc実行å¯èƒ½ãƒ—ログラムãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。math/READMEを読んã§è¨­å®šã—ã¦ãã ã•ã„。',
-
# Patrolling
'markaspatrolleddiff' => '巡回済ã¿ã«ã™ã‚‹',
'markaspatrolledtext' => 'ã“ã®ãƒšãƒ¼ã‚¸ã‚’巡回済ã¿ã«ã™ã‚‹',
@@ -3059,23 +3133,26 @@ $1',
'nextdiff' => 'æ–°ã—ã„編集→',
# Media information
-'mediawarning' => "'''警告:'''ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ‚ªæ„ã®ã‚るコードをå«ã‚“ã§ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚
+'mediawarning' => "'''警告:'''ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã¯æ‚ªæ„ã®ã‚るコードをå«ã‚“ã§ã„ã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚
実行ã™ã‚‹ã¨ã‚·ã‚¹ãƒ†ãƒ ãŒå±é™ºã«ã•ã‚‰ã•ã‚Œã‚‹å¯èƒ½æ€§ãŒã‚ã‚Šã¾ã™ã€‚",
-'imagemaxsize' => "ç”»åƒã®ã‚µã‚¤ã‚ºåˆ¶é™ï¼š<br />''(ファイルページã«å¯¾ã™ã‚‹ï¼‰''",
-'thumbsize' => 'サムãƒã‚¤ãƒ«ã®å¤§ãã•ï¼š',
-'widthheight' => '$1 × $2',
-'widthheightpage' => '$1×$2ã€$3ページ',
-'file-info' => 'ファイルサイズ:$1ã€MIMEタイプ:$2',
-'file-info-size' => '$1×$2ピクセルã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºï¼š$3ã€MIMEタイプ:$4',
-'file-nohires' => '<small>高解åƒåº¦ç‰ˆã¯ã‚ã‚Šã¾ã›ã‚“。</small>',
-'svg-long-desc' => 'SVGファイルã€$1×$2ピクセルã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºï¼š$3',
-'show-big-image' => '高解åƒåº¦ã§ã®ç”»åƒ',
-'show-big-image-thumb' => '<small>ã“ã®ãƒ—レビューã®ã‚µã‚¤ã‚ºï¼š$1×$2ピクセル</small>',
-'file-info-gif-looped' => 'ループã—ã¾ã™',
-'file-info-gif-frames' => '$1フレーム',
-'file-info-png-looped' => 'ç¹°ã‚Šè¿”ã—',
-'file-info-png-repeat' => '$1回å†ç”Ÿã—ã¾ã—ãŸ',
-'file-info-png-frames' => '$1フレーム',
+'imagemaxsize' => "ç”»åƒã®ã‚µã‚¤ã‚ºåˆ¶é™ï¼š<br />''(ファイルページã«å¯¾ã™ã‚‹ï¼‰''",
+'thumbsize' => 'サムãƒã‚¤ãƒ«ã®å¤§ãã•ï¼š',
+'widthheight' => '$1 × $2',
+'widthheightpage' => '$1×$2ã€$3ページ',
+'file-info' => 'ファイルサイズ:$1ã€MIMEタイプ:$2',
+'file-info-size' => '$1×$2ピクセルã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºï¼š$3ã€MIMEタイプ:$4',
+'file-info-size-pages' => '$1 × $2 ピクセルã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚º: $3ã€MIMEタイプ: $4ã€$5ページ{{PLURAL:$5}}。',
+'file-nohires' => '<small>高解åƒåº¦ç‰ˆã¯ã‚ã‚Šã¾ã›ã‚“。</small>',
+'svg-long-desc' => 'SVGファイルã€$1×$2ピクセルã€ãƒ•ã‚¡ã‚¤ãƒ«ã‚µã‚¤ã‚ºï¼š$3',
+'show-big-image' => '高解åƒåº¦ã§ã®ç”»åƒ',
+'show-big-image-preview' => '<small> ã“ã®ãƒ—レビューã®ã‚µã‚¤ã‚º: $1。</small>',
+'show-big-image-other' => '<small>ãã®ä»–ã®è§£åƒåº¦: $1。</small>',
+'show-big-image-size' => '$1 × $2 ピクセル',
+'file-info-gif-looped' => 'ループã—ã¾ã™',
+'file-info-gif-frames' => '$1フレーム',
+'file-info-png-looped' => 'ç¹°ã‚Šè¿”ã—',
+'file-info-png-repeat' => '$1回å†ç”Ÿã—ã¾ã—ãŸ',
+'file-info-png-frames' => '$1フレーム',
# Special:NewFiles
'newimages' => 'æ–°ã—ã„ファイルã®ã‚®ãƒ£ãƒ©ãƒªãƒ¼',
@@ -3110,39 +3187,44 @@ Variants for Chinese language
'variantname-zh-cn' => '中国簡体',
'variantname-zh-tw' => 'å°æ¹¾æ­£ä½“',
'variantname-zh-hk' => '香港正体',
-'variantname-zh-mo' => '中国(マカオ)',
+'variantname-zh-mo' => 'マカオ',
'variantname-zh-sg' => 'シンガãƒãƒ¼ãƒ«ç°¡ä½“',
-'variantname-zh-my' => '中国(マレーシア)',
+'variantname-zh-my' => 'マレーシア',
'variantname-zh' => '中文',
# Variants for Gan language
-'variantname-gan-hans' => 'ガガウズ(hans)',
-'variantname-gan-hant' => 'ガガウズ(hant)',
-'variantname-gan' => 'ガガウズ',
+'variantname-gan-hans' => 'hans',
+'variantname-gan-hant' => 'hant',
+'variantname-gan' => 'ガガウズ語',
# Variants for Serbian language
-'variantname-sr-ec' => 'セルビア(キリル)',
-'variantname-sr-el' => 'セルビア(ラテン)',
-'variantname-sr' => 'セルビア',
+'variantname-sr-ec' => 'セルビア語 (キリル文字)',
+'variantname-sr-el' => 'セルビア語 (ラテン文字)',
+'variantname-sr' => 'セルビア語',
# Variants for Kazakh language
-'variantname-kk-kz' => 'カザフ(カザフスタン)',
-'variantname-kk-tr' => 'カザフ(トルコ)',
-'variantname-kk-cn' => 'カザフ(中国)',
-'variantname-kk-cyrl' => 'カザフ(キリル)',
-'variantname-kk-latn' => 'カザフ(ラテン)',
-'variantname-kk-arab' => 'カザフ(アラブ)',
-'variantname-kk' => 'カザフ',
+'variantname-kk-kz' => 'カザフ語 (カザフスタン)',
+'variantname-kk-tr' => 'カザフ語 (トルコ)',
+'variantname-kk-cn' => 'カザフ語 (中国)',
+'variantname-kk-cyrl' => 'カザフ語 (キリル文字)',
+'variantname-kk-latn' => 'カザフ語 (ラテン文字)',
+'variantname-kk-arab' => 'カザフ語 (アラビア文字)',
+'variantname-kk' => 'カザフ語',
# Variants for Kurdish language
-'variantname-ku-arab' => 'クルド(アラブ)',
-'variantname-ku-latn' => 'クルド(ラテン)',
-'variantname-ku' => 'クルド',
+'variantname-ku-arab' => 'クルド語 (アラビア文字)',
+'variantname-ku-latn' => 'クルド語 (ラテン文字)',
+'variantname-ku' => 'クルド語',
# Variants for Tajiki language
-'variantname-tg-cyrl' => 'タジク(キリル)',
-'variantname-tg-latn' => 'タジク(ラテン)',
-'variantname-tg' => 'タジク',
+'variantname-tg-cyrl' => 'タジク語 (キリル文字)',
+'variantname-tg-latn' => 'タジク語 (ラテン文字)',
+'variantname-tg' => 'タジク語',
+
+# Variants for Inuktitut language
+'variantname-ike-cans' => 'イヌクティトゥット語 (カナダ先ä½æ°‘文字)',
+'variantname-ike-latn' => 'イヌクティトゥット語 (ラテン文字)',
+'variantname-iu' => 'イヌクティトゥット語',
# Metadata
'metadata' => 'メタデータ',
@@ -3158,7 +3240,13 @@ Variants for Chinese language
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'å¹…',
@@ -3173,13 +3261,11 @@ Variants for Chinese language
'exif-ycbcrpositioning' => 'Yã¨Cã®ä½ç½®',
'exif-xresolution' => '水平解åƒåº¦',
'exif-yresolution' => '垂直解åƒåº¦',
-'exif-resolutionunit' => 'Xã¨Y解åƒåº¦ã®å˜ä½',
'exif-stripoffsets' => 'ç”»åƒãƒ‡ãƒ¼ã‚¿ã®å ´æ‰€',
'exif-rowsperstrip' => 'ストリップã”ã¨ã®è¡Œæ•°',
'exif-stripbytecounts' => '圧縮ã•ã‚ŒãŸã‚¹ãƒˆãƒªãƒƒãƒ—ã”ã¨ã®ãƒã‚¤ãƒˆæ•°',
'exif-jpeginterchangeformat' => 'JPEGã®SOIã¸ã®ã‚ªãƒ•ã‚»ãƒƒãƒˆ',
'exif-jpeginterchangeformatlength' => 'JPEGデータã®ãƒã‚¤ãƒˆæ•°',
-'exif-transferfunction' => 'å†ç”ŸéšŽèª¿ã‚«ãƒ¼ãƒ–特性',
'exif-whitepoint' => 'å‚照白色点ã®è‰²åº¦åº§æ¨™å€¤',
'exif-primarychromaticities' => '原色ã®è‰²åº¦åº§æ¨™å€¤',
'exif-ycbcrcoefficients' => '色変æ›ãƒžãƒˆãƒªãƒƒã‚¯ã‚¹ä¿‚æ•°',
@@ -3198,7 +3284,6 @@ Variants for Chinese language
'exif-compressedbitsperpixel' => 'ç”»åƒåœ§ç¸®ãƒ¢ãƒ¼ãƒ‰',
'exif-pixelydimension' => 'ç”»åƒã®å¹…',
'exif-pixelxdimension' => 'ç”»åƒã®é«˜ã•',
-'exif-makernote' => 'メーカーノート',
'exif-usercomment' => '利用者ã®ã‚³ãƒ¡ãƒ³ãƒˆ',
'exif-relatedsoundfile' => '関連音声ファイル',
'exif-datetimeoriginal' => 'ç”»åƒãƒ‡ãƒ¼ã‚¿ç”Ÿæˆæ—¥æ™‚',
@@ -3212,7 +3297,6 @@ Variants for Chinese language
'exif-exposureprogram' => '露出プログラム',
'exif-spectralsensitivity' => 'スペクトル感度',
'exif-isospeedratings' => 'ISOスピードレート',
-'exif-oecf' => '光電変æ›é–¢æ•°',
'exif-shutterspeedvalue' => 'シャッタースピード',
'exif-aperturevalue' => '絞り値',
'exif-brightnessvalue' => '明るã•',
@@ -3225,7 +3309,6 @@ Variants for Chinese language
'exif-focallength' => 'レンズã®ç„¦ç‚¹è·é›¢',
'exif-subjectarea' => '主è¦è¢«å†™ä½“ã®ä½ç½®',
'exif-flashenergy' => 'フラッシュ強度',
-'exif-spatialfrequencyresponse' => '空間周波数応答',
'exif-focalplanexresolution' => '水平方å‘ã®ç„¦ç‚¹é¢è§£åƒåº¦',
'exif-focalplaneyresolution' => 'åž‚ç›´æ–¹å‘ã®ç„¦ç‚¹é¢è§£åƒåº¦',
'exif-focalplaneresolutionunit' => '焦点é¢è§£åƒåº¦ã®å˜ä½',
@@ -3234,7 +3317,6 @@ Variants for Chinese language
'exif-sensingmethod' => 'センサー方å¼',
'exif-filesource' => 'ファイルソース',
'exif-scenetype' => 'シーンタイプ',
-'exif-cfapattern' => 'CFAパターン',
'exif-customrendered' => 'ç”»åƒå‡¦ç†',
'exif-exposuremode' => '露出モード',
'exif-whitebalance' => 'ホワイトãƒãƒ©ãƒ³ã‚¹',
@@ -3279,11 +3361,77 @@ Variants for Chinese language
'exif-gpsareainformation' => 'GPSエリアå',
'exif-gpsdatestamp' => 'GPS測ä½æ—¥æ™‚',
'exif-gpsdifferential' => 'ディファレンシャル補正',
+'exif-jpegfilecomment' => 'JPEGファイルã®ã‚³ãƒ¡ãƒ³ãƒˆ',
+'exif-keywords' => 'キーワード',
+'exif-worldregioncreated' => 'ã“ã®å†™çœŸãŒæ’®ã‚‰ã‚ŒãŸå¤§é™¸ã‚„地域',
+'exif-countrycreated' => 'ã“ã®å†™çœŸãŒæ’®ã‚‰ã‚ŒãŸå›½',
+'exif-countrycodecreated' => 'ã“ã®å†™çœŸãŒæ’®ã‚‰ã‚ŒãŸå›½ã®å›½åコード',
+'exif-provinceorstatecreated' => 'ã“ã®å†™çœŸãŒæ’®ã‚‰ã‚ŒãŸå·žã‚„県',
+'exif-citycreated' => 'ã“ã®å†™çœŸãŒæ’®ã‚‰ã‚ŒãŸå¸‚町æ‘',
+'exif-sublocationcreated' => 'ã“ã®å†™çœŸãŒæ’®ã‚‰ã‚ŒãŸç”ºåや通りã®åå‰',
+'exif-worldregiondest' => '写ã£ã¦ã„る大陸や地域',
+'exif-countrydest' => '写ã£ã¦ã„る国',
+'exif-countrycodedest' => '写ã£ã¦ã„る国ã®å›½åコード',
+'exif-provinceorstatedest' => '写ã£ã¦ã„る州や県',
+'exif-citydest' => '写ã£ã¦ã„る市町æ‘',
+'exif-sublocationdest' => '写ã£ã¦ã„る町åや通りã®åå‰',
'exif-objectname' => '短ã„タイトル',
+'exif-specialinstructions' => 'å–扱ã„ã«é–¢ã™ã‚‹ç‰¹è¨˜äº‹é …',
+'exif-headline' => '見出ã—',
+'exif-credit' => '帰属/æ供者',
+'exif-source' => 'ソース',
+'exif-editstatus' => 'ç”»åƒã®ç·¨é›†ä¸Šã®çŠ¶æ…‹',
+'exif-urgency' => '緊急',
+'exif-fixtureidentifier' => 'フィクスãƒãƒ£å',
+'exif-locationdest' => '映ã£ã¦ã„る場所',
+'exif-locationdestcode' => '映ã£ã¦ã„る場所ã®ã‚³ãƒ¼ãƒ‰',
+'exif-objectcycle' => 'ã“ã®ãƒ¡ãƒ‡ã‚£ã‚¢ãƒ•ã‚¡ã‚¤ãƒ«ã«ã‚ˆã£ã¦æ„図ã•ã‚Œã¦ã„る時間帯',
+'exif-contact' => '連絡先情報',
+'exif-writer' => '記入者',
+'exif-languagecode' => '言語',
+'exif-iimversion' => 'IIM ãƒãƒ¼ã‚¸ãƒ§ãƒ³',
+'exif-iimcategory' => 'カテゴリー',
+'exif-iimsupplementalcategory' => '補足カテゴリー',
+'exif-datetimeexpires' => '使用期é™',
+'exif-datetimereleased' => 'åˆå…¬é–‹æ—¥',
+'exif-originaltransmissionref' => '原転é€ä½ç½®ã‚³ãƒ¼ãƒ‰',
+'exif-identifier' => '識別å­',
+'exif-lens' => '使用レンズ',
+'exif-serialnumber' => 'カメラã®ã‚·ãƒªã‚¢ãƒ«ç•ªå·',
+'exif-cameraownername' => 'カメラã®æ‰€æœ‰è€…',
+'exif-label' => 'ラベル',
+'exif-datetimemetadata' => 'メタデータã®æœ€çµ‚æ›´æ–°æ—¥',
+'exif-nickname' => 'ç”»åƒã®éžå…¬å¼å',
+'exif-rating' => '評価(5点満点)',
+'exif-rightscertificate' => '権利管ç†è¨¼æ˜Žæ›¸',
+'exif-copyrighted' => '著作権情報',
+'exif-copyrightowner' => '著作権者',
+'exif-usageterms' => '使用æ¡ä»¶',
+'exif-webstatement' => 'オンライン上ã®è‘—作権文',
+'exif-originaldocumentid' => '元文書ã®ä¸€æ„ãªè­˜åˆ¥å­',
+'exif-licenseurl' => '著作権ライセンス㮠URL',
+'exif-morepermissionsurl' => '代替ライセンス情報',
+'exif-attributionurl' => 'ã“ã®ä½œå“ã‚’å†åˆ©ç”¨ã™ã‚‹éš›ã«ã€æ¬¡ã®URLã«ãƒªãƒ³ã‚¯ã—ã¦ãã ã•ã„',
+'exif-preferredattributionname' => 'ã“ã®ä½œå“ã‚’å†åˆ©ç”¨ã™ã‚‹éš›ã«ã€æ¬¡ã®å¸°å±žè¡¨ç¤ºã‚’使ã£ã¦ãã ã•ã„',
+'exif-pngfilecomment' => 'PNGファイルã®ã‚³ãƒ¡ãƒ³ãƒˆ',
+'exif-disclaimer' => 'å…責事項',
+'exif-contentwarning' => 'コンテンツã«é–¢ã™ã‚‹è­¦å‘Š',
+'exif-giffilecomment' => 'GIFファイルã®ã‚³ãƒ¡ãƒ³ãƒˆ',
+'exif-intellectualgenre' => 'é …ç›®ã®ç¨®é¡ž',
+'exif-subjectnewscode' => '主題コード',
+'exif-scenecode' => 'IPTC シーンコード',
+'exif-event' => '映ã£ã¦ã„る事象',
+'exif-organisationinimage' => '映ã£ã¦ã„る組織',
+'exif-personinimage' => '映ã£ã¦ã„る人物',
+'exif-originalimageheight' => 'トリミングã•ã‚Œã‚‹å‰ã®ç”»åƒã®é«˜ã•',
+'exif-originalimagewidth' => 'トリミングã•ã‚Œã‚‹å‰ã®ç”»åƒã®å¹…',
# EXIF attributes
-'exif-compression-1' => 'éžåœ§ç¸®',
-'exif-compression-6' => 'JPEG圧縮',
+'exif-compression-1' => '無圧縮',
+'exif-compression-6' => 'JPEG (æ—§å¼)',
+
+'exif-copyrighted-true' => '著作権ã‚ã‚Š',
+'exif-copyrighted-false' => 'パブリック・ドメイン',
'exif-unknowndate' => 'ä¸æ˜Žãªæ—¥ä»˜',
@@ -3299,7 +3447,7 @@ Variants for Chinese language
'exif-planarconfiguration-1' => '点順次フォーマット',
'exif-planarconfiguration-2' => 'é¢é †æ¬¡ãƒ•ã‚©ãƒ¼ãƒžãƒƒãƒˆ',
-'exif-colorspace-ffff.h' => 'ãã®ä»–',
+'exif-colorspace-65535' => 'ãã®ä»–',
'exif-componentsconfiguration-0' => 'ãªã—',
@@ -3414,6 +3562,10 @@ Variants for Chinese language
'exif-gpslongitude-e' => 'æ±çµŒ',
'exif-gpslongitude-w' => '西経',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '海抜 $1 {{PLURAL:$1|メートル}}',
+'exif-gpsaltitude-below-sealevel' => '海抜マイナス $1 {{PLURAL:$1|メートル}}',
+
'exif-gpsstatus-a' => '測ä½ä¸­',
'exif-gpsstatus-v' => '未測ä½',
@@ -3425,21 +3577,70 @@ Variants for Chinese language
'exif-gpsspeed-m' => 'マイル毎時',
'exif-gpsspeed-n' => 'ノット',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'キロメートル',
+'exif-gpsdestdistance-m' => 'マイル',
+'exif-gpsdestdistance-n' => '海里',
+
+'exif-gpsdop-excellent' => '優秀 ($1)',
+'exif-gpsdop-good' => '良好 ($1)',
+'exif-gpsdop-moderate' => 'é©åº¦ ($1)',
+'exif-gpsdop-fair' => '中程度 ($1)',
+'exif-gpsdop-poor' => '劣悪 ($1)',
+
+'exif-objectcycle-a' => 'åˆå‰ä¸­ã®ã¿',
+'exif-objectcycle-p' => 'åˆå¾Œã®ã¿',
+'exif-objectcycle-b' => 'åˆå¾Œã¨åˆå‰ã®ä¸¡æ–¹',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => '真方ä½',
'exif-gpsdirection-m' => 'ç£æ–¹ä½',
+'exif-dc-contributor' => '貢献者',
+'exif-dc-coverage' => 'メディアã®ç©ºé–“çš„ã¾ãŸã¯æ™‚間的範囲',
+'exif-dc-date' => '日付',
+'exif-dc-publisher' => '公開者',
+'exif-dc-relation' => '関連メディア',
+'exif-dc-rights' => '権利',
+'exif-dc-source' => 'ソースメディア',
+'exif-dc-type' => 'メディアã®ç¨®é¡ž',
+
+'exif-rating-rejected' => 'å´ä¸‹',
+
+'exif-isospeedratings-overflow' => '65535 より大ãã„',
+
+'exif-iimcategory-ace' => '芸術ã€æ–‡åŒ–ã€å¨¯æ¥½',
+'exif-iimcategory-clj' => '犯罪ã¨æ³•å¾‹',
+'exif-iimcategory-dis' => 'ç½å®³ãƒ»äº‹æ•…',
+'exif-iimcategory-fin' => '経済ã¨ãƒ“ジãƒã‚¹',
+'exif-iimcategory-edu' => '教育',
+'exif-iimcategory-evn' => '環境',
+'exif-iimcategory-hth' => 'å¥åº·',
+'exif-iimcategory-hum' => '人々ã®èˆˆå‘³',
+'exif-iimcategory-lab' => '労åƒ',
+'exif-iimcategory-lif' => 'ライフスタイルã¨ãƒ¬ã‚¸ãƒ£ãƒ¼',
+'exif-iimcategory-pol' => '政治',
+'exif-iimcategory-rel' => 'å®—æ•™ã¨ä¿¡ä»°',
+'exif-iimcategory-sci' => '科学ã¨æŠ€è¡“',
+'exif-iimcategory-soi' => '社会å•é¡Œ',
+'exif-iimcategory-spo' => 'スãƒãƒ¼ãƒ„',
+'exif-iimcategory-war' => '戦争ã€ç´›äº‰ã€å‹•ä¹±',
+'exif-iimcategory-wea' => '天気',
+
+'exif-urgency-normal' => '通常 ($1)',
+'exif-urgency-low' => '低ㄠ($1)',
+'exif-urgency-high' => '高ㄠ($1)',
+'exif-urgency-other' => '利用者定義ã®å„ªå…ˆåº¦ ($1)',
+
# External editor support
'edit-externally' => '外部アプリケーションを使ã£ã¦ã“ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚’編集ã™ã‚‹',
-'edit-externally-help' => '(詳ã—ã„情報ã¯[http://www.mediawiki.org/wiki/Manual:External_editors 設定手順]ã‚’ã”覧ãã ã•ã„)',
+'edit-externally-help' => '(詳ã—ã„情報ã¯[//www.mediawiki.org/wiki/Manual:External_editors 設定手順]ã‚’ã”覧ãã ã•ã„)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ã™ã¹ã¦',
-'imagelistall' => 'ã™ã¹ã¦',
-'watchlistall2' => 'ã™ã¹ã¦',
-'namespacesall' => 'ã™ã¹ã¦',
-'monthsall' => 'ã™ã¹ã¦',
-'limitall' => 'ã™ã¹ã¦',
+'watchlistall2' => 'ã™ã¹ã¦',
+'namespacesall' => 'ã™ã¹ã¦',
+'monthsall' => 'ã™ã¹ã¦',
+'limitall' => 'ã™ã¹ã¦',
# E-mail address confirmation
'confirmemail' => 'メールアドレスã®ç¢ºèª',
@@ -3524,17 +3725,24 @@ $1',
'trackbackdeleteok' => 'トラックãƒãƒƒã‚¯ã¯æ­£å¸¸ã«å‰Šé™¤ã•ã‚Œã¾ã—ãŸã€‚',
# Delete conflict
-'deletedwhileediting' => "'''警告:'''ã“ã®ãƒšãƒ¼ã‚¸ãŒã€ç·¨é›†é–‹å§‹å¾Œã«å‰Šé™¤ã•ã‚Œã¾ã—ãŸï¼",
-'confirmrecreate' => "[[User:$1|$1]]([[User talk:$1|トーク]])ãŒã€ã“ã®ãƒšãƒ¼ã‚¸ã®ç·¨é›†é–‹å§‹å¾Œã«ã€ã“ã®ãƒšãƒ¼ã‚¸ã‚’ã€æ¬¡ã®ç†ç”±ã§å‰Šé™¤ã—ã¾ã—ãŸã€‚
+'deletedwhileediting' => "'''警告:'''ã“ã®ãƒšãƒ¼ã‚¸ãŒã€ç·¨é›†é–‹å§‹å¾Œã«å‰Šé™¤ã•ã‚Œã¾ã—ãŸï¼",
+'confirmrecreate' => "[[User:$1|$1]]([[User talk:$1|トーク]])ãŒã€ã“ã®ãƒšãƒ¼ã‚¸ã®ç·¨é›†é–‹å§‹å¾Œã«ã€ã“ã®ãƒšãƒ¼ã‚¸ã‚’ã€æ¬¡ã®ç†ç”±ã§å‰Šé™¤ã—ã¾ã—ãŸã€‚
: ''$2''
本当ã«ã“ã®ã¾ã¾ã“ã®ãƒšãƒ¼ã‚¸ã‚’å†ä½œæˆã—ã¦è‰¯ã„ã‹ç¢ºèªã—ã¦ãã ã•ã„。",
-'recreate' => 'å†ä½œæˆã™ã‚‹',
+'confirmrecreate-noreason' => 'ã‚ãªãŸã®ç·¨é›†ã‚’開始ã—ãŸå¾Œã€ã“ã®ãƒšãƒ¼ã‚¸ã‚’[[User:$1|$1]] ([[User talk:$1|トーク]])ãŒå‰Šé™¤ã—ã¾ã—ãŸã€‚本当ã«ã“ã®ãƒšãƒ¼ã‚¸ã‚’å†ä½œæˆã—ã¦ã„ã„ã®ã‹ã”確èªãã ã•ã„。',
+'recreate' => 'å†ä½œæˆã™ã‚‹',
# action=purge
'confirm_purge_button' => 'ã¯ã„',
'confirm-purge-top' => 'ページã®ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’破棄ã—ã¾ã™ã€‚よã‚ã—ã„ã§ã™ã‹ï¼Ÿ',
'confirm-purge-bottom' => 'ページã®ãƒ‘ージã¯ã€ã‚­ãƒ£ãƒƒã‚·ãƒ¥ã‚’破棄ã—ã€å¼·åˆ¶çš„ã«æœ€æ–°ã®ç‰ˆã‚’表示ã—ã¾ã™ã€‚',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'ã“ã®ãƒšãƒ¼ã‚¸ã‚’ウォッãƒãƒªã‚¹ãƒˆã«è¿½åŠ ã—ã¾ã™ã‹?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'ã“ã®ãƒšãƒ¼ã‚¸ã‚’ウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰é™¤åŽ»ã—ã¾ã™ã‹?',
+
# Separators for various lists, etc.
'comma-separator' => 'ã€',
'word-separator' => '',
@@ -3588,7 +3796,7 @@ $1',
'watchlistedit-normal-legend' => 'ウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰ãƒšãƒ¼ã‚¸åを除去',
'watchlistedit-normal-explain' => 'ウォッãƒãƒªã‚¹ãƒˆã«å…¥ã£ã¦ã„るページåãŒä»¥ä¸‹ã«è¡¨ç¤ºã•ã‚Œã¦ã„ã¾ã™ã€‚
ページåを除去ã™ã‚‹ã«ã¯ã€æ¨ªã«ã‚るボックスã«ãƒã‚§ãƒƒã‚¯ã‚’入れã€ã€Œ{{int:watchlistedit-normal-submit}}ã€ã‚’クリックã—ã¦ãã ã•ã„。
-ã¾ãŸã€[[Special:Watchlist/raw|ãã®ã¾ã¾ã®ä¸€è¦§ã§ç·¨é›†]]ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚',
+ã¾ãŸã€[[Special:EditWatchlist/raw|ãã®ã¾ã¾ã®ä¸€è¦§ã§ç·¨é›†]]ã™ã‚‹ã“ã¨ã‚‚ã§ãã¾ã™ã€‚',
'watchlistedit-normal-submit' => 'ページã®é™¤åŽ»',
'watchlistedit-normal-done' => 'ウォッãƒãƒªã‚¹ãƒˆã‹ã‚‰ $1{{PLURAL:$1|件}}を削除ã—ã¾ã—ãŸ:',
'watchlistedit-raw-title' => 'ウォッãƒãƒªã‚¹ãƒˆã‚’ãã®ã¾ã¾ç·¨é›†',
@@ -3596,7 +3804,7 @@ $1',
'watchlistedit-raw-explain' => 'ウォッãƒãƒªã‚¹ãƒˆã«å«ã¾ã‚Œã‚‹ãƒšãƒ¼ã‚¸åãŒä»¥ä¸‹ã«è¡¨ç¤ºã•ã‚Œã¦ãŠã‚Šã€ã“ã®ä¸€è¦§ã‹ã‚‰è¿½åŠ ã‚„除去ã§ãã¾ã™ã€‚
1è¡Œã«1ページåã§ã™ã€‚
完了ã—ãŸã‚‰ã€ã€Œ{{int:Watchlistedit-raw-submit}}ã€ã‚’クリックã—ã¦ãã ã•ã„。
-[[Special:Watchlist/edit|標準ã®ç·¨é›†ãƒšãƒ¼ã‚¸]]も利用ã§ãã¾ã™ã€‚',
+[[Special:EditWatchlist|標準ã®ç·¨é›†ãƒšãƒ¼ã‚¸]]も利用ã§ãã¾ã™ã€‚',
'watchlistedit-raw-titles' => 'ページå:',
'watchlistedit-raw-submit' => 'ウォッãƒãƒªã‚¹ãƒˆã‚’æ›´æ–°',
'watchlistedit-raw-done' => 'ウォッãƒãƒªã‚¹ãƒˆã‚’æ›´æ–°ã—ã¾ã—ãŸã€‚',
@@ -3671,33 +3879,33 @@ $1',
'duplicate-defaultsort' => "'''警告:'''既定ã®ä¸¦ã³æ›¿ãˆã‚­ãƒ¼ã€Œ$2ã€ãŒã€ãã®å‰ã«æ›¸ã‹ã‚Œã¦ã„る既定ã®ä¸¦ã³æ›¿ãˆã‚­ãƒ¼ã€Œ$1ã€ã‚’上書ãã—ã¦ã„ã¾ã™ã€‚",
# Special:Version
-'version' => 'ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±',
-'version-extensions' => 'インストール済ã¿æ‹¡å¼µæ©Ÿèƒ½',
-'version-specialpages' => '特別ページ',
-'version-parserhooks' => '構文解æžãƒ•ãƒƒã‚¯',
-'version-variables' => '変数',
-'version-skins' => 'スキン',
-'version-other' => 'ãã®ä»–',
-'version-mediahandlers' => 'メディアãƒãƒ³ãƒ‰ãƒ©ãƒ¼',
-'version-hooks' => 'フック',
-'version-extension-functions' => '拡張機能関数',
-'version-parser-extensiontags' => '構文解æžæ‹¡å¼µæ©Ÿèƒ½ã‚¿ã‚°',
-'version-parser-function-hooks' => '構文解æžé–¢æ•°ãƒ•ãƒƒã‚¯',
-'version-skin-extension-functions' => '外装拡張機能関数',
-'version-hook-name' => 'フックå',
-'version-hook-subscribedby' => '使用個所',
-'version-version' => '(ãƒãƒ¼ã‚¸ãƒ§ãƒ³$1)',
-'version-license' => 'ライセンス',
-'version-poweredby-credits' => "ã“ã®ã‚¦ã‚£ã‚­ã¯ã€'''[http://www.mediawiki.org/ MediaWiki]'''(copyright © 2001-$1 $2)ã§å‹•ä½œã—ã¦ã„ã¾ã™ã€‚",
-'version-poweredby-others' => 'ãã®ä»–',
-'version-license-info' => 'MediaWikiã¯ãƒ•ãƒªãƒ¼ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã§ã™ã€‚ã‚ãªãŸã¯ã€ãƒ•ãƒªãƒ¼ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢è²¡å›£ã®ç™ºè¡Œã™ã‚‹GNU一般公衆利用許諾書 (GNU General Public License)(ãƒãƒ¼ã‚¸ãƒ§ãƒ³2ã€ã¾ãŸã¯ãれ以é™ã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ï¼‰ã®è¦ç´„ã«ã‚‚ã¨ã¥ãã€ã“ã®ãƒ©ã‚¤ãƒ–ラリã®å†é…布や改変をã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
+'version' => 'ãƒãƒ¼ã‚¸ãƒ§ãƒ³æƒ…å ±',
+'version-extensions' => 'インストール済ã¿æ‹¡å¼µæ©Ÿèƒ½',
+'version-specialpages' => '特別ページ',
+'version-parserhooks' => '構文解æžãƒ•ãƒƒã‚¯',
+'version-variables' => '変数',
+'version-antispam' => 'スパム対策',
+'version-skins' => 'スキン',
+'version-other' => 'ãã®ä»–',
+'version-mediahandlers' => 'メディアãƒãƒ³ãƒ‰ãƒ©ãƒ¼',
+'version-hooks' => 'フック',
+'version-extension-functions' => '拡張機能関数',
+'version-parser-extensiontags' => '構文解æžæ‹¡å¼µæ©Ÿèƒ½ã‚¿ã‚°',
+'version-parser-function-hooks' => 'パーサー関数フック',
+'version-hook-name' => 'フックå',
+'version-hook-subscribedby' => '使用個所',
+'version-version' => '(ãƒãƒ¼ã‚¸ãƒ§ãƒ³$1)',
+'version-license' => 'ライセンス',
+'version-poweredby-credits' => "ã“ã®ã‚¦ã‚£ã‚­ã¯ã€'''[//www.mediawiki.org/ MediaWiki]'''(copyright © 2001-$1 $2)ã§å‹•ä½œã—ã¦ã„ã¾ã™ã€‚",
+'version-poweredby-others' => 'ãã®ä»–',
+'version-license-info' => 'MediaWikiã¯ãƒ•ãƒªãƒ¼ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢ã§ã™ã€‚ã‚ãªãŸã¯ã€ãƒ•ãƒªãƒ¼ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢è²¡å›£ã®ç™ºè¡Œã™ã‚‹GNU一般公衆利用許諾書 (GNU General Public License)(ãƒãƒ¼ã‚¸ãƒ§ãƒ³2ã€ã¾ãŸã¯ãれ以é™ã®ãƒ©ã‚¤ã‚»ãƒ³ã‚¹ï¼‰ã®è¦ç´„ã«ã‚‚ã¨ã¥ãã€ã“ã®ãƒ©ã‚¤ãƒ–ラリã®å†é…布や改変をã™ã‚‹ã“ã¨ãŒã§ãã¾ã™ã€‚
MediaWikiã¯ã€æœ‰ç”¨ã§ã‚ã‚‹ã“ã¨ã‚’期待ã—ã¦é…布ã•ã‚Œã¦ã„ã¾ã™ãŒã€å•†ç”¨ã‚ã‚‹ã„ã¯ç‰¹å®šã®ç›®çš„ã«é©ã™ã‚‹ã‹ã©ã†ã‹ã‚‚å«ã‚ã¦ã€æš—黙的ã«ã‚‚ã€ä¸€åˆ‡ä¿è¨¼ã•ã‚Œã¾ã›ã‚“。詳ã—ãã¯ã€GNU一般公衆利用許諾書をã”覧下ã•ã„。
-ã‚ãªãŸã¯ã“ã®ãƒ—ログラムã¨å…±ã«ã€[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU一般公衆利用許諾契約書ã®è¤‡è£½]ã‚’å—ã‘å–ã£ãŸã¯ãšã§ã™ã€‚ã‚‚ã—å—ã‘å–ã£ã¦ã„ãªã‘ã‚Œã°ã€ãƒ•ãƒªãƒ¼ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢è²¡å›£(the Free Software Foundation, Inc., 59Temple Place, Suite 330, Boston, MA 02111-1307 USA)ã¾ã§è«‹æ±‚ã™ã‚‹ã‹ã€[http://www.gnu.org/licenses/old-licenses/gpl-2.0.html オンラインã§é–²è¦§]ã—ã¦ãã ã•ã„。',
-'version-software' => 'インストール済ã¿ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢',
-'version-software-product' => '製å“',
-'version-software-version' => 'ãƒãƒ¼ã‚¸ãƒ§ãƒ³',
+ã‚ãªãŸã¯ã“ã®ãƒ—ログラムã¨å…±ã«ã€[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU一般公衆利用許諾契約書ã®è¤‡è£½]ã‚’å—ã‘å–ã£ãŸã¯ãšã§ã™ã€‚ã‚‚ã—å—ã‘å–ã£ã¦ã„ãªã‘ã‚Œã°ã€ãƒ•ãƒªãƒ¼ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢è²¡å›£(the Free Software Foundation, Inc., 59Temple Place, Suite 330, Boston, MA 02111-1307 USA)ã¾ã§è«‹æ±‚ã™ã‚‹ã‹ã€[//www.gnu.org/licenses/old-licenses/gpl-2.0.html オンラインã§é–²è¦§]ã—ã¦ãã ã•ã„。',
+'version-software' => 'インストール済ã¿ã‚½ãƒ•ãƒˆã‚¦ã‚§ã‚¢',
+'version-software-product' => '製å“',
+'version-software-version' => 'ãƒãƒ¼ã‚¸ãƒ§ãƒ³',
# Special:FilePath
'filepath' => 'ファイルパス',
@@ -3706,22 +3914,21 @@ MediaWikiã¯ã€æœ‰ç”¨ã§ã‚ã‚‹ã“ã¨ã‚’期待ã—ã¦é…布ã•ã‚Œã¦ã„ã¾ã™ãŒã€
'filepath-summary' => 'ã“ã®ç‰¹åˆ¥ãƒšãƒ¼ã‚¸ã¯ã€ãƒ•ã‚¡ã‚¤ãƒ«ã¸ã®å®Œå…¨ãªãƒ‘スを返ã—ã¾ã™ã€‚ç”»åƒã¯æœ€å¤§è§£åƒåº¦ã§è¡¨ç¤ºã•ã‚Œã€ä»–ã®ãƒ•ã‚¡ã‚¤ãƒ«ã‚¿ã‚¤ãƒ—ã¯é–¢é€£ä»˜ã‘ã•ã‚ŒãŸãƒ—ログラムãŒç›´æŽ¥èµ·å‹•ã—ã¾ã™ã€‚',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'é‡è¤‡ãƒ•ã‚¡ã‚¤ãƒ«ã®æ¤œç´¢',
-'fileduplicatesearch-summary' => 'é‡è¤‡ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ã€ãƒ•ã‚¡ã‚¤ãƒ«ã®ãƒãƒƒã‚·ãƒ¥å€¤ã«åŸºã¥ã„ã¦æ¤œç´¢ã—ã¾ã™ã€‚
-
-ファイルåã¯æŽ¥é ­è¾žã€Œ{{ns:file}}:ã€ã‚’付ã‘ãšã«å…¥åŠ›ã—ã¦ãã ã•ã„。',
-'fileduplicatesearch-legend' => 'é‡è¤‡ã®æ¤œç´¢',
-'fileduplicatesearch-filename' => 'ファイルå:',
-'fileduplicatesearch-submit' => '検索',
-'fileduplicatesearch-info' => '$1×$2ピクセル<br />ファイルサイズ:$3<br />MIMEタイプ:$4',
-'fileduplicatesearch-result-1' => 'ファイル「$1ã€ã¨é‡è¤‡ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚ã‚Šã¾ã›ã‚“。',
-'fileduplicatesearch-result-n' => 'ファイル「$1ã€ã¯$2ファイルã¨é‡è¤‡ã—ã¦ã„ã¾ã™ã€‚',
+'fileduplicatesearch' => 'é‡è¤‡ãƒ•ã‚¡ã‚¤ãƒ«ã®æ¤œç´¢',
+'fileduplicatesearch-summary' => 'é‡è¤‡ãƒ•ã‚¡ã‚¤ãƒ«ã‚’ãƒãƒƒã‚·ãƒ¥å€¤ã«åŸºã¥ã„ã¦æ¤œç´¢ã—ã¾ã™ã€‚',
+'fileduplicatesearch-legend' => 'é‡è¤‡ã®æ¤œç´¢',
+'fileduplicatesearch-filename' => 'ファイルå:',
+'fileduplicatesearch-submit' => '検索',
+'fileduplicatesearch-info' => '$1×$2ピクセル<br />ファイルサイズ:$3<br />MIMEタイプ:$4',
+'fileduplicatesearch-result-1' => 'ファイル「$1ã€ã¨é‡è¤‡ã™ã‚‹ãƒ•ã‚¡ã‚¤ãƒ«ã¯ã‚ã‚Šã¾ã›ã‚“。',
+'fileduplicatesearch-result-n' => 'ファイル「$1ã€ã¯$2ファイルã¨é‡è¤‡ã—ã¦ã„ã¾ã™ã€‚',
+'fileduplicatesearch-noresults' => '「$1ã€ã¨ã„ã†åå‰ã®ãƒ•ã‚¡ã‚¤ãƒ«ãŒã¿ã¤ã‹ã‚Šã¾ã›ã‚“。',
# Special:SpecialPages
'specialpages' => '特別ページ',
-'specialpages-note' => '----
-*通常ã®ç‰¹åˆ¥ãƒšãƒ¼ã‚¸ã€‚
-* <strong class="mw-specialpagerestricted">制é™ã•ã‚Œã¦ã„る特別ページ。</strong>',
+'specialpages-note' => '* 通常ã®ç‰¹åˆ¥ãƒšãƒ¼ã‚¸ã€‚
+* <span class="mw-specialpagerestricted">制é™ã•ã‚Œã¦ã„る特別ページ。</span>
+* <span class="mw-specialpagecached">(廃止ã•ã‚ŒãŸã‹ã‚‚ã—ã‚Œãªã„)キャッシュã•ã‚ŒãŸç‰¹åˆ¥ãƒšãƒ¼ã‚¸ã€‚</span>',
'specialpages-group-maintenance' => 'メンテナンス報告',
'specialpages-group-other' => 'ãã®ä»–ã®ç‰¹åˆ¥ãƒšãƒ¼ã‚¸',
'specialpages-group-login' => 'ログイン/利用者登録',
diff --git a/languages/messages/MessagesJam.php b/languages/messages/MessagesJam.php
new file mode 100644
index 00000000..b97521ef
--- /dev/null
+++ b/languages/messages/MessagesJam.php
@@ -0,0 +1,1114 @@
+<?php
+/** Jamaican Creole English (Patois)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Hazard-SJ
+ * @author Ukabia
+ * @author Yocahuna
+ */
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'Lingk andalainin',
+'tog-highlightbroken' => 'Faamat brok lingk <a href="" class="new">laik dis</a> (altoernativ: laik dis<a href="" class="internal">?</a>)',
+'tog-justify' => 'Jostifai paragraaf',
+'tog-hideminor' => 'Aid maina edit ina riisant chienj',
+'tog-hidepatrolled' => 'Aid pachruol edit ina riisant chienj',
+'tog-newpageshidepatrolled' => 'Aid pachruol piej frahn nyuu piej lis',
+'tog-extendwatchlist' => 'Expan wachlis fi shuo aal chienj, no jos di muos riisant',
+'tog-usenewrc' => 'Yuuz enans riisant chienj (rikwaya JavaScript)',
+'tog-numberheadings' => 'Aato-nomba edndem',
+'tog-showtoolbar' => 'Shuo edit tuulbaar (rikwaya JavaScript)',
+'tog-editondblclick' => 'Edit piej pahn dobl klik (rikwaya JavaScript)',
+'tog-editsection' => 'Eniebl sekshan editin vaya [edit] lingk',
+'tog-editsectiononrightclick' => 'Eniebl sekshan editin bai rait klikin pahn sekshan taikl (rikwaya JavaScript)',
+'tog-showtoc' => 'Shuo tiebl a kantent (fi piej wid muo dan 3 edn)',
+'tog-rememberpassword' => 'Memba mi lagiin pahn dis brouza (fi a maximom a $1 {{PLURAL:$1|die|die}})',
+'tog-watchcreations' => 'Ad piej mi kriet tu mi wachlis',
+'tog-watchdefault' => 'Ad piej mi edit tu mi wachlis',
+'tog-watchmoves' => 'Ad piej mi muuv tu mi wachlis',
+'tog-watchdeletion' => 'Ad piej mi diliit tu mi wachlis',
+'tog-previewontop' => 'Shuo priivyuu bifuo edit bax',
+'tog-previewonfirst' => 'Shuo priivyuu pahn fos edit',
+'tog-nocache' => 'Disiebl brouza piej kiashin',
+'tog-enotifwatchlistpages' => 'E-miel mi wen piej pahn mi wachlis chienj',
+'tog-enotifusertalkpages' => 'E-miel mi wen mi yuuza taak piej chienj',
+'tog-enotifminoredits' => 'E-miel mi alzwel fi maina edit pahn piej',
+'tog-enotifrevealaddr' => 'Riviil mi e-miel ajres ina nuotifikieshan e-miel',
+'tog-shownumberswatching' => 'Shuo di nomba a wachin yuuza',
+'tog-oldsig' => 'Priivyuu a egzisin signicha:',
+'tog-fancysig' => 'Chriit signicha az wikitex (widoutn aatamatik lingk)',
+'tog-externaleditor' => 'Yuuz extoernal edita bai difaalt (fi expoert onli, niid speshal setn pahn yu kompiuta)',
+'tog-externaldiff' => 'Yuuz extoernal dif bai difaalt (fi expoert onli, niid speshal setn pahn yu kompiuta)',
+'tog-showjumplinks' => 'Eniebl "jomp tu" aksesibiliti lingk',
+'tog-uselivepreview' => 'Yuuz laiv priivyuu (rikwaya JavaScript) (experimental)',
+'tog-forceeditsummary' => 'Pramp mi wen entarin blangk edit somari',
+'tog-watchlisthideown' => 'Aid mi editdem frahn di wachlis',
+'tog-watchlisthidebots' => 'Aid bat editdem frahn di wachlis',
+'tog-watchlisthideminor' => 'Aid maina editdem frahn di wachlis',
+'tog-watchlisthideliu' => 'Aid editdem bai lag iin yuuza frahn di wachlis',
+'tog-watchlisthideanons' => 'Aid editdem bai ananimos yuuza frahn di wachlis',
+'tog-watchlisthidepatrolled' => 'Aid pachruol editdem frahn di wachlis',
+'tog-ccmeonemails' => 'Sen mi kapi a e-miel mi sen tu ada yuuza',
+'tog-diffonly' => 'No shuo piej kantent biluo dif',
+'tog-showhiddencats' => 'Shuo aidwe kiatigari',
+'tog-norollbackdiff' => '
+Lef aaf dif afta pofaamin ruolbak',
+
+'underline-always' => 'Alzwie',
+'underline-never' => 'Neba',
+'underline-default' => 'Brouza difaalt',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'Edit ieria font stail:',
+'editfont-default' => 'Brouza difaalt',
+'editfont-monospace' => 'Monospies font',
+'editfont-sansserif' => 'San-serif font',
+'editfont-serif' => 'Serif font',
+
+# Dates
+'sunday' => 'Sonde',
+'monday' => 'Monde',
+'tuesday' => 'Tyuuzde',
+'wednesday' => 'Wenzde',
+'thursday' => 'Torzde',
+'friday' => 'Fraide',
+'saturday' => 'Satide',
+'sun' => 'Son',
+'mon' => 'Mon',
+'tue' => 'Tyu',
+'wed' => 'Wen',
+'thu' => 'Tor',
+'fri' => 'Fra',
+'sat' => 'Sat',
+'january' => 'Janiweri',
+'february' => 'Febiweri',
+'march' => 'Maach',
+'april' => 'Iepril',
+'may_long' => 'Mie',
+'june' => 'Juun',
+'july' => 'Julai',
+'august' => 'Aagos',
+'september' => 'Septemba',
+'october' => 'Aktuoba',
+'november' => 'Novemba',
+'december' => 'Disemba',
+'january-gen' => 'Janiweri',
+'february-gen' => 'Febiweri',
+'march-gen' => 'Maach',
+'april-gen' => 'Iepril',
+'may-gen' => 'Mie',
+'june-gen' => 'Juun',
+'july-gen' => 'Julai',
+'august-gen' => 'Aagos',
+'september-gen' => 'Septemba',
+'october-gen' => 'Aktuoba',
+'november-gen' => 'Novemba',
+'december-gen' => 'Disemba',
+'jan' => 'Jan',
+'feb' => 'Feb',
+'mar' => 'Maa',
+'apr' => 'Iep',
+'may' => 'Mie',
+'jun' => 'Juu',
+'jul' => 'Jul',
+'aug' => 'Aag',
+'sep' => 'Sep',
+'oct' => 'Akt',
+'nov' => 'Nov',
+'dec' => 'Dis',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Kiatigari|Kiatigaridem}}',
+'category_header' => 'Piejdem ina kiatigari "$1"',
+'subcategories' => 'Sobkiatigari',
+'category-media-header' => 'Midia ina kiatigari "$1"',
+'category-empty' => "''Dis kiatigari korantli no kantien no piej nar midia.''",
+'hidden-categories' => '{{PLURAL:$1|Idn kiatigari|Idn kiatigaridem}}',
+'hidden-category-category' => 'Aidwe kiatigari',
+'category-subcat-count' => '{{PLURAL:$2|Dis kiatigari ab onggl di falarin sobkiatigari.|Dis kiatigari ab di falarin {{PLURAL:$1|sobkiatigari|$1 sobkiatigaridem}}, out a $2 tuotal.}}',
+'category-subcat-count-limited' => 'Dis kiatigari ab di falarin {{PLURAL:$1|sobkiatigari|$1 sobkiatigari}}.',
+'category-article-count' => '{{PLURAL:$2|Dis kiatigari kantien onggl di falarin piej.|Di falarin {{PLURAL:$1|piej a|$1 piejdem a}} ina dis kiatigari, outa $2 tuotal.}}',
+'category-article-count-limited' => 'Di falarin {{PLURAL:$1|piej de|$1 piej de}} ina di korant kiatigari.',
+'category-file-count' => '{{PLURAL:$2|Dis kiatigari kantien onggl di falarin file.|Di falarin {{PLURAL:$1|fail de|$1 fail de}} ina dis kiatigari, outa $2 tuotal.}}',
+'category-file-count-limited' => 'Di falarin {{PLURAL:$1|fail de|$1 fail de}} ina di korant kiatigari.',
+'listingcontinuesabbrev' => 'kant.',
+'index-category' => 'Index piej',
+'noindex-category' => 'No index piej',
+
+'about' => 'Bout',
+'article' => 'Kantent piej',
+'newwindow' => '(opn ina nyuu winda)',
+'cancel' => 'Kiansl',
+'moredotdotdot' => 'Muo...',
+'mypage' => 'Fimi Piej',
+'mytalk' => 'Mi chat',
+'anontalk' => 'Taak fi dis IP ajres',
+'navigation' => 'Navigieshan',
+'and' => '&#32;ahn',
+
+# Cologne Blue skin
+'qbfind' => 'Fain',
+'qbbrowse' => 'Brouz',
+'qbedit' => 'Edit',
+'qbpageoptions' => 'Dis piej',
+'qbpageinfo' => 'Kantex',
+'qbmyoptions' => 'Mi piejdem',
+'qbspecialpages' => 'Peshal piejdem',
+'faq' => 'FAK',
+'faqpage' => 'Project:FAK',
+
+# Vector skin
+'vector-action-addsection' => 'Ad tapik',
+'vector-action-delete' => 'Diliit',
+'vector-action-move' => 'Muuv',
+'vector-action-protect' => 'Protek',
+'vector-action-undelete' => 'Andiliit',
+'vector-action-unprotect' => 'Neu protektian',
+'vector-simplesearch-preference' => 'Eniebl enans saach sojeshan (Vekta skin onli)',
+'vector-view-create' => 'Kriet',
+'vector-view-edit' => 'Hedit',
+'vector-view-history' => 'Vyuu ischri',
+'vector-view-view' => 'Riid',
+'vector-view-viewsource' => 'Vyuu Suos',
+'actions' => 'Akshan',
+'namespaces' => 'Niemspies',
+'variants' => 'Vieriant',
+
+'errorpagetitle' => 'Era',
+'returnto' => 'Ritoern a $1',
+'tagline' => 'Frahn {{SITENAME}}',
+'help' => 'Elp',
+'search' => 'Saach',
+'searchbutton' => 'Saach',
+'go' => 'Gwaan',
+'searcharticle' => 'Gwaan',
+'history' => 'Piej ischri',
+'history_short' => 'Ischri',
+'updatedmarker' => 'opdiet sens mi laas vizit',
+'printableversion' => 'Printobl voerjan',
+'permalink' => 'Poermanint lingk',
+'print' => 'Print',
+'view' => 'Riid',
+'edit' => 'Edit',
+'create' => 'Kriet',
+'editthispage' => 'Edit dis piej',
+'create-this-page' => 'Kriet dis piej',
+'delete' => 'Diliit',
+'deletethispage' => 'Diliit dis piej',
+'undelete_short' => 'Andiliit {{PLURAL:$1|wan edit|$1 edit}}',
+'viewdeleted_short' => 'Riid {{PLURAL:$1|wan diliitid hedit|$1 diliitid hedit dem}}',
+'protect' => 'Protek',
+'protect_change' => 'chienj',
+'protectthispage' => 'Protek dis piej',
+'unprotect' => 'Neu protektian',
+'unprotectthispage' => 'Neu protektian fi dis piej',
+'newpage' => 'Nyuu piej',
+'talkpage' => 'Diskos dis piej',
+'talkpagelinktext' => 'Chat',
+'specialpage' => 'Peshal piej',
+'personaltools' => 'Persnal tuuldem',
+'postcomment' => 'Nyuu sekshan',
+'articlepage' => 'Vyuu kantent piej',
+'talk' => 'Diskoshan',
+'views' => 'Vyuu',
+'toolbox' => 'Tuulbax',
+'userpage' => 'Vyuu yuuza piej',
+'projectpage' => 'Vyuu prajek piej',
+'imagepage' => 'Vyuu fail piej',
+'mediawikipage' => 'Vyuu mechiz piej',
+'templatepage' => 'Vyuu templit piej',
+'viewhelppage' => 'Vyuu elp piej',
+'categorypage' => 'Vyuu kiatigari piej',
+'viewtalkpage' => 'Vyuu diskoshan',
+'otherlanguages' => 'Ina ada langwij',
+'redirectedfrom' => '(Riidirek frahn $1)',
+'redirectpagesub' => 'Riidirek piej',
+'lastmodifiedat' => 'Dis piej laas madifai pahn $1, a $2',
+'viewcount' => 'Dis piej akses {{PLURAL:$1|wans|$1 taim}}.',
+'protectedpage' => 'Protek piej',
+'jumpto' => 'Jomp go a:',
+'jumptonavigation' => 'navigieshan',
+'jumptosearch' => 'saach',
+'view-pool-error' => 'Sari, di soervadem uobaluod a di muoment.
+Tomoch yuuza a chrai fi vyuu dis piej.
+Begyu wiet likl bifuo yu chrai fi akses dis piej agen.
+
+$1',
+'pool-timeout' => 'Taimout a wiet fi di lak',
+'pool-queuefull' => 'Puul kyuu fulop',
+'pool-errorunknown' => 'Anuon era',
+
+# 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' => 'About {{SITENAME}}',
+'aboutpage' => 'Project: About',
+'copyright' => 'Kantent avielobl anda $1.',
+'copyrightpage' => '{{ns:project}}:Kapirait',
+'currentevents' => 'Korant ivent',
+'currentevents-url' => 'Project:Korant ivent',
+'disclaimers' => 'Diskliema',
+'disclaimerpage' => 'Project: Jinaral diskliema',
+'edithelp' => 'Editin elp',
+'edithelppage' => 'Help: Editin',
+'helppage' => 'Help: Kantent',
+'mainpage' => 'Mien piej',
+'mainpage-description' => 'Mien piej',
+'policy-url' => 'Project:Palisi',
+'portal' => 'Komiuniti puotal',
+'portal-url' => 'Project:Komiuniti puotal',
+'privacy' => 'Praivisi palisi',
+'privacypage' => 'Project: Praivisi palisi',
+
+'badaccess' => 'Poermishan era',
+'badaccess-group0' => 'Yu no lou fi exikyuut di akshan yu rikwes.',
+'badaccess-groups' => 'Di akshan yu rikwes limit tu yuuza ina {{PLURAL:$2|di gruup|wan a di gruup}}: $1.',
+
+'versionrequired' => 'Voerjan $1 a MediaWiki rikwaya',
+'versionrequiredtext' => 'Voerjan $1 a MediaWiki rikwaya fi yuuz dis piej.
+Si [[Special:Version|voerjan piej]].',
+
+'ok' => 'OK',
+'retrievedfrom' => 'Richriiv frahn "$1"',
+'youhavenewmessages' => 'Yu gat $1 ($2).',
+'newmessageslink' => 'nyuu mechiz',
+'newmessagesdifflink' => 'laas chienj',
+'youhavenewmessagesmulti' => 'Yu gat nyuu mechiz pahn $1',
+'editsection' => 'edit',
+'editold' => 'edit',
+'viewsourceold' => 'vyuu suos',
+'editlink' => 'edit',
+'viewsourcelink' => 'vyuu suos',
+'editsectionhint' => 'Edit sekshan: $1',
+'toc' => 'Kantent',
+'showtoc' => 'shuo',
+'hidetoc' => 'aid',
+'collapsible-expand' => 'Hexpand',
+'thisisdeleted' => 'Vyuu ar ristuor $1?',
+'viewdeleted' => 'Vyuu $1?',
+'restorelink' => '{{PLURAL:$1|wan diliitid edit|$1 diliitid edit}}',
+'feedlinks' => 'Fiid:',
+'feed-invalid' => 'Invalid sobskripshan fiid taip',
+'feed-unavailable' => 'Sindikieshan fiid no avielobl',
+'site-rss-feed' => '$1 RSS fiid',
+'site-atom-feed' => '$1 Atom fiid',
+'page-rss-feed' => '"$1" RSS fiid',
+'page-atom-feed' => '"$1" Atom fiid',
+'red-link-title' => '$1 (piej no egzis)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Piej',
+'nstab-user' => 'Yuuza piej',
+'nstab-media' => 'Midia piej',
+'nstab-special' => 'Peshal piej',
+'nstab-project' => 'Prajek piej',
+'nstab-image' => 'Fail',
+'nstab-mediawiki' => 'Mechiz',
+'nstab-template' => 'Templit',
+'nstab-help' => 'Elp piej',
+'nstab-category' => 'Kiatigari',
+
+# Main script and global functions
+'nosuchaction' => 'No soch akshan',
+'nosuchactiontext' => 'Di akshan spesifai bai di URL invalid.
+Yu maita mistaip di URL, ar fala a inkarek lingk.
+Dis maita indikiet alzwel wahn bog ina di saafwier yuuz bai {{SITENAME}}.',
+'nosuchspecialpage' => 'No soch peshal piej',
+'nospecialpagetext' => '<strong>Yu rikwes a invalid peshal piej.</strong>
+
+A lis a valid peshal piej kiahn fain a [[Special:SpecialPages|{{int:specialpages}}]].',
+
+# General errors
+'error' => 'Era',
+'databaseerror' => 'Dietabies era',
+'dberrortext' => 'A dietabies kwieri sintax era okor.
+Dis maita indikiet wahn bog ina di saafwier.
+Di laas atemp dietabies kwieri ena:
+<blockquote><tt>$1</tt></blockquote>
+frahn widin fongshan "<tt>$2</tt>".
+Dietabies ritoern era "<tt>$3: $4</tt>".',
+'dberrortextcl' => 'A dietabies kwieri sintax era okor.
+Di laas attemp dietabies kwieri ena:
+"$1"
+frahn widin fongshan "$2".
+Dietabies ritoern era "$3: $4"',
+'laggedslavemode' => "'''Waanin:''' Piej maita no kantien riisant opdiet.",
+'readonly' => 'Dietabies lak',
+'enterlockreason' => 'Enta a riizn fi di lak, inkluudn a estimet a wen di lak wi riliis',
+'readonlytext' => 'Di dietabies korantli lak gens nyuu enchri ahn ada madifikieshan, prabli fi ruutiin dietabies mientenans, iwi bak tu naamal afta.
+
+Di adminischrieta uu laki aafa dis explanieshan: $1',
+'missing-article' => 'Di dietabies no fain di tex ishuda fain, niem "$1" $2.
+
+Dis yuujal kaaz ef ifala outdiet dif ar ischri lingk to piej wa diliit.
+
+Ef dis a no di kies, a maita fain yu fain bog ina di saafwier.
+Begyu ripuot dis tu wahn [[Special:ListUsers/sysop|administrieta]], mek nuot a di URL.',
+'missingarticle-rev' => '(rivijan#: $1)',
+'missingarticle-diff' => '(Dif: $1, $2)',
+'readonly_lag' => 'Di dietabies aatamatikali lak wails di sliev dietabies soervadem kechop tu di maasta',
+'internalerror' => 'Intoernal era',
+'internalerror_info' => 'Intoernal era: $1',
+'fileappenderrorread' => 'Kudn riid "$1" juurin apen.',
+'fileappenderror' => 'Kudn apen "$1" tu "$2".',
+'filecopyerror' => 'Kudn kapi fail "$1" tu "$2".',
+'filerenameerror' => 'Kudn riiniem fail "$1" tu "$2".',
+'filedeleteerror' => 'Kudn diliit fail "$1".',
+'directorycreateerror' => 'Kudn kriet direkchri "$1".',
+'filenotfound' => 'Kudn fain fail "$1".',
+'fileexistserror' => 'Aniebl fi rait tu fail "$1": fail egzis',
+'unexpected' => 'Anexpektid valyu: "$1"="$2".',
+'formerror' => 'Era: kudn sobmit faam',
+'badarticleerror' => 'Dis akshan kyaahn pofaam pahn dis piej.',
+'cannotdelete' => 'The page or file "$1" could not be deleted.
+It may have already been deleted by someone else.
+
+Di piej ar fail "$1" kudn diliit.
+Imaita aredi diliit bai smadi els.',
+'badtitle' => 'Bad taikl',
+'badtitletext' => 'Di piej taikl yu rikwes invalid, emti, ar a inkarek lingk inta-langwij ar inta-wiki taikl. Imaita kantien wan ar muo kiarakta we kyaahn yuuz ina taikl.',
+'perfcached' => 'Di falarin dieta kiash ahn maita no op tu diet.',
+'perfcachedts' => 'Di falarin dieta kiash, ahn laas opdiet $1.',
+'querypage-no-updates' => 'Opdiet fi dis piej korantli disiebl.
+Dieta ya no go rifresh fi nou.',
+'wrong_wfQuery_params' => 'Inkarek paramita tu wfQuery()<br />
+Fongshan: $1<br />
+Kwieri: $2',
+'viewsource' => 'Vyuu Suos',
+'viewsourcefor' => 'fi $1',
+'actionthrottled' => 'Akshan chratl',
+'actionthrottledtext' => 'Az anti-spam meja, yu limit frahn pofaam dis akshan tomoch taim ina shaat spies a taim, ahn yu exiid di limit.
+Begyu chrai agen ina fyuu minit.',
+'protectedpagetext' => 'Dis piej protek fi privent editin.',
+'viewsourcetext' => 'Yu kiahn vyuu ahn kapi di suos a dis piej:',
+'protectedinterface' => 'Dis piej provaid intafies tex fi di saafwier, ahn iprotek fi privent abyuus.',
+'editinginterface' => "'''Waanin:''' Yu de edit page we yuuz fi provaid intafies tex fi di saafwier.
+Chienj tu dis piej wi afek di apierans a di yuuza intafies fi ada yuuzadem.
+Fi chranslieshan, begyu kansida fi yuuz [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], di MediaWiki luokalaizieshan projek.",
+'sqlhidden' => '(SQL kwieri aidwe)',
+'cascadeprotected' => 'Dis piej protek frahn edit, bikaa i\'inkluud ina di falarin {{PLURAL:$1|piej, ush|piejdem, ush}} protek wid di "kiaskiedn" apshan ton aan:
+$2',
+'namespaceprotected' => "Yu no gat no pomishan fi edit piej ina di '''$1''' niemspies.",
+'ns-specialprotected' => 'Peshal piejdem kyaahn edit.',
+'titleprotected' => 'Dis taikl protek frahn krieshan bai [[User:$1|$1]].
+Di riizn dehn gi a "\'\'$2\'\'".',
+
+# Virus scanner
+'virus-badscanner' => "Bad kanfigarieshan: anuon vairos skiana: ''$1''",
+'virus-scanfailed' => 'skian fiel (kuod $1)',
+'virus-unknownscanner' => 'anuon antivairos:',
+
+# Login and logout pages
+'logouttext' => "'''Yu nou lag out.'''
+
+Yu kiahn kantiniu yuuz {{SITENAME}} ananimosli, ar yu kiahn [[Special:UserLogin|lag iin agen]] az di siem ar az difrant yuuza.
+Nuot se som piej maita kantiniu fi displie laik se yu stil log iin, antel yu klier yu brouza kiash.",
+'welcomecreation' => '== Welkom, $1! ==
+Yu akount don kriet.
+No figat fi chienj yu [[Special:Preferences|{{SITENAME}} prefransdem]].',
+'yourname' => 'Yuuzaniem:',
+'yourpassword' => 'Paaswod:',
+'yourpasswordagain' => 'Ritaip paaswod:',
+'remembermypassword' => 'Memba mi lagiin pan dis brouza (fi a maximom a $1 {{PLURAL:$1|die|die}})',
+'yourdomainname' => 'Yu domien:',
+'externaldberror' => 'Aida aatentikieshan dietabies era okor ar yu no lou fi opdiet yu extoernal akount.',
+'login' => 'Lag iin',
+'nav-login-createaccount' => 'Lag iin / kriet akount',
+'loginprompt' => 'Yu mos ab kukidem eniebl fi lag iin tu {{SITENAME}}.',
+'userlogin' => 'Lag iin / kriet akount',
+'userloginnocreate' => 'Lag iin',
+'logout' => 'Lag out',
+'userlogout' => 'Lag out',
+'notloggedin' => 'No lag iin',
+'nologin' => 'Naa no akount? $1.',
+'nologinlink' => 'Kriet a akount',
+'createaccount' => 'Kriet akount',
+'gotaccount' => 'Aredi gat akount? $1.',
+'gotaccountlink' => 'Lag iin',
+'userlogin-resetlink' => 'Figet yu lagin detail dem?',
+'createaccountmail' => 'Bai e-miel',
+'createaccountreason' => 'Riizn:',
+'badretype' => 'Di paaswod yu enta no mach.',
+'userexists' => 'Yuuza niem enta aredi a yuuz.
+Begyu chuuz wahn difrahn niem.',
+'loginerror' => 'Lagiin era',
+'createaccounterror' => 'Kudn kriet akount: $1',
+'nocookiesnew' => 'Di yuuza akount kriet, bot yu no lag iin.
+{{SITENAME}} yuuz kuki fi lag iin yuuza.
+Yu gat kukidem disiebl.
+Begyu eniebl dem, den lag iin wid yu nyuu yuuzaniem ahn paaswod.',
+'nocookieslogin' => '{{SITENAME}} yuuz kuki fi lag iin yuuza.
+Yu gat kukidem disiebl.
+Begyu eniebl dem ahn chrai agen.',
+'noname' => 'Yu no spesifai no valid yuuza niem.',
+'loginsuccesstitle' => 'Lagiin soksesful',
+'loginsuccess' => "'''Yu nou lag iin tu {{SITENAME}} az \"\$1\".'''",
+'nosuchuser' => 'No yuuza no de bai di niem "$1".
+Yuuza niem kies sensitiv.
+Chek yu spelin, ar [[Special:UserLogin/signup|kriet a nyuu akount]].',
+'nosuchusershort' => 'No yuuza no de bai di niem "$1".
+Chek yu spelin.',
+'nouserspecified' => 'Yu afi spesifai a yuuzaniem.',
+'login-userblocked' => 'Dis yuuza blak. No lagiin no lou.',
+'wrongpassword' => 'Inkarek paaswod enta.
+Begyu chrai agen.',
+'wrongpasswordempty' => 'Paaswod enta ehn blangk.
+Begyu chrai agen.',
+'passwordtooshort' => 'Paaswod mos bi at liis {{PLURAL:$1|1 kiarakta|$1 kiarakta}}.',
+'password-name-match' => 'Yu paaswod mos difrahn frahn yu yuuzaniem.',
+'mailmypassword' => 'E-miel nyuu paaswod',
+'passwordremindertitle' => 'Nyuu tempareri paaswod fi {{SITENAME}}',
+'passwordremindertext' => 'Smadi (prabli yu, frahn IP ajres $1) rikwest a nyuu
+paaswod fi {{SITENAME}} ($4). A tempareri paaswod fi yuuza
+"$2" wehn kriet ahn set to "$3". Ef dis wehna yu
+intent, yu wi niid fi lag iin ahn chuuz a nyuu paaswod nou.
+Yu tempareri paaswod wi expaya ina {{PLURAL:$5|wan die|$5 die}}.
+
+Ef smadi els ehn mek dis rikwes, ar ef yu sens memba yu paaswod,
+ahn yu no langa wish fi chienji, yu kiahn ignuor dis mechiz ahn
+kantiniu yuuz yu uol paaswod.',
+'noemail' => 'No e-miel ajres no rekaad fi yuuza "$1".',
+'noemailcreate' => 'Yu niid fi provaid a valid e-miel ajres.',
+'passwordsent' => 'A nyuu paaswod sen gaan tu di e-miel ajres rejista fi "$1".
+Begyu lag iin agen afta yu risiibi.',
+'blocked-mailpassword' => 'Yu IP ajres blak frahn editin, ahn so ino lou fi yuuz di paaswod rikovri fongshan fi privent abyuus.',
+'eauthentsent' => 'Kanfamieshan e-miel sen tu di naminietid e-miel ajres.
+Bifuo eni ada e-miel sen tu di akount, yu wi afi fala di inschrokshan ina di e-miel, fi kanfoerm se di akount a akchuali fiyu.',
+'throttled-mailpassword' => 'Paaswod rimainda sen aredi, widin di laas {{PLURAL:$1|howa|$1 howa}}.
+Fi privent abyuus, onggl wan paaswod rimainda wi sen poer {{PLURAL:$1|howa|$1 howa}}.',
+'mailerror' => 'Era a sen miel: $1',
+'acct_creation_throttle_hit' => 'Vizita tu dis wiki uu a yuuz yu IP ajres don kriet {{PLURAL:$1|1 akount|$1 akount}} ina di laas die, ush a di maximom lou ina dis taim piiriad.
+Az a rizolt, vizita a yuuz dis IP ajres kyaahn kriet no muo akount a di muoment.',
+'emailauthenticated' => 'Yu e-miel ajres aatentikiet pahn $2 a $3.',
+'emailnotauthenticated' => 'Yu e-miel ajres no aatentikiet yet.
+No e-miel naa sen fi eni a di falarin fiicha.',
+'noemailprefs' => 'Spesifai a e-miel ajres ina yu prefransdem fi demaya fiicha fi wok.',
+'emailconfirmlink' => 'Kanfoerm yu e-miel ajres.',
+'invalidemailaddress' => 'Di e-miel ajres no aksep az iapier fi ab invalid faamat.
+Begyu enta a wel-faamat ajres ar emti dat fiil.',
+'accountcreated' => 'Akount kriet.',
+'accountcreatedtext' => 'Di yuuza akount fi $1 don kriet.',
+'createaccount-title' => 'Akount krieshan fi {{SITENAME}}',
+'createaccount-text' => 'Smadi kriet a akount fi yu e-miel ajres pahn {{SITENAME}} ($4) niem "$2", wid paaswod "$3".
+Yu shuda lag iin ahn chienj yu paaswod nou.
+
+Yu kiahn ignuor dis mechiz, ef dis akount kriet bai mistiek.',
+'usernamehasherror' => 'Yuuzaniem kyaahn kantien no ash kiarakta.',
+'login-throttled' => 'Yu mek tomoch riisant lagiin atemp.
+Begyu wiet likl bifuo yu chrai agen.',
+'loginlanguagelabel' => 'Langwij: $1',
+'suspicious-userlogout' => 'Yu rikwes fi lag out dinai bikaa iluk laik se isen bai a brok brouza ar kiashin praxi.',
+
+# Change password dialog
+'resetpass' => 'Chienj paaswod',
+'resetpass_announce' => 'Yu lag iin wid a tempareri e-miel kuod.
+Fi finish lag iin, yu mos set a nyuu paaswod yaso:',
+'resetpass_header' => 'Chienj akount paaswod',
+'oldpassword' => 'Uol paaswod:',
+'newpassword' => 'Nyuu paaswod:',
+'retypenew' => 'Ritaip nyuu paaswod:',
+'resetpass_submit' => 'Set paaswod ahn lag iin',
+'resetpass_success' => 'Yu paaswod chienj soksesfuli!
+A lag yu iin nou ...',
+'resetpass_forbidden' => 'Paaswod kyaahn chienj',
+'resetpass-no-info' => 'Yu mos lag iin fi akses dis piej dairek.',
+'resetpass-submit-loggedin' => 'Chienj paaswod',
+'resetpass-submit-cancel' => 'Kiansl',
+'resetpass-wrong-oldpass' => 'Invalid ar tempareri paaswod.
+Yu maita chienj yu paaswod soksesfuli aredi ar rikwes wahn nyuu tempareri paaswod.',
+'resetpass-temp-password' => 'Tempareri paaswod',
+
+# Special:PasswordReset
+'passwordreset-username' => 'Yuuzaniem:',
+'passwordreset-domain' => 'Domien:',
+
+# Edit page toolbar
+'bold_sample' => 'Buol tex',
+'bold_tip' => 'Buol tex',
+'italic_sample' => 'Aitalik tex',
+'italic_tip' => 'Aitalik tex',
+'link_sample' => 'Lingk taikl',
+'link_tip' => 'Intoernal lingk',
+'extlink_sample' => 'http://www.example.com lingk taikl',
+'extlink_tip' => 'Extoernal lingk (memba http:// priifix)',
+'headline_sample' => 'Edlain tex',
+'headline_tip' => 'Lebl 2 edlain',
+'nowiki_sample' => 'Insoert nan-faamatid tex yaso',
+'nowiki_tip' => 'Ignuor wiki faamatin',
+'image_tip' => 'Embedid fail',
+'media_tip' => 'Fail lingk',
+'sig_tip' => 'Yu signicha wid taimtamp',
+'hr_tip' => 'Arizantal lain (yuuz spierinli)',
+
+# Edit pages
+'summary' => 'Somari:',
+'subject' => 'Sobjik/edlain',
+'minoredit' => 'Dis a maina edit',
+'watchthis' => 'Wach dis piej',
+'savearticle' => 'Sieb piej',
+'preview' => 'Priivyuu',
+'showpreview' => 'Shuo priivyuu',
+'showlivepreview' => 'Laiv priivyuu',
+'showdiff' => 'Shuo chienjdem',
+'anoneditwarning' => "'''Waanin:''' Yu no lag iin.
+Yu IP ajres wi rikaad ina dis piej edit ischri.",
+'anonpreviewwarning' => "''Yu no lag iin. Sievin wi rikaad yu IP ajres ina dis piej edit ischri.''",
+'missingsummary' => "'''Rimainda:''' Yu no provaid no edit somari.
+Ef yu klik \"{{int:savearticle}}\" agen, yu edit wi siev widoutn wan.",
+'missingcommenttext' => 'Begyu enta a kament biluo.',
+'missingcommentheader' => "'''Rimainda:''' Yu no provaid no sobjek/edlain fi dis kament.
+Ef yu klik \"{{int:savearticle}}\" agen, yu edit wi siev widoutn wan.",
+'summary-preview' => 'Somari priivyuu',
+'subject-preview' => 'Sobjek/edlain priivyuu:',
+'blockedtitle' => 'Yuuza blak',
+'blockedtext' => "'''Yu yuuza niem ar IP ajres get blak.'''
+
+Di blak mek bai $1.
+Di riizn dehn gi a ''$2''.
+
+* Taat a blak: $8
+* Expairi a blak: $6
+* Intendid blakii: $7
+
+Yu kiahn kantak $1 ar aneda [[{{MediaWiki:Grouppage-sysop}}|adminischrieta]] fi diskos di blak.
+Yu kyaahn yuuz di 'e-miel dis yuuza' fiicha anles a valid e-miel ajress spesifai ina yu [[Special:Preferences|akount prefransdem]] ahn yu no blak frahn yuuzi.
+Yu korant IP ajress a $3, ahn di blak ID a #$5.
+Begyu inkluud aal abov ditiel ina eni kwieri yu mek.",
+'autoblockedtext' => 'Yu IP ajres aatamatikali blak bikaa iyuuz bai aneda yuuza, uu get blak bai $1.
+Di riizn dehn gi a dis:
+
+:\'\'$2\'\'
+
+* Taat a blak: $8
+* Expairi a blak: $6
+* Intendid blakii: $7
+
+Yu kiahn kantak $1 ar wan a dieda [[{{MediaWiki:Grouppage-sysop}}|adminischrieta]] fi diskos di blak.
+
+Nuot se yu kyaahn yuuz di "e-miel dis yuuza" fiicha anles yu gat a valid e-miel ajress rejista ina yu [[Special:Preferences|yuuza prefransdem]] ahn yu no blak frahn yuuzi.
+
+Yu korant IP ajress a $3, ahn di blak ID a #$5.
+Begyu inkluud aal abov ditiel ina eni kwieri yu mek.',
+'blockednoreason' => 'no riizn no gi',
+'blockedoriginalsource' => "Di suos a '''$1''' shuo biluo:",
+'blockededitsource' => "Di tex a '''yu edit''' tu '''$1''' shuo biluo:",
+'whitelistedittitle' => 'Lagiin rikwaya fi edit',
+'whitelistedittext' => 'Yu afi $1 fi edit piej',
+'confirmedittext' => 'Yu mos kanfoerm yu e-miel ajres bifuo yu edit piej.
+Begyu set ahn validiet yu e-miel ajres chruu yu [[Special:Preferences|yuuza prefransdem]].',
+'nosuchsectiontitle' => 'Kyaahn fain sekshan',
+'nosuchsectiontext' => 'Yu chrai fi edit sekshan wa no egzis.
+Imaita muuv ar diliit wails yu a vyuu di piej.',
+'loginreqtitle' => 'Lagiin rikwaya',
+'loginreqlink' => 'Lag iin',
+'loginreqpagetext' => 'Yu mos $1 fi vyuu ada piej',
+'accmailtitle' => 'Paaswod sen.',
+'accmailtext' => "A random jinariet paaswod fi [[User talk:$1|$1]] sen tu $2.
+
+Di paaswod fi dis nyuu akount kiahn chienj a di ''[[Special:ChangePassword|chienj paaswod]]'' piej afta yu lag iin.",
+'newarticle' => '(Nyuu)',
+'newarticletext' => "Yu fala lingk tu piej we no egzis yet.
+Fi kriet di piej, taat taip ina di bax biluo (si di [[{{MediaWiki:Helppage}}|elp piej]] fi muo infamieshan).
+Ef yu de ya by mistiek, klik yu brouza '''bak''' botn.",
+'anontalkpagetext' => "----''Dis a di diskoshan piej fi ananimos yuuza uu no kriet no akount yet, ar uu no yuuzi.
+Wi dierfuor afi yuuz di nyuumerikal IP ajres fi aidentifai im/ar.
+Soch a IP ajres kiahn shier bai sebral yuuza.
+Ef yu a ananimos yuuza ahn fiil se irelivant kament dairek tu yu, begyu [[Special:UserLogin/signup|kriet a akount]] ar [[Special:UserLogin|lag iin]] fi avaid fyuucha kanfyuujan wid ada ananimos yuuza.''",
+'noarticletext' => 'Korentli no tex no de ina dis piej.
+Yu kiahn [[Special:Search/{{PAGENAME}}|saach fi dis piej taikl]] ina ada piej,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} saach di rilietid lagdem],
+ar [{{fullurl:{{FULLPAGENAME}}|action=edit}} edit dis piej]</span>.',
+'userpage-userdoesnotexist' => 'Yuuza akount "<nowiki>$1</nowiki>" no rejista.
+Begyu chek ef yu waahn fi kriet/edit dis piej.',
+'userpage-userdoesnotexist-view' => 'Yuuza akount "$1" no rejista.',
+'blocked-notice-logextract' => 'Dis yuuza korantli blak.
+Di lietis blak lag enchri provaid biluo fi refrans:',
+'usercssyoucanpreview' => "'''Tip:''' Yuuz di \"{{int:showpreview}}\" botn fi tes yu nyuu CSS bifuo yu sieb.",
+'userjsyoucanpreview' => "'''Tip:''' Yuuz di \"{{int:showpreview}}\" botn fi tes yu nyuu JavaScript bifuo yu sieb.",
+'usercsspreview' => "'''Memba se yu onggl a priivyuu yu yuuza CSS.'''
+'''Ino sieb yet!'''",
+'userjspreview' => "'''Memba se yu onggl a tes/priivyuu yu yuuza JavaScript.'''
+'''Ino sieb yet!'''",
+'userinvalidcssjstitle' => "'''Waanin:''' No skin \"\$1\" no de.
+Memba se kostom .css ahn .js piej yuuz a luwakies taikl, e.g. {{ns:user}}:Foo/vector.css az opuoz tu {{ns:user}}:Foo/Vector.css.",
+'updated' => '(Opdiet)',
+'note' => "'''Nuot:'''",
+'previewnote' => "'''Memb se dis a onggl priivyuu.'''
+Yu chienjdem no sieb yet!",
+'previewconflict' => 'Dis priivyuu riflek di tex ina di opa editin ieria az iwi apier ef yu chuuz fi siebi.',
+'session_fail_preview' => "'''Sari! Wi kudn pruoses yu edit juu tu a laas a seshan dieta.'''
+Begyu chrai agen.
+Ef istil no wok, chrai [[Special:UserLogout|lag out]] ahn lag bak iin.",
+'session_fail_preview_html' => "'''Sari! Wi kudn pruoses yu edit juu tu laas a seshan dieta.'''
+
+''Bikaa {{SITENAME}} ab raa HTML eniebl, di priivyuu aidwe az prikaashan gens JavaScript atak.''
+
+'''Ef dis a lejitimet edit atemp, begyu chrai agen.'''
+Ef istil no wok, chrai [[Special:UserLogout|lag out]] ahn lag bak iin.",
+'token_suffix_mismatch' => "'''Yu edit rijek bikaa yu klayant manggl di pongtyueshan kiaraktadem ina di edit tuokn.'''
+Di edit rijek fi privent koropshan a di piej tex.
+Dis somtaim apn wen yu a yuuz a bogi web-bies ananimos praxi saabis.",
+'editing' => 'Editin $1',
+'editingsection' => 'Editin $1 (sekshan)',
+'editingcomment' => 'Editin $1 (nyuu sekshan)',
+'editconflict' => 'Edit kanflik: $1',
+'explainconflict' => "Smadi els chienj dis poej sens yu taat editi.
+Di opa tex ieria kantien di piej tex az ikorantli egzis.
+Yu chienjdem shuo ina di lowa tex ieria.
+Yu wi afi moerj yu chienjdem ina di egzisin tex.
+'''Onggl''' di tex ina di opa tes ieria wi sieb wen yu pres \"{{int:savearticle}}\".",
+'yourtext' => 'Yu tex',
+'storedversion' => 'Stuor rivijan',
+'yourdiff' => 'Difrans',
+'copyrightwarning' => "Begyu nuot se aal kanchribyuushan tu {{SITENAME}} rigyaad az riliis anda di $2 (si $1 fi ditiel).
+Ef yu no waant yu raitn fi bi edit kyaahn don ahn ridischribyuut aal bout, den no sobmiti yaso.<br />
+Yu de pramis wi alzwel se a yu rait dis yuself, ar kapi'i frahn a poblik domien ar simila frii rizuos.
+'''No sobmit kapiraitid wok widoutn poermishan!'''",
+'templatesused' => '{{PLURAL:$1|Templit|Templitdem}} yuuz pahn dis piej:',
+'templatesusedpreview' => '{{PLURAL:$1|Templit|Templitdem}} yuuz ina dis priivyuu:',
+'template-protected' => '(protek)',
+'template-semiprotected' => '(semi-protek)',
+'hiddencategories' => 'Dis piej a memb a {{PLURAL:$1|1 idn kiatigari|$1 idn kiatigari}}:',
+'nocreatetitle' => 'Piej krieshan limit',
+'permissionserrors' => 'Permishan herro',
+'permissionserrorstext-withaction' => 'Yu no ab no poermishan fi $2, fi di falarin {{PLURAL:$1|riizn|riizndem}}:',
+'edit-conflict' => 'Hedit kanflik: $1',
+
+# Account creation failure
+'cantcreateaccounttitle' => 'Cyannat mek di hakkount',
+
+# History pages
+'viewpagelogs' => 'Vyuu lagdem fi dis piej',
+'currentrev-asof' => 'Lietis rivijan az av $1',
+'revisionasof' => 'Rivijan az av $1',
+'previousrevision' => '↠Uola rivijan',
+'nextrevision' => 'Nyuwa rivijan',
+'currentrevisionlink' => 'Lietis rivijan',
+'cur' => 'kor',
+'next' => 'nexx',
+'last' => 'priiv',
+'histlegend' => "Dif silekshan: maak di riedio bax fi di rivijandem fi kompier ahn lik enta ar di botn a di batom.<br />
+Lejen: '''({{int:cur}})''' = difrans wid lietis rivijan, '''({{int:last}})''' = difrans wid prisiidn rivijan, '''{{int:minoreditletter}}''' = maina edit.",
+'history-fieldset-title' => 'Brouz ischri',
+'histfirst' => "Oerli'is",
+'histlast' => 'Lietis',
+
+# Revision deletion
+'rev-delundel' => 'shuo/aid',
+'revdel-restore' => 'chienj vizibiliti',
+
+# Merge log
+'revertmerge' => 'Anmoerj',
+
+# Diffs
+'history-title' => 'Rivijan ischri a "$1"',
+'difference' => '(Difrans bitwiin rivijandem)',
+'lineno' => 'Lain $1:',
+'compareselectedversions' => 'Kompier silektid rivijan',
+'editundo' => 'andu',
+
+# Search results
+'searchresults' => 'Saach rizolt',
+'searchresults-title' => 'Saach rizolt fi "$1"',
+'searchresulttext' => 'Fi muo infamieshan bout saachin {{SITENAME}}, si [[{{MediaWiki:Helppage}}|{{int:help}}]].',
+'searchsubtitle' => 'Yu saach fi \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|aal piej taat wid "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|aal piej wa lingk tu "$1"]])',
+'searchsubtitleinvalid' => "Yu saach fi '''$1'''",
+'notitlematches' => 'No piej taikl mach',
+'notextmatches' => 'No piej tex mach',
+'prevn' => 'priivos {{PLURAL:$1|$1}}',
+'nextn' => 'nex {{PLURAL:$1|$1}}',
+'viewprevnext' => 'Vyuu ($1 {{int:pipe-separator}} $2) ($3)',
+'search-result-size' => '$1 ({{PLURAL:$2|1 wod|$2 wod}})',
+'search-redirect' => '(riidirek $1)',
+'search-section' => '(sekshan $1)',
+'search-suggest' => 'Yu wehn miin: $1',
+'search-interwiki-caption' => 'Sista prajek',
+'search-interwiki-default' => '$1 rizoltdem:',
+'search-interwiki-more' => '(muo)',
+'search-mwsuggest-enabled' => 'wid sojeshan',
+'search-mwsuggest-disabled' => 'nuo sojeshan',
+'nonefound' => "'''Nuot''': Onggl som niemspies saach bai difaalt.
+Chrai priifix yu kwieri wid ''all:'' fi saach aal kantent (inkluudn taak piej, templit, esechra), ar yuuz di dizaya niemspies fi priifix.",
+'powersearch' => 'Advans saach',
+'powersearch-legend' => 'Advans saach',
+'powersearch-ns' => 'Saach ina niemspies:',
+'powersearch-redir' => 'Lis riidirek',
+'powersearch-field' => 'Saach fi',
+
+# Preferences page
+'preferences' => 'Prefrans',
+'mypreferences' => 'Mi prefrans',
+
+# Groups
+'group-sysop' => 'Adminischrieta',
+
+'grouppage-sysop' => '{{ns:project}}:Adminischrieta',
+
+# User rights log
+'rightslog' => 'Yuuza raits lag',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'edit dis piej',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|chienj|chienjdem}}',
+'recentchanges' => 'Riisant chienjdem',
+'recentchanges-legend' => 'Riisant chienj apshan',
+'recentchanges-feed-description' => 'Chrak di muos riisant chienjdem tu di wiki ina dis fiid.',
+'rcnote' => "Below {{PLURAL:$1|a '''1''' chienj|a di laas '''$1''' chienj}} ina di laas {{PLURAL:$2|die|'''$2''' die}}, az av $5, $4.",
+'rclistfrom' => 'Shuo nyuu chienjdem we taat frahn $1',
+'rcshowhideminor' => '$1 maina editdem',
+'rcshowhidebots' => '$1 batdem',
+'rcshowhideliu' => '$1 lag-iin yuuzadem',
+'rcshowhideanons' => '$1 ananimos yuuzadem',
+'rcshowhidemine' => '$1 mi editdem',
+'rclinks' => 'Shuo laas $1 chienj ina laas $2 die<br />$3',
+'diff' => 'dif',
+'hist' => 'isch',
+'hide' => 'Aid',
+'show' => 'Shuo',
+'minoreditletter' => 'm',
+'newpageletter' => 'Nyuu',
+'boteditletter' => 'b',
+'rc-enhanced-expand' => 'Shuo ditiel (rikwaya JavaScript)',
+'rc-enhanced-hide' => 'Aid ditiel',
+
+# Recent changes linked
+'recentchangeslinked' => 'Rilietid chienj',
+'recentchangeslinked-title' => 'Chienj riliet tu "$1"',
+'recentchangeslinked-summary' => "Dis a lis a riisent chienj wa mek tu piej wa lingk frahn spesifai piej (ar tu memba a spesifai kiatigeri).
+Piej pahn [[Special:Watchlist|yu wachlis]] dem '''buol'''.",
+'recentchangeslinked-page' => 'Piej niem',
+'recentchangeslinked-to' => 'Shuo chienjdem tu piej wa lingk tu di gibn piej insted',
+
+# Upload
+'upload' => 'Opluod fail',
+'uploadlogpage' => 'Opluod lag',
+'uploadedimage' => 'opluodid "[[$1]]"',
+
+# File description page
+'filehist' => 'Fail ischri',
+'filehist-help' => 'Klik pan a diet/taim fi vyuu di fail az ou iapier a di taim.',
+'filehist-current' => 'korant',
+'filehist-datetime' => 'Diet/Taim',
+'filehist-thumb' => 'Tomniel',
+'filehist-thumbtext' => 'Tomniel fi voerjan az av $1',
+'filehist-user' => 'Yuuza',
+'filehist-dimensions' => 'Daimenshan',
+'filehist-comment' => 'Kament',
+'imagelinks' => 'Fail lingk',
+'linkstoimage' => 'Di falarin {{PLURAL:$1|piej lingk|$1 piejdem lingk}}',
+'sharedupload' => 'Dis fail kom frahn $1 ahn kiahn yuuz bai ada prajek.',
+'uploadnewversion-linktext' => 'Opluod nyuu voerjan a dis fail',
+
+# Statistics
+'statistics' => 'Tatistik',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|bait|bait}}',
+'nmembers' => '$1 {{PLURAL:$1|memba|membadem}}',
+'prefixindex' => 'Aal piej wid priifix',
+'newpages' => 'Nyuu piejdem',
+'move' => 'Muuv',
+'movethispage' => 'Muuv dis piej',
+'pager-newer-n' => '{{PLURAL:$1|nyuwa 1|nyuwa $1}}',
+'pager-older-n' => '{{PLURAL:$1|uola 1|uola $1}}',
+
+# Book sources
+'booksources' => 'Buk suos',
+'booksources-search-legend' => 'Saach fi buk suos',
+'booksources-go' => 'Gwaan',
+
+# Special:Log
+'log' => 'Lagdem',
+
+# Special:AllPages
+'allpages' => 'Aal piej',
+'alphaindexline' => '$1 tu $2',
+'prevpage' => 'Priivos piej ($1)',
+'allpagesfrom' => 'Displie piej taat a:',
+'allpagesto' => 'Displie piej en a:',
+'allarticles' => 'Aal piej',
+'allpagessubmit' => 'Gwaan',
+
+# Special:LinkSearch
+'linksearch' => 'Extoernal lingk',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Yuuza krieshan lag',
+'newuserlog-create-entry' => 'Nyuu yuuza akount',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(lis a memba)',
+
+# E-mail user
+'emailuser' => 'E-miel dis yuuza',
+
+# Watchlist
+'watchlist' => 'Mi wachlis',
+'mywatchlist' => 'Mi wachlis',
+'addedwatchtext' => "Di piej \"[[:\$1]]\" don ad tu yu [[Special:Watchlist|wachlis]].
+Fyuucha chienj tu dis piej ahn iasuosietid taak piej wi lis de, ahn di piej wi apier '''buoldid''' ina di [[Special:RecentChanges|lis a riisent chienjdem]] fi meki iizia fi pik out.",
+'removedwatchtext' => 'Di piej "[[:$1]]" rimuuv gaan frahn [[Special:Watchlist|yu wachlis]].',
+'watch' => 'Wach',
+'watchthispage' => 'Wach dis piej',
+'unwatch' => 'Anwach',
+'watchlist-details' => '{{PLURAL:$1|$1 piej|$1 piej}} pahn yu wachlis, naa kount taak piej.',
+'wlshowlast' => 'Shuo laas $1 howa $2 die $3',
+'watchlist-options' => 'Wachlis apshan',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'De wach ...',
+'unwatching' => 'De anwach ...',
+
+# Delete
+'deletepage' => 'Diliit piej',
+'confirmdeletetext' => "Yu bout fi diliit a piej alangx wid aal a i'ischri.
+Begyu kanfoerm se yu inten fi du dis, se yu andastan di kansikwens, ahn se yu a du dis askaadans wid [[{{MediaWiki:Policy-url}}|di palisi]].",
+'actioncomplete' => 'Akshan kompliit',
+'deletedtext' => '"$1" don diliit.
+Si $2 fi a rekaad a riisant diliishan.',
+'deletedarticle' => 'diliitid "[[$1]]"',
+'dellogpage' => 'Diliishan lag',
+'deletecomment' => 'Riizn:',
+'deleteotherreason' => 'Ada/adishanal riizn:',
+'deletereasonotherlist' => 'Ada riizn',
+
+# Rollback
+'rollbacklink' => 'ruolbak',
+
+# Protect
+'protectlogpage' => 'Protekshan lag',
+'protectedarticle' => 'don protek "[[$1]]"',
+'modifiedarticleprotection' => 'don chienj protekshan lebl fi "[[$1]]"',
+'protectcomment' => 'Riizn:',
+'protectexpiry' => 'Expaya:',
+'protect_expiry_invalid' => 'Expairi taim invalid.',
+'protect_expiry_old' => 'Expairi taim ina di paas.',
+'protect-text' => "Yu kiahn vyuu ahn chienj di protekshan lebl yaso fi di piej '''$1'''.",
+'protect-locked-access' => "Yu akount no ab no poermishan fi chienj piej protekshan lebl.
+Demaya a di korant setndem fi di piej '''$1''':",
+'protect-cascadeon' => "Dis piej korantli protek kaa i'inkluud ina di falarin {{PLURAL:$1|piej, ush ab|piejdem, ush ab}} kiaskiedn protekshan ton aan.
+Yu kiahn chienj dis piej protekshan lebl, bot inaa go afek di kiaskiedn protekshan.",
+'protect-default' => 'Lou aal yuuza',
+'protect-fallback' => 'Rikwaya "$1" poermishan',
+'protect-level-autoconfirmed' => 'Blak nyuu ahn anrejista yuuza',
+'protect-level-sysop' => 'Adminischrieta onli',
+'protect-summary-cascade' => 'kiaskiedn',
+'protect-expiring' => 'expaya $1 (UTC)',
+'protect-cascade' => 'Protek piej wa inkluud ina dis piej (kiaskiedn protekshan)',
+'protect-cantedit' => 'Yu kyaahn chienj no protekshan lebl a dis piej, kaa yu no ab no poermishan fi editi.',
+'restriction-type' => 'Poermishan:',
+'restriction-level' => 'Rischrikshan lebl:',
+
+# Undelete
+'undeletelink' => 'vyuu/ristuor',
+'undeletedarticle' => 'don ristuor "[[$1]]"',
+
+# Namespace form on various pages
+'namespace' => 'Niemspies',
+'invert' => 'Invoert silekshan',
+'blanknamespace' => '(Mien)',
+
+# Contributions
+'contributions' => 'Yuuza kanchribyuushan',
+'contributions-title' => 'Yuuza kanchribiushan fi $1',
+'mycontris' => 'Mi kanchribyuushan',
+'contribsub2' => 'Fi $1 ($2)',
+'uctop' => '(tap)',
+'month' => 'Frahn mont (ahn oerlia):',
+'year' => 'Frahn ier (ahn oerlia):',
+
+'sp-contributions-newbies' => 'Shuo kanchribiushan fi onggl nyuu akount',
+'sp-contributions-blocklog' => 'Blak lag',
+'sp-contributions-search' => 'Saach fi kanchribiushan',
+'sp-contributions-username' => 'IP ajres ar yuuzaniem',
+'sp-contributions-submit' => 'Saach',
+
+# What links here
+'whatlinkshere' => 'Wa lingk ya',
+'whatlinkshere-title' => 'Piej wa lingk tu "$1"',
+'whatlinkshere-page' => 'Piej:',
+'linkshere' => "Di falarin piejdem lingk tu '''[[:$1]]''':",
+'isredirect' => 'riidirek piej',
+'istemplate' => 'chranskluujan',
+'isimage' => 'imij lingk',
+'whatlinkshere-prev' => '{{PLURAL:$1|priivos|priivos $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|nex|nex $1}}',
+'whatlinkshere-links' => '↠lingkdem',
+'whatlinkshere-hideredirs' => '$1 riidirek',
+'whatlinkshere-hidetrans' => '$1 chransklujan',
+'whatlinkshere-hidelinks' => '$1 lingkdem',
+'whatlinkshere-filters' => 'Filta',
+
+# Block/unblock
+'blockip' => 'Blak yuuza',
+'ipboptions' => '2 owa:2 hours,1 die:1 day,3 die:3 days,1 wiik:1 week,2 wiik:2 weeks,1 mont:1 month,3 mont:3 months,6 mont:6 months,1 ier:1 year,infinet:infinite',
+'ipblocklist' => 'IP ajres and yuuzaniem dem wa blak',
+'blocklink' => 'blak',
+'unblocklink' => 'anblak',
+'change-blocklink' => 'chienj blak',
+'contribslink' => 'kanchribdem',
+'blocklogpage' => 'Blak lag',
+'blocklogentry' => 'blak [[$1]] wid expairi taim a $2 $3',
+'unblocklogentry' => 'anblak $1',
+'block-log-flags-nocreate' => 'akount krieshan disiebl',
+
+# Move page
+'movepagetext' => "Yuuz di faam biluo fi riniem a piej, ahn muuv aal a i'ischri tu di nyuu niem.
+Di uol taikl wi bikomz a riidirek piej tu di nyuu taikl.
+Yu kiahn opdiet riidirek wa paint tu di orijinal taikl aatamatikali.
+Ef yu no chuuz fi dwiit, bi shuor fi chek fi [[Special:DoubleRedirects|dobl]] ar [[Special:BrokenRedirects|brok riidirek]].
+Yu rispans fi mek shuor se lingk kantiniu fi paint we dehn supuoz fi go.
+
+Nuot se di piej '''naa''' go muuv ef piej de aredi a di nyuu taikl, anles iempti ar a riidirek ahn no ha no paas edit ischri.
+Dis miin se yu kiahn riiniem a piej bak tu wa iriiniem fram ef yu mek mistiek, ahn yu kyaahn uovarait a egzistin piej.
+
+'''Waanin!'''
+Dis kiahn bi a jrastik ahn anexpektid chienj fi a papiula piej;
+begyu mek shuor yu andastan di kansikwens a dis bifuo yu prosiid.",
+'movepagetalktext' => "Di asuosietid taak piej wi aatamatikali muuv alangx widi '''anles:'''
+* A nan-emti taak piej egzis aredi anda di nyuu niem, ar
+*Yu anchel di bax biluo.
+
+Ina demde kies, yu wi afi muuv ar moerj di piej manyuali ef yu dizaya.",
+'movearticle' => 'Muuv piej',
+'newtitle' => 'Tu nyuu taikl:',
+'move-watch' => 'Wach suos piej ahn taagit piej',
+'movepagebtn' => 'Muuv piej',
+'pagemovedsub' => 'Muuv soksiid',
+'movepage-moved' => '\'\'\'"$1" muuv gaan a "$2"\'\'\'',
+'articleexists' => 'Piej wid daade niem egzis aredi, ar di niem yu chuuz no valid.
+Begyu chuuz aneda niem.',
+'talkexists' => "'''Di piej iself don muuv soksesfuli, bot di taak piek kudn muuv kaazn se wan egzis aredi a di nyuu taikl.
+Begyu moerj dem manyuali.'''",
+'movedto' => 'muuv gaan a',
+'movetalk' => 'Muuv asuosietid taak piej',
+'1movedto2' => '[[$1]] muuv gaan a [[$2]]',
+'1movedto2_redir' => 'muuv [[$1]] tu [[$2]] uoba ridirek',
+'movelogpage' => 'Muuv lag',
+'movereason' => 'Riizn:',
+'revertmove' => 'rivoert',
+
+# Export
+'export' => 'Expuot piejdem',
+
+# Thumbnails
+'thumbnail-more' => 'Inlaaj',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Yu yuuza piej',
+'tooltip-pt-mytalk' => 'Yu taak piej',
+'tooltip-pt-preferences' => 'Yu prefrans',
+'tooltip-pt-watchlist' => 'Di lis a piej yu a manita fi chienj',
+'tooltip-pt-mycontris' => 'Lis a yu kanchribyuushan',
+'tooltip-pt-login' => 'Yu inkorij fi lag iin; ousomeba, ino mos ahn boun',
+'tooltip-pt-logout' => 'Lag out',
+'tooltip-ca-talk' => 'Diskoshan bout di kantent piej',
+'tooltip-ca-edit' => 'Yu kiahn edit dis piej. Du yuuz di priivyuu botn bifuo yu sieb',
+'tooltip-ca-addsection' => 'Taat a nyuu sekshan',
+'tooltip-ca-viewsource' => 'Dis piej protek.
+Yu kiahn vyuu isuos.',
+'tooltip-ca-history' => 'Paas rivijan a dis piej',
+'tooltip-ca-protect' => 'Protek dis piej',
+'tooltip-ca-delete' => 'Diliit dis piej',
+'tooltip-ca-move' => 'Muuv dis piej',
+'tooltip-ca-watch' => 'Ad dis piej tu yu wachlis',
+'tooltip-ca-unwatch' => 'Rimuuv dis piej frahn yu wachlis',
+'tooltip-search' => 'Saach {{SITENAME}}',
+'tooltip-search-go' => 'Go tu a piej wid disaya egzak niem ef iegzis',
+'tooltip-search-fulltext' => 'Saach di piejdem fi disaya tex',
+'tooltip-n-mainpage' => 'Vizit di mien piej',
+'tooltip-n-mainpage-description' => 'Vizit di mien piej',
+'tooltip-n-portal' => 'Bout di prajek, wa yu kiahn du, we fi fain tingz',
+'tooltip-n-currentevents' => 'Fain bakgrong infamieshan pahn korant ivent',
+'tooltip-n-recentchanges' => 'Di lis a riisant chienj ina di wiki',
+'tooltip-n-randompage' => 'Luod random piej',
+'tooltip-n-help' => 'Di plies fi fain out',
+'tooltip-t-whatlinkshere' => 'Lis a aal wiki piej wa link ya',
+'tooltip-t-recentchangeslinked' => 'Riisant chienj ina piej wa lingk frahn dis piej',
+'tooltip-feed-rss' => 'RSS fiid fi dis piej',
+'tooltip-feed-atom' => 'Atom fiid fi dis piej',
+'tooltip-t-contributions' => 'Vyuu di lis a kanchribyuushan a dis yuuza',
+'tooltip-t-emailuser' => 'Sen e-miel tu dis yuuza',
+'tooltip-t-upload' => 'Opluod fail',
+'tooltip-t-specialpages' => 'Lis a aal peshal piej',
+'tooltip-t-print' => 'Printobl voerjan a dis piej',
+'tooltip-t-permalink' => 'Poermanint lingk tu dis rivijan a di piej',
+'tooltip-ca-nstab-main' => 'Vyuu di kantent piej',
+'tooltip-ca-nstab-user' => 'Vyuu di yuuza piej',
+'tooltip-ca-nstab-special' => 'Dis a peshal piej, yu kyaahn edit di piej iself',
+'tooltip-ca-nstab-project' => 'Vyuu di prajek piej',
+'tooltip-ca-nstab-image' => 'Vyuu di fail piej',
+'tooltip-ca-nstab-template' => 'Vyuu di templit',
+'tooltip-ca-nstab-category' => 'Vyuu di kiatigari piej',
+'tooltip-minoredit' => 'Maak dis az a maina edit',
+'tooltip-save' => 'Siev yu chienjdem',
+'tooltip-preview' => 'Priivyuu yu chienjdem, begyu yuuz dis bifuo yu sieb!',
+'tooltip-diff' => 'Shuo hush chienjdem yu mek tu di tex',
+'tooltip-compareselectedversions' => 'Si di difransdem bitwiin di tuu silektid rivijan a dis piej',
+'tooltip-watch' => 'Ad dis piej tu yu wachlis',
+'tooltip-rollback' => '"Ruolbak" rivoert edit(dem) tu dis piej a di laas kanchribiuta ina wan klik',
+'tooltip-undo' => '"Andu" rivoert dis edit ahn opin di edit faam ina priivyuu muod. Ilou yu fi ad riizn ina di somari.',
+
+# Browsing diffs
+'previousdiff' => '↠Uola edit',
+'nextdiff' => 'Nyuwa edit',
+
+# Media information
+'file-info-size' => '$1 × $2 pixl, fail saiz: $3, MIME taip: $4',
+'file-nohires' => '<small>No aya rezaluushan no avielobl.</small>',
+'svg-long-desc' => 'SVG fail, naminali $1 × $2 pixl, fail saiz: $3',
+'show-big-image' => 'Ful rezaluushan',
+
+# Bad image list
+'bad_image_list' => 'Di faamat go so:
+
+Onggl lis aitem (lain taat wid *) wi kansida.
+Di fos lingk pan a lain mos bi a lingk tu a bad fail.
+Eni sobsikwent lingk pahn di siem lain kansida fi bi eksepshan, i.e. piej we di fail maita okor inlain.',
+
+# Metadata
+'metadata' => 'Metadieta',
+'metadata-help' => 'Dis fail kantien adishanal infamieshan, prabli wa ad frahn di dijital kiamara ar skiana yuuz fi kriet ar dijitaizi.
+Ef di fail madifai frahn iarijinal stiet, som ditiel maita no fuli riflek di madifai fail.',
+'metadata-expand' => 'Shuo extendid ditiel',
+'metadata-collapse' => 'Aid extendid ditiel',
+'metadata-fields' => 'EXIF metadieta fiil wa lis ina dis mechiz wi inkluud pahn imij piej displie wen di metadieta tiebl get kalaps.
+Ada wandem wi aid bai difaalt.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
+# External editor support
+'edit-externally' => 'Yuuz extoernal aplikieshan fi edit dis fail',
+'edit-externally-help' => '(Si di [//www.mediawiki.org/wiki/Manual:External_editors setop inschrokshan] fi muo infamieshan)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'aal',
+'namespacesall' => 'aal',
+'monthsall' => 'aal',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Vyuu rilivant chienjdem',
+'watchlisttools-edit' => 'Vyuu ahn edit wachlis',
+'watchlisttools-raw' => 'Edit raa wachlis',
+
+# Special:SpecialPages
+'specialpages' => 'Peshal piej',
+
+);
diff --git a/languages/messages/MessagesJut.php b/languages/messages/MessagesJut.php
index 21b9709c..da706381 100644
--- a/languages/messages/MessagesJut.php
+++ b/languages/messages/MessagesJut.php
@@ -121,9 +121,6 @@ $messages = array(
'hidden-category-category' => 'Skjulte klynger',
'listingcontinuesabbrev' => 'førtgøte',
-'mainpagetext' => "'''MediaWiki er nu installeret.'''",
-'mainpagedocfooter' => "Se vores engelsksprÃ¥Äede [http://meta.wikimedia.org/wiki/MediaWiki_localisation dokumentÃ¥sje tilpasnenge'm Ã¥f æ brugergrænseflade] og [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide æ brugervejlednenge] før Ã¥plysnenger Ã¥psætnenge'm og anvendelse.",
-
'about' => 'Ã…m',
'article' => 'Ertikel',
'newwindow' => '(Ã¥bner i et nyt vendue)',
@@ -157,7 +154,6 @@ $messages = array(
'history' => 'Skigt',
'history_short' => 'Skigte',
'updatedmarker' => '(ændret)',
-'info_short' => 'Informåsje',
'printableversion' => 'Utskreftsvelig utgåf',
'permalink' => 'Permanent henvesnenge',
'print' => 'Udskrev',
@@ -328,7 +324,7 @@ Førespørgsel: $2',
'loginsuccesstitle' => 'Du er nu loÄget pÃ¥',
'loginsuccess' => 'Du er nu loÄget pÃ¥ {{SITENAME}} søm "$1".',
'nosuchuser' => 'Der er ig\'n bruger ve navnet "$1". Kontrollér æ stavemåde ig\'n, æller brug æ formulår herunder til at åprette en ny brugerkonto.',
-'nosuchusershort' => 'Der er ig\'n bruger ve navn "<nowiki>$1</nowiki>". Tjek din stavnenge.',
+'nosuchusershort' => 'Der er ig\'n bruger ve navn "$1". Tjek din stavnenge.',
'nouserspecified' => 'Angæv venlegst et brugernavn.',
'wrongpassword' => "Den endtastede adgangskode var førkert. Prøv ig'n.",
'wrongpasswordempty' => "Du glemte at endtaste password. Prøv ig'n.",
@@ -350,7 +346,7 @@ Du bør loÄge pÃ¥ og ændre din adgangskode straks æfter du harst modtaget æ
Før en e-mail ken modtages åf andre brugere åf æ {{SITENAME}}-mailfunksje, skel æ adresse og dens tilhørsførholt til denne bruger bekræftes. Følg venlegst anvesnengerne i denne mail.',
-# Password reset dialog
+# Change password dialog
'retypenew' => 'Gentag ny adgangskode',
# Edit page toolbar
@@ -364,8 +360,6 @@ Før en e-mail ken modtages åf andre brugere åf æ {{SITENAME}}-mailfunksje, s
'extlink_tip' => 'Utsende henvesnenge (husk http:// førgøret)',
'headline_sample' => 'Skrevselenger til åverskreft',
'headline_tip' => 'Skå 2 åverskreft',
-'math_sample' => 'Endsæt åpstælsel her (LaTeX)',
-'math_tip' => 'Matematisk åpstælsel (LaTeX)',
'nowiki_sample' => 'Endsæt skrevselenger her søm ekke skal redigær påke wikiskrevselenger',
'nowiki_tip' => 'Ekke wikiskrevselenger utse',
'image_tip' => 'Endlejret billet',
@@ -628,9 +622,7 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre Ã
# Watchlist
'watchlist' => 'Åvervågnengsliste',
'mywatchlist' => 'Åvervågnengsliste',
-'addedwatch' => 'Tilføjet til din åvervågnengsliste',
'addedwatchtext' => "Æ side \"[[:\$1]]\" er blevet tilføjet til din [[Special:Watchlist|åvervågningsliste]]. Fremtidige ændrenger til denne side og den tilhørende diskusjeside hvil bleve listet der, og æ side hvil fremstå '''fremhævet''' i'n [[Special:RecentChanges|liste ve de seneste ændrenger]] før at gøre det lettere at finde den. Hves du senere hvilst fjerne'n side frå din åvervågningsliste, så klik \"Fjern åvervågnenge\".",
-'removedwatch' => 'Fjernet frå åvervågnengsliste',
'removedwatchtext' => 'Æ side "[[:$1]]" er blevet fjernet frå din åvervågnengsliste.',
'watch' => 'Åvervåg',
'watchthispage' => 'Åvervåg side',
@@ -649,7 +641,7 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre Ã
æller et billet sammen ve hæle den tilhørende skigte frå'n database. Bekræft venlegst at du virkelg hvilst gøre dette, at du førstårst konsekvenserne, og at du gør dette i åverensstemmelse ve
[[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Gennemført',
-'deletedtext' => '"<nowiki>$1</nowiki>" er slettet. Sæg $2 før en førtegnelse åver de nyeste sletnenger.',
+'deletedtext' => '"$1" er slettet. Sæg $2 før en førtegnelse åver de nyeste sletnenger.',
'deletedarticle' => 'slettede "[[$1]]"',
'dellogpage' => 'Sletnengslog',
'deletecomment' => 'Begrundelse:',
@@ -666,7 +658,7 @@ hersenenge, (førge) = førskel til den førge hersenenge, l = lile til mendre Ã
'protectexpiry' => 'Udløb:',
'protect_expiry_invalid' => 'Æ udløbstiid er ugyldeg.',
'protect_expiry_old' => "Æ udløbstiid legger i'n førtiid.",
-'protect-text' => "Her ken beskyttelsesståt før æ side '''<nowiki>$1</nowiki>''' ses og ændres.",
+'protect-text' => "Her ken beskyttelsesståt før æ side '''$1''' ses og ændres.",
'protect-locked-access' => "Den brugerkonto har ekke de nødvendege rettegheder til at æ ændre sidebeskyttelse. Her er de aktuelle beskyttelsesendstellenger før æ side '''„$1“:'''",
'protect-cascadeon' => 'Denne side er del åf en nedarvet skrevebeskyttelse. Wen er endeholt i nedenstående {{PLURAL:$1|side|sider}}, søm er skrevebeskyttet ve tilvalg åf "nedarvende sidebeskyttelse" Æ sidebeskyttelse ken ændres før denne side, det påverker dog ekke\'n kaskadespærrenge:',
'protect-default' => 'Ål (standård)',
@@ -817,11 +809,10 @@ navn du harst valgt er ekke gyldegt. Vælg et andet navn.',
'nextdiff' => 'Gå til næste førskel →',
# Media information
-'file-info-size' => '$1 × $2 pixel, gøretstørrelse: $3, MIME-senenge: $4',
-'file-nohires' => '<small>Engen højere åpløsnenge fundet.</small>',
-'svg-long-desc' => 'SVG gøret, wønetstørrelse $1 × $2 pixel, gøretstørrelse: $3',
-'show-big-image' => 'Hersenenge i større åpløsnenge',
-'show-big-image-thumb' => '<small>Størrelse åf førhåndsvesnenge: $1 × $2 pixel</small>',
+'file-info-size' => '$1 × $2 pixel, gøretstørrelse: $3, MIME-senenge: $4',
+'file-nohires' => '<small>Engen højere åpløsnenge fundet.</small>',
+'svg-long-desc' => 'SVG gøret, wønetstørrelse $1 × $2 pixel, gøretstørrelse: $3',
+'show-big-image' => 'Hersenenge i større åpløsnenge',
# Special:NewFiles
'newimages' => 'Liste ve de nyeste billeter',
@@ -843,11 +834,17 @@ Kun endholtet åf æ liste (lenjer startende ve *) bliver brugt. Den første hen
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => "Redigær denne gøret ve'n utsende redigærstøme",
-'edit-externally-help' => 'Se [http://www.mediawiki.org/wiki/Manual:External_editors setup hjælpje] før mære informasje.',
+'edit-externally-help' => 'Se [//www.mediawiki.org/wiki/Manual:External_editors setup hjælpje] før mære informasje.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'Ã¥le',
diff --git a/languages/messages/MessagesJv.php b/languages/messages/MessagesJv.php
index cf46415a..5e9d2d67 100644
--- a/languages/messages/MessagesJv.php
+++ b/languages/messages/MessagesJv.php
@@ -77,9 +77,9 @@ $messages = array(
'tog-oldsig' => 'Tapak asma sing ana:',
'tog-fancysig' => 'Anggepen tapak asta minangka teks wiki (tanpa pranala otomatis)',
'tog-externaleditor' => 'Pigunakaken program pangolah tembung jawi (namung tumrap ahli, perlu pangaturan mligi ing komputer panjenengan.
-[http://www.mediawiki.org/wiki/Manual:External_editors Informasi sajangkepipun].)',
+[//www.mediawiki.org/wiki/Manual:External_editors Informasi sajangkepipun].)',
'tog-externaldiff' => 'Pigunakaken diff eksternal sacara bektan (namung tumrap para ahli, perlu pangaturan mligi ing komputer panjenengan.
-[http://www.mediawiki.org/wiki/Manual:External_editors Informasi sajangkepipun].)',
+[//www.mediawiki.org/wiki/Manual:External_editors Informasi sajangkepipun].)',
'tog-showjumplinks' => 'Aktifna pranala pambiyantu "langsung menyang"',
'tog-uselivepreview' => 'Nganggoa pratayang langsung (JavaScript) (eksperimental)',
'tog-forceeditsummary' => 'Élingna aku menawa kothak ringkesan suntingan isih kosong',
@@ -175,13 +175,7 @@ $messages = array(
'listingcontinuesabbrev' => 'samb.',
'index-category' => 'Kaca sing diindhèks',
'noindex-category' => 'Kaca sing ora diindhèks',
-
-'mainpagetext' => "'''Prangkat empuk wiki wis suksès dipasang.'''",
-'mainpagedocfooter' => "Mangga maca [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] kanggo katrangan luwih langkung prakara panggunan prangkat empuk wiki
-== Miwiti panggunan ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Daftar pangaturan préférènsi]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Milis rilis MediaWiki]",
+'broken-file-category' => 'Kaca kanthi pranala gambar rusak',
'about' => 'Prakara',
'article' => 'Artikel',
@@ -233,10 +227,10 @@ $messages = array(
'history' => 'Vèrsi sadurungé',
'history_short' => 'Vèrsi lawas',
'updatedmarker' => 'diowahi wiwit kunjungan pungkasanku',
-'info_short' => 'Informasi',
'printableversion' => 'Versi cithak',
'permalink' => 'Pranala permanèn',
'print' => 'Cithak',
+'view' => 'Pirsani',
'edit' => 'Sunting',
'create' => 'Nggawé',
'editthispage' => 'Sunting kaca iki',
@@ -244,6 +238,7 @@ $messages = array(
'delete' => 'Busak',
'deletethispage' => 'Busak kaca iki',
'undelete_short' => 'Batal busak $1 {{PLURAL:$1|suntingan|suntingan}}',
+'viewdeleted_short' => 'Pirsani {{PLURAL:$1|suntingan|suntingan}} ingkang sampun kabusak',
'protect' => 'Reksanen',
'protect_change' => 'ngowahi reksanan',
'protectthispage' => 'Reksanen kaca iki',
@@ -327,6 +322,8 @@ $1',
'toc' => 'Bab lan paragraf',
'showtoc' => 'tuduhna',
'hidetoc' => 'delikna',
+'collapsible-collapse' => 'Singidaken',
+'collapsible-expand' => 'Tuduhna',
'thisisdeleted' => 'Mirsani utawa mbalèkaké $1?',
'viewdeleted' => 'Mirsani $1?',
'restorelink' => '$1 {{PLURAL:$1|suntingan|suntingan}} sing wis kabusak',
@@ -413,12 +410,11 @@ Mangga dicoba manèh ing sawetara menit.',
'protectedinterface' => 'Kaca iki isiné tèks antarmuka sing dienggo software lan wis dikunci kanggo menghindari kasalahan.',
'editinginterface' => "'''Pènget:''' Panjenengan nyunting kaca sing dianggo nyedyakaké tèks antarmuka kanggo piranti alus.
Pangowahan kaca iki bakal awèh pangaruh marang tampilan antarmuka panganggo kanggoné panganggo liya.
-Kanggo terjemahan, mangga nganggo [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], proyèk lokalisasi MediaWiki.",
+Kanggo terjemahan, mangga nganggo [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], proyèk lokalisasi MediaWiki.",
'sqlhidden' => '(Panyuwunan SQL didelikaké)',
'cascadeprotected' => 'Kaca iki wis direksa saka panyuntingan amerga disertakaké ing {{PLURAL:$1|kaca|kaca-kaca}} ngisor iki sing wis direksa mawa opsi "runtun" diaktifaké:
$2',
'namespaceprotected' => "Panjenengan ora kagungan idin kanggo nyunting kaca ing bilik nama '''$1'''.",
-'customcssjsprotected' => 'Panjenengan ora kagungan idin kanggo nyunting kaca iki amerga ngandhut pangaturan pribadi panganggo liya.',
'ns-specialprotected' => 'Kaca ing bilik nama astaméwa utawa kusus, ora bisa disunting.',
'titleprotected' => "Irah-irahan iki direksa ora olèh digawé déning [[User:$1|$1]].
Alesané yaiku ''$2''.",
@@ -465,6 +461,8 @@ Mangga pilih asma liyané.',
'createaccounterror' => 'Ora bisa nyipta akun: $1',
'nocookiesnew' => "Rékening utawa akun panganggo panjenengan wis digawé, nanging panjenengan durung mlebu log. {{SITENAME}} nggunakaké ''cookies'' kanggo log panganggo. ''Cookies'' ing panjlajah wèb panjengengan dipatèni. Mangga diaktifaké lan mlebu log manèh mawa jeneng panganggo lan tembung sandhi panjenengan.",
'nocookieslogin' => "{{SITENAME}} nggunakaké ''cookies'' kanggo log panganggoné. ''Cookies'' ing panjlajah wèb panjenengan dipatèni. Mangga ngaktifaké manèh lan coba manèh.",
+'nocookiesfornew' => 'Akun panganggé boten kadamel, amargi kita boten saged mesthèkaken sumberipun.
+Pesthèkaken panjenengan sampun ngaktifaken kuki, lajeng amot malih kaca punika lan cobi malih.',
'noname' => 'Asma panganggo sing panjenengan pilih ora sah.',
'loginsuccesstitle' => 'Bisa suksès mlebu log',
'loginsuccess' => "'''Panjenengan saiki mlebu ing {{SITENAME}} kanthi asma \"\$1\".'''",
@@ -511,7 +509,7 @@ Tulung nunggu dhisik sadurungé njajal manèh.',
'loginlanguagelabel' => 'Basa: $1',
'suspicious-userlogout' => 'Panjaluk panjenengan supaya metu ditolak amarga katoné panjlajah internt utawa proksi panyinggah.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Ganti tembung sandi',
'resetpass_announce' => 'Panjenengan wis mlebu log mawa kodhe sementara sing dikirim mawa e-mail. Menawa kersa nglanjutaké, panjenengan kudu milih tembung sandhi anyar ing kéné:',
'resetpass_text' => '<!-- Tambahaké teks ing kéné -->',
@@ -529,6 +527,9 @@ Tulung nunggu dhisik sadurungé njajal manèh.',
Panjengen manawa wis kasil ganti tembung sandi utawa nyuwun tembung sandi sauntara sing anyar.',
'resetpass-temp-password' => 'Tembung sandi sauntara:',
+# Special:PasswordReset
+'passwordreset-username' => 'Jeneng panganggo:',
+
# Edit page toolbar
'bold_sample' => 'Tèks iki bakal dicithak kandel',
'bold_tip' => 'Cithak kandel',
@@ -540,8 +541,6 @@ Panjengen manawa wis kasil ganti tembung sandi utawa nyuwun tembung sandi saunta
'extlink_tip' => 'Pranala njaba (aja lali wiwitan http:// )',
'headline_sample' => 'Tèks judhul',
'headline_tip' => 'Subbagian tingkat 1',
-'math_sample' => 'Lebokna rumus ing kéné',
-'math_tip' => 'Rumus matematika (LaTeX)',
'nowiki_sample' => 'Tèks iki ora bakal diformat',
'nowiki_tip' => 'Aja nganggo format wiki',
'image_sample' => 'Conto.jpg',
@@ -619,7 +618,7 @@ Yèn ora sengaja tekan kéné, bisa ngeklik pencètan '''back''' waé ing panjla
'anontalkpagetext' => "---- ''Iki yaiku kaca dhiskusi sawijining panganggo anonim sing durung kagungan akun utawa ora nganggo akuné, dadi kita keeksa kudu nganggo alamat IP-né kanggo nepangi. Alamat IP kaya mengkéné iki bisa dienggo déning panganggo sing séjé-séjé. Yèn panjenengan pancèn panganggo anonim lan olèh komentar-komentar miring, mangga [[Special:UserLogin/signup|nggawé akun]] utawa [[Special:UserLogin|log mlebu]] supaya ora rancu karo panganggo anonim liyané ing mangsa ngarep.''",
'noarticletext' => 'Saiki ora ana tèks ing kaca iki. Panjenengan bisa [[Special:Search/{{PAGENAME}}|nglakoni panggolèkan kanggo judhul iki kaca iki]] ing kaca-kaca liyané, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|kaca={{urlencode:{{FULLPAGENAME}}}}}} nggolèki log kagandhèng],
utawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} nyunting kaca iki]</span>.',
-'userpage-userdoesnotexist' => 'Akun utawa rékening panganggo "$1" ora kadaftar.',
+'userpage-userdoesnotexist' => 'Akun utawa rékening panganggo "<nowiki>$1</nowiki>" ora kadaftar.',
'userpage-userdoesnotexist-view' => 'Panganggo "$1" ora kadhaptar.',
'blocked-notice-logextract' => 'Panganggo iki saiki lagi diblokir.
Log pamblokiran pungkasan dituduhaké ing ngisor iki minangka bahan rujukan:',
@@ -969,7 +968,6 @@ Gunakna tombol radio kanggo nggabungaké révisi-révisi sing digawé sadurungé
'changepassword' => 'Ganti tembung sandi',
'prefs-skin' => 'Kulit',
'skin-preview' => 'Pratilik',
-'prefs-math' => 'Matématika',
'datedefault' => 'Ora ana préferènsi',
'prefs-datetime' => 'Tanggal lan wektu',
'prefs-personal' => 'Profil panganggo',
@@ -993,8 +991,6 @@ Gunakna tombol radio kanggo nggabungaké révisi-révisi sing digawé sadurungé
'columns' => 'Kolom:',
'searchresultshead' => 'Panggolèkan',
'resultsperpage' => 'Cacahing klik saben kaca:',
-'contextlines' => 'Baris dituduhaké per pituwas (kasil):',
-'contextchars' => 'Karakter kanggo kontèks per baris:',
'stub-threshold' => 'Ambang wates kanggo format <a href="#" class="stub">pranala rintisan</a>:',
'recentchangesdays' => 'Cacahé dina sing dituduhaké ing owah-owahan pungkasan:',
'recentchangesdays-max' => '(maksimum $1 {{PLURAL:$1|dina|dina}})',
@@ -1173,7 +1169,6 @@ Panjenengan uga bisa milih supaya wong liya ngubungi panjenengan liwat jeneng pa
'right-userrights' => 'Sunting kabèh hak-hak panganggo',
'right-userrights-interwiki' => 'Sunting hak-hak para panganggo ing situs-situs wiki liya',
'right-siteadmin' => 'Kunci lan buka kunci basis data',
-'right-reset-passwords' => 'Setèl ulang tembung sandi panganggo liya',
'right-override-export-depth' => "Èkspor kaca klebu kaca kagandhèng nganti tataran/''depth'' 5",
'right-sendemail' => 'Ngirim layang listrik (e-mail) menyang panganggo liya',
@@ -1348,10 +1343,6 @@ Mangga priksa panyetèlan pangunggahan berkas.',
'watchthisupload' => 'Awasana berkas iki',
'filewasdeleted' => 'Sawijining berkas mawa jeneng iki wis tau diunggahaké lan sawisé dibusak.
Mangga priksanen $1 sadurungé ngunggahaké berkas iku manèh.',
-'upload-wasdeleted' => "'''PÈNGET: Panjenengan ngunggahaké sawijining berkas sing wis tau dibusak.'''
-
-Panjenengan kudu nggalih perlu utawa ora mbanjuraké pangunggahan berkas ini.
-Log pambusakan berkas iki kaya mangkéné:",
'filename-bad-prefix' => "Jeneng berkas sing panjenengan unggahaké, diawali mawa '''\"\$1\"''', sing sawijining jeneng non-dèskriptif sing biasané diwènèhaké sacara otomatis déning kamera digital. Mangga milih jeneng liyané sing luwih dèskriptif kanggo berkas panjenengan.",
'upload-success-subj' => 'Kasil diamot',
'upload-failure-msg' => 'Ana prakara karo pangunggahan panjenengan seka [$2]:
@@ -1430,7 +1421,6 @@ Dhaftar ing ngisor nuduhaké {{PLURAL:$1|kaca pisanan kanthi pranala langsung|$1
[[Special:WhatLinksHere/$2|dhaftar pepak]] uga ana.',
'nolinkstoimage' => 'Ora ana kaca sing nyambung menyang berkas iki.',
'morelinkstoimage' => 'Ndeleng [[Special:WhatLinksHere/$1|luwih akèh pranala]] menyang berkas iki.',
-'redirectstofile' => '{{PLURAL:$1|berkas kaalihaké|$1 berkas-berkas kaalihaké}} menyang berkas iki:',
'duplicatesoffile' => '{{PLURAL:$1|berkas ing ngisor arupa duplikat|$1 berkas ing ngisor arupa duplikat}} saka berkas iki ([[Special:FileDuplicateSearch/$2|luwih rinci]]):',
'sharedupload' => 'Berkas iki saka $1 lan bisa digunakaké déning proyèk liya.',
'sharedupload-desc-there' => 'Berkas iki asal saka $1 lan bisa dipigunakaké déning proyèk liya.
@@ -1736,10 +1726,8 @@ Alamat layang-e sing panjenengan lebokaké ing [[Special:Preferences|préferèsi
'watchlistanontext' => 'Mangga $1 kanggo mirsani utawa nyunting daftar pangawasan panjenengan.',
'watchnologin' => 'Durung mlebu log',
'watchnologintext' => 'Panjenengan kudu [[Special:UserLogin|mlebu log]] kanggo ngowahi daftar artikel pilihan.',
-'addedwatch' => 'Sampun katambahaken wonten ing daftar artikel pilihan.',
'addedwatchtext' => "Kaca \"[[:\$1]]\" wis ditambahaké menyang [[Special:Watchlist|daftar pangawasan]].
Owah-owahan sing dumadi ing tembé ing kaca iku lan kaca dhiskusi sing kagandhèng, bakal dipacak ing kéné, lan kaca iku bakal dituduhaké '''kandel''' ing [[Special:RecentChanges|daftar owah-owahan iku]] supados luwih gampang katon.",
-'removedwatch' => 'Wis dibusak saka daftar pangawasan',
'removedwatchtext' => 'Kaca "[[:$1]]" wis dibusak saka [[Special:Watchlist|daftar pangawasan]].',
'watch' => 'tutana',
'watchthispage' => 'Periksa kaca iki',
@@ -1791,10 +1779,10 @@ Kita ora bakal ngandhani manèh yèn diowahi manèh, kejaba panjenengan wis mirs
--
Kanggo ngowahi préferènsi ing daftar pangawasan panjenengan, mangga mirsani
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Umpan balik lan pitulung sabanjuré:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Busak kaca',
@@ -1809,7 +1797,7 @@ Umpan balik lan pitulung sabanjuré:
'confirmdeletetext' => 'Panjenengan bakal mbusak kaca utawa berkas iki minangka permanèn karo kabèh sajarahé saka basis data. Pastèkna dhisik menawa panjenengan pancèn nggayuh iki, ngerti kabèh akibat lan konsekwènsiné, lan apa sing bakal panjenengan tumindak iku cocog karo [[{{MediaWiki:Policy-url}}|kawicaksanan {{SITENAME}}]].',
'actioncomplete' => 'Proses tuntas',
'actionfailed' => 'Tindakan gagal',
-'deletedtext' => '"<nowiki>$1</nowiki>" sampun kabusak. Coba pirsani $2 kanggé log paling énggal kaca ingkang kabusak.',
+'deletedtext' => '"$1" sampun kabusak. Coba pirsani $2 kanggé log paling énggal kaca ingkang kabusak.',
'deletedarticle' => 'mbusak "[[$1]]"',
'suppressedarticle' => 'ndelikaké "[[$1]]"',
'dellogpage' => 'Cathetan pambusakan',
@@ -1863,7 +1851,7 @@ Mangga mirsani [[Special:ProtectedPages|daftar kaca sing direksa]] kanggo daftar
'protectexpiry' => 'Kadaluwarsa:',
'protect_expiry_invalid' => 'Wektu kadaluwarsané ora sah.',
'protect_expiry_old' => 'Wektu kadaluwarsané kuwi ana ing jaman biyèn.',
-'protect-text' => "Panjenengan bisa mirsani utawa ngganti tingkatan pangreksan kanggo kaca '''<nowiki>$1</nowiki>''' ing kéné.",
+'protect-text' => "Panjenengan bisa mirsani utawa ngganti tingkatan pangreksan kanggo kaca '''$1''' ing kéné.",
'protect-locked-blocked' => "Panjenengan ora bisa ngganti tingkat pangreksan yèn lagi diblokir.
Ing ngisor iki kapacak konfigurasi saiki iki kanggo kaca '''$1''':",
'protect-locked-dblock' => "Tingkat pangreksan ora bisa diganti amerga anané panguncèn aktif basis data.
@@ -2016,7 +2004,6 @@ $1',
'blockiptext' => 'Enggonen formulir ing ngisor iki kanggo mblokir sawijining alamat IP utawa panganggo supaya ora bisa nyunting kaca.
Prekara iki perlu dilakoni kanggo menggak vandalisme, lan miturut [[{{MediaWiki:Policy-url}}|kawicaksanan {{SITENAME}}]].
Lebokna alesan panjenengan ing ngisor iki (contoné njupuk conto kaca sing wis tau dirusak).',
-'ipaddress' => 'Alamat IP',
'ipadressorusername' => 'Alamat IP utawa jeneng panganggo',
'ipbexpiry' => 'Kadaluwarsa',
'ipbreason' => 'Alesan:',
@@ -2029,7 +2016,6 @@ Lebokna alesan panjenengan ing ngisor iki (contoné njupuk conto kaca sing wis t
** Tumindak intimidasi/nglècèhaké
** Nyalahgunakaké sawetara akun utawa rékening
** Jeneng panganggo ora layak',
-'ipbanononly' => 'Blokir panganggo anonim waé',
'ipbcreateaccount' => 'Penggak nggawé akun utawa rékening',
'ipbemailban' => 'Penggak panganggo ngirim layang e-mail',
'ipbenableautoblock' => 'Blokir alamat IP pungkasan sing dienggo déning pengguna iki sacara otomatis, lan kabèh alamat sabanjuré sing dicoba arep dienggo nyunting.',
@@ -2040,7 +2026,6 @@ Lebokna alesan panjenengan ing ngisor iki (contoné njupuk conto kaca sing wis t
'ipbotherreason' => 'Alesan liya/tambahan',
'ipbhidename' => 'Delikna jeneng panganggo saka suntingan lan pratélan',
'ipbwatchuser' => 'Ngawasi kaca panganggo lan kaca-kaca dhiskusi panganggo iki',
-'ipballowusertalk' => 'Idinaké panganggo iki nyunting kaca wicarané dhéwé nalika diblokir',
'ipb-change-block' => 'Blokir manèh panganggo kanthi sèting iki',
'badipaddress' => 'Alamat IP klèntu',
'blockipsuccesssub' => 'Pemblokiran suksès',
@@ -2058,13 +2043,8 @@ Pirsani [[Special:IPBlockList|Daftar blokir IP]] kanggo ninjo ulang pamblokiran.
'unblocked-id' => 'Blokir $1 wis dijabel',
'ipblocklist' => 'Daftar alamat-alamat IP lan para panganggo sing diblokir',
'ipblocklist-legend' => 'Golèk panganggo sing diblokir',
-'ipblocklist-username' => 'Jeneng panganggo utawa alamat IP:',
-'ipblocklist-sh-userblocks' => '$1 pamblokiran akun',
-'ipblocklist-sh-tempblocks' => '$1 pamblokiran sauntara wektu',
-'ipblocklist-sh-addressblocks' => '$1 pamblokiran IP tunggal',
'ipblocklist-submit' => 'Golèk',
'ipblocklist-localblock' => 'Blokade lokal',
-'blocklistline' => '$1, $2 mblokir $3 ($4)',
'infiniteblock' => 'salawasé',
'expiringblock' => 'kadaluwarsa ing $1, $2',
'anononlyblock' => 'namung anon',
@@ -2084,7 +2064,7 @@ Pirsani [[Special:IPBlockList|Daftar blokir IP]] kanggo ninjo ulang pamblokiran.
'reblock-logentry' => 'Ngowahi sèting pamblokiran [[$1]] kanthi wektu daluwarsa $2 $3',
'blocklogtext' => 'Ing ngisor iki kapacak log pamblokiran lan panjabelan blokir panganggo.
Alamat IP sing diblokir sacara otomatis ora ana ing daftar iki.
-Mangga mirsani [[Special:IPBlockList|daftar alamat IP sing diblokir]] kanggo daftar blokir pungkasan.',
+Mangga mirsani [[Special:BlockList|daftar alamat IP sing diblokir]] kanggo daftar blokir pungkasan.',
'unblocklogentry' => 'njabel blokir "$1"',
'block-log-flags-anononly' => 'namung panganggo anonim waé',
'block-log-flags-nocreate' => 'opsi nggawé akun utawa rékening dipatèni',
@@ -2098,8 +2078,7 @@ Mangga mirsani [[Special:IPBlockList|daftar alamat IP sing diblokir]] kanggo daf
'ipb_expiry_temp' => 'Pamblokiran tumrap jeneng panganggo sing didhelikaké kudu permanèn.',
'ipb_hide_invalid' => 'Ora bisa ndhelikaké akun iki; manawa wis kakèhan suntingan.',
'ipb_already_blocked' => '"$1" wis diblokir',
-'ipb-needreblock' => '== Sudah diblokir ==
-$1 wis diblokir. Apa panjenengan sedya ngowahi patrapan blokiran kasebut?',
+'ipb-needreblock' => '$1 wis diblokir. Apa panjenengan sedya ngowahi patrapan blokiran kasebut?',
'ipb_cant_unblock' => 'Kaluputan: Blokir mawa ID $1 ora ditemokaké. Blokir iku mbok-menawa wis dibuka.',
'ipb_blocked_as_range' => 'Kaluputan: IP $1 ora diblokir sacara langsung lan ora bisa dijabel blokiré. IP $1 diblokir mawa bagéyan saka pamblokiran kelompok IP $2, sing bisa dijabel pamblokirané.',
'ip_range_invalid' => 'Blok IP ora absah.',
@@ -2231,7 +2210,7 @@ Yèn panjenengan namun péngin ngimpor vèrsi pungkasan, panjenengan uga bisa ng
'allmessagesdefault' => 'Tèks baku',
'allmessagescurrent' => 'Tèks saiki',
'allmessagestext' => 'Iki dhaptar kabèh pesen saka sistem sing ana ing bilik jeneng MediaWiki.
-Mangga pirsani [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] lan [http://translatewiki.net translatewiki.net] yèn panjenengan arep kontribusi ing lokalisasi generik MediaWiki.',
+Mangga pirsani [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] lan [//translatewiki.net translatewiki.net] yèn panjenengan arep kontribusi ing lokalisasi generik MediaWiki.',
'allmessagesnotsupportedDB' => "Kaca iki ora bisa dienggo amerga '''\$wgUseDatabaseMessages''' dipatèni.",
'allmessages-filter-legend' => 'Penyaring',
'allmessages-filter' => 'Saring nganggo kahanan kustomisasi:',
@@ -2365,9 +2344,7 @@ Simpenen ing cakram padhet (''harddisk'') panjenengan lan unggahna ing kéné.",
'tooltip-undo' => 'Mbalèkaké révisi iki lan mbukak kothak panyuntingan jroning mode pratayang. Wènèhi kasempatan kanggo ngisi alesan ing kothak ringkesan.',
# Metadata
-'nodublincore' => 'Metadata Dublin Core RDF dipatèni ing server iki.',
-'nocreativecommons' => 'Metadata Creative Commons RDF dipatèni ing server iki.',
-'notacceptable' => 'Server wiki ora bisa nyedyakaké data sajroning format sing bisa diwaca déning klièn panjenengan.',
+'notacceptable' => 'Server wiki ora bisa nyedyakaké data sajroning format sing bisa diwaca déning klièn panjenengan.',
# Attribution
'anonymous' => '{{PLURAL:$1|Panganggo|panganggo}} anon ing {{SITENAME}}.',
@@ -2388,34 +2365,6 @@ Mbokmanawa iki disebabaké anané pranala jaba sing klebu daftar ireng.',
'spam_reverting' => 'Mbalèkaké menyang vèrsi pungkasan sing ora ana pranalané menyang $1',
'spam_blanking' => 'Kabèh révisi sing duwé pranala menyang $1, pangosongan',
-# Info page
-'infosubtitle' => 'Informasi kanggo kaca',
-'numedits' => 'Cacahé panyuntingan (artikel): $1',
-'numtalkedits' => 'Cacahé panyuntingan (kaca dhiskusi): $1',
-'numwatchers' => 'Cacahé sing ngawasi: $1',
-'numauthors' => 'Cacahé pangarang sing béda-béda (artikel): $1',
-'numtalkauthors' => 'Cacahé pangarang sing béda-béda (kaca dhiskusi): $1',
-
-# Math options
-'mw_math_png' => 'Mesthi nggawé PNG',
-'mw_math_simple' => 'HTML yèn prasaja banget utawa yèn ora PNG',
-'mw_math_html' => 'HTML yèn bisa utawa PNG',
-'mw_math_source' => 'Dijarna waé minangka TeX (kanggo panjlajah wèb tèks)',
-'mw_math_modern' => 'Disaranaké kanggo panjlajah wèb modèrn',
-'mw_math_mathml' => 'MathML yèn bisa (pracoban)',
-
-# Math errors
-'math_failure' => 'Gagal nglakoni parse',
-'math_unknown_error' => 'Kaluputan sing ora dimangertèni',
-'math_unknown_function' => 'fungsi sing ora dimangertèni',
-'math_lexing_error' => "kaluputan ''lexing''",
-'math_syntax_error' => "''syntax error'' (kaluputan sintaksis)",
-'math_image_error' => 'Konversi PNG gagal; priksa apa latex, dvips, gs, lan convert wis diinstalasi sing bener',
-'math_bad_tmpdir' => 'Ora bisa nulis utawa nggawé dirèktori sauntara math',
-'math_bad_output' => 'Ora bisa nulis utawa nggawé dirèktori paweton math',
-'math_notexvc' => 'Executable texvc ilang;
-mangga delengen math/README kanggo cara konfigurasi.',
-
# Patrolling
'markaspatrolleddiff' => 'Tandhanana wis dipatroli',
'markaspatrolledtext' => 'Tandhanana artikel iki wis dipatroli',
@@ -2460,7 +2409,6 @@ $1',
'file-nohires' => '<small>Ora ana résolusi sing luwih dhuwur.</small>',
'svg-long-desc' => 'Berkas SVG, nominal $1 × $2 piksel, gedhené berkas: $3',
'show-big-image' => 'Résolusi kebak',
-'show-big-image-thumb' => '<small>Ukuran pratayang iki: $1 × $2 piksel</small>',
'file-info-gif-looped' => 'mubeng',
'file-info-gif-frames' => '$1 {{PLURAL:$1|rangka|rangka}}',
@@ -2487,13 +2435,20 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
'metadata-help' => "Berkas iki ngandhut informasi tambahan sing mbokmenawa ditambahaké déning kamera digital utawa ''scanner'' sing dipigunakaké kanggo nggawé utawa olèhé digitalisasi berkas. Yèn berkas iki wis dimodifikasi, detail sing ana mbokmenawa ora sacara kebak nuduhaké informasi saka gambar sing wis dimodifikasi iki.",
'metadata-expand' => 'Tuduhna detail tambahan',
'metadata-collapse' => 'Delikna detail tambahan',
-'metadata-fields' => 'Entri metadata EXIF sing kapacak iki bakal dituduhaké ing kaca informasi gambar yèn tabèl metadata didelikaké. Entri liyané minangka baku bakal didelikaké.
+'metadata-fields' => 'Entri lapangan-lapangan metadata sing kapacak iki bakal dituduhaké ing kaca informasi gambar yèn tabèl metadata didhelikaké. Entri liyané minangka baku bakal didhelikaké.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
-* isospeedratings',
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Jembar',
@@ -2508,13 +2463,11 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
'exif-ycbcrpositioning' => 'Pandokokan Y lan C',
'exif-xresolution' => 'Résolusi horisontal',
'exif-yresolution' => 'Résolusi vèrtikal',
-'exif-resolutionunit' => 'Unit résolusi X lan Y',
'exif-stripoffsets' => 'Lokasi data gambar',
'exif-rowsperstrip' => 'Cacah baris per strip',
'exif-stripbytecounts' => 'Bita per strip komprèsi',
'exif-jpeginterchangeformat' => 'Ofset menyang JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bita data JPEG',
-'exif-transferfunction' => 'Fungsi transfer',
'exif-whitepoint' => 'Kromatisitas titik putih',
'exif-primarychromaticities' => 'Kromatisitas werna primer',
'exif-ycbcrcoefficients' => 'Koèfisièn matriks transformasi papan werna',
@@ -2533,7 +2486,6 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
'exif-compressedbitsperpixel' => 'Modhe komprèsi gambar',
'exif-pixelydimension' => 'Jembar gambar sing sah',
'exif-pixelxdimension' => 'Dhuwur gambar sing sah',
-'exif-makernote' => 'Cathetan prodhusèn',
'exif-usercomment' => 'Komentar panganggo',
'exif-relatedsoundfile' => 'Berkas audio sing kagandhèng',
'exif-datetimeoriginal' => 'Tanggal lan wektu nggawé data',
@@ -2547,7 +2499,6 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
'exif-exposureprogram' => 'Program pajanan',
'exif-spectralsensitivity' => 'Sènsitivitas spèktral',
'exif-isospeedratings' => 'Rating kacepetan ISO',
-'exif-oecf' => 'Faktor konvèrsi optoélèktronik',
'exif-shutterspeedvalue' => 'Kacepatan rana',
'exif-aperturevalue' => 'Bukaan',
'exif-brightnessvalue' => 'Kacerahan',
@@ -2560,7 +2511,6 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
'exif-focallength' => 'Jarak fokus lènsa',
'exif-subjectarea' => 'Wilayah subjèk',
'exif-flashenergy' => 'Énèrgi kilas',
-'exif-spatialfrequencyresponse' => 'Respons frekwènsi spasial',
'exif-focalplanexresolution' => 'Résolusi bidang fokus X',
'exif-focalplaneyresolution' => 'Résolusi bidang fokus Y',
'exif-focalplaneresolutionunit' => 'Unit résolusi bidang fokus',
@@ -2569,7 +2519,6 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
'exif-sensingmethod' => 'Métodhe pangindran',
'exif-filesource' => 'Sumber berkas',
'exif-scenetype' => 'Tipe panyawangan',
-'exif-cfapattern' => 'Pola CFA',
'exif-customrendered' => 'Prosès nggawé gambar',
'exif-exposuremode' => 'Modhe pajanan',
'exif-whitebalance' => 'Kaseimbangan putih',
@@ -2760,15 +2709,13 @@ Pranala-pranala sabanjuré ing baris sing padha dianggep minangka ''pengecualian
# External editor support
'edit-externally' => 'Sunting berkas iki mawa aplikasi jaba',
-'edit-externally-help' => '(Deleng [http://www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] kanggo informasi sabanjuré)',
+'edit-externally-help' => '(Deleng [//www.mediawiki.org/wiki/Manual:External_editors instruksi pangaturan] kanggo informasi sabanjuré)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'kabèh',
-'imagelistall' => 'kabèh',
-'watchlistall2' => 'kabèh',
-'namespacesall' => 'kabèh',
-'monthsall' => 'kabèh',
-'limitall' => 'kabèh',
+'watchlistall2' => 'kabèh',
+'namespacesall' => 'kabèh',
+'monthsall' => 'kabèh',
+'limitall' => 'kabèh',
# E-mail address confirmation
'confirmemail' => 'Konfirmasi alamat e-mail',
@@ -2870,14 +2817,14 @@ Cobanen mawa pratayang normal.',
'watchlistedit-normal-legend' => 'Busak irah-irahan saka daftar pangawasan',
'watchlistedit-normal-explain' => 'Irah-irahan utawa judhul ing daftar pangawasan panjenengan kapacak ing ngisor iki.
Kanggo mbusak sawijining irah-irahan, kliken kothak ing pinggiré, lan banjur kliken "Busak judhul".
-Panjenengan uga bisa [[Special:Watchlist/raw|nyunting daftar mentah]].',
+Panjenengan uga bisa [[Special:EditWatchlist/raw|nyunting daftar mentah]].',
'watchlistedit-normal-submit' => 'Busak irah-irahan',
'watchlistedit-normal-done' => 'Irah-irahan {{PLURAL:$1|siji|$1}} wis dibusak saka daftar pangawasan panjenengan:',
'watchlistedit-raw-title' => 'Sunting daftar mentah',
'watchlistedit-raw-legend' => 'Sunting daftar mentah',
'watchlistedit-raw-explain' => 'Irah-irahan ing daftar pangawasan panjenengan kapacak ing ngisor iki, lan bisa diowahi mawa nambahaké utawa mbusak daftar; sairah-irahan saban barisé.
Yèn wis rampung, anyarana kaca daftar pangawasan iki.
-Panjenengan uga bisa [[Special:Watchlist/edit|nganggo éditor standar panjenengan]].',
+Panjenengan uga bisa [[Special:EditWatchlist|nganggo éditor standar panjenengan]].',
'watchlistedit-raw-titles' => 'Irah-irahan:',
'watchlistedit-raw-submit' => 'Anyarana daftar pangawasan',
'watchlistedit-raw-done' => 'Daftar pangawasan panjenengan wis dianyari.',
@@ -2894,25 +2841,24 @@ Panjenengan uga bisa [[Special:Watchlist/edit|nganggo éditor standar panjenenga
'duplicate-defaultsort' => 'Pènget: Kunci pilih asal (\'\'Default sort key\'\') "$2" nggantèkaké kunci pilih asal sadurungé "$1".',
# Special:Version
-'version' => 'Versi',
-'version-extensions' => 'Èkstènsi sing wis diinstalasi',
-'version-specialpages' => 'Kaca astaméwa (kaca kusus)',
-'version-parserhooks' => 'Canthèlan parser',
-'version-variables' => 'Variabel',
-'version-other' => 'Liyané',
-'version-mediahandlers' => 'Pananganan média',
-'version-hooks' => 'Canthèlan-canthèlan',
-'version-extension-functions' => 'Fungsi-fungsi èkstènsi',
-'version-parser-extensiontags' => 'Rambu èkstènsi parser',
-'version-parser-function-hooks' => 'Canthèlan fungsi parser',
-'version-skin-extension-functions' => 'Fungsi èkstènsi kulit',
-'version-hook-name' => 'Jeneng canthèlan',
-'version-hook-subscribedby' => 'Dilanggani déning',
-'version-version' => '(Vèrsi $1)',
-'version-license' => 'Lisènsi',
-'version-software' => "''Software'' wis diinstalasi",
-'version-software-product' => 'Prodhuk',
-'version-software-version' => 'Vèrsi',
+'version' => 'Versi',
+'version-extensions' => 'Èkstènsi sing wis diinstalasi',
+'version-specialpages' => 'Kaca astaméwa (kaca kusus)',
+'version-parserhooks' => 'Canthèlan parser',
+'version-variables' => 'Variabel',
+'version-other' => 'Liyané',
+'version-mediahandlers' => 'Pananganan média',
+'version-hooks' => 'Canthèlan-canthèlan',
+'version-extension-functions' => 'Fungsi-fungsi èkstènsi',
+'version-parser-extensiontags' => 'Rambu èkstènsi parser',
+'version-parser-function-hooks' => 'Canthèlan fungsi parser',
+'version-hook-name' => 'Jeneng canthèlan',
+'version-hook-subscribedby' => 'Dilanggani déning',
+'version-version' => '(Vèrsi $1)',
+'version-license' => 'Lisènsi',
+'version-software' => "''Software'' wis diinstalasi",
+'version-software-product' => 'Prodhuk',
+'version-software-version' => 'Vèrsi',
# Special:FilePath
'filepath' => 'Lokasi berkas',
@@ -2923,9 +2869,7 @@ Gambar dituduhaké mawa résolusi kebak lan tipe liyané berkas bakal dibuka lan
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Golèk berkas duplikat',
-'fileduplicatesearch-summary' => 'Golèk duplikat berkas adhedhasar biji hash-é.
-
-Lebokna jeneng berkas tanpa imbuhan awal "{{ns:file}}:".',
+'fileduplicatesearch-summary' => 'Golèk duplikat berkas adhedhasar biji hash-é.',
'fileduplicatesearch-legend' => 'Golèk duplikat',
'fileduplicatesearch-filename' => 'Jeneng berkas:',
'fileduplicatesearch-submit' => 'Golèk',
diff --git a/languages/messages/MessagesKa.php b/languages/messages/MessagesKa.php
index 6bb38d0e..d2285948 100644
--- a/languages/messages/MessagesKa.php
+++ b/languages/messages/MessagesKa.php
@@ -28,8 +28,8 @@ $namespaceNames = array(
NS_MEDIA => 'მედიáƒ',
NS_SPECIAL => 'სპეციáƒáƒšáƒ£áƒ áƒ˜',
NS_TALK => 'გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ',
- NS_USER => 'მáƒáƒœáƒáƒ¬áƒ˜áƒšáƒ”',
- NS_USER_TALK => 'მáƒáƒœáƒáƒ¬áƒ˜áƒšáƒ˜áƒ¡_გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ',
+ NS_USER => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი',
+ NS_USER_TALK => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის_გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ',
NS_PROJECT_TALK => '$1_გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ',
NS_FILE => 'ფáƒáƒ˜áƒšáƒ˜',
NS_FILE_TALK => 'ფáƒáƒ˜áƒšáƒ˜áƒ¡_გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ',
@@ -44,9 +44,9 @@ $namespaceNames = array(
);
$namespaceAliases = array(
+ 'მáƒáƒœáƒáƒ¬áƒ˜áƒšáƒ”' => NS_USER,
+ 'მáƒáƒœáƒáƒ¬áƒ˜áƒšáƒ˜áƒ¡_გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ' => NS_USER_TALK,
'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი_გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ' => NS_USER_TALK,
- 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი' => NS_USER,
- 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის_გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ' => NS_USER_TALK,
'სურáƒáƒ—ი' => NS_FILE,
'სურáƒáƒ—ი_გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ' => NS_FILE_TALK,
'მედიáƒáƒ•áƒ˜áƒ™áƒ˜_გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ' => NS_MEDIAWIKI_TALK,
@@ -56,51 +56,69 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'áƒáƒ áƒ›áƒáƒ’იგáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებáƒ' ),
+ 'Activeusers' => array( 'áƒáƒ¥áƒ¢áƒ˜áƒ£áƒ áƒ˜_მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლები' ),
+ 'Allmessages' => array( 'ყველáƒ_შეტყáƒáƒ‘ინებáƒ' ),
+ 'Allpages' => array( 'ყველáƒ_გვერდი' ),
+ 'Ancientpages' => array( 'მხცáƒáƒ•áƒáƒœáƒ˜áƒ’ვერდები' ),
+ 'Blankpage' => array( 'ცáƒáƒ áƒ˜áƒ”ლი_გვერდი' ),
+ 'Block' => array( 'დáƒáƒ‘ლáƒáƒ™áƒ•áƒ' ),
+ 'Blockme' => array( 'დáƒáƒ›áƒ‘ლáƒáƒ™áƒ”' ),
'BrokenRedirects' => array( 'გáƒáƒ¬áƒ§áƒ•áƒ”ტილიგáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებáƒ' ),
+ 'Categories' => array( 'კáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ”ბი' ),
+ 'ChangePassword' => array( 'პáƒáƒ áƒáƒšáƒ˜áƒ¡_შეცვლáƒ' ),
+ 'ComparePages' => array( 'გვერდების_შედáƒáƒ áƒ”ბáƒ' ),
+ 'Confirmemail' => array( 'ელ-ფáƒáƒ¡áƒ¢áƒ˜áƒ¡_დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბáƒ' ),
+ 'Contributions' => array( 'წვლილი' ),
+ 'CreateAccount' => array( 'áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡_შექმნáƒ' ),
'Disambiguations' => array( 'მრáƒáƒ•áƒáƒšáƒ›áƒœáƒ˜áƒ¨áƒ•áƒœáƒ”ლáƒáƒ•áƒœáƒ”ბáƒ' ),
- 'Userlogin' => array( 'შესვლáƒ' ),
- 'Userlogout' => array( 'გáƒáƒ¡áƒ•áƒšáƒ' ),
- 'CreateAccount' => array( 'áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ შექმნáƒ' ),
+ 'DoubleRedirects' => array( 'áƒáƒ áƒ›áƒáƒ’იგáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებáƒ' ),
+ 'Emailuser' => array( 'მიწერáƒ_მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს' ),
+ 'Export' => array( 'ექსპáƒáƒ áƒ¢áƒ˜' ),
+ 'FileDuplicateSearch' => array( 'ფáƒáƒ˜áƒšáƒ˜áƒ¡_დუბლიკáƒáƒ¢áƒ˜áƒ¡_ძიებáƒ' ),
+ 'Import' => array( 'იმპáƒáƒ áƒ¢áƒ˜' ),
+ 'BlockList' => array( 'ბლáƒáƒ™áƒ˜áƒ áƒ”ბების_სიáƒ' ),
+ 'LinkSearch' => array( 'ბმულის_ძეებáƒ' ),
+ 'Listadmins' => array( 'áƒáƒ“მინისტრáƒáƒ¢áƒáƒ áƒ”ბის_სიáƒ' ),
+ 'Listbots' => array( 'ბáƒáƒ¢áƒ”ბის_სიáƒ' ),
+ 'Listfiles' => array( 'სურსიáƒ' ),
+ 'Listusers' => array( 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელთáƒ_სიáƒ' ),
+ 'Lonelypages' => array( 'áƒáƒ‘áƒáƒšáƒ˜áƒ’ვერდები' ),
+ 'Longpages' => array( 'გრძელიგვერდები' ),
+ 'Movepage' => array( 'გვერდის_გáƒáƒ“áƒáƒ¢áƒáƒœáƒ' ),
+ 'Mycontributions' => array( 'ჩემი_წვლილი' ),
+ 'Mypage' => array( 'ჩემი_გვერდი' ),
+ 'Mytalk' => array( 'ჩენი_გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ' ),
+ 'Myuploads' => array( 'ჩემი_áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვები' ),
+ 'Newimages' => array( 'áƒáƒ®áƒáƒšáƒ˜_ფáƒáƒ˜áƒšáƒ”ბი' ),
+ 'Newpages' => array( 'áƒáƒ®áƒáƒšáƒ˜_გვერდები' ),
+ 'Popularpages' => array( 'პáƒáƒžáƒ’ვერდები' ),
'Preferences' => array( 'კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ' ),
- 'Watchlist' => array( 'კáƒáƒœáƒ¢áƒ áƒáƒšáƒ¡áƒ˜áƒ' ),
+ 'Protectedpages' => array( 'დáƒáƒªáƒ£áƒšáƒ˜_გვერდები' ),
+ 'Protectedtitles' => array( 'დáƒáƒªáƒ£áƒšáƒ˜_სáƒáƒ—áƒáƒ£áƒ áƒ”ბი' ),
+ 'Randompage' => array( 'შემთხვევით', 'შემთხვევითიგვერდი' ),
'Recentchanges' => array( 'ბáƒáƒšáƒáƒªáƒ•áƒšáƒ˜áƒšáƒ”ბები' ),
- 'Upload' => array( 'áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ' ),
- 'Listfiles' => array( 'სურსიáƒ' ),
- 'Newimages' => array( 'áƒáƒ®áƒ¡áƒ£áƒ áƒáƒ—ები' ),
- 'Listusers' => array( 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელთრსიáƒ' ),
+ 'Search' => array( 'ძიებáƒ' ),
+ 'Shortpages' => array( 'მáƒáƒ™áƒšáƒ”გვერდები' ),
+ 'Specialpages' => array( 'გáƒáƒœáƒ¡áƒáƒ™áƒ£áƒ—რებული_გვერდები' ),
'Statistics' => array( 'სტáƒáƒ¢áƒ˜áƒ¡áƒ¢áƒ˜áƒ™áƒ' ),
- 'Randompage' => array( 'შემთხვევით', 'შემთხვევითიგვერდი' ),
- 'Lonelypages' => array( 'áƒáƒ‘áƒáƒšáƒ˜áƒ’ვერდები' ),
- 'Uncategorizedpages' => array( 'უკáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ გვერდები' ),
- 'Uncategorizedcategories' => array( 'უკáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ კáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ”ბი' ),
- 'Uncategorizedimages' => array( 'უკáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ ფáƒáƒ˜áƒšáƒ”ბი' ),
- 'Uncategorizedtemplates' => array( 'უკáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ თáƒáƒ áƒ’ები' ),
+ 'Unblock' => array( 'ბლáƒáƒ™áƒ˜áƒ¡_მáƒáƒ®áƒ¡áƒœáƒ' ),
+ 'Uncategorizedcategories' => array( 'უკáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ_კáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ”ბი' ),
+ 'Uncategorizedimages' => array( 'უკáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ_ფáƒáƒ˜áƒšáƒ”ბი' ),
+ 'Uncategorizedpages' => array( 'უკáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ_გვერდები' ),
+ 'Uncategorizedtemplates' => array( 'უკáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ_თáƒáƒ áƒ’ები' ),
+ 'Undelete' => array( 'áƒáƒ¦áƒ“გენáƒ' ),
'Unusedcategories' => array( 'გáƒáƒ›áƒáƒ£áƒ§áƒ™áƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ”ბი' ),
'Unusedimages' => array( 'გáƒáƒ›áƒáƒ£áƒ§áƒ¡áƒ£áƒ áƒáƒ—ები' ),
- 'Wantedpages' => array( 'სáƒáƒ­áƒ˜áƒ áƒ გვერდები' ),
- 'Wantedcategories' => array( 'მáƒáƒ—ხáƒáƒ•áƒœáƒ˜áƒšáƒ˜áƒ™áƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ”ბი' ),
- 'Wantedfiles' => array( 'სáƒáƒ­áƒ˜áƒ áƒ ფáƒáƒ˜áƒšáƒ”ბი' ),
- 'Wantedtemplates' => array( 'სáƒáƒ­áƒ˜áƒ áƒ თáƒáƒ áƒ’ები' ),
- 'Shortpages' => array( 'მáƒáƒ™áƒšáƒ”გვერდები' ),
- 'Longpages' => array( 'გრძელიგვერდები' ),
- 'Newpages' => array( 'áƒáƒ®áƒáƒšáƒ˜áƒ’ვერდები' ),
- 'Ancientpages' => array( 'მხცáƒáƒ•áƒáƒœáƒ˜áƒ’ვერდები' ),
- 'Protectedpages' => array( 'დáƒáƒªáƒ£áƒšáƒ˜ გვერდები' ),
- 'Protectedtitles' => array( 'დáƒáƒªáƒ£áƒšáƒ˜ სáƒáƒ—áƒáƒ£áƒ áƒ”ბი' ),
- 'Allpages' => array( 'ყველáƒáƒ’ვერდი' ),
- 'Specialpages' => array( 'გáƒáƒœáƒ¡áƒáƒ™áƒ£áƒ—რებული გვერდები' ),
- 'Contributions' => array( 'წვლილი' ),
- 'Emailuser' => array( 'მიწერრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს' ),
- 'Categories' => array( 'კáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ”ბი' ),
+ 'Upload' => array( 'áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ' ),
+ 'Userlogin' => array( 'შესვლáƒ' ),
+ 'Userlogout' => array( 'გáƒáƒ¡áƒ•áƒšáƒ' ),
+ 'Userrights' => array( 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელთáƒ_უფლებები' ),
'Version' => array( 'ვერსიáƒ' ),
- 'Undelete' => array( 'áƒáƒ¦áƒ“გენáƒ' ),
- 'Userrights' => array( 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელთრუფლებები' ),
- 'Mypage' => array( 'ჩემიგვერდი' ),
- 'Mytalk' => array( 'ჩენი გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ' ),
- 'Mycontributions' => array( 'ჩემი წვლილი' ),
- 'Popularpages' => array( 'პáƒáƒžáƒ’ვერდები' ),
- 'Search' => array( 'ძიებáƒ' ),
+ 'Wantedcategories' => array( 'მáƒáƒ—ხáƒáƒ•áƒœáƒ˜áƒšáƒ˜áƒ™áƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ”ბი' ),
+ 'Wantedfiles' => array( 'სáƒáƒ­áƒ˜áƒ áƒ_ფáƒáƒ˜áƒšáƒ”ბი' ),
+ 'Wantedpages' => array( 'სáƒáƒ­áƒ˜áƒ áƒ_გვერდები' ),
+ 'Wantedtemplates' => array( 'სáƒáƒ­áƒ˜áƒ áƒ_თáƒáƒ áƒ’ები' ),
+ 'Watchlist' => array( 'კáƒáƒœáƒ¢áƒ áƒáƒšáƒ¡áƒ˜áƒ' ),
'Withoutinterwiki' => array( 'ინტერვიკისგáƒáƒ áƒ”შე' ),
);
@@ -113,6 +131,8 @@ $magicWords = array(
'img_left' => array( '1', 'მáƒáƒ áƒªáƒ®áƒœáƒ˜áƒ•', 'left' ),
'img_width' => array( '1', '$1პქ', '$1px' ),
'img_center' => array( '1', 'ცენტრი', 'center', 'centre' ),
+ 'img_border' => array( '1', 'სáƒáƒ–ღვáƒáƒ áƒ˜', 'border' ),
+ 'special' => array( '0', 'სპეციáƒáƒšáƒ£áƒ áƒ˜', 'special' ),
);
$linkPrefixExtension = true;
@@ -150,8 +170,8 @@ $messages = array(
'tog-shownumberswatching' => 'მáƒáƒ™áƒáƒœáƒ¢áƒ áƒáƒšáƒ”ბელ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელთრრიცხვის ჩვენებáƒ',
'tog-oldsig' => 'áƒáƒ áƒ¡áƒ”ბული ხელმáƒáƒ¬áƒ”რáƒ:',
'tog-fancysig' => 'სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ ვიკიფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒáƒœáƒ˜ ხელმáƒáƒ¬áƒ”რრ(áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ ბმულის გáƒáƒ áƒ”შე)',
-'tog-externaleditor' => 'გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ გáƒáƒ áƒ” რედáƒáƒ¥áƒ¢áƒáƒ áƒ˜ სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ფáƒáƒ áƒ›áƒ˜áƒ— (მხáƒáƒšáƒáƒ“ ექსპერტებისთვის, მáƒáƒ˜áƒ—ხáƒáƒ•áƒ¡ სპეციáƒáƒšáƒ£áƒ  კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒáƒ¡ თქვენს კáƒáƒ›áƒžáƒ˜áƒ£áƒ¢áƒ”რში. [http://www.mediawiki.org/wiki/Manual:External_editors ვრცლáƒáƒ“.])',
-'tog-externaldiff' => 'გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ გáƒáƒ áƒ” გáƒáƒœáƒ¡áƒ®áƒ•áƒáƒ•áƒ”ბრსტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ფáƒáƒ áƒ›áƒ˜áƒ— (მხáƒáƒšáƒáƒ“ ექსპერტთáƒáƒ—ვის, მáƒáƒ˜áƒ—ხáƒáƒ•áƒ¡ სპეციáƒáƒšáƒ£áƒ  კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒáƒ¡ თქვენს კáƒáƒ›áƒžáƒ˜áƒ£áƒ¢áƒ”რში. [http://www.mediawiki.org/wiki/Manual:External_editors ვრცლáƒáƒ“.])',
+'tog-externaleditor' => 'გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ გáƒáƒ áƒ” რედáƒáƒ¥áƒ¢áƒáƒ áƒ˜ სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ფáƒáƒ áƒ›áƒ˜áƒ— (მხáƒáƒšáƒáƒ“ ექსპერტებისთვის, მáƒáƒ˜áƒ—ხáƒáƒ•áƒ¡ სპეციáƒáƒšáƒ£áƒ  კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒáƒ¡ თქვენს კáƒáƒ›áƒžáƒ˜áƒ£áƒ¢áƒ”რში. [//www.mediawiki.org/wiki/Manual:External_editors ვრცლáƒáƒ“.])',
+'tog-externaldiff' => 'გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ გáƒáƒ áƒ” გáƒáƒœáƒ¡áƒ®áƒ•áƒáƒ•áƒ”ბრსტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ფáƒáƒ áƒ›áƒ˜áƒ— (მხáƒáƒšáƒáƒ“ ექსპერტთáƒáƒ—ვის, მáƒáƒ˜áƒ—ხáƒáƒ•áƒ¡ სპეციáƒáƒšáƒ£áƒ  კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒáƒ¡ თქვენს კáƒáƒ›áƒžáƒ˜áƒ£áƒ¢áƒ”რში. [//www.mediawiki.org/wiki/Manual:External_editors ვრცლáƒáƒ“.])',
'tog-showjumplinks' => 'დáƒáƒ›áƒ®áƒ›áƒáƒ áƒ” ბმულების „გáƒáƒ“áƒáƒ¡áƒ•áƒšáƒ-კენ“ ჩáƒáƒ áƒ—ვáƒ',
'tog-uselivepreview' => 'გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ áƒáƒ®áƒáƒšáƒ˜ წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ გáƒáƒ“áƒáƒ®áƒ”დვრ(ჯáƒáƒ•áƒáƒ¡áƒ™áƒ áƒ˜áƒžáƒ¢áƒ˜) (ექსპერიმენტული)',
'tog-forceeditsummary' => 'გáƒáƒ›áƒáƒ¤áƒ áƒ—ხილე ცáƒáƒ áƒ˜áƒ”ლი რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის რეზიუმეს შემთხვევáƒáƒ¨áƒ˜',
@@ -246,16 +266,9 @@ $messages = array(
'listingcontinuesabbrev' => 'გáƒáƒ’რძ.',
'index-category' => 'გვერდების ინდექსáƒáƒªáƒ˜áƒ',
'noindex-category' => 'áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს ინდექსირებული გვერდები',
+'broken-file-category' => 'გვერდები ფáƒáƒ˜áƒšáƒ”ბის áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ ბმულებით',
-'linkprefix' => '/^(.*?)(„|«)$/sD',
-'mainpagetext' => "'''მედიáƒáƒ•áƒ˜áƒ™áƒ˜ წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით ჩáƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—áƒ.'''",
-'mainpagedocfooter' => 'ვიკი პრáƒáƒ’რáƒáƒ›áƒ˜áƒ¡ გáƒáƒ›áƒáƒ§áƒ”ნების ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡áƒ—ვის იხილეთ [http://meta.wikimedia.org/wiki/Help:Contents მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის მეგზური].
-
-== დáƒáƒ¬áƒ§áƒ”ბრ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ˜áƒ¡ მáƒáƒ©áƒ•áƒ”ნებლების სიáƒ]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce მედიáƒáƒ•áƒ˜áƒ™áƒ˜áƒ¡ გáƒáƒ›áƒáƒªáƒ”მის დáƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒ¡ სიáƒ]',
+'linkprefix' => '/^(.*?)(„|«)$/sD',
'about' => 'შესáƒáƒ®áƒ”ბ',
'article' => 'სტáƒáƒ¢áƒ˜áƒ',
@@ -307,10 +320,10 @@ $messages = array(
'history' => 'გვერდის ისტáƒáƒ áƒ˜áƒ',
'history_short' => 'ისტáƒáƒ áƒ˜áƒ',
'updatedmarker' => 'გáƒáƒœáƒáƒ®áƒšáƒ“რჩემი ბáƒáƒšáƒ შემáƒáƒ¡áƒ•áƒšáƒ˜áƒ¡ შემდეგ',
-'info_short' => 'ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ',
'printableversion' => 'დáƒáƒ¡áƒáƒ‘ეჭდი ვერსიáƒ',
'permalink' => 'მუდმივი ბმული',
'print' => 'áƒáƒ›áƒáƒ‘ეჭდე',
+'view' => 'იხილე',
'edit' => 'რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ',
'create' => 'შექმნáƒ',
'editthispage' => 'გვერდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ',
@@ -318,6 +331,7 @@ $messages = array(
'delete' => 'წáƒáƒ¨áƒšáƒ',
'deletethispage' => 'გვერდის წáƒáƒ¨áƒšáƒ',
'undelete_short' => 'გáƒáƒáƒ£áƒ¥áƒ›áƒ” წáƒáƒ¨áƒšáƒ {{PLURAL:$1|ერთი რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ|$1 რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ}}',
+'viewdeleted_short' => '{{PLURAL:$1|წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის|$1 წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბების}} ხილვáƒ',
'protect' => 'დáƒáƒ‘ლáƒáƒ™áƒ”',
'protect_change' => 'შეცვლáƒ',
'protectthispage' => 'დáƒáƒ‘ლáƒáƒ™áƒ” ეს გვერდი',
@@ -401,6 +415,8 @@ $1',
'toc' => 'სáƒáƒ áƒ©áƒ”ვი',
'showtoc' => 'ჩვენებáƒ',
'hidetoc' => 'დáƒáƒ›áƒáƒšáƒ•áƒ',
+'collapsible-collapse' => 'ჩáƒáƒ™áƒ”ცვáƒ',
+'collapsible-expand' => 'გáƒáƒ¨áƒšáƒ',
'thisisdeleted' => '$1-ის ჩვენებრთუ áƒáƒ¦áƒ“გენáƒ?',
'viewdeleted' => 'იხილე $1?',
'restorelink' => '{{PLURAL:$1|ერთი წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ|$1 წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ}}',
@@ -412,6 +428,8 @@ $1',
'page-rss-feed' => '„$1-ის“ áƒáƒ áƒ®áƒ˜ RSS',
'page-atom-feed' => '„$1-ის“ áƒáƒ áƒ®áƒ˜ Atom',
'red-link-title' => '$1 (გვერდი áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს)',
+'sort-descending' => 'კლების მიხედვით დáƒáƒšáƒáƒ’ებáƒ',
+'sort-ascending' => 'ზრდის მიხედვით დáƒáƒšáƒáƒ’ებáƒ',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'სტáƒáƒ¢áƒ˜áƒ',
@@ -495,12 +513,13 @@ $1',
'protectedpagetext' => 'ეს გვერდი დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜áƒ რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბისთვის.',
'viewsourcetext' => 'თქვენ შეგიძლიáƒáƒ— ნáƒáƒ®áƒáƒ— áƒáƒ› გვერდის სáƒáƒ¬áƒ§áƒ˜áƒ¡áƒ˜ ფáƒáƒ˜áƒšáƒ˜ დრმისი áƒáƒ¡áƒšáƒ˜ შექმნáƒáƒ—:',
'protectedinterface' => 'ეს გვერდი პრáƒáƒ’რáƒáƒ›áƒ˜áƒ¡ ინტერფეისის ნáƒáƒ¬áƒ˜áƒšáƒ˜áƒ დრდáƒáƒªáƒ£áƒšáƒ˜áƒ ვáƒáƒœáƒ“áƒáƒšáƒ˜áƒ–მის áƒáƒ¦áƒ™áƒ•áƒ”თის მიზნით.',
-'editinginterface' => "'''ყურáƒáƒ“ღებáƒ:''' თქვენ რედáƒáƒ¥áƒ¢áƒáƒ áƒáƒ‘თ გვერდს, რáƒáƒ›áƒ”ლიც პრáƒáƒ’რáƒáƒ›áƒ˜áƒ¡ ინტერფეისის ტექსტს შეიცáƒáƒ•áƒ¡. áƒáƒ› გვერდზე გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლებული რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრგáƒáƒ›áƒáƒ˜áƒ¬áƒ•áƒ”ვს სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელთრსáƒáƒ›áƒ£áƒ¨áƒáƒ ინტერფეისის შეცვლáƒáƒ¡áƒáƒª. თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡áƒáƒ—ვის უმჯáƒáƒ‘ესირგáƒáƒ›áƒáƒ˜áƒ§áƒ”ნáƒáƒ— [http://translatewiki.net/wiki/Main_Page?setlang=ka translatewiki.net], მედიáƒáƒ•áƒ˜áƒ™áƒ˜áƒ¡ ლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ პრáƒáƒ”ქტი.",
+'editinginterface' => "'''ყურáƒáƒ“ღებáƒ:''' თქვენ რედáƒáƒ¥áƒ¢áƒáƒ áƒáƒ‘თ გვერდს, რáƒáƒ›áƒ”ლიც პრáƒáƒ’რáƒáƒ›áƒ˜áƒ¡ ინტერფეისის ტექსტს შეიცáƒáƒ•áƒ¡. áƒáƒ› გვერდზე გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლებული რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრგáƒáƒ›áƒáƒ˜áƒ¬áƒ•áƒ”ვს სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელთრსáƒáƒ›áƒ£áƒ¨áƒáƒ ინტერფეისის შეცვლáƒáƒ¡áƒáƒª. თáƒáƒ áƒ’მáƒáƒœáƒ˜áƒ¡áƒáƒ—ვის უმჯáƒáƒ‘ესირგáƒáƒ›áƒáƒ˜áƒ§áƒ”ნáƒáƒ— [//translatewiki.net/wiki/Main_Page?setlang=ka translatewiki.net], მედიáƒáƒ•áƒ˜áƒ™áƒ˜áƒ¡ ლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ პრáƒáƒ”ქტი.",
'sqlhidden' => '(SQL მáƒáƒ—ხáƒáƒ•áƒœáƒ გáƒáƒ£áƒ¥áƒ›áƒ”ბულიáƒ)',
'cascadeprotected' => 'ეს გვერდი რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბისგáƒáƒœ დáƒáƒªáƒ£áƒšáƒ˜áƒ, რáƒáƒ“გáƒáƒœ იგი ჩáƒáƒ áƒ—ულირშემდეგ {{PLURAL:$1|გვერდში, რáƒáƒ›áƒšáƒ˜áƒ¡ |გვერდებში, რáƒáƒ›áƒ”ლთáƒ}} დáƒáƒ¡áƒáƒªáƒáƒ•áƒáƒ“áƒáƒª ჩáƒáƒ áƒ—ულირპáƒáƒ áƒáƒ›áƒ”ტრი "იერáƒáƒ áƒ¥áƒ˜áƒ£áƒšáƒ˜":
$2',
'namespaceprotected' => "თქვენ áƒáƒ  გáƒáƒ¥áƒ•áƒ— '''$1''' სáƒáƒ®áƒ”ლთრსივრცეში გვერდების რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის უფლებáƒ.",
-'customcssjsprotected' => 'თქვენ áƒáƒ  გáƒáƒ¥áƒ•áƒ— áƒáƒ› გვერდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის უფლებáƒ, ვინáƒáƒ˜áƒ“áƒáƒœ ის სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის პირáƒáƒ“ კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒáƒ¡ შეიცáƒáƒ•áƒ¡.',
+'customcssprotected' => 'თქვენ áƒáƒ  გáƒáƒ¥áƒ•áƒ— áƒáƒ› CSS გვერდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის უფლებáƒ, ვინáƒáƒ˜áƒ“áƒáƒœ ის სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის პირáƒáƒ“ კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒáƒ¡ შეიცáƒáƒ•áƒ¡.',
+'customjsprotected' => 'თქვენ áƒáƒ  გáƒáƒ¥áƒ•áƒ— áƒáƒ› JavaScript გვერდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის უფლებáƒ, ვინáƒáƒ˜áƒ“áƒáƒœ ის სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის პირáƒáƒ“ კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒáƒ¡ შეიცáƒáƒ•áƒ¡.',
'ns-specialprotected' => 'გვერდების რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრსáƒáƒ®áƒ”ლთრსივრცეში {{ns:special}} შეუძლებელიáƒ.',
'titleprotected' => "შემდეგი გვერდის შექმნრáƒáƒ™áƒ áƒ«áƒáƒšáƒ£áƒšáƒ˜áƒ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელ [[User:$1|$1]]-ს მიერ.
მáƒáƒªáƒ”მულირშემდეგი áƒáƒ®áƒ¡áƒœáƒ: „''$2''“.",
@@ -539,6 +558,7 @@ $2',
'createaccount' => 'გáƒáƒ®áƒ¡áƒ”ნი áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜',
'gotaccount' => "უკვე რეგისტრირებული ხáƒáƒ áƒ—? '''$1'''",
'gotaccountlink' => 'შესვლáƒ',
+'userlogin-resetlink' => 'áƒáƒ•áƒ¢áƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ მáƒáƒœáƒáƒªáƒ”მები დáƒáƒ’áƒáƒ•áƒ˜áƒ¬áƒ§áƒ“áƒáƒ—?',
'createaccountmail' => 'ელ-ფáƒáƒ¡áƒ¢áƒ˜áƒ—',
'createaccountreason' => 'მიზეზი:',
'badretype' => 'თქვენს მიერ შეყვáƒáƒœáƒ˜áƒšáƒ˜ პáƒáƒ áƒáƒšáƒ”ბი ერთმáƒáƒœáƒ”თს áƒáƒ  ემთხვევáƒ.',
@@ -548,13 +568,15 @@ $2',
'createaccounterror' => '$1 áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ შექმნრვერ მáƒáƒ®áƒ”რხდáƒ.',
'nocookiesnew' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის ჩáƒáƒœáƒáƒ¬áƒ”რი შექმნილიáƒ, მáƒáƒ’რáƒáƒ› თქვენ áƒáƒ  გáƒáƒ’ივლიáƒáƒ— რეგისტრáƒáƒªáƒ˜áƒ. {{SITENAME}} იყენებს cookies, რáƒáƒ›áƒšáƒ”ბიც თქვენს ბრáƒáƒ£áƒ–ერში გáƒáƒ—იშულიáƒ. გთხáƒáƒ•áƒ—, áƒáƒáƒ›áƒáƒ¥áƒ›áƒ”დáƒáƒ— ისინი დრშემდგáƒáƒ› ხელáƒáƒ®áƒšáƒ გáƒáƒ˜áƒáƒ áƒ”თ რეგისტრáƒáƒªáƒ˜áƒ.',
'nocookieslogin' => '{{SITENAME}} მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლების შესვლისთვის იყენებს "ქუქის ჩáƒáƒœáƒáƒ¬áƒ”რს". თქვენ იგი გáƒáƒ—იშეთ. გთხáƒáƒ•áƒ—, ჩáƒáƒ áƒ—áƒáƒ— ისინი დრხელმეáƒáƒ áƒ”დ მáƒáƒ¡áƒ˜áƒœáƒ¯áƒáƒ—.',
+'nocookiesfornew' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜ áƒáƒ  შექმნილáƒ, რáƒáƒ“გáƒáƒœ მისი წყáƒáƒ áƒ ვერ დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ“áƒ.
+უზრუნველყáƒáƒ¤áƒ˜áƒšáƒ˜ უნდრიყáƒáƒ¡ ჭდეების áƒáƒ¥áƒ¢áƒ˜áƒ£áƒ áƒáƒ‘áƒ. შემდეგ გáƒáƒœáƒáƒáƒ®áƒšáƒ”თ გვერდი დრსცáƒáƒ“ეთ ხელáƒáƒ®áƒšáƒ',
'noname' => 'თქვენს მიერ მითითებული მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი ქმედითი áƒáƒ  áƒáƒ áƒ˜áƒ¡.',
'loginsuccesstitle' => 'სისტემáƒáƒ¨áƒ˜ შესვლრგáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლდáƒ.',
'loginsuccess' => "'''áƒáƒ›áƒŸáƒáƒ›áƒáƒ“ შესული ხáƒáƒ áƒ— {{SITENAME}}-ში რáƒáƒ’áƒáƒ áƒª „$1“.'''",
'nosuchuser' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი სáƒáƒ®áƒ”ლáƒáƒ“ $1 áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს.
მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელთრსáƒáƒ®áƒ”ლები გრძნáƒáƒ‘áƒáƒ“ირáƒáƒ¡áƒáƒ”ბის რეგისტრáƒáƒ›áƒ“ე..
შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ სáƒáƒ®áƒ”ლის დáƒáƒ¬áƒ”რრáƒáƒœ[[Special:UserLogin/signup|შექმენით áƒáƒ®áƒáƒšáƒ˜ áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜]].',
-'nosuchusershort' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი სáƒáƒ®áƒ”ლით "<nowiki>$1</nowiki>" áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს. შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ მáƒáƒ áƒ—ლწერáƒ.',
+'nosuchusershort' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი სáƒáƒ®áƒ”ლით „$1“ áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს. შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ მáƒáƒ áƒ—ლწერáƒ.',
'nouserspecified' => 'სáƒáƒ­áƒ˜áƒ áƒáƒ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლის მითითებáƒ.',
'login-userblocked' => 'ეს მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜áƒ. სისტემáƒáƒ¨áƒ˜ შესვლრáƒáƒ áƒáƒ ნებáƒáƒ“áƒáƒ áƒ—ული.',
'wrongpassword' => 'პáƒáƒ áƒáƒšáƒ˜ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒáƒ“ áƒáƒ áƒ˜áƒ¡ შეყვáƒáƒœáƒ˜áƒšáƒ˜. სცáƒáƒ“ეთ გáƒáƒœáƒ›áƒ”áƒáƒ áƒ”ბით.',
@@ -603,13 +625,14 @@ $1 სáƒáƒáƒ—ში.',
'usernamehasherror' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი áƒáƒ  უნდრშეიცáƒáƒ•áƒ“ეს დიეზის სიმბáƒáƒšáƒáƒ¡.',
'login-throttled' => 'თქვენ გáƒáƒœáƒáƒ®áƒáƒ áƒªáƒ˜áƒ”ლეთ ძáƒáƒšáƒ˜áƒáƒœ ბევრი პáƒáƒ áƒáƒšáƒ˜áƒ¡ შეყვáƒáƒœáƒ áƒáƒ› áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡áƒ—ვის.
გáƒáƒ›áƒáƒ áƒ”ბით შეყვáƒáƒœáƒáƒ›áƒ“ე გთხáƒáƒ•áƒ— დáƒáƒ”ლáƒáƒ“áƒáƒ—.',
+'login-abort-generic' => 'თქვენი áƒáƒ•áƒ¢áƒáƒ áƒ˜áƒ–áƒáƒªáƒ˜áƒ წáƒáƒ áƒ£áƒ›áƒáƒ¢áƒ”ბელირ– გáƒáƒ£áƒ¥áƒ›áƒ“áƒ',
'loginlanguagelabel' => 'ენáƒ: $1',
'suspicious-userlogout' => 'თქვენი მáƒáƒ—ხáƒáƒ•áƒœáƒ გáƒáƒ¡áƒ•áƒšáƒ˜áƒ¡ შესáƒáƒ®áƒ”ბ გáƒáƒ£áƒ¥áƒ›áƒ”ბულიáƒ, რáƒáƒ“გáƒáƒœáƒáƒª იგი გáƒáƒ•áƒ¡ ქეშირებáƒáƒ“ი პრáƒáƒ¥áƒ¡áƒ˜áƒ¡ áƒáƒœ áƒáƒ áƒáƒ™áƒáƒ áƒ”ქტული ბრáƒáƒ£áƒ–ერის მáƒáƒ—ხáƒáƒ•áƒœáƒáƒ¡.',
# E-mail sending
'php-mail-error-unknown' => 'áƒáƒ›áƒáƒ£áƒªáƒœáƒáƒ‘ი შეცდáƒáƒ›áƒ PHP-ის mail() ფუნქციáƒáƒ¨áƒ˜',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'შეცვáƒáƒšáƒ”თ პáƒáƒ áƒáƒšáƒ˜',
'resetpass_announce' => 'თქვენ შემáƒáƒ®áƒ•áƒ”დით დრáƒáƒ”ბით ელ-ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ კáƒáƒ“ით. რეგისტრáƒáƒªáƒ˜áƒ˜áƒ¡ დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბისთვის, უნდრშექმნáƒáƒ— áƒáƒ®áƒáƒšáƒ˜ პáƒáƒ áƒáƒšáƒ˜ áƒáƒ¥:',
'resetpass_text' => '<!-- დáƒáƒ›áƒáƒ¢áƒ”ბითი ტექსტი áƒáƒ¥ -->',
@@ -627,6 +650,20 @@ $1 სáƒáƒáƒ—ში.',
შესáƒáƒ«áƒšáƒáƒ თქვენ წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით შეცვáƒáƒšáƒ”თ პáƒáƒ áƒáƒšáƒ˜ áƒáƒœ მáƒáƒ˜áƒ—ხáƒáƒ•áƒ”თ áƒáƒ®áƒáƒšáƒ˜.',
'resetpass-temp-password' => 'დრáƒáƒ”ბითი პáƒáƒ áƒáƒšáƒ˜:',
+# Special:PasswordReset
+'passwordreset' => 'პáƒáƒ áƒáƒšáƒ˜áƒ¡ áƒáƒ¦áƒ“გენáƒ',
+'passwordreset-text' => 'შეáƒáƒ•áƒ¡áƒ”თ ეს ფáƒáƒ áƒ›áƒ, რáƒáƒ—რელ.ფáƒáƒ¡áƒ¢áƒ˜áƒ— მიიღáƒáƒ— შეხსენებრთქვენი áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ პáƒáƒ áƒáƒ›áƒ”ტრების შესáƒáƒ®áƒ”ბ.',
+'passwordreset-legend' => 'პáƒáƒ áƒáƒšáƒ˜áƒ¡ áƒáƒ¦áƒ“გენáƒ',
+'passwordreset-disabled' => 'áƒáƒ› ვიკიში პáƒáƒ áƒáƒšáƒ˜áƒ¡ კვლáƒáƒ• დáƒáƒ§áƒ”ნების ფუნქცირგáƒáƒ›áƒáƒ áƒ—ულიáƒ.',
+'passwordreset-pretext' => '{{PLURAL:$1||შეიყვáƒáƒœáƒ”თ ქვემáƒáƒ— მáƒáƒªáƒ”მულ მáƒáƒœáƒáƒªáƒ”მთრერთ-ერთი ნáƒáƒ¬áƒ˜áƒšáƒ˜.}}',
+'passwordreset-username' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი:',
+'passwordreset-domain' => 'დáƒáƒ›áƒ”ნი:',
+'passwordreset-email' => 'ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი:',
+'passwordreset-emailtitle' => 'áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ მáƒáƒœáƒáƒªáƒ”მები {{SITENAME}}-თვის',
+'passwordreset-emailelement' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი: $1
+დრáƒáƒ”ბითი პáƒáƒ áƒáƒšáƒ˜: $2',
+'passwordreset-emailsent' => 'შესáƒáƒ®áƒ¡áƒ”ნებელი ელ.ფáƒáƒ¡áƒ¢áƒ გáƒáƒ˜áƒ’ზáƒáƒ•áƒœáƒ.',
+
# Edit page toolbar
'bold_sample' => 'მუქი ტექსტი',
'bold_tip' => 'მუქი ტექსტი',
@@ -638,8 +675,6 @@ $1 სáƒáƒáƒ—ში.',
'extlink_tip' => 'გáƒáƒ áƒ” ბმული (გáƒáƒ®áƒ¡áƒáƒ•áƒ“ეთ http:// პრეფიქსი)',
'headline_sample' => 'სáƒáƒ—áƒáƒ£áƒ áƒ˜áƒ¡ ტექსტი',
'headline_tip' => 'ქვესáƒáƒ—áƒáƒ£áƒ áƒ˜',
-'math_sample' => 'ჩáƒáƒ¡áƒ•áƒ˜áƒ— ფáƒáƒ áƒ›áƒ£áƒšáƒ áƒáƒ¥',
-'math_tip' => 'მáƒáƒ—ემáƒáƒ¢áƒ˜áƒ™áƒ£áƒ áƒ˜ ფáƒáƒ áƒ›áƒ£áƒšáƒ (LaTeX)',
'nowiki_sample' => 'ჩáƒáƒ¡áƒ•áƒ˜áƒ— დáƒáƒ£áƒ¤áƒáƒ áƒ›áƒáƒ¢áƒ”ბელი ტექსტი áƒáƒ¥',
'nowiki_tip' => 'ვიკის ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ áƒ”ბის იგნáƒáƒ áƒ˜áƒ áƒ”ბáƒ',
'image_sample' => 'მáƒáƒ’áƒáƒšáƒ˜áƒ—ი.jpg',
@@ -731,11 +766,16 @@ $1 სáƒáƒáƒ—ში.',
'noarticletext-nopermission' => 'áƒáƒ› დრáƒáƒ˜áƒ¡áƒ—ვის ეს გვერდი ცáƒáƒ áƒ˜áƒ”ლიáƒ.
ქვენ შეგიძლიáƒáƒ— [[Special:Search/{{PAGENAME}}|მáƒáƒ«áƒ”ბნáƒáƒ— ეს სიტყვáƒ]] სხვრგვერდებზე,
áƒáƒœ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡ ჟურნáƒáƒšáƒ”ბში]</span>',
-'userpage-userdoesnotexist' => 'áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜ «$1» áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს. დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ“ით, რáƒáƒ› მáƒáƒ áƒ—ლáƒáƒª გსურთ áƒáƒ› áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ შექმნრáƒáƒœ შესწáƒáƒ áƒ”ბáƒ.УбедитеÑÑŒ, что вы дейÑтвительно желаете Ñоздать или изменить Ñту Ñтраницу.',
+'userpage-userdoesnotexist' => 'áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜ «<nowiki>$1</nowiki>» áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს. დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ“ით, რáƒáƒ› მáƒáƒ áƒ—ლáƒáƒª გსურთ áƒáƒ› áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ შექმნრáƒáƒœ შესწáƒáƒ áƒ”ბáƒ.УбедитеÑÑŒ, что вы дейÑтвительно желаете Ñоздать или изменить Ñту Ñтраницу.',
'userpage-userdoesnotexist-view' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი „$1“ áƒáƒ  áƒáƒ áƒ˜áƒ¡ დáƒáƒ áƒ”გისტრირებული.',
'blocked-notice-logextract' => 'ეს მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი უკვე დáƒáƒ˜áƒ‘ლáƒáƒ™áƒ.
დáƒáƒ‘ლáƒáƒ™áƒ•áƒ˜áƒ¡ მიზეზი შემდეგშიáƒ:',
-'clearyourcache' => "'''შენიშვნáƒ:''' შენáƒáƒ®áƒ•áƒ˜áƒ¡ შემდეგ შესáƒáƒ«áƒšáƒáƒ დáƒáƒ’ჭირდეთ ბრáƒáƒ£áƒ–ერის ქეშის გáƒáƒ¬áƒ›áƒ”ნდრცვლილებების სáƒáƒœáƒáƒ®áƒáƒ•áƒáƒ“. '''Mozilla / Firefox / Safari:''' დáƒáƒáƒ­áƒ˜áƒ áƒ”თ ''Shift'' ''Reload''-ზე დáƒáƒ¬áƒ™áƒáƒžáƒ”ბისáƒáƒ¡, áƒáƒœ დáƒáƒáƒ­áƒ˜áƒ áƒ”თ ''Ctrl-Shift-R'' (''Cmd-Shift-R'' Apple Mac-ზე); '''IE:''' დáƒáƒáƒ­áƒ˜áƒ áƒ”თ ''Ctrl'' ''Refresh''-ზე დáƒáƒ¬áƒ™áƒáƒžáƒ”ბისáƒáƒ¡, áƒáƒœ დáƒáƒáƒ­áƒ˜áƒ áƒ”თ ''Ctrl-F5''; '''Konqueror:''': მხáƒáƒšáƒáƒ“ დáƒáƒáƒ¬áƒ™áƒáƒžáƒ”თ ''Reload'' ღილáƒáƒ™áƒ¡, áƒáƒœ დáƒáƒáƒ­áƒ˜áƒ áƒ”თ ''F5''; '''Opera''' შესáƒáƒ«áƒšáƒáƒ სáƒáƒ­áƒ˜áƒ áƒ გáƒáƒ®áƒ“ეს ქეშის სრულიáƒáƒ“ გáƒáƒ¬áƒ›áƒ”ნდრ''Tools→Preferences''-დáƒáƒœ.",
+'clearyourcache' => "'''შენიშვნáƒ:''' შენáƒáƒ®áƒ•áƒ˜áƒ¡ შემდეგ შესáƒáƒ«áƒšáƒáƒ დáƒáƒ’ჭირდეთ ბრáƒáƒ£áƒ–ერის ქეშის გáƒáƒ¬áƒ›áƒ”ნდრცვლილებების სáƒáƒœáƒáƒ®áƒáƒ•áƒáƒ“.
+* '''Firefox / Safari:''' დáƒáƒáƒ­áƒ˜áƒ áƒ”თ ''Shift'' ''Reload''-ზე დáƒáƒ¬áƒ™áƒáƒžáƒ”ბისáƒáƒ¡, áƒáƒœ დáƒáƒáƒ­áƒ˜áƒ áƒ”თ ''Ctrl-F5'', áƒáƒœ ''Ctrl-R'' (''ბრძáƒáƒœáƒ”ბáƒ-R'' Mac-ზე);
+* '''Google Chrome:''' დáƒáƒáƒ­áƒ˜áƒ áƒ”თ ''Ctrl-Shift-R'' (''ბრძáƒáƒœáƒ”ბáƒ-Shift-R'' Mac-ზე);
+* '''IE:''' დáƒáƒáƒ­áƒ˜áƒ áƒ”თ ''Ctrl'' ''Refresh''-ზე დáƒáƒ¬áƒ™áƒáƒžáƒ”ბისáƒáƒ¡, áƒáƒœ დáƒáƒáƒ­áƒ˜áƒ áƒ”თ ''Ctrl-F5'';
+* '''Konqueror:''' მხáƒáƒšáƒáƒ“ დáƒáƒáƒ¬áƒ™áƒáƒžáƒ”თ ''Reload'' ღილáƒáƒ™áƒ¡, áƒáƒœ დáƒáƒáƒ­áƒ˜áƒ áƒ”თ ''F5'';
+* '''Opera''' გáƒáƒ¬áƒ›áƒ˜áƒœáƒ“ეთ კეში ''Tools→Preferences''-დáƒáƒœ.",
'usercssyoucanpreview' => "'''რჩევáƒ:''' შენáƒáƒ®áƒ•áƒáƒ›áƒ“ე გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ ღილáƒáƒ™áƒ˜ \"{{int:showpreview}}\" თქვენი áƒáƒ®áƒáƒšáƒ˜ CSS ტესტირებისთვის.",
'userjsyoucanpreview' => "'''რჩევáƒ:''' შენáƒáƒ®áƒ•áƒáƒ›áƒ“ე გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ ღილáƒáƒ™áƒ˜ \"{{int:showpreview}}\" თქვენი áƒáƒ®áƒáƒšáƒ˜ JS ტესტირებისთვის.",
'usercsspreview' => "'''გáƒáƒ®áƒ¡áƒáƒ•áƒ“ეთ, რáƒáƒ› თქვენ მხáƒáƒšáƒáƒ“ წინáƒáƒ¡áƒ¬áƒáƒ  გáƒáƒ“áƒáƒ®áƒ”დვáƒáƒ¡ უყურებთ თქვენს მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის CSS-ს, ის ჯერ შენáƒáƒ®áƒ£áƒšáƒ˜ áƒáƒ  áƒáƒ áƒ˜áƒ¡!'''",
@@ -758,6 +798,7 @@ $1 სáƒáƒáƒ—ში.',
'''თუ ეს მიღებული რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის მცდელáƒáƒ‘რიყáƒ, გთხáƒáƒ•áƒ— ისევ სცáƒáƒ“áƒáƒ—. თუ იგი კვლáƒáƒ• áƒáƒ  მუშáƒáƒáƒ‘ს, სცáƒáƒ“ეთ თáƒáƒ•áƒ˜áƒ“áƒáƒœ [[Special:UserLogout/დáƒáƒ áƒ”გისტრირებ]]რ(შესვლáƒ)'''",
'token_suffix_mismatch' => "'''თქვენი შესწáƒáƒ áƒ”ბრგáƒáƒ£áƒ¥áƒ›áƒ“რრáƒáƒ“გáƒáƒœáƒáƒª პრáƒáƒ’რáƒáƒ›áƒ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ”დ áƒáƒ¦áƒ˜áƒ¥áƒ•áƒáƒ›áƒ¡ პუნქტუáƒáƒªáƒ˜áƒ˜áƒ¡ ნიშნებს რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის ფáƒáƒœáƒ¯áƒáƒ áƒáƒ¨áƒ˜. შესწრებრგáƒáƒ£áƒ¥áƒ›áƒ“რსტáƒáƒ¢áƒ˜áƒ˜áƒ¡ áƒáƒ  გáƒáƒ¤áƒ£áƒ­áƒ”ბის მიზნით. შესáƒáƒ«áƒšáƒáƒ ეს გáƒáƒ›áƒáƒ¬áƒ•áƒ”ულირგáƒáƒ¤áƒ£áƒ­áƒ”ბული ვებ პრáƒáƒ¥áƒ¡áƒ˜áƒ¡ გáƒáƒ›áƒáƒ§áƒ”ნებით.'''",
+'edit_form_incomplete' => "'''რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბების ნáƒáƒ¬áƒ˜áƒšáƒ›áƒ სერვერáƒáƒ›áƒ“ე ვერ მიáƒáƒ¦áƒ¬áƒ˜áƒ; გთხáƒáƒ•áƒ—, შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ თქვენი რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბების სრულყáƒáƒ¤áƒ˜áƒšáƒ”ბრდრსცáƒáƒ“ეთ გáƒáƒœáƒ›áƒ”áƒáƒ áƒ”ბით.'''",
'editing' => 'რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ: $1',
'editingsection' => 'რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრ- $1 (სექციáƒ)',
'editingcomment' => 'რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ: $1 (áƒáƒ®áƒáƒšáƒ˜ სექციáƒ)',
@@ -1113,9 +1154,10 @@ $1",
'changepassword' => 'პáƒáƒ áƒáƒšáƒ˜áƒ¡ შეცვლáƒ',
'prefs-skin' => 'გáƒáƒ áƒ”კáƒáƒœáƒ˜',
'skin-preview' => 'წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ გáƒáƒ“áƒáƒ®áƒ”დვáƒ',
-'prefs-math' => 'მáƒáƒ—ემáƒáƒ¢áƒ˜áƒ™áƒ',
'datedefault' => 'წყáƒáƒ áƒ მითითებული áƒáƒ áƒáƒ',
+'prefs-beta' => 'ბეტრშესáƒáƒ«áƒšáƒ”ბლáƒáƒ‘ები',
'prefs-datetime' => 'თáƒáƒ áƒ˜áƒ¦áƒ˜ დრდრáƒ',
+'prefs-labs' => 'ექსპერიმენტáƒáƒšáƒ£áƒ áƒ˜ ფუნქციები',
'prefs-personal' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის მáƒáƒœáƒáƒªáƒ”მები',
'prefs-rc' => 'ბáƒáƒšáƒ ცვლილებები',
'prefs-watchlist' => 'კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიáƒ',
@@ -1137,8 +1179,6 @@ $1",
'columns' => 'სვეტები',
'searchresultshead' => 'ძიებáƒ',
'resultsperpage' => 'შედეგები გვერდის მიხედვით:',
-'contextlines' => 'სტრიქáƒáƒœáƒ”ბი შედეგის მიხედვით',
-'contextchars' => 'კáƒáƒœáƒ¢áƒ”ქსტი სტრიქáƒáƒœáƒ”ბის მიხედვით',
'stub-threshold' => 'გáƒáƒ¤áƒáƒ áƒ›áƒ”ბის გáƒáƒ¡áƒáƒ£áƒ›áƒ¯áƒáƒ‘ესებლáƒáƒ“ <a href="#" class="stub"> მáƒáƒªáƒ”მულირესკიზების ბმულები</a> (ბáƒáƒ˜áƒ¢áƒ”ბში):',
'stub-threshold-disabled' => 'გáƒáƒ—იშულიáƒ',
'recentchangesdays' => 'დღეების ჩვენებრბáƒáƒšáƒ ცვლილებებში:',
@@ -1151,7 +1191,7 @@ $1",
'savedprefs' => 'თქვენს მიერ შერჩეული პáƒáƒ áƒáƒ›áƒ”ტრები დáƒáƒ›áƒáƒ®áƒ¡áƒáƒ•áƒ áƒ”ბულიáƒ.',
'timezonelegend' => 'სáƒáƒ¡áƒáƒáƒ—რსáƒáƒ áƒ¢áƒ§áƒ”ლი:',
'localtime' => 'áƒáƒ“გილáƒáƒ‘რივი დრáƒ:',
-'timezoneuseserverdefault' => 'სერვერის თáƒáƒ•áƒ“áƒáƒžáƒ˜áƒ áƒ•áƒ”ლი პáƒáƒ áƒáƒ›áƒ”ტრები',
+'timezoneuseserverdefault' => 'გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნე ნáƒáƒ’ულისხმევი პáƒáƒ áƒáƒ›áƒ”ტრები ($1)',
'timezoneuseoffset' => 'სხვრ(მისáƒáƒ—ითებელი)',
'timezoneoffset' => 'გáƒáƒœáƒ¡áƒ®áƒ•áƒáƒ•áƒ”ბáƒÂ¹:',
'servertime' => 'სერვერის დრáƒ:',
@@ -1199,8 +1239,8 @@ $1",
ეს ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ სáƒáƒ–áƒáƒ’áƒáƒ“áƒáƒ”ბრივი იქნებáƒ.',
'email' => 'ელ. ფáƒáƒ¡áƒ¢áƒ',
'prefs-help-realname' => 'ნáƒáƒ›áƒ“ვილი სáƒáƒ®áƒ”ლის მითითებრáƒáƒ£áƒªáƒ˜áƒšáƒ”ბელი áƒáƒ  áƒáƒ áƒ˜áƒ¡, მáƒáƒ’რáƒáƒ› თუ მიუთითებთ ის გáƒáƒ›áƒáƒ§áƒ”ნებული იქნებრთქვენი ნáƒáƒ›áƒ£áƒ¨áƒ”ვრის áƒáƒ¦áƒ¡áƒáƒœáƒ˜áƒ¨áƒœáƒáƒ•áƒáƒ“.',
-'prefs-help-email' => 'ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒ áƒáƒ¡áƒáƒ•áƒáƒšáƒ“ებულáƒáƒ, მáƒáƒ’რáƒáƒ› იძლევრáƒáƒ®áƒáƒšáƒ˜ პáƒáƒ áƒáƒšáƒ˜áƒ¡ გáƒáƒ›áƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒ¡ სáƒáƒ¨áƒ£áƒáƒšáƒ”ბáƒáƒ¡ თქვენი პáƒáƒ áƒáƒšáƒ˜áƒ¡ დáƒáƒ•áƒ˜áƒ¬áƒ§áƒ”ბის შემთხვევáƒáƒ¨áƒ˜.
-áƒáƒ¡áƒ”ვე შეგიძლიáƒáƒ— სáƒáƒ¨áƒ£áƒáƒšáƒ”ბრმისცეთ სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლებს დáƒáƒ’იკáƒáƒ•áƒ¨áƒ˜áƒ áƒ“ნენ თქვენი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის გვერდის áƒáƒœ გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ˜áƒ¡ გვერდის მეშვეáƒáƒ‘ით თქვენი ვინáƒáƒáƒ‘ის ჩვენების სáƒáƒ­áƒ˜áƒ áƒáƒ”ბის გáƒáƒ áƒ”შე.',
+'prefs-help-email' => 'ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒ  áƒáƒ áƒ˜áƒ¡ სáƒáƒ•áƒáƒšáƒ“ებულáƒ, მáƒáƒ’რáƒáƒ› იძლევრáƒáƒ®áƒáƒšáƒ˜ პáƒáƒ áƒáƒšáƒ˜áƒ¡ გáƒáƒ›áƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒ¡ სáƒáƒ¨áƒ£áƒáƒšáƒ”ბáƒáƒ¡ თქვენი პáƒáƒ áƒáƒšáƒ˜áƒ¡ დáƒáƒ•áƒ˜áƒ¬áƒ§áƒ”ბის შემთხვევáƒáƒ¨áƒ˜.',
+'prefs-help-email-others' => 'ის áƒáƒ’რეთვე მისცემს სáƒáƒ¨áƒ£áƒáƒšáƒ”ბáƒáƒ¡ სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლებს დáƒáƒ’იკáƒáƒ•áƒ¨áƒ˜áƒ áƒ“ნენ თქვენ პირáƒáƒ“ი გვერდის სáƒáƒ¨áƒ£áƒáƒšáƒ”ბით თქვენი ელექტრáƒáƒœáƒ£áƒšáƒ˜ ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ის გáƒáƒ›áƒ®áƒ”ლის გáƒáƒ áƒ”შე.',
'prefs-help-email-required' => 'თქვენი ელ-ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒ£áƒªáƒ˜áƒšáƒ”ბელიáƒ.',
'prefs-info' => 'სáƒáƒ‘áƒáƒ–ისრინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ',
'prefs-i18n' => 'ინტერნáƒáƒªáƒ˜áƒáƒœáƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ',
@@ -1325,7 +1365,6 @@ $1",
'right-userrights' => 'ყველრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის უფლებების შეცვლáƒ',
'right-userrights-interwiki' => 'შეáƒáƒ¡áƒ¬áƒáƒ áƒ”თ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელთრუფლებები სხვრვიკიზე',
'right-siteadmin' => 'მáƒáƒœáƒáƒªáƒ”მთრბáƒáƒ–ის დáƒáƒ‘ლáƒáƒ™áƒ•áƒ დრგáƒáƒœáƒ‘ლáƒáƒ™áƒ•áƒ',
-'right-reset-passwords' => 'სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლების პáƒáƒ áƒáƒšáƒ”ბის ჩáƒáƒ¨áƒ•áƒ”ბáƒ',
'right-override-export-depth' => 'გვერდების ექსპáƒáƒ áƒ¢áƒ˜áƒ áƒ”ბáƒ, დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბული გვერდების ჩáƒáƒ—ვლით 5-მდე სიიღრმით',
'right-sendemail' => 'გáƒáƒ’უგზáƒáƒ•áƒœáƒ” ელექტრáƒáƒœáƒ£áƒšáƒ˜ ფáƒáƒ¡áƒ¢áƒ სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლებს',
@@ -1455,13 +1494,13 @@ $1",
'minlength1' => 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ®áƒ”ლი უნდრიყáƒáƒ¡ áƒáƒ áƒáƒœáƒáƒ™áƒšáƒ”ბ ერთი áƒáƒ¡áƒ.',
'illegalfilename' => 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ®áƒ”ლი "$1" შეიცáƒáƒ•áƒ¡ სიმბáƒáƒšáƒáƒ”ბს, რáƒáƒ›áƒ”ლთრგáƒáƒ›áƒáƒ§áƒ”ნებáƒáƒª áƒáƒ  áƒáƒ áƒ˜áƒ¡ ნებáƒáƒ“áƒáƒ áƒ—ული სáƒáƒ—áƒáƒ£áƒ áƒ”ბში. გთხáƒáƒ•áƒ—, შეცვáƒáƒšáƒáƒ— ფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ®áƒ”ლი დრსცáƒáƒ“áƒáƒ— მისი ხელმეáƒáƒ áƒ”დ ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ.',
'badfilename' => 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ დáƒáƒ¡áƒáƒ®áƒ”ლებრშეცვლილირ"$1"-ით.',
-'filetype-mime-mismatch' => 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ ფáƒáƒ áƒ›áƒáƒ¢áƒ˜ áƒáƒ  ემთხვევრMIME ტიპს.',
+'filetype-mime-mismatch' => 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბრ".$1" áƒáƒ  შეესáƒáƒ‘áƒáƒ›áƒ”ბრáƒáƒ¦áƒ›áƒáƒ©áƒ”ნილ MIME ტიპის ($2) ფáƒáƒ˜áƒšáƒ¡.',
'filetype-badmime' => '"$1" MIME ტიპის ფáƒáƒ˜áƒšáƒ”ბის áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრდáƒáƒ¨áƒ•áƒ”ბული áƒáƒ  áƒáƒ áƒ˜áƒ¡.',
'filetype-bad-ie-mime' => 'შეუძლებელირფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ, რáƒáƒ“გáƒáƒœáƒ Internet Explorer-ი áƒáƒ¦áƒ˜áƒ¥áƒ•áƒáƒ›áƒ¡ მáƒáƒ¡ რáƒáƒ’áƒáƒ áƒª "$1", რáƒáƒª áƒáƒ™áƒ áƒ«áƒáƒšáƒ£áƒšáƒ˜áƒ დრპáƒáƒ¢áƒ”ნციურáƒáƒ“ სáƒáƒ®áƒ˜áƒ¤áƒáƒ—რფáƒáƒ˜áƒšáƒ˜áƒ.',
'filetype-unwanted-type' => "'''\".\$1\"''' — ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ áƒáƒ¡áƒáƒ¡áƒ£áƒ áƒ•áƒ”ლი ტიპიáƒ.
{{PLURAL:\$3|ფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ¡áƒ£áƒ áƒ•áƒ”ლი ტიპიáƒ|ფáƒáƒ˜áƒšáƒ”ბის სáƒáƒ¡áƒ£áƒ áƒ•áƒ”ლი ტიპები:}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' მიუღებელი ფáƒáƒ˜áƒšáƒ˜áƒ¡ ტიპიáƒ.
-მიღებული ფáƒáƒ˜áƒšáƒ˜áƒ¡ {{PLURAL:\$3|ტიპიáƒ|ტიპებიáƒ}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|მიუღებელი ფáƒáƒ˜áƒšáƒ˜áƒ¡ ტიპიáƒ|მიუღებელი ფáƒáƒ˜áƒšáƒ˜áƒ¡ ტიპიáƒ}}.
+მიღებული ფáƒáƒ˜áƒšáƒ˜áƒ¡ {{PLURAL:$3|ტიპიáƒ|ტიპებიáƒ}} $2.',
'filetype-missing' => 'ფáƒáƒ˜áƒšáƒ¡ áƒáƒ  áƒáƒ¥áƒ•áƒ¡ გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბრ(მáƒáƒ’.: ".jpg").',
'empty-file' => 'áƒáƒ áƒ©áƒ”ული ფáƒáƒ˜áƒšáƒ˜ ცáƒáƒ áƒ˜áƒ”ლიáƒ.',
'file-too-large' => 'ფáƒáƒ˜áƒšáƒ˜ ძáƒáƒšáƒ˜áƒáƒœ დიდიáƒ',
@@ -1502,7 +1541,7 @@ $1",
'uploadwarning-text' => 'გთხáƒáƒ•áƒ— ჩáƒáƒáƒ¡áƒ¬áƒáƒ áƒáƒ— ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¦áƒ¬áƒ”რრქვევით დრხელმეáƒáƒ áƒ”დ სცáƒáƒ“áƒáƒ—.',
'savefile' => 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ შენáƒáƒ®áƒ•áƒ',
'uploadedimage' => 'დáƒáƒ›áƒáƒ¢áƒ”ბრ"[[$1]]"',
-'overwroteimage' => 'áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ულირ"[[$1]]"-ის áƒáƒ®áƒáƒšáƒ˜ ვერსიáƒ',
+'overwroteimage' => 'áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ულირ„[[$1]]-ის“ áƒáƒ®áƒáƒšáƒ˜ ვერსიáƒ',
'uploaddisabled' => 'áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრშეუძლებელიáƒ',
'copyuploaddisabled' => 'URL áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრგáƒáƒ¦áƒ˜áƒ¨áƒ£áƒšáƒ˜áƒ',
'uploadfromurl-queued' => 'თქვენი áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრრიგში ჩáƒáƒ“გáƒ.',
@@ -1510,6 +1549,8 @@ $1",
'php-uploaddisabledtext' => 'ფáƒáƒ˜áƒšáƒ”ბის áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრშეჩერებულირPHP-ით. გთხáƒáƒ•áƒ— შეáƒáƒ›áƒáƒ¬áƒ›áƒáƒ— file_uploads-ის მნიშვნელáƒáƒ‘áƒ.',
'uploadscripted' => 'ფáƒáƒ˜áƒšáƒ˜ შეიცáƒáƒ•áƒ¡ HTML-კáƒáƒ“ს, áƒáƒœ სკრიპტს, რáƒáƒ›áƒ”ლიც ბრáƒáƒ£áƒ–ერმრშეიძლებრáƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ”დ გáƒáƒáƒœáƒáƒšáƒ˜áƒ–áƒáƒ¡.',
'uploadvirus' => 'ფáƒáƒ˜áƒšáƒ˜ ვირუსს შეიცáƒáƒ•áƒ¡! დეტáƒáƒšáƒ”ბი: $1',
+'uploadjava' => 'ეს áƒáƒ áƒ˜áƒ¡ ZIP-ფáƒáƒ˜áƒšáƒ˜, რáƒáƒ›áƒ”ლიც ჯáƒáƒ•áƒáƒ¡ CLASS-ფáƒáƒ˜áƒšáƒ¡ შეიცáƒáƒ•áƒ¡.
+ჯáƒáƒ•áƒ-ფáƒáƒ˜áƒšáƒ”ბის áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრდáƒáƒ£áƒ¨áƒ•áƒ”ბელიáƒ, ვინáƒáƒ˜áƒ“áƒáƒœ მáƒáƒ— შესáƒáƒ«áƒšáƒáƒ შეზღუდáƒáƒœ უსáƒáƒ¤áƒ áƒ—ხáƒáƒ”ბáƒ.',
'upload-source' => 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ წყáƒáƒ áƒ',
'sourcefilename' => 'წყáƒáƒ áƒ:',
'sourceurl' => 'Source URL:
@@ -1520,11 +1561,7 @@ $1",
'upload-options' => 'áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვის პáƒáƒ áƒáƒ›áƒ”ტრები',
'watchthisupload' => 'უთვáƒáƒšáƒ—ვáƒáƒšáƒ” áƒáƒ› ფáƒáƒ˜áƒšáƒ¡',
'filewasdeleted' => 'áƒáƒ› სáƒáƒ®áƒ”ლწáƒáƒ“ების ფáƒáƒ˜áƒšáƒ˜ უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘დáƒ, მáƒáƒ’რáƒáƒ› წáƒáƒ¨áƒšáƒ˜áƒš იქნáƒ. ხელმეáƒáƒ áƒ”დ ჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒáƒ›áƒ“ე იხილეთ $1.',
-'upload-wasdeleted' => "'''გáƒáƒ¤áƒ áƒ—ხილეáƒ: თქვენ ტვირთáƒáƒ•áƒ— ფáƒáƒ˜áƒšáƒ¡, რáƒáƒ›áƒ”ლიც წინáƒáƒ— წáƒáƒ˜áƒ¨áƒáƒšáƒ.'''
-
-გთხáƒáƒ•áƒ— დáƒáƒ¤áƒ˜áƒ¥áƒ áƒ“ეთ რáƒáƒ›áƒ“ენáƒáƒ“ მიზáƒáƒœáƒ¨áƒ”წáƒáƒœáƒ˜áƒšáƒ˜áƒ áƒáƒ› ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¥ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ.
-ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡áƒ—ვის ქვემáƒáƒ— áƒáƒ› ფáƒáƒ˜áƒšáƒ˜áƒ¡ წáƒáƒ¨áƒšáƒ˜áƒ¡ ისტáƒáƒ áƒ˜áƒ:",
-'filename-bad-prefix' => "áƒáƒ¡áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვი ფáƒáƒ˜áƒšáƒ˜ იწყებრ'''«$1»''', რáƒáƒª áƒáƒ áƒ˜áƒ¡ ფáƒáƒ¢áƒáƒ™áƒáƒ›áƒ”რის მიერ სურáƒáƒ—ებისთვის მიცემული სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ სáƒáƒ®áƒ”ლი. გთხáƒáƒ•áƒ— áƒáƒ˜áƒ áƒ©áƒ˜áƒáƒ— ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¦áƒ›áƒ¬áƒ”რი უკეთესი სáƒáƒ®áƒ”ლი.",
+'filename-bad-prefix' => "áƒáƒ¡áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვი ფáƒáƒ˜áƒšáƒ˜ იწყებრ'''„$1“''', რáƒáƒª áƒáƒ áƒ˜áƒ¡ ფáƒáƒ¢áƒáƒ™áƒáƒ›áƒ”რის მიერ სურáƒáƒ—ებისთვის მიცემული სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ სáƒáƒ®áƒ”ლი. გთხáƒáƒ•áƒ— áƒáƒ˜áƒ áƒ©áƒ˜áƒáƒ— ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¦áƒ›áƒ¬áƒ”რი უკეთესი სáƒáƒ®áƒ”ლი.",
'upload-success-subj' => 'წáƒáƒ áƒ›áƒáƒ¢áƒ”ბული გáƒáƒ“áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ',
'upload-success-msg' => 'თქვენი áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვრ[$2] შეგიძლიáƒáƒ— იხილáƒáƒ— áƒáƒ¥: [[:{{ns:file}}:$1]]',
'upload-failure-subj' => 'áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვის პრáƒáƒ‘ლემáƒ',
@@ -1546,6 +1583,23 @@ $1',
'upload-unknown-size' => 'უცნáƒáƒ‘ი ზáƒáƒ›áƒ',
'upload-http-error' => 'მáƒáƒ®áƒ“რHTTP შეცდáƒáƒ›áƒ: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'წáƒáƒ áƒ›áƒáƒ˜áƒ¥áƒ›áƒœáƒ შეცდáƒáƒ›áƒ ფáƒáƒ˜áƒšáƒ˜áƒ¡ ZIP შემáƒáƒ¬áƒ›áƒ”ბისáƒáƒ—ვის გáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡áƒáƒ¡.',
+'zip-wrong-format' => 'მáƒáƒªáƒ”მული ფáƒáƒ˜áƒšáƒ˜ áƒáƒ áƒáƒ ZIP-ფáƒáƒ˜áƒšáƒ˜.',
+'zip-bad' => 'ფáƒáƒ˜áƒšáƒ˜ დáƒáƒ–იáƒáƒœáƒ”ბულირáƒáƒœ სხვრმიზეზთრგáƒáƒ›áƒ áƒáƒ› ZIP–ფáƒáƒ˜áƒšáƒ˜áƒ¡ წáƒáƒ™áƒ˜áƒ—ხვრვერ ხერხდებáƒ.
+შეუძლებელირუსáƒáƒ¤áƒ áƒ—ხáƒáƒ”ბის სáƒáƒ—áƒáƒœáƒáƒ“áƒáƒ“ შემáƒáƒ¬áƒ›áƒ”ბáƒ.',
+'zip-unsupported' => 'áƒáƒ› ZIP-ფáƒáƒ˜áƒšáƒ¡ გáƒáƒáƒ©áƒœáƒ˜áƒ შეკუმშვის თვისებები, რáƒáƒ›áƒšáƒ”ბიც მედიáƒáƒ•áƒ˜áƒ™áƒ˜áƒ¡ მიერ მხáƒáƒ áƒ“áƒáƒ­áƒ”რილი áƒáƒ áƒáƒ.
+შეუძლებელირუსáƒáƒ¤áƒ áƒ—ხáƒáƒ”ბის სáƒáƒ—áƒáƒœáƒáƒ“áƒáƒ“ შემáƒáƒ¬áƒ›áƒ”ბáƒ.',
+
+# Special:UploadStash
+'uploadstash' => 'ფáƒáƒ áƒ£áƒšáƒ˜ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ',
+'uploadstash-summary' => 'áƒáƒ› გვერდზე შესáƒáƒ«áƒšáƒ”ბელირიმ ფáƒáƒ˜áƒšáƒ—რმáƒáƒ«áƒ˜áƒ”ბáƒ, რáƒáƒ›áƒšáƒ”ბიც უკვე áƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—ნენ áƒáƒœ áƒáƒ®áƒšáƒ იტვირთებინ, მáƒáƒ’რáƒáƒ› ჯერ ვიკიში áƒáƒ  გáƒáƒ›áƒáƒ¥áƒ•áƒ”ყნებულáƒáƒœ. ეს ფáƒáƒ˜áƒšáƒ”ბი, გáƒáƒ áƒ“რáƒáƒ›áƒ¢áƒ•áƒ˜áƒ áƒ—áƒáƒ•áƒ˜ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლისáƒ, ჯერ სáƒáƒ¯áƒáƒ áƒáƒ“ áƒáƒ áƒáƒ•áƒ˜áƒ¡ უნáƒáƒ®áƒáƒ•áƒ¡.',
+'uploadstash-clear' => 'დáƒáƒ¤áƒáƒ áƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბის გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•áƒ”ბáƒ',
+'uploadstash-nofiles' => 'თქვენ áƒáƒ  გáƒáƒ¥áƒ•áƒ— დáƒáƒ¤áƒáƒ áƒ£áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბი.',
+'uploadstash-badtoken' => 'მითითებული მáƒáƒ¥áƒ›áƒ”დებრვერ შესრულდáƒ. შესáƒáƒ«áƒšáƒáƒ, თქვენი უსáƒáƒ¤áƒ áƒ—ხáƒáƒ”ბის მáƒáƒœáƒ“áƒáƒ¢áƒ˜áƒ¡ მáƒáƒ¥áƒ›áƒ”დების ვáƒáƒ“რáƒáƒ›áƒáƒ˜áƒ¬áƒ£áƒ áƒ. კიდევ სცáƒáƒ“ეთ.',
+'uploadstash-errclear' => 'ფáƒáƒ˜áƒšáƒ”ბის გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•áƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ.',
+'uploadstash-refresh' => 'ფáƒáƒ˜áƒšáƒ”ბის სიის გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ',
+
# img_auth script messages
'img-auth-accessdenied' => 'მáƒáƒ¥áƒ›áƒ”დებრáƒáƒ™áƒ áƒ«áƒáƒšáƒ£áƒšáƒ˜áƒ',
'img-auth-nopathinfo' => 'áƒáƒ  áƒáƒ áƒ˜áƒ¡ PATH_INFO.
@@ -1630,7 +1684,7 @@ $1',
შეგიძლიáƒáƒ— ნáƒáƒ®áƒáƒ— áƒáƒ¡áƒ”ვე [[Special:WhatLinksHere/$2|სრული სიáƒ]].',
'nolinkstoimage' => 'áƒáƒ  áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს áƒáƒ› ფáƒáƒ˜áƒšáƒ—áƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბული გვერდები.',
'morelinkstoimage' => 'იხილეთ [[Special:WhatLinksHere/$1|სხვრბმულები]] áƒáƒ› ფáƒáƒ˜áƒšáƒ–ე.',
-'redirectstofile' => 'შემდეგი {{PLURAL:$1|ფáƒáƒ˜áƒšáƒ˜ გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებულიáƒ|$1 ფáƒáƒ˜áƒšáƒ”ბი გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებულიáƒ}} áƒáƒ› ფáƒáƒ˜áƒšáƒ–ე:',
+'linkstoimage-redirect' => '$1 (ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებáƒ) $2',
'duplicatesoffile' => '{{PLURAL:$1|შემდეგი $1 ფáƒáƒ˜áƒšáƒ˜ áƒáƒ áƒ˜áƒ¡ დუბლიკáƒáƒ¢áƒ˜|შემდეგი $1 ფáƒáƒ˜áƒšáƒ”ბი áƒáƒ áƒ˜áƒáƒœ დუბლიკáƒáƒ¢áƒ”ბი|შემდეგი $1 ფáƒáƒ˜áƒšáƒ”ბი áƒáƒ áƒ˜áƒáƒœ დუბლიკáƒáƒ¢áƒ”ბი}} áƒáƒ› ფáƒáƒ˜áƒšáƒ˜áƒ¡áƒ ([[Special:FileDuplicateSearch/$2|დáƒáƒ›áƒáƒ¢áƒ”ბითი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ]]):',
'sharedupload' => 'ეს ფáƒáƒ˜áƒšáƒ˜ $1-დáƒáƒœáƒáƒ დრშეიძლებრსხვრპრáƒáƒ”ქტებიც იყენებდეს.',
'sharedupload-desc-there' => 'ეს ფáƒáƒ˜áƒšáƒ˜ $1-დáƒáƒœ შეიძლებრგáƒáƒ›áƒáƒ§áƒ”ნებული იქნáƒáƒ¡ სხვრპრáƒáƒ”ქტებშიც.
@@ -1719,19 +1773,20 @@ $1',
'statistics-users-active-desc' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლები, რáƒáƒ›áƒšáƒ”ბმáƒáƒª გáƒáƒœáƒáƒ®áƒáƒ áƒªáƒ˜áƒ”ლეს ქმედებრ{{PLURAL:$1|ბáƒáƒšáƒ $1 დღე|ბáƒáƒšáƒ $1 დღის|ბáƒáƒšáƒ $1 დღეების}}',
'statistics-mostpopular' => 'ყველზე ხშირáƒáƒ“ ხილვáƒáƒ“ი გვერდები',
-'disambiguations' => 'მრáƒáƒ•áƒáƒšáƒ›áƒœáƒ˜áƒ¨áƒ•áƒœáƒ”ლáƒáƒ•áƒáƒœáƒ˜ გვერდები',
+'disambiguations' => 'გვერდები, რáƒáƒ›áƒ”ლთáƒáƒª áƒáƒ¥áƒ•áƒ— ბმული მრáƒáƒ•áƒáƒšáƒ›áƒœáƒ˜áƒ¨áƒ•áƒœáƒ”ლáƒáƒ•áƒáƒœ გვერდებზე',
'disambiguationspage' => 'Template:მრáƒáƒ•áƒáƒšáƒ›áƒœáƒ˜áƒ¨áƒ•áƒœáƒ”ლáƒáƒ•áƒáƒœáƒ˜',
'disambiguations-text' => "შემდეგი გვერდები დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბულები áƒáƒ áƒ˜áƒáƒœ '''მრáƒáƒ•áƒáƒšáƒ›áƒœáƒ˜áƒ¨áƒ•áƒœáƒ”ლáƒáƒ‘ის გვერდთáƒáƒœ'''.
áƒáƒ›áƒ˜áƒ¡ ნáƒáƒªáƒ•áƒšáƒáƒ“ იგი უნდრშეესáƒáƒ‘áƒáƒ›áƒáƒ¡ კáƒáƒœáƒ™áƒ áƒ”ტულ სტáƒáƒ¢áƒ˜áƒáƒ¡.<br />
გვერდი ითვლებრმრáƒáƒ•áƒáƒšáƒ›áƒœáƒ˜áƒ¨áƒ•áƒœáƒ”ლáƒáƒ•áƒœáƒáƒ“, თუ მáƒáƒ¡áƒ–ე გáƒáƒ›áƒáƒ§áƒ”ნებულირ[[MediaWiki:Disambiguationspage|მითსáƒáƒ—ითებელი თáƒáƒ áƒ’ი]].",
-'doubleredirects' => 'áƒáƒ áƒ›áƒáƒ’ი გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებáƒ',
-'doubleredirectstext' => 'áƒáƒ› გვერდზე ჩáƒáƒ›áƒáƒ—ვლილირგვერდები, რáƒáƒ›áƒšáƒ”ბიც გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებულირსხვრგáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ების გვერდებზე.
+'doubleredirects' => 'áƒáƒ áƒ›áƒáƒ’ი გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებáƒ',
+'doubleredirectstext' => 'áƒáƒ› გვერდზე ჩáƒáƒ›áƒáƒ—ვლილირგვერდები, რáƒáƒ›áƒšáƒ”ბიც გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებულირსხვრგáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ების გვერდებზე.
ყáƒáƒ•áƒ”ლი მწკრივი შეიცáƒáƒ•áƒ¡ ბმულებს პირველ დრმეáƒáƒ áƒ” გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებáƒáƒ–ე, áƒáƒ’რეთვე მეáƒáƒ áƒ” გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ების ტექსტის პირველ სტრიქáƒáƒœáƒ¡, რáƒáƒ›áƒ”ლშიც ჩვეულებრივ მითითებულირრეáƒáƒšáƒ£áƒ áƒ˜ „სáƒáƒ›áƒ˜áƒ–ნე“ გვერდის სáƒáƒ—áƒáƒ£áƒ áƒ˜. სáƒáƒ­áƒ˜áƒ áƒáƒ, რáƒáƒ› პირველი გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებáƒáƒª უთითებდეს áƒáƒ› გვერდზე.
<del>გáƒáƒ“áƒáƒ®áƒáƒ–ული</del> მáƒáƒœáƒáƒªáƒ”მები უკვე გáƒáƒ›áƒáƒ áƒ—ულიáƒ.',
-'double-redirect-fixed-move' => '[[$1]] გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒš იქნáƒ.
+'double-redirect-fixed-move' => '[[$1]] გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒš იქნáƒ.
áƒáƒ›áƒŸáƒáƒ›áƒáƒ“ ის გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებულირ[[$2]]-ზე.',
-'double-redirect-fixer' => 'გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებრშემსწáƒáƒ áƒ”ბელი',
+'double-redirect-fixed-maintenance' => 'áƒáƒ áƒ›áƒáƒ’ი გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ების გáƒáƒ¡áƒ¬áƒáƒ áƒ”ბრ[[$1]]დáƒáƒœ [[$2]]ზე.',
+'double-redirect-fixer' => 'გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებრშემსწáƒáƒ áƒ”ბელი',
'brokenredirects' => 'გáƒáƒ¬áƒ§áƒ•áƒ”ტილი გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებáƒ',
'brokenredirectstext' => 'შემდეგი გáƒáƒ“áƒáƒ›áƒ˜áƒ¡áƒáƒ›áƒáƒ áƒ—ებები გáƒáƒ™áƒ”თებულირáƒáƒ áƒáƒ áƒ¡áƒ”ბულ გვერდებზე:',
@@ -1809,6 +1864,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|უáƒáƒ®áƒšáƒ”სი 1|უáƒáƒ®áƒšáƒ”სი $1}}',
'pager-older-n' => '{{PLURAL:$1|ხáƒáƒœáƒ“áƒáƒ–მული 1|ხáƒáƒœáƒ“áƒáƒ–მული $1}}',
'suppress' => 'დáƒáƒ›áƒáƒšáƒ•áƒ',
+'querypage-disabled' => 'ეს სპეცგვერდი გáƒáƒ›áƒáƒ áƒ—ულირწáƒáƒ áƒ›áƒáƒ“áƒáƒ‘ის გáƒáƒ¡áƒáƒ–რდელáƒáƒ“.',
# Book sources
'booksources' => 'წიგნის წყáƒáƒ áƒáƒ”ბი',
@@ -1859,7 +1915,7 @@ $1',
'sp-deletedcontributions-contribs' => 'წვლილი',
# Special:LinkSearch
-'linksearch' => 'გáƒáƒ áƒ” ბმულები',
+'linksearch' => 'გáƒáƒ áƒ” ბმულების ძიებáƒ',
'linksearch-pat' => 'ძიების თáƒáƒ áƒ’ი:',
'linksearch-ns' => 'სáƒáƒ®áƒ”ლთრსივრცე:',
'linksearch-ok' => 'ძიებáƒ',
@@ -1924,6 +1980,10 @@ $1',
'noemailtext' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელმრáƒáƒ  მიუთითრმáƒáƒ¥áƒ›áƒ”დი ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი.',
'nowikiemailtitle' => 'წერილების გáƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒ¡ უფლებრáƒáƒ  გáƒáƒ¥áƒ•áƒ—.',
'nowikiemailtext' => 'áƒáƒ› მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელმრგáƒáƒ›áƒáƒ®áƒáƒ¢áƒ სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლებისგáƒáƒœ წერილების áƒáƒ  მიღების სურვილი.',
+'emailnotarget' => 'áƒáƒ áƒáƒ áƒ¡áƒ”ბული áƒáƒœ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი.',
+'emailtarget' => 'შეიყვáƒáƒœáƒ”თ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი ელ-ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ გáƒáƒ¡áƒáƒ’ზáƒáƒ•áƒœáƒáƒ“.',
+'emailusername' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი:',
+'emailusernamesubmit' => 'შენáƒáƒ®áƒ•áƒ',
'email-legend' => 'წერილის გáƒáƒ’ზáƒáƒ•áƒœáƒ სხვრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლისáƒáƒ“მი {{grammar:genitive|{{SITENAME}}}}',
'emailfrom' => 'გáƒáƒ›áƒáƒ›áƒ’ზáƒáƒ•áƒœáƒ˜:',
'emailto' => 'áƒáƒ“რესáƒáƒ¢áƒ˜:',
@@ -1950,10 +2010,10 @@ $1',
იხილეთ áƒáƒœ რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრგáƒáƒ£áƒ™áƒ”თეთ თქვენი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიáƒáƒ¨áƒ˜ შეტáƒáƒœáƒ˜áƒš ერთეულებს.',
'watchnologin' => 'რეგისტრáƒáƒªáƒ˜áƒ ვერ შესრულდáƒ',
'watchnologintext' => 'თქვენ უნდრმáƒáƒáƒ®áƒ“ინáƒáƒ— [[Special:UserLogin|რეგისტრáƒáƒªáƒ˜áƒ]] თქვენი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიის მáƒáƒ“იფიცირებისáƒáƒ—ვის.',
-'addedwatch' => 'შეტáƒáƒœáƒ˜áƒšáƒ˜áƒ კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიáƒáƒ¨áƒ˜',
+'addwatch' => 'კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიáƒáƒ¨áƒ˜ დáƒáƒ›áƒáƒ¢áƒ”ბáƒ',
'addedwatchtext' => "გვერდი „[[:$1]]“ დáƒáƒ”მáƒáƒ¢áƒ თქვენს [[Special:Watchlist|კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიáƒáƒ¡]].
áƒáƒ› დრმáƒáƒ¡áƒ—áƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბული გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ˜áƒ¡ გვერდის შემდგáƒáƒ›áƒ˜ ცვლილებები áƒáƒ˜áƒ¡áƒáƒ®áƒ”ბრ'''გáƒáƒ›áƒ£áƒ¥áƒ”ბულáƒáƒ“''' [[Special:RecentChanges|ბáƒáƒšáƒ ცვლილებების სიáƒáƒ¨áƒ˜]], რáƒáƒ—რáƒáƒ“ვილáƒáƒ“ დáƒáƒ˜áƒœáƒáƒ®áƒáƒ— იგი. თუ გსურთ მისი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიიდáƒáƒœ áƒáƒ›áƒáƒ¨áƒšáƒ, დáƒáƒáƒ¬áƒ™áƒáƒžáƒ”თ „კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ მáƒáƒ®áƒ¡áƒœáƒáƒ¡â€œ ზედრდáƒáƒ¤áƒáƒ–ე.",
-'removedwatch' => 'áƒáƒ›áƒáƒ¦áƒ”ბულირკáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიიდáƒáƒœ',
+'removewatch' => 'კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიიდáƒáƒœ წáƒáƒ¨áƒšáƒ',
'removedwatchtext' => 'გვერდი „[[:$1]]“ áƒáƒ›áƒáƒ¦áƒ”ბულირთქვენი [[Special:Watchlist|კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიიდáƒáƒœ]].',
'watch' => 'კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜',
'watchthispage' => 'áƒáƒ› გვერდის კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜',
@@ -2007,13 +2067,13 @@ $NEWPAGE
--
თქვენი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიის შესáƒáƒ¡áƒ¬áƒáƒ áƒ”ბლáƒáƒ“ იხილეთ
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
თქვენი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიიდáƒáƒœ გვერდის áƒáƒ›áƒáƒ¨áƒšáƒ
$UNWATCHURL
დáƒáƒ›áƒáƒ¢áƒ”ბითი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'გვერდის წáƒáƒ¨áƒšáƒ',
@@ -2030,7 +2090,7 @@ $UNWATCHURL
áƒáƒ¡áƒ”ვე გáƒáƒ“áƒáƒáƒ›áƒáƒ¬áƒ›áƒ”თ, თუ áƒáƒ¡áƒ áƒ£áƒšáƒ”ბთ áƒáƒ›áƒáƒ¡ [[{{MediaWiki:Policy-url}}|წესებიდáƒáƒœ გáƒáƒ›áƒáƒ›áƒ“ინáƒáƒ áƒ”]].',
'actioncomplete' => 'მáƒáƒ¥áƒ›áƒ”დებრშესრულებულიáƒ',
'actionfailed' => 'მáƒáƒ¥áƒ›áƒ”დებრვერ გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლდáƒ',
-'deletedtext' => '"<nowiki>$1</nowiki>" წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜áƒ. ბáƒáƒšáƒ წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ გვერდების სირიხილეთ $2-ში.',
+'deletedtext' => '„$1“ წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜áƒ. ბáƒáƒšáƒ წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ გვერდების სირიხილეთ $2-ში.',
'deletedarticle' => 'წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜áƒ „[[$1]]“',
'suppressedarticle' => 'დáƒáƒ›áƒáƒšáƒ «[[$1]]»-მáƒ',
'dellogpage' => 'წáƒáƒ¨áƒšáƒ˜áƒšáƒ—áƒ_სიáƒ',
@@ -2087,7 +2147,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'ვáƒáƒ“ის გáƒáƒ¡áƒ•áƒšáƒ˜áƒ¡ დრრáƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ.',
'protect_expiry_old' => 'ვáƒáƒ“ის გáƒáƒ¡áƒ•áƒšáƒ˜áƒ¡ დრრწáƒáƒ áƒ¡áƒ£áƒšáƒ¨áƒ˜áƒ.',
'protect-unchain-permissions' => 'მáƒáƒ®áƒ¡áƒ”ნით ბლáƒáƒ™áƒ˜ დáƒáƒªáƒ•áƒ˜áƒ¡ პáƒáƒ áƒáƒ›áƒ”ტრებს',
-'protect-text' => "თქვენ შეგიძლიáƒáƒ— áƒáƒ¥ იხილáƒáƒ— დრშეცვáƒáƒšáƒáƒ— დáƒáƒªáƒ•áƒ˜áƒ¡ დáƒáƒœáƒ” გვერდისთვის '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "თქვენ შეგიძლიáƒáƒ— áƒáƒ¥ იხილáƒáƒ— დრშეცვáƒáƒšáƒáƒ— დáƒáƒªáƒ•áƒ˜áƒ¡ დáƒáƒœáƒ” გვერდისთვის '''$1'''.",
'protect-locked-blocked' => "თქვენ ვერ შეცვლით დáƒáƒªáƒ•áƒšáƒ˜áƒ¡ დáƒáƒœáƒ”ს, რáƒáƒ“გáƒáƒœáƒáƒª თáƒáƒ•áƒáƒ“ ხáƒáƒ áƒ— დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜.
მáƒáƒ¥áƒ›áƒ”დი დáƒáƒªáƒ•áƒ˜áƒ¡ მáƒáƒœáƒáƒªáƒ”მები გვერდისთვის '''$1''':",
'protect-locked-dblock' => "დáƒáƒªáƒ•áƒ˜áƒ¡ დáƒáƒœáƒ” ვერ შეიცვლებáƒ, რáƒáƒ“გáƒáƒœáƒáƒª მáƒáƒœáƒáƒªáƒ”მთრბáƒáƒ–რდáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜áƒ. მáƒáƒ¥áƒ›áƒ”დი დáƒáƒªáƒ•áƒ˜áƒ¡ სáƒáƒ¨áƒ£áƒáƒšáƒ”ბრგვერდისთვის '''$1''':",
@@ -2182,9 +2242,10 @@ $1',
'undelete-show-file-submit' => 'ჰáƒ',
# Namespace form on various pages
-'namespace' => 'სáƒáƒ®áƒ”ლთრსივრცე:',
-'invert' => 'ყველáƒ, მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜áƒ¡ გáƒáƒ áƒ“áƒ',
-'blanknamespace' => '(მთáƒáƒ•áƒáƒ áƒ˜)',
+'namespace' => 'სáƒáƒ®áƒ”ლთრსივრცე:',
+'invert' => 'ყველáƒ, მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜áƒ¡ გáƒáƒ áƒ“áƒ',
+'namespace_association' => 'თáƒáƒœáƒ›áƒ®áƒšáƒ”ბი სáƒáƒ®áƒ”ლთრსივრცე',
+'blanknamespace' => '(მთáƒáƒ•áƒáƒ áƒ˜)',
# Contributions
'contributions' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის წვლილი',
@@ -2233,6 +2294,9 @@ $1',
'whatlinkshere-filters' => 'ფილტრები',
# Block/unblock
+'autoblockid' => 'áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ ბლáƒáƒ™áƒ˜áƒ áƒ”ბრ#$1',
+'block' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის დáƒáƒ‘ლáƒáƒ™áƒ•áƒ',
+'unblock' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელზე ბლáƒáƒ™áƒ˜áƒ¡ მáƒáƒ®áƒ¡áƒœáƒ',
'blockip' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის áƒáƒœ IP მისáƒáƒ›áƒáƒ áƒ—ის ბლáƒáƒ™áƒ˜áƒ áƒ”ბáƒ',
'blockip-title' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის დáƒáƒ‘ლáƒáƒ™áƒ•áƒ',
'blockip-legend' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის დáƒáƒ‘ლáƒáƒ™áƒ•áƒ',
@@ -2242,7 +2306,6 @@ $1',
დრ[[{{MediaWiki:Policy-url}}|პáƒáƒšáƒ˜áƒ¢áƒ˜áƒ™áƒáƒ¡áƒ—áƒáƒœ]] თáƒáƒœáƒ®áƒ›áƒáƒ‘áƒáƒ¨áƒ˜.
ჩáƒáƒ¬áƒ”რეთ სპეციფიური მიზეზი ქვემáƒáƒ— (მáƒáƒ’. მიუთითეთ გვერდები,
რáƒáƒ›áƒšáƒ”ბზეც ვáƒáƒœáƒ“áƒáƒšáƒ˜áƒ–მი გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლდáƒ).',
-'ipaddress' => 'IP მისáƒáƒ›áƒáƒ áƒ—ი',
'ipadressorusername' => 'IP მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒœ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი',
'ipbexpiry' => 'ვáƒáƒ“áƒ',
'ipbreason' => 'მიზეზი:',
@@ -2255,7 +2318,7 @@ $1',
** დáƒáƒ¨áƒ˜áƒœáƒ”ბáƒ, მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელთრდáƒáƒ áƒ‘ევáƒ
** რáƒáƒ›áƒ“ენიმე áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ ბáƒáƒ áƒáƒ¢áƒáƒ“ გáƒáƒ›áƒáƒ§áƒ”ნებáƒ
** მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის მიუღებელი სáƒáƒ®áƒ”ლი',
-'ipbanononly' => 'მხáƒáƒšáƒáƒ“ áƒáƒœáƒáƒœáƒ˜áƒ›áƒ£áƒ áƒ˜ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლების დáƒáƒ‘ლáƒáƒ™áƒ•áƒ',
+'ipb-hardblock' => 'სისტემáƒáƒ¨áƒ˜ შესული მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლისთვის áƒáƒ› IP მისáƒáƒ›áƒáƒ áƒ—ით სáƒáƒ áƒ’ებლáƒáƒ‘ის áƒáƒ™áƒ áƒ«áƒáƒšáƒ•áƒ',
'ipbcreateaccount' => 'áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ შექმნის áƒáƒ™áƒ áƒ«áƒáƒšáƒ•áƒ',
'ipbemailban' => 'áƒáƒ£áƒ™áƒ áƒ«áƒáƒšáƒ”თ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს ელ-ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ გáƒáƒ’ზáƒáƒ•áƒœáƒ',
'ipbenableautoblock' => 'áƒáƒ‘áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ დáƒáƒ‘ლáƒáƒ™áƒ”თ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის მიერ გáƒáƒ›áƒáƒ§áƒ”ნებული IP მისáƒáƒ›áƒáƒ áƒ—ები.',
@@ -2266,12 +2329,15 @@ $1',
'ipbotherreason' => 'სხვáƒ/დáƒáƒ›áƒáƒ¢áƒ”ბითი მიზეზი:',
'ipbhidename' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლის დáƒáƒ›áƒáƒšáƒ•áƒ შესწáƒáƒ áƒ”ბებსრდრსიებში.შ',
'ipbwatchuser' => 'ჩáƒáƒáƒ›áƒáƒ¢áƒ”თ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის პირáƒáƒ“ი გვერდი დრმისი გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ˜áƒ¡ გვერდი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიáƒáƒ¨áƒ˜.',
-'ipballowusertalk' => 'ნებრდáƒáƒ áƒ—ეთ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს შეáƒáƒ¡áƒ¬áƒáƒ áƒáƒ¡ სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ გვერდი ბლáƒáƒ™áƒ˜áƒ áƒ”ბისáƒáƒ¡',
+'ipb-disableusertalk' => 'áƒáƒ› მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლისáƒáƒ—ვის სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ˜áƒ¡ გვერდის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის áƒáƒ™áƒ áƒ«áƒáƒšáƒ•áƒ, სáƒáƒœáƒáƒ› იგი დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜áƒ',
'ipb-change-block' => 'გáƒáƒ“áƒáƒ‘ლáƒáƒ™áƒ”თ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒ˜ კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ˜áƒ—',
+'ipb-confirm' => 'ბლáƒáƒ™áƒ˜áƒ¡ დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბáƒ',
'badipaddress' => 'áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ IP მისáƒáƒ›áƒáƒ áƒ—ი',
'blockipsuccesssub' => 'ბლáƒáƒ™áƒ˜áƒ áƒ”ბრშესრულებულიáƒ',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ბლáƒáƒ™áƒ˜áƒ áƒ”ბულ იქნáƒ.<br />
იხილეთ [[Special:IPBlockList|ბლáƒáƒ™áƒ˜áƒ áƒ”ბული IP მისáƒáƒ›áƒáƒ áƒ—ების სიáƒ]].',
+'ipb-blockingself' => 'თქვენ áƒáƒžáƒ˜áƒ áƒ”ბთ დáƒáƒ‘ლáƒáƒ™áƒáƒ— სáƒáƒ™áƒ£áƒ—áƒáƒ áƒ˜ თáƒáƒ•áƒ˜! დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ”ბული ხáƒáƒ áƒ—, რáƒáƒ› გსურთ áƒáƒ›áƒ˜áƒ¡ გáƒáƒ™áƒ”თებáƒ?',
+'ipb-confirmhideuser' => 'თქვენ áƒáƒžáƒ˜áƒ áƒ”ბთ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის დáƒáƒ‘ლáƒáƒ™áƒ•áƒáƒ¡ დრჩáƒáƒ áƒ—ული გáƒáƒ¥áƒ•áƒ— áƒáƒžáƒªáƒ˜áƒ „დáƒáƒ›áƒáƒšáƒ” მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი“. áƒáƒ¡áƒ”თი ქმედებრáƒáƒ¦áƒ™áƒ•áƒ”თს მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლს ყველრსიიდáƒáƒœ დრჟურნáƒáƒšáƒ”ბის ჩáƒáƒœáƒáƒ¬áƒ”რებიდáƒáƒœ. დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ”ბული ხáƒáƒ áƒ—, რáƒáƒ› áƒáƒ›áƒ˜áƒ¡ გáƒáƒ™áƒ”თებრგსურთ?',
'ipb-edit-dropdown' => 'დáƒáƒ‘ლáƒáƒ™áƒ•áƒ˜áƒ¡ მიზეზების რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ',
'ipb-unblock-addr' => 'ბლáƒáƒ™áƒ˜áƒ¡ მáƒáƒ®áƒ¡áƒœáƒ $1',
'ipb-unblock' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლზე áƒáƒœ IP მისáƒáƒ›áƒáƒ áƒ—ზე ბლáƒáƒ™áƒ˜áƒ¡ მáƒáƒ®áƒ¡áƒœáƒ',
@@ -2281,17 +2347,23 @@ $1',
'unblockiptext' => 'გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ ქვემáƒáƒ— მáƒáƒªáƒ”მული ფáƒáƒ áƒ›áƒ£áƒšáƒáƒ áƒ˜, რáƒáƒ—რდáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ IP მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒœ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი áƒáƒ¦áƒáƒ“გინáƒáƒ—.',
'ipusubmit' => 'áƒáƒ› ბლáƒáƒ™áƒ˜áƒ¡ მáƒáƒ®áƒ¡áƒœáƒ',
'unblocked' => '[[User:$1|$1]] ბლáƒáƒ™áƒ˜ მáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜ áƒáƒ¥áƒ•áƒ¡',
+'unblocked-range' => '$1 დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ áƒáƒ¦áƒáƒ  áƒáƒ áƒ˜áƒ¡',
'unblocked-id' => 'ბლáƒáƒ™áƒ˜ $1 მáƒáƒ˜áƒ®áƒ¡áƒœáƒ',
+'blocklist' => 'დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლები',
'ipblocklist' => 'დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლები',
'ipblocklist-legend' => 'დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის პáƒáƒ•áƒœáƒ',
-'ipblocklist-username' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი áƒáƒœ IP მისáƒáƒ›áƒáƒ áƒ—ი:',
-'ipblocklist-sh-userblocks' => 'áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ ბლáƒáƒ™áƒ˜áƒ¡ $1',
-'ipblocklist-sh-tempblocks' => 'დრáƒáƒ”ბითი ბლáƒáƒ™áƒ˜áƒ áƒ”ბების $1',
-'ipblocklist-sh-addressblocks' => 'გáƒáƒ áƒ™áƒ•áƒ”ული IP-ს ბლáƒáƒ™áƒ˜áƒ áƒ”ბების $1',
+'blocklist-userblocks' => 'დáƒáƒ›áƒáƒšáƒ” áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ ბლáƒáƒ™áƒ˜áƒ áƒ”ბები',
+'blocklist-tempblocks' => 'დáƒáƒ›áƒáƒšáƒ” დრáƒáƒ”ბითი ბლáƒáƒ™áƒ˜áƒ áƒ”ბები',
+'blocklist-addressblocks' => 'დáƒáƒ›áƒáƒšáƒ” გáƒáƒ áƒ™áƒ•áƒ”ული IP მისáƒáƒ›áƒáƒ áƒ—ის ბლáƒáƒ™áƒ˜áƒ áƒ”ბები',
+'blocklist-timestamp' => 'ნიშნული',
+'blocklist-target' => 'სáƒáƒ›áƒ˜áƒ–ნე',
+'blocklist-expiry' => 'ბლáƒáƒ™áƒ˜áƒ áƒ”ბის ხáƒáƒœáƒ’რძლივáƒáƒ‘áƒ',
+'blocklist-by' => 'დáƒáƒ›áƒ‘ლáƒáƒ™áƒ•áƒ”ლი áƒáƒ“მინისტრáƒáƒ¢áƒáƒ áƒ˜',
+'blocklist-params' => 'ბლáƒáƒ™áƒ˜áƒ áƒ”ბის პáƒáƒ áƒáƒ›áƒ”ტრები',
+'blocklist-reason' => 'მიზეზი',
'ipblocklist-submit' => 'ძიებáƒ',
'ipblocklist-localblock' => 'ლáƒáƒ™áƒáƒšáƒ£áƒ áƒ˜ ბლáƒáƒ™áƒ˜áƒ áƒ”ბáƒ',
'ipblocklist-otherblocks' => 'სხვრ{{PLURAL:$1|დáƒáƒ‘ლáƒáƒ™áƒ•áƒ|დáƒáƒ‘ლáƒáƒ™áƒ•áƒ”ბი}}',
-'blocklistline' => '$1, $2 დáƒáƒ‘ლáƒáƒ™áƒ $3 ($4)',
'infiniteblock' => 'უსáƒáƒ¡áƒ áƒ£áƒšáƒ',
'expiringblock' => 'ვáƒáƒ“ის გáƒáƒ¡áƒ•áƒšáƒ˜áƒ¡ დრრ$1 $2',
'anononlyblock' => 'მხáƒáƒšáƒáƒ“ áƒáƒœáƒáƒœ.',
@@ -2313,7 +2385,7 @@ $1',
დáƒáƒ‘ლáƒáƒ™áƒ•áƒáƒ—რჟურნáƒáƒšáƒ˜ ქვემáƒáƒ— მáƒáƒ§áƒ•áƒáƒœáƒ˜áƒšáƒ˜áƒ:',
'blocklogentry' => '"[[$1]]" ბლáƒáƒ™áƒ˜áƒ áƒ”ბის ვáƒáƒ“ის გáƒáƒ¡áƒ•áƒšáƒ˜áƒ¡ თáƒáƒ áƒ˜áƒ¦áƒ˜ $2 $3.',
'reblock-logentry' => 'შეáƒáƒ¡áƒ¬áƒáƒ áƒ ბლáƒáƒ™áƒ˜áƒ áƒ”ბის კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ [[$1]]-სთვის, ვáƒáƒ“რგáƒáƒ¡áƒ“ის $2 $3',
-'blocklogtext' => 'ეს áƒáƒ áƒ˜áƒ¡ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლების დáƒáƒ‘ლáƒáƒ™áƒ•áƒ˜áƒ¡ დრგáƒáƒœáƒ‘ლáƒáƒ™áƒ•áƒ˜áƒ¡ ჟურნáƒáƒšáƒ˜. áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ IP მისáƒáƒ›áƒáƒ áƒ—ები áƒáƒ áƒáƒ ჩáƒáƒ›áƒáƒ—ვლილი. იხილეთ [[Special:IPBlockList|IP ბლáƒáƒ™áƒ˜áƒ áƒ”ბის სიáƒ]] მიმდინáƒáƒ áƒ” დáƒáƒ‘ლáƒáƒ™áƒ•áƒ”ბისთვის.',
+'blocklogtext' => 'ეს áƒáƒ áƒ˜áƒ¡ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლების დáƒáƒ‘ლáƒáƒ™áƒ•áƒ˜áƒ¡ დრგáƒáƒœáƒ‘ლáƒáƒ™áƒ•áƒ˜áƒ¡ ჟურნáƒáƒšáƒ˜. áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜ IP მისáƒáƒ›áƒáƒ áƒ—ები áƒáƒ áƒáƒ ჩáƒáƒ›áƒáƒ—ვლილი. იხილეთ [[Special:BlockList|IP ბლáƒáƒ™áƒ˜áƒ áƒ”ბის სიáƒ]] მიმდინáƒáƒ áƒ” დáƒáƒ‘ლáƒáƒ™áƒ•áƒ”ბისთვის.',
'unblocklogentry' => 'ბლáƒáƒ™áƒ˜ მáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜áƒ $1',
'block-log-flags-anononly' => 'მხáƒáƒšáƒáƒ“ áƒáƒœáƒáƒœáƒ˜áƒ›áƒ£áƒ áƒ˜ მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლები',
'block-log-flags-nocreate' => 'áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ შექმნრგáƒáƒ›áƒáƒ áƒ—ულიáƒ',
@@ -2327,9 +2399,9 @@ $1',
'ipb_expiry_temp' => 'ბლáƒáƒ™áƒ˜áƒ áƒ”ბრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლის დáƒáƒ›áƒáƒšáƒ•áƒ˜áƒ— უვáƒáƒ“რუნდრიყáƒáƒ¡',
'ipb_hide_invalid' => 'შეუძლებელირმáƒáƒ®áƒ”მული áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ დáƒáƒ›áƒáƒšáƒ•áƒ, სáƒáƒ•áƒáƒ áƒáƒ£áƒ“áƒáƒ“ მის მიერ გáƒáƒœáƒ®áƒáƒ áƒªáƒ˜áƒ”ლებულირძáƒáƒšáƒ˜áƒáƒœ ბევრი შესწáƒáƒ áƒ”ბáƒ',
'ipb_already_blocked' => '"$1" უკვე ბლáƒáƒ™áƒ˜áƒ áƒ”ბულიáƒ',
-'ipb-needreblock' => '== უკვე დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜áƒ==
-მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი $1 უკვე დáƒáƒ˜áƒ‘ლáƒáƒ™áƒ. გსურთ დáƒáƒ‘ლáƒáƒ™áƒ•áƒ˜áƒ¡ პáƒáƒ áƒáƒ›áƒ”ტრების შესწáƒáƒ áƒ”ბáƒ?',
+'ipb-needreblock' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი $1 უკვე დáƒáƒ˜áƒ‘ლáƒáƒ™áƒ. გსურთ დáƒáƒ‘ლáƒáƒ™áƒ•áƒ˜áƒ¡ პáƒáƒ áƒáƒ›áƒ”ტრების შესწáƒáƒ áƒ”ბáƒ?',
'ipb-otherblocks-header' => 'სხვრ{{PLURAL:$1|დáƒáƒ‘ლáƒáƒ™áƒ•áƒ|დáƒáƒ‘ლáƒáƒ™áƒ•áƒ”ბი}}',
+'unblock-hideuser' => 'თქვენ áƒáƒ  შეგიძლიáƒáƒ— მáƒáƒ®áƒ¡áƒœáƒáƒ— ბლáƒáƒ™áƒ˜ áƒáƒ› მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს, რáƒáƒ“გáƒáƒœ მისი მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის სáƒáƒ®áƒ”ლი დáƒáƒ›áƒáƒšáƒ£áƒšáƒ˜áƒ.',
'ipb_cant_unblock' => 'შეცდáƒáƒ›áƒ. ბლáƒáƒ™áƒ˜áƒ áƒ”ბრ$1 ID-ით áƒáƒ  áƒáƒ áƒ˜áƒ¡ ნáƒáƒžáƒáƒ•áƒœáƒ˜. შესáƒáƒ«áƒšáƒáƒ იგი უკვე მáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜áƒ',
'ipb_blocked_as_range' => 'შეცდáƒáƒ›áƒ: IP-მისáƒáƒ›áƒáƒ áƒ—ი $1 áƒáƒ  იყრპირდáƒáƒžáƒ˜áƒ  დáƒáƒ‘ლáƒáƒ™áƒ˜áƒšáƒ˜, შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒáƒ“ ვერ მáƒáƒ®áƒ“ებრმისი გáƒáƒœáƒ‘ლáƒáƒ™áƒ•áƒ.თუმცრიგი ეკუთვნის დიáƒáƒžáƒáƒ–áƒáƒœáƒ¡ $2, რáƒáƒ›áƒšáƒ˜áƒ¡ გáƒáƒœáƒ‘ლáƒáƒ™áƒ•áƒ შესáƒáƒ«áƒšáƒ”ბელიáƒ.',
'ip_range_invalid' => 'áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ IP მისáƒáƒ›áƒáƒ áƒ—ი',
@@ -2475,7 +2547,7 @@ $1',
'allmessagesdefault' => 'სტáƒáƒœáƒ“áƒáƒ áƒ¢áƒ£áƒšáƒ˜ ტექსტი',
'allmessagescurrent' => 'მიმდინáƒáƒ áƒ” ტექსტი',
'allmessagestext' => 'ეს áƒáƒ áƒ˜áƒ¡ სისემურ შეტყáƒáƒ‘ინებáƒáƒ—რსირ«MediaWiki» სáƒáƒ®áƒ”ლთრსივრცეში.
-გთხáƒáƒ•áƒ— ეწვიáƒáƒ— [http://www.mediawiki.org/wiki/Localisation ლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ áƒáƒ¦áƒ›áƒ¬áƒ”რ] გვერდს [http://translatewiki.net translatewiki.net] პრáƒáƒ”ქტს, თუ გსურთ MediaWiki ლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¨áƒ˜ წვლილის შეტáƒáƒœáƒ.',
+გთხáƒáƒ•áƒ— ეწვიáƒáƒ— [//www.mediawiki.org/wiki/Localisation ლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒ˜áƒ¡ áƒáƒ¦áƒ›áƒ¬áƒ”რ] გვერდს [//translatewiki.net translatewiki.net] პრáƒáƒ”ქტს, თუ გსურთ MediaWiki ლáƒáƒ™áƒáƒšáƒ˜áƒ–áƒáƒªáƒ˜áƒáƒ¨áƒ˜ წვლილის შეტáƒáƒœáƒ.',
'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages-ის უზრუნველყáƒáƒ¤áƒ áƒáƒ  ხდებáƒ, ვინáƒáƒ˜áƒ“áƒáƒœ wgUseDatabaseMessages გáƒáƒ›áƒáƒ áƒ—ულიáƒ.',
'allmessages-filter-legend' => 'ფილტრი',
'allmessages-filter' => 'ფილტრი ცვლილებების სტáƒáƒ¢áƒ£áƒ¡áƒ˜áƒ—:',
@@ -2620,9 +2692,7 @@ $1',
'common.js' => '/* áƒáƒ¥ ნებისმიერი ჯáƒáƒ•áƒáƒ¡áƒ™áƒ áƒ˜áƒžáƒ¢áƒ˜ ყველრმáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლისთვის ჩáƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—ებრყველრგვერდზე. */',
# Metadata
-'nodublincore' => 'Dublin Core RDF მეტáƒáƒ›áƒáƒœáƒáƒªáƒ”მები áƒáƒ› სერვერისთვის გáƒáƒ—იშულიáƒ.',
-'nocreativecommons' => 'Creative Commons RDF მეტáƒáƒ›áƒáƒœáƒáƒªáƒ”მები áƒáƒ› სერვერისთვის გáƒáƒ›áƒáƒ áƒ—ულიáƒ.',
-'notacceptable' => 'ვიკი სერვერს áƒáƒ  შეუძლირწáƒáƒ áƒ›áƒáƒ’იდგინáƒáƒ— ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ იმ სáƒáƒ®áƒ˜áƒ—, რáƒáƒ›áƒšáƒ˜áƒ¡ კითხვრთქვენ ბრáƒáƒ£áƒ–ერს შეუძლიáƒ.',
+'notacceptable' => 'ვიკი სერვერს áƒáƒ  შეუძლირწáƒáƒ áƒ›áƒáƒ’იდგინáƒáƒ— ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ იმ სáƒáƒ®áƒ˜áƒ—, რáƒáƒ›áƒšáƒ˜áƒ¡ კითხვრთქვენ ბრáƒáƒ£áƒ–ერს შეუძლიáƒ.',
# Attribution
'anonymous' => '{{SITENAME}}-ის áƒáƒœáƒáƒœáƒ˜áƒ›áƒ£áƒ áƒ˜ {{PLURAL:$1|მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი|მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლები}}',
@@ -2646,12 +2716,17 @@ $1',
'spam_blanking' => 'ყველრგვერდი შეიცáƒáƒ•áƒ¡ ბმულს $1-გვერდზე. გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•áƒ”ბáƒ',
# Info page
-'infosubtitle' => 'გვერდის ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ',
-'numedits' => 'რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის რáƒáƒáƒ“ენáƒáƒ‘რ(სტáƒáƒ¢áƒ˜áƒ): $1',
-'numtalkedits' => 'რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის რáƒáƒáƒ“ენáƒáƒ‘რ(გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ˜áƒ¡ გვერდი): $1',
-'numwatchers' => 'დáƒáƒ›áƒ™áƒ•áƒ˜áƒ áƒ•áƒ”ბელთრრáƒáƒáƒ“ენáƒáƒ‘áƒ: $1',
-'numauthors' => 'გáƒáƒœáƒ¡áƒ®áƒ•áƒáƒ•áƒ”ბულ áƒáƒ•áƒ¢áƒáƒ áƒ—რრáƒáƒáƒ“ენáƒáƒ‘რ(სტáƒáƒ¢áƒ˜áƒ): $1',
-'numtalkauthors' => 'სხვáƒáƒ“áƒáƒ¡áƒ®áƒ•áƒ áƒáƒ•áƒ¢áƒáƒ áƒ—რრáƒáƒáƒ“ენáƒáƒ‘რ(გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ˜áƒ¡ გვერდი): $1',
+'pageinfo-title' => 'ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ „$1“-თვის',
+'pageinfo-header-edits' => 'რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბები',
+'pageinfo-header-watchlist' => 'კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიáƒ',
+'pageinfo-header-views' => 'ხილვáƒ',
+'pageinfo-subjectpage' => 'გვერდი',
+'pageinfo-talkpage' => 'გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ˜áƒ¡ გვერდი',
+'pageinfo-watchers' => 'დáƒáƒ›áƒ™áƒ•áƒ˜áƒ áƒ•áƒ”ბელთრრáƒáƒáƒ“ენáƒáƒ‘áƒ',
+'pageinfo-edits' => 'რედáƒáƒ¥áƒªáƒ˜áƒ”ბის რáƒáƒáƒ“ენáƒáƒ‘áƒ',
+'pageinfo-authors' => 'გáƒáƒœáƒ¡áƒ®áƒ•áƒáƒ•áƒ”ბულ áƒáƒ•áƒ¢áƒáƒ áƒ—რრáƒáƒáƒ“ენáƒáƒ‘áƒ',
+'pageinfo-views' => 'ხილვების რáƒáƒáƒ“ენáƒáƒ‘áƒ',
+'pageinfo-viewsperedit' => 'შესწáƒáƒ áƒ”ბáƒáƒ—რხილვáƒ',
# Skin names
'skinname-standard' => 'კლáƒáƒ¡áƒ˜áƒ™áƒ£áƒ áƒ˜',
@@ -2659,25 +2734,6 @@ $1',
'skinname-modern' => 'თáƒáƒœáƒáƒ›áƒ”დრáƒáƒ•áƒ”',
'skinname-vector' => 'ვექტáƒáƒ áƒ£áƒšáƒ˜',
-# Math options
-'mw_math_png' => 'მუდáƒáƒ› გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნე PNG',
-'mw_math_simple' => 'HTML თუ მáƒáƒ áƒ¢áƒ˜áƒ•áƒ˜áƒ, სხვáƒáƒ’ვáƒáƒ áƒáƒ“ PNG',
-'mw_math_html' => 'HTML თუ შესáƒáƒ«áƒšáƒ”ბელიáƒ, სხვáƒáƒ’ვáƒáƒ áƒáƒ“ PNG',
-'mw_math_source' => 'დáƒáƒ¢áƒáƒ•áƒ” რáƒáƒ’áƒáƒ áƒª TeX (ტექსტური ბრáƒáƒ£áƒ–ერებისთვის)',
-'mw_math_modern' => 'მიზáƒáƒœáƒ¨áƒ”წáƒáƒœáƒ˜áƒšáƒ˜áƒ უფრრთáƒáƒœáƒáƒ›áƒ”დრáƒáƒ•áƒ” ბრáƒáƒ£áƒ–ერებისთვის',
-'mw_math_mathml' => 'MathML თუ შესáƒáƒ«áƒšáƒ”ბელირ(ექსპერიმენტული)',
-
-# Math errors
-'math_failure' => 'შეუძლებელირგáƒáƒ›áƒáƒœáƒáƒ—ქვáƒáƒ›áƒ˜áƒ¡ გáƒáƒ áƒ©áƒ”ვáƒáƒ¨',
-'math_unknown_error' => 'უცნáƒáƒ‘ი შეცდáƒáƒ›áƒ',
-'math_unknown_function' => 'უცნáƒáƒ‘ი ფუნქციáƒ',
-'math_lexing_error' => 'ლექსიკური შეცდáƒáƒ›áƒ',
-'math_syntax_error' => 'სინტáƒáƒ¥áƒ¡áƒ˜ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ',
-'math_image_error' => 'PNG-ში გáƒáƒ áƒ“áƒáƒ¥áƒ›áƒœáƒ˜áƒ¡áƒáƒ¡ წáƒáƒ áƒ›áƒáƒ˜áƒ¨áƒ•áƒ შეცდáƒáƒ›áƒ; შეáƒáƒ›áƒáƒ¬áƒ›áƒ”თ latex, dvips, gs დრconvert-ის დáƒáƒ§áƒ”ნების სისწáƒáƒ áƒ”',
-'math_bad_tmpdir' => 'შეუძლებელირჩáƒáƒœáƒáƒ¬áƒ”რის შექმნრმáƒáƒ—ემáƒáƒ¢áƒ˜áƒ™áƒ£áƒ  დრáƒáƒ”ბით კáƒáƒ¢áƒáƒšáƒáƒ’ში',
-'math_bad_output' => 'შეუძლებელირშექმნრáƒáƒœ ჩáƒáƒ¬áƒ”რრმáƒáƒ—ემáƒáƒ¢áƒ˜áƒ™áƒ£áƒ  გáƒáƒ›áƒ¡áƒ•áƒšáƒ”ლ კáƒáƒ¢áƒáƒšáƒáƒ’ში',
-'math_notexvc' => 'შემსრულებელი ფáƒáƒ˜áƒšáƒ˜ texvc áƒáƒ  áƒáƒ áƒ˜áƒ¡ ნáƒáƒžáƒáƒ•áƒœáƒ˜; იხ.math/README ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡áƒ—ვის.',
-
# Patrolling
'markaspatrolleddiff' => 'მáƒáƒœáƒ˜áƒ¨áƒœáƒ” რáƒáƒ’áƒáƒ áƒª პáƒáƒ¢áƒ áƒáƒšáƒ˜áƒ áƒ”ბული',
'markaspatrolledtext' => 'მáƒáƒœáƒ˜áƒ¨áƒœáƒ” ეს სტáƒáƒ¢áƒ˜áƒ რáƒáƒ’áƒáƒ áƒª პáƒáƒ¢áƒ áƒ£áƒšáƒ˜áƒ áƒ”ბული',
@@ -2713,22 +2769,25 @@ $1',
'nextdiff' => 'შემდეგი ცვლილებრ→',
# Media information
-'mediawarning' => "'''ყურáƒáƒ“ღებáƒ''': ეს ფáƒáƒ˜áƒšáƒ˜ შესáƒáƒ«áƒšáƒáƒ შეიცáƒáƒ•áƒ“ეს მáƒáƒ•áƒœáƒ” კáƒáƒ“ს.
+'mediawarning' => "'''ყურáƒáƒ“ღებáƒ''': ეს ფáƒáƒ˜áƒšáƒ˜ შესáƒáƒ«áƒšáƒáƒ შეიცáƒáƒ•áƒ“ეს მáƒáƒ•áƒœáƒ” კáƒáƒ“ს.
მისმრჩáƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒáƒ› შესáƒáƒ«áƒšáƒáƒ თქვენი სისტემრდáƒáƒáƒ–იáƒáƒœáƒáƒ¡.",
-'imagemaxsize' => "სურáƒáƒ—ის მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒáƒšáƒ£áƒ áƒ˜ ზáƒáƒ›áƒ <br />''áƒáƒ¦áƒ¬áƒ”რილáƒáƒ‘ის გვერდზე:''",
-'thumbsize' => 'შემცირებული ზáƒáƒ›áƒ:',
-'widthheightpage' => '$1×$2, $3 გვერდი',
-'file-info' => 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒ: $1, MIME ტიპი: $2',
-'file-info-size' => '$1 × $2 პიქსელი, ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒ: $3, MIME ტიპი: $4',
-'file-nohires' => '<small>უფრრმáƒáƒ¦áƒáƒšáƒ˜ გáƒáƒ áƒ©áƒ”ვáƒáƒ“áƒáƒ‘რáƒáƒ  áƒáƒ áƒ˜áƒ¡ შესáƒáƒ«áƒšáƒ”ბელი.</small>',
-'svg-long-desc' => 'ფáƒáƒ˜áƒšáƒ˜ SVG, ნáƒáƒ›áƒ˜áƒœáƒáƒšáƒ£áƒ áƒáƒ“ $1 × $2 პიქსელი, ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒ: $3',
-'show-big-image' => 'სრული გáƒáƒ áƒ©áƒ”ვáƒáƒ“áƒáƒ‘áƒ',
-'show-big-image-thumb' => '<small>ზáƒáƒ›áƒ წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ გáƒáƒ“áƒáƒ®áƒ”დვისáƒáƒ¡: $1 × $2 პიქსელი</small>',
-'file-info-gif-looped' => 'დáƒáƒ áƒ’áƒáƒšáƒ˜áƒšáƒ˜',
-'file-info-gif-frames' => '$1 კáƒáƒ“რი',
-'file-info-png-looped' => 'დáƒáƒ áƒ’áƒáƒšáƒ˜áƒšáƒ˜',
-'file-info-png-repeat' => 'დáƒáƒ™áƒ áƒ£áƒšáƒ˜áƒ $1 {{PLURAL:$1|ჯერ}}',
-'file-info-png-frames' => '$1 კáƒáƒ“რი',
+'imagemaxsize' => "სურáƒáƒ—ის მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒáƒšáƒ£áƒ áƒ˜ ზáƒáƒ›áƒ <br />''áƒáƒ¦áƒ¬áƒ”რილáƒáƒ‘ის გვერდზე:''",
+'thumbsize' => 'შემცირებული ზáƒáƒ›áƒ:',
+'widthheightpage' => '$1×$2, $3 გვერდი',
+'file-info' => 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒ: $1, MIME ტიპი: $2',
+'file-info-size' => '$1 × $2 პიქსელი, ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒ: $3, MIME ტიპი: $4',
+'file-info-size-pages' => '$1 × $2 პიქსელი, ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒ: $3, MIME ტიპი: $4, $5 გვერდი',
+'file-nohires' => '<small>უფრრმáƒáƒ¦áƒáƒšáƒ˜ გáƒáƒ áƒ©áƒ”ვáƒáƒ“áƒáƒ‘რáƒáƒ  áƒáƒ áƒ˜áƒ¡ შესáƒáƒ«áƒšáƒ”ბელი.</small>',
+'svg-long-desc' => 'ფáƒáƒ˜áƒšáƒ˜ SVG, ნáƒáƒ›áƒ˜áƒœáƒáƒšáƒ£áƒ áƒáƒ“ $1 × $2 პიქსელი, ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒ: $3',
+'show-big-image' => 'სრული გáƒáƒ áƒ©áƒ”ვáƒáƒ“áƒáƒ‘áƒ',
+'show-big-image-preview' => '<small>ზáƒáƒ›áƒ წინáƒáƒ¡áƒ¬áƒáƒ áƒ˜ გáƒáƒ“áƒáƒ®áƒ”დვისáƒáƒ¡: $1.</small>',
+'show-big-image-other' => '<small>სხვრგáƒáƒ áƒ©áƒ”ვáƒáƒ“áƒáƒ‘áƒ: $1.</small>',
+'show-big-image-size' => '$1 × $2 პიქსელი',
+'file-info-gif-looped' => 'დáƒáƒ áƒ’áƒáƒšáƒ˜áƒšáƒ˜',
+'file-info-gif-frames' => '$1 კáƒáƒ“რი',
+'file-info-png-looped' => 'დáƒáƒ áƒ’áƒáƒšáƒ˜áƒšáƒ˜',
+'file-info-png-repeat' => 'დáƒáƒ™áƒ áƒ£áƒšáƒ˜áƒ $1 {{PLURAL:$1|ჯერ}}',
+'file-info-png-frames' => '$1 კáƒáƒ“რი',
# Special:NewFiles
'newimages' => 'áƒáƒ®áƒáƒšáƒ˜ ფáƒáƒ˜áƒšáƒ”ბის გáƒáƒšáƒ”რეáƒ',
@@ -2754,7 +2813,7 @@ $1',
'metadata-help' => 'ეს ფáƒáƒ˜áƒšáƒ˜ შეიცáƒáƒ•áƒ¡ დáƒáƒ›áƒáƒ¢áƒ”ბით ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒáƒ¡, სáƒáƒ•áƒáƒ áƒáƒ£áƒ“áƒáƒ“ ციფრული კáƒáƒ›áƒ”რიდáƒáƒœ áƒáƒœ სკáƒáƒœáƒ”რიდáƒáƒœ, რáƒáƒ›áƒ”ლიც მის შესáƒáƒ¥áƒ›áƒœáƒ”ლáƒáƒ“ გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეს. თუ ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ áƒ˜áƒ’ინáƒáƒšáƒ˜ შეცვლილიáƒ, ზáƒáƒ’იერთი დეტáƒáƒšáƒ˜ შესáƒáƒ«áƒšáƒáƒ სრულáƒáƒ“ áƒáƒ  áƒáƒ¡áƒáƒ®áƒáƒ•áƒ“ეს ფáƒáƒ˜áƒšáƒ¨áƒ˜ შეტáƒáƒœáƒ˜áƒš ცვლილებებს.',
'metadata-expand' => 'დáƒáƒ›áƒáƒ¢áƒ”ბითი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ ჩვენებáƒ',
'metadata-collapse' => 'დáƒáƒ›áƒáƒ¢áƒ”ბითი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡ დáƒáƒ›áƒáƒšáƒ•áƒ',
-'metadata-fields' => 'EXIF მეტáƒáƒ›áƒáƒœáƒáƒªáƒ”მების ჩáƒáƒ›áƒáƒœáƒáƒ—ვáƒáƒšáƒ˜ áƒáƒ› შეტყáƒáƒ‘ინებáƒáƒ¨áƒ˜ დáƒáƒ›áƒáƒ¢áƒ”ბული იქნებრსურáƒáƒ—ის გვერდზე, რáƒáƒªáƒ მეტáƒáƒ›áƒáƒœáƒáƒªáƒ”მების ცხრილი გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜áƒ.
+'metadata-fields' => 'მეტáƒáƒ›áƒáƒœáƒáƒªáƒ”მების ჩáƒáƒ›áƒáƒœáƒáƒ—ვáƒáƒšáƒ˜ áƒáƒ› შეტყáƒáƒ‘ინებáƒáƒ¨áƒ˜ დáƒáƒ›áƒáƒ¢áƒ”ბული იქნებრსურáƒáƒ—ის გვერდზე, რáƒáƒªáƒ მეტáƒáƒ›áƒáƒœáƒáƒªáƒ”მების ცხრილი გáƒáƒ®áƒ¡áƒœáƒ˜áƒšáƒ˜áƒ.
სხვები უპირáƒáƒ‘áƒáƒ“ დáƒáƒ›áƒáƒšáƒ£áƒšáƒ˜ იქნებáƒ.
* make
* model
@@ -2762,7 +2821,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'სიგáƒáƒœáƒ”',
@@ -2777,13 +2842,11 @@ $1',
'exif-ycbcrpositioning' => 'კáƒáƒ›áƒžáƒáƒœáƒ”ნტ Y-სრდრC-ს გáƒáƒœáƒšáƒáƒ’ების წესი',
'exif-xresolution' => 'ჰáƒáƒ áƒ˜áƒ–áƒáƒœáƒ¢áƒáƒšáƒ£áƒ áƒ˜ გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბáƒ',
'exif-yresolution' => 'ვერტიკáƒáƒšáƒ£áƒ áƒ˜ გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბáƒ',
-'exif-resolutionunit' => 'გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბის გáƒáƒ–áƒáƒ›áƒ•áƒ˜áƒ¡ ერთეული',
'exif-stripoffsets' => 'მáƒáƒœáƒáƒªáƒ”მთრბლáƒáƒ™áƒ˜áƒ¡ მდებáƒáƒ áƒ”áƒáƒ‘áƒ',
'exif-rowsperstrip' => '1 ბლáƒáƒ™áƒ¨áƒ˜ ხáƒáƒ–თრრáƒáƒáƒ“ენáƒáƒ‘áƒ',
'exif-stripbytecounts' => 'შეკუმშული ბლáƒáƒ™áƒ˜áƒ¡ ზáƒáƒ›áƒ',
'exif-jpeginterchangeformat' => 'ბლáƒáƒ™ preview-ს მდებáƒáƒ áƒ”áƒáƒ‘áƒ',
'exif-jpeginterchangeformatlength' => 'JPEG მáƒáƒœáƒáƒªáƒ”მთრზáƒáƒ›áƒ',
-'exif-transferfunction' => 'ტრáƒáƒœáƒ¡áƒ¤áƒ”რის ფუნქციáƒ',
'exif-whitepoint' => 'თეთრი წერტილის ფერáƒáƒ“áƒáƒ‘áƒ',
'exif-primarychromaticities' => 'ძირითáƒáƒ“ი ფერების ფერáƒáƒ“áƒáƒ‘áƒ',
'exif-ycbcrcoefficients' => 'ფერáƒáƒ“ი მáƒáƒ“ელის გáƒáƒ áƒ“áƒáƒ¥áƒ›áƒœáƒ˜áƒ¡ კáƒáƒ”ფიციენტი',
@@ -2802,7 +2865,6 @@ $1',
'exif-compressedbitsperpixel' => 'სურáƒáƒ—ის შეკუმშვის რეჟიმი',
'exif-pixelydimension' => 'სურáƒáƒ—ის სიგáƒáƒœáƒ”',
'exif-pixelxdimension' => 'სურáƒáƒ—ის სიმáƒáƒ¦áƒšáƒ”',
-'exif-makernote' => 'მწáƒáƒ áƒ›áƒáƒ”ბლის შენიშვნები',
'exif-usercomment' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜',
'exif-relatedsoundfile' => 'შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒ˜ áƒáƒ£áƒ“ირფáƒáƒ˜áƒšáƒ˜',
'exif-datetimeoriginal' => 'გენერირების თáƒáƒ áƒ˜áƒ¦áƒ˜ დრდრáƒ',
@@ -2816,7 +2878,6 @@ $1',
'exif-exposureprogram' => 'ექსპáƒáƒ–იციის პრáƒáƒ’რáƒáƒ›áƒ',
'exif-spectralsensitivity' => 'სპექტრული გრძNáƒáƒ‘áƒáƒ“áƒáƒ‘áƒ',
'exif-isospeedratings' => 'ISO ფერისგრძნáƒáƒ‘áƒáƒ“áƒáƒ‘áƒ',
-'exif-oecf' => 'áƒáƒžáƒ¢áƒ˜áƒ™áƒ£áƒ áƒ˜ კáƒáƒœáƒ•áƒ”რციის ფáƒáƒ¥áƒ¢áƒáƒ áƒ˜',
'exif-shutterspeedvalue' => 'APEX-ის დáƒáƒ®áƒ£áƒ áƒ•áƒ˜áƒ¡ სიჩქáƒáƒ áƒ”',
'exif-aperturevalue' => 'APEX-დიáƒáƒ¤áƒ áƒáƒ’მáƒ',
'exif-brightnessvalue' => 'APEX-სინáƒáƒ—ლე',
@@ -2830,7 +2891,6 @@ $1',
'exif-focallength-format' => '$1 მმ',
'exif-subjectarea' => 'გáƒáƒ“áƒáƒ¦áƒ”ბის áƒáƒ‘იექტის მდებáƒáƒ áƒ”áƒáƒ‘რდრფáƒáƒ áƒ—áƒáƒ‘ი',
'exif-flashenergy' => 'ფლეშის ენერგიáƒ',
-'exif-spatialfrequencyresponse' => 'ფáƒáƒ áƒ—áƒáƒ‘ი დრსიხშირეთრქáƒáƒ áƒáƒ¥áƒ¢áƒ”რისტიკáƒ',
'exif-focalplanexresolution' => 'გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბრX ფáƒáƒ¢áƒáƒ™áƒáƒšáƒ£áƒ áƒ˜ სიბრტყით',
'exif-focalplaneyresolution' => 'გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბრY ფáƒáƒ¢áƒáƒ™áƒáƒšáƒ£áƒ áƒ˜ სიბრტყით',
'exif-focalplaneresolutionunit' => 'გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბის სáƒáƒ–áƒáƒ›áƒ•áƒ˜áƒ¡ ერთეული ფáƒáƒ¢áƒáƒ™áƒáƒšáƒ£áƒ  სიბრტყეში',
@@ -2839,7 +2899,6 @@ $1',
'exif-sensingmethod' => 'სენსáƒáƒ áƒ˜áƒ¡ ტიპი',
'exif-filesource' => 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ წყáƒáƒ áƒ',
'exif-scenetype' => 'სცენის ტიპი',
-'exif-cfapattern' => 'CFA შáƒáƒ‘ლáƒáƒœáƒ˜',
'exif-customrendered' => 'სურáƒáƒ—ის ინდივიდუáƒáƒšáƒ£áƒ áƒ˜ დáƒáƒ›áƒ£áƒ¨áƒáƒ•áƒ”ბáƒ',
'exif-exposuremode' => 'ექსპáƒáƒ–იციის áƒáƒ áƒ©áƒ”ვის რეჟიმი',
'exif-whitebalance' => 'თეთრის ბáƒáƒšáƒáƒœáƒ¡áƒ˜',
@@ -2884,11 +2943,41 @@ $1',
'exif-gpsareainformation' => 'GPS მხáƒáƒ áƒ˜áƒ¡ სáƒáƒ®áƒ”ლწáƒáƒ“ებáƒ',
'exif-gpsdatestamp' => 'GPS-ის მáƒáƒœáƒáƒªáƒ”მი',
'exif-gpsdifferential' => 'დიფერენციáƒáƒšáƒ£áƒ áƒ˜ შესწáƒáƒ áƒ”ბáƒ',
+'exif-jpegfilecomment' => 'JPEG-ფáƒáƒ˜áƒšáƒ˜áƒ¡ კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜',
+'exif-keywords' => 'სáƒáƒ«áƒ˜áƒ”ბრსიტყვები',
+'exif-worldregiondest' => 'მსáƒáƒ¤áƒšáƒ˜áƒáƒ¡ ნáƒáƒ©áƒ•áƒ”ნები რეგიáƒáƒœáƒ˜',
+'exif-countrydest' => 'ნáƒáƒ©áƒ•áƒ”ნები სáƒáƒ®áƒ”ლმწიფáƒ',
+'exif-countrycodedest' => 'ნáƒáƒ©áƒ•áƒ”ნები სáƒáƒ®áƒ”ლმწიფáƒáƒ¡ კáƒáƒ“ი',
+'exif-citydest' => 'ნáƒáƒ©áƒ•áƒ”ნები ქáƒáƒšáƒáƒ¥áƒ˜',
'exif-objectname' => 'მáƒáƒ™áƒšáƒ” სáƒáƒ—áƒáƒ£áƒ áƒ˜',
+'exif-specialinstructions' => 'სპეციáƒáƒšáƒ£áƒ áƒ˜ ინსტრუქციები',
+'exif-headline' => 'სáƒáƒ—áƒáƒ£áƒ áƒ˜',
+'exif-source' => 'წყáƒáƒ áƒ',
+'exif-contact' => 'სáƒáƒ™áƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ',
+'exif-writer' => 'áƒáƒ•áƒ¢áƒáƒ áƒ˜',
+'exif-languagecode' => 'ენáƒ',
+'exif-iimversion' => 'IIM-ვერსიáƒ',
+'exif-iimcategory' => 'კáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ',
+'exif-iimsupplementalcategory' => 'დáƒáƒ›áƒáƒ¢áƒ”ბითი კáƒáƒ¢áƒ”გáƒáƒ áƒ˜áƒ”ბი',
+'exif-datetimeexpires' => 'áƒáƒ¦áƒáƒ  გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნáƒ',
+'exif-datetimereleased' => 'გáƒáƒ›áƒáƒ¥áƒ•áƒ”ყნდáƒ',
+'exif-identifier' => 'იდენტიფიკáƒáƒ¢áƒáƒ áƒ˜',
+'exif-cameraownername' => 'კáƒáƒ›áƒ”რის მფლáƒáƒ‘ელი',
+'exif-nickname' => 'სურáƒáƒ—ის áƒáƒ áƒáƒ¤áƒáƒ áƒ›áƒáƒšáƒ£áƒ áƒ˜ სáƒáƒ®áƒ”ლი',
+'exif-rating' => 'რეიტინგი (5-დáƒáƒœ)',
+'exif-copyrighted' => 'სáƒáƒáƒ•áƒ¢áƒáƒ áƒ უფლებების სტáƒáƒ¢áƒ£áƒ¡áƒ˜',
+'exif-copyrightowner' => 'სáƒáƒáƒ•áƒ¢áƒáƒ áƒ უფლებების მფლáƒáƒ‘ელი',
+'exif-usageterms' => 'გáƒáƒ›áƒáƒ§áƒ”ნების პირáƒáƒ‘ები',
+'exif-morepermissionsurl' => 'áƒáƒšáƒ¢áƒ”რნáƒáƒ¢áƒ˜áƒ£áƒšáƒ˜ სáƒáƒšáƒ˜áƒªáƒ”ნზირინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ',
+'exif-pngfilecomment' => 'PNG ფáƒáƒ˜áƒšáƒ˜áƒ¡ კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜',
+'exif-giffilecomment' => 'GIF ფáƒáƒ˜áƒšáƒ˜áƒ¡ კáƒáƒ›áƒ”ნტáƒáƒ áƒ˜',
# EXIF attributes
'exif-compression-1' => 'შეუკუმშáƒáƒ•áƒ˜',
+'exif-copyrighted-true' => 'სáƒáƒáƒ•áƒ¢áƒáƒ áƒ უფლებებით დáƒáƒªáƒ£áƒšáƒ˜',
+'exif-copyrighted-false' => 'სáƒáƒ–áƒáƒ’áƒáƒ“áƒáƒ”ბრივი დáƒáƒ›áƒ”ნი',
+
'exif-unknowndate' => 'უცნáƒáƒ‘ი თáƒáƒ áƒ˜áƒ¦áƒ˜',
'exif-orientation-1' => 'ნáƒáƒ áƒ›áƒáƒšáƒ£áƒ áƒ˜',
@@ -3017,6 +3106,10 @@ $1',
'exif-gpslongitude-e' => 'áƒáƒ¦áƒ›áƒáƒ¡áƒáƒ•áƒšáƒ”თი გáƒáƒœáƒ”დი',
'exif-gpslongitude-w' => 'დáƒáƒ¡áƒáƒ•áƒšáƒ”თი გáƒáƒœáƒ”დი',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 მეტრი ზღვის დáƒáƒœáƒ˜áƒ“áƒáƒœ',
+'exif-gpsaltitude-below-sealevel' => '$1 მეტრი ზღვის დáƒáƒœáƒ˜áƒ¡ ქვემáƒáƒ—',
+
'exif-gpsstatus-a' => 'ცვლილებრდáƒáƒ£áƒ¡áƒ áƒ£áƒšáƒ”ბელიáƒ',
'exif-gpsstatus-v' => 'მáƒáƒœáƒáƒªáƒ”მთრგáƒáƒ“áƒáƒªáƒ”მისთვის მზáƒáƒ“áƒáƒ',
@@ -3028,21 +3121,64 @@ $1',
'exif-gpsspeed-m' => 'მილი სáƒáƒáƒ—ში',
'exif-gpsspeed-n' => 'კვáƒáƒœáƒ«áƒ”ბი',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'კილáƒáƒ›áƒ”ტრი',
+'exif-gpsdestdistance-m' => 'მილი',
+'exif-gpsdestdistance-n' => 'სáƒáƒ–ღვáƒáƒ მილი',
+
+'exif-gpsdop-excellent' => 'შესáƒáƒœáƒ˜áƒ¨áƒœáƒáƒ•áƒ˜ ($1)',
+'exif-gpsdop-good' => 'კáƒáƒ áƒ’ი ($1)',
+'exif-gpsdop-moderate' => 'ზáƒáƒ›áƒ˜áƒ”რი ($1)',
+'exif-gpsdop-fair' => 'სáƒáƒ¨áƒ£áƒáƒšáƒáƒ–ე დáƒáƒ‘áƒáƒšáƒ˜ ($1)',
+'exif-gpsdop-poor' => 'ცუდი ($1)',
+
+'exif-objectcycle-a' => 'მხáƒáƒšáƒáƒ“ დილით',
+'exif-objectcycle-p' => 'მხáƒáƒšáƒáƒ“ სáƒáƒ¦áƒáƒ›áƒáƒ¡',
+'exif-objectcycle-b' => 'áƒáƒ áƒ˜áƒ•áƒ” დილáƒáƒ¡ დრსáƒáƒ¦áƒáƒ›áƒáƒ¡',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'ჭეშმáƒáƒ áƒ˜áƒ¢áƒ˜',
'exif-gpsdirection-m' => 'მáƒáƒ’ნიტური',
+'exif-dc-contributor' => 'წვლილის შემáƒáƒ›áƒ¢áƒáƒœáƒ”ბი',
+'exif-dc-date' => 'თáƒáƒ áƒ˜áƒ¦(ებ)ი',
+'exif-dc-publisher' => 'გáƒáƒ›áƒáƒ›áƒ¥áƒ•áƒ”ყნებელი',
+'exif-dc-rights' => 'უფლებები',
+'exif-dc-type' => 'მედიის ტიპი',
+
+'exif-rating-rejected' => 'უáƒáƒ áƒ§áƒáƒ¤áƒ˜áƒšáƒ˜áƒ',
+
+'exif-isospeedratings-overflow' => '65535-ზე მეტი',
+
+'exif-iimcategory-ace' => 'ხელáƒáƒ•áƒœáƒ”ბáƒ, კულტურრდრგáƒáƒ áƒ—áƒáƒ‘áƒ',
+'exif-iimcategory-clj' => 'დáƒáƒœáƒáƒ¨áƒáƒ£áƒšáƒ˜ დრკáƒáƒœáƒáƒœáƒ˜',
+'exif-iimcategory-dis' => 'კáƒáƒ¢áƒáƒ¡áƒ¢áƒ áƒáƒ¤áƒ”ბი დრáƒáƒ•áƒáƒ áƒ˜áƒ”ბი',
+'exif-iimcategory-fin' => 'ეკáƒáƒœáƒáƒ›áƒ˜áƒ™áƒ დრბიზნესი',
+'exif-iimcategory-edu' => 'გáƒáƒœáƒáƒ—ლებáƒ',
+'exif-iimcategory-evn' => 'გáƒáƒ áƒ”მáƒ',
+'exif-iimcategory-hth' => 'ჯáƒáƒœáƒ›áƒ áƒ—ელáƒáƒ‘áƒ',
+'exif-iimcategory-lab' => 'შრáƒáƒ›áƒ',
+'exif-iimcategory-lif' => 'ცხáƒáƒ•áƒ áƒ”ბის წესი დრდáƒáƒ¡áƒ•áƒ”ნებáƒ',
+'exif-iimcategory-pol' => 'პáƒáƒšáƒ˜áƒ¢áƒ˜áƒ™áƒ',
+'exif-iimcategory-rel' => 'რელიგირდრრწმენáƒ',
+'exif-iimcategory-sci' => 'მეცნიერებრდრტექნáƒáƒšáƒáƒ’იáƒ',
+'exif-iimcategory-spo' => 'სპáƒáƒ áƒ¢áƒ˜',
+'exif-iimcategory-war' => 'áƒáƒ›áƒ˜, კáƒáƒœáƒ¤áƒšáƒ˜áƒ¥áƒ¢áƒ˜ დრáƒáƒ áƒ”ულáƒáƒ‘áƒ',
+'exif-iimcategory-wea' => 'áƒáƒ›áƒ˜áƒœáƒ“ი',
+
+'exif-urgency-normal' => 'ნáƒáƒ áƒ›áƒáƒšáƒ£áƒ áƒ˜ ($1)',
+'exif-urgency-low' => 'დáƒáƒ‘áƒáƒšáƒ˜',
+'exif-urgency-high' => 'მáƒáƒ¦áƒáƒšáƒ˜ ($1)',
+
# External editor support
'edit-externally' => 'áƒáƒ› ფáƒáƒ˜áƒšáƒ˜áƒ¡ რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბისáƒáƒ¡ გáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ გáƒáƒ áƒ” პრáƒáƒ’რáƒáƒ›áƒ',
-'edit-externally-help' => '(დáƒáƒ¬áƒ•áƒ áƒ˜áƒšáƒ”ბითი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡áƒ—ვის იხილეთ [http://www.mediawiki.org/wiki/Manual:External_editors ჩáƒáƒ“გმის ინსტრუქციები])',
+'edit-externally-help' => '(დáƒáƒ¬áƒ•áƒ áƒ˜áƒšáƒ”ბითი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡áƒ—ვის იხილეთ [//www.mediawiki.org/wiki/Manual:External_editors ჩáƒáƒ“გმის ინსტრუქციები])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ყველáƒ',
-'imagelistall' => 'ყველáƒ',
-'watchlistall2' => 'ყველáƒ',
-'namespacesall' => 'ყველáƒ',
-'monthsall' => 'ყველáƒ',
-'limitall' => 'ყველáƒ',
+'watchlistall2' => 'ყველáƒ',
+'namespacesall' => 'ყველáƒ',
+'monthsall' => 'ყველáƒ',
+'limitall' => 'ყველáƒ',
# E-mail address confirmation
'confirmemail' => 'ელ. ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ის დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ”ბáƒ',
@@ -3127,17 +3263,24 @@ $1',
'trackbackdeleteok' => 'Trackback წáƒáƒ áƒ›áƒáƒ¢áƒ”ბულáƒáƒ“ წáƒáƒ˜áƒ¨áƒáƒšáƒ',
# Delete conflict
-'deletedwhileediting' => "'''ყურáƒáƒ“ღებáƒ''': ეს გვერდი წáƒáƒ˜áƒ¨áƒáƒšáƒ მáƒáƒ¡ შემდეგ, რáƒáƒª თქვენ მისი რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრდáƒáƒ˜áƒ¬áƒ§áƒ”თ!",
-'confirmrecreate' => "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელმრ[[User:$1|$1]] ([[User talk:$1|გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ]]) წáƒáƒ¨áƒáƒšáƒ ეს გვერდი მáƒáƒ¡ შემდეგ რáƒáƒª თქვენ დáƒáƒ˜áƒ¬áƒ§áƒ”თ რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრშემდეგი მიზეზით:
+'deletedwhileediting' => "'''ყურáƒáƒ“ღებáƒ''': ეს გვერდი წáƒáƒ˜áƒ¨áƒáƒšáƒ მáƒáƒ¡ შემდეგ, რáƒáƒª თქვენ მისი რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრდáƒáƒ˜áƒ¬áƒ§áƒ”თ!",
+'confirmrecreate' => "მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელმრ[[User:$1|$1]] ([[User talk:$1|გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ]]) წáƒáƒ¨áƒáƒšáƒ ეს გვერდი მáƒáƒ¡ შემდეგ რáƒáƒª თქვენ დáƒáƒ˜áƒ¬áƒ§áƒ”თ რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრშემდეგი მიზეზით:
: ''$2''
გთხáƒáƒ•áƒ— დáƒáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒáƒ—, რáƒáƒ› ნáƒáƒ›áƒ“ვილáƒáƒ“ გსურთ áƒáƒ› გვერდის áƒáƒ¦áƒ“გენáƒ.",
-'recreate' => 'áƒáƒ¦áƒáƒ“გინე',
+'confirmrecreate-noreason' => 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელმრ[[User:$1|$1]] ([[User talk:$1|გáƒáƒœáƒ®áƒ˜áƒšáƒ•áƒ]]) წáƒáƒ¨áƒáƒšáƒ ეს გვერდი მáƒáƒ¡ შემდეგ, რáƒáƒª თქვენ დáƒáƒ˜áƒ¬áƒ§áƒ”თ მისი რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ. გთხáƒáƒ•áƒ—, დáƒáƒ áƒ¬áƒ›áƒ£áƒœáƒ“ით, რáƒáƒ› თქვენ ნáƒáƒ›áƒ“ვილáƒáƒ“ გსურთ áƒáƒ› გვერდის ხელáƒáƒ®áƒšáƒ შექმნáƒ.',
+'recreate' => 'áƒáƒ¦áƒáƒ“გინე',
# action=purge
'confirm_purge_button' => 'კáƒáƒ áƒ’ი',
'confirm-purge-top' => 'გსურთ áƒáƒ› გვერდის ქეშის წáƒáƒ¨áƒšáƒ?',
'confirm-purge-bottom' => 'ქეშის გáƒáƒ¬áƒ›áƒ”ნდის შემდეგ იქნებრნáƒáƒ©áƒ•áƒ”ნები ბáƒáƒšáƒ ვერსიáƒ.',
+# action=watch/unwatch
+'confirm-watch-button' => 'კáƒáƒ áƒ’ი',
+'confirm-watch-top' => 'დáƒáƒ•áƒáƒ›áƒáƒ¢áƒ ეს გვერდი თქვენი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიáƒáƒ¡?',
+'confirm-unwatch-button' => 'კáƒáƒ áƒ’ი',
+'confirm-unwatch-top' => 'მáƒáƒ•áƒ®áƒ¡áƒœáƒ ეს გვერდი თქვენი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიიდáƒáƒœ?',
+
# Multipage image navigation
'imgmultipageprev' => '&larr; წინრგვერდი',
'imgmultipagenext' => 'შემდეგი გვერდი &rarr;',
@@ -3185,7 +3328,7 @@ $1',
'watchlistedit-normal-legend' => 'მáƒáƒ®áƒ¡áƒ”ნით სáƒáƒ—áƒáƒ£áƒ áƒ”ბი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიიდáƒáƒœ',
'watchlistedit-normal-explain' => "ქვემáƒáƒ— წáƒáƒ áƒ›áƒáƒ“გენილირთქვენი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიის გვერდები.
წáƒáƒ¨áƒšáƒ˜áƒ¡áƒ—ვის მáƒáƒœáƒ˜áƒ¨áƒœáƒ”თ გვერდები დáƒáƒ დáƒáƒáƒ­áƒ˜áƒ áƒ”თ '''«ჩáƒáƒœáƒáƒ¬áƒ”რების წáƒáƒ¨áƒšáƒáƒ¡Â»'''.
-თქვენ áƒáƒ¡áƒ”ვე შეგიძლიáƒáƒ— მისი [[Special:Watchlist/raw|ტექსტáƒáƒ“ შესწáƒáƒ áƒ”ბáƒ]].",
+თქვენ áƒáƒ¡áƒ”ვე შეგიძლიáƒáƒ— მისი [[Special:EditWatchlist/raw|ტექსტáƒáƒ“ შესწáƒáƒ áƒ”ბáƒ]].",
'watchlistedit-normal-submit' => 'სáƒáƒ—áƒáƒ£áƒ áƒ”ბის წáƒáƒ¨áƒšáƒ',
'watchlistedit-normal-done' => '$1 სáƒáƒ—áƒáƒ£áƒ áƒ˜ მáƒáƒ˜áƒ®áƒ¡áƒœáƒ თქვენი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიიდáƒáƒœ.',
'watchlistedit-raw-title' => 'კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიის რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრტექსტის ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜',
@@ -3193,7 +3336,7 @@ $1',
'watchlistedit-raw-explain' => 'ქვემáƒáƒ— წáƒáƒ áƒ›áƒáƒ“გენილირთქვენი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიის გვერდები.
თქვენ შეგიძლიáƒáƒ— áƒáƒ› სიის შეცვლრმისგáƒáƒœ სáƒáƒ—áƒáƒ£áƒ áƒ”ბის სტრიქáƒáƒœáƒ”ბის წáƒáƒ¨áƒšáƒ˜áƒ—.
შესწáƒáƒ áƒ”ბáƒáƒ—რდáƒáƒ¡áƒ áƒ£áƒšáƒ”ბის შემდეგ დáƒáƒáƒ­áƒ˜áƒ áƒ”თ «ცვლილებáƒáƒ—რშენáƒáƒ®áƒ•áƒáƒ¡Â».
-თქვენ áƒáƒ¡áƒ”ვე შეგიძლიáƒáƒ— გვერდების წáƒáƒ¨áƒšáƒ [[Special:Watchlist/edit| ჩვეულებრივი ხერხით]].',
+თქვენ áƒáƒ¡áƒ”ვე შეგიძლიáƒáƒ— გვერდების წáƒáƒ¨áƒšáƒ [[Special:EditWatchlist| ჩვეულებრივი ხერხით]].',
'watchlistedit-raw-titles' => 'სáƒáƒ—áƒáƒ£áƒ áƒ”ბი:',
'watchlistedit-raw-submit' => 'კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სიის გáƒáƒœáƒáƒ®áƒšáƒ”ბáƒ',
'watchlistedit-raw-done' => 'თქვენი კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¡ სირგáƒáƒœáƒáƒ®áƒšáƒ“áƒ.',
@@ -3210,33 +3353,33 @@ $1',
'duplicate-defaultsort' => "'''ყურáƒáƒ“ღებáƒ.'''სáƒáƒ áƒ¢áƒ˜áƒ áƒ”ბის გáƒáƒ¡áƒáƒ¦áƒ”ბს «$2»-ს გáƒáƒáƒ­áƒ áƒ˜áƒ¡ წინრგáƒáƒ¡áƒáƒ¦áƒ”ბს «$1»-ს.",
# Special:Version
-'version' => 'ვერსიáƒ',
-'version-extensions' => 'დáƒáƒ§áƒ”ნებული გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბები',
-'version-specialpages' => 'სპეციáƒáƒšáƒ£áƒ áƒ˜ გვერდები',
-'version-parserhooks' => 'სინტáƒáƒ¥áƒ¡áƒ£áƒ áƒ˜ áƒáƒœáƒáƒšáƒ˜áƒ–áƒáƒ¢áƒáƒ áƒ˜áƒ¡ ჰუკები',
-'version-variables' => 'Ñмфдуифвуиш',
-'version-skins' => 'იერსáƒáƒ®áƒ”',
-'version-other' => 'სხვáƒ',
-'version-mediahandlers' => 'მედირდáƒáƒ›áƒ£áƒ¨áƒáƒ•áƒ”ბáƒ',
-'version-hooks' => 'ჰუკებш',
-'version-extension-functions' => 'გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბáƒáƒ—რფუნქციები',
-'version-parser-extensiontags' => 'სინტáƒáƒ¥áƒ¡áƒ£áƒ áƒ˜ áƒáƒœáƒáƒšáƒ˜áƒ–áƒáƒ¢áƒáƒ áƒ˜áƒ¡ თეგი',
-'version-parser-function-hooks' => 'სინტáƒáƒ¥áƒ¡áƒ£áƒ áƒ˜ áƒáƒœáƒáƒšáƒ˜áƒ–áƒáƒ¢áƒáƒ áƒ˜áƒ¡ ჰუკი',
-'version-skin-extension-functions' => 'გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბáƒáƒ—რთემების ფუნქციები',
-'version-hook-name' => 'ჰუკის სáƒáƒ®áƒ”ლი',
-'version-hook-subscribedby' => 'ჩáƒáƒ¬áƒ”რილიáƒ',
-'version-version' => '(ვერსირ$1)',
-'version-license' => 'ლიცენზიáƒ',
-'version-poweredby-credits' => "ეს ვიკი მუშáƒáƒáƒ‘ს '''[http://www.mediawiki.org/ MediaWiki]'''-ს ძრáƒáƒ•áƒ–ე, copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'სხვები',
-'version-license-info' => 'MediaWiki áƒáƒ áƒ˜áƒ¡ თáƒáƒ•áƒ˜áƒ¡áƒ£áƒ¤áƒáƒšáƒ˜ პრáƒáƒ’რáƒáƒ›áƒ£áƒšáƒ˜ უზრუნველყáƒáƒ¤áƒ; შეგიძლიáƒáƒ— მისი გáƒáƒ•áƒ áƒªáƒ”ლებრáƒáƒœ/დრმáƒáƒ“იფიცირებრGNU General Public License ლიცენზიის პირáƒáƒ‘ების შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒáƒ“. რáƒáƒ’áƒáƒ áƒª გáƒáƒ›áƒáƒ¥áƒ•áƒ”ყნებულირთáƒáƒ•áƒ˜áƒ¡áƒ£áƒ¤áƒáƒšáƒ˜ პრáƒáƒ’რáƒáƒ›áƒ£áƒšáƒ˜ უზრუნველყáƒáƒ¤áƒ˜áƒ¡ ფáƒáƒœáƒ“ის მიერ; áƒáƒœ ლიცენზიის მეáƒáƒ áƒ” ვერსიáƒáƒ¨áƒ˜, áƒáƒœ (თქვენი áƒáƒ–რით) უფრრáƒáƒ®áƒáƒšáƒ¨áƒ˜.
+'version' => 'ვერსიáƒ',
+'version-extensions' => 'დáƒáƒ§áƒ”ნებული გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბები',
+'version-specialpages' => 'სპეციáƒáƒšáƒ£áƒ áƒ˜ გვერდები',
+'version-parserhooks' => 'სინტáƒáƒ¥áƒ¡áƒ£áƒ áƒ˜ áƒáƒœáƒáƒšáƒ˜áƒ–áƒáƒ¢áƒáƒ áƒ˜áƒ¡ ჰუკები',
+'version-variables' => 'Ñмфдуифвуиш',
+'version-antispam' => 'სპáƒáƒ›áƒ˜áƒ¡ პრევენციáƒ',
+'version-skins' => 'იერსáƒáƒ®áƒ”',
+'version-other' => 'სხვáƒ',
+'version-mediahandlers' => 'მედირდáƒáƒ›áƒ£áƒ¨áƒáƒ•áƒ”ბáƒ',
+'version-hooks' => 'ჰუკებш',
+'version-extension-functions' => 'გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბáƒáƒ—რფუნქციები',
+'version-parser-extensiontags' => 'სინტáƒáƒ¥áƒ¡áƒ£áƒ áƒ˜ áƒáƒœáƒáƒšáƒ˜áƒ–áƒáƒ¢áƒáƒ áƒ˜áƒ¡ თეგი',
+'version-parser-function-hooks' => 'სინტáƒáƒ¥áƒ¡áƒ£áƒ áƒ˜ áƒáƒœáƒáƒšáƒ˜áƒ–áƒáƒ¢áƒáƒ áƒ˜áƒ¡ ჰუკი',
+'version-hook-name' => 'ჰუკის სáƒáƒ®áƒ”ლი',
+'version-hook-subscribedby' => 'ჩáƒáƒ¬áƒ”რილიáƒ',
+'version-version' => '(ვერსირ$1)',
+'version-license' => 'ლიცენზიáƒ',
+'version-poweredby-credits' => "ეს ვიკი მუშáƒáƒáƒ‘ს '''[//www.mediawiki.org/ MediaWiki]'''-ს ძრáƒáƒ•áƒ–ე, copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'სხვები',
+'version-license-info' => 'MediaWiki áƒáƒ áƒ˜áƒ¡ თáƒáƒ•áƒ˜áƒ¡áƒ£áƒ¤áƒáƒšáƒ˜ პრáƒáƒ’რáƒáƒ›áƒ£áƒšáƒ˜ უზრუნველყáƒáƒ¤áƒ; შეგიძლიáƒáƒ— მისი გáƒáƒ•áƒ áƒªáƒ”ლებრáƒáƒœ/დრმáƒáƒ“იფიცირებრGNU General Public License ლიცენზიის პირáƒáƒ‘ების შესáƒáƒ‘áƒáƒ›áƒ˜áƒ¡áƒáƒ“. რáƒáƒ’áƒáƒ áƒª გáƒáƒ›áƒáƒ¥áƒ•áƒ”ყნებულირთáƒáƒ•áƒ˜áƒ¡áƒ£áƒ¤áƒáƒšáƒ˜ პრáƒáƒ’რáƒáƒ›áƒ£áƒšáƒ˜ უზრუნველყáƒáƒ¤áƒ˜áƒ¡ ფáƒáƒœáƒ“ის მიერ; áƒáƒœ ლიცენზიის მეáƒáƒ áƒ” ვერსიáƒáƒ¨áƒ˜, áƒáƒœ (თქვენი áƒáƒ–რით) უფრრáƒáƒ®áƒáƒšáƒ¨áƒ˜.
MediaWiki ვრცელდებრიმ იმედით, რáƒáƒ› ის სáƒáƒ¡áƒáƒ áƒ’ებლრიქნებáƒ, მáƒáƒ’რáƒáƒ› გáƒáƒ áƒáƒœáƒ¢áƒ˜áƒ˜áƒ¡ გáƒáƒ áƒ”შე; კáƒáƒ›áƒ”რციული ღირებულების ნáƒáƒ’ულისხმევი გáƒáƒ áƒáƒœáƒ¢áƒ˜áƒ˜áƒ¡ გáƒáƒ áƒ”შეც კი áƒáƒœ რáƒáƒ˜áƒ›áƒ” მიზნისთვის სáƒáƒ áƒ’ებლის მისáƒáƒ¦áƒ”ბáƒáƒ“. მეტი დეტáƒáƒšáƒ£áƒ áƒ˜ ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ˜áƒ¡áƒ—ვის, იხილეთ GNU General Public License.
-áƒáƒ› პრáƒáƒ’რáƒáƒ›áƒáƒ¡áƒ—áƒáƒœ ერთáƒáƒ“ თქვენ უნდრმიგეღáƒáƒ— [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License ლიცენზიის áƒáƒ¡áƒšáƒ˜]; თუ áƒáƒ  მიგიღიáƒáƒ—, მისწერეთ თáƒáƒ•áƒ˜áƒ¡áƒ£áƒ¤áƒáƒšáƒ˜ პრáƒáƒ’რáƒáƒ›áƒ£áƒšáƒ˜ უზრუნველყáƒáƒ¤áƒ˜áƒ¡ ფáƒáƒœáƒ“ს, Free Software Foundation, Inc., ფრáƒáƒœáƒ™áƒšáƒ˜áƒœáƒ˜áƒ¡ ქუჩრ51, მეხუთე სáƒáƒ áƒ—ული, ბáƒáƒ¡áƒ¢áƒáƒœáƒ˜, MA 02110-1301, áƒáƒ¨áƒ¨, áƒáƒœ [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html წáƒáƒ˜áƒ™áƒ˜áƒ—ხეთ იგი ინტერნეტში].',
-'version-software' => 'დáƒáƒ˜áƒœáƒ¡áƒ¢áƒáƒšáƒ˜áƒ áƒ”ბული პრáƒáƒ’რáƒáƒ›áƒ£áƒšáƒ˜ უზრუნველყáƒáƒ¤áƒ',
-'version-software-product' => 'პრáƒáƒ“უქტი',
-'version-software-version' => 'ვერსიáƒ',
+áƒáƒ› პრáƒáƒ’რáƒáƒ›áƒáƒ¡áƒ—áƒáƒœ ერთáƒáƒ“ თქვენ უნდრმიგეღáƒáƒ— [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License ლიცენზიის áƒáƒ¡áƒšáƒ˜]; თუ áƒáƒ  მიგიღიáƒáƒ—, მისწერეთ თáƒáƒ•áƒ˜áƒ¡áƒ£áƒ¤áƒáƒšáƒ˜ პრáƒáƒ’რáƒáƒ›áƒ£áƒšáƒ˜ უზრუნველყáƒáƒ¤áƒ˜áƒ¡ ფáƒáƒœáƒ“ს, Free Software Foundation, Inc., ფრáƒáƒœáƒ™áƒšáƒ˜áƒœáƒ˜áƒ¡ ქუჩრ51, მეხუთე სáƒáƒ áƒ—ული, ბáƒáƒ¡áƒ¢áƒáƒœáƒ˜, MA 02110-1301, áƒáƒ¨áƒ¨, áƒáƒœ [//www.gnu.org/licenses/old-licenses/gpl-2.0.html წáƒáƒ˜áƒ™áƒ˜áƒ—ხეთ იგი ინტერნეტში].',
+'version-software' => 'დáƒáƒ˜áƒœáƒ¡áƒ¢áƒáƒšáƒ˜áƒ áƒ”ბული პრáƒáƒ’რáƒáƒ›áƒ£áƒšáƒ˜ უზრუნველყáƒáƒ¤áƒ',
+'version-software-product' => 'პრáƒáƒ“უქტი',
+'version-software-version' => 'ვერსიáƒ',
# Special:FilePath
'filepath' => 'გზრფáƒáƒ˜áƒšáƒ˜áƒ¡áƒ“áƒáƒ›áƒ˜',
@@ -3245,22 +3388,22 @@ MediaWiki ვრცელდებრიმ იმედით, რáƒáƒ› იáƒ
'filepath-summary' => 'მáƒáƒªáƒ”მული სპეცგვერდი áƒáƒ‘რუნებს ზუსტ გზáƒáƒ¡ ფáƒáƒ˜áƒšáƒ˜áƒ¡áƒ“áƒáƒ›áƒ˜ იმ სáƒáƒ®áƒ˜áƒ—, რáƒáƒ›áƒšáƒ˜áƒ—áƒáƒª იგი დისკზერშენáƒáƒ®áƒ£áƒšáƒ˜',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'ერთნáƒáƒ˜áƒ áƒ˜ ფáƒáƒ˜áƒšáƒ”ბის ძიებáƒ',
-'fileduplicatesearch-summary' => 'ერთნáƒáƒ˜áƒ áƒ˜ ფáƒáƒ˜áƒšáƒ”ბის ძიებრჰეშ-კáƒáƒ“ის მიხედვით.
-
-შეიყვáƒáƒœáƒ”თ ფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ®áƒ”ლი წინსáƒáƒ áƒ— "{{ns:file}}:"-ის გáƒáƒ áƒ”შე.',
-'fileduplicatesearch-legend' => 'დუბლიკáƒáƒ¢áƒ”ბის ძიებáƒ',
-'fileduplicatesearch-filename' => 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ®áƒ”ლი:',
-'fileduplicatesearch-submit' => 'ძიებáƒ',
-'fileduplicatesearch-info' => '$1 × $2 პიქსელზე<br />ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒáƒ: $3<br />MIME-ტიპი: $4',
-'fileduplicatesearch-result-1' => 'ფáƒáƒ˜áƒš «$1» áƒáƒ  გáƒáƒáƒ©áƒœáƒ˜áƒ იდენტური დუბლიკáƒáƒ¢áƒ”ბი.',
-'fileduplicatesearch-result-n' => 'ფáƒáƒ˜áƒšáƒ¡ «$1» გáƒáƒáƒ©áƒœáƒ˜áƒ $2 {{PLURAL:$2|იდენტური დუბლიკáƒáƒ¢áƒ˜|იდენტური დუბლიკáƒáƒ¢áƒ”ბი|იდენტური დუბლიკáƒáƒ¢áƒ˜}}.',
+'fileduplicatesearch' => 'ერთნáƒáƒ˜áƒ áƒ˜ ფáƒáƒ˜áƒšáƒ”ბის ძიებáƒ',
+'fileduplicatesearch-summary' => 'ერთნáƒáƒ˜áƒ áƒ˜ ფáƒáƒ˜áƒšáƒ”ბის ძიებრჰეშ-კáƒáƒ“ის მიხედვით.',
+'fileduplicatesearch-legend' => 'დუბლიკáƒáƒ¢áƒ”ბის ძიებáƒ',
+'fileduplicatesearch-filename' => 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ®áƒ”ლი:',
+'fileduplicatesearch-submit' => 'ძიებáƒ',
+'fileduplicatesearch-info' => '$1 × $2 პიქსელზე<br />ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒáƒ: $3<br />MIME-ტიპი: $4',
+'fileduplicatesearch-result-1' => 'ფáƒáƒ˜áƒš «$1» áƒáƒ  გáƒáƒáƒ©áƒœáƒ˜áƒ იდენტური დუბლიკáƒáƒ¢áƒ”ბი.',
+'fileduplicatesearch-result-n' => 'ფáƒáƒ˜áƒšáƒ¡ «$1» გáƒáƒáƒ©áƒœáƒ˜áƒ $2 {{PLURAL:$2|იდენტური დუბლიკáƒáƒ¢áƒ˜|იდენტური დუბლიკáƒáƒ¢áƒ”ბი|იდენტური დუბლიკáƒáƒ¢áƒ˜}}.',
+'fileduplicatesearch-noresults' => 'ფáƒáƒ˜áƒšáƒ˜ სáƒáƒ®áƒ”ლით "$1" ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ.',
# Special:SpecialPages
'specialpages' => 'სპეციáƒáƒšáƒ£áƒ áƒ˜ გვერდები',
'specialpages-note' => '----
* ჩვეულებრივი სპეცგვერდები.
-* <strong class="mw-specialpagerestricted">სპეცგვერდები შეზღუდული მისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒáƒ‘ით.</strong>',
+* <strong class="mw-specialpagerestricted">სპეცგვერდები შეზღუდული მისáƒáƒ¬áƒ•áƒ“áƒáƒ›áƒáƒ‘ით.</strong>
+* <span class="mw-specialpagecached">ქეშირებული სპეცგვერდები.</span>',
'specialpages-group-maintenance' => 'ტექნიკური მáƒáƒ›áƒ¡áƒáƒ®áƒ£áƒ áƒ”ბის áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ”ბი',
'specialpages-group-other' => 'სხვრსპეციáƒáƒšáƒ£áƒ áƒ˜ გვერდები',
'specialpages-group-login' => 'შესვლრ/ რეგისტრáƒáƒªáƒ˜áƒ',
diff --git a/languages/messages/MessagesKaa.php b/languages/messages/MessagesKaa.php
index c0d29f22..96d96eb9 100644
--- a/languages/messages/MessagesKaa.php
+++ b/languages/messages/MessagesKaa.php
@@ -46,66 +46,66 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Qos burıwshılar' ),
+ 'Allmessages' => array( 'Ha\'mme xabarlar' ),
+ 'Allpages' => array( 'Ha\'mme betler' ),
+ 'Ancientpages' => array( 'Eski betler' ),
'BrokenRedirects' => array( 'Jaramsız burıwshılar' ),
+ 'Categories' => array( 'Kategoriyalar' ),
+ 'Contributions' => array( 'Paydalanıwshı u\'lesi' ),
+ 'Deadendpages' => array( 'Hesh betke siltemeytug\'ın betler' ),
'Disambiguations' => array( 'Ko\'p ma\'nisliler' ),
- 'Userlogin' => array( 'Kiriw', 'Paydalanıwshı kiriw' ),
- 'Userlogout' => array( 'Shıg\'ıw', 'Paydalanıwshı shıg\'ıw' ),
- 'Preferences' => array( 'Sazlawlar' ),
- 'Watchlist' => array( 'Baqlaw dizimi' ),
- 'Recentchanges' => array( 'Aqırg\'ı o\'zgerisler' ),
+ 'DoubleRedirects' => array( 'Qos burıwshılar' ),
+ 'Emailuser' => array( 'Xat jiberiw' ),
+ 'Export' => array( 'Eksport' ),
+ 'Fewestrevisions' => array( 'Az du\'zetilgenler' ),
+ 'Listadmins' => array( 'Administratorlar' ),
'Listfiles' => array( 'Su\'wretler dizimi' ),
- 'Newimages' => array( 'Taza su\'wretler' ),
+ 'Listredirects' => array( 'Burıwshılar dizimi' ),
'Listusers' => array( 'Paydalanıwshılar', 'Paydalanıwshı dizimi' ),
- 'Statistics' => array( 'Statistika' ),
- 'Randompage' => array( 'Qa\'legen', 'Qa\'legen bet' ),
+ 'Log' => array( 'Jurnal', 'Jurnallar' ),
'Lonelypages' => array( 'Hesh betten siltelmegen betler' ),
- 'Uncategorizedpages' => array( 'Kategoriyasız betler' ),
- 'Uncategorizedcategories' => array( 'Kategoriyasız kategoriyalar' ),
- 'Uncategorizedimages' => array( 'Kategoriyasız su\'wretler' ),
- 'Uncategorizedtemplates' => array( 'Kategoriyasız shablonlar' ),
- 'Unusedcategories' => array( 'Paydalanılmag\'an kategoriyalar' ),
- 'Unusedimages' => array( 'Paydalanılmag\'an fayllar', 'Paydalanılmag\'an su\'wretler' ),
- 'Wantedpages' => array( 'Talap qılıng\'an betler', 'Jaramsız sıltewler' ),
- 'Wantedcategories' => array( 'Talap qılıng\'an kategoriyalar' ),
+ 'Longpages' => array( 'Uzın betler' ),
+ 'MIMEsearch' => array( 'MIME izlew' ),
+ 'Mostcategories' => array( 'Ko\'p kategoriyalang\'anlar' ),
+ 'Mostimages' => array( 'Ko\'p paydalanılg\'an su\'wretler' ),
'Mostlinked' => array( 'Ko\'p siltelgenler' ),
'Mostlinkedcategories' => array( 'Ko\'p paydalanılg\'an kategoriyalar' ),
'Mostlinkedtemplates' => array( 'Ko\'p paydalanılg\'an shablonlar' ),
- 'Mostimages' => array( 'Ko\'p paydalanılg\'an su\'wretler' ),
- 'Mostcategories' => array( 'Ko\'p kategoriyalang\'anlar' ),
'Mostrevisions' => array( 'Ko\'p du\'zetilgenler' ),
- 'Fewestrevisions' => array( 'Az du\'zetilgenler' ),
- 'Shortpages' => array( 'Qqısqa betler' ),
- 'Longpages' => array( 'Uzın betler' ),
- 'Newpages' => array( 'Taza betler' ),
- 'Ancientpages' => array( 'Eski betler' ),
- 'Deadendpages' => array( 'Hesh betke siltemeytug\'ın betler' ),
- 'Protectedpages' => array( 'Qorg\'alg\'an betler' ),
- 'Allpages' => array( 'Ha\'mme betler' ),
- 'Specialpages' => array( 'Arnawlı betler' ),
- 'Contributions' => array( 'Paydalanıwshı u\'lesi' ),
- 'Emailuser' => array( 'Xat jiberiw' ),
- 'Whatlinkshere' => array( 'Siltelgen betler' ),
- 'Recentchangeslinked' => array( 'Baylanıslı aqırg\'ı o\'zgerisler' ),
'Movepage' => array( 'Betti ko\'shiriw' ),
- 'Categories' => array( 'Kategoriyalar' ),
- 'Export' => array( 'Eksport' ),
- 'Version' => array( 'Versiya' ),
- 'Allmessages' => array( 'Ha\'mme xabarlar' ),
- 'Log' => array( 'Jurnal', 'Jurnallar' ),
- 'Userrights' => array( 'Paydalanıwshı huqıqları' ),
- 'MIMEsearch' => array( 'MIME izlew' ),
- 'Unwatchedpages' => array( 'Baqlanılmag\'an betler' ),
- 'Listredirects' => array( 'Burıwshılar dizimi' ),
- 'Revisiondelete' => array( 'Nusqanı o\'shiriw' ),
- 'Unusedtemplates' => array( 'Paydalanılmag\'an shablonlar' ),
- 'Randomredirect' => array( 'Qa\'legen burıwshı' ),
+ 'Mycontributions' => array( 'Menin\' u\'lesim' ),
'Mypage' => array( 'Menin\' betim' ),
'Mytalk' => array( 'Menin\' sa\'wbetim' ),
- 'Mycontributions' => array( 'Menin\' u\'lesim' ),
- 'Listadmins' => array( 'Administratorlar' ),
+ 'Newimages' => array( 'Taza su\'wretler' ),
+ 'Newpages' => array( 'Taza betler' ),
'Popularpages' => array( 'Ko\'p ko\'rilgen betler' ),
+ 'Preferences' => array( 'Sazlawlar' ),
+ 'Protectedpages' => array( 'Qorg\'alg\'an betler' ),
+ 'Randompage' => array( 'Qa\'legen', 'Qa\'legen bet' ),
+ 'Randomredirect' => array( 'Qa\'legen burıwshı' ),
+ 'Recentchanges' => array( 'Aqırg\'ı o\'zgerisler' ),
+ 'Recentchangeslinked' => array( 'Baylanıslı aqırg\'ı o\'zgerisler' ),
+ 'Revisiondelete' => array( 'Nusqanı o\'shiriw' ),
'Search' => array( 'Ä°zlew' ),
+ 'Shortpages' => array( 'Qqısqa betler' ),
+ 'Specialpages' => array( 'Arnawlı betler' ),
+ 'Statistics' => array( 'Statistika' ),
+ 'Uncategorizedcategories' => array( 'Kategoriyasız kategoriyalar' ),
+ 'Uncategorizedimages' => array( 'Kategoriyasız su\'wretler' ),
+ 'Uncategorizedpages' => array( 'Kategoriyasız betler' ),
+ 'Uncategorizedtemplates' => array( 'Kategoriyasız shablonlar' ),
+ 'Unusedcategories' => array( 'Paydalanılmag\'an kategoriyalar' ),
+ 'Unusedimages' => array( 'Paydalanılmag\'an fayllar', 'Paydalanılmag\'an su\'wretler' ),
+ 'Unusedtemplates' => array( 'Paydalanılmag\'an shablonlar' ),
+ 'Unwatchedpages' => array( 'Baqlanılmag\'an betler' ),
+ 'Userlogin' => array( 'Kiriw', 'Paydalanıwshı kiriw' ),
+ 'Userlogout' => array( 'Shıg\'ıw', 'Paydalanıwshı shıg\'ıw' ),
+ 'Userrights' => array( 'Paydalanıwshı huqıqları' ),
+ 'Version' => array( 'Versiya' ),
+ 'Wantedcategories' => array( 'Talap qılıng\'an kategoriyalar' ),
+ 'Wantedpages' => array( 'Talap qılıng\'an betler', 'Jaramsız sıltewler' ),
+ 'Watchlist' => array( 'Baqlaw dizimi' ),
+ 'Whatlinkshere' => array( 'Siltelgen betler' ),
'Withoutinterwiki' => array( 'Hesh tilge siltemeytug\'ın betler' ),
);
@@ -149,7 +149,7 @@ $dateFormats = array(
'ISO 8601 both' => 'xnY-xnm-xnd"T"xnH:xni:xns',
);
-$linkTrail = "/^([a-zı'ʼ’“»]+)(.*)$/sDu";
+$linkTrail = "/^((?:[a-zıʼ’“»]|'(?!'))+)(.*)$/sDu";
$messages = array(
# User preference toggles
@@ -267,14 +267,7 @@ $messages = array(
'category-file-count-limited' => "Usı kategoriyada to'mendegi {{PLURAL:$1|fayl|$1 fayl}} bar.",
'listingcontinuesabbrev' => 'dawamı',
-'linkprefix' => '/^(.*?)([a-zıA-Zİ\\x80-\\xff]+)$/sDu',
-'mainpagetext' => "'''MediaWiki tabıslı ornatıldı.'''",
-'mainpagedocfooter' => "Wiki bag'darlamasın qollanıw haqqındag'i mag'lıwmat usın [http://meta.wikimedia.org/wiki/Help:Contents Paydalanıwshılar qollanbasınan] ken'es alın'.
-
-== Baslaw ushın ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Konfiguratsiya sazlaw dizimi]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWikidin' Ko'p Soralatug'ın Sorawları]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki haqqında xat tarqatıw dizimi]",
+'linkprefix' => '/^(.*?)([a-zıA-Zİ\\x80-\\xff]+)$/sDu',
'about' => 'Haqqında',
'article' => "Mag'lıwmat beti",
@@ -325,7 +318,6 @@ $messages = array(
'history' => 'Bet tariyxı',
'history_short' => 'Tariyx',
'updatedmarker' => "aqırg'ı kirgenimnen keyin jan'alang'anlar",
-'info_short' => "Mag'lıwmat",
'printableversion' => 'Baspa nusqası',
'permalink' => 'Turaqlı siltew',
'print' => "Baspag'a shıg'arıw",
@@ -506,10 +498,9 @@ Birneshe minuttan keyin qaytadan ha'reket qılıp ko'rin'.",
'viewsourcetext' => "Bul bettin' deregin qarawın'ızg'a ha'mde ko'shirip alıwın'ızg'a boladı:",
'editinginterface' => "'''Esletpe:''' Siz ishinde MediaWiki sistema xabarı bar bolg'an betti o'zgertip atırsız.
Bul bettin' o'zgeriwi basqa paydalanıwshılardın' sırtqı interfeisine ta'sir etedi.
-Audarıw ushın, MediaWiki programmasın jersindiriw [http://translatewiki.net/wiki/Main_Page?setlang=kaa translatewiki.net proyektisin] qarap shıg'ın'ız.",
+Audarıw ushın, MediaWiki programmasın jersindiriw [//translatewiki.net/wiki/Main_Page?setlang=kaa translatewiki.net proyektisin] qarap shıg'ın'ız.",
'sqlhidden' => "(SQL sorawı jasırılg'an)",
'namespaceprotected' => "'''$1''' isimler ko'pligindegi betlerdi o'zgertiwge ruxsatın'ız joq.",
-'customcssjsprotected' => "Bul betti o'zgertiwin'izge ruqsatın'ız joq, sebebi bul jerde basqa paydalanıwshılardın' jeke sazlawları bar.",
'ns-specialprotected' => '"{{ns:special}}:" isimler ko\'pligindegi betler o\'zgertilmeydi',
'titleprotected' => "Bul atamanı jaratıw [[User:$1|$1]] ta'repinen qorg'alg'an.
Keltirilgen sebep: ''$2''.",
@@ -560,7 +551,7 @@ Kukilerdi qosıp, qaytadan ko'rin'.",
'loginsuccess' => "'''{{SITENAME}} saytına \"\$1\" paydalanıwshı atı menen kirdin'iz.'''",
'nosuchuser' => "\"\$1\" atlı paydalanıwshı joq.
Tuwrı jazılg'anlıg'ın tekserin' yamasa [[Special:UserLogin/signup|taza akkaunt jaratın']].",
-'nosuchusershort' => '"<nowiki>$1</nowiki>" atlı paydalanıwshı joq. Tuwrı jazılg\'anlıg\'ın tekserin\'.',
+'nosuchusershort' => '"$1" atlı paydalanıwshı joq. Tuwrı jazılg\'anlıg\'ın tekserin\'.',
'nouserspecified' => "Siz paydalanıwshı atın ko'rsetpedin'iz.",
'wrongpassword' => "Qate parol kiritlgen. Qaytadan kiritin'.",
'wrongpasswordempty' => "Parol kiritilmegen. Qaytadan ha'reket etin'.",
@@ -605,7 +596,7 @@ Endi saytqa kirip parolin\'izdi o\'zgertiwin\'iz kerek.
Eger bul akkaunt nadurıs jaratılg\'an bolsa, bul xabarg\'a itibar bermesen\'izde boladı.',
'loginlanguagelabel' => 'Til: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => "Paroldi o'zgertiw",
'resetpass_announce' => "E-mailin'izge jiberilgen waqtınshalıq kod penen kirdin'iz.
Kiriw protsessin juwmaqlaw ushın jan'a parolin'izdi usı jerge kiritin':",
@@ -630,8 +621,6 @@ Kiriw protsessin juwmaqlaw ushın jan'a parolin'izdi usı jerge kiritin':",
'extlink_tip' => "Sırtqı siltew (http:// prefiksin kiritin')",
'headline_sample' => 'Atama teksti',
'headline_tip' => "2-shi da'rejeli atama",
-'math_sample' => "Usı jerge formulanı jazın'",
-'math_tip' => 'Matematik formula (LaTeX)',
'nowiki_sample' => "Formatlanbag'an tekstti usı jerge qoyın'",
'nowiki_tip' => 'Wiki formatlawın esapqa almaw',
'image_tip' => "Jaylastırılg'an fayl",
@@ -696,7 +685,7 @@ Eger bul jerge aljasıp o'tken bolsan'ız, brauzerin'izdin' «Arqag'a» knopkasÄ
Basqa betlerden usı bet atamasın [[Special:Search/{{PAGENAME}}|izlep ko'riwin'izge]],
<span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tiyisli jurnallardı izlewin'izge],
yamasa usı betti [{{fullurl:{{FULLPAGENAME}}|action=edit}} jaratıwin'ızga']</span> boladi.",
-'userpage-userdoesnotexist' => "\"\$1\" paydalanıwshı akkauntı registratsiya qılınbag'an. Bul betti jaratqın'ız yamasa o'zgertkin'iz kelse tekserip ko'rin'.",
+'userpage-userdoesnotexist' => "\"<nowiki>\$1</nowiki>\" paydalanıwshı akkauntı registratsiya qılınbag'an. Bul betti jaratqın'ız yamasa o'zgertkin'iz kelse tekserip ko'rin'.",
'updated' => "(Jan'alang'an)",
'note' => "'''Eskertiw:'''",
'previewnote' => "'''Bul ele tek aldınnan ko'rip shıg'ıw; o'zgerisler ele saqlanbadı!'''",
@@ -915,7 +904,6 @@ Barlıq mag'lıwmat tu'rin (sonın' ishinde sa'wbet betlerdi, shablonlardı h.t.
'changepassword' => "Paroldi o'zgertiw",
'prefs-skin' => "Sırtqı ko'rinis",
'skin-preview' => 'Korip al',
-'prefs-math' => 'Formulalar',
'datedefault' => 'Hesh sazlawlarsız',
'prefs-datetime' => "Sa'ne ha'm waqıt",
'prefs-personal' => 'Paydalanıwshı profaylı',
@@ -1446,11 +1434,9 @@ Ja'nede [[Special:WantedCategories|kerekli kategoriyalardı]] qarap ko'rin'.",
'watchlistanontext' => "Baqlaw dizimin'izdegilerdi qaraw yamasa o'zgertiw ushın $1 kerek.",
'watchnologin' => 'Kirilmegen',
'watchnologintext' => "Baqlaw dizimin'izdi o'zgertiw ushın [[Special:UserLogin|kiriwin'iz]] kerek.",
-'addedwatch' => 'Baqlaw dizimine qosıldı',
'addedwatchtext' => "\"[[:\$1]]\" beti [[Special:Watchlist|baqlaw dizimin'izge]] qosıldı.
Usı ha'm og'an baylanıslı bolg'an sa'wbet betlerinde bolatug'ın keleshektegi o'zgerisler usı dizimde ko'rsetiledi ha'mde betti tabıwdı an'satlastırıw ushın [[Special:RecentChanges|taza o'zgerisler diziminde]] '''juwan ha'ripte''' ko'rsetiledi.
Eger siz bul betti baqlaw dizimin'izden o'shirmekshi bolsan'ız bettin' joqarg'ı on' jag'ındag'ı \"Baqlamaw\" jazıwın basın'.",
-'removedwatch' => "Baqlaw diziminen o'shirildi",
'removedwatchtext' => '"[[:$1]]" beti [[Special:Watchlist|sizin\' baqlaw dizimin\'izden]] o\'shirildi.',
'watch' => 'Baqlaw',
'watchthispage' => 'Bul betti baqlaw',
@@ -1492,7 +1478,7 @@ Eger siz bul betti baqlaw dizimin'izden o'shirmekshi bolsan'ız bettin' joqarg'Ä
'confirmdeletetext' => "Siz bul betti yamasa su'wretti barliq tariyxı menen mag'lıwmatlar bazasınan o'shirejaqsız.
Bunın' aqıbetin tu'singenin'izdi ha'm [[{{MediaWiki:Policy-url}}]] siyasatına ılayıqlı ekenligin tastıyıqlan'.",
'actioncomplete' => "Ha'reket tamamlandı",
-'deletedtext' => "\"<nowiki>\$1</nowiki>\" o'shirildi.
+'deletedtext' => "\"\$1\" o'shirildi.
Aqırg'ı o'shirilgenlerdin' dizimin ko'riw ushin \$2 ni qaran'",
'deletedarticle' => '"[[$1]]" o\'shirildi',
'dellogpage' => "O'shiriw jurnalı",
@@ -1520,7 +1506,7 @@ Aqırg'ı o'shirilgenlerdin' dizimin ko'riw ushin \$2 ni qaran'",
'protectexpiry' => "Ku'shin joytıw waqtı:",
'protect_expiry_invalid' => "Nadurıs ku'shin joytıw waqtı.",
'protect_expiry_old' => "Kushin joytıw waqtı o'tip ketken.",
-'protect-text' => "'''<nowiki>$1</nowiki>''' betinin' qorg'aw da'rejesin ko're yamasa o'zgerte alasız.",
+'protect-text' => "'''$1''' betinin' qorg'aw da'rejesin ko're yamasa o'zgerte alasız.",
'protect-locked-access' => "Akkauntın'ızdın' bettın' qorg'aw da'rejesin o'zgertiwge ruxsatı joq.
'''$1''' betinin' ha'zirgi sazlawları:",
'protect-cascadeon' => "Bul bet ha'zirgi waqıtta qorg'alg'an, sebebi usı bet kaskadlı qorg'awı bar {{PLURAL:$1|betke|betlerine}} qosılg'an. Bul bettin' qorg'aw da'rejesin o'zgerte alasız, biraq bul kaskadlı qorg'awg'a ta'sir etpeydi.",
@@ -1617,12 +1603,10 @@ Aqırg'ı o'shirilgenlerdin' dizimin ko'riw ushin \$2 ni qaran'",
# Block/unblock
'blockip' => 'Paydalanıwshını bloklaw',
'blockip-legend' => 'Paydalanıwshını bloklaw',
-'ipaddress' => 'IP Adres:',
'ipadressorusername' => 'IP Adres yamasa paydalanıwshı atı:',
'ipbexpiry' => "Ku'shin joytıw waqtı:",
'ipbreason' => 'Sebep:',
'ipbreasonotherlist' => 'Basqa sebep',
-'ipbanononly' => 'Tek anonim paydalanıwshılardı bloklaw',
'ipbcreateaccount' => "Akkaunt jaratıwdı qadag'an etiw",
'ipbemailban' => "Paydalanıwshını e-mail jiberiwden qadag'alaw",
'ipbsubmit' => 'Bul paydalanıwshını bloklaw',
@@ -1642,9 +1626,7 @@ Basqa bloklawlar ushın [[Special:IPBlockList|IP bloklaw dizimin]] ko'rip shıg'
'unblocked-id' => "$1 bloklawı o'shirildi",
'ipblocklist' => "Bloklang'an IP adresler ha'm paydalanıwshılar dizimi",
'ipblocklist-legend' => "Bloklang'an paydalanıwshını tabıw",
-'ipblocklist-username' => 'Paydalanıwshı atı yamasa IP adres:',
'ipblocklist-submit' => 'Ä°zle',
-'blocklistline' => '$1, $2 waqıtında $3 blokladı ($4)',
'infiniteblock' => 'sheksiz',
'expiringblock' => "ku'shin joytıw waqtı: $1 $2",
'anononlyblock' => 'tek anon.',
@@ -1734,7 +1716,7 @@ Basqa atama saylan'",
'allmessagesdefault' => 'Defolt tekst',
'allmessagescurrent' => "Ha'zirgi tekst",
'allmessagestext' => "Bul {{ns:mediawiki}} isimler ko'pligindegi bar bolg'an sistema xabarları dizimi.
-Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.",
+Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.",
# Thumbnails
'thumbnail-more' => "U'lkeytiw",
@@ -1828,18 +1810,6 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'siteusers' => '{{SITENAME}} {{PLURAL:$2|paydalanıwshı|paydalanıwshıları}} $1',
'creditspage' => 'Bet avtorları',
-# Info page
-'infosubtitle' => "Bet haqqında mag'lıwmat",
-'numedits' => "O'zgerisler sanı (bet): $1",
-'numtalkedits' => "O'zgerisler sanı (diskussiya beti): $1",
-'numwatchers' => 'Baqlawshılar sanı: $1',
-
-# Math errors
-'math_unknown_error' => "belgisiz qa'telik",
-'math_unknown_function' => 'belgisiz funktsiya',
-'math_lexing_error' => "leksikalıq qa'telik",
-'math_syntax_error' => "sintaksikalıq qa'telik",
-
# Patrol log
'patrol-log-auto' => '(avtomatlasqan)',
@@ -1852,15 +1822,14 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'nextdiff' => 'Keyingi parq →',
# Media information
-'thumbsize' => "Miniatyuranın' ha'jmi:",
-'widthheight' => '$1 × $2',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|bet|bet}}',
-'file-info' => "fayldın' ha'jmi: $1, MIME tu'ri: $2",
-'file-info-size' => "$1 × $2 piksel, fayldın' ha'jmi: $3, MIME tu'ri: $4",
-'file-nohires' => '<small>Bunnan joqarı imkaniyatlı tabılmadı.</small>',
-'svg-long-desc' => "SVG fayl, $1 × $2 piksel belgilengen, fayldın' ha'jmi: $3",
-'show-big-image' => 'Joqarı imkaniyatlı',
-'show-big-image-thumb' => "<small>Bul aldinnan ko'riwdin' ha'jmi: $1 × $2 piksel</small>",
+'thumbsize' => "Miniatyuranın' ha'jmi:",
+'widthheight' => '$1 × $2',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|bet|bet}}',
+'file-info' => "fayldın' ha'jmi: $1, MIME tu'ri: $2",
+'file-info-size' => "$1 × $2 piksel, fayldın' ha'jmi: $3, MIME tu'ri: $4",
+'file-nohires' => '<small>Bunnan joqarı imkaniyatlı tabılmadı.</small>',
+'svg-long-desc' => "SVG fayl, $1 × $2 piksel belgilengen, fayldın' ha'jmi: $3",
+'show-big-image' => 'Joqarı imkaniyatlı',
# Special:NewFiles
'newimages' => 'Taza fayllar galereyasi',
@@ -1894,7 +1863,13 @@ Eger fayl jaratılg'anınan keyin o'zgertilgen bolsa, geybir parametrleri o'zger
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Yeni:',
@@ -1904,14 +1879,12 @@ Eger fayl jaratılg'anınan keyin o'zgertilgen bolsa, geybir parametrleri o'zger
# External editor support
'edit-externally' => "Bul fayldı sırtqı bag'darlama arqalı o'zgertiw",
-'edit-externally-help' => "(Ko'birek mag'lıwmat ushın [http://www.mediawiki.org/wiki/Manual:External_editors ornatıw jolların] qaran')",
+'edit-externally-help' => "(Ko'birek mag'lıwmat ushın [//www.mediawiki.org/wiki/Manual:External_editors ornatıw jolların] qaran')",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => "ha'mmesin",
-'imagelistall' => "ha'mme",
-'watchlistall2' => "ha'mmesin",
-'namespacesall' => "ha'mmesi",
-'monthsall' => "ha'mme",
+'watchlistall2' => "ha'mmesin",
+'namespacesall' => "ha'mmesi",
+'monthsall' => "ha'mme",
# E-mail address confirmation
'confirmemail' => 'E-mail adresin tastıyıqlaw',
diff --git a/languages/messages/MessagesKab.php b/languages/messages/MessagesKab.php
index 13cd867e..74985bd8 100644
--- a/languages/messages/MessagesKab.php
+++ b/languages/messages/MessagesKab.php
@@ -175,7 +175,6 @@ $messages = array(
'history' => 'Amezruy n usebter',
'history_short' => 'Amezruy',
'updatedmarker' => 'yettubeddel segmi tarzeft taneggarut inu',
-'info_short' => 'Talɣut',
'printableversion' => 'Tasiwelt iwakken ad timprimiá¸',
'permalink' => 'Azday ur yettbeddil ara',
'print' => 'Imprimi',
@@ -360,7 +359,7 @@ Isem n wemseqdac inek yettwaxleq. Ur tettuḠara ad tbeddleḠIsemyifiyen n {{
'loginsuccesstitle' => 'TkecmeḠ!',
'loginsuccess' => "'''TkecmeḠar {{SITENAME}} s yisem n wemseqdac \"\$1\".'''",
'nosuchuser' => 'Ulac isem n wemseqdac s yisem "$1". Ssenqed tira n yisem-nni, neɣ xelq isem n wemseqdac amaynut.',
-'nosuchusershort' => 'Ulac isem n wemseqdac s yisem "<nowiki>$1</nowiki>". Ssenqed tira n yisem-nni.',
+'nosuchusershort' => 'Ulac isem n wemseqdac s yisem "$1". Ssenqed tira n yisem-nni.',
'nouserspecified' => 'Yessefk ad tefkeḠisem n wemseqdac.',
'wrongpassword' => 'Awal n tbaá¸nit É£aleá¹­. ÆreḠdaÉ£en.',
'wrongpasswordempty' => 'Awal n tbaá¸nit ulac-it. ÆreḠdaÉ£en.',
@@ -393,7 +392,7 @@ iwakken ad tbeyyneḠbelli tansa n email inek.',
'accountcreatedtext' => 'Isem n wemseqdac i $1 yettwaxleq.',
'loginlanguagelabel' => 'Tutlayt: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'IÉ›awed awal n tbaá¸nit',
'resetpass_announce' => 'TkecmeḠs ungal yettwazen-ak s e-mail (ungal-nni qrib yemmut). Iwekken tkemmleá¸, yessefk ad textareḠawal n tbaá¸nit amaynut dagi:',
'resetpass_text' => '<!-- Rnu aá¸ris dagi -->',
@@ -416,8 +415,6 @@ iwakken ad tbeyyneḠbelli tansa n email inek.',
'extlink_tip' => 'Azday aberrani (cfu belli yessefk at tebduḠs http://)',
'headline_sample' => 'Aá¸ris n uzwel azellum',
'headline_tip' => 'Aswir 2 n uzwel azellum',
-'math_sample' => 'Ssekcem tasemselt dagi',
-'math_tip' => 'Tasemselt tusnakt (LaTeX)',
'nowiki_sample' => 'Sideff da tirra bla taseddast(formatting) n wiki',
'nowiki_tip' => 'Ttu taseddast n wiki',
'image_sample' => 'Amedya.jpg',
@@ -642,7 +639,6 @@ i yesɛan akk awalen i banen-d).",
'changepassword' => 'Beddel awal n tbaá¸nit',
'prefs-skin' => 'Aglim',
'skin-preview' => 'Pre-timeẓriwt',
-'prefs-math' => 'Tusnakt',
'datedefault' => 'Ur sɛiɣ ara asemyifi',
'prefs-datetime' => 'Azemz d ukud',
'prefs-personal' => 'Profile n wemseqdac',
@@ -658,8 +654,6 @@ i yesɛan akk awalen i banen-d).",
'columns' => 'Tigejda:',
'searchresultshead' => 'Anadi',
'resultsperpage' => 'Geddac n tiririyin i mkul asebter:',
-'contextlines' => 'Geddac n ijerriá¸en i mkul tiririt:',
-'contextchars' => 'Geddac n isekkilen n usatal i mkul ajjeriá¸:',
'recentchangescount' => 'Geddac n izwal deg ibeddilen imaynuten:',
'savedprefs' => 'Isemyifiyen inek yettusmektan.',
'timezonelegend' => 'Iẓá¸i n ukud',
@@ -995,13 +989,11 @@ deg « Expéditeur» n izen inek iwakken amseqdac-nni yezmer a k-yerr.',
'watchlistanontext' => 'G leɛnaya-k $1 iwakken ad twalaḠneɣ tbeddleḠiferdas deg wumuɣ n uɛessi inek.',
'watchnologin' => 'Ur tekcimeḠara',
'watchnologintext' => 'Yessefk ad [[Special:UserLogin|tkecmeá¸]] iwakken ad tbeddleḠumuÉ£ n uÉ›essi inek.',
-'addedwatch' => 'Yerna ɣer wumuɣ n uɛessi',
'addedwatchtext' => "Asebter \"[[:\$1]]\" yettwarnu deg [[Special:Watchlist|wumuɣ n uɛessi]] inek.
Ma llan ibeddlen deg usebter-nni neɣ deg usbtar umyennan ines, ad banen dagi,
Deg [[Special:RecentChanges|wumuÉ£ n yibeddlen imaynuten]] ad banen s '''yisekkilen ibberbuzen''' (akken ad teẓriá¸).
Ma tebɣiḠad tekkseḠasebter seg wumuɣ n uɛessi inek, wekki ɣef \"Fakk aɛessi\".",
-'removedwatch' => 'Yettwakkes seg wumuɣ n uɛessi',
'removedwatchtext' => 'Asebter "[[:$1]]" yettwakkes seg wumuɣ n uɛessi inek.',
'watch' => 'Æass',
'watchthispage' => 'Æass asebter-agi',
@@ -1050,10 +1042,10 @@ Ur yelli ara email n talÉ£ut asmi llan ibeddlen deg usebter ala lukan teẓreá¸
--
Akken ad tbeddleḠn wumuɣ n uɛessi inek settings, ruḥ ɣer
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Tadhelt:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Mḥu asebter',
@@ -1064,7 +1056,7 @@ Tadhelt:
'exblank' => 'asebter yella d ilem',
'historywarning' => 'Aɣtal: Asebter i ara temḥuḠyesɛa amezruy:',
'actioncomplete' => 'Axdam yekfa',
-'deletedtext' => '"<nowiki>$1</nowiki>" yettumḥa.
+'deletedtext' => '"$1" yettumḥa.
Ẓer $2 i aɣmis n yimḥayin imaynuten.',
'deletedarticle' => '"[[$1]]" yettumḥa',
'dellogpage' => 'Aɣmis n umḥay',
@@ -1143,7 +1135,6 @@ G leɛnayek wekki ɣef taqeffalt "Back/Précédent" n browser/explorateur inek,
# Block/unblock
'blockip' => 'Æekkel amseqdac',
-'ipaddress' => 'Tansa IP',
'ipadressorusername' => 'Tansa IP neɣ isem n wemseqdac',
'ipbreason' => 'Ayɣer',
'ipbsubmit' => 'Æekkel amseqdac-agi',
@@ -1217,7 +1208,7 @@ Anda tebɣiḠtesmimeḠ"[[:$1]]" yella yagi. tebɣiḠad temḥuḠiwakken
'allmessagesdefault' => 'Aá¸ris ameslugen',
'allmessagescurrent' => 'Aá¸ris n tura',
'allmessagestext' => 'Wagi d umuɣ n izen n system i yellan deg yisem n taɣult.
-Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' ut yezmir ara ad yettuseqdac axaá¹­er '''\$wgUseDatabaseMessages''' yettwakkes.",
# Thumbnails
@@ -1325,33 +1316,6 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'spam_reverting' => 'Asuɣal i tasiwel taneggarut i ur tesɛi ara izdayen ɣer $1',
'spam_blanking' => 'Akk tisiwal sɛan izdayen ɣer $1, ad yemḥu',
-# Info page
-'infosubtitle' => 'Talɣut n usebter',
-'numedits' => 'Geddac n yibeddlen (amagrad): $1',
-'numtalkedits' => 'Geddac n yibeddlen (asebter n wemyannan): $1',
-'numwatchers' => 'Geddac n yiɛessasen: $1',
-'numauthors' => 'Geddac n yimseqdacen i yuran (amagrad): $1',
-'numtalkauthors' => 'Geddac n yimsedac i yuran (asebter n wemyennan): $1',
-
-# Math options
-'mw_math_png' => 'Daymen err-it PNG',
-'mw_math_simple' => 'HTML ma yella amraá¸i, ma ulac PNG',
-'mw_math_html' => 'HTML ma yezmer neɣ PNG ma ulac',
-'mw_math_source' => 'Eǧǧ-it s TeX (i browsers/explorateurs n weá¸ris)',
-'mw_math_modern' => 'Mliḥ i browsers/explorateurs imaynuten',
-'mw_math_mathml' => 'MathML ma yezmer (experimental)',
-
-# Math errors
-'math_failure' => 'Agul n tusnakt',
-'math_unknown_error' => 'Agul maÄÄi d aá¸ahri',
-'math_unknown_function' => 'Tawuri maÄÄi d taá¸ahrit',
-'math_lexing_error' => 'Agul n tmawalt',
-'math_syntax_error' => 'Agul n tseddast',
-'math_image_error' => 'Abeddil ɣer PNG yexser; ssenqed installation n latex, dvips, gs, umbeɛd eg abeddel',
-'math_bad_tmpdir' => 'Ur yezmir ara ad yaru ɣef/ɣer tusnakt n temp directory/dossier',
-'math_bad_output' => 'Ur yezmir ara ad yaru ɣef/ɣer tusnakt n tuffɣa directory/dossier',
-'math_notexvc' => "''texvc executable'' / ''executable texvc'' ulac-it; ẓer math/README akken a textareḠisemyifiyen.",
-
# Patrolling
'markaspatrolleddiff' => 'Rcem "yettwassenqden"',
'markaspatrolledtext' => 'Rcem amagrad-agi "yettwassenqden"',
@@ -1376,14 +1340,13 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'nextdiff' => 'Amgirred ameá¸fir →',
# Media information
-'mediawarning' => "'''Aɣtal''': Waqila afaylu-yagi yesɛa angal aḥraymi, lukan a t-tesseqdceḠyezmer ad ixesser aselkim inek.",
-'imagemaxsize' => 'Ḥedded tiddi n tugniwin deg yiglamen n tugniwim i:',
-'thumbsize' => 'Tiddi n tugna tamecṭuḥt:',
-'file-info' => 'tiddi n ufaylu: $1, anaw n MIME: $2',
-'file-info-size' => '$1 × $2 pixel, tiddi n ufaylu: $3, anaw n MIME: $4',
-'file-nohires' => '<small>Ulac resolution i tameqqrant fell-as.</small>',
-'show-big-image' => 'Resolution tameqqrant',
-'show-big-image-thumb' => '<small>Tiddi n pre-timeẓriwt-agi: $1 × $2 pixels</small>',
+'mediawarning' => "'''Aɣtal''': Waqila afaylu-yagi yesɛa angal aḥraymi, lukan a t-tesseqdceḠyezmer ad ixesser aselkim inek.",
+'imagemaxsize' => 'Ḥedded tiddi n tugniwin deg yiglamen n tugniwim i:',
+'thumbsize' => 'Tiddi n tugna tamecṭuḥt:',
+'file-info' => 'tiddi n ufaylu: $1, anaw n MIME: $2',
+'file-info-size' => '$1 × $2 pixel, tiddi n ufaylu: $3, anaw n MIME: $4',
+'file-nohires' => '<small>Ulac resolution i tameqqrant fell-as.</small>',
+'show-big-image' => 'Resolution tameqqrant',
# Special:NewFiles
'newimages' => 'Umuɣ n ifayluwen imaynuten',
@@ -1403,14 +1366,12 @@ Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
# External editor support
'edit-externally' => 'Beddel afaylu-yagi s usnas aberrani.',
-'edit-externally-help' => 'Ẓer [http://www.mediawiki.org/wiki/Manual:External_editors taknut] iwakken ad tessneḠkter.',
+'edit-externally-help' => 'Ẓer [//www.mediawiki.org/wiki/Manual:External_editors taknut] iwakken ad tessneḠkter.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'akk',
-'imagelistall' => 'akk',
-'watchlistall2' => 'akk',
-'namespacesall' => 'akk',
-'monthsall' => 'akk',
+'watchlistall2' => 'akk',
+'namespacesall' => 'akk',
+'monthsall' => 'akk',
# E-mail address confirmation
'confirmemail' => 'Sentem tansa n e-mail',
@@ -1512,7 +1473,7 @@ G leɛnaya-k sentem belli ṣaḥḥ tebɣiḠad tɛiwedeḠaxlaq n usebter-ag
'watchlistedit-noitems' => 'Umuɣ n uɛessi inek ur yesɛi ḥedd izwal.',
'watchlistedit-normal-title' => 'Beddel umuɣ n uɛessi',
'watchlistedit-normal-legend' => 'Kkes izwal seg wumuɣ n uɛessi',
-'watchlistedit-normal-explain' => 'Izwal deg wumuɣ n uɛessi ttbanen-d deg ukessar. Akken ad tekkseḠyiwen wezwel, wekki ɣef tenkult i zdat-s, umbeɛd wekki ɛef "Kkes izwal". TzemreḠdaɣen [[Special:Watchlist/raw|ad tbeddleḠumuɣ n uɛessi (raw)]].',
+'watchlistedit-normal-explain' => 'Izwal deg wumuɣ n uɛessi ttbanen-d deg ukessar. Akken ad tekkseḠyiwen wezwel, wekki ɣef tenkult i zdat-s, umbeɛd wekki ɛef "Kkes izwal". TzemreḠdaɣen [[Special:EditWatchlist/raw|ad tbeddleḠumuɣ n uɛessi (raw)]].',
'watchlistedit-normal-submit' => 'Kkes izwal',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 wezwel yettwakkes|$1 yizwal ttwakksen}} seg wumuɣ n uɛessi inek:',
'watchlistedit-raw-title' => 'Beddel umuɣ n uɛessi (raw)',
diff --git a/languages/messages/MessagesKbd_cyrl.php b/languages/messages/MessagesKbd_cyrl.php
index dc081e2e..1c6b8b6b 100644
--- a/languages/messages/MessagesKbd_cyrl.php
+++ b/languages/messages/MessagesKbd_cyrl.php
@@ -9,11 +9,12 @@
*
* @author Bogups
* @author Marina
+ * @author Vito Genovese
* @author Ðлёшка
* @author Ð¢Ð°Ð¼Ñ Ð‘Ð°Ð»ÑŠÐºÑŠÑрхÑ
*/
-$fallback = 'ru';
+# $fallback = 'ru'; // bug 27785
$messages = array(
# User preference toggles
@@ -144,15 +145,6 @@ $messages = array(
'index-category' => 'Ð˜Ð½Ð´ÐµÐºÑ Ð·Ñ‹Ñ€Ð°Ñ‚ напÑкӀуÑцӀхÑÑ€',
'noindex-category' => 'ÐапÑкӀуÑцӀ Ð¸Ð½Ð´ÐµÐºÑ Ð·Ñ‹Ñ…ÑƒÑмыныкуъÑÑ…ÑÑ€',
-'mainpagetext' => "'''«MediaWiki» узыншу Ñ…Ñгъува.'''",
-'mainpagedocfooter' => 'Мы виким и лÑÐ¶ÑŒÑ‹Ð³ÑŠÑ Ñ…ÑŠÑ‹Ð±Ð°Ñ€Ñ…ÑÑ€ здÑбгъуÑтыфынур [http://meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 дÑÓ€ÑпыкъуÑгъу тхылъым].
-
-
-== КъыщхьÑпÑÐ³ÑŠÑƒÑ Ñ…ÑŠÑƒÑ„Ñ‹Ð½ÑƒÑ…ÑÑ€ ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings ЗÑгъÑзÑхуÑÐ³ÑŠÑƒÑ Ð³ÑƒÑÑ€ÑÑ…Ñм Ñ Ñ‚Ñ…Ñ‹Ð»ÑŠ];
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-м ÑƒÐ¿Ñ‰Ó€Ñ Ð½Ð°Ñ…ÑŠÑ‹Ð±Ñƒ ÑÑ‚Ñ…ÑÐ¼Ñ€Ñ Ñ Ð¶ÑуапхÑмрÑ];
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-м и верÑÐ¸Ñ Ñ‰Ó€ÑÑƒÑ ÐºÑŠÑжахÑм Ñ ÐºÑŠÑӀохугъуÑ].',
-
'about' => 'И гугъу',
'article' => 'ТхыгъÑ',
'newwindow' => '(щӀÑÑƒÑ Ð·ÑӀухын)',
@@ -203,10 +195,10 @@ $messages = array(
'history' => 'ТхыдÑ',
'history_short' => 'ТхыдÑ',
'updatedmarker' => 'Си Ñужырей ихьÑгъуÑм Ñуж къÑгъÑщӀÑÑ€ÑщӀа',
-'info_short' => 'ИнформациÑ',
'printableversion' => 'КъыдÑгъÑкӀыным теухуа верÑиÑ',
'permalink' => 'ТехьÑÐ¿Ó€Ñ Ð·ÑмыхъуÑкӀ',
'print' => 'КъыдÑгъÑкӀын',
+'view' => 'Еплъын',
'edit' => 'ГъÑÑ‚ÑÑ€Ñзын',
'create' => 'ЩIын',
'editthispage' => 'Мы напÑкIуÑцIÑ‹Ñ€ гъÑÑ‚ÑÑ€Ñзын',
@@ -214,6 +206,7 @@ $messages = array(
'delete' => 'Ихын',
'deletethispage' => 'Мы напÑкӀуÑцӀыр ихын',
'undelete_short' => 'ЗÑÑ„Ó€ÑгъÑувÑжын $1 {{PLURAL:$1|гъÑÑ‚ÑÑ€ÑзыгъуÑ|гъÑÑ‚ÑÑ€ÑзыгъуÑÑ…ÑÑ€}}',
+'viewdeleted_short' => 'Еплъын {{PLURAL:$1|$1 гъÑÑ‚ÑÑ€ÑÐ·Ñ‹Ð³ÑŠÑƒÑ Ð¸Ñ…Ð°Ð¼|$1 гъÑÑ‚ÑÑ€ÑÐ·Ñ‹Ð³ÑŠÑƒÑ Ð¸Ñ…Ð°Ñ…Ñм|$1 гъÑÑ‚ÑÑ€ÑÐ·Ñ‹Ð³ÑŠÑƒÑ Ð¸Ñ…Ñ‹Ð¶Ð°Ñ…Ñм}}',
'protect' => 'ХъумÑн',
'protect_change' => 'зÑхъуÑкӀын',
'protectthispage' => 'Мы напÑкӀуÑцӀыр хъумÑн',
@@ -297,6 +290,8 @@ $1',
'toc' => 'Ð¥ÑтхахÑÑ€',
'showtoc' => 'гъÑлъÑгъуÑн',
'hidetoc' => 'гъÑпшкӀун',
+'collapsible-collapse' => 'Ӏухын',
+'collapsible-expand' => 'зÑӀухын',
'thisisdeleted' => 'Еплъын Ð¸Ñ Ð·ÑÑ„Ó€ÑгъÑувÑжын $1?',
'viewdeleted' => 'Еплъын $1?',
'restorelink' => '{{PLURAL:$1|$1 гъÑÑ‚ÑÑ€ÑÐ·Ñ‹Ð³ÑŠÑƒÑ Ð¸Ñ…Ð°Ñ€|$1 гъÑÑ‚ÑÑ€ÑÐ·Ñ‹Ð³ÑŠÑƒÑ Ð¸Ñ…Ð°Ñ…ÑÑ€|$1 гъÑÑ‚ÑÑ€ÑÐ·Ñ‹Ð³ÑŠÑƒÑ Ð¸Ñ…Ñ‹Ð¶Ð°Ñ…ÑÑ€}}',
@@ -392,12 +387,11 @@ $1',
'protectedinterface' => 'Мы напÑкӀуÑцӀым Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ñ‚Ñ…Ñ‹Ð»ÑŠ Ñ…Ñтщ, программÑтыныгъÑм еуÑ. ХьÑуÑйн имыӀÑн щхьÑкӀÑ, и гъÑÑ‚ÑÑ€Ñзыныр Ñ‚ÐµÑƒÐ±Ñ‹Ð´Ð°ÑƒÑ Ñ‰Ñ‹Ñ‚Ñ‰.',
'editinginterface' => "'''Гу лъытÑ:''' БгъÑÑ‚ÑÑ€Ñз напÑкӀуÑцӀым интерфÑÐ¹Ñ Ñ‚Ñ…Ñ‹Ð»ÑŠ Ñ…Ñтщ, программÑтыгъÑм еуÑ.
И зÑхъуÑкӀыгъуÑм интерфÑйÑым и ÑурÑтым Ñ…ÑуÑну адрей цӀыхухÑÑ‚Ñ…Ñм щхьÑкӀÑ.
-ЗÑдзÑкӀыным шъхьÑÐºÓ€Ñ ÐºÑŠÑбгъÑÑÑбÑпыну нÑхъыфӀыр [http://translatewiki.net/wiki/Main_Page?setlang=ru translatewiki.net], MediaWiki-м и локализациÑм и проÑктщ.",
+ЗÑдзÑкӀыным шъхьÑÐºÓ€Ñ ÐºÑŠÑбгъÑÑÑбÑпыну нÑхъыфӀыр [//translatewiki.net/wiki/Main_Page?setlang=ru translatewiki.net], MediaWiki-м и локализациÑм и проÑктщ.",
'sqlhidden' => '(SQL щӀÑупщӀÑгъуÑÑ€ гъÑлъÑгъуакъым)',
'cascadeprotected' => 'ЗÑхъуÑкӀыныгъÑм Ñ‰Ñ‹Ñ…ÑŠÑƒÐ¼Ð°ÑƒÑ Ñ‰Ñ‹Ñ‚ напÑкӀуÑцӀыр, Ñ…ÑгъÑÑ…ÑŒÐ°ÑƒÑ Ñ‰Ñ‹Ñ‚ {{PLURAL:$1|ÑÑƒÐ¶ÐºÓ€Ñ Ð½Ð°Ð¿ÑкӀуÑцӀ итым| ÑÑƒÐ¶ÐºÓ€Ñ Ð½Ð°Ð¿ÑкӀуÑцӀ итхÑм}} каÑкад хъумÑныгъÑм:
$2',
'namespaceprotected' => "ÐŸÓ€Ð°Ð»ÑŠÑ ÑƒÐ¸Ó€Ñкъым напÑкӀуÑцӀ '''$1''' Ñ…ÑÑ‚Ñ…ÑÑ€ бгъÑÑ‚ÑÑ€Ñзын.",
-'customcssjsprotected' => 'Мы напÑкӀуÑцӀыр бгъÑÑ‚ÑÑ€Ñзын Ð¿Ó€Ð°Ð»ÑŠÑ ÑƒÐ¸Ó€Ñкъым, нÑмыщӀ цӀыхухÑтым и зÑгъÑзÑхуÑгъуÑÑ…ÑÑ€ зÑрхÑтым щхьÑкӀÑ.',
'ns-specialprotected' => 'Специал напÑкӀуÑцӀхÑÑ€ гъÑÑ‚ÑÑ€Ñзын хъунукъым.',
'titleprotected' => 'ÐпхуÑÐ´Ñ Ñ†Ó€Ñ Ð·Ð¸Ó€Ñ Ð½Ð°Ð¿ÑкӀуÑцӀ щӀыныр цӀыхухÑÑ‚ [[User:$1|$1]]-м триубыда.
ÐÑ€ къызхÑкӀар: "\'\'$2\'\'".',
@@ -449,13 +443,15 @@ $2',
'nocookieslogin' => '{{SITENAME}} къигъÑÑÑбÑпыр «cookies» цӀыхухÑÑ‚Ñ…ÑÑ€ къигъÑцӀыхун щхьÑкӀÑ.
Ð£Ñ Ð°Ñ€ Ð±Ð³ÑŠÐ¾Ð½ÐºÓ€Ñ‹Ñ„Ð°ÑƒÑ Ñ‰Ñ‹Ñ‚.
Ð¥ÑгъÑнÑжьи иджыри Ð·Ñ Ñ‰Ó€Ñ‹Ð¶.',
+'nocookiesfornew' => 'ЦӀыхухÑтым и аккаунтыр щӀакъым, къызхÑкӀам Ñ…ÑÑ‰Ó€Ñ‹ÐºÓ€Ñ‹Ð³ÑŠÑ Ð·ÑримыӀÑм щхьÑкӀÑ.
+ÐапÑкӀуÑцӀыр къÑгъÑщӀÑрыщӀ, «cookies»-Ñ…ÑÑ€ Ñ…ÑгъÑÐ½Ð°Ð¼Ñ ÐµÐ¿Ð»ÑŠÐ¸ иджыри Ð·Ñ Ð¸Ñ…ÑŒÑж.',
'noname' => 'ЦӀыхухÑÑ‚Ñ‹Ñ†Ó€Ñ Ñ…ÑŠÑƒÐ½ÑƒÑ€ иптхакъым.',
'loginsuccesstitle' => 'ЗыкъегъÑцӀыхуныр Ñ„Ó€Ñ‹ÑƒÑ Ð·ÑÑ„Ó€ÑкӀа.',
'loginsuccess' => "'''Иджы Ñ†Ó€Ñ \"\$1\" зепхьу улÑжьÑфыну.'''",
'nosuchuser' => '"$1" Ñ†Ó€Ñ Ð·ÐµÐ·Ñ‹Ñ…ÑŒÑ Ñ†Ó€Ñ‹Ñ…ÑƒÑ…ÑÑ‚ щыӀÑкъым.
ЦӀыхухÑтыцӀÑÑ…ÑÑ€ гурышхъу Ñ‰Ñ‹Ñ‚Ñ…Ñ Ñ…ÑŒÑрыф региÑтырымкӀÑ.
ЦӀÑÑ€ Ñ‚ÑÑ€Ñзу Ð¿Ñ‚Ñ…Ð°Ð¼Ñ ÐµÐ¿Ð»ÑŠ Ð¸Ñ [[Special:UserLogin/signup|аккаунт щӀÑÑƒÑ Ñ‰Ó€Ñ‹]].',
-'nosuchusershort' => 'ЦӀыхухÑÑ‚ "<nowiki>$1</nowiki>" щыӀÑкъым.
+'nosuchusershort' => 'ЦӀыхухÑÑ‚ "$1" щыӀÑкъым.
ЦӀÑÑ€ Ñ‚ÑÑ€Ñзу Ð¸Ñ‚Ñ…Ð°Ð¼Ñ ÐµÐ¿Ð»ÑŠ.',
'nouserspecified' => 'ЦӀыхухÑтыцӀÑÑ€ иптхÑн хуÑй.',
'login-userblocked' => 'Мы цӀыхухÑÑ‚Ñ‹Ñ€ Ñ‚ÐµÑƒÐ±Ñ‹Ð´Ð°ÑƒÑ Ñ‰Ñ‹Ñ‚Ñ‰. ИхьÑныр хуадÑкъым.',
@@ -509,7 +505,7 @@ $2',
# E-mail sending
'php-mail-error-unknown' => 'Ð¥ÑÑ‰Ó€Ñ‹ÐºÓ€Ñ‹Ð³ÑŠÑƒÑ Ð·Ñ‹Ð¼Ñ‹Ó€Ñ Ñ…ÑукъуÑÐ³ÑŠÑƒÑ PHP-Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ПÑролым и хъуÑжын',
'resetpass_announce' => 'Парол щӀÑÑ…ÐºÓ€Ñ ÑиÑтемÑм зыкъебгъÑцӀыхуа, уи ÑÐ»ÐµÐºÑ‚Ñ€Ð¾Ð½Ñ Ð¿Ð¾Ñ‡Ñ‚Ñм къыпхуÑкӀуамкӀÑ. СиÑтемÑм зыкъегъÑцӀыхуныр нÑбгъÑÑын щхьÑкӀÑ, парол Ñ‰Ó€Ñ Ñ‚ÐµÐ±Ð³ÑŠÑƒÐ²Ñн хуÑй.',
'resetpass_header' => 'Ðккаунтым и парол зÑхъуÑкӀыгъуÑ',
@@ -537,8 +533,6 @@ $2',
'extlink_tip' => 'ТехьÑÐ¿Ó€Ñ Ð·ÑIухар (зыщывмыгъÑÐ³ÑŠÑƒÐ¿Ñ‰Ñ http:// префикÑÑ‹Ñ€)',
'headline_sample' => 'ПÑалъащхьÑм и тхылъ',
'headline_tip' => 'Ð¢Ð†ÑƒÐ°Ð½Ñ Ñ‰Ñ…ÑŒÑÐ³ÑŠÑ Ð¿ÑалъащхьÑ',
-'math_sample' => 'Мыбдеж Ñ„Ð¾Ñ€Ð¼ÑƒÐ»Ñ Ð¸Ñ‚Ñ…Ñ',
-'math_tip' => 'МатематикÑм тещIÑ‹Ñ…ÑŒÐ°ÑƒÑ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»Ñ (LaTeX)',
'nowiki_sample' => 'Ð¤Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ñ‹Ñ‰Ó€Ð° тхыгъÑÑ€ мыбдеж игъÑувÑ',
'nowiki_tip' => 'Вики-форматыр Iухын',
'image_tip' => 'Файл кӀуÑцӀылъу',
@@ -619,7 +613,7 @@ $2',
'noarticletext-nopermission' => 'ДжыпÑту мы напÑкӀуÑцӀыр нÑщӀу щытщ.
УзхуÑныкъуÑм [[Special:Search/{{PAGENAME}}|и гугъ бгъуÑтыфыну]] нÑгъуÑщӀ напÑкӀуÑцӀхÑм,
Ð¸Ñ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} абым теухуа тхъыгъÑÑ…ÑÑ€].</span>',
-'userpage-userdoesnotexist' => 'Ðккаунт «$1» щыӀÑкъым. У арÑÐ·Ñ‹ÑƒÑ ÑƒÑ‰Ñ‹Ñ‚ мы напÑкӀуÑцӀыр быщӀыным Ð¸Ñ Ð·ÑпхъуÑкӀыным.',
+'userpage-userdoesnotexist' => 'Ðккаунт «<nowiki>$1</nowiki>» щыӀÑкъым. У арÑÐ·Ñ‹ÑƒÑ ÑƒÑ‰Ñ‹Ñ‚ мы напÑкӀуÑцӀыр быщӀыным Ð¸Ñ Ð·ÑпхъуÑкӀыным.',
'userpage-userdoesnotexist-view' => 'ЦӀыхухÑÑ‚ «$1»-м и аккаунтым региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ð¸Ó€Ñкъым.',
'blocked-notice-logextract' => 'Мы цӀыхухÑÑ‚Ñ‹Ñ€ иджыпÑту Ñ‚ÐµÑƒÐ±Ñ‹Ð´Ð°ÑƒÑ Ñ‰Ñ‹Ñ‚Ñ‰.
Ð˜Ñ‰Ó€Ð°Ð³ÑŠÑ‹Ð¼ÐºÓ€Ñ Ñ‚ÐµÑƒÐ±Ñ‹Ð´Ñ‹Ð³ÑŠÑ Ñ‚Ñ…Ñ‹Ð»ÑŠÑ‹Ð¼ и Ñужырей итхÑгъуÑÑ€ гъÑлъÑгъуа:',
@@ -932,7 +926,6 @@ $1",
'prefsnologin' => 'СиÑтемÑм зыкъебгъÑцӀыхуакъым',
'prefsnologintext' => 'ЦӀыхухÑтым и зÑгъÑзÑхуÑгъуÑÑ…Ñм уелÑжьын щхьÑÐºÓ€Ñ ÑиÑтемÑм <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} зыкъебгъÑцӀыхун хуÑй]</span>',
'prefs-skin' => 'ЗÑÑ„Ó€ÑгъувÑным и теухуапхъÑ',
-'prefs-math' => 'формулÑÑ…ÑÑ€ гъÑлъÑгъуÑн',
'prefs-datetime' => 'МахуÑÐ¼Ñ€Ñ Ð·ÑманымрÑ',
'prefs-personal' => 'ÐÑ‹Ð±Ð¶Ñ‹Ð³ÑŠÑƒÑ ÐºÑŠÑӀохугъуÑ',
'prefs-rc' => 'ГъÑÑ‚ÑÑ€ÑÐ·Ñ‹Ð³ÑŠÑƒÑ Ñ‰Ó€ÑÑ…ÑÑ€',
@@ -1064,10 +1057,8 @@ $1",
# Watchlist
'watchlist' => 'Си кӀÑлъыплъыгъуÑÑ…Ñм Ñ Ñ‚Ñ…Ñ‹Ð»ÑŠ',
'mywatchlist' => 'СызыкӀÑлъыплъхÑм Ñ Ñ‚Ñ…Ñ‹Ð»ÑŠ',
-'addedwatch' => 'КӀÑлъыплъыгъуÑÑ…Ñм Ñ Ñ‚Ñ…Ñ‹Ð»ÑŠÑ‹Ð¼ Ñ…Ñтхащ',
'addedwatchtext' => 'ÐапÑкӀуцӀ «[[:$1]]» уи [[Special:Watchlist|щӀÑлъыплъыгъуÑÑ…Ñм Ñ Ñ‚Ñ…Ñ‹Ð»ÑŠÑ‹Ð¼]] халъхьа.
Ð¯ÑƒÐ¶ÐºÓ€Ñ Ð¼Ñ‹ напÑкӀуÑцӀым и зÑхъуÑкӀыныгъÑÑ…ÑÐ¼Ñ€Ñ Ð°Ð±Ñ‹Ð¼ епха напÑкӀуÑцӀ тепÑÑлъыхьыныгъÑÐ¼Ñ€Ñ Ð¼Ñ‹ тхылъым къыхÑкӀху хъунущ, икӀи Ñ…ÑŒÑрыф бгъуÑÑƒÑ ÐºÑŠÑ‹Ñ…ÑгъÑÐºÓ€Ð°ÑƒÑ Ð½Ð°Ð¿ÑкӀуÑцӀ [[Special:RecentChanges|зÑхъуÑÐºÓ€Ñ‹Ð½Ñ‹Ð³ÑŠÑ Ñ‰Ó€ÑÑ…Ñм Ñ Ñ‚Ñ…Ñ‹Ð»ÑŠÑÑ…Ñм]] Ñ…Ñтыну, нÑхъыфӀу къÑлъÑгъуным щхьÑкӀÑ.',
-'removedwatch' => 'ЩӀÑÐ»ÑŠÑ‹Ð¿Ð»ÑŠÑ‹Ð³ÑŠÑƒÑ Ñ‚Ñ…Ñ‹Ð»ÑŠÑ‹Ð¼ Ñ…ÑгъÑкӀыжащ',
'removedwatchtext' => 'ÐапÑкӀуÑцӀ «[[:$1]]» уи [[Special:Watchlist|щӀÑÐ»ÑŠÑ‹Ð¿Ð»ÑŠÑ‹Ð³ÑŠÑƒÑ Ñ‚Ñ…Ñ‹Ð»ÑŠÑ‹Ð¼]] Ñ…ÑгъÑкӀа.',
'watch' => 'КӀÑлъплъын',
'watchthispage' => 'ÐапÑкӀуÑцӀым кӀÑлъыплъын',
@@ -1085,7 +1076,7 @@ $1",
'confirmdeletetext' => 'ÐапÑкІуÑцІыр (Ð¸Ñ ÑурÑÑ‚Ñ‹Ñ€) зÑрщыту ирахыным, и Ñ‚Ñ…Ñ‹Ð´Ñ Ð·ÑхъуÑкІыгъуÑри игъуÑу ущІÑлъÑуащ.
Иджыри зÑ, Ð°Ñ€Ð°Ð·Ñ‹Ð³ÑŠÑƒÑ ÐµÑ‚Ñ‹Ð½ щхьÑÐºÐ†Ñ Ð°Ð±Ñ‹Ð¼ техьÑж, уи гугъÑм къыхÑкІынур къÑзÑрыбгурыІуÑÑ€ гъÑунÑхуным щхьÑкІÑ, а быщІÑри [[{{MediaWiki:Policy-url}}]] итым и хабзÑм зÑртехуÑÑ€.',
'actioncomplete' => 'ЛÑжьыгъÑÑ€ гъÑзÑнщIащ',
-'deletedtext' => '«<nowiki>$1</nowiki>» ираха.
+'deletedtext' => '«$1» ираха.
Еплъ $2 ÑÑƒÐ¶Ñ‹Ñ€ÐµÑƒÑ Ð¸Ñ€Ð°Ñ…Ð°Ñ…Ñм ÑрахахÑм Ñ Ñ‚Ñ…Ñ‹Ð»ÑŠ.',
'deletedarticle' => 'ихащ «[[$1]]»',
'dellogpage' => 'ИрахыжахÑм Ñ Ñ‚Ñ…Ñ‹Ð»ÑŠ',
@@ -1104,7 +1095,7 @@ $1",
'protectexpiry' => 'Еухыр:',
'protect_expiry_invalid' => 'ХъумÑным и зÑманыр щиухар Ñ‚ÑÑ€Ñзкъым.',
'protect_expiry_old' => 'Ð˜ÑƒÑ…Ñ‹Ð³ÑŠÑƒÑ Ð·Ñманыр - блÑкӀам.',
-'protect-text' => "Мыбдежым уÑплъыфыну икӀи напÑкӀуÑцӀ '''<nowiki>$1</nowiki>''' и хъумÑныгъÑÑ€ зÑпхъуÑкӀыфыну.",
+'protect-text' => "Мыбдежым уÑплъыфыну икӀи напÑкӀуÑцӀ '''$1''' и хъумÑныгъÑÑ€ зÑпхъуÑкӀыфыну.",
'protect-locked-access' => "Уи аккаунтым Ð¿Ó€Ð°Ð»ÑŠÑ Ð¸Ó€ÑÑ€ ирикъукъым хъумÑныгъÑÑ€ зÑхъуÑкӀыным щхьÑкӀÑ. ЕкӀуÑкӀ зÑгъÑзÑхуÑгъуÑÑ…ÑÑ€ напÑкӀуÑцӀ '''$1''' щхьÑкÑ:",
'protect-cascadeon' => 'Мы напÑкӀуÑцӀыр хъумÑным щӀÑтщ, ар зытеухуар {{PLURAL:$1|ÑÑƒÐ¶ÐºÓ€Ñ Ð½Ð°Ð¿ÑкӀуÑцӀ итым| ÑÑƒÐ¶ÐºÓ€Ñ Ð½Ð°Ð¿ÑкӀуÑцӀ итхÑм}} каÑкад хъумÑÐ½Ñ‹Ð³ÑŠÑ Ð·Ñратетым щхьÑкӀÑ. Мы напÑкӀуÑцӀым и хъумÑныгъÑÑ€ зÑпхъуÑкӀыфыну, Ð°ÑƒÑ ÐºÐ°Ñкад хъумÑныгъÑм ар зыкӀи къыхуÑхъунукъым.',
'protect-default' => 'ХъумÑншÑщ',
@@ -1272,11 +1263,10 @@ $1",
'nextdiff' => 'КъыкIÑлъыкIÑƒÑ Ð³ÑŠÑÑ‚ÑÑ€ÑзыгъуÑÑ€ →',
# Media information
-'file-info-size' => '$1 × $2 пикÑелу, файлым и инагъыр: $3, MIME-тип: $4',
-'file-nohires' => '<small>Ин плъыфÑу къÑгъÑлъÑгъуÑн щыIÑкъым.</small>',
-'svg-long-desc' => 'SVG файл, номиналу $1 × $2 пикÑел, файлым и инагъыр: $3',
-'show-big-image' => 'СурÑÑ‚Ñ‹Ñ€ нÑÑ…ÑŠ къабзÑу',
-'show-big-image-thumb' => '<small>ЯпÑ-еплъым и инагъ: пикÑел: $1 × $2</small>',
+'file-info-size' => '$1 × $2 пикÑелу, файлым и инагъыр: $3, MIME-тип: $4',
+'file-nohires' => '<small>Ин плъыфÑу къÑгъÑлъÑгъуÑн щыIÑкъым.</small>',
+'svg-long-desc' => 'SVG файл, номиналу $1 × $2 пикÑел, файлым и инагъыр: $3',
+'show-big-image' => 'СурÑÑ‚Ñ‹Ñ€ нÑÑ…ÑŠ къабзÑу',
# Bad image list
'bad_image_list' => 'Форматыр зÑрщытын хуÑÑ€:
@@ -1297,11 +1287,17 @@ $1",
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Файлыр гъÑÑ‚ÑÑ€Ñзын, нÑгъуÑщӀ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ Ð¸ ÑÑбÑпкӀÑ',
-'edit-externally-help' => '(нÑхъыбу еплъ [http://www.mediawiki.org/wiki/Manual:External_editors илъхьÑным и тепÑÑлъыхьыгъуÑ])',
+'edit-externally-help' => '(нÑхъыбу еплъ [//www.mediawiki.org/wiki/Manual:External_editors илъхьÑным и тепÑÑлъыхьыгъуÑ])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'пÑори',
diff --git a/languages/messages/MessagesKhw.php b/languages/messages/MessagesKhw.php
new file mode 100644
index 00000000..352db14a
--- /dev/null
+++ b/languages/messages/MessagesKhw.php
@@ -0,0 +1,1083 @@
+<?php
+/** Khowar (کھوار)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Rachitrali
+ */
+
+$fallback = 'ur';
+
+$messages = array(
+# User preference toggles
+'tog-underline' => 'ربطو خط کشیدگی',
+'tog-highlightbroken' => 'غیر Ùعال روابطان شکلبندی <a href="" class="new">ھموش</a> (alternative: ھموش<a href="" class="internal">?</a>)
+کورے',
+'tog-justify' => 'خطان برابری',
+'tog-hideminor' => 'Ù…ÙˆØ¬ÙˆØ¯Û ÙˆØ®ØªÛ Ø¨ÛŒØ±Ùˆ تبدیلیان موژار معمولی ترمیماتن کھوشتاؤے',
+'tog-hidepatrolled' => 'Ù…ÙˆØ¬ÙˆØ¯Û ÙˆØ®ØªÛ Ø¨ÛŒØ±Ùˆ تبدیلیان موژار گشتی ترمیماتن کھوشتاؤے',
+'tog-newpageshidepatrolled' => 'جدید صÙحاتی ÙÛØ±Ø³ØªÛ Ú¯Ø´ØªÛŒ صÙحاتن کھوشاوے',
+'tog-extendwatchlist' => 'زیرÙنظرÙÛرستو پھیلاؤ کورے ØªØ§Ú©Û Ú¾ÛŒØ§Ø±Ø§ تھمامو ترمیمات غیچھی گیانی، Ù†Û Ú©Û ØµØ±ÙÛŒ ØªØ§Ø²Û ØªØ±ÛŒÙ†',
+'tog-usenewrc' => 'اÙØ²ÙˆØ¯Û Ø­Ø§Ù„ÛŒÛ ØªØ¨Ø¯ÛŒÙ„ÛŒØ§Ù† استعمال کورے (JavaScript ضرورت بوی)',
+'tog-numberheadings' => 'سرخیانتے تان لمبار دیت',
+'tog-showtoolbar' => 'تدوینی اوزاردانن پشاؤے ( JavaScript ضرورت بوی)',
+'tog-editondblclick' => 'Ú©Ù„Ú©Û ØµÙحاتن ترمیم (JavaScript ضرورت بوی)',
+'tog-editsection' => '[ترمیم] روابطان ذریعا سطری ترمیم کاریو Ùعال کورے',
+'tog-editsectiononrightclick' => 'سطری عنواناتا Ùروسکی Ú©Ù„Ú©Ùˆ ذریعا سطری ترمیم کاریو Ùعال ساؤزاوے',
+'tog-showtoc' => 'ÙÛرست٠مندرجات پشاؤے (3 زیات سرخی والا صÙحاتن بچے)',
+'tog-rememberpassword' => 'Ú¾ÛŒÛ Ú©Ù…Ù¾ÛŒÙˆÙ¹Ø±Ø§ Ù…Û Ø¯Ø§Ø®Ù„ کاردو معلوماتن یاد لاکھے(Ú©Ù… از Ú©Ù… $1 {{PLURAL:$1|بس|بس}})',
+'tog-watchcreations' => 'Ù…Û Ù…Ø±ØªØ¨ کاردو صÙحاتن Ù…Û Ø²ÛŒØ±ÙنظرÙÛØ±Ø³ØªÛ Ø´Ø§Ù…Ù„ کورے',
+'tog-watchdefault' => 'Ù…Û ØªØ±Ù…ÛŒÙ… کاردو صÙحاتن Ù…Û Ø²ÛŒØ±ÙنظرÙÛØ±Ø³ØªÛ Ø´Ø§Ù…Ù„ کورے',
+'tog-watchmoves' => 'آوا Ú©ÛŒÛ ØµÙحاتن Ú©Û Ù…Ù†ØªÙ‚Ù„ کومان ھتیتان Ù…Û Ø²ÛŒØ±ÙنظرÙÛØ±Ø³ØªÛ Ø´Ø§Ù…Ù„ کورے',
+'tog-watchdeletion' => 'آوا Ú©ÛŒÛ ØµÙحاتن Ú©Û Ø­Ø°Ù Ø¢Ø±ÛŒØªØ§Ù…ØŒ ھتیتان Ù…Û Ø²ÛŒØ±ÙنظرÙÛØ±Ø³ØªÛ Ø´Ø§Ù…Ù„ کورے',
+'tog-minordefault' => 'تھمامو ترمیماتن ÛÙ…ÛŒØ´Û Ø¨Ø·ÙˆØ±Ù Ù…Ø¹Ù…ÙˆÙ„ÛŒ ترمیم نشانزد کورے',
+'tog-previewontop' => 'تدوینی خاناری پروشٹی نمائش پشاؤے',
+'tog-previewonfirst' => 'آویلو ترمیما نمائش پشاؤے',
+'tog-nocache' => 'بطن کاری صÙØ­ÛÙˆ غیر Ùعال ساؤزاوے',
+'tog-enotifwatchlistpages' => 'Ú©ÛŒØ§ÙˆØªÚ©Û Ù…Û Ø²ÛŒØ±ÙنظرÙÛرستÛÙˆ Ú©ÛŒÛ ØµÙØ­Ûا تبدیلی واقع Ú©Û ÛÙˆÛŒ تھے متے بشلی کغاز انزاوے',
+'tog-enotifusertalkpages' => 'Ú©ÛŒØ§ÙˆØªÚ©Û Ù…Û ØªØ¨Ø§Ø¯Ù„Û‚ خیالو صÙØ­Û ØªØ¨Ø¯ÛŒÙ„ÛŒ واقع Ú©Û Ûویی تھے متے بشلی کغاز(ای میل) انÚاوے جما',
+'tog-enotifminoredits' => 'صÙØ­Ø§ØªÛ Ù…Ø¹Ù…ÙˆÙ„ÛŒ ترمیماتن بارا دی متے بشلی کغاز انزاوے',
+'tog-enotifrevealaddr' => 'خبرداری بشلی کغازا Ù…Û Ø§ÛŒ میل پتو ظاÛر کورے',
+'tog-shownumberswatching' => 'لوڑاک ممبرانن تعدادان پشاؤے',
+'tog-oldsig' => 'Ù…ÙˆØ¬ÙˆØ¯Û Ø¯Ø³ØªØ®Ø·Ùˆ نمائش:',
+'tog-fancysig' => '(Ø³Ø§Ø¯Û Ø¯Ø³Ø®Ø· بلا خودکار ربط)',
+'tog-externaleditor' => 'ÛÙ…ÛŒØ´Û Ø¨ÛŒØ±ÙˆÙ†ÛŒ تدوین کار استعمال کورے (صرÙÛŒ ماÛرینن بچے، ھمو بچے کمپیوٹرا خاص ترتیبات درکار بونیان)',
+'tog-uselivepreview' => 'براÛ٠راست نمائش استعمال کورے (JavaScript ضرورت بوی)',
+'tog-forceeditsummary' => 'کیاوتکی آوا ترمیمی خلاصو خالی پیڅھیتام تھے متے لو دیت',
+'tog-watchlisthideown' => 'زیرÙنظرÙÛØ±Ø³ØªÛ Ù…Û ØªØ±Ù…ÛŒÙ…Ø§ØªÙ† کھوشاوے',
+'tog-watchlisthidebots' => 'زیرÙنظرÙÛØ±Ø³ØªÛ Ù…Û Ø±ÙˆØ¨Ø§Ù„ÛŒ ترمیماتن کھوشتاوے',
+'tog-watchlisthideminor' => 'زیرÙنظرÙÛرستاری معمولی ترمیماتن کھوشتاوے',
+'tog-watchlisthideliu' => 'زیرÙنظرÙÛرستاری Ø¯Ø§Ø®Ù„Ù Ù†ÙˆØ´ØªÛ Ø´Ø¯Û ØµØ§Ø±Ùینان ترمیماتن کھوشتاوے',
+'tog-watchlisthideanons' => 'زیرÙنظرÙÛرستاری نامعلوم صارÙینان ترمیماتن کھوشتاوے',
+'tog-watchlisthidepatrolled' => 'زیرÙنظرÙÛرستاری گشت Ø´Ø¯Û ØªØ±Ù…ÛŒÙ…Ø§ØªÙ† کھوشتاوے',
+'tog-ccmeonemails' => 'دیگر ممبراننتے ارسال کاردو بشلی کغازان نقلان متے انزاوے',
+'tog-diffonly' => 'مختلÙاتن موڑا صÙحو مشمولاتن مو پشاوے',
+'tog-showhiddencats' => 'پوشیدÛ(کھوشت) Ø²Ù…Ø±Û Ø¬Ø§ØªÙ† پشاوے',
+
+'underline-always' => 'Ûمیش',
+'underline-never' => 'کیاوت دی نو',
+'underline-default' => 'براوزرو Ø·Û’ شدÛ',
+
+# Font style option in Special:Preferences
+'editfont-style' => 'خانۂ تدوینو انداز٠تحریر:',
+'editfont-monospace' => 'یکÙضائی نویسÛ',
+
+# Dates
+'sunday' => 'یک شمبے',
+'monday' => 'دو شمبے',
+'tuesday' => 'Ø³Û Ø´Ù…Ø¨Û’',
+'wednesday' => 'چار شمبے',
+'thursday' => 'پنج شمبے',
+'friday' => 'آدینÛ',
+'saturday' => 'شمبے',
+'sun' => 'یک شمبے',
+'mon' => 'دو شمبے',
+'tue' => 'سے شمبے',
+'wed' => 'چار شمبے',
+'thu' => 'پنچ شمبے',
+'fri' => 'آدینÛ',
+'sat' => 'شمبے',
+'january' => 'جنوری',
+'february' => 'Ùروری',
+'march' => 'مارچ',
+'april' => 'اپريل',
+'may_long' => 'مئی',
+'june' => 'جون',
+'july' => 'جولائی',
+'august' => 'اگست',
+'september' => 'ستمبر',
+'october' => 'اکتوبر',
+'november' => 'نومبر',
+'december' => 'دسمبر',
+'january-gen' => 'جنوری',
+'february-gen' => 'Ùروری',
+'march-gen' => 'مارچ',
+'april-gen' => 'اپریل',
+'may-gen' => 'مئی',
+'june-gen' => 'جون',
+'july-gen' => 'جولائی',
+'august-gen' => 'اگست',
+'september-gen' => 'ستمبار',
+'october-gen' => 'اکتوبار',
+'november-gen' => 'نومبار',
+'december-gen' => 'دسمبار',
+'jan' => 'جنوری',
+'feb' => 'Ùروری',
+'mar' => 'مارچ',
+'apr' => 'اپریل',
+'may' => 'مئی',
+'jun' => 'جون',
+'jul' => 'جولائی',
+'aug' => 'اگست',
+'sep' => 'ستمبر',
+'oct' => 'اکتوبر',
+'nov' => 'نومبر',
+'dec' => 'دسمبر',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|زمرÛ|Ø²Ù…Ø±Û Ø¬Ø§Øª}}',
+'category_header' => 'Ø²Ù…Ø±Û "$1" مضمون\'',
+'subcategories' => 'ذیلی Ø°Ù…Ø±Û Ø¬Ø§Øª',
+'category-media-header' => 'زمرا "$1" میڈیا',
+'category-empty' => 'â€˜â€˜Ú¾ÛŒÛ Ø²Ù…Ø±Ø§ ھنیسے Ú©ÛŒÛ ØµÙØ­Û ÛŒØ§ میڈیا موجود نیکی.’’',
+'hidden-categories' => '{{PLURAL:$1|کھوشت زمرÛ|کھوشت Ø²Ù…Ø±Û Ø¬Ø§Øª}}',
+'hidden-category-category' => 'کھوشت Ø²Ù…Ø±Û Ø¬Ø§Øª',
+'category-subcat-count' => '{{PLURAL:$2|اÙس Ø²Ù…Ø±Û Ù…ÛŒÚº صر٠درج ذیل ذیلی Ø²Ù…Ø±Û ÛÛ’.|اÙس Ø²Ù…Ø±Û Ù…ÛŒÚº درج ذیل {{PLURAL:$1|ذیلی زمرÛ|$1 ذیلی Ø²Ù…Ø±Û Ø¬Ø§Øª}}, Ú©Ù„ $2 میں سے.}}',
+'category-subcat-count-limited' => 'Ú¾ÛŒÛ Ø²Ù…Ø±Ø§ درج ذیل {{PLURAL:$1|ذیلی Ø²Ù…Ø±Û ÛÛ’|$1 ذیلی Ø²Ù…Ø±Û Ø¬Ø§Øª شینی}}.',
+'category-article-count' => '{{Plural:$2|مضمون شینی|{{Plural:$1|صÙحا|صÙحا}} $2 Ú¾ÛŒÛ Ø²Ù…Ø±Ø§ مضمون شینی}}',
+'listingcontinuesabbrev' => 'جاری',
+'index-category' => 'نو انڈیکس صÙحات',
+'noindex-category' => 'نو انڈیکس صÙحات',
+
+'about' => 'تعارÙ',
+'article' => 'صÙØ­Û‚ مشمول',
+'newwindow' => 'نوغ کھیڑکیا',
+'cancel' => 'کھینسل',
+'moredotdotdot' => 'وا...',
+'mypage' => 'Ù…Û ØµÙØ­Û',
+'mytalk' => 'Ù…Û Ù…Ø´Ù‚ÙˆÙ„Ú¯ÛŒ',
+'anontalk' => 'بچے لو IP Ú¾ÛŒÛ',
+'navigation' => 'رÛنمائی',
+'and' => '&#32;وا',
+
+# Cologne Blue skin
+'qbfind' => 'تلاش کورے',
+'qbbrowse' => 'Browse/تصÙّح',
+'qbedit' => 'ترمیم',
+'qbpageoptions' => 'Ú¾ÛŒÛ ØµÙØ­Û',
+'qbpageinfo' => 'Ù…ÙÛوم',
+'qbmyoptions' => 'Ù…Û ØµÙحات',
+'qbspecialpages' => 'خاص صÙحات',
+'faq' => 'عام معلومات',
+'faqpage' => 'Project:معلومات٠عامÛ',
+
+# Vector skin
+'vector-action-addsection' => 'نوغ موضوع',
+'vector-action-delete' => 'بوغاوے',
+'vector-action-move' => 'منتقل کورے',
+'vector-action-protect' => 'محÙوظ کورے',
+'vector-action-unprotect' => 'غیر محÙوظ',
+'vector-view-create' => 'ساوزاوے',
+'vector-view-edit' => 'ایڈٹ کورے',
+'vector-view-history' => 'تاریخچÛ',
+'vector-view-view' => 'راوے',
+'vector-view-viewsource' => 'مسودÛ',
+'actions' => 'ایکشنز',
+'namespaces' => 'نامان ژاغÛ',
+'variants' => 'الگ',
+
+'errorpagetitle' => 'خطاء',
+'returnto' => 'آچی $1۔',
+'tagline' => '{{SITENAME}}ری',
+'help' => 'مدد',
+'search' => 'تلاش',
+'searchbutton' => 'تلاش کورے',
+'go' => 'Go/بوغے',
+'searcharticle' => 'Go/بوغے',
+'history' => 'ØªØ§Ø±ÛŒØ®Ú†Û Ø¡ صÙØ­Û',
+'history_short' => 'تاریخچÛ',
+'printableversion' => 'قابل طبع نسخÛ',
+'permalink' => 'مستقل لنک',
+'print' => 'طباعت',
+'view' => 'لوڑے',
+'edit' => 'ترمیم',
+'create' => 'ساوزاوے',
+'editthispage' => 'Ú¾ÛŒ صÙØ­Ûا ترمیم کورے',
+'create-this-page' => 'Ú¾ÛŒÛ ØµÙحو ساوزاوے',
+'delete' => 'بوغاوے',
+'deletethispage' => 'Ú¾ÛŒÛ ØµÙØ­ÛÙˆ بوغاوے',
+'undelete_short' => 'بحال {{PLURAL:$1|ای ترمیم|$1 ترامیم}}',
+'protect' => 'محÙوظ',
+'protect_change' => 'تبدیل کورے',
+'protectthispage' => 'Ú¾ÛŒÛ ØµÙحو محÙوظ کورے',
+'unprotect' => 'غیر محÙوظ',
+'unprotectthispage' => 'Ú¾ÛŒÛ ØµÙØ­ÛÙˆ غیر محÙوظ کورے',
+'newpage' => 'نوغ صÙØ­Û',
+'talkpage' => 'Ú¾ÛŒÛ ØµÙØ­Ûا تبادلۂ خیال کورے',
+'talkpagelinktext' => 'مشقولگی',
+'specialpage' => 'خصوصی صÙØ­Û',
+'personaltools' => 'ذاتی سماند',
+'postcomment' => 'پروشٹیو حصّÛ',
+'articlepage' => 'مندرجاتی صÙØ­ÛÙˆ لوڑے',
+'talk' => 'تبادلÛÙ´ خیال',
+'views' => 'خیالات',
+'toolbox' => 'ٹول بکس',
+'userpage' => 'یوزرو صÙحو لوڑے',
+'projectpage' => 'کھوار منصوبو صÙØ­ÛÙˆ لوڑے',
+'imagepage' => 'ھوٹوو صÙحو لوڑے',
+'mediawikipage' => 'پیغامو صÙØ­ÛÙˆ لوڑے',
+'templatepage' => 'سانچو صÙØ­ÛÙˆ لوڑے',
+'viewhelppage' => 'مددو صÙØ­ÛÙˆ لوڑے',
+'categorypage' => 'زمرÛ‌جاتی صÙØ­ÛÙˆ لوڑے',
+'viewtalkpage' => 'تبادلۂ خیالو صÙØ­ÛÙˆ لوڑے',
+'otherlanguages' => 'خور زبانا',
+'redirectedfrom' => "'($1 خور ژاغار گنونو ھوی)',",
+'redirectpagesub' => 'Ú¾ÛŒÛ ØµÙحو خور ژاغا آلونو بیتی شیر',
+'lastmodifiedat' => 'آخری بار تدوین $2, $1 کورونو ھوی',
+'viewcount' => 'Ú¾ÛŒÛ ØµÙØ­Û Ú¯ÛŒÙˆÙ†Ùˆ Ú¾ÙˆÛŒ {{PLURAL:$1|ای‌بار|$1 مرتبÛ}}',
+'protectedpage' => 'محÙوظ Ø´Ø¯Û ØµÙØ­Û',
+'jumpto' => 'Ú¾ÛŒÛ ÙˆÙˆØ´Ú©ÛŒ څروٹھاوے',
+'jumptonavigation' => 'رÛنمائی',
+'jumptosearch' => 'تلاش',
+
+# 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:کھوار ویکیپیڈیو تعارÙ',
+'copyright' => 'تمام مواد $1 ØªØ­ØªÛ Ù…ÛŒØ§Ù†Ø³Ø§Ø± شیر',
+'copyrightpage' => '{{ns:project}}:حقوق تصانیÙ',
+'currentevents' => 'ھنونو واقعات',
+'currentevents-url' => 'Project:ھنونو واقعات',
+'disclaimers' => 'اعلانات',
+'disclaimerpage' => 'Project:عام کھوار اعلان',
+'edithelp' => 'مدد براۓ ترمیم',
+'edithelppage' => 'Help:ترمیم',
+'helppage' => 'Help:Ùھرست',
+'mainpage' => 'آویلو صÙØ­Û',
+'mainpage-description' => 'سرورق',
+'policy-url' => 'Project:حکمت٠عملی',
+'portal' => 'مھراکÛ',
+'portal-url' => 'Project:مھراکÛ',
+'privacy' => 'رازان Ùاش نو کوریکو بچے اصول',
+'privacypage' => 'Project:رازان Ùاش نو کوریکو بچے اصول',
+
+'badaccess' => 'خطائے اجازت',
+'badaccess-group0' => 'تو Ú¾ÛŒÛ Ú©ÙˆØ±Ù…Ùˆ کوریکو Ù…Ùجاز نو',
+'badaccess-groups' => 'ØªÛ Ø¯Ø±Ø®Ø§Ø³ کاردو عمل {{PLURAL:$2|گروÛ|گروÛان موژار ای}}: $1 ممبارا پت محدود شیر',
+
+'versionrequired' => 'میڈیا ویکیو $1 نسخÛÙˆ لازمی ضرورت شیر',
+'versionrequiredtext' => 'Ú¾ÛŒÛ ØµÙØ­ÛÙˆ استعمال کوریکو بچے میڈیاویکیو $1 نسخÛÙˆ ضرورت شیر.
+
+[[Special:Version|version page]]',
+
+'ok' => 'ٹھیک شیر',
+'pagetitle-view-mainpage' => '{{SITENAME}}',
+'retrievedfrom' => '‘‘$1’’ نقل کاردو',
+'youhavenewmessages' => 'ØªÛ Ø¨Ú†Û’ ای $1 شیر۔ ($2)',
+'newmessageslink' => 'نوغ پیغامات',
+'newmessagesdifflink' => 'تـجـدیـد مـاقـبل آخـراری Ùـرق',
+'youhavenewmessagesmulti' => 'Ø¡$1 ØªÛ Ø¨Ú†Û’ نوغ نوغ پیغامات شینی',
+'editsection' => 'ترمیم',
+'editold' => 'ترمیم',
+'viewsourceold' => 'مآخذو لوڑے',
+'editlink' => 'تدوین کورے',
+'viewsourcelink' => 'مآخذو لوڑے',
+'editsectionhint' => 'تدوینÙÙˆ حصّÛ: $1',
+'toc' => 'ÙÛرست',
+'showtoc' => 'پشاوے',
+'hidetoc' => 'کھوشتاوے',
+'thisisdeleted' => 'لوڑے یا بحال کورے $1',
+'viewdeleted' => 'لوڑے $1؟',
+'restorelink' => '{{PLURAL:$1|ای ترمیم حذ٠ÛÙˆÛŒ|$1 ترامیم حذ٠Ûونی}}',
+'site-rss-feed' => '$1 آر.ایس.ایس Ùیڈ',
+'site-atom-feed' => '$1 اٹوم Ùیڈ',
+'page-rss-feed' => '$1 آر ایس ایس Ùیڈ',
+'page-atom-feed' => '$1 آٹوم Ùیڈ',
+'red-link-title' => '
+$1 (صÙØ­Û Ù…ÙˆØ¬ÙˆØ¯ نیکی)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'صÙØ­Û',
+'nstab-user' => 'یوزرو صÙØ­Û',
+'nstab-media' => 'صÙØ­Û‚ میڈیا',
+'nstab-special' => 'خاص صÙØ­Û',
+'nstab-project' => 'صÙØ­Û‚ کھوار منصوبÛ',
+'nstab-image' => 'مسل',
+'nstab-mediawiki' => 'پیغام',
+'nstab-template' => 'سانچÛ',
+'nstab-help' => 'مدد',
+'nstab-category' => 'زمرÛ',
+
+# Main script and global functions
+'nosuchaction' => 'Ú©ÛŒÛ Ø¯ÛŒ عمل نیکی',
+'nosuchactiontext' => 'URL ووشکیاری مختص کاردو عمل درست نو.
+ØªÛ URL غلط نیویشیتاو، یا Ú©ÛŒÛ ØºÛŒØ± صحیح ربطو پیرویو کوری آسوس.
+{{ھموش Ù†Ø§Ù…Û SITENAME زیر٠استعمال مصنع لطیÙا چاریو نشاندÛیو دی Ø§Ù†Ø¯ÛŒØ´Û Ø´ÛŒØ±}}.',
+'nosuchspecialpage' => 'Ú©ÛŒÛ ÛØ´ خاص صÙØ­Û Ù†ÛŒÚ©ÛŒ',
+'nospecialpagetext' => "\"<big>'''تو ای ناقص خاص صÙØ­ÛÙˆ بچے درخاس کوری آسوس.'''</big>
+
+{{درست خاص صÙحاتن ای Ùھرست [[Special:SpecialPages|{{int:specialpages}}]] لوڑیکو بوس}}.\"",
+
+# General errors
+'error' => 'Error/خطاء',
+'databaseerror' => 'خطائے ڈیٹابیس',
+'dberrortext' => 'ÚˆÛŒÙ¹Ø§Ø¨ÛŒØ³Û Ø§ÛŒ خطائے نحوی واقع بیتی شیر.
+ھمو وجھین مصنع‌لطیÙا چاریو نشاندÛیو Ø§Ù†Ø¯ÛŒØ´Û Ø´ÛŒØ±.
+Ø¢Ú†Ú¾Ùˆ Ø³Ø¹ÛŒâ€ŒØ´Ø¯Û ÚˆÛŒÙ¹Ø§Ø¨ÛŒØ³ÛŒ استÙØ³Ø§Ø±Û Ú¾ÛŒÛ Ø§ÙˆØ´ÙˆÛŒ:
+<blockquote><tt>$1</tt></blockquote>
+Ùعلیتو موژار "<tt>$2</tt>".
+MySQL خطائی جواب پرائے "<tt>$3: $4</tt>".',
+'dberrortextcl' => 'ڈیٹابیسو استÙØ³Ø§Ø±Û Ø§ÛŒ خطائے نحوی واقع بیتی شیر.
+Ø¢Ú†Ú¾Ùˆ Ø³Ø¹ÛŒâ€ŒØ´Ø¯Û ÚˆÛŒÙ¹Ø§Ø¨ÛŒØ³ÛŒ استÙØ³Ø§Ø±Û Ú¾ÛŒÛ Ø§ÙˆØ´ÙˆÛŒ:
+"$1"
+"$2" Ùعلیتو موژار.
+MySQL جواب٠خطاء پرائے "$3: $4"',
+'laggedslavemode' => 'Warning: Page may not contain recent updates.
+خبردار: منکھن شیر Ú©Û ØµÙØ­Ûا Ù…ÙˆØ¬ÙˆØ¯Û Ø¨ØªØ§Ø±ÛŒØ®Û Ø¬Ø§Øª شامل نو بونی',
+'readonly' => 'ڈیٹابیسا قل٠لیگی شیر',
+'enterlockreason' => 'قلÙÙˆ بچے Ú©ÛŒÛ ÙˆØ¬Û Ø¯Ø±Ø¬ کورے، Ø¨Ø´Ù…ÙˆÙ„Ù ØªØ®Ù…ÛŒÙ†Û Ú©Û Ù‚Ù„ÙÙˆ کیاوت کھولاو کورونو بوئے',
+'readonlytext' => 'ڈیٹابیس شاید معمولو اصلاحو بچے نوغ اندراجاتن اوچے خور ترمیماتن بچے قل٠کورونو بیتی شیر ھیغار Ø¢Ú†ÛŒ Ú¾ÛŒÛ Ø¹Ø§Ù… Ø­Ø§Ù„ØªÛ Ú¯ÙˆÛŒ.
+منتظم، کا Ú©Û Ù‚Ù„Ù Ù„ÛŒÚ¯ÛŒÛ’ آسور، Ú¾ÛŒÛ ØªÙصیلو ÙراÛÙ… کوری آسور: $1',
+'missing-article' => '\'ڈیٹابیس Ú©ÛŒÛ ØµÙØ­ÛÙˆ متنو بنام "$1" $2 نو لیتائے کھیو Ú©Û Ú¾Ùˆ لیلک اوشوئے.
+
+Ú¾ÛŒÛ Ø¹Ù…ÙˆÙ…Ø§Ù‹ Ú©ÛŒÛ ØµÙØ­ÛÙˆ تاریخی یا پرانو Ø­Ø°Ù Ø´Ø¯Û Ø±Ø¨Ø·Ùˆ وجÛÙˆ سورا دی بوئے.
+
+اگر Ú¾ÛŒÛ ÙˆØ¬Û Ù†ÙˆØŒ تھے ØªÛ Ù…ØµÙ†Ø¹â€ŒÙ„Ø·ÛŒÙا چاری داخل بیتی آسور.
+برائے Ù…Ûربانی، URL Ú¾Ùˆ نشان دیتی Ú©ÛŒÛ
+[[Special:ListUsers/sysop|منتظمو]] سوم ھے بارا کھوارا کغاز نیویشے.\',',
+'missingarticle-rev' => '(نظرثانی#: $1)',
+'missingarticle-diff' => '(مختلÙات: $1, $2)',
+'readonly_lag' => 'ڈیٹابیس خودکار طورا قل٠کورونو بیتی شیر ØªØ§Ú©Û Ù…Ø§ØªØ­Øª ڈیٹابیسی معیلاتن Ø¯Ø±Ø¬Û Ø¢Ù‚Ùˆ بوئے',
+'internalerror' => 'خطائے اندرونی',
+'internalerror_info' => 'خطائے اندرونی: $1',
+'filecopyerror' => '"$1" مسلو "$2" نقل کورونو نو ھوی',
+'filerenameerror' => 'مسلو "$1" و "$2" خور نم دیونو نو ھوی',
+'filedeleteerror' => 'مسلو "$1" حذ٠کورونو نو ھوی',
+'directorycreateerror' => 'رÛÙ†Ø§Ù…Ú†Û "$1" تخلیق کورونو نو Ú¾ÙˆÛŒ',
+'filenotfound' => 'مسلو "$1" تلاش کورونو نو ھوی',
+'fileexistserror' => 'مسلو "$1" نیویشکا قاصر، مسل موجود',
+'unexpected' => 'غیرمتوقع قدر: "$1"="$2"',
+'formerror' => 'خطا: کغاز انÚینو نو Ú¾ÙˆÛŒ',
+'badarticleerror' => 'Ú¾ÛŒÛ ØµÙØ­Ûا Ú¾ÛŒÛ Ø¹Ù…Ù„ انجام دیونو نو ھوی۔',
+'cannotdelete' => 'صÙØ­ÛÙˆ $1 ڈیلیٹ کورونو نو ھوی۔ (Ú¾ÛŒÛ Ù…Ù†Ú©Ú¾Ù† شیر Ú©Û Ú¾Ù…Ùˆ پروشٹی تان کا ڈیلیٹ کوری آسور۔)',
+'badtitle' => 'خراب عنوان',
+'badtitletext' => "'درخاس Ø´Ø¯Û ØµÙØ­ÛÙˆ عنوان ناقص، خالی، یا Ú©ÛŒÛ ØºÙ„Ø· ربط Ø´Ø¯Û Ø¨ÛŒÙ† لسانی یا بین ویکی عنوان شیر.
+شاید ھیارا ای یا زیات ھش حرو٠موجود شینی Ú©Û Ú¾ÛŒØª عنوانا استعمال نو بونیان.',",
+'perfcached' => 'ذیلی ڈیٹا ابطن Ø´Ø¯Û Ø´ÛŒØ± وا ھمو بیکا امکان شیر',
+'perfcachedts' => 'ذیلی ڈیٹا ابطن Ø´Ø¯Û Ø´ÛŒØ± وا آخری بار ھمو بتاریخیت $1 کورونو Ûوئے.',
+'querypage-no-updates' => 'Ú¾ÛŒÛ ØµÙØ­ÛÙˆ بچے بتاریخات ÙÛŒ الحال ناقابل ساوزینو بیتی شینی.
+ھمو ڈیٹا ھنیسے ØªØ§Ø²Û Ú©ÙˆØ±ÙˆÙ†Ùˆ نو بوئے',
+'viewsource' => 'مسودو لوڑے',
+'viewsourcefor' => 'بچے $1',
+'actionthrottledtext' => 'بطور٠ای ضدسپم تدبیر، ØªÛ Ù…Ø®ØªØµØ§Ø± ÙˆØ®ØªÛ Ú©Ø¦ÛŒ دÙØ¹Û Ú¾ÛŒÛ Ú©ÙˆØ±ÙˆÙ…Ùˆ کوریکو وجھین محدود کورونو Ûوئے، وا تو Ú¾ÛŒÛ Ø­Ø¯Ùˆ پار کوری آسوس.
+براÛ٠کرم، ای کما میلیٹ Ø¢Ú†Û Ú©Ú¾ÙˆØ´Ø´ کورے',
+'protectedpagetext' => 'Ú¾ÛŒÛ ØµÙØ­ÛÙˆ تدویناری محÙوظ لاکھیکو بچے قل٠لیگینو بیتی شیر',
+'viewsourcetext' => 'تو صر٠مضمونو لوڑیکو بوس وا ھو نقل کوریکو بوس:',
+'protectedinterface' => 'Ú¾ÛŒÛ ØµÙØ­Û Ù…ØµÙ†Ø¹â€ŒÙ„Ø·ÛŒÙÙˆ بچے سطح‌البینی متن ÙراÛÙ… کورویان، وا ناجائزاستعمالو سدÙبابو بچے ھمو قل٠لیگینو بیتی شیر',
+'editinginterface' => "\"'''خبردار:''' تو ای ھش صÙØ­ÛÙˆ تدوینو کوروسان Ú©Û Ú¾ÛŒÛ Ù…ØµÙ†Ø¹â€ŒÙ„Ø·ÛŒÙÙˆ بچے سطح‌البینی متن ÙراÛÙ… کورویان۔ Ú¾ÛŒÛ ØµÙØ­Ûا کاردو ترمیم، دیگر ممبارانن بچے سطح‌البینو تبدیل کوروی۔
+براÛ٠کرم، ØªØ±Ø¬Ù…Û Ú©ÙˆØ±ÛŒÚ©Ùˆ بچے [//translatewiki.net/wiki/Main_Page?setlang=en '''بیٹاویکی'''] (میڈیاویکی مقامیانی منصوبو) استعمال کورے.\",",
+'sqlhidden' => '(SQL استÙØ³Ø§Ø±Û Ú©Ú¾ÙˆØ´Øª)',
+'namespaceprotected' => "\"تتے '''\$1''' Ùضائے Ù†Ø§Ù…Û ØµÙحاتن تدوینو کوریکو اÙجازت نیکی.\",",
+'ns-specialprotected' => 'خاص صÙحاتن تدوین کوریکو اجازت نیکی',
+'titleprotected' => 'Ú¾ÛŒÛ Ø¹Ù†ÙˆØ§Ù†Ùˆ [[User:$1|$1]] تخلیق کوریکاری محÙوظ کوری آسور.
+ÙˆØ¬Û Ú¾ÛŒÛ Ø´ÛŒØ±: "\'\'$2\'\'"',
+
+# Virus scanner
+'virus-badscanner' => "\"خراب وضعیت: نوژان وائرسی Ù…Ùراس: ''\$1''\",",
+'virus-scanfailed' => 'تÙریس ناکام (رمز $1)',
+'virus-unknownscanner' => 'نوژان ضد وائرس:',
+
+# Login and logout pages
+'logouttext' => "'''ھنیسے تو خارج بیتی آسوس'''<br />
+تو Ø®ÙÛŒ الاسم {{SITENAME}} استعمال جاری لاکھیکو بوس، یا Ø¯ÙˆØ¨Ø§Ø±Û Ú¾ÛŒÛ Ù†Ø§Ù…Ùˆ یا مختل٠نامان سورا داخل دی بیکو بوس۔ Ú¾ÛŒÛ ÛŒØ§Ø¯ آوری کورے Ú©Û Ø§ÛŒ کما صÙحات ھش [[Special:UserLogin|دوباری لاگن بوس]] غیچھی گونی Ú©Û ØªÙˆ ھنیسے خارج نو بیتی آسوس، Ú©Ù„Û Ù¾Øª Ú©Û ØªÙˆ تان تÙØµØ­Û (براؤزرو) ابطن (cache) صا٠نوکوروس۔\",",
+'welcomecreation' => '== رحمت عزیز چترالی تتے خوشان گیے ریران، $1 ! ==
+
+ØªÛ Ú©Ú¾Ø§ØªÛ Ø³Ø§ÙˆØ²ÛŒÙ†Ùˆ بیتی شیر تو تان [[Special:Preferences|{{SITENAME}} ترجیحات]]Ù† مرتب کوریکو مو روخڅے.',
+'yourname' => 'اسم٠رکنیت',
+'yourpassword' => 'کلمۂ شناخت(پاسورڈ)',
+'yourpasswordagain' => 'کلمۂ شناخت(پاسورڈو)Ø¯ÙˆØ¨Ø§Ø±Û Ù†ÛŒÙˆÛŒØ´Û’',
+'remembermypassword' => '!!Rachitrali!!Ù…Û ÛŒØ§Ø¯ لاکھے (Ú©Ù… از Ú©Ù… $1 {{PLURAL:$1|بس|بس}})',
+'yourdomainname' => 'ØªÛ ÚˆÙˆÙ…ÛŒÙ†',
+'externaldberror' => 'یا تھے توثیقی ڈیٹابیسا خطا واقع بیتی شیر یا تتے بیریو کھاتو بتاریخ کوریکو اÙجازت نیکی',
+'login' => 'داخل بوس',
+'nav-login-createaccount' => 'Ú©Ú¾Ø§ØªÛ Ú©Ú¾ÙˆÙ„Ø§Ùˆ کورے یا اندراج کورے',
+'loginprompt' => '{{SITENAME}} کھوار ویکیپیڈیا داخلو بچے ØªÛ Ø³ÙˆÙ… پاسورڈ بیک ضروری شیر',
+'userlogin' => 'Ú©Ú¾Ø§ØªÛ Ø³Ø§ÙˆØ²Ø§ÙˆÛ’ یا اندراج کورے',
+'userloginnocreate' => 'داخل Ù†ÙˆØ´ØªÛ Ø¨ÙˆØ³',
+'logout' => 'لاگ آوٹ',
+'userlogout' => 'لاگ آوٹ',
+'notloggedin' => 'Ø¯Ø§Ø®Ù„Û Ù†Ùˆ ÛÙˆÛŒ',
+'nologin' => 'تو Ú©Ú¾Ø§ØªÛ Ù†Ùˆ ساوزے آسوسا؟ $1',
+'nologinlink' => 'Ú©Ú¾Ø§ØªÛ Ø³Ø§ÙˆØ²Ø§ÙˆÛ’',
+'createaccount' => 'Ú©Ú¾Ø§ØªÛ Ú©Ú¾ÙˆÙ„Ø§Ùˆ کورے',
+'gotaccount' => "پروشٹی تان کھاتا ساوزینو بیتی شیر؟'''$1'''.",
+'gotaccountlink' => 'لاگن بوس',
+'userlogin-resetlink' => 'آوا داخل بیکو بچے تان تÙصیلاتن روخڅی اسوم',
+'createaccountmail' => 'بذریعۂ بشلی ڈاک',
+'createaccountreason' => 'وجÛ:',
+'badretype' => 'درج Ø´Ø¯Û Ú©Ù„Ù…Û‚ شناخت اصلو مطابقت نو لاکھویان',
+'userexists' => 'تو Ú©Û Ù†Ø§Ù…Ùˆ Ú©Û Ø¯Ø±Ø¬ کوری آسوس ھیس پروشٹیاری Ø§Ø³ØªØ¹Ù…Ø§Ù„Û Ø´ÛŒØ±Û” مختل٠نام استعمال کورے',
+'loginerror' => 'داخلا غلطی',
+'createaccounterror' => 'Ú©Ú¾Ø§ØªÛ $1 ساوزینو نو بویان',
+'noname' => 'تو تان صحیح اسم صارÙÙˆ داخل نو آرو',
+'loginsuccesstitle' => 'Ø¯Ø§Ø®Ù„Û Ú©Ø§Ù…ÛŒØ§Ø¨',
+'loginsuccess' => "'''ھانیسے تو {{SITENAME}} بنام \"\$1\" داخل بیتی آسوس'''",
+'nosuchuser' => '"$1" نامو سورا Ú©ÛŒÛ ØµØ§Ø±Ù Ù…ÙˆØ¬ÙˆØ¯ نیکی.
+برائے Ù…Ûربانی! Ûجان درست اندراجان تصدیقو کورے.
+اگر تو Ú©Û Ù…Ù†Ø§Ø³Ø¨ جوشیتاو تھے [[Special:UserLogin/signup|نوغ Ú©Ú¾Ø§ØªÛ Ø¯ÛŒ ساوزیکو بوس]].',
+'nouserspecified' => 'ØªÛ Ø§ÛŒ اسم٠صارÙÙˆ مخصوص کوریلک',
+'login-userblocked' => 'Ú¾ÛŒÛ ØµØ§Ø±ÙÙˆ سورا پاوبندی شیر. Ø¯Ø§Ø®Ù„Ù Ù†ÙˆØ´ØªÛ Ø¨ÛŒÚ©Ùˆ اجازت نیکی',
+'wrongpassword' => 'تو غلط کلمۂ شناخت درج کوری آسوس Ø¯ÙˆØ¨Ø§Ø±Û Ú©Ùˆ شش کورے',
+'wrongpasswordempty' => 'کلمۂ شناخت ندارد۔ Ø¯ÙˆØ¨Ø§Ø±Û Ú©ÙˆØ´Ø´ کورے',
+'passwordtooshort' => 'ØªÛ Ù…Ù†ØªØ®Ø¨ Ú©Ø±Ø¯Û Ù¾Ø§Ø±Ù„ÙˆØ¸(پاسورڈ) مختصار شیر. پارلوظ Ú©Ù… از Ú©Ù… {{PLURAL:$1|1 حرÙ|$1 حروÙ}} بیلک.',
+'password-name-match' => 'ØªÛ Ù¾Ø§Ø±Ù„ÙˆØ¸(پاسورڈ) ØªÛ Ø§Ø³Ù…Ù ØµØ§Ø±ÙÙˆ ساری مختل٠بیلک.',
+'mailmypassword' => 'نوغ پاسورڈ بشلی کغازو زریعا انÚاوے',
+'passwordremindertitle' => 'نوغ عارضی کلمۂ شناخت برائے {{SITENAME}}',
+'passwordremindertext' => '(IP پتاری $1) کا (یا البت تو) {{SITENAME}} ($4)
+بچے نوغ کلمۂ شناختو بچے درخاس آریر. ای عارضی کلمۂ شناخت "$3"
+برائے ممبار(صارÙ) "$2" تخلیق کورونو بیتی شیر. اگر Ú¾ÛŒÛ ØªÛ Ø§Ø±Ø§Ø¯Û Ú©Û Ø§ÙˆØ´ÙˆÛŒ تھے تو Ø¯Ø§Ø®Ù„Ù Ù†ÙˆØ´ØªÛ Ø¨ÛŒÚ©Ø§Ø± Ø¢Ú†ÛŒ نوغ کلمۂ شناختو انتخابو کورے.
+ØªÛ Ú©Ù„Ù…Û‚ شناخت {{PLURAL:$5|ای بس|$5 بسار}} Ø¢Ú†ÛŒ Ù†Ø§Ú©Ø§Ø±Û Ø¨ÙˆÛŒ.
+
+اگر خور کا Ú¾ÛŒÛ Ø¯Ø±Ø®Ø§Ø³Ùˆ کوری آسور، یا تتے ØªÛ Ù¾Ø±Ø§Ù†Ùˆ کلمۂ شناخت یادی گیتی شیر،
+وا تو Ú¾Ùˆ تبدیل کوریک نو مشکیسان ،تھے تو Ú¾ÛŒÛ Ù¾ÛŒØºØ§Ù…Ùˆ نظر انداز کوریکو بوس وا تان پرانو کلمۂ شناختو استعمالو جاری لاکھیکو بوس.\',',
+'noemail' => 'ممبارو "$1" بچے Ú©ÛŒÛ Ø¨Ø´Ù„ÛŒ کغازو Ù¾ØªÛ Ø¯Ø±Ø¬ کورونو نو بیتی شیر',
+'noemailcreate' => 'صحیح برقی Ù¾ØªÛ Ù…Ûیّا کورے',
+'passwordsent' => 'ای نوغ کلمۂ شناخت "$1" نامو سورا ساوز بیرو بشلی کغازو پتÛوتے انزینو بیتی شیر۔
+Ú©ÛŒØ§ÙˆØªÚ©Û Ú¾Ø³Û’ توریتای تھے Ù…Ûربانی کوری Ú¾Ùˆ ذریعا Ø¯ÙˆØ¨Ø§Ø±Û Ø¯Ø§Ø®Ù„ بوس۔',
+'blocked-mailpassword' => 'ØªÛ Ø¢Ø¦ÛŒ.Ù¾ÛŒ پتÛÙˆ تدوین کوریکار روکاو کورونو بیتی شیر، تھے، ناجائز استعمالو روکاو کوریکو بچے ØŒ ØªÛ Ø¢Ø¦ÛŒ.Ù¾ÛŒ پتÛÙˆ کلمۂ شناختو بحالیو Ùعل استعمال کوریکو اÙجازت نیکی',
+'eauthentsent' => 'ای تصدیقی برقی خط نامزد کورونو بیرو برقی پتا کوری انÚینو بیتی شیر.
+ØªÛ Ø³ÙˆÙ… توریرو برقی Ø®Ø·Û Ø¯ÛŒØ±Ùˆ Ûدایاتن سورا عمل کوری تو Ú¾ÛŒÛ Ù„ÙˆÙˆ توثیق/تصدیقو کورے Ú©Û Ù…Ø°Ú©ÙˆØ±Û Ø¨Ø±Ù‚ÛŒ Ù¾ØªÛ ØªÛ Ø²Ø§ØªÛŒ Ù¾ØªÛ Ø´ÛŒØ±.',
+'throttled-mailpassword' => 'Ú¯Ø²Ø´ØªÛ {{PLURAL:$1|گھنٹÛ|$1 گھنٹÛ}}ان اندرینی پروشٹیار یری تان پارلوظو(پاسورڈو)ای یادآوری انÚینو بیتی شیر.
+ناجائز استعمالو سدّبابو بچے، {{PLURAL:$1|گھنٹÛ|$1 گھنٹÛ}}ان دورانی صر٠ای پارلÙظی یادآواری انÚینو بوی',
+'mailerror' => 'کغاز انزیکو دورانی مسلÛ:$1',
+'acct_creation_throttle_hit' => 'ØªÛ Ø¢Ø¦ÛŒ.Ù¾ÛŒ پتو ذریعا Ú¾ÛŒÛ ÙˆÛŒÚ©ÛŒØ§ گیاک صارÙین شوخڅیرو ای بسÛ{{PLURAL:$1|1 Ú©Ú¾Ø§ØªÛ Ø³Ø§ÙˆØ²Û’ آسور|$1 کھاتے ساوزے آسونی}}ØŒ وا ھیس Ù…Ø°Ú©ÙˆØ±Û ÙˆØ®ØªÛ Ú©Ø§ÙÛŒ شیر.
+Ù„Ûٰذا، ØªÛ Ø¢Ø¦ÛŒ.Ù¾ÛŒ پتو استعمال کوراک صارÙین Ù…ÙˆØ¬ÙˆØ¯Û ÙˆØ®ØªÛ Ù…Ø²ÛŒØ¯ Ú©Ú¾Ø§ØªÛ Ø³Ø§ÙˆØ²ÛŒÚ©Ùˆ نو بونی.',
+'emailauthenticated' => 'ØªÛ Ø¨Ø´Ù„ÛŒ کغازو پتو تصدیق تاریخ $2 بوقت $3 بجا کورونو ھوی۔',
+'emailnotauthenticated' => 'ØªÛ Ø¨Ø±Ù‚ÛŒ پتو ھنیسے تصدیق نو بیتی شیر.
+درج ذیل وجھو سورا Ú©ÛŒÛ Ø¯ÛŒ اشناریو بچے ØªÛ Ø¨Ø±Ù‚ÛŒ Ù¾ØªÛ Ú©ÙˆØ±ÛŒ برقی ڈاک ارسال کورونو نو بوی.',
+'noemailprefs' => 'Ú¾Ù…ÛŒ خصائص یعنی Ùیچران کورما انگیکو بچے تان ØªØ±Ø¬ÛŒØ­Ø§ØªÛ Ø¨Ø±Ù‚ÛŒ ڈاکو پتو متعین کورے.',
+'emailconfirmlink' => 'تان برقی پتو تصدیقو کورے',
+'accountcreated' => 'تخلیق٠کھاتÛ',
+'accountcreatedtext' => 'تخیلق٠کھاتۂ ممبار براۓ $1۔',
+'createaccount-title' => 'Ú©Ú¾Ø§ØªÛ Ø³Ø§Ø²ÛŒ برائے {{SITENAME}}',
+'usernamehasherror' => 'اسم٠صارÙÛ Ù‚ÛŒÙ¹ پیٹ حرو٠استعمال کوریکو اجازت نیکی',
+'login-throttled' => 'تو Ø¯Ø§Ø®Ù„Ù Ù†ÙˆØ´ØªÛ Ø¨ÛŒÚ©Ùˆ بچے بو Ø²ÛŒØ§Ø¯Û Ú©ÙˆØ´Ø´ÛŒÚº آرو.
+Ø¯ÙˆØ¨Ø§Ø±Û Ú©ÙˆØ´Ø´ کوریکو بچے Ù¾Ú¾ÙˆÚ© مدا انتظار کورے.',
+'loginlanguagelabel' => 'زبان: $1',
+
+# Change password dialog
+'resetpass' => 'پاسورڈو چینج کورے',
+'resetpass_announce' => 'تو ای برقی ارسال Ú©Ø±Ø¯Û Ø¹Ø§Ø±Ø¶ÛŒ Ú©ÙˆÚˆ ورڈو سوم Ø¬Ø³ØªÛ Ø¯Ø§Ø®Ù„ بیتی آسوس.
+Ø¯Ø§Ø®Ù„Ù Ù†ÙˆØ´ØªÛ Ø¨ÛŒÚ©Ùˆ عملو مکمل کوریکو بچے ØªÛ Ú¾ÛŒØ§Ø±Ø§ نوغ پاسورڈ متعین کوریلک بوی:',
+'resetpass_header' => 'کھاتو پاسورڈو تبدیل کورے',
+'oldpassword' => 'پرانو کلمۂ شناخت:',
+'newpassword' => 'نوغ کلمۂ شناخت',
+'retypenew' => 'نوغ کلمۂ شناخت Ø¯ÙˆØ¨Ø§Ø±Û Ø¯Ø±Ø¬ کورے:',
+'resetpass_submit' => 'پاسورڈ ساوزاوے وا داخل بوس',
+'resetpass_forbidden' => 'تتے پاسورڈو چینج کوریکو اجازت نیکی',
+'resetpass-no-info' => 'Ú¾ÛŒÛ ØµÙحا براÛ٠راست رسائیو بچے ØªÛ Ø¯Ø§Ø®Ù„Ù Ù†ÙˆØ´ØªÛ Ø¨ÛŒÚ© ضروری شیر.',
+'resetpass-submit-loggedin' => 'پاسورڈو تبدیلی',
+'resetpass-submit-cancel' => 'کھینسل',
+'resetpass-wrong-oldpass' => 'عارضی یا Ù…ÙˆØ¬ÙˆØ¯Û Ù¾Ø§Ø³ÙˆØ±Úˆ ناقص شیر.
+تو تان پاسورڈو کامیابیو سورا تبدیل کوری آسوس یا تو نوغ عارضی پاسورڈو بچے درخواست کوری آسوس.',
+'resetpass-temp-password' => 'عارضی پاسورڈ:',
+
+# Special:PasswordReset
+'passwordreset' => 'پاسورڈو ری سیٹ کورے',
+
+# Edit page toolbar
+'bold_sample' => 'بوسک متن',
+'bold_tip' => 'بولڈ ٹیکسٹ',
+'italic_sample' => 'کولی/اٹالک نیویشیرو',
+'italic_tip' => 'کولی نیویشیرو',
+'link_sample' => 'ربطو عنوان',
+'link_tip' => 'اندرینو لنک',
+'extlink_sample' => 'http://groups.yahoo.com/group/khowaracademy ربطو عنوان',
+'extlink_tip' => 'بیریو ربطو (یاد لکھے http:// prefix)',
+'headline_sample' => 'Ø´Û Ø³Ø±Ø®ÛŒ',
+'headline_tip' => 'Ø´Û Ø³Ø±Ø®ÛŒ Ø¯Ø±Ø¬Û Ø¯ÙˆÙ…',
+'nowiki_sample' => 'ØºÛŒØ±Ø´Ú©Ù„Ø¨Ù†Ø¯Ø´Ø¯Û Ù…ØªÙ†Ùˆ ھیارا درج کورور',
+'nowiki_tip' => 'ویکی شکلبندی نظرانداز کورے',
+'image_tip' => 'Ù¾ÛŒÙˆØ³ØªÛ Ù…Ø³Ù„',
+'media_tip' => 'مسلو لنک',
+'sig_tip' => 'ØªÛ Ø¯Ø³ØªØ®Ø· بمع Ù…Ûر٠وخت',
+'hr_tip' => 'تھروسکی لکیر (Ø²ÛŒØ§Ø¯Û Ø§Ø³ØªØ¹Ù…Ø§Ù„ مو کورے)',
+
+# Edit pages
+'summary' => 'خلاصÛ:',
+'subject' => 'مضمون/Ø´Û Ø³Ø±Ø®ÛŒ:',
+'minoredit' => 'معمولی ترمیم',
+'watchthis' => 'Ú¾ÛŒÛ ØµÙحو لوڑے',
+'savearticle' => 'محÙوظ',
+'preview' => 'نمائش',
+'showpreview' => 'نمائش',
+'showlivepreview' => 'براÛ٠راست پیش منظر',
+'showdiff' => 'تبدیلیان پشاوے',
+'anoneditwarning' => 'تو{{SITENAME}} داخل نو بیتی اسوس Ù„Ûذا تÛIP Ù¾ØªÛ Ú¾ÛŒÛ ØµÙحو ØªØ§Ø±ÛŒØ®Ú†Û Ø¡ ترمیما محÙوظ بوی',
+'missingcommenttext' => 'براÛ٠کرم! ØªØ¨ØµØ±Û Ù…ÙˆÚ‘Ø§ درج کورے.',
+'missingcommentheader' => "'''خبردار:''' تو Ú¾ÛŒÛ ØªØ¨ØµØ±Ùˆ بچے عنوان یا Ø´Û Ø³Ø±Ø®ÛŒ Ù…Ûیّا نو آرو.
+اگر تو محÙوظو بٹنو Ú©Û Ø¯ÙˆØ¨Ø§Ø±Û Ú©Ù„Ú© آرو تھے ØªÛ ØªØ¨ØµØ±Û Ø¨ØºÛŒØ± عنوانا محÙوظ بوی.",
+'summary-preview' => 'نمائش خلاصÛ:',
+'subject-preview' => 'عنوان/Ø´Û Ø³Ø±Ø®ÛŒÙˆ پیش منظر:',
+'blockedtitle' => 'صارÙÙˆ بلاک کورونو بیتی شیر',
+'blockednoreason' => 'Ú©ÛŒÛ ÙˆØ¬Û Ø¯ÛŒÙˆÙ†Ùˆ نو Ú¾ÙˆÛŒ',
+'blockedoriginalsource' => "'''$1''' مآخذو موڑا دیونو بیتی شیر:",
+'blockededitsource' => "'''$1''' کورونو بیرو'''ØªÛ ØªØ±Ù…ÛŒÙ…Ø§Ù†''' متن موڑا دیونو بیتی شیر:",
+'whitelistedittitle' => 'ترمیم کوریکو بچے Ø¯Ø§Ø®Ù„Ù Ù†ÙˆØ´ØªÛ Ø¨ÛŒÚ© لازمی شیر',
+'whitelistedittext' => 'ترمیم کوریکو بچے $1 ضروری شیر.',
+'nosuchsectiontitle' => 'Ù‚Ø·Ø¹Û Ù…Ù„Ø§Ùˆ نو Ú¾ÙˆÛŒ',
+'loginreqtitle' => 'Ø¯Ø§Ø®Ù„Û / اندراج لازم',
+'loginreqlink' => 'داخلÛ',
+'loginreqpagetext' => 'خور صÙحاتن لوڑیکو بچے ØªÛ $1 ضروری شیر.',
+'accmailtitle' => 'Ú©Ù„Ù…Û Ø´Ù†Ø§Ø®Øª(پاسورڈ) انÚینو Ú¾ÙˆÛŒ',
+'newarticle' => '(نوغ)',
+'newarticletext' => "↓تو ای ھس صÙحو ربطو پیرویو کوری اسوس Ú©Û Ú¾Ø³Û’ ھنیسے موجود نیکی.
+Ú¾ÛŒÛ ØµÙØ­ÛÙˆ تخلیق کوریکو بچے درج ذیل خانا متنو درج کورے (مزید معلوماتو بچے [[{{MediaWiki:Helppage}}|صÙØ­Û‚ معاونت]] Ù…Ù„Ø§Ø­Ø¸Û Ú©ÙˆØ±Û’).
+اگر تو ھیا غلطیو سورا Ú©Û Ú¯ÛŒØªÛŒ اسوس تھے اچھو صÙحا Ø¢Ú†ÛŒ بیکو بچے تان کمپیوٹرا '''back''' بٹنو Ù¹Ú© کورے.",
+'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}}}} Ù…ØªØ¹Ù„Ù‚Û Ù†ÙˆØ´ØªÛ Ø¬Ø§Øª تلاش کوریکو بوس],
+یا [{{fullurl:{{FULLPAGENAME}}|action=edit}} تو Ú¾ÛŒÛ ØµÙØ­Ûا ترمیم کوریکو بوس]</span>',
+'updated' => '(اپ ڈیٹڈ)',
+'note' => "'''نوٹ:'''",
+'previewnote' => "'''یاد لاکھے، Ú¾ÛŒÛ ØµØ±ÙÛŒ نمائش شیر، ØªÛ Ú©Ø§Ø±Ø¯Ùˆ ترامیم ھنیسے محÙوظ کورونو نو بیتی شینی۔'''",
+'editing' => 'تو "$1" ترمیم کوروسان۔',
+'editingsection' => '$1 قطعو تدوین',
+'editingcomment' => 'زیرترمیم $1 (تبصرÛ)',
+'editconflict' => 'ØªÙ†Ø§Ø²Ø¹Û ØªØ±Ù…ÛŒÙ…:$1',
+'yourtext' => 'ØªÛ ØªØ­Ø±ÛŒØ±',
+'storedversion' => 'Ø°Ø®ÛŒØ±Û Ø´Ø¯Û Ù†Ø¸Ø±Ø«Ø§Ù†ÛŒ',
+'yourdiff' => 'تضادات',
+'templatesused' => 'Ú¾ÛŒÛ ØµÙحا استعمال باک {{PLURAL:$1|سانچÛ|سانچے}}:',
+'templatesusedpreview' => ' Ú¾ÛŒÛ Ù¾ÛŒØ´ منظرا مستعمل {{PLURAL:$1|سانچÛ|سانچے}}:',
+'template-protected' => '(محÙوظ شدÛ)',
+'template-semiprotected' => '(نیم محÙوظ)',
+'hiddencategories' => 'Ú¾ÛŒÛ ØµÙØ­Û {{PLURAL:$1|1 کھوشت زمرے|$1 کھوشت Ø²Ù…Ø±Û Ø¬Ø§Øª}}ا شامل شیر:',
+'permissionserrorstext-withaction' => 'درج ذیل {{PLURAL:$1|وجÛ|وجوÛاتن}} پرنیکا تاتے $2 کوریکو اجازت نیکی:',
+'recreate-moveddeleted-warn' => "↓''' خبردار: تو ای Ú¯Ø²Ø´ØªÛ Ø­Ø°Ù Ø´Ø¯Û ØµÙحو Ø¯ÙˆØ¨Ø§Ø±Û ØªØ®Ù„ÛŒÙ‚ کوروسان. '''
+
+تاتے جم Ù¾ØªÛ Ú©Û Ú¾ÛŒÛ ØµÙحو تدوینو جاری لاکھک موزوں نو .
+صÙحو نوشتۂ حذ٠شدگی Ùˆ منتقلی ھیارا ØªÛ Ø³Ûولتو خاطرا دیونو بویان:",
+'moveddeleted-notice' => 'Ú¾ÛŒÛ Ø§ÛŒ Ø­Ø°Ù Ø´Ø¯Û ØµÙØ­Û Ø´ÛŒØ±.
+صÙحو نوشتۂ حذ٠شدگی Ùˆ منتقلی ذیلا Ø¨Ø·ÙˆØ±Ù Ø­ÙˆØ§Ù„Û Ø¯ÛŒÙˆÙ†Ùˆ بویان.',
+
+# History pages
+'viewpagelogs' => 'Ú¾ÛŒÛ ØµÙØ­ÛÙˆ بچے Ù†ÙˆØ´ØªÛ Ø¬Ø§ØªÙ† لوڑے',
+'currentrev-asof' => 'Ø­Ø§Ù„ÛŒÛ Ù†Ø¸Ø±Ø«Ø§Ù†ÛŒ بمطابق $1',
+'revisionasof' => 'تـجدید بـمطابق $1',
+'revision-info' => '$2 $1 ھموش نیویشیتای',
+'previousrevision' => 'â†Ù¾Ø±Ø§Ù†Ùˆ تدوین',
+'nextrevision' => '→پروشٹیو اعادÛ',
+'currentrevisionlink' => 'Ø­Ø§Ù„ÛŒÛ Ù†Ø¸Ø±Ø«Ø§Ù†ÛŒ',
+'cur' => 'رائج',
+'last' => 'سابقÛ',
+'histlegend' => "انتخاب: مختل٠نسخان Ù…ÙˆØ§Ø²Ù†Û Ú©ÙˆØ±ÛŒÚ©Ùˆ بچے ØŒ پیامی خانان نشان زد کوری موڑا دیرو بٹنا Ú©Ù„Ú© کورے۔
+
+'''علامات:'''
+
+(رائج) = Ù…ÙˆØ¬ÙˆØ¯Û Ù…ØªÙ†Ùˆ ساری اخـتلاÙØŒ (سابقÛ) = Ú¯Ø²Ø´ØªÛ Ù…ØªÙ†Ùˆ ساری اختلا٠، Ù… = معمولی ترمیم۔",
+'history-fieldset-title' => 'تاریخو لوڑے',
+'history-show-deleted' => 'صرÙÛŒ حذ٠شدÛ',
+'histfirst' => 'قدیم ترین',
+'histlast' => 'ØªØ§Ø²Û ØªØ±ÛŒÙ†',
+
+# Revision feed
+'history-feed-item-nocomment' => '$1 تا $2',
+
+# Revision deletion
+'rev-delundel' => 'پشاوے/کھوشتاوے',
+'revdel-restore' => 'ظاÛریتو تبدیل کورے',
+'revdel-restore-deleted' => 'Ø­Ø°Ù Ø´Ø¯Û Ø±ÙˆÛŒÚ˜Ù†Ø²',
+'revdel-restore-visible' => 'ویزیبل رویژنز',
+'revdelete-content' => 'Ùھرست',
+'revdelete-hid' => '$1 کھوشت ھوی',
+'revdelete-log-message' => '$1 بچے $2 {{PLURAL:$2|نظرثانی|نظرثانی}}',
+
+# Merge log
+'revertmerge' => 'غیر ضم',
+
+# Diffs
+'history-title' => 'ØªØ§Ø±ÛŒØ®Ú†Û "$1"',
+'difference' => '(Ø§ØµÙ„Ø§Ø­Ø§ØªÛ Ùرق)',
+'lineno' => 'لکیر $1:',
+'compareselectedversions' => 'منتخب متـنو موازنÛ',
+'editundo' => 'استرجع',
+'diff-multi' => '({{PLURAL:$1|One intermediate revision|$1 intermediate revisions}} by {{PLURAL:$2|one user|$2 users}} not shown)',
+
+# Search results
+'searchresults' => 'تلاشو نتیجÛ',
+'searchresults-title' => 'نتائج٠تلاش برائے "$1"',
+'searchresulttext' => 'ویکیپیڈیا تلاشو باریا مزید معلوماتو بچے، ویکیپیڈیا تلاشو صÙØ­ÛÙˆ لوڑے۔{{SITENAME}}, [[{{MediaWiki:Helppage}}|{{int:help}}]].
+{{SITENAME}}, [[{{MediaWiki:Helppage}}|{{int:help}}]].',
+'searchsubtitle' => 'ØªÛ ØªÙ„Ø§Ø´ برائے \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1|"$1" شروع باک تمام صÙحات]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" مربوط تمام صÙحات]])',
+'searchsubtitleinvalid' => "ØªÛ ØªÙ„Ø§Ø´ براۓ '''$1'''",
+'notitlematches' => 'Ú©ÛŒÛ Ø¯ÛŒ مماثل عنوان صÙØ­Û Ù…Ù„Ø§Ùˆ نو Ú¾ÙˆÛŒ',
+'notextmatches' => 'Ú¾ÛŒÛ Ø¹Ù†ÙˆØ§Ù†Ùˆ سورا Ú©ÛŒÛ Ø¯ÛŒ صÙØ­Û Ù…ÙˆØ¬ÙˆØ¯ نیکی',
+'prevn' => 'Ø¢Ú†Ú¾Ùˆ{{PLURAL:$1|$1}}',
+'nextn' => 'پروشٹیو{{PLURAL:$1|$1}}',
+'prevn-title' => 'Ø³Ø§Ø¨Ù‚Û $1 {{PLURAL:$1|نتیچÛ|نتیجÛ}}',
+'nextn-title' => 'Ø³Ø§Ø¨Ù‚Û $1 {{PLURAL:$1|نتیچÛ|نتیجÛ}}',
+'shown-title' => 'ÙÛŒ صÙØ­Û $1 {{PLURAL:$1|نتیجÛ|نتائج}} پشاوے',
+'viewprevnext' => 'لوڑے($1 {{int:pipe-separator}} $2) ($3)۔',
+'searchmenu-exists' => "'''Ú¾ÛŒÛ Ú©Ú¾ÙˆØ§Ø± ویکیپیڈیا \"[[:\$1]]\" نامی ای صÙØ­Û Ù…ÙˆØ¬ÙˆØ¯ شیر'''",
+'searchmenu-new' => "↓'''Ú¾ÛŒÛ Ú©Ú¾ÙˆØ§Ø± ویکیپیڈیا صÙØ­Û \"[[:\$1]]\" تخلیق کورے!'''",
+'searchprofile-articles' => 'مشمولاتی صÙحات',
+'searchprofile-project' => 'مدد اوچے منصوبو صÙحات',
+'searchprofile-images' => 'ملٹی میڈیا',
+'searchprofile-everything' => 'س٠اشناری',
+'searchprofile-advanced' => 'ایڈوانس',
+'searchprofile-articles-tooltip' => '$1 Ú¾ÛŒÛ ØµÙحا تلاش',
+'searchprofile-project-tooltip' => '$1 ھیارا تلاش',
+'searchprofile-images-tooltip' => 'تلاش برائے Ùایل',
+'searchprofile-everything-tooltip' => 'Ûر ژاغا تلاش کورے',
+'searchprofile-advanced-tooltip' => 'کسٹم نیم اسپیسا تلاش کورے',
+'search-result-size' => '$1 ({{PLURAL:$2|1 لوظ|$2 الÙاظ}})',
+'search-result-category-size' => '{{PLURAL:$1|1 رÙÚ©Ù†|$1 اراکین}} ({{PLURAL:$2|1 ذیلی زمرÛ|$2 ذیلی Ø²Ù…Ø±Û Ø¬Ø§Øª}}, {{PLURAL:$3|1 ملÙ|$3 ملÙات}})',
+'search-redirect' => '(رجوع مکرر $1)',
+'search-section' => '(Ø­ØµÛ $1)',
+'search-suggest' => 'ØªÛ Ù…Ø·Ù„Ø¨ Ú¾ÛŒÛ ØªÚ¾Û’ نو اوشوی: $1',
+'search-interwiki-caption' => 'ملگیری منصوبÛ',
+'search-interwiki-default' => '$1 نتائج:',
+'search-interwiki-more' => '(مزید)',
+'search-mwsuggest-enabled' => 'تجویزان سوم جستÛ',
+'search-mwsuggest-disabled' => 'Ú©ÛŒÛ ØªØ¬ÙˆÛŒØ² نیکی',
+'searchrelated' => 'متعلقÛ',
+'searchall' => 'Ú©Ú¾Ù„',
+'showingresultsheader' => "{{PLURAL:$5|نتیجÛ'''$1''' of '''$3'''|نتیجÛ'''$1 - $2''' of '''$3'''}} بچے'''$4'''",
+'nonefound' => "'''یاددÛانی''': عموماً صر٠ای کما نامان تلاش کورونو بونیان۔
+تمام مواد (بشمول تبادلۂ خیال صÙحات، Ø³Ø§Ù†Ú†Û Ø¬Ø§Øª وغیران) تلاش کوریکو بچے تان استÙساراری پروشٹی ''all:'' لیگاوے، یا تان پسندو نامو بطور Ø³Ø§Ø¨Ù‚Û Ø§Ø³ØªØ¹Ù…Ø§Ù„ کورے",
+'search-nonefound' => 'استÙسارو مطابقا نتائج ملاو نو ھونی.',
+'powersearch' => 'ایڈوانس تلاش',
+'powersearch-legend' => 'ایڈوانس سرچ',
+'powersearch-ns' => 'جائے ناما تلاش:',
+'powersearch-redir' => 'ÙÛرست٠رجوع مکرر',
+'powersearch-field' => 'تلاش برائے',
+
+# Preferences page
+'preferences' => 'ترجیحات',
+'mypreferences' => 'Ù…Û ØªØ±Ø¬ÛŒÛات',
+'youremail' => 'بشلی کغاز',
+'username' => 'ممبارو نم',
+'uid' => 'ممبارو لمبار:',
+'prefs-memberingroups' => '{{PLURAL:$1|گروÛ|گروÛاں}} رÙÚ©Ù†:',
+'yourrealname' => '* اصلی نم',
+'yournick' => 'دسخط',
+'badsig' => "ناقص خام دسخط.
+HTML tags لوڑے.',",
+'badsiglength' => 'ØªÛ Ø¯Ø³Ø®Ø· کاÙÛŒ درونگار شیر.
+Ú¾ÛŒÛ $1 {{PLURAL:$1|حرÙ|حروÙاری}} زیات نو بیلک.',
+'prefs-help-email' => 'برقی ڈاکو Ù¾ØªÛ Ø§Ø®ØªÛŒØ§Ø±ÛŒ شیر لیکن Ú¾ÛŒÛ Ú¾ØªÛ’ ÙˆØ®ØªÛ Ù…Ùید ثابت بوی کیاوتکی تو تان پاسورڈو Ú©ÛŒ روخڅیتاو',
+'prefs-help-email-others' => 'تو ھمو دی منتخب کوریکو بوس Ú©Û Ø®ÙˆØ± صارÙین ØªÛ ØªØ¨Ø§Ø¯Ù„Û‚ خیالو صÙحا ای ربطو ذریعا تتے بشلی کغاز یعنی برقی ڈاک انÚینی.
+Ú©ÛŒØ§ÙˆØªÚ©Û Ø¯ÛŒÚ¯Ø± صارÙین ØªÛ Ø³ÙˆÙ… Ø±Ø§Ø¨Ø·Û Ú©ÙˆØ±ÙˆÙ†ÛŒØ§Ù† تھے ØªÛ Ø¨Ø±Ù‚ÛŒ ڈاکو Ù¾ØªÛ Ø§Ùشا کورونو نو بوی',
+
+# Groups
+'group-sysop' => 'کھوار ویکیپیڈیو منتظمین',
+
+'grouppage-sysop' => '{{ns:project}}:کھوار ویکیپیڈیو منتظمین',
+
+# Rights
+'right-movefile' => 'منتقل کورے',
+'right-upload' => 'Ùائل انÚاوے',
+'right-delete' => 'صÙحان ضائع کورے',
+
+# User rights log
+'rightslog' => 'یوزروت مختص Ø´Ø¯Û Ø­Ù‚ÙˆÙ‚',
+'rightsnone' => '(نو)',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'Ú¾ÛŒÛ ØµÙحا ایڈیٹنگ کورے',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|تبدیلی|تبدیلیاں}}',
+'recentchanges' => 'Ø­Ø§Ù„ÛŒÛ ØªØ¨Ø¯ÛŒÙ„ÛŒ',
+'recentchanges-legend' => 'Ø­Ø§Ù„ÛŒÛ ØªØ¨Ø¯ÛŒÙ„ÛŒØ§Ù† اختیارات',
+'recentchangestext' => 'Ú¾ÛŒÛ ØµÙحا کھوار ویکیپیڈیا باک ØªØ§Ø²Û ØªØ±ÛŒÚº تبدیلیان مشاÛØ¯Û Ú©ÙˆØ±Û’',
+'recentchanges-feed-description' => 'کھوارا ترجمÛ',
+'recentchanges-label-newpage' => 'Ú¾ÛŒÛ ØªØ±Ù…ÛŒÙ… نوغ صÙØ­Û ØªØ®Ù„ÛŒÙ‚ آریر',
+'recentchanges-label-minor' => 'Ú¾ÛŒÛ Ø§ÛŒ معمولی ترمیم شیر',
+'recentchanges-label-bot' => 'Ú¾ÛŒÛ Ø§ÛŒÚˆÛŒÙ¹Ùˆ خود کار بوٹو زریعا انجام دیونو ÛÙˆÛŒ',
+'rcnote' => "درج ذیل Ú¯Ø²Ø´ØªÛ {{PLURAL:$2|بس|'''$2''' انوسا}} باک {{PLURAL:$1|'''ای''' تبدیلی شیر|آخری '''$1''' تبدیلی شینی}}ØŒ $5ØŒ $4.",
+'rcnotefrom' => "Ú¾ÛŒÛ Ù…ÙˆÚ‘Ø§ '''$2''' کورونو بیرو تبدیلیان تÙصیلات شینی ('''$1''' تبدیلیان پشینو بونیان)Û”",
+'rclistfrom' => '$1 نوغ تبدیلیاں پشیک شروع کورے',
+'rcshowhideminor' => ' معمولی ترامیم $1',
+'rcshowhidebots' => 'خودکار صار٠$1',
+'rcshowhideliu' => 'داخل بیرو صار٠$1',
+'rcshowhideanons' => 'گمنام صار٠$1',
+'rcshowhidepatr' => '$1 لوڑونو بیرو لکھائی',
+'rcshowhidemine' => 'ذاتی ترامیم $1',
+'rclinks' => 'آخری $2 آنوسو بیرو $1 تبدیلیان مشاÛØ¯Û Ú©ÙˆØ±Û’<br />$3',
+'diff' => 'Ùرق',
+'hist' => 'تاریخچÛ',
+'hide' => 'مو پشاوے',
+'show' => 'ویریغ کورے',
+'minoreditletter' => 'Ù…',
+'newpageletter' => 'نوغ',
+'boteditletter' => 'خودکار',
+'rc-enhanced-expand' => 'تÙصیلاتن پشاوے (JavaScript ضرورت بوی)',
+'rc-enhanced-hide' => 'تÙصیلاتن کھوشتاوے',
+
+# Recent changes linked
+'recentchangeslinked' => 'Ù…ØªØ¹Ù„Ù‚Û ØªØ¨Ø¯ÛŒÙ„ÛŒ',
+'recentchangeslinked-toolbox' => 'موقعی تبدیلی',
+'recentchangeslinked-title' => 'Ù…ØªØ¹Ù„Ù‚Û ØªØ¨Ø¯ÛŒÙ„ÛŒ "$1"',
+'recentchangeslinked-summary' => "Ú¾ÛŒÛ Ú¾ØªÛ’ تبدیلیان لسٹ شیر Ú©Û Ú¾ÛŒØªØ§Ù† Ù¾Ú¾ÙˆÚ© مدا پروشٹی ساوزینو بیتی شینی وا Ú¾Û’ صÙحان سوم Ø¬Ø³ØªÛ Ø®ÙˆØ± Ú©ÛŒÛ ØµÙØ­Û Ú†ÙˆÚ©ÛŒ شینی یا Ú©ÛŒÛ Ø®Ø§Øµ Ø²Ù…Ø±Û Ø¬Ø§ØªÙˆ ممبرانن سوم Ú†ÙˆÚ©ÛŒ شینی<br />
+ساوزیرو [[Special:Watchlist|موڑا صÙØ­Û]] '''بولڈ''' شینی",
+'recentchangeslinked-page' => 'کھوار ویکیپیڈیو منصوبو صÙحو لوڑے',
+'recentchangeslinked-to' => 'کھلولاو بیرو صÙحو بجایا ھمو سوم چوکیرو صÙحو نوغ تبدیلیان پشاوے',
+
+# Upload
+'upload' => 'Ùائل انÚاوے',
+'uploadlogpage' => 'نوشتۂ زبراثقال (اپ لوڈ لاگ)',
+'filename' => 'Ùایلو نام',
+'filedesc' => 'خلاصÛ',
+'uploadedimage' => 'زبراثقال (اپ لوڈ) براۓ "[[$1]]"',
+
+'license' => 'لایسنس',
+'license-header' => 'لایسنسنگ',
+
+# File description page
+'file-anchor-link' => 'Ùایل',
+'filehist' => 'مسلو تاریخ',
+'filehist-help' => 'Ú¾ÛŒÛ Ù„ÙˆÚ‘ÛŒÚ©Ùˆ بچے Ú©Û Ú©ÛŒÛ Ø®Ø§Øµ ÙˆØ®ØªÛ Ùایل Ú©ÛŒÛ Ù‚Ø³Ù…Û Ø¸Ø§Ûر باو اوشتای ھتے تاریخ یا ÙˆØ®ØªÛ Ø·Ù‚(Ú©Ù„Ú©) کورے',
+'filehist-revert' => 'آچی',
+'filehist-current' => 'حالیÛ',
+'filehist-datetime' => 'تاریخ/وخت',
+'filehist-thumb' => 'اظÙورÛ',
+'filehist-thumbtext' => '$1 صارÙÙˆ څیق ھوٹو',
+'filehist-user' => 'صارÙ',
+'filehist-dimensions' => 'ابعاد',
+'filehist-comment' => 'تبصرÛ',
+'imagelinks' => 'مسلو روابط',
+'linkstoimage' => 'Ú¾ÛŒÛ Ù…Ø³Ù„Ùˆ سوم درج ذیل {{PLURAL:$1|صÙØ­Û Ù…Ø±Ø¨ÙˆØ· شیر|$1 صÙحات مربوط شینی}}',
+'nolinkstoimage' => 'Ú¾ÛŒÛ Ú©Ú¾ÙˆØ§Ø± ویکیپیڈیا ھش Ú©ÛŒÛ ØµÙحات نیکی Ú©Û Ú¾ØªÛŒØª Ú¾ÛŒÛ Ù…Ø³Ù„ (Ùائلو) Ù…ØªØ¹Ù„Ù‚Û Ø´ÛŒÙ†ÛŒ',
+'uploadnewversion-linktext' => 'Ú¾ÛŒÛ Ù…Ø³Ù„Ùˆ نوغ ورژنو اپلوڈ کورے',
+
+# Random page
+'randompage' => 'بےترتیب صÙØ­Û',
+
+# Statistics
+'statistics' => 'اعداد و شمار',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|بایٹ|بایٹس}}',
+'nmembers' => '$1 {{PLURAL:$1|ممبار|ممباران}}',
+'lonelypages' => 'څھوعو صÙحات',
+'unusedcategories' => 'غیر استعمال Ø´Ø¯Û Ø²Ù…Ø±Û Ø¬Ø§Øª',
+'unusedimages' => 'غیر استعمال Ø´Ø¯Û Ùائل',
+'popularpages' => 'مقبول صÙحات',
+'wantedcategories' => 'طلب Ø´Ø¯Û Ø²Ù…Ø±Û Ø¬Ø§Øª',
+'wantedpages' => 'درخواست Ø´Ø¯Û Ù…Ø¶Ø§Ù…ÛŒÙ†',
+'wantedfiles' => 'درخواست Ø´Ø¯Û Ù…Ø¶Ø§Ù…ÛŒÙ†',
+'wantedtemplates' => 'درخواست Ø´Ø¯Û Ø³Ø§Ù†Ú†Û',
+'mostlinked' => 'سÙÙˆ ساری زیات ربط(لنک) والا مضمون',
+'mostlinkedcategories' => 'سÙÙˆ ساری زیات ربط(لنک) والا Ø²Ù…Ø±Û Ø¬Ø§Øª',
+'mostlinkedtemplates' => 'سÙÙˆ ساری زیات ربط(لنک) والا سانچÛ',
+'mostcategories' => 'سÙÙˆ ساری زیات Ø²Ù…Ø±Û Ø¬Ø§Øª والا مضمون',
+'mostimages' => 'سÙÙˆ ساری Ø²ÛŒØ§Ø¯Û Ø§Ø³ØªØ¹Ù…Ø§Ù„ کاردو ھوٹو',
+'mostrevisions' => 'Ø²ÛŒØ§Ø¯Û ØªØ¬Ø¯ÛŒØ¯ نظر کورونو بیرو صÙحات',
+'prefixindex' => 'Ú©Ú¾Ù„ÛŒ صÙحات پریÙکسان سوم جستÛ',
+'shortpages' => 'څیق صÙحات',
+'longpages' => 'درونگار ترین صÙحات',
+'deadendpages' => 'بیردو صÙحات',
+'protectedpages' => 'محÙوظ Ø´Ø¯Û ØµÙØ­Û',
+'protectedtitles' => 'محÙوظ Ø´Ø¯Û ØµÙØ­Û',
+'listusers' => 'ÙÛرست ارکان',
+'usercreated' => 'ساوزینو ھوی $1 at $2',
+'newpages' => 'نوغ صÙحات',
+'newpages-username' => 'اسم٠رکنیت',
+'move' => 'منتقل',
+'movethispage' => 'Ú¾ÛŒÛ ØµÙحو خور ژاغا منتقل کورے',
+'pager-newer-n' => '{{PLURAL:$1|نوغ1|نوغ $1}}',
+'pager-older-n' => '{{PLURAL:$1|قدیم1|قدیم ترین $1}}',
+
+# Book sources
+'booksources' => 'کتابی وسائل',
+'booksources-search-legend' => 'کتابی وسایلان تلاش',
+'booksources-go' => 'Go/بوغے',
+
+# Special:Log
+'specialloguserlabel' => 'یوزر',
+'speciallogtitlelabel' => 'عنوان:',
+'log' => 'Ù†ÙˆØ´ØªÛ Ø¬Ø§Øª',
+
+# Special:AllPages
+'allpages' => 'س٠صÙحات',
+'alphaindexline' => '$1 تا $2',
+'prevpage' => 'Ø¢Ú†Ú¾Ùˆ صÙØ­Û ($1)',
+'allpagesfrom' => 'Ù…Ø·Ù„ÙˆØ¨Û Ø­Ø±Ùاری شروع باک صÙحاتن نمائش:',
+'allpagesto' => 'Ù…Ø·Ù„ÙˆØ¨Û Ø­Ø±Ùاری ختم باک صÙحاتن نمائش:',
+'allarticles' => 'تمام مقالات',
+'allpagesprev' => 'Ø¢Ú†Ú¾Ùˆ',
+'allpagesnext' => 'پروشٹیو',
+'allpagessubmit' => 'بوغے لا',
+
+# Special:Categories
+'categories' => 'Ø²Ù…Ø±Û Ø¬Ø§Øª',
+
+# Special:DeletedContributions
+'sp-deletedcontributions-contribs' => 'حصÛ',
+
+# Special:LinkSearch
+'linksearch' => 'بیریو لنک',
+'linksearch-ns' => 'نامو ژاغÛ:',
+'linksearch-ok' => 'Search/تلاش',
+'linksearch-line' => '$1 مربوط شیر $2 ری',
+
+# Special:Log/newusers
+'newuserlogpage' => 'نوشتۂ آمد صارÙ',
+'newuserlog-create-entry' => 'نوغ یوزر',
+
+# Special:ListGroupRights
+'listgrouprights-members' => 'ممبارانن Ùھرست',
+
+# E-mail user
+'emailuser' => 'ممباروت بشلی کغاز انڅاوے',
+
+# Watchlist
+'watchlist' => 'Ù…Û ÙˆØ§Ú† لسٹ',
+'mywatchlist' => 'Ù…Û Ø²ÛŒØ±Ù†Ø¸Ø±ÙÛرست',
+'watchlistfor2' => 'براۓ $1 ($2)',
+'removedwatchtext' => 'Ú¾ÛŒÛ ØµÙØ­Û "[[:$1]]" خارج کورونو Ú¾ÙˆÛŒ[[Special:Watchlist|ØªÛ Ø²ÛŒØ± نظر ÙÛرستاری]].',
+'watch' => 'زیرنظر',
+'watchthispage' => 'Ú¾ÛŒÛ ØµÙحو تان نظرا لاکھے',
+'unwatch' => 'زیرنظرمنسوخ',
+'watchlist-details' => ' ØªÛ Ø²ÛŒØ±ÙنظرÙÛرستا {{PLURAL:$1|$1 صÙØ­Û Ø´ÛŒØ±|$1 صÙحات شینی}}ØŒ ھیارا تبادلۂ خیالو صÙحاتن تعداد شامل نیکی.',
+'wlshowlast' => 'پشاوے آخری $1 گھنٹو $2 آنوسو $3',
+'watchlist-options' => 'واچ لسٹ آپشن',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'زیر نظر',
+'unwatching' => 'منسوخ',
+
+# Delete
+'deletepage' => 'صÙØ­ÛÙˆ ضائع کورے',
+'confirmdeletetext' => 'تو Ú¾ÛŒÛ ØµÙحو ھمو سوم Ù…Ù„Ø­Ù‚Û ØªØ§Ø±ÛŒØ®Ú†Ùˆ سوم Ø¬Ø³ØªÛ Ø­Ø°Ù Ú©ÙˆØ±ÛŒÚ©Ùˆ Ø§Ø±Ø§Ø¯Û Ú©ÙˆØ±ÛŒ آسوس Û” براۓ Ù…Ûربانی تصدیق کورے Ú©Û ØªÙˆ Ú¾ÛŒÛ Ø¹Ù…Ù„Ùˆ نتائجان ساری بخوبی Ø¢Ú¯Ø§Û Ø¢Ø³ÙˆØ³ØŒ وا Ú¾ÛŒÛ ÛŒÙ‚ÛŒÙ†Ùˆ دی کورے Ú©Û ØªÙˆ ھش [[{{MediaWiki:Policy-url}}|ویکیپیڈیو حکمت عملیو]] دائرا حال بتی کوروسان۔',
+'actioncomplete' => 'اقدام تکمیلوتے تورتای',
+'actionfailed' => 'ØªÛ Ø§ÛŒÚ©Ø´Ù† ناکام ÛÙˆÛŒ',
+'deletedtext' => '"$1" حذ٠کورونو بیتی شیر ۔
+Ø­Ø§Ù„ÛŒÛ Ø­Ø°Ù Ø´Ø¯Ú¯ÛŒÙˆ تاریخ نامو بچے $2 لوڑے',
+'deletedarticle' => 'Ø­Ø°Ù Ø´Ø¯Û "[[$1]]"',
+'dellogpage' => 'نوشتۂ حذ٠شدگی',
+'deletecomment' => 'وجÛ',
+'deleteotherreason' => 'جوو/اÙضاÙÛŒ وجÛ',
+'deletereasonotherlist' => 'جوو وجÛ',
+
+# Rollback
+'rollbacklink' => 'Ø¢Ú†ÛŒ Ø³Ø§Ø¨Ù‚Û Ø­Ø§Ù„ØªÛ',
+
+# Protect
+'protectlogpage' => 'نوشتۂ محÙوظ شدگی',
+'protectedarticle' => '"[[$1]]" محÙوظ کورونو Ú¾ÙˆÛŒ',
+'modifiedarticleprotection' => 'تبدیل کاردو پروٹیکشن لیول "[[$1]]"',
+'protectcomment' => 'وجÛ:',
+'protectexpiry' => 'ختم بویان:',
+'protect_expiry_invalid' => 'Expiry ٹیم غلط شیر.',
+'protect_expiry_old' => 'ایکسپایری ٹیم مسقبلا',
+'protect-text' => "You may view and change the protection level here for the page '''$1'''.
+تو ھیارا پروٹیکشن لیولو لوڑیکو اوچے چینج کوریکو بوس '''$1'''.",
+'protect-default' => 'تمام صارÙینانتے اجازت دیت',
+'protect-fallback' => 'ضرورت شیر"$1" اجازتو',
+'protect-level-autoconfirmed' => 'نوغ اوچے غیر رجسٹیر Ø´Ø¯Û ÛŒÙˆØ²Ø±Ø§Ù† بلاک کورے',
+'protect-level-sysop' => 'صرÙÛŒ منتظمینان بچے',
+'protect-expiring' => 'ختم بویان $1 (UTC)',
+'protect-cantedit' => 'تو Ú¾ÛŒÛ ØµÙحو پروٹیکشن لیولو چینج کوریکو نوبوس، کوریکو Ú©Û ØªØ§ØªÛ’ ھش کوریکو اجازت نیکی',
+'restriction-type' => 'اجازت',
+'restriction-level' => 'ممنوغ لیول',
+
+# Undelete
+'undelete' => 'ضائع کاردو صÙحاتن لوڑے',
+'undeletelink' => 'لوڑے/بحال کورے',
+'undeleteviewlink' => 'لوڑے',
+'undeletedarticle' => 'بحال "[[$1]]"',
+
+# Namespace form on various pages
+'namespace' => 'نامو ژاغÛ:',
+'invert' => 'انتخاب بالعکس',
+'blanknamespace' => '(مرکز)',
+
+# Contributions
+'contributions' => 'صارÙÙˆ حصÛ',
+'contributions-title' => '$1 صارÙÙˆ حصÛ',
+'mycontris' => 'Ù…Û Ø­ØµÛ',
+'contribsub2' => 'براۓ $1 ($2)',
+'uctop' => '(ٹیکÛ)',
+'month' => 'مس (وا ھیغاری پروشٹی):',
+'year' => 'سال (وا ھیغاری پروشٹی):',
+
+'sp-contributions-newbies' => 'صرÙÛŒ نوغ اکاونٹو مضمونن پشاوے',
+'sp-contributions-newbies-sub' => 'نوغ اکاونٹو بچے',
+'sp-contributions-blocklog' => 'پاوبندی لیگیکو چٹ',
+'sp-contributions-uploads' => 'اپلوڈ کاردو Ùایل',
+'sp-contributions-logs' => 'لاگز',
+'sp-contributions-talk' => 'ØªØ¨Ø§Ø¯Ù„Û Ø®ÛŒØ§Ù„',
+'sp-contributions-search' => 'تان نیویشیرو مضمونن تلاش کورے',
+'sp-contributions-username' => 'آئی.Ù¾ÛŒ Ù¾ØªÛ ÛŒØ§ اسم٠صارÙ:',
+'sp-contributions-toponly' => 'ØµØ±Ù Ø­Ø§Ù„ÛŒÛ ØªØ±ÛŒÙ† نظرثانی ترمیماتن پشاؤے',
+'sp-contributions-submit' => 'Search/تلاش',
+
+# What links here
+'whatlinkshere' => 'ھیارا Ú©ÛŒÛ Ú©ÛŒÛ Ù„Ù†Ú© شینی',
+'whatlinkshere-title' => 'لنک Ø´Ø¯Û ØµÙحات "$1"',
+'whatlinkshere-page' => ' صÙØ­Û:',
+'linkshere' => " '''[[:$1]]''' درج ذیل صÙحات لنک کوری شینی:",
+'nolinkshere' => "'''[[:$1]]''' Ú©ÛŒÛ Ø±ÙˆØ§Ø¨Ø· نیکی",
+'isredirect' => 'خور ژاغا آلدو صÙØ­Û',
+'istemplate' => 'ٹرانسکلوژن',
+'isimage' => 'ھوٹوان لنک',
+'whatlinkshere-prev' => '{{Plural:$1|سابقÛ|Ø³Ø§Ø¨Ù‚Û $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|پروشٹیو|پروشٹیو$1}}',
+'whatlinkshere-links' => '↠لنکس',
+'whatlinkshere-hideredirs' => '$1 رجوع مکرر',
+'whatlinkshere-hidetrans' => 'ٹرانسکلوژن $1',
+'whatlinkshere-hidelinks' => '$1 لنکس',
+'whatlinkshere-hideimages' => 'ھوٹوان لنک $1',
+'whatlinkshere-filters' => 'Ùلٹر',
+
+# Block/unblock
+'blockip' => 'Ø¯Ø§Ø®Ù„Û Ù…Ù…Ù†ÙˆØ¹ براۓ صارÙ',
+'ipblocklist' => 'Ø¯Ø§Ø®Ù„Û Ù…Ù…Ù†ÙˆØ¹ براۓ صارÙ',
+'blocklink' => 'پاوبندی لیگاوے',
+'unblocklink' => 'پاوبندی ختم',
+'change-blocklink' => 'پاوبندیا تبدیلی',
+'contribslink' => 'Ø­ØµÛ Ø¯Ø§Ø±ÛŒ',
+'blocklogpage' => 'نوشتۂ پاوبندی',
+'blocklogentry' => 'بلاک[[$1]] ÙˆØ®ØªÛ Ù¾Øª $2 $3',
+'unblocklogentry' => 'بلاک نو کاردو $1',
+'block-log-flags-nocreate' => 'Ú©Ú¾Ø§ØªÛ Ú©Ú¾ÙˆÙ„Ø§Ùˆ کوریکو سورا پاوپندی شیر',
+
+# Move page
+'movearticle' => 'مـنـتـقـل کـورے',
+'newtitle' => 'نوغ عنوان',
+'move-watch' => 'صÙØ­Û Ø²ÛŒØ± نظر',
+'movepagebtn' => 'منتقل',
+'pagemovedsub' => 'انتقال کامیاب',
+'movepage-moved' => '\'\'\'"$1" Ú¾ÛŒÛ ÙˆÙˆØ´Ú©ÛŒ منتقل کورونو Ú¾ÙˆÛŒ "$2"\'\'\'',
+'articleexists' => 'Ú¾ÛŒÛ Ø¹Ù†ÙˆØ§Ù†Ùˆ سورا Ú©ÛŒÛ ØµÙØ­Û Ù¾Ø±ÙˆØ´Ù¹ÛŒØ§Ø±ÛŒ موجودشیر یا ØªÛ Ø¯Ø±Ø®ÙˆØ§Ø³Øª کاردو نام مستعمل نیکی براۓ Ù…Ûربانی خور نامو منتخب کورے۔',
+'movedto' => 'آلونو ھوی',
+'1movedto2' => '[[$1]] ووشکی [[$2]] منتقل',
+'1movedto2_redir' => 'آلونو ھوی[[$1]] ری[[$2]] ری ڈایریکٹ کوری',
+'movelogpage' => 'نوشتۂ منتقلی',
+'movereason' => 'واجھÛ',
+'revertmove' => 'رجوغ',
+
+# Export
+'export' => 'برآمد صÙحات',
+
+# Namespace 8 related
+'allmessagesname' => 'نم',
+'allmessagesdefault' => 'Ø·Û’ Ø´Ø¯Û Ù…ØªÙ†',
+
+# Thumbnails
+'thumbnail-more' => 'Ùراخ کورے',
+'thumbnail_error' => '$1 څیق سایزو ھوٹو ساوزیکا مسئلÛ',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'ØªÛ ØµØ§Ø±ÙÛŒ صÙØ­Û',
+'tooltip-pt-mytalk' => 'ØªÛ ØµÙØ­Û‚ مشقولگی',
+'tooltip-pt-preferences' => ' ØªÛ ØªØ±Ø¬ÛŒØ­Ø§Øª',
+'tooltip-pt-watchlist' => 'ھتے صÙحاتن ÙÛرست Ú©Û Ú¾ØªÛŒØªØ§Ù† تبدیلی ØªÛ Ø²ÛŒØ±Ùنظر شینی',
+'tooltip-pt-mycontris' => 'ØªÛ Ú©Ø§Ø±Ø¯Ùˆ کورمان ÙÛرست',
+'tooltip-pt-login' => 'ØªÛ Ø¨Ú†Û’ Ø¯Ø§Ø®Ù„Ù Ù†ÙˆØ´ØªÛ Ø¨ÛŒÚ© جم شیر، لیکن Ú¾ÛŒÛ Ø¶Ø±ÙˆØ±ÛŒ نو',
+'tooltip-pt-logout' => 'خارج بوس',
+'tooltip-ca-talk' => 'مضمونو بارا تبادلۂ خیال',
+'tooltip-ca-edit' => 'تو Ú¾ÛŒÛ ØµÙØ­Ûا ترمیم کوریکو بوس
+برائے Ù…Ûربانی! تان ترمیماتن محÙوظ کوریکار پروشٹی نمائشو بٹنا Ú©Ù„Ú© کورے',
+'tooltip-ca-addsection' => 'نوغ Ù‚Ø·Ø¹Û Ø´Ø±ÙˆØ¹ کورے',
+'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-go' => 'اگر بالکل Ú¾ÛŒÛ Ù†Ø§Ù…Ùˆ سورا صÙØ­Û Ú©Û Ù…ÙˆØ¬ÙˆØ¯ شیر تھے ھتے صÙØ­Ûا بوغے',
+'tooltip-search-fulltext' => 'Ú¾ÛŒÛ Ù…ØªÙ†Ùˆ بچے صÙحاتن تلاش کورے',
+'tooltip-p-logo' => 'سرورقا بوغے',
+'tooltip-n-mainpage' => 'اصلی صÙØ­Ûا بوغے',
+'tooltip-n-mainpage-description' => 'اصلی صÙØ­Û',
+'tooltip-n-portal' => 'کھوار ویکیپیڈیو منصوبو متعلقÛØŒ تو کیاغ کوریکو بوس، اشناریان کورا تلاش کوریلک',
+'tooltip-n-currentevents' => 'Ø­Ø§Ù„ÛŒÛ ÙˆØ§Ù‚Ø¹Ø§ØªÛ Ø¨ÛŒØ±Ùˆ پس منظری معلوماتن لوڑے',
+'tooltip-n-recentchanges' => 'کھوار ویکیپیڈیا Ø­Ø§Ù„ÛŒÛ ØªØ¨Ø¯ÛŒÙ„ÛŒØ§Ù† ÙÛرست',
+'tooltip-n-randompage' => 'ای بے ترتیب صÙØ­Û Ù„ÙˆÚˆ کورے',
+'tooltip-n-help' => 'تلاش کوریکو ژاغÛ',
+'tooltip-t-whatlinkshere' => 'ھتے س٠ویکی صÙحاتن ÙÛرست Ú©Û Ú¾ØªÛŒØªØ§Ù† ھیارا لنک شیر',
+'tooltip-t-recentchangeslinked' => 'Ú¾ÛŒÛ ØµÙØ­ÛÙˆ سوم مربوط صÙØ­Ø§ØªÛ Ø¨ÛŒØ±Ùˆ Ø­Ø§Ù„ÛŒÛ ØªØ¨Ø¯ÛŒÙ„ÛŒ',
+'tooltip-feed-rss' => 'Ú¾ÛŒÛ ØµÙحو بچے اسس خورد',
+'tooltip-feed-atom' => 'Ú¾ÛŒÛ ØµÙحو بچے آٹوم Ùیڈ',
+'tooltip-t-contributions' => 'نوغ تدوین',
+'tooltip-t-emailuser' => 'Ú¾ÛŒÛ Ù…Ù…Ø¨Ø§Ø±ÙˆØª بشلی کغاز(ای میل) انڅاوے',
+'tooltip-t-upload' => 'اپلوڈ Ùایل',
+'tooltip-t-specialpages' => 'س٠خاص صÙحاتن ÙÛرست',
+'tooltip-t-print' => 'Ú¾ÛŒÛ ØµÙحو قابل طبع نسخÛ',
+'tooltip-t-permalink' => 'صÙØ­Ûعو Ù…ÙˆØ¬ÙˆØ¯Û Ù†Ø¸Ø±Ø«Ø§Ù†ÛŒÙˆ مستقل لنک',
+'tooltip-ca-nstab-main' => 'مضمونو صÙحو لوڑے',
+'tooltip-ca-nstab-user' => 'ممبارو صÙحو لوڑے',
+'tooltip-ca-nstab-special' => 'Ú¾ÛŒÛ Ø§ÛŒ خاص صÙØ­Û Ø´ÛŒØ±ØŒ تو ھیارا ترمیم کوریکو نو بوس',
+'tooltip-ca-nstab-project' => 'پروجیکٹو صÙحو لوڑے',
+'tooltip-ca-nstab-image' => 'مسلو صÙحو لوڑے',
+'tooltip-ca-nstab-template' => 'سانچو لوڑے',
+'tooltip-ca-nstab-category' => 'Ø²Ù…Ø±Û Ø¬Ø§ØªÛŒ صÙحو لوڑے',
+'tooltip-minoredit' => 'Ú¾ÛŒÛ ØªØ¯ÙˆÛŒÙ†Ùˆ بطور٠معمولی ترمیم نشانزد کورے',
+'tooltip-save' => 'تبدیلیان محÙوظ کورے',
+'tooltip-preview' => 'برائے Ù…Ûربانی! محÙوظ کوریکار پروشٹی تبدیلیان پیشمنظرو لوڑے',
+'tooltip-diff' => 'لوڑے Ú©Û ØªÙˆ تان مضمونو Ù…ØªÙ†Û Ú©ÛŒÛ Ú©ÛŒÛ ØªØ¨Ø¯ÛŒÙ„ÛŒ آرو',
+'tooltip-compareselectedversions' => 'منتخب متـنو موازنÛ',
+'tooltip-watch' => 'Ú¾ÛŒÛ ØµÙØ­ÛÙˆ تان زیرÙنظرÙÛØ±Ø³ØªÛ Ø´Ø§Ù…Ù„ کورے',
+'tooltip-rollback' => '"رول بیک" ای کلکا صÙحو واپس Ø³Ø§Ø¨Ù‚Û Ø­Ø§Ù„ØªÛ Ú¯Ù†ÛŒ آلوی',
+'tooltip-undo' => '"واپس" یا لوظ آچیا Ú©Ù„Ú© کوریکو سوم Ø¬Ø³ØªÛ ØªÛ ØµÙØ­Û Ú©Ú†Ø§ ØªÛ Ù¾Ø´ÛŒÙ†Ùˆ بوی Ú¾Û’ سوم Ø¬Ø³ØªÛ ØªÙˆ واپس کوریکو ÙˆØ¬Û Ù†ÛŒÙˆÛŒØ´ÛŒÚ©Ùˆ بوس',
+'tooltip-summary' => 'ای مختصار سمری ساوزاوے',
+
+# Patrol log
+'patrol-log-diff' => '$1 نظرثانی',
+
+# Browsing diffs
+'previousdiff' => ' ↠پرانو تدوین',
+'nextdiff' => 'صÙØ­ÛÙˆ نم:',
+
+# Media information
+'file-info-size' => '$1 × $2 پکسلز, ÙÙ„ سایز: $3, MIME ٹایپ: $4',
+'file-nohires' => '<small>ھموغاری لوٹ ریزولیوشن دستیاب نیکی.</small>',
+'svg-long-desc' => 'SVG Ùایل, nominally $1 × $2 پکسلز, Ùایل سایز: $3',
+'show-big-image' => 'لوٹ کوری پشاوے',
+
+# Bad image list
+'bad_image_list' => 'شکلبند درج ذیل شیر:
+
+صر٠ÙÛرستی عناصرار (* شروع باک لکیر) شامل کورونو بونیان
+Ú©ÛŒÛ Ù„Ú©ÛŒØ±Ø§ آویلو ربط Ú©ÛŒÛ Ø®Ø±Ø§Ø¨ Ùایلو بیلیک۔
+ھتے لکیرا باقی گیاک ربطو مستثنیٰ قرار دیونو بویان، مثلاً صÙحات کورا Ú©Û Ùایل لکیرو موژا گویان۔',
+
+# Metadata
+'metadata' => 'میٹا ڈیٹا',
+'metadata-help' => 'Ú¾ÛŒÛ Ùائلا خور دی معلومات شینی، شاید ھتیت ڈیجیٹل کیمرو یا سکینران زریعا کمپیوٹرو درینو بیتی شینی وا ھیتان زریعا ھمیتان ڈیجیٹل ساوزینو بیتی شیر
+
+اگر Ùائلو ھمو اصلی Ø­Ø§Ù„ØªÛ ØªØ¨Ø¯ÛŒÙ„ Ú©Û Ú©ÙˆØ±ÙˆÙ†Ùˆ Ú¾ÙˆÛŒ تھے ای کما تÙصیلات تبدیل بیرو Ùائلو باریا موجود نیکی',
+'metadata-expand' => 'تÙصیلان پشاوے',
+'metadata-collapse' => 'درونگار تÙصیلان کھوشتاوے',
+'metadata-fields' => 'ایگز٠میٹاڈیٹا ھیارا دیونو بیرو ھوٹوان صÙحا دیونو بونی وا Ú©ÛŒØ§ÙˆØªÚ©Û Ù…ÛŒÙ¹Ø§ÚˆÛŒÙ¹Ø§ ٹیبل کھولاو Ú¾ÙˆÛŒ باقی اشناری بائی ÚˆÛŒÙالٹ کھوشت تان بÛچونی
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
+# External editor support
+'edit-externally' => 'Ú¾ÛŒÛ Ù…Ø³Ù„Ùˆ ایڈیٹ کورے',
+'edit-externally-help' => '(See the [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] for more information)
+(مزید معلوماتو بچے Ú¾ÛŒÛ Ù„Ù†Ú©Û Ø¨ÙˆØºÛ’ [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] )',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'سÙ',
+'namespacesall' => 'تھمامو',
+'monthsall' => 'سÙ',
+
+# Table pager
+'table_pager_first' => 'آویلو صÙØ­Û',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'موقعی تبدیلیان لوڑے',
+'watchlisttools-edit' => 'لوڑے یا واچ Ù„Ø³Ù¹Û ØªØ±Ù…ÛŒÙ… کورے',
+'watchlisttools-raw' => 'نوغ واچ لسٹان ایڈیٹ کورے',
+
+# Special:SpecialPages
+'specialpages' => 'اسپیشل صÙØ­Û',
+
+# Special:Tags
+'tag-filter' => '[[Special:Tags|Tag]] filter:',
+
+);
diff --git a/languages/messages/MessagesKiu.php b/languages/messages/MessagesKiu.php
index ea982df8..b03c636b 100644
--- a/languages/messages/MessagesKiu.php
+++ b/languages/messages/MessagesKiu.php
@@ -45,8 +45,8 @@ href="" class="internal"}?{/a}) basne.',
'tog-shownumberswatching' => 'Amorê karberunê şêrkerdoğu basne',
'tog-oldsig' => 'Verqaytê imza mewcude:',
'tog-fancysig' => 'İmza rê mamelê wikimeqaley bıke (bê gireo otomatik)',
-'tog-externaleditor' => 'Editorê teberi standart bıgurene (teyna serba ekspertuno, komputerê sıma de ayarê xısuşiy lazımê. [http://www.mediawiki.org/wiki/Manual:External_editors Melumato jêdêr.])',
-'tog-externaldiff' => 'Têversanaene pê programê teberi vıraze (teyna serba ekspertuno, komputerê sıma de ayarê xısuşiy lazımê. [http://www.mediawiki.org/wiki/Manual:External_editors Melumato jêdêr.])',
+'tog-externaleditor' => 'Editorê teberi standart bıgurene (teyna serba ekspertuno, komputerê sıma de ayarê xısuşiy lazımê. [//www.mediawiki.org/wiki/Manual:External_editors Melumato jêdêr.])',
+'tog-externaldiff' => 'Têversanaene pê programê teberi vıraze (teyna serba ekspertuno, komputerê sıma de ayarê xısuşiy lazımê. [//www.mediawiki.org/wiki/Manual:External_editors Melumato jêdêr.])',
'tog-showjumplinks' => 'Girê "so"y feal ke',
'tog-uselivepreview' => 'Verqayto cınde bıgurene (JavaScript) (hona cerrebnaene dero)',
'tog-forceeditsummary' => 'Mı ke xulasa kerde cı vira, hay be mı ser de',
@@ -141,15 +141,9 @@ href="" class="internal"}?{/a}) basne.',
'listingcontinuesabbrev' => 'dewam',
'index-category' => 'Pelê endeksıni',
'noindex-category' => 'Pelê bêendeksıni',
+'broken-file-category' => 'Peli be gıreunê dosyeunê sıkıtau',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''MediaWiki fist ra ser, vıraziya.'''",
-'mainpagedocfooter' => "Serba melumatê gurenaena ''wiki software''i [http://meta.wikimedia.org/wiki/Help:Contents İdarê karberi] de mıracaet ke.
-
-== Gamê verêni ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista ayarunê vırastene]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki de ÇZP]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki ra lista serbest-daena postey]",
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Heqa',
'article' => 'Pela tedeesteyu',
@@ -201,10 +195,10 @@ href="" class="internal"}?{/a}) basne.',
'history' => 'Tarixê pele',
'history_short' => 'Tarix',
'updatedmarker' => 'cıkotena mına peyêne ra dıme biya rocaniye',
-'info_short' => 'Melumat',
'printableversion' => 'Asaena çapkerdene',
'permalink' => 'Gireo daimki',
'print' => 'Çap ke',
+'view' => 'Bıvêne',
'edit' => 'Bıvurne',
'create' => 'Vıraze',
'editthispage' => 'Na pele bıvurne',
@@ -212,6 +206,7 @@ href="" class="internal"}?{/a}) basne.',
'delete' => 'Bestere',
'deletethispage' => 'Na pele bestere',
'undelete_short' => '{{PLURAL:$1|Jü vurnaişi|$1 Vurnaisu}} mestere',
+'viewdeleted_short' => '{{PLURAL:$1|Jü vurnaiso esterıte|$1 Vurnaisunê esterıtu}} basne',
'protect' => 'Bısevekne',
'protect_change' => 'bıvurne',
'protectthispage' => 'Na pele bısevekne',
@@ -297,6 +292,8 @@ $1',
'toc' => 'Tedeestey',
'showtoc' => 'basne',
'hidetoc' => 'bınımne',
+'collapsible-collapse' => 'Kılmever ke',
+'collapsible-expand' => 'Verın ke',
'thisisdeleted' => '$1i basne ya ki peyser biya?',
'viewdeleted' => '$1 basne?',
'restorelink' => '{{PLURAL:$1|jü vurnaiso esterıte|$1 vurnaisê esterıtey}}',
@@ -398,11 +395,10 @@ Kerem kerê, deqêna oncia bıcerrebnê.",
'protectedinterface' => "Na pele ''software'' rê meqalunê caunê bırnau dana, u qapana ke suıstımalu rê engel bo.",
'editinginterface' => "'''Teme:''' Sıma hao jü pela ke serba ''software'' meqalunê caunê bırnau dana, vurnenê.
Vurnaisê na pele karberunê binu rê serpela karberi kena ke bıasno.
-Serba çarnais, yardımê [http://translatewiki.net/wiki/Main_Page?setlang=kiu translatewiki.net]yê procê dos-kerdene rê diqet kerê.",
+Serba çarnais, yardımê [//translatewiki.net/wiki/Main_Page?setlang=kiu translatewiki.net]yê procê dos-kerdene rê diqet kerê.",
'sqlhidden' => '(Persê SQLi nımıteo)',
'cascadeprotected' => 'Na pele esterıtene ra sıtar biya, çıke na zerrê {{PLURAL:$1|pela ke|pelunê ke}} dera/derê be "cascading" opsiyoni kılit biya, $2 de bena ra.',
'namespaceprotected' => "'''$1''' ''namespace'' de desturê sıma be vurnaisê pelu çino.",
-'customcssjsprotected' => 'Desturê sıma be vurnaisê na pele çino, çıke nae de ayarê kesê karberê bini esto.',
'ns-specialprotected' => 'Pelê xususi nêvurrinê.',
'titleprotected' => "No sername terefê [[User:$1|$1]]i ra, afernaene ra sıtar biyo.
Sebebê ho ''$2'' dero.",
@@ -460,7 +456,7 @@ Ravêri ine rakerê u reyna bıcerrebnê.',
'nosuchuser' => 'Ebe namê "$1"i jü karber çino.
Nustena namunê karberu de herfa pil u qıze rê diqet kerê.
Nustena ho qonrol kerê, ya ki [[Special:UserLogin/signup|jü hesabo newe rakerê]].',
-'nosuchusershort' => 'Karberê do ebe namê "<nowiki>$1</nowiki>" çino.
+'nosuchusershort' => 'Karberê do ebe namê "$1" çino.
Nustena cı qontrol ke.',
'nouserspecified' => 'Gunê namê jü karberi bıdekernê.',
'login-userblocked' => 'No karber engel biyo. Cıkotene rê mısade cı nêdino.',
@@ -482,7 +478,7 @@ Kerem ke, oncia bıcerrebne.',
'usernamehasherror' => 'Namê karberi de karakteri gunê têwerte ra mebê',
'loginlanguagelabel' => 'Zon: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Parola bıvurne',
'resetpass_header' => 'Parola hesabi bıvurne',
'oldpassword' => 'Parola khane:',
@@ -506,8 +502,6 @@ Kerem ke, oncia bıcerrebne.',
'extlink_tip' => 'Girê teberi (verbendê http:// ho vira mekerê)',
'headline_sample' => 'Nustê serrêze',
'headline_tip' => 'Serrêza sewiya 2ine',
-'math_sample' => 'İta formuli cıke',
-'math_tip' => 'Formulê matematiki (formatê LaTeXi de)',
'nowiki_sample' => 'Formatê nustê huyo serbeti ita bınuse',
'nowiki_tip' => 'Ehemêt formatê wikiy mede',
'image_tip' => 'Dosya arêkerdiye',
@@ -554,7 +548,7 @@ ya ki [{{fullurl:{{FULLPAGENAME}}|action=edit}} na pele bıvurnê]</span>.',
'noarticletext-nopermission' => 'Na pele de hona thowa çino.
Tı şikina zerrê pelunê binu de [[Special:Search/{{PAGENAME}}|seba sernamê na pele cıfeteliyê]],
ya ki <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cıkotena aide rê cıfeteliyê].</span>',
-'userpage-userdoesnotexist' => 'Hesabê karberi "$1" qeyd nêbiyo.
+'userpage-userdoesnotexist' => 'Hesabê karberi "<nowiki>$1</nowiki>" qeyd nêbiyo.
Kerem ke, tı ke wazena na pele vırazê/bıvurnê, qontrol ke.',
'userpage-userdoesnotexist-view' => 'Hesabê karberi "$1" qeyd nêbiyo.',
'userinvalidcssjstitle' => "'''Teme:''' Mewzuyê \"\$1\" çino.
@@ -776,7 +770,6 @@ Diqet kerê, beno ke tedeestê {{SITENAME}} uza endi rozane niyê.",
'changepassword' => 'Parola bıvurne',
'prefs-skin' => 'Çerme',
'skin-preview' => 'Verqayt',
-'prefs-math' => 'Mat',
'datedefault' => 'Tercihi çinê',
'prefs-datetime' => 'Tarix u zeman',
'prefs-personal' => 'Dosya karberi',
@@ -794,8 +787,6 @@ Diqet kerê, beno ke tedeestê {{SITENAME}} uza endi rozane niyê.",
'columns' => 'Ustıni:',
'searchresultshead' => 'Cıcêre',
'resultsperpage' => 'Pelgê be vênıtun:',
-'contextlines' => 'Vênıtê be xetun:',
-'contextchars' => 'Xetê be zerrek:',
'stub-threshold' => 'Tertibê şêmıga <a href="#" class="stub">stub link</a> (\'\'bytes\'\'):',
'recentchangesdays' => 'Rozê ke vurnaisunê peyênun de asenê:',
'recentchangesdays-max' => 'Maksimum $1 {{PLURAL:$1|roze|roji}}',
@@ -1107,10 +1098,8 @@ Cêr [$2 pela arezekerdena dosya de] arezekerdene asnina.',
'watchlist' => 'Pela mına şêrkerdene',
'mywatchlist' => 'Lista mına şêrkerdışi',
'watchlistfor2' => 'Serba $1 ($2)',
-'addedwatch' => 'Kerd be lista şêrkerdişi ser',
'addedwatchtext' => "Pela \"[[:\$1]]\"i ilawe biye be [[Special:Watchlist|pela şêrkerdişi]].
Nara dıme, vurnaisê na pele u pela hurênaisê dawa alaqedare ita bena lista, u pele [[Special:RecentChanges|lista vurnaisunê peyênu]] de '''qolınd''' asena ke cı ra asan weçiniyo.",
-'removedwatch' => 'Lista şêrkerdişi ra vet',
'removedwatchtext' => 'Na pele "[[:$1]]" [[Special:Watchlist|lista tuya şêrkerdişi]] ra esteriya.',
'watch' => 'Şêr ke',
'watchthispage' => 'Na pele de şêr ke',
@@ -1132,7 +1121,7 @@ Nara dıme, vurnaisê na pele u pela hurênaisê dawa alaqedare ita bena lista,
Eke ferqê neticê na kerdene de bena u no kar be gorê [[{{MediaWiki:Policy-url}}|qeydunê esterıtene]] beno, wa gurêy tesdiq ke.',
'actioncomplete' => 'Kar bi temam',
'actionfailed' => 'Fealiyet era ser nêkot',
-'deletedtext' => '"<nowiki>$1</nowiki>" esteriya.
+'deletedtext' => '"$1" esteriya.
Serba diyaena esterıteyunê peyênu $2 bıvêne.',
'deletedarticle' => '"[[$1]]" esterıt',
'dellogpage' => 'Qeydê esterıtene',
@@ -1151,7 +1140,7 @@ Serba diyaena esterıteyunê peyênu $2 bıvêne.',
'protectexpiry' => 'Tarixê qediyaene:',
'protect_expiry_invalid' => 'Tarixê qediyaena nêvêreno.',
'protect_expiry_old' => 'Waxtê gurênaena peyêna vêrdiye.',
-'protect-text' => "Tı şikina halê seveknaena pela '''<nowiki>$1</nowiki>'''i ita bıvênê u bıvurnê.",
+'protect-text' => "Tı şikina halê seveknaena pela '''$1'''i ita bıvênê u bıvurnê.",
'protect-locked-access' => "Hesabê karberê to vurnaisê sewiya seveknaena rê selahiyetdar niyo.
Eyarê pela '''$1'''ina vêrdey nêyê:",
'protect-cascadeon' => 'Na pele na sate sevekiya, çıke {{PLURAL:$1|na pele de|nê pelu de}} sevekiyaena qedemeine biya feal.
@@ -1221,6 +1210,18 @@ Tı şikina sewiya sevekiyaena na pele bıvurnê, hema yê nae sevekiyaena qedem
'blockip' => 'Karberi kilıt ke',
'ipboptions' => '2 saeti:2 hours,1 roze:1 day,3 roji:3 days,1 hefte:1 week,2 heftey:2 weeks,1 asme:1 month,3 asmi:3 months,6 asmi:6 months,1 serre:1 year,bêmıdet:infinite',
'ipblocklist' => 'Karberê kilıtbiyaey',
+'blocklist-expiry' => 'Tarixê qediyaene',
+'blocklist-by' => 'İdarekero kilıtkerdoğ',
+'blocklist-params' => 'Parametrê kilıtkerdene',
+'blocklist-reason' => 'Sebeb',
+'ipblocklist-submit' => 'Cıfeteliye',
+'expiringblock' => '$1 $2 de qedino',
+'anononlyblock' => 'teyna anonim',
+'noautoblockblock' => 'kilıto otomatik qapan bi',
+'createaccountblock' => 'afernaena hesabi qapan biye',
+'emailblock' => 'e-poste kilıt bi',
+'blocklist-nousertalk' => 'pela hurênaişi ho nêşikina bıvurnê',
+'ipblocklist-empty' => 'Lista kilıtkerdişi thala.',
'blocklink' => 'kilıt ke',
'unblocklink' => 'ra ke',
'change-blocklink' => 'mani bıvurne',
@@ -1232,7 +1233,7 @@ Sebebê kılit-biyaena $1\'i: "$2"o',
'reblock-logentry' => 'kilıt-kerdena [[$1]]i hata peyê $2 $3ine vurnê',
'blocklogtext' => "No jü protokolê faeliyetê kilıt- u rakerdena karberuno.
Otomatikmen kilıt biyaiyê adresê ''IP''y lista de çinê.
-Serba men- u kilıt-biyaene nıkaêne qaytê [[Special:IPBlockList|lista kilıt-kerdena ''IP''y]] ke.",
+Serba men- u kilıt-biyaene nıkaêne qaytê [[Special:BlockList|lista kilıt-kerdena ''IP''y]] ke.",
'unblocklogentry' => "kilıt-kerdena $1'i",
'block-log-flags-anononly' => 'teyna karberê bênamey',
'block-log-flags-nocreate' => 'afernaena hesabi qapan biye',
@@ -1364,19 +1365,6 @@ Têser-kerdena jü sebebi rê xulasa de imkan dano cı.',
# Stylesheets
'common.css' => '/* CSSo ke itaro, serba çermu pêroine gurenino */',
-# Math errors
-'math_failure' => 'Analiz de xeta',
-'math_unknown_error' => 'xeta nêzanaiye',
-'math_unknown_function' => 'fonksiyono nêzanae',
-'math_lexing_error' => 'xeta grameri',
-'math_syntax_error' => 'xeta cumla',
-'math_image_error' => "Werênaisê ''PNG''y de xeta biye;
-enstale-kerdena ''latex'', ''dvips'', ''gs'', u ''convert''i qontrol ke",
-'math_bad_tmpdir' => "Sıma nêşikinê indeksê ''math temp''i de bınusê ya ki bıafernê",
-'math_bad_output' => 'Sıma nêşikinê indeksê formulunê matematiki de bınusê ya ki bıafernê',
-'math_notexvc' => "''Texvc''o gurênae çino;
-Serba areze-kerdene qaytê ''math/README''y ke.",
-
# Patrol log
'patrol-log-diff' => 'revizyon $1',
@@ -1385,11 +1373,10 @@ Serba areze-kerdene qaytê ''math/README''y ke.",
'nextdiff' => 'Vurnaena newêre →',
# Media information
-'file-info-size' => '$1 × $2 piksel, gırsênia dosya: $3, MIME tipê cı: $4',
-'file-nohires' => '<small>Tewrêna berz rovıleşiyaene nêbena.</small>',
-'svg-long-desc' => 'Dosya SVGy, seha ke $1 × $2 pixels, gırşênia dosya: $3',
-'show-big-image' => 'Rovıleşiyaena tame',
-'show-big-image-thumb' => '<small>Gırsênia verqayti: $1 × $2 piksel</small>',
+'file-info-size' => '$1 × $2 piksel, gırsênia dosya: $3, MIME tipê cı: $4',
+'file-nohires' => '<small>Tewrêna berz rovıleşiyaene nêbena.</small>',
+'svg-long-desc' => 'Dosya SVGy, seha ke $1 × $2 pixels, gırşênia dosya: $3',
+'show-big-image' => 'Rovıleşiyaena tame',
# Bad image list
'bad_image_list' => 'Sıkılo umumi niaro:
@@ -1444,7 +1431,7 @@ Variants for Chinese language
Eke dosya de peydêna vuriyais biyo ki, beno ke taê melumati gorê vurnaisê newey khan mendê.',
'metadata-expand' => 'Arezekerdu bıasne',
'metadata-collapse' => 'Arezekerdu measne',
-'metadata-fields' => "Meydanê EXIF metadataê ke na pele de benê lista, pela resımasnaene de ke tabloê metadata gına waro, gureninê.
+'metadata-fields' => "Resımê meydanê metadataê ke na pele de benê lista, pela resımasnaene de ke tabloê metadata gına waro, gureninê.
İ bini zê ''saekerdoğu'' nıminê.
* make
* model
@@ -1452,7 +1439,13 @@ Eke dosya de peydêna vuriyais biyo ki, beno ke taê melumati gorê vurnaisê ne
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Verındêni',
@@ -1462,15 +1455,13 @@ Eke dosya de peydêna vuriyais biyo ki, beno ke taê melumati gorê vurnaisê ne
# External editor support
'edit-externally' => 'Na dosya be mırecaetê de teberi bıvurne',
-'edit-externally-help' => '(Serba daêna melumati qaytê pelga [http://www.mediawiki.org/wiki/Manual:External_editors ayarê gurenaena teberi] be)',
+'edit-externally-help' => '(Serba daêna melumati qaytê pelga [//www.mediawiki.org/wiki/Manual:External_editors ayarê gurenaena teberi] be)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'pêro',
-'imagelistall' => 'pêro',
-'watchlistall2' => 'pêro',
-'namespacesall' => 'pêro',
-'monthsall' => 'pêro',
-'limitall' => 'pêro',
+'watchlistall2' => 'pêro',
+'namespacesall' => 'pêro',
+'monthsall' => 'pêro',
+'limitall' => 'pêro',
# action=purge
'confirm_purge_button' => 'Temam',
diff --git a/languages/messages/MessagesKk_arab.php b/languages/messages/MessagesKk_arab.php
index 2e4b6867..3a1c5ab8 100644
--- a/languages/messages/MessagesKk_arab.php
+++ b/languages/messages/MessagesKk_arab.php
@@ -45,13 +45,6 @@ $separatorTransformTable = array(
',' => 'Ù¬', # &#x066c;
);
-$defaultUserOptionOverrides = array(
- # Swap sidebar to right side by default
- 'quickbar' => 2,
- # Underlines seriously harm legibility. Force off:
- 'underline' => 0,
-);
-
$extraUserToggles = array(
'nolangconversion'
);
@@ -317,85 +310,85 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'شىنجىرلى_ايداعىشتار', 'شىنجىرلى_ايداتۋلار' ),
+ 'Allmessages' => array( 'بارلىق_حابارلار' ),
+ 'Allpages' => array( 'بارلىق_بەتتەر' ),
+ 'Ancientpages' => array( 'ەسكى_بەتتەر' ),
+ 'Block' => array( 'جايدى_بۇعاتتاۋ', 'IP_بۇعاتتاۋ' ),
+ 'Blockme' => array( 'وزدىكتىك_بۇعاتتاۋ', 'وزدىك_بۇعاتتاۋ', 'مەنى_بۇعاتتاۋ' ),
+ 'Booksources' => array( 'كىتاپ_قاينارلارى' ),
'BrokenRedirects' => array( 'جارامسىز_ايداعىشتار', 'جارامسىز_ايداتۋلار' ),
- 'Disambiguations' => array( 'ايرىقتى_بەتتەر' ),
- 'Userlogin' => array( 'قاتىسۋشى_كىرۋى' ),
- 'Userlogout' => array( 'قاتىسۋشى_شىعۋى' ),
+ 'Categories' => array( 'ساناتتار' ),
+ 'ChangePassword' => array( 'قۇپىيا_سوزدى_قايتارۋ' ),
+ 'Confirmemail' => array( 'قۇپتاۋ_حات' ),
+ 'Contributions' => array( 'ۇلەسى' ),
'CreateAccount' => array( 'جاڭا_تىركەلگى', 'تىركەلگى_جاراتۋ' ),
- 'Preferences' => array( 'باپتالىمدار', 'باپتاۋ' ),
- 'Watchlist' => array( 'باقىلاۋ_تىزىمى' ),
- 'Recentchanges' => array( 'جۋىقتاعى_وزگەرىستەر' ),
- 'Upload' => array( 'قوتارىپ_بەرۋ', 'قوتارۋ' ),
+ 'Deadendpages' => array( 'تۇيىق_بەتتەر' ),
+ 'Disambiguations' => array( 'ايرىقتى_بەتتەر' ),
+ 'DoubleRedirects' => array( 'شىنجىرلى_ايداعىشتار', 'شىنجىرلى_ايداتۋلار' ),
+ 'Emailuser' => array( 'حات_جىبەرۋ' ),
+ 'Export' => array( 'سىرتقا_بەرۋ' ),
+ 'Fewestrevisions' => array( 'ەڭ_از_تۇزەتىلگەن' ),
+ 'Import' => array( 'سىرتتان_الۋ' ),
+ 'Invalidateemail' => array( 'قۇپتاماۋ_حاتى' ),
+ 'BlockList' => array( 'بۇعاتتالعاندار' ),
+ 'Listadmins' => array( 'اكىمشىلەر', 'اكىمشى_تىزىمى' ),
+ 'Listbots' => array( 'بوتتار', 'ٴبوتتار_ٴتىزىمى' ),
'Listfiles' => array( 'سۋرەت_تىزىمى' ),
- 'Newimages' => array( 'جاڭا_سۋرەتتەر' ),
- 'Listusers' => array( 'قاتىسۋشىلار', 'قاتىسۋشى_تىزىمى' ),
'Listgrouprights' => array( 'توپ_قۇقىقتارى_تىزىمى' ),
- 'Statistics' => array( 'ساناق' ),
- 'Randompage' => array( 'كەزدەيسوق', 'كەزدەيسوق_بەت' ),
+ 'Listredirects' => array( 'ٴايداتۋ_ٴتىزىمى' ),
+ 'Listusers' => array( 'قاتىسۋشىلار', 'قاتىسۋشى_تىزىمى' ),
+ 'Lockdb' => array( 'دەرەكقوردى_قۇلىپتاۋ' ),
+ 'Log' => array( 'جۋرنال', 'جۋرنالدار' ),
'Lonelypages' => array( 'ساياق_بەتتەر' ),
- 'Uncategorizedpages' => array( 'ساناتسىز_بەتتەر' ),
- 'Uncategorizedcategories' => array( 'ساناتسىز_ساناتتار' ),
- 'Uncategorizedimages' => array( 'ساناتسىز_سۋرەتتەر' ),
- 'Uncategorizedtemplates' => array( 'ساناتسىز_ۇلگىلەر' ),
- 'Unusedcategories' => array( 'پايدالانىلماعان_ساناتتار' ),
- 'Unusedimages' => array( 'پايدالانىلماعان_سۋرەتتەر' ),
- 'Wantedpages' => array( 'تولتىرىلماعان_بەتتەر', 'جارامسىز_سىلتەمەلەر' ),
- 'Wantedcategories' => array( 'تولتىرىلماعان_ساناتتار' ),
+ 'Longpages' => array( 'ۇزىن_بەتتەر', 'ۇلكەن_بەتتەر' ),
+ 'MergeHistory' => array( 'تارىيح_بىرىكتىرۋ' ),
+ 'MIMEsearch' => array( 'MIME_تۇرىمەن_ىزدەۋ' ),
+ 'Mostcategories' => array( 'ەڭ_كوپ_ساناتتار_بارى' ),
+ 'Mostimages' => array( 'ەڭ_كوپ_پايدالانىلعان_سۋرەتتەر', 'ەڭ_كوپ_سۋرەتتەر_بارى' ),
'Mostlinked' => array( 'ەڭ_كوپ_سىلتەنگەن_بەتتەر' ),
'Mostlinkedcategories' => array( 'ەڭ_كوپ_پايدالانىلعان_ساناتتار', 'ەڭ_كوپ_سىلتەنگەن_ساناتتار' ),
'Mostlinkedtemplates' => array( 'ەڭ_كوپ_پايدالانىلعان_ۇلگىلەر', 'ەڭ_كوپ_سىلتەنگەن_ۇلگىلەر' ),
- 'Mostimages' => array( 'ەڭ_كوپ_پايدالانىلعان_سۋرەتتەر', 'ەڭ_كوپ_سۋرەتتەر_بارى' ),
- 'Mostcategories' => array( 'ەڭ_كوپ_ساناتتار_بارى' ),
'Mostrevisions' => array( 'ەڭ_كوپ_تۇزەتىلگەن', 'ەڭ_كوپ_نۇسقالار_بارى' ),
- 'Fewestrevisions' => array( 'ەڭ_از_تۇزەتىلگەن' ),
- 'Shortpages' => array( 'قىسقا_بەتتەر' ),
- 'Longpages' => array( 'ۇزىن_بەتتەر', 'ۇلكەن_بەتتەر' ),
+ 'Movepage' => array( 'بەتتى_جىلجىتۋ' ),
+ 'Mycontributions' => array( 'ۇلەسىم' ),
+ 'Mypage' => array( 'جەكە_بەتىم' ),
+ 'Mytalk' => array( 'تالقىلاۋىم' ),
+ 'Newimages' => array( 'جاڭا_سۋرەتتەر' ),
'Newpages' => array( 'جاڭا_بەتتەر' ),
- 'Ancientpages' => array( 'ەسكى_بەتتەر' ),
- 'Deadendpages' => array( 'تۇيىق_بەتتەر' ),
+ 'Popularpages' => array( 'ەڭ_كوپ_قارالعان_بەتتەر', 'ايگىلى_بەتتەر' ),
+ 'Preferences' => array( 'باپتالىمدار', 'باپتاۋ' ),
+ 'Prefixindex' => array( 'ٴباستاۋىش_ٴتىزىمى' ),
'Protectedpages' => array( 'قورعالعان_بەتتەر' ),
'Protectedtitles' => array( 'قورعالعان_تاقىرىپتار', 'قورعالعان_اتاۋلار' ),
- 'Allpages' => array( 'بارلىق_بەتتەر' ),
- 'Prefixindex' => array( 'ٴباستاۋىش_ٴتىزىمى' ),
- 'Ipblocklist' => array( 'بۇعاتتالعاندار' ),
- 'Specialpages' => array( 'ارنايى_بەتتەر' ),
- 'Contributions' => array( 'ۇلەسى' ),
- 'Emailuser' => array( 'حات_جىبەرۋ' ),
- 'Confirmemail' => array( 'قۇپتاۋ_حات' ),
- 'Whatlinkshere' => array( 'مىندا_سىلتەگەندەر' ),
+ 'Randompage' => array( 'كەزدەيسوق', 'كەزدەيسوق_بەت' ),
+ 'Randomredirect' => array( 'КедейÑоқ_айдағыш', 'КедейÑоқ_айдату' ),
+ 'Recentchanges' => array( 'جۋىقتاعى_وزگەرىستەر' ),
'Recentchangeslinked' => array( 'سىلتەنگەندەردىڭ_وزگەرىستەرى' ),
- 'Movepage' => array( 'بەتتى_جىلجىتۋ' ),
- 'Blockme' => array( 'وزدىكتىك_بۇعاتتاۋ', 'وزدىك_بۇعاتتاۋ', 'مەنى_بۇعاتتاۋ' ),
- 'Booksources' => array( 'كىتاپ_قاينارلارى' ),
- 'Categories' => array( 'ساناتتار' ),
- 'Export' => array( 'سىرتقا_بەرۋ' ),
- 'Version' => array( 'نۇسقاسى' ),
- 'Allmessages' => array( 'بارلىق_حابارلار' ),
- 'Log' => array( 'جۋرنال', 'جۋرنالدار' ),
- 'Blockip' => array( 'جايدى_بۇعاتتاۋ', 'IP_بۇعاتتاۋ' ),
+ 'Revisiondelete' => array( 'تۇزەتۋ_جويۋ', 'نۇسقانى_جويۋ' ),
+ 'Search' => array( 'ىزدەۋ' ),
+ 'Shortpages' => array( 'قىسقا_بەتتەر' ),
+ 'Specialpages' => array( 'ارنايى_بەتتەر' ),
+ 'Statistics' => array( 'ساناق' ),
+ 'Uncategorizedcategories' => array( 'ساناتسىز_ساناتتار' ),
+ 'Uncategorizedimages' => array( 'ساناتسىز_سۋرەتتەر' ),
+ 'Uncategorizedpages' => array( 'ساناتسىز_بەتتەر' ),
+ 'Uncategorizedtemplates' => array( 'ساناتسىز_ۇلگىلەر' ),
'Undelete' => array( 'جويۋدى_بولدىرماۋ', 'جويىلعاندى_قايتارۋ' ),
- 'Import' => array( 'سىرتتان_الۋ' ),
- 'Lockdb' => array( 'دەرەكقوردى_قۇلىپتاۋ' ),
'Unlockdb' => array( 'دەرەكقوردى_قۇلىپتاماۋ' ),
- 'Userrights' => array( 'قاتىسۋشى_قۇقىقتارى' ),
- 'MIMEsearch' => array( 'MIME_تۇرىمەن_ىزدەۋ' ),
- 'Unwatchedpages' => array( 'باقىلانىلماعان_بەتتەر' ),
- 'Listredirects' => array( 'ٴايداتۋ_ٴتىزىمى' ),
- 'Revisiondelete' => array( 'تۇزەتۋ_جويۋ', 'نۇسقانى_جويۋ' ),
+ 'Unusedcategories' => array( 'پايدالانىلماعان_ساناتتار' ),
+ 'Unusedimages' => array( 'پايدالانىلماعان_سۋرەتتەر' ),
'Unusedtemplates' => array( 'پايدالانىلماعان_ۇلگىلەر' ),
- 'Randomredirect' => array( 'КедейÑоқ_айдағыш', 'КедейÑоқ_айдату' ),
- 'Mypage' => array( 'جەكە_بەتىم' ),
- 'Mytalk' => array( 'تالقىلاۋىم' ),
- 'Mycontributions' => array( 'ۇلەسىم' ),
- 'Listadmins' => array( 'اكىمشىلەر', 'اكىمشى_تىزىمى' ),
- 'Listbots' => array( 'بوتتار', 'ٴبوتتار_ٴتىزىمى' ),
- 'Popularpages' => array( 'ەڭ_كوپ_قارالعان_بەتتەر', 'ايگىلى_بەتتەر' ),
- 'Search' => array( 'ىزدەۋ' ),
- 'Resetpass' => array( 'قۇپىيا_سوزدى_قايتارۋ' ),
+ 'Unwatchedpages' => array( 'باقىلانىلماعان_بەتتەر' ),
+ 'Upload' => array( 'قوتارىپ_بەرۋ', 'قوتارۋ' ),
+ 'Userlogin' => array( 'قاتىسۋشى_كىرۋى' ),
+ 'Userlogout' => array( 'قاتىسۋشى_شىعۋى' ),
+ 'Userrights' => array( 'قاتىسۋشى_قۇقىقتارى' ),
+ 'Version' => array( 'نۇسقاسى' ),
+ 'Wantedcategories' => array( 'تولتىرىلماعان_ساناتتار' ),
+ 'Wantedpages' => array( 'تولتىرىلماعان_بەتتەر', 'جارامسىز_سىلتەمەلەر' ),
+ 'Watchlist' => array( 'باقىلاۋ_تىزىمى' ),
+ 'Whatlinkshere' => array( 'مىندا_سىلتەگەندەر' ),
'Withoutinterwiki' => array( 'ۋىيكىي-ارالىقسىزدار' ),
- 'MergeHistory' => array( 'تارىيح_بىرىكتىرۋ' ),
- 'Invalidateemail' => array( 'قۇپتاماۋ_حاتى' ),
);
# -------------------------------------------------------------------
@@ -516,14 +509,6 @@ $messages = array(
'category-file-count-limited' => 'اعىمداعى ساناتتا كەلەسى $1 Ùايل بار.',
'listingcontinuesabbrev' => '(جالع.)',
-'mainpagetext' => "'''مەدىياۋىيكىي بۋماسى ٴساتتى ورناتىلدى.'''",
-'mainpagedocfooter' => 'ۋىيكىي باعدارلامالىق جاساقتاماسىن قالاي قولداناتىن اقپاراتى ٴۇشىن [http://meta.wikimedia.org/wiki/Help:Contents پايدالانۋشىلىق نۇسقاۋلارىنان] كەڭەس الىڭىز.
-
-== باستاۋ ٴۇشىن ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings باپتالىم قالاۋلارىنىڭ ٴتىزىمى]
-* [http://www.mediawiki.org/wiki/Manual:FAQ مەدىياۋىيكىيدىڭ جىيى قويىلعان ساۋالدارى]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce مەدىياۋىيكىي شىعۋ تۋرالى حات تاراتۋ ٴتىزىمى]',
-
'about' => 'جوبا تۋرالى',
'article' => 'ماعلۇمات بەتى',
'newwindow' => '(جاڭا تەرەزەدە)',
@@ -557,7 +542,6 @@ $messages = array(
'history' => 'بەت تارىيحى',
'history_short' => 'تارىيحى',
'updatedmarker' => 'سوڭعى كەلىپ-كەتۋىمنەن بەرى جاڭالانعان',
-'info_short' => 'مالىمەت',
'printableversion' => 'باسىپ شىعارۋ ٴۇشىن',
'permalink' => 'تۇراقتى سىلتەمە',
'print' => 'باسىپ شىعارۋ',
@@ -735,12 +719,11 @@ MySQL قايتارعان قاتەسى «$3: $4»',
'protectedinterface' => 'بۇل بەت باعدارلامالىق جاساقتامانىڭ تىلدەسۋ ٴماتىنىن جەتىستىرەدى, سوندىقتان قىيياناتتى قاقپايلاۋ ٴۇشىن وزگەرتۋى قۇلىپتالعان.',
'editinginterface' => "'''قۇلاقتاندىرۋ:''' باعدارلامالىق جاساقتامانىڭ تىلدەسۋ ٴماتىنىن جەتىستىرەتىن بەتىن وڭدەپ جاتىرسىز.
بۇل بەتتىڭ وزگەرتۋى باسقا قاتىسۋشىلارعا پايدالانۋشىلىق تىلدەسۋى قالاي كورىنەتىنە اسەر ەتەدى.
-اۋدارمالار ٴۇشىن, MediaWiki باعدارلاماسىن جەرسىندىرۋ [http://translatewiki.net/wiki/Main_Page?setlang=kk translatewiki.net جوباسى] ارقىلى قاراپ شەشىڭىز.",
+اۋدارمالار ٴۇشىن, MediaWiki باعدارلاماسىن جەرسىندىرۋ [//translatewiki.net/wiki/Main_Page?setlang=kk translatewiki.net جوباسى] ارقىلى قاراپ شەشىڭىز.",
'sqlhidden' => '(SQL سۇرانىمى جاسىرىلعان)',
'cascadeprotected' => 'بۇل بەت وڭدەۋدەن قورعالعان, سەبەبى بۇل كەلەسى «باۋلى قورعاۋى» قوسىلعان {{PLURAL:$1|بەتتىڭ|بەتتەردىڭ}} كىرىكبەتى:
$2',
'namespaceprotected' => "'''$1''' ەسىم اياسىنداعى بەتتەردى وڭدەۋ ٴۇشىن رۇقساتىڭىز جوق.",
-'customcssjsprotected' => 'بۇل بەتتى وڭدەۋگە رۇقساتىڭىز جوق, سەبەبى مىندا وزگە قاتىسۋشىنىڭ جەكە باپتاۋلارى بار.',
'ns-specialprotected' => '{{ns:special}} ەسىم اياسىنداعى بەتتەر وڭدەلىنبەيدى',
'titleprotected' => "بۇل تاقىرىپ اتى باستاۋدان [[User:$1|$1]] قورعادى.
كەلتىرىلگەن سەبەبى: ''$2''.",
@@ -830,7 +813,7 @@ $2',
ەگەر بۇل تىركەلگى قاتەلىكپەن جاسالسا, وسى حابارعا ەلەمەۋىڭىز مۇمكىن.',
'loginlanguagelabel' => 'ٴتىل: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'تىركەلگىنىڭ قۇپىييا ٴسوزىن وزگەرتۋ',
'resetpass_announce' => 'حاتپەن جىبەرىلگەن ۋاقىتشا كودىمەن كىرگەنسىز.
كىرۋىڭىزدى ٴبىتىرۋ ٴۇشىن, جاڭا قۇپىييا ٴسوزىڭىزدى مىندا ەنگىزۋىڭىز ٴجون:',
@@ -853,8 +836,6 @@ $2',
'extlink_tip' => 'شەتتىك سىلتەمە (الدىنان http:// ەنگىزۋىن ۇمىتپاڭىز)',
'headline_sample' => 'باس جول ٴماتىنى',
'headline_tip' => '2-ٴشى دەڭگەيلى باس جول',
-'math_sample' => 'ورنەكتى مىندا ەنگىزىڭىز',
-'math_tip' => 'ماتەماتىيكا ورنەگى (LaTeX)',
'nowiki_sample' => 'پىشىمدەلىنبەگەن ٴماتىندى مىندا ەنگىزىڭىز',
'nowiki_tip' => 'ۋىيكىي ٴپىشىمىن ەلەمەۋ',
'image_tip' => 'ەندىرىلگەن Ùايل',
@@ -929,7 +910,7 @@ IP مەكەنجايىڭىز بۇل بەتتىڭ تۇزەتۋ تارىيحىندØ
وسىنداي IP مەكەنجاي بىرنەشە قاتىسۋشىعا ورتاقتاستىرىلعان بولۋى مۇمكىن.
ەگەر ٴسىز تىركەلگىسىز قاتىسۋشى بولساڭىز جانە سىزگە قاتىسسىز ماندەمەلەر جىبەرىلگەنىن سەزسەڭىز, باسقا تىركەلگىسىز قاتىسۋشىلارمەن ارالاستىرماۋى ٴۇشىن [[Special:UserLogin|تىركەلىڭىز نە كىرىڭىز]].''",
'noarticletext' => 'بۇل بەتتە اعىمدا ەش ٴماتىن جوق, باسقا بەتتەردەن وسى بەت اتاۋىن [[Special:Search/{{PAGENAME}}|ىزدەپ كورۋىڭىزگە]] نەمەسە وسى بەتتى [{{fullurl:{{FULLPAGENAME}}|action=edit}} تۇزەتۋىڭىزگە] بولادى.',
-'userpage-userdoesnotexist' => '«$1» قاتىسۋشى تىركەلگىسى جازىپ الىنباعان. بۇل بەتتى باستاۋ/وڭدەۋ تالابىڭىزدى تەكسەرىپ شىعىڭىز.',
+'userpage-userdoesnotexist' => '«<nowiki>$1</nowiki>» قاتىسۋشى تىركەلگىسى جازىپ الىنباعان. بۇل بەتتى باستاۋ/وڭدەۋ تالابىڭىزدى تەكسەرىپ شىعىڭىز.',
'clearyourcache' => "'''اڭعارتپا:''' ساقتاعاننان كەيىن, وزگەرىستەردى كورۋ ٴۇشىن شولعىش بۇركەمەسىن وراعىتۋ ىقتىيمال. '''Mozilla / Firefox / Safari:''' ''قايتا جۇكتەۋ'' باتىرماسىن نۇقىعاندا ''Shift'' تۇتىڭىز, نە ''Ctrl-Shift-R'' باسىڭىز (Apple Mac — ''Cmd-Shift-R''); '''IE:''' ''جاڭارتۋ'' باتىرماسىن نۇقىعاندا ''Ctrl'' تۇتىڭىز, نە ''Ctrl-F5'' باسىڭىز; '''Konqueror:''': ''جاڭارتۋ'' باتىرماسىن جاي نۇقىڭىز, نە ''F5'' باسىڭىز; '''Opera''' پايدانۋشىلارى ''قۇرالدار→باپتالىمدار'' دەگەنگە بارىپ بۇركەمەسىن تولىق تازارتۋ ٴجون.",
'usercssyoucanpreview' => "'''اقىل-كەڭەس:''' جاڭا CSS Ùايلىن ساقتاۋ الدىندا «قاراپ شىعۋ» باتىرماسىن قولدانىپ سىناقتاڭىز.",
'userjsyoucanpreview' => "'''اقىل-كەڭەس:''' جاڭا JS Ùايلىن ساقتاۋ الدىندا «قاراپ شىعۋ» باتىرماسىن قولدانىپ سىناقتاڭىز.",
@@ -1204,7 +1185,6 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
'changepassword' => 'قۇپىييا ٴسوزدى وزگەرتۋ',
'prefs-skin' => 'مانەرلەر',
'skin-preview' => 'قاراپ شىعۋ',
-'prefs-math' => 'ورنەكتەر',
'datedefault' => 'ەش قالاۋسىز',
'prefs-datetime' => 'ۋاقىت',
'prefs-personal' => 'جەكە دەرەكتەرى',
@@ -1220,8 +1200,6 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
'columns' => 'باعاندار:',
'searchresultshead' => 'ىزدەۋ',
'resultsperpage' => 'بەت سايىن ناتىيجە سانى:',
-'contextlines' => 'ناتىيجە سايىن جول سانى:',
-'contextchars' => 'جول سايىن تاڭبا سانى:',
'stub-threshold' => '<a href="#" class="stub">بىتەمە سىلتەمەسىن</a> پىشىمدەۋ تابالدىرىعى (بايت):',
'recentchangesdays' => 'جۇىقتاعى وزگەرىستەرىندە كورسەتپەك كۇن سانى:',
'recentchangescount' => 'جۋىقتاعى وزگەرىستەردىندە, تارىيح جانە جۋرنال بەتتەرىندە كورسەتپەك وڭدەمە سانى:',
@@ -1475,10 +1453,6 @@ $3 كەلتىرىلگەن سەبەبى: ''$2''",
'watchthisupload' => 'بۇل بەتتى باقىلاۋ',
'filewasdeleted' => 'بۇل اتاۋى بار Ùايل بۇرىن قوتارىپ بەرىلگەن دە بەرى ÙƒÛ•Ù„Û• جويىلعان.
بۇنى قايتا قوتارىپ بەرۋ الدىنان $1 دەگەندى تەكسەرىپ شىعىڭىز.',
-'upload-wasdeleted' => "'''قۇلاقتاندىرۋ: الدىندا جويىلعان Ùايلدى قوتارىپ بەرمەكسىز.'''
-
-بۇل Ùايلدى قوتارىپ بەرۋىن جالعاستىرۋ ٴۇشىن بۇنىڭ ىڭعايلىعىن تەكسەرىپ شىعۋىڭىز ٴجون.
-قولايلى بولۋى ٴۇشىن بۇل Ùايلدىڭ جويۋ جۋرنالى كەلتىرىلگەن:",
'filename-bad-prefix' => "قوتارىپ بەرمەك Ùايلىڭىزدىڭ اتاۋى '''«$1» ''' دەپ باستالادى, مىناداي سىيپاتتاۋسىز اتاۋدى ادەتتە ساندىق كامەرالار وزدىكتىك بەرەدى.
Ùايلىڭىزعا سىيپاتتىلاۋ اتاۋدى تاڭداڭىز.",
'upload-success-subj' => 'ٴساتتى قوتارىپ بەرىلدى',
@@ -1539,7 +1513,6 @@ URL دۇرىس ەكەندىگىن جانە توراپ ىستەپ تۇرعانىÙ
'linkstoimage' => 'بۇل Ùايلعا كەلەسى {{PLURAL:$1|بەت|$1 بەت}} سىلتەيدى:',
'nolinkstoimage' => 'بۇل Ùايلعا Û•Ø´ بەت سىلتەمەيدى.',
'morelinkstoimage' => 'بۇل Ùايلدىڭ [[Special:WhatLinksHere/$1|كوبىرەك سىلتەمەلەرىن]] قاراۋ.',
-'redirectstofile' => 'كەلەسى {{PLURAL:$1|Ùايل|$1 Ùايل}} بۇل Ùايلعا ايدايدى:',
'duplicatesoffile' => 'كەلەسى {{PLURAL:$1|Ùايل بۇل Ùايلدىڭ تەلنۇسقاسى|$1 Ùايل بۇل Ùايلدىڭ تەلنۇسقالارى}}:',
'sharedupload' => 'بۇل Ùايل ورتاق قويماعا قوتارىپ بەرىلگەن سوندىقتان باسقا جوبالاردا قولدانۋى مۇمكىن.',
'uploadnewversion-linktext' => 'بۇل Ùايلدىڭ جاڭا نۇسقاسىن قوتارىپ بەرۋ',
@@ -1781,10 +1754,8 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlistanontext' => 'باقىلاۋ تىزىمىڭىزدەگى دانالاردى قاراۋ, نە وڭدەۋ ٴۇشىن $1 كەرەك.',
'watchnologin' => 'كىرمەگەنسىز',
'watchnologintext' => 'باقىلاۋ ٴتىزىمىڭىزدى وزگەرتۋ ٴۇشىن [[Special:UserLogin|كىرۋىڭىز]] ٴجون.',
-'addedwatch' => 'باقىلاۋ تىزىمىنە ۇستەلدى',
'addedwatchtext' => "«[[:$1]]» بەتى [[{{#special:Watchlist}}|باقىلاۋ تىزىمىڭىزگە]] ۇستەلدى.
بۇل بەتتىڭ جانە بايلانىستى تالقىلاۋ بەتىنىڭ كەلەشەكتەگى وزگەرىستەرى مىندا تىزىمدەلىنەدى دە, جانە بەتتىڭ اتاۋى جەڭىل تابىلۋ ٴۇشىن [[{{#special:Recentchanges}}|جۋىقتاعى وزگەرىستەر تىزىمىندە]] '''جۋان ارپىمەن''' كورسەتىلەدى.",
-'removedwatch' => 'باقىلاۋ تىزىمىڭىزدەن الاستالدى',
'removedwatchtext' => '«[[:$1]]» بەتى باقىلاۋ تىزىمىڭىزدەن الاستالدى.',
'watch' => 'باقىلاۋ',
'watchthispage' => 'بەتتى باقىلاۋ',
@@ -1837,10 +1808,10 @@ $NEWPAGE
----
باقىلاۋ ٴتىزىمىڭىزدىڭ باپتاۋلىرىن وزگەرتۋ ٴۇشىن, مىندا كەلىپ-كەتىڭىز:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
سىن-پىكىر بەرۋ جانە بىلايعى جاردەم الۋ ٴۇشىن:
-{{fullurl:{{{{ns:mediawiki}}:Helppage}}}}',
+{{canonicalurl:{{{{ns:mediawiki}}:Helppage}}}}',
# Delete
'deletepage' => 'بەتتى جويۋ',
@@ -2046,7 +2017,6 @@ $1',
'blockiptext' => 'تومەندەگى ٴپىشىن قاتىسۋشىنىڭ جازۋ رۇقساتىن بەلگىلى IP مەكەنجايىمەن نە اتىمەن بۇعاتتاۋ ٴۇشىن قولدانىلادى.
بۇنى تەك بۇزاقىلىقتى قاقپايلاۋ ٴۇشىن جانە دە [[{{{{ns:mediawiki}}:Policy-url}}|ەرەجەلەر]] بويىنشا اتقارۋىڭىز ٴجون.
تومەندە ٴتىيىستى سەبەبىن تولتىرىپ كورسەتىڭىز (مىسالى, دايەككە بۇزاقىلىقپەن وزگەرتكەن بەتتەردى كەلتىرىپ).',
-'ipaddress' => 'IP مەكەنجايى:',
'ipadressorusername' => 'IP مەكەنجايى نە قاتىسۋشى اتى:',
'ipbexpiry' => 'مەرزىمى بىتپەك:',
'ipbreason' => 'سەبەبى:',
@@ -2059,7 +2029,6 @@ $1',
** قوقانداۋ/قۋعىنداۋ مىنەزقۇلىق
** بىرنەشە رەت تىركەلىپ قىيياناتتاۋ
** ورەسكەل قاتىسۋشى اتى',
-'ipbanononly' => 'تەك تىركەلگىسىز قاتىسۋشىلاردى بۇعاتتاۋ',
'ipbcreateaccount' => 'تىركەلۋدى قاقپايلاۋ',
'ipbemailban' => 'قاتىسۋشى ە-پوشتامەن حات جونەلتۋىن قاقپايلاۋ',
'ipbenableautoblock' => 'بۇل قاتىسۋشى سوڭعى قولدانعان IP مەكەنجايىن, جانە كەيىن وڭدەۋگە بايقاپ كورگەن ٴار IP مەكەنجايلارىن وزبۇعاتتاۋى',
@@ -2085,9 +2054,7 @@ $1',
'unblocked-id' => '$1 بۇعاتتاۋ الاستالدى',
'ipblocklist' => 'بۇعاتتالعان قاتىسۋشى / IP مەكەنجاي ٴتىزىمى',
'ipblocklist-legend' => 'بۇعاتتالعان قاتىسۋشىنى تابۋ',
-'ipblocklist-username' => 'قاتىسۋشى اتى / IP مەكەنجايى:',
'ipblocklist-submit' => 'ىزدە',
-'blocklistline' => '$1, $2 $3 دەگەندى بۇعاتتادى ($4)',
'infiniteblock' => 'مانگى',
'expiringblock' => 'مەرزىمى بىتپەك: $1 $2',
'anononlyblock' => 'تەك تىركەلگىسىزدەردى',
@@ -2230,7 +2197,7 @@ MediaWiki جۇيەسىنىڭ [[{{#special:Import}}|سىرتتان الۋ بەتÙ
'allmessagesdefault' => 'ادەپكى ٴماتىنى',
'allmessagescurrent' => 'اعىمدىق ٴماتىنى',
'allmessagestext' => 'مىندا {{ns:mediawiki}} ەسىم اياسىندا جەتىمدى جۇيە حابار ٴتىزىمى بەرىلەدى.
-ەگەر امبەباپ MediaWiki جەرسىندىرۋگە ۇلەس قوسقىڭىز كەلسە [http://www.mediawiki.org/wiki/Localisation MediaWiki جەرسىندىرۋ بەتىنە] جانە [http://translatewiki.net translatewiki.net جوباسىنا] بارىپ شىعىڭىز.',
+ەگەر امبەباپ MediaWiki جەرسىندىرۋگە ۇلەس قوسقىڭىز كەلسە [//www.mediawiki.org/wiki/Localisation MediaWiki جەرسىندىرۋ بەتىنە] جانە [//translatewiki.net translatewiki.net جوباسىنا] بارىپ شىعىڭىز.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' وشىرىلگەن سەبەبىنەن '''{{ns:special}}:AllMessages''' بەتى قولدانىلمايدى.",
# Thumbnails
@@ -2366,9 +2333,7 @@ MediaWiki جۇيەسىنىڭ [[{{#special:Import}}|سىرتتان الۋ بەتÙ
'modern.js' => '/* مىنداعى JavaScript تەك «زاماناۋىي» (modern) مانەرىن پايدالانۋشىلار ٴۇشىن جەگىلەدى */',
# Metadata
-'nodublincore' => 'بۇل سەرۆەردە «Dublin Core RDF» ٴتۇرى قوسىمشا دەرەكتەرى وشىرىلگەن.',
-'nocreativecommons' => 'بۇل سەرۆەردە «Creative Commons RDF» ٴتۇرى قوسىمشا دەرەكتەرى وشىرىلگەن.',
-'notacceptable' => 'تۇتىنعىشىڭىز وقىي الاتىن ٴپىشىمى بار دەرەكتەردى بۇل ۋىيكىي سەرۆەر جەتىستىرە المايدى.',
+'notacceptable' => 'تۇتىنعىشىڭىز وقىي الاتىن ٴپىشىمى بار دەرەكتەردى بۇل ۋىيكىي سەرۆەر جەتىستىرە المايدى.',
# Attribution
'anonymous' => '{{SITENAME}} تىركەلگىسىز قاتىسۋشى(لارى)',
@@ -2389,14 +2354,6 @@ MediaWiki جۇيەسىنىڭ [[{{#special:Import}}|سىرتتان الۋ بەتÙ
'spam_reverting' => '$1 دەگەنگە سىلتەمەلەرى جوق سوڭعى نۇسقاسىنا قايتارىلدى',
'spam_blanking' => '$1 دەگەنگە سىلتەمەلەرى بار بارلىق تۇزەتۋلەر تازارتىلدى',
-# Info page
-'infosubtitle' => 'بەت تۋرالى مالىمەت',
-'numedits' => 'وڭدەمە سانى (بەت): $1',
-'numtalkedits' => 'وڭدەمە سانى (تالقىلاۋ بەتى): $1',
-'numwatchers' => 'باقىلاۋشى سانى: $1',
-'numauthors' => 'ٴارتۇرلى اۋتور سانى (بەت): $1',
-'numtalkauthors' => 'ٴارتۇرلى اۋتور سانى (تالقىلاۋ بەتى): $1',
-
# Skin names
'skinname-standard' => 'داعدىلى (standard)',
'skinname-nostalgia' => 'اڭساۋ (nostalgia)',
@@ -2407,27 +2364,6 @@ MediaWiki جۇيەسىنىڭ [[{{#special:Import}}|سىرتتان الۋ بەتÙ
'skinname-simple' => 'كادىمگى (simple)',
'skinname-modern' => 'زاماناۋىي (modern)',
-# Math options
-'mw_math_png' => 'ارقاشان PNG پىشىنىمەن كورسەتكىز',
-'mw_math_simple' => 'ەگەر وتە قاراپايىم بولسا — HTML, ايتپەسە PNG',
-'mw_math_html' => 'ەگەر ىقتىيمال بولسا — HTML, ايتپەسە PNG',
-'mw_math_source' => 'بۇنى TeX پىشىمىندە قالدىر (ماتىندىك شولعىشتارعا)',
-'mw_math_modern' => 'وسى زامانعى شولعىشتارىنا ۇسىنىلادى',
-'mw_math_mathml' => 'ەگەر ىقتىيمال بولسا — MathML (سىناقتاما)',
-
-# Math errors
-'math_failure' => 'قۇرىلىمىن تالداتۋى ٴساتسىز ٴبىتتى',
-'math_unknown_error' => 'بەلگىسىز قاتە',
-'math_unknown_function' => 'بەلگىسىز جەتە',
-'math_lexing_error' => 'ٴسوز كەنىنىڭ قاتەسى',
-'math_syntax_error' => 'سويلەم جۇيەسىنىڭ قاتەسى',
-'math_image_error' => 'PNG اۋدارىسى ٴساتسىز ٴبىتتى;
-latex, dvips, gs جانە convert باعدارلامالارىنىڭ دۇرىس ورناتۋىن تەكسەرىپ شىعىڭىز',
-'math_bad_tmpdir' => 'math دەگەن ۋاقىتشا قالتاسىنا جازىلمادى, نە قالتا قۇرىلمادى',
-'math_bad_output' => 'math دەگەن بەرىس قالتاسىنا جازىلمادى, نە قالتا قۇرىلمادى',
-'math_notexvc' => 'texvc اتقارىلمالىسى تابىلمادى;
-باپتاۋ ٴۇشىن math/README قۇجاتىن قاراڭىز.',
-
# Patrolling
'markaspatrolleddiff' => 'زەرتتەلدى دەپ بەلگىلەۋ',
'markaspatrolledtext' => 'بۇل بەتتى زەرتتەلدى دەپ بەلگىلە',
@@ -2461,17 +2397,16 @@ $1',
'nextdiff' => 'كەلەسى ايىرم. →',
# Media information
-'mediawarning' => "'''قۇلاقتاندىرۋ''': بۇل Ùايل تۇرىندە قاسكۇنەمدى كودى بار بولۋى ىقتىيمال; بۇنى جەگىپ جۇيەڭىزگە زىييان كەلتىرۋىڭىز مۇمكىن.",
-'imagemaxsize' => 'سىيپاتتاماسى بەتىندەگى سۋرەتتىڭ مولشەرىن شەكتەۋى:',
-'thumbsize' => 'نوباي مولشەرى:',
-'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3 بەت',
-'file-info' => 'Ùايل مولشەرى: $1, MIME ٴتۇرى: $2',
-'file-info-size' => '$1 × $2 نۇكتە, Ùايل مولشەرى: $3, MIME ٴتۇرى: $4',
-'file-nohires' => '<small>جوعارى اجىراتىلىمدىعى جەتىمسىز.</small>',
-'svg-long-desc' => 'SVG Ùايلى, كەسىمدى $1 × $2 نۇكتە, Ùايل مولشەرى: $3',
-'show-big-image' => 'جوعارى اجىراتىلىمدى',
-'show-big-image-thumb' => '<small>قاراپ شىعۋ مولشەرى: $1 × $2 نۇكتە</small>',
+'mediawarning' => "'''قۇلاقتاندىرۋ''': بۇل Ùايل تۇرىندە قاسكۇنەمدى كودى بار بولۋى ىقتىيمال; بۇنى جەگىپ جۇيەڭىزگە زىييان كەلتىرۋىڭىز مۇمكىن.",
+'imagemaxsize' => 'سىيپاتتاماسى بەتىندەگى سۋرەتتىڭ مولشەرىن شەكتەۋى:',
+'thumbsize' => 'نوباي مولشەرى:',
+'widthheight' => '$1 × $2',
+'widthheightpage' => '$1 × $2, $3 بەت',
+'file-info' => 'Ùايل مولشەرى: $1, MIME ٴتۇرى: $2',
+'file-info-size' => '$1 × $2 نۇكتە, Ùايل مولشەرى: $3, MIME ٴتۇرى: $4',
+'file-nohires' => '<small>جوعارى اجىراتىلىمدىعى جەتىمسىز.</small>',
+'svg-long-desc' => 'SVG Ùايلى, كەسىمدى $1 × $2 نۇكتە, Ùايل مولشەرى: $3',
+'show-big-image' => 'جوعارى اجىراتىلىمدى',
# Special:NewFiles
'newimages' => 'جاڭا Ùايلدار كورمەسى',
@@ -2510,7 +2445,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'ەنى',
@@ -2525,13 +2466,11 @@ $1',
'exif-ycbcrpositioning' => 'Y قۇراشى جانە C قۇراشى مەكەندەۋى',
'exif-xresolution' => 'دەرەلەي اجىراتىلىمدىعى',
'exif-yresolution' => 'تىرەلەي اجىراتىلىمدىعى',
-'exif-resolutionunit' => 'X جانە Y بويىنشا اجىراتىلىمدىق بىرلىگى',
'exif-stripoffsets' => 'سۋرەت دەرەرەكتەرىنىڭ جايعاسۋى',
'exif-rowsperstrip' => 'بەلدىك سايىن جول سانى',
'exif-stripbytecounts' => 'قىسىمدالعان بەلدىك سايىن بايت سانى',
'exif-jpeginterchangeformat' => 'JPEG SOI دەگەنگە ىعىسۋى',
'exif-jpeginterchangeformatlength' => 'JPEG دەرەكتەرىنىڭ بايت سانى',
-'exif-transferfunction' => 'تاسىمالداۋ جەتەسى',
'exif-whitepoint' => 'اق نۇكتە تۇستىلىگى',
'exif-primarychromaticities' => 'العى شەپتەگى تۇستىلىكتەرى',
'exif-ycbcrcoefficients' => 'ٴتۇس اياسىن تاسىمالداۋ ماترىيتسالىق ەسەلىكتەرى',
@@ -2550,7 +2489,6 @@ $1',
'exif-compressedbitsperpixel' => 'سۋرەت قىسىمداۋ ٴتارتىبى',
'exif-pixelydimension' => 'سۋرەتتىڭ جارامدى ەنى',
'exif-pixelxdimension' => 'سۋرەتتىڭ جارامدى بىيىكتىگى',
-'exif-makernote' => 'ٴوندىرۋشىنىڭ اڭعارتپالارى',
'exif-usercomment' => 'قاتىسۋشىنىڭ ماندەمەلەرى',
'exif-relatedsoundfile' => 'قاتىستى دىبىس Ùايلى',
'exif-datetimeoriginal' => 'جاسالعان كەزى',
@@ -2564,7 +2502,6 @@ $1',
'exif-exposureprogram' => 'ۇستالىم باعدارلاماسى',
'exif-spectralsensitivity' => 'سپەكتر بويىنشا سەزگىشتىگى',
'exif-isospeedratings' => 'ISO جىلدامدىق جارناقتاۋى (جارىق سەزگىشتىگى)',
-'exif-oecf' => 'وپتويەلەكتروندى تۇرلەتۋ ىقپالى',
'exif-shutterspeedvalue' => 'جاپقىش جىلدامدىلىعى',
'exif-aperturevalue' => 'ساڭىلاۋلىق',
'exif-brightnessvalue' => 'جارىقتىلىق',
@@ -2577,7 +2514,6 @@ $1',
'exif-focallength' => 'شوعىرلاۋ الشاقتىعى',
'exif-subjectarea' => 'نىسانا اۋقىمى',
'exif-flashenergy' => 'جارقىلداعىش قارقىنى',
-'exif-spatialfrequencyresponse' => 'كەڭىستىك-جىيىلىك اسەرشىلىگى',
'exif-focalplanexresolution' => 'ح بويىنشا شوعىرلاۋ جايپاقتىقتىڭ اجىراتىلىمدىعى',
'exif-focalplaneyresolution' => 'Y بويىنشا شوعىرلاۋ جايپاقتىقتىڭ اجىراتىلىمدىعى',
'exif-focalplaneresolutionunit' => 'شوعىرلاۋ جايپاقتىقتىڭ اجىراتىلىمدىق ولشەمى',
@@ -2586,7 +2522,6 @@ $1',
'exif-sensingmethod' => 'سەنسوردىڭ ولشەۋ ٴادىسى',
'exif-filesource' => 'Ùايل قاينارى',
'exif-scenetype' => 'ساحنا ٴتۇرى',
-'exif-cfapattern' => 'CFA سۇزگى كەيىپى',
'exif-customrendered' => 'قوسىمشا سۋرەت وڭدەتۋى',
'exif-exposuremode' => 'ۇستالىم ٴتارتىبى',
'exif-whitebalance' => 'اق ٴتۇسىنىڭ تەندەستىگى',
@@ -2765,14 +2700,12 @@ $1',
# External editor support
'edit-externally' => 'بۇل Ùايلدى شەتتىك قوندىرما ارقىلى وڭدەۋ',
-'edit-externally-help' => 'كوبىرەك اقپارات ٴۇشىن [http://www.mediawiki.org/wiki/Manual:External_editors ورناتۋ نۇسقامالارىن] قاراڭىز.',
+'edit-externally-help' => 'كوبىرەك اقپارات ٴۇشىن [//www.mediawiki.org/wiki/Manual:External_editors ورناتۋ نۇسقامالارىن] قاراڭىز.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'بارلىعىن',
-'imagelistall' => 'بارلىعى',
-'watchlistall2' => 'بارلىق',
-'namespacesall' => 'بارلىعى',
-'monthsall' => 'بارلىعى',
+'watchlistall2' => 'بارلىق',
+'namespacesall' => 'بارلىعى',
+'monthsall' => 'بارلىعى',
# E-mail address confirmation
'confirmemail' => 'ە-پوشتا مەكەنجايىن قۇپتاۋ',
@@ -2888,7 +2821,7 @@ $1',
'watchlistedit-normal-legend' => 'باقىلاۋ تىزىمىنەن تاقىرىپ اتتارىن الاستاۋ',
'watchlistedit-normal-explain' => 'باقىلاۋ تىزىمىڭىزدەگى تاقىرىپ اتتار تومەندە كورسەتىلەدى.
تاقىرىپ اتىن الاستاۋ ٴۇشىن, ٴبۇيىر كوزگە قۇسبەلگى سالىڭىز, جانە «تاقىرىپ اتتارىن الاستا» دەگەندى نۇقىڭىز.
-تاعى دا [[{{#special:Watchlist}}/raw|قام ٴتىزىمدى وڭدەي]] الاسىز.',
+تاعى دا [[Special:EditWatchlist/raw|قام ٴتىزىمدى وڭدەي]] الاسىز.',
'watchlistedit-normal-submit' => 'تاقىرىپ اتتارىن الاستا',
'watchlistedit-normal-done' => 'باقىلاۋ تىزىمىڭىزدەن $1 تاقىرىپ اتى الاستالدى:',
'watchlistedit-raw-title' => 'قام باقىلاۋ ٴتىزىمدى وڭدەۋ',
@@ -2896,7 +2829,7 @@ $1',
'watchlistedit-raw-explain' => 'باقىلاۋ تىزىمىڭىزدەگى تاقىرىپ اتتارى تومەندە كورسەتىلەدى, جانە دە تىزمگە ۇستەپ جانە تىزمدەن الاستاپ وڭدەلۋى مۇمكىن;
جول سايىن ٴبىر تاقىرىپ اتى بولۋ ٴجون.
بىتىرگەننەن سوڭ «باقىلاۋ ٴتىزىمدى جاڭارتۋ» دەگەندى نۇقىڭىز.
-تاعى دا [[{{#special:Watchlist}}/edit|قالىپالعان وڭدەۋىشتى پايدالانا]] الاسىز.',
+تاعى دا [[Special:EditWatchlist|قالىپالعان وڭدەۋىشتى پايدالانا]] الاسىز.',
'watchlistedit-raw-titles' => 'تاقىرىپ اتتارى:',
'watchlistedit-raw-submit' => 'باقىلاۋ ٴتىزىمدى جاڭارتۋ',
'watchlistedit-raw-done' => 'باقىلاۋ ٴتىزىمىڭىز جاڭارتىلدى.',
@@ -2956,25 +2889,24 @@ $1',
'unknown_extension_tag' => 'تانىلماعان كەڭەيتپە بەلگىسى «$1»',
# Special:Version
-'version' => 'جۇيە نۇسقاسى',
-'version-extensions' => 'ورناتىلعان كەڭەيتىمدەر',
-'version-specialpages' => 'ارنايى بەتتەر',
-'version-parserhooks' => 'قۇرىلىمدىق تالداتقىشتىڭ تۇزاقتارى',
-'version-variables' => 'اينىمالىلار',
-'version-other' => 'تاعى باسقالار',
-'version-mediahandlers' => 'تاسپا وڭدەتكىشتەرى',
-'version-hooks' => 'جەتە تۇزاقتارى',
-'version-extension-functions' => 'كەڭەيتىمدەر جەتەلەرى',
-'version-parser-extensiontags' => 'قۇرىلىمدىق تالداتقىش كەڭەيتىمدەرىنىڭ بەلگىلەمەرى',
-'version-parser-function-hooks' => 'قۇرىلىمدىق تالداتقىش جەتەلەرىنىڭ تۇزاقتارى',
-'version-skin-extension-functions' => 'مانەر كەڭەيتىمدەرىنىڭ جەتەلەرى',
-'version-hook-name' => 'تۇزاق اتاۋى',
-'version-hook-subscribedby' => 'تۇزاق تارتقىشتارى',
-'version-version' => '(نۇسقاسى: $1)',
-'version-license' => 'لىيتسەنزىيياسى',
-'version-software' => 'ورناتىلعان باعدارلامالىق جاساقتاما',
-'version-software-product' => 'ٴونىم',
-'version-software-version' => 'نۇسقاسى',
+'version' => 'جۇيە نۇسقاسى',
+'version-extensions' => 'ورناتىلعان كەڭەيتىمدەر',
+'version-specialpages' => 'ارنايى بەتتەر',
+'version-parserhooks' => 'قۇرىلىمدىق تالداتقىشتىڭ تۇزاقتارى',
+'version-variables' => 'اينىمالىلار',
+'version-other' => 'تاعى باسقالار',
+'version-mediahandlers' => 'تاسپا وڭدەتكىشتەرى',
+'version-hooks' => 'جەتە تۇزاقتارى',
+'version-extension-functions' => 'كەڭەيتىمدەر جەتەلەرى',
+'version-parser-extensiontags' => 'قۇرىلىمدىق تالداتقىش كەڭەيتىمدەرىنىڭ بەلگىلەمەرى',
+'version-parser-function-hooks' => 'قۇرىلىمدىق تالداتقىش جەتەلەرىنىڭ تۇزاقتارى',
+'version-hook-name' => 'تۇزاق اتاۋى',
+'version-hook-subscribedby' => 'تۇزاق تارتقىشتارى',
+'version-version' => '(نۇسقاسى: $1)',
+'version-license' => 'لىيتسەنزىيياسى',
+'version-software' => 'ورناتىلعان باعدارلامالىق جاساقتاما',
+'version-software-product' => 'ٴونىم',
+'version-software-version' => 'نۇسقاسى',
# Special:FilePath
'filepath' => 'Ùايل ورنالاسۋى',
@@ -2985,9 +2917,7 @@ $1',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Ùايل تەلنۇسقالارىن ىزدەۋ',
-'fileduplicatesearch-summary' => 'Ùايل حەشى ماعىناسى نەگىزىندە تەلنۇسقالارىن ىزدەۋ.
-
-Ùايل اتاۋىن «{{ns:file}}:» دەگەن باستاۋىشسىز ەنگىزىڭىز.',
+'fileduplicatesearch-summary' => 'Ùايل حەشى ماعىناسى نەگىزىندە تەلنۇسقالارىن ىزدەۋ.',
'fileduplicatesearch-legend' => 'تەلنۇسقانى ىزدەۋ',
'fileduplicatesearch-filename' => 'Ùايل اتاۋى:',
'fileduplicatesearch-submit' => 'ىزدە',
diff --git a/languages/messages/MessagesKk_cyrl.php b/languages/messages/MessagesKk_cyrl.php
index b39a4cc7..24a90dbd 100644
--- a/languages/messages/MessagesKk_cyrl.php
+++ b/languages/messages/MessagesKk_cyrl.php
@@ -34,6 +34,8 @@ $extraUserToggles = array(
$fallback8bitEncoding = 'windows-1251';
+$linkTrail = '/^([a-zäçéğıïñöşüýʺʹа-ÑёәғіқңөұүһٴابپتجحدرزسشعÙقكلمنڭەوۇۋۆىيچھ“»]+)(.*)$/sDu';
+
$namespaceNames = array(
NS_MEDIA => 'ТаÑпа',
NS_SPECIAL => 'Ðрнайы',
@@ -278,87 +280,87 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Шынжырлы_айдағыштар', 'Шынжырлы_айдатулар' ),
+ 'Allmessages' => array( 'Барлық_хабарлар' ),
+ 'Allpages' => array( 'Барлық_беттер' ),
+ 'Ancientpages' => array( 'ЕÑкі_беттер' ),
+ 'Block' => array( 'Жайды_бұғаттау', 'IP_бұғаттау' ),
+ 'Blockme' => array( 'Өздіктік_бұғаттау', 'Өздік_бұғаттау', 'Мені_бұғаттау' ),
+ 'Booksources' => array( 'Кітап_қайнарлары' ),
'BrokenRedirects' => array( 'ЖарамÑыз_айдағыштар', 'ЖарамÑыз_айдатулар' ),
- 'Disambiguations' => array( 'Ðйрықты_беттер' ),
- 'Userlogin' => array( 'ҚатыÑушы_кіруі' ),
- 'Userlogout' => array( 'ҚатыÑушы_шығуы' ),
+ 'Categories' => array( 'Санаттар' ),
+ 'ChangePassword' => array( 'ҚұпиÑ_Ñөзді_қайтару' ),
+ 'Confirmemail' => array( 'Құптау_хат' ),
+ 'Contributions' => array( 'ҮлеÑÑ–' ),
'CreateAccount' => array( 'Жаңа_тіркелгі', 'Тіркелгі_Жарату' ),
- 'Preferences' => array( 'Бапталымдар', 'Баптау' ),
- 'Watchlist' => array( 'Бақылау_тізімі' ),
- 'Recentchanges' => array( 'Жуықтағы_өзгеріÑтер' ),
- 'Upload' => array( 'Қотарып_беру', 'Қотару' ),
+ 'Deadendpages' => array( 'Тұйық_беттер' ),
+ 'Disambiguations' => array( 'Ðйрықты_беттер' ),
+ 'DoubleRedirects' => array( 'Шынжырлы_айдағыштар', 'Шынжырлы_айдатулар' ),
+ 'Emailuser' => array( 'Хат_жіберу' ),
+ 'Export' => array( 'Сыртқа_беру' ),
+ 'Fewestrevisions' => array( 'Ең_аз_түзетілген' ),
+ 'FileDuplicateSearch' => array( 'Файл_телнұÑқаÑын_іздеу', 'Қайталанған_файлдарды_іздеу' ),
+ 'Filepath' => array( 'Файл_мекені' ),
+ 'Import' => array( 'Сырттан_алу' ),
+ 'Invalidateemail' => array( 'Құптамау_хаты' ),
+ 'BlockList' => array( 'Бұғатталғандар' ),
+ 'Listadmins' => array( 'Әкімшілер', 'Әкімші_тізімі' ),
+ 'Listbots' => array( 'Боттар', 'Боттар_тізімі' ),
'Listfiles' => array( 'Сурет_тізімі' ),
- 'Newimages' => array( 'Жаңа_Ñуреттер' ),
- 'Listusers' => array( 'ҚатыÑушылар', 'ҚатыÑушы_тізімі' ),
'Listgrouprights' => array( 'Топ_құқықтары_тізімі' ),
- 'Statistics' => array( 'Санақ' ),
- 'Randompage' => array( 'КездейÑоқ', 'КездейÑоқ_бет' ),
+ 'Listredirects' => array( 'Ðйдату_тізімі' ),
+ 'Listusers' => array( 'ҚатыÑушылар', 'ҚатыÑушы_тізімі' ),
+ 'Lockdb' => array( 'Дерекқорды_құлыптау' ),
+ 'Log' => array( 'Журнал', 'Журналдар' ),
'Lonelypages' => array( 'СаÑÒ›_беттер' ),
- 'Uncategorizedpages' => array( 'СанатÑыз_беттер' ),
- 'Uncategorizedcategories' => array( 'СанатÑыз_Ñанаттар' ),
- 'Uncategorizedimages' => array( 'СанатÑыз_Ñуреттер' ),
- 'Uncategorizedtemplates' => array( 'СанатÑыз_үлгілер' ),
- 'Unusedcategories' => array( 'Пайдаланылмаған_Ñанаттар' ),
- 'Unusedimages' => array( 'Пайдаланылмаған_Ñуреттер' ),
- 'Wantedpages' => array( 'Толтырылмаған_беттер', 'ЖарамÑыз_Ñілтемелер' ),
- 'Wantedcategories' => array( 'Толтырылмаған_Ñанаттар' ),
+ 'Longpages' => array( 'Ұзын_беттер', 'Үлкен_беттер' ),
+ 'MergeHistory' => array( 'Тарих_біріктіру' ),
+ 'MIMEsearch' => array( 'MIME_түрімен_іздеу' ),
+ 'Mostcategories' => array( 'Ең_көп_Ñанаттар_бары' ),
+ 'Mostimages' => array( 'Ең_көп_пайдаланылған_Ñуреттер', 'Ең_көп_Ñуреттер_бары' ),
'Mostlinked' => array( 'Ең_көп_Ñілтенген_беттер' ),
'Mostlinkedcategories' => array( 'Ең_көп_пайдаланылған_Ñанаттар', 'Ең_көп_Ñілтенген_Ñанаттар' ),
'Mostlinkedtemplates' => array( 'Ең_көп_пайдаланылған_үлгілер', 'Ең_көп_Ñілтенген_үлгілер' ),
- 'Mostimages' => array( 'Ең_көп_пайдаланылған_Ñуреттер', 'Ең_көп_Ñуреттер_бары' ),
- 'Mostcategories' => array( 'Ең_көп_Ñанаттар_бары' ),
'Mostrevisions' => array( 'Ең_көп_түзетілген', 'Ең_көп_нұÑқалар_бары' ),
- 'Fewestrevisions' => array( 'Ең_аз_түзетілген' ),
- 'Shortpages' => array( 'ҚыÑқа_беттер' ),
- 'Longpages' => array( 'Ұзын_беттер', 'Үлкен_беттер' ),
+ 'Movepage' => array( 'Бетті_жылжыту' ),
+ 'Mycontributions' => array( 'ҮлеÑім' ),
+ 'Mypage' => array( 'Жеке_бетім' ),
+ 'Mytalk' => array( 'Талқылауым' ),
+ 'Newimages' => array( 'Жаңа_Ñуреттер' ),
'Newpages' => array( 'Жаңа_беттер' ),
- 'Ancientpages' => array( 'ЕÑкі_беттер' ),
- 'Deadendpages' => array( 'Тұйық_беттер' ),
+ 'Popularpages' => array( 'Ең_көп_қаралған_беттер', 'Әйгілі_беттер' ),
+ 'Preferences' => array( 'Бапталымдар', 'Баптау' ),
+ 'Prefixindex' => array( 'БаÑтауыш_тізімі' ),
'Protectedpages' => array( 'Қорғалған_беттер' ),
'Protectedtitles' => array( 'Қорғалған_тақырыптар', 'Қорғалған_атаулар' ),
- 'Allpages' => array( 'Барлық_беттер' ),
- 'Prefixindex' => array( 'БаÑтауыш_тізімі' ),
- 'Ipblocklist' => array( 'Бұғатталғандар' ),
- 'Specialpages' => array( 'Ðрнайы_беттер' ),
- 'Contributions' => array( 'ҮлеÑÑ–' ),
- 'Emailuser' => array( 'Хат_жіберу' ),
- 'Confirmemail' => array( 'Құптау_хат' ),
- 'Whatlinkshere' => array( 'Мында_Ñілтегендер' ),
+ 'Randompage' => array( 'КездейÑоқ', 'КездейÑоқ_бет' ),
+ 'Randomredirect' => array( 'КедейÑоқ_айдағыш', 'КедейÑоқ_айдату' ),
+ 'Recentchanges' => array( 'Жуықтағы_өзгеріÑтер' ),
'Recentchangeslinked' => array( 'Сілтенгендердің_өзгеріÑтері', 'ҚатыÑÑ‚Ñ‹_өзгеріÑтер' ),
- 'Movepage' => array( 'Бетті_жылжыту' ),
- 'Blockme' => array( 'Өздіктік_бұғаттау', 'Өздік_бұғаттау', 'Мені_бұғаттау' ),
- 'Booksources' => array( 'Кітап_қайнарлары' ),
- 'Categories' => array( 'Санаттар' ),
- 'Export' => array( 'Сыртқа_беру' ),
- 'Version' => array( 'ÐÒ±ÑқаÑÑ‹' ),
- 'Allmessages' => array( 'Барлық_хабарлар' ),
- 'Log' => array( 'Журнал', 'Журналдар' ),
- 'Blockip' => array( 'Жайды_бұғаттау', 'IP_бұғаттау' ),
+ 'Revisiondelete' => array( 'Түзету_жою', 'ÐÒ±Ñқаны_жою' ),
+ 'Search' => array( 'Іздеу' ),
+ 'Shortpages' => array( 'ҚыÑқа_беттер' ),
+ 'Specialpages' => array( 'Ðрнайы_беттер' ),
+ 'Statistics' => array( 'Санақ' ),
+ 'Uncategorizedcategories' => array( 'СанатÑыз_Ñанаттар' ),
+ 'Uncategorizedimages' => array( 'СанатÑыз_Ñуреттер' ),
+ 'Uncategorizedpages' => array( 'СанатÑыз_беттер' ),
+ 'Uncategorizedtemplates' => array( 'СанатÑыз_үлгілер' ),
'Undelete' => array( 'Жоюды_болдырмау', 'Жойылғанды_қайтару' ),
- 'Import' => array( 'Сырттан_алу' ),
- 'Lockdb' => array( 'Дерекқорды_құлыптау' ),
'Unlockdb' => array( 'Дерекқорды_құлыптамау' ),
- 'Userrights' => array( 'ҚатыÑушы_құқықтары' ),
- 'MIMEsearch' => array( 'MIME_түрімен_іздеу' ),
- 'FileDuplicateSearch' => array( 'Файл_телнұÑқаÑын_іздеу', 'Қайталанған_файлдарды_іздеу' ),
- 'Unwatchedpages' => array( 'Бақыланылмаған_беттер' ),
- 'Listredirects' => array( 'Ðйдату_тізімі' ),
- 'Revisiondelete' => array( 'Түзету_жою', 'ÐÒ±Ñқаны_жою' ),
+ 'Unusedcategories' => array( 'Пайдаланылмаған_Ñанаттар' ),
+ 'Unusedimages' => array( 'Пайдаланылмаған_Ñуреттер' ),
'Unusedtemplates' => array( 'Пайдаланылмаған_үлгілер' ),
- 'Randomredirect' => array( 'КедейÑоқ_айдағыш', 'КедейÑоқ_айдату' ),
- 'Mypage' => array( 'Жеке_бетім' ),
- 'Mytalk' => array( 'Талқылауым' ),
- 'Mycontributions' => array( 'ҮлеÑім' ),
- 'Listadmins' => array( 'Әкімшілер', 'Әкімші_тізімі' ),
- 'Listbots' => array( 'Боттар', 'Боттар_тізімі' ),
- 'Popularpages' => array( 'Ең_көп_қаралған_беттер', 'Әйгілі_беттер' ),
- 'Search' => array( 'Іздеу' ),
- 'Resetpass' => array( 'ҚұпиÑ_Ñөзді_қайтару' ),
+ 'Unwatchedpages' => array( 'Бақыланылмаған_беттер' ),
+ 'Upload' => array( 'Қотарып_беру', 'Қотару' ),
+ 'Userlogin' => array( 'ҚатыÑушы_кіруі' ),
+ 'Userlogout' => array( 'ҚатыÑушы_шығуы' ),
+ 'Userrights' => array( 'ҚатыÑушы_құқықтары' ),
+ 'Version' => array( 'ÐÒ±ÑқаÑÑ‹' ),
+ 'Wantedcategories' => array( 'Толтырылмаған_Ñанаттар' ),
+ 'Wantedpages' => array( 'Толтырылмаған_беттер', 'ЖарамÑыз_Ñілтемелер' ),
+ 'Watchlist' => array( 'Бақылау_тізімі' ),
+ 'Whatlinkshere' => array( 'Мында_Ñілтегендер' ),
'Withoutinterwiki' => array( 'Уики-аралықÑыздар' ),
- 'MergeHistory' => array( 'Тарих_біріктіру' ),
- 'Filepath' => array( 'Файл_мекені' ),
- 'Invalidateemail' => array( 'Құптамау_хаты' ),
);
$messages = array(
@@ -476,14 +478,6 @@ $messages = array(
'category-file-count-limited' => 'Ðғымдағы Ñанатта келеÑÑ– $1 файл бар.',
'listingcontinuesabbrev' => '(жалғ.)',
-'mainpagetext' => "'''МедиаУики бумаÑÑ‹ Ñәтті орнатылды.'''",
-'mainpagedocfooter' => 'Уики бағдарламалық жаÑақтамаÑын қалай қолданатын ақпараты үшін [http://meta.wikimedia.org/wiki/Help:Contents Пайдаланушылық нұÑқауларынан] ÐºÐµÒ£ÐµÑ Ð°Ð»Ñ‹Ò£Ñ‹Ð·.
-
-== БаÑтау үшін ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Бапталым қалауларының тізімі]
-* [http://www.mediawiki.org/wiki/Manual:FAQ МедиаУикидің Жиы Қойылған Сауалдары]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce МедиаУики шығу туралы хат тарату тізімі]',
-
'about' => 'Жоба туралы',
'article' => 'Мағлұмат беті',
'newwindow' => '(жаңа терезеде)',
@@ -523,7 +517,7 @@ $messages = array(
'errorpagetitle' => 'Қателік',
'returnto' => '$1 дегенге қайта келу.',
-'tagline' => '{{SITENAME}} жобаÑынан',
+'tagline' => '{{SITENAME}}дан алынған мәлімет, ашық ÑнциклопедиÑ',
'help' => 'Ðнықтама',
'search' => 'Іздеу',
'searchbutton' => 'Ізде',
@@ -532,7 +526,6 @@ $messages = array(
'history' => 'Бет тарихы',
'history_short' => 'Тарихы',
'updatedmarker' => 'Ñоңғы келіп-кетуімнен бері жаңаланған',
-'info_short' => 'Мәлімет',
'printableversion' => 'БаÑып шығару үшін',
'permalink' => 'Тұрақты Ñілтеме',
'print' => 'БаÑып шығару',
@@ -712,12 +705,11 @@ MySQL қайтарған қатеÑÑ– «$3: $4»',
'protectedinterface' => 'Бұл бет бағдарламалық жаÑақтаманың тілдеÑу мәтінін жетіÑтіреді, Ñондықтан қиÑнатты қақпайлау үшін өзгертуі құлыпталған.',
'editinginterface' => "'''Құлақтандыру:''' Бағдарламалық жаÑақтаманың тілдеÑу мәтінін жетіÑтіретін бетін өңдеп жатырÑыз.
Бұл беттің өзгертуі баÑқа қатыÑушыларға пайдаланушылық тілдеÑуі қалай көрінетіне Ó™Ñер етеді.
-Ðудармалар үшін, MediaWiki бағдарламаÑын жерÑіндіру [http://translatewiki.net/wiki/Main_Page?setlang=kk translatewiki.net жобаÑÑ‹] арқылы қарап шешіңіз.",
+Ðудармалар үшін, MediaWiki бағдарламаÑын жерÑіндіру [//translatewiki.net/wiki/Main_Page?setlang=kk translatewiki.net жобаÑÑ‹] арқылы қарап шешіңіз.",
'sqlhidden' => '(SQL Ñұранымы жаÑырылған)',
'cascadeprotected' => 'Бұл бет өңдеуден қорғалған, Ñебебі бұл келеÑÑ– «баулы қорғауы» қоÑылған {{PLURAL:$1|беттің|беттердің}} кірікбеті:
$2',
'namespaceprotected' => "'''$1''' еÑім аÑÑындағы беттерді өңдеу үшін Ñ€Ò±Ò›Ñатыңыз жоқ.",
-'customcssjsprotected' => 'Бұл бетті өңдеуге Ñ€Ò±Ò›Ñатыңыз жоқ, Ñебебі мында өзге қатыÑушының жеке баптаулары бар.',
'ns-specialprotected' => '{{ns:special}} еÑім аÑÑындағы беттер өңделінбейді',
'titleprotected' => "Бұл тақырып аты баÑтаудан [[{{ns:user}}:$1|$1]] қорғады.
Келтірілген Ñебебі: ''$2''.",
@@ -765,7 +757,7 @@ $2',
'loginsuccess' => "'''Сіз енді {{SITENAME}} жобаÑына «$1» ретінде кіріп отырÑыз.'''",
'nosuchuser' => 'Мында «$1» деп аталған қатыÑушы жоқ.
Емлеңізді текÑеріңіз, не жаңа тіркелгі жаÑаңыз.',
-'nosuchusershort' => 'Мында «<nowiki>$1</nowiki>» деп аталған қатыÑушы жоқ.
+'nosuchusershort' => 'Мында «$1» деп аталған қатыÑушы жоқ.
Емлеңізді текÑеріңіз.',
'nouserspecified' => 'ҚатыÑушы атын келтіруіңіз жөн.',
'wrongpassword' => 'Ð‘Ò±Ñ€Ñ‹Ñ Ò›Ò±Ð¿Ð¸Ñ Ñөз енгізілген. Қайта байқап көріңіз.',
@@ -807,7 +799,7 @@ $2',
Егер бұл тіркелгі қателікпен жаÑалÑа, оÑÑ‹ хабарға елемеуіңіз мүмкін.',
'loginlanguagelabel' => 'Тіл: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Тіркелгінің Ò›Ò±Ð¿Ð¸Ñ Ñөзін өзгерту',
'resetpass_announce' => 'Хатпен жіберілген уақытша кодымен кіргенÑіз.
Кіруіңізді бітіру үшін, жаңа Ò›Ò±Ð¿Ð¸Ñ Ñөзіңізді мында енгізуіңіз жөн:',
@@ -831,8 +823,6 @@ $2',
'extlink_tip' => 'Шеттік Ñілтеме (алдынан http:// енгізуін ұмытпаңыз)',
'headline_sample' => 'Ð‘Ð°Ñ Ð¶Ð¾Ð» мәтіні',
'headline_tip' => '2-ші деңгейлі Ð±Ð°Ñ Ð¶Ð¾Ð»',
-'math_sample' => 'Өрнекті мында енгізіңіз',
-'math_tip' => 'Математика өрнегі (LaTeX)',
'nowiki_sample' => 'Пішімделінбеген мәтінді мында енгізіңіз',
'nowiki_tip' => 'Уики пішімін елемеу',
'image_tip' => 'Ендірілген файл',
@@ -908,7 +898,7 @@ IP мекенжайыңыз бұл беттің түзету тарихында
ОÑындай IP мекенжай бірнеше қатыÑушыға ортақтаÑтырылған болуы мүмкін.
Егер Ñіз тіркелгіÑіз қатыÑушы болÑаңыз және Ñізге қатыÑÑыз мәндемелер жіберілгенін ÑезÑеңіз, баÑқа тіркелгіÑіз қатыÑушылармен аралаÑтырмауы үшін [[{{#special:Userlogin}}|тіркеліңіз не кіріңіз]].''",
'noarticletext' => 'Бұл бетте ағымда еш мәтін жоқ, дегенмен баÑқа беттерден [[{{#special:Search}}/{{PAGENAME}}|бұл бет тақырыбы атын іздей]] не [{{fullurl:{{FULLPAGENAME}}|action=edit}} бұл бетті өңдей] алаÑыз.',
-'userpage-userdoesnotexist' => '«$1» қатыÑушы тіркелгіÑÑ– жазып алынбаған. Бұл бетті баÑтау/өңдеу талабыңызды текÑеріп шығыңыз.',
+'userpage-userdoesnotexist' => '«<nowiki>$1</nowiki>» қатыÑушы тіркелгіÑÑ– жазып алынбаған. Бұл бетті баÑтау/өңдеу талабыңызды текÑеріп шығыңыз.',
'clearyourcache' => "'''Ðңғартпа:''' Сақтағаннан кейін, өзгеріÑтерді көру үшін шолғыш бүркемеÑін орағыту ықтимал. '''Mozilla / Firefox / Safari:''' ''Қайта жүктеу'' батырмаÑын нұқығанда ''Shift'' тұтыңыз, не ''Ctrl-Shift-R'' баÑыңыз (Apple Mac — ''Cmd-Shift-R''); '''IE:''' ''Жаңарту'' батырмаÑын нұқығанда ''Ctrl'' тұтыңыз, не ''Ctrl-F5'' баÑыңыз; '''Konqueror:''': ''Жаңарту'' батырмаÑын жай нұқыңыз, не ''F5'' баÑыңыз; '''Opera''' пайданушылары ''Құралдар→Бапталымдар'' дегенге барып бүркемеÑін толық тазарту жөн.",
'usercssyoucanpreview' => "'''Ðқыл-кеңеÑ:''' Жаңа CSS файлын Ñақтау алдында «Қарап шығу» батырмаÑын қолданып Ñынақтаңыз.",
'userjsyoucanpreview' => "'''Ðқыл-кеңеÑ:''' Жаңа JS файлын Ñақтау алдында «Қарап шығу» батырмаÑын қолданып Ñынақтаңыз.",
@@ -918,8 +908,7 @@ IP мекенжайыңыз бұл беттің түзету тарихында
ҚатыÑушының .css және .js файл атауы кіші әріпппен жазылу тиіÑÑ‚Ñ– екенін ұмытпаңыз, мыÑалға {{ns:user}}:Foo/vector.css дегенді {{ns:user}}:Foo/Vector.css дегенмен ÑалыÑтырып қараңыз.",
'updated' => '(Жаңартылған)',
'note' => "'''Ðңғартпа:'''",
-'previewnote' => "'''Мынау тек қарап шығу екенін ұмытпаңыз;
-өзгеріÑтер әлі Ñақталған жоқ!'''",
+'previewnote' => "Бұл тек '''қарап шығу''' екенін ұмытпаңыз, өзгеріÑтер әлі Ñақталған жоқ!",
'previewconflict' => 'Бұл қарап шығу беті жоғарғы кіріÑтіру орнындағы мәтінді қамтиды да және Ñақталғандағы өңді көрÑетпек.',
'session_fail_preview' => "'''Ғафу етіңіз! СеÑÑÐ¸Ñ Ð´ÐµÑ€ÐµÐºÑ‚ÐµÑ€Ñ– жоғалуы Ñалдарынан өңдемеңізді бітіре алмаймыз.
Қайта байқап көріңіз. Егер бұл әлі Ñ–ÑтелмеÑе, шығуды және қайта кіруді байқап көріңіз.'''",
@@ -1191,7 +1180,6 @@ $3 келтірілген Ñебебі: ''$2''",
'changepassword' => 'ÒšÒ±Ð¿Ð¸Ñ Ñөзді өзгерту',
'prefs-skin' => 'Мәнерлер',
'skin-preview' => 'Қарап шығу',
-'prefs-math' => 'Өрнектер',
'datedefault' => 'Еш қалауÑыз',
'prefs-datetime' => 'Уақыт',
'prefs-personal' => 'Жеке деректері',
@@ -1210,8 +1198,6 @@ $3 келтірілген Ñебебі: ''$2''",
'columns' => 'Бағандар:',
'searchresultshead' => 'Іздеу',
'resultsperpage' => 'Бет Ñайын нәтиже Ñаны:',
-'contextlines' => 'Ðәтиже Ñайын жол Ñаны:',
-'contextchars' => 'Жол Ñайын таңба Ñаны:',
'stub-threshold' => '<a href="#" class="stub">БаÑтама ÑілтемеÑін</a> пішімдеу табалдырығы (байт):',
'recentchangesdays' => 'Жүықтағы өзгеріÑтерінде көрÑетпек күн Ñаны:',
'recentchangescount' => 'Жуықтағы өзгеріÑтердінде, тарих және журнал беттерінде көрÑетпек өңдеме Ñаны:',
@@ -1479,10 +1465,6 @@ $3 келтірілген Ñебебі: ''$2''",
'watchthisupload' => 'Бұл бетті бақылау',
'filewasdeleted' => 'Бұл атауы бар файл бұрын қотарып берілген де бері келе жойылған.
Бұны қайта қотарып беру алдынан $1 дегенді текÑеріп шығыңыз.',
-'upload-wasdeleted' => "'''Құлақтандыру: Ðлдында жойылған файлды қотарып бермекÑіз.'''
-
-Бұл файлды қотарып беруін жалғаÑтыру үшін бұның ыңғайлығын текÑеріп шығуыңыз жөн.
-Қолайлы болуы үшін бұл файлдың жою журналы келтірілген:",
'filename-bad-prefix' => "Қотарып бермек файлыңыздың атауы '''«$1» ''' деп баÑталады, мынадай ÑипаттауÑыз атауды әдетте Ñандық камералар өздіктік береді.
Файлыңызға Ñипаттылау атауды таңдаңыз.",
'upload-success-subj' => 'Сәтті қотарып берілді',
@@ -1543,7 +1525,6 @@ URL Ð´Ò±Ñ€Ñ‹Ñ ÐµÐºÐµÐ½Ð´Ñ–Ð³Ñ–Ð½ және торап Ñ–Ñтеп тұрғаныÐ
'linkstoimage' => 'Бұл файлға келеÑÑ– {{PLURAL:$1|бет|$1 бет}} Ñілтейді:',
'nolinkstoimage' => 'Бұл файлға еш бет Ñілтемейді.',
'morelinkstoimage' => 'Бұл файлдың [[Special:WhatLinksHere/$1|көбірек Ñілтемелерін]] қарау.',
-'redirectstofile' => 'КелеÑÑ– {{PLURAL:$1|файл|$1 файл}} бұл файлға айдайды:',
'duplicatesoffile' => 'КелеÑÑ– {{PLURAL:$1|файл бұл файлдың телнұÑқаÑÑ‹|$1 файл бұл файлдың телнұÑқалары}}:',
'sharedupload' => 'Бұл файл ортақ қоймаға қотарып берілген Ñондықтан баÑқа жобаларда қолдануы мүмкін.',
'uploadnewversion-linktext' => 'Бұл файлдың жаңа нұÑқаÑын қотарып беру',
@@ -1605,15 +1586,16 @@ URL Ð´Ò±Ñ€Ñ‹Ñ ÐµÐºÐµÐ½Ð´Ñ–Ð³Ñ–Ð½ және торап Ñ–Ñтеп тұрғаныÐ
# Statistics
'statistics' => 'Санақ',
-'statistics-header-pages' => 'Беттер бойынша ÑтатиÑтика',
+'statistics-header-pages' => 'Беттер ÑтатиÑтикаÑÑ‹',
'statistics-header-edits' => 'Өңдеулер ÑтатиÑтикаÑÑ‹',
'statistics-header-users' => 'ҚатыÑушы Ñанағы',
'statistics-articles' => 'Мақалалар Ñаны',
'statistics-pages' => 'Беттер',
-'statistics-pages-desc' => 'Уикидегі барлық беттер, талқылау беттерді, айдатқыштарды қоÑқандағы және тағы баÑқалары.',
+'statistics-pages-desc' => 'Уикидегі барлық беттер, Ñоның ішінде талқылау беттері, айдатқыштар және баÑқалары.',
'statistics-files' => 'Жүктелген файлдар',
'statistics-edits' => 'Барлық өңдеулер Ñаны',
'statistics-edits-average' => 'Әр бетке шаққандағы өңдеулердің орташа Ñаны',
+'statistics-users' => 'Тіркелген қатыÑушылар [[Special:ListUsers|(тізім)]]',
'statistics-users-active' => 'БелÑенді қатыÑушылар',
'statistics-users-active-desc' => 'Соңғы {{PLURAL:$1|күнде|$1 күнде}} қандай да бір Ñ–Ñ-әрекет жаÑаған қатыÑушылар',
'statistics-mostpopular' => 'Ең көп қаралған беттер',
@@ -1765,7 +1747,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'listgrouprights-group' => 'Топ',
'listgrouprights-rights' => 'Құқықтары',
'listgrouprights-helppage' => '{{ns:help}}:Топ құқықтары',
-'listgrouprights-members' => '(мүше тізімі)',
+'listgrouprights-members' => '(тізім)',
# E-mail user
'mailnologin' => 'Еш мекенжай жөнелтілген жоқ',
@@ -1796,10 +1778,8 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlistanontext' => 'Бақылау тізіміңіздегі даналарды қарау, не өңдеу үшін $1 керек.',
'watchnologin' => 'КірмегенÑіз',
'watchnologintext' => 'Бақылау тізіміңізді өзгерту үшін [[{{#special:Userlogin}}|кіруіңіз]] жөн.',
-'addedwatch' => 'Бақылау тізіміне Ò¯Ñтелді',
'addedwatchtext' => "«[[:$1]]» беті [[{{#special:Watchlist}}|бақылау тізіміңізге]] Ò¯Ñтелді.
Бұл беттің және байланыÑÑ‚Ñ‹ талқылау бетінің келешектегі өзгеріÑтері мында тізімделінеді де, және беттің атауы жеңіл табылу үшін [[{{#special:Recentchanges}}|жуықтағы өзгеріÑтер тізімінде]] '''жуан әрпімен''' көрÑетіледі.",
-'removedwatch' => 'Бақылау тізіміңізден алаÑталды',
'removedwatchtext' => '«[[:$1]]» беті бақылау тізіміңізден алаÑталды.',
'watch' => 'Бақылау',
'watchthispage' => 'Бетті бақылау',
@@ -1853,10 +1833,10 @@ $NEWPAGE
----
Бақылау тізіміңіздің баптаулырын өзгерту үшін, мында келіп-кетіңіз:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Сын-пікір беру және былайғы жәрдем алу үшін:
-{{fullurl:{{{{ns:mediawiki}}:Helppage}}}}',
+{{canonicalurl:{{{{ns:mediawiki}}:Helppage}}}}',
# Delete
'deletepage' => 'Бетті жою',
@@ -1871,7 +1851,7 @@ $NEWPAGE
'confirmdeletetext' => 'Бетті бүкіл тарихымен бірге дерекқордан жойғалы жатырÑыз.
Бұл әрекетіңіз ниетпен жаÑалғанын, әрекет Ñалдары еÑепке алынғанын және әрекетіңіз [[{{{{ns:mediawiki}}:Policy-url}}]]-іне лайықты болғанын тағы бір рет текÑеріп шығуыңызды Ñұраймыз.',
'actioncomplete' => 'Әрекет бітті',
-'deletedtext' => '«<nowiki>$1</nowiki>» жойылды.
+'deletedtext' => '«$1» жойылды.
Жуықтағы жоюлар туралы жазбаларын $2 дегеннен қараңыз.',
'deletedarticle' => '«[[$1]]» дегенді жойды',
'suppressedarticle' => '«[[$1]]» дегенді шеттетті',
@@ -1928,7 +1908,7 @@ $2 Ñоңғы нұÑқаÑына өзгертті.',
'protectexpiry' => 'Мерзімі бітпек:',
'protect_expiry_invalid' => 'Бітетін уақыты жарамÑыз.',
'protect_expiry_old' => 'Бітетін уақыты өтіп кеткен.',
-'protect-text' => "'''<nowiki>$1</nowiki>''' бетінің қорғау деңгейін қарап және өзгертіп шыға алаÑыз.",
+'protect-text' => "'''$1''' бетінің қорғау деңгейін қарап және өзгертіп шыға алаÑыз.",
'protect-locked-blocked' => "Бұғаттауыңыз өшірілгенше дейін қорғау деңгейін өзгерте алмайÑыз.
Мына '''$1''' беттің ағымдық баптаулары:",
'protect-locked-dblock' => "Дерекқордың құлыптауы белÑенді болғандықтан қорғау деңгейлері өзгертілмейді.
@@ -2014,9 +1994,10 @@ $2 Ñоңғы нұÑқаÑына өзгертті.',
$1',
# Namespace form on various pages
-'namespace' => 'ЕÑім аÑÑÑ‹:',
-'invert' => 'Бөлектеуді керілеу',
-'blanknamespace' => 'Ðегізгі беттерден',
+'namespace' => 'ЕÑім аÑÑÑ‹:',
+'invert' => 'Бөлектеуді керілеу',
+'namespace_association' => 'ҚатыÑÑ‚Ñ‹ еÑім аÑÑÑ‹',
+'blanknamespace' => 'Ðегізгі беттерден',
# Contributions
'contributions' => 'ҚатыÑушы үлеÑÑ–',
@@ -2062,7 +2043,6 @@ $1',
'blockiptext' => 'Төмендегі пішін қатыÑушының жазу Ñ€Ò±Ò›Ñатын белгілі IP мекенжайымен не атымен бұғаттау үшін қолданылады.
Бұны тек бұзақылықты қақпайлау үшін және де [[{{{{ns:mediawiki}}:Policy-url}}|ережелер]] бойынша атқаруыңыз жөн.
Төменде тиіÑÑ‚Ñ– Ñебебін толтырып көрÑетіңіз (мыÑалы, дәйекке бұзақылықпен өзгерткен беттерді келтіріп).',
-'ipaddress' => 'IP мекенжайы:',
'ipadressorusername' => 'IP мекенжайы не қатыÑушы аты:',
'ipbexpiry' => 'Мерзімі бітпек:',
'ipbreason' => 'Себебі:',
@@ -2075,7 +2055,6 @@ $1',
** Қоқандау/қуғындау мінезқұлық
** Бірнеше рет тіркеліп қиÑнаттау
** ӨреÑкел қатыÑушы аты',
-'ipbanononly' => 'Тек тіркелгіÑіз қатыÑушыларды бұғаттау',
'ipbcreateaccount' => 'Тіркелуді қақпайлау',
'ipbemailban' => 'ҚатыÑушы е-поштамен хат жөнелтуін қақпайлау',
'ipbenableautoblock' => 'Бұл қатыÑушы Ñоңғы қолданған IP мекенжайын, және кейін өңдеуге байқап көрген әр IP мекенжайларын өзбұғаттауы',
@@ -2101,9 +2080,7 @@ $1',
'unblocked-id' => '$1 бұғаттау алаÑталды',
'ipblocklist' => 'Бұғатталған қатыÑушы / IP мекенжай тізімі',
'ipblocklist-legend' => 'Бұғатталған қатыÑушыны табу',
-'ipblocklist-username' => 'ҚатыÑушы аты / IP мекенжайы:',
'ipblocklist-submit' => 'Ізде',
-'blocklistline' => '$1, $2 $3 дегенді бұғаттады ($4)',
'infiniteblock' => 'мәнгі',
'expiringblock' => 'мерзімі бітпек: $1 $2',
'anononlyblock' => 'тек тіркелгіÑіздерді',
@@ -2260,7 +2237,7 @@ MediaWiki жүйеÑінің [[{{#special:Import}}|Ñырттан алу бетÑ
'allmessagesdefault' => 'Әдепкі мәтіні',
'allmessagescurrent' => 'Ðғымдық мәтіні',
'allmessagestext' => 'Мында {{ns:mediawiki}} еÑім аÑÑында жетімді жүйе хабар тізімі беріледі.
-Егер әмбебап MediaWiki жерÑіндіруге Ò¯Ð»ÐµÑ Ò›Ð¾Ñқыңыз келÑе [http://www.mediawiki.org/wiki/Localisation MediaWiki жерÑіндіру бетіне] және [http://translatewiki.net translatewiki.net жобаÑына] барып шығыңыз.',
+Егер әмбебап MediaWiki жерÑіндіруге Ò¯Ð»ÐµÑ Ò›Ð¾Ñқыңыз келÑе [//www.mediawiki.org/wiki/Localisation MediaWiki жерÑіндіру бетіне] және [//translatewiki.net translatewiki.net жобаÑына] барып шығыңыз.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' өшірілген Ñебебінен '''{{#special:AllMessages}}''' беті қолданылмайды.",
# Thumbnails
@@ -2397,9 +2374,7 @@ MediaWiki жүйеÑінің [[{{#special:Import}}|Ñырттан алу бетÑ
'modern.js' => '/* Мындағы JavaScript тек «Заманауи» (modern) мәнерін пайдаланушылар үшін жегіледі */',
# Metadata
-'nodublincore' => 'Бұл Ñерверде «Dublin Core RDF» түрі қоÑымша деректері өшірілген.',
-'nocreativecommons' => 'Бұл Ñерверде «Creative Commons RDF» түрі қоÑымша деректері өшірілген.',
-'notacceptable' => 'Тұтынғышыңыз оқи алатын пішімі бар деректерді бұл уики Ñервер жетіÑтіре алмайды.',
+'notacceptable' => 'Тұтынғышыңыз оқи алатын пішімі бар деректерді бұл уики Ñервер жетіÑтіре алмайды.',
# Attribution
'anonymous' => '{{SITENAME}} тіркелгіÑіз қатыÑушы(лары)',
@@ -2420,14 +2395,6 @@ MediaWiki жүйеÑінің [[{{#special:Import}}|Ñырттан алу бетÑ
'spam_reverting' => '$1 дегенге Ñілтемелері жоқ Ñоңғы нұÑқаÑына қайтарылды',
'spam_blanking' => '$1 дегенге Ñілтемелері бар барлық түзетулер тазартылды',
-# Info page
-'infosubtitle' => 'Бет туралы мәлімет',
-'numedits' => 'Өңдеме Ñаны (бет): $1',
-'numtalkedits' => 'Өңдеме Ñаны (талқылау беті): $1',
-'numwatchers' => 'Бақылаушы Ñаны: $1',
-'numauthors' => 'Әртүрлі аутор Ñаны (бет): $1',
-'numtalkauthors' => 'Әртүрлі аутор Ñаны (талқылау беті): $1',
-
# Skin names
'skinname-standard' => 'Дағдылы (standard)',
'skinname-nostalgia' => 'ÐÒ£Ñау (nostalgia)',
@@ -2438,27 +2405,6 @@ MediaWiki жүйеÑінің [[{{#special:Import}}|Ñырттан алу бетÑ
'skinname-simple' => 'Кәдімгі (simple)',
'skinname-modern' => 'Заманауи (modern)',
-# Math options
-'mw_math_png' => 'Әрқашан PNG пішінімен көрÑеткіз',
-'mw_math_simple' => 'Егер өте қарапайым болÑа — HTML, әйтпеÑе PNG',
-'mw_math_html' => 'Егер ықтимал болÑа — HTML, әйтпеÑе PNG',
-'mw_math_source' => 'Бұны TeX пішімінде қалдыр (мәтіндік шолғыштарға)',
-'mw_math_modern' => 'ОÑÑ‹ заманғы шолғыштарына Ò±Ñынылады',
-'mw_math_mathml' => 'Егер ықтимал болÑа — MathML (Ñынақтама)',
-
-# Math errors
-'math_failure' => 'Құрылымын талдатуы ÑәтÑіз бітті',
-'math_unknown_error' => 'белгіÑіз қате',
-'math_unknown_function' => 'белгіÑіз жете',
-'math_lexing_error' => 'Ñөз кенінің қатеÑÑ–',
-'math_syntax_error' => 'Ñөйлем жүйеÑінің қатеÑÑ–',
-'math_image_error' => 'PNG аударыÑÑ‹ ÑәтÑіз бітті;
-latex, dvips, gs және convert бағдарламаларының Ð´Ò±Ñ€Ñ‹Ñ Ð¾Ñ€Ð½Ð°Ñ‚ÑƒÑ‹Ð½ текÑеріп шығыңыз',
-'math_bad_tmpdir' => 'math деген уақытша қалтаÑына жазылмады, не қалта құрылмады',
-'math_bad_output' => 'math деген Ð±ÐµÑ€Ñ–Ñ Ò›Ð°Ð»Ñ‚Ð°Ñына жазылмады, не қалта құрылмады',
-'math_notexvc' => 'texvc атқарылмалыÑÑ‹ табылмады;
-баптау үшін math/README құжатын қараңыз.',
-
# Patrolling
'markaspatrolleddiff' => 'Зерттелді деп белгілеу',
'markaspatrolledtext' => 'Бұл бетті зерттелді деп белгіле',
@@ -2492,17 +2438,16 @@ $1',
'nextdiff' => 'КелеÑÑ– айырм. →',
# Media information
-'mediawarning' => "'''Құлақтандыру''': Бұл файл түрінде қаÑкүнемді коды бар болуы ықтимал; бұны жегіп жүйеңізге зиÑн келтіруіңіз мүмкін.",
-'imagemaxsize' => 'СипаттамаÑÑ‹ бетіндегі Ñуреттің мөлшерін шектеуі:',
-'thumbsize' => 'Ðобай мөлшері:',
-'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3 бет',
-'file-info' => 'Файл мөлшері: $1, MIME түрі: $2',
-'file-info-size' => '$1 × $2 нүкте, файл мөлшері: $3, MIME түрі: $4',
-'file-nohires' => '<small>Жоғары ажыратылымдығы жетімÑіз.</small>',
-'svg-long-desc' => 'SVG файлы, кеÑімді $1 × $2 нүкте, файл мөлшері: $3',
-'show-big-image' => 'Жоғары ажыратылымды',
-'show-big-image-thumb' => '<small>Қарап шығу мөлшері: $1 × $2 нүкте</small>',
+'mediawarning' => "'''Құлақтандыру''': Бұл файл түрінде қаÑкүнемді коды бар болуы ықтимал; бұны жегіп жүйеңізге зиÑн келтіруіңіз мүмкін.",
+'imagemaxsize' => 'СипаттамаÑÑ‹ бетіндегі Ñуреттің мөлшерін шектеуі:',
+'thumbsize' => 'Ðобай мөлшері:',
+'widthheight' => '$1 × $2',
+'widthheightpage' => '$1 × $2, $3 бет',
+'file-info' => 'Файл мөлшері: $1, MIME түрі: $2',
+'file-info-size' => '$1 × $2 нүкте, файл мөлшері: $3, MIME түрі: $4',
+'file-nohires' => '<small>Жоғары ажыратылымдығы жетімÑіз.</small>',
+'svg-long-desc' => 'SVG файлы, кеÑімді $1 × $2 нүкте, файл мөлшері: $3',
+'show-big-image' => 'Жоғары ажыратылымды',
# Special:NewFiles
'newimages' => 'Жаңа файлдар көрмеÑÑ–',
@@ -2542,7 +2487,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Ені',
@@ -2557,13 +2508,11 @@ $1',
'exif-ycbcrpositioning' => 'Y құрашы және C құрашы мекендеуі',
'exif-xresolution' => 'Дерелей ажыратылымдығы',
'exif-yresolution' => 'Тірелей ажыратылымдығы',
-'exif-resolutionunit' => 'X және Y бойынша ажыратылымдық бірлігі',
'exif-stripoffsets' => 'Сурет дереректерінің жайғаÑуы',
'exif-rowsperstrip' => 'Белдік Ñайын жол Ñаны',
'exif-stripbytecounts' => 'ҚыÑымдалған белдік Ñайын байт Ñаны',
'exif-jpeginterchangeformat' => 'JPEG SOI дегенге Ñ‹Ò“Ñ‹Ñуы',
'exif-jpeginterchangeformatlength' => 'JPEG деректерінің байт Ñаны',
-'exif-transferfunction' => 'ТаÑымалдау жетеÑÑ–',
'exif-whitepoint' => 'ÐÒ› нүкте Ñ‚Ò¯Ñтілігі',
'exif-primarychromaticities' => 'Ðлғы шептегі Ñ‚Ò¯Ñтіліктері',
'exif-ycbcrcoefficients' => 'Ð¢Ò¯Ñ Ð°ÑÑын таÑымалдау матрицалық еÑеліктері',
@@ -2582,7 +2531,6 @@ $1',
'exif-compressedbitsperpixel' => 'Сурет қыÑымдау тәртібі',
'exif-pixelydimension' => 'Суреттің жарамды ені',
'exif-pixelxdimension' => 'Суреттің жарамды биіктігі',
-'exif-makernote' => 'Өндірушінің аңғартпалары',
'exif-usercomment' => 'ҚатыÑушының мәндемелері',
'exif-relatedsoundfile' => 'ҚатыÑÑ‚Ñ‹ Ð´Ñ‹Ð±Ñ‹Ñ Ñ„Ð°Ð¹Ð»Ñ‹',
'exif-datetimeoriginal' => 'ЖаÑалған кезі',
@@ -2596,7 +2544,6 @@ $1',
'exif-exposureprogram' => 'Ò°Ñталым бағдарламаÑÑ‹',
'exif-spectralsensitivity' => 'Спектр бойынша Ñезгіштігі',
'exif-isospeedratings' => 'ISO жылдамдық жарнақтауы (жарық Ñезгіштігі)',
-'exif-oecf' => 'Оптоелектронды түрлету ықпалы',
'exif-shutterspeedvalue' => 'Жапқыш жылдамдылығы',
'exif-aperturevalue' => 'Саңылаулық',
'exif-brightnessvalue' => 'Жарықтылық',
@@ -2609,7 +2556,6 @@ $1',
'exif-focallength' => 'Шоғырлау алшақтығы',
'exif-subjectarea' => 'ÐÑ‹Ñана ауқымы',
'exif-flashenergy' => 'Жарқылдағыш қарқыны',
-'exif-spatialfrequencyresponse' => 'КеңіÑтік-жиілік Ó™Ñершілігі',
'exif-focalplanexresolution' => 'Х бойынша шоғырлау жайпақтықтың ажыратылымдығы',
'exif-focalplaneyresolution' => 'Y бойынша шоғырлау жайпақтықтың ажыратылымдығы',
'exif-focalplaneresolutionunit' => 'Шоғырлау жайпақтықтың ажыратылымдық өлшемі',
@@ -2618,7 +2564,6 @@ $1',
'exif-sensingmethod' => 'СенÑордің өлшеу әдіÑÑ–',
'exif-filesource' => 'Файл қайнары',
'exif-scenetype' => 'Сахна түрі',
-'exif-cfapattern' => 'CFA Ñүзгі кейіпі',
'exif-customrendered' => 'ҚоÑымша Ñурет өңдетуі',
'exif-exposuremode' => 'Ò°Ñталым тәртібі',
'exif-whitebalance' => 'ÐÒ› Ñ‚Ò¯Ñінің тендеÑтігі',
@@ -2797,14 +2742,12 @@ $1',
# External editor support
'edit-externally' => 'Бұл файлды шеттік қондырма арқылы өңдеу',
-'edit-externally-help' => 'Көбірек ақпарат үшін [http://www.mediawiki.org/wiki/Manual:External_editors орнату нұÑқамаларын] қараңыз.',
+'edit-externally-help' => 'Көбірек ақпарат үшін [//www.mediawiki.org/wiki/Manual:External_editors орнату нұÑқамаларын] қараңыз.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'барлығын',
-'imagelistall' => 'барлығы',
-'watchlistall2' => 'барлық',
-'namespacesall' => 'барлығы',
-'monthsall' => 'барлығы',
+'watchlistall2' => 'барлық',
+'namespacesall' => 'барлығы',
+'monthsall' => 'барлығы',
# E-mail address confirmation
'confirmemail' => 'Е-пошта мекенжайын құптау',
@@ -2920,7 +2863,7 @@ $1',
'watchlistedit-normal-legend' => 'Бақылау тізімінен тақырып аттарын алаÑтау',
'watchlistedit-normal-explain' => 'Бақылау тізіміңіздегі тақырып аттар төменде көрÑетіледі.
Тақырып атын алаÑтау үшін, бүйір көзге Ò›Ò±Ñбелгі Ñалыңыз, және «Тақырып аттарын алаÑта» дегенді нұқыңыз.
-Тағы да [[{{#special:Watchlist}}/raw|қам тізімді өңдей]] алаÑыз.',
+Тағы да [[Special:EditWatchlist/raw|қам тізімді өңдей]] алаÑыз.',
'watchlistedit-normal-submit' => 'Тақырып аттарын алаÑта',
'watchlistedit-normal-done' => 'Бақылау тізіміңізден $1 тақырып аты алаÑталды:',
'watchlistedit-raw-title' => 'Қам бақылау тізімді өңдеу',
@@ -2928,7 +2871,7 @@ $1',
'watchlistedit-raw-explain' => 'Бақылау тізіміңіздегі тақырып аттары төменде көрÑетіледі, және де тізмге Ò¯Ñтеп және тізмден алаÑтап өңделуі мүмкін;
жол Ñайын бір тақырып аты болу жөн.
Бітіргеннен Ñоң «Бақылау тізімді жаңарту» дегенді нұқыңыз.
-Тағы да [[{{#special:Watchlist}}/edit|қалыпалған өңдеуішті пайдалана]] алаÑыз.',
+Тағы да [[Special:EditWatchlist|қалыпалған өңдеуішті пайдалана]] алаÑыз.',
'watchlistedit-raw-titles' => 'Тақырып аттары:',
'watchlistedit-raw-submit' => 'Бақылау тізімді жаңарту',
'watchlistedit-raw-done' => 'Бақылау тізіміңіз жаңартылды.',
@@ -2988,25 +2931,24 @@ $1',
'unknown_extension_tag' => 'Танылмаған кеңейтпе белгіÑÑ– «$1»',
# Special:Version
-'version' => 'Жүйе нұÑқаÑÑ‹',
-'version-extensions' => 'Орнатылған кеңейтімдер',
-'version-specialpages' => 'Ðрнайы беттер',
-'version-parserhooks' => 'Құрылымдық талдатқыштың тұзақтары',
-'version-variables' => 'Ðйнымалылар',
-'version-other' => 'Тағы баÑқалар',
-'version-mediahandlers' => 'ТаÑпа өңдеткіштері',
-'version-hooks' => 'Жете тұзақтары',
-'version-extension-functions' => 'Кеңейтімдер жетелері',
-'version-parser-extensiontags' => 'Құрылымдық талдатқыш кеңейтімдерінің белгілемері',
-'version-parser-function-hooks' => 'Құрылымдық талдатқыш жетелерінің тұзақтары',
-'version-skin-extension-functions' => 'Мәнер кеңейтімдерінің жетелері',
-'version-hook-name' => 'Тұзақ атауы',
-'version-hook-subscribedby' => 'Тұзақ тартқыштары',
-'version-version' => '(ÐÒ±ÑқаÑÑ‹: $1)',
-'version-license' => 'ЛицензиÑÑÑ‹',
-'version-software' => 'Орнатылған бағдарламалық жаÑақтама',
-'version-software-product' => 'Өнім',
-'version-software-version' => 'ÐÒ±ÑқаÑÑ‹',
+'version' => 'Жүйе нұÑқаÑÑ‹',
+'version-extensions' => 'Орнатылған кеңейтімдер',
+'version-specialpages' => 'Ðрнайы беттер',
+'version-parserhooks' => 'Құрылымдық талдатқыштың тұзақтары',
+'version-variables' => 'Ðйнымалылар',
+'version-other' => 'Тағы баÑқалар',
+'version-mediahandlers' => 'ТаÑпа өңдеткіштері',
+'version-hooks' => 'Жете тұзақтары',
+'version-extension-functions' => 'Кеңейтімдер жетелері',
+'version-parser-extensiontags' => 'Құрылымдық талдатқыш кеңейтімдерінің белгілемері',
+'version-parser-function-hooks' => 'Құрылымдық талдатқыш жетелерінің тұзақтары',
+'version-hook-name' => 'Тұзақ атауы',
+'version-hook-subscribedby' => 'Тұзақ тартқыштары',
+'version-version' => '(ÐÒ±ÑқаÑÑ‹: $1)',
+'version-license' => 'ЛицензиÑÑÑ‹',
+'version-software' => 'Орнатылған бағдарламалық жаÑақтама',
+'version-software-product' => 'Өнім',
+'version-software-version' => 'ÐÒ±ÑқаÑÑ‹',
# Special:FilePath
'filepath' => 'Файл орналаÑуы',
@@ -3017,9 +2959,7 @@ $1',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Файл телнұÑқаларын іздеу',
-'fileduplicatesearch-summary' => 'Файл хеші мағынаÑÑ‹ негізінде телнұÑқаларын іздеу.
-
-Файл атауын «{{ns:file}}:» деген баÑтауышÑыз енгізіңіз.',
+'fileduplicatesearch-summary' => 'Файл хеші мағынаÑÑ‹ негізінде телнұÑқаларын іздеу.',
'fileduplicatesearch-legend' => 'ТелнұÑқаны іздеу',
'fileduplicatesearch-filename' => 'Файл атауы:',
'fileduplicatesearch-submit' => 'Ізде',
diff --git a/languages/messages/MessagesKk_latn.php b/languages/messages/MessagesKk_latn.php
index cdd8c8ce..037d72ca 100644
--- a/languages/messages/MessagesKk_latn.php
+++ b/languages/messages/MessagesKk_latn.php
@@ -280,87 +280,87 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Şınjırlı_aýdağıştar', 'Şınjırlı_aýdatwlar' ),
+ 'Allmessages' => array( 'Barlıq_xabarlar' ),
+ 'Allpages' => array( 'Barlıq_better' ),
+ 'Ancientpages' => array( 'Eski_better' ),
+ 'Block' => array( 'Jaýdı_buğattaw', 'IP_buğattaw' ),
+ 'Blockme' => array( 'Özdiktik_buğattaw', 'Özdik_buğattaw', 'Meni_buğattaw' ),
+ 'Booksources' => array( 'Kitap_qaýnarları' ),
'BrokenRedirects' => array( 'Jaramsız_aýdağıştar', 'Jaramsız_aýdatwlar' ),
- 'Disambiguations' => array( 'Aýrıqtı_better' ),
- 'Userlogin' => array( 'Qatıswşı_kirwi' ),
- 'Userlogout' => array( 'Qatıswşı_şığwı' ),
+ 'Categories' => array( 'Sanattar' ),
+ 'ChangePassword' => array( 'Qupïya_sözdi_qaýtarw' ),
+ 'Confirmemail' => array( 'Quptaw_xat' ),
+ 'Contributions' => array( 'Ãœlesi' ),
'CreateAccount' => array( 'Jaña_tirkelgi', 'Tirkelgi_Jaratw' ),
- 'Preferences' => array( 'Baptalımdar', 'Baptaw' ),
- 'Watchlist' => array( 'Baqılaw_tizimi' ),
- 'Recentchanges' => array( 'Jwıqtağı_özgerister' ),
- 'Upload' => array( 'Qotarıp_berw', 'Qotarw' ),
+ 'Deadendpages' => array( 'Tuýıq_better' ),
+ 'Disambiguations' => array( 'Aýrıqtı_better' ),
+ 'DoubleRedirects' => array( 'Şınjırlı_aýdağıştar', 'Şınjırlı_aýdatwlar' ),
+ 'Emailuser' => array( 'Xat_jiberw' ),
+ 'Export' => array( 'Sırtqa_berw' ),
+ 'Fewestrevisions' => array( 'Eñ_az_tüzetilgen' ),
+ 'FileDuplicateSearch' => array( 'Faýl_telnusqasın_izdew', 'Qaýtalanğan_faýldardı_izdew' ),
+ 'Filepath' => array( 'Faýl_mekeni' ),
+ 'Import' => array( 'Sırttan_alw' ),
+ 'Invalidateemail' => array( 'Quptamaw_xatı' ),
+ 'BlockList' => array( 'BuÄŸattalÄŸandar' ),
+ 'Listadmins' => array( 'Äkimşiler', 'Äkimşi_tizimi' ),
+ 'Listbots' => array( 'Bottar', 'Bottar_tizimi' ),
'Listfiles' => array( 'Swret_tizimi' ),
- 'Newimages' => array( 'Jaña_swretter' ),
- 'Listusers' => array( 'Qatıswşılar', 'Qatıswşı_tizimi' ),
'Listgrouprights' => array( 'Top_quqıqtarı_tizimi' ),
- 'Statistics' => array( 'Sanaq' ),
- 'Randompage' => array( 'Kezdeýsoq', 'Kezdeýsoq_bet' ),
+ 'Listredirects' => array( 'Aýdatw_tizimi' ),
+ 'Listusers' => array( 'Qatıswşılar', 'Qatıswşı_tizimi' ),
+ 'Lockdb' => array( 'Derekqordı_qulıptaw' ),
+ 'Log' => array( 'Jwrnal', 'Jwrnaldar' ),
'Lonelypages' => array( 'Sayaq_better' ),
- 'Uncategorizedpages' => array( 'Sanatsız_better' ),
- 'Uncategorizedcategories' => array( 'Sanatsız_sanattar' ),
- 'Uncategorizedimages' => array( 'Sanatsız_swretter' ),
- 'Uncategorizedtemplates' => array( 'Sanatsız_ülgiler' ),
- 'Unusedcategories' => array( 'Paýdalanılmağan_sanattar' ),
- 'Unusedimages' => array( 'Paýdalanılmağan_swretter' ),
- 'Wantedpages' => array( 'Toltırılmağan_better', 'Jaramsız_siltemeler' ),
- 'Wantedcategories' => array( 'Toltırılmağan_sanattar' ),
+ 'Longpages' => array( 'Uzın_better', 'Ülken_better' ),
+ 'MergeHistory' => array( 'Tarïx_biriktirw' ),
+ 'MIMEsearch' => array( 'MIME_türimen_izdew' ),
+ 'Mostcategories' => array( 'Eñ_köp_sanattar_barı' ),
+ 'Mostimages' => array( 'Eñ_köp_paýdalanılğan_swretter', 'Eñ_köp_swretter_barı' ),
'Mostlinked' => array( 'Eñ_köp_siltengen_better' ),
'Mostlinkedcategories' => array( 'Eñ_köp_paýdalanılğan_sanattar', 'Eñ_köp_siltengen_sanattar' ),
'Mostlinkedtemplates' => array( 'Eñ_köp_paýdalanılğan_ülgiler', 'Eñ_köp_siltengen_ülgiler' ),
- 'Mostimages' => array( 'Eñ_köp_paýdalanılğan_swretter', 'Eñ_köp_swretter_barı' ),
- 'Mostcategories' => array( 'Eñ_köp_sanattar_barı' ),
'Mostrevisions' => array( 'Eñ_köp_tüzetilgen', 'Eñ_köp_nusqalar_barı' ),
- 'Fewestrevisions' => array( 'Eñ_az_tüzetilgen' ),
- 'Shortpages' => array( 'Qısqa_better' ),
- 'Longpages' => array( 'Uzın_better', 'Ülken_better' ),
+ 'Movepage' => array( 'Betti_jıljıtw' ),
+ 'Mycontributions' => array( 'Ãœlesim' ),
+ 'Mypage' => array( 'Jeke_betim' ),
+ 'Mytalk' => array( 'Talqılawım' ),
+ 'Newimages' => array( 'Jaña_swretter' ),
'Newpages' => array( 'Jaña_better' ),
- 'Ancientpages' => array( 'Eski_better' ),
- 'Deadendpages' => array( 'Tuýıq_better' ),
+ 'Popularpages' => array( 'Eñ_köp_qaralğan_better', 'Äýgili_better' ),
+ 'Preferences' => array( 'Baptalımdar', 'Baptaw' ),
+ 'Prefixindex' => array( 'Bastawış_tizimi' ),
'Protectedpages' => array( 'QorÄŸalÄŸan_better' ),
'Protectedtitles' => array( 'Qorğalğan_taqırıptar', 'Qorğalğan_atawlar' ),
- 'Allpages' => array( 'Barlıq_better' ),
- 'Prefixindex' => array( 'Bastawış_tizimi' ),
- 'Ipblocklist' => array( 'BuÄŸattalÄŸandar' ),
- 'Specialpages' => array( 'Arnaýı_better' ),
- 'Contributions' => array( 'Ãœlesi' ),
- 'Emailuser' => array( 'Xat_jiberw' ),
- 'Confirmemail' => array( 'Quptaw_xat' ),
- 'Whatlinkshere' => array( 'Mında_siltegender' ),
+ 'Randompage' => array( 'Kezdeýsoq', 'Kezdeýsoq_bet' ),
+ 'Randomredirect' => array( 'Kedeýsoq_aýdağış', 'Kedeýsoq_aýdatw' ),
+ 'Recentchanges' => array( 'Jwıqtağı_özgerister' ),
'Recentchangeslinked' => array( 'Siltengenderdiñ_özgeristeri', 'Qatıstı_özgerister' ),
- 'Movepage' => array( 'Betti_jıljıtw' ),
- 'Blockme' => array( 'Özdiktik_buğattaw', 'Özdik_buğattaw', 'Meni_buğattaw' ),
- 'Booksources' => array( 'Kitap_qaýnarları' ),
- 'Categories' => array( 'Sanattar' ),
- 'Export' => array( 'Sırtqa_berw' ),
- 'Version' => array( 'Nusqası' ),
- 'Allmessages' => array( 'Barlıq_xabarlar' ),
- 'Log' => array( 'Jwrnal', 'Jwrnaldar' ),
- 'Blockip' => array( 'Jaýdı_buğattaw', 'IP_buğattaw' ),
+ 'Revisiondelete' => array( 'Tüzetw_joyw', 'Nusqanı_joyw' ),
+ 'Search' => array( 'Ä°zdew' ),
+ 'Shortpages' => array( 'Qısqa_better' ),
+ 'Specialpages' => array( 'Arnaýı_better' ),
+ 'Statistics' => array( 'Sanaq' ),
+ 'Uncategorizedcategories' => array( 'Sanatsız_sanattar' ),
+ 'Uncategorizedimages' => array( 'Sanatsız_swretter' ),
+ 'Uncategorizedpages' => array( 'Sanatsız_better' ),
+ 'Uncategorizedtemplates' => array( 'Sanatsız_ülgiler' ),
'Undelete' => array( 'Joywdı_boldırmaw', 'Joýılğandı_qaýtarw' ),
- 'Import' => array( 'Sırttan_alw' ),
- 'Lockdb' => array( 'Derekqordı_qulıptaw' ),
'Unlockdb' => array( 'Derekqordı_qulıptamaw' ),
- 'Userrights' => array( 'Qatıswşı_quqıqtarı' ),
- 'MIMEsearch' => array( 'MIME_türimen_izdew' ),
- 'FileDuplicateSearch' => array( 'Faýl_telnusqasın_izdew', 'Qaýtalanğan_faýldardı_izdew' ),
- 'Unwatchedpages' => array( 'Baqılanılmağan_better' ),
- 'Listredirects' => array( 'Aýdatw_tizimi' ),
- 'Revisiondelete' => array( 'Tüzetw_joyw', 'Nusqanı_joyw' ),
+ 'Unusedcategories' => array( 'Paýdalanılmağan_sanattar' ),
+ 'Unusedimages' => array( 'Paýdalanılmağan_swretter' ),
'Unusedtemplates' => array( 'Paýdalanılmağan_ülgiler' ),
- 'Randomredirect' => array( 'Kedeýsoq_aýdağış', 'Kedeýsoq_aýdatw' ),
- 'Mypage' => array( 'Jeke_betim' ),
- 'Mytalk' => array( 'Talqılawım' ),
- 'Mycontributions' => array( 'Ãœlesim' ),
- 'Listadmins' => array( 'Äkimşiler', 'Äkimşi_tizimi' ),
- 'Listbots' => array( 'Bottar', 'Bottar_tizimi' ),
- 'Popularpages' => array( 'Eñ_köp_qaralğan_better', 'Äýgili_better' ),
- 'Search' => array( 'Ä°zdew' ),
- 'Resetpass' => array( 'Qupïya_sözdi_qaýtarw' ),
+ 'Unwatchedpages' => array( 'Baqılanılmağan_better' ),
+ 'Upload' => array( 'Qotarıp_berw', 'Qotarw' ),
+ 'Userlogin' => array( 'Qatıswşı_kirwi' ),
+ 'Userlogout' => array( 'Qatıswşı_şığwı' ),
+ 'Userrights' => array( 'Qatıswşı_quqıqtarı' ),
+ 'Version' => array( 'Nusqası' ),
+ 'Wantedcategories' => array( 'Toltırılmağan_sanattar' ),
+ 'Wantedpages' => array( 'Toltırılmağan_better', 'Jaramsız_siltemeler' ),
+ 'Watchlist' => array( 'Baqılaw_tizimi' ),
+ 'Whatlinkshere' => array( 'Mında_siltegender' ),
'Withoutinterwiki' => array( 'Wïkï-aralıqsızdar' ),
- 'MergeHistory' => array( 'Tarïx_biriktirw' ),
- 'Filepath' => array( 'Faýl_mekeni' ),
- 'Invalidateemail' => array( 'Quptamaw_xatı' ),
);
$messages = array(
@@ -477,14 +477,6 @@ $messages = array(
'category-file-count-limited' => 'Ağımdağı sanatta kelesi $1 faýl bar.',
'listingcontinuesabbrev' => '(jalÄŸ.)',
-'mainpagetext' => "'''MedïaWïkï bwması sätti ornatıldı.'''",
-'mainpagedocfooter' => 'Wïkï bağdarlamalıq jasaqtamasın qalaý qoldanatın aqparatı üşin [http://meta.wikimedia.org/wiki/Help:Contents Paýdalanwşılıq nusqawlarınan] keñes alıñız.
-
-== Bastaw üşin ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Baptalım qalawlarınıñ tizimi]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MedïaWïkïdiñ Jïı Qoýılğan Sawaldarı]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MedïaWïkï şığw twralı xat taratw tizimi]',
-
'about' => 'Joba twralı',
'article' => 'MaÄŸlumat beti',
'newwindow' => '(jaña terezede)',
@@ -518,7 +510,6 @@ $messages = array(
'history' => 'Bet tarïxı',
'history_short' => 'Tarïxı',
'updatedmarker' => 'soñğı kelip-ketwimnen beri jañalanğan',
-'info_short' => 'Mälimet',
'printableversion' => 'Basıp şığarw üşin',
'permalink' => 'Turaqtı silteme',
'print' => 'Basıp şığarw',
@@ -696,12 +687,11 @@ Birneşe mïnöttan qaýta baýqap köriñiz.',
'protectedinterface' => 'Bul bet bağdarlamalıq jasaqtamanıñ tildesw mätinin jetistiredi, sondıqtan qïyanattı qaqpaýlaw üşin özgertwi qulıptalğan.',
'editinginterface' => "'''Qulaqtandırw:''' Bağdarlamalıq jasaqtamanıñ tildesw mätinin jetistiretin betin öñdep jatırsız.
Bul bettiñ özgertwi basqa qatıswşılarğa paýdalanwşılıq tildeswi qalaý körinetine äser etedi.
-Awdarmalar üşin, MediaWiki bağdarlamasın jersindirw [http://translatewiki.net/wiki/Main_Page?setlang=kk translatewiki.net jobası] arqılı qarap şeşiñiz.",
+Awdarmalar üşin, MediaWiki bağdarlamasın jersindirw [//translatewiki.net/wiki/Main_Page?setlang=kk translatewiki.net jobası] arqılı qarap şeşiñiz.",
'sqlhidden' => '(SQL suranımı jasırılğan)',
'cascadeprotected' => 'Bul bet öñdewden qorğalğan, sebebi bul kelesi «bawlı qorğawı» qosılğan {{PLURAL:$1|bettiñ|betterdiñ}} kirikbeti:
$2',
'namespaceprotected' => "'''$1''' esim ayasındağı betterdi öñdew üşin ruqsatıñız joq.",
-'customcssjsprotected' => 'Bul betti öñdewge ruqsatıñız joq, sebebi mında özge qatıswşınıñ jeke baptawları bar.',
'ns-specialprotected' => '{{ns:special}} esim ayasındağı better öñdelinbeýdi',
'titleprotected' => "Bul taqırıp atı bastawdan [[{{ns:user}}:$1|$1]] qorğadı.
Keltirilgen sebebi: ''$2''.",
@@ -749,7 +739,7 @@ Sonı qosıñız da kirwdi qaýta baýqap köriñiz.',
'loginsuccess' => "'''Siz endi {{SITENAME}} jobasına «$1» retinde kirip otırsız.'''",
'nosuchuser' => 'Mında «$1» dep atalğan qatıswşı joq.
Emleñizdi tekseriñiz, ne jaña tirkelgi jasañız.',
-'nosuchusershort' => 'Mında «<nowiki>$1</nowiki>» dep atalğan qatıswşı joq.
+'nosuchusershort' => 'Mında «$1» dep atalğan qatıswşı joq.
Emleñizdi tekseriñiz.',
'nouserspecified' => 'Qatıswşı atın keltirwiñiz jön.',
'wrongpassword' => 'Burıs qupïya söz engizilgen. Qaýta baýqap köriñiz.',
@@ -791,7 +781,7 @@ Jobağa kiriwiñiz jäne qupïya söziñizdi özgertwiñiz tïisti.
Eger bul tirkelgi qatelikpen jasalsa, osı xabarğa elemewiñiz mümkin.',
'loginlanguagelabel' => 'Til: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Tirkelginiñ qupïya sözin özgertw',
'resetpass_announce' => 'Xatpen jiberilgen waqıtşa kodımen kirgensiz.
Kirwiñizdi bitirw üşin, jaña qupïya söziñizdi mında engizwiñiz jön:',
@@ -814,8 +804,6 @@ Kirwiñizdi bitirw üşin, jaña qupïya söziñizdi mında engizwiñiz jön:',
'extlink_tip' => 'Şettik silteme (aldınan http:// engizwin umıtpañız)',
'headline_sample' => 'Bas jol mätini',
'headline_tip' => '2-şi deñgeýli bas jol',
-'math_sample' => 'Örnekti mında engiziñiz',
-'math_tip' => 'Matematïka örnegi (LaTeX)',
'nowiki_sample' => 'Pişimdelinbegen mätindi mında engiziñiz',
'nowiki_tip' => 'Wïkï pişimin elemew',
'image_tip' => 'Endirilgen faýl',
@@ -890,7 +878,7 @@ Eger jañılğannan osında kelgen bolsañız, şolğışıñız «Artqa» degen
Osındaý IP mekenjaý birneşe qatıswşığa ortaqtastırılğan bolwı mümkin.
Eger siz tirkelgisiz qatıswşı bolsañız jäne sizge qatıssız mändemeler jiberilgenin sezseñiz, basqa tirkelgisiz qatıswşılarmen aralastırmawı üşin [[{{#special:Userlogin}}|tirkeliñiz ne kiriñiz]].''",
'noarticletext' => 'Bul bette ağımda eş mätin joq, basqa betterden osı bet atawın [[Special:Search/{{PAGENAME}}|izdep körwiñizge]] nemese osı betti [{{fullurl:{{FULLPAGENAME}}|action=edit}} tüzetwiñizge] boladı.',
-'userpage-userdoesnotexist' => '«$1» qatıswşı tirkelgisi jazıp alınbağan. Bul betti bastaw/öñdew talabıñızdı tekserip şığıñız.',
+'userpage-userdoesnotexist' => '«<nowiki>$1</nowiki>» qatıswşı tirkelgisi jazıp alınbağan. Bul betti bastaw/öñdew talabıñızdı tekserip şığıñız.',
'clearyourcache' => "'''Añğartpa:''' Saqtağannan keýin, özgeristerdi körw üşin şolğış bürkemesin orağıtw ıqtïmal. '''Mozilla / Firefox / Safari:''' ''Qaýta jüktew'' batırmasın nuqığanda ''Shift'' tutıñız, ne ''Ctrl-Shift-R'' basıñız (Apple Mac — ''Cmd-Shift-R''); '''IE:''' ''Jañartw'' batırmasın nuqığanda ''Ctrl'' tutıñız, ne ''Ctrl-F5'' basıñız; '''Konqueror:''': ''Jañartw'' batırmasın jaý nuqıñız, ne ''F5'' basıñız; '''Opera''' paýdanwşıları ''Quraldar→Baptalımdar'' degenge barıp bürkemesin tolıq tazartw jön.",
'usercssyoucanpreview' => "'''Aqıl-keñes:''' Jaña CSS faýlın saqtaw aldında «Qarap şığw» batırmasın qoldanıp sınaqtañız.",
'userjsyoucanpreview' => "'''Aqıl-keñes:''' Jaña JS faýlın saqtaw aldında «Qarap şığw» batırmasın qoldanıp sınaqtañız.",
@@ -1165,7 +1153,6 @@ Añğartpa: {{SITENAME}} torabınıñ mağlumat tizbeleri eskirgen bolwı mümki
'changepassword' => 'Qupïya sözdi özgertw',
'prefs-skin' => 'Mänerler',
'skin-preview' => 'Qarap şığw',
-'prefs-math' => 'Örnekter',
'datedefault' => 'Eş qalawsız',
'prefs-datetime' => 'Waqıt',
'prefs-personal' => 'Jeke derekteri',
@@ -1181,8 +1168,6 @@ Añğartpa: {{SITENAME}} torabınıñ mağlumat tizbeleri eskirgen bolwı mümki
'columns' => 'BaÄŸandar:',
'searchresultshead' => 'Ä°zdew',
'resultsperpage' => 'Bet saýın nätïje sanı:',
-'contextlines' => 'Nätïje saýın jol sanı:',
-'contextchars' => 'Jol saýın tañba sanı:',
'stub-threshold' => '<a href="#" class="stub">Biteme siltemesin</a> pişimdew tabaldırığı (baýt):',
'recentchangesdays' => 'Jüıqtağı özgeristerinde körsetpek kün sanı:',
'recentchangescount' => 'Jwıqtağı özgeristerdinde, tarïx jäne jwrnal betterinde körsetpek öñdeme sanı:',
@@ -1436,10 +1421,6 @@ keri qaýtıñız da, osı faýldı jaña atımen qotarıp beriñiz. [[File:$1|t
'watchthisupload' => 'Bul betti baqılaw',
'filewasdeleted' => 'Bul atawı bar faýl burın qotarıp berilgen de beri kele joýılğan.
Bunı qaýta qotarıp berw aldınan $1 degendi tekserip şığıñız.',
-'upload-wasdeleted' => "'''Qulaqtandırw: Aldında joýılğan faýldı qotarıp bermeksiz.'''
-
-Bul faýldı qotarıp berwin jalğastırw üşin bunıñ ıñğaýlığın tekserip şığwıñız jön.
-Qolaýlı bolwı üşin bul faýldıñ joyw jwrnalı keltirilgen:",
'filename-bad-prefix' => "Qotarıp bermek faýlıñızdıñ atawı '''«$1» ''' dep bastaladı, mınadaý sïpattawsız atawdı ädette sandıq kameralar özdiktik beredi.
Faýlıñızğa sïpattılaw atawdı tañdañız.",
'upload-success-subj' => 'Sätti qotarıp berildi',
@@ -1500,7 +1481,6 @@ Bağannıñ bas jolın nuqığanda surıptawdıñ rettewi özgertiledi.',
'linkstoimage' => 'Bul faýlğa kelesi {{PLURAL:$1|bet|$1 bet}} silteýdi:',
'nolinkstoimage' => 'Bul faýlğa eş bet siltemeýdi.',
'morelinkstoimage' => 'Bul faýldıñ [[{{#special:Whatlinkshere}}/$1|köbirek siltemelerin]] qaraw.',
-'redirectstofile' => 'Kelesi {{PLURAL:$1|faýl|$1 faýl}} bul faýlğa aýdaýdı:',
'duplicatesoffile' => 'Kelesi {{PLURAL:$1|faýl bul faýldıñ telnusqası|$1 faýl bul faýldıñ telnusqaları}}:',
'sharedupload' => 'Bul faýl ortaq qoýmağa qotarıp berilgen sondıqtan basqa jobalarda qoldanwı mümkin.',
'uploadnewversion-linktext' => 'Bul faýldıñ jaña nusqasın qotarıp berw',
@@ -1742,10 +1722,8 @@ Qatıswşı baptawıñızda engizgen e-poşta mekenjaýıñız «Kimnen» degen
'watchlistanontext' => 'Baqılaw tizimiñizdegi danalardı qaraw, ne öñdew üşin $1 kerek.',
'watchnologin' => 'Kirmegensiz',
'watchnologintext' => 'Baqılaw tizimiñizdi özgertw üşin [[Special:UserLogin|kirwiñiz]] jön.',
-'addedwatch' => 'Baqılaw tizimine üsteldi',
'addedwatchtext' => "«[[:$1]]» beti [[{{#special:Watchlist}}|baqılaw tizimiñizge]] üsteldi.
Bul bettiñ jäne baýlanıstı talqılaw betiniñ keleşektegi özgeristeri mında tizimdelinedi de, jäne bettiñ atawı jeñil tabılw üşin [[{{#special:Recentchanges}}|jwıqtağı özgerister tiziminde]] '''jwan ärpimen''' körsetiledi.",
-'removedwatch' => 'Baqılaw tizimiñizden alastaldı',
'removedwatchtext' => '«[[:$1]]» beti baqılaw tizimiñizden alastaldı.',
'watch' => 'Baqılaw',
'watchthispage' => 'Betti baqılaw',
@@ -1798,10 +1776,10 @@ Sonımen qatar baqılaw tizimiñizdegi bet eskertpelik belgisin qaýta qoýıñÄ
----
Baqılaw tizimiñizdiñ baptawlırın özgertw üşin, mında kelip-ketiñiz:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Sın-pikir berw jäne bılaýğı järdem alw üşin:
-{{fullurl:{{{{ns:mediawiki}}:Helppage}}}}',
+{{canonicalurl:{{{{ns:mediawiki}}:Helppage}}}}',
# Delete
'deletepage' => 'Betti joyw',
@@ -1816,7 +1794,7 @@ Sın-pikir berw jäne bılaýğı järdem alw üşin:
'confirmdeletetext' => 'Betti bükil tarïxımen birge derekqordan joýywın kozdediñiz.
Osını istew nïetiñizdi, saldarın baýımdawıñızdı jäne [[{{{{ns:mediawiki}}:Policy-url}}]] degenge laýıqtı dep istemektengeñizdi quptañız.',
'actioncomplete' => 'Äreket bitti',
-'deletedtext' => '«<nowiki>$1</nowiki>» joýıldı.
+'deletedtext' => '«$1» joýıldı.
Jwıqtağı joywlar twralı jazbaların $2 degennen qarañız.',
'deletedarticle' => '«[[$1]]» degendi joýdı',
'suppressedarticle' => '«[[$1]]» degendi şettetti',
@@ -1873,7 +1851,7 @@ Ağımdağı qorğaw ärektter bar better üşin [[{{#special:Protectedpages}}|q
'protectexpiry' => 'Merzimi bitpek:',
'protect_expiry_invalid' => 'Bitetin waqıtı jaramsız.',
'protect_expiry_old' => 'Bitetin waqıtı ötip ketken.',
-'protect-text' => "'''<nowiki>$1</nowiki>''' betiniñ qorğaw deñgeýin qarap jäne özgertip şığa alasız.",
+'protect-text' => "'''$1''' betiniñ qorğaw deñgeýin qarap jäne özgertip şığa alasız.",
'protect-locked-blocked' => "Buğattawıñız öşirilgenşe deýin qorğaw deñgeýin özgerte almaýsız.
Mına '''$1''' bettiñ ağımdıq baptawları:",
'protect-locked-dblock' => "Derekqordıñ qulıptawı belsendi bolğandıqtan qorğaw deñgeýleri özgertilmeýdi.
@@ -2007,7 +1985,6 @@ $1',
'blockiptext' => 'Tömendegi pişin qatıswşınıñ jazw ruqsatın belgili IP mekenjaýımen ne atımen buğattaw üşin qoldanıladı.
Bunı tek buzaqılıqtı qaqpaýlaw üşin jäne de [[{{{{ns:mediawiki}}:Policy-url}}|erejeler]] boýınşa atqarwıñız jön.
Tömende tïisti sebebin toltırıp körsetiñiz (mısalı, däýekke buzaqılıqpen özgertken betterdi keltirip).',
-'ipaddress' => 'IP mekenjaýı:',
'ipadressorusername' => 'IP mekenjaýı ne qatıswşı atı:',
'ipbexpiry' => 'Merzimi bitpek:',
'ipbreason' => 'Sebebi:',
@@ -2020,7 +1997,6 @@ Tömende tïisti sebebin toltırıp körsetiñiz (mısalı, däýekke buzaqılı
** Qoqandaw/qwğındaw minezqulıq
** Birneşe ret tirkelip qïyanattaw
** Öreskel qatıswşı atı',
-'ipbanononly' => 'Tek tirkelgisiz qatıswşılardı buğattaw',
'ipbcreateaccount' => 'Tirkelwdi qaqpaýlaw',
'ipbemailban' => 'Qatıswşı e-poştamen xat jöneltwin qaqpaýlaw',
'ipbenableautoblock' => 'Bul qatıswşı soñğı qoldanğan IP mekenjaýın, jäne keýin öñdewge baýqap körgen är IP mekenjaýların özbuğattawı',
@@ -2046,9 +2022,7 @@ Buğattardı şolıp şığw üşin [[{{#special:Ipblocklist}}|IP buğattaw tizi
'unblocked-id' => '$1 buğattaw alastaldı',
'ipblocklist' => 'Buğattalğan qatıswşı / IP mekenjaý tizimi',
'ipblocklist-legend' => 'Buğattalğan qatıswşını tabw',
-'ipblocklist-username' => 'Qatıswşı atı / IP mekenjaýı:',
'ipblocklist-submit' => 'Ä°zde',
-'blocklistline' => '$1, $2 $3 degendi buğattadı ($4)',
'infiniteblock' => 'mängi',
'expiringblock' => 'merzimi bitpek: $1 $2',
'anononlyblock' => 'tek tirkelgisizderdi',
@@ -2192,7 +2166,7 @@ Soñğı jağdaýda siltemeni de, mısalı «{{{{ns:mediawiki}}:Mainpage}}» bet
'allmessagesdefault' => 'Ädepki mätini',
'allmessagescurrent' => 'Ağımdıq mätini',
'allmessagestext' => 'Mında {{ns:mediawiki}} esim ayasında jetimdi jüýe xabar tizimi beriledi.
-Eger ämbebap MediaWiki jersindirwge üles qosqıñız kelse [http://www.mediawiki.org/wiki/Localisation MediaWiki jersindirw betine] jäne [http://translatewiki.net translatewiki.net jobasına] barıp şığıñız.',
+Eger ämbebap MediaWiki jersindirwge üles qosqıñız kelse [//www.mediawiki.org/wiki/Localisation MediaWiki jersindirw betine] jäne [//translatewiki.net translatewiki.net jobasına] barıp şığıñız.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' öşirilgen sebebinen '''{{ns:special}}:AllMessages''' beti qoldanılmaýdı.",
# Thumbnails
@@ -2328,9 +2302,7 @@ Wïkï-aparw üşin sırttan alw barlıq äreketter [[{{#special:Log}}/import|sÄ
'modern.js' => '/* Mındağı JavaScript tek «Zamanawï» (modern) mänerin paýdalanwşılar üşin jegiledi */',
# Metadata
-'nodublincore' => 'Bul serverde «Dublin Core RDF» türi qosımşa derekteri öşirilgen.',
-'nocreativecommons' => 'Bul serverde «Creative Commons RDF» türi qosımşa derekteri öşirilgen.',
-'notacceptable' => 'Tutınğışıñız oqï alatın pişimi bar derekterdi bul wïkï server jetistire almaýdı.',
+'notacceptable' => 'Tutınğışıñız oqï alatın pişimi bar derekterdi bul wïkï server jetistire almaýdı.',
# Attribution
'anonymous' => '{{SITENAME}} tirkelgisiz qatıswşı(ları)',
@@ -2351,14 +2323,6 @@ Bunıñ sebebi şettik torap siltemesinen bolwı mümkin.',
'spam_reverting' => '$1 degenge siltemeleri joq soñğı nusqasına qaýtarıldı',
'spam_blanking' => '$1 degenge siltemeleri bar barlıq tüzetwler tazartıldı',
-# Info page
-'infosubtitle' => 'Bet twralı mälimet',
-'numedits' => 'Öñdeme sanı (bet): $1',
-'numtalkedits' => 'Öñdeme sanı (talqılaw beti): $1',
-'numwatchers' => 'Baqılawşı sanı: $1',
-'numauthors' => 'Ärtürli awtor sanı (bet): $1',
-'numtalkauthors' => 'Ärtürli awtor sanı (talqılaw beti): $1',
-
# Skin names
'skinname-standard' => 'Dağdılı (standard)',
'skinname-nostalgia' => 'Añsaw (nostalgia)',
@@ -2369,27 +2333,6 @@ Bunıñ sebebi şettik torap siltemesinen bolwı mümkin.',
'skinname-simple' => 'Kädimgi (simple)',
'skinname-modern' => 'Zamanawï (modern)',
-# Math options
-'mw_math_png' => 'Ärqaşan PNG pişinimen körsetkiz',
-'mw_math_simple' => 'Eger öte qarapaýım bolsa — HTML, äýtpese PNG',
-'mw_math_html' => 'Eger ıqtïmal bolsa — HTML, äýtpese PNG',
-'mw_math_source' => 'Bunı TeX pişiminde qaldır (mätindik şolğıştarğa)',
-'mw_math_modern' => 'Osı zamanğı şolğıştarına usınıladı',
-'mw_math_mathml' => 'Eger ıqtïmal bolsa — MathML (sınaqtama)',
-
-# Math errors
-'math_failure' => 'Qurılımın taldatwı sätsiz bitti',
-'math_unknown_error' => 'belgisiz qate',
-'math_unknown_function' => 'belgisiz jete',
-'math_lexing_error' => 'söz keniniñ qatesi',
-'math_syntax_error' => 'söýlem jüýesiniñ qatesi',
-'math_image_error' => 'PNG awdarısı sätsiz bitti;
-latex, dvips, gs jäne convert bağdarlamalarınıñ durıs ornatwın tekserip şığıñız',
-'math_bad_tmpdir' => 'math degen waqıtşa qaltasına jazılmadı, ne qalta qurılmadı',
-'math_bad_output' => 'math degen beris qaltasına jazılmadı, ne qalta qurılmadı',
-'math_notexvc' => 'texvc atqarılmalısı tabılmadı;
-baptaw üşin math/README qujatın qarañız.',
-
# Patrolling
'markaspatrolleddiff' => 'Zertteldi dep belgilew',
'markaspatrolledtext' => 'Bul betti zertteldi dep belgile',
@@ -2423,17 +2366,16 @@ $1',
'nextdiff' => 'Kelesi aýırm. →',
# Media information
-'mediawarning' => "'''Qulaqtandırw''': Bul faýl türinde qaskünemdi kodı bar bolwı ıqtïmal; bunı jegip jüýeñizge zïyan keltirwiñiz mümkin.",
-'imagemaxsize' => 'Sïpattaması betindegi swrettiñ mölşerin şektewi:',
-'thumbsize' => 'Nobaý mölşeri:',
-'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3 bet',
-'file-info' => 'Faýl mölşeri: $1, MIME türi: $2',
-'file-info-size' => '$1 × $2 nükte, faýl mölşeri: $3, MIME türi: $4',
-'file-nohires' => '<small>Joğarı ajıratılımdığı jetimsiz.</small>',
-'svg-long-desc' => 'SVG faýlı, kesimdi $1 × $2 nükte, faýl mölşeri: $3',
-'show-big-image' => 'Joğarı ajıratılımdı',
-'show-big-image-thumb' => '<small>Qarap şığw mölşeri: $1 × $2 nükte</small>',
+'mediawarning' => "'''Qulaqtandırw''': Bul faýl türinde qaskünemdi kodı bar bolwı ıqtïmal; bunı jegip jüýeñizge zïyan keltirwiñiz mümkin.",
+'imagemaxsize' => 'Sïpattaması betindegi swrettiñ mölşerin şektewi:',
+'thumbsize' => 'Nobaý mölşeri:',
+'widthheight' => '$1 × $2',
+'widthheightpage' => '$1 × $2, $3 bet',
+'file-info' => 'Faýl mölşeri: $1, MIME türi: $2',
+'file-info-size' => '$1 × $2 nükte, faýl mölşeri: $3, MIME türi: $4',
+'file-nohires' => '<small>Joğarı ajıratılımdığı jetimsiz.</small>',
+'svg-long-desc' => 'SVG faýlı, kesimdi $1 × $2 nükte, faýl mölşeri: $3',
+'show-big-image' => 'Joğarı ajıratılımdı',
# Special:NewFiles
'newimages' => 'Jaña faýldar körmesi',
@@ -2471,7 +2413,13 @@ Basqaları ädepkiden jasırıladı.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Eni',
@@ -2486,13 +2434,11 @@ Basqaları ädepkiden jasırıladı.
'exif-ycbcrpositioning' => 'Y quraşı jäne C quraşı mekendewi',
'exif-xresolution' => 'Dereleý ajıratılımdığı',
'exif-yresolution' => 'Tireleý ajıratılımdığı',
-'exif-resolutionunit' => 'X jäne Y boýınşa ajıratılımdıq birligi',
'exif-stripoffsets' => 'Swret dererekteriniñ jaýğaswı',
'exif-rowsperstrip' => 'Beldik saýın jol sanı',
'exif-stripbytecounts' => 'Qısımdalğan beldik saýın baýt sanı',
'exif-jpeginterchangeformat' => 'JPEG SOI degenge ığıswı',
'exif-jpeginterchangeformatlength' => 'JPEG derekteriniñ baýt sanı',
-'exif-transferfunction' => 'Tasımaldaw jetesi',
'exif-whitepoint' => 'Aq nükte tüstiligi',
'exif-primarychromaticities' => 'Alğı şeptegi tüstilikteri',
'exif-ycbcrcoefficients' => 'Tüs ayasın tasımaldaw matrïcalıq eselikteri',
@@ -2511,7 +2457,6 @@ Basqaları ädepkiden jasırıladı.
'exif-compressedbitsperpixel' => 'Swret qısımdaw tärtibi',
'exif-pixelydimension' => 'Swrettiñ jaramdı eni',
'exif-pixelxdimension' => 'Swrettiñ jaramdı bïiktigi',
-'exif-makernote' => 'Öndirwşiniñ añğartpaları',
'exif-usercomment' => 'Qatıswşınıñ mändemeleri',
'exif-relatedsoundfile' => 'Qatıstı dıbıs faýlı',
'exif-datetimeoriginal' => 'JasalÄŸan kezi',
@@ -2525,7 +2470,6 @@ Basqaları ädepkiden jasırıladı.
'exif-exposureprogram' => 'Ustalım bağdarlaması',
'exif-spectralsensitivity' => 'Spektr boýınşa sezgiştigi',
'exif-isospeedratings' => 'ISO jıldamdıq jarnaqtawı (jarıq sezgiştigi)',
-'exif-oecf' => 'Optoelektrondı türletw ıqpalı',
'exif-shutterspeedvalue' => 'Japqış jıldamdılığı',
'exif-aperturevalue' => 'Sañılawlıq',
'exif-brightnessvalue' => 'Jarıqtılıq',
@@ -2538,7 +2482,6 @@ Basqaları ädepkiden jasırıladı.
'exif-focallength' => 'Şoğırlaw alşaqtığı',
'exif-subjectarea' => 'Nısana awqımı',
'exif-flashenergy' => 'Jarqıldağış qarqını',
-'exif-spatialfrequencyresponse' => 'Keñistik-jïilik äserşiligi',
'exif-focalplanexresolution' => 'X boýınşa şoğırlaw jaýpaqtıqtıñ ajıratılımdığı',
'exif-focalplaneyresolution' => 'Y boýınşa şoğırlaw jaýpaqtıqtıñ ajıratılımdığı',
'exif-focalplaneresolutionunit' => 'Şoğırlaw jaýpaqtıqtıñ ajıratılımdıq ölşemi',
@@ -2547,7 +2490,6 @@ Basqaları ädepkiden jasırıladı.
'exif-sensingmethod' => 'Sensordiñ ölşew ädisi',
'exif-filesource' => 'Faýl qaýnarı',
'exif-scenetype' => 'Saxna türi',
-'exif-cfapattern' => 'CFA süzgi keýipi',
'exif-customrendered' => 'Qosımşa swret öñdetwi',
'exif-exposuremode' => 'Ustalım tärtibi',
'exif-whitebalance' => 'Aq tüsiniñ tendestigi',
@@ -2726,14 +2668,12 @@ Basqaları ädepkiden jasırıladı.
# External editor support
'edit-externally' => 'Bul faýldı şettik qondırma arqılı öñdew',
-'edit-externally-help' => 'Köbirek aqparat üşin [http://www.mediawiki.org/wiki/Manual:External_editors ornatw nusqamaların] qarañız.',
+'edit-externally-help' => 'Köbirek aqparat üşin [//www.mediawiki.org/wiki/Manual:External_editors ornatw nusqamaların] qarañız.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'barlığın',
-'imagelistall' => 'barlığı',
-'watchlistall2' => 'barlıq',
-'namespacesall' => 'barlığı',
-'monthsall' => 'barlığı',
+'watchlistall2' => 'barlıq',
+'namespacesall' => 'barlığı',
+'monthsall' => 'barlığı',
# E-mail address confirmation
'confirmemail' => 'E-poşta mekenjaýın quptaw',
@@ -2845,7 +2785,7 @@ Osı betti qaýta bastawın naqtı tilegeniñizdi quptañız.",
'watchlistedit-normal-legend' => 'Baqılaw tiziminen taqırıp attarın alastaw',
'watchlistedit-normal-explain' => 'Baqılaw tizimiñizdegi taqırıp attar tömende körsetiledi.
Taqırıp atın alastaw üşin, büýir közge qusbelgi salıñız, jäne «Taqırıp attarın alasta» degendi nuqıñız.
-Tağı da [[{{#special:Watchlist}}/raw|qam tizimdi öñdeý]] alasız.',
+Tağı da [[Special:EditWatchlist/raw|qam tizimdi öñdeý]] alasız.',
'watchlistedit-normal-submit' => 'Taqırıp attarın alasta',
'watchlistedit-normal-done' => 'Baqılaw tizimiñizden $1 taqırıp atı alastaldı:',
'watchlistedit-raw-title' => 'Qam baqılaw tizimdi öñdew',
@@ -2853,7 +2793,7 @@ Tağı da [[{{#special:Watchlist}}/raw|qam tizimdi öñdeý]] alasız.',
'watchlistedit-raw-explain' => 'Baqılaw tizimiñizdegi taqırıp attarı tömende körsetiledi, jäne de tizmge üstep jäne tizmden alastap öñdelwi mümkin;
jol saýın bir taqırıp atı bolw jön.
Bitirgennen soñ «Baqılaw tizimdi jañartw» degendi nuqıñız.
-Tağı da [[{{#special:Watchlist}}/edit|qalıpalğan öñdewişti paýdalana]] alasız.',
+Tağı da [[Special:EditWatchlist|qalıpalğan öñdewişti paýdalana]] alasız.',
'watchlistedit-raw-titles' => 'Taqırıp attarı:',
'watchlistedit-raw-submit' => 'Baqılaw tizimdi jañartw',
'watchlistedit-raw-done' => 'Baqılaw tizimiñiz jañartıldı.',
@@ -2913,25 +2853,24 @@ Tağı da [[{{#special:Watchlist}}/edit|qalıpalğan öñdewişti paýdalana]] a
'unknown_extension_tag' => 'Tanılmağan keñeýtpe belgisi «$1»',
# Special:Version
-'version' => 'Jüýe nusqası',
-'version-extensions' => 'Ornatılğan keñeýtimder',
-'version-specialpages' => 'Arnaýı better',
-'version-parserhooks' => 'Qurılımdıq taldatqıştıñ tuzaqtarı',
-'version-variables' => 'Aýnımalılar',
-'version-other' => 'Tağı basqalar',
-'version-mediahandlers' => 'Taspa öñdetkişteri',
-'version-hooks' => 'Jete tuzaqtarı',
-'version-extension-functions' => 'Keñeýtimder jeteleri',
-'version-parser-extensiontags' => 'Qurılımdıq taldatqış keñeýtimderiniñ belgilemeri',
-'version-parser-function-hooks' => 'Qurılımdıq taldatqış jeteleriniñ tuzaqtarı',
-'version-skin-extension-functions' => 'Mäner keñeýtimderiniñ jeteleri',
-'version-hook-name' => 'Tuzaq atawı',
-'version-hook-subscribedby' => 'Tuzaq tartqıştarı',
-'version-version' => '(Nusqası: $1)',
-'version-license' => 'Lïcenzïyası',
-'version-software' => 'Ornatılğan bağdarlamalıq jasaqtama',
-'version-software-product' => 'Önim',
-'version-software-version' => 'Nusqası',
+'version' => 'Jüýe nusqası',
+'version-extensions' => 'Ornatılğan keñeýtimder',
+'version-specialpages' => 'Arnaýı better',
+'version-parserhooks' => 'Qurılımdıq taldatqıştıñ tuzaqtarı',
+'version-variables' => 'Aýnımalılar',
+'version-other' => 'Tağı basqalar',
+'version-mediahandlers' => 'Taspa öñdetkişteri',
+'version-hooks' => 'Jete tuzaqtarı',
+'version-extension-functions' => 'Keñeýtimder jeteleri',
+'version-parser-extensiontags' => 'Qurılımdıq taldatqış keñeýtimderiniñ belgilemeri',
+'version-parser-function-hooks' => 'Qurılımdıq taldatqış jeteleriniñ tuzaqtarı',
+'version-hook-name' => 'Tuzaq atawı',
+'version-hook-subscribedby' => 'Tuzaq tartqıştarı',
+'version-version' => '(Nusqası: $1)',
+'version-license' => 'Lïcenzïyası',
+'version-software' => 'Ornatılğan bağdarlamalıq jasaqtama',
+'version-software-product' => 'Önim',
+'version-software-version' => 'Nusqası',
# Special:FilePath
'filepath' => 'Faýl ornalaswı',
@@ -2942,9 +2881,7 @@ Swretter tolıq ajıratılımdığımen körsetiledi, basqa faýl türlerine qat
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Faýl telnusqaların izdew',
-'fileduplicatesearch-summary' => 'Faýl xeşi mağınası negizinde telnusqaların izdew.
-
-Faýl atawın «{{ns:file}}:» degen bastawışsız engiziñiz.',
+'fileduplicatesearch-summary' => 'Faýl xeşi mağınası negizinde telnusqaların izdew.',
'fileduplicatesearch-legend' => 'Telnusqanı izdew',
'fileduplicatesearch-filename' => 'Faýl atawı:',
'fileduplicatesearch-submit' => 'Ä°zde',
diff --git a/languages/messages/MessagesKl.php b/languages/messages/MessagesKl.php
index dad2cd0d..1db9a86e 100644
--- a/languages/messages/MessagesKl.php
+++ b/languages/messages/MessagesKl.php
@@ -145,7 +145,6 @@ $messages = array(
'searcharticle' => 'Tassunngarit',
'history' => 'Oqaluttuassartaa',
'history_short' => 'Oqaluttuassartaa',
-'info_short' => 'Paasissutissat',
'printableversion' => 'Naqikkuminartoq',
'permalink' => 'Ataavartumik innersuut',
'edit' => 'Aaqqissoruk',
@@ -244,7 +243,7 @@ $messages = array(
'acct_creation_throttle_hit' => 'Konto-mik pilersitsereersimagavit pilersitseqqissinnaanngilatit, IP-adressit malillugu.
Taamaattumik maannakkorpiaq kontomik pilersitsisinnaanngilatit.',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Isissutissatoqaq:',
'newpassword' => 'Isissutissaq nutaaq:',
'retypenew' => 'Isissutissaq nutaaq allaqqiuk',
@@ -422,7 +421,6 @@ Aamma takuuk [[Special:WantedCategories|sunut atassusinut kissaatigineqartut]].'
# Watchlist
'watchlist' => 'Ersersimasut',
'mywatchlist' => 'Nuisatiffikka',
-'addedwatch' => 'Nakkutilliinermi allattorsimaffimmut ilanngunneqarsimavoq',
'addedwatchtext' => 'Una qupperneq "[[:$1]]" ersersimatitannut ilanngunneqarpoq. Siunissami allannguutit ilinnut malugeqquneqartassapput aamma [[Special:RecentChanges|allannguutini kingullerni]] issusuumik allanneqartuusassallutik. Ersersimatikkusunngikkukku [[Special:Watchlist|piiginnassavat]] ersersimasuutitanni.',
'watch' => 'Ersilli',
'watchthispage' => 'Qupperneq ersersimatiguk',
@@ -482,7 +480,6 @@ Aamma takuuk [[Special:WantedCategories|sunut atassusinut kissaatigineqartut]].'
'ipadressorusername' => 'IP adresse imalt. atuisoq:',
'ipboptions' => '2 tiimit:2 hours,ulloq 1:1 day,ullut 3:3 days,sap akunn 1:1 week,sap akunn 2:2 weeks,qaammat 1:1 month,qaammatit 3:3 months,qaammatit 6:6 months,ukioq 1:1 year,killeqanngitsoq:infinite',
'ipblocklist-submit' => 'Ujarlerit',
-'blocklistline' => '$1, $2 asserpaa $3 ($4)',
'infiniteblock' => 'killeqanngitsoq',
'expiringblock' => 'atorunnaassaaq $1 $2-nngoruni',
'blocklink' => 'assersoruk',
@@ -551,9 +548,8 @@ Aamma takuuk [[Special:WantedCategories|sunut atassusinut kissaatigineqartut]].'
'ilsubmit' => 'Ujarlerit',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tamarmik',
-'namespacesall' => 'tamarmik',
-'monthsall' => 'tamarmik',
+'namespacesall' => 'tamarmik',
+'monthsall' => 'tamarmik',
# Auto-summaries
'autosumm-new' => "Qupperneq pilersippaa '$1'",
diff --git a/languages/messages/MessagesKm.php b/languages/messages/MessagesKm.php
index f81f6257..f1d8d5de 100644
--- a/languages/messages/MessagesKm.php
+++ b/languages/messages/MessagesKm.php
@@ -92,94 +92,99 @@ $dateFormats = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ការបញ្ជូនបន្ážáž‘្វáŸážŠáž„' ),
+ 'Activeusers' => array( 'អ្នកប្រើប្រាស់សកម្ម' ),
+ 'Allmessages' => array( 'គ្រប់សារ' ),
+ 'Allpages' => array( 'គ្រប់ទំពáŸážš' ),
+ 'Ancientpages' => array( 'ទំពáŸážšáž…ាស់ៗ' ),
+ 'Blankpage' => array( 'ទំពáŸážšáž‘áž‘áŸ' ),
+ 'Block' => array( 'រាំងážáŸ’ទប់IP' ),
+ 'Blockme' => array( 'រាំងážáŸ’ទប់' ),
+ 'Booksources' => array( 'ប្រភពសៀវភៅ' ),
'BrokenRedirects' => array( 'ការបញ្ជូនបន្ážážŠáŸ‚áž›ážáž¼áž…' ),
- 'Disambiguations' => array( 'ចំណងជើងស្រដៀងគ្នា' ),
- 'Userlogin' => array( 'ការឡុកអ៊ីនរបស់អ្នកប្រើប្រាស់' ),
- 'Userlogout' => array( 'ការចាកចáŸáž‰ážšáž”ស់អ្នកប្រើប្រាស់' ),
+ 'Categories' => array( 'ចំណាážáŸ‹ážáŸ’នាក់ក្រុម' ),
+ 'ChangePassword' => array( 'ដាក់ពាក្យសំងាážáŸ‹ážáŸ’មីឡើងវិញ' ),
+ 'ComparePages' => array( 'ប្រៀបធៀបទំពáŸážš' ),
+ 'Confirmemail' => array( 'បញ្ជាក់ទទួលស្គាល់អ៊ីមែល' ),
+ 'Contributions' => array( 'ការរួមចំណែក' ),
'CreateAccount' => array( 'បង្កើážáž‚ណនី' ),
- 'Preferences' => array( 'ចំណង់ចំណូលចិážáŸ’áž' ),
- 'Watchlist' => array( 'បញ្ជីážáž¶áž˜ážŠáž¶áž“' ),
- 'Recentchanges' => array( 'បំលាស់ប្ដូរážáŸ’មីៗ' ),
- 'Upload' => array( 'ផ្ទុកឯកសារឡើង' ),
+ 'Deadendpages' => array( 'ទំពáŸážšáž‘ាល់' ),
+ 'DeletedContributions' => array( 'ការរួមចំណែកដែលážáŸ’រូវបានលុបចោល' ),
+ 'Disambiguations' => array( 'ចំណងជើងស្រដៀងគ្នា' ),
+ 'DoubleRedirects' => array( 'ការបញ្ជូនបន្ážáž‘្វáŸážŠáž„' ),
+ 'Emailuser' => array( 'អ្នកប្រើប្រាស់អ៊ីមែល' ),
+ 'Export' => array( 'នាំចáŸáž‰' ),
+ 'Fewestrevisions' => array( 'ទំពáŸážšáž˜áž¶áž“កំណែážáž·áž…ជាងគáŸ' ),
+ 'FileDuplicateSearch' => array( 'ស្វែងរកឯកសារដូចគ្នាបáŸáŸ‡áž”áž·áž‘' ),
+ 'Filepath' => array( 'ផ្លូវនៃឯកសារ' ),
+ 'Import' => array( 'នាំចូល' ),
+ 'Invalidateemail' => array( 'អ៊ីមែលមិនážáŸ’រឹមážáŸ’រូវ' ),
+ 'BlockList' => array( 'បញ្ជីហាមឃាážáŸ‹IP' ),
+ 'LinkSearch' => array( 'ស្វែងរកážáŸ†ážŽáž—្ជាប់' ),
+ 'Listadmins' => array( 'បញ្ជីអ្នកអភិបាល' ),
+ 'Listbots' => array( 'បញ្ជីរូបយន្áž' ),
'Listfiles' => array( 'បញ្ជីរូបភាព' ),
- 'Newimages' => array( 'រូបភាពážáŸ’មីៗ' ),
- 'Listusers' => array( 'បញ្ជីឈ្មោះអ្នកប្រើប្រាស់' ),
'Listgrouprights' => array( 'បញ្ជីក្រុមសិទ្ធិ' ),
- 'Statistics' => array( 'ស្ážáž·ážáž·' ),
- 'Randompage' => array( 'ទំពáŸážšáž…ៃដន្យ' ),
+ 'Listredirects' => array( 'បញ្ជីទំពáŸážšáž”ញ្ជូនបន្áž' ),
+ 'Listusers' => array( 'បញ្ជីឈ្មោះអ្នកប្រើប្រាស់' ),
+ 'Lockdb' => array( 'ចាក់សោមូលដ្ឋានទិន្ននáŸáž™' ),
+ 'Log' => array( 'កំណážáŸ‹áž áŸážáž»' ),
'Lonelypages' => array( 'ទំពáŸážšáž€áŸ†áž–្រា' ),
- 'Uncategorizedpages' => array( 'ទំពáŸážšážŠáŸ‚លគ្មានចំណាážáŸ‹ážáŸ’នាក់ក្រុម' ),
- 'Uncategorizedcategories' => array( 'ចំណាážáŸ‹ážáŸ’នាក់ក្រុមដែលគ្មានចំណាážáŸ‹ážáŸ’នាក់ក្រុម' ),
- 'Uncategorizedimages' => array( 'រូបភាពដែលគ្មានចំណាážáŸ‹ážáŸ’នាក់ក្រុម' ),
- 'Uncategorizedtemplates' => array( 'ទំពáŸážšáž‚ំរូដែលគ្មានចំណាážáŸ‹ážáŸ’នាក់ក្រុម' ),
- 'Unusedcategories' => array( 'ចំណាážáŸ‹ážáŸ’នាក់ក្រុមដែលមិនážáŸ’រូវបានប្រើប្រាស់' ),
- 'Unusedimages' => array( 'រូបភាពដែលមិនážáŸ’រូវបានប្រើប្រាស់' ),
- 'Wantedpages' => array( 'ទំពáŸážšáž”្រើប្រាស់ច្រើន' ),
- 'Wantedcategories' => array( 'ចំណាážáŸ‹ážáŸ’នាក់ក្រុមប្រើប្រាស់ច្រើន' ),
- 'Wantedfiles' => array( 'រូបភាពប្រើប្រាស់ច្រើន' ),
- 'Wantedtemplates' => array( 'ទំពáŸážšáž‚ំរូប្រើប្រាស់ច្រើន' ),
+ 'Longpages' => array( 'ទំពáŸážšážœáŸ‚ងៗ' ),
+ 'MergeHistory' => array( 'ច្របាច់បញ្ជូលប្រវážáŸ’ážáž·' ),
+ 'MIMEsearch' => array( 'MIMEស្វែងរក' ),
+ 'Mostcategories' => array( 'ទំពáŸážšáž˜áž¶áž“ចំណាážáŸ‹ážáŸ’នាក់ច្រើនជាងគáŸ' ),
+ 'Mostimages' => array( 'ទំពáŸážšáž˜áž¶áž“រូបភាពច្រើនជាងគáŸ' ),
'Mostlinked' => array( 'ទំពáŸážšáž˜áž¶áž“ážáŸ†ážŽáž—្ជាប់មកច្រើនជាងគáŸ' ),
'Mostlinkedcategories' => array( 'ចំណាážáŸ‹ážáŸ’នាក់ក្រុមមានážáŸ†ážŽáž—្ជាប់មកច្រើនជាងគáŸ' ),
'Mostlinkedtemplates' => array( 'ទំពáŸážšáž‚ំរូមានážáŸ†ážŽáž—្ជាប់មកច្រើនជាងគáŸ' ),
- 'Mostimages' => array( 'ទំពáŸážšáž˜áž¶áž“រូបភាពច្រើនជាងគáŸ' ),
- 'Mostcategories' => array( 'ទំពáŸážšáž˜áž¶áž“ចំណាážáŸ‹ážáŸ’នាក់ច្រើនជាងគáŸ' ),
'Mostrevisions' => array( 'ទំពáŸážšáž˜áž¶áž“កំណែច្រើនជាងគáŸ' ),
- 'Fewestrevisions' => array( 'ទំពáŸážšáž˜áž¶áž“កំណែážáž·áž…ជាងគáŸ' ),
- 'Shortpages' => array( 'ទំពáŸážšážáŸ’លីៗ' ),
- 'Longpages' => array( 'ទំពáŸážšážœáŸ‚ងៗ' ),
+ 'Movepage' => array( 'ប្ដូរទីážáž¶áŸ†áž„ទំពáŸážš' ),
+ 'Mycontributions' => array( 'ការរួមចំណែករបស់ážáŸ’ញុំ' ),
+ 'Mypage' => array( 'ទំពáŸážšážšáž”ស់ážáŸ’ញុំ' ),
+ 'Mytalk' => array( 'ការពិភាក្សារបស់ážáŸ’ញុំ' ),
+ 'Myuploads' => array( 'អ្វីដែលážáŸ’ញុំផ្ទុកឡើង' ),
+ 'Newimages' => array( 'រូបភាពážáŸ’មីៗ' ),
'Newpages' => array( 'ទំពáŸážšážáŸ’មីៗ' ),
- 'Ancientpages' => array( 'ទំពáŸážšáž…ាស់ៗ' ),
- 'Deadendpages' => array( 'ទំពáŸážšáž‘ាល់' ),
+ 'PasswordReset' => array( 'កំណážáŸ‹áž–ាក្យសំងាážáŸ‹áž¡áž¾áž„វិញ' ),
+ 'PermanentLink' => array( 'ážáŸ†ážŽáž—្ជាប់អចិន្ážáŸ’រែយáŸ' ),
+ 'Popularpages' => array( 'ទំពáŸážšážŠáŸ‚លមានប្រជាប្រិយ' ),
+ 'Preferences' => array( 'ចំណង់ចំណូលចិážáŸ’áž' ),
+ 'Prefixindex' => array( 'លិបិក្រមបុព្វបទ' ),
'Protectedpages' => array( 'ទំពáŸážšáž”ានការពារ' ),
'Protectedtitles' => array( 'ចំណងជើងបានការពារ' ),
- 'Allpages' => array( 'គ្រប់ទំពáŸážš' ),
- 'Prefixindex' => array( 'លិបិក្រមបុព្វបទ' ),
- 'Ipblocklist' => array( 'បញ្ជីហាមឃាážáŸ‹IP' ),
- 'Specialpages' => array( 'ទំពáŸážšáž–ិសáŸážŸáŸ—' ),
- 'Contributions' => array( 'ការរួមចំណែក' ),
- 'Emailuser' => array( 'អ្នកប្រើប្រាស់អ៊ីមែល' ),
- 'Confirmemail' => array( 'បញ្ជាក់ទទួលស្គាល់អ៊ីមែល' ),
- 'Whatlinkshere' => array( 'អ្វីដែលភ្ជាប់មកទីនáŸáŸ‡' ),
+ 'Randompage' => array( 'ទំពáŸážšáž…ៃដន្យ' ),
+ 'Randomredirect' => array( 'ការបញ្ជូនបន្ážážŠáŸ„យចៃដន្យ' ),
+ 'Recentchanges' => array( 'បំលាស់ប្ដូរážáŸ’មីៗ' ),
'Recentchangeslinked' => array( 'បំលាស់ប្ដូរទាក់ទិន' ),
- 'Movepage' => array( 'ប្ដូរទីážáž¶áŸ†áž„ទំពáŸážš' ),
- 'Blockme' => array( 'រាំងážáŸ’ទប់' ),
- 'Booksources' => array( 'ប្រភពសៀវភៅ' ),
- 'Categories' => array( 'ចំណាážáŸ‹ážáŸ’នាក់ក្រុម' ),
- 'Export' => array( 'នាំចáŸáž‰' ),
- 'Version' => array( 'កំណែ' ),
- 'Allmessages' => array( 'គ្រប់សារ' ),
- 'Log' => array( 'កំណážáŸ‹áž áŸážáž»' ),
- 'Blockip' => array( 'រាំងážáŸ’ទប់IP' ),
+ 'Revisiondelete' => array( 'កំណែបានលុបចោល' ),
+ 'Search' => array( 'ស្វែងរក' ),
+ 'Shortpages' => array( 'ទំពáŸážšážáŸ’លីៗ' ),
+ 'Specialpages' => array( 'ទំពáŸážšáž–ិសáŸážŸáŸ—' ),
+ 'Statistics' => array( 'ស្ážáž·ážáž·' ),
+ 'Tags' => array( 'ប្លាក' ),
+ 'Unblock' => array( 'ឈប់រាំងážáŸ’ទប់' ),
+ 'Uncategorizedcategories' => array( 'ចំណាážáŸ‹ážáŸ’នាក់ក្រុមដែលគ្មានចំណាážáŸ‹ážáŸ’នាក់ក្រុម' ),
+ 'Uncategorizedimages' => array( 'រូបភាពដែលគ្មានចំណាážáŸ‹ážáŸ’នាក់ក្រុម' ),
+ 'Uncategorizedpages' => array( 'ទំពáŸážšážŠáŸ‚លគ្មានចំណាážáŸ‹ážáŸ’នាក់ក្រុម' ),
+ 'Uncategorizedtemplates' => array( 'ទំពáŸážšáž‚ំរូដែលគ្មានចំណាážáŸ‹ážáŸ’នាក់ក្រុម' ),
'Undelete' => array( 'ឈប់លុបចáŸáž‰' ),
- 'Import' => array( 'នាំចូល' ),
- 'Lockdb' => array( 'ចាក់សោមូលដ្ឋានទិន្ននáŸáž™' ),
'Unlockdb' => array( 'ដោះសោមូលដ្ឋានទិន្ននáŸáž™' ),
- 'Userrights' => array( 'សិទ្ធិអ្នកប្រើប្រាស់' ),
- 'MIMEsearch' => array( 'MIMEស្វែងរក' ),
- 'FileDuplicateSearch' => array( 'ស្វែងរកឯកសារដូចគ្នាបáŸáŸ‡áž”áž·áž‘' ),
- 'Unwatchedpages' => array( 'ទំពáŸážšáž›áŸ‚ងបានážáž¶áž˜ážŠáž¶áž“' ),
- 'Listredirects' => array( 'បញ្ជីទំពáŸážšáž”ញ្ជូនបន្áž' ),
- 'Revisiondelete' => array( 'កំណែបានលុបចោល' ),
+ 'Unusedcategories' => array( 'ចំណាážáŸ‹ážáŸ’នាក់ក្រុមដែលមិនážáŸ’រូវបានប្រើប្រាស់' ),
+ 'Unusedimages' => array( 'រូបភាពដែលមិនážáŸ’រូវបានប្រើប្រាស់' ),
'Unusedtemplates' => array( 'ទំពáŸážšáž‚ំរូដែលមិនážáŸ’រូវបានប្រើប្រាស់' ),
- 'Randomredirect' => array( 'ការបញ្ជូនបន្ážážŠáŸ„យចៃដន្យ' ),
- 'Mypage' => array( 'ទំពáŸážšážšáž”ស់ážáŸ’ញុំ' ),
- 'Mytalk' => array( 'ការពិភាក្សារបស់ážáŸ’ញុំ' ),
- 'Mycontributions' => array( 'ការរួមចំណែករបស់ážáŸ’ញុំ' ),
- 'Listadmins' => array( 'បញ្ជីអ្នកអភិបាល' ),
- 'Listbots' => array( 'បញ្ជីរូបយន្áž' ),
- 'Popularpages' => array( 'ទំពáŸážšážŠáŸ‚លមានប្រជាប្រិយ' ),
- 'Search' => array( 'ស្វែងរក' ),
- 'Resetpass' => array( 'ដាក់ពាក្យសំងាážáŸ‹ážáŸ’មីឡើងវិញ' ),
+ 'Unwatchedpages' => array( 'ទំពáŸážšáž›áŸ‚ងបានážáž¶áž˜ážŠáž¶áž“' ),
+ 'Upload' => array( 'ផ្ទុកឯកសារឡើង' ),
+ 'Userlogin' => array( 'ការកážáŸ‹ážˆáŸ’មោះចូលរបស់អ្នកប្រើប្រាស់' ),
+ 'Userlogout' => array( 'ការចាកចáŸáž‰ážšáž”ស់អ្នកប្រើប្រាស់' ),
+ 'Userrights' => array( 'សិទ្ធិអ្នកប្រើប្រាស់' ),
+ 'Version' => array( 'កំណែ' ),
+ 'Wantedcategories' => array( 'ចំណាážáŸ‹ážáŸ’នាក់ក្រុមប្រើប្រាស់ច្រើន' ),
+ 'Wantedfiles' => array( 'រូបភាពប្រើប្រាស់ច្រើន' ),
+ 'Wantedpages' => array( 'ទំពáŸážšáž”្រើប្រាស់ច្រើន' ),
+ 'Wantedtemplates' => array( 'ទំពáŸážšáž‚ំរូប្រើប្រាស់ច្រើន' ),
+ 'Watchlist' => array( 'បញ្ជីážáž¶áž˜ážŠáž¶áž“' ),
+ 'Whatlinkshere' => array( 'អ្វីដែលភ្ជាប់មកទីនáŸáŸ‡' ),
'Withoutinterwiki' => array( 'ដោយគ្មានអន្ážážšážœáž·áž‚ី' ),
- 'MergeHistory' => array( 'ច្របាច់បញ្ជូលប្រវážáŸ’ážáž·' ),
- 'Filepath' => array( 'ផ្លូវនៃឯកសារ' ),
- 'Invalidateemail' => array( 'អ៊ីមែលមិនážáŸ’រឹមážáŸ’រូវ' ),
- 'Blankpage' => array( 'ទំពáŸážšáž‘áž‘áŸ' ),
- 'LinkSearch' => array( 'ស្វែងរកážáŸ†ážŽáž—្ជាប់' ),
- 'DeletedContributions' => array( 'ការរួមចំណែកដែលážáŸ’រូវបានលុបចោល' ),
- 'Tags' => array( 'ប្លាក' ),
- 'Activeusers' => array( 'អ្នកប្រើប្រាស់សកម្ម' ),
);
$magicWords = array(
@@ -285,10 +290,10 @@ $messages = array(
'tog-enotifminoredits' => 'ផ្ញើអ៊ីមែល​មកážáŸ’ញុំផងដែរ​ចំពោះ​បំលាស់ប្ដូរážáž·áž…ážáž½áž…​',
'tog-enotifrevealaddr' => 'បង្ហាញ​អាសយដ្ឋានអ៊ីមែល​របស់ážáŸ’ញុំ​ក្នុង​​មែល​ក្រើនរំលឹក​នានា',
'tog-shownumberswatching' => 'បង្ហាញ​ចំនួនអ្នកប្រើប្រាស់​ដែលážáž¶áž˜ážŠáž¶áž“​ទំពáŸážšáž“áŸáŸ‡',
-'tog-oldsig' => 'ការមើលមុននៃហážáŸ’ážáž›áŸážáž¶ážŠáŸ‚លមាន៖',
+'tog-oldsig' => 'áž ážáŸ’ážáž›áŸážáž¶áž˜áž¶áž“ហើយ៖',
'tog-fancysig' => 'ចុះហážáŸ’ážáž›áŸážáž¶â€‹áž‡áž¶â€‹áž¢ážáŸ’ážáž”ទវិគី​ (ដោយ​គ្មានážáŸ†ážŽáž—្ជាប់​ស្វáŸáž™áž”្រវážáŸ’ážáž·)',
-'tog-externaleditor' => 'ប្រើប្រាស់​ឧបករណáŸâ€‹áž€áŸ‚ប្រែážáž¶áž„ក្រៅ​ážáž¶áž˜áž›áŸ†áž“ាំដើម (សម្រាប់ážáŸ‚អ្នកមានជំនាញប៉ុណ្ណោះនិងážáŸ’រូវការការកំណážáŸ‹áž–ិសáŸážŸáŸ—នៅលើកុំព្យូទáŸážšážšáž”ស់អ្នក។ [http://www.mediawiki.org/wiki/Manual:External_editors áž–áŸážáŸŒáž˜áž¶áž“បន្ážáŸ‚ម]។)',
-'tog-externaldiff' => 'ប្រើប្រាស់​ឧបករណáŸâ€‹áž”្រៀបធៀបážáž¶áž„ក្រៅ​ážáž¶áž˜áž›áŸ†áž“ាំដើម (សម្រាប់ážáŸ‚អ្នកមានជំនាញប៉ុណ្ណោះនិងážáŸ’រូវការការកំណážáŸ‹áž–ិសáŸážŸáŸ—នៅលើកុំព្យូទáŸážšážšáž”ស់អ្នក។ [http://www.mediawiki.org/wiki/Manual:External_editors áž–áŸážáŸŒáž˜áž¶áž“បន្ážáŸ‚ម]។)',
+'tog-externaleditor' => 'ប្រើប្រាស់​ឧបករណáŸâ€‹áž€áŸ‚ប្រែážáž¶áž„ក្រៅ​ážáž¶áž˜áž›áŸ†áž“ាំដើម (សម្រាប់ážáŸ‚អ្នកមានជំនាញប៉ុណ្ណោះនិងážáŸ’រូវការការកំណážáŸ‹áž–ិសáŸážŸáŸ—នៅលើកុំព្យូទáŸážšážšáž”ស់អ្នក។ [//www.mediawiki.org/wiki/Manual:External_editors áž–áŸážáŸŒáž˜áž¶áž“បន្ážáŸ‚ម]។)',
+'tog-externaldiff' => 'ប្រើប្រាស់​ឧបករណáŸâ€‹áž”្រៀបធៀបážáž¶áž„ក្រៅ​ážáž¶áž˜áž›áŸ†áž“ាំដើម (សម្រាប់ážáŸ‚អ្នកមានជំនាញប៉ុណ្ណោះនិងážáŸ’រូវការការកំណážáŸ‹áž–ិសáŸážŸáŸ—នៅលើកុំព្យូទáŸážšážšáž”ស់អ្នក។ [//www.mediawiki.org/wiki/Manual:External_editors áž–áŸážáŸŒáž˜áž¶áž“បន្ážáŸ‚ម]។)',
'tog-showjumplinks' => 'ប្រើážáŸ†ážŽáž—្ជាប់ "លោážáž‘ៅ"',
'tog-uselivepreview' => 'ប្រើប្រាស់​ការមើលមុនរហáŸážŸâ€‹ (ážáž˜áŸ’រូវអោយមាន JavaScript) (ស្ážáž·ážáž€áŸ’រោមការពិសោធនáŸáž“ៅឡើយ)',
'tog-forceeditsummary' => 'សូមរំលឹកážáŸ’ញុំ​កាលបើážáŸ’ញុំទុកប្រអប់ចំណារពន្យល់ឱ្យនៅទំនáŸážš',
@@ -311,8 +316,8 @@ $messages = array(
'editfont-style' => 'កែសម្រួល​រចនាបទ​ពុម្ព​អក្សរ​សម្រាប់​ážáŸ†áž”ន់​',
'editfont-default' => 'លំនាំដើមនៃ​កម្មវិធី​រុករក​',
'editfont-monospace' => 'ពុម្ព​អក្សរ​ដែល​ដក​ឃ្លា​ážáŸ‚មួយ​',
-'editfont-sansserif' => 'ពុម្ពអក្សរ​​គ្មាន serif (Sans-serif font)',
-'editfont-serif' => 'ពុម្ពអក្សរ​​ serif (Serif font)',
+'editfont-sansserif' => 'ពុម្ពអក្សរ​​គ្មានកន្ទុយ (Sans-serif font)',
+'editfont-serif' => 'ពុម្ពអក្សរ​​មានកន្ទុយ (Serif font)',
# Dates
'sunday' => 'ážáŸ’ងៃអាទិážáŸ’áž™',
@@ -383,15 +388,7 @@ $messages = array(
'listingcontinuesabbrev' => 'បន្áž',
'index-category' => 'ទំពáŸážšážŠáŸ‚លបានធ្វើលិបិក្រម',
'noindex-category' => 'ទំពáŸážšážŠáŸ‚លមិនបានធ្វើលិបិក្រម',
-
-'mainpagetext' => "'''មáŸážŒáž¶ážœáž·áž‚ីážáŸ’រូវបានដំឡើងសំរáŸáž…ហើយ​។'''",
-'mainpagedocfooter' => 'សូមពិនិážáŸ’យមើល [http://meta.wikimedia.org/wiki/ជំនួយ​៖ ážáŸ’លឹមសារ​ណែនាំ​ប្រើប្រាស់]សម្រាប់​ពáŸážáŸŒáž˜áž¶áž“​​បន្ážáŸ‚មចំពោះ​ការប្រើប្រាស់ ផ្នែកទន់វិគី​។
-
-== ចាប់ផ្ដើមជាមួយមáŸážŒáž¶ážœáž·áž‚ី ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings បញ្ជីកំណážáŸ‹áž‘ម្រង់]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/km សំណួរញឹកញាប់​មáŸážŒáž¶ážœáž·áž‚ី]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce បញ្ជី​ពិភាក្សា​ការផ្សព្វផ្សាយ​របស់​មáŸážŒáž¶ážœáž·áž‚ី]',
+'broken-file-category' => 'ទំពáŸážšáž‘ាំងឡាយដែលមានážáŸ†ážŽáž—្ជាប់ážáž¼áž…',
'about' => 'អំពី',
'article' => 'មាážáž·áž€áž¶áž¢ážáŸ’ážáž”áž‘',
@@ -422,7 +419,7 @@ $messages = array(
'vector-action-protect' => 'ការពារ',
'vector-action-undelete' => 'ឈប់លុបចោល',
'vector-action-unprotect' => 'ប្ដូរការការពារ',
-'vector-simplesearch-preference' => 'ប្រើអនុសាសនáŸáž–ាក្យចង់ស្វែងរក (សំរាប់ážáŸ‚សំបក វ៉ិចទáŸážšáž”៉ុណ្ណោះ)',
+'vector-simplesearch-preference' => 'ប្រើអនុសាសនáŸáž–ាក្យចង់ស្វែងរក (សំរាប់ážáŸ‚សំបកវ៉ិចទáŸážšáž”៉ុណ្ណោះ)',
'vector-view-create' => 'បង្កើážâ€‹',
'vector-view-edit' => 'កែប្រែ​',
'vector-view-history' => 'មើល​ប្រវážáŸ’ážáž·â€‹',
@@ -443,10 +440,10 @@ $messages = array(
'history' => 'ប្រវážáŸ’ážáž·áž‘ំពáŸážš',
'history_short' => 'ប្រវážáŸ’ážáž·',
'updatedmarker' => 'ážáŸ’រូវបានបន្ទាន់សមáŸáž™áž”ន្ទាប់ពីពáŸáž›ážáŸ’ញុំចូលមើលចុងក្រោយ',
-'info_short' => 'áž–áŸážáŸŒáž˜áž¶áž“',
'printableversion' => 'ទម្រង់​សម្រាប់បោះពុម្ភ',
'permalink' => 'ážáŸ†ážŽáž—្ជាប់អចិន្ážáŸ’រៃយáŸ',
'print' => 'បោះពុម្ភ',
+'view' => 'មើល',
'edit' => 'កែប្រែ',
'create' => 'បង្កើáž',
'editthispage' => 'កែប្រែទំពáŸážšáž“áŸáŸ‡',
@@ -454,6 +451,7 @@ $messages = array(
'delete' => 'លុបចោល',
'deletethispage' => 'លុបទំពáŸážšáž“áŸáŸ‡áž…ោល',
'undelete_short' => 'ឈប់លុប{{PLURAL:$1|កំណែប្រែមួយ|កំណែប្រែចំនួន$1}}វិញ',
+'viewdeleted_short' => 'មើល{{PLURAL:$1|កំណែប្រែមួយដែលážáŸ’រូវបានលុបចោល|កំណែប្រែចំនួន $1 ដែលážáŸ’រូវបានលុបចោល}}',
'protect' => 'ការពារ',
'protect_change' => 'ផ្លាស់ប្ážáž¼ážšáž€áž¶ážšáž€áž¶ážšáž–ារ',
'protectthispage' => 'ការពារទំពáŸážšáž“áŸáŸ‡',
@@ -540,6 +538,8 @@ $1',
'toc' => 'មាážáž·áž€áž¶',
'showtoc' => 'បង្ហាញ',
'hidetoc' => 'លាក់',
+'collapsible-collapse' => 'បង្រួម',
+'collapsible-expand' => 'ពន្លាáž',
'thisisdeleted' => 'មើល ឬ​ ស្ដារ $1 ឡើងវិញ?',
'viewdeleted' => 'មើល $1?',
'restorelink' => '{{PLURAL:$1|កំណែប្រែមួយážáŸ’រូវបានលុបចោល|កំណែប្រែចំនួន $1 ážáŸ’រូវបានលុបចោល}}',
@@ -551,6 +551,8 @@ $1',
'page-rss-feed' => 'បម្រែបម្រួល RSS Feed នៃ "$1"',
'page-atom-feed' => 'បម្រែបម្រួល Atom Feed នៃ "$1"',
'red-link-title' => '$1 (ទំពáŸážšáž“áŸáŸ‡áž˜áž·áž“ទាន់​មាននៅឡើយទáŸ)',
+'sort-descending' => 'ážáŸ†ážšáŸ€áž”ážáž¶áž˜áž›áŸ†ážŠáž¶áž”់ចុះ',
+'sort-ascending' => 'ážáŸ†ážšáŸ€áž”ážáž¶áž˜áž›áŸ†ážŠáž¶áž”់ឡើង',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'អážáŸ’ážáž”áž‘',
@@ -626,12 +628,13 @@ $1',
'protectedpagetext' => 'ទំពáŸážšáž“áŸáŸ‡áž”ានážáŸ’រូវចាក់សោមិនឱ្យកែប្រែ​។',
'viewsourcetext' => 'អ្នកអាចមើលនិងចម្លងកូដរបស់ទំពáŸážšáž“áŸáŸ‡áŸ–',
'protectedinterface' => 'ទំពáŸážšáž“áŸáŸ‡ ផ្ដល់នូវ អážáŸ’ážáž”ទអន្ážážšáž˜áž»áž សម្រាប់ផ្នែកទន់, áž“áž·áž„ បានážáŸ’រូវចាក់សោ ដើម្បីចៀសវាង ការបំពាន ។',
-'editinginterface' => "'''ប្រយáŸážáŸ’ន៖''' អ្នកកំពុងážáŸ‚កែប្រែទំពáŸážšážŠáŸ‚លបានប្រើប្រាស់​ដើម្បីផ្ដល់នូវអន្ážážšáž˜áž»ážážŸáž˜áŸ’រាប់ផ្នែកទន់​។ បំលាស់ប្ដូរចំពោះទំពáŸážšáž“áŸáŸ‡â€‹áž“ឹងប៉ះពាល់ដល់ទំពáŸážšáž¢áž“្ážážšáž˜áž»ážáž“ៃអ្នកប្រើប្រាស់​ជាច្រើន ដែលប្រើប្រាស់វិបសាយនáŸáŸ‡áŸ” សម្រាប់ការបកប្រែ សូមពិចារណាប្រើប្រាស់ [http://translatewiki.net/wiki/Main_Page?setlang=km translatewiki.net] (áž”áŸážáž¶ážœáž·áž‚ី) គម្រោង​អន្ážážšáž‡áž¶ážáž¼áž”នីយកម្ម​នៃមáŸážŒáž¶ážœáž·áž‚ី ។",
+'editinginterface' => "'''ប្រយáŸážáŸ’ន៖''' អ្នកកំពុងážáŸ‚កែប្រែទំពáŸážšážŠáŸ‚លបានប្រើប្រាស់​ដើម្បីផ្ដល់នូវអន្ážážšáž˜áž»ážážŸáž˜áŸ’រាប់ផ្នែកទន់​។ បំលាស់ប្ដូរចំពោះទំពáŸážšáž“áŸáŸ‡â€‹áž“ឹងប៉ះពាល់ដល់ទំពáŸážšáž¢áž“្ážážšáž˜áž»ážáž“ៃអ្នកប្រើប្រាស់​ជាច្រើន ដែលប្រើប្រាស់វិបសាយនáŸáŸ‡áŸ” សម្រាប់ការបកប្រែ សូមពិចារណាប្រើប្រាស់ [//translatewiki.net/wiki/Main_Page?setlang=km translatewiki.net] (áž”áŸážáž¶ážœáž·áž‚ី) គម្រោង​អន្ážážšáž‡áž¶ážáž¼áž”នីយកម្ម​នៃមáŸážŒáž¶ážœáž·áž‚ី ។",
'sqlhidden' => '(ការអង្កáŸáž SQL ážáŸ’រូវបិទបាំង)',
-'cascadeprotected' => 'ទំពáŸážšáž“áŸáŸ‡ážáŸ’រូវបានការពារពីការការប្រែដោយសារវាមាន{{PLURAL:$1|ទំពáŸážš, ដែលមាន}} ដែលážáŸ’រូវបានការពារជាមួយ"cascading" option turned on:
+'cascadeprotected' => 'ទំពáŸážšáž“áŸáŸ‡ážáŸ’រូវបានការពារពីការការប្រែដោយសារវាមាន{{PLURAL:$1|ទំពáŸážš, ដែលមាន}} ដែលážáŸ’រូវបានការពារជាមួយជំរើស"ជាបណ្ដាក់"៖
$2',
'namespaceprotected' => "អ្នកមិនមានសិទ្ធិកែប្រែទំពáŸážšáž€áŸ’នុងប្រភáŸáž‘'''$1'''áž‘áŸáŸ”",
-'customcssjsprotected' => 'អ្នកមិនមាន​ការអនុញ្ញាážâ€‹áž€áŸ’នុងការកែប្រែទំពáŸážšáž“áŸáŸ‡áž‘០ព្រោះវាផ្ទុកការកំណážáŸ‹áž•áŸ’ទាល់ážáŸ’លួនផ្សáŸáž„ៗរបស់អ្នកប្រើប្រាស់ម្នាក់ផ្សáŸáž„ទៀážáŸ”',
+'customcssprotected' => 'អ្នកមិនមាន​ការអនុញ្ញាážâ€‹áž€áŸ’នុងការកែប្រែទំពáŸážš CSS áž“áŸáŸ‡áž‘០ព្រោះវាផ្ទុកការកំណážáŸ‹áž•áŸ’ទាល់ážáŸ’លួនផ្សáŸáž„ៗរបស់អ្នកប្រើប្រាស់ម្នាក់ផ្សáŸáž„ទៀážáŸ”',
+'customjsprotected' => 'អ្នកមិនមាន​ការអនុញ្ញាážâ€‹áž€áŸ’នុងការកែប្រែទំពáŸážš JavaScript áž“áŸáŸ‡áž‘០ព្រោះវាផ្ទុកការកំណážáŸ‹áž•áŸ’ទាល់ážáŸ’លួនផ្សáŸáž„ៗរបស់អ្នកប្រើប្រាស់ម្នាក់ផ្សáŸáž„ទៀážáŸ”',
'ns-specialprotected' => 'ទំពáŸážšáž–ិសáŸážŸáŸ—មិនអាចកែប្រែបានទáŸáŸ”',
'titleprotected' => "ចំណងជើងនáŸáŸ‡ážáŸ’រូវបានការពារមិនឱ្យបង្កើážâ€‹ážŠáŸ„áž™ [[User:$1|$1]]។
áž áŸážáž»áž•áž›áž›áž¾áž€áž¡áž¾áž„គឺ ''$2''។",
@@ -672,6 +675,7 @@ $2',
'createaccount' => 'បង្កើážáž‚ណនី',
'gotaccount' => "បើលោកអ្នកមានគណនីសម្រាប់ប្រើហើយ សូម'''$1'''។",
'gotaccountlink' => 'កážáŸ‹ážˆáŸ’មោះចូល',
+'userlogin-resetlink' => 'ážáž¾áž¢áŸ’នកភ្លáŸáž…áž–áŸážáŸŒáž˜áž¶áž“លំអិážážŸáŸ†ážšáž¶áž”់កážáŸ‹ážˆáŸ’មោះចូលហើយ?',
'createaccountmail' => 'ážáž¶áž˜ážšáž™áŸˆáž¢áŸŠáž¸áž˜áŸ‚áž›',
'createaccountreason' => 'មូលហáŸážáž»áŸ–',
'badretype' => 'ពាក្យសំងាážáŸ‹ážŠáŸ‚លអ្នកបានបញ្ចូលនោះ គឺមិនស៊ីគ្នាទáŸáŸ”',
@@ -697,7 +701,7 @@ $2',
'nosuchuser' => 'មិនមានអ្នកប្រើដែលមានឈ្មោះ "$1" áž‘áŸáŸ”
សូម​ពិនិážáŸ’យ​ក្រែង​លោ​មានកំហុស​អក្ážážšáž¶ážœáž·ážšáž»áž‘្ធឬ [[Special:UserLogin/signup|បង្កើážâ€‹áž‚ណនី​ážáŸ’មី]]។',
-'nosuchusershort' => 'គ្មានអ្នកប្រើដែលមានឈ្មោះ <nowiki>$1</nowiki>" áž‘áŸáŸ”
+'nosuchusershort' => 'គ្មានអ្នកប្រើដែលមានឈ្មោះ $1" áž‘áŸáŸ”
សូម​ពិនិážáŸ’យ​​អក្ážážšáž¶ážœáž·ážšáž»áž‘្ធ​របស់អ្នក ។',
'nouserspecified' => 'អ្នកážáŸ’រូវážáŸ‚​ផ្ដល់អážáŸ’ážáž“ាម។',
@@ -755,12 +759,13 @@ $2',
'login-throttled' => 'អ្នកបានកážáŸ‹ážˆáŸ’មោះចូលមិនបានសំរáŸáž…ច្រើនដងពáŸáž€áž áž¾áž™áŸ”​
សូមរងចាំមួយរយៈ មុនពáŸáž›ážŸáž¶áž€áž›áŸ’បងម្ដងទៀážáŸ”',
+'login-abort-generic' => 'អ្នកចុះឈ្មោះចូលមិនបានសំរáŸáž…áž‘áŸáŸ” ការចុះឈ្មោះចូលážáŸ’រូវបានបោះបង់។',
'loginlanguagelabel' => 'ភាសា៖ $1',
# E-mail sending
'php-mail-error-unknown' => 'កំហុសមិនស្គាល់នៅក្នុងអនុគមន០mail() របស់ PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => '​ប្ážáž¼ážšâ€‹áž–ាក្យសំងាážáŸ‹â€‹',
'resetpass_announce' => 'អ្នកបានកážáŸ‹ážˆáŸ’មោះចូលដោយ​អក្សរកូដអ៊ីមែល​បណ្ážáŸ„ះអាសន្ន​មួយ​។
@@ -781,6 +786,20 @@ $2',
អ្នក​​ប្រហែល​ជា​បាន​ផ្លាស់​ប្ដូរ​លáŸážâ€‹ážŸáž˜áŸ’ងាážáŸ‹â€‹ážšáž½áž…áž áž¾ážáž™ ឬ​បានស្នើ​សុំ​លáŸážâ€‹ážŸáž˜áŸ’ងាážáŸ‹â€‹â€‹áž”ណ្ដោះ​អាសន្ន​​ážáŸ’មី​មួយ​ហើយ។',
'resetpass-temp-password' => 'ពាក្យសំងាážáŸ‹áž”ណ្ážáŸ„ះអាសន្ន:',
+# Special:PasswordReset
+'passwordreset' => 'កំណážáŸ‹â€‹áž–ាក្យសំងាážáŸ‹â€‹ážŸáž¶áž¡áž¾áž„វិញ',
+'passwordreset-text' => 'បំពáŸáž‰ážŸáŸ†ážŽáž»áŸ†áž”ែបបទនáŸáŸ‡ážŠáž¾áž˜áŸ’បីទទួលបានអ៊ីម៉ែលក្រើនរំលឹកពីពáŸážáŸŒáž˜áž¶áž“លំអិážážšáž”ស់គណនីរបស់អ្នក។',
+'passwordreset-legend' => 'ប្ដូរទៅពាក្យសំងាážáŸ‹ážŠáž¾áž˜',
+'passwordreset-disabled' => 'មុážáž„ារប្ដូរទៅពាក្យសំងាážáŸ‹ážŠáž¾áž˜ážáŸ’រូវបានបិទមិនអោយប្រើនៅលើវិគីនáŸáŸ‡áŸ”',
+'passwordreset-pretext' => '{{PLURAL:$1||វាយបញ្ចូលផ្នែកមួយនៃទិន្ននáŸáž™ážáž¶áž„ក្រោម}}',
+'passwordreset-username' => 'អážáŸ’ážáž“ាម៖',
+'passwordreset-domain' => 'ដូម៉ែន៖',
+'passwordreset-email' => 'អាសយដ្ឋានអ៊ីមែល៖',
+'passwordreset-emailtitle' => 'áž–áŸážáŸŒáž˜áž¶áž“លំអិážáž–ីគណនីនៅលើ {{SITENAME}}',
+'passwordreset-emailelement' => 'ឈ្មោះអ្នកប្រើប្រាស់៖ $1
+áž›áŸážážŸáž˜áŸ’ងាážáŸ‹áž”ណ្ដោះអាសន្ន៖ $2',
+'passwordreset-emailsent' => 'អីុមែលរំលឹកមួយបានផ្ញើទៅហើយ។',
+
# Edit page toolbar
'bold_sample' => 'អក្សរដិáž',
'bold_tip' => 'អក្សរដិáž',
@@ -792,8 +811,6 @@ $2',
'extlink_tip' => 'ážáŸ†ážŽáž—្ជាប់​ážáž¶áž„ក្រៅ (កុំភ្លáŸáž…​ដាក់ http:// នៅពីមុáž)',
'headline_sample' => 'ចំណងជើងរងនៃអážáŸ’ážáž”áž‘',
'headline_tip' => 'ចំណងជើងរង​កម្រិážâ€‹áŸ¢',
-'math_sample' => 'បញ្ចូលរូបមន្ážâ€‹áž“ៅទីនáŸáŸ‡',
-'math_tip' => 'រូបមន្ážâ€‹áž‚ណិážážœáž·áž‘្យា (LaTeX)',
'nowiki_sample' => 'បញ្ចូល​អážáŸ’ážáž”ទគ្មានទម្រង់​នៅទីនáŸáŸ‡',
'nowiki_tip' => 'មិនគិážâ€‹áž‘ម្រង់​នៃ​វិគី',
'image_sample' => 'ឧទាហរណáŸ.jpg',
@@ -891,7 +908,7 @@ $2',
'noarticletext-nopermission' => 'បច្ចុប្បន្ន គ្មានអážáŸ’ážáž”ទណាមួយក្នុងទំពáŸážšáž“áŸáŸ‡áž‘áŸáŸ”
អ្នកអាច [[Special:Search/{{PAGENAME}}|ស្វែងរក​ចំណងជើង​នៃទំពáŸážšáž“áŸáŸ‡]] ក្នុងទំពáŸážšâ€‹áž•áŸ’សáŸáž„ៗ ឬ<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ស្វែង​រក​កំណážáŸ‹â€‹áž áŸážáž»â€‹ážŠáŸ‚ល​ពាក់ពáŸáž“្ធ]</span>។',
-'userpage-userdoesnotexist' => 'គណនីអ្នកប្រើឈ្មោះ"$1" មិនទាន់បានចុះបញ្ជី។
+'userpage-userdoesnotexist' => 'គណនីអ្នកប្រើឈ្មោះ"<nowiki>$1</nowiki>" មិនទាន់បានចុះបញ្ជី។
ចូរគិážáž˜áŸ’ដងទៀážážáž¶áž¢áŸ’នកចង់ បង្កើហ/ កែប្រែ ទំពáŸážšáž“áŸáŸ‡áž¬áž‘áŸáŸ”',
'userpage-userdoesnotexist-view' => 'គណនីអ្នកប្រើប្រាស់ដែលមានឈ្មោះ "$1"មិនទាន់បានចុះឈ្មោះទáŸáŸ”',
@@ -1063,21 +1080,20 @@ $2',
ប្រហែល​ជា​មាន​ពáŸážáŸŒáž˜áž¶áž“​លម្អិážâ€‹áž“ៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} កំណážáŸ‹â€‹áž áŸážáž»â€‹áž“ៃ​ការ​លុប​ចោល]។",
'rev-deleted-text-unhide' => "កំណែ​ប្រែ​នៃ​ទំពáŸážšâ€‹áž“áŸáŸ‡â€‹ážáŸ’រូវ​បាន'''​លុបចោល'''​។
ប្រហែល​ជា​មាន​ពáŸážáŸŒáž˜áž¶áž“​លម្អិážâ€‹áž“ៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} កំណážáŸ‹â€‹áž áŸážáž»â€‹áž“ៃ​ការ​លុបចោល​]។
-ក្នុង​នាម​ជា​អ្នក​អភិបាល​ អ្នក​នៅ​ážáŸ‚​អាច​[$1 មើល​កំណែ​នáŸáŸ‡â€‹]ប្រសិន​បើ​អ្នក​ចង់​។",
+អ្នក​នៅ​ážáŸ‚​អាច​[$1 មើល​កំណែ​នáŸáŸ‡â€‹]ប្រសិន​បើ​អ្នក​ចង់​។",
'rev-suppressed-text-unhide' => "កំណែ​ប្រែ​នៃ​ទំពáŸážšâ€‹áž“áŸáŸ‡â€‹ážáŸ’រូវ​បាន'''ហាម​ឃាážáŸ‹â€‹'''​។
ប្រហែល​ជា​មាន​ពáŸážáŸŒáž˜áž¶áž“​លម្អិážâ€‹áž“ៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} កំណážáŸ‹â€‹áž áŸážáž»â€‹áž“ៃ​ការហាម​ឃាážáŸ‹â€‹â€‹]។
-ក្នុង​នាម​ជា​អ្នក​អភិបាល​ អ្នក​នៅ​ážáŸ‚​អាច​[$1 មើល​កំណែ​នáŸáŸ‡â€‹]ប្រសិន​បើ​អ្នក​ចង់​។",
-'rev-deleted-text-view' => "កំណែ​ប្រែ​នៃ​ទំពáŸážšâ€‹áž“áŸáŸ‡â€‹ážáŸ’រូវ​បាន'''​លុប'''​។
-ក្នុង​នាម​ជា​អ្នក​អភិបាល​ អ្នក​អាច​មើល​កំណែប្រែ​​នáŸáŸ‡â€‹áž”ាន​។
+អ្នក​នៅ​ážáŸ‚​អាច​[$1 មើល​កំណែ​នáŸáŸ‡â€‹]ប្រសិន​បើ​អ្នក​ចង់​។",
+'rev-deleted-text-view' => "កំណែ​ប្រែ​នៃ​ទំពáŸážšâ€‹áž“áŸáŸ‡â€‹ážáŸ’រូវ​បាន'''​លុប'''​។ អ្នក​អាច​មើល​កំណែប្រែ​​នáŸáŸ‡â€‹áž”ាន​។
ប្រហែល​ជា​មាន​ពáŸážáŸŒáž˜áž¶áž“​លម្អិážâ€‹áž“ៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} កំណážáŸ‹â€‹áž áŸážáž»â€‹áž“ៃ​ការ​លុប​]។",
'rev-suppressed-text-view' => "កំណែ​ប្រែ​នៃ​ទំពáŸážšâ€‹áž“áŸáŸ‡â€‹ážáŸ’រូវ​បាន'''ហាម​ឃាážáŸ‹â€‹'''​។
-ក្នុង​នាម​ជា​អ្នក​អភិបាល​ អ្នក​​អាច​មើល​វា​បាន​។ ប្រហែល​ជា​មាន​ពáŸážáŸŒáž˜áž¶áž“​លម្អិážâ€‹áž“ៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} កំណážáŸ‹â€‹áž áŸážáž»â€‹áž“ៃ​ការហាម​ឃាážáŸ‹â€‹â€‹]។",
+អ្នក​​អាច​មើល​វា​បាន​។ ប្រហែល​ជា​មាន​ពáŸážáŸŒáž˜áž¶áž“​លម្អិážâ€‹áž“ៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} កំណážáŸ‹â€‹áž áŸážáž»â€‹áž“ៃ​ការហាម​ឃាážáŸ‹â€‹â€‹]។",
'rev-deleted-no-diff' => "អ្នក​មិន​អាច​មើល​ភាព​ážáž»ážŸâ€‹áž‚្នា​នáŸáŸ‡â€‹áž”ាន​ទáŸâ€‹áž–ី​ព្រោះ​កំណែ​មួយ​នៃ​កំណែ​ប្រែ​ទាំង​អស់​ážáŸ’រូវ​បាន'''​លុប​'''។
ប្រហែល​ជា​មាន​ពáŸážáŸŒáž˜áž¶áž“​លម្អិážâ€‹áž“ៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} កំណážáŸ‹â€‹áž áŸážáž»â€‹áž“ៃ​ការ​លុប​]។",
'rev-suppressed-no-diff' => "អ្នកមិនអាចមើលភាពážáž»ážŸáž‚្នានáŸáŸ‡áž”ានទ០ព្រោះážáž¶áž€áŸ†ážŽáŸ‚មួយក្នុងចំណោមនោះážáŸ’រូវបាន'''លុបចោលហើយ'''។",
'rev-deleted-unhide-diff' => "កំណែ​ប្រែ​មួយ​នៃភាព​ážáž»ážŸâ€‹áž‚្នា​​នáŸáŸ‡â€‹ážáŸ’រូវ​បាន'''​លុប'''​។
ប្រហែល​ជា​មាន​ពáŸážáŸŒáž˜áž¶áž“​លម្អិážâ€‹áž“ៅ​ក្នុង​[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} កំណážáŸ‹â€‹áž áŸážáž»â€‹áž“ៃ​ការ​លុប​]។
-ក្នុង​នាម​ជា​អ្នក​អភិបាល​ អ្នក​នៅ​ážáŸ‚​អាច​[$1 មើលភាព​ážáž»ážŸâ€‹áž‚្នា​​នáŸáŸ‡â€‹]ប្រសិន​បើ​អ្នក​ចង់​។",
+អ្នក​នៅ​ážáŸ‚​អាច​[$1 មើលភាព​ážáž»ážŸâ€‹áž‚្នា​​នáŸáŸ‡â€‹]ប្រសិន​បើ​អ្នក​ចង់​។",
'rev-delundel' => 'បង្ហាញ/លាក់',
'rev-showdeleted' => 'បង្ហាញ',
'revisiondelete' => 'លុបចáŸáž‰ / លែងលុបចáŸáž‰ កំណែនានា',
@@ -1149,9 +1165,9 @@ $1",
# Suppression log
'suppressionlog' => 'កំណážáŸ‹â€‹áž áŸážáž»â€‹áž“ៃ​ការ​ហាម​ឃាážáŸ‹â€‹',
-'suppressionlogtext' => 'ážáž¶áž„ក្រោមនáŸáŸ‡áž‡áž¶áž”ញ្ជីការលុបចោលនិងការរាំងážáŸ’ទប់ទាក់ទិននឹងážáŸ’លឹមសារដែលអ្នកអភិបាលលាក់។
+'suppressionlogtext' => 'ážáž¶áž„ក្រោមនáŸáŸ‡áž‡áž¶áž”ញ្ជីការលុបចោលនិងការហាមឃាážáŸ‹áž‘ាក់ទិននឹងážáŸ’លឹមសារដែលអ្នកអភិបាលបានលាក់។
-សូមមើលបំរាមនិងការរាំងážáŸ’ទប់អនុវážáŸ’ážáž”ច្ចុប្បន្ននៅក្នុង [[Special:IPBlockList|បញ្ជីរាំងážáŸ’ទប់IP]]។',
+សូមមើលបំរាមនិងការហាមឃាážáŸ‹ážŠáŸ‚លនៅជាធរមាននាពáŸáž›áž”ច្ចុប្បន្ននៅក្នុង[[Special:BlockList|បញ្ជីនៃការហាមឃាážáŸ‹ IP]]។',
# History merging
'mergehistory' => 'ច្របាច់ប្រវážáŸ’ážáž·áž‘ាំងឡាយរបស់ទំពáŸážšáž”ញ្ចូលគ្នា',
@@ -1260,12 +1276,13 @@ $1",
សូមចងចាំ​ážáž¶â€‹ លិបិក្រម​នៃ​មាážáž·áž€áž¶ážšâ€‹ážšáž”ស់​{{SITENAME}} អាចហួស​សមáŸáž™â€‹áŸ”​',
# Quickbar
-'qbsettings' => 'របារទាន់ចិážáŸ’áž',
-'qbsettings-none' => 'áž‘áž‘áŸ',
-'qbsettings-fixedleft' => 'ចុងážáž¶áž„ឆ្វáŸáž„',
-'qbsettings-fixedright' => 'ចុងážáž¶áž„ស្ážáž¶áŸ†',
-'qbsettings-floatingleft' => 'អណ្ážáŸ‚ážáž†áŸ’ážœáŸáž„',
-'qbsettings-floatingright' => 'អណ្ážáŸ‚ážážŸáŸ’ážáž¶áŸ†',
+'qbsettings' => 'របារទាន់ចិážáŸ’áž',
+'qbsettings-none' => 'áž‘áž‘áŸ',
+'qbsettings-fixedleft' => 'ចុងážáž¶áž„ឆ្វáŸáž„',
+'qbsettings-fixedright' => 'ចុងážáž¶áž„ស្ážáž¶áŸ†',
+'qbsettings-floatingleft' => 'អណ្ážáŸ‚ážáž†áŸ’ážœáŸáž„',
+'qbsettings-floatingright' => 'អណ្ážáŸ‚ážážŸáŸ’ážáž¶áŸ†',
+'qbsettings-directionality' => 'នៅមួយកន្លែង, អាស្រáŸáž™áž›áž¾áž‘ិសដៅសរសáŸážšážšáž”ស់ភាសារបស់អ្នក',
# Preferences page
'preferences' => 'ចំណង់ចំណូលចិážáŸ’áž',
@@ -1276,9 +1293,10 @@ $1",
'changepassword' => 'ប្ážáž¼ážšáž–ាក្យសំងាážáŸ‹',
'prefs-skin' => 'សំបក',
'skin-preview' => 'មើលជាមុន',
-'prefs-math' => 'គណិáž',
'datedefault' => 'គ្មានចំណូលចិážáŸ’áž',
+'prefs-beta' => 'មុážáž„ារពិសáŸážŸážáŸ’មីៗរបស់ស៊áŸážšáž¸áž”áŸážáž¶',
'prefs-datetime' => 'កាលបរិច្ឆáŸáž‘និងល្វែងម៉ោង',
+'prefs-labs' => 'មុážáž„ារពិសáŸážŸážáŸ’មីៗដែលស្ážáž·ážáž€áŸ’រោមការពិសោធនáŸáž“ៅឡើយ',
'prefs-personal' => 'ប្រវážáŸ’ážáž·ážšáž¼áž”',
'prefs-rc' => 'បំលាស់ប្ដូរážáŸ’មីៗ',
'prefs-watchlist' => 'បញ្ជីážáž¶áž˜ážŠáž¶áž“',
@@ -1300,8 +1318,6 @@ $1",
'columns' => 'ជួរឈរ៖',
'searchresultshead' => 'ស្វែងរក',
'resultsperpage' => 'ចំនួនលទ្ធផលក្នុងមួយទំពáŸážšáŸ–',
-'contextlines' => 'ចំនួនបន្ទាážáŸ‹áž€áŸ’នុងមួយលទ្ធផល៖',
-'contextchars' => 'ចំនួនអក្សរក្នុងមួយជួរ៖',
'stub-threshold' => 'ទំហំអប្បបរមាសំរាប់ដាក់ជាទំរង់<a href="#" class="stub">ážáŸ†ážŽáž—្ជាប់ទៅទំពáŸážšáž€áŸ†áž”៉ិចកំប៉ុក</a> (áž‚áž·ážáž‡áž¶áž”ៃ)៖',
'stub-threshold-disabled' => 'មិនប្រើ',
'recentchangesdays' => 'ចំនួនážáŸ’ងៃបង្ហាញក្នុង ទំពáŸážšáž”ំលាស់ប្ážáž¼ážšážáŸ’មីៗ៖',
@@ -1311,7 +1327,7 @@ $1",
'savedprefs' => 'ចំណង់ចំណូលចិážáŸ’ážáž“ានារបស់អ្នកážáŸ’រូវបានរក្សាទុកហើយ។',
'timezonelegend' => 'ល្វែង​ម៉ោង:',
'localtime' => 'ម៉ោងក្នុងស្រុក​៖',
-'timezoneuseserverdefault' => 'ážáž¶áž˜áž€áž¶ážšáž€áŸ†áž“ážáŸ‹ážšáž”ស់ម៉ាស៊ីនបំរើការ',
+'timezoneuseserverdefault' => 'ážáž¶áž˜áž€áž¶ážšáž€áŸ†áž“ážáŸ‹ážŠáž¾áž˜ážšáž”ស់វិគី ($1)',
'timezoneuseoffset' => 'ផ្សáŸáž„ទៀហ(បញ្ចូលម៉ោងដោយážáŸ’លួនឯង)',
'timezoneoffset' => 'ទូទាážáŸ‹Â¹â€‹áŸ–',
'servertime' => 'ម៉ោងម៉ាស៊ីនបម្រើ​៖',
@@ -1346,7 +1362,7 @@ $1",
'prefs-registration' => 'កាលបរិច្ឆáŸáž‘ចុះឈ្មោះ៖',
'yourrealname' => 'ឈ្មោះពិážáŸ–',
'yourlanguage' => 'ភាសា៖',
-'yourvariant' => 'អážáŸážšâ€‹áŸ–',
+'yourvariant' => 'ជម្រើសភាសាážáŸ’លឹមសារ៖',
'yournick' => 'áž ážáŸ’ážáž›áŸážáž¶ážáŸ’មី៖',
'prefs-help-signature' => 'រាល់វិចារនៅលើទំពáŸážšáž–ិភាក្សានានា​គួរážáŸ‚មានចុះហážáŸ’ážáž›áŸážáž¶ážŠáŸ„យប្រើ "<nowiki>~~~~</nowiki>" ដែលនឹងបំលែង​ចáŸáž‰áž‡áž¶áž ážáŸ’ážáž›áŸážáž¶â€‹ážšáž”ស់អ្នក​ជាមួយនឹងកាលបរិច្ឆáŸáž‘។',
'badsig' => 'áž ážáŸ’ážáž›áŸážáž¶áž†áŸ…មិនážáŸ’រឹមážáŸ’រូវ។សូមពិនិážáŸ’យមើលស្លាក​ HTML ។',
@@ -1360,9 +1376,8 @@ $1",
'prefs-help-gender' => 'ដាក់កáŸáž”ានមិនដាក់កáŸáž”ាន៖ ប្រើសំរាប់អោយសូហ្វវែរហៅážáž¶áž˜áž—áŸáž‘អោយបាមážáŸ’រឹមážáŸ’រូវ។ áž–áŸážáŸŒáž˜áž¶áž“áž“áŸáŸ‡áž“ឹងážáŸ’រូវបង្ហាញជាសាធារណៈ។',
'email' => 'អ៊ីមែល',
'prefs-help-realname' => 'អ្នកអាចផ្ដល់ឈ្មោះពិážážšáž”ស់អ្នកកáŸáž”ានមិនផ្ដល់កáŸáž”ាន។ បើអ្នកផ្ដល់ឱ្យ វានឹងážáŸ’រូវបានប្រើប្រាស់់ដើម្បីបញ្ជាក់ភាពជាម្ចាស់​លើការរួមចំណែក​នានា​របស់អ្នក។',
-'prefs-help-email' => 'អ្នកអាចផ្ដល់អាសយដ្ឋានអ៊ីមែលរបស់អ្នកកáŸáž”ានមិនផ្ដល់កáŸáž”ាន។ ប៉ុន្ដែអាសយដ្ឋានអ៊ីមែលដែលផ្ដល់អោយនឹងមានប្រយោជនáŸáž€áŸ’នុងការប្ដូរពាក្យសំងាážáŸ‹ áž–áŸáž›ážŠáŸ‚លអ្នកភ្លáŸáž…វា។
-
-អ្នកកáŸáž¢áž¶áž…ជ្រើសរើស​ការផ្ដល់លទ្ឋភាព​​ឱ្យអ្នកដទៃទាក់ទងអ្នក​ážáž¶áž˜ážšáž™áŸˆâ€‹â€‹áž‘ំពáŸážšáž¢áŸ’នកប្រើប្រាស់​​ឬទំពáŸážšáž–ិភាក្សារបស់អ្នក​​ដោយមិនចាំបាច់ឱ្យគáŸážŠáž¹áž„ពីអážáŸ’ážážŸáž‰áŸ’ញាណរបស់អ្នកផងដែរ។',
+'prefs-help-email' => 'អ្នកអាចផ្ដល់អាសយដ្ឋានអ៊ីមែលរបស់អ្នកកáŸáž”ានមិនផ្ដល់កáŸáž”ាន។ ប៉ុន្ដែអាសយដ្ឋានអ៊ីមែលដែលផ្ដល់អោយនឹងមានប្រយោជនáŸáž€áŸ’នុងការប្ដូរពាក្យសំងាážáŸ‹ áž–áŸáž›ážŠáŸ‚លអ្នកភ្លáŸáž…វា។',
+'prefs-help-email-others' => 'អ្នកកáŸáž¢áž¶áž…ជ្រើសរើស​ការផ្ដល់លទ្ឋភាព​​ឱ្យអ្នកដទៃទាក់ទងអ្នក​ážáž¶áž˜ážšáž™áŸˆâ€‹â€‹áž‘ំពáŸážšáž¢áŸ’នកប្រើប្រាស់​​ឬទំពáŸážšáž–ិភាក្សារបស់អ្នក​​ដោយមិនចាំបាច់ឱ្យគáŸážŠáž¹áž„ពីអážáŸ’ážážŸáž‰áŸ’ញាណរបស់អ្នកផងដែរ។',
'prefs-help-email-required' => 'អាសយដ្ឋានអ៊ីមែលážáŸ’រូវការជាចាំបាច់។',
'prefs-info' => 'áž–áŸážáŸŒáž˜áž¶áž“ផ្ទាល់​ážáŸ’លួន',
'prefs-i18n' => 'ភាសា',
@@ -1401,7 +1416,7 @@ $1",
'userrights-no-interwiki' => 'អ្នកគ្មានការអនុញ្ញាážáž€áŸ‚ប្រែសិទ្ធិរបស់អ្នកប្រើប្រាស់លើវិគីផ្សáŸáž„áž‘áŸáŸ”',
'userrights-nodatabase' => 'មូលដ្ឋានទិន្ននáŸáž™ $1 មិនមាន ឬ ស្ážáž·ážáž“ៅážáž¶áž„ក្រៅ។',
'userrights-nologin' => 'អ្នកážáŸ’រូវážáŸ‚ [[Special:UserLogin|កážáŸ‹ážˆáŸ’មោះចូល]]ដោយប្រើគណនីអ្នកអភិបាលដើម្បីផ្ដល់សិទ្ធិឱ្យអ្នកប្រើប្រាស់​។',
-'userrights-notallowed' => 'គណនីរបស់អ្នកគ្មានការអនុញ្ញាážážŠáž¾áž˜áŸ’បីកំណážáŸ‹ážŸáž·áž‘្ធិរបស់អ្នកប្រើប្រាស់ដទៃទáŸáŸ”',
+'userrights-notallowed' => 'គណនីរបស់អ្នកគ្មានការអនុញ្ញាážážŠáž¾áž˜áŸ’បីបន្ážáŸ‚មឬដកសិទ្ធិរបស់អ្នកប្រើប្រាស់ដទៃទáŸáŸ”',
'userrights-changeable-col' => 'ក្រុមនានាដែលអ្នកអាចផ្លាស់ប្ដូរបាន',
'userrights-unchangeable-col' => 'ក្រុមនានាដែលអ្នកមិនអាចផ្លាស់ប្ដូរបាន',
@@ -1430,68 +1445,69 @@ $1",
'grouppage-suppress' => '{{ns:project}}:អធិការ',
# Rights
-'right-read' => 'អានអážáŸ’ážáž”áž‘',
-'right-edit' => 'កែប្រែអážáŸ’ážáž”áž‘',
-'right-createpage' => 'បង្កើážáž‘ំពáŸážšáž¢ážáŸ’ážáž”áž‘ (ដែលមិនមែនជាទំពáŸážšáž–ិភាក្សា)',
-'right-createtalk' => 'បង្កើážáž‘ំពáŸážšáž–ិភាក្សា',
-'right-createaccount' => 'បង្កើážáž‚ណនីអ្នកប្រើប្រាស់ážáŸ’មី',
-'right-minoredit' => 'កំណážáŸ‹áž…ំណាំកំណែប្រែážáž¶áž‡áž¶áž€áŸ†ážŽáŸ‚ប្រែážáž·áž…ážáž½áž…',
-'right-move' => 'ប្ដូរទីážáž¶áŸ†áž„ទំពáŸážš',
-'right-move-subpages' => 'ប្ដូរទីážáž¶áŸ†áž„ទំពáŸážšážšáž½áž˜áž‡áž¶áž˜áž½áž™áž‘ំពáŸážšážšáž„របស់វា',
-'right-move-rootuserpages' => 'ប្ដូរទីážáž¶áŸ†áž„ឫសទំពáŸážšáž¢áŸ’នកប្រើប្រាស់',
-'right-movefile' => 'ប្ដូរទីážáž¶áŸ†áž„ឯកសារ',
-'right-suppressredirect' => 'មិនបង្កើážáž€áž¶ážšáž”ញ្ជូនបន្ážáž–ីទំពáŸážšáž”្រភពនៅពáŸáž›áž”្ដូរទីážáž¶áŸ†áž„ទំពáŸážš',
-'right-upload' => 'ផ្ទុកឡើងឯកសារ',
-'right-reupload' => 'សរសáŸážšáž›áž»áž”ពីលើឯកសារមានស្រាប់',
-'right-reupload-own' => 'សរសáŸážšáž›áž»áž”ពីលើឯកសារមានស្រាប់ដែលážáŸ’រូវបានផ្ទុកឡើងដោយម្ចាស់ដើម',
-'right-reupload-shared' => 'សរសáŸážšáž›áž»áž”ពីលើឯកសារនៅក្នុងážážáž˜áŸážŒáž¶ážšáž½áž˜ážšáž”ស់វិគីនáŸáŸ‡',
-'right-upload_by_url' => 'ផ្ទុកឡើងឯកសារមួយពីអាសយដ្ឋាន URL មួយ',
-'right-autoconfirmed' => 'កែប្រែទំពáŸážšáž–ាក់កណ្ដាលការពារនានា',
-'right-bot' => 'ទុកជាដំណើរការស្វáŸáž™áž”្រវážáŸ’ážáž·áž˜áž½áž™',
-'right-nominornewtalk' => 'មិនបង្ហាញសាររំលឹក áž–áŸáž›áž’្វើកំនែážáž·áž…ážáž½áž…នៅលើទំពáŸážšáž–ិភាក្សានានា',
-'right-writeapi' => 'ការប្រើប្រាស់ API សម្រាប់​សរសáŸážš',
-'right-delete' => 'លុបទំពáŸážšáž…ោល',
-'right-bigdelete' => 'លុបទំពáŸážšáž‘ាំងឡាយដែលមានប្រវážáŸ’ážáž·ážœáŸ‚áž„',
-'right-deleterevision' => 'លុប​និង​ឈប់​លុប​កំណែ​ប្រែ​ច្បាស់លាស់​នៃ​ទំពáŸážšâ€‹',
-'right-deletedhistory' => 'មើលកំនážáŸ‹ážáŸ’រាប្រវážáŸ’ážáž·ážŠáŸ‚áž›ážáŸ’រូវបានលុបចោល ដោយគ្មានអážáŸ’ážáž”ទភ្ជាប់របស់វា',
-'right-browsearchive' => 'ស្វែងរកទំពáŸážšážŠáŸ‚áž›ážáŸ’រូវបានលុបចោល',
-'right-undelete' => 'ឈប់លុបទំពáŸážšáž˜áž½áž™',
-'right-suppressrevision' => 'áž–áž·áž“áž·ážáŸ’យនិងស្ដារកំណែដែលអ្នកអភិបាលបានលាក់',
-'right-suppressionlog' => 'មើលកំណážáŸ‹áž áŸážáž»áž¯áž€áž‡áž“',
-'right-block' => 'ហាមមិនឱ្យអ្នកប្រើប្រាស់ដទៃទៀážáž’្វើការកែប្រែ',
-'right-blockemail' => 'ហាមឃាážáŸ‹áž¢áŸ’នកប្រើប្រាស់ម្នាក់មិនអោយផ្ញើអ៊ីមែល',
-'right-hideuser' => 'ហាមឃាážáŸ‹áž¢áŸ’នកប្រើប្រាស់ម្នាក់ រួចលាក់មិនអោយបង្ហាញជាសាធារណៈ',
-'right-ipblock-exempt' => 'ការហាមឃាážáŸ‹IPជាប្រយោល ការហាមឃាážáŸ‹ážŸáŸ’ážœáŸáž™áž”្រវážáŸ’ážáž·áž“ិងការហាមឃាážáŸ‹áž˜áž¶áž“កំរិáž',
-'right-proxyunbannable' => 'ពង្វាងការរាំងážáŸ’ទប់ស្វáŸáž™áž”្រវážáŸ’ážáž·ážšáž”ស់ប្រុកស៊ី',
-'right-unblockself' => 'ឈប់ហាមឃាážáŸ‹áž–ួកគáŸ',
-'right-protect' => 'ប្ដូរកម្រិážáž€áž¶ážšáž–ាររួចកែប្រែទំពáŸážšážŠáŸ‚លបានការពារ',
-'right-editprotected' => 'កែប្រែទំពáŸážšážŠáŸ‚លបានការពារ (ដោយមិនរំលាយការការពារ)',
-'right-editinterface' => 'កែប្រែអន្ážážšáž˜áž»ážáž¢áŸ’នកប្រើប្រាស់',
-'right-editusercssjs' => 'កែប្រែឯកសារ CSS áž“áž·áž„ JS របស់អ្នកប្រើប្រាស់ផ្សáŸáž„ទៀáž',
-'right-editusercss' => 'កែប្រែឯកសារ CSS របស់អ្នកប្រើប្រាស់ផ្សáŸáž„ទៀáž',
-'right-edituserjs' => 'កែប្រែឯកសារ JS របស់អ្នកប្រើប្រាស់ផ្សáŸáž„ទៀáž',
-'right-rollback' => 'ážáŸ’រឡប់យ៉ាងរហáŸážŸáž“ូវកំណែប្រែទំពáŸážšážœáž·ážŸáŸážŸážŽáž¶áž˜áž½áž™â€‹ážŠáŸ‚លធ្វើឡើងដោយ​អ្នកប្រើប្រាស់ចុងក្រោយគáŸáŸ”',
-'right-markbotedits' => 'ចំនាំកំនែប្រែážáŸ’រឡប់ឡើងវិញទាំងឡាយážáž¶áž‡áž¶áž€áŸ†áž“ែប្រែដោយរូបយន្áž',
-'right-noratelimit' => 'មិនទទួលរងឥទ្ធិពលពីការដាក់កំហិážážŽáž¶áž‘ាំងអស់',
-'right-import' => 'នាំចូលទំពáŸážšáž“ានាពីវិគីផ្សáŸáž„ៗទៀáž',
-'right-importupload' => 'នាំចូលទំពáŸážšáž“ានាពីឯកសារដែលបានផ្ទុកឡើង',
-'right-patrol' => 'ចំណាំកំណែប្រែរបស់អ្នកដáŸáž‘ៃážáž¶áž‡áž¶áž€áŸ†ážŽáŸ‚ប្រែបានល្បាáž',
-'right-autopatrol' => 'កážáŸ‹ážŸáž˜áŸ’គាល់ដោយស្វáŸáž™áž”្រវážáŸ’ážáž·áž“ូវកំណែប្រែរបស់ážáŸ’ញុំážáž¶áž‡áž¶áž€áŸ†áž“ែប្រែបានល្បាáž',
-'right-patrolmarks' => 'មើក​កំណážáŸ‹â€‹ážŸáž˜áŸ’គាល់​ល្បាážâ€‹ážŠáŸ‚ល​ផ្លាស់​ប្ážáž¼ážšâ€‹ážáŸ’មី​ៗ​',
-'right-unwatchedpages' => 'បង្ហាញបញ្ជីទំពáŸážšáž“ានាដែលមិនážáŸ’រូវបានមើល',
-'right-trackback' => 'ដាក់ស្នើការ​ážáž¶áž˜â€‹ážŠáž¶áž“​',
-'right-mergehistory' => 'ច្របាច់ប្រវážáŸ’ážáž·ážšáž”ស់ទំពáŸážšáž“ានាបញ្ចូលគ្នា',
-'right-userrights' => 'កែប្រែរាល់សិទ្ធិនៃអ្នកប្រើប្រាស់',
-'right-userrights-interwiki' => 'កែប្រែសិទ្ធិអ្នកប្រើប្រាស់នៅលើវិគីផ្សáŸáž„ៗទៀáž',
-'right-siteadmin' => 'ចាក់សោនិងបើកសោមូលដ្ឋានទិន្ននáŸáž™',
-'right-reset-passwords' => 'កំណážáŸ‹â€‹áž¡áž¾áž„​វិញ​នូវ​លáŸážâ€‹ážŸáž˜áŸ’ងាážáŸ‹â€‹áž¢áŸ’នក​ប្រើប្រាស់​ដទៃ​ទៀážâ€‹',
-'right-sendemail' => 'ផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើដទៃ',
+'right-read' => 'អានអážáŸ’ážáž”áž‘',
+'right-edit' => 'កែប្រែអážáŸ’ážáž”áž‘',
+'right-createpage' => 'បង្កើážáž‘ំពáŸážšáž¢ážáŸ’ážáž”áž‘ (ដែលមិនមែនជាទំពáŸážšáž–ិភាក្សា)',
+'right-createtalk' => 'បង្កើážáž‘ំពáŸážšáž–ិភាក្សា',
+'right-createaccount' => 'បង្កើážáž‚ណនីអ្នកប្រើប្រាស់ážáŸ’មី',
+'right-minoredit' => 'កំណážáŸ‹áž…ំណាំកំណែប្រែážáž¶áž‡áž¶áž€áŸ†ážŽáŸ‚ប្រែážáž·áž…ážáž½áž…',
+'right-move' => 'ប្ដូរទីážáž¶áŸ†áž„ទំពáŸážš',
+'right-move-subpages' => 'ប្ដូរទីážáž¶áŸ†áž„ទំពáŸážšážšáž½áž˜áž‡áž¶áž˜áž½áž™áž‘ំពáŸážšážšáž„របស់វា',
+'right-move-rootuserpages' => 'ប្ដូរទីážáž¶áŸ†áž„ឫសទំពáŸážšáž¢áŸ’នកប្រើប្រាស់',
+'right-movefile' => 'ប្ដូរទីážáž¶áŸ†áž„ឯកសារ',
+'right-suppressredirect' => 'មិនបង្កើážáž€áž¶ážšáž”ញ្ជូនបន្ážáž–ីទំពáŸážšáž”្រភពនៅពáŸáž›áž”្ដូរទីážáž¶áŸ†áž„ទំពáŸážš',
+'right-upload' => 'ផ្ទុកឡើងឯកសារ',
+'right-reupload' => 'សរសáŸážšáž›áž»áž”ពីលើឯកសារមានស្រាប់',
+'right-reupload-own' => 'សរសáŸážšáž›áž»áž”ពីលើឯកសារមានស្រាប់ដែលážáŸ’រូវបានផ្ទុកឡើងដោយម្ចាស់ដើម',
+'right-reupload-shared' => 'សរសáŸážšáž›áž»áž”ពីលើឯកសារនៅក្នុងážážáž˜áŸážŒáž¶ážšáž½áž˜ážšáž”ស់វិគីនáŸáŸ‡',
+'right-upload_by_url' => 'ផ្ទុកឡើងឯកសារមួយពីអាសយដ្ឋាន URL មួយ',
+'right-autoconfirmed' => 'កែប្រែទំពáŸážšáž–ាក់កណ្ដាលការពារនានា',
+'right-bot' => 'ទុកជាដំណើរការស្វáŸáž™áž”្រវážáŸ’ážáž·áž˜áž½áž™',
+'right-nominornewtalk' => 'មិនបង្ហាញសាររំលឹក áž–áŸáž›áž’្វើកំនែážáž·áž…ážáž½áž…នៅលើទំពáŸážšáž–ិភាក្សានានា',
+'right-writeapi' => 'ការប្រើប្រាស់ API សម្រាប់​សរសáŸážš',
+'right-delete' => 'លុបទំពáŸážšáž…ោល',
+'right-bigdelete' => 'លុបទំពáŸážšáž‘ាំងឡាយដែលមានប្រវážáŸ’ážáž·ážœáŸ‚áž„',
+'right-deleterevision' => 'លុប​និង​ឈប់​លុប​កំណែ​ប្រែ​ច្បាស់លាស់​នៃ​ទំពáŸážšâ€‹',
+'right-deletedhistory' => 'មើលកំនážáŸ‹ážáŸ’រាប្រវážáŸ’ážáž·ážŠáŸ‚áž›ážáŸ’រូវបានលុបចោល ដោយគ្មានអážáŸ’ážáž”ទភ្ជាប់របស់វា',
+'right-browsearchive' => 'ស្វែងរកទំពáŸážšážŠáŸ‚áž›ážáŸ’រូវបានលុបចោល',
+'right-undelete' => 'ឈប់លុបទំពáŸážšáž˜áž½áž™',
+'right-suppressrevision' => 'áž–áž·áž“áž·ážáŸ’យនិងស្ដារកំណែដែលអ្នកអភិបាលបានលាក់',
+'right-suppressionlog' => 'មើលកំណážáŸ‹áž áŸážáž»áž¯áž€áž‡áž“',
+'right-block' => 'ហាមមិនឱ្យអ្នកប្រើប្រាស់ដទៃទៀážáž’្វើការកែប្រែ',
+'right-blockemail' => 'ហាមឃាážáŸ‹áž¢áŸ’នកប្រើប្រាស់ម្នាក់មិនអោយផ្ញើអ៊ីមែល',
+'right-hideuser' => 'ហាមឃាážáŸ‹áž¢áŸ’នកប្រើប្រាស់ម្នាក់ រួចលាក់មិនអោយបង្ហាញជាសាធារណៈ',
+'right-ipblock-exempt' => 'ការហាមឃាážáŸ‹IPជាប្រយោល ការហាមឃាážáŸ‹ážŸáŸ’ážœáŸáž™áž”្រវážáŸ’ážáž·áž“ិងការហាមឃាážáŸ‹áž˜áž¶áž“កំរិáž',
+'right-proxyunbannable' => 'ពង្វាងការរាំងážáŸ’ទប់ស្វáŸáž™áž”្រវážáŸ’ážáž·ážšáž”ស់ប្រុកស៊ី',
+'right-unblockself' => 'ឈប់ហាមឃាážáŸ‹áž–ួកគáŸ',
+'right-protect' => 'ប្ដូរកម្រិážáž€áž¶ážšáž–ាររួចកែប្រែទំពáŸážšážŠáŸ‚លបានការពារ',
+'right-editprotected' => 'កែប្រែទំពáŸážšážŠáŸ‚លបានការពារ (ដោយមិនរំលាយការការពារ)',
+'right-editinterface' => 'កែប្រែអន្ážážšáž˜áž»ážáž¢áŸ’នកប្រើប្រាស់',
+'right-editusercssjs' => 'កែប្រែឯកសារ CSS áž“áž·áž„ JS របស់អ្នកប្រើប្រាស់ផ្សáŸáž„ទៀáž',
+'right-editusercss' => 'កែប្រែឯកសារ CSS របស់អ្នកប្រើប្រាស់ផ្សáŸáž„ទៀáž',
+'right-edituserjs' => 'កែប្រែឯកសារ JS របស់អ្នកប្រើប្រាស់ផ្សáŸáž„ទៀáž',
+'right-rollback' => 'ážáŸ’រឡប់យ៉ាងរហáŸážŸáž“ូវកំណែប្រែទំពáŸážšážœáž·ážŸáŸážŸážŽáž¶áž˜áž½áž™â€‹ážŠáŸ‚លធ្វើឡើងដោយ​អ្នកប្រើប្រាស់ចុងក្រោយគáŸáŸ”',
+'right-markbotedits' => 'ចំនាំកំនែប្រែážáŸ’រឡប់ឡើងវិញទាំងឡាយážáž¶áž‡áž¶áž€áŸ†áž“ែប្រែដោយរូបយន្áž',
+'right-noratelimit' => 'មិនទទួលរងឥទ្ធិពលពីការដាក់កំហិážážŽáž¶áž‘ាំងអស់',
+'right-import' => 'នាំចូលទំពáŸážšáž“ានាពីវិគីផ្សáŸáž„ៗទៀáž',
+'right-importupload' => 'នាំចូលទំពáŸážšáž“ានាពីឯកសារដែលបានផ្ទុកឡើង',
+'right-patrol' => 'ចំណាំកំណែប្រែរបស់អ្នកដáŸáž‘ៃážáž¶áž‡áž¶áž€áŸ†ážŽáŸ‚ប្រែបានល្បាáž',
+'right-autopatrol' => 'កážáŸ‹ážŸáž˜áŸ’គាល់ដោយស្វáŸáž™áž”្រវážáŸ’ážáž·áž“ូវកំណែប្រែរបស់ážáŸ’ញុំážáž¶áž‡áž¶áž€áŸ†áž“ែប្រែបានល្បាáž',
+'right-patrolmarks' => 'មើក​កំណážáŸ‹â€‹ážŸáž˜áŸ’គាល់​ល្បាážâ€‹ážŠáŸ‚ល​ផ្លាស់​ប្ážáž¼ážšâ€‹ážáŸ’មី​ៗ​',
+'right-unwatchedpages' => 'បង្ហាញបញ្ជីទំពáŸážšáž“ានាដែលមិនážáŸ’រូវបានមើល',
+'right-trackback' => 'ដាក់ស្នើការ​ážáž¶áž˜â€‹ážŠáž¶áž“​',
+'right-mergehistory' => 'ច្របាច់ប្រវážáŸ’ážáž·ážšáž”ស់ទំពáŸážšáž“ានាបញ្ចូលគ្នា',
+'right-userrights' => 'កែប្រែរាល់សិទ្ធិនៃអ្នកប្រើប្រាស់',
+'right-userrights-interwiki' => 'កែប្រែសិទ្ធិអ្នកប្រើប្រាស់នៅលើវិគីផ្សáŸáž„ៗទៀáž',
+'right-siteadmin' => 'ចាក់សោនិងបើកសោមូលដ្ឋានទិន្ននáŸáž™',
+'right-override-export-depth' => 'នាំចáŸáž‰áž‘ំពáŸážšážšáž½áž˜áž‘ាំងទំពáŸážšážŠáŸ‚លមានភ្ជាប់ážáŸ†ážŽáž—្ជាប់​រហូážážŠáž›áŸ‹áž›áŸ†ážŠáž¶áž”់ទី៥',
+'right-sendemail' => 'ផ្ញើអ៊ីមែលទៅកាន់អ្នកប្រើដទៃ',
# User rights log
-'rightslog' => 'កំណážáŸ‹áž áŸážáž»áž“ៃការប្ážáž¼ážšážŸáž·áž‘្ធិអ្នកប្រើប្រាស់',
-'rightslogtext' => 'áž“áŸáŸ‡â€‹áž‡áž¶â€‹áž€áŸ†ážŽážáŸ‹áž áŸážáž»áž“ៃបំលាស់ប្ដូរចំពោះកាប្ដូរក្រុមសមាជិកភាព​របស់​អ្នកប្រើប្រាស់។',
-'rightslogentry' => 'បានប្ដូរក្រុមសមាជិកភាពសម្រាប់ $1 ពី $2 ទៅ $3',
-'rightsnone' => '(áž‘áž‘áŸ)',
+'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' => 'អានទំពáŸážšáž“áŸáŸ‡',
@@ -1617,13 +1633,14 @@ $1",
'minlength1' => 'ឈ្មោះឯកសារ​ážáŸ’រូវមាន​យ៉ាងážáž·áž…​១​អក្សរ។',
'illegalfilename' => 'ឈ្មោះឯកសារ "$1" មាន​អក្សរ​ហាមឃាážáŸ‹â€‹â€‹áž€áŸ’នុងចំណងជើងទំពáŸážšáŸ” សូម​ប្ážáž¼ážšážˆáŸ’មោះ​ឯកសារ ហើយ​ព្យាយាមផ្ទុកវា​ឡើង​ម្ážáž„ទៀážáŸ”',
'badfilename' => 'ឈ្មោះឯកសារ បានážáŸ’រូវប្ážáž¼ážš ជា "$1" ។',
-'filetype-mime-mismatch' => 'កន្ទុយរបស់ឯកសារមិនážáŸ’រូវគ្នានឹងប្រភáŸáž‘ MIME áž‘áŸáŸ”',
+'filetype-mime-mismatch' => 'កន្ទុយរបស់ឯកសារ ".$1" មិនážáŸ’រូវគ្នានឹងប្រភáŸáž‘ MIME របស់ឯកសារ ($2) áž‘áŸáŸ”',
'filetype-badmime' => 'ឯកសារ​ប្រភáŸáž‘ MIME "$1" មិនážáŸ’រូវបាន​អនុញ្ញាážâ€‹áž±áŸ’យផ្ទុកឡើង។',
'filetype-bad-ie-mime' => 'មិនអាចផ្ទុកឯកសារនáŸáŸ‡áž¡áž¾áž„បានទ០ព្រោះInternet Explorerបានរកឃើញážáž¶áž¯áž€ážŸáž¶ážšáž“áŸáŸ‡áž‡áž¶ "$1" ដែលជាប្រភáŸáž‘ឯកសារហាមឃាážáŸ‹áž“ិងមានគ្រោះážáŸ’នាក់ážáŸ’លាំង។',
'filetype-unwanted-type' => '\'".$1"\'\'\' ជាប្រភáŸáž‘ឯកសារមិនចង់បាន។
{{PLURAL:$3|ប្រភáŸáž‘ឯកសារ|ប្រភáŸáž‘ឯកសារ}}ដែលគáŸáž…ង់បានគឺ $2។',
-'filetype-banned-type' => "'''\".\$1\"''' គឺជា​ប្រភáŸáž‘​ឯកសារ​ដែល​មិន​ážáŸ’រូវ​បាន​គáŸâ€‹áž¢áž“ុញ្ញាážâ€‹áž‘áŸâ€‹áŸ” {{PLURAL:\$3|file type is|ប្រភáŸáž‘ឯកសារ}}​ដែល​ážáŸ’រូវ​បាន​គáŸâ€‹áž¢áž“ុញ្ញាážâ€‹áž‚ឺ \$2 ។",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|មិនមែនជា​ប្រភáŸáž‘​ឯកសារ​ដែល​ážáŸ’រូវ​បាន​គáŸâ€‹áž¢áž“ុញ្ញាážâ€‹áž‘áŸ|មិនមែនជា​ប្រភáŸáž‘​ឯកសារ​ដែល​ážáŸ’រូវ​បាន​គáŸâ€‹áž¢áž“ុញ្ញាážâ€‹áž‘áŸâ€‹}}។
+{{PLURAL:$3|ប្រភáŸáž‘ឯកសារ​|ប្រភáŸáž‘ឯកសារ​}}ដែល​ážáŸ’រូវ​បាន​គáŸâ€‹áž¢áž“ុញ្ញាážâ€‹áž‚ឺ $2 ។',
'filetype-missing' => 'ឯកសារ មិនមានកន្ទុយ (ដូចជា ".jpg")។',
'empty-file' => 'ឯកសារដែលអ្នកបានដាក់ស្នើគឺទទáŸáŸ”',
'file-too-large' => 'ឯកសារដែលអ្នកបានដាក់ស្នើធំពáŸáž€áž áž¾áž™áŸ”',
@@ -1642,6 +1659,7 @@ $1",
áž“áŸáŸ‡áž”្រហែលជាមកពីកំហុសនៃការសរសáŸážšážˆáŸ’មោះឯកសារ។
ចូរពិនិážáŸ’áž™ ážáž¶ážáž¾áž¢áŸ’នកពិážáž‡áž¶áž…ង់ដាក់បញ្ចáŸáž‰áž¯áž€ážŸáž¶ážšáž“áŸáŸ‡áž¬áž€áŸáž¢ážáŸ‹áŸ”',
+'windows-nonascii-filename' => 'វិគីនáŸáŸ‡áž˜áž·áž“ស្គាល់ឯកសារដែលមានážáž½áž¢áž€áŸ’សរពិសáŸážŸáŸ—áž‘áŸáŸ”',
'fileexists' => "ឯកសារដែលមានឈ្មោះនáŸáŸ‡áž˜áž¶áž“រួចហើយ​ ចូរពិនិážáŸ’áž™ '''<tt>[[:$1]]</tt>''' ប្រសិនបើអ្នកមិនច្បាស់ážáž¶ážáž¾áž¢áŸ’នកចង់ប្ážáž¼ážšážœáž¶áž¬áž€áŸáž¢ážáŸ‹áŸ” [[$1|thumb]]",
'filepageexists' => "ទំពáŸážšáž–ណ៌នារបស់ឯកសារនជážáŸ’រូវបានបង្កើážážšáž½áž…ម្ដងហើយនៅ '''<tt>[[:$1]]</tt>''' កáŸáž”៉ុន្ážáŸ‚ឯកសារដែលមានឈ្មោះដូចនáŸáŸ‡áž˜áž·áž“ទាន់មានទáŸáŸ”
@@ -1695,10 +1713,6 @@ $1",
'upload-options' => 'ជម្រើសក្នុងការផ្ទុកឡើង',
'watchthisupload' => 'ážáž¶áž˜ážŠáž¶áž“​ឯកសារ​នáŸáŸ‡',
'filewasdeleted' => 'ឯកសារដែលមានឈ្មោះនáŸáŸ‡ážáŸ’រូវបានដាក់បញ្ចáŸáž‰áž˜áž»áž“áž“áŸáŸ‡ ហើយកáŸážáŸ’រូវបានគáŸáž›áž»áž”áž…áŸáž‰áž‘ៅវិញផងដែរ។​​​​ អ្នកគួរážáŸ‚áž–áž·áž“áž·ážáŸ’áž™$1​មុននឹង​បន្ážáž”ញ្ចáŸáž‰â€‹ážœáž¶áž˜áŸ’ážáž„​ទៀážâ€‹áŸ”​',
-'upload-wasdeleted' => "'''ប្រយáŸážáŸ’ន៖ អ្នក​កំពុង​ផ្ទុក​ឡើង​នូវ​ឯកសារ​មួយ​ដែល​ážáŸ’រូវ​បានលុបចោល​មុននáŸáŸ‡áŸ”'''
-
-អ្នកគួរ​ពិចារណាážáž¶ážáž¾áž€áž¶ážšáž•áŸ’ទុក​ឯកសារ​នáŸáŸ‡â€‹áž¡áž¾áž„សមរម្យឬទáŸâ€‹áŸ”
-ប្រវážáŸ’ážáž·â€‹áž“ៃការលុបឯកសារ​នáŸáŸ‡â€‹â€‹ážáŸ’រូវបានដាក់​នៅទីនáŸáŸ‡â€‹ážáž¶áž˜áž€áž¶ážšáž‚ួរ៖",
'filename-bad-prefix' => "ឈ្មោះរបស់រូបភាពដែលអ្នកបានផ្ទុកឡើងចាប់ផ្ដើមដោយážáž½áž¢áž€áŸ’សរ '''\"\$1\"''' ដែលនáŸáŸ‡áž‡áž¶ážˆáŸ’មោះមិនបរិយាយអោយរូបភាព (ជាធម្មážáž¶áž‡áž¶ážˆáŸ’មោះកាមáŸážšáŸ‰áž¶ážŒáž¸áž‡áž¸ážáž›ážŠáž¶áž€áŸ‹áž¢áŸ„យដោយស្វáŸáž™áž”្រវážáŸ’ážáž·)។
សូមជ្រើសរើសឈ្មោះដែលបរិយាយអោយរូបភាពរបស់អ្នក។",
@@ -1741,6 +1755,10 @@ $1',
'upload-unknown-size' => 'មិនដឹងទំហំ',
'upload-http-error' => 'មានកំហុសHTTPមួយបានកើážáž¡áž¾áž„៖ $1',
+# Special:UploadStash
+'uploadstash-errclear' => 'ការសំអាážáž¯áž€ážŸáž¶ážšáž˜áž·áž“បានសំរáŸáž…។',
+'uploadstash-refresh' => 'ផ្ទុកបញ្ជីឯកសារឡើងវិញ',
+
# img_auth script messages
'img-auth-accessdenied' => 'ហាមចូល',
'img-auth-badtitle' => 'មិនអាចបង្កើážáž…ំណងជើងមានសុពលភាពពី "$1"។',
@@ -1774,9 +1792,7 @@ $1',
# Special:ListFiles
'listfiles-summary' => 'ទំពáŸážšáž–ិសáŸážŸâ€‹áž“áŸáŸ‡â€‹áž”ង្ហាញ​គ្រប់​ឯកសារ​ដែល​បានផ្ទុកឡើង។
-ážáž¶áž˜â€‹áž›áŸ†áž“ាំដើម​ឯកសារ​ដែល​បានផ្ទុកឡើង​ចុងក្រោយ​ážáŸ’រូវបាន​បង្ហាញ​នៅ​លើគáŸâ€‹áž“ៃបញ្ជីនáŸáŸ‡áŸ”
-
-ចុច​លើ​ក្បាល​ជួរ​ឈរ​ដើម្បី​ផ្លាស់ប្ážáž¼ážšâ€‹áž›áŸ†ážŠáž¶áž”់លំដោយនៃ​ការ​បង្ហាញ​។',
+ážáž¶áž˜â€‹áž›áŸ†áž“ាំដើម​ឯកសារ​ដែល​បានផ្ទុកឡើង​ចុងក្រោយ​ážáŸ’រូវបាន​បង្ហាញ​នៅ​លើគáŸâ€‹áž“ៃបញ្ជីនáŸáŸ‡áŸ”',
'listfiles_search_for' => 'ស្វែងរកឈ្មោះមáŸážŒáž¶áŸ–',
'imgfile' => 'ឯកសារ',
'listfiles' => 'បញ្ជីរូបភាព',
@@ -1805,14 +1821,14 @@ $1',
'filehist-filesize' => 'ទំហំឯកសារ',
'filehist-comment' => 'យោបល់',
'filehist-missing' => 'ឯកសារបាážáŸ‹áž”ង់',
-'imagelinks' => 'ážáŸ†ážŽáž—្ជាប់​​ឯកសារ',
+'imagelinks' => 'បំរើបំរាស់ឯកសារ',
'linkstoimage' => '{{PLURAL:$1|ទំពáŸážšâ€‹|$1 ទំពáŸážš}} ážáž¶áž„ក្រោម​មានážáŸ†ážŽáž—្ជាប់មក​ឯកសារនáŸáŸ‡ ៖',
'linkstoimage-more' => 'មាន​​{{PLURAL:$1|ážáŸ†ážŽâ€‹áž—្ជាប់ទំពáŸážšâ€‹}}ច្រើន​ជាង​ $1 មក​កាន់​ឯកសារ​នáŸáŸ‡â€‹áŸ”
បញ្ជី​នáŸáŸ‡â€‹áž”ង្ហាញ​អំពី​{{PLURAL:$1|ážáŸ†ážŽâ€‹áž—្ជាប់ទំពáŸážšážŠáŸ†áž”ូង​​|ážáŸ†ážŽâ€‹áž—្ជាប់ទំពáŸážš $1ដំបូង​}}មក​កាន់​ឯកសារ​នáŸáŸ‡áž”៉ុណ្ណោះ​​។
កáŸâ€‹áž˜áž¶áž“​[[Special:WhatLinksHere/$2|បញ្ជី​ពáŸáž‰â€‹áž›áŸáž‰â€‹]]ផង​ដែរ​។',
'nolinkstoimage' => 'គ្មានទំពáŸážšážŽáž¶áž˜áž½áž™ážŠáŸ‚áž›ážáž—្ជាប់មកឯកសារនáŸáŸ‡áž‘áŸáŸ”',
'morelinkstoimage' => 'មើល [[Special:WhatLinksHere/$1|ážáŸ†ážŽáž—្ជាប់បន្ážáŸ‚មទៀáž]] ដែលážáž—្ជាប់មកកាន់ឯកសារនáŸáŸ‡áŸ”',
-'redirectstofile' => '{{PLURAL:$1|file redirects|$1 ឯកសារ​បញ្ជូនបន្áž}}ដូចážáž‘ៅនáŸáŸ‡ ážáŸ’រូវ​បញ្ជូនបន្ដទៅ​ឯកសារ​នáŸáŸ‡â€‹áŸ–',
+'linkstoimage-redirect' => '$1 (ឯកសារបញ្ជូនបន្áž) $2',
'duplicatesoffile' => '{{PLURAL:$1|file is a duplicate|$1 ឯកសារ​ជាច្បាប់ចម្លង}}ដូចážáž‘ៅ​នៃ​ឯកសារ​នáŸáŸ‡â€‹ ([[Special:FileDuplicateSearch/$2|áž–áŸážáŸŒáž˜áž¶áž“​លំអិáž]])​៖',
'sharedupload' => 'ឯកសារ​នáŸáŸ‡â€‹â€‹áž”ាន​មក​ពី $1 និង​អាច​ážáŸ’រូវ​បាន​ប្រើប្រាស់​នៅ​គម្រោង​ដទៃ​ទៀážáŸ”',
'sharedupload-desc-there' => 'ឯកសារ​នáŸáŸ‡â€‹áž˜áž€â€‹áž–ី ​$1 និង​អាច​ážáŸ’រូវ​បាន​ប្រើប្រាស់​ដោយ​គម្រោង​ផ្សáŸáž„​ៗ​ដទៃ​ទៀážâ€‹áŸ”
@@ -1902,21 +1918,22 @@ $1',
'statistics-users-active-desc' => 'អ្នក​ប្រើប្រាស់​ដែល​បាន​អនុវážáŸ’ážâ€‹ážŸáž€áž˜áŸ’មភាព​ក្នុង​{{PLURAL:$1|ážáŸ’ងៃ​}}ចុង​ក្រោយ​',
'statistics-mostpopular' => 'ទំពáŸážšážŠáŸ‚áž›ážáŸ’រូវបានមើលច្រើនបំផុáž',
-'disambiguations' => 'ទំពáŸážšáž˜áž¶áž“ចំណងជើងស្រដៀងគ្នា',
+'disambiguations' => 'ទំពáŸážšážŠáŸ‚លភ្ជាប់ទៅទំពáŸážšáž˜áž¶áž“ចំណងជើងស្រដៀងគ្នា',
'disambiguationspage' => 'Template:ស្រដៀងគ្នា',
'disambiguations-text' => "ទំពáŸážšáž‘ាំងឡាយážáž¶áž„ក្រោមនáŸáŸ‡áž—្ជាប់ទៅកាន់'''ទំពáŸážšáž–ាក្យស្រដៀងគ្នា'''។
ទំពáŸážšáž‘ាំងនáŸáŸ‡áž‚ួរážáŸ‚ភ្ជាប់ទៅប្រធានបទážáŸ’រឹមážáŸ’រូវážáŸ‚ម្ដង។<br />
ទំពáŸážšáž˜áž½áž™ážáŸ’រូវចាážáŸ‹áž‘ុកជាទំពáŸážšáž–ាក្យស្រដៀងគ្នា ប្រសិនបើវាប្រើទំពáŸážšáž‚ំរូដែលភ្ជាប់មកពី[[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'ទំពáŸážšáž”ញ្ជូនបន្ážáž‘្វáŸážŠáž„',
-'doubleredirectstext' => 'ទំពáŸážšáž“áŸáŸ‡ážšáž¶áž™ážˆáŸ’មោះទំពáŸážšážŠáŸ‚លបញ្ជូនបន្ážáž‘ៅទំពáŸážšáž”ញ្ជូនបន្ដផ្សáŸáž„ទៀážáŸ”
+'doubleredirects' => 'ទំពáŸážšáž”ញ្ជូនបន្ážáž‘្វáŸážŠáž„',
+'doubleredirectstext' => 'ទំពáŸážšáž“áŸáŸ‡ážšáž¶áž™ážˆáŸ’មោះទំពáŸážšážŠáŸ‚លបញ្ជូនបន្ážáž‘ៅទំពáŸážšáž”ញ្ជូនបន្ដផ្សáŸáž„ទៀážáŸ”
ជួរនីមួយៗមានážáŸ†áž“ភ្ជាប់ទៅកាន់ទំពáŸážšáž”ញ្ជូនបន្ážáž‘ី១និងទី២ ព្រមជាមួយទំពáŸážšáž‚ោលដៅរបស់ទំពáŸážšáž”ញ្ជូនបន្ážáž‘ី២(ដែលជាធម្មážáž¶áž“áŸáŸ‡áž€áŸáž‡áž¶áž‘ំពáŸážšáž‚ោលដៅ"áž–áž·áž"របស់ទំពáŸážšáž”ញ្ជូនបន្ážáž‘ី១ដែរ)។',
-'double-redirect-fixed-move' => '[[$1]] ážáŸ’រូវបានដកចáŸáž‰áŸ”
+'double-redirect-fixed-move' => '[[$1]] ážáŸ’រូវបានដកចáŸáž‰áŸ”
វាážáŸ’រូវបានបញ្ជូនបន្ážáž‘ៅ [[$2]]',
-'double-redirect-fixer' => 'អ្នកជួសជុលការបញ្ជូនបន្áž',
+'double-redirect-fixed-maintenance' => 'កំពុងជួសជុលការបញ្ជូនបន្ážáž•áŸ’ទួនគ្នាពី [[$1]] ទៅ [[$2]] ។',
+'double-redirect-fixer' => 'អ្នកជួសជុលការបញ្ជូនបន្áž',
'brokenredirects' => 'ការបញ្ជូនបន្ážážŠáŸ‚áž›ážáž¼áž…',
'brokenredirectstext' => 'ការបញ្ជូនបន្ដដូចážáž‘ៅនáŸáŸ‡â€‹ážŸáŸ†ážŠáŸ…ទៅ​ទំពáŸážšážŠáŸ‚លមិនមាន៖',
@@ -1994,6 +2011,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|ážáŸ’មីជាង$1}}',
'pager-older-n' => '{{PLURAL:$1|ចាស់ជាង$1}}',
'suppress' => 'អធិការ',
+'querypage-disabled' => 'ទំពáŸážšáž–ិសáŸážŸáž“áŸáŸ‡ážáŸ’រូវបានបិទមិនអោយប្រើដោយសារមូលហáŸážáž»ážŠáŸ†ážŽáž¾ážšáž€áž¶ážšáŸ”',
# Book sources
'booksources' => 'ប្រភពសៀវភៅ',
@@ -2046,9 +2064,9 @@ $1',
'sp-deletedcontributions-contribs' => 'ការរួមចំណែក​',
# Special:LinkSearch
-'linksearch' => 'ážáŸ†ážŽáž—្ជាប់ážáž¶áž„​ក្រៅ​',
+'linksearch' => 'ស្វែងរកážáŸ†ážŽáž—្ជាប់ážáž¶áž„​ក្រៅ​',
'linksearch-pat' => 'ស្វែងរកគំរូ៖',
-'linksearch-ns' => 'ប្រភáŸáž‘៖',
+'linksearch-ns' => 'លំហឈ្មោះ៖',
'linksearch-ok' => 'ស្វែងរក',
'linksearch-text' => 'កូដពិសáŸážŸážŠáž¼áž…ជា "*.wikipedia.org" អាចប្រើបាន។<br />
ប្រូážáž¼ážáž¼áž›áž”្រើបាន៖ <tt>$1</tt>',
@@ -2087,7 +2105,7 @@ $1',
'listgrouprights-helppage' => 'Help:ក្រុមនិងសិទ្ធិ',
'listgrouprights-members' => '(បញ្ជីរាយនាមសមាជិក)',
'listgrouprights-addgroup' => 'អាចបន្ážáŸ‚ម{{PLURAL:$2|ក្រុម|ក្រុម}}៖ $1',
-'listgrouprights-removegroup' => 'អាចដកចáŸáž‰ {{PLURAL:$2|group|ក្រុម}}​៖ $1',
+'listgrouprights-removegroup' => 'អាចដកចáŸáž‰ {{PLURAL:$2|ក្រុម|ក្រុម}}​៖ $1',
'listgrouprights-addgroup-all' => 'អាចបន្ážáŸ‚មគ្រប់ក្រុម',
'listgrouprights-removegroup-all' => 'អាចដកចáŸáž‰áž‚្រប់ក្រុម',
'listgrouprights-addgroup-self' => 'បន្ážáŸ‚ម{{PLURAL:$2|ក្រុម}}ទៅ​គណនី​ផ្ទាល់ážáŸ’លួន​៖ $1',
@@ -2110,6 +2128,10 @@ $1',
'noemailtext' => 'អ្នកប្រើប្រាស់នáŸáŸ‡áž˜áž·áž“បានផ្ដល់អាសយដ្ឋានអ៊ីមែលដែលមានសុពលភាពទáŸáŸ”',
'nowikiemailtitle' => 'មិនអនុញ្ញាážáž¢áŸ„យប្រើអ៊ីមែល',
'nowikiemailtext' => 'អ្នក​ប្រើប្រាស់​នáŸáŸ‡â€‹áž”ាន​ជ្រើសរើស​មិន​ទទួល​អ៊ីមែល​ពីអ្នកប្រើប្រាស់​ដទៃ​ទៀážâ€‹áŸ”',
+'emailnotarget' => 'អážáŸ’ážáž“ាមអ្នកទទួលមិនážáŸ’រឹមážáŸ’រូវឬជាអážáŸ’ážáž“ាមដែលគ្មាន។',
+'emailtarget' => 'វាយបញ្ចូលអážáŸ’ážáž“ាមអ្នកទទួល',
+'emailusername' => 'អážáŸ’ážáž“ាម៖',
+'emailusernamesubmit' => 'ដាក់ស្នើ',
'email-legend' => 'ផ្ញើអ៊ីមែលទៅអ្នកប្រើប្រាស់{{SITENAME}}ម្នាក់ទៀáž',
'emailfrom' => 'ពី៖',
'emailto' => 'ទៅកាន់៖',
@@ -2134,9 +2156,9 @@ $1',
'watchlistanontext' => 'សូម $1 ដើម្បី​មើល​ឬ​កែប្រែ​របស់​ក្នុង​បញ្ជីážáž¶áž˜ážŠáž¶áž“​របស់អ្នក។',
'watchnologin' => 'មិនទាន់កážáŸ‹ážˆáŸ’មោះចូលទáŸ',
'watchnologintext' => 'អ្នកចាំបាច់ážáŸ’រូវážáŸ‚[[Special:UserLogin|កážáŸ‹ážˆáŸ’មោះចូល]]ដើម្បីកែប្រែបញ្ជីážáž¶áž˜ážŠáž¶áž“របស់អ្នក។',
-'addedwatch' => 'បានបន្ážáŸ‚មទៅបញ្ជីážáž¶áž˜ážŠáž¶áž“',
+'addwatch' => 'បន្ážáŸ‚មទៅបញ្ជីážáž¶áž˜ážŠáž¶áž“',
'addedwatchtext' => "ទំពáŸážš \"[[:\$1]]\" ážáŸ’រូវបានដាក់បញ្ចូលទៅក្នុង​[[Special:Watchlist|បញ្ជីážáž¶áž˜ážŠáž¶áž“]]របស់លោកអ្នកហើយ ។ រាល់ការផ្លាស់ប្ដូរនៃទំពáŸážšáž“áŸáŸ‡ រួមទាំងទំពáŸážšáž–ិភាក្សារបស់វាផងដែរ នឹងážáŸ’រូវបានដាក់បញ្ចូលក្នុងបញ្ជីនៅទីនោះ។ ទំពáŸážšáž“áŸáŸ‡áž“ឹងបង្ហាញជា'''អក្សរដិáž''' នៅក្នុង [[Special:RecentChanges|បញ្ជីបំលាស់ប្ដូរážáŸ’មីៗ]] ងាយស្រួលក្នុងការស្វែងរក។ ប្រសិនបើលោកអ្នកចង់យកវាចáŸáž‰áž–ី [[Special:Watchlist|បញ្ជីážáž¶áž˜ážŠáž¶áž“]]របស់លោកអ្នក សូមចុច '''ឈប់ážáž¶áž˜ážŠáž¶áž“''' នៅលើរបារចំហៀងផ្នែកážáž¶áž„លើ។",
-'removedwatch' => 'ážáŸ’រូវបានដកចáŸáž‰áž–ីបញ្ជីážáž¶áž˜ážŠáž¶áž“',
+'removewatch' => 'ដកចáŸáž‰áž–ីបញ្ជីážáž¶áž˜ážŠáž¶áž“',
'removedwatchtext' => 'ទំពáŸážš "[[:$1]]" ážáŸ’រូវបានដកចáŸáž‰áž–ី[[Special:Watchlist|បញ្ជីážáž¶áž˜ážŠáž¶áž“]]របស់លោកអ្នកហើយ ។',
'watch' => 'ážáž¶áž˜ážŠáž¶áž“',
'watchthispage' => 'ážáž¶áž˜ážŠáž¶áž“ទំពáŸážšáž“áŸáŸ‡',
@@ -2157,8 +2179,9 @@ $1',
'watchlist-options' => 'ជម្រើសនានាក្នុងបញ្ជីážáž¶áž˜ážŠáž¶áž“',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'កំពុង​ážáž¶áž˜ážŠáž¶áž“...',
-'unwatching' => 'ឈប់​ážáž¶áž˜ážŠáž¶áž“...',
+'watching' => 'កំពុង​ážáž¶áž˜ážŠáž¶áž“...',
+'unwatching' => 'ឈប់​ážáž¶áž˜ážŠáž¶áž“...',
+'watcherrortext' => 'មានបញ្ហាពáŸáž›áž’្វើការផ្លាស់ប្ដូរការកំណážáŸ‹áž›áž¾áž”ញ្ជីážáž¶áž˜ážŠáž¶áž“របស់អ្នកសំរាប់ "$1"។',
'enotif_mailer' => 'ភ្នាក់ងារផ្ញើអ៊ីមែលផ្ដល់ដំណឹងរបស់ {{SITENAME}}',
'enotif_reset' => 'កážáŸ‹ážŸáž˜áŸ’គាល់រាល់គ្រប់ទំពáŸážšážŠáŸ‚លបានចូលមើល',
@@ -2187,18 +2210,23 @@ $NEWPAGE
អ្នកកáŸáž¢áž¶áž…ធ្វើ​ឱ្យ​ការផ្ážáž›áŸ‹ážŠáŸ†ážŽáž¹áž„​ážáŸ’រឡប់ទៅលើកទីសូន្យ​ចំពោះគ្រប់ទំពáŸážšâ€‹áž“ៃ​បញ្ជីážáž¶áž˜ážŠáž¶áž“​របស់អ្នក។
-ពីប្រពáŸáž“្ធផ្ážáž›áŸ‹ážŠáŸ†ážŽáž¹áž„ {{SITENAME}} ដáŸážŸáŸ’និទ្ធស្នាល​របស់អ្នក
+
+ពីប្រពáŸáž“្ធផ្ážáž›áŸ‹ážŠáŸ†ážŽáž¹áž„ {{SITENAME}}
--
-ដើម្បីផ្លាស់ប្ážáž¼ážšáž€áž¶ážšáž€áŸ†ážŽážáŸ‹áž”ញ្ជីážáž¶áž˜ážŠáž¶áž“របស់អ្នក, សូមចូលមើល
-{{fullurl:{{#special:Watchlist}}/edit}}
+ដើម្បីផ្លាស់ប្ážáž¼ážšáž€áž¶ážšáž€áŸ†ážŽážáŸ‹áž€áž¶ážšáž•áŸ’ដល់ដំណឹងážáž¶áž˜áž¢áŸŠáž¸áž˜áŸ‚លរបស់អ្នក, សូមទៅកាន់
+{{canonicalurl:{{#special:Preferences}}}}
+
+ដើម្បីផ្លាស់ប្ážáž¼ážšáž€áž¶ážšáž€áŸ†ážŽážáŸ‹áž”ញ្ជីážáž¶áž˜ážŠáž¶áž“របស់អ្នក, សូមទៅកាន់
+{{canonicalurl:{{#special:EditWatchlist}}}}
-ដើម្បីដកទំពáŸážšáž…áŸáž‰áž–ីបញ្ជីážáž¶áž˜ážŠáž¶áž“របស់អ្នក, សូមចូលមើល
+
+ដើម្បីដកទំពáŸážšáž…áŸáž‰áž–ីបញ្ជីážáž¶áž˜ážŠáž¶áž“របស់អ្នក, សូមទៅកាន់
$UNWATCHURL
មážáž·â€‹áž™áŸ„បល់​និងជំនួយបន្ážáŸ‚ម ៖
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'លុបទំពáŸážšáž…ោល',
@@ -2214,7 +2242,7 @@ $UNWATCHURL
សូមអ្នកអះអាងážáž¶ អ្នកពិážáž‡áž¶áž˜áž¶áž“áž…áŸážáž“ាធ្វើបែបហ្នឹង áž“áž·áž„ážáž¶áž¢áŸ’នកបានយល់ច្បាស់ពីផលវិបាកទាំងឡាយដែលអាចកើážáž˜áž¶áž“ និង​សូមអះអាងážáž¶ អ្នកធ្វើស្របážáž¶áž˜ [[{{MediaWiki:Policy-url}}|គោលការណáŸ]]។',
'actioncomplete' => 'សកម្មភាពរួចរាល់ជាស្ážáž¶áž–ážš',
'actionfailed' => 'សកម្មភាព​បរាជáŸáž™',
-'deletedtext' => '"<nowiki>$1</nowiki>"ážáŸ’រូវបានលុបចោលរួចហើយ។
+'deletedtext' => '"$1"ážáŸ’រូវបានលុបចោលរួចហើយ។
សូមមើល$2សំរាប់បញ្ជីនៃការលុបចោលនាពáŸáž›ážáŸ’មីៗ។',
'deletedarticle' => 'បានលុបចោល"[[$1]]"',
@@ -2273,7 +2301,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'áž–áŸáž›ážœáŸáž›áž¶áž•áž»ážáž€áŸ†ážŽážáŸ‹ មិនážáŸ’រឹមážáŸ’រូវ។',
'protect_expiry_old' => 'áž–áŸáž›ážœáŸáž›áž¶áž•áž»ážáž€áŸ†ážŽážáŸ‹ áž‹áž·ážáž€áŸ’នុងអážáž¸ážáž€áž¶áž›áŸ”',
'protect-unchain-permissions' => 'ដោះសោរជំរើសក្នុងការការពារលើសពីនáŸáŸ‡áž‘ៀáž',
-'protect-text' => "លោកអ្នកអាចមើលនិងផ្លាស់ប្ដូរកម្រិážáž€áž¶ážšáž–ារទីនáŸáŸ‡áž…ំពោះទំពáŸážš'''<nowiki>$1</nowiki>'''។",
+'protect-text' => "លោកអ្នកអាចមើលនិងផ្លាស់ប្ដូរកម្រិážáž€áž¶ážšáž–ារទីនáŸáŸ‡áž…ំពោះទំពáŸážš'''$1'''។",
'protect-locked-blocked' => "អ្នកមិនអាចប្ážáž¼ážšáž€áž˜áŸ’ážšáž·ážáž€áž¶ážšáž–ារពáŸáž›ážŸáŸ’ážáž·ážáž€áŸ’រោមការហាមឃាážáŸ‹áž‘áŸáŸ” áž“áŸáŸ‡áž‚ឺជាការកំណážáŸ‹ážáŸ’មីៗសម្រាប់ទំពáŸážš'''$1'''៖",
'protect-locked-dblock' => "កម្រិážâ€‹áž“ៃ​ការ​ការពារ​មិន​អាច​ផ្លាស់​ប្ដូរ​បាន​ទáŸâ€‹ ដោយសារ​មាន​ជាប់​​សោ​មូលដ្នាន​ទិន្ននáŸáž™ážŸáž€áž˜áŸ’ម​។
áž“áŸáŸ‡â€‹áž‚ឺជា​ការ​កំណážáŸ‹â€‹áž”ច្ចុប្បន្ន​សម្រាប់​ទំពáŸážšâ€‹ '''$1''' ៖",
@@ -2329,11 +2357,9 @@ $UNWATCHURL
ឃ្លាំងសំងាážáŸ‹áž¢áž¶áž…នឹងážáŸ’រូវបានបោសសម្អាážáž‡áž¶áž”្រចាំ។',
'undelete-fieldset-title' => 'ស្ážáž¶ážšáž€áŸ†ážŽáŸ‚ឡើងវិញ',
-'undeleteextrahelp' => "ដើម្បីស្ដារប្រវážáŸ’ážáž·áž‘ាំងមូលរបស់ទំពáŸážšáž“áŸáŸ‡áž¡áž¾áž„វិញ សូមទុកប្រអប់គូសទាំងអោយនៅទំនáŸážšážšáž½áž…ចុចលើប៊ូážáž»áž„
-
-ដើម្បីស្ដារទៅកំណែដែលអ្នកចង់ សូមគូសពីមុážáž€áŸ†ážŽáŸ‚នោះរួចចុចលើប៊ូážáž»áž„ '''''ស្ដារឡើងវិញ''''។
+'undeleteextrahelp' => "ដើម្បីស្ដារប្រវážáŸ’ážáž·áž‘ាំងមូលរបស់ទំពáŸážšáž“áŸáŸ‡áž¡áž¾áž„វិញ សូមទុកប្រអប់គូសទាំងអោយនៅទំនáŸážšážšáž½áž…ចុចលើប៊ូážáž»áž„ '''''{{int:undeletebtn}}'''''។
-ចុចលើប៊ូážáž»áž„ '''''ធ្វើឱ្យដូចដើមវិញ''''' ដើម្បីលុបយោបល់និងប្រអប់គូសយក។",
+ដើម្បីស្ដារប្រវážáŸ’ážáž·ážŠáŸ„យផ្នែក សូមគូសក្នុងប្រអប់ážáž¶áž„មុážáž€áŸ†ážŽáŸ‚ដែលចង់ស្ដារ រួចចុចលើប៊ូážáž»áž„ '''''{{int:undeletebtn}}'''''។",
'undeleterevisions' => '$1 {{PLURAL:$1|កំណែ​​}} បាន​ដាក់​ចូលក្នុងឃ្លាំងសំងាážáŸ‹',
'undeletehistory' => 'ប្រសិនបើអ្នកស្ដារទំពáŸážšáž“áŸáŸ‡áž¡áž¾áž„វិញ រាល់កំណែទាំងអស់នឹងážáŸ’រូវបានស្ដារឡើងវិញក្នុងប្រវážáŸ’ážáž·áŸ”
@@ -2379,9 +2405,12 @@ $1',
'undelete-show-file-submit' => 'បាទ/ចាស',
# Namespace form on various pages
-'namespace' => 'លំហឈ្មោះ:',
-'invert' => 'ក្រៅពីនោះ',
-'blanknamespace' => '(ទូទៅ)',
+'namespace' => 'លំហឈ្មោះ:',
+'invert' => 'ក្រៅពីនោះ',
+'tooltip-invert' => 'គូសធីកប្រអប់នáŸáŸ‡ážŠáž¾áž˜áŸ’បីលាក់កំណែប្រែរបស់ទំពáŸážšážŠáŸ‚លស្ážáž·ážáž“ៅក្នុងលំហឈ្មោះដែលបានជ្រើសយក (និងលំហឈ្មោះដែលទាក់ទិន ប្រសិនបើគូសធីក)',
+'namespace_association' => 'លំហឈ្មោះដែលទាក់ទិន',
+'tooltip-namespace_association' => 'គូសធីកប្រអប់នáŸáŸ‡ážŠáž¾áž˜áŸ’បីដាក់លំហឈ្មោះការពិភាក្សានិងប្រធានបទភ្ជាប់ទាក់ទិនទៅលំហឈ្មោះដែលបានជ្រើសយក',
+'blanknamespace' => '(ទូទៅ)',
# Contributions
'contributions' => 'ការរួមចំណែក​របស់អ្នកប្រើប្រាស់',
@@ -2431,18 +2460,20 @@ $1',
'whatlinkshere-filters' => 'ážáž˜áŸ’រងការពារនានា',
# Block/unblock
-'blockip' => 'ដាក់ការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់',
-'blockip-title' => 'ដាក់ការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់',
-'blockip-legend' => 'ដាក់ការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់',
-'blockiptext' => 'សូម​ប្រើប្រាស់​សំណុំ​បែបបទ​ážáž¶áž„ក្រោម​ដើម្បី​ហាមឃាážáŸ‹áž€áž¶ážšážŸážšážŸáŸážšâ€‹áž–ី​អាសយដ្ឋាន IP ឬ​ឈ្មោះ​អ្នកប្រើប្រាស់ណាមួយ​។
+'autoblockid' => 'ដាក់ការហាមឃាážáŸ‹áž‡áž¶ážŸáŸ’ážœáŸáž™áž”្រវážáŸ’ážáž·áž›áž¾ #$1',
+'block' => 'ដាក់ការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់',
+'unblock' => 'ដកការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់',
+'blockip' => 'ដាក់ការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់',
+'blockip-title' => 'ដាក់ការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់',
+'blockip-legend' => 'ដាក់ការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់',
+'blockiptext' => 'សូម​ប្រើប្រាស់​សំណុំ​បែបបទ​ážáž¶áž„ក្រោម​ដើម្បី​ហាមឃាážáŸ‹áž€áž¶ážšážŸážšážŸáŸážšâ€‹áž–ី​អាសយដ្ឋាន IP ឬ​ឈ្មោះ​អ្នកប្រើប្រាស់ណាមួយ​។
ការ​ធ្វើ​បែបនáŸáŸ‡â€‹áž‚ួរážáŸ‚​ធ្វើឡើង​ក្នុង​គោលបំណង​បង្ការ​ការប៉ុនប៉ង​បំផ្លាញ(vandalism)ដូច​ដែល​មាន​ចែង​ក្នុង[[{{MediaWiki:Policy-url}}|គោលការណáŸ]]។
សូមបំពáŸáž‰áž˜áž¼áž›áž áŸážáž»áž…្បាស់លាស់មួយážáž¶áž„ក្រោម (ឧទាហរណáŸáŸ– រាយឈ្មោះទំពáŸážšáž“ានាដែលážáŸ’រូវបានគáŸáž”ំផ្លាញ)។',
-'ipaddress' => 'អាសយដ្ឋាន IP ៖',
-'ipadressorusername' => 'អាសយដ្ឋានIP ឬអážáŸ’ážáž“ាម៖',
-'ipbexpiry' => 'រយៈពáŸáž›áž•áž»ážáž€áŸ†ážŽážáŸ‹áŸ–',
-'ipbreason' => 'មូលហáŸážáž»áŸ–',
-'ipbreasonotherlist' => 'មូលហáŸážáž»áž•áŸ’សáŸáž„ទៀáž',
-'ipbreason-dropdown' => '*មូលហáŸážáž»áž áž¶áž˜ážƒáž¶ážáŸ‹áž‡áž¶áž‘ូទៅ
+'ipadressorusername' => 'អាសយដ្ឋានIP ឬអážáŸ’ážáž“ាម៖',
+'ipbexpiry' => 'រយៈពáŸáž›áž•áž»ážáž€áŸ†ážŽážáŸ‹áŸ–',
+'ipbreason' => 'មូលហáŸážáž»áŸ–',
+'ipbreasonotherlist' => 'មូលហáŸážáž»áž•áŸ’សáŸáž„ទៀáž',
+'ipbreason-dropdown' => '*មូលហáŸážáž»áž áž¶áž˜ážƒáž¶ážáŸ‹áž‡áž¶áž‘ូទៅ
** ដាក់បញ្ចូលពáŸážáŸŒáž˜áž¶áž“មិនពិáž
** ដកážáŸ’លឹមទាំងស្រុងពីទំពáŸážšáž“ានា
** ដាក់ážáŸ†ážŽáž—្ជាប់ស្ប៉ាមážáž—្ជាប់ទៅវិបសៃážáŸážáž¶áž„ក្រៅ
@@ -2450,83 +2481,92 @@ $1',
** អំពើគំរាមកំហែងឬរំលោភបំពានសិទ្ធិមនុស្ស
** ប្រើប្រាស់គណនីច្រើនក្នុងគោលបំណងមិនល្អ
** ប្រើប្រាស់ឈ្មោះដែលមិនអាចទទួលយកបាន',
-'ipbanononly' => 'រាំងážáŸ’ទប់ážáŸ‚អ្នកប្រើប្រាស់ជាអនាមិកជនប៉ុណ្ណោះ',
-'ipbcreateaccount' => 'ហាមមិនអោយបង្កើážáž‚ណនី',
-'ipbemailban' => 'ហាមមិនអោយអ្នកប្រើប្រាស់ផ្ញើរអ៊ីមែល',
-'ipbsubmit' => 'ដាក់ការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់នáŸáŸ‡',
-'ipbother' => 'រយៈពáŸáž›áž•áŸ’សáŸáž„ទៀážáŸ–',
-'ipboptions' => '២ម៉ោង:2 hours,១ážáŸ’ងៃ:1 day,៣ážáŸ’ងៃ:3 days,១សប្ážáž¶áž áŸ:1 week,២សប្ážáž¶áž áŸ:2 weeks,១ážáŸ‚:1 month,៣ážáŸ‚:3 months,៦ážáŸ‚:6 months,១ឆ្នាំ:1 year,គ្មានកំណážáŸ‹:infinite',
-'ipbotheroption' => 'ផ្សáŸáž„ៗទៀáž',
-'ipbotherreason' => 'មូលហáŸážáž»(ផ្សáŸáž„ទៀážáž¬áž”ន្ážáŸ‚ម)៖',
-'ipbhidename' => 'លាក់​ឈ្មោះ​អ្នក​ប្រើ​ប្រាស់​ពី​កំណែ​ប្រែ​នឹង​បញ្ជី​',
-'ipbwatchuser' => 'ážáž¶áž˜ážŠáž¶áž“ទំពáŸážšáž¢áŸ’នកប្រើប្រាស់និងទំពáŸážšáž–ិភាក្សារបស់អ្នកប្រើប្រាស់នáŸáŸ‡áŸ”',
-'ipballowusertalk' => 'អនុញ្ញាážáž±áŸ’យអ្នកប្រើប្រាស់នáŸáŸ‡â€‹áž€áŸ‚ប្រែទំពáŸážšáž–ិភាក្សារបស់ážáŸ’លួន ទោះជាážáŸ’រូវបានរាំងážáŸ’ទប់កáŸážŠáŸ„áž™',
-'ipb-change-block' => 'ហាមឃាážáŸ‹áž¢áŸ’នកប្រើប្រាស់នáŸáŸ‡áž¡áž¾áž„វិញážáž¶áž˜áž€áž¶ážšáž€áŸ†ážŽážáŸ‹áž‘ាំងនáŸáŸ‡',
-'badipaddress' => 'អាសយដ្ឋានIPមិនážáŸ’រឹមážáŸ’រូវ',
-'blockipsuccesssub' => 'ដាក់ការហាមឃាážáŸ‹áž”ានសំរáŸáž…',
-'ipb-edit-dropdown' => 'កែប្រែមូលហáŸážáž»áž“ៃការហាមឃាážáŸ‹',
-'ipb-unblock-addr' => 'ដកការហាមឃាážáŸ‹áž›áž¾ $1',
-'ipb-unblock' => 'ដកការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់ ឬ អាសយដ្ឋាន IP',
-'ipb-blocklist' => 'មើលការហាមឃាážáŸ‹ážŠáŸ‚លមានហើយ',
-'ipb-blocklist-contribs' => 'ការរួមចំណែកសម្រាប់ $1',
-'unblockip' => 'ដកការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់',
-'unblockiptext' => 'សូម​ប្រើប្រាស់​ទម្រង់​បែបបទ​ážáž¶áž„ក្រោម​នáŸáŸ‡ ដើម្បី​បើក​សិទ្ឋិ​សរសáŸážšâ€‹áž¡áž¾áž„វិញ សម្រាប់​អាសយដ្ឋាន​IP​ឬ​អ្នកប្រើប្រាស់​ដែល​ážáŸ’រូវ​បាន​ហាមឃាážáŸ‹áž–ីមុន​។',
-'ipusubmit' => 'ដក​ការហាមឃាážáŸ‹áž“áŸáŸ‡â€‹áž…áŸáž‰',
-'unblocked' => '[[User:$1|$1]] ážáŸ’រូវបានដកការហាមឃាážáŸ‹áž áž¾áž™',
-'unblocked-id' => '$1 ážáŸ’រូវបានដកការហាមឃាážáŸ‹áž áž¾áž™',
-'ipblocklist' => 'អ្នកប្រើប្រាស់ដែលជាប់ការហាមឃាážáŸ‹',
-'ipblocklist-legend' => 'ស្វែងរកអ្នកប្រើប្រាស់ដែលជាប់ការហាមឃាážáŸ‹',
-'ipblocklist-username' => 'អážáŸ’ážáž“ាមឬអាសយដ្ឋានIP៖',
-'ipblocklist-sh-userblocks' => '$1 ការរាំងážáŸ’ទប់គណនី',
-'ipblocklist-sh-tempblocks' => '$1 ការរាំងážáŸ’ទប់បណ្ដោះអាសន្ន',
-'ipblocklist-sh-addressblocks' => '$1 ការរាំងážáŸ’ទប់ IP ážáŸ‚មួយ',
-'ipblocklist-submit' => 'ស្វែងរក',
-'blocklistline' => '$1, $2 បានហាមឃាážáŸ‹ $3 (រយៈពáŸáž›$4)',
-'infiniteblock' => 'ជារៀងរហូáž',
-'expiringblock' => 'áž•áž»ážáž€áŸ†ážŽážáŸ‹ នៅážáŸ’ងៃ $1 ម៉ោង $2',
-'anononlyblock' => 'សម្រាប់ážáŸ‚អនាមិកជនប៉ុណ្ណោះ',
-'noautoblockblock' => 'ការហាមឃាážáŸ‹ážŠáŸ„យស្វáŸáž™áž”្រវážáŸ’ážáž·áž˜áž·áž“ážáŸ’រូវបានអនុញ្ញាážáž‘áŸ',
-'createaccountblock' => 'ការបង្កើážáž‚ណនីážáŸ’រូវបានហាមឃាážáŸ‹',
-'emailblock' => 'អ៊ីមែលដែលážáŸ’រូវបានហាមឃាážáŸ‹',
-'blocklist-nousertalk' => 'មិនអាចកែប្រែទំពáŸážšáž–ិភាក្សាážáŸ’លួនឯងទáŸ',
-'ipblocklist-empty' => 'បញ្ជីហាមឃាážáŸ‹áž‚ឺទទáŸáŸ”',
-'ipblocklist-no-results' => 'អាសយដ្ឋានIPឬអážáŸ’ážáž“ាមដែលបានផ្ដល់មកគឺមិនស្ážáž·ážáž€áŸ’នុងបញ្ជីការហាមឃាážáŸ‹áž‘áŸáŸ”',
-'blocklink' => 'ដាក់ការហាមឃាážáŸ‹',
-'unblocklink' => 'ដកការហាមឃាážáŸ‹',
-'change-blocklink' => 'ផ្លាស់ប្ដូរការហាមឃាážáŸ‹',
-'contribslink' => 'ការរួមចំណែក',
-'autoblocker' => 'អ្នកបានážáŸ’រូវបានហាមឃាážáŸ‹ážŠáŸ„យស្វáŸáž™áž”្រវážáŸ’ážáž· ពីព្រោះអាសយដ្ឋានIPរបស់អ្នកážáŸ’រូវបានប្រើប្រាស់ដោយ"[[User:$1|$1]]"។ មូលហáŸážáž»áž›áž¾áž€áž¡áž¾áž„ចំពោះការហាមឃាážáŸ‹$1គឺ៖ "$2"',
-'blocklogpage' => 'កំណážáŸ‹áž áŸážáž»áž“ៃការហាមឃាážáŸ‹',
-'blocklogentry' => 'បានហាមឃាážáŸ‹ [[$1]]​ដោយរយៈពáŸáž›áž•áž»ážáž€áŸ†ážŽážáŸ‹$2 $3',
-'blocklogtext' => 'áž“áŸáŸ‡áž‡áž¶áž€áŸ†ážŽážáŸ‹áž áŸážáž»áž“ៃការហាមឃាážáŸ‹áž“ិងឈប់ហាមឃាážáŸ‹áž¢áŸ’នកប្រើប្រាស់។ អាសយដ្ឋានIPដែលážáŸ’រូវបានហាមឃាážáŸ‹ážŠáŸ„យស្វáŸáž™áž”្រវážáŸ’ážáž·áž˜áž·áž“ážáŸ’រូវបានដាក់ក្នុងបញ្ជីនáŸáŸ‡áž‘áŸáŸ” សូមមើល[[Special:IPBlockList|បញ្ជីនៃការហាមឃាážáŸ‹IP]]ចំពោះបញ្ជីនៃហាមឃាážáŸ‹áž“ាážáŸ’មីៗ។',
-'unblocklogentry' => 'បានឈប់ហាមឃាážáŸ‹ $1',
-'block-log-flags-anononly' => 'សម្រាប់​ážáŸ‚​អ្នកប្រើប្រាស់​អនាមិក​ប៉ុណ្ណោះ',
-'block-log-flags-nocreate' => 'ការបង្កើážáž‚ណនីážáŸ’រូវបានហាមឃាážáŸ‹',
-'block-log-flags-noautoblock' => 'ការហាមឃាážáŸ‹ážŠáŸ„យស្វáŸáž™áž”្រវážáŸ’ážáž·áž˜áž·áž“ážáŸ’រូវបានអនុញ្ញាážáž‘áŸ',
-'block-log-flags-noemail' => 'អ៊ីមែលážáŸ’រូវបានហាមឃាážáŸ‹',
-'block-log-flags-nousertalk' => 'មិនអាចកែប្រែទំពáŸážšáž–ិភាក្សាផ្ទាល់ážáŸ’លួនទáŸ',
-'block-log-flags-hiddenname' => 'លាក់អážáŸ’ážáž“ាម',
-'ipb_expiry_invalid' => 'កាលបរិច្ឆáŸáž‘áž•áž»ážáž€áŸ†ážŽážáŸ‹áž˜áž·áž“ážáŸ’រឹមážáŸ’រូវទáŸáŸ”',
-'ipb_already_blocked' => '"$1"ážáŸ’រូវបានហាមឃាážáŸ‹áž áž¾áž™',
-'ipb-needreblock' => '== ទប់ស្កាážáŸ‹â€‹ážšáž½áž…រាល់ ==
-$1 ážáŸ’រូវ​បាន​ទប់ស្កាážáŸ‹â€‹áž áž¾áž™â€‹áŸ” ážáž¾â€‹áž¢áŸ’នក​ចង់​ធ្វើការ​ផ្លាស់ប្ដូរ​ការកំណážáŸ‹â€‹?',
-'ipb-otherblocks-header' => '{{PLURAL:$1|ការហាមឃាážáŸ‹|ការហាមឃាážáŸ‹}}ផ្សáŸáž„ទៀáž',
-'ipb_cant_unblock' => 'កំហុស៖ រកមិនឃើញ ID $1 ដែលážáŸ’រូវបានហាមឃាážáŸ‹áž‘០។
+'ipb-hardblock' => 'ហាមមិនអោយអ្នកប្រើប្រាស់ដែលបានកážáŸ‹ážˆáŸ’មោះចូល មិនអោយធ្វើការកែប្រែពីអាសយដ្ឋាន IP áž“áŸáŸ‡',
+'ipbcreateaccount' => 'ហាមមិនអោយបង្កើážáž‚ណនី',
+'ipbemailban' => 'ហាមមិនអោយអ្នកប្រើប្រាស់ផ្ញើរអ៊ីមែល',
+'ipbsubmit' => 'ដាក់ការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់នáŸáŸ‡',
+'ipbother' => 'រយៈពáŸáž›áž•áŸ’សáŸáž„ទៀážáŸ–',
+'ipboptions' => '២ម៉ោង:2 hours,១ážáŸ’ងៃ:1 day,៣ážáŸ’ងៃ:3 days,១សប្ážáž¶áž áŸ:1 week,២សប្ážáž¶áž áŸ:2 weeks,១ážáŸ‚:1 month,៣ážáŸ‚:3 months,៦ážáŸ‚:6 months,១ឆ្នាំ:1 year,គ្មានកំណážáŸ‹:infinite',
+'ipbotheroption' => 'ផ្សáŸáž„ៗទៀáž',
+'ipbotherreason' => 'មូលហáŸážáž»(ផ្សáŸáž„ទៀážáž¬áž”ន្ážáŸ‚ម)៖',
+'ipbhidename' => 'លាក់​ឈ្មោះ​អ្នក​ប្រើ​ប្រាស់​ពី​កំណែ​ប្រែ​នឹង​បញ្ជី​',
+'ipbwatchuser' => 'ážáž¶áž˜ážŠáž¶áž“ទំពáŸážšáž¢áŸ’នកប្រើប្រាស់និងទំពáŸážšáž–ិភាក្សារបស់អ្នកប្រើប្រាស់នáŸáŸ‡áŸ”',
+'ipb-disableusertalk' => 'ហាមអ្នកប្រើប្រាស់នáŸáŸ‡áž˜áž·áž“អោយធ្វើការកែប្រែទំពáŸážšáž–ិភាក្សារបស់ážáŸ’លួនពáŸáž›ážáŸ’រូវបានហាមឃាážáŸ‹áŸ”',
+'ipb-change-block' => 'ហាមឃាážáŸ‹áž¢áŸ’នកប្រើប្រាស់នáŸáŸ‡áž¡áž¾áž„វិញážáž¶áž˜áž€áž¶ážšáž€áŸ†ážŽážáŸ‹áž‘ាំងនáŸáŸ‡',
+'ipb-confirm' => 'បញ្ជាក់ទទួលស្គាល់ការហាមឃាážáŸ‹',
+'badipaddress' => 'អាសយដ្ឋានIPមិនážáŸ’រឹមážáŸ’រូវ',
+'blockipsuccesssub' => 'ដាក់ការហាមឃាážáŸ‹áž”ានសំរáŸáž…',
+'ipb-edit-dropdown' => 'កែប្រែមូលហáŸážáž»áž“ៃការហាមឃាážáŸ‹',
+'ipb-unblock-addr' => 'ដកការហាមឃាážáŸ‹áž›áž¾ $1',
+'ipb-unblock' => 'ដកការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់ ឬ អាសយដ្ឋាន IP',
+'ipb-blocklist' => 'មើលការហាមឃាážáŸ‹ážŠáŸ‚លមានហើយ',
+'ipb-blocklist-contribs' => 'ការរួមចំណែកសម្រាប់ $1',
+'unblockip' => 'ដកការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់',
+'unblockiptext' => 'សូម​ប្រើប្រាស់​ទម្រង់​បែបបទ​ážáž¶áž„ក្រោម​នáŸáŸ‡ ដើម្បី​បើក​សិទ្ឋិ​សរសáŸážšâ€‹áž¡áž¾áž„វិញ សម្រាប់​អាសយដ្ឋាន​IP​ឬ​អ្នកប្រើប្រាស់​ដែល​ážáŸ’រូវ​បាន​ហាមឃាážáŸ‹áž–ីមុន​។',
+'ipusubmit' => 'ដក​ការហាមឃាážáŸ‹áž“áŸáŸ‡â€‹áž…áŸáž‰',
+'unblocked' => '[[User:$1|$1]] ážáŸ’រូវបានដកការហាមឃាážáŸ‹áž áž¾áž™',
+'unblocked-range' => '$1 ážáŸ’រូវបានដកការហាមឃាážáŸ‹áž áž¾áž™',
+'unblocked-id' => '$1 ážáŸ’រូវបានដកការហាមឃាážáŸ‹áž áž¾áž™',
+'blocklist' => 'អ្នកប្រើប្រាស់ដែលជាប់ការហាមឃាážáŸ‹',
+'ipblocklist' => 'អ្នកប្រើប្រាស់ដែលជាប់ការហាមឃាážáŸ‹',
+'ipblocklist-legend' => 'ស្វែងរកអ្នកប្រើប្រាស់ដែលជាប់ការហាមឃាážáŸ‹',
+'blocklist-userblocks' => 'លាក់ការហាមឃាážáŸ‹áž›áž¾áž‚ណនី',
+'blocklist-tempblocks' => 'លាក់ការហាមឃាážáŸ‹áž”ណ្ណោះអាសន្ន',
+'blocklist-addressblocks' => 'លាក់ការហាមឃាážáŸ‹ IP ទោល',
+'blocklist-timestamp' => 'ážáŸ’រាពáŸáž›ážœáŸáž›áž¶',
+'blocklist-target' => 'គោលដៅ',
+'blocklist-expiry' => 'រយៈពáŸáž›áž•áž»ážáž€áŸ†ážŽážáŸ‹',
+'blocklist-by' => 'អ្នកអភិបាលដែលបានដាក់ការហាមឃាážáŸ‹',
+'blocklist-params' => 'ប៉ារ៉ាមែážáŸ’ររបស់ការហាមឃាážáŸ‹',
+'blocklist-reason' => 'មូលហáŸážáž»',
+'ipblocklist-submit' => 'ស្វែងរក',
+'infiniteblock' => 'ជារៀងរហូáž',
+'expiringblock' => 'áž•áž»ážáž€áŸ†ážŽážáŸ‹ នៅážáŸ’ងៃ $1 ម៉ោង $2',
+'anononlyblock' => 'សម្រាប់ážáŸ‚អនាមិកជនប៉ុណ្ណោះ',
+'noautoblockblock' => 'ការហាមឃាážáŸ‹ážŠáŸ„យស្វáŸáž™áž”្រវážáŸ’ážáž·áž˜áž·áž“ážáŸ’រូវបានអនុញ្ញាážáž‘áŸ',
+'createaccountblock' => 'ការបង្កើážáž‚ណនីážáŸ’រូវបានហាមឃាážáŸ‹',
+'emailblock' => 'អ៊ីមែលដែលážáŸ’រូវបានហាមឃាážáŸ‹',
+'blocklist-nousertalk' => 'មិនអាចកែប្រែទំពáŸážšáž–ិភាក្សាážáŸ’លួនឯងទáŸ',
+'ipblocklist-empty' => 'បញ្ជីហាមឃាážáŸ‹áž‚ឺទទáŸáŸ”',
+'ipblocklist-no-results' => 'អាសយដ្ឋានIPឬអážáŸ’ážáž“ាមដែលបានផ្ដល់មកគឺមិនស្ážáž·ážáž€áŸ’នុងបញ្ជីការហាមឃាážáŸ‹áž‘áŸáŸ”',
+'blocklink' => 'ដាក់ការហាមឃាážáŸ‹',
+'unblocklink' => 'ដកការហាមឃាážáŸ‹',
+'change-blocklink' => 'ផ្លាស់ប្ដូរការហាមឃាážáŸ‹',
+'contribslink' => 'ការរួមចំណែក',
+'autoblocker' => 'អ្នកបានážáŸ’រូវបានហាមឃាážáŸ‹ážŠáŸ„យស្វáŸáž™áž”្រវážáŸ’ážáž· ពីព្រោះអាសយដ្ឋានIPរបស់អ្នកážáŸ’រូវបានប្រើប្រាស់ដោយ"[[User:$1|$1]]"។ មូលហáŸážáž»áž›áž¾áž€áž¡áž¾áž„ចំពោះការហាមឃាážáŸ‹$1គឺ៖ "$2"',
+'blocklogpage' => 'កំណážáŸ‹áž áŸážáž»áž“ៃការហាមឃាážáŸ‹',
+'blocklog-showlog' => 'អ្នកប្រើប្រាស់នáŸáŸ‡ážáŸ’រូវបានរាំងážáŸ’ទប់មុននáŸáŸ‡áž˜áŸ’ដងហើយ។
+កំណážáŸ‹áž áŸážáž»ážŸáŸ’ដីពីការរាំងážáŸ’ទប់ážáŸ’រូវបានផ្ដល់អោយដូចážáž¶áž„ក្រោម៖',
+'blocklogentry' => 'បានហាមឃាážáŸ‹ [[$1]]​ដោយរយៈពáŸáž›áž•áž»ážáž€áŸ†ážŽážáŸ‹$2 $3',
+'blocklogtext' => 'áž“áŸáŸ‡áž‡áž¶áž€áŸ†ážŽážáŸ‹áž áŸážáž»áž“ៃការហាមឃាážáŸ‹áž“ិងឈប់ហាមឃាážáŸ‹áž¢áŸ’នកប្រើប្រាស់។ អាសយដ្ឋានIPដែលážáŸ’រូវបានហាមឃាážáŸ‹ážŠáŸ„យស្វáŸáž™áž”្រវážáŸ’ážáž·áž˜áž·áž“ážáŸ’រូវបានដាក់ក្នុងបញ្ជីនáŸáŸ‡áž‘áŸáŸ” សូមមើល[[Special:BlockList|បញ្ជីនៃការហាមឃាážáŸ‹IP]]ចំពោះបញ្ជីនៃហាមឃាážáŸ‹áž“ាážáŸ’មីៗ។',
+'unblocklogentry' => 'បានឈប់ហាមឃាážáŸ‹ $1',
+'block-log-flags-anononly' => 'សម្រាប់​ážáŸ‚​អ្នកប្រើប្រាស់​អនាមិក​ប៉ុណ្ណោះ',
+'block-log-flags-nocreate' => 'ការបង្កើážáž‚ណនីážáŸ’រូវបានហាមឃាážáŸ‹',
+'block-log-flags-noautoblock' => 'ការហាមឃាážáŸ‹ážŠáŸ„យស្វáŸáž™áž”្រវážáŸ’ážáž·áž˜áž·áž“ážáŸ’រូវបានអនុញ្ញាážáž‘áŸ',
+'block-log-flags-noemail' => 'អ៊ីមែលážáŸ’រូវបានហាមឃាážáŸ‹',
+'block-log-flags-nousertalk' => 'មិនអាចកែប្រែទំពáŸážšáž–ិភាក្សាផ្ទាល់ážáŸ’លួនទáŸ',
+'block-log-flags-hiddenname' => 'លាក់អážáŸ’ážáž“ាម',
+'ipb_expiry_invalid' => 'កាលបរិច្ឆáŸáž‘áž•áž»ážáž€áŸ†ážŽážáŸ‹áž˜áž·áž“ážáŸ’រឹមážáŸ’រូវទáŸáŸ”',
+'ipb_already_blocked' => '"$1"ážáŸ’រូវបានហាមឃាážáŸ‹áž áž¾áž™',
+'ipb-needreblock' => '$1 ážáŸ’រូវ​បាន​ហាមឃាážáŸ‹áž áž¾áž™â€‹áŸ” ážáž¾â€‹áž¢áŸ’នក​ចង់​ធ្វើការ​ផ្លាស់ប្ដូរ​ការកំណážáŸ‹áž¬â€‹?',
+'ipb-otherblocks-header' => '{{PLURAL:$1|ការហាមឃាážáŸ‹|ការហាមឃាážáŸ‹}}ផ្សáŸáž„ទៀáž',
+'unblock-hideuser' => 'អ្នកមិនអាចដកការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់នáŸáŸ‡áž‘០ព្រោះអážáŸ’ážáž“ាមរបស់ពួកគáŸážáŸ’រូវបានលាក់។',
+'ipb_cant_unblock' => 'កំហុស៖ រកមិនឃើញ ID $1 ដែលážáŸ’រូវបានហាមឃាážáŸ‹áž‘០។
វាប្រហែលជាážáŸ’រូវបានគáŸážŠáž€áž€áž¶ážšáž áž¶áž˜ážƒáž¶ážáŸ‹áž áž¾áž™áŸ”',
-'ip_range_invalid' => 'ដែនកំណážáŸ‹ IP គ្មានសុពលភាព។',
-'blockme' => 'ហាមឃាážáŸ‹ážáŸ’ញុំ',
-'proxyblocker' => 'កម្ម​វិធី​​រាំង​ផ្ទប់​ប្រូកស៊ី (Proxy)',
-'proxyblocker-disabled' => 'មុážáž„ារនáŸáŸ‡ážáŸ’រូវបានអសកម្ម។',
-'proxyblockreason' => 'អាសយដ្ឋាន IP របស់អ្នកážáŸ’រូវបានរាំងážáŸ’ទប់ហើយ ពីព្រោះវាជាប្រុកស៊ី(proxy)ចំហ។
+'ip_range_invalid' => 'ដែនកំណážáŸ‹ IP គ្មានសុពលភាព។',
+'blockme' => 'ហាមឃាážáŸ‹ážáŸ’ញុំ',
+'proxyblocker' => 'កម្ម​វិធី​​រាំង​ផ្ទប់​ប្រូកស៊ី (Proxy)',
+'proxyblocker-disabled' => 'មុážáž„ារនáŸáŸ‡ážáŸ’រូវបានអសកម្ម។',
+'proxyblockreason' => 'អាសយដ្ឋាន IP របស់អ្នកážáŸ’រូវបានរាំងážáŸ’ទប់ហើយ ពីព្រោះវាជាប្រុកស៊ី(proxy)ចំហ។
សូមទំនាក់ទំនងអ្នកផ្ដល់សáŸážœáž¶áž¢áŸŠáž¸áž“ធឺណិážáž¬áž¢áŸ’នកបច្ចáŸáž€áž‘áŸážŸážšáž”ស់អ្នក ហើយប្រាប់ពួកគáŸáž–ីបញ្ហាសុវážáŸ’ážáž·áž—ាពដáŸážŸáŸ†ážáž¶áž“់នáŸáŸ‡áŸ”',
-'proxyblocksuccess' => 'រួចរាល់ជាស្ážáž¶áž–រ។',
-'sorbsreason' => 'អាសយដ្ឋាន IP របស់អ្នកមានឈ្មោះក្នុងបញ្ជីប្រុកស៊ី(proxy)ចំហ នៅក្នុង DNSBL របស់ {{SITENAME}}។',
-'sorbs_create_account_reason' => 'អាសយដ្ឋាន IP របស់អ្នកមានឈ្មោះក្នុងបញ្ជីប្រុកស៊ី(proxy)ចំហ នៅក្នុង DNSBL របស់ {{SITENAME}}។
+'proxyblocksuccess' => 'រួចរាល់ជាស្ážáž¶áž–រ។',
+'sorbsreason' => 'អាសយដ្ឋាន IP របស់អ្នកមានឈ្មោះក្នុងបញ្ជីប្រុកស៊ី(proxy)ចំហ នៅក្នុង DNSBL របស់ {{SITENAME}}។',
+'sorbs_create_account_reason' => 'អាសយដ្ឋាន IP របស់អ្នកមានឈ្មោះក្នុងបញ្ជីប្រុកស៊ី(proxy)ចំហ នៅក្នុង DNSBL របស់ {{SITENAME}}។
អ្នកមិនអាចបង្កើážáž‚ណនីបានទáŸ',
-'cant-block-while-blocked' => 'អ្នកមិនអាចដាក់ការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់ដទៃបានទ០ពáŸáž›áž€áŸ†áž–ុងជាប់ការហាមឃាážáŸ‹áž“ោះ។',
+'cant-block-while-blocked' => 'អ្នកមិនអាចដាក់ការហាមឃាážáŸ‹áž›áž¾áž¢áŸ’នកប្រើប្រាស់ដទៃបានទ០ពáŸáž›áž€áŸ†áž–ុងជាប់ការហាមឃាážáŸ‹áž“ោះ។',
# Developer tools
'lockdb' => 'ចាក់សោមូលដ្ឋានទិន្ននáŸáž™',
@@ -2548,6 +2588,7 @@ $1 ážáŸ’រូវ​បាន​ទប់ស្កាážáŸ‹â€‹áž áž¾áž™â€‹áŸ” á
កុំភ្លáŸáž… [[Special:UnlockDB|ដោះសោ]] បន្ទាប់ពីបញ្ជប់ការážáŸ‚ទាំរបស់អ្នក។',
'unlockdbsuccesstext' => 'មូលដ្ឋានទិន្ននáŸáž™ážáŸ’រូវបានដោះសោរួចហើយ។',
'databasenotlocked' => 'មូលដ្ឋានទិន្ននáŸáž™ មិនážáŸ’រូវបានចាក់សោ។',
+'lockedbyandtime' => '(ដោយ {{GENDER:$1|$1}} នៅ $2 នា $3)',
# Move page
'move-page' => 'ប្ážáž¼ážšáž‘ីážáž¶áŸ†áž„ $1',
@@ -2618,6 +2659,7 @@ $1 ážáŸ’រូវ​បាន​ទប់ស្កាážáŸ‹â€‹áž áž¾áž™â€‹áŸ” á
'immobile-source-page' => 'ទំពáŸážšáž“áŸáŸ‡áž˜áž·áž“អាចប្ដូរទីážáž¶áŸ†áž„បានទáŸáŸ”',
'immobile-target-page' => 'មិនអាចប្ដូរទីážáž¶áŸ†áž„ទៅកាន់ចំណងជើងគោលដៅនោះបានទáŸáŸ”',
'imagenocrossnamespace' => 'មិន​អាច​ផ្លាស់​ទី​ážáž¶áŸ†áž„​ឯកសារ​ទៅ​កាន់​លំហ​ឈ្មោះ​ដែល​មិន​មែន​ជា​ឯកសារ​',
+'nonfile-cannot-move-to-file' => 'មិនអាចប្ដូរទីážáž¶áŸ†áž„របស់ដែលមិនមែនជាឯកសារទៅលំហឈ្មោះឯកសារបានទáŸáŸ”',
'imagetypemismatch' => 'កន្ទុយរបស់ឯកសារážáŸ’មីមិនážáŸ’រូវគ្នានឹងប្រភáŸáž‘របស់វាទáŸ',
'imageinvalidfilename' => 'ឈ្មោះឯកសារគោលដៅមិនážáŸ’រឹមážáŸ’រូវ',
'fix-double-redirects' => 'បន្ទាន់សមáŸáž™áž“ូវរាល់ការបញ្ជូនបន្ážážŠáŸ‚លសំដៅទៅរកចំណងជើងដើម',
@@ -2650,6 +2692,7 @@ $1 ážáŸ’រូវ​បាន​ទប់ស្កាážáŸ‹â€‹áž áž¾áž™â€‹áŸ” á
'export-addns' => 'បន្ážáŸ‚ម',
'export-download' => 'រក្សាទុកជាឯកសារ',
'export-templates' => 'រួមទាំងទំពáŸážšáž‚ំរូ',
+'export-pagelinks' => 'រូមទាំងទំពáŸážšáž‘ាក់ទិនដល់លំដាប់៖',
# Namespace 8 related
'allmessages' => 'សាររបស់ប្រពáŸáž“្ធ',
@@ -2734,7 +2777,7 @@ $1 ážáŸ’រូវ​បាន​ទប់ស្កាážáŸ‹â€‹áž áž¾áž™â€‹áŸ” á
'tooltip-ca-undelete' => 'ស្ដារការកែប្រែនានាដែលážáŸ’រូវបានធ្វើចំពោះទំពáŸážšáž“áŸáŸ‡ មុនពáŸáž›ážŠáŸ‚លវាážáŸ’រូវបានគáŸáž›áž»áž”ចោល',
'tooltip-ca-move' => 'ប្ដូរទីážáž¶áŸ†áž„​ទំពáŸážšáž“áŸáŸ‡',
'tooltip-ca-watch' => 'បន្ážáŸ‚មទំពáŸážšáž“áŸáŸ‡â€‹áž‘ៅបញ្ជីážáž¶áž˜ážŠáž¶áž“​របស់អ្នក',
-'tooltip-ca-unwatch' => 'ដកចáŸáž‰áž‘ំពáŸážšáž“áŸáŸ‡áž–ីបញ្ជីážáž¶áž˜ážŠáž¶áž“របស់ážáŸ’ញុំ',
+'tooltip-ca-unwatch' => 'ដកទំពáŸážšáž“áŸáŸ‡áž…áŸáž‰áž–ីបញ្ជីážáž¶áž˜ážŠáž¶áž“របស់ážáŸ’ញុំ',
'tooltip-search' => 'ស្វែងរកក្នុង{{SITENAME}}',
'tooltip-search-go' => 'ទៅកាន់ទំពáŸážšážŠáŸ‚លមានឈ្មោះដូចបáŸáŸ‡áž”ិទនឹងពាក្យដែលបានបញ្ចូលនáŸáŸ‡ ប្រសិនបើមាន',
'tooltip-search-fulltext' => 'ស្វែងរកទំពáŸážšáž“ានាដែលមានពាក្យនáŸáŸ‡',
@@ -2813,12 +2856,17 @@ $1 ážáŸ’រូវ​បាន​ទប់ស្កាážáŸ‹â€‹áž áž¾áž™â€‹áŸ” á
'spambot_username' => 'ការសំអាážážŸáŸ’ប៉ាមរបស់ MediaWiki',
# Info page
-'infosubtitle' => 'áž–áŸážáŸŒáž˜áž¶áž“សម្រាប់ទំពáŸážš',
-'numedits' => 'ចំនួននៃកំណែប្រែ (អážáŸ’ážáž”áž‘)៖ $1',
-'numtalkedits' => 'ចំនួននៃកំណែប្រែ (ទំពáŸážšáž–ិភាក្សា)៖ $1',
-'numwatchers' => 'ចំនួនអ្នកážáž¶áž˜ážŠáž¶áž“ ៖ $1',
-'numauthors' => 'ចំនួនអ្នកនិពន្ឋ (អážáŸ’ážáž”áž‘): $1',
-'numtalkauthors' => 'ចំនួនអ្នកនិពន្ធ (ទំពáŸážšáž–ិភាក្សា): $1',
+'pageinfo-title' => 'áž–áŸážáŸŒáž˜áž¶áž“សម្រាប់ "$1"',
+'pageinfo-header-edits' => 'កែប្រែ',
+'pageinfo-header-watchlist' => 'បញ្ជីážáž¶áž˜ážŠáž¶áž“',
+'pageinfo-header-views' => 'បើកមើល',
+'pageinfo-subjectpage' => 'ទំពáŸážš',
+'pageinfo-talkpage' => 'ទំពáŸážšáž–ិភាក្សា',
+'pageinfo-watchers' => 'ចំនួនអ្នកážáž¶áž˜ážŠáž¶áž“',
+'pageinfo-edits' => 'ចំនួនកំណែប្រែ',
+'pageinfo-authors' => 'ចំនួនអ្នកនិពន្ធ',
+'pageinfo-views' => 'ចំនួនការបើកមើល',
+'pageinfo-viewsperedit' => 'ចំនួនការចូលមើលក្នុងមួយកំណែប្រែ',
# Skin names
'skinname-standard' => 'បុរាណ',
@@ -2831,28 +2879,6 @@ $1 ážáŸ’រូវ​បាន​ទប់ស្កាážáŸ‹â€‹áž áž¾áž™â€‹áŸ” á
'skinname-modern' => 'ទំនើប',
'skinname-vector' => 'វ៉ិចទáŸážšâ€‹â€‹',
-# Math options
-'mw_math_png' => 'ជានិច្ចការជាPNG',
-'mw_math_simple' => 'ជា HTML បើសាមញ្ញបំផុហឬ ផ្ទុយទៅវិញ ជា PNG',
-'mw_math_html' => 'ជា HTML បើអាចទៅរួច ឬ ផ្ទុយទៅវិញ ជា PNG',
-'mw_math_source' => 'ទុកឱ្យនៅជា TeX (ចំពោះឧបករណáŸážšáž¶ážœážšáž€áž¢ážáŸ’ážáž”áž‘)',
-'mw_math_modern' => 'បានផ្ážáž›áŸ‹áž¢áž“ុសាសនáŸáž…ំពោះកម្មវិធីរាវរកទំនើបៗ',
-'mw_math_mathml' => 'MathML បើអាចទៅរួច (ពិសោធ)',
-
-# Math errors
-'math_failure' => 'បរាជáŸáž™â€‹áž€áŸ’នុង​ការ​ញែក​ចáŸáž‰â€‹',
-'math_unknown_error' => 'កំហុសមិនស្គាល់',
-'math_unknown_function' => 'អនុគមនáŸâ€‹áž˜áž·áž“​ស្គាល់',
-'math_lexing_error' => 'បញ្ហាក្នុងការអានážáž½áž¢áž€áŸ’សរ',
-'math_syntax_error' => 'កំហុសពាក្យសម្ពáŸáž“្ធ',
-'math_image_error' => 'ការបម្លែងជា PNG បានបរាជáŸáž™áŸ”
-សូមពិនិážáŸ’យមើលážáž¾ latex áž“áž·áž„ dvips (ឬ dvips + gs + convert), បានដំឡើងážáŸ’រឹមážáŸ’រូវឬអážáŸ‹',
-'math_bad_tmpdir' => 'មិនអាចសរសáŸážšáž‘ៅ ឬ បង្កើážážážáž¯áž€ážŸáž¶ážšáž‚ណិážáž”ណ្ážáŸ„ះអាសន្ន',
-'math_bad_output' => 'មិនអាច សរសáŸážšáž‘ៅ ឬ បង្កើហážážáž¯áž€ážŸáž¶ážš គណិហទិន្នផល',
-'math_notexvc' => 'បាážáŸ‹áž€áž˜áŸ’មវិធី texvc។
-
-សូមមើលក្នុង math/README ដើម្បីធ្វើការកំណážáŸ‹áž›áŸ†áž¢áž·ážáŸ”',
-
# Patrolling
'markaspatrolleddiff' => 'ចំណាំážáž¶áž”ានល្បាáž',
'markaspatrolledtext' => 'ចំណាំទំពáŸážšáž“áŸáŸ‡ážáž¶áž”ានល្បាáž',
@@ -2893,7 +2919,7 @@ $1',
'file-nohires' => '<small>គ្មានភាពម៉ážáŸ‹ ដែលážáŸ’ពស់ជាង។</small>',
'svg-long-desc' => 'ឯកសារប្រភáŸáž‘SVG $1 × $2 ភីកសែល ទំហំឯកសារ៖ $3',
'show-big-image' => 'រូបភាពពáŸáž‰',
-'show-big-image-thumb' => '<small>ទំហំ​នៃការមើលជាមុននáŸáŸ‡áŸ– $1 × $2 ភីកសែល</small>',
+'show-big-image-size' => '$1 × $2 ភីកសែ',
'file-info-gif-looped' => 'រង្វិល',
'file-info-gif-frames' => '$1 {{PLURAL:$1|ផ្ទាំង|ផ្ទាំង}}',
'file-info-png-looped' => 'រង្វិល',
@@ -2928,14 +2954,20 @@ $1',
'metadata-help' => 'ឯកសារនáŸáŸ‡â€‹áž˜áž¶áž“​ពáŸážáŸŒáž˜áž¶áž“បន្ážáŸ‚ម​ដែល​ទំនងជា​បានបន្ážáŸ‚ម​ពី ឧបករណáŸážážážšáž¼áž”ឌីជីážáž› ឬ ម៉ាស៊ីនស្កáŸáž“ ដែលážáŸ’រូវបាន​ប្រើប្រាស់​ដើម្បីបង្កើហឬ ធ្វើ​វា​ជា​ឌីជីážáž›áŸ” បើសិនឯកសារ​បានážáŸ’រូវ​កែប្រែ​ពី ស្ážáž¶áž“ភាពដើម នោះសáŸáž…ក្ážáž¸áž›áŸ†áž¢áž·ážážáŸ’លះ​អាចនឹងមិនអាច​​ឆ្លុះ​បញ្ចាំង​ពáŸáž‰áž›áŸáž‰áž‘ៅឯកសារ​ដែលបានកែប្រែទáŸáŸ”',
'metadata-expand' => 'បង្ហាញភាពលំអិáž',
'metadata-collapse' => 'លាក់លំពáŸážáŸŒáž˜áž¶áž“លំអិážážŠáŸ‚លបានពន្លាáž',
-'metadata-fields' => 'វាលទិន្ននáŸáž™áž˜áŸážáž¶ EXIF ដែលបានរាយ​ក្នុងសារនáŸáŸ‡â€‹áž“ឹងážáŸ’រូវដាក់ក្នុង​ទំពáŸážšâ€‹áž–ិពណ៌នារូបភាព áž–áŸáž›â€‹ážáž¶ážšáž¶áž„​ទិន្ននáŸáž™áž˜áŸážáž¶â€‹ážáŸ’រូវបានបង្រួមážáž¼áž… ។ áž–áŸážáŸŒáž˜áž¶áž“​ដទៃទៀážâ€‹áž“ឹងážáŸ’រូវបាន បិទបាំង​ážáž¶áž˜áž›áŸ†áž“ាំដើម ។
+'metadata-fields' => 'វាលទិន្ននáŸáž™áž˜áŸážáž¶â€‹ážŠáŸ‚លបានរាយ​បញ្ជីក្នុងសារនáŸáŸ‡â€‹áž“ឹងážáŸ’រូវដាក់ក្នុង​ទំពáŸážšâ€‹áž”ង្ហាញរូបភាព áž–áŸáž›â€‹ážáž¶ážšáž¶áž„​ទិន្ននáŸáž™áž˜áŸážáž¶â€‹ážáŸ’រូវបានបង្រួមážáž¼áž… ។ áž–áŸážáŸŒáž˜áž¶áž“​ដទៃទៀážâ€‹áž“ឹងážáŸ’រូវបានបិទបាំង​ážáž¶áž˜áž›áŸ†áž“ាំដើម ។
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'ទទឹង',
@@ -2960,7 +2992,6 @@ $1',
'exif-compressedbitsperpixel' => 'កម្រិážáž áž¶áž”់ នៃរូបភាព (ប៊ិáž/ចំណុច)',
'exif-pixelydimension' => 'ទទឹងរូបភាព',
'exif-pixelxdimension' => 'កម្ពស់រូបភាព',
-'exif-makernote' => 'កំណážáŸ‹â€‹ážáŸ’រារបស់​អ្នកផលិáž',
'exif-usercomment' => 'យោបល់របស់អ្នកប្រើប្រាស់',
'exif-relatedsoundfile' => 'ឯកសារសំឡáŸáž„ពាក់ពáŸáž“្ធ',
'exif-datetimeoriginal' => 'áž–áŸáž›ážœáŸáž›áž¶áž“ិងកាលបរិច្ឆáŸáž‘បង្កើážáž‘ិន្ននáŸáž™',
@@ -2997,11 +3028,30 @@ $1',
'exif-gpsdestdistance' => 'ចម្ងាយ​ទៅ​គោលដៅ',
'exif-gpsareainformation' => 'ឈ្មោះ នៃ ážáŸ†áž”ន់ GPS',
'exif-gpsdatestamp' => 'កាលបរិច្ឆáŸáž‘ GPS',
+'exif-keywords' => 'ពាក្យគន្លឹះ​',
+'exif-worldregioncreated' => 'ážáŸ†áž”ន់នៅលើផែនដីដែលរូបនáŸáŸ‡ážáŸ’រូវបានážáž',
+'exif-countrycreated' => 'ប្រទáŸážŸážŠáŸ‚លរូបនáŸáŸ‡ážáŸ’រូវបានážáž',
+'exif-countrycodecreated' => 'áž›áŸážáž€áž¼ážŠáž”្រទáŸážŸážŠáŸ‚លរូបនáŸáŸ‡ážáŸ’រូវបានážáž',
+'exif-provinceorstatecreated' => 'ážáŸážáŸ’ážáž¬ážšážŠáŸ’ឋដែលរូបនáŸáŸ‡ážáŸ’រូវបានážáž',
+'exif-citycreated' => 'ទីក្រុងដែលរូបនáŸáŸ‡ážáŸ’រូវបានážáž',
+'exif-sublocationcreated' => 'ឈ្មោះសង្កាážáŸ‹ážšáž”ស់ទីក្រុងដែលរួបនáŸáŸ‡ážáŸ’រូវបានážáž',
+'exif-worldregiondest' => 'ážáŸ†áž”ន់លើពិភពលោកដែលážáŸ’រូវបង្ហាញ',
+'exif-countrydest' => 'ប្រទáŸážŸážŠáŸ‚áž›ážáŸ’រូវបង្ហាញ',
+'exif-countrycodedest' => 'áž›áŸážáž€áž¼ážŠážŸáŸ†ážšáž¶áž”់ប្រទáŸážŸážŠáŸ‚áž›ážáŸ’រូវបង្ហាញ',
+'exif-provinceorstatedest' => 'ážáŸážáŸ’ážáž¬ážšážŠáŸ’ឋដែលážáŸ’រូវបង្ហាញ',
+'exif-citydest' => 'ទីក្រុងដែលážáŸ’រូវបង្ហាញ',
+'exif-sublocationdest' => 'សង្កាážáŸ‹ážšáž”ស់ទីក្រុងដែលážáŸ’រូវបង្ហាញ',
'exif-objectname' => 'ចំណងជើងážáŸ’លី',
+'exif-specialinstructions' => 'ការណែនាំពិសáŸážŸ',
+'exif-credit' => 'អ្នកផ្ដល់',
+'exif-source' => 'ប្រភព',
# EXIF attributes
'exif-compression-1' => 'លែងបានបង្ហាប់',
+'exif-copyrighted-true' => 'រក្សាសិទ្ឋ',
+'exif-copyrighted-false' => 'សាធារណៈ',
+
'exif-unknowndate' => 'មិនដឹងកាលបរិច្ឆáŸáž‘',
'exif-orientation-1' => 'ធម្មážáž¶',
@@ -3089,21 +3139,67 @@ $1',
'exif-gpsspeed-m' => 'ម៉ាយលáŸáž€áŸ’នុងមួយម៉ោង',
'exif-gpsspeed-n' => 'ណុáž',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'គីឡូម៉ែážáŸ’ážš',
+'exif-gpsdestdistance-m' => 'ម៉ាយលáŸ',
+
+'exif-gpsdop-excellent' => 'ល្អណាស់ ($1)',
+'exif-gpsdop-good' => 'ល្អ ($1)',
+'exif-gpsdop-moderate' => 'ល្អបង្គួរ ($1)',
+'exif-gpsdop-fair' => 'មធ្យម ($1)',
+'exif-gpsdop-poor' => 'អន់ ($1)',
+
+'exif-objectcycle-a' => 'ážáŸ‚áž–áŸáž›áž–្រឹកប៉ុណ្ណោះ',
+'exif-objectcycle-p' => 'ážáŸ‚áž–áŸáž›áž›áŸ’ងាចប៉ុណ្ណោះ',
+'exif-objectcycle-b' => 'ទាំងពáŸáž›áž–្រឹកនិងពáŸáž›áž›áŸ’ងាច',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'ážáž¶áž„ជើងពិáž',
'exif-gpsdirection-m' => 'ážáž¶áž„ជើងម៉ាញáŸáž‘ិក',
+'exif-dc-date' => 'កាលបរិច្ឆáŸáž‘',
+'exif-dc-publisher' => 'ក្រុមហ៊ុនផ្សព្វផ្យាយ',
+'exif-dc-relation' => 'មáŸážŒáž¶áž‘ាក់ទិន',
+'exif-dc-rights' => 'កម្មសិទ្ធិបញ្ញា',
+'exif-dc-source' => 'ប្រភពមáŸážŒáž¶',
+'exif-dc-type' => 'ប្រភáŸáž‘មáŸážŒáž¶',
+
+'exif-rating-rejected' => 'ច្រានចោល',
+
+'exif-isospeedratings-overflow' => 'ធំជាង 65535',
+
+'exif-iimcategory-ace' => 'សិល្បៈ វប្បធម៌និងការកំសាន្áž',
+'exif-iimcategory-clj' => 'ឧក្រិដកម្មនិងច្បាប់',
+'exif-iimcategory-dis' => 'គ្រោះមហន្ážážšáž¶áž™áž“ិងគ្រោះážáŸ’នាក់',
+'exif-iimcategory-fin' => 'សáŸážŠáŸ’ឋកិច្ចនិងពាណិជ្ជកម្ម',
+'exif-iimcategory-edu' => 'ការអប់រំ',
+'exif-iimcategory-evn' => 'បរិស្ážáž¶áž“',
+'exif-iimcategory-hth' => 'សុážáž—ាព',
+'exif-iimcategory-hum' => 'ចំណាប់អារម្មណáŸážšáž”ស់មនុស្សជាážáž·',
+'exif-iimcategory-lab' => 'ពលកម្ម',
+'exif-iimcategory-lif' => 'ជីវភាពរស់នៅនិងការលំហែកាយ',
+'exif-iimcategory-pol' => 'នយោបាយ',
+'exif-iimcategory-rel' => 'ជំនឿនិងសាសនា',
+'exif-iimcategory-sci' => 'វិទ្យាសាស្ážáŸ’រនិងបច្ចáŸáž€ážœáž·áž‘្យា',
+'exif-iimcategory-soi' => 'បញ្ហាសង្គម',
+'exif-iimcategory-spo' => 'កីឡា',
+'exif-iimcategory-war' => 'សង្គ្រាម ជំលោះនិងអស្ážáŸážšáž—ាព',
+'exif-iimcategory-wea' => 'អាកាសធាážáž»',
+
+'exif-urgency-normal' => 'ធម្មážáž¶ ($1)',
+'exif-urgency-low' => 'ទាប ($1)',
+'exif-urgency-high' => 'ážáŸ’ពស់ ($1)',
+'exif-urgency-other' => 'ážáž¶áž˜áž€áž¶ážšáž€áŸ†ážŽážáŸ‹ážšáž”ស់អ្នកប្រើប្រាស់ ($1)',
+
# External editor support
'edit-externally' => 'កែប្រែ​ឯកសារ​នáŸáŸ‡ážŠáŸ„យប្រើប្រាស់​កម្មវិធី​ážáž¶áž„ក្រៅ',
-'edit-externally-help' => '(សូមមើល[http://www.mediawiki.org/wiki/Manual:External_editors ការណែនាំ​អំពី​ការ​ប្រើប្រាស់​]សម្រាប់​​ពáŸážáŸŒáž˜áž¶áž“​បន្ážáŸ‚ម)',
+'edit-externally-help' => '(សូមមើល[//www.mediawiki.org/wiki/Manual:External_editors ការណែនាំ​អំពី​ការ​ប្រើប្រាស់​]សម្រាប់​​ពáŸážáŸŒáž˜áž¶áž“​បន្ážáŸ‚ម)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ទាំងអស់',
-'imagelistall' => 'ទាំងអស់',
-'watchlistall2' => 'ទាំងអស់',
-'namespacesall' => 'ទាំងអស់',
-'monthsall' => 'ទាំងអស់',
-'limitall' => 'ទាំងអស់​',
+'watchlistall2' => 'ទាំងអស់',
+'namespacesall' => 'ទាំងអស់',
+'monthsall' => 'ទាំងអស់',
+'limitall' => 'ទាំងអស់​',
# E-mail address confirmation
'confirmemail' => 'បញ្ជាក់ទទួលស្គាល់អាសយដ្ឋានអ៊ីមែល',
@@ -3158,18 +3254,27 @@ $1',
'trackbackdeleteok' => 'ážáž¶áž˜ážŠáž¶áž“​ážáŸ’រឡប់​វិញ​ (Trackback)ážáŸ’រូវ​បាន​លុប​ដោយ​ជោគជáŸáž™â€‹áŸ”​',
# Delete conflict
-'deletedwhileediting' => "'''ប្រយáŸážáŸ’áž“''' ៖ ទំពáŸážšáž“áŸáŸ‡áž”ានážáŸ’រូវលុបចោល បន្ទាប់ពីអ្នកបានចាប់ផ្ážáž¾áž˜áž€áŸ‚ប្រែ!",
-'confirmrecreate' => "អ្នកប្រើប្រាស់ [[User:$1|$1]] ([[User talk:$1|talk]]) បានលុបទំពáŸážšáž“áŸáŸ‡áž…ោលបន្ទាប់ពីអ្នកចាប់ផ្ដើមកែប្រែវា ដោយមានហáŸážáž»áž•áž›ážáž¶áŸ–
+'deletedwhileediting' => "'''ប្រយáŸážáŸ’áž“''' ៖ ទំពáŸážšáž“áŸáŸ‡áž”ានážáŸ’រូវលុបចោល បន្ទាប់ពីអ្នកបានចាប់ផ្ážáž¾áž˜áž€áŸ‚ប្រែ!",
+'confirmrecreate' => "អ្នកប្រើប្រាស់ [[User:$1|$1]] ([[User talk:$1|talk]]) បានលុបទំពáŸážšáž“áŸáŸ‡áž…ោលបន្ទាប់ពីអ្នកចាប់ផ្ដើមកែប្រែវា ដោយមានហáŸážáž»áž•áž›ážáž¶áŸ–
៖ ''$2''
សូមអះអាងážáž¶áž¢áŸ’នកពិážáž‡áž¶áž…ង់បង្កើážáž‘ំពáŸážšáž“áŸáŸ‡áž¡áž¾áž„វិញពិážáž”្រាកដមែន។",
-'recreate' => 'បង្កើážáž¡áž¾áž„វិញ',
+'confirmrecreate-noreason' => 'អ្នកប្រើប្រាស់ [[User:$1|$1]] ([[User talk:$1|talk]]) បានលុបទំពáŸážšáž“áŸáŸ‡áž…ោលបន្ទាប់ពីអ្នកចាប់ផ្ដើមកែប្រែវា។ សូមអះអាងážáž¶áž¢áŸ’នកពិážáž‡áž¶áž…ង់បង្កើážáž‘ំពáŸážšáž“áŸáŸ‡áž¡áž¾áž„វិញមែន។
+
+សូមអះអាងážáž¶áž¢áŸ’នកពិážáž‡áž¶áž…ង់បង្កើážáž‘ំពáŸážšáž“áŸáŸ‡áž¡áž¾áž„វិញពិážáž”្រាកដមែន។',
+'recreate' => 'បង្កើážáž¡áž¾áž„វិញ',
# action=purge
'confirm_purge_button' => 'យល់ព្រម',
'confirm-purge-top' => 'សំអាážážƒáŸ’លាំងសំងាážáŸ‹(cache)នៃទំពáŸážšáž“áŸáŸ‡?',
+# action=watch/unwatch
+'confirm-watch-button' => 'យល់ព្រម',
+'confirm-watch-top' => 'បន្ážáŸ‚មទំពáŸážšáž“áŸáŸ‡â€‹áž‘ៅក្នុងបញ្ជីážáž¶áž˜ážŠáž¶áž“​របស់អ្នកឬ?',
+'confirm-unwatch-button' => 'យល់ព្រម',
+'confirm-unwatch-top' => 'ដកទំពáŸážšáž“áŸáŸ‡áž…áŸáž‰áž–ីបញ្ជីážáž¶áž˜ážŠáž¶áž“របស់ážáŸ’ញុំឬ?',
+
# Multipage image navigation
'imgmultipageprev' => '↠ទំពáŸážšáž˜áž»áž“',
'imgmultipagenext' => 'ទំពáŸážšáž”ន្ទាប់ →',
@@ -3221,7 +3326,7 @@ $1',
ដើម្បីដកចáŸáž‰áž“ូវចំណងជើងណាមួយ សូមចុច"{{int:Watchlistedit-normal-submit}}"។
-អ្នកអាច[[Special:Watchlist/raw|កែប្រែបញ្ជីឆៅ]]ផងដែរ។',
+អ្នកអាច[[Special:EditWatchlist/raw|កែប្រែបញ្ជីឆៅ]]ផងដែរ។',
'watchlistedit-normal-submit' => 'ដកចំណងជើងចáŸáž‰',
'watchlistedit-normal-done' => '{{PLURAL:$1|១ចំណងជើង|$1ចំណងជើង}}ážáŸ’រូវបានដកចáŸáž‰áž–ីបញ្ជីážáž¶áž˜ážŠáž¶áž“របស់អ្នក៖',
'watchlistedit-raw-title' => 'កែប្រែបញ្ជីážáž¶áž˜ážŠáž¶áž“ឆៅ',
@@ -3229,7 +3334,7 @@ $1',
'watchlistedit-raw-explain' => 'ចំណងជើង​នានា លើ​បញ្ជីážáž¶áž˜ážŠáž¶áž“​របស់អ្នក ážáŸ’រូវបាន​បង្ហាញážáž¶áž„ក្រោម។ អ្នកអាចážáŸ’រូវបាន​កែប្រែ ដោយបន្ážáŸ‚ម​ទៅ ឬ ដកចáŸáž‰ ចំណងជើងទាំងនោះពី​បញ្ជីបាន។
ក្នុងមួយជួរមានចំណងជើងមួយ។
áž–áŸáž›ážšáž½áž…រាល់ សូមចុច "{{int:Watchlistedit-raw-submit}}"។
-អ្នក​អាចផងដែរ [[Special:Watchlist/edit|ប្រើប្រាស់​ឧបករណáŸáž€áŸ‚ប្រែ​គំរូ]] ។',
+អ្នក​អាចផងដែរ [[Special:EditWatchlist|ប្រើប្រាស់​ឧបករណáŸáž€áŸ‚ប្រែ​គំរូ]] ។',
'watchlistedit-raw-titles' => 'ចំណងជើង៖',
'watchlistedit-raw-submit' => 'បន្ទាន់សមáŸáž™áž”ញ្ជីážáž¶áž˜ážŠáž¶áž“',
'watchlistedit-raw-done' => 'បញ្ជីážáž¶áž˜ážŠáž¶áž“របស់អ្នកážáŸ’រូវបានធ្វើឱ្យទាន់សមáŸáž™áž áž¾áž™áŸ”',
@@ -3245,24 +3350,24 @@ $1',
'unknown_extension_tag' => 'ស្លាក​នៃផ្នែកបន្ážáŸ‚ម "$1" មិនស្គាល់',
# Special:Version
-'version' => 'កំណែ',
-'version-extensions' => 'ផ្នែកបន្ážáŸ‚មដែលបានដំឡើង',
-'version-specialpages' => 'ទំពáŸážšáž–ិសáŸážŸáŸ—',
-'version-variables' => 'អážáŸážš',
-'version-skins' => 'សំបក',
-'version-other' => 'ផ្សáŸáž„',
-'version-mediahandlers' => 'កម្មវិធី​បើក​មáŸážŒáž¶â€‹ (Media handlers)',
-'version-extension-functions' => 'មុážáž„ារផ្នែកបន្ážáŸ‚ម',
-'version-skin-extension-functions' => 'មុážáž„ារផ្នែកបន្ážáŸ‚មនៃសំបក',
-'version-hook-name' => 'ឈ្មោះ​ Hook',
-'version-hook-subscribedby' => 'បានជាវ ជាប្រចាំ ដោយ',
-'version-version' => '(កំណែ $1)',
-'version-license' => 'អាជ្ញាបáŸážŽáŸ’ណ',
-'version-poweredby-credits' => "វិគីនáŸáŸ‡áž§áž”ážáŸ’ážáž˜áŸ’ភដោយ '''[http://www.mediawiki.org/ មáŸážŒáž¶ážœáž·áž‚ី]''', រក្សាសិទ្ធ © ២០០១-$1 $2។",
-'version-poweredby-others' => 'អ្នកដទៃទៀáž',
-'version-software' => 'ផ្នែកទន់​ដែល​បានដំឡើង',
-'version-software-product' => 'ផលិážáž•áž›',
-'version-software-version' => 'កំណែ',
+'version' => 'កំណែ',
+'version-extensions' => 'ផ្នែកបន្ážáŸ‚មដែលបានដំឡើង',
+'version-specialpages' => 'ទំពáŸážšáž–ិសáŸážŸáŸ—',
+'version-variables' => 'អážáŸážš',
+'version-antispam' => 'ការបង្ការស្ប៉ាម',
+'version-skins' => 'សំបក',
+'version-other' => 'ផ្សáŸáž„',
+'version-mediahandlers' => 'កម្មវិធី​បើក​មáŸážŒáž¶â€‹ (Media handlers)',
+'version-extension-functions' => 'មុážáž„ារផ្នែកបន្ážáŸ‚ម',
+'version-hook-name' => 'ឈ្មោះ​ Hook',
+'version-hook-subscribedby' => 'បានជាវ ជាប្រចាំ ដោយ',
+'version-version' => '(កំណែ $1)',
+'version-license' => 'អាជ្ញាបáŸážŽáŸ’ណ',
+'version-poweredby-credits' => "វិគីនáŸáŸ‡áž§áž”ážáŸ’ážáž˜áŸ’ភដោយ '''[//www.mediawiki.org/ មáŸážŒáž¶ážœáž·áž‚ី]''', រក្សាសិទ្ធ © ២០០១-$1 $2។",
+'version-poweredby-others' => 'អ្នកដទៃទៀáž',
+'version-software' => 'ផ្នែកទន់​ដែល​បានដំឡើង',
+'version-software-product' => 'ផលិážáž•áž›',
+'version-software-version' => 'កំណែ',
# Special:FilePath
'filepath' => 'ផ្លូវនៃឯកសារ',
@@ -3274,19 +3379,22 @@ $1',
បញ្ចូល ឈ្មោះឯកសារ ដោយគ្មានការភ្ជាប់ "{{ns:file}}:" នៅពីមុážážœáž¶ ។',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'ស្វែងរកឯកសារដូចគ្នាបáŸáŸ‡áž”áž·áž‘',
-'fileduplicatesearch-legend' => 'ស្វែងរកឯកសារដូចគ្នាបáŸáŸ‡áž”áž·áž‘',
-'fileduplicatesearch-filename' => 'ឈ្មោះឯកសារ៖',
-'fileduplicatesearch-submit' => 'ស្វែងរក',
-'fileduplicatesearch-info' => '$1 × $2 ភីកសែល<br />ទំហំឯកសារ:$3<br />ប្រភáŸáž‘MIME:$4',
-'fileduplicatesearch-result-1' => 'គ្មានឯកសារដែលដូចគ្នាបáŸáŸ‡áž”ិទទៅនឹងឯកសារ "$1" áž‘áŸáŸ”',
-'fileduplicatesearch-result-n' => 'មាន {{PLURAL:$2|1 ឯកសារដូចគ្នាបáŸáŸ‡áž”áž·áž‘|$2 ឯកសារដូចគ្នាបáŸáŸ‡áž”áž·áž‘}}ទៅនឹងឯកសារ "$1"។',
+'fileduplicatesearch' => 'ស្វែងរកឯកសារដូចគ្នាបáŸáŸ‡áž”áž·áž‘',
+'fileduplicatesearch-legend' => 'ស្វែងរកឯកសារដូចគ្នាបáŸáŸ‡áž”áž·áž‘',
+'fileduplicatesearch-filename' => 'ឈ្មោះឯកសារ៖',
+'fileduplicatesearch-submit' => 'ស្វែងរក',
+'fileduplicatesearch-info' => '$1 × $2 ភីកសែល<br />ទំហំឯកសារ:$3<br />ប្រភáŸáž‘MIME:$4',
+'fileduplicatesearch-result-1' => 'គ្មានឯកសារដែលដូចគ្នាបáŸáŸ‡áž”ិទទៅនឹងឯកសារ "$1" áž‘áŸáŸ”',
+'fileduplicatesearch-result-n' => 'មាន {{PLURAL:$2|1 ឯកសារដូចគ្នាបáŸáŸ‡áž”áž·áž‘|$2 ឯកសារដូចគ្នាបáŸáŸ‡áž”áž·áž‘}}ទៅនឹងឯកសារ "$1"។',
+'fileduplicatesearch-noresults' => 'រកមិនឃើញឯកសារដែលមានឈ្មោះ "$1" áž‘áŸáŸ”',
# Special:SpecialPages
'specialpages' => 'ទំពáŸážšâ€‹áž–ិសáŸážŸâ€‹áŸ—',
'specialpages-note' => '----
-* ទំពáŸážšáž–ិសáŸážŸáŸ—ធម្មážáž¶ážŠáŸ‚លអ្នកប្រើប្រាស់គ្រប់រូបអាចប្រើប្រាស់បាន។
-* <strong class="mw-specialpagerestricted">ទំពáŸážšáž–ិសáŸážŸáŸ—ដែលážáŸ’រូវបានដាក់កំហិហអ្នកប្រើប្រាស់ធម្មážáž¶áž˜áž·áž“អាចប្រើប្រាស់បាន។</strong>',
+* ទំពáŸážšáž–ិសáŸážŸáŸ—ធម្មážáž¶áŸ”
+* <span class="mw-specialpagerestricted">ទំពáŸážšáž–ិសáŸážŸáŸ—ដែលមានការដាក់កំហិážáŸ”</span>
+
+* <span class="mw-specialpagecached">ទំពáŸážšáž–ិសáŸážŸáŸ—សំរាប់រក្សាទុក។</span>',
'specialpages-group-maintenance' => 'របាយការណáŸáž“ានាអំពីážáŸ†áž áŸ‚ទាំ',
'specialpages-group-other' => 'ទំពáŸážšáž–ិសáŸážŸáŸ—ផ្សáŸáž„ៗទៀáž',
'specialpages-group-login' => 'កážáŸ‹ážˆáŸ’មោះចូល / ចុះឈ្មោះ',
diff --git a/languages/messages/MessagesKn.php b/languages/messages/MessagesKn.php
index 565f6354..4b09a200 100644
--- a/languages/messages/MessagesKn.php
+++ b/languages/messages/MessagesKn.php
@@ -15,6 +15,7 @@
* @author NamwikiTL
* @author Nayvik
* @author Omshivaprakash
+ * @author Shankar
* @author Shushruth
* @author The Evil IP address
* @author לערי ריינה×רט
@@ -173,15 +174,6 @@ $messages = array(
'category-file-count-limited' => 'ಪà³à²°à²¸à²•à³à²¤ ವರà³à²—ದಲà³à²²à²¿ ಈ ಕೆಳಗಿನ {{PLURAL:$1|ಫೈಲೠಇದೆ|$1 ಫೈಲà³à²—ಳೠಇವೆ}}.',
'listingcontinuesabbrev' => 'ಮà³à²‚ದà³.',
-'mainpagetext' => "'''ವಿಕಿ ತಂತà³à²°à²¾à²‚ಶವನà³à²¨à³ ಯಶಸà³à²µà²¿à²¯à²¾à²—ಿ ಅನà³à²¸à³à²¥à²¾à²ªà²¿à²¸à²²à²¾à²¯à²¿à²¤à³.'''",
-'mainpagedocfooter' => 'ವಿಕಿ ತಂತà³à²°à²¾à²‚ಶವನà³à²¨à³ ಬಳಸà³à²µ ಬಗà³à²—ೆ ಮಾಹಿತಿಗೆ [http://meta.wikimedia.org/wiki/Help:Contents ಬಳಕೆದಾರರಿಗೆ ನಿರà³à²¦à³‡à²¶à²¨ ಪà³à²Ÿ] ನೋಡಿ.
-
-== ಪà³à²°à²¾à²°à²‚ಭಿಸà³à²µà³à²¦à³ ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ ಮೀಡಿಯವಿಕಿ FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
-
'about' => 'ನಮà³à²® ಬಗà³à²—ೆ',
'article' => 'ಲೇಖನ ಪà³à²Ÿ',
'newwindow' => '(ಹೊಸ ಕಿಟಕಿಯನà³à²¨à³ ತೆರೆಯà³à²¤à³à²¤à²¦à³†)',
@@ -229,7 +221,6 @@ $messages = array(
'history' => 'ಪà³à²Ÿà²¦ ಚರಿತà³à²°à³†',
'history_short' => 'ಇತಿಹಾಸ',
'updatedmarker' => 'ನನà³à²¨ ಕೊನೆಯ ವೀಕà³à²·à²£à³†à²¯ ನಂತರ ಬದಲಾಗಿರà³à²µà²µà³',
-'info_short' => 'ಮಾಹಿತಿ',
'printableversion' => 'ಪà³à²°à²¿à²‚ಟೠಆವೃತà³à²¤à²¿',
'permalink' => 'ಸà³à²¥à²¿à²° ಸಂಪರà³à²•',
'print' => 'ಮà³à²¦à³à²°à²¿à²¸à³',
@@ -402,11 +393,10 @@ MySQL ಹಿಂದಿರà³à²—ಿಸಿದ ದೋಷ "$3: $4"',
'protectedinterface' => 'ಈ ಪà³à²Ÿà²µà³ ತಂತà³à²°à²¾à²‚ಶವೠಉಪಯೋಗಿಸà³à²µ ಪಠà³à²¯à²µà²¨à³à²¨à³ ದೊರಕಿಸà³à²¤à³à²¤à²¦à³†. ದà³à²°à³à²ªà²¯à³‹à²— ಆಗದಿರಲೆಂದೠಇದನà³à²¨à³ ಸಂರಕà³à²·à²¿à²¸à²²à²¾à²—ಿದೆ.',
'editinginterface' => "'''ಎಚà³à²šà²°à²¿à²•à³†:''' ನೀವೠತಂತà³à²°à²¾à²‚ಶವೠತಾಣವನà³à²¨à³ ಪà³à²°à²¦à²°à³à²¶à²¿à²¸à²²à³ ಉಪಯೋಗಿಸà³à²µ ಪಠà³à²¯à²µà²¨à³à²¨à³ ಹೊಂದಿರà³à²µ ಪà³à²Ÿà²µà³Šà²‚ದನà³à²¨à³ ಸಂಪಾದಿಸà³à²¤à³à²¤à²¿à²°à³à²µà²¿à²°à²¿.
ಈ ಪà³à²Ÿà²¦à²²à³à²²à²¾à²—à³à²µ ಬದಲಾವಣೆಗಳೠಇತರ ಬಳಕೆದಾರರಿಗೆ ತಾಣವೠಕಾಣà³à²µ ರೀತಿಯನà³à²¨à³ ಬದಲಾಯಿಸà³à²¤à³à²¤à²¦à³†.
-ಅನà³à²µà²¾à²¦à²—ಳನà³à²¨à³ ಮಾಡà³à²¤à³à²¤à²¿à²¦à³à²¦à²°à³†, ದಯವಿಟà³à²Ÿà³ ಮೀಡಿಯವಿಕಿಯ ಪà³à²°à²¾à²‚ತೀಯತೆ ಯೋಜನೆ [http://translatewiki.net/wiki/Main_Page?setlang=kn ಬೀಟವಿಕಿಯಲà³à²²à²¿] ಮಾಡಿ.",
+ಅನà³à²µà²¾à²¦à²—ಳನà³à²¨à³ ಮಾಡà³à²¤à³à²¤à²¿à²¦à³à²¦à²°à³†, ದಯವಿಟà³à²Ÿà³ ಮೀಡಿಯವಿಕಿಯ ಪà³à²°à²¾à²‚ತೀಯತೆ ಯೋಜನೆ [//translatewiki.net/wiki/Main_Page?setlang=kn ಬೀಟವಿಕಿಯಲà³à²²à²¿] ಮಾಡಿ.",
'cascadeprotected' => 'ಈ ಪà³à²Ÿà²µà³ ಸಂಪಾದನೆ ಮಾಡಲಾಗದಂತೆ ಸಂರಕà³à²·à²¿à²¸à²²à²¾à²—ಿದೆ. ಇದಕà³à²•à³† ಕಾರಣ ಈ ಪà³à²Ÿà²µà²¨à³à²¨à³ ಈ ಕೆಳಗಿನ ತಡಸಲà³-ಸಂರಕà³à²·à²£à³† ಅಳವಡಿಸಲಾದ {{PLURAL:$1|ಪà³à²Ÿà²¦à²²à³à²²à²¿|ಪà³à²Ÿà²—ಳಲà³à²²à²¿}} ಉಪಯೋಗಿಸಲಾಗಿದೆ:
$2',
'namespaceprotected' => "ನಿಮಗೆ '''$1''' ಪà³à²Ÿà²ªà³à²°à²¬à³‡à²§à²•à³à²•à³† ಸೇರಿರà³à²µ ಪà³à²Ÿà²—ಳನà³à²¨à³ ಸಂಪಾದಿಸà³à²µ ಅನà³à²®à²¤à²¿ ಇಲà³à²².",
-'customcssjsprotected' => 'ಈ ಪà³à²Ÿà²¦à²²à³à²²à²¿ ಬೇರೆ ಬಳಕೆದಾರರ ವಯಕà³à²¤à²¿à²• ನಿದರà³à²¶à²¨à²—ಳೠಇರà³à²µà³à²¦à²°à²¿à²‚ದ ನಿಮಗೆ ಈ ಪà³à²Ÿà²µà²¨à³à²¨à³ ಸಂಪಾದಿಸà³à²µ ಅನà³à²®à²¤à²¿ ಇಲà³à²².',
'ns-specialprotected' => 'ವಿಶೇಷ ಪà³à²Ÿà²—ಳನà³à²¨à³ ಸಂಪಾದಿಸಲೠಆಗà³à²µà³à²¦à²¿à²²à³à²².',
'titleprotected' => "ಈ ಹೆಸರಿನ ಪà³à²Ÿà²µà²¨à³à²¨à³ ಸೃಷà³à²Ÿà²¿à²¸à²²à²¾à²—ದಂತೆ [[User:$1|$1]] ಅವರೠಸಂರಕà³à²·à²¿à²¸à²¿à²¦à³à²¦à²¾à²°à³†.
ಸಂರಕà³à²·à²£à³†à²—ೆ ನೀಡಿರà³à²µ ಕಾರಣ: ''$2''.",
@@ -456,7 +446,7 @@ $2',
'loginsuccess' => 'ನೀವೠಈಗ "$1" ಆಗಿ ವಿಕಿಪೀಡಿಯಕà³à²•à³† ಲಾಗಿನೠಆಗಿದà³à²¦à³€à²°à²¿.',
'nosuchuser' => '"$1" ಹೆಸರಿನ ಯಾವ ಸದಸà³à²¯à²°à³‚ ಇಲà³à²².
ಕಾಗà³à²£à²¿à²¤à²µà²¨à³à²¨à³ ಪರೀಕà³à²·à²¿à²¸à²¿, ಅಥವಾ [[Special:UserLogin/signup|ಹೊಸ ಸದಸà³à²¯à²¤à³à²µ ಖಾತೆಯನà³à²¨à³ ಸೃಷà³à²Ÿà²¿à²¸à²¿]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" ಹೆಸರಿನ ಸದಸà³à²¯à²°à³ ಯಾರೂ ಇಲà³à²².
+'nosuchusershort' => '"$1" ಹೆಸರಿನ ಸದಸà³à²¯à²°à³ ಯಾರೂ ಇಲà³à²².
ಹೆಸರಲà³à²²à²¿ ಕಾಗà³à²£à²¿à²¤ ತಪà³à²ªà²¿à²¦à³†à²¯à³† ಎಂದೠಪರೀಕà³à²·à²¿à²¸à²¿.',
'nouserspecified' => 'ನೀವೠಒಂದೠಸದಸà³à²¯à²¤à³à²µà²¦ ಹೆಸರನà³à²¨à³ ಸೂಚಿಸಬೇಕà³.',
'wrongpassword' => 'ತಪà³à²ªà³ ಪà³à²°à²µà³‡à²¶ ಪದ ನೀಡಿರà³à²µà²¿à²°à²¿. ಮತà³à²¤à³Šà²®à³à²®à³† ಪà³à²°à²¯à²¤à³à²¨à²¿à²¸à²¿.',
@@ -496,7 +486,7 @@ $2',
ಆ ಖಾತೆ ತಪà³à²ªà²¾à²—ಿ ತೆಗೆದಿದà³à²¦à²²à³à²²à²¿, ಈ ಸಂದೇಶವನà³à²¨à³ ನೀವೠಅಲಕà³à²·à²¿à²¸à²¬à²¹à³à²¦à³.',
'loginlanguagelabel' => 'ಭಾಷೆ: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ಪà³à²°à²µà³‡à²¶à²ªà²¦à²µà²¨à³à²¨à³ ಬದಲಾಯಿಸಿ',
'resetpass_announce' => 'ನೀವೠತಾತà³à²•à²¾à²²à²¿à²• ಇ-ಅಂಚೆ ಕೋಡೠಅನà³à²¨à³ ಉಪಯೋಗಿಸಿ ಲಾಗೠಇನೠಆಗಿರà³à²µà²¿à²°à²¿.
ಲಾಗೠಇನೠಪೂರà³à²£à²—ೊಳಿಸಲೠನೀವಿಲà³à²² ಹೊಸ ಪà³à²°à²µà³‡à²¶à²ªà²¦ ನೀಡಬೇಕà³:',
@@ -522,8 +512,6 @@ $2',
'extlink_tip' => 'ಬಾಹà³à²¯ ಸಂಪರà³à²• (http:// ಇಂದ ಶà³à²°à³ ಮಾಡಿ)',
'headline_sample' => 'ಶಿರೋಲೇಖ',
'headline_tip' => '೨ನೇ ಮಟà³à²Ÿà²¦ ತಲೆಬರಹ',
-'math_sample' => 'ಇಲà³à²²à²¿ ಸೂತà³à²°à²µà²¨à³à²¨à³ ಅಳವಡಿಸಿ',
-'math_tip' => 'ಗಣಿತ ಸೂತà³à²° (LaTeX)',
'nowiki_sample' => 'ಈ ಜಾಗದಲà³à²²à²¿ ಬರೆಯಲà³à²ªà²Ÿà³à²Ÿà²¦à³à²¦à³ ವಿಕೀಕರಣ ಆಗà³à²µà³à²¦à²¿à²²à³à²²',
'nowiki_tip' => 'ವಿಕಿ ರಚನಕà³à²°à²®à²µà²¨à³à²¨à³ ಅಲಕà³à²·à²¿à²¸à³',
'image_tip' => 'ಅಳವಡಿಸಲà³à²ªà²Ÿà³à²Ÿ ಫೈಲà³',
@@ -603,7 +591,7 @@ $2',
ನೀವೠಇತರ ಪà³à²Ÿà²—ಳಲà³à²²à²¿ [[Special:Search/{{PAGENAME}}|ಈ ಹೆಸರನà³à²¨à³ ಹà³à²¡à³à²•à²¬à²¹à³à²¦à³]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ಸಂಬಂಧಿತ ದಾಖಲೆಗಳನà³à²¨à³ ಹà³à²¡à³à²•à²¬à²¹à³à²¦à³],
ಅಥವ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ಈ ಪà³à²Ÿà²µà²¨à³à²¨à³ ಸಂಪಾದಿಸಬಹà³à²¦à³]</span>.',
-'userpage-userdoesnotexist' => 'ಬಳಕೆದಾರ ಖಾತೆ "$1" ದಾಖಲಾಗಿಲà³à²². ನೀವೠಇದೇ ಪà³à²Ÿà²µà²¨à³à²¨à³ ಸೃಷà³à²Ÿà²¿/ಸಂಪಾದನೆ ಮಾಡಬೇಕೆಂದಿರà³à²µà²¿à²°à²¿ ಎಂದೠಖಾತà³à²°à²¿ ಮಾಡಿಕೊಳà³à²³à²¿.',
+'userpage-userdoesnotexist' => 'ಬಳಕೆದಾರ ಖಾತೆ "<nowiki>$1</nowiki>" ದಾಖಲಾಗಿಲà³à²². ನೀವೠಇದೇ ಪà³à²Ÿà²µà²¨à³à²¨à³ ಸೃಷà³à²Ÿà²¿/ಸಂಪಾದನೆ ಮಾಡಬೇಕೆಂದಿರà³à²µà²¿à²°à²¿ ಎಂದೠಖಾತà³à²°à²¿ ಮಾಡಿಕೊಳà³à²³à²¿.',
'usercssyoucanpreview' => "'''ಗಮನಿಸಿ:''' ಉಳಿಸà³à²µ ಮà³à²¨à³à²¨ 'ಮà³à²¨à³à²¨à³‹à²Ÿ' ಗà³à²‚ಡಿಯನà³à²¨à³ ಉಪಯೋಗಿಸಿ ನಿಮà³à²® ಹೊಸ CSS ಅನà³à²¨à³ ಪà³à²°à²¯à³‹à²— ಮಾಡಿ.",
'userjsyoucanpreview' => "'''ಗಮನಿಸಿ:''' ಉಳಿಸà³à²µ ಮà³à²¨à³à²¨ 'ಮà³à²¨à³à²¨à³‹à²Ÿ' ಗà³à²‚ಡಿಯನà³à²¨à³ ಉಪಯೋಗಿಸಿ ನಿಮà³à²® ಹೊಸ JS ಅನà³à²¨à³ ಪà³à²°à²¯à³‹à²— ಮಾಡಿ.",
'usercsspreview' => "'''ನೆನಪಿಡಿ: ನೀವೠಇಲà³à²²à²¿ ಕೇವಲ ನಿಮà³à²® ಬಳಕೆದಾರ CSSನ ಮà³à²¨à³à²¨à³‹à²Ÿ ನೋಡà³à²¤à³à²¤à²¿à²°à³à²µà²¿à²°à²¿.'''
@@ -785,51 +773,53 @@ $2',
'diff-multi' => '(ಮಧà³à²¯à²¦à²²à³à²²à²¿ ಆಗಿರà³à²µ {{PLURAL:$1|೧ ಬದಲಾವಣೆಯನà³à²¨à³|$1 ಬದಲಾವಣೆಗಳನà³à²¨à³}} ತೋರಿಸಲಾಗಿಲà³à²².)',
# Search results
-'searchresults' => 'ಶೋಧನೆಯ ಫಲಿತಾಂಶಗಳà³',
-'searchresults-title' => '"$1" ಅನà³à²¨à³ ಹà³à²¡à³à²•à²¿à²¦ ಫಲಿತಾಂಶಗಳà³',
-'searchresulttext' => '{{SITENAME}} ಅಲà³à²²à²¿ ಹà³à²¡à³à²•à²¾à²Ÿ ನಡೆಸà³à²µ ಬಗà³à²—ೆ ಹೆಚà³à²šà²¿à²¨ ಮಾಹಿತಿಗೆ [[{{MediaWiki:Helppage}}|{{int:help}}]] ಅನà³à²¨à³ ನೋಡಿ.',
-'searchsubtitle' => 'ನೀವೠ\'\'\'[[:$1]]\'\'\' ಅನà³à²¨à³ ಹà³à²¡à³à²•à²¿à²¦à²¿à²°à²¿ ([[Special:Prefixindex/$1|"$1" ಇಂದ ಪà³à²°à²¾à²°à²‚ಭವಾಗà³à²µ ಎಲà³à²²à²¾ ಪà³à²Ÿà²—ಳà³]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ಗೆ ಸಂಪರà³à²• ಹೊಂದಿರà³à²µ ಎಲà³à²²à²¾ ಪà³à²Ÿà²—ಳà³]])',
-'searchsubtitleinvalid' => "'''$1''' ಅನà³à²¨à³ ಹà³à²¡à³à²•à²¿à²¦à²¿à²°à²¿",
-'toomanymatches' => 'ತà³à²‚ಬಾ ಫಲಿತಾಂಶಗಳೠದೊರೆತಿವೆ, ದಯವಿಟà³à²Ÿà³ ಬೇರೆ ಪದಪà³à²‚ಜವನà³à²¨à³ ಪà³à²°à²¯à²¤à³à²¨à²¿à²¸à²¿',
-'titlematches' => 'ಹೊಂದಿಕೆಯಿರà³à²µ ಪà³à²Ÿ ಶೀರà³à²·à²¿à²•à³†à²—ಳà³',
-'notitlematches' => 'ಯಾವ ಪà³à²Ÿ ಶೀರà³à²·à²¿à²•à³†à²—ಳೂ ಹೊಂದಿಕೆ ತೋರಲಿಲà³à²²',
-'textmatches' => 'ಪà³à²Ÿà²¦ ಪಠà³à²¯à²¦à²²à³à²²à²¿à²¨ ಹೋಲಿಕೆಗಳà³',
-'notextmatches' => 'ಯಾವ ಪà³à²Ÿà²¦ ಪಠà³à²¯à²¦à²²à³à²²à³‚ ಹೋಲಿಕೆಗಳಿಲà³à²²',
-'prevn' => 'ಹಿಂದಿನ {{PLURAL:$1|$1}}',
-'nextn' => 'ಮà³à²‚ದಿನ {{PLURAL:$1|$1}}',
-'viewprevnext' => 'ವೀಕà³à²·à²¿à²¸à³ ($1 {{int:pipe-separator}} $2) ($3)',
-'searchmenu-new' => "'''''[[:$1]]'' ಪà³à²Ÿà²µà²¨à³à²¨à³ ಈ ವಿಕಿಯಲà³à²²à²¿ ಸೃಷà³à²Ÿà²¿à²¸à²¿!'''",
-'searchhelp-url' => 'Help:ಪರಿವಿಡಿ',
-'searchprofile-project' => 'ಸಹಾಯ ಮತà³à²¤à³ ಯೋಜನೆ ಪà³à²Ÿà²—ಳà³',
-'searchprofile-images' => 'ಬಹà³à²®à²¾à²§à³à²¯à²®',
-'searchprofile-everything' => 'ಪà³à²°à²¤à²¿à²¯à³Šà²‚ದà³',
-'searchprofile-advanced' => 'ಪರಿಣತ',
-'search-result-size' => '$1 ({{PLURAL:$2|೧ ಪದ|$2 ಪದಗಳà³}})',
-'search-result-score' => 'ಸಂಬದà³à²§à²¤à³†: $1%',
-'search-redirect' => '(ಪà³à²¨à²°à³à²¨à²¿à²°à³à²¦à³‡à²¶à²¨ $1)',
-'search-section' => '(ವಿಭಾಗ $1)',
-'search-suggest' => 'ನೀವೠಇದನà³à²¨à³ ಹà³à²¡à³à²•à³à²¤à³à²¤à²¿à²°à³à²µà²¿à²°à³†: $1',
-'search-interwiki-caption' => 'ಬಳಗದ ಇತರ ಯೋಜನೆಗಳà³',
-'search-interwiki-default' => '$1 ಫಲಿತಾಂಶಗಳà³:',
-'search-interwiki-more' => '(ಹೆಚà³à²šà³)',
-'search-mwsuggest-enabled' => 'ಸಲಹೆಗಳೊಂದಿಗೆ',
-'search-mwsuggest-disabled' => 'ಯಾವà³à²¦à³‡ ಸಲಹೆಗಳಿಲà³à²²',
-'search-relatedarticle' => 'ಸಂಬಂಧಿತ',
-'mwsuggest-disable' => 'AJAX ಸಲಹೆಗಳನà³à²¨à³ ತೋರದಿರà³',
-'searchrelated' => 'ಸಂಬಂಧಿತ',
-'searchall' => 'ಎಲà³à²²à²¾',
-'showingresults' => "ಕೆಳಗೆ #'''$2''' ಇಂದ ಶà³à²°à³à²µà²¾à²¦ {{PLURAL:$1|'''೧''' ಫಲಿತಾಂಶದ|'''$1''' ಫಲಿತಾಂಶಗಳ}}ವರೆಗೂ ತೋರಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†.",
-'showingresultsnum' => "ಕೆಳಗೆ #'''$2''' ಇಂದ ಶà³à²°à³à²µà²¾à²—ಿ {{PLURAL:$3|'''೧''' ಫಲಿತಾಂಶವನà³à²¨à³|'''$3''' ಫಲಿತಾಂಶಗಳನà³à²¨à³}} ತೋರಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†.",
-'nonefound' => "'''ಸೂಚನೆ''': ಕೆಲವೊಂದೠನೇಮೠಸà³à²ªà³‡à²¸à³ ಗಳನà³à²¨à³ ಮಾತà³à²° ಪೂರà³à²µà²¨à²¿à²¯à³‹à²œà²¿à²¤à²µà²¾à²—ಿ ಹà³à²¡à³à²•à²²à²¾à²—à³à²¤à³à²¤à²¦à³†.
+'searchresults' => 'ಶೋಧನೆಯ ಫಲಿತಾಂಶಗಳà³',
+'searchresults-title' => '"$1" ಅನà³à²¨à³ ಹà³à²¡à³à²•à²¿à²¦ ಫಲಿತಾಂಶಗಳà³',
+'searchresulttext' => '{{SITENAME}} ಅಲà³à²²à²¿ ಹà³à²¡à³à²•à²¾à²Ÿ ನಡೆಸà³à²µ ಬಗà³à²—ೆ ಹೆಚà³à²šà²¿à²¨ ಮಾಹಿತಿಗೆ [[{{MediaWiki:Helppage}}|{{int:help}}]] ಅನà³à²¨à³ ನೋಡಿ.',
+'searchsubtitle' => 'ನೀವೠ\'\'\'[[:$1]]\'\'\' ಅನà³à²¨à³ ಹà³à²¡à³à²•à²¿à²¦à²¿à²°à²¿ ([[Special:Prefixindex/$1|"$1" ಇಂದ ಪà³à²°à²¾à²°à²‚ಭವಾಗà³à²µ ಎಲà³à²²à²¾ ಪà³à²Ÿà²—ಳà³]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ಗೆ ಸಂಪರà³à²• ಹೊಂದಿರà³à²µ ಎಲà³à²²à²¾ ಪà³à²Ÿà²—ಳà³]])',
+'searchsubtitleinvalid' => "'''$1''' ಅನà³à²¨à³ ಹà³à²¡à³à²•à²¿à²¦à²¿à²°à²¿",
+'toomanymatches' => 'ತà³à²‚ಬಾ ಫಲಿತಾಂಶಗಳೠದೊರೆತಿವೆ, ದಯವಿಟà³à²Ÿà³ ಬೇರೆ ಪದಪà³à²‚ಜವನà³à²¨à³ ಪà³à²°à²¯à²¤à³à²¨à²¿à²¸à²¿',
+'titlematches' => 'ಹೊಂದಿಕೆಯಿರà³à²µ ಪà³à²Ÿ ಶೀರà³à²·à²¿à²•à³†à²—ಳà³',
+'notitlematches' => 'ಯಾವ ಪà³à²Ÿ ಶೀರà³à²·à²¿à²•à³†à²—ಳೂ ಹೊಂದಿಕೆ ತೋರಲಿಲà³à²²',
+'textmatches' => 'ಪà³à²Ÿà²¦ ಪಠà³à²¯à²¦à²²à³à²²à²¿à²¨ ಹೋಲಿಕೆಗಳà³',
+'notextmatches' => 'ಯಾವ ಪà³à²Ÿà²¦ ಪಠà³à²¯à²¦à²²à³à²²à³‚ ಹೋಲಿಕೆಗಳಿಲà³à²²',
+'prevn' => 'ಹಿಂದಿನ {{PLURAL:$1|$1}}',
+'nextn' => 'ಮà³à²‚ದಿನ {{PLURAL:$1|$1}}',
+'shown-title' => 'ಪà³à²°à²¤à²¿ ಪà³à²Ÿà²¦à²²à³à²²à²¿à²¯à³‚ $1 {{PLURAL:$1|result|results}} ತೋರಿಸà³',
+'viewprevnext' => 'ವೀಕà³à²·à²¿à²¸à³ ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-new' => "'''''[[:$1]]'' ಪà³à²Ÿà²µà²¨à³à²¨à³ ಈ ವಿಕಿಯಲà³à²²à²¿ ಸೃಷà³à²Ÿà²¿à²¸à²¿!'''",
+'searchhelp-url' => 'Help:ಪರಿವಿಡಿ',
+'searchprofile-project' => 'ಸಹಾಯ ಮತà³à²¤à³ ಯೋಜನೆ ಪà³à²Ÿà²—ಳà³',
+'searchprofile-images' => 'ಬಹà³à²®à²¾à²§à³à²¯à²®',
+'searchprofile-everything' => 'ಪà³à²°à²¤à²¿à²¯à³Šà²‚ದà³',
+'searchprofile-advanced' => 'ಪರಿಣತ',
+'searchprofile-articles-tooltip' => '$1 ನಲà³à²²à²¿ ಹà³à²¡à³à²•à²¿',
+'search-result-size' => '$1 ({{PLURAL:$2|೧ ಪದ|$2 ಪದಗಳà³}})',
+'search-result-score' => 'ಸಂಬದà³à²§à²¤à³†: $1%',
+'search-redirect' => '(ಪà³à²¨à²°à³à²¨à²¿à²°à³à²¦à³‡à²¶à²¨ $1)',
+'search-section' => '(ವಿಭಾಗ $1)',
+'search-suggest' => 'ನೀವೠಇದನà³à²¨à³ ಹà³à²¡à³à²•à³à²¤à³à²¤à²¿à²°à³à²µà²¿à²°à³†: $1',
+'search-interwiki-caption' => 'ಬಳಗದ ಇತರ ಯೋಜನೆಗಳà³',
+'search-interwiki-default' => '$1 ಫಲಿತಾಂಶಗಳà³:',
+'search-interwiki-more' => '(ಹೆಚà³à²šà³)',
+'search-mwsuggest-enabled' => 'ಸಲಹೆಗಳೊಂದಿಗೆ',
+'search-mwsuggest-disabled' => 'ಯಾವà³à²¦à³‡ ಸಲಹೆಗಳಿಲà³à²²',
+'search-relatedarticle' => 'ಸಂಬಂಧಿತ',
+'mwsuggest-disable' => 'AJAX ಸಲಹೆಗಳನà³à²¨à³ ತೋರದಿರà³',
+'searchrelated' => 'ಸಂಬಂಧಿತ',
+'searchall' => 'ಎಲà³à²²à²¾',
+'showingresults' => "ಕೆಳಗೆ #'''$2''' ಇಂದ ಶà³à²°à³à²µà²¾à²¦ {{PLURAL:$1|'''೧''' ಫಲಿತಾಂಶದ|'''$1''' ಫಲಿತಾಂಶಗಳ}}ವರೆಗೂ ತೋರಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†.",
+'showingresultsnum' => "ಕೆಳಗೆ #'''$2''' ಇಂದ ಶà³à²°à³à²µà²¾à²—ಿ {{PLURAL:$3|'''೧''' ಫಲಿತಾಂಶವನà³à²¨à³|'''$3''' ಫಲಿತಾಂಶಗಳನà³à²¨à³}} ತೋರಿಸಲಾಗà³à²¤à³à²¤à²¿à²¦à³†.",
+'nonefound' => "'''ಸೂಚನೆ''': ಕೆಲವೊಂದೠನೇಮೠಸà³à²ªà³‡à²¸à³ ಗಳನà³à²¨à³ ಮಾತà³à²° ಪೂರà³à²µà²¨à²¿à²¯à³‹à²œà²¿à²¤à²µà²¾à²—ಿ ಹà³à²¡à³à²•à²²à²¾à²—à³à²¤à³à²¤à²¦à³†.
ನಿಮà³à²® ಹà³à²¡à³à²•à³à²ªà²¦à²¦ ಹಿಂದೆ ''all:'' ಬಳಸಿ, ವಿಷಯವನà³à²¨à³ ಹà³à²¡à³à²•à²¿ (ಚರà³à²šà³†, ಟೆಂಪà³à²²à³‡à²Ÿà³, ಇತà³à²¯à²¾à²¦à²¿ ಪà³à²Ÿà²—ಳನà³à²¨à³Šà²³à²—ೊಂಡà³), ಅಥವಾ ನಿಮಗೆ ಇಷà³à²Ÿ ಬಂದ ನೇಮೠಸà³à²ªà³‡à²¸à³ ಅನà³à²¨à³ ಪೂರà³à²µà²ªà³à²°à²¤à³à²¯à²¯à²µà²¨à³à²¨à²¾à²—ಿ ಬಳಸಿ.",
-'powersearch' => 'ಹà³à²¡à³à²•à²¿',
-'powersearch-legend' => 'ಮà³à²‚ದà³à²µà²°à³†à²¦ ಹà³à²¡à³à²•à²¾à²Ÿ',
-'powersearch-ns' => 'ಈ ಪà³à²Ÿ ಪà³à²°à²¬à³‡à²§à²—ಳಲà³à²²à²¿ ಹà³à²¡à³à²•à³:',
-'powersearch-redir' => 'ಪà³à²¨à²°à³à²¨à²¿à²°à³à²¦à³‡à²¶à²¨à²—ಳ ಪಟà³à²Ÿà²¿',
-'powersearch-field' => 'ಇದನà³à²¨à³ ಹà³à²¡à³à²•à³',
-'powersearch-toggleall' => 'ಎಲà³à²²à²¾',
-'search-external' => 'ಬಾಹà³à²¯ ಹà³à²¡à³à²•à²¾à²Ÿ',
-'searchdisabled' => '{{SITENAME}} ಹà³à²¡à³à²•à²¾à²Ÿ ಸದà³à²¯à²•à³à²•à³† ಸà³à²¥à²—ಿತವಾಗಿದೆ.
+'powersearch' => 'ಹà³à²¡à³à²•à²¿',
+'powersearch-legend' => 'ಮà³à²‚ದà³à²µà²°à³†à²¦ ಹà³à²¡à³à²•à²¾à²Ÿ',
+'powersearch-ns' => 'ಈ ಪà³à²Ÿ ಪà³à²°à²¬à³‡à²§à²—ಳಲà³à²²à²¿ ಹà³à²¡à³à²•à³:',
+'powersearch-redir' => 'ಪà³à²¨à²°à³à²¨à²¿à²°à³à²¦à³‡à²¶à²¨à²—ಳ ಪಟà³à²Ÿà²¿',
+'powersearch-field' => 'ಇದನà³à²¨à³ ಹà³à²¡à³à²•à³',
+'powersearch-toggleall' => 'ಎಲà³à²²à²¾',
+'search-external' => 'ಬಾಹà³à²¯ ಹà³à²¡à³à²•à²¾à²Ÿ',
+'searchdisabled' => '{{SITENAME}} ಹà³à²¡à³à²•à²¾à²Ÿ ಸದà³à²¯à²•à³à²•à³† ಸà³à²¥à²—ಿತವಾಗಿದೆ.
ಈ ವೇಳೆಯಲà³à²²à²¿ ನೀವೠಗೂಗಲೠಉಪಯೋಗಿಸಿ ಹà³à²¡à³à²•à²¾à²Ÿ ನಡೆಸಬಹà³à²¦à³.
ಗಮನಿಸಿ: ಅವರ {{SITENAME}} ಮಾಹಿತಿಯೠಪà³à²°à²¸à²•à³à²¤à²µà²¾à²—ಿಲà³à²²à²¦à²¿à²°à²¬à²¹à³à²¦à³.',
@@ -847,7 +837,6 @@ $2',
'changepassword' => 'ಪà³à²°à²µà³‡à²¶ ಪದ ಬದಲಾಯಿಸಿ',
'prefs-skin' => 'ಚರà³à²®',
'skin-preview' => 'ಮà³à²¨à³à²¨à³‹à²Ÿ',
-'prefs-math' => 'ಗಣಿತ',
'datedefault' => 'ಯಾವà³à²¦à³‡ ಪà³à²°à²¾à²¶à²¸à³à²¤à³à²¯ ಇಲà³à²²',
'prefs-datetime' => 'ದಿನ ಮತà³à²¤à³ ಸಮಯ',
'prefs-personal' => 'ಬಳಕೆದಾರರ ಬಗà³à²—ೆ',
@@ -1101,10 +1090,6 @@ $2',
'watchthisupload' => 'ಈ ಪà³à²Ÿà²µà²¨à³à²¨à³ ವೀಕà³à²·à²¿à²¸à²¿',
'filewasdeleted' => 'ಈ ಹೆಸರಿನ ಫೈಲೠಮà³à²‚ಚೆ ಅಪà³à²²à³‹à²¡à³ ಮಾಡಲಾಗಿ ಅದನà³à²¨à³ ಆನಂತರ ಅಳಿಸಲಾಗಿತà³à²¤à³.
ಇದನà³à²¨à³ ಮತà³à²¤à³Šà²®à³à²®à³† ಅಪà³à²²à³‹à²¡à³ ಮಾಡà³à²µ ಮà³à²¨à³à²¨ ನೀವೠ$1 ಅನà³à²¨à³ ಪರೀಕà³à²·à²¿à²¸à²¬à³‡à²•à³.',
-'upload-wasdeleted' => "'''ಎಚà³à²šà²°à²¿à²•à³†: ನೀವೠಮà³à²‚ಚೆ ಅಳಿಸಲà³à²ªà²Ÿà³à²Ÿ ಫೈಲೊಂದನà³à²¨à³ ಅಪà³à²²à³‹à²¡à³ ಮಾಡà³à²¤à³à²¤à²¿à²°à³à²µà²¿à²°à²¿.'''
-
-ನೀವೠಈ ಫೈಲನà³à²¨à³ ಅಪà³à²²à³‹à²¡à³ ಮಾಡà³à²µà³à²¦à³ ಸರಿಯೇ ಎಂದೠಮತà³à²¤à³Šà²®à³à²®à³† ಪರೀಕà³à²·à²¿à²¸à²¿.
-ತೀರà³à²®à²¾à²¨à²•à³à²•à³† ಪೂರಕವಾಗಲೠಈ ಫೈಲಿನ ಅಳಿಸà³à²µà²¿à²•à³† ದಾಖಲೆಯನà³à²¨à³ ನೀಡಲಾಗಿದೆ:",
'upload-success-subj' => 'ಯಶಸà³à²µà²¿ ಅಪà³à²²à³‹à²¡à³',
'upload-file-error' => 'ಆಂತರಿಕ ದೋಷ',
@@ -1371,11 +1356,9 @@ $2',
'watchlistanontext' => 'ನಿಮà³à²® ವೀಕà³à²·à²£à²¾à²ªà²Ÿà³à²Ÿà²¿à²¯à²¨à³à²¨à³ ನೋಡಲೠಅಥವ ಸಂಪಾದಿಸಲೠದಯವಿಟà³à²Ÿà³ $1 ಮಾಡಿ.',
'watchnologin' => 'ಲಾಗಿನೠಆಗಿಲà³à²²',
'watchnologintext' => 'ನಿಮà³à²® ವೀಕà³à²·à²£à²¾à²ªà²Ÿà³à²Ÿà²¿à²¯à²¨à³à²¨à³ ಬದಲಾಯಿಸಲೠನೀವೠ[[Special:UserLogin|ಲಾಗಿನà³]] ಆಗಿರಬೇಕà³.',
-'addedwatch' => 'ವೀಕà³à²·à²£à²¾ ಪಟà³à²Ÿà²¿à²—ೆ ಸೇರಿಸಲಾಯಿತà³',
'addedwatchtext' => '"[[:$1]]" ಪà³à²Ÿà²µà²¨à³à²¨à³ ನಿಮà³à²® [[Special:Watchlist|ವೀಕà³à²·à²£à²¾à²ªà²Ÿà³à²Ÿà²¿à²—ೆ]] ಸೇರಿಸಲಾಗಿದೆ. ಈ ಪà³à²Ÿà²¦ ಮತà³à²¤à³ ಇದರ ಚರà³à²šà²¾ ಪà³à²Ÿà²¦ ಮà³à²‚ದಿನ ಬದಲಾವಣೆಗಳೠವೀಕà³à²·à²£à²¾ ಪಟà³à²Ÿà²¿à²¯à²²à³à²²à²¿ ಕಾಣಸಿಗà³à²¤à³à²¤à²µà³†, ಮತà³à²¤à³ [[Special:RecentChanges|ಇತà³à²¤à³€à²šà³†à²—ಿನ ಬದಲಾವಣೆಗಳ]] ಪಟà³à²Ÿà²¿à²¯à²²à³à²²à²¿ ಈ ಪà³à²Ÿà²—ಳನà³à²¨à³ ದಪà³à²ªà²•à³à²·à²°à²—ಳಲà³à²²à²¿ ಕಾಣಿಸಲಾಗà³à²µà³à²¦à³.
<p>ಈ ಪà³à²Ÿà²µà²¨à³à²¨à³ ವೀಕà³à²·à²£à²¾ ಪಟà³à²Ÿà²¿à²¯à²¿à²‚ದ ತೆಗೆಯಬಯಸಿದಲà³à²²à²¿, ಮೇಲà³à²ªà²Ÿà³à²Ÿà²¿à²¯à²²à³à²²à²¿ ಕಾಣಿಸಿರà³à²µ "ವೀಕà³à²·à²£à²¾ ಪà³à²Ÿà²¦à²¿à²‚ದ ತೆಗೆ" ಅನà³à²¨à³ ಕà³à²²à²¿à²•à³à²•à²¿à²¸à²¿.',
-'removedwatch' => 'ವೀಕà³à²·à²£à²¾à²ªà²Ÿà³à²Ÿà²¿à²¯à²¿à²‚ದ ತೆಗೆಯಲಾಗಿದೆ',
'removedwatchtext' => '"[[:$1]]" ಪà³à²Ÿà²µà²¨à³à²¨à³ ನಿಮà³à²® [[Special:Watchlist|ವೀಕà³à²·à²£à²¾à²ªà²Ÿà³à²Ÿà²¿à²¯à²¿à²‚ದ]] ತೆಗೆಯಲಾಗಿದೆ.',
'watch' => 'ವೀಕà³à²·à²¿à²¸à²¿',
'watchthispage' => 'ಈ ಪà³à²Ÿà²µà²¨à³à²¨à³ ವೀಕà³à²·à²¿à²¸à²¿',
@@ -1412,7 +1395,7 @@ $2',
'confirmdeletetext' => 'ಒಂದೠಪà³à²Ÿà²µà²¨à³à²¨à³ ಮತà³à²¤à³ ಅದರ ಸಂಪೂರà³à²£ ಇತಿಹಾಸವನà³à²¨à³ ನೀವೠಶಾಶà³à²µà²¤à²µà²¾à²—ಿ ಅಳಿಸಿಹಾಕà³à²¤à³à²¤à²¿à²°à³à²µà²¿à²°à²¿.
ಇದನà³à²¨à³ ನೀವೠಮಾಡಬಯಸà³à²µà²¿à²°à²¿, ಇದರ ಪರಿಣಾಮಗಳನà³à²¨à³ ಬಲà³à²²à²¿à²°à²¿, ಮತà³à²¤à³ [[{{MediaWiki:Policy-url}}|ಕಾರà³à²¯à²¨à³€à²¤à²¿à²—ಳ]] ಅನà³à²¸à²¾à²° ಇದನà³à²¨à³ ಮಾಡà³à²¤à³à²¤à²¿à²¦à³à²¦à³€à²°à²¿ ಎಂದೠದೃಢಪಡಿಸಿ.',
'actioncomplete' => 'ಕಾರà³à²¯ ಸಂಪೂರà³à²£',
-'deletedtext' => '"<nowiki>$1</nowiki>" ಅನà³à²¨à³ ಅಳಿಸಲಾಯಿತà³.
+'deletedtext' => '"$1" ಅನà³à²¨à³ ಅಳಿಸಲಾಯಿತà³.
ಇತà³à²¤à³€à²šà³†à²—ಿನ ಅಳಿಸà³à²µà²¿à²•à³†à²—ಳ ಪಟà³à²Ÿà²¿à²—ಾಗಿ $2 ಅನà³à²¨à³ ನೋಡಿ.',
'deletedarticle' => '"$1" ಅಳಿಸಲಾಯಿತà³',
'dellogpage' => 'ಅಳಿಸà³à²µà²¿à²•à³† ದಾಖಲೆ',
@@ -1443,7 +1426,7 @@ $2',
'protectexpiry' => 'ಮà³à²•à³à²¤à²¾à²¯:',
'protect_expiry_invalid' => 'ಮà³à²•à³à²¤à²¾à²¯à²¦ ಕಾಲ ಸಿಂಧà³à²µà²²à³à²².',
'protect_expiry_old' => 'ಮà³à²•à³à²¤à²¾à²¯à²¦ ಕಾಲ ಭೂತಕಾಲದಲà³à²²à²¿ ಇದೆ.',
-'protect-text' => "ನೀವೠಇಲà³à²²à²¿ '''<nowiki>$1</nowiki>''' ಪà³à²Ÿà²¦ ಸಂರಕà³à²·à²£à³† ಮಟà³à²Ÿà²µà²¨à³à²¨à³ ವೀಕà³à²·à²¿à²¸à²¬à²¹à³à²¦à³ ಮತà³à²¤à³ ಬದಲಾಯಿಸಬಹà³à²¦à³.",
+'protect-text' => "ನೀವೠಇಲà³à²²à²¿ '''$1''' ಪà³à²Ÿà²¦ ಸಂರಕà³à²·à²£à³† ಮಟà³à²Ÿà²µà²¨à³à²¨à³ ವೀಕà³à²·à²¿à²¸à²¬à²¹à³à²¦à³ ಮತà³à²¤à³ ಬದಲಾಯಿಸಬಹà³à²¦à³.",
'protect-locked-access' => "ನಿಮà³à²® ಖಾತೆಗೆ ಪà³à²Ÿ ಸಂರಕà³à²·à²£ ಮಟà³à²Ÿà²—ಳನà³à²¨à³ ಬದಲಾಯಿಸà³à²µ ಅನà³à²®à²¤à²¿ ಇಲà³à²².
ಈ ಪà³à²Ÿà²¦ ಪà³à²°à²¸à²•à³à²¤ ವಸà³à²¤à³à²¸à³à²¥à²¿à²¤à²¿ ಹೀಗಿದೆ: '''$1''':",
'protect-cascadeon' => 'ಈ ಕೆಳಗಿನ ತಡಸಲೠಸಂರಕà³à²·à²£à³† (cascading protection) ಹೊಂದಿರà³à²µ {{PLURAL:$1|ಪà³à²Ÿà²¦à²²à³à²²à²¿|ಪà³à²Ÿà²—ಳಲà³à²²à²¿}} ಸೇರà³à²ªà²¡à³† ಆಗಿರà³à²µà³à²¦à²°à²¿à²‚ದ ಈ ಪà³à²Ÿà²µà³‚ ಸಂರಕà³à²·à²¿à²¤à²µà²¾à²—ಿದೆ.
@@ -1541,7 +1524,6 @@ $2',
# Block/unblock
'blockip' => 'ಈ ಸದಸà³à²¯à²¨à²¨à³à²¨à³ ತಡೆ ಹಿಡಿಯಿರಿ',
'blockip-legend' => 'ಬಳಕೆದಾರನನà³à²¨à³ ತಡೆಹಿಡಿ',
-'ipaddress' => 'IP ವಿಳಾಸ:',
'ipadressorusername' => 'IP ವಿಳಾಸ ಅಥವ ಬಳಕೆಯ ಹೆಸರà³:',
'ipbexpiry' => 'ಅಂತà³à²¯:',
'ipbreason' => 'ಕಾರಣ:',
@@ -1554,7 +1536,6 @@ $2',
** ಬೇರೆಯವರನà³à²¨à³ ಬೆದರಿಸà³à²µ/ಕಾಡà³à²µ ವರà³à²¤à²¨à³†
** ಒಂದಕà³à²•à²¿à²‚ತ ಹೆಚà³à²šà³ ಖಾತೆಗಳ ದà³à²°à³à²ªà²¯à³‹à²—
** ಒಪà³à²ªà²¿à²—ೆಯಿರದಂತಹ ಬಳಕೆಯ ಹೆಸರà³',
-'ipbanononly' => 'ಅನಾಮಧೇಯ ಬಳಕೆದಾರರನà³à²¨à³ ಮಾತà³à²° ತಡೆ ಹಿಡಿ',
'ipbcreateaccount' => 'ಖಾತೆ ಸೃಷà³à²Ÿà²¿à²¯à²¨à³à²¨à³ ನಿರà³à²¬à²‚ಧಿಸà³',
'ipbemailban' => 'ಬಳಕೆದಾರನೠಇ-ಅಂಚೆ ಕಳà³à²¹à²¿à²¸à³à²µà³à²¦à²¨à³à²¨à³ ತಡೆಗಟà³à²Ÿà³',
'ipbsubmit' => 'ಈ ಸದಸà³à²¯à²°à²¨à³à²¨à³ ತಡೆಹಿಡಿಯಿರಿ',
@@ -1575,7 +1556,6 @@ $2',
'unblocked-id' => '$1 ತಡೆಯನà³à²¨à³ ತೆಗೆಯಲಾಗಿದೆ',
'ipblocklist' => 'ನಿರà³à²¬à²‚ಧಿಸಲಾಗಿರà³à²µ IP ವಿಳಾಸಗಳೠಹಾಗೂ ಬಳಕೆಯ ಹೆಸರà³à²—ಳà³',
'ipblocklist-legend' => 'ತಡೆಹಿಡಿಯಲಾದ ಬಳಕೆದಾರನನà³à²¨à³ ಹà³à²¡à³à²•à³',
-'ipblocklist-username' => 'ಬಳಕೆಯ ಹೆಸರೠಅಥವ IP ವಿಳಾಸ:',
'ipblocklist-submit' => 'ಹà³à²¡à³à²•à³',
'infiniteblock' => 'ಅನಂತ',
'anononlyblock' => 'ಅನಾಮಧೇಯ ಮಾತà³à²°',
@@ -1776,22 +1756,6 @@ $2',
'siteusers' => '{{SITENAME}} {{PLURAL:$2|ಸದಸà³à²¯|ಸದಸà³à²¯à²°à³}} $1',
'creditspage' => 'ಪà³à²Ÿà²¦ ಗೌರವಗಳà³',
-# Info page
-'infosubtitle' => 'ಪà³à²Ÿà²¦ ಬಗà³à²—ೆ ಮಾಹಿತಿ',
-'numedits' => 'ಸಂಪಾದನೆಗಳ ಸಂಖà³à²¯à³† (ಪà³à²Ÿ): $1',
-'numtalkedits' => 'ಸಂಪಾದನೆಗಳ ಸಂಖà³à²¯à³† (ಚರà³à²šà³† ಪà³à²Ÿ): $1',
-'numwatchers' => 'ವೀಕà³à²·à²¿à²¸à³à²¤à³à²¤à²¿à²°à³à²µà²µà²° ಸಂಖà³à²¯à³†: $1',
-
-# Math options
-'mw_math_png' => 'ಯಾವಾಗಲೂ PNG ಪà³à²°à²•à²¾à²° ತೋರಿಸà³',
-'mw_math_simple' => 'ಸರಳವಾಗಿದà³à²¦à²²à³à²²à²¿ HTML ಇಲà³à²²à²¦à²¿à²¦à³à²¦à²²à³à²²à²¿ PNG',
-'mw_math_html' => 'ಸಾಧà³à²¯à²µà²¾à²¦à²²à³à²²à²¿ HTML ಇಲà³à²²à²¦à²¿à²¦à³à²¦à²°à³† PNG',
-
-# Math errors
-'math_unknown_error' => 'ತಿಳಿದಿಲà³à²²à²¦ ದೋಷ',
-'math_image_error' => 'PNGಗೆ ಬದಲಾವಣೆ ವಿಫಲವಾಯಿತà³;
-latex, dvips, gs, ಸರಿಯಾಗಿ ಸà³à²¥à²¾à²ªà²¿à²¤à²µà²¾à²—ಿದೆಯೆ ಎಂದೠಖಾತà³à²°à²¿ ಮಾಡಿ ಬದಲಾಯಿಸಿ',
-
# Patrol log
'patrol-log-diff' => 'ಆವೃತà³à²¤à²¿ $1',
@@ -1808,14 +1772,13 @@ $1',
'nextdiff' => 'ನಂತರದ ಸಂಪಾದನೆ →',
# Media information
-'thumbsize' => 'ಕಿರà³à²¨à³‹à²Ÿà²¦ ಗಾತà³à²°:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|ಪà³à²Ÿ|ಪà³à²Ÿà²—ಳà³}}',
-'file-info' => 'ಫೈಲಿನ ಗಾತà³à²°: $1, MIME ಪà³à²°à²•à²¾à²°: $2',
-'file-info-size' => '$1 × $2 ಚಿತà³à²°à²¬à²¿à²‚ದà³, ಫೈಲಿನ ಗಾತà³à²°: $3, MIME ಪà³à²°à²•à²¾à²°: $4',
-'file-nohires' => '<small>ಇದಕà³à²•à²¿à²‚ತ ಹೆಚà³à²šà²¿à²¨ ವಿವರವಾದ ನೋಟ ಇಲà³à²².</small>',
-'svg-long-desc' => 'SVG ಫೈಲà³, ಸà³à²®à²¾à²°à²¾à²—ಿ $1 × $2 ಚಿತà³à²°à²¬à²¿à²‚ದà³à²—ಳà³, ಫೈಲಿನ ಗಾತà³à²°: $3',
-'show-big-image' => 'ಅತಿ ಹೆಚà³à²šà³ ವಿವರವಾದ ನೋಟ',
-'show-big-image-thumb' => '<small>ಈ ಮà³à²¨à³à²¨à³‹à²Ÿà²¦ ಅಳತೆ: $1 × $2 ಚಿತà³à²°à²¬à²¿à²‚ದà³à²—ಳà³</small>',
+'thumbsize' => 'ಕಿರà³à²¨à³‹à²Ÿà²¦ ಗಾತà³à²°:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|ಪà³à²Ÿ|ಪà³à²Ÿà²—ಳà³}}',
+'file-info' => 'ಫೈಲಿನ ಗಾತà³à²°: $1, MIME ಪà³à²°à²•à²¾à²°: $2',
+'file-info-size' => '$1 × $2 ಚಿತà³à²°à²¬à²¿à²‚ದà³, ಫೈಲಿನ ಗಾತà³à²°: $3, MIME ಪà³à²°à²•à²¾à²°: $4',
+'file-nohires' => '<small>ಇದಕà³à²•à²¿à²‚ತ ಹೆಚà³à²šà²¿à²¨ ವಿವರವಾದ ನೋಟ ಇಲà³à²².</small>',
+'svg-long-desc' => 'SVG ಫೈಲà³, ಸà³à²®à²¾à²°à²¾à²—ಿ $1 × $2 ಚಿತà³à²°à²¬à²¿à²‚ದà³à²—ಳà³, ಫೈಲಿನ ಗಾತà³à²°: $3',
+'show-big-image' => 'ಅತಿ ಹೆಚà³à²šà³ ವಿವರವಾದ ನೋಟ',
# Special:NewFiles
'newimages' => 'ಹೊಸ ಫೈಲà³à²—ಳ ಪà³à²°à²¦à²°à³à²¶à²¨',
@@ -1848,7 +1811,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'ಅಗಲ',
@@ -1867,7 +1836,6 @@ $1',
'exif-exifversion' => 'Exif ಆವೃತà³à²¤à²¿',
'exif-pixelydimension' => 'ಸಿಂಧà³à²µà²¾à²¦ ಚಿತà³à²°à²¦ ಅಗಲ',
'exif-pixelxdimension' => 'ಸಿಂಧà³à²µà²¾à²¦ ಚಿತà³à²°à²¦ ಎತà³à²¤à²°',
-'exif-makernote' => 'ತಯಾರಕರ ಟಿಪà³à²ªà²£à²¿à²—ಳà³',
'exif-usercomment' => 'ಬಳಕೆದಾರನ ಟಿಪà³à²ªà²£à²¿',
'exif-relatedsoundfile' => 'ಸಂಬಂಧಿತ ಧà³à²µà²¨à²¿ ಫೈಲà³',
'exif-datetimeoriginal' => 'ಮಾಹಿತಿ ಸೃಷà³à²Ÿà²¿à²¯à²¾à²¦ ದಿನಾಂಕ ಮತà³à²¤à³ ಕಾಲ',
@@ -1939,15 +1907,13 @@ $1',
# External editor support
'edit-externally' => 'ಬಾಹà³à²¯ ತಂತà³à²°à²¾à²‚ಶವನà³à²¨à³ ಉಪಯೋಗಿಸಿ ಇದನà³à²¨à³ ಸಂಪಾದಿಸಿ',
-'edit-externally-help' => '(ಹೆಚà³à²šà²¿à²¨ ಮಾಹಿತಿಗೆ [http://www.mediawiki.org/wiki/Manual:External_editors ಸà³à²¥à²¾à²ªà²¨à³†à²¯ ನಿರà³à²¦à³‡à²¶à²—ಳನà³à²¨à³] ನೋಡಿ)',
+'edit-externally-help' => '(ಹೆಚà³à²šà²¿à²¨ ಮಾಹಿತಿಗೆ [//www.mediawiki.org/wiki/Manual:External_editors ಸà³à²¥à²¾à²ªà²¨à³†à²¯ ನಿರà³à²¦à³‡à²¶à²—ಳನà³à²¨à³] ನೋಡಿ)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ಎಲà³à²²à²¾',
-'imagelistall' => 'ಎಲà³à²²à²¾',
-'watchlistall2' => 'ಎಲà³à²²à²¾',
-'namespacesall' => 'ಎಲà³à²²à²¾',
-'monthsall' => 'ಎಲà³à²²à²¾',
-'limitall' => 'ಎಲà³à²²à²¾',
+'watchlistall2' => 'ಎಲà³à²²à²¾',
+'namespacesall' => 'ಎಲà³à²²à²¾',
+'monthsall' => 'ಎಲà³à²²à²¾',
+'limitall' => 'ಎಲà³à²²à²¾',
# E-mail address confirmation
'confirmemail' => 'ಇ-ಅಂಚೆ ವಿಳಾಸವನà³à²¨à³ ಖಾತà³à²°à²¿ ಮಾಡಿ',
@@ -2034,7 +2000,7 @@ $5
'watchlistedit-normal-legend' => 'ವೀಕà³à²·à²£à²¾à²ªà²Ÿà³à²Ÿà²¿à²¯à²¿à²‚ದ ಶೀರà³à²·à²¿à²•à³†à²—ಳನà³à²¨à³ ತೆಗೆ',
'watchlistedit-normal-explain' => 'ನಿಮà³à²® ವೀಕà³à²·à²£à²¾à²ªà²Ÿà³à²Ÿà²¿à²¯à²²à³à²²à²¿ ಇರà³à²µ ಶೀರà³à²·à²¿à²•à³†à²—ಳನà³à²¨à³ ಕೆಳಗೆ ತೋರಿಸಲಾಗಿದೆ.
ಯಾವà³à²¦à³‡ ಶೀರà³à²·à²¿à²•à³†à²¯à²¨à³à²¨à³ ತಗೆಯಲà³, ಅದರ ಪಕà³à²•à²¦à²²à³à²²à²¿à²°à³à²µ ಚೌಕವನà³à²¨à³ ಗà³à²°à³à²¤à³ ಮಾಡಿ ಮತà³à²¤à³ "ಶೀರà³à²·à²¿à²•à³†à²—ಳನà³à²¨à³ ತೆಗೆ" ಗà³à²‚ಡಿಯನà³à²¨à³ ಒತà³à²¤à²¿.
-ನೀವೠವೀಕà³à²·à²£à²¾à²ªà²Ÿà³à²Ÿà²¿à²¯à²¨à³à²¨à³ [[Special:Watchlist/raw|ನೇರವಾಗಿ ಸಂಪಾದಿಸಬಹà³à²¦à³]] ಕೂಡ.',
+ನೀವೠವೀಕà³à²·à²£à²¾à²ªà²Ÿà³à²Ÿà²¿à²¯à²¨à³à²¨à³ [[Special:EditWatchlist/raw|ನೇರವಾಗಿ ಸಂಪಾದಿಸಬಹà³à²¦à³]] ಕೂಡ.',
'watchlistedit-normal-submit' => 'ಶೀರà³à²·à²¿à²•à³†à²—ಳನà³à²¨à³ ತೆಗೆ',
'watchlistedit-normal-done' => 'ನಿಮà³à²® ವೀಕà³à²·à²£à²¾à²ªà²Ÿà³à²Ÿà²¿à²¯à²¿à²‚ದ {{PLURAL:$1|೧ ಶೀರà³à²·à²¿à²•à³†à²¯à²¨à³à²¨à³|$1 ಶೀರà³à²·à²¿à²•à³†à²—ಳನà³à²¨à³}} ತೆಗೆಯಲಾಯಿತà³:',
'watchlistedit-raw-title' => 'ಮೂಲ ವೀಕà³à²·à²£à²¾à²ªà²Ÿà³à²Ÿà²¿à²¯à²¨à³à²¨à³ ಸಂಪಾದಿಸà³',
diff --git a/languages/messages/MessagesKo.php b/languages/messages/MessagesKo.php
index 51d63b46..cf9606c5 100644
--- a/languages/messages/MessagesKo.php
+++ b/languages/messages/MessagesKo.php
@@ -8,6 +8,8 @@
* @file
*
* @author Albamhandae
+ * @author Chanhee
+ * @author Cwt96
* @author Devunt
* @author Ficell
* @author Freebiekr
@@ -52,95 +54,98 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ì´ì¤‘넘겨주기' ),
+ 'Activeusers' => array( '활ë™ì ì¸ì‚¬ìš©ìž' ),
+ 'Allmessages' => array( '모든메시지' ),
+ 'Allpages' => array( '모든문서' ),
+ 'Ancientpages' => array( '오래ëœë¬¸ì„œ' ),
+ 'Blankpage' => array( '빈문서' ),
+ 'Block' => array( '차단' ),
+ 'Blockme' => array( 'ìžê°€ì°¨ë‹¨' ),
+ 'Booksources' => array( '책찾기' ),
'BrokenRedirects' => array( 'ëŠê¸´ë„˜ê²¨ì£¼ê¸°' ),
- 'Disambiguations' => array( 'ë™ìŒì´ì˜', 'ë™ìŒì´ì˜ë¬¸ì„œ' ),
- 'Userlogin' => array( '로그ì¸' ),
- 'Userlogout' => array( '로그아웃' ),
+ 'Categories' => array( '분류' ),
+ 'ChangePassword' => array( '비밀번호변경', '비밀번호바꾸기' ),
+ 'ComparePages' => array( '문서비êµ' ),
+ 'Confirmemail' => array( 'ì´ë©”ì¼ì¸ì¦' ),
+ 'Contributions' => array( '기여', '기여목ë¡', '사용ìžê¸°ì—¬' ),
'CreateAccount' => array( '계정만들기', '가입' ),
- 'Preferences' => array( '환경설정' ),
- 'Watchlist' => array( '주시문서목ë¡', '주시목ë¡' ),
- 'Recentchanges' => array( '최근바뀜' ),
- 'Upload' => array( '파ì¼ì˜¬ë¦¬ê¸°', '그림올리기' ),
+ 'Deadendpages' => array( '막다른문서' ),
+ 'DeletedContributions' => array( 'ì‚­ì œëœê¸°ì—¬' ),
+ 'Disambiguations' => array( 'ë™ìŒì´ì˜', 'ë™ìŒì´ì˜ë¬¸ì„œ' ),
+ 'DoubleRedirects' => array( 'ì´ì¤‘넘겨주기' ),
+ 'Emailuser' => array( 'ì´ë©”ì¼ë³´ë‚´ê¸°' ),
+ 'Export' => array( '내보내기' ),
+ 'Fewestrevisions' => array( '역사짧ì€ë¬¸ì„œ' ),
+ 'FileDuplicateSearch' => array( '중복파ì¼ì°¾ê¸°' ),
+ 'Filepath' => array( '파ì¼ê²½ë¡œ', '그림경로' ),
+ 'Import' => array( '가져오기' ),
+ 'Invalidateemail' => array( 'ì´ë©”ì¼ì¸ì¦ì·¨ì†Œ', 'ì´ë©”ì¼ì¸ì¦í•´ì œ' ),
+ 'BlockList' => array( '차단ëœì‚¬ìš©ìž', '차단목ë¡' ),
+ 'LinkSearch' => array( '외부ë§í¬ì°¾ê¸°', '외부ë§í¬ê²€ìƒ‰' ),
+ 'Listadmins' => array( '관리ìž', '관리ìžëª©ë¡' ),
+ 'Listbots' => array( 'ë´‡', '봇목ë¡' ),
'Listfiles' => array( '파ì¼', '그림', '파ì¼ëª©ë¡', '그림목ë¡' ),
- 'Newimages' => array( '새파ì¼', '새그림' ),
- 'Listusers' => array( '사용ìž', '사용ìžëª©ë¡' ),
'Listgrouprights' => array( '사용ìžê¶Œí•œ', '권한목ë¡' ),
- 'Statistics' => array( '통계' ),
- 'Randompage' => array( 'ìž„ì˜ë¬¸ì„œ' ),
+ 'Listredirects' => array( '넘겨주기', '넘겨주기목ë¡' ),
+ 'Listusers' => array( '사용ìž', '사용ìžëª©ë¡' ),
+ 'Lockdb' => array( 'DB잠금', 'DB잠그기' ),
+ 'Log' => array( '기ë¡', '로그' ),
'Lonelypages' => array( '외톨ì´ë¬¸ì„œ' ),
- 'Uncategorizedpages' => array( '분류안ëœë¬¸ì„œ' ),
- 'Uncategorizedcategories' => array( '분류안ëœë¶„류' ),
- 'Uncategorizedimages' => array( '분류안ëœíŒŒì¼', '분류안ëœê·¸ë¦¼' ),
- 'Uncategorizedtemplates' => array( '분류안ëœí‹€' ),
- 'Unusedcategories' => array( '안쓰는분류' ),
- 'Unusedimages' => array( '안쓰는파ì¼', '안쓰는그림' ),
- 'Wantedpages' => array( '필요한문서' ),
- 'Wantedcategories' => array( '필요한분류' ),
- 'Wantedfiles' => array( '필요한파ì¼', '필요한그림' ),
- 'Wantedtemplates' => array( '필요한틀' ),
+ 'Longpages' => array( '긴문서' ),
+ 'MergeHistory' => array( '역사합치기' ),
+ 'MIMEsearch' => array( 'MIME찾기', 'MIME검색' ),
+ 'Mostcategories' => array( '많ì´ë¶„류ëœë¬¸ì„œ' ),
+ 'Mostimages' => array( '많ì´ì“°ëŠ”파ì¼', '많ì´ì“°ëŠ”그림' ),
'Mostlinked' => array( '많ì´ë§í¬ëœë¬¸ì„œ' ),
'Mostlinkedcategories' => array( '많ì´ì“°ëŠ”분류' ),
'Mostlinkedtemplates' => array( '많ì´ì“°ëŠ”í‹€' ),
- 'Mostimages' => array( '많ì´ì“°ëŠ”파ì¼', '많ì´ì“°ëŠ”그림' ),
- 'Mostcategories' => array( '많ì´ë¶„류ëœë¬¸ì„œ' ),
'Mostrevisions' => array( '역사긴문서' ),
- 'Fewestrevisions' => array( '역사짧ì€ë¬¸ì„œ' ),
- 'Shortpages' => array( '짧ì€ë¬¸ì„œ' ),
- 'Longpages' => array( '긴문서' ),
+ 'Movepage' => array( 'ì´ë™', '문서ì´ë™' ),
+ 'Mycontributions' => array( '내기여', '내기여목ë¡' ),
+ 'Mypage' => array( '내사용ìžë¬¸ì„œ' ),
+ 'Mytalk' => array( '내사용ìží† ë¡ ' ),
+ 'Myuploads' => array( '내가올린파ì¼' ),
+ 'Newimages' => array( '새파ì¼', '새그림' ),
'Newpages' => array( '새문서' ),
- 'Ancientpages' => array( '오래ëœë¬¸ì„œ' ),
- 'Deadendpages' => array( '막다른문서' ),
+ 'PasswordReset' => array( '암호변경' ),
+ 'Popularpages' => array( 'ì¸ê¸°ìžˆëŠ”문서' ),
+ 'Preferences' => array( '환경설정' ),
+ 'Prefixindex' => array( 'ì ‘ë‘어찾기' ),
'Protectedpages' => array( '보호ëœë¬¸ì„œ' ),
'Protectedtitles' => array( 'ìƒì„±ë³´í˜¸ëœë¬¸ì„œ' ),
- 'Allpages' => array( '모든문서' ),
- 'Prefixindex' => array( 'ì ‘ë‘어찾기' ),
- 'Ipblocklist' => array( '차단ëœì‚¬ìš©ìž', '차단목ë¡' ),
- 'Unblock' => array( '차단해제' ),
- 'Specialpages' => array( '특수문서', '특수기능' ),
- 'Contributions' => array( '기여', '기여목ë¡', '사용ìžê¸°ì—¬' ),
- 'Emailuser' => array( 'ì´ë©”ì¼ë³´ë‚´ê¸°' ),
- 'Confirmemail' => array( 'ì´ë©”ì¼ì¸ì¦' ),
- 'Whatlinkshere' => array( '가리키는문서', 'ë§í¬í•˜ëŠ”문서' ),
+ 'Randompage' => array( 'ìž„ì˜ë¬¸ì„œ' ),
+ 'Randomredirect' => array( 'ìž„ì˜ë„˜ê²¨ì£¼ê¸°' ),
+ 'Recentchanges' => array( '최근바뀜' ),
'Recentchangeslinked' => array( 'ë§í¬ìµœê·¼ë°”뀜' ),
- 'Movepage' => array( 'ì´ë™', '문서ì´ë™' ),
- 'Blockme' => array( 'ìžê°€ì°¨ë‹¨' ),
- 'Booksources' => array( '책찾기' ),
- 'Categories' => array( '분류' ),
- 'Export' => array( '내보내기' ),
- 'Version' => array( '버전' ),
- 'Allmessages' => array( '모든메시지' ),
- 'Log' => array( '기ë¡', '로그' ),
- 'Blockip' => array( '차단' ),
+ 'Revisiondelete' => array( '특정íŒì‚­ì œ' ),
+ 'Search' => array( '찾기', '검색' ),
+ 'Shortpages' => array( '짧ì€ë¬¸ì„œ' ),
+ 'Specialpages' => array( '특수문서', '특수기능' ),
+ 'Statistics' => array( '통계' ),
+ 'Tags' => array( '태그' ),
+ 'Unblock' => array( '차단해제' ),
+ 'Uncategorizedcategories' => array( '분류안ëœë¶„류' ),
+ 'Uncategorizedimages' => array( '분류안ëœíŒŒì¼', '분류안ëœê·¸ë¦¼' ),
+ 'Uncategorizedpages' => array( '분류안ëœë¬¸ì„œ' ),
+ 'Uncategorizedtemplates' => array( '분류안ëœí‹€' ),
'Undelete' => array( '삭제취소', 'ì‚­ì œëœë¬¸ì„œ' ),
- 'Import' => array( '가져오기' ),
- 'Lockdb' => array( 'DB잠금', 'DB잠그기' ),
'Unlockdb' => array( 'DB잠금취소', 'DB잠금해제' ),
- 'Userrights' => array( '권한조정' ),
- 'MIMEsearch' => array( 'MIME찾기', 'MIME검색' ),
- 'FileDuplicateSearch' => array( '중복파ì¼ì°¾ê¸°' ),
- 'Unwatchedpages' => array( '주시안ë˜ëŠ”문서' ),
- 'Listredirects' => array( '넘겨주기', '넘겨주기목ë¡' ),
- 'Revisiondelete' => array( '특정íŒì‚­ì œ' ),
+ 'Unusedcategories' => array( '안쓰는분류' ),
+ 'Unusedimages' => array( '안쓰는파ì¼', '안쓰는그림' ),
'Unusedtemplates' => array( '안쓰는틀' ),
- 'Randomredirect' => array( 'ìž„ì˜ë„˜ê²¨ì£¼ê¸°' ),
- 'Mypage' => array( '내사용ìžë¬¸ì„œ' ),
- 'Mytalk' => array( '내사용ìží† ë¡ ' ),
- 'Mycontributions' => array( '내기여', '내기여목ë¡' ),
- 'Listadmins' => array( '관리ìž', '관리ìžëª©ë¡' ),
- 'Listbots' => array( 'ë´‡', '봇목ë¡' ),
- 'Popularpages' => array( 'ì¸ê¸°ìžˆëŠ”문서' ),
- 'Search' => array( '찾기', '검색' ),
- 'Resetpass' => array( '비밀번호변경', '비밀번호바꾸기' ),
+ 'Unwatchedpages' => array( '주시안ë˜ëŠ”문서' ),
+ 'Upload' => array( '파ì¼ì˜¬ë¦¬ê¸°', '그림올리기' ),
+ 'Userlogin' => array( '로그ì¸' ),
+ 'Userlogout' => array( '로그아웃' ),
+ 'Userrights' => array( '권한조정' ),
+ 'Version' => array( '버전' ),
+ 'Wantedcategories' => array( '필요한분류' ),
+ 'Wantedfiles' => array( '필요한파ì¼', '필요한그림' ),
+ 'Wantedpages' => array( '필요한문서' ),
+ 'Wantedtemplates' => array( '필요한틀' ),
+ 'Watchlist' => array( '주시문서목ë¡', '주시목ë¡' ),
+ 'Whatlinkshere' => array( '가리키는문서', 'ë§í¬í•˜ëŠ”문서' ),
'Withoutinterwiki' => array( 'ì¸í„°ìœ„키없는문서' ),
- 'MergeHistory' => array( '역사합치기' ),
- 'Filepath' => array( '파ì¼ê²½ë¡œ', '그림경로' ),
- 'Invalidateemail' => array( 'ì´ë©”ì¼ì¸ì¦ì·¨ì†Œ', 'ì´ë©”ì¼ì¸ì¦í•´ì œ' ),
- 'Blankpage' => array( '빈문서' ),
- 'LinkSearch' => array( '외부ë§í¬ì°¾ê¸°', '외부ë§í¬ê²€ìƒ‰' ),
- 'DeletedContributions' => array( 'ì‚­ì œëœê¸°ì—¬' ),
- 'Tags' => array( '태그' ),
- 'Activeusers' => array( '활ë™ì ì¸ì‚¬ìš©ìž' ),
);
$magicWords = array(
@@ -294,7 +299,7 @@ $dateFormats = array(
$messages = array(
# User preference toggles
-'tog-underline' => 'ë§í¬ 걸기:',
+'tog-underline' => 'ë§í¬ì— 밑줄 표시하기:',
'tog-highlightbroken' => '없는 문서로 ì—°ê²°ëœ ë§í¬ë¥¼ <a href="" class="new">ì´ë ‡ê²Œ</a> ë³´ì´ê¸° (ì„ íƒí•˜ì§€ 않으면 ì´ë ‡ê²Œ<a href="" class="internal">?</a> ë³´ìž„)',
'tog-justify' => '문단 정렬하기',
'tog-hideminor' => '사소한 íŽ¸ì§‘ì„ ìµœê·¼ 바뀜ì—ì„œ 숨기기',
@@ -324,8 +329,8 @@ $messages = array(
'tog-shownumberswatching' => '주시 ì‚¬ìš©ìž ìˆ˜ 보기',
'tog-oldsig' => '사용 ì¤‘ì¸ ì„œëª…:',
'tog-fancysig' => 'ì„œëª…ì„ ìœ„í‚¤í…스트로 취급 (ìžë™ìœ¼ë¡œ ë§í¬ë¥¼ 걸지 ì•ŠìŒ)',
-'tog-externaleditor' => '외부 편집기를 기본 편집기로 사용 (숙련ìžìš©. ì»´í“¨í„°ì— íŠ¹ë³„í•œ ì„¤ì •ì´ í•„ìš”, [http://www.mediawiki.org/wiki/Manual:External_editors ìžì„¸í•œ ì •ë³´ 보기])',
-'tog-externaldiff' => '외부 ë¹„êµ ë„구를 기본 ë„구로 사용 (숙련ìžìš©. ì»´í“¨í„°ì— íŠ¹ë³„í•œ ì„¤ì •ì´ í•„ìš”, [http://www.mediawiki.org/wiki/Manual:External_editors ìžì„¸í•œ 설명 보기])',
+'tog-externaleditor' => '외부 편집기를 기본 편집기로 사용 (숙련ìžìš©. ì»´í“¨í„°ì— íŠ¹ë³„í•œ ì„¤ì •ì´ í•„ìš”, [//www.mediawiki.org/wiki/Manual:External_editors ìžì„¸í•œ ì •ë³´ 보기])',
+'tog-externaldiff' => '외부 ë¹„êµ ë„구를 기본 ë„구로 사용 (숙련ìžìš©. ì»´í“¨í„°ì— íŠ¹ë³„í•œ ì„¤ì •ì´ í•„ìš”, [//www.mediawiki.org/wiki/Manual:External_editors ìžì„¸í•œ 설명 보기])',
'tog-showjumplinks' => 'ì ‘ê·¼ì„±ì„ ìœ„í•œ "ì´ë™" ë§í¬ 쓰기 (ì¼ë¶€ 스킨ì—서만 ìž‘ë™)',
'tog-uselivepreview' => '실시간 미리 보기 사용하기 (ìžë°”스í¬ë¦½íŠ¸ 사용, 시험 중)',
'tog-forceeditsummary' => '편집 ìš”ì•½ì„ ì“°ì§€ ì•Šì•˜ì„ ë•Œ 알려주기',
@@ -420,15 +425,7 @@ $messages = array(
'listingcontinuesabbrev' => ' (계ì†)',
'index-category' => '색ì¸ëœ 문서',
'noindex-category' => '색ì¸ì—ì„œ 제외ë˜ëŠ” 문서',
-
-'mainpagetext' => "'''미디어위키가 성공ì ìœ¼ë¡œ 설치ë˜ì—ˆìŠµë‹ˆë‹¤.'''",
-'mainpagedocfooter' => '[http://meta.wikimedia.org/wiki/Help:Contents ì´ê³³]ì—ì„œ 위키 í”„ë¡œê·¸ëž¨ì— ëŒ€í•œ 정보를 ì–»ì„ ìˆ˜ 있습니다.
-
-== 시작하기 ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings 설정하기]
-* [http://www.mediawiki.org/wiki/Manual:FAQ 미디어위키 FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce 미디어위키 발표 ë©”ì¼ë§ 리스트]',
+'broken-file-category' => 'ìž˜ëª»ëœ ë§í¬ê°€ 있는 페ì´ì§€',
'about' => '소개',
'article' => '문서 내용',
@@ -480,10 +477,10 @@ $messages = array(
'history' => '문서 역사',
'history_short' => '역사',
'updatedmarker' => '마지막으로 ì½ì€ ë’¤ 바뀌었ìŒ',
-'info_short' => 'ì •ë³´',
'printableversion' => 'ì¸ì‡„ìš© 문서',
'permalink' => '고유ë§í¬',
'print' => 'ì¸ì‡„',
+'view' => '보기',
'edit' => '편집',
'create' => 'ìƒì„±',
'editthispage' => 'ì´ ë¬¸ì„œ 편집하기',
@@ -491,6 +488,7 @@ $messages = array(
'delete' => '삭제',
'deletethispage' => 'ì´ ë¬¸ì„œ 삭제하기',
'undelete_short' => '편집 $1ê°œ ë˜ì‚´ë¦¬ê¸°',
+'viewdeleted_short' => 'ì‚­ì œëœ íŽ¸ì§‘ $1ê°œ 보기',
'protect' => '보호',
'protect_change' => '보호 수준 변경',
'protectthispage' => 'ì´ ë¬¸ì„œ 보호하기',
@@ -574,6 +572,8 @@ $1',
'toc' => '목차',
'showtoc' => 'ë³´ì´ê¸°',
'hidetoc' => '숨기기',
+'collapsible-collapse' => '접기',
+'collapsible-expand' => '펼치기',
'thisisdeleted' => '$1ì„ ë³´ê±°ë‚˜ ë˜ì‚´ë¦¬ê² ìŠµë‹ˆê¹Œ?',
'viewdeleted' => '$1ì„ ë³´ê² ìŠµë‹ˆê¹Œ?',
'restorelink' => 'ì‚­ì œëœ íŽ¸ì§‘ $1 ê°œ',
@@ -585,6 +585,8 @@ $1',
'page-rss-feed' => '‘$1’ RSS 피드',
'page-atom-feed' => '"$1" Atom 피드',
'red-link-title' => '$1 (없는 문서)',
+'sort-descending' => '내림차순 정렬',
+'sort-ascending' => '오름차순 정렬',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => '문서',
@@ -664,12 +666,13 @@ $1',
'protectedpagetext' => 'ì´ ë¬¸ì„œëŠ” 편집할 수 ì—†ë„ë¡ ë³´í˜¸ë˜ì–´ 있습니다.',
'viewsourcetext' => 'ë¬¸ì„œì˜ ì›ë³¸ì„ 보거나 복사할 수 있습니다:',
'protectedinterface' => 'ì´ ë¬¸ì„œëŠ” 소프트웨어 ì¸í„°íŽ˜ì´ìŠ¤ì— ì“°ì´ëŠ” 문서로, 잠겨 있습니다.',
-'editinginterface' => "'''경고''': 소프트웨어ì—ì„œ 사용하는 메시지 문서를 고치고 있습니다. ì´ê²ƒì€ 모든 사용ìžì—게 ì˜í–¥ì„ ë¼ì¹©ë‹ˆë‹¤. 번역ë˜ì§€ ì•Šì€ ë©”ì‹œì§€ë¥¼ 번역하려는 경우ì—는, [http://translatewiki.net/wiki/Main_Page?setlang=ko translatewiki.net]ì— ì°¸ì—¬í•˜ë©´ 메시지 ë²ˆì—­ì„ ë¯¸ë””ì–´ìœ„í‚¤ì— ì§ì ‘ ë°˜ì˜í•  수 있습니다.",
+'editinginterface' => "'''경고''': 소프트웨어ì—ì„œ 사용하는 메시지 문서를 고치고 있습니다. ì´ê²ƒì€ 모든 사용ìžì—게 ì˜í–¥ì„ ë¼ì¹©ë‹ˆë‹¤. 번역ë˜ì§€ ì•Šì€ ë©”ì‹œì§€ë¥¼ 번역하려는 경우ì—는, [//translatewiki.net/wiki/Main_Page?setlang=ko translatewiki.net]ì— ì°¸ì—¬í•˜ë©´ 메시지 ë²ˆì—­ì„ ë¯¸ë””ì–´ìœ„í‚¤ì— ì§ì ‘ ë°˜ì˜í•  수 있습니다.",
'sqlhidden' => '(SQL 쿼리 숨겨ì§)',
'cascadeprotected' => 'ì´ ë¬¸ì„œëŠ” 연쇄보호가 걸린 {{PLURAL:$1|문서}}ì— í¬í•¨ë˜ì–´ 있어 함께 보호ë©ë‹ˆë‹¤. 연쇄 ë³´í˜¸ëœ ë¬¸ì„œ:
$2',
'namespaceprotected' => "'''$1''' 네임스페ì´ìŠ¤ë¥¼ 편집할 수 있는 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤.",
-'customcssjsprotected' => 'ì´ ë¬¸ì„œëŠ” 다른 사용ìžì˜ ê°œì¸ ì„¤ì •ì„ ë‹´ê³  있기 때문ì—, 편집할 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤.',
+'customcssprotected' => '여기ì—는 다른 사용ìžì˜ ê°œì¸ ì„¤ì •ì´ í¬í•¨ë˜ì–´ 있기 ë•Œë¬¸ì— ë‹¹ì‹ ì€ ì´ CSS 문서를 편집할 수 없습니다.',
+'customjsprotected' => '여기ì—는 다른 사용ìžì˜ ê°œì¸ ì„¤ì •ì´ í¬í•¨ë˜ì–´ 있기 ë•Œë¬¸ì— ë‹¹ì‹ ì€ ì´ ìžë°”스í¬ë¦½íŠ¸ 문서를 편집할 수 없습니다.',
'ns-specialprotected' => '{{ns:special}} 네임스페ì´ìŠ¤ì˜ 문서는 편집할 수 없습니다.',
'titleprotected' => '[[User:$1|$1]] 사용ìžê°€ 문서 ìƒì„±ì„ 금지했습니다.
ì´ìœ ëŠ” 다ìŒê³¼ 같습니다. ‘$2’',
@@ -707,6 +710,7 @@ $2',
'createaccount' => '계정 만들기',
'gotaccount' => "ê³„ì •ì´ ì´ë¯¸ 있다면, '''$1'''.",
'gotaccountlink' => '로그ì¸í•˜ì„¸ìš”',
+'userlogin-resetlink' => 'ID나 비밀번호를 잊으셨나요?',
'createaccountmail' => 'ì´ë©”ì¼ë¡œ 보내기',
'createaccountreason' => 'ì´ìœ :',
'badretype' => '암호가 서로 다릅니다.',
@@ -716,13 +720,15 @@ $2',
'createaccounterror' => 'ê³„ì •ì„ ìƒì„±í•˜ì§€ 못했습니다: $1',
'nocookiesnew' => 'ì‚¬ìš©ìž ê³„ì •ì„ ë§Œë“¤ì—ˆì§€ë§Œ, ì•„ì§ ë¡œê·¸ì¸í•˜ì§€ 않았습니다. {{SITENAME}}ì—서는 ë¡œê·¸ì¸ ì •ë³´ë¥¼ 저장하기 위해 쿠키를 사용합니다. 지금 사용하는 웹 브ë¼ìš°ì €ëŠ” 쿠키를 사용하지 ì•Šë„ë¡ ì„¤ì •ë˜ì–´ 있습니다. 로그ì¸í•˜ê¸° ì „ì— ì›¹ 브ë¼ìš°ì €ì—ì„œ 쿠키를 사용하ë„ë¡ ì„¤ì •í•´ì£¼ì„¸ìš”.',
'nocookieslogin' => '{{SITENAME}}ì—서는 로그ì¸ì„ 위해 쿠키를 사용합니다. ë‹¹ì‹ ì˜ ì›¹ 브ë¼ìš°ì €ì—ì„œ 쿠키가 비활성ë˜ì–´ 있습니다. 쿠키 ì‚¬ìš©ì„ í™œì„±í™”í•œ ë‹¤ìŒ ë¡œê·¸ì¸í•´ 주세요.',
+'nocookiesfornew' => 'ìš”ì²­ì˜ ì¶œì²˜ë¥¼ 확ì¸í•  수 없기 ë•Œë¬¸ì— ì‚¬ìš©ìž ê³„ì •ì´ ìƒì„±ë˜ì§€ 않았습니다.
+쿠키를 허용한 ê²ƒì„ í™•ì¸í•œ í›„ì— ë‹¤ì‹œ ì‹œë„í•´ 보십시오.',
'noname' => 'ì‚¬ìš©ìž ì´ë¦„ì´ ì˜¬ë°”ë¥´ì§€ 않습니다.',
'loginsuccesstitle' => 'ë¡œê·¸ì¸ ì„±ê³µ',
'loginsuccess' => "'''{{SITENAME}}ì— â€˜$1’ 계정으로 로그ì¸í–ˆìŠµë‹ˆë‹¤.'''",
'nosuchuser' => '"$1" 사용ìžê°€ 존재하지 않습니다.
ì‚¬ìš©ìž ì´ë¦„ì€ ëŒ€ì†Œë¬¸ìžë¥¼ 구별합니다. ì² ìžê°€ 맞는지 확ì¸í•´ì£¼ì„¸ìš”.
[[Special:UserLogin/signup|새 ê³„ì •ì„ ë§Œë“¤ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤]].',
-'nosuchusershort' => 'ì´ë¦„ì´ â€˜<nowiki>$1</nowiki>â€™ì¸ ì‚¬ìš©ìžëŠ” 없습니다. ì² ìžê°€ 맞는지 확ì¸í•´ 주세요.',
+'nosuchusershort' => 'ì´ë¦„ì´ â€˜$1â€™ì¸ ì‚¬ìš©ìžëŠ” 없습니다. ì² ìžê°€ 맞는지 확ì¸í•´ 주세요.',
'nouserspecified' => 'ì‚¬ìš©ìž ì´ë¦„ì„ ìž…ë ¥í•˜ì§€ 않았습니다.',
'login-userblocked' => 'ì´ ì‚¬ìš©ìžëŠ” 차단ë˜ì—ˆìŠµë‹ˆë‹¤. 로그ì¸í•  수 없습니다.',
'wrongpassword' => '암호가 틀렸습니다. 다시 ì‹œë„í•´ 주세요.',
@@ -762,13 +768,14 @@ $2',
'usernamehasherror' => '계정 ì´ë¦„ì—는 í•´ì‹œ 문ìžê°€ 들어가서는 안 ë©ë‹ˆë‹¤.',
'login-throttled' => '로그ì¸ì— ì—°ì†ìœ¼ë¡œ 실패하였습니다.
ìž ì‹œ í›„ì— ë‹¤ì‹œ ì‹œë„해주세요.',
+'login-abort-generic' => '로그ì¸ì— 실패했습니다 - 중지ë¨',
'loginlanguagelabel' => '언어: $1',
'suspicious-userlogout' => '브ë¼ìš°ì €ì˜ ì´ìƒì´ 있거나 ìºì‹± 프ë¡ì‹œì—ì„œ ë¡œê·¸ì•„ì›ƒì„ ìš”ì²­í–ˆê¸° ë•Œë¬¸ì— ë¡œê·¸ì•„ì›ƒì´ ê±°ë¶€ë˜ì—ˆìŠµë‹ˆë‹¤.',
# E-mail sending
'php-mail-error-unknown' => 'PHPì˜ mail() 함수ì—ì„œ ì•Œ 수 없는 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤.',
-# Password reset dialog
+# Change password dialog
'resetpass' => '비밀번호 바꾸기',
'resetpass_announce' => 'ì´ë©”ì¼ë¡œ ë°›ì€ ìž„ì‹œ 암호로 로그ì¸í–ˆìŠµë‹ˆë‹¤. 로그ì¸ì„ 마치려면 새 암호를 입력해 주세요:',
'resetpass_header' => '비밀번호 변경',
@@ -785,6 +792,32 @@ $2',
ë‹¹ì‹ ì€ ì´ë¯¸ 비밀번호를 성공ì ìœ¼ë¡œ 변경하였거나 새 ìž„ì‹œ 비밀번호를 ë°œê¸‰ë°›ì•˜ì„ ìˆ˜ 있습니다.',
'resetpass-temp-password' => '임시 비밀번호:',
+# Special:PasswordReset
+'passwordreset' => '암호 재설정',
+'passwordreset-text' => 'ì´ë©”ì¼ì„ 입력하여 ì•Œë¦¼ì„ ë°›ìœ¼ì„¸ìš”.',
+'passwordreset-legend' => '암호 초기화',
+'passwordreset-disabled' => '위키 암호 초기화가 중단 ë˜ì—ˆìŠµë‹ˆë‹¤.',
+'passwordreset-pretext' => '{{PLURAL:$1||ì•„ëž˜ì— í•œ 가지 정보를 입력해주십시오}}',
+'passwordreset-username' => '계정 ì´ë¦„:',
+'passwordreset-domain' => 'ë„ë©”ì¸:',
+'passwordreset-email' => 'ì´ë©”ì¼ ì£¼ì†Œ:',
+'passwordreset-emailtitle' => '{{SITENAME}} 계정 ìƒì„¸ ì •ë³´',
+'passwordreset-emailtext-ip' => 'IP 주소 $1ì„ ì‚¬ìš©í•˜ëŠ” 누군가(ì•„ë§ˆë„ ë‹¹ì‹ ì´), {{SITENAME}} ($4)ì˜ ë¹„ë°€ë²ˆí˜¸ 찾기를 요청하였습니다. ì´ ì´ë©”ì¼ ì£¼ì†Œì™€ ì—°ê´€ëœ ê³„ì •ì˜ ëª©ë¡ìž…니다:
+
+$2
+
+ì´ {{PLURAL:$3|ìž„ì‹œ 비밀번호}}ì˜ íš¨ë ¥ì€ $5ì¼ í›„ 만료ë©ë‹ˆë‹¤.
+ì´ ë¹„ë°€ë²ˆí˜¸ë¡œ 로그ì¸í•œ 후 비밀번호를 변경하십시오. 만약 ë‹¹ì‹ ì´ ì•„ë‹Œ 다른 ì‚¬ëžŒì´ ìš”ì²­í•˜ì˜€ê±°ë‚˜, ì›ëž˜ì˜ 비밀번호를 기억해냈다면, ì´ ë©”ì‹œì§€ë¥¼ 무시하고 ì´ì „ì˜ ë¹„ë°€ë²ˆí˜¸ë¥¼ ê³„ì† ì‚¬ìš©í•  수 있습니다.',
+'passwordreset-emailtext-user' => '{{SITENAME}} ($4)ì˜ ì‚¬ìš©ìž $1ì´ ë¹„ë°€ë²ˆí˜¸ 찾기를 요청하였습니다. ì´ ì´ë©”ì¼ ì£¼ì†Œì™€ ì—°ê´€ëœ ê³„ì •ì˜ ëª©ë¡ìž…니다:
+
+$2
+
+ì´ {{PLURAL:$3|ìž„ì‹œ 비밀번호}}ì˜ íš¨ë ¥ì€ $5ì¼ í›„ 만료ë©ë‹ˆë‹¤.
+ì´ ë¹„ë°€ë²ˆí˜¸ë¡œ 로그ì¸í•œ 후 비밀번호를 변경하십시오. 만약 ë‹¹ì‹ ì´ ì•„ë‹Œ 다른 ì‚¬ëžŒì´ ìš”ì²­í•˜ì˜€ê±°ë‚˜, ì›ëž˜ì˜ 비밀번호를 기억해냈다면, ì´ ë©”ì‹œì§€ë¥¼ 무시하고 ì´ì „ì˜ ë¹„ë°€ë²ˆí˜¸ë¥¼ ê³„ì† ì‚¬ìš©í•  수 있습니다.',
+'passwordreset-emailelement' => '계정 ì´ë¦„: $1
+임시 비밀번호: $2',
+'passwordreset-emailsent' => '비밀번호 찾기 ì´ë©”ì¼ì„ 보냈습니다.',
+
# Edit page toolbar
'bold_sample' => 'êµµì€ ê¸€ì”¨',
'bold_tip' => 'êµµì€ ê¸€ì”¨',
@@ -796,8 +829,6 @@ $2',
'extlink_tip' => '외부 사ì´íŠ¸ ë§í¬ (주소 ì•žì— http://ê°€ 있어야 합니다.)',
'headline_sample' => '제목',
'headline_tip' => '2단계 문단 제목',
-'math_sample' => 'ì—¬ê¸°ì— ìˆ˜ì‹ì„ 쓰세요',
-'math_tip' => '수ì‹(LaTeX)',
'nowiki_sample' => 'ì—¬ê¸°ì— ìœ„í‚¤ ë¬¸ë²•ì„ ì‚¬ìš©í•˜ì§€ ì•Šì„ ê¸€ì„ ì ì–´ 주세요',
'nowiki_tip' => '위키 문법 사용하지 않기',
'image_tip' => 'íŒŒì¼ ë„£ê¸°',
@@ -874,7 +905,7 @@ $1, ë˜ëŠ” [[{{MediaWiki:Grouppage-sysop}}|다른 관리ìž]]ì—게 ì°¨ë‹¨ì— ëŒ
ì´ ë¬¸ì„œì™€ ì œëª©ì´ ë¹„ìŠ·í•œ 문서가 있는지 [[Special:Search/{{PAGENAME}}|검색]]하거나, ì´ ë¬¸ì„œì— ê´€ë ¨ëœ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기ë¡]ì„ í™•ì¸í•˜ê±°ë‚˜, 문서를 ì§ì ‘ [{{fullurl:{{FULLPAGENAME}}|action=edit}} 편집]</span>í•  수 있습니다.',
'noarticletext-nopermission' => '‘{{FULLPAGENAME}}’ 문서가 존재하지 않습니다.
ì´ ë¬¸ì„œì™€ ì œëª©ì´ ë¹„ìŠ·í•œ 문서가 있는지 [[Special:Search/{{PAGENAME}}|검색]]하거나, ì´ ë¬¸ì„œì— ê´€ë ¨ëœ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 기ë¡]ì„ í™•ì¸í•  수 있습니다.</span>',
-'userpage-userdoesnotexist' => '‘$1’ ê³„ì •ì€ ë“±ë¡ë˜ì–´ 있지 않습니다. ì´ ë¬¸ì„œë¥¼ 만들거나 편집하려면 ê³„ì •ì´ ì¡´ìž¬ 하는지 확ì¸í•´ì£¼ì„¸ìš”.',
+'userpage-userdoesnotexist' => '‘<nowiki>$1</nowiki>’ ê³„ì •ì€ ë“±ë¡ë˜ì–´ 있지 않습니다. ì´ ë¬¸ì„œë¥¼ 만들거나 편집하려면 ê³„ì •ì´ ì¡´ìž¬ 하는지 확ì¸í•´ì£¼ì„¸ìš”.',
'userpage-userdoesnotexist-view' => '"$1" ì‚¬ìš©ìž ê³„ì •ì€ ë“±ë¡ë˜ì§€ 않았습니다.',
'blocked-notice-logextract' => 'ì´ ì‚¬ìš©ìžëŠ” 현재 차단ë˜ì–´ 있습니다.
해당 사용ìžì˜ 최근 차단 기ë¡ì„ 참고하십시오:',
@@ -907,6 +938,7 @@ $1, ë˜ëŠ” [[{{MediaWiki:Grouppage-sysop}}|다른 관리ìž]]ì—게 ì°¨ë‹¨ì— ëŒ
'''다시 ì‹œë„í•´ë„ ë˜ì§€ 않으면 [[Special:UserLogout|로그아웃]]í•œ ë‹¤ìŒ ë‹¤ì‹œ 로그ì¸ì„ í•´ 보십시오.'''",
'token_suffix_mismatch' => "'''저장하려는 ë‚´ìš©ì˜ ë¬¸ìž¥ 부호가 ë§ê°€ì ¸ 있습니다. 문서 보호를 위해 해당 ë‚´ìš©ì„ ì €ìž¥í•˜ì§€ 않습니다. 버그가 있는 ìµëª… 프ë¡ì‹œ 서비스 ë“±ì„ ì‚¬ìš©í•  ë•Œ ì´ëŸ° 문제가 ë°œìƒí•  수 있습니다.'''",
+'edit_form_incomplete' => "'''íŽ¸ì§‘ì˜ ì¼ë¶€ ë‚´ìš©ì´ ì„œë²„ì— ì „ë‹¬ë˜ì§€ 않았습니다. ë‹¹ì‹ ì˜ íŽ¸ì§‘ì´ ì†ìƒë˜ì§€ 않았는지 확ì¸í•˜ê³  다시 ì‹œë„í•´ 주십시오.'''",
'editing' => '$1 편집하기',
'editingsection' => '$1 편집하기 (부분)',
'editingcomment' => '$1 편집하기 (ë§ë¶™ì´ê¸°)',
@@ -1137,8 +1169,8 @@ $1",
# Suppression log
'suppressionlog' => '숨기기 기ë¡',
-'suppressionlogtext' => '다ìŒì€ 관리ìžë¡œë¶€í„° 숨겨진 ë‚´ìš©ì— ëŒ€í•œ ì‚­ì œ, 차단 기ë¡ìž…니다.
-현재 ì°¨ë‹¨ëœ ì‚¬ìš©ìž ëª©ë¡ì„ 보시려면 [[Special:IPBlockList|ì°¨ë‹¨ëœ ì‚¬ìš©ìž ëª©ë¡]]ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.',
+'suppressionlogtext' => '다ìŒì€ 관리ìžë¡œë¶€í„° 숨겨진 ë‚´ìš©ì— ê´€í•œ ì‚­ì œ, 차단 기ë¡ìž…니다.
+현재 ì°¨ë‹¨ëœ ì‚¬ìš©ìž ëª©ë¡ì„ 보시려면 [[Special:BlockList|ì°¨ë‹¨ëœ ì‚¬ìš©ìž ëª©ë¡]]ì„ ì°¸ì¡°í•˜ì‹­ì‹œì˜¤.',
# History merging
'mergehistory' => '문서 역사 합치기',
@@ -1247,12 +1279,13 @@ $1",
'searchdisabled' => '{{SITENAME}} 검색 ê¸°ëŠ¥ì´ ë¹„í™œì„±í™”ë˜ì–´ 있습니다. ê¸°ëŠ¥ì´ ìž‘ë™í•˜ì§€ 않는 ë™ì•ˆì—는 구글(Google)ì„ ì´ìš©í•´ 검색할 수 있습니다. 검색 ì—”ì§„ì˜ ë‚´ìš©ì€ ìµœê·¼ ê²ƒì´ ì•„ë‹ ìˆ˜ 있다는 ì ì„ 주ì˜í•´ì£¼ì„¸ìš”.',
# Quickbar
-'qbsettings' => '빨리가기 맞춤',
-'qbsettings-none' => 'ì—†ìŒ',
-'qbsettings-fixedleft' => '왼쪽 고정',
-'qbsettings-fixedright' => '오른쪽 고정',
-'qbsettings-floatingleft' => '왼쪽 유ë™',
-'qbsettings-floatingright' => '오른쪽 유ë™',
+'qbsettings' => '빨리가기 맞춤',
+'qbsettings-none' => 'ì—†ìŒ',
+'qbsettings-fixedleft' => '왼쪽 고정',
+'qbsettings-fixedright' => '오른쪽 고정',
+'qbsettings-floatingleft' => '왼쪽 유ë™',
+'qbsettings-floatingright' => '오른쪽 유ë™',
+'qbsettings-directionality' => 'ì‚¬ìš©ìž ì–¸ì–´ì˜ ë¬¸ìž ìž…ë ¥ ë°©í–¥ì— ë§žì¶”ì–´ ê³ ì •',
# Preferences page
'preferences' => 'ì‚¬ìš©ìž í™˜ê²½ 설정',
@@ -1263,9 +1296,10 @@ $1",
'changepassword' => '비밀번호 바꾸기',
'prefs-skin' => '스킨',
'skin-preview' => '미리 보기',
-'prefs-math' => '수ì‹',
'datedefault' => '기본값',
+'prefs-beta' => '베타 기능',
'prefs-datetime' => '날짜와 ì‹œê°',
+'prefs-labs' => '실험 ì¤‘ì¸ ê¸°ëŠ¥',
'prefs-personal' => 'ì‚¬ìš©ìž ì •ë³´',
'prefs-rc' => '최근 바뀜',
'prefs-watchlist' => '주시문서 목ë¡',
@@ -1287,8 +1321,6 @@ $1",
'columns' => '열 수:',
'searchresultshead' => '찾기',
'resultsperpage' => '쪽마다 ë³´ì´ëŠ” ê²°ê³¼ 수:',
-'contextlines' => '결과마다 ë³´ì´ëŠ” 줄 수:',
-'contextchars' => 'ê° ì¤„ì— ë³´ì´ëŠ” 글 수:',
'stub-threshold' => 'ë§í¬ë¥¼ <a href="#" class="stub">토막글</a> 형ì‹ìœ¼ë¡œ 표시할 문서 í¬ê¸° (ë°”ì´íŠ¸ 수):',
'stub-threshold-disabled' => '비활성화ë¨',
'recentchangesdays' => '최근 ë°”ë€œì— í‘œì‹œí•  날짜 수:',
@@ -1301,7 +1333,7 @@ $1",
'savedprefs' => 'ì„¤ì •ì„ ì €ìž¥í–ˆìŠµë‹ˆë‹¤.',
'timezonelegend' => '시간대:',
'localtime' => '현지 ì‹œê°:',
-'timezoneuseserverdefault' => '서버 ê¸°ë³¸ê°’ì„ ì‚¬ìš©',
+'timezoneuseserverdefault' => '위키 기본값($1)ì„ ì‚¬ìš©',
'timezoneuseoffset' => '기타 (시차를 입력해주세요)',
'timezoneoffset' => '시차¹:',
'servertime' => '서버 ì‹œê°:',
@@ -1336,6 +1368,7 @@ $1",
'prefs-registration' => 'ë“±ë¡ ì¼ì‹œ:',
'yourrealname' => '실명:',
'yourlanguage' => '언어:',
+'yourvariant' => '언어 변종:',
'yournick' => '서명:',
'prefs-help-signature' => '토론 ë¬¸ì„œì— ê¸€ì„ ë‚¨ê¸°ì‹¤ 때는 ì„œëª…ì„ í•´ 주세요. “<nowiki>~~~~</nowiki>â€ë¥¼ 입력하시면 서명과 ì‹œê°„ì´ ìžë™ìœ¼ë¡œ ìž…ë ¥ë©ë‹ˆë‹¤.',
'badsig' => 'ì„œëª…ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤. HTML 태그를 확ì¸í•´ì£¼ì„¸ìš”.',
@@ -1348,7 +1381,8 @@ $1",
'prefs-help-gender' => 'ì„ íƒ ì‚¬í•­: 소프트웨어ì—ì„œ ì„±ë³„ì— ë”°ë¥¸ 언어 문제를 해결하기 위해 사용ë©ë‹ˆë‹¤. ì´ ì •ë³´ëŠ” 공개ë©ë‹ˆë‹¤.',
'email' => 'ì´ë©”ì¼',
'prefs-help-realname' => '실명 ê¸°ìž…ì€ ìžìœ ìž…니다. ì‹¤ëª…ì„ ìž…ë ¥í•  경우 문서 ê¸°ì—¬ì— ìžì‹ ì˜ ì´ë¦„ì´ ë“¤ì–´ê°€ê²Œ ë©ë‹ˆë‹¤.',
-'prefs-help-email' => 'ì´ë©”ì¼ ì£¼ì†Œ ìž…ë ¥ì€ ì„ íƒ ì‚¬í•­ìž…ë‹ˆë‹¤. ì´ë©”ì¼ì„ 등ë¡í•´ ë‘ë©´ 비밀번호를 ìžŠì—ˆì„ ë•Œ 다른 비밀번호를 ë°›ì„ ìˆ˜ 있으며, ì´ë©”ì¼ì„ 공개하지 ì•Šê³ ë„ ë‹¤ë¥¸ 사용ìžì—게 ë©”ì¼ì„ ë°›ì„ ìˆ˜ 있습니다.',
+'prefs-help-email' => 'ì´ë©”ì¼ ì£¼ì†Œ ìž…ë ¥ì€ ì„ íƒ ì‚¬í•­ìž…ë‹ˆë‹¤. 다만 비밀번호를 ìžŠì—ˆì„ ë•Œ 비밀번호 ë³€ê²½ì„ ìœ„í•´ 필요합니다.',
+'prefs-help-email-others' => 'ë‹¹ì‹ ì˜ ì‹ ë¶„ì„ ë°íž í•„ìš” ì—†ì´ ë‹¤ë¥¸ ì‚¬ëžŒë“¤ì´ ì‚¬ìš©ìž ë¬¸ì„œë‚˜ 토론 문서ì—ì„œ ì´ë©”ì¼ ë³´ë‚´ê¸° 기능으로 당신과 ì—°ë½í•  수 있ë„ë¡ ì„ íƒí•  수 있습니다.',
'prefs-help-email-required' => 'ì´ë©”ì¼ ì£¼ì†Œê°€ 필요합니다.',
'prefs-info' => '기본 정보',
'prefs-i18n' => '언어 설정',
@@ -1467,21 +1501,21 @@ $1",
'right-patrol' => '다른 사용ìžì˜ íŽ¸ì§‘ì„ ê²€í† ',
'right-autopatrol' => 'ìžì‹ ì˜ íŽ¸ì§‘ì„ ìžë™ìœ¼ë¡œ 검토',
'right-patrolmarks' => '최근 바뀜ì—ì„œ 검토 표시를 보기',
-'right-unwatchedpages' => '주시ë˜ì§€ ì•Šì€ ë¬¸ì„œì˜ ëª©ë¡ì„ 보기',
+'right-unwatchedpages' => '주시ë˜ì§€ 않는 문서 ëª©ë¡ ë³´ê¸°',
'right-trackback' => '트랙백 보내기',
'right-mergehistory' => 'ë¬¸ì„œì˜ ì—­ì‚¬ë¥¼ 합침',
'right-userrights' => '모든 사용ìžì˜ 권한 ì¡°ì •',
'right-userrights-interwiki' => '다른 ìœ„í‚¤ì˜ ì‚¬ìš©ìž ê¶Œí•œì„ ì¡°ì •',
'right-siteadmin' => 'ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 잠그거나 잠금 í•´ì œ',
-'right-reset-passwords' => '다른 사용ìžì˜ 비밀번호를 변경',
'right-override-export-depth' => '5단계로 ë§í¬ëœ 문서를 í¬í•¨í•˜ì—¬ 문서를 내보내기',
'right-sendemail' => '다른 사용ìžì—게 ì´ë©”ì¼ ë³´ë‚´ê¸°',
# User rights log
-'rightslog' => 'ì‚¬ìš©ìž ê¶Œí•œ 기ë¡',
-'rightslogtext' => 'ì‚¬ìš©ìž ê¶Œí•œ ì¡°ì • 기ë¡ìž…니다.',
-'rightslogentry' => '$1ì˜ ê¶Œí•œì„ $2ì—ì„œ $3(으)ë¡œ 변경',
-'rightsnone' => '(ì—†ìŒ)',
+'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' => 'ì´ ë¬¸ì„œë¥¼ ì½ê¸°',
@@ -1502,7 +1536,7 @@ $1",
'action-delete' => 'ì´ ë¬¸ì„œ 삭제하기',
'action-deleterevision' => 'ì´ íŒì„ ì‚­ì œ',
'action-deletedhistory' => 'ì´ ë¬¸ì„œì˜ ì‚­ì œëœ ê¸°ì—¬ì˜ ì—­ì‚¬ 보기',
-'action-browsearchive' => 'ì‚­ì œëœ ë¬¸ì„œ 찾기',
+'action-browsearchive' => 'ì‚­ì œëœ ë¬¸ì„œ 검색',
'action-undelete' => 'ì´ ë¬¸ì„œë¥¼ 복구하기',
'action-suppressrevision' => 'ì´ ìˆ¨ê²¨ì§„ íŒì„ 검토하고 복구할',
'action-suppressionlog' => '비공개 로그를 볼',
@@ -1512,7 +1546,7 @@ $1",
'action-importupload' => 'íŒŒì¼ ì˜¬ë¦¬ê¸°ë¥¼ 통해 문서를 가져올',
'action-patrol' => '다른 사용ìžì˜ íŽ¸ì§‘ì„ ê²€í† ëœ ê²ƒìœ¼ë¡œ 표시하기',
'action-autopatrol' => 'ìžì‹ ì˜ íŽ¸ì§‘ì„ ê²€í† ëœ ê²ƒìœ¼ë¡œ 표시할',
-'action-unwatchedpages' => '주시ë˜ì§€ ì•Šì€ ë¬¸ì„œì˜ ëª©ë¡ì„ ë³¼',
+'action-unwatchedpages' => '주시ë˜ì§€ 않는 문서 ëª©ë¡ ë³´ê¸°',
'action-trackback' => '트랙백 보내기',
'action-mergehistory' => 'ì´ ë¬¸ì„œì˜ ì—­ì‚¬ 합치기',
'action-userrights' => '모든 사용ìžì˜ ê¶Œí•œì„ ì¡°ì •',
@@ -1603,11 +1637,11 @@ $1",
'minlength1' => 'íŒŒì¼ ì´ë¦„ì€ ì ì–´ë„ 1ê¸€ìž ì´ìƒì´ì–´ì•¼ 합니다.',
'illegalfilename' => 'íŒŒì¼ ì´ë¦„ "$1"ì—는 문서 제목으로 허용ë˜ì§€ 않는 글ìžê°€ í¬í•¨ë˜ì–´ 있습니다. ì´ë¦„ì„ ë°”ê¾¸ì–´ 다시 ì‹œë„í•´ 주세요.',
'badfilename' => 'íŒŒì¼ ì´ë¦„ì´ â€˜$1’(으)ë¡œ 바뀌었습니다.',
-'filetype-mime-mismatch' => 'íŒŒì¼ í™•ìž¥ìžì™€ MIMEê°€ ì¼ì¹˜í•˜ì§€ 않습니다.',
+'filetype-mime-mismatch' => 'íŒŒì¼ í™•ìž¥ìž ".$1"와 ì´ íŒŒì¼ì˜ MIME($2)ê°€ ì¼ì¹˜í•˜ì§€ 않습니다.',
'filetype-badmime' => '‘$1’ MIMEì„ ê°€ì§„ 파ì¼ì€ 올릴 수 없습니다.',
'filetype-bad-ie-mime' => 'ì¸í„°ë„· ìµìŠ¤í”Œë¡œëŸ¬ê°€ 잠재ì ìœ¼ë¡œ 위험한 íŒŒì¼ í˜•ì‹ìœ¼ë¡œ íŒë‹¨ë˜ì–´ ì‚¬ìš©ì´ ê¸ˆì§€ëœ "$1"ë¡œ ì¸ì‹í•  수 있기 ë•Œë¬¸ì— ì´ íŒŒì¼ì„ 올릴 수 없습니다.',
'filetype-unwanted-type' => "'''\".\$1\"''' 확장ìžëŠ” 추천하지 않습니다. 추천하는 {{PLURAL:\$3|íŒŒì¼ í™•ìž¥ìž}}는 \$2입니다.",
-'filetype-banned-type' => "{{plural:$3}}‘'''.$1'''’ 형ì‹ì˜ 파ì¼ì€ 올릴 수 없습니다. $2 형ì‹ë§Œ 사용할 수 있습니다.",
+'filetype-banned-type' => '{{PLURAL:$3$4}}\'\'\'".$1"\'\'\' 형ì‹ì˜ 파ì¼ì€ 올릴 수 없습니다. $2 형ì‹ë§Œ 사용할 수 있습니다.',
'filetype-missing' => '파ì¼ì— 확장ìž(‘.jpg’ 등)ê°€ 없습니다.',
'empty-file' => 'ë‹¹ì‹ ì´ ì˜¬ë¦° 파ì¼ì´ 비어 있습니다.',
'file-too-large' => '올리려는 파ì¼ì´ 너무 í½ë‹ˆë‹¤.',
@@ -1625,6 +1659,7 @@ $1",
'emptyfile' => '올리려는 파ì¼ì´ 빈 파ì¼ìž…니다.
íŒŒì¼ ì´ë¦„ì„ ìž˜ëª» ìž…ë ¥í–ˆì„ ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.
올리려는 파ì¼ì„ 다시 í•œ 번 확ì¸í•´ 주시기 ë°”ëžë‹ˆë‹¤.',
+'windows-nonascii-filename' => 'ì´ ìœ„í‚¤ì—서는 특수 문ìžê°€ í¬í•¨ëœ íŒŒì¼ ì´ë¦„ì„ ì§€ì›í•˜ì§€ 않습니다.',
'fileexists' => "ê°™ì€ ì´ë¦„ì˜ íŒŒì¼ì´ ì´ë¯¸ 있습니다.
파ì¼ì„ 바꾸고 싶지 않다면 '''<tt>[[:$1]]</tt>''' 파ì¼ì„ 확ì¸í•´ 주세요.
[[$1|thumb]]",
@@ -1660,6 +1695,8 @@ $1",
'php-uploaddisabledtext' => 'PHP íŒŒì¼ ì˜¬ë¦¬ê¸°ê°€ 비활성화ë˜ì—ˆìŠµë‹ˆë‹¤. íŒŒì¼ ì˜¬ë¦¬ê¸° ì„¤ì •ì„ í™•ì¸í•˜ì‹­ì‹œì˜¤.',
'uploadscripted' => 'ì´ íŒŒì¼ì—는 HTMLì´ë‚˜ 다른 스í¬ë¦½íŠ¸ 코드가 í¬í•¨ë˜ì–´ 있어, 웹 브ë¼ìš°ì €ì—ì„œ 오류를 ì¼ìœ¼í‚¬ 수 있습니다.',
'uploadvirus' => '파ì¼ì´ ë°”ì´ëŸ¬ìŠ¤ë¥¼ í¬í•¨í•˜ê³  있습니다! ìƒì„¸ 설명: $1',
+'uploadjava' => 'ì´ ZIP 파ì¼ì€ ìžë°”ì˜ .class 파ì¼ì„ í¬í•¨í•˜ê³  있습니다.
+ë³´ì•ˆì„ ìœ„í•œ ì œí•œì„ ìš°íšŒí•  수 있기 ë•Œë¬¸ì— ìžë°” 파ì¼ì„ 올리는 ê²ƒì´ í—ˆìš©ë˜ì§€ 않습니다.',
'upload-source' => 'ì›ë³¸ 파ì¼',
'sourcefilename' => 'ì›ë³¸ íŒŒì¼ ì´ë¦„:',
'sourceurl' => '출처 URL:',
@@ -1669,10 +1706,6 @@ $1",
'upload-options' => '올리기 설정',
'watchthisupload' => 'ì´ íŒŒì¼ ì£¼ì‹œí•˜ê¸°',
'filewasdeleted' => 'ê°™ì€ ì´ë¦„ì„ ê°€ì§„ 파ì¼ì´ 올ë¼ì˜¨ ì ì´ 있었고, ê·¸ í›„ì— ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤. 올리기 ì „ì— $1ì„ í™•ì¸í•´ 주시기 ë°”ëžë‹ˆë‹¤.',
-'upload-wasdeleted' => "'''경고: ì‚­ì œëœ ì ì´ 있는 파ì¼ì„ 다시 올리려 하고 있습니다.'''
-
-ì´ íŒŒì¼ì„ 올리는 ê²ƒì´ ì ì ˆí•œì§€ 다시 한번 ìƒê°í•´ì£¼ì‹­ì‹œì˜¤.
-편ì˜ë¥¼ 위해 ì‚­ì œ 기ë¡ì„ 제공합니다.",
'filename-bad-prefix' => '올리려고 하는 íŒŒì¼ ì´ë¦„ì´ \'\'\'"$1"\'\'\'(으)ë¡œ 시작합니다.
"$1"ì€(는) 디지털 사진기가 ìžë™ìœ¼ë¡œ 붙ì´ëŠ” ì˜ë¯¸ì—†ëŠ” ì´ë¦„입니다.
파ì¼ì— 대해 알기 쉬운 ì´ë¦„ì„ ê³¨ë¼ì£¼ì„¸ìš”.',
@@ -1709,12 +1742,29 @@ $1',
'upload-unknown-size' => 'í¬ê¸°ë¥¼ ì•Œ 수 ì—†ìŒ',
'upload-http-error' => 'HTTP 오류 ë°œìƒ: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'ZIP íŒŒì¼ ê²€ì‚¬ë¥¼ 위해 파ì¼ì„ 여는 ë„중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤.',
+'zip-wrong-format' => '지정한 파ì¼ì´ ZIP 파ì¼ì´ 아닙니다.',
+'zip-bad' => 'ì´ ZIP 파ì¼ì´ 잘못ë˜ì—ˆê±°ë‚˜ ì½ì„ 수 없습니다.
+ë³´ì•ˆì„ ìœ„í•œ 검사를 ì •ìƒì ìœ¼ë¡œ 수행할 수 없습니다.',
+'zip-unsupported' => 'ì´ ZIP 파ì¼ì€ 미디어위키ì—ì„œ 지ì›í•˜ì§€ 않는 ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ê³  있습니다.
+보안 검사를 ì •ìƒì ìœ¼ë¡œ 수행할 수 없습니다.',
+
+# Special:UploadStash
+'uploadstash' => 'íŒŒì¼ ì˜¬ë¦¬ê¸° ìž„ì‹œ 저장',
+'uploadstash-summary' => 'ì´ íŽ˜ì´ì§€ëŠ” ìœ„í‚¤ì— ë“±ë¡ë˜ì§€ëŠ” 않았지만 올리는 과정 ì¤‘ì— ìžˆëŠ” 파ì¼ì„ 열람할 수 있습니다. ì´ íŒŒì¼ë“¤ì€ ì˜¬ë¦°ì´ ì™¸ì—는 ë³¼ 수 없습니다.',
+'uploadstash-clear' => 'ìž„ì‹œ 저장한 íŒŒì¼ ì œê±°í•˜ê¸°',
+'uploadstash-nofiles' => 'ìž„ì‹œ 저장한 파ì¼ì´ 없습니다.',
+'uploadstash-badtoken' => 'ì´ ë™ìž‘ì„ ìˆ˜í–‰í•˜ëŠ” ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤. 편집 토í°ì´ 만료ë˜ì—ˆì„ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤. 다시 ì‹œë„í•´ 보십시오.',
+'uploadstash-errclear' => '파ì¼ì„ 제거하는 ë° ì‹¤íŒ¨í–ˆìŠµë‹ˆë‹¤.',
+'uploadstash-refresh' => 'íŒŒì¼ ëª©ë¡ì„ 새로고침',
+
# img_auth script messages
'img-auth-accessdenied' => 'ì ‘ê·¼ 거부ë¨',
-'img-auth-nopathinfo' => 'PATH_INFO 가 빠졌습니다.
-ì„œë²„ì— ì´ ì •ë³´ê°€ 설정ë˜ì–´ 있지 않습니다.
-CGI 기반ì´ê±°ë‚˜ img_auth 를 지ì›í•˜ì§€ ì•Šì„ ìˆ˜ 있습니다.
-http://www.mediawiki.org/wiki/Manual:Image_Authorization 를 참고하세요.',
+'img-auth-nopathinfo' => 'PATH_INFO ê°’ì„ ì•Œ 수 없습니다.
+서버가 ì´ ì •ë³´ë¥¼ ë°›ì„ ìˆ˜ 있ë„ë¡ ì„¤ì •ë˜ì–´ 있지 않습니다.
+ì´ëŸ¬í•œ 경우는 서버가 CGI 기반ì´ê³  img_auth를 지ì›í•˜ì§€ ì•Šì„ ë•Œ 나타날 수 있습니다.
+[//www.mediawiki.org/wiki/Manual:Image_Authorization 그림 ê¶Œí•œì— ëŒ€í•´ ìžì„¸ížˆ 알아보려면 여기를 í´ë¦­í•˜ì„¸ìš”.]',
'img-auth-notindir' => '요청한 경로가 설정한 업로드 ë””ë ‰í† ë¦¬ì— ì—†ìŠµë‹ˆë‹¤.',
'img-auth-badtitle' => '"$1"ì—ì„œ 바른 ì œëª©ì„ ë§Œë“¤ 수 없습니다.',
'img-auth-nologinnWL' => 'ë‹¹ì‹ ì€ ë¡œê·¸ì¸í•˜ì§€ 않았으며 "$1" 파ì¼ì€ í™”ì´íŠ¸ë¦¬ìŠ¤íŠ¸ì— 존재하지 않습니다.',
@@ -1788,7 +1838,7 @@ URLì´ ë§žê³  해당 웹사ì´íŠ¸ê°€ ìž‘ë™í•˜ëŠ”지 확ì¸í•´ì£¼ì„¸ìš”.',
ì´ íŒŒì¼ì„ 가리키는 모든 문서를 보려면 [[Special:WhatLinksHere/$2|여기]]를 참고해 주십시오.',
'nolinkstoimage' => 'ì´ íŒŒì¼ì„ 사용하는 문서가 없습니다.',
'morelinkstoimage' => 'ì´ íŒŒì¼ì´ ì“°ì´ê³  있는 문서 ëª©ë¡ [[Special:WhatLinksHere/$1|ë” ë³´ê¸°]].',
-'redirectstofile' => 'ë‹¤ìŒ íŒŒì¼ $1개가 ì´ íŒŒì¼ë¡œ 넘겨주고 있습니다:',
+'linkstoimage-redirect' => '$1 (íŒŒì¼ ë„˜ê²¨ì£¼ê¸°) $2',
'duplicatesoffile' => 'ë‹¤ìŒ íŒŒì¼ $1개가 ì´ íŒŒì¼ê³¼ 중복ë©ë‹ˆë‹¤ ([[Special:FileDuplicateSearch/$2|ìžì„¸í•œ ì •ë³´]]):',
'sharedupload' => 'ì´ íŒŒì¼ì€ $1으로부터 왔고, 다른 프로ì íŠ¸ì—ì„œ 사용하고 ìžˆì„ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤.',
'sharedupload-desc-there' => 'ì´ íŒŒì¼ì€ $1ì— ìžˆìœ¼ë©°, 다른 프로ì íŠ¸ì—ì„œ 사용하고 ìžˆì„ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤.
@@ -1879,18 +1929,19 @@ URLì´ ë§žê³  해당 웹사ì´íŠ¸ê°€ ìž‘ë™í•˜ëŠ”지 확ì¸í•´ì£¼ì„¸ìš”.',
'statistics-users-active-desc' => '최근 $1ì¼ ë™ì•ˆ 활ë™í•œ 사용ìž',
'statistics-mostpopular' => '가장 ë§Žì´ ì½ížŒ 문서',
-'disambiguations' => 'ë™ìŒì´ì˜ 문서 목ë¡',
+'disambiguations' => 'ë™ìŒì´ì˜ 문서를 가리키는 문서 목ë¡',
'disambiguationspage' => 'Template:Disambig',
'disambiguations-text' => "다ìŒì˜ ë¬¸ì„œë“¤ì€ '''ë™ìŒì´ì˜ 문서'''를 가리키고 있습니다.
ê·¸ ë§í¬ë¥¼ 다른 ì ì ˆí•œ 문서로 ì—°ê²°í•´ 주어야 합니다.<br />
[[MediaWiki:Disambiguationspage]]ì—ì„œ ë§í¬ëœ í‹€ì„ ì‚¬ìš©í•˜ëŠ” 문서를 ë™ìŒì´ì˜ 문서로 간주합니다.",
-'doubleredirects' => 'ì´ì¤‘ 넘겨주기 목ë¡',
-'doubleredirectstext' => 'ì´ ë¬¸ì„œëŠ” 다른 넘겨주기 문서로 넘겨주고 있는 ë¬¸ì„œì˜ ëª©ë¡ìž…니다.
+'doubleredirects' => 'ì´ì¤‘ 넘겨주기 목ë¡',
+'doubleredirectstext' => 'ì´ ë¬¸ì„œëŠ” 다른 넘겨주기 문서로 넘겨주고 있는 ë¬¸ì„œì˜ ëª©ë¡ìž…니다.
매 줄ì—는 첫 번째 문서와 ë‘ ë²ˆì§¸ ë¬¸ì„œì˜ ë§í¬ê°€ 있습니다. 그리고 보통 첫 번째 문서가 넘겨주어야 í•  "실제" ë¬¸ì„œì¸ ë‘ ë²ˆì§¸ ë„˜ê²¨ì£¼ê¸°ì˜ ëŒ€ìƒì´ 있습니다.
<del>ì·¨ì†Œì„ ì´ ê·¸ì¸</del> ë¶€ë¶„ì€ ì´ë¯¸ í•´ê²°ë˜ì—ˆìŠµë‹ˆë‹¤.',
-'double-redirect-fixed-move' => '[[$1]] 문서를 옮겼습니다. ì´ ë¬¸ì„œëŠ” ì´ì œ [[$2]] 문서로 넘겨ì¤ë‹ˆë‹¤.',
-'double-redirect-fixer' => '넘겨주기 수리꾼',
+'double-redirect-fixed-move' => '[[$1]] 문서를 옮겼습니다. ì´ ë¬¸ì„œëŠ” ì´ì œ [[$2]] 문서로 넘겨ì¤ë‹ˆë‹¤.',
+'double-redirect-fixed-maintenance' => '[[$1]]ì—ì„œ [[$2]]ë¡œ ì´ì¤‘ 넘겨주기를 고치는 중',
+'double-redirect-fixer' => '넘겨주기 수리꾼',
'brokenredirects' => 'ëŠê¸´ 넘겨주기 목ë¡',
'brokenredirectstext' => '존재하지 않는 문서로 넘겨주기가 ë˜ì–´ 있는 ë¬¸ì„œì˜ ëª©ë¡ìž…니다:',
@@ -1910,7 +1961,7 @@ URLì´ ë§žê³  해당 웹사ì´íŠ¸ê°€ ìž‘ë™í•˜ëŠ”지 확ì¸í•´ì£¼ì„¸ìš”.',
'nlinks' => 'ë§í¬ $1ê°œ',
'nmembers' => '문서 $1개',
'nrevisions' => '편집 $1개',
-'nviews' => '$1 번 ì½ìŒ',
+'nviews' => '$1회 ì½ìŒ',
'nimagelinks' => '{{PLURAL:$1}}ê°œ 문서ì—ì„œ 사용 중',
'ntransclusions' => '{{PLURAL:$1}}ê°œ 문서ì—ì„œ 사용 중',
'specialpage-empty' => 'ëª…ë ¹ì— ëŒ€í•œ 결과가 없습니다.',
@@ -1967,6 +2018,7 @@ URLì´ ë§žê³  해당 웹사ì´íŠ¸ê°€ ìž‘ë™í•˜ëŠ”지 확ì¸í•´ì£¼ì„¸ìš”.',
'pager-newer-n' => 'ì´ì „ $1ê°œ',
'pager-older-n' => 'ë‹¤ìŒ $1ê°œ',
'suppress' => '오버사ì´íŠ¸',
+'querypage-disabled' => 'ì´ íŠ¹ìˆ˜ 문서는 성능ìƒì˜ ì´ìœ ë¡œ 비활성화ë˜ì—ˆìŠµë‹ˆë‹¤.',
# Book sources
'booksources' => '책 찾기',
@@ -1976,8 +2028,8 @@ URLì´ ë§žê³  해당 웹사ì´íŠ¸ê°€ ìž‘ë™í•˜ëŠ”지 확ì¸í•´ì£¼ì„¸ìš”.',
'booksources-invalid-isbn' => '입력한 ISBNì´ ìž˜ëª»ëœ ê²ƒìœ¼ë¡œ 보입니다; ì›ë³¸ê³¼ 대조해 보십시오.',
# Special:Log
-'specialloguserlabel' => 'ì´ë¦„:',
-'speciallogtitlelabel' => '제목:',
+'specialloguserlabel' => 'ìž‘ì—… 수행ìž:',
+'speciallogtitlelabel' => 'ëŒ€ìƒ (제목 ë˜ëŠ” 사용ìž):',
'log' => 'ê¸°ë¡ ëª©ë¡',
'all-logs-page' => '모든 공개 기ë¡',
'alllogstext' => '{{SITENAME}}ì—ì„œì˜ ê¸°ë¡ì´ ëª¨ë‘ ë‚˜ì™€ 있습니다.
@@ -2017,12 +2069,13 @@ URLì´ ë§žê³  해당 웹사ì´íŠ¸ê°€ ìž‘ë™í•˜ëŠ”지 확ì¸í•´ì£¼ì„¸ìš”.',
'sp-deletedcontributions-contribs' => '기여',
# Special:LinkSearch
-'linksearch' => '웹 ë§í¬ 검색',
+'linksearch' => '외부 ë§í¬ 검색',
'linksearch-pat' => '검색 패턴:',
'linksearch-ns' => 'ì´ë¦„공간:',
'linksearch-ok' => '검색',
-'linksearch-text' => '"*.wikipedia.org"와 ê°™ì´ ì™€ì¼ë“œì¹´ë“œë¥¼ 사용할 수 있습니다.<br />
-지ì›í•˜ëŠ” 프로토콜 목ë¡: <tt>$1</tt>',
+'linksearch-text' => '"*.wikipedia.org"와 ê°™ì´ ì™€ì¼ë“œì¹´ë“œë¥¼ 사용할 수 있습니다.
+ì ì–´ë„ "*.org"와 ê°™ì´ ìµœìƒìœ„ ë„ë©”ì¸ì„ 입력해야 합니다.<br />
+지ì›í•˜ëŠ” 프로토콜 목ë¡: <tt>$1</tt> (검색할 ë•Œ ì´ê²ƒì„ 추가하지 마세요)',
'linksearch-line' => '$2ì—ì„œ $1 ì„ ë§í¬í•˜ê³  있습니다.',
'linksearch-error' => '와ì¼ë“œì¹´ë“œëŠ” ì£¼ì†Œì˜ ì²˜ìŒ ë¶€ë¶„ì—만 ì‚¬ìš©ë  ìˆ˜ 있습니다.',
@@ -2083,6 +2136,10 @@ URLì´ ë§žê³  해당 웹사ì´íŠ¸ê°€ ìž‘ë™í•˜ëŠ”지 확ì¸í•´ì£¼ì„¸ìš”.',
'noemailtext' => 'ì´ ì‚¬ìš©ìžëŠ” 올바른 ì´ë©”ì¼ ì£¼ì†Œë¥¼ 입력하지 않았습니다.',
'nowikiemailtitle' => 'ì´ë©”ì¼ì´ 허용ë˜ì§€ ì•ŠìŒ',
'nowikiemailtext' => 'ì´ ì‚¬ìš©ìžëŠ” 다른 사용ìžë¡œë¶€í„°ì˜ ì´ë©”ì¼ì„ 받지 ì•Šë„ë¡ ì„¤ì •í•˜ì˜€ìŠµë‹ˆë‹¤.',
+'emailnotarget' => '수신ìžë¡œ 없는 사용ìžë¥¼ 지정하였거나 계정 ì´ë¦„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤.',
+'emailtarget' => 'ìˆ˜ì‹ ìž ê³„ì •ëª… ìž…ë ¥',
+'emailusername' => '계정 ì´ë¦„:',
+'emailusernamesubmit' => '확ì¸',
'email-legend' => '{{SITENAME}}ì˜ ë‹¤ë¥¸ 사용ìžì—게 ì´ë©”ì¼ì„ 보내기',
'emailfrom' => 'ì´ë©”ì¼ ë°œì‹ ìž:',
'emailto' => '수신ìž:',
@@ -2107,10 +2164,10 @@ URLì´ ë§žê³  해당 웹사ì´íŠ¸ê°€ ìž‘ë™í•˜ëŠ”지 확ì¸í•´ì£¼ì„¸ìš”.',
'watchlistanontext' => '주시문서 목ë¡ì„ 보거나 고치려면 $1 하세요.',
'watchnologin' => '로그ì¸í•˜ì§€ ì•ŠìŒ',
'watchnologintext' => '주시문서 목ë¡ì„ 고치려면 [[Special:UserLogin|로그ì¸]]해야 합니다.',
-'addedwatch' => '주시문서 목ë¡ì— 추가',
+'addwatch' => '주시문서 목ë¡ì— 추가',
'addedwatchtext' => "\"[[:\$1]]\" 문서를 [[Special:Watchlist|주시문서 목ë¡]]ì— ì¶”ê°€í–ˆìŠµë‹ˆë‹¤.
앞으로 ì´ ë¬¸ì„œë‚˜ 토론 문서가 바뀌면 [[Special:RecentChanges|최근 바뀜]]ì—ì„œ 알아보기 쉽게 '''êµµì€ ê¸€ì”¨'''ë¡œ ë³´ì¼ ê²ƒìž…ë‹ˆë‹¤.",
-'removedwatch' => '주시문서 목ë¡ì—ì„œ 제거',
+'removewatch' => '주시문서 목ë¡ì—ì„œ 제거',
'removedwatchtext' => '"[[:$1]]" 문서를 [[Special:Watchlist|주시문서 목ë¡]]ì—ì„œ ëºìŠµë‹ˆë‹¤.',
'watch' => '주시',
'watchthispage' => '주시하기',
@@ -2131,8 +2188,9 @@ URLì´ ë§žê³  해당 웹사ì´íŠ¸ê°€ ìž‘ë™í•˜ëŠ”지 확ì¸í•´ì£¼ì„¸ìš”.',
'watchlist-options' => '주시문서 ëª©ë¡ ì„¤ì •',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => '주시목ë¡ì— 추가 중...',
-'unwatching' => '주시 해제하는 중...',
+'watching' => '주시 추가 중…',
+'unwatching' => '주시 해제 중…',
+'watcherrortext' => '"$1" ë¬¸ì„œì— ëŒ€í•œ 주시 여부를 바꾸는 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤.',
'enotif_mailer' => '{{SITENAME}} ìžë™ 알림 ë©”ì¼',
'enotif_reset' => '모든 문서를 방문한 것으로 표시하기',
@@ -2163,16 +2221,16 @@ $NEWPAGE
--
ì´ë©”ì¼ ì•Œë¦¼ ì„¤ì •ì„ ë°”ê¾¸ì‹œë ¤ë©´ ì´ê³³ì„ 방문해주세요:
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
주시문서 ì„¤ì •ì„ ë°”ê¾¸ë ¤ë©´ 다ìŒì„ 사용하세요:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
주시문서ì—ì„œ ì´ ë¬¸ì„œë¥¼ 지우려면 ì´ê³³ì„ 방문해주세요:
$UNWATCHURL
ë„ì›€ì„ ì–»ê±°ë‚˜ 피드백 하기:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => '문서 삭제하기',
@@ -2187,7 +2245,7 @@ $UNWATCHURL
'confirmdeletetext' => '문서와 문서 역사를 삭제하려고 합니다. 삭제하려는 문서가 맞는지, ì´ ë¬¸ì„œë¥¼ 삭제하는 ê²ƒì´ [[{{MediaWiki:Policy-url}}|ì •ì±…]]ì— ë§žëŠ” í–‰ë™ì¸ì§€ë¥¼ 확ì¸í•´ 주세요.',
'actioncomplete' => '명령 완료',
'actionfailed' => '명령 실패',
-'deletedtext' => '‘<nowiki>$1</nowiki>’ 문서를 삭제했습니다. 최근 ì‚­ì œ 기ë¡ì€ $2ì— ìžˆìŠµë‹ˆë‹¤.',
+'deletedtext' => '‘$1’ 문서를 삭제했습니다. 최근 ì‚­ì œ 기ë¡ì€ $2ì— ìžˆìŠµë‹ˆë‹¤.',
'deletedarticle' => '사용ìžê°€ [[$1]] 문서를 삭제하였습니다.',
'suppressedarticle' => '"[[$1]]"를 숨김',
'dellogpage' => 'ì‚­ì œ 기ë¡',
@@ -2233,15 +2291,15 @@ $UNWATCHURL
'modifiedarticleprotection' => '‘[[$1]]’ ë¬¸ì„œì˜ ë³´í˜¸ ì„¤ì •ì„ ë³€ê²½í•¨',
'unprotectedarticle' => '‘[[$1]]’ 문서를 보호 해제함',
'movedarticleprotection' => 'ë¬¸ì„œì˜ ë³´í˜¸ ì„¤ì •ì„ "[[$2]]"ì—ì„œ "[[$1]]"으로 옮김',
-'protect-title' => '"$1" 보호하기',
-'prot_1movedto2' => '[[$1]]ì„(를) [[$2]](으)ë¡œ 옮김',
+'protect-title' => '‘$1’ 보호하기',
+'prot_1movedto2' => '[[$1]] 문서를 [[$2]] 문서로 ì´ë™í•¨',
'protect-legend' => '보호 확ì¸',
'protectcomment' => 'ì´ìœ :',
'protectexpiry' => '보호 기간:',
'protect_expiry_invalid' => '보호 ê¸°ê°„ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤.',
'protect_expiry_old' => 'ê¸°í•œì„ ê³¼ê±°ë¡œ 입력했습니다.',
'protect-unchain-permissions' => '다른 보호 ì„¤ì •ì„ ìˆ˜ë™ìœ¼ë¡œ 설정하기',
-'protect-text' => "'''<nowiki>$1</nowiki>''' ë¬¸ì„œì˜ ë³´í˜¸ ìˆ˜ì¤€ì„ ë³´ê±°ë‚˜ 변경할 수 있습니다.",
+'protect-text' => "'''$1''' ë¬¸ì„œì˜ ë³´í˜¸ ìˆ˜ì¤€ì„ ë³´ê±°ë‚˜ 변경할 수 있습니다.",
'protect-locked-blocked' => "ì°¨ë‹¨ëœ ë™ì•ˆì—는 보호 ì„¤ì •ì„ ë°”ê¿€ 수 없습니다. '''$1''' ë¬¸ì„œì˜ ë³´í˜¸ ì„¤ì •ì€ ë‹¤ìŒê³¼ 같습니다:",
'protect-locked-dblock' => "ë°ì´í„°ë² ì´ìŠ¤ê°€ 잠겨 문서 보호 ì„¤ì •ì„ ë°”ê¿€ 수 없습니다. '''$1''' ë¬¸ì„œì˜ í˜„ìž¬ ì„¤ì •ì€ ë‹¤ìŒê³¼ 같습니다:",
'protect-locked-access' => "문서 보호 ìˆ˜ì¤€ì„ ë³€ê²½í•  ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤. '''$1''' ë¬¸ì„œì˜ ê¶Œí•œì€ ë‹¤ìŒê³¼ 같습니다.",
@@ -2293,9 +2351,8 @@ $UNWATCHURL
'undeletepagetext' => 'ë‹¤ìŒ {{PLURAL:$1|문서는|문서 $1개는}} ì‚­ì œë˜ì—ˆì§€ë§Œ ì•„ì§ ë³´ê´€ë˜ì–´ 있고 ë˜ì‚´ë¦´ 수 있습니다.
ë³´ê´€ëœ ë¬¸ì„œëŠ” 주기ì ìœ¼ë¡œ ì‚­ì œë  ê²ƒìž…ë‹ˆë‹¤.',
'undelete-fieldset-title' => '문서 복구',
-'undeleteextrahelp' => "문서 역사 전체를 복구하려면 모든 ì²´í¬ë°•ìŠ¤ì˜ ì„ íƒì„ 풀고 '''복구'''를 누르세요.
-특정한 버전만 복구하려면 복구하려는 ë²„ì „ì„ ì„ íƒí•˜ê³  '''복구'''를 누르세요.
-'''초기화'''를 누르면 모든 ì„ íƒì´ 취소ë©ë‹ˆë‹¤.",
+'undeleteextrahelp' => "문서 역사 전체를 복구하려면 모든 ì²´í¬ë°•ìŠ¤ì˜ ì„ íƒì„ 해제하고 '''{{int:undeletebtn}}'''를 누르세요.
+특정한 버전만 복구하려면 복구하려는 ë²„ì „ì„ ì„ íƒí•˜ê³  '''{{int:undeletebtn}}'''를 누르세요.",
'undeleterevisions' => 'íŒ $1ê°œ 보관중',
'undeletehistory' => '문서를 ë˜ì‚´ë¦¬ë©´ 모든 역사가 ê°™ì´ ë³µêµ¬ë©ë‹ˆë‹¤.
문서가 ì‚­ì œëœ ë’¤ ê°™ì€ ì´ë¦„ì˜ ë¬¸ì„œê°€ 만들어졌다면, 복구ë˜ëŠ” 역사는 지금 ì—­ì‚¬ì˜ ê³¼ê±° ë¶€ë¶„ì— ë‚˜íƒ€ë‚  것입니다.',
@@ -2340,9 +2397,12 @@ $1',
'undelete-show-file-submit' => '예',
# Namespace form on various pages
-'namespace' => 'ì´ë¦„공간:',
-'invert' => 'ì„ íƒ ë°˜ì „',
-'blanknamespace' => '(ì¼ë°˜)',
+'namespace' => 'ì´ë¦„공간:',
+'invert' => 'ì„ íƒ ë°˜ì „',
+'tooltip-invert' => 'ì„ íƒí•œ ì´ë¦„ê³µê°„ì— ìžˆëŠ” ë¬¸ì„œì˜ ë°”ë€œì„ ìˆ¨ê¸°ë ¤ë©´ ì´ ìƒìžì— ì²´í¬í•´ì£¼ì„¸ìš”.',
+'namespace_association' => 'ê´€ë ¨ëœ ì´ë¦„공간',
+'tooltip-namespace_association' => 'ì„ íƒí•œ ì´ë¦„공간과 ê´€ë ¨ëœ í† ë¡ /본문 ì´ë¦„ê³µê°„ì„ ê°™ì´ ì„ íƒí•©ë‹ˆë‹¤.',
+'blanknamespace' => '(ì¼ë°˜)',
# Contributions
'contributions' => 'ì‚¬ìš©ìž ê¸°ì—¬',
@@ -2391,13 +2451,15 @@ $1',
'whatlinkshere-filters' => 'í•„í„°',
# Block/unblock
+'autoblockid' => 'ìžë™ 차단 #$1',
+'block' => 'ì‚¬ìš©ìž ì°¨ë‹¨',
+'unblock' => 'ì‚¬ìš©ìž ì°¨ë‹¨ í•´ì œ',
'blockip' => 'ì‚¬ìš©ìž ì°¨ë‹¨',
'blockip-title' => '특정 사용ìžë¥¼ 차단하기',
'blockip-legend' => 'ì‚¬ìš©ìž ì°¨ë‹¨',
'blockiptext' => '차단할 IP 주소나 ì‚¬ìš©ìž ì´ë¦„ì„ ì•„ëž˜ì— ì ì–´ 주세요.
ì°¨ë‹¨ì€ ë¬¸ì„œ 훼ì†ì„ 막기 위해, [[{{MediaWiki:Policy-url}}|ì •ì±…]]ì— ì˜í•´ì„œë§Œ ì´ë£¨ì–´ì ¸ì•¼ 합니다.
차단 ì´ìœ ë¥¼ ê°™ì´ ì ì–´ì£¼ì„¸ìš”(예: 특정 문서 훼ì†).',
-'ipaddress' => 'IP 주소:',
'ipadressorusername' => 'IP 주소 ë˜ëŠ” 계정 ì´ë¦„:',
'ipbexpiry' => '기간:',
'ipbreason' => 'ì´ìœ :',
@@ -2410,7 +2472,7 @@ $1',
** 협박성 í–‰ë™
** 다중 계정 악용
** 부ì ì ˆí•œ 계정 ì´ë¦„',
-'ipbanononly' => 'ìµëª… 사용ìžë§Œ 차단하기',
+'ipb-hardblock' => 'ì´ IP를 ì´ìš©í•˜ëŠ” 로그ì¸í•œ 사용ìžê°€ 편집하는 ê²ƒì„ ë§‰ê¸°',
'ipbcreateaccount' => '계정 ìƒì„±ì„ 막기',
'ipbemailban' => 'ì´ë©”ì¼ì„ 보내지 못하ë„ë¡ ë§‰ê¸°',
'ipbenableautoblock' => 'ì´ ì‚¬ìš©ìžê°€ ìµœê·¼ì— ì‚¬ìš©í–ˆê±°ë‚˜ 앞으로 사용하는 IP를 ìžë™ìœ¼ë¡œ 막기',
@@ -2421,11 +2483,14 @@ $1',
'ipbotherreason' => '다른 ì´ìœ /추가ì ì¸ ì´ìœ :',
'ipbhidename' => 'ì‚¬ìš©ìž ì´ë¦„ì„ íŽ¸ì§‘ 역사ì—ì„œ 숨기기',
'ipbwatchuser' => 'ì´ ì‚¬ìš©ìž ë¬¸ì„œì™€ 사용ìží† ë¡  문서를 주시하기',
-'ipballowusertalk' => 'ì°¨ë‹¨ëœ ì¤‘ì—ë„ ìžì‹ ì˜ 토론 문서는 편집할 수 있게 허용',
+'ipb-disableusertalk' => 'ì°¨ë‹¨ëœ ë™ì•ˆ ìžì‹ ì˜ 사용ìží† ë¡  문서를 편집하지 못하ë„ë¡ ë§‰ê¸°',
'ipb-change-block' => 'ì´ ì„¤ì •ìœ¼ë¡œ ì´ ì‚¬ìš©ìžë¥¼ 다시 차단합니다',
+'ipb-confirm' => '차단 확ì¸',
'badipaddress' => 'ìž˜ëª»ëœ IP 주소',
'blockipsuccesssub' => '차단 완료',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] 사용ìžê°€ 차단ë˜ì—ˆìŠµë‹ˆë‹¤. ì°¨ë‹¨ëœ ì‚¬ìš©ìž ëª©ë¡ì€ [[Special:IPBlockList|여기]]ì—ì„œ ë³¼ 수 있습니다.',
+'ipb-blockingself' => 'ìžê¸° ìžì‹ ì„ 차단하려고 합니다. ì •ë§ë¡œ 실행할까요?',
+'ipb-confirmhideuser' => 'ë‹¹ì‹ ì€ ì‚¬ìš©ìžë¥¼ 차단하면서 "계정 숨기기" ì„¤ì •ì„ ì„ íƒí–ˆìŠµë‹ˆë‹¤. ì´ë¡œì¨ 모든 기ë¡ì—ì„œ ì´ ì‚¬ìš©ìžì˜ 계정 ì´ë¦„ì„ ìˆ¨ê¸°ê²Œ ë©ë‹ˆë‹¤. ì •ë§ë¡œ ê³„ì •ì„ ìˆ¨ê¸°ì‹œê² ìŠµë‹ˆê¹Œ?',
'ipb-edit-dropdown' => '차단 ì´ìœ  ëª©ë¡ íŽ¸ì§‘í•˜ê¸°',
'ipb-unblock-addr' => '$1 차단 해제하기',
'ipb-unblock' => '사용ìž/IP 주소 차단 해제하기',
@@ -2435,17 +2500,23 @@ $1',
'unblockiptext' => 'ì•„ëž˜ì˜ ì–‘ì‹ì— 차단 해제하려는 IP 주소나 ì‚¬ìš©ìž ì´ë¦„ì„ ìž…ë ¥í•˜ì„¸ìš”.',
'ipusubmit' => '차단 해제',
'unblocked' => '[[User:$1|$1]] ì‚¬ìš©ìž ì°¨ë‹¨ í•´ì œë¨',
+'unblocked-range' => '$1 ëŒ€ì—­ì´ ì°¨ë‹¨ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.',
'unblocked-id' => '차단 $1 í•´ì œë¨',
+'blocklist' => 'ì°¨ë‹¨ëœ ì‚¬ìš©ìž ëª©ë¡',
'ipblocklist' => '현재 ì°¨ë‹¨ëœ IP 주소/ì‚¬ìš©ìž ì´ë¦„',
'ipblocklist-legend' => '차단 ì¤‘ì¸ ì‚¬ìš©ìž ì°¾ê¸°',
-'ipblocklist-username' => '계정 ì´ë¦„/IP 주소:',
-'ipblocklist-sh-userblocks' => '계정 ì°¨ë‹¨ì„ $1',
-'ipblocklist-sh-tempblocks' => 'ìž„ì‹œ ì°¨ë‹¨ì„ $1',
-'ipblocklist-sh-addressblocks' => 'ë‹¨ì¼ IP ì°¨ë‹¨ì„ $1',
+'blocklist-userblocks' => 'ê³„ì •ì— ëŒ€í•œ 차단 숨기기',
+'blocklist-tempblocks' => 'ê¸°í•œì´ ì •í•´ì§„ ì°¨ë‹¨ì„ ìˆ¨ê¸°ê¸°',
+'blocklist-addressblocks' => 'ë‹¹ì¼ IP ì°¨ë‹¨ì„ ìˆ¨ê¸°ê¸°',
+'blocklist-timestamp' => '날짜/ì‹œê°',
+'blocklist-target' => '차단 대ìƒ',
+'blocklist-expiry' => '차단 기한',
+'blocklist-by' => '차단한 관리ìž',
+'blocklist-params' => '차단 설정',
+'blocklist-reason' => 'ì´ìœ ',
'ipblocklist-submit' => '찾기',
'ipblocklist-localblock' => '로컬 차단',
'ipblocklist-otherblocks' => '다른 {{PLURAL:$1|}}차단 기ë¡',
-'blocklistline' => '$1ì— $2 사용ìžëŠ” $3ì„ ì°¨ë‹¨í•¨ ($4)',
'infiniteblock' => '무기한',
'expiringblock' => '$1 $2ì— í•´ì œ',
'anononlyblock' => 'ìµëª… 사용ìžë§Œ',
@@ -2466,7 +2537,7 @@ $1 사용ìžê°€ ì°¨ë‹¨ëœ ì´ìœ ëŠ” 다ìŒê³¼ 같습니다: "$2"',
'blocklog-showsuppresslog' => 'ì´ ì‚¬ìš©ìžëŠ” ê³¼ê±°ì— ì°¨ë‹¨ëœ ì ì´ 있으며, ê·¸ 기ë¡ì´ 숨겨져 있습니다. 해당 사용ìžì˜ 차단 기ë¡ì€ 다ìŒê³¼ 같습니다.',
'blocklogentry' => '[[$1]] 사용ìžë¥¼ $2 차단함 $3',
'reblock-logentry' => '[[$1]] 사용ìžì˜ 차단 ê¸°ê°„ì„ $2(으)ë¡œ 변경 $3',
-'blocklogtext' => 'ì´ ëª©ë¡ì€ ì‚¬ìš©ìž ì°¨ë‹¨/차단 í•´ì œ 기ë¡ìž…니다. ìžë™ìœ¼ë¡œ ì°¨ë‹¨ëœ IP 주소는 ì—¬ê¸°ì— ë‚˜ì˜¤ì§€ 않습니다. [[Special:IPBlockList|여기]]ì—ì„œ 현재 ì°¨ë‹¨ëœ ì‚¬ìš©ìž ëª©ë¡ì„ ë³¼ 수 있습니다.',
+'blocklogtext' => 'ì´ ëª©ë¡ì€ ì‚¬ìš©ìž ì°¨ë‹¨/차단 í•´ì œ 기ë¡ìž…니다. ìžë™ìœ¼ë¡œ ì°¨ë‹¨ëœ IP 주소는 ì—¬ê¸°ì— ë‚˜ì˜¤ì§€ 않습니다. [[Special:BlockList|여기]]ì—ì„œ 현재 ì°¨ë‹¨ëœ ì‚¬ìš©ìž ëª©ë¡ì„ ë³¼ 수 있습니다.',
'unblocklogentry' => '$1ì„ ì°¨ë‹¨ 해제했습니다.',
'block-log-flags-anononly' => 'IP만 막ìŒ',
'block-log-flags-nocreate' => '계정 ìƒì„± 막ìŒ',
@@ -2480,9 +2551,9 @@ $1 사용ìžê°€ ì°¨ë‹¨ëœ ì´ìœ ëŠ” 다ìŒê³¼ 같습니다: "$2"',
'ipb_expiry_temp' => 'ì‚¬ìš©ìž ì´ë¦„ì„ ìˆ¨ê¸°ëŠ” ì°¨ë‹¨ì€ ë°˜ë“œì‹œ 무기한ì´ì–´ì•¼ 합니다.',
'ipb_hide_invalid' => '해당 ê³„ì •ì€ ë§‰ì„ ìˆ˜ 없습니다. ê¸°ì—¬ëŸ‰ì´ ë„ˆë¬´ 많습니다.',
'ipb_already_blocked' => '"$1" 사용ìžëŠ” ì´ë¯¸ 차단ë¨',
-'ipb-needreblock' => '== ì´ë¯¸ 차단ë˜ì–´ 있습니다 ==
-$1 사용ìžëŠ” ì´ë¯¸ 차단ë˜ì—ˆìŠµë‹ˆë‹¤. 차단 ì„¤ì •ì„ ë°”ê¾¸ì‹œê² ìŠµë‹ˆê¹Œ?',
+'ipb-needreblock' => '$1 사용ìžëŠ” ì´ë¯¸ 차단ë˜ì—ˆìŠµë‹ˆë‹¤. 차단 ì„¤ì •ì„ ë°”ê¾¸ì‹œê² ìŠµë‹ˆê¹Œ?',
'ipb-otherblocks-header' => '다른 {{PLURAL:$1|}}차단 기ë¡',
+'unblock-hideuser' => 'ì´ ê³„ì • ì´ë¦„ì´ ìˆ¨ê²¨ì ¸ 있기 ë•Œë¬¸ì— ì´ ì‚¬ìš©ìžë¥¼ 차단 해제할 수 없습니다.',
'ipb_cant_unblock' => '오류: 차단 ID $1ì´(ê°€) 존재하지 않습니다.
ì´ë¯¸ 차단 í•´ì œë˜ì—ˆì„ 수 있습니다.',
'ipb_blocked_as_range' => '오류: IP 주소 $1ì€ ì§ì ‘ 차단ë˜ì§€ 않았기 ë•Œë¬¸ì— ì°¨ë‹¨ 해제할 수 없습니다.
@@ -2520,6 +2591,7 @@ $1 사용ìžëŠ” ì´ë¯¸ 차단ë˜ì—ˆìŠµë‹ˆë‹¤. 차단 ì„¤ì •ì„ ë°”ê¾¸ì‹œê² ìŠµë‹
'unlockdbsuccesstext' => 'ë°ì´í„°ë² ì´ìŠ¤ 잠금 ìƒíƒœê°€ í•´ì œë˜ì—ˆìŠµë‹ˆë‹¤.',
'lockfilenotwritable' => 'ë°ì´í„°ë² ì´ìŠ¤ 잠금 파ì¼ì— 쓰기 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤. ë°ì´í„°ë² ì´ìŠ¤ë¥¼ 잠그거나 잠금 해제하려면, 웹 서버ì—ì„œ ì´ íŒŒì¼ì˜ 쓰기 ê¶Œí•œì„ ì„¤ì •í•´ì•¼ 합니다.',
'databasenotlocked' => 'ë°ì´í„°ë² ì´ìŠ¤ê°€ 잠겨 있지 않습니다.',
+'lockedbyandtime' => '($1ì´ $2 $3ì— ìž ê¸ˆ)',
# Move page
'move-page' => 'ì´ë™ $1',
@@ -2558,16 +2630,16 @@ $1 사용ìžëŠ” ì´ë¯¸ 차단ë˜ì—ˆìŠµë‹ˆë‹¤. 차단 ì„¤ì •ì„ ë°”ê¾¸ì‹œê² ìŠµë‹
'movearticle' => '문서 ì´ë™í•˜ê¸°',
'moveuserpage-warning' => "'''경고:''' ë‹¹ì‹ ì€ ì‚¬ìš©ìž ë¬¸ì„œë¥¼ 옮기려 하고 있습니다. ì‚¬ìš©ìž ë¬¸ì„œë§Œ ì´ë™ë˜ë©° 계정 ì´ë¦„ì´ ë°”ë€Œì§€ 않는다는 ì ì„ 명심해주시기 ë°”ëžë‹ˆë‹¤.",
'movenologin' => '로그ì¸í•˜ì§€ ì•ŠìŒ',
-'movenologintext' => '[[Special:UserLogin|로그ì¸]]해야만 문서를 ì´ë™í•  수 있습니다.',
+'movenologintext' => '문서를 ì´ë™í•˜ë ¤ë©´ [[Special:UserLogin|로그ì¸]]해야 합니다.',
'movenotallowed' => '문서를 ì´ë™í•  ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤.',
-'movenotallowedfile' => '파ì¼ì„ 옮길 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤.',
-'cant-move-user-page' => 'ì‚¬ìš©ìž ë¬¸ì„œë¥¼ 옮길 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤ (하위 문서는 제외).',
-'cant-move-to-user-page' => '문서를 ì‚¬ìš©ìž ë¬¸ì„œë¡œ 옮길 ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤ (하위 문서는 제외).',
+'movenotallowedfile' => '파ì¼ì„ ì´ë™í•  ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤.',
+'cant-move-user-page' => 'ì‚¬ìš©ìž ë¬¸ì„œë¥¼ ì´ë™í•  ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤(하위 문서는 예외).',
+'cant-move-to-user-page' => '문서를 ì‚¬ìš©ìž ë¬¸ì„œë¡œ ì´ë™í•  ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤(하위 문서는 예외).',
'newtitle' => '새 문서 ì´ë¦„',
-'move-watch' => 'ì´ ë¬¸ì„œ 주시하기',
+'move-watch' => '문서 주시하기',
'movepagebtn' => 'ì´ë™',
'pagemovedsub' => '문서 ì´ë™í•¨',
-'movepage-moved' => '\'\'\'"$1" 문서를 "$2" 문서로 ì´ë™í–ˆìŠµë‹ˆë‹¤.\'\'\'',
+'movepage-moved' => "'''‘$1’ 문서를 ‘$2’ 문서로 ì´ë™í–ˆìŠµë‹ˆë‹¤.'''",
'movepage-moved-redirect' => '넘겨주기 문서를 만들었습니다.',
'movepage-moved-noredirect' => '넘겨주기 문서를 남기지 않았습니다.',
'articleexists' => '문서가 ì´ë¯¸ 존재하거나 ì´ë¦„ì´ ì˜¬ë°”ë¥´ì§€ 않습니다.
@@ -2579,9 +2651,9 @@ $1 사용ìžëŠ” ì´ë¯¸ 차단ë˜ì—ˆìŠµë‹ˆë‹¤. 차단 ì„¤ì •ì„ ë°”ê¾¸ì‹œê² ìŠµë‹
'move-subpages' => '하위 ë¬¸ì„œë„ í•¨ê»˜ ($1ê°œ ì´í•˜) ì´ë™í•©ë‹ˆë‹¤.',
'move-talk-subpages' => '토론 ë¬¸ì„œì˜ í•˜ìœ„ ë¬¸ì„œë„ ($1개까지) 함께 ì´ë™í•©ë‹ˆë‹¤.',
'movepage-page-exists' => 'ì´ë™í•  수 없습니다. ‘$1’ 문서가 ì´ë¯¸ 존재합니다.',
-'movepage-page-moved' => '$1 문서를 $2 (으)로 옮겼습니다',
-'movepage-page-unmoved' => '$1 문서를 $2 (으)로 옮길 수 없습니다.',
-'movepage-max-pages' => '문서를 최대 $1ê°œ 옮겼고 나머지는 ìžë™ìœ¼ë¡œ 옮기지 않습니다.',
+'movepage-page-moved' => '‘$1’ 문서를 ‘$2’ 문서로 ì´ë™í–ˆìŠµë‹ˆë‹¤.',
+'movepage-page-unmoved' => '‘$1’ 문서를 ‘$2’ 문서로 ì´ë™í•  수 없습니다.',
+'movepage-max-pages' => '문서를 최대 $1ê°œ ì´ë™í–ˆìŠµë‹ˆë‹¤. 나머지 문서는 ìžë™ ì´ë™í•˜ì§€ 않습니다.',
'1movedto2' => '[[$1]] 문서를 [[$2]](으)로 옮김',
'1movedto2_redir' => '[[$1]] 문서를 [[$2]](으)ë¡œ 옮기면서 넘겨주기를 ë®ì–´ 씀',
'move-redirect-suppressed' => '넘겨주기가 ìƒì„±ë˜ì§€ ì•ŠìŒ',
@@ -2595,7 +2667,7 @@ $1 사용ìžëŠ” ì´ë¯¸ 차단ë˜ì—ˆìŠµë‹ˆë‹¤. 차단 ì„¤ì •ì„ ë°”ê¾¸ì‹œê² ìŠµë‹
'delete_and_move' => '삭제하고 ì´ë™',
'delete_and_move_text' => '== 삭제 필요 ==
-ì´ë™í•˜ë ¤ëŠ” 제목으로 ëœ [[:$1]] 문서가 ì´ë¯¸ 존재합니다.
+ì´ë™í•˜ë ¤ëŠ” 제목으로 ëœ â€˜[[:$1]]’ 문서가 ì´ë¯¸ 존재합니다.
삭제하고 ì´ë™í• ê¹Œìš”?',
'delete_and_move_confirm' => '네. 문서를 삭제합니다',
'delete_and_move_reason' => '문서를 ì´ë™í•˜ê¸° 위해 삭제함',
@@ -2644,7 +2716,7 @@ $1 사용ìžëŠ” ì´ë¯¸ 차단ë˜ì—ˆìŠµë‹ˆë‹¤. 차단 ì„¤ì •ì„ ë°”ê¾¸ì‹œê² ìŠµë‹
'allmessagesname' => 'ì´ë¦„',
'allmessagesdefault' => '기본 내용',
'allmessagescurrent' => '현재 내용',
-'allmessagestext' => '미디어위키 ì´ë¦„ê³µê°„ì— ìžˆëŠ” 모든 시스템 ë©”ì‹œì§€ì˜ ëª©ë¡ìž…니다. ë¯¸ë””ì–´ìœ„í‚¤ì˜ ë²ˆì—­ ìž‘ì—…ì— ê´€ì‹¬ì´ ìžˆìœ¼ë©´ [http://www.mediawiki.org/wiki/Localisation 미디어위키 지역화]나 [http://translatewiki.net translatewiki.net]ì— ì°¸ê°€í•´ì£¼ì„¸ìš”.',
+'allmessagestext' => '미디어위키 ì´ë¦„ê³µê°„ì— ìžˆëŠ” 모든 시스템 ë©”ì‹œì§€ì˜ ëª©ë¡ìž…니다. ë¯¸ë””ì–´ìœ„í‚¤ì˜ ë²ˆì—­ ìž‘ì—…ì— ê´€ì‹¬ì´ ìžˆìœ¼ë©´ [//www.mediawiki.org/wiki/Localisation 미디어위키 지역화]나 [//translatewiki.net translatewiki.net]ì— ì°¸ê°€í•´ì£¼ì„¸ìš”.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''ê°€ í•´ì œë˜ì–´ 있어서 ì´ ë¬¸ì„œëŠ” 쓸 수 없습니다.",
'allmessages-filter-legend' => 'í•„í„°',
'allmessages-filter' => '수정 ìƒíƒœë¡œ 거르기:',
@@ -2796,9 +2868,7 @@ $1 사용ìžëŠ” ì´ë¯¸ 차단ë˜ì—ˆìŠµë‹ˆë‹¤. 차단 ì„¤ì •ì„ ë°”ê¾¸ì‹œê² ìŠµë‹
'monobook.js' => '/* ì´ ìžë°”스í¬ë¦½íŠ¸ ì„¤ì •ì€ ëª¨ë…¸ë¶ ìŠ¤í‚¨ì„ ì‚¬ìš©í•˜ëŠ” 사용ìžì—게 ì ìš©ë©ë‹ˆë‹¤. */',
# Metadata
-'nodublincore' => 'ë”블린 코어 RDF 메타ë°ì´í„° ê¸°ëŠ¥ì€ ë¹„í™œì„±ë˜ì–´ 있습니다.',
-'nocreativecommons' => 'í¬ë¦¬ì—ì´í‹°ë¸Œ 커먼즈 RDF 메타ë°ì´í„° ê¸°ëŠ¥ì€ ë¹„í™œì„±ë˜ì–´ 있습니다.',
-'notacceptable' => 'í´ë¼ì´ì–¸íŠ¸ì—ì„œ ì¸ì‹ 가능한 출력 í¬ë§·ì´ 없습니다.',
+'notacceptable' => 'í´ë¼ì´ì–¸íŠ¸ì—ì„œ ì¸ì‹ 가능한 출력 í¬ë§·ì´ 없습니다.',
# Attribution
'anonymous' => '{{PLURAL:$1}}{{SITENAME}} ìµëª… 사용ìž',
@@ -2822,12 +2892,17 @@ $1 사용ìžëŠ” ì´ë¯¸ 차단ë˜ì—ˆìŠµë‹ˆë‹¤. 차단 ì„¤ì •ì„ ë°”ê¾¸ì‹œê² ìŠµë‹
'spam_blanking' => '모든 ë²„ì „ì— $1 ë§í¬ë¥¼ í¬í•¨í•˜ê³  있어 문서를 비움',
# Info page
-'infosubtitle' => '문서 정보',
-'numedits' => '편집 횟수(문서): $1',
-'numtalkedits' => '편집 횟수(토론 문서): $1',
-'numwatchers' => '주시하는 ì‚¬ìš©ìž ìˆ˜: $1',
-'numauthors' => '기여한 ì‚¬ìš©ìž ìˆ˜(문서): $1',
-'numtalkauthors' => '기여한 ì‚¬ìš©ìž ìˆ˜(토론 문서): $1',
+'pageinfo-title' => '"$1" ë¬¸ì„œì— ëŒ€í•œ ì •ë³´',
+'pageinfo-header-edits' => '편집',
+'pageinfo-header-watchlist' => '주시 현황',
+'pageinfo-header-views' => '보기 현황',
+'pageinfo-subjectpage' => '문서',
+'pageinfo-talkpage' => '토론 문서',
+'pageinfo-watchers' => '주시하는 ì‚¬ìš©ìž ìˆ˜',
+'pageinfo-edits' => '편집 수',
+'pageinfo-authors' => '서로 다른 편집ìžì˜ 수',
+'pageinfo-views' => 'ì½ížŒ 횟수',
+'pageinfo-viewsperedit' => 'ì½ížŒ 횟수/편집 수',
# Skin names
'skinname-standard' => 'í´ëž˜ì‹',
@@ -2840,25 +2915,6 @@ $1 사용ìžëŠ” ì´ë¯¸ 차단ë˜ì—ˆìŠµë‹ˆë‹¤. 차단 ì„¤ì •ì„ ë°”ê¾¸ì‹œê² ìŠµë‹
'skinname-modern' => '모ë˜',
'skinname-vector' => '벡터',
-# Math options
-'mw_math_png' => 'í•­ìƒ PNGë¡œ 표시',
-'mw_math_simple' => '아주 간단한 ê²ƒì€ HTMLë¡œ, 나머지는 PNGë¡œ',
-'mw_math_html' => '가능한 한 HTML로, 나머지는 PNG로',
-'mw_math_source' => 'TeXë¡œ 남겨둠 (í…스트 브ë¼ìš°ì €ìš©)',
-'mw_math_modern' => '최신 브ë¼ìš°ì € 사용ìžì—게 권장',
-'mw_math_mathml' => '가능하면 MathML로 (시험 중)',
-
-# Math errors
-'math_failure' => 'í•´ì„ ì‹¤íŒ¨',
-'math_unknown_error' => '알 수 없는 오류',
-'math_unknown_function' => '알 수 없는 함수',
-'math_lexing_error' => '어휘 오류',
-'math_syntax_error' => '구문 오류',
-'math_image_error' => 'PNG 변환 실패 - latex, dvipng(í˜¹ì€ dvips, gs, convert)ê°€ 올바르게 설치ë˜ì–´ 있는지 확ì¸í•´ 주세요.',
-'math_bad_tmpdir' => '수ì‹ì„ ìž„ì‹œ í´ë”ì— ì €ìž¥í•˜ê±°ë‚˜ í´ë”를 만들 수 없습니다.',
-'math_bad_output' => '수ì‹ì„ 출력 í´ë”ì— ì €ìž¥í•˜ê±°ë‚˜ í´ë”를 만들 수 없습니다.',
-'math_notexvc' => '실행할 수 있는 texvcì´ ì—†ìŠµë‹ˆë‹¤. ì„¤ì •ì„ ìœ„í•´ math/README를 ì½ì–´ 주세요.',
-
# Patrolling
'markaspatrolleddiff' => '검토한 문서로 표시',
'markaspatrolledtext' => 'ì´ ë¬¸ì„œë¥¼ 검토한 것으로 표시',
@@ -2872,7 +2928,7 @@ $1 사용ìžëŠ” ì´ë¯¸ 차단ë˜ì—ˆìŠµë‹ˆë‹¤. 차단 ì„¤ì •ì„ ë°”ê¾¸ì‹œê² ìŠµë‹
# Patrol log
'patrol-log-page' => '검토 기ë¡',
-'patrol-log-header' => 'ì´ ê¸°ë¡ì€ ê²€í† ëœ ë¬¸ì„œì— ëŒ€í•œ 기ë¡ìž…니다.',
+'patrol-log-header' => '문서 ê²€í† ì— ëŒ€í•œ 기ë¡ìž…니다.',
'patrol-log-line' => '$2 ë¬¸ì„œì˜ $1ì„ ê²€í† í•¨ $3',
'patrol-log-auto' => '(ìžë™)',
'patrol-log-diff' => 'ì œ$1번 íŒ',
@@ -2884,7 +2940,7 @@ $1 사용ìžëŠ” ì´ë¯¸ 차단ë˜ì—ˆìŠµë‹ˆë‹¤. 차단 ì„¤ì •ì„ ë°”ê¾¸ì‹œê² ìŠµë‹
'filedeleteerror-long' => '파ì¼ì„ 삭제하는 ë„중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤:
$1',
-'filedelete-missing' => '"$1" 파ì¼ì„ 삭제할 수 없습니다. 없는 파ì¼ìž…니다.',
+'filedelete-missing' => '‘$1’ 파ì¼ì„ 삭제할 수 없습니다. 파ì¼ì´ 존재하지 않습니다.',
'filedelete-old-unregistered' => '입력한 파ì¼ì˜ "$1" ë²„ì „ì´ ë°ì´í„°ë² ì´ìŠ¤ì— 존재하지 않습니다.',
'filedelete-current-unregistered' => '"$1" ì´ë¼ëŠ” ì´ë¦„ì„ ê°€ì§„ 파ì¼ì´ ë°ì´í„°ë² ì´ìŠ¤ì— 존재하지 않습니다.',
'filedelete-archive-read-only' => '웹 ì„œë²„ì˜ íŒŒì¼ ì €ìž¥ 위치 ‘$1â€™ì— ì“°ê¸° ê¶Œí•œì´ ì—†ìŠµë‹ˆë‹¤.',
@@ -2894,21 +2950,24 @@ $1',
'nextdiff' => 'ë‹¤ìŒ íŽ¸ì§‘ →',
# Media information
-'mediawarning' => "'''경고''': ì´ íŒŒì¼ì— 악성 코드가 í¬í•¨ë˜ì–´ ìžˆì„ ìˆ˜ 있습니다. 파ì¼ì„ 실행하면 ì»´í“¨í„°ì— ë¬¸ì œê°€ ìƒê¸¸ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤.",
-'imagemaxsize' => "그림 최대 í¬ê¸°:<br />''(íŒŒì¼ ë¬¸ì„œì— ì ìš©ë˜ëŠ” 기능)''",
-'thumbsize' => 'ì„¬ë„¤ì¼ í¬ê¸°:',
-'widthheightpage' => '$1×$2, $3페ì´ì§€',
-'file-info' => 'íŒŒì¼ í¬ê¸°: $1, MIME 종류: $2',
-'file-info-size' => '$1 × $2 픽셀, íŒŒì¼ í¬ê¸°: $3, MIME 종류: $4',
-'file-nohires' => '<small>최대 í•´ìƒë„입니다.</small>',
-'svg-long-desc' => 'SVG 파ì¼, 실제 í¬ê¸° $1 × $2 픽셀, íŒŒì¼ í¬ê¸° $3',
-'show-big-image' => '최대 í•´ìƒë„',
-'show-big-image-thumb' => '<small>미리보기 í¬ê¸°: $1 × $2 픽셀</small>',
-'file-info-gif-looped' => '반복ë¨',
-'file-info-gif-frames' => '$1 프레임',
-'file-info-png-looped' => '반복ë¨',
-'file-info-png-repeat' => '$1번 재ìƒë¨',
-'file-info-png-frames' => '$1 프레임',
+'mediawarning' => "'''경고''': ì´ íŒŒì¼ì— 악성 코드가 í¬í•¨ë˜ì–´ ìžˆì„ ìˆ˜ 있습니다. 파ì¼ì„ 실행하면 ì»´í“¨í„°ì— ë¬¸ì œê°€ ìƒê¸¸ ê°€ëŠ¥ì„±ì´ ìžˆìŠµë‹ˆë‹¤.",
+'imagemaxsize' => "그림 최대 í¬ê¸°:<br />''(íŒŒì¼ ë¬¸ì„œì— ì ìš©ë˜ëŠ” 기능)''",
+'thumbsize' => 'ì„¬ë„¤ì¼ í¬ê¸°:',
+'widthheightpage' => '$1×$2, $3페ì´ì§€',
+'file-info' => 'íŒŒì¼ í¬ê¸°: $1, MIME 종류: $2',
+'file-info-size' => '$1 × $2 픽셀, íŒŒì¼ í¬ê¸°: $3, MIME 종류: $4',
+'file-info-size-pages' => '$1 × $2 픽셀, íŒŒì¼ í¬ê¸°: $3, MIME 형ì‹: $4, $5{{PLURAL:$5|쪽}}',
+'file-nohires' => '<small>최대 í•´ìƒë„입니다.</small>',
+'svg-long-desc' => 'SVG 파ì¼, 실제 í¬ê¸° $1 × $2 픽셀, íŒŒì¼ í¬ê¸° $3',
+'show-big-image' => '최대 í•´ìƒë„',
+'show-big-image-preview' => '<small>미리 보기 í¬ê¸°: $1.</small>',
+'show-big-image-other' => '<small>다른 í•´ìƒë„: $1.</small>',
+'show-big-image-size' => '$1 × $2 픽셀',
+'file-info-gif-looped' => '반복ë¨',
+'file-info-gif-frames' => '$1 프레임',
+'file-info-png-looped' => '반복ë¨',
+'file-info-png-repeat' => '$1번 재ìƒë¨',
+'file-info-png-frames' => '$1 프레임',
# Special:NewFiles
'newimages' => '새 íŒŒì¼ ëª©ë¡',
@@ -2943,14 +3002,21 @@ Variants for Chinese language
'metadata-help' => 'ì´ íŒŒì¼ì€ ì¹´ë©”ë¼/스ìºë„ˆì—ì„œ 기ë¡í•œ 부가 정보를 가지고 있습니다. 프로그램ì—ì„œ 파ì¼ì„ 편집할 경우, 새로 저장한 그림 파ì¼ì— ì¼ë¶€ 부가 ì •ë³´ê°€ 빠질 수 있습니다.',
'metadata-expand' => 'ìžì„¸í•œ ì •ë³´ ë³´ì´ê¸°',
'metadata-collapse' => 'ìžì„¸í•œ ì •ë³´ 숨기기',
-'metadata-fields' => 'EXIF 메타ë°ì´í„° 표가 접혀 ìžˆì„ ë•Œ, 다ìŒì˜ ì†ì„±ê°’ë§Œì´ ê¸°ë³¸ì ìœ¼ë¡œ ë³´ì´ê²Œ ë©ë‹ˆë‹¤. 나머지 ê°’ì€ ìžë™ì ìœ¼ë¡œ 숨겨집니다.
+'metadata-fields' => 'íŒŒì¼ ë©”íƒ€ë°ì´í„° 표가 접혀 ìžˆì„ ë•Œ, ì´ ë©”ì‹œì§€ì— ì˜¬ë¼ì™€ 있는 ë‹¤ìŒ ì†ì„±ê°’ë§Œì´ ê¸°ë³¸ì ìœ¼ë¡œ ë³´ì´ê²Œ ë©ë‹ˆë‹¤.
+나머지 ê°’ì€ ìžë™ì ìœ¼ë¡œ 숨겨집니다.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => '너비',
@@ -2965,13 +3031,11 @@ Variants for Chinese language
'exif-ycbcrpositioning' => 'Y와 C 위치',
'exif-xresolution' => 'ìˆ˜í‰ í•´ìƒë„',
'exif-yresolution' => 'ìˆ˜ì§ í•´ìƒë„',
-'exif-resolutionunit' => 'X, Yë°©í–¥ í•´ìƒë„ 단위',
'exif-stripoffsets' => 'ì´ë¯¸ì§€ ë°ì´í„° 위치',
'exif-rowsperstrip' => '스트립당 ì¤„ì˜ ìˆ˜',
'exif-stripbytecounts' => 'ì••ì¶•ëœ ìŠ¤íŠ¸ë¦½ë‹¹ ë°”ì´íŠ¸ 수',
'exif-jpeginterchangeformat' => 'JPEG SOIì™€ì˜ ì°¨ì´',
'exif-jpeginterchangeformatlength' => 'JPEG ë°ì´í„° ë°”ì´íŠ¸ 수',
-'exif-transferfunction' => '광학 전달 함수',
'exif-whitepoint' => 'í™”ì´íŠ¸ í¬ì¸íŠ¸ 색ë„',
'exif-primarychromaticities' => '색ë„ì˜ ìš°ì„  색',
'exif-ycbcrcoefficients' => '색 공간 변환 표 계수',
@@ -2980,7 +3044,7 @@ Variants for Chinese language
'exif-imagedescription' => '그림 제목',
'exif-make' => 'ì¹´ë©”ë¼ ì œì¡°ì‚¬',
'exif-model' => 'ì¹´ë©”ë¼ ëª¨ë¸',
-'exif-software' => 'ì‚¬ìš©ëœ ì†Œí”„íŠ¸ì›¨ì–´',
+'exif-software' => '사용한 소프트웨어',
'exif-artist' => '저작ìž',
'exif-copyright' => '저작권ìž',
'exif-exifversion' => 'Exif 버전',
@@ -2990,12 +3054,11 @@ Variants for Chinese language
'exif-compressedbitsperpixel' => 'ì´ë¯¸ì§€ 압축 ë°©ì‹',
'exif-pixelydimension' => '그림 너비',
'exif-pixelxdimension' => '그림 높ì´',
-'exif-makernote' => '제조사 주',
'exif-usercomment' => 'ì‚¬ìš©ìž ì£¼',
'exif-relatedsoundfile' => 'ê´€ë ¨ëœ ì˜¤ë””ì˜¤ 파ì¼',
'exif-datetimeoriginal' => '날짜와 시간',
-'exif-datetimedigitized' => 'ë””ì§€í„¸í™”ëœ ë‚ ì§œì™€ 시간',
-'exif-subsectime' => '파ì¼ì´ ë³€ê²½ëœ ë‚ ì§œì™€ 시간 (ì´ˆ 단위 미만)',
+'exif-datetimedigitized' => '날짜와 시간(디지털 ë°ì´í„°)',
+'exif-subsectime' => '파ì¼ì´ ë³€ê²½ëœ ë‚ ì§œì™€ 시간 (초단위 미만)',
'exif-subsectimeoriginal' => 'íŒŒì¼ ìƒì„±ì‹œ 날짜와 시간 (초단위 미만)',
'exif-subsectimedigitized' => 'ë””ì§€í„¸í™”ëœ ë‚ ì§œì™€ 시간 (초단위 미만)',
'exif-exposuretime' => '노출 시간',
@@ -3004,7 +3067,6 @@ Variants for Chinese language
'exif-exposureprogram' => '노출 프로그램',
'exif-spectralsensitivity' => '스펙트럼 ê°ë„',
'exif-isospeedratings' => 'ISO ì†ë„',
-'exif-oecf' => 'ê´‘ì „ìž ë³€í™˜ 함수',
'exif-shutterspeedvalue' => 'APEX 셔터 ì†ë„',
'exif-aperturevalue' => 'APEX 조리개',
'exif-brightnessvalue' => 'APEX ë°ê¸°',
@@ -3017,7 +3079,6 @@ Variants for Chinese language
'exif-focallength' => '렌즈 ì´ˆì  ê±°ë¦¬',
'exif-subjectarea' => 'ëŒ€ìƒ ìœ„ì¹˜',
'exif-flashenergy' => '플래시 광량',
-'exif-spatialfrequencyresponse' => '공간 주파수 ë°˜ì‘',
'exif-focalplanexresolution' => 'ì´ˆì ë©´ Xë°©í–¥ í•´ìƒë„',
'exif-focalplaneyresolution' => 'ì´ˆì ë©´ Yë°©í–¥ í•´ìƒë„',
'exif-focalplaneresolutionunit' => 'ì´ˆì ë©´ í•´ìƒë„ 단위',
@@ -3026,7 +3087,6 @@ Variants for Chinese language
'exif-sensingmethod' => 'ê°ì§€ ë°©ì‹',
'exif-filesource' => 'íŒŒì¼ ì¶œì²˜',
'exif-scenetype' => 'ì´¬ì˜ ëª¨ë“œ',
-'exif-cfapattern' => 'CFA 패턴',
'exif-customrendered' => 'ì´ë¯¸ì§€ 처리 ë°©ì‹',
'exif-exposuremode' => '노출 ë°©ì‹',
'exif-whitebalance' => 'í™”ì´íŠ¸ 밸런스',
@@ -3071,11 +3131,59 @@ Variants for Chinese language
'exif-gpsareainformation' => 'GPS 구역 ì´ë¦„',
'exif-gpsdatestamp' => 'GPS 날짜',
'exif-gpsdifferential' => 'GPS ì°¨ì´ ë³´ì •',
+'exif-jpegfilecomment' => 'JPEG 파ì¼ì˜ 주ì„',
+'exif-keywords' => '핵심 단어',
+'exif-worldregioncreated' => 'ì‚¬ì§„ì„ ì´¬ì˜í•œ ê³³ì˜ ëŒ€ë¥™/지역',
+'exif-countrycreated' => 'ì‚¬ì§„ì„ ì´¬ì˜í•œ ê³³ì˜ êµ­ê°€',
+'exif-countrycodecreated' => 'ì‚¬ì§„ì„ ì´¬ì˜í•œ ê³³ì˜ êµ­ê°€ ISO 코드',
+'exif-provinceorstatecreated' => 'ì‚¬ì§„ì„ ì´¬ì˜í•œ 지역(주/ë„ ë‹¨ìœ„)',
+'exif-citycreated' => 'ì‚¬ì§„ì„ ì´¬ì˜í•œ 지역(ì‹œ/êµ° 단위)',
+'exif-sublocationcreated' => 'ì‚¬ì§„ì„ ì´¬ì˜í•œ ê³³ì˜ ì„¸ë¶€ 지역',
+'exif-worldregiondest' => '사진 ì† ëŒ€ë¥™/지역',
+'exif-countrydest' => '사진 ì† êµ­ê°€',
+'exif-countrycodedest' => '사진 ì† êµ­ê°€ì˜ ISO 코드',
+'exif-provinceorstatedest' => '사진 ì† ì§€ì—­(주/ë„ ë‹¨ìœ„)',
+'exif-citydest' => '사진 ì† ì§€ì—­(ì‹œ/êµ° 단위)',
+'exif-sublocationdest' => '사진 ì† ì„¸ë¶€ 지역',
'exif-objectname' => 'ì§§ì€ ì œëª©',
+'exif-specialinstructions' => '사진 ì´ìš©ì— 대한 íŠ¹ì´ ì‚¬í•­',
+'exif-headline' => '표제어',
+'exif-credit' => '제공ìž',
+'exif-source' => '출처',
+'exif-editstatus' => 'ê·¸ë¦¼ì˜ íŽ¸ì§‘/구성',
+'exif-urgency' => '긴급',
+'exif-fixtureidentifier' => 'ê³ ì • ì´ë¦„',
+'exif-locationdest' => '장소',
+'exif-locationdestcode' => 'ìž¥ì†Œì˜ ìœ„ì¹˜ 코드(ISO, XSP 등)',
+'exif-objectcycle' => '미디어 파ì¼ì´ ì˜ë„하는 시간대',
+'exif-contact' => 'ì—°ë½ì²˜ ì •ë³´',
+'exif-languagecode' => '언어',
+'exif-iimversion' => 'IIM 버전',
+'exif-iimcategory' => '분류',
+'exif-iimsupplementalcategory' => '보조 분류',
+'exif-datetimeexpires' => 'ì´ ì‹œê° ì´í›„ 사용 금지',
+'exif-datetimereleased' => 'ë°œí‘œëœ ë‚ ì§œ',
+'exif-lens' => 'ì‚¬ìš©ëœ ë Œì¦ˆ',
+'exif-serialnumber' => 'ì¹´ë©”ë¼ ì¼ë ¨ 번호',
+'exif-cameraownername' => 'ì¹´ë©”ë¼ ì†Œìœ ìž',
+'exif-label' => 'ë¼ë²¨',
+'exif-copyrighted' => '저작권 정보',
+'exif-copyrightowner' => '저작권ìž',
+'exif-usageterms' => 'ì´ìš© ì¡°ê±´',
+'exif-licenseurl' => '저작권 ë¼ì´ì„ ìŠ¤ì˜ URL',
+'exif-morepermissionsurl' => '다른 ë¼ì´ì„ ìŠ¤ ì •ë³´',
+'exif-pngfilecomment' => 'PNG íŒŒì¼ ì£¼ì„',
+'exif-disclaimer' => 'ë©´ì±… ì¡°í•­',
+'exif-giffilecomment' => 'GIF íŒŒì¼ ì£¼ì„',
+'exif-intellectualgenre' => '컨í…츠 ì •ë³´',
+'exif-scenecode' => 'IPTC 장면 코드',
# EXIF attributes
'exif-compression-1' => '압축ë˜ì§€ ì•ŠìŒ',
+'exif-copyrighted-true' => 'ì €ìž‘ê¶Œì˜ ë³´í˜¸ë¥¼ ë°›ìŒ',
+'exif-copyrighted-false' => 'í¼ë¸”릭 ë„ë©”ì¸',
+
'exif-unknowndate' => '날짜를 ì•Œ 수 ì—†ìŒ',
'exif-orientation-1' => 'ì¼ë°˜',
@@ -3090,6 +3198,8 @@ Variants for Chinese language
'exif-planarconfiguration-1' => 'ë©ì–´ë¦¬ 형ì‹',
'exif-planarconfiguration-2' => 'í‰ë©´í˜•',
+'exif-colorspace-65535' => 'ì¡°ì •ë˜ì§€ ì•ŠìŒ',
+
'exif-componentsconfiguration-0' => '존재하지 ì•ŠìŒ',
'exif-exposureprogram-0' => 'ì •ì˜ë˜ì§€ ì•ŠìŒ',
@@ -3153,6 +3263,8 @@ Variants for Chinese language
'exif-sensingmethod-7' => '3선 센서',
'exif-sensingmethod-8' => 'ìˆœì°¨ì  ìƒ‰ 공간 선형 센서',
+'exif-filesource-3' => '디지털 스틸 ì¹´ë©”ë¼',
+
'exif-scenetype-1' => 'ì§ì ‘ ì´¬ì˜ëœ ì´ë¯¸ì§€',
'exif-customrendered-0' => 'ì¼ë°˜',
@@ -3201,6 +3313,10 @@ Variants for Chinese language
'exif-gpslongitude-e' => 'ë™ê²½',
'exif-gpslongitude-w' => '서경',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '해발 $1미터',
+'exif-gpsaltitude-below-sealevel' => '해저 $1미터',
+
'exif-gpsstatus-a' => '측정 중',
'exif-gpsstatus-v' => 'ì¸í„°ëž™í‹°ë¸Œ 측정',
@@ -3212,21 +3328,58 @@ Variants for Chinese language
'exif-gpsspeed-m' => 'ë§ˆì¼ ë§¤ 시간',
'exif-gpsspeed-n' => '노트',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => '킬로미터',
+'exif-gpsdestdistance-m' => '마ì¼',
+'exif-gpsdestdistance-n' => '해리',
+
+'exif-objectcycle-a' => '오전 중ì—만',
+'exif-objectcycle-p' => '오후 중ì—만',
+'exif-objectcycle-b' => '오전, 오후 모ë‘',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => '실제 방위',
'exif-gpsdirection-m' => 'ìžê¸° 방위',
+'exif-dc-date' => '날짜',
+'exif-dc-publisher' => '출íŒì‚¬',
+'exif-dc-relation' => 'ê´€ë ¨ëœ ë¯¸ë””ì–´',
+'exif-dc-type' => '미디어 종류',
+
+'exif-isospeedratings-overflow' => '65535 ì´ìƒ',
+
+'exif-iimcategory-ace' => '예술, 문화, 엔터테ì¸ë¨¼íŠ¸',
+'exif-iimcategory-clj' => '범죄와 법률',
+'exif-iimcategory-dis' => '재난 ë° ì‚¬ê³ ',
+'exif-iimcategory-fin' => '경제 ë° ë¹„ì¦ˆë‹ˆìŠ¤',
+'exif-iimcategory-edu' => 'êµìœ¡',
+'exif-iimcategory-evn' => '환경',
+'exif-iimcategory-hth' => 'ê±´ê°•',
+'exif-iimcategory-hum' => 'ì¸ê°„ì˜ í¥ë¯¸',
+'exif-iimcategory-lab' => 'ë…¸ë™',
+'exif-iimcategory-lif' => 'ìƒí™œ ë°©ì‹ê³¼ 레저',
+'exif-iimcategory-pol' => '정치',
+'exif-iimcategory-rel' => 'ì¢…êµ ë° ì‹ ë…',
+'exif-iimcategory-sci' => '과학 기술',
+'exif-iimcategory-soi' => 'ì‚¬íšŒì  ë¬¸ì œ',
+'exif-iimcategory-spo' => '스í¬ì¸ ',
+'exif-iimcategory-war' => 'ì „ìŸ, 분ìŸê³¼ 사회 불안',
+'exif-iimcategory-wea' => '날씨',
+
+'exif-urgency-normal' => '보통 ($1)',
+'exif-urgency-low' => 'ë‚®ìŒ ($1)',
+'exif-urgency-high' => 'ë†’ìŒ ($1)',
+'exif-urgency-other' => 'ì‚¬ìš©ìž ì •ì˜ ($1)',
+
# External editor support
'edit-externally' => 'ì´ íŒŒì¼ì„ 외부 í”„ë¡œê·¸ëž¨ì„ ì‚¬ìš©í•´ì„œ 편집하기',
-'edit-externally-help' => '(ìžì„¸í•œ 정보는 [http://www.mediawiki.org/wiki/Manual:External_editors 설치 방법]ì„ ì°¸ê³ í•˜ì‹­ì‹œì˜¤)',
+'edit-externally-help' => '(ìžì„¸í•œ 정보는 [//www.mediawiki.org/wiki/Manual:External_editors 설치 방법]ì„ ì°¸ê³ í•˜ì‹­ì‹œì˜¤)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => '모ë‘',
-'imagelistall' => '모ë‘',
-'watchlistall2' => '모든 기간',
-'namespacesall' => '모ë‘',
-'monthsall' => '모든 달',
-'limitall' => '모ë‘',
+'watchlistall2' => '모든 기간',
+'namespacesall' => '모ë‘',
+'monthsall' => '모든 달',
+'limitall' => '모ë‘',
# E-mail address confirmation
'confirmemail' => 'ì´ë©”ì¼ ì£¼ì†Œ 확ì¸',
@@ -3298,17 +3451,24 @@ $1',
'trackbackdeleteok' => 'íŠ¸ëž™ë°±ì„ ì‚­ì œí–ˆìŠµë‹ˆë‹¤.',
# Delete conflict
-'deletedwhileediting' => "'''주ì˜''': ë‹¹ì‹ ì´ ì´ ë¬¸ì„œë¥¼ íŽ¸ì§‘í•˜ë˜ ì¤‘ì— ì´ ë¬¸ì„œê°€ ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤.",
-'confirmrecreate' => '[[User:$1|$1]] 사용ìž([[User talk:$1|토론]])ê°€ ë‹¹ì‹ ì˜ íŽ¸ì§‘ ë„중 문서를 삭제했습니다. ì‚­ì œ ì´ìœ ëŠ” 다ìŒê³¼ 같습니다:
+'deletedwhileediting' => "'''주ì˜''': ë‹¹ì‹ ì´ ì´ ë¬¸ì„œë¥¼ íŽ¸ì§‘í•˜ë˜ ì¤‘ì— ì´ ë¬¸ì„œê°€ ì‚­ì œë˜ì—ˆìŠµë‹ˆë‹¤.",
+'confirmrecreate' => '[[User:$1|$1]] 사용ìž([[User talk:$1|토론]])ê°€ ë‹¹ì‹ ì˜ íŽ¸ì§‘ ë„중 문서를 삭제했습니다. ì‚­ì œ ì´ìœ ëŠ” 다ìŒê³¼ 같습니다:
: $2
문서를 다시 ìƒì„±í•´ì•¼ 하는지 확ì¸í•´ì£¼ì„¸ìš”.',
-'recreate' => '새로 만들기',
+'confirmrecreate-noreason' => '[[User:$1|$1]] 사용ìž([[User talk:$1|토론]])ê°€ ë‹¹ì‹ ì˜ íŽ¸ì§‘ ë„중 문서를 삭제했습니다. 문서를 다시 ìƒì„±í•´ì•¼ 하는지 확ì¸í•´ì£¼ì„¸ìš”.',
+'recreate' => '새로 만들기',
# action=purge
'confirm_purge_button' => '확ì¸',
'confirm-purge-top' => 'ë¬¸ì„œì˜ ìºì‹œë¥¼ 지울까요?',
'confirm-purge-bottom' => '문서를 새로고침하는 ê²ƒì€ ìºì‹œë¥¼ 갱신하고 가장 ìµœê·¼ì˜ ë²„ì „ì´ ë‚˜íƒ€ë‚˜ê²Œ í•  것입니다.',
+# action=watch/unwatch
+'confirm-watch-button' => '확ì¸',
+'confirm-watch-top' => 'ì´ ë¬¸ì„œë¥¼ 주시문서 목ë¡ì— 추가할까요?',
+'confirm-unwatch-button' => '확ì¸',
+'confirm-unwatch-top' => 'ì´ ë¬¸ì„œë¥¼ 주시문서 목ë¡ì—ì„œ 뺄까요?',
+
# Multipage image navigation
'imgmultipageprev' => '↠ì´ì „ 페ì´ì§€',
'imgmultipagenext' => 'ë‹¤ìŒ íŽ˜ì´ì§€ →',
@@ -3351,14 +3511,14 @@ $1',
'watchlistedit-normal-legend' => '목ë¡ì—ì„œ 문서 제거하기',
'watchlistedit-normal-explain' => "주시문서 목ë¡ì— 있는 ë¬¸ì„œì˜ ì œëª©ì´ ì•„ëž˜ì— ë‚˜ì—´ë˜ì–´ 있습니다.
주시문서 목ë¡ì—ì„œ 제거하려는 문서가 있으면, ê° í•­ëª©ì˜ ì²´í¬ë°•ìŠ¤ë¥¼ ì„ íƒí•œ ë‹¤ìŒ '{{int:Watchlistedit-normal-submit}}'를 í´ë¦­í•´ì£¼ì„¸ìš”.
-ë˜ëŠ” [[Special:Watchlist/raw|목ë¡ì„ ì§ì ‘ 편집]]í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.",
+ë˜ëŠ” [[Special:EditWatchlist/raw|목ë¡ì„ ì§ì ‘ 편집]]í•  ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.",
'watchlistedit-normal-submit' => '항목 삭제',
'watchlistedit-normal-done' => 'ë‹¤ìŒ $1 í•­ëª©ì„ ì£¼ì‹œí•˜ì§€ 않습니다:',
'watchlistedit-raw-title' => '주시문서 ëª©ë¡ ì§ì ‘ 편집하기',
'watchlistedit-raw-legend' => '주시문서 ëª©ë¡ ì§ì ‘ 편집하기',
'watchlistedit-raw-explain' => "주시문서 목ë¡ì˜ ê° í•­ëª©ì´ ë‚˜ì™€ 있습니다. 필요한 í•­ëª©ì„ ì§ì ‘ 추가하거나 제거할 수 있습니다.
ê° ì¤„ë§ˆë‹¤ í•˜ë‚˜ì˜ ì œëª©ì„ ì“°ê³ , ìˆ˜ì •ì„ ë§ˆì³¤ë‹¤ë©´ '{{int:Watchlistedit-raw-submit}}'ì„ ëˆ„ë¥´ë©´ ë©ë‹ˆë‹¤.
-ë˜ëŠ” [[Special:Watchlist/edit|ì¼ë°˜ì ì¸ 편집기]]를 쓸 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.",
+ë˜ëŠ” [[Special:EditWatchlist|ì¼ë°˜ì ì¸ 편집기]]를 쓸 ìˆ˜ë„ ìžˆìŠµë‹ˆë‹¤.",
'watchlistedit-raw-titles' => '목ë¡:',
'watchlistedit-raw-submit' => '주시문서 ëª©ë¡ ê°±ì‹ ',
'watchlistedit-raw-done' => '주시문서 목ë¡ì„ 갱신했습니다.',
@@ -3375,33 +3535,33 @@ $1',
'duplicate-defaultsort' => '\'\'\'경고:\'\'\' 기본 ì •ë ¬ 키 "$2"ê°€ ì´ì „ì˜ ê¸°ë³¸ ì •ë ¬ 키 "$1"를 ë®ì–´ì“°ê³  있습니다.',
# Special:Version
-'version' => '버전',
-'version-extensions' => 'ì„¤ì¹˜ëœ í™•ìž¥ 기능',
-'version-specialpages' => '특수 문서',
-'version-parserhooks' => '파서 훅',
-'version-variables' => '변수',
-'version-skins' => '스킨',
-'version-other' => '기타',
-'version-mediahandlers' => '미디어 핸들러',
-'version-hooks' => 'í›…',
-'version-extension-functions' => '확장 함수',
-'version-parser-extensiontags' => '파서 확장 태그',
-'version-parser-function-hooks' => '파서 기능 훅',
-'version-skin-extension-functions' => '스킨 확장 기능',
-'version-hook-name' => 'í›… ì´ë¦„',
-'version-hook-subscribedby' => 'í›…ì´ ì‚¬ìš©ëœ ìœ„ì¹˜',
-'version-version' => '(버전 $1)',
-'version-license' => 'ë¼ì´ì„¼ìŠ¤',
-'version-poweredby-credits' => "ì´ ìœ„í‚¤ëŠ” '''[http://www.mediawiki.org/ MediaWiki]'''를 기반으로 ìž‘ë™í•©ë‹ˆë‹¤. Copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'ê·¸ 외 다른 개발ìž',
-'version-license-info' => '미디어위키는 ìžìœ  소프트웨어입니다. ë‹¹ì‹ ì€ ìžìœ  소프트웨어 ìž¬ë‹¨ì´ ë°œí‘œí•œ GNU ì¼ë°˜ 공중 사용 허가서 버전 2나 ê·¸ ì´í›„ ë²„ì „ì— ë”°ë¼ ì´ íŒŒì¼ì„ 재배í¬í•˜ê±°ë‚˜ 수정할 수 있습니다.
+'version' => '버전',
+'version-extensions' => 'ì„¤ì¹˜ëœ í™•ìž¥ 기능',
+'version-specialpages' => '특수 문서',
+'version-parserhooks' => '파서 훅',
+'version-variables' => '변수',
+'version-antispam' => '스팸 방지',
+'version-skins' => '스킨',
+'version-other' => '기타',
+'version-mediahandlers' => '미디어 핸들러',
+'version-hooks' => 'í›…',
+'version-extension-functions' => '확장 함수',
+'version-parser-extensiontags' => '파서 확장 태그',
+'version-parser-function-hooks' => '파서 기능 훅',
+'version-hook-name' => 'í›… ì´ë¦„',
+'version-hook-subscribedby' => 'í›…ì´ ì‚¬ìš©ëœ ìœ„ì¹˜',
+'version-version' => '(버전 $1)',
+'version-license' => 'ë¼ì´ì„¼ìŠ¤',
+'version-poweredby-credits' => "ì´ ìœ„í‚¤ëŠ” '''[//www.mediawiki.org/ MediaWiki]'''를 기반으로 ìž‘ë™í•©ë‹ˆë‹¤. Copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'ê·¸ 외 다른 개발ìž',
+'version-license-info' => '미디어위키는 ìžìœ  소프트웨어입니다. ë‹¹ì‹ ì€ ìžìœ  소프트웨어 ìž¬ë‹¨ì´ ë°œí‘œí•œ GNU ì¼ë°˜ 공중 사용 허가서 버전 2나 ê·¸ ì´í›„ ë²„ì „ì— ë”°ë¼ ì´ íŒŒì¼ì„ 재배í¬í•˜ê±°ë‚˜ 수정할 수 있습니다.
미디어위키가 유용하게 ì‚¬ìš©ë  ìˆ˜ 있기를 ë°”ë¼ì§€ë§Œ ìƒìš©ìœ¼ë¡œ 사용ë˜ê±°ë‚˜ 특정 목ì ì— ë§žì„ ê²ƒì´ë¼ëŠ” ê²ƒì„ ë³´ì¦í•˜ì§€ 않습니다. ìžì„¸í•œ ë‚´ìš©ì€ GNU ì¼ë°˜ 공중 사용 허가서 ì „ë¬¸ì„ ì°¸ê³ í•˜ì‹­ì‹œì˜¤.
-ë‹¹ì‹ ì€ ì´ í”„ë¡œê·¸ëž¨ì„ í†µí•´ [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU ì¼ë°˜ 공중 사용 허가서 전문]ì„ ë°›ì•˜ìŠµë‹ˆë‹¤; 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USAë¡œ 편지를 보내주시거나 [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 온ë¼ì¸]으로 ì½ì–´ë³´ì‹œê¸° ë°”ëžë‹ˆë‹¤.',
-'version-software' => 'ì„¤ì¹˜ëœ í”„ë¡œê·¸ëž¨',
-'version-software-product' => '제품',
-'version-software-version' => '버전',
+ë‹¹ì‹ ì€ ì´ í”„ë¡œê·¸ëž¨ì„ í†µí•´ [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU ì¼ë°˜ 공중 사용 허가서 전문]ì„ ë°›ì•˜ìŠµë‹ˆë‹¤; 그렇지 않다면, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USAë¡œ 편지를 보내주시거나 [//www.gnu.org/licenses/old-licenses/gpl-2.0.html 온ë¼ì¸]으로 ì½ì–´ë³´ì‹œê¸° ë°”ëžë‹ˆë‹¤.',
+'version-software' => 'ì„¤ì¹˜ëœ í”„ë¡œê·¸ëž¨',
+'version-software-product' => '제품',
+'version-software-version' => '버전',
# Special:FilePath
'filepath' => 'íŒŒì¼ ê²½ë¡œ',
@@ -3411,24 +3571,24 @@ $1',
그림 파ì¼ì¼ 경우 ì›ë³¸ í•´ìƒë„ì˜ íŒŒì¼ì´ 열립니다. 다른 ì¢…ë¥˜ì˜ íŒŒì¼ì¼ 경우 ê·¸ 파ì¼ì˜ ì¢…ë¥˜ì— ë§žëŠ” í”„ë¡œê·¸ëž¨ì´ ì‹¤í–‰ë©ë‹ˆë‹¤.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'ì¤‘ë³µëœ íŒŒì¼ ì°¾ê¸°',
-'fileduplicatesearch-summary' => 'íŒŒì¼ í•´ì‹œê°’ì„ ì´ìš©í•´ 중복 파ì¼ì„ 찾습니다.
-
-"{{ns:file}}:" ì ‘ë‘어를 뺀 íŒŒì¼ ì´ë¦„ì„ ë„£ì–´ì£¼ì„¸ìš”.',
-'fileduplicatesearch-legend' => '중복 찾기',
-'fileduplicatesearch-filename' => 'íŒŒì¼ ì´ë¦„:',
-'fileduplicatesearch-submit' => '찾기',
-'fileduplicatesearch-info' => '$1 × $2 픽셀<br />íŒŒì¼ í¬ê¸°: $3<br />MIME 유형: $4',
-'fileduplicatesearch-result-1' => '‘$1’ 파ì¼ê³¼ ì¤‘ë³µëœ íŒŒì¼ì´ 없습니다.',
-'fileduplicatesearch-result-n' => '"$1"파ì¼ì€ 중복 파ì¼ì´ $2ê°œ 있습니다.',
+'fileduplicatesearch' => 'ì¤‘ë³µëœ íŒŒì¼ ì°¾ê¸°',
+'fileduplicatesearch-summary' => 'íŒŒì¼ í•´ì‹œê°’ì„ ì´ìš©í•´ 중복 파ì¼ì„ 찾습니다.',
+'fileduplicatesearch-legend' => '중복 찾기',
+'fileduplicatesearch-filename' => 'íŒŒì¼ ì´ë¦„:',
+'fileduplicatesearch-submit' => '찾기',
+'fileduplicatesearch-info' => '$1 × $2 픽셀<br />íŒŒì¼ í¬ê¸°: $3<br />MIME 유형: $4',
+'fileduplicatesearch-result-1' => '‘$1’ 파ì¼ê³¼ ì¤‘ë³µëœ íŒŒì¼ì´ 없습니다.',
+'fileduplicatesearch-result-n' => '"$1"파ì¼ì€ 중복 파ì¼ì´ $2ê°œ 있습니다.',
+'fileduplicatesearch-noresults' => '"$1"ì´ë¼ëŠ” ì´ë¦„ì„ ê°€ì§„ 파ì¼ì´ 없습니다.',
# Special:SpecialPages
'specialpages' => '특수 문서 목ë¡',
'specialpages-note' => '----
* ì¼ë°˜ 특수 문서.
-* <strong class="mw-specialpagerestricted">ì œí•œëœ íŠ¹ìˆ˜ 문서.</strong>',
+* <span class="mw-specialpagerestricted">ì œí•œëœ íŠ¹ìˆ˜ 문서.</span>
+* <span class="mw-specialpagecached">ìºì‹œë˜ëŠ” 특수 문서.</span>',
'specialpages-group-maintenance' => '관리용 목ë¡',
-'specialpages-group-other' => '다른 특수문서',
+'specialpages-group-other' => '다른 특수 문서',
'specialpages-group-login' => 'ë¡œê·¸ì¸ / 등ë¡',
'specialpages-group-changes' => '최근 바뀜과 기ë¡',
'specialpages-group-media' => 'íŒŒì¼ ê´€ë¦¬',
diff --git a/languages/messages/MessagesKoi.php b/languages/messages/MessagesKoi.php
index 37590390..904256c7 100644
--- a/languages/messages/MessagesKoi.php
+++ b/languages/messages/MessagesKoi.php
@@ -227,7 +227,7 @@ $messages = array(
'mailmypassword' => 'ЫÑтыны виль пароль',
'loginlanguagelabel' => 'Кыв: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Вежны пароль',
'oldpassword' => 'Важ пароль',
'newpassword' => 'Виль пароль',
@@ -247,8 +247,6 @@ $messages = array(
'extlink_tip' => 'Вики Ñайö Ñ‹Ñтöт (Ñн вунöт Ñодтыны http:// )',
'headline_sample' => 'Юрнимлöн текÑÑ‚',
'headline_tip' => 'Мöд тшупöта юрним',
-'math_sample' => 'Пырт татчö формула',
-'math_tip' => 'МатематикаиÑÑŒ формула',
'nowiki_sample' => 'Пырт татчö форматируйттöм текÑÑ‚',
'nowiki_tip' => 'Игнорируйтны вики-форматируйтöм',
'image_tip' => 'Пыртöм файл',
@@ -509,10 +507,8 @@ $messages = array(
# Watchlist
'watchlist' => 'СинмаланнÑз',
'mywatchlist' => 'СинмаланнÑзö',
-'addedwatch' => 'Синмалан нимлёдзö Ñодтöм',
'addedwatchtext' => '«[[:$1]]» лиÑтбок вöлi Ñодтöм [[Special:Watchlist|Ñинмалан нимлёдзат]].
БыдöÑ, мый Ð¿Ð¾Ð½Ð´Ð°Ñ Ð²ÐµÐ¶Ñьыны лиÑтбок Ð²Ñ‹Ð»Ð°Ñ Ð´Ð° Ñыкöт йитчöм Ñёрнитанын, позÑÑ Ð°Ð´Ð·Ñ‹Ð½Ñ‹ ÑÑ‚iÑ Ð½Ð¸Ð¼Ð»Ñ‘Ð´Ð·Ð¸ÑÑŒ; ÑiÑ Ð»Ð¾Ð°Ñ Ñiдзжо кызжыка тöдчöтöм [[Special:RecentChanges|виль вежÑьöммез Ñьöртi нимлёдзын]], медбы Ð¿Ð¾Ð·Ð¸Ñ ÐºÐ¾ÐºÐ½Ð¸Ñ‚Ð¶Ñ‹ÐºÐ° казÑвны.',
-'removedwatch' => 'Синмалан нимлёдзиÑÑŒ вештöм',
'removedwatchtext' => 'ЛиÑтбок «[[:$1]]» вöлi вештöм [[Special:Watchlist|Ñинмалан нимлёдзÑит]].',
'watch' => 'Синмав',
'watchthispage' => 'Синмавны ÑÑ‚iйö лиÑтбок',
@@ -532,7 +528,7 @@ $messages = array(
'delete-legend' => 'Чышкыны',
'confirmdeletetext' => 'Ð¢Ñ Ð¼Ã¶Ð´Ð°Ð½ быдÑöн чышкыны лиÑтбок (нето ÑерпаÑ) да ÑылiÑÑŒ иÑториÑ. БылиÑÑŒ Ñ Ñ‚Ñ Ð¼Ã¶Ð´Ð°Ð½ Ñiйö керны, вежöртан Ñ Ð±ÑƒÑ€Ð°, мыйö Ñтö Ð²ÐµÑ€Ð¼Ð°Ñ Ð²Ð°Ð¹Ã¶Ñ‚Ð½Ñ‹, и керан Ñ ÑÑ‚iйö [[{{MediaWiki:Policy-url}}]] туйдöттÑз Ñьöртi',
'actioncomplete' => 'КерÑьöм',
-'deletedtext' => '«<nowiki>$1</nowiki>» чышкöм. Видзöт $2-иÑÑŒ Ð¼ÐµÐ´Ð±Ã¶Ñ€ÑŒÑ Ñ‡Ñ‹ÑˆÐºÃ¶Ð¼Ð¼ÐµÑö.',
+'deletedtext' => '«$1» чышкöм. Видзöт $2-иÑÑŒ Ð¼ÐµÐ´Ð±Ã¶Ñ€ÑŒÑ Ñ‡Ñ‹ÑˆÐºÃ¶Ð¼Ð¼ÐµÑö.',
'deletedarticle' => 'Ñ‡Ñ‹ÑˆÐºÐ¸Ñ "[[$1]]"',
'dellogpage' => 'Шупкан чукöр',
'deletecomment' => 'МылÑ:',
@@ -550,7 +546,7 @@ $messages = array(
'protectexpiry' => 'ПомаÑьö:',
'protect_expiry_invalid' => 'ПамаÑÑн ÐºÐ°Ð´Ñ‹Ñ Ñоралöм',
'protect_expiry_old' => 'ПомаÑÑн кад — чулалöмын.',
-'protect-text' => "Татöн Ñ‚Ñ Ð²ÐµÑ€Ð¼Ð°Ð½ видзöтны да вежны '''<nowiki>$1</nowiki>''' лиÑтбок понда дорьÑн тшупöт.",
+'protect-text' => "Татöн Ñ‚Ñ Ð²ÐµÑ€Ð¼Ð°Ð½ видзöтны да вежны '''$1''' лиÑтбок понда дорьÑн тшупöт.",
'protect-locked-access' => "УджкериÑьлöн нимыт оз тырмы, мед вежны лиÑтбокыÑлiÑÑŒ дорьÑн тшупöт.
Ã–Ð½Ð½Ñ Ð»Ã¶ÑьöтаннÑз '''$1''' лиÑтбок понда:",
'protect-cascadeon' => 'ЭтiÑ Ð»Ð¸ÑÑ‚Ð±Ð¾ÐºÑ‹Ñ Ð´Ð¾Ñ€Ð¹Ã¶Ð¼, Ð¼Ñ‹Ð»Ñ ÑiÑ Ð¿Ñ‹Ñ€Ñ‚Ã¶Ð¼ улынжык виÑьталöм {{PLURAL:$1|лиÑтбокö|лиÑтбокö}}, кытчö лöÑьöтöм каÑкад нёж дорьÑн.
@@ -721,11 +717,10 @@ $messages = array(
'nextdiff' => 'СыбöрÑÑ Ð²Ð¸Ð»ÑŒÐ¼Ã¶Ñ‚Ã¶Ñ‚Ã¶Ð¼ →',
# Media information
-'file-info-size' => '$1 × $2 пикÑел, файллöн ыжда: $3, MIME-тип: $4',
-'file-nohires' => '<small>Буржыка тыдалан верÑÐ¸Ñ Ð°Ð±Ñƒ.</small>',
-'svg-long-desc' => 'SVG-файл, гижöм Ñьöртi $1 × $2 пикÑел, файллöн ыжда: $3',
-'show-big-image' => 'Буржыка тыдалан ÑерпаÑ',
-'show-big-image-thumb' => '<small>Одзвыв нёджжалан ыжда: $1 × $2 пикÑел</small>',
+'file-info-size' => '$1 × $2 пикÑел, файллöн ыжда: $3, MIME-тип: $4',
+'file-nohires' => '<small>Буржыка тыдалан верÑÐ¸Ñ Ð°Ð±Ñƒ.</small>',
+'svg-long-desc' => 'SVG-файл, гижöм Ñьöртi $1 × $2 пикÑел, файллöн ыжда: $3',
+'show-big-image' => 'Буржыка тыдалан ÑерпаÑ',
# Bad image list
'bad_image_list' => 'Формат лöÑьöтiкö видз тöд вылын: Уджавны пондаÑö токö нимлёдзиÑÑŒ визёккез (кöдналöн пондöтчанын Ñм *). Визёклöн медодзза Ñ‹Ñтöт аÑÑŒ лоö йитöм неуджалан файлкöт. Мöдiк Ñ‹ÑтöттÑз ÑiÑ Ð¶Ã¶ визёкын огö пыртö ÑÑ‹ лыдö, м.ш. гижöттÑз, кытчö медиа-файл позьö пыртны.',
@@ -742,7 +737,13 @@ $messages = array(
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'ПаÑьта',
@@ -750,15 +751,13 @@ $messages = array(
# External editor support
'edit-externally' => 'Редактируйтны ÑÑ‚iйö файлÑö мöд программа пыр',
-'edit-externally-help' => '(унажык видзöт: [http://www.mediawiki.org/wiki/Manual:External_editors удж кежö лöÑьöтны туйдöтан])',
+'edit-externally-help' => '(унажык видзöт: [//www.mediawiki.org/wiki/Manual:External_editors удж кежö лöÑьöтны туйдöтан])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'быдöÑ',
-'imagelistall' => 'быдöÑ',
-'watchlistall2' => 'быдöÑ',
-'namespacesall' => 'быдöÑ',
-'monthsall' => 'быдöÑ',
-'limitall' => 'быдöÑ',
+'watchlistall2' => 'быдöÑ',
+'namespacesall' => 'быдöÑ',
+'monthsall' => 'быдöÑ',
+'limitall' => 'быдöÑ',
# Watchlist editing tools
'watchlisttools-view' => 'Видзöт лöÑÑлана вильмöтöммез',
diff --git a/languages/messages/MessagesKrc.php b/languages/messages/MessagesKrc.php
index e0fbb154..86732e73 100644
--- a/languages/messages/MessagesKrc.php
+++ b/languages/messages/MessagesKrc.php
@@ -7,7 +7,6 @@
* @ingroup Language
* @file
*
- * @author Diebuche
* @author Don Alessandro
* @author GerardM
* @author Iltever
@@ -68,8 +67,8 @@ $messages = array(
'tog-shownumberswatching' => 'Бетни, кёзде тургъан тизмелерине къошханланы Ñанын кёргюз',
'tog-oldsig' => 'Болгъан къол Ñалыугъа ал къарау:',
'tog-fancysig' => 'Энчи вики-текÑти къол Ñалыуну (автомат джибериуÑюз)',
-'tog-externaleditor' => 'Тынгылау бла тыш редакторну хайырландырыу (къуру уÑталагъа, компьютерни Ñнчи джарашдырылыуу керекди; [http://www.mediawiki.org/wiki/Manual:External_editors толуракъ])',
-'tog-externaldiff' => 'ВерÑиÑланы тенглешдириучу тыш программа хайырландырыу (къуру уÑталагъа, компьютерни Ñнчи джарашдырылыуу керекди; [http://www.mediawiki.org/wiki/Manual:External_editors толуракъ])',
+'tog-externaleditor' => 'Тынгылау бла тыш редакторну хайырландырыу (къуру уÑталагъа, компьютерни Ñнчи джарашдырылыуу керекди; [//www.mediawiki.org/wiki/Manual:External_editors толуракъ])',
+'tog-externaldiff' => 'ВерÑиÑланы тенглешдириучу тыш программа хайырландырыу (къуру уÑталагъа, компьютерни Ñнчи джарашдырылыуу керекди; [//www.mediawiki.org/wiki/Manual:External_editors толуракъ])',
'tog-showjumplinks' => '«Бар» болушлукъ джибериуню джандыр',
'tog-uselivepreview' => 'Терк ал къарауну хайырландыр (JavaScript, ÑкÑпериментал халда)',
'tog-forceeditsummary' => 'Тюрлендириуню ачыкълау тизгини бош къалÑа, билдир',
@@ -165,14 +164,6 @@ $messages = array(
'index-category' => 'ИндекÑленнген бетле',
'noindex-category' => 'ИндекÑленмеген бетле',
-'mainpagetext' => "'''«MediaWiki» тыйыншлы Ñалынды.'''",
-'mainpagedocfooter' => "Бу вики бла къалай ишлерге ангылатхан информациÑны [http://meta.wikimedia.org/wiki/Help:Contents_User's_Guide къошулуучугъа юретиуде] табаргъа боллукъду.
-
-== Файдалы реÑурÑла ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings тюрлендириулени ÑпиÑогу (ингил.)];
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-ни ÑŽÑюнден кёб берилген Ñоруула];
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-ни джангы верÑиÑÑыны чыкъгъанын билдириу пиÑьмола].",
-
'about' => 'Ðчыкълау',
'article' => 'СтатьÑ',
'newwindow' => '(джангы терезеде ачылады)',
@@ -223,10 +214,10 @@ $messages = array(
'history' => 'Бетни тарихи',
'history_short' => 'Тарих',
'updatedmarker' => 'ÐÑ…Ñ‹Ñ€ киргенимден Ñора джангыргъан',
-'info_short' => 'ИнформациÑ',
'printableversion' => 'БаÑмагъа верÑиÑÑÑ‹',
'permalink' => 'Дайым джибериу',
'print' => 'БаÑмала',
+'view' => 'Къарау',
'edit' => 'Тюрлендир',
'create' => 'Къура',
'editthispage' => 'Бу бетни тюрлендир',
@@ -234,6 +225,7 @@ $messages = array(
'delete' => 'Кетер',
'deletethispage' => 'Бу бетни кетер',
'undelete_short' => '$1 {{PLURAL:$1|тюрлендириуню}} къайтар',
+'viewdeleted_short' => '{{PLURAL:$1|1|$1}} кетерилген тюрлендириуге къарау',
'protect' => 'Джакъла',
'protect_change' => 'тюрлендир',
'protectthispage' => 'Бу бетни джакъла',
@@ -317,6 +309,8 @@ $1',
'toc' => 'Башлары',
'showtoc' => 'кёргюз',
'hidetoc' => 'джашыр',
+'collapsible-collapse' => 'джашыр',
+'collapsible-expand' => 'кёргюз',
'thisisdeleted' => '$1 къараргъа неда къайтарыргъа (тургъузтургъа)?',
'viewdeleted' => '$1къараймыÑа?',
'restorelink' => 'кетерилген {{PLURAL:$1|1|$1}} тюрлендириу',
@@ -410,12 +404,11 @@ $1',
'protectedpagetext' => 'Бу бет тюрлендириуге джабылыбды.',
'viewsourcetext' => 'Сиз бу бетни башланнган текÑтине къараргъа Ñм аны ÐºÐ¾Ð¿Ð¸Ñ Ñтерге боллукъÑуз:',
'protectedinterface' => 'Бу бетде программаны Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð±Ð¸Ð»Ð´Ð¸Ñ€Ð¸ÑƒÑŽ барды. Вандализмге къаршчы кюрешиу Ñебебли, бу бетни тюрлендириу джабылыбды.',
-'editinginterface' => "'''Ð­Ñ Ð±Ñ‘Ð»ÑŽÐ³ÑŽÐ·:''' Сиз MediaWiki ÑиÑтеманы Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð±ÐµÑ‚Ð¸Ð½ тюрлендире тураÑыз. Бу башха къошулуучулагъ да тиерик затды. Кёчюрюр ючюн [http://translatewiki.net/wiki/Main_Page?setlang=ru translatewiki.net] Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñтиу проектни хайырландырыгъыз.",
+'editinginterface' => "'''Ð­Ñ Ð±Ñ‘Ð»ÑŽÐ³ÑŽÐ·:''' Сиз MediaWiki ÑиÑтеманы Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð±ÐµÑ‚Ð¸Ð½ тюрлендире тураÑыз. Бу башха къошулуучулагъ да тиерик затды. Кёчюрюр ючюн [//translatewiki.net/wiki/Main_Page?setlang=ru translatewiki.net] Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ñ Ñтиу проектни хайырландырыгъыз.",
'sqlhidden' => '(SQL Ñоруу джашырылыбды)',
'cascadeprotected' => 'Бу бет тюрлениуледен джакъланыбды, ол каÑкадлы джакълау къабыл Ñтилиннген {{PLURAL:$1|бетге|бетлеге}} киргени ючюндю:
$2',
'namespaceprotected' => '«$1» ат аламда бетлени тюрлендирирге Ñркинлигигиз джокъду.',
-'customcssjsprotected' => 'Сизни бу бетни тюрлендирирге Ñркинлигигиз джокъду, бу бетде башха къошулуучуну Ñнчи джарашдырыулары болгъаны ючюн.',
'ns-specialprotected' => '«{{ns:special}}» ат аламны бетлерин тюрлендирирге болмайды.',
'titleprotected' => "Быллай атлы бет къураргъа [[User:$1|$1]] къоймайды.
Белгиленнген чурум: ''$2''.",
@@ -468,7 +461,7 @@ $2',
'nosuchuser' => '$1 аты бла къошулуучу джокъду.
Къошулуучу атла харифни региÑтрин (уллу-гитчеликлерин) айырады.
Ðтны тюз джазылгъанына къарагъыз неда [[Special:UserLogin/signup|джангы тергеу джазыу (аккаунт) къурагъаз]].',
-'nosuchusershort' => '<nowiki>$1</nowiki> аты бла къшулуучу джокъду. Ðтны тюз джазылгъанына къарагъыз.',
+'nosuchusershort' => '$1 аты бла къшулуучу джокъду. Ðтны тюз джазылгъанына къарагъыз.',
'nouserspecified' => 'Сиз къошулуучу атыгъызны джазаргъа керекÑиз.',
'login-userblocked' => 'Бу къошулуучу блокга Ñалыннганды. Кирирге мадары джокъду.',
'wrongpassword' => 'Сиз джазгъан пароль терÑди. Джангыдан кёрюгюз.',
@@ -512,7 +505,7 @@ $2',
# E-mail sending
'php-mail-error-unknown' => "PHP's mail() функциÑда белгили болмагъан халат",
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Паролну тюрлендириу',
'resetpass_announce' => 'Сиз, Ñлектрон почта бла ийилген, болджаллы пароль бла киргенÑиз. СиÑтемагъа кириуню тамамларча, джангы пароль къурагъыз.',
'resetpass_header' => 'Тергеу джазыуну (аккаунтну) паролюн тюрлендириу',
@@ -540,8 +533,6 @@ $2',
'extlink_tip' => 'Тыш джибериу (http:// префикÑни унутмагъыз)',
'headline_sample' => 'Башлыкъны текÑти',
'headline_tip' => '2-чи дараджалы башлыкъ',
-'math_sample' => 'Формуланы бери Ñалыгъыз',
-'math_tip' => 'Математика формула (LaTeX формат)',
'nowiki_sample' => 'Формат Ñтилинмеген текÑтни бери Ñалыгъыз',
'nowiki_tip' => 'Вики-формат Ñтиуню игнор ÑÑ‚',
'image_tip' => 'Эндирилген файл',
@@ -624,7 +615,7 @@ $2',
'noarticletext-nopermission' => 'БуÑагъатда бу бетде текÑÑ‚ джокъду.
Сиз [[Special:Search/{{PAGENAME}}|бу атны таныгъан]] башха ÑтатьÑланы,
неда <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} журналлада джазылгъанланы]</span> табаргъа боллукъÑуз.',
-'userpage-userdoesnotexist' => '«$1» тергеу джазыу (аккаунт) джокъду. Къураргъа/тюрлендирирге излеймиÑиз бу бетни?',
+'userpage-userdoesnotexist' => '«<nowiki>$1</nowiki>» тергеу джазыу (аккаунт) джокъду. Къураргъа/тюрлендирирге излеймиÑиз бу бетни?',
'userpage-userdoesnotexist-view' => '«$1» тергеу джазыу (аккаунт) джокъду.',
'blocked-notice-logextract' => 'Бу къошулуучу буÑагъатда блокланыб турады.
Тюбюнде блокланыуланы журналындан ахыр джазыу бериледи:',
@@ -1012,9 +1003,10 @@ $1",
'changepassword' => 'Паролну ауушдур',
'prefs-skin' => 'ДжаÑауу',
'skin-preview' => 'Ðл къарау',
-'prefs-math' => 'Математика белгиле',
'datedefault' => 'Сайлау джокъду',
+'prefs-beta' => 'Бета-амалла',
'prefs-datetime' => 'Дата бла Ñагъат',
+'prefs-labs' => 'ЭкÑперимент амалла',
'prefs-personal' => 'Энчи билгиле',
'prefs-rc' => 'ÐÑ…Ñ‹Ñ€ тюрлениуле',
'prefs-watchlist' => 'Къарауну ÑпиÑогу',
@@ -1036,8 +1028,6 @@ $1",
'columns' => 'Колонкала:',
'searchresultshead' => 'Излеу',
'resultsperpage' => 'Бетде кёргюзюллюк табылгъан джазыуланы Ñаны:',
-'contextlines' => 'Хар табылыннганнга кёргюзюлген тизгинлени Ñаны:',
-'contextchars' => 'Тизгиннге контекÑтни Ñимволларыны Ñаны:',
'stub-threshold' => '<a href="#" class="stub">Стаблагъа джибериуню</a> формат Ñтер ючюн марда (байтлада):',
'stub-threshold-disabled' => 'Джукъланыбды',
'recentchangesdays' => 'ÐÑ…Ñ‹Ñ€ тюрлениуледе кёргюзюллюк кюнле:',
@@ -1103,7 +1093,7 @@ $1 {{PLURAL:$1|Ñимволдан|Ñимволладан}} кеб болургъ
'email' => 'Электрон почта',
'prefs-help-realname' => 'Керти ат (излеуге байламлы).
Ðны кёргюзюрге излеÑегиз, Ñиз тюрлендирген бетлеригизни,Ñиз тюрлендиргенигизи белгили боллукъду.',
-'prefs-help-email' => 'Электрон почта (излеуге байламлы), кёргюзюлÑе, паролюгъуз унутулÑа джангы паролну адреÑигизге джибериу мадар береди. Ол замандада башха къошулуучула бетигизден Ñизни бла, Ñизни Ñлектрон почтагъызны адреÑин билир ючюн джазаргъа мадар берликди.',
+'prefs-help-email' => 'Электрон почтагъызны адреÑин джазаргъа амалÑыз керек тюлдю, алай а, паролюгъузну унутÑагъыз, ажымÑыз керек боллукъду.',
'prefs-help-email-required' => 'Электрон почтагъызны кёргюзюгюз.',
'prefs-info' => 'Баш билгиле',
'prefs-i18n' => 'ИнтернационализациÑ',
@@ -1225,7 +1215,6 @@ $1 {{PLURAL:$1|Ñимволдан|Ñимволладан}} кеб болургъ
'right-userrights' => 'Бютеу къошулуучуланы хакъларыны тюрлендириу',
'right-userrights-interwiki' => 'Башха викиледеги къошулуучуларыны хакъларын тюрлендир',
'right-siteadmin' => 'Билги базаны киритле Ñмда киритни ач',
-'right-reset-passwords' => 'Башха къошулуучуланы паролларын кетер',
'right-override-export-depth' => 'Бетлени, теренлиги 5-ге дери байламлы бетле бла бирге ÑкÑпорт ÑÑ‚',
'right-sendemail' => 'Башха къошулуучулагъа Ñлектрон почта джиберирге',
@@ -1358,13 +1347,13 @@ $1 {{PLURAL:$1|Ñимволдан|Ñимволладан}} кеб болургъ
'illegalfilename' => '«$1» файл атда хайырланыугъа къабыл Ñтилмеген Ñимволла бардыла.
Файлны атын тюрлендириб, джангыдан джюклегиз.',
'badfilename' => 'Файлны аты $1 болуб ауушду.',
-'filetype-mime-mismatch' => 'Файл MIME типге келишмейди.',
+'filetype-mime-mismatch' => '«.$1» файл MIME-типге ($2) келишмейди.',
'filetype-badmime' => '«$1» MIME типли файлланы джюклениуюне Ñркинлик берлимейди.',
'filetype-bad-ie-mime' => 'Internet Explorer, буну Ñркинлик берилмеген Ñмда потенциал заран берлик «$1» файл тип кибик таныгъаны ючюн бу файл джюклениллик тюлдю.',
'filetype-unwanted-type' => "'''\".\$1\"''' изленмеген файл типиди.
Изленнген {{PLURAL:\$3|файл тип|файл типле}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' джаÑакъланнган файл типиди.
-Эркинлик берилген {{PLURAL:\$3|файл тип|файл типле}} \$2.",
+'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|джаÑакъланнган файл типди|джаÑакъланнган файл типледиле}}.
+Эркинлик берилген {{PLURAL:$3|файл тип|файл типле}}: $2.",
'filetype-missing' => 'Файлны кенглешиуу джокъду (Ñёз ючюн, «.jpg» кибик)',
'empty-file' => 'Сиз ийген файл бошду.',
'file-too-large' => 'Сиз ийген файл аÑыры уллуду.',
@@ -1425,10 +1414,6 @@ file_uploads джарашдырыулагъа бир къарагъыз.',
'upload-options' => 'Джюклеуню опциÑлары',
'watchthisupload' => 'Бу файлны кёзде тут',
'filewasdeleted' => 'Быллай аты бла файл алгъаракъ джюкленнгенди, алай а артдан кетерилгенди. Файлны джюклеуню аллы бла, $1 бетге бир кёз джетдиригиз.',
-'upload-wasdeleted' => "'''ЭÑгериу: Ðлгъаракъ кетерилген файлны джюклей тураÑыз.'''
-
-Файлны джюклерге болгъанын оÑмакълагъыз.
-Бу файлны кетериу журналын теджейбиз:",
'filename-bad-prefix' => "Джюклене тургъан файлны аты '''«$1»''' бла башланады Ñмда цифра камера Ñуратларына берген шаблон ат болургъа болур.
Файлны ангылатхан ат атаргъа кюрешигиз.",
'filename-prefix-blacklist' => ' #<!-- бу тизгинни тургъаныча къоюгъуз --> <pre>
@@ -1467,6 +1452,11 @@ URL-Ð°Ð´Ñ€ÐµÑ Ñ‚ÑŽÐ· болгъанын оÑмакълагъыз Ñмда джÐ
'upload-unknown-size' => 'Билинмеген ёлчем',
'upload-http-error' => 'HTTP хата болду: $1',
+# Special:UploadStash
+'uploadstash' => 'Джашыртын джюклеу',
+'uploadstash-nofiles' => 'Сизни джашырылгъан файлларыгъыз джокъду',
+'uploadstash-refresh' => 'Файлланы тизмеÑин джангырт',
+
# img_auth script messages
'img-auth-accessdenied' => 'Эркинлик джаÑакъланнганды',
'img-auth-nopathinfo' => 'PATH_INFO джокъду.
@@ -1550,7 +1540,6 @@ URL-ни тюз , Ñайтны ачыкъ болгъанына ишекÑиз б
[[Special:WhatLinksHere/$2|Толу ÑпиоÑок]] барды.',
'nolinkstoimage' => 'Бу файлгъа джиберген бет джокъду.',
'morelinkstoimage' => 'Бу файлгъа [[Special:WhatLinksHere/$1|къалгъан джибериулеге]] къара.',
-'redirectstofile' => '{{PLURAL:$1|файл|$1 файл}}, бу файлгъа джибереди.',
'duplicatesoffile' => '{{PLURAL:$1|файл|$1 файл}}, бу файлны дубликатыды ([[Special:FileDuplicateSearch/$2|анданда кёб ангылатыу]]):',
'sharedupload' => 'Бу файл $1денди Ñм башха проектледе хайырландыргъа боллукъду.',
'sharedupload-desc-there' => 'Бу файл $1 базадан башха проектледе хайырландырыргъа боллукъду.
@@ -1871,10 +1860,8 @@ URL-ни тюз , Ñайтны ачыкъ болгъанына ишекÑиз б
'watchlistanontext' => 'Кёзюгюзде тургъан тизмегизни ÑтатьÑланы кёрюр неда тюрлендирир ючюн $1.',
'watchnologin' => 'СиÑтемагъа кирирге керекди.',
'watchnologintext' => 'Кёзюгюзде тургъан тизмегизни тюрлендирир ючюн [[Special:UserLogin|ÑиÑтемагъа кирирге керекÑиз]].',
-'addedwatch' => 'Кёзде тургъан тизмеге къошулду',
'addedwatchtext' => '«[[:$1]]» бет [[Special:Watchlist|кёзюгюзде тургъан тизмегизге]] къошулду.
Бу бетни Ñмда муну бла байламлы Ñюзюу бетни тюрлениулери ол тизмеде белгиленникдиле, [[Special:RecentChanges|джангы тюрлениулени тизмеÑини]] бетинде уа къалын шрифт бла чертилинникдиле, кёрюрге тынчыракъ болурча.',
-'removedwatch' => 'Кёзюгюзде тургъан тизмегизден кетерилди',
'removedwatchtext' => '«[[:$1]]» бет Ñизни [[Special:Watchlist|кёзюгюзде тургъан тизмегизден]] кетерилгенди.',
'watch' => 'Кёзде тут',
'watchthispage' => 'Бу бетни кёзде тут',
@@ -1927,13 +1914,13 @@ $NEWPAGE
--
Джарашдырыуланы тюрлендирир ючюн:
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:Special:Watchlist/edit}}
Кёзде тургъан тизмеден кетерир ючюн:
$UNWATCHURL
Болушлукъ Ñм теджеуле ючюн:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Бетни кетер',
@@ -1950,7 +1937,7 @@ $UNWATCHURL
Ðлай Ñтерге керти излегенигизни Ñм [[{{MediaWiki:Policy-url}}кетериу политика]] бёлюмде ачыкъланнган джорукъла бла Ñтгенигизни, бегитигиз.',
'actioncomplete' => 'Этим толтурулду',
'actionfailed' => 'Этим джетишимÑиз болду',
-'deletedtext' => '«<nowiki>$1</nowiki>» бет кетерилди.
+'deletedtext' => '«$1» бет кетерилди.
ÐÑ…Ñ‹Ñ€ кетерилгенлени ÑпиÑогун кёрюр ючюн, $2на къарагъыз.',
'deletedarticle' => '«[[$1]]» кетерилди',
'suppressedarticle' => '«[[$1]]» джашырылды',
@@ -2011,7 +1998,7 @@ $2 тюрлендирген алгъаракъ верÑиÑÑына къайты
'protect_expiry_invalid' => 'Джакъланыуну бошалгъан заманы терÑди.',
'protect_expiry_old' => 'Джакъланыу бошалгъанны заманы озгъанда.',
'protect-unchain-permissions' => 'Къоруулауну къошакъ параметрлерини ачыгъыз',
-'protect-text' => "Былайда Ñиз '''<nowiki>$1</nowiki>''' бетни джакълау дараджаÑына къараб тюрлендирирге боллукъÑуз.",
+'protect-text' => "Былайда Ñиз '''$1''' бетни джакълау дараджаÑына къараб тюрлендирирге боллукъÑуз.",
'protect-locked-blocked' => "Тергеу джазыуугъуз джаÑакъ болÑа, бетни къоруулауну дараджаÑын тюрлендиреллик тюлÑюз.
'''$1''' бетдеги буÑагъатдагъы параметрле:",
'protect-locked-dblock' => "Ðктив билги базаны киритленнгени Ñебебли, коъруулау параметрлени тюрлендиреллик тюлÑюз.
@@ -2160,7 +2147,6 @@ $1',
'blockip-title' => 'Къошулуучуну блокга Ñалыу',
'blockip-legend' => 'Къошулуучуну блокга Ñалыу',
'blockiptext' => 'Тюбюндеги форманы хайырланыб белгили бир IP-ден неда региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ Ñтилген къошулуучуну тюрлениу Ñтиуюню Ñ‚Ñ‹ÑллыкъÑыз. Бу, джангыз вандализмни Ñ‚Ñ‹ÑÑ€ ючюн Ñм [[{{MediaWiki:Policy-url}}|джорукълагъа]] келишиулю Ñтилирге керекди. Тюбюрек тыйыу бла байламлы ангылатыу джазыгъыз. (юлгю: -Бу- бетледе вандализм Ñтилгенди).',
-'ipaddress' => 'IP-адреÑ:',
'ipadressorusername' => 'IP-Ð°Ð´Ñ€ÐµÑ Ð½ÐµÐ´Ð° къошулуучу ат:',
'ipbexpiry' => 'Бошаллыкъды (Ñ‘Ñ‚Ñе):',
'ipbreason' => 'Чурум:',
@@ -2173,7 +2159,6 @@ $1',
** Къошулуучуланы къоркъутургъа излеу
** Талай тергеу джазыу къураб аманлыкъгъа хайырланыу
** Джарамагъан къошулуучу ат',
-'ipbanononly' => 'Къуру аноним къошулуучуланы тый',
'ipbcreateaccount' => 'Джангы тергеу джазыу къурауну тый',
'ipbemailban' => 'Къошулуучуну Ñл. почта бла пиÑьмо джибериуюне тыйгъыч бол',
'ipbenableautoblock' => 'Бу къошулуучуну джанындан хайырланнган ахыр IP адреÑни Ñм тюрлениу Ñтерге кюрешген IP-лени автомат халда тый',
@@ -2184,7 +2169,6 @@ $1',
'ipbotherreason' => 'Башха/къошакъ чурум:',
'ipbhidename' => 'Къошулуучуну атын тюрлендириуле бла ÑпиоÑкладан джашыр',
'ipbwatchuser' => 'Бу къошулуучуну, къошулуучу Ñмда Ñюзюу бетлерин кёзде тургъан тизмеге къош',
-'ipballowusertalk' => 'Бу къошулуучуну тыйылыуда тургъан заманда кеÑини Ñюзюу бетинде тюрлениуле Ñтерге Ñркинлик бер',
'ipb-change-block' => 'Бу джарашдырыула бла къошулуучуну джангыдан тый',
'badipaddress' => 'Ð¢ÐµÑ€Ñ IP-адреÑ',
'blockipsuccesssub' => 'Тыйыу джетишимли болду',
@@ -2202,14 +2186,9 @@ $1',
'unblocked-id' => '$1 тыйылыу къоратылгъанды',
'ipblocklist' => 'Блок Ñтилиннген IP-адреÑле Ñм къошулуучуланы атлары',
'ipblocklist-legend' => 'Тыйылгъан къошулуучуну аты',
-'ipblocklist-username' => 'Къошулуучуну аты неда IP-адреÑи:',
-'ipblocklist-sh-userblocks' => 'Тергеу джазыуланы блокга Ñалыу $1',
-'ipblocklist-sh-tempblocks' => 'Болджаллы блокга Ñалыула $1',
-'ipblocklist-sh-addressblocks' => 'Ðйыры IP-адреÑлени блокга Ñалыу $1',
'ipblocklist-submit' => 'Таб',
'ipblocklist-localblock' => 'Локал блокга Ñалыу',
'ipblocklist-otherblocks' => 'Башха {{PLURAL:$1|блокга Ñалыу|блокга Ñалыула}}',
-'blocklistline' => '$1, $2 блокга Ñалынды: $3 ($4)',
'infiniteblock' => 'БолджалÑыз блокга Ñалыу',
'expiringblock' => '$1 $2 бошаллыкъды',
'anononlyblock' => 'къуру анонимле',
@@ -2233,7 +2212,7 @@ $1',
'reblock-logentry' => '[[$1]] ючюн бошалыу заманын $2 $3 Ñтиб тыйыу джарашдырыуларын тюрлендирди',
'blocklogtext' => 'Къошулуучуланы тыйылыу бла тыйылыудан чыгъарыуну журналы.
Ðвтомат халда тыйылгъан IP-адреÑле былайда кёргюзюлмейдиле.
-Банла бла блокланы кёрюр ючюн [[Special:IPBlockList|IP блок ÑпиÑогуна]] къарагъыз.',
+Банла бла блокланы кёрюр ючюн [[Special:BlockList|IP блок ÑпиÑогуна]] къарагъыз.',
'unblocklogentry' => '$1 къошулуучудан блок алынды',
'block-log-flags-anononly' => 'джангыз аноним къошулуучула',
'block-log-flags-nocreate' => 'Тергеу джазыуланы (аккаунтланы) региÑтрациÑлары тыйылыбды',
@@ -2247,8 +2226,7 @@ $1',
'ipb_expiry_temp' => 'Джашыртын къошулуучуну атыны тыйылыуу болджалÑыз болургъа керекди.',
'ipb_hide_invalid' => 'Бу тергеу джазыуну джашырыр мадар джокъду; аÑыры кёб тюрлендириу болургъа болур.',
'ipb_already_blocked' => '«$1» блокга Ñалыныбды',
-'ipb-needreblock' => '== ÐлайÑызда тыйыбылды ==
-$1 алайÑызда тыйылыбды. Джарашдырыуланы тюрлендирирге излеймиÑиз?',
+'ipb-needreblock' => '$1 алайÑызда тыйылыбды. Джарашдырыуланы тюрлендирирге излеймиÑиз?',
'ipb-otherblocks-header' => 'Башха {{PLURAL:$1|блок|блокла}}',
'ipb_cant_unblock' => 'Халат: Блок ID $1 табылмагъанды.
Блок къоратылгъан болур.',
@@ -2407,7 +2385,7 @@ $1 алайÑызда тыйылыбды. Джарашдырыуланы Ñ‚ÑŽÑ€Ð
'allmessagesdefault' => 'Оригинал текÑÑ‚',
'allmessagescurrent' => 'Хайырлана тургъан текÑÑ‚',
'allmessagestext' => 'Бу ÑпиÑок MediaWiki ат аламында бар болгъан ÑиÑтема билдириулени ÑпиÑогуду.
-MediaWiki локализациÑÑына юлюш къошаргъа излей ÑÑегиз, [http://www.mediawiki.org/wiki/Localisation MediaWiki локализациÑ] бла [http://translatewiki.net translatewiki.net] Ñайтлагъа киригиз.',
+MediaWiki локализациÑÑына юлюш къошаргъа излей ÑÑегиз, [//www.mediawiki.org/wiki/Localisation MediaWiki локализациÑ] бла [//translatewiki.net translatewiki.net] Ñайтлагъа киригиз.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' джабыкъ болгъаны ючюн '''{{ns:special}}:Allmessages''' хайырланыугъа ачыкъ тюлдю.",
'allmessages-filter-legend' => 'Фильтр',
'allmessages-filter' => 'Тюрлендириуюне кёре фильтрлендир:',
@@ -2548,9 +2526,7 @@ MediaWiki локализациÑÑына юлюш къошаргъа излей
'tooltip-summary' => 'КъыÑха ачыкълау джазыгъыз',
# Metadata
-'nodublincore' => 'Dublin Core RDF метабилгиле бу Ñерверде джаÑакъдыла.',
-'nocreativecommons' => 'Creative Commons RDF метабилгиле бу Ñервер ючюн джаÑакъдыла.',
-'notacceptable' => 'Бу вики-Ñервер Ñизни браузеригиз излеген форматда билгиле берелмейди.',
+'notacceptable' => 'Бу вики-Ñервер Ñизни браузеригиз излеген форматда билгиле берелмейди.',
# Attribution
'anonymous' => 'Ñайтны аноним {{PLURAL:$1|къошулуучулары|къошулуучулары}}',
@@ -2572,14 +2548,6 @@ MediaWiki локализациÑÑына юлюш къошаргъа излей
'spam_reverting' => '$1 бла джибериую болмагъан ахыр верÑиÑгъа къайтылады',
'spam_blanking' => 'Бютеу верÑиÑла $1 бетге джибериу тутадыла, ариуланадыла',
-# Info page
-'infosubtitle' => 'Бетни ÑŽÑюнде билги',
-'numedits' => 'Тюрлендириулени Ñаны (бет): $1',
-'numtalkedits' => 'Тюрлендириуню Ñаны (Ñюзюу бет): $1',
-'numwatchers' => 'Къараучуланы Ñаны: $1',
-'numauthors' => 'Башха-башха авторланы Ñаны (бет): $1',
-'numtalkauthors' => 'Башха-башха авторланы Ñаны (Ñюзюу бет): $1',
-
# Skin names
'skinname-standard' => 'Стандарт',
'skinname-nostalgia' => 'ÐоÑтальгиÑ',
@@ -2591,25 +2559,6 @@ MediaWiki локализациÑÑына юлюш къошаргъа излей
'skinname-modern' => 'БуÑагъатдагъы',
'skinname-vector' => 'Вектор',
-# Math options
-'mw_math_png' => 'PNG Ñурат форматха кёчюргенлей тур',
-'mw_math_simple' => 'Бек бош ÑÑе HTML, тюл ÑÑе PNG',
-'mw_math_html' => 'Мадар бар ÑÑе HTML, болмаÑа PNG',
-'mw_math_source' => 'Тюрлендирмей TeX болуб къой (текÑÑ‚ браузерле ючюн)',
-'mw_math_modern' => 'БуÑагъатдагъы браузерлеге ючюн теджеледи',
-'mw_math_mathml' => 'Мадар бар ÑÑе "MathML" (Ñынау опциÑ)',
-
-# Math errors
-'math_failure' => 'Ðнгылашынамады',
-'math_unknown_error' => 'билинмеген халат',
-'math_unknown_function' => 'билинмеген функциÑ',
-'math_lexing_error' => 'лекÑика халат',
-'math_syntax_error' => 'ÑинтакÑÐ¸Ñ Ñ…Ð°Ð»Ð°Ñ‚',
-'math_image_error' => 'PNG ÐºÐ¾Ð½Ð²ÐµÑ€Ñ‚Ð°Ñ†Ð¸Ñ Ð´Ð¶ÐµÑ‚Ð¸ÑˆÐ¸Ð¼Ñиз болду; latex бла dvips джарашдырыуларына къарагъыз (неда dvips + gs + convert)',
-'math_bad_tmpdir' => 'Математиканы кёзюулю каталогуна не джазаргъа, неда къураргъа мадар джокъду',
-'math_bad_output' => 'Математиканы чыгъыш каталогуна не джазар, неда къурар мадар джокъду',
-'math_notexvc' => 'texvc файл табылмайды; джарашдырыр ючюн math/README-ге къара.',
-
# Patrolling
'markaspatrolleddiff' => 'Контроль Ñтилгенин белгиле',
'markaspatrolledtext' => 'Сыналгъан ÑÑ‚Ð°Ñ‚ÑŒÑ ÐºÐ¸Ð±Ð¸Ðº белгиле',
@@ -2656,7 +2605,6 @@ $1',
'file-nohires' => '<small>Мындан ары ачыкъланнган верÑиÑÑÑ‹ джокъду</small>',
'svg-long-desc' => 'SVG файл, шартлы $1 × $2 пикÑель, файлны ёлчеми: $3',
'show-big-image' => 'Толу ачыкълау',
-'show-big-image-thumb' => '<small>Ðл къарауда ёлчеми: $1 × $2 пикÑель</small>',
'file-info-gif-looped' => 'тогъайланнганды',
'file-info-gif-frames' => '$1 {{PLURAL:$1|фрейм|фрейм}}',
'file-info-png-looped' => 'тогъайланнганды',
@@ -2694,7 +2642,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Кенглик',
@@ -2709,13 +2663,11 @@ $1',
'exif-ycbcrpositioning' => 'Y бла C джерлешдириую',
'exif-xresolution' => 'Горизонтал резолюциÑÑÑ‹',
'exif-yresolution' => 'Вертикал резолюциÑÑÑ‹',
-'exif-resolutionunit' => 'Ð¥ бла Y резолюциÑны ёлчем бирими',
'exif-stripoffsets' => 'Билги блокну туруму',
'exif-rowsperstrip' => '1 блокда болгъан тизгинни Ñаны',
'exif-stripbytecounts' => 'КъыÑдырылгъан блокну ёлчеми',
'exif-jpeginterchangeformat' => 'preview блокну тамалыны туруму',
'exif-jpeginterchangeformatlength' => 'preview блокну билгилерини ёлчеми',
-'exif-transferfunction' => 'ТранÑфер функциÑÑÑ‹',
'exif-whitepoint' => 'Ðкъ нохтаны боÑлулугъу',
'exif-primarychromaticities' => 'Баш боÑуланы боÑулулугъу',
'exif-ycbcrcoefficients' => 'БоÑу модельни транÑÑ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¼Ð°Ñ‚Ñ€Ð¸ÐºÑ ÐºÐ¾Ð¾Ñ„Ð¸Ñ†Ð¸ÐµÐ½Ñ‚Ð¸',
@@ -2734,7 +2686,6 @@ $1',
'exif-compressedbitsperpixel' => 'Суратны къыÑдырыу амалы',
'exif-pixelydimension' => 'Суратны толу мийиклиги',
'exif-pixelxdimension' => 'Суратны толу кенглиги',
-'exif-makernote' => 'Чыгъарыучуну къошакъ билгилери',
'exif-usercomment' => 'Къошакъ комментарий',
'exif-relatedsoundfile' => 'Тауушлу комментарийни файлы',
'exif-datetimeoriginal' => 'Оригинал джаратыу заман',
@@ -2748,7 +2699,6 @@ $1',
'exif-exposureprogram' => 'ЭкÑпозициÑны программаÑÑ‹',
'exif-spectralsensitivity' => 'Спектрал Ñезимлилик',
'exif-isospeedratings' => 'ISO терклик дараджаÑÑ‹',
-'exif-oecf' => 'ОптоÑлекторника конверÑиÑны фактору',
'exif-shutterspeedvalue' => 'Декланшорну терклиги',
'exif-aperturevalue' => 'Диафрагма',
'exif-brightnessvalue' => 'Джарыкълыкъ',
@@ -2762,7 +2712,6 @@ $1',
'exif-focallength-format' => '$1 мм',
'exif-subjectarea' => 'Субъект алам',
'exif-flashenergy' => 'Флешни ÑнергиÑÑÑ‹',
-'exif-spatialfrequencyresponse' => 'Ðламлыкъ Ñ„Ñ€ÐµÐºÐ°Ð½Ñ Ñ…Ð°Ð»',
'exif-focalplanexresolution' => 'Фокал аламда Ð¥ резолюциÑÑÑ‹',
'exif-focalplaneyresolution' => 'Фокал аламда Y резолюциÑÑÑ‹',
'exif-focalplaneresolutionunit' => 'Фокал аламда резолюциÑны ёлчем бирими',
@@ -2771,7 +2720,6 @@ $1',
'exif-sensingmethod' => 'СенÑор амалы',
'exif-filesource' => 'Файлны къайнагъы',
'exif-scenetype' => 'Сахнаны типи',
-'exif-cfapattern' => 'CFA типи',
'exif-customrendered' => 'Ðйырма Ñурат ишлем',
'exif-exposuremode' => 'ЭкÑпозициÑны Ñайлауну режими',
'exif-whitebalance' => 'Ðкъны баланÑÑ‹',
@@ -2837,8 +2785,8 @@ $1',
'exif-xyresolution-i' => '$1 dpi',
'exif-xyresolution-c' => '$1 dpc',
-'exif-colorspace-1' => 'sRGB',
-'exif-colorspace-ffff.h' => 'FFFF.H',
+'exif-colorspace-1' => 'sRGB',
+'exif-colorspace-65535' => 'FFFF.H',
'exif-componentsconfiguration-0' => 'Джокъду',
@@ -2972,15 +2920,13 @@ $1',
# External editor support
'edit-externally' => 'Бу файлны тыш программа бла тюрлендиригиз',
-'edit-externally-help' => '(толу информациÑгъа мында къарагъыз: [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
+'edit-externally-help' => '(толу информациÑгъа мында къарагъыз: [//www.mediawiki.org/wiki/Manual:External_editors setup instructions])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'бютеу',
-'imagelistall' => 'бютеу',
-'watchlistall2' => 'бютеу',
-'namespacesall' => 'бютеу',
-'monthsall' => 'бютеу',
-'limitall' => 'бютеую',
+'watchlistall2' => 'бютеу',
+'namespacesall' => 'бютеу',
+'monthsall' => 'бютеу',
+'limitall' => 'бютеую',
# E-mail address confirmation
'confirmemail' => 'Электорн адреÑни мюкюл ÑÑ‚',
@@ -3058,7 +3004,6 @@ $1',
'confirm-purge-bottom' => 'Бетни кеши кетерилгенден Ñора, андан Ñора келген верÑиÑÑÑ‹ кёргюзюллюкдю.',
# Separators for various lists, etc.
-'catseparator' => '',
'semicolon-separator' => ';&#32;',
'percent' => '$1%',
'parentheses' => '($1)',
@@ -3111,14 +3056,14 @@ $1',
'watchlistedit-normal-legend' => 'Кёзюгюзде тургъан тизмегизден джазылгъанланы кетериу',
'watchlistedit-normal-explain' => 'Кёзде тургъан тизмедеги бетле тюбюрекде кёргюзюлгендиле.
Джазылгъанланы кетерир ючюн, къатындагъы тёртгюлчюкде белгилеб, «{{int:Watchlistedit-normal-submit}}» тиекден баÑыгъыз.
-Сиз дагъыда [[Special:Watchlist/raw|тизмени текÑÑ‚ кибик тюрлендирирге]] боллукъÑуз.',
+Сиз дагъыда [[Special:EditWatchlist/raw|тизмени текÑÑ‚ кибик тюрлендирирге]] боллукъÑуз.',
'watchlistedit-normal-submit' => 'Башлыкъланы кетер',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 джазылгъан|$1 джазылгъан}}, кёзюгюзде тургъан тизмегизден кетерилди:',
'watchlistedit-raw-title' => 'Кёзде тургъан «чий» тизмени тюрлендир',
'watchlistedit-raw-legend' => 'Кёзде тургъан «чий» тизмени тюрлендир',
'watchlistedit-raw-explain' => 'Кёзюгюзде тургъан тизмегиздеги бетле тюбюнде кёрюнедиле. Хар тизгинде бир башлыкъ болады, бетлени къошуб неда кетериб тизмени тюрлендирирге боллукъÑуз.
БошалÑа, «{{int:Watchlistedit-raw-submit}}» деген тиекден баÑыгъыз.
-[[Special:Watchlist/edit|Стандарт тюрлендириу]] бла да хайырланаллыкъÑыз.',
+[[Special:EditWatchlist|Стандарт тюрлендириу]] бла да хайырланаллыкъÑыз.',
'watchlistedit-raw-titles' => 'Башлыкъла:',
'watchlistedit-raw-submit' => 'Кёзде тургъан тизмени Ñакъла',
'watchlistedit-raw-done' => 'Кёзюгюзде тургъан тизмегиз Ñакъланнганды.',
@@ -3185,33 +3130,33 @@ $1',
'duplicate-defaultsort' => '\'\'\'ЭÑгериу:\'\'\' Бар Ñаналгъан "$2" Ñыныфлама ачхыч, аллындагъы "$1" Ñыныфлама ачхычны джарауÑуз Ñтеди.',
# Special:Version
-'version' => 'ВерÑиÑ',
-'version-extensions' => 'Салыннган кенгертиуле',
-'version-specialpages' => 'Къуллукъчу бетле',
-'version-parserhooks' => 'СинтакÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð½Ñƒ тутуучула',
-'version-variables' => 'Тюрленнгенле',
-'version-skins' => 'ДжаÑауну темалары',
-'version-other' => 'Башха',
-'version-mediahandlers' => 'МедиÑны джарашдырыучула',
-'version-hooks' => 'Тутуучула',
-'version-extension-functions' => 'Кенгертиулени функциÑлары',
-'version-parser-extensiontags' => 'СинтиакÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð½Ñƒ кенгертиулерин теглери',
-'version-parser-function-hooks' => 'СинтакÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð½Ñƒ функциÑларын тутуучула',
-'version-skin-extension-functions' => 'ДжаÑау темаланы кенгертиулерини функциÑлары',
-'version-hook-name' => 'Тутуучуну аты',
-'version-hook-subscribedby' => 'Ðбонент болгъан',
-'version-version' => '(ВерÑÐ¸Ñ $1)',
-'version-license' => 'ЛицензиÑ',
-'version-poweredby-credits' => "Бу вики '''[http://www.mediawiki.org/ MediaWiki]''' программа бла ишлейди, copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'башхала',
-'version-license-info' => 'MediaWiki Ñркин программа джазыуду, Ñиз аны GNU General Public License лицензиÑны (Ñркин программа джазыуланы фонду чыгъаргъан; Ñкинчи верÑиÑÑÑ‹ неда андан кеч къайÑÑ‹ÑÑ‹ да) шартларына кёре джаÑргъа Ñмда/неда тюрлендирирге боллукъÑуз.
+'version' => 'ВерÑиÑ',
+'version-extensions' => 'Салыннган кенгертиуле',
+'version-specialpages' => 'Къуллукъчу бетле',
+'version-parserhooks' => 'СинтакÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð½Ñƒ тутуучула',
+'version-variables' => 'Тюрленнгенле',
+'version-antispam' => 'ÐнтиÑпам',
+'version-skins' => 'ДжаÑауну темалары',
+'version-other' => 'Башха',
+'version-mediahandlers' => 'МедиÑны джарашдырыучула',
+'version-hooks' => 'Тутуучула',
+'version-extension-functions' => 'Кенгертиулени функциÑлары',
+'version-parser-extensiontags' => 'СинтиакÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð½Ñƒ кенгертиулерин теглери',
+'version-parser-function-hooks' => 'СинтакÑÐ¸Ñ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð½Ñƒ функциÑларын тутуучула',
+'version-hook-name' => 'Тутуучуну аты',
+'version-hook-subscribedby' => 'Ðбонент болгъан',
+'version-version' => '(ВерÑÐ¸Ñ $1)',
+'version-license' => 'ЛицензиÑ',
+'version-poweredby-credits' => "Бу вики '''[//www.mediawiki.org/ MediaWiki]''' программа бла ишлейди, copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'башхала',
+'version-license-info' => 'MediaWiki Ñркин программа джазыуду, Ñиз аны GNU General Public License лицензиÑны (Ñркин программа джазыуланы фонду чыгъаргъан; Ñкинчи верÑиÑÑÑ‹ неда андан кеч къайÑÑ‹ÑÑ‹ да) шартларына кёре джаÑргъа Ñмда/неда тюрлендирирге боллукъÑуз.
MediaWiki хайырлы боллукъду деген умут бла джайылады, алай а БИР ТЮРЛЮ БИР ГÐРÐÐТИЯСЫЗДЫ, КОММЕРЦИЯЛЫКЪ неда ЭÐЧИ БИР ÐЮЗЮРГЕ ДЖÐРÐРЫКЪ гаратиÑлаÑыз огъунады. Толуракъ билгиле кёрюр ючюн GNU General Public License лицензиÑгъа къарагъыз.
-Бу программа бла бирге [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License лицензиÑны копиÑÑÑ‹] болургъа керекди, джокъ ÑÑе Free Software Foundation, Inc. комапиÑгъа джазыгъыз (адреÑи: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA) неда [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html лицензиÑны онлайн окъугъуз].',
-'version-software' => 'Салыннган программа баджарыу',
-'version-software-product' => 'Продукт',
-'version-software-version' => 'ВерÑиÑ',
+Бу программа бла бирге [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License лицензиÑны копиÑÑÑ‹] болургъа керекди, джокъ ÑÑе Free Software Foundation, Inc. комапиÑгъа джазыгъыз (адреÑи: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA) неда [//www.gnu.org/licenses/old-licenses/gpl-2.0.html лицензиÑны онлайн окъугъуз].',
+'version-software' => 'Салыннган программа баджарыу',
+'version-software-product' => 'Продукт',
+'version-software-version' => 'ВерÑиÑ',
# Special:FilePath
'filepath' => 'Файлгъа джол',
@@ -3221,16 +3166,15 @@ MediaWiki хайырлы боллукъду деген умут бла джайÑ
Суратла толу резолюциÑлары бла кёргюзюледиле, башха файл типле алагъа джараулу программала бла ачыладыла.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Дубликат файлланы изле',
-'fileduplicatesearch-summary' => 'Ð¥Ñш-кодлары бла дубликат файланны изле.
-
-Файлны атын «{{ns:file}}:» префикÑÑиз джазыгъыз.',
-'fileduplicatesearch-legend' => 'Дубликатланы изле',
-'fileduplicatesearch-filename' => 'Файлны аты:',
-'fileduplicatesearch-submit' => 'Таб',
-'fileduplicatesearch-info' => '$1 × $2 пикÑель<br />Файлны ёлчеми: $3<br />MIME-тип: $4',
-'fileduplicatesearch-result-1' => '«$1» файлны келишген дубликаты джокъду',
-'fileduplicatesearch-result-n' => '«$1» файлны {{PLURAL:$2|1 келишген дубликатыi|$2 келишген дубликаты}} барды.',
+'fileduplicatesearch' => 'Дубликат файлланы изле',
+'fileduplicatesearch-summary' => 'Ð¥Ñш-кодлары бла дубликат файланны изле.',
+'fileduplicatesearch-legend' => 'Дубликатланы изле',
+'fileduplicatesearch-filename' => 'Файлны аты:',
+'fileduplicatesearch-submit' => 'Таб',
+'fileduplicatesearch-info' => '$1 × $2 пикÑель<br />Файлны ёлчеми: $3<br />MIME-тип: $4',
+'fileduplicatesearch-result-1' => '«$1» файлны келишген дубликаты джокъду',
+'fileduplicatesearch-result-n' => '«$1» файлны {{PLURAL:$2|1 келишген дубликатыi|$2 келишген дубликаты}} барды.',
+'fileduplicatesearch-noresults' => '«$1» деген файл табылмады.',
# Special:SpecialPages
'specialpages' => 'Къуллукъчу бетле',
diff --git a/languages/messages/MessagesKri.php b/languages/messages/MessagesKri.php
index 225bd111..02badcaa 100644
--- a/languages/messages/MessagesKri.php
+++ b/languages/messages/MessagesKri.php
@@ -88,7 +88,6 @@ $messages = array(
'history' => 'Pej-im istri',
'history_short' => 'Istri',
'updatedmarker' => 'wetin dehm dohn ohpdet since wehn ah las kam',
-'info_short' => 'Infohmeshohn',
'printableversion' => 'Vazhòn fò Print',
'permalink' => 'Pamanènt link',
'print' => 'Print am',
diff --git a/languages/messages/MessagesKrj.php b/languages/messages/MessagesKrj.php
index 499fc78f..a9f08931 100644
--- a/languages/messages/MessagesKrj.php
+++ b/languages/messages/MessagesKrj.php
@@ -129,7 +129,6 @@ $messages = array(
'history' => 'Kasaysayan kang Pahina',
'history_short' => 'Kasaysayan',
'updatedmarker' => 'ginpabag-o halin kang orihi ko nga pagbisita',
-'info_short' => 'Impormasyon',
'printableversion' => "Bersyon nga sarang ma-''print''",
'permalink' => "Permanyente nga ''link''",
'print' => 'Printa',
diff --git a/languages/messages/MessagesKs.php b/languages/messages/MessagesKs.php
index 8dd1dd7f..dcbb86ba 100644
--- a/languages/messages/MessagesKs.php
+++ b/languages/messages/MessagesKs.php
@@ -1,5 +1,5 @@
<?php
-/** Kashmiri (कशà¥à¤®à¥€à¤°à¥€ - (كشميري))
+/** Kashmiri (कॉशà¥à¤° - کٲشÙر)
*
* See MessagesQqq.php for message documentation incl. usage of parameters
* To improve a translation please visit http://translatewiki.net
@@ -10,21 +10,7 @@
* @author خَرگوش
*/
-# FIXME: inherit almost everything for now
-$rtl = true;
-
-$digitTransformTable = array(
- '0' => '०', # &#x0966;
- '1' => '१', # &#x0967;
- '2' => '२', # &#x0968;
- '3' => '३', # &#x0969;
- '4' => '४', # &#x096a;
- '5' => '५', # &#x096b;
- '6' => '६', # &#x096c;
- '7' => '७', # &#x096d;
- '8' => '८', # &#x096e;
- '9' => '९', # &#x096f;
-);
+$fallback = 'ks-arab';
$messages = array(
# Dates
diff --git a/languages/messages/MessagesKs_arab.php b/languages/messages/MessagesKs_arab.php
new file mode 100644
index 00000000..942da910
--- /dev/null
+++ b/languages/messages/MessagesKs_arab.php
@@ -0,0 +1,75 @@
+<?php
+/** Kashmiri (Arabic script) (کٲشÙر)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ */
+
+# @todo FIXME: Inherit almost everything for now
+$rtl = true;
+
+$digitTransformTable = array(
+ '0' => 'Ù ', # &#x0660;
+ '1' => 'Ù¡', # &#x0661;
+ '2' => 'Ù¢', # &#x0662;
+ '3' => 'Ù£', # &#x0663;
+ '4' => 'Ù¤', # &#x0664;
+ '5' => 'Ù¥', # &#x0665;
+ '6' => 'Ù¦', # &#x0666;
+ '7' => 'Ù§', # &#x0667;
+ '8' => 'Ù¨', # &#x0668;
+ '9' => 'Ù©', # &#x0669;
+ '.' => 'Ù«', # &#x066b; wrong table ?
+ ',' => 'Ù¬', # &#x066c;
+);
+
+$messages = array(
+# Dates
+'monday' => 'Ú˜Ùنٛدٕروار',
+'february' => 'Ùرؤری',
+'april' => 'اپریٖل',
+'may_long' => 'مٔی',
+'june' => 'جوٗن',
+'august' => 'اَگست',
+'september' => 'سیٚپٹَمبَر',
+'november' => 'نَوَمبَر',
+'december' => 'ڈیٚسَمبَر',
+
+'about' => 'Ù…ÙتعلÙÙ‚',
+
+'help' => 'مدد',
+'search' => 'ژھارÙÙ†',
+'searchbutton' => 'ژھارÙÙ†',
+'history_short' => 'توٲریٖخ',
+'talkpagelinktext' => 'بَحَژ',
+'talk' => 'بَحَژ',
+'jumptosearch' => 'ژھارÙÙ†',
+
+# 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}}',
+'mainpage' => 'گَرٕ',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'صَÙÛÙ•',
+'nstab-category' => 'زٲژ',
+
+# Edit pages
+'summary' => 'Ø®ÙلاسÛÙ•:',
+
+# Recent changes
+'recentchanges' => 'نَو٠تبدیلی',
+
+# Upload
+'filedesc' => 'Ø®ÙلاسÛÙ•',
+
+'sp-contributions-talk' => 'بَحَژ',
+'sp-contributions-submit' => 'ژھارÙÙ†',
+
+# Namespace 8 related
+'allmessagesname' => 'ناو',
+
+);
diff --git a/languages/messages/MessagesKs_deva.php b/languages/messages/MessagesKs_deva.php
new file mode 100644
index 00000000..d4f16eea
--- /dev/null
+++ b/languages/messages/MessagesKs_deva.php
@@ -0,0 +1,33 @@
+<?php
+/** Kashmiri (Devanagari script) (कॉशà¥à¤°)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ */
+
+# @todo FIXME: Inherit almost everything for now
+
+$digitTransformTable = array(
+ '0' => '०', # &#x0966;
+ '1' => '१', # &#x0967;
+ '2' => '२', # &#x0968;
+ '3' => '३', # &#x0969;
+ '4' => '४', # &#x096a;
+ '5' => '५', # &#x096b;
+ '6' => '६', # &#x096c;
+ '7' => '७', # &#x096d;
+ '8' => '८', # &#x096e;
+ '9' => '९', # &#x096f;
+);
+
+$messages = array(
+'help' => 'मदद',
+
+# Recent changes
+'recentchanges' => 'नवि तबदीली',
+
+);
diff --git a/languages/messages/MessagesKsh.php b/languages/messages/MessagesKsh.php
index 979a0c98..5b32fec0 100644
--- a/languages/messages/MessagesKsh.php
+++ b/languages/messages/MessagesKsh.php
@@ -47,7 +47,7 @@ $fallback = 'de';
$namespaceNames = array(
NS_MEDIA => 'Medie',
- NS_SPECIAL => 'Spezial',
+ NS_SPECIAL => 'Extra',
NS_TALK => 'Klaaf',
NS_USER => 'Metmaacher',
NS_USER_TALK => 'Metmaacher_Klaaf',
@@ -66,6 +66,7 @@ $namespaceNames = array(
$namespaceAliases = array(
'Meedije' => NS_MEDIA,
+ 'Spezial' => NS_SPECIAL,
'Shpezjal' => NS_SPECIAL,
'Medmaacher' => NS_USER,
'Medmaacher_Klaaf' => NS_USER_TALK,
@@ -96,97 +97,97 @@ $separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
$linkTrail = '/^([äöüėëijßəğåůæœça-z]+)(.*)$/sDu';
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Ömleitunge_op_Ömleitunge' ),
+ 'Activeusers' => array( 'Aktive', 'AktiveMetmaacher', 'Aktive_Metmaacher', 'AktiveMedmaacher', 'Aktive_Medmaacher' ),
+ 'Allmessages' => array( 'MediaWiki-Appachtemang' ),
+ 'Allpages' => array( 'All_Sigge' ),
+ 'Ancientpages' => array( 'Ahl_Atikelle' ),
+ 'Blankpage' => array( 'Leddijje_Sigge' ),
+ 'Block' => array( 'IP-Sperre' ),
+ 'Blockme' => array( 'Proxy-Sperre' ),
+ 'Booksources' => array( 'ISBN', 'Böcher', 'Böösher' ),
'BrokenRedirects' => array( 'Ömleitunge_en_et_Leere' ),
- 'Disambiguations' => array( 'Wat-es-dat-Sigge', 'Watt_ėßß_datt?' ),
- 'Userlogin' => array( 'Enlogge' ),
- 'Userlogout' => array( 'Ußlogge' ),
+ 'Categories' => array( 'Saachjruppe' ),
+ 'ChangePassword' => array( 'Neu_Passwood' ),
+ 'ComparePages' => array( 'SiggeVerjliesche', 'Sigge_verjliesche', 'SiggeVerjlieche', 'Sigge_verjieche' ),
+ 'Confirmemail' => array( 'Email_Bestätije', 'E-mail_Bestätije', 'EmailBestätije', 'E-mailBestätije' ),
+ 'Contributions' => array( 'Beidräch', 'Beidrääsh' ),
'CreateAccount' => array( 'Aanmelde', 'Medmaacher_wääde', 'Metmaacher_wääde' ),
- 'Preferences' => array( 'Ming_Enstellunge', 'Enstellunge' ),
- 'Watchlist' => array( 'Ming_Oppassliss', 'Oppassliss' ),
- 'Recentchanges' => array( 'Neuste_Änderunge', 'Änderunge' ),
- 'Upload' => array( 'Daate_huhlade', 'Huhlade' ),
+ 'Deadendpages' => array( 'Sigge_ohne_Links_dren' ),
+ 'DeletedContributions' => array( 'Fotjeschmeße' ),
+ 'Disambiguations' => array( 'Wat-es-dat-Sigge', 'Watt_ėßß_datt?' ),
+ 'DoubleRedirects' => array( 'Ömleitunge_op_Ömleitunge' ),
+ 'Emailuser' => array( 'Email', 'E-mail' ),
+ 'Export' => array( 'Expocht' ),
+ 'Fewestrevisions' => array( 'Winnig_beärbeit', 'Winnish_beärbeidt', 'Winnich_bearbeit' ),
+ 'FileDuplicateSearch' => array( 'Dubbel_Dateie' ),
+ 'Filepath' => array( 'Dateipaad' ),
+ 'Import' => array( 'Emport', 'Empocht' ),
+ 'Invalidateemail' => array( 'Onjöltije_e-mail_Addräß', 'Onjöltije_E-Mail_Adress' ),
+ 'BlockList' => array( 'Jesperrt', 'Jeshpächt' ),
+ 'LinkSearch' => array( 'Websigge_Söke' ),
+ 'Listadmins' => array( 'Köbese', 'Köbeße', 'Wiki-Köbesse' ),
+ 'Listbots' => array( 'Bots' ),
'Listfiles' => array( 'Datei', 'Dateie' ),
- 'Newimages' => array( 'Neu_Dateie' ),
- 'Listusers' => array( 'Medmaacher', 'Metmaacher' ),
'Listgrouprights' => array( 'Jrupperääschte', 'Jropperrääschte' ),
- 'Statistics' => array( 'Statistik', 'Shtatißtike' ),
- 'Randompage' => array( 'Zofällije_Sigg' ),
+ 'Listredirects' => array( 'Ömleitunge' ),
+ 'Listusers' => array( 'Medmaacher', 'Metmaacher' ),
+ 'Lockdb' => array( 'Datebank-deeschmaache' ),
+ 'Log' => array( 'Logböcher', 'Logböösher' ),
'Lonelypages' => array( 'Sigge_ohne_Links_drop' ),
- 'Uncategorizedpages' => array( 'Sigge_ohne_Saachjruppe' ),
- 'Uncategorizedcategories' => array( 'Saachjruppe_ohne_Saachjruppe' ),
- 'Uncategorizedimages' => array( 'Dateie_ohne_Saachjruppe' ),
- 'Uncategorizedtemplates' => array( 'Schablone_ohne_Saachjruppe' ),
- 'Unusedcategories' => array( 'Schablone_ohne_Links_drop' ),
- 'Unusedimages' => array( 'Dateie_ohne_Links_drop' ),
- 'Wantedpages' => array( 'Sigge_fähle' ),
- 'Wantedcategories' => array( 'Saachjruppe_fähle', 'Saachjroppe_fähle' ),
- 'Wantedfiles' => array( 'Dateie_fähle' ),
- 'Wantedtemplates' => array( 'Schablone_fähle' ),
+ 'Longpages' => array( 'Lang_Atikelle' ),
+ 'MergeHistory' => array( 'Versione_zosammeschmieße' ),
+ 'MIMEsearch' => array( 'MIME-Typ', 'MIMEtüp' ),
+ 'Mostcategories' => array( 'Sigge_met_de_mieste_Saachjroppe', 'Sigge_met_de_mieste_Saachjruppe' ),
+ 'Mostimages' => array( 'Dateie_met_de_mieste_Links_drop' ),
'Mostlinked' => array( 'Sigge_met_de_mieste_Links_drop' ),
'Mostlinkedcategories' => array( 'Et_miehts_jebruchte_Saachjruppe', 'Et_miehts_jebruchte_Saachjroppe' ),
'Mostlinkedtemplates' => array( 'Et_miehts_jebruchte_Schablone' ),
- 'Mostimages' => array( 'Dateie_met_de_mieste_Links_drop' ),
- 'Mostcategories' => array( 'Sigge_met_de_mieste_Saachjroppe', 'Sigge_met_de_mieste_Saachjruppe' ),
'Mostrevisions' => array( 'Öff_beärbeit', 'Öff_beärbeidt', 'Off_bearbeit' ),
- 'Fewestrevisions' => array( 'Winnig_beärbeit', 'Winnish_beärbeidt', 'Winnich_bearbeit' ),
- 'Shortpages' => array( 'Koote_Atikelle' ),
- 'Longpages' => array( 'Lang_Atikelle' ),
+ 'Movepage' => array( 'Ömnenne', 'Ömdäufe' ),
+ 'Mycontributions' => array( 'Ming_Beidräch', 'Ming_Beidrääsh' ),
+ 'Mypage' => array( 'Ming_Medmaachersigg', 'Ming_Metmaachersigg', 'Medmaachersigg', 'Metmaachersigg' ),
+ 'Mytalk' => array( 'Ming_Klaafsigg', 'Klaaf' ),
+ 'Newimages' => array( 'Neu_Dateie' ),
'Newpages' => array( 'Neu_Atikelle' ),
- 'Ancientpages' => array( 'Ahl_Atikelle' ),
- 'Deadendpages' => array( 'Sigge_ohne_Links_dren' ),
+ 'Popularpages' => array( 'Miehts_affjeroofe_Sigge' ),
+ 'Preferences' => array( 'Ming_Enstellunge', 'Enstellunge' ),
+ 'Prefixindex' => array( 'Sigge_met_Aanfang' ),
'Protectedpages' => array( 'Siggeschotz' ),
'Protectedtitles' => array( 'Tittelschotz' ),
- 'Allpages' => array( 'All_Sigge' ),
- 'Prefixindex' => array( 'Sigge_met_Aanfang' ),
- 'Ipblocklist' => array( 'Jesperrt', 'Jeshpächt' ),
- 'Unblock' => array( 'Freijävve', 'Frei_jävve', 'Freijevve', 'Frei_jevve' ),
- 'Specialpages' => array( 'Sondersigge', 'Söndersigge' ),
- 'Contributions' => array( 'Beidräch', 'Beidrääsh' ),
- 'Emailuser' => array( 'Email', 'E-mail' ),
- 'Confirmemail' => array( 'Email_Bestätije', 'E-mail_Bestätije', 'EmailBestätije', 'E-mailBestätije' ),
- 'Whatlinkshere' => array( 'Wat_noh_hee_link' ),
+ 'Randompage' => array( 'Zofällije_Sigg' ),
+ 'Randomredirect' => array( 'Zofällije_Ömleitung' ),
+ 'Recentchanges' => array( 'Neuste_Änderunge', 'Änderunge' ),
'Recentchangeslinked' => array( 'Änderungen_an_verlinkte_Sigge' ),
- 'Movepage' => array( 'Ömnenne', 'Ömdäufe' ),
- 'Blockme' => array( 'Proxy-Sperre' ),
- 'Booksources' => array( 'ISBN', 'Böcher', 'Böösher' ),
- 'Categories' => array( 'Saachjruppe' ),
- 'Export' => array( 'Expocht' ),
- 'Version' => array( 'Väsjohn' ),
- 'Allmessages' => array( 'MediaWiki-Appachtemang' ),
- 'Log' => array( 'Logböcher', 'Logböösher' ),
- 'Blockip' => array( 'IP-Sperre' ),
+ 'Revisiondelete' => array( 'Version_fottschmieße' ),
+ 'RevisionMove' => array( 'VersioneÖmnänne', 'Versione_Ömnänne', 'VersioneÖmnenne', 'Versione_Ömnenne' ),
+ 'Search' => array( 'Sök', 'Söök', 'Söke', 'Sööke' ),
+ 'Shortpages' => array( 'Koote_Atikelle' ),
+ 'Specialpages' => array( 'Sondersigge', 'Söndersigge' ),
+ 'Statistics' => array( 'Statistik', 'Shtatißtike' ),
+ 'Tags' => array( 'Makeerunge' ),
+ 'Unblock' => array( 'Freijävve', 'Frei_jävve', 'Freijevve', 'Frei_jevve' ),
+ 'Uncategorizedcategories' => array( 'Saachjruppe_ohne_Saachjruppe' ),
+ 'Uncategorizedimages' => array( 'Dateie_ohne_Saachjruppe' ),
+ 'Uncategorizedpages' => array( 'Sigge_ohne_Saachjruppe' ),
+ 'Uncategorizedtemplates' => array( 'Schablone_ohne_Saachjruppe' ),
'Undelete' => array( 'Zeröckholle' ),
- 'Import' => array( 'Emport', 'Empocht' ),
- 'Lockdb' => array( 'Datebank-deeschmaache' ),
'Unlockdb' => array( 'Datebank-opmaache' ),
- 'Userrights' => array( 'Medmaacherrääschte', 'Metmaacherrääschte' ),
- 'MIMEsearch' => array( 'MIME-Typ', 'MIMEtüp' ),
- 'FileDuplicateSearch' => array( 'Dubbel_Dateie' ),
- 'Unwatchedpages' => array( 'Sigge_oohne_Oppasser' ),
- 'Listredirects' => array( 'Ömleitunge' ),
- 'Revisiondelete' => array( 'Version_fottschmieße' ),
+ 'Unusedcategories' => array( 'Schablone_ohne_Links_drop' ),
+ 'Unusedimages' => array( 'Dateie_ohne_Links_drop' ),
'Unusedtemplates' => array( 'Nit_jebruchte_Schablone' ),
- 'Randomredirect' => array( 'Zofällije_Ömleitung' ),
- 'Mypage' => array( 'Ming_Medmaachersigg', 'Ming_Metmaachersigg', 'Medmaachersigg', 'Metmaachersigg' ),
- 'Mytalk' => array( 'Ming_Klaafsigg', 'Klaaf' ),
- 'Mycontributions' => array( 'Ming_Beidräch', 'Ming_Beidrääsh' ),
- 'Listadmins' => array( 'Köbese', 'Köbeße', 'Wiki-Köbesse' ),
- 'Listbots' => array( 'Bots' ),
- 'Popularpages' => array( 'Miehts_affjeroofe_Sigge' ),
- 'Search' => array( 'Sök', 'Söök', 'Söke', 'Sööke' ),
- 'Resetpass' => array( 'Neu_Passwood' ),
+ 'Unwatchedpages' => array( 'Sigge_oohne_Oppasser' ),
+ 'Upload' => array( 'Daate_huhlade', 'Huhlade' ),
+ 'Userlogin' => array( 'Enlogge' ),
+ 'Userlogout' => array( 'Ußlogge' ),
+ 'Userrights' => array( 'Medmaacherrääschte', 'Metmaacherrääschte' ),
+ 'Version' => array( 'Väsjohn' ),
+ 'Wantedcategories' => array( 'Saachjruppe_fähle', 'Saachjroppe_fähle' ),
+ 'Wantedfiles' => array( 'Dateie_fähle' ),
+ 'Wantedpages' => array( 'Sigge_fähle' ),
+ 'Wantedtemplates' => array( 'Schablone_fähle' ),
+ 'Watchlist' => array( 'Ming_Oppassliss', 'Oppassliss' ),
+ 'Whatlinkshere' => array( 'Wat_noh_hee_link' ),
'Withoutinterwiki' => array( 'Ohne_Shproche_Lenks' ),
- 'MergeHistory' => array( 'Versione_zosammeschmieße' ),
- 'Filepath' => array( 'Dateipaad' ),
- 'Invalidateemail' => array( 'Onjöltije_e-mail_Addräß', 'Onjöltije_E-Mail_Adress' ),
- 'Blankpage' => array( 'Leddijje_Sigge' ),
- 'LinkSearch' => array( 'Websigge_Söke' ),
- 'DeletedContributions' => array( 'Fotjeschmeße' ),
- 'Tags' => array( 'Makeerunge' ),
- 'Activeusers' => array( 'Aktive', 'AktiveMetmaacher', 'Aktive_Metmaacher', 'AktiveMedmaacher', 'Aktive_Medmaacher' ),
- 'ComparePages' => array( 'SiggeVerjliesche', 'Sigge_verjliesche', 'SiggeVerjlieche', 'Sigge_verjieche' ),
- 'Badtitle' => array( 'UnjewönschSiggetittelle', 'Unjewönsch_Siggetittelle' ),
);
$magicWords = array(
@@ -235,8 +236,8 @@ $messages = array(
'tog-shownumberswatching' => 'Zeich de Aanzahl Metmaacher, die op die Sigg am oppasse sin',
'tog-oldsig' => 'Esu&nbsp;süht&nbsp;Ding „Ongerschreff“&nbsp;us:',
'tog-fancysig' => 'Donn de „Ungerschreff“ als Wiki-Tex behandelle (ohne enne automattesche Lengk)',
-'tog-externaleditor' => 'Nemm jedes Mol en extern Editor-Projramm (Doför bruchs de extra Enstellunge op Dingem Kompjutor. Dat es jet för Fachlück. Doh kanns De [http://www.mediawiki.org/wiki/Manual:External_editors mieh drövver lässe])',
-'tog-externaldiff' => 'Nemm jedes Mol en extern Diff-Projramm (Doför bruchs de extra Enstellunge op Dingem Kompjutor. Dat es jet för Fachlück. Doh kanns De [http://www.mediawiki.org/wiki/Manual:External_editors mieh drövver lässe])',
+'tog-externaleditor' => 'Nemm jedes Mol en extern Editor-Projramm (Doför bruchs de extra Enstellunge op Dingem Kompjutor. Dat es jet för Fachlück. Doh kanns De [//www.mediawiki.org/wiki/Manual:External_editors mieh drövver lässe])',
+'tog-externaldiff' => 'Nemm jedes Mol en extern Diff-Projramm (Doför bruchs de extra Enstellunge op Dingem Kompjutor. Dat es jet för Fachlück. Doh kanns De [//www.mediawiki.org/wiki/Manual:External_editors mieh drövver lässe])',
'tog-showjumplinks' => '„Jangk-noh“-Links usjevve, die bei em „Zojang ohne Barrikad“ helfe dun',
'tog-uselivepreview' => 'Dun de „Lebendije Vör-Aansich“ zeije (em Usprobierstadium, un bruch Java_Skripp)',
'tog-forceeditsummary' => 'Froch noh, wann en däm Feld „Koot zosammejefass, Quell“ beim Avspeichere nix dren steiht',
@@ -333,15 +334,7 @@ $messages = array(
'listingcontinuesabbrev' => '… (wigger)',
'index-category' => 'Sigge, di de Söhkmaschine opnämme sulle',
'noindex-category' => 'Sigge, di de Söhkmaschine nit opnämme sulle',
-
-'mainpagetext' => "'''MediaWiki es jetz enstalleet.'''",
-'mainpagedocfooter' => 'Luur en et (änglesche) [http://meta.wikimedia.org/wiki/Help:Contents Handboch] wann De wesse wells wie de Wiki-Soffwär jebruch un bedeent wääde muss.
-
-== För dä Aanfang ==
-Dat es och all op Änglesch:
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
+'broken-file-category' => 'Sigge met kappodde Lengks op Datteije',
'about' => 'Ãœvver',
'article' => 'Atikkel',
@@ -393,10 +386,10 @@ Dat es och all op Änglesch:
'history' => 'Versione',
'history_short' => 'Versione',
'updatedmarker' => '(jeändert)',
-'info_short' => 'Infomation',
'printableversion' => 'För ze Drocke',
'permalink' => 'Ne Permalink noh heh',
'print' => 'Drocke',
+'view' => 'Beloore',
'edit' => 'Ändere',
'create' => 'Aanläje',
'editthispage' => 'De Sigg ändere',
@@ -404,6 +397,7 @@ Dat es och all op Änglesch:
'delete' => 'Fottschmieße',
'deletethispage' => 'De Sigg fottschmieße',
'undelete_short' => '{{PLURAL:$1|ein Änderung|$1 Änderunge}} zeröckholle',
+'viewdeleted_short' => '{{PLURAL:$1|eijn fottjeschmesse Änderung|$1 fottjeschmesse Änderunge|keij fottjeschmesse Änderunge}} beloore',
'protect' => 'Schötze',
'protect_change' => 'der Schotz ändere',
'protectthispage' => 'De Sigg schötze',
@@ -489,6 +483,8 @@ $1',
'toc' => 'Enhaldsüvversich',
'showtoc' => 'enblende',
'hidetoc' => 'usblende',
+'collapsible-collapse' => 'Zohklappe',
+'collapsible-expand' => 'Opklappe',
'thisisdeleted' => '$1 - aanluure oder widder zeröckholle?',
'viewdeleted' => '$1 aanzeije?',
'restorelink' => '{{PLURAL:$1|eijn fottjeschmesse Änderung|$1 fottjeschmesse Änderunge|keij fottjeschmesse Änderunge}}',
@@ -502,6 +498,8 @@ $1',
'feed-atom' => 'Atom',
'feed-rss' => 'RSS',
'red-link-title' => '$1 — en Sigg, die et noch nit jitt',
+'sort-descending' => 'Röckwääts zoteere',
+'sort-ascending' => 'Opwääts zoteere',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Atikkel',
@@ -592,18 +590,19 @@ Ussinn un de Wööt ändere met dänne et Wiki op de Metmaacher un de
Besöker drop aankütt!
Wann De die en Ding Shprooch övversäze wellß, do jangk op
-<code lang="en">[http://translatewiki.net/wiki/Main_Page?setlang=ksh translatewiki.net]</code>,
+<code lang="en">[//translatewiki.net/wiki/Main_Page?setlang=ksh translatewiki.net]</code>,
woh et MediaWiki Ingerfäiß en alle Shprooche översaz weedt.
Wann De weße wells, wat dä Täx heh bedügg, do häß De en Schangß, dat De op
-<code lang="en">http://www.mediawiki.org/wiki/Manual:Interface/{{BASEPAGENAMEE}}?setlang=ksh</code>
+<code lang="en">//www.mediawiki.org/wiki/Manual:Interface/{{BASEPAGENAMEE}}?setlang=ksh</code>
jet doh drövver fenge kanns, udder op
-<code lang="en">http://translatewiki.net/wiki/MediaWiki:{{BASEPAGENAMEE}}/qqq?setlang=ksh</code>',
+<code lang="en">//translatewiki.net/wiki/MediaWiki:{{BASEPAGENAMEE}}/qqq?setlang=ksh</code>',
'sqlhidden' => "(Dä SQL_Befähl du'mer nit zeije)",
'cascadeprotected' => 'Die Sigg es jeschöz, un mer kann se nit ändere. Se es en en Schotz-Kaskad enjebonge, zosamme met dä {{PLURAL:$1|Sigg|Sigge}}:
$2',
'namespaceprotected' => 'Do darfs Sigge em Appachtemang „$1“ nit ändere.',
-'customcssjsprotected' => 'Do darfs di Sigg heh nit ändere. Se jehööt enem andere Metmacher un es e Stöck funn dämm sing eije Enstellunge.',
+'customcssprotected' => 'Do darfs di CSS-Sigg heh nit ändere. Se jehööt enem andere Metmacher un es e Stöck funn dämm sing eije Enstellunge.',
+'customjsprotected' => 'Do darfs di JavaSkep-Sigg heh nit ändere. Se jehööt enem andere Metmacher un es e Stöck funn dämm sing eije Enstellunge.',
'ns-specialprotected' => '{{int:nstab-special}}e künne mer nit ändere.',
'titleprotected' => "Dä Tittel för en Sigg eß verbodde, fum [[User:$1]], un dr Jrond wohr: ''„$2“''",
@@ -641,6 +640,7 @@ Denk dran, Do künnts Der [[Special:Preferences|Ding Enstellunge heh för {{GRAM
'createaccount' => 'Aanmelde als ene neue Metmaacher',
'gotaccount' => "Do bes ald aanjemeldt {{GRAMMAR:en|{{SITENAME}}}}? Dann jangk nohm '''$1'''.",
'gotaccountlink' => 'Enlogge',
+'userlogin-resetlink' => 'Häß De Ding Daate för et Enlogge verjäße?',
'createaccountmail' => 'Scheck mer en E-Mail met Passwood',
'createaccountreason' => 'Jrond:',
'badretype' => 'Ding zwëij ennjejovve Paßßwööter sinn nit ejaal. Do muss De Dich för ein entscheide.',
@@ -654,6 +654,9 @@ Schad.
Wann De Cookies avjeschald häs en Dingem Brauser, dann kann dat nit laufe.
Sök Der ene Brauser, dä et kann, dun se enschalte, un dann log Dich noch ens neu en, met Dingem neue Metmaacher Name un Passwood.',
'nocookieslogin' => '{{ucfirst:{{GRAMMAR:Nominativ|{{SITENAME}}}}}} bruch <i lang="en">cookies</i> för et Enlogge. Et süht esu us, als hätts De de <i lang="en">cookies</i> avjeschalt. Dun se aanschalte un dann versök et noch ens. Odder söök Der ene Brauser, dä et kann.',
+'nocookiesfornew' => 'Et wood keine Zohjang opjemaat, weil mer nit jeweß sin künne, woh de Daate her kohme.
+Dinge Brauser moß <i lang="en">cookies</i> enjeschalldt han.
+Donn dat prööfe, donn heh di Sigg norr_ens neu laade, un dann versöhk et norr_ens.',
'noname' => 'Dat jeiht nit als ene Metmaacher Name. Jetz muss De et noch ens versöke.',
'loginsuccesstitle' => 'Dat Enlogge hät jeflupp.',
'loginsuccess' => "'''Do bes jetz enjelogg {{GRAMMAR:en|{{SITENAME}}}}, un Dinge Name als ene Metmaacher es „$1“.'''",
@@ -662,7 +665,7 @@ Jroß- un Kleinboochshtabe maache ene Ungerscheid!
<br />
Jetz muss De et noch ens versöke.
Udder donn_[[Special:UserLogin/signup|ene neue Metmaacher aanmelde]].',
-'nosuchusershort' => 'Dä Metmaacher Name „<nowiki>$1</nowiki>“ wor verkihrt. Jetz muss De et noch ens versöke.',
+'nosuchusershort' => 'Dä Metmaacher Name „$1“ wor verkihrt. Jetz muss De et noch ens versöke.',
'nouserspecified' => 'Dat jeiht nit als ene Metmaacher Name',
'login-userblocked' => 'Heh {{GENDER:$1|dä Kääl|dat Weesch|dä Metmaacher|die Frou|dat}} es jesperrt. Enlogge verbodde.',
'wrongpassword' => 'Dat Passwood oder dä Metmaacher Name wor verkihrt. Jetz muss De et noch ens versöke.',
@@ -736,6 +739,7 @@ e-mail eijfach. Wann De en däm Wikki nit metmaache wells, och.',
'usernamehasherror' => 'En Metmaacher iere Name darf dat Zeijche „#“ nit dren vürkumme.',
'login-throttled' => 'Do häs zo öff, zo vill, un zo lang en de letzde Zick probeet, ennzelogge.
Waat e Wielsche, ih dat De et widder versöhks.',
+'login-abort-generic' => 'Dat Enlogge hät nit jeflup.',
'loginlanguagelabel' => 'Sproch: $1',
'suspicious-userlogout' => "Do bes '''nit''' ußjelogg.
Et süht us, wi wann ene kappodde Brauser udder <i lang=\"en\">proxy</i>ẞööver met Zwescheschpeischer noh däm Ußlogge jefrooch hät.",
@@ -743,7 +747,7 @@ Et süht us, wi wann ene kappodde Brauser udder <i lang=\"en\">proxy</i>ẞööv
# E-mail sending
'php-mail-error-unknown' => 'Nit bekannte Fähler met dä Funxjohn <code lang="en">mail()</code> vum PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Passwood tuusche udder neu ußjävve',
'resetpass_announce' => 'De beß jez enjelogg med ennem Zweschepasswoot, wat De övver e-mail krääje häs. Dat kanns De nit einfar_esu behallde. Alsu donn jetz e neu Passwoot för op Duur aanjevve.',
'resetpass_text' => '<!-- Donn der Täx hee dobei -->',
@@ -762,6 +766,44 @@ Müjjelesch, Do häs Ding Passwood ald jetuusch, künnt och sin,
Do häs Der enzwesche e neuZweschepasswood jehollt.',
'resetpass-temp-password' => 'Zweschepasswood:',
+# Special:PasswordReset
+'passwordreset' => 'Et Paßwoot zeröck säze',
+'passwordreset-text' => 'Donn dat Fommulaa heh ußfölle, öm en <i lang="en">e-mail</i> ze krijje, woh jät övver der Zohjang heh obb et Wiki för Desch dren shteiht.',
+'passwordreset-legend' => 'Et Paßwoot zeröck säze',
+'passwordreset-disabled' => 'Et Paßwoot zeröck ze säze es heh em Wiki afjeschalldt.',
+'passwordreset-pretext' => '{{PLURAL:$1||Jiff ein vun dä Saache heh dronger enn|}}',
+'passwordreset-username' => 'Metmaacher Name:',
+'passwordreset-domain' => 'Domähn:',
+'passwordreset-email' => 'De Adräß för de <i lang="en">e-mail</i>:',
+'passwordreset-emailtitle' => 'Einzelheite för der Zohjang op {{GRAMMAR:Akkusativ|{{SITENAME}}}}',
+'passwordreset-emailtext-ip' => 'Do künns et sällver jewääse sin, öhnswää hät vun dä Adräß $1 en Internet öm
+en e-mail jefrooch, met Daate övver Dinge Zohjäng op {{GRAMMAR:Akkusativ|{{SITENAME}}}}
+$4
+Heh {{PLURAL:$3|dä Metmaacher hät|di Metmaacher han|hät keine Metmaacher}} Ding e-mail Addräß:
+
+$2
+
+{{PLURAL:$3|Dat Zweschepaßwoot leuf|Di Zweschepaßwööter loufe|Kein Zweschepaßwoot leuf}} en {{PLURAL:$5|enem Daach|$5 Dääsch|keinem Daach}} uß.
+Donn Desch jäz enlogge, un e neu Paßwoot faßlääje. Wann ene Andere wi
+Do dat heh aanjestüßße hät, udder wann De Desch widder aan Ding Paßwoot
+entsenne kanns, un et nimmieh ändere wells, udder es suwwisu weiß, dann
+moß De jäz jaa nix donn, un kanns Ding Paßwoot wigger bruche.',
+'passwordreset-emailtext-user' => 'Dä Metmaacher $1 vun {{GRAMMAR:Dativ|{{SITENAME}}}} hät öm en e-mail jefrooch,
+met Daate övver Dinge Zohjäng op {{GRAMMAR:Akkusativ|{{SITENAME}}}}
+$4
+Heh {{PLURAL:$3|dä Metmaacher hät|di Metmaacher han|hät keine Metmaacher}} Ding e-mail Addräß:
+
+$2
+
+{{PLURAL:$3|Dat Zweschepaßwoot leuf|Di Zweschepaßwööter loufe|Kein Zweschepaßwoot leuf}} en {{PLURAL:$5|enem Daach|$5 Dääsch|keinem Daach}} uß.
+Donn Desch jäz enlogge, un e neu Paßwoot faßlääje. Wann ene Andere wi
+Do dat heh aanjestüßße hät, udder wann De Desch widder aan Ding Paßwoot
+entsenne kanns, un et nimmieh ändere wells, udder es suwwisu weiß, dann
+moß De jäz jaa nix donn, un kanns Ding Paßwoot wigger bruche.',
+'passwordreset-emailelement' => 'Metmaacher Name: $1
+Eijmohl-Paßwoot: $2',
+'passwordreset-emailsent' => 'En <i lang="en">e-mail</i> met Aanjaabe zom Zohjang heh es verscheck.',
+
# Edit page toolbar
'bold_sample' => 'Fätte Schreff',
'bold_tip' => 'Fätte Schreff',
@@ -773,8 +815,6 @@ Do häs Der enzwesche e neuZweschepasswood jehollt.',
'extlink_tip' => 'Ene Link noh drusse (denk dran, http:// aan dr Aanfang!)',
'headline_sample' => 'Ãœvverschreff',
'headline_tip' => 'Övverschreff om bövverschte Nivvo',
-'math_sample' => 'Heh schriev de Formel en „LaTeX“ Forrem eren',
-'math_tip' => 'En mathematisch Formel',
'nowiki_sample' => 'Heh kütt dä Tex hen, dä vun de Wiki-Soffwär nit bearbeid, un en Rauh jelooße wääde soll',
'nowiki_tip' => 'Der Wiki-Code för et Fommatteere üvverjonn',
'image_sample' => 'Beispill.jpg',
@@ -879,11 +919,11 @@ domet De dann donoh nit mieh met esu en Ömständ ze dun häs, wie de andere nam
'noarticletext-nopermission' => 'Op dä Sigg es em Momang nix drop.
Do kanns noh däm Tittel vun heh dä Sigg [[Special:Search/{{PAGENAME}}|em Tex op ander Sigge söhke]],
udder en dä zopaß <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Logbööscher nohloore]</span>.',
-'userpage-userdoesnotexist' => 'Enne Metmaacher „$1“ hammer nit, beß De secher, dat De die Metmaachersigg ändere oder aanläje wellss?.',
+'userpage-userdoesnotexist' => 'Enne Metmaacher „<nowiki>$1</nowiki>“ hammer nit, beß De secher, dat De die Metmaachersigg ändere oder aanläje wellss?.',
'userpage-userdoesnotexist-view' => 'Ene Metmaacher mem Naame „$1“ hät sesch noch nih aanjemeldt',
'blocked-notice-logextract' => '{{GENDER:$1|Dä Metmaacher|Dat|Dä Metmaacher|Die Metmaacheren|Et}} es jraad jesperrt.
Heh kütt der neuste Enndraach drövver uss_em Logbooch övver et Metmaacher_Sperre:',
-'clearyourcache' => '<br clear="all" style="clear:both">
+'clearyourcache' => '<br style="clear: both" />
\'\'\'Opjepass:\'\'\'
Noh em Speichere künnd et sin, datt De Dingem Brauser singe Cache Speicher
övverlisste muss, ih datt De de Änderunge och ze sinn kreß.
@@ -932,6 +972,7 @@ Wann dat widder nit flupp, dann versök et ens met [[Special:UserLogout|Uslogge]
'''Falls för Dich söns alles jod ussüht, versök et jrad noch ens. Wann dat widder nit flupp, dann versök et ens met [[Special:UserLogout|Uslogge]] un widder Enlogge.'''",
'token_suffix_mismatch' => "'''Ding Änderung ham_mer nit övvernomme. Dinge Brauser hät Sazzeijche em verstoche <i lang=\"en\">Token</i> för et Ändere versout. Dat paßeet och ens, wann enne <i lang=\"en\">Proxy</i> nit fungkßjeneet. Et Affspeichere wör do jefährlesch, do künt dä Sigge_Enhaldt kapott bei jon.'''",
+'edit_form_incomplete' => "'''Ene Aandeil vun dämm Fommulaa es nit reshtesh om ẞööver aanjekumme. Donn Ding Ennjaabe prööve, repareere, un versöhg et norrens.'''",
'editing' => 'De Sigg „$1“ ändere',
'editingsection' => 'Ne Avschnedd vun dä Sigg: „$1“ ändere',
'editingcomment' => '„$1“ ändere (ene neue Avschnedd schrieve)',
@@ -1176,7 +1217,7 @@ Do kanns kein Enndrääsch vör de Wiki_Köbeße verschteijsche, der oohne noch
# Suppression log
'suppressionlog' => 'Et Logboch fum Versteiche',
'suppressionlogtext' => 'Heh noh kütt et Logboch fum Versteiche, woh Versione fun Sigge, Zosammefassunge, Quelle, Metmaachername un Metmaacher-Sperre ze fenge sin, di fun de Oure vun de Öffentleschkeit, un och fun de Wiki-Köbesse verstoche woodte, udder widder zeröck op nommaal jebraat woodte.
-Loor en de [[Special:IPBlockList|{{int:ipblocklist}}]] öm ze sinn, wää un wat em Momang wie jesperrt es.',
+Loor en de [[Special:BlockList|{{int:ipblocklist}}]] öm ze sinn, wää un wat em Momang wie jesperrt es.',
# History merging
'mergehistory' => 'Versione fun Sigge zosamme schmiiße',
@@ -1295,12 +1336,13 @@ dat dänne ihr Daate topaktuell sin,
ävver et es besser wie jaa_nix.',
# Quickbar
-'qbsettings' => '„Flöcke Links“',
-'qbsettings-none' => 'Fottlooße, dat well ich nit sinn',
-'qbsettings-fixedleft' => 'Am linke Rand fass aanjepapp',
-'qbsettings-fixedright' => 'Am rächte Rand fass aanjepapp',
-'qbsettings-floatingleft' => 'Am linke Rand am Schwevve',
-'qbsettings-floatingright' => 'Am rächte Rand am Schwevve',
+'qbsettings' => '„Flöcke Links“',
+'qbsettings-none' => 'Fottlooße, dat well ich nit sinn',
+'qbsettings-fixedleft' => 'Am linke Rand fass aanjepapp',
+'qbsettings-fixedright' => 'Am rächte Rand fass aanjepapp',
+'qbsettings-floatingleft' => 'Am linke Rand am Schwevve',
+'qbsettings-floatingright' => 'Am rächte Rand am Schwevve',
+'qbsettings-directionality' => 'Faß, passend för wi eröm de Schreff för Ding Schprooch jeiht',
# Preferences page
'preferences' => 'ming Enstellunge',
@@ -1311,9 +1353,10 @@ dat dänne ihr Daate topaktuell sin,
'changepassword' => 'Passwood *',
'prefs-skin' => 'Et Ussinn',
'skin-preview' => 'Vör-Ansich',
-'prefs-math' => 'Mathematisch Formele',
'datedefault' => 'Ejaal - kein Vörliebe',
+'prefs-beta' => 'Saache zum Ußprobeere, di schun en Zick lang erproob woode sin',
'prefs-datetime' => 'Datum un Uhrzigge',
+'prefs-labs' => 'Neu Saache zom Ußprobeere, die künnte noch nit akeraat fluppe',
'prefs-personal' => 'De Enstellunge',
'prefs-rc' => 'Neuste Änderunge',
'prefs-watchlist' => 'De Oppassliss',
@@ -1335,8 +1378,6 @@ dat dänne ihr Daate topaktuell sin,
'columns' => 'Spalte:',
'searchresultshead' => 'Beim Söhke',
'resultsperpage' => 'Zeich Treffer pro Sigg:',
-'contextlines' => 'Reihe för jede Treffer:',
-'contextchars' => 'Zëijshe uß de Ömjävung, pro Rëij:',
'stub-threshold' => 'Links passend för <a href="#" class="stub">klein Sigge</a> fomateere av esu vill Bytes:',
'stub-threshold-disabled' => 'Ußjeschalldt',
'recentchangesdays' => 'Aanzahl Dage en de Liss met de „Neuste Änderunge“ — als Standad:',
@@ -1349,7 +1390,7 @@ Ene zohfällesch ußjewörfelte Schlößel, dää De nämme künnß, wöhr: <cod
'savedprefs' => 'Ding Enstellunge sin jetz jesechert.',
'timezonelegend' => 'Ziggzon:',
'localtime' => 'De Zigg op Dingem Kompjuter:',
-'timezoneuseserverdefault' => 'Nemm däm Server sing Zigg',
+'timezoneuseserverdefault' => 'Nemm däm Server sing Zigg ($1)',
'timezoneuseoffset' => 'Söns jet, jiff dä Ungerscheid aan',
'timezoneoffset' => 'Dä Ungerscheid¹ es:',
'servertime' => 'De Uhrzigg om ẞööver es jetz:',
@@ -1396,7 +1437,8 @@ Ene zohfällesch ußjewörfelte Schlößel, dää De nämme künnß, wöhr: <cod
'prefs-help-gender' => '* Moß mer nit aanjevve, un wann et aanjejovve eß, dann kallt et Wiki övver Desch als „dä Pitter“ udder „dat Tiina“, sönß uns „Metmaacher Pütz“. Dat kritt de janne Welt ze sinn, nit nur Do allein.',
'email' => 'E-mail',
'prefs-help-realname' => '* Dinge richtije Name — kanns De fott looße — wann De en ävver nenne wells, dann weed dä jebruch, öm Ding Beidräch domet ze schmöcke.',
-'prefs-help-email' => '* Ding <i lang="en">e-mail</i> Adress - kanns De fottlooße, un se es för Andre nit ze sinn - mäht et ävver müjjelich, Der e neu Passwoot ze schecke, wann De et ens verjäße häß. Do kannß och zohlohße, dat mer Der domet övver Ding Metmaacherklaafsigg en <i lang="en">e-mail</i> schecke kann. Esu künne ander Metmaacher met Der en Kontak kumme, ohne dat se Dinge Name oder Ding <i lang="en">e-Mail</i> Adress kenne mööte.',
+'prefs-help-email' => 'Ding <i lang="en">e-mail</i> Adress - kanns De fottlooße, un se es för Andre nit ze sinn - mäht et ävver müjjelich, Der e neu Passwoot ze schecke, wann De et ens verjäße häß.',
+'prefs-help-email-others' => 'Do kannß och zohlohße, dat mer Der domet övver Ding Metmaacherklaafsigg en <i lang="en">e-mail</i> schecke kann. Esu künne ander Metmaacher met Der en Kontak kumme, ohne dat se Dinge Name oder Ding <i lang="en">e-Mail</i> Adress kenne mööte.',
'prefs-help-email-required' => 'Do moß en jöltije E-Mail-Adress aanjevve.',
'prefs-info' => 'Jrundlare',
'prefs-i18n' => 'Shprooche-Enshtellunge',
@@ -1522,15 +1564,15 @@ Ene zohfällesch ußjewörfelte Schlößel, dää De nämme künnß, wöhr: <cod
'right-userrights' => 'Metmaacher ier Rääschte ändere',
'right-userrights-interwiki' => 'Metmaacher ier Rääschte in ander Wikis ändere',
'right-siteadmin' => 'De Datebank deeschmaache un opmaache för Änderunge',
-'right-reset-passwords' => 'Enem andere Metmaacher et Paßwoot zeröck setze',
'right-override-export-depth' => 'Beim Sigge Expoteere de Sigge metnämme, woh Lingks drop jon — beß fönef Schredde wigk',
'right-sendemail' => '<i lang="en">e-mail</i> aan ander Metmaacher schecke',
# 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.',
-'rightsnone' => '(nix)',
+'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.',
+'rightsnone' => '(nix)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'di Sigg ze lesse',
@@ -1664,12 +1706,12 @@ die mer en Titele vun Sigge nit bruche kann.
Sök Der statt „$1“ jet anders us,
un dann muss de dat Dinge noch ens huhlade.',
'badfilename' => 'De Datei es en „$1“ ömjedäuf.',
-'filetype-mime-mismatch' => 'Dä Datei ier Ängk vum Name paß nit zo dä <i lang="en">MIME</i>-Zoot.',
+'filetype-mime-mismatch' => 'Dä Datei ier Ängk vum Name (<code lang="en">.$1</code>) paß nit zo dä <i lang="en">MIME</i>-Zoot (<code lang="en">$2</code>)',
'filetype-badmime' => 'Dateie mem MIME-Typ „<code>$1</code>“ wulle mer nit huhjelade krijje.',
'filetype-bad-ie-mime' => 'Di Datei kam_mer nit huhlade, weil der Internet Explorrer se för en „$1“
hallde deiht, wat nit erlaub, un müjjelelscherwies ene jefährlesche Dattei-Typp es.',
'filetype-unwanted-type' => "Dat Dateifommaat '''„<code>.$1</code>“''' wulle mer nit esu jään huhjelaade krijje. Leever {{PLURAL:$3|ham_mer|ham_mer ein fun|ham_mer nix}}: $2.",
-'filetype-banned-type' => "Dat Dateifommaat '''„<code>.$1</code>“''' wulle mer nit huhjelaade krijje. Älaup {{PLURAL:$3|es|sin_er}}: $2.",
+'filetype-banned-type' => "{{PLURAL:$4|Dat Dateifommaat|De Dateifommaate|}} '''<code>$1</code>''' wulle mer nit huhjelaade krijje. Älaup {{PLURAL:$3|es|sin_er|}}: <code>$2</code>",
'filetype-missing' => 'Di Datei, di De huhlaade wells, hät keij Fommaat em Name, wi zem Beijspöll „<code>.jpg</code>“, esu jet hätte mer ävver jähn.',
'empty-file' => 'Ding huhjelaade Dattei wohr läddesch.',
'file-too-large' => 'Ding huhjelaade Dattei wohr ze jruß.',
@@ -1685,6 +1727,7 @@ hallde deiht, wat nit erlaub, un müjjelelscherwies ene jefährlesche Dattei-Typ
'large-file' => 'Dateie sullte nit jröößer wääde, wi $1, ävver Ding Datei es $2 jroß.',
'largefileserver' => 'De Datei es ze jroß. Jrößer wie däm ẞööver sing Enstellung erlaub.',
'emptyfile' => 'Wat De hee jetz huhjelade häs, hät kein Daate dren jehatt. Künnt sin, dat De Dich verdon häs, un dä Name wo verkihrt jeschrevve. Luur ens ov De wirklich <strong>die</strong> Datei hee huhlade wells.',
+'windows-nonascii-filename' => 'Heh dat Wiki löht kein Datteiname met Sönderzeische zoh.',
'fileexists' => "Et jitt ald en Datei met däm Name.
Wann De op „Datei avspeichere“ klicks, weed se ersetz.
Bes esu jod un luur Der '''<tt>[[:$1]]</tt>''' aan, wann De nit 100% secher bes.
@@ -1730,6 +1773,8 @@ Bes esu joot un donn noh de Enshtellung <i lang="en">file_uploads</i> loore.',
En dä Datei stich e Kompjutervirus!
<br />
De Einzelheite: $1',
+'uploadjava' => 'Dat es en Sammel_Dattei em ZIP-Fommaat, woh en Java-.class-Datei dren shtich.
+Java-Datteie huhlaade es nit zohjelohße, weil mer domet de Enshtellunge ömjonn kann, di der ẞörver schöze un däm sing Sescherheit jarranteere.',
'upload-source' => 'Wo de Daate herkumme',
'sourcefilename' => 'Datei zem huhlade:',
'sourceurl' => '<i lang="en">URL</i> för vun eronger ze laade',
@@ -1739,10 +1784,6 @@ De Einzelheite: $1',
'upload-options' => 'Enstellunge för et Laade',
'watchthisupload' => 'Op di Datei oppasse',
'filewasdeleted' => 'Unger däm Name wood ald ens en Datei huhjelade. Die es enzwesche ävver widder fottjeschmesse woode. Luur leever eets ens en et $1 ih dat De se dann avspeichere deis.',
-'upload-wasdeleted' => "'''Opjepaß:''' Do bes en Datei huh am lade, di ald doför doh wohr un fottjeschmesse wohdt.
-
-Bes esu joot un don Der övverlääje, of di Dattei mem sellve Name norr_ens huh ze lade en Odenung es.
-Hee es dat Logboch met de fotjeschmesse Dateie, met däm Jrond, woröm di Dattei dohmohls fottjeschmesse woode es:",
'filename-bad-prefix' => "Dä Datei ier Name fängk met '''„$1“''' aan. dat eß fä jewöhnlesch ene Name, dä en dijjitaale Kammerra iere Belder jitt. Esu en Name donn uns esu winnisch verzälle, dat mer se nit jän em Wiki han wulle.
Bes esu joot un jiff dä enne Name, wo mer mieh met aanfange, öm ze wesse, wat en dä Datei dren es.",
'filename-prefix-blacklist' => ' #<!-- Lohß di Reih jenou esu wie se es! --> <pre>
@@ -1783,11 +1824,28 @@ Wann et nit flupp, verzäll et enem [[Special:ListUsers/sysop|Wiki-Köbes]].',
'upload-unknown-size' => 'Mer weße nit, wi jruuß',
'upload-http-error' => 'Ene <i lang="en">HTTP</i>-Fäähler es opjetrodde: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Ene Fähler es opjetrodde, wi me di ZIP-Sammel_Dattei ußpacke wullte för der Enhallt ze proofe.',
+'zip-wrong-format' => 'De aanjejovve Dattei es kein ZIP-Sammel_Dattei.',
+'zip-bad' => 'Di Dattei en beschäädeschte udder sönswi nit lässbaa ZIP-Sammel_Dattei.
+Se kann nit aanjemäße jeprööf wääde, of se sescher es.',
+'zip-unsupported' => 'Di Dattei es en ZIP-Sammel_Dattei met Eijeschaffte, woh MediaWiki nit met ömjonn kann.
+Se kann nit aanjemäße jeprööf wääde, of se sescher es.',
+
+# Special:UploadStash
+'uploadstash' => 'Zwescheschpeisscher vum Huhlaade',
+'uploadstash-summary' => 'Heh di Sigg määt et müjjelesch, op Dateie en däm Zwescheschpeisscher zohzejriefe, woh Ding fresch huhjelaade Dateie dren shteiche, och di Dateie, di mer noch huh aam laade sin. Ußer Der sellver un em Wikiprojramm di söns keine ze sinn.',
+'uploadstash-clear' => 'All de Dateie em Zwescheschpeisscher vum Huhlaade fottschmieße',
+'uploadstash-nofiles' => 'Do häs kein Datteije en Dingem Zwescheschpeisscher vum Huhlaade.',
+'uploadstash-badtoken' => 'Dat ze donn hät nit jeflupp. Velleich wohre Ding Daate zom Deil verschött jejange udder afjeloufe. Versöhg et nor_rens.',
+'uploadstash-errclear' => 'Mer kunnte de Dateie nit fottschmieße.',
+'uploadstash-refresh' => 'De Leß met de Dateie op ene neue Shtand bränge',
+
# img_auth script messages
'img-auth-accessdenied' => 'Keine Zohjang',
'img-auth-nopathinfo' => 'De <code lang="en">PATH_INFO</code> fäählt.
Dä Webßööver es nit doför ennjerescht, di Ennfommazjuhn wigger ze jävve.
-Hä künnd_op <code lang="en">CGI</code> opjebout sin, un dröm <code lang="en">img_auth</code> nit ongshtöze künne. Loor onger http://www.mediawiki.org/wiki/Manual:Image_Authorization noh, wat domet es.',
+Hä künnd_op <code lang="en">CGI</code> opjebout sin, un dröm <code lang="en">img_auth</code> nit ongshtöze künne. Loor em [http://www.mediawiki.org/wiki/Manual:Image_Authorization Handbooch] noh, wat domet es.',
'img-auth-notindir' => 'Dä aanjefroochte Pat is nit em enjeschtallte Verzeischneß för et Huhlaade.',
'img-auth-badtitle' => 'Uß „$1“ lööt sesch keine jöltijje Tittel maache.',
'img-auth-nologinnWL' => 'Do bes nit ennjelogg, un „$1“ es nit op dä Leß met de zohjelohße Datteiname.',
@@ -1865,7 +1923,7 @@ De Liß hee dronger zeisch nur {{PLURAL:$1|der eetse Link|de eetste $1 Links|kei
Mer ävver han och en [[Special:WhatLinksHere/$2|Komplätte Leß]].',
'nolinkstoimage' => 'Nix link op hee die Datei.',
'morelinkstoimage' => 'Belohr Der [[Special:WhatLinksHere/$1|de Links]] op di Datei.',
-'redirectstofile' => 'Di {{PLURAL:$1|Datei heenoh leid|$1 Dateie leide}} op he di Datei öm:',
+'linkstoimage-redirect' => '$1 (Dattei-Ömleidong) $2',
'duplicatesoffile' => 'Mer hann_er {{PLURAL:$1|en dubbelte Datei|$1 dubbelte Dateie|kei dubbelte Dateije}} fon he dä Datei, di {{PLURAL:$1|hät|han all|han}} dersellve Enhalldt ([[Special:FileDuplicateSearch/$2|mieh Einzelheite]]):',
'sharedupload' => 'De Datei es för diverse ungerscheidlije Projekte parat jelaht. Se kütt fun $1.',
'sharedupload-desc-there' => 'Di Datei kütt vun $1 un kann en andere Projekte jebruch wäde.
@@ -1878,7 +1936,7 @@ Dat sellve shteiht hee dronger.',
'uploadnewversion-linktext' => 'Dun en neu Version vun dä Datei huhlade',
'shared-repo-from' => 'uß $1',
'shared-repo' => 'ene jemeinsame Beshtand',
-'filepage.css' => '/* Das folgende CSS wird auf Dateibeschreibungsseiten, auch auf fremden Client-Wikis, geladen. */',
+'filepage.css' => '/* Heh dat CSS küdd op Sigge övver Dateije, och di vun ander Wikis jehollt woode sin. */',
# File reversion
'filerevert' => '„$1“ zerök holle',
@@ -1964,21 +2022,22 @@ All de Sigge em Wiki, och Klaafsigge, Ömleitunge, un esu jet',
'statistics-users-active-desc' => 'Metmaacher, die {{PLURAL:$1|hück un jesterre|en de läzte $1 Dääsh|hück}} jät jemaat han.',
'statistics-mostpopular' => 'De miets affjeroofe Sigge',
-'disambiguations' => '„(Wat es dat?)“-Sigge',
+'disambiguations' => 'Sigge met Lengks dren op „(Wat ėß dat?)“-Sigge',
'disambiguationspage' => 'Template:Disambig',
'disambiguations-text' => 'En de Sigge hee noh sin Links dren, di op en „(Watt ėßß datt?)“-Sigg jonn.
Esu en Links sollte eijentlesch op en Sigg jon, di tirek jemeint es.
Ene Atikel jelld als en „(Watt ėßß datt?)“-Sigg, wann en dä Sigg [[MediaWiki:Disambiguationspage]] ene Link op en drop dren es. Alles wat keij Atikele sin, weed dobei jaa nit eez metjezallt.',
-'doubleredirects' => 'Ömleitunge op Ömleitunge',
-'doubleredirectstext' => 'Hee fings De en jede Reih ene Link op de iertste un de zweite Ömleitung, donoh ene Link op de Sigg, wo de
+'doubleredirects' => 'Ömleitunge op Ömleitunge',
+'doubleredirectstext' => 'Hee fings De en jede Reih ene Link op de iertste un de zweite Ömleitung, donoh ene Link op de Sigg, wo de
zweite Ömleitung hin jeiht. För jewöhnlich es dat dann och de richtije Sigg, wo de iertste Ömleitung ald hen jonn sullt.
<del>Ußjeshtreshe</del> Reije sin ald äleedesh.
Met däm „(Ändere)“-Link kanns De de eetste Sigg tirek aanpacke.
Tipp: Merk Der dä Tittel vun dä Sigg dovör.',
-'double-redirect-fixed-move' => 'dubbel Ömleidung nohm Ömnenne automattesch opjelös: [[$1]] → [[$2]]',
-'double-redirect-fixer' => '(Opjaveleß)',
+'double-redirect-fixed-move' => 'dubbel Ömleidung nohm Ömnenne automattesch opjelös: [[$1]] → [[$2]]',
+'double-redirect-fixed-maintenance' => 'De dubbelte Ömleidung vun [[$1]] noh [[$2]] wood opjelühß.',
+'double-redirect-fixer' => '(Opjaveleß)',
'brokenredirects' => 'Ömleitunge, die en et Leere jonn',
'brokenredirectstext' => 'Die Ömleitunge hee jonn op Sigge, die mer jaa nit han:',
@@ -2059,6 +2118,7 @@ kein Saachjrupp dren ze finge.',
'pager-newer-n' => '{{PLURAL:$1|aller neuerste|neuer $1}}',
'pager-older-n' => '{{PLURAL:$1|vörrije|vörrije $1}}',
'suppress' => 'Versteiche',
+'querypage-disabled' => 'Heh di Extrasigg es ußjeschalldt, domet dä Server jet winnijer ze brassele hät.',
# Book sources
'booksources' => 'Böcher',
@@ -2077,8 +2137,8 @@ wadd_Er am Sööke sidt.',
'booksources-invalid-isbn' => 'De ISBNummer schingk verkeeht ze sin. Loohr ens donoh, woh se häe kütt.',
# Special:Log
-'specialloguserlabel' => 'Metmaacher:',
-'speciallogtitlelabel' => 'Siggename:',
+'specialloguserlabel' => 'Dä Metmaacher, dä et jedonn hät:',
+'speciallogtitlelabel' => 'Betroffe wohr: (dä Tittel vun ener Sigg udder enem Metmaacher singe Name)',
'log' => 'Logböcher ehr Opzeichnunge (all)',
'all-logs-page' => 'All de öffentlich Logböcher',
'alllogstext' => "Dat hee es en jesamte Liss us all dä Logböcher {{GRAMMAR:en|{{SITENAME}}}}.
@@ -2121,15 +2181,15 @@ eins vun all däm op eimol.',
'sp-deletedcontributions-contribs' => 'Beijdrääsch',
# Special:LinkSearch
-'linksearch' => 'Lėngkß noh ußerhallef sööke',
+'linksearch' => 'Lėngkß noh ußerhallef söhke',
'linksearch-pat' => 'Sök noh:',
'linksearch-ns' => 'Appachtemang:',
'linksearch-ok' => 'Söhke',
'linksearch-text' => 'Di {{int:nstab-special}} heh mäd_et müjjelesch noh Sigge ze söke, woh beshtemmpte Links op Websigge dren enthallde sin.
-Beim Söke künnd_Er Shternshe aanjevve för e Shtöckshe fun ennem Name, wo mer nit jenou weiß, wi et heiß udder wat me nit kenne deit, zem Beishpöll esu: <tt>http://*.example.com</tt>
+Beim Söke künnd_Er Schtäänsche aanjevve för e Schtöcksche fun ennem Name, wo mer nit jenou weiß, wi et heiß udder wat me nit kenne deit, zem Beishpöll esu: <tt>http://*.example.com</tt> un ene bövverschte Name för en Domain moß aanjejovve sin, zem Beishpöll esu: <tt>http://*.org</tt>
-De Brauserprotokolle, di beim Söke aanjejovve wäde künne, sen: <tt>$1</tt>',
+De Brauserprotokolle, di beim Söke aanjejovve wäde künne, sen: <tt>$1</tt>es',
'linksearch-line' => '„$2“ hät ene Link op $1',
'linksearch-error' => 'Shternshe kam_mer nor aam Aanfang fum Domain-Name bruche.',
@@ -2197,6 +2257,10 @@ Alles klor?',
'noemailtext' => 'Dä Metmaacher hät kein jöltijje Adreß för sing <i lang="en">e-mail</i> enjedrage.<!-- oder hä well kein E-Mail krije. -->',
'nowikiemailtitle' => 'Kein <i lang="en">e-mail</i> zojelohße',
'nowikiemailtext' => 'Hee dä Metmaacher well kein <i lang="en">e-mail</i> vun ander Metmaachere jescheck krijje.',
+'emailnotarget' => 'Et jitt keine Metmaacher met däm Naame, dämm mer en <i lang="en">e-mail</i> schecke künnt.',
+'emailtarget' => 'Jiff dä Metmaacher aan, dä di <i lang="en">e-mail</i> kritt',
+'emailusername' => 'Metmaacher Name:',
+'emailusernamesubmit' => 'Loß Jonn!',
'email-legend' => 'Scheck en<i lang="en"> e-mail</i> aan ene andere Metmaacher fum Wiki',
'emailfrom' => 'Vun:',
'emailto' => 'Aan:',
@@ -2221,14 +2285,14 @@ Alles klor?',
'watchlistanontext' => 'Do muss $1, domet de en Ding Oppassliss erenluure kanns, oder jet dran ändere.',
'watchnologin' => 'Nit enjelogg',
'watchnologintext' => 'Öm Ding Oppassliss ze ändere, mööts de ald [[Special:UserLogin|enjelogg]] sin.',
-'addedwatch' => 'En de Oppassliss jedon',
+'addwatch' => 'En de Oppassliss don',
'addedwatchtext' => "Die Sigg „[[:$1]]“ es jetz en Ding [[Special:Watchlist|Oppassliss]].
Av jetz, wann die Sigg verändert weed, oder ehr Klaafsigg, dann weed dat en de
Oppassliss jezeich. Dä Endrach för die Sigg kütt en '''Fettschreff''' en de
„[[Special:RecentChanges|Neuste Änderunge]]“, domet De dä do och flöck fings.
Wann de dä widder loss wääde wells us Dinger Oppassliss,
dann klick op „Nimieh drop oppasse“ wann De die Sigg om Schirm häs.",
-'removedwatch' => 'Us de Oppassliss jenomme',
+'removewatch' => 'Us de Oppassliss nämme',
'removedwatchtext' => 'Die Sigg „[[:$1]]“ es jetz us de [[Special:Watchlist|Oppassliss]] erusjenomme.',
'watch' => 'Drop Oppasse',
'watchthispage' => 'Op die Sigg oppasse',
@@ -2249,8 +2313,9 @@ dann klick op „Nimieh drop oppasse“ wann De die Sigg om Schirm häs.",
'watchlist-options' => 'Eijeschaffte fun de Oppassless',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Drop oppasse…',
-'unwatching' => 'Nimmieh drop oppasse',
+'watching' => 'Drop oppasse…',
+'unwatching' => 'Nimmieh drop oppasse',
+'watcherrortext' => 'Ene Fähler es opjetrodde beim Ändere vun de Enshtällonge för Ding Oppaßleß för „$1“',
'enotif_mailer' => '{{ucfirst:{{GRAMMAR:Genitive singe male|{{SITENAME}}}}}} Nohreechte-Versand',
'enotif_reset' => 'Setz all Änderunge op „Aanjeluurt“ un Erledich.',
@@ -2281,14 +2346,17 @@ Do kanns ävver och all die Merker för e-mail för die Sigge en Dinger Oppassli
Ene schöne Jroß {{GRAMMAR:vun|{{SITENAME}}}}.
--
+Öm de Enshtällonge för Nohreeschet aan Desch ze ändere, jangk op:
+{{canonicalurl:{{#special:Preferences}}}}
+
Do kanns hee Ding Oppassliss ändere:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Öm di Sigg vun Dinger Oppassliss ze schmieße:
$UNWATCHURL
Do kanns hee noh Hölp luure:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Schmieß die Sigg jetz fott',
@@ -2305,7 +2373,7 @@ Do kanns hee noh Hölp luure:
<strong>Dun et nor, wann dat met de [[{{MediaWiki:Policy-url}}|Rejelle]] wirklich zosamme jeiht!</strong>',
'actioncomplete' => 'Erledich',
'actionfailed' => 'Dat es donevve jejange',
-'deletedtext' => 'De Sigg „<nowiki>$1</nowiki>“ es jetz fottjeschmesse woode. Luur Der „$2“ aan, do häs De en Liss met de Neuste fottjeschmesse Sigge.',
+'deletedtext' => 'De Sigg „$1“ es jetz fottjeschmesse woode. Luur Der „$2“ aan, do häs De en Liss met de Neuste fottjeschmesse Sigge.',
'deletedarticle' => 'hät fottjeschmesse: „[[$1]]“',
'suppressedarticle' => 'han „[[$1]]“ verstoche',
'dellogpage' => 'Logboch met de fottjeschmesse Sigge',
@@ -2358,7 +2426,7 @@ En Leß met de [[Special:ProtectedPages|em Momang jeschözde Sigge]] ham_mer och
'protect_expiry_invalid' => 'Die Duur för ze Schötz es Kappes, di künne mer nit verstonn.',
'protect_expiry_old' => 'Do häs De Desch verdonn. Die Zick för ze Schötze es doch ald eröm!',
'protect-unchain-permissions' => 'Donn de andere Ußwahle freij schallde',
-'protect-text' => "Heh kanns De dä Schotz jäje Veränderunge för de Sigg „'''<nowiki>$1</nowiki>'''“ aanluure un ändere.",
+'protect-text' => "Heh kanns De dä Schotz jäje Veränderunge för de Sigg „'''$1'''“ aanluure un ändere.",
'protect-locked-blocked' => "Do kanns nit der Siggeschotz ändere, esu lang wi Dinge Zojang zom Wiki jesperrt es. Hee es der aktuelle Stand fum Siggeschotz för di Sigg '''„$1“:'''",
'protect-locked-dblock' => "De Datebank es jesperrt. Dröm künne mer der Siggeschotz nit ändere.
Hee es der aktuelle Stand fum Siggeschotz för di Sigg '''„$1“:'''",
@@ -2456,9 +2524,12 @@ $1',
'undelete-show-file-submit' => 'Jo',
# Namespace form on various pages
-'namespace' => 'Appachtemeng:',
-'invert' => 'dun de Uswahl ömdrije',
-'blanknamespace' => '(Atikkele)',
+'namespace' => 'Appachtemeng:',
+'invert' => 'dun de Uswahl ömdrije',
+'tooltip-invert' => 'Maach e Höhksche, öm Änderonge aan Sigge en däm ußjewählte Appachtemang — un däm, wat doh zohjehööt, wann doh och e Höhksche es — nit aanzezeije, ävver doför uß all de andre Appachtemangs.',
+'namespace_association' => 'mem zohjehüüreje Appachtemang',
+'tooltip-namespace_association' => 'Maach e Höhksche, öm dat Appachtemang, wat zom ußjewählte Appachtemang doh zohjehööt — entweeder de Klaafsigge udder de nomaale Sigge — zohsäzlesch ußzewähle.',
+'blanknamespace' => '(Atikkele)',
# Contributions
'contributions' => 'Däm Metmaacher sing Beidräch',
@@ -2508,13 +2579,15 @@ De neuste Sperr ier Enndraach em Logbooch es:',
'whatlinkshere-filters' => 'Ußsööke',
# Block/unblock
+'autoblockid' => 'Automattesche Sperr Nommer $1',
+'block' => 'Metmaacher udder en <i lang="en">IP</i>-Addräß sperre',
+'unblock' => 'Don en Sperr för ene Metmaacher udder en <i lang="en">IP</i>-Addräß ophävve',
'blockip' => 'Metmaacher sperre',
'blockip-title' => 'Metmaacher Schpärre',
'blockip-legend' => 'Metmaacher ov IP-Adresse Sperre',
'blockiptext' => 'Hee kanns De bestemmte Metmaacher oder IP-Adresse sperre, su dat se hee em Wiki nit mieh schrieve und Sigge ändere künne.
Dat sollt nor jedon wääde om sujenannte Vandaale ze bremse. Un mer müsse uns dobei natörlich aan uns [[{{MediaWiki:Policy-url}}|Rejelle]] för esu en Fäll halde.
Drag bei „Aanlass“ ene möchlichs jenaue Jrund en, wöröm dat Sperre passeet. Nenn un Link op de Sigge wo Einer kapott jemaat hät, zem Beispill.',
-'ipaddress' => 'IP-Adräß',
'ipadressorusername' => '<i lang="en">IP</i>-Adress oder Metmaacher Name:',
'ipbexpiry' => 'Duur, för wie lang',
'ipbreason' => 'Aanlass:',
@@ -2530,7 +2603,7 @@ Drag bei „Aanlass“ ene möchlichs jenaue Jrund en, wöröm dat Sperre passee
** esu ene Metmaacher-Name wolle mer nit
* Op en IP-Adräß betrocke Jrönd
** dat es en Proxy-ẞööver övver dänn de Lück zo vill Driß aanjestellt han',
-'ipbanononly' => 'Nor de namelose Metmaacher sperre',
+'ipb-hardblock' => 'Enjelogg Metmaacher dörfe vun heh dä <i lang="en">IP</i>-Addräß kein Sigge ändere',
'ipbcreateaccount' => 'Et Neu-Aanmelde verbeede',
'ipbemailban' => 'Et <i lang="en">e-mail</i>-Verschecke ongerbenge',
'ipbenableautoblock' => 'Dun automatisch de letzte IP-Adress sperre, die dä Metmaacher jehatt hät, un och all die IP-Adresse, vun wo dä versök, jet ze ändere.',
@@ -2541,13 +2614,18 @@ Drag bei „Aanlass“ ene möchlichs jenaue Jrund en, wöröm dat Sperre passee
'ipbotherreason' => 'Ander Jrund oder Zosätzlich:',
'ipbhidename' => 'Don däm Metmaacher singe Name versteiche, en de Leste un däm sing Änderunge.',
'ipbwatchuser' => 'Op däm Metmaacher sing Metmaachersigg un Klaafsigg oppasse',
-'ipballowusertalk' => 'Lohß dä Metmaacher an sing eije Klaafsigg ändere, och su lang, wi sing Sperr dooht',
+'ipb-disableusertalk' => 'Dä Metmaacher darf sing Klaafsigg nit ändere, esulang, wi hä jwesperrt es',
'ipb-change-block' => 'Wigger sperre met dä neue Enstellunge',
+'ipb-confirm' => 'Et Sperre beshtäätejje',
'badipaddress' => 'Wat De do jeschrevve häs, dat es kein öntlije IP-Adress.',
'blockipsuccesssub' => 'De IP-Adress es jetz jesperrt',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] es jetz jesperrt.
Luur op [[Special:IPBlockList|de Liss met jesperrte IP_Adresse]] wann de ne Üvverbleck üvver de Sperre han wells,
un och wann De se ändere wells.',
+'ipb-blockingself' => 'Do bes om Wääsch, Desh sellver ze sperre. Wells De dat?',
+'ipb-confirmhideuser' => 'Do bes om bäßte Wääsch ene Metaacher ze sperre met „Vershteishe“ ußjewählt.
+Domet weed dä Name vun däm Metmaacher uß alle Leßte un Logbööscher eruß jelohße.
+Wells De dat?',
'ipb-edit-dropdown' => 'De Jründ för et Sperre beärrbejde',
'ipb-unblock-addr' => '„$1“ widder zohlohße',
'ipb-unblock' => 'En IP-Addräß ov ene Metmaacher widder zohlohße',
@@ -2557,17 +2635,23 @@ un och wann De se ändere wells.',
'unblockiptext' => 'Heh kanns De vörher jesperrte IP_Adresse oder Metmaacher widder freijevve, un dänne esu dat Rääch för ze Schrieve heh em Wiki widder jevve.',
'ipusubmit' => 'Sperr ophevve!',
'unblocked' => '[[User:$1|$1]] wood widder zojelooße',
+'unblocked-range' => 'Dä Berett $1 es nit mieh jesperrt.',
'unblocked-id' => 'De Sperr met dä Nommer $1 es opjehovve',
+'blocklist' => 'De Leß met jesperrte <i lang="en">IP</i>-Adräße un Metmaacher',
'ipblocklist' => 'Leß met jesperrte <i lang="en">IP</i>-Adresse un Metmaacher',
'ipblocklist-legend' => 'Ene jesperrte Metmaacher fenge',
-'ipblocklist-username' => 'Metmaacher-Name udder IP-Address:',
-'ipblocklist-sh-userblocks' => '$1 de einzel Metmaacher ier Sperre',
-'ipblocklist-sh-tempblocks' => '$1 de Sperre op Zick',
-'ipblocklist-sh-addressblocks' => '$1 de einzel IP-Addresse ier Sperre',
+'blocklist-userblocks' => 'De einzel Metmaacher ier Sperre ußblende',
+'blocklist-tempblocks' => 'De Sperre op Zick ußblende',
+'blocklist-addressblocks' => 'De einzel <i lang="en">IP</i>-Addresse ier Sperre ußblende',
+'blocklist-timestamp' => 'Zick wann jesperrt',
+'blocklist-target' => 'Jesperrt woodt',
+'blocklist-expiry' => 'Jesperrt beß',
+'blocklist-by' => 'Wä hät jesperrt',
+'blocklist-params' => 'Wat jenou jeiht un wat nit jeiht',
+'blocklist-reason' => 'Der Jrond udder Aanlaß',
'ipblocklist-submit' => 'Söhke',
'ipblocklist-localblock' => 'Sperr heh em Wiki',
'ipblocklist-otherblocks' => 'Ander {{PLURAL:$1|Sperr|Sperre|-nix-}}',
-'blocklistline' => '$1, $2 hät dä Metmaacher udder di <i lang="en">IP</i>-Address $3 $4 jesperrt.',
'infiniteblock' => 'för iwich',
'expiringblock' => 'bes aam $1 öm $2 Uhr',
'anononlyblock' => 'nor namelose',
@@ -2588,7 +2672,7 @@ un och wann De se ändere wells.',
'blocklogentry' => 'hät „[[$1]]“ fö de Zick vun $2 jesperrt. $3',
'reblock-logentry' => 'hät di Sperr för dä „[[$1]]“ met dä Duuer fun $2 $3 jeändert',
'blocklogtext' => 'Heh es dat Logboch för et Metmaacher Sperre un Freijevve.
-Automatich jesperrte IP-Adresse sin nit heh, ävver en de [[Special:IPBlockList|{{int:ipblocklist}}]] ze finge.',
+Automatich jesperrte IP-Adresse sin nit heh, ävver en de [[Special:BlockList|{{int:ipblocklist}}]] ze finge.',
'unblocklogentry' => 'Metmaacher „$1“ freijejovve',
'block-log-flags-anononly' => 'nor de namelose Metmaacher sperre',
'block-log-flags-nocreate' => 'neu Metmaacher aanlääje es verbodde',
@@ -2602,9 +2686,9 @@ Automatich jesperrte IP-Adresse sin nit heh, ävver en de [[Special:IPBlockList|
'ipb_expiry_temp' => 'Sperre för Metmaacher met verstoche Name mößße för iewish doore.',
'ipb_hide_invalid' => 'Kann dä Metmaacher nit vershteishe. Müjjelesch, dat dä zoh vill Änderunge jemaat hät.',
'ipb_already_blocked' => '„$1“ es ald jesperrt',
-'ipb-needreblock' => '== Ald jespert ==
-Dä Metmaacher „$1“ es ald jesperrt. Wellß De de Enstellunge för di Spär ändere?',
+'ipb-needreblock' => 'Dä Metmaacher „$1“ es ald jesperrt. Wellß De de Enstellunge för di Spär ändere?',
'ipb-otherblocks-header' => 'Ander {{PLURAL:$1|Sperr|Sperre|-nix-}}',
+'unblock-hideuser' => 'Däm Metmaacher sing Sperr kam_mer nit ophävve, sulang dä Name verstoche es.',
'ipb_cant_unblock' => '<strong>Ene Fähler:</strong> En Sperr met dä Nummer $1 es nit ze finge. Se künnt ald widder freijejovve woode sin.',
'ipb_blocked_as_range' => 'Dat jeit nit. De IP-Adress „$1“ es nit tirek jesperrt. Se es ävver en däm jesperrte Bereich „$2“ dren. Die Sperr kam_mer ophevve. Donoh kam_mer och kleiner Aandeile fun däm Bereich widder neu sperre. Di Adress alleins kam_mer ävver nit freijevve.',
'ip_range_invalid' => 'Dä Bereich vun IP_Adresse es nit en Oodnung.',
@@ -2641,10 +2725,10 @@ un verzäll dänne vun däm ärrje Risiko för de Secherheit fun dänne ehr RäÃ
'unlockdbsuccesstext' => 'De Daatebank es jetz freijejovve.',
'lockfilenotwritable' => 'De Datei, wo de Daatebank met jesperrt wääde wööd, künne mer nit aanläje, oder nit dren schrieve. Esu ene Dress! Dat mööt dä Websörver ävver künne! Verzäll dat enem Verantwortliche för de Installation vun däm ẞööver oder repareer et selvs, wann De et kanns.',
'databasenotlocked' => '<strong>Opjepass:</strong> De Daatebank es <strong>nit</strong> jesperrt.',
+'lockedbyandtime' => '(aam $2 öm $3 Uhr {{GENDER:$1|vum|vum|vum Metmaacher|vun dä|vum}} $1)',
# Move page
'move-page' => 'De Sigg „$1“ ömnenne',
-'move-page-backlink' => 'â†&nbsp;$1',
'move-page-legend' => 'Sigg Ömnenne',
'movepagetext' => "Heh kanns De en Sigg ömnenne.
Domet kritt die Sigg ene neue Name, un all vörherije Versione vun dä Sigg och.
@@ -2775,7 +2859,7 @@ zo jroße Lass för dä ẞööver.',
'allmessagesdefault' => 'Dä standaadmäßije Tex',
'allmessagescurrent' => 'Esu es dä Tex jetz',
'allmessagestext' => 'Heh kütt en Liss met Texte, Texstöck, un Nohreechte em Appachtemeng „MediaWiki“ — Do draan Ändere löht et Wiki anders ußsin, dat darf dröm nit Jede maache.
-Wenn De jenerell aan [http://www.mediawiki.org/wiki/Localisation MediaWiki singe Översezung] jet anders han wells, do jangk noh [http://translatewiki.net translatewiki.net].',
+Wenn De jenerell aan [//www.mediawiki.org/wiki/Localisation MediaWiki singe Översezung] jet anders han wells, do jangk noh [//translatewiki.net translatewiki.net].',
'allmessagesnotsupportedDB' => '<strong>Dat wor nix!</strong> Mer künne „{{#special:allmessages}}“ nit zeije, <code>$wgUseDatabaseMessages</code> es usjeschalt!',
'allmessages-filter-legend' => 'Ußsöhke — wat för en Täxte o Nohreeshte aazeije?',
'allmessages-filter' => 'Zohshtand:',
@@ -2916,35 +3000,42 @@ Esu kam_mer noch en Aanmerkung en „{{int:summary}}“ maache.',
'tooltip-summary' => 'Jif en koote Zesammefassung en',
# Stylesheets
-'common.css' => '/* CSS heh aan dä Stell hät Uswirkunge op all Ovverflääsche */',
-'standard.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Klassesch“ */',
-'nostalgia.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Nostaljesch“ */',
-'cologneblue.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Kölsch Blau“ */',
-'monobook.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Monobooch“ */',
-'myskin.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Ming Skin“ */',
-'chick.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Höhnsche“ */',
-'simple.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Eijfach“ */',
-'modern.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Modern“ */',
-'vector.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Vector“ */',
-'print.css' => '/* CSS heh aan dä Stell wirrek nur op et Sigge Drökke */',
-'handheld.css' => '/* dat CSS hee wirrek sesch uß op su jeannte Handheld-Apparaate, opjebout op de Ovverflääsch uß $wgHandheldStyle */',
+'common.css' => '/* CSS heh aan dä Stell hät Uswirkunge op all Ovverflääsche */',
+'standard.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Klassesch“ */',
+'nostalgia.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Nostaljesch“ */',
+'cologneblue.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Kölsch Blau“ */',
+'monobook.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Monobooch“ */',
+'myskin.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Ming Skin“ */',
+'chick.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Höhnsche“ */',
+'simple.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Eijfach“ */',
+'modern.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Modern“ */',
+'vector.css' => '/* CSS heh aan dä Stell wirrek nur op de Ovverflääsch „Vector“ */',
+'print.css' => '/* CSS heh aan dä Stell wirrek nur op et Sigge Drökke */',
+'handheld.css' => '/* dat CSS hee wirrek sesch uß op su jeannte Handheld-Apparaate, opjebout op de Ovverflääsch uß $wgHandheldStyle */',
+'noscript.css' => '/* Dat CSS heh aan dä Stell krijje nur de Metmaacher met affjeschaldt JavaSkrepp jescheck */',
+'group-autoconfirmed.css' => '/* Dat CSS heh aan dä Stell krijje nur de automattesch beshtääteshte Metmacher jescheck */',
+'group-bot.css' => '/* Dat CSS heh aan dä Stell krijje nur de Bot-Projrammee jescheck */',
+'group-sysop.css' => '/* Dat CSS heh aan dä Stell krijje nur dem Wiki sing Köbeße jescheck */',
+'group-bureaucrat.css' => '/* Dat CSS heh aan dä Stell krijje nur de Bürrokraate jescheck */',
# Scripts
-'common.js' => '/* Jedes JavaScrip hee kütt für jede Metmaacher in jede Sigg erinn */',
-'standard.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Klassesch" jescheck */',
-'nostalgia.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Nostaljesch" jescheck */',
-'cologneblue.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Kölsch Blou" jescheck */',
-'monobook.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Monnobooch" jescheck */',
-'myskin.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Ming Skin" jescheck */',
-'chick.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Höhnsche" jescheck */',
-'simple.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Eijfach" jescheck */',
-'modern.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Modern" jescheck */',
-'vector.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Vector" jescheck */',
+'common.js' => '/* Jedes JavaScrip hee kütt för jede Metmaacher in jede Sigg erinn */',
+'standard.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Klassesch" jescheck */',
+'nostalgia.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Nostaljesch" jescheck */',
+'cologneblue.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Kölsch Blou" jescheck */',
+'monobook.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Monnobooch" jescheck */',
+'myskin.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Ming Skin" jescheck */',
+'chick.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Höhnsche" jescheck */',
+'simple.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Eijfach" jescheck */',
+'modern.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Modern" jescheck */',
+'vector.js' => '/* De JavaSkrippte fun hee krijje alle Sigge met de Ovverflääsch "Vector" jescheck */',
+'group-autoconfirmed.js' => '/* De JavaSkreppte fun hee krijje bloß de autemattesch beshtääteschte Metmaacher jescheck */',
+'group-bot.js' => '/* De JavaSkreppte fun hee krijje bloß de Bots jescheck */',
+'group-sysop.js' => '/* De JavaSkreppte fun hee krijje bloß de Wiki_Köbeße jescheck */',
+'group-bureaucrat.js' => '/* De JavaSkreppte fun hee krijje bloß de Bürrokraate jescheck */',
# Metadata
-'nodublincore' => 'De RDF_Meta_Daate vun de „Dublin Core“ Aat sin avjeschalt.',
-'nocreativecommons' => 'De RDF_Meta_Daate vun de „Creative Commons“ Aat sin avjeschalt.',
-'notacceptable' => '<strong>Blöd:</strong> Dä Wiki_Sörver kann de Daate nit en einem Format erüvverjevve, wat Dinge Client oder Brauser verstonn künnt.',
+'notacceptable' => '<strong>Blöd:</strong> Dä Wiki_Sörver kann de Daate nit en einem Format erüvverjevve, wat Dinge Client oder Brauser verstonn künnt.',
# Attribution
'anonymous' => 'Namelose {{PLURAL:$1|Metmaacher|Metmaacher|Metmaacher}} vun {{GRAMMAR:Dat|{{SITENAME}}}}',
@@ -2967,12 +3058,17 @@ Esu kam_mer noch en Aanmerkung en „{{int:summary}}“ maache.',
'spam_blanking' => 'All die Versione hatte Links op „$1“, die sin jetz erus jemaht.',
# Info page
-'infosubtitle' => 'Ãœvver de Sigg',
-'numedits' => 'Aanzahl Änderunge aan däm Atikkel: <strong>$1</strong>',
-'numtalkedits' => 'Aanzahl Änderunge aan de Klaafsigg: <strong>$1</strong>',
-'numwatchers' => 'Aanzahl Oppasser: <strong>$1</strong>',
-'numauthors' => 'Aanzahl Metmaacher, die aan däm Atikkel met jeschrevve han: <strong>$1</strong>',
-'numtalkauthors' => 'Aanzahl Metmaacher beim Klaaf: <strong>$1</strong>',
+'pageinfo-title' => 'Övver di Sigg: „$1“',
+'pageinfo-header-edits' => 'De Änderonge',
+'pageinfo-header-watchlist' => 'De Oppassleß',
+'pageinfo-header-views' => 'De Affroofe',
+'pageinfo-subjectpage' => 'För de Sigg selver',
+'pageinfo-talkpage' => 'För de Klaafsigg',
+'pageinfo-watchers' => 'De Aanzahl Oppaßer',
+'pageinfo-edits' => 'De Aanzahl Änderonge',
+'pageinfo-authors' => 'De Aanzahl ongerscheidlije Schriever',
+'pageinfo-views' => 'De Aanzahl Affroofe',
+'pageinfo-viewsperedit' => 'De Aanzahl Affroofe pro Änderong',
# Skin names
'skinname-standard' => 'Klassesch',
@@ -2985,27 +3081,6 @@ Esu kam_mer noch en Aanmerkung en „{{int:summary}}“ maache.',
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vektor',
-# Math options
-'mw_math_png' => 'Immer nor PNG aanzeije',
-'mw_math_simple' => 'En einfache Fäll maach HTML, söns PNG',
-'mw_math_html' => 'Maach HTML wann müjjelich, un söns PNG',
-'mw_math_source' => 'Lohß et als TeX (jod för de Tex-Brausere)',
-'mw_math_modern' => 'De bess Enstellung för de Brauser vun hück',
-'mw_math_mathml' => 'Nemm „MathML“ wann müjjelich (em Probierstadium)',
-
-# Math errors
-'math_failure' => 'Fähler vum Parser',
-'math_unknown_error' => 'Fähler, dä mer nit kenne',
-'math_unknown_function' => 'en Funktion, die mer nit kenne',
-'math_lexing_error' => 'Fähler beim Lexing',
-'math_syntax_error' => 'Fähler en de Syntax',
-'math_image_error' => 'Dat Ömwandele noh PNG es donevve jejange. Dun ens noh de richtije Enstallation luure bei <code lang="en">latex</code> un <code lang="en">dvips</code>, udder bei <code lang="en">dvips</code>, un <code lang="en">gs</code>, un <code lang="en">convert</code>.',
-'math_bad_tmpdir' => 'Dat Zwescheverzeichnis för de mathematische Formele lööt sich nit aanläje oder nix eren schrieve. Dat es Dress. Sag et enem Wiki-Köbes oder enem ẞööver-Minsch.',
-'math_bad_output' => 'Dat Verzeichnis för de mathematische Formele lööt sich nit aanläje oder mer kann nix eren schrieve. Dat es Dress. Sag et enem Wiki-Köbes oder enem ẞööver-Minsch.',
-'math_notexvc' => 'Dat Projamm <code>texvc</code> haM_mer nit jefunge.
-Sag et enemWiki-Köbes, enem ẞööver-Minsch, oder luur ens en dä
-<code>math/README</code>.',
-
# Patrolling
'markaspatrolleddiff' => 'Nohjeluurt. Dun dat fasshallde.',
'markaspatrolledtext' => 'De Änderung es nohjeluert, dun dat fasshallde',
@@ -3041,21 +3116,24 @@ $1',
'nextdiff' => 'De Änderung donoh zeije →',
# Media information
-'mediawarning' => '<strong>Opjepass</strong>: En dä Datei künnt en <b>jefährlich Projrammstöck</b> dren stecke. Wa\'mer et laufe looße dät, do künnt dä ẞööver, udder Dinge Rääschner, met för de <i lang="en">Cracker</i> opjemaht wääde.',
-'imagemaxsize' => "Belder nit jrößer maache wie:<br /> ''(op dä Sigge, wo se beschrevve wääde)''",
-'thumbsize' => 'Esu breid solle de klein Beldche (Thumbnails/Breefmarke) sin:',
-'widthheightpage' => '{{PLURAL:$1|Ei Pixel|$1 Pixelle}} breed × {{PLURAL:$2|Ei Pixel|$2 Pixelle}} huh, {{PLURAL:$3|eij Sigg|$3 Sigge|keij Sigge}}',
-'file-info' => 'Dateiömfang: $1, MIME-Tüp: <code>$2</code>',
-'file-info-size' => '{{PLURAL:$1|Ei Pixel|$1 Pixelle}} breed × {{PLURAL:$2|Ei Pixel|$2 Pixelle}} huh, de Datei hät $3, dä MIME-Typ es: <code>$4</code>',
-'file-nohires' => '<small>Mer han kein hüütere Oplösung vun däm Beld.</small>',
-'svg-long-desc' => 'SVG-Datei, de Basis es {{PLURAL:$1|ei Pixel|$1 Pixelle}} breed × {{PLURAL:$2|ei Pixel|$2 Pixelle}} huh, dä Dateiömfang es $3',
-'show-big-image' => 'Jröößer Oplöösung',
-'show-big-image-thumb' => '<small>Di Vör-Aansich es $1 × $2 Pixelle jroß</small>',
-'file-info-gif-looped' => 'läuf emmer widder vun vürre',
-'file-info-gif-frames' => '{{PLURAL:$1|ei einzel Beld|$1 einzel Belder|kei einzel Beld}}',
-'file-info-png-looped' => 'läuf emmer widder vun vürre',
-'file-info-png-repeat' => 'weed {{PLURAL:$1|eijmohl|$1 Mohl|keimohl}} affjespellt',
-'file-info-png-frames' => '{{PLURAL:$1|ei einzel Beld|$1 einzel Belder|kei einzel Beld}}',
+'mediawarning' => '<strong>Opjepass</strong>: En dä Datei künnt en <b>jefährlich Projrammstöck</b> dren stecke. Wa\'mer et laufe looße dät, do künnt dä ẞööver, udder Dinge Rääschner, met för de <i lang="en">Cracker</i> opjemaht wääde.',
+'imagemaxsize' => "Belder nit jrößer maache wie:<br /> ''(op dä Sigge, wo se beschrevve wääde)''",
+'thumbsize' => 'Esu breid solle de klein Beldche (Thumbnails/Breefmarke) sin:',
+'widthheightpage' => '{{PLURAL:$1|Ei Pixel|$1 Pixelle}} breed × {{PLURAL:$2|Ei Pixel|$2 Pixelle}} huh, {{PLURAL:$3|eij Sigg|$3 Sigge|keij Sigge}}',
+'file-info' => 'Dateiömfang: $1, MIME-Tüp: <code>$2</code>',
+'file-info-size' => '{{PLURAL:$1|Ei Pixel|$1 Pixelle}} breed × {{PLURAL:$2|Ei Pixel|$2 Pixelle}} huh, de Datei hät $3, dä MIME-Typ es: <code>$4</code>',
+'file-info-size-pages' => '{{PLURAL:$1|Ei Pixel|$1 Pixelle}} breed × {{PLURAL:$2|Ei Pixel|$2 Pixelle}} huh, Ömfang:&nbsp;$3, <i lang="en">MIME</i> Zoot: $4, met {{PLURAL:$5|ein Sigg|$5 Sigge|kein Sigge}}',
+'file-nohires' => '<small>Mer han kein hüütere Oplösung vun däm Beld.</small>',
+'svg-long-desc' => 'SVG-Datei, de Basis es {{PLURAL:$1|ei Pixel|$1 Pixelle}} breed × {{PLURAL:$2|ei Pixel|$2 Pixelle}} huh, dä Dateiömfang es $3',
+'show-big-image' => 'Jröößer Oplöösung',
+'show-big-image-preview' => '<small>Heh di Vör_Aanseesch es $1 jruuß.</small>',
+'show-big-image-other' => '<small>Ander Oplühsunge: $1.</small>',
+'show-big-image-size' => '{{PLURAL:$1|Ei Pixel|$1 Pixelle}} breed × {{PLURAL:$2|Ei Pixel|$2 Pixelle}} huh',
+'file-info-gif-looped' => 'läuf emmer widder vun vürre',
+'file-info-gif-frames' => '{{PLURAL:$1|ei einzel Beld|$1 einzel Belder|kei einzel Beld}}',
+'file-info-png-looped' => 'läuf emmer widder vun vürre',
+'file-info-png-repeat' => 'weed {{PLURAL:$1|eijmohl|$1 Mohl|keimohl}} affjespellt',
+'file-info-png-frames' => '{{PLURAL:$1|ei einzel Beld|$1 einzel Belder|kei einzel Beld}}',
# Special:NewFiles
'newimages' => 'Neu Dateie als Jaleri',
@@ -3092,7 +3170,13 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Breejd',
@@ -3107,13 +3191,11 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
'exif-ycbcrpositioning' => 'Y un C Posizjioneerung',
'exif-xresolution' => 'Oplösung fun Lenks noh Räähß',
'exif-yresolution' => 'Oplösung fun Bovve noh Onge',
-'exif-resolutionunit' => 'De Moßeinheit för de Oplösung en X- un Y-Reschtong',
'exif-stripoffsets' => 'Der Aanfang fun de Date fun däm Beld en dä Dattei',
'exif-rowsperstrip' => 'De Aanzahl Reije en jedem Striefe',
'exif-stripbytecounts' => 'De Aanzahl Bytes en jedem kompremierte Striefe',
'exif-jpeginterchangeformat' => 'Bytes Affshtand zom JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytes aan JPEG-Date',
-'exif-transferfunction' => 'Övverdrarongsfungxjohn',
'exif-whitepoint' => 'Fun Hand met Messung',
'exif-primarychromaticities' => 'De drei Houpfärve ier Färf-Intensität',
'exif-ycbcrcoefficients' => 'YCbCr-Geweeschte',
@@ -3132,7 +3214,6 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
'exif-compressedbitsperpixel' => 'Aat fun de Kompreßjohn fun däm Beld',
'exif-pixelydimension' => 'De jöltije Beld-Breede en Pixelle',
'exif-pixelxdimension' => 'De jöltije Beld-Hühde en Pixelle',
-'exif-makernote' => 'Aanmerkong fum Hersteller',
'exif-usercomment' => 'Aanmerkong fum Aanwender',
'exif-relatedsoundfile' => 'De Tondatei, di do bei jehööt',
'exif-datetimeoriginal' => 'Zickpunk fun de Opzeischnong fun de Date',
@@ -3146,7 +3227,6 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
'exif-exposureprogram' => 'Beleeshtungsprojramm',
'exif-spectralsensitivity' => 'Emfendleschkeit för et Färvespäktrom',
'exif-isospeedratings' => 'Dem Fillem odder Sensor sing Emfindlischkeit (als ISO Wäät)',
-'exif-oecf' => 'Dä Leesch-Elletronesche Ömrechnungsfaktor',
'exif-shutterspeedvalue' => 'De Jeschwendeschkeit fum Verschloß bem Beleeschte en APEX Einheite',
'exif-aperturevalue' => 'De Blend iere Wäät en APEX Einheite',
'exif-brightnessvalue' => 'De Hellishkeit en APEX Einheite',
@@ -3157,9 +3237,9 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
'exif-lightsource' => 'Leechquell',
'exif-flash' => 'Bletz',
'exif-focallength' => 'De Brennwigde fun de Lenß',
+'exif-focallength-format' => '$1&nbsp;mm',
'exif-subjectarea' => 'Em Motiv singe Bereich',
'exif-flashenergy' => 'Dem Bletz sing Ennäjii',
-'exif-spatialfrequencyresponse' => 'De Kamera ier Winkel-Oplösung fun de Oots-Frequenz',
'exif-focalplanexresolution' => 'De Kammera ierem Sensor sing räächs-links-Oplösung',
'exif-focalplaneyresolution' => 'De Kammera ierem Sensor sing bovve-unge-Oplösung',
'exif-focalplaneresolutionunit' => 'De Oplösung fum Sensor ier Moß-Einheit',
@@ -3168,7 +3248,6 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
'exif-sensingmethod' => 'De Metood, woh der Kammera ier Sensor met messe deit',
'exif-filesource' => 'Dä Datei ier Quell',
'exif-scenetype' => 'Dä Tüp för de Darstellung udder der Szenopbou',
-'exif-cfapattern' => 'CFA-Muster',
'exif-customrendered' => 'Däm Maacher sing eije Aat, et Beld ze beärrbeide',
'exif-exposuremode' => 'Beleeschtungs-Aat',
'exif-whitebalance' => 'Wießaffjleich',
@@ -3213,11 +3292,86 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
'exif-gpsareainformation' => 'Dä Name fum GPS-Jebeet',
'exif-gpsdatestamp' => 'GPS-Dattum',
'exif-gpsdifferential' => 'De Differenzjahl-Bereschtijong fum GPS',
+'exif-jpegfilecomment' => 'Aanmärkong uss ene <i lang="en">JPEG</i>-Dattei',
+'exif-keywords' => 'Schlößelwööter',
+'exif-worldregioncreated' => 'De Rejoon op de Ääd, woh dat Fotto jeknips wood',
+'exif-countrycreated' => 'Et Land, woh dat Fotto jeknips wood',
+'exif-countrycodecreated' => 'Et Köözel för dat Land, woh dat Fotto jeknips wood',
+'exif-provinceorstatecreated' => 'De Provins, et Bundesland, der Bundsshtaat udder esu, woh dat Fotto jeknips wood',
+'exif-citycreated' => 'De Shtadt, woh dat Fotto jeknips wood',
+'exif-sublocationcreated' => 'Et Veedel, udder de Shtrooß, udder esu, en dä Shtadt, woh dat Fotto jeknips wood',
+'exif-worldregiondest' => 'De jezeishte Rejoon op de Ääd',
+'exif-countrydest' => 'Et jezeishte Land',
+'exif-countrycodedest' => 'Et Köözel för et jezeishte Land',
+'exif-provinceorstatedest' => 'De jezeishte Provins, et jezeishte Bundesland, der jezeishte Bundesstaat, un esu wigger',
+'exif-citydest' => 'De jezeishte Shtadt',
+'exif-sublocationdest' => 'Et jezeishte Veedel, udder de jezeishte Shtrooß, udder esu',
'exif-objectname' => 'Der Tittel en koot',
+'exif-specialinstructions' => 'Extra Aanweisonge',
+'exif-headline' => 'Övverschreff',
+'exif-credit' => 'Wigger jejovve vum',
+'exif-source' => 'Hääkunf, Besezer',
+'exif-editstatus' => 'Enodenong vum Fotto en de Redakzjuhn',
+'exif-urgency' => 'De Ieleschkeit',
+'exif-fixtureidentifier' => 'Kolumne',
+'exif-locationdest' => 'Dä volle Name vum jezeishte Oot udder Plaz',
+'exif-locationdestcode' => 'Dä Kopod vum jezeishte Oot udder Plaz',
+'exif-objectcycle' => 'De Daachszick, för wann dat Denge zom Verdeile jedaach es',
+'exif-contact' => 'Kuntak',
+'exif-writer' => 'Schriiver',
+'exif-languagecode' => 'Shprooch',
+'exif-iimversion' => 'Dem <i lang="en">IIM</i> sing Version',
+'exif-iimcategory' => 'Saachjrupp udder Zoot',
+'exif-iimsupplementalcategory' => 'Extra Saachjroppe udder Zoote',
+'exif-datetimeexpires' => 'Nit mieh verwende noh',
+'exif-datetimereleased' => 'Öffentlesch jemaat aam',
+'exif-originaltransmissionref' => 'Ojinaal Kood vun de Övvermeddelong',
+'exif-identifier' => 'Kännong',
+'exif-lens' => 'De jebruchte Lens',
+'exif-serialnumber' => 'Däm Knipskaste sing Seerije-Nommer',
+'exif-cameraownername' => 'Däm Knipskaste singe Besetzer',
+'exif-label' => 'Bezeishnong, Ätikätt, Singnatuur',
+'exif-datetimemetadata' => 'Et Dattum vun de läzde Änderong vun de Metta_Daate',
+'exif-nickname' => 'Jeläufijje Name för dat Beld',
+'exif-rating' => 'Enschäzong (uß 5)',
+'exif-rightscertificate' => 'Zächtifikaat för de dijitaale Rääschdeverwalldong',
+'exif-copyrighted' => 'Zohshtand vum Urhävver singe Rääschde',
+'exif-copyrightowner' => 'Besezer vum Urhävver singe Rääschde',
+'exif-usageterms' => 'Räjelle för et Benöze',
+'exif-webstatement' => 'Aanjaabe em Internet övver em Urhävver sing Rääschde',
+'exif-originaldocumentid' => 'En eijmohleje Kännong för et Ojinaal',
+'exif-licenseurl' => 'En <i lang="en">URL</i> för de Lizänz',
+'exif-morepermissionsurl' => 'Övver zohsäzlejje Lizänze',
+'exif-attributionurl' => 'Wann De dat Wärk sellver bruchs, leng op',
+'exif-preferredattributionname' => 'Wann De dat Wärk bruchs, donn en Danksaarung dobei, aan',
+'exif-pngfilecomment' => 'Aanmärkong uss ene <i lang="en">PNG</i>-Dattei',
+'exif-disclaimer' => 'Et Verwahre jääje Haftong',
+'exif-contentwarning' => 'Warnong för em Enhallt',
+'exif-giffilecomment' => 'Aanmärkong uss ene <i lang="en">GIF</i>-Dattei',
+'exif-intellectualgenre' => 'De Zoot vun Enhallt',
+'exif-subjectnewscode' => 'Der Schlößel (Kood) för et Teema',
+'exif-scenecode' => 'Dä <i lang="en">IPTC</i>-Kood för Zoot vun wat mer süht',
+'exif-event' => 'Der jezeishte Aanlaß',
+'exif-organisationinimage' => 'De jezeishte Ojanisazjuhn udder Ferma',
+'exif-personinimage' => 'Der jezeishte Minsch',
+'exif-originalimageheight' => 'De Hühde vum Beld, ih dat es zohjeschnedde wood, en Pixelle',
+'exif-originalimagewidth' => 'De Breede vum Beld, ih dat es zohjeschnedde wood, en Pixelle',
# EXIF attributes
-'exif-compression-1' => 'Oohne Kompressjuhn',
-'exif-compression-6' => '<i lang="en">JPEG</i>',
+'exif-compression-1' => 'Oohne Kompressjuhn',
+'exif-compression-2' => 'Noh de <i lang="en">CCITT</i> ier Jrop 3 kodeet mem eindimänsjonalle aanjepaßte Verfahre noh_m <i lang="en">Huffman</i> singe „Läng vum Rötsch“',
+'exif-compression-3' => 'Noh de <i lang="en">CCITT</i> ier Jrop 3 als Fax kodeet',
+'exif-compression-4' => 'Noh de <i lang="en">CCITT</i> ier Jrop 4 als Fax kodeet',
+'exif-compression-5' => '<i lang="en">LZW</i>',
+'exif-compression-6' => '<i lang="en">JPEG</i> (ahl)',
+'exif-compression-7' => '<i lang="en">JPEG</i>',
+'exif-compression-8' => '<i lang="en">Deflate (Adobe)</i>',
+'exif-compression-32773' => '<i lang="en">PackBits (Macintosh RLE)</i>',
+'exif-compression-32946' => '<i lang="en">Deflate (PKZIP)</i>',
+'exif-compression-34712' => '<i lang="en">JPEG</i>2000',
+
+'exif-copyrighted-true' => 'Häd_en Urhävverrääsch',
+'exif-copyrighted-false' => 'Es en de Allmende (jemeinfrei, <i lang="en">public domain</i>)',
'exif-photometricinterpretation-6' => '<i lang="en">YCbCr</i>',
@@ -3238,7 +3392,8 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
'exif-xyresolution-i' => '{{PLURAL:$1|eine Punk|$1 Punkte|keine Punk}} pro Zoll',
'exif-xyresolution-c' => '{{PLURAL:$1|eine Punk|$1 Punkte|keine Punk}} pro Zenntimeeter',
-'exif-colorspace-1' => '<i lang="en">sRGB</i>',
+'exif-colorspace-1' => '<i lang="en">sRGB</i>',
+'exif-colorspace-65535' => 'De Färve sin nit kallibreert',
'exif-componentsconfiguration-0' => 'Jidd_et nit',
@@ -3354,6 +3509,10 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
'exif-gpslongitude-e' => 'Läng ößlesch noh_m GPS',
'exif-gpslongitude-w' => 'Läng weßlesch noh_m GPS',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '{{PLURAL:$1|Eine|$1|Keine}} Meter övver em Meer',
+'exif-gpsaltitude-below-sealevel' => '{{PLURAL:$1|Eine|$1|Keine}} Meter onger em Meer',
+
'exif-gpsstatus-a' => 'De Messung fum GPS es aam Loufe',
'exif-gpsstatus-v' => 'Engeropperabilität fun Messunge noh_m GPS',
@@ -3365,21 +3524,73 @@ Donoh kumme, en däsellve Reih, Links op Sigge wo die Datei trotz dämm jenehm e
'exif-gpsspeed-m' => 'Miehle en de Shtondt noh_m GPS',
'exif-gpsspeed-n' => 'Knote noh_m GPS',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Killometer',
+'exif-gpsdestdistance-m' => 'Meile',
+'exif-gpsdestdistance-n' => 'Seemeile',
+
+'exif-gpsdop-excellent' => 'Supper ($1)',
+'exif-gpsdop-good' => 'Jood ($1)',
+'exif-gpsdop-moderate' => 'Et jeiht ($1)',
+'exif-gpsdop-fair' => 'Schlapp ($1)',
+'exif-gpsdop-poor' => 'Schlääsch ($1)',
+
+'exif-objectcycle-a' => 'Bloß es Murjens',
+'exif-objectcycle-p' => 'Bloß es Oovens',
+'exif-objectcycle-b' => 'Es Murjens un es Oovens',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Wohre Rechtung noh_m GPS',
'exif-gpsdirection-m' => 'Mangneetesche Rechtung noh_m GPS',
+'exif-ycbcrpositioning-1' => 'En de Medde',
+'exif-ycbcrpositioning-2' => 'Dropjesaz',
+
+'exif-dc-contributor' => 'Metwerker, Metmaacher',
+'exif-dc-coverage' => 'Zick un Jääjend, woh dat Meedijum dren jehööt',
+'exif-dc-date' => 'Dattum udder Daate',
+'exif-dc-publisher' => 'Verläjer udder Veröffentlescher',
+'exif-dc-relation' => 'Medije, di domet zosamme hange',
+'exif-dc-rights' => 'Rääschde',
+'exif-dc-source' => 'Dat Beld, wo et her kütt',
+'exif-dc-type' => 'Meedije_Zoot',
+
+'exif-rating-rejected' => 'Affjelehnt',
+
+'exif-isospeedratings-overflow' => 'Övver 65535',
+
+'exif-iimcategory-ace' => 'Kunß, Kultuur, Vermaache',
+'exif-iimcategory-clj' => 'Verbräsche, Rääsch',
+'exif-iimcategory-dis' => 'Onjlöck, Onfäll, Kattaßtroofe',
+'exif-iimcategory-fin' => 'Jeschäff, Weetschaffte',
+'exif-iimcategory-edu' => 'Ußbeldong. Liehre',
+'exif-iimcategory-evn' => 'Ömwält, Natuur',
+'exif-iimcategory-hth' => 'Jesondheit',
+'exif-iimcategory-hum' => 'Enträße vun de Minsche',
+'exif-iimcategory-lab' => 'Ärbeid',
+'exif-iimcategory-lif' => 'Freije Zigg',
+'exif-iimcategory-pol' => 'Poletek',
+'exif-iimcategory-rel' => 'Jlaube un Jläuve',
+'exif-iimcategory-sci' => 'Weßeschavv un Täschnek',
+'exif-iimcategory-soi' => 'Meddenander vun de Minsche',
+'exif-iimcategory-spo' => 'Shpocht',
+'exif-iimcategory-war' => 'Kreesch, Zängk, Opshtänd',
+'exif-iimcategory-wea' => 'Wädder',
+
+'exif-urgency-normal' => 'Nommaal ($1)',
+'exif-urgency-low' => 'Klein ($1)',
+'exif-urgency-high' => 'Huh ($1)',
+'exif-urgency-other' => 'Selfs faßjelaat ($1)',
+
# External editor support
'edit-externally' => 'Dun de Datei met enem externe Projramm bei Dr om Rechner bearbeide',
-'edit-externally-help' => '(Luur en de [http://www.mediawiki.org/wiki/Manual:External_editors Installationsaanweisunge] noh mieh Hinwies)',
+'edit-externally-help' => '(Luur en de [//www.mediawiki.org/wiki/Manual:External_editors Installationsaanweisunge] noh mieh Hinwies)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'all',
-'imagelistall' => 'all',
-'watchlistall2' => 'all',
-'namespacesall' => 'all',
-'monthsall' => 'all',
-'limitall' => 'alle',
+'watchlistall2' => 'all',
+'namespacesall' => 'all',
+'monthsall' => 'all',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'E-Mail Adress bestätije',
@@ -3471,13 +3682,14 @@ $1',
'trackbackdeleteok' => 'Trackback es fottjeschmesse.',
# Delete conflict
-'deletedwhileediting' => '<strong>Opjepass:</strong> De Sigg wood fottjeschmesse, nohdäm Do ald aanjefange häs, dran ze Ändere.
+'deletedwhileediting' => '<strong>Opjepass:</strong> De Sigg wood fottjeschmesse, nohdäm Do ald aanjefange häs, dran ze Ändere.
Em <span class="plainlinks">[{{fullurl:Special:Log|type=delete&page=}}{{FULLPAGENAMEE}} Logboch vum Sigge-Fottschmieße]</span> künnt der Jrund shtonn.
Wann De de Sigg avspeichere deis, weed se widder aanjelaat.',
-'confirmrecreate' => 'Dä Metmaacher [[User:$1|$1]] ([[User talk:$1|Klaaf]]) hät die Sigg fottjeschmesse, nohdäm Do do dran et Ändere aanjefange häs. Dä Jrund:
+'confirmrecreate' => 'Dä Metmaacher [[User:$1|$1]] ([[User talk:$1|Klaaf]]) hät die Sigg fottjeschmesse, nohdäm Do do dran et Ändere aanjefange häs. Dä Jrund:
: „<i>$2</i>“
Wells Do jetz met en neu Version die Sigg widder neu aanläje?',
-'recreate' => 'Widder neu aanlääje',
+'confirmrecreate-noreason' => '{{GENDER:$1|Dä|Et|Dä Metmaacher|De|Dat}} [[User:$1|$1]] ([[User talk:$1|Klaaf]]) hät heh di Sigg fottjeschmeße, nohdämm Do aanjefange häs, draan ze ändere. Bes esu jood un donn beshtääteje, dat De di Sigg widder neu aanjelaat han wells.',
+'recreate' => 'Widder neu aanlääje',
'unit-pixel' => 'px',
@@ -3486,6 +3698,12 @@ Wells Do jetz met en neu Version die Sigg widder neu aanläje?',
'confirm-purge-top' => 'Dä Zweschespeicher för die Sigg fottschmieße?',
'confirm-purge-bottom' => 'Dä Zweschespeicher för de Sigg fottzeschmieße sorresch doför, dat af dann de neuste Version vun dä Sigg (de Version vun jetz) aanjezeich weet.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Lohß Jonn!',
+'confirm-watch-top' => 'Sulle mer di Sigg en Ding Oppaßleß opnemme?',
+'confirm-unwatch-button' => 'Lohß Jonn!',
+'confirm-unwatch-top' => 'Sulle mer di Sigg uß Dinger Oppaßleß erußnämme?',
+
# Separators for various lists, etc.
'semicolon-separator' => ';',
'autocomment-prefix' => '-',
@@ -3543,7 +3761,7 @@ Don de nomaale Vör-Ansich nemme.',
'watchlistedit-normal-legend' => 'Titell uß de Oppassliss eruß lohße',
'watchlistedit-normal-explain' => 'Dat sin de Endräch in Dinge Oppassliss.
Om einzel Titelle loss ze wääde, don Hökche en de Kässjer nevve inne maache, un dann deuß De dä Knopp „{{int:watchlistedit-normal-submit}}“.
-De kanns Ding Oppassliss och [[Special:Watchlist/raw|en rüh beärbeide]].',
+De kanns Ding Oppassliss och [[Special:EditWatchlist/raw|en rüh beärbeide]].',
'watchlistedit-normal-submit' => 'Jangk de Titele met Hökche eruß schmieße',
'watchlistedit-normal-done' => '{{PLURAL:$1|Eine Sigge-Tittel es|<strong>$1</strong> Sigge-Tittele sin|Keine Sigge-Tittel es}} us Dinge Opassliss erus jefloore:',
'watchlistedit-raw-title' => 'Rüh Oppassliss beärbeide',
@@ -3553,7 +3771,7 @@ De kanns Ding Oppassliss och [[Special:Watchlist/raw|en rüh beärbeide]].',
Öm neu Titelle dobei ze don, schriev neu Reije dobei. Jede Titel moß en en Reih för sijj_allein shtonn.
Wanns De fädig bes, dann deuß De dä Knopp „{{int:Watchlistedit-raw-submit}}“.
Natörlech kanns De di Liss och — met Dingem Brauser singe ''<span lang=\"en\">Copy&amp;Paste</span>''-Funkßjohn — komplett kopeere odder ußtuusche.
-De könnts Ding Oppassliss ävver och [[Special:Watchlist/edit|övver e Fomulaa met Kässjer un Hökscher beärbeide]].",
+De könnts Ding Oppassliss ävver och [[Special:EditWatchlist|övver e Fomulaa met Kässjer un Hökscher beärbeide]].",
'watchlistedit-raw-titles' => 'Endräch:',
'watchlistedit-raw-submit' => 'Oppassliss neu fasshallde',
'watchlistedit-raw-done' => 'Ding Oppassliss es fassjehallde.',
@@ -3590,33 +3808,34 @@ De könnts Ding Oppassliss ävver och [[Special:Watchlist/edit|övver e Fomulaa
Dä Shtanndat-Zoot-Schlößel „$1“ övverschriif dä älldere Zoot-Schlößel „$2“.",
# Special:Version
-'version' => 'Version vun de Wiki Soffwär zeije',
-'version-extensions' => 'Installeete Erjänzunge un Zohsätz',
-'version-specialpages' => '{{int:nstab-special}}e',
-'version-parserhooks' => 'De Parser-Hooke',
-'version-variables' => 'Variable',
-'version-skins' => 'Ovverflääsche',
-'version-other' => 'Söns',
-'version-mediahandlers' => 'Medije-Handler',
-'version-hooks' => 'Schnettstelle oder Hooke',
-'version-extension-functions' => 'Funktione för Zosätz',
-'version-parser-extensiontags' => 'Erjänzunge zom Parser',
-'version-parser-function-hooks' => 'Parserfunktione',
-'version-skin-extension-functions' => 'Funktione för de Skins ze erjänze',
-'version-hook-name' => 'De Schnettstelle ier Name',
-'version-hook-subscribedby' => 'Opjeroofe vun',
-'version-version' => '(Version $1)',
-'version-license' => 'Lizänz',
-'version-poweredby-credits' => "Dat Wiki heh löp met '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
-'version-poweredby-others' => 'sönß wää',
-'version-license-info' => 'MediaWiki es e frei Projramm. Mer kann et unmolesteet wigger verdeile, un mer kann et verändere, wi mer löstich es, wam_mer sesch dobei aan de <i lang="en">GNU General Public License</i> (jenerälle öffentlesche Lizänz noh GNU) hallde deiht, wi se vun der <i lang="en">Free Software Foundation</i> (Steftung för frei Soffwäer) veröffentlesch woode es. Dobei kam_mer sesch ußsöhke of mer sesch aan de Version 2 dovun hallde deiht, udder öhnz en späädere Fassung.
+'version' => 'Version vun de Wiki Soffwär zeije',
+'version-extensions' => 'Installeete Erjänzunge un Zohsätz',
+'version-specialpages' => '{{int:nstab-special}}e',
+'version-parserhooks' => 'De Parser-Hooke',
+'version-variables' => 'Variable',
+'version-antispam' => 'SPAM verhendere',
+'version-skins' => 'Ovverflääsche',
+'version-api' => '<i lang="en">API</i>',
+'version-other' => 'Söns',
+'version-mediahandlers' => 'Medije-Handler',
+'version-hooks' => 'Schnettstelle oder Hooke',
+'version-extension-functions' => 'Funktione för Zosätz',
+'version-parser-extensiontags' => 'Erjänzunge zom Parser',
+'version-parser-function-hooks' => 'Parserfunktione',
+'version-hook-name' => 'De Schnettstelle ier Name',
+'version-hook-subscribedby' => 'Opjeroofe vun',
+'version-version' => '(Version $1)',
+'version-license' => 'Lizänz',
+'version-poweredby-credits' => "Dat Wiki heh löp met '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
+'version-poweredby-others' => 'sönß wää',
+'version-license-info' => 'MediaWiki es e frei Projramm. Mer kann et unmolesteet wigger verdeile, un mer kann et verändere, wi mer löstich es, wam_mer sesch dobei aan de <i lang="en">GNU General Public License</i> (jenerälle öffentlesche Lizänz noh GNU) hallde deiht, wi se vun der <i lang="en">Free Software Foundation</i> (Steftung för frei Soffwäer) veröffentlesch woode es. Dobei kam_mer sesch ußsöhke of mer sesch aan de Version 2 dovun hallde deiht, udder öhnz en späädere Fassung.
MediaWiki weed verdeilt met dä Hoffnung, dat et för jet jood es, ävver <span style="text-transform:uppercase">der ohne jeede Jarantie</span>, un esujaa ohne ene unjesaate Jedangke, et künnt <span style="text-transform:uppercase">ze verkoufe</span> sin udder <span style="text-transform:uppercase;">för öhndsene bestemmpte Zweck ze jebruche</span>. Loor Der de jenannte Lizänz aan, wann De mieh Einzelheite weße wells.
-Do sullts en [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun dä <i lang="en">GNU General Public License</i>] zosamme met däm Projramm krääje han, un wann nit, schrief aan de: <i lang="en">Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA </i> udder [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html liß se em Internet noh].',
-'version-software' => 'Installeete Soffwäer',
-'version-software-product' => 'Produk',
-'version-software-version' => 'Version',
+Do sullts en [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun dä <i lang="en">GNU General Public License</i>] zosamme met däm Projramm krääje han, un wann nit, schrief aan de: <i lang="en">Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA </i> udder [//www.gnu.org/licenses/old-licenses/gpl-2.0.html liß se em Internet noh].',
+'version-software' => 'Installeete Soffwäer',
+'version-software-product' => 'Produk',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath' => 'Medije-Dateie med ier URL zëije',
@@ -3626,22 +3845,22 @@ Do sullts en [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun dä <i lang="en">GNU Ge
Die Datei weed jlich aanjezeig, odder med däm paßende Projramm op jemaat.",
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Sök noh dubbelte Dateie',
-'fileduplicatesearch-summary' => 'Söök noh dubbelte Dateie övver dänne iere Häsh-Zahl.
-
-Der Name moß ohne der Försatz „{{ns:file}}:“ aanjejovve wääde.',
-'fileduplicatesearch-legend' => 'Sök noh ene dubbelte Datei',
-'fileduplicatesearch-filename' => 'Dateiname:',
-'fileduplicatesearch-submit' => 'Söhke',
-'fileduplicatesearch-info' => '{{PLURAL:$1|Ei Pixel|$1 Pixelle|Nit}} breed × {{PLURAL:$2|Ei Pixel|$2 Pixelle|nix}} huh<br />Dateiömfang: $3<br />MIME-Tüp: <code>$4</code>',
-'fileduplicatesearch-result-1' => 'Mer han kein akoraat dubbelte Dateie för „$1“ jefonge.',
-'fileduplicatesearch-result-n' => "Vun dä Datei „$1“ ham'mer '''{{PLURAL:$2|ein|$2|kein}}''' dubbelte mem selve Enhalt jefonge.",
+'fileduplicatesearch' => 'Sök noh dubbelte Dateie',
+'fileduplicatesearch-summary' => 'Söhhk noh dubbelte Dateie övver dänne iere Häsh-Zahl.',
+'fileduplicatesearch-legend' => 'Sök noh ene dubbelte Datei',
+'fileduplicatesearch-filename' => 'Dateiname:',
+'fileduplicatesearch-submit' => 'Söhke',
+'fileduplicatesearch-info' => '{{PLURAL:$1|Ei Pixel|$1 Pixelle|Nit}} breed × {{PLURAL:$2|Ei Pixel|$2 Pixelle|nix}} huh<br />Dateiömfang: $3<br />MIME-Tüp: <code>$4</code>',
+'fileduplicatesearch-result-1' => 'Mer han kein akoraat dubbelte Dateie för „$1“ jefonge.',
+'fileduplicatesearch-result-n' => "Vun dä Datei „$1“ ham'mer '''{{PLURAL:$2|ein|$2|kein}}''' dubbelte mem selve Enhalt jefonge.",
+'fileduplicatesearch-noresults' => 'Mer han kein Dattei met däm Name „$1“ jefonge.',
# Special:SpecialPages
'specialpages' => '{{int:nstab-special}}e',
-'specialpages-note' => "<h4 class='mw-specialpagesgroup'>Lejänd (Äklierong):</h4><table style='width:100%;' class='mw-specialpages-table'><tr><td valign='top'><ul><li> {{int:nstab-special}}e för jede Metmaacher
-</li><li class='mw-specialpagerestricted'>{{int:nstab-special}}e för Metmaacher met besönder Räächte
-</li></ul></td></tr></table>",
+'specialpages-note' => '----
+* {{int:nstab-special}}e för jede Metmaacher.
+* <span class="mw-specialpagerestricted">{{int:nstab-special}}e för Metmaacher met besönder Räächde.</span>
+* <span class="mw-specialpagecached">Em Zwescheshpeisher jehallde {{int:nstab-special}}e. Di künnte ovverhollt sind.</span>',
'specialpages-group-maintenance' => 'Waadungsleste',
'specialpages-group-other' => 'Ander {{int:nstab-special}}e',
'specialpages-group-login' => 'Aamelde',
diff --git a/languages/messages/MessagesKu_latn.php b/languages/messages/MessagesKu_latn.php
index eb01bb8b..f505a4c4 100644
--- a/languages/messages/MessagesKu_latn.php
+++ b/languages/messages/MessagesKu_latn.php
@@ -37,6 +37,49 @@ $namespaceNames = array(
NS_CATEGORY_TALK => 'Kategorî_nîqaş',
);
+
+$specialPageAliases = array(
+ 'Categories' => array( 'Dara_kategoriyan' ),
+ 'DoubleRedirects' => array( 'Redirect\'ên_ducarî' ),
+ 'Export' => array( 'Eksport' ),
+ 'Listusers' => array( 'Lîsteya_bikarhêneran' ),
+ 'Randompage' => array( 'Rûpela_tesadufî' ),
+ 'Randomredirect' => array( 'Redirecta_tasadufî' ),
+ 'Recentchanges' => array( 'Guherandinên_dawî' ),
+ 'Search' => array( 'Lêbigere' ),
+ 'Statistics' => array( 'Statîstîk' ),
+ 'Uncategorizedcategories' => array( 'Kategoriyên_bê_kategorî' ),
+ 'Uncategorizedpages' => array( 'Rûpelên_bê_kategorî' ),
+ 'Version' => array( 'Versiyon' ),
+ 'Wantedcategories' => array( 'Kategorîyên_tên_xwestin' ),
+ 'Wantedtemplates' => array( 'Şablonên_tên_xwestin' ),
+);
+
+$magicWords = array(
+ 'notoc' => array( '0', '_NAVEROKTUNE_', '__NOTOC__' ),
+ 'nogallery' => array( '0', '_GALERÃŽTUNE_', '__NOGALLERY__' ),
+ 'toc' => array( '0', '_NAVEROK_', '__TOC__' ),
+ 'noheader' => array( '0', '_SERÃŽTUNE_', '__NOHEADER__' ),
+ 'currentday' => array( '1', 'ROJA_NIHA', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'ROJA_NIHA2', 'CURRENTDAY2' ),
+ 'numberofpages' => array( '1', 'HEJMARA_RÛPELAN', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'HEJMARA_GOTARAN', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'HEJMARA_DOSYEYAN', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'HEJMARA_BIKARHÊNERAN', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'HEJMARA_BIKARHÊNERÊN_ÇALAK', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'HEJMARA_GUHERANDINAN', 'NUMBEROFEDITS' ),
+ 'subpagename' => array( '1', 'BINRÛPEL', 'SUBPAGENAME' ),
+ 'img_right' => array( '1', 'rast', 'right' ),
+ 'img_left' => array( '1', 'çep', 'left' ),
+ 'img_link' => array( '1', 'lînk=$', 'link=$1' ),
+ 'grammar' => array( '0', 'RÊZIMAN.', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'ZAYEND.', 'GENDER:' ),
+ 'plural' => array( '0', 'PIRRJIMAR:', 'PLURAL:' ),
+ 'currentversion' => array( '1', 'VERSIYONA_NIHA', 'CURRENTVERSION' ),
+ 'numberofadmins' => array( '1', 'HEJMARA_ADAMÃŽNISTRATORAN', 'NUMBEROFADMINS' ),
+ 'special' => array( '0', 'taybet', 'special' ),
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'Xetekê di bin girêdanê de çêke:',
@@ -159,15 +202,7 @@ $messages = array(
'category-file-count' => '{{PLURAL:$2|Di vê kategoriyê de tenê ev dane heye:|Di vê kategoriyê de {{PLURAL:$2|daneyek heye|$2 dane hene}}. Jêr {{PLURAL:$1|daneyek tê|$1 dane tên}} nîşandan.}}',
'category-file-count-limited' => 'Ev {{PLURAL:$1|daneya|$1 daneyên}} jêr di vê kategoriyê de ne.',
'listingcontinuesabbrev' => 'dewam',
-
-'mainpagetext' => "'''MediaWiki serketî hate çêkirin.'''",
-'mainpagedocfooter' => 'Alîkarî ji bo bikaranîn û guherandin yê datayê Wîkî tu di bin [http://meta.wikimedia.org/wiki/Help:Contents pirtûka alîkarîyê ji bikarhêneran] da dikarê bibînê.
-
-== Alîkarî ji bo destpêkê ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lîsteya varîyablên konfîgûrasîyonê]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lîsteya e-nameyên versyonên nuh yê MediaWiki]',
+'broken-file-category' => 'Rûpelên bi girêdanên xerabûyî',
'about' => 'Der barê',
'article' => 'Gotar',
@@ -218,10 +253,10 @@ $messages = array(
'history' => 'Dîroka rûpelê',
'history_short' => 'Dîrok',
'updatedmarker' => 'ji serdana min a dawî ve hate rojanekirin',
-'info_short' => 'Zanyarî',
'printableversion' => 'Versiyon ji bo çapkirinê',
'permalink' => 'Girêdana daîmî',
'print' => 'Çap',
+'view' => 'Bibîne',
'edit' => 'Biguherîne',
'create' => 'Biafirîne',
'editthispage' => 'Vê rûpelê biguherîne',
@@ -306,6 +341,8 @@ $messages = array(
'toc' => 'Naverok',
'showtoc' => 'nîşan bide',
'hidetoc' => 'veşêre',
+'collapsible-collapse' => 'Bigire',
+'collapsible-expand' => 'Berfireh bike',
'thisisdeleted' => 'Li $1 binêre an jî serast bike?',
'viewdeleted' => 'Li $1 binêre?',
'restorelink' => '{{PLURAL:$1|guherandineke|$1 guherandinên}} jêbirî',
@@ -384,14 +421,13 @@ Pirs: $2',
'protectedpagetext' => 'Ev rûpel ji bo nenivîsandinê hatiye parastin.',
'viewsourcetext' => 'Tu dikarî li çavkaniya vê rûpelê binêrî û wê kopî bikî:',
'protectedinterface' => "Di vê rûpelê da nivîsandin ji bo interface'î zimanan yê vê software'ê ye. Ew tê parstin ji bo vandalîzm li vê derê çênebe.",
-'editinginterface' => "'''Hişyarî:''' Tu rûpeleke ku di Wîkîpediya de ji bo sîstemê girîng e diguherînî. Guherandinên di vê rûpelê de wê ji aliyê hemû bikarhêneran ve werin dîtin. Ji bo wergerê ji kerema xwe di [http://translatewiki.net/wiki/Main_Page?setlang=ku translatewiki.net] de bixebite, projeya MediaWiki.",
+'editinginterface' => "'''Hişyarî:''' Tu rûpeleke ku di Wîkîpediya de ji bo sîstemê girîng e diguherînî. Guherandinên di vê rûpelê de wê ji aliyê hemû bikarhêneran ve werin dîtin. Ji bo wergerê ji kerema xwe di [//translatewiki.net/wiki/Main_Page?setlang=ku translatewiki.net] de bixebite, projeya MediaWiki.",
'sqlhidden' => '(Jêpirskirina SQL hatiye veşartin)',
'cascadeprotected' => '<strong>Ev rûpel hatiye parastin ji ber guherandinê, ji ber ku ev rûpela di {{PLURAL:$1|vê rûpelê|van rûpelan da}} tê bikaranîn:
$2
</strong>',
'namespaceprotected' => "Destûra te ji bo guhertina vê rûpelê '''$1''' di valahiya nav de nîne.",
-'customcssjsprotected' => 'Qebûlkirinên te tune ne, tu nikanê vê rûpelê biguherînê, ji ber ku di vir da tercihên bikarhênerekî din hene.',
'ns-specialprotected' => 'Rûpelên taybet {{ns:special}} nikarin werin guherandin.',
'titleprotected' => "Rûpelek bi vî navî nikare were çêkirin. Ev astengkirin ji [[User:$1|$1]] bi sedema ''$2'' hate çêkirin.",
@@ -425,6 +461,7 @@ Hesabê te hate afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe
'createaccount' => 'Hesabê nû çêke',
'gotaccount' => "Hesabê te heye? '''$1'''.",
'gotaccountlink' => 'Têkeve',
+'userlogin-resetlink' => 'Te agahiyên hesabê xwe ji bîr kirin?',
'createaccountmail' => 'bi e-name',
'createaccountreason' => 'Sedem:',
'badretype' => 'Her du şîfreyên ku te nivîsîn li hevdu nayên.',
@@ -436,7 +473,7 @@ Hesabê te hate afirandin. Tu dikarî niha [[Special:Preferences|tercîhên xwe
'loginsuccesstitle' => 'Têketin serkeftî!',
'loginsuccess' => 'Tu niha di {{SITENAME}} de qeydkirî yî wek "$1".',
'nosuchuser' => 'Bikarhênera/ê bi navê "$1" tune. Navê rast binivîse an bi vê formê <b>hesabeke nû çêke</b>. (Ji bo hevalên nû "Têkeve" çênabe!)',
-'nosuchusershort' => 'Li vê derê ne bikarhênerek bi navî "<nowiki>$1</nowiki>" heye. Li nivîsandinê xwe seke.',
+'nosuchusershort' => 'Li vê derê ne bikarhênerek bi navî "$1" heye. Li nivîsandinê xwe seke.',
'nouserspecified' => 'Divê tu navekî ji bo bikarhêneriyê hilbijêrî.',
'login-userblocked' => 'Rê li ber vî/vê bikarhênerî/ê hatiye girtin. Destûr bo têketinê nîne.',
'wrongpassword' => 'Şifreya ku te nivîsand şaşe. Ji kerema xwe careke din biceribîne.',
@@ -472,7 +509,7 @@ Eger account\'a bikarhêneran şaşî hate çêkirin, guhdare vê peyamê meke.'
'usernamehasherror' => 'Divê karakterên xerab ji bo navê bikarhêner neyên bikaranîn',
'loginlanguagelabel' => 'Ziman: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Şîfreyê biguherîne',
'resetpass_announce' => 'Te xwe bi şîfreyekê qeydkir, yê bi e-nameyekê ji te ra hate şandin. Ji bo xelaskirinê qeydkirinê, tu niha gireke şîfreyeka nuh binivisînê.',
'resetpass_text' => '<!-- Nivîsê li vir binivisîne -->',
@@ -487,6 +524,16 @@ Eger account\'a bikarhêneran şaşî hate çêkirin, guhdare vê peyamê meke.'
'resetpass-submit-cancel' => 'Betalkirin',
'resetpass-temp-password' => 'Şîfreya niha:',
+# Special:PasswordReset
+'passwordreset' => 'Şîfreyê nû bike',
+'passwordreset-legend' => 'Şîfreyê nû bike',
+'passwordreset-username' => 'Navê bikarhêner:',
+'passwordreset-email' => 'Navnîşana E-nameyê:',
+'passwordreset-emailtitle' => 'Hûragahiyên hesab li ser {{SITENAME}}',
+'passwordreset-emailelement' => 'Navê bikarhêner:$1
+Şîfreya niha:$2',
+'passwordreset-emailsent' => 'E-nameyeke bibîrxistinê hate şandin.',
+
# Edit page toolbar
'bold_sample' => 'Nivîsa stûr',
'bold_tip' => 'Nivîsa stûr',
@@ -498,8 +545,6 @@ Eger account\'a bikarhêneran şaşî hate çêkirin, guhdare vê peyamê meke.'
'extlink_tip' => 'Girêdana derve (http:// di destpêkê de ji bîr neke)',
'headline_sample' => 'Nivîsara sernameyê',
'headline_tip' => 'Sername asta 2',
-'math_sample' => 'Kurteristê matêmatîk li vir binivisîne',
-'math_tip' => 'Kurteristê matêmatîk (LaTeX)',
'nowiki_sample' => 'Nivîs ku nebe formatkirin',
'nowiki_tip' => 'Guh nede formatkirina wiki',
'image_sample' => 'Mînak.jpg',
@@ -575,7 +620,7 @@ Heke tu bi şaşîtî hatî, bizîvire rûpela berê.",
'noarticletext' => 'Ev rûpel niha vala ye, tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] an [{{fullurl:{{FULLPAGENAME}}|action=edit}} vê rûpelê biguherînî].',
'noarticletext-nopermission' => 'Ev rûpel niha vala ye, tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] an [{{fullurl:{{FULLPAGENAME}}|action=edit}} vê rûpelê biguherînî].
Ev rûpel niha vala ye, tu dikarî [[Special:Search/{{PAGENAME}}|Di nav gotarên din de li "{{PAGENAME}}" bigere]] an [{{fullurl:{{FULLPAGENAME}}|action=edit}} vê rûpelê biguherînî].',
-'userpage-userdoesnotexist' => 'Account\'î bikarhêneran "$1" nehatîye qeydkirin. Xêra xwe seke ku tu dixazê vê rûpelê çêkê/biguherînê.',
+'userpage-userdoesnotexist' => 'Hesabê bikarhêneran "<nowiki>$1</nowiki>" nehatiye qeydkirin. Heke tu bixwazî vê rûpelê çêkî/biguherînî ji kerema xwe lê binêre.',
'userpage-userdoesnotexist-view' => 'Hesabê bikarhêner "$1" nehatiye qeyd kirin.',
'blocked-notice-logextract' => 'Ev bikarhêner hatiye astengkirin.
Astengkirina dawî bi referansa li jêr hatiye piştrastkirin:',
@@ -794,8 +839,8 @@ Sedema qedexekirina $3 ev e: ''$2''",
'changepassword' => 'Şîfreyê biguherîne',
'prefs-skin' => 'Pêste',
'skin-preview' => 'Pêşdîtin',
-'prefs-math' => 'TeX',
'datedefault' => 'Tercih tune ne',
+'prefs-beta' => "Taybetmendiyên Beta'yê",
'prefs-datetime' => 'Dîrok û dem',
'prefs-personal' => 'Profîla bikarhêner',
'prefs-rc' => 'Guherandinên dawî',
@@ -1017,7 +1062,7 @@ anjî ji bo file'ên dengî '''<nowiki>[[</nowiki>{{ns:media}}:File.ogg<nowiki>]
'filetype-unwanted-type' => '\'\'\'".$1"\'\'\' formatekî nexastî ye.
Format {{PLURAL:$3|yê tê|yên tên}} qebûlkirin {{PLURAL:$3|ev e|ev in}}: $2.',
'filetype-banned-type' => '\'\'\'".$1"\'\'\' formatekî qedexe ye.
-Format {{PLURAL:$3|yê tê|yên tên}} xastin {{PLURAL:$3|ev e|ev in}}: $2.',
+Format {{PLURAL:$3|yê tê|yên tên}} xwestin {{PLURAL:$3|ev e|ev in}}: $2.',
'filetype-missing' => 'Piştnavî datayê tune (wek ".jpg").',
'unknown-error' => 'Çewtiyeke nenas pêk hat.',
'large-file' => "Mezinbûna data'yan bila ne ji $1 mezintir bin; ev data'ya $2 mezin e.",
@@ -1050,11 +1095,6 @@ Xêra xwe navekî din bibîne.",
'upload-options' => 'Vebijarkên barkirinê',
'watchthisupload' => 'Vê rûpelê bişopîne',
'filewasdeleted' => "Data'yek bi vê navê hatibû barkirin û jêbirin. Xêra xwe li $1 seke ku barkirina te hêja ye ya na.",
-'upload-wasdeleted' => "'''Hîşyar: Tu data'yekê bardikê yê berê hatibû jêbirin.'''
-
-Zanibe, ku ev barkirina kê were qebûlkirin ya na.
-
-Înformasyonan li ser jêbirinê kevin ra:",
'filename-bad-prefix' => "Nava wê data'yê, yê tu niha bardikê, bi '''\"\$1\"''' destpêdike. Kamêrayên dîjîtal wan navan didin wêneyên xwe. Ji kerema xwe navekî baştir binivisîne ji bo mirov zûtir zanibin ku şayeşê vê wêneyê çî ye.",
'upload-success-subj' => 'Barkirin serkeftî',
'upload-failure-subj' => 'Pirsgirêka barkirinê',
@@ -1097,6 +1137,7 @@ Zanibe, ku ev barkirina kê were qebûlkirin ya na.
'imagelinks' => 'Girêdanên vî wêneyî',
'linkstoimage' => 'Di van rûpelan de lînkek ji vî wêneyî re heye:',
'nolinkstoimage' => 'Rûpelekî ku ji vî wêneyî re girêdankê çêdike nîne.',
+'linkstoimage-redirect' => '$1 (beralîkirina pelê) $2',
'uploadnewversion-linktext' => 'Versyonekî nû yê vê datayê barbike',
'shared-repo-from' => 'ji $1',
@@ -1289,20 +1330,22 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
'listgrouprights-removegroup-all' => 'Hemû koman jê bibe',
# E-mail user
-'mailnologin' => 'Navnîşanê neşîne',
-'mailnologintext' => 'Te gireke xwe [[Special:UserLogin|qeydbikê]] û adrêsa e-nameyan di [[Special:Preferences|tercihên xwe]] da nivîsandibe ji bo şandina e-nameyan ji bikarhênerên din ra.',
-'emailuser' => 'Ji vê/î bikarhênerê/î re e-name bişîne',
-'emailpage' => 'E-name bikarhêner',
-'defemailsubject' => '{{SITENAME}} e-name',
-'noemailtitle' => 'Navnîşana e-name tune',
-'emailfrom' => 'Ji',
-'emailto' => 'Ji bo:',
-'emailsubject' => 'Mijar',
-'emailmessage' => 'Peyam:',
-'emailsend' => 'Bişîne',
-'emailccme' => 'Kopiyeke vê peyamê ji min re bişîne.',
-'emailsent' => 'E-name hat ÅŸandin',
-'emailsenttext' => 'E-nameya te hat ÅŸandin.',
+'mailnologin' => 'Navnîşanê neşîne',
+'mailnologintext' => 'Te gireke xwe [[Special:UserLogin|qeydbikê]] û adrêsa e-nameyan di [[Special:Preferences|tercihên xwe]] da nivîsandibe ji bo şandina e-nameyan ji bikarhênerên din ra.',
+'emailuser' => 'Ji vê/î bikarhênerê/î re e-name bişîne',
+'emailpage' => 'E-name bikarhêner',
+'defemailsubject' => '{{SITENAME}} e-name',
+'noemailtitle' => 'Navnîşana e-name tune',
+'emailusername' => 'Navê bikarhêner:',
+'emailusernamesubmit' => 'Tomar bike',
+'emailfrom' => 'Ji',
+'emailto' => 'Ji bo:',
+'emailsubject' => 'Mijar',
+'emailmessage' => 'Peyam:',
+'emailsend' => 'Bişîne',
+'emailccme' => 'Kopiyeke vê peyamê ji min re bişîne.',
+'emailsent' => 'E-name hat ÅŸandin',
+'emailsenttext' => 'E-nameya te hat ÅŸandin.',
# User Messenger
'usermessage-editor' => 'Peyamnêra sîstemê',
@@ -1314,7 +1357,7 @@ Li [[Special:WantedCategories|kategoriyên xwestî]] binêre.',
'watchlistanontext' => 'Ji bo sekirinê ya xeyrandinê lîsteya te ya şopandinê tu gireke xwe $1.',
'watchnologin' => 'Te xwe qeyd nekiriye.',
'watchnologintext' => 'Ji bo xeyrandinê lîsteya te ya şopandinê tu gireke xwe [[Special:UserLogin|qedy kiribe]].',
-'addedwatch' => 'Hat îlawekirinî listeya şopandinê',
+'addwatch' => 'Tevlî lîsteya şopandinê bike',
'addedwatchtext' => "Rûpela \"<nowiki>\$1</nowiki>\" çû ser [[Special:Watchlist|lîsteya te ya şopandinê]].
Li dahatû de her guhartoyek li wê rûpelê û rûpela guftûgo ya wê were kirin li vir dêt nîşan dan,
@@ -1322,7 +1365,7 @@ Li rûpela [[Special:RecentChanges|Guherandinên dawî]] jî ji bo hasan dîtina
<p>Her dem tu bixwazî ew rûpel li nav lîsteya te ya şopandinê derbikî, li ser wê rûpelê, klîk bike \"êdî neşopîne\".</p>",
-'removedwatch' => 'Ji lîsteya şopandinê hate jêbirin',
+'removewatch' => 'Ji lîsteya şopandinê derxe',
'removedwatchtext' => 'Rûpela "[[:$1]]" ji lîsteya te ya şopandinê hate jêbirin.',
'watch' => 'Bişopîne',
'watchthispage' => 'Vê rûpelê bişopîne',
@@ -1349,29 +1392,27 @@ Li rûpela [[Special:RecentChanges|Guherandinên dawî]] jî ji bo hasan dîtina
'created' => 'hate afirandin',
'enotif_subject' => '[{{SITENAME}}] Rûpelê "$PAGETITLE" ji $PAGEEDITOR hate $CANGEDORCREATED',
'enotif_anon_editor' => 'Bikarhênerê/a neqeydkirî $1',
-'enotif_body' => '$WATCHINGUSERNAME,
-
+'enotif_body' => 'Birêz $WATCHINGUSERNAME,
-Rûpelê {{SITENAME}} $PAGETITLE hate $CHANGEDORCREATED di rojê $PAGEEDITDATE da ji $PAGEEDITOR, xêra xwe li $PAGETITLE_URL ji versyonê niha ra seke.
-$NEWPAGE
+Rûpela {{SITENAME}} $PAGETITLE hate $CHANGEDORCREATED di roja $PAGEEDITDATE de ji aliyê $PAGEEDITOR ve, ji kerema xwe li $PAGETITLE_URL ji bo guhertoya niha li $NEWPAGE binêre.
-Kurtnivîsê wê bikarhênerî: $PAGESUMMARY $PAGEMINOREDIT
+Kurtnivîsa bikarhêner: $PAGESUMMARY $PAGEMINOREDIT
-Ji wî bikarhênerî mêsajekî binivisîne:
+Ji bo bikarhêner peyamekê binivisîne:
E-name: $PAGEEDITOR_EMAIL
{{SITENAME}}: $PAGEEDITOR_WIKI
-Heta tu vê guherandinê senekê, mêsajên din ji ber ku guherandinê wê rûpelê yê netên.
+Heta tu li vê guherandinê nenêrî, peyamên din ên guhertinê yên vê rûpelê nayên nîşandan.
- Sîstêmê mêsajan yê {{SITENAME}}
+ Peyamên {{SITENAME}}
--
-Eger tu dixazê lîstêya xwe yê şopandinê biguherînê, li
-{{fullurl:{{#special:Watchlist}}/edit}} seke.
+Heke tu dixwazî lîsteya xwe ya şopandinê biguherînî, li
+{{canonicalurl:{{#special:EditWatchlist}}}} binêre.
-"Feedback" û alîkarîyê din:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+Paşagahîdan û alîkaraya din:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Rûpelê jê bibe',
@@ -1387,7 +1428,7 @@ Naverroka berî betalkirinê ev bû:'$1'",
'confirmdeletetext' => 'Tu kê niha rûpelekê bi tev dîroka wê jêbibê. Xêra xwe zanibe tu kê niha çi bikê û zanibe, çi di wîkîyê da yê bibe. Hên jî seke, ku ev jêbirina bi [[{{MediaWiki:Policy-url}}|mafên wîkîyê]] ra dimeşin ya na.',
'actioncomplete' => 'Çalakî pêk hat',
'actionfailed' => 'Çalakî têkçû',
-'deletedtext' => '"<nowiki>$1</nowiki>" hat jêbirin. Ji bo qeyda rûpelên ku di dema nêzîk de hatin jêbirin binêre $2.',
+'deletedtext' => '"$1" hat jêbirin. Ji bo qeyda rûpelên ku di dema nêzîk de hatin jêbirin binêre $2.',
'deletedarticle' => '"[[$1]]" hat jêbirin',
'dellogpage' => 'Jêbirina rûpelê',
'dellogpagetext' => 'Li jêr lîsteyek ji jêbirinên dawî heye.',
@@ -1482,9 +1523,10 @@ Ji bo jêbirinan û çêkirinên nuh ra, xêra xwe di [[Special:Log/delete|reşa
'undelete-show-file-submit' => 'Erê',
# Namespace form on various pages
-'namespace' => 'Boşahîya nav:',
-'invert' => 'Hilbijardinê pêçewane bike',
-'blanknamespace' => '(Sereke)',
+'namespace' => 'Boşahîya nav:',
+'invert' => 'Hilbijardinê pêçewane bike',
+'namespace_association' => 'Navê têkilîdar',
+'blanknamespace' => '(Sereke)',
# Contributions
'contributions' => 'Beşdariyên vê bikarhêner',
@@ -1527,6 +1569,8 @@ Ji bo jêbirinan û çêkirinên nuh ra, xêra xwe di [[Special:Log/delete|reşa
'whatlinkshere-filters' => 'Parzûn',
# Block/unblock
+'block' => 'Bikarhêner asteng bike',
+'unblock' => 'Astengkirinê rake',
'blockip' => 'Bikarhêner asteng bike',
'blockip-title' => 'Bikarhêner asteng bike',
'blockip-legend' => 'Bikarhêner asteng bike',
@@ -1534,7 +1578,6 @@ Ji bo jêbirinan û çêkirinên nuh ra, xêra xwe di [[Special:Log/delete|reşa
Ev bes gireke were bikaranîn ji bo vandalîzmê biskinîne (bi vê [[{{MediaWiki:Policy-url}}|qebûlkirinê]]).
Sedemekê binivîse!',
-'ipaddress' => "adresê IP'yekê",
'ipadressorusername' => "adresê IP'yekê ya navekî bikarhênerekî",
'ipbexpiry' => 'Dem:',
'ipbreason' => 'Sedem',
@@ -1548,7 +1591,6 @@ Sedemekê binivîse!',
** heqaretkirin
** pir hesab bikaranîn
** navekî ku nayê pejirandin',
-'ipbanononly' => 'Bes bikarhênerî veşartî astengbike (bikarhênerên qeydkirî bi vê IP-adresê ne tên astengkirin).',
'ipbcreateaccount' => 'Çêkirina hesaban qedexe bike',
'ipbemailban' => 'Ji bo ÅŸandina e-nameyan qedexe bike.',
'ipbenableautoblock' => "Otomatîk IP'yên niha û yên nuh yê vê bikarhênerê astengbike.",
@@ -1559,6 +1601,7 @@ Sedemekê binivîse!',
'ipbotherreason' => 'Sedemekî din',
'ipbhidename' => 'Navê bikarhêner / adresê IP ji "pirtûkê" astengkirinê, lîsteya astengkirinên nuh û lîsteya bikarhêneran veşêre',
'ipbwatchuser' => 'Rûpelên bikarhêner û guftûgoyê bişopîne',
+'ipb-confirm' => 'Astengkirinê piştrast bike',
'badipaddress' => 'Bikarhêner bi vî navî tune',
'blockipsuccesssub' => 'Astengkirin serkeftî bû',
'blockipsuccesstext' => '"$1" hat asteng kirin.
@@ -1573,14 +1616,17 @@ Sedemekê binivîse!',
'ipusubmit' => 'Astengkirina vê adrêsê rake',
'unblocked' => '[[User:$1|$1]] niha vê astengkirinê ye',
'unblocked-id' => '$1 dîsa vê astengkirinê ye',
+'blocklist' => 'Bikarhênerên astengkirî',
'ipblocklist' => "Listek ji adresên IP'yan û bikarhêneran yê hatine astengkirin",
'ipblocklist-legend' => 'Bikarhênerekî astengkirî bibîne',
-'ipblocklist-username' => "Navî bikarhêner ya adrêsa IP'yê:",
-'ipblocklist-sh-tempblocks' => 'Astengkirinên niha $1',
+'blocklist-userblocks' => 'Astengkirina hesaban veşêre',
+'blocklist-tempblocks' => 'Astengkirinên demkî veşêre',
+'blocklist-by' => 'Astengkirina rêveber',
+'blocklist-params' => 'Parametreyan asteng bike',
+'blocklist-reason' => 'Sedem',
'ipblocklist-submit' => 'Lêbigere',
'ipblocklist-localblock' => 'Astengkirina herêmî',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Astengkirin|Astengkirinên}} din',
-'blocklistline' => '$1, $2 $3 asteng kir ($4)',
'infiniteblock' => 'ji her demê ra',
'expiringblock' => 'heta $1 $2',
'anononlyblock' => 'bes kesên netên zanîn',
@@ -1597,7 +1643,7 @@ Sedemekê binivîse!',
'autoblocker' => 'Otomatîk hat bestin jiberku IP-ya we û ya "[[User:$1|$1]]" yek in. Sedem: "\'\'\'$2\'\'\'"',
'blocklogpage' => 'Astengkirina bikarhêner',
'blocklogentry' => '"[[$1]]" ji bo dema $2 $3 hatîye asteng kirin',
-'blocklogtext' => "Ev reşahîyek ji astengkirinên û rakirina astengkirinên bikarhêneran ra ye. Adrêsên IP'yan, yê otomatîk hatine astengkirin, nehatine nivîsandin. [[Special:IPBlockList|Lîsteya IP'yên astengkirî]] bibîne ji bo dîtina astengkirinên IP'yan.",
+'blocklogtext' => "Ev reşahîyek ji astengkirinên û rakirina astengkirinên bikarhêneran ra ye. Adrêsên IP'yan, yê otomatîk hatine astengkirin, nehatine nivîsandin. [[Special:BlockList|Lîsteya IP'yên astengkirî]] bibîne ji bo dîtina astengkirinên IP'yan.",
'unblocklogentry' => 'astenga "$1" betalkir',
'block-log-flags-anononly' => 'bes bikarhênerên neqeydkirî',
'block-log-flags-nocreate' => 'çêkirina hesaban hate qedexekirin',
@@ -1607,8 +1653,7 @@ Sedemekê binivîse!',
'block-log-flags-hiddenname' => 'navê bikarhêneriyê yê veşartî',
'ipb_expiry_invalid' => 'Dem ne serrast e.',
'ipb_already_blocked' => '"$1" berê hatîye astengkirin',
-'ipb-needreblock' => '== Hatîye astengkirin ==
-$1 berê hatîye astengkirin. Tu dixazî astengkirinê biguherînê?',
+'ipb-needreblock' => '$1 berê hatiye astengkirin. Tu dixwazî eyaran biguherînî?',
'ipb_cant_unblock' => "Şaşbûn: ID'ya astengkirinê $1 nehate dîtin. Astengkirinê xwe niha belkî hatîye rakirin.",
'blockme' => 'Min astengbike',
'proxyblocksuccess' => 'Çêbû.',
@@ -1831,21 +1876,14 @@ if (wgUserLanguage == "ku-arab")
'spamprotectionmatch' => 'Ev nivîsa parastinê spam vêxist: $1',
# Info page
-'numedits' => 'Hejmara guherandinan (rûpel): $1',
-'numtalkedits' => 'Hejmara guherandinan (guftûgo): $1',
-'numwatchers' => 'Hejmara kesên dişopînin: $1',
-
-# Math options
-'mw_math_png' => 'Her caran wek PNG nîşanbide',
-'mw_math_simple' => 'HTML eger asan be, wekî din PNG',
-'mw_math_html' => 'HTML eger bibe, wekî din PNG',
-'mw_math_source' => "Wek TeX bêle (ji browser'ên gotaran ra)",
-'mw_math_modern' => "Baştir e ji browser'ên nuhtir",
-'mw_math_mathml' => 'MathML eger bibe (ceribandin)',
-
-# Math errors
-'math_unknown_error' => 'şaşbûnekî nezanîn',
-'math_image_error' => 'Wêşandana PNG nemeşî',
+'pageinfo-header-edits' => 'Guherandin',
+'pageinfo-header-watchlist' => 'Lîsteya şopandinê',
+'pageinfo-header-views' => 'Dîtin',
+'pageinfo-subjectpage' => 'Rûpel',
+'pageinfo-talkpage' => 'Rûpela nîqaşê',
+'pageinfo-watchers' => 'Hejmara kesên dişopînin',
+'pageinfo-edits' => 'Hejmara guherandinan',
+'pageinfo-views' => 'Hejmara dîtinê',
# Patrolling
'markaspatrolleddiff' => 'Wek serrastkirî nîşanbide',
@@ -1869,15 +1907,14 @@ if (wgUserLanguage == "ku-arab")
'nextdiff' => 'Ciyawaziya paştir →',
# Media information
-'thumbsize' => 'Mezinahiya wêne:',
-'widthheight' => '$1 x $2',
-'widthheightpage' => '$1×$2, $3 rûpel',
-'file-info' => 'mezinbûnê data: $1, MIME-typ: $2',
-'file-info-size' => '$1 × $2 pixel, mezinbûnê data: $3, MIME-typ: $4',
-'file-nohires' => '<small>Versyonekî jê mezintir tune.</small>',
-'svg-long-desc' => "Data'ya SVG, mezinbûna rast: $1 × $2 pixel; mezinbûna data'yê: $3",
-'show-big-image' => 'Mezînbûn',
-'show-big-image-thumb' => '<small>Mezinbûna vê pêşnîşandanê: $1 × $2 pixel</small>',
+'thumbsize' => 'Mezinahiya wêne:',
+'widthheight' => '$1 x $2',
+'widthheightpage' => '$1×$2, $3 rûpel',
+'file-info' => 'mezinbûnê data: $1, MIME-typ: $2',
+'file-info-size' => '$1 × $2 pixel, mezinbûnê data: $3, MIME-typ: $4',
+'file-nohires' => '<small>Versyonekî jê mezintir tune.</small>',
+'svg-long-desc' => "Data'ya SVG, mezinbûna rast: $1 × $2 pixel; mezinbûna data'yê: $3",
+'show-big-image' => 'Mezînbûn',
# Special:NewFiles
'newimages' => 'Pêşangeha wêneyên nû',
@@ -1916,6 +1953,11 @@ if (wgUserLanguage == "ku-arab")
'exif-filesource' => 'Çavkaniya pelê',
'exif-contrast' => 'Kontrast',
'exif-objectname' => 'Sernavê kurt',
+'exif-source' => 'Çavkanî',
+'exif-writer' => 'Nivîskar',
+'exif-languagecode' => 'Ziman',
+'exif-iimcategory' => 'Kategorî',
+'exif-label' => 'Etîket',
'exif-unknowndate' => 'Dîroka nayê zanîn',
@@ -1949,16 +1991,34 @@ if (wgUserLanguage == "ku-arab")
# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-m' => 'Serê saetê mîl',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kîlometre',
+'exif-gpsdestdistance-m' => 'Mîl',
+
+'exif-objectcycle-a' => 'Tenê sibehan',
+'exif-objectcycle-p' => 'Tenê êvaran',
+
+'exif-dc-date' => 'Dîrok',
+'exif-dc-rights' => 'Maf',
+
+'exif-iimcategory-edu' => 'Perwerdehî',
+'exif-iimcategory-evn' => 'Hawirdor',
+'exif-iimcategory-hth' => 'Tenduristî',
+'exif-iimcategory-pol' => 'Siyaset',
+'exif-iimcategory-rel' => 'Dîn û bawerî',
+'exif-iimcategory-sci' => 'Zanist û teknolojî',
+'exif-iimcategory-spo' => 'Werzîş',
+'exif-iimcategory-war' => 'Şer, pevçûn û alozî',
+'exif-iimcategory-wea' => 'Hewa',
+
# External editor support
-'edit-externally-help' => '(Ji bo agahîyên zav [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] li vir binêre)',
+'edit-externally-help' => '(Ji bo agahîyên zav [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] li vir binêre)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'hemû',
-'imagelistall' => 'hemû',
-'watchlistall2' => 'hemû',
-'namespacesall' => 'Hemû',
-'monthsall' => 'giÅŸtik',
-'limitall' => 'hemû',
+'watchlistall2' => 'hemû',
+'namespacesall' => 'Hemû',
+'monthsall' => 'giÅŸtik',
+'limitall' => 'hemû',
# E-mail address confirmation
'confirmemail' => 'Adrêsa e-nameyan nasbike',
diff --git a/languages/messages/MessagesKw.php b/languages/messages/MessagesKw.php
index f3298389..d4698acf 100644
--- a/languages/messages/MessagesKw.php
+++ b/languages/messages/MessagesKw.php
@@ -59,32 +59,32 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Preferences' => array( 'Dewisyansow' ),
- 'Watchlist' => array( 'Rol_golyas' ),
- 'Recentchanges' => array( 'Chanjyow_a-dhiwedhes' ),
- 'Upload' => array( 'Ughcarga' ),
- 'Randompage' => array( 'FolenDreJons' ),
- 'Wantedpages' => array( 'FolennowWhansus' ),
- 'Wantedcategories' => array( 'ClassysWhansus' ),
- 'Wantedfiles' => array( 'RestrennowWhansus' ),
- 'Wantedtemplates' => array( 'ScantlynsWhansus' ),
- 'Newpages' => array( 'FolennowNowyth' ),
- 'Ancientpages' => array( 'FolennowCoth' ),
+ 'Allmessages' => array( 'OllMessajow' ),
'Allpages' => array( 'OllFolennow' ),
- 'Specialpages' => array( 'FolennowArbennek' ),
+ 'Ancientpages' => array( 'FolennowCoth' ),
+ 'Block' => array( 'Lettya' ),
+ 'Categories' => array( 'Classys' ),
'Contributions' => array( 'Kevrohow' ),
'Emailuser' => array( 'EbostyaDevnydhyer' ),
- 'Movepage' => array( 'GwayaFolen' ),
- 'Categories' => array( 'Classys' ),
'Export' => array( 'Esperthy' ),
- 'Version' => array( 'Versyon' ),
- 'Allmessages' => array( 'OllMessajow' ),
- 'Blockip' => array( 'Lettya' ),
'Import' => array( 'Ymperthy' ),
+ 'Movepage' => array( 'GwayaFolen' ),
+ 'Mycontributions' => array( 'OwHevrohow' ),
'Mypage' => array( 'OwFolen' ),
'Mytalk' => array( 'OwHows' ),
- 'Mycontributions' => array( 'OwHevrohow' ),
+ 'Newpages' => array( 'FolennowNowyth' ),
+ 'Preferences' => array( 'Dewisyansow' ),
+ 'Randompage' => array( 'FolenDreJons' ),
+ 'Recentchanges' => array( 'Chanjyow_a-dhiwedhes' ),
'Search' => array( 'Whilans' ),
+ 'Specialpages' => array( 'FolennowArbennek' ),
+ 'Upload' => array( 'Ughcarga' ),
+ 'Version' => array( 'Versyon' ),
+ 'Wantedcategories' => array( 'ClassysWhansus' ),
+ 'Wantedfiles' => array( 'RestrennowWhansus' ),
+ 'Wantedpages' => array( 'FolennowWhansus' ),
+ 'Wantedtemplates' => array( 'ScantlynsWhansus' ),
+ 'Watchlist' => array( 'Rol_golyas' ),
);
$messages = array(
@@ -211,10 +211,10 @@ $messages = array(
'searcharticle' => 'Ke',
'history' => 'Istory an folen',
'history_short' => 'Istory',
-'info_short' => 'Kedhlow',
'printableversion' => 'Versyon pryntyadow',
'permalink' => 'Kevren fast',
'print' => 'Pryntya',
+'view' => 'Gweles',
'edit' => 'Chanjya',
'create' => 'Gwruthyl',
'editthispage' => 'Chanjya an folen-ma',
@@ -222,6 +222,7 @@ $messages = array(
'delete' => 'Dilea',
'deletethispage' => 'Dilea an folen-ma',
'undelete_short' => 'Disdhilea {{PLURAL:$1|udn janj|$1 chanj}}',
+'viewdeleted_short' => 'Gweles {{PLURAL:$1|udn janj dileys|$1 chanj dileys}}',
'protect' => 'Difres',
'protect_change' => 'chanjya',
'protectthispage' => 'Difres an folen-ma',
@@ -289,6 +290,7 @@ $messages = array(
'toc' => 'Synsys',
'showtoc' => 'disqwedhes',
'hidetoc' => 'cudha',
+'collapsible-expand' => 'Efany',
'thisisdeleted' => 'Gweles po restorya $1?',
'viewdeleted' => 'Gweles $1?',
'restorelink' => '{{PLURAL:$1|udn janj dileys|$1 chanj dileys}}',
@@ -350,6 +352,7 @@ Na wrewgh nakevy dhe janjya agas [[Special:Preferences|dowisyanjow rag {{SITENAM
'createaccount' => 'Formya acont noweth',
'gotaccount' => "Eus acont genowgh seulabres? '''$1'''.",
'gotaccountlink' => 'Omgelmy',
+'userlogin-resetlink' => 'Eus nakevys genowgh agas kedhlow omgelmy?',
'createaccountmail' => 'der e-bost',
'createaccountreason' => 'Acheson:',
'badretype' => 'Na wra parya an geryow-tremena an eyl gen y gila.',
@@ -376,7 +379,7 @@ Assayowgh arta.',
'accountcreatedtext' => 'Formys ew an acont rag $1.',
'loginlanguagelabel' => 'Yeth: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Chanjya ger-tremena',
'resetpass_header' => 'Chanjya ger-tremena an acont',
'oldpassword' => 'Ger-tremena coth:',
@@ -384,6 +387,10 @@ Assayowgh arta.',
'resetpass-submit-loggedin' => 'Chanjya an ger-tremena',
'resetpass-submit-cancel' => 'Hedhy',
+# Special:PasswordReset
+'passwordreset-username' => 'Hanow-usyer:',
+'passwordreset-email' => 'Trigva ebost:',
+
# Edit page toolbar
'bold_sample' => 'Text tew',
'bold_tip' => 'Text tew',
@@ -395,8 +402,6 @@ Assayowgh arta.',
'extlink_tip' => 'Kevren a-mes (na nakevowgh an rager http://)',
'headline_sample' => 'Text an titel',
'headline_tip' => 'Pednlinen nivel 2',
-'math_sample' => 'Keworrewgh an furvel obma',
-'math_tip' => 'Furvel galcoriethek (LaTeX)',
'image_tip' => 'Restren neythys',
'media_tip' => 'Kevren restren',
'sig_tip' => 'Agas sinans gen stampa-termen',
@@ -794,8 +799,6 @@ En '''tew''' ew folednow eus war agas [[Special:Watchlist|rol golyas]].",
'watchlist' => 'Ow rol golyas',
'mywatchlist' => 'Ow rol golyas',
'watchlistfor2' => 'Rag $1 ($2)',
-'addedwatch' => "Keworrys dhe'n rol golyas",
-'removedwatch' => 'Dileys dhort an rol golyas',
'watch' => 'Golyas',
'watchthispage' => 'Golyas an folen-ma',
'unwatch' => 'Diswolyas',
@@ -810,8 +813,8 @@ En '''tew''' ew folednow eus war agas [[Special:Watchlist|rol golyas]].",
'delete-confirm' => 'Dilea "$1"',
'delete-legend' => 'Dilea',
'actioncomplete' => 'An gwryans ew cowlwres',
-'deletedtext' => '"<nowiki>$1</nowiki>" yw dileys.
-Gwelewgh $2 rag covath a dhileansow a-dhiwedhes.',
+'deletedtext' => '"$1" yw dileys.
+Gwelowgh $2 rag covadh a dhileanjow a-dhiwedhes.',
'deletedarticle' => 'a dhileas "[[$1]]"',
'dellogpage' => 'Covnoten dilea',
'deletecomment' => 'Acheson:',
@@ -889,7 +892,6 @@ Gwelewgh $2 rag covath a dhileansow a-dhiwedhes.',
# Block/unblock
'blockip' => 'Lettya devnydhyer',
-'ipaddress' => 'Trigva IP:',
'ipadressorusername' => 'Trigva IP po hanow-usyer:',
'ipbreason' => 'Acheson:',
'ipbreasonotherlist' => 'Acheson aral',
@@ -1006,11 +1008,10 @@ Whi a ell gweles hy fednfenten.',
'nextdiff' => 'Chanj nowettha →',
# Media information
-'file-info-size' => '$1 × $2 pixel, mens an restren: $3, sort MIME : $4',
-'file-nohires' => '<small>Nag eus clerder uhella cavadow.</small>',
-'svg-long-desc' => 'Restren SVG, $1 × $2 pixel en hanow, mens an restren: $3',
-'show-big-image' => 'Clerder leun',
-'show-big-image-thumb' => '<small>Mens an ragwel-ma: $1 × $2 pixel</small>',
+'file-info-size' => '$1 × $2 pixel, mens an restren: $3, sort MIME : $4',
+'file-nohires' => '<small>Nag eus clerder uhella cavadow.</small>',
+'svg-long-desc' => 'Restren SVG, $1 × $2 pixel en hanow, mens an restren: $3',
+'show-big-image' => 'Clerder leun',
# Special:NewFiles
'ilsubmit' => 'Whila',
@@ -1035,11 +1036,9 @@ Whi a ell gweles hy fednfenten.',
'edit-externally' => 'Chanjya an restren-ma dre towlen a-ves',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'oll',
-'imagelistall' => 'oll',
-'watchlistall2' => 'oll',
-'namespacesall' => 'oll',
-'monthsall' => 'oll',
+'watchlistall2' => 'oll',
+'namespacesall' => 'oll',
+'monthsall' => 'oll',
# Trackbacks
'trackbackremove' => '([$1 Dilea])',
diff --git a/languages/messages/MessagesKy.php b/languages/messages/MessagesKy.php
index 4e297093..f76bf4c9 100644
--- a/languages/messages/MessagesKy.php
+++ b/languages/messages/MessagesKy.php
@@ -168,7 +168,7 @@ $messages = array(
'accountcreated' => 'Катталды',
'loginlanguagelabel' => 'Тил: $1',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'ЭÑки ÑÑ‹Ñ€Ñөз:',
'newpassword' => 'Жаңы ÑÑ‹Ñ€Ñөз:',
@@ -307,7 +307,6 @@ $messages = array(
# Watchlist
'watchlist' => 'Байкоо тизмем',
'watchnologin' => 'Катталган жок',
-'addedwatch' => 'Байкоо тизмеге кошумчаланды',
'watch' => 'Байкоо',
'watchlistcontains' => 'Байкоо тизмеңизде $1 {{PLURAL:$1|барак бар|барак бар}}.',
'wlshowlast' => 'Соңку $1 Ñаат $2 күн $3 көрÑÓ©Ñ‚.',
@@ -337,7 +336,6 @@ $messages = array(
'whatlinkshere' => 'Жетелеме шилтемелер',
# Block/unblock
-'ipaddress' => 'IP дареги',
'ipbreason' => 'Себеп',
'ipbotheroption' => 'башка',
'contribslink' => 'Ñалымдары',
@@ -375,9 +373,6 @@ $messages = array(
# Attribution
'others' => 'башкалар',
-# Math errors
-'math_unknown_error' => 'белгиÑиз ката',
-
# Browsing diffs
'nextdiff' => 'Жаңы түзөтүү →',
@@ -396,9 +391,8 @@ $messages = array(
'exif-focalplaneresolutionunit-2' => 'дюйм',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'баары',
-'watchlistall2' => 'баары',
-'namespacesall' => 'баары',
+'watchlistall2' => 'баары',
+'namespacesall' => 'баары',
# E-mail address confirmation
'confirmemail' => 'Электрондук даректи ыраÑтоо',
diff --git a/languages/messages/MessagesLa.php b/languages/messages/MessagesLa.php
index ec0ec991..10950154 100644
--- a/languages/messages/MessagesLa.php
+++ b/languages/messages/MessagesLa.php
@@ -67,91 +67,91 @@ $dateFormats = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Redirectiones duplices' ),
+ 'Allmessages' => array( 'Nuntia systematis' ),
+ 'Allpages' => array( 'Paginae omnes', 'Omnes paginae' ),
+ 'Ancientpages' => array( 'Paginae veterrimae' ),
+ 'Blankpage' => array( 'Pagina vacua' ),
+ 'Block' => array( 'Usorem obstruere' ),
+ 'Blockme' => array( 'Usor obstructus' ),
+ 'Booksources' => array( 'Librorum fontes' ),
'BrokenRedirects' => array( 'Redirectiones fractae' ),
- 'Disambiguations' => array( 'Paginae disambiguationis', 'Disambiguationes' ),
- 'Userlogin' => array( 'Conventum aperire' ),
- 'Userlogout' => array( 'Conventum concludere' ),
+ 'Categories' => array( 'Categoriae' ),
+ 'ChangePassword' => array( 'Tesseram novam creare' ),
+ 'Confirmemail' => array( 'Inscriptionem electronicam confirmare' ),
+ 'Contributions' => array( 'Conlationes', 'Conlationes usoris' ),
'CreateAccount' => array( 'Rationem creare' ),
- 'Preferences' => array( 'Praeferentiae' ),
- 'Watchlist' => array( 'Paginae custoditae' ),
- 'Recentchanges' => array( 'Nuper mutata', 'Mutationes recentes' ),
- 'Upload' => array( 'Fasciculos onerare', 'Imagines onerare' ),
+ 'Deadendpages' => array( 'Paginae sine nexu' ),
+ 'DeletedContributions' => array( 'Conlationes deletae', 'Conlationes usoris deletae' ),
+ 'Disambiguations' => array( 'Paginae disambiguationis', 'Disambiguationes' ),
+ 'DoubleRedirects' => array( 'Redirectiones duplices' ),
+ 'Emailuser' => array( 'Litteras electronicas usori mittere', 'Littera electronica' ),
+ 'Export' => array( 'Exportare', 'Paginas exportare' ),
+ 'Fewestrevisions' => array( 'Paginae minime mutatae' ),
+ 'FileDuplicateSearch' => array( 'Quaerere fasciculos duplices', 'Quaerere imagines duplices' ),
+ 'Import' => array( 'Importare', 'Paginas importare' ),
+ 'Invalidateemail' => array( 'Adfimationem inscriptionis electronicae abrogare' ),
+ 'BlockList' => array( 'Usores obstructi' ),
+ 'LinkSearch' => array( 'Quaerere nexus externos' ),
+ 'Listadmins' => array( 'Magistratus' ),
+ 'Listbots' => array( 'Automata' ),
'Listfiles' => array( 'Fasciculi', 'Imagines' ),
- 'Newimages' => array( 'Fasciculi novi', 'Imagines novae' ),
- 'Listusers' => array( 'Usores' ),
'Listgrouprights' => array( 'Gregum usorum potestates', 'Iura gregum' ),
- 'Statistics' => array( 'Census' ),
- 'Randompage' => array( 'Pagina fortuita' ),
+ 'Listredirects' => array( 'Redirectiones' ),
+ 'Listusers' => array( 'Usores' ),
+ 'Lockdb' => array( 'Basem datorum obstruere' ),
+ 'Log' => array( 'Acta' ),
'Lonelypages' => array( 'Paginae non annexae' ),
- 'Uncategorizedpages' => array( 'Paginae sine categoriis' ),
- 'Uncategorizedcategories' => array( 'Categoriae sine categoriis' ),
- 'Uncategorizedimages' => array( 'Fasciculi sine categoriis', 'Imagines sine categoriis' ),
- 'Uncategorizedtemplates' => array( 'Formulae sine categoriis' ),
- 'Unusedcategories' => array( 'Categoriae non in usu', 'Categoriae vacuae' ),
- 'Unusedimages' => array( 'Fasciculi non in usu', 'Imagines non in usu' ),
- 'Wantedpages' => array( 'Paginae desideratae', 'Nexus fracti' ),
- 'Wantedcategories' => array( 'Categoriae desideratae' ),
- 'Wantedfiles' => array( 'Fasciculi desiderati', 'Imagines desideratae' ),
- 'Wantedtemplates' => array( 'Formulae desideratae' ),
+ 'Longpages' => array( 'Paginae longae' ),
+ 'MergeHistory' => array( 'Historias paginarum confundere' ),
+ 'MIMEsearch' => array( 'Quaerere per MIME' ),
+ 'Mostcategories' => array( 'Paginae plurimis categoriis' ),
+ 'Mostimages' => array( 'Fasciculi maxime annexi', 'Imagines maxime annexae' ),
'Mostlinked' => array( 'Paginae maxime annexae' ),
'Mostlinkedcategories' => array( 'Categoriae maxime annexae' ),
'Mostlinkedtemplates' => array( 'Formulae maxime annexae' ),
- 'Mostimages' => array( 'Fasciculi maxime annexi', 'Imagines maxime annexae' ),
- 'Mostcategories' => array( 'Paginae plurimis categoriis' ),
'Mostrevisions' => array( 'Paginae plurimum mutatae' ),
- 'Fewestrevisions' => array( 'Paginae minime mutatae' ),
- 'Shortpages' => array( 'Paginae breves' ),
- 'Longpages' => array( 'Paginae longae' ),
+ 'Movepage' => array( 'Paginam movere', 'Movere' ),
+ 'Mycontributions' => array( 'Conlationes meae' ),
+ 'Mypage' => array( 'Pagina mea' ),
+ 'Mytalk' => array( 'Disputatio mea' ),
+ 'Newimages' => array( 'Fasciculi novi', 'Imagines novae' ),
'Newpages' => array( 'Paginae novae' ),
- 'Ancientpages' => array( 'Paginae veterrimae' ),
- 'Deadendpages' => array( 'Paginae sine nexu' ),
+ 'Popularpages' => array( 'Paginae saepe monstratae' ),
+ 'Preferences' => array( 'Praeferentiae' ),
+ 'Prefixindex' => array( 'Praefixa', 'Quaerere per praefixa' ),
'Protectedpages' => array( 'Paginae protectae' ),
'Protectedtitles' => array( 'Tituli protecti' ),
- 'Allpages' => array( 'Paginae omnes', 'Omnes paginae' ),
- 'Prefixindex' => array( 'Praefixa', 'Quaerere per praefixa' ),
- 'Ipblocklist' => array( 'Usores obstructi' ),
- 'Specialpages' => array( 'Paginae speciales' ),
- 'Contributions' => array( 'Conlationes', 'Conlationes usoris' ),
- 'Emailuser' => array( 'Litteras electronicas usori mittere', 'Littera electronica' ),
- 'Confirmemail' => array( 'Inscriptionem electronicam confirmare' ),
- 'Whatlinkshere' => array( 'Nexus ad paginam' ),
+ 'Randompage' => array( 'Pagina fortuita' ),
+ 'Randomredirect' => array( 'Redirectio fortuita' ),
+ 'Recentchanges' => array( 'Nuper mutata', 'Mutationes recentes' ),
'Recentchangeslinked' => array( 'Nuper mutata annexorum' ),
- 'Movepage' => array( 'Paginam movere', 'Movere' ),
- 'Blockme' => array( 'Usor obstructus' ),
- 'Booksources' => array( 'Librorum fontes' ),
- 'Categories' => array( 'Categoriae' ),
- 'Export' => array( 'Exportare', 'Paginas exportare' ),
- 'Version' => array( 'Versio' ),
- 'Allmessages' => array( 'Nuntia systematis' ),
- 'Log' => array( 'Acta' ),
- 'Blockip' => array( 'Usorem obstruere' ),
+ 'Revisiondelete' => array( 'Emendationem delere' ),
+ 'Search' => array( 'Quaerere' ),
+ 'Shortpages' => array( 'Paginae breves' ),
+ 'Specialpages' => array( 'Paginae speciales' ),
+ 'Statistics' => array( 'Census' ),
+ 'Uncategorizedcategories' => array( 'Categoriae sine categoriis' ),
+ 'Uncategorizedimages' => array( 'Fasciculi sine categoriis', 'Imagines sine categoriis' ),
+ 'Uncategorizedpages' => array( 'Paginae sine categoriis' ),
+ 'Uncategorizedtemplates' => array( 'Formulae sine categoriis' ),
'Undelete' => array( 'Paginam restituere' ),
- 'Import' => array( 'Importare', 'Paginas importare' ),
- 'Lockdb' => array( 'Basem datorum obstruere' ),
'Unlockdb' => array( 'Basem datorum deobstruere' ),
- 'Userrights' => array( 'Usorum potestates', 'Iura usorum' ),
- 'MIMEsearch' => array( 'Quaerere per MIME' ),
- 'FileDuplicateSearch' => array( 'Quaerere fasciculos duplices', 'Quaerere imagines duplices' ),
- 'Unwatchedpages' => array( 'Paginae incustoditae' ),
- 'Listredirects' => array( 'Redirectiones' ),
- 'Revisiondelete' => array( 'Emendationem delere' ),
+ 'Unusedcategories' => array( 'Categoriae non in usu', 'Categoriae vacuae' ),
+ 'Unusedimages' => array( 'Fasciculi non in usu', 'Imagines non in usu' ),
'Unusedtemplates' => array( 'Formulae non in usu' ),
- 'Randomredirect' => array( 'Redirectio fortuita' ),
- 'Mypage' => array( 'Pagina mea' ),
- 'Mytalk' => array( 'Disputatio mea' ),
- 'Mycontributions' => array( 'Conlationes meae' ),
- 'Listadmins' => array( 'Magistratus' ),
- 'Listbots' => array( 'Automata' ),
- 'Popularpages' => array( 'Paginae saepe monstratae' ),
- 'Search' => array( 'Quaerere' ),
- 'Resetpass' => array( 'Tesseram novam creare' ),
+ 'Unwatchedpages' => array( 'Paginae incustoditae' ),
+ 'Upload' => array( 'Fasciculos onerare', 'Imagines onerare' ),
+ 'Userlogin' => array( 'Conventum aperire' ),
+ 'Userlogout' => array( 'Conventum concludere' ),
+ 'Userrights' => array( 'Usorum potestates', 'Iura usorum' ),
+ 'Version' => array( 'Versio' ),
+ 'Wantedcategories' => array( 'Categoriae desideratae' ),
+ 'Wantedfiles' => array( 'Fasciculi desiderati', 'Imagines desideratae' ),
+ 'Wantedpages' => array( 'Paginae desideratae', 'Nexus fracti' ),
+ 'Wantedtemplates' => array( 'Formulae desideratae' ),
+ 'Watchlist' => array( 'Paginae custoditae' ),
+ 'Whatlinkshere' => array( 'Nexus ad paginam' ),
'Withoutinterwiki' => array( 'Paginae sine nexibus ad linguas alias', 'Paginae sine nexibus intervicis' ),
- 'MergeHistory' => array( 'Historias paginarum confundere' ),
- 'Invalidateemail' => array( 'Adfimationem inscriptionis electronicae abrogare' ),
- 'Blankpage' => array( 'Pagina vacua' ),
- 'LinkSearch' => array( 'Quaerere nexus externos' ),
- 'DeletedContributions' => array( 'Conlationes deletae', 'Conlationes usoris deletae' ),
);
$messages = array(
@@ -186,8 +186,8 @@ $messages = array(
'tog-shownumberswatching' => 'Numerum usorum custodientium monstrare',
'tog-oldsig' => 'Subscriptio ad tempus adhibita:',
'tog-fancysig' => 'Subscriptio vicitext (sine nexu automatico)',
-'tog-externaleditor' => 'Utere editore externo semper (pro peritus solo, requirat speciales optiones in calculone. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
-'tog-externaldiff' => 'Utere editore dissimilitudine externa semper (pro peritus solo, requirat speciales optiones in calculone. [http://www.mediawiki.org/wiki/Manial:External_editors More information.])',
+'tog-externaleditor' => 'Utere editore externo semper (pro peritus solo, requirat speciales optiones in calculone. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaldiff' => 'Utere editore dissimilitudine externa semper (pro peritus solo, requirat speciales optiones in calculone. [//www.mediawiki.org/wiki/Manial:External_editors More information.])',
'tog-showjumplinks' => 'Sinere nexus ostendi forma "salire ad" monstrata',
'tog-uselivepreview' => 'Praevisum viventem adhibere (JavaScript)',
'tog-forceeditsummary' => 'Si recensionem non summatim descripsero, me roga si continuare velim',
@@ -321,10 +321,10 @@ $messages = array(
'searcharticle' => 'Ire',
'history' => 'Historia paginae',
'history_short' => 'Historia',
-'info_short' => 'Informatio',
'printableversion' => 'Forma impressibilis',
'permalink' => 'Nexus perpetuus',
'print' => 'Imprimere',
+'view' => 'Legere',
'edit' => 'Recensere',
'create' => 'Creare',
'editthispage' => 'Recensere hanc paginam',
@@ -332,6 +332,7 @@ $messages = array(
'delete' => 'Delere',
'deletethispage' => 'Delere hanc paginam',
'undelete_short' => 'Restituere {{PLURAL:$1|unam emendationem|$1 emendationes}}',
+'viewdeleted_short' => 'Inspicere {{PLURAL:$1|unam emendationem deletam|$1 emendationes deletas}}',
'protect' => 'Protegere',
'protect_change' => 'mutare',
'protectthispage' => 'Protegere hanc paginam',
@@ -408,6 +409,8 @@ Vide [[Special:Version|paginam versionis]].',
'toc' => 'Index',
'showtoc' => 'monstrare',
'hidetoc' => 'celare',
+'collapsible-collapse' => 'Collabi',
+'collapsible-expand' => 'Dilatare',
'thisisdeleted' => 'Videre aut restituere $1?',
'viewdeleted' => 'Visne conspicere $1?',
'restorelink' => '{{PLURAL:$1|unam emendationem deletam|$1 emendationes deletas}}',
@@ -472,7 +475,7 @@ Inquisitio: $2',
'protectedpagetext' => 'Haec pagina protecta est, ut emendationes prohibeantur.',
'viewsourcetext' => 'Fontem videas et exscribeas:',
'protectedinterface' => 'Haec pagina dat textum interfaciei pro logiciali, et est protecta ad vandalismum vetandum.',
-'editinginterface' => "'''Caveat censor:''' Emendas iam paginam quae textum interfaciei logicialem dat. Mutationes vultum {{grammar:genitive|{{SITENAME}}}} omnibus usoribus afficient. In nuntia MediaWiki vertendo, quaesumus te uti [http://translatewiki.net/wiki/Main_Page?setlang=la translatewiki.net].",
+'editinginterface' => "'''Caveat censor:''' Emendas iam paginam quae textum interfaciei logicialem dat. Mutationes vultum {{grammar:genitive|{{SITENAME}}}} omnibus usoribus afficient. In nuntia MediaWiki vertendo, quaesumus te uti [//translatewiki.net/wiki/Main_Page?setlang=la translatewiki.net].",
'sqlhidden' => '(inquisitio SQL celata)',
'namespaceprotected' => "Tibi non licet paginas spatii nominalis '''$1''' recensere.",
'ns-specialprotected' => 'Paginae speciales recenseri non possunt.',
@@ -510,6 +513,7 @@ Noli oblivisci [[Special:Preferences|praeferentias tuas]] apud {{grammar:accusat
'createaccount' => 'Rationem novam creare',
'gotaccount' => "Habesne iam rationem? '''$1'''.",
'gotaccountlink' => 'Conventum aperi',
+'userlogin-resetlink' => 'Tesserae tuae oblitus esne?',
'createaccountmail' => 'ab inscriptione electronica',
'createaccountreason' => 'Causa:',
'badretype' => 'Tesserae quas scripsisti inter se non congruunt.',
@@ -523,7 +527,7 @@ Nomen usoris alium selige.',
'loginsuccess' => "'''Apud {{grammar:accusative|{{SITENAME}}}} agnosceris nomine \"\$1\".'''",
'nosuchuser' => 'Usor "$1" non est.
Confirma orthographiam (cave litteras maiusculas minusculasque), aut [[Special:UserLogin/signup|novam rationem crea]].',
-'nosuchusershort' => 'Usor "<nowiki>$1</nowiki>" non est.
+'nosuchusershort' => 'Usor "$1" non est.
Confirma orthographiam.',
'nouserspecified' => 'Nomen usoris indicare debes.',
'wrongpassword' => 'Tessera quam scripsisti non constat. Conare denuo.',
@@ -551,7 +555,7 @@ Plurimas non licet creare. Ergo, ex hoc loco IP rationes plurimas hodie creari n
Hunc nuntium ignorare potes, si nolis hac ratione uti.',
'loginlanguagelabel' => 'Lingua: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Tesseram mutare',
'resetpass_header' => 'Tesseram rationis mutare',
'oldpassword' => 'Tessera vetus:',
@@ -564,6 +568,12 @@ Hunc nuntium ignorare potes, si nolis hac ratione uti.',
'resetpass-submit-loggedin' => 'Tesseram mutare',
'resetpass-temp-password' => 'Tessera temporaria:',
+# Special:PasswordReset
+'passwordreset-username' => 'Nomen usoris:',
+'passwordreset-email' => 'Inscriptio electronica:',
+'passwordreset-emailelement' => 'Nomen usoris: $1
+Momentarius Tessera: $2',
+
# Edit page toolbar
'bold_sample' => 'Litterae pingues',
'bold_tip' => 'Litterae pingues',
@@ -575,8 +585,6 @@ Hunc nuntium ignorare potes, si nolis hac ratione uti.',
'extlink_tip' => 'Nexus externus (memento praefixi http://)',
'headline_sample' => 'Textus capituli',
'headline_tip' => 'Linea capitalis scalae 2',
-'math_sample' => 'Hic inscribe formulam',
-'math_tip' => 'Formula mathematica (LaTeX)',
'nowiki_sample' => 'Adde textum (sine indiciis)',
'nowiki_tip' => 'Indicia neglige',
'image_sample' => 'Exemplum.jpg',
@@ -653,7 +661,7 @@ Si hic es propter errorem, solum '''Retrorsum''' in navigatro tuo preme.",
Potes [[Special:Search/{{PAGENAME}}|hanc rem in aliis paginis quaerere]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} acta huius paginae videre]
aut [{{fullurl:{{FULLPAGENAME}}|action=edit}} hanc paginam creare]</span>.',
-'userpage-userdoesnotexist' => 'Usor "$1" non est. Visne re vera hanc paginam creare vel recensere?',
+'userpage-userdoesnotexist' => 'Usor "<nowiki>$1</nowiki>" non est. Visne re vera hanc paginam creare vel recensere?',
'updated' => '(Novata)',
'note' => "'''Nota:'''",
'previewnote' => "'''Memento hanc paginam solum praevisum esse, neque iam servatam!'''",
@@ -881,7 +889,6 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
'changepassword' => 'Tesseram mutare',
'prefs-skin' => 'Aspectum',
'skin-preview' => 'Praevisum',
-'prefs-math' => 'Interpretatio artis mathematicae',
'datedefault' => 'Nullum praeferentiae',
'prefs-datetime' => 'Dies et tempus',
'prefs-personal' => 'Minutiae rationis',
@@ -903,8 +910,6 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
'columns' => 'Columnae:',
'searchresultshead' => 'Figuratio eventorum investigationis',
'resultsperpage' => 'Eventus per paginam:',
-'contextlines' => 'Lineae per eventum:',
-'contextchars' => 'Litterae contexti per lineam:',
'recentchangesdays' => 'Quot dies in nuper mutatis monstrandi:',
'recentchangescount' => 'Quantum rerum in nuper mutatis, historiis et actis:',
'savedprefs' => 'Praeferentiae tuae servatae sunt.',
@@ -952,8 +957,8 @@ Conare praefixare tua inquisitionem cum ''all:'' ut quaeras contenta omnia (pagi
'email' => 'Litterae electronicae',
'prefs-help-realname' => 'Nomen verum non necesse est.
Si vis id dare, opera tua tibi ascribentur.',
-'prefs-help-email' => 'Inscriptio electronica non necesse est, sed sinit tesseram novam tibi mitti si eae oblitus es.
-Si vis, sinit etiam aliis tecum loqui per tuam paginam usoris vel disputationis, nisi te reveles.',
+'prefs-help-email' => 'Inscriptio electronica non necesse est, sed sinit tesseram novam tibi mitti si eae oblitus es.',
+'prefs-help-email-others' => 'Si vis, sinit etiam aliis tecum loqui per tuam paginam usoris vel disputationis, nisi te reveles.',
'prefs-help-email-required' => 'Inscriptio electronica necesse est.',
'prefs-info' => 'Informatio basica',
'prefs-i18n' => 'Internationalizatio',
@@ -1158,10 +1163,6 @@ Vide etiam [[Special:NewFiles|pinacothecam fasciculorum recentissimorum imposito
'destfilename' => 'Nomen fasciculi petitum:',
'upload-maxfilesize' => 'Maxima fasciculi magnitudo: $1',
'watchthisupload' => 'Custodire hunc fasciculum',
-'upload-wasdeleted' => "'''Cave: fasciculum qui antea iam deletus est impones.'''
-
-Tibi oportet meditari utrum hunc fasciculum iterum imponere tamen convenit.
-Commodule notatio fasciculorum deletorum hic datur:",
'upload-success-subj' => 'Impositum est perfectum',
'upload-proto-error' => 'Protocollum incorrectum',
@@ -1205,7 +1206,6 @@ Commodule notatio fasciculorum deletorum hic datur:",
'linkstoimage' => '{{PLURAL:$1|Haec pagina ad hunc fasciculum nectit:|Paginae sequentes ad hunc fasciculum nectunt:}}',
'nolinkstoimage' => 'Nullae paginae ad hunc fasciculum nectunt.',
'morelinkstoimage' => 'Videre [[Special:WhatLinksHere/$1|plures nexus]] ad hunc fasciculum.',
-'redirectstofile' => '{{PLURAL:$1|Fasciculus sequens ad hunc fasciculum redirigit:|Hae $1 fasciculi sequentes ad hunc fasciculum redirigunt:}}',
'sharedupload' => 'Hic fasciculus apud {{grammar:accusative|$1}} iacet; in aliis inceptis adhiberi potest.',
'sharedupload-desc-there' => 'Hic fasciculus apud {{grammar:accusative|$1}} iacet; in aliis inceptis adhiberi potest.
Vide [$2 paginam descriptionis fasciculi].',
@@ -1284,7 +1284,7 @@ Contenta [$2 paginae descriptionis fasciculi] subter monstrantur.',
'statistics-users-active-desc' => 'Usores qui {{PLURAL:$1|proxima die|proximis $1 diebus}} actionem perfecerunt',
'statistics-mostpopular' => 'Paginae plurimum visae',
-'disambiguations' => 'Paginae disambiguationis',
+'disambiguations' => 'Paginae quae ad paginas discretivas nectunt',
'disambiguationspage' => 'Template:Discretiva',
'disambiguations-text' => "Paginae subter ad '''paginam discretivam''' nectunt.
Eae ad aptas paginas magis nectendae sunt.<br />
@@ -1474,11 +1474,9 @@ Inscriptio electronica quam in [[Special:Preferences|praeferentiis tuis]] dedis
'watchlistanontext' => 'Necesse est $1 ad indicem paginarum custoditarum inspiciendum vel recensendum.',
'watchnologin' => 'Conventum non est apertum',
'watchnologintext' => '[[Special:UserLogin|Conventum aperire]] debes ut indicem paginarum custoditarum mutes.',
-'addedwatch' => 'Pagina custodita',
'addedwatchtext' => "Pagina \"[[:\$1]]\" in [[Special:Watchlist|paginas tuas custoditas]] addita est. Mutationes posthac huic paginae et paginae disputationis ibi notabuntur, et pagina '''litteris pinguibus''' apparebit in [[Special:RecentChanges|nuper mutatorum]] indice, ut sit facilius electu.
Si paginam ex indice paginarum custoditarum removere vis, imprime \"decustodire\" ab summa pagina.",
-'removedwatch' => 'Non iam custodita',
'removedwatchtext' => 'Pagina "[[:$1]]" ex [[Special:Watchlist|indice paginarum custoditarum]] remota est.',
'watch' => 'Custodire',
'watchthispage' => 'Custodire hanc paginam',
@@ -1528,10 +1526,10 @@ You could also reset the notification flags for all your watched pages on your w
--
To change your watchlist settings, visit
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Feedback and further assistance:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Delere paginam',
@@ -1547,7 +1545,7 @@ Feedback and further assistance:
Adfirma quaesumus te paginam re vera delere velle, te consequentias intellere, et actionem tuam [[{{MediaWiki:Policy-url}}|consilio]] congruere.',
'actioncomplete' => 'Actum perfectum',
'actionfailed' => 'Actum non feliciter evenit',
-'deletedtext' => '"<nowiki>$1</nowiki>" deletum est. Vide $2 pro indice deletionum recentum.',
+'deletedtext' => '"$1" deletum est. Vide $2 pro indice deletionum recentum.',
'deletedarticle' => 'delevit "[[$1]]"',
'suppressedarticle' => 'supprimit "[[$1]]"',
'dellogpage' => 'Index deletionum',
@@ -1590,7 +1588,7 @@ ad emendationem proximam ab $2.',
'protectexpiry' => 'Exitus:',
'protect_expiry_invalid' => 'Tempus post quod res exitur est invalidum.',
'protect_expiry_old' => 'Tempus est praeteritus.',
-'protect-text' => "Hic tibi licet protectiones legere et mutare paginae '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Hic tibi licet protectiones legere et mutare paginae '''$1'''.",
'protect-locked-access' => "Tibi non licet protectionem paginarum mutare.
Ecce protectiones paginae '''$1''':",
'protect-cascadeon' => 'Hanc paginam, in {{PLURAL:$1|pagina seriatim protecta|paginis seriatim protectis}} inclusam, potes deprotegere; manebit autem protectio serialis.',
@@ -1704,15 +1702,14 @@ Si pagina nova cum ipso nomine post deletionem creata est, emendationes restitut
'whatlinkshere-filters' => 'Filtra',
# Block/unblock
-'blockip' => 'Usorem obstruere',
-'blockip-legend' => 'Usorem vel locum IP obstruere',
-'blockiptext' => 'Forma infera utere ut quendam usorem vel locum IP obstruas ne plus scribere potest. Hoc non nisi secundum [[{{MediaWiki:Policy-url}}|consilium]] fieri potest. Rationem certam subscribe (exempli gratia titulos paginarum quas iste usor modo vandalorum recensuit).',
-'ipaddress' => 'Locus IP:',
-'ipadressorusername' => 'Locus IP aut nomen usoris:',
-'ipbexpiry' => 'Exitus:',
-'ipbreason' => 'Causa:',
-'ipbreasonotherlist' => 'Causa alia',
-'ipbreason-dropdown' => '*Rationes crebriter adductae
+'blockip' => 'Usorem obstruere',
+'blockip-legend' => 'Usorem vel locum IP obstruere',
+'blockiptext' => 'Forma infera utere ut quendam usorem vel locum IP obstruas ne plus scribere potest. Hoc non nisi secundum [[{{MediaWiki:Policy-url}}|consilium]] fieri potest. Rationem certam subscribe (exempli gratia titulos paginarum quas iste usor modo vandalorum recensuit).',
+'ipadressorusername' => 'Locus IP aut nomen usoris:',
+'ipbexpiry' => 'Exitus:',
+'ipbreason' => 'Causa:',
+'ipbreasonotherlist' => 'Causa alia',
+'ipbreason-dropdown' => '*Rationes crebriter adductae
** Ob scripta falsa
** Ob textum remotum
** Ob nexus externos multiplicatos
@@ -1720,75 +1717,67 @@ Si pagina nova cum ipso nomine post deletionem creata est, emendationes restitut
** Ob scripta inurbana
** Ob rationes perniciose multiplicatas
** Ob nomen inurbanum sive inconveniens',
-'ipbanononly' => 'Solum usores anonymi obstruere',
-'ipbcreateaccount' => 'Creationem rationum obstruere',
-'ipbemailban' => 'Litteras electronicas vetare',
-'ipbsubmit' => 'Obstruere hunc locum',
-'ipbother' => 'Exitus alius:',
-'ipboptions' => '2 horas:2 hours,1 diem:1 day,3 dies:3 days,1 hebdomadem:1 week,2 hebdomades:2 weeks,1 mensem:1 month,3 menses:3 months,6 menses:6 months,1 annum:1 year,infinite:infinite',
-'ipbotheroption' => 'alius',
-'ipbotherreason' => 'Causa alia vel explicatio:',
-'ipbwatchuser' => 'Paginam usoris disputationisque huius usoris custodire',
-'ipballowusertalk' => 'Sinere hunc usorem, quamquam obstructus est, suam disputationis paginam recensere',
-'ipb-change-block' => 'Obstructionem usoris modificare',
-'badipaddress' => 'Locus IP male formatus',
-'blockipsuccesssub' => 'Locus prospere obstructus est',
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] obstructus est.
+'ipbcreateaccount' => 'Creationem rationum obstruere',
+'ipbemailban' => 'Litteras electronicas vetare',
+'ipbsubmit' => 'Obstruere hunc locum',
+'ipbother' => 'Exitus alius:',
+'ipboptions' => '2 horas:2 hours,1 diem:1 day,3 dies:3 days,1 hebdomadem:1 week,2 hebdomades:2 weeks,1 mensem:1 month,3 menses:3 months,6 menses:6 months,1 annum:1 year,infinite:infinite',
+'ipbotheroption' => 'alius',
+'ipbotherreason' => 'Causa alia vel explicatio:',
+'ipbwatchuser' => 'Paginam usoris disputationisque huius usoris custodire',
+'ipb-change-block' => 'Obstructionem usoris modificare',
+'badipaddress' => 'Locus IP male formatus',
+'blockipsuccesssub' => 'Locus prospere obstructus est',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] obstructus est.
<br />Vide [[Special:IPBlockList|indicem usorum obstructorum]] ut obstructos revideas.',
-'ipb-edit-dropdown' => 'Causas obstructionum recensere',
-'ipb-unblock-addr' => 'Deobstruere $1',
-'ipb-unblock' => 'Deobstruere nomen usoris vel locum IP',
-'ipb-blocklist-contribs' => 'Conlationes usoris $1',
-'unblockip' => 'Deobstruere locum IP',
-'unblockiptext' => 'Formam inferam usere ut locum IP deobstruere.',
-'ipusubmit' => 'Hanc obstructionem removere',
-'unblocked' => '[[User:$1|$1]] deobstructus est',
-'unblocked-id' => 'Obstructio numeri $1 abrogata est',
-'ipblocklist' => 'Usores obstructi',
-'ipblocklist-legend' => 'Usorem obstructum quaerere',
-'ipblocklist-username' => 'Nomen usoris vel locus IP:',
-'ipblocklist-sh-userblocks' => '$1 obstructiones rationum',
-'ipblocklist-sh-tempblocks' => '$1 obstructiones temporarias',
-'ipblocklist-sh-addressblocks' => '$1 obstructiones locorum IP singulorum',
-'ipblocklist-submit' => 'Quaerere',
-'blocklistline' => '$1, $2 obstruxit $3 (exire $4)',
-'infiniteblock' => 'infinita',
-'expiringblock' => 'exit $2, $1',
-'anononlyblock' => 'solum usores ignoti',
-'noautoblockblock' => 'obstructio automatica prohibita',
-'createaccountblock' => 'Creatio rationum obstructa',
-'emailblock' => 'Litterae electronicae obstructae',
-'blocklist-nousertalk' => 'non potest paginam disputationis suam recensere',
-'blocklink' => 'obstruere',
-'unblocklink' => 'deobstruere',
-'change-blocklink' => 'protectionem mutare',
-'contribslink' => 'conlationes',
-'autoblocker' => 'Obstructus es automatice quia "[[User:$1|$1]]" nuper tuum locum IP adhibuit. Ratio data ob obstructionem usoris $1 est: "$2"',
-'blocklogpage' => 'Index obstructionum',
-'blocklog-showlog' => 'Hic usor antea obstructus est.
+'ipb-edit-dropdown' => 'Causas obstructionum recensere',
+'ipb-unblock-addr' => 'Deobstruere $1',
+'ipb-unblock' => 'Deobstruere nomen usoris vel locum IP',
+'ipb-blocklist-contribs' => 'Conlationes usoris $1',
+'unblockip' => 'Deobstruere locum IP',
+'unblockiptext' => 'Formam inferam usere ut locum IP deobstruere.',
+'ipusubmit' => 'Hanc obstructionem removere',
+'unblocked' => '[[User:$1|$1]] deobstructus est',
+'unblocked-id' => 'Obstructio numeri $1 abrogata est',
+'ipblocklist' => 'Usores obstructi',
+'ipblocklist-legend' => 'Usorem obstructum quaerere',
+'ipblocklist-submit' => 'Quaerere',
+'infiniteblock' => 'infinita',
+'expiringblock' => 'exit $2, $1',
+'anononlyblock' => 'solum usores ignoti',
+'noautoblockblock' => 'obstructio automatica prohibita',
+'createaccountblock' => 'Creatio rationum obstructa',
+'emailblock' => 'Litterae electronicae obstructae',
+'blocklist-nousertalk' => 'non potest paginam disputationis suam recensere',
+'blocklink' => 'obstruere',
+'unblocklink' => 'deobstruere',
+'change-blocklink' => 'protectionem mutare',
+'contribslink' => 'conlationes',
+'autoblocker' => 'Obstructus es automatice quia "[[User:$1|$1]]" nuper tuum locum IP adhibuit. Ratio data ob obstructionem usoris $1 est: "$2"',
+'blocklogpage' => 'Index obstructionum',
+'blocklog-showlog' => 'Hic usor antea obstructus est.
Commodule notatio obstructionum subter datur.',
-'blocklog-showsuppresslog' => 'Hic usor antea obstructus est celatus est.
+'blocklog-showsuppresslog' => 'Hic usor antea obstructus est celatus est.
Commodule notatio obstructionum subter datur.',
-'blocklogentry' => 'obstruxit [[$1]], exire $2 $3',
-'reblock-logentry' => 'modificavit obstructionem usoris [[$1]], exire $2 $3',
-'blocklogtext' => 'Hic est index actorum obstructionis deobstructionisque. Loci IP qui automatice obstructi sunt non enumerantur. Vide [[Special:IPBlockList|indicem usorum locorumque IP obstructorum]] pro indice toto.',
-'unblocklogentry' => 'deobstruxit $1',
-'block-log-flags-anononly' => 'solum usores anonymi',
-'block-log-flags-nocreate' => 'creatio rationum prohibita',
-'block-log-flags-noautoblock' => 'obstructio automatica prohibita',
-'block-log-flags-noemail' => 'Litterae electronicae obstructae',
-'block-log-flags-nousertalk' => 'non potest paginam disputationis suam recensere',
-'block-log-flags-hiddenname' => 'nomen usoris celatum',
-'ipb_expiry_invalid' => 'Tempus exeundo invalidum fuit.',
-'ipb_already_blocked' => '"$1" iam obstructus est',
-'ipb-needreblock' => '== Iam obstructus ==
-$1 iam obstructus est. Visne obstructionem modificare?',
-'ip_range_invalid' => 'Latitudo IP irrita.',
-'blockme' => 'Usor obstructus',
-'proxyblocker' => 'Instrumentum obstructionis moderatorum',
-'proxyblocker-disabled' => 'Haec functio prohibita est.',
-'proxyblocksuccess' => 'Factum.',
-'cant-block-while-blocked' => 'Dum obstructus es, non potes usores alios obstruere.',
+'blocklogentry' => 'obstruxit [[$1]], exire $2 $3',
+'reblock-logentry' => 'modificavit obstructionem usoris [[$1]], exire $2 $3',
+'blocklogtext' => 'Hic est index actorum obstructionis deobstructionisque. Loci IP qui automatice obstructi sunt non enumerantur. Vide [[Special:BlockList|indicem usorum locorumque IP obstructorum]] pro indice toto.',
+'unblocklogentry' => 'deobstruxit $1',
+'block-log-flags-anononly' => 'solum usores anonymi',
+'block-log-flags-nocreate' => 'creatio rationum prohibita',
+'block-log-flags-noautoblock' => 'obstructio automatica prohibita',
+'block-log-flags-noemail' => 'Litterae electronicae obstructae',
+'block-log-flags-nousertalk' => 'non potest paginam disputationis suam recensere',
+'block-log-flags-hiddenname' => 'nomen usoris celatum',
+'ipb_expiry_invalid' => 'Tempus exeundo invalidum fuit.',
+'ipb_already_blocked' => '"$1" iam obstructus est',
+'ipb-needreblock' => '$1 iam obstructus est. Visne obstructionem modificare?',
+'ip_range_invalid' => 'Latitudo IP irrita.',
+'blockme' => 'Usor obstructus',
+'proxyblocker' => 'Instrumentum obstructionis moderatorum',
+'proxyblocker-disabled' => 'Haec functio prohibita est.',
+'proxyblocksuccess' => 'Factum.',
+'cant-block-while-blocked' => 'Dum obstructus es, non potes usores alios obstruere.',
# Developer tools
'lockdb' => 'Basem datorum obstruere',
@@ -1991,31 +1980,10 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
'siteusers' => '{{PLURAL:$2|usor|usores}} {{grammar:genitive|{{SITENAME}}}} $1',
'creditspage' => 'Auctores paginae',
-# Info page
-'numedits' => 'Numerus recensionum (pagina): $1',
-'numtalkedits' => 'Numerus recensionum (pagina disputationis): $1',
-'numauthors' => 'Numerus auctorum discretorum (pagina): $1',
-'numtalkauthors' => 'Numerus auctorum discretorum (pagina disputationis): $1',
-
# Skin names
'skinname-standard' => 'Norma',
'skinname-cologneblue' => 'Caerulus Colonia',
-# Math options
-'mw_math_png' => 'Semper vertere PNG',
-'mw_math_simple' => 'HTML si admodum simplex, alioqui PNG',
-'mw_math_html' => 'HTML si fieri potest, alioqui PNG',
-'mw_math_source' => 'Stet ut TeX (pro navigatri texti)',
-'mw_math_modern' => 'Commendatum pro navigatri recentes',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'Excutare non potest',
-'math_unknown_error' => 'error ignotus',
-'math_unknown_function' => 'functio ignota',
-'math_lexing_error' => 'erratum lexicale',
-'math_syntax_error' => 'erratum syntaxis',
-
# Patrolling
'markaspatrolleddiff' => 'Indicare hanc paginam qua circumita',
'markaspatrolledtext' => 'Indicare hanc paginam qua circumita',
@@ -2044,7 +2012,6 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
'file-nohires' => '<small>Nulla maior resolutio exstat.</small>',
'svg-long-desc' => 'fasciculus SVG, nominale $1 × $2 elementa imaginalia, magnitudo fasciculi: $3',
'show-big-image' => 'Resolutio completa',
-'show-big-image-thumb' => '<small>Mensura huius praevisi: pixellae $1 × $2</small>',
'file-info-gif-frames' => '$1 {{PLURAL:$1|replum|repla}}',
# Special:NewFiles
@@ -2076,9 +2043,7 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
'exif-ycbcrpositioning' => 'situatio Y et C',
'exif-xresolution' => 'Resolutio horizontalis',
'exif-yresolution' => 'Resolutio verticalis',
-'exif-resolutionunit' => 'Unitum resolutionis X et Y',
'exif-jpeginterchangeformatlength' => 'Chiliocteti datorum JPEG',
-'exif-transferfunction' => 'Functio transferentiae',
'exif-whitepoint' => 'Chromaticitas puncti albi',
'exif-primarychromaticities' => 'Chromaticitates primariae',
'exif-imagedescription' => 'Descriptio imaginis',
@@ -2096,7 +2061,6 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
'exif-fnumber' => 'Numerus F',
'exif-exposureprogram' => 'Programma expositionis',
'exif-spectralsensitivity' => 'Sensitivitas spectralis',
-'exif-oecf' => 'Factor conversionis optico-electronicae',
'exif-shutterspeedvalue' => 'Celeritas foriculae APEX',
'exif-aperturevalue' => 'Apertura APEX',
'exif-brightnessvalue' => 'Luminositas APEX',
@@ -2113,7 +2077,6 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
'exif-sensingmethod' => 'Methodus sensationis',
'exif-filesource' => 'Fons fasciculi',
'exif-scenetype' => 'Typus scaenae',
-'exif-cfapattern' => 'exemplar CFA',
'exif-exposuremode' => 'Modus expositionis',
'exif-whitebalance' => 'Compensatio Alba',
'exif-gaincontrol' => 'Censura campi',
@@ -2245,20 +2208,23 @@ Paginae nomen petitum "[[:$1]]" iam existit. Vin tu eam delere ut pagina illic m
'exif-gpsspeed-m' => 'Milia per horam',
'exif-gpsspeed-n' => 'Nodi',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometra',
+'exif-gpsdestdistance-m' => 'Milia',
+'exif-gpsdestdistance-n' => 'Milia nautica',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Directio vera',
'exif-gpsdirection-m' => 'Directio magnetica',
# External editor support
'edit-externally' => 'Hunc fasciculum in programmate externali recensere',
-'edit-externally-help' => '(Vide et [http://www.mediawiki.org/wiki/Manual:External_editors paginas adiutorias] programmatis externalis)',
+'edit-externally-help' => '(Vide et [//www.mediawiki.org/wiki/Manual:External_editors paginas adiutorias] programmatis externalis)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'omnes',
-'imagelistall' => 'omnes',
-'watchlistall2' => 'omnes',
-'namespacesall' => 'omnia',
-'monthsall' => 'omnes',
+'watchlistall2' => 'omnes',
+'namespacesall' => 'omnia',
+'monthsall' => 'omnes',
# E-mail address confirmation
'confirmemail' => 'Inscriptionem electronicam adfirmare',
@@ -2354,21 +2320,20 @@ Quaesumus, adfirma ut iterum hanc paginam crees.",
'watchlisttools-raw' => 'Indicem paginarum custoditarum quasi textum recensere',
# Special:Version
-'version' => 'Versio',
-'version-specialpages' => 'Paginae speciales',
-'version-parserhooks' => 'Extensiones programmatis analysis lexicalis',
-'version-variables' => 'Variabilia',
-'version-other' => 'Alia',
-'version-hooks' => 'Extensiones',
-'version-extension-functions' => 'Functiones extensionum',
-'version-parser-function-hooks' => 'Extensiones functionum programmatis analysis lexicalis',
-'version-skin-extension-functions' => 'Functiones extensionis cutis',
-'version-hook-name' => 'Nomen extensionis',
-'version-hook-subscribedby' => 'Subscriptum ab',
-'version-version' => '(Versio $1)',
-'version-license' => 'Permissio',
-'version-software-product' => 'Productum',
-'version-software-version' => 'Versio',
+'version' => 'Versio',
+'version-specialpages' => 'Paginae speciales',
+'version-parserhooks' => 'Extensiones programmatis analysis lexicalis',
+'version-variables' => 'Variabilia',
+'version-other' => 'Alia',
+'version-hooks' => 'Extensiones',
+'version-extension-functions' => 'Functiones extensionum',
+'version-parser-function-hooks' => 'Extensiones functionum programmatis analysis lexicalis',
+'version-hook-name' => 'Nomen extensionis',
+'version-hook-subscribedby' => 'Subscriptum ab',
+'version-version' => '(Versio $1)',
+'version-license' => 'Permissio',
+'version-software-product' => 'Productum',
+'version-software-version' => 'Versio',
# Special:FilePath
'filepath' => 'Fasciculorum inscriptio',
diff --git a/languages/messages/MessagesLad.php b/languages/messages/MessagesLad.php
index 38de12a6..2b430013 100644
--- a/languages/messages/MessagesLad.php
+++ b/languages/messages/MessagesLad.php
@@ -28,8 +28,8 @@ $namespaceNames = array(
NS_FILE_TALK => 'Diskusyón_de_Dosya',
NS_MEDIAWIKI => 'MedyaViki',
NS_MEDIAWIKI_TALK => 'Diskusyón_de_MedyaViki',
- NS_TEMPLATE => 'Xabblón',
- NS_TEMPLATE_TALK => 'Diskusyón_de_Xabblón',
+ NS_TEMPLATE => 'Xablón',
+ NS_TEMPLATE_TALK => 'Diskusyón_de_Xablón',
NS_HELP => 'Ayudo',
NS_HELP_TALK => 'Diskusyón_de_Ayudo',
NS_CATEGORY => 'Katēggoría',
@@ -61,6 +61,8 @@ $namespaceAliases = array(
'Dossia' => NS_FILE,
'Diskussión_de_Dossia' => NS_FILE_TALK,
'Diskussión_de_Xabblón' => NS_MEDIAWIKI_TALK,
+ 'Xabblón' => NS_TEMPLATE,
+ 'Diskusyón_de_Xabblón' => NS_TEMPLATE_TALK,
'Plantilla_Discusión' => NS_TEMPLATE_TALK,
'Diskussión_de_Ayudo' => NS_HELP_TALK,
'Kateggoría' => NS_CATEGORY,
@@ -68,97 +70,102 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'DireksyonesDobles' ),
- 'BrokenRedirects' => array( 'DireksyonesBozeadas' ),
- 'Disambiguations' => array( 'Apartamiento_de_senso' ),
- 'Userlogin' => array( 'Entrada_del_usador' ),
- 'Userlogout' => array( 'Salida_del_usador' ),
- 'CreateAccount' => array( 'CriarCuento' ),
- 'Preferences' => array( 'Preferencias' ),
- 'Watchlist' => array( 'Lista_de_escogidos' ),
- 'Recentchanges' => array( 'TrocamientosFreskos' ),
- 'Upload' => array( 'CargarDosya' ),
- 'Listfiles' => array( 'ListaDosyas' ),
- 'Newimages' => array( 'NuevasDosyas' ),
- 'Listusers' => array( 'ListaUsadores' ),
- 'Listgrouprights' => array( 'DerechosGruposUsadores' ),
- 'Statistics' => array( 'Estatistika' ),
- 'Randompage' => array( 'KualunkeHoja' ),
- 'Lonelypages' => array( 'HojasHuérfanas' ),
- 'Uncategorizedpages' => array( 'HojasNoKateggorizadas' ),
- 'Uncategorizedcategories' => array( 'KateggoríasNoKateggorizadas' ),
- 'Uncategorizedimages' => array( 'DosyasNoKateggorizadas' ),
- 'Uncategorizedtemplates' => array( 'XabblonesNoKateggorizados' ),
- 'Unusedcategories' => array( 'KateggoríasSinUso' ),
- 'Unusedimages' => array( 'DosyasSinUso' ),
- 'Wantedpages' => array( 'HojasDemandadas' ),
- 'Wantedcategories' => array( 'KateggoríasDemandadas' ),
- 'Wantedfiles' => array( 'DosyasDemandadas' ),
- 'Wantedtemplates' => array( 'XabblonesDemandados' ),
- 'Mostlinked' => array( 'HojasLoMásMunchoLinkeadas' ),
- 'Mostlinkedcategories' => array( 'KateggoríasMásUsadas' ),
- 'Mostlinkedtemplates' => array( 'XabblonesMásUsados' ),
- 'Mostimages' => array( 'DosyasLoMásMunchoLinkeadas' ),
- 'Mostcategories' => array( 'MásKateggorizadas' ),
- 'Mostrevisions' => array( 'MásEddisyones' ),
- 'Fewestrevisions' => array( 'MancoEddisyones' ),
- 'Shortpages' => array( 'HojasCurtas' ),
- 'Longpages' => array( 'HojasLargas' ),
- 'Newpages' => array( 'HojasNuevas' ),
- 'Ancientpages' => array( 'HojasViejas' ),
- 'Deadendpages' => array( 'HojasSinLinkes' ),
- 'Protectedpages' => array( 'HojasGuardadas' ),
- 'Protectedtitles' => array( 'TítůlosGuardados' ),
+ 'Activeusers' => array( 'UsadoresAktivos' ),
+ 'Allmessages' => array( 'TodosLosMessajes' ),
'Allpages' => array( 'TodasLasHojas' ),
- 'Prefixindex' => array( 'Fijhrist_de_prefiksos' ),
- 'Ipblocklist' => array( 'UsadoresBloqueados' ),
- 'Unblock' => array( 'Desbloquea' ),
- 'Specialpages' => array( 'HojasEspeciales' ),
- 'Contributions' => array( 'Ajustamientos' ),
- 'Emailuser' => array( 'MandarEmailUsador' ),
- 'Confirmemail' => array( 'AverdadearEmail' ),
- 'Whatlinkshere' => array( 'LoQueLinkeaAquí' ),
- 'Recentchangeslinked' => array( 'TrocamientosEnterassados' ),
- 'Movepage' => array( 'TashirearHoja' ),
+ 'Ancientpages' => array( 'HojasViejas' ),
+ 'Blankpage' => array( 'VaziarHoja' ),
+ 'Block' => array( 'Bloquear' ),
'Blockme' => array( 'Bloquearme' ),
- 'Booksources' => array( 'FuentesDeLibros' ),
- 'Categories' => array( 'Kateggorías' ),
+ 'Booksources' => array( 'FuentesDeLivros' ),
+ 'BrokenRedirects' => array( 'DireksionesBozeadas' ),
+ 'Categories' => array( 'Katēggorías' ),
+ 'ChangePassword' => array( 'TrocarKóddiche' ),
+ 'ComparePages' => array( 'KompararHojas' ),
+ 'Confirmemail' => array( 'AverdadearLetral' ),
+ 'Contributions' => array( 'Àjustamientos' ),
+ 'CreateAccount' => array( 'KrîarCuento' ),
+ 'Deadendpages' => array( 'HojasSinAtamientos' ),
+ 'DeletedContributions' => array( 'AjustamientosEfassados' ),
+ 'Disambiguations' => array( 'Apartamiento_de_senso' ),
+ 'DoubleRedirects' => array( 'DireksionesDobles' ),
+ 'EditWatchlist' => array( 'TrocarLista_de_Akavidamiento' ),
+ 'Emailuser' => array( 'MandarLetralUsador' ),
'Export' => array( 'AktarearAfuera' ),
- 'Version' => array( 'Versión' ),
- 'Allmessages' => array( 'TodosLosMessajes' ),
- 'Log' => array( 'RÄ“jistro' ),
- 'Blockip' => array( 'Bloquear' ),
- 'Undelete' => array( 'TraerAtrás' ),
+ 'Fewestrevisions' => array( 'MankoEddisyones' ),
+ 'FileDuplicateSearch' => array( 'BuscarDosyasDobles' ),
+ 'Filepath' => array( 'Pozisyón_de_dosya' ),
'Import' => array( 'AktarearAriento' ),
+ 'Invalidateemail' => array( 'DesverdadearLetral' ),
+ 'BlockList' => array( 'UsadoresBloqueados' ),
+ 'LinkSearch' => array( 'Busqueda_de_atamientos' ),
+ 'Listadmins' => array( 'ListaDeAdministradores' ),
+ 'Listbots' => array( 'ListaDeBotes' ),
+ 'Listfiles' => array( 'ListaDosyas' ),
+ 'Listgrouprights' => array( 'DerechosGruposUsadores' ),
+ 'Listredirects' => array( 'TodasLasDireksyones' ),
+ 'Listusers' => array( 'ListaUsadores' ),
'Lockdb' => array( 'BloquearBasa_de_dados' ),
- 'Unlockdb' => array( 'DesbloquearBasa_de_dados' ),
- 'Userrights' => array( 'DerechosUsadores' ),
+ 'Log' => array( 'RÄ“jistro' ),
+ 'Lonelypages' => array( 'HojasHuérfanas' ),
+ 'Longpages' => array( 'HojasLargas' ),
+ 'MergeHistory' => array( 'ÀjuntarÎstoria' ),
'MIMEsearch' => array( 'BuscarPorMIME' ),
- 'FileDuplicateSearch' => array( 'BuscarDosyasDobles' ),
- 'Unwatchedpages' => array( 'HojasSinCudiadas' ),
- 'Listredirects' => array( 'TodasLasDireksyones' ),
- 'Revisiondelete' => array( 'EfassarRēvizyón' ),
- 'Unusedtemplates' => array( 'XabblonesSinUso' ),
- 'Randomredirect' => array( 'KualunkeDireksyón' ),
+ 'Mostcategories' => array( 'MásKateggorizadas' ),
+ 'Mostimages' => array( 'DosyasLoMásMunchoLinkeadas' ),
+ 'Mostlinked' => array( 'HojasLoMásMunchoLinkeadas' ),
+ 'Mostlinkedcategories' => array( 'KatēggoríasMásUsadas' ),
+ 'Mostlinkedtemplates' => array( 'XablonesMásUsados' ),
+ 'Mostrevisions' => array( 'MásEddisyones' ),
+ 'Movepage' => array( 'TaxirearHoja' ),
+ 'Mycontributions' => array( 'MisÀjustamientos' ),
'Mypage' => array( 'MiHoja' ),
'Mytalk' => array( 'MiDiskusyón' ),
- 'Mycontributions' => array( 'MisAjustamientos' ),
- 'Listadmins' => array( 'ListaDeAdministradores' ),
- 'Listbots' => array( 'ListaDeBots' ),
+ 'Myuploads' => array( 'MisCargamientos' ),
+ 'Newimages' => array( 'MuevasDosyas' ),
+ 'Newpages' => array( 'HojasMuevas' ),
+ 'PasswordReset' => array( 'Meter_á_zero_el_kóddiche' ),
+ 'PermanentLink' => array( 'AtamientoPermanente' ),
'Popularpages' => array( 'HojasMásVisitadas' ),
+ 'Preferences' => array( 'Preferencias' ),
+ 'Prefixindex' => array( 'Fijhrist_de_prefiksos' ),
+ 'Protectedpages' => array( 'HojasGuardadas' ),
+ 'Protectedtitles' => array( 'TítůlosGuardados' ),
+ 'Randompage' => array( 'KualunkeHoja' ),
+ 'Randomredirect' => array( 'KualunkeDireksyón' ),
+ 'Recentchanges' => array( 'TrokamientosFreskos' ),
+ 'Recentchangeslinked' => array( 'TrokamientosÈnterassados' ),
+ 'Revisiondelete' => array( 'EfassarRēvizyón' ),
+ 'RevisionMove' => array( 'TaxireaRēvizyón' ),
'Search' => array( 'Buscar' ),
- 'Resetpass' => array( 'TrocarKóddiche' ),
+ 'Shortpages' => array( 'HojasKurtas' ),
+ 'Specialpages' => array( 'HojasEspesyales' ),
+ 'Statistics' => array( 'Estatistika' ),
+ 'Tags' => array( 'Etiketas' ),
+ 'Unblock' => array( 'Desblokea' ),
+ 'Uncategorizedcategories' => array( 'KatēggoríasNoKateggorizadas' ),
+ 'Uncategorizedimages' => array( 'DosyasNoKateggorizadas' ),
+ 'Uncategorizedpages' => array( 'HojasNoKateggorizadas' ),
+ 'Uncategorizedtemplates' => array( 'XablonesNoKateggorizados' ),
+ 'Undelete' => array( 'TraerAtrás' ),
+ 'Unlockdb' => array( 'DesblokearBasa_de_dados' ),
+ 'Unusedcategories' => array( 'KatēggoríasSinUso' ),
+ 'Unusedimages' => array( 'DosyasSinUso' ),
+ 'Unusedtemplates' => array( 'XablonesSinUso' ),
+ 'Unwatchedpages' => array( 'HojasSinKudiadas' ),
+ 'Upload' => array( 'KargarDosya' ),
+ 'UploadStash' => array( 'Muchedumbre_de_kargamientos' ),
+ 'Userlogin' => array( 'Entrada_del_usador' ),
+ 'Userlogout' => array( 'Salida_del_usador' ),
+ 'Userrights' => array( 'DerechosUsadores' ),
+ 'Version' => array( 'Versión' ),
+ 'Wantedcategories' => array( 'KatēggoríasDemandadas' ),
+ 'Wantedfiles' => array( 'DosyasDemandadas' ),
+ 'Wantedpages' => array( 'HojasDemandadas' ),
+ 'Wantedtemplates' => array( 'XablonesDemandados' ),
+ 'Watchlist' => array( 'Lista_de_eskojidos' ),
+ 'Whatlinkshere' => array( 'LoKeSeAtaKonAkí' ),
'Withoutinterwiki' => array( 'SinIntervikis' ),
- 'MergeHistory' => array( 'AjuntarIstoria' ),
- 'Filepath' => array( 'Pozisyón_de_dosya' ),
- 'Invalidateemail' => array( 'DesverdadearEmail' ),
- 'Blankpage' => array( 'VaziarHoja' ),
- 'LinkSearch' => array( 'Busqueda_de_linkes' ),
- 'DeletedContributions' => array( 'AjustamientosEfassados' ),
- 'Tags' => array( 'Etiquetas' ),
- 'Activeusers' => array( 'UsadoresActivos' ),
- 'ComparePages' => array( 'ApariguarHojas' ),
- 'Badtitle' => array( 'TítůloNegro' ),
);
$magicWords = array(
@@ -202,8 +209,8 @@ $messages = array(
'tog-shownumberswatching' => 'Amostrar el karar de usadores que están akavidando cada hoja',
'tog-oldsig' => 'Previsteo de la firma presente',
'tog-fancysig' => 'Tratar la firma como un vikiteksto (sin un atamiento otomatiko)',
-'tog-externaleditor' => 'Ir usando un ēdditor esterno (sólo es para usadores adelantados; tiene menester de arreglamientos especiales en vuestro contador [http://www.mediawiki.org/wiki/Manual:External_editors Para saver más.])',
-'tog-externaldiff' => 'Ir usando un comparador (diff) esterno (sólo es para usadores adelantados; tiene menester de arreglamientos especiales en vuestro contador [http://www.mediawiki.org/wiki/Manual:External_editors Para saver más.])',
+'tog-externaleditor' => 'Ir usando un ēdditor esterno (sólo es para usadores adelantados; tiene menester de arreglamientos especiales en vuestro contador [//www.mediawiki.org/wiki/Manual:External_editors Para saver más.])',
+'tog-externaldiff' => 'Ir usando un comparador (diff) esterno (sólo es para usadores adelantados; tiene menester de arreglamientos especiales en vuestro contador [//www.mediawiki.org/wiki/Manual:External_editors Para saver más.])',
'tog-showjumplinks' => 'Aktivar los atamientos de ayudo "Saltar a"',
'tog-uselivepreview' => 'Usar el "previsteo bivo" (JavaScript es menester) (eksperimental)',
'tog-forceeditsummary' => 'Avizarme cuando dexo el somaryo vazío',
@@ -298,14 +305,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Hojas arregladas en lista',
'noindex-category' => 'Hojas no arregladas en lista',
-
-'mainpagetext' => "'''MedyaViki ya se kureó con reuxitá.'''",
-'mainpagedocfooter' => 'Konsulta la [http://meta.wikimedia.org/wiki/Ayudo:Contenido Guía de usador] para tomar enformasyones encima de como usar el lojikal viki.
-
-== En Empeçando ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings La lista de los arreglamientos de la konfiggurasyón]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/lad DDS de MedyaViki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce La lista de las letrales (e-mail) de MedyaViki]',
+'broken-file-category' => 'Hojas que tienen atamientos rotos de arxivos',
'about' => 'Encima de',
'article' => 'Artícůlo de contenido',
@@ -357,10 +357,10 @@ $messages = array(
'history' => 'La îstoria de la hoja',
'history_short' => 'ÃŽstoria',
'updatedmarker' => 'trocado desde mi visita de alcavo',
-'info_short' => 'Enformasyón',
'printableversion' => 'Vista apropiada para emprimir',
'permalink' => 'Atamiento mantenido',
'print' => 'Emprimir',
+'view' => 'Ver',
'edit' => 'Trocar',
'create' => 'Crîar',
'editthispage' => 'Trocar esta hoja',
@@ -368,6 +368,7 @@ $messages = array(
'delete' => 'Efassar',
'deletethispage' => 'Efassar esta hoja',
'undelete_short' => 'Traër atrás $1 {{PLURAL:$1|trocamientos|trocamientos}}',
+'viewdeleted_short' => 'Ver {{PLURAL:$1|un trocamiento efassado|$1 trocamientos efassados}}',
'protect' => 'Guardar',
'protect_change' => 'Trocar el guardadijo',
'protectthispage' => 'Guardar esta hoja',
@@ -512,8 +513,6 @@ Si puede ser, escoge un otro nombre.',
'extlink_tip' => 'Link eksterno (acÏŒrdate de ajustar el prefiks http://)',
'headline_sample' => 'Escrituria de títůlo',
'headline_tip' => 'Titular de nivel 2',
-'math_sample' => 'Escribe aquí una formula',
-'math_tip' => 'Fórmula matemática (LaTeX)',
'nowiki_sample' => 'Escribid aquí texto sin formato',
'nowiki_tip' => 'Iñorar el formato wiki',
'image_tip' => 'Imagen incorporada',
@@ -671,7 +670,6 @@ Las búsquedas producen más o munco a buscar biervos comunes como «la» o «de
'preferences' => 'Preferencias',
'mypreferences' => 'Mis preferencias',
'prefs-skin' => 'Vista',
-'prefs-math' => 'Fórmulas',
'prefs-rc' => 'Los Trocamientos de Alcabo',
'prefs-watchlist' => 'Lista de los Trocamientos Preferidos',
'prefs-watchlist-days' => 'El número de los días a mostrar en la lista de los trocamientos preferidos:',
@@ -827,11 +825,9 @@ La descripción en su [$2 hoja de descripción del arxivo] está amostrada debax
# Watchlist
'watchlist' => 'Mi lista de escogidas',
'mywatchlist' => 'Mi lista de akavidamientos',
-'addedwatch' => 'Ajustado a la lista de escogidas',
'addedwatchtext' => "La hoja «[[:$1]]» fue ajustada a tu [[Special:Watchlist|lista de escogidas]]. Los trocamientos venideros en esta hoja i en tu hoja de diskussión associada se van indicar aí, i la hoja va aparecer '''gordo''' en la hoja de [[Special:RecentChanges|trocamientos freskos]] para hazerla más kolay de detektar.
Cuando queres eliminar la hoja de tu lista de escogidas, piza «Dexar de cudiar» en el menú.",
-'removedwatch' => 'Quitado de la lista de escogidas',
'removedwatchtext' => 'La hoja «[[:$1]]» fue eliminada de tu [[Special:Watchlist|lista de escogidas]].',
'watch' => 'cudia',
'watchthispage' => 'Cudia esta hoja',
@@ -851,7 +847,7 @@ en forma turable, ansí como todo su istoria.
Si puede ser, confirma que de verdad queres hazer esto, que estás entendiendo las
resultados, i que lo estás haziendo de acorddo con las [[{{MediaWiki:Policy-url}}|Políticas]].',
'actioncomplete' => 'Aksion kompleta',
-'deletedtext' => '"<nowiki>$1</nowiki>" fue efassado.
+'deletedtext' => '"$1" fue efassado.
Mira $2 para un registro de los efassados nuevos.',
'deletedarticle' => 'efassó «[[$1]]»',
'dellogpage' => 'Registro de efassados',
@@ -875,7 +871,7 @@ Mira $2 para un registro de los efassados nuevos.',
'protectexpiry' => 'Escapa:',
'protect_expiry_invalid' => 'Tiempo de escapación yerrado.',
'protect_expiry_old' => 'El tiempo de escapación está en el passado.',
-'protect-text' => "Puedes ver i trocar el nivel de protección de la hoja '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Puedes ver i trocar el nivel de protección de la hoja '''$1'''.",
'protect-locked-access' => "Tu cuento no tiene permissión para trocar los niveles de protección de una hoja.
A continuación se mostran las opciones actuales de la hoja '''$1''':",
'protect-cascadeon' => 'Esta hoja está guardada en momento porque está incluida en {{PLURAL:$1|la hoja venidera|las hojas venideras}}, que tienen activada la opción de protección en grados. Puedes trocar el nivel de protección de esta hoja, ma no va afectar a la protección en grados.',
@@ -1059,11 +1055,10 @@ Permite ajustar una razón al resumen de edición.',
'nextdiff' => 'Edición más nueva →',
# Media information
-'file-info-size' => '$1 × $2 píkseles; boy del arxivo: $3; tipo MIME: $4',
-'file-nohires' => '<small>No disponible a mayor resolución.</small>',
-'svg-long-desc' => 'arxivo SVG, nominalmente $1 × $2 píkseles, boy del arxivo: $3',
-'show-big-image' => 'Resolución original',
-'show-big-image-thumb' => '<small>Boy de esta vista previa: $1 × $2 píkseles</small>',
+'file-info-size' => '$1 × $2 píkseles; boy del arxivo: $3; tipo MIME: $4',
+'file-nohires' => '<small>No disponible a mayor resolución.</small>',
+'svg-long-desc' => 'arxivo SVG, nominalmente $1 × $2 píkseles, boy del arxivo: $3',
+'show-big-image' => 'Resolución original',
# Bad image list
'bad_image_list' => 'El formato es ansina:
@@ -1077,7 +1072,7 @@ El resto de los linkes del mismo satir se juzgan como eksepsyones (por enxemplo,
'metadata-help' => 'Este arxivo contiene enformación adicional (metadatos), probablemente ajustada por la cámara digital, el escáner o el programa usado para crearlo o digitalizarlo. Si el arxivo fue modificado desde su estado original, puede aver perdido algunos detalyos.',
'metadata-expand' => 'Mostra los detalyos ekstendidos',
'metadata-collapse' => 'Esconder los detalyos ekstendidos',
-'metadata-fields' => 'Los campos de metadatos EXIF que se listan en este messaj se van a mostrar en la hoja de la descripción de la foto daínda cuando la tabla de metadatos está cerrada.
+'metadata-fields' => 'Los campos de metadatos que se listan en este messaje se van a amostrar en la hoja de la deskripsión de la foto daínda cuando la tabla de metadatos está cerrada.
Los otros campos se van a guardar por defecto.
* make
* model
@@ -1085,7 +1080,13 @@ Los otros campos se van a guardar por defecto.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-filesource' => 'Manadéro de archivo',
@@ -1102,14 +1103,12 @@ Los otros campos se van a guardar por defecto.
# External editor support
'edit-externally' => 'Trocar esto arxivo usando una aplicación eksterna',
-'edit-externally-help' => '(Melda las [http://www.mediawiki.org/wiki/Manual:External_editors enstruksiones de configuración] -en inglés- para saber más)',
+'edit-externally-help' => '(Melda las [//www.mediawiki.org/wiki/Manual:External_editors enstruksiones de configuración] -en inglés- para saber más)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'todos',
-'imagelistall' => 'todas',
-'watchlistall2' => 'todos',
-'namespacesall' => 'todos',
-'monthsall' => '(todos)',
+'watchlistall2' => 'todos',
+'namespacesall' => 'todos',
+'monthsall' => '(todos)',
# E-mail address confirmation
'confirmemail' => 'Konfirmar direksion e-pósta',
diff --git a/languages/messages/MessagesLb.php b/languages/messages/MessagesLb.php
index 93969ff0..d2995419 100644
--- a/languages/messages/MessagesLb.php
+++ b/languages/messages/MessagesLb.php
@@ -13,6 +13,7 @@
* @author Reedy
* @author Robby
* @author Urhixidur
+ * @author Zinneke
* @author לערי ריינה×רט
*/
@@ -43,102 +44,105 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Duebel_Viruleedungen' ),
+ 'Activeusers' => array( 'Aktiv_Benotzer' ),
+ 'Allmessages' => array( 'All_Systemmessagen' ),
+ 'Allpages' => array( 'All_Säiten' ),
+ 'Ancientpages' => array( 'Al_Säiten' ),
+ 'Blankpage' => array( 'Eidel_Säit' ),
+ 'Block' => array( 'Spären' ),
+ 'Blockme' => array( 'Mech_spären' ),
+ 'Booksources' => array( 'Bicher_mat_hirer_ISBN_sichen' ),
'BrokenRedirects' => array( 'Futtis_Viruleedungen' ),
- 'Disambiguations' => array( 'Homonymie' ),
- 'Userlogin' => array( 'Umellen' ),
- 'Userlogout' => array( 'Ofmellen' ),
+ 'Categories' => array( 'Kategorien' ),
+ 'ChangePassword' => array( 'Passwuert_zrécksetzen' ),
+ 'ComparePages' => array( 'Säite_vergkäichen' ),
+ 'Confirmemail' => array( 'E-Mail_confirméieren' ),
+ 'Contributions' => array( 'Kontributiounen' ),
'CreateAccount' => array( 'Benotzerkont_opmaachen' ),
- 'Preferences' => array( 'Astellungen' ),
- 'Watchlist' => array( 'Iwwerwaachungslëscht' ),
- 'Recentchanges' => array( 'Rezent_Ännerungen' ),
- 'Upload' => array( 'Eroplueden' ),
+ 'Deadendpages' => array( 'Sakgaasse-Säiten' ),
+ 'DeletedContributions' => array( 'Geläschte_Kontributiounen' ),
+ 'Disambiguations' => array( 'Homonymie' ),
+ 'DoubleRedirects' => array( 'Duebel_Viruleedungen' ),
+ 'EditWatchlist' => array( 'Iwwerwaachungslëscht_änneren' ),
+ 'Emailuser' => array( 'Dësem_Benotzer_eng_E-Mail_schécken' ),
+ 'Export' => array( 'Exportéieren' ),
+ 'Fewestrevisions' => array( 'Säite_mat_de_mannsten_Ännerungen' ),
+ 'FileDuplicateSearch' => array( 'No_duebele_Fichieren_sichen' ),
+ 'Filepath' => array( 'Pad_bäi_de_Fichier' ),
+ 'Import' => array( 'Importéieren' ),
+ 'Invalidateemail' => array( 'E-Mailadress_net_confirméieren' ),
+ 'BlockList' => array( 'Lëscht_vu_gespaarten_IPen_a_Benotzer' ),
+ 'LinkSearch' => array( 'Weblink-Sichen' ),
+ 'Listadmins' => array( 'Lëscht_vun_den_Administrateuren' ),
+ 'Listbots' => array( 'Botten' ),
'Listfiles' => array( 'Billerlëscht' ),
- 'Newimages' => array( 'Nei_Biller' ),
- 'Listusers' => array( 'Lëscht_vun_de_Benotzer' ),
'Listgrouprights' => array( 'Lëscht_vun_de_Grupperechter' ),
- 'Statistics' => array( 'Statistik' ),
- 'Randompage' => array( 'Zoufälleg_Säit' ),
+ 'Listredirects' => array( 'Viruleedungen' ),
+ 'Listusers' => array( 'Lëscht_vun_de_Benotzer' ),
+ 'Lockdb' => array( 'Datebank_spären' ),
+ 'Log' => array( 'Logbicher' ),
'Lonelypages' => array( 'Weesesäiten' ),
- 'Uncategorizedpages' => array( 'Säiten_ouni_Kategorie' ),
- 'Uncategorizedcategories' => array( 'Kategorien_ouni_Kategorie' ),
- 'Uncategorizedimages' => array( 'Biller_ouni_Kategorie' ),
- 'Uncategorizedtemplates' => array( 'Schablounen_ouni_Kategorie' ),
- 'Unusedcategories' => array( 'Onbenotze_Kategorien' ),
- 'Unusedimages' => array( 'Onbenotzte_Biller' ),
- 'Wantedpages' => array( 'Gewënschte_Säiten' ),
- 'Wantedcategories' => array( 'Gewënschte_Kategorien' ),
- 'Wantedfiles' => array( 'Gewënschte_Fichieren' ),
- 'Wantedtemplates' => array( 'Gewënschte_Schablounen' ),
+ 'Longpages' => array( 'Laang_Säiten' ),
+ 'MergeHistory' => array( 'Versiounen_zesummeleeën' ),
+ 'MIMEsearch' => array( 'No_MIME-Zorte_sichen' ),
+ 'Mostcategories' => array( 'Säite_mat_de_meeschte_Kategorien' ),
+ 'Mostimages' => array( 'Dacks_benotzte_Biller' ),
'Mostlinked' => array( 'Dacks_verlinkte_Säiten' ),
'Mostlinkedcategories' => array( 'Dacks_benotzte_Kategorien' ),
'Mostlinkedtemplates' => array( 'Dacks_benotzte_Schablounen' ),
- 'Mostimages' => array( 'Dacks_benotzte_Biller' ),
- 'Mostcategories' => array( 'Säite_mat_de_meeschte_Kategorien' ),
'Mostrevisions' => array( 'Säite_mat_de_meeschten_Ännerungen' ),
- 'Fewestrevisions' => array( 'Säite_mat_de_mannsten_Ännerungen' ),
- 'Shortpages' => array( 'Kuerz_Säiten' ),
- 'Longpages' => array( 'Laang_Säiten' ),
+ 'Movepage' => array( 'Säit_réckelen' ),
+ 'Mycontributions' => array( 'Meng_Kontributiounen' ),
+ 'Mypage' => array( 'Meng_Benotzersäit' ),
+ 'Mytalk' => array( 'Meng_Diskussiounssäit' ),
+ 'Myuploads' => array( 'Meng_eropgeluede_Fichieren' ),
+ 'Newimages' => array( 'Nei_Biller' ),
'Newpages' => array( 'Nei_Säiten' ),
- 'Ancientpages' => array( 'Al_Säiten' ),
- 'Deadendpages' => array( 'Sakgaasse-Säiten' ),
+ 'PasswordReset' => array( 'Zrécksetze_vum_Passwuert' ),
+ 'PermanentLink' => array( 'Permanente_Link' ),
+ 'Popularpages' => array( 'Beléifste_Säiten' ),
+ 'Preferences' => array( 'Astellungen' ),
+ 'Prefixindex' => array( 'Indexsich' ),
'Protectedpages' => array( 'Protegéiert_Säiten' ),
'Protectedtitles' => array( 'Gespaarte_Säiten' ),
- 'Allpages' => array( 'All_Säiten' ),
- 'Prefixindex' => array( 'Indexsich' ),
- 'Ipblocklist' => array( 'Lëscht_vu_gespaarten_IPen_a_Benotzer' ),
- 'Unblock' => array( 'Spär_ophiewen' ),
- 'Specialpages' => array( 'Spezialsäiten' ),
- 'Contributions' => array( 'Kontributiounen' ),
- 'Emailuser' => array( 'Dësem_Benotzer_eng_E-Mail_schécken' ),
- 'Confirmemail' => array( 'E-Mail_confirméieren' ),
- 'Whatlinkshere' => array( 'Linken_op_dës_Säit' ),
+ 'Randompage' => array( 'Zoufälleg_Säit' ),
+ 'Randomredirect' => array( 'Zoufälleg_Viruleedung' ),
+ 'Recentchanges' => array( 'Rezent_Ännerungen' ),
'Recentchangeslinked' => array( 'Ännerungen_op_verlinkte_Säiten' ),
- 'Movepage' => array( 'Säit_réckelen' ),
- 'Blockme' => array( 'Mech_spären' ),
- 'Booksources' => array( 'Bicher_mat_hirer_ISBN_sichen' ),
- 'Categories' => array( 'Kategorien' ),
- 'Export' => array( 'Exportéieren' ),
- 'Version' => array( 'Versioun' ),
- 'Allmessages' => array( 'All_Systemmessagen' ),
- 'Log' => array( 'Logbicher' ),
- 'Blockip' => array( 'Spären' ),
+ 'Revisiondelete' => array( 'Versioun_läschen' ),
+ 'RevisionMove' => array( 'Versioun_réckelen' ),
+ 'Search' => array( 'Sichen' ),
+ 'Shortpages' => array( 'Kuerz_Säiten' ),
+ 'Specialpages' => array( 'Spezialsäiten' ),
+ 'Statistics' => array( 'Statistik' ),
+ 'Tags' => array( 'Taggen' ),
+ 'Unblock' => array( 'Spär_ophiewen' ),
+ 'Uncategorizedcategories' => array( 'Kategorien_ouni_Kategorie' ),
+ 'Uncategorizedimages' => array( 'Biller_ouni_Kategorie' ),
+ 'Uncategorizedpages' => array( 'Säiten_ouni_Kategorie' ),
+ 'Uncategorizedtemplates' => array( 'Schablounen_ouni_Kategorie' ),
'Undelete' => array( 'Restauréieren' ),
- 'Import' => array( 'Importéieren' ),
- 'Lockdb' => array( 'Datebank_spären' ),
'Unlockdb' => array( 'Spär_vun_der_Datebank_ophiewen' ),
- 'Userrights' => array( 'Benotzerrechter' ),
- 'MIMEsearch' => array( 'Sich_no_MIME-Zorten' ),
- 'FileDuplicateSearch' => array( 'Sich_no_duebele_Fichieren' ),
- 'Unwatchedpages' => array( 'Säiten_déi_net_iwwerwaacht_ginn' ),
- 'Listredirects' => array( 'Viruleedungen' ),
- 'Revisiondelete' => array( 'Versioun_läschen' ),
+ 'Unusedcategories' => array( 'Onbenotze_Kategorien' ),
+ 'Unusedimages' => array( 'Onbenotzte_Biller' ),
'Unusedtemplates' => array( 'Onbenotzte_Schablounen' ),
- 'Randomredirect' => array( 'Zoufälleg_Viruleedung' ),
- 'Mypage' => array( 'Meng_Benotzersäit' ),
- 'Mytalk' => array( 'Meng_Diskussiounssäit' ),
- 'Mycontributions' => array( 'Meng_Kontributiounen' ),
- 'Myuploads' => array( 'Meng_eropgeluede_Fichieren' ),
- 'Listadmins' => array( 'Lëscht_vun_den_Administrateuren' ),
- 'Listbots' => array( 'Botten' ),
- 'Popularpages' => array( 'Beléifste_Säiten' ),
- 'Search' => array( 'Sichen' ),
- 'Resetpass' => array( 'Passwuert_zrécksetzen' ),
+ 'Unwatchedpages' => array( 'Säiten_déi_net_iwwerwaacht_ginn' ),
+ 'Upload' => array( 'Eroplueden' ),
+ 'Userlogin' => array( 'Umellen' ),
+ 'Userlogout' => array( 'Ofmellen' ),
+ 'Userrights' => array( 'Benotzerrechter' ),
+ 'Version' => array( 'Versioun' ),
+ 'Wantedcategories' => array( 'Gewënschte_Kategorien' ),
+ 'Wantedfiles' => array( 'Gewënschte_Fichieren' ),
+ 'Wantedpages' => array( 'Gewënschte_Säiten' ),
+ 'Wantedtemplates' => array( 'Gewënschte_Schablounen' ),
+ 'Watchlist' => array( 'Iwwerwaachungslëscht' ),
+ 'Whatlinkshere' => array( 'Linken_op_dës_Säit' ),
'Withoutinterwiki' => array( 'Säiten_ouni_Interwiki-Linken' ),
- 'MergeHistory' => array( 'Versiounen_zesummeleeën' ),
- 'Filepath' => array( 'Pad_bäi_de_Fichier' ),
- 'Invalidateemail' => array( 'E-Mailadress_net_confirméieren' ),
- 'Blankpage' => array( 'Eidel_Säit' ),
- 'LinkSearch' => array( 'Weblink-Sich' ),
- 'DeletedContributions' => array( 'Geläschte_Kontributiounen' ),
- 'Tags' => array( 'Taggen' ),
- 'Activeusers' => array( 'Aktiv_Benotzer' ),
- 'ComparePages' => array( 'Säite_vergkäichen' ),
- 'Badtitle' => array( 'Net_valabelen_Titel' ),
- 'DisableAccount' => array( 'Benotzerkont_ausschalten' ),
);
$magicWords = array(
+ 'redirect' => array( '0', '#VIRULEEDUNG', '#WEITERLEITUNG', '#REDIRECT' ),
'numberofarticles' => array( '1', 'Artikelen', 'ARTIKELANZAHL', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'Fichieren', 'DATEIANZAHL', 'NUMBEROFFILES' ),
'numberofusers' => array( '1', 'Benotzerzuel', 'BENUTZERANZAHL', 'NUMBEROFUSERS' ),
@@ -193,8 +197,8 @@ $messages = array(
'tog-shownumberswatching' => "D'Zuel vun de Benotzer déi dës Säit iwwerwaache weisen",
'tog-oldsig' => 'Aktuell Ënnerschrëft:',
'tog-fancysig' => 'Ënnerschrëft als Wiki-Text behandelen (Ouni automatesche Link)',
-'tog-externaleditor' => 'Externen Editeur als Standard benotzen (Nëmme fir Experten, et musse speziell Astellungen op ärem Computer gemaach ginn. [http://www.mediawiki.org/wiki/Manual:External_editors Méi Informatiounen.])',
-'tog-externaldiff' => 'En Externen Diff-Programm als Standard benotzen (nëmme fir Experten, et musse speziell Astellungen op ärem Computer gemaach ginn. [http://www.mediawiki.org/wiki/Manual:External_editors Méi Informatiounen])',
+'tog-externaleditor' => 'Externen Editeur als Standard benotzen (Nëmme fir Experten, et musse speziell Astellungen op ärem Computer gemaach ginn. [//www.mediawiki.org/wiki/Manual:External_editors Méi Informatiounen.])',
+'tog-externaldiff' => 'En Externen Diff-Programm als Standard benotzen (nëmme fir Experten, et musse speziell Astellungen op ärem Computer gemaach ginn. [//www.mediawiki.org/wiki/Manual:External_editors Méi Informatiounen])',
'tog-showjumplinks' => 'Aktivéiere vun de "Sprang op"-Linken',
'tog-uselivepreview' => 'Live-Preview benotzen (JavaScript) (experimentell)',
'tog-forceeditsummary' => 'Warnen, wa beim Späicheren de Resumé feelt',
@@ -291,14 +295,7 @@ $messages = array(
'listingcontinuesabbrev' => '(Fortsetzung)',
'index-category' => 'Indexéiert Säiten',
'noindex-category' => 'Net-indexéiert Säiten',
-
-'mainpagetext' => "'''MediaWiki gouf installéiert.'''",
-'mainpagedocfooter' => "Kuckt w.e.g. [http://meta.wikimedia.org/wiki/Help:Contents d'Benotzerhandbuch] fir den Interface ze personnaliséieren.
-
-== Starthëllefen ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Hëllef bei der Konfiguratioun]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglëscht vun neie MediaWiki-Versiounen]",
+'broken-file-category' => 'Säite mat futtisse Linken op Fichieren',
'about' => 'A propos',
'article' => 'Säit mat Inhalt',
@@ -350,10 +347,10 @@ $messages = array(
'history' => 'Historique vun der Säit',
'history_short' => 'Versiounen',
'updatedmarker' => "geännert zënter ech d'Säit fir d'lescht gekuckt hunn",
-'info_short' => 'Informatioun',
'printableversion' => 'Drockversioun',
'permalink' => 'Zitéierfäege Link',
'print' => 'Drécken',
+'view' => 'Weisen',
'edit' => 'Änneren',
'create' => 'Uleeën',
'editthispage' => 'Dës Säit änneren',
@@ -361,6 +358,7 @@ $messages = array(
'delete' => 'Läschen',
'deletethispage' => 'Dës Säit läschen',
'undelete_short' => '$1 {{PLURAL:$1|Versioun|Versioune}} restauréieren',
+'viewdeleted_short' => '{{PLURAL:$1|Eng geläschte Versioun|$1 geläschte Versioune}} weisen',
'protect' => 'Spären',
'protect_change' => 'änneren',
'protectthispage' => 'Dës Säit schützen',
@@ -444,6 +442,8 @@ $1",
'toc' => 'Inhaltsverzeechnes',
'showtoc' => 'weisen',
'hidetoc' => 'verstoppen',
+'collapsible-collapse' => 'Zesummeklappen',
+'collapsible-expand' => 'Opklappen',
'thisisdeleted' => '$1 kucken oder zrécksetzen?',
'viewdeleted' => 'Weis $1?',
'restorelink' => '$1 geläscht {{PLURAL:$1|Versioun|Versiounen}}',
@@ -455,6 +455,8 @@ $1",
'page-rss-feed' => 'RSS-Feed fir "$1"',
'page-atom-feed' => 'Atom-Feed fir "$1"',
'red-link-title' => '$1 (Säit gëtt et net)',
+'sort-descending' => 'Vu grouss op kleng zortéieren',
+'sort-ascending' => 'Vu kleng op grouss zortéieren',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Säit',
@@ -537,12 +539,13 @@ Ufro: $2',
'protectedpagetext' => 'Dës Säit ass fir Ännerunge gespaart.',
'viewsourcetext' => 'Dir kënnt de Quelltext vun dëser Säit kucken a kopéieren:',
'protectedinterface' => 'Op dëser Säit fannt Dir Text fir de Sprooch-Interface vun der Software an dofir ass si gespaart fir Mëssbrauch ze verhënneren.',
-'editinginterface' => "'''Opgepasst:''' Dir sidd am Gaang, eng Säit z'änneren, déi do ass, fir Interface-Text fir d'Software ze liwweren. Ännerungen op dëser Säit änneren den Interface-Text, jee no Kontext, op allen oder verschiddene Säiten, déi vun alle Benotzer gesi ginn. Fir d'Iwwersetzungen z'änneren invitéiere mir Iech de [http://translatewiki.net/wiki/Main_Page?setlang=lb Projet translatewiki.net] vun den internationale Messagen ze benotzen.",
+'editinginterface' => "'''Opgepasst:''' Dir sidd am Gaang, eng Säit z'änneren, déi do ass, fir Interface-Text fir d'Software ze liwweren. Ännerungen op dëser Säit änneren den Interface-Text, jee no Kontext, op allen oder verschiddene Säiten, déi vun alle Benotzer gesi ginn. Fir d'Iwwersetzungen z'änneren invitéiere mir Iech de [//translatewiki.net/wiki/Main_Page?setlang=lb Projet translatewiki.net] vun den internationale Messagen ze benotzen.",
'sqlhidden' => '(SQL-Offro verstoppt)',
'cascadeprotected' => 'Dës Säit gouf fir Ännerunge gespaart, well se duerch Cascadeprotectioun vun {{PLURAL:$1|dëser Säit|dëse Säite}} gespaart ass mat der Cascadenoptioun:
$2',
'namespaceprotected' => "Dir hutt net déi néideg Rechter fir d'Säiten am Nummraum '''$1''' ze änneren.",
-'customcssjsprotected' => "Dir hutt net déi néideg Rechter fir dës Säit z'änneren, well si zu de perséinlechen Astellunge vun engem anere Benotzer gehéiert.",
+'customcssprotected' => "Dir hutt net d'Recht dës CSS-Säit z'änneren, well dorop déi perséinlech Astellunge vun engem anere Benotzer gespäichert sinn.",
+'customjsprotected' => "Dir hutt net d'Recht dës JavaScript-Säit z'änneren, well dorop déi perséinlech Astellunge vun engem anere Benotzer gespäichert sinn.",
'ns-specialprotected' => 'Spezialsäite kënnen net verännert ginn.',
'titleprotected' => "Eng Säit mat dësem Numm kann net ugeluecht ginn. Dës Spär gouf vum [[User:$1|$1]] gemaach deen als Grond ''$2'' uginn huet.",
@@ -580,6 +583,7 @@ Denkt drun, Är [[Special:Preferences|{{SITENAME}}-Astellungen]] unzepassen.',
'createaccount' => 'Neie Kont opmaachen',
'gotaccount' => "Dir hutt schonn e Benotzerkont? '''$1'''.",
'gotaccountlink' => 'Umellen',
+'userlogin-resetlink' => "Hutt Dir d'Detailer vun Ärem Login vergiess?",
'createaccountmail' => 'Via E-Mail',
'createaccountreason' => 'Grond:',
'badretype' => 'Är Passwierder stëmmen net iwwerdeneen.',
@@ -592,13 +596,15 @@ Sicht Iech een anere Benotzernumm.',
Dir hutt d'Cookien desaktivéiert.
Aktivéiert déi w.e.g. a loggt Iech da mat Ärem neie Benotzernomm a mat dem respektive Passwuert an.",
'nocookieslogin' => "{{SITENAME}} benotzt Cookië beim Umelle vun de Benotzer. Dir hutt Cookien ausgeschalt, w.e.g aktivéiert d'Cookien a versicht et nach eng Kéier.",
+'nocookiesfornew' => 'De Benotzerkont gouf net ugeluecht, well mir seng Quell net bestëmme konnten.
+Vergewëssert Iech datt Dir Cookien zouloosst, luet dës Säit nei a probéiert nach emol.',
'noname' => 'Dir hutt kee gëltege Benotzernumm uginn.',
'loginsuccesstitle' => 'Umeldung huet geklappt',
'loginsuccess' => "'''Dir sidd elo als \"\$1\" op {{SITENAME}} ugemellt.'''",
'nosuchuser' => 'Et gëtt kee Benotzernumm mam Numm "$1".
Beim Benotzernumm gëtt tëschent groussen a klenge Buschtawen ënnerscheet (casesensitive).
Kuckt w.e.g. op d\'Schreifweis richteg ass, oder [[Special:UserLogin/signup|maacht en neie Benotzerkont op]].',
-'nosuchusershort' => 'De Benotzernumm "<nowiki>$1</nowiki>" gëtt et net. Kuckt w.e.g. op d\'Schreifweis richteg ass.',
+'nosuchusershort' => 'De Benotzernumm "$1" gëtt et net. Kuckt w.e.g. op d\'Schreifweis richteg ass.',
'nouserspecified' => 'Gitt w.e.g. e Benotzernumm un.',
'login-userblocked' => 'Dëse Benotzer ass gespaart. Aloggen ass net erlaabt.',
'wrongpassword' => 'Dir hutt e falscht (oder kee) Passwuert aginn. Probéiert w.e.g. nach eng Kéier.',
@@ -640,13 +646,14 @@ Wann dëse Benotzerkont ongewollt ugeluecht gouf, kënnt Dir dës Noriicht einfa
'usernamehasherror' => "Am Benotzernumm däerfe keng ''hash'' Zeeche sinn",
'login-throttled' => "Dir hutt zevill dacks versicht d'Passwuert vun dësem Benotzerkont anzeginn.
Waart w.e.g. ier Dir et nach eng Kéier versicht.",
+'login-abort-generic' => 'Dir sidd net ageloggt - Aloggen ofgebrach',
'loginlanguagelabel' => 'Sprooch: $1',
'suspicious-userlogout' => 'Är Ufro fir Iech auszeloggen gouf refuséiert well et esou ausgesäit wéi wann se vun engem Futtise Browser oder Proxy-Tëschespäicher kënnt.',
# E-mail sending
'php-mail-error-unknown' => 'Onbekannte Feeler an der PHP-Mail-Fonctioun',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Passwuert änneren',
'resetpass_announce' => 'Dir sidd mat engem temporären , per E-Mail geschéckte Code ageloggt.
Fir är Umeldung ofzeschléissen, musst Dir elo hei een neit Passwuert uginn:',
@@ -665,6 +672,20 @@ Fir är Umeldung ofzeschléissen, musst Dir elo hei een neit Passwuert uginn:',
Vläicht hutt Dir Äert Passwuert scho geännert oder en neit temporäert Passwuert ugefrot.',
'resetpass-temp-password' => 'Temporäert Passwuert:',
+# Special:PasswordReset
+'passwordreset' => 'Passwuert zrécksetzen',
+'passwordreset-text' => 'Fëllt dëse Formulaire aus fir eng E-Mail Erënnerung vun den Detailer vun Ärem Benotzerkont ze kréien.',
+'passwordreset-legend' => 'Passwuert zrécksetzen',
+'passwordreset-disabled' => "D'Zerécksetze vum Passwuert ass op dëser Wiki ausgeschalt.",
+'passwordreset-pretext' => '{{PLURAL:$1||Gitt eng vun dësen Donnéeën an}}',
+'passwordreset-username' => 'Benotzernumm:',
+'passwordreset-domain' => 'Domaine:',
+'passwordreset-email' => 'E-Mailadress:',
+'passwordreset-emailtitle' => 'Detailer vum Benotzerkont op{{SITENAME}}',
+'passwordreset-emailelement' => 'Benotzernumm: $1
+Temporärt Passwuert: $2',
+'passwordreset-emailsent' => 'Eng Erënnerungs-Mail gouf geschéckt.',
+
# Edit page toolbar
'bold_sample' => 'Fettgedréckten Text',
'bold_tip' => 'Fettgedréckten Text',
@@ -676,8 +697,6 @@ Vläicht hutt Dir Äert Passwuert scho geännert oder en neit temporäert Passwu
'extlink_tip' => 'Externe Link (Vergiesst net den http:// Prefix)',
'headline_sample' => 'Titel Text',
'headline_tip' => 'Iwwerschrëft vum Niveau 2',
-'math_sample' => 'Formel hei asetzen',
-'math_tip' => 'Mathematesch Formel (LaTeX)',
'nowiki_sample' => 'Net-formatéierten Text hei androen',
'nowiki_tip' => 'Wiki-Format ignoréieren',
'image_sample' => 'Beispill.jpg',
@@ -690,13 +709,13 @@ Vläicht hutt Dir Äert Passwuert scho geännert oder en neit temporäert Passwu
# Edit pages
'summary' => 'Resumé:',
'subject' => 'Sujet/Iwwerschrëft:',
-'minoredit' => 'Kleng Ännerung',
+'minoredit' => 'Dëst ass eng kleng Ännerung',
'watchthis' => 'Dës Säit iwwerwaachen',
'savearticle' => 'Säit späicheren',
'preview' => 'Kucken ouni ofzespäicheren',
'showpreview' => 'Kucken ouni ofzespäicheren',
'showlivepreview' => 'Live-Kucken ouni ofzespäicheren',
-'showdiff' => 'Weis Ännerungen',
+'showdiff' => 'Ännerunge weisen',
'anoneditwarning' => 'Dir sidd net ageloggt. Dowéinst gëtt amplaz vun engem Benotzernumm Är IP Adress am Historique vun dëser Säit gespäichert.',
'anonpreviewwarning' => "''Dir sidd net ageloggt. Wann Dir ofspäichert gëtt Är IP-Adress an der Lëscht vun de Versioune vun dëser Säit enregistréiert.''",
'missingsummary' => "'''Erënnerung:''' Dir hutt kee Resumé aginn. Wann Dir nachemol op \"Säit ofspäicheren\" klickt, gëtt är Ännerung ouni Resumé ofgespäichert.",
@@ -764,7 +783,7 @@ Dir kënnt op anere Säiten no [[Special:Search/{{PAGENAME}}|dësem Säitentitel
'noarticletext-nopermission' => 'Elo ass keen Text op dëser Säit.
Dir kënnt op anere Säiten [[Special:Search/{{PAGENAME}}|no dësem Sàitentitel sichen]],
oder <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} an de Logbicher sichen]</span>.',
-'userpage-userdoesnotexist' => 'De Benotzerkont "$1" gëtt et net. Iwwerpréift w.e.g. op Dir dës Säit erschafe/ännere wëllt.',
+'userpage-userdoesnotexist' => 'De Benotzerkont "<nowiki>$1</nowiki>" gëtt et net. Iwwerpréift w.e.g. op Dir dës Säit erschafe/ännere wëllt.',
'userpage-userdoesnotexist-view' => 'De Benotzerkont "$1" ass net registréiert.',
'blocked-notice-logextract' => 'Dëse Benotzer ass elo gespaart.
Déi lescht Entrée am Logbuch vun de Späre steet als Referenz hei drënner:',
@@ -800,6 +819,7 @@ Wann de Problem dann ëmmer nach bestoe sollt, versicht Iech [[Special:UserLogou
'token_suffix_mismatch' => "'''Är Ännerung gouf refuséiert, well Äre Browser Zeechen am Ännerungs-Identifiant verännert huet.'''
D'Ännerung gouf refuséiert, fir ze verhënneren datt den Text op der Säit onliesbar gëtt.
Dëst geschitt heiandsdo wann Dir en anonyme Proxy-Service um Internet benotzt.",
+'edit_form_incomplete' => "'''En Deel vum Ännerungsformulaire koum net um Server un; iwwerpréift w.e.g ob Är Ännerunge komplett sinn a probéiert nach emol.'''",
'editing' => 'Ännere vu(n) $1',
'editingsection' => 'Ännere vu(n) $1 (Abschnitt)',
'editingcomment' => 'Ännere vu(n) $1 (neien Abschnitt)',
@@ -1023,8 +1043,8 @@ Kuckt w.e.g. an de Logbicher no.",
# Suppression log
'suppressionlog' => 'Lëscht vun de verstoppten a geläschte Säiten',
-'suppressionlogtext' => "Ënnendrënner ass eng Lëscht vun de geläschte Säiten a Spären déi fir d'Administrateuren net sichtbar sinn.
-Kuckt [[Special:IPBlockList|Lëscht vun de gespaarten IPen]] fir déi aktuell Spären.",
+'suppressionlogtext' => 'Ënnendrënner ass eng Lëscht vun de geläschte Säiten a Spären a vun den Administrateuren verstopptem Inhalt.
+Kuckt [[Special:BlockList|Lëscht vun de gespaarten IPen]] fir déi aktuell Spären.',
# History merging
'mergehistory' => 'Historiquë fusionéieren',
@@ -1135,12 +1155,13 @@ Denkt w.e.g drunn datt d'Navigatiounslinken d'Wiel vun de Versiounen nees zréck
'searchdisabled' => "D'Sichfunktioun op {{SITENAME}} ass ausgeschalt. Dir kënnt iwwerdeems mat Hëllef vu Google sichen. Bedenkt awer, datt deenen hire Sichindex fir {{SITENAME}} eventuell net dem aktuellste Stand entsprecht.",
# Quickbar
-'qbsettings' => 'Geschirläischt',
-'qbsettings-none' => 'Keen',
-'qbsettings-fixedleft' => 'Lénks, fest',
-'qbsettings-fixedright' => 'Riets, fest',
-'qbsettings-floatingleft' => 'schwiewt lenks',
-'qbsettings-floatingright' => 'Schwiewt riets',
+'qbsettings' => 'Geschirläischt',
+'qbsettings-none' => 'Keen',
+'qbsettings-fixedleft' => 'Lénks, fest',
+'qbsettings-fixedright' => 'Riets, fest',
+'qbsettings-floatingleft' => 'schwiewt lenks',
+'qbsettings-floatingright' => 'Schwiewt riets',
+'qbsettings-directionality' => 'Fix, ofhängeg vun der Schreiwrichtung vun Ärer Sprooch',
# Preferences page
'preferences' => 'Astellungen',
@@ -1151,9 +1172,10 @@ Denkt w.e.g drunn datt d'Navigatiounslinken d'Wiel vun de Versiounen nees zréck
'changepassword' => 'Passwuert änneren',
'prefs-skin' => 'Skin',
'skin-preview' => 'Kucken',
-'prefs-math' => 'Math/TeX',
'datedefault' => 'Egal (Standard)',
+'prefs-beta' => 'Beta-Fonctiounen',
'prefs-datetime' => 'Datum an Auerzäit',
+'prefs-labs' => '"Labs"-Fonctiounen',
'prefs-personal' => 'Benotzerprofil',
'prefs-rc' => 'Rezent Ännerungen',
'prefs-watchlist' => 'Iwwerwaachungslëscht',
@@ -1175,8 +1197,6 @@ Denkt w.e.g drunn datt d'Navigatiounslinken d'Wiel vun de Versiounen nees zréck
'columns' => 'Kolonnen',
'searchresultshead' => 'Sichen',
'resultsperpage' => 'Zuel vun de Resultater pro Säit:',
-'contextlines' => 'Zuel vun de Linnen:',
-'contextchars' => 'Kontextcharactère pro Linn:',
'stub-threshold' => 'Maximum (a Byte) bei deem e Link nach ëmmer am <a href="#" class="stub">Skizze-Format</a> gewise gëtt:',
'stub-threshold-disabled' => 'Desaktivéiert',
'recentchangesdays' => 'Deeg déi an de Rezenten Ännerungen ugewise ginn:',
@@ -1189,7 +1209,7 @@ Hei ass een zoufälleg generéierte Wäert deen Dir benotze kënnt: $1',
'savedprefs' => 'Är Astellunge goufe gespäichert.',
'timezonelegend' => 'Zäitzon:',
'localtime' => 'Lokalzäit:',
-'timezoneuseserverdefault' => 'De Standardwert vum Server benotzen',
+'timezoneuseserverdefault' => 'De Standardwäert vun der Wiki ($1) benotzen',
'timezoneuseoffset' => 'Aner (Differenz uginn)',
'timezoneoffset' => 'Zäit-Differenz¹:',
'servertime' => 'Serverzäit:',
@@ -1223,7 +1243,7 @@ Dëst kann net réckgängeg gemaach ginn.",
'prefs-memberingroups' => 'Member vun {{PLURAL:$1|der Benotzergrupp|de Benotzergruppen}}:',
'prefs-registration' => 'Zäitpunkt vum Opmaache vum Benotzerkont:',
'yourrealname' => 'Richtegen Numm:',
-'yourlanguage' => 'Sprooch vun der Benotzeruewerfläch:',
+'yourlanguage' => 'Sprooch:',
'yourvariant' => 'Sproochvariant fir den Inhalt:',
'yournick' => 'Ënnerschrëft:',
'prefs-help-signature' => 'Bemierkungen op Diskussiounssäite solle mat "<nowiki>~~~~</nowiki>" ënnerschriwwe ginn. Dëst gëtt dann an Är Ënnerschrëft an en Zäitstempel ëmgewandelt.',
@@ -1237,8 +1257,8 @@ Si muss manner wéi $1 {{PLURAL:$1|Zeechen|Zeechen}} hunn.',
'prefs-help-gender' => "Fakultativ: gëtt benotzt fir eng ''Gender-korrekt'' Uried duerch d'Software. Dës Informatioun ass ëffentlech.",
'email' => 'E-Mail',
'prefs-help-realname' => 'Äre richtegen Numm ass fakultativ. Wann Dir en ugitt, gëtt e benotzt fir Iech Är Kontributiounen zouzeuerdnen.',
-'prefs-help-email' => "D'E-Mailadress ass fakultativ, awer si erméiglecht et Iech Äert Passwuert ze mailen wann Dir et vergiess hutt.
-Dir kënnt et och zouloossen datt aner Benotzer iech - iwwert e Link op Ärer Benotzersäit oder Ärer Diskussiounssäit - kontaktéiere kënnen ouni datt Dir är Identitéit präisgitt.",
+'prefs-help-email' => "D'E-Mailadress ass fakultativ, awer si gëtt gebraucht fir Iech Äert Passwuert ze mailen, wann Dir et géift vergiessen.",
+'prefs-help-email-others' => 'Dir kënnt Iech och dofir decidéieren datt Anerer Iech iwwer Är Diskussiounssäit kontaktéieren ouni datt Dir dobäi Är Identitéit verrode musst.',
'prefs-help-email-required' => 'Eng gëlteg E-Mailadress gëtt heifir gebraucht.',
'prefs-info' => 'Grondinformatioun',
'prefs-i18n' => 'Internationalisatioun',
@@ -1363,15 +1383,15 @@ Dir kënnt et och zouloossen datt aner Benotzer iech - iwwert e Link op Ärer Be
'right-userrights' => 'All Benotzerrechter änneren',
'right-userrights-interwiki' => 'Benotzerrechter vu Benotzer op anere Wiki-Siten änneren',
'right-siteadmin' => "Datebank spären an d'Spär ophiewen",
-'right-reset-passwords' => 'Anere Benotzer hir Passwierder zrécksetzen',
'right-override-export-depth' => 'Säiten exportéieren inklusiv de verlinkte Säite bis zu enger Déift vu 5',
'right-sendemail' => 'Anere Benotzer E-Maile schécken',
# 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.",
-'rightsnone' => '(keen)',
+'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',
+'rightsnone' => '(keen)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'dës Säit ze liesen',
@@ -1421,14 +1441,14 @@ Dir kënnt et och zouloossen datt aner Benotzer iech - iwwert e Link op Ärer Be
'recentchanges-label-unpatrolled' => 'Dës Ännerung gouf nach net nogekuckt',
'rcnote' => "Hei {{PLURAL:$1|ass déi lescht Ännerung|sinn déi lescht '''$1''' Ännerungen}} {{PLURAL:$2|vum leschten Dag|vun de leschten '''$2''' Deeg}}, Stand: $4 ëm $5 Auer.",
'rcnotefrom' => "Ugewise ginn d'Ännerunge vum '''$2''' un (maximal '''$1''' Ännerunge gi gewisen).",
-'rclistfrom' => 'Weis Ännerunge vu(n) $1 un',
+'rclistfrom' => 'Ännerunge vu(n) $1 u weisen',
'rcshowhideminor' => 'Kleng Ännerunge $1',
'rcshowhidebots' => 'Botte $1',
'rcshowhideliu' => 'Ugemellte Benotzer $1',
'rcshowhideanons' => 'Anonym Benotzer $1',
'rcshowhidepatr' => 'iwwerwaacht Ännerunge $1',
'rcshowhidemine' => 'Meng Ännerunge $1',
-'rclinks' => 'Weis déi lescht $1 Ännerunge vun de leschten $2 Deeg.<br />$3',
+'rclinks' => 'Déi lescht $1 Ännerunge vun de leschten $2 Deeg weisen.<br />$3',
'diff' => 'Ënnerscheed',
'hist' => 'Versiounen',
'hide' => 'verstoppen',
@@ -1494,13 +1514,13 @@ Kuckt [[Special:NewFiles|d'Gallerie vun de neie Fichieren]] wann Dir méi e visu
'minlength1' => "D'Nimm vu Fichiere musse mindestens e Buschtaf am Numm hunn.",
'illegalfilename' => 'Am Fichiersnumm "$1" sti Schrëftzeechen, déi net am Numm vun enger Säit erlaabt sinn. W.e.g. nennt de Fichier anescht, a probéiert dann nach eng Kéier.',
'badfilename' => 'Den Numm vum Fichier gouf an "$1" ëmgeännert.',
-'filetype-mime-mismatch' => 'Dateierweiderung passt net op de MIME-Typ.',
+'filetype-mime-mismatch' => 'Dateierweiderung ".$1" passt net op de MIME-Typ vum Fichier ($2).',
'filetype-badmime' => 'Fichiere vum MIME-Typ "$1" kënnen net eropgeluede ginn.',
'filetype-bad-ie-mime' => 'Dëse Fichier kann net eropgeluede ginn, well den Internet Explorer en als „$1“ erkennt, deen net erlaabt ass well et e potentiell geféierleche Fichierstyp ass.',
'filetype-unwanted-type' => "'''\".\$1\"''' ass een onerwënschte Fichiersformat.
Erwënschte {{PLURAL:\$3|Format ass|Formater sinn}}: \$2.",
-'filetype-banned-type' => "'''.$1''' ass ee Fichersformat deen net erlaabt ass.
-Erlaabt {{PLURAL:$3|ass|sinn}}: $2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|is not a permitted file type|si Fichiersformater déi net erlaabt sinn}}.
+Erlaabt {{PLURAL:$3|ass|sinn}}: $2.',
'filetype-missing' => 'De Fichier huet keng Erweiderung (wéi z. B. ".jpg").',
'empty-file' => 'De Fichier deen Dir geschéckt hutt war eidel.',
'file-too-large' => 'De Fichier deen Dir geschéckt hutt war ze grouss.',
@@ -1516,6 +1536,7 @@ Erlaabt {{PLURAL:$3|ass|sinn}}: $2.",
'large-file' => "D'Fichiere sollen no Méiglechkeet net méi grouss wéi $1 sinn. Dëse Fichier huet $2.",
'largefileserver' => 'Dëse Fichier ass méi grouss wéi déi um Server agestallte Maximalgréisst.',
'emptyfile' => 'De Fichier deen Dir eropgelueden hutt, schéngt eidel ze sinn. Dëst kann duerch en Tippfeeler am Numm vum Fichier kommen. Préift w.e.g. no, op Dir dëse Fichier wierklech eropluede wëllt.',
+'windows-nonascii-filename' => "Dës Wiki ënnerstëtzt d'Spezialzeechen an de Fichiersnimm net.",
'fileexists' => "Et gëtt schonn e Fichier mat dësem Numm, kuckt w.e.g.
'''<tt>[[:$1]]</tt>''' wann Dir net sécher sidd, ob Dir den Numm ännere wëllt.
[[$1|thumb]]",
@@ -1552,6 +1573,8 @@ Wann Dir dëse Fichier trotzdeem eropluede wëllt da gitt w.e.g. zréck a luet d
'php-uploaddisabledtext' => "D'Eropluede vu Fichieren ass am PHP desaktivéiert. Kuckt w.e.g. d'Astellung ''file_uploads'' no.",
'uploadscripted' => 'An dësem Fichier ass HTML- oder Scriptcode, dee vun engem Webbrowser falsch interpretéiert kéint ginn.',
'uploadvirus' => 'An dësem Fichier ass ee Virus! Detailer: $1',
+'uploadjava' => "An dësem ZIP-Fichier ass e JAVA CLASS-Fichier dran.
+D'Eropluede vu JAVA-Fichieren ass net erlaabt, well si d'Ëmgoe vu Sécherheetsmoossnamen erméigleche kënnen.",
'upload-source' => 'Quell-Fichier',
'sourcefilename' => 'Numm vum Originalfichier:',
'sourceurl' => 'Quell-URL:',
@@ -1561,10 +1584,6 @@ Wann Dir dëse Fichier trotzdeem eropluede wëllt da gitt w.e.g. zréck a luet d
'upload-options' => 'Optioune vum Eroplueden',
'watchthisupload' => 'Dëse Fichier iwwerwaachen',
'filewasdeleted' => 'E Fichier mat dësem Numm gouf schonn eemol eropgelueden an duerno nees geläscht. Kuckt w.e.g op $1 no, ier Dir dee Fichier nach eng Kéier eropluet.',
-'upload-wasdeleted' => "'''Opgepasst: Dir luet e Fichier erop, dee schonn eng Kéier geläscht gouf.'''
-
-Kuckt w.e.g. genee no, ob dat neit Eroplueden de Richtlinnen entsprécht.
-Zu Ärer Informatioun steet an der Läsch-Lëscht de Grond vum virege Läschen:",
'filename-bad-prefix' => "Den Numm vum Fichier fänkt mat '''„$1“''' un. Dësen Numm krut en automatesch vun der Kamera a seet näischt iwwer dat aus, wat drop ass. Gitt dem Fichier w.e.gl. en Numm, deen den Inhalt besser beschreift, an deen net verwiesselt ka ginn.",
'upload-success-subj' => 'Eroplueden erfollegräich',
'upload-success-msg' => 'Ärt Eropluede vun [$2] huet fonctionnéiert. De Fichier ass hei disponibel: [[:{{ns:file}}:$1]]',
@@ -1588,12 +1607,29 @@ Wann de Problem weider besteet, dann un de [[Special:ListUsers/sysop|Administrat
'upload-unknown-size' => 'Onbekannte Gréisst',
'upload-http-error' => 'Et ass en HTTP-Feeler geschitt: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Beim Opmaache vum ZIP-Fichier ass e Feeler geschitt.',
+'zip-wrong-format' => 'De Fichier deen Dir uginn hutt war kee ZIP Fichier.',
+'zip-bad' => 'De Fichier ass korrupt oder ass aus anere Grënn en net liesbare ZIP-Fichier.
+E kann net uerdentlech op seng Sécherheet nogekuckt ginn.',
+'zip-unsupported' => "Dëse ZIP-Fichier benotzt ZIP-Fonctiounen déi MediaWiki net ënnerstëtzt.
+E kann net op d'Sécherheet nogekuckt ginn.",
+
+# Special:UploadStash
+'uploadstash' => 'Um Server späichere virum Eroplueden',
+'uploadstash-summary' => 'Op dëser Säit huet en Zougrëff op Fichieren déi eropgeluede sinn (oder am Gaang sinn eropgelueden ze ginn) déi awer nach net op der Wiki publizéiert sinn. Dës Fichier kënnen eenzeg an eleng vun deem Benotzer deen se eropgelueden huet gesi ginn.',
+'uploadstash-clear' => 'Um Server gespäichert Fichieren déi nach net eropgeluede si läschen',
+'uploadstash-nofiles' => 'Dir hutt keng gespäichert Fichieren déi Dir nach net eropgelueden hutt.',
+'uploadstash-badtoken' => "D'Ausféiere vun dëser Aktioun huet net fonctionnéiert, vläicht well d'Informatiounen iwwer Är Rechter ofgelaf sinn. Probéiert et nach emol.",
+'uploadstash-errclear' => "D'Läsche vun de Fichieren huet net fonctionnéiert.",
+'uploadstash-refresh' => 'Lëscht vun de Fichieren aktualiséieren',
+
# img_auth script messages
'img-auth-accessdenied' => 'Zougang refuséiert',
'img-auth-nopathinfo' => 'PATH_INFO feelt.
Äre Server ass net agestallt fir déi Informatioun weiderzeginn.
Et kann u CGI leien an datt imag_auth net ënnerstëtzt gëtt.
-Kuckt http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Kuckt Autorisatioun vum Bild.]',
'img-auth-notindir' => 'De gefrote Pad ass net am Upload-Repertoire agestallt.',
'img-auth-badtitle' => 'Aus "$1" ka kee valabelen Titel gemaach ginn.',
'img-auth-nologinnWL' => 'Dir sidd net ageloggt a(n) "$1" ass net op der Wäisser Lëscht.',
@@ -1670,7 +1706,7 @@ Dës Lëscht weist nëmmen {{PLURAL:$1|den éischte Link|déi éischt $1 Linken}
Eng [[Special:WhatLinksHere/$2|komplett Lëscht]] ass disponibel.',
'nolinkstoimage' => 'Keng Säit benotzt dëse Fichier.',
'morelinkstoimage' => 'Weis [[Special:WhatLinksHere/$1|méi Linken]] op dëse Fichier.',
-'redirectstofile' => '{{PLURAL:$1|De Fichier leet|Dës Fichiere leede}} virun op de Fichier:',
+'linkstoimage-redirect' => '$1 (Fichier-Viruleedung) $2',
'duplicatesoffile' => '{{PLURAL:$1|De Fichier ass een Doublon|Dës Fichiere sinn Doublone}} vum Fichier ([[Special:FileDuplicateSearch/$2|méi Detailer]]):',
'sharedupload' => 'Dëse Fichier ass vu(n) $1 a ka vun anere Projete benotzt ginn.',
'sharedupload-desc-there' => "Dëse Fichier ass vu(n) $1 a kann an anere Projete benotzt ginn.
@@ -1760,18 +1796,19 @@ Dir musst ëmmer de Medien- a Subtyp aginn: z. Bsp. <tt>image/jpeg</tt>.",
'statistics-users-active-desc' => 'Benotzer déi während {{PLURAL:$1|dem leschten Dag|de leschten $1 Deeg}} eppes gemaach hunn',
'statistics-mostpopular' => 'Am meeschte gekuckte Säiten',
-'disambiguations' => 'Homonymie Säiten',
+'disambiguations' => 'Säiten déi op Homonymie-Säite linken',
'disambiguationspage' => 'Template:Homonymie',
'disambiguations-text' => 'Dës Säite si mat enger Homonymie-Säit verlinkt.
Sie sollten am beschten op déi eigentlech gemengte Säit verlinkt sinn.<br />
Eng Säite gëtt als Homonymiesäit behandelt, wa si eng Schabloun benotzt déi vu [[MediaWiki:Disambiguationspage]] verlinkt ass.',
-'doubleredirects' => 'Duebel Viruleedungen',
-'doubleredirectstext' => 'Op dëser Säit stinn déi Säiten déi op aner Viruleedungssäite viruleeden.
+'doubleredirects' => 'Duebel Viruleedungen',
+'doubleredirectstext' => 'Op dëser Säit stinn déi Säiten déi op aner Viruleedungssäite viruleeden.
An all Rei sti Linken zur éischter an zweeter Viruleedung, souwéi d\'Zil vun der zweeter Viruleedung, déi normalerweis déi "richteg" Zilsäit ass, op déi déi éischt Viruleedung hilinke soll.
<del>Duerchgestrachen</del> Linke goufe schonn esou verännert datt déi duebel Viruleedung opgeléist ass.',
-'double-redirect-fixed-move' => '[[$1]] gouf geréckelt, et ass elo eng Viruleedung op [[$2]]',
-'double-redirect-fixer' => 'Verbesserung vu Viruleedungen',
+'double-redirect-fixed-move' => '[[$1]] gouf geréckelt, et ass elo eng Viruleedung op [[$2]]',
+'double-redirect-fixed-maintenance' => 'Flécke vun der duebeler Viruleedung vu(n) [[$1]] op [[$2]].',
+'double-redirect-fixer' => 'Verbesserung vu Viruleedungen',
'brokenredirects' => 'Futtis Viruleedungen',
'brokenredirectstext' => 'Dës Viruleedunge linken op Säiten déi et net gëtt.',
@@ -1848,6 +1885,7 @@ Denkt w.e.g. drunn datt aner Internetsäiten dëse Fichier mat enger direkter UR
'pager-newer-n' => '{{PLURAL:$1|nächsten|nächst $1}}',
'pager-older-n' => '{{PLURAL:$1|vireg|vireg $1}}',
'suppress' => 'Iwwersiicht',
+'querypage-disabled' => 'Dës Spezialsäit ass aus Performance-Grënn ausgeschalt.',
# Book sources
'booksources' => 'Bicherreferenzen',
@@ -1857,8 +1895,8 @@ Denkt w.e.g. drunn datt aner Internetsäiten dëse Fichier mat enger direkter UR
'booksources-invalid-isbn' => "D'ISBN-Nummer déi Dir uginn hutt schéngt net gëlteg ze sinn. Kuckt w.e.g. no ob beim Kopéiere kee Feeler geschitt ass.",
# Special:Log
-'specialloguserlabel' => 'Benotzer:',
-'speciallogtitlelabel' => 'Titel:',
+'specialloguserlabel' => 'Aktive Benotzer:',
+'speciallogtitlelabel' => 'Zil (Titel oder Benotzer):',
'log' => 'Logbicher',
'all-logs-page' => 'All ëffentlech Logbicher',
'alllogstext' => "Dëst ass eng kombinéiert Lëscht vu Logbicher op {{SITENAME}}.
@@ -1898,11 +1936,12 @@ Kuckt och [[Special:WantedCategories|Gewënschte Kategorien]].',
'sp-deletedcontributions-contribs' => 'Kontributiounen',
# Special:LinkSearch
-'linksearch' => 'Extern Linken',
+'linksearch' => 'Extern Linke sichen',
'linksearch-pat' => 'Sich-Critère:',
'linksearch-ns' => 'Nummraum:',
'linksearch-ok' => 'Sichen',
-'linksearch-text' => 'Sougennante "Wildcards" wéi zum Beispill <tt>*.example.com</tt> kënne benotzt ginn.<br />
+'linksearch-text' => 'Sougennante "Wildcards" wéi zum Beispill <tt>*.example.com</tt> kënne benotzt ginn.
+Et muss mindestens en Top-Level-Domaine ugi ginn, wéi z. Bsp. ".org".<br />
Ënnerstëtzte Protekoller: <tt>$1</tt>',
'linksearch-line' => '$1 verlinkt vun $2',
'linksearch-error' => 'Wildcards (*,?) kënnen nëmmen am Ufank vum Host-Numm benotzt ginn.',
@@ -1964,6 +2003,10 @@ D\'E-Mailadress, déi Dir an [[Special:Preferences|Ären Astellungen]] aginn hut
'noemailtext' => 'Dëse Benotzer huet keng valabel E-Mailadress uginn.',
'nowikiemailtitle' => 'Keng E-Mail erlaabt',
'nowikiemailtext' => 'Dëse Benotzer wëllt keng E-Maile vun anere Benotzer kréien.',
+'emailnotarget' => 'Et gëtt keen oder just een net valabele Benotzernumm fir den Empfänger.',
+'emailtarget' => 'Gitt de Benotzernumm vum Empfänger an',
+'emailusername' => 'Benotzernumm:',
+'emailusernamesubmit' => 'Späicheren',
'email-legend' => 'Engem anere(n) {{SITENAME}}-Benotzer eng E-Mail schécken',
'emailfrom' => 'Vum:',
'emailto' => 'Fir:',
@@ -1988,11 +2031,11 @@ D\'E-Mailadress, déi Dir an [[Special:Preferences|Ären Astellungen]] aginn hut
'watchlistanontext' => "Dir musst $1 fir Säiten op ärer Iwwerwaachungslëscht ze gesinn oder z'änneren.",
'watchnologin' => 'Net ageloggt',
'watchnologintext' => "Dir musst [[Special:UserLogin|ugemellt]] sinn, fir Är Iwwerwaachungslëscht z'änneren.",
-'addedwatch' => "Op d'Iwwerwaachungslëscht gesat",
+'addwatch' => "Op d'Iwwerwaachungslëscht derbäisetzen",
'addedwatchtext' => "D'Säit \"[[:\$1]]\" gouf op är [[Special:Watchlist|Iwwerwaachtungslëscht]] gesat. All weider Ännerungen op dëser Säit an/oder der Diskussiounssäit ginn hei opgelëscht, an d'Säit gesäit '''fettgedréckt''' bei de [[Special:RecentChanges|rezenten Ännerungen]] aus, fir se méi séier erëmzefannen.
Wann dir dës Säit net méi iwwerwaache wëllt, klickt op \"Net méi iwwerwaachen\" uewen op der Säit.",
-'removedwatch' => 'Vun der Iwwerwaachungslëscht erofgeholl',
+'removewatch' => 'Vun der Iwwerwaachungslëscht erofhuelen',
'removedwatchtext' => 'D\'Säit "[[:$1]]" gouf vun [[Special:Watchlist|ärer Iwwerwaachungslëscht]] erofgeholl.',
'watch' => 'Iwwerwaachen',
'watchthispage' => 'Dës Säit iwwerwaachen',
@@ -2009,12 +2052,13 @@ Wann dir dës Säit net méi iwwerwaache wëllt, klickt op \"Net méi iwwerwaach
'watchlistcontains' => 'Op ärer Iwwerwaachungslëscht $1 {{PLURAL:$1|steet $1 Säit|stinn $1 Säiten}}.',
'iteminvalidname' => "Problem mat dem Objet '$1', ongëltegen Numm ...",
'wlnote' => "Hei {{PLURAL:$1|ass déi lescht Ännerung|sinn déi lescht '''$1''' Ännerunge}} vun {{PLURAL:$2|der leschter Stonn|de leschte(n) '''$2''' Stonnen}}.",
-'wlshowlast' => "Weis d'Ännerunge vun de leschte(n) $1 Stonnen, $2 Deeg oder $3 (an de leschten 30 Deeg).",
+'wlshowlast' => "D'Ännerunge vun de leschte(n) $1 Stonnen, $2 Deeg oder $3 (an de leschten 30 Deeg) weisen.",
'watchlist-options' => 'Optioune vun der Iwwerwaachungslëscht',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Iwwerwaachen …',
-'unwatching' => 'Net méi iwwerwaachen …',
+'watching' => 'Iwwerwaachen …',
+'unwatching' => 'Net méi iwwerwaachen …',
+'watcherrortext' => 'Beim Ännere vun den Astellunge vun der Iwwerwaachungslëscht fir "$1" ass e Feeler geschitt.',
'enotif_mailer' => '{{SITENAME}} E-Mail-Informatiounssystem',
'enotif_reset' => 'All Säiten als besicht markéieren',
@@ -2047,18 +2091,18 @@ Op Ärer Iwwerwaachungslëscht kënnt Dir all Benoorichtigungsmarkeren zesummen
--
Fir d\'Astellungen op ären E-Mailbenoriichtigungen z\'änneren, besicht w.e.g.
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Fir d\'Astellungen vun ärer Iwwerwaachungslëscht z\'änneren, besicht w.e.g.
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:Special:Watchlist/edit}}
Fir d\'Säit vun Ärer Iwwerwaachungslëscht erofzehuelen, gitt w.e.g. op
$UNWATCHURL
Reaktiounen a méi Hëllef:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Säit läschen',
@@ -2074,7 +2118,7 @@ Reaktiounen a méi Hëllef:
W.e.g. confirméiert, datt Dir dëst wierklech wëllt, datt Dir d'Konsequenze verstitt, an datt dat Ganzt am Aklang mat de [[{{MediaWiki:Policy-url}}|Richtlinne]] geschitt.",
'actioncomplete' => 'Aktioun ofgeschloss',
'actionfailed' => 'Aktioun huet net fonctionnéiert',
-'deletedtext' => '"<nowiki>$1</nowiki>" gouf geläscht. Kuckt $2 fir eng Lëscht vun de Säiten déi viru Kuerzem geläscht goufen.',
+'deletedtext' => '"$1" gouf geläscht. Kuckt $2 fir eng Lëscht vun de Säiten déi viru Kuerzem geläscht goufen.',
'deletedarticle' => 'huet "[[$1]]" geläscht',
'suppressedarticle' => 'geläscht "$1"',
'dellogpage' => 'Läschlëscht',
@@ -2185,9 +2229,8 @@ Hei sinn déi aktuell Astellunge fir d'Säit '''$1''':",
'viewdeletedpage' => 'Geläschte Säite weisen',
'undeletepagetext' => "Dës {{PLURAL:$1|Säit gouf |Säite goufe}} geläscht mee sinn nach ëmmer am Archiv a kënne vun Administrateure restauréiert ginn. D'Archiv gëtt periodesch eidel gemaach.",
'undelete-fieldset-title' => 'Versioune restauréieren',
-'undeleteextrahelp' => "Fir d'Säit komplett mat alle Versiounen ze retabléieren, markéiert keng vun den eenzelne Casë mat engem Krop a klickt op '''''Restauréieren'''''.
-Fir nëmmen eng bestëmmte Versioun vun der Säit ze restauréieren, markéiert d'Case vun der gewënschter Versioun mat engem Krop, a klickt duerno op '''''Restauréieren'''''.
-Klickt op '''''Reset''''' fir d'Kommentarfeld eidel ze maachen an d'Kreep aus all de Casen ewechzehuelen.",
+'undeleteextrahelp' => "Fir d'Säit komplett mat alle Versiounen ze restauréieren, markéiert keng vun den eenzelne Casë mat engem Krop a klickt op '''''{{int:undeletebtn}}'''''.
+Fir nëmmen eng bestëmmte Versioun vun der Säit ze restauréieren, markéiert d'Case vun der gewënschter Versioun mat engem Krop, a klickt duerno op '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '{{PLURAL:$1|1 Versioun|$1 Versiounen}} archivéiert',
'undeletehistory' => 'Wann Dir dës Säit restauréiert, ginn och all déi al Versioune restauréiert.
Wann zënter dem Läschen eng nei Säit mat dem selwechten Numm ugeluecht gouf, ginn déi restauréiert Versioune chronologesch an den Historique agedroen.',
@@ -2228,9 +2271,12 @@ $1',
'undelete-show-file-submit' => 'Jo',
# Namespace form on various pages
-'namespace' => 'Nummraum:',
-'invert' => 'Auswiel ëmdréinen',
-'blanknamespace' => '(Haapt)',
+'namespace' => 'Nummraum:',
+'invert' => 'Auswiel ëmdréinen',
+'tooltip-invert' => 'Klickt dës Këscht fir Ännerungen am erausgesichten Nummraum (an den associéierten Nummraim wa se markéiert sinn) ze verstoppen.',
+'namespace_association' => 'Associéierten Nummraum',
+'tooltip-namespace_association' => 'Dës Këscht uklicke fir den Diskussiouns oder den associéierten Nummraum mat dem erausgesichten Nummraum matanzebezéien',
+'blanknamespace' => '(Haapt)',
# Contributions
'contributions' => 'Kontributioune vum Benotzer',
@@ -2279,11 +2325,13 @@ $1',
'whatlinkshere-filters' => 'Filteren',
# Block/unblock
+'autoblockid' => 'Automatesch Spär #$1',
+'block' => 'Benotzer spären',
+'unblock' => "D'Spär vum Benotzer ophiewen",
'blockip' => 'Benotzer spären',
'blockip-title' => 'Benotzer spären',
'blockip-legend' => 'Benotzer spären',
'blockiptext' => 'Benotzt dëse Formulaire fir eng spezifesch IP-Adress oder e Benotzernumm ze spären. Dëst soll nëmmen am Fall vu Vandalismus gemaach ginn, en accordance mat den [[{{MediaWiki:Policy-url}}|interne Richlinen]]. Gitt e spezifesche Grond un (zum Beispill Säite wou Vandalismus virgefall ass).',
-'ipaddress' => 'IP-Adress oder Benotzernamm:',
'ipadressorusername' => 'IP-Adress oder Benotzernumm:',
'ipbexpiry' => 'Gültegkeet:',
'ipbreason' => 'Grond:',
@@ -2296,7 +2344,7 @@ $1',
**Beleidegt oder bedréit aner Mataarbechter
**Mëssbrauch vu verschiddene Benotzernimm
**Net akzeptabele Benotzernumm",
-'ipbanononly' => 'Nëmmen anonym Benotzer spären',
+'ipb-hardblock' => 'Verhënneren datt ageloggte Benotzer vun dëser IP-Adress aus Ännerunge maache kënnen',
'ipbcreateaccount' => 'Opmaache vun engem Benotzerkont verhënneren',
'ipbemailban' => 'Verhënneren datt de Benotzer E-Maile verschéckt',
'ipbenableautoblock' => 'Automatesch déi lescht IP-Adress spären déi vun dësem Benotzer benotzt gouf, an all IP-Adresse vun denen dëse Benotzer versicht Ännerunge virzehuelen',
@@ -2307,13 +2355,16 @@ $1',
'ipbotherreason' => 'Aneren oder zousätzleche Grond:',
'ipbhidename' => 'Benotzernumm op Lëschten a bei Ännerunge verstoppen',
'ipbwatchuser' => 'Dësem Benotzer seng Benotzer- an Diskussiouns-Säit iwwerwaachen',
-'ipballowusertalk' => 'Benotzer däerf seng Diskussiounssäiten änneren esouguer wann e gespaart ass',
+'ipb-disableusertalk' => "Dëse Benotzer dorun hënnere fir seng eegen Diskussiounssäit z'änneren esou laang wéi et gespaart ass",
'ipb-change-block' => 'De Benotzer mat dese Parameteren nees spären',
+'ipb-confirm' => 'Spär confirméieren',
'badipaddress' => "D'IP-Adress huet dat falscht Format.",
'blockipsuccesssub' => 'Gouf gespaart',
'blockipsuccesstext' => "[[Special:Contributions/$1|$1]] gouf gespaart. <br />
Kuckt d'[[Special:IPBlockList|IP Spär-Lëscht]] fir all Spären ze gesin.",
+'ipb-blockingself' => 'Dir sidd am gaang Iech selwer ze spären! Sidd Dir sécher datt Dir dat maache wëllt?',
+'ipb-confirmhideuser' => 'Dir sidd am gaang e Benotzer ze späre mat der Fonctioun "Benotzer verstoppen" ageschalt. Dëst hëlt den Numm vum Benotzer aus alle Lëschten a Logbicher eraus. Sidd Dir sécher datt Dir dat maache wëllt?',
'ipb-edit-dropdown' => 'Spärgrënn änneren',
'ipb-unblock-addr' => 'Spär vum $1 ophiewen',
'ipb-unblock' => 'Spär vun enger IP-Adress oder engem Benotzer ophiewen',
@@ -2323,17 +2374,23 @@ Kuckt d'[[Special:IPBlockList|IP Spär-Lëscht]] fir all Spären ze gesin.",
'unblockiptext' => 'Benotzt dëse Formulaire fir enger IP-Adress oder engem Benotzer seng Spär opzehiewen.',
'ipusubmit' => 'Des Spär ophiewen',
'unblocked' => "D'Spär fir de [[User:$1|Benotzer $1]] gouf opgehuewen",
+'unblocked-range' => "D'Spär vum $1 gouf opgehuewen",
'unblocked-id' => "D'Spär $1 gouf opgehuewen",
+'blocklist' => 'Gespaarte Benotzer',
'ipblocklist' => 'Gespaarte Benotzer',
'ipblocklist-legend' => 'No engem gespaarte Benotzer sichen',
-'ipblocklist-username' => 'Benotzernumm oder IP-Adress:',
-'ipblocklist-sh-userblocks' => 'Benotzerspäre $1',
-'ipblocklist-sh-tempblocks' => 'temporär Späre $1',
-'ipblocklist-sh-addressblocks' => 'eenzel IP-Adressen déi gespaart si $1',
+'blocklist-userblocks' => 'Benotzerspäre verstoppen',
+'blocklist-tempblocks' => 'Temporär Späre verstoppen',
+'blocklist-addressblocks' => 'Eenzel IP-Späre verstoppen',
+'blocklist-timestamp' => 'Zäitstempel',
+'blocklist-target' => 'Zil',
+'blocklist-expiry' => 'Spär bis',
+'blocklist-by' => 'Gespaart vum Administrateur',
+'blocklist-params' => 'Parameter vun der Spär',
+'blocklist-reason' => 'Grond',
'ipblocklist-submit' => 'Sichen',
'ipblocklist-localblock' => 'Lokal Spär',
'ipblocklist-otherblocks' => 'Aner {{PLURAL:$1|Spär|Spären}}',
-'blocklistline' => '$1, $2 huet de Benotzer:$3 gespaart (gëllt $4)',
'infiniteblock' => 'onbegrenzt',
'expiringblock' => 'bis den $1 ëm $2',
'anononlyblock' => 'nëmmen anonym Benotzer',
@@ -2356,7 +2413,7 @@ De Grond dee fir d\'Spär vum $1 ugi gouf ass: "$2".',
'reblock-logentry' => "huet d'Spär vum [[$1]] bis den $2 $3 geännert",
'blocklogtext' => "Dëst ass eng Lëscht vu Spären a vu Spären déi opgehuewe goufen.
Automatesch gespaarten IP-Adresse sinn hei net opgelëscht.
-Kuckt d'[[Special:IPBlockList|IP Spärlëscht]] fir déi aktuell Spären.",
+Kuckt d'[[Special:BlockList|IP Spärlëscht]] fir déi aktuell Spären.",
'unblocklogentry' => "huet d'Spär vum $1 opgehuewen",
'block-log-flags-anononly' => 'Nëmmen anonym Benotzer',
'block-log-flags-nocreate' => 'Schafe vu Benotzerkonte gespaart',
@@ -2370,9 +2427,9 @@ Kuckt d'[[Special:IPBlockList|IP Spärlëscht]] fir déi aktuell Spären.",
'ipb_expiry_temp' => 'Verstoppte Späre vu Benotzernimm solle permanent sinn.',
'ipb_hide_invalid' => 'Dëse Benotzerkont kann net geläscht ginn; et ka sinn datt zevill Ännerunge vun deem Benotzer gemaach goufen.',
'ipb_already_blocked' => '"$1" ass scho gespaart.',
-'ipb-needreblock' => "== Scho gespaart ==
-„$1“ ass scho gespaart. Wëllt dir d'Parametere vun der Spär änneren?",
+'ipb-needreblock' => "$1 ass scho gespaart. Wëllt Dir d'Parametere vun der Spär änneren?",
'ipb-otherblocks-header' => 'Aner {{PLURAL:$1|Spär|Spären}}',
+'unblock-hideuser' => "D'Spär vun dësem Benotzer kann net vun Iech opgehuewe gi well dee Benotzernumm verstoppt gouf.",
'ipb_cant_unblock' => "Feeler: D'Nummer vun der Spär $1 gouf net fonnt. D'Spär gouf waarscheinlech schonn opgehuewen.",
'ipb_blocked_as_range' => "Feeler: D'IP-Adress $1 gouf net direkt gespaart an déi Spär kann dofir och net opghuewe ginn.
Si ass awer als Deel vun der Rei $2 gespaart, an dës Spär kann opgehuewe ginn.",
@@ -2411,6 +2468,7 @@ Denkt drun [[Special:UnlockDB|d'Spär erëm ewechzehuele]] soubaal d'Maintenance
'lockfilenotwritable' => "De Fichier mat de Späre vun der Datebank kann net geännert ginn.
Fir d'Datebank ze spären oder fir d'Spär opzehiewen muss dëse Fichier vum Webserver geännert kënne ginn.",
'databasenotlocked' => "D'Datebank ass net gespaart.",
+'lockedbyandtime' => '(vum $1 de(n) $2 ëm $3 Auer)',
# Move page
'move-page' => 'Réckel $1',
@@ -2529,7 +2587,7 @@ Wann nëmmen déi aktuell Versioun exportéiert soll ginn, kënnt Dir och e Link
'allmessagesdefault' => 'Standardtext',
'allmessagescurrent' => 'Aktuellen Text',
'allmessagestext' => "Dëst ass eng Lëscht vun alle '''Messagen am MediaWiki:Nummraum, déi vun der MediaWiki-Software benotzt ginn.
-Besicht w.e.g. [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisatioun] an [http://translatewiki.net translatewiki.net] wann Dir wëllt bei de MediaWiki Iwwersetzunge matschaffen.",
+Besicht w.e.g. [//www.mediawiki.org/wiki/Localisation MediaWiki Localisatioun] an [//translatewiki.net translatewiki.net] wann Dir wëllt bei de MediaWiki Iwwersetzunge matschaffen.",
'allmessagesnotsupportedDB' => "Dës Säit kann net benotzt gi well '''\$wgUseDatabaseMessages''' ausgeschalt ass.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter nom ugepassten Zoustand:',
@@ -2682,9 +2740,7 @@ Erlaabt et e Grond an de Resumé derbäizesetzen.',
'common.js' => '/* All JavaScript hei gëtt fir all Benotzer beim Luede vun all Säit gelueden. */',
# Metadata
-'nodublincore' => 'Dublin Core RDF Metadata ass op dësem Server ausgeschalt.',
-'nocreativecommons' => 'Creative Commons RDF Metadata ass op dësem Server ausgeschalt.',
-'notacceptable' => "De Wiki-Server kann d'Donnéeë net an engem Format liwweren déi vun ärem Apparat geliest kënne ginn.",
+'notacceptable' => "De Wiki-Server kann d'Donnéeë net an engem Format liwweren déi vun ärem Apparat geliest kënne ginn.",
# Attribution
'anonymous' => '{{PLURAL:$1|Anonyme Benotzer|Anonym Benotzer}} op {{SITENAME}}',
@@ -2708,12 +2764,17 @@ Dëst warscheinlech duerch en externe Link den op der schwaarzer Lëscht (blackl
'spam_blanking' => 'An alle Versioune ware Linken op $1, et ass elo alles gebotzt.',
# Info page
-'infosubtitle' => 'Informatioun zur Säit',
-'numedits' => 'Zuel vun den Ännerunge vun dëser Säit: $1',
-'numtalkedits' => 'Zuel vun den Ännerungen (Diskussiounssäit): $1',
-'numwatchers' => 'Zuel vun de Benotzer déi dës Säit iwwerwaachen: $1',
-'numauthors' => 'Zuel vu verschiddenen Auteuren: $1',
-'numtalkauthors' => 'Zuel vun den Auteuren (Diskussiounssäit): $1',
+'pageinfo-title' => 'Informatioun iwwer "$1"',
+'pageinfo-header-edits' => 'Ännerungen',
+'pageinfo-header-watchlist' => 'Iwwerwaachungslëscht',
+'pageinfo-header-views' => 'Affichagen',
+'pageinfo-subjectpage' => 'Säit',
+'pageinfo-talkpage' => 'Diskussiounssäit',
+'pageinfo-watchers' => 'Zuel vun de Benotzer déi iwwerwaachen',
+'pageinfo-edits' => 'Zuel vun den Ännerungen',
+'pageinfo-authors' => 'Zuel vun de verschiddenen Auteuren',
+'pageinfo-views' => 'Zuel vun de Kéieren déi dës Säit gekuckt gouf',
+'pageinfo-viewsperedit' => 'Affichage pro Ännerung',
# Skin names
'skinname-standard' => 'Klassesch',
@@ -2725,26 +2786,6 @@ Dëst warscheinlech duerch en externe Link den op der schwaarzer Lëscht (blackl
'skinname-simple' => 'Einfach',
'skinname-modern' => 'Modern',
-# Math options
-'mw_math_png' => 'Ëmmer als PNG duerstellen',
-'mw_math_simple' => 'Einfachen TeX als HTML duerstellen, soss PNG',
-'mw_math_html' => 'Wa méiglech als HTML duerstellen, soss PNG',
-'mw_math_source' => 'Als TeX loossen (fir Textbrowser)',
-'mw_math_modern' => 'Recommandéiert fir modern Browser',
-'mw_math_mathml' => 'MathML wa méiglech (experimentell)',
-
-# Math errors
-'math_failure' => 'Parser-Feeler',
-'math_unknown_error' => 'Onbekannte Feeler',
-'math_unknown_function' => 'Onbekannte Funktioun',
-'math_lexing_error' => "'Lexing'-Feeler",
-'math_syntax_error' => 'Syntaxfeeler',
-'math_image_error' => "D'PNG-Konvertéierung huet net fonctionnéiert;
-iwwerpréift déi korrekt Installatioun vu LaTeX an dvipng (oder dvips + gs + convert)",
-'math_bad_tmpdir' => 'Den temporäre Repertire fir mathematesch Formele kann net ugeluecht ginn oder et kann näischt do gespäichert ginn.',
-'math_bad_output' => 'Den Zilrepertoire fir mathematesch Formele kann net ugeluecht ginn oder et kann näischt do gespäichert ginn.',
-'math_notexvc' => 'Den texvc Programm feelt: Liest w.e.g. math/README fir en anzestellen.',
-
# Patrolling
'markaspatrolleddiff' => 'Als nogekuckt markéieren',
'markaspatrolledtext' => 'Dës Säit als nogekuckt markéieren',
@@ -2780,22 +2821,25 @@ $1',
'nextdiff' => 'Méi nei Ännerung →',
# Media information
-'mediawarning' => "'''Warnung:''' Dës Zort vu Fichier kann e béiswëllege Programmcode enthalen.
+'mediawarning' => "'''Warnung:''' Dës Zort vu Fichier kann e béiswëllege Programmcode enthalen.
Duerch d'Opmaache vum Fichier kann Äre System beschiedegt ginn.",
-'imagemaxsize' => "Maximal Gréisst fir Biller:<br />''(fir Billerbeschreiwungssäiten)''",
-'thumbsize' => 'Gréisst vun der Miniatur:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Säit|Säiten}}',
-'file-info' => 'Dateigréisst: $1, MIME-Typ: $2',
-'file-info-size' => '$1 × $2 Pixel, Dateigréisst: $3, MIME-Typ: $4',
-'file-nohires' => '<small>Et gëtt keng méi héich Opléisung.</small>',
-'svg-long-desc' => 'SVG-Fichier, Basisgréisst: $1 × $2 Pixel, Gréisst vum Fichier: $3',
-'show-big-image' => 'Voll Opléisung',
-'show-big-image-thumb' => '<small>Gréisst vun der Miniatur: $1 × $2 Pixel</small>',
-'file-info-gif-looped' => 'Endloosschleef',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|Bild|Biller}}',
-'file-info-png-looped' => 'Endlossschleef',
-'file-info-png-repeat' => 'gouf $1 {{PLURAL:$1|mol|mol}} gespillt',
-'file-info-png-frames' => '$1 {{PLURAL:$1|Frame|Framen}}',
+'imagemaxsize' => "Maximal Gréisst fir Biller:<br />''(fir Billerbeschreiwungssäiten)''",
+'thumbsize' => 'Gréisst vun der Miniatur:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Säit|Säiten}}',
+'file-info' => 'Dateigréisst: $1, MIME-Typ: $2',
+'file-info-size' => '$1 × $2 Pixel, Dateigréisst: $3, MIME-Typ: $4',
+'file-info-size-pages' => '$1 × $2 Pixelen, Gréisst vum Fichier: $3, MIME Typ: $4, $5 {{PLURAL:$5|Säit|Säiten}}',
+'file-nohires' => '<small>Et gëtt keng méi héich Opléisung.</small>',
+'svg-long-desc' => 'SVG-Fichier, Basisgréisst: $1 × $2 Pixel, Gréisst vum Fichier: $3',
+'show-big-image' => 'Voll Opléisung',
+'show-big-image-preview' => '<small>Gréisst vun dësem Preview: $1.</small>',
+'show-big-image-other' => '<small>Aner Gréissten: $1.</small>',
+'show-big-image-size' => '$1 × $2 Pixel',
+'file-info-gif-looped' => 'Endloosschleef',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|Bild|Biller}}',
+'file-info-png-looped' => 'Endlossschleef',
+'file-info-png-repeat' => 'gouf $1 {{PLURAL:$1|mol|mol}} gespillt',
+'file-info-png-frames' => '$1 {{PLURAL:$1|Frame|Framen}}',
# Special:NewFiles
'newimages' => 'Gallerie vun den neie Biller',
@@ -2820,14 +2864,21 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
'metadata-help' => 'An dësem Fichier si weider Informatiounen, déi normalerweis vun der Digitalkamera oder dem benotzte Scanner kommen. Wann de Fichier nodréiglech geännert gouf, kann et sinn datt eenzel Detailer net mat dem aktuelle Fichier iwwereneestëmmen.',
'metadata-expand' => 'Weis detailléiert Informatiounen',
'metadata-collapse' => 'Verstopp detailléiert Informatiounen',
-'metadata-fields' => "Dës Felder vun den EXIF-Metadate ginn op Bildbeschreiwungssäite gewise wann d'Metadatentafel zesummegeklappt ass. Déi aner sinn am Standard verstoppt, kënne awer ugewise ginn.
+'metadata-fields' => "D'Bild-Meta-Felder aus dëser Lëscht ginn op Bildbeschreiwungssäite gewise wann d'Metadatentafel zesummegeklappt ass.
+Déi aner sinn am Standard verstoppt.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Breet',
@@ -2842,13 +2893,11 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
'exif-ycbcrpositioning' => 'Y an C Positionéierung',
'exif-xresolution' => 'Horizontal Opléisung',
'exif-yresolution' => 'Vertikal Opléisung',
-'exif-resolutionunit' => 'Moosseenheet vun der Opléisung',
'exif-stripoffsets' => 'Plaz wou de Fichier vum Bild gespäichert ass',
'exif-rowsperstrip' => 'Zuel vun den Zeile pro Strëpp',
'exif-stripbytecounts' => 'Byte pro kompriméiert Strëpp',
'exif-jpeginterchangeformat' => 'Offset zou JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Gréisst vun de JPEG-Daten a Byten',
-'exif-transferfunction' => 'Transferfunktioun',
'exif-whitepoint' => 'Manuell mat Miessung',
'exif-primarychromaticities' => 'Faarwe vun de primäre Faarwen',
'exif-ycbcrcoefficients' => 'YCbCr-Koeffizienten',
@@ -2867,7 +2916,6 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
'exif-compressedbitsperpixel' => 'Kompriméiert Bite pro Pixel',
'exif-pixelydimension' => 'Breet vum Bild',
'exif-pixelxdimension' => 'Héicht vum Bild',
-'exif-makernote' => 'Notize vum Fabrikant',
'exif-usercomment' => 'Bemierkunge vum Benotzer',
'exif-relatedsoundfile' => 'Tounfichier deen dozou gehéiert',
'exif-datetimeoriginal' => 'Erfaassungszäitpunkt',
@@ -2881,7 +2929,6 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
'exif-exposureprogram' => 'Beliichtungsprogramm',
'exif-spectralsensitivity' => 'Spectral Sensitivitéit',
'exif-isospeedratings' => 'Film- oder Sensorempfindlechkeet (ISO)',
-'exif-oecf' => 'Optoelektroneschen Ëmrechnungsfakteur',
'exif-shutterspeedvalue' => 'APEX Beliichtungszäit',
'exif-aperturevalue' => 'APEX Blendewäert',
'exif-brightnessvalue' => 'APEX Hellegkeet',
@@ -2894,7 +2941,6 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
'exif-focallength' => 'Brennwäit',
'exif-subjectarea' => 'Beräich',
'exif-flashenergy' => 'Blëtzstäerkt',
-'exif-spatialfrequencyresponse' => 'Spatial-Frequenz',
'exif-focalplanexresolution' => 'Sensoropléisung horizontal',
'exif-focalplaneyresolution' => 'Sensoropléisung vertikal',
'exif-focalplaneresolutionunit' => 'Eenheet vun der Sensoropléisung',
@@ -2903,7 +2949,6 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
'exif-sensingmethod' => 'Miessmethod',
'exif-filesource' => 'Quell vum Fichier',
'exif-scenetype' => 'Typ vun der Szeen',
-'exif-cfapattern' => 'CFA-Muster',
'exif-customrendered' => 'Benotzerdefinéiert Bildveraarbechtung',
'exif-exposuremode' => 'Beliichtungsmodus',
'exif-whitebalance' => 'Wäissofgläich',
@@ -2948,11 +2993,69 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
'exif-gpsareainformation' => 'Numm vun der GPS-Géigend',
'exif-gpsdatestamp' => 'GPS-Datum',
'exif-gpsdifferential' => 'GPS-Differentialverbesserung',
+'exif-jpegfilecomment' => 'Bemierkung zum JPEG-Fichier',
+'exif-keywords' => 'Stéchwierder',
+'exif-worldregioncreated' => "Welt-Regioun an där d'Bild gemaach gouf",
+'exif-countrycreated' => "Land an deem d'Bild gemaach gouf",
+'exif-countrycodecreated' => "Code fir d'Land an deem d'Bild gemaach gouf",
+'exif-provinceorstatecreated' => "Provënz oder Staat an deem d'Bild gemaach gouf",
+'exif-citycreated' => "Stad an där d'Bild gemaach gouf",
+'exif-sublocationcreated' => "Deel vun der Stad an deem d'Bild gemaach gouf",
+'exif-worldregiondest' => 'Gewise Welt-Regioun',
+'exif-countrydest' => 'Gewisent Land',
+'exif-countrycodedest' => 'Code vum gewisene Land',
+'exif-provinceorstatedest' => 'Gewise Provënz oder Deel vun engem Land',
+'exif-citydest' => 'Gewise Stad',
+'exif-sublocationdest' => 'Gewisenen Deel vun der Stad',
'exif-objectname' => 'Kuerzen Titel',
+'exif-specialinstructions' => 'Besonnesch Instruktiounen',
+'exif-headline' => 'Iwwerschrëft',
+'exif-source' => 'Quell',
+'exif-editstatus' => 'Redaktionnelle Statut vum Bild',
+'exif-urgency' => 'Urgence',
+'exif-fixtureidentifier' => 'Numm vun der Rubrik',
+'exif-objectcycle' => 'Zäit vum Dag fir deen dëse Fichier geduecht ass',
+'exif-contact' => 'Kontaktinformatioun',
+'exif-writer' => 'Auteur',
+'exif-languagecode' => 'Sprooch',
+'exif-iimversion' => 'IIM-Versioun',
+'exif-iimcategory' => 'Kategorie',
+'exif-iimsupplementalcategory' => 'Zousätzlech Kategorien',
+'exif-datetimeexpires' => 'Net benotzen nom',
+'exif-datetimereleased' => 'Erausginn den',
+'exif-identifier' => 'Identifiant',
+'exif-lens' => 'Objektiv dat benotzt gouf',
+'exif-serialnumber' => 'Seriennummer vun der Kamera',
+'exif-cameraownername' => 'Besëtzer vun der Kamera',
+'exif-label' => 'Etiquette',
+'exif-datetimemetadata' => 'Datum vun der leschter Ännerung vun de Metadaten',
+'exif-nickname' => 'Informellen Numm vum Bild',
+'exif-rating' => 'Bewäertung (vu 5)',
+'exif-rightscertificate' => 'Zertifikat vun der Gestioun vun de Rechter',
+'exif-copyrighted' => 'Copyright Status',
+'exif-copyrightowner' => "Titulaire vun den Droits d'auteur",
+'exif-usageterms' => 'Benotzungsbedingungen',
+'exif-licenseurl' => 'URL vum Copyright (Lizenz)',
+'exif-morepermissionsurl' => 'Alternativ Lizenzinformatiounen',
+'exif-attributionurl' => 'Wann dëst Wierk weiderbenotzt gëtt, da linkt w.e.g. op',
+'exif-preferredattributionname' => 'Wann dëst Wierk weiderbenotzt gëtt, da nennt w.e.g.',
+'exif-pngfilecomment' => 'Bemierkung zum PNG-Fichier',
+'exif-disclaimer' => 'Limitatioun vun der Responsabilitéit',
+'exif-contentwarning' => 'Warnung iwwer den Inhalt',
+'exif-giffilecomment' => 'Bemierkung zum GIF-Fichier',
+'exif-intellectualgenre' => 'Typ vum Element',
+'exif-subjectnewscode' => 'Code vum Sujet',
+'exif-organisationinimage' => 'Organisatioun um Bild',
+'exif-personinimage' => 'Persoun um Bild',
+'exif-originalimageheight' => 'Héicht vum Bild virum Ofschneiden',
+'exif-originalimagewidth' => 'Breet vum Bild virum Ofschneiden',
# EXIF attributes
'exif-compression-1' => 'Onkompriméiert',
+'exif-copyrighted-true' => 'Duerch Copyright geschützt',
+'exif-copyrighted-false' => 'Ëffentlechen Domaine',
+
'exif-unknowndate' => 'Onbekannten Datum',
'exif-orientation-1' => 'Normal',
@@ -2967,6 +3070,8 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
'exif-planarconfiguration-1' => 'Graffe Format',
'exif-planarconfiguration-2' => 'Planare Format',
+'exif-colorspace-65535' => 'Net kalibréiert',
+
'exif-componentsconfiguration-0' => 'Gëtt et net',
'exif-exposureprogram-0' => 'Onbekannt',
@@ -3080,6 +3185,10 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
'exif-gpslongitude-e' => 'ëstlech Längt',
'exif-gpslongitude-w' => 'westlech Längt',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{plural:$1|Meter|Meter}} iwwer dem Niveau vum Mier',
+'exif-gpsaltitude-below-sealevel' => '$1 {{plural:$1|Meter|Meter}} ënner dem Niveau vum Mier',
+
'exif-gpsstatus-a' => 'Miessung am gaang',
'exif-gpsstatus-v' => 'Interoperabilitéit vu der Miessung',
@@ -3091,21 +3200,71 @@ Duerno sti Linken déi Ausnamen definéieren, an deenen hirem Kontext dat Bild a
'exif-gpsspeed-m' => 'Meile pro Stonn',
'exif-gpsspeed-n' => 'Kniet',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometer',
+'exif-gpsdestdistance-m' => 'Meilen',
+'exif-gpsdestdistance-n' => 'Nautesch Meilen',
+
+'exif-gpsdop-excellent' => 'Exzellent ($1)',
+'exif-gpsdop-good' => 'Gutt ($1)',
+'exif-gpsdop-moderate' => 'Mëttel ($1)',
+'exif-gpsdop-fair' => 'Ongeféier ($1)',
+'exif-gpsdop-poor' => 'Schwaach ($1)',
+
+'exif-objectcycle-a' => 'Nëmme moies',
+'exif-objectcycle-p' => 'Nëmmen owes',
+'exif-objectcycle-b' => 'Esouwuel moies wéi owes',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Tatsächlech Richtung',
'exif-gpsdirection-m' => 'Magnéitesch Richtung',
+'exif-ycbcrpositioning-1' => 'Zentréiert',
+
+'exif-dc-contributor' => 'Bedeelegt',
+'exif-dc-date' => 'Datum(en)',
+'exif-dc-publisher' => 'Editeur',
+'exif-dc-relation' => 'Verbonne Medien',
+'exif-dc-rights' => 'Rechter',
+'exif-dc-source' => 'Ursprong vum Fichier',
+'exif-dc-type' => 'Medientyp',
+
+'exif-rating-rejected' => 'Refuséiert',
+
+'exif-isospeedratings-overflow' => 'Méi grouss wéi 65535',
+
+'exif-iimcategory-ace' => 'Konscht, Kultur an Ënnerhalung',
+'exif-iimcategory-clj' => 'Kriminalitéit a Recht',
+'exif-iimcategory-dis' => 'Katastrofen an Akzidenter',
+'exif-iimcategory-fin' => 'Economie a Geschäft',
+'exif-iimcategory-edu' => 'Formatioun',
+'exif-iimcategory-evn' => 'Ëmwelt',
+'exif-iimcategory-hth' => 'Gesondheet',
+'exif-iimcategory-hum' => 'Interessen',
+'exif-iimcategory-lab' => 'Aarbecht',
+'exif-iimcategory-lif' => 'Lifestyle a Fräizäit',
+'exif-iimcategory-pol' => 'Politik',
+'exif-iimcategory-rel' => 'Relioun a Glawen',
+'exif-iimcategory-sci' => 'Wëssenschaft an Technologie',
+'exif-iimcategory-soi' => 'Sozial Themen',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Krich, Konflikt an Onrou',
+'exif-iimcategory-wea' => 'Wieder',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Niddreg ($1)',
+'exif-urgency-high' => 'Héich ($1)',
+'exif-urgency-other' => 'Benotzerdefinéiert Prioritéit ($1)',
+
# External editor support
'edit-externally' => 'Dëse Fichier mat engem externe Programm veränneren',
-'edit-externally-help' => "(Fir gewuer ze gi wéi dat genee geet liest d'[http://www.mediawiki.org/wiki/Manual:External_editors Installatiounsinstruktiounen].)",
+'edit-externally-help' => "(Fir gewuer ze gi wéi dat genee geet liest d'[//www.mediawiki.org/wiki/Manual:External_editors Installatiounsinstruktiounen].)",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'all',
-'imagelistall' => 'alleguerten',
-'watchlistall2' => 'all',
-'namespacesall' => 'all',
-'monthsall' => 'all',
-'limitall' => 'all',
+'watchlistall2' => 'all',
+'namespacesall' => 'all',
+'monthsall' => 'all',
+'limitall' => 'all',
# E-mail address confirmation
'confirmemail' => 'E-Mailadress confirméieren',
@@ -3176,15 +3335,22 @@ $1",
'trackbackdeleteok' => "Den ''Trackback'' gouf geläscht.",
# Delete conflict
-'deletedwhileediting' => "'''Opgepasst''': Dës Säit gouf geläscht nodeems datt dir ugefaangen hutt se z'änneren!",
-'confirmrecreate' => "De Benotzer [[User:$1|$1]] ([[User talk:$1|Diskussioun]]) huet dës Säit geläscht, nodeems datt där ugefaangen hutt drun ze schaffen. D'Begrënnung war: ''$2'' Bestätegt w.e.g., datt Dir dës Säit wierklich erëm nei opmaache wëllt.",
-'recreate' => 'Erëm uleeën',
+'deletedwhileediting' => "'''Opgepasst''': Dës Säit gouf geläscht nodeems datt dir ugefaangen hutt se z'änneren!",
+'confirmrecreate' => "De Benotzer [[User:$1|$1]] ([[User talk:$1|Diskussioun]]) huet dës Säit geläscht, nodeems datt där ugefaangen hutt drun ze schaffen. D'Begrënnung war: ''$2'' Bestätegt w.e.g., datt Dir dës Säit wierklich erëm nei opmaache wëllt.",
+'confirmrecreate-noreason' => 'De Benotzer [[User:$1|$1]] ([[User talk:$1|Diskussioun]]) huet dës Säit geläscht, nodeems datt Dir ugefaangen hutt drun ze schaffen. Confirméiert w.e.g., datt Dir dës Säit wierklech erëm nei opmaache wëllt.',
+'recreate' => 'Erëm uleeën',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Dës Säit aus dem Server-Cache läschen?',
'confirm-purge-bottom' => "Mécht de Cache vun enger Säit eidel a forcéiert d'Uweise vun der aktueller Versioun.",
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Dës Säit op Är Iwwerwaachungslëscht bäisetzen?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Dës Säit vun Ärer Iwwerwaachungslëscht erofhuelen?',
+
# Multipage image navigation
'imgmultipageprev' => '↠Vireg Säit',
'imgmultipagenext' => 'nächst Säit →',
@@ -3210,7 +3376,7 @@ $1",
'autosumm-new' => "Säit ugeluecht mat: '$1'",
# Live preview
-'livepreview-loading' => 'Lueden …',
+'livepreview-loading' => 'Lueden…',
'livepreview-ready' => 'Lueden … Fäerdeg!',
'livepreview-failed' => "Live-Preview huet net fonctionéiert! Benotzt w.e.g. d'Fonctioun ''Kucken ouni ofzespäicheren''.",
'livepreview-error' => "Verbindung net méiglech: $1 „$2“.
@@ -3227,14 +3393,14 @@ Benotzt w.e.g. d'Funktioun fir déi nach net gespäichert Versioun ze kucken (Ku
'watchlistedit-normal-legend' => 'Säite vun der Iwwerwaachungslëscht erofhuelen',
'watchlistedit-normal-explain' => 'D\'Säite vun ärer Iwwerwaachungslëscht ginn drënner gewisen.
Fir eng Säit erofzehuelen, klickt op d\'Haischen niewendrun a klickt duerno op "{{int:Watchlistedit-normal-submit}}".
-Dir kënnt och [[Special:Watchlist/raw|déi net formatéiert Iwwerwaachungslëscht änneren]].',
+Dir kënnt och [[Special:EditWatchlist/raw|déi net formatéiert Iwwerwaachungslëscht änneren]].',
'watchlistedit-normal-submit' => 'Säiten erofhuelen',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 Säit gouf|$1 Säite goufe}} vun ärer Iwwerwaachungslëscht erofgeholl:',
'watchlistedit-raw-title' => 'Iwwerwaachungslëscht onformatéiert änneren',
'watchlistedit-raw-legend' => 'Iwwerwaachungslëscht onformatéiert änneren',
-'watchlistedit-raw-explain' => "D'Säite vun ärer Iwwerwaachungslëscht ginn hei drënner gewisen a kënne geännert ginn andeems der d'Säiten op d'Lëscht derbäisetze oder erofhuelt; eng Säit pro Linn.
+'watchlistedit-raw-explain' => "D'Säite vun Ärer Iwwerwaachungslëscht ginn hei drënner gewisen a kënne geännert ginn andeems der d'Säiten op d'Lëscht derbäisetze oder erofhuelt; eng Säit pro Linn.
Wann Dir fäerdeg sidd, klickt \"{{int:Watchlistedit-raw-submit}}\".
-Dir kënnt och [[Special:Watchlist/edit|de Standard Editeur benotzen]].",
+Dir kënnt och [[Special:EditWatchlist|de Standard Editeur benotzen]].",
'watchlistedit-raw-titles' => 'Säiten:',
'watchlistedit-raw-submit' => 'Iwwerwaachungslëscht aktualiséieren',
'watchlistedit-raw-done' => 'Är Iwwerwaachungslëscht gouf aktualiséiert.',
@@ -3251,33 +3417,33 @@ Dir kënnt och [[Special:Watchlist/edit|de Standard Editeur benotzen]].",
'duplicate-defaultsort' => 'Opgepasst: Den Zortéierschlëssel "$2" iwwerschreift de viregen Zortéierschlëssel "$1".',
# Special:Version
-'version' => 'Versioun',
-'version-extensions' => 'Installéiert Erweiderungen',
-'version-specialpages' => 'Spezialsäiten',
-'version-parserhooks' => 'Parser-Erweiderungen',
-'version-variables' => 'Variabelen',
-'version-skins' => 'Skins/Layout',
-'version-other' => 'Aner',
-'version-mediahandlers' => 'Medien-Ënnerstëtzung',
-'version-hooks' => 'Klameren',
-'version-extension-functions' => 'Funktioune vun den Erweiderungen',
-'version-parser-extensiontags' => "Parser-Erweiderungen ''(Taggen)''",
-'version-parser-function-hooks' => 'Parser-Funktiounen',
-'version-skin-extension-functions' => 'Skin-Erweiderungs-Funktiounen',
-'version-hook-name' => 'Numm vun der Klamer',
-'version-hook-subscribedby' => 'Opruff vum',
-'version-version' => '(Versioun $1)',
-'version-license' => 'Lizenz',
-'version-poweredby-credits' => "Dës Wiki fonctionnéiert mat '''[http://www.mediawiki.org/ MediaWiki]''', Copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'anerer',
-'version-license-info' => "MediaWiki ass fräi Software; Dir kënnt se weiderginn an/oder s'änneren ënnert de Bedingungen vun der GNU-General Public License esou wéi se vun der Free Softare Foundation publizéiert ass; entweder ënner der Versioun 2 vun der Lizenz, oder (no Ärem Choix) enger spéiderer Versioun.
+'version' => 'Versioun',
+'version-extensions' => 'Installéiert Erweiderungen',
+'version-specialpages' => 'Spezialsäiten',
+'version-parserhooks' => 'Parser-Erweiderungen',
+'version-variables' => 'Variabelen',
+'version-antispam' => 'Spam-Preventioun',
+'version-skins' => 'Skins/Layout',
+'version-other' => 'Aner',
+'version-mediahandlers' => 'Medien-Ënnerstëtzung',
+'version-hooks' => 'Klameren',
+'version-extension-functions' => 'Funktioune vun den Erweiderungen',
+'version-parser-extensiontags' => "Parser-Erweiderungen ''(Taggen)''",
+'version-parser-function-hooks' => 'Parser-Funktiounen',
+'version-hook-name' => 'Numm vun der Klamer',
+'version-hook-subscribedby' => 'Opruff vum',
+'version-version' => '(Versioun $1)',
+'version-license' => 'Lizenz',
+'version-poweredby-credits' => "Dës Wiki fonctionnéiert mat '''[//www.mediawiki.org/ MediaWiki]''', Copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'anerer',
+'version-license-info' => "MediaWiki ass fräi Software; Dir kënnt se weiderginn an/oder s'änneren ënnert de Bedingungen vun der GNU-General Public License esou wéi se vun der Free Softare Foundation publizéiert ass; entweder ënner der Versioun 2 vun der Lizenz, oder (no Ärem Choix) enger spéiderer Versioun.
MediaWiki gëtt verdeelt an der Hoffnung datt se nëtzlech ass, awer OUNI IERGENDENG GARANTIE; ouni eng implizit Garantie vu Commercialisatioun oder Eegnung fir e bestëmmte Gebrauch. Kuckt d'GPU Geral Public License fir méi Informatiounen.
-Dir misst eng [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun der GNU General Public License] mat dësem Programm kritt hunn; wann net da schreift der Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oder [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html liest se online].",
-'version-software' => 'Installéiert Software',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Versioun',
+Dir misst eng [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun der GNU General Public License] mat dësem Programm kritt hunn; wann net da schreift der Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA oder [//www.gnu.org/licenses/old-licenses/gpl-2.0.html liest se online].",
+'version-software' => 'Installéiert Software',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Versioun',
# Special:FilePath
'filepath' => 'Pad bei de Fichier',
@@ -3287,22 +3453,22 @@ Dir misst eng [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie vun der GNU General Public
Den ugefrote Fichier gëtt direkt gewise respektiv mat enger verbonner Applikatioun gestart.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'No duebele Fichiere sichen',
-'fileduplicatesearch-summary' => "Sich no Doublone vu Fichieren op der Basis vun hirem ''Hash-Wäert''.
-
-Gitt den Numm vum Fichier ouni de Prefix \"{{ns:file}}:\" an.",
-'fileduplicatesearch-legend' => 'No engem Doublon sichen',
-'fileduplicatesearch-filename' => 'Numm vum Fichier:',
-'fileduplicatesearch-submit' => 'Sichen',
-'fileduplicatesearch-info' => '$1 × $2 Pixel<br />Gréisst vum Fichier: $3<br />MIME Typ: $4',
-'fileduplicatesearch-result-1' => 'De Fichier "$1" huet keen identeschen Doublon.',
-'fileduplicatesearch-result-n' => 'De Fichier "$1" huet {{PLURAL:$2|1 identeschen Doublon|$2 identesch Doublonen}}.',
+'fileduplicatesearch' => 'No duebele Fichiere sichen',
+'fileduplicatesearch-summary' => "Sichen no Doublone vu Fichieren op der Basis vun hirem ''Hash-Wäert''.",
+'fileduplicatesearch-legend' => 'No engem Doublon sichen',
+'fileduplicatesearch-filename' => 'Numm vum Fichier:',
+'fileduplicatesearch-submit' => 'Sichen',
+'fileduplicatesearch-info' => '$1 × $2 Pixel<br />Gréisst vum Fichier: $3<br />MIME Typ: $4',
+'fileduplicatesearch-result-1' => 'De Fichier "$1" huet keen identeschen Doublon.',
+'fileduplicatesearch-result-n' => 'De Fichier "$1" huet {{PLURAL:$2|1 identeschen Doublon|$2 identesch Doublonen}}.',
+'fileduplicatesearch-noresults' => 'Et gouf kee Fichier mam Numm "$1" fonnt.',
# Special:SpecialPages
'specialpages' => 'Spezialsäiten',
'specialpages-note' => '----
-* Normal Spezialsäiten
-* <strong class="mw-specialpagerestricted">Fettgeschriwwe</strong> Spezialsäite sinn nëmme fir Benotzer mat méi Rechter.',
+* Normal Spezialsäiten.
+* <span class="mw-specialpagerestricted">Spezialsäite fir Benotzer mat méi Rechter.</span>
+* <span class="mw-specialpagecached">Spezialsäiten aus dem Tëschespäicher (ka vereelst sinn).</span>',
'specialpages-group-maintenance' => 'Maintenance-Rapporten',
'specialpages-group-other' => 'Aner Spezialsäiten',
'specialpages-group-login' => 'Aloggen / Umellen',
diff --git a/languages/messages/MessagesLez.php b/languages/messages/MessagesLez.php
index 891cacdb..1fcfdc09 100644
--- a/languages/messages/MessagesLez.php
+++ b/languages/messages/MessagesLez.php
@@ -16,7 +16,23 @@
$messages = array(
# User preference toggles
-'tog-enotifusertalkpages' => 'Э-пучта заз ракъурун, зи Ихтилатрин чар дегиш жедайла',
+'tog-underline' => 'ЭлÑчIунрин кIаникай цIар чIугун',
+'tog-justify' => 'Ччинин гьÑркьуьвилихъ текÑÑ‚ дуьзрун',
+'tog-hideminor' => 'Мукьвара хьайи дегишвилера авай гъвечIи дуьзар хъувунар чуьнуьхун',
+'tog-hidepatrolled' => 'Мукьвара хьайи дегишвилера авай къаравулвал авунвай дуьзар хъувунар чуьнуьхун',
+'tog-usenewrc' => 'ЦIийи дегишвилерин ÑиÑгь кардик кутун (JavaScript герекзава)',
+'tog-numberheadings' => 'КЬилин цIарариз автоматдаказ номерар Ñцигун',
+'tog-showtoolbar' => 'Дуьзар хъувунин алатрин кьвати къалура (JavaScript)',
+'tog-editondblclick' => 'Ччинар кьве тIампIуналди дуьзар хъувун (JavaScript герекзава)',
+'tog-editsection' => 'Пай [дуьзар хъувун] патал ÑлÑчIун къалура',
+'tog-editsectiononrightclick' => 'Пайдин кьилин цIардиз ÑрчIи патан Ñ‚IампI авуна дуьзар хъувундиз мумкинвал гун (JavaScript герекзава)',
+'tog-rememberpassword' => 'И браузерда зи логин рикlел хуьхь (лап гзаф 1$ {{PLURAL:$1|югъ|йикъар}})',
+'tog-watchcreations' => 'За туькIуьрнавай ччинар зи гуьзетунин ÑиÑгьдиз алава авун',
+'tog-watchdefault' => 'За дуьзар хъувунвай ччинар зи гуьзетунин ÑиÑгьдиз алава авун',
+'tog-watchmoves' => 'За Ñ‚Iвар Ñхцигай ччинар зи гуьзетунин ÑиÑгьдиз алава авун',
+'tog-watchdeletion' => 'За алуднавай ччинар зи гуьзетунин ÑиÑгьдиз алава авун',
+'tog-previewontop' => 'Сифтедин килигун дуьзар хъувундин дакIардин вилик Ñцига',
+'tog-enotifusertalkpages' => 'КЬилди жуван веревирдрин ччина хьанвай дегишвилерикай Ñ-почтадиз чар ракъурун.',
'underline-always' => 'Гьамиша',
'underline-never' => 'Садрани',
@@ -96,7 +112,7 @@ $messages = array(
# Cologne Blue skin
'qbfind' => 'Жугъун',
'qbedit' => 'Дегишарун',
-'qbmyoptions' => 'Зи чар',
+'qbmyoptions' => 'Зи ччинар',
'qbspecialpages' => 'Кьетlен хъувун',
'faq' => 'Фад-фад гузвай жузунар (ФГЖ)',
@@ -105,7 +121,7 @@ $messages = array(
'vector-action-delete' => 'Ðлудун',
'vector-action-move' => 'ТIвар Ñхцигун',
'vector-action-protect' => 'Хуьн',
-'vector-action-undelete' => 'Къакъудун',
+'vector-action-undelete' => 'ТуькIуьр хъувун',
'vector-view-create' => 'Туькlуьрун',
'vector-view-edit' => 'Дуьзар хъувун',
'vector-view-history' => 'Тарихдиз килигун',
@@ -121,40 +137,41 @@ $messages = array(
'help' => 'Куьмек',
'search' => 'Жугъурун',
'searchbutton' => 'Жугъурун',
-'go' => 'Фин',
+'go' => 'ЭлÑчIун',
'searcharticle' => 'ЭлÑчIун',
-'history' => 'Ччиндин тарих',
+'history' => 'Ччинин тарих',
'history_short' => 'Тарих',
'printableversion' => 'БаÑма авун патал жуьре',
'permalink' => 'ГЬамишан ÑлÑчIун',
-'print' => 'Ðкъудун',
+'print' => 'БаÑма авун',
+'view' => 'Килигун',
'edit' => 'Дуьзар хъувун',
'create' => 'Туькlуьрун',
-'editthispage' => 'дегишунар и чарар',
+'editthispage' => 'И ччин дуьзар хъувун',
'delete' => 'Ðлудун',
-'deletethispage' => 'Къакъудун и хъувун',
+'deletethispage' => 'И ччин алудун',
'protect' => 'Xуьн',
'protect_change' => 'Дегишун',
-'protectthispage' => 'Xуьн и хъувун',
+'protectthispage' => 'И ччин блокарун',
'newpage' => 'ЦIийи ччин',
-'talkpage' => 'И чараркай Ñхтилат',
+'talkpage' => 'И ччин веревирдун',
'talkpagelinktext' => 'Рахун',
'personaltools' => '-КЬилди вичин алатар',
'talk' => 'Веревирд авун',
'views' => 'Килигунар',
'toolbox' => 'Ðлатрин кьвати',
-'otherlanguages' => 'МаÑÑа чIаларал',
+'otherlanguages' => 'МаÑа чIаларал',
'redirectedfrom' => '($1-кай рахкъурнава )',
-'redirectpagesub' => 'Ракъур хъувунин чар',
-'lastmodifiedat' => 'Ччиндин Ñхиримжи дегиш хуьн: $1, $2',
-'jumpto' => 'ЭлÑчIа иниз:',
+'redirectpagesub' => 'Рахкъурунин ччин',
+'lastmodifiedat' => 'Ччинин Ñхиримжи дегиш хьун: $1, $2',
+'jumpto' => 'ЭлÑчIун иниз:',
'jumptonavigation' => 'ÐавигациÑ',
'jumptosearch' => 'Жугъурун',
# 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:ГЬакъиндай',
-'copyright' => 'Шаирдин Контент ÑхтиÑÑ€ иниз $1',
+'copyright' => 'КЪене авайбур $1 жугъуриз жеда.',
'copyrightpage' => '{{ns:project}}: Ðвтордин ихтиÑÑ€',
'currentevents' => 'Ðлай вакъиаÑÑ€',
'currentevents-url' => 'Project: Ðлай вакъиаÑÑ€',
@@ -165,14 +182,14 @@ $messages = array(
'helppage' => 'Help:КЪене авайбур',
'mainpage' => 'КЬилин ччин',
'mainpage-description' => 'КЬилин ччин',
-'portal' => 'ДжуьмÑÑ‚',
+'portal' => 'КIапIалдин портал',
'portal-url' => 'Project: КIапIалдин портал',
'privacy' => 'Чинебанвилин политика',
'privacypage' => 'Project:Чинебанвилин политика',
-'badaccess' => 'Гъалатlдин ÑхтиÑÑ€',
+'badaccess' => 'ГЬатунин гъалатlдин',
-'ok' => 'Э(кхьин)',
+'ok' => 'ОК',
'retrievedfrom' => 'Чешне "$1" Ñ',
'youhavenewmessages' => 'Квез $1 ($2) атанва.',
'newmessageslink' => 'цlийи чарар',
@@ -184,12 +201,12 @@ $messages = array(
'viewsourcelink' => 'Сифте кьилин коддиз килига',
'editsectionhint' => 'Пай дуьзар хъувун: $1',
'toc' => 'КЪене авайбур',
-'showtoc' => 'къаларун',
+'showtoc' => 'къалурун',
'hidetoc' => 'чуьнуьхун',
-'site-rss-feed' => '$1 РСС Xуьрек',
-'site-atom-feed' => '$1 - атом-лента',
+'site-rss-feed' => '$1 — RSS-зул',
+'site-atom-feed' => '$1 - атом-зул',
'page-rss-feed' => '"$1" РСС Xуьрек',
-'page-atom-feed' => '"$1" Ðтом-лента',
+'page-atom-feed' => '"$1" Ðтом-зул',
'red-link-title' => '$1 (ихьтин ччин авайд туш)',
# Short words for each namespace, by default used in the namespace tab in monobook
@@ -197,14 +214,14 @@ $messages = array(
'nstab-user' => 'Иштиракчидин ччин',
'nstab-special' => 'Куьмекчи ччин',
'nstab-project' => 'Проектдин ччин',
-'nstab-image' => 'Шикил',
-'nstab-mediawiki' => 'МеÑлÑÑ‚',
+'nstab-image' => 'Файл',
+'nstab-mediawiki' => 'Малумат',
'nstab-template' => 'Чешне',
'nstab-category' => 'КатегориÑ',
# General errors
'error' => 'Гъалатl',
-'missing-article' => 'Ганвайбурун базади жугъуриз герек тир "$1" $2 Ñ‚!вар алай ччиндин текÑÑ‚ жагъанвач
+'missing-article' => 'Ганайбурун базади жугъуриз герек тир "$1" $2 Ñ‚!вар алай ччиндин текÑÑ‚ жагъанвач
Ихьтин гьал адет Ñз алуднавай ччиндин дегишвилерин тарихдиз цlуру рекьÑй ÑлÑчlайла арадал къвезва.
@@ -219,10 +236,10 @@ $messages = array(
# Login and logout pages
'yourname' => 'Иштиракчидин тlвар',
'yourpassword' => 'Парол',
-'yourpasswordagain' => 'Парол кхьин хъйин:',
+'yourpasswordagain' => 'Парол кхьин хъувун:',
'remembermypassword' => 'И браузерда зи логин рикlел хуьхь (лап гзаф 1$ {{PLURAL:$1|югъ|йикъар}})',
'login' => 'Гьахьун',
-'nav-login-createaccount' => 'ГЬахьун/кхьиз тун',
+'nav-login-createaccount' => 'ГЬахьун/аккаунт туькlуьрун',
'loginprompt' => 'СиÑтемадиз гьахьун патал "куки" -ÑÑ€ куькlуьрна кIанзава',
'userlogin' => 'ГЬахьун/аккаунт туькlуьрун',
'userloginnocreate' => 'Гьахьун',
@@ -233,14 +250,15 @@ $messages = array(
'createaccount' => 'Ðккаунт туькlуьрун',
'gotaccount' => 'Квез аакаунт авайд Ñ?$1',
'gotaccountlink' => 'Гьахьун',
-'createaccountmail' => 'Ðвай e-mail',
-'createaccountreason' => 'Кар',
+'userlogin-resetlink' => 'Гьахьунин куьлуь-шуьлуьÑÑ€ рикlел алатнани?',
+'createaccountmail' => 'Э-чар галаз',
+'createaccountreason' => 'Себеб:',
'mailmypassword' => 'ЦIийи парол Э-мейлдиз къачун',
'loginlanguagelabel' => 'ЧIал: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Куьлег дегишарун',
-'oldpassword' => 'ИÑки куьлег:',
+'oldpassword' => 'ЦIуру куьлег:',
'newpassword' => 'ЦIийи куьлег:',
# Edit page toolbar
@@ -263,10 +281,10 @@ $messages = array(
# Edit pages
'summary' => 'Ðетижа:',
-'subject' => 'Тема/кьилер',
+'subject' => 'Тема/кьилинцIар',
'minoredit' => 'ГЪвечIи дуьзар хъувун',
'watchthis' => 'И ччин гуьзетун',
-'savearticle' => 'Хуьн хъувун',
+'savearticle' => 'Ччин хуьн',
'preview' => 'Сифтедин килигун',
'showpreview' => 'Сифтедин килигун къалурун',
'showdiff' => 'Дегишвилер къалурун',
@@ -284,11 +302,14 @@ $messages = array(
'noarticletext-nopermission' => 'ИÑÑтда и ччина Ñа текÑтни авач.
Квевай [[Special:Search/{{PAGENAME}}| и Ñ‚lвар алай ччин]] муькуь ччинра жугъуриз ва Ñ
<span class="plainlinks"> [{{fullurl: {{# Special:Log}} | page = {{FULLPAGENAMEE}}}} журналрин талукь тир кхьей затIар жугъуриз] жеда.',
-'previewnote' => "'''Рикlел хуьхm, им анжах Ñифтедин килигун Ñ.'''
+'previewnote' => "'''Рикlел хуьх хьи, им анжах Ñифтедин килигун Ñ.'''
Куь дегишунар гьеле хвенвач!",
'editing' => '$1 Дуьзар хъувун',
'editingsection' => 'Дуьзар хъувун $1 (пай)',
-'copyrightwarning' => "Буюр, килиг дуьздиз, вири куьн {{SITENAME}} килигз ава акъуднавади $2(кл. $1 клиг хъувун). Квез кlанзаваштlа, куьн кхьинар азадиз чкlана ва дегишариз гьар кlанзайда, тамир абур инна.<br /> Куьнени шагьидзава, куьни Ñ Ð°Ð²Ñ‚Ð¾Ñ€ ктунай дегишунар, ва кхьин хъувунай жуьмÑтдин кхьинрай ва азад чкадай. '''Ðтордин ÑтиÑÑ€ авачиз'''",
+'copyrightwarning' => "Тавакъу ийида, фагьум аф хьи, {{SITENAME}}-диз кутунвай вири крариз $2 лицензиÑдин шартунал акъуднавайбур хьиз килигда. (гегьеншдиз $1-з килига).
+Квез куьне кхьенвайбур азаддаказ чкIун ва гьар Ñа ÐºÐ°Ñ Ð¿Ð°Ñ‚Ð°Ñ…ÑŠÐ°Ð¹ дуьзар хъувун кIанзавачтIа, а кхьенвайбур иниз Ñцигмир.<br />
+ГЬакIни, куьне теÑтикьзава хьи, кутазвай алавайрин автор кьун Ñ, Ñ Ñ‚Ð°Ñ…ÑŒÐ°Ð¹Ñ‚Iа, куьне а алаваÑÑ€ чпин къенеавайбур азад чкIунни дегишун ихтиÑÑ€ гузвай чешмедикай ччин къачунва.<br />
+'''ÐВТОРДИРИХТИЯР ХУЬЗВÐЙ ÐœÐЛУМÐТÐР ИХТИЯР ГÐЛÐЧИЗ ЭЦТИГМИР!'''",
'templatesused' => 'И ччина кардик кутунвай {{PLURAL:$1|Чешне|ЧешнеÑÑ€}}:',
'templatesusedpreview' => '{{PLURAL:$1|Шаблон|Шаблонар}},илемишзавай дуьз клигунра:',
'template-protected' => '(хвенвай)',
@@ -307,7 +328,7 @@ $messages = array(
'post-expand-template-inclusion-category' => 'Кутунай чешнейрин кьадардилай виниз ÑкъечIнавай ччинар',
'post-expand-template-argument-warning' => "'''Дикъет:''' И ччина ахъайна гегьеншрун патал гзаф чlехи кьадар авай гьич тахьайтIа Ñа чешнедин аргумент ава.
Ðхьтин аргументар тагана ÑлÑчIнава.",
-'post-expand-template-argument-category' => 'Чарче, къейда ава аргументрин шаблонра',
+'post-expand-template-argument-category' => 'Кими авунвай чешнейрин аргументар авай ччинар',
# History pages
'viewpagelogs' => 'И ччиниз талукь тир журналар къалура',
@@ -320,7 +341,7 @@ $messages = array(
'cur' => 'алай',
'next' => 'къведайди',
'last' => 'вилик алатай',
-'page_first' => 'Ñифте',
+'page_first' => 'Садлагьайди',
'page_last' => 'Ñхиримжи',
'histlegend' => 'Тафаватдиз килигун: гекъигиз кlанзавайди жуьредин патав радио-кьватиÑÑ€ лишан Ð°Ñ Ð²Ð° "ГЬалдун (Enter)" ва Ñ Ð°Ð³ÑŠÐ°Ð´Ð° авай дуьгмедиз илиÑа.<br />
ГЪавурда твазвайди: (алай)- алай жуьредикай тафават; (вилик фейи) - вилик фейи жуьредикай тафават; "гъ" - гъвечIи дегишун.',
@@ -334,13 +355,13 @@ $messages = array(
# Revision deletion
'rev-delundel' => 'къалурун/кIевирун',
-'revdelete-show-file-submit' => 'Э',
+'revdelete-show-file-submit' => 'Эхь',
'revdelete-log' => 'Кар',
'revdelete-logentry' => 'Дегишарна акунвал "[[$1]]"',
'revdel-restore' => 'Ðквадайвал дегишарун',
-'revdel-restore-deleted' => 'КЪакъуднавай жуьреÑÑ€',
+'revdel-restore-deleted' => 'Ðлуднавай жуьреÑÑ€',
'revdel-restore-visible' => 'Ðквадай дегишвилер',
-'pagehist' => 'Хъувун тарих',
+'pagehist' => 'Ччинин тарих',
'revdelete-content' => 'Къйеда',
'revdelete-uname' => 'ишлемишчидин тIар',
'revdelete-hid' => 'чуьнуьх авунай $1',
@@ -348,7 +369,7 @@ $messages = array(
'revdelete-offender' => 'Ðвтордин жуьре:',
# History merging
-'mergehistory-reason' => 'Кар',
+'mergehistory-reason' => 'Себеб',
# Merge log
'revertmerge' => 'Ччара авун',
@@ -364,10 +385,10 @@ $messages = array(
# Search results
'searchresults' => 'Къекъуьнрин нетижаÑÑ€',
'searchresults-title' => '"$1" жугъура',
-'searchresulttext' => 'Ðтун патал артухан жагъуриникай хабарар {{SITENAME}}, килиг [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'Куьне жагъурзай \'\'\'[[:$1]]\'\'\' ([[Special:Prefixindex/$1| чарар, гатlузавай "$1"]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|вири чарар алукьзавай "$1"]])',
-'searchsubtitleinvalid' => "Куьне жагъурзавай '''$1'''",
-'notitlematches' => 'Ðвач чарчин кьил матчар',
+'searchresulttext' => '{{SITENAME}} къекъуьнихъай гегьенш малумат патал [[{{MediaWiki:Helppage}}|{{int:малумат гудай пай}}]]диз килига.',
+'searchsubtitle' => '[[Special:WhatLinksHere/$1|И Ñ‚Iварциз ÑлÑчIзавай]]) [[:$1]] жугъуруниз талукь тир ([[Special:Prefixindex/$1| Ñ‚Iварцихъ галаз ÑгечIзавай ччинар]]',
+'searchsubtitleinvalid' => "Жугъурзавай: '''$1'''",
+'notitlematches' => 'Ччинрин тIварара ацалтунар авач',
'notextmatches' => 'Ðвач чарчин кьил матчар',
'prevn' => 'Вилик фейи {{PLURAL:$1|$1}}',
'nextn' => 'Гуьгъуьнин {{PLURAL:$1|$1}}',
@@ -394,19 +415,19 @@ $messages = array(
'search-suggest' => 'Мумкин Ñ Ñ…ÑŒÐ¸, куьне им фикирда кьуна: $1',
'search-interwiki-caption' => 'Мукьва проект',
'search-interwiki-default' => '$1(жавабар)',
-'search-interwiki-more' => '(хелин)',
-'search-mwsuggest-enabled' => 'тапшуругъар аваз',
-'search-mwsuggest-disabled' => 'тапшуругъар авач',
+'search-interwiki-more' => '(мадни)',
+'search-mwsuggest-enabled' => 'меÑлÑтар галаз',
+'search-mwsuggest-disabled' => 'меÑлÑтар галачиз',
'searchrelated' => 'Галкlанавай',
'searchall' => 'вири',
'showingresultsheader' => "'''$4''' патал {{PLURAL:$5|'''$3''' - кай '''$1''' нетижа|'''$3''' - кай '''$1 - $2''' нетижаÑÑ€}}",
'nonefound' => "'''ÐÑулзава''': Са шумуд Ñ‚lарар жагъурзава хвенайвал.
Клига Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ \"вири\" жагъурун паталди кхьинар (ихтилат ва рахунин чарар, шаблонар ва маÑабу), ва ишлемишна кlанзавай Ñ‚lарар Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ Ð¿Ð°Ñ‚Ð°Ð»Ð°.",
'search-nonefound' => 'Тlалабдив кьадай Ñа нетижани жагъанвач.',
-'powersearch' => 'Ðхтармишун',
-'powersearch-legend' => 'Ðхтармишун',
-'powersearch-ns' => 'Жагъурун тlарарин арада:',
-'powersearch-redir' => 'Рахъурхъунар цlарцlел',
+'powersearch' => 'Гегьенш жугъурун',
+'powersearch-legend' => 'Гегьенш жугъурун',
+'powersearch-ns' => 'Жугъурун тlварарин генгвилера:',
+'powersearch-redir' => 'Рахкъурунар къалура',
'powersearch-field' => 'Идаз жагъурун',
'powersearch-toggleall' => 'Вири',
@@ -435,6 +456,9 @@ $messages = array(
'yourlanguage' => 'ЧIалар',
'gender-female' => 'Фамили',
'email' => 'E-mail',
+'prefs-help-email' => 'Электрон почтунин Ð°Ð´Ñ€ÐµÑ ÐºÑ…ÑŒÐ¸ мажбури туш, амма куьне парол рикIелай ракъурдатIа, ам герек жеда.',
+'prefs-help-email-others' => 'Квевай жезва хкÑгъиз, маÑабриг кхьиз квез Ñлектр пучтадай, алукьунай куьн ихтилатдинчарчел алай.
+Куьн Ð°Ð´Ñ€ÐµÑ Ñлектрон пучтадин гьатнавач, маÑа ишлемишчийри квез кхьидайла.',
# User rights
'userrights-reason' => 'Кар',
@@ -611,9 +635,7 @@ $messages = array(
'watchlist' => 'Зи гуьзетунин ÑиÑгь',
'mywatchlist' => 'Зи гуьзетунин ÑиÑгь',
'watchlistfor2' => '$1 $2 патал',
-'addedwatch' => 'Ктун хъувун ,ахтармишзай чарчхъ',
'addedwatchtext' => "Чар \"[[:\$1]]\" тун хъувунай куьн [[Special:Watchlist|watchlist]]. Къвезмай дегишунар и чарчел ва галкlанавай чарчихъ ихтилатар жеда инна, ахъатдава \"ÑакlÑƒÑ Ñцlу''''' инна [[Special:RecentChanges|list of recent changes]] гьам кьизил авун.",
-'removedwatch' => 'Чlурнава ахтармишзавай цlарцlÑй',
'removedwatchtext' => 'Чар "[[:$1]]" Идай чlурнай [[Special:Watchlist|ахтармишунин цlарар]].',
'watch' => 'Гуьзетун',
'watchthispage' => 'Гелкъуьн и хъувун',
@@ -631,7 +653,7 @@ $messages = array(
'confirmdeletetext' => 'Квез чlуриз кlанзани чарар гьадан вири тарихар галаз. Буюр, Ñидикъара,куьне чlурзатlа, куьн агъавурда автlа вуч ийизатlа ва куьне ийизатlа жуьреда [[{{MediaWiki:Policy-url}}| политика]].',
'actioncomplete' => 'Кар авунва',
'actionfailed' => 'Кар йиз алакьнавач',
-'deletedtext' => '"<nowiki>$1</nowiki>" чlурнайтир. Килиг $2 Ñхиримжи чlурунар ахтармишун.',
+'deletedtext' => '"$1" чlурнайтир. Килиг $2 Ñхиримжи чlурунар ахтармишун.',
'deletedarticle' => 'къакъудун "[[$1]]"',
'dellogpage' => 'Ðлудунин журнал',
'deletecomment' => 'Кар',
@@ -649,7 +671,7 @@ $messages = array(
'protectexpiry' => 'Ðлатна',
'protect_expiry_invalid' => 'Вахтун кьадар дуьзди туш.',
'protect_expiry_old' => 'Вахтун кьадар алатай заманда.',
-'protect-text' => "Квевай клигайтlа ва дегишарайтlа жеза хуьнин къайда чарчин '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Квевай клигайтlа ва дегишарайтlа жеза хуьнин къайда чарчин '''$1'''.",
'protect-locked-access' => "Квез ахтиÑÑ€ авач дегишариз чарчин хуьн къайда. Ингье физвай туькlуьрунар чарчиз '''$1''':",
'protect-cascadeon' => 'Хуьн авун чарар къараул ийизвай алай вахтунда, гьама ктуна{{PLURAL:$1|чар, гьама|чарар, гьабур}} галай галай хуьн куькlуьрна.Куьвай жеза дегишариз хуьнин кьадар чарчин, гьама кÑдач галай галай хуьнив.',
'protect-default' => ' ЭхтиÑÑ€ гуз вири ишлемишчийриз',
@@ -856,6 +878,20 @@ $messages = array(
'metadata-help' => 'И файлдин къене гилигнавай адет Ñз камера ва Ñ Ñканер куьмекдалди алава авунвай малумат ава. Файл ахпа дуьзур хъувуначтlа, бÑзи параметрар алай Ñуьретдив кьун тахьун мумкин Ñ.',
'metadata-expand' => 'Къалурун дериндиз',
'metadata-collapse' => 'Кlевун дерин къалурунар',
+'metadata-fields' => 'Метамалуматрин таблица чIур хьайла и ÑиÑгьда Ñ‚lварар кьунвай Ñуьретдин метамалуматрин чкаÑÑ€ Ñутретдин ччина къалурда. Муькуьбур авайдхьиз кьуна чуьнуьхда.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-contrast' => 'Рангар',
@@ -866,15 +902,13 @@ $messages = array(
# External editor support
'edit-externally' => 'И файл патан программа куьмекдалди дуьзар хъувун',
-'edit-externally-help' => '(Ðлава малумат патал [http://www.mediawiki.org/wiki/Manual:External_editors Ñцигунин регьбервилиз] килига)',
+'edit-externally-help' => '(Ðлава малумат патал [//www.mediawiki.org/wiki/Manual:External_editors Ñцигунин регьбервилиз] килига)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'вири',
-'imagelistall' => 'вири',
-'watchlistall2' => 'вири',
-'namespacesall' => 'вири',
-'monthsall' => 'вири',
-'limitall' => 'вири',
+'watchlistall2' => 'вири',
+'namespacesall' => 'вири',
+'monthsall' => 'вири',
+'limitall' => 'вири',
# action=purge
'confirm_purge_button' => 'Э(кхьин)
diff --git a/languages/messages/MessagesLfn.php b/languages/messages/MessagesLfn.php
index db5283b3..27ee7fcc 100644
--- a/languages/messages/MessagesLfn.php
+++ b/languages/messages/MessagesLfn.php
@@ -136,15 +136,6 @@ $messages = array(
'hidden-category-category' => 'Categorias ascondeda',
'listingcontinuesabbrev' => 'cont.',
-'mainpagetext' => "'''MediaWiki es aora instalada.'''",
-'mainpagedocfooter' => 'Atenda la [http://meta.wikimedia.org/wiki/Help:Contents Gida per Usores] per informa supra la usa de la programa de vici.
-
-== Comensa ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista de ajustas de la desinia]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Demandas comun de MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista per receta anunsias de novas supra MediaWiki]',
-
'about' => 'Supra',
'article' => 'Paje de contenis',
'newwindow' => '(va abri en fenetra nova)',
@@ -176,7 +167,6 @@ $messages = array(
'history' => 'Istoria de paje',
'history_short' => 'Istoria',
'updatedmarker' => 'renovida de me visita presedente',
-'info_short' => 'Informa',
'printableversion' => 'Varia primable',
'permalink' => 'Lia permanente',
'print' => 'Primi',
@@ -306,7 +296,7 @@ $messages = array(
'loginsuccess' => "'''Tu ia entrada aora a {{SITENAME}} como \"\$1\".'''",
'nosuchuser' => 'Es no usor con la nom "$1".
Esamina la spele, o [[Special:UserLogin/signup|crea un conta nova]].',
-'nosuchusershort' => 'Es no usor con esta nom "<nowiki>$1</nowiki>". Esamina la spele.',
+'nosuchusershort' => 'Es no usor con esta nom "$1". Esamina la spele.',
'nouserspecified' => 'Tu debe indica un nom de usor.',
'wrongpassword' => 'La sinia de entra no es coreta. Per favore, atenta ancora.',
'wrongpasswordempty' => 'La sinia de entra es vacua. Per favore, atenta ancora.',
@@ -328,7 +318,7 @@ Ante alga otra eposta es enviada a la conta, tu va nesesa segue la instruis en l
'emailconfirmlink' => 'Aproba tu adirije de eposta',
'loginlanguagelabel' => 'Lingua: $1',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Sinia secreta vea:',
'newpassword' => 'Sinia secreta nova:',
'retypenew' => 'Re-entra tu sinia secreta nova:',
@@ -346,8 +336,6 @@ Ante alga otra eposta es enviada a la conta, tu va nesesa segue la instruis en l
'extlink_tip' => 'Lia esterna (recorda la prefis http://)',
'headline_sample' => 'Testo de titulo',
'headline_tip' => 'Titulo de nivel 2',
-'math_sample' => 'Introdui formula asi',
-'math_tip' => 'Formula matematical (LaTeX)',
'nowiki_sample' => 'Introdui testo nonformida asi',
'nowiki_tip' => 'Iniora la forma de la vici',
'image_tip' => 'Fix interna',
@@ -466,7 +454,6 @@ La arcivo de sutraes per esta paje es asi per conveni:",
'preferences' => 'Preferis',
'mypreferences' => 'Me preferis',
'skin-preview' => 'Previde',
-'prefs-math' => 'Matematica',
'saveprefs' => 'Fisa',
'rows' => 'Linias:',
'columns' => 'Colonas:',
@@ -689,12 +676,10 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlist' => 'Pajes oservada',
'mywatchlist' => 'Me lista de pajes oservada',
'nowatchlist' => 'Tu ave no cosas en tu lista oservada',
-'addedwatch' => 'Juntada a la lista de pajes oservada',
'addedwatchtext' => "La paje \"[[:\$1]]\" ia es juntada a tu [[Special:Watchlist|lista de pajes oservada]].
Cambias future a esta paje e se paje de discutes va es listada ala, e la paje va apera en leteras '''forte''' en la [[Special:RecentChanges|lista de cambias resente]] per es plu fasil oservada.
Si tu vole sutrae la paje de tu lista de pajes oservada en la futur, clica a \"no oserva\" en la bara a la lado.",
-'removedwatch' => 'Sutraeda de la lista de pajes oservada',
'removedwatchtext' => 'La paje "[[:$1]]" ia es sutraeda de [[Special:Watchlist|tu lista de pajes oservada]].',
'watch' => 'Oserva',
'watchthispage' => 'Oserva esta paje',
@@ -716,7 +701,7 @@ Si tu vole sutrae la paje de tu lista de pajes oservada en la futur, clica a \"n
'historywarning' => 'Avisa! La paje ce tu intende sutrae, el ave un istoria:',
'confirmdeletetext' => 'Tu va pronto sutrae un paje con tota se istoria. Per favore, afirma ce tu intende esta, ce tu comprende la resultas, e ce tu fa esta en acorda con [[{{MediaWiki:Policy-url}}|la prometes]].',
'actioncomplete' => 'Ata completada',
-'deletedtext' => '"<nowiki>$1</nowiki>" ia es sutraeda.
+'deletedtext' => '"$1" ia es sutraeda.
Vide $2 per un catalogo de sutraes resente.',
'deletedarticle' => 'sutraeda "[[$1]]"',
'dellogpage' => 'catalogo de sutraes',
@@ -738,7 +723,7 @@ Vide $2 per un catalogo de sutraes resente.',
'protectexpiry' => 'Fini:',
'protect_expiry_invalid' => 'Ora de fini no es legal.',
'protect_expiry_old' => 'Ora de fini es en la pasada.',
-'protect-text' => "Tu pote vide e cambia la nivel de proteje asi per la paje '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Tu pote vide e cambia la nivel de proteje asi per la paje '''$1'''.",
'protect-locked-access' => "Tu conta no ave permite per cambia niveles de proteje.
Asi es la ajustas presente per la paje '''$1''':",
'protect-cascadeon' => 'Esta paje es aora protejeda per ce el es incluida en esta {{PLURAL:$1|paje|pajes}} ce ave proteje cascadente ativa. Tu pote cambia la nivel de proteje per esta paje, ma esta no va influense la proteje cascadente.',
@@ -916,12 +901,11 @@ En esta casos, tu va nesesa move o fusa la paje per mano, si desirada.",
'nextdiff' => 'Difere plu nova →',
# Media information
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|paje|pajes}}',
-'file-info-size' => '$1 × $2 pixel, grandia de fix: $3, MIME tipo: $4',
-'file-nohires' => '<small>No plu densia posable.</small>',
-'svg-long-desc' => 'SVG fix, per nom $1 × $2 pixeles, grandia de fix: $3',
-'show-big-image' => 'Densia masima',
-'show-big-image-thumb' => '<small>Grandia de eesta previde: $1 × $2 pixeles</small>',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|paje|pajes}}',
+'file-info-size' => '$1 × $2 pixel, grandia de fix: $3, MIME tipo: $4',
+'file-nohires' => '<small>No plu densia posable.</small>',
+'svg-long-desc' => 'SVG fix, per nom $1 × $2 pixeles, grandia de fix: $3',
+'show-big-image' => 'Densia masima',
# Special:NewFiles
'newimages' => 'Imajes nova',
@@ -947,14 +931,20 @@ Si la fix ia es cambiada de se stato orijinal, alga detalias pote no es clara en
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-exposuretime-format' => '$1 sec. ($2)',
# External editor support
'edit-externally' => 'Edita esta fix con un programa esterna',
-'edit-externally-help' => '(Vide la [http://www.mediawiki.org/wiki/Manual:External_editors instruis per comensa] per plu instruis)',
+'edit-externally-help' => '(Vide la [//www.mediawiki.org/wiki/Manual:External_editors instruis per comensa] per plu instruis)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tota',
diff --git a/languages/messages/MessagesLg.php b/languages/messages/MessagesLg.php
index 2fc218d0..18c1249e 100644
--- a/languages/messages/MessagesLg.php
+++ b/languages/messages/MessagesLg.php
@@ -42,8 +42,8 @@ $messages = array(
'tog-shownumberswatching' => "Ndaganga obungi bw'abagoberera olupapula",
'tog-oldsig' => 'Omukono gwo kakano:',
'tog-fancysig' => 'Omukono gubemu obubonero bwa ki-wiki (naye nga tegufuuka nyunzi)',
-'tog-externaleditor' => 'Wandikisanga puloguramu eri ku kompyuta yo (kyetaagisa bumanyirivu bungi, kubanga wetaaga okutegeka kompyuta yo mu ngeri ezitali za bulijjo. [http://www.mediawiki.org/wiki/Manual:External_editors Okutangaaza okusingawo.])',
-'tog-externaldiff' => "Kozesanga puloguramu ey'oku kompyuta yo okukebera njawulo wakati w'ebiwandike (kyetaagisa bumanyirivu bungi, wetaaga ntegeka ezitali za bulijjo ku kompyuta yo. [http://www.mediawiki.org/wiki/Manual:External_editors Okutangaaza okusingawo.])",
+'tog-externaleditor' => 'Wandikisanga puloguramu eri ku kompyuta yo (kyetaagisa bumanyirivu bungi, kubanga wetaaga okutegeka kompyuta yo mu ngeri ezitali za bulijjo. [//www.mediawiki.org/wiki/Manual:External_editors Okutangaaza okusingawo.])',
+'tog-externaldiff' => "Kozesanga puloguramu ey'oku kompyuta yo okukebera njawulo wakati w'ebiwandike (kyetaagisa bumanyirivu bungi, wetaaga ntegeka ezitali za bulijjo ku kompyuta yo. [//www.mediawiki.org/wiki/Manual:External_editors Okutangaaza okusingawo.])",
'tog-showjumplinks' => 'Wabeerewo enyunzi eza "Genda ku"',
'tog-uselivepreview' => 'Enkyukakyuka ze nkoze zirabikirewo nga tekyetaagisiza kumala kunyiga ppeesa (kyetaagisa JavaScript)(Kikyagezesebwa)',
'tog-forceeditsummary' => 'ÅŠambaako bwe mba Å‹enda okuleka nga sinnyonyodde bye nkyusizza',
@@ -138,14 +138,7 @@ $messages = array(
'listingcontinuesabbrev' => 'era...',
'index-category' => "Empapula ezikkirizidwa okuteekebwa ku nkalala z'enfo ezinoonyesebwa",
'noindex-category' => "Empapula ezigaanidwa okuteekebwa ku nkalala z'enfo ezinoonyesebwa",
-
-'mainpagetext' => 'MediaWiki kati ewangidwa ku sisitemu yo',
-'mainpagedocfooter' => "Okuyiga ku nkozesa ya sofutiweya owa wiki, kebera [http://meta.wikimedia.org/wiki/Help:Contents Okulagirira Abakozesa].
-
-== Amagezi agakuyamba okutandika ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lukalala lw'eby'enteekateeka yo]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Ebiter'okubuuzibwa ku MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Wewandise ofunenga amawulire aga email ag'ebifa ku MediaWiki]",
+'broken-file-category' => 'Empapula eziriko ennyunzi ezitalina kwe zigguka',
'about' => 'Okutangaaza',
'article' => 'Lupapula lwa nsonga',
@@ -194,10 +187,10 @@ $messages = array(
'history' => "Ennanda y'olupapula luno",
'history_short' => 'Ennanda',
'updatedmarker' => 'ebikyusidwa okuva lwe nasemba okukebera',
-'info_short' => 'Okumanyisa',
'printableversion' => 'Entereeza eyanguya okukubisa',
'permalink' => 'Kolawo enyunzi egguka ku lupapula luno nga bwe lufaanana ku ssaawa eno',
'print' => 'Kubisa',
+'view' => 'Lukebere',
'edit' => 'Kyusa',
'create' => 'Kolawo',
'editthispage' => 'Olupapula luno lukyusemu',
@@ -205,6 +198,7 @@ $messages = array(
'delete' => 'Gyawo olupapula luno',
'deletethispage' => 'Olupapula luno lugyewo',
'undelete_short' => 'Julula {{PLURAL:$1|enkyukakyuka emu|enkyukakyuka $1}}',
+'viewdeleted_short' => 'Kebera {{PLURAL:$1|oluwandika olwagyibwawo olumu|empandika ezagyibwawo $1}}',
'protect' => 'Ssiba',
'protect_change' => 'lusibe/lusumulule',
'protectthispage' => 'Siba olupapula luno',
@@ -289,6 +283,8 @@ Kebera ku [[Special:Version|lukalala lw'empandika za MediaWiki]].",
'toc' => 'Ebirimu',
'showtoc' => 'ndaga endagiriro',
'hidetoc' => 'kisa endagiriro',
+'collapsible-collapse' => 'Funza',
+'collapsible-expand' => 'Birage mu bujjuvu',
'thisisdeleted' => 'Oyagala okulaba oba okuzzawo $1?',
'viewdeleted' => 'Oyagala okulaba $1?',
'restorelink' => '{{PLURAL:$1|oluwandika olwagyibwawo olumu|empandika ezagyibwawo $1}}',
@@ -394,7 +390,6 @@ Enkyukakyuka z'okola wano zigyakubaako kye zikola ku ngeri abantu gye bakozesaam
'cascadeprotected' => 'Olupapula luno lulandideko ekikugizo ekirugaana okukyusibwako ekisibuka ku {{PLURAL:$1|lunnaalwo luno olulukozesa|zinnalwo zino ezirukozesa}}:<br />
$2',
'namespaceprotected' => "Tolina buyinza bwa kukyusa ku mpapula ez'omu kkuŋaanizo erya '''$1'''.",
-'customcssjsprotected' => 'Tolina buyinza bwa kukyusa ku lupapula luno, kubanga lufuga enteekateeka eza memba omulala.',
'ns-specialprotected' => 'Empapula enjawule tezikukkiriza kuzikyusaako.',
'titleprotected' => '[[User:$1|$1]] ataddewo ekikugizo ekigaana okukozesa omutwe guno.<br />
Ensonga gy\'awadde eri nti "\'\'$2\'\'".',
@@ -432,6 +427,7 @@ Tewerabira kwetereereza [[Special:Preferences|enteekateeka yo ey'oku {{SITENAME}
'createaccount' => 'Kolawo akawunti',
'gotaccount' => "Akawunti wafuna? '''$1'''.",
'gotaccountlink' => 'Yingira',
+'userlogin-resetlink' => "Werabidde by'okozesa okuyingira?",
'createaccountmail' => 'Akawunti gikole ne E-mail',
'createaccountreason' => 'Ekikukozesezawo akawunti:',
'badretype' => "Ebigambo ebikuumi by'owandise tebifaanagana.",
@@ -446,13 +442,15 @@ Okusobola okuyingira, kyusa entegeka ya yo ebukkirize eryoke okozese ery'obwa me
'nocookieslogin' => 'Okuyingira {{SITENAME}} nga memba kyesigamizidwa ku bujjukiza.<br />
Kalambulanetti yo kakano etegekedwa butakkiriza obujjukiza obwo.<br />
Okusobola okuyingira, kyusa entegeka ya yo ebukkirize eryoke oddemu okugeza okuyingira.',
+'nocookiesfornew' => "Akawunti ey'obwa memba tekoledwawo, kubanga tetusobodde okutegeera w'oyimye okugikola.<br />
+Kalambulanetti yo gitegeke ekkirize obujjukiza, ddamu owange olupapula luno oryoke oddemu okugeza okukolawo akawunti.",
'noname' => "Towandise linnya ly'obwa memba eriyinz'okukkirizibwa.",
'loginsuccesstitle' => 'Oyingidde',
'loginsuccess' => "'''Kati oyingidde mu {{SITENAME}} nga okozesa erinnya \"\$1\".'''",
'nosuchuser' => "Tewali memba akozesa lya \"\$1\".<br />
Ery'obwa memba bw'okyusa obunene bw'ennukuta z'oliwandisa obeera owandise eddala.<br />
Kebera bw'oliwandise, oba [[Special:UserLogin/signup|kolawo akawunti empya]].",
-'nosuchusershort' => 'Tewali memba akozesa lya "<nowiki>$1</nowiki>".<br />
+'nosuchusershort' => 'Tewali memba akozesa lya "$1".<br />
Kebera bw\'oliwandise.',
'nouserspecified' => "Kyetaagisa owandikewo erinnya ly'obwa memba.",
'login-userblocked' => 'Memba ono agaanidwa. Takkirizibwa kuyingira.',
@@ -501,6 +499,7 @@ Akawunti eno bw\'obanga togyetaaga, gireke tunaagigyawo.',
'usernamehasherror' => "Ery'obwa memba terikkirizibwa kubaamu akabonero ak'obusazesaze (#)",
'login-throttled' => "Ogezeza okuyingira mu sisitemu emilundi egiyitiridde obungi kaseera kano.<br />
Sooka olindeko akaseera okuddamu n'ate.",
+'login-abort-generic' => 'Sisitemu tekuyingizza - Omulimu gukomezedwa',
'loginlanguagelabel' => 'Lulimi: $1',
'suspicious-userlogout' => "Sisitemu ezize ekiragiro kyo eky'okugivaamu kubanga kirabise nga ekivudde mu kalambulanetti enfu<br />
oba mu puloguramu etereka n'eddamu okuyisa ebiragiro ebivudde awalala.",
@@ -508,7 +507,7 @@ oba mu puloguramu etereka n'eddamu okuyisa ebiragiro ebivudde awalala.",
# E-mail sending
'php-mail-error-unknown' => "Wazzewo kiremya atategeerese mu mukolo mail() ogw'omu PHP",
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Kyusa ekigambo ekikuumi',
'resetpass_announce' => "Weyambisa ekyama eky'ekiseerabuseera okuyingira.<br />
Okuyingirira ddala, wetaaga okuwandika wano ekinaaba ekyama kyo ekya ddala:",
@@ -527,6 +526,18 @@ Kati oyingira...',
Oyinz'okuba nga wamaze okutegeka ekya ddala ekipya oba nga wakasabayo eky'ekiseerabuseera.",
'resetpass-temp-password' => "Ekyama kyo eky'ekiseerabuseera:",
+# Special:PasswordReset
+'passwordreset' => 'Damu okutegeka ekyama',
+'passwordreset-text' => "Oba oyagala okufuna 'email' ekujjukiza ebikwata ku akawunti yo, jjuza foomu eno.",
+'passwordreset-legend' => 'Damu okutegeka ekyama',
+'passwordreset-disabled' => "Eby'okuddamu okutegeka ebyama biymirizidwa ku wiki eno.",
+'passwordreset-pretext' => '{{PLURAL:$1||Wandika wo kimu ku ebiri mu lukalala}}',
+'passwordreset-username' => "Ery'obwa memba:",
+'passwordreset-email' => "Endagiriro eya 'email':",
+'passwordreset-emailtitle' => "Ebya akawunti ey'oku {{SITENAME}}",
+'passwordreset-emailelement' => "Ery'obwa memba: $1 <br />
+Ekyama kyo eky'ekiseerabuseera: $2",
+
# Edit page toolbar
'bold_sample' => "Ennukuta z'owandika wano zonna ziba nziggumivu",
'bold_tip' => "Bw'onyiga kano, ofuna w'oyinza okuwandikira ennukuta ezo ne zivaamu nga nziggumivu",
@@ -538,8 +549,6 @@ Oyinz'okuba nga wamaze okutegeka ekya ddala ekipya oba nga wakasabayo eky'ekisee
'extlink_tip' => "Nyiga ku kano ob'oyagala okuteekawo enyunzi egguka ku kifo ekitali ku wiki eno. (genderera ne kutabulako ennukuta ezikulembedde, http:// )",
'headline_sample' => 'Mutwe omukulu',
'headline_tip' => "Nyiga ku kano okuwandika omutwe ogw'eddaala ery'okubiri",
-'math_sample' => 'Wandika wano fomula yo',
-'math_tip' => "Bw'onyiga wano, ofuna w'osobolera okuwandika fomula ey'okubala. Okugiwandika, olina okukozesa empandika ey'enkola ya LaTeX.",
'nowiki_sample' => 'Byowandika wano tebijjakufuulafuulibwa enkola ya wiki',
'nowiki_tip' => "Nyiga ku kano ob'oyagala okufuna w'owandikira ebintu ebitafuulibwafuulibwa enkola ya wiki",
'image_tip' => "Bw'onyiga ku kano, we wakomye okuwandika wajjawo enyunzi eteekawo ekifaananyi",
@@ -627,7 +636,7 @@ Ky'obadde onoonya osobola [[Special:Search/{{PAGENAME}}| okukinoonyeza]] ku mpap
'noarticletext-nopermission' => 'Wano tewali kyawandikidwawo.<br />
Ky\'obadde onoonya osobola [[Special:Search/{{PAGENAME}}| okukinoonyeza]] ku mpapula ndala oba
oyinza <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} okukinoonyeza mu nkalala z\'ebifuddeyo ebyekuusana nakyo]</span>.',
-'userpage-userdoesnotexist' => 'Akawunti y\'obwamemba "$1" teri mu nkalala za wiki eno.<br />
+'userpage-userdoesnotexist' => 'Akawunti y\'obwamemba "<nowiki>$1</nowiki>" teri mu nkalala za wiki eno.<br />
Sooka okakase oba ddala oyagala okukolawo olupapula olupya luno.',
'userpage-userdoesnotexist-view' => 'Tewali akawunti ey\'obwamemba "$1".',
'blocked-notice-logextract' => "Memba ono mu kaakano agaanidwa.<br />
@@ -678,6 +687,8 @@ okugiyingira ogezeeko n'ate okukola enkyukakyuka zo.",
'''obubonero obumenya mu bubaka obukakasa obugenderevu bw'omulimu ogwo.'''<br />
Okukyusakyusa kugaanidwa ebigambo ebiri ku lupapula lw'obadde okyusamu bireme nabyo okujjamu entabukatabuka.<br />
Kino kijjawo oluusi bw'obanga okozesa sisitemu ekusobozesa okulambula yintaneti ebikufaako ne bitayolesebwa<br /> abalala abagiriko, sisitemu eyo nga erimu ebitaatereera.",
+'edit_form_incomplete' => "'''Ebitundu ebimu ku by'okoze tebituuse ku kiwereza kyaffe; sooka okebere okukakase'''<br />
+'''nti by'owandise biri nga bw'ogenderedde oryoke oddeemu okugeza okubisindika.'''",
'editing' => 'Kati okyusa $1',
'editingsection' => 'Okyusa $1 (kitundu)',
'editingcomment' => 'Okyusa $1 (kitundu kipya)',
@@ -870,7 +881,7 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
'savedprefs' => 'Enteekateeka yo ekazidwa.',
'timezonelegend' => 'Ssaawa za mu:',
'localtime' => "Ssaawa za w'oli:",
-'timezoneuseserverdefault' => 'Kozesa ssaawa sistemu ze yerondera',
+'timezoneuseserverdefault' => "Kozesa ssaawa wiki eno z'ekozesa ($1)",
'timezoneuseoffset' => 'Ndala (tegeka enjawulo mu budde)',
'timezoneoffset' => 'Njawulo mu budde¹:',
'servertime' => 'Ssaawa ya sisitemu:',
@@ -891,9 +902,7 @@ W'owandikira by'onoonya bw'osoosawo akagambo ''all:'', okunoonya kubuna Wikipedi
'username' => "Ery'obwa memba:",
'yourlanguage' => 'Lulimi lwo:',
'yournick' => 'Empaako yo (ssi ya tteeka):',
-'prefs-help-email' => "Okuwayo E-mail yo ssi kya tteeka, naye yetaagisibwa bw'obanga werabide ekigambo kyo ekikuumi - basobole okukusindikira ekipya.
-
-Osobola okusalawo okuba nga ab'etaaga okukutuukirira bayitira ku nfo yo ey'obwa memba oba olupapula lwo olwa 'yogera nange' nga ggwe tewetaaze kulaga bikufaako.",
+'prefs-help-email' => "Okuwayo E-mail yo ssi kya tteeka, naye yetaagisibwa bw'obanga werabide ekigambo kyo ekikuumi - basobole okukusindikira ekipya.",
# User rights
'editinguser' => "Okyusa ndukusa za memba '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]] {{int:pipe-separator}} [[Special:Contributions/$1|{{int:contribslink}}]])",
@@ -1034,14 +1043,12 @@ Osobola okusalawo okuba nga ab'etaaga okukutuukirira bayitira ku nfo yo ey'obwa
# Watchlist
'watchlist' => 'Empapula zengoberera',
'mywatchlist' => 'Empapula zengoberera',
-'addedwatch' => "Kigattiddwa ku by'ogoberera",
'addedwatchtext' => 'Olupapula "[[:$1]]" kati luli mu [[Special:Watchlist|by\'ogoberera]].
Buli olupapula olwo oba olw\'emboozi lwalwo lwe binaakyusibwamu, enkyukakyuka ezo
zijjakulabika wano. Era erinnya lyalwo mu [[Special:RecentChanges|lukalala olw\'ebyakakyusibwa]]
lijja okuba mu nukuta enziggumivu oyanguyirwe okuliraba.
Bw\'oba oyagala okulekerawo okulugoberera, nyiga ku kigambo "Suula" awo ku bbali.',
-'removedwatch' => "Lugyidwamu mu lukalala lw'empapula z'ogoberera",
'removedwatchtext' => 'Olupapula "[[:$1]]" lugyidwamu mu [[Special:Watchlist|lukalala lw\'empapula z\'ogoberera]].',
'watch' => 'Goberera olupapula luno',
'watchthispage' => 'Goberera olupapula luno',
@@ -1061,7 +1068,7 @@ Bw\'oba oyagala okulekerawo okulugoberera, nyiga ku kigambo "Suula" awo ku bbali
Kakasa nti kino ky'oyagala, era nti otegeera bye kinaaleetawo, era nti kikkirizigana [[{{MediaWiki:Policy-url}}|n'enkola ya MediaWiki]].",
'actioncomplete' => 'Kiwedde',
-'deletedtext' => 'Olupapula "<nowiki>$1</nowiki>" lugyidwawo.
+'deletedtext' => 'Olupapula "$1" lugyidwawo.
Kebera olukalala $2 okumanya ebifa ku byakagyibwawo.',
'deletedarticle' => 'olupapula olwa "[[$1]]" lugyidwawo',
@@ -1084,7 +1091,7 @@ Kebera olukalala $2 okumanya ebifa ku byakagyibwawo.',
'protectexpiry' => 'Kukoma nga:',
'protect_expiry_invalid' => "Ekkomo ery'okusibibwa terikkizidwa.",
'protect_expiry_old' => "Ekkomo ery'okusibibwa liri ku budde obwayita.",
-'protect-text' => "Wano w'osobolera okukebera n'okukyusa okusibibwa kw'olupapula '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Wano w'osobolera okukebera n'okukyusa okusibibwa kw'olupapula '''$1'''.",
'protect-locked-access' => "Akawunti yo tekuwa lukusa kukyusa okusibibwa kw'olupapula luno.
Eno y'enteekateeka ey'olupapula '''$1''':",
@@ -1220,7 +1227,7 @@ Yogera nange gwe olina okugyegattira ku eyo esangidwawo.'''",
'allmessagescurrent' => 'Ebiriwo kakano',
'allmessagestext' => "Luno lwe lukalala olw'obubaka obwa sisitemu obw'omu kkuŋŋaanizo erya MediaWiki.
-Ob'oyagala okuyamba ku kuvvuunula eby'omu MediaWiki yonna, kebera ku [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ne [http://translatewiki.net translatewiki.net].",
+Ob'oyagala okuyamba ku kuvvuunula eby'omu MediaWiki yonna, kebera ku [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] ne [//translatewiki.net translatewiki.net].",
'allmessages-filter-legend' => 'Ensunsula',
'allmessages-filter' => 'Londamu:',
'allmessages-filter-unmodified' => 'Ebitannakyusibwamu',
@@ -1301,11 +1308,10 @@ Ob'oyagala okuyamba ku kuvvuunula eby'omu MediaWiki yonna, kebera ku [http://www
'nextdiff' => 'Enkyukakyuka ezaddako okukolebwa→',
# Media information
-'file-info-size' => 'pikseli $1 ku $2 , bunene bwa fayiro: $3, kika kya MIME: $4',
-'file-nohires' => '<small>Tewali kisingako wano.</small>',
-'svg-long-desc' => 'Fayiro ya kika kya SVG, ya pikselo $1 ku $2 awamu, ya obunene bwa: $3',
-'show-big-image' => 'Laga ekifaananyi ekijjuvu',
-'show-big-image-thumb' => '<small>Okulagako kuno kwa pikiseli: $1 ku $2</small>',
+'file-info-size' => 'pikseli $1 ku $2 , bunene bwa fayiro: $3, kika kya MIME: $4',
+'file-nohires' => '<small>Tewali kisingako wano.</small>',
+'svg-long-desc' => 'Fayiro ya kika kya SVG, ya pikselo $1 ku $2 awamu, ya obunene bwa: $3',
+'show-big-image' => 'Laga ekifaananyi ekijjuvu',
# Special:NewFiles
'ilsubmit' => 'Noonya',
@@ -1330,11 +1336,17 @@ Ebirala biyinza butalabika okujjako ng'okiragidde.
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# External editor support
'edit-externally' => 'Fayiro eno gikolereko mu pulogulamu endala',
-'edit-externally-help' => '[http://www.mediawiki.org/wiki/Manual:External_editors Nyiga wano] okuyiga ebisingawo ku kukozesa pulogulamu endala okukola enkyukakyuka.',
+'edit-externally-help' => '[//www.mediawiki.org/wiki/Manual:External_editors Nyiga wano] okuyiga ebisingawo ku kukozesa pulogulamu endala okukola enkyukakyuka.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'Zonna',
diff --git a/languages/messages/MessagesLi.php b/languages/messages/MessagesLi.php
index 29362661..2a9527b7 100644
--- a/languages/messages/MessagesLi.php
+++ b/languages/messages/MessagesLi.php
@@ -50,94 +50,94 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Dobbel_doorverwiezinge' ),
+ 'Activeusers' => array( 'Aktieve_gebroekers' ),
+ 'Allmessages' => array( 'Alle_berichte' ),
+ 'Allpages' => array( 'Alle_pagina\'s' ),
+ 'Ancientpages' => array( 'Audste_pagina\'s' ),
+ 'Blankpage' => array( 'Laege_pagina\'s' ),
+ 'Block' => array( 'Blokkere' ),
+ 'Blockme' => array( 'Blokkeer_mich' ),
+ 'Booksources' => array( 'Bookwinkele' ),
'BrokenRedirects' => array( 'Gebraoke_doorverwiezinge' ),
- 'Disambiguations' => array( 'Verdudelikingspagina\'s' ),
- 'Userlogin' => array( 'Aanmelje' ),
- 'Userlogout' => array( 'Aafmelje' ),
+ 'Categories' => array( 'Categorieë' ),
+ 'ChangePassword' => array( 'Wachwaord_opnuuj_insjtèlle' ),
+ 'Confirmemail' => array( 'E-mail_bevestige' ),
+ 'Contributions' => array( 'Biedrage' ),
'CreateAccount' => array( 'Gebroeker_aonmake' ),
- 'Preferences' => array( 'Veurkäöre' ),
- 'Watchlist' => array( 'Volglies' ),
- 'Recentchanges' => array( 'Lètste_verangeringe' ),
- 'Upload' => array( 'Uploade' ),
+ 'Deadendpages' => array( 'Doedloupende_pagina\'s' ),
+ 'DeletedContributions' => array( 'Eweggesjafde_biedrage' ),
+ 'Disambiguations' => array( 'Verdudelikingspagina\'s' ),
+ 'DoubleRedirects' => array( 'Dobbel_doorverwiezinge' ),
+ 'Emailuser' => array( 'E-maile' ),
+ 'Export' => array( 'Exportere' ),
+ 'Fewestrevisions' => array( 'Winnigs_bewirkde_pagina\'s' ),
+ 'FileDuplicateSearch' => array( 'Besjtandsduplicate_zeuke' ),
+ 'Filepath' => array( 'Besjtandspaad' ),
+ 'Import' => array( 'Importere' ),
+ 'Invalidateemail' => array( 'E-mail_annulere' ),
+ 'BlockList' => array( 'Geblokkeerde_IP\'s' ),
+ 'LinkSearch' => array( 'Verwiezinge_zeuke' ),
+ 'Listadmins' => array( 'Systeemwèrkers' ),
+ 'Listbots' => array( 'Botlies' ),
'Listfiles' => array( 'Plaetjes' ),
- 'Newimages' => array( 'Nuuj_plaetjes' ),
- 'Listusers' => array( 'Gebroekers' ),
'Listgrouprights' => array( 'Groepsrechte_weergaeve' ),
- 'Statistics' => array( 'Sjtattestieke' ),
- 'Randompage' => array( 'Willekäörig_artikel' ),
+ 'Listredirects' => array( 'Doorverwiezinge' ),
+ 'Listusers' => array( 'Gebroekers' ),
+ 'Lockdb' => array( 'DB_blokkere' ),
+ 'Log' => array( 'Logbeuk', 'Logbook' ),
'Lonelypages' => array( 'Weispagina\'s' ),
- 'Uncategorizedpages' => array( 'Óngecategoriseerde_pagina\'s' ),
- 'Uncategorizedcategories' => array( 'Óngecategoriseerde_categorieë' ),
- 'Uncategorizedimages' => array( 'Óngecategoriseerde_plaetjes' ),
- 'Uncategorizedtemplates' => array( 'Óngecategorisserde_sjablone' ),
- 'Unusedcategories' => array( 'Óngebroekde_categorieë' ),
- 'Unusedimages' => array( 'Óngebroekde_plaetjes' ),
- 'Wantedpages' => array( 'Gewunsjde_pagina\'s' ),
- 'Wantedcategories' => array( 'Gewunsjde_categorieë' ),
- 'Wantedfiles' => array( 'Gevraogde_besjtande' ),
- 'Wantedtemplates' => array( 'Gevraogde_sjablone' ),
+ 'Longpages' => array( 'Lang_pagina\'s' ),
+ 'MergeHistory' => array( 'Historie_sameveuge' ),
+ 'MIMEsearch' => array( 'MIME_zeuke' ),
+ 'Mostcategories' => array( 'Meiste_categorieë' ),
+ 'Mostimages' => array( 'Meis_gebroekde_plaetjes' ),
'Mostlinked' => array( 'Meis_gelinkde_pazjena\'s' ),
'Mostlinkedcategories' => array( 'Meis_gelinkde_categorieë' ),
'Mostlinkedtemplates' => array( 'Meis_gebroekde_sjablone' ),
- 'Mostimages' => array( 'Meis_gebroekde_plaetjes' ),
- 'Mostcategories' => array( 'Meiste_categorieë' ),
'Mostrevisions' => array( 'Meis_bewirkde_pagina\'s' ),
- 'Fewestrevisions' => array( 'Winnigs_bewirkde_pagina\'s' ),
- 'Shortpages' => array( 'Kórte_pagina\'s' ),
- 'Longpages' => array( 'Lang_pagina\'s' ),
+ 'Movepage' => array( 'Verplaatse' ),
+ 'Mycontributions' => array( 'Mien_biedrage' ),
+ 'Mypage' => array( 'Mien_pagina\'s' ),
+ 'Mytalk' => array( 'Mien_euverlèk' ),
+ 'Newimages' => array( 'Nuuj_plaetjes' ),
'Newpages' => array( 'Nuuj_pagina\'s' ),
- 'Ancientpages' => array( 'Audste_pagina\'s' ),
- 'Deadendpages' => array( 'Doedloupende_pagina\'s' ),
+ 'Popularpages' => array( 'Populair_pagina\'s' ),
+ 'Preferences' => array( 'Veurkäöre' ),
+ 'Prefixindex' => array( 'Alle_artikele' ),
'Protectedpages' => array( 'Beveiligde_pagina\'s' ),
'Protectedtitles' => array( 'Beveiligde_titels' ),
- 'Allpages' => array( 'Alle_pagina\'s' ),
- 'Prefixindex' => array( 'Alle_artikele' ),
- 'Ipblocklist' => array( 'Geblokkeerde_IP\'s' ),
- 'Specialpages' => array( 'Speciaal_pagina\'s' ),
- 'Contributions' => array( 'Biedrage' ),
- 'Emailuser' => array( 'E-maile' ),
- 'Confirmemail' => array( 'E-mail_bevestige' ),
- 'Whatlinkshere' => array( 'Verwiezinge_nao_hie' ),
+ 'Randompage' => array( 'Willekäörig_artikel' ),
+ 'Randomredirect' => array( 'Willekäörige_doorverwiezing' ),
+ 'Recentchanges' => array( 'Lètste_verangeringe' ),
'Recentchangeslinked' => array( 'Verwante_verangeringe' ),
- 'Movepage' => array( 'Verplaatse' ),
- 'Blockme' => array( 'Blokkeer_mich' ),
- 'Booksources' => array( 'Bookwinkele' ),
- 'Categories' => array( 'Categorieë' ),
- 'Export' => array( 'Exportere' ),
- 'Version' => array( 'Versie' ),
- 'Allmessages' => array( 'Alle_berichte' ),
- 'Log' => array( 'Logbeuk', 'Logbook' ),
- 'Blockip' => array( 'Blokkere' ),
+ 'Revisiondelete' => array( 'Versie_ewegsjaffe' ),
+ 'Search' => array( 'Zeuke' ),
+ 'Shortpages' => array( 'Kórte_pagina\'s' ),
+ 'Specialpages' => array( 'Speciaal_pagina\'s' ),
+ 'Statistics' => array( 'Sjtattestieke' ),
+ 'Tags' => array( 'Labels' ),
+ 'Uncategorizedcategories' => array( 'Óngecategoriseerde_categorieë' ),
+ 'Uncategorizedimages' => array( 'Óngecategoriseerde_plaetjes' ),
+ 'Uncategorizedpages' => array( 'Óngecategoriseerde_pagina\'s' ),
+ 'Uncategorizedtemplates' => array( 'Óngecategorisserde_sjablone' ),
'Undelete' => array( 'Hersjtèlle' ),
- 'Import' => array( 'Importere' ),
- 'Lockdb' => array( 'DB_blokkere' ),
'Unlockdb' => array( 'DB_vriegaeve' ),
- 'Userrights' => array( 'Gebroekersrechte' ),
- 'MIMEsearch' => array( 'MIME_zeuke' ),
- 'FileDuplicateSearch' => array( 'Besjtandsduplicate_zeuke' ),
- 'Unwatchedpages' => array( 'Neet-gevolgde_pagina\'s' ),
- 'Listredirects' => array( 'Doorverwiezinge' ),
- 'Revisiondelete' => array( 'Versie_ewegsjaffe' ),
+ 'Unusedcategories' => array( 'Óngebroekde_categorieë' ),
+ 'Unusedimages' => array( 'Óngebroekde_plaetjes' ),
'Unusedtemplates' => array( 'Óngebroekde_sjablone' ),
- 'Randomredirect' => array( 'Willekäörige_doorverwiezing' ),
- 'Mypage' => array( 'Mien_pagina\'s' ),
- 'Mytalk' => array( 'Mien_euverlèk' ),
- 'Mycontributions' => array( 'Mien_biedrage' ),
- 'Listadmins' => array( 'Systeemwèrkers' ),
- 'Listbots' => array( 'Botlies' ),
- 'Popularpages' => array( 'Populair_pagina\'s' ),
- 'Search' => array( 'Zeuke' ),
- 'Resetpass' => array( 'Wachwaord_opnuuj_insjtèlle' ),
+ 'Unwatchedpages' => array( 'Neet-gevolgde_pagina\'s' ),
+ 'Upload' => array( 'Uploade' ),
+ 'Userlogin' => array( 'Aanmelje' ),
+ 'Userlogout' => array( 'Aafmelje' ),
+ 'Userrights' => array( 'Gebroekersrechte' ),
+ 'Version' => array( 'Versie' ),
+ 'Wantedcategories' => array( 'Gewunsjde_categorieë' ),
+ 'Wantedfiles' => array( 'Gevraogde_besjtande' ),
+ 'Wantedpages' => array( 'Gewunsjde_pagina\'s' ),
+ 'Wantedtemplates' => array( 'Gevraogde_sjablone' ),
+ 'Watchlist' => array( 'Volglies' ),
+ 'Whatlinkshere' => array( 'Verwiezinge_nao_hie' ),
'Withoutinterwiki' => array( 'Gein_interwiki' ),
- 'MergeHistory' => array( 'Historie_sameveuge' ),
- 'Filepath' => array( 'Besjtandspaad' ),
- 'Invalidateemail' => array( 'E-mail_annulere' ),
- 'Blankpage' => array( 'Laege_pagina\'s' ),
- 'LinkSearch' => array( 'Verwiezinge_zeuke' ),
- 'DeletedContributions' => array( 'Eweggesjafde_biedrage' ),
- 'Tags' => array( 'Labels' ),
- 'Activeusers' => array( 'Aktieve_gebroekers' ),
);
$dateFormats = array(
@@ -186,8 +186,8 @@ $messages = array(
'tog-shownumberswatching' => "'t Aantal gebroekers tuine die dees pagina volg",
'tog-oldsig' => 'Bestaonde ongerteikening:',
'tog-fancysig' => 'Es wikiteks behanjele (zonder autematische verwiezing)',
-'tog-externaleditor' => "Sjtanderd 'ne externe teksbewirker gebroeke (inkel veur experts, speciaal instellinge zien nudig. [http://www.mediawiki.org/wiki/Manual:External_editors Mie infermasie])",
-'tog-externaldiff' => "Sjtanderd 'n extern vergeliekingsprogramma gebroeke (inkel veur experts, speciaal instellinge zien nudig [http://www.mediawiki.org/wiki/Manual:External_editors Mie infermasie])",
+'tog-externaleditor' => "Sjtanderd 'ne externe teksbewirker gebroeke (inkel veur experts, speciaal instellinge zien nudig. [//www.mediawiki.org/wiki/Manual:External_editors Mie infermasie])",
+'tog-externaldiff' => "Sjtanderd 'n extern vergeliekingsprogramma gebroeke (inkel veur experts, speciaal instellinge zien nudig [//www.mediawiki.org/wiki/Manual:External_editors Mie infermasie])",
'tog-showjumplinks' => '"gank nao"-toegankelikheidslinks mäögelik make',
'tog-uselivepreview' => '"live veurbesjouwing" gebroeke (vereis JavaScript - experimenteel)',
'tog-forceeditsummary' => "'n Melding gaeve bie 'n laeg samevatting",
@@ -283,15 +283,7 @@ $messages = array(
'listingcontinuesabbrev' => 'wiejer',
'index-category' => 'Geïndexeerde paazjes',
'noindex-category' => 'Óngeïndexeerde paazjes',
-
-'mainpagetext' => "'''MediaWiki software succesvol geïnsjtalleerd.'''",
-'mainpagedocfooter' => "Raodpleeg de [http://meta.wikimedia.org/wiki/NL_Help:Inhoudsopgave handjleiding] veur informatie euver 't gebroek van de wikisoftware.
-
-== Mieë hölp ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lies mit instellinge]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki VGV (FAQ)]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki mailinglies veur nuuj versies]",
+'broken-file-category' => "Pazjena's mit ónjuuste bestandjsverwiezinge",
'about' => 'Informatie',
'article' => 'Pagina',
@@ -343,10 +335,10 @@ $messages = array(
'history' => 'Historie',
'history_short' => 'Historie',
'updatedmarker' => 'bewirk sins mien lètste bezeuk',
-'info_short' => 'Informatie',
'printableversion' => 'Printervruntelike versie',
'permalink' => 'Permanente link',
'print' => 'Aafdrukke',
+'view' => 'Bekieke',
'edit' => 'Bewèrk',
'create' => 'Aanmake',
'editthispage' => 'Pagina bewirke',
@@ -354,6 +346,7 @@ $messages = array(
'delete' => 'Wisse',
'deletethispage' => 'Wisse',
'undelete_short' => '$1 {{PLURAL:$1|bewirking|bewirkinge}} trökzètte',
+'viewdeleted_short' => '{{PLURAL:$1|ein eweggesjafde versie|$1 eweggesjafde versies}} bekieke',
'protect' => 'Besjirm',
'protect_change' => 'beveiligingssjtatus verangere',
'protectthispage' => 'Beveilige',
@@ -437,6 +430,8 @@ $1',
'toc' => 'Inhaud',
'showtoc' => 'tuine',
'hidetoc' => 'versjtaek',
+'collapsible-collapse' => 'Inklappe',
+'collapsible-expand' => 'Oetklappe',
'thisisdeleted' => '$1 tuine of trökzètte?',
'viewdeleted' => '$1 tuine?',
'restorelink' => '{{PLURAL:$1|ein eweggesjafde versie|$1 eweggesjafde versies}}',
@@ -448,6 +443,8 @@ $1',
'page-rss-feed' => '“$1†RSS-feed',
'page-atom-feed' => '“$1†Atom-feed',
'red-link-title' => '$1 (pagina besteit neet)',
+'sort-descending' => 'Sorteer aafloupendj',
+'sort-ascending' => 'Sorteer óploupendj',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Pagina',
@@ -531,12 +528,13 @@ Query: $2',
'protectedpagetext' => 'Dees pagina is beveilig. Bewirke is neet meugelik.',
'viewsourcetext' => 'De kèns de brónteks van dees pagina bekieke en kopiëre:',
'protectedinterface' => 'Deze pagina bevat teks veur berichte van de software en is beveilig om misbroek te veurkomme.',
-'editinginterface' => "'''Waarsjoewing:''' Doe bewirks 'n pagina die gebroek waert door de software. Bewirkinge op dees pagina beïnvlode de gebroekersinterface van jederein. Euverwaeg veur euverzèttinge [http://translatewiki.net/wiki/Main_Page?setlang=li translatewiki.net] te gebroeke, 't euverzèttingssprojek veur MediaWiki.",
+'editinginterface' => "'''Waarsjoewing:''' Doe bewirks 'n pagina die gebroek waert door de software. Bewirkinge op dees pagina beïnvlode de gebroekersinterface van jederein. Euverwaeg veur euverzèttinge [//translatewiki.net/wiki/Main_Page?setlang=li translatewiki.net] te gebroeke, 't euverzèttingssprojek veur MediaWiki.",
'sqlhidden' => '(SQL query verborge)',
'cascadeprotected' => "Deze pagina kin neet bewirk waere, omdet zie is opgenome in de volgende {{PLURAL:$1|pagina|pagina's}} die beveilig {{PLURAL:$1|is|zeen}} mèt de kaskaad-optie:
$2",
'namespaceprotected' => "Doe höbs gein rechte om pagina's in de naamruumde '''$1''' te bewirke.",
-'customcssjsprotected' => "De kèns dees pagina neet bewirke ómdet die persuunlike insjtèllinge van 'ne angere gebroeker bevat.",
+'customcssprotected' => "De kèns dees CSS-pagina neet bewirke ómdet die persuunlike insjtèllinge van 'ne angere gebroeker bevat.",
+'customjsprotected' => "De kèns dees javapagina neet bewirke ómdet die persuunlike insjtèllinge van 'ne angere gebroeker bevat.",
'ns-specialprotected' => 'Pagina\'s in de naamruumde "{{ns:special}}" kinne neet bewirk waere.',
'titleprotected' => "'t aanmake van deze pagina is beveilig door [[User:$1|$1]].
De gegaeve ree is ''$2''.",
@@ -574,6 +572,7 @@ Vergaet neet dien [[Special:Preferences|veurkäöre veur {{SITENAME}}]] aan te p
'createaccount' => 'Nuuj gebroekersprofiel aanmake.',
'gotaccount' => "Höbs te al 'ne gebroekersnaam? '''$1'''.",
'gotaccountlink' => 'Inlogge',
+'userlogin-resetlink' => 'Bös se dien aanmèljingsgegaeves vergaete?',
'createaccountmail' => 'via de e-mail',
'createaccountreason' => 'Raeje:',
'badretype' => 'De ingeveurde wachwäörd versjille vanein.',
@@ -584,13 +583,15 @@ Kees estebleef 'ne angere naam.",
'createaccounterror' => 'Kós gebroeker neet aanmake: $1',
'nocookiesnew' => "De gebroeker is aangemaak mèr neet aangemeld. {{SITENAME}} gebroek cookies veur 't aanmelje van gebroekers. Sjakel die a.u.b. in en meld dao nao aan mèt diene nuje gebroekersnaam en wachwaord.",
'nocookieslogin' => "{{SITENAME}} gebroek cookies veur 't aanmelje van gebroekers. Doe accepteers gén cookies. Sjakel deze optie a.u.b. in en perbeer 't oppernuuj.",
+'nocookiesfornew' => "De gebroeker is neet aangemaak ómdet de bron neet bevestig kos waere.
+Zörg deveur dats te cookies höbs ingesjakeld, herlaaj dees pagina en perbeer 't obbenuuts.",
'noname' => "De mos 'n gebroekersnaam opgaeve.",
'loginsuccesstitle' => 'Aanmèlde geluk.',
'loginsuccess' => 'Doe bis noe es "$1" aangemeld bie {{SITENAME}}.',
'nosuchuser' => 'D\'r besjteit geine gebroeker mit de naam "$1".
Die seen huidlettegevullig
Controleer dien spelling, of gebroek ongersjtaond formuleer om \'n [[Special:UserLogin/signup|nuuj]] gebroekersprofiel aan te make.',
-'nosuchusershort' => 'De gebroeker "<nowiki>$1</nowiki>" besjteit neet. Konterleer de sjriefwieze.',
+'nosuchusershort' => 'De gebroeker "$1" besjteit neet. Konterleer de sjriefwieze.',
'nouserspecified' => "Doe deens 'ne gebroekersnaam op te gaeve.",
'login-userblocked' => 'Deze gebroeker steit geblokkeerd. Aanmèlje is neet toegestange.',
'wrongpassword' => "'t Ingegaeve wachwaord is neet zjus. Perbeer 't obbenuujts.",
@@ -631,13 +632,14 @@ Negeer dit berich as deze gebroeker zonger dien medewete is aangemaak.',
'usernamehasherror' => '\'ne Gebroekersnaam kèn geint hèkske ("#") bevatte.',
'login-throttled' => "Doe höbs te huifig geperbeerd aan te melje mèt 'n verkierd wachwaord.
Doe mós effe wachte ierdets te 't obbenuuts kens perbere.",
+'login-abort-generic' => 'Doe bös neet aangemèldj - Aafgebraoke',
'loginlanguagelabel' => 'Taol: $1',
'suspicious-userlogout' => "Dien verzeuk óm aaf te melde is genegeerd, ómdet 't liek esof 't verzeuk is versjik door 'ne browser of cacheproxy dae kepot is.",
# E-mail sending
'php-mail-error-unknown' => "Dao haet ziech 'n ónbekénde fout veurgedaon in de mail()-functie van PHP",
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Wachwaord obbenuuts insjtèlle',
'resetpass_announce' => "Doe bös aangemeld mèt 'ne tiejdelikke code dae per e-mail is toegezönje. Veur 'n nuuj wachwaord in om 't aanmelje te voltooie:",
'resetpass_header' => 'Wachwaord obbenuuts insjtèlle',
@@ -654,6 +656,34 @@ Doe mós effe wachte ierdets te 't obbenuuts kens perbere.",
Meugelik höbs doe dien wachwaord al gewiezig of 'n nuuj tiedelik wachwaord aangevraog.",
'resetpass-temp-password' => 'Tiedelik wachwaord:',
+# Special:PasswordReset
+'passwordreset' => 'Wachwaord obbenuuts insjtèlle',
+'passwordreset-text' => "Völ dit form aan zodet weer dich 'ne mail kinne sjikk mit dien gebroekersgegaeves.",
+'passwordreset-legend' => 'Wachwaord obbenuuts insjtèlle',
+'passwordreset-disabled' => "'t Is hie neet meugelik óm die wachwaord óbbenuits in te sjtelle.",
+'passwordreset-pretext' => '{{PLURAL:$1||Veur ei van de vèljer hieónger in}}',
+'passwordreset-username' => 'Gebroekersnaam:',
+'passwordreset-domain' => 'Domein:',
+'passwordreset-email' => 'E-mailadres:',
+'passwordreset-emailtitle' => 'Gebroekersgegaeves óp {{SITENAME}}',
+'passwordreset-emailtext-ip' => "Emes, wersjienlik doe, vanaaf 't IP-adres $1, haet dien gebroekersgegaeves veur {{SITENAME}} ($4) ópgevraog.
+De volgende {{PLURAL:$3|gebroeker is|gebroekers zint}} gekoppeld aan dit e-mailadres:
+
+$2
+
+{{PLURAL:$3|Dit tiedelik wachwaord vervilt|Dees tiedelike wachweurd vervallen}} euver {{PLURAL:$5|einen daag|$5 daag}}.
+Mel dich aan en veranger 't wachwaord noe. Es se dit verzeuk neet zelf hes gedaon, of es se 't oorspronkelik wachwaord nog kins en 't neet anges wils, laot dit berich den en blief dien aad wachwaord gebroeke.",
+'passwordreset-emailtext-user' => "Gebroeker $1 op de site {{SITENAME}} haet dien gebroekersgegaeves veur {{SITENAME}} ($4) ópgevraog.
+De volgende {{PLURAL:$3|gebroeker is|gebroekers zint}} gekoppeld aan dit e-mailadres:
+
+$2
+
+{{PLURAL:$3|Dit tiedelik wachwaord vervilt|Dees tiedelike wachweurd vervallen}} euver {{PLURAL:$5|einen daag|$5 daag}}.
+Mel dich aan en veranger 't wachwaord noe. Es se dit verzeuk neet zelf hes gedaon, of es se 't oorspronkelik wachwaord nog kins en 't neet anges wils, laot dit berich den en blief dien aad wachwaord gebroeke.",
+'passwordreset-emailelement' => 'Gebroekersnaam: $1
+Tiedelik wachwaord: $2',
+'passwordreset-emailsent' => "d'r Is per mail 'n herinnering versjik.",
+
# Edit page toolbar
'bold_sample' => 'Vètten teks',
'bold_tip' => 'Vetten teks',
@@ -665,8 +695,6 @@ Meugelik höbs doe dien wachwaord al gewiezig of 'n nuuj tiedelik wachwaord aang
'extlink_tip' => 'Extern link (mit de http:// prefix)',
'headline_sample' => 'Deilongerwerp',
'headline_tip' => 'Tusseköpske (hoogste niveau)',
-'math_sample' => 'Veur de formule in',
-'math_tip' => 'Wiskóndige formule (LaTeX)',
'nowiki_sample' => 'Veur hiej de neet op te make teks in',
'nowiki_tip' => 'Verloup wiki-opmaak',
'image_tip' => 'Mediabesjtandj',
@@ -747,7 +775,7 @@ De kèns [[Special:Search/{{PAGENAME}}|nao deze term zeuke]] in anger pagina\'s,
'noarticletext-nopermission' => 'Dees pagina bevat gein teks.
De kans [[Special:Search/{{PAGENAME}}|nao dees term zeuke]] in anger pagina\'s of
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logbeuk doorzeuke]</span>.',
-'userpage-userdoesnotexist' => 'Doe bewirks \'n gebroekerspagina van \'ne gebroeker dae neet besjteit (gebroeker "$1"). Controlere ofs doe dees pagina waal wils aanmake/bewirke.',
+'userpage-userdoesnotexist' => 'Doe bewirks \'n gebroekerspagina van \'ne gebroeker dae neet besjteit (gebroeker "<nowiki>$1</nowiki>"). Controlere ofs doe dees pagina waal wils aanmake/bewirke.',
'userpage-userdoesnotexist-view' => 'Gebroeker "$1" is neet geregistreerd.',
'blocked-notice-logextract' => "Deze gebroeker is noe geblok.
De leste bloklogregel wuuertj hiejónger t'r raodpleging gegaeve:",
@@ -780,6 +808,7 @@ Probeer 't opnieuw. Als 't dan nog neet lukt, meldt dich dan aaf en weer aan.'''
'''Als dit een legitieme bewerking is, probeer 't dan opnieuw. Als 't dan nog neet lukt, meldt dich dan aaf en weer aan.'''",
'token_suffix_mismatch' => "'''Dien bewerking is geweigerd omdat dien client de laesteikes in 't bewerkingstoken onjuist haet behandeld. De bewerking is geweigerd om verminking van de paginateks te veurkomme. Dit gebeurt soms es d'r een webgebaseerde proxydienst wurt gebroek die foute bevat.'''",
+'edit_form_incomplete' => "'''Sommige ongerdeile van 't bewerkingsformuleer höbbe de server neet bereik. Controleer of dien bewerkinge intak zien en perbeer 't obbenuits.'''",
'editing' => 'Bewirkingspagina: $1',
'editingsection' => 'Bewirke van sectie van $1',
'editingcomment' => 'Bewirke $1 (commentair)',
@@ -1011,7 +1040,7 @@ Controleer de logbeuk.",
# Suppression log
'suppressionlog' => 'Verbergingslogbook',
'suppressionlogtext' => 'De ongerstaonde lies bevat de verwiederinge en blokkades die veur beheerders verborge zeen.
-In de [[Special:IPBlockList|IP-blokkeerlies]] zeen de hudige blokkades te bekieke.',
+In de [[Special:BlockList|IP-blokkeerlies]] zeen de hudige blokkades te bekieke.',
# History merging
'mergehistory' => "Gesjiedenis van pagina's samevoege",
@@ -1122,12 +1151,13 @@ Zoelang as de servers nog neet sjterk genog zunt kins e zeuke bie Google.
Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
# Quickbar
-'qbsettings' => 'Menubalkinsjtèllinge',
-'qbsettings-none' => 'Oetgesjakeld',
-'qbsettings-fixedleft' => 'Links vas',
-'qbsettings-fixedright' => 'Rechts vas',
-'qbsettings-floatingleft' => 'Links zjwevend',
-'qbsettings-floatingright' => 'Rechs zjwevend',
+'qbsettings' => 'Menubalkinsjtèllinge',
+'qbsettings-none' => 'Oetgesjakeld',
+'qbsettings-fixedleft' => 'Links vas',
+'qbsettings-fixedright' => 'Rechts vas',
+'qbsettings-floatingleft' => 'Links zjwevend',
+'qbsettings-floatingright' => 'Rechs zjwevend',
+'qbsettings-directionality' => 'Vas, aafhenkelik vanne sjrifrichting van dien sjpraok',
# Preferences page
'preferences' => 'Veurkäöre',
@@ -1138,9 +1168,10 @@ Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
'changepassword' => 'Wachwaord verangere',
'prefs-skin' => '{{SITENAME}}-uterlik',
'skin-preview' => 'Veurbesjouwing',
-'prefs-math' => 'Mattemetik rendere',
'datedefault' => 'Gein veurkäör',
+'prefs-beta' => 'Bètadeil',
'prefs-datetime' => 'Datum en tied',
+'prefs-labs' => 'Alfadeil',
'prefs-personal' => 'Gebroekersinfo',
'prefs-rc' => 'Recènte verangeringe en weergaaf van sjtumpkes',
'prefs-watchlist' => 'Volglies',
@@ -1162,8 +1193,6 @@ Mèrk op dat hun indexe van {{SITENAME}} content e bietje gedatierd kint zien.',
'columns' => 'Kolomme',
'searchresultshead' => 'Insjtèllinge veur zeukresultate',
'resultsperpage' => 'Aantal te tuine zeukresultate per pagina',
-'contextlines' => 'Aantal regels per gevónje pagina',
-'contextchars' => 'Aantal teikes van de conteks per reigel',
'stub-threshold' => 'Drempel veur markering <a href="#" class="stub">begske</a>:',
'stub-threshold-disabled' => 'Oetgezatj',
'recentchangesdays' => 'Aantal daag te tuine in de recènte verangeringe:',
@@ -1176,7 +1205,7 @@ Hie volg n willekäörig gegenereerde waerde die se kins gebroeke: $1',
'savedprefs' => 'Dien veurkäöre zint opgesjlage.',
'timezonelegend' => 'Tiedzone:',
'localtime' => 'Plaatselike tied',
-'timezoneuseserverdefault' => 'Gebroek servertied',
+'timezoneuseserverdefault' => 'Gebroek wikistanderd ($1)',
'timezoneuseoffset' => 'Angers (gaef tiedversjil)',
'timezoneoffset' => 'Tiedsversjil¹:',
'servertime' => 'Server tied:',
@@ -1226,7 +1255,8 @@ Zie maag neet mie es $1 {{PLURAL:$1|karakter|karakters}} bevatte.',
Deze informatie is zichbaar veur angere gebroekers.',
'email' => 'E-mail',
'prefs-help-realname' => '* Echte naam (opsjeneel): esse deze opgufs kin deze naam gebroek waere om dich erkinning te gaeve veur dien wèrk.',
-'prefs-help-email' => 'E-mail (optioneel): Hiedoor kan me contak mit diech opnumme zónger dats te dien identiteit hoofs vrie te gaeve.',
+'prefs-help-email' => "E-mailadres is optioneel, mer maak 't muuëgelik óm dich e wachwaord te sjikke es s'n 't vergaete höbs.",
+'prefs-help-email-others' => "Doe kans ouch angere in staat stelle per-email kóntak mit uch op te numme via 'n verwiezing op eur gebroekers- en euverlègkpazjena zónger det se diene identiteit luuëts weite.",
'prefs-help-email-required' => "Hiej veur is 'n e-mailadres neudig.",
'prefs-info' => 'Basisinfo',
'prefs-i18n' => 'Spraokinstèllinge',
@@ -1351,15 +1381,15 @@ Deze informatie is zichbaar veur angere gebroekers.',
'right-userrights' => 'Alle gebroekersrechte bewerke',
'right-userrights-interwiki' => "Gebroekersrechte van gebroekers in angere wiki's wijzige",
'right-siteadmin' => 'De database blokkere en weer vriegaeve',
-'right-reset-passwords' => 'Wachtwoorde van andere gebroekers opnieuw instelle',
'right-override-export-depth' => "Export paazjes midin geslinkdje paazjes mit 'n deepdje ven 5",
'right-sendemail' => 'Versjik e-mail aan anger gebroekers',
# User rights log
-'rightslog' => 'Gebroekersrechtelogbook',
-'rightslogtext' => 'Hiej onger staon de wieziginge in gebroekersrechte.',
-'rightslogentry' => 'wiezigde de gebroekersrechte veur $1 van $2 nao $3',
-'rightsnone' => '(gein)',
+'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',
@@ -1483,12 +1513,13 @@ De lètste link is bedoeld veur mediabesjtande die gein plaetje zeen.",
'minlength1' => 'Bestandsname mòtte minstes éine letter bevatte.',
'illegalfilename' => 'De bestandjsnaam "$1" bevat ongeldige karakters. Gaef \'t bestandj \'ne angere naam, en probeer \'t dan opnuuj te uploade.',
'badfilename' => 'De naom van \'t besjtand is verangerd in "$1".',
-'filetype-mime-mismatch' => 'De bestandjsextensie heurt neet bie t MIME-type.',
+'filetype-mime-mismatch' => 'Extensie ".$1" kömp neet euverein mit \'t MIME-type van \'t bestandj ($2).',
'filetype-badmime' => '\'t Is neet toegestaon om bestenj van MIME type "$1" te uploade.',
'filetype-bad-ie-mime' => 'Dit bestandj kan neet toegevoeg waere omdet Internet Explorer t zów indentificere es "$1", \'n neet toegelaote bestandjstype det potentieel sjadelik is.',
'filetype-unwanted-type' => "'''\".\$1\"''' is 'n ongewunsj bestandstype.
Aangeweze {{PLURAL:\$3|bestandjstype|bestandjstypes}}zeen \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' is gein toegelaote bestandstype. Toegelaote {{PLURAL:\$3|bestandjtype|bestandjtypes}} zeen \$2.",
+'filetype-banned-type' => "{{PLURAL:\$4|'t bestandjstype '''\".\$1\"''' weurt|De bestandjstypes '''\".\$1\"''' waere}} neet toegelaote.
+{{PLURAL:\$3|'t Toegelaote bestandjstype is|De toegelaote bestandjstypes zeen}} \$2.",
'filetype-missing' => 'Dit bestandj haet gein extensie (wie ".jpg").',
'empty-file' => 't Bestandj det se perbeers te uploade had gein inhald.',
'file-too-large' => 't Bestandj det se perbeers te uploade waas te groet.',
@@ -1504,6 +1535,7 @@ Aangeweze {{PLURAL:\$3|bestandjstype|bestandjstypes}}zeen \$2.",
'large-file' => 'Aanbeveling: maak bestenj neet groter dan $1, dit bestand is $2.',
'largefileserver' => "'t Bestandj is groter dan de instelling van de server toestuit.",
'emptyfile' => "'t Besjtand wats re höbs geupload is laeg. Dit kump waorsjienliek door 'n typfout in de besjtandsnaom. Kiek estebleef ofs te dit besjtand wirkelik wils uploade.",
+'windows-nonascii-filename' => 'Deze wiki ongersteunt gein bestandjsname mit speciaal teikes.',
'fileexists' => "D'r is al e besjtand mit dees naam, bekiek '''<tt>[[:$1]]</tt>''' of se dat besjtand mesjien wils vervange.
[[$1|thumb]]",
'filepageexists' => "De besjrievingspagina veur dit besjtand besjteit al op '''<tt>[[:$1]]</tt>''', meh d'r besjteit gein besjtand mit deze naam. De samevatting dies te höbs opgegaeve zal neet op de besjrievingspagina versjiene. Bewirk de pagina handjmaotig óm dien besjrieving dao te tuine.
@@ -1537,6 +1569,8 @@ Raodpleeg t verwiederingslogbook veurdet se wiejer geis.',
'php-uploaddisabledtext' => 'PHP-bestanduploads zeen oetgesjakeld. Controleer a.u.b. de file_uploads-instelling.',
'uploadscripted' => 'Dit bestandj bevat HTML- of scriptcode die foutief door diene browser weergegaeve kinne waere.',
'uploadvirus' => "'t Bestand bevat 'n virus! Details: $1",
+'uploadjava' => "'t Bestandj is e ZIP-bestandj det 'n Java .class-bestandj bevat.
+'t Uploade van Java-bestenj is neet toegestaon omdet hiemit beveiligingsinstellinge omzeild kinne waere.",
'upload-source' => 'Brónbestandj',
'sourcefilename' => 'Oorspronkelike bestandsnaam:',
'sourceurl' => 'Brón URL:',
@@ -1546,10 +1580,6 @@ Raodpleeg t verwiederingslogbook veurdet se wiejer geis.',
'upload-options' => 'Uploadinstellinge',
'watchthisupload' => 'Volg dit bestandj',
'filewasdeleted' => "d'r Is eerder 'n bestandj mit deze naam verwiederd. Raodpleeg 't $1 veurdetse 't opnuuj toevoegs.",
-'upload-wasdeleted' => "'''Waarsjuwing: Doe bös 'n bestand det eerder verwiederd woor aan 't uploade.'''
-
-Lèver zeker te zeen detse gesjik bös om door te gaon met 't uploade van dit bestand.
-'t verwiederingslogbook van dit bestand kinse hiej zeen:",
'filename-bad-prefix' => "De naam van 't bestand detse aan 't uploade bös begint met '''\"\$1\"''', wat 'ne neet-besjrievende naam is dae meestal automatisch door 'ne digitale camera wörd gegaeve. Kees estebleef 'ne dudelike naam veur dien bestand.",
'upload-success-subj' => 'De upload is geluk',
'upload-success-msg' => 'Dienen upload van [$2] is geslaag en is besjikbaar: [[:{{ns:file}}:$1]]',
@@ -1571,12 +1601,29 @@ Gank trök nao t [[Special:Upload/stash/$1|uploadformuleer]] om dit perbleem te
'upload-unknown-size' => 'Ónbekèndje gruuedje',
'upload-http-error' => 'dr Is n HTTP-fout opgetraoje: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => "d'r Woor 'n fout bie 't äöpene van 't bestandj veur ZIP-controle.",
+'zip-wrong-format' => "'t Opgegaeve bestandj waar gein ZIP-bestandj.",
+'zip-bad' => "'t Bestandj is kepót of 'n ónlaesbaar ZIP-bestandj.
+De veiligheid kin neet waere gecontroleerd.",
+'zip-unsupported' => "'t Bestandj is e ZIP-bestandj det gebroek maak van ZIP-sofwaer dae MediaWiki neet begriep.
+De veiligheid kin neet waere gekónterleerdj.",
+
+# Special:UploadStash
+'uploadstash' => 'Verbórge uploads',
+'uploadstash-summary' => 'Dees pagina beed toegank toet bestenj die geüpload zeen of nag geüpload mótte waere, meh nag neet besjikbaar gemaak zeen óppe wiki. Dees bestenj zeen allein zichbaar veure gebroeker die ze uploadj.',
+'uploadstash-clear' => 'Wis verbórge bestenj',
+'uploadstash-nofiles' => "d'r Zeen gein verbórge bestenj.",
+'uploadstash-badtoken' => "Kin de hanjeling neet oetveure. Dit kump mesjien omdet dien bewèrkingsrefs verloupe zeen. Perbeer 't obbenuits.",
+'uploadstash-errclear' => 'Wisse van bestandj mislök.',
+'uploadstash-refresh' => 'Wèrk lies van bestenj bie',
+
# img_auth script messages
'img-auth-accessdenied' => 'Toegank geweigerd',
'img-auth-nopathinfo' => 'PATH_INFO óntbrèk.
Diene server is neet ingesteld om dees informatie door te gaeve.
Misjien gebroek deze CGI, en dan wört img_auth neet ongersteund.
-Zuuch http://www.mediawiki.org/wiki/Manual:Image_Authorization veur mee informatie.',
+Zuuch [//www.mediawiki.org/wiki/Manual:Image_Authorization aafbeildingsrechte] veur mee informatie.',
'img-auth-notindir' => "'t Ópgevraogdje paad is neet de ingestelde uploadmap.",
'img-auth-badtitle' => 'Kèn geine geldige paginanaam make van "$1".',
'img-auth-nologinnWL' => 'Doe bös neet aangemeld en "$1" steit neet op de witte lies.',
@@ -1651,7 +1698,7 @@ De volgende lies göf allein de eerste {{PLURAL:$1|verwiezing|$1 verwiezinge}} n
d'r Is ouch ne [[Special:WhatLinksHere/$2|volledige lies]].",
'nolinkstoimage' => 'Gein inkel pagina gebroek dit plaetje.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Mier verwijzinge]] naor dit bestaand bekèèke.',
-'redirectstofile' => 'De volgende bestaande {{PLURAL:$1|verwèès|verwèèze}} door naor dit bestaand:',
+'linkstoimage-redirect' => '$1 (bestandjsdoorverwiezing) $2',
'duplicatesoffile' => "{{PLURAL:$1|'t Nègsvóggendj bestandj is|De $1 nègsvóggendje bestenj zeen}} identiek aan dit bestandj ([[Special:FileDuplicateSearch/$2|deper]]):",
'sharedupload' => 'Dit besjtandj kump van $1 en kin ouch door anger projekte gebroek waere.',
'sharedupload-desc-there' => 'Dit besjtandj kump van $1 en kin ouch in anger projekte gebroek waere.
@@ -1739,18 +1786,19 @@ De [$2 pagina mit de besjtandjsbesjrieving] wurt hiejónger weergegaeve.',
'statistics-users-active-desc' => "Gebroekers die in de aafgeloupe {{PLURAL:$1|daag|$1 daag}} 'ne hanjeling höbbe oetgevoerd",
'statistics-mostpopular' => "Meisbekeke pazjena's",
-'disambiguations' => "Verdudelikingspazjena's",
+'disambiguations' => "Links nao verdudelikingspazjena's",
'disambiguationspage' => 'Template:Verdudeliking',
'disambiguations-text' => "Hiej onger staon pagina's die verwieze nao 'ne '''redirect'''.
Deze heure waarsjienlik direct nao 't zjuste ongerwerp te verwiezen.<br />
'ne pagina wörd gezeen es redirect wen d'r 'n sjabloon op stuit det gelink is vanaaf [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Dobbel redirects',
-'doubleredirectstext' => "Dees lies haet paazjes mit redireks die nao anger redireks gaon.
+'doubleredirects' => 'Dobbel redirects',
+'doubleredirectstext' => "Dees lies haet paazjes mit redireks die nao anger redireks gaon.
Op eder raegel vings te de ierste redirectpazjena, de twiede redirectpazjena en de iesjte raegel van de twiede redirectpazjena. Meistes bevat dees litste de pazjena woe de iesjte redirect naotoe zouw mótte verwieze.
<del>Dórchstreipinge</del> zègke det 't al gedaon is.",
-'double-redirect-fixed-move' => "[[$1]] is verplaats en is noe 'n doorverwiezing nao [[$2]]",
-'double-redirect-fixer' => 'Doorverwiezinge opsjone',
+'double-redirect-fixed-move' => "[[$1]] is verplaats en is noe 'n doorverwiezing nao [[$2]]",
+'double-redirect-fixed-maintenance' => 'Correctie dóbbel redirek van [[$1]] nao [[$2]].',
+'double-redirect-fixer' => 'Doorverwiezinge opsjone',
'brokenredirects' => 'Gebraoke redirects',
'brokenredirectstext' => "De óngersjtaonde redirectpazjena's bevatte 'n redirect nao 'n neet-besjtaonde pazjena:",
@@ -1829,6 +1877,7 @@ E bestandj kèn hie dös verkieërdj ópgenómme zeen.",
'pager-newer-n' => '{{PLURAL:$1|nujer 1|nujer $1}}',
'pager-older-n' => '{{PLURAL:$1|auwer 1|auwer $1}}',
'suppress' => 'Toezich',
+'querypage-disabled' => 'Dees speciaal pagina steit oet veur performanceredene.',
# Book sources
'booksources' => 'Bookwinkele',
@@ -1839,8 +1888,8 @@ E bestandj kèn hie dös verkieërdj ópgenómme zeen.",
Controleer of se wellich n fout höbs gemaak bie de inveur.',
# Special:Log
-'specialloguserlabel' => 'Gebroeker:',
-'speciallogtitlelabel' => 'Titel:',
+'specialloguserlabel' => 'Oetveurder:',
+'speciallogtitlelabel' => 'Doel (pagina of gebroeker):',
'log' => 'Logbeuk',
'all-logs-page' => 'Alle aopenbaar logbeuk',
'alllogstext' => "Dit is 't gecombineerd logbook ven {{SITENAME}}. De kins ouch 'n bepaald logbook keze, of filtere op gebroekersnaam of pazjena, beide huidlettergeveulig.",
@@ -1879,11 +1928,13 @@ Zuuch ouch [[Special:WantedCategories|neet-bestaondje categorieë mit verwiezing
'sp-deletedcontributions-contribs' => 'biedraag',
# Special:LinkSearch
-'linksearch' => 'Extern verwiezinge',
+'linksearch' => 'Zeuk extern links',
'linksearch-pat' => 'Zeukpatroon:',
'linksearch-ns' => 'Naamruumde:',
'linksearch-ok' => 'Zeuk',
-'linksearch-text' => 'Wildcards wie "*.wikipedia.org" of "*.org" zeen toegestaon.<br />Supported protocols: <tt>$1</tt>',
+'linksearch-text' => 'Wildcards wie "*.wikipedia.org" of "*.org" zeen toegestaon.
+Haet mèndestes e toepleveldomein, wie beveurbeildj "*.org".<br />
+Óngerstäönendje protocolle: <tt>$1</tt> (veug dees neet tou in dien zeukópdrach).',
'linksearch-line' => '$1 gelink vanaaf $2',
'linksearch-error' => 'Wildcards zijn alleen toegestaan aan het begin van een hostnaam.',
@@ -1944,6 +1995,10 @@ Dae kin dös drek reazjere.",
'noemailtext' => 'Deze gebroeker haet gein gèldig e-mailadres opgegaeve.',
'nowikiemailtitle' => 'E-mail is neet toegestaon',
'nowikiemailtext' => 'Deze gebroeker wil geine e-mail ontvange van anger gebroekers.',
+'emailnotarget' => 'Neet-bestäöndje of óngeldige ontvanger.',
+'emailtarget' => 'Veur de geadresseerde in',
+'emailusername' => 'Gebroekersnaam:',
+'emailusernamesubmit' => 'Slaon óp',
'email-legend' => 'ne E-mail versture nao ne angere gebroeker van {{SITENAME}}',
'emailfrom' => 'Ven:',
'emailto' => 'Aan:',
@@ -1968,10 +2023,10 @@ Dae kin dös drek reazjere.",
'watchlistanontext' => '$1 is verplich om dien volglies in te zeen of te wiezige.',
'watchnologin' => 'De bis neet aangemèld',
'watchnologintext' => "De mós [[Special:UserLogin|aangemèld]] zeen veur 't verangere van dien volglies.",
-'addedwatch' => 'Aan volglies toegeveug',
+'addwatch' => 'Aan volglies toeveuge',
'addedwatchtext' => "De pagina \"[[:\$1]]\" is aan dien [[Special:Watchlist|volglies]] toegeveug.
Toekomstige verangeringe aan dees pagina en de biebehurende euverlèkpagina weure dao vermeld en de pagina weurt '''vèt''' weergegaeve in de [[Special:RecentChanges|lies van recènte verangeringe]].",
-'removedwatch' => 'Van volglies aafhoale',
+'removewatch' => 'Van volglies aafhoale',
'removedwatchtext' => 'De pagina "[[:$1]]" is van dien [[Special:Watchlist|volglies]] eweggesjaf.',
'watch' => 'Volg',
'watchthispage' => 'Volg dees pagina',
@@ -1992,8 +2047,9 @@ Toekomstige verangeringe aan dees pagina en de biebehurende euverlèkpagina weur
'watchlist-options' => 'Opties veur volglies',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Bezig mit plaatse op de volglies...',
-'unwatching' => "Oet de volglies aan 't haole...",
+'watching' => 'Bezig mit plaatse op de volglies...',
+'unwatching' => "Oet de volglies aan 't haole...",
+'watcherrortext' => 'Fout tiedens \'t verangere van dien volgliesinstellinge veur "$1".',
'enotif_mailer' => '{{SITENAME}} notificatiemail',
'enotif_reset' => "Mèrk alle bezochde pazjena's aan.",
@@ -2023,13 +2079,13 @@ Dao zalle bie volgende verangeringe gein nuuj berichte kómme tenzies te dees pa
--
Óm de insjtèllinge van dien volglies te verangere, zuug
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Óm de paasj van dien wachlies aaf te haole, bezeuk
$UNWATCHURL
Commentaar en wiejer assistentie:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Pagina ewegsjaffe',
@@ -2045,7 +2101,7 @@ Commentaar en wiejer assistentie:
Kónfermeer hiejónger dat dit inderdaod dien bedoeling is, dats doe de gevolge begrips en dats doe dit deis in euvereinstömming mit 't [[{{MediaWiki:Policy-url}}|beleid]].",
'actioncomplete' => 'Actie voltoeid',
'actionfailed' => 'Hanjeling mislök',
-'deletedtext' => '"<nowiki>$1</nowiki>" is eweggesjaf. Bekiek $2 veur \'n euverzich van recènt eweggesjafde pagina\'s.',
+'deletedtext' => '"$1" is eweggesjaf. Bekiek $2 veur \'n euverzich van recènt eweggesjafde pagina\'s.',
'deletedarticle' => '"[[$1]]" is eweggesjaf',
'suppressedarticle' => 'haet "[[$1]]" verborge',
'dellogpage' => 'Wislogbook',
@@ -2099,7 +2155,7 @@ Zuug de [[Special:ProtectedPages|lies mit beveiligde pazjena's]] veur alle hujig
'protect_expiry_invalid' => 'De aangegaeve verlouptied is óngeljig.',
'protect_expiry_old' => "De verloupdatum is in 't verleije.",
'protect-unchain-permissions' => 'Maak euverige beveiligingsinstèllinge besjikber',
-'protect-text' => "Hie kins te 't beveiligingsniveau veur de pagina '''<nowiki>$1</nowiki>''' bekieke en verangere.",
+'protect-text' => "Hie kins te 't beveiligingsniveau veur de pagina '''$1''' bekieke en verangere.",
'protect-locked-blocked' => "De kèns 't beveiligingsniveau neet verangere terwiels te geblokkeerd bis.
Hie zeen de hujige insjtèllinge veur de pazjena '''[[$1]]''':",
'protect-locked-dblock' => "'t Beveiligingsniveau kin neet waere gewiezig ómdet de database geslaote is.
@@ -2152,9 +2208,8 @@ Dit zeen de hujige insjtellinge veur de pagina '''$1''':",
'viewdeletedpage' => "Betrach eweggesjafde pagina's",
'undeletepagetext' => "De ongersjtaande {{PLURAL:$1|paasj is|pazjena's zint}} verwiederd, meh {{PLURAL:$1|bevindj|bevinge}} zich nog sjteeds in 't archief, en {{PLURAL:$1|kin|kinne}} weure truukgeplaatsj.",
'undelete-fieldset-title' => 'Versies trukplaatse',
-'undeleteextrahelp' => "Om de algehele pagina inclusief alle ierder versies trök te zètte: laot alle hökskes ónaafgevink en klik op '''''Trökzètte'''''.
-Om slechs bepaalde versies trök te zètte: vink de trök te plaatse versies aan en klik op '''''Trökzètte'''''.
-Es te op '''''Reset''''' kliks weurt 't toelichtingsveld laeggemaak en waere alle versies gedeselecteerd.",
+'undeleteextrahelp' => "Om de algehele pagina inclusief alle ierder versies trök te zètte: laot alle hökskes ónaafgevink en klik op '''''{{int:undeletebtn}}'''''.
+Om slechs bepaalde versies trök te zètte: vink de trök te plaatse versies aan en klik op '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => "$1 {{PLURAL:$1|versie|versies}} in 't archief",
'undeletehistory' => "Es te 'n pagina trökzèts, waere alle versies es auw versies trökgezat.
Es d'r 'ne nuuj pagina mit dezelfde naam is aangemaak sins de pagina is eweggesjaf, waere de eweggesjafde versies es auw versies trökgezat en blief de hujige versie intact.",
@@ -2194,9 +2249,12 @@ $1",
'undelete-show-file-submit' => 'Jao',
# Namespace form on various pages
-'namespace' => 'Naamruumde:',
-'invert' => 'Ómgedriejde selectie',
-'blanknamespace' => '(hoofnaamruumde)',
+'namespace' => 'Naamruumde:',
+'invert' => 'Ómgedriejde selectie',
+'tooltip-invert' => 'Vink dit aan óm verangeringe te verberge in de geselecteerde naomruumdje (enne gekoppeldje naomruumdje wen aangevink)',
+'namespace_association' => 'Gekoppeldje naomruumdje',
+'tooltip-namespace_association' => 'Vink dit aan óm ouch verangere te tuine inne euverlègk- of óngerwerpnaomruumdje dae bie de geselecteerde naomruumdje heurt',
+'blanknamespace' => '(hoofnaamruumde)',
# Contributions
'contributions' => 'Biedrages per gebroeker',
@@ -2246,11 +2304,13 @@ De leste bloklogregel wuuertj hiejónger t'r raodpleging gegaeve:",
'whatlinkshere-filters' => 'Filters',
# Block/unblock
+'autoblockid' => 'Autoblock #$1',
+'block' => 'Blok gebroeker',
+'unblock' => 'Deblokkeer IP adres',
'blockip' => 'Blokkeer dit IP-adres',
'blockip-title' => 'Blok gebroeker',
'blockip-legend' => "'ne Gebroeker of IP-adres blokkere",
'blockiptext' => "Gebroek 't óngerstjaondj formeleer óm sjrieftoegank van e zeker IP-adres te verbeje. Dit maag allein gedaon weure om vandalisme te veurkómme en in euvereinkóms mitte [[{{MediaWiki:Policy-url}}|beleid]]. Gaef hiejónger de raeje óp (bv. inkel vandaliseerdje paazjes).",
-'ipaddress' => 'IP-adres',
'ipadressorusername' => 'IP-adres of gebroekersnaam',
'ipbexpiry' => "Verlöp (maak 'n keuze)",
'ipbreason' => 'Reeje:',
@@ -2263,7 +2323,7 @@ De leste bloklogregel wuuertj hiejónger t'r raodpleging gegaeve:",
** Intimiderend gedraag
** Misbroek van meerdere gebroekers
** Onacceptabele gebroekersnaam',
-'ipbanononly' => 'Blokkeer allein anonieme gebroekers',
+'ipb-hardblock' => 'Veurkóm det aangemèldje gebroekers vanaaf dit IP-adres kinne bewèrke',
'ipbcreateaccount' => 'Blokkeer aanmake gebroekers',
'ipbemailban' => "Haoj de gebrorker van 't sture van e-mail",
'ipbenableautoblock' => 'Automatisch de IP-adresse van deze gebroeker blokkere',
@@ -2274,12 +2334,15 @@ De leste bloklogregel wuuertj hiejónger t'r raodpleging gegaeve:",
'ipbotherreason' => 'Angere/eventuele rejer:',
'ipbhidename' => 'Verberg gebroekersnaam van liester èn bewèrkinger',
'ipbwatchuser' => 'Gebroekerspazjena en euverlèkpazjena op vólglies plaatse',
-'ipballowusertalk' => 'Deze gebroeker toestaon tiedes de blok de eige euverlèkpagina te bewerke',
+'ipb-disableusertalk' => 'Veurkóm det deze gebroeker tiedes de blok de eige euverlègkpagina kin bewirke',
'ipb-change-block' => 'De gebroeker opnuuj blokke met deze instellinge',
+'ipb-confirm' => 'Bevestig blok',
'badipaddress' => "'t IP-adres haet 'n ongeldige opmaak.",
'blockipsuccesssub' => 'Blokkaad gelök',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] is geblokkeerd.<br />
Zuug de [[Special:IPBlockList|lies van geblokkeerde IP-adresse]].',
+'ipb-blockingself' => "Doe steis óp 't pöntj dichzelf te blokke! Wèts se zeker desse det wils doon?",
+'ipb-confirmhideuser' => "Doe steis óp 't pöntj 'ne verbórge gebroeker te blokke. Hieveur waere gebroekersname in alle liesre en logbookregels verbórge. Wèts se zeker desse door wils gaon?",
'ipb-edit-dropdown' => 'Bewerk lies van rejer',
'ipb-unblock-addr' => 'Ónblokkeer $1',
'ipb-unblock' => "Ónblokkeer 'ne gebroeker of IP-adres",
@@ -2289,17 +2352,23 @@ Zuug de [[Special:IPBlockList|lies van geblokkeerde IP-adresse]].',
'unblockiptext' => 'Gebroek het ongersjtaonde formeleer om weer sjrieftoegang te gaeve aan e geblokkierd IP adres.',
'ipusubmit' => 'Deblokkeer dit.',
'unblocked' => 'Blokkade van [[User:$1|$1]] is opgeheve',
+'unblocked-range' => '$1 is gedeblokkeerd',
'unblocked-id' => 'Blokkade $1 is opgeheve',
+'blocklist' => 'Geblokkeerde gebroekers',
'ipblocklist' => 'Geblokkerde gebroekers',
'ipblocklist-legend' => "'ne Geblokkeerde gebroeker zeuke",
-'ipblocklist-username' => 'Gebroekersnaam of IP-adres:',
-'ipblocklist-sh-userblocks' => '$1 gebroekersblok',
-'ipblocklist-sh-tempblocks' => '$1 tiedelikke blok',
-'ipblocklist-sh-addressblocks' => '$1 inkele IP-blok',
+'blocklist-userblocks' => 'Verberg geblokkeerde gebroekers',
+'blocklist-tempblocks' => 'Verberg tiedelike bloks',
+'blocklist-addressblocks' => 'Verberg bloks van ei IP-adres',
+'blocklist-timestamp' => 'Tied',
+'blocklist-target' => 'Doel',
+'blocklist-expiry' => 'Verlöp',
+'blocklist-by' => 'Geblok door',
+'blocklist-params' => 'Blokparamaeters',
+'blocklist-reason' => 'Reje',
'ipblocklist-submit' => 'Zeuk',
'ipblocklist-localblock' => 'Lokale blok',
'ipblocklist-otherblocks' => 'Anger {{PLURAL:$1|blokkaad|blokkades}}',
-'blocklistline' => 'Op $1 blokkeerde $2 $3 ($4)',
'infiniteblock' => 'veur iwweg',
'expiringblock' => 'verlöp op $1 óm $2',
'anononlyblock' => 'allein anoniem',
@@ -2320,7 +2389,7 @@ Zuug de [[Special:IPBlockList|lies van geblokkeerde IP-adresse]].',
'blocklog-showsuppresslog' => "Deze gebroeker is al geblok gewaes en d'r zeen (deil van) bewerkinge van deze gebroeker verbórge. 't Verbèrgingslogbook steit hieónger:",
'blocklogentry' => '"[[$1]]" is geblokkeerd veur d\'n tied van $2 $3',
'reblock-logentry' => 'haet de instellinge veur de blokkaasj veur [[$1]] gewiezig. Deze verlöp noe op $2 om $3',
-'blocklogtext' => "Dit is 'n log van blokkades van gebroekers. Automatisch geblokkeerde IP-adresse sjtoon hie neet bie. Zuug de [[Special:IPBlockList|Lies van geblokkeerde IP-adresse]] veur de lies van op dit mement wèrkende blokkades.",
+'blocklogtext' => "Dit is 'n log van blokkades van gebroekers. Automatisch geblokkeerde IP-adresse sjtoon hie neet bie. Zuug de [[Special:BlockList|Lies van geblokkeerde IP-adresse]] veur de lies van op dit mement wèrkende blokkades.",
'unblocklogentry' => 'blokkade van $1 opgeheve',
'block-log-flags-anononly' => 'allein anoniem',
'block-log-flags-nocreate' => 'aanmake gebroekers geblokkeerd',
@@ -2334,10 +2403,10 @@ Zuug de [[Special:IPBlockList|lies van geblokkeerde IP-adresse]].',
'ipb_expiry_temp' => 'Blokkaasj veur verbórge gebroekers mótte permanent zeen.',
'ipb_hide_invalid' => "Kinne gebroeker neet verbèrge; d'r haet te väöl angeringe.",
'ipb_already_blocked' => '"$1" is al geblokkeerd',
-'ipb-needreblock' => '== Deze gebroeker is al geblokkeerd ==
-$1 is al geblokkeerd.
+'ipb-needreblock' => '$1 is al geblokkeerd.
Wils se de instellinge wiezige?',
'ipb-otherblocks-header' => 'Anger {{PLURAL:$1|blokkaad|blokkades}}',
+'unblock-hideuser' => 'Doe kins deze gebroeker neet óntblokke, ómdet de gebroekersnaam verbórge is.',
'ipb_cant_unblock' => 'Fout: Blokkadenummer $1 neet gevonje. Mesjiens is de blokkade al opgeheve.',
'ipb_blocked_as_range' => "Fout: 't IP-adres $1 is neet direct geblokkeerd en de blokkade kan neet opgeheve waere. De blokkade is ongerdeil van de reeks $2, wovan de blokkade waal opgeheve kan waere.",
'ip_range_invalid' => 'Ongeldige IP-reeks',
@@ -2373,6 +2442,7 @@ Vergaet neet de database opnuuj te [[Special:UnlockDB|deblokkere]] wens te klaor
'unlockdbsuccesstext' => 'Blokkering van de database van {{SITENAME}} is opgeheven.',
'lockfilenotwritable' => "Gein sjriefrechte op 't databaselockbestandj. Om de database te kinne blokkere of vrie te gaeve, dient de webserver sjriefrechte op dit bestandj te höbbe.",
'databasenotlocked' => 'De database is neet geblokkeerd.',
+'lockedbyandtime' => '(door $1 óm $3 op $2)',
# Move page
'move-page' => '"$1" hernömme',
@@ -2491,7 +2561,7 @@ In 't letste geval kèns te ouch 'ne link gebroeken, bieveurbild [[{{#Special:Ex
'allmessagesdefault' => 'Obligaten teks',
'allmessagescurrent' => 'Hujige teks',
'allmessagestext' => "Dit is 'n lies van alle systeemberichte besjikbaar in de MediaWiki-naamruumde.
-Bezeuk [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [http://translatewiki.net translatewiki.net] es doe wils biedrage aon lokalisatie.",
+Bezeuk [//www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [//translatewiki.net translatewiki.net] es doe wils biedrage aon lokalisatie.",
'allmessagesnotsupportedDB' => "Deze pagina kan neet gebroek waere omdet '''\$wgUseDatabaseMessages''' oet steit.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter óp aangepas:',
@@ -2630,9 +2700,7 @@ Doe kans in de bewirkingssamevatting \'n reej opgaeve.',
'tooltip-summary' => "Veur 'n kórte samevatting in",
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata is oetgesjakeld op deze server.',
-'nocreativecommons' => 'Creative Commons RDF metadata is oetgesjakeld op deze server.',
-'notacceptable' => "De wikiserver kin de gegaeves neet levere in 'ne vorm dae diene client kin laeze.",
+'notacceptable' => "De wikiserver kin de gegaeves neet levere in 'ne vorm dae diene client kin laeze.",
# Attribution
'anonymous' => '{{PLURAL:$1|Anonieme gebroeker|Anoniem gebroekers}} ven {{SITENAME}}',
@@ -2656,37 +2724,23 @@ Meistal wörd dit door 'ne zwarte externe link veroorzaak.",
'spam_blanking' => "Alle wieziginge mit 'ne link nao $1 waere verwiederd",
# Info page
-'infosubtitle' => 'Informatie veur pagina',
-'numedits' => 'Aantal bewerkinge (pagina): $1',
-'numtalkedits' => 'Aantal bewerkinge (euverlikpagina): $1',
-'numwatchers' => 'Aantal volgende: $1',
-'numauthors' => 'Aantal sjrievers (pagina): $1',
-'numtalkauthors' => 'Aantal versjilende auteurs (euverlikpagina): $1',
+'pageinfo-title' => 'Informatie euver "$1"',
+'pageinfo-header-edits' => 'Bewirk',
+'pageinfo-header-watchlist' => 'Volglies',
+'pageinfo-header-views' => 'Weergave',
+'pageinfo-subjectpage' => 'Pagina',
+'pageinfo-talkpage' => 'Euverlègkpazjena',
+'pageinfo-watchers' => 'Aantal volgers',
+'pageinfo-edits' => 'Aantal bewèrkinge',
+'pageinfo-authors' => 'Aantal versjillende sjrievers',
+'pageinfo-views' => 'Aantal waergave',
+'pageinfo-viewsperedit' => 'Weergave per bewerking',
# Skin names
'skinname-standard' => 'Standaard',
'skinname-nostalgia' => 'Nostalgie',
'skinname-cologneblue' => 'Keuls blauw',
-# Math options
-'mw_math_png' => 'Ummer PNG rendere',
-'mw_math_simple' => 'HTML in erg simpele gevalle en angesj PNG',
-'mw_math_html' => 'HTML woe meugelik en angesj PNG',
-'mw_math_source' => 'Laot de TeX code sjtaon (vuur tèksbrowsers)',
-'mw_math_modern' => 'Aangeroaje vuur nuui browsers',
-'mw_math_mathml' => 'MathML woe meugelik (experimenteil)',
-
-# Math errors
-'math_failure' => 'Parse misluk',
-'math_unknown_error' => 'onbekènde fout',
-'math_unknown_function' => 'onbekènde functie',
-'math_lexing_error' => 'lexicografische fout',
-'math_syntax_error' => 'fout vanne syntax',
-'math_image_error' => 'PNG-conversie is mislök. Gank nao of LaTeX en dvipng (of dvips + gs + convert) korrek geïnstalleerd zien.',
-'math_bad_tmpdir' => 'De map veur tiedelike bestenj veur wiskóndige formules bestuit neet of kin neet gemaak waere',
-'math_bad_output' => 'Kin neet sjrieve nao de output directory veur mattematik',
-'math_notexvc' => "Kin 't programma texvc neet vinje; stel alles in volges de besjrieving in math/README.",
-
# Patrolling
'markaspatrolleddiff' => 'Markeer es gecontroleerd',
'markaspatrolledtext' => 'Markeer deze pagina es gecontroleerd',
@@ -2728,10 +2782,11 @@ $1",
'widthheightpage' => "$1×$2, $3 {{PLURAL:$3|pazjena|pazjena's}}",
'file-info' => 'bestandsgruutde: $1, MIME-type: $2',
'file-info-size' => '$1 × $2 pixels, besjtandjgruutde: $3, MIME-type: $4',
+'file-info-size-pages' => "$1 × $2 pixels, bestandjsgreudje: $3, MIME-type: $4, $5 {{PLURAL:$5|pagina|pagina's}}",
'file-nohires' => '<small>Gein hogere resolutie besjikbaar.</small>',
'svg-long-desc' => 'SVG-bestandj, nominaal $1 × $2 pixels, bestandsgruutde: $3',
'show-big-image' => 'Vol resolutie',
-'show-big-image-thumb' => '<small>Gruutde van deze afbeilding: $1 × $2 pixels</small>',
+'show-big-image-size' => '$1 × $2 pixels',
'file-info-gif-looped' => 'herhaolendj',
'file-info-gif-frames' => '$1 {{PLURAL:$1|kader|kadere}}',
'file-info-png-looped' => 'herhaolendj',
@@ -2761,14 +2816,20 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
'metadata-help' => "Dit besjtand bevat aanvullende infermasie, dae door 'ne fotocamera, 'ne scanner of 'n fotobewirkingsprogramma toegeveug kin zeen. Es 't besjtand aangepas is, dan kómme details meugelik neet euverein mit 't verangerde besjtand.",
'metadata-expand' => 'Tuin oetgebreide gegaeves',
'metadata-collapse' => 'Versjtaek oetgebreide gegaeves',
-'metadata-fields' => "De EXIF-metadatavelde in dit berich waere ouch getuund op 'n afbeildingspagina es de metadatatabel is ingeklap. Anger velde waere verborge.
+'metadata-fields' => "De image-metadatavelde in dit berich waere ouch getuund op 'n afbeildingspagina es de metadatatabel is ingeklap. Anger velde waere verborge.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Breidte',
@@ -2783,13 +2844,11 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
'exif-ycbcrpositioning' => 'Y- en C-positionering',
'exif-xresolution' => 'Horizontale resolutie',
'exif-yresolution' => 'Verticale resolutie',
-'exif-resolutionunit' => 'Einheid X en Y resolutie',
'exif-stripoffsets' => 'Locatie aafbeildingsgegaeves',
'exif-rowsperstrip' => 'Rie per strip',
'exif-stripbytecounts' => 'Bytes per gecomprimeerde strip',
'exif-jpeginterchangeformat' => 'Aafstandj towt JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytes JPEG-gegaeves',
-'exif-transferfunction' => 'Transferfunctie',
'exif-whitepoint' => 'Witpuntchromaticiteit',
'exif-primarychromaticities' => 'Chromaticities of primaries',
'exif-ycbcrcoefficients' => 'Transformatiematrixcoëfficiënte veur de kleurruumde',
@@ -2808,7 +2867,6 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
'exif-compressedbitsperpixel' => 'Cómpressiemeneer bie dit plaetje',
'exif-pixelydimension' => 'Aafbeildingsbrèdje',
'exif-pixelxdimension' => 'Aafbeildingsheugdje',
-'exif-makernote' => 'Opmerkinge maker',
'exif-usercomment' => 'Opmerkinge',
'exif-relatedsoundfile' => 'Biebeheurendj audiobestandj',
'exif-datetimeoriginal' => 'Datum en momint van verwèkking',
@@ -2822,7 +2880,6 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
'exif-exposureprogram' => 'Beleechtingsprogramma',
'exif-spectralsensitivity' => 'Spectrale geveuligheid',
'exif-isospeedratings' => 'ISO/ASA-waarde',
-'exif-oecf' => 'Opto-elektronische conversiefactor',
'exif-shutterspeedvalue' => 'Sloetersnelheid in APEX',
'exif-aperturevalue' => 'Äöpening in APEX',
'exif-brightnessvalue' => 'Heljerheid in APEX',
@@ -2835,7 +2892,6 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
'exif-focallength' => 'Brandjpuntjsaafstandj',
'exif-subjectarea' => 'Objekruumde',
'exif-flashenergy' => 'Flitssterkdje',
-'exif-spatialfrequencyresponse' => 'Ruumdelike frequentiereactie',
'exif-focalplanexresolution' => 'Brandjpuntjsvlak-X-resolutie',
'exif-focalplaneyresolution' => 'Brandjpuntjsvlak-Y-resolutie',
'exif-focalplaneresolutionunit' => 'Einheid CCD-resolutie',
@@ -2844,7 +2900,6 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
'exif-sensingmethod' => 'Opvangmethode',
'exif-filesource' => 'Bestandjsbron',
'exif-scenetype' => 'Saort scene',
-'exif-cfapattern' => 'CFA-patroen',
'exif-customrendered' => 'Aangepasdje beildverwerking',
'exif-exposuremode' => 'Beleechtingsinstelling',
'exif-whitebalance' => 'Witbalans',
@@ -2889,10 +2944,79 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
'exif-gpsareainformation' => 'Naam GPS-gebied',
'exif-gpsdatestamp' => 'GPS-datum',
'exif-gpsdifferential' => 'Differentiële GPS-correctie',
+'exif-jpegfilecomment' => 'Opmirking bie JPEG-bestandj',
+'exif-keywords' => 'Trefweurd',
+'exif-worldregioncreated' => 'Regio vanne welt wo de aafbeilding gemaak is',
+'exif-countrycreated' => 'Landj wo de aafbeilding gemaak is',
+'exif-countrycodecreated' => 'Landjcode van wo de aafbeilding gemaak is',
+'exif-provinceorstatecreated' => 'Provincie of staat wo de aafbeilding gemaak is',
+'exif-citycreated' => 'Sjtad wo de aafbeilding gemaak is',
+'exif-sublocationcreated' => 'Wiek vanne plaats wo de aafbeilding gemaak is',
+'exif-worldregiondest' => 'Getuinde weltregio',
+'exif-countrydest' => 'Getuind landj',
+'exif-countrycodedest' => "Landjcode van 't getuind",
+'exif-provinceorstatedest' => 'Getuinde provincie of staat',
+'exif-citydest' => 'Getuinde sjtad',
+'exif-sublocationdest' => 'Getuinde wiek vanne sjtad',
'exif-objectname' => 'Kórte naam',
+'exif-specialinstructions' => 'Speciaal instructies',
+'exif-headline' => 'Kópteks',
+'exif-credit' => 'Credit/Leveranceer',
+'exif-source' => 'Brón',
+'exif-editstatus' => 'Bewirkingsstaat vanne aafbeilding',
+'exif-urgency' => 'Urgensie',
+'exif-fixtureidentifier' => 'Groepsnaam',
+'exif-locationdest' => 'Getuinde locatie',
+'exif-locationdestcode' => "Locatiecode van 't getuind",
+'exif-objectcycle' => 'Tied vannen daag wo de media veur gemèndj is',
+'exif-contact' => 'Kóntakgegaeves',
+'exif-writer' => 'Sjriever',
+'exif-languagecode' => 'Sjpraok',
+'exif-iimversion' => 'IIM-versie',
+'exif-iimcategory' => 'Categorie',
+'exif-iimsupplementalcategory' => 'Aanvöllendje categorië',
+'exif-datetimeexpires' => 'Neet te broeke nao',
+'exif-datetimereleased' => 'Gepubliceerd óp',
+'exif-originaltransmissionref' => 'Originele taaklocatiecode',
+'exif-identifier' => 'Id',
+'exif-lens' => 'Gebroekdje laens',
+'exif-serialnumber' => 'Serienommer vanne camera',
+'exif-cameraownername' => 'Eigeneer vanne camera',
+'exif-label' => 'Label',
+'exif-datetimemetadata' => "Datum woróp de metadata 't lets is bewirk",
+'exif-nickname' => 'Informele naam vanne aafbeilding',
+'exif-rating' => 'Werdering (sjaol van 5)',
+'exif-rightscertificate' => 'Rechtebehiercertifikaot',
+'exif-copyrighted' => 'Auteursrechtestaat',
+'exif-copyrightowner' => 'Copyrighthawter',
+'exif-usageterms' => 'Gebroekersveurwaerd',
+'exif-webstatement' => 'Online copyrightverklaoring',
+'exif-originaldocumentid' => "Unieke ID van 't origineel dokement",
+'exif-licenseurl' => 'URL veur copyrightlicensie',
+'exif-morepermissionsurl' => 'Alternatief licensiegegaeves',
+'exif-attributionurl' => 'Gebroek de volgende verwiezing bie hergebroek van dit wirk',
+'exif-preferredattributionname' => 'Gebroek de volgende credits bie hergebroek van dit wirk',
+'exif-pngfilecomment' => 'Opmirking bie PNG-bestandj',
+'exif-disclaimer' => 'Veurbehawd',
+'exif-contentwarning' => 'Waorsjoewing euver inhawd',
+'exif-giffilecomment' => 'Opmirking bie GIF-bestandj',
+'exif-intellectualgenre' => 'Itemtype',
+'exif-subjectnewscode' => 'Ongerwerpcode',
+'exif-scenecode' => 'IPTC-scènecode',
+'exif-event' => 'Aafgebeilde gebäörtenis',
+'exif-organisationinimage' => 'Aafgebeilde organisatie',
+'exif-personinimage' => 'Aafgebeild persoen',
+'exif-originalimageheight' => 'Heugdje vanne aafbeilding veur biesnieje',
+'exif-originalimagewidth' => 'Brèdje vanne aafbeilding veur biesnieje',
# EXIF attributes
'exif-compression-1' => 'Óngecómprimeerd',
+'exif-compression-2' => 'CCITT Groep 3 1-dimensionale aangepasde "Huffman run length"-codering',
+'exif-compression-3' => 'CCITT Groep 3 faxcodering',
+'exif-compression-4' => 'CCITT Groep 4 faxcodering',
+
+'exif-copyrighted-true' => 'Mit copyright',
+'exif-copyrighted-false' => 'Publiek domein',
'exif-unknowndate' => 'Datum ónbekindj',
@@ -2908,6 +3032,8 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
'exif-planarconfiguration-1' => 'chunky gegaevesformaat',
'exif-planarconfiguration-2' => 'planar gegaevesformaat',
+'exif-colorspace-65535' => 'Ongekalibreerd',
+
'exif-componentsconfiguration-0' => 'besjteit neet',
'exif-exposureprogram-0' => 'Neet gedefiniëerd',
@@ -3021,6 +3147,10 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
'exif-gpslongitude-e' => 'Oosterlingdje',
'exif-gpslongitude-w' => 'Westerlingdje',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => "$1 {{PLURAL:$1|maeter|maeter}} baoven 't ziespegel",
+'exif-gpsaltitude-below-sealevel' => "$1 {{PLURAL:$1|maeter|maeter}} ónger 't ziespegel",
+
'exif-gpsstatus-a' => 'Bezig mit maete',
'exif-gpsstatus-v' => 'Maetinteroperabiliteit',
@@ -3032,21 +3162,73 @@ Alle volgende links die op dezelfde regel sjtaon, waere behanjeld es oetzunjerin
'exif-gpsspeed-m' => 'Miel per oer',
'exif-gpsspeed-n' => 'Knuip',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilomaeter',
+'exif-gpsdestdistance-m' => 'Miel',
+'exif-gpsdestdistance-n' => 'Knuip',
+
+'exif-gpsdop-excellent' => 'Oetstaekendj ($1)',
+'exif-gpsdop-good' => 'Good ($1)',
+'exif-gpsdop-moderate' => 'Gemiddeldj ($1)',
+'exif-gpsdop-fair' => 'Redelik ($1)',
+'exif-gpsdop-poor' => 'Slech ($1)',
+
+'exif-objectcycle-a' => "Allein 's óchtes",
+'exif-objectcycle-p' => "Allein 's aoves",
+'exif-objectcycle-b' => "Zwaal 's óchtes es 's aoves",
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Eigelike richting',
'exif-gpsdirection-m' => 'Magnetische richting',
+'exif-ycbcrpositioning-1' => 'Gecentreerd',
+'exif-ycbcrpositioning-2' => 'Gecositueerd',
+
+'exif-dc-contributor' => 'Mitwirkers',
+'exif-dc-coverage' => 'Ruumdjelik of temporeel scoop vanne media',
+'exif-dc-date' => 'Datum/data',
+'exif-dc-publisher' => 'Oetgaever',
+'exif-dc-relation' => 'Gerelateerde media',
+'exif-dc-rights' => 'Rechte',
+'exif-dc-source' => 'Brónmedia',
+'exif-dc-type' => 'Mediatype',
+
+'exif-rating-rejected' => 'Aafgeweze',
+
+'exif-isospeedratings-overflow' => 'Grótter es 65535',
+
+'exif-iimcategory-ace' => 'Kóns, keltuur en vermaak',
+'exif-iimcategory-clj' => 'Misdaod en rech',
+'exif-iimcategory-dis' => 'Rampe en óngevalle',
+'exif-iimcategory-fin' => 'Ikkenomie en bedriefslaeve',
+'exif-iimcategory-edu' => 'Óngerwies',
+'exif-iimcategory-evn' => 'Miljeu',
+'exif-iimcategory-hth' => 'Gezóndjheid',
+'exif-iimcategory-hum' => 'Mienselik gerei',
+'exif-iimcategory-lab' => 'Wirk',
+'exif-iimcategory-lif' => 'Laeve en vrieje tied',
+'exif-iimcategory-pol' => 'Politiek',
+'exif-iimcategory-rel' => 'Gódsdeens en euvertuging',
+'exif-iimcategory-sci' => 'Weitesjap en technologie',
+'exif-iimcategory-soi' => 'Sociaal kwesties',
+'exif-iimcategory-spo' => 'Spórt',
+'exif-iimcategory-war' => 'Krieg, conflik en ónrös',
+'exif-iimcategory-wea' => 'Waer',
+
+'exif-urgency-normal' => 'Normaal ($1)',
+'exif-urgency-low' => 'Lieg ($1)',
+'exif-urgency-high' => 'Hoeg ($1)',
+'exif-urgency-other' => 'Door gebroeker gedefinieerde prioriteit ($1)',
+
# External editor support
'edit-externally' => "Bewirk dit bestand mit 'n extern toepassing",
-'edit-externally-help' => '(zuug de [http://www.mediawiki.org/wiki/Manual:External_editors setupinsjtructies] veur mie informatie)',
+'edit-externally-help' => '(zuug de [//www.mediawiki.org/wiki/Manual:External_editors setupinsjtructies] veur mie informatie)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'al',
-'imagelistall' => 'al',
-'watchlistall2' => 'al',
-'namespacesall' => 'alle',
-'monthsall' => 'al',
-'limitall' => 'al',
+'watchlistall2' => 'al',
+'namespacesall' => 'alle',
+'monthsall' => 'al',
+'limitall' => 'al',
# E-mail address confirmation
'confirmemail' => 'Bevèstig e-mailadres',
@@ -3122,17 +3304,25 @@ $1',
'trackbackdeleteok' => 'De trackback is gewusj.',
# Delete conflict
-'deletedwhileediting' => "'''Waorsjoewing''': Dees pazjena is gewis naodats doe bis begós mit bewirke!",
-'confirmrecreate' => "Gebroeker [[User:$1|$1]] ([[User talk:$1|euverlèk]]) heet dees pagina eweggesjaf naodats doe mèt bewirke begós mèt de rae:
+'deletedwhileediting' => "'''Waorsjoewing''': Dees pazjena is gewis naodats doe bis begós mit bewirke!",
+'confirmrecreate' => "Gebroeker [[User:$1|$1]] ([[User talk:$1|euverlèk]]) heet dees pagina eweggesjaf naodats doe mèt bewirke begós mèt de rae:
: ''$2''
Bevesteg estebleef dats te dees pazjena ech obbenuujts wils aanmake.",
-'recreate' => 'Pazjena obbenuujts make',
+'confirmrecreate-noreason' => "Naodes se begós bös mit 't verangere haet [[User:$1|$1]] ([[User talk:$1|euverlègk]]) dees pagina gewösj.
+Bevestig des se dees pagina óbbenuits wils aanmake.",
+'recreate' => 'Pazjena obbenuujts make',
# action=purge
'confirm_purge_button' => 'ok',
'confirm-purge-top' => 'Wils te de buffer vaan dees paas wisse?',
'confirm-purge-bottom' => 't Opsjone van de cache zorg drveur det de lèste versie van n pagina wörd weergegaeve.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Ok',
+'confirm-watch-top' => 'Dees pagina bie dien volglies zètte?',
+'confirm-unwatch-button' => 'Ok',
+'confirm-unwatch-top' => 'Dees pagina van dien volglies ewegsjaffe?',
+
# Multipage image navigation
'imgmultipageprev' => '↠veurige pazjena',
'imgmultipagenext' => 'volgende pazjena →',
@@ -3176,14 +3366,14 @@ Probeer normaal veurvertuin.',
'watchlistedit-normal-legend' => "Pazjena's ewegsjaffe van dien volglies",
'watchlistedit-normal-explain' => "Pazjena's op dien volglies waere hiejónger getuind.
Klik op 't veerkentje d'rnaeve óm 'n pazjena eweg te sjaffe. Klik daonao op '{{int:Watchlistedit-normal-submit}}'.
-De kèns ouch [[Special:Watchlist/raw|de roew lies bewirke]].",
+De kèns ouch [[Special:EditWatchlist/raw|de roew lies bewirke]].",
'watchlistedit-normal-submit' => "Pazjena's ewegsjaffe",
'watchlistedit-normal-done' => "{{PLURAL:$1|1 pazjena is|$1 pazjena's zeen}} eweggesjaf van dien volglies:",
'watchlistedit-raw-title' => 'Roew volglies bewirke',
'watchlistedit-raw-legend' => 'Roew volglies bewirke',
'watchlistedit-raw-explain' => "Hiejónger sjtaon pazjena's op dien volglies. De kèns de lies bewirke door pazjena's eweg te sjaffe en d'rbie te doon. Ein pazjena per regel.
Wens te vaerdig bis, klik dan op '{{int:Watchlistedit-raw-submit}}'.
-De kèns ouch [[Special:Watchlist/edit|'t sjtanderd bewirkingssjirm gebroeke]].",
+De kèns ouch [[Special:EditWatchlist|'t sjtanderd bewirkingssjirm gebroeke]].",
'watchlistedit-raw-titles' => "Pazjena's:",
'watchlistedit-raw-submit' => 'Volglies biewirke',
'watchlistedit-raw-done' => 'Dien volglies is biegewirk.',
@@ -3200,33 +3390,33 @@ De kèns ouch [[Special:Watchlist/edit|'t sjtanderd bewirkingssjirm gebroeke]]."
'duplicate-defaultsort' => 'Waarsjuwing: De standaardsortering "$2" krieg veurrang veur de sortering "$1".',
# Special:Version
-'version' => 'Versie',
-'version-extensions' => 'Geïnstalleerde oetbreijinge',
-'version-specialpages' => "Speciaal pazjena's",
-'version-parserhooks' => 'Parserheuk',
-'version-variables' => 'Variabele',
-'version-skins' => 'Vörmgevinge',
-'version-other' => 'Euverige',
-'version-mediahandlers' => 'Mediaverwerkers',
-'version-hooks' => 'Heuk',
-'version-extension-functions' => 'Oetbreijingsfuncties',
-'version-parser-extensiontags' => 'Parseroetbreijingstags',
-'version-parser-function-hooks' => 'Parserfunctieheuk',
-'version-skin-extension-functions' => 'Vormgaevingsoetbreijingsfuncties',
-'version-hook-name' => 'Hooknaam',
-'version-hook-subscribedby' => 'Geabonneerd door',
-'version-version' => '(Versie $1)',
-'version-license' => 'Licentie',
-'version-poweredby-credits' => "Deze wiki weurt aangedreve door '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'anger',
-'version-license-info' => "MediaWiki is vrieje sofware; de kins MediaWiki verspreien en/of aanpassen onger de veurwaerde van de GNU General Public License wie gepubliceerd door de Free Software Foundation; ofwaal versie 2 van de Licentie, of - nao diene wönsj - innig later versie.
+'version' => 'Versie',
+'version-extensions' => 'Geïnstalleerde oetbreijinge',
+'version-specialpages' => "Speciaal pazjena's",
+'version-parserhooks' => 'Parserheuk',
+'version-variables' => 'Variabele',
+'version-antispam' => 'Spampreventie',
+'version-skins' => 'Vörmgevinge',
+'version-other' => 'Euverige',
+'version-mediahandlers' => 'Mediaverwerkers',
+'version-hooks' => 'Heuk',
+'version-extension-functions' => 'Oetbreijingsfuncties',
+'version-parser-extensiontags' => 'Parseroetbreijingstags',
+'version-parser-function-hooks' => 'Parserfunctieheuk',
+'version-hook-name' => 'Hooknaam',
+'version-hook-subscribedby' => 'Geabonneerd door',
+'version-version' => '(Versie $1)',
+'version-license' => 'Licentie',
+'version-poweredby-credits' => "Deze wiki weurt aangedreve door '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'anger',
+'version-license-info' => "MediaWiki is vrieje sofware; de kins MediaWiki verspreien en/of aanpassen onger de veurwaerde van de GNU General Public License wie gepubliceerd door de Free Software Foundation; ofwaal versie 2 van de Licentie, of - nao diene wönsj - innig later versie.
MediaWiki weurd verspreid in de haop det 't nuttig is, mer ZONGER INNIG GARANTIE; zonger zelfs de implicitiete garantie van VERKOUPBAARHEID of GESJIKHEID VEUR INNIG DOEL IN 'T BIEZÖNJER. Zuuch de GNU General Public License veur mier informatie.
-Same mit dit programma heurs se 'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van de GNU General Public License] te höbben ontvange; zo neet, sjrief den nao de Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA of [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html laes de licentie online].",
-'version-software' => 'Geïnstallieërde sofwaer',
-'version-software-product' => 'Perduk',
-'version-software-version' => 'Versie',
+Same mit dit programma heurs se 'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van de GNU General Public License] te höbben ontvange; zo neet, sjrief den nao de Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA of [//www.gnu.org/licenses/old-licenses/gpl-2.0.html laes de licentie online].",
+'version-software' => 'Geïnstallieërde sofwaer',
+'version-software-product' => 'Perduk',
+'version-software-version' => 'Versie',
# Special:FilePath
'filepath' => 'Bestandjspaad',
@@ -3236,22 +3426,21 @@ Same mit dit programma heurs se 'n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van d
Aafbeildinge waere in häör vollejige resolutie getoeandj. Anger bestandjstypes waere drèk in 't mit 't MIME-type verbónje programma geäöpendj.",
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Zeuk veur döbbelbestaondje bestenj',
-'fileduplicatesearch-summary' => 'Zeuk veur döbbel bestaondje bestenj op basis van zien hashwaarde.
-
-Gaef de bestandjsnaam zónger \'t "{{ns:file}}:" veurvoogsel.',
-'fileduplicatesearch-legend' => "Zeuk veur 'ne döbbele",
-'fileduplicatesearch-filename' => 'Bestandjsnaam:',
-'fileduplicatesearch-submit' => 'Zeuk',
-'fileduplicatesearch-info' => '$1 × $2 pixel<br />Bestandjsgrootte: $3<br />MIME type: $4',
-'fileduplicatesearch-result-1' => '\'t Bestandh "$1" haet gein identieke döbbelversie.',
-'fileduplicatesearch-result-n' => '\'t Bestandj "$1" haet {{PLURAL:$2|1 identieke döbbelversie|$2 identiek döbbelversies}}.',
+'fileduplicatesearch' => 'Zeuk veur döbbelbestaondje bestenj',
+'fileduplicatesearch-summary' => 'Zeuk veur döbbel bestaondje bestenj op basis van zien hashwaarde.',
+'fileduplicatesearch-legend' => "Zeuk veur 'ne döbbele",
+'fileduplicatesearch-filename' => 'Bestandjsnaam:',
+'fileduplicatesearch-submit' => 'Zeuk',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />Bestandjsgrootte: $3<br />MIME type: $4',
+'fileduplicatesearch-result-1' => '\'t Bestandh "$1" haet gein identieke döbbelversie.',
+'fileduplicatesearch-result-n' => '\'t Bestandj "$1" haet {{PLURAL:$2|1 identieke döbbelversie|$2 identiek döbbelversies}}.',
+'fileduplicatesearch-noresults' => 'd\'r Is gei bestandj mitte naam "$1" gevónje.',
# Special:SpecialPages
'specialpages' => "Speciaal pagina's",
'specialpages-note' => '----
-* Normale speciale pagina\'s
-* <strong class="mw-specialpagerestricted">Beperk toegankelijke speciale pagina\'s</strong>',
+* <span class="mw-specialpagerestricted">Normale speciaal pagina\'s.</span>
+* <span class="mw-specialpagerestricted">Speciaal pagina\'s mèt allein gegeves oet de cache.</span>',
'specialpages-group-maintenance' => 'Óngerhajingsrapporter',
'specialpages-group-other' => "Euverige speciaal pazjena's",
'specialpages-group-login' => 'Aanmelje / registrere',
diff --git a/languages/messages/MessagesLij.php b/languages/messages/MessagesLij.php
index 2d31678b..7df0d935 100644
--- a/languages/messages/MessagesLij.php
+++ b/languages/messages/MessagesLij.php
@@ -50,76 +50,76 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Userlogin' => array( 'Intra', 'Registrate' ),
- 'Userlogout' => array( 'Sciorti' ),
- 'Preferences' => array( 'Preferense' ),
- 'Watchlist' => array( 'Osservæ speçiali' ),
- 'Recentchanges' => array( 'Ûrtime modiffiche' ),
- 'Upload' => array( 'Carrega' ),
+ 'Allmessages' => array( 'Messaggi' ),
+ 'Allpages' => array( 'Tûtte e paggine' ),
+ 'Ancientpages' => array( 'Paggine meno reçenti' ),
+ 'Block' => array( 'Blocca' ),
+ 'Blockme' => array( 'BloccaProxy' ),
+ 'Booksources' => array( 'RiçercaISBN' ),
+ 'Categories' => array( 'Categorîe' ),
+ 'ChangePassword' => array( 'Rimposta paròlla d\'ordine' ),
+ 'Confirmemail' => array( 'Comferma l\'e-mail' ),
+ 'Contributions' => array( 'Contribûti' ),
+ 'Deadendpages' => array( 'Paggine sensa sciortîa' ),
+ 'Emailuser' => array( 'Mandighe \'n\'e-mail' ),
+ 'Export' => array( 'Esporta' ),
+ 'Fewestrevisions' => array( 'Paggine con meno revixoîn' ),
+ 'Import' => array( 'Importa' ),
+ 'BlockList' => array( 'IP bloccæ' ),
+ 'Listadmins' => array( 'Amministratoî' ),
+ 'Listbots' => array( 'Bot' ),
'Listfiles' => array( 'Immaggini' ),
- 'Newimages' => array( 'Immaggini reçenti' ),
+ 'Listredirects' => array( 'Rediression' ),
'Listusers' => array( 'Utenti' ),
- 'Statistics' => array( 'Statistighe' ),
- 'Randompage' => array( 'Paggina a brettio' ),
+ 'Lockdb' => array( 'BloccaDB' ),
+ 'Log' => array( 'Registri', 'Registro' ),
'Lonelypages' => array( 'Paggine orfane' ),
- 'Uncategorizedpages' => array( 'Paggine sensa categorîa' ),
- 'Uncategorizedcategories' => array( 'Categorîe sensa categorîa' ),
- 'Uncategorizedimages' => array( 'Immaggini sensa categorîa' ),
- 'Uncategorizedtemplates' => array( 'Template sensa categorîa' ),
- 'Unusedcategories' => array( 'Categorîe sensa ûso' ),
- 'Unusedimages' => array( 'Immaggini sensa ûso' ),
- 'Wantedpages' => array( 'Paggine domandæ' ),
- 'Wantedcategories' => array( 'Categorîe domandæ' ),
+ 'Longpages' => array( 'Paggine ciû longhe' ),
+ 'MIMEsearch' => array( 'RiçercaMIME' ),
+ 'Mostcategories' => array( 'Paggine con ciû categorîe' ),
+ 'Mostimages' => array( 'Immaggini ciû domandæ' ),
'Mostlinked' => array( 'Paggine ciû domandæ' ),
'Mostlinkedcategories' => array( 'Categorîe ciû domandæ' ),
'Mostlinkedtemplates' => array( 'Template ciû domandæ' ),
- 'Mostimages' => array( 'Immaggini ciû domandæ' ),
- 'Mostcategories' => array( 'Paggine con ciû categorîe' ),
'Mostrevisions' => array( 'Paggine con ciû revixoîn' ),
- 'Fewestrevisions' => array( 'Paggine con meno revixoîn' ),
- 'Shortpages' => array( 'Paggine ciû cûrte' ),
- 'Longpages' => array( 'Paggine ciû longhe' ),
+ 'Movepage' => array( 'Sposta' ),
+ 'Mycontributions' => array( 'Mæ Contribûti' ),
+ 'Mypage' => array( 'Mæ Paggina Utente' ),
+ 'Mytalk' => array( 'Mæ Discûscioîn' ),
+ 'Newimages' => array( 'Immaggini reçenti' ),
'Newpages' => array( 'Paggine ciû reçenti' ),
- 'Ancientpages' => array( 'Paggine meno reçenti' ),
- 'Deadendpages' => array( 'Paggine sensa sciortîa' ),
+ 'Popularpages' => array( 'Paggine ciû viscitæ' ),
+ 'Preferences' => array( 'Preferense' ),
+ 'Prefixindex' => array( 'Prefisci' ),
'Protectedpages' => array( 'Paggine protezûe' ),
'Protectedtitles' => array( 'Tittoli protezûi' ),
- 'Allpages' => array( 'Tûtte e paggine' ),
- 'Prefixindex' => array( 'Prefisci' ),
- 'Ipblocklist' => array( 'IP bloccæ' ),
- 'Specialpages' => array( 'Paggine speçiali' ),
- 'Contributions' => array( 'Contribûti' ),
- 'Emailuser' => array( 'Mandighe \'n\'e-mail' ),
- 'Confirmemail' => array( 'Comferma l\'e-mail' ),
- 'Whatlinkshere' => array( 'Cose appunta chì' ),
+ 'Randompage' => array( 'Paggina a brettio' ),
+ 'Randomredirect' => array( 'Rediression a brettio' ),
+ 'Recentchanges' => array( 'Ûrtime modiffiche' ),
'Recentchangeslinked' => array( 'Modiffiche correlæ' ),
- 'Movepage' => array( 'Sposta' ),
- 'Blockme' => array( 'BloccaProxy' ),
- 'Booksources' => array( 'RiçercaISBN' ),
- 'Categories' => array( 'Categorîe' ),
- 'Export' => array( 'Esporta' ),
- 'Version' => array( 'Verscion' ),
- 'Allmessages' => array( 'Messaggi' ),
- 'Log' => array( 'Registri', 'Registro' ),
- 'Blockip' => array( 'Blocca' ),
- 'Import' => array( 'Importa' ),
- 'Lockdb' => array( 'BloccaDB' ),
- 'Unlockdb' => array( 'SbloccaDB' ),
- 'Userrights' => array( 'Permissi utente' ),
- 'MIMEsearch' => array( 'RiçercaMIME' ),
- 'Unwatchedpages' => array( 'Paggine no osservæ' ),
- 'Listredirects' => array( 'Rediression' ),
'Revisiondelete' => array( 'Scassa revixon' ),
- 'Unusedtemplates' => array( 'Template sensa ûso' ),
- 'Randomredirect' => array( 'Rediression a brettio' ),
- 'Mypage' => array( 'Mæ Paggina Utente' ),
- 'Mytalk' => array( 'Mæ Discûscioîn' ),
- 'Mycontributions' => array( 'Mæ Contribûti' ),
- 'Listadmins' => array( 'Amministratoî' ),
- 'Listbots' => array( 'Bot' ),
- 'Popularpages' => array( 'Paggine ciû viscitæ' ),
'Search' => array( 'Riçerca', 'Çerca' ),
- 'Resetpass' => array( 'Rimposta paròlla d\'ordine' ),
+ 'Shortpages' => array( 'Paggine ciû cûrte' ),
+ 'Specialpages' => array( 'Paggine speçiali' ),
+ 'Statistics' => array( 'Statistighe' ),
+ 'Uncategorizedcategories' => array( 'Categorîe sensa categorîa' ),
+ 'Uncategorizedimages' => array( 'Immaggini sensa categorîa' ),
+ 'Uncategorizedpages' => array( 'Paggine sensa categorîa' ),
+ 'Uncategorizedtemplates' => array( 'Template sensa categorîa' ),
+ 'Unlockdb' => array( 'SbloccaDB' ),
+ 'Unusedcategories' => array( 'Categorîe sensa ûso' ),
+ 'Unusedimages' => array( 'Immaggini sensa ûso' ),
+ 'Unusedtemplates' => array( 'Template sensa ûso' ),
+ 'Unwatchedpages' => array( 'Paggine no osservæ' ),
+ 'Upload' => array( 'Carrega' ),
+ 'Userlogin' => array( 'Intra', 'Registrate' ),
+ 'Userlogout' => array( 'Sciorti' ),
+ 'Userrights' => array( 'Permissi utente' ),
+ 'Version' => array( 'Verscion' ),
+ 'Wantedcategories' => array( 'Categorîe domandæ' ),
+ 'Wantedpages' => array( 'Paggine domandæ' ),
+ 'Watchlist' => array( 'Osservæ speçiali' ),
+ 'Whatlinkshere' => array( 'Cose appunta chì' ),
'Withoutinterwiki' => array( 'Sensa Interwiki' ),
);
@@ -138,7 +138,9 @@ $messages = array(
'tog-editondblclick' => 'Modifica e paggine co-o dópio clic (serve Javascrpt)',
'tog-editsection' => 'Modifica e seçión co-o colegamento [modifica]',
'tog-editsectiononrightclick' => 'Modifica e seçión co-o clic destro in sciô tìtolo (serve Javascipt)',
+'tog-showtoc' => "Fanni védde l'indiçe pe-e pàgine con ciù de 3 seçioìn",
'tog-rememberpassword' => "Arregorda a mæ paròlla d'ordine (a-o màscimo pe $1 {{PLURAL:$1|day|days}})",
+'tog-watchcreations' => 'Azónzi e pàgine a-i oservæ speciâli',
'tog-previewontop' => "Veddi l'anteprimma de d'äto a-o spaçio pe cangiâ",
'tog-previewonfirst' => "Veddi l'anteprimma a-o primmo cangiamento",
'tog-enotifwatchlistpages' => "Fammelo savéi via e-mail quande 'na paggina inta mæ lista in osservassion a va cangiaa.",
@@ -202,19 +204,24 @@ $messages = array(
# Categories related messages
'pagecategories' => '{{PLURAL:$1|Categorîa|Categorîe}}',
-'category_header' => 'Paggine inta categorîa "$1"',
+'category_header' => 'Pàgine inta categorîa "$1"',
'subcategories' => 'Sottocategorîe',
-'category-media-header' => 'Archivvio inta categorîa "$1"',
-'category-empty' => "''Pe-o momento 'sta categorîa a no contegne nisciûnn-a paggina ò archivvio multimedia.''",
+'category-media-header' => 'Archivio inta categorîa "$1"',
+'category-empty' => "''Pe òua sta categorîa a no contegne nisciùnn-a pàgina ò archivio moltimedia.''",
+'hidden-categories' => '{{PLURAL:$1|Categoria ascoza|Categorie ascoze}}',
'hidden-category-category' => 'Categorîe ascôse',
+'category-subcat-count' => "{{PLURAL:$2|Sta categoria a contegne sôlo 'na sottocategoria, chi de segoito.|Sta categoria a contegne {{PLURAL:$1|a sottocategoria indicâ|e $1 sottocategorie indicæ}} di segoito, pe in totale de $2.}}",
'category-subcat-count-limited' => "'Sta categorîa a contegne {{PLURAL:$1|ûnn-a sottocategorîa, indicaa|$1 sottocategorîe, indicæ}} chì inzû.",
+'category-article-count' => "{{PLURAL:$2|Sta categoria a contegne sôlo inna pagina, chi de segoito.|Sta categoria a contegne {{PLURAL:$1|a pàgina a l'é|e $1 pàgine son}} de segoito, pe in totale de $2.}}",
'category-article-count-limited' => "'Sta categorîa a contegne {{PLURAL:$1|'sta paggina|'ste $1 paggine}}.",
+'category-file-count' => "{{PLURAL:$2|Sta categoria a contegne sôlo in file, chi de segoito.|Sta categoria a contegne {{PLURAL:$1|o file o l'é|e $1 file son}} de segoito, pe in totale de $2.}}",
'listingcontinuesabbrev' => 'cont.',
+'noindex-category' => 'Pàgine sénsa indiçe',
-'about' => 'Informaçioin',
+'about' => 'Informaçioìn',
'article' => 'Pagina de i contenùi',
-'newwindow' => "(A s'ârve inte 'n âtro barcon)",
-'cancel' => 'Scassa',
+'newwindow' => "(O s'arve inte 'n âtro barcon)",
+'cancel' => 'Scancella',
'moredotdotdot' => 'De ciû...',
'mypage' => 'A mea pagina',
'mytalk' => 'Mæ discuscioin',
@@ -229,8 +236,23 @@ $messages = array(
'qbpageinfo' => 'Informassion inscia paggina',
'qbmyoptions' => 'E mæ paggine',
'qbspecialpages' => 'Pagine speçiä',
-
-'errorpagetitle' => 'Errô',
+'faq' => 'Domande frequenti',
+
+# Vector skin
+'vector-action-addsection' => 'Azónzi discusción',
+'vector-action-delete' => 'Scancella',
+'vector-action-move' => 'Mescia',
+'vector-action-protect' => 'Protezzi',
+'vector-view-create' => 'Crea',
+'vector-view-edit' => 'Càngia',
+'vector-view-history' => 'Fanni védde a Stöia',
+'vector-view-view' => 'Lêzi',
+'vector-view-viewsource' => 'Veddi a sorgénte',
+'actions' => 'Açioìn',
+'namespaces' => 'Namespaces',
+'variants' => 'Diferense',
+
+'errorpagetitle' => 'Erô',
'returnto' => 'Tornâ a $1.',
'tagline' => 'Da {{SITENAME}}',
'help' => 'Agiùtto',
@@ -238,9 +260,8 @@ $messages = array(
'searchbutton' => 'Çerca',
'go' => 'Vanni',
'searcharticle' => 'Vanni',
-'history' => 'Stöja da paggina',
+'history' => 'Stöia da pàgina',
'history_short' => 'Stöia',
-'info_short' => 'Informassion',
'printableversion' => 'Verscion da stanpâ',
'permalink' => 'Inganso fisso',
'print' => 'Stampa',
@@ -248,20 +269,21 @@ $messages = array(
'create' => 'Crea',
'editthispage' => "Modificâ 'sta pagina",
'create-this-page' => "Crea 'sta paggina",
-'delete' => 'Scassa',
+'delete' => 'Scancella',
'deletethispage' => "Scassa 'sta paggina",
'protect' => 'Proteze',
+'protect_change' => 'cangiâ',
'protectthispage' => "Proteze 'sta paggina.",
-'unprotect' => 'Sbloccâ',
-'unprotectthispage' => "Levâghe a protession a 'sta paggina",
-'newpage' => 'Nêuva paggina',
+'unprotect' => 'Càngia proteçión',
+'unprotectthispage' => 'Càngia a proteçión de sta paggina',
+'newpage' => 'Nêuva pàgina',
'talkpage' => 'Paggina de discûxon',
'talkpagelinktext' => 'Ciæti',
'specialpage' => 'Pagina speçiâ',
'personaltools' => 'Strùmenti personâli',
'articlepage' => 'Veddi a voxe',
'talk' => 'Ciæti',
-'views' => 'Vixìte',
+'views' => 'Vìxite',
'toolbox' => 'Arneixi',
'projectpage' => 'Veddi a pagina de o progetto',
'viewtalkpage' => 'Veddi o ciæto',
@@ -277,7 +299,7 @@ $messages = array(
# All link text and link target definitions of links into project namespace that get used by other message strings, with the exception of user group pages (see grouppage) and the disambiguation template definition (see disambiguations).
'aboutsite' => 'Informaçioìn in sciô {{SITENAME}}',
-'aboutpage' => 'Project:Informassioìn',
+'aboutpage' => 'Project:Informaçioìn',
'copyright' => 'O contegnûo o se peu trovâ a $1.',
'copyrightpage' => "{{ns:project}}:Diritti d'autô",
'currentevents' => 'Atualitæ',
@@ -287,7 +309,7 @@ $messages = array(
'edithelp' => "Agiùtto pe l'ediçion",
'edithelppage' => 'Help:Modiffica',
'helppage' => 'Help:Contegnûi',
-'mainpage' => 'Pagina prinçipâ',
+'mainpage' => 'Pàgina prinçipâ',
'mainpage-description' => 'Pagina prinçipâ',
'policy-url' => 'Project:Lezzi',
'portal' => 'Pòrtego da comunitæ',
@@ -302,12 +324,15 @@ $messages = array(
'ok' => "D'accòrdio",
'retrievedfrom' => 'Estræto da "$1"',
'youhavenewmessages' => "Ti gh'æ $1 ($2).",
-'newmessageslink' => 'Messaggi nêuvi',
+'newmessageslink' => 'Nêuvi messaggi',
'newmessagesdifflink' => 'Differensa co-a revixon preçedente',
'youhavenewmessagesmulti' => "Ti t'æ neuvi messaggi in scia $1",
'editsection' => 'Càngia',
'editold' => 'càngia',
-'editsectionhint' => 'Càngia a sesción $1',
+'viewsourceold' => 'veddi a sorgénte',
+'editlink' => 'càngia',
+'viewsourcelink' => 'Veddi a sorgénte',
+'editsectionhint' => 'Càngia a seçión $1',
'toc' => 'Indiçe',
'showtoc' => 'Fâ vedde',
'hidetoc' => 'Asconde',
@@ -315,11 +340,13 @@ $messages = array(
'site-rss-feed' => 'Feed RSS de $1',
'site-atom-feed' => 'Feed Atom de $1',
'page-rss-feed' => 'Feed RSS pe "$1"',
+'page-atom-feed' => 'Feed Atom pe "$1"',
'red-link-title' => '$1 (ancon da scrîve)',
# Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Vôxe',
-'nstab-user' => 'Ûtente',
+'nstab-main' => 'Pàgina',
+'nstab-user' => 'Utente',
+'nstab-special' => 'Pàgina speçiâ',
'nstab-project' => 'Paggina de servissio',
'nstab-image' => 'Archivio',
'nstab-template' => 'Template',
@@ -330,42 +357,50 @@ $messages = array(
'nosuchactiontext' => "L'URL a no corisponde a 'n comando reconosciûo da-o software MediaWiki",
# General errors
-'error' => 'Errô',
-'databaseerror' => 'Errô da a base de i dæti',
-'readonly' => 'Database bloccòu',
-'internalerror' => 'Errô interno',
-'filecopyerror' => 'Non ho potùo copiâ o papê "$1" in te "$2".',
-'filedeleteerror' => 'Non ho potùo scassâ o papê "$1".',
-'filenotfound' => 'Non ho trovoö o papê "$1".',
-'badarticleerror' => "L'açion che ti te veu fâ a non l'è permissa in sta pagina.",
-'cannotdelete' => 'Non çe peu scassâ a pagina o o papê. (o peu ese za stæto scassoö da quarchedun ätro).',
-'badtitle' => "O tittolo o no l'è corretto.",
-'badtitletext' => "O tittolo da paggina çercâa o l'è vêuo, sballiòu o con caratteri no accettæ, oppûre o deriva da 'n errô inti collegamenti tra scîti Wiki diversci o verscioîn in léngue diversce do mæximo scîto.",
-'viewsource' => 'Veddi a fonte',
-'viewsourcefor' => 'de $1',
-'protectedpagetext' => "'Sta paggina a l'è stæta protezûa pe impedîghe a modiffica.",
-'viewsourcetext' => "O l'è poscibbile vedde e copiâ o còddice sorgente de 'sta paggina:",
+'error' => 'Errô',
+'databaseerror' => 'Errô da a base de i dæti',
+'readonly' => 'Database bloccòu',
+'missing-article' => "O database o no l'à trovòu o testo di 'na pàgina che ghe saiêiva dovûa êse co-o nómme de \"\$1\" \$2.
+
+Spésse vòtte questo o sucede quande a vegne riciamâ, da stöia ò dò-u confronto tra revixioìn, in colegaménto a 'na pàgina scancelâ, a in confronto tra revixioìn che no ghe son ciù ò a in confronto tra revixioìn sénsa ciù a stöia.
+
+Se coscì no fîse l'é probabile che t'aggi scoverto 'n erô into software MediaWiki.
+Pe favô ti peu segnalâ quello che l'é sucesso a in [[Special:ListUsers/sysop|aministratô]] dîndo l'URL in questión.",
+'missingarticle-rev' => '(nùmero da revixón: $1)',
+'internalerror' => 'Errô interno',
+'filecopyerror' => 'Non ho potùo copiâ o papê "$1" in te "$2".',
+'filedeleteerror' => 'Non ho potùo scassâ o papê "$1".',
+'filenotfound' => 'Non ho trovoö o papê "$1".',
+'badarticleerror' => "L'açion che ti te veu fâ a non l'è permissa in sta pagina.",
+'cannotdelete' => 'Non çe peu scassâ a pagina o o papê. (o peu ese za stæto scassoö da quarchedun ätro).',
+'badtitle' => "O tìtolo o no l'è corretto.",
+'badtitletext' => "O tittolo da paggina çercâa o l'è vêuo, sballiòu o con caratteri no accettæ, oppûre o deriva da 'n errô inti collegamenti tra scîti Wiki diversci o verscioîn in léngue diversce do mæximo scîto.",
+'viewsource' => 'Veddi a fonte',
+'viewsourcefor' => 'de $1',
+'protectedpagetext' => "'Sta paggina a l'è stæta protezûa pe impedîghe a modiffica.",
+'viewsourcetext' => "O l'è poscibbile vedde e copiâ o còddice sorgente de 'sta paggina:",
# Login and logout pages
-'welcomecreation' => "== Benvegnùo, $1! ==
+'welcomecreation' => "== Benvegnûo, $1! ==
-O to account o l'è stæto creoö. Non te ascordà de cangiâ e toe preferençe de{{SITENAME}}.",
+O teu account o l'è stæto creòu bén. No te ascordâ de cangiâ e teu {{SITENAME}}.[[Special:Preferences|preferençe de {{SITENAME}}]].",
'yourname' => 'Nomme',
'yourpassword' => 'Pòula segretta:',
-'yourpasswordagain' => 'Ri-scriï a pòula segretta',
-'remembermypassword' => "Arregordâ a mæ paròlla d'ordine (for a maximum of $1 {{PLURAL:$1|day|days}})",
+'yourpasswordagain' => 'Scrivi tórna a pòula segrétta:',
+'remembermypassword' => 'Aregòrda a mæ login in sto navegatô (pe in mascìmo de $1 {{PLURAL:$1|giórno|giórni}})',
'yourdomainname' => 'Indirisso do scito:',
'login' => 'Intra',
'nav-login-createaccount' => 'Intra / Registrate',
-'loginprompt' => "Ti deivi avéi e lesche (''cookies'') abilitæ into têu navigatô pe intrâ in {{SITENAME}}.",
+'loginprompt' => 'Ti devi avéi i cookie abilitæ into teu navigatô pe intrâ in {{SITENAME}}.',
'userlogin' => 'Intra / Registrate',
'logout' => 'Sciorti',
'userlogout' => 'Sciorti',
-'nologin' => "No ti g'hæ ancon accesso? '''$1'''.",
-'nologinlink' => "Creâ 'n conto",
-'createaccount' => "Creâ 'n nêuvo conto",
-'gotaccount' => "Ti g'hæ zà 'n conto d'accesso? '''$1'''.",
+'nologin' => "No ti gh'æ ancon l'aceizo? '''$1'''.",
+'nologinlink' => "Creâ 'n account",
+'createaccount' => "Crea 'n nêuvo account",
+'gotaccount' => "Ti ghe l'æ za 'n conto d'aceizo? '''$1'''.",
'gotaccountlink' => 'Intra',
+'userlogin-resetlink' => "T'æ ascordòu i teu dæti de aceizo?",
'badretype' => "E paròlle d'ordine che t'hæ scrîo son despægie.",
'userexists' => "O nomme d'ûtente inserîo o l'è zà in ûso.<br />
Pe piaxei prêuva a scellie 'n âtro.",
@@ -374,13 +409,13 @@ Pe piaxei prêuva a scellie 'n âtro.",
'loginsuccesstitle' => 'Accesso effettuòu',
'loginsuccess' => "'''O collegamento a-o server de {{SITENAME}} co-o nomme d'ûtente \"\$1\" o l'è attivo.'''",
'nosuchuser' => 'No gh\'è nisciûn ûtente con quello nomme "$1". Verificâ o nomme inserîo ò creâ \'n nêuvo accesso.',
-'nosuchusershort' => 'No gh\'è nisciûn ûtente con quello nomme "<nowiki>$1</nowiki>". Verificâ o nomme inserîo.',
+'nosuchusershort' => 'No gh\'è nisciûn ûtente con quello nomme "$1". Verificâ o nomme inserîo.',
'nouserspecified' => "O se deive inserî 'n nomme d'ûtente.",
'wrongpassword' => "Ti gh'æ scrîo 'na paròlla d'ordine sbaliâ. Tenta torna.",
'wrongpasswordempty' => "No ti g'hæ scrîo nisciûnn-a paròlla d'ordine. Tenta torna.",
'passwordtooshort' => "A paròlla d'ordine che ti gh'æ misso a no serve òu a l'é tròppo cûrta.
A dêve contegnî mìnimo $1 caratteri e esse diverza da-o teu nómme utente.",
-'mailmypassword' => "Inviâ paròlla d'ordine (password) via e-mail",
+'mailmypassword' => "Invia 'na nêuva paròlla segrétta a-a mæ e-mail",
'passwordremindertitle' => "Servissio Password Reminder (nêuva paròlla d'ordine temporannia) de {{SITENAME}}",
'passwordremindertext' => "Quarchedûn (probabilmente ti, con indirisso IP \$1) o g'ha domandòu l'invîo de 'na nêuva paròlla d'ordine pe l'accesso a {{SITENAME}} (\$4).
A paròlla d'ordine pe l'ûtente \"\$2\" a l'è stæta impostâa a \"\$3\".
@@ -399,47 +434,45 @@ Pe abilitâ l'invîo de messaggi e-mail pe quest'accesso, o se deive seguî l'is
'accountcreatedtext' => "Utente $1, ti te guägno l'açeiso!",
'loginlanguagelabel' => 'Lengoa: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Reverti a pòula segretta',
'resetpass_header' => 'Reverti a pòula segretta',
'retypenew' => "Ripette a nêuva paròlla d'ordine:",
-'resetpass_forbidden' => "E paròlle d'ordine no se pêuan cangiâ in {{SITENAME}}",
+'resetpass_forbidden' => "No l'é poscìbile cangiâ e paròlle segrétte",
# Edit page toolbar
-'bold_sample' => 'Grascietto',
-'bold_tip' => 'Grascietto',
+'bold_sample' => 'Grascetto',
+'bold_tip' => 'Grascetto',
'italic_sample' => 'Testo in corsciva',
'italic_tip' => 'Corscivo',
'link_sample' => "Nomme de l'inganço",
'link_tip' => 'Inganço interno',
'extlink_sample' => "http://www.example.com Nomme de l'inganço",
-'extlink_tip' => 'Collegamento esterno (inclûdde o prefisso http:// )',
-'headline_sample' => 'Tittolo',
-'headline_tip' => 'Tittolo de 2° livello',
-'math_sample' => 'Inserî a formûla chì',
-'math_tip' => 'Fórmûla matemattica (LaTeX)',
-'nowiki_sample' => 'Inserî chì o testo sensa formattassion',
+'extlink_tip' => 'Colegaménto esterno (inclûdde o prefisso http:// )',
+'headline_sample' => 'Tìtolo',
+'headline_tip' => 'Tìtolo de 2° livello',
+'nowiki_sample' => 'Inserî chì o testo sensa formattaçion',
'nowiki_tip' => 'Ignorâ a formattassion wiki',
'image_sample' => 'Exempio.jpg',
-'image_tip' => 'Immaggine caregaa',
+'image_tip' => 'Inmàgine caregâ',
'media_sample' => 'Exempio.ogg',
-'media_tip' => 'Collegamento a file multimedia',
+'media_tip' => 'Colegaménto a file moltimediale',
'sig_tip' => 'Firma con data e ôa',
'hr_tip' => 'Linnia orissontâ',
# Edit pages
-'summary' => 'Oggetto:',
-'subject' => 'Argomento (tittolo):',
-'minoredit' => 'Cangiamento minô (m)',
-'watchthis' => 'Azzonze a-i osservæ speçiâli',
-'savearticle' => 'Sârva a pagina',
-'preview' => 'Anteprimma',
-'showpreview' => "Veddi l'anteprimma",
-'showdiff' => 'Veddi i cangiamenti',
-'anoneditwarning' => "'''Attension:''' No ti t'hæ registròu. O têu indirisso IP o sajà misso inta stöja di cangiamenti da paggina.",
-'summary-preview' => 'Anteprimma oggetto:',
-'blockedtitle' => "L'utente o l'é bloccòu",
-'blockedtext' => "''''Sto nomme d'ûtente ou indirisso IP o l'è stæto bloccòu.'''
+'summary' => 'Oggetto:',
+'subject' => 'Argomento (tittolo):',
+'minoredit' => 'Cangiamento minô (m)',
+'watchthis' => 'Azzonze a-i osservæ speçiâli',
+'savearticle' => 'Sarva a pàgina',
+'preview' => 'Anteprìmma',
+'showpreview' => "Veddi l'anteprimma",
+'showdiff' => 'Veddi i cangiamenti',
+'anoneditwarning' => "'''Attension:''' No ti t'hæ registròu. O têu indirisso IP o sajà misso inta stöja di cangiamenti da paggina.",
+'summary-preview' => 'Anteprimma oggetto:',
+'blockedtitle' => "L'utente o l'é bloccòu",
+'blockedtext' => "''''Sto nomme d'ûtente ou indirisso IP o l'è stæto bloccòu.'''
O blòcco o l'è stæto fæto da \$1. A raxon dæta a l'è ''\$2''.
@@ -451,7 +484,7 @@ O l'è poscibbile contattâ \$1 o 'n âtro [[{{MediaWiki:Grouppage-sysop}}|ammin
O no se pêu ûsâ o comando \"Inviâ 'na léttia elettronega a quest'ûtente\" se ti no ti g'hæ 'n indirisso e-mail registròu inte têu [[Special:Preferences|preferense]] e se o no l'è stæto bloccòu ascì.
O têu indirisso IP o l'è \$3, e o têu blòcco ID o l'è #\$5.
Pe piaxei mettighe ûn di doî in tûtte e domande che ti fæ.",
-'autoblockedtext' => "O têu indirisso IP o l'è stæto bloccòu outomaticamente perché o l'ea za ûsòu da 'n âtro ûtente, bloccòu da \$1.
+'autoblockedtext' => "O têu indirisso IP o l'è stæto bloccòu outomaticamente perché o l'ea za ûsòu da 'n âtro ûtente, bloccòu da \$1.
A raxon dæta a l'è stæta:
:''\$2''
@@ -465,40 +498,52 @@ Ti pêu contattâ \$1 ou 'n âtro
Dagghe a mente a che no ti pêu ûsâ o comando \"manda na littia elettronega a sto utente\" se non ti g'hæ 'n indirisso de posta elettronega registroö in te têu [[Special:Preferences|preferense]] e se o no l'è stæto bloccòu ascì.
O têu blòcco ID o l'è \$5. Pe piaxei metti 'sto ID in tûtte e domande che ti fæ.",
-'blockedoriginalsource' => "A fònte de '''$1''' a l'è chi sotta:",
-'blockededitsource' => "O testo de i '''teu cangiamenti''' a '''$1''' o l'è chi sotta:",
-'whitelistedittitle' => "Bezêugna registrâse pe modificâ 'na pagina.",
-'whitelistedittext' => 'Pe cangia sta pagina devvi $1.',
-'loginreqtitle' => "Besêugna registrâse primma de modificâ 'sta paggina.",
-'accmailtitle' => 'Pòula segretta spedïa',
-'accmailtext' => 'A pòula segretta pe-o utente "$1" a l\'è stæta spedïa a o indirisso $2.',
-'newarticle' => '(Nêuvo)',
-'newarticletext' => "'Sto collegamento o corisponde a 'na paggina che ancon a no l'esciste.
-
-Se o se vêu creâ a paggina òua, o se pêu comensâ a scrive o testo into spassio vêuo chì sotta.
-(fâ riferimento a-e [[{{MediaWiki:Helppage}}|paggine d'agiûtto]] pe ciû informassion).
-
-Se o s'ha intròu inte 'sto collegamento pe sbàllio, o basta sciaccâ '''Inderrê''' (Indietro) into navigatô.",
-'noarticletext' => "Inte sto momento a pagina çercâ a l'è vêua. O l'è poscibbile [[Special:Search/{{PAGENAME}}|çercâ 'sto tittolo]] inte âtre pagine do scîto opû [{{fullurl:{{FULLPAGENAME}}|action=edit}} cangiâ a pagina òua].",
-'previewnote' => "'''Questa chì a l'è solo 'n'anteprimma; i cangiamenti no son ancon stæti sarvæ!'''",
-'editing' => 'Modiffica de $1',
-'editingsection' => 'Modiffica de $1 (session)',
-'yourtext' => 'O teu testo',
-'yourdiff' => 'Differense',
-'copyrightwarning' => "Nota: Tùtte e contribuçioìn a {{SITENAME}} van conscideræ comme rilasciæ drento a-i termini da licensa d'ûso $2 (veddi $1 pe savéine de ciù).
+'blockedoriginalsource' => "A fònte de '''$1''' a l'è chi sotta:",
+'blockededitsource' => "O testo de i '''teu cangiamenti''' a '''$1''' o l'è chi sotta:",
+'whitelistedittitle' => "Bezêugna registrâse pe modificâ 'na pagina.",
+'whitelistedittext' => 'Pe cangia sta pagina devvi $1.',
+'loginreqtitle' => "Besêugna registrâse primma de modificâ 'sta paggina.",
+'accmailtitle' => 'Pòula segretta spedïa',
+'accmailtext' => 'A pòula segretta pe-o utente "$1" a l\'è stæta spedïa a o indirisso $2.',
+'newarticle' => '(Nêuvo)',
+'newarticletext' => "Sto colegaménto o corisponde a 'na pàgina che ancon a no l'existe.
+
+Se o se vêu creâ a pàgina òua, o se pêu comensâ a scrive o testo into spàçio vêuo chì sotta.
+(fâ riferimento a-e [[{{MediaWiki:Helppage}}|paggine d'agiûtto]] pe ciû informaçioìn).
+
+Se t'ê intròu inte sto colegaménto pe sbàlio, o basta sciaccâ '''Inderê''' into navegatô.",
+'noarticletext' => "Inte sto momento a pagina çercâ a l'è vêua. O l'è poscibbile [[Special:Search/{{PAGENAME}}|çercâ 'sto tittolo]] inte âtre pagine do scîto opû [{{fullurl:{{FULLPAGENAME}}|action=edit}} cangiâ a pagina òua].",
+'noarticletext-nopermission' => "Òua a pàgina çercâ a l'è vêua. O l'è poscìbile [[Special:Search/{{PAGENAME}}|çercâ sto tìtolo]] inte âtre pàgine do scîto opû [{{fullurl:{{FULLPAGENAME}}|action=edit}} cangiâ a pàgina òua].",
+'previewnote' => "'''Questa chì a l'è solo 'n'anteprimma; i cangiamenti no son ancon stæti sarvæ!'''",
+'editing' => 'Modiffica de $1',
+'editingsection' => 'Càngio de $1 (seçión)',
+'yourtext' => 'O teu testo',
+'yourdiff' => 'Differense',
+'copyrightwarning' => "Nota: Tùtte e contribuçioìn a {{SITENAME}} van conscideræ comme rilasciæ drento a-i termini da licensa d'ûso $2 (veddi $1 pe savéine de ciù).
Se no ti veu che i testi teu pêuan esse modificæ da quarchedùn sensa limitaçioìn, no mandâli a {{SITENAME}}.<br />
Inviando o testo ti diciâri, sott'a teu responsabilitæ, ch'o l'é stæto scrîto da ti personalmente oppure ch'o l'é stæto piggiòu da 'na fonte de pùbrico domìnio òu anàlogamente lìbea.<br />
'''NO INVIÂ MATERIÂLE COVERTO DA DRÎTI D'AUTÔ SENSA OUTORIZAÇION!'''",
-'templatesused' => "Template dêuviæ inte 'sta paggina:",
-'templatesusedpreview' => "Template dêuviæ inte 'st'anteprimma:",
-'template-protected' => '(protezûo)',
-'template-semiprotected' => '(semiprotezûo)',
-'nocreatetext' => "A poscibilitæ de creâ nêuve paggine insce {{SITENAME}} a l'è stæta limitâ solo a-i ûtenti registræ.
+'templatesused' => '{{PLURAL:$1|Template adêuviòu|Template adêuviæ}} in sta pàgina:',
+'templatesusedpreview' => "Template dêuviæ inte 'st'anteprimma:",
+'template-protected' => '(protezûo)',
+'template-semiprotected' => '(semiprotezûo)',
+'hiddencategories' => "Sta pàgina a l'é de {{PLURAL:$1|1 categoria ascoza|$1 categorie ascoze}}:",
+'nocreatetext' => "A poscibilitæ de creâ nêuve paggine insce {{SITENAME}} a l'è stæta limitâ solo a-i ûtenti registræ.
O se pêu tornâ inderê e modificâ 'na paggina escistente, oppûre [[Special:UserLogin|intrâ ò creâ 'n accesso nêuvo]].",
-'recreate-moveddeleted-warn' => "'''Attension: o se sta pe ricreâ 'na paggina zà scassâa into passòu.'''
+'permissionserrorstext-withaction' => "No t'æ i permìssi pe $2 pe {{PLURAL:$1|sta raxon|ste raxoìn}}:",
+'recreate-moveddeleted-warn' => "Atençión: o se sta pe ricreâ 'na pàgina zà scancelâ into passòu.'''
+
+O se deive consciderâ se o l'è davéi coretto continoâ a cangiâ 'sta pàgina.
+E cancellaçioìn e mesciaménti son publicæ chì sotta:",
+'moveddeleted-notice' => "Sta pàgina a l'é stæta cancelâ.
+E scancelaçioìn e mescaménti son riportæ chi pe informaçión.",
-O se deive consciderâ se o l'è davvei corretto continuâ avanti a modificâ 'sta paggina.
-E relative cancellassioîn son pûbricæ chì sotta:",
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''Atento:''' a dimensción di template che t'æ misso l'é tròppo grànde.
+Quàrcheùn di teu template no saiâ azónto.",
+'post-expand-template-inclusion-category' => "Pàgine con di template che gh'àn a dimensción ciù âta do limite mascimo",
+'post-expand-template-argument-warning' => "'''Atençión:''' sta pàgina a contegne un ò ciù argomenti di template che son tròppo gràndi pe êse espansi. Sti argomenti no saiàn fæti védde.",
+'post-expand-template-argument-category' => 'Pàgine con di template che ghe mancàn di argoménti',
# Account creation failure
'cantcreateaccounttitle' => 'Non çe peu registrâ o utente',
@@ -507,70 +552,109 @@ E relative cancellassioîn son pûbricæ chì sotta:",
A razon dæta a l'è ''$2''",
# History pages
-'viewpagelogs' => "Veddi i log relativi a 'sta paggina.",
-'currentrev' => 'Verscion attuâle',
-'revisionasof' => 'Verscion do $1',
-'revision-info' => 'Verscion do $1, outô: $2',
-'previousrevision' => '↠Verscion meno recente',
-'nextrevision' => 'Revixon ciû nêuva →',
-'currentrevisionlink' => 'Ûrtima revixon',
-'cur' => 'cor',
-'next' => 'Proscimo',
-'last' => 'Ûrtima',
-'page_first' => 'primma',
-'page_last' => 'ûrtima',
-'histlegend' => "Confronto tra verscioîn: selessionâ e cascette corispondenti a-e verscioîn descideræ e schissâ Inviâ oppûre o pomello lì sotta.
+'viewpagelogs' => "Veddi i log relativi a 'sta paggina.",
+'currentrev' => 'Verscion attuâle',
+'currentrev-asof' => 'Ùrtima revixón de-e $1',
+'revisionasof' => 'Verscion do $1',
+'revision-info' => 'Verscion do $1, outô: $2',
+'previousrevision' => '↠Verscion meno recente',
+'nextrevision' => 'Revixon ciù nêuva →',
+'currentrevisionlink' => 'Ûrtima revixon',
+'cur' => 'cor',
+'next' => 'Proscimo',
+'last' => 'Ûrtima',
+'page_first' => 'primma',
+'page_last' => 'ûrtima',
+'histlegend' => "Confronto tra verscioîn: selessionâ e cascette corispondenti a-e verscioîn descideræ e schissâ Inviâ oppûre o pomello lì sotta.
Leggenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a verscion preçedente, '''m''' = modiffica minô",
-'histfirst' => 'Primmo',
-'histlast' => 'Ûrtimo',
-'historyempty' => '(vêua)',
+'history-fieldset-title' => 'Véddi a stöia',
+'history-show-deleted' => 'Sôlo scancelæ',
+'histfirst' => 'Prìmmo',
+'histlast' => 'Ùrtimo',
+'historyempty' => '(vêua)',
# Revision feed
'history-feed-title' => 'Stöia de e revisioin',
'history-feed-item-nocomment' => '$1 o $2',
+# Revision deletion
+'rev-delundel' => 'fanni védde/ascondi',
+'revdel-restore' => 'càngia a vixibilitæ',
+'revdel-restore-deleted' => 'Revixioìn scancelæ',
+'revdel-restore-visible' => 'revixioìn che se peuan védde',
+
+# Merge log
+'revertmerge' => 'Anùlla union',
+
# Diffs
-'history-title' => 'Cronologîa de-e revixoîn de "$1"',
+'history-title' => 'Stöia de revixoìn de "$1"',
'difference' => '(Differense fra e revixoîn)',
'lineno' => 'Linia $1:',
'compareselectedversions' => 'Confronta e verscioîn selessionæ',
'editundo' => 'Anùlla',
-'diff-multi' => '({{PLURAL:$1|Ûnn-a revixon intermedia no vista|$1 reviscioîn intermedie no viste}}.)',
+'diff-multi' => '({{PLURAL:$1|Inna revixión intermedia|$1 revixioìn intermedie}} de {{PLURAL:$2|un utente|$2 utenti}} no son mostræ)',
# Search results
-'searchresults' => 'Resultati da reçerca',
-'searchsubtitle' => "Ti t'è çercoö '''[[:$1]]'''",
-'searchsubtitleinvalid' => "Ti t'è çercoö '''$1'''",
-'prevn' => 'Precedenti {{PLURAL:$1|$1}}',
-'nextn' => 'Proscima {{PLURAL:$1|$1}}',
-'viewprevnext' => 'Veddi ($1 {{int:pipe-separator}} $2) ($3).',
-'searchhelp-url' => 'Help:Contegnûi',
-'powersearch' => 'Çerca',
+'searchresults' => 'Resultati da reçerca',
+'searchresults-title' => 'Rezoltati da riçerca de "$1"',
+'searchsubtitle' => "Ti t'è çercoö '''[[:$1]]'''",
+'searchsubtitleinvalid' => "Ti t'è çercoö '''$1'''",
+'prevn' => 'Precedenti {{PLURAL:$1|$1}}',
+'nextn' => 'Proscima {{PLURAL:$1|$1}}',
+'prevn-title' => '{{PLURAL:$1|rezoltato precedénte|rezoltati precedénti}}',
+'nextn-title' => 'Pròscimo $1 {{PLURAL:$1|rezoltato|rezoltati}}',
+'shown-title' => 'Fanni védde {{PLURAL:$1|in rizoltato|$1 rizoltati}} pe pàgina',
+'viewprevnext' => 'Veddi ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-exists' => "'''In sciô scîto l'existe za 'na pàgina co-o nómme \"[[:\$1]]\"'''",
+'searchmenu-new' => 'Crea la pagina "[[:$1]]" su questo sito',
+'searchhelp-url' => 'Help:Contegnûi',
+'searchprofile-articles' => 'Pàgina di contegnûi',
+'searchprofile-project' => 'Pàgine de agiùtto e relative a-o progetto',
+'searchprofile-images' => 'Moltimedia',
+'searchprofile-everything' => 'Tùtto',
+'searchprofile-advanced' => 'Avansæ',
+'searchprofile-articles-tooltip' => 'Çerca in $1',
+'searchprofile-project-tooltip' => 'Çerca in $1',
+'searchprofile-images-tooltip' => 'Çerca file',
+'searchprofile-everything-tooltip' => 'Çerca in ògni dove (anche inte pàgine de discusción)',
+'searchprofile-advanced-tooltip' => 'Çerca inti namespace personalizæ',
+'search-result-size' => '$1 ({{PLURAL:$2|1 paròlla|$2 paròlle}})',
+'search-result-category-size' => '{{PLURAL:$1|1 utente|$1 utenti}} ({{PLURAL:$2|1 sottocategoria|$2 sottocategorie}}, {{PLURAL:$3|1 file|$3 file}})',
+'search-redirect' => '(redirect $1)',
+'search-section' => '(seçión $1)',
+'search-suggest' => 'Fòscia ti voéivi: $1',
+'searchrelated' => 'relativi',
+'searchall' => 'tùtti',
+'showingresultsheader' => "{{PLURAL:$5|Rizoltato '''$1''' di '''$3'''|Rizoltati '''$1 - $2''' de '''$3'''}} pe '''$4'''",
+'search-nonefound' => 'Mi no ò trovòu nìnte',
+'powersearch' => 'Çerca',
# Preferences page
-'preferences' => 'Preferençe',
-'mypreferences' => 'Mæ preferense',
-'changepassword' => 'Cangiâ a pòula segretta',
-'skin-preview' => 'Anteprimma',
-'prefs-datetime' => 'Data e oùa',
-'saveprefs' => 'Sarva',
-'prefs-editing' => 'Cangia',
-'searchresultshead' => 'Çerca',
-'timezonelegend' => 'Oùa',
-'allowemail' => 'Permitti a posta elettronega da ätri utenti',
-'default' => 'Predefinïo',
-'prefs-files' => 'Papê',
-'youremail' => 'Posta elettronega:',
-'username' => "Nomme d'utente",
-'yourrealname' => 'Nomme vëo:',
-'yourlanguage' => 'Léngoa:',
-'yourvariant' => 'Differensa',
-'yournick' => 'Nommeaggio:',
-'badsig' => 'Errô in ta firma; controlla i comandi HTML.',
-'badsiglength' => "O nommeaggio o l'é tròppo lóngo; o dêve avéi meno de $1 caratteri.",
-'email' => 'Posta elettronega',
-'prefs-help-realname' => '* Nomme vëo (opsionâ): se o se scellie de scrivilo, o sajà dêuviòu pe ascrivighe a paternitæ di contegnûi inviæ.',
+'preferences' => 'Preferençe',
+'mypreferences' => 'Mæ preferense',
+'changepassword' => 'Cangiâ a pòula segretta',
+'skin-preview' => 'Anteprimma',
+'prefs-datetime' => 'Data e oùa',
+'saveprefs' => 'Sarva',
+'prefs-editing' => 'Cangia',
+'searchresultshead' => 'Çerca',
+'timezonelegend' => 'Oùa',
+'allowemail' => 'Permitti a posta elettronega da ätri utenti',
+'default' => 'Predefinïo',
+'prefs-files' => 'Papê',
+'youremail' => 'Indirìsso email:',
+'username' => "Nomme d'utente",
+'yourrealname' => 'Nomme vêo:',
+'yourlanguage' => 'Léngoa:',
+'yourvariant' => 'Differensa',
+'yournick' => 'Nommeaggio:',
+'badsig' => 'Errô in ta firma; controlla i comandi HTML.',
+'badsiglength' => "O nommeaggio o l'é tròppo lóngo; o dêve avéi meno de $1 caratteri.",
+'email' => 'Posta elettronega',
+'prefs-help-realname' => '* Nomme vëo (opsionâ): se o se scellie de scrivilo, o sajà dêuviòu pe ascrivighe a paternitæ di contegnûi inviæ.',
+'prefs-help-email' => "L'emal a no l'é obligatöia, ma a teu peu permette de reçéive a paròlla segrétta se ti t'ascòrdi.",
+'prefs-help-email-others' => 'Ti ti peu ascì scélie de lasciâ che i âtri te contâtino da-e teu pàgine utente ò de discoscioìn sénsa revelâ a teu indentitæ.',
# Groups
'group-user' => 'Ûtenti',
@@ -580,28 +664,39 @@ Leggenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a v
# User rights log
'rightslog' => "Diritti d'ûtente",
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'càngia sta pàgina',
+
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|modiffica|modiffiche}}',
-'recentchanges' => 'Ùrtimi cangiamenti',
-'recentchanges-feed-description' => "Questo feed o g'ha e modiffiche ciû reçenti a-i contegnûi do scîto.",
-'rcnote' => "Chì sotta {{PLURAL:$1|gh'é a modiffica ciù reçente|ghe son e '''$1''' modiffiche ciù reçenti}} de 'sto scîto {{PLURAL:$2|inte ûrtime 24 ôe|inti ûrtimi '''$2''' giorni}}; i dæti son aggiornæ a $3.",
-'rcnotefrom' => "Chì sotta gh'è i cangiamenti fæti comensando da '''$2''' (scinn-a '''$1''').",
-'rclistfrom' => 'Fâ vedde e modiffiche apportæ partendo da $1',
-'rcshowhideminor' => '$1 cangiamenti minoi',
-'rcshowhidebots' => '$1 bot',
-'rcshowhideliu' => '$1 ûtenti registræ',
-'rcshowhideanons' => '$1 ûtenti anonnimi',
-'rcshowhidepatr' => '$1 e modiffiche controllæ',
-'rcshowhidemine' => '$1 i mæ cangiamenti',
-'rclinks' => 'Fâ vedde e $1 modiffiche ciû reçenti fæte inti ûrtimi $2 giorni<br />$3',
-'diff' => 'diff',
-'hist' => 'stö',
-'hide' => 'Ascondi',
-'show' => 'Famme vedde',
-'minoreditletter' => 'm',
-'newpageletter' => 'N',
-'boteditletter' => 'b',
-'rc_categories_any' => 'Quarsevêuggia',
+'nchanges' => '$1 {{PLURAL:$1|modiffica|modiffiche}}',
+'recentchanges' => 'Ùrtimi cangiamenti',
+'recentchanges-legend' => 'Inpostaçioìn de lìùrtimi cangiaménti',
+'recentchangestext' => "Questa pàgina a g'ha di càngi ciù reçenti a-i contegnûi do scîto.",
+'recentchanges-feed-description' => "Questo feed o g'ha di cangiaménti ciù reçenti a-i contegnûi do scîto.",
+'recentchanges-label-newpage' => "Sto cangiaménto o l'à creòu 'na pàgina nêuva",
+'recentchanges-label-minor' => 'Cangiamento minô (m)',
+'recentchanges-label-bot' => "Sto cangiaménto o l'à fæto in bot",
+'recentchanges-label-unpatrolled' => "Sto cangiaménto o no l'é stæto ancón verificòu",
+'rcnote' => "De segoito {{PLURAL:$1|l'é elencâ o cangiménto ciù reçente|son elencæ e '''$1''' cangiménti ciù reçenti}} a-o scîto {{PLURAL:$2|inte ùrtime 24 ôe|inti ùrtimi '''$2''' giórni}}; i dæti son agiornæ a-e $5 do $4.",
+'rcnotefrom' => "Chì sotta gh'è i cangiamenti fæti comensando da '''$2''' (scinn-a '''$1''').",
+'rclistfrom' => 'Fanni vedde e modiffiche apportæ partendo da $1',
+'rcshowhideminor' => '$1 cangiaménti minoi',
+'rcshowhidebots' => '$1 bot',
+'rcshowhideliu' => '$1 utenti registræ',
+'rcshowhideanons' => '$1 utenti anonnimi',
+'rcshowhidepatr' => '$1 i cangiaménti controllæ',
+'rcshowhidemine' => '$1 i mæ cangiamenti',
+'rclinks' => 'Fâ vedde i $1 cangiménti ciù reçenti fæte inti ùrtimi $2 giorni<br />$3',
+'diff' => 'diff',
+'hist' => 'stö',
+'hide' => 'Ascondi',
+'show' => 'Famme vedde',
+'minoreditletter' => 'm',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
+'rc_categories_any' => 'Quarsevêuggia',
+'rc-enhanced-expand' => 'Fanni védde detàli (con JavaScript)',
+'rc-enhanced-hide' => 'Ascondi detàli',
# Recent changes linked
'recentchangeslinked' => 'Cangiamenti correlæ',
@@ -609,14 +704,17 @@ Leggenda: (corr) = differense co-a verscion corrente, (prec) = differense co-a v
'recentchangeslinked-toolbox' => 'Cangiaménti corelæ',
'recentchangeslinked-title' => 'Modiffiche correlæ a "$1"',
'recentchangeslinked-noresult' => 'Nisciûn cangiamento a-e paggine collegæ into periodo speçificòu.',
-'recentchangeslinked-summary' => "'Sta paggina a fa vedde e modiffiche ciû reçenti a-e paggine in collegamento.
-E paggine in osservassion son dipinte in '''grascietto'''.",
+'recentchangeslinked-summary' => "Sta pàgina a fa védde i cangiaménti ciù reçenti a-e pàgine colegæ a quésta.
+E pàgine che t'æ in oservaçion inti [[Special:Watchlist|oservæ speciâli]] son in '''grascetto'''.",
+'recentchangeslinked-page' => 'Nómme da pàgina:',
+'recentchangeslinked-to' => 'Fanni védde sôlo i cangiaménti a-e pàgine colegæ a-a pàgina specificâ',
# Upload
'upload' => "Caregâ 'n archivio",
'uploadbtn' => "Carega 'n archivvio",
-'uploadlogpage' => 'Log di archivi careghæ',
+'uploadlogpage' => 'Log di archivi caregæ',
'filename' => 'Nomme do papê',
+'filedesc' => 'Detàli',
'filesource' => 'Reixe:',
'uploadedfiles' => 'Papê caregæ',
'badfilename' => 'O nomme do papê o l\'è stæto cangioö in "$1".',
@@ -632,8 +730,8 @@ E paggine in osservassion son dipinte in '''grascietto'''.",
'upload-file-error' => 'Errô interno',
-'license' => 'Permisso:',
-'license-header' => 'Permisso:',
+'license' => 'Licensa:',
+'license-header' => 'Licensa',
'nolicense' => 'Nisciûnn-a liçensa indicâa',
# Special:ListFiles
@@ -643,19 +741,24 @@ E paggine in osservassion son dipinte in '''grascietto'''.",
'listfiles_date' => 'Dæta',
# File description page
-'file-anchor-link' => 'Archivvio',
+'file-anchor-link' => 'Archivio',
'filehist' => "Stöia de l'archivio",
-'filehist-help' => "Sciacca inscie 'n grûppo data/ôa pe vedde l'archivvio comme o se presentâva into momento indicòu.",
+'filehist-help' => "Sciacca inscie 'n grûppo data/ôa pe vedde l'archivio comme o se presentâva into momento indicòu.",
+'filehist-revert' => 'Repìggia',
'filehist-current' => 'Corrente',
-'filehist-datetime' => 'Data/Ôa',
-'filehist-user' => 'Ûtente',
+'filehist-datetime' => 'Dæta/Ôa',
+'filehist-thumb' => 'Miniatora',
+'filehist-thumbtext' => 'Miniatora de versción de $1',
+'filehist-user' => 'Utente',
'filehist-dimensions' => 'Dimensioîn',
'filehist-filesize' => "Dimension de l'archivvio",
-'filehist-comment' => 'Commenti',
+'filehist-comment' => 'Coménti',
'imagelinks' => "Ûzo de l'archivio",
-'linkstoimage' => "Queste son e pagine che appóntan a st'archivio",
-'nolinkstoimage' => "No gh'è nisciûnn-a paggina collegâa con 'st'archivvio.",
+'linkstoimage' => '{{PLURAL:$1|A segoente pàgina a contegne|E segoenti $1 pàgine contegnan}} colegaménti a-o file:',
+'nolinkstoimage' => "No gh'è nisciûnn-a pàgina collegâa con 'st'archivvio.",
'sharedupload' => "'St'archivvio o l'è condiviso; sajeiva a dî c'o pêu ese dêuviòu da ciû progetti wiki.",
+'sharedupload-desc-here' => 'Sto file o vegne da $1 e o peu êse adêuviòu inti âtri progetti.
+Chi de segoito ti peu védde a descriçión inta [$2 pàgina de descriçión do file].',
'uploadnewversion-linktext' => "Carega 'na nêuva verscion de 'st'archivvio chì",
# File deletion
@@ -677,9 +780,10 @@ E paggine in osservassion son dipinte in '''grascietto'''.",
'randomredirect' => 'Ûn rindirissamento a brettîo',
# Statistics
-'statistics' => 'Statístiche',
+'statistics' => 'Statistiche',
-'disambiguations' => 'Paggine de desambiguassion',
+'disambiguations' => 'Paggine de desambiguassion',
+'disambiguationspage' => 'Template:Dizanbigoa',
'doubleredirects' => 'Rindirissamenti doggi',
@@ -712,7 +816,7 @@ E paggine in osservassion son dipinte in '''grascietto'''.",
'mostcategories' => 'Voxi con ciû categorîe',
'mostimages' => 'Immaggini con ciû collegamenti',
'mostrevisions' => 'Voxi con ciû revixoîn',
-'prefixindex' => 'Indiçe de-e voxi pe léttie inissiâli',
+'prefixindex' => 'Indiçe de voxi pe létie inçiâ',
'shortpages' => 'Paggine ciû cûrte',
'longpages' => 'Paggine ciû longhe',
'deadendpages' => 'Paggine sensa sciortîa',
@@ -723,12 +827,14 @@ E paggine in osservassion son dipinte in '''grascietto'''.",
'ancientpages' => 'Paggine ciû vëgie',
'move' => 'Mescia',
'movethispage' => "Mescia 'sta paggina",
+'pager-newer-n' => '{{PLURAL:$1|1 ciù nêuvo|$1 ciù nêuvi}}',
+'pager-older-n' => '{{PLURAL:$1|1 ciù vêgio|$1 ciù vêgi}}',
# Book sources
'booksources' => 'Fonti',
'booksources-search-legend' => 'Çerca e fonti',
'booksources-isbn' => 'Codice ISBN:',
-'booksources-go' => 'Vanni',
+'booksources-go' => 'Vànni',
'booksources-text' => 'De sotta unn-a lista de ingançi a ätri sciti che vendan neuvi e vegi libbri, e che peuvre avei informaçioin in sci libbri che ti te çerchi',
# Special:Log
@@ -745,7 +851,7 @@ Ti te peu strinza a vista se ti te çerni un tipo de registro, un nomme de un ut
'nextpage' => 'Proscima paggina ($1)',
'prevpage' => 'Paggina preçedente ($1)',
'allpagesfrom' => 'Fanni vedde e paggine comensando da:',
-'allarticles' => 'Tûtte e voxi',
+'allarticles' => 'Tùtte e pàgine',
'allinnamespace' => 'Tutte e pagine ($1 namespace)',
'allnotinnamespace' => 'Tutte e pagine (non in $1)',
'allpagesprev' => 'De primma',
@@ -760,12 +866,21 @@ Ti te peu strinza a vista se ti te çerni un tipo de registro, un nomme de un ut
'special-categories-sort-count' => 'ordenâ pe nûmmero',
'special-categories-sort-abc' => 'ordenâ arfabeticamente',
+# Special:LinkSearch
+'linksearch-line' => '$1 colegòu a-a pagina $2',
+
# Special:ListUsers
'listusers-submit' => 'Fanni vedde',
'listusers-noresult' => 'Utente non trovöo.',
+# Special:Log/newusers
+'newuserlogpage' => 'Nêuvi utenti',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(Elenco di membri)',
+
# E-mail user
-'emailuser' => "Inviâ 'na léttia elettronega a quest'ûtente",
+'emailuser' => "Invia 'na email a st'utente chi",
'emailpage' => "Mandighe 'na léttia elettronega",
'defemailsubject' => '{{SITENAME}} posta elettronega',
'noemailtitle' => 'Nisciûn conto e-mail',
@@ -780,19 +895,19 @@ Ti te peu strinza a vista se ti te çerni un tipo de registro, un nomme de un ut
# Watchlist
'watchlist' => 'A mæ lista in osservassion',
-'mywatchlist' => 'Lista in osservaçion',
+'mywatchlist' => 'Lista in oservaçion',
+'watchlistfor2' => 'Pe $1 $2',
'watchnologin' => "Non ti t'æ entroö",
'watchnologintext' => 'Devvi [[Special:UserLogin|entrâ]] pe cangiâ a toa lista in osservaçion.',
-'addedwatch' => 'Azzonto a a lista in osservaçion',
'addedwatchtext' => "A paggina \"[[:\$1]]\" a l'è stæta azzonta a-a pròpia [[Special:Watchlist|lista in osservaçion]]. De chì in avanti, i cangiamenti fæti a-a paggina e a-a sêu discûxon sajàn missi in lista lì; o tittolo da paggina o sajà scrîo in '''grascietto''' inta paggina di [[Special:RecentChanges|ûrtimi cangiamenti]] coscì ti o veddi megio. Se ti vêu eliminâla da-a lista in osservaçion ciû târdi, sciacca \"no seguî\" inscia barra de d'âto.",
-'removedwatch' => 'Scassæ da a lista in osservaçion',
'removedwatchtext' => 'A paggina "[[:$1]]" a l\'è stæta scassâa da-a têu lista in osservaçion.',
-'watch' => 'Inta lista in osservaçion',
+'watch' => 'Inta lista in oservaçion',
'watchthispage' => "Vigilâ 'sta paggina",
'unwatch' => 'No seguî',
-'watchlist-details' => "A lista d'osservassion speçiâ a contegne {{PLURAL:$1|ûnn-a paggina (e a sêu paggina de discûxon)|$1 paggine (e e rispettive paggine de discûxon)}}.",
+'watchlist-details' => "A lista d'oservaçión speçiâle a contegne {{PLURAL:$1|inna pàgina (co-a seu pàgina de discusción)|$1 pàgine (co-e lòro pàgine de discusción)}}.",
'watchlistcontains' => "A lista in osservaçion g'ha $1 {{PLURAL:$1|pagine|pagina}}.",
'wlshowlast' => 'Famme vedde e ûrtime $1 ôe $2 giorni $3',
+'watchlist-options' => 'Inpostaçioìn di oservæ speciâli',
# Displayed when you click the "watch" button and it is in the process of watching
'watching' => 'Inti osservæ speçiâli...',
@@ -809,7 +924,8 @@ Ti te peu strinza a vista se ti te çerni un tipo de registro, un nomme de un ut
'historywarning' => "Attension: A paggina c'a se sta pe scassâ a g'ha 'na cronologîa:",
'confirmdeletetext' => "Ti stæ pe scassâ pe sempre da-o database 'na paggina ò 'n'immaggine, assemme a tûtta a sêu cronologîa. Pe cortexia, conferma che davvei ti vêu andâ avanti con quella cancellassion, che ti capisci perfettamente e conseguense de 'st'assion e che a s'adatta a-e linnie guidda stabilîe in [[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Açion finïa',
-'deletedtext' => 'A paggina "<nowiki>$1</nowiki>" a l\'è stæta scassâa. Consûltâ o $2 pe \'na lista de-e paggine scassæ de reçente.',
+'actionfailed' => 'Açión falîa',
+'deletedtext' => 'A paggina "$1" a l\'è stæta scassâa. Consûltâ o $2 pe \'na lista de-e paggine scassæ de reçente.',
'deletedarticle' => 'O s\'ha scassòu "[[$1]]"',
'dellogpage' => 'Registro de-e cose scassæ',
'deletecomment' => 'Raxon:',
@@ -827,14 +943,14 @@ L'ûrtimo cangiamento o ghe l'à fæto [[User:$3|$3]] ([[User talk:$3|Ciæti]]).
# Protect
'protectlogpage' => 'Protessioîn',
-'protectedarticle' => 'o s\'ha protezûo "[[$1]]"',
+'protectedarticle' => 'l\'à protetto "[[$1]]"',
'prot_1movedto2' => '[[$1]] mesciòu a [[$2]]',
'protect-legend' => 'Confermâ protession',
'protectcomment' => 'Raxon:',
'protectexpiry' => 'Scadensa:',
'protect_expiry_invalid' => 'Scadensa invalida.',
'protect_expiry_old' => 'Data de scadensa into passòu.',
-'protect-text' => "Chì o l'è poscibbile vedde e modificâ o livello de protession pe-a paggina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Chì o l'è poscibbile vedde e modificâ o livello de protession pe-a paggina '''$1'''.",
'protect-locked-access' => "No ti g'hæ permisso pe modificâ i livelli de protession da paggina.
Queste son e impostassioîn correnti pe 'sta paggina ('''$1'''):",
'protect-cascadeon' => "Pe-o momento 'sta paggina chì a l'è bloccâa perché a l'è inclûsa {{PLURAL:$1|inta paggina indicâa apprêuvo, pe-a quæ|inte paggine indicæ apprêuvo, pe-e quæ}} a l'è attiva a protession recorsciva. O se pêu modificâ o livello de protession individuâle da paggina, ma l'impostassioîn derivanti da-a protession recorsciva no sajàn modificæ.",
@@ -860,6 +976,8 @@ Queste son e impostassioîn correnti pe 'sta paggina ('''$1'''):",
# Undelete
'undelete' => 'Repiggio de i dæti: veddi e pagine che son stæte scassæ',
'undeletebtn' => 'Ristorâ',
+'undeletelink' => 'fanni védde/repìggia',
+'undeleteviewlink' => 'fanni védde',
'cannotundelete' => "O repiggio de i dæti o non l'è riuscïo (i peun ese za stæti repiggiæ da quarchedun ätro).",
'undelete-bad-store-key' => "No se peu repiggiâ o papê con a data $1: o papê o l'éja za stæto scassoö.",
'undelete-cleanup-error' => 'Errô repiggiando i dæti do papê "$1".',
@@ -870,32 +988,46 @@ $1',
# Namespace form on various pages
'namespace' => 'Namespace:',
-'invert' => 'Invertî a selession',
+'invert' => 'Invertî a seleçión',
'blanknamespace' => '(Prinçipâ)',
# Contributions
-'contributions' => "Contribussioîn de l'ûtente",
-'mycontris' => 'Mæ contribuçioin',
-'contribsub2' => 'Pe $1 ($2)',
-'uctop' => '(ûrtima pe-a paggina)',
-'month' => 'Partendo da-o meise (e preçedenti):',
-'year' => "Partendo da l'anno (e preçedenti):",
-
+'contributions' => "Contribussioìn de l'utente",
+'contributions-title' => 'Contribuçioìn de $1',
+'mycontris' => 'Mæ contribuçioin',
+'contribsub2' => 'Pe $1 ($2)',
+'uctop' => '(ûrtima pe-a paggina)',
+'month' => 'Partendo da-o méize (e precedénti):',
+'year' => "Partendo da l'anno (e preçedenti):",
+
+'sp-contributions-newbies' => 'Fanni védde sôlo e contribuçioìn di nêuvi utenti',
'sp-contributions-newbies-sub' => 'Pe i nêuvi ûtenti',
-'sp-contributions-blocklog' => 'Blocchi',
+'sp-contributions-blocklog' => 'Blòcchi',
+'sp-contributions-uploads' => 'caregaménti',
+'sp-contributions-logs' => 'log',
'sp-contributions-talk' => 'Ciæti',
+'sp-contributions-search' => 'Riçerca contribuçioìn',
+'sp-contributions-username' => 'Indirìsso IP ò nómme utente:',
+'sp-contributions-toponly' => "Fanni védde sôlo i ùrtimi cangiaménti che son inte l'ùrtime revixioìn da pàgina",
'sp-contributions-submit' => 'Çerca',
# What links here
-'whatlinkshere' => 'Cöse o se colega chì',
-'whatlinkshere-title' => "Paggine c'appuntan a $1",
-'linkshere' => "E paggine seguenti appontan a '''[[:$1]]''':",
-'nolinkshere' => "Nisciûnn-a paggina a se collega con '''[[:$1]]'''.",
-'isredirect' => 'Rindirissâ',
-'istemplate' => 'Inclûxon',
-'whatlinkshere-prev' => '{{PLURAL:$1|preçedente|preçedenti $1}}',
-'whatlinkshere-next' => '{{PLURAL:$1|sûccescivo|sûccescivi $1}}',
-'whatlinkshere-links' => '↠collegamenti',
+'whatlinkshere' => 'Cöse o se colega chì',
+'whatlinkshere-title' => "Pàgine c'apontàn a $1",
+'whatlinkshere-page' => 'Pàgina:',
+'linkshere' => "E pàgine segoenti apontan a '''[[:$1]]''':",
+'nolinkshere' => "Nisciùnn-a pàgina a se collega con '''[[:$1]]'''.",
+'isredirect' => 'redirect',
+'istemplate' => 'Incluxon',
+'isimage' => 'Colegamento a file',
+'whatlinkshere-prev' => '{{PLURAL:$1|preçedente|preçedenti $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|sûccescivo|sûccescivi $1}}',
+'whatlinkshere-links' => '↠colegaménti',
+'whatlinkshere-hideredirs' => '$1 redirect',
+'whatlinkshere-hidetrans' => '$1 Incluxon',
+'whatlinkshere-hidelinks' => '$1 colegaménti',
+'whatlinkshere-hideimages' => '$1 colegaménti da inmàgini',
+'whatlinkshere-filters' => 'Filtri',
# Block/unblock
'blockip' => "Blocca l'ûtente",
@@ -905,21 +1037,21 @@ $1',
'blockipsuccesssub' => 'Affermaçion arriescïa',
'blockipsuccesstext' => "[[Special:Contributions/$1|$1]] o l'è stæto affermoö.
<br />Veddi [[Special:IPBlockList|Lista de i indirissi IP affermæ]] te cangia e affermaçioin.",
-'ipblocklist' => "Lista de l'indirissi IP e nommi d'ûtenti bloccæ",
-'blocklistline' => "$1, $2 o l'ha affermoö $3 fin a $4",
+'ipblocklist' => 'Utenti blocæ',
'anononlyblock' => 'Non ti tè registroö. Non ti peu fanni de i cangiamenti! (Registräse o non vegne ninte!)',
'emailblock' => 'posta elettronega affermaä',
'ipblocklist-empty' => "A lista de e affermaçioin a l'è veua.",
'blocklink' => 'Afermaçion',
'unblocklink' => 'sblòcca',
+'change-blocklink' => 'càngia blòcco',
'contribslink' => 'Contribuçioìn',
'autoblocker' => 'Affermoö automaticamente perchè o teu indirisso IP o l\'è stæto usöo da "[[User:$1|$1]]" neuvamente. A razon dæta pe affermâ $1 a l\'è stæta:
"$2"',
-'blocklogpage' => 'Affermaçioin',
-'blocklogentry' => "O s'ha bloccòu [[$1]] scinn-a $2 $3",
+'blocklogpage' => 'Blòcchi',
+'blocklogentry' => "l'a blocòu [[$1]] pe in periodo de $2 $3",
'blocklogtext' => "Sta chie a l'è unn-a lista de affermaçioin fæte e levæ.
I indirissi IP affermæ automaticamente non son consideræ.
-Veddi a [[Special:IPBlockList|Lista de i indirissi IP affermæ]] pe e informaçioin neuve.",
+Veddi a [[Special:BlockList|Lista de i indirissi IP affermæ]] pe e informaçioin neuve.",
'block-log-flags-anononly' => 'Utenti anonimmi soö',
'block-log-flags-nocreate' => 'Neuve registrascioin non son permisse',
'block-log-flags-noautoblock' => "O blocco automatego o non l'è attïvo",
@@ -967,7 +1099,7 @@ Inte 'sti câxi, se o se vêu fâ coscì, o se deive stramûâ ò azzonze manual
'delete_and_move_reason' => 'Levoö pe fâ röso pe un remescio',
# Export
-'export' => 'Esportâ paggine',
+'export' => 'Espòrta pàgine',
# Namespace 8 related
'allmessages' => 'Messaggi do scistemma',
@@ -996,37 +1128,51 @@ Inte 'sti câxi, se o se vêu fâ coscì, o se deive stramûâ ò azzonze manual
'tooltip-pt-logout' => 'Sciortîa (logout)',
'tooltip-ca-talk' => 'Fanni védde e discuscioìn in sca pagina.',
'tooltip-ca-edit' => "O se pêu modificâ sta pagina. Pe piaxei scia dêuvie o pommello d'anteprìmma primma de sarvâla.",
-'tooltip-ca-addsection' => "Azzonze 'n commento a 'sta discûscion chì.",
+'tooltip-ca-addsection' => "Iniçia 'na nêuva seçión",
'tooltip-ca-viewsource' => "'Sta pagina a l'è protetta, ma ti peu védde o sêu còdice sorgente.",
+'tooltip-ca-history' => 'Verscioìn précedenti da pàgina',
'tooltip-ca-protect' => "Proteze 'sta paggina",
-'tooltip-ca-delete' => "Scassa 'sta paggina",
+'tooltip-ca-delete' => 'Scancella sta pàgina',
'tooltip-ca-move' => "Sposta 'sta paggina (cangia tittolo)",
'tooltip-ca-watch' => "Azónzi 'sta pagina a-a teu lista d'oservaçion",
-'tooltip-ca-unwatch' => "Levâ 'sta paggina d'inta têu lista d'osservassion speçiâ",
+'tooltip-ca-unwatch' => "Levâ sta pàgina d'inta têu lista d'oservaçion speçiâ",
'tooltip-search' => 'Çerca {{SITENAME}}',
-'tooltip-n-mainpage' => 'Vixìta a pagina prinçipâ',
+'tooltip-search-go' => "Vànni inte 'na pàgina co-o sto tìtolo, se a l'existe",
+'tooltip-search-fulltext' => 'Çerca sto testo in scie pàgine',
+'tooltip-p-logo' => 'Vìxita a pàgina prinçipâ',
+'tooltip-n-mainpage' => 'Vìxita a pagina prinçipâ',
+'tooltip-n-mainpage-description' => 'Vìxita a pàgina prinçipâ',
'tooltip-n-portal' => 'Descriçión do progetto, cöse se peu fâ, donde trovâ e cöse',
'tooltip-n-currentevents' => "Informaçioìn in sci fæti d'atualitæ",
'tooltip-n-recentchanges' => "L'ùrtimi cangiaménti into scîto",
'tooltip-n-randompage' => "Fanni vedde 'na pagina a brettio.",
'tooltip-n-help' => "Pagine d'agiùtto",
'tooltip-t-whatlinkshere' => 'Lista de tùtte e pagine che son colegæ a sta chì.',
-'tooltip-t-contributions' => "Lista de-e contribûssioîn de quest'ûtente",
-'tooltip-t-emailuser' => "Inviâ 'n messaggio e-mail a quest'ûtente",
+'tooltip-t-recentchangeslinked' => 'Ùrtimi càngi de pàgine colegæ a quésta',
+'tooltip-feed-atom' => 'Feed Atom pe sta pàgina',
+'tooltip-t-contributions' => "Lista de-e contribûssioîn de quest'utente",
+'tooltip-t-emailuser' => "Inviâ 'n messaggio e-mail a quest'utente",
'tooltip-t-upload' => 'Carega inmàgini ò archivi moltimedia',
'tooltip-t-specialpages' => 'Lista de tùtte e pagine speçiâli',
-'tooltip-ca-nstab-user' => "Veddi a paggina d'ûtente",
+'tooltip-t-print' => 'Versción da stànpa pe sta pàgina',
+'tooltip-t-permalink' => 'Colegaménto fisso a sta revixión da pàgina',
+'tooltip-ca-nstab-main' => 'Véddi a vôxe',
+'tooltip-ca-nstab-user' => "Veddi a pàgina d'utente",
+'tooltip-ca-nstab-special' => "Sta chi l'è 'na pàgina speciâle e a no peu êse cangiâ",
'tooltip-ca-nstab-project' => 'Veddi a paggina de servissio',
'tooltip-ca-nstab-image' => "Va a védde a pagina de l'inmàgine",
'tooltip-ca-nstab-template' => 'Veddi o template',
'tooltip-ca-nstab-help' => "Veddi a paggina d'agiûtto",
'tooltip-ca-nstab-category' => 'Veddi a paggina da categorîa',
-'tooltip-minoredit' => 'Segnalâ comme modiffica minô',
-'tooltip-save' => 'Sârva e modiffiche',
+'tooltip-minoredit' => 'Segnalâ comme cangiaménto minô',
+'tooltip-save' => 'Sarva i cangiaménti',
'tooltip-preview' => 'Anteprimma de-e modiffiche (conseggiâa, primma de sarvâ!)',
'tooltip-diff' => "Ammîa e modiffiche che ti ti gh'æ fæto a-o testo.",
-'tooltip-compareselectedversions' => "Ammîa e differense tra e doe verscioîn selessionæ de 'sta paggina chì.",
-'tooltip-watch' => "Azzonze 'sta paggina a-a têu lista d'osservæ speçiâli",
+'tooltip-compareselectedversions' => 'Amia e diferense tra e doê verscioìn seleçionæ de sta paggina chì.',
+'tooltip-watch' => "Azónzi sta pàgina a-a têu lista d'osservæ speçiâli",
+'tooltip-rollback' => "\"Rollback\" scancella i cangiaménti de sta pàgina de l'ùrtimo ch'o l'à fæto 'n càngio co-in click do ràtto",
+'tooltip-undo' => '"Anùlla" o pérmette de anulâ sto cangiaménto e arve il modolo de cangiaménto into mòddo anteprìmma. Ti peu ascì métte a raxón inte l\'ògétto do cangiaménto.',
+'tooltip-summary' => "Scrîvi 'na scintezi",
# Stylesheets
'common.css' => '/** o codiçe css scrïo chie o vegne azzounto in tutte e pagine */',
@@ -1036,16 +1182,15 @@ Inte 'sti câxi, se o se vêu fâ coscì, o se deive stramûâ ò azzonze manual
'lastmodifiedatby' => "Sta pagina a l'è stæta cangiâ l'urtima votta a e $2 do $1 da $3.",
# Browsing diffs
-'previousdiff' => '↠Differensa preçedente',
-'nextdiff' => 'Proscima diff →',
+'previousdiff' => '↠Diferensa precedénte',
+'nextdiff' => 'Pròscima diferensa →',
# Media information
-'thumbsize' => 'Dimescion da a imàginetta:',
-'file-info-size' => '$1 × $2 pixel, dimenscioîn: $3, tippo MIME: $4',
-'file-nohires' => '<small>No ghe son verscioîn a resolûxon ciû ærta.</small>',
-'svg-long-desc' => "archivvio in formato SVG, dimensioîn nominâli $1 × $2 pixel, dimension de l'archivvio: $3",
-'show-big-image' => "Verscion d'ærta resolûxon",
-'show-big-image-thumb' => "<small>Dimensioîn de 'st'anteprimma: $1 × $2 pixel</small>",
+'thumbsize' => 'Dimescion da a imàginetta:',
+'file-info-size' => '$1 × $2 pixel, dimenscioîn: $3, tippo MIME: $4',
+'file-nohires' => '<small>No ghe son verscioîn a resolûxon ciû ærta.</small>',
+'svg-long-desc' => "archivio in formato SVG, dimenscioìn nominâli $1 × $2 pixel, dimenscioìn de l'archivio: $3",
+'show-big-image' => "Verscion d'ærta resolûxon",
# Special:NewFiles
'newimages' => 'Gallerîa de nêuvi archivvi',
@@ -1060,17 +1205,23 @@ L'ingansi sucescivi, in scia mæxima riga, van conscideræ comme eceçioìn (pag
# Metadata
'metadata' => 'Metadati',
-'metadata-help' => "'St'archivvio o contegne informassion adissionâ, fòscia missa da-a fotocamera ou da-o scanner dêuviòu pe creâla ou digitalissâla. Se l'archivvio o l'è stæto modificòu, çerti dettaggi porieivan no corisponde a-e modiffiche apportæ.",
+'metadata-help' => "St'archivio o contegne informaçioìn in ciù, fòscia missa da-a fotocamera ò dò-u scanner adêuviòu pe creâla ò digitalissâla. Se l'archivio o l'è stæto cangiòu, çerti detàli porieivan no corisponde a-i cangi aportæ.",
'metadata-expand' => 'Fâ vedde dettaggi',
'metadata-collapse' => 'Asconde dettaggi',
-'metadata-fields' => "I campi relativi a-i metadati EXIF elencæ inte 'sto messaggio sajàn visti inscia paggina de l'immaggine quande a tabella di metadati a seggie presentâ inta forma breive. Pe l'impostassion predefinîa, i âtri campi sajàn ascoxi.
+'metadata-fields' => "I cànpi relativi a-i metadati EXIF elencæ inte 'sto messaggio saiàn in sciâ pàgina de l'inmàgine quande a tabella di metadati a saiâ inta forma cùrta. Cómme predefinîo, i âtri cànpi saiàn ascozi.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-datetime' => 'Data e öa do cangiamento do papê',
@@ -1079,13 +1230,13 @@ L'ingansi sucescivi, in scia mæxima riga, van conscideræ comme eceçioìn (pag
'exif-filesource' => 'Reixe do papê',
# External editor support
-'edit-externally' => "Modiffica 'st'archivvio co unn-a applicassion esterna",
-'edit-externally-help' => "Pe ciû informassion consûltâ l' [http://www.mediawiki.org/wiki/Manual:External_editors istrûssioîn] (in ingleise)",
+'edit-externally' => "Càngia st'archivio con 'na applicaçión esterna",
+'edit-externally-help' => 'Pe avéi ciù informaçioìn amia e [//www.mediawiki.org/wiki/Manual:External_editors istruçioìn] (in ingléize)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'Tùtti',
-'namespacesall' => 'Tûtti',
-'monthsall' => 'Tûtti',
+'namespacesall' => 'Tùtti',
+'monthsall' => 'tùtti',
# Multipage image navigation
'imgmultipageprev' => '↠Pagina de primma',
@@ -1117,10 +1268,26 @@ L'ingansi sucescivi, in scia mæxima riga, van conscideræ comme eceçioìn (pag
'watchlisttools-edit' => 'Veddi e modiffica a lista',
'watchlisttools-raw' => 'Modiffica a lista in formato testo',
+# Core parser functions
+'duplicate-defaultsort' => 'Atençión: a ciâve de ordinaménto predefinîa "$2" va in çimma a quella de prìmma "$1".',
+
# Special:Version
'version' => 'Verscion',
# Special:SpecialPages
'specialpages' => 'Pagine speçiâli',
+# External image whitelist
+'external_image_whitelist' => " #Lasciâ sta rîga cómme a l'é<pre>
+#Inserî i pessi de esprescioìn regolari (sôlo a pàrte che va fra //) di segoito
+#Ste chi saiàn misse a confronto co-i indirìssi URL de inmàgini esterne (hotlinked)
+#E corispondense saiàn mostrate cómme inmàgini, âtriménti saiâ mostròu sôlo in colegaménto
+#E righe che iniçian con # son consideræ coménti
+#A diferensa tra maioscole e minoscole a no l'è significatîva
+
+#Inserî sovia sta rîga tùtti i frammenti de regex. Lasciâ sta rîga cómme a l'é</pre>",
+
+# Special:Tags
+'tag-filter' => 'Filtra pe [[Special:Tags|etichetta]]:',
+
);
diff --git a/languages/messages/MessagesLiv.php b/languages/messages/MessagesLiv.php
new file mode 100644
index 00000000..d2a6f064
--- /dev/null
+++ b/languages/messages/MessagesLiv.php
@@ -0,0 +1,783 @@
+<?php
+/** Līvõ kēļ (Līvõ kēļ)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Warbola
+ */
+
+$fallback = 'et';
+
+$messages = array(
+# Dates
+'sunday' => 'pivÄpÇŸva',
+'monday' => 'ežžõmpǟva',
+'tuesday' => 'tūoiznapǟva',
+'wednesday' => 'kuolmõndpǟva',
+'thursday' => 'neļļõndpǟva',
+'friday' => 'brēḑig',
+'saturday' => 'pūolpǟva',
+'sun' => 'Piv',
+'mon' => 'Ežž',
+'tue' => 'TÅ«o',
+'wed' => 'Kuo',
+'thu' => 'Neļ',
+'fri' => 'Brē',
+'sat' => 'PÅ«o',
+'january' => 'janvÄr',
+'february' => 'februÄr',
+'march' => 'märts',
+'april' => 'april',
+'may_long' => 'maij',
+'june' => 'jūnij',
+'july' => 'jūlij',
+'august' => 'august',
+'september' => 'septembõr',
+'october' => 'oktÅbõr',
+'november' => 'novembõr',
+'december' => 'detsembõr',
+'january-gen' => 'JanvÄr',
+'february-gen' => 'FebruÄr',
+'march-gen' => 'Märts',
+'april-gen' => 'April',
+'may-gen' => 'Maij',
+'june-gen' => 'JÅ«nij',
+'july-gen' => 'JÅ«lij',
+'august-gen' => 'August',
+'september-gen' => 'Septembõr',
+'october-gen' => 'OktÅbõr',
+'november-gen' => 'Novembõr',
+'december-gen' => 'Detsembõr',
+'jan' => 'jan',
+'feb' => 'feb',
+'mar' => 'mär',
+'apr' => 'apr',
+'may' => 'maij',
+'jun' => 'jūnij',
+'jul' => 'jūlij',
+'aug' => 'aug',
+'sep' => 'sept',
+'oct' => 'okt',
+'nov' => 'nov',
+'dec' => 'dets',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|KategÅrij|KategÅrijõd}}',
+'category_header' => 'Lēḑõd kategÅrijs "$1"',
+'subcategories' => 'Allizt KategÅrijd',
+'category-media-header' => 'MÄ“dij failõd kategÅrijs "$1"',
+'category-empty' => 'SÄ«esõ kategÅrijs äb Å«o mitÄ«d lÄ«edpÅ«oltõ äbkÄ mÄ“dij-failõ',
+'hidden-categories' => '{{PLURAL:$1|JarÄ vaÅ—tõd kategÅrij|JarÄ vaÅ—tõd kategÅrijõd}}',
+'category-subcat-count' => '{{PLURAL:$2|SÄ«esõ kategÅrijs um setku se alli kategÅrij.|SÄ«esõ kategÅrijs Ätõ {{PLURAL:$1|alli kategÅrij|$1 alÄ«zt kategÅrijõ}}, kubsõ $2.}}',
+'category-article-count' => '{{PLURAL:$2| Andtõd kategÅrijs um setku se lēḑ.|{{PLURAL:$1|Se lēḑ| Ne $1 lÄ«edtõ Ätõ}} sÄ«esõ kategÅrijs ( kubsõ) $2.}}',
+'category-file-count' => '{{PLURAL:$2| Andtõd kategÅrijs um setku se lēḑ.|{{PLURAL:$1|Se lēḑ| Ne $1 lÄ«edtõ Ätõ}} sÄ«esõ kategÅrijs ( kubsõ) $2.}}',
+'listingcontinuesabbrev' => 'jatk.',
+'noindex-category' => 'Lēḑõd bäz indeksõ',
+
+'about' => 'Titõl-tīetõkst',
+'newwindow' => '(lÇŸb vÄldiž Å«dsõ läbÅ«s)',
+'cancel' => ' Kitõgid jarÄ',
+'mytalk' => 'NõvpidÄmi',
+'navigation' => 'Navigīerimi',
+
+# Cologne Blue skin
+'qbfind' => 'Vȯtšõgid',
+'faq' => 'SKK',
+
+# Vector skin
+'vector-action-addsection' => 'Pangid jūrõ tēma',
+'vector-action-delete' => 'KiÅ¡tÄntõgid jarÄ',
+'vector-action-move' => 'Vīž jarÄ',
+'vector-action-protect' => 'Kaitsõmi',
+'vector-view-create' => 'LÅ«o',
+'vector-view-edit' => 'Redigīer',
+'vector-view-history' => 'NägÅ£ istÅrijõ',
+'vector-view-view' => 'Vaņ',
+'vector-view-viewsource' => 'Vaņ ovÄt tekstõ',
+'actions' => 'TÄ«emizt',
+'namespaces' => 'Nim-rūimõd',
+'variants' => 'Varianţõd',
+
+'errorpagetitle' => 'VigÄ',
+'returnto' => 'Li tÄgiž lÄ«ed $1 jÅ«rõ.',
+'tagline' => 'OvÄt: {{SITENAME}}',
+'help' => 'OpÄtõks',
+'search' => 'Vȯtšimi',
+'searchbutton' => 'Vȯtšimi',
+'searcharticle' => 'Li',
+'history' => 'KÄ“ratõks istÅrij',
+'history_short' => 'IstÅrij',
+'printableversion' => 'Drukkimiz versij',
+'permalink' => 'Iggi siḑīm',
+'edit' => 'Redigīer',
+'create' => 'LÅ«o',
+'editthispage' => 'RedigÄ«er siedÄ lÄ«edtõ',
+'delete' => 'KiÅ¡tÄntõgid jarÄ',
+'protect' => 'Kaitsõmi',
+'protect_change' => 'mõitiņt',
+'newpage' => 'Ūž lēḑ',
+'talkpage' => 'SÄ«e kÄ“ratõks nõvpidÄmi',
+'talkpagelinktext' => 'NõvpidÄmi',
+'personaltools' => 'Ummizt tÄ«eažÄd',
+'talk' => 'NõvpidÄmi',
+'views' => 'vaņtlimiži',
+'toolbox' => 'TÄ«eažÄd',
+'otherlanguages' => 'Mūši kīelši',
+'redirectedfrom' => '(Jeddõpēḑõn sÅtõd lÄ«edstõ $1)',
+'redirectpagesub' => 'Jeddõpēḑõn sÅtimiz lēḑ',
+'lastmodifiedat' => 'Perri mõitiņtimi: $2 $1',
+'jumpto' => 'Li:',
+'jumptonavigation' => 'navigīerimiz kast',
+'jumptosearch' => 'Vȯtšõgid',
+
+# 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' => 'Iļ {{SITENAME}}',
+'aboutpage' => 'Project:Tītõl tieutõkst',
+'copyright' => 'AmÄ tekstõ um kÈ­lbatõmist litsents #$1 pierrõ',
+'copyrightpage' => '{{ns:project}}:Autorõigõmt',
+'currentevents' => 'Suggimizt',
+'currentevents-url' => 'Project:Suggimizt',
+'disclaimers' => 'Kūondõkst',
+'disclaimerpage' => 'Project:Kūondõkst',
+'edithelp' => 'RedigÄ«erimiz opÄtõks',
+'edithelppage' => 'Help:RedigÄ«erimiz_opÄtõks',
+'helppage' => 'Help:SižÄli',
+'mainpage' => 'Eḑḑilēḑ',
+'mainpage-description' => 'Eḑḑilēḑ',
+'portal' => 'Kubgõnd vǟrõd',
+'portal-url' => 'Project:Kubgõnd vǟrõd',
+'privacy' => 'PrivÄtõm',
+'privacypage' => 'Project:PrivÄtõm',
+
+'badaccess' => 'Õigõm pūtõb',
+
+'retrievedfrom' => 'Ulzõ vȯtštõd "$1"',
+'youhavenewmessages' => 'Täddõn um $1 ($2)',
+'newmessageslink' => 'ūži tīeūţidi',
+'newmessagesdifflink' => 'perri mõitõks',
+'editsection' => 'redigīer',
+'editold' => 'redigīerõgid',
+'viewsourceold' => 'vaņ ovÄt-tekstõ',
+'editlink' => 'redigīerõgid',
+'viewsourcelink' => 'vaņ ovÄt-tekstõ',
+'editsectionhint' => 'Redigīer jaggõ $1',
+'toc' => 'SižÄli',
+'showtoc' => 'nägţõgid',
+'hidetoc' => 'vÅrõgid jarÄ',
+'site-rss-feed' => '$1 RSS sīeţ',
+'site-atom-feed' => '$1 Atom sīeţ',
+'page-rss-feed' => '"$1" RSS sīeţ',
+'page-atom-feed' => '"$1" Atom sīeţ',
+'red-link-title' => '$1 äb ūo vel kēratõd',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Kēratõks',
+'nstab-user' => 'Kȭlbatijiz lēḑ',
+'nstab-special' => 'Eņtšvīţi lēḑ',
+'nstab-project' => 'Projekt lēḑ',
+'nstab-image' => 'BÄ«lda',
+'nstab-template' => 'Mall',
+'nstab-category' => 'KategÅrij',
+
+# General errors
+'missing-article' => " DatubÄz äb lieudõn kizdõd lÄ«ed ''$1'' $2 tekstõ. SÄ«kõks võib vȱlda mõitõkst agÄ istÅrij siḑīm jarÄ kiÅ¡tÄntõd lēḑ pÇŸlõ. Až ažÄd äb Å«o nei, võib vȱlda ka vigÄ sistÄ“ms. Siz um kÄ«tõmõst ka [[Special:ListUsers/sysop| administrÄtorõn]] ja tämmõn Ändamizt ka sÄ«e lÄ«ed internet adres",
+'missingarticle-rev' => '(redaktsij: $1)',
+'badtitle' => 'VigÄli pēļikÄ“ra',
+'badtitletext' => 'TÅdõd lÄ«ed pēļikÄ“ra vȯļ vigÄli, tijÄ agÄ tuoizõst kÄ«el versiÅnist agÄ vikist äbõigistiz sidtõd. SÄ«e sizzõl võib vȱlda ikÅ¡ agÄ jemīņ simbÅlõ, midÄ Ã¤b sÅ pēļikÄ“ris kÈ­lbatõ.',
+'viewsource' => 'Vaņ ovÄt tekstõ',
+
+# Login and logout pages
+'yourname' => 'KÈ­lbatijiznim:',
+'yourpassword' => 'Sallisõnä:',
+'yourpasswordagain' => 'KÄ“ratigid sallisõnÄ Å«tstõ:',
+'remembermypassword' => ' MÇŸdlõgid sallisõnÄ (kuņtÅ¡ $1 {{PLURAL:$1|päuvõ|päuvõ}})',
+'login' => 'Log sīezõ',
+'nav-login-createaccount' => 'Log sÄ«ezõ agÄ registrÄ«er kÈ­lbatijizõks',
+'loginprompt' => "SÄ«ezõ loggimizõks täddõn um Ändamizt lubÄ \"kÅ«kid\" (''cookies'') pierÄst",
+'userlogin' => 'SÄ«ezõ loggimi agÄ kÈ­lbatijiz-konto lÅ«omi',
+'logout' => 'Log ulzõ',
+'userlogout' => 'Log ulzõ',
+'nologin' => "Až täddõn äb ūo eņtš konto, '''$1'''.",
+'nologinlink' => 'Registrīerõgid täs',
+'createaccount' => 'Lūogid ūž konto',
+'gotaccount' => "Až täddõn jubÄ um eņtÅ¡ konto, '''$1'''.",
+'gotaccountlink' => 'Log sīezõ',
+'userlogin-resetlink' => 'Kas tÄ“g unÄ«ztõ jarÄ eņtÅ¡ sizzõlkÄ“ratimiz tÄ«etõkst?',
+'mailmypassword' => 'SÅtõgid e-kÄ“ras ūž sallisõnÄ',
+'loginlanguagelabel' => 'Kēļ: $1',
+
+# Edit page toolbar
+'bold_sample' => 'Razzi kēra',
+'bold_tip' => 'Razzi kēra',
+'italic_sample' => 'Slīp kēra',
+'italic_tip' => 'Slīp kēra',
+'link_sample' => 'Sidtõb pēļikēra',
+'link_tip' => 'SizÄļi siḑīm',
+'extlink_sample' => 'http://www.example.com siḑīm nim',
+'extlink_tip' => 'Uļļi siḑīm (algid undõgid ku um vȯlmizt http:// prefiks)',
+'headline_sample' => 'Pēļikēra',
+'headline_tip' => 'Ildõm 2 pēļikēra',
+'nowiki_sample' => 'KÄ“ratigid tÇŸnõ tekstõ bäz formÄtõ',
+'nowiki_tip' => 'Bäz vikipÄ“dij formÄtõ',
+'image_tip' => 'Sidtõb bildÄ',
+'media_tip' => 'Siḑīm fail jūrõ',
+'sig_tip' => 'Sin allikÄ“ra Äiga-spÄ«edolõks',
+'hr_tip' => 'HorizontÄli krÄ«pÅ¡ (kÈ­lbatõgid bäz tÄ“rõmizt)',
+
+# Edit pages
+'summary' => 'Kubbõ võtÄmi:',
+'subject' => 'Pēļikēra:',
+'minoredit' => 'Se um ikÅ¡ piÅ¡ki parÄmtimi',
+'watchthis' => 'Vaņ iļ siedÄ lÄ«edpÅ«oltõ',
+'savearticle' => 'Sa-gläbbõmi',
+'preview' => 'Jedmõl-vaņtlimi',
+'showpreview' => 'Nägţ jeddõl vaņtlimizt',
+'showdiff' => 'Nägţ mõitõkši',
+'anoneditwarning' => "'''Kūondõks:''' Sa äb ūo sīezõ logtõd. Sin IP adres sa-gläbūbõd sīe līed redigīerimiz loggõs.",
+'summary-preview' => 'Rezimē jedmõl-vaņtlimi:',
+'newarticle' => '(Ūž)',
+'newarticletext' => "Līedtõ, kus siḑīm sīnda vīž, äb ūo vel.
+LÄ«edpÅ«ol lÅ«omizõks täddõn um tÇŸnõ alÄ«zõ kastõz kÄ“ratimist (mÅ« tieut [[{{MediaWiki:Helppage}}|opÄtõksõst]]).
+Až jutÄ«ztõ tÇŸnõ mõţmõt, glõbž brauzer '''tÄgiž''' - knÄ«epkiz pÇŸlõ.",
+'noarticletext' => 'Sīesõ līeds paldīž tekstõ äb ūo.
+Sa võid [[Special:Search/{{PAGENAME}}|vȯtšõ pēļizkÄ“ra frÄzõ]] mÅ«Å¡ti lēḑist,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} vȯtšõ tämstõ log failidi],
+agÄ [{{fullurl:{{FULLPAGENAME}}|action=edit}} sÄ«e lÄ«ed īž lÅ«odõ]</span>.',
+'noarticletext-nopermission' => 'Sīesõ līeds paldīž tekstõ äb ūo.
+Sa võid [[Special:Search/{{PAGENAME}}|vȯtšõ pēļizkÄ“ra frÄzõ]] mÅ«Å¡ti lēḑist,
+<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} vȯtšõ tämstõ log failidi],
+agÄ [{{fullurl:{{FULLPAGENAME}}|action=edit}} sÄ«e lÄ«ed īž lÅ«odõ]</span>.',
+'previewnote' => "''' Algid undõgid, ku se um setku jedmõl-vaņtlimi!'''
+Sin redigīerimizt äb ūo vel sa-gläbdõd !",
+'editing' => 'Redigīerimiz pǟl um $1',
+'editingsection' => 'Redigīerimiz pǟl um $1 sektsij līedst',
+'copyrightwarning' => "PidÄgid mÄ«elsõ, ku amÄ täd kubsõtÄ«e võrgõ-pÄikal {{SITENAME}} luggõbõd ulzõ andtõd litsents $2 allõ (vaņ ka $1). Až tÄ“g äb tÅ, ku täd kÄ“ratõd tekstõ bäz zÇŸlõmizt redigÄ«erõbõd ja eņtÅ¡ jarÄ-nÄ“miz pierrõ kÈ­lbatõbõd, siz algid siedÄ tÇŸnõ sa-gläbbõgid. <br />
+TÄ“g tÈ­itat ka, ku kÄ“ratiztõ sÄ«e īž agÄ võtÄ«ztõ sÄ«e ovÄtõst, kust kopierimi äb Å«o kÄ«eldtõd. <br />
+'''Algid sÅtõgid autorõigõmtõks kaitstõd materiÄlidi bäz lubbõ!'''",
+'templatesused' => 'Sīesõ līeds um kȭlbatõd {{PLURAL:$1|se mall|ne mallõd}} :',
+'templatesusedpreview' => 'Jedmõl-vaņtlimizõs {{PLURAL:$1|kȭlbatõb mall|kȭlbatõbõd mallõd}} :',
+'template-protected' => '(kaitstõd)',
+'template-semiprotected' => '(ikÅ¡ rÅz kaitstõd)',
+'hiddencategories' => 'This page is a member of {{PLURAL:$1|1 hidden category|$1 hidden categories}}:
+Se lēḑ um {{PLURAL:$1|Ä«ds jarÄ vaÅ—tõd kategÅrijõs|$1 jarÄ vaÅ—tõd kategÅrijõs }}:',
+'permissionserrorstext-withaction' => 'Sinnõn äb Å«o õigõmt $2 {{PLURAL:$1||}} pierÄst:',
+'recreate-moveddeleted-warn' => "'''KÅ«ondõks: TÅtõ lÅ«odõ Å«tstõ lÄ«edpÅ«oltõ, mis um jo vÄrald jarÄ kiÅ¡tÄntõd.'''
+Mõtlõgid, kas lÄ«ed Å«tstõ lÅ«omi um jõvÄ mõtk. LÄ«ed jedmõlizt jarÄ kiÅ¡tÄntimizt ja jarÄ-vÄ«mizt :",
+'moveddeleted-notice' => 'Se lēḑ um jarÄ kiÅ¡tÄntõd. Allõ-pÅ«ol um nägţõd lÄ«ed jarÄ kiÅ¡tÄntimiz ja jarÄ vÄ«miz.log.',
+
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => "'''Kūondõks:''' Kizdõd mallõd lug um pa-jennõks sūr. Mingiži mallidi äb sŠnägţõ.",
+'post-expand-template-inclusion-category' => 'Lēḑõd, kus um mallõd limīt täuž',
+'post-expand-template-argument-warning' => "'''' KÅ«ondõks:''' Se lēḑ sizzõl um amÄ veitõ umīţõgid ikÅ¡ mall argument, mis um pa-jennõks sÅ«r. Ne argumentõd um ulzõ jettõd.",
+'post-expand-template-argument-category' => 'Lēḑõd missõs Ätõ mall pÅ«tõbõd argumentõd',
+
+# History pages
+'viewpagelogs' => 'Vaņ sīe līed logīdi',
+'currentrev-asof' => 'Perri redaktsij: $1',
+'revisionasof' => 'Redaktsij',
+'revision-info' => 'Redaktsij Äigald $1 kÈ­lbatijiz $2 pierrõ',
+'previousrevision' => 'Juo vaņīmi redaktsij',
+'nextrevision' => 'Jo ūž redaktsij',
+'currentrevisionlink' => 'Perri redaktsij',
+'cur' => 'perri',
+'last' => 'jedmõli',
+'histlegend' => "Pangid merkid versijõd pÇŸlõ, midÄ tÅtõ lÄ«dzinţõ ja glõbžõgid lÄ«dzinÅ£imiz knÄ«epkizt. <br />
+Legend: '''({{int:cur}})''' = vaiţīd līdzinţõmizõks lǟndz redaktsijõks,, '''({{int:last}})''' = vaiţīd līdzinţõmizõks jedmiliz redaktsijõks, '''{{int:minoreditletter}}''' = piški mõitõks.",
+'history-fieldset-title' => 'IstÅrij vaņtlimi',
+'history-show-deleted' => 'Setku jarÄ kiÅ¡tÄntõd',
+'histfirst' => 'Ežmizt',
+'histlast' => 'Perrizt',
+
+# Revision feed
+'history-feed-item-nocomment' => '$1 - $2',
+
+# Revision deletion
+'rev-delundel' => 'nägÅ£/vaÅ— jarÄ',
+'revdelete-logentry' => 'mõitiņtīz līed [[$1]] redaktsij nǟdõbõzt',
+'revdel-restore' => 'Mõitiņt nǟdõbõzt',
+'revdel-restore-deleted' => 'jarÄ kiÅ¡tÄntõd redaktsijõd',
+'revdel-restore-visible' => 'nǟdõbõd redaktsijõd',
+'revdelete-content' => 'sižÄli',
+'revdelete-hid' => '$1 jarÄ vaÅ—tõd',
+'revdelete-log-message' => '{{PLURAL:$2| Īd|$2}} redaktsijõ $1',
+
+# Merge log
+'revertmerge' => 'KÄ«eld jarÄ kubbõ vieddimi',
+
+# Diffs
+'history-title' => 'LÄ«ed "$1" mõitõkst istÅrij',
+'difference' => '(Vaiţīd redaktsijõd vail)',
+'lineno' => 'RÄ«nda $1:',
+'compareselectedversions' => 'Līdzinţ vēļdõt redaktsijḑi',
+'editundo' => 'kiÅ¡tÄnt jarÄ',
+'diff-multi' => '({{PLURAL:$1|Īdtõ|$1}} vail-vȯlbizt {{PLURAL:$2|īd|$2}} kȭlbatijiz redaktsijõ äb nägţõbõd.)',
+
+# Search results
+'searchresults' => 'VȯtÅ¡imiz rezultÄtõd',
+'searchresults-title' => 'VȯtÅ¡imiz "$1" rezultÄtõd',
+'searchresulttext' => 'MÅ«dõ tieutõkst iļ {{SITENAME}} vȯtÅ¡imiz pierÄst vaņtligid [[{{MediaWiki:Helppage}}| opÄtõksõst]]',
+'searchsubtitle' => "VȯtÅ¡Ä«ztõ frÄzõ '''[[:$1]]''' ( [[Special:Prefixindex/$1|amÄd sõnÄdõks ''$1'' irgõbõd lēḑõd]]{{int:pipe-separator}}
+[[Special:WhatLinksHere/$1|amÄd lēḑõd, mis sizzõl um siḑīmḑi kÄ“ratõks ''$1'' jÅ«rõ]])",
+'searchsubtitleinvalid' => "TÄ“g vȯtÅ¡Ä«ztõ frÄzõ '''$1'''",
+'notitlematches' => 'Kēratõks pēļikēris vȯtštõd sõņḑi äb ūo lieudtõd',
+'notextmatches' => 'Kēratõks sizzõl vȯtštõd tekstõ äb lieudtõd',
+'prevn' => '{{PLURAL:$1|jedmõli|jedmõlizt $1}}',
+'nextn' => '{{PLURAL:$1|pierrõ-tulbi|pierrõ-tulbizt $1}}',
+'prevn-title' => '{{PLURAL:$1|Jedmõli rezultÄt|Jedmõlizt $1 rezultÄtõ}}',
+'nextn-title' => '{{PLURAL:$1|Jedmõli rezultÄt|Jedmõlizt $1 rezultÄtõ}}',
+'shown-title' => 'NägÅ£ lÄ«ed iļ $1 {{PLURAL:$1|rezultÄt|rezultÄtõ}}',
+'viewprevnext' => 'Nägţõgid ($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-exists' => "'''Lēḑ pēļizkēraks \"[[:\$1]]\" um vȯlmizõs.'''",
+'searchmenu-new' => "'''Lūo lēḑ pēļizkēraks \"[[:\$1]]\".'''",
+'searchprofile-articles' => 'SižÄliz lēḑõd',
+'searchprofile-project' => 'Ab ja projekt lēḑõd',
+'searchprofile-images' => 'Multimēdij',
+'searchprofile-everything' => 'Tikkiž',
+'searchprofile-advanced' => 'Jo akurÄt vȯtÅ¡imi',
+'searchprofile-articles-tooltip' => 'Vȯtšõgid nim-rūimstõ $1',
+'searchprofile-project-tooltip' => 'Vȯtšõgid nim-rūimstõ $1',
+'searchprofile-images-tooltip' => 'Fail vȯtšimi',
+'searchprofile-everything-tooltip' => 'Vȯtšõgid amÄ sižÄliz sizÄld (ka nõvpidÄmiz-lēḑõd pÇŸld)',
+'searchprofile-advanced-tooltip' => 'Vȯtšõgid andtõd nim-rūimšti',
+'search-result-size' => '$1 ({{PLURAL:$2|1 sõnÄ|$2 sõnnõ}})',
+'search-result-category-size' => '{{PLURAL:$1|1 lēḑ|$1 lÄ«edpÅ«oltõ}} ({{PLURAL:$2|1 alÄ«z-kategÅrij|$2 alÄ«zt kategÅrijõ}}, {{PLURAL:$3|1 fail|$3 failõ}})',
+'search-redirect' => '($1 jeddõpēḑõn sÅtimi)',
+'search-section' => '(alli jag $1)',
+'search-suggest' => 'Kas mõtliztõ: $1',
+'search-interwiki-caption' => 'SõzÄr-projektõd',
+'search-interwiki-default' => '$1 rezultÄtõd:',
+'search-interwiki-more' => ' (vel)',
+'search-mwsuggest-enabled' => 'jeddõpandõkstõks',
+'search-mwsuggest-disabled' => 'jeddõpandõkši äb ūo',
+'searchrelated' => 'sidtõd',
+'searchall' => 'tikkiž',
+'showingresultsheader' => "{{PLURAL:$5|'''$1''' '''$3'''-st rezultÄtõst|RezultÄtõd '''$1–$2''' '''$3'''-st}} kizzimizõn '''$4'''",
+'nonefound' => "'''Pangid tÇŸdõl''': Vȯtšõbõd set mingizt nim-rÅ«imõd sizÄld. Až tÄ“g tÅgid vȯtšõ amÅ¡ti nim-rÅ«imÅ¡ti (ka nõvpidÄmiz lēḑõd, mallõd, jnj sizÄld) kÈ­lbatõgid kizzimiz jedsõ prefiksõ ''all:''",
+'search-nonefound' => 'Vȯtšimizõn vȯtšimi äb lieudtõd vastūkst.',
+'powersearch' => 'Juo akurÄt vȯtÅ¡imi',
+'powersearch-legend' => ' Juo akurÄt vȯtÅ¡imi',
+'powersearch-ns' => 'Vȯtšimi nim-rūimšti:',
+'powersearch-redir' => 'Jeddõpēḑõn sÅtimizt nimkÄ“ra',
+'powersearch-field' => 'Vȯtšõgid frÄzõ',
+
+# Preferences page
+'preferences' => 'Mīeldõbõd ulzõ-vēļimizt',
+'mypreferences' => 'Min mīeldõbõd ulzõ-vēļimizt',
+'youremail' => 'E-kēra adres:',
+'yourrealname' => 'Õigi nim:',
+'prefs-help-email' => 'E-kÄ“ra adres sÄ«ezõ-panmi äb Å«o käsktõd, bet se laskÅ«b täddõn teļļõ sallisõnÄ määdõltõks, až tÄ“g unÅ«Å£ eņtÅ¡ sallisõnÄ jarÄ.',
+'prefs-help-email-others' => 'Võigõd ka pallõ tuoiztõn sin kÈ­lbatijiz- agÄ nõvpidÄmiz-lÄ«eds tädkõks kontakt võttõ, sÄ«e azmõl, ku täddõn vȯlkõ vajÄg eņtÅ¡ ummidi tieutidi nägţõ',
+
+# Groups
+'group-sysop' => 'AdministrÄtord',
+
+'grouppage-sysop' => '{{ns:project}}:AdministrÄtord',
+
+# User rights log
+'rightslog' => 'Kȭlbatijiz õigõmt log',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'siedÄ lÄ«edtõ mõitiņtõ',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|mõitõks|mõitõkst}}',
+'recentchanges' => 'Perrizt mõitõkst',
+'recentchanges-legend' => 'Perrizt mõitõkst',
+'recentchangestext' => 'Vaņ sīe līed pǟl tīedõd perīži mõitõkši.',
+'recentchanges-feed-description' => 'Vaņ iļ vikipēdijõz tīedõd perīži mõitõkši.',
+'recentchanges-label-newpage' => 'Se mõitõks luoi ūd līed',
+'recentchanges-label-minor' => 'Se um ikÅ¡ piÅ¡ki parÄmtimi',
+'recentchanges-label-bot' => 'Sīe mõitõks tei ikš robot',
+'recentchanges-label-unpatrolled' => 'Se mõitõks tēji vȯļ ikš robot',
+'rcnote' => "Allõ-pÅ«ol um andtõd {{PLURAL:$1| '''1''' mõitõks|'''$1''' mõitõks}} perÄ«z {{PLURAL:$2|pÇŸva|'''$2''' pÇŸva}}, Äigal kÄ“ratõd $5 kÄ«ela $4.",
+'rcnotefrom' => "Allõ-pÅ«ol um tÅ«odõd mõitõkst '''$2''' sÅņõst: (nägţõbõd amÄ jemīņ '''$1''' mõitõkst)",
+'rclistfrom' => 'NägÅ£ mõitõkÅ¡i sÅņõst: $1',
+'rcshowhideminor' => '$1 piÅ¡kizt parÄmtimizt',
+'rcshowhidebots' => '$1 robÅtõd',
+'rcshowhideliu' => '$1 sīezõ loggõnd kȭlbatijizt',
+'rcshowhideanons' => '$1 bäz nimmõ kȭlbatijizt',
+'rcshowhidepatr' => '$1 vaņtlõd mõitõkst',
+'rcshowhidemine' => '$1 min parÄmtimizt',
+'rclinks' => 'NägÅ£ perīži $1 mõitõkÅ¡i lÇŸndz $2 pÇŸva Äigal <br />$3',
+'diff' => 'vaiţ',
+'hist' => 'istÅrij',
+'hide' => 'VaÅ— jarÄ',
+'show' => 'Nägţ',
+'minoreditletter' => 'p',
+'newpageletter' => 'N',
+'boteditletter' => 'b',
+'rc-enhanced-expand' => 'NägÅ£ jo akurÄtidi ažḑi (Javascriptõ um vajÄg)',
+'rc-enhanced-hide' => 'VaÅ— jarÄ',
+
+# Recent changes linked
+'recentchangeslinked' => 'Sidtõd mõitõkst',
+'recentchangeslinked-toolbox' => 'Sidtõd mõitõkst',
+'recentchangeslinked-title' => '"$1" sidtõd mõitõkst',
+'recentchangeslinked-noresult' => 'Andtõd Äigal äb Å«o sidtõd lēḑis mõitõkÅ¡i tÄ«edõd.',
+'recentchangeslinked-summary' => "Täs um lugdõd andtõd lÄ«edstõ sidtõd (agÄ andtõd kategÅrij) lēḑis tÄ«edõd perrizt mõitõkst. Sin [[Special:Watchlist|iļ-vaņtlimiz.nimkÄ“ra]] lēḑõd Ätõ  ' ' ' razzistiz ' ' ' jeddõ tÅ«odõd.",
+'recentchangeslinked-page' => 'LÄ«ed nim:',
+'recentchangeslinked-to' => 'NägÅ£ sÄ«e azmõl mõitõkÅ¡i lēḑis, mis sÄ«en lÄ«ed pÇŸlõ sidÄbõd',
+
+# Upload
+'upload' => 'Fail ilzõ-lÅÅ£imi',
+'uploadlogpage' => 'Ilzõ-lÅÅ£imiz log',
+'filedesc' => 'Kubbõ võtÄmi:',
+'uploadedimage' => 'lÅÅ£iz ilzõ fail "[[$1]]"',
+
+'license' => 'Litsents:',
+'license-header' => 'Litsents:',
+
+# File description page
+'file-anchor-link' => 'BÄ«lda',
+'filehist' => 'Fail istÅrij',
+'filehist-help' => 'Glõbžõgid kÅ«pÇŸva ja kÄ«ela-aigõ, laz nÇŸdõg sÄ«esõ Äigal kÈ­lbatõd vȯnnõd fail versijõ.',
+'filehist-revert' => 'kÄ«erõgid tÄgiž',
+'filehist-current' => 'perri',
+'filehist-datetime' => 'KÅ«pÇŸva/KÄ«ela-Äiga',
+'filehist-thumb' => 'Piški bīlda',
+'filehist-thumbtext' => 'Piški bīlda $1 versijõst',
+'filehist-user' => 'kÈ­lbatiji',
+'filehist-dimensions' => 'SÅ«rit',
+'filehist-comment' => 'KomentÄr',
+'imagelinks' => 'Siḑīmõd fail jūrõ',
+'linkstoimage' => 'SÄ«en bÄ«ldan {{PLURAL:$1|sidÅ«b se lēḑ|$1 sidÄbõd ne lēḑõd}}:',
+'nolinkstoimage' => 'Äbmingi lēḑ äb sidÄ sÄ«e bÄ«lda pÇŸlõ',
+'sharedupload' => 'Se fail um võttõd ovÄtõst $1 ja siedÄ võib vȱlda kÈ­lbatõd ka mÅ«Å¡i projektis.',
+'sharedupload-desc-here' => 'Se um jaggõt fail ovÄtõst $1 ja siedÄ sÅb kÈ­lbatõ ka mÅ«Å¡i projektis. Fail sÇŸl vȯlbi [$2 seļţimi] um nägţõd allõ-pÅ«ol.',
+'uploadnewversion-linktext' => 'LÅţõgid ilzõ sÄ«e fail ūž versij',
+
+# Random page
+'randompage' => 'Bäz tīedõmõt tulbõ kēratõks',
+
+# Statistics
+'statistics' => 'Lug tīetõkst',
+
+'disambiguationspage' => 'Template:JarÄ-seļţimiz-lēḑ',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|bait|baitõ}}',
+'nmembers' => '$1 {{PLURAL:$1|nõtkõm| nõtkõmḑi}}',
+'prefixindex' => 'AmÄd pēļikÄ“rad prefiksõks',
+'usercreated' => 'Konto lÅ«omiz Äiga: $1 kÄ«ela $2',
+'newpages' => 'Ūd lēḑõd',
+'move' => 'Vīž',
+'movethispage' => 'ViedÄgid se lÄ«edpÅ«ol tuoiz nim alÄ',
+'pager-newer-n' => '{{PLURAL:$1|jo ūž 1|jo ūd $1}}',
+'pager-older-n' => '{{PLURAL:$1|jo vaņīmi 1|jo vaņīmizt $1}}',
+
+# Book sources
+'booksources' => 'RÅntõ vȯtÅ¡imi',
+'booksources-search-legend' => 'RÅntõ vȯtÅ¡imi',
+'booksources-go' => 'Li',
+
+# Special:Log
+'log' => 'Logūd',
+
+# Special:AllPages
+'allpages' => 'AmÄd lēḑõd',
+'alphaindexline' => '$1 sÅņist $2 sÅņõ',
+'prevpage' => 'Jedmõli lēḑ ($1)',
+'allpagesfrom' => ' NägÅ£ lÄ«edidi pēļizkÄ“rast sÅņõst:',
+'allpagesto' => ' NägÅ£ lÄ«edidi sÄ«e pēļikÄ“ra sÅņõ:',
+'allarticles' => 'AmÄd lēḑõd',
+'allpagessubmit' => 'Li',
+
+# Special:Categories
+'categories' => 'KategÅrijõd',
+
+# Special:LinkSearch
+'linksearch' => 'Uļļizt siḑīmõd',
+'linksearch-line' => '$1 um sidtõd līedst $2',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Kȭlbatijizt lūomiz log',
+'newuserlog-create-entry' => 'Ūž kȭlbatiji',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(nõtkõmd nimkēra)',
+
+# E-mail user
+'emailuser' => 'SÅtõgid sÄ«en kÈ­lbatijizõn e-kÄ“ra',
+
+# Watchlist
+'watchlist' => 'Iļ-vaņtlimiz nimkēra',
+'mywatchlist' => 'Min iļ-vaņtlimiz nimkēra',
+'watchlistfor2' => 'KÈ­lbatijiz $1 ($2) pierÄst',
+'addedwatchtext' => "Lēḑ \"[[:\$1]]\" um sin [[Special:Watchlist|iļ-vaņtlimiz nimkÄ“rrõz]] jÅ«rõ pandõd. Jeddõpēḑõn tulbõd mõitõkst sÄ«e lÄ«ed pÇŸl ja sÄ«enkõks sidtõd nõvpidÄmiz-lÄ«ed pÇŸl sugõbõd iļ-vaņtlimiz nimkÄ“rrõz Ät [[Special:RecentChanges|perrizt mõitõkst lÄ«ed pÇŸl]] kÄ“ratõd '''razÄ«z''' kÄ“raks.",
+'removedwatchtext' => 'Lēḑ "[[:$1]]" um [[Special:Watchlist|iļ-vaņtlimiz nimkÄ“rast]] jarÄ viedtõd.',
+'watch' => 'Vaņtligid iļ sīe',
+'watchthispage' => 'Vaņ iļ siedÄ lÄ«edpÅ«oltõ',
+'unwatch' => 'Lopta iļ-vaņtlimi',
+'watchlist-details' => ' {{PLURAL:$1|$1 lēḑ|$1 lÄ«edtõ}} Ätõ iļ-vaņtlimiz nimkÄ“ras, bäz luggõmõt nõvpidÄmiz-lÄ«edidi.',
+'wlshowlast' => 'Nägţ perīzt $1 stuņdõ $2 päuvõ $3',
+'watchlist-options' => 'Iļ-vaņtlimiz nimkēra pie-lēmizt',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Vaņtlimi iļ sīe...',
+'unwatching' => 'Iļ-vaņtlimiz loptimi...',
+
+# Delete
+'deletepage' => 'KiÅ¡tÄntõgid se lēḑ jarÄ',
+'confirmdeletetext' => 'TÄ“g tÅtõ datubÄzõst igÄniz jarÄ kiÅ¡tÄntõ lÄ«edtõ agÄ bildõ Ä«dskubs amÄ täm istÅrijõks. PÅlaks tÈ­itagid, ku tÄ“g tÅtõ siedÄ tuodÄ«stiz tÄ«edõ ja ku tÄ“g mÅ«oÅ¡tagid rezultÄtidi ja ku täd tÄ«emi um täs õigistiz [[{{MediaWiki:Policy-url}}|sizÄļiz kÈ­rda pierrõ]].',
+'actioncomplete' => 'AÅ¾Ä tÄ«edõd',
+'actionfailed' => 'Tīemi äb-vȯņštīz',
+'deletedtext' => ' "$1" um jarÄ kiÅ¡tÄntõd. JarÄ kiÅ¡tÄntõd lēḑõd Ät tÅ«odõd nimkÄ“ras $2.',
+'deletedarticle' => 'jarÄ kiÅ¡tÄntõd "[[$1]]"',
+'dellogpage' => 'JarÄ kiÅ¡tÄntimiz log',
+'deletecomment' => 'SÄ«:',
+'deleteotherreason' => 'MÅ« agÄ jÅ«rõ pandõb sÄ«:',
+'deletereasonotherlist' => 'Mū sī',
+
+# Rollback
+'rollbacklink' => 'kÄ«eld jarÄ (tÅ«o tÄgiž)',
+
+# Protect
+'protectlogpage' => 'Kaitsõmiz log',
+'protectedarticle' => 'kÄitsiz lÄ«ed "[[$1]]"',
+'modifiedarticleprotection' => 'mõitiņtīz līed "[[$1]]" kaitsõmiz ildõmt',
+'protectcomment' => 'SÄ«:',
+'protectexpiry' => 'Lopūb:',
+'protect_expiry_invalid' => 'ÄbkÈ­lbatõb loppõmiz Äiga.',
+'protect_expiry_old' => ' Loppõmiz Äiga um lÇŸndzÄigas.',
+'protect-text' => "Täs võid vaņtlõ ja mõitiņtõ līed '''$1''' kaitsõmiz-ildõmt.",
+'protect-locked-access' => "Täddõn äb Å«o õigõmt mõitiņtõ lÄ«ed kaitsõmiz-ildõmt. Allõ-pÅ«ol Ätõ lÄ«ed '''$1''' paldīž joÅ«dõs vȯlbizt ulzõ-vēļimizt:",
+'protect-cascadeon' => 'Se lēḑ um kaitstõd, sÄ«epierÄst ku tÇŸnda um kÈ­lbatõd {{PLURAL:$1|page, which has|pages, which have}} {{PLURAL:$1|sÄ«esõ lÄ«eds, |lēḑis}} {{plural:$1| sÄ«esõ lÄ«eds| nÄ“Å¡i lēḑis}}, mis Ätõ īž kaskÄd kaitsõmiz allõ. Sa sÅd mõitiņtõ sÄ«e lÄ«ed kaitsõmizt, bet se äb mõitiņt kaskÄd kaitsõmizt.',
+'protect-default' => 'Ä€ndagid lubÄ ÄmÄdõn kÈ­lbatijiztõn',
+'protect-fallback' => 'Ma tÅb "$1" õigõmḑi',
+'protect-level-autoconfirmed' => 'Blokīerõgid ūd ja bäz pa-kēratõmõt kȭlbatijizt',
+'protect-level-sysop' => 'Setku administrÄtord',
+'protect-summary-cascade' => ' kaskÄd',
+'protect-expiring' => ' lopūb $1 (UTC)',
+'protect-cascade' => 'Kaitsõgid lÄ«edidi, mis um sidtõd sÄ«e lÄ«ed jÅ«rõ (kaskÄd-kaitsõmizõks)',
+'protect-cantedit' => 'Sa äd sŠlīed kaitsõmiz ildõmt mõitiņtõ, sīestõ ku sinnõn pūtõbõd līed redigīerimiz õigõmd.',
+'restriction-type' => 'LubÄd:',
+'restriction-level' => 'Kaitsõmiz ildõm:',
+
+# Undelete
+'undeletelink' => 'vaņ/lūo ūtstõ',
+'undeleteviewlink' => 'vaņ',
+'undeletedarticle' => 'tÅ«oi tÄgiž lÄ«ed "[[$1]]"',
+
+# Namespace form on various pages
+'namespace' => 'Nim-rūim:',
+'invert' => 'TÄ«egid selektsij dagÄržpēḑõn',
+'blanknamespace' => '(Kēratõkst)',
+
+# Contributions
+'contributions' => 'Kȭlbatijiz kubsõtīe',
+'contributions-title' => 'Kȭlbatijiz $1 kubsõtīe',
+'mycontris' => 'Min kubsõtīed',
+'contribsub2' => 'KÈ­lbatiji $1 ($2) pierÄst',
+'uctop' => '(tutkÄms)',
+'month' => ' KÅ«stõ sÅņist (un jo vÄrald)',
+'year' => 'Äigastõst',
+
+'sp-contributions-newbies' => 'Nägţ setku ūd kȭlbatijizt kubsõtīed',
+'sp-contributions-blocklog' => 'blokīerimizt',
+'sp-contributions-uploads' => 'ilzõ-lÅÅ£imizt',
+'sp-contributions-logs' => 'logūd',
+'sp-contributions-talk' => 'NõvpidÄmi',
+'sp-contributions-search' => 'Kubsõtīe vȯtšimi',
+'sp-contributions-username' => 'IP adres agÄ kÈ­lbatijiznim:',
+'sp-contributions-toponly' => 'Setku amÄ Å«d redaktsijõd',
+'sp-contributions-submit' => 'Vȯtšõgid',
+
+# What links here
+'whatlinkshere' => 'Siḑīmõd tǟnõ',
+'whatlinkshere-title' => ' Lēḑõd, mis sidÄbõd lēḑ "$1" pÇŸlõ',
+'whatlinkshere-page' => 'Lēḑ:',
+'linkshere' => "LÄ«ed '''[[:$1]]''' pÇŸlõ sidÄbõd ne lēḑõd:",
+'nolinkshere' => "Līed '''[[:$1]]''' pǟlõ äb ūo sidtõd mittikš lēḑ.",
+'isredirect' => 'jeddõpēḑõn sÅtimiz lēḑ',
+'istemplate' => 'kȭlbatõmi mallõks',
+'isimage' => 'Siḑīm fail jūrõ',
+'whatlinkshere-prev' => '{{PLURAL:$1|jedmõli|jedmõlizt $1}}',
+'whatlinkshere-next' => '{{PLURAL:$1|pierrõ-tulbi|pierrõ-tulbizt $1}}',
+'whatlinkshere-links' => '↠siḑīmõd',
+'whatlinkshere-hideredirs' => '$1 jeddõpēḑõn sÅtimizt',
+'whatlinkshere-hidetrans' => '$1 mallõks kȭlbatõmizt',
+'whatlinkshere-hidelinks' => '$1 siḑīmõd',
+'whatlinkshere-hideimages' => '$1 bīldaks siḑīmõd',
+'whatlinkshere-filters' => 'Sõggõld',
+
+# Block/unblock
+'blockip' => 'Kȭlbatijiz blokīerimi',
+'ipboptions' => ' 2 stuņdõ:2 hours,1 pÇŸva:1 day,3 päuvõ:3 days,1 nädīļ:1 week,2 nädīļt:2 weeks,1 kÅ«:1 month,3 kÅ«dõ:3 months,6 kÅ«dõ:6 months,1 Äigast:1 year,iggi:infinite',
+'ipblocklist' => 'JarÄ kÄ«eldtõd kÈ­lbatijizt',
+'blocklink' => 'blokīer',
+'unblocklink' => 'lopta blokīerimi',
+'change-blocklink' => 'mõitiņt blokīerimizt',
+'contribslink' => 'kubsõtīe',
+'blocklogpage' => 'Blokīerimiz log',
+'blocklogentry' => 'BlokÄ«erimiz kÈ­lbatijiz [[$1]], jarÄ loppõmiz Äiga um $2 $3',
+'unblocklogentry' => 'võtiz jarÄ kÈ­lbatijiz $1 blokÄ«erimiz',
+'block-log-flags-nocreate' => 'kontod lūomi um kīeldtõd',
+
+# Move page
+'movepagetext' => "SiedÄ formõ kÈ­lbatõs sÅtõ lÄ«ed tuoizõks nimtõ. LÄ«ed istÅrij nustõbõd Å«d pēļikÄ“ra alÄ automÄtlistiz. Paldīž-vȯļļijiz pēļizkÄ“raks lÄ«edst sÅb jeddõpēḑõn sÅtimiz lēḑ Å«d lÄ«edpÅ«ol jÅ«rõ. SÅd jedmõļiz pēļikÄ“ra jÅ«rõ sidÄbõd jeddõpēḑõn sÅtimizt automÄtlistiz parÄntõ. Až tÄ“g siedÄ Ã¤b tÄ«end, vaņtlõgid lebbõ, ku jarÄ vÄ«miz pierÄst Å«o Ä«enõd pÄikal [[Special:DoubleRedirects|kÅd-kÈ­rdaliži]] äbkÄ [[Special:BrokenRedirects|kaÅ£kiži jeddõpēḑõn sÅtimiži]].
+Sin ilzandõks um Å«oļikšõ sÄ«e jedstõ, ku amÄd ažÄd Ä«ebõd strÅdõm, nemÄ“ jeddõ nÇŸdõt. Pan tÇŸdõl, ku lÄ«etõ '''äb vÄ«bõd''' jeddõpēḑõn siz, až Å«d pēļizkÄ“raks lÄ«edpÅ«ol um jubÄ vȯlmizõs, bäz luggõmõt až vȯlmizõs lÄ«edpÅ«ol um tijÄ agÄ bäz redigÄ«erimiz istÅrijõ jeddõpēḑõn sÅtimiz lēḑ.
+Se tÇŸntõb, ku äb sÅ iļ kÄ“ratõ jubÄ vȯlmizõs lÄ«edpÅ«oltõ, bet sÅb äbvȯņštõn Å«tstõ nimtimiz tÄgiž kÄ«erõ.
+
+'''KÅ«ondõks!''' Se võib vȱlda lugdõb lÄ«ed jÅ«s ikÅ¡ väggi tuožžī ja bäz vȯdlõmõt mõitõks; jedmõl jatkimizt pÅlaks mõtlõgid iļ rezultÄtõd.",
+'movepagetalktext' => "Īdskubs kÄ“ratõks lÄ«edkõks sÅtõbõd jeddõpēḑõn automÄtlistiz ka nõvpidÄmiz-lēḑ, '''bäs.luggõmõt siz, až:'''
+* Å«d pēļikÄ“ra allõ um jubÄ nõvpidÄmiz-lēḑ, mis äb.Å«o tijÄ;
+* tēg jetīztõ allõ vȯlbiz merk rūţ bäz vēļõmõt.
+Až sugÄ«z nei, sÅd lÄ«ed tÅdõs kädÅ«dõks jeddõpēḑõn sÅtõ agÄ jÅ«rõ-pÄnda.",
+'movearticle' => 'SÅtõgid se lēḑ jeddõpēḑõn',
+'newtitle' => 'Ūd pēļizkÄ“ra alÄ:',
+'move-watch' => 'Vaņ iļ siedÄ lÄ«edtõ',
+'movepagebtn' => 'SÅtõgid se lēḑ jeddõpēḑõn',
+'pagemovedsub' => 'Lēḑ um jeddõpēḑõn sÅtõd',
+'movepage-moved' => '\'\'\'"$1" um jeddõpēḑõn sÅtõd "$2"alÄ\'\'\'',
+'articleexists' => 'SÄ«e nimkõks kÄ“ratõks um jubÄ vȯlmizõs agÄ täd vēļdõt nim um äbkÈ­lbatõb. PÅlaks vēļõgid ūž nim.',
+'talkexists' => "'''Lēḑ um jeddõpēḑõn sÅtõd, bet nõvpidÄmiz-lÄ«edtõ äb sÅnd jeddõpēḑõn sÅtõ, sÄ«estõ ku Å«d nim allõ um nõvpidÄmiz-lēḑ jubÄ vȯlmizõs. PÅlaks viedÄgid nõvpidÄmiz-lēḑõd īž kubbõ.'''",
+'movedto' => 'Jeddõpēḑõn sÅtõd pēļizkÄ“ra alÄ:',
+'movetalk' => 'SÅtõgid jeddõpēḑõn ka nõvpidÄmiz lēḑ',
+'1movedto2' => 'vīž jarÄ lÄ«ed [[$1]] nim [[$2]] jÅ«rõ',
+'1movedto2_redir' => ' vīž jarÄ lÄ«ed [[$1]] ja sÅtiz sÄ«e pēļizkÄ“ra [[$2]] alÄ',
+'movelogpage' => 'JarÄ vÄ«miz log',
+'movereason' => 'SÄ«:',
+'revertmove' => 'kÄ«erõgid tÄgiž',
+
+# Export
+'export' => 'Lēḑõd eksport (ulzõ-vīmi)',
+
+# Namespace 8 related
+'allmessagesname' => 'Nim',
+'allmessagesdefault' => 'VÄgiž-vȯlmiz tekst',
+
+# Thumbnails
+'thumbnail-more' => 'Sūriņţ',
+'thumbnail_error' => 'VigÄ piÅ¡kiz bÄ«lda lÅ«omizõs: $1',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Sin kȭlbatijiz lēḑ',
+'tooltip-pt-mytalk' => 'Täd nõvpidÄmiz lēḑ',
+'tooltip-pt-preferences' => 'Min mīeldõbõd ulzõ-vēļimizt',
+'tooltip-pt-watchlist' => 'Lēḑõd nimkēra, mis iļ vaņtlõd mõitõkši',
+'tooltip-pt-mycontris' => 'Sin kubsõtīed nimkēra',
+'tooltip-pt-login' => 'MÄ“g panÄm jeddõl tēḑi sÄ«ezõ kÄ“ratõm, bet siedÄ Ã¤b Å«o vajÄg',
+'tooltip-pt-logout' => 'Log ulzõ',
+'tooltip-ca-talk' => 'NõvpidÄmi sÄ«e kÄ“ratõks iļ',
+'tooltip-ca-edit' => 'SÅd siedÄ lÄ«edpÅ«oltõ redigÄ«erõ. PÅlaks kÈ­lbatõgid jeddõ-vaņtlimizt jedmõl sa-gläbbõmizt',
+'tooltip-ca-addsection' => 'Pan jūrõ ūž alli-jag',
+'tooltip-ca-viewsource' => 'Se lÄ«edpÅ«ol um kaitstõd. SÅd vaņtlõ sÄ«e ovÄt-tekstõ',
+'tooltip-ca-history' => 'Sīe līedpūol jedmõļizt versijõd',
+'tooltip-ca-protect' => 'Kaitsõgid siedÄ lÄ«edtõ',
+'tooltip-ca-delete' => ' KiÅ¡tÄnt jarÄ se lēḑ',
+'tooltip-ca-move' => 'Vīž se lÄ«edpÅ«ol tuoiz nim alÄ',
+'tooltip-ca-watch' => 'Pan jūrõ se līedpūol eņtš iļ-vaņtlimiz nimkerrõ',
+'tooltip-ca-unwatch' => 'ViedÄgid jarÄ se lÄ«edpÅ«ol eņtÅ¡ iļ-vaņtlimiz nimkÄ“rast',
+'tooltip-search' => 'Vȯtšõgid līedtõ {{SITENAME}}',
+'tooltip-search-go' => 'Li kūoḑõn seļļiz pēļizkēraks līed pǟlõ (až seļļi um vȯlmizõs)',
+'tooltip-search-fulltext' => 'Vȯtšõbõd kÄ“ratõkÅ¡i, mis sizzõl um se lugÄndõks',
+'tooltip-p-logo' => 'Li eḑīz līed pǟlõ',
+'tooltip-n-mainpage' => 'Li eḑīz līed pǟlõ',
+'tooltip-n-mainpage-description' => 'Li eḑīz līed pǟlõ',
+'tooltip-n-portal' => 'Iļ projekt, midÄ tÄ«edõ sÅd, kui um ažḑi lieudõmist',
+'tooltip-n-currentevents' => 'LÄ«eda tieutõkst iļ paldīž suggõbõd ažÄd',
+'tooltip-n-recentchanges' => 'Vikipēdijs tīedõd perrizt mõitõkst nimkēra',
+'tooltip-n-randompage' => 'Li bäz tīedõmõt tulbõ līed pǟlõ',
+'tooltip-n-help' => 'Kūož laz lieudõg ilzõ',
+'tooltip-t-whatlinkshere' => 'AmÄd vikipÄ“dij lēḑõd, kust um tÇŸnõ siḑīmḑi',
+'tooltip-t-recentchangeslinked' => 'Perrizt mõitõkst lēḑis, missõn um täst siḑīmḑi',
+'tooltip-feed-rss' => 'Sīe līedpūol RSS sīeţ',
+'tooltip-feed-atom' => 'Sīe līed Atom sīeţ',
+'tooltip-t-contributions' => 'Nägţ sīe kȭlbatijiz kubsõtīe',
+'tooltip-t-emailuser' => 'SÅtõgid sÄ«en kÈ­lbatijizõn e-kÄ“ra',
+'tooltip-t-upload' => 'Fail ilzõ-lÅÅ£imi',
+'tooltip-t-specialpages' => 'Eņtšvīţizt lēḑõd nimkēra',
+'tooltip-t-print' => 'Sīe līed drukkimiz versij',
+'tooltip-t-permalink' => 'Iggi siḑīm līed sīen versij pǟlõ',
+'tooltip-ca-nstab-main' => 'Nägţ kēratõkst',
+'tooltip-ca-nstab-user' => 'Nägţ kȭlbatijiz līedtõ',
+'tooltip-ca-nstab-special' => ' Se um ikÅ¡ eņtÅ¡vÄ«Å£i lēḑ, tÄ“g ät sÅtõ siedÄ redigÄ«erõ',
+'tooltip-ca-nstab-project' => 'Nägţ projekt līedtõ',
+'tooltip-ca-nstab-image' => 'Nägţ bīlda līedtõ',
+'tooltip-ca-nstab-template' => 'Nägţ mallõ',
+'tooltip-ca-nstab-category' => 'NägÅ£ kategÅrij lÄ«edtõ',
+'tooltip-minoredit' => 'Pangid tÇŸnõ merk ku se um ikÅ¡ piÅ¡ki parÄmtimi',
+'tooltip-save' => 'Sa-gläbb mõitõkst',
+'tooltip-preview' => 'NägÅ£ tÄ«edõd mõitõkÅ¡i. PÅlaks kÈ­lbatigid siedÄ jedmõl sa-gläbbõmizt!',
+'tooltip-diff' => 'Nägţ tīedõd mõitõkši.',
+'tooltip-compareselectedversions' => 'NägÅ£ vaiÅ£idi kÅd sÄ«e lÄ«ed vēļdõt versijõ vail',
+'tooltip-watch' => 'Pan jūrõ se līedpūol eņtš iļ-vaņtlimiz nimkerrõ',
+'tooltip-rollback' => 'KiÅ¡tÄntõb jarÄ Ä«d glõbžõks lÇŸndz kubsõtÄ«e tÄ“jiz tÄ«edõd mõitõkst',
+'tooltip-undo' => '"ViedÄgid jarÄ" tÄ«eb tijÄks/kÄ«eldõbjarÄ sÄ«e mõitõks ja ovÄtõb redigÄ«erimiz läb tekstõ jedmõl-vaņtlimizõks. Neiīž tÄ“g võigid sÇŸl kÄ“ratõ, mis vȯļ sÄ«e jarÄ vÄ«miz sÄ«.',
+'tooltip-summary' => 'KÄ“ratigid lÄ«tõ kubbõ-võtÄmi',
+
+# Patrol log
+'patrol-log-line' => 'paņ merk ku $1 līeds $2 kontroļļtõd $3',
+'patrol-log-diff' => 'versij $1',
+
+# Browsing diffs
+'previousdiff' => '↠Jedmõli redaktsij',
+'nextdiff' => 'Jo ūd redigīerimizt',
+
+# Media information
+'file-info-size' => ' $1 × $2 piksõlt, bildÄ sÅ«rit: $3, MIME tÄ«p: $4',
+'file-nohires' => '<small>Sīestõ sūrimmõ bildõ äb ūo.</small>',
+'svg-long-desc' => 'SVG fail, originÄli sÅ«rit $1 × $2 piksõlt, fail sÅ«rit: $3',
+'show-big-image' => 'täuž rezolūtsij',
+
+# Bad image list
+'bad_image_list' => 'TÇŸdõl panÄbõd setku nimkÄ“ra elementõd ( rÄ«ndad, mis irgõbõd simbÅlõks *) . Ežmi siḑīm rÄ«ndas um kilÄb siḑīm äbkÈ­lbatõb fail jÅ«rõ. SÄ«el īž rÄ«ndas vȯlbiži pierrõ tulbiži siḑīmḑi vaņtlõbõd nemÄ“ mÅ«Å¡ti ulzõ võtÄmiži, se tÇŸntõb kÄ“ratõkÅ¡i, mis jÅ«rõ failõ võib pÄnda.',
+
+# Metadata
+'metadata' => 'Meta-tīetõkst',
+'metadata-help' => 'Se fail sizzõl um mÅ«dõ tieutõkst, mis um kilÄb jÅ«rõ-pand digikÄmera agÄ skannõr pÅ«olst. Až failõ um eņtÅ¡vÄ«Å£iz programmatÅ«raks kÈ­lbatõd, võib setmin tieutidi vȱlda mõitiņtõd agÄ tikkiž jarÄ kiÅ¡tÄntõd',
+'metadata-expand' => 'NägÅ£ mūḑi jo akurÄtidi ažḑi',
+'metadata-collapse' => 'VaÅ— jarÄ juo akurÄt ažÄd',
+'metadata-fields' => 'Täs lugdõd fail meta-tÄ«etõkst vellidi nägţõbõd bÄ«lda seļţimiz lÄ«eds meta-tÄ«etõkst vaņtlimiz Äigal. Munt tÄ«etõkst Ätõ bäz kÄ«tõmõt jarÄ vaÅ—tõd.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
+# External editor support
+'edit-externally' => 'Protseššõgid failõ ulīz programmatūraks',
+'edit-externally-help' => '(Vaņ uļļizt redaktÅrd adresõs [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] kÈ­lbatõmiz opÄtõkst)',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'tikkiž',
+'namespacesall' => 'tikkiž',
+'monthsall' => 'tikkiž',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Nägţ sīe mõitõkši',
+'watchlisttools-edit' => 'Vaņ ja redigīer iļ-vaņtlimiz nimkerrõ',
+'watchlisttools-raw' => 'Mõitiņt ovÄt-tekstõ',
+
+# Core parser functions
+'duplicate-defaultsort' => "'''KÅ«ondõks:''' Kõõrda-jadÄ võţīm ''$2'' tÄ«eb tijÄks jedsõ pÅ«ol vólbiz kõõrda-jadÄ võţīm ''$1''.",
+
+# Special:SpecialPages
+'specialpages' => 'Eņtšvīţizt lēḑõd',
+
+# External image whitelist
+'external_image_whitelist' => ' #Jettõgid se jadÄ bäz mõitiņtõmõt<pre>
+#Pangid regulÄr-ekpressij jagÅ«d ( set merkid // vail vȯlbi jag) mÅzõpēḑõn
+#Ne Ät sidtõd vikipÄ“dij-uļļizt bÄ«ldad internet adresõdõks
+#Sidtõd vȯlbizt nägţõbõd bīldadõks, mūn kȭrdal nägţõbõd setku bīlda siḑīm
+#Merkõks # irgõbõd rÄ«ndad Ät komentÄrd
+#Se um nei-īž sūrd ja piškizt tǟdõdõks
+
+#Pangid tikkiž regulÄr-ekpressij jagÅ«d sÄ«e krÄ«pÅ¡ pÄikal. Jettõgid se jadÄ bäz mõitiņtõmõt mÅ«oḑ pÇŸlõ </pre>',
+
+# Special:Tags
+'tag-filter' => '[[Special:Tags|Tag]] sõggõl:',
+
+);
diff --git a/languages/messages/MessagesLmo.php b/languages/messages/MessagesLmo.php
index 2f1a94f6..675c58c5 100644
--- a/languages/messages/MessagesLmo.php
+++ b/languages/messages/MessagesLmo.php
@@ -69,29 +69,29 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'RedirezionDubia' ),
+ 'Allmessages' => array( 'Messagg' ),
'BrokenRedirects' => array( 'RedirezionS-cepada' ),
- 'Disambiguations' => array( 'Desambiguazion' ),
- 'Userlogin' => array( 'VenaDenter' ),
- 'Userlogout' => array( 'VaFö' ),
+ 'Categories' => array( 'Categurij' ),
'CreateAccount' => array( 'CreaCünt' ),
- 'Preferences' => array( 'Preferenz' ),
- 'Watchlist' => array( 'SutOeugg' ),
- 'Recentchanges' => array( 'CambiamentRecent' ),
- 'Upload' => array( 'CaregaSü' ),
+ 'Disambiguations' => array( 'Desambiguazion' ),
+ 'DoubleRedirects' => array( 'RedirezionDubia' ),
+ 'Listadmins' => array( 'ListaAministradur' ),
'Listfiles' => array( 'Imagin' ),
- 'Newimages' => array( 'ImaginNöv' ),
- 'Listusers' => array( 'Dupradur' ),
'Listgrouprights' => array( 'Lista_di_dirit_di_grüp' ),
- 'Statistics' => array( 'Statìstegh' ),
- 'Randompage' => array( 'PaginaAzardada' ),
+ 'Listusers' => array( 'Dupradur' ),
'Lonelypages' => array( 'PaginnDaPerLur' ),
- 'Uncategorizedpages' => array( 'PaginnMingaCategurizaa' ),
- 'Specialpages' => array( 'PaginnSpecial' ),
+ 'Newimages' => array( 'ImaginNöv' ),
+ 'Preferences' => array( 'Preferenz' ),
+ 'Randompage' => array( 'PaginaAzardada' ),
+ 'Recentchanges' => array( 'CambiamentRecent' ),
'Recentchangeslinked' => array( 'MudifeghCulegaa' ),
- 'Categories' => array( 'Categurij' ),
- 'Allmessages' => array( 'Messagg' ),
- 'Listadmins' => array( 'ListaAministradur' ),
+ 'Specialpages' => array( 'PaginnSpecial' ),
+ 'Statistics' => array( 'Statìstegh' ),
+ 'Uncategorizedpages' => array( 'PaginnMingaCategurizaa' ),
+ 'Upload' => array( 'CaregaSü' ),
+ 'Userlogin' => array( 'VenaDenter' ),
+ 'Userlogout' => array( 'VaFö' ),
+ 'Watchlist' => array( 'SutOeugg' ),
);
$magicWords = array(
@@ -267,7 +267,6 @@ süi titul dai sezziún (JavaScript)',
'searcharticle' => 'Và',
'history' => 'Crunulugia de la pagina',
'history_short' => 'Crunulugìa',
-'info_short' => 'Infurmazión',
'printableversion' => 'Versión stampàbil',
'permalink' => 'Culegament permanent',
'print' => 'Stampa',
@@ -416,7 +415,7 @@ Per piasè, fa raport a 'n'[[Special:ListUsers/sysop|aministradur]], cun la nota
'viewsourcefor' => 'de $1',
'protectedpagetext' => "Cula pagina chi l'è stata blucà per impedinn la mudifica.",
'viewsourcetext' => "L'è pussibil vèd e cupià el codes surgent de cula pagina chí:",
-'editinginterface' => "'''Ocio''': Te see adree a mudifegà una pàgina che la se dröva per generà 'l test de l'interfacia del prugrama. Qualsìa mudìfega fada la cambierà l'interfacia de tüt i druvadur. Se te gh'hee intenzión de fà una tradüzión, per piasì cunsiderà la pussibilità de druvà [http://translatewiki.net/wiki/Main_Page?setlang=lmo translatewiki.net], 'l pruget de lucalizazión de MediaWiki.",
+'editinginterface' => "'''Ocio''': Te see adree a mudifegà una pàgina che la se dröva per generà 'l test de l'interfacia del prugrama. Qualsìa mudìfega fada la cambierà l'interfacia de tüt i druvadur. Se te gh'hee intenzión de fà una tradüzión, per piasì cunsiderà la pussibilità de druvà [//translatewiki.net/wiki/Main_Page?setlang=lmo translatewiki.net], 'l pruget de lucalizazión de MediaWiki.",
'ns-specialprotected' => 'I paginn special i pören mía vess mudifegaa',
# Login and logout pages
@@ -459,7 +458,7 @@ Per piasè, abilita i cookies e pröa anmò a andà dent cunt el tò nom e la pa
'nosuchuser' => "A gh'è nissün druvat cun 'l nom ''$1''. <br />
I suranomm i henn sensibil a i leter majùscul.<br />
Cuntrola 'l nom che t'hee metüü denter o [[Special:UserLogin/signup|crea un cünt növ]].",
-'nosuchusershort' => "Ghe n'è mia d'ütent cun el nom de \"<nowiki>\$1</nowiki>\". Ch'el cuntrola se l'ha scrivüü giüst.",
+'nosuchusershort' => "Ghe n'è mia d'ütent cun el nom de \"\$1\". Ch'el cuntrola se l'ha scrivüü giüst.",
'nouserspecified' => "Te gh'heet da specificà un nom del druvatt.",
'wrongpassword' => "La ciav che t'hee metüü denter l'è nò giüsta. Pröva turna per piasè.",
'wrongpasswordempty' => "T'hee no metüü denter la parola ciav. Pröva turna per piasè.",
@@ -480,7 +479,7 @@ Per piasè, ve drent anmò dop che te l'ricevüü.",
'accountcreatedtext' => "'L cünt del druvat $1 l'è bele pruntaa.",
'loginlanguagelabel' => 'Lengua: $1',
-# Password reset dialog
+# Change password dialog
'oldpassword' => "Paròla d'urdin végja:",
'newpassword' => "Paròla d'urdin növa:",
'retypenew' => "Scriv ancamò la paròla d'urdin növa:",
@@ -496,8 +495,6 @@ Per piasè, ve drent anmò dop che te l'ricevüü.",
'extlink_tip' => 'Ligam de föra (regordess el prefiss http:// )',
'headline_sample' => "Intestazión de l'articul",
'headline_tip' => 'Intestazión de 2° nivel',
-'math_sample' => 'Met dent una furmula chì',
-'math_tip' => 'Furmula matematega (LaTeX)',
'nowiki_sample' => 'Met dent chì el test minga furmataa',
'nowiki_tip' => 'Ignora la furmatazión wiki',
'image_tip' => 'File inglubaa in del test',
@@ -649,7 +646,6 @@ Pröa a giuntagh denanz a la tò ricerca ''all:'' per cercà in tücc i namespac
'prefs-edits' => 'Quantità de mudifegh faa:',
'changepassword' => "Mudifega la paròla d'urdin",
'prefs-skin' => "Aspett de l'interfacia",
-'prefs-math' => 'Matem',
'datedefault' => 'Nissüna preferenza',
'prefs-datetime' => 'Data e urari',
'prefs-personal' => 'Carateristich dal dupradur',
@@ -667,8 +663,6 @@ Pröa a giuntagh denanz a la tò ricerca ''all:'' per cercà in tücc i namespac
'columns' => 'Culònn:',
'searchresultshead' => 'Cerca',
'resultsperpage' => 'Resültaa pər pagina:',
-'contextlines' => 'Riich pər resültaa:',
-'contextchars' => 'Cuntèst pər riga:',
'recentchangescount' => "Nümer de mudifegh da mustrà per ''default'':",
'savedprefs' => 'I preferenz hinn stai salvaa.',
'timezonelegend' => 'Lucalitaa',
@@ -968,13 +962,11 @@ La descrizión sura la sua [$2 pagina de descrizión del file] l'è mustrada chÃ
# Watchlist
'watchlist' => "Paginn ch'a tegni d'ögg",
'mywatchlist' => "Paginn che a tegni d'ögg",
-'addedwatch' => 'Pagina giuntada a la lista di paginn sot ögg',
'addedwatchtext' => "La pagina \"[[:\$1]]\" l'è stada giuntada a la lista di [[Special:Watchlist|paginn da tegn d'ögg]].
I cambiament che vegnarà fai a 'sta pagina chì e a la sóa pagina de discüssion
i vegnarann segnalaa chichinscì e la pagina la se vedarà cun caràter '''grev''' ins la
[[Special:RecentChanges|lista dij cambiament recent]], giüst per metela in evidenza.
<p>Se te vörat tö via quela pagina chì dala lista dij paginn da tegn d'ögg te pòdat schiscià 'l butón \"tegn pü d'ögg\".",
-'removedwatch' => 'Scancelaa dala lista di usservazziún.',
'removedwatchtext' => 'La pagina "[[:$1]]" l\'è stada scancelada de la tò lista di [[Special:Watchlist|paginn sot ögg]].',
'watch' => "Tegn d'öcc",
'watchthispage' => "Tegn d'ögg quela pagina chì",
@@ -1011,10 +1003,10 @@ De surapü, te pö mudifegà l\'impustazion de l\'avis de nutifega per quij pagi
--
Per mudifegà l\'impustazión de la lista di paginn che te tegn d\'ögg, varda
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:Special:Watchlist/edit}}
Per fà di cumünicazion de servizzi e per cercà jüt:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Scancela la pagina',
@@ -1025,7 +1017,7 @@ Per fà di cumünicazion de servizzi e per cercà jüt:
'confirmdeletetext' => "A te see lì per scancelà una pagina cun tüta la sua crunulugìa.
Per piasè, dà la cunferma che te gh'hee intenzión de andà inanz cun 'l scancelament, che te see al curent di cunseguenz, e che te see adree a fàl segónd i regulament de [[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Aziun cumpletada',
-'deletedtext' => 'La pagina "<nowiki>$1</nowiki>" l\'è stada scancelada. Varda el $2 per una lista di ültim scancelaziun.',
+'deletedtext' => 'La pagina "$1" l\'è stada scancelada. Varda el $2 per una lista di ültim scancelaziun.',
'deletedarticle' => 'l\'ha scancelaa "[[$1]]"',
'dellogpage' => 'Register di scancelament',
'deletionlog' => 'log di scancelament',
@@ -1059,7 +1051,7 @@ L'ültima redatazziún l eva da [[User:$3|$3]] ([[User talk:$3|Discüssiún]])."
'protectexpiry' => 'Scadenza:',
'protect_expiry_invalid' => 'Scadenza pü bona',
'protect_expiry_old' => 'Scadenza giamò passada',
-'protect-text' => "Chì se pö vardà e müdà el nivel de prutezión de la pagina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Chì se pö vardà e müdà el nivel de prutezión de la pagina '''$1'''.",
'protect-locked-access' => "El tò cünt a l'ha minga la qualifega per pudè müdà el nivel de prutezión.
Quest chì a hinn i regulazión curent per la pagina '''$1''':",
'protect-cascadeon' => "Al mument, quela pagina chì l'è prutegiüda perchè l'è inclüsa int {{PLURAL:$1|la pagina chì suta, che la gh'ha|i paginn chì suta, ch'i gh'hann}} la prutezion a cascada. Se pö mudifegà 'l nivel de prutezion de quela pagina chì, ma una mudifega del gener la gh'avarà mia d'efet ins i impustazión ch'i deriven da la prutezión a cascada.",
@@ -1142,7 +1134,6 @@ Quest chì a hinn i regulazión curent per la pagina '''$1''':",
'blockiptext' => "Druvee 'l mòdul chì de suta per blucà l'acess cun dirit de scritüra a un indirizz IP specifegh o a un druvadur registraa.
El bloch gh'è de druvàl dumà per evità el vandalism e in acord cun i [[{{MediaWiki:Policy-url}}|regulament de {{SITENAME}}]].
Scrivee chì de suta 'l mutiv specifegh per el bloch (presempi, a pudii scriv i titul di paginn che i henn stat suget a vandalism).",
-'ipaddress' => 'Indirizz IP:',
'ipadressorusername' => 'Indirizz IP o nom del druvdur:',
'ipbexpiry' => 'Fina al:',
'ipbreason' => 'Reson:',
@@ -1155,7 +1146,6 @@ Scrivee chì de suta 'l mutiv specifegh per el bloch (presempi, a pudii scriv i
** Cumpurtament intimidatori
** Avè druvaa püssee dun cünt in manera abüsiva
** El nom del druvàt l'è inacetabil",
-'ipbanononly' => 'Blòca dumà i druvàt anonim',
'ipbcreateaccount' => 'Lassegh mia creà di alter cünt',
'ipbemailban' => "Fà in manera che quel druvàt chì 'l poda mia spedì di messagg e-mail",
'ipbenableautoblock' => "Bloca in manera utumatega l'ültim indirizz IP druvaa da 'stu druvadur chì, e qualsessìa olter indirizz IP cun al qual el cerca de fà di mudifegh.",
@@ -1166,7 +1156,6 @@ Scrivee chì de suta 'l mutiv specifegh per el bloch (presempi, a pudii scriv i
'ipbotherreason' => 'Alter resón/spiegazión',
'ipbhidename' => "Scund 'l nom del druvat dai mudifegh e da i list.",
'ipbwatchuser' => "Tegn d'ögg i paginn duvrat e de discüssión de quel duvrat chì",
-'ipballowusertalk' => "Permet a quel duvrat chì de mudifegà la sò pagina de discüssión intanta che l'è blucaa",
'ipb-change-block' => 'Blocà ancamò el duvrat cun quij impustazión chì',
'badipaddress' => 'Adrèss IP mia valid',
'blockipsuccesssub' => 'Blucagg bel-e faa',
@@ -1181,7 +1170,6 @@ Varda [[Special:IPBlockList|lista di IP blucaa]] per vidè anmò i bloch.",
'ipusubmit' => "Tö via 'stu bloch chì",
'unblocked' => "[[User:$1|$1]] l'è staa desblucaa",
'ipblocklist' => 'Adrèss IP e druvàt blucaa',
-'blocklistline' => "$1, $2 l'ha blucaa $3 ($4)",
'infiniteblock' => 'per semper',
'expiringblock' => 'el finiss el $1 a $2',
'anononlyblock' => 'dumà i anònim',
@@ -1198,7 +1186,7 @@ Varda [[Special:IPBlockList|lista di IP blucaa]] per vidè anmò i bloch.",
'blocklogentry' => "l'ha blucaa [[$1]] per un temp de $2 $3",
'blocklogtext' => "Quel chì l'è el register di bloch e desbloch di druvadur.
I indirizz IP che i henn staa blucaa utumaticament i henn mía cumpres int la lista.
-Varda el [[Special:IPBlockList|register di IP blucaa]] per la lista de tüt i bloch uperaziunaj ativ.",
+Varda el [[Special:BlockList|register di IP blucaa]] per la lista de tüt i bloch uperaziunaj ativ.",
'unblocklogentry' => "l'ha desblucaa $1",
'block-log-flags-anononly' => 'dumà druvadur anònim',
'block-log-flags-nocreate' => 'blucada la creazión de cünt növ',
@@ -1310,14 +1298,6 @@ Che 'l scerna, per piasè, un nom diferent per quel articul chì.",
# Attribution
'siteuser' => '{{SITENAME}} ütent $1',
-# Math options
-'mw_math_png' => 'Trasfurmá sempər in PNG',
-'mw_math_simple' => 'HTML se mia cumplicaa altrimeent PNG',
-'mw_math_html' => 'HTML se l è pussíbil altrimeent PNG',
-'mw_math_source' => 'Lassá in furmaa TeX (pər i prugráma də navigazziún dumá in furmaa da testu)',
-'mw_math_modern' => 'Racumandaa pər i bigatt püssè reçeent',
-'mw_math_mathml' => 'MathML se l è pussíbil (sperimentaal)',
-
# Image deletion
'deletedrevision' => 'Scancelada la revision vegia de $1.',
@@ -1326,13 +1306,12 @@ Che 'l scerna, per piasè, un nom diferent per quel articul chì.",
'nextdiff' => 'Mudifega püssee növa →',
# Media information
-'imagemaxsize' => 'Limitá i imagin süi pagin da descrizziún dii imagin a:',
-'thumbsize' => 'Dimensiún diapusitiif:',
-'file-info-size' => '$1 × $2 pixel, dimensión : $3, sort MIME: $4',
-'file-nohires' => '<small>Nissüna resulüzión püssee granda dispunibila.</small>',
-'svg-long-desc' => "archivi in furmaa SVG, dimensión nominaj $1 × $2 pixel, dimensión de l'archivi: $3",
-'show-big-image' => 'Versión a resolüzión volta',
-'show-big-image-thumb' => '<small>Dimensión de quela anteprima chì: $1 × $2 pixel</small>',
+'imagemaxsize' => 'Limitá i imagin süi pagin da descrizziún dii imagin a:',
+'thumbsize' => 'Dimensiún diapusitiif:',
+'file-info-size' => '$1 × $2 pixel, dimensión : $3, sort MIME: $4',
+'file-nohires' => '<small>Nissüna resulüzión püssee granda dispunibila.</small>',
+'svg-long-desc' => "archivi in furmaa SVG, dimensión nominaj $1 × $2 pixel, dimensión de l'archivi: $3",
+'show-big-image' => 'Versión a resolüzión volta',
# Special:NewFiles
'newimages' => 'Espusizión di imàgin növ',
@@ -1357,18 +1336,22 @@ I ligam che i vegnen dopu, in sü l'istessa riga, i vegnen cónsideraa di eceziÃ
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Redatá chest archivi cunt un prugramari da fö',
-'edit-externally-help' => 'Varda [http://www.mediawiki.org/wiki/Manual:External_editors i istrüzión] per avègh püssee infurmazión (in ingles).',
+'edit-externally-help' => 'Varda [//www.mediawiki.org/wiki/Manual:External_editors i istrüzión] per avègh püssee infurmazión (in ingles).',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tücc',
-'imagelistall' => 'tücc',
-'watchlistall2' => 'tücc',
-'namespacesall' => 'tücc',
-'monthsall' => 'tücc',
+'watchlistall2' => 'tücc',
+'namespacesall' => 'tücc',
+'monthsall' => 'tücc',
# E-mail address confirmation
'confirmemail' => "Cunferma l<nowiki>'</nowiki>''e-mail''",
diff --git a/languages/messages/MessagesLn.php b/languages/messages/MessagesLn.php
index bf25fe43..1b730580 100644
--- a/languages/messages/MessagesLn.php
+++ b/languages/messages/MessagesLn.php
@@ -13,10 +13,6 @@
$fallback = 'fr';
-$defaultUserOptionOverrides = array(
- 'editfont' => 'sans-serif', # poor font support
-);
-
$linkPrefixExtension = true;
# Same as the French (bug 8485)
@@ -126,10 +122,10 @@ $messages = array(
'searcharticle' => 'Kokɛndɛ',
'history' => 'Mokóló mwa lonkásá',
'history_short' => 'Mokóló',
-'info_short' => 'Liyébisi',
'printableversion' => 'Mpɔ̂ na kofínela',
'permalink' => 'Ekangeli ya ntángo yÉ”ÌnsÉ”',
'print' => 'kobimisa nkomá',
+'view' => 'KomÉ”Ìnisa',
'edit' => 'kobɔngisa',
'create' => 'Kokela',
'editthispage' => 'Kokoma lonkásá óyo',
@@ -250,11 +246,15 @@ Ezalí listÉ›Ì ya nkásá gudi bizalí na [[Special:SpecialPages|{{int:special
'mailmypassword' => 'Kotíndisa liloba-nzelá lya sika na mÉ›ÌlÉ›',
'loginlanguagelabel' => 'Lokótá: $1',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Banda kala',
'newpassword' => 'Banda sika',
'resetpass-submit-cancel' => 'Kozóngela',
+# Special:PasswordReset
+'passwordreset-username' => 'Nkómbó ya mosáleli:',
+'passwordreset-email' => 'AdÉ›lÉ›ÌsÉ›-ímÉ›ÌlÉ›:',
+
# Edit page toolbar
'bold_sample' => 'Nkomá ya mbinga',
'bold_tip' => 'Nkomá ya mbinga',
@@ -488,9 +488,7 @@ Ezalí listÉ›Ì ya nkásá gudi bizalí na [[Special:SpecialPages|{{int:special
# Watchlist
'watchlist' => 'Nkásá nalandí',
'mywatchlist' => 'Nkásá nalandí',
-'addedwatch' => 'Ebakísámí na nkásá olandí',
'addedwatchtext' => "Lonkásá «[[:$1]]» lobakísámí na [[Special:Watchlist|nkásá olandí]]. Mbóngwana o lonkásá loye mpé o lonkásá la ntembe ikomÉ”Ìnisama áwa, ikokÉ”Ìmana '''mbinga''' o [[Special:RecentChanges|LístÉ› ya mbóngwana ya nsúka]] mpɔ̂ na mpási tɛ̂.",
-'removedwatch' => 'Elongólámí na nkásá olandí',
'watch' => 'Kolanda',
'watchthispage' => 'Kolanda lonkásá óyo',
'unwatch' => 'Kolanda tÉ›Ì',
diff --git a/languages/messages/MessagesLo.php b/languages/messages/MessagesLo.php
index e1048a52..58776568 100644
--- a/languages/messages/MessagesLo.php
+++ b/languages/messages/MessagesLo.php
@@ -35,50 +35,50 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ໂອນຊ້ອນ' ),
+ 'Allpages' => array( 'ໜ້າທັງà»àº»àº”' ),
'BrokenRedirects' => array( 'ໂອນເສàº' ),
- 'Disambiguations' => array( 'à»àºà»‰àº„ວາມàºàº³àºàº§àº¡' ),
- 'Userlogin' => array( 'ເຊັນເຂົ້າ' ),
- 'Userlogout' => array( 'ເຊັນອອàº' ),
+ 'Categories' => array( 'à»àº§àº”' ),
+ 'ChangePassword' => array( 'ປ່ຽນລະຫັດຜ່ານ' ),
+ 'Contributions' => array( 'àºàº²àº™àº›àº°àºàº­àºšàºªà»ˆàº§àº™' ),
'CreateAccount' => array( 'ສ້າງບັນຊີ' ),
- 'Preferences' => array( 'ຕັ້ງຄ່າ' ),
- 'Watchlist' => array( 'ຕິດຕາມ' ),
- 'Recentchanges' => array( 'àºàº²àº™àº”ັດà»àºà»‰àº«àº¼à»‰àº²àºªàº¸àº”' ),
- 'Upload' => array( 'ອັປໂຫຼດໄຟລ໌' ),
+ 'Deadendpages' => array( 'ໜ້າທີ່ບà»à»ˆàº¡àºµà»œà»‰àº²à»ƒàº”ໂàºàº‡àº¡àº²' ),
+ 'Disambiguations' => array( 'à»àºà»‰àº„ວາມàºàº³àºàº§àº¡' ),
+ 'DoubleRedirects' => array( 'ໂອນຊ້ອນ' ),
+ 'Listadmins' => array( 'ລາàºàºŠàº·à»ˆàºœàº¹à»‰àºšà»àº¥àº´àº«àº²àº™àº¥àº°àºšàº»àºš' ),
+ 'Listbots' => array( 'ລາàºàºŠàº·à»ˆàºšàº­àº•' ),
'Listfiles' => array( 'ລາàºàºŠàº·à»ˆàº®àº¹àºš' ),
- 'Newimages' => array( 'ຮູບໃà»à»ˆ' ),
'Listusers' => array( 'ລາàºàºŠàº·à»ˆàºœàº¹à»‰à»ƒàºŠà»‰' ),
- 'Statistics' => array( 'ສະຖິຕິ' ),
+ 'Longpages' => array( 'ໜ້າàºàº²àº§' ),
+ 'Movepage' => array( 'àºà»‰àº²àº' ),
+ 'Mycontributions' => array( 'ປະàºàº­àºšàºªà»ˆàº§àº™àº‚ອງຂ້ອàº' ),
+ 'Mypage' => array( 'ໜ້າຂອງຂ້ອàº' ),
+ 'Mytalk' => array( 'ສົນທະນາຂອງຂ້ອàº' ),
+ 'Newimages' => array( 'ຮູບໃà»à»ˆ' ),
+ 'Newpages' => array( 'ໜ້າໃà»à»ˆ' ),
+ 'Preferences' => array( 'ຕັ້ງຄ່າ' ),
+ 'Protectedpages' => array( 'ໜ້າທີ່ຖຶàºàº›àº»àºàº›à»‰àº­àº‡' ),
+ 'Protectedtitles' => array( 'ຊື່ທີ່ຖຶàºàº›àº»àºàº›à»‰àº­àº‡' ),
'Randompage' => array( 'ບົດຄວາມໃດໜຶ່ງ' ),
- 'Uncategorizedpages' => array( 'ໜ້າທີ່ບà»à»ˆàº¡àºµà»àº§àº”' ),
+ 'Randomredirect' => array( 'ໜ້າໂອນໃດໜຶ່ງ' ),
+ 'Recentchanges' => array( 'àºàº²àº™àº”ັດà»àºà»‰àº«àº¼à»‰àº²àºªàº¸àº”' ),
+ 'Search' => array( 'ຊອàºàº«àº²' ),
+ 'Shortpages' => array( 'ໜ້າທີ່ສັ້ນ' ),
+ 'Specialpages' => array( 'ໜ້າພິເສດ' ),
+ 'Statistics' => array( 'ສະຖິຕິ' ),
'Uncategorizedcategories' => array( 'à»àº§àº”ທີ່ບà»à»ˆàº¡àºµà»àº§àº”' ),
'Uncategorizedimages' => array( 'ຮູບທີ່ບà»à»ˆàº¡àºµà»àº§àº”' ),
+ 'Uncategorizedpages' => array( 'ໜ້າທີ່ບà»à»ˆàº¡àºµà»àº§àº”' ),
'Uncategorizedtemplates' => array( 'à»àº¡à»ˆà»àºšàºšàº—ີ່ບà»à»ˆàº¡àºµà»àº§àº”' ),
'Unusedcategories' => array( 'à»àº§àº”ທີ່ບà»à»ˆà»„ດ້ໃຊ້' ),
'Unusedimages' => array( 'ຮູບທີ່ບà»à»ˆà»„ດ້ໃຊ້' ),
- 'Wantedpages' => array( 'ໜ້າທີ່ຕ້ອງàºàº²àº™', 'ລິງàºà»Œàº—ີ່້ເສàº' ),
+ 'Unusedtemplates' => array( 'à»àº¡à»ˆà»àºšàºšàº—ີ່ບà»à»ˆà»„ດ້ໃຊ້' ),
+ 'Upload' => array( 'ອັປໂຫຼດໄຟລ໌' ),
+ 'Userlogin' => array( 'ເຊັນເຂົ້າ' ),
+ 'Userlogout' => array( 'ເຊັນອອàº' ),
'Wantedcategories' => array( 'à»àº§àº”ທີ່ຕ້ອງàºàº²àº™' ),
- 'Shortpages' => array( 'ໜ້າທີ່ສັ້ນ' ),
- 'Longpages' => array( 'ໜ້າàºàº²àº§' ),
- 'Newpages' => array( 'ໜ້າໃà»à»ˆ' ),
- 'Deadendpages' => array( 'ໜ້າທີ່ບà»à»ˆàº¡àºµà»œà»‰àº²à»ƒàº”ໂàºàº‡àº¡àº²' ),
- 'Protectedpages' => array( 'ໜ້າທີ່ຖຶàºàº›àº»àºàº›à»‰àº­àº‡' ),
- 'Protectedtitles' => array( 'ຊື່ທີ່ຖຶàºàº›àº»àºàº›à»‰àº­àº‡' ),
- 'Allpages' => array( 'ໜ້າທັງà»àº»àº”' ),
- 'Specialpages' => array( 'ໜ້າພິເສດ' ),
- 'Contributions' => array( 'àºàº²àº™àº›àº°àºàº­àºšàºªà»ˆàº§àº™' ),
+ 'Wantedpages' => array( 'ໜ້າທີ່ຕ້ອງàºàº²àº™', 'ລິງàºà»Œàº—ີ່້ເສàº' ),
+ 'Watchlist' => array( 'ຕິດຕາມ' ),
'Whatlinkshere' => array( 'ໜ້າທີ່ເຊື່ອມຕà»à»ˆàº¡àº²' ),
- 'Movepage' => array( 'àºà»‰àº²àº' ),
- 'Categories' => array( 'à»àº§àº”' ),
- 'Unusedtemplates' => array( 'à»àº¡à»ˆà»àºšàºšàº—ີ່ບà»à»ˆà»„ດ້ໃຊ້' ),
- 'Randomredirect' => array( 'ໜ້າໂອນໃດໜຶ່ງ' ),
- 'Mypage' => array( 'ໜ້າຂອງຂ້ອàº' ),
- 'Mytalk' => array( 'ສົນທະນາຂອງຂ້ອàº' ),
- 'Mycontributions' => array( 'ປະàºàº­àºšàºªà»ˆàº§àº™àº‚ອງຂ້ອàº' ),
- 'Listadmins' => array( 'ລາàºàºŠàº·à»ˆàºœàº¹à»‰àºšà»àº¥àº´àº«àº²àº™àº¥àº°àºšàº»àºš' ),
- 'Listbots' => array( 'ລາàºàºŠàº·à»ˆàºšàº­àº•' ),
- 'Search' => array( 'ຊອàºàº«àº²' ),
- 'Resetpass' => array( 'ປ່ຽນລະຫັດຜ່ານ' ),
);
$digitTransformTable = array(
@@ -203,8 +203,6 @@ $messages = array(
'category-article-count' => '{{PLURAL:$2|à»àº§àº”ນີ້ມີໜ້າຢູ່ພຽງໜ້າດຽວ|ມີ {{PLURAL:$1|ໜ້າດຽວ|$1 ໜ້າ}} ໃນà»àº§àº”ນີ້ ເຕັມ $2}}',
'listingcontinuesabbrev' => 'ຕà»à»ˆ.',
-'mainpagetext' => "'''ຕິດຕັ້ງມີເດàºàº§àº´àºàº´àº™àºµà»‰àºªàº³à»€àº¥àº±àº”à»àº¥à»‰àº§.'''",
-
'about' => 'àºà»ˆàº½àº§àºàº±àºš',
'article' => 'ບົດຄວາມ',
'newwindow' => '(ເປີດເປັນ ປ່ອງຢ້ຽມ(ວິນໂດ)ໃà»à»ˆ )',
@@ -233,7 +231,6 @@ $messages = array(
'searcharticle' => 'ໄປ',
'history' => 'ປະຫວັດ',
'history_short' => 'ປະຫວັດàºàº²àº™àº”ັດà»àºà»‰',
-'info_short' => 'ຂ້ອມູນ',
'printableversion' => 'ສະບັບພິມໄດ້',
'permalink' => 'ລິ້ງຄ໌ຖາວອນ',
'print' => 'ພິມ',
@@ -382,7 +379,7 @@ $messages = array(
'accountcreated' => 'ບັນຊີ ໄດ້ຖືàºàºªà»‰àº²àº‡ à»àº¥à»‰àº§',
'accountcreatedtext' => 'ບັນຊີ ຂອງ $1 ໄດ້ ຖືàºàºªà»‰àº²àº‡à»àº¥à»‰àº§.',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'ລະຫັດຜ່ານເàºàº»à»ˆàº²:',
'newpassword' => 'ລະຫັດຜ່ານໃà»à»ˆ:',
'retypenew' => 'ພິມລະຫັດຜ່ານໃà»à»ˆàº­àºµàº:',
@@ -399,8 +396,6 @@ $messages = array(
'extlink_sample' => 'http://www.example.com ຫົວຂà»à»‰àº¥àº´à»‰àº‡àº„໌',
'headline_sample' => 'ສຳຄັນ',
'headline_tip' => 'ຫົວຂà»à»‰àº¥àº°àº”ັບ 2',
-'math_sample' => 'ໃສ່ສູດຢູ່ນີ້',
-'math_tip' => 'ສູດຄະນິດສາດ (LaTeX)',
'image_tip' => 'ໄຟລ໌ຕິດຄັດ',
'media_tip' => 'ລິ້ງຄ໌ຫາໄຟລ໌',
@@ -511,7 +506,6 @@ $messages = array(
'changepassword' => 'ປ່ຽນລະຫັດຜ່ານ',
'prefs-skin' => 'ລວດລາàº',
'skin-preview' => 'ລອງເບິ່ງ',
-'prefs-math' => 'ຄະນິດສາດ',
'datedefault' => 'à»àº™àº§à»ƒàº”àºà»à»ˆà»„ດ້',
'prefs-datetime' => 'ວັນ à»àº¥àº° ເວລາ',
'prefs-personal' => 'ຂà»à»‰àº¡àº¹àº™àº«àº¼àº±àºàºœàº¹à»‰à»ƒàºŠà»‰',
@@ -527,7 +521,6 @@ $messages = array(
'columns' => 'ຖັນ:',
'searchresultshead' => 'ຊອàºàº«àº²',
'resultsperpage' => 'ຈຳນວນຜົນàºàº²àº™àºŠàº­àºà»€àº«àº±àº™ ຕà»à»ˆ ໜ້າ:',
-'contextlines' => 'ຈຳນວນà»àº–ວ ຕà»à»ˆ ຜົນàºàº²àº™àºŠàº­àºà»€àº«àº±àº™:',
'recentchangesdays' => 'ຈຳນວນມື້ສະà»àº”ງໃນàºàº²àº™àº›à»ˆàº½àº™à»àº›àº‡àº«àº¼à»‰àº²àºªàº¸àº”:',
'recentchangescount' => 'ຈຳນວນàºàº²àº™àº”ັດà»àºà»‰àºªàº°à»àº”ງໃນàºàº²àº™àº›à»ˆàº½àº™à»àº›àº‡àº«àº¼à»‰àº²àºªàº¸àº”:',
'savedprefs' => 'àºàº²àº™àº•àº±à»‰àº‡àº„່າຂອງທ່ານໄດ້ຖືàºàºšàº±àº™àº—ຶàºà»àº¥à»‰àº§.',
@@ -726,9 +719,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'mywatchlist' => 'ລາàºàºàº²àº™àº•àº´àº”ຕາມ',
'watchlistanontext' => 'àºàº°àº¥àº¸àº™àº² $1 ເພື່ອເບິ່ງ ຫຼື ດັດà»àºà»‰ ໜ້າຢູ່ໃນລາàºàºàº²àº™àº•àº´àº”ຕາມຂອງທ່ານ.',
'watchnologin' => 'ບà»à»ˆà»„ດ້ເຊັນເຂົ້າ',
-'addedwatch' => 'ເພີ່ມໃສ່ລາàºàºàº²àº™àº•àº´àº”ຕາມà»àº¥à»‰àº§',
'addedwatchtext' => 'ໜ້າ "[[:$1]]" ໄດ້ຖືàºà»€àºžàºµà»ˆàº¡à»ƒàºªà»ˆ [[Special:Watchlist|ລາàºàºàº²àº™àº•àº´àº”ຕາມ]] ຂອງ ທ່ານ',
-'removedwatch' => 'ເອົາອອàºàºˆàº²àºàº¥àº²àºàºàº²àº™àº•àº´àº”ຕາມ',
'removedwatchtext' => 'ໜ້າ "[[:$1]]" ໄດ້ຖືàºà»€àº­àº»àº²àº­àº­àºàºˆàº²àº ລາàºàºàº²àº™àº•àº´àº”ຕາມ ຂອງ ທ່ານ.',
'watch' => 'ຕິດຕາມ',
'watchthispage' => 'ຕິດຕາມໜ້ານີ້',
@@ -767,7 +758,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'prot_1movedto2' => '[[$1]] àºà»‰àº²àºà»„ປ [[$2]]',
'protect-legend' => 'ຢືນຢັນ àºàº²àº™àº›àº»àºàº›à»‰àº­àº‡',
'protectexpiry' => 'à»àº»àº”àºàº³àº™àº»àº”:',
-'protect-text' => "ທ່ານສາມາດເບິ່ງ à»àº¥àº° ປ່ຽນà»àº›àº‡ ລະດັບàºàº²àº™àº›àº»àºàº›à»‰àº­àº‡ ສຳຫຼັບ ໜ້າ '''<nowiki>$1</nowiki> ຢູ່ນີ້'''.",
+'protect-text' => "ທ່ານສາມາດເບິ່ງ à»àº¥àº° ປ່ຽນà»àº›àº‡ ລະດັບàºàº²àº™àº›àº»àºàº›à»‰àº­àº‡ ສຳຫຼັບ ໜ້າ '''$1 ຢູ່ນີ້'''.",
'protect-level-autoconfirmed' => 'ຫ້າມຜູ້ໃຊ້ບà»à»ˆà»„ດ້ເຊັນເຂົ້າ',
'protect-level-sysop' => 'ສະເພາະຜູ້ບà»àº¥àº´àº«àº²àº™àº¥àº°àºšàº»àºš',
'protect-expiring' => 'à»àº»àº”ອາàºàº¸ $1 (UTC)',
@@ -824,7 +815,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
'badipaddress' => 'ທີ່ຢູ່ IP ບà»à»ˆàº–ືàºàº•à»‰àº­àº‡',
'blockipsuccesssub' => 'ຫ້າມສຳເລັດ',
'ipblocklist' => 'ລາàºàºàº²àº™ ທີ່ຢູ່ IP à»àº¥àº° ຊື່ຜູ້ໃຊ້ ທີ່ຖືàºàº«à»‰àº²àº¡',
-'blocklistline' => '$1, $2 ຫ້າມ $3 ($4)',
'blocklink' => 'ຫ້າມ',
'contribslink' => 'ປະàºàº­àºšàºªà»ˆàº§àº™',
'autoblocker' => 'ຫ້າມໂດàºàº­àº±àº”ຕາໂນມັດ àºà»‰àº­àº™ ທີ່ຢູ່ IP ຂອງທ່ານ ຖືàºà»ƒàºŠà»‰à»‚ດຠ"[[User:$1|$1]]" ໃນໄລàºàº°àº«àº¼àº±àº‡. ເຫດຜົນໃນàºàº²àº™àº«à»‰àº²àº¡ $1 à»àº¡à»ˆàº™ : "$2"',
@@ -905,23 +895,16 @@ Also see [[Special:WantedCategories|wanted categories]].',
# Attribution
'anonymous' => 'ຜູ້ໃຊ້ ບà»à»ˆàºªàº°à»àº”ງຊື່ ຈາຠ{{SITENAME}}',
-# Info page
-'numedits' => 'ຈຳນວນດັດà»àºà»‰ (ໜ້າ): $1',
-
-# Math errors
-'math_syntax_error' => 'ຜິດຫຼັàºà»„ວàºàº°àºàº­àº™',
-
# Browsing diffs
'previousdiff' => 'ສ່ວນຕ່າງàºà»ˆàº­àº™',
'nextdiff' => 'ສ່ວນຕ່າງຕà»à»ˆà»„ປ →',
# Media information
-'imagemaxsize' => 'àºàº³àº™àº»àº”ຄວາມໃຫàºà»ˆàº‚ອງ ຮູບ ຫຼື ໜ້າອະທິບາàºàº®àº¹àºš ບà»à»ˆà»ƒàº«à»‰àºàº²àº:',
-'thumbsize' => 'ຂະໜາດສະà»àº”ງ:',
-'file-info-size' => '$1 × $2 ປິàºà»€àºŠàº¥, ຂະໜາດໄຟລ໌: $3, MIME type: $4',
-'file-nohires' => 'ບà»à»ˆàº¡àºµàº‚ະໜາດລະອຽດàºàº§à»ˆàº²',
-'show-big-image' => 'ເຕັມຂະໜາດ',
-'show-big-image-thumb' => '<small>ຂະໜາດລອງເບິ່ງ: $1 × $2 ປິàºà»€àºŠàº¥</small>',
+'imagemaxsize' => 'àºàº³àº™àº»àº”ຄວາມໃຫàºà»ˆàº‚ອງ ຮູບ ຫຼື ໜ້າອະທິບາàºàº®àº¹àºš ບà»à»ˆà»ƒàº«à»‰àºàº²àº:',
+'thumbsize' => 'ຂະໜາດສະà»àº”ງ:',
+'file-info-size' => '$1 × $2 ປິàºà»€àºŠàº¥, ຂະໜາດໄຟລ໌: $3, MIME type: $4',
+'file-nohires' => 'ບà»à»ˆàº¡àºµàº‚ະໜາດລະອຽດàºàº§à»ˆàº²',
+'show-big-image' => 'ເຕັມຂະໜາດ',
# Special:NewFiles
'newimages' => 'ໄຟລ໌ຮູບໃà»à»ˆ',
@@ -942,14 +925,12 @@ Also see [[Special:WantedCategories|wanted categories]].',
# External editor support
'edit-externally' => 'ດັດà»àºà»‰à»„ຟລ໌ນີ້ໂດàºà»‚ປà»àºàº£àº¡àºžàº²àºàº™àº­àº',
-'edit-externally-help' => 'ເບິ່ງ ຂà»à»‰àº¡àº¹àº™à»€àºžàºµà»ˆàº¡àº•àº·à»ˆàº¡ ຢູ່ [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions]',
+'edit-externally-help' => 'ເບິ່ງ ຂà»à»‰àº¡àº¹àº™à»€àºžàºµà»ˆàº¡àº•àº·à»ˆàº¡ ຢູ່ [//www.mediawiki.org/wiki/Manual:External_editors setup instructions]',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ທັງà»àº»àº”',
-'imagelistall' => 'ທັງà»àº»àº”',
-'watchlistall2' => 'ທັງà»àº»àº”',
-'namespacesall' => 'ທັງà»àº»àº”',
-'monthsall' => 'ທັງà»àº»àº”',
+'watchlistall2' => 'ທັງà»àº»àº”',
+'namespacesall' => 'ທັງà»àº»àº”',
+'monthsall' => 'ທັງà»àº»àº”',
# E-mail address confirmation
'confirmemail' => 'ຢືນຢັນ ທີ່ຢູ່ ອີເມລ',
diff --git a/languages/messages/MessagesLoz.php b/languages/messages/MessagesLoz.php
index ab3d3df1..dbe2a1dc 100644
--- a/languages/messages/MessagesLoz.php
+++ b/languages/messages/MessagesLoz.php
@@ -142,7 +142,6 @@ $messages = array(
'history' => 'Bundau petulo',
'history_short' => 'Bundau',
'updatedmarker' => 'sa updeti di zwa sadi ladu',
-'info_short' => 'Tuto',
'printableversion' => "Petulo printezi ye ng'i",
'permalink' => 'Permalink',
'print' => 'Aprintile',
@@ -300,7 +299,7 @@ Query: $2",
'loginsuccesstitle' => 'Menuhile ni condi bufosi',
'loginsuccess' => "'''A sa menuhile di {{SITENAME}} con sebelu \"\$1\".'''",
'nosuchuser' => 'No sebelu "$1". Tembile/ipupezi.',
-'nosuchusershort' => 'No sebelu "<nowiki>$1</nowiki>". Tembile.',
+'nosuchusershort' => 'No sebelu "$1". Tembile.',
'nouserspecified' => 'A tumbelezi sebelunom.',
'wrongpassword' => 'Bufosi sebu dafi. Tembile.',
'wrongpasswordempty' => 'No sebu dafi. Tembile.',
@@ -322,7 +321,7 @@ Sa ku bye fatukile zwa sebu dafi e a ni petuho, ni petuho e mulumiwasibukirisize
'createaccount-title' => 'Sebelu sa hloli di {{SITENAME}}',
'loginlanguagelabel' => 'Zwa Siselect: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Lisetize sebelu sebu dafi',
'resetpass_header' => 'Lisetize sebu dafi',
'retypenew' => 'Sebu dafi:',
@@ -339,8 +338,6 @@ Sa ku bye fatukile zwa sebu dafi e a ni petuho, ni petuho e mulumiwasibukirisize
'extlink_tip' => "Ling'ko bulili out (¡con http://!)",
'headline_sample' => 'Selt di pagafi',
'headline_tip' => 'Pagafi (2)',
-'math_sample' => 'Sebu di fomula',
-'math_tip' => 'Fomula di mat (LaTeX)',
'nowiki_sample' => "Sebu di 'ni-Wikicode' apukisize",
'nowiki_tip' => "'Ni Wiki-code' apukisize",
'image_sample' => 'Kamukile.jpg',
@@ -480,7 +477,6 @@ Informasi: (bye) = petuho a nca selt,
'prefsnologin' => 'Ni menuhile',
'prefs-skin' => 'PendiBe',
'skin-preview' => 'PendiBe',
-'prefs-math' => 'Mat',
'datedefault' => 'Ni di petohoni di sebelu',
'prefs-datetime' => 'Data',
'prefs-rc' => 'Petuho nca',
@@ -492,8 +488,6 @@ Informasi: (bye) = petuho a nca selt,
'columns' => 'Kalom:',
'searchresultshead' => 'Fatukile',
'resultsperpage' => 'Hit di petulo:',
-'contextlines' => 'Lani di hit:',
-'contextchars' => 'Selt di lani:',
'timezoneoffset' => 'Ufiseti¹',
'default' => 'auto',
'prefs-files' => 'Imegini',
@@ -728,12 +722,10 @@ dicon sa sosize ni sa meli di kupo sebelu.',
'mywatchlist' => 'Zwa mukoloko di kentezi',
'watchnologin' => 'A ni sa menuhile',
'watchnologintext' => "A sa [[Special:UserLogin|menuhile]] di hloli ye ng'i zwa mukoloko di kentezi.",
-'addedwatch' => 'Tumbelize a mukoloko di kentezi',
'addedwatchtext' => "Petulo \"[[:\$1]]\" sa vugisize di zwa [[Special:Watchlist|mukoloko di kentezi]].
Petuhoni di bye petulo e sa bulelezi sa mukolokosize ta, e '''ombelu''' kwa [[Special:RecentChanges|petuho nca]] di kwazidisize akusize.
A sa afi kulobala di zwa mukoloko di kentezi, tampi \"ngambu kentezi\".",
-'removedwatch' => 'Sa afi kulobala di zwa mukoloko di kentezi',
'removedwatchtext' => 'Petulo "[[:$1]]" sa afi kulobala di zwa mukoloko di kentezi.',
'watch' => 'Kentezi',
'watchthispage' => 'Kentezi bye petulo',
@@ -762,7 +754,7 @@ A sa afi kulobala di zwa mukoloko di kentezi, tampi \"ngambu kentezi\".",
'historywarning' => 'Petulo, sa afi kulobala, sa bundau di sebelu:',
'confirmdeletetext' => 'A sa afi kulobala petulo e bundau. A sa ukisize a sa ni bufosi e a sa iki di [[{{MediaWiki:Policy-url}}|polisi]].',
'actioncomplete' => 'Sa afi',
-'deletedtext' => '"<nowiki>$1</nowiki>" sa afi kulobala. Fatukile $2 di desu di afi kulobala nca.',
+'deletedtext' => '"$1" sa afi kulobala. Fatukile $2 di desu di afi kulobala nca.',
'deletedarticle' => 'sa afi kulobala "[[$1]]"',
'dellogpage' => 'Desu di afi kulobala',
'deletecomment' => 'Lyangutukezi:',
@@ -785,7 +777,7 @@ A sa afi kulobala di zwa mukoloko di kentezi, tampi \"ngambu kentezi\".",
'protectexpiry' => 'Simpekile:',
'protect_expiry_invalid' => 'Bufosi di simpekile.',
'protect_expiry_old' => 'Simpekile sa kwa bundau.',
-'protect-text' => "A sa kamukile e hloli bukelezi di petulo '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "A sa kamukile e hloli bukelezi di petulo '''$1'''.",
'protect-locked-access' => "Zwa sebelu ni sa hloli bukelezi.
Petohoni di petulo '''$1''' sa:",
'protect-cascadeon' => 'Bye petulo sa bukelezi a sa kwa bye {{PLURAL:$1|petulo|petulo}}, asa kaskedi. A sa hloli bukelezi, a ni sa afakize kaskedi.',
@@ -857,7 +849,6 @@ Petohoni di petulo '''$1''' sa:",
# Block/unblock
'blockip' => 'Bolok sebelu',
-'ipaddress' => 'IP:',
'ipadressorusername' => 'IP/sebelu:',
'ipboptions' => '2 ora:2 hours,1 dia:1 day,3 dia:3 days,1 wiki:1 week,2 wiki:2 weeks,1 muna:1 month,3 muna:3 months,6 muna:6 months,1 anu:1 year,di simuluzi:infinite',
'badipaddress' => 'IP ni sa',
@@ -915,7 +906,7 @@ Teri yaki, a nyanganyisize.",
'allmessagesdefault' => 'Selt orge',
'allmessagescurrent' => 'Selt nca',
'allmessagestext' => 'Bye mukoloko sa mukoloko di mulumiwani di MediaWiki poo.
-Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
# Thumbnails
'thumbnail-more' => 'Pusize',
@@ -1006,12 +997,11 @@ $1',
'nextdiff' => 'Lila petuho →',
# Media information
-'widthheightpage' => '$1×$2, $3 petulo',
-'file-info-size' => '$1 × $2 pixel, imegi: $3, MIME type: $4',
-'file-nohires' => '<small>A sa risolusi aku balise.</small>',
-'svg-long-desc' => 'SVG imegi, nominali $1 × $2 pixel, imega: $3',
-'show-big-image' => 'Risolusi bakisize',
-'show-big-image-thumb' => '<small>PendiBe: $1 × $2 pixel</small>',
+'widthheightpage' => '$1×$2, $3 petulo',
+'file-info-size' => '$1 × $2 pixel, imegi: $3, MIME type: $4',
+'file-nohires' => '<small>A sa risolusi aku balise.</small>',
+'svg-long-desc' => 'SVG imegi, nominali $1 × $2 pixel, imega: $3',
+'show-big-image' => 'Risolusi bakisize',
# Special:NewFiles
'newimages' => 'Imegina nca',
@@ -1036,21 +1026,25 @@ Xete ling'ki kwa lina sa konsidisize desepo. Petulo dimedi inlinenikusize.",
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagedescription' => 'Sebu di imegi',
# External editor support
'edit-externally' => 'Kenki imegi sebilize pagini lakusi',
-'edit-externally-help' => 'Boniselelize [http://www.mediawiki.org/wiki/Manual:External_editors instruksi setup] kwa informasi.',
+'edit-externally-help' => 'Boniselelize [//www.mediawiki.org/wiki/Manual:External_editors instruksi setup] kwa informasi.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'xeti',
-'imagelistall' => 'xeti',
-'watchlistall2' => 'xeti',
-'namespacesall' => 'xeti',
-'monthsall' => 'xeti',
+'watchlistall2' => 'xeti',
+'namespacesall' => 'xeti',
+'monthsall' => 'xeti',
# Trackbacks
'trackbackremove' => '([$1 afi kulobala])',
diff --git a/languages/messages/MessagesLt.php b/languages/messages/MessagesLt.php
index 12cd36ef..66953c5d 100644
--- a/languages/messages/MessagesLt.php
+++ b/languages/messages/MessagesLt.php
@@ -47,93 +47,93 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Dvigubi_peradesavimai' ),
+ 'Allmessages' => array( 'Visi_pranešimai' ),
+ 'Allpages' => array( 'Visi_puslapiai' ),
+ 'Ancientpages' => array( 'Seniausi_puslapiai' ),
+ 'Blankpage' => array( 'TuÅ¡Äias_puslapis' ),
+ 'Block' => array( 'Blokuoti_IP' ),
+ 'Blockme' => array( 'Užblokuoti_mane' ),
+ 'Booksources' => array( 'Knygų_šaltiniai' ),
'BrokenRedirects' => array( 'Peradresavimai_į_niekur' ),
- 'Disambiguations' => array( 'Nukreipiamieji' ),
- 'Userlogin' => array( 'Prisijungimas' ),
- 'Userlogout' => array( 'Atsijungimas' ),
+ 'Categories' => array( 'Kategorijos' ),
+ 'ChangePassword' => array( 'Slaptažodžio_atstatymas' ),
+ 'Confirmemail' => array( 'Elektroninio_pašto_patvirtinimas' ),
+ 'Contributions' => array( 'IndÄ—lis' ),
'CreateAccount' => array( 'Sukurti_paskyrÄ…' ),
- 'Preferences' => array( 'Nustatymai' ),
- 'Watchlist' => array( 'Stebimieji' ),
- 'Recentchanges' => array( 'Naujausi_keitimai' ),
- 'Upload' => array( 'Įkėlimas' ),
+ 'Deadendpages' => array( 'Puslapiai-aklavietÄ—s' ),
+ 'DeletedContributions' => array( 'IÅ¡trintas_indÄ—lis' ),
+ 'Disambiguations' => array( 'Nukreipiamieji' ),
+ 'DoubleRedirects' => array( 'Dvigubi_peradesavimai' ),
+ 'Emailuser' => array( 'Rašyti_laišką' ),
+ 'Export' => array( 'Eksportas' ),
+ 'Fewestrevisions' => array( 'Mažiausiai_keiÄiami' ),
+ 'FileDuplicateSearch' => array( 'Failo_dublikatų_paieška' ),
+ 'Filepath' => array( 'Kelias_iki_failo' ),
+ 'Import' => array( 'Importas' ),
+ 'Invalidateemail' => array( 'Nutraukti_elektroninio_pašto_galiojimą' ),
+ 'BlockList' => array( 'IP_blokavimų_sąrašas' ),
+ 'LinkSearch' => array( 'Nuorodų_paieška' ),
+ 'Listadmins' => array( 'Administratorių_sąrašas' ),
+ 'Listbots' => array( 'Botų_sąrašas' ),
'Listfiles' => array( 'Paveikslėlių_sąrašas' ),
- 'Newimages' => array( 'Nauji_paveikslÄ—liai' ),
- 'Listusers' => array( 'Naudotojų_sąrašas' ),
'Listgrouprights' => array( 'Grupių_teisių_sąrašas' ),
- 'Statistics' => array( 'Statistika' ),
- 'Randompage' => array( 'Atsitiktinis_puslapis' ),
+ 'Listredirects' => array( 'Peradresavimų_sąrašas' ),
+ 'Listusers' => array( 'Naudotojų_sąrašas' ),
+ 'Lockdb' => array( 'Užrakinti_duomenų_bazę' ),
+ 'Log' => array( 'Sąrašas', 'Sąrašai' ),
'Lonelypages' => array( 'Vieniši_puslapiai' ),
- 'Uncategorizedpages' => array( 'Puslapiai_be_kategorijų' ),
- 'Uncategorizedcategories' => array( 'Kategorijos_be_subkategorijų' ),
- 'Uncategorizedimages' => array( 'Paveikslėliai_be_kategorijų' ),
- 'Uncategorizedtemplates' => array( 'Šablonai_be_kategorijų' ),
- 'Unusedcategories' => array( 'Nenaudojamos_kategorijos' ),
- 'Unusedimages' => array( 'Nenaudojami_paveikslÄ—liai' ),
- 'Wantedpages' => array( 'Trokštamiausi_puslapiai', 'Blogos_nuorodos' ),
- 'Wantedcategories' => array( 'Trokštamiausios_kategorijos' ),
- 'Wantedfiles' => array( 'Trokštami_failai' ),
- 'Wantedtemplates' => array( 'Trokštami_šablonai' ),
+ 'Longpages' => array( 'Ilgiausi_puslapiai' ),
+ 'MergeHistory' => array( 'Sujungti_istorijÄ…' ),
+ 'MIMEsearch' => array( 'MIME_paieška' ),
+ 'Mostcategories' => array( 'Daugiausiai_naudojamos_kategorijos' ),
+ 'Mostimages' => array( 'Daugiausiai_naudojami_paveikslÄ—liai' ),
'Mostlinked' => array( 'Turintys_daugiausiai_nuorodų' ),
'Mostlinkedcategories' => array( 'Kategorijos_turinÄios_daugiausiai_nuorodų' ),
'Mostlinkedtemplates' => array( 'Å ablonai' ),
- 'Mostimages' => array( 'Daugiausiai_naudojami_paveikslÄ—liai' ),
- 'Mostcategories' => array( 'Daugiausiai_naudojamos_kategorijos' ),
'Mostrevisions' => array( 'Daugiausiai_keiÄiami' ),
- 'Fewestrevisions' => array( 'Mažiausiai_keiÄiami' ),
- 'Shortpages' => array( 'Trumpiausi_puslapiai' ),
- 'Longpages' => array( 'Ilgiausi_puslapiai' ),
+ 'Movepage' => array( 'Puslapio_pervadinimas' ),
+ 'Mycontributions' => array( 'Mano_indÄ—lis' ),
+ 'Mypage' => array( 'Mano_puslapis' ),
+ 'Mytalk' => array( 'Mano_aptarimas' ),
+ 'Newimages' => array( 'Nauji_paveikslÄ—liai' ),
'Newpages' => array( 'Naujausi_puslapiai' ),
- 'Ancientpages' => array( 'Seniausi_puslapiai' ),
- 'Deadendpages' => array( 'Puslapiai-aklavietÄ—s' ),
+ 'Popularpages' => array( 'Populiarūs_puslapiai' ),
+ 'Preferences' => array( 'Nustatymai' ),
+ 'Prefixindex' => array( 'Prasidedantys' ),
'Protectedpages' => array( 'Užrakinti_puslapiai' ),
'Protectedtitles' => array( 'Apsaugoti_pavadinimai' ),
- 'Allpages' => array( 'Visi_puslapiai' ),
- 'Prefixindex' => array( 'Prasidedantys' ),
- 'Ipblocklist' => array( 'IP_blokavimų_sąrašas' ),
- 'Specialpages' => array( 'Specialieji_puslapiai' ),
- 'Contributions' => array( 'IndÄ—lis' ),
- 'Emailuser' => array( 'Rašyti_laišką' ),
- 'Confirmemail' => array( 'Elektroninio_pašto_patvirtinimas' ),
- 'Whatlinkshere' => array( 'Kas_į_Äia_rodo' ),
+ 'Randompage' => array( 'Atsitiktinis_puslapis' ),
+ 'Randomredirect' => array( 'Atsitiktinis_peradresavimas' ),
+ 'Recentchanges' => array( 'Naujausi_keitimai' ),
'Recentchangeslinked' => array( 'Pakeitimai_susijusiuose_puslapiuose' ),
- 'Movepage' => array( 'Puslapio_pervadinimas' ),
- 'Blockme' => array( 'Užblokuoti_mane' ),
- 'Booksources' => array( 'Knygų_šaltiniai' ),
- 'Categories' => array( 'Kategorijos' ),
- 'Export' => array( 'Eksportas' ),
- 'Version' => array( 'Versija' ),
- 'Allmessages' => array( 'Visi_pranešimai' ),
- 'Log' => array( 'Sąrašas', 'Sąrašai' ),
- 'Blockip' => array( 'Blokuoti_IP' ),
+ 'Revisiondelete' => array( 'Redagavimo_ištrynimas' ),
+ 'Search' => array( 'Paieška' ),
+ 'Shortpages' => array( 'Trumpiausi_puslapiai' ),
+ 'Specialpages' => array( 'Specialieji_puslapiai' ),
+ 'Statistics' => array( 'Statistika' ),
+ 'Tags' => array( 'Žymos' ),
+ 'Uncategorizedcategories' => array( 'Kategorijos_be_subkategorijų' ),
+ 'Uncategorizedimages' => array( 'Paveikslėliai_be_kategorijų' ),
+ 'Uncategorizedpages' => array( 'Puslapiai_be_kategorijų' ),
+ 'Uncategorizedtemplates' => array( 'Šablonai_be_kategorijų' ),
'Undelete' => array( 'Netrinti' ),
- 'Import' => array( 'Importas' ),
- 'Lockdb' => array( 'Užrakinti_duomenų_bazę' ),
'Unlockdb' => array( 'Atrakinti_duomenų_bazę' ),
- 'Userrights' => array( 'Naudotojo_teisÄ—s' ),
- 'MIMEsearch' => array( 'MIME_paieška' ),
- 'FileDuplicateSearch' => array( 'Failo_dublikatų_paieška' ),
- 'Unwatchedpages' => array( 'Nestebimi_puslapiai' ),
- 'Listredirects' => array( 'Peradresavimų_sąrašas' ),
- 'Revisiondelete' => array( 'Redagavimo_ištrynimas' ),
+ 'Unusedcategories' => array( 'Nenaudojamos_kategorijos' ),
+ 'Unusedimages' => array( 'Nenaudojami_paveikslÄ—liai' ),
'Unusedtemplates' => array( 'Nenaudojami_Å¡ablonai' ),
- 'Randomredirect' => array( 'Atsitiktinis_peradresavimas' ),
- 'Mypage' => array( 'Mano_puslapis' ),
- 'Mytalk' => array( 'Mano_aptarimas' ),
- 'Mycontributions' => array( 'Mano_indÄ—lis' ),
- 'Listadmins' => array( 'Administratorių_sąrašas' ),
- 'Listbots' => array( 'Botų_sąrašas' ),
- 'Popularpages' => array( 'Populiarūs_puslapiai' ),
- 'Search' => array( 'Paieška' ),
- 'Resetpass' => array( 'Slaptažodžio_atstatymas' ),
+ 'Unwatchedpages' => array( 'Nestebimi_puslapiai' ),
+ 'Upload' => array( 'Įkėlimas' ),
+ 'Userlogin' => array( 'Prisijungimas' ),
+ 'Userlogout' => array( 'Atsijungimas' ),
+ 'Userrights' => array( 'Naudotojo_teisÄ—s' ),
+ 'Version' => array( 'Versija' ),
+ 'Wantedcategories' => array( 'Trokštamiausios_kategorijos' ),
+ 'Wantedfiles' => array( 'Trokštami_failai' ),
+ 'Wantedpages' => array( 'Trokštamiausi_puslapiai', 'Blogos_nuorodos' ),
+ 'Wantedtemplates' => array( 'Trokštami_šablonai' ),
+ 'Watchlist' => array( 'Stebimieji' ),
+ 'Whatlinkshere' => array( 'Kas_į_Äia_rodo' ),
'Withoutinterwiki' => array( 'Be_interwiki' ),
- 'MergeHistory' => array( 'Sujungti_istorijÄ…' ),
- 'Filepath' => array( 'Kelias_iki_failo' ),
- 'Invalidateemail' => array( 'Nutraukti_elektroninio_pašto_galiojimą' ),
- 'Blankpage' => array( 'TuÅ¡Äias_puslapis' ),
- 'LinkSearch' => array( 'Nuorodų_paieška' ),
- 'DeletedContributions' => array( 'IÅ¡trintas_indÄ—lis' ),
- 'Tags' => array( 'Žymos' ),
);
$magicWords = array(
@@ -206,8 +206,8 @@ $messages = array(
'tog-shownumberswatching' => 'Rodyti stebinÄių naudotojų skaiÄių',
'tog-oldsig' => 'Esamo parašo peržiūra:',
'tog-fancysig' => 'Laikyti parašą vikitekstu (be automatinių nuorodų)',
-'tog-externaleditor' => 'Pagal nutylėjimą naudoti išorinį redaktorių (skirta tik ekspertams, nes reikia atitinkamai paruošti jūsų kompiuterį. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
-'tog-externaldiff' => 'Pagal nutylėjimą naudoti išorinę skirtumų rodymo programą (tik ekspertams, nes reikia atitinkamai paruošti jūsų kompiuterį. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaleditor' => 'Pagal nutylėjimą naudoti išorinį redaktorių (skirta tik ekspertams, nes reikia atitinkamai paruošti jūsų kompiuterį. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaldiff' => 'Pagal nutylėjimą naudoti išorinę skirtumų rodymo programą (tik ekspertams, nes reikia atitinkamai paruošti jūsų kompiuterį. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
'tog-showjumplinks' => 'Įjungti „peršokti į“ pasiekiamumo nuorodas',
'tog-uselivepreview' => 'Naudoti tiesioginę peržiūrą (JavaScript) (Eksperimentinis)',
'tog-forceeditsummary' => 'Klausti, kai palieku tuÅ¡ÄiÄ… keitimo komentarÄ…',
@@ -303,15 +303,7 @@ $messages = array(
'listingcontinuesabbrev' => 'tęs.',
'index-category' => 'Indeksuoti puslapiai',
'noindex-category' => 'Neindeksuoti puslapiai',
-
-'mainpagetext' => "'''MediaWiki sėkmingai įdiegta.'''",
-'mainpagedocfooter' => 'Informacijos apie wiki programinės įrangos naudojimą, ieškokite [http://meta.wikimedia.org/wiki/Help:Contents žinyne].
-
-== Pradžiai ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Konfigūracijos nustatymų sąrašas]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki DUK]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki pranešimai paštu apie naujas versijas]',
+'broken-file-category' => 'Puslapiai su neteisingomis nuorodomis į failus',
'about' => 'Apie',
'article' => 'Turinys',
@@ -363,10 +355,10 @@ $messages = array(
'history' => 'Puslapio istorija',
'history_short' => 'Istorija',
'updatedmarker' => 'atnaujinta nuo paskutinio mano apsilankymo',
-'info_short' => 'Informacija',
'printableversion' => 'Versija spausdinimui',
'permalink' => 'NuolatinÄ— nuoroda',
'print' => 'Spausdinti',
+'view' => 'Žiūrėti',
'edit' => 'Redaguoti',
'create' => 'Sukurti',
'editthispage' => 'Redaguoti šį puslapį',
@@ -374,6 +366,7 @@ $messages = array(
'delete' => 'Trinti',
'deletethispage' => 'Ištrinti šį puslapį',
'undelete_short' => 'Atstatyti $1 {{PLURAL:$1:redagavimą|redagavimus|redagavimų}}',
+'viewdeleted_short' => 'Peržiūrėti $1 {{PLURAL:$1|ištrintą keitimą|ištrintus keitimus|ištrintų keitimų}}',
'protect' => 'Užrakinti',
'protect_change' => 'keisti',
'protectthispage' => 'Rakinti šį puslapį',
@@ -457,6 +450,8 @@ $1',
'toc' => 'Turinys',
'showtoc' => 'rodyti',
'hidetoc' => 'slÄ—pti',
+'collapsible-collapse' => 'Sutraukti',
+'collapsible-expand' => 'IÅ¡plÄ—sti',
'thisisdeleted' => 'Žiūrėti ar atkurti $1?',
'viewdeleted' => 'Rodyti $1?',
'restorelink' => '$1 {{PLURAL:$1|ištrintą keitimą|ištrintus keitimus|ištrintų keitimų}}',
@@ -468,6 +463,8 @@ $1',
'page-rss-feed' => '„$1“ RSS prenumerata',
'page-atom-feed' => '„$1“ Atom prenumerata',
'red-link-title' => '$1 (puslapis neegzistuoja)',
+'sort-descending' => 'Rūšiuoti mažėjimo tvarka',
+'sort-ascending' => 'RÅ«Å¡iuoti didÄ—jimo tvarka',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Puslapis',
@@ -552,12 +549,13 @@ Užklausa: $2',
'protectedpagetext' => 'Šis puslapis yra užrakintas, saugant jį nuo redagavimo.',
'viewsourcetext' => 'Jūs galite žiūrėti ir kopijuoti puslapio kodą:',
'protectedinterface' => 'Šiame puslapyje yra apsaugotas nuo piktnaudžiavimo programinės įrangos sąsajos tekstas.',
-'editinginterface' => "'''Dėmesio:''' Jūs redaguojate puslapį, kuris yra naudojamas programinės įrangos sąsajos tekste. Pakeitimai šiame puslapyje taip pat pakeis naudotojo sąsajos išvaizdą ir kitiems naudojams. Jei norite išversti, siūlome pasinaudoti [http://translatewiki.net/wiki/Main_Page?setlang=lt „translatewiki.net“], „MediaWiki“ lokalizacijos projektu.",
+'editinginterface' => "'''Dėmesio:''' Jūs redaguojate puslapį, kuris yra naudojamas programinės įrangos sąsajos tekste. Pakeitimai šiame puslapyje taip pat pakeis naudotojo sąsajos išvaizdą ir kitiems naudojams. Jei norite išversti, siūlome pasinaudoti [//translatewiki.net/wiki/Main_Page?setlang=lt „translatewiki.net“], „MediaWiki“ lokalizacijos projektu.",
'sqlhidden' => '(SQL užklausa paslėpta)',
'cascadeprotected' => 'Šis puslapis buvo apsaugotas nuo redagavimo, kadangi jis yra įtrauktas į {{PLURAL:$1|šį puslapį, apsaugotą|šiuos puslapius, apsaugotus}} „pakopinės apsaugos“ pasirinktimi:
$2',
'namespaceprotected' => "Jūs neturite teisės redaguoti puslapių '''$1''' srityje.",
-'customcssjsprotected' => 'Jūs neturite teisės redaguoti šio puslapio, nes jame yra kito nautotojo asmeninių nustatymų.',
+'customcssprotected' => 'Jūs neturite teisės keisti šį CSS puslapį, nes jame yra kito naudotojo asmeniniai nustatymai.',
+'customjsprotected' => 'Jūs neturite teisės keisti šį JavaScript puslapį, nes jame yra kito naudotojo asmeniniai nustatymai.',
'ns-specialprotected' => 'Specialieji puslapiai negali būti redaguojami.',
'titleprotected' => "[[User:$1|$1]] apsaugojo šį pavadinimą nuo sukūrimo.
Nurodyta priežastis yra ''$2''.",
@@ -595,6 +593,7 @@ Jūsų paskyra buvo sukurta. Nepamirškite pakeisti savo [[Special:Preferences|{
'createaccount' => 'Sukurti paskyrÄ…',
'gotaccount' => "Jau turite paskyrÄ…? '''$1'''.",
'gotaccountlink' => 'Prisijunkite',
+'userlogin-resetlink' => 'Pamiršote savo prisijungimo duomenis?',
'createaccountmail' => 'el. paštu',
'createaccountreason' => 'Priežastis:',
'badretype' => 'Įvesti slaptažodžiai nesutampa.',
@@ -604,13 +603,15 @@ Prašome pasirinkti kitą vardą.',
'createaccounterror' => 'Nepavyko sukurti paskyros: $1',
'nocookiesnew' => 'Naudotojo paskyra buvo sukurta, bet jūs nesate prisijungęs. {{SITENAME}} naudoja slapukus, kad prijungtų naudotojus. Jūs esate išjungę slapukus. Prašome įjungti juos, tada prisijunkite su savo naujuoju naudotojo vardu ir slaptažodžiu.',
'nocookieslogin' => '{{SITENAME}} naudoja slapukus, kad prijungtų naudotojus. Jūs esate išjungę slapukus. Prašome įjungti juos ir pamėginkite vėl.',
+'nocookiesfornew' => 'Paskyra nebuvo sukurta, nes mums nepavyko nustatyti jos Å¡altinio.
+Įsitikinkite, kad įjungti slapukai (angl. cookies) ir tada bandykite dar kartą.',
'noname' => 'Jūs nesate nurodęs teisingo naudotojo vardo.',
'loginsuccesstitle' => 'SÄ—kmingai prisijungÄ—te',
'loginsuccess' => "'''Dabar jūs prisijungęs prie {{SITENAME}} kaip „$1“.'''",
'nosuchuser' => 'NÄ—ra jokio naudotojo, turinÄio vardÄ… „$1“.
Naudotojų varduose skiriamos didžiosios ir mažosios raidės.
Patikrinkite rašybą, arba [[Special:UserLogin/signup|sukurkite naują paskyrą]].',
-'nosuchusershort' => 'Nėra jokio naudotojo, pavadinto „<nowiki>$1</nowiki>“. Patikrinkite rašybą.',
+'nosuchusershort' => 'Nėra jokio naudotojo, pavadinto „$1“. Patikrinkite rašybą.',
'nouserspecified' => 'Jums reikia nurodyti naudotojo vardÄ….',
'login-userblocked' => 'Šis naudotojas yra užblokuotas. Prisijungti neleidžiama.',
'wrongpassword' => 'Įvestas neteisingas slaptažodis. Pamėginkite dar kartą.',
@@ -659,13 +660,14 @@ Jūs galite nekreipti dėmesio į laišką, jei ši paskyra buvo sukurta per kla
'usernamehasherror' => 'Naudotojo vardas negali turėti grotelių simbolio',
'login-throttled' => 'Jūs pernelyg daug kartų bandėte prisijungti.
Palaukite prieš bandant vėl.',
+'login-abort-generic' => 'Jūsų prisijungimas buvo nesėkmingas - Nutraukta',
'loginlanguagelabel' => 'Kalba: $1',
'suspicious-userlogout' => 'Jūsų prašymas atsijungti buvo atmestas, nes, atrodo, jį klaidingai išsiuntė naršyklė arba spartinantysis tarpinis serveris.',
# E-mail sending
'php-mail-error-unknown' => 'Nežinoma klaida PHP mail() funkcijoje',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Keisti slaptažodį',
'resetpass_announce' => 'JÅ«s prisijungÄ—te su atsiųstu laikinuoju kodu. NorÄ—dami užbaigti prisijungimÄ…, Äia jums reikia nustatyti naujÄ…jį slaptažodį:',
'resetpass_text' => '<!-- Ä®terpkite Äia tekstÄ… -->',
@@ -683,6 +685,21 @@ Palaukite prieš bandant vėl.',
Jūs galbūt jau sėkmingai pakeitėte savo slaptažodį ar gavote naują laikiną slaptažodį.',
'resetpass-temp-password' => 'Laikinas slaptažodis:',
+# Special:PasswordReset
+'passwordreset' => 'Atstatyti slaptažodį',
+'passwordreset-text' => 'Užpildykite šią formą, norėdami gauti el priminimas jūsų sąskaitos informaciją.',
+'passwordreset-legend' => 'Atstatyti slaptažodį',
+'passwordreset-disabled' => 'Slaptažodžių atstatymai šiame wikyje išjungti.',
+'passwordreset-pretext' => '{{PLURAL:$1| | Langelyje parašykite vieną duomenų vienetų žemiau}}',
+'passwordreset-username' => 'Naudotojo vardas:',
+'passwordreset-email' => 'E-pašto adresas:',
+'passwordreset-emailtitle' => 'Paskyros informacija apie {{sitename}}',
+'passwordreset-emailtext-ip' => 'Kažkas (tikriausiai jūs, IP adresu $1 ) paprašė informacijos priminimas jūsų! N! sąskaitą {{sitename}} ( $4 ). Šis vartotojas {{PLURAL:$3| sąskaita | sąskaitas}} N!! N!, susijusių su šiuo e-pašto adresą!: N!! $2 ! N! N! {{PLURAL:$3| Šis laikinas slaptažodis | Šie laikini slaptažodžiai}} baigsis {{PLURAL:$5| vieną dieną | $5 dienų}} slaptažodis.! N! Jūs turėtumėte prisijungti ir pasirinkti naują. Jei kažkas padarė tai! N! prašymu, arba jūs prisiminėte savo pirminį slaptažodį, ir jums nebereikia! N! nori ją pakeisti, galite ignoruoti šį pranešimą ir toliau naudotis savo senuoju! N! slaptažodį.',
+'passwordreset-emailtext-user' => 'Vartotojo $1 d. {{sitename}} prašoma informacija priminimas jūsų sąskaitos {{sitename}}! N! ( $4 ). Šis vartotojas {{PLURAL:$3| sąskaita | sąskaitas}}, susijusių su šiuo e-pašto adresą:! N! N! $2 ! N! N! {{PLURAL:$3| Šis laikinas slaptažodis | Šie laikini slaptažodžiai }} baigsis {{PLURAL:$5| vieną dieną | $5 dienų}} slaptažodis.! N! Jūs turėtumėte prisijungti ir pasirinkti naują. Jei kažkas padarė tai! N! prašymu, arba jūs prisiminėte savo pirminį slaptažodį, ir jums nebereikia! N! nori ją pakeisti, galite ignoruoti šį pranešimą ir toliau naudotis savo senuoju! N! slaptažodį.',
+'passwordreset-emailelement' => 'Naudotojo vardas: $1
+Laikinas slaptažodis: $2',
+'passwordreset-emailsent' => 'Priminimo laiškas buvo išsiųstas.',
+
# Edit page toolbar
'bold_sample' => 'Paryškintas tekstas',
'bold_tip' => 'Paryškinti tekstą',
@@ -694,8 +711,6 @@ Jūs galbūt jau sėkmingai pakeitėte savo slaptažodį ar gavote naują laikin
'extlink_tip' => 'Išorinė nuoroda (nepamirškite http:// priedėlio)',
'headline_sample' => 'Skyriaus pavadinimas',
'headline_tip' => 'Antro lygio skyriaus pavadinimas',
-'math_sample' => 'Įveskite formulę',
-'math_tip' => 'MatematinÄ— formulÄ— (LaTeX formatu)',
'nowiki_sample' => 'Čia įterpkite neformuotą tekstą',
'nowiki_tip' => 'Ignoruoti wiki formatÄ…',
'image_sample' => 'Pavyzdys.jpg',
@@ -784,7 +799,7 @@ arba [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaguoti šį puslapį]</span>.'
'noarticletext-nopermission' => 'Å iuo metu Å¡iame puslapyje nÄ—ra jokio teksto.
Jūs galite [[Special:Search/{{PAGENAME}}|ieškoti šio puslapio pavadinimo]] kituose puslapiuose,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ieškoti susijusių įrašų]</span>.',
-'userpage-userdoesnotexist' => 'Naudotojo paskyra „$1“ yra neužregistruota. Prašom patikrinti, ar jūs norite kurti/redaguoti šį puslapį.',
+'userpage-userdoesnotexist' => 'Naudotojo paskyra „<nowiki>$1</nowiki>“ yra neužregistruota. Prašom patikrinti, ar jūs norite kurti/redaguoti šį puslapį.',
'userpage-userdoesnotexist-view' => 'Naudotojo paskyra „$1“ neužregistruota.',
'blocked-notice-logextract' => 'Šis naudotojas šiuo metu yra užblokuotas.
Žemiau pateikiamas paskutinis blokavimo istorijos įrašas:',
@@ -813,6 +828,7 @@ Prašome pamėginti vėl. Jei tai nepadeda, pamėginkite atsijungti ir prisijung
'''Jei tai teisėtas keitimo bandymas, prašome pamėginti vėl. Jei tai nepadeda, pamėginkite [[Special:UserLogout|atsijungti]] ir prisijungti atgal.'''",
'token_suffix_mismatch' => "'''Jūsų pakeitimas buvo atmestas, nes jūsų naršyklė iškraipė skyrybos ženklus keitimo žymėje. Keitimas buvo atmestas norint apsaugoti puslapio tekstą nuo sugadinimo. Taip kartais būna, kai jūs naudojate anoniminį tarpinio serverio paslaugą.'''",
+'edit_form_incomplete' => "'''Kai redaguoti formos dalys nepasiekė serverio; du kartus patikrinti, kad jūsų pakeitimai yra nesugadintos ir bandykite dar kartą.'''",
'editing' => 'Taisomas $1',
'editingsection' => 'Taisomas $1 (skyrelis)',
'editingcomment' => 'Taisomas $1 (komentaras)',
@@ -1157,12 +1173,13 @@ Prašome patikrinti sąrašus.',
'searchdisabled' => 'Projekto {{SITENAME}} paieška yra uždrausta. Galite pamėginti ieškoti Google paieškos sistemoje. Paieškos sistemoje projekto {{SITENAME}} duomenys gali būti pasenę.',
# Quickbar
-'qbsettings' => 'Greitasis pasirinkimas',
-'qbsettings-none' => 'Nerodyti',
-'qbsettings-fixedleft' => 'Fiksuoti kairÄ—je',
-'qbsettings-fixedright' => 'Fiksuoti dešinėje',
-'qbsettings-floatingleft' => 'Plaukiojantis kairÄ—je',
-'qbsettings-floatingright' => 'Plaukiojantis dešinėje',
+'qbsettings' => 'Greitasis pasirinkimas',
+'qbsettings-none' => 'Nerodyti',
+'qbsettings-fixedleft' => 'Fiksuoti kairÄ—je',
+'qbsettings-fixedright' => 'Fiksuoti dešinėje',
+'qbsettings-floatingleft' => 'Plaukiojantis kairÄ—je',
+'qbsettings-floatingright' => 'Plaukiojantis dešinėje',
+'qbsettings-directionality' => 'Pataisyta, priklausomai nuo jūsų rašybos ir kalbos krypties',
# Preferences page
'preferences' => 'Nustatymai',
@@ -1173,9 +1190,10 @@ Prašome patikrinti sąrašus.',
'changepassword' => 'Pakeisti slaptažodį',
'prefs-skin' => 'IÅ¡vaizda',
'skin-preview' => 'Peržiūra',
-'prefs-math' => 'Matematika',
'datedefault' => 'Jokio pasirinkimo',
+'prefs-beta' => 'Beta funkcijos',
'prefs-datetime' => 'Data ir laikas',
+'prefs-labs' => 'Bandomosios funkcijos',
'prefs-personal' => 'Naudotojo profilis',
'prefs-rc' => 'Naujausi keitimai',
'prefs-watchlist' => 'Stebimų sąrašas',
@@ -1197,8 +1215,6 @@ Prašome patikrinti sąrašus.',
'columns' => 'Stulpeliai:',
'searchresultshead' => 'Paieškos nustatymai',
'resultsperpage' => 'Rezultatų puslapyje:',
-'contextlines' => 'EiluÄių rezultate:',
-'contextchars' => 'Konteksto simbolių eilutėje:',
'stub-threshold' => 'Puslapį žymėti <a href="#" class="stub">nebaigtu</a>, jei mažesnis nei:',
'stub-threshold-disabled' => 'IÅ¡jungtas',
'recentchangesdays' => 'Rodomos dienos paskutinių keitimų sąraše:',
@@ -1211,7 +1227,7 @@ Galite panaudoti šią atsitiktinai sugeneruotą reikšmę: $1',
'savedprefs' => 'Nustatymai sėkmingai išsaugoti.',
'timezonelegend' => 'Laiko juosta:',
'localtime' => 'Vietinis laikas:',
-'timezoneuseserverdefault' => 'Naudoti pagal nutylėjimą iš serverio',
+'timezoneuseserverdefault' => 'Naudoti wiki pradinį ($1)',
'timezoneuseoffset' => 'Kita (patikslinti skirtumÄ…)',
'timezoneoffset' => 'Skirtumas¹:',
'servertime' => 'Serverio laikas:',
@@ -1261,7 +1277,8 @@ Jį turi sudaryti ne daugiau kaip $1 {{PLURAL:$1|simbolis|simboliai|simbolių}}.
'email' => 'El. paštas',
'prefs-help-realname' => 'Tikrasis vardas yra neprivalomas.
Jei jūs jį įvesite, jis bus naudojamas pažymėti jūsų darbą.',
-'prefs-help-email' => 'El. pašto adresas yra neprivalomas, bet jis leidžia jums gauti naują slaptažodį, jei jūs užmiršote koks jis buvo, o taip pat jūs galite leisti kitiems pasiekti jus per jūsų naudotojo ar naudotojo aptarimo puslapį neatskleidžiant jūsų tapatybės.',
+'prefs-help-email' => 'E-paÅ¡to adresas yra neprivalomas, taÄiau reikalingas slaptažodį naujo, turi tu pamirÅ¡ai savo slaptažodį.',
+'prefs-help-email-others' => 'Taip pat galite pasirinkti, kad žmonės galėtų susisiekti su jumis per jūsų naudotojo ar naudotojo aptarimo puslapį neatskleidžiant jūsų tapatybės.',
'prefs-help-email-required' => 'El. pašto adresas yra būtinas.',
'prefs-info' => 'PagrindinÄ— informacija',
'prefs-i18n' => 'Kalbos nustatymai',
@@ -1387,15 +1404,15 @@ teisÄ—s",
'right-userrights' => 'Redaguoti visų naudotojų teises',
'right-userrights-interwiki' => 'Keisti naudotojų teises kitose wiki svetainėse',
'right-siteadmin' => 'Atrakinti ir užrakinti duomenų bazę',
-'right-reset-passwords' => 'Atstatyti kitų naudotojų slaptažodžius',
'right-override-export-depth' => 'Eksportuoti puslapius įtraukiant susietus puslapius iki 5 lygio gylio',
'right-sendemail' => 'Siųsti el. laišką kitiems naudotojams',
# User rights log
-'rightslog' => 'Naudotojų teisių istorija',
-'rightslogtext' => 'Pateikiamas naudotojų teisių pakeitimų sąrašas.',
-'rightslogentry' => 'pakeista $1 grupės narystė iš $2 į $3',
-'rightsnone' => '(jokių)',
+'rightslog' => 'Naudotojų teisių istorija',
+'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',
+'rightsnone' => '(jokių)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'skaityti šį puslapį',
@@ -1516,11 +1533,12 @@ Norėdami panaudoti įkeltą failą puslapyje, naudokite tokias nuorodas:
'minlength1' => 'Failo pavadinimas turi būti bent viena raidė.',
'illegalfilename' => 'Failo varde „$1“ yra simbolių, neleidžiamų puslapio pavadinimuose. Prašome pervadint failą ir mėginkite įkelti jį iš naujo.',
'badfilename' => 'Failo pavadinimas pakeistas į „$1“.',
-'filetype-mime-mismatch' => 'Failo plÄ—tinys neatitinka MIME tipo.',
+'filetype-mime-mismatch' => 'Failo plėtinys „.$1“ neatitinka nustatyto šio failo MIME tipo($2).',
'filetype-badmime' => 'Neleidžiama įkelti „$1“ MIME tipo failų.',
'filetype-bad-ie-mime' => 'Negalima įkelti šio failo, kadangi Internet Explorer jį pažymėtų kaip „$1“. Tai yra neleistinas ir potencialiai pavojingas failo tipas.',
'filetype-unwanted-type' => "„.$1“''' yra nepageidautinas failo tipas. {{PLURAL:$3|Pageidautinas failų tipas|pageidautini failų tipai}} yra $2.",
-'filetype-banned-type' => "„.$1“''' nėra leistinas failo tipas. {{PLURAL:$3|Leistinas failų tipas|Leistini failų tipai}} yra $2.",
+'filetype-banned-type' => "'''„.$1“''' nėra {{PLURAL:$4|leistinas failo tipas|leistini failo tipai}}.
+{{PLURAL:$3|Leistinas failų tipas|Leistini failų tipai}} yra $2.",
'filetype-missing' => 'Failas neturi galūnės (pavyzdžiui „.jpg“).',
'empty-file' => 'Failas, kurį patvirtinote, tuÅ¡Äias.',
'file-too-large' => 'Failas, kurį patvirtinote, pernelyg didelis.',
@@ -1536,6 +1554,7 @@ Norėdami panaudoti įkeltą failą puslapyje, naudokite tokias nuorodas:
'large-file' => 'Rekomenduojama, kad failų dydis būtų nedidesnis nei $1; šio failo dydis yra $2.',
'largefileserver' => 'Šis failas yra didesnis nei serveris yra sukonfigūruotas leisti.',
'emptyfile' => 'PanaÅ¡u, kad failas, kurį įkÄ—lÄ—te yra tuÅ¡Äias. Tai gali bÅ«ti dÄ—l klaidos failo pavadinime. Pasitikrinkite ar tikrai norite įkelti Å¡itÄ… failÄ….',
+'windows-nonascii-filename' => 'Ši viki neleidžia naudoti failų vardų su specialiais simboliais.',
'fileexists' => "Failas tuo paÄiu vardu jau egzistuoja, praÅ¡ome pažiÅ«rÄ—ti '''<tt>[[:$1]]</tt>''', jei nesate tikras, ar norite perraÅ¡yti šį failÄ….
[[$1|thumb]]",
'filepageexists' => "Šio failo aprašymo puslapis jau buvo sukurtas '''<tt>[[:$1]]</tt>''', bet šiuo metu nėra jokio failo šiuo pavadinimu.
@@ -1571,6 +1590,8 @@ Jei visvien norite įkelti savo failą, prašome eiti atgal ir įkelti šį fail
Patikrinkite ''file_uploads'' nustatÄ….",
'uploadscripted' => 'Šis failas turi HTML arba programinį kodą, kuris gali būti klaidingai suprastas interneto naršyklės.',
'uploadvirus' => 'Å iame faile yra virusas! Smulkiau: $1',
+'uploadjava' => 'Failas yra ZIP failas, kuriame yra Java .class failas.
+Įkelti Java failus neleidžiama, nes jie gali padėti apeiti saugumo apribojimus.',
'upload-source' => 'Failo Å¡altinis',
'sourcefilename' => 'Įkeliamas failas:',
'sourceurl' => 'Å altinio adresas:',
@@ -1580,10 +1601,6 @@ Patikrinkite ''file_uploads'' nustatÄ….",
'upload-options' => 'Įkėlimo nustatymai',
'watchthisupload' => 'Stebėti šį failą',
'filewasdeleted' => 'Failas Å¡iuo vardu anksÄiau buvo įkeltas, o paskui iÅ¡trintas. Jums reikÄ—tų patikrinti $1 prieÅ¡ bandant įkelti jį vÄ—l.',
-'upload-wasdeleted' => "'''Ä®spÄ—jimas: JÅ«s įkeliate failÄ…, kuris anksÄiau buvo iÅ¡trintas.'''
-
-Jūs turėtumėte nuspręsti, ar verta toliau įkeldinėti šį failą.
-Šio failo šalinimų istorija yra pateikta dėl patogumo:",
'filename-bad-prefix' => "Jūsų įkeliamas failas prasideda su '''„$1“''', bet tai yra neapibūdinantis pavadinimas, dažniausiai priskirtas skaitmeninių kamerų. Prašome suteikti labiau apibūdinantį pavadinimą savo failui.",
'upload-success-subj' => 'Įkelta sėkmingai',
'upload-success-msg' => 'JÅ«sų įkÄ—limas iÅ¡ [$2] buvo sÄ—kmingas. Jį galima rasti Äia: [[:{{ns:file}}:$1]]',
@@ -1605,6 +1622,21 @@ Prašome susisiekti su [[Special:ListUsers/sysop|sistemos administratoriumi]].',
'upload-unknown-size' => 'Nežinomas dydis',
'upload-http-error' => 'Įvyko HTTP klaida: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Įvyko klaida atidarant ZIP patikrinimus failą.',
+'zip-wrong-format' => 'Nurodytas failas nÄ—ra ZIP failas.',
+'zip-bad' => 'Šis failas yra sugadintas ar kitaip neįskaitomas ZIP failą.! N! Ji negali būti tinkamai patikrinti dėl jų saugumo.',
+'zip-unsupported' => 'Šis failas yra ZIP failas, kurį naudoja ZIP funkcijos nepalaiko MediaWiki.! N! Ji negali būti tinkamai patikrinti dėl jų saugumo.',
+
+# Special:UploadStash
+'uploadstash' => 'Ä®kelti AtlicinÄt',
+'uploadstash-summary' => 'Å is puslapis suteikia prieigÄ… prie failų, kurie yra įkeltas į serverį (arba įkelti procesas), taÄiau dar nepaskelbta prie wiki. Å ie failai nÄ—ra matomas visiems kitiems, bet vartotojas, kuris nusiuntÄ— juos.',
+'uploadstash-clear' => 'IÅ¡valyti stashed failai',
+'uploadstash-nofiles' => 'JÅ«s neturite stashed failus.',
+'uploadstash-badtoken' => 'Scenos šį ieškinį, buvo nesėkmingas, galbūt todėl, kad jūsų redagavimo įgaliojimai pasibaigė. Bandykite dar kartą.',
+'uploadstash-errclear' => 'Kliringo failai buvo nesÄ—kmingas.',
+'uploadstash-refresh' => 'Atnaujinti failų sąrašą',
+
# img_auth script messages
'img-auth-accessdenied' => 'Prieiga uždrausta',
'img-auth-nopathinfo' => 'Trūksta PATH_INFO.
@@ -1685,7 +1717,7 @@ When filtered by user, only files where that user uploaded the most recent versi
Yra pasiekiamas ir [[Special:WhatLinksHere/$2|visas sąrašas]].',
'nolinkstoimage' => 'Ä® failÄ… nenurodo joks puslapis.',
'morelinkstoimage' => 'Žiūrėti [[Special:WhatLinksHere/$1|daugiau nuorodų]] į šį failą.',
-'redirectstofile' => '{{PLURAL:$1|Šis failas|$1 failai}} peradresuoja į šį failą:',
+'linkstoimage-redirect' => '$1 (failo peradresavimas) $2',
'duplicatesoffile' => 'Šis failas turi {{PLURAL:$1|$1 dublikatą|$1 dublikatus|$1 dublikatų}} ([[Special:FileDuplicateSearch/$2|daugiau informacijos]]):',
'sharedupload' => 'Šis failas yra iš $1 ir gali būti naudojamas kituose projektuose.',
'sharedupload-desc-there' => 'Šis failas yra iš $1 ir gali būti naudojamas kituose projektuose.
@@ -1780,12 +1812,13 @@ Informacija iš [$2 failo aprašymo puslapio] yra pateikiama žemiau.',
Nuorodos turėtų būti patikslintos, kad rodytų į konkretų puslapį.<br />
Puslapis laikomas daugiaprasmiu puslapiu, jei jis naudoja šabloną, kuris yra nurodomas iš [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Dvigubi peradresavimai',
-'doubleredirectstext' => 'Šiame puslapyje yra puslapių, kurie nukreipia į kitus peradresavimo puslapius, sąrašas.
+'doubleredirects' => 'Dvigubi peradresavimai',
+'doubleredirectstext' => 'Šiame puslapyje yra puslapių, kurie nukreipia į kitus peradresavimo puslapius, sąrašas.
Kiekvienoje eilutėje yra nuorodos į pirmąjį ir antrąjį peradresavimą, taip pat antrojo peradresavimo paskirtis, kuris paprastai yra „tikrasis“ paskirties puslapis, į kurį pirmasis peradresavimas ir turėtų rodyti.
<del>Išbraukti</del> įrašai yra išspręsti.',
-'double-redirect-fixed-move' => '[[$1]] buvo perkeltas, dabar tai peradresavimas į [[$2]]',
-'double-redirect-fixer' => 'Peradresavimų tvarkyklė',
+'double-redirect-fixed-move' => '[[$1]] buvo perkeltas, dabar tai peradresavimas į [[$2]]',
+'double-redirect-fixed-maintenance' => 'Tvarkomas dvigubas peradresavimas iš [[$1]] į [[$2]].',
+'double-redirect-fixer' => 'Peradresavimų tvarkyklė',
'brokenredirects' => 'Peradresavimai į niekur',
'brokenredirectstext' => 'Å ie peradresavimo puslapiai nurodo į neegzistuojanÄius puslapius:',
@@ -1862,6 +1895,7 @@ Primename, kad kitos svetainės gali turėti tiesioginę nuorodą į failą, bet
'pager-newer-n' => '$1 {{PLURAL:$1|naujesnis|naujesni|naujesnių}}',
'pager-older-n' => '$1 {{PLURAL:$1|senesnis|senesni|senesnių}}',
'suppress' => 'Peržiūra',
+'querypage-disabled' => 'Šiame specialiajame puslapyje yra išjungta dėl neefektyvumo.',
# Book sources
'booksources' => 'Knygų šaltiniai',
@@ -1978,6 +2012,10 @@ El. pašto adresas, kurį įvedėte [[Special:Preferences|savo naudotojo nustaty
'noemailtext' => 'Šis naudotojas nėra nurodęs teisingo el. pašto adreso, arba yra pasirinkęs negauti el. pašto iš kitų naudotojų.',
'nowikiemailtitle' => 'El. laiškai neleidžiami',
'nowikiemailtext' => 'Šis naudotojas yra pasirinkęs negauti elektroninių laiškų iš kitų naudotojų.',
+'emailnotarget' => 'Nesamas arba neteisingas vartotojo vardas gavÄ—jui.',
+'emailtarget' => 'Įveskite vartotojo vardą gavėjo',
+'emailusername' => 'Naudotojo vardas:',
+'emailusernamesubmit' => 'Pateikti',
'email-legend' => 'Siųsti elektroninį laišką kitam {{SITENAME}} naudotojui',
'emailfrom' => 'Nuo:',
'emailto' => 'Kam:',
@@ -2002,11 +2040,11 @@ El. pašto adresas, kurį įvedėte [[Special:Preferences|savo naudotojo nustaty
'watchlistanontext' => 'Prašome $1, kad peržiūrėtumėte ar pakeistumėte elementus savo stebimųjų sąraše.',
'watchnologin' => 'Neprisijungęs',
'watchnologintext' => 'Jums reikia būti [[Special:UserLogin|prisijungusiam]], kad pakeistumėte savo stebimųjų sąrašą.',
-'addedwatch' => 'Pridėta į Stebimųjų sąrašą',
+'addwatch' => 'Pridėti į stebimųjų sąrašą',
'addedwatchtext' => "Puslapis „[[:$1]]“ pridėtas į [[Special:Watchlist|stebimųjų sąrašą]].
Būsimi puslapio bei atitinkamo aptarimo puslapio pakeitimai bus rodomi stebimųjų puslapių sąraše,
taip pat bus '''paryškinti''' [[Special:RecentChanges|naujausių keitimų sąraše]], kad išsiskirtų iš kitų puslapių.",
-'removedwatch' => 'Pašalinta iš stebimų',
+'removewatch' => 'Pašalinti iš stebimųjų sąrašo',
'removedwatchtext' => 'Puslapis „[[:$1]]“ pašalintas iš jūsų [[Special:Watchlist|stebimųjų sąrašo]].',
'watch' => 'StebÄ—ti',
'watchthispage' => 'Stebėti šį puslapį',
@@ -2027,8 +2065,9 @@ taip pat bus '''paryškinti''' [[Special:RecentChanges|naujausių keitimų sąra
'watchlist-options' => 'Stebimųjų sąrašo parinktys',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Įtraukiama į stebimųjų sąrašą...',
-'unwatching' => 'Šalinama iš stebimųjų sąrašo...',
+'watching' => 'Įtraukiama į stebimųjų sąrašą...',
+'unwatching' => 'Šalinama iš stebimųjų sąrašo...',
+'watcherrortext' => 'KeiÄiant jÅ«sų stebÄ—jimo nustatymus puslapiui „$1“ įvyko klaida.',
'enotif_mailer' => '{{SITENAME}} Pranešimų sistema',
'enotif_reset' => 'Pažymėti visus puslapius kaip aplankytus',
@@ -2056,17 +2095,20 @@ wiki: $PAGEEDITOR_WIKI
Daugiau praneÅ¡imų apie vÄ—lesnius pakeitimus nebus siunÄiama, jei neapsilankysite puslapyje.
Jūs taip pat galite išjungti pranešimo žymę visiems jūsų stebimiems puslapiams savo stebimųjų sąraše.
- Jūsų draugiškoji projekto {{SITENAME}} pranešimų sistema
+ Jūsų draugiškoji projekto {{SITENAME}} pranešimų sistema
--
+NorÄ—dami pakeisti e-paÅ¡tu siunÄiamų praneÅ¡imų nustatymus, užeikite į
+{{canonicalurl:{{#special:Preferences}}}}
+
Norėdami pakeisti stebimų puslapių nustatymus, užeikite į
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Norėdami puslapį iš stebimų puslapių sąrašo, užeikite į
$UNWATCHURL
Atsiliepimai ir pagalba:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Trinti puslapį',
@@ -2082,7 +2124,7 @@ Atsiliepimai ir pagalba:
Prašome patvirtinti, kad jūs tikrai norite tai padaryti, žinote apie galimus padarinius, ir kad jūs tai darote atsižvelgdami į [[{{MediaWiki:Policy-url}}|politiką]].',
'actioncomplete' => 'Veiksmas atliktas',
'actionfailed' => 'Veiksmas atšauktas',
-'deletedtext' => '„<nowiki>$1</nowiki>“ ištrintas.
+'deletedtext' => '„$1“ ištrintas.
Paskutinių šalinimų istorija - $2.',
'deletedarticle' => 'ištrynė „[[$1]]“',
'suppressedarticle' => 'apribotas „[[$1]]“',
@@ -2138,7 +2180,7 @@ Dabar veikianÄių puslapių apsaugų sÄ…raÅ¡Ä… rasite [[Special:ProtectedPages|
'protect_expiry_invalid' => 'Galiojimo laikas neteisingas.',
'protect_expiry_old' => 'Galiojimo laikas yra praeityje.',
'protect-unchain-permissions' => 'Atrakinti Å¡iuos apsaugos nustatymus',
-'protect-text' => "Čia jūs gali matyti ir keisti apsaugos lygį puslapiui '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Čia jūs gali matyti ir keisti apsaugos lygį puslapiui '''$1'''.",
'protect-locked-blocked' => "Jūs negalite keisti apsaugos lygių, kol esate užbluokuotas.
ÄŒia yra dabartiniai nustatymai puslapiui '''$1''':",
'protect-locked-dblock' => "Apsaugos lygiai negali būti pakeisti dėl duomenų bazės užrakinimo.
@@ -2192,9 +2234,8 @@ Dabar veikianÄių puslapių apsaugų sÄ…raÅ¡Ä… rasite [[Special:ProtectedPages|
'undeletepagetext' => '{{PLURAL:$1|Šis $1 puslapis buvo ištrintas|Šie $1 puslapiai buvo ištrinti|Šie $1 puslapių buvo ištrinti}}, bet dar yra archyve ir gali būti {{PLURAL:$1|atkurtas|atkurti|atkurti}}.
Archyvas gali būti periodiškai valomas.',
'undelete-fieldset-title' => 'Atstatyti versijas',
-'undeleteextrahelp' => "Norėdami atkurti visą puslapį, palikite visas varneles nepažymėtas ir
-spauskite '''''Atkurti'''''. Norėdami atlikti pasirinktinį atstatymą, pažymėkite varneles tų versijų, kurias norėtumėte atstatyti, ir spauskite '''''Atkurti'''''. Paspaudus
-'''''Iš naujo''''' bus išvalytos visos varnelės bei komentaro laukas.",
+'undeleteextrahelp' => "Norėdami atkurti visą puslapio istoriją, palikite visas varneles nepažymėtas ir spauskite '''''{{int:undeletebtn}}'''''.
+Norėdami atlikti pasirinktinį atstatymą, pažymėkite varneles tų versijų, kurias norėtumėte atstatyti, ir spauskite '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|versija|versijos|versijų}} suarchyvuota',
'undeletehistory' => 'Jei atstatysite puslapį, istorijoje bus atstatytos visos versijos.
Jei po iÅ¡trynimo buvo sukurtas puslapis tokiu paÄiu pavadinimu, atstatytos versijos atsiras ankstesnÄ—je istorijoje.',
@@ -2235,9 +2276,12 @@ $1',
'undelete-show-file-submit' => 'Taip',
# Namespace form on various pages
-'namespace' => 'Vardų sritis:',
-'invert' => 'Žymėti priešingai',
-'blanknamespace' => '(PagrindinÄ—)',
+'namespace' => 'Vardų sritis:',
+'invert' => 'Žymėti priešingai',
+'tooltip-invert' => 'Įjunkite šią parinktį jei norite paslėpti nurodytos vardų srities (ir susijusių, jei įjungta parinktis) puslapių pakeitimus',
+'namespace_association' => 'Susiję vardų',
+'tooltip-namespace_association' => 'Įjunkite šią parinktį, kad taipogi įtrauktumėte pokalbių arba temos sritį, susieta su pasirinkta sritimi',
+'blanknamespace' => '(PagrindinÄ—)',
# Contributions
'contributions' => 'Naudotojo įnašas',
@@ -2287,12 +2331,14 @@ Paskutinis blokavimo įrašas pateikiamas žemiau:',
'whatlinkshere-filters' => 'Filtrai',
# Block/unblock
+'autoblockid' => 'Autoblock # $1',
+'block' => 'Blokuoti naudotojÄ…',
+'unblock' => 'Atblokuoti naudotojÄ…',
'blockip' => 'Blokuoti naudotojÄ…',
'blockip-title' => 'Blokuoti naudotojÄ…',
'blockip-legend' => 'Blokuoti naudotojÄ…',
'blockiptext' => 'Naudokite šią formą norėdami uždrausti rašymo teises nurodytui IP adresui ar naudotojui. Tai turėtų būti atliekama tam, kad sustabdytumėte vandalizmą, ir pagal [[{{MediaWiki:Policy-url}}|politiką]].
Žemiau nurodykite tikslią priežastį (pavyzdžiui, nurodydami sugadintus puslapius).',
-'ipaddress' => 'IP adresas',
'ipadressorusername' => 'IP adresas arba naudotojo vardas',
'ipbexpiry' => 'Galiojimo laikas',
'ipbreason' => 'Priežastis:',
@@ -2305,7 +2351,7 @@ Paskutinis blokavimo įrašas pateikiamas žemiau:',
** Gąsdinimai/Įžeidinėjimai
** Piktnaudžiavimas keliomis paskyromis
** Nepriimtinas naudotojo vardas',
-'ipbanononly' => 'Blokuoti tik anoniminius naudotojus',
+'ipb-hardblock' => 'Neleisti prisijungusius naudotojus nuo redagavimo iš šio IP adreso',
'ipbcreateaccount' => 'Neleisti kurti paskyrų',
'ipbemailban' => 'Neleisti naudotojui siųsti el. pašto',
'ipbenableautoblock' => 'Automatiškai blokuoti šio naudotojo paskiausiai naudotą IP adresą, bei bet kokius vėlesnius IP adresus, iš kurių jie mėgina redaguoti',
@@ -2316,12 +2362,15 @@ Paskutinis blokavimo įrašas pateikiamas žemiau:',
'ipbotherreason' => 'Kita/papildoma priežastis',
'ipbhidename' => 'Slėpti naudotojo vardą keitimuose bei sąrašuose',
'ipbwatchuser' => 'Stebėti šio naudotojo puslapį ir jo aptarimų puslapį',
-'ipballowusertalk' => 'Leisti šiam naudotojui, kol jis yra blokuotas, redaguoti savo aptarimų puslapį.',
+'ipb-disableusertalk' => 'Neleiskite šiam nuo redagavimo savo aptarimų puslapis naudotojui užblokuotas',
'ipb-change-block' => 'Perblokuoti šį naudotoją su šiais nustatymais',
+'ipb-confirm' => 'Patvirtinkite blokas',
'badipaddress' => 'Neleistinas IP adresas',
'blockipsuccesssub' => 'Užblokavimas pavyko',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] buvo užblokuotas.<br />
Aplankykite [[Special:IPBlockList|IP blokavimų istoriją]] norėdami jį peržiūrėti.',
+'ipb-blockingself' => 'Jūs ruošiatės blokuoti sau! Ar tikrai norite tai padaryti?',
+'ipb-confirmhideuser' => 'Jūs ruošiatės užblokuoti tam tikro vartotojo su "slėpti vartotojo" įjungtas. Tai bus nuslopinti vartotojo vardą visuose sąrašuose ir žurnalo įrašus. Ar tikrai norite tai padaryti?',
'ipb-edit-dropdown' => 'Redaguoti blokavimų priežastis',
'ipb-unblock-addr' => 'Atblokuoti $1',
'ipb-unblock' => 'Atblokuoti naudotojo vardÄ… arba IP adresÄ…',
@@ -2332,17 +2381,23 @@ Aplankykite [[Special:IPBlockList|IP blokavimų istoriją]] norėdami jį perži
ankÅ¡Äiau užblokuotam IP adresui ar naudotojui.',
'ipusubmit' => 'Atblokuoti šį adresą',
'unblocked' => '[[User:$1|$1]] buvo atblokuotas',
+'unblocked-range' => '$1 buvo atblokuotas',
'unblocked-id' => 'Blokavimas $1 buvo pašalintas',
+'blocklist' => 'Blokuoti naudotojai',
'ipblocklist' => 'Blokuoti naudotojai',
'ipblocklist-legend' => 'Rasti užblokuotą naudotoją',
-'ipblocklist-username' => 'Naudotojas arba IP adresas:',
-'ipblocklist-sh-userblocks' => '$1 paskyros blokavimus',
-'ipblocklist-sh-tempblocks' => '$1 laikinus blokavimus',
-'ipblocklist-sh-addressblocks' => '$1 pavienių IP blokavimus',
+'blocklist-userblocks' => 'Slėpti į blokus',
+'blocklist-tempblocks' => 'SlÄ—pti laikinus blokavimus',
+'blocklist-addressblocks' => 'Slėpti vieną IP blokų',
+'blocklist-timestamp' => 'Laiko žymė',
+'blocklist-target' => 'TikslinÄ—',
+'blocklist-expiry' => 'Galioja iki',
+'blocklist-by' => 'Blokavimo admin',
+'blocklist-params' => 'Blokuoti duomenys',
+'blocklist-reason' => 'Priežastis',
'ipblocklist-submit' => 'Ieškoti',
'ipblocklist-localblock' => 'Vietinis blokavimas',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Kitas blokavimas|Kiti blokavimai}}',
-'blocklistline' => '$1, $2 blokavo $3 ($4)',
'infiniteblock' => 'neribotai',
'expiringblock' => 'baigia galioti $1 $2',
'anononlyblock' => 'tik anonimai',
@@ -2366,7 +2421,7 @@ Pateikiamas paskutinis blokavimo istorijos įrašas.',
'reblock-logentry' => 'pakeisti [[$1]] blokavimo nustatymai, naujas blokavimo laikas – $2 $3',
'blocklogtext' => 'Čia yra naudotojų blokavimo ir atblokavimo sąrašas.
Automatiškai blokuoti IP adresai neišvardinti.
-Jei norite pamatyti dabar blokuojamus adresus, žiūrėkite [[Special:IPBlockList|IP blokavimų sąrašą]].',
+Jei norite pamatyti dabar blokuojamus adresus, žiūrėkite [[Special:BlockList|IP blokavimų sąrašą]].',
'unblocklogentry' => 'atblokavo $1',
'block-log-flags-anononly' => 'tik anoniminiai naudotojai',
'block-log-flags-nocreate' => 'paskyrų kūrimas išjungtas',
@@ -2380,9 +2435,9 @@ Jei norite pamatyti dabar blokuojamus adresus, žiūrėkite [[Special:IPBlockLis
'ipb_expiry_temp' => 'Paslėptų naudotojų vardų blokavimas turi būti nuolatinis.',
'ipb_hide_invalid' => 'Negalima paslėpti šios paskyros; ji gali turėti per daug keitimų.',
'ipb_already_blocked' => '„$1“ jau užblokuotas',
-'ipb-needreblock' => '== Jau užblokuotas ==
-$1 jau yra užblokuotas. Ar norite pakeisti nustatymus?',
+'ipb-needreblock' => '$1 jau yra užblokuotas. Ar norite pakeisti nustatymus?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Kitas blokavimas|Kiti blokavimai}}',
+'unblock-hideuser' => 'Jūs negalite atblokuoti vartotoją, nes jų vardas buvo paslėpta.',
'ipb_cant_unblock' => 'Klaida: Blokavimo ID $1 nerastas. Galbūt jis jau atblokuotas.',
'ipb_blocked_as_range' => 'Klaida: IP $1 nebuvo užblokuotas tiesiogiai, tad negali bÅ«ti atblokuotas. TaÄiau jis buvo užblokuotas kaip srities $2 dalis, kuri gali bÅ«ti atblokuota.',
'ip_range_invalid' => 'Neleistina IP sritis.',
@@ -2424,6 +2479,7 @@ Prašome patvirtinti tai, ką ketinate padaryti.',
'unlockdbsuccesstext' => 'Duomenų bazė buvo atrakinta.',
'lockfilenotwritable' => 'Duomenų bazės užrakto failas nėra įrašomas. Norint užrakinti ar atrakinti duomenų bazę, tinklapio serveris privalo turėti įrašymo teises šiam failui.',
'databasenotlocked' => 'Duomenų bazė neužrakinta.',
+'lockedbyandtime' => '(užrakino {{GENDER:$1|$1}}, diena $2, laikas $3)',
# Move page
'move-page' => 'Pervadinti $1',
@@ -2556,7 +2612,7 @@ Pastaruoju atveju, jūs taip pat galite naudoti nuorodą, pvz. [[{{#Special:Expo
'allmessagesdefault' => 'Pradinis tekstas',
'allmessagescurrent' => 'Dabartinis tekstas',
'allmessagestext' => 'ÄŒia pateikiamas sisteminių praneÅ¡imų sÄ…raÅ¡as, esanÄių MediaWiki vardų srityje.
-Aplankykite [http://www.mediawiki.org/wiki/Localisation „MediaWiki“ lokaliziciją] ir [http://translatewiki.net „translatewiki.net“], jei norite prisidėti prie bendrojo „MediaWiki“ lokalizavimo.',
+Aplankykite [//www.mediawiki.org/wiki/Localisation „MediaWiki“ lokaliziciją] ir [//translatewiki.net „translatewiki.net“], jei norite prisidėti prie bendrojo „MediaWiki“ lokalizavimo.',
'allmessagesnotsupportedDB' => "Šis puslapis nepalaikomas, nes nuostata '''\$wgUseDatabaseMessages''' yra išjungtas.",
'allmessages-filter-legend' => 'Filtras',
'allmessages-filter' => 'Filtruoti pagal būseną:',
@@ -2703,9 +2759,7 @@ Leidžia pridėti atmetimo priežastį komentaruose',
'monobook.js' => '/* Šis JavaScript bus įkeltas tik „MonoBook“ išvaizdos naudotojams. */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metaduomenys yra išjungti šiame serveryje.',
-'nocreativecommons' => 'Creative Commons RDF metaduomenys yra išjungti šiame serveryje.',
-'notacceptable' => 'Projekto serveris negali pateikti duomenų formatu, kurį jūsų klientas galėtų skaityti.',
+'notacceptable' => 'Projekto serveris negali pateikti duomenų formatu, kurį jūsų klientas galėtų skaityti.',
# Attribution
'anonymous' => '{{SITENAME}} {{PLURAL:$1|anoniminis naudotojas|anoniminiai naudotojai}}',
@@ -2728,12 +2782,17 @@ Leidžia pridėti atmetimo priežastį komentaruose',
'spam_blanking' => 'Visos versijos turėjo nuorodų į $1, išvaloma',
# Info page
-'infosubtitle' => 'Puslapio informacija',
-'numedits' => 'Keitimų skaiÄius (puslapis): $1',
-'numtalkedits' => 'Keitimų skaiÄius (aptarimo puslapis): $1',
-'numwatchers' => 'StebinÄiųjų skaiÄius: $1',
-'numauthors' => 'Skirtingų autorių skaiÄius (puslapis): $1',
-'numtalkauthors' => 'Skirtingų autorių skaiÄius (aptarimo puslapis): $1',
+'pageinfo-title' => '„$1“ informacija',
+'pageinfo-header-edits' => 'Pakeitimai',
+'pageinfo-header-watchlist' => 'Stebėjimo sąrašas',
+'pageinfo-header-views' => 'Peržiūrėta',
+'pageinfo-subjectpage' => 'Puslapis',
+'pageinfo-talkpage' => 'Pokalbių puslapis',
+'pageinfo-watchers' => 'StebÄ—tojų skaiÄius',
+'pageinfo-edits' => 'Keitimų skaiÄius',
+'pageinfo-authors' => 'Skirtingų autorių skaiÄius',
+'pageinfo-views' => 'PeržiÅ«rų skaiÄius',
+'pageinfo-viewsperedit' => 'Peržiūrėta redaguojant',
# Skin names
'skinname-standard' => 'KlasikinÄ—',
@@ -2746,25 +2805,6 @@ Leidžia pridėti atmetimo priežastį komentaruose',
'skinname-modern' => 'Moderni',
'skinname-vector' => 'VektorinÄ—',
-# Math options
-'mw_math_png' => 'Visada formuoti PNG',
-'mw_math_simple' => 'HTML paprastais atvejais, kitaip - PNG',
-'mw_math_html' => 'HTML kai įmanoma, kitaip - PNG',
-'mw_math_source' => 'Palikti TeX formatą (tekstinėms naršyklėms)',
-'mw_math_modern' => 'Rekomenduojama modernioms naršyklėms',
-'mw_math_mathml' => 'MathML jei įmanoma (eksperimentinis)',
-
-# Math errors
-'math_failure' => 'Nepavyko apdoroti',
-'math_unknown_error' => 'nežinoma klaida',
-'math_unknown_function' => 'nežinoma funkcija',
-'math_lexing_error' => 'leksikos klaida',
-'math_syntax_error' => 'sintaksÄ—s klaida',
-'math_image_error' => 'PNG konvertavimas nepavyko; patikrinkite, ar teisingai įdiegta latex ir dvipng (arba dvips, gs ir convert)',
-'math_bad_tmpdir' => 'Nepavyksta sukurti arba rašyti į matematikos laikinąjį aplanką',
-'math_bad_output' => 'Nepavyksta sukurti arba rašyti į matematikos išvesties aplanką',
-'math_notexvc' => 'Trūksta texvc vykdomojo failo; pažiūrėkite math/README kaip konfigūruoti.',
-
# Patrolling
'markaspatrolleddiff' => 'Žymėti, kad patikrinta',
'markaspatrolledtext' => 'Pažymėti, kad puslapis patikrintas',
@@ -2800,22 +2840,25 @@ $1',
'nextdiff' => 'Vėlesnis pakeitimas →',
# Media information
-'mediawarning' => "'''DÄ—mesio''': Å is failas gali turÄ—ti kenksmingÄ… kodÄ….
+'mediawarning' => "'''DÄ—mesio''': Å is failas gali turÄ—ti kenksmingÄ… kodÄ….
Jį paleidus jūsų sistema gali būti pažeista.",
-'imagemaxsize' => "Riboti paveikslėlių dydį:<br />''(failų aprašymo puslapiuose)''",
-'thumbsize' => 'Sumažintų paveikslėlių dydis:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|puslapis|puslapiai|puslapių}}',
-'file-info' => 'failo dydis: $1, MIME tipas: $2',
-'file-info-size' => '$1 × $2 taškų, failo dydis: $3, MIME tipas: $4',
-'file-nohires' => '<small>Geresnė raiška negalima.</small>',
-'svg-long-desc' => 'SVG failas, formaliai $1 × $2 taškų, failo dydis: $3',
-'show-big-image' => 'Pilna raiška',
-'show-big-image-thumb' => '<small>Šios peržiūros dydis: $1 × $2 taškų</small>',
-'file-info-gif-looped' => 'ciklinis',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|kadras|kadrai|kadrų}}',
-'file-info-png-looped' => 'ciklinis',
-'file-info-png-repeat' => 'grota $1 {{PLURAL:$1|kartą|kartus|kartų}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|kadras|kadrai|kadrų}}',
+'imagemaxsize' => "Riboti paveikslėlių dydį:<br />''(failų aprašymo puslapiuose)''",
+'thumbsize' => 'Sumažintų paveikslėlių dydis:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|puslapis|puslapiai|puslapių}}',
+'file-info' => 'failo dydis: $1, MIME tipas: $2',
+'file-info-size' => '$1 × $2 taškų, failo dydis: $3, MIME tipas: $4',
+'file-info-size-pages' => '$1 × $2 taškų, failo dydis: $3, MIME tipas: $4, $5 {{PLURAL:$5|page|pages}}',
+'file-nohires' => '<small>Geresnė raiška negalima.</small>',
+'svg-long-desc' => 'SVG failas, formaliai $1 × $2 taškų, failo dydis: $3',
+'show-big-image' => 'Pilna raiška',
+'show-big-image-preview' => '<small>Sumažintos iliustracijos dydis: $1 .</small>',
+'show-big-image-other' => '<small>Kitos rezoliucijos: $1 .</small>',
+'show-big-image-size' => '$1 × $2 taškų',
+'file-info-gif-looped' => 'ciklinis',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|kadras|kadrai|kadrų}}',
+'file-info-png-looped' => 'ciklinis',
+'file-info-png-repeat' => 'grota $1 {{PLURAL:$1|kartą|kartus|kartų}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|kadras|kadrai|kadrų}}',
# Special:NewFiles
'newimages' => 'Naujausių failų galerija',
@@ -2841,14 +2884,20 @@ Visos kitos nuorodos toje paÄioje eilutÄ—je yra laikomos iÅ¡imtimis, t. y. pusl
'metadata-help' => 'Šiame faile yra papildomos informacijos, tikriausiai pridėtos skaitmeninės kameros ar skaitytuvo, naudoto jam sukurti ar perkelti į skaitmeninį formatą. Jei failas buvo pakeistas iš pradinės versijos, kai kurios detalės gali nepilnai atspindėti naują failą.',
'metadata-expand' => 'Rodyti išplėstinę informaciją',
'metadata-collapse' => 'Slėpti išplėstinę informaciją',
-'metadata-fields' => 'EXIF metaduomenų laukai, nurodyti šiame pranešime, bus įtraukti į paveikslėlio puslapį, kai metaduomenų lentelė bus suskleista. Pagal nutylėjimą kiti laukai bus paslėpti.
+'metadata-fields' => 'Vaizdo metaduomenų laukai, nurodyti šiame pranešime, bus įtraukti į paveikslėlio puslapį, kai metaduomenų lentelė bus suskleista.! N! kiti bus paslėpti.!
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Plotis',
@@ -2863,13 +2912,11 @@ Visos kitos nuorodos toje paÄioje eilutÄ—je yra laikomos iÅ¡imtimis, t. y. pusl
'exif-ycbcrpositioning' => 'Y ir C pozicija',
'exif-xresolution' => 'Horizontali raiška',
'exif-yresolution' => 'Vertikali raiška',
-'exif-resolutionunit' => 'X ir Y raiškos matavimo vienetai',
'exif-stripoffsets' => 'Paveikslėlio duomenų vieta',
'exif-rowsperstrip' => 'Eilių skaiÄius juostoje',
'exif-stripbytecounts' => 'Baitai suspaustje juostoje',
'exif-jpeginterchangeformat' => 'JPEG SOI pozicija',
'exif-jpeginterchangeformatlength' => 'JPEG duomenų baitai',
-'exif-transferfunction' => 'PerkÄ—limo funkcija',
'exif-whitepoint' => 'Balto taško chromatiškumas',
'exif-primarychromaticities' => 'Pagrindinių spalvų chromiškumas',
'exif-ycbcrcoefficients' => 'Spalvų pristatym matricos matricos koeficientai',
@@ -2888,7 +2935,6 @@ Visos kitos nuorodos toje paÄioje eilutÄ—je yra laikomos iÅ¡imtimis, t. y. pusl
'exif-compressedbitsperpixel' => 'Paveikslėlio suspaudimo režimas',
'exif-pixelydimension' => 'PaveikslÄ—lio plotis',
'exif-pixelxdimension' => 'Vaizdo aukštis',
-'exif-makernote' => 'Gamintojo pastabos',
'exif-usercomment' => 'Naudotojo komentarai',
'exif-relatedsoundfile' => 'Susijusi garso byla',
'exif-datetimeoriginal' => 'Duomenų generavimo data ir laikas',
@@ -2902,7 +2948,6 @@ Visos kitos nuorodos toje paÄioje eilutÄ—je yra laikomos iÅ¡imtimis, t. y. pusl
'exif-exposureprogram' => 'IÅ¡laikymo programa',
'exif-spectralsensitivity' => 'Spektrinis jautrumas',
'exif-isospeedratings' => 'ISO greitis',
-'exif-oecf' => 'Optoelektronikos konversijos daugiklis',
'exif-shutterspeedvalue' => 'APEX užrakto greiÄio',
'exif-aperturevalue' => 'APEX diafragma',
'exif-brightnessvalue' => 'APEX ryškumas',
@@ -2915,7 +2960,6 @@ Visos kitos nuorodos toje paÄioje eilutÄ—je yra laikomos iÅ¡imtimis, t. y. pusl
'exif-focallength' => 'Židinio nuotolis',
'exif-subjectarea' => 'Objekto zona',
'exif-flashenergy' => 'BlykstÄ—s energija',
-'exif-spatialfrequencyresponse' => 'Erdvės dažnio atsakas',
'exif-focalplanexresolution' => 'Židinio projekcijos X raiška',
'exif-focalplaneyresolution' => 'Židinio projekcijos Y raiška',
'exif-focalplaneresolutionunit' => 'Židinio projekcijos raiškos matavimo vienetai',
@@ -2924,7 +2968,6 @@ Visos kitos nuorodos toje paÄioje eilutÄ—je yra laikomos iÅ¡imtimis, t. y. pusl
'exif-sensingmethod' => 'Jutimo režimas',
'exif-filesource' => 'Failo Å¡altinis',
'exif-scenetype' => 'Scenos tipas',
-'exif-cfapattern' => 'CFA raštas',
'exif-customrendered' => 'Pasirinktinis vaizdo apdorojimas',
'exif-exposuremode' => 'Išlaikymo režimas',
'exif-whitebalance' => 'Baltumo balansas',
@@ -2969,10 +3012,79 @@ Visos kitos nuorodos toje paÄioje eilutÄ—je yra laikomos iÅ¡imtimis, t. y. pusl
'exif-gpsareainformation' => 'GPS zonos pavadinimas',
'exif-gpsdatestamp' => 'GPS data',
'exif-gpsdifferential' => 'GPS diferiancialo pataisymas',
+'exif-jpegfilecomment' => 'JPEG failas komentarÄ…',
+'exif-keywords' => 'Raktiniai žodžiai',
+'exif-worldregioncreated' => 'Pasaulio regione, kad nuotrauka buvo imtasi',
+'exif-countrycreated' => 'Å alis, kad nuotrauka buvo imtasi',
+'exif-countrycodecreated' => 'Kodas Å¡aliai, kad nuotrauka buvo imtasi',
+'exif-provinceorstatecreated' => 'Provincijos ar nurodyti, kad nuotrauka buvo imtasi',
+'exif-citycreated' => 'Miestas, kad nuotrauka buvo imtasi',
+'exif-sublocationcreated' => 'Sublocation miesto, kad nuotrauka buvo imtasi',
+'exif-worldregiondest' => 'Pasaulio regionas rodomas',
+'exif-countrydest' => 'Å alis rodomas',
+'exif-countrycodedest' => 'Kodas Å¡alies rodomas',
+'exif-provinceorstatedest' => 'Rodoma provincija arba valstija',
+'exif-citydest' => 'Rodomas miestas',
+'exif-sublocationdest' => 'Miesto vietovÄ— rodoma',
'exif-objectname' => 'Trumpas pavadinimas',
+'exif-specialinstructions' => 'Specialiosios instrukcijos',
+'exif-headline' => 'Antraštė',
+'exif-credit' => 'PadÄ—ka/tiekÄ—jas',
+'exif-source' => 'Å altinis',
+'exif-editstatus' => 'Paveikslėlio redagavimo būsena',
+'exif-urgency' => 'Skuba',
+'exif-fixtureidentifier' => 'Pastovių duomenų pavadinimas',
+'exif-locationdest' => 'Rodoma vietovÄ—',
+'exif-locationdestcode' => 'Rodomos vietovÄ—s kodas',
+'exif-objectcycle' => 'Dienos laikas, kuriam skiriamas turinys',
+'exif-contact' => 'KontaktinÄ— informacija',
+'exif-writer' => 'Rašytojas',
+'exif-languagecode' => 'Kalba',
+'exif-iimversion' => 'IIM versija',
+'exif-iimcategory' => 'Kategorija',
+'exif-iimsupplementalcategory' => 'Papildomos kategorijos',
+'exif-datetimeexpires' => 'Nenaudokite po',
+'exif-datetimereleased' => 'IÅ¡leista',
+'exif-originaltransmissionref' => 'Pradinis perdavimo vietos kodas',
+'exif-identifier' => 'Identifikatorius',
+'exif-lens' => 'Naudotas objektyvas',
+'exif-serialnumber' => 'kameros serijinis numeris',
+'exif-cameraownername' => 'Fotoaparato savininkas',
+'exif-label' => 'EtiketÄ—',
+'exif-datetimemetadata' => 'Paskutinį kartą metadata duomenys keisti',
+'exif-nickname' => 'Neoficialus paveikslÄ—lio pavadinimas',
+'exif-rating' => 'Vertinimas (iki 5)',
+'exif-rightscertificate' => 'Teisių valdymo sertifikatas',
+'exif-copyrighted' => 'Autorių teisių statusas',
+'exif-copyrightowner' => 'Autorystės teisių savininkas',
+'exif-usageterms' => 'Naudojimo sÄ…lygos',
+'exif-webstatement' => 'Autorių teisių pareiškimas internete',
+'exif-originaldocumentid' => 'Unikalus ID orginalus dokumentas',
+'exif-licenseurl' => 'Autorių teisių licencijos URL',
+'exif-morepermissionsurl' => 'Alternatyvi licencijavimo informacija',
+'exif-attributionurl' => 'Kai pakartotinai naudojate ši darbą, prašome nurodyti į',
+'exif-preferredattributionname' => 'Kai naudojate ši darbą prašome nurodyti',
+'exif-pngfilecomment' => 'JPEG failo komentaras',
+'exif-disclaimer' => 'AtsakomybÄ—s apribojimas',
+'exif-contentwarning' => 'Turinio įspėjimas',
+'exif-giffilecomment' => 'GIF failo komentaras',
+'exif-intellectualgenre' => 'Elemento tipas',
+'exif-subjectnewscode' => 'Objektas kodas',
+'exif-scenecode' => 'IPTC scenos kodas',
+'exif-event' => 'Vaizduojamas įvykis',
+'exif-organisationinimage' => 'Vaizduojama organizacija',
+'exif-personinimage' => 'Vaizduojamas asmuo',
+'exif-originalimageheight' => 'Piešinio aukštis prieš apkarpymą',
+'exif-originalimagewidth' => 'Piešinio plotis prieš apkarpymą',
# EXIF attributes
'exif-compression-1' => 'Nesuspausta',
+'exif-compression-2' => 'CCITT grupės 3 1-Dimensijos Modifikuotas Hafmano duomenų paleidimo ilgio kodavimas.',
+'exif-compression-3' => 'CCITT 3 grupÄ—s fakso kodavimas',
+'exif-compression-4' => 'CCITT 4 grupÄ—s fakso kodavimas',
+
+'exif-copyrighted-true' => 'AutorinÄ—s teisÄ—s',
+'exif-copyrighted-false' => 'Viešas domenas',
'exif-unknowndate' => 'Nežinoma data',
@@ -2991,6 +3103,8 @@ Visos kitos nuorodos toje paÄioje eilutÄ—je yra laikomos iÅ¡imtimis, t. y. pusl
'exif-xyresolution-i' => '$1 taškai colyje',
'exif-xyresolution-c' => '$1 taškai centimetre',
+'exif-colorspace-65535' => 'Spalvos nekalibruotos',
+
'exif-componentsconfiguration-0' => 'neegzistuoja',
'exif-exposureprogram-0' => 'Nenurodyta',
@@ -3104,6 +3218,10 @@ Visos kitos nuorodos toje paÄioje eilutÄ—je yra laikomos iÅ¡imtimis, t. y. pusl
'exif-gpslongitude-e' => 'Rytų ilguma',
'exif-gpslongitude-w' => 'Vakarų ilguma',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1| metras | metrai}} virš jūros lygio',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1| metras | metrai}} žemiau jūros lygio',
+
'exif-gpsstatus-a' => 'Matavimas vykdyme',
'exif-gpsstatus-v' => 'Matuojamas programinis sÄ…veikumas',
@@ -3115,21 +3233,73 @@ Visos kitos nuorodos toje paÄioje eilutÄ—je yra laikomos iÅ¡imtimis, t. y. pusl
'exif-gpsspeed-m' => 'Mylios per valandÄ…',
'exif-gpsspeed-n' => 'Mazgai',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometrai',
+'exif-gpsdestdistance-m' => 'Mylios',
+'exif-gpsdestdistance-n' => 'JÅ«rmylÄ—s',
+
+'exif-gpsdop-excellent' => 'Puikus ($1)',
+'exif-gpsdop-good' => 'Geras ( $1 )',
+'exif-gpsdop-moderate' => 'Vidutinis ($1)',
+'exif-gpsdop-fair' => 'Prastas ($1)',
+'exif-gpsdop-poor' => 'Blogas ( $1 )',
+
+'exif-objectcycle-a' => 'Tik ryte',
+'exif-objectcycle-p' => 'Tik vakare',
+'exif-objectcycle-b' => 'Ir ryte ir vakare',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Tikroji kryptis',
'exif-gpsdirection-m' => 'MagnetinÄ— kryptis',
+'exif-ycbcrpositioning-1' => 'Centruotas',
+'exif-ycbcrpositioning-2' => 'Bendras išdėstymas',
+
+'exif-dc-contributor' => 'Autoriai',
+'exif-dc-coverage' => 'ErdvÄ—s ar laiko apimtis',
+'exif-dc-date' => 'Data (-os)',
+'exif-dc-publisher' => 'LeidÄ—jas',
+'exif-dc-relation' => 'Susijusi medija',
+'exif-dc-rights' => 'TeisÄ—s',
+'exif-dc-source' => 'Å altinis',
+'exif-dc-type' => 'Laikmenos tipas',
+
+'exif-rating-rejected' => 'Atmesta',
+
+'exif-isospeedratings-overflow' => 'Didesnis už 65535',
+
+'exif-iimcategory-ace' => 'Menas, kultūra ir pramogos',
+'exif-iimcategory-clj' => 'Nusikalstamumas ir įstatymas',
+'exif-iimcategory-dis' => 'NelaimÄ—s ir nelaimingi atsitikimai',
+'exif-iimcategory-fin' => 'Ekonomika ir verslas',
+'exif-iimcategory-edu' => 'Å vietimas',
+'exif-iimcategory-evn' => 'Aplinka',
+'exif-iimcategory-hth' => 'Sveikata',
+'exif-iimcategory-hum' => 'Žmogaus interesai',
+'exif-iimcategory-lab' => 'Darbas',
+'exif-iimcategory-lif' => 'Gyvenimo būdas ir laisvalaikis',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Raligija ir tikÄ—jimas',
+'exif-iimcategory-sci' => 'Mokslas ir technologijos',
+'exif-iimcategory-soi' => 'Socialiniai klausimai',
+'exif-iimcategory-spo' => 'Sportas',
+'exif-iimcategory-war' => 'Karas, konfliktas ir neramumai',
+'exif-iimcategory-wea' => 'Oras',
+
+'exif-urgency-normal' => 'Normalus ( $1 )',
+'exif-urgency-low' => 'Žemas ( $1 )',
+'exif-urgency-high' => 'Aukštas ( $1 )',
+'exif-urgency-other' => 'Vartotojo nustatyta pirmenybÄ— ($1)',
+
# External editor support
'edit-externally' => 'Atverti išoriniame redaktoriuje',
-'edit-externally-help' => '(Norėdami gauti daugiau informacijos, žiūrėkite [http://www.mediawiki.org/wiki/Manual:External_editors diegimo instrukcijas])',
+'edit-externally-help' => '(Norėdami gauti daugiau informacijos, žiūrėkite [//www.mediawiki.org/wiki/Manual:External_editors diegimo instrukcijas])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'visos',
-'imagelistall' => 'visi',
-'watchlistall2' => 'visus',
-'namespacesall' => 'visos',
-'monthsall' => 'visi',
-'limitall' => 'visi',
+'watchlistall2' => 'visus',
+'namespacesall' => 'visos',
+'monthsall' => 'visi',
+'limitall' => 'visi',
# E-mail address confirmation
'confirmemail' => 'Patvirtinkite el. pašto adresą',
@@ -3209,17 +3379,24 @@ $1',
'trackbackdeleteok' => 'Trackback buvo sėkmingai ištrintas.',
# Delete conflict
-'deletedwhileediting' => 'Dėmesio: Šis puslapis ištrintas po to, kai pradėjote redaguoti!',
-'confirmrecreate' => "Naudotojas [[User:$1|$1]] ([[User talk:$1|aptarimas]]) ištrynė šį puslapį po to, kai pradėjote jį redaguoti. Trynimo priežastis:
+'deletedwhileediting' => 'Dėmesio: Šis puslapis ištrintas po to, kai pradėjote redaguoti!',
+'confirmrecreate' => "Naudotojas [[User:$1|$1]] ([[User talk:$1|aptarimas]]) ištrynė šį puslapį po to, kai pradėjote jį redaguoti. Trynimo priežastis:
: ''$2''
Prašome patvirtinti, kad tikrai norite iš naujo sukurti puslapį.",
-'recreate' => 'Atkurti',
+'confirmrecreate-noreason' => 'Naudotojas [[User:$1|$1]] ([[User talk:$1|aptarimas]]) ištrynė šį puslapį po to, kai jūs pradėjote redaguoti. Prašome patvirtinti, jog jūs tikrai norite atkurti šį puslapį.',
+'recreate' => 'Atkurti',
# action=purge
'confirm_purge_button' => 'Gerai',
'confirm-purge-top' => 'Išvalyti šio puslapio podėlį?',
'confirm-purge-bottom' => 'Puslapio perkÅ«rimas iÅ¡valo podÄ—lį ir priverÄia sugeneruoti paÄiÄ… naujausiÄ… puslapio versijÄ….',
+# action=watch/unwatch
+'confirm-watch-button' => 'Gerai',
+'confirm-watch-top' => 'Pridėti šį puslapį į stebimųjų sąrašą?',
+'confirm-unwatch-button' => 'Gerai',
+'confirm-unwatch-top' => 'Pašalinti šį puslapį iš jūsų stebimųjų sąrašo?',
+
# Multipage image navigation
'imgmultipageprev' => '↠ankstesnis puslapis',
'imgmultipagenext' => 'kitas puslapis →',
@@ -3266,7 +3443,7 @@ Prašome patvirtinti, kad tikrai norite iš naujo sukurti puslapį.",
'watchlistedit-normal-legend' => 'Šalinti puslapius iš stebimųjų sąrašo',
'watchlistedit-normal-explain' => 'Žemiau yra rodomi puslapiai jūsų stebimųjų sąraše.
Norėdami pašalinti puslapį, prie jo uždėkite varnelė ir paspauskite „{{int:Watchlistedit-normal-submit}}“.
-Jūs taip pat galite [[Special:Watchlist/raw|redaguoti grynąjį stebimųjų sąrašą]].',
+Jūs taip pat galite [[Special:EditWatchlist/raw|redaguoti grynąjį stebimųjų sąrašą]].',
'watchlistedit-normal-submit' => 'Å alinti puslapius',
'watchlistedit-normal-done' => '$1 {{PLURAL:$1|puslapis buvo pašalintas|puslapiai buvo pašalinti|puslapių buvo pašalinta}} iš jūsų stebimųjų sąrašo:',
'watchlistedit-raw-title' => 'Redaguoti grynąjį stebimųjų sąrašą',
@@ -3274,7 +3451,7 @@ Jūs taip pat galite [[Special:Watchlist/raw|redaguoti grynąjį stebimųjų są
'watchlistedit-raw-explain' => 'Žemiau rodomi puslapiai jūsų stebimųjų sąraše, ir gali būti pridėti į ar pašalinti iš sąrašo;
vienas puslapis eilutÄ—je.
Baigę paspauskite „{{int:Watchlistedit-raw-submit}}“.
-Jūs taip pat galite [[Special:Watchlist/edit|naudoti standartinį redaktorių]].',
+Jūs taip pat galite [[Special:EditWatchlist|naudoti standartinį redaktorių]].',
'watchlistedit-raw-titles' => 'Puslapiai:',
'watchlistedit-raw-submit' => 'Atnaujinti stebimųjų sąrašą',
'watchlistedit-raw-done' => 'Jūsų stebimųjų sąrašas buvo atnaujintas.',
@@ -3291,33 +3468,33 @@ Jūs taip pat galite [[Special:Watchlist/edit|naudoti standartinį redaktorių]]
'duplicate-defaultsort' => 'Ä®spÄ—jimas: Numatytasis rikiavimo raktas „$2“ pakeiÄia ankstesnį numatytÄ…jį rikiavimo raktÄ… „$1“.',
# Special:Version
-'version' => 'Versija',
-'version-extensions' => 'Įdiegti priedai',
-'version-specialpages' => 'Specialieji puslapiai',
-'version-parserhooks' => 'Analizatoriaus gaudliai',
-'version-variables' => 'Kintamieji',
-'version-skins' => 'IÅ¡vaizda',
-'version-other' => 'Kita',
-'version-mediahandlers' => 'DaugialypÄ—s terpÄ—s grotuvai',
-'version-hooks' => 'Gaudliai',
-'version-extension-functions' => 'Papildomos funkcijos',
-'version-parser-extensiontags' => 'Analizatoriaus papildomosios gairÄ—s',
-'version-parser-function-hooks' => 'Analizatoriaus funkciniai gaudliai',
-'version-skin-extension-functions' => 'Išvaizdos papildinių funkcijos',
-'version-hook-name' => 'Gaudlio pavadinimas',
-'version-hook-subscribedby' => 'Užsakyta',
-'version-version' => '(Versija $1)',
-'version-license' => 'Licencija',
-'version-poweredby-credits' => "Šis projektas naudoja '''[http://www.mediawiki.org/ MediaWiki]''', autorystės teisės © 2001-$1 $2.",
-'version-poweredby-others' => 'kiti',
-'version-license-info' => 'MediaWiki yra nemokama programinė įranga; galite ją platinti ir/arba modifikuoti pagal GNU General Public License, kurią publikuoja Free Software Foundation; taikoma 2-oji licenzijos versija arba (Jūsų pasirinkimu) bet kuri vėlesnė versija.
+'version' => 'Versija',
+'version-extensions' => 'Įdiegti priedai',
+'version-specialpages' => 'Specialieji puslapiai',
+'version-parserhooks' => 'Analizatoriaus gaudliai',
+'version-variables' => 'Kintamieji',
+'version-antispam' => 'Apsauga nuo šlamšto',
+'version-skins' => 'IÅ¡vaizda',
+'version-other' => 'Kita',
+'version-mediahandlers' => 'DaugialypÄ—s terpÄ—s grotuvai',
+'version-hooks' => 'Gaudliai',
+'version-extension-functions' => 'Papildomos funkcijos',
+'version-parser-extensiontags' => 'Analizatoriaus papildomosios gairÄ—s',
+'version-parser-function-hooks' => 'Analizatoriaus funkciniai gaudliai',
+'version-hook-name' => 'Gaudlio pavadinimas',
+'version-hook-subscribedby' => 'Užsakyta',
+'version-version' => '(Versija $1)',
+'version-license' => 'Licencija',
+'version-poweredby-credits' => "Šis projektas naudoja '''[//www.mediawiki.org/ MediaWiki]''', autorystės teisės © 2001-$1 $2.",
+'version-poweredby-others' => 'kiti',
+'version-license-info' => 'MediaWiki yra nemokama programinė įranga; galite ją platinti ir/arba modifikuoti pagal GNU General Public License, kurią publikuoja Free Software Foundation; taikoma 2-oji licenzijos versija arba (Jūsų pasirinkimu) bet kuri vėlesnė versija.
MediaWiki yra platinama su viltimi, kad ji bus naudinga, bet BE JOKIOS GARANTIJOS; be jokios numanomos PARDAVIMO arba TINKAMUMO TAM TIKRAM TIKSLUI garantijos. Daugiau informacijos galite sužinoti GNU General Public License.
-Jūs turėjote gauti [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License kopiją] kartu su šia programa, jei ne, rašykite Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, JAV arba [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html perskaitykite ją internete].',
-'version-software' => 'Įdiegta programinė įranga',
-'version-software-product' => 'Produktas',
-'version-software-version' => 'Versija',
+Jūs turėjote gauti [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License kopiją] kartu su šia programa, jei ne, rašykite Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, JAV arba [//www.gnu.org/licenses/old-licenses/gpl-2.0.html perskaitykite ją internete].',
+'version-software' => 'Įdiegta programinė įranga',
+'version-software-product' => 'Produktas',
+'version-software-version' => 'Versija',
# Special:FilePath
'filepath' => 'Failo kelias',
@@ -3327,22 +3504,22 @@ JÅ«s turÄ—jote gauti [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public Licens
Paveikslėliai yra rodomi pilna raiška, kiti failų tipai paleidžiami tiesiogiai su jų susietąja programa.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Ieškoti dublikuotų failų',
-'fileduplicatesearch-summary' => 'PasikartojanÄių failų paieÅ¡ka pagal jų kontrolinÄ™ sumÄ….
-
-Įveskite failo pavadinimą be „{{ns:file}}:“ priešdėlio.',
-'fileduplicatesearch-legend' => 'Ieškoti dublikatų',
-'fileduplicatesearch-filename' => 'Failo vardas:',
-'fileduplicatesearch-submit' => 'Ieškoti',
-'fileduplicatesearch-info' => '$1 × $2 pikselių<br />Failo dydis: $3<br />MIME tipas: $4',
-'fileduplicatesearch-result-1' => 'Failas „$1“ neturi identiškų dublikatų.',
-'fileduplicatesearch-result-n' => 'Šis failas „$1“ turi $2 {{PLURAL:$2|identišką dublikatą|identiškus dublikatus|identiškų dublikatų}}.',
+'fileduplicatesearch' => 'Ieškoti dublikuotų failų',
+'fileduplicatesearch-summary' => 'PasikartojanÄių failų paieÅ¡ka pagal jų kontrolinÄ™ sumÄ….',
+'fileduplicatesearch-legend' => 'Ieškoti dublikatų',
+'fileduplicatesearch-filename' => 'Failo vardas:',
+'fileduplicatesearch-submit' => 'Ieškoti',
+'fileduplicatesearch-info' => '$1 × $2 pikselių<br />Failo dydis: $3<br />MIME tipas: $4',
+'fileduplicatesearch-result-1' => 'Failas „$1“ neturi identiškų dublikatų.',
+'fileduplicatesearch-result-n' => 'Šis failas „$1“ turi $2 {{PLURAL:$2|identišką dublikatą|identiškus dublikatus|identiškų dublikatų}}.',
+'fileduplicatesearch-noresults' => 'NÄ—ra failo pavadinimu "$1".',
# Special:SpecialPages
'specialpages' => 'Specialieji puslapiai',
'specialpages-note' => '----
-* Normalūs specialieji puslapiai.
-* <strong class="mw-specialpagerestricted">Apriboti specialieji puslapiai.</strong>',
+ * įprastą specialius puslapius.
+ * <span class="mw-specialpagerestricted">tik specialius puslapius.</span>
+ * <span class="mw-specialpagecached">Talpyklinių specialius puslapius (gali būti pasenusius).</span>',
'specialpages-group-maintenance' => 'Sistemos palaikymo pranešimai',
'specialpages-group-other' => 'Kiti specialieji puslapiai',
'specialpages-group-login' => 'Prisijungimas / Registracija',
diff --git a/languages/messages/MessagesLtg.php b/languages/messages/MessagesLtg.php
index 12fe2570..3bb46078 100644
--- a/languages/messages/MessagesLtg.php
+++ b/languages/messages/MessagesLtg.php
@@ -10,6 +10,7 @@
* @author Dark Eagle
* @author Gleb Borisov
* @author Jureits
+ * @author Reedy
*/
$namespaceNames = array(
@@ -148,10 +149,10 @@ $messages = array(
'searcharticle' => 'Īt',
'history' => 'Puslopys viesture',
'history_short' => 'Viesture',
-'info_short' => 'Informaceja',
'printableversion' => 'Verseja drukavuošonai',
'permalink' => 'Nūtaleja nūruode',
'print' => 'Drukavuot',
+'view' => 'Vērtīs',
'edit' => 'Pataiseit',
'create' => 'Sataiseit',
'editthispage' => 'Pataiseit itū puslopu',
@@ -265,11 +266,15 @@ Par to var ziņuot [[Special:ListUsers/sysop|kaidam administratoram]], nūruodū
'mailmypassword' => 'Atsyuteit maņ jaunu paroli',
'loginlanguagelabel' => 'Volūda: $1',
-# Password reset dialog
+# Change password dialog
'resetpass_text' => '<!-- Dalikt tekstu ite -->',
'resetpass-submit-loggedin' => 'Puormeit paroļu',
'resetpass-submit-cancel' => 'Atsaukt',
+# Special:PasswordReset
+'passwordreset-username' => 'SlÄgvuords:',
+'passwordreset-email' => 'E-posta adress:',
+
# Edit page toolbar
'bold_sample' => 'Pamalnais roksts',
'bold_tip' => 'Pamalnais roksts',
@@ -281,8 +286,6 @@ Par to var ziņuot [[Special:ListUsers/sysop|kaidam administratoram]], nūruodū
'extlink_tip' => 'Uorejuo saite (naaizmierst suokumÄ dalikt "http://")',
'headline_sample' => 'Viersroksta teksts',
'headline_tip' => '2 leidzīņa viersroksts',
-'math_sample' => 'Formulu Ä«rokst ite',
-'math_tip' => 'Matematiska formula (LaTeX)',
'nowiki_sample' => 'Ite rokst naformatietu tekstu',
'nowiki_tip' => 'Najimt vÄrÄ wiki formatiejumu',
'image_sample' => 'Paraugs.jpg',
@@ -602,11 +605,9 @@ Lopys, kas ir tovÄ [[Special:Watchlist|puorraugamÅ«s rokstu sarokstÄ]] ir '''r
# Watchlist
'watchlist' => 'Muns davēris saroksts',
'mywatchlist' => 'Muns davēris saroksts',
-'addedwatch' => 'Davīnuots puorraugamū sarokstam.',
'addedwatchtext' => "Lopa \"[[:\$1]]\" ir davÄ«nuota [[Special:Watchlist|tevis puorraugamajom lopom]], kur tiks paruodeitys izmainis, kas izdareitys itymÄ lopÄ voi ituos lopys sarunu lopÄ, kai ari itei lopa tiks Ä«zeimÄta '''pusrasna''' [[Special:RecentChanges|pÄdejÅ«s izmaiņu lopÄ]], lai itÅ« byutu vÄ«gluok pamaneit.
Ka vÄluok puordÅ«muosi i nagribiesi vairs puorraudzeit itÅ« lopu, spÄ«d iz saitis '''napuorraudzeit''' reiku jÅ«slÄ.",
-'removedwatch' => 'Lopa vairs nateik puorraudzeita',
'removedwatchtext' => 'Lopa "[[:$1]]" ir izjimta nu tova [[Special:Watchlist|puorraugamūs lopu saroksta]].',
'watch' => 'Puorraudzeit',
'watchthispage' => 'Puorraudzeit itū lopu',
@@ -625,7 +626,7 @@ Ka vÄluok puordÅ«muosi i nagribiesi vairs puorraudzeit itÅ« lopu, spÄ«d iz sait
'excontentauthor' => 'turīņs beja: "$1" (vīneigais autors: [[Special:Contributions/$2|$2]])',
'confirmdeletetext' => 'Tu tagad nu datu bazys iztreisi lopu voi biļdi, kai ari tūs īprīškejuos versejis. Lyudzu, apstypryni, ka tu pa eistam tū gribi dareit, ka tu saprūt, ka tū dori i atbylstūši [[{{MediaWiki:Policy-url}}|nūsacejumim]].',
'actioncomplete' => 'Darbeiba pabeigta',
-'deletedtext' => '"<nowiki>$1</nowiki>" beja iztreits.
+'deletedtext' => '"$1" beja iztreits.
Kab apsavÄ“rtu pÄdejuo iztreitÅ« sarokstu, verÄ«s $2.',
'deletedarticle' => 'dzÄsts "[[$1]]"',
'dellogpage' => 'Iztreišonys registris',
@@ -645,7 +646,7 @@ Kab apsavÄ“rtu pÄdejuo iztreitÅ« sarokstu, verÄ«s $2.',
'protectexpiry' => 'Izabeidz:',
'protect_expiry_invalid' => 'Beigu termiņš ir nadereigs.',
'protect_expiry_old' => 'Beigu termiņš jau paguojs.',
-'protect-text' => "Ite var apsavērt i izmaineit lopys '''<nowiki>$1</nowiki>''' aizsardzeibys leimini.",
+'protect-text' => "Ite var apsavērt i izmaineit lopys '''$1''' aizsardzeibys leimini.",
'protect-locked-access' => "Jiusu kontam nav atļuovis maineit lopys aizsardzeibys pakuopi.
Pašreizejī lopys '''$1''' īstatejumi ir:",
'protect-cascadeon' => 'Itei lopa niu ir aizsorguota, deļ tam ka tei ir Ä«lykta {{PLURAL:$1|itadÄ lopÄ|itaiduos lopuos}} (mainÅ«t ituos lopys aizsardzeibys leimini tuos aizsardzeiba nabyus nÅ«jimta):',
@@ -841,11 +842,10 @@ Tys ļaun davÄ«nuot pamatuojumu kÅ«psavylkumÄ.',
'nextdiff' => 'Jaunuokuo verseja →',
# Media information
-'file-info-size' => '$1 × $2 pikseli, faila izmÄrs: $3, MIME tips: $4',
-'file-nohires' => '<small>Augstuoka izškirtspieja nav pīejama.</small>',
-'svg-long-desc' => 'SVG fails, definÄtais lelums $1 × $2 pikseli, faila lelums: $3',
-'show-big-image' => 'PylnÄ lelumÄ',
-'show-big-image-thumb' => '<small>Ituo pyrmsskota lelums: $1 × $2 pikseli</small>',
+'file-info-size' => '$1 × $2 pikseli, faila izmÄrs: $3, MIME tips: $4',
+'file-nohires' => '<small>Augstuoka izškirtspieja nav pīejama.</small>',
+'svg-long-desc' => 'SVG fails, definÄtais lelums $1 × $2 pikseli, faila lelums: $3',
+'show-big-image' => 'PylnÄ lelumÄ',
# Special:NewFiles
'newimages-legend' => 'Fiļtris',
@@ -867,19 +867,23 @@ Puorejī lauki, piec nūklusiejuma, byus nūglobuoti.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Izmaineit itū failu ar uoreju programu',
-'edit-externally-help' => '(Verīs [http://www.mediawiki.org/wiki/Manual:External_editors instrukcijas] Mediawiki.org, kab dabuotu vaira informacejis).',
+'edit-externally-help' => '(Verīs [//www.mediawiki.org/wiki/Manual:External_editors instrukcijas] Mediawiki.org, kab dabuotu vaira informacejis).',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'vysi',
-'imagelistall' => 'vysi',
-'watchlistall2' => 'vysys',
-'namespacesall' => 'vysys',
-'monthsall' => 'vysi',
-'limitall' => 'vysys',
+'watchlistall2' => 'vysys',
+'namespacesall' => 'vysys',
+'monthsall' => 'vysi',
+'limitall' => 'vysys',
# Watchlist editing tools
'watchlisttools-view' => 'Apsavērt atbylstūšuos izmainis',
diff --git a/languages/messages/MessagesLv.php b/languages/messages/MessagesLv.php
index 333c350d..d7e63d06 100644
--- a/languages/messages/MessagesLv.php
+++ b/languages/messages/MessagesLv.php
@@ -9,7 +9,9 @@
*
* @author Dark Eagle
* @author FnTmLV
+ * @author Geimeris
* @author GreenZeb
+ * @author Karlis
* @author Kikos
* @author Knakts
* @author Marozols
@@ -173,14 +175,7 @@ $messages = array(
'listingcontinuesabbrev' => ' (turpinÄjums)',
'index-category' => 'IndeksÄ“tÄs lapas',
'noindex-category' => 'NeindeksÄ“tÄs lapas',
-
-'mainpagetext' => "'''MediaWiki veiksmīgi ieinstalēts'''",
-'mainpagedocfooter' => 'Izlasi [http://meta.wikimedia.org/wiki/Help:Contents LietotÄja pamÄcÄ«bu], lai iegÅ«tu vairÄk informÄcijas par Wiki programmatÅ«ras lietoÅ¡anu.
-
-== Pirmie soļi ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings KonfigurÄcijas iespÄ“ju saraksts]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki J&A]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ParakstÄ«ties uz paziņojumiem par jaunÄm MediaWiki versijÄm]',
+'broken-file-category' => 'Lapas, kurÄs ir bojÄtas failu saites',
'about' => 'Par',
'article' => 'Raksts',
@@ -232,10 +227,10 @@ $messages = array(
'history' => 'hronoloģija',
'history_short' => 'Hronoloģija',
'updatedmarker' => 'atjauninÄti kopÅ¡ pÄ“dÄ“jÄ apmeklÄ“juma',
-'info_short' => 'InformÄcija',
'printableversion' => 'DrukÄjama versija',
'permalink' => 'PastÄvÄ«gÄ saite',
'print' => 'DrukÄt',
+'view' => 'Skatīt',
'edit' => 'Izmainīt šo lapu',
'create' => 'Izveidot',
'editthispage' => 'Izmainīt šo lapu',
@@ -243,6 +238,7 @@ $messages = array(
'delete' => 'Dzēst',
'deletethispage' => 'Dzēst šo lapu',
'undelete_short' => 'Atjaunot $1 {{PLURAL:$1|versiju|versijas}}',
+'viewdeleted_short' => 'Apskatīt {{PLURAL:$1|vienu dzēstu labojumu|$1 dzēstus labojumus}}',
'protect' => 'AizsargÄt',
'protect_change' => 'izmainīt',
'protectthispage' => 'AizsargÄt Å¡o lapu',
@@ -324,6 +320,8 @@ $1',
'toc' => 'Satura rÄdÄ«tÄjs',
'showtoc' => 'parÄdÄ«t',
'hidetoc' => 'paslēpt',
+'collapsible-collapse' => 'Sakļaut',
+'collapsible-expand' => 'Izplest',
'thisisdeleted' => 'Apskatīt vai atjaunot $1?',
'viewdeleted' => 'Skatīt $1?',
'restorelink' => '$1 {{PLURAL:$1|dzÄ“sto versiju|dzÄ“stÄs versijas}}',
@@ -335,6 +333,8 @@ $1',
'page-rss-feed' => '"$1" RSS barotne',
'page-atom-feed' => '"$1" Atom barotne',
'red-link-title' => '$1 (lapa neeksistē)',
+'sort-descending' => 'KÄrtot dilstoÅ¡Ä secÄ«bÄ',
+'sort-ascending' => 'KÄrtot augoÅ¡Ä secÄ«bÄ',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Raksts',
@@ -412,10 +412,9 @@ VaicÄjums: $2',
'protectedpagetext' => 'Å Ä« lapa ir aizsargÄta lai novÄ“rstu tÄs izmainÄ«Å¡anu.',
'viewsourcetext' => 'Tu vari apskatīties un nokopēt šīs lapas vikitekstu:',
'protectedinterface' => 'Å Ä« lapa satur programmatÅ«ras interfeisÄ lietotu tekstu un ir bloÄ·Ä“ta pret izmaiņÄm, lai pasargÄtu no bojÄjumiem.',
-'editinginterface' => "'''BrÄ«dinÄjums:''' Tu izmaini lapu, kuras saturu izmanto wiki programmatÅ«ras lietotÄja saskarnÄ“ (''interfeisÄ''). Å Ä«s lapas izmaiņas ietekmÄ“s lietotÄja saskarni citiem lietotÄjiem. PÄ“c modificÄ“Å¡anas, Å¡Ä«s izmaiņas bÅ«tu lietderÄ«gi pievienot arÄ« [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], kas ir MediaWiki lokalizÄ“Å¡anas projekts.",
+'editinginterface' => "'''BrÄ«dinÄjums:''' Tu izmaini lapu, kuras saturu izmanto wiki programmatÅ«ras lietotÄja saskarnÄ“ (''interfeisÄ''). Å Ä«s lapas izmaiņas ietekmÄ“s lietotÄja saskarni citiem lietotÄjiem. PÄ“c modificÄ“Å¡anas, Å¡Ä«s izmaiņas bÅ«tu lietderÄ«gi pievienot arÄ« [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], kas ir MediaWiki lokalizÄ“Å¡anas projekts.",
'sqlhidden' => '(SQL vaicÄjums paslÄ“pts)',
'namespaceprotected' => "Tev nav atļaujas izmainīt lapas, kas atrodas '''$1''' ''namespacē''.",
-'customcssjsprotected' => "Tev nav atļaujas izmainÄ«t Å¡o lapu, tÄpÄ“c, ka tÄ satur cita lietotÄja personÄ«gos uzstÄdÄ«jumus (''settings'').",
'ns-specialprotected' => 'Nevar izmainÄ«t Ä«paÅ¡Äs lapas.',
'titleprotected' => "Å Ä« lapa ir aizsargÄta pret izveidoÅ¡anu. To aizsargÄja [[User:$1|$1]].
NorÄdÄ«tais iemesls bija ''$2''.",
@@ -452,6 +451,7 @@ Tavs lietotÄja konts ir izveidots. Neaizmirsti, ka ir iespÄ“jams mainÄ«t [[Spec
'createaccount' => 'Izveidot jaunu lietotÄju',
'gotaccount' => "Tev jau ir lietotÄjvÄrds? '''$1'''!",
'gotaccountlink' => 'Dodies iekÅ¡Ä',
+'userlogin-resetlink' => 'Esat aizmirsis savu pieslÄ“gÅ¡anÄs informÄciju?',
'createaccountmail' => 'pa e-pastu',
'createaccountreason' => 'Iemesls:',
'badretype' => 'Tevis ievadÄ«tÄs paroles nesakrÄ«t.',
@@ -465,7 +465,7 @@ LÅ«dzu, izvÄ“lieties citu vÄrdu.',
'loginsuccesstitle' => 'Ieiešana veiksmīga',
'loginsuccess' => 'Tu esi ienÄcis {{grammar:lokatÄ«vs|{{SITENAME}}}} kÄ "$1".',
'nosuchuser' => 'Å eit nav lietotÄja ar vÄrdu "$1". LietotÄjvÄrdi ir reÄ£istrjutÄ«gi (lielie un mazie burti nav viens un tas pats) PÄrbaudi, vai pareizi uzrakstÄ«ts, vai arÄ« [[Special:UserLogin/signup|izveido jaunu kontu]].',
-'nosuchusershort' => 'Å eit nav lietotÄja ar vÄrdu "<nowiki>$1</nowiki>". PÄrbaudi, vai nav drukas kļūda.',
+'nosuchusershort' => 'Å eit nav lietotÄja ar vÄrdu "$1". PÄrbaudi, vai nav drukas kļūda.',
'nouserspecified' => 'Tev jÄnorÄda lietotÄjvÄrds.',
'login-userblocked' => 'Å is lietotÄjs ir bloÄ·Ä“ts. PieslÄ“gÅ¡anÄs nav atļauta.',
'wrongpassword' => 'Tu ievadīji nepareizu paroli. Lūdzu, mēģini vēlreiz.',
@@ -503,12 +503,13 @@ TÄdēļ Å¡obrÄ«d no Å¡Ä«s IP adreses vairs nevar izveidot jaunus kontus.',
'usernamehasherror' => 'LietotÄjvÄrds nevar saturÄ“t hash simbolus',
'login-throttled' => 'Tu esi veicis pÄrÄk daudz ieieÅ¡anas mÄ“Ä£inÄjumus.
Lūdzu uzgaidi pirms mēģini vēlreiz.',
+'login-abort-generic' => 'JÅ«su pieteikÅ¡anÄs bija neveiksmÄ«ga — DarbÄ«ba pÄrtraukta',
'loginlanguagelabel' => 'Valoda: $1',
# E-mail sending
'php-mail-error-unknown' => 'NezinÄma kļūda PHP mail() funkcijÄ',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Mainīt paroli',
'resetpass_header' => 'Mainīt konta paroli',
'oldpassword' => 'VecÄ parole',
@@ -525,6 +526,17 @@ Notiek ieiešana...',
Tu jau esi veiksmīgi nomainījis savu galveno paroli, vai arī esi pieprasījis jaunu pagaidu paroli.',
'resetpass-temp-password' => 'Pagaidu parole:',
+# Special:PasswordReset
+'passwordreset' => 'Paroles atiestatīšana',
+'passwordreset-legend' => 'Atiestatīt paroli',
+'passwordreset-disabled' => 'Paroles atiestates Å¡ajÄ viki ir atspÄ“jotas.',
+'passwordreset-username' => 'LietotÄjvÄrds:',
+'passwordreset-email' => 'E-pasta adrese:',
+'passwordreset-emailtitle' => 'Konta informÄcija {{SITENAME}}',
+'passwordreset-emailelement' => 'LietotÄjvÄrds: $1
+Pagaidu parole: $2',
+'passwordreset-emailsent' => 'AtgÄdinÄjuma e-pasts ir nosÅ«tÄ«ts.',
+
# Edit page toolbar
'bold_sample' => 'Teksts boldÄ',
'bold_tip' => 'Teksts treknrakstÄ',
@@ -536,8 +548,6 @@ Tu jau esi veiksmīgi nomainījis savu galveno paroli, vai arī esi pieprasījis
'extlink_tip' => 'Ä€rÄ“jÄ saite (neaizmirsti sÄkumÄ pierakstÄ«t "http://")',
'headline_sample' => 'Virsraksta teksts',
'headline_tip' => '2. līmeņa virsraksts',
-'math_sample' => 'Å eit ievieto formulu',
-'math_tip' => 'MatemÄtikas formula (LaTeX)',
'nowiki_sample' => 'Šeit raksti neformatētu tekstu',
'nowiki_tip' => 'Ignorēt wiki formatējumu',
'image_sample' => 'Piemers.jpg',
@@ -622,13 +632,18 @@ Ja tu esi anonÄ«ms lietotÄjs un uzskati, ka tev ir adresÄ“ti neatbilstoÅ¡i kome
'noarticletext-nopermission' => 'Å ajÄ lapÄ paÅ¡laik nav nekÄda teksta.
Tu vari [[Special:Search/{{PAGENAME}}|meklÄ“t Å¡Ä«s lapas nosaukumu]] citÄs lapÄs,
vai <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} meklēt saistītus reģistru ierakstus]</span>.',
-'userpage-userdoesnotexist' => 'LietotÄjs "$1" nav reÄ£istrÄ“ts.
+'userpage-userdoesnotexist' => 'LietotÄjs "<nowiki>$1</nowiki>" nav reÄ£istrÄ“ts.
LÅ«dzu, pÄrliecinies vai vÄ“lies izveidot/izmainÄ«t Å¡o lapu.',
'userpage-userdoesnotexist-view' => 'LietotÄjs "$1" nav reÄ£istrÄ“ts.',
'blocked-notice-logextract' => 'Å is lietotÄjs paÅ¡laik ir nobloÄ·Ä“ts.
PÄ“dÄ“jais bloÄ·Ä“Å¡anas reÄ£istra ieraksts ir apskatÄms zemÄk:',
-'clearyourcache' => "'''PiezÄ«me - PÄ“c saglabÄÅ¡anas, lai bÅ«tu redzamas izmaiņas, var bÅ«t nepiecieÅ¡amas iztÄ«rÄ«t pÄrlÅ«ka keÅ¡atmiņu.''' '''Mozilla / Firefox / Safari:''' turi nospiestu ''Shift'' un klikÅ¡Ä·ini ''Reload,'' vai arÄ« spied ''Ctrl-F5'' vai ''Ctrl-R'' (''Command-R'' uz Mac); '''Konqueror: '''klikÅ¡Ä·ini ''Reload'' vai spied uz ''F5;'' '''Opera:''' keÅ¡u var iztÄ«rÄ«t ''Tools → Preferences;'' '''Internet Explorer:''' turi nospiestu ''Ctrl'' un klikÅ¡Ä·ini ''Refresh,'' vai spied ''Ctrl-F5.''",
+'clearyourcache' => "'''PiezÄ«me:''' Lai redzÄ“tu izmaiņas, pÄ“c saglabÄÅ¡anas jums var nÄkties iztÄ«rÄ«t sava pÄrlÅ«ka keÅ¡atmiņu.
+* '''Firefox / Safari:''' Pieturiet ''Shift'' un klikÅ¡Ä·iniet uz ''PÄrlÄdÄ“t'' vai nospiediet ''Ctrl-F5'' vai ''Ctrl-R'' (''Command-R'' uz Mac)
+* '''Google Chrome:''' Nospiediet ''Ctrl-Shift-R'' (''Command-Shift-R'' uz Mac)
+* '''Internet Explorer:''' Pieturiet ''Ctrl'' un klikÅ¡Ä·iniet uz ''PÄrlÄdÄ“t'' vai nospiediet ''Ctrl-F5''
+* '''Konqueror:''' KlikÅ¡Ä·iniet uz ''PÄrlÄdÄ“t'' vai nospiediet ''F5''
+* '''Opera:''' Iztīriet kešatmiņu ''Tools → Preferences''",
'usercssyoucanpreview' => "'''Ieteikums:''' Lieto pogu \"{{int:showpreview}}\", lai pÄrbaudÄ«tu savu jauno CSS pirms saglabÄÅ¡anas.",
'userjsyoucanpreview' => "'''Ieteikums:''' Lieto pogu \"{{int:showpreview}}\", lai pÄrbaudÄ«tu savu jauno JavaScript pirms saglabÄÅ¡anas.",
'usercsspreview' => "'''Atceries, ka Å¡is ir tikai tava lietotÄja CSS pirmskats, lapa vÄ“l nav saglabÄta!'''",
@@ -946,9 +961,10 @@ PagaidÄm vari meklÄ“t, izmantojot Google vai Yahoo.
'changepassword' => 'Mainīt paroli',
'prefs-skin' => 'Apdare',
'skin-preview' => 'Priekšskats',
-'prefs-math' => 'Formulas',
'datedefault' => 'Vienalga',
+'prefs-beta' => 'Beta funkcijas',
'prefs-datetime' => 'Datums un laiks',
+'prefs-labs' => 'Laboratorijas funkcijas',
'prefs-personal' => 'LietotÄja dati',
'prefs-rc' => 'PÄ“dÄ“jÄs izmaiņas',
'prefs-watchlist' => 'UzraugÄmie raksti',
@@ -970,8 +986,6 @@ PagaidÄm vari meklÄ“t, izmantojot Google vai Yahoo.
'columns' => 'Simbolu skaits rindiņÄ:',
'searchresultshead' => 'Meklēšana',
'resultsperpage' => 'LappusÄ“ parÄdÄmo rezultÄtu skaits',
-'contextlines' => 'Cik rindiņas parÄdÄ«t katram atrastajam rezultÄtam',
-'contextchars' => 'Konteksta simbolu skaits vienÄ rindiņÄ',
'stub-threshold-disabled' => 'Atslēgts',
'recentchangesdays' => 'Dienu skaits, kuru rÄdÄ«t pÄ“dÄ“jajÄs izmaiņÄs:',
'recentchangesdays-max' => 'Ne vairÄk kÄ $1 {{PLURAL:$1|diena|dienas}}',
@@ -983,7 +997,7 @@ Ja vēlies, tu vari izmantot šo nejauši uzģenerēto kodu: $1',
'savedprefs' => 'Tavas izvÄ“les ir saglabÄtas.',
'timezonelegend' => 'Laika josla:',
'localtime' => 'Vietējais laiks:',
-'timezoneuseserverdefault' => 'Lietot servera noklusēto',
+'timezoneuseserverdefault' => 'Lietot viki noklusēto ($1)',
'timezoneuseoffset' => 'Cita (norÄdi starpÄ«bu)',
'timezoneoffset' => 'Starpība¹:',
'servertime' => 'Servera laiks šobrīd:',
@@ -1031,7 +1045,7 @@ NorÄdÄ«tÄ parametra vÄ“rtÄ«ba bÅ«s publiski pieejama.',
'email' => 'E-pasts',
'prefs-help-realname' => 'Īstais vÄrds nav obligÄti jÄnorÄda.
Ja tu izvÄ“lies to norÄdÄ«t, tas tiks izmantots, lai identificÄ“tu tavu darbu (ieguldÄ«jumu {{grammar:lokatÄ«vs|{{SITENAME}}}}).',
-'prefs-help-email' => 'E-pasts nav obligÄti jÄnorÄda, taÄu tÄ norÄdÄ«Å¡ana nodroÅ¡ina iespÄ“ju atsÅ«tÄ«t paroli, ja tu to esi aizmirsis. Å Ä« iespÄ“ja arÄ« ļauj citiem sazinÄties ar tevi, izmantojot tavu lietotÄja lapu vai lietotÄja diskusiju lapu, tev nekur neatklÄjot savu identitÄti.',
+'prefs-help-email' => 'E-pasta adrese nav obligÄta, bet ir nepiecieÅ¡ama nozaudÄ“tas paroles atjaunoÅ¡anai.',
'prefs-help-email-required' => 'E-pasta adrese ir obligÄta.',
'prefs-info' => 'PamatinformÄcija',
'prefs-i18n' => 'InternacionalizÄcija',
@@ -1050,7 +1064,7 @@ Ja tu izvÄ“lies to norÄdÄ«t, tas tiks izmantots, lai identificÄ“tu tavu darbu (
# User preference: e-mail validation using jQuery
'email-address-validity-valid' => 'E-pasta adrese šķiet derīga',
-'email-address-validity-invalid' => 'Ievadi derīgu e-pasta adresi',
+'email-address-validity-invalid' => 'Ievadiet derīgu e-pasta adresi',
# User rights
'userrights' => 'LietotÄju tiesÄ«bu pÄrvaldÄ«ba',
@@ -1149,7 +1163,6 @@ Ja tu izvÄ“lies to norÄdÄ«t, tas tiks izmantots, lai identificÄ“tu tavu darbu (
'right-userrights' => 'MainÄ«t visu lietotÄju tiesÄ«bas',
'right-userrights-interwiki' => 'MainÄ«t lietotÄju tiesÄ«bas citÄs VikipÄ“dijÄs',
'right-siteadmin' => 'BloÄ·Ä“t un atbloÄ·Ä“t datubÄzi',
-'right-reset-passwords' => 'AtiestatÄ«t citu lietotÄju paroles',
'right-sendemail' => 'SÅ«tÄ«t e-pastu citiem lietotÄjiem',
# User rights log
@@ -1314,6 +1327,7 @@ PÄrskatÄmÄka versija ir pieejama [[Special:NewFiles|jauno attÄ“lu galerijÄ]]
šī faila izmērs ir $2.',
'largefileserver' => 'Å is fails ir lielÄks nekÄ serveris ņem pretÄ«.',
'emptyfile' => 'Å Ä·iet, ka tu esi augÅ¡uplÄdÄ“jis tukÅ¡u failu. IespÄ“jams, faila nosaukumÄ esi pieļÄvis kļūdu. LÅ«dzu, pÄrbaudi, vai tieÅ¡Äm tu vÄ“lies augÅ¡uplÄdÄ“t tieÅ¡i Å¡o failu.',
+'windows-nonascii-filename' => 'Å Ä« viki neatbalsta failu nosaukumus ar Ä«paÅ¡Äm rakstzÄ«mÄ“m.',
'fileexists' => "Fails ar Å¡Ädu nosaukumu jau pastÄv, lÅ«dzu, pÄrbaudi '''<tt>[[:$1]]</tt>''', ja neesi droÅ¡s, ka vÄ“lies to mainÄ«t.
[[$1|thumb]]",
'fileexists-extension' => "PastÄv fails ar lÄ«dzÄ«gu nosaukumu: [[$2|thumb]]
@@ -1349,10 +1363,6 @@ LÅ«dzu, pÄrbaudi file_uploads uzstÄdÄ«jumu.',
'watchthisupload' => 'Uzraudzīt šo failu',
'filewasdeleted' => 'Fails ar Å¡Ädu nosaukumu jau ir bijis augÅ¡uplÄdÄ“ts un pÄ“c tam izdzÄ“sts.
Apskaties $1 pirms turpini Å¡o failu augÅ¡uplÄdÄ“t atkÄrtoti.',
-'upload-wasdeleted' => "'''BrÄ«dinÄjums: Tu augÅ¡uplÄdÄ“ failu kas agrÄk jau ir ticis izdzÄ“sts.'''
-
-ApdomÄ labi, vai tieÅ¡Äm ir lietderÄ«gi turpinÄt Å¡Ä« faila augÅ¡uplÄdi.
-Te var apskatÄ«ties dzÄ“Å¡anas reÄ£istru, lai noskaidrotu kÄpÄ“c Å¡o failu toreiz izdzÄ“sa:",
'filename-bad-prefix' => "Faila vÄrds failam, kuru tu mÄ“Ä£ini augÅ¡pulÄdÄ“t, sÄkas ar '''\"\$1\"''', kas ir neaprakstoÅ¡s vÄrds, kÄdu parasti uzÄ£enerÄ“ digitÄlais fotoaparÄts.
LÅ«dzu izvÄ“lies aprakstoÅ¡Äku vÄrdu Å¡im failam.",
'upload-success-subj' => 'AugÅ¡upielÄde veiksmÄ«ga',
@@ -1374,6 +1384,13 @@ LÅ«dzu, sazinieties ar [[Special:ListUsers/sysop|administratoru.]]',
'upload-unknown-size' => 'NezinÄms izmÄ“rs',
'upload-http-error' => 'HTTP kļūda: $1',
+# ZipDirectoryReader
+'zip-wrong-format' => 'NorÄdÄ«tais fails nebija ZIP fails.',
+
+# Special:UploadStash
+'uploadstash-errclear' => 'Failu tīrīšana bija neveiksmīga.',
+'uploadstash-refresh' => 'AtsvaidzinÄt failu sarakstu',
+
# img_auth script messages
'img-auth-accessdenied' => 'Pieeja liegta',
'img-auth-nopathinfo' => 'Trūkst PATH_INFO.
@@ -1435,6 +1452,7 @@ FiltrÄ“jot pÄ“c lietotÄja, tiek rÄdÄ«tas tikai pÄ“dÄ“jÄs lietotÄja augÅ¡upie
'linkstoimage' => '{{PLURAL:$1|Å ajÄ lapÄ ir saite|Å ajÄs $1 lapÄs ir saites}} uz Å¡o failu:',
'nolinkstoimage' => 'NevienÄ lapÄ nav norÄžu uz Å¡o attÄ“lu.',
'morelinkstoimage' => 'SkatÄ«t [[Special:WhatLinksHere/$1|vairÄk saites]] uz Å¡o failu.',
+'linkstoimage-redirect' => '$1 (faila pÄradresÄcija) $2',
'sharedupload' => 'Å is fails ir augÅ¡upielÄdÄ“ts no $1 un ir koplietojams citos projektos.',
'sharedupload-desc-there' => 'Fails ir no $1, tÄpÄ“c tas var tikt izmantots citos projektos.
LÅ«dzu, skatÄ«t [$2 faila apraksta lapu] papildu informÄcijai.',
@@ -1523,12 +1541,13 @@ Apraksts ir [$2 faila apraksta lapÄ], kas ir parÄdÄ«ta zemÄk.',
Å Ä«s saites vajadzÄ“tu izlabot, lai tÄs vestu tieÅ¡i uz attiecÄ«go lapu.<br />
Lapu uzskata par nozÄ«mju atdalÄ«Å¡anas lapu, ja tÄ satur veidni, uz kuru ir saite no [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'DivkÄrÅ¡as pÄradresÄcijas lapas',
-'doubleredirectstext' => 'Å ajÄ lapÄ ir uzskaitÄ«tas pÄradresÄcijas lapas, kuras pÄradresÄ“ uz citÄm pÄradresÄcijas lapÄm.
+'doubleredirects' => 'DivkÄrÅ¡as pÄradresÄcijas lapas',
+'doubleredirectstext' => 'Å ajÄ lapÄ ir uzskaitÄ«tas pÄradresÄcijas lapas, kuras pÄradresÄ“ uz citÄm pÄradresÄcijas lapÄm.
KatrÄ rindiÅ†Ä ir saites uz pirmo un otro pÄradresÄcijas lapu, kÄ arÄ« pirmÄ rindiņa no otrÄs pÄradresÄcijas lapas teksta, kas parasti ir faktiskÄ "gala" lapa, uz kuru vajadzÄ“tu bÅ«t saitei pirmajÄ lapÄ.
<del>Nosvītrotie</del> ieraksti jau ir tikuši salaboti.',
-'double-redirect-fixed-move' => '[[$1]] bija ticis pÄrvietots, tas tagad ir pÄradresÄcija uz [[$2]]',
-'double-redirect-fixer' => 'PÄradresÄciju labotÄjs',
+'double-redirect-fixed-move' => '[[$1]] bija ticis pÄrvietots, tas tagad ir pÄradresÄcija uz [[$2]]',
+'double-redirect-fixed-maintenance' => 'Labota dubultÄ pÄradresÄcija no [[$1]] uz [[$2]].',
+'double-redirect-fixer' => 'PÄradresÄciju labotÄjs',
'brokenredirects' => 'Kļūdainas pÄradresÄcijas',
'brokenredirectstext' => 'Å Ä«s ir pÄradresÄcijas lapas uz neesoÅ¡Äm lapÄm:',
@@ -1596,6 +1615,7 @@ KatrÄ rindiÅ†Ä ir saites uz pirmo un otro pÄradresÄcijas lapu, kÄ arÄ« pirm
'nopagetext' => 'MÄ“rÄ·a lapa, ko JÅ«s norÄdÄ«jÄt, nepastÄv.',
'pager-newer-n' => '{{PLURAL:$1|1 jaunÄku|$1 jaunÄkas}}',
'pager-older-n' => '{{PLURAL:$1|1 vecÄku|$1 vecÄkas}}',
+'querypage-disabled' => 'Å Ä« Ä«paÅ¡Ä lapÄ ir atspÄ“jota veiktspÄ“jas iemeslu dēļ.',
# Book sources
'booksources' => 'GrÄmatu avoti',
@@ -1699,6 +1719,10 @@ TÄ e-pasta adrese, kuru tu esi norÄdÄ«jis [[Special:Preferences|savÄ izvēļu
'noemailtext' => 'Å is lietotÄjs nav norÄdÄ«jis derÄ«gu e-pasta adresi.',
'nowikiemailtitle' => 'E-pasts nav atļauts',
'nowikiemailtext' => 'Å is lietotÄjs ir vÄ“lÄ“jies nesaņemt e-pastu no citiem lietotÄjiem.',
+'emailnotarget' => 'NeeksistÄ“joÅ¡s vai nederÄ«gs saņēmÄ“ja lietotÄjvÄrds.',
+'emailtarget' => 'Ievadiet saņēmÄ“ja lietotÄjvÄrdu',
+'emailusername' => 'LietotÄjvÄrds:',
+'emailusernamesubmit' => 'Iesniegt',
'email-legend' => 'SÅ«tÄ«t e-pastu citam {{SITENAME}} lietotÄjam',
'emailfrom' => 'No:',
'emailto' => 'Kam:',
@@ -1721,11 +1745,11 @@ TÄ e-pasta adrese, kuru tu esi norÄdÄ«jis [[Special:Preferences|savÄ izvēļu
'watchlistanontext' => 'LÅ«dzu $1, lai apskatÄ«tu vai labotu savu uzraugÄmo rakstu saraksta saturu.',
'watchnologin' => 'Neesi iegÄjis',
'watchnologintext' => 'Tev ir [[Special:UserLogin|jÄieiet]], lai mainÄ«tu uzraugÄmo lapu sarakstu.',
-'addedwatch' => 'Lapa pievienota uzraugÄmo lapu sarakstam',
+'addwatch' => 'Pievienot uzraugÄmo lapu sarakstam',
'addedwatchtext' => "Lapa \"[[:\$1]]\" ir pievienota [[Special:Watchlist|tevis uzraudzÄ«tajÄm lapÄm]], kur tiks parÄdÄ«tas izmaiņas, kas izdarÄ«tas Å¡ajÄ lapÄ vai Å¡Ä«s lapas diskusiju lapÄ, kÄ arÄ« Å¡Ä« lapa tiks iezÄ«mÄ“ta '''pustrekna''' [[Special:RecentChanges|pÄ“dÄ“jo izmaiņu lapÄ]], lai to bÅ«tu vieglÄk pamanÄ«t.
Ja vÄ“lÄk pÄrdomÄsi un nevÄ“lÄ“sies vairs uzraudzÄ«t Å¡o lapu, klikÅ¡Ä·ini uz saites '''neuzraudzÄ«t''' rÄ«ku joslÄ.",
-'removedwatch' => 'Lapa vairs netiek uzraudzīta',
+'removewatch' => 'Izņemt no uzraugÄmo lapu saraksta',
'removedwatchtext' => 'Lapa "[[:$1]]" ir izņemta no tava [[Special:Watchlist|uzraugÄmo lapu saraksta]].',
'watch' => 'Uzraudzīt',
'watchthispage' => 'Uzraudzīt šo lapu',
@@ -1775,13 +1799,13 @@ Tu arÄ« vari atstatÄ«t visu uzraugÄmo lapu paziņojumu statusus uzraugÄmo lapu
--
Lai izmainÄ«tu uzraugÄmo lapu saraksta uzstÄdÄ«jumus:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Lai dzÄ“stu lapu no uzraugÄmo lapu saraksta:
$UNWATCHURL
PapildinformÄcija:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Dzēst lapu',
@@ -1796,7 +1820,7 @@ PapildinformÄcija:
'confirmdeletetext' => 'Tu tÅ«lÄ«t no datubÄzes dzÄ“sÄ«si lapu vai attÄ“lu, kÄ arÄ« to iepriekÅ¡Ä“jÄs versijas. LÅ«dzu, apstiprini, ka tu tieÅ¡Äm to vÄ“lies darÄ«t, ka tu apzinies sekas un ka tu to dari saskaÅ†Ä ar [[{{MediaWiki:Policy-url}}|vadlÄ«nijÄm]].',
'actioncomplete' => 'Darbība pabeigta',
'actionfailed' => 'DarbÄ«ba neizdevÄs',
-'deletedtext' => 'Lapa "<nowiki>$1</nowiki>" ir izdzēsta.
+'deletedtext' => 'Lapa "$1" ir izdzēsta.
Šeit var apskatīties pēdējos izdzēstos: "$2".',
'deletedarticle' => 'izdzēsa "[[$1]]"',
'dellogpage' => 'Dzēšanas reģistrs',
@@ -1848,7 +1872,7 @@ Lūdzu, spied \"''back''\" un atjaunini iepriekšējo lapu. Tad mēģini vēlrei
'protectexpiry' => 'Beidzas:',
'protect_expiry_invalid' => 'Beigu termiņš ir nederīgs.',
'protect_expiry_old' => 'Beigu termiņs ir pagÄtnÄ“.',
-'protect-text' => "Šeit var apskatīties un izmainīt lapas '''<nowiki>$1</nowiki>''' aizsardzības līmeni.",
+'protect-text' => "Šeit var apskatīties un izmainīt lapas '''$1''' aizsardzības līmeni.",
'protect-locked-access' => "JÅ«su kontam nav atļaujas mainÄ«t lapas aizsardzÄ«bas pakÄpi.
Pašreizējie lapas '''$1''' iestatījumi ir:",
'protect-cascadeon' => 'Å Ä« lapa paÅ¡laik ir aizsargÄta, jo tÄ ir iekļauta {{PLURAL:$1|sekojoÅ¡Ä lapÄ|sekojoÅ¡Äs lapÄs}} (mainot Å¡Ä«s lapas aizsardzÄ«bas lÄ«meni aizsardzÄ«ba netiks noņemta):',
@@ -1990,17 +2014,18 @@ PÄ“dÄ“jais bloÄ·Ä“Å¡anas reÄ£istra ieraksts ir apskatÄms zemÄk:',
'whatlinkshere-filters' => 'Filtri',
# Block/unblock
-'blockip' => 'BloÄ·Ä“t lietotÄju',
-'blockip-title' => 'BloÄ·Ä“t lietotÄju',
-'blockip-legend' => 'BloÄ·Ä“t lietotÄju',
-'blockiptext' => 'Å o veidni izmanto, lai bloÄ·Ä“tu kÄdas IP adreses vai lietotÄjvÄrda piekļuvi wiki lapu saglabÄÅ¡anai. Dari to tikai, lai novÄ“rstu vandÄlismu atbilstoÅ¡i [[{{MediaWiki:Policy-url}}|noteikumiem]].
+'block' => 'BloÄ·Ä“t lietotÄju',
+'unblock' => 'AtbloÄ·Ä“t lietotÄju',
+'blockip' => 'BloÄ·Ä“t lietotÄju',
+'blockip-title' => 'BloÄ·Ä“t lietotÄju',
+'blockip-legend' => 'BloÄ·Ä“t lietotÄju',
+'blockiptext' => 'Å o veidni izmanto, lai bloÄ·Ä“tu kÄdas IP adreses vai lietotÄjvÄrda piekļuvi wiki lapu saglabÄÅ¡anai. Dari to tikai, lai novÄ“rstu vandÄlismu atbilstoÅ¡i [[{{MediaWiki:Policy-url}}|noteikumiem]].
NorÄdi konkrÄ“tu iemeslu (piemÄ“ram, linkus uz vandalizÄ“tajÄm lapÄm).',
-'ipaddress' => 'IP adrese:',
-'ipadressorusername' => 'IP adrese vai lietotÄjvÄrds',
-'ipbexpiry' => 'Termiņš',
-'ipbreason' => 'Iemesls:',
-'ipbreasonotherlist' => 'Cits iemesls',
-'ipbreason-dropdown' => '*BiežÄkie bloÄ·Ä“Å¡anas iemesli
+'ipadressorusername' => 'IP adrese vai lietotÄjvÄrds',
+'ipbexpiry' => 'Termiņš',
+'ipbreason' => 'Iemesls:',
+'ipbreasonotherlist' => 'Cits iemesls',
+'ipbreason-dropdown' => '*BiežÄkie bloÄ·Ä“Å¡anas iemesli
** Ievieto nepatiesu informÄciju
** Dzēš lapu saturu
** Spamo ÄrÄ“jÄs saitÄ“s
@@ -2008,88 +2033,89 @@ NorÄdi konkrÄ“tu iemeslu (piemÄ“ram, linkus uz vandalizÄ“tajÄm lapÄm).',
** Nepieņemama uzvedība un apvainojumi
** VairÄku kontu ļaunprÄtÄ«ga izmantoÅ¡ana
** Nepieņemams lietotÄjvÄrds',
-'ipbanononly' => 'BloÄ·Ä“t tikai anonÄ«mos lietotÄjus',
-'ipbcreateaccount' => 'Neļaut izveidot lietotÄjvÄrdu',
-'ipbemailban' => 'Neļaut lietotÄjam sÅ«tÄ«t e-pastu',
-'ipbenableautoblock' => 'AutomÄtiski bloÄ·Ä“t lietotÄja pÄ“dÄ“jo IP adresi un jebkuru IP adresi, no kuras Å¡is lietotÄjs piekļūst Å¡im wiki',
-'ipbsubmit' => 'BloÄ·Ä“t Å¡o lietotÄju',
-'ipbother' => 'Cits laiks',
-'ipboptions' => '2 stundas:2 hours,1 diena:1 day,3 dienas:3 days,1 nedēļa:1 week,2 nedēļas:2 weeks,1 mēnesis:1 month,3 mēneši:3 months,6 mēneši:6 months,1 gads:1 year,uz nenoteiktu laiku:infinite',
-'ipbotheroption' => 'cits',
-'ipbotherreason' => 'Cits/papildu iemesls:',
-'ipbhidename' => "SlÄ“pt lietot'javÄrdu no labojumiem un sarakstiem",
-'ipbwatchuser' => 'UzraudzÄ«t Å¡Ä« lietotÄja lietotÄja un lietotÄja diskusijas lapas',
-'ipballowusertalk' => 'Ä»aut Å¡im lietotÄjam izmainÄ«t savu diskusiju lapu, bloka laikÄ',
-'ipb-change-block' => 'PÄrbloÄ·Ä“t ar Å¡iem uzstÄdÄ«jumiem',
-'badipaddress' => 'Nederīga IP adrese',
-'blockipsuccesssub' => 'Nobloķēts veiksmīgi',
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] tika nobloÄ·Ä“ts.<br />
+'ipbcreateaccount' => 'Neļaut izveidot lietotÄjvÄrdu',
+'ipbemailban' => 'Neļaut lietotÄjam sÅ«tÄ«t e-pastu',
+'ipbenableautoblock' => 'AutomÄtiski bloÄ·Ä“t lietotÄja pÄ“dÄ“jo IP adresi un jebkuru IP adresi, no kuras Å¡is lietotÄjs piekļūst Å¡im wiki',
+'ipbsubmit' => 'BloÄ·Ä“t Å¡o lietotÄju',
+'ipbother' => 'Cits laiks',
+'ipboptions' => '2 stundas:2 hours,1 diena:1 day,3 dienas:3 days,1 nedēļa:1 week,2 nedēļas:2 weeks,1 mēnesis:1 month,3 mēneši:3 months,6 mēneši:6 months,1 gads:1 year,uz nenoteiktu laiku:infinite',
+'ipbotheroption' => 'cits',
+'ipbotherreason' => 'Cits/papildu iemesls:',
+'ipbhidename' => "SlÄ“pt lietot'javÄrdu no labojumiem un sarakstiem",
+'ipbwatchuser' => 'UzraudzÄ«t Å¡Ä« lietotÄja lietotÄja un lietotÄja diskusijas lapas',
+'ipb-change-block' => 'PÄrbloÄ·Ä“t ar Å¡iem uzstÄdÄ«jumiem',
+'ipb-confirm' => 'ApstiprinÄt bloÄ·Ä“Å¡anu',
+'badipaddress' => 'Nederīga IP adrese',
+'blockipsuccesssub' => 'Nobloķēts veiksmīgi',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] tika nobloÄ·Ä“ts.<br />
Visus blokus var apskatÄ«ties [[Special:IPBlockList|IP bloku sarakstÄ]].',
-'ipb-edit-dropdown' => 'Izmainīt bloķēšanas iemeslus',
-'ipb-unblock-addr' => 'AtbloÄ·Ä“t $1',
-'ipb-unblock' => 'AtbloÄ·Ä“t lietotÄju vai IP adresi',
-'ipb-blocklist' => 'Apskatīties esošos blokus',
-'ipb-blocklist-contribs' => '$1 devums',
-'unblockip' => 'AtbloÄ·Ä“t lietotÄju',
-'unblockiptext' => 'Å eit var atbloÄ·Ä“t iepriekÅ¡ nobloÄ·Ä“tu IP adresi vai lietotÄja vÄrdu (atjaunot viņiem rakstÄ«Å¡anas piekļuvi).',
-'ipusubmit' => 'Noņemt šo bloku',
-'unblocked' => '[[User:$1|$1]] tika atbloÄ·Ä“ts',
-'unblocked-id' => 'Bloks $1 tika noņemts',
-'ipblocklist' => 'BloÄ·Ä“tie lietotÄji',
-'ipblocklist-legend' => 'MeklÄ“t bloÄ·Ä“tu lietotÄju',
-'ipblocklist-username' => 'LietotÄja vÄrds vai IP adrese:',
-'ipblocklist-sh-userblocks' => '$1 kontu blokus',
-'ipblocklist-sh-tempblocks' => '$1 pagaidu blokus',
-'ipblocklist-sh-addressblocks' => '$1 vienas IP adreses blokus',
-'ipblocklist-submit' => 'Meklēt',
-'ipblocklist-localblock' => 'Vietējais bloks',
-'ipblocklist-otherblocks' => ' {{PLURAL:$1|Cita|Citas}} {{PLURAL:$1|bloÄ·Ä“Å¡ana|bloÄ·Ä“Å¡anas}}',
-'blocklistline' => '$1 $2 bloķēja $3 (termiņš $4)',
-'infiniteblock' => 'bezgalīgs',
-'expiringblock' => 'beidzas $1 $2',
-'noautoblockblock' => 'automÄtiskÄ bloÄ·Ä“Å¡ana atslÄ“gta',
-'createaccountblock' => 'kontu veidošana atslēgta',
-'emailblock' => 'e-pasts bloÄ·Ä“ts',
-'blocklist-nousertalk' => 'nevar izmainīt savu diskusiju lapu',
-'ipblocklist-empty' => 'Bloķēšanas saraksts ir tukšs.',
-'ipblocklist-no-results' => 'NorÄdÄ«tÄ IP adrese vai lietotÄjs nav bloÄ·Ä“ts.',
-'blocklink' => 'bloÄ·Ä“t',
-'unblocklink' => 'atbloÄ·Ä“t',
-'change-blocklink' => 'izmainīt bloku',
-'contribslink' => 'devums',
-'autoblocker' => 'Tava IP ir nobloÄ·Ä“ta automÄtiski, tÄpÄ“c, ka to nesen lietojis "[[User:$1|$1]]".
+'ipb-edit-dropdown' => 'Izmainīt bloķēšanas iemeslus',
+'ipb-unblock-addr' => 'AtbloÄ·Ä“t $1',
+'ipb-unblock' => 'AtbloÄ·Ä“t lietotÄju vai IP adresi',
+'ipb-blocklist' => 'Apskatīties esošos blokus',
+'ipb-blocklist-contribs' => '$1 devums',
+'unblockip' => 'AtbloÄ·Ä“t lietotÄju',
+'unblockiptext' => 'Å eit var atbloÄ·Ä“t iepriekÅ¡ nobloÄ·Ä“tu IP adresi vai lietotÄja vÄrdu (atjaunot viņiem rakstÄ«Å¡anas piekļuvi).',
+'ipusubmit' => 'Noņemt šo bloku',
+'unblocked' => '[[User:$1|$1]] tika atbloÄ·Ä“ts',
+'unblocked-range' => '$1 tika atbloÄ·Ä“ts',
+'unblocked-id' => 'Bloks $1 tika noņemts',
+'blocklist' => 'BloÄ·Ä“tie lietotÄji',
+'ipblocklist' => 'BloÄ·Ä“tie lietotÄji',
+'ipblocklist-legend' => 'MeklÄ“t bloÄ·Ä“tu lietotÄju',
+'blocklist-userblocks' => 'Paslēpt kontu bloķējumus',
+'blocklist-tempblocks' => 'Paslēpt pagaidu bloķējumus',
+'blocklist-addressblocks' => 'Paslēpt vienas IP adreses bloķējumus',
+'blocklist-params' => 'BloÄ·Ä“Å¡anas parametri',
+'blocklist-reason' => 'Iemesls',
+'ipblocklist-submit' => 'Meklēt',
+'ipblocklist-localblock' => 'Vietējais bloks',
+'ipblocklist-otherblocks' => ' {{PLURAL:$1|Cita|Citas}} {{PLURAL:$1|bloÄ·Ä“Å¡ana|bloÄ·Ä“Å¡anas}}',
+'infiniteblock' => 'bezgalīgs',
+'expiringblock' => 'beidzas $1 $2',
+'noautoblockblock' => 'automÄtiskÄ bloÄ·Ä“Å¡ana atslÄ“gta',
+'createaccountblock' => 'kontu veidošana atslēgta',
+'emailblock' => 'e-pasts bloÄ·Ä“ts',
+'blocklist-nousertalk' => 'nevar izmainīt savu diskusiju lapu',
+'ipblocklist-empty' => 'Bloķēšanas saraksts ir tukšs.',
+'ipblocklist-no-results' => 'NorÄdÄ«tÄ IP adrese vai lietotÄjs nav bloÄ·Ä“ts.',
+'blocklink' => 'bloÄ·Ä“t',
+'unblocklink' => 'atbloÄ·Ä“t',
+'change-blocklink' => 'izmainīt bloku',
+'contribslink' => 'devums',
+'autoblocker' => 'Tava IP ir nobloÄ·Ä“ta automÄtiski, tÄpÄ“c, ka to nesen lietojis "[[User:$1|$1]]".
Viņa bloķēšanas iemesls bija: "$2"',
-'blocklogpage' => 'Bloķēšanas reģistrs',
-'blocklog-showlog' => 'Å is lietotÄjs ir bijis bloÄ·Ä“ts jau agrÄk.
+'blocklogpage' => 'Bloķēšanas reģistrs',
+'blocklog-showlog' => 'Å is lietotÄjs ir bijis bloÄ·Ä“ts jau agrÄk.
Te apakÅ¡Ä var apskatÄ«ties bloÄ·Ä“Å¡anas reÄ£istru:',
-'blocklogentry' => 'nobloÄ·Ä“ja [[$1]] uz $2 $3',
-'reblock-logentry' => 'izmainīja bloķēšanas iestatījumus [[$1]] ar beigu termiņu $2 $3',
-'blocklogtext' => 'Å ajÄ lapÄ ir pÄ“dÄ“jo nobloÄ·Ä“to un atbloÄ·Ä“to lietotÄju un IP adreÅ¡u saraksts. Te neparÄdÄs automÄtiski nobloÄ·Ä“tÄs IP adreses.
-Å obrÄ«d aktÄ«vos blokus var apskatÄ«ties [[Special:IPBlockList|bloÄ·Ä“to lietotÄju un IP adreÅ¡u sarakstÄ]].',
-'unblocklogentry' => 'atbloÄ·Ä“ja $1',
-'block-log-flags-anononly' => 'tikai anonÄ«miem lietotÄjiem',
-'block-log-flags-nocreate' => 'kontu veidošana atslēgta',
-'block-log-flags-noautoblock' => 'automÄtiskÄ bloÄ·Ä“Å¡ana atslÄ“gta',
-'block-log-flags-noemail' => 'e-pasts bloÄ·Ä“ts',
-'block-log-flags-nousertalk' => 'nevar izmainīt savu diskusiju lapu',
-'block-log-flags-hiddenname' => 'lietotÄjvÄrds slÄ“pts',
-'ipb_expiry_invalid' => 'Nederīgs beigu termiņš',
-'ipb_already_blocked' => '"$1" jau ir bloÄ·Ä“ts',
-'ipb-needreblock' => '== Jau bloÄ·Ä“ts ==
-$1 jau ir bloÄ·Ä“ts.
+'blocklogentry' => 'nobloÄ·Ä“ja [[$1]] uz $2 $3',
+'reblock-logentry' => 'izmainīja bloķēšanas iestatījumus [[$1]] ar beigu termiņu $2 $3',
+'blocklogtext' => 'Å ajÄ lapÄ ir pÄ“dÄ“jo nobloÄ·Ä“to un atbloÄ·Ä“to lietotÄju saraksts.
+Te neparÄdÄs automÄtiski nobloÄ·Ä“tÄs IP adreses.
+Å obrÄ«d aktÄ«vos blokus var apskatÄ«ties bloÄ·Ä“to lietotÄju [[Special:BlockList|IP adreÅ¡u sarakstÄ]].',
+'unblocklogentry' => 'atbloÄ·Ä“ja $1',
+'block-log-flags-anononly' => 'tikai anonÄ«miem lietotÄjiem',
+'block-log-flags-nocreate' => 'kontu veidošana atslēgta',
+'block-log-flags-noautoblock' => 'automÄtiskÄ bloÄ·Ä“Å¡ana atslÄ“gta',
+'block-log-flags-noemail' => 'e-pasts bloÄ·Ä“ts',
+'block-log-flags-nousertalk' => 'nevar izmainīt savu diskusiju lapu',
+'block-log-flags-hiddenname' => 'lietotÄjvÄrds slÄ“pts',
+'ipb_expiry_invalid' => 'Nederīgs beigu termiņš',
+'ipb_already_blocked' => '"$1" jau ir bloÄ·Ä“ts',
+'ipb-needreblock' => '$1 jau ir bloÄ·Ä“ts.
Vai tu gribi izmainÄ«t bloka uzstÄdÄ«jumus?',
-'ipb_cant_unblock' => 'Kļūda: Bloka ID $1 nav atrasts.
+'ipb_cant_unblock' => 'Kļūda: Bloka ID $1 nav atrasts.
Tas, iespējams, jau ir atbloķēts.',
-'ipb_blocked_as_range' => 'Kļūda: IP $1 nav bloÄ·Ä“ta tieÅ¡i, tÄpÄ“c to nevar atbloÄ·Ä“t.
+'ipb_blocked_as_range' => 'Kļūda: IP $1 nav bloÄ·Ä“ta tieÅ¡i, tÄpÄ“c to nevar atbloÄ·Ä“t.
TÄ ir bloÄ·Ä“ta kÄ daļa no IP adreÅ¡u diapazona $2, kuru var atbloÄ·Ä“t.',
-'ip_range_invalid' => 'Nederīgs IP diapazons',
-'blockme' => 'BloÄ·Ä“t mani',
-'proxyblocker' => 'Starpniekservera bloÄ·Ä“tÄjs',
-'proxyblocker-disabled' => 'Šī funkcija ir atspējota.',
-'proxyblocksuccess' => 'Darīts.',
-'cant-block-while-blocked' => 'Tu nevari bloÄ·Ä“t citus lietotÄjus, kamÄ“r pats esi bloÄ·Ä“ts.',
-'ipbblocked' => 'Tu nevar bloÄ·Ä“t vai atbloÄ·Ä“t lietotÄjus, jo Tu pats esi bloÄ·Ä“ts',
-'ipbnounblockself' => 'Tev nav atļauts sevi atbloķēt',
+'ip_range_invalid' => 'Nederīgs IP diapazons',
+'blockme' => 'BloÄ·Ä“t mani',
+'proxyblocker' => 'Starpniekservera bloÄ·Ä“tÄjs',
+'proxyblocker-disabled' => 'Šī funkcija ir atspējota.',
+'proxyblocksuccess' => 'Darīts.',
+'cant-block-while-blocked' => 'Tu nevari bloÄ·Ä“t citus lietotÄjus, kamÄ“r pats esi bloÄ·Ä“ts.',
+'ipbblocked' => 'Tu nevar bloÄ·Ä“t vai atbloÄ·Ä“t lietotÄjus, jo Tu pats esi bloÄ·Ä“ts',
+'ipbnounblockself' => 'Tev nav atļauts sevi atbloķēt',
# Developer tools
'lockdb' => 'BloÄ·Ä“t datubÄzi',
@@ -2207,7 +2233,7 @@ PirmajÄ gadÄ«jumÄ var arÄ« lietot Å¡Ädu metodi, piem., [[{{#Special:Export}}/
'allmessagesdefault' => 'SÄkotnÄ“jais teksts',
'allmessagescurrent' => 'Pašreizējais teksts',
'allmessagestext' => "Å ajÄ lapÄ ir visu \"'''MediaWiki:'''\" lapÄs atrodamo sistÄ“mas paziņojumu uzskaitÄ«jums.
-Å os paziņojumus var izmainÄ«t tikai admini. Izmainot tos Å¡eit, tie tiks izmainÄ«ti tikai Å¡ajÄ mediawiki instalÄcijÄ. Lai tos izmainÄ«tu visÄm pÄrÄ“jÄm, apskatieties [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] un [http://translatewiki.net translatewiki.net].",
+Å os paziņojumus var izmainÄ«t tikai admini. Izmainot tos Å¡eit, tie tiks izmainÄ«ti tikai Å¡ajÄ mediawiki instalÄcijÄ. Lai tos izmainÄ«tu visÄm pÄrÄ“jÄm, apskatieties [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] un [//translatewiki.net translatewiki.net].",
'allmessagesnotsupportedDB' => "Å Ä« lapa nedarbojas, tÄpÄ“c, ka '''wgUseDatabaseMessages''' nedarbojas.",
'allmessages-filter-legend' => 'Filtrs',
'allmessages-filter' => 'Filtrēt pēc izmainīšanas statusa:',
@@ -2343,9 +2369,7 @@ Tas atļauj pievienot iemeslu kopsavilkumÄ.',
'tooltip-summary' => 'Ievadiet Ä«su kopsavilkumu',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadati šim serverim atslēgti.',
-'nocreativecommons' => 'Creative Commons RDF metadati šim serverim atslēgti.',
-'notacceptable' => 'VikipÄ“dijas serveris nevar sniegt datus JÅ«su klientam nolasÄmÄ formÄtÄ.',
+'notacceptable' => 'VikipÄ“dijas serveris nevar sniegt datus JÅ«su klientam nolasÄmÄ formÄtÄ.',
# Attribution
'anonymous' => '{{PLURAL:$1|AnonÄ«mais {{grammar:Ä£enitÄ«vs|{{SITENAME}}}} lietotÄjs|AnonÄ«mie {{grammar:Ä£enitÄ«vs|{{SITENAME}}}} lietotÄji}}',
@@ -2363,29 +2387,17 @@ To visticamÄk izraisÄ«ja ÄrÄ“ja saite uz melnajÄ sarakstÄ esoÅ¡u interneta v
'spam_reverting' => 'Atjauno iepriekšējo versiju, kas nesatur saiti uz $1',
# Info page
-'infosubtitle' => 'InformÄcija lapai',
-'numedits' => 'Labojumu skaits (lapa): $1',
-'numtalkedits' => 'Labojumu skaits (diskusiju lapa): $1',
-'numwatchers' => 'UzraudzÄ«tÄju skaits: $1',
-'numauthors' => 'Atsevišķu autoru skaits (lapai): $1',
-'numtalkauthors' => 'Atsevišķu autoru skaits (diskusiju lapai): $1',
-
-# Math options
-'mw_math_png' => 'Vienmēr attēlot PNG',
-'mw_math_simple' => 'HTML, ja ļoti vienkÄrÅ¡i, vai arÄ« PNG',
-'mw_math_html' => 'HTML, ja iespējams, vai arī PNG',
-'mw_math_source' => 'SaglabÄt kÄ TeX (teksta pÄrlÅ«kiem)',
-'mw_math_modern' => 'Moderniem pÄrlÅ«kiem ieteiktais variants',
-'mw_math_mathml' => 'MathML, ja iespÄ“jams (eksperimentÄla iespÄ“ja)',
-
-# Math errors
-'math_failure' => 'PÄrsÄ“Å¡anas kļūda',
-'math_unknown_error' => 'nezinÄma kļūda',
-'math_unknown_function' => 'nezinÄma funkcija',
-'math_lexing_error' => 'leksikas kļūda',
-'math_syntax_error' => 'sintakses kļūda',
-'math_image_error' => 'Kļūda konvertÄ“jot uz PNG formÄtu;
-pÄrbaudi vai ir korekti uzinstalÄ“ti latex, dvips, gs, un convert',
+'pageinfo-title' => 'InformÄcija par "$1"',
+'pageinfo-header-edits' => 'Labojumi',
+'pageinfo-header-watchlist' => 'UzraugÄmie raksti',
+'pageinfo-header-views' => 'Skatījumi',
+'pageinfo-subjectpage' => 'Lapa',
+'pageinfo-talkpage' => 'Diskusiju lapa',
+'pageinfo-watchers' => 'UzraudzÄ«tÄju skaits',
+'pageinfo-edits' => 'Izmaiņu skaits',
+'pageinfo-authors' => 'Atsevišķu autoru skaits',
+'pageinfo-views' => 'Skatījumu skaits',
+'pageinfo-viewsperedit' => 'Skatījumi uz labojumu',
# Patrolling
'markaspatrolleddiff' => 'AtzÄ«mÄ“t kÄ pÄrbaudÄ«tu',
@@ -2420,19 +2432,21 @@ $1',
'nextdiff' => 'JaunÄka versija →',
# Media information
-'mediawarning' => "'''BrÄ«dinÄjums''': Å is faila tips var saturÄ“t ļaunprÄtÄ«gu kodu, kuru izpildot, tava datora darbÄ«ba var tikt traucÄ“ta.",
-'imagemaxsize' => 'AttÄ“lu apraksta lapÄs parÄdÄmo attÄ“lu maksimÄlais izmÄ“rs:',
-'thumbsize' => 'Sīkbildes izmērs:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|lapa|lapas}}',
-'file-info' => 'faila izmērs: $1, MIME tips: $2',
-'file-info-size' => '$1 × $2 pikseļi, faila izmērs: $3, MIME tips: $4',
-'file-nohires' => '<small>AugstÄka izÅ¡Ä·irtspÄ“ja nav pieejama.</small>',
-'svg-long-desc' => 'SVG fails, definētais izmērs $1 × $2 pikseļi, faila izmērs: $3',
-'show-big-image' => 'PilnÄ izmÄ“rÄ',
-'show-big-image-thumb' => '<small>Šī priekšskata izmērs: $1 × $2 pikseļi</small>',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|kadrs|kadri}}',
-'file-info-png-repeat' => 'spēlēts $1 {{PLURAL:$1|reizi|reizes}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|kadrs|kadri}}',
+'mediawarning' => "'''BrÄ«dinÄjums''': Å is faila tips var saturÄ“t ļaunprÄtÄ«gu kodu, kuru izpildot, tava datora darbÄ«ba var tikt traucÄ“ta.",
+'imagemaxsize' => 'AttÄ“lu apraksta lapÄs parÄdÄmo attÄ“lu maksimÄlais izmÄ“rs:',
+'thumbsize' => 'Sīkbildes izmērs:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|lapa|lapas}}',
+'file-info' => 'faila izmērs: $1, MIME tips: $2',
+'file-info-size' => '$1 × $2 pikseļi, faila izmērs: $3, MIME tips: $4',
+'file-nohires' => '<small>AugstÄka izÅ¡Ä·irtspÄ“ja nav pieejama.</small>',
+'svg-long-desc' => 'SVG fails, definētais izmērs $1 × $2 pikseļi, faila izmērs: $3',
+'show-big-image' => 'PilnÄ izmÄ“rÄ',
+'show-big-image-preview' => '<small>Šī priekšskata izmērs: $1.</small>',
+'show-big-image-other' => '<small>Citi izmēri: $1.</small>',
+'show-big-image-size' => '$1 × $2 pikseļi',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|kadrs|kadri}}',
+'file-info-png-repeat' => 'spēlēts $1 {{PLURAL:$1|reizi|reizes}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|kadrs|kadri}}',
# Special:NewFiles
'newimages' => 'Jauno attēlu galerija',
@@ -2466,7 +2480,13 @@ PÄrÄ“jie lauki, pÄ“c noklusÄ“juma, bÅ«s paslÄ“pti.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'platums',
@@ -2478,9 +2498,7 @@ PÄrÄ“jie lauki, pÄ“c noklusÄ“juma, bÅ«s paslÄ“pti.
'exif-planarconfiguration' => 'Datu izkÄrtojums',
'exif-xresolution' => 'HorizontÄlÄ izÅ¡Ä·irtspÄ“ja',
'exif-yresolution' => 'VertikÄlÄ izÅ¡Ä·irtspÄ“ja',
-'exif-resolutionunit' => 'X un Y izšķirtspējas mērvienība',
'exif-jpeginterchangeformatlength' => 'JPEG datu baiti',
-'exif-transferfunction' => 'PÄrveduma funkcija',
'exif-datetime' => 'AttÄ“la pÄ“dÄ“jÄs izmainÄ«Å¡anas datums un laiks',
'exif-imagedescription' => 'Attēla nosaukums',
'exif-make' => 'FotoaparÄta ražotÄjs',
@@ -2495,7 +2513,6 @@ PÄrÄ“jie lauki, pÄ“c noklusÄ“juma, bÅ«s paslÄ“pti.
'exif-compressedbitsperpixel' => 'AttÄ“la kompresijas pakÄpe',
'exif-pixelydimension' => 'Attēla platums',
'exif-pixelxdimension' => 'Attēla augstums',
-'exif-makernote' => 'RažotÄja piezÄ«mes',
'exif-usercomment' => 'LietotÄja komentÄri',
'exif-relatedsoundfile' => 'Saistītais skaņas fails',
'exif-datetimeoriginal' => 'Izveidošanas datums un laiks',
@@ -2517,7 +2534,6 @@ PÄrÄ“jie lauki, pÄ“c noklusÄ“juma, bÅ«s paslÄ“pti.
'exif-focallength' => 'Fokusa attÄlums',
'exif-subjectarea' => 'Objekta laukums',
'exif-flashenergy' => 'Zibspuldzes stiprums',
-'exif-spatialfrequencyresponse' => 'TelpiskÄ frekvenÄu raksturlÄ«kne',
'exif-focalplanexresolution' => 'Fokusa plaknes X izšķirtspēja',
'exif-focalplaneyresolution' => 'Fokusa plaknes Y izšķirtspēja',
'exif-focalplaneresolutionunit' => 'Fokusa plaknes izšķirtspējas vienības',
@@ -2560,6 +2576,22 @@ PÄrÄ“jie lauki, pÄ“c noklusÄ“juma, bÅ«s paslÄ“pti.
'exif-gpsprocessingmethod' => 'GPS apstrÄdes metodes nosaukums',
'exif-gpsareainformation' => 'GPS zonas nosaukums',
'exif-gpsdatestamp' => 'GPS datums',
+'exif-jpegfilecomment' => 'JPEG faila komentÄrs',
+'exif-keywords' => 'AtslÄ“gas vÄrdi',
+'exif-source' => 'Avots',
+'exif-languagecode' => 'Valoda',
+'exif-iimversion' => 'IIM versija',
+'exif-iimcategory' => 'Kategorija',
+'exif-datetimeexpires' => 'Neizmantot pēc',
+'exif-serialnumber' => 'FotoaparÄta sÄ“rijas numurs',
+'exif-cameraownername' => 'FotoaparÄta Ä«paÅ¡nieks',
+'exif-rating' => 'Vērtējums (no 5)',
+'exif-copyrighted' => 'Autortiesību statuss',
+'exif-copyrightowner' => 'Autortiesību īpašnieks',
+'exif-usageterms' => 'Izmantošanas noteikumi',
+'exif-pngfilecomment' => 'PNG faila komentÄrs',
+'exif-contentwarning' => 'BrÄ«dinÄjums par saturu',
+'exif-giffilecomment' => 'GIF faila komentÄrs',
# EXIF attributes
'exif-compression-1' => 'Nekompresēts',
@@ -2658,6 +2690,10 @@ PÄrÄ“jie lauki, pÄ“c noklusÄ“juma, bÅ«s paslÄ“pti.
'exif-gpslongitude-e' => 'Austrumu garums',
'exif-gpslongitude-w' => 'Rietumu garums',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metrs|metri}} virs jūras līmeņa',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metrs|metri}} zem jūras līmeņa',
+
'exif-gpsmeasuremode-2' => 'DivdimensionÄls mÄ“rÄ«jums',
'exif-gpsmeasuremode-3' => 'TrÄ«sdimensionÄls mÄ“rÄ«jums',
@@ -2666,21 +2702,48 @@ PÄrÄ“jie lauki, pÄ“c noklusÄ“juma, bÅ«s paslÄ“pti.
'exif-gpsspeed-m' => 'JÅ«dzes stundÄ',
'exif-gpsspeed-n' => 'Mezgli',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometri',
+'exif-gpsdestdistance-m' => 'JÅ«dzes',
+'exif-gpsdestdistance-n' => 'Jūras jūdzes',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Patiesais virziens',
'exif-gpsdirection-m' => 'Magnētiskais virziens',
+'exif-dc-date' => 'Datums (-i)',
+'exif-dc-rights' => 'Tiesības',
+
+'exif-isospeedratings-overflow' => 'LielÄks kÄ 65535',
+
+'exif-iimcategory-edu' => 'Izglītība',
+'exif-iimcategory-evn' => 'Vide',
+'exif-iimcategory-hth' => 'Veselība',
+'exif-iimcategory-hum' => 'Cilvēku intereses',
+'exif-iimcategory-lab' => 'Darbs',
+'exif-iimcategory-lif' => 'DzÄ«vesveids un brÄ«vÄ laika pavadÄ«Å¡ana',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Reliģija un ticība',
+'exif-iimcategory-sci' => 'ZinÄtne un tehnoloÄ£ijas',
+'exif-iimcategory-soi' => 'SociÄlie jautÄjumi',
+'exif-iimcategory-spo' => 'Sports',
+'exif-iimcategory-war' => 'Karš, konflikti un nemieri',
+'exif-iimcategory-wea' => 'Laika apstÄkļi',
+
+'exif-urgency-normal' => 'NormÄla ($1)',
+'exif-urgency-low' => 'Zema ($1)',
+'exif-urgency-high' => 'Augsta ($1)',
+'exif-urgency-other' => 'LietotÄja definÄ“ta prioritÄte ($1)',
+
# External editor support
'edit-externally' => 'IzmainÄ«t Å¡o failu ar ÄrÄ“ju programmu',
-'edit-externally-help' => '(Skat. [http://www.mediawiki.org/wiki/Manual:External_editors instrukcijas] Mediawiki.org, lai iegÅ«tu vairÄk informÄcijas).',
+'edit-externally-help' => '(Skat. [//www.mediawiki.org/wiki/Manual:External_editors instrukcijas] Mediawiki.org, lai iegÅ«tu vairÄk informÄcijas).',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'visi',
-'imagelistall' => 'visas',
-'watchlistall2' => 'visas',
-'namespacesall' => 'visas',
-'monthsall' => 'visi',
-'limitall' => 'visas',
+'watchlistall2' => 'visas',
+'namespacesall' => 'visas',
+'monthsall' => 'visi',
+'limitall' => 'visas',
# E-mail address confirmation
'confirmemail' => 'Apstiprini e-pasta adresi',
@@ -2738,6 +2801,9 @@ LÅ«dzu apstiprini, ka tieÅ¡Äm gribi izveidot Å¡o lapu no jauna.",
'confirm_purge_button' => 'Labi',
'confirm-purge-top' => "Iztīrīt šīs lapas kešu (''cache'')?",
+# action=watch/unwatch
+'confirm-watch-button' => 'Labi',
+
# Multipage image navigation
'imgmultipageprev' => '↠iepriekÅ¡Ä“jÄ lapa',
'imgmultipagenext' => 'nÄkamÄ lapa →',
@@ -2779,7 +2845,7 @@ LÅ«dzu apstiprini, ka tieÅ¡Äm gribi izveidot Å¡o lapu no jauna.",
'watchlistedit-normal-legend' => 'Noņemt lapas (virsrakstus) no uzraugÄmo rakstu saraksta',
'watchlistedit-normal-explain' => 'TavÄ uzraugÄmo rakstu sarakstÄ esoÅ¡Äs lapas ir redzamas zemÄk.
Lai noņemtu lapu, ieÄ·eksÄ“ lodziÅ†Ä pretÄ« lapai un uzspied Noņemt lapas.
-Var arÄ« izmainÄ«t [[Special:Watchlist/raw|neapstrÄdÄtu sarakstu]] (viens liels teksta lauks).',
+Var arÄ« izmainÄ«t [[Special:EditWatchlist/raw|neapstrÄdÄtu sarakstu]] (viens liels teksta lauks).',
'watchlistedit-normal-submit' => 'Noņemt lapas',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 lapa tika noņemta|$1 lapas tika noņemtas}} no uzraugÄmo rakstu saraksta:',
'watchlistedit-raw-title' => 'IzmainÄ«t uzraugÄmo rakstu saraksta kodu',
@@ -2787,7 +2853,7 @@ Var arÄ« izmainÄ«t [[Special:Watchlist/raw|neapstrÄdÄtu sarakstu]] (viens liel
'watchlistedit-raw-explain' => 'UzraugÄmo rakstu sarakstÄ esoÅ¡Äs lapas ir redzamas zemÄk, un Å¡o sarakstu var izmainÄ«t lapas pievienojot vai izdzÄ“Å¡ot no saraksta;
katrai rindai te atbilst viena lapa.
Tad, kad pabeigts, uzspied Atjaunot sarakstu.
-Var arī lietot [[Special:Watchlist/edit|standarta izmainīšanas lapu]].',
+Var arī lietot [[Special:EditWatchlist|standarta izmainīšanas lapu]].',
'watchlistedit-raw-titles' => 'Lapas:',
'watchlistedit-raw-submit' => 'Atjaunot sarakstu',
'watchlistedit-raw-done' => 'Tavs uzraugÄmo rakstu saraksts tika atjaunots.',
@@ -2803,21 +2869,21 @@ Var arī lietot [[Special:Watchlist/edit|standarta izmainīšanas lapu]].',
'unknown_extension_tag' => 'NezinÄma paplaÅ¡inÄjuma iezÄ«me "$1"',
# Special:Version
-'version' => 'Versija',
-'version-extensions' => 'IeinstalÄ“tie paplaÅ¡inÄjumi',
-'version-specialpages' => 'ĪpaÅ¡Äs lapas',
-'version-variables' => 'Mainīgie',
-'version-skins' => 'Apdares',
-'version-hooks' => 'AizÄ·eres',
-'version-skin-extension-functions' => 'Izskata paplaÅ¡inÄjuma funkcijas',
-'version-hook-name' => 'AizÄ·eres nosaukums',
-'version-version' => '(Versija $1)',
-'version-license' => 'Licence',
-'version-poweredby-credits' => "Šis viki darbojas ar '''[http://www.mediawiki.org/ MediaWiki]''' programmatūru, autortiesības © 2001-$1 $2.",
-'version-poweredby-others' => 'citi',
-'version-software' => 'InstalÄ“tÄ programmatÅ«ra',
-'version-software-product' => 'Produkts',
-'version-software-version' => 'Versija',
+'version' => 'Versija',
+'version-extensions' => 'IeinstalÄ“tie paplaÅ¡inÄjumi',
+'version-specialpages' => 'ĪpaÅ¡Äs lapas',
+'version-variables' => 'Mainīgie',
+'version-antispam' => 'Spama aizsardzība',
+'version-skins' => 'Apdares',
+'version-hooks' => 'AizÄ·eres',
+'version-hook-name' => 'AizÄ·eres nosaukums',
+'version-version' => '(Versija $1)',
+'version-license' => 'Licence',
+'version-poweredby-credits' => "Šis viki darbojas ar '''[//www.mediawiki.org/ MediaWiki]''' programmatūru, autortiesības © 2001-$1 $2.",
+'version-poweredby-others' => 'citi',
+'version-software' => 'InstalÄ“tÄ programmatÅ«ra',
+'version-software-product' => 'Produkts',
+'version-software-version' => 'Versija',
# Special:FilePath
'filepath' => 'Failu adreses',
@@ -2826,9 +2892,7 @@ Var arī lietot [[Special:Watchlist/edit|standarta izmainīšanas lapu]].',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Meklēt failu kopijas',
-'fileduplicatesearch-summary' => 'Meklē dublējošos failus, izmantojot uz jaucējfunkcijas vērtības.
-
-Ievadi faila nosaukumu bez "{{ns:file}}:" prefiksa.',
+'fileduplicatesearch-summary' => 'Meklē dublējošos failus, izmantojot uz jaucējfunkcijas vērtības.',
'fileduplicatesearch-legend' => 'Meklēt kopiju',
'fileduplicatesearch-filename' => 'Faila vÄrds:',
'fileduplicatesearch-submit' => 'Meklēt',
@@ -2840,7 +2904,8 @@ Ievadi faila nosaukumu bez "{{ns:file}}:" prefiksa.',
'specialpages' => 'ĪpaÅ¡Äs lapas',
'specialpages-note' => '----
* NormÄlas Ä«paÅ¡Äs lapas.
-* <strong class="mw-specialpagerestricted">Ierobežotas pieejas Ä«paÅ¡Äs lapas.</strong>',
+* <span class="mw-specialpagerestricted">Ierobežotas pieejas Ä«paÅ¡Äs lapas.</span>
+* <span class="mw-specialpagecached">IekeÅ¡otÄs Ä«paÅ¡Äs lapas.</span>',
'specialpages-group-maintenance' => 'Uzturēšanas atskaites',
'specialpages-group-other' => 'Citas Ä«paÅ¡Äs lapas',
'specialpages-group-login' => 'Ieiet / piereģistrēties',
diff --git a/languages/messages/MessagesLzh.php b/languages/messages/MessagesLzh.php
index d7f8a678..c3879d51 100644
--- a/languages/messages/MessagesLzh.php
+++ b/languages/messages/MessagesLzh.php
@@ -96,8 +96,8 @@ $messages = array(
'tog-shownumberswatching' => '放哨有',
'tog-oldsig' => '覽原署å:',
'tog-fancysig' => '署以本碼待之(å…自連)',
-'tog-externaleditor' => '它器修文(高人用,需設之。[http://www.mediawiki.org/wiki/Manual:External_editors 閱。])',
-'tog-externaldiff' => '它器修異(高人用,需設之。[http://www.mediawiki.org/wiki/Manual:External_editors 閱。])',
+'tog-externaleditor' => '它器修文(高人用,需設之。[//www.mediawiki.org/wiki/Manual:External_editors 閱。])',
+'tog-externaldiff' => '它器修異(高人用,需設之。[//www.mediawiki.org/wiki/Manual:External_editors 閱。])',
'tog-showjumplinks' => 'éˆå¾€å­—',
'tog-uselivepreview' => 'å³è¦½åšé®®ï¼ˆJavaScript)',
'tog-forceeditsummary' => 'æ¼æ¦‚醒之',
@@ -195,15 +195,6 @@ $messages = array(
'index-category' => '已索之é ',
'noindex-category' => '未索之é ',
-'mainpagetext' => "'''共筆臺已立'''",
-'mainpagedocfooter' => "欲識維基,見[http://meta.wikimedia.org/wiki/Help:Contents User's Guide]
-
-== 始 ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-
'about' => 'è¿°',
'article' => 'æ–‡',
'newwindow' => '啟窗',
@@ -254,10 +245,10 @@ $messages = array(
'history' => '誌',
'history_short' => '誌',
'updatedmarker' => '新也',
-'info_short' => '快訊',
'printableversion' => 'å°æœ¬',
'permalink' => 'æ†éˆ',
'print' => 'å°',
+'view' => '察',
'edit' => '纂',
'create' => 'ç«‹',
'editthispage' => '纂',
@@ -265,6 +256,7 @@ $messages = array(
'delete' => '刪',
'deletethispage' => '刪',
'undelete_short' => '還$1已刪',
+'viewdeleted_short' => '察$1已刪',
'protect' => 'ç·˜',
'protect_change' => '易',
'protectthispage' => 'ç·˜å°',
@@ -348,6 +340,8 @@ $1',
'toc' => 'ç« ',
'showtoc' => '示',
'hidetoc' => 'è—',
+'collapsible-collapse' => '摺',
+'collapsible-expand' => '展',
'thisisdeleted' => '還$1或閱之?',
'viewdeleted' => '閱$1之?',
'restorelink' => '$1已刪',
@@ -428,12 +422,11 @@ $1',
'protectedpagetext' => '該é è¢«éŒ®ç„¡çº‚也。',
'viewsourcetext' => '爾å¯è¦–åŠè¤‡ä¹‹æœ¬é ä¹‹åŽŸå§‹ç¢¼ã€‚',
'protectedinterface' => 'æ­¤é å¸ç‰ˆï¼ŒéŒ®ä¹‹ä»¥é æ¿«ã€‚',
-'editinginterface' => "'''警示:'''æ­¤é å¸ç‰ˆï¼Œä¸€é«®ç‰½èº«ï¼Œæƒ æ…Žä¹‹ã€‚如譯之,å¯æ…®[http://translatewiki.net/wiki/Main_Page?setlang=zh-hant translatewiki.net]也,為MediaWiki軟件本地化之計劃也。",
+'editinginterface' => "'''警示:'''æ­¤é å¸ç‰ˆï¼Œä¸€é«®ç‰½èº«ï¼Œæƒ æ…Žä¹‹ã€‚如譯之,å¯æ…®[//translatewiki.net/wiki/Main_Page?setlang=zh-hant translatewiki.net]也,為MediaWiki軟件本地化之計劃也。",
'sqlhidden' => '(SQL隱然)',
'cascadeprotected' => 'æ­¤é "è¿­ç·˜"矣。$1é ç‰½é€£å¦‚下:
$2',
'namespaceprotected' => "å­æ¬Šæœªé€®ï¼ŒèŽ«èƒ½çº‚'''$1'''。",
-'customcssjsprotected' => '牽他人,å­æ¬Šæœªé€®ï¼ŒèŽ«èƒ½çº‚之。',
'ns-specialprotected' => '奇é ç¦çº‚也。',
'titleprotected' => "緘焉自[[User:$1|$1]]防建也。因''$2''也。",
@@ -476,11 +469,13 @@ $2',
'createaccounterror' => '無增簿:$1',
'nocookiesnew' => '{{SITENAME}}簿增而未登,惠准cookies後å†ç™»ä¹‹ã€‚',
'nocookieslogin' => '登簿{{SITENAME}}須cookies,惠准之後登。',
+'nocookiesfornew' => '簿未建,眾乃未定æºä¹‹ã€‚
+爾乃開之,é‡è¼‰å†ä¹ƒä¸€è©¦ã€‚',
'noname' => '缺簿å,或ä¸æ ¼ä¹Ÿã€‚',
'loginsuccesstitle' => '登簿æˆçŸ£',
'loginsuccess' => "'''$1'''登{{SITENAME}}矣",
'nosuchuser' => '查無此人。',
-'nosuchusershort' => '查無"<nowiki>$1</nowiki>",惠核之。',
+'nosuchusershort' => '查無"$1",惠核之。',
'nouserspecified' => 'ç°¿å須也',
'login-userblocked' => '此簿已被å°ã€‚登無簿也。',
'wrongpassword' => '符節ä¸åˆï¼Œæƒ æ ¸ä¹‹ã€‚',
@@ -522,7 +517,7 @@ $2',
# E-mail sending
'php-mail-error-unknown' => 'æ–¼ PHP mail() åƒæ•¸ç¾éŒ¯',
-# Password reset dialog
+# Change password dialog
'resetpass' => '變符',
'resetpass_announce' => '爾乃éŽéƒµä¹‹è‡¨ç¬¦ç™»ä¹‹ã€‚è¦å®Œç™»ï¼Œæ±ä¹ƒéœ€è¨­æ–°ç¬¦ç¯€ï¼š',
'resetpass_text' => '<!-- 加字 -->',
@@ -552,8 +547,6 @@ $2',
'extlink_tip' => '冠http://以éˆå¤–',
'headline_sample' => '題',
'headline_tip' => '二題',
-'math_sample' => '此書方程å¼',
-'math_tip' => '數學方程å¼ï¼ˆLaTeX)',
'nowiki_sample' => 'æ­¤ä¸æŽ’版',
'nowiki_tip' => 'ä¸æŽ’維基之版',
'image_tip' => '嵌檔',
@@ -614,7 +607,7 @@ $2',
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 尋誌],
或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 纂é ]</span>。',
'noarticletext-nopermission' => '查無此文。[[Special:Search/{{PAGENAME}}|尋題]],或<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} 尋誌]</span>。',
-'userpage-userdoesnotexist' => '「$1ã€ä¹‹ç°¿æœªå¢žä¹Ÿã€‚請建纂本é å‰æŸ¥ä¹‹ã€‚',
+'userpage-userdoesnotexist' => '「<nowiki>$1</nowiki>ã€ä¹‹ç°¿æœªå¢žä¹Ÿã€‚請建纂本é å‰æŸ¥ä¹‹ã€‚',
'userpage-userdoesnotexist-view' => '「$1ã€ä¹‹ç°¿æœªå¢žä¹Ÿã€‚',
'blocked-notice-logextract' => '該簿ç¾éŽ–也。
下列之記鎖,以察之:',
@@ -962,7 +955,6 @@ $1",
'changepassword' => '易符節',
'prefs-skin' => 'é¢ç‰ˆ',
'skin-preview' => 'è‰è¦½',
-'prefs-math' => '數學',
'datedefault' => '原註',
'prefs-datetime' => '日時',
'prefs-personal' => '概簿',
@@ -986,8 +978,6 @@ $1",
'columns' => '列:',
'searchresultshead' => 'å°‹',
'resultsperpage' => 'é ç¤ºå°‹',
-'contextlines' => '尋分列',
-'contextchars' => '列有字',
'stub-threshold' => '<a href="#" class="stub">短é é€£</a>æ ¼å¼é–€æª»ï¼ˆä½å…ƒçµ„):',
'stub-threshold-disabled' => 'ç¦',
'recentchangesdays' => '近易示日:',
@@ -1047,6 +1037,7 @@ $1",
'email' => '郵',
'prefs-help-realname' => 'å¯ç”¨ç½²ä¹Ÿï¼Œé¸å¡«ä¹‹ã€‚',
'prefs-help-email' => '電郵地å€ï¼Œé›–éžå¿…è¦ï¼ŒæƒŸå¤±ç¬¦ç¯€ä¹‹æ™‚,é‡è¨­è€…須寄於此。',
+'prefs-help-email-others' => '亦無被知之è¯ä¹Ÿã€‚',
'prefs-help-email-required' => '郵須也。',
'prefs-info' => '基',
'prefs-i18n' => 'è¬åœ‹',
@@ -1174,7 +1165,6 @@ $1",
'right-userrights' => '纂簿權',
'right-userrights-interwiki' => '纂å¦wiki他簿之權',
'right-siteadmin' => '鎖與解鎖資料庫',
-'right-reset-passwords' => '設他簿之符節',
'right-override-export-depth' => '出有五層深之é ',
'right-sendemail' => '擬書傳予他簿',
@@ -1299,7 +1289,7 @@ $1",
'minlength1' => 'å務逾一字元。',
'illegalfilename' => 'å"$1"ä¸æ ¼ï¼Œæ›´ä¹‹å†ç„‰ã€‚',
'badfilename' => 'æ›´å"$1。"。',
-'filetype-mime-mismatch' => '檔展åç„¡é…MIME類。',
+'filetype-mime-mismatch' => '檔展å「.$1ã€ç„¡é…åµæª”之MIME類($2)。',
'filetype-badmime' => '「$1ã€ä¹‹MIME類物檔案ä¸èƒ½ç»ä¹‹ã€‚',
'filetype-bad-ie-mime' => 'å›  Internet Explorer åµä½œã€Œ$1ã€ä¸è²¢ä¹Ÿã€‚它乃有å±éšªä¹‹é¡žä¹Ÿã€‚',
'filetype-unwanted-type' => "'''「.$1ã€'''乃無需之物類也。
@@ -1343,8 +1333,6 @@ $1",
'upload-description' => '檔述',
'upload-options' => '貢項',
'watchthisupload' => '派哨',
-'upload-wasdeleted' => "'''警示:復ç»æ£„檔,慎續之。'''
-誌刪如下:",
'filename-bad-prefix' => "ç»æª”以'''「$1ã€'''首,常由相機瞎造,惠更述之。",
'upload-success-subj' => '檔案安矣',
'upload-success-msg' => '爾自[$2]之貢安矣,見於此:[[:{{ns:file}}:$1]]',
@@ -1359,6 +1347,15 @@ $1',
'upload-unknown-size' => '未知之ç©',
'upload-http-error' => '發一HTTP之錯:$1',
+# Special:UploadStash
+'uploadstash' => '貢貯',
+'uploadstash-summary' => 'æ­¤é ä¹ƒå·²è²¢ç‰©ï¼ˆæ­£è²¢ï¼‰ä½†æœªç™¼wiki之地也。éžè²¢ä¹‹æœ¬äººä¹ƒç„¡è¦–也。',
+'uploadstash-clear' => '清貯',
+'uploadstash-nofiles' => '爾無貯貢也。',
+'uploadstash-badtoken' => '此動作無行也,或爾之幣已éŽã€‚å†è©¦ä¹‹ã€‚',
+'uploadstash-errclear' => '清貢無功也。',
+'uploadstash-refresh' => 'é‡è¼‰è²¢è¡¨',
+
# img_auth script messages
'img-auth-accessdenied' => '無通',
'img-auth-nopathinfo' => 'PATH_INFO失之。
@@ -1439,7 +1436,6 @@ $1',
[[Special:WhatLinksHere/$2|整表]]å¯ä¾›ä¹‹é–±ä¹Ÿã€‚',
'nolinkstoimage' => 'ç„¡é é€£æœ¬æª”也。',
'morelinkstoimage' => '閱檔[[Special:WhatLinksHere/$1|接]]。',
-'redirectstofile' => '下檔轉到此檔有$1:',
'duplicatesoffile' => '下檔é‡æ­¤æª”有$1([[Special:FileDuplicateSearch/$2|詳]]):',
'sharedupload' => '此檔為$1之共傳,å¯å¦é …用也。',
'sharedupload-desc-there' => '此檔為$1之共傳,å¯å¦é …用也。
@@ -1604,6 +1600,7 @@ $1',
'pager-newer-n' => '新$1次',
'pager-older-n' => '陳$1次',
'suppress' => '監',
+'querypage-disabled' => '此奇é åŸºä»¥æ•ˆï¼Œæ•…åœä¹‹ã€‚',
# Book sources
'booksources' => '書海',
@@ -1742,9 +1739,7 @@ $1',
'watchlistanontext' => '$1以治哨',
'watchnologin' => '未登簿',
'watchnologintext' => '[[Special:UserLogin|登簿]]以治哨。',
-'addedwatch' => '派哨',
'addedwatchtext' => "\"[[:\$1]]\"哨派矣。後有易ã€è­°è€…å¯è¦‹æ–¼[[Special:Watchlist|哨站]],且'''ç²—é«”'''列於[[Special:RecentChanges|近易]]。",
-'removedwatch' => '撤哨',
'removedwatchtext' => '"[[:$1]]"[[Special:Watchlist|哨]]撤矣。',
'watch' => '派哨',
'watchthispage' => '哨此報',
@@ -1792,11 +1787,11 @@ $NEWPAGE
{{SITENAME}}敬上
--
-欲更哨令,惠訪{{fullurl:{{#special:Watchlist}}/edit}}
+欲更哨令,惠訪{{canonicalurl:{{#special:EditWatchlist}}}}
欲刪之é ï¼Œæƒ è¨ª$UNWATCHURL
-饋助之,惠訪{{fullurl:{{MediaWiki:Helppage}}}}',
+饋助之,惠訪{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => '刪é ',
@@ -1811,7 +1806,7 @@ $NEWPAGE
'confirmdeletetext' => '欲刪此物與誌,知後果ã€åˆ[[{{MediaWiki:Policy-url}}]]後å†ç‚ºä¹‹ã€‚',
'actioncomplete' => 'æˆçŸ£',
'actionfailed' => '敗矣',
-'deletedtext' => '"<nowiki>$1</nowiki>"刪矣,見誌刪於$2。',
+'deletedtext' => '"$1"刪矣,見誌刪於$2。',
'deletedarticle' => '刪焉「[[$1]]ã€',
'suppressedarticle' => '廢焉「[[$1]]ã€',
'dellogpage' => '誌刪',
@@ -1860,7 +1855,7 @@ $NEWPAGE
'protect_expiry_invalid' => '屆期ä¸æ˜Žã€‚',
'protect_expiry_old' => '屆期已éŽã€‚',
'protect-unchain-permissions' => '解鎖更é ä¹‹é …',
-'protect-text' => "ç·˜æ†'''<nowiki>$1</nowiki>'''。",
+'protect-text' => "ç·˜æ†'''$1'''。",
'protect-locked-blocked' => "ç°¿ç¦ï¼Œ'''$1'''緘昔如下:",
'protect-locked-dblock' => "庫鎖,'''$1'''緘昔如下:",
'protect-locked-access' => "未准,'''$1'''緘昔如下:",
@@ -2005,7 +2000,6 @@ $1',
'blockip-title' => 'ç¦ç°¿',
'blockip-legend' => 'ç¦ç°¿',
'blockiptext' => '函下ç¦çº‚,簿ã€å€æ˜Žåˆ¤ï¼›[[{{MediaWiki:Policy-url}}|秉據]]如斯,立法克亂。指罪證行,了冤無憾。',
-'ipaddress' => 'IPå€',
'ipadressorusername' => 'IP或簿å',
'ipbexpiry' => 'é™æœŸ',
'ipbreason' => '指證',
@@ -2018,7 +2012,6 @@ $1',
** æ嚇擾
** 污å號
** å瀆é“',
-'ipbanononly' => '惟ç¦åŒ¿',
'ipbcreateaccount' => 'ç¦å¢žç°¿',
'ipbemailban' => 'ç¦éƒµæŽ',
'ipbenableautoblock' => 'å±¢ç¦æ­¤ç°¿ï¼Œæ–°IPå€ã€å¾Œç¹¼äº¦å¦‚也。',
@@ -2029,7 +2022,6 @@ $1',
'ipbotherreason' => '補證ã€åŠ è­‰æ›°',
'ipbhidename' => 'ç°¿å隱乎纂與表',
'ipbwatchuser' => '哨該簿之齋與議',
-'ipballowusertalk' => 'ç¦æ™‚許其簿纂己之議',
'ipb-change-block' => '用此設é‡ç¦æ­¤ç°¿',
'badipaddress' => 'IPä¸æ ¼',
'blockipsuccesssub' => 'ç¦ç„‰',
@@ -2046,14 +2038,9 @@ $1',
'unblocked-id' => 'ç¦$1赦焉',
'ipblocklist' => '列ç¦ç°¿ã€ç¦å€',
'ipblocklist-legend' => 'å°‹ç¦ç°¿',
-'ipblocklist-username' => 'ç°¿åã€IPå€ï¼š',
-'ipblocklist-sh-userblocks' => '$1ç¦ç°¿',
-'ipblocklist-sh-tempblocks' => '$1臨ç¦',
-'ipblocklist-sh-addressblocks' => '$1ç¦å–®IP',
'ipblocklist-submit' => 'å°‹',
'ipblocklist-localblock' => '本ç¦',
'ipblocklist-otherblocks' => 'ä»–{{PLURAL:$1|ç¦|ç¦}}',
-'blocklistline' => '$1,$2ç¦$3($4)',
'infiniteblock' => '永如',
'expiringblock' => '屆$1 $2',
'anononlyblock' => '惟匿者',
@@ -2073,7 +2060,7 @@ $1',
'blocklog-showsuppresslog' => '此簿曾被ç¦éš±ã€‚誌廢示下:',
'blocklogentry' => 'ç¦[[$1]]屆$2$3',
'reblock-logentry' => '改[[$1]]之ç¦ï¼Œå±†$2$3',
-'blocklogtext' => '此誌ç¦èµ¦ï¼›è‡ªç¦ä¸ç¤ºã€‚見[[Special:IPBlockList|æ­¤]]列今ç¦è€…。',
+'blocklogtext' => '此誌ç¦èµ¦ï¼›è‡ªç¦ä¸ç¤ºã€‚見[[Special:BlockList|æ­¤]]列今ç¦è€…。',
'unblocklogentry' => '$1赦焉',
'block-log-flags-anononly' => '惟ç¦åŒ¿',
'block-log-flags-nocreate' => 'ç¦å¢žç°¿',
@@ -2087,8 +2074,7 @@ $1',
'ipb_expiry_temp' => 'è—ç°¿ç¦å°å¿…為長久也。',
'ipb_hide_invalid' => '無壓簿以多纂之故。',
'ipb_already_blocked' => '"$1"æ—©ç¦çŸ£',
-'ipb-needreblock' => '== å·²ç¦ ==
-$1已被ç¦çŸ£ã€‚爾是å¦æ”¹æ­¤ç½®ï¼Ÿ',
+'ipb-needreblock' => '$1已被ç¦çŸ£ã€‚爾是å¦æ”¹æ­¤ç½®ï¼Ÿ',
'ipb-otherblocks-header' => 'ä»–{{PLURAL:$1|ç¦|ç¦}}',
'ipb_cant_unblock' => '有誤:ç¦$1無尋;或早赦矣。',
'ipb_blocked_as_range' => '錯:該IP $1 ç„¡ç›´ç¦ä¹Ÿï¼Œç„¡èµ¦ä¹‹ã€‚唯它在 $2 之範ç¦å…§ï¼Œå…¶ç¯„å¯èµ¦ä¹‹ã€‚',
@@ -2214,7 +2200,7 @@ $1已被ç¦çŸ£ã€‚爾是å¦æ”¹æ­¤ç½®ï¼Ÿ',
'allmessagesdefault' => '慣話文',
'allmessagescurrent' => '今話文',
'allmessagestext' => '此列MediaWiki官話。
-如貢正宗MediaWiki本地化,[http://www.mediawiki.org/wiki/Localisation MediaWiki本地化]與[http://translatewiki.net translatewiki.net]閱之。',
+如貢正宗MediaWiki本地化,[//www.mediawiki.org/wiki/Localisation MediaWiki本地化]與[//translatewiki.net translatewiki.net]閱之。',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages'''閉庫,'''無纂也。",
'allmessages-filter-legend' => '濾',
'allmessages-filter' => '以易濾:',
@@ -2393,14 +2379,6 @@ $1已被ç¦çŸ£ã€‚爾是å¦æ”¹æ­¤ç½®ï¼Ÿ',
'spam_reverting' => '還新審之無éˆ$1者。',
'spam_blanking' => '審皆éˆ$1,é‚令白é ã€‚',
-# Info page
-'infosubtitle' => 'é è¨»',
-'numedits' => '有纂$1',
-'numtalkedits' => '有議$1',
-'numwatchers' => '有哨$1',
-'numauthors' => '編者$1',
-'numtalkauthors' => '議者$1',
-
# Skin names
'skinname-standard' => '經典',
'skinname-nostalgia' => '懷å¤',
@@ -2412,25 +2390,6 @@ $1已被ç¦çŸ£ã€‚爾是å¦æ”¹æ­¤ç½®ï¼Ÿ',
'skinname-modern' => '時髦',
'skinname-vector' => '動力',
-# Math options
-'mw_math_png' => '屢作PNG',
-'mw_math_simple' => '易為則作HTML,å¦å‰‡PNG',
-'mw_math_html' => '堪為則作HTML,å¦å‰‡PNG',
-'mw_math_source' => 'TeXä¾èˆŠï¼Œç´”文覽器é©ä¹Ÿã€‚',
-'mw_math_modern' => '今之覽器此薦。',
-'mw_math_mathml' => '實驗者,堪為則作MathML。',
-
-# Math errors
-'math_failure' => 'è­¯ä¸æˆ',
-'math_unknown_error' => '未知之誤',
-'math_unknown_function' => '未知函å¼',
-'math_lexing_error' => '律有誤',
-'math_syntax_error' => '語法有誤',
-'math_image_error' => 'PNG è½‰æ•—ä¹‹ï¼›æŸ¥å·²è£ latex, dvipng(或dvips + gs + convert)乎',
-'math_bad_tmpdir' => '無寫或建數å¼è‡¨ç›®',
-'math_bad_output' => '無寫或建數å¼å‡ºç›®',
-'math_notexvc' => '少「texvcã€ï¼›åƒ math/README 置之。',
-
# Patrolling
'markaspatrolleddiff' => '派哨',
'markaspatrolledtext' => '哨此報',
@@ -2475,7 +2434,6 @@ $1',
'file-nohires' => '<small>無以更晰。</small>',
'svg-long-desc' => 'SVG檔,貌有åƒç´ $1矩$2,幅$3',
'show-big-image' => '全幅',
-'show-big-image-thumb' => '<small>縮圖幅有åƒç´ $1矩$2</small>',
'file-info-gif-looped' => '循',
'file-info-gif-frames' => '$1å¹€',
'file-info-png-looped' => '循',
@@ -2514,7 +2472,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => '寬',
@@ -2557,17 +2521,20 @@ $1',
'exif-gaincontrol-0' => 'ç„¡',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'åƒç±³',
+'exif-gpsdestdistance-m' => 'å“©',
+'exif-gpsdestdistance-n' => '浬',
+
# External editor support
'edit-externally' => '以外部程å¼ä¿®æ­¤æ–‡',
-'edit-externally-help' => '(請閱[http://www.mediawiki.org/wiki/Manual:External_editors 安è£æŒ‡å¼•]以知詳情)',
+'edit-externally-help' => '(請閱[//www.mediawiki.org/wiki/Manual:External_editors 安è£æŒ‡å¼•]以知詳情)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'å…¨',
-'imagelistall' => 'å…¨',
-'watchlistall2' => 'å…¨',
-'namespacesall' => 'å…¨',
-'monthsall' => 'å…¨',
-'limitall' => 'å…¨',
+'watchlistall2' => 'å…¨',
+'namespacesall' => 'å…¨',
+'monthsall' => 'å…¨',
+'limitall' => 'å…¨',
# E-mail address confirmation
'confirmemail' => '核郵驛',
@@ -2682,12 +2649,12 @@ $1',
'watchlistedit-noitems' => '哨無題也。',
'watchlistedit-normal-title' => '治哨站',
'watchlistedit-normal-legend' => '撤之',
-'watchlistedit-normal-explain' => '盡列有哨。欲撤題,æ€ä¹‹å†æ“Šã€Ž{{int:Watchlistedit-normal-submit}}ã€ã€‚亦[[Special:Watchlist/raw|æ²»æºå“¨]]也。',
+'watchlistedit-normal-explain' => '盡列有哨。欲撤題,æ€ä¹‹å†æ“Šã€Ž{{int:Watchlistedit-normal-submit}}ã€ã€‚亦[[Special:EditWatchlist/raw|æ²»æºå“¨]]也。',
'watchlistedit-normal-submit' => '撤題',
'watchlistedit-normal-done' => '$1題之哨已撤:',
'watchlistedit-raw-title' => 'æ²»æºå“¨',
'watchlistedit-raw-legend' => 'æ²»æºå“¨',
-'watchlistedit-raw-explain' => '盡列有哨。治此表以加減題;一行一題之。善,擊{{int:Watchlistedit-raw-submit}}。亦[[Special:Watchlist/edit|標準治哨]]也。',
+'watchlistedit-raw-explain' => '盡列有哨。治此表以加減題;一行一題之。善,擊{{int:Watchlistedit-raw-submit}}。亦[[Special:EditWatchlist|標準治哨]]也。',
'watchlistedit-raw-titles' => '題:',
'watchlistedit-raw-submit' => '更哨',
'watchlistedit-raw-done' => '哨更矣。',
@@ -2704,33 +2671,33 @@ $1',
'duplicate-defaultsort' => '警:é ä¹‹æŽ’éµã€Œ$2ã€è“‹å‰ä¹‹æŽ’éµã€Œ$1ã€ã€‚',
# Special:Version
-'version' => '版',
-'version-extensions' => 'è£å±•',
-'version-specialpages' => '奇é ',
-'version-parserhooks' => '語鈎',
-'version-variables' => '變數',
-'version-skins' => 'çš®',
-'version-other' => 'ä»–',
-'version-mediahandlers' => '媒處',
-'version-hooks' => '鈎',
-'version-extension-functions' => '展函',
-'version-parser-extensiontags' => '語展標',
-'version-parser-function-hooks' => '語函鈎',
-'version-skin-extension-functions' => 'é¢ç‰ˆå±•å‡½',
-'version-hook-name' => '鈎å',
-'version-hook-subscribedby' => '用於',
-'version-version' => '(版 $1)',
-'version-license' => '牌',
-'version-poweredby-credits' => "此 Wiki 以 '''[http://www.mediawiki.org/ MediaWiki]''' 之驅,權 © 2001-$1 $2。",
-'version-poweredby-others' => '其他',
-'version-license-info' => 'MediaWiki乃自由軟件;爾ä¾è‡ªç”±è»Ÿä»¶åŸºé‡‘會之GNU通用公共授權之款,就此本程åºå†ç™¼ä½ˆåŠï¼æˆ–修;ä¾ä¹‹äºŒç‰ˆï¼ˆè‡ªé¸ä¹‹ï¼‰æˆ–後之。
+'version' => '版',
+'version-extensions' => 'è£å±•',
+'version-specialpages' => '奇é ',
+'version-parserhooks' => '語鈎',
+'version-variables' => '變數',
+'version-antispam' => '垃圾之防',
+'version-skins' => 'çš®',
+'version-other' => 'ä»–',
+'version-mediahandlers' => '媒處',
+'version-hooks' => '鈎',
+'version-extension-functions' => '展函',
+'version-parser-extensiontags' => '語展標',
+'version-parser-function-hooks' => '語函鈎',
+'version-hook-name' => '鈎å',
+'version-hook-subscribedby' => '用於',
+'version-version' => '(版 $1)',
+'version-license' => '牌',
+'version-poweredby-credits' => "此 Wiki 以 '''[//www.mediawiki.org/ MediaWiki]''' 之驅,權 © 2001-$1 $2。",
+'version-poweredby-others' => '其他',
+'version-license-info' => 'MediaWiki乃自由軟件;爾ä¾è‡ªç”±è»Ÿä»¶åŸºé‡‘會之GNU通用公共授權之款,就此本程åºå†ç™¼ä½ˆåŠï¼æˆ–修;ä¾ä¹‹äºŒç‰ˆï¼ˆè‡ªé¸ä¹‹ï¼‰æˆ–後之。
MediaWiki乃為用之發,無擔之責也;亦無售目之默擔也。åƒGNU通用公共授權之詳。
-爾乃收附本程åºä¹‹[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU通用公共授權副本];如無者,致函至自由軟件基金會:51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或[http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 閱之]。',
-'version-software' => 'è£ä»¶',
-'version-software-product' => 'å“',
-'version-software-version' => '版',
+爾乃收附本程åºä¹‹[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU通用公共授權副本];如無者,致函至自由軟件基金會:51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或[//www.gnu.org/licenses/old-licenses/gpl-2.0.html 閱之]。',
+'version-software' => 'è£ä»¶',
+'version-software-product' => 'å“',
+'version-software-version' => '版',
# Special:FilePath
'filepath' => '檔路',
@@ -2740,9 +2707,7 @@ MediaWiki乃為用之發,無擔之責也;亦無售目之默擔也。åƒGNUé€
# Special:FileDuplicateSearch
'fileduplicatesearch' => '擇é‡æª”',
-'fileduplicatesearch-summary' => '以é‡æª”之切去查é‡ä¹Ÿã€‚
-
-å…¥å時無 "{{ns:file}}:" 首也。',
+'fileduplicatesearch-summary' => '以é‡æª”之切去查é‡ä¹Ÿã€‚',
'fileduplicatesearch-legend' => 'å°‹é‡',
'fileduplicatesearch-filename' => 'å:',
'fileduplicatesearch-submit' => 'å°‹',
diff --git a/languages/messages/MessagesLzz.php b/languages/messages/MessagesLzz.php
index 3258a8b6..d052708c 100644
--- a/languages/messages/MessagesLzz.php
+++ b/languages/messages/MessagesLzz.php
@@ -93,14 +93,6 @@ $messages = array(
'index-category' => "Indexi na uÄŸun but'k'ape",
'noindex-category' => 'Indexi muÅŸi na var uÄŸun sayfape',
-'mainpagetext' => "'''Mediawiki dido k'ai ik'idu.'''",
-'mainpagedocfooter' => "Vik'i şeni muç'o ixmarinen ya mutxanepe oguru şeni [http://meta.wikimedia.org/wiki/Help:Contents oxmaruşi rexberis] o3'k'edit.
-
-== Ağani na gyoç’k’u maxmarepe ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Ok'iduÅŸi ayarepeÅŸi liste]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki P'anda Na-k'itxu K'itxalape]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-mailepeÅŸiÅŸ liste]",
-
'about' => 'Åženi',
'newwindow' => '(ağne penceres guin3ʼkʼen)',
'cancel' => 'İpʼtʼali qʼvi',
@@ -132,7 +124,6 @@ $messages = array(
'searcharticle' => 'Ä°gzali',
'history' => 'Butʼkʼaş tarixi',
'history_short' => 'Tarixi',
-'info_short' => 'Çkina',
'printableversion' => "Kart'aliÅŸa na geibaz*gen versiyoni",
'permalink' => 'Am xalişa kʼontaktʼi qʼvi',
'edit' => 'doktiri',
@@ -230,7 +221,7 @@ Dudicoxopes oxmaruşi yasaği na ren ar, varna daha dido kʼarakʼtʼeri uğun.'
'nologinlink' => 'Hesabi dokʼidi.',
'mailmypassword' => 'Ağne pʼarola-çkimi moncğoni',
-# Password reset dialog
+# Change password dialog
'oldpassword' => "McveÅŸi p'arola:",
'newpassword' => "AÄŸani P'arola:",
@@ -245,8 +236,6 @@ Dudicoxopes oxmaruşi yasaği na ren ar, varna daha dido kʼarakʼtʼeri uğun.'
'extlink_tip' => 'Galeni kʼontʼaktʼi (Adresiş dudis http:// ukʼatit)',
'headline_sample' => 'Dudicoxoşi nçʼara',
'headline_tip' => '2. derece dudicoxo',
-'math_sample' => 'Matematʼikuri-ifade-doçʼarit',
-'math_tip' => 'Matʼematʼikuri formuli (LaTeX)',
'nowiki_sample' => 'Oxoşkveri formatʼi nçʼara-tkvani ak doçʼarit.',
'nowiki_tip' => 'vikʼiş formatʼi ipʼtʼali qʼvi.',
'image_tip' => 'Doxveri dosya',
@@ -483,7 +472,6 @@ Ogoruşi dudis '''all:''' pʼrefiksi okʼatute doloçʼareli na ren iri şeyi (o
# Watchlist
'watchlist' => 'çkimi gotxozu listʼe',
'mywatchlist' => 'Çkimi gotxozu listʼe',
-'addedwatch' => 'Skani gotxozu listʼeşa ikʼayitʼinu.',
'addedwatchtext' => '"<nowiki>[[:$1]]</nowiki>" coxoni butʼkʼa [[Special:Watchlist|gotxozu listʼes]] ikʼayitʼinu.
Na moxtasen oras, am butʼkʼaşa do am butʼkʼa kʼala alakʼali na ren oğarğaluşi butʼkʼaşa na ixvenasen oktirobape ak ilistʼelinasen.
@@ -491,7 +479,6 @@ Na moxtasen oras, am butʼkʼaÅŸa do am butʼkʼa kʼala alakʼali na ren oÄŸarÄ
Dido kʼai o3xunu şeni doloxe muşis [[Special:RecentChanges|çodinaşi oktirobapeşi listʼe]] stʼatʼias dolom3ʼkʼupineri harfepete ilistʼelinasenan.
Butʼkʼai gotxozu listʼeşen ojilu şeni "gotxozu naşkʼvi" linkʼişa gebaz*git.',
-'removedwatch' => "Skani gotxozu list'eÅŸen nijilu",
'removedwatchtext' => '"[[:$1]]" but\'k\'a, [[Special:Watchlist|skani gotxozu list\'eÅŸen]] nijilu.',
'watch' => 'Amus gatxozi',
'watchthispage' => 'Butʼkʼa gatxozi',
@@ -509,7 +496,7 @@ Butʼkʼai gotxozu listʼeşen ojilu şeni "gotxozu naşkʼvi" linkʼişa gebaz*
'confirmdeletetext' => 'Aşoten am butʼkʼa varna dosya, mteli golaxteri kʼayitʼepe kʼala datʼabeizişen nijilen.
Am dulyaşen na yeçkindasen zararepe giçkinna do am dulya [[{{MediaWiki:Policy-url}}|Ojiluşi kʼaidepe]] şeni mtini renya isimadep na, am dulya doqʼvi.',
'actioncomplete' => 'Aksiyoni içodinu.',
-'deletedtext' => '"<nowiki>$1</nowiki>" nijilu.
+'deletedtext' => '"$1" nijilu.
Xolosi oras jileri na renanpe oz*iru ÅŸeni: $2.',
'deletedarticle' => '"[[$1]]" aya nijilu',
'dellogpage' => 'Ojiluşi kʼayitʼepe',
@@ -528,7 +515,7 @@ Xolosi oras jileri na renanpe oz*iru ÅŸeni: $2.',
'protectexpiry' => 'Am tarixis içoden:',
'protect_expiry_invalid' => 'Am tarixis var içoden, mtini va ren.',
'protect_expiry_old' => 'Golaxteris soni oxmaruÅŸi ora.',
-'protect-text' => "'''<nowiki>$1</nowiki>''' butʼkʼaşi oçvaluşi sinori akolen gazʼiren do gaktirinen.",
+'protect-text' => "'''$1''' butʼkʼaşi oçvaluşi sinori akolen gazʼiren do gaktirinen.",
'protect-locked-access' => "Butʼkʼaşi oçvalu sinorepe oktiru şeni maxmare-hesabi skanis yetʼkʼi var uğun.
'''$1''' butʼkʼaşi maartani tercihepe antepe renan:",
'protect-cascadeon' => 'Am butʼkʼa, "kʼademoni oçvuşi sistemi" aktʼifi na ixvenu do tude na ren {{PLURAL:$1|$1 butʼkʼas|$1 butʼkʼas}} na ixmarinetʼu şeni a3ʼi içven.
@@ -698,11 +685,10 @@ Mu iqʼven başka coxo doçʼari.',
'nextdiff' => 'Ukʼaçxineri versiyoni kʼala na ren farkʼi →',
# Media information
-'file-info-size' => '$1 × $2 pikseli, dosyaşi didinoba: $3, MIME type: $4',
-'file-nohires' => '<small>Çkva kʼai ozʼiramuşis na uğun versiyoni va ren.</small>',
-'svg-long-desc' => 'SVG dosya, coxoten $1 × $2 pʼikʼseli, dosyaşi didinoba: $3',
-'show-big-image' => 'Tam ozʼiramuşi',
-'show-big-image-thumb' => '<small>"Evvelişen i3ʼkʼedi" fonkʼsionişi didinoba: $1 × $2 pikseli</small>',
+'file-info-size' => '$1 × $2 pikseli, dosyaşi didinoba: $3, MIME type: $4',
+'file-nohires' => '<small>Çkva kʼai ozʼiramuşis na uğun versiyoni va ren.</small>',
+'svg-long-desc' => 'SVG dosya, coxoten $1 × $2 pʼikʼseli, dosyaşi didinoba: $3',
+'show-big-image' => 'Tam ozʼiramuşi',
# Bad image list
'bad_image_list' => 'Formatʼi aşo ren:
@@ -717,18 +703,23 @@ Ukʼaçxe na mulunan kʼontʼaktʼepe istʼisna oqʼopinot kʼabuli ixvenen. Mes
'metadata-expand' => 'Detayepe ko3ʼiri',
'metadata-collapse' => 'Detayepe doÅŸinaxi',
'metadata-fields' => 'Am butʼkʼas na ilistʼelinen EXIF metadataş burmepe, resimi ozʼiramuşi butʼkʼapes metadata tʼablo na ğuru oras ixmarinen. Majuranepeti maartani oqʼopinot işinaxasen.
-
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Dosyas, kʼompʼuteris na renan pʼrogramepe kʼala oktirobape doqʼvi.',
-'edit-externally-help' => '(Dido çkina şeni metʼas na renan [http://www.mediawiki.org/wiki/Manual:External_editors galeni xvenaş tercihepe] (İngilisuri) butʼkʼa muşis o3ʼkʼedit)',
+'edit-externally-help' => '(Dido çkina şeni metʼas na renan [//www.mediawiki.org/wiki/Manual:External_editors galeni xvenaş tercihepe] (İngilisuri) butʼkʼa muşis o3ʼkʼedit)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'mteli',
diff --git a/languages/messages/MessagesMai.php b/languages/messages/MessagesMai.php
index cbd0f4d0..76e47da4 100644
--- a/languages/messages/MessagesMai.php
+++ b/languages/messages/MessagesMai.php
@@ -54,7 +54,7 @@ $messages = array(
'tog-shownumberswatching' => 'धà¥à¤¯à¤¾à¤¨ राखैबला पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤• संखà¥à¤¯à¤¾',
'tog-oldsig' => 'अखà¥à¤¨à¤•à¤¾ दसà¥à¤–तक पà¥à¤°à¤¾à¤°à¥‚प',
'tog-fancysig' => 'हसà¥à¤¤à¤¾à¤•à¥à¤·à¤°à¤•à¥‡à¤‚ विकिटेकà¥à¤¸à¤Ÿà¤• रूपमे देखू (सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤ शà¥à¤°à¥ƒà¤‚खला हीन)',
-'tog-externaleditor' => "↓पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ रूपेठबाहà¥à¤¯ समà¥à¤ªà¤¾à¤¦à¤• क' उपयोग करू (केवल विशेषजà¥à¤žà¤¸à¤­à¤• लेल, à¤à¤•à¤°à¤¾ लेल संगणक पर विशेष सेटिंग चाही। [http://www.mediawiki.org/wiki/Manual:External_editors आओर जानकारी।])",
+'tog-externaleditor' => "↓पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ रूपेठबाहà¥à¤¯ समà¥à¤ªà¤¾à¤¦à¤• क' उपयोग करू (केवल विशेषजà¥à¤žà¤¸à¤­à¤• लेल, à¤à¤•à¤°à¤¾ लेल संगणक पर विशेष सेटिंग चाही। [//www.mediawiki.org/wiki/Manual:External_editors आओर जानकारी।])",
'tog-externaldiff' => 'पà¥à¤°à¤¾à¤¨ संसà¥à¤•à¤°à¤£à¤®à¥‡ अंतर देखेबाक हेतॠपूरà¥à¤µà¤¨à¤¿à¤µà¤¿à¤·à¥à¤Ÿ रूपमे बाहरक परिवरà¥à¤¤à¤¨à¤• पà¥à¤°à¤¯à¥‹à¤— करू',
'tog-showjumplinks' => 'करू "तड़पान" भेटैबला लिंक सभ',
'tog-uselivepreview' => 'करू चल पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨ (जावासà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ चाही) (पà¥à¤°à¤¾à¤¯à¥‹à¤—िक)',
@@ -150,14 +150,7 @@ $messages = array(
'listingcontinuesabbrev' => 'शेष आगाà¤à¥¤',
'index-category' => 'कà¥à¤°à¤® कà¤à¤² पनà¥à¤¨à¤¾ सभ',
'noindex-category' => 'कà¥à¤°à¤® नै कà¤à¤² पनà¥à¤¨à¤¾ सभ',
-
-'mainpagetext' => "'''मीडियाविकी नीक जकाठपà¥à¤°à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ भेल।'''",
-'mainpagedocfooter' => "समà¥à¤ªà¤°à¥à¤• करू [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] विकी तंतà¥à¤°à¤¾à¤‚शक पà¥à¤°à¤¯à¥‹à¤—क जानकारी लेल।
-
-==पà¥à¤°à¤¾à¤°à¤®à¥à¤­ कोना करी==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+'broken-file-category' => 'पनà¥à¤¨à¤¾ सभ जाइमे फाइल लिंक सभ टूटल हà¥à¤…à¤',
'about' => 'विषयमे',
'article' => 'विषय सूची पनà¥à¤¨à¤¾',
@@ -209,10 +202,10 @@ $messages = array(
'history' => 'पनà¥à¤¨à¤¾à¤• इतिहास',
'history_short' => 'इतिहास',
'updatedmarker' => 'हमर अनà¥à¤¤à¤¿à¤® आगमनसठपहिने अदà¥à¤¯à¤¤à¤¨ कà¤à¤²',
-'info_short' => 'सूचना',
'printableversion' => 'पà¥à¤°à¤¿à¤‚ट करबा योगà¥à¤¯',
'permalink' => 'सà¥à¤¥à¤¾à¤¯à¥€ लिंक',
'print' => 'छापू',
+'view' => 'देखू',
'edit' => 'संपादन',
'create' => 'बनाउ',
'editthispage' => 'à¤à¤¹à¤¿ पृषà¥à¤ à¤• संपादन',
@@ -220,6 +213,7 @@ $messages = array(
'delete' => 'मेटाउ',
'deletethispage' => 'ई पनà¥à¤¨à¤¾ मेटाउ',
'undelete_short' => 'आपस आनू {{PLURAL:$1|à¤à¤• समà¥à¤ªà¤¾à¤¦à¤¨t|$1 समà¥à¤ªà¤¾à¤¦à¤¨ सभ}}',
+'viewdeleted_short' => 'देखू {{PLURAL:$1|à¤à¤•à¤Ÿà¤¾ मेटाà¤à¤² समà¥à¤ªà¤¾à¤¦à¤¨|$1 मेटाà¤à¤² समà¥à¤ªà¤¾à¤¦à¤¨ सभ}}',
'protect' => 'बचाउ',
'protect_change' => 'बदलू',
'protectthispage' => 'ठपनà¥à¤¨à¤¾à¤• रकà¥à¤·à¤¾ करू',
@@ -303,6 +297,8 @@ $1',
'toc' => 'विषय-सूची',
'showtoc' => 'देखाऊ',
'hidetoc' => 'नà¥à¤•à¤¾à¤Š',
+'collapsible-collapse' => 'भखड़ाउ',
+'collapsible-expand' => 'बढ़ाउ',
'thisisdeleted' => 'देखू वा जाउ $1?',
'viewdeleted' => 'देखू $1?',
'restorelink' => '{{PLURAL:$1|à¤à¤•à¤Ÿà¤¾ मेटाà¤à¤² समà¥à¤ªà¤¾à¤¦à¤¨|$1 मेटाà¤à¤² समà¥à¤ªà¤¾à¤¦à¤¨ सभ}}',
@@ -314,6 +310,8 @@ $1',
'page-rss-feed' => '"$1" आर.à¤à¤¸.à¤à¤¸. सूचना',
'page-atom-feed' => '"$1" अणॠसू़चना',
'red-link-title' => '$1 (पृषà¥à¤  उपलबà¥à¤§ नै अछि)',
+'sort-descending' => 'घटैत कà¥à¤°à¤®à¤®à¥‡ छाà¤à¤Ÿà¥‚',
+'sort-ascending' => 'बढ़ैत कà¥à¤°à¤®à¤®à¥‡ छाà¤à¤Ÿà¥‚',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'पृषà¥à¤ ',
@@ -396,12 +394,13 @@ $1',
'protectedinterface' => 'ई पनà¥à¤¨à¤¾ तंतà¥à¤°à¤¾à¤‚श लेल मधà¥à¤¯à¤¸à¥à¤¥ पाठक वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾ करैत अछि, आ अपशबà¥à¤¦ रोकबाक बà¥à¤¯à¥‹à¤‚त करैत अछि।',
'editinginterface' => "'''चेतौनी''' अहाठà¤à¤•à¤Ÿà¤¾ à¤à¤¹à¥‡à¤¨ पनà¥à¤¨à¤¾à¤• समà¥à¤ªà¤¾à¤¦à¤¨ कऽ रहल छी जे तंतà¥à¤°à¤¾à¤‚शक मधà¥à¤¯à¤¸à¥à¤¥ पनà¥à¤¨à¤¾à¤•à¥‡à¤ पाठ देबा लेल पà¥à¤°à¤¯à¥‹à¤— भऽ रहल अछि।
ठपनà¥à¤¨à¤¾à¤®à¥‡ परिवरà¥à¤¤à¤¨ दोसर पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ लेल पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ मधà¥à¤¯à¤¸à¥à¤¥à¤• रूपमे परिवरà¥à¤¤à¤¨ करत।
-अनà¥à¤µà¤¾à¤¦ लेल [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] जाउ, मीडियाविकी सà¥à¤¥à¤¾à¤¨à¥€à¤¯à¤•à¤°à¤£ परियोजनापर।",
+अनà¥à¤µà¤¾à¤¦ लेल [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] जाउ, मीडियाविकी सà¥à¤¥à¤¾à¤¨à¥€à¤¯à¤•à¤°à¤£ परियोजनापर।",
'sqlhidden' => '(नà¥à¤•à¤¾à¤à¤² à¤à¤¸.कà¥à¤¯à¥‚.à¤à¤². अभà¥à¤¯à¤°à¥à¤¥à¤¨à¤¾)',
'cascadeprotected' => 'ठपनà¥à¤¨à¤¾à¤• समà¥à¤ªà¤¾à¤¦à¤¨ समà¥à¤­à¤µ नै अछि, कारण ई ठमे समà¥à¤®à¤¿à¤²à¤¿à¤¤ अछि, {{PLURAL:$1|पनà¥à¤¨à¤¾, जे अछि|पनà¥à¤¨à¤¾, से सभ अछि}} सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ अछि "तराउपड़ी" विकलà¥à¤ª खोललाक बाद:
$2',
'namespaceprotected' => "अहाà¤à¤•à¥‡à¤ '''$1''' नाम-पेटारमे समà¥à¤ªà¤¾à¤¦à¤¨à¤• अनà¥à¤®à¤¤à¤¿ नै अछि।",
-'customcssjsprotected' => 'अहाà¤à¤•à¥‡à¤ ठपनà¥à¤¨à¤¾à¤• समà¥à¤ªà¤¾à¤¦à¤¨à¤• अधिकार नै अछि, कारण ई दोसर पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤• वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त पà¥à¤°à¤¤à¥€à¤• छी।',
+'customcssprotected' => 'अहांकें ठसी.à¤à¤¸.à¤à¤¸.पनà¥à¤¨à¤¾à¤•à¥‡à¤‚ समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ करबाक अधिकार नै अछि, कारण à¤à¤®à¥‡ दोसर पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤• वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त विकलà¥à¤ª छै।',
+'customjsprotected' => 'अहांकें ठजावासà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ पनà¥à¤¨à¤¾à¤•à¥‡à¤‚ समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ करबाक अधिकार नै अछि, कारण à¤à¤®à¥‡ दोसर पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤• वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त विकलà¥à¤ª छै।',
'ns-specialprotected' => 'विशेष पनà¥à¤¨à¤¾ सभकेठसमà¥à¤ªà¤¾à¤¦à¤¿à¤¤ नै कà¤à¤² जा सकैà¤à¥¤',
'titleprotected' => 'ठशीरà¥à¤·à¤•à¤• निरà¥à¤®à¤¾à¤£ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ अछि [[User:$1|$1]] दà¥à¤µà¤¾à¤°à¤¾à¥¤
कारण à¤à¤¤à¤½ देल अछि "\'\'$2\'\'"।',
@@ -439,6 +438,7 @@ $2',
'createaccount' => 'खाता खोली',
'gotaccount' => 'पहिनहियेसठखाता अछि? $1',
'gotaccountlink' => 'समà¥à¤ªà¥à¤°à¤µà¥‡à¤¶',
+'userlogin-resetlink' => 'अपन समà¥à¤ªà¥à¤°à¤µà¥‡à¤¶ विवरण बिसरि गेलहà¥à¤?',
'createaccountmail' => 'ई-पतà¥à¤° दà¥à¤µà¤¾à¤°à¤¾',
'createaccountreason' => 'कारण:',
'badretype' => 'कूटशबà¥à¤¦ जे अहाठभरलहà¥à¤ से मेल नै खाइà¤à¥¤',
@@ -453,13 +453,15 @@ $2',
'nocookieslogin' => '{{अनà¥à¤¤à¤°à¥à¤œà¤¾à¤²}} पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤ समà¥à¤ªà¥à¤°à¤µà¥‡à¤¶à¤¿à¤¤ करबा लेल जà¥à¤žà¤¾à¤ªà¤•à¤• पà¥à¤°à¤¯à¥‹à¤— करैत अछि।
अहाठजà¥à¤žà¤¾à¤ªà¤•à¤•à¥‡à¤ अशकà¥à¤¤ केने छी।
कृपा कऽ ओकरा सकà¥à¤°à¤¿à¤¯ करू आ फेरसठपà¥à¤°à¤¯à¤¾à¤¸ करू।',
+'nocookiesfornew' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ खाजा नै खà¥à¤œà¤², कारण हम ओकर जड़ि पूरà¥à¤£ रूपेठनै ताकि सकलौं।
+ई दृढ़ करू जे जà¥à¤žà¤¾à¤ªà¤• सकà¥à¤°à¤¿à¤¯ अछि, ठपनà¥à¤¨à¤¾à¤•à¥‡à¤ फेरसठभारित करू आ फेरसठपà¥à¤°à¤¯à¤¾à¤¸ करू।',
'noname' => 'अहाठवैध पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤® नै देने छी।',
'loginsuccesstitle' => 'समà¥à¤ªà¥à¤°à¤µà¥‡à¤¶ सफल',
'loginsuccess' => "'''अहाठसमà¥à¤ªà¥à¤°à¤µà¥‡à¤¶ केलहà¥à¤ {{अनà¥à¤¤à¤°à¥à¤œà¤¾à¤²-पता}} \"\$1\".'''क रूपमे।",
'nosuchuser' => '"$1" नामसठकोनो पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ नै अछि।
पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤® बà¥à¤°à¤¹à¥à¤®à¤•à¥à¤·à¤°-लघà¥à¤µà¤•à¥à¤·à¤° भेद यà¥à¤•à¥à¤¤ अछि।
अपन हà¥à¤°à¤¿à¤œà¥ˆ जाà¤à¤šà¥‚, वा [[Special:UserLogin/signup|नव खाता बनाउ]] ।',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" नामà¥à¤¨à¤¾ कोनो पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ नै अछि।
+'nosuchusershort' => '"$1" नामà¥à¤¨à¤¾ कोनो पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ नै अछि।
अपन हà¥à¤°à¤¿à¤œà¤ सà¥à¤§à¤¾à¤°à¥‚।',
'nouserspecified' => 'अहाà¤à¤•à¥‡à¤ à¤à¤•à¤Ÿà¤¾ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤® देबऽ पड़त।',
'login-userblocked' => 'ई पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ अछि। समà¥à¤ªà¥à¤°à¤µà¥‡à¤¶à¤• अधिकार नै अछि।',
@@ -501,13 +503,14 @@ $2',
'usernamehasherror' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤®à¤®à¥‡ चरिखाना चेनà¥à¤¹ नै रहि सकैà¤',
'login-throttled' => 'अहाठढ़ेर रास समà¥à¤ªà¥à¤°à¤µà¥‡à¤¶ पà¥à¤°à¤¯à¤¾à¤¸ केलहà¥à¤à¥¤
फेर पà¥à¤°à¤¯à¤¾à¤¸ करबासठपहिने कने काल थमà¥à¤¹à¥‚।',
+'login-abort-generic' => 'अहाà¤à¤• समà¥à¤ªà¥à¤°à¤µà¥‡à¤¶ सफल नै भेल- खतम',
'loginlanguagelabel' => 'भाषा : $1',
'suspicious-userlogout' => 'अहाà¤à¤• निषà¥à¤•à¥à¤°à¤®à¤£à¤• अनà¥à¤°à¥‹à¤§ नै मानल गेल कारण ई लागल जे ई पà¥à¤°à¤¾à¤¨ गवेषकक लागि वा दोसराइत उपसà¥à¤®à¥ƒà¤¤à¤¿ दà¥à¤µà¤¾à¤°à¤¾ पठाओल गेल छल।',
# E-mail sending
'php-mail-error-unknown' => 'पी.à¤à¤š.पी.क संदेश कारà¥à¤¯() मे अजà¥à¤žà¤¾à¤¤ दोष',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'कूटशबà¥à¤¦ बदलू',
'resetpass_announce' => 'अहाठअसà¥à¤¥à¤¾à¤¯à¥€ ई-पतà¥à¤° विधà¥à¤¯à¤¾à¤¦à¥‡à¤¶à¤¸à¤ समà¥à¤ªà¥à¤°à¤µà¥‡à¤¶ केने छी।
समà¥à¤ªà¥à¤°à¤µà¥‡à¤¶ समà¥à¤ªà¥‚रà¥à¤£ करबा लेल, अहाठà¤à¤•à¤Ÿà¤¾ नव कूटशबà¥à¤¦ à¤à¤¤à¤ निरà¥à¤§à¤¾à¤°à¤¿à¤¤ करू:',
@@ -526,6 +529,29 @@ $2',
अहाठपहिनहिये सफलतासठकूटशबà¥à¤¦ बदलि लेने छी वा à¤à¤•à¤Ÿà¤¾ नव असà¥à¤¥à¤¾à¤¯à¥€ कूटशबà¥à¤¦ लेल आगà¥à¤°à¤¹ केने छी।',
'resetpass-temp-password' => 'तातà¥à¤•à¤¾à¤²à¤¿à¤• कूटशबà¥à¤¦',
+# Special:PasswordReset
+'passwordreset' => 'कूटशबà¥à¤¦ फेरसठबनाउ',
+'passwordreset-text' => 'ई-पतà¥à¤° दà¥à¤µà¤¾à¤°à¤¾ अपन खाता विवरणक सà¥à¤®à¤°à¤£ पà¥à¤°à¤¾à¤ªà¥à¤¤ करबा लेल ठफॉरà¥à¤®à¤•à¥‡à¤ भरू।',
+'passwordreset-legend' => 'कूटशबà¥à¤¦ फेरसठबनाउ',
+'passwordreset-disabled' => 'कूटशबà¥à¤¦ फेरसठबनाà¤à¤¬ ठविकीपर अकà¥à¤·à¤® कà¤à¤² अछि।',
+'passwordreset-pretext' => '{{PLURAL:$1||नीचाà¤à¤• दतà¥à¤¤à¤¾à¤‚शक à¤à¤•à¤Ÿà¤¾ भागक पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿ करू}}',
+'passwordreset-username' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤®',
+'passwordreset-email' => 'ई-पतà¥à¤° संकेत',
+'passwordreset-emailtitle' => 'लेखा विवरण {{अनà¥à¤¤à¤°à¥à¤œà¤¾à¤²à¤• नाम}}',
+'passwordreset-emailtext-ip' => 'कियो (समà¥à¤­à¤µà¤¤à¤ƒ अहाà¤, अनà¥à¤¤à¤°à¥à¤œà¤¾à¤² सेवा कलà¥à¤ªà¤• $1 सà¤) अपन लेखा विवरणक पà¥à¤¨à¤ƒà¤¸à¥à¤®à¤°à¤£à¤• लेल अनà¥à¤°à¥‹à¤§ केलहà¥à¤ ठलेल {{ अनà¥à¤¤à¤°à¥à¤œà¤¾à¤²à¤• नाम}} ($4). ई पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ {{PLURAL:$3|लेखा अछि| लेखा सभ अछि}}
+ठई-पतà¥à¤° संकेतसठसमà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤:
+
+$2
+
+{{PLURAL:$3|ई अलà¥à¤ªà¤•à¤¾à¤²à¤• कूटशबà¥à¤¦| ई सभ अलà¥à¤ªà¤•à¤¾à¤²à¤• कूटशबà¥à¤¦}} खतम भऽ जाà¤à¤¤ {{PLURAL:$5|à¤à¤• दिन|$ पाà¤à¤š दिन}}.
+अहाठसमà¥à¤ªà¥à¤°à¤µà¥‡à¤¶ करू आ à¤à¤•à¤Ÿà¤¾ नव कूटशबà¥à¤¦ चà¥à¤¨à¥‚।. जौं कियो आन ई आगà¥à¤°à¤¹ केने अछि, वा अहाà¤à¤•à¥‡à¤ अपन पà¥à¤°à¤¾à¤¨ कूटशबà¥à¤¦ मोन पड़ि गेल अछि , आ आब à¤à¤•à¤°à¤¾ बदलबाक इचà¥à¤›à¤¾ नै राखै छी तठअहाठठसंदेशकेठबिसरि जाउ आ अपन पà¥à¤°à¤¾à¤¨ कूटशबà¥à¤¦à¤• पà¥à¤°à¤¯à¥‹à¤— करैत रहू।',
+'passwordreset-emailtext-user' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ $1 {{अनà¥à¤¤à¤°à¥à¤œà¤¾à¤²}} पर अहाà¤à¤• खाता विवरणक {{SITENAME}} लेल फेरसठ($4) आगà¥à¤°à¤¹ केने छथि। ई पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ {{PLURAL:$3|खाता अछि|खाता सभ अछि}} ठई-पतà¥à¤° संकेतसठजà¥à¤¡à¤¼à¤²: $2
+{{PLURAL:$3| ई असà¥à¤¥à¤¾à¤¯à¥€ कूटशबà¥à¤¦|ई सभ असà¥à¤¥à¤¾à¤¯à¥€ कूटशबà¥à¤¦}} खतम भऽ जाà¤à¤¤ {{PLURAL:$5|à¤à¤• दिन|$5 दिन}} मे।
+अहाठसमà¥à¤ªà¥à¤°à¤µà¥‡à¤¶ करू आ à¤à¤•à¤Ÿà¤¾ नव कूटशबà¥à¤¦ आब चà¥à¤¨à¥‚। जठकियो दोसर ई आगà¥à¤°à¤¹ केने छथि, वा जठअहाà¤à¤•à¥‡à¤ अपन मूल कूटशबà¥à¤¦ मोन पड़ि गेल अछि, आ अहाठआब ओइ कूटशबà¥à¤¦à¤•à¥‡à¤ नै बदलऽ चाहै छी, अहाठठसंदेशकेठबिसरि सकै छी आ अपन पà¥à¤°à¤¾à¤¨ कूटशबà¥à¤¦à¤• पà¥à¤°à¤¯à¥‹à¤— जारी राखि सकै छी।',
+'passwordreset-emailelement' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾: $1
+असà¥à¤¥à¤¾à¤¯à¥€ कूटशबà¥à¤¦: $2',
+'passwordreset-emailsent' => 'à¤à¤•à¤Ÿà¤¾ ई-पतà¥à¤° मोन पाड़बा लेल पठाओल गेल अछि।',
+
# Edit page toolbar
'bold_sample' => 'गà¤à¤¹à¥€à¤° लेखन',
'bold_tip' => 'गà¤à¤¹à¥€à¤° लेखन',
@@ -537,8 +563,6 @@ $2',
'extlink_tip' => 'बहरी लिंक (यादि राखू http:// उपसरà¥à¤—)',
'headline_sample' => 'मà¥à¤–à¥à¤¯à¤ªà¤‚कà¥à¤¤à¤¿ लेखन',
'headline_tip' => 'सà¥à¤¤à¤° 2 मà¥à¤–à¥à¤¯à¤ªà¤‚कà¥à¤¤à¤¿',
-'math_sample' => 'सूतà¥à¤° समाहित करू',
-'math_tip' => 'गणितीय सूतà¥à¤° (LaTeX)',
'nowiki_sample' => 'फॉरà¥à¤®à¥‡à¤Ÿ विहीन लेख à¤à¤¤à¤¯',
'nowiki_tip' => 'विकी फॉरमेटिंगकेठछोड़ू',
'image_tip' => 'समाहित चितà¥à¤°',
@@ -622,7 +646,7 @@ $2',
आकि [{{fullurl:{{FULLPAGENAME}}|action=edit}} ठपनà¥à¤¨à¤¾à¤•à¥‡à¤ समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ करू]</span>.',
'noarticletext-nopermission' => 'अखन ठपनà¥à¤¨à¤¾à¤ªà¤° कोनो पाठ नै अछि।
अहाठ[[Special:Search/{{PAGENAME}}|ठपनà¥à¤¨à¤¾ शीरà¥à¤·à¤• लेल ताकू]]',
-'userpage-userdoesnotexist' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ खाता "$1" पंजीकृत नै अछि।
+'userpage-userdoesnotexist' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ खाता "<nowiki>$1</nowiki>" पंजीकृत नै अछि।
निशà¥à¤šà¤¯ करू जे की अहाठई पनà¥à¤¨à¤¾ बनेबाक/ समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ करबाक इचà¥à¤›à¥à¤• छी।',
'userpage-userdoesnotexist-view' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ खाता "$1" पंजीकृत नै अछि।',
'blocked-notice-logextract' => 'ई पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ अखन पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ अछि।
@@ -659,6 +683,7 @@ $2',
'token_suffix_mismatch' => "'''अहाà¤à¤• समà¥à¤ªà¤¾à¤¦à¤¨ असà¥à¤µà¥€à¤•à¤¾à¤° कऽ देल गेल अछि कारण अहाà¤à¤• गà¥à¤°à¤¾à¤¹à¤• पà¥à¤°à¥‡à¤·à¥à¤¯à¤®à¤¾à¤¨ अंक विधानक विराम चेनà¥à¤¹ सभकेठनषà¥à¤Ÿ कऽ देलनà¥à¤¹à¤¿à¥¤'''
ई समà¥à¤ªà¤¾à¤¦à¤¨ पनà¥à¤¨à¤¾à¤• पाठकेठदूषित होà¤à¤¬à¤¾à¤¸à¤ बचेबा लेल अमानà¥à¤¯ कऽ देल गेल।
ई कखनो काल होइठजखन अहाठजाल आधारित अनाम दोसरा लेल चल सेवा पà¥à¤°à¤¯à¥à¤•à¥à¤¤ करै छी।",
+'edit_form_incomplete' => "'''समà¥à¤ªà¤¾à¤¦à¤¨ आवेदनक किछॠभाग वितरक धरि नै पहà¥à¤à¤šà¤²; à¤à¤• बेर फेर देखू जे अहाà¤à¤• समà¥à¤ªà¤¾à¤¦à¤¨ दà¥à¤°à¥à¤¸à¥à¤¤ अछि आ फेरसठपà¥à¤°à¤¯à¤¾à¤¸ करू।'''",
'editing' => 'समà¥à¤ªà¤¾à¤¦à¤¨ होइठ$1',
'editingsection' => 'समà¥à¤ªà¤¾à¤¦à¤¨ कऽ रहल छी $1 (खणà¥à¤¡)',
'editingcomment' => 'समà¥à¤ªà¤¾à¤¦à¤¨ कऽ रहल छी $1 (नव खणà¥à¤¡)',
@@ -890,7 +915,9 @@ $3 दà¥à¤µà¤¾à¤°à¤¾ देल कारण अछि ''$2''",
'revdelete-offender' => 'संशोधन केनिहार:',
# Suppression log
-'suppressionlog' => 'दबाà¤à¤²à¤¬à¤²à¤¾ वृतà¥à¤¤à¤²à¥‡à¤–',
+'suppressionlog' => 'दबाà¤à¤²à¤¬à¤²à¤¾ वृतà¥à¤¤à¤²à¥‡à¤–',
+'suppressionlogtext' => 'नीचाठमेटाà¤à¤² आ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤• उलà¥à¤²à¥‡à¤– अछि जे संचालकसठनà¥à¤•à¤¾à¤à¤² सामिगà¥à¤°à¥€ अछि।
+अखन सà¥à¤¥à¤¿à¤¤ पà¥à¤°à¤­à¤¾à¤µà¥€ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ आ अवरोध लेल देखू [[Special:BlockList|IP block list]] ।',
# History merging
'mergehistory' => 'मिजà¥à¤à¤° भेल पनà¥à¤¨à¤¾ सभक इतिहास',
@@ -1002,12 +1029,13 @@ $3 दà¥à¤µà¤¾à¤°à¤¾ देल कारण अछि ''$2''",
मोन राखू जे तकर विवरणी {{अनà¥à¤¤à¤°à¥à¤œà¤¾à¤²}} सामिगà¥à¤°à¥€ समयातीत भऽ सकैà¤à¥¤',
# Quickbar
-'qbsettings' => 'तà¥à¤µà¤°à¤¿à¤¤ दृशà¥à¤¯',
-'qbsettings-none' => 'कोनो नै',
-'qbsettings-fixedleft' => 'वाम कात सटल',
-'qbsettings-fixedright' => 'दहिन दिस सटल',
-'qbsettings-floatingleft' => 'वाम कात घà¥à¤®à¥ˆà¤¤',
-'qbsettings-floatingright' => 'दहिन कात घà¥à¤®à¥ˆà¤¤',
+'qbsettings' => 'तà¥à¤µà¤°à¤¿à¤¤ दृशà¥à¤¯',
+'qbsettings-none' => 'कोनो नै',
+'qbsettings-fixedleft' => 'वाम कात सटल',
+'qbsettings-fixedright' => 'दहिन दिस सटल',
+'qbsettings-floatingleft' => 'वाम कात घà¥à¤®à¥ˆà¤¤',
+'qbsettings-floatingright' => 'दहिन कात घà¥à¤®à¥ˆà¤¤',
+'qbsettings-directionality' => 'कीलित, अहाà¤à¤• भाषाक लिपि दिशा-निरà¥à¤¦à¥‡à¤¶à¤ªà¤° आधारित',
# Preferences page
'preferences' => 'विकलà¥à¤ª',
@@ -1018,9 +1046,10 @@ $3 दà¥à¤µà¤¾à¤°à¤¾ देल कारण अछि ''$2''",
'changepassword' => 'कूटशबà¥à¤¦ बदलू',
'prefs-skin' => 'रूप',
'skin-preview' => 'पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨',
-'prefs-math' => 'गणित',
'datedefault' => 'कोनो मोनपसंद नै',
+'prefs-beta' => 'दà¥à¤µà¤¿à¤¤à¥€à¤¯-परीकà¥à¤·à¤¾ गà¥à¤£ सभ',
'prefs-datetime' => 'दिन आ तिथि',
+'prefs-labs' => 'पà¥à¤°à¤¾à¤¯à¥‹à¤—िक गà¥à¤£ सभ',
'prefs-personal' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ परिचय',
'prefs-rc' => 'हालक परिवरà¥à¤¤à¤¨',
'prefs-watchlist' => 'साकांकà¥à¤·-सूची',
@@ -1042,8 +1071,6 @@ $3 दà¥à¤µà¤¾à¤°à¤¾ देल कारण अछि ''$2''",
'columns' => 'सà¥à¤¤à¤®à¥à¤­ सभ',
'searchresultshead' => 'ताकू',
'resultsperpage' => 'à¤à¤• पनà¥à¤¨à¤¾ à¤à¤¤à¥‡à¤• बेर देखल गेल:',
-'contextlines' => 'पà¥à¤°à¤¤à¤¿ हिट कतार',
-'contextchars' => 'पà¥à¤°à¤¤à¤¿ कतार संदरà¥à¤­',
'stub-threshold' => 'सीमा <a href="#" class="stub">काटल लागि</a> सà¤à¤šà¤¿à¤¯à¤¾à¤à¤² (अषà¥à¤Ÿà¤•):',
'stub-threshold-disabled' => 'अशकà¥à¤¤ कà¤à¤²',
'recentchangesdays' => 'आइ-कालà¥à¤¹à¤¿à¤• परिवरà¥à¤¤à¤¨à¤®à¥‡ कतेक दिन देखाà¤à¤² गेल:',
@@ -1056,6 +1083,7 @@ $3 दà¥à¤µà¤¾à¤°à¤¾ देल कारण अछि ''$2''",
'savedprefs' => 'अहाà¤à¤• पसिनà¥à¤¨ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ कà¤à¤² गेल',
'timezonelegend' => 'समय कà¥à¤·à¥‡à¤¤à¥à¤°',
'localtime' => 'सà¥à¤¥à¤¾à¤¨à¥€à¤¯ समà¤:',
+'timezoneuseserverdefault' => 'पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ वितरक पà¥à¤°à¤¯à¥à¤•à¥à¤¤ करू ($1)',
'timezoneuseoffset' => 'आन (संतà¥à¤²à¤¨ केनिहारक निरà¥à¤¦à¥‡à¤¶ करू)',
'timezoneoffset' => 'संतà¥à¤²à¤¨ घटक¹:',
'servertime' => 'वितरक समà¤:',
@@ -1105,6 +1133,9 @@ $3 दà¥à¤µà¤¾à¤°à¤¾ देल कारण अछि ''$2''",
'email' => 'ई-पतà¥à¤°',
'prefs-help-realname' => 'मूल नाम वैकलà¥à¤ªà¤¿à¤• अछि।
जठअहाठà¤à¤•à¤°à¤¾ देबा लेल पà¥à¤°à¤¯à¥‹à¤— करै छी, ई अहाà¤à¤•à¥‡à¤ काजक शà¥à¤°à¥‡à¤¯ देबा लेल à¤à¤•à¤° पà¥à¤°à¤¯à¥‹à¤— कà¤à¤² जाà¤à¤¤à¥¤',
+'prefs-help-email' => 'ई-पतà¥à¤° संकेत वैकलà¥à¤ªà¤¿à¤• अछि, मà¥à¤¦à¤¾ ई कूटशबà¥à¤¦ पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤£ लेल आवशà¥à¤¯à¤• अछि, जठअहाठकूटशबà¥à¤¦ बिसरब तखन।',
+'prefs-help-email-others' => 'अहाठई विकलà¥à¤ª चà¥à¤¨à¤¿ सकै छी जे अहाà¤à¤•à¥‡à¤ दोसरा दà¥à¤µà¤¾à¤°à¤¾ ई-पतà¥à¤°à¤¸à¤, अहाà¤à¤• पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ वा वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾à¤ªà¤° देल लिंकक माधà¥à¤¯à¤®à¤¸à¤, समà¥à¤ªà¤°à¥à¤• कà¤à¤² जा सकà¤à¥¤
+अहाà¤à¤• ई-पतà¥à¤° संकेतक खà¥à¤²à¤¾à¤¸à¤¾ नै हà¤à¤¤ जखन कियो आन अहाà¤à¤¸à¤ समà¥à¤ªà¤°à¥à¤• करत।',
'prefs-help-email-required' => 'ई-पतà¥à¤° संकेत जरूरी अछि।',
'prefs-info' => 'नà¥à¤¯à¥‚नतम जानकारी',
'prefs-i18n' => 'अंतरà¥à¤°à¤¾à¤·à¥à¤Ÿà¥à¤°à¤¿à¤¯à¤•à¤°à¤£',
@@ -1229,15 +1260,15 @@ $3 दà¥à¤µà¤¾à¤°à¤¾ देल कारण अछि ''$2''",
'right-userrights' => 'सभटा पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ अधिकारकेठसमà¥à¤ªà¤¾à¤¦à¤¿à¤¤ करू',
'right-userrights-interwiki' => 'दोसर विकीपर पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤• पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ अधिकारक समà¥à¤ªà¤¾à¤¦à¤¨ करू',
'right-siteadmin' => 'दतà¥à¤¤à¤¨à¤¿à¤§à¤¿à¤•à¥‡à¤ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ करू आ फेर पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ हटाउ',
-'right-reset-passwords' => 'दोसर पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤• कूटशबà¥à¤¦ फेरसठबनाउ',
'right-override-export-depth' => '५ परत धरि जा पनà¥à¤¨à¤¾ सभ निरà¥à¤¯à¤¾à¤¤, जइमे लागिबला पनà¥à¤¨à¤¾ सभ शामिल अछि, करू।',
'right-sendemail' => 'ई-पतà¥à¤° दोसर पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ लोकनिकेठपठाउ',
# User rights log
-'rightslog' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ अधिकार वृतà¥à¤¤à¤²à¥‡à¤–',
-'rightslogtext' => 'ई पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ अधिकार परिवरà¥à¤¤à¤¨ सभक वृतलेख छी।',
-'rightslogentry' => 'वरà¥à¤—क सदसà¥à¤¯à¤¤à¤¾ बदलल गेल $1 लेल $2 सठ$3',
-'rightsnone' => '(कोनो नै)',
+'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' => 'ई पनà¥à¤¨à¤¾ पढ़ू',
@@ -1357,10 +1388,13 @@ $3 दà¥à¤µà¤¾à¤°à¤¾ देल कारण अछि ''$2''",
'illegalfilename' => '"$1" संचिकानाममे वरà¥à¤£ अछि जे पनà¥à¤¨à¤¾ शीरà¥à¤·à¤• लेल मानà¥à¤¯ नै अछि।
कृपा कऽ संचिकाक नाम बदलू आ फेरसठउपारोपित करू।',
'badfilename' => 'संचिकानाम बदलि कऽ "$1" कà¤à¤² गेल।',
+'filetype-mime-mismatch' => '".$1" संचिका विसà¥à¤¤à¤¾à¤° माइम पà¥à¤°à¤•à¤¾à¤°à¤• संचिका ($2) सठमेल नै खाइà¤à¥¤',
'filetype-badmime' => 'माइम पà¥à¤°à¤•à¤¾à¤° "$1" सन संचिका उपारोपण लेल मानà¥à¤¯ नै अछि।',
'filetype-bad-ie-mime' => 'à¤à¤•à¤°à¤¾ उपारोपित नै कऽ सकै छी कारण इनà¥à¤Ÿà¤°à¤¨à¥‡à¤Ÿ à¤à¤•à¥à¤¸à¤ªà¥à¤²à¥‹à¤°à¤° à¤à¤•à¤°à¤¾ "$1" बà¥à¤à¤¤, जे अमानà¥à¤¯ आ खतरासठसमà¥à¤­à¤¾à¤µà¤¿à¤¤ संचिका पà¥à¤°à¤•à¤¾à¤° अछि।',
'filetype-unwanted-type' => "'''\".\$1\"''' à¤à¤• पà¥à¤°à¤•à¤¾à¤°à¤• बिना मतलबक संचिका पà¥à¤°à¤•à¤¾à¤° अछि।
à¤à¤•à¤° बदला {{PLURAL:\$3|संचिका पà¥à¤°à¤•à¤¾à¤° अछि|संचिका पà¥à¤°à¤•à¤¾à¤° सभ अछि}} \$2 ।",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|मानà¥à¤¯ संचिका पà¥à¤°à¤•à¤¾à¤° नै अछि|मानà¥à¤¯ संचिका पà¥à¤°à¤•à¤¾à¤° सभ नै अछि}}।
+मानà¥à¤¯ अछि {{PLURAL:$3|संचिका पà¥à¤°à¤•à¤¾à¤° अछि|संचिका पà¥à¤°à¤•à¤¾à¤° सभ अछि}} $2।',
'filetype-missing' => 'ठफाइलमे कोनो विसà¥à¤¤à¤¾à¤° नै अछि (जेना ".jpg")।',
'empty-file' => 'अहाà¤à¤• दà¥à¤µà¤¾à¤°à¤¾ देल संचिका रिकà¥à¤¤ अछि।',
'file-too-large' => 'अहाà¤à¤• दà¥à¤µà¤¾à¤°à¤¾ देल संचिका बडà¥à¤¡ पैघ अछि।',
@@ -1379,6 +1413,7 @@ $3 दà¥à¤µà¤¾à¤°à¤¾ देल कारण अछि ''$2''",
'emptyfile' => 'जे संचिका अहाठउपारोपित केलौं से लगै छल जे रिकà¥à¤¤ रहà¤à¥¤
ई संचिकानाममे गलत तंकणक कारण समà¥à¤­à¤µà¤¤à¤ƒ भेल हà¤à¤¤à¥¤
कृपा कऽ जाà¤à¤šà¥‚ जे की अहाठठसंचिकाकेठठीके उपारोपित करठचाहै छी।',
+'windows-nonascii-filename' => 'ई विकी संचिकानाममे विशेष अकà¥à¤·à¤°à¤• पà¥à¤°à¤¯à¥‹à¤— निषेध करैत अछि।',
'fileexists' => "ठनामà¥à¤¨à¤¾ à¤à¤•à¤Ÿà¤¾ संचिका पहिनहियेसठअछि, कृपा कऽ जाà¤à¤šà¥‚ '''<tt>[[:$1]]</tt>''' जठअहाठदà¥à¤µà¤¿à¤§à¤¾à¤®à¥‡ छी जे अहाठà¤à¤•à¤°à¤¾ बदलऽ चाहै छी वा नै।
[[$1|thumb]]",
'filepageexists' => "ठसंचिकाक वरà¥à¤£à¤¨ पनà¥à¤¨à¤¾ पहिनहिये '''<tt>[[:$1]]</tt>''' पर बना देल गेल, मà¥à¤¦à¤¾ ठनामसठकोनो संचिका अखन नै अछि।
@@ -1419,6 +1454,8 @@ $3 दà¥à¤µà¤¾à¤°à¤¾ देल कारण अछि ''$2''",
'uploadscripted' => 'ई संचिका परà¥à¤¯à¤‚कभाषा वा कूटलिपि यà¥à¤•à¥à¤¤ अछि जे गवेषक दà¥à¤µà¤¾à¤°à¤¾ गलत रूपमे वà¥à¤¯à¤¾à¤–à¥à¤¯à¤¾à¤¯à¤¿à¤¤ कà¤à¤² जा सकैà¤à¥¤',
'uploadvirus' => 'ई संचिका विषविधियà¥à¤•à¥à¤¤ अछि।
वरà¥à¤£à¤¨:$1',
+'uploadjava' => 'ई संचिका à¤à¤•à¤Ÿà¤¾ संकà¥à¤šà¤¿à¤¤ संचिका अछि जइमे अछि à¤à¤•à¤Ÿà¤¾ जावा .class संचिका।
+जावा संचिका सभक उपारोपण पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ अछि, कारण ओ सभ सà¥à¤°à¤•à¥à¤·à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ सभ छी जकरासठई तड़पल जा सकैà¤à¥¤',
'upload-source' => 'मूल संचिका',
'sourcefilename' => 'मूल संचिकानाम:',
'sourceurl' => 'मूल सारà¥à¤µà¤¤à¥à¤°à¤¿à¤• विभव संकेत',
@@ -1429,10 +1466,6 @@ $3 दà¥à¤µà¤¾à¤°à¤¾ देल कारण अछि ''$2''",
'watchthisupload' => 'ठपृषà¥à¤ à¤ªà¤° नजरि राखू',
'filewasdeleted' => 'ठनामक à¤à¤•à¤Ÿà¤¾ संचिका पहिने उपारोपित कà¤à¤² गेल आ फेर मेटा देल गेल।
अहाठफेरसठà¤à¤•à¤°à¤¾ उपारोपित करबासठपहिने ई $1 जाà¤à¤šà¥‚।',
-'upload-wasdeleted' => "'''चेतौनी''': अहाठफेरसठओ पनà¥à¤¨à¤¾ उपारोपित कऽ रहल छी जे पहिने मेटा देल गेल छै।'''
-
-अहाठविचारू जे की ई उपारोपित केनाइ उचित अछि।
-ठपनà¥à¤¨à¤¾à¤• मेटाà¤à¤² बला वृतà¥à¤¤à¤²à¥‡à¤– à¤à¤¤à¤ सà¥à¤µà¤¿à¤§à¤¾ लेल देल जा रहल अछि:",
'filename-bad-prefix' => "जे संचिका अहाठउपारोपित कऽ रहल छी से '''\"\$1\"''' सठशà¥à¤°à¥‚ होइà¤, ई बिन विवरणक नाम अछि जे मूल रूपेठअंकीय कैमरा दà¥à¤µà¤¾à¤°à¤¾ सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤ रूपेठदेल जाइत अछि।
कृपा कऽ ठसंचिका लेल à¤à¤•à¤Ÿà¤¾ बेसी वरà¥à¤£à¤¨à¤¾à¤¤à¥à¤®à¤• नाम चà¥à¤¨à¥‚।",
'upload-success-subj' => 'सफलतापूरà¥à¤µà¤• उपारोपित',
@@ -1456,6 +1489,22 @@ $1',
'upload-unknown-size' => 'अजà¥à¤žà¤¾à¤¤ आकार',
'upload-http-error' => 'परिसंविद भà¥à¤°à¤® आà¤à¤²:$1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'संकà¥à¤šà¤¿à¤¤ संचिका जाà¤à¤šà¤®à¥‡ संचिका खोललापर à¤à¤•à¤Ÿà¤¾ भà¥à¤°à¤® आà¤à¤²à¥¤',
+'zip-wrong-format' => 'खास संचिका संकà¥à¤šà¤¿à¤¤ संचिका नै छी।',
+'zip-bad' => 'ई संचिका à¤à¤•à¤Ÿà¤¾ टूटल आ ओहिनो बिन पढ़बा योगà¥à¤¯ संकà¥à¤šà¤¿à¤¤ फाइल छी।',
+'zip-unsupported' => 'ई संचिका à¤à¤•à¤Ÿà¤¾ संकà¥à¤šà¤¿à¤¤ संचिका छी जे संकà¥à¤šà¤¨ पà¥à¤°à¤£à¤¾à¤²à¥€à¤• पà¥à¤°à¤¯à¥‹à¤— करैठजे मीडियाविकी दà¥à¤µà¤¾à¤°à¤¾ समरà¥à¤¥à¤¿à¤¤ नै अछि।
+ई सà¥à¤°à¤•à¥à¤·à¤¾ लेल जाà¤à¤šà¤² नै जा सकैà¤à¥¤',
+
+# Special:UploadStash
+'uploadstash' => 'गà¥à¤ªà¥à¤¤ बखारी उपारोपित करू',
+'uploadstash-summary' => 'ई पनà¥à¤¨à¤¾ उपारोपित संचिका सभक पà¥à¤°à¤µà¥‡à¤¶ दà¥à¤µà¤¾à¤° छी (वा उपारोपणक पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾à¤®à¥‡) मà¥à¤¦à¤¾ अखन धरि विकीमे पà¥à¤°à¤•à¤¾à¤¶à¤¿à¤¤ नै भेल अछि। ई सभ संचिका पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤• अतिरिकà¥à¤¤ ककरो दà¥à¤µà¤¾à¤°à¤¾ देखल नै जा सकैà¤à¥¤',
+'uploadstash-clear' => 'नà¥à¤•à¤¾à¤à¤² बखारी सभक संचिकाकेठसाफ खतम करू',
+'uploadstash-nofiles' => 'अहाठलग कोनो नà¥à¤•à¤¾à¤à¤² संचिका सभ नै अछि।',
+'uploadstash-badtoken' => 'ओइ कारà¥à¤¯à¤• समà¥à¤ªà¤¾à¤¦à¤¨ असफल रहल, पà¥à¤°à¤¾à¤¯à¤ƒ अहाà¤à¤• समà¥à¤ªà¤¾à¤¦à¤¨ योगà¥à¤¯à¤¤à¤¾ खतम भऽ गेल अछि। फेरसठपà¥à¤°à¤¯à¤¾à¤¸ करू।',
+'uploadstash-errclear' => 'संचिका सभकेठखतम करब असफल रहल।',
+'uploadstash-refresh' => 'संचिका सभक सूचीकेठताजा करू।',
+
# img_auth script messages
'img-auth-accessdenied' => 'पà¥à¤°à¤µà¥‡à¤¶ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤',
'img-auth-nopathinfo' => 'बाटक जानकारी नै अछि।
@@ -1539,6 +1588,7 @@ $1',
à¤à¤•à¤Ÿà¤¾ [[Special:WhatLinksHere/$2|पूरà¥à¤£ सूची]] उपलबà¥à¤§ अछि।',
'nolinkstoimage' => 'à¤à¤•à¥‹à¤Ÿà¤¾ पनà¥à¤¨à¤¾ नै अछि जकर लागि ठसंचिकासठहà¥à¤…à¤à¥¤',
'morelinkstoimage' => 'देखू [[Special:WhatLinksHere/$1|आर लागि]] ठसंचिकाक।',
+'linkstoimage-redirect' => '$1 (संचिका घà¥à¤®à¥Œà¤†) $2',
'duplicatesoffile' => 'ठसंचिकाक {{PLURAL:$1|file is a duplicate|$1 संचिका सभ दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤• अछि}} अछि ([[Special:FileDuplicateSearch/$2|आर वरà¥à¤£à¤¨]]):',
'sharedupload' => 'ई फाइल $1 सठअछि आ दोसर पà¥à¤°à¤•à¤²à¥à¤ª लेल पà¥à¤°à¤¯à¥‹à¤— कà¤à¤² जा सकैà¤à¥¤',
'sharedupload-desc-there' => 'ई संचिका $1 सठअछि आ दोसर परियोजना लेल पà¥à¤°à¤¯à¥‹à¤— कà¤à¤² जा सकैà¤à¥¤
@@ -1634,13 +1684,14 @@ $1',
ओ सभ à¤à¤•à¤° बदला उचित वारà¥à¤¤à¤¾à¤ªà¤° लागि करथि।<br />
[[MediaWiki:Disambiguationspage]] सठलागिमे जठनमूनाक पà¥à¤°à¤¯à¥‹à¤— करैत अछि तखने ओ '''सà¥à¤ªà¤·à¥à¤Ÿ कà¤à¤²''' पनà¥à¤¨à¤¾ कहाà¤à¤¤à¥¤",
-'doubleredirects' => 'दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤• लागिबला बदलेन',
-'doubleredirectstext' => 'ई पनà¥à¤¨à¤¾ ओइ पनà¥à¤¨à¤¾ सभक संकलन छी जे बदलेन करैठदोसर बदलेनबला पनà¥à¤¨à¤¾à¤¸à¤à¥¤
+'doubleredirects' => 'दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤• लागिबला बदलेन',
+'doubleredirectstext' => 'ई पनà¥à¤¨à¤¾ ओइ पनà¥à¤¨à¤¾ सभक संकलन छी जे बदलेन करैठदोसर बदलेनबला पनà¥à¤¨à¤¾à¤¸à¤à¥¤
पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• पाà¤à¤¤à¥€ पहिल आ दोसर बदलेनक लागि रखने अछि आ संगे दोसर बदलेनक लकà¥à¤·à¥à¤¯ सेहो, जे वासà¥à¤¤à¤µà¤®à¥‡ "वासà¥à¤¤à¤µ" लकà¥à¤·à¥à¤¯ पनà¥à¤¨à¤¾ अछि, जकरापर पहिल बदलेनकेठजेबाक चाही।
<del>Crossed out</del> पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤• हल भेटल अछि।',
-'double-redirect-fixed-move' => '[[$1]] घसकाà¤à¤² गेल।
+'double-redirect-fixed-move' => '[[$1]] घसकाà¤à¤² गेल।
ई आब [[$2]] दिस जा रहल अछि।',
-'double-redirect-fixer' => 'बदलेन सà¥à¤¥à¤¾à¤¯à¤¿à¤¤à¥à¤µ',
+'double-redirect-fixed-maintenance' => 'दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤• बदलेन [[$1]] सठ[[$2]] कà¤à¤² गेल।',
+'double-redirect-fixer' => 'बदलेन सà¥à¤¥à¤¾à¤¯à¤¿à¤¤à¥à¤µ',
'brokenredirects' => 'टूटल बदलेन सभ',
'brokenredirectstext' => 'ई बदलेन सभ नै अवसà¥à¤¥à¤¿à¤¤ पनà¥à¤¨à¤¾ सभक दिस जाइत अछि।',
@@ -1717,6 +1768,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|नव 1|नव $1}}',
'pager-older-n' => '{{PLURAL:$1|साबिक 1|साबिक $1}}',
'suppress' => 'नजरिपर नै आà¤à¤²',
+'querypage-disabled' => 'ई विशिषà¥à¤Ÿ पनà¥à¤¨à¤¾ कारà¥à¤¯ दकà¥à¤·à¤¤à¤¾ लेल अशकà¥à¤¤ कà¤à¤² गेल अछि।',
# Book sources
'booksources' => 'किताबक सनà¥à¤¦à¤°à¥à¤­ सभ',
@@ -1833,6 +1885,10 @@ $1',
'noemailtext' => 'ई परà¥à¤¯à¥‹à¤•à¥à¤¤à¤¾ अपन कोनो मानà¥à¤¯ ई-पतà¥à¤° संकेत नै देने अछि।',
'nowikiemailtitle' => 'कोनो ई-पतà¥à¤°à¤• अनà¥à¤®à¤¤à¤¿ नै अछि',
'nowikiemailtext' => 'ई पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ दोसर पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¸à¤ ई-पतà¥à¤° पà¥à¤°à¤¾à¤ªà¥à¤¤ नै करबाक विकलà¥à¤ª चà¥à¤¨à¤¨à¥‡ अछि।',
+'emailnotarget' => 'असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¹à¥€à¤¨ वा अमानà¥à¤¯ पà¥à¤°à¤¾à¤ªà¥à¤¤à¤•à¤°à¥à¤¤à¤¾à¤• पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤®',
+'emailtarget' => 'पà¥à¤°à¤¾à¤ªà¥à¤¤à¤•à¤°à¥à¤¤à¤¾à¤• पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤® दरà¥à¤œ करू',
+'emailusername' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤®:',
+'emailusernamesubmit' => 'दिअ',
'email-legend' => 'ई-पतà¥à¤° दोसर {{जालसà¥à¤¥à¤²}} पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤ पठाउ',
'emailfrom' => 'à¤à¤¤à¤½à¤¸à¤:',
'emailto' => 'à¤à¤²à¥‡à¤²:',
@@ -1857,10 +1913,10 @@ $1',
'watchlistanontext' => 'कृपा कऽ $1 अहाà¤à¤• साकांकà¥à¤·-सूचीकेठदेखबा वा समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ करबा लेल।',
'watchnologin' => 'समà¥à¤ªà¥à¤°à¤µà¥‡à¤¶à¤¿à¤¤ नै',
'watchnologintext' => 'अहाठ[[Special:UserLogin|समà¥à¤ªà¥à¤°à¤µà¥‡à¤¶à¤¿à¤¤]] साकांकà¥à¤·-सूची संशोधित करबा लेल।',
-'addedwatch' => 'साकांकà¥à¤· सूचीमे जोड़ू',
+'addwatch' => 'साकांकà¥à¤· सूचीमे जोड़ू',
'addedwatchtext' => "पनà¥à¤¨à¤¾ \"[[:\$1]]\" अहाà¤à¤• [[Special:Watchlist|साकांकà¥à¤· सूची]] मे जोड़ल गेल।
ठपनà¥à¤¨à¤¾à¤®à¥‡ भविषà¥à¤¯à¤• परिवरà¥à¤¤à¤¨ आ à¤à¤•à¤° समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ चौबटिया पनà¥à¤¨à¤¾ à¤à¤¤à¤ सूचीबदà¥à¤§ रहत, आ पनà¥à¤¨à¤¾ [[Special:RecentChanges|हालक परिवरà¥à¤¤à¤¨]]मे '''गाढ़''' देखाà¤à¤¤ , जइसठआसानीसठà¤à¤•à¤°à¤¾ चिनà¥à¤¹à¤² जा सकत।",
-'removedwatch' => 'साकांकà¥à¤· सूचीसठहटाà¤à¤² गेल',
+'removewatch' => 'साकांकà¥à¤· सूचीसठहटाउ',
'removedwatchtext' => 'पनà¥à¤¨à¤¾ "[[:$1]]" हटाà¤à¤² गेल [[Special:Watchlist|अहाà¤à¤• साकांकà¥à¤·à¤¸à¥‚ची]] सà¤à¥¤',
'watch' => 'ताकिमे',
'watchthispage' => 'ठपृषà¥à¤ à¤ªà¤° नजरि राखू',
@@ -1881,8 +1937,9 @@ $1',
'watchlist-options' => 'साकांकà¥à¤·à¤¸à¥‚चीक विकलà¥à¤ª सभ',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'ताकिमे...',
-'unwatching' => 'छोड़ल ...',
+'watching' => 'ताकिमे...',
+'unwatching' => 'छोड़ल ...',
+'watcherrortext' => 'अहाà¤à¤• साकांकà¥à¤·-सूची विकलà¥à¤ª "$1" लेल बदलबा काल à¤à¤•à¤Ÿà¤¾ भà¥à¤°à¤® आà¤à¤²à¥¤',
'enotif_mailer' => '{{जालसà¥à¤¥à¤²}} सूचना पतà¥à¤°à¤•',
'enotif_reset' => 'सभ पनà¥à¤¨à¤¾à¤•à¥‡à¤ देखल चिनà¥à¤¹à¤¿à¤¤ करू',
@@ -1914,15 +1971,15 @@ $NEWPAGE
--
अपन ई-पतà¥à¤° सूचना पà¥à¤°à¤•à¤¾à¤° बदलबाक लेल देखू
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
अपन साकांकà¥à¤·-सूची सूचना पà¥à¤°à¤•à¤¾à¤° बदलबाक लेल देखू
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
अपन साकांकà¥à¤·-सूचीसठकोनो पनà¥à¤¨à¤¾ मेटेबाक लेल देखू
$UNWATCHURL
अपन अनà¥à¤­à¤µ बतेबा वा कोनो सहायता लेल:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'पनà¥à¤¨à¤¾ मेटाउ',
@@ -1938,7 +1995,7 @@ $UNWATCHURL
अहाठई सà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ करू जे अहाठई करऽ चाहै छी, अहाà¤à¤•à¥‡à¤ à¤à¤•à¤° परिणामक अवगति अछि आ अहाठई ठ[[{{MediaWiki:Policy-url}}|नीति]] क अनà¥à¤¸à¤¾à¤° कऽ रहल छी।',
'actioncomplete' => 'कà¥à¤°à¤¿à¤¯à¤¾ पूरà¥à¤£',
'actionfailed' => 'कारà¥à¤¯ नै भेल',
-'deletedtext' => '"<nowiki>$1</nowiki>" केठमेटा देल गेल अछि।
+'deletedtext' => '"$1" केठमेटा देल गेल अछि।
देखू $2 हालक मेटाà¤à¤² सामिगà¥à¤°à¥€à¤• अभिलेख लेल।',
'deletedarticle' => 'मेटाà¤à¤² "[[$1]]"',
'suppressedarticle' => 'दबाà¤à¤² "[[$1]]"',
@@ -1996,7 +2053,7 @@ $2 केर संपादित आखिरी अवतरण क पà¥à¤¨
'protect_expiry_invalid' => 'खतम हेबाक समठसही नै अछि।',
'protect_expiry_old' => 'खतम हेबाक समठभूतमे अछि।',
'protect-unchain-permissions' => 'आर सà¥à¤°à¤•à¥à¤·à¤¾ विकलà¥à¤ªà¤•à¥‡à¤ अपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ करू',
-'protect-text' => "अहाठपनà¥à¤¨à¤¾à¤• रकà¥à¤·à¤¾ सà¥à¤¤à¤°à¤•à¥‡à¤ à¤à¤¤à¤ देखि आ परिवरà¥à¤¤à¤¿à¤¤ कऽ सकै छी '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "अहाठपनà¥à¤¨à¤¾à¤• रकà¥à¤·à¤¾ सà¥à¤¤à¤°à¤•à¥‡à¤ à¤à¤¤à¤ देखि आ परिवरà¥à¤¤à¤¿à¤¤ कऽ सकै छी '''$1'''.",
'protect-locked-blocked' => "अहाठपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤®à¥‡ रहि कऽ सà¥à¤°à¤•à¥à¤·à¤¾ सà¥à¤¤à¤° नै बदलि सकै छी।
à¤à¤¤à¤ पनà¥à¤¨à¤¾ '''$1''' लेल वरà¥à¤¤à¤®à¤¾à¤¨ नियत कà¤à¤² विकलà¥à¤ª अछि:",
'protect-locked-dblock' => "सकà¥à¤°à¤¿à¤¯ दतà¥à¤¤à¤¨à¤¿à¤§à¤¿ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤• कारण सà¥à¤°à¤•à¥à¤·à¤¾ सà¥à¤¤à¤° नै बदलल जा सकैà¤à¥¤
@@ -2051,6 +2108,8 @@ $2 केर संपादित आखिरी अवतरण क पà¥à¤¨
'undeletepagetext' => 'ई {{PLURAL:$1|page has been deleted but is|$1 pages have been deleted but are}} अखनो जोगाà¤à¤² पेटारमे अछि आ फेरसठआनल नै जा सकैà¤à¥¤
ई जोगाà¤à¤² पेटार बीच-बीचमे साफ करबाक चाही।',
'undelete-fieldset-title' => 'संशोधन सभकेठघà¥à¤°à¤¾à¤‰',
+'undeleteextrahelp' => "'''''{{int:undeletebtn}}''''' केठकà¥à¤²à¤¿à¤• करू पनà¥à¤¨à¤¾à¤• पूरà¥à¤£ इतिहास अनबा लेल, सभटा विकलà¥à¤ªà¤¬à¤•à¥à¤¸à¤¾à¤¸à¤ चेनà¥à¤¹ हटाउ।
+'''''{{int:undeletebtn}}''''' कà¥à¤²à¤¿à¤• करू छाà¤à¤Ÿà¤² मौलिक आकारमे अनबा लेल, संशोधन सभकेठअनबा लेल समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ बकà¥à¤¸à¤¾ सभमे चेनà¥à¤¹ लगाउ।",
'undeleterevisions' => '$1{{PLURAL:$1|संशोधन|संशोधन सभ}} पेटारमे जोगाà¤à¤²',
'undeletehistory' => 'जठअहाठपनà¥à¤¨à¤¾à¤•à¥‡à¤ फेरसठअनै छी, सभटा संशोधन पà¥à¤°à¤¾à¤¨ सà¥à¤¤à¤°à¤ªà¤° संशोधित भऽ जाà¤à¤¤à¥¤
मेटेलाक बाद जठà¤à¤•à¤Ÿà¤¾ नव पनà¥à¤¨à¤¾ ओही नामसठबनाà¤à¤² गेल, आनल संशोधन सभ पà¥à¤°à¤¾à¤¨ इतिहासमे आà¤à¤¤à¥¤',
@@ -2094,9 +2153,12 @@ $1',
'undelete-show-file-submit' => 'हà¤',
# Namespace form on various pages
-'namespace' => 'चेनà¥à¤¹à¤¾à¤¸à¥€ समूह',
-'invert' => 'उनटा चयन',
-'blanknamespace' => '(मà¥à¤–à¥à¤¯)',
+'namespace' => 'चेनà¥à¤¹à¤¾à¤¸à¥€ समूह',
+'invert' => 'उनटा चयन',
+'tooltip-invert' => 'ठबकà¥à¤¸à¤¾à¤•à¥‡à¤ सही करू पनà¥à¤¨à¤¾ परिवरà¥à¤¤à¤¨à¤•à¥‡à¤ नà¥à¤•à¥‡à¤¬à¤¾ लेल चयनित नामसà¥à¤¥à¤¾à¤¨à¤• भीतर (आ संग लागल नामसà¥à¤¥à¤¾à¤¨ जठसही कà¤à¤² अछि तखन)',
+'namespace_association' => 'समà¥à¤¬à¤¦à¥à¤§ नामसà¥à¤¥à¤¾à¤¨',
+'tooltip-namespace_association' => 'ठबकà¥à¤¸à¤¾à¤•à¥‡à¤ सही करू जइसठवारà¥à¤¤à¤¾ आ विषय नामसà¥à¤¥à¤¾à¤¨ समाहित कà¤à¤² जा सकठचà¥à¤¨à¤² नामसà¥à¤¥à¤¾à¤¨à¤®à¥‡',
+'blanknamespace' => '(मà¥à¤–à¥à¤¯)',
# Contributions
'contributions' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤• योगदान सभ',
@@ -2146,6 +2208,9 @@ $1',
'whatlinkshere-filters' => 'चलनी सभ',
# Block/unblock
+'autoblockid' => 'सà¥à¤µà¤¤à¤ƒà¤ªà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ #$1',
+'block' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ करू',
+'unblock' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¸à¤ हटाउ',
'blockip' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ करू',
'blockip-title' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ करू',
'blockip-legend' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ करू',
@@ -2164,6 +2229,7 @@ $1',
** धमकीबला वà¥à¤¯à¤µà¤¹à¤¾à¤°/ तंग करब
** कà¤à¤• खाताकेठगरिआà¤à¤¬
** अवांछित पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤®',
+'ipb-hardblock' => 'ठअनिकेत पतासठसमà¥à¤ªà¥à¤°à¤µà¥‡à¤¶à¤¿à¤¤ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤ समà¥à¤ªà¤¾à¤¦à¤¨à¤¸à¤ रोकू',
'ipbcreateaccount' => 'खाता निरà¥à¤®à¤¾à¤£ रोकू',
'ipbemailban' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤ ई-पतà¥à¤° पठेबासठरोकू',
'ipbenableautoblock' => 'सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤ रूपेठठपà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤• ठअनिकेतक पà¥à¤°à¤¯à¥‹à¤—केठपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ करू, आ कोनो दोसर अनिकेत पताकेठसेहो जतà¤à¤¸à¤ ओ समà¥à¤ªà¤¾à¤¦à¤¨à¤• पà¥à¤°à¤¯à¤¾à¤¸ करथि',
@@ -2174,9 +2240,15 @@ $1',
'ipbotherreason' => 'दोसर/ अतिरिकà¥à¤¤ कारण:',
'ipbhidename' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤®à¤•à¥‡à¤ समà¥à¤ªà¤¾à¤¦à¤¨ आ सूचीसठहटाउ',
'ipbwatchuser' => 'ठपà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤• अपन आ वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾à¤ªà¤° नजरि राखू',
+'ipb-disableusertalk' => 'ठपà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ अवधिमे अपन वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾à¤• समà¥à¤ªà¤¾à¤¦à¤¨à¤¸à¤ रोकू।',
'ipb-change-block' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤‚ पà¥à¤¨à¤ƒ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ करू ई विकलà¥à¤ªà¤• संग',
+'ipb-confirm' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ सà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ करू',
'badipaddress' => 'अमानà¥à¤¯ आईपी पता',
'blockipsuccesssub' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ सफल भेल',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ कà¤à¤² गेल।<br />
+देखू [[Special:BlockList|IP block list]] पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤• पà¥à¤¨à¤°à¥€à¤•à¥à¤·à¤£ लेल।',
+'ipb-blockingself' => 'अहाठअपनाकेठपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ करैबला छी! अहाठनिशà¥à¤šà¥à¤¯ केने छी जे अहाठई करठचाहै छी?',
+'ipb-confirmhideuser' => 'अहाठà¤à¤•à¤Ÿà¤¾ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤ जे "पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ नà¥à¤•à¤¾à¤‰" विकलà¥à¤ªà¤• संग अछि, पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ करैबला छी। ई पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤• नाम सभटा सूची आ वृतà¥à¤¤à¤²à¥‡à¤–मे दबा देत। की अहाठनिशà¥à¤šà¤¯ केने छी जे अहाठई करठचाहै छी?',
'ipb-edit-dropdown' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ कारण संपादित करू',
'ipb-unblock-addr' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ हटाà¤à¤² $1',
'ipb-unblock' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ वा अनिकेतकें अपà¥à¤°à¤¤à¤¿à¤¬à¤‚धित करू',
@@ -2186,9 +2258,20 @@ $1',
'unblockiptext' => 'पहिनेसठपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ अनिकेत वा पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤®à¤•à¥‡à¤ लिखबाक अधिकार देबा लेल निचà¥à¤²à¤•à¤¾ आवेदन भरू।',
'ipusubmit' => 'ई पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ हटाउ',
'unblocked' => '[[User:$1|$1]] अपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ कà¤à¤² गेल',
+'unblocked-range' => '$1 अपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ कà¤à¤² गेल',
'unblocked-id' => '$1 अपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ कà¤à¤² गेल',
+'blocklist' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ सभ',
'ipblocklist' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ सभ',
'ipblocklist-legend' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤ ताकू',
+'blocklist-userblocks' => 'खाता पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§-सूची नà¥à¤•à¤¾à¤‰',
+'blocklist-tempblocks' => 'असà¥à¤¥à¤¾à¤¯à¥€ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§-सूची नà¥à¤•à¤¾à¤‰',
+'blocklist-addressblocks' => 'à¤à¤•à¤² अनिकेत पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ नà¥à¤•à¤¾à¤‰',
+'blocklist-timestamp' => 'समà¤à¤•à¤¾à¤²',
+'blocklist-target' => 'लकà¥à¤·à¥à¤¯',
+'blocklist-expiry' => 'खतम हà¤à¤¤:',
+'blocklist-by' => 'संचालककेठपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ करब',
+'blocklist-params' => 'परिमितिकेठपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ करब',
+'blocklist-reason' => 'कारण:',
'ipblocklist-submit' => 'ताकू',
'ipblocklist-localblock' => 'सà¥à¤¥à¤¾à¤¨à¥€à¤¯ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§',
'ipblocklist-otherblocks' => 'दोसर {{PLURAL:$1|block|blocks}}',
@@ -2214,6 +2297,9 @@ $1 à¤à¤•à¤° पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤• कारण अछि : "$2"',
दबाà¤à¤² वृतà¥à¤¤à¤²à¥‡à¤– सनà¥à¤¦à¤°à¥à¤­ लेल नीचाठदेल जा रहल अछि:',
'blocklogentry' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ [[$1]] à¤à¤•à¤° अनà¥à¤¤à¤¿à¤® तिथि अछि $2 $3',
'reblock-logentry' => '$2 $3 अनà¥à¤¤à¤¿à¤® तिथिक संग पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ विकलà¥à¤ª [[$1]] लेल बदलल गेल',
+'blocklogtext' => 'ई पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ आ अपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ कà¥à¤°à¤¿à¤¯à¤¾ सभक वृतà¥à¤¤à¤²à¥‡à¤– अछि।
+सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤ रूपेठपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ कà¤à¤² अनिकेत à¤à¤¤à¤ दरà¥à¤œ नै अछि।
+देखू [[Special:BlockList|IP block list]] अखन लागू कà¥à¤°à¤¿à¤¯à¤¾à¤¶à¥€à¤² बनà¥à¤¦ आ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ सूची लेल।',
'unblocklogentry' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ हटाà¤à¤² $1',
'block-log-flags-anononly' => 'गà¥à¤ªà¥à¤¤ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ मातà¥à¤°',
'block-log-flags-nocreate' => 'लेखा निरà¥à¤®à¤¾à¤£ अशकà¥à¤¤ कà¤à¤²',
@@ -2227,7 +2313,9 @@ $1 à¤à¤•à¤° पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤• कारण अछि : "$2"',
'ipb_expiry_temp' => 'नà¥à¤•à¤¾à¤à¤² पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤® खणà¥à¤¡ सà¥à¤¥à¤¾à¤¯à¥€ हेबाक चाही।',
'ipb_hide_invalid' => 'ठखाताकेठदà¥à¤¬à¤¾ नै सकलौं; ठमे बडà¥à¤¡ बेसी समà¥à¤ªà¤¾à¤¦à¤¨ हà¤à¤¤à¥¤',
'ipb_already_blocked' => '"$1" पहिनहियेसठपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ अछि',
+'ipb-needreblock' => '$1 पहिनहियेसठपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ अछि। की अहाठविकलà¥à¤ª बदलऽ चाहै छी?',
'ipb-otherblocks-header' => 'दोसर {{PLURAL:$1|block|blocks}}',
+'unblock-hideuser' => 'अहाठठपà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤•à¥‡à¤ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¸à¤ नै हटा सकै छी, कारण ओकरा सभक पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾à¤¨à¤¾à¤® नà¥à¤•à¤¾à¤à¤² अछि।',
'ipb_cant_unblock' => 'भà¥à¤°à¤®: खणà¥à¤¡ पहिचान $1 नै भेटल। ई पहिनहिये पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¸à¤ मà¥à¤•à¥à¤¤ भऽ गेल हà¤à¤¤à¥¤',
'ipb_blocked_as_range' => 'भà¥à¤°à¤®: अनिकेत $1 सोà¤à¥‡ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ नै अछि आ अपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ नै कà¤à¤² जा सकैà¤à¥¤
ई, मà¥à¤¦à¤¾, कà¥à¤·à¥‡à¤¤à¥à¤° $2 क अनà¥à¤¦à¤° पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ अछि, जे अपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ कà¤à¤² जा सकैà¤à¥¤',
@@ -2267,6 +2355,7 @@ $1 à¤à¤•à¤° पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤• कारण अछि : "$2"',
'lockfilenotwritable' => 'दतà¥à¤¤à¤¾à¤‚शनिधि पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ संचिका लिखबा योगà¥à¤¯ नै अछि।
दतà¥à¤¤à¤¾à¤‚शनिधिकेठपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ वा अपà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ करबा लेल à¤à¤•à¤°à¤¾ जाल वितरक दà¥à¤µà¤¾à¤°à¤¾ लिखबा योगà¥à¤¯ हेबाक चाही।',
'databasenotlocked' => 'दतà¥à¤¤à¤¾à¤‚शनिधि पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ नै अछि।',
+'lockedbyandtime' => '(दà¥à¤µà¤¾à¤°à¤¾ {{GENDER:$1|$1}} केठ$2 बजे $3)',
# Move page
'move-page' => '$1हटाउ',
@@ -2393,7 +2482,7 @@ $1 à¤à¤•à¤° पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤• कारण अछि : "$2"',
'allmessagesdefault' => 'पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ संदेश पाठ',
'allmessagescurrent' => 'अखà¥à¤¨à¤•à¤¾ संदेश पाठ',
'allmessagestext' => 'ई मीडियाविकी नामसà¥à¤¥à¤¾à¤¨à¤®à¥‡ उपलबà¥à¤§ संसà¥à¤¥à¤¾à¤—त संदेशक सूची छी।
-कृपा कऽ देखू [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] आ [http://translatewiki.net translatewiki.net] जठअहाठमीडियाविकीक सà¥à¤¥à¤¾à¤¨à¤¿à¤•à¥€à¤•à¤°à¤£à¤• मूलक अनà¥à¤µà¤¾à¤¦à¤®à¥‡ योगदान करठचाहै छी।',
+कृपा कऽ देखू [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] आ [//translatewiki.net translatewiki.net] जठअहाठमीडियाविकीक सà¥à¤¥à¤¾à¤¨à¤¿à¤•à¥€à¤•à¤°à¤£à¤• मूलक अनà¥à¤µà¤¾à¤¦à¤®à¥‡ योगदान करठचाहै छी।',
'allmessagesnotsupportedDB' => "ई पनà¥à¤¨à¤¾ पà¥à¤°à¤¯à¥‹à¤—मे नै आनल जा सकैठकारण '''\$wgUseDatabaseMessages''' अशकà¥à¤¤ कà¤à¤² अछि।",
'allmessages-filter-legend' => 'चलनी',
'allmessages-filter' => 'अपन हिसाबे अनà¥à¤•à¥‚लित कऽ छाà¤à¤Ÿà¥‚:',
@@ -2560,9 +2649,17 @@ $1 à¤à¤•à¤° पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤• कारण अछि : "$2"',
'spam_blanking' => 'सभटा संशोधन $1 लागिसठयà¥à¤•à¥à¤¤ अि, खतम कऽ रहल छी',
# Info page
-'infosubtitle' => 'पृषà¥à¤ à¤• लेल नब गप',
-'numedits' => 'समà¥à¤ªà¤¾à¤¦à¤¨à¤• संखà¥à¤¯à¤¾ (पृषà¥à¤ ) : $1',
-'numauthors' => 'अलग लेखकक संखà¥à¤¯à¤¾ (पृषà¥à¤ ): $1',
+'pageinfo-title' => '"$1"पृषà¥à¤ à¤• लेल नब गप',
+'pageinfo-header-edits' => 'संपादन',
+'pageinfo-header-watchlist' => 'साकांकà¥à¤·-सूची',
+'pageinfo-header-views' => 'देखू',
+'pageinfo-subjectpage' => 'पृषà¥à¤ ',
+'pageinfo-talkpage' => 'टॉक पृषà¥à¤ ',
+'pageinfo-watchers' => 'जानकारक संखà¥à¤¯à¤¾',
+'pageinfo-edits' => 'समà¥à¤ªà¤¾à¤¦à¤¨à¤• संखà¥à¤¯à¤¾',
+'pageinfo-authors' => 'भिनà¥à¤¨ लेखक संखà¥à¤¯à¤¾',
+'pageinfo-views' => 'देखहि बला के संखà¥à¤¯à¤¾',
+'pageinfo-viewsperedit' => 'पà¥à¤°à¤¤à¤¿ समà¥à¤ªà¤¾à¤¦à¤¨ देखल गेल',
# Patrolling
'markaspatrolleddiff' => 'देखि लेल गेल, à¤à¤¹à¤¨ चिनà¥à¤¹ लगाऊ',
@@ -2598,21 +2695,25 @@ $1',
'nextdiff' => 'नव समà¥à¤ªà¤¾à¤¦à¤¨',
# Media information
-'mediawarning' => "'''चेतौनी''': ई संचिका पà¥à¤°à¤•à¤¾à¤° विषाणॠकूटशबà¥à¤¦ यà¥à¤•à¥à¤¤ रहि सकैà¤à¥¤
+'mediawarning' => "'''चेतौनी''': ई संचिका पà¥à¤°à¤•à¤¾à¤° विषाणॠकूटशबà¥à¤¦ यà¥à¤•à¥à¤¤ रहि सकैà¤à¥¤
à¤à¤•à¤°à¤¾ पà¥à¤°à¤¯à¥‹à¤— केलापर अहाà¤à¤• तंतà¥à¤°à¤•à¥‡à¤ किछॠसमà¤à¥Œà¤¤à¤¾ करऽ पड़ि सकै छै।",
-'imagemaxsize' => "चितà¥à¤° आकारक सीमा:<br />''(संचिका वरà¥à¤£à¤¨ पनà¥à¤¨à¤¾ लेल)''",
-'thumbsize' => 'संकà¥à¤šà¤¿à¤¤à¤šà¤¿à¤¤à¥à¤° आकार:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|पनà¥à¤¨à¤¾|पनà¥à¤¨à¤¾ सभ}}',
-'file-info' => 'संचिका आकार: $1, माइम पà¥à¤°à¤•à¤¾à¤°: $2',
-'file-info-size' => '$1 × $2 चितà¥à¤°à¤¾à¤£à¥, फाइल आकार: $3, माइम पà¥à¤°à¤•à¤¾à¤°: $4',
-'file-nohires' => '<छोट>à¤à¤¸à¤ बेशी आननà¥à¤¤à¤°à¥à¤¯ उपलबà¥à¤§ नै अछि।</छोट>',
-'svg-long-desc' => 'à¤à¤¸.वी.जी. फाइल, मामूली रूपमे $1 × $2 चितà¥à¤°à¤•à¤£, फाइलक आकार: $3',
-'show-big-image' => 'पूरà¥à¤£ आननà¥à¤¤à¤°à¥à¤¯',
-'file-info-gif-looped' => 'घà¥à¤°à¤¿à¤¯à¤¾à¤à¤²',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|खाका |खाका सभ }}',
-'file-info-png-looped' => 'घà¥à¤°à¤¿à¤¯à¤¾à¤à¤²',
-'file-info-png-repeat' => 'छà¥à¤…ल $1 {{PLURAL:$1|बेर|बेर}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|खाका |खाका सभ }}',
+'imagemaxsize' => "चितà¥à¤° आकारक सीमा:<br />''(संचिका वरà¥à¤£à¤¨ पनà¥à¤¨à¤¾ लेल)''",
+'thumbsize' => 'संकà¥à¤šà¤¿à¤¤à¤šà¤¿à¤¤à¥à¤° आकार:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|पनà¥à¤¨à¤¾|पनà¥à¤¨à¤¾ सभ}}',
+'file-info' => 'संचिका आकार: $1, माइम पà¥à¤°à¤•à¤¾à¤°: $2',
+'file-info-size' => '$1 × $2 चितà¥à¤°à¤¾à¤£à¥, फाइल आकार: $3, माइम पà¥à¤°à¤•à¤¾à¤°: $4',
+'file-info-size-pages' => '$1 × $2 चितà¥à¤°à¤•à¤£, संचिका आकार : $3, माइम पà¥à¤°à¤•à¤¾à¤°: $4, $5 {{PLURAL:$5|पनà¥à¤¨à¤¾|पनà¥à¤¨à¤¾ सभ}}',
+'file-nohires' => '<छोट>à¤à¤¸à¤ बेशी आननà¥à¤¤à¤°à¥à¤¯ उपलबà¥à¤§ नै अछि।</छोट>',
+'svg-long-desc' => 'à¤à¤¸.वी.जी. फाइल, मामूली रूपमे $1 × $2 चितà¥à¤°à¤•à¤£, फाइलक आकार: $3',
+'show-big-image' => 'पूरà¥à¤£ आननà¥à¤¤à¤°à¥à¤¯',
+'show-big-image-preview' => '<small>ठपूरà¥à¤µà¤¦à¥ƒà¤¶à¥à¤¯à¤• आकार: $1.</small>',
+'show-big-image-other' => '<small>दोसर आकार: $1.</small>',
+'show-big-image-size' => '$1 × $2 चितà¥à¤°à¤¾à¤£à¥',
+'file-info-gif-looped' => 'घà¥à¤°à¤¿à¤¯à¤¾à¤à¤²',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|खाका |खाका सभ }}',
+'file-info-png-looped' => 'घà¥à¤°à¤¿à¤¯à¤¾à¤à¤²',
+'file-info-png-repeat' => 'छà¥à¤…ल $1 {{PLURAL:$1|बेर|बेर}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|खाका |खाका सभ }}',
# Special:NewFiles
'newimages' => 'नव संचिका सबहक पेटार',
@@ -2639,6 +2740,21 @@ $1',
जौं फाइलकेठमूल रूपसठपरिवरà¥à¤§à¤¿à¤¤ कà¤à¤² गेल हà¤à¤¤ तठकिछॠविवरण पूरà¥à¤£ रूपसठपरिवरà¥à¤§à¤¿à¤¤ फाइलमे नै देखाà¤à¤² गेल हà¤à¤¤à¥¤',
'metadata-expand' => 'बढ़ाओल विवरण देखाउ।',
'metadata-collapse' => 'विसà¥à¤¤à¥ƒà¤¤ विवरण नà¥à¤•à¤¾à¤‰',
+'metadata-fields' => 'चितà¥à¤° पà¥à¤°à¤¦à¤¤à¥à¤¤à¤¾à¤‚श कà¥à¤·à¥‡à¤¤à¥à¤° सभ जे ठसंदेशमे संकलित अछि चितà¥à¤° पनà¥à¤¨à¤¾ पà¥à¤°à¤¦à¤°à¥à¤¶à¤¨à¤®à¥‡ लेल जाà¤à¤¤ जखन पà¥à¤°à¤¦à¤¤à¥à¤¤à¤¾à¤‚श सारणी कà¥à¤·à¤¤à¤¿à¤—à¥à¤°à¤¸à¥à¤¤ हà¤à¤¤à¥¤
+आन सभ पूरà¥à¤µà¤¨à¤¿à¤§à¤¾à¤°à¤¿à¤¤ रूपेठनà¥à¤•à¤¾ जाà¤à¤¤à¥¤
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'चौड़ाई',
@@ -2753,10 +2869,80 @@ $1',
'exif-gpsareainformation' => 'GPS विभागक नाम',
'exif-gpsdatestamp' => 'GPS दिनांक',
'exif-gpsdifferential' => 'जी.पी.à¤à¤¸. अंतर-संशोधन',
+'exif-jpegfilecomment' => 'JPEG फ़ाईलक टिपà¥à¤ªà¤£à¥€',
+'exif-keywords' => 'कीवरà¥à¤¡à¥à¤¸',
+'exif-worldregioncreated' => 'विशà¥à¤µà¤• कà¥à¤·à¥‡à¤¤à¥à¤°, जकर तसà¥à¤µà¥€à¤° लेल गेल अछि',
+'exif-countrycreated' => 'देश, जकर तसà¥à¤µà¥€à¤° लेल गेल अछि',
+'exif-countrycodecreated' => 'ओहि देशक संकेत, जकर तसà¥à¤µà¥€à¤° लेल गेल छल',
+'exif-provinceorstatecreated' => 'पà¥à¤°à¤¾à¤‚त आ राजà¥à¤¯, जकर तसà¥à¤µà¥€à¤° लेल गेल छल',
+'exif-citycreated' => 'शहर, जकर तसà¥à¤µà¥€à¤° लेल गेल छल',
+'exif-sublocationcreated' => 'शहर के ओ सà¥à¤¥à¤¾à¤¨, जकर तसà¥à¤µà¥€à¤° लेल गेल छल',
+'exif-worldregiondest' => 'विशà¥à¤µà¤• कà¥à¤·à¥‡à¤¤à¥à¤° दिखाऊ',
+'exif-countrydest' => 'देश के देखाऊ',
+'exif-countrycodedest' => 'दिखायल देशक कोड',
+'exif-provinceorstatedest' => 'दिखाओल गेल पà¥à¤°à¤¾à¤‚त आ शहर',
+'exif-citydest' => 'दिखाओल गेल शहर',
+'exif-sublocationdest' => 'दिखाओल गेल शहर के उपनगर',
'exif-objectname' => 'लघॠशीरà¥à¤·à¤•',
+'exif-specialinstructions' => 'विशेष निरà¥à¤¦à¥‡à¤¶',
+'exif-headline' => 'शीरà¥à¤·à¤•',
+'exif-credit' => 'पà¥à¤°à¤¤à¤¿à¤·à¥à¤ à¤¾/पà¥à¤°à¤¦à¤¾à¤¤à¤¾',
+'exif-source' => 'सà¥à¤°à¥‹à¤¤',
+'exif-editstatus' => '
+तसà¥à¤µà¥€à¤°à¤• संपादकीय सà¥à¤¥à¤¿à¤¤à¤¿',
+'exif-urgency' => 'महतà¥à¤µ',
+'exif-fixtureidentifier' => 'सà¥à¤¥à¤¿à¤° करय बलाक नाम',
+'exif-locationdest' => 'दरà¥à¤¶à¤¾à¤¯à¤² गेल सà¥à¤¥à¤¾à¤¨',
+'exif-locationdestcode' => 'दरà¥à¤¶à¤¾à¤¯à¤² गेल सà¥à¤¥à¤¾à¤¨à¤• कोड',
+'exif-objectcycle' => 'दिनक समय, जे मीडिया के करबाक अछि',
+'exif-contact' => 'समà¥à¤ªà¤°à¥à¤•à¤• जानकारी',
+'exif-writer' => 'लेखक',
+'exif-languagecode' => 'भाषा',
+'exif-iimversion' => 'IIM संसà¥à¤•à¤°à¤£',
+'exif-iimcategory' => 'संवरà¥à¤—',
+'exif-iimsupplementalcategory' => 'पूरक शà¥à¤°à¥‡à¤£à¤¿à¤¯à¤¾à¤‚',
+'exif-datetimeexpires' => 'à¤à¤•à¤° बाद पà¥à¤°à¤¯à¥‹à¤— नहि करू',
+'exif-datetimereleased' => 'पà¥à¤°à¤•à¤¾à¤¶à¤¿à¤¤ करू',
+'exif-originaltransmissionref' => 'मूल पà¥à¤°à¤¸à¤¾à¤°à¤£à¤• कोड',
+'exif-identifier' => 'अभिजà¥à¤žà¤¾à¤ªà¤•',
+'exif-lens' => 'लेंसक इसà¥à¤¤à¥‡à¤®à¤¾à¤² करल गेल',
+'exif-serialnumber' => 'कैमराक सीरियल संखà¥à¤¯à¤¾',
+'exif-cameraownername' => 'कैमराक मालिक',
+'exif-label' => 'सूचक पतà¥à¤°',
+'exif-datetimemetadata' => 'तिथि पà¥à¤°à¤¦à¤¤à¥à¤¤à¤¾à¤‚श अंतिम बेर संशोधित भेल',
+'exif-nickname' => 'तसà¥à¤µà¥€à¤°à¤• अनौपचारिक नाम',
+'exif-rating' => 'रेटिंग (पांच धरि)',
+'exif-rightscertificate' => 'अधिकार पà¥à¤°à¤¬à¤‚धन पà¥à¤°à¤®à¤¾à¤£à¤ªà¤¤à¥à¤°',
+'exif-copyrighted' => 'सरà¥à¤µà¤¾à¤§à¤¿à¤•à¤¾à¤°à¤• सà¥à¤¥à¤¿à¤¤à¤¿',
+'exif-copyrightowner' => 'सरà¥à¤µà¤¾à¤§à¤¿à¤•à¤¾à¤°à¥€',
+'exif-usageterms' => 'उपयोगक शरà¥à¤¤',
+'exif-webstatement' => 'ऑनलाइन कॉपीराइट बयान',
+'exif-originaldocumentid' => 'मूल दसà¥à¤¤à¤¾à¤µà¥‡à¤œà¤¼à¤• अदà¥à¤µà¤¿à¤¤à¥€à¤¯ आईडी',
+'exif-licenseurl' => 'कापीराइट पà¥à¤°à¤®à¤¾à¤£à¤ªà¤¤à¥à¤°à¤• URL',
+'exif-morepermissionsurl' => 'वैकलà¥à¤ªà¤¿à¤• लाइसेंसक जानकारी',
+'exif-attributionurl' => 'जखन अहि काज फेर से करब, तखन कृपया लिंक दियो',
+'exif-preferredattributionname' => 'जखन अहि काज फेर से करब, तखन कृपया शà¥à¤°à¥‡à¤¯ दियो',
+'exif-pngfilecomment' => 'PNG फ़ाईलक टिपà¥à¤ªà¤£à¥€',
+'exif-disclaimer' => 'अनाधिकार घोषणा',
+'exif-contentwarning' => 'सामगà¥à¤°à¥€à¤• चेतावनी',
+'exif-giffilecomment' => 'GIF फ़ाईलक टिपà¥à¤ªà¤£à¥€',
+'exif-intellectualgenre' => 'विषयक पà¥à¤°à¤•à¤¾à¤°',
+'exif-subjectnewscode' => 'विषयक कोड',
+'exif-scenecode' => 'IPTC दृशà¥à¤¯à¤• कोड',
+'exif-event' => 'घटना दरà¥à¤¶à¤¾à¤¯à¤² गेल',
+'exif-organisationinimage' => 'संगठन दरà¥à¤¶à¤¾à¤¯à¤² गेल',
+'exif-personinimage' => 'लोक दरà¥à¤¶à¤¾à¤¯à¤² गेल',
+'exif-originalimageheight' => 'काटहि सें पहिने तसà¥à¤µà¥€à¤°à¤• ऊà¤à¤šà¤¾à¤ˆ',
+'exif-originalimagewidth' => 'काटहि सें पहिने तसà¥à¤µà¥€à¤°à¤• चौड़ाई',
# EXIF attributes
'exif-compression-1' => 'असमà¥à¤ªà¥€à¤¡à¤¿à¤¤',
+'exif-compression-2' => 'सी.सी.आइ.टी.टी. वरà¥à¤— ३ १ - बीम संशोधित हफमैन कूट सोठलमà¥à¤¬à¤¾à¤‡',
+'exif-compression-3' => 'सी.सी.आइ.टी.टी. वरà¥à¤— ३ फैकà¥à¤¸ संकूट',
+'exif-compression-4' => 'सी.सी.आइ.टी.टी. वरà¥à¤— ४ फैकà¥à¤¸ संकूट',
+
+'exif-copyrighted-true' => 'सरà¥à¤µà¤¾à¤§à¤¿à¤•à¤¾à¤°',
+'exif-copyrighted-false' => 'पबà¥à¤²à¤¿à¤• डोमेन',
'exif-unknowndate' => 'अजà¥à¤žà¤¾à¤¤ तारीख',
@@ -2772,6 +2958,8 @@ $1',
'exif-planarconfiguration-1' => 'मोटगर पà¥à¤°à¤¾à¤°à¥‚प',
'exif-planarconfiguration-2' => 'पà¥à¤²à¤¾à¤¨à¤°à¤• पà¥à¤°à¤¾à¤°à¥‚प',
+'exif-colorspace-65535' => 'बिन नपनाक',
+
'exif-componentsconfiguration-0' => 'असà¥à¤¤à¤¿à¤¤à¥à¤µ में नहि अछि',
'exif-exposureprogram-0' => 'अवà¥à¤¯à¤•à¥à¤¤',
@@ -2885,6 +3073,10 @@ $1',
'exif-gpslongitude-e' => 'पà¥à¤¬à¤°à¤¿à¤¯à¤¾ रेखांश',
'exif-gpslongitude-w' => 'पछबरिया रेखांश',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|मीटर|मीटर}} समà¥à¤¦à¥à¤° तलसठऊपर',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|मीटर|मीटर}} समà¥à¤¦à¥à¤° तलसठनीचाà¤',
+
'exif-gpsstatus-a' => 'नापी चलि रहल छै',
'exif-gpsstatus-v' => 'नाप अनà¥à¤¤à¤°-कारà¥à¤¯',
@@ -2896,13 +3088,67 @@ $1',
'exif-gpsspeed-m' => 'माईल पà¥à¤°à¤¤à¤¿ घंटा',
'exif-gpsspeed-n' => 'गिरह',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'किलोमीटर',
+'exif-gpsdestdistance-m' => 'माइल',
+'exif-gpsdestdistance-n' => 'समà¥à¤¦à¥à¤°à¥€ माइल',
+
+'exif-gpsdop-excellent' => '($1)!शà¥à¤°à¥‡à¤·à¥à¤ ',
+'exif-gpsdop-good' => '($1) बढ़िया',
+'exif-gpsdop-moderate' => '($1) नियंतà¥à¤°à¤¿à¤¤',
+'exif-gpsdop-fair' => '($1)निषà¥à¤ªà¤•à¥à¤·',
+'exif-gpsdop-poor' => '($1) ख़राब',
+
+'exif-objectcycle-a' => 'भोरमभोर टा',
+'exif-objectcycle-p' => 'सांà¤à¥‡ टा',
+'exif-objectcycle-b' => 'भोर अ साà¤à¤ दà¥à¤¨à¥‚',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'असल दिश',
'exif-gpsdirection-m' => 'चà¥à¤®à¥à¤¬à¤•à¥€à¤¯ दिशा',
+'exif-ycbcrpositioning-1' => 'केनà¥à¤¦à¥à¤°à¤¿à¤¤',
+'exif-ycbcrpositioning-2' => 'सह-उदà¥à¤µà¤¾à¤¹à¤¨',
+
+'exif-dc-contributor' => 'योगदान दै बला लोक',
+'exif-dc-coverage' => 'मीडियाक सà¥à¤¥à¤¾à¤¨-कालिक कà¥à¤·à¥‡à¤¤à¥à¤°',
+'exif-dc-date' => 'तारीख',
+'exif-dc-publisher' => 'पà¥à¤°à¤•à¤¾à¤¶à¤¿à¤¤ करहि बला',
+'exif-dc-relation' => 'संबंधित मीडिया',
+'exif-dc-rights' => 'अधिकार',
+'exif-dc-source' => 'सà¥à¤°à¥‹à¤¤ बला माधà¥à¤¯à¤®',
+'exif-dc-type' => 'माधà¥à¤¯à¤®à¤• पà¥à¤°à¤•à¤¾à¤°',
+
+'exif-rating-rejected' => 'असà¥à¤µà¥€à¤•à¥ƒà¤¤',
+
+'exif-isospeedratings-overflow' => '६५५३५ सठबेसी',
+
+'exif-iimcategory-ace' => 'कला, संसà¥à¤•à¥ƒà¤¤à¤¿ आ मनोरंजन',
+'exif-iimcategory-clj' => 'अपराध आ कानून',
+'exif-iimcategory-dis' => 'आपदा आ दà¥à¤°à¥à¤˜à¤Ÿà¤¨à¤¾',
+'exif-iimcategory-fin' => 'अरà¥à¤¥à¤µà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾ आ वà¥à¤¯à¤¾à¤ªà¤¾à¤°',
+'exif-iimcategory-edu' => 'शिकà¥à¤·à¤¾',
+'exif-iimcategory-evn' => 'वातावरण',
+'exif-iimcategory-hth' => 'सà¥à¤µà¤¾à¤¸à¥à¤¥à¥à¤¯',
+'exif-iimcategory-hum' => 'मनà¥à¤–क अनà¥à¤°à¤¾à¤—',
+'exif-iimcategory-lab' => 'शà¥à¤°à¤®',
+'exif-iimcategory-lif' => 'जीवन शैली आ अवकाश',
+'exif-iimcategory-pol' => 'राजनीति',
+'exif-iimcategory-rel' => 'धरà¥à¤® आ विशà¥à¤µà¤¾à¤¸',
+'exif-iimcategory-sci' => 'विजà¥à¤žà¤¾à¤¨ आ तकनीक',
+'exif-iimcategory-soi' => 'सामाजिक मà¥à¤¦à¥à¤¦à¤¾',
+'exif-iimcategory-spo' => 'खेलकूद',
+'exif-iimcategory-war' => 'यà¥à¤¦à¥à¤§, संघरà¥à¤· आ अशांति',
+'exif-iimcategory-wea' => 'मौसम',
+
+'exif-urgency-normal' => 'सामानà¥à¤¯ ($1)',
+'exif-urgency-low' => 'कम ($1)',
+'exif-urgency-high' => 'बेशी ($1)',
+'exif-urgency-other' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ परिभाषित पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ ($1)',
+
# External editor support
'edit-externally' => 'ठफाइलकेठबाहरी अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤—सठहटाउ',
-'edit-externally-help' => '(देखू [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] विषेष जानकारी लेल)',
+'edit-externally-help' => '(देखू [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] विषेष जानकारी लेल)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'सभ',
@@ -2990,17 +3236,24 @@ $1',
'trackbackdeleteok' => 'टà¥à¤°à¥ˆà¤•à¤¬à¥ˆà¤• के सफलता पूरà¥à¤µà¤• मिटा देल गेल',
# Delete conflict
-'deletedwhileediting' => "'''Warning''': अहां जखन सें संपादन शà¥à¤°à¥‚ केने छी, ओकर बाद से ई पृषà¥à¤  के मिटा देल गेल अछि.",
-'confirmrecreate' => "पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ [[User:$1|$1]] ([[User talk:$1|वारà¥à¤¤à¤¾]]) अहाà¤à¤• कारण सहित समà¥à¤ªà¤¾à¤¦à¤¨à¤• बाद ठपनà¥à¤¨à¤¾à¤•à¥‡à¤ मेटा देलक:
+'deletedwhileediting' => "'''Warning''': अहां जखन सें संपादन शà¥à¤°à¥‚ केने छी, ओकर बाद से ई पृषà¥à¤  के मिटा देल गेल अछि.",
+'confirmrecreate' => "पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ [[User:$1|$1]] ([[User talk:$1|वारà¥à¤¤à¤¾]]) अहाà¤à¤• कारण सहित समà¥à¤ªà¤¾à¤¦à¤¨à¤• बाद ठपनà¥à¤¨à¤¾à¤•à¥‡à¤ मेटा देलक:
: ''$2''
कृपा कऽ अहाठसà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ करू जे अहाठठपनà¥à¤¨à¤¾à¤•à¥‡à¤ फेरसठबनबऽ चाहै छी।",
-'recreate' => 'फेर सें बनाऊ',
+'confirmrecreate-noreason' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ [[User:$1|$1]] ([[User talk:$1|वारà¥à¤¤à¤¾]]) अहाà¤à¤• समà¥à¤ªà¤¾à¤¦à¤¨à¤• बाद ठपनà¥à¤¨à¤¾à¤•à¥‡à¤ मेटा देलक| कृपा कऽ अहाठसà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ करू जे अहाठठपनà¥à¤¨à¤¾à¤•à¥‡à¤ फेरसठबनबऽ चाहै छी।',
+'recreate' => 'फेर सें बनाऊ',
# action=purge
'confirm_purge_button' => 'ठीक अछि',
'confirm-purge-top' => 'ठपनà¥à¤¨à¤¾à¤• उपसà¥à¤®à¥ƒà¤¤à¤¿ खतम कऽ दिअ?',
'confirm-purge-bottom' => 'कोनो पनà¥à¤¨à¤¾à¤• सफाइ उपसà¥à¤®à¥ƒà¤¤à¤¿à¤•à¥‡à¤ खतम करैठआ अदà¥à¤¯à¤¤à¤¨ संशोधनकेठअà¤à¤¬à¤¾à¤²à¥‡ जोर दैà¤à¥¤',
+# action=watch/unwatch
+'confirm-watch-button' => 'ठीक अछि',
+'confirm-watch-top' => 'ठपनà¥à¤¨à¤¾à¤•à¥‡à¤ अपन साकांकà¥à¤· सूचीमे जोड़ू',
+'confirm-unwatch-button' => 'ठीक अछि',
+'confirm-unwatch-top' => 'ठपनà¥à¤¨à¤¾à¤•à¥‡à¤ हमर साकांकà¥à¤· सूचीसठहटाउ',
+
# Multipage image navigation
'imgmultipageprev' => 'पहिलà¥à¤•à¤¾ पृषà¥à¤ ',
'imgmultipagenext' => 'अगà¥à¤²à¤•à¤¾ पृषà¥à¤ ',
@@ -3038,19 +3291,26 @@ $1',
'lag-warn-high' => 'उचà¥à¤š दतà¥à¤¤à¤¨à¤¿à¤§à¤¿ वितरक देरीक कारण, $1 सठनव परिवरà¥à¤¤à¤¨ {{PLURAL:$1|सेकेणà¥à¤¡|सेकेणà¥à¤¡}} ठसूचीमे नै देखाà¤à¤² जा सकल।',
# Watchlist editor
-'watchlistedit-numitems' => 'अहाà¤à¤• साकांकà¥à¤·-सूचीमे अछि {{PLURAL:$1|1 शीरà¥à¤·à¤•|$1 शीरà¥à¤·à¤•}}, वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾à¤•à¥‡à¤ छोड़ि कऽ।',
-'watchlistedit-noitems' => 'अहाà¤à¤• साकांकà¥à¤·-सूचीमे कोनो शीरà¥à¤·à¤• नै अछि।',
-'watchlistedit-normal-title' => 'साकांकà¥à¤·à¤¸à¥‚ची बदलू',
-'watchlistedit-normal-legend' => 'साकांकà¥à¤· सूचीसठहटाउ',
-'watchlistedit-normal-submit' => 'शीरà¥à¤·à¤• सभकेठहटाउ',
-'watchlistedit-normal-done' => '{{PLURAL:$1|1शीरà¥à¤·à¤• रहà¤|$1शीरà¥à¤·à¤• सभ रहà¤}} अहाà¤à¤• साकांकà¥à¤·-सूचीसठहटाà¤à¤² गेल:',
-'watchlistedit-raw-title' => 'काà¤à¤š साकांकà¥à¤·à¤¸à¥‚ची संपादित करू',
-'watchlistedit-raw-legend' => 'काà¤à¤š साकांकà¥à¤·à¤¸à¥‚ची संपादित करू',
-'watchlistedit-raw-titles' => 'शीरà¥à¤·à¤•',
-'watchlistedit-raw-submit' => 'साकांकà¥à¤·à¤¸à¥‚ची अदà¥à¤¯à¤¤à¤¨ करू',
-'watchlistedit-raw-done' => 'अहाà¤à¤• साकांकà¥à¤·-सूची अदà¥à¤¯à¤¤à¤¨ कà¤à¤² गेल।',
-'watchlistedit-raw-added' => '{{PLURAL:$1|1 शीरà¥à¤·à¤• छल|$1शीरà¥à¤·à¤• सभ रहà¤}} जोड़ल गेल:',
-'watchlistedit-raw-removed' => '{{PLURAL:$1|1 शीरà¥à¤·à¤• छल|$1शीरà¥à¤·à¤• सभ रहà¤}} हटाà¤à¤² गेल:',
+'watchlistedit-numitems' => 'अहाà¤à¤• साकांकà¥à¤·-सूचीमे अछि {{PLURAL:$1|1 शीरà¥à¤·à¤•|$1 शीरà¥à¤·à¤•}}, वारà¥à¤¤à¤¾ पनà¥à¤¨à¤¾à¤•à¥‡à¤ छोड़ि कऽ।',
+'watchlistedit-noitems' => 'अहाà¤à¤• साकांकà¥à¤·-सूचीमे कोनो शीरà¥à¤·à¤• नै अछि।',
+'watchlistedit-normal-title' => 'साकांकà¥à¤·à¤¸à¥‚ची बदलू',
+'watchlistedit-normal-legend' => 'साकांकà¥à¤· सूचीसठहटाउ',
+'watchlistedit-normal-explain' => 'अहाà¤à¤• साकांकà¥à¤·-सूचीक शीरà¥à¤·à¤• नीचाà¤à¤®à¥‡ देल अछि।
+à¤à¤•à¤Ÿà¤¾ शीरà¥à¤·à¤•à¤•à¥‡à¤ हटेबाले, ओकर सोà¤à¤¾à¤à¤• बकà¥à¤¶à¤¾à¤•à¥‡à¤ सही करू, आ कà¥à¤²à¤¿à¤• करू "{{int:Watchlistedit-normal-submit}}"।
+अहाठ[[Special:EditWatchlist/raw|काà¤à¤š-सूची समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ करू]] ईहो कऽ सकै छी।',
+'watchlistedit-normal-submit' => 'शीरà¥à¤·à¤• सभकेठहटाउ',
+'watchlistedit-normal-done' => '{{PLURAL:$1|1शीरà¥à¤·à¤• रहà¤|$1शीरà¥à¤·à¤• सभ रहà¤}} अहाà¤à¤• साकांकà¥à¤·-सूचीसठहटाà¤à¤² गेल:',
+'watchlistedit-raw-title' => 'काà¤à¤š साकांकà¥à¤·à¤¸à¥‚ची संपादित करू',
+'watchlistedit-raw-legend' => 'काà¤à¤š साकांकà¥à¤·à¤¸à¥‚ची संपादित करू',
+'watchlistedit-raw-explain' => 'अहाà¤à¤• साकांकà¥à¤·-सूचीक शीरà¥à¤·à¤• सभ नीचाठदेल अछि, आ à¤à¤•à¤°à¤¾ सूचीमे दऽ कऽ वा निकालि कऽ समà¥à¤ªà¤¾à¤¦à¤¿à¤¤ कà¤à¤² जा सकैà¤;
+पà¥à¤°à¤¤à¤¿ पाà¤à¤¤à¥€ à¤à¤• शीरà¥à¤·à¤•à¥¤
+जखन समापà¥à¤¤ भऽ जाà¤, कà¥à¤²à¤¿à¤• करू "{{int:Watchlistedit-raw-submit}}"।
+अहाठ[[Special:EditWatchlist|सामानà¥à¤¯ समà¥à¤ªà¤¾à¤¦à¤¨-तंतà¥à¤°à¤¾à¤‚श पà¥à¤°à¤¯à¥‹à¤— करू]] ई सेहो कऽ सकै छी।',
+'watchlistedit-raw-titles' => 'शीरà¥à¤·à¤•',
+'watchlistedit-raw-submit' => 'साकांकà¥à¤·à¤¸à¥‚ची अदà¥à¤¯à¤¤à¤¨ करू',
+'watchlistedit-raw-done' => 'अहाà¤à¤• साकांकà¥à¤·-सूची अदà¥à¤¯à¤¤à¤¨ कà¤à¤² गेल।',
+'watchlistedit-raw-added' => '{{PLURAL:$1|1 शीरà¥à¤·à¤• छल|$1शीरà¥à¤·à¤• सभ रहà¤}} जोड़ल गेल:',
+'watchlistedit-raw-removed' => '{{PLURAL:$1|1 शीरà¥à¤·à¤• छल|$1शीरà¥à¤·à¤• सभ रहà¤}} हटाà¤à¤² गेल:',
# Watchlist editing tools
'watchlisttools-view' => 'समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ परिवरà¥à¤¤à¤¨ सभकेठदेखू',
@@ -3067,6 +3327,7 @@ $1',
'version-specialpages' => 'खास पनà¥à¤¨à¤¾',
'version-parserhooks' => 'पारà¥à¤¸à¤° हूक',
'version-variables' => 'विकारी',
+'version-antispam' => 'अनिषà¥à¤Ÿ संदेश पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§',
'version-skins' => 'रूप',
'version-other' => 'आन',
'version-mediahandlers' => 'मीडिया संचालक',
@@ -3078,13 +3339,13 @@ $1',
'version-hook-subscribedby' => 'ई सदसà¥à¤¯à¤¤à¤¾ लेलनि',
'version-version' => '(संसà¥à¤•à¤°à¤£ $1)',
'version-license' => 'अधिकार',
-'version-poweredby-credits' => "ई विकी चालित अछि '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2",
+'version-poweredby-credits' => "ई विकी चालित अछि '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2",
'version-poweredby-others' => 'आन',
'version-license-info' => 'मीडियाविकी à¤à¤•à¤Ÿà¤¾ मंगनीक तंतà¥à¤°à¤¾à¤‚श अछि; अहाठà¤à¤•à¤°à¤¾ बाà¤à¤Ÿà¤¿ सकै छी आ/ वा संशोधित कऽ सकै छीगी.à¤à¤¨.यू. सामानà¥à¤¯ जन लाइसेनà¥à¤¸à¤• अनà¥à¤¤à¤°à¥à¤—त जेना फà¥à¤°à¥€ सॉफà¥à¤Ÿà¤µà¥‡à¤¯à¤° फाउनà¥à¤¡à¥‡à¤¶à¤¨ à¤à¤•à¤°à¤¾ पà¥à¤°à¤•à¤¾à¤¶à¤¿à¤¤ केने अछि; चाहे तठलाइसेनà¥à¤¸à¤• संसà¥à¤•à¤°à¤£ २, वा (अहाà¤à¤• विकलà¥à¤ªà¤ªà¤°) कोनो बादक दोसर संसà¥à¤•à¤°à¤£à¤• अनà¥à¤¤à¤°à¥à¤—त।
मीडियाविकी ठआशामेठबाà¤à¤Ÿà¤² जा रहल अछि कि ई उपयोगी हà¤à¤¤, मà¥à¤¦à¤¾ बिना कोनो गारनà¥à¤Ÿà¥€à¤•; बिना कोनो वà¥à¤¯à¤¾à¤ªà¤¾à¤°à¤¿à¤• अनà¥à¤¤à¤°à¥à¤¨à¤¿à¤¹à¤¿à¤¤ वारनà¥à¤Ÿà¥€à¤• वा कोनो विशेष काजक लेल उपयोगी हेबाले। देखू गी.à¤à¤¨.यू. सामानà¥à¤¯ जन लाइसेनà¥à¤¸ विशेष वरà¥à¤£à¤¨ लेल।
-अहाठपà¥à¤°à¤¾à¤ªà¥à¤¤ केने हà¤à¤¬ [{{SERVER}}{{SCRIPTPATH}}/ अनà¥à¤•à¤°à¤£ गी.à¤à¤¨.यू. सामानà¥à¤¯ जन लाइसेनà¥à¤¸à¤• पà¥à¤°à¤¤à¤¿] ठतंतà¥à¤°à¤¾à¤‚शक संग; जठनै, लिखू फà¥à¤°à¥€ सॉफà¥à¤Ÿà¤µà¥‡à¤¯à¤° फाउनà¥à¤¡à¥‡à¤¶à¤¨, आइ.à¤à¤¨.सी., ५१, फà¥à¤°à¥ˆà¤‚कलिन सà¥à¤Ÿà¥à¤°à¥€à¤Ÿ, पाà¤à¤šà¤® तल, बोसà¥à¤Ÿà¤¨, à¤à¤®.à¤. ०२११०-१३०१, यू.à¤à¤¸.à¤. वा [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html अनà¥à¤¤à¤°à¥à¤­à¥‚त पढ़बा लेल]।',
+अहाठपà¥à¤°à¤¾à¤ªà¥à¤¤ केने हà¤à¤¬ [{{SERVER}}{{SCRIPTPATH}}/ अनà¥à¤•à¤°à¤£ गी.à¤à¤¨.यू. सामानà¥à¤¯ जन लाइसेनà¥à¤¸à¤• पà¥à¤°à¤¤à¤¿] ठतंतà¥à¤°à¤¾à¤‚शक संग; जठनै, लिखू फà¥à¤°à¥€ सॉफà¥à¤Ÿà¤µà¥‡à¤¯à¤° फाउनà¥à¤¡à¥‡à¤¶à¤¨, आइ.à¤à¤¨.सी., ५१, फà¥à¤°à¥ˆà¤‚कलिन सà¥à¤Ÿà¥à¤°à¥€à¤Ÿ, पाà¤à¤šà¤® तल, बोसà¥à¤Ÿà¤¨, à¤à¤®.à¤. ०२११०-१३०१, यू.à¤à¤¸.à¤. वा [//www.gnu.org/licenses/old-licenses/gpl-2.0.html अनà¥à¤¤à¤°à¥à¤­à¥‚त पढ़बा लेल]।',
'version-software' => 'पà¥à¤°à¤¤à¤¿à¤·à¥à¤ à¤¾à¤ªà¤¿à¤¤ तंतà¥à¤°à¤¾à¤‚श',
'version-software-product' => 'उतà¥à¤ªà¤¾à¤¦',
'version-software-version' => 'संसà¥à¤•à¤°à¤£',
@@ -3097,16 +3358,22 @@ $1',
चितà¥à¤° सभ पूरà¥à¤£ आकारमे देखाà¤à¤² जाइत अछि, दोसर संचिका पà¥à¤°à¤•à¤¾à¤° चालित होइठसोà¤à¥‡ समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ संविधि दà¥à¤µà¤¾à¤°à¤¾à¥¤',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤• संचिका ताकू',
-'fileduplicatesearch-legend' => 'दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤• ताकू',
-'fileduplicatesearch-filename' => 'संचिकानाम:',
-'fileduplicatesearch-submit' => 'ताकू',
-'fileduplicatesearch-info' => '$1 × $2 चितà¥à¤°à¤¾à¤£à¥<br /> फाइल आकार: $3<br /> माइम पà¥à¤°à¤•à¤¾à¤°: $4',
-'fileduplicatesearch-result-1' => 'संचिका "$1" लेल कोनो तादातà¥à¤®à¥à¤¯ दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤• नै।',
-'fileduplicatesearch-result-n' => 'संचिका "$1" केठछै {{PLURAL:$2|1 तादातà¥à¤®à¥à¤¯ दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤•|$2तादातà¥à¤®à¥à¤¯ दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤•}}.',
+'fileduplicatesearch' => 'दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤• संचिका ताकू',
+'fileduplicatesearch-summary' => 'हैश मानक आधारपर दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤• संचिका ताकू।',
+'fileduplicatesearch-legend' => 'दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤• ताकू',
+'fileduplicatesearch-filename' => 'संचिकानाम:',
+'fileduplicatesearch-submit' => 'ताकू',
+'fileduplicatesearch-info' => '$1 × $2 चितà¥à¤°à¤¾à¤£à¥<br /> फाइल आकार: $3<br /> माइम पà¥à¤°à¤•à¤¾à¤°: $4',
+'fileduplicatesearch-result-1' => 'संचिका "$1" लेल कोनो तादातà¥à¤®à¥à¤¯ दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤• नै।',
+'fileduplicatesearch-result-n' => 'संचिका "$1" केठछै {{PLURAL:$2|1 तादातà¥à¤®à¥à¤¯ दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤•|$2तादातà¥à¤®à¥à¤¯ दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤•}}.',
+'fileduplicatesearch-noresults' => 'कोनो "$1" नामà¥à¤¨à¤¾ संचिका नै।',
# Special:SpecialPages
'specialpages' => 'विशेष पनà¥à¤¨à¤¾',
+'specialpages-note' => '----
+* सामानà¥à¤¯ विशिषà¥à¤Ÿ पनà¥à¤¨à¤¾à¥¤
+* <span class="mw-specialpagerestricted">पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित विशिषà¥à¤Ÿ पनà¥à¤¨à¤¾à¥¤</span>
+* <span class="mw-specialpagecached">उपसà¥à¤®à¥ƒà¤¤à¤¿à¤• विशिषà¥à¤Ÿ पनà¥à¤¨à¤¾ (पà¥à¤°à¤¾à¤¨ भऽ सकैà¤)।</span>',
'specialpages-group-maintenance' => 'सà¥à¤¸à¥à¤¥à¤¾à¤ªà¤¨ पà¥à¤°à¤¤à¤¿à¤µà¥‡à¤¦à¤¨',
'specialpages-group-other' => 'दोसर विशेष पनà¥à¤¨à¤¾',
'specialpages-group-login' => 'समà¥à¤ªà¥à¤°à¤µà¥‡à¤¶/ समà¥à¤ªà¥à¤°à¤µà¥‡à¤¶ आवेदन',
diff --git a/languages/messages/MessagesMap_bms.php b/languages/messages/MessagesMap_bms.php
index 4276ae7c..ff1880dd 100644
--- a/languages/messages/MessagesMap_bms.php
+++ b/languages/messages/MessagesMap_bms.php
@@ -7,12 +7,36 @@
* @ingroup Language
* @file
*
+ * @author StefanusRA
* @author לערי ריינה×רט
*/
$fallback = 'jv';
$messages = array(
+# Dates
+'sunday' => 'Minggu',
+'monday' => 'Senen',
+'tuesday' => 'Selasa',
+'wednesday' => 'Rebo',
+'thursday' => 'Kemis',
+'friday' => 'Jemuwah',
+'saturday' => 'Setu',
+'sun' => 'Min',
+'mon' => 'Sen',
+'tue' => 'Sel',
+'wed' => 'Reb',
+'thu' => 'Kem',
+'fri' => 'Jem',
+'sat' => 'Set',
+'january' => 'Januari',
+'february' => 'Februari',
+'march' => 'Maret',
+'april' => 'April',
+'may_long' => 'Mei',
+'june' => 'Juni',
+'july' => 'Juli',
+
'article' => 'Isi tulisan',
'cancel' => 'Ora Sida',
'mypage' => 'Kaca inyong',
diff --git a/languages/messages/MessagesMdf.php b/languages/messages/MessagesMdf.php
index d38adefa..fdbfcb52 100644
--- a/languages/messages/MessagesMdf.php
+++ b/languages/messages/MessagesMdf.php
@@ -53,92 +53,92 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'КафонзафШашфтфкÑне' ),
+ 'Allmessages' => array( 'СембеПачфтематне' ),
+ 'Allpages' => array( 'СембеЛопат' ),
+ 'Ancientpages' => array( 'КунардоньЛопат' ),
+ 'Blankpage' => array( 'ШаваЛопа' ),
+ 'Block' => array( 'СёлгомаIP' ),
+ 'Blockme' => array( 'Сёлгомак' ),
+ 'Booksources' => array( 'КинигаЛиÑьмот' ),
'BrokenRedirects' => array( 'СиньтьфШашфтфкÑне' ),
- 'Disambiguations' => array( 'Лама СмуÑÑ‚ÑŒ' ),
- 'Userlogin' => array( 'ТииньСувама' ),
- 'Userlogout' => array( 'ТииньЛиÑема' ),
+ 'Categories' => array( 'Категориет' ),
+ 'ChangePassword' => array( 'ПолафттСувама', 'ПолафттСувама вал' ),
+ 'Confirmemail' => array( 'КемокÑтакÐдреÑ' ),
+ 'Contributions' => array( 'ПуткÑне' ),
'CreateAccount' => array( 'СёрматфтомÑ' ),
- 'Preferences' => array( 'Латцематне' ),
- 'Watchlist' => array( 'Мельгеванома' ),
- 'Recentchanges' => array( 'УлхкомбаньПолафнематне' ),
- 'Upload' => array( 'Тонгома' ),
+ 'Deadendpages' => array( 'ПеньЛопат' ),
+ 'DeletedContributions' => array( 'ÐардафПуткÑне' ),
+ 'Disambiguations' => array( 'Лама СмуÑÑ‚ÑŒ' ),
+ 'DoubleRedirects' => array( 'КафонзафШашфтфкÑне' ),
+ 'Emailuser' => array( 'ÐдреÑТииÑÑŒ' ),
+ 'Export' => array( 'ВимÑ' ),
+ 'Fewestrevisions' => array( 'КържаВерзиет' ),
+ 'FileDuplicateSearch' => array( 'ФайлКафонзафВешендема' ),
+ 'Filepath' => array( 'ФайлКиц' ),
+ 'Import' => array( 'СувафтомÑ' ),
+ 'Invalidateemail' => array( 'ÐÑ„ кемокÑÑ‚Ð°Ð¼Ñ Ð°Ð´Ñ€ÐµÑÑ‚ÑŒ' ),
+ 'BlockList' => array( 'IPСёлгоматЛувома' ),
+ 'LinkSearch' => array( 'СюлмафкÑВешендема' ),
+ 'Listadmins' => array( 'ЛувомаСиÑтемонь вÑтикÑне' ),
+ 'Listbots' => array( 'ЛувомаРоботт програпне' ),
'Listfiles' => array( 'ÐÑйфКÑрькÑ' ),
- 'Newimages' => array( 'ОдÐÑйфне' ),
- 'Listusers' => array( 'ЛувомТиихне' ),
'Listgrouprights' => array( 'ЛувомаПолгаВидекÑне' ),
- 'Statistics' => array( 'СтатиÑтик' ),
- 'Randompage' => array( 'Кодама повÑÑŒ', 'Кодама повÑÑŒ лопа' ),
+ 'Listredirects' => array( 'ЛувомаШашфтфкÑне' ),
+ 'Listusers' => array( 'ЛувомТиихне' ),
+ 'Lockdb' => array( 'ПÑкÑтамÑДатабазать' ),
+ 'Log' => array( 'Лувома', 'Лувомат' ),
'Lonelypages' => array( 'СькамоньЛопат', 'УрозЛопат' ),
- 'Uncategorizedpages' => array( 'Ðпак категориÑфттЛопат' ),
- 'Uncategorizedcategories' => array( 'Ðпак категориÑфттКатегориет' ),
- 'Uncategorizedimages' => array( 'Ðпак категориÑÑ„Ñ‚Ñ‚ÐÑйфт' ),
- 'Uncategorizedtemplates' => array( 'Ðпак категориÑфттШаблотт' ),
- 'Unusedcategories' => array( 'Ðпак нолдак тевÑКатегориет' ),
- 'Unusedimages' => array( 'Ðпак нолдак тевÑÐÑйфне' ),
- 'Wantedpages' => array( 'ВешевиЛопат', 'СиньтьфСюлмафкÑÑ‚' ),
- 'Wantedcategories' => array( 'ВешевиКатегориет' ),
- 'Wantedfiles' => array( 'ВешевиФайлхт' ),
- 'Wantedtemplates' => array( 'ВешевиШаблотт' ),
+ 'Longpages' => array( 'КувакаЛопат' ),
+ 'MergeHistory' => array( 'ШоворемÑИÑториÑÑ‚ÑŒ' ),
+ 'MIMEsearch' => array( 'MIMEВешендема' ),
+ 'Mostcategories' => array( 'СембодаКатегориет' ),
+ 'Mostimages' => array( 'СембодаÐÑйфне' ),
'Mostlinked' => array( 'СембодаСюлмафт' ),
'Mostlinkedcategories' => array( 'СембодаСюлмафтКатегориет' ),
'Mostlinkedtemplates' => array( 'СембодаСюлмафтШаблотт' ),
- 'Mostimages' => array( 'СембодаÐÑйфне' ),
- 'Mostcategories' => array( 'СембодаКатегориет' ),
'Mostrevisions' => array( 'СембодаВерзиет' ),
- 'Fewestrevisions' => array( 'КържаВерзиет' ),
- 'Shortpages' => array( 'ÐюрьхкÑнÑЛопат' ),
- 'Longpages' => array( 'КувакаЛопат' ),
+ 'Movepage' => array( 'ШашфттЛопа' ),
+ 'Mycontributions' => array( 'МоньПуткÑне' ),
+ 'Mypage' => array( 'МоньЛопазе' ),
+ 'Mytalk' => array( 'МоньКорхнемазе' ),
+ 'Newimages' => array( 'ОдÐÑйфне' ),
'Newpages' => array( 'ОдЛопат' ),
- 'Ancientpages' => array( 'КунардоньЛопат' ),
- 'Deadendpages' => array( 'ПеньЛопат' ),
+ 'Popularpages' => array( 'СидеÑтаЛопатне' ),
+ 'Preferences' => array( 'Латцематне' ),
+ 'Prefixindex' => array( 'ВалынголькÑИндекÑ' ),
'Protectedpages' => array( 'ÐралафЛопат' ),
'Protectedtitles' => array( 'ÐралафКонÑкÑÑ‚' ),
- 'Allpages' => array( 'СембеЛопат' ),
- 'Prefixindex' => array( 'ВалынголькÑИндекÑ' ),
- 'Ipblocklist' => array( 'IPСёлгоматЛувома' ),
- 'Specialpages' => array( 'БашкаЛопат' ),
- 'Contributions' => array( 'ПуткÑне' ),
- 'Emailuser' => array( 'ÐдреÑТииÑÑŒ' ),
- 'Confirmemail' => array( 'КемокÑтакÐдреÑ' ),
- 'Whatlinkshere' => array( 'МезеньСюлмафкÑтТÑÑа' ),
+ 'Randompage' => array( 'Кодама повÑÑŒ', 'Кодама повÑÑŒ лопа' ),
+ 'Randomredirect' => array( 'Кона повÑьШашфтфкÑ' ),
+ 'Recentchanges' => array( 'УлхкомбаньПолафнематне' ),
'Recentchangeslinked' => array( 'УлхкомбаньПолафнематСюлмафт' ),
- 'Movepage' => array( 'ШашфттЛопа' ),
- 'Blockme' => array( 'Сёлгомак' ),
- 'Booksources' => array( 'КинигаЛиÑьмот' ),
- 'Categories' => array( 'Категориет' ),
- 'Export' => array( 'ВимÑ' ),
- 'Version' => array( 'Верзие' ),
- 'Allmessages' => array( 'СембеПачфтематне' ),
- 'Log' => array( 'Лувома', 'Лувомат' ),
- 'Blockip' => array( 'СёлгомаIP' ),
+ 'Revisiondelete' => array( 'ВерзиеÐардамÑ' ),
+ 'Search' => array( 'Вешендема' ),
+ 'Shortpages' => array( 'ÐюрьхкÑнÑЛопат' ),
+ 'Specialpages' => array( 'БашкаЛопат' ),
+ 'Statistics' => array( 'СтатиÑтик' ),
+ 'Uncategorizedcategories' => array( 'Ðпак категориÑфттКатегориет' ),
+ 'Uncategorizedimages' => array( 'Ðпак категориÑÑ„Ñ‚Ñ‚ÐÑйфт' ),
+ 'Uncategorizedpages' => array( 'Ðпак категориÑфттЛопат' ),
+ 'Uncategorizedtemplates' => array( 'Ðпак категориÑфттШаблотт' ),
'Undelete' => array( 'МърдафтомÑ' ),
- 'Import' => array( 'СувафтомÑ' ),
- 'Lockdb' => array( 'ПÑкÑтамÑДатабазать' ),
'Unlockdb' => array( 'ПанжемÑДатабазать' ),
- 'Userrights' => array( 'ТииньВидекÑонза' ),
- 'MIMEsearch' => array( 'MIMEВешендема' ),
- 'FileDuplicateSearch' => array( 'ФайлКафонзафВешендема' ),
- 'Unwatchedpages' => array( 'МельгеваномафтомаЛопат' ),
- 'Listredirects' => array( 'ЛувомаШашфтфкÑне' ),
- 'Revisiondelete' => array( 'ВерзиеÐардамÑ' ),
+ 'Unusedcategories' => array( 'Ðпак нолдак тевÑКатегориет' ),
+ 'Unusedimages' => array( 'Ðпак нолдак тевÑÐÑйфне' ),
'Unusedtemplates' => array( 'Ðпак нолдак тевÑШаблотт' ),
- 'Randomredirect' => array( 'Кона повÑьШашфтфкÑ' ),
- 'Mypage' => array( 'МоньЛопазе' ),
- 'Mytalk' => array( 'МоньКорхнемазе' ),
- 'Mycontributions' => array( 'МоньПуткÑне' ),
- 'Listadmins' => array( 'ЛувомаСиÑтемонь вÑтикÑне' ),
- 'Listbots' => array( 'ЛувомаРоботт програпне' ),
- 'Popularpages' => array( 'СидеÑтаЛопатне' ),
- 'Search' => array( 'Вешендема' ),
- 'Resetpass' => array( 'ПолафттСувама', 'ПолафттСувама вал' ),
+ 'Unwatchedpages' => array( 'МельгеваномафтомаЛопат' ),
+ 'Upload' => array( 'Тонгома' ),
+ 'Userlogin' => array( 'ТииньСувама' ),
+ 'Userlogout' => array( 'ТииньЛиÑема' ),
+ 'Userrights' => array( 'ТииньВидекÑонза' ),
+ 'Version' => array( 'Верзие' ),
+ 'Wantedcategories' => array( 'ВешевиКатегориет' ),
+ 'Wantedfiles' => array( 'ВешевиФайлхт' ),
+ 'Wantedpages' => array( 'ВешевиЛопат', 'СиньтьфСюлмафкÑÑ‚' ),
+ 'Wantedtemplates' => array( 'ВешевиШаблотт' ),
+ 'Watchlist' => array( 'Мельгеванома' ),
+ 'Whatlinkshere' => array( 'МезеньСюлмафкÑтТÑÑа' ),
'Withoutinterwiki' => array( 'Интервикифтома' ),
- 'MergeHistory' => array( 'ШоворемÑИÑториÑÑ‚ÑŒ' ),
- 'Filepath' => array( 'ФайлКиц' ),
- 'Invalidateemail' => array( 'ÐÑ„ кемокÑÑ‚Ð°Ð¼Ñ Ð°Ð´Ñ€ÐµÑÑ‚ÑŒ' ),
- 'Blankpage' => array( 'ШаваЛопа' ),
- 'LinkSearch' => array( 'СюлмафкÑВешендема' ),
- 'DeletedContributions' => array( 'ÐардафПуткÑне' ),
);
$messages = array(
@@ -257,15 +257,6 @@ $messages = array(
'category-file-count-limited' => 'Вага {{PLURAL:$1|файл|$1 файлхт}} Ñ‚Ñ ÐºÐ°Ñ‚ÐµÐ³Ð¾Ñ€Ð¸ÐµÑа.',
'listingcontinuesabbrev' => 'полаткÑоц',
-'mainpagetext' => "'''МедиаВикить арафтозь лац.'''",
-'mainpagedocfooter' => 'Ванк [http://meta.wikimedia.org/wiki/Help:Contents ВетÑмовал Тиинди] Ñ‚ÑÑа ули кода ÑÐ¾Ð´Ð°Ð¼Ñ Ð’Ð¸ÐºÐ¸ програпнень ÑÑ€ÑвикÑнень колга.
-
-== ЭрÑÐ²Ð¸ÐºÑ ÑюлмафкÑне ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings ВаÑьфневи арафнематнень кÑрькÑÑÑŒ]
-* [http://www.mediawiki.org/wiki/Manual:FAQ МедиаВикить СидеÑта Кеподеви КизефкÑне]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce МедиаВикить од верзиÑтнень колга кулÑнь пачфтема]',
-
'about' => 'Колганза',
'article' => 'Сёрматфть потмонц лопац',
'newwindow' => '(панчÑеви од вальмаÑа)',
@@ -314,7 +305,6 @@ $messages = array(
'history' => 'Лопань полафнемат',
'history_short' => 'Ðтай полафнемат',
'updatedmarker' => 'мекольце Ñашендомазень меле полафтовÑÑŒ',
-'info_short' => 'Информацие',
'printableversion' => 'Лихтеви верзие',
'permalink' => 'Ялань ÑюлмафкÑ',
'print' => 'ÐолдамÑ',
@@ -491,12 +481,11 @@ $messages = array(
'protectedpagetext' => 'Ð¢Ñ Ð»Ð¾Ð¿Ð°Ñ Ñувама пÑкÑтаф лопань петнема кардамать Ñюнеда.',
'viewsourcetext' => 'Тейть ули кода Ð²Ð°Ð½Ð¾Ð¼Ñ Ñди копиÑÐ¼Ñ Ñ‚Ñ Ð»Ð¾Ð¿Ð°Ñ‚ÑŒ лиÑьмоц:',
'protectedinterface' => 'Ð¢Ñ Ð»Ð¾Ð¿Ð°Ñа ащи лопать ванфонц програмонь текÑтоц, Ñон пÑкÑтаф кальдÑв тевда араламать Ñюнеда.',
-'editinginterface' => "'''Инголе кардама:''' Тон петнеÑак лопать конань ÑÑа ащи лопать ванфонц програмонь текÑтоц. Петнематне полафтÑазь Ñонь ванфоц кода Ñон нÑеви Ð¸Ð»Ñ Ñ‚Ð¸Ð¸Ñ…Ð½ÐµÐ½Ð´Ð¸. Ðтафтома тиеманкÑа ÑнÑльттÑма Ð²Ð°Ð½Ð¾Ð¼Ñ [http://translatewiki.net/wiki/Main_Page?setlang=mdf translatewiki.net] МедиаВикить локализациеть проектть.",
+'editinginterface' => "'''Инголе кардама:''' Тон петнеÑак лопать конань ÑÑа ащи лопать ванфонц програмонь текÑтоц. Петнематне полафтÑазь Ñонь ванфоц кода Ñон нÑеви Ð¸Ð»Ñ Ñ‚Ð¸Ð¸Ñ…Ð½ÐµÐ½Ð´Ð¸. Ðтафтома тиеманкÑа ÑнÑльттÑма Ð²Ð°Ð½Ð¾Ð¼Ñ [//translatewiki.net/wiki/Main_Page?setlang=mdf translatewiki.net] МедиаВикить локализациеть проектть.",
'sqlhidden' => '(SQL Ð²ÐµÑˆÑ„ÐºÑ ÐºÑшф)',
'cascadeprotected' => 'Ð¢Ñ Ð»Ð¾Ð¿Ð°Ñ‚ÑŒ аралазь петнемада ÑÑÑ Ð¼ÐµÑ Ñон Ñувафни {{PLURAL:$1|Ñай лопаÑ, кона путфоль|Ñай лопаÑ, конат путфольхть}} каÑкад араламаÑ:
$2',
'namespaceprotected' => "Тондейть аф мÑрьгови Ð¿ÐµÑ‚Ð½ÐµÐ¼Ñ Ð»Ð¾Ð¿Ð°Ñ‚Ð½Ðµ '''$1''' лепнень мархта.",
-'customcssjsprotected' => 'Тондейть аф мÑрьгови Ð¿ÐµÑ‚Ð½ÐµÐ¼Ñ Ñ‚Ñ Ð»Ð¾Ð¿Ð°Ñ‚ÑŒ ÑÑÑ Ð¼ÐµÑ Ñ‚ÑÑа улихть Ð¸Ð»Ñ Ñ‚Ð¸Ð¸Ñ‚ÑŒ латцеманза.',
'ns-specialprotected' => '{{ns:special}} лепнень мархта лопатне аф петневихть.',
'titleprotected' => "[[User:$1|$1]] кардазь Ñ‚Ñ Ð»ÐµÐ¼ÑÑŒ мархта лопа тиемать.
ТуфталÑÑŒ ''$2''.",
@@ -544,7 +533,7 @@ $2',
'nosuchuser' => 'ТииÑÑŒ "$1" лемÑа аш.
Ванк, улема, тон Ñёрмадыть лемть аф лац.
ИлÑÐºÑ Ñ‚Ð¾Ð½Ð´ÐµÐ¹Ñ‚ÑŒ ÑÑ€Ñви [[Special:UserLogin/signup|ÑÑ‘Ñ€Ð¼Ð°Ñ‚Ñ„Ñ‚Ð¾Ð¼Ñ Ð¾Ð´ÑƒÐºÑ]].',
-'nosuchusershort' => 'ТииÑÑŒ "<nowiki>$1</nowiki>" лемÑа аш. Ванк, улема, тон Ñёрмадыть лемть аф лац.',
+'nosuchusershort' => 'ТииÑÑŒ "$1" лемÑа аш. Ванк, улема, тон Ñёрмадыть лемть аф лац.',
'nouserspecified' => 'Тиить лемÑÑŒ ÑÑ€Ñви.',
'wrongpassword' => 'Сувама валÑÑŒ Ñёрматф аф лац. Варжак тага веÑÑ‚ÑŒ.',
'wrongpasswordempty' => 'Сувама валÑÑŒ кадовÑÑŒ апак Ñёрматк. Сёрматк одукÑ.',
@@ -581,7 +570,7 @@ $2',
ЭнÑльттÑма, учт аф Ð»Ð°Ð¼Ð¾Ñ Ñ‚Ð°Ð³Ð° веÑÑ‚ÑŒ Ñ‚ÑÑ€Ñфтома инголе.',
'loginlanguagelabel' => 'КÑль: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ÐŸÐ¾Ð»Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ñувама валцень',
'resetpass_announce' => 'Тон Ñувать ёткопингонь Ñувама валть вельде кона ÑаÑÑŒ Ñлектрононь адреÑозот. Сувама аделаманди тондейть ÑÑ€Ñви Ð¿ÑƒÑ‚Ð¾Ð¼Ñ Ñ‚Ñзк од Ñувама вал:',
'resetpass_header' => 'ÐŸÐ¾Ð»Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ñувама валцень',
@@ -608,8 +597,6 @@ $2',
'extlink_tip' => 'Ушеширень ÑÑŽÐ»Ð¼Ð°Ñ„ÐºÑ (киртть мÑльÑа http:// инголькÑ)',
'headline_sample' => 'КонÑкÑÑонь валхне',
'headline_tip' => '2-це аÑьколкÑонь конÑкÑ',
-'math_sample' => 'Ð¡ÑƒÐ²Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ñ‚Ñзк формула',
-'math_tip' => 'Математиконь формула (LaTeX)',
'nowiki_sample' => 'Ð¡ÑƒÐ²Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ñ‚Ñзк форматфтома текÑÑ‚',
'nowiki_tip' => 'ÐÑƒÐ»Ð³Ð¾Ð´ÐµÐ¼Ñ Ð’Ð¸ÐºÐ¸Ñ‚ÑŒ текÑÑ‚ латцемаÑÑŒ',
'image_tip' => 'Путф медиа файлÑÑŒ',
@@ -691,7 +678,7 @@ $2',
Тондейть ули кода [[Special:Search/{{PAGENAME}}|Ð²ÐµÑˆÐµÐ½Ð´ÐµÐ¼Ñ Ñ‚Ñ Ð»Ð¾Ð¿Ð°Ñ‚ÑŒ конÑкÑонц]] Ð¸Ð»Ñ Ð»Ð¾Ð¿Ð°Ð²Ð°,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Ð²ÐµÑˆÐµÐ½Ð´ÐµÐ¼Ñ Ð¼Ð°Ð»Ð°Ð´Ñ‹ лувомава],
Ñли [{{fullurl:{{FULLPAGENAME}}|action=edit}} Ð¿ÐµÑ‚Ð½ÐµÐ¼Ñ Ñ‚Ñ Ð»Ð¾Ð¿Ð°Ñ‚ÑŒ]</span>.',
-'userpage-userdoesnotexist' => 'СёрматфтомаÑÑŒ «$1» лемÑа аш. ÐрьÑек лацкаÑта, Ð°Ñ„ÐºÑƒÐºÑ Ñ‚Ð¾Ð½ÑŒ улендÑÑ€Ñй мÑльце Ñ‚Ð¸ÐµÐ¼Ñ Ñли Ð¿Ð¾Ð»Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ñ‚Ñ Ð»Ð¾Ð¿Ð°Ñ‚ÑŒ.',
+'userpage-userdoesnotexist' => 'СёрматфтомаÑÑŒ «<nowiki>$1</nowiki>» лемÑа аш. ÐрьÑек лацкаÑта, Ð°Ñ„ÐºÑƒÐºÑ Ñ‚Ð¾Ð½ÑŒ улендÑÑ€Ñй мÑльце Ñ‚Ð¸ÐµÐ¼Ñ Ñли Ð¿Ð¾Ð»Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ñ‚Ñ Ð»Ð¾Ð¿Ð°Ñ‚ÑŒ.',
'clearyourcache' => "'''Шарфтк мÑльце:''' Ванфтомада меле од полафнематнень ваноманкÑа тондейть ÑÑ€Ñви Ð½Ð°Ñ€Ð´Ð°Ð¼Ñ ÑÑлек ванфневи файлхнень тонь интернет полаткÑонь вальмаÑтонза. '''Mozilla / Firefox / Safari:''' ''Shift'' кирдезь, люпштак ''Reload'', Ñли люпштак ''Ctrl-Shift-F5'' Ñли ''Ctrl-R'' (''Command-Shift-R'' Mac машинаÑа); '''Konqueror: '''люпштак ''Reload'' Ñли люпштак ''F5;'' '''Opera:''' програмÑа тондейть ÑÑ€ÑвкÑÑ‚Ñ‹ Ð½Ð°Ñ€Ð´Ð°Ð¼Ñ Ñембе ÑÑлек ванфневи файлхт ''Tools→Preferences'' вельде; '' '''Internet Explorer:''' ''Ctrl'' кирдезь люпштакшнек ''Refresh'' Ñли люпштак ''Ctrl-F5.''",
'usercssyoucanpreview' => "'''ÐœÑлень макÑома:''' Ванфтомада инголе нолдак Ñ‚ÐµÐ²Ñ 'ВаÑень нÑфтема' пунÑÑ‚ÑŒ тонь од CSS Ñли JS файлть варжаманкÑа.",
'userjsyoucanpreview' => "'''ÐœÑлень макÑома:''' Ванфтомада инголе нолдак Ñ‚ÐµÐ²Ñ 'ВаÑень нÑфтема' пунÑÑ‚ÑŒ тонь од CSS Ñли JS файлть варжаманкÑа.",
@@ -998,7 +985,6 @@ $3 макÑÑÑŒ туфталÑÑŒ - ''$2''",
'changepassword' => 'Сувама валть полафтомÑ',
'prefs-skin' => 'Ванфонь латцема',
'skin-preview' => 'ВаÑень нÑфтема',
-'prefs-math' => 'ÐÑÑ„Ñ‚ÐµÐ¼Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»Ð°Ñ‚',
'datedefault' => 'Ðпак полафтт',
'prefs-datetime' => 'Ши ди пинге',
'prefs-personal' => 'Тиить колга',
@@ -1019,8 +1005,6 @@ $3 макÑÑÑŒ туфталÑÑŒ - ''$2''",
'columns' => 'Орват (ÑтолбанÑÑ‚):',
'searchresultshead' => 'Вешендема',
'resultsperpage' => 'МуфкÑÑ‚ Ñ„ÐºÑ Ð»Ð¾Ð¿Ð°Ñа:',
-'contextlines' => 'КикÑÑ‚ (Ñтрочкат) Ñ„ÐºÑ Ð¼ÑƒÑ„ÐºÑÑа:',
-'contextchars' => 'КонтекÑÑ‚ Ñ‚ÑштькÑÑ‚ Ñ„ÐºÑ ÐºÐ¸ÐºÑа:',
'stub-threshold' => 'ОторÑÑŒ (лимитÑÑŒ) <a href="#" class="stub">-нь керф ÑюлмафкÑнень</a> латцемаÑнонды (байтт):',
'recentchangesdays' => 'МъзÑра шит нÑÑ„Ñ‚ÐµÐ¼Ñ Ð¼ÐµÐºÐ¾Ð»ÑŒÑ†Ðµ полафнемаÑа:',
'recentchangesdays-max' => '(макÑимум $1 {{PLURAL:$1|ши|шит}})',
@@ -1326,9 +1310,6 @@ $3 макÑÑÑŒ туфталÑÑŒ - ''$2''",
'upload-maxfilesize' => 'МакÑимум файлонь кувалмоц: $1',
'watchthisupload' => 'Ð’Ð°Ð½Ð¾Ð¼Ñ Ñ‚Ñ Ñ„Ð°Ð¹Ð»Ñ‚ÑŒ мельге',
'filewasdeleted' => 'Файл Ñ‚Ñка лемÑа тонгозь ни ди меле нардазь. Тондейть пароль Ð²Ð°Ð½Ð¾Ð¼Ñ $1 Ñ‚Ñ Ñ„Ð°Ð¹Ð»Ñ‚ÑŒ тонгодемац инголе.',
-'upload-wasdeleted' => "'''Инголе кардама: Файл, кона тон тонгодьÑа нардафоль ни.'''
-
-ЛацкаÑта арьÑек Ð°Ñ„ÐºÑƒÐºÑ Ñ‚Ð¾Ð½ÑŒ ули мÑльце Ñонь тонгомонза Ñли аф. Ðардама лувома информациеÑÑŒ Ñ‚ÑÑа:",
'filename-bad-prefix' => "Тон тонгодьÑак файл конань лемоц ушеды '''\"\$1\"'''-Ñа. Стапт лепне лувовихть мезеньге аф колга Ð°Ð·Ð¾Ð½Ð´Ð¾Ð²Ð¸ÐºÑ ÑÑÑ Ð¼ÐµÑ Ñинь ÑÑÑŒ макÑÑевихть Ñ‚ÑшкÑкамераÑа тиф фотоархтофкÑненди (цифра камераÑа). ÐрьÑек Ð¸Ð»Ñ Ð»ÐµÐ¼, конаÑа ащель информациеда лама.",
'upload-success-subj' => 'ТонгодемаÑÑŒ ётаÑÑŒ лац',
@@ -1389,7 +1370,6 @@ $3 макÑÑÑŒ туфталÑÑŒ - ''$2''",
Вага Ñ‚ÑÑа [[Special:WhatLinksHere/$2|пÑшкÑе лувомаÑÑŒ]].',
'nolinkstoimage' => 'Лопат Ñюлмафт Ñ‚Ñ Ñ„Ð°Ð¹Ð»Ñ‚ÑŒ мархта ашет.',
'morelinkstoimage' => 'Ванк [[Special:WhatLinksHere/$1|ÑÑда лама ÑюлмафкÑÑ‚]] Ñ‚Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð½Ð´Ð¸.',
-'redirectstofile' => 'Сай {{PLURAL:$1|файлÑÑŒ шашфтфоль|$1 файлхне шашфтфольхть}} Ñ‚Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð½Ð´Ð¸:',
'duplicatesoffile' => 'Сай {{PLURAL:$1|файлÑÑŒ ащи кафонзафкÑокÑ|$1 файлхне ащихть кафонзафкÑокÑ}} Ñ‚Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð½Ð´Ð¸ ([[Special:FileDuplicateSearch/$2|ÑÑда лама информацие]]):',
'sharedupload' => 'Ð¢Ñ Ñ„Ð°Ð¹Ð»ÑÑŒ $1Ñта ди Ñонь ули кода ÑÑƒÐ²Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ð¸Ð»Ñ Ð¿Ñ€Ð¾ÐµÐºÑ‚Ñ.',
'uploadnewversion-linktext' => 'Ð¢Ð¾Ð½Ð³Ð¾Ð´ÐµÐ¼Ñ Ñ‚Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð½ÑŒ од верзиенц',
@@ -1664,12 +1644,10 @@ $3 макÑÑÑŒ туфталÑÑŒ - ''$2''",
'watchlistanontext' => '$1 тонь ванома мельгеваномаÑта лопат ваноманкÑа Ñли петнеманкÑа.',
'watchnologin' => 'Ðпак Ñувак',
'watchnologintext' => 'Тондейть ÑÑ€Ñви [[Special:UserLogin|ÑувамÑ]] тонь мельгеваномацень петнеманкÑа.',
-'addedwatch' => 'Полатфоль ванома мельгеваномазот',
'addedwatchtext' => "ЛопаÑÑŒ \"[[:\$1]]\" Ñувафнезь тонь [[Special:Watchlist|МельгеваномаÑот]].
СÑда тов Ñ‚Ñ Ð»Ð¾Ð¿Ð°Ñ‚ÑŒ ди мархтонза Ñюлмаф Корхнема лопать полафнематне кармайхть Ñ‚ÑкшÑтафтовома Ñ‚Ñ Ð»ÑƒÐ²Ð¾Ð¼Ð°Ñ, ÑÑда тёждÑень нÑевомаÑнонды Ñинь тага кармайхть Ñёрмадовома [[Special:RecentChanges|мекольце полафнематнень лувомаÑ]] '''Ñчке Ñ‚ÑшкÑÑа'''.
УлендÑÑ€Ñй тонь мÑльце Ñ‚Ñ Ð»Ð¾Ð¿Ð°Ñ‚ÑŒ Ð½Ð°Ñ€Ð´Ð°Ð¼Ñ Ñ‚Ð¾Ð½ÑŒ мельгеваномаÑтот, люпштак \"аф Ð²Ð°Ð½Ð¾Ð¼Ñ Ð¼ÐµÐ»ÑŒÐ³Ðµ\" лопань вÑрдень виде ужеÑа.",
-'removedwatch' => 'Ðардаф мельгеваномаÑта',
'removedwatchtext' => 'ЛопаÑÑŒ "[[:$1]]" нардафоль [[Special:Watchlist|тонь мельгеванома лувомаÑтот]].',
'watch' => 'Ватт мельге',
'watchthispage' => 'Ð’Ð°Ð½Ð¾Ð¼Ñ Ñ‚Ñ Ð»Ð¾Ð¿Ð°Ñ‚ÑŒ мельге',
@@ -1722,13 +1700,13 @@ $NEWPAGE
--
Тонь мельгеваномацень латцемаÑна полафтоманкÑа Ñашентт
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Лопать тонь мельгеваномаÑтот нардаманди Ñашентт
$UNWATCHURL
Ðзома мекпÑли ди Ð¸Ð»Ñ Ð»ÐµÐ·ÐºÑ:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'ÐÐ°Ñ€Ð´Ð°Ð¼Ñ Ð»Ð¾Ð¿Ð°Ñ‚ÑŒ',
@@ -1743,7 +1721,7 @@ $UNWATCHURL
'confirmdeletetext' => 'Тон Ñърхкать Ð½Ð°Ñ€Ð´Ð°Ð¼Ñ Ð»Ð¾Ð¿Ð°Ñ‚ÑŒ Ñембе Ñонь иÑториÑнц мархта.
ЭнÑльттÑма, кемокÑтак тон Ð°Ñ„ÐºÑƒÐºÑ Ñ‘Ñ€Ð°Ñ‚ Ñ‚Ñнь тиемÑ, Ñди тон шарьхкодьÑак мезе лиÑи Ñ‚Ñда меле, ди тон Ñембе Ñ‚Ñнь тиÑак [[{{MediaWiki:Policy-url}}|политик]] корÑÑ.',
'actioncomplete' => 'Тевонь тиемаÑÑŒ анок',
-'deletedtext' => 'ЛопаÑÑŒ "<nowiki>$1</nowiki>" нардафоль. Ванк $2 мекольце нардаматнень нÑфтеманкÑа.',
+'deletedtext' => 'ЛопаÑÑŒ "$1" нардафоль. Ванк $2 мекольце нардаматнень нÑфтеманкÑа.',
'deletedarticle' => 'нардаф "[[$1]]"',
'suppressedarticle' => 'кÑшф "[[$1]]"',
'dellogpage' => 'Ðардамань лувома',
@@ -1792,7 +1770,7 @@ $UNWATCHURL
'protectexpiry' => 'Шумордави:',
'protect_expiry_invalid' => 'Шумордама пинге аф кондÑÑти.',
'protect_expiry_old' => 'Шумордама пингÑÑŒ ётаÑÑŒ.',
-'protect-text' => "Тондейть ули кода Ñ‚ÑÑа Ð²Ð°Ð½Ð¾Ð¼Ñ Ñди Ð¿Ð¾Ð»Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ð°Ñ€Ð°Ð»Ð°Ð¼Ð° виенц '''<nowiki>$1</nowiki>''' лопанди.",
+'protect-text' => "Тондейть ули кода Ñ‚ÑÑа Ð²Ð°Ð½Ð¾Ð¼Ñ Ñди Ð¿Ð¾Ð»Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ð°Ñ€Ð°Ð»Ð°Ð¼Ð° виенц '''$1''' лопанди.",
'protect-locked-blocked' => "Ðш кода Ð¿Ð¾Ð»Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ð°Ñ€Ð°Ð»Ð°Ð¼Ð°Ñ‚ÑŒ виенц Ñёлгома пингÑта. Лопать Ñ‚Ñниень латцеманза Ñ‚ÑÑот '''$1''':",
'protect-locked-dblock' => "Ðш кода Ð¿Ð¾Ð»Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ð°Ñ€Ð°Ð»Ð°Ð¼Ð°Ñ‚ÑŒ виенц датабазонь пÑкÑтамать Ñюнеда.
Лопать Ñ‚Ñниень латцеманза Ñ‚ÑÑот '''$1''':",
@@ -1935,7 +1913,6 @@ $1',
'blockiptext' => 'ЭрÑви Ð½Ð¾Ð»Ð´Ð°Ð¼Ñ Ñ‚ÐµÐ²Ñ Ñ„Ð¾Ñ€Ð¼ ала башка IP адреÑÑта Ñли тиить лем вельде Ñёрмадомань Ñувамать ÑёлгоманкÑа.
Ð¢Ñ ÑÑ€Ñви Ñ‚Ð¸ÐµÐ¼Ñ Ð°Ð½ÑŒÑ†ÐµÐº колендемада аралама туфталонкÑа ди [[{{MediaWiki:Policy-url}}|политик]]-Ñ‚ÑŒ корÑÑ.
Путт туфталть алу (кепотькÑонди, лÑтфнек лопатне конатнень ÑÑа колендеÑÑ‚ÑŒ).',
-'ipaddress' => 'IP адреÑ:',
'ipadressorusername' => 'IP Ð°Ð´Ñ€ÐµÑ Ñли тиить лемоц:',
'ipbexpiry' => 'Сирелгоды:',
'ipbreason' => 'Туфтал:',
@@ -1948,7 +1925,6 @@ $1',
** КальдÑв прÑнь вÑтема/ÑÑлгодома
** Лама Ñёрматфтоматнень покордама
** ÐÑ„ пара тиить лемоц',
-'ipbanononly' => 'Ð¡Ñ‘Ð»Ð³Ð¾Ð¼Ñ Ð°Ð½ÑŒÑ†ÐµÐº лемфтома тиихнень',
'ipbcreateaccount' => 'ÐšÐ°Ñ€Ð´Ð°Ð¼Ñ ÑёрматфтомаÑÑŒ тиема',
'ipbemailban' => 'ÐšÐ°Ñ€Ð´Ð°Ð¼Ñ Ñ‚Ð¸Ð¸Ð½Ð´Ð¸ ÐºÑƒÑ‡ÐµÐ¼Ñ Ñлектрононь Ñёрмат',
'ipbenableautoblock' => 'ЭÑезонза ÑÑ‘Ð»Ð³Ð¾Ð¼Ñ Ñ‚Ñ Ñ‚Ð¸Ð¸Ñ‚ÑŒ мекольце IP адреÑÑ‚ÑŒ Ñди Ð¸Ð»Ñ IP адреÑÑ‚ конань ÑÑта Ñон Ñ‚ÑÑ€Ñфни петнемат тиемÑ',
@@ -1959,7 +1935,6 @@ $1',
'ipbotherreason' => 'ИлÑ/поладомань туфтал:',
'ipbhidename' => 'КÑÑˆÐµÐ¼Ñ Ñ‚Ð¸Ð¸Ñ‚ÑŒ лемоц петнемада ди лувомада',
'ipbwatchuser' => 'Ð’Ð°Ð½Ð¾Ð¼Ñ Ñ‚Ñ Ñ‚Ð¸Ð¸Ñ‚ÑŒ лопанц ди Ñонь корхнема лопанц мельге.',
-'ipballowusertalk' => 'ÐœÑÑ€ÑŒÐ³Ð¾Ð¼Ñ Ñ‚Ñ Ñ‚Ð¸Ð¸Ð½Ð´Ð¸ Ð¿ÐµÑ‚Ð½ÐµÐ¼Ñ ÑÑÑŒ корнема лопанц мъзÑÑ€Ñ Ñон ащи ÑёлкфокÑ',
'ipb-change-block' => 'Ð¡Ñ‘Ð»Ð³Ð¾Ð¼Ñ Ð¾Ð´ÑƒÐºÑ Ñ‚Ñ Ñ‚Ð¸Ð¸Ñ‚ÑŒ Ð½Ñ Ð»Ð°Ñ‚Ñ†ÐµÐ¼Ð°Ñ‚Ð½ÐµÐ½ÑŒ корÑÑ',
'badipaddress' => 'ÐÑ„ кондÑÑти IP адреÑ',
'blockipsuccesssub' => 'Сёлгома ётаÑÑŒ лац',
@@ -1977,12 +1952,7 @@ $1',
'unblocked-id' => '$1-нь Ñёлгомац валхтф',
'ipblocklist' => 'Сёлкф IP адреÑнень Ñди тиинь лепнень лувомаÑÑŒ',
'ipblocklist-legend' => 'ÐœÑƒÐ¼Ñ Ñёлкф тиить',
-'ipblocklist-username' => 'Тиить лемоц Ñли IP адреÑ:',
-'ipblocklist-sh-userblocks' => '$1 Ñёрматфтома Ñёлгоматнень',
-'ipblocklist-sh-tempblocks' => '$1 пингеётконь Ñёлгоматнень',
-'ipblocklist-sh-addressblocks' => '$1 Ñькамонь IP Ñёлгоматнень',
'ipblocklist-submit' => 'Вешендема',
-'blocklistline' => '$1, $2 Ñёлгозь $3 ($4)',
'infiniteblock' => 'пефтома',
'expiringblock' => 'шумордави $1 $2 ойÑта',
'anononlyblock' => 'аньцек лемфтома',
@@ -2002,7 +1972,7 @@ $1',
'reblock-logentry' => 'полафтÑÑŒ Ñёлгома латцематне [[$1]]нди Ñёлгомать Ñирелгодома пинге ули $2 $3',
'blocklogtext' => 'Ð¢Ñ Ð»ÑƒÐ²Ð¾Ð¼Ð°Ñ ÑувÑихть тиихнень Ñембе пÑкÑтамань ди панжемань тефне.
ЭÑÑŒ Ñёлгови IP адреÑне Ñ‚Ñзк аф ÑувÑихть.
-Ванк [[Special:IPBlockList|IP пÑкÑтаматнень лувомать]] Ñ‚Ñниень Ñкамань кардафкÑнень ди пÑкÑтаматнень мархта.',
+Ванк [[Special:BlockList|IP пÑкÑтаматнень лувомать]] Ñ‚Ñниень Ñкамань кардафкÑнень ди пÑкÑтаматнень мархта.',
'unblocklogentry' => 'кардафкÑта нолдазь $1',
'block-log-flags-anononly' => 'аньцек лемфтома тиихне',
'block-log-flags-nocreate' => 'од ÑёрматфтомаÑÑŒ аф тиеви',
@@ -2014,8 +1984,7 @@ $1',
'ipb_expiry_invalid' => 'ÐÑ„ кондÑÑти Ñирелгодома пинге.',
'ipb_expiry_temp' => 'КÑшф тиинь лемть Ñёлгоматне мъзÑрдонга аф полафтовихть.',
'ipb_already_blocked' => '"$1" Ñёлкфоль ни',
-'ipb-needreblock' => '== Сёлкф ни ==
-$1 Ñёлкф ни. ÐœÑльце Ð¿Ð¾Ð»Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ð»Ð°Ñ‚Ñ†ÐµÐ¼Ð°Ñ‚Ð½ÐµÐ½ÑŒ?',
+'ipb-needreblock' => '$1 Ñёлкф ни. ÐœÑльце Ð¿Ð¾Ð»Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ð»Ð°Ñ‚Ñ†ÐµÐ¼Ð°Ñ‚Ð½ÐµÐ½ÑŒ?',
'ipb_cant_unblock' => 'ЭльбÑтькÑ: ID $1-нь кардафкÑоц аф муви. Улема, Ñ‚Ñ ÐºÐ°Ñ€Ð´Ð°Ñ„ÐºÑÑÑŒ валхтфоль ни.',
'ipb_blocked_as_range' => 'ЭльбÑтькÑ: IP $1 аф кардаф видеÑта ди Ñоннеда аш кода кардафкÑÑÑŒ валхтомÑ.
Сон, интай улема, кардафоль кода $2-нь потмонц пакшец, конань Ñзда ули кода кардафкÑонь валхтомÑ.',
@@ -2145,7 +2114,7 @@ $1 Ñёлкф ни. ÐœÑльце Ð¿Ð¾Ð»Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ð»Ð°Ñ‚Ñ†ÐµÐ¼Ð°Ñ‚Ð½ÐµÐ½ÑŒ?',
'allmessagesdefault' => 'Ðпак полафтт текÑÑ‚',
'allmessagescurrent' => 'ТÑниень текÑÑ‚',
'allmessagestext' => 'Ð¢Ñ MediaWiki-Ñа ваÑьфневи ÑиÑтемонь пачфтематнень лувомаÑÑŒ.
-ЭнÑльттÑма, Ñувак [http://www.mediawiki.org/wiki/Localisation MediaWiki ЛокализациеÑ] ди [http://translatewiki.net translatewiki.net-Ñ] кда тонь мÑльце Ñ‚Ð¸ÐµÐ¼Ñ ÑÑÑŒ путкÑце марÑтонь MediaWiki локализациеÑ.',
+ЭнÑльттÑма, Ñувак [//www.mediawiki.org/wiki/Localisation MediaWiki ЛокализациеÑ] ди [//translatewiki.net translatewiki.net-Ñ] кда тонь мÑльце Ñ‚Ð¸ÐµÐ¼Ñ ÑÑÑŒ путкÑце марÑтонь MediaWiki локализациеÑ.',
'allmessagesnotsupportedDB' => "Ð¢Ñ Ð»Ð¾Ð¿Ð°Ñ Ð°Ñˆ кода ÐºÑƒÐ½Ñ†ÐµÐ¼Ñ ÑÑÑ Ð¼ÐµÑ '''\$wgUseDatabaseMessages'''лоткафоль.",
# Thumbnails
@@ -2267,9 +2236,7 @@ $1 Ñёлкф ни. ÐœÑльце Ð¿Ð¾Ð»Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ð»Ð°Ñ‚Ñ†ÐµÐ¼Ð°Ñ‚Ð½ÐµÐ½ÑŒ?',
Лезни Ð¿Ð¾Ð»Ð°Ð´Ð¾Ð¼Ñ Ñ‚ÑƒÑ„Ñ‚Ð°Ð»Ñ…Ñ‚ лихтемать ÑÑ.',
# Metadata
-'nodublincore' => 'Dublin Core RDF метадатаÑÑŒ аф нолдави Ñ‚ÐµÐ²Ñ Ñ‚Ñ Ñерверонди.',
-'nocreativecommons' => 'Creative Commons RDF информациеÑÑŒ аф нолдави Ñ‚ÐµÐ²Ñ Ñ‚Ñ Ñерверонди.',
-'notacceptable' => 'Вики Ñерверонди аш кода макÑÐ¾Ð¼Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸ÐµÑÑŒ Ñтама форматÑа конань ÑÑа тонь клиентти ули кода Ñонь морафтомÑ.',
+'notacceptable' => 'Вики Ñерверонди аш кода макÑÐ¾Ð¼Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸ÐµÑÑŒ Ñтама форматÑа конань ÑÑа тонь клиентти ули кода Ñонь морафтомÑ.',
# Attribution
'anonymous' => 'Лемфтома {{SITENAME}}-нь {{PLURAL:$1|тииÑÑŒ|тиихне}}',
@@ -2290,33 +2257,6 @@ $1 Ñёлкф ни. ÐœÑльце Ð¿Ð¾Ð»Ð°Ñ„Ñ‚Ð¾Ð¼Ñ Ð»Ð°Ñ‚Ñ†ÐµÐ¼Ð°Ñ‚Ð½ÐµÐ½ÑŒ?',
'spam_reverting' => 'Мърдафни мекольце $1-ти ÑюлмафкÑтома верзиеÑ',
'spam_blanking' => 'Сембе илÑкÑтоптомат $1-ти ÑюлмафкÑнень мархта, лоткÑема',
-# Info page
-'infosubtitle' => 'Лопать информациеÑÑŒ',
-'numedits' => 'Петнематнень лувкÑоц (лопа): $1',
-'numtalkedits' => 'Петнематнень лувкÑоц (корхнема лопа): $1',
-'numwatchers' => 'Мельге ваныхнень лувкÑоц: $1',
-'numauthors' => 'Содаф лопань тиихнень лувкÑоц (лопа): $1',
-'numtalkauthors' => 'Содаф лопань тиихнень лувкÑоц (корхнема лопа): $1',
-
-# Math options
-'mw_math_png' => 'Фалу ладÑÐ¼Ñ PNG',
-'mw_math_simple' => 'HTML кда пÑк Ñ‚Ñ‘Ð¶Ð´Ñ Ð¸Ð»ÑÐºÑ PNG',
-'mw_math_html' => 'HTML кда ули кода илÑÐºÑ PNG',
-'mw_math_source' => 'Катк Ñ‚Ñнь кода TeX (текÑтонь вальманди)',
-'mw_math_modern' => 'Пароль Ñ‚Ñниень пингонь Ñодама машинатнень вальмаÑнонды',
-'mw_math_mathml' => 'MathML коÑа ули кода (ÑкÑпериментокÑ)',
-
-# Math errors
-'math_failure' => 'ÐÑ„ морафтови',
-'math_unknown_error' => 'аф Ñодаф ÑльбÑтькÑ',
-'math_unknown_function' => 'аф Ñодаф функцие',
-'math_lexing_error' => 'лекÑиконь ÑльбÑтькÑ',
-'math_syntax_error' => 'ÑинтакÑонь ÑльбÑтькÑ',
-'math_image_error' => 'PNG Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ñ ÑёрматфтомаÑÑŒ изь лиÑев; ватт лац Ñли аф арафтовÑÑ‚ÑŒ latex, dvips, gs Ñди convert',
-'math_bad_tmpdir' => 'ÐÑ„ Ñёрматфтови ётконь математик Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸ÐµÑ Ñди директориеÑÑŒ аф тиеви',
-'math_bad_output' => 'ÐÑ„ Ñёрматфтови нолдамань математик Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸ÐµÑ Ñди директориеÑÑŒ аф тиеви',
-'math_notexvc' => 'Ðолдамань файл texvc изь мув; Ванк math/README ладÑмать колга.',
-
# Patrolling
'markaspatrolleddiff' => 'ТÑÑˆÑ‚ÐµÐ¼Ñ ÐºÐ¾Ð´Ð° патрулень варжаф',
'markaspatrolledtext' => 'ТÑÑˆÑ‚ÐµÐ¼Ñ Ñ‚Ñ Ð»Ð¾Ð¿Ð°Ñ‚ÑŒ кода патрулень варжаф',
@@ -2351,17 +2291,16 @@ $1',
'nextdiff' => 'Од верзиец →',
# Media information
-'mediawarning' => "'''Инголе кардама''': Ð¢Ñ Ñ„Ð°Ð¹Ð»Ñ‚ÑŒ, улема, Ð¿ÐµÐ»ÑŒÐºÑ ÐºÐ¾Ð´.
+'mediawarning' => "'''Инголе кардама''': Ð¢Ñ Ñ„Ð°Ð¹Ð»Ñ‚ÑŒ, улема, Ð¿ÐµÐ»ÑŒÐºÑ ÐºÐ¾Ð´.
Сонь нолдаманза тон колаÑак тонь ÑиÑтемацень.",
-'imagemaxsize' => "ÐрхтофкÑнень келеÑнон оторÑна:<br />''(файлонь шарьхкотьфтема лопатненди)''",
-'thumbsize' => 'Миниатюронь кувалмоц:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|лопа|лопат}}',
-'file-info' => 'файлонь кувалмоц: $1, MIME Ñортоц: $2',
-'file-info-size' => '$1 × $2 пикÑелхть, файлть кувалмоц: $3, MIME Ñорт: $4',
-'file-nohires' => '<small>СÑда лама анцÑйнÑтнень мархта Ð°Ñ€Ñ…Ñ‚Ð¾Ñ„ÐºÑ Ð°Ñˆ.</small>',
-'svg-long-desc' => 'SVG файл, $1 × $2 пикÑельхть, file файлть кувалмоц: $3',
-'show-big-image' => 'ÐÑÑ„Ñ‚ÐµÐ¼Ñ Ð¿ÑшкÑе кувалмонц',
-'show-big-image-thumb' => '<small>СÑдынголе ваномать кувалмоц: $1 × $2 пикÑелхть</small>',
+'imagemaxsize' => "ÐрхтофкÑнень келеÑнон оторÑна:<br />''(файлонь шарьхкотьфтема лопатненди)''",
+'thumbsize' => 'Миниатюронь кувалмоц:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|лопа|лопат}}',
+'file-info' => 'файлонь кувалмоц: $1, MIME Ñортоц: $2',
+'file-info-size' => '$1 × $2 пикÑелхть, файлть кувалмоц: $3, MIME Ñорт: $4',
+'file-nohires' => '<small>СÑда лама анцÑйнÑтнень мархта Ð°Ñ€Ñ…Ñ‚Ð¾Ñ„ÐºÑ Ð°Ñˆ.</small>',
+'svg-long-desc' => 'SVG файл, $1 × $2 пикÑельхть, file файлть кувалмоц: $3',
+'show-big-image' => 'ÐÑÑ„Ñ‚ÐµÐ¼Ñ Ð¿ÑшкÑе кувалмонц',
# Special:NewFiles
'newimages' => 'Од файлхнень пърдафкÑ',
@@ -2393,7 +2332,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Келец',
@@ -2408,13 +2353,11 @@ $1',
'exif-ycbcrpositioning' => 'Y ди C арафтомаÑна',
'exif-xresolution' => 'Горизонталень Ñидец',
'exif-yresolution' => 'Вертикалень Ñидец',
-'exif-resolutionunit' => 'X ди Y ÑидеÑнон ункÑтама Ñ‚ÑшкÑне',
'exif-stripoffsets' => 'Ðрхтома информациеть ваÑтоц',
'exif-rowsperstrip' => 'КурнÑтнень луфкÑÑна Ñ„ÐºÑ ÐºÐ¸ÐºÑÑ',
'exif-stripbytecounts' => 'Байтт Ñ„ÐºÑ ÐºÐ¾Ð¼Ð¿Ñ€ÐµÐ·Ð¸ÑÑ„Ñ‚Ñ„ китькÑÑ',
'exif-jpeginterchangeformat' => 'JPEG SOI-нди офÑетÑÑŒ',
'exif-jpeginterchangeformatlength' => 'JPEG информациень байтт',
-'exif-transferfunction' => 'Пачфтема функциеÑÑŒ',
'exif-whitepoint' => 'Ðкша корÑÑ ÑƒÐ½ÐºÑтамаÑÑŒ',
'exif-primarychromaticities' => 'ВаÑень Ñ‚ÑŽÑнень ункÑтамаÑÑŒ',
'exif-ycbcrcoefficients' => 'Ð¢ÑŽÑ Ñ‘Ñ‚ÐºÐ½ÐµÐ½ÑŒ илÑкÑтомома кепотькÑÑ‚ÑŒ коефициентоц',
@@ -2433,7 +2376,6 @@ $1',
'exif-compressedbitsperpixel' => 'ÐрхтофкÑонь компрезийамаÑÑŒ',
'exif-pixelydimension' => 'КондÑÑти архтофкÑонь келец',
'exif-pixelxdimension' => 'КондÑÑти архтофкÑонь Ñерец',
-'exif-makernote' => 'Ðолдайть Ñ‚ÑштькÑонза',
'exif-usercomment' => 'Тиить Ñ‚ÑштькÑонза',
'exif-relatedsoundfile' => 'Сотф аудио файлÑÑŒ',
'exif-datetimeoriginal' => 'Шинь тиевомать шиÑÑŒ ди пингÑÑŒ',
@@ -2447,7 +2389,6 @@ $1',
'exif-exposureprogram' => 'ЭкÑпозициень програмÑÑŒ',
'exif-spectralsensitivity' => 'Спектрань марьÑемаÑÑŒ',
'exif-isospeedratings' => 'ISO курокÑшинь пÑлькÑнемаÑÑŒ',
-'exif-oecf' => 'ОптоÑлектрононь конверзиеть факторÑÑŒ',
'exif-shutterspeedvalue' => 'Эрьхтема таваткÑонь курокÑшиÑÑŒ',
'exif-aperturevalue' => 'ÐпертурÑÑŒ',
'exif-brightnessvalue' => 'ВалдокÑши',
@@ -2460,7 +2401,6 @@ $1',
'exif-focallength' => 'Линзатнень фокуÑÑнон ётканза',
'exif-subjectarea' => 'Субъектонь ваÑÑ‚ÑÑŒ',
'exif-flashenergy' => 'КьфчÑдефкÑонь Ñрьгац',
-'exif-spatialfrequencyresponse' => 'Ушепотма Ñидешинь карактериÑтикÑÑŒ',
'exif-focalplanexresolution' => 'ФокуÑонь ён X Ñидец',
'exif-focalplaneyresolution' => 'ФокуÑонь ён Y Ñидец',
'exif-focalplaneresolutionunit' => 'ФокуÑонь ён Ñиденц ункÑтамаÑÑŒ',
@@ -2469,7 +2409,6 @@ $1',
'exif-sensingmethod' => 'МарьÑема методÑÑŒ',
'exif-filesource' => 'Файлонь лиÑьмоц',
'exif-scenetype' => 'ЭрьхтефкÑонь нÑйфÑÑŒ',
-'exif-cfapattern' => 'CFA шаблон',
'exif-customrendered' => 'Кърдань ÑрьхтефкÑонь латцемаÑÑŒ',
'exif-exposuremode' => 'ЭкÑпозициень режимÑÑŒ',
'exif-whitebalance' => 'Ðкша Ñ‚ÑŽÑонь баланÑоц',
@@ -2660,14 +2599,12 @@ $1',
# External editor support
'edit-externally' => 'ÐŸÐµÑ‚Ð½ÐµÐ¼Ñ Ñ‚Ñ Ñ„Ð°Ð¹Ð»Ñ‚ÑŒ ушеширень програмонь вельде',
-'edit-externally-help' => '(Ванк [http://www.mediawiki.org/wiki/Manual:External_editors арафнемань вÑтемовалÑÑŒ] ÑÑда лама ÑодаманкÑа)',
+'edit-externally-help' => '(Ванк [//www.mediawiki.org/wiki/Manual:External_editors арафнемань вÑтемовалÑÑŒ] ÑÑда лама ÑодаманкÑа)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Ñембе',
-'imagelistall' => 'Ñембе',
-'watchlistall2' => 'Ñембе',
-'namespacesall' => 'Ñембе',
-'monthsall' => 'Ñембе',
+'watchlistall2' => 'Ñембе',
+'namespacesall' => 'Ñембе',
+'monthsall' => 'Ñембе',
# E-mail address confirmation
'confirmemail' => 'КемоÑÑ‚Ð°Ð¼Ñ Ñлектрононь адреÑÑ‚ÑŒ',
@@ -2772,7 +2709,7 @@ $1',
'watchlistedit-normal-legend' => 'ÐÐ°Ñ€Ð´Ð°Ð¼Ñ ÐºÐ¾Ð½ÑкÑÑ‚ мельгеваномаÑта',
'watchlistedit-normal-explain' => 'Тонь мельгеваномаÑа конÑкÑне нÑфтьфт ала.
КонÑкÑонь нардаманди, путт Ñ‚Ñште куднÑÑ Ñонь вакÑÑа ди люпштак ÐÐ°Ñ€Ð´Ð°Ð¼Ñ ÐºÐ¾Ð½ÑкÑÑ‚.
-Тондейть ули кода [[Special:Watchlist/raw|Ð¿ÐµÑ‚Ð½ÐµÐ¼Ñ Ð¸ÑˆÐµ лувомать]].',
+Тондейть ули кода [[Special:EditWatchlist/raw|Ð¿ÐµÑ‚Ð½ÐµÐ¼Ñ Ð¸ÑˆÐµ лувомать]].',
'watchlistedit-normal-submit' => 'ÐÐ°Ñ€Ð´Ð°Ð¼Ñ ÐºÐ¾Ð½ÑкÑне',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 нардаф|$1 нардафт}} тонь мельгеваномаÑтот:',
'watchlistedit-raw-title' => 'ÐŸÐµÑ‚Ð½ÐµÐ¼Ñ Ð¸ÑˆÐµ мельгеваномать',
@@ -2780,7 +2717,7 @@ $1',
'watchlistedit-raw-explain' => 'КонÑкÑне тонь мельгеваномаÑтот нÑфтьфт ала, Ñинь улихть кода Ð¿ÐµÑ‚Ð½ÐµÐ¼Ñ Ð»ÑƒÐ²Ð¾Ð¼Ð°Ñ Ð¿Ð¾Ð»Ð°Ð´Ð¾Ð¼Ð°Ñ‚ÑŒ Ñли лувомаÑта нардамать вельде;
Ñ„ÐºÑ ÐºÐ¾Ð½ÑÐºÑ ÐºÐ¸ÐºÑÑ.
Ðделамда меле люпштак ÐžÐ´Ð¾Ð½Ð·Ð°Ð¼Ñ ÐœÐµÐ»ÑŒÐ³ÐµÐ²Ð°Ð½Ð¾Ð¼Ð°Ñ‚ÑŒ.
-Тондейть тага ули кода [[Special:Watchlist/edit|ÐºÑƒÐ½Ñ†ÐµÐ¼Ñ ÐºÑŠÑ€Ð´Ð°Ð½ÑŒ петнема лезкÑÑ‚ÑŒ]].',
+Тондейть тага ули кода [[Special:EditWatchlist|ÐºÑƒÐ½Ñ†ÐµÐ¼Ñ ÐºÑŠÑ€Ð´Ð°Ð½ÑŒ петнема лезкÑÑ‚ÑŒ]].',
'watchlistedit-raw-titles' => 'КонÑкÑÑ‚:',
'watchlistedit-raw-submit' => 'ÐžÐ´Ð¾Ð½Ð·Ð°Ð¼Ñ Ð¼ÐµÐ»ÑŒÐ³ÐµÐ²Ð°Ð½Ð¾Ð¼Ð°Ñ‚ÑŒ',
'watchlistedit-raw-done' => 'Тонь мельгованомацень одонзафоль.',
@@ -2797,25 +2734,24 @@ $1',
'duplicate-defaultsort' => 'Инголе мÑрьгома: Ðпак полафтт Ñортонь панжема "$2" апак полафтт Ñортонь панжема "$1"да вÑре.',
# Special:Version
-'version' => 'MediaWiki-ть верзиец',
-'version-extensions' => 'Ðолдаф Ñ‚ÐµÐ²Ñ ÐºÐµÐ»ÐµÐ¿Ð½ÐµÐ¼Ð°Ñ‚Ð½Ðµ',
-'version-specialpages' => 'Башка тевонь лопат',
-'version-parserhooks' => 'Ð¡Ð¸Ð½Ñ‚Ð°ÐºÑ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð¾Ð½ÑŒ кÑрьмодихне',
-'version-variables' => 'Пингоннет',
-'version-other' => 'ИлÑ',
-'version-mediahandlers' => 'Медиа файлхнень ладÑмат',
-'version-hooks' => 'КÑрьмодихне',
-'version-extension-functions' => 'Келептема функциенза',
-'version-parser-extensiontags' => 'Ðнализаторонь келептема кодонза',
-'version-parser-function-hooks' => 'СинтакÑонь анализаторть функциензон кÑрьмодихне',
-'version-skin-extension-functions' => 'Темонь келептема функциеÑна',
-'version-hook-name' => 'КÑрьмодинь лемоц',
-'version-hook-subscribedby' => 'СёрматфтÑÑŒ',
-'version-version' => '(Верзие $1)',
-'version-license' => 'Лицензие',
-'version-software' => 'Ðолдаф програпне',
-'version-software-product' => 'ÐолдафкÑ',
-'version-software-version' => 'Верзие',
+'version' => 'MediaWiki-ть верзиец',
+'version-extensions' => 'Ðолдаф Ñ‚ÐµÐ²Ñ ÐºÐµÐ»ÐµÐ¿Ð½ÐµÐ¼Ð°Ñ‚Ð½Ðµ',
+'version-specialpages' => 'Башка тевонь лопат',
+'version-parserhooks' => 'Ð¡Ð¸Ð½Ñ‚Ð°ÐºÑ Ð°Ð½Ð°Ð»Ð¸Ð·Ð°Ñ‚Ð¾Ñ€Ð¾Ð½ÑŒ кÑрьмодихне',
+'version-variables' => 'Пингоннет',
+'version-other' => 'ИлÑ',
+'version-mediahandlers' => 'Медиа файлхнень ладÑмат',
+'version-hooks' => 'КÑрьмодихне',
+'version-extension-functions' => 'Келептема функциенза',
+'version-parser-extensiontags' => 'Ðнализаторонь келептема кодонза',
+'version-parser-function-hooks' => 'СинтакÑонь анализаторть функциензон кÑрьмодихне',
+'version-hook-name' => 'КÑрьмодинь лемоц',
+'version-hook-subscribedby' => 'СёрматфтÑÑŒ',
+'version-version' => '(Верзие $1)',
+'version-license' => 'Лицензие',
+'version-software' => 'Ðолдаф програпне',
+'version-software-product' => 'ÐолдафкÑ',
+'version-software-version' => 'Верзие',
# Special:FilePath
'filepath' => 'Файлти Ñн',
@@ -2826,9 +2762,7 @@ $1',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Ð’ÐµÑˆÐµÐ½Ð´ÐµÐ¼Ñ ÐºÐ°Ñ„Ð¾Ð½Ð·Ð°Ñ„ файлхне',
-'fileduplicatesearch-summary' => 'Ð’ÐµÑˆÐµÐ½Ð´ÐµÐ¼Ñ ÐºÐ°Ñ„Ð¾Ð½Ð·Ð°Ñ„ файлхнень Ñ…Ñш-кодонь Ð»ÑƒÐ²ÐºÑ ÐºÐ¾Ñ€ÑÑ.
-
-Сёрматт файллем "{{ns:file}}:" валынголькÑфтома.',
+'fileduplicatesearch-summary' => 'Ð’ÐµÑˆÐµÐ½Ð´ÐµÐ¼Ñ ÐºÐ°Ñ„Ð¾Ð½Ð·Ð°Ñ„ файлхнень Ñ…Ñш-кодонь Ð»ÑƒÐ²ÐºÑ ÐºÐ¾Ñ€ÑÑ.',
'fileduplicatesearch-legend' => 'Ð’ÐµÑˆÐµÐ½Ð´ÐµÐ¼Ñ ÐºÐ°Ñ„Ð¾Ð½Ð·Ð°Ñ„ÐºÑ',
'fileduplicatesearch-filename' => 'Файллем:',
'fileduplicatesearch-submit' => 'ВешендемÑ',
diff --git a/languages/messages/MessagesMg.php b/languages/messages/MessagesMg.php
index 3f7d3dd2..d14b4cfa 100644
--- a/languages/messages/MessagesMg.php
+++ b/languages/messages/MessagesMg.php
@@ -123,94 +123,94 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Fihodinana_miroa' ),
+ 'Activeusers' => array( 'Mpikambana_manova_matetika' ),
+ 'Allmessages' => array( 'Hafatra_rehetra' ),
+ 'Allpages' => array( 'Pejy_rehetra' ),
+ 'Ancientpages' => array( 'Pejy_antitra' ),
+ 'Blankpage' => array( 'Pejy_fotsy' ),
+ 'Block' => array( 'Hanakana' ),
+ 'Blockme' => array( 'Sakano_ahy' ),
+ 'Booksources' => array( 'Boky_loharano' ),
'BrokenRedirects' => array( 'Fihodinana_tapaka' ),
- 'Disambiguations' => array( 'Pejy_mitovy_anarana' ),
- 'Userlogin' => array( 'Fidirana' ),
- 'Userlogout' => array( 'Fialàna' ),
+ 'Categories' => array( 'Sokajy' ),
+ 'ChangePassword' => array( 'Hiova_tenimiafina' ),
+ 'Confirmemail' => array( 'Hankatò_ny_adiresy_imailaka' ),
+ 'Contributions' => array( 'Fandraisan\'anjara' ),
'CreateAccount' => array( 'Hamorona_kaonty' ),
- 'Preferences' => array( 'Safidy' ),
- 'Watchlist' => array( 'Lisitry_ny_pejy_arahana' ),
- 'Recentchanges' => array( 'Fanovàna_farany' ),
- 'Upload' => array( 'Hanafatra' ),
+ 'Deadendpages' => array( 'Pejy_tsy_misy_rohy' ),
+ 'DeletedContributions' => array( 'Fandraisan\'anjara_voafafa' ),
+ 'Disambiguations' => array( 'Pejy_mitovy_anarana' ),
+ 'DoubleRedirects' => array( 'Fihodinana_miroa' ),
+ 'Emailuser' => array( 'Handefa_imailaka' ),
+ 'Export' => array( 'Hamoa-pejy' ),
+ 'Fewestrevisions' => array( 'Pejy_vitsy_mpanova_indrindra' ),
+ 'FileDuplicateSearch' => array( 'Fikarohan-drakitra_miroa' ),
+ 'Filepath' => array( 'Lalan-drakitra' ),
+ 'Import' => array( 'Hampidi-pejy' ),
+ 'BlockList' => array( 'Lisitry_ny_fanakanana' ),
+ 'LinkSearch' => array( 'Fikarohan-drohy' ),
+ 'Listadmins' => array( 'Lisitry_ny_mpandrindra' ),
+ 'Listbots' => array( 'Lisitry_ny_rôbô' ),
'Listfiles' => array( 'Lisitran\'ny_rakitra' ),
- 'Newimages' => array( 'Sary_vaovao' ),
- 'Listusers' => array( 'Lisitran\'ny_mpikambana' ),
'Listgrouprights' => array( 'Lisitry_ny_satam-pikambana' ),
- 'Statistics' => array( 'Statistika' ),
- 'Randompage' => array( 'Kisendra' ),
+ 'Listredirects' => array( 'Lisitry_ny_fihodinana' ),
+ 'Listusers' => array( 'Lisitran\'ny_mpikambana' ),
+ 'Lockdb' => array( 'Hanidy_ny_database' ),
+ 'Log' => array( 'Tatitr\'asa' ),
'Lonelypages' => array( 'Pejy_manirery' ),
- 'Uncategorizedpages' => array( 'Pejy_tsy_misy_sokajy' ),
- 'Uncategorizedcategories' => array( 'Sokajy_tsy_misy_sokajy' ),
- 'Uncategorizedimages' => array( 'Sary_tsy_misy_sokajy', 'Rakitra_tsy_misy_sokajy' ),
- 'Uncategorizedtemplates' => array( 'Endrika_tsy_misy_sokajy' ),
- 'Unusedcategories' => array( 'Sokajy_tsy_miasa' ),
- 'Unusedimages' => array( 'Rakitra_tsy_miasa', 'Sary_tsy_miasa' ),
- 'Wantedpages' => array( 'Pejy_tadiavina' ),
- 'Wantedcategories' => array( 'Sokajy_tadiavina' ),
- 'Wantedfiles' => array( 'Rakitra_tadiavina' ),
- 'Wantedtemplates' => array( 'Endrika_tadiavina' ),
+ 'Longpages' => array( 'Pejy_lavabe' ),
+ 'MergeHistory' => array( 'Hampiaraka_ny_tantaram-pejy' ),
+ 'MIMEsearch' => array( 'Fikarohana_MIME' ),
+ 'Mostcategories' => array( 'Pejy_be_sokajy_indrindra' ),
+ 'Mostimages' => array( 'Rakitra_voarohy_indrindra' ),
'Mostlinked' => array( 'Pejy_voarohy_indrindra' ),
'Mostlinkedcategories' => array( 'Sokajy_voarohy_indrindra' ),
'Mostlinkedtemplates' => array( 'Endrika_voarohy_indrindra' ),
- 'Mostimages' => array( 'Rakitra_voarohy_indrindra' ),
- 'Mostcategories' => array( 'Pejy_be_sokajy_indrindra' ),
'Mostrevisions' => array( 'Pejy_be_mpanova_indrindra' ),
- 'Fewestrevisions' => array( 'Pejy_vitsy_mpanova_indrindra' ),
- 'Shortpages' => array( 'Pejy_fohy' ),
- 'Longpages' => array( 'Pejy_lavabe' ),
+ 'Movepage' => array( 'Hanova_anaram-pejy' ),
+ 'Mycontributions' => array( 'Fandraisan\'anjarako' ),
+ 'Mypage' => array( 'Pejiko' ),
+ 'Mytalk' => array( 'Pejin-dresako' ),
+ 'Newimages' => array( 'Sary_vaovao' ),
'Newpages' => array( 'Pejy_vaovao' ),
- 'Ancientpages' => array( 'Pejy_antitra' ),
- 'Deadendpages' => array( 'Pejy_tsy_misy_rohy' ),
+ 'Popularpages' => array( 'Pejy_be_mpitsidika_indrindra' ),
+ 'Preferences' => array( 'Safidy' ),
+ 'Prefixindex' => array( 'Index' ),
'Protectedpages' => array( 'Pejy_voaaro' ),
'Protectedtitles' => array( 'Lohateny_voaaro' ),
- 'Allpages' => array( 'Pejy_rehetra' ),
- 'Prefixindex' => array( 'Index' ),
- 'Ipblocklist' => array( 'Lisitry_ny_fanakanana' ),
- 'Unblock' => array( 'Hanala_ny_fanakanana' ),
- 'Specialpages' => array( 'Pejy_manokana' ),
- 'Contributions' => array( 'Fandraisan\'anjara' ),
- 'Emailuser' => array( 'Handefa_imailaka' ),
- 'Confirmemail' => array( 'Hankatò_ny_adiresy_imailaka' ),
- 'Whatlinkshere' => array( 'Pejy_mirohy' ),
+ 'Randompage' => array( 'Kisendra' ),
+ 'Randomredirect' => array( 'Fihodinana_kisendta' ),
+ 'Recentchanges' => array( 'Fanovàna_farany' ),
'Recentchangeslinked' => array( 'Fanarahana_ny_rohy' ),
- 'Movepage' => array( 'Hanova_anaram-pejy' ),
- 'Blockme' => array( 'Sakano_ahy' ),
- 'Booksources' => array( 'Boky_loharano' ),
- 'Categories' => array( 'Sokajy' ),
- 'Export' => array( 'Hamoa-pejy' ),
- 'Version' => array( 'Santiôna' ),
- 'Allmessages' => array( 'Hafatra_rehetra' ),
- 'Log' => array( 'Tatitr\'asa' ),
- 'Blockip' => array( 'Hanakana' ),
+ 'Revisiondelete' => array( 'Santiôna_voafafa' ),
+ 'Search' => array( 'Fikarohana' ),
+ 'Shortpages' => array( 'Pejy_fohy' ),
+ 'Specialpages' => array( 'Pejy_manokana' ),
+ 'Statistics' => array( 'Statistika' ),
+ 'Tags' => array( 'Balizy' ),
+ 'Unblock' => array( 'Hanala_ny_fanakanana' ),
+ 'Uncategorizedcategories' => array( 'Sokajy_tsy_misy_sokajy' ),
+ 'Uncategorizedimages' => array( 'Sary_tsy_misy_sokajy', 'Rakitra_tsy_misy_sokajy' ),
+ 'Uncategorizedpages' => array( 'Pejy_tsy_misy_sokajy' ),
+ 'Uncategorizedtemplates' => array( 'Endrika_tsy_misy_sokajy' ),
'Undelete' => array( 'Hamerina' ),
- 'Import' => array( 'Hampidi-pejy' ),
- 'Lockdb' => array( 'Hanidy_ny_database' ),
'Unlockdb' => array( 'Hanala_ny_hidin\'ny_database' ),
- 'Userrights' => array( 'Fahefana' ),
- 'MIMEsearch' => array( 'Fikarohana_MIME' ),
- 'FileDuplicateSearch' => array( 'Fikarohan-drakitra_miroa' ),
- 'Unwatchedpages' => array( 'Pejy_tsy_misy_mpanaraka' ),
- 'Listredirects' => array( 'Lisitry_ny_fihodinana' ),
- 'Revisiondelete' => array( 'Santiôna_voafafa' ),
+ 'Unusedcategories' => array( 'Sokajy_tsy_miasa' ),
+ 'Unusedimages' => array( 'Rakitra_tsy_miasa', 'Sary_tsy_miasa' ),
'Unusedtemplates' => array( 'Endrika_tsy_misy_mpampiasa' ),
- 'Randomredirect' => array( 'Fihodinana_kisendta' ),
- 'Mypage' => array( 'Pejiko' ),
- 'Mytalk' => array( 'Pejin-dresako' ),
- 'Mycontributions' => array( 'Fandraisan\'anjarako' ),
- 'Listadmins' => array( 'Lisitry_ny_mpandrindra' ),
- 'Listbots' => array( 'Lisitry_ny_rôbô' ),
- 'Popularpages' => array( 'Pejy_be_mpitsidika_indrindra' ),
- 'Search' => array( 'Fikarohana' ),
- 'Resetpass' => array( 'Hiova_tenimiafina' ),
+ 'Unwatchedpages' => array( 'Pejy_tsy_misy_mpanaraka' ),
+ 'Upload' => array( 'Hanafatra' ),
+ 'Userlogin' => array( 'Fidirana' ),
+ 'Userlogout' => array( 'Fialàna' ),
+ 'Userrights' => array( 'Fahefana' ),
+ 'Version' => array( 'Santiôna' ),
+ 'Wantedcategories' => array( 'Sokajy_tadiavina' ),
+ 'Wantedfiles' => array( 'Rakitra_tadiavina' ),
+ 'Wantedpages' => array( 'Pejy_tadiavina' ),
+ 'Wantedtemplates' => array( 'Endrika_tadiavina' ),
+ 'Watchlist' => array( 'Lisitry_ny_pejy_arahana' ),
+ 'Whatlinkshere' => array( 'Pejy_mirohy' ),
'Withoutinterwiki' => array( 'Tsy_misy_interwiki' ),
- 'MergeHistory' => array( 'Hampiaraka_ny_tantaram-pejy' ),
- 'Filepath' => array( 'Lalan-drakitra' ),
- 'Blankpage' => array( 'Pejy_fotsy' ),
- 'LinkSearch' => array( 'Fikarohan-drohy' ),
- 'DeletedContributions' => array( 'Fandraisan\'anjara_voafafa' ),
- 'Tags' => array( 'Balizy' ),
- 'Activeusers' => array( 'Mpikambana_manova_matetika' ),
);
$messages = array(
@@ -245,8 +245,8 @@ $messages = array(
'tog-shownumberswatching' => "Asehoy ny isan'ny mpikambana manara-maso ny pejy",
'tog-oldsig' => 'Topi-maso ny sonia :',
'tog-fancysig' => 'Sonia tsotra (tsy misy rohy)',
-'tog-externaleditor' => "Hampiasa mpanova soratra ivelany (ho an'ny mpikambana havanana ihany, mila fampifanarahana manokana eo amin'ny mpikajinao [http://www.mediawiki.org/wiki/Manual:External_editors Fampahalalana fanampiny.])",
-'tog-externaldiff' => "Hampiasa mpampitaha ivelany (ho an'ny mpikambana havanana ihany, mila fampifanarahana manokana eo amin'ny mpikajinao [http://www.mediawiki.org/wiki/Manual:External_editors Fampahalalana fanampiny.])",
+'tog-externaleditor' => "Hampiasa mpanova soratra ivelany (ho an'ny mpikambana havanana ihany, mila fampifanarahana manokana eo amin'ny mpikajinao [//www.mediawiki.org/wiki/Manual:External_editors Fampahalalana fanampiny.])",
+'tog-externaldiff' => "Hampiasa mpampitaha ivelany (ho an'ny mpikambana havanana ihany, mila fampifanarahana manokana eo amin'ny mpikajinao [//www.mediawiki.org/wiki/Manual:External_editors Fampahalalana fanampiny.])",
'tog-showjumplinks' => 'Ampiasao ny rohy "handeha eto"',
'tog-uselivepreview' => 'Ampesao ny topi-maso maikamaika (mila Javascript) (mbola am-panandramana)',
'tog-forceeditsummary' => 'Teneno ahy ra tsy nametraka ny ambangovangony',
@@ -341,15 +341,7 @@ $messages = array(
'listingcontinuesabbrev' => ' manaraka.',
'index-category' => 'pejy voasokajy',
'noindex-category' => 'Pejy tsy voasikajy',
-
-'mainpagetext' => "'''Tafajoro soa aman-tsara ny rindrankajy Wiki.'''",
-'mainpagedocfooter' => "Vangio ny [http://meta.wikimedia.org/wiki/Aide:Contenu Fanoroana ho an'ny mpampiasa] ra te hitady fanoroana momba ny fampiasan'ity rindrankajy ity.
-
-== Hanomboka amin'ny MediaWiki ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lisitra ny paramètre de configuration]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ momba ny MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Resaka momba ny fizaràn'ny MediaWiki]",
+'broken-file-category' => 'Pejy misy rohin-drakitra tapaka',
'about' => 'Mombamomba',
'article' => "Votoatin'ny pejy",
@@ -401,10 +393,10 @@ $messages = array(
'history' => "Tantaran'ny pejy",
'history_short' => 'Tantara',
'updatedmarker' => 'niova hatry ny tsidiko farany',
-'info_short' => 'Fampahalalana',
'printableversion' => 'Ny votoatiny azo atonta printy',
'permalink' => 'Rohy maharitra',
'print' => 'Avoaka an-taratasy',
+'view' => 'Hamaky',
'edit' => 'Ovaina',
'create' => 'Amboarina',
'editthispage' => 'Hanova ity pejy ity',
@@ -412,6 +404,7 @@ $messages = array(
'delete' => 'Hamafa',
'deletethispage' => 'Fafao ity pejy ity',
'undelete_short' => 'Famerenana fanovana {{PLURAL:$1|$1|$1}}',
+'viewdeleted_short' => 'Hijery fanovana voafafa {{PLURAL:$1|tokana|$1}}',
'protect' => 'Hiaro',
'protect_change' => 'ovaina',
'protectthispage' => 'Hiaro ity pejy ity',
@@ -497,6 +490,8 @@ Mitaky version $1-n'i MediaWiki",
'toc' => 'Votoatiny',
'showtoc' => 'aseho',
'hidetoc' => 'afeno',
+'collapsible-collapse' => 'Vonkinina',
+'collapsible-expand' => 'Itarina',
'thisisdeleted' => 'Hojerena sa haverina i $1?',
'viewdeleted' => "Hijery an'i $1?",
'restorelink' => 'ny fanovàna voafafa $1{{PLURAL:}}',
@@ -508,6 +503,8 @@ Mitaky version $1-n'i MediaWiki",
'page-rss-feed' => 'Topa RSS ny « $1 »',
'page-atom-feed' => 'Topa Atom ny « $1 »',
'red-link-title' => '$1 (mbola tsy misy)',
+'sort-descending' => 'Fandaharana miiba',
+'sort-ascending' => 'Fandaharana miabo',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Lahatsoratra',
@@ -590,13 +587,14 @@ Andramo indray afaka minitra vitsivitsy.",
'protectedpagetext' => 'Voaaro mba tsy hisy hanova ity pejy ity.',
'viewsourcetext' => "Azonao atao no mijery sy mandrika ny votoatin'ity pejy ity :",
'protectedinterface' => "Manome lahatsoratra ho an'ny rindrankajy ity pejy ity ary voaaro izy ity mba tsy hisy hanararaotra",
-'editinginterface' => "'''Tandremo :''' manova pejy ampiasan'ny lôjisialy wiki ianao. Mety hita ny mpikambana sàsany izy io. Rehefa tia mandika teny ianao, jereo ny volavola MediaWiki ho an'ny internationalisation ny hafatra [http://translatewiki.net/wiki/Main_Page?setlang=fr translatewiki.net].",
+'editinginterface' => "'''Tandremo :''' manova pejy ampiasan'ny lôjisialy wiki ianao. Mety hita ny mpikambana sàsany izy io. Rehefa tia mandika teny ianao, jereo ny volavola MediaWiki ho an'ny internationalisation ny hafatra [//translatewiki.net/wiki/Main_Page?setlang=fr translatewiki.net].",
'sqlhidden' => '(nafenina ny requête SQL)',
'cascadeprotected' => 'Ankehitriny dia voaaro ity pejy ity satria misy pejy voaaro {{PLURAL:$1||$1}}1 mampiasa ity pejy ity. Io pejy io dia mampiasa ny fiarovana "en cascade" :
$2',
'namespaceprotected' => "Tsy manana alalàna manova ny toeran'anarana « '''$1''' » ianao.",
-'customcssjsprotected' => "Tsy azonao atao ny manova ity pejy ity, satria misy ny safidin'ny mpikambana hafa ity pejy ity.",
+'customcssprotected' => "Tsy afaka manova ity pejy CSS ity ianao satria misy ny safidy manokan'ny mpikambana hafa.",
+'customjsprotected' => "Tsy afaka manova ity pejy JavaScript ity inaao satria misy ny safidin'ny mpikambana hafa.",
'ns-specialprotected' => "Tsy afaka ovaina ny pejy anatin'ny toeran'anarana « {{ns:special}} » .",
'titleprotected' => "Voaaron'i [[User:$1|$1]] ity lohateny ity mba tsy hamorona pejy mitondra ity anarana ity.
Ny antony napetraka dia : « ''$2'' ».",
@@ -636,6 +634,7 @@ Mila manaiky cookies ianao raha te hiditra amin'ny {{SITENAME}}.",
'createaccount' => 'Hamorona kaonty',
'gotaccount' => "Efa manana kaonty? '''$1'''.",
'gotaccountlink' => 'Midira',
+'userlogin-resetlink' => "Adinonavo ve ny antsipihan'ny fidiranao ?",
'createaccountmail' => "amin'ny imailaka",
'createaccountreason' => 'Antony :',
'badretype' => 'Tsy mitovy ny tenimiafina nampidirinao.',
@@ -647,11 +646,13 @@ Mampiasa cookies ny {{SITENAME}} ho an'ny fidirana amin'ny kaonty.
Tsy avelanao mandeha ny cookies.
Avelao mandeha ny fampidirana cookies, ary midira amin'ny kaontinao.",
'nocookieslogin' => 'Mampiasa cookies i {{SITENAME}} nefa ny mpiteti-tranonkalanao no tsy manaiky na mandà azy. Ovay mba hanaiky cookies aloha ny mpiteti-tranonkalanao dia aveo manandrama mihiditra ato indray.',
+'nocookiesfornew' => "Tsy mbola noforonina ilay kaontim-pikambana, satria tsy afaka marinanay ilay loharanony.
+Marino tsara raha mahazo mametraka cookie ao amin'ny kompioteranao ny sehata, dia havaozy ilay pejy",
'noname' => 'Tsy nanome solonanarana mety ianao.',
'loginsuccesstitle' => 'Tafiditra soa aman-tsara',
'loginsuccess' => "'''Tafiditra amin'ny {{SITENAME}} ianao ry \"\$1\".'''",
'nosuchuser' => 'Tsy misy mpikambana manana izany solonanarana "$1" izany. Hamarino ny tsipelina na manokafa kaonty vaovao.',
-'nosuchusershort' => 'Tsy misy mpikambana hoe "<nowiki>$1</nowiki>". Hamarino ny tsipelina.',
+'nosuchusershort' => 'Tsy misy mpikambana hoe "$1". Hamarino ny tsipelina.',
'nouserspecified' => 'Tsy maintsy mampiditra solonanarana ianao.',
'login-userblocked' => 'Voasakana io mpikambana io. Fidirana tsy nahazoan-dalana.',
'wrongpassword' => 'Diso ny tenimiafina. Manandrama tenimiafina hafa azafady.',
@@ -700,13 +701,14 @@ Aza mijery ity hafatra ity ianao raha voaforona an-tsifetezana ilay kaonty io.",
'usernamehasherror' => 'Ny anaram-pikambana dia tsy afaka manana soratra fanaovana hash.',
'login-throttled' => "Im-betsaka loatra ianao no nanandrana tenimiafina teo amin'io kaonty io.
Andraso kely ary andramo indray.",
+'login-abort-generic' => 'Tsy nahomby ny fanandramanao niditra',
'loginlanguagelabel' => 'fiteny : $1',
'suspicious-userlogout' => "Ny fangataham-pialanao dia tsy nekena satria ohatry ny nalfan'ny mpizahan-tsehatra simba izy na kasy ny proxy.",
# E-mail sending
'php-mail-error-unknown' => "Hadisoana tsy fantatra tao amin'ny tao mial() an'i PHP.",
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Hanova ny tenimiafina',
'resetpass_announce' => "Nihiditra tenimiafina mailaka nalefanay tamin'ny imailaka ianao. Ampidiro ity tenimiafina ity mba hanapitra ny fampidirana.",
'resetpass_header' => "Hanova ny tenimiafin'ny kaonty",
@@ -723,6 +725,30 @@ Andraso kely ary andramo indray.",
Mety efa nanova tenimiafina na nanontany tenimiafina miserana angamba ianao.',
'resetpass-temp-password' => 'Tenimiafina miserana :',
+# Special:PasswordReset
+'passwordreset' => 'Famafana ary famerenana ny tenimiafina',
+'passwordreset-text' => "Fenoy ity formilera ity ho an'ny fahaozana ny fampahalalana mahakasika ny kaontinao amin'ny imailaka.",
+'passwordreset-legend' => 'Famafana ary famerenana ny tenimiafina',
+'passwordreset-disabled' => "Tsy nalefa ny fanovana tenimiafina adino eto amin'ity wiki ity.",
+'passwordreset-pretext' => '{{PLURAL:}}Mampidira singa data eo ambany',
+'passwordreset-username' => 'Anaram-pikambana :',
+'passwordreset-email' => 'Adiresy imailaka :',
+'passwordreset-emailtitle' => "Antsipirihan'ny kaonty eo amin'i {{SITENAME}}",
+'passwordreset-emailtext-ip' => "Nisy olona (mety ianao ihany angamba, avy amin'ity adiresy IP ity: $1) nangataka fampahalalana manokana mikasika ny kaontinao eo amin'i {{SITENAME}} ($4). {{PLURAL:$3|Ity|Ireto}} adiresy imailaka {{PLURAL:$3|Ity|Ireto}} dia mampiasa ity adiresy imailaka ity :
+
+$2
+
+{{PLURAL:$3|Io|Ireo}} ny tenimiafina miserana mitsahatra afaka {{PLURAL:$5|iray andro|$5 andro}}.
+Tokony miditra ianao ary misafidy ny tenimiafinao. Raha olon-kafa no nanao ity hataka ity, na efa tadidinao ny tenimiafinao taloha, ary raha tsy tia hanova azy intony ianao, azonao tsy raharahiana ity hafatra ity ary mbola azonao ampiasaina ilay tenimiafinao taloha.",
+'passwordreset-emailtext-user' => "Nisy mpikambana mitondra anarana $1 eo amin'i {{SITENAME}} nangataka fampatsiahivana mikasika ny kaontinao eo amin'i {{SITENAME}} ($4). Manana io adiresy imailaka {{PLURAL:$3|io kaontim-pikambana io|ireo kaontim-pikambana ireo}} :
+
+$2
+
+Hitsahatra afaka {{PLURAL:$5|iray|$5}} andro {{PLURAL:$3|io|ireo}} tenimiafina {{PLURAL:$3|io|ireo}}. Mila miditra dien'izao ianao izao ary mifidy tenimiafina vaovao. Raha tsy avy aminao ity hataka ity na efa nahatadidy ny tenimiafinao taloha ianao, ary raha tsy tianao hovaina intsony ilay tenimiafinao, dia azonao tsy raharahiana ity hafatra ity ary mampiasa ny tenimiafinao taloha.",
+'passwordreset-emailelement' => 'Anaram-pikambana : $1
+Tenimiafina miserana : $2',
+'passwordreset-emailsent' => 'Nalefa ny imailaka fampatsiahivana.',
+
# Edit page toolbar
'bold_sample' => 'Soratra matavy',
'bold_tip' => 'Soratra matavy',
@@ -734,8 +760,6 @@ Mety efa nanova tenimiafina na nanontany tenimiafina miserana angamba ianao.',
'extlink_tip' => 'Rohy ivelany (tadidio ny tovana http://)',
'headline_sample' => 'Lohateny anankiray',
'headline_tip' => 'Lohatena ambaratonga faha 2',
-'math_sample' => 'Atsofohy eto ny raikipohy',
-'math_tip' => 'Raikipohy matematika (LaTeX)',
'nowiki_sample' => 'Apetraho eto ny lahatsoratra tsy manaraka format',
'nowiki_tip' => 'Aza ampiasaina ny formatage wiki',
'image_sample' => 'ohatra.jpg',
@@ -819,7 +843,7 @@ Azonao atao ny [[Special:Search/{{PAGENAME}}||Tadiavo ny momba ny {{PAGENAME}}]]
'noarticletext-nopermission' => "Mbola tsy misy lahatsoratra ao amin'io pejy io.
Azonao atao ny [[Special:Search/{{PAGENAME}}|Mikaroka momba ny lohatenin'io pejy io]] ao amin'ny pejy hafa, mitady <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} anatin'ny laogy mikasika azy]</span>",
-'userpage-userdoesnotexist' => 'Mbola tsy nisoratra anarana ato i « $1 ». Marino raha tena hamorona ity pejy ity ianao.',
+'userpage-userdoesnotexist' => 'Mbola tsy nisoratra anarana ato i « <nowiki>$1</nowiki> ». Marino raha tena hamorona ity pejy ity ianao.',
'userpage-userdoesnotexist-view' => 'Tsy nisoratra anarana ato i « $1 ».',
'blocked-notice-logextract' => "Ankehitriny ity mpikambana ity dia voasakana.
Ny fampidirana faran'ny laogin'ny fanakanam-pikambana dia naseho teo ambany ho an'ny fampahalalàna :",
@@ -857,6 +881,7 @@ Raha mbola tsy mandeha foana ilay izy, [[Special:UserLogout|mivoaha]] ary midira
'token_suffix_mismatch' => "'''Tsy nekena ny fanovanao satria tsy voakaodin'ny rindrankajinao tsara ny soratra tao anatin'ny identifiant de modification.'''
Nilaina io tsy fanekena io mba tsy hikatso ilay pejy.
Misy io olana io rehefa mamppiasa serveur mandataire tsy manana anarana sy manan-olana eo amin'ny tranonkala ianao.",
+'edit_form_incomplete' => "'''Misy tsy tonga tany amin'ny lohamilina ny singan'ity pejy fenoina ity. Azonao ampiana ny mpandika hafa amin'ny famoronana ny fanazavana ity pejy ity.",
'editing' => "Manova an'i $1",
'editingsection' => 'Fanovana $1 (fizarana)',
'editingcomment' => 'Fanovana $1 (fizarana vaovao)',
@@ -1213,9 +1238,10 @@ ihany no miseho amin'ny vokatry ny karoka).",
'changepassword' => 'Hanova tenimiafina',
'prefs-skin' => 'Endrika',
'skin-preview' => 'Tsipalotra',
-'prefs-math' => 'Math',
'datedefault' => 'Tsy misy safidy',
+'prefs-beta' => 'Fitaovana beta',
'prefs-datetime' => 'Daty sy ora',
+'prefs-labs' => 'Fitaovana « labs »',
'prefs-personal' => 'Mombamomba anao',
'prefs-rc' => 'Vao niova',
'prefs-watchlist' => 'Lisitry ny pejy arahana-maso',
@@ -1237,8 +1263,6 @@ ihany no miseho amin'ny vokatry ny karoka).",
'columns' => 'Tsanganana/Tioba :',
'searchresultshead' => 'Fikarohana',
'resultsperpage' => "Isa ny valiny isakin'ny pejy :",
-'contextlines' => "Isa ny andalana isakin'ny valiny :",
-'contextchars' => 'Isa ny litera isaky ny andalana',
'stub-threshold-disabled' => 'Tsy alefa',
'recentchangesdays' => "Isa ny andro ho ampiseho eo amin'ny fanovàna farany",
'recentchangesdays-max' => '($1 andro{{PLURAL:$1||}} fara-faha betsany)',
@@ -1298,6 +1322,8 @@ Tokony mba manana lohavy ambanimbany kokoa non'ny $1",
'email' => 'Imailaka',
'prefs-help-realname' => "Anarana marina (afaka tsy fenoina): raha fenoinao ity dia hampiasaina hanomezana anao tambin'ny asa izay efainao eto.",
'prefs-help-email' => "Imailaka (afaka tsy asiana): Hahafahan'ny olona mifandray aminao amin'ny alalan'ny pejinao manokana na ny pejin-dresakao, nefa tsy aseho azy ny anaranao.",
+'prefs-help-email-others' => "Azonareo atao ny misafidy mba hamela ny hafa hifandray aminao eo amin'ny alanana rohy iray eo amin'ny pejin-dresakao.
+Tsy haseho ny adiresy imailakao rehefa manoratra any aminao ny mpikambana hafa.",
'prefs-help-email-required' => 'Ilaina ny adiresy imailaka',
'prefs-info' => 'Fampahalalàna fototra',
'prefs-i18n' => 'Fanatontoloana',
@@ -1416,7 +1442,6 @@ Tokony mba manana lohavy ambanimbany kokoa non'ny $1",
'right-userrights' => "Manova ny fahefan'ny mpikambana",
'right-userrights-interwiki' => "Manova ny fahefan'ny mpikambana any amin'ny wiki hafa",
'right-siteadmin' => 'Manidy sy manokatra ny banky angona',
-'right-reset-passwords' => "Manova ny tenimiafin'ny mpikambana hafa",
'right-override-export-depth' => "Mamoaka ny pejy miaraka amin'ny zana-pejy hatramin'ny ambaratonga fahadimy",
'right-sendemail' => "Mandefa imailaka any amin'ny mpikambana hafa",
@@ -1613,9 +1638,6 @@ Misy kialo HTML na fango script mety tsy ho hain'ny navigateur sasany haseho ity
'watchthisupload' => 'Araho maso ity rakitra ity',
'filewasdeleted' => 'Efa nampidirina tato ary efa voafafa ny rakitra manana io anarana io.
Tokony marina ny $1 aloha ny manao fampidirana vaovao.',
-'upload-wasdeleted' => "'''Tandremo''' : Mamerina pejy efa voafafa ianao.''''
-
-Marino raha tsara tohizana ny fanovana eto amin'ity pejy ity. Ny tantaran'asan'ny famafana pejy sy ny fanovan-toerana dia eo ambany :",
'filename-bad-prefix' => "Ny anaran-drakitra ho ampidirinareo dia manomboka amin'ny '''« $1 »''', anarana omena an'ny fakan-tsary elektirônika.
Misafidia anaran-drakitra mambangovango.",
'upload-success-subj' => 'Voaray soa aman-tsara ny rakitra',
@@ -1638,6 +1660,14 @@ Raha mbola misy foana ilay olana, manorata any amin'ny [[Special:ListUsers/syso
'upload-unknown-size' => 'tsy fantatra ny habe',
'upload-http-error' => 'Nisy tsy fetezana HTTP nitranga : $1',
+# Special:UploadStash
+'uploadstash-clear' => 'Hamafa ny rakitra voatahiry',
+'uploadstash-nofiles' => 'Tsy manana rakitra am-boatakona ianao.',
+'uploadstash-badtoken' => 'Tsy navokatra ny fampandefasana ilay tao, mety efa lany daty angamba ny fampahalalam-pamantarana anao.
+Avereno fanindroany.',
+'uploadstash-errclear' => 'Tsy navokatra ny famafana rakitra.',
+'uploadstash-refresh' => 'Vaozina ny lisi-drakitra',
+
# img_auth script messages
'img-auth-accessdenied' => 'Tsy afa-mankao',
'img-auth-nopathinfo' => "Tsy misy ny PATH_INFO.
@@ -1713,7 +1743,6 @@ Tsindrio eo amin'ny lohan-tsanganana raha hanova ny laharam-pisehoana.",
'linkstoimage' => "Ireto avy no {{PLURAL:$1|pejy mirohy|pejy mirohy}} ($1) amin'io rakitra io:",
'nolinkstoimage' => "Tsy misy pejy mirohy amin'ity sary ity.",
'morelinkstoimage' => "Hijery [[Special:WhatLinksHere/$1|rohy fanampiny]] makany amin'io rakitra io.",
-'redirectstofile' => "Ny rakitra fihodinana manaraka dia mitondra any amin'ity rakitra ity {{PLURAL:$1||}}:",
'sharedupload' => "Mety ho rakitra itambarana amin'ny tetikasa hafa ny rakitra $1.",
'sharedupload-desc-here' => "Avy amin'i $1 io rakitra io ary mety ampiasain'ny tetikasa hafa.
Aseho eo ambany ny [$2 famisavisana ilay rakitra].",
@@ -1994,6 +2023,9 @@ adiresin'ny mpandefa izany imailaka izany, koa afaka hovaliany izay hafatra alef
na tsy maniry handray imailaka avy amin'ny mpikambana hafa izy.",
'nowikiemailtitle' => 'Tsy manaiky imailaka alefa ho azy',
'nowikiemailtext' => "Ity mpikambana ity dia te-hahazo imailaka avy amin'ny mpikambana hafa.",
+'emailnotarget' => "Anaram-pikamban'ny mpandray hafatra tsy misy na diso.",
+'emailusername' => 'Anaram-pikambana :',
+'emailusernamesubmit' => 'Alefa',
'email-legend' => "Handefa imailaka any amin'ny mpikambana hafa an'i {{SITENAME}}",
'emailfrom' => "Avy tamin'i",
'emailto' => "Ho an'i",
@@ -2018,13 +2050,13 @@ na tsy maniry handray imailaka avy amin'ny mpikambana hafa izy.",
'watchlistanontext' => "Andana $1 hahafahanao mijery na manova zavatra ao amin'ny pejy arahanao.",
'watchnologin' => 'Tsy niditra',
'watchnologintext' => 'Mila [[Special:UserLogin|miditra]] ianao vao afaka manova ny lisitry ny pejy arahanao.',
-'addedwatch' => "Tafiditra amin'ny lisitry ny pejy arahi-maso akaiky",
+'addwatch' => "Ampiana ao amin'ny pejy arahana",
'addedwatchtext' => "Tafiditra anatin'ny lisitry ny [[Special:Watchlist|Pejy arahanao maso]] ny pejy \"[[:\$1]]\".
Ny fanovana hisy amin'io pejy io sy ny pejin-dresaka miaraka aminy dia hiseho ao,
ary rehefa miseho ao amin'ny [[Special:RecentChanges|lisitry ny pejy vao niova]] io pejy io dia hatao ''matavy'' mba hahamora ny fahitana azy.
Aoriana, raha irinao ny hanaisotra azy ao amin'ny pejy arahanao maso, dia tsindrio ilay hoe \"aza arahi-maso intsony\" etsy amin'ny sisiny etsy.",
-'removedwatch' => "Voaaisotra tao amin'ny lisitry ny pejy arahi-maso",
+'removewatch' => "Alàna amin'ny pejy arahana",
'removedwatchtext' => 'Tsy [[Special:Watchlist|arahanao]] intsony ny pejy [[:$1]].',
'watch' => 'Arahana',
'watchthispage' => 'Hanaraka ity pejy ity',
@@ -2045,8 +2077,9 @@ Aoriana, raha irinao ny hanaisotra azy ao amin'ny pejy arahanao maso, dia tsindr
'watchlist-options' => 'Safidy ny lisitry ny pejy arahana',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Fanarahana...',
-'unwatching' => 'Fanalana ny fanarahana...',
+'watching' => 'Fanarahana...',
+'unwatching' => 'Fanalana ny fanarahana...',
+'watcherrortext' => "Nisy hadisoana nitranga teo ampanovana ny safidy ny lisitry ny pejy arahanao ho an'i « $1 ».",
'enotif_mailer' => "Fomba fampandrenesana amin'ny alalan'ny imailaka an'i {{SITENAME}}",
'enotif_reset' => 'Marihana ho efa voavaky ny pejy rehetra',
@@ -2077,10 +2110,10 @@ Azonao atao koa ny manajanona ny fampahafantarana anao aloha na misy manova aza
--
Raha hanova ny fandehan\'ny momba ny lisitry ny pejy arahi-maso, jereo
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Hevitrao sy fanampiana:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Hamafa ny pejy',
@@ -2098,7 +2131,7 @@ fantatrao ny vokany ary mahalala ianao fa tsy mifanipaka amin'ny
[[{{MediaWiki:Policy-url}}|fepetra]] izao ataonao izany.",
'actioncomplete' => 'Vita ny asa',
'actionfailed' => 'Tsy nandeha ny tao',
-'deletedtext' => 'Voafafa i "<nowiki>$1</nowiki>".
+'deletedtext' => 'Voafafa i "$1".
Jereo amin\'ny $2 ny lisitry ny famafana pejy faramparany.',
'deletedarticle' => 'namafa « [[$1]] »',
'suppressedarticle' => 'namafa « [[$1]] »',
@@ -2154,7 +2187,7 @@ Ho ann'y fanazavana fanampiny, jereo [[Special:ProtectedPages|ny lisitry ny pejy
'protect_expiry_invalid' => 'Tsy mety ilay daty fialàna.',
'protect_expiry_old' => 'Efa lasa ilay daty fialàna.',
'protect-unchain-permissions' => 'Aitatra ny fomba fiarovana',
-'protect-text' => "Afaka jerenao na ovainao eto ny politikam-piarovana ny pejy '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Afaka jerenao na ovainao eto ny politikam-piarovana ny pejy '''$1'''.",
'protect-locked-blocked' => "Tsy afaka ovanao ny sokajy ny fiarovana raha tsy mahazo manoratra ianao.
Ity ny sokajy ny pejy '''$1''' :",
'protect-locked-dblock' => "Tsy afaka solona ny sokajy ny fiarovana satria ny voatohana ny fotom-pandraisana.
@@ -2307,12 +2340,10 @@ ananan'ny adiresy IP iray na solonanarana iray.
Tokony ho antony fisorohana ny fisomparana ihany, ary mifanaraka amin'ny [[{{MediaWiki:Policy-url}}|fepetra]]
ihany no hanaovana ny fisakanana.
Fenoy etsy ambany ny antony manokana (ohatra, mitanisà pejy nosomparana).",
-'ipaddress' => 'Adiresy IP',
'ipadressorusername' => 'Adiresy IP na solonanarana',
'ipbexpiry' => 'Fahataperana',
'ipbreason' => 'Antony :',
'ipbreasonotherlist' => 'Antony hafa',
-'ipbanononly' => 'Hanakana ny mpikambana tsy nisoratra anarana ihany',
'ipbcreateaccount' => 'Hanakana ny fanokafana kaonty',
'ipbemailban' => 'Hanakana ny fandefasana imailaka',
'ipbenableautoblock' => "Manakana ny IP farany ampiasain'ity mpikambana ity, ary ny IP-ny taloha mety ho andramnay",
@@ -2323,7 +2354,6 @@ Fenoy etsy ambany ny antony manokana (ohatra, mitanisà pejy nosomparana).",
'ipbotherreason' => 'Antony hafa na fanampiny :',
'ipbhidename' => "Hanitrika ny anaram-pikambana anatin'ny fanovana sy anaty lisitra",
'ipbwatchuser' => "Hanaraka ny pejim-pikambana sy pejin-dresak'ity mpikambana ity",
-'ipballowusertalk' => "Afahan'ity mpikambana ity manova ny pejin-dresany mandritry ny sakany",
'ipb-change-block' => "Hanakana io mpikambana io amin'ireto parametatra ireto.",
'badipaddress' => 'Tsy mety ny adiresy IP (invalid)',
'blockipsuccesssub' => 'Vita soa aman-tsara ny sakana',
@@ -2341,16 +2371,18 @@ mihatra amin'ny adiresy IP na solonanarana iray.",
'ipusubmit' => 'Esory ny sakana',
'unblocked' => "voaala ny sakan'i [[User:$1|$1]]",
'unblocked-id' => "Niala ny sakan'i $1",
+'blocklist' => 'Mpikambana voasakana',
'ipblocklist' => 'Lisitry ny adiresy IP sy mpikambana voasakana',
'ipblocklist-legend' => 'Hitady mpikambana voasakana',
-'ipblocklist-username' => 'Anaram-pikambana na adiresy IP :',
-'ipblocklist-sh-userblocks' => '$1 ny fanakanan-kaonty',
-'ipblocklist-sh-tempblocks' => '$1 ny fanakanana miserana',
-'ipblocklist-sh-addressblocks' => '$1 ny fanakanana adiresy IP mitokana',
+'blocklist-timestamp' => 'Daty sy ora',
+'blocklist-target' => 'Tanjona',
+'blocklist-expiry' => 'Daty fitsaharana :',
+'blocklist-by' => 'Mpandrindra nanakana',
+'blocklist-params' => 'Parametatry ny sakana',
+'blocklist-reason' => 'Antony',
'ipblocklist-submit' => 'Fikarohana',
'ipblocklist-localblock' => 'Fanakanana eo an-toerana',
'ipblocklist-otherblocks' => '{{PLURAL:$1}}sakana hafa',
-'blocklistline' => '$1, $2 nisakana $3 ($4)',
'infiniteblock' => 'mandrakizay',
'expiringblock' => "tapitra amin'ny $1 amin'ny $2",
'anononlyblock' => 'mpikambana tsy nisoratra anarana ihany',
@@ -2373,7 +2405,7 @@ Eo ambany ny laogim-pamafana.',
'blocklogentry' => 'voasakana i "[[$1]]" mandritra ny $2 ; antony : $3',
'reblock-logentry' => "nanova ny parametatry ny sakan'i [[$1]], ary tapitra amin'ny $2. Ny antony dia ''$3''",
'blocklogtext' => "Eto no ahitana ny tantaran'ny hetsika momba ny fisakanana sy ny fanafoanana fisakanana mpandray anjara.
-Ireo adiresy IP voasakana ho azy dia tsy miseho eto. Jereo ao amin'ny [[Special:IPBlockList|lisitry ny IP voasakana]]
+Ireo adiresy IP voasakana ho azy dia tsy miseho eto. Jereo ao amin'ny [[Special:BlockList|lisitry ny IP voasakana]]
ny lisitry ny fisakanana sy fandrarana na tanteraka misy ankehitriny.",
'unblocklogentry' => "voaaisotra ny sakana an'i $1",
'block-log-flags-anononly' => 'mpikambana tsy nisoratra anarana ihany',
@@ -2388,8 +2420,7 @@ ny lisitry ny fisakanana sy fandrarana na tanteraka misy ankehitriny.",
'ipb_expiry_temp' => 'tsy maintsy lalandava ny fanakanana anaram-pikambana nasitrika.',
'ipb_hide_invalid' => 'Tsy afaka fafana io kaonty io ; hoatra ny manana fanovana maro loatra izy.',
'ipb_already_blocked' => 'Efa voasakana « $1 »',
-'ipb-needreblock' => '== Déjà bloqué ==
-Efa voasakana i $1. Tianao ovaina ve ny parametatra ?',
+'ipb-needreblock' => 'Efa voasakana i $1. Tianao ovaina ve ny parametatra ?',
'ipb-otherblocks-header' => '{{PLURAL:$1}}sakana hafa',
'ipb_cant_unblock' => 'Tsy fetezana : Marik ny fanakanana $1 tsy hita.
Mety efa natao angamba ny fanalana sakana.',
@@ -2684,9 +2715,7 @@ Mamerina ny version taloha io asa io ary afaka manometraka ny antony anatin'ny a
'monobook.css' => "/* Ovay ity rakitra ity raha hampiasa takilan'angaly (stylesheet) anao manokana amin'ny wiki iray manontolo */",
# Metadata
-'nodublincore' => "Tsy nalefa ny metadata « Dublin Core RDF » eto amin'ity lohamilina ity.",
-'nocreativecommons' => "Tsy alefa eto amin'ity lohamilina ity ny metadata « Dublin Core RDF ».",
-'notacceptable' => "Tsy afaka manome données amin'ny format zakan'ny navigateur-nao ny serveur wiki.",
+'notacceptable' => "Tsy afaka manome données amin'ny format zakan'ny navigateur-nao ny serveur wiki.",
# Attribution
'anonymous' => "Mpikambana {{PLURAL:$1}} tsy mitonona anarana eto amin'ny {{SITENAME}}",
@@ -2706,35 +2735,6 @@ Mamerina ny version taloha io asa io ary afaka manometraka ny antony anatin'ny a
'spam_reverting' => "Famerenana an'ilay santiôna farany tsy misy ny rohy mankany amin'ny $1",
'spam_blanking' => "Voafotsy ny santiôna misy ny rohy mankany amin'ny $1",
-# Info page
-'infosubtitle' => "Fampahalalàna ho an'ilay pejy",
-'numedits' => "Isan'ny fanovana (lahatsoratra): $1",
-'numtalkedits' => "Isan'ny resaka (pejin-dresaka): $1",
-'numwatchers' => "Isan'ny mpikambana manaraka ity pejy ity : $1",
-'numauthors' => "Isan'ny mpanova samihafa : $1",
-'numtalkauthors' => "Isan'ny mpiresaka (fa tsy ny resaka) (pejin-dresaka): $1",
-
-# Math options
-'mw_math_png' => 'Anamboary sary PNG foana',
-'mw_math_simple' => 'Raha tena tsotra be dia HTML ampiasaina moa raha tsy izany dia PNG',
-'mw_math_html' => 'HTML raha mety na raha tsy izany dia PNG',
-'mw_math_source' => "
-Avelao ho TeX (ho an'ny navigateurs textes)",
-'mw_math_modern' => "
-Amporisihina ho an'ny navigateur moderna",
-'mw_math_mathml' => 'MathML raha mety (andrana ihany)',
-
-# Math errors
-'math_failure' => 'Tsy nety ny fanodinana ny raikipohy',
-'math_unknown_error' => 'tsy fahatomombanana tsy hay antony',
-'math_unknown_function' => 'fonction tsy fantatra',
-'math_lexing_error' => 'fahadisoana ara-teny',
-'math_syntax_error' => 'Misy diso ny raikipohy',
-'math_image_error' => 'Tsy voavadika ho PNG; hamarino fa mety voapetraka tsara ny rindrankajy latex, dvips, gs ary convert',
-'math_bad_tmpdir' => "Tsy afaka namorona na nanoratra répertoire vonjimaika ho an'ny matematika",
-'math_bad_output' => "Tsy afaka namorona na nanoratra tao amin'ny répertoire hampiasain'ny asa matematika",
-'math_notexvc' => 'Tsy hita ny rindrankajy texvc; azafady jereo math/README hanamboarana azy.',
-
# Patrolling
'markaspatrolleddiff' => 'Marihana ho voamarina',
'markaspatrolledtext' => 'Marihana ho hita sy voatsara',
@@ -2780,7 +2780,6 @@ Raha alefanao ilay izy, mety ho simban'io renifango io ny solosainao.",
'file-nohires' => "<small>Tsy misy sary ngeza non'io</small>",
'svg-long-desc' => 'rakitra SVG, habe $1 × $2 teboka, habe : $3',
'show-big-image' => "Hijery ny tena haben'ny sary",
-'show-big-image-thumb' => "<small>Hangezan'ity topi-maso ity : $1 × $2 piksely</small>",
'file-info-gif-looped' => 'miverimberina',
# Special:NewFiles
@@ -2806,14 +2805,20 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
'metadata-help' => "Mirakitra fampahalalana fanampiny, izay inoana ho napetraky ny fakan-tsary na scanner nampiasaina nanaovana ny numérisation-ny ity rakitra ity. Raha kitihina na ovana izy ity dia mety tsy hifanitsy amin'ny sary voaova ireo antsipirihany sasany ireo.",
'metadata-expand' => 'Asehoy ny antsipirihany',
'metadata-collapse' => 'Aza aseho ny antsipirihany',
-'metadata-fields' => "Hisy anatin'ny pejin-ambangovangon'ilay sary ny métadonnées ny EXIF rehefa nasitrika ny tabilao ny metafonnées, asitrika ny champ hafa.
+'metadata-fields' => "Ho ao amin'ny ambangovangom-pejin-tsary ireo saham-pampahalala mahakasika ny tsary valisitra anatin'ity hafatra ity rehefa hafohezina ny tabilaon-tsaham-pampahalalana mahakasika ny sary. Hasitrika araka ny fahazarana ny saha fanatsofohan-teny hafa.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Halalaka',
@@ -2843,7 +2848,6 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
'exif-flashpixversion' => 'Santiôna FlashPix',
'exif-pixelydimension' => 'Haavon-tsary ekena',
'exif-pixelxdimension' => 'Halalan-tsary ekena',
-'exif-makernote' => 'Diniky ny mpanamboatra',
'exif-usercomment' => 'Diniky ny mpikambana',
'exif-relatedsoundfile' => 'Rakitra audio miaraka',
'exif-datetimeoriginal' => 'Daty fangalana niaviana',
@@ -2872,6 +2876,7 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
'exif-gpsdestlatitude' => 'Laharam-pehintany tanjona',
'exif-gpsareainformation' => 'Anaram-paritra GPS',
'exif-gpsdatestamp' => 'Daty GPS',
+'exif-countrycreated' => 'Firenena nangalana ilay sary',
'exif-unknowndate' => 'Daty tsy fantatra',
@@ -2914,15 +2919,13 @@ Tokony sary tsy misy na sary tsy izy ny rohy voalohany anaty andalana iray .
# External editor support
'edit-externally' => "Ovao amin'ny alalan'ny fampiasana fitaovana ivelan'ity Wiki ity io rakitra io",
-'edit-externally-help' => "jereo any amin'[http://www.mediawiki.org/wiki/Manual:External_editors ny torolalana] ny fanazavana fanampiny,.",
+'edit-externally-help' => "jereo any amin'[//www.mediawiki.org/wiki/Manual:External_editors ny torolalana] ny fanazavana fanampiny,.",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'rehetra',
-'imagelistall' => 'rehetra',
-'watchlistall2' => 'rehetra',
-'namespacesall' => 'rehetra',
-'monthsall' => 'rehetra',
-'limitall' => 'rehetra',
+'watchlistall2' => 'rehetra',
+'namespacesall' => 'rehetra',
+'monthsall' => 'rehetra',
+'limitall' => 'rehetra',
# E-mail address confirmation
'confirmemail' => 'Fanamarinana adiresy imailaka.',
diff --git a/languages/messages/MessagesMhr.php b/languages/messages/MessagesMhr.php
index 37884fd2..ce8ae95b 100644
--- a/languages/messages/MessagesMhr.php
+++ b/languages/messages/MessagesMhr.php
@@ -24,8 +24,8 @@ $namespaceNames = array(
NS_PROJECT_TALK => '$1ын_каҥашымаш',
NS_FILE => 'Файл',
NS_FILE_TALK => 'Файл_шотышто_каҥашымаш',
- NS_TEMPLATE => 'Ямдылык',
- NS_TEMPLATE_TALK => 'Ямдылык_шотышто_каҥашымаш',
+ NS_TEMPLATE => 'Кышкар',
+ NS_TEMPLATE_TALK => 'Кышкар_шотышто_каҥашымаш',
NS_HELP => 'Полшык',
NS_HELP_TALK => 'Полшык_шотышто_каҥашымаш',
NS_CATEGORY => 'Категорий',
@@ -34,35 +34,37 @@ $namespaceNames = array(
$namespaceAliases = array(
// Fallbacks for all 'ru' namespace aliases
- 'Медиа' => NS_MEDIA,
- 'СлужебнаÑ' => NS_SPECIAL,
- 'ОбÑуждение' => NS_TALK,
- 'УчаÑтник' => NS_USER,
- 'ОбÑуждение_учаÑтника' => NS_USER_TALK,
+ 'Медиа' => NS_MEDIA,
+ 'СлужебнаÑ' => NS_SPECIAL,
+ 'ОбÑуждение' => NS_TALK,
+ 'УчаÑтник' => NS_USER,
+ 'ОбÑуждение_учаÑтника' => NS_USER_TALK,
'ОбÑуждение_{{GRAMMAR:genitive|$1}}' => NS_PROJECT_TALK,
- 'Файл' => NS_FILE,
- 'ОбÑуждение_файла' => NS_FILE_TALK,
- 'ОбÑуждение_MediaWiki' => NS_MEDIAWIKI_TALK,
- 'Шаблон' => NS_TEMPLATE,
- 'ОбÑуждение_шаблона' => NS_TEMPLATE_TALK,
- 'Справка' => NS_HELP,
- 'ОбÑуждение_Ñправки' => NS_HELP_TALK,
- 'КатегориÑ' => NS_CATEGORY,
- 'ОбÑуждение_категории' => NS_CATEGORY_TALK,
+ 'Файл' => NS_FILE,
+ 'ОбÑуждение_файла' => NS_FILE_TALK,
+ 'ОбÑуждение_MediaWiki' => NS_MEDIAWIKI_TALK,
+ 'Шаблон' => NS_TEMPLATE,
+ 'ОбÑуждение_шаблона' => NS_TEMPLATE_TALK,
+ 'Справка' => NS_HELP,
+ 'ОбÑуждение_Ñправки' => NS_HELP_TALK,
+ 'КатегориÑ' => NS_CATEGORY,
+ 'ОбÑуждение_категории' => NS_CATEGORY_TALK,
// Namspace changes
- 'Файлын_каҥашымаш' => NS_FILE_TALK,
- 'Ямдылыкын_каҥашымаш' => NS_TEMPLATE_TALK,
- 'Полшыкын_каҥашымаш' => NS_HELP_TALK,
- 'Категорийын_каҥашымаш' => NS_CATEGORY_TALK,
+ 'Файлын_каҥашымаш' => NS_FILE_TALK,
+ 'Ямдылык' => NS_TEMPLATE,
+ 'Ямдылык_шотышто_каҥашымаш' => NS_TEMPLATE_TALK,
+ 'Ямдылыкын_каҥашымаш' => NS_TEMPLATE_TALK,
+ 'Полшыкын_каҥашымаш' => NS_HELP_TALK,
+ 'Категорийын_каҥашымаш' => NS_CATEGORY_TALK,
);
$specialPageAliases = array(
'Preferences' => array( 'Келыштарымаш' ),
- 'Watchlist' => array( 'ЭÑкерымаш_лӱмер' ),
'Recentchanges' => array( 'Пытартыш_тӧрлатымаш-влак' ),
- 'Statistics' => array( 'Иктешлымаш' ),
'Search' => array( 'Кычалмаш' ),
+ 'Statistics' => array( 'Иктешлымаш' ),
+ 'Watchlist' => array( 'ЭÑкерымаш_лӱмер' ),
);
$magicWords = array(
@@ -175,8 +177,6 @@ $messages = array(
'category-article-count' => '{{PLURAL:$2|Тиде категорийыш ик лаштык гына пура.|{{PLURAL:$1|Тыгай $1 лаштык|Тыгане $1 лаштык-влак}} тиде категорийыште, чыла $2.}}',
'listingcontinuesabbrev' => '(умбакыжым)',
-'mainpagetext' => "'''MediaWiki Ñай шындыме.'''",
-
'about' => 'Ðерген',
'article' => 'Возымо лаштык',
'newwindow' => '(у тӧрзаште почылтеш)',
@@ -355,7 +355,7 @@ $messages = array(
'nosuchuser' => '"$1" лӱман пайдаланыше уке.
Пайдаланышын лӱмыштӧ йӱкпале-влакын кугытшо Ñ‚Ó±Ñ€Ñ‹Ñ Ð»Ð¸Ð¹ÑˆÐ°Ñˆ.
Лӱмым чын возымым терге але [[Special:UserLogin/signup|региÑтрацийым Ñрте]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" лӱман пайдаланыше уке.
+'nosuchusershort' => '"$1" лӱман пайдаланыше уке.
Лӱмым чын возымым терге.',
'nouserspecified' => 'Тылат пайдаланышын лӱмжым пуртыман.',
'wrongpassword' => 'Тый йоҥылыш шолыпмутым пуртенат.
@@ -374,13 +374,16 @@ $messages = array(
'emailauthenticated' => 'Тыйын почто адреÑетым пеҥгыдемдыме $2, $3.',
'loginlanguagelabel' => 'Йылме: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Шолыпмутым вашталташ',
'oldpassword' => 'Тошто шолыпмут:',
'newpassword' => 'У шолыпмут:',
'retypenew' => 'Пеҥгыдемдыза у шолыпмутым:',
'resetpass-submit-loggedin' => 'Шолыпмутым вашталташ',
+# Special:PasswordReset
+'passwordreset-username' => 'Пайдаланышын лӱмжӧ',
+
# Edit page toolbar
'bold_sample' => 'Кӱжгӧ текÑÑ‚',
'bold_tip' => 'Кӱжгӧ текÑÑ‚',
@@ -392,8 +395,6 @@ $messages = array(
'extlink_tip' => 'Ӧрдыж кылвер (http:// префикÑым ит мондо)',
'headline_sample' => 'Вуймут',
'headline_tip' => '2-шо кӱкшытан вуймут',
-'math_sample' => 'Формулым тышке шынде',
-'math_tip' => 'Математик формул (LaTeX)',
'nowiki_sample' => 'Форматироватлыдыме текÑтым тышке шынде',
'nowiki_tip' => 'Вики-форматированийым шотыш налаш огыл',
'image_tip' => 'Пуртымо Ñӱрет',
@@ -536,7 +537,6 @@ $messages = array(
'changepassword' => 'Шолыпмутым вашталташ',
'prefs-skin' => 'СӧраÑтарыме йӧн',
'skin-preview' => 'Ончылгоч ончымаш',
-'prefs-math' => 'Формуло-влак',
'prefs-datetime' => 'Кече да жап',
'prefs-personal' => 'Пайдаланышын профильже',
'prefs-rc' => 'ШукертÑе огыл тӧрлымаш-влак',
@@ -778,10 +778,8 @@ $messages = array(
# Watchlist
'watchlist' => 'Мыйын ÑÑкерымаш лӱмер',
'mywatchlist' => 'Мыйын ÑÑкерымаш лӱмер',
-'addedwatch' => 'ЭÑкерымаш лӱмерыш ешарыме',
'addedwatchtext' => "\"[[:\$1]]\" лаштыкым тыйын [[Special:Watchlist|ÑÑкерымаш лӱмерыш]] ешарыме.
Тиде лаштыкын да тудын каҥашымаш лаштыкым умбакыÑе тӧрлатымашым тиде ÑпиÑкыште ончыктымо лиеш да, Ñайрак ужаш манын, [[Special:RecentChanges|пытартыш тӧрлатымаш лӱмерыште]] '''кӱжгӧ шрифт''' дене ойырымо.",
-'removedwatch' => 'ЭÑкерымаш лӱмер гыч шӧрымӧ',
'removedwatchtext' => '«[[:$1]]» лаштыкым [[Special:Watchlist|тыйын ÑÑкерыме лӱмер]] гыч кораҥдыме.',
'watch' => 'ЭÑкераш',
'watchthispage' => 'Тиде лаштыкым ÑÑкераш',
@@ -806,7 +804,7 @@ $messages = array(
'confirmdeletetext' => 'Тый тиде лаштыкым пӱтынь Ñртымгорныже дене йӧршын шӧрынет.
Пеҥгыдемде тидым [[{{MediaWiki:Policy-url}}|правил]] почеш ыштыметым да, мо тидын деч вара лиймым, умылыметым.',
'actioncomplete' => 'Ыштыме',
-'deletedtext' => '«<nowiki>$1</nowiki>» шӧрымӧ.
+'deletedtext' => '«$1» шӧрымӧ.
Ончо $2 пытартыш шӧрымӧ-влак лӱмер гыч.',
'deletedarticle' => '«[[$1]]» шӧрымӧ',
'dellogpage' => 'Шӧрымӧ нерген журнал',
@@ -826,7 +824,7 @@ $messages = array(
'protectexpiry' => 'Мучашлалтеш:',
'protect_expiry_invalid' => 'Йоҥылыш мучашлалтше жап.',
'protect_expiry_old' => 'Мучашлалтше жап Ñртен.',
-'protect-text' => "Тыште тый '''<nowiki>$1</nowiki>''' лаштыкын шыгыремдымашыжым ончалаш да тӧрлаташ кертат.",
+'protect-text' => "Тыште тый '''$1''' лаштыкын шыгыремдымашыжым ончалаш да тӧрлаташ кертат.",
'protect-locked-access' => "Тыйын лаштыкын шыгыремдымашыжым тӧрлаш кертмешет шагал.
Ӱлнӧ '''$1''' лаштыкын кызытÑе келыштарымаш.",
'protect-cascadeon' => 'Тиде лаштыкым кыдалтше аралтышан {{PLURAL:$1|лаштыкыш, куштыжо|лаштык-влакыш, куштыжо}} пурымылан кӧра кызыт аралыме. Тый тиде лаштыкын шыгыремдымашыжым тӧрлатен кертат, тидын годым кылдалтше аралтыш огеш вашталт.',
@@ -1008,25 +1006,16 @@ $messages = array(
'tooltip-undo' => '"Чараш" тиде тӧрлатымашым мӧҥгешла пӧртыла да ончылгоч ончымашым почеш.
Тый тӧрлатымаш амалже нерген возымо верыште возын кертат.',
-# Math options
-'mw_math_png' => 'Эре PNG-ым генерироватлаш',
-'mw_math_simple' => 'Тыглай годым - HTML, уке гын - PNG',
-'mw_math_html' => 'Лиеш гын - HTML, уке гын - PNG',
-'mw_math_source' => 'TeX-ым разметкыште кодаш (текÑÑ‚ браузер-влаклан)',
-'mw_math_modern' => 'Кызытлык (у) брузер-влаклан темлыме',
-'mw_math_mathml' => 'Лиеш гын - MathML (ÑкÑперимент опций)',
-
# Browsing diffs
'previousdiff' => '↠Ондакрак тӧрлатымаш',
'nextdiff' => 'Ð’ÐµÑ Ñ‚Ó§Ñ€Ð»Ð°Ñ‚Ñ‹Ð¼Ð°Ñˆ →',
# Media information
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|лаштык|лаштык}}',
-'file-info-size' => '$1 × $2 пикÑел, файлын кугытшо: $3, MIME-тип: $4',
-'file-nohires' => '<small>Кугурак чаплык уке.</small>',
-'svg-long-desc' => 'SVG файл, шкенжын кугытшо: $1 × $2 пикÑел, файлын кугытшо: $3',
-'show-big-image' => 'Шкенжын чаплыкше',
-'show-big-image-thumb' => '<small>Ончылгоч ончымашын кугытшо $1 × $2 пикÑель</small>',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|лаштык|лаштык}}',
+'file-info-size' => '$1 × $2 пикÑел, файлын кугытшо: $3, MIME-тип: $4',
+'file-nohires' => '<small>Кугурак чаплык уке.</small>',
+'svg-long-desc' => 'SVG файл, шкенжын кугытшо: $1 × $2 пикÑел, файлын кугытшо: $3',
+'show-big-image' => 'Шкенжын чаплыкше',
# Special:NewFiles
'newimages-legend' => 'Фильтр',
@@ -1046,25 +1035,29 @@ $messages = array(
Файлым ыштыме деч вара тӧрлымӧ гын, южо данныйже тиде файллан келшыдыме лийын кертеш.',
'metadata-expand' => 'Ешартыш рашлык-влакым ончыкташ',
'metadata-collapse' => 'Ешартыш рашлык-влакым шылташ',
-'metadata-fields' => 'Тиде лӱмер гыч EXIF кумдыкпале паÑу Ñӱретын лаштыкыште Ñре ончыкталтеш, поÑна калаÑыме огыл гын, Ð²ÐµÑ Ð¿Ð°Ñу ок ончыкталт.
+'metadata-fields' => 'Тиде лӱмер гыч EXIF кумдыкпале алан ойыпын лаштыкыште Ñре ончыкталтеш, поÑна калаÑыме огыл гын, Ð²ÐµÑ Ð°Ð»Ð°Ð½ ок ончыкталт.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Файлым ӧрдыж программыште тӧрлаташ',
-'edit-externally-help' => '(Сайрак палашлан ончал [http://www.mediawiki.org/wiki/Manual:External_editors шындымаш нерген туныктымашым])',
+'edit-externally-help' => '(Сайрак палашлан ончал [//www.mediawiki.org/wiki/Manual:External_editors шындымаш нерген туныктымашым])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'чыла',
-'imagelistall' => 'чыла',
-'watchlistall2' => 'чыла',
-'namespacesall' => 'чыла',
-'monthsall' => 'чыла',
+'watchlistall2' => 'чыла',
+'namespacesall' => 'чыла',
+'monthsall' => 'чыла',
# action=purge
'confirm_purge_button' => 'Йӧра',
diff --git a/languages/messages/MessagesMin.php b/languages/messages/MessagesMin.php
index 4d3cf902..c48023fc 100644
--- a/languages/messages/MessagesMin.php
+++ b/languages/messages/MessagesMin.php
@@ -48,8 +48,8 @@ $messages = array(
'tog-shownumberswatching' => 'Tujuakkan jumlah pamantau',
'tog-oldsig' => 'Pratayang tando tangan:',
'tog-fancysig' => 'Palakuan tando tangan sabagai teks wiki (tanpa suatu tautan otomatis)',
-'tog-externaleditor' => 'Gunokan editor eksternal sacaro bawaan (untuak nan ahli sajo, kabutuahan pangaturan khusus pado komputer Sanak [http://www.mediawiki.org/wiki/Manual:External_editors Informasi labiah lanjuik.].)',
-'tog-externaldiff' => 'Gunokan diff eksternal sacaro bawaan (untuak nan ahli sajo, kabutuahan pangaturan khusus pado komputer Sanak [http://www.mediawiki.org/wiki/Manual:External_editors Informasi labiah lanjuik.].)',
+'tog-externaleditor' => 'Gunokan editor eksternal sacaro bawaan (untuak nan ahli sajo, kabutuahan pangaturan khusus pado komputer Sanak [//www.mediawiki.org/wiki/Manual:External_editors Informasi labiah lanjuik.].)',
+'tog-externaldiff' => 'Gunokan diff eksternal sacaro bawaan (untuak nan ahli sajo, kabutuahan pangaturan khusus pado komputer Sanak [//www.mediawiki.org/wiki/Manual:External_editors Informasi labiah lanjuik.].)',
'tog-showjumplinks' => 'Aktifkan tautan pambantu "langsuang ka"',
'tog-uselivepreview' => 'Gunokan pratayang langsuang (JavaScript) (eksperimental)',
'tog-forceeditsummary' => 'Ingekkan awak bilo kotak ringkasan suntiangan masih kosoang',
@@ -144,15 +144,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Laman nan diindeks',
'noindex-category' => 'Laman nan indak diindeks',
-
-'mainpagetext' => "'''MediaWiki alah tapasang jo sukses'''.",
-'mainpagedocfooter' => 'Silakan baco [http://www.mediawiki.org/wiki/Help:Contents/id Panduan Pangguno] untuak caro panggunoan parangkaik lunak wiki iko.
-
-== Mamulai panggunoan ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings/id Dafta pangaturan konfigurasi]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/id Dafta patanyoan nan acok diajukan manganai MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Milis rilis MediaWiki]',
+'broken-file-category' => 'Laman jo gambar rusak',
'about' => 'Tentang',
'article' => 'Artikel',
@@ -204,10 +196,10 @@ $messages = array(
'history' => 'Riwayat halaman',
'history_short' => 'Riwayat',
'updatedmarker' => 'diubah sajak kunjuangan tarakhir ambo',
-'info_short' => 'Informasi',
'printableversion' => 'Versi cetak',
'permalink' => 'Pranala permanen',
'print' => 'Cetak',
+'view' => 'Tampilkan',
'edit' => 'Suntiang',
'create' => 'Buek',
'editthispage' => 'Suntiang laman ko',
@@ -215,6 +207,7 @@ $messages = array(
'delete' => 'Hapuih',
'deletethispage' => 'Hapuih laman iko',
'undelete_short' => 'Batal hapuih $1 {{PLURAL:$1|suntiangan|suntiangan}}',
+'viewdeleted_short' => 'Liek {{PLURAL:$1|ciek suntiangan|$1 suntiangan}} nan dihapuih',
'protect' => 'Lindungi',
'protect_change' => 'ubah',
'protectthispage' => 'Lindungi laman iko',
@@ -298,6 +291,8 @@ $1',
'toc' => 'Kandungan',
'showtoc' => 'tampilkan',
'hidetoc' => 'suruakkan',
+'collapsible-collapse' => 'Ketekan',
+'collapsible-expand' => 'Kambangan',
'thisisdeleted' => 'Caliak atau kambalian $1?',
'viewdeleted' => 'Caliak $1?',
'restorelink' => 'Caliak {{PLURAL:$1|ciek suntiangan|$1 suntiangan}} nan dihapuih',
@@ -309,6 +304,8 @@ $1',
'page-rss-feed' => 'Umpan RSS "$1"',
'page-atom-feed' => '"$1" umpan Atom',
'red-link-title' => '$1 (laman alun tasadio)',
+'sort-descending' => 'Urutkan manurun',
+'sort-ascending' => 'Urutkan manaik',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Laman',
@@ -386,11 +383,13 @@ Mungkin alah dihapuih jo urang lain.',
'viewsourcetext' => 'Sanak dapek malihek atau manyalin sumber laman iko:',
'protectedinterface' => 'Laman iko barisi teks antarmuko untuak digunoan oleh parangkaik lunak dan alah dikunci untuak manghindari kasalahan.',
'editinginterface' => "'''Paringatan:''' Sanak manyuntiang suatu laman nan digunoan untuak manyediakan teks antarmuko untuak parangkaik lunak situs iko. Parubahan teks iko akan mampangaruhi tampilan pado antarmuko pangguno untuak pangguno lain.
-Untuak tarjamahan, harap gunokan [http://translatewiki.net/wiki/Main_Page?setlang=id translatewiki.net], proyek palokalan MediaWiki.",
+Untuak tarjamahan, harap gunokan [//translatewiki.net/wiki/Main_Page?setlang=id translatewiki.net], proyek palokalan MediaWiki.",
'sqlhidden' => '(Pamintaan SQL disuruakkan)',
'cascadeprotected' => 'Laman iko alah dilindungi dari panyuntiangan karano disartokan di {{PLURAL:$1|laman|laman-laman}} barikuik nan alah dilindungi jo opsi "runtun":
$2',
'namespaceprotected' => "Sanak ndak mampunyoi hak akses untuak manyuntiang laman di ruang namo '''$1'''.",
+'customcssprotected' => 'Sanak indak mampunyoi izin untuak maubah laman CSS iko, karano manganduang pangaturan pribadi pangguno lain.',
+'customjsprotected' => 'Sanak ndak mampunyo izin untuak maubah laman JavaScript iko, karano manganduang pangaturan pribadi pangguno lain.',
'ns-specialprotected' => 'Laman istimewa indak dapek disuntiang.',
'titleprotected' => "Judul iko alah dilindungi dari pambantuakan oleh [[User:$1|$1]].
Alasan nan diberikan adolah ''$2''.",
@@ -428,6 +427,7 @@ Akun Sanak alah dibuek. Jan lupo maatur konfigurasi [[Special:Preferences|prefer
'createaccount' => 'Buek akun baharu',
'gotaccount' => "Alah tadaftar sabagai pangguno? '''$1'''.",
'gotaccountlink' => 'Masuak log',
+'userlogin-resetlink' => 'Lupo detail info masuak Sanak?',
'createaccountmail' => 'malalui surel',
'createaccountreason' => 'Alasan:',
'badretype' => 'Kato sandi nan Sanak masuakkan salah.',
@@ -442,12 +442,16 @@ Sila aktifan, sasudah itu masuak log jo namo pangguno dan password baharu Sanak.
'nocookieslogin' => '{{SITENAME}} manggunokan cookies untuak log pangguno.
Sanak mampunyoi cookie nan dinonaktifan.
Sila aktifan dan cubo baliak.',
+'nocookiesfornew' => 'Akun pangguno indak dibuek karano kami indak dapek mamastian sumbernyo.
+Pastian Sanak alah mangaktifan kuki, lalu muek ulang laman iko dan cubo baliak.',
'noname' => 'Namo pangguno nan Sanak masuakkan indak sah.',
'loginsuccesstitle' => 'Berhasil masuak log',
'loginsuccess' => "'''Sanak kini lah masuak log di {{SITENAME}} sabagai \"\$1\".'''",
'nosuchuser' => 'Indak ado pangguno jo namo "$1".
Namo psngguno msmbedokan kapitalisasi.
Pariso baliak ejaan Sanak, atau [[Special:UserLogin/signup|buek akun baharu]].',
+'nosuchusershort' => 'Indak ado pangguno jo namo "$1".
+Sila pariso baliak ejaan Sanak.',
'nouserspecified' => 'Sanak harus mamasuakkan namo pangguno.',
'login-userblocked' => 'Pangguno iko diblokir. Indak diizinan/dipabuliahan untuak masuak log.',
'wrongpassword' => 'Kato sandi nan Sanak masuakkan salah. Sila cubo baliak.',
@@ -487,13 +491,14 @@ Sanak dapek maabaikan pasan iko jikok akun iko dibuek karano suatu kasalahan.',
'usernamehasherror' => 'Namo pangguno indak bisa mangandung tando paga',
'login-throttled' => 'Sanak alah bakali-kali mancoba masuak log.
Sila manunggu sabalun mancubo baliak.',
+'login-abort-generic' => 'Proses masuak Sanak indak berhasil - Dibatalan',
'loginlanguagelabel' => 'Baso: $1',
'suspicious-userlogout' => 'Pamintaan Sanak untuak kalua log ditolak karano tampaknyo dikirim oleh panjalajah nan rusak atau proksi panyinggah.',
# E-mail sending
'php-mail-error-unknown' => 'Kasalahan nan indak dikana dalam fungsi mail() PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Tuka kato sandi',
'resetpass_announce' => 'Sanak alah masauk log jo kode samantaro nan dikirim malalui surel. Untuak malanjuikkan, Sanak harus mamasuakan kato sandi baru di siko:',
'resetpass_header' => 'Tuka kato sandi akun',
@@ -511,6 +516,38 @@ Kini mamproses masuak log Sanak...',
Sanak mungkin alah berhasil mangganti kato sandi Sanak atau alah maminto kato sandi samantaro nan baharu.',
'resetpass-temp-password' => 'Kato sandi samantaro:',
+# Special:PasswordReset
+'passwordreset' => 'Setel ulang sandi',
+'passwordreset-text' => 'Langkapi formulir iko untuak manarimo surel pangingek detail akun Sanak.',
+'passwordreset-legend' => 'Tuka baliak kato sandi',
+'passwordreset-disabled' => 'Panukaran baliak kato sandi alah dimatian di wiki iko.',
+'passwordreset-pretext' => '{{PLURAL:$1||Masuakan ciek data di bawah iko}}',
+'passwordreset-username' => 'Namo pangguno:',
+'passwordreset-email' => 'Alamaik surel:',
+'passwordreset-emailtitle' => 'Detail akun di {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Sasaurang (mungkin Sanak, dari alamaik IP $1) maminta pangingek
+detail akun untuak {{SITENAME}} ($4). {{PLURAL:$3|Akun|Akun-akun}} barikuik
+takaik jo alamaik surel iko:
+
+$2
+
+{{PLURAL:$3|Sandi samantaro|Sandi samantaro}} barikuik akan kadaluwarsa dalam {{PLURAL:$5|sahari|$5 hari}}.
+Sanak harus masuak dan mamiliah sandi baharu kini. Jikok urang lain mambuek
+pamintaan iko atau jikok Sanak ingek sandi asali dan indak lai
+ingin maubahnyo, Sanak dapek mabaikan pasan iko dan taruih manggunoan sandi lamo.',
+'passwordreset-emailtext-user' => 'Sasaurang (mungkin Sanak, dari alamaik IP $1) maminta pangingek detail akun untuak {{SITENAME}} ($4).
+{{PLURAL:$3|Akun|Akun-akun}} barikuik takaik jo alamaik surel iko:
+
+$2
+
+{{PLURAL:$3|Sandi samantaro|Sandi samantaro}} barikuik akan kadaluwarsa dalam {{PLURAL:$5|sahari|$5 hari}}.
+Sanak harus masuak dan mamiliah sandi baharu kini. Jikok urang lain mambuek
+pamintaan iko atau jikok Sanak ingek sandi asali dan indak lai
+ingin maubahnyo, Sanak dapek maabaikan pasan iko dan taruih manggunokan sandi lamo.',
+'passwordreset-emailelement' => 'Namo pangguno: $1
+Sandi samantaro: $2',
+'passwordreset-emailsent' => 'Surel pangingek alah dikiriman.',
+
# Edit page toolbar
'bold_sample' => 'Teks dicetak taba',
'bold_tip' => 'Teks dicetak taba',
@@ -522,8 +559,6 @@ Sanak mungkin alah berhasil mangganti kato sandi Sanak atau alah maminto kato sa
'extlink_tip' => 'Pranala lua (ingek awalannyo http://)',
'headline_sample' => 'Teks tajuk',
'headline_tip' => 'Tingkek 2 tajuk',
-'math_sample' => 'Masuakkan rumus di siko',
-'math_tip' => 'Rumus matematika (LaTeX)',
'nowiki_sample' => 'Masuakkan disiko teks yang indak diformat',
'nowiki_tip' => 'Abaikan pemformatan wiki',
'image_tip' => 'Cantumkan berkas',
@@ -609,6 +644,7 @@ Awak dapek [[Special:Search/{{PAGENAME}}|mancari judul laman ko]] pado laman lai
atau [{{fullurl:{{FULLPAGENAME}}|action=edit}} suntiang laman ko]</span>.',
'noarticletext-nopermission' => 'Kini ko indak ado teks dalam laman iko.
Sanak dapek [[Special:Search/{{PAGENAME}}|malakukan pancaharian untuak judul laman iko]] di laman-laman lain, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mancahari log takaik], atau [{{fullurl:{{FULLPAGENAME}}|action=edit}} manyuntiang laman iko]</span>.',
+'userpage-userdoesnotexist' => 'Akun pangguno "<nowiki>$1</nowiki>" indak tadafta.',
'userpage-userdoesnotexist-view' => 'Pangguno "$1" indak tadafta.',
'blocked-notice-logextract' => 'Pangguno iko sadang diblokir.
Entri log pamblokiran tabaharu iko disadioan di bawah iko untuak referensi:',
@@ -643,6 +679,7 @@ Jikok masih tatap indak bahasil, cubolah [[Special:UserLogout|kalua log]] dan ma
'token_suffix_mismatch' => "'''Suntiangan Sanak ditolak karano aplikasi klien Sanak maubah karakter tando baco pado suntiangan.'''
Suntiangan tasabuik ditolak untuak mancegah kasalahan pado teks laman.
Hal iko kadang tajadi jikok Sanak manggunokan layanan proxy anonim babasis web nan bamasalah.",
+'edit_form_incomplete' => "'''Babarapo bagian dari formulir suntiangan indak mancapai server; pariso baliak apokah suntiangan Sanak tatap utuah dan cubo lai.'''",
'editing' => 'Manyuntiang $1',
'editingsection' => 'Suntiang $1 (bagian)',
'editingcomment' => 'Manyuntiang $1 (bahagian baharu)',
@@ -798,10 +835,15 @@ Cubo awali permintaan awak tu jo ''all:'' untuak mancari sado kandungan (tamasua
'powersearch-field' => 'Mancari',
# Preferences page
-'preferences' => 'Preferensi',
-'mypreferences' => 'Preferensi denai',
-'youremail' => 'Surek Elektronik:',
-'yourrealname' => 'Namo sabananyo:',
+'preferences' => 'Preferensi',
+'mypreferences' => 'Preferensi denai',
+'prefs-beta' => 'Corak Beta',
+'prefs-labs' => 'Corak Uji',
+'youremail' => 'Surek Elektronik:',
+'yourrealname' => 'Namo sabananyo:',
+'prefs-help-email' => 'Alamaik surek elektronik ko hanyo tambahan se, namun paralu untuak maulang kato kunci, jiko awak ang lupo kato kunci.',
+'prefs-help-email-others' => 'Awak ang juo dapek mamiliah untuak mangizinkan urang lain manghubungi awak ang jo surek elektronik malalui laman pangguno atau laman ota.
+Alamaik surek elektronik awak ang tu indak kan katahuan dek urang lain nan manghubungi awak ang tu.',
# Groups
'group-sysop' => 'Pengurus',
@@ -940,10 +982,8 @@ Deskripsi dari [$2 laman deskripsi berkas] ditampilkan di bawah.',
'watchlist' => 'Senarai pantauan denai',
'mywatchlist' => 'Senarai pantauan den',
'watchlistfor2' => 'Untuak $1 $2',
-'addedwatch' => 'Lah ditambahkan ka senarai pantauan',
'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.",
-'removedwatch' => 'Lah dihapuih dari senarai pantauan',
'removedwatchtext' => 'Laman "[[:$1]]" lah dihapuih dari [[Special:Watchlist|senarai pantauan awak]].',
'watch' => 'Pantau',
'watchthispage' => 'Pantau laman ko',
@@ -962,7 +1002,7 @@ Parubahan laman ko tamasuak laman otanyo akan ditampilkan dalam '''cetak taba'''
Pastikan awak mainginkannyo, dan awak lah tahu sagalo akibatnyo dan sasuai jo [[{{MediaWiki:Policy-url}}|kebijakan]] yang balaku.',
'actioncomplete' => 'Proses selesai',
'actionfailed' => 'Aksi gagal',
-'deletedtext' => '"<nowiki>$1</nowiki>" lah dihapuih.
+'deletedtext' => '"$1" lah dihapuih.
Lihek $2 untuak rekam jejak laman yang lah dihapuih.',
'deletedarticle' => 'dihapuih "[[$1]]"',
'dellogpage' => 'Log penghapusan',
@@ -981,7 +1021,7 @@ Lihek $2 untuak rekam jejak laman yang lah dihapuih.',
'protectexpiry' => 'Kadaluwarsa:',
'protect_expiry_invalid' => 'Maso kadaluwarsa indak balaku',
'protect_expiry_old' => 'Maso kadaluwarsa adolah pado maso lampau',
-'protect-text' => "Awak buliah malihek jo mangganti tingkek perlindungan di siko untuak laman '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Awak buliah malihek jo mangganti tingkek perlindungan di siko untuak laman '''$1'''.",
'protect-locked-access' => "Akun awak indak berhak untuak maubah tingkek perlindungan laman ko.
Berikut ko pengaturan yang balaku untuak laman '''$1''':",
'protect-cascadeon' => 'Laman ko sedang dilindungi karano tamasuak dalam {{PLURAL:$1|laman|laman}} aktif perlindungan batingkek.
@@ -1158,9 +1198,7 @@ Awak hanyo buliah lihek sumber se',
'tooltip-summary' => 'Masuakan sabuah ringkasan pendek',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata dimatian untuak layanan ko',
-'nocreativecommons' => 'Creative Commons RDF metadata dimatian untuak layanan ko',
-'notacceptable' => 'Layanan wiki indak manyadioan data dalam format yang dapek dibaco dek pelanggan awak.',
+'notacceptable' => 'Layanan wiki indak manyadioan data dalam format yang dapek dibaco dek pelanggan awak.',
# Patrol log
'patrol-log-line' => 'manandoi $1 dari $2 nan tajago $3',
@@ -1171,11 +1209,10 @@ Awak hanyo buliah lihek sumber se',
'nextdiff' => 'Revisi salanjuiknyo →',
# Media information
-'file-info-size' => '$1 × $2 piksel, ukuran berkas: $3, tipe MIME: $4',
-'file-nohires' => '<small>Indak tasadio resolusi yang labiah tinggi.</small>',
-'svg-long-desc' => 'SVG berkas, nominal $1 × $2 piksel, ukuran berkas: $3',
-'show-big-image' => 'Resolusi penuh',
-'show-big-image-thumb' => '<small>Ukuran pratonton ini: $1 × $2 piksel</small>',
+'file-info-size' => '$1 × $2 piksel, ukuran berkas: $3, tipe MIME: $4',
+'file-nohires' => '<small>Indak tasadio resolusi yang labiah tinggi.</small>',
+'svg-long-desc' => 'SVG berkas, nominal $1 × $2 piksel, ukuran berkas: $3',
+'show-big-image' => 'Resolusi penuh',
# Bad image list
'bad_image_list' => 'Formatnyo sabagai berikut:
@@ -1189,7 +1226,7 @@ Pranala-pranala salanjuiknyo pado barih nan samo dianggap sabagai pengecualian,
'metadata-help' => 'Berkas ko mengandung informasi tambahan yang mungkin ditambahkan dek kamera digital atau pemindai yang digunokan untuak mambuek atau mendigitalisasi berkas. Jiko berkas ko lah mangalami modifikasi, rincian yang ado mungkin indak sacaro penuh merefleksikan modifikasi berkas tu.',
'metadata-expand' => 'Tampilkan rincian tambahan',
'metadata-collapse' => 'Suruakkan rincian tambahan',
-'metadata-fields' => 'Pesan EXIF metadata ko akan ditampilkan pado laman informasi gambar jiko tabel metadata disuruakkan.
+'metadata-fields' => 'Tapak metadata gambar nan disenaraikan dalam pasan ko akan di masuakan pado tampilan laman gambar katiko tabel metadata disuruakkan.
Nan lainnyo akan tasuruak sacaro default.
* make
* model
@@ -1197,11 +1234,17 @@ Nan lainnyo akan tasuruak sacaro default.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Suntiang berkas ko dengan aplikasi lua',
-'edit-externally-help' => '(Lihek [http://www.mediawiki.org/wiki/Manual:External_editors instruksi pengaturan] untuak maklumat lanjutnyo)',
+'edit-externally-help' => '(Lihek [//www.mediawiki.org/wiki/Manual:External_editors instruksi pengaturan] untuak maklumat lanjutnyo)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'semua',
diff --git a/languages/messages/MessagesMk.php b/languages/messages/MessagesMk.php
index 9eb7d22d..0aeb57e0 100644
--- a/languages/messages/MessagesMk.php
+++ b/languages/messages/MessagesMk.php
@@ -90,100 +90,102 @@ $dateFormats = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ДвојниПренаÑочувања' ),
+ 'Activeusers' => array( 'ÐктивниКориÑници' ),
+ 'Allmessages' => array( 'СитеПораки' ),
+ 'Allpages' => array( 'СитеСтраници' ),
+ 'Ancientpages' => array( 'ÐајÑтариСтраници' ),
+ 'Blankpage' => array( 'ПразнаСтраница' ),
+ 'Block' => array( 'Блокирање', 'БлокIP', 'БлокирајКориÑник' ),
+ 'Blockme' => array( 'БлокирајМе' ),
+ 'Booksources' => array( 'ПечатенИзвор' ),
'BrokenRedirects' => array( 'ПрекинатиПренаÑочувања' ),
- 'Disambiguations' => array( 'ПојаÑнувања' ),
- 'Userlogin' => array( 'Ðајавување' ),
- 'Userlogout' => array( 'Одјавување' ),
+ 'Categories' => array( 'Категории' ),
+ 'ChangePassword' => array( 'СмениЛозинка' ),
+ 'ComparePages' => array( 'СпоредиСтраници' ),
+ 'Confirmemail' => array( 'Потврди_е-пошта' ),
+ 'Contributions' => array( 'ПридонеÑи' ),
'CreateAccount' => array( 'СоздајКориÑничкаСметка' ),
- 'Preferences' => array( 'Ðагодувања' ),
- 'Watchlist' => array( 'СпиÑокÐаÐабљудувања' ),
- 'Recentchanges' => array( 'СкорешниПромени' ),
- 'Upload' => array( 'Подигање', 'Подигања' ),
- 'UploadStash' => array( 'СкриениПодигања' ),
+ 'Deadendpages' => array( 'ЌорÑокакСтраници' ),
+ 'DeletedContributions' => array( 'ИзбришаниПридонеÑи' ),
+ 'Disambiguations' => array( 'ПојаÑнувања' ),
+ 'DoubleRedirects' => array( 'ДвојниПренаÑочувања' ),
+ 'EditWatchlist' => array( 'УредиÐабљудувања' ),
+ 'Emailuser' => array( 'Пиши_е-пошта_на_кориÑникот' ),
+ 'Export' => array( 'Извоз' ),
+ 'Fewestrevisions' => array( 'ÐајмалкуРевизии' ),
+ 'FileDuplicateSearch' => array( 'ПребарувањеДупликатПодатотека' ),
+ 'Filepath' => array( 'ПатДоПодатотека' ),
+ 'Import' => array( 'Увоз' ),
+ 'Invalidateemail' => array( 'ПогрешнаЕпошта' ),
+ 'BlockList' => array( 'СпиÑокÐаБлокираниIP' ),
+ 'LinkSearch' => array( 'ПребарајВрÑка' ),
+ 'Listadmins' => array( 'СпиÑокÐаÐдминиÑтратори' ),
+ 'Listbots' => array( 'СпиÑокÐаБотови' ),
'Listfiles' => array( 'СпиÑокÐаПодатотеки', 'СпиÑокÐаСлики' ),
- 'Newimages' => array( 'ÐовиСлики', 'ÐовиПодатотеки' ),
- 'Listusers' => array( 'СпиÑокÐаКориÑници', 'СпиÑокКориÑници' ),
'Listgrouprights' => array( 'СпиÑокÐаГрупниПрава' ),
- 'Statistics' => array( 'СтатиÑтики' ),
- 'Randompage' => array( 'Случајна', 'СлучајнаСтраница' ),
+ 'Listredirects' => array( 'СпиÑокÐаПренаÑочувања' ),
+ 'Listusers' => array( 'СпиÑокÐаКориÑници', 'СпиÑокКориÑници' ),
+ 'Lockdb' => array( 'ЗаклучиБаза' ),
+ 'Log' => array( 'Дневник', 'Дневници' ),
'Lonelypages' => array( 'ОÑамениСтраници', 'СтранциСирачиња' ),
- 'Uncategorizedpages' => array( 'ÐекатегоризираниСтраници' ),
- 'Uncategorizedcategories' => array( 'ÐекатегоризираниКатегории' ),
- 'Uncategorizedimages' => array( 'ÐекатегоризираниСлики' ),
- 'Uncategorizedtemplates' => array( 'ÐекатегоризираниШаблони' ),
- 'Unusedcategories' => array( 'ÐеиÑкориÑтениКатегории' ),
- 'Unusedimages' => array( 'ÐеиÑкориÑтениСлики', 'ÐеиÑкориÑтениПодатотеки' ),
- 'Wantedpages' => array( 'ПрекинатиВрÑки' ),
- 'Wantedcategories' => array( 'ПотребниКатегории' ),
- 'Wantedfiles' => array( 'ПотребниПодатотеки' ),
- 'Wantedtemplates' => array( 'ПотребниШаблони' ),
+ 'Longpages' => array( 'ДолгиСтраници' ),
+ 'MergeHistory' => array( 'СпојувањеИÑторија' ),
+ 'MIMEsearch' => array( 'MIMEПребарување' ),
+ 'Mostcategories' => array( 'ÐајмногуКатегории' ),
+ 'Mostimages' => array( 'ÐајмногуСлики', 'ÐајмногуПодатотеки', 'ПодатотекиСоÐајмногуВрÑки' ),
'Mostlinked' => array( 'СоÐајмногуВрÑки', 'СтранициСоÐајмногуВрÑки' ),
'Mostlinkedcategories' => array( 'ÐајупотребуваниКатегории' ),
'Mostlinkedtemplates' => array( 'ÐајупотребуваниШаблони' ),
- 'Mostimages' => array( 'ÐајмногуСлики', 'ÐајмногуПодатотеки', 'ПодатотекиСоÐајмногуВрÑки' ),
- 'Mostcategories' => array( 'ÐајмногуКатегории' ),
'Mostrevisions' => array( 'ÐајмногуРевизии' ),
- 'Fewestrevisions' => array( 'ÐајмалкуРевизии' ),
- 'Shortpages' => array( 'КраткиСтраници' ),
- 'Longpages' => array( 'ДолгиСтраници' ),
+ 'Movepage' => array( 'ПремеÑтиСтраница' ),
+ 'Mycontributions' => array( 'МоиПридонеÑи' ),
+ 'Mypage' => array( 'МојаСтраница' ),
+ 'Mytalk' => array( 'МојРазговор', 'МоиРазговори' ),
+ 'Myuploads' => array( 'МоиПодигања' ),
+ 'Newimages' => array( 'ÐовиСлики', 'ÐовиПодатотеки' ),
'Newpages' => array( 'ÐовиСтраници' ),
- 'Ancientpages' => array( 'ÐајÑтариСтраници' ),
- 'Deadendpages' => array( 'ЌорÑокакСтраници' ),
+ 'PasswordReset' => array( 'ПроменаÐаЛозинка' ),
+ 'PermanentLink' => array( 'ПоÑтојанаВрÑка' ),
+ 'Popularpages' => array( 'ПопуларниСтраници' ),
+ 'Preferences' => array( 'Ðагодувања' ),
+ 'Prefixindex' => array( 'ИндекÑÐаПрефикÑи' ),
'Protectedpages' => array( 'ЗаштитениСтраници' ),
'Protectedtitles' => array( 'ЗаштитениÐаÑлови' ),
- 'Allpages' => array( 'СитеСтраници' ),
- 'Prefixindex' => array( 'ИндекÑÐаПрефикÑи' ),
- 'Ipblocklist' => array( 'СпиÑокÐаБлокираниIP' ),
- 'Unblock' => array( 'Одблокирај' ),
- 'Specialpages' => array( 'СпецијалниСтраници' ),
- 'Contributions' => array( 'ПридонеÑи' ),
- 'Emailuser' => array( 'Пиши_е-пошта_на_кориÑникот' ),
- 'Confirmemail' => array( 'Потврди_е-пошта' ),
- 'Whatlinkshere' => array( 'ШтоВодиОвде' ),
+ 'Randompage' => array( 'Случајна', 'СлучајнаСтраница' ),
+ 'Randomredirect' => array( 'СлучајноПренаÑочување' ),
+ 'Recentchanges' => array( 'СкорешниПромени' ),
'Recentchangeslinked' => array( 'ПоврзаниПромени' ),
- 'Movepage' => array( 'ПремеÑтиСтраница' ),
- 'Blockme' => array( 'БлокирајМе' ),
- 'Booksources' => array( 'ПечатенИзвор' ),
- 'Categories' => array( 'Категории' ),
- 'Export' => array( 'Извоз' ),
- 'Version' => array( 'Верзија' ),
- 'Allmessages' => array( 'СитеПораки' ),
- 'Log' => array( 'Дневник', 'Дневници' ),
- 'Blockip' => array( 'Блокирање', 'БлокIP', 'БлокирајКориÑник' ),
+ 'Revisiondelete' => array( 'БришењеРевизија' ),
+ 'RevisionMove' => array( 'ПремеÑтиРевизија' ),
+ 'Search' => array( 'Барај' ),
+ 'Shortpages' => array( 'КраткиСтраници' ),
+ 'Specialpages' => array( 'СпецијалниСтраници' ),
+ 'Statistics' => array( 'СтатиÑтики' ),
+ 'Tags' => array( 'Oзнаки', 'Приврзоци' ),
+ 'Unblock' => array( 'Одблокирај' ),
+ 'Uncategorizedcategories' => array( 'ÐекатегоризираниКатегории' ),
+ 'Uncategorizedimages' => array( 'ÐекатегоризираниСлики' ),
+ 'Uncategorizedpages' => array( 'ÐекатегоризираниСтраници' ),
+ 'Uncategorizedtemplates' => array( 'ÐекатегоризираниШаблони' ),
'Undelete' => array( 'Врати' ),
- 'Import' => array( 'Увоз' ),
- 'Lockdb' => array( 'ЗаклучиБаза' ),
'Unlockdb' => array( 'ОтклучиБаза' ),
- 'Userrights' => array( 'КориÑничкиПрава' ),
- 'MIMEsearch' => array( 'MIMEПребарување' ),
- 'FileDuplicateSearch' => array( 'ПребарувањеДупликатПодатотека' ),
- 'Unwatchedpages' => array( 'ÐенабљудуваниСтраници' ),
- 'Listredirects' => array( 'СпиÑокÐаПренаÑочувања' ),
- 'Revisiondelete' => array( 'БришењеРевизија' ),
+ 'Unusedcategories' => array( 'ÐеиÑкориÑтениКатегории' ),
+ 'Unusedimages' => array( 'ÐеиÑкориÑтениСлики', 'ÐеиÑкориÑтениПодатотеки' ),
'Unusedtemplates' => array( 'ÐеиÑкориÑтениШаблони' ),
- 'Randomredirect' => array( 'СлучајноПренаÑочување' ),
- 'Mypage' => array( 'МојаСтраница' ),
- 'Mytalk' => array( 'МојРазговор', 'МоиРазговори' ),
- 'Mycontributions' => array( 'МоиПридонеÑи' ),
- 'Myuploads' => array( 'МоиПодигања' ),
- 'Listadmins' => array( 'СпиÑокÐаÐдминиÑтратори' ),
- 'Listbots' => array( 'СпиÑокÐаБотови' ),
- 'Popularpages' => array( 'ПопуларниСтраници' ),
- 'Search' => array( 'Барај' ),
- 'Resetpass' => array( 'СмениЛозинка' ),
+ 'Unwatchedpages' => array( 'ÐенабљудуваниСтраници' ),
+ 'Upload' => array( 'Подигање', 'Подигања' ),
+ 'UploadStash' => array( 'СкриениПодигања' ),
+ 'Userlogin' => array( 'Ðајавување' ),
+ 'Userlogout' => array( 'Одјавување' ),
+ 'Userrights' => array( 'КориÑничкиПрава' ),
+ 'Version' => array( 'Верзија' ),
+ 'Wantedcategories' => array( 'ПотребниКатегории' ),
+ 'Wantedfiles' => array( 'ПотребниПодатотеки' ),
+ 'Wantedpages' => array( 'ПрекинатиВрÑки' ),
+ 'Wantedtemplates' => array( 'ПотребниШаблони' ),
+ 'Watchlist' => array( 'СпиÑокÐаÐабљудувања' ),
+ 'Whatlinkshere' => array( 'ШтоВодиОвде' ),
'Withoutinterwiki' => array( 'БезИнтервики' ),
- 'MergeHistory' => array( 'СпојувањеИÑторија' ),
- 'Filepath' => array( 'ПатДоПодатотека' ),
- 'Invalidateemail' => array( 'ПогрешнаЕпошта' ),
- 'Blankpage' => array( 'ПразнаСтраница' ),
- 'LinkSearch' => array( 'ПребарајВрÑка' ),
- 'DeletedContributions' => array( 'ИзбришаниПридонеÑи' ),
- 'Tags' => array( 'Oзнаки', 'Приврзоци' ),
- 'Activeusers' => array( 'ÐктивниКориÑници' ),
- 'ComparePages' => array( 'СпоредиСтраници' ),
- 'Badtitle' => array( 'ЛошÐаÑлов' ),
- 'DisableAccount' => array( 'ОневозможиСметка' ),
);
$magicWords = array(
@@ -192,7 +194,7 @@ $magicWords = array(
'nogallery' => array( '0', '__БЕЗГÐЛЕРИЈÐ__', '__NOGALLERY__' ),
'forcetoc' => array( '0', '__СОСОДРЖИÐÐ__', '__FORCETOC__' ),
'toc' => array( '0', '__СОДРЖИÐÐ__', '__TOC__' ),
- 'noeditsection' => array( '0', '__БЕЗ_УРЕДУВÐЊЕ_ÐÐ_СЕКЦИИ__', '__NOEDITSECTION__' ),
+ 'noeditsection' => array( '0', '__БЕЗ_УРЕДУВÐЊЕ_ÐÐ_ПОДÐÐСЛОВИ__', '__NOEDITSECTION__' ),
'noheader' => array( '0', '__БЕЗÐÐСЛОВ__', '__NOHEADER__' ),
'currentmonth' => array( '1', 'ТЕКОВЕÐМЕСЕЦ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonth1' => array( '1', 'ТЕКОВЕÐМЕСЕЦ1', 'CURRENTMONTH1' ),
@@ -202,8 +204,8 @@ $magicWords = array(
'currentday' => array( '1', 'ТЕКОВЕÐДЕÐ', 'CURRENTDAY' ),
'currentday2' => array( '1', 'ТЕКОВЕÐДЕÐ2', 'CURRENTDAY2' ),
'currentdayname' => array( '1', 'ТЕКОВЕÐДЕÐИМЕ', 'CURRENTDAYNAME' ),
- 'currentyear' => array( '1', 'СЕГÐШÐÐГОДИÐÐ', 'CURRENTYEAR' ),
- 'currenttime' => array( '1', 'СЕГÐШÐОВРЕМЕ', 'CURRENTTIME' ),
+ 'currentyear' => array( '1', 'ТЕКОВÐÐГОДИÐÐ', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'ТЕКОВÐОВРЕМЕ', 'CURRENTTIME' ),
'currenthour' => array( '1', 'ТЕКОВЕÐЧÐС', 'CURRENTHOUR' ),
'localmonth' => array( '1', 'МЕСЕЦ_ЛОКÐЛÐО', 'LOCALMONTH', 'LOCALMONTH2' ),
'localmonth1' => array( '1', 'МЕСЕЦ_ЛОКÐЛÐО1', 'LOCALMONTH1' ),
@@ -229,6 +231,7 @@ $magicWords = array(
'subpagename' => array( '1', 'ИМЕÐÐПОТСТРÐÐИЦÐ', 'SUBPAGENAME' ),
'basepagename' => array( '1', 'ИМЕÐÐОСÐОВÐÐСТРÐÐИЦÐ', 'BASEPAGENAME' ),
'talkpagename' => array( '1', 'СТРÐÐИЦÐЗÐРÐЗГОВОР', 'TALKPAGENAME' ),
+ 'subjectpagename' => array( '1', 'ИМЕÐÐСТÐТИЈÐ', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
'subst' => array( '0', 'ЗÐМЕÐИ:', 'SUBST:' ),
'safesubst' => array( '0', 'БЕЗБЗÐМЕÐИ', 'SAFESUBST:' ),
'msgnw' => array( '0', 'ИЗВЕШТNW:', 'MSGNW:' ),
@@ -254,14 +257,15 @@ $magicWords = array(
'img_text_bottom' => array( '1', 'текÑÑ‚-дно', 'текÑÑ‚-најдолу', 'text-bottom' ),
'img_link' => array( '1', 'врÑка=$1', 'link=$1' ),
'img_alt' => array( '1', 'алт=$1', 'alt=$1' ),
- 'sitename' => array( '1', 'ИМЕÐÐМРЕЖÐОМЕСТО', 'ИМЕÐÐСÐЈТ', 'SITENAME' ),
+ 'sitename' => array( '1', 'ИМЕÐÐМРЕЖÐОМЕСТО', 'SITENAME' ),
'localurl' => array( '0', 'ЛОКÐЛÐÐÐДРЕСÐ:', 'LOCALURL:' ),
'localurle' => array( '0', 'ЛОКÐЛÐÐÐДРЕСÐИ:', 'LOCALURLE:' ),
'server' => array( '0', 'ОПСЛУЖУВÐЧ', 'SERVER' ),
'servername' => array( '0', 'ИМЕÐÐОПСЛУЖУВÐЧ', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'ПÐТЕКÐÐÐСКРИПТÐ', 'SCRIPTPATH' ),
'grammar' => array( '0', 'ГРÐÐœÐТИКÐ:', 'GRAMMAR:' ),
'gender' => array( '0', 'ПОЛ:', 'GENDER:' ),
- 'currentweek' => array( '1', 'СЕГÐШÐÐСЕДМИЦÐ', 'CURRENTWEEK' ),
+ 'currentweek' => array( '1', 'ТЕКОВÐÐСЕДМИЦÐ', 'CURRENTWEEK' ),
'currentdow' => array( '1', 'ТЕКОВЕÐДЕÐВОСЕДМИЦÐТÐ', 'CURRENTDOW' ),
'localweek' => array( '1', 'СЕДМИЦÐ_ЛОКÐЛÐО', 'LOCALWEEK' ),
'localdow' => array( '1', 'ЛОКÐЛЕÐДЕÐВОСЕДМИЦÐТÐ', 'LOCALDOW' ),
@@ -288,14 +292,18 @@ $magicWords = array(
'pagesinnamespace' => array( '1', 'СТРÐÐИЦИВОИМЕÐСКИПРОСТОР', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
'numberofadmins' => array( '1', 'БРОЈÐÐÐДМИÐИСТРÐТОРИ', 'NUMBEROFADMINS' ),
'formatnum' => array( '0', 'ФОРМÐТБРОЈ', 'FORMATNUM' ),
+ 'padleft' => array( '0', 'ПОСТÐВИЛЕВО', 'PADLEFT' ),
+ 'padright' => array( '0', 'ПОСТÐВИДЕСÐО', 'PADRIGHT' ),
'special' => array( '0', 'Ñпецијална', 'Ñпецијални', 'special' ),
'defaultsort' => array( '1', 'ОСÐОВÐОПОДРЕДУВÐЊЕ:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'filepath' => array( '0', 'ПОДÐТОТЕЧÐÐПÐТЕКÐ:', 'FILEPATH:' ),
'tag' => array( '0', 'ознака', 'tag' ),
'hiddencat' => array( '1', '__СКРИЕÐÐ_КÐТЕГОРИЈÐ__', '__СКРИЕÐÐКÐТЕГОРИЈÐ__', '__HIDDENCAT__' ),
'pagesincategory' => array( '1', 'СТРÐÐИЦИВОКÐТЕГОРИЈÐ', 'СТРÐÐИЦИВОКÐТ', 'PAGESINCATEGORY', 'PAGESINCAT' ),
'pagesize' => array( '1', 'ГОЛЕМИÐÐ_ÐÐ_СТРÐÐИЦÐ', 'PAGESIZE' ),
'index' => array( '1', '__ИÐДЕКС__', '__INDEX__' ),
'noindex' => array( '1', '__БЕЗИÐДЕКС__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'БРОЈВОГРУПÐ', 'NUMBERINGROUP', 'NUMINGROUP' ),
'staticredirect' => array( '1', '__СТÐТИЧÐОПРЕÐÐСОЧУВÐЊЕ__', '__STATICREDIRECT__' ),
'protectionlevel' => array( '1', 'ÐИВОÐÐЗÐШТИТÐ', 'PROTECTIONLEVEL' ),
'formatdate' => array( '0', 'форматнадатум', 'formatdate', 'dateformat' ),
@@ -312,7 +320,7 @@ $messages = array(
'tog-underline' => 'Потцртување на врÑки:',
'tog-highlightbroken' => 'Формат на неправилни врÑки <a href="" class="new">на овој начин</a> (алтернативно: вака<a href="" class="internal">?</a>).',
'tog-justify' => 'ДвоÑтранично порамнување на параграфите',
-'tog-hideminor' => 'Скриј ги Ñитните уредувања во Ñкорешните промени',
+'tog-hideminor' => 'Скривај ги Ñитните уредувања во Ñкорешните промени',
'tog-hidepatrolled' => 'Скриј иÑпатролирани уредувања во Ñкорешните промени',
'tog-newpageshidepatrolled' => 'Скриј иÑпатролирани Ñтраници од ÑпиÑокот на нови Ñтраници',
'tog-extendwatchlist' => 'Прошири го ÑпиÑок на набљудувања за приказ на Ñите промени, не Ñамо Ñкорешните',
@@ -339,10 +347,10 @@ $messages = array(
'tog-shownumberswatching' => 'Прикажи го бројот на кориÑници кои набљудуваат',
'tog-oldsig' => 'ПоÑтоечки потпиÑ:',
'tog-fancysig' => 'Третирај го потпиÑот како викитекÑÑ‚ (без автоматÑка врÑка)',
-'tog-externaleditor' => 'По оÑновно кориÑти надворешен уредувач (Ñамо за екÑперти, потребно е поÑебно нагодување на Ñметачот. [http://www.mediawiki.org/wiki/Manual:External_editors Повеќе информации.])',
-'tog-externaldiff' => 'По оÑновно кориÑти надворешен програм за Ñпоредување верзии (Ñамо за Ñтручњаци, потребно е Ñпецијално нагодување на Ñметачот. [http://www.mediawiki.org/wiki/Manual:External_editors Повеќе информации.])',
+'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' => 'Скриј ботовÑки уредувања од ÑпиÑокот на набљудувања',
@@ -362,7 +370,7 @@ $messages = array(
'underline-default' => 'Според нагодувањата на прелиÑтувачот',
# Font style option in Special:Preferences
-'editfont-style' => 'Фонт кој Ñе кориÑти во прозорецот за уредување:',
+'editfont-style' => 'Фонт во полето за уредување:',
'editfont-default' => 'ОÑновен прелиÑтувач:',
'editfont-monospace' => 'Сразмерно широк фонт',
'editfont-sansserif' => 'БеÑÑерифен фонт',
@@ -437,15 +445,9 @@ $messages = array(
'listingcontinuesabbrev' => 'продолжува',
'index-category' => 'ИндекÑирани Ñтраници',
'noindex-category' => 'ÐеиндекÑирани Ñтраници',
+'broken-file-category' => 'Страници Ñо прекинати врÑки до податотеки',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''МедијаВики е уÑпешно инÑталиран.'''",
-'mainpagedocfooter' => 'Погледнете го [http://meta.wikimedia.org/wiki/Help:Contents УпатÑтвото за кориÑници] за подетални иформации како Ñе кориÑти вики-програмот.
-
-==Од каде да почнете==
-* [http://meta.wikimedia.org/wiki/Manual:Configuration_settings СпиÑок на нагодувања]
-* [http://meta.wikimedia.org/wiki/Manual:FAQ ЧПП (чеÑто поÑтавувани прашања) за МедијаВики].
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ПоштенÑки ÑпиÑок на МедијаВики за нови верзии]',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Информации за',
'article' => 'Статија',
@@ -497,10 +499,10 @@ $messages = array(
'history' => 'иÑторија',
'history_short' => 'ИÑторија',
'updatedmarker' => 'подновено од мојата поÑледна поÑета',
-'info_short' => 'Информации',
'printableversion' => 'Верзија за печатење',
'permalink' => 'ПоÑтојана врÑка',
'print' => 'Печати',
+'view' => 'Преглед',
'edit' => 'Уреди',
'create' => 'Создај',
'editthispage' => 'Уреди ја Ñтраницава',
@@ -508,6 +510,7 @@ $messages = array(
'delete' => 'Избриши',
'deletethispage' => 'Избриши ја оваа Ñтраница',
'undelete_short' => 'Врати {{PLURAL:$1|едно уредување|$1 уредувања}}',
+'viewdeleted_short' => 'Преглед на {{PLURAL:$1|едно избришано уредување|$1 избришани уредувања}}',
'protect' => 'Заштити',
'protect_change' => 'промена',
'protectthispage' => 'Заштити ја оваа Ñтраница',
@@ -595,6 +598,8 @@ $1',
'toc' => 'Содржина',
'showtoc' => 'прикажи',
'hidetoc' => 'Ñкриј',
+'collapsible-collapse' => 'Ñкриј',
+'collapsible-expand' => 'прикажи',
'thisisdeleted' => 'Да прикажам или вратам $1?',
'viewdeleted' => 'Да погледате $1?',
'restorelink' => '{{PLURAL:$1|едно избришано уредување|$1 избришани уредувања}}',
@@ -608,6 +613,8 @@ $1',
'feed-atom' => 'Atom',
'feed-rss' => 'RSS',
'red-link-title' => '$1 (Ñтраницата не поÑтои)',
+'sort-descending' => 'Подреди надолно',
+'sort-ascending' => 'Подреди нагорно',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Страница',
@@ -692,12 +699,13 @@ $1',
'protectedinterface' => 'Оваа Ñтраница Ñодржи текÑÑ‚ од поÑредникот на програмот и е заклучена поради можна злоупотреба.',
'editinginterface' => "'''Предупредување:''' Уредувате Ñтраница која е дел од кориÑничкиот поÑредник на програмÑката опрема на МедијаВики.
Промените на оваа Ñтраница ќе предизвикаат промена на кориÑничкиот поÑредник кај оÑтанатите кориÑници.
-За превод, имајте го предвид [http://translatewiki.net/wiki/Main_Page?setlang=mk translatewiki.net], проектот за локализација на МедијаВики.",
+За превод, имајте го предвид [//translatewiki.net/wiki/Main_Page?setlang=mk translatewiki.net], проектот за локализација на МедијаВики.",
'sqlhidden' => '(Барањето до SQL е Ñкриено)',
'cascadeprotected' => 'Оваа Ñтраница е заштитена од уредувања бидејќи е вклучена во {{PLURAL:$1|Ñледнава Ñтраница, којашто е заштитена|Ñледниве Ñтраници, коишто Ñе заштитени}} Ñо можноÑта „каÑкадна заштита“:
$2',
'namespaceprotected' => "Ðемате дозвола за уредување Ñтраници во именÑкиот проÑтор '''$1'''.",
-'customcssjsprotected' => 'Ðемате дозвола да ја менувате оваа Ñтраница бидејќи Ñодржи туѓи лични нагодувања.',
+'customcssprotected' => 'Ðемате дозвола да ја менувате оваа Ñтраница Ñо CSS бидејќи Ñодржи туѓи лични нагодувања.',
+'customjsprotected' => 'Ðемате дозвола да ја менувате оваа Ñтраница Ñо JavaScript бидејќи Ñодржи туѓи лични нагодувања.',
'ns-specialprotected' => 'Специјални Ñтраници не може да Ñе уредуваат.',
'titleprotected' => "Овој наÑлов од Ñтрана на [[User:$1|$1]] е заштитен и не може да Ñе Ñоздаде.
Причината за тоа е: ''$2''.",
@@ -735,6 +743,7 @@ $2',
'createaccount' => 'Ðаправи Ñметка',
'gotaccount' => "Веќе имате кориÑничка Ñметка? '''$1'''.",
'gotaccountlink' => 'Ðајавете Ñе',
+'userlogin-resetlink' => 'Си ги заборавивте податоците за најава?',
'createaccountmail' => 'по е-пошта',
'createaccountreason' => 'Причина:',
'badretype' => 'ВнеÑените лозинки не Ñе Ñовпаѓаат.',
@@ -749,13 +758,16 @@ $2',
'nocookieslogin' => '{{SITENAME}} кориÑти колачиња за најавување на кориÑници.
Вие го имате оневозможено кориÑтењето на колачиња на вашиот прелиÑтувач.
Ве молиме активирајте ги и обидете Ñе повторно.',
+'nocookiesfornew' => 'КориÑничката Ñметка не е Ñоздадена бидејќи не можеше да Ñе потврди нејзиниот извор.
+За оваа цел ќе ви требаат колачиња. Проверете дали Ñе овозможени, превчитајте ја Ñтраницава и обидете Ñе повторно.',
+'nocookiesforlogin' => '{{int:nocookieslogin}}',
'noname' => 'ВнеÑовте погрешно кориÑничко име.',
'loginsuccesstitle' => 'Ðајавувањето е уÑпешно',
'loginsuccess' => 'Сега Ñте најавени на {{SITENAME}} како „$1“.',
'nosuchuser' => 'Ðема кориÑник Ñо името „$1“.
КориÑничките имиња разликуваат мали и големи букви.
Проверете да не Ñте направиле грешка во пишувањето, или [[Special:UserLogin/signup|Ñоздајте нова кориÑничка Ñметка]].',
-'nosuchusershort' => 'Ðема кориÑник Ñо името „<nowiki>$1</nowiki>“.
+'nosuchusershort' => 'Ðема кориÑник Ñо името „$1“.
Проверете дали правилно Ñте напишале.',
'nouserspecified' => 'Мора да наведете кориÑничко име.',
'login-userblocked' => 'Овој кориÑник е блокиран. Ðајавувањето не е дозволено.',
@@ -801,13 +813,14 @@ $2',
'usernamehasherror' => 'КориÑничкото име не може да Ñодржи тараба',
'login-throttled' => 'Скоро имате направено повеќе обиди за најавување.
Почекајте малку пред да Ñе обидете повторно.',
+'login-abort-generic' => 'Ðајавата е неуÑпешна - Прекинато',
'loginlanguagelabel' => 'Јазик: $1',
'suspicious-userlogout' => 'Вашето барање за одјава е одбиено бидејќи Ñе чини дека е иÑпратено од раÑипан прелиÑтувач или кеширачки заÑтапник (proxy).',
# E-mail sending
'php-mail-error-unknown' => 'Ðепозната грешка во функцијата mail() на PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Промена на лозинка',
'resetpass_announce' => 'Ðајавени Ñте Ñо привремена лозинка пратена по е-пошта.
За да го завршите пријавувањето, мора да поÑтавите нова лозинка овде:',
@@ -826,6 +839,39 @@ $2',
Можеби веќе ја имате уÑпешно променето вашата лизинка или Ñте побарале нова привремена лозинка.',
'resetpass-temp-password' => 'Привремена лозинка:',
+# Special:PasswordReset
+'passwordreset' => 'Менување на лозинка',
+'passwordreset-text' => 'Пополнете го образецов за да ви иÑпратиме потÑетник за вашите најавни податоци по е-пошта.',
+'passwordreset-legend' => 'Ðова лозинка',
+'passwordreset-disabled' => 'Ðа ова вики е оневозможено задавање на нова лозинка.',
+'passwordreset-pretext' => '{{PLURAL:$1||Подолу внеÑете еден податок}}',
+'passwordreset-username' => 'КориÑничко име:',
+'passwordreset-domain' => 'Домен:',
+'passwordreset-email' => 'Е-пошта:',
+'passwordreset-emailtitle' => 'Ðајавни податоци за {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Ðекој (веројатно вие, од IP-адреÑата $1) побара потÑетник на вашите
+најавни податоци за {{SITENAME}} ($4). Оваа е-поштенÑка адреÑа е наведена во
+{{PLURAL:$3|Ñледнава кориÑничка Ñметка|Ñледниве кориÑнички Ñметки}}:
+
+$2
+
+{{PLURAL:$3|Оваа привремена лозинка ќе иÑтече|Овие привремени лозинки ќе иÑтечат}} во рок од {{PLURAL:$5|еден ден|$5 дена}}.
+Сега треба да Ñе најавите и да внеÑете нова лозинка. Ðко ова барање го
+поÑтавил некој друг, или пак во меѓувреме Ñте Ñе Ñетиле на лозинката, и не Ñакате
+да ја менувате, тогаш Ñлободно занемарете ја поракава и продолжете да ја кориÑтите Ñтарата.',
+'passwordreset-emailtext-user' => 'КориÑникот $1 на {{SITENAME}} побара да потÑетник за вашите најавни податоци на {{SITENAME}}
+($4). Оваа е-поштенÑка адреÑа е наведена во {{PLURAL:$3|Ñледнава кориÑничка Ñметка|Ñледниве кориÑнички Ñметки}}:
+
+$2
+
+{{PLURAL:$3|Оваа привремена лозинка ќе иÑтече|Овие привремени лозинки ќе иÑтечат}} во рок од {{PLURAL:$5|еден ден|$5 дена}}.
+Сега треба да Ñе најавите и да внеÑете нова лозинка. Ðко ова барање го
+поÑтавил некој друг, или пак во меѓувреме Ñте Ñе Ñетиле на лозинката, и не Ñакате
+да ја менувате, тогаш Ñлободно занемарете ја поракава и продолжете да ја кориÑтите Ñтарата.',
+'passwordreset-emailelement' => 'КориÑничко име: $1
+Привремена лозинка: $2',
+'passwordreset-emailsent' => 'ИÑпратен е потÑетник по е-пошта',
+
# Edit page toolbar
'bold_sample' => 'Задебелен текÑÑ‚',
'bold_tip' => 'Задебелен текÑÑ‚',
@@ -837,8 +883,6 @@ $2',
'extlink_tip' => 'Ðадворешна врÑка (Ñо префикÑот http://)',
'headline_sample' => 'ÐаÑлов',
'headline_tip' => 'ПоднаÑлов',
-'math_sample' => 'Овде вметни формула',
-'math_tip' => 'Математичка формула (LaTeX)',
'nowiki_sample' => 'Овде внеÑете неформатиран текÑÑ‚',
'nowiki_tip' => 'Занемари вики-форматирање',
'image_sample' => 'Пример.jpg',
@@ -879,7 +923,7 @@ $2',
Може да контактирате Ñо $1 или некој друг [[{{MediaWiki:Grouppage-sysop}}|админиÑтратор]] за да разговарате во врÑка Ñо блокирањето.
Можете да ја иÑкориÑтите можноÑта „Е-пошта до овој кориÑник“ ако е назначена важечка е-поштенÑка адреÑа во [[Special:Preferences|вашите нагодувања]] и не ви е забрането да ја кориÑтите.
-Вашата Ñегашна IP-адреÑа е $3, а ID на блокирањето е #$5.
+Вашата Ñегашна IP-адреÑа е $3, а назнака на блокирањето глаÑи #$5.
Ве молиме наведете ги Ñите детали прикажани погоре, во вашата евентуална реакција.",
'autoblockedtext' => "Вашата IP-адреÑа е автоматÑки блокирана бидејќи била кориÑтена од Ñтрана на друг кориÑник, кој бил блокиран од $1.
Даденото образложение е Ñледново:
@@ -927,7 +971,7 @@ $2',
'noarticletext-nopermission' => 'Ðема текÑÑ‚ на оваа Ñтраница.
Можете да го [[Special:Search/{{PAGENAME}}|пребарате овој наÑлов]] во други Ñтраници,
или да ги <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пребарате Ñоодветните дневници]</span>.',
-'userpage-userdoesnotexist' => 'КориÑничката Ñметка „$1“ не е региÑтрирана.
+'userpage-userdoesnotexist' => 'КориÑничката Ñметка „<nowiki>$1</nowiki>“ не е региÑтрирана.
Ве молиме размиÑлете дали навиÑтина Ñакате да ја Ñоздадете/уредите оваа Ñтраница.',
'userpage-userdoesnotexist-view' => 'КориÑничката Ñметка „$1“ не е региÑтрирана.',
'blocked-notice-logextract' => 'Овој кориÑник е моментално блокиран.
@@ -965,6 +1009,7 @@ $2',
'token_suffix_mismatch' => "'''Вашето уредување е одбиено затоа што вашиот пребарувач направил проблеми Ñо интерпукциÑките знаци во жетонот за уредување.
Уредувањето не е прифатено за да Ñе Ñпречи неÑакана промена на текÑтот на Ñтраницата.
Ова понекогаш Ñе Ñлучува кога кориÑтите неиÑправен мрежно-заÑнована анонимен заÑтапничка (proxy) Ñлужба.'''",
+'edit_form_incomplete' => "'''Ðекои делови од образецот за уредување не ÑтаÑаа до опÑлужувачот. Внимателно проверете дали уреденото не е пореметено и обидете Ñе поввторно.'''",
'editing' => 'Уредување на $1',
'editingsection' => 'Уредување на $1 (паÑуÑ)',
'editingcomment' => 'Уредување на $1 (ново заглавие)',
@@ -1000,7 +1045,7 @@ $2',
'cascadeprotectedwarning' => "'''Предупредување:''' Оваа Ñтраница е заклучена, така што можат да ја уредуваат Ñамо кориÑници Ñо админиÑтраторÑки привилегии, бидејќи е вклучена во {{PLURAL:$1|Ñледнава „преноÑно-заштитена“ Ñтраница|Ñледниве „преноÑно-заштитени“ Ñтраници}}:",
'titleprotectedwarning' => "'''Предупредување:''' Оваа Ñтраница е заклучена, така што Ñе потребни [[Special:ListGroupRights|поÑебни права]] за да Ñе Ñоздаде.''''
За ваша информација, поÑледната Ñтавка во дневникот на промени е прикажана подолу:",
-'templatesused' => '{{PLURAL:$1|Шаблон кориÑтен на оваа Ñтраница|Шаблони кориÑтени на оваа Ñтраница}}:',
+'templatesused' => '{{PLURAL:$1|Шаблон|Шаблони}} во Ñтраницава:',
'templatesusedpreview' => '{{PLURAL:$1|Шаблон кориÑтен во овој преглед|Шаблони кориÑтени во овој преглед}}:',
'templatesusedsection' => '{{PLURAL:$1|Шаблон кориÑтен во ова заглавие|Шаблони кориÑтени во овие заглавија}}:',
'template-protected' => '(заштитен)',
@@ -1195,8 +1240,8 @@ $1",
# Suppression log
'suppressionlog' => 'Дневник на Ñокривања',
-'suppressionlogtext' => 'Подолу е прикажан ÑпиÑокот на бришења и блокирања каде има и Ñодржини Ñкриени и за админиÑтраторите.<br />
-Погледајте го [[Special:IPBlockList|ÑпиÑокот на блокирани IP-адреÑи]].',
+'suppressionlogtext' => 'Подолу е прикажан ÑпиÑок на бришења и блокирања поврзани Ñо Ñодржини Ñкриени од админиÑтратори.
+Тековните забрани и блокирања ќе ги најдете на [[Special:BlockList|ÑпиÑокот на блокирани IP-адреÑи]].',
# History merging
'mergehistory' => 'Спојување на иÑтории на Ñтраница',
@@ -1308,12 +1353,13 @@ $1",
Да напоменеме дека нивното индекÑирање на {{SITENAME}} Ñодржините може да биде заÑтарено.',
# Quickbar
-'qbsettings' => 'Лента за брз избор',
-'qbsettings-none' => 'Без мени',
-'qbsettings-fixedleft' => 'Ðеподвижна лево',
-'qbsettings-fixedright' => 'Ðеподвижна деÑно',
-'qbsettings-floatingleft' => 'Променлива лево',
-'qbsettings-floatingright' => 'Променлива деÑно',
+'qbsettings' => 'Лента за брз избор',
+'qbsettings-none' => 'Без мени',
+'qbsettings-fixedleft' => 'Ðеподвижна лево',
+'qbsettings-fixedright' => 'Ðеподвижна деÑно',
+'qbsettings-floatingleft' => 'Променлива лево',
+'qbsettings-floatingright' => 'Променлива деÑно',
+'qbsettings-directionality' => 'Ðепроменливо зададен, во завиÑноÑÑ‚ од наÑоката на пишување на вашиот јазик',
# Preferences page
'preferences' => 'Ðагодувања',
@@ -1324,9 +1370,10 @@ $1",
'changepassword' => 'Смени лозинка',
'prefs-skin' => 'Руво',
'skin-preview' => 'Преглед',
-'prefs-math' => 'Матем. формули',
'datedefault' => 'Ðебитно',
+'prefs-beta' => 'Бета-можноÑти',
'prefs-datetime' => 'Датум и време',
+'prefs-labs' => 'ЕкÑпериментални можноÑти',
'prefs-personal' => 'КориÑнички профил',
'prefs-rc' => 'Скорешни промени',
'prefs-watchlist' => 'СпиÑок на набљудувања',
@@ -1348,13 +1395,11 @@ $1",
'columns' => 'Колони:',
'searchresultshead' => 'Пребарување',
'resultsperpage' => 'Резултати по Ñтраница:',
-'contextlines' => 'Редови по резултат:',
-'contextchars' => 'КонтекÑÑ‚ по ред:',
'stub-threshold' => 'Праг за <a href="#" class="stub">никулци</a> (бајти):',
'stub-threshold-disabled' => 'Оневозможено',
'recentchangesdays' => 'Денови за приказ во Ñкорешните промени:',
'recentchangesdays-max' => '(највеќе $1 {{PLURAL:$1|ден|дена}})',
-'recentchangescount' => 'Број на уредувања кои ќе Ñе прикажат по оÑновно:',
+'recentchangescount' => 'Број на уредувања кои ќе Ñе прикажуваат по оÑновно:',
'prefs-help-recentchangescount' => 'Подразбира Ñкорешни промени, иÑтории на Ñтраници и дневници.',
'prefs-help-watchlist-token' => 'Со внеÑување на тајниот клуч во полево ќе Ñоздадете RSS емитување за вашиот ÑпиÑок на набљудувања.
Секој што го знае клучот во полево ќе може да го чита вашиот ÑпиÑок на набљудувања, па затоа изберете некоја безбедна вредноÑÑ‚.
@@ -1362,7 +1407,7 @@ $1",
'savedprefs' => 'Вашите нагодувања Ñе зачувани.',
'timezonelegend' => 'ЧаÑовна зона:',
'localtime' => 'Локално време:',
-'timezoneuseserverdefault' => 'Според опÑлужувачот',
+'timezoneuseserverdefault' => 'Од викито ($1)',
'timezoneuseoffset' => 'Друго (поÑочете отÑтапување)',
'timezoneoffset' => 'ОтÑтапување¹:',
'servertime' => 'Време на опÑлужувачот:',
@@ -1388,10 +1433,10 @@ $1",
'prefs-common-css-js' => 'Заеднички CSS/JS за Ñите изгледи:',
'prefs-reset-intro' => 'Може да ја кориÑтите оваа Ñтраница за враќање на вашите нагодувања на оÑновно-зададените нагодувања на викито. Оваа не може да Ñе врати.',
'prefs-emailconfirm-label' => 'Потврда на е-пошта:',
-'prefs-textboxsize' => 'Големина на прозорец за уредување',
+'prefs-textboxsize' => 'Големина на полето за уредување',
'youremail' => 'Е-пошта:',
'username' => 'КориÑничко име:',
-'uid' => 'ID на кориÑникот:',
+'uid' => 'КориÑнички број:',
'prefs-memberingroups' => 'Член на {{PLURAL:$1|групата|групите}}:',
'prefs-registration' => 'Време на региÑтрација:',
'yourrealname' => 'ВиÑтинÑко име:',
@@ -1412,8 +1457,8 @@ $1",
'email' => 'Е-пошта',
'prefs-help-realname' => "'''ВиÑтинÑкото име''' е незадолжително.
Доколку изберете да го внеÑете, тоа може да Ñе иÑкориÑти за оддавање на заÑлуги за Вашата работа.",
-'prefs-help-email' => 'Е-поштата е незадолжителна, но ќе ви треба за добивање на нова лозинка ако Ñи ја заборавите поÑтоечката.
-ИÑто така можете да изберете другите кориÑници да ве контактираат преку вашата кориÑничка Ñтраница или Ñтраница за разговор, без да го откриете вашиот идентитет.',
+'prefs-help-email' => 'Е-поштата е незадолжителна, но ќе ви треба за добивање на нова лозинка ако Ñи ја заборавите поÑтоечката.',
+'prefs-help-email-others' => 'Можете да изберете другите да ве контактираат преку вашата кориÑничка Ñтраница без да го откриете вашиот идентитет.',
'prefs-help-email-required' => 'Е-поштенÑка адреÑа е задолжително да Ñе наведе.',
'prefs-info' => 'ОÑновни информации',
'prefs-i18n' => 'Интернационализација',
@@ -1425,9 +1470,9 @@ $1",
'prefs-advancedrendering' => 'Ðапредни нагодувања',
'prefs-advancedsearchoptions' => 'Ðапредни нагодувања',
'prefs-advancedwatchlist' => 'Ðапредни нагодувања',
-'prefs-displayrc' => 'Ðагодувања за приказ',
-'prefs-displaysearchoptions' => 'Ðагодувања за приказ',
-'prefs-displaywatchlist' => 'Ðагодувања за приказ',
+'prefs-displayrc' => 'Ðагодувања на приказот',
+'prefs-displaysearchoptions' => 'Ðагодувања на приказот',
+'prefs-displaywatchlist' => 'Ðагодувања на приказот',
'prefs-diffs' => 'Разлики',
# User preference: e-mail validation using jQuery
@@ -1509,7 +1554,7 @@ $1",
'right-deleterevision' => 'Бришење и враќање на конкретни ревизии на Ñтраници',
'right-deletedhistory' => 'Прегледување на запиÑи во иÑторија на бришења, без придружниот текÑÑ‚',
'right-deletedtext' => 'Прегледување на избришан текÑÑ‚ и промени помеѓу избришани ревизии',
-'right-browsearchive' => 'Пребарување низ избришани Ñтраници',
+'right-browsearchive' => 'Пребарување на избришани Ñтраници',
'right-undelete' => 'Обновување избришана Ñтраница',
'right-suppressrevision' => 'Прегледување и враќање на ревизии Ñокриени од админиÑтратори',
'right-suppressionlog' => 'Гледање на приватни дневници',
@@ -1539,15 +1584,15 @@ $1",
'right-userrights' => 'Уредување на Ñите кориÑнички права',
'right-userrights-interwiki' => 'Уредување на кориÑнички права на кориÑници на други викија',
'right-siteadmin' => 'Заклучување и отклучување на базата на податоци',
-'right-reset-passwords' => 'Менување на лозинки на други кориÑници',
'right-override-export-depth' => 'Извезување на Ñтраници вклучувајќи поврзани Ñтраници Ñо длабочина до 5',
'right-sendemail' => 'ИÑпраќање на е-пошта до други кориÑници',
# User rights log
-'rightslog' => 'Дневник на менувања на кориÑнички права',
-'rightslogtext' => 'Ова е дневник на промени на кориÑнички права.',
-'rightslogentry' => 'Променето членÑтво во група за $1 од $2 во $3',
-'rightsnone' => '(нема)',
+'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' => 'читање на оваа Ñтраница',
@@ -1595,7 +1640,7 @@ $1",
'recentchanges-label-minor' => 'Ова е Ñитно уредување',
'recentchanges-label-bot' => 'Ова уредување е направено од бот',
'recentchanges-label-unpatrolled' => 'Ова уредување Ñè уште не било патролирано',
-'rcnote' => "Долу {{PLURAL:$1|е прикажана '''1''' промена|Ñе прикажани Ñкорешните '''$1''' промени}} {{PLURAL:$2|денеÑ|во поÑледниве '''$2''' дена}}, почнувајќи од $5, $4.",
+'rcnote' => "Подолу {{PLURAL:$1|е прикажана '''1''' промена|Ñе прикажани поÑледните '''$1''' промени}} {{PLURAL:$2|за денеÑ|во поÑледниве '''$2''' дена}}, заклучно Ñо $5, $4.",
'rcnotefrom' => 'Подолу Ñе промените од <b>$2</b> (Ñе прикажуваат до <b>$1</b>).',
'rclistfrom' => 'Прикажи нови промени почнувајќи од $1',
'rcshowhideminor' => '$1 Ñитни промени',
@@ -1672,13 +1717,13 @@ $1",
'illegalfilename' => 'Името на податотеката „$1“ Ñодржи знаци што не Ñе дозволени во наÑлови на Ñтраници.
Преименувајте ја подигнете ја повторно.',
'badfilename' => 'Името на податотеката е променето во „$1“.',
-'filetype-mime-mismatch' => 'ÐаÑтавката на податотеката не е Ñоодветна на MIME-типот.',
+'filetype-mime-mismatch' => 'Податотечната наÑтавка „.$1“ не одговара на утврдениот MIME-тип на податотеката ($2).',
'filetype-badmime' => 'Податотеките од MIME-тип „$1“ не Ñе дозволени за подигање.',
'filetype-bad-ie-mime' => 'Ðе може да Ñе подигне оваа податотека бидејќи Internet Explorer би можел да го препознае како „$1“, што е оневозможен и потенцијално опаÑен тип на податотека.',
'filetype-unwanted-type' => "'''„.$1“''' е непоÑакуван тип на податотека.
{{PLURAL:$3|Претпочитан тип на податотека е|Претпочитани типови на податотеки Ñе}} $2.",
'filetype-banned-type' => "'''„.$1“''' не е допуштен тип на податотека.
-{{PLURAL:$3|Допуштен тип на податотека е|Допуштени типови на податотеки Ñе}} $2.",
+{{PLURAL:$3|Допуштен тип е|Допуштени типови Ñе}} $2.",
'filetype-missing' => 'Податотеката нема наÑтавка (на пр. „.jpg“).',
'empty-file' => 'ПоднеÑената податотека е празна.',
'file-too-large' => 'ПоднеÑената податотека е преголема.',
@@ -1696,6 +1741,7 @@ $1",
'emptyfile' => 'Податотеката што ја подигнавте изгледа дека е празна.
Ова може да е поради грешка во името на податотеката.
Ве молиме проверете дали навиÑтина Ñакате да ја подигнете оваа податотека.',
+'windows-nonascii-filename' => 'ОпÑлужувачот не поддржува податотечни имиња Ñо Ñпецијални знаци.',
'fileexists' => "Податотека Ñо ова име веќе поÑтои, проверете '''<tt>[[:$1]]</tt>''' ако не Ñте Ñигурни дали Ñакате да го промените.
[[$1|thumb]]",
'filepageexists' => "Страницата за Ð¾Ð¿Ð¸Ñ Ð½Ð° оваа податотека е веќе Ñоздадена на '''<tt>[[:$1]]</tt>''', но не поÑтои податотека Ñо тоа име.
@@ -1731,6 +1777,8 @@ $1",
Проверете го нагодувањето file_uploads.',
'uploadscripted' => 'Податотеката Ñодржи HTML или Ñкриптен код што може да биде погрешно протолкуван од прелиÑтувач.',
'uploadvirus' => 'Оваа податотека Ñодржи вируÑ! Повеќе детали: $1',
+'uploadjava' => 'Податотеката е од типот ZIP што Ñодржи податотека Ñо наÑтавка .class за Java.
+Подигањето на податотеки за Java не е дозволено, бидејќи Ñо нив можат да Ñе заобиколуваат безбедноÑните ограничувања.',
'upload-source' => 'Изворна податотека',
'sourcefilename' => 'Изворно име на податотеката:',
'sourceurl' => 'Изворен URL:',
@@ -1741,10 +1789,6 @@ $1",
'watchthisupload' => 'Ðабљудувај ја податотекава',
'filewasdeleted' => 'Податотека Ñо ова име претходно била подигната и потоа избришана.
Проверете во $1 пред да продолжите Ñо повтроно подигање.',
-'upload-wasdeleted' => "'''Внимание: Подигате податотека што претходно била бришена.'''
-
-РазмиÑлете дали е правилно да продолжите Ñо подигање на оваа податотека.
-Дневникот на бришење за оваа податотека може да го прегледате овде за ваша информација:",
'filename-bad-prefix' => "Името на податотеката која ја подигате започнува Ñо '''„$1“''', типично за неопиÑните називи кои дигиталните фотоапарати автоматÑки ги Ñоздаваат, што впрочем е недоволно опиÑно.
Ве молиме одберете подобро опиÑно име за вашата податотека.",
'filename-prefix-blacklist' => ' #<!-- Ðе менувајте ја Ñодржината на овој ред - оÑтавете ја како што е --> <pre>
@@ -1783,12 +1827,29 @@ $1',
'upload-unknown-size' => 'Ðепозната големина',
'upload-http-error' => 'HTTP грешка: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Се појави грешка при отворањето на податотеката за да Ñе провери ZIP.',
+'zip-wrong-format' => 'Ðаведената податотека не е од типот ZIP.',
+'zip-bad' => 'Податотеката е оштетена или на друг начин нечитлива ZIP-податотека.
+БезбедноÑната проверка не може да Ñе изврши како што треба.',
+'zip-unsupported' => 'Ова е ZIP-податотека што кориÑти функции на ZIP кои не Ñе поддржани од МедијаВики.
+БезбедноÑната проверка не може да Ñе изврши како што треба.',
+
+# Special:UploadStash
+'uploadstash' => 'Скриено подигање',
+'uploadstash-summary' => 'Оваа Ñтраница овозможува приÑтап до податотеки што Ñе подигнати (или во фаза на подигање), но кои Ñè уште не Ñе објавени на викито. Ваквите податотеки не Ñе видливи за никого, оÑвен оној што ги подигнал.',
+'uploadstash-clear' => 'ИÑчиÑти Ñкриени податотеки',
+'uploadstash-nofiles' => 'Ðемате Ñкриени податотеки.',
+'uploadstash-badtoken' => 'Ðе уÑпеав да го извршам бараното дејÑтво, можеби поради тоа што вашиот ÑигурноÑен жетон е иÑтечен. Обидете Ñе повторно.',
+'uploadstash-errclear' => 'ЧиÑтењето на податотеките не уÑпеа.',
+'uploadstash-refresh' => 'Превчитај го ÑпиÑокот на податотеки',
+
# img_auth script messages
'img-auth-accessdenied' => 'Оневозможен приÑтап',
'img-auth-nopathinfo' => 'ÐедоÑтаÑува PATH_INFO.
-Вашиот опÑлужувач не е нагоден за да ја проÑледи оваа информација.
+Вашиот опÑлужувач не е нагоден за да ја предаде оваа информација.
Можеби Ñе заÑнова на CGI, и така не подржува img_auth.
-Видете http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+Погл. [//www.mediawiki.org/wiki/Manual:Image_Authorization?uselang=mk Одобрување на Ñлики]',
'img-auth-notindir' => 'Бараниот пат не води кон зададената папка за подигање.',
'img-auth-badtitle' => 'Ðе може да Ñе конÑтруира важечки наÑлов од „$1“.',
'img-auth-nologinnWL' => 'Ðе Ñте најавени и „$1“ не е на ÑпиÑокот на допуштени.',
@@ -1866,7 +1927,7 @@ $1',
ЦелоÑен ÑпиÑок може да добиете [[Special:WhatLinksHere/$2|тука]].',
'nolinkstoimage' => 'Ðема Ñтраници што ја кориÑтат оваа податотека.',
'morelinkstoimage' => 'Погледајте ги [[Special:WhatLinksHere/$1|оÑтанатите врÑки]] кон оваа податотека.',
-'redirectstofile' => '{{PLURAL:$1|Следната податотека пренаÑочува|$1 Следните податотеки пренаÑочуваат}} кон оваа податотека:',
+'linkstoimage-redirect' => '$1 (пренаÑочување) $2',
'duplicatesoffile' => '{{PLURAL:$1|Следната податотека е дупликат|$1 Следните податотеки Ñе дупликати}} на оваа податотека ([[Special:FileDuplicateSearch/$2|повеќе информации]]):',
'sharedupload' => 'Оваа податотека е од $1 и може да Ñе кориÑти во други проекти.',
'sharedupload-desc-there' => 'Оваа податотека е од $1 и може да Ñе кориÑти во други проекти.
@@ -1960,19 +2021,20 @@ $1',
'statistics-users-active-desc' => 'КориÑници кои имаат извршено некое дејÑтво {{PLURAL:$1|претходниот ден|во претходните $1 дена}}',
'statistics-mostpopular' => 'ÐајпоÑетувани Ñтраници',
-'disambiguations' => 'Страници за појаÑнување',
+'disambiguations' => 'Страници што водат до Ñтраници за појаÑнување',
'disambiguationspage' => 'Template:ПојаÑнување',
'disambiguations-text' => "Следните Ñтраници имаат врÑки кои водат до '''Ñтраница за појаÑнување'''.
ÐамеÑто тоа тие треба да водат до Ñоодветната тема.<br />
Страница Ñе третира како Ñтраница за појаÑнување ако таа го кориÑти шаблонот кој е наведен [[MediaWiki:Disambiguationspage|тука]]",
-'doubleredirects' => 'Двојни пренаÑочувања',
-'doubleredirectstext' => 'Оваа Ñтраница ги прикажува пренаÑочувачките Ñтраници до други пренаÑочувачки Ñтраници.
+'doubleredirects' => 'Двојни пренаÑочувања',
+'doubleredirectstext' => 'Оваа Ñтраница ги прикажува пренаÑочувачките Ñтраници до други пренаÑочувачки Ñтраници.
Секој ред Ñодржи врÑки кон првото и второто пренаÑочување, како и целта на второто пренаÑочување, кое обично ја поÑочува <i>виÑтинÑката</i> целна Ñтраница кон која првото пренаÑочување би требало да наÑочува.
<del>Пречкртаните</del> Ñтавки треба да Ñе разрешат.',
-'double-redirect-fixed-move' => 'Страницата [[$1]] е премеÑтена.
+'double-redirect-fixed-move' => 'Страницата [[$1]] е премеÑтена.
Сега пренаÑочува кон [[$2]]',
-'double-redirect-fixer' => 'ИÑправувач на пренаÑочувања',
+'double-redirect-fixed-maintenance' => 'ИÑправка на двојно пренаÑочување од [[$1]] на [[$2]].',
+'double-redirect-fixer' => 'ИÑправувач на пренаÑочувања',
'brokenredirects' => 'Прекинати пренаÑочувања',
'brokenredirectstext' => 'Следните пренаÑочувања водат до непоÑтоечки Ñтраници.',
@@ -2049,6 +2111,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|понова 1|понови $1}}',
'pager-older-n' => '{{PLURAL:$1|поÑтара 1|поÑтари $1}}',
'suppress' => 'Ðадзор',
+'querypage-disabled' => 'Оваа Ñпецијална Ñтраница е оневозможена за да не попречува на делотворноÑта.',
# Book sources
'booksources' => 'Печатени извори',
@@ -2060,8 +2123,8 @@ $1',
'booksources-invalid-isbn' => 'Ðаведениот ISBN Ñе чини неправилен. Проверете да не наÑтанала некоја грешка при копирањето од изворот.',
# Special:Log
-'specialloguserlabel' => 'КориÑник:',
-'speciallogtitlelabel' => 'ÐаÑлов:',
+'specialloguserlabel' => 'Изведувач:',
+'speciallogtitlelabel' => 'Цел (наÑлов или кориÑник):',
'log' => 'Дневници',
'all-logs-page' => 'Сите јавни дневници',
'alllogstext' => 'Комбиниран приказ на Ñите раÑположиви дневници на {{SITENAME}}.
@@ -2101,12 +2164,13 @@ $1',
'sp-deletedcontributions-contribs' => 'придонеÑи',
# Special:LinkSearch
-'linksearch' => 'Ðадворешни врÑки',
+'linksearch' => 'Пребарување на надворешни врÑки',
'linksearch-pat' => 'УÑлов за пребарување:',
'linksearch-ns' => 'ИменÑки проÑтор:',
'linksearch-ok' => 'Барај',
-'linksearch-text' => 'Може да Ñе кориÑтат џокери, како на пр. „*.wikipedia.org“.<br />
-Поддржани протоколи: <tt>$1</tt>',
+'linksearch-text' => 'Може да Ñе кориÑтат џокери, како на „*.wikipedia.org“.
+Бара највиÑок домен, како на пр. „*.org“.<br />
+Поддржани протоколи: <tt>$1</tt> (не ги Ñтавајте во пребарувањето).',
'linksearch-line' => '$1 врÑка во $2',
'linksearch-error' => 'Ðокер-знаците може да Ñе кориÑтат Ñамо на почетокот во името на домаќинот.',
@@ -2167,6 +2231,10 @@ $1',
'noemailtext' => 'Овој кориÑник нема наведено важечка е-поштенÑка адреÑа.',
'nowikiemailtitle' => 'Ðе е допуштено кориÑтење на е-пошта',
'nowikiemailtext' => 'Овој кориÑник избрал да не прима е-пошта од други кориÑници.',
+'emailnotarget' => 'ÐепоÑтоечко или неважечко кориÑничко име за примачот.',
+'emailtarget' => 'ВнеÑете го кориÑничкото име на примачот',
+'emailusername' => 'КориÑничко име:',
+'emailusernamesubmit' => 'ПоднеÑи',
'email-legend' => 'Праќање на е-пошта до друг {{SITENAME}} кориÑник',
'emailfrom' => 'Од:',
'emailto' => 'До:',
@@ -2191,10 +2259,10 @@ $1',
'watchlistanontext' => 'Се бара $1 за да можете да го прегледувате и уредувате ÑпиÑокот на набљудувања.',
'watchnologin' => 'Ðе Ñте најавени',
'watchnologintext' => 'Мора да бидете [[Special:UserLogin|најавени]] за да го менувате ÑпиÑокот на набљудувања.',
-'addedwatch' => 'Додадено во ÑпиÑокот на набљудувања',
+'addwatch' => 'Додај во ÑпиÑокот на набљудувања',
'addedwatchtext' => "Страницата „[[:$1]]“ е додадена во [[Special:Watchlist|ÑпиÑокот на набљудувања]].
Идните промени на оваа Ñтраница и поврзаните Ñо неа Ñтраници за разговор ќе бидат прикажани овде, а Ñтраницата ќе Ñе прикаже '''задебелена''' во [[Special:RecentChanges|ÑпиÑокот на Ñкорешни промени]] за да можете полеÑно да ја препознаете.",
-'removedwatch' => 'ОтÑтрането од ÑпиÑокот на набљудувања',
+'removewatch' => 'ОтÑтрани од ÑпиÑокот на набљудувања',
'removedwatchtext' => 'Страницата „[[:$1]]“ е отÑтранета од [[Special:Watchlist|ÑпиÑокот на набљудувања]].',
'watch' => 'Ðабљудувај',
'watchthispage' => 'Ðабљудувај ја Ñтраницава',
@@ -2215,8 +2283,9 @@ $1',
'watchlist-options' => 'ПоÑтавки за ÑпиÑок на набљудувања',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Ðабљудување...',
-'unwatching' => 'ОтÑтранувам од набљудувани...',
+'watching' => 'Ðабљудување...',
+'unwatching' => 'ОтÑтранувам од набљудувани...',
+'watcherrortext' => 'Се појави грешка при менувањето на вашите нагодувања ÑпиÑокот на набљудувања за „$1“.',
'enotif_mailer' => '{{SITENAME}} СиÑтем за извеÑтување',
'enotif_reset' => 'Означи ги Ñите Ñтраници како поÑетени',
@@ -2235,7 +2304,7 @@ $1',
$NEWPAGE
-ÐžÐ¿Ð¸Ñ Ð¾Ð´ уредувачот: $PAGESUMMARY $PAGEMINOREDIT
+ÐžÐ¿Ð¸Ñ Ð¾Ð´ уредникот: $PAGESUMMARY $PAGEMINOREDIT
Конакт на уредувачот:
е-пошта: $PAGEEDITOR_EMAIL
@@ -2248,16 +2317,16 @@ $NEWPAGE
--
Ðко Ñакате да ги измените нагодувањата за извеÑтување по е-пошта, поÑетете ја Ñтраницата
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Доколку Ñакате да ги измените нагодувањата на ÑпиÑокот на набљудувања, поÑетете ја Ñтраницата
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
За да ја избришете Ñтраницата од ÑпиÑокот на набљудувања, поÑетете ја Ñтраницата
$UNWATCHURL
Повратни информации и помош:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Избриши Ñтраница',
@@ -2274,7 +2343,7 @@ $UNWATCHURL
Потврдете дека имате намера да го направите ова, дека ги разбирате поÑледиците од тоа, дека го правите ова во ÑоглаÑноÑÑ‚ Ñо [[{{MediaWiki:Policy-url}}|политиката]].',
'actioncomplete' => 'ДејÑтвото е Ñпроведено',
'actionfailed' => 'ÐеуÑпешно дејÑтво',
-'deletedtext' => '„<nowiki>$1</nowiki>“ е избришана. Евиденција на Ñкорешните бришења ќе најдете на $2.',
+'deletedtext' => '„$1“ е избришана. Евиденција на Ñкорешните бришења ќе најдете на $2.',
'deletedarticle' => 'ја избриша „[[$1]]“',
'suppressedarticle' => 'ја Ñкри „[[$1]]“',
'dellogpage' => 'Дневник на бришења',
@@ -2334,7 +2403,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'Времето на иÑтекување е неважечко.',
'protect_expiry_old' => 'Времето на иÑтекување е поÑтаро од тековното време.',
'protect-unchain-permissions' => 'Отклучи дополнителни можноÑти за заштита',
-'protect-text' => "Овде можете да го погледнете или Ñмените Ñтепенот на заштита на Ñтраницата '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Овде можете да го погледнете или Ñмените Ñтепенот на заштита на Ñтраницата '''$1'''.",
'protect-locked-blocked' => "Ðе можете да ја менувате заштитата додека Ñте блокирани. Овде Ñе
дадени актуелните нагодувања за Ñтраницата '''$1''':",
'protect-locked-dblock' => "Степенот на заштита не може да Ñе измени бидејќи базата на податоци е заклучена.
@@ -2390,9 +2459,8 @@ $UNWATCHURL
'undeletepagetext' => '{{PLURAL:$1|Следната Ñтраница била избришана но Ñè уште е во архивот и може да биде вратена.|Следните $1 Ñтраници биле избришани но Ñè уште Ñе во архивот и можат да бидат вратени.}}
Ðрхивот може периодично да Ñе чиÑти.',
'undelete-fieldset-title' => 'Обнови ревизии',
-'undeleteextrahelp' => "За да вратите целоÑна иÑторија на Ñтраница, отштиклирајте ги Ñите полиња и притиÑнете на '''''Врати'''''.
-За да извршите делумно враќање, изберете ги полињата до Ñоодветните ревизии за враќање и притиÑнете на '''''Врати'''''.
-Со притиÑкање на '''''Врати''''' го бришете коментарот и Ñите полиња за штиклирање.",
+'undeleteextrahelp' => "За да вратите целоÑна иÑторија на една Ñтраница, отштиклирајте ги Ñите полиња и притиÑнете на '''''{{int:undeletebtn}}'''''.
+За да извршите делумно враќање, штиклирајте ги Ñоодветните ревизии за враќање и притиÑнете на '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '{{PLURAL:$1|$1 измена е архивирана|$1 измени Ñе архивирани}}',
'undeletehistory' => 'Ðко ја обновите Ñтраницата, Ñите поправки ќе бидат вратени во иÑторијата.
Ðко нова Ñтраница Ñо иÑто име е Ñоздадена по бришењето, обновените поправки ќе Ñе појават во претходната иÑторија.',
@@ -2401,7 +2469,7 @@ $UNWATCHURL
'undeletehistorynoadmin' => 'Оваа Ñтатија беше избришана. Причината за бришењето е наведена подолу,
заедно Ñо информации за кориÑникот кој ја уредувал Ñтраницата пред бришењето. Целиот текÑÑ‚
од избришаните верзии е доÑтапен Ñамо за админиÑтраторите.',
-'undelete-revision' => 'Избришана ревизија на $1 (од $4, во $5) уредувач $3:',
+'undelete-revision' => 'Избришана ревизија на $1 (од $4, во $5) од уредникот $3:',
'undeleterevision-missing' => 'Грешна или непоÑтоечка ревизија.
Можеби имате лоша врÑка, ревизијата била обновена или избришана од архивата.',
'undelete-nodiff' => 'Ðе поÑтои поÑтара ревизија.',
@@ -2420,7 +2488,7 @@ $UNWATCHURL
Погледнете го [[Special:Log/delete|дневникот на бришења]] за Ð¿Ð¾Ð¿Ð¸Ñ Ð½Ð° претходни бришења и обновувања.",
'undelete-header' => 'СпиÑокот на неодамна избришани Ñтраници ќе го најдете на [[Special:Log/delete|дневникот на бришења]].',
-'undelete-search-box' => 'Пребарување на ибришани Ñтраници',
+'undelete-search-box' => 'Пребарување на избришани Ñтраници',
'undelete-search-prefix' => 'Прикажи Ñтраници кои почнуваат Ñо:',
'undelete-search-submit' => 'Барај',
'undelete-no-results' => 'Ðе Ñе пронајдени Ñоодветни Ñтраници во дневникот на бришења.',
@@ -2437,9 +2505,12 @@ $1',
'undelete-show-file-submit' => 'Да',
# Namespace form on various pages
-'namespace' => 'ИменÑки проÑтор:',
-'invert' => 'Обратен избор',
-'blanknamespace' => '(Главен)',
+'namespace' => 'ИменÑки проÑтор:',
+'invert' => 'Обратен избор',
+'tooltip-invert' => 'Штиклирајте го полево за да ги Ñкриете извршените измени во одбраниот именÑки проÑтор (и поврзаниот именÑки проÑтор, ако е штиклиран)',
+'namespace_association' => 'Поврзан именÑки проÑтор',
+'tooltip-namespace_association' => 'Штиклирајте го полево за да го вклучите и именÑкиот проÑтор за разговор (или наÑлов) поврзан Ñо одбраниот именÑки проÑтор',
+'blanknamespace' => '(Главен)',
# Contributions
'contributions' => 'КориÑнички придонеÑи',
@@ -2489,13 +2560,15 @@ $1',
'whatlinkshere-filters' => 'Филтри',
# Block/unblock
+'autoblockid' => 'Ðвтоблок бр. $1',
+'block' => 'Блокирај кориÑник',
+'unblock' => 'Одблокирај кориÑник',
'blockip' => 'Блокирај кориÑник',
'blockip-title' => 'Блокирај кориÑник',
'blockip-legend' => 'Блокирај кориÑник',
'blockiptext' => 'КориÑтете го долниот образец за да го забраните приÑтапот за пишување од одредена IP-адреÑа или кориÑничко име.
Ова единÑтвено треба да Ñе прави за да Ñе Ñпречи вандализам, во ÑоглаÑноÑÑ‚ Ñо [[{{MediaWiki:Policy-url}}|правилата на Википедија]].
Изберете конкретна причина подолу (пример: цитирање на конкретни Ñтраници што биле вандализирани).',
-'ipaddress' => 'IP-адреÑа',
'ipadressorusername' => 'IP-адреÑа или кориÑничко име:',
'ipbexpiry' => 'ИÑтек на рокот:',
'ipbreason' => 'Причина:',
@@ -2508,7 +2581,7 @@ $1',
** ÐеприÑтојно однеÑување
** Ðавредување на други кориÑници
** Ðеприфатливо кориÑничко име',
-'ipbanononly' => 'Блокирај Ñамо анонимни кориÑници',
+'ipb-hardblock' => 'Спречи ги најавените кориÑници да уредуваат од оваа IP-адреÑа',
'ipbcreateaccount' => 'Оневозможи Ñоздавање кориÑнички Ñметки',
'ipbemailban' => 'Оневозможи го кориÑникот да праќа е-пошта',
'ipbenableautoblock' => 'ÐвтоматÑки блокирај ја поÑледната IP-адреÑа што ја кориÑтел кориÑникот и Ñите понатамошни адреÑи од кои ќе Ñе обиде да уредува',
@@ -2519,12 +2592,15 @@ $1',
'ipbotherreason' => 'Друга, дополнителна причина:',
'ipbhidename' => 'Скриј го кориÑничкото име во уредувањата и ÑпиÑоците',
'ipbwatchuser' => 'Ðабљудувај ја кориÑничката Ñтраница и Ñтраницата за разговор на овој кориÑник',
-'ipballowusertalk' => 'Овозможи овој кориÑник да ја уредува Ñвојата Ñтраница за разговор додека е блокиран',
-'ipb-change-block' => 'Повторно блокирај го кориÑникот Ñо овие нагодувања',
+'ipb-disableusertalk' => 'Спречи го кориÑников да ја уредува неговата Ñтраница за разговор додека е блокиран',
+'ipb-change-block' => 'Преблокирај го кориÑникот Ñо овие нагодувања',
+'ipb-confirm' => 'Потврди блок',
'badipaddress' => 'Ðеважечка IP-адреÑа',
'blockipsuccesssub' => 'УÑпешно блокирање',
-'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] беше блокиран(а).<br />
-Видете [[Special:IPBlockList|ÑпиÑок на блокирани IP-адреÑи]].',
+'blockipsuccesstext' => 'IP-адреÑата [[Special:Contributions/$1|$1]] е блокирана.<br />
+[[Special:BlockList|СпиÑок на блокирани IP-адреÑи]].',
+'ipb-blockingself' => 'Се Ñпремате да Ñе блокирате Ñамите ÑебеÑи! Сигурни Ñте дека го Ñакате ова?',
+'ipb-confirmhideuser' => 'Сакате да блокирате кориÑник Ñо можноÑта „Ñкриј кориÑник“. Ова ќе го затаи името на кориÑникот во Ñите ÑпиÑоци и дневнички запиÑи. Дали Ñте Ñигурни дека Ñакате да го направите тоа?',
'ipb-edit-dropdown' => 'Ðаведи причина за блокирање',
'ipb-unblock-addr' => 'Одблокирај го $1',
'ipb-unblock' => 'Одблокирај кориÑник или IP-адреÑа',
@@ -2534,17 +2610,23 @@ $1',
'unblockiptext' => 'КориÑтете го долниот образец да го вратите правото на пишување на претходно блокирана IP-адреÑа или кориÑничко име.',
'ipusubmit' => 'Избриши го ова блокирање',
'unblocked' => '[[User:$1|$1]] беше деблокиран',
+'unblocked-range' => 'кориÑникот $1 е одблокиран',
'unblocked-id' => 'Блокирањето $1 беше отÑтрането',
+'blocklist' => 'Блокирани кориÑници',
'ipblocklist' => 'Блокирани кориÑници',
'ipblocklist-legend' => 'Ðајди блокиран кориÑник',
-'ipblocklist-username' => 'КориÑничко име или IP-адреÑа:',
-'ipblocklist-sh-userblocks' => '$1 блокирани кориÑнички Ñметки',
-'ipblocklist-sh-tempblocks' => '$1 привремени блокирања',
-'ipblocklist-sh-addressblocks' => '$1 блокирани поединечни IP-адреÑи',
+'blocklist-userblocks' => 'Скриј блокирања на кориÑ. Ñметки',
+'blocklist-tempblocks' => 'Скриј привремени блокирања',
+'blocklist-addressblocks' => 'Скри блокирања на поединечни IP-адреÑи',
+'blocklist-timestamp' => 'Време и датум',
+'blocklist-target' => 'Цел',
+'blocklist-expiry' => 'ИÑтекува',
+'blocklist-by' => 'Блокирал',
+'blocklist-params' => 'Параметри на блокот',
+'blocklist-reason' => 'Причина',
'ipblocklist-submit' => 'Пребарај',
'ipblocklist-localblock' => 'Локален блок',
'ipblocklist-otherblocks' => '{{PLURAL:$1|друг блок|други блокови}}',
-'blocklistline' => '$1, $2 го блокираше $3 ($4)',
'infiniteblock' => 'беÑконечно',
'expiringblock' => 'иÑтекува на $1 во $2 ч.',
'anononlyblock' => 'Ñамо анон.',
@@ -2569,7 +2651,7 @@ $1',
'reblock-logentry' => 'ги промени нагодувањата за блокирање на [[$1]] Ñо рок на иÑтекување од $2 $3',
'blocklogtext' => 'Ова е дневник на блокирање и одблокирање на кориÑнци.
ÐвтоматÑки блокираните IP-адреÑи не Ñе наведени.
-Видете го [[Special:IPBlockList|ÑпиÑокот на блокирани IP-адреÑи]].',
+Видете го [[Special:BlockList|ÑпиÑокот на блокирани IP-адреÑи]].',
'unblocklogentry' => 'го одблокира „$1“',
'block-log-flags-anononly' => 'Ñамо анонимни кориÑници',
'block-log-flags-nocreate' => 'оневозможено Ñоздавање кориÑнички Ñметки',
@@ -2583,9 +2665,9 @@ $1',
'ipb_expiry_temp' => 'Скриените блокирања на кориÑникот мора да бидат перманентни.',
'ipb_hide_invalid' => 'Оваа Ñметка не може да Ñе потиÑне; можеби има премногу уредувања.',
'ipb_already_blocked' => '„$1“ е веќе блокиран',
-'ipb-needreblock' => '== Веќе блокиран ==
-$1 е веќе блокиран. Дали Ñакате да направите промена?',
+'ipb-needreblock' => '$1 е веќе блокиран. Дали Ñакате да направите промена?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Друго блокирање|Други блокирања}}',
+'unblock-hideuser' => 'Ðе можете да го одблокирате кориÑников бидејќи неговото кориÑничко име е Ñкриено.',
'ipb_cant_unblock' => 'Грешка: Блокирањето $1 не поÑтои.
Можеби веќе е одблокиран.',
'ipb_blocked_as_range' => 'Грешка: IP-адреÑата $1 не е директно блокирана и не може да Ñе деблокира.
@@ -2627,10 +2709,10 @@ $1 е веќе блокиран. Дали Ñакате да направите Ð
'lockfilenotwritable' => 'Податотеката за заклучување на базата не е отворена за пишување.
За да ја заклучите или отклучите базата, податотеката мора да биде доÑтапна за пишување од Ñтрана на Ñемрежниот опÑлужувач.',
'databasenotlocked' => 'Базата не е заклучена.',
+'lockedbyandtime' => '(од $1 на $2 цо $3 ч.)',
# Move page
'move-page' => 'ПремеÑти $1',
-'move-page-backlink' => '↠$1',
'move-page-legend' => 'ПремеÑти Ñтраница',
'movepagetext' => "Со кориÑтењето на овој образец можете да преименувате Ñтраница, премеÑтувајќи ја целата нејзина иÑторија под ново име.
Стариот наÑлов ќе Ñтане Ñтраница за пренаÑочување кон новиот наÑлов.
@@ -2751,7 +2833,7 @@ $1 е веќе блокиран. Дали Ñакате да направите Ð
'allmessagesdefault' => 'ТекÑÑ‚ по оÑновно',
'allmessagescurrent' => 'Сегашен текÑÑ‚',
'allmessagestext' => 'Ова е ÑпиÑок на ÑиÑтемÑките пораки раÑположиви за именÑкиот проÑтор „МедијаВики“.
-Одете на [http://www.mediawiki.org/wiki/Localisation Локализација на МедијаВики] и [http://translatewiki.net translatewiki.net] ако Ñакате да придонеÑете кон општата локализација на МедијаВики.',
+Одете на [//www.mediawiki.org/wiki/Localisation Локализација на МедијаВики] и [//translatewiki.net translatewiki.net] ако Ñакате да придонеÑете кон општата локализација на МедијаВики.',
'allmessagesnotsupportedDB' => "Оваа Ñтраница не може да Ñе кориÑти бидејќи '''\$wgUseDatabaseMessages''' е иÑклучено.",
'allmessages-filter-legend' => 'Филтер',
'allmessages-filter' => 'Филтрирај по ÑоÑтојба на прилагодувањето:',
@@ -2893,35 +2975,42 @@ $1 е веќе блокиран. Дали Ñакате да направите Ð
'tooltip-summary' => 'ВнеÑете кратко резиме',
# Stylesheets
-'common.css' => '/* Тука поÑтавениот CSS ќе Ñе применува врз Ñите рува */',
-'standard.css' => '/* Тука поÑтавениот CSS ќе Ñе применува врз кориÑниците на рувото „Стандардно“ */',
-'nostalgia.css' => '/* Тука поÑтавениот CSS ќе Ñе применува врз кориÑниците на рувото „ÐоÑталгија“ */',
-'cologneblue.css' => '/* Тука поÑтавениот CSS ќе Ñе применува врз кориÑниците што го избрале рувото „КелнÑко Ñино“ */',
-'monobook.css' => '/* Тука поÑтавениот CSS ќе Ñе применува врз кориÑниците на рувото „Монобук“ */',
-'myskin.css' => '/* Тука поÑтавениот CSS Ñе однеÑува на кориÑниците на рувото „Мое руво“ */',
-'chick.css' => '/* Тука поÑтавениот CSS Ñе однеÑува на кориÑниците на рувото „Шик“ */',
-'simple.css' => '/* Тука поÑтавениот CSS Ñе однеÑува на кориÑниците на рувото „ПроÑто“ */',
-'modern.css' => '/* Тука поÑтавениот CSS Ñе однеÑува на кориÑниците на рувото „Современо“ */',
-'vector.css' => '/* Тука поÑтавениот CSS Ñе однеÑува на кориÑниците на рувото „ВекторÑко“ */',
-'print.css' => '/* Тука поÑтавениот CSS ќе Ñе применува во верзијата за печатење */',
-'handheld.css' => '/* Тука поÑтавениот CSS ќе Ñе применува во рачните уреди Ñо руво прилагодено во $wgHandheldStyle */',
+'common.css' => '/* Тука поÑтавениот CSS ќе Ñе применува врз Ñите рува */',
+'standard.css' => '/* Тука поÑтавениот CSS ќе Ñе применува врз кориÑниците на рувото „Стандардно“ */',
+'nostalgia.css' => '/* Тука поÑтавениот CSS ќе Ñе применува врз кориÑниците на рувото „ÐоÑталгија“ */',
+'cologneblue.css' => '/* Тука поÑтавениот CSS ќе Ñе применува врз кориÑниците што го избрале рувото „КелнÑко Ñино“ */',
+'monobook.css' => '/* Тука поÑтавениот CSS ќе Ñе применува врз кориÑниците на рувото „Монобук“ */',
+'myskin.css' => '/* Тука поÑтавениот CSS Ñе однеÑува на кориÑниците на рувото „Мое руво“ */',
+'chick.css' => '/* Тука поÑтавениот CSS Ñе однеÑува на кориÑниците на рувото „Шик“ */',
+'simple.css' => '/* Тука поÑтавениот CSS Ñе однеÑува на кориÑниците на рувото „ПроÑто“ */',
+'modern.css' => '/* Тука поÑтавениот CSS Ñе однеÑува на кориÑниците на рувото „Современо“ */',
+'vector.css' => '/* Тука поÑтавениот CSS Ñе однеÑува на кориÑниците на рувото „ВекторÑко“ */',
+'print.css' => '/* Тука поÑтавениот CSS ќе Ñе применува во верзијата за печатење */',
+'handheld.css' => '/* Тука поÑтавениот CSS ќе Ñе применува во рачните уреди Ñо руво прилагодено во $wgHandheldStyle */',
+'noscript.css' => '/* Тука поÑтавениот CSS Ñе однеÑува на кориÑниците што имаат оневозможено JavaScript */',
+'group-autoconfirmed.css' => '/* Тука поÑтавениот CSS ќе Ñе применува Ñамо на автопотврдените кориÑници */',
+'group-bot.css' => '/* Тука поÑтавениот CSS ќе Ñе применува Ñамо врз ботовите */',
+'group-sysop.css' => '/* Тука поÑтавениот CSS ќе Ñе применува Ñамо врз ÑиÑтемÑките оператори */',
+'group-bureaucrat.css' => '/* Тука поÑтавениот CSS ќе Ñе применува Ñамо врз бирократите */',
# Scripts
-'common.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на Ñите кориÑници при отворањето на Ñекоја Ñтраница. */',
-'standard.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат Ñтандардното руво */',
-'nostalgia.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат рувото „ÐоÑталгија“ */',
-'cologneblue.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат рувото „КелнÑко Ñино“ */',
-'monobook.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат рувото „Монобук“ */',
-'myskin.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што кориÑтат „Мое руво“ */',
-'chick.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат рувото „Шик“ */',
-'simple.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат рувото „ПроÑто“ */',
-'modern.js' => '/* Било која Јава Ñкрипта поÑтавена овде ќе биде вчитана за Ñите кориÑници што го кориÑтат рувото Современо */',
-'vector.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат рувото „ВекторÑко“ */',
+'common.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на Ñите кориÑници при отворањето на Ñекоја Ñтраница. */',
+'standard.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат Ñтандардното руво */',
+'nostalgia.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат рувото „ÐоÑталгија“ */',
+'cologneblue.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат рувото „КелнÑко Ñино“ */',
+'monobook.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат рувото „Монобук“ */',
+'myskin.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што кориÑтат „Мое руво“ */',
+'chick.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат рувото „Шик“ */',
+'simple.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат рувото „ПроÑто“ */',
+'modern.js' => '/* Било која Јава Ñкрипта поÑтавена овде ќе биде вчитана за Ñите кориÑници што го кориÑтат рувото Современо */',
+'vector.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува на кориÑниците што го кориÑтат рувото „ВекторÑко“ */',
+'group-autoconfirmed.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува Ñамо на автопотврдените кориÑници */',
+'group-bot.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува Ñамо на ботовите */',
+'group-sysop.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува Ñамо на ÑиÑтемÑките оператори */',
+'group-bureaucrat.js' => '/* Тука поÑтавениот JavaScript ќе им Ñе вчитува Ñамо на бирократите */',
# Metadata
-'nodublincore' => 'Dublin Core RDF метаподатоци Ñе оневозможени за овој опÑлужувач.',
-'nocreativecommons' => 'Метаподатоците Криејтив ÐºÐ¾Ð¼Ð¾Ð½Ñ RDF Ñе оневозможени за овој опÑлужувач.',
-'notacceptable' => 'ОпÑлужувачот не може да Ñоздаде податоци во формат погоден за вашиот клиент.',
+'notacceptable' => 'ОпÑлужувачот не може да Ñоздаде податоци во формат погоден за вашиот клиент.',
# Attribution
'anonymous' => '{{PLURAL:$1|Ðнонимен кориÑник|Ðнонимни кориÑници}} на {{SITENAME}}',
@@ -2945,12 +3034,17 @@ $1 е веќе блокиран. Дали Ñакате да направите Ð
'spam_blanking' => 'Сите верзии Ñодржеа врÑки до $1, бришам',
# Info page
-'infosubtitle' => 'Информации за Ñтраница',
-'numedits' => 'Број на уредувања (Ñтраница): $1',
-'numtalkedits' => 'Број на уредувања (Ñтраница за разговор): $1',
-'numwatchers' => 'Број на набљудувачи: $1',
-'numauthors' => 'Број на различни автори (Ñтраница): $1',
-'numtalkauthors' => 'Број на различни автори (Ñтраница за разговор): $1',
+'pageinfo-title' => 'Информации за „$1“',
+'pageinfo-header-edits' => 'Уредувања',
+'pageinfo-header-watchlist' => 'СпиÑок на набљудувања',
+'pageinfo-header-views' => 'ПоÑети',
+'pageinfo-subjectpage' => 'Страница',
+'pageinfo-talkpage' => 'Страница за разговор',
+'pageinfo-watchers' => 'Број на набљудувачи',
+'pageinfo-edits' => 'Број на уредувања',
+'pageinfo-authors' => 'Број на заÑебни автори',
+'pageinfo-views' => 'Број на поÑети',
+'pageinfo-viewsperedit' => 'ПоÑети по уредување',
# Skin names
'skinname-standard' => 'КлаÑично',
@@ -2963,26 +3057,6 @@ $1 е веќе блокиран. Дали Ñакате да направите Ð
'skinname-modern' => 'Современо',
'skinname-vector' => 'ВекторÑко',
-# Math options
-'mw_math_png' => 'Секогаш иÑцртувај во PNG',
-'mw_math_simple' => 'HTML ако е многу едноÑтавно, а инаку во PNG',
-'mw_math_html' => 'HTML ако е можно, ако не PNG',
-'mw_math_source' => 'ОÑтави го како TeX (за текÑтуални прелиÑтувачи)',
-'mw_math_modern' => 'Препорачливо за Ñовремени прелиÑтувачи',
-'mw_math_mathml' => 'MathML ако е можно (екÑпериментално)',
-
-# Math errors
-'math_failure' => 'Ðе можев да парÑирам',
-'math_unknown_error' => 'непозната грешка',
-'math_unknown_function' => 'непозната функција',
-'math_lexing_error' => 'лекÑичка грешка',
-'math_syntax_error' => 'ÑинтакÑна грешка',
-'math_image_error' => 'Претворањето во PNG не уÑпеа. Проверете дали правилно ги имате инÑталирано latex и dvipng (или dvips + gs + convert)',
-'math_bad_tmpdir' => 'Ðе можам да запишам во или да Ñоздадам привремен директориум за математички операции',
-'math_bad_output' => 'Ðе можев да запишам во или Ñоздадам излезен директориум математички операции',
-'math_notexvc' => 'ÐедоÑтаÑува извршната податотека texvc;
-погледнете math/README за нејзино нагодување.',
-
# Patrolling
'markaspatrolleddiff' => 'Означи како проверена верзија',
'markaspatrolledtext' => 'Означи ја верзијата како проверена',
@@ -3018,23 +3092,26 @@ $1',
'nextdiff' => 'Поново уредување →',
# Media information
-'mediawarning' => "'''Предупредување''': Оваа податотека може да Ñодржи штетен код.
+'mediawarning' => "'''Предупредување''': Оваа податотека може да Ñодржи штетен код.
Ðко ја кориÑтите, ова може да му наштети на вашиот ÑиÑтем.",
-'imagemaxsize' => "Ограничување на големина на Ñлика:<br />''(на нивните опиÑни Ñтраници)''",
-'thumbsize' => 'Големина на минијатурата:',
-'widthheight' => '$1 × $2',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Ñтраница|Ñтраници}}',
-'file-info' => 'големина: $1, MIME-тип: $2',
-'file-info-size' => '$1 × $2 пикÑели, големина: $3, MIME-тип: $4',
-'file-nohires' => '<small>Ðе е доÑтапна поголема резолуција.</small>',
-'svg-long-desc' => 'SVG податотека, номинално $1 × $2 пикÑели, големина: $3',
-'show-big-image' => 'ВиÑтинÑка големина',
-'show-big-image-thumb' => '<small>Големина на овој приказ: $1 × $2 пикÑели</small>',
-'file-info-gif-looped' => 'кружно',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|кадар|кадри}}',
-'file-info-png-looped' => 'кружно',
-'file-info-png-repeat' => 'пуштено {{PLURAL:$1|еднаш|$1 пати}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|кадар|кадри}}',
+'imagemaxsize' => "Ограничување на големина на Ñлика:<br />''(на нивните опиÑни Ñтраници)''",
+'thumbsize' => 'Големина на минијатурата:',
+'widthheight' => '$1 × $2',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Ñтраница|Ñтраници}}',
+'file-info' => 'големина: $1, MIME-тип: $2',
+'file-info-size' => '$1 × $2 пикÑели, големина: $3, MIME-тип: $4',
+'file-info-size-pages' => '$1 × $2 пикÑели, големина: $3, MIME-тип: $4, $5 {{PLURAL:$5|Ñтраница|Ñтраници}}',
+'file-nohires' => '<small>Ðе е доÑтапна поголема резолуција.</small>',
+'svg-long-desc' => 'SVG податотека, номинално $1 × $2 пикÑели, големина: $3',
+'show-big-image' => 'ВиÑтинÑка големина',
+'show-big-image-preview' => '<small>Големина на овој преглед: $1.</small>',
+'show-big-image-other' => '<small>Други резолуции: $1.</small>',
+'show-big-image-size' => '$1 × $2 пикÑели',
+'file-info-gif-looped' => 'кружно',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|кадар|кадри}}',
+'file-info-png-looped' => 'кружно',
+'file-info-png-repeat' => 'пуштено {{PLURAL:$1|еднаш|$1 пати}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|кадар|кадри}}',
# Special:NewFiles
'newimages' => 'Галерија на нови податотеки',
@@ -3053,6 +3130,7 @@ $1',
'seconds-abbrev' => 'Ñ',
'minutes-abbrev' => 'м',
'hours-abbrev' => 'ч',
+'days-abbrev' => 'д',
# Bad image list
'bad_image_list' => 'Форматот е Ñледниот:
@@ -3111,15 +3189,21 @@ Variants for Chinese language
'metadata-help' => 'Оваа податотека Ñодржи дополнителни информации, најверојатно додадени од дигиталниот апарат или отÑликувач. Ðко притоа податотеката претрпела промени, некои податоци може да не ÑоодветÑтвуваат во целоÑÑ‚ по промената на податотеката.',
'metadata-expand' => 'Дополнителни податоци',
'metadata-collapse' => 'Скриј ги дополнителните информации',
-'metadata-fields' => 'Полињата на метаподатоци EXIF прикажани во оваа порака ќе бидат вклучени на Ñтраницата на Ñликата кога мета табелата ќе биде затворена.
-ОÑтанатите ќе бидат Ñокриени по оÑновно.
+'metadata-fields' => 'Полињата за метаподатоци прикажани во оваа порака ќе бидат Ñе прикажуваат на Ñтраницата за Ñликата кога табелата Ñо метаподатоци ќе биде затворена.
+ОÑтанатите ќе бидат Ñкриени по оÑновно.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Ширина',
@@ -3134,13 +3218,11 @@ Variants for Chinese language
'exif-ycbcrpositioning' => 'Положби на Y и C',
'exif-xresolution' => 'Хоризонтална резолуција',
'exif-yresolution' => 'Вертикална резолуција',
-'exif-resolutionunit' => 'Единица за резолуција на X и Y',
'exif-stripoffsets' => 'Положба на податоците',
'exif-rowsperstrip' => 'Број на редови по блок',
'exif-stripbytecounts' => 'Бајти по набиен блок',
'exif-jpeginterchangeformat' => 'Почеток на JPEG-преглед',
'exif-jpeginterchangeformatlength' => 'Бајти JPEG податоци',
-'exif-transferfunction' => 'Функција за преноÑ',
'exif-whitepoint' => 'ХроматичноÑÑ‚ на белата точка',
'exif-primarychromaticities' => 'ХроматичноÑÑ‚ на оÑновните бои',
'exif-ycbcrcoefficients' => 'Матрични коефициенти на транÑформација на бојниот проÑтор',
@@ -3159,7 +3241,6 @@ Variants for Chinese language
'exif-compressedbitsperpixel' => 'Режим на набивање на Ñликата',
'exif-pixelydimension' => 'Ширина на Ñликата',
'exif-pixelxdimension' => 'ВиÑина на Ñликата',
-'exif-makernote' => 'Забелешки на произведувачот',
'exif-usercomment' => 'КориÑнички коментари',
'exif-relatedsoundfile' => 'Поврзана аудиоÑнимка',
'exif-datetimeoriginal' => 'Датум и време на Ñликање',
@@ -3174,7 +3255,6 @@ Variants for Chinese language
'exif-exposureprogram' => 'Режим на екÑпозиција',
'exif-spectralsensitivity' => 'Спектрална оÑетливоÑÑ‚',
'exif-isospeedratings' => 'ISO ÑветлооÑетливоÑÑ‚',
-'exif-oecf' => 'Фактор на оптоелектронÑко претворање',
'exif-shutterspeedvalue' => 'APEX-брзина на затворачот',
'exif-aperturevalue' => 'APEX-oтвор',
'exif-brightnessvalue' => 'APEX-ÑветлоÑÑ‚',
@@ -3188,7 +3268,6 @@ Variants for Chinese language
'exif-focallength-format' => '$1 мм',
'exif-subjectarea' => 'Положба и површина на објектот',
'exif-flashenergy' => 'Енергија на блицот',
-'exif-spatialfrequencyresponse' => 'ПроÑторно-фреквенциÑки одзив',
'exif-focalplanexresolution' => 'Резолуција на фокуÑната рамнина X',
'exif-focalplaneyresolution' => 'Резолуција на фокуÑната рамнина Y',
'exif-focalplaneresolutionunit' => 'Единица за резолуција на фокуÑната рамнина',
@@ -3197,7 +3276,6 @@ Variants for Chinese language
'exif-sensingmethod' => 'Метод на Ñензорот',
'exif-filesource' => 'Извор на податотеката',
'exif-scenetype' => 'Тип на Ñцена',
-'exif-cfapattern' => 'Шема на боен филтер',
'exif-customrendered' => 'Дополнитела обработка на Ñликата',
'exif-exposuremode' => 'Режим на екÑпозиција',
'exif-whitebalance' => 'Рамнотежа на бело',
@@ -3242,11 +3320,81 @@ Variants for Chinese language
'exif-gpsareainformation' => 'Ðазив на GPS-подрачје',
'exif-gpsdatestamp' => 'GPS-датум',
'exif-gpsdifferential' => 'Диференцијална иÑправка на GPS',
+'exif-jpegfilecomment' => 'Забелешка за JPEG-Ñликата',
+'exif-keywords' => 'Клучни зборови',
+'exif-worldregioncreated' => 'ОблаÑÑ‚ од Ñветот кајшто е направена Ñликата',
+'exif-countrycreated' => 'Земја кајшто е направена Ñликата',
+'exif-countrycodecreated' => 'Код на земјата кајшто е направена Ñликата',
+'exif-provinceorstatecreated' => 'Покраина или Ñој. држава кајшто е направена Ñликата',
+'exif-citycreated' => 'Град кајшто е направена Ñликата',
+'exif-sublocationcreated' => 'Дел од градот кајшто е направена Ñликата',
+'exif-worldregiondest' => 'Прикажана облаÑÑ‚ од Ñветот',
+'exif-countrydest' => 'Прикажана земја',
+'exif-countrycodedest' => 'Код на прикажаната земја',
+'exif-provinceorstatedest' => 'Прикажана покраина/Ñој. држава',
+'exif-citydest' => 'Прикажан град',
+'exif-sublocationdest' => 'Прикажан дел од градот',
'exif-objectname' => 'Краток наÑлов',
+'exif-specialinstructions' => 'ПоÑебни упатÑтва',
+'exif-headline' => 'ÐаÑлов',
+'exif-credit' => 'Припишување/Објавувач',
+'exif-source' => 'Извор',
+'exif-editstatus' => 'РедакциÑки ÑÑ‚Ð°Ñ‚ÑƒÑ Ð½Ð° Ñликата',
+'exif-urgency' => 'ИтноÑÑ‚',
+'exif-fixtureidentifier' => 'Ðазив на рубриката',
+'exif-locationdest' => 'Прикажано меÑто',
+'exif-locationdestcode' => 'Код на прикажаното меÑто',
+'exif-objectcycle' => 'За кој дел од денот е наменета Ñликата',
+'exif-contact' => 'Контактни податоци',
+'exif-writer' => 'Ðапишал',
+'exif-languagecode' => 'Јазик',
+'exif-iimversion' => 'IIM-верзија',
+'exif-iimcategory' => 'Категорија',
+'exif-iimsupplementalcategory' => 'Дополнителни категории',
+'exif-datetimeexpires' => 'Да не Ñе кориÑти по',
+'exif-datetimereleased' => 'Објавена на',
+'exif-originaltransmissionref' => 'Код на меÑтото кајшто е иÑпратена Ñликата',
+'exif-identifier' => 'Ðазнака',
+'exif-lens' => 'КориÑтен објектив',
+'exif-serialnumber' => 'СериÑки бр. на фотоапаратот',
+'exif-cameraownername' => 'СопÑтвеник на фотоапаратот',
+'exif-label' => 'Ознака',
+'exif-datetimemetadata' => 'ПоÑледна измена на метаподатоците',
+'exif-nickname' => 'Ðеформален назив на Ñликата',
+'exif-rating' => 'Оценка (од 5)',
+'exif-rightscertificate' => 'Уверение за раководÑтво Ñо права',
+'exif-copyrighted' => 'ÐвторÑки правен ÑтатуÑ',
+'exif-copyrightowner' => 'ÐоÑител на авторÑките права',
+'exif-usageterms' => 'УÑлови на употреба',
+'exif-webstatement' => 'Изјава за авторÑкото право',
+'exif-originaldocumentid' => 'ЕдинÑтвена назнака на изворниот документ',
+'exif-licenseurl' => 'URL на лиценцата',
+'exif-morepermissionsurl' => 'Други лиценцни можноÑти',
+'exif-attributionurl' => 'Кога ја кориÑтите Ñликава, Ñтавајте врÑка до',
+'exif-preferredattributionname' => 'Кога ја кориÑтите Ñликава, наведете го ÑопÑтвеникот',
+'exif-pngfilecomment' => 'Забелешка за PNG-Ñликата',
+'exif-disclaimer' => 'Одрекување од одговорноÑÑ‚',
+'exif-contentwarning' => 'Предупредување за Ñодржината',
+'exif-giffilecomment' => 'Забелешка за GIF-Ñликата',
+'exif-intellectualgenre' => 'Тип на Ñнимка',
+'exif-subjectnewscode' => 'Предметен код',
+'exif-scenecode' => 'IPTC-код за кадарот',
+'exif-event' => 'Прикажан наÑтан',
+'exif-organisationinimage' => 'Прикажана организација',
+'exif-personinimage' => 'Прикажана личноÑÑ‚',
+'exif-originalimageheight' => 'ВиÑина на Ñликата пред каÑтрењето',
+'exif-originalimagewidth' => 'Ширина на Ñликата пред каÑтрењето',
# EXIF attributes
'exif-compression-1' => 'Ðенабиена',
-'exif-compression-6' => 'JPEG',
+'exif-compression-2' => 'CCITT Група 3 1 — Димензионално изменето Хафманово шифрирање по должина на низите',
+'exif-compression-3' => 'CCITT Група 3 — ФакÑ-шифрирање',
+'exif-compression-4' => 'CCITT Група 4 — ФакÑ-шифрирање',
+'exif-compression-5' => 'ЛЗВ',
+'exif-compression-6' => 'JPEG (Ñтар)',
+
+'exif-copyrighted-true' => 'Заштитена',
+'exif-copyrighted-false' => 'Јавна ÑопÑтвеноÑÑ‚',
'exif-photometricinterpretation-2' => 'RGB',
'exif-photometricinterpretation-6' => 'YCbCr',
@@ -3268,8 +3416,8 @@ Variants for Chinese language
'exif-xyresolution-i' => '$1 точки на инч',
'exif-xyresolution-c' => '$1 точки на Ñантиметар',
-'exif-colorspace-1' => 'sRGB',
-'exif-colorspace-ffff.h' => 'FFFF.H',
+'exif-colorspace-1' => 'sRGB',
+'exif-colorspace-65535' => 'Ðеизбаждарена',
'exif-componentsconfiguration-0' => 'не поÑтои',
'exif-componentsconfiguration-1' => 'Y',
@@ -3390,6 +3538,10 @@ Variants for Chinese language
'exif-gpslongitude-e' => 'иÑточна должина',
'exif-gpslongitude-w' => 'западна должина',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|метар|метри}} надморÑка виÑочина',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|метар|метри}} под морÑкото ниво',
+
'exif-gpsstatus-a' => 'Мерење во тек',
'exif-gpsstatus-v' => 'Подготвен за преноÑ',
@@ -3401,21 +3553,73 @@ Variants for Chinese language
'exif-gpsspeed-m' => 'Милји на чаÑ',
'exif-gpsspeed-n' => 'Јазли',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Километри',
+'exif-gpsdestdistance-m' => 'Милји',
+'exif-gpsdestdistance-n' => 'Ðаутички милји',
+
+'exif-gpsdop-excellent' => 'Одлична ($1)',
+'exif-gpsdop-good' => 'Добра ($1)',
+'exif-gpsdop-moderate' => 'Умерена ($1)',
+'exif-gpsdop-fair' => 'Задоволителна ($1)',
+'exif-gpsdop-poor' => 'Слаба ($1)',
+
+'exif-objectcycle-a' => 'Само наутро',
+'exif-objectcycle-p' => 'Само навечер',
+'exif-objectcycle-b' => 'И наутро и навечер',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'ВиÑтинÑки правец',
'exif-gpsdirection-m' => 'Магнетен правец',
+'exif-ycbcrpositioning-1' => 'Средишно',
+'exif-ycbcrpositioning-2' => 'Ðапоредно',
+
+'exif-dc-contributor' => 'УчеÑници',
+'exif-dc-coverage' => 'ПроÑторен или временÑки опфат на Ñнимката',
+'exif-dc-date' => 'Датум(и)',
+'exif-dc-publisher' => 'Издавач',
+'exif-dc-relation' => 'Поврзани Ñнимки',
+'exif-dc-rights' => 'Права',
+'exif-dc-source' => 'Изворна Ñнимка',
+'exif-dc-type' => 'Тип на Ñнимка',
+
+'exif-rating-rejected' => 'Одбиена',
+
+'exif-isospeedratings-overflow' => 'Ðад 65535',
+
+'exif-iimcategory-ace' => 'УметноÑÑ‚, култура и забава',
+'exif-iimcategory-clj' => 'Криминал и право',
+'exif-iimcategory-dis' => 'КатаÑтрофи и неÑреќи',
+'exif-iimcategory-fin' => 'Економија и деловно работење',
+'exif-iimcategory-edu' => 'Образование',
+'exif-iimcategory-evn' => 'Животна околина',
+'exif-iimcategory-hth' => 'ЗдравÑтво',
+'exif-iimcategory-hum' => 'Лични доживувања',
+'exif-iimcategory-lab' => 'Труд',
+'exif-iimcategory-lif' => 'Животен Ñтил и разонода',
+'exif-iimcategory-pol' => 'Политика',
+'exif-iimcategory-rel' => 'Религија и верувања',
+'exif-iimcategory-sci' => 'Ðаука и технологија',
+'exif-iimcategory-soi' => 'Социјална проблематика',
+'exif-iimcategory-spo' => 'Спорт',
+'exif-iimcategory-war' => 'Војни, Ñудири и немири',
+'exif-iimcategory-wea' => 'Време',
+
+'exif-urgency-normal' => 'Ðормална ($1)',
+'exif-urgency-low' => 'Мала ($1)',
+'exif-urgency-high' => 'Голема ($1)',
+'exif-urgency-other' => 'КориÑнички-зададен приоритет ($1)',
+
# External editor support
'edit-externally' => 'Уреди ја податотеката Ñо надворешен програм',
-'edit-externally-help' => '(Видете [http://www.mediawiki.org/wiki/Manual:External_editors повеќе напатÑтвија] за нагодувањето).',
+'edit-externally-help' => '(Видете [//www.mediawiki.org/wiki/Manual:External_editors повеќе напатÑтвија] за нагодувањето).',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Ñите',
-'imagelistall' => 'Ñите',
-'watchlistall2' => 'Ñите',
-'namespacesall' => 'Ñите',
-'monthsall' => 'Ñите',
-'limitall' => 'Ñите',
+'watchlistall2' => 'Ñите',
+'namespacesall' => 'Ñите',
+'monthsall' => 'Ñите',
+'limitall' => 'Ñите',
# E-mail address confirmation
'confirmemail' => 'Потврда на е-поштенÑка адреÑа',
@@ -3499,11 +3703,12 @@ $1',
'trackbackdeleteok' => 'Враќањето беше уÑпешно избришано.',
# Delete conflict
-'deletedwhileediting' => "'''Предупредување''': Оваа Ñтраница беше избришана откако почнавте Ñо нејзино уредување!",
-'confirmrecreate' => "КориÑникот [[User:$1|$1]] ([[User talk:$1|разговор]]) ја избриша оваа Ñтраница откако вие почнавте Ñо уредување заради:
+'deletedwhileediting' => "'''Предупредување''': Оваа Ñтраница беше избришана откако почнавте Ñо нејзино уредување!",
+'confirmrecreate' => "КориÑникот [[User:$1|$1]] ([[User talk:$1|разговор]]) ја избриша оваа Ñтраница откако вие почнавте Ñо уредување заради:
: ''$2''
Потврдете дека навиÑтина Ñакате повторно да ја Ñоздадете оваа Ñтраница.",
-'recreate' => 'Повторно Ñоздај',
+'confirmrecreate-noreason' => 'КориÑникот [[User:$1|$1]] ([[User talk:$1|разговор]]) ја избриша Ñтраницава откако почнавте да ја уредувате. Потврдете деак навиÑтина Ñакате да ја преÑоздадете Ñтраницата.',
+'recreate' => 'Повторно Ñоздај',
'unit-pixel' => 'п',
@@ -3512,6 +3717,12 @@ $1',
'confirm-purge-top' => 'ИÑчиÑти го кешот на оваа Ñтраница?',
'confirm-purge-bottom' => 'Со оваа операција Ñе чиÑти опÑлужувачиот кеш и Ñе прикажува најновата верзија.',
+# action=watch/unwatch
+'confirm-watch-button' => 'ОК',
+'confirm-watch-top' => 'Да ја додадам Ñтраницава во ÑпиÑокот на набљудувања?',
+'confirm-unwatch-button' => 'ОК',
+'confirm-unwatch-top' => 'Да ја отÑтранам Ñтраницава од ÑпиÑокот на набљудувања?',
+
# Separators for various lists, etc.
'percent' => '$1 %',
@@ -3564,14 +3775,16 @@ $1',
'watchlistedit-normal-title' => 'Уредување на ÑпиÑокот на набљудувања',
'watchlistedit-normal-legend' => 'Бришење на наÑлови од ÑпиÑок на набљудување',
'watchlistedit-normal-explain' => 'ÐаÑловите во вашиот ÑпиÑок на набљудувања Ñе прикажани подолу.
-За да избришете наÑлов, штиклирајте го квадратчето лево од наÑловот, и кликнете на „{{int:Watchlistedit-normal-submit}}“.
-ИÑто така можете да го [[Special:Watchlist/raw|уредувате ÑпиÑокот како текÑÑ‚]].',
+За да избришете наÑлов, штиклирајте го квадратчето лево од наÑловот, и ÑтиÑнете на „{{int:Watchlistedit-normal-submit}}“.
+Можете и да го [[Special:EditWatchlist/raw|уредувате Ñировиот ÑпиÑок]].',
'watchlistedit-normal-submit' => 'Избриши',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 наÑлов беше|$1 наÑлови беа}} избришани од вашиот ÑпиÑок на набљудувања:',
'watchlistedit-raw-title' => 'Ðапредно уредување на ÑпиÑокот на набљудувања',
'watchlistedit-raw-legend' => 'Уредување на ÑпиÑокот на набљудувања',
-'watchlistedit-raw-explain' => 'ÐаÑловите во вашиот ÑпиÑок на набљудувања Ñе прикажани подолу, и можат да Ñе уредуваат Ñо додавање или бришење на наÑлови од ÑпиÑокот; еден наÑлов по ред. Кога ќе завршите, кликнете на „{{int:Watchlistedit-raw-submit}}“.
-ИÑто така за ова може да [[Special:Watchlist/edit|кориÑтите Ñтандарден уредувач на текÑÑ‚]].',
+'watchlistedit-raw-explain' => 'ÐаÑловите во вашиот ÑпиÑок на набљудувања Ñе прикажани подолу, и можат да Ñе уредуваат Ñо додавање или бришење на Ñтавки од ÑпиÑокот;
+еден наÑлов по ред.
+Кога ќе завршите, ÑтиÑнете на „{{int:Watchlistedit-raw-submit}}“.
+Можете да го [[Special:EditWatchlist|употребите обичниот уредник]].',
'watchlistedit-raw-titles' => 'ÐаÑлови:',
'watchlistedit-raw-submit' => 'Поднови го ÑпиÑокот',
'watchlistedit-raw-done' => 'Вашиот ÑпиÑок на набљудувања е подновен.',
@@ -3646,34 +3859,34 @@ $1',
'duplicate-defaultsort' => 'Предупредување: ОÑновниот клуч за подредување „$2“ го поништува претходниот оÑновен клуч за подредување „$1“.',
# Special:Version
-'version' => 'Верзија',
-'version-extensions' => 'ИнÑталирани додатоци',
-'version-specialpages' => 'Специјални Ñтраници',
-'version-parserhooks' => 'ПарÑерÑки куки',
-'version-variables' => 'Променливи',
-'version-skins' => 'Рува',
-'version-other' => 'Друго',
-'version-mediahandlers' => 'Ракувачи Ñо мултимедијални Ñодржини',
-'version-hooks' => 'Куки',
-'version-extension-functions' => 'Функции на додатоците',
-'version-parser-extensiontags' => 'Ознаки за парÑерÑки додатоци',
-'version-parser-function-hooks' => 'Куки на парÑерÑките функции',
-'version-skin-extension-functions' => 'Функции за обогатување на изгледот',
-'version-hook-name' => 'Име на кука',
-'version-hook-subscribedby' => 'Претплатено од',
-'version-version' => '(Верзија $1)',
-'version-svn-revision' => '(рев. $2)',
-'version-license' => 'Лиценца',
-'version-poweredby-credits' => "Ова вики работи на '''[http://www.mediawiki.org/ МедијаВики]''', авторÑки права © 2001-$1 $2.",
-'version-poweredby-others' => 'други',
-'version-license-info' => 'МедијаВики е Ñлободна програмÑка опрема; можете да ја редиÑтрибуирате и/или менувате под уÑловите на ГÐУ-овата општа јавна лиценца на Фондацијата за Ñлободна програмÑка опрема; или верзија 2 на Лиценцата, или некоја понова верзија (по ваш избор).
+'version' => 'Верзија',
+'version-extensions' => 'ИнÑталирани додатоци',
+'version-specialpages' => 'Специјални Ñтраници',
+'version-parserhooks' => 'ПарÑерÑки куки',
+'version-variables' => 'Променливи',
+'version-antispam' => 'Спречување на Ñпам',
+'version-skins' => 'Рува',
+'version-other' => 'Друго',
+'version-mediahandlers' => 'Ракувачи Ñо мултимедијални Ñодржини',
+'version-hooks' => 'Куки',
+'version-extension-functions' => 'Функции на додатоците',
+'version-parser-extensiontags' => 'Ознаки за парÑерÑки додатоци',
+'version-parser-function-hooks' => 'Куки на парÑерÑките функции',
+'version-hook-name' => 'Име на кука',
+'version-hook-subscribedby' => 'Претплатено од',
+'version-version' => '(Верзија $1)',
+'version-svn-revision' => '(рев. $2)',
+'version-license' => 'Лиценца',
+'version-poweredby-credits' => "Ова вики работи на '''[//www.mediawiki.org/ МедијаВики]''', авторÑки права © 2001-$1 $2.",
+'version-poweredby-others' => 'други',
+'version-license-info' => 'МедијаВики е Ñлободна програмÑка опрема; можете да ја редиÑтрибуирате и/или менувате под уÑловите на ГÐУ-овата општа јавна лиценца на Фондацијата за Ñлободна програмÑка опрема; или верзија 2 на Лиценцата, или некоја понова верзија (по ваш избор).
МедијаВики Ñе нуди Ñо надеж дека ќе биде од кориÑÑ‚, но БЕЗ БИЛО КÐКВРГÐРÐÐЦИЈÐ; дури и без подразбраната гаранција за ПРОДÐЖÐРВРЕДÐОСТ или ПОГОДÐОСТ ЗРДÐДЕÐРЦЕЛ. За повеќе информации, погледајте ја ГÐУ-овата општа јавна лиценца.
-Заедно Ñо програмов треба да имате добиено [{{SERVER}}{{SCRIPTPATH}}/COPYING примерок од ГÐУ-овата општа јавна лиценца]; ако немате добиено примерок, пишете на Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA или [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html прочитајте ја тука].',
-'version-software' => 'ИнÑталирана програмÑка опрема',
-'version-software-product' => 'Производ',
-'version-software-version' => 'Верзија',
+Заедно Ñо програмов треба да имате добиено [{{SERVER}}{{SCRIPTPATH}}/COPYING примерок од ГÐУ-овата општа јавна лиценца]; ако немате добиено примерок, пишете на Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA или [//www.gnu.org/licenses/old-licenses/gpl-2.0.html прочитајте ја тука].',
+'version-software' => 'ИнÑталирана програмÑка опрема',
+'version-software-product' => 'Производ',
+'version-software-version' => 'Верзија',
# Special:FilePath
'filepath' => 'Патека до податотека',
@@ -3683,22 +3896,22 @@ $1',
Сликите Ñе прикажани во изворна големина, другите типови на податотеки Ñе отвораат Ñо Ñоодветните програми, директно.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Барање на дуплирани податотеки',
-'fileduplicatesearch-summary' => 'Пребарување на дуплирани податотеки врз оÑнова на нивната hash-вредноÑÑ‚.
-
-ВнеÑете име на податотека без префикÑот „{{ns:file}}:“.',
-'fileduplicatesearch-legend' => 'Барање на дупликат',
-'fileduplicatesearch-filename' => 'Име на податотеката:',
-'fileduplicatesearch-submit' => 'Барај',
-'fileduplicatesearch-info' => '$1 × $2 пикÑели<br />Големина на податотеката: $3<br />MIME-тип: $4',
-'fileduplicatesearch-result-1' => 'Податотеката „$1“ нема иÑтоветни дупликати.',
-'fileduplicatesearch-result-n' => 'Податотеката „$1“ има {{PLURAL:$2|еден иÑтоветен дупликат|$2 иÑтоветни дупликати}}.',
+'fileduplicatesearch' => 'Барање на дуплирани податотеки',
+'fileduplicatesearch-summary' => 'Пребарување на дуплирани податотеки по тарабни вредноÑти.',
+'fileduplicatesearch-legend' => 'Барање на дупликат',
+'fileduplicatesearch-filename' => 'Име на податотеката:',
+'fileduplicatesearch-submit' => 'Барај',
+'fileduplicatesearch-info' => '$1 × $2 пикÑели<br />Големина на податотеката: $3<br />MIME-тип: $4',
+'fileduplicatesearch-result-1' => 'Податотеката „$1“ нема иÑтоветни дупликати.',
+'fileduplicatesearch-result-n' => 'Податотеката „$1“ има {{PLURAL:$2|еден иÑтоветен дупликат|$2 иÑтоветни дупликати}}.',
+'fileduplicatesearch-noresults' => 'Ðе пронајдов податотека Ñо име „$1“.',
# Special:SpecialPages
'specialpages' => 'Специјални Ñтраници',
'specialpages-note' => '----
* Ðормални Ñпецијални Ñтраници.
-* <strong class="mw-specialpagerestricted">Специјални Ñтраници Ñо ограничен приÑтап.</strong>',
+* <span class="mw-specialpagerestricted">Ограничени Ñпецијални Ñтраници.</span>
+* <span class="mw-specialpagecached">Кеширани Ñпецијални Ñтраници (може да Ñе заÑтарени).</span>',
'specialpages-group-maintenance' => 'Извештаи за одржување',
'specialpages-group-other' => 'Други Ñпецијални Ñтраници',
'specialpages-group-login' => 'Ðајава / региÑтрација',
diff --git a/languages/messages/MessagesMl.php b/languages/messages/MessagesMl.php
index b396dbb7..f9df0336 100644
--- a/languages/messages/MessagesMl.php
+++ b/languages/messages/MessagesMl.php
@@ -44,8 +44,8 @@ $namespaceNames = array(
NS_TEMPLATE_TALK => 'ഫലകതàµà´¤à´¿à´¨àµà´±àµ†_സംവാദം',
NS_HELP => 'സഹായം',
NS_HELP_TALK => 'സഹായതàµà´¤à´¿à´¨àµà´±àµ†_സംവാദം',
- NS_CATEGORY => 'വരàµâ€à´—àµà´—à´‚',
- NS_CATEGORY_TALK => 'വരàµâ€à´—àµà´—à´¤àµà´¤à´¿à´¨àµà´±àµ†_സംവാദം',
+ NS_CATEGORY => 'വർഗàµà´—à´‚',
+ NS_CATEGORY_TALK => 'വർഗàµà´—à´¤àµà´¤à´¿à´¨àµà´±àµ†_സംവാദം',
);
$namespaceAliases = array(
@@ -78,100 +78,103 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ഇരടàµà´Ÿà´¤àµà´¤à´¿à´°à´¿à´šàµà´šàµà´µà´¿à´Ÿà´²àµà´•àµ¾' ),
+ 'Activeusers' => array( 'സജീവ_ഉപയോകàµà´¤à´¾à´•àµà´•àµ¾' ),
+ 'Allmessages' => array( 'സർവàµà´µà´¸à´¨àµà´¦àµ‡à´¶à´™àµà´™àµ¾' ),
+ 'Allpages' => array( 'à´Žà´²àµà´²à´¾à´¤à´¾à´³àµà´•à´³àµà´‚' ),
+ 'Ancientpages' => array( 'à´ªàµà´°à´¾à´¤à´¨_താളàµà´•àµ¾' ),
+ 'Blankpage' => array( 'ശൂനàµà´¯à´¤à´¾àµ¾' ),
+ 'Block' => array( 'തടയàµà´•', 'à´.പി.തടയàµà´•', 'ഉപയോകàµà´¤àµƒà´¤à´Ÿà´¯àµ½' ),
+ 'Blockme' => array( 'à´Žà´¨àµà´¨àµ†à´¤à´Ÿà´¯àµà´•' ),
+ 'Booksources' => array( 'à´ªàµà´¸àµà´¤à´•à´¸àµà´°àµ‹à´¤à´¸àµà´¸àµà´•àµ¾' ),
'BrokenRedirects' => array( 'പൊടàµà´Ÿà´¿à´¯à´¤à´¿à´°à´¿à´šàµà´šàµà´µà´¿à´Ÿà´²àµà´•àµ¾' ),
- 'Disambiguations' => array( 'വിവകàµà´·à´¿à´¤à´™àµà´™àµ¾' ),
- 'Userlogin' => array( 'à´ªàµà´°à´µàµ‡à´¶à´¨à´‚' ),
- 'Userlogout' => array( 'à´ªàµà´±à´¤àµà´¤àµà´•à´Ÿà´•àµà´•àµ½' ),
+ 'Categories' => array( 'വർഗàµà´—à´™àµà´™àµ¾' ),
+ 'ChangeEmail' => array( 'ഇമെയിലിൽമാറàµà´±à´‚വരàµà´¤àµà´¤àµà´•' ),
+ 'ChangePassword' => array( 'രഹസàµà´¯à´µà´¾à´•àµà´•àµ_മാറàµà´±àµà´•' ),
+ 'ComparePages' => array( 'താളàµà´•à´³àµà´Ÿàµ†à´¤à´¾à´°à´¤à´®àµà´¯à´‚' ),
+ 'Confirmemail' => array( 'ഇമെയിൽ_à´¸àµà´¥à´¿à´°àµ€à´•à´°à´¿à´•àµà´•àµà´•' ),
+ 'Contributions' => array( 'സംഭാവനകൾ' ),
'CreateAccount' => array( 'à´…à´‚à´—à´¤àµà´µà´®àµ†à´Ÿàµà´•àµà´•àµ½' ),
- 'Preferences' => array( 'à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™àµ¾' ),
- 'Watchlist' => array( 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨à´µ' ),
- 'Recentchanges' => array( 'സമീപകാലമാറàµà´±à´™àµà´™àµ¾' ),
- 'Upload' => array( 'à´…à´ªàµâ€Œà´²àµ‹à´¡àµ' ),
- 'UploadStash' => array( 'à´…à´ªàµâ€Œà´²àµ‹à´¡àµ_മറയàµà´•àµà´•àµ½' ),
+ 'Deadendpages' => array( 'à´…à´¨àµà´¤àµà´¯à´¸àµà´¥à´¾à´¨à´¤àµà´¤àµà´³àµà´³_താളàµà´•àµ¾' ),
+ 'DeletedContributions' => array( 'മായàµà´šàµà´š_സേവനങàµà´™àµ¾' ),
+ 'Disambiguations' => array( 'വിവകàµà´·à´¿à´¤à´™àµà´™àµ¾' ),
+ 'DoubleRedirects' => array( 'ഇരടàµà´Ÿà´¤àµà´¤à´¿à´°à´¿à´šàµà´šàµà´µà´¿à´Ÿà´²àµà´•àµ¾' ),
+ 'EditWatchlist' => array( 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨à´µà´¯àµà´Ÿàµ†à´ªà´Ÿàµà´Ÿà´¿à´•à´¤à´¿à´°àµà´¤àµà´¤àµà´•' ),
+ 'Emailuser' => array( 'ഉപയോകàµà´¤àµƒà´‡à´®àµ†à´¯à´¿àµ½' ),
+ 'Export' => array( 'കയറàµà´±àµà´®à´¤à´¿' ),
+ 'Fewestrevisions' => array( 'à´•àµà´±à´žàµà´ž_à´ªàµà´¨à´°à´µà´²àµ‹à´•à´¨à´™àµà´™àµ¾' ),
+ 'FileDuplicateSearch' => array( 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ†_അപരനàµà´³àµà´³_തിരചàµà´šà´¿àµ½' ),
+ 'Filepath' => array( 'à´ªàµà´°à´®à´¾à´£à´µà´¿à´²à´¾à´¸à´‚' ),
+ 'Import' => array( 'ഇറകàµà´•àµà´®à´¤à´¿' ),
+ 'Invalidateemail' => array( 'ഇമെയിൽഅസാധàµà´µà´¾à´•àµà´•àµà´•' ),
+ 'BlockList' => array( 'തടയൽ‌പടàµà´Ÿà´¿à´•', 'à´à´ªà´¿à´•à´³àµà´Ÿàµ†_തടയൽ‌പടàµà´Ÿà´¿à´•' ),
+ 'LinkSearch' => array( 'à´•à´£àµà´£à´¿à´•àµ¾_തിരയàµà´•' ),
+ 'Listadmins' => array( 'കാരàµà´¯à´¨à´¿àµ¼à´µà´¾à´¹à´•à´ªà´Ÿàµà´Ÿà´¿à´•' ),
+ 'Listbots' => array( 'യനàµà´¤àµà´°à´™àµà´™à´³àµà´Ÿàµ†_പടàµà´Ÿà´¿à´•' ),
'Listfiles' => array( 'à´ªàµà´°à´®à´¾à´£à´™àµà´™à´³àµà´Ÿàµ†_പടàµà´Ÿà´¿à´•', 'à´šà´¿à´¤àµà´°à´™àµà´™à´³àµà´Ÿàµ†_പടàµà´Ÿà´¿à´•' ),
- 'Newimages' => array( 'à´ªàµà´¤à´¿à´¯_à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾', 'à´ªàµà´¤à´¿à´¯_à´šà´¿à´¤àµà´°à´™àµà´™àµ¾' ),
- 'Listusers' => array( 'ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµà´Ÿàµ†_പടàµà´Ÿà´¿à´•' ),
'Listgrouprights' => array( 'സമൂഹതàµà´¤à´¿à´¨àµà´±àµ†_അവകാശങàµà´™à´³àµà´Ÿàµ†_പടàµà´Ÿà´¿à´•' ),
- 'Statistics' => array( 'à´¸àµà´¥à´¿à´¤à´¿à´µà´¿à´µà´°à´‚' ),
- 'Randompage' => array( 'à´•àµà´°à´®à´°à´¹à´¿à´¤à´‚', 'à´•àµà´°à´®à´°à´¹à´¿à´¤à´¤à´¾àµ¾' ),
+ 'Listredirects' => array( 'തിരിചàµà´šàµà´µà´¿à´Ÿàµ½â€Œà´ªà´Ÿàµà´Ÿà´¿à´•' ),
+ 'Listusers' => array( 'ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµà´Ÿàµ†_പടàµà´Ÿà´¿à´•' ),
+ 'Lockdb' => array( 'à´¡à´¿.ബി.ബനàµà´§à´¿à´•àµà´•àµà´•' ),
+ 'Log' => array( 'രേഖ', 'രേഖകൾ' ),
'Lonelypages' => array( 'അനാഥ_താളàµà´•àµ¾' ),
- 'Uncategorizedpages' => array( 'വർഗàµà´—ീകരികàµà´•à´¾à´¤àµà´¤_താളàµà´•àµ¾' ),
- 'Uncategorizedcategories' => array( 'വർഗàµà´—ീകരികàµà´•à´¾à´¤àµà´¤_വർഗàµà´—à´™àµà´™àµ¾' ),
- 'Uncategorizedimages' => array( 'വർഗàµà´—ീകരികàµà´•à´¾à´¤àµà´¤_à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾' ),
- 'Uncategorizedtemplates' => array( 'വർഗàµà´—ീകരികàµà´•à´¾à´¤àµà´¤_ഫലകങàµà´™àµ¾' ),
- 'Unusedcategories' => array( 'ഉപയോഗികàµà´•à´¾à´¤àµà´¤_വർഗàµà´—à´™àµà´™àµ¾' ),
- 'Unusedimages' => array( 'ഉപയോഗികàµà´•à´¾à´¤àµà´¤_à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾' ),
- 'Wantedpages' => array( 'ആവശàµà´¯à´®àµà´³àµà´³_താളàµà´•àµ¾', 'പൊടàµà´Ÿà´¿à´¯_à´•à´£àµà´£à´¿à´•àµ¾' ),
- 'Wantedcategories' => array( 'ആവശàµà´¯à´®àµà´³àµà´³_വർഗàµà´—à´™àµà´™àµ¾' ),
- 'Wantedfiles' => array( 'ആവശàµà´¯à´®àµà´³àµà´³_à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾' ),
- 'Wantedtemplates' => array( 'ആവശàµà´¯à´®àµà´³àµà´³_ഫലകങàµà´™àµ¾' ),
+ 'Longpages' => array( 'വലിയ_താളàµà´•àµ¾' ),
+ 'MergeHistory' => array( 'നാൾവഴിലയിപàµà´ªà´¿à´•àµà´•àµà´•' ),
+ 'MIMEsearch' => array( 'മൈംതിരയൽ' ),
+ 'Mostcategories' => array( 'കൂടàµà´¤àµ½_വർഗàµà´—à´™àµà´™àµ¾' ),
+ 'Mostimages' => array( 'കൂടàµà´¤àµ½_à´•à´£àµà´£à´¿à´•à´³àµà´³àµà´³_à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾', 'കൂടàµà´¤àµ½_à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾', 'കൂടàµà´¤àµ½_à´šà´¿à´¤àµà´°à´™àµà´™àµ¾' ),
'Mostlinked' => array( 'കൂടàµà´¤àµ½_à´•à´£àµà´£à´¿à´•à´³àµà´³àµà´³_താളàµà´•àµ¾', 'കൂടàµà´¤àµ½_à´•à´£àµà´£à´¿à´•à´³àµà´³àµà´³à´µ' ),
'Mostlinkedcategories' => array( 'കൂടàµà´¤àµ½_à´•à´£àµà´£à´¿à´•à´³àµà´³àµà´³_വർഗàµà´—à´™àµà´™àµ¾', 'കൂടàµà´¤àµ½_ഉപയോഗിചàµà´šà´¿à´Ÿàµà´Ÿàµà´³àµà´³_വർഗàµà´—à´™àµà´™àµ¾' ),
'Mostlinkedtemplates' => array( 'കൂടàµà´¤àµ½_à´•à´£àµà´£à´¿à´•à´³àµà´³àµà´³_ഫലകങàµà´™àµ¾', 'കൂടàµà´¤àµ½_ഉപയോഗിചàµà´šà´¿à´Ÿàµà´Ÿàµà´³àµà´³_ഫലകങàµà´™àµ¾' ),
- 'Mostimages' => array( 'കൂടàµà´¤àµ½_à´•à´£àµà´£à´¿à´•à´³àµà´³àµà´³_à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾', 'കൂടàµà´¤àµ½_à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾', 'കൂടàµà´¤àµ½_à´šà´¿à´¤àµà´°à´™àµà´™àµ¾' ),
- 'Mostcategories' => array( 'കൂടàµà´¤àµ½_വർഗàµà´—à´™àµà´™àµ¾' ),
'Mostrevisions' => array( 'കൂടàµà´¤àµ½_à´ªàµà´¨à´°à´µà´²àµ‹à´•à´¨à´™àµà´™àµ¾' ),
- 'Fewestrevisions' => array( 'à´•àµà´±à´žàµà´ž_à´ªàµà´¨à´°à´µà´²àµ‹à´•à´¨à´™àµà´™àµ¾' ),
- 'Shortpages' => array( 'ചെറിയ_താളàµà´•àµ¾' ),
- 'Longpages' => array( 'വലിയ_താളàµà´•àµ¾' ),
+ 'Movepage' => array( 'താൾ_മാറàµà´±àµà´•' ),
+ 'Mycontributions' => array( 'à´Žà´¨àµà´±àµ†à´¸à´‚ഭാവനകൾ' ),
+ 'Mypage' => array( 'à´Žà´¨àµà´±àµ†à´¤à´¾àµ¾' ),
+ 'Mytalk' => array( 'à´Žà´¨àµà´±àµ†à´¸à´‚വാദം' ),
+ 'Myuploads' => array( 'ഞാൻഅപàµâ€Œà´²àµ‹à´¡àµâ€Œà´šàµ†à´¯àµà´¤à´µ' ),
+ 'Newimages' => array( 'à´ªàµà´¤à´¿à´¯_à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾', 'à´ªàµà´¤à´¿à´¯_à´šà´¿à´¤àµà´°à´™àµà´™àµ¾' ),
'Newpages' => array( 'à´ªàµà´¤à´¿à´¯_താളàµà´•àµ¾' ),
- 'Ancientpages' => array( 'à´ªàµà´°à´¾à´¤à´¨_താളàµà´•àµ¾' ),
- 'Deadendpages' => array( 'à´…à´¨àµà´¤àµà´¯à´¸àµà´¥à´¾à´¨à´¤àµà´¤àµà´³àµà´³_താളàµà´•àµ¾' ),
+ 'PasswordReset' => array( 'രഹസàµà´¯à´µà´¾à´•àµà´•àµâ€Œâ€Œà´ªàµà´¨à´•àµà´°à´®àµ€à´•à´°à´£à´‚' ),
+ 'PermanentLink' => array( 'à´¸àµà´¥à´¿à´°à´‚à´•à´£àµà´£à´¿' ),
+ 'Popularpages' => array( 'ജനപàµà´°à´¿à´¯à´¤à´¾à´³àµà´•àµ¾' ),
+ 'Preferences' => array( 'à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™àµ¾' ),
+ 'Prefixindex' => array( 'പൂർവàµà´µà´ªà´¦à´¸àµ‚à´šà´¿à´•' ),
'Protectedpages' => array( 'സംരകàµà´·à´¿à´¤_താളàµà´•àµ¾' ),
'Protectedtitles' => array( 'സംരകàµà´·à´¿à´¤_ശീർഷകങàµà´™àµ¾' ),
- 'Allpages' => array( 'à´Žà´²àµà´²à´¾à´¤à´¾à´³àµà´•à´³àµà´‚' ),
- 'Prefixindex' => array( 'പൂർവàµà´µà´ªà´¦à´¸àµ‚à´šà´¿à´•' ),
- 'Ipblocklist' => array( 'തടയൽ‌പടàµà´Ÿà´¿à´•', 'à´à´ªà´¿à´•à´³àµà´Ÿàµ†_തടയൽ‌പടàµà´Ÿà´¿à´•' ),
- 'Unblock' => array( 'തടയൽനീകàµà´•àµà´•' ),
- 'Specialpages' => array( 'à´ªàµà´°à´¤àµà´¯àµ‡à´•à´¤à´¾à´³àµà´•àµ¾' ),
- 'Contributions' => array( 'സംഭാവനകൾ' ),
- 'Emailuser' => array( 'ഉപയോകàµà´¤àµƒà´‡à´®àµ†à´¯à´¿àµ½' ),
- 'Confirmemail' => array( 'ഇമെയിൽ_à´¸àµà´¥à´¿à´°àµ€à´•à´°à´¿à´•àµà´•àµà´•' ),
- 'Whatlinkshere' => array( 'à´•à´£àµà´£à´¿à´•à´³àµ†à´¨àµà´¤àµ†à´²àµà´²à´¾à´‚' ),
+ 'Randompage' => array( 'à´•àµà´°à´®à´°à´¹à´¿à´¤à´‚', 'à´•àµà´°à´®à´°à´¹à´¿à´¤à´¤à´¾àµ¾' ),
+ 'Randomredirect' => array( 'à´•àµà´°à´®à´°à´¹à´¿à´¤à´¤à´¿à´°à´¿à´šàµà´šàµà´µà´¿à´Ÿà´²àµà´•àµ¾' ),
+ 'Recentchanges' => array( 'സമീപകാലമാറàµà´±à´™àµà´™àµ¾' ),
'Recentchangeslinked' => array( 'ബനàµà´§à´ªàµà´ªàµ†à´Ÿàµà´Ÿ_മാറàµà´±à´™àµà´™àµ¾' ),
- 'Movepage' => array( 'താൾ_മാറàµà´±àµà´•' ),
- 'Blockme' => array( 'à´Žà´¨àµà´¨àµ†à´¤à´Ÿà´¯àµà´•' ),
- 'Booksources' => array( 'à´ªàµà´¸àµà´¤à´•à´¸àµà´°àµ‹à´¤à´¸àµà´¸àµà´•àµ¾' ),
- 'Categories' => array( 'വർഗàµà´—à´™àµà´™àµ¾' ),
- 'Export' => array( 'കയറàµà´±àµà´®à´¤à´¿' ),
- 'Version' => array( 'പതിപàµà´ªàµ' ),
- 'Allmessages' => array( 'സർവàµà´µà´¸à´¨àµà´¦àµ‡à´¶à´™àµà´™àµ¾' ),
- 'Log' => array( 'രേഖ', 'രേഖകൾ' ),
- 'Blockip' => array( 'തടയàµà´•', 'à´à´ªà´¿à´¯àµ†_തടയàµà´•', 'ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ†_തടയàµà´•' ),
+ 'Revisiondelete' => array( 'നാൾപàµà´ªà´¤à´¿à´ªàµà´ªàµ_മായàµà´•àµà´•àµ½' ),
+ 'RevisionMove' => array( 'നാൾപàµà´ªà´¤à´¿à´ªàµà´ªàµà´®à´¾à´±àµà´±àµ½' ),
+ 'Search' => array( 'à´…à´¨àµà´µàµ‡à´·à´£à´‚' ),
+ 'Shortpages' => array( 'ചെറിയ_താളàµà´•àµ¾' ),
+ 'Specialpages' => array( 'à´ªàµà´°à´¤àµà´¯àµ‡à´•à´¤à´¾à´³àµà´•àµ¾' ),
+ 'Statistics' => array( 'à´¸àµà´¥à´¿à´¤à´¿à´µà´¿à´µà´°à´‚' ),
+ 'Tags' => array( 'à´±àµà´±à´¾à´—àµà´•àµ¾' ),
+ 'Unblock' => array( 'തടയൽനീകàµà´•àµà´•' ),
+ 'Uncategorizedcategories' => array( 'വർഗàµà´—ീകരികàµà´•à´¾à´¤àµà´¤_വർഗàµà´—à´™àµà´™àµ¾' ),
+ 'Uncategorizedimages' => array( 'വർഗàµà´—ീകരികàµà´•à´¾à´¤àµà´¤_à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾' ),
+ 'Uncategorizedpages' => array( 'വർഗàµà´—ീകരികàµà´•à´¾à´¤àµà´¤_താളàµà´•àµ¾' ),
+ 'Uncategorizedtemplates' => array( 'വർഗàµà´—ീകരികàµà´•à´¾à´¤àµà´¤_ഫലകങàµà´™àµ¾' ),
'Undelete' => array( 'മായàµà´šàµà´šà´µ_à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¨à´‚' ),
- 'Import' => array( 'ഇറകàµà´•àµà´®à´¤à´¿' ),
- 'Lockdb' => array( 'à´¡à´¿.ബി.ബനàµà´§à´¿à´•àµà´•àµà´•' ),
'Unlockdb' => array( 'à´¡à´¿.ബി.ബനàµà´§à´¨à´‚നീകàµà´•àµà´•' ),
- 'Userrights' => array( 'ഉപയോകàµà´¤àµƒà´…വകാശങàµà´™àµ¾', 'കാരàµà´¯à´¨à´¿àµ¼à´µà´¾à´¹à´•à´¸àµƒà´·àµà´Ÿà´¿', 'യനàµà´¤àµà´°à´¸àµƒà´·àµà´Ÿà´¿' ),
- 'MIMEsearch' => array( 'മൈംതിരയൽ' ),
- 'FileDuplicateSearch' => array( 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ†_അപരനàµà´³àµà´³_തിരചàµà´šà´¿àµ½' ),
- 'Unwatchedpages' => array( 'ആരàµà´‚à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•à´¾à´¤àµà´¤à´¤à´¾à´³àµà´•àµ¾' ),
- 'Listredirects' => array( 'തിരിചàµà´šàµà´µà´¿à´Ÿàµ½â€Œà´ªà´Ÿàµà´Ÿà´¿à´•' ),
- 'Revisiondelete' => array( 'നാൾപàµà´ªà´¤à´¿à´ªàµà´ªàµ_മായàµà´•àµà´•àµ½' ),
+ 'Unusedcategories' => array( 'ഉപയോഗികàµà´•à´¾à´¤àµà´¤_വർഗàµà´—à´™àµà´™àµ¾' ),
+ 'Unusedimages' => array( 'ഉപയോഗികàµà´•à´¾à´¤àµà´¤_à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾' ),
'Unusedtemplates' => array( 'ഉപയോഗികàµà´•à´¾à´¤àµà´¤à´«à´²à´•à´™àµà´™àµ¾' ),
- 'Randomredirect' => array( 'à´•àµà´°à´®à´°à´¹à´¿à´¤à´¤à´¿à´°à´¿à´šàµà´šàµà´µà´¿à´Ÿà´²àµà´•àµ¾' ),
- 'Mypage' => array( 'à´Žà´¨àµà´±àµ†à´¤à´¾àµ¾' ),
- 'Mytalk' => array( 'à´Žà´¨àµà´±àµ†à´¸à´‚വാദം' ),
- 'Mycontributions' => array( 'à´Žà´¨àµà´±àµ†à´¸à´‚ഭാവനകൾ' ),
- 'Myuploads' => array( 'ഞാൻഅപàµâ€Œà´²àµ‹à´¡àµâ€Œà´šàµ†à´¯àµà´¤à´µ' ),
- 'Listadmins' => array( 'കാരàµà´¯à´¨à´¿àµ¼à´µà´¾à´¹à´•à´ªà´Ÿàµà´Ÿà´¿à´•' ),
- 'Listbots' => array( 'യനàµà´¤àµà´°à´™àµà´™à´³àµà´Ÿàµ†_പടàµà´Ÿà´¿à´•' ),
- 'Popularpages' => array( 'ജനപàµà´°à´¿à´¯à´¤à´¾à´³àµà´•àµ¾' ),
- 'Search' => array( 'à´…à´¨àµà´µàµ‡à´·à´£à´‚' ),
- 'Resetpass' => array( 'രഹസàµà´¯à´µà´¾à´•àµà´•àµ_മാറàµà´±àµà´•' ),
+ 'Unwatchedpages' => array( 'ആരàµà´‚à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•à´¾à´¤àµà´¤à´¤à´¾à´³àµà´•àµ¾' ),
+ 'Upload' => array( 'à´…à´ªàµâ€Œà´²àµ‹à´¡àµ' ),
+ 'UploadStash' => array( 'à´…à´ªàµâ€Œà´²àµ‹à´¡àµ_മറയàµà´•àµà´•àµ½' ),
+ 'Userlogin' => array( 'à´ªàµà´°à´µàµ‡à´¶à´¨à´‚' ),
+ 'Userlogout' => array( 'à´ªàµà´±à´¤àµà´¤àµà´•à´Ÿà´•àµà´•àµ½' ),
+ 'Userrights' => array( 'ഉപയോകàµà´¤àµƒà´…വകാശങàµà´™àµ¾', 'കാരàµà´¯à´¨à´¿àµ¼à´µà´¾à´¹à´•à´¸àµƒà´·àµà´Ÿà´¿', 'യനàµà´¤àµà´°à´¸àµƒà´·àµà´Ÿà´¿' ),
+ 'Version' => array( 'പതിപàµà´ªàµ' ),
+ 'Wantedcategories' => array( 'ആവശàµà´¯à´®àµà´³àµà´³_വർഗàµà´—à´™àµà´™àµ¾' ),
+ 'Wantedfiles' => array( 'ആവശàµà´¯à´®àµà´³àµà´³_à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾' ),
+ 'Wantedpages' => array( 'ആവശàµà´¯à´®àµà´³àµà´³_താളàµà´•àµ¾', 'പൊടàµà´Ÿà´¿à´¯_à´•à´£àµà´£à´¿à´•àµ¾' ),
+ 'Wantedtemplates' => array( 'ആവശàµà´¯à´®àµà´³àµà´³_ഫലകങàµà´™àµ¾' ),
+ 'Watchlist' => array( 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨à´µ' ),
+ 'Whatlinkshere' => array( 'à´•à´£àµà´£à´¿à´•à´³àµ†à´¨àµà´¤àµ†à´²àµà´²à´¾à´‚' ),
'Withoutinterwiki' => array( 'à´…à´¨àµà´¤àµ¼à´µà´¿à´•àµà´•à´¿à´¯à´¿à´²àµà´²à´¾à´¤àµà´¤à´µ' ),
- 'MergeHistory' => array( 'നാൾവഴിലയിപàµà´ªà´¿à´•àµà´•àµà´•' ),
- 'Filepath' => array( 'à´ªàµà´°à´®à´¾à´£à´µà´¿à´²à´¾à´¸à´‚' ),
- 'Invalidateemail' => array( 'ഇമെയിൽഅസാധàµà´µà´¾à´•àµà´•àµà´•' ),
- 'Blankpage' => array( 'ശൂനàµà´¯à´¤à´¾àµ¾' ),
- 'LinkSearch' => array( 'à´•à´£àµà´£à´¿à´•àµ¾_തിരയàµà´•' ),
- 'DeletedContributions' => array( 'മായàµà´šàµà´š_സേവനങàµà´™àµ¾' ),
- 'Tags' => array( 'à´±àµà´±à´¾à´—àµà´•àµ¾' ),
- 'Activeusers' => array( 'സജീവ_ഉപയോകàµà´¤à´¾à´•àµà´•àµ¾' ),
- 'ComparePages' => array( 'താളàµà´•à´³àµà´Ÿàµ†à´¤à´¾à´°à´¤à´®àµà´¯à´‚' ),
- 'Badtitle' => array( 'മോശംതലകàµà´•àµ†à´Ÿàµà´Ÿàµ' ),
- 'DisableAccount' => array( 'à´…à´‚à´—à´¤àµà´µà´‚നിർജàµà´œàµ€à´µà´®à´¾à´•àµà´•àµà´•' ),
);
$magicWords = array(
@@ -344,8 +347,8 @@ $messages = array(
'tog-shownumberswatching' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµà´Ÿàµ† à´Žà´£àµà´£à´‚ കാണികàµà´•àµà´•',
'tog-oldsig' => 'നിലവിലàµà´³àµà´³ à´’à´ªàµà´ªàµ:',
'tog-fancysig' => 'à´’à´ªàµà´ªàµ ഒരൠവികàµà´•à´¿ à´Žà´´àµà´¤àµà´¤à´¾à´¯à´¿ പരിഗണികàµà´•àµà´• (à´•à´£àµà´£à´¿ à´¸àµà´µà´¯à´‚ ചേർകàµà´•àµ‡à´£àµà´Ÿà´¤à´¿à´²àµà´²)',
-'tog-externaleditor' => 'à´¸àµà´µà´¤àµ‡ ബാഹàµà´¯ à´Žà´¡à´¿à´±àµà´±àµ¼ ഉപയോഗികàµà´•àµà´• (വിദഗàµà´¦àµà´§ ഉപയോകàµà´¤à´¾à´•àµà´•àµ¾à´•àµà´•àµ മാതàµà´°à´‚, താങàµà´•à´³àµà´Ÿàµ† à´•à´®àµà´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´±à´¿àµ½ à´ªàµà´°à´¤àµà´¯àµ‡à´• സജàµà´œàµ€à´•à´°à´£à´™àµà´™àµ¾ ആവശàµà´¯à´®à´¾à´£àµ. [http://www.mediawiki.org/wiki/Manual:External_editors കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾.])',
-'tog-externaldiff' => 'à´µàµà´¯à´¤àµà´¯à´¾à´¸à´‚ അറിയാൻ à´¸àµà´µà´¤àµ‡ ബാഹàµà´¯ ഉപകരണങàµà´™àµ¾ ഉപയോഗികàµà´•àµà´• (വിദഗàµà´¦àµà´§ ഉപയോകàµà´¤à´¾à´•àµà´•àµ¾à´•àµà´•àµ മാതàµà´°à´‚, താങàµà´•à´³àµà´Ÿàµ† à´•à´®àµà´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´±à´¿àµ½ à´ªàµà´°à´¤àµà´¯àµ‡à´• സജàµà´œàµ€à´•à´°à´£à´™àµà´™àµ¾ ആവശàµà´¯à´®à´¾à´£àµ. [http://www.mediawiki.org/wiki/Manual:External_editors കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾.])',
+'tog-externaleditor' => 'à´¸àµà´µà´¤àµ‡ ബാഹàµà´¯ à´Žà´¡à´¿à´±àµà´±àµ¼ ഉപയോഗികàµà´•àµà´• (വിദഗàµà´¦àµà´§ ഉപയോകàµà´¤à´¾à´•àµà´•àµ¾à´•àµà´•àµ മാതàµà´°à´‚, താങàµà´•à´³àµà´Ÿàµ† à´•à´®àµà´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´±à´¿àµ½ à´ªàµà´°à´¤àµà´¯àµ‡à´• സജàµà´œàµ€à´•à´°à´£à´™àµà´™àµ¾ ആവശàµà´¯à´®à´¾à´£àµ. [//www.mediawiki.org/wiki/Manual:External_editors കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾.])',
+'tog-externaldiff' => 'à´µàµà´¯à´¤àµà´¯à´¾à´¸à´‚ അറിയാൻ à´¸àµà´µà´¤àµ‡ ബാഹàµà´¯ ഉപകരണങàµà´™àµ¾ ഉപയോഗികàµà´•àµà´• (വിദഗàµà´¦àµà´§ ഉപയോകàµà´¤à´¾à´•àµà´•àµ¾à´•àµà´•àµ മാതàµà´°à´‚, താങàµà´•à´³àµà´Ÿàµ† à´•à´®àµà´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´±à´¿àµ½ à´ªàµà´°à´¤àµà´¯àµ‡à´• സജàµà´œàµ€à´•à´°à´£à´™àµà´™àµ¾ ആവശàµà´¯à´®à´¾à´£àµ. [//www.mediawiki.org/wiki/Manual:External_editors കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾.])',
'tog-showjumplinks' => '"പോവàµà´•" à´—à´®àµà´¯à´¤ à´•à´£àµà´£à´¿à´•àµ¾ à´ªàµà´°à´¾à´ªàµà´¤à´®à´¾à´•àµà´•àµà´•',
'tog-uselivepreview' => 'തതàµà´¸à´®à´¯ à´ªàµà´°à´¿à´µàµà´¯àµ‚ ഉപയോഗപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´• (ജാവാസàµà´•àµà´°à´¿à´ªàµà´±àµà´±àµ) (പരീകàµà´·à´£à´¾à´Ÿà´¿à´¸àµà´¥à´¾à´¨à´¤àµà´¤à´¿à´²àµà´³àµà´³à´¤àµ)',
'tog-forceeditsummary' => 'തിരàµà´¤àµà´¤à´²àµà´•à´³àµà´Ÿàµ† à´šàµà´°àµà´•àµà´•à´‚ നൽകിയിലàµà´²àµ†à´™àµà´•à´¿àµ½ à´Žà´¨àµà´¨àµ† ഓർമàµà´®à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´•',
@@ -440,14 +443,7 @@ $messages = array(
'listingcontinuesabbrev' => 'à´¤àµà´Ÿàµ¼à´šàµà´š.',
'index-category' => 'വർഗàµà´—ീകരികàµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ താളàµà´•àµ¾',
'noindex-category' => 'വർഗàµà´—ീകരികàµà´•à´ªàµà´ªàµ†à´Ÿà´¾à´¤àµà´¤ താളàµà´•àµ¾',
-
-'mainpagetext' => "'''മീഡിയവികàµà´•à´¿ വിജയകരമായി സജàµà´œàµ€à´•à´°à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.'''",
-'mainpagedocfooter' => 'വികàµà´•à´¿ സോഫàµà´±àµà´±àµâ€Œà´µàµ†à´¯àµ¼ ഉപയോഗികàµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµ† à´•àµà´±à´¿à´šàµà´šàµà´³àµà´³ വിശദാംശങàµà´™àµ¾à´•àµà´•àµ [http://meta.wikimedia.org/wiki/Help:Contents സോഫàµà´±àµà´±àµâ€Œà´µàµ†à´¯àµ¼ സഹായി] കാണàµà´•.
-
-== à´ªàµà´°à´¾à´°à´‚ഭസഹായികൾ ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•]
-* [http://www.mediawiki.org/wiki/Manual:FAQ മീഡിയവികàµà´•à´¿ പതിവàµà´šàµ‹à´¦àµà´¯à´™àµà´™àµ¾]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce മീഡിയവികàµà´•à´¿ à´ªàµà´°à´•à´¾à´¶à´¨ മെയിലിങൠലിസàµà´±àµà´±àµ]',
+'broken-file-category' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´²àµ‡à´•àµà´•àµà´³àµà´³ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¨à´°à´¹à´¿à´¤à´®à´¾à´¯ à´•à´£àµà´£à´¿ ഉൾകàµà´•àµŠà´³àµà´³àµà´¨àµà´¨ താളàµà´•àµ¾',
'about' => 'വിവരണം',
'article' => 'ലേഖന താൾ',
@@ -455,7 +451,7 @@ $messages = array(
'cancel' => 'റദàµà´¦à´¾à´•àµà´•àµà´•',
'moredotdotdot' => 'കൂടàµà´¤àµ½...',
'mypage' => 'à´Žà´¨àµà´±àµ† താൾ',
-'mytalk' => 'à´Žà´¨àµà´±àµ† സംവാദതാൾ',
+'mytalk' => 'à´Žà´¨àµà´±àµ† സംവാദതàµà´¤à´¾àµ¾',
'anontalk' => 'à´ˆ à´.പി.à´¯àµà´Ÿàµ† സം‌വാദം താൾ',
'navigation' => 'ഉളàµà´³à´Ÿà´•àµà´•à´‚',
'and' => '&#32;à´’à´ªàµà´ªà´‚',
@@ -499,10 +495,10 @@ $messages = array(
'history' => 'നാൾവഴി',
'history_short' => 'നാൾവഴി',
'updatedmarker' => 'à´•à´´à´¿à´žàµà´ž സനàµà´¦àµ¼à´¶à´¨à´¤àµà´¤à´¿à´¨àµ ശേഷം മാറàµà´±à´‚ വനàµà´¨à´¤àµ',
-'info_short' => 'വിവരങàµà´™àµ¾',
'printableversion' => 'à´…à´šàµà´šà´Ÿà´¿à´°àµ‚പം',
'permalink' => 'à´¸àµà´¥à´¿à´°à´‚à´•à´£àµà´£à´¿',
'print' => 'à´…à´šàµà´šà´Ÿà´¿à´¯àµà´•àµà´•àµà´•',
+'view' => 'കാണàµà´•',
'edit' => 'തിരàµà´¤àµà´¤àµà´•',
'create' => 'à´ˆ താൾ സൃഷàµà´Ÿà´¿à´•àµà´•àµà´•',
'editthispage' => 'à´ˆ താൾ തിരàµà´¤àµà´¤àµà´•',
@@ -510,6 +506,7 @@ $messages = array(
'delete' => 'മായàµà´•àµà´•àµà´•',
'deletethispage' => 'à´ˆ താൾ നീകàµà´•à´‚ ചെയàµà´¯àµà´•',
'undelete_short' => '{{PLURAL:$1|ഒരൠതിരàµà´¤àµà´¤àµ½|$1 തിരàµà´¤àµà´¤à´²àµà´•àµ¾}} à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•àµà´•',
+'viewdeleted_short' => '{{PLURAL:$1|മായàµà´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ ഒരൠതിരàµà´¤àµà´¤àµ½|മായàµà´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ $1 തിരàµà´¤àµà´¤à´²àµà´•àµ¾}} കാണàµà´•',
'protect' => 'സം‌രകàµà´·à´¿à´•àµà´•àµà´•',
'protect_change' => 'സംരകàµà´·à´£à´®à´¾à´¨à´¤àµà´¤à´¿àµ½ à´µàµà´¯à´¤à´¿à´¯à´¾à´¨à´‚ വരàµà´¤àµà´¤àµà´•',
'protectthispage' => 'à´ˆ താൾ സം‌രകàµà´·à´¿à´•àµà´•àµà´•',
@@ -593,6 +590,8 @@ $1',
'toc' => 'ഉളàµà´³à´Ÿà´•àµà´•à´‚',
'showtoc' => 'à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´•',
'hidetoc' => 'മറയàµà´•àµà´•àµà´•',
+'collapsible-collapse' => 'à´šàµà´°àµà´•àµà´•àµà´•',
+'collapsible-expand' => 'വികസിപàµà´ªà´¿à´•àµà´•àµà´•',
'thisisdeleted' => '$1 കാണàµà´•à´¯àµ‹ à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•àµà´•à´¯àµ‹ ചെയàµà´¯àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµ‹?',
'viewdeleted' => '$1 കാണണോ?',
'restorelink' => '{{PLURAL:$1|നീകàµà´•à´‚ചെയàµà´¤ ഒരൠതിരàµà´¤àµà´¤àµ½|നീകàµà´•à´‚ചെയàµà´¤ $1 തിരàµà´¤àµà´¤à´²àµà´•àµ¾}}',
@@ -606,6 +605,8 @@ $1',
'feed-atom' => 'ആറàµà´±à´‚',
'feed-rss' => 'ആർ.à´Žà´¸àµ.à´Žà´¸àµ.',
'red-link-title' => '$1 (ഇതàµà´µà´°àµ† à´Žà´´àµà´¤à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´Ÿàµà´Ÿà´¿à´²àµà´²)',
+'sort-descending' => 'അവരോഹണമായി à´•àµà´°à´®à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
+'sort-ascending' => 'ആരോഹണമായി à´•àµà´°à´®à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'ലേഖനം',
@@ -687,12 +688,13 @@ $1',
'protectedpagetext' => 'à´ˆ താൾ തിരàµà´¤àµà´¤àµà´µà´¾àµ» സാധികàµà´•à´¾à´¤àµà´¤ വിധം സംരകàµà´·à´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´Ÿàµà´Ÿàµà´³àµà´³à´¤à´¾à´£àµ.',
'viewsourcetext' => 'താങàµà´•àµ¾à´•àµà´•àµ à´ˆ താളിനàµà´±àµ† മൂലരൂപം കാണാനàµà´‚ പകർതàµà´¤à´¾à´¨àµà´‚ സാധികàµà´•àµà´‚:',
'protectedinterface' => 'à´ˆ താൾ സോഫàµà´±àµà´±àµâ€Œà´µàµ†à´¯à´±à´¿à´¨àµà´±àµ† സമàµà´ªàµ¼à´•àµà´•à´®àµà´– à´Žà´´àµà´¤àµà´¤àµà´•àµ¾ നൽകàµà´¨àµà´¨àµ, à´…à´¤àµà´•àµŠà´£àµà´Ÿàµ à´¦àµà´°àµà´ªà´¯àµ‹à´—à´‚ തടയാൻ ബനàµà´§à´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
-'editinginterface' => "'''à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ:''' സോഫàµà´±àµà´±àµâ€Œà´µàµ†à´¯à´±à´¿àµ½ സമàµà´ªàµ¼à´•àµà´•à´®àµà´–à´‚ നിലനിർതàµà´¤àµà´¨àµà´¨ താളാണൠതാങàµà´•àµ¾ തിരàµà´¤àµà´¤àµà´µà´¾àµ» പോകàµà´¨àµà´¨à´¤àµ. à´ˆ താളിൽ താങàµà´•àµ¾ വരàµà´¤àµà´¤àµà´¨àµà´¨ മാറàµà´±à´™àµà´™àµ¾ ഉപയോകàµà´¤à´¾à´µàµ വികàµà´•à´¿ കാണàµà´¨àµà´¨ വിധതàµà´¤àµ† മാറàµà´±à´¿à´®à´±à´¿à´šàµà´šàµ‡à´•àµà´•à´¾à´‚. മീഡിയവികàµà´•à´¿ സനàµà´¦àµ‡à´¶à´™àµà´™à´³àµà´Ÿàµ† പരിഭാഷകൾകàµà´•àµ മീഡിയവികàµà´•à´¿ സനàµà´¦àµ‡à´¶à´™àµà´™à´³àµà´Ÿàµ† à´ªàµà´°à´¾à´¦àµ‡à´¶à´¿à´•à´µà´¤àµà´•à´°à´£ സംരംഭം ആയ [http://translatewiki.net/wiki/Main_Page?setlang=ml ബീറàµà´±à´¾à´µà´¿à´•àµà´•à´¿] ഉപയോഗികàµà´•àµà´µà´¾àµ» താലàµà´ªà´°àµà´¯à´ªàµà´ªàµ†à´Ÿàµà´¨àµà´¨àµ.",
+'editinginterface' => "'''à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ:''' സോഫàµà´±àµà´±àµâ€Œà´µàµ†à´¯à´±à´¿àµ½ സമàµà´ªàµ¼à´•àµà´•à´®àµà´–à´‚ നിലനിർതàµà´¤àµà´¨àµà´¨ താളാണൠതാങàµà´•àµ¾ തിരàµà´¤àµà´¤àµà´µà´¾àµ» പോകàµà´¨àµà´¨à´¤àµ. à´ˆ താളിൽ താങàµà´•àµ¾ വരàµà´¤àµà´¤àµà´¨àµà´¨ മാറàµà´±à´™àµà´™àµ¾ ഉപയോകàµà´¤à´¾à´µàµ വികàµà´•à´¿ കാണàµà´¨àµà´¨ വിധതàµà´¤àµ† മാറàµà´±à´¿à´®à´±à´¿à´šàµà´šàµ‡à´•àµà´•à´¾à´‚. മീഡിയവികàµà´•à´¿ സനàµà´¦àµ‡à´¶à´™àµà´™à´³àµà´Ÿàµ† പരിഭാഷകൾകàµà´•àµ മീഡിയവികàµà´•à´¿ സനàµà´¦àµ‡à´¶à´™àµà´™à´³àµà´Ÿàµ† à´ªàµà´°à´¾à´¦àµ‡à´¶à´¿à´•à´µà´¤àµà´•à´°à´£ സംരംഭം ആയ [//translatewiki.net/wiki/Main_Page?setlang=ml ബീറàµà´±à´¾à´µà´¿à´•àµà´•à´¿] ഉപയോഗികàµà´•àµà´µà´¾àµ» താലàµà´ªà´°àµà´¯à´ªàµà´ªàµ†à´Ÿàµà´¨àµà´¨àµ.",
'sqlhidden' => '(SQL query മറചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ)',
'cascadeprotected' => 'നിർà´à´°à´¿à´¤ (cascading) സൗകരàµà´¯à´‚ ഉപയോഗിചàµà´šàµ തിരàµà´¤àµà´¤àµ½ നടതàµà´¤àµà´¨àµà´¨à´¤à´¿à´¨àµ സം‌രകàµà´·à´£à´‚ à´àµ¼à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´Ÿàµà´Ÿàµà´³àµà´³ {{PLURAL:$1|താഴെ കൊടàµà´¤àµà´¤à´¿à´Ÿàµà´Ÿàµà´³àµà´³ താളിനàµà´±àµ†|താഴെ കൊടàµà´¤àµà´¤à´¿à´Ÿàµà´Ÿàµà´³àµà´³ താളàµà´•à´³àµà´Ÿàµ†}} ഭാഗമാണàµâ€Œ à´ˆ താൾ. അതിനാൽ à´ˆ താൾ തിരàµà´¤àµà´¤àµà´µà´¾àµ» സാധികàµà´•à´¿à´²àµà´²:
$2',
'namespaceprotected' => "'''$1''' നാമമേഖലയിലàµà´³àµà´³ താളàµà´•àµ¾ തിരàµà´¤àµà´¤à´¾àµ» താങàµà´•àµ¾à´•àµà´•àµ à´…à´¨àµà´µà´¾à´¦à´®à´¿à´²àµà´².",
-'customcssjsprotected' => 'ഇതൠമറàµà´±àµŠà´°àµ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† à´¸àµà´µà´•à´¾à´°àµà´¯ സജàµà´œàµ€à´•à´°à´£à´™àµà´™àµ¾ ഉൾകàµà´•àµŠà´³àµà´³àµà´¨àµà´¨ താളാണàµâ€Œ, അതിനാൽ താങàµà´•àµ¾à´•àµà´•àµ à´ˆ താൾ തിരàµà´¤àµà´¤à´¾àµ» à´…à´¨àµà´µà´¾à´¦à´®à´¿à´²àµà´².',
+'customcssprotected' => 'à´ˆ സി.à´Žà´¸àµ.à´Žà´¸àµ. താളിൽ മറàµà´±àµŠà´°àµ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† à´¸àµà´µà´•à´¾à´°àµà´¯à´¸à´œàµà´œàµ€à´•à´°à´£à´™àµà´™àµ¾ ഉൾകàµà´•àµŠà´³àµà´³àµà´¨àµà´¨àµ, അതിനാൽ താങàµà´•àµ¾à´•àµà´•àµ à´ˆ താൾ തിരàµà´¤àµà´¤à´¾àµ» à´…à´¨àµà´µà´¾à´¦à´®à´¿à´²àµà´².',
+'customjsprotected' => 'à´ˆ ജാവാസàµà´•àµà´°à´¿à´ªàµà´±àµà´±àµ താളിൽ മറàµà´±àµŠà´°àµ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† à´¸àµà´µà´•à´¾à´°àµà´¯à´¸à´œàµà´œàµ€à´•à´°à´£à´™àµà´™àµ¾ ഉൾകàµà´•àµŠà´³àµà´³àµà´¨àµà´¨àµ, അതിനാൽ താങàµà´•àµ¾à´•àµà´•àµ à´ˆ താൾ തിരàµà´¤àµà´¤à´¾àµ» à´…à´¨àµà´µà´¾à´¦à´®à´¿à´²àµà´².',
'ns-specialprotected' => 'à´ªàµà´°à´¤àµà´¯àµ‡à´•à´‚ à´Žà´¨àµà´¨ നാമമേഖലയിൽ വരàµà´¨àµà´¨ താളàµà´•àµ¾ തിരàµà´¤àµà´¤à´¾à´¨à´¾à´µàµà´¨àµà´¨à´µà´¯à´²àµà´².',
'titleprotected' => "[[User:$1|$1]] à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µàµ à´ˆ താൾ ഉണàµà´Ÿà´¾à´•àµà´•àµà´¨àµà´¨à´¤àµ നിരോധിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.
''$2'' à´Žà´¨àµà´¨à´¤à´¾à´£àµ അതിനൠകാണിചàµà´šà´¿à´Ÿàµà´Ÿàµà´³àµà´³ കാരണം.",
@@ -731,6 +733,7 @@ $2',
'createaccount' => 'à´…à´‚à´—à´¤àµà´µà´®àµ†à´Ÿàµà´•àµà´•àµà´•',
'gotaccount' => "താങàµà´•àµ¾à´•àµà´•àµ à´…à´‚à´—à´¤àµà´µà´®àµà´£àµà´Ÿàµ‹? '''$1'''.",
'gotaccountlink' => 'à´ªàµà´°à´µàµ‡à´¶à´¿à´•àµà´•àµà´•',
+'userlogin-resetlink' => 'താങàµà´•à´³àµà´Ÿàµ† ലോഗിൻ വിവരങàµà´™àµ¾ മറനàµà´¨àµ പോയോ?',
'createaccountmail' => 'ഇ-മെയിൽ വഴി',
'createaccountreason' => 'കാരണം:',
'badretype' => 'താങàµà´•àµ¾ ടൈപàµà´ªàµ ചെയàµà´¤ രഹസàµà´¯à´µà´¾à´•àµà´•àµà´•àµ¾ തമàµà´®à´¿àµ½ യോജികàµà´•àµà´¨àµà´¨à´¿à´²àµà´².',
@@ -739,7 +742,9 @@ $2',
'loginerror' => 'à´ªàµà´°à´µàµ‡à´¶à´¨à´‚ സാധിചàµà´šà´¿à´²àµà´²',
'createaccounterror' => 'à´…à´‚à´—à´¤àµà´µà´®àµ†à´Ÿàµà´•àµà´•à´¾àµ» à´•à´´à´¿à´žàµà´žà´¿à´²àµà´²:$1',
'nocookiesnew' => 'ഉപയോകàµà´¤àµƒà´…à´‚à´—à´¤àµà´µà´‚ ഉണàµà´Ÿà´¾à´•àµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. പകàµà´·àµ† താങàµà´•àµ¾ ലോഗിൻ ചെയàµà´¤à´¿à´Ÿàµà´Ÿà´¿à´²àµà´². {{SITENAME}} സംരംഭതàµà´¤à´¿àµ½ ലോഗിൻ ചെയàµà´¯àµà´µà´¾àµ» à´•àµà´•àµà´•à´¿à´•àµ¾ സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•à´£à´‚. താങàµà´•à´³àµà´Ÿàµ† à´•à´®àµà´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´±à´¿àµ½ നിലവിൽ à´•àµà´•àµà´•à´¿à´•àµ¾ ഡിസേബിൾ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. അതൠഎനേബിൾ ചെയàµà´¤àµ താങàµà´•à´³àµà´Ÿàµ† ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´µàµà´‚ രഹസàµà´¯à´µà´¾à´•àµà´•àµà´‚ ഉപയോഗിചàµà´šàµ ലോഗിൻ ചെയàµà´¯àµ‚.',
-'nocookieslogin' => '{{SITENAME}} സംരഭതàµà´¤à´¿àµ½ ലോഗിൻ ചെയàµà´¯àµà´µà´¾àµ» à´•àµà´•àµà´•à´¿à´•àµ¾ സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•à´£à´‚. പകàµà´·àµ† താങàµà´•àµ¾ à´•àµà´•àµà´•à´¿à´•àµ¾ സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´². à´•àµà´•àµà´•à´¿à´•àµ¾ സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯à´¤à´¿à´¨àµ ശേഷം വീണàµà´Ÿàµà´‚ ലോഗിൻ ചെയàµà´¯à´¾àµ» à´¶àµà´°à´®à´¿à´•àµà´•àµ‚.',
+'nocookieslogin' => '{{SITENAME}} സംരംഭതàµà´¤à´¿àµ½ ലോഗിൻ ചെയàµà´¯àµà´µà´¾àµ» à´•àµà´•àµà´•à´¿à´•àµ¾ സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•à´£à´‚. പകàµà´·àµ† താങàµà´•àµ¾ à´•àµà´•àµà´•à´¿à´•àµ¾ സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´². à´•àµà´•àµà´•à´¿à´•àµ¾ സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯à´¤à´¿à´¨àµ ശേഷം വീണàµà´Ÿàµà´‚ ലോഗിൻ ചെയàµà´¯à´¾àµ» à´¶àµà´°à´®à´¿à´•àµà´•àµ‚.',
+'nocookiesfornew' => 'à´žà´™àµà´™àµ¾à´•àµà´•àµ ഇതിനàµà´±àµ† à´¸àµà´°àµ‹à´¤à´¸àµ à´•à´£àµà´Ÿàµ†à´¤àµà´¤à´¾à´¨à´¾à´•à´¾à´¤à´¿à´°àµà´¨àµà´¨à´¤à´¿à´¨à´¾àµ½ ഉപയോകàµà´¤àµƒ à´…à´‚à´—à´¤àµà´µà´‚ സൃഷàµà´Ÿà´¿à´šàµà´šà´¿à´Ÿàµà´Ÿà´¿à´²àµà´².
+à´•àµà´•àµà´•à´¿à´•àµ¾ സജàµà´œà´®à´¾à´•àµà´•à´¿à´¯ ശേഷം, താൾ വീണàµà´Ÿàµà´®àµ†à´Ÿàµà´¤àµà´¤àµ, വീണàµà´Ÿàµà´‚ à´¶àµà´°à´®à´¿à´•àµà´•àµà´•.',
'noname' => 'താങàµà´•àµ¾ സാധàµà´µà´¾à´¯ ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ സൂചിപàµà´ªà´¿à´šàµà´šà´¿à´Ÿàµà´Ÿà´¿à´²àµà´².',
'loginsuccesstitle' => 'à´¸àµà´µà´¾à´—തം!
താങàµà´•àµ¾ വിജയകരമായി à´ªàµà´°à´µàµ‡à´¶à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
@@ -747,7 +752,7 @@ $2',
'nosuchuser' => 'ഇതàµà´µà´°àµ† "$1" à´Žà´¨àµà´¨ പേരിൽ ആരàµà´‚ à´…à´‚à´—à´¤àµà´µà´®àµ†à´Ÿàµà´¤àµà´¤à´¿à´Ÿàµà´Ÿà´¿à´²àµà´².
ദയവായി à´…à´•àµà´·à´°à´ªàµà´ªà´¿à´¶à´•àµà´•àµ¾ പരിശോധികàµà´•àµà´•, à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½
à´ªàµà´¤à´¿à´¯ [[Special:UserLogin/signup|à´…à´‚à´—à´¤àµà´µà´®àµ†à´Ÿàµà´•àµà´•àµà´•]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" à´Žà´¨àµà´¨ പേരിൽ ഒരൠഉപയോകàµà´¤à´¾à´µàµ ഇലàµà´². à´…à´•àµà´·à´°à´™àµà´™àµ¾ à´’à´¨àµà´¨àµ കൂടി പരിശോധികàµà´•àµà´•.',
+'nosuchusershort' => '"$1" à´Žà´¨àµà´¨ പേരിൽ ഒരൠഉപയോകàµà´¤à´¾à´µàµ ഇലàµà´². à´…à´•àµà´·à´°à´™àµà´™àµ¾ à´’à´¨àµà´¨àµ കൂടി പരിശോധികàµà´•àµà´•.',
'nouserspecified' => 'ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ നിർബനàµà´§à´®à´¾à´¯àµà´‚ ചേർകàµà´•à´£à´‚.',
'login-userblocked' => 'à´ˆ ഉപയോകàµà´¤à´¾à´µàµ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. à´ªàµà´°à´µàµ‡à´¶à´¨à´‚ à´…à´¨àµà´µà´¦à´¿à´•àµà´•àµà´¨àµà´¨à´¿à´²àµà´².',
'wrongpassword' => 'താങàµà´•àµ¾ നൽകിയ രഹസàµà´¯à´µà´¾à´•àµà´•àµ തെറàµà´±à´¾à´£àµ, വീണàµà´Ÿàµà´‚ à´¶àµà´°à´®à´¿à´•àµà´•àµà´•.',
@@ -784,13 +789,14 @@ $2',
'usernamehasherror' => 'ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´¤àµà´¤à´¿àµ½ ഹാഷൠലിപികൾ ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´°àµà´¤àµ',
'login-throttled' => 'താങàµà´•àµ¾ നിരവധി à´ªàµà´°à´¾à´µà´¶àµà´¯à´‚ ലോഗിൻ ചെയàµà´¯à´¾àµ» à´¶àµà´°à´®à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.
à´ªàµà´¤à´¿à´¯à´¤à´¾à´¯à´¿ à´¶àµà´°à´®à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµ à´®àµà´®àµà´ªàµ ദയവായി കാതàµà´¤à´¿à´°à´¿à´•àµà´•àµà´•.',
+'login-abort-generic' => 'താങàµà´•à´³àµà´Ÿàµ† à´ªàµà´°à´µàµ‡à´¶à´¿à´•àµà´•àµ½ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ - റദàµà´¦à´¾à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
'loginlanguagelabel' => 'ഭാഷ: $1',
'suspicious-userlogout' => 'ലോഗൗടàµà´Ÿàµ ചെയàµà´¯à´¾à´¨àµà´³àµà´³ താങàµà´•à´³àµà´Ÿàµ† à´…à´­àµà´¯àµ¼à´¤àµà´¥à´¨ നിരസിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ, കാരണം അതൠതകർനàµà´¨ à´¬àµà´°àµ—സറിൽ നിനàµà´¨àµ‹ കാഷിങൠപàµà´°àµ‹à´•àµà´¸à´¿à´¯à´¿àµ½ നിനàµà´¨àµ‹ ഉണàµà´Ÿà´¾à´¯à´¤àµà´ªàµ‹à´²àµ† à´…à´¨àµà´­à´µà´ªàµà´ªàµ†à´Ÿàµà´¨àµà´¨àµ.',
# E-mail sending
'php-mail-error-unknown' => 'പി.à´Žà´šàµà´šàµ.പി.à´¯àµà´Ÿàµ† main() à´«à´™àµà´·à´¨à´¿àµ½ അപരിചിതമായ പിഴവàµ',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'രഹസàµà´¯à´µà´¾à´•àµà´•àµ മാറàµà´±àµà´•',
'resetpass_announce' => 'താങàµà´•àµ¾à´•àµà´•àµ ഇമെയിൽ ആയി à´•à´¿à´Ÿàµà´Ÿà´¿à´¯ താൽകàµà´•à´¾à´²à´¿à´• കോഡൠഉപയോഗിചàµà´šà´¾à´£àµâ€Œ ഇപàµà´ªàµ‹àµ¾ ലോഗിൻ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨à´¤àµàµâ€Œ. ലോഗിൻ à´ªàµà´°à´•àµà´°à´¿à´¯ പൂർതàµà´¤à´¿à´¯à´¾à´•àµà´µà´¾àµ» à´ªàµà´¤à´¿à´¯àµŠà´°àµ രഹസàµà´¯à´µà´¾à´•àµà´•àµ ഇവിടെ കൊടàµà´•àµà´•àµà´•:',
'resetpass_header' => 'à´…à´‚à´—à´¤àµà´µà´¤àµà´¤à´¿à´¨àµà´±àµ† രഹസàµà´¯à´µà´¾à´•àµà´•àµ മാറàµà´±àµà´•',
@@ -807,6 +813,34 @@ $2',
നിലവിൽ താങàµà´•àµ¾ വിജയകരമായി രഹസàµà´¯à´µà´¾à´•àµà´•àµ മാറàµà´±à´¿à´¯à´¿à´Ÿàµà´Ÿàµà´£àµà´Ÿàµ à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ ഒരൠപàµà´¤à´¿à´¯ താതàµà´•à´¾à´²à´¿à´• രഹസàµà´¯à´µà´¾à´•àµà´•à´¿à´¨àµ ആവശàµà´¯à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
'resetpass-temp-password' => 'താതàµà´•à´¾à´²à´¿à´• രഹസàµà´¯à´µà´¾à´•àµà´•àµ:',
+# Special:PasswordReset
+'passwordreset' => 'രഹസàµà´¯à´µà´¾à´•àµà´•àµ à´ªàµà´¨à´ƒà´•àµà´°à´®àµ€à´•à´°à´¿à´•àµà´•àµà´•',
+'passwordreset-text' => 'താങàµà´•à´³àµà´Ÿàµ† à´…à´‚à´—à´¤àµà´µà´µà´¿à´µà´°à´™àµà´™àµ¾ സംബനàµà´§à´¿à´šàµà´š ഓർമàµà´®à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµ½ ഇമെയിൽ ലഭികàµà´•à´¾à´¨à´¾à´¯à´¿ à´ˆ ഫോം പൂരിപàµà´ªà´¿à´•àµà´•àµà´•.',
+'passwordreset-legend' => 'രഹസàµà´¯à´µà´¾à´•àµà´•àµ à´ªàµà´¨à´ƒà´•àµà´°à´®àµ€à´•à´°à´¿à´•àµà´•àµà´•',
+'passwordreset-disabled' => 'à´ˆ വികàµà´•à´¿à´¯à´¿àµ½ രഹസàµà´¯à´µà´¾à´•àµà´•àµ à´ªàµà´¨à´ƒà´•àµà´°à´®àµ€à´•à´°à´¿à´•àµà´•à´²àµà´•àµ¾ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´°à´¹à´¿à´¤à´®à´¾à´•àµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´•à´¯à´¾à´£àµ.',
+'passwordreset-pretext' => '{{PLURAL:$1||താഴെ ഒരൠവിവരശകലം നൽകàµà´•}}',
+'passwordreset-username' => 'ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚:',
+'passwordreset-domain' => 'ഡൊമൈൻ:',
+'passwordreset-email' => 'ഇ-മെയിൽ വിലാസം:',
+'passwordreset-emailtitle' => '{{SITENAME}} സംരംഭതàµà´¤à´¿à´²àµ† à´…à´‚à´—à´¤àµà´µà´µà´¿à´µà´°à´™àµà´™àµ¾',
+'passwordreset-emailtext-ip' => 'ആരോ ഒരാൾ (മികàµà´•à´µà´¾à´±àµà´‚ താങàµà´•à´³à´¾à´¯à´¿à´°à´¿à´•àµà´•àµà´‚, $1 à´Žà´¨àµà´¨ à´.പി. വിലാസതàµà´¤à´¿àµ½ നിനàµà´¨àµà´‚) {{SITENAME}} സംരംഭതàµà´¤à´¿à´²àµ† ($4) à´…à´‚à´—à´¤àµà´µà´µà´¿à´µà´°à´™àµà´™à´³àµ†à´•àµà´•àµà´±à´¿à´šàµà´šàµà´³àµà´³ ഓർമàµà´®à´•àµà´•àµà´±à´¿à´ªàµà´ªàµ à´…à´­àµà´¯àµ¼à´¤àµà´¥à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. à´ˆ ഇമെയിൽ വിലാസവàµà´®à´¾à´¯à´¿ ബനàµà´§à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ {{PLURAL:$3|à´…à´‚à´—à´¤àµà´µà´‚|à´…à´‚à´—à´¤àµà´µà´™àµà´™àµ¾}} താഴെകàµà´•àµŠà´Ÿàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ:
+
+$2
+
+
+à´ˆ {{PLURAL:$3|താതàµà´•à´¾à´²à´¿à´• രഹസàµà´¯à´µà´¾à´•àµà´•àµ|താതàµà´•à´¾à´²à´¿à´• രഹസàµà´¯à´µà´¾à´•àµà´•àµà´•àµ¾}} {{PLURAL:$5|ഒരൠദിവസം|$5 ദിവസങàµà´™àµ¾}} കൊണàµà´Ÿàµ കാലഹരണപàµà´ªàµ†à´Ÿàµà´Ÿàµ പോകàµà´¨àµà´¨à´µà´¯à´¾à´£àµ.
+താങàµà´•àµ¾ ഇപàµà´ªàµ‹àµ¾ തനàµà´¨àµ† à´ªàµà´°à´µàµ‡à´¶à´¿à´šàµà´šàµ രഹസàµà´¯à´µà´¾à´•àµà´•àµ മാറàµà´±àµà´¨àµà´¨à´¤à´¾à´£àµ ഉചിതം. à´ˆ à´…à´­àµà´¯àµ¼à´¤àµà´¥à´¨ മറàµà´±à´¾à´°àµ‹ ആണൠനടതàµà´¤à´¿à´¯à´¤àµ à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½, യഥാർതàµà´¥ രഹസàµà´¯à´µà´¾à´•àµà´•àµ താങàµà´•àµ¾ ഓർമàµà´®à´¿à´•àµà´•àµà´•à´¯àµà´‚ അതൠമാറàµà´±à´¾àµ» ആഗàµà´°à´¹à´¿à´•àµà´•à´¾à´¤à´¿à´°à´¿à´•àµà´•àµà´•à´¯àµà´‚ ആണെങàµà´•à´¿àµ½, à´ˆ സനàµà´¦àµ‡à´¶à´‚ അവഗണിചàµà´šàµ താങàµà´•à´³àµà´Ÿàµ† പഴയ രഹസàµà´¯à´µà´¾à´•àµà´•àµ à´¤àµà´Ÿàµ¼à´¨àµà´¨àµà´‚ ഉപയോഗികàµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµ.',
+'passwordreset-emailtext-user' => '{{SITENAME}} സംരംഭതàµà´¤à´¿à´²àµ† ഉപയോകàµà´¤à´¾à´µà´¾à´¯ $1 {{SITENAME}} സംരംഭതàµà´¤à´¿à´²àµ† ($4) à´…à´‚à´—à´¤àµà´µà´µà´¿à´µà´°à´™àµà´™à´³àµ†à´•àµà´•àµà´±à´¿à´šàµà´šàµà´³àµà´³ ഓർമàµà´®à´•àµà´•àµà´±à´¿à´ªàµà´ªàµ à´…à´­àµà´¯àµ¼à´¤àµà´¥à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. à´ˆ à´‡-മെയിൽ വിലാസവàµà´®à´¾à´¯à´¿ ബനàµà´§à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ {{PLURAL:$3|à´…à´‚à´—à´¤àµà´µà´‚|à´…à´‚à´—à´¤àµà´µà´™àµà´™àµ¾}} താഴെകàµà´•àµŠà´Ÿàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ:
+
+$2
+
+
+à´ˆ {{PLURAL:$3|താതàµà´•à´¾à´²à´¿à´• രഹസàµà´¯à´µà´¾à´•àµà´•àµ|താതàµà´•à´¾à´²à´¿à´• രഹസàµà´¯à´µà´¾à´•àµà´•àµà´•àµ¾}} {{PLURAL:$5|ഒരൠദിവസം|$5 ദിവസങàµà´™àµ¾}} കൊണàµà´Ÿàµ കാലഹരണപàµà´ªàµ†à´Ÿàµà´Ÿàµ പോകàµà´¨àµà´¨à´µà´¯à´¾à´£àµ.
+താങàµà´•àµ¾ ഇപàµà´ªàµ‹àµ¾ തനàµà´¨àµ† à´ªàµà´°à´µàµ‡à´¶à´¿à´šàµà´šàµ രഹസàµà´¯à´µà´¾à´•àµà´•àµ മാറàµà´±àµà´¨àµà´¨à´¤à´¾à´£àµ ഉചിതം. à´ˆ à´…à´­àµà´¯àµ¼à´¤àµà´¥à´¨ മറàµà´±à´¾à´°àµ‹ ആണൠനടതàµà´¤à´¿à´¯à´¤àµ à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½, യഥാർതàµà´¥ രഹസàµà´¯à´µà´¾à´•àµà´•àµ താങàµà´•àµ¾ ഓർമàµà´®à´¿à´•àµà´•àµà´•à´¯àµà´‚ അതൠമാറàµà´±à´¾àµ» ആഗàµà´°à´¹à´¿à´•àµà´•à´¾à´¤à´¿à´°à´¿à´•àµà´•àµà´•à´¯àµà´‚ ആണെങàµà´•à´¿àµ½, à´ˆ സനàµà´¦àµ‡à´¶à´‚ അവഗണിചàµà´šàµ താങàµà´•à´³àµà´Ÿàµ† പഴയ രഹസàµà´¯à´µà´¾à´•àµà´•àµ à´¤àµà´Ÿàµ¼à´¨àµà´¨àµà´‚ ഉപയോഗികàµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµ.',
+'passwordreset-emailelement' => 'ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚: $1
+താതàµà´•à´¾à´²à´¿à´• രഹസàµà´¯à´µà´¾à´•àµà´•àµ: $2',
+'passwordreset-emailsent' => 'ഓർമàµà´®à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµ½ ഇമെയിൽ അയചàµà´šà´¿à´Ÿàµà´Ÿàµà´£àµà´Ÿàµ.',
+
# Edit page toolbar
'bold_sample' => 'à´•à´Ÿàµà´ªàµà´ªà´¿à´šàµà´š à´Žà´´àµà´¤àµà´¤àµ',
'bold_tip' => 'à´•à´Ÿàµà´ªàµà´ªà´¿à´šàµà´šàµ†à´´àµà´¤àµà´µà´¾àµ»',
@@ -818,8 +852,6 @@ $2',
'extlink_tip' => 'à´ªàµà´±à´¤àµà´¤àµ‡à´•àµà´•àµà´³àµà´³ à´•à´£àµà´£à´¿ (http:// à´Žà´¨àµà´¨ ഉപസർഗàµà´—à´‚ ചേർകàµà´•à´¾àµ» ഓർമàµà´®à´¿à´•àµà´•àµà´•)',
'headline_sample' => 'തലകàµà´•àµ†à´Ÿàµà´Ÿà´¿à´¨àµà´³àµà´³ വാചകം ഇവിടെ ചേർകàµà´•àµà´•',
'headline_tip' => 'à´°à´£àµà´Ÿà´¾à´‚ഘടàµà´Ÿ തലകàµà´•àµ†à´Ÿàµà´Ÿàµ',
-'math_sample' => 'ഇവിടെ സൂതàµà´°à´µà´¾à´•àµà´¯à´‚ ചേർകàµà´•àµà´•',
-'math_tip' => 'ഗണിതസൂതàµà´°à´µà´¾à´•àµà´¯à´‚ (LaTeX)',
'nowiki_sample' => 'വികàµà´•à´¿à´«àµ‹àµ¼à´®à´¾à´±àµà´±à´¿à´™àµà´™àµ ഉപയോഗികàµà´•àµ‡à´£àµà´Ÿà´¾à´¤àµà´¤ à´Žà´´àµà´¤àµà´¤àµ ഇവിടെ ചേർകàµà´•àµà´•',
'nowiki_tip' => 'വികàµà´•à´¿à´°àµ€à´¤à´¿ അവഗണികàµà´•àµà´•',
'image_tip' => 'à´šà´¿à´¤àµà´°à´‚ ചേർകàµà´•àµà´µà´¾àµ»',
@@ -899,7 +931,7 @@ $1 ആണൠഈ തടയൽ നടതàµà´¤à´¿à´¯à´¤àµ. ''$2'' à´Žà´¨àµà´¨à´
'noarticletext-nopermission' => 'ഇപàµà´ªàµ‹àµ¾ à´ˆ താളിൽ à´Žà´´àµà´¤àµà´¤àµà´•à´³àµŠà´¨àµà´¨àµà´‚ ഇലàµà´².
താങàµà´•àµ¾à´•àµà´•àµ മറàµà´±àµ താളàµà´•à´³à´¿àµ½ [[Special:Search/{{PAGENAME}}|à´ˆ താളിനàµà´±àµ† തലകàµà´•àµ†à´Ÿàµà´Ÿà´¿à´¨à´¾à´¯à´¿ തിരയാവàµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ]],
à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ബനàµà´§à´ªàµà´ªàµ†à´Ÿàµà´Ÿ രേഖകൾ പരിശോധികàµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ]</span>.',
-'userpage-userdoesnotexist' => '"$1" à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µàµ à´…à´‚à´—à´¤àµà´µà´®àµ†à´Ÿàµà´¤àµà´¤à´¿à´Ÿàµà´Ÿà´¿à´²àµà´². à´ˆ താൾ സൃഷàµà´Ÿà´¿à´•àµà´•à´£à´®àµ‹ à´Žà´¨àµà´¨à´¤àµ പരിശോധികàµà´•àµà´•.',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µàµ à´…à´‚à´—à´¤àµà´µà´®àµ†à´Ÿàµà´¤àµà´¤à´¿à´Ÿàµà´Ÿà´¿à´²àµà´². à´ˆ താൾ സൃഷàµà´Ÿà´¿à´•àµà´•à´£à´®àµ‹ à´Žà´¨àµà´¨à´¤àµ പരിശോധികàµà´•àµà´•.',
'userpage-userdoesnotexist-view' => '"$1" à´Žà´¨àµà´¨ അം‌ഗതàµà´µà´‚ നിലവിലിലàµà´².',
'blocked-notice-logextract' => 'à´ˆ ഉപയോകàµà´¤à´¾à´µàµ ഇപàµà´ªàµ‹àµ¾ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´•à´¯à´¾à´£àµ.
തടയൽ രേഖയിലെ à´ªàµà´¤à´¿à´¯ ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµ½ അവലംബമായി താഴെ നൽകിയിരികàµà´•àµà´¨àµà´¨àµ:',
@@ -934,6 +966,7 @@ $1 ആണൠഈ തടയൽ നടതàµà´¤à´¿à´¯à´¤àµ. ''$2'' à´Žà´¨àµà´¨à´
'token_suffix_mismatch' => "'''താങàµà´•à´³àµà´Ÿàµ† à´•àµà´²àµˆà´¨àµà´±àµ തിരàµà´¤àµà´¤àµ½ à´•àµà´±à´¿à´¯à´¿à´²àµ† à´šà´¿à´¹àµà´¨à´¨à´™àµà´™àµ¾ നശിപàµà´ªà´¿à´šàµà´šà´¤à´¿à´¨à´¾àµ½ താങàµà´•à´³àµà´Ÿàµ† തിരàµà´¤àµà´¤àµ½ à´¸àµà´µàµ€à´•à´°à´¿à´•àµà´•àµà´¨àµà´¨à´¿à´²àµà´².'''
താളിലെ à´Žà´´àµà´¤àµà´¤à´¿à´¨àµà´±àµ† നാശം ഒഴിവാകàµà´•à´¾à´¨à´¾à´£àµ താങàµà´•à´³àµà´Ÿàµ† തിരàµà´¤àµà´¤àµ½ à´¸àµà´µàµ€à´•à´°à´¿à´•àµà´•à´¾à´¤àµà´¤à´¤àµ.
à´—àµà´£à´¨à´¿à´²à´µà´¾à´°à´®à´¿à´²àµà´²à´¾à´¤àµà´¤ വെബൠഅധിഷàµà´ à´¿à´¤ à´…à´œàµà´žà´¾à´¤ à´ªàµà´°àµ‹à´•àµà´¸à´¿ സേവനങàµà´™àµ¾ ഉപയോഗിചàµà´šà´¾àµ½ ചിലപàµà´ªàµ‹àµ¾ ഇതàµà´¤à´°à´¤àµà´¤à´¿à´²àµà´£àµà´Ÿà´¾à´•à´¾à´±àµà´£àµà´Ÿàµ.",
+'edit_form_incomplete' => "'''തിരàµà´¤àµà´¤àµ½ ഫോമിനàµà´±àµ† à´šà´¿à´² ഭാഗങàµà´™àµ¾ സെർവറിൽ à´Žà´¤àµà´¤à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²; താങàµà´•àµ¾ വരàµà´¤àµà´¤à´¿à´¯ മാറàµà´±à´™àµà´™àµ¾à´•àµà´•àµ à´•àµà´·à´¤à´®àµ‡à´±àµà´±à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²àµ†à´¨àµà´¨àµ ഉറപàµà´ªàµà´µà´°àµà´¤àµà´¤à´¿ വീണàµà´Ÿàµà´‚ à´¶àµà´°à´®à´¿à´•àµà´•àµà´•.'''",
'editing' => 'തിരàµà´¤àµà´¤àµà´¨àµà´¨ താൾ: $1',
'editingsection' => 'തിരàµà´¤àµà´¤àµà´¨àµà´¨ താൾ:- $1 (ഉപവിഭാഗം)',
'editingcomment' => 'തിരàµà´¤àµà´¤àµà´¨àµà´¨ താൾ:- $1 (à´ªàµà´¤à´¿à´¯ ഉപവിഭാഗം)',
@@ -1164,8 +1197,8 @@ $1",
# Suppression log
'suppressionlog' => 'à´’à´¤àµà´•àµà´•àµ½ രേഖ',
-'suppressionlogtext' => 'കാരàµà´¯à´¨à´¿àµ¼à´µà´¾à´¹à´•à´°à´¿àµ½ നിനàµà´¨àµà´‚ മറയàµà´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´Ÿàµà´Ÿàµà´³àµà´³à´¤àµà´‚ മായàµà´•àµà´•àµà´•à´¯àµà´‚ തടയàµà´•à´¯àµà´‚ ചെയàµà´¤à´¤àµà´®à´¾à´¯ ഉളàµà´³à´Ÿà´•àµà´•à´™àµà´™à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´• നൽകിയിരികàµà´•àµà´¨àµà´¨àµ.
-ഇപàµà´ªàµ‹àµ¾ കൈകാരàµà´¯à´‚ ചെയàµà´¯à´¾àµ» പറàµà´±àµà´¨àµà´¨ നിരോധനങàµà´™à´³àµà´‚ തടയലàµà´•à´³àµà´‚ കാണാൻ [[Special:IPBlockList|തടയപàµà´ªàµ†à´Ÿàµà´Ÿ à´.പി. വിലാസങàµà´™àµ¾]] കാണàµà´•.',
+'suppressionlogtext' => 'കാരàµà´¯à´¨à´¿àµ¼à´µà´¾à´¹à´•à´°à´¿àµ½ നിനàµà´¨àµà´‚ മറയàµà´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´Ÿàµà´Ÿàµà´³àµà´³ മായàµà´•àµà´•àµà´•à´¯àµà´‚ തടയàµà´•à´¯àµà´‚ ചെയàµà´¤à´¤àµà´®à´¾à´¯ ഉളàµà´³à´Ÿà´•àµà´•à´™àµà´™à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´• നൽകിയിരികàµà´•àµà´¨àµà´¨àµ.
+ഇപàµà´ªàµ‹àµ¾ കൈകാരàµà´¯à´‚ ചെയàµà´¯à´¾àµ» പറàµà´±àµà´¨àµà´¨ നിരോധനങàµà´™à´³àµà´‚ തടയലàµà´•à´³àµà´‚ കാണാൻ [[Special:BlockList|തടയപàµà´ªàµ†à´Ÿàµà´Ÿ à´.പി. വിലാസങàµà´™àµ¾]] കാണàµà´•.',
# History merging
'mergehistory' => 'താളàµà´•à´³àµà´Ÿàµ† നാൾവഴികൾ സം‌യോജിപàµà´ªà´¿à´•àµà´•àµà´•',
@@ -1272,12 +1305,13 @@ $1",
'searchdisabled' => '{{SITENAME}} സം‌രംഭതàµà´¤à´¿àµ½ തിരചàµà´šà´¿àµ½ à´¦àµàµ¼à´¬à´²à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. താങàµà´•àµ¾à´•àµà´•àµ ഗൂഗിൾ ഉപയോഗിചàµà´šàµ തതàµà´•à´¾à´²à´‚ തിരചàµà´šà´¿àµ½ നടതàµà´¤à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ. പകàµà´·àµ† ഗൂഗിളിൽ {{SITENAME}} സം‌രംഭതàµà´¤à´¿à´¨àµà´±àµ† സൂചിക കാലഹരണപàµà´ªàµ†à´Ÿàµà´Ÿà´¤à´¾à´¯à´¿à´°à´¿à´•àµà´•à´¾àµ» സാദàµà´§àµà´¯à´¤à´¯àµà´£àµà´Ÿàµ.',
# Quickbar
-'qbsettings' => 'à´¦àµà´°àµà´¤ സൗകരàµà´¯à´‚',
-'qbsettings-none' => 'à´’à´¨àµà´¨àµà´®à´¿à´²àµà´²',
-'qbsettings-fixedleft' => 'à´¸àµà´¥à´¿à´°à´®à´¾à´¯ ഇടതàµ',
-'qbsettings-fixedright' => 'à´¸àµà´¥à´¿à´°à´®à´¾à´¯ വലതàµ',
-'qbsettings-floatingleft' => 'ഇടതàµà´¤àµ‡à´¯àµà´•àµà´•àµ à´’à´´àµà´•à´¿ നിൽകàµà´•àµà´•',
-'qbsettings-floatingright' => 'വലതàµà´¤àµ‡à´¯àµà´•àµà´•àµ à´’à´´àµà´•à´¿ നിൽകàµà´•àµà´•',
+'qbsettings' => 'à´¦àµà´°àµà´¤ സൗകരàµà´¯à´‚',
+'qbsettings-none' => 'à´’à´¨àµà´¨àµà´®à´¿à´²àµà´²',
+'qbsettings-fixedleft' => 'à´¸àµà´¥à´¿à´°à´®à´¾à´¯ ഇടതàµ',
+'qbsettings-fixedright' => 'à´¸àµà´¥à´¿à´°à´®à´¾à´¯ വലതàµ',
+'qbsettings-floatingleft' => 'ഇടതàµà´¤àµ‡à´¯àµà´•àµà´•àµ à´’à´´àµà´•à´¿ നിൽകàµà´•àµà´•',
+'qbsettings-floatingright' => 'വലതàµà´¤àµ‡à´¯àµà´•àµà´•àµ à´’à´´àµà´•à´¿ നിൽകàµà´•àµà´•',
+'qbsettings-directionality' => 'താങàµà´•à´³àµà´Ÿàµ† ഭാഷയàµà´Ÿàµ† ലിപിയിൽ à´Žà´´àµà´¤àµà´¤àµà´¨àµà´¨ ദിശയനàµà´¸à´°à´¿à´šàµà´šàµ ശരിയാകàµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
# Preferences page
'preferences' => 'à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™àµ¾',
@@ -1288,9 +1322,10 @@ $1",
'changepassword' => 'രഹസàµà´¯à´µà´¾à´•àµà´•àµ മാറàµà´±àµà´•',
'prefs-skin' => 'ദൃശàµà´¯à´°àµ‚പം',
'skin-preview' => 'à´Žà´™àµà´™à´¨àµ†à´¯àµà´£àµà´Ÿàµ†à´¨àµà´¨àµ കാണàµà´•',
-'prefs-math' => 'സമവാകàµà´¯à´‚',
'datedefault' => 'à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™àµ¾ വേണàµà´Ÿ',
+'prefs-beta' => 'പരീകàµà´·à´£à´¾à´Ÿà´¿à´¸àµà´¥à´¾à´¨à´¤àµà´¤à´¿à´²àµà´³àµà´³ സൗകരàµà´¯à´™àµà´™àµ¾',
'prefs-datetime' => 'ദിവസവàµà´‚ സമയവàµà´‚',
+'prefs-labs' => 'പരീകàµà´·à´£à´¶à´¾à´²à´¯à´¿àµ½ തയàµà´¯à´¾à´±à´¾à´•àµà´¨àµà´¨ സൗകരàµà´¯à´™àµà´™àµ¾',
'prefs-personal' => 'അഹം',
'prefs-rc' => 'സമീപകാല മാറàµà´±à´™àµà´™àµ¾',
'prefs-watchlist' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨à´µ',
@@ -1312,8 +1347,6 @@ $1",
'columns' => 'നിര:',
'searchresultshead' => 'തിരയൂ',
'resultsperpage' => 'ഒരൠതാളിലàµà´³àµà´³ ശരാശരി സനàµà´¦àµ¼à´¶à´¨à´‚:',
-'contextlines' => 'ഓരോ സനàµà´¦àµ¼à´¶à´¨à´¤àµà´¤à´¿à´²àµà´‚ ചേർകàµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ വരികൾ:',
-'contextchars' => 'ഓരോ വരിയàµà´Ÿàµ‡à´¯àµà´‚ à´ªàµà´°à´¸à´•àµà´¤à´¿:',
'stub-threshold' => '<a href="#" class="stub">അപൂർണàµà´£à´®à´¾à´¯ à´•à´£àµà´£à´¿à´¯àµ†à´¨àµà´¨àµ</a> à´¸àµà´¥à´¾à´ªà´¿à´•àµà´•à´¾à´¨àµà´³àµà´³ à´¤àµà´µà´°à´•à´‚ (ബൈറàµà´±àµà´•àµ¾):',
'stub-threshold-disabled' => 'നിർജàµà´œàµ€à´µà´®à´¾à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
'recentchangesdays' => 'à´ªàµà´¤à´¿à´¯ മാറàµà´±à´™àµà´™à´³à´¿àµ½ കാണികàµà´•àµ‡à´£àµà´Ÿ ദിവസങàµà´™à´³àµà´Ÿàµ† à´Žà´£àµà´£à´‚:',
@@ -1326,7 +1359,7 @@ $1",
'savedprefs' => 'താങàµà´•à´³àµà´Ÿàµ† à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™àµ¾ കാതàµà´¤àµà´¸àµ‚à´•àµà´·à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
'timezonelegend' => 'സമയ മേഖല:',
'localtime' => 'à´ªàµà´°à´¾à´¦àµ‡à´¶à´¿à´• സമയം:',
-'timezoneuseserverdefault' => 'സെർവറിൽ à´¸àµà´µà´¤àµ‡à´¯àµà´³àµà´³à´¤àµ ഉപയോഗികàµà´•àµà´•',
+'timezoneuseserverdefault' => 'വികàµà´•à´¿à´¯à´¿àµ½ à´¸àµà´µà´¤àµ‡à´¯àµà´³àµà´³à´¤àµ ഉപയോഗികàµà´•àµà´• ($1)',
'timezoneuseoffset' => 'മറàµà´±àµà´³àµà´³à´¤àµ (à´Žà´¨àµà´¤à´¾à´£àµ†à´¨àµà´¨àµ നൽകàµà´•)',
'timezoneoffset' => 'à´µàµà´¯à´¤àµà´¯à´¾à´¸à´‚¹:',
'servertime' => 'സെർവർ സമയം:',
@@ -1375,8 +1408,8 @@ $1",
à´ˆ വിവരം പരസàµà´¯à´®à´¾à´¯à´¿ ലഭàµà´¯à´®à´¾à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ.',
'email' => 'ഇമെയിൽ',
'prefs-help-realname' => 'താങàµà´•à´³àµà´Ÿàµ† യഥാർതàµà´¥ പേരàµâ€Œ നൽകണമെനàµà´¨àµ നിർബനàµà´§à´®à´¿à´²àµà´². à´Žà´™àµà´•à´¿à´²àµà´‚ à´…à´™àµà´™à´¨àµ† ചെയàµà´¤à´¾àµ½ താങàµà´•à´³àµà´Ÿàµ† സംഭാവനകൾ à´† പേരിൽ അംഗീകരികàµà´•à´ªàµà´ªàµ†à´Ÿàµà´‚.',
-'prefs-help-email' => 'ഇമെയിൽ വിലാസം നൽകണമെനàµà´¨àµ നിർബനàµà´§à´®à´¿à´²àµà´², പകàµà´·àµ‡ താങàµà´•àµ¾ രഹസàµà´¯à´µà´¾à´•àµà´•àµ മറനàµà´¨à´¾àµ½ à´ªàµà´¤à´¿à´¯à´¤àµ അയചàµà´šàµ തരാൻ ഇതàµà´•àµŠà´£àµà´Ÿàµ സാധികàµà´•àµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ.
-താങàµà´•àµ¾à´•àµà´•à´¾à´¯àµà´³àµà´³ താളിൽ നിനàµà´¨àµ‹, താങàµà´•àµ¾à´•àµà´•àµà´³àµà´³ സനàµà´¦àµ‡à´¶à´™àµà´™à´³àµà´Ÿàµ† താളിൽ നിനàµà´¨àµ‹ മറàµà´±àµà´ªà´¯àµ‹à´•àµà´¤à´¾à´•àµà´•àµ¾à´•àµà´•àµ താങàµà´•à´³àµà´Ÿàµ† à´µàµà´¯à´•àµà´¤à´¿à´¤àµà´µà´‚ മനസàµà´¸à´¿à´²à´¾à´•àµà´•à´¾à´¤àµ† തനàµà´¨àµ† താങàµà´•àµ¾à´•àµà´•àµ സനàµà´¦àµ‡à´¶à´™àµà´™à´³à´¯à´¯àµà´•àµà´•à´¾à´¨àµà´‚ à´ˆ സം‌വിധാനം അവസരം നൽകàµà´¨àµà´¨àµ.',
+'prefs-help-email' => 'ഇമെയിൽ വിലാസം നൽകണമെനàµà´¨àµ നിർബനàµà´§à´®à´¿à´²àµà´², പകàµà´·àµ‡ താങàµà´•àµ¾ രഹസàµà´¯à´µà´¾à´•àµà´•àµ മറനàµà´¨à´¾àµ½ à´ªàµà´¤à´¿à´¯à´¤àµ അയചàµà´šàµ തരാൻ വിലാസം ആവശàµà´¯à´®à´¾à´£àµ.',
+'prefs-help-email-others' => 'താങàµà´•àµ¾à´•àµà´•à´¾à´¯àµà´³àµà´³ താളിൽ നിനàµà´¨àµ‹, താങàµà´•àµ¾à´•àµà´•àµà´³àµà´³ സനàµà´¦àµ‡à´¶à´™àµà´™à´³àµà´Ÿàµ† താളിൽ നിനàµà´¨àµ‹ മറàµà´±àµà´ªà´¯àµ‹à´•àµà´¤à´¾à´•àµà´•àµ¾à´•àµà´•àµ താങàµà´•à´³àµà´Ÿàµ† à´µàµà´¯à´•àµà´¤à´¿à´¤àµà´µà´‚ മനസàµà´¸à´¿à´²à´¾à´•àµà´•à´¾à´¤àµ† തനàµà´¨àµ† താങàµà´•àµ¾à´•àµà´•àµ സനàµà´¦àµ‡à´¶à´™àµà´™à´³à´¯à´¯àµà´•àµà´•à´¾à´¨àµà´‚ à´ˆ സം‌വിധാനം അവസരം നൽകàµà´¨àµà´¨àµ.',
'prefs-help-email-required' => 'ഇമെയിൽ വിലാസം ആവശàµà´¯à´®à´¾à´£àµâ€Œ.',
'prefs-info' => 'à´…à´Ÿà´¿à´¸àµà´¥à´¾à´¨ വിവരങàµà´™àµ¾',
'prefs-i18n' => 'ആഗോളീകരണം',
@@ -1502,15 +1535,15 @@ $1",
'right-userrights' => 'à´Žà´²àµà´²à´¾ ഉപയോകàµà´¤àµƒ അവകാശങàµà´™à´³àµà´‚ തിരàµà´¤àµà´¤àµà´•',
'right-userrights-interwiki' => 'മറàµà´±àµà´³àµà´³ വികàµà´•à´¿à´•à´³à´¿àµ½ ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµà´Ÿàµ† അവകാശങàµà´™àµ¾ തിരàµà´¤àµà´¤àµà´•',
'right-siteadmin' => 'ഡേറàµà´±à´¾à´¬àµ‡à´¸àµ à´¤àµà´±à´•àµà´•àµà´•, പൂടàµà´Ÿàµà´•',
-'right-reset-passwords' => 'മറàµà´±àµ ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµà´Ÿàµ† രഹസàµà´¯à´µà´¾à´•àµà´•àµà´•àµ¾ റീസെറàµà´±àµ ചെയàµà´¯àµà´•',
'right-override-export-depth' => 'à´•à´£àµà´£à´¿à´µà´¤àµà´•à´°à´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ താളàµà´•à´³àµà´Ÿàµ† ആഴം 5 വരെയàµà´³àµà´³ താളàµà´•àµ¾ കയറàµà´±àµà´®à´¤à´¿ ചെയàµà´¯àµà´•',
'right-sendemail' => 'മറàµà´±àµà´ªà´¯àµ‹à´•àµà´¤à´¾à´•àµà´•àµ¾à´•àµà´•àµ ഇമെയിൽ അയയàµà´•àµà´•àµà´•',
# User rights log
-'rightslog' => 'ഉപയോകàµà´¤àµƒ അവകാശ രേഖ',
-'rightslogtext' => 'ഉപയോകàµà´¤àµƒ അവകാശങàµà´™àµ¾à´•àµà´•àµà´£àµà´Ÿà´¾à´¯ മാറàµà´±à´™àµà´™àµ¾ കാണികàµà´•àµà´¨àµà´¨ ഒരൠലോഗാണിതàµ.',
-'rightslogentry' => '$1 à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† സംഘ à´…à´‚à´—à´¤àµà´µà´‚ $2 à´Žà´¨àµà´¨à´¤à´¿àµ½ നിനàµà´¨àµ $3 à´Žà´¨àµà´¨à´¤à´¿à´²àµ‡à´•àµà´•àµ മാറàµà´±à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
-'rightsnone' => '(à´’à´¨àµà´¨àµà´®à´¿à´²àµà´²)',
+'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' => 'à´ˆ താൾ വായികàµà´•àµà´•',
@@ -1631,12 +1664,12 @@ $1",
'minlength1' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† പേരിൽ à´’à´°à´•àµà´·à´°à´®àµ†à´™àµà´•à´¿à´²àµà´‚ ഉണàµà´Ÿà´¾à´µà´£à´‚.',
'illegalfilename' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† "$1" à´Žà´¨àµà´¨ പേരിൽ, താളിനàµà´±àµ† തലകàµà´•àµ†à´Ÿàµà´Ÿà´¿àµ½ à´…à´¨àµà´µà´¦à´¨àµ€à´¯à´®à´²àµà´²à´¾à´¤àµà´¤ à´šà´¿à´¹àµà´¨à´™àµà´™àµ¾ ഉണàµà´Ÿàµ. ദയവായി à´ªàµà´°à´®à´¾à´£à´‚ à´ªàµà´¨àµ¼à´¨à´¾à´®à´•à´°à´£à´‚ നടതàµà´¤à´¿ വീണàµà´Ÿàµà´‚ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµà´µà´¾àµ» à´¶àµà´°à´®à´¿à´•àµà´•àµà´•.',
'badfilename' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† പേരൠ"$1" à´Žà´¨àµà´¨à´¾à´•àµà´•à´¿ മാറàµà´±à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
-'filetype-mime-mismatch' => 'മൈം തരവàµà´®à´¾à´¯à´¿ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† à´Žà´•àµà´¸àµà´±àµà´±àµ†àµ»à´·àµ» à´’à´¤àµà´¤àµà´ªàµ‹à´•àµà´¨àµà´¨à´¿à´²àµà´².',
+'filetype-mime-mismatch' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† à´Žà´•àµà´¸àµà´±àµà´±àµ†àµ»à´·à´¨à´¾à´¯ ".$1" അതിനàµà´±àµ† മൈം(MIME) തരവàµà´®à´¾à´¯à´¿ ($2) യോജിചàµà´šàµ പോകàµà´¨àµà´¨à´¿à´²àµà´².',
'filetype-badmime' => '"$1" à´Žà´¨àµà´¨ മൈം(MIME) ഇനതàµà´¤à´¿à´²àµà´³àµà´³ à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµà´¨àµà´¨à´¤àµ à´…à´¨àµà´µà´¦à´¨àµ€à´¯à´®à´²àµà´².',
'filetype-bad-ie-mime' => 'à´ˆ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤àµ† ഇനàµà´±àµ¼à´¨àµ†à´±àµà´±àµ à´Žà´•àµà´¸àµâ€Œâ€Œà´ªàµà´²àµ‹à´±àµ¼ "$1" ആയി തിരിചàµà´šà´±à´¿à´žàµà´žà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ, ഇതൠഅപകടകരമായ തരം à´ªàµà´°à´®à´¾à´£à´®à´¾à´¯à´¤à´¿à´¨à´¾àµ½ à´…à´¨àµà´µà´¦à´¨àµ€à´¯à´®à´²àµà´².',
'filetype-unwanted-type' => "'''\".\$1\"''' ഉപയോഗയോഗàµà´¯à´®à´²àµà´²à´¾à´¤àµà´¤ ഒരൠപàµà´°à´®à´¾à´£ തരം ആണàµâ€Œ. {{PLURAL:\$3|à´ªàµà´°à´®à´¾à´£ തരം|à´ªàµà´°à´®à´¾à´£ തരങàµà´™àµ¾}} \$2 ആണൠഅഭിലഷണീയം.",
-'filetype-banned-type' => "'''\".\$1\"''' à´…à´¨àµà´µà´¦à´¨àµ€à´¯à´®à´²àµà´²à´¾à´¤àµà´¤ ഒരൠപàµà´°à´®à´¾à´£ തരം ആണàµâ€Œ.
-{{PLURAL:\$3|à´ªàµà´°à´®à´¾à´£ തരം|à´ªàµà´°à´®à´¾à´£ തരങàµà´™àµ¾}} \$2 ആണൠഅഭിലഷണീയം.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|à´…à´¨àµà´µà´¦à´¨àµ€à´¯à´®à´²àµà´²à´¾à´¤àµà´¤ തരം à´ªàµà´°à´®à´¾à´£à´®à´¾à´£àµâ€Œ|à´…à´¨àµà´µà´¦à´¨àµ€à´¯à´®à´²àµà´²à´¾à´¤àµà´¤ തരങàµà´™à´³à´¿à´²àµà´³àµà´³ à´ªàµà´°à´®à´¾à´£à´™àµà´™à´³à´¾à´£àµ}}.
+$2 {{PLURAL:$3|തരതàµà´¤à´¿à´²àµà´³àµà´³ à´ªàµà´°à´®à´¾à´£à´‚|തരങàµà´™à´³à´¿à´²àµà´³àµà´³ à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾}} ആണൠഅഭിലഷണീയം.',
'filetype-missing' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµ à´Žà´•àµà´¸àµà´±àµà´±àµ»à´·àµ» (ഉദാ: ".jpg") ഇലàµà´².',
'empty-file' => 'താങàµà´•àµ¾ സമർപàµà´ªà´¿à´šàµà´š à´ªàµà´°à´®à´¾à´£à´‚ ശൂനàµà´¯à´®à´¾à´£àµ.',
'file-too-large' => 'താങàµà´•àµ¾ സമർപàµà´ªà´¿à´šàµà´š à´ªàµà´°à´®à´¾à´£à´‚ വളരെ വലàµà´¤à´¾à´£àµ.',
@@ -1654,6 +1687,7 @@ $1",
'emptyfile' => 'താങàµà´•àµ¾ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¤ à´ªàµà´°à´®à´¾à´£à´‚ ശൂനàµà´¯à´®à´¾à´£àµ†à´¨àµà´¨àµ കാണàµà´¨àµà´¨àµ.
à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† പേരിലàµà´³àµà´³ à´…à´•àµà´·à´°à´¤àµà´¤àµ†à´±àµà´±à´¾à´¯à´¿à´°à´¿à´•àµà´•à´¾à´‚ ഇതിനൠകാരണം.
à´ˆ à´ªàµà´°à´®à´¾à´£à´‚ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯à´£àµ‹ à´Žà´¨àµà´¨àµŠà´°à´¿à´•àµà´•àµ½ കൂടി പരിശോധികàµà´•àµà´•.',
+'windows-nonascii-filename' => 'à´ªàµà´°à´¤àµà´¯àµ‡à´•à´¾à´•àµà´·à´°à´™àµà´™à´³àµà´³àµà´³ à´ªàµà´°à´®à´¾à´£à´¨à´¾à´®à´™àµà´™àµ¾ à´ˆ വികàµà´•à´¿ പിനàµà´¤àµà´£à´¯àµà´•àµà´•àµà´¨àµà´¨à´¿à´²àµà´².',
'fileexists' => "ഇതേ പേരിൽ വേറെ ഒരൠപàµà´°à´®à´¾à´£à´‚ നിലവിലàµà´£àµà´Ÿàµ.
ദയവായി '''<tt>[[:$1]]</tt>''' പരിശോധിചàµà´šàµ à´ªàµà´°à´¸àµà´¤àµà´¤ à´ªàµà´°à´®à´¾à´£à´‚ മാറàµà´±à´£à´®àµ‹ à´Žà´¨àµà´¨àµ തീരàµà´®à´¾à´¨à´¿à´•àµà´•àµà´•.
[[$1|thumb]]",
@@ -1691,6 +1725,8 @@ $1",
ദയവായി file_uploads à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™àµ¾ പരിശോധികàµà´•àµà´•.',
'uploadscripted' => 'à´ˆ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿àµ½ വെബൠബàµà´°àµ—സർ തെറàµà´±à´¾à´¯à´¿ à´µàµà´¯à´¾à´–àµà´¯à´¾à´¨à´¿à´šàµà´šàµ‡à´•àµà´•à´¾à´µàµà´¨àµà´¨ à´Žà´šàµà´šàµ.à´±àµà´±à´¿.à´Žà´‚.എൽ. à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ à´¸àµà´•àµà´°à´¿à´ªàµà´±àµà´±àµ കോഡൠഉണàµà´Ÿàµ.',
'uploadvirus' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿àµ½ വൈറസàµà´£àµà´Ÿàµ! വിശദാംശങàµà´™àµ¾: $1',
+'uploadjava' => 'ഇതàµ, ജാവ .class à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾ à´…à´Ÿà´•àµà´•à´‚ ചെയàµà´¤à´¿à´Ÿàµà´Ÿàµà´³àµà´³ ഒരൠസിപൠ(ZIP) à´ªàµà´°à´®à´¾à´£à´‚ ആണàµ.
+à´¸àµà´°à´•àµà´·à´¾à´¤à´Ÿà´¯à´²àµà´•àµ¾ മറികടകàµà´•à´¾àµ» à´•à´´à´¿à´¯àµà´®àµ†à´¨àµà´¨ കാരണതàµà´¤à´¾àµ½ ജാവ à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµà´¨àµà´¨à´¤àµ à´…à´¨àµà´µà´¦à´¿à´šàµà´šà´¿à´Ÿàµà´Ÿà´¿à´²àµà´².',
'upload-source' => 'à´¸àµà´°àµ‹à´¤à´¸àµà´¸àµ à´ªàµà´°à´®à´¾à´£à´‚',
'sourcefilename' => 'à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµ‡à´£àµà´Ÿ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† à´¸àµà´°àµ‹à´¤à´¸àµà´¸àµ നാമം:',
'sourceurl' => 'à´¸àµà´°àµ‹à´¤à´¸àµà´¸àµ à´¯àµ.ആർ.എൽ:',
@@ -1700,10 +1736,6 @@ $1",
'upload-options' => 'à´…à´ªàµâ€Œâ€Œà´²àµ‹à´¡àµ à´à´šàµà´›à´¿à´•à´™àµà´™àµ¾',
'watchthisupload' => 'à´ˆ à´ªàµà´°à´®à´¾à´£à´‚ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´•',
'filewasdeleted' => 'à´ˆ പേരിലàµà´³àµà´³ ഒരൠപàµà´°à´®à´¾à´£à´‚ ഇതിനൠമàµàµ»à´ªàµ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµà´•à´¯àµà´‚ പിനàµà´¨àµ€à´Ÿàµ മായàµà´•àµà´•àµà´•à´¯àµà´‚ ചെയàµà´¤à´¿à´Ÿàµà´Ÿàµà´³àµà´³à´¤à´¾à´£àµâ€Œ. à´ˆ à´ªàµà´°à´®à´¾à´£à´‚ à´¤àµà´Ÿàµ¼à´¨àµà´¨àµà´‚ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµ à´®àµàµ»à´ªàµ $1 പരിശോധികàµà´•àµ‡à´£àµà´Ÿà´¤à´¾à´£àµâ€Œ.',
-'upload-wasdeleted' => "'''à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ: à´®àµà´®àµà´ªàµ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµà´•à´¯àµà´‚ പിനàµà´¨àµ€à´Ÿàµ മായàµà´•àµà´•àµà´•à´¯àµà´‚ ചെയàµà´¤à´¿à´Ÿàµà´Ÿàµà´³àµà´³ ഒരൠപàµà´°à´®à´¾à´£à´®à´¾à´£àµâ€Œ താങàµà´•àµ¾ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯à´¾àµ» à´¶àµà´°à´®à´¿à´•àµà´•àµà´¨àµà´¨à´¤àµ.'''
-
-à´ˆ à´ªàµà´°à´®à´¾à´£à´‚ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµà´¨àµà´¨à´¤àµ à´¤àµà´Ÿà´°à´£à´®àµ‹ à´Žà´¨àµà´¨à´¤àµ പരിശോധികàµà´•àµà´¨àµà´¨à´¤àµ നനàµà´¨à´¾à´¯à´¿à´°à´¿à´•àµà´•àµà´‚.
-താങàµà´•à´³àµà´Ÿàµ† പരിശോധനയàµà´•àµà´•à´¾à´¯à´¿ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† മായàµà´•àµà´•àµ½ രേഖ ഇവിടെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ:",
'filename-bad-prefix' => "താങàµà´•àµ¾ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµà´µà´¾àµ» à´¶àµà´°à´®à´¿à´•àµà´•àµà´¨àµà´¨ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† പേരàµâ€Œ '''\"\$1\"''' à´Žà´¨àµà´¨à´¾à´£àµâ€Œ à´¤àµà´Ÿà´™àµà´™àµà´¨àµà´¨à´¤àµ. ഇതൠഡിജിറàµà´±àµ½ à´•àµà´¯à´¾à´®à´±à´¯à´¿àµ½ പടങàµà´™àµ¾à´•àµà´•àµ യാനàµà´¤àµà´°à´¿à´•à´®à´¾à´¯à´¿ ചേർകàµà´•àµà´¨àµà´¨ പേരാണàµâ€Œ. ദയവൠചെയàµà´¤àµ താങàµà´•àµ¾ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµà´¨àµà´¨ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤àµ† വിശദീകരികàµà´•àµà´¨àµà´¨ à´…à´¨àµà´¯àµ‹à´œàµà´¯à´®à´¾à´¯ ഒരൠപേരൠതിരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•.",
'upload-success-subj' => 'à´…à´ªàµâ€Œà´²àµ‹à´¡àµ വിജയിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
'upload-success-msg' => 'താങàµà´•à´³àµà´Ÿàµ† [$2]-ൽ നിനàµà´¨àµà´‚ വിജയകരമായി à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. [[:{{ns:file}}:$1]] കാണàµà´•',
@@ -1726,12 +1758,29 @@ $1',
'upload-unknown-size' => 'വലിപàµà´ªà´‚ അറിയിലàµà´²',
'upload-http-error' => 'ഒരൠഎചàµà´šàµ.à´±àµà´±à´¿.à´±àµà´±à´¿.പി. പിഴവൠസംഭവിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'സിപൠ(ZIP) പരിശോധനകൾകàµà´•à´¾à´¯à´¿ à´ªàµà´°à´®à´¾à´£à´‚ à´¤àµà´±à´¨àµà´¨à´ªàµà´ªàµ‹àµ¾ പിഴവàµà´£àµà´Ÿà´¾à´¯à´¿.',
+'zip-wrong-format' => 'നൽകിയിരികàµà´•àµà´¨àµà´¨ à´ªàµà´°à´®à´¾à´£à´‚ സിപൠ(ZIP) à´…à´²àµà´².',
+'zip-bad' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿àµ½ പിഴവàµà´•à´³àµà´£àµà´Ÿàµ à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ മറàµà´±àµ†à´¨àµà´¤àµ‹ കാരണതàµà´¤à´¾àµ½ à´¤àµà´±à´•àµà´•à´¾àµ» കഴിയാതàµà´¤ സിപൠ(ZIP) à´ªàµà´°à´®à´¾à´£à´®à´¾à´£àµ.
+മതിയായ à´¸àµà´°à´•àµà´·à´¾à´ªà´°à´¿à´¶àµ‹à´§à´¨ ചെയàµà´¯à´¾àµ» കഴിയിലàµà´².',
+'zip-unsupported' => 'മീഡിയ വികàµà´•à´¿ പിനàµà´¤àµà´£à´¯àµà´•àµà´•à´¾à´¤àµà´¤ സിപൠ(ZIP) സവിശേഷതകൾ ഉൾകàµà´•àµŠà´³àµà´³àµà´¨àµà´¨ സിപൠപàµà´°à´®à´¾à´£à´‚ ആണàµ.
+മതിയായ à´¸àµà´°à´•àµà´·à´¾à´ªà´°à´¿à´¶àµ‹à´§à´¨ ചെയàµà´¯à´¾àµ» കഴിയിലàµà´².',
+
+# Special:UploadStash
+'uploadstash' => 'രഹസàµà´¯à´®à´¾à´¯à´¿ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµà´•',
+'uploadstash-summary' => 'à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¤àµà´‚ (à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ ചെയàµà´¤àµà´•àµŠà´£àµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨à´¤àµà´‚) അതേസമയം വികàµà´•à´¿à´¯à´¿àµ½ à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´¿à´•àµà´•à´¾à´¤àµà´¤à´¤àµà´®à´¾à´¯ à´ªàµà´°à´®à´¾à´£à´™àµà´™à´³à´¿à´²àµ‡à´¯àµà´•àµà´•àµ à´Žà´¤àµà´¤à´¾à´¨àµà´³àµà´³ സൗകരàµà´¯à´‚ à´ˆ താൾ നൽകàµà´¨àµà´¨àµ. à´ˆ à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾ à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¤ ആൾകàµà´•àµŠà´´à´¿à´•àµ† മറàµà´±à´¾àµ¼à´•àµà´•àµà´‚ കാണാവàµà´¨àµà´¨à´¤à´²àµà´².',
+'uploadstash-clear' => 'രഹസàµà´¯à´®à´¾à´•àµà´•à´¿à´¯ à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾ ശൂനàµà´¯à´®à´¾à´•àµà´•àµà´•',
+'uploadstash-nofiles' => 'താങàµà´•àµ¾à´•àµà´•àµ രഹസàµà´¯à´®à´¾à´•àµà´•à´¿à´¯ à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾ à´’à´¨àµà´¨àµà´®à´¿à´²àµà´².',
+'uploadstash-badtoken' => 'à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿ വിജയകരമായിരàµà´¨àµà´¨à´¿à´²àµà´², താങàµà´•à´³àµà´Ÿàµ† തിരàµà´¤àµà´¤àµà´µà´¾à´¨àµà´³àµà´³ അവകാശങàµà´™àµ¾ ചിലപàµà´ªàµ‹àµ¾ കാലഹരണപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´Ÿàµà´Ÿàµà´£àµà´Ÿà´¾à´•à´¾à´‚. വീണàµà´Ÿàµà´‚ à´¶àµà´°à´®à´¿à´•àµà´•àµà´•.',
+'uploadstash-errclear' => 'à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾ ശൂനàµà´¯à´®à´¾à´•àµà´•àµ½ വിജയകരമായിരàµà´¨àµà´¨à´¿à´²àµà´².',
+'uploadstash-refresh' => 'à´ªàµà´°à´®à´¾à´£à´™àµà´™à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´• à´ªàµà´¤àµà´•àµà´•àµà´•',
+
# img_auth script messages
'img-auth-accessdenied' => 'à´ªàµà´°à´µàµ‡à´¶à´¨à´®à´¿à´²àµà´²',
'img-auth-nopathinfo' => 'PATH_INFO ലഭàµà´¯à´®à´²àµà´².
താങàµà´•à´³àµà´Ÿàµ† സെർവർ à´ˆ വിവരം കൈമാറàµà´±à´‚ ചെയàµà´¯à´¾àµ» തയàµà´¯à´¾à´±à´¾à´•àµà´•à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´².
അതൠimg_auth പിനàµà´¤àµà´£à´¯à´¿à´²àµà´²à´¾à´¤àµà´¤ സി.ജി.à´. അധിഷàµà´ à´¿à´¤à´®à´¾à´¯ à´’à´¨àµà´¨à´¾à´¯à´¿à´°à´¿à´•àµà´•à´¾à´‚.
-http://www.mediawiki.org/wiki/Manual:Image_Authorization കാണàµà´•.',
+[http://www.mediawiki.org/wiki/Manual:Image_Authorization à´šà´¿à´¤àµà´° അംഗീകരണം കാണàµà´•].',
'img-auth-notindir' => 'ആവശàµà´¯à´ªàµà´ªàµ†à´Ÿàµà´Ÿ പാത à´…à´ªàµâ€Œâ€Œà´²àµ‹à´¡àµ ഡയറകàµà´±àµà´±à´±à´¿à´¯à´¿àµ½ സജàµà´œàµ€à´•à´°à´¿à´šàµà´šàµ നൽകിയിടàµà´Ÿà´¿à´²àµà´².',
'img-auth-badtitle' => '"$1" à´Žà´¨àµà´¨à´¤à´¿àµ½ നിനàµà´¨àµ സാധàµà´µà´¾à´¯ തലകàµà´•àµ†à´Ÿàµà´Ÿàµ സൃഷàµà´Ÿà´¿à´•àµà´•à´¾àµ» കഴിയിലàµà´².',
'img-auth-nologinnWL' => 'താങàµà´•àµ¾ ലോഗിൻ ചെയàµà´¤à´¿à´Ÿàµà´Ÿà´¿à´²àµà´² à´’à´ªàµà´ªà´‚ "$1" à´¶àµà´¦àµà´§à´¿à´ªà´Ÿàµà´Ÿà´¿à´•à´¯à´¿àµ½ ഇലàµà´².',
@@ -1808,7 +1857,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization കാണàµà´•.',
[[Special:WhatLinksHere/$2|à´®àµà´´àµà´µàµ» പടàµà´Ÿà´¿à´•à´¯àµà´‚]] ലഭàµà´¯à´®à´¾à´£àµ.',
'nolinkstoimage' => 'à´ˆ à´šà´¿à´¤àµà´°à´‚/à´ªàµà´°à´®à´¾à´£à´‚ വികàµà´•à´¿à´¯à´¿à´²àµ† താളàµà´•à´³à´¿à´²àµŠà´¨àµà´¨à´¿à´²àµà´‚ ഉപയോഗികàµà´•àµà´¨àµà´¨à´¿à´²àµà´².',
'morelinkstoimage' => 'à´ˆ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´²àµ‡à´¯àµà´•àµà´•àµà´³àµà´³ [[Special:WhatLinksHere/$1|കൂടàµà´¤àµ½ à´•à´£àµà´£à´¿à´•àµ¾]] കാണàµà´•.',
-'redirectstofile' => 'താഴെ à´ˆ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´²àµ‡à´¯àµà´•àµà´•àµà´³àµà´³ {{PLURAL:$1|à´ªàµà´°à´®à´¾à´£ തിരിചàµà´šàµà´µà´¿à´Ÿà´²àµà´•àµ¾|$1 à´ªàµà´°à´®à´¾à´£à´™àµà´™à´³àµà´Ÿàµ† തിരിചàµà´šàµà´µà´¿à´Ÿàµ½}} കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ:',
+'linkstoimage-redirect' => '$1 (à´ªàµà´°à´®à´¾à´£ തിരിചàµà´šàµà´µà´¿à´Ÿàµ½) $2',
'duplicatesoffile' => 'à´ˆ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† {{PLURAL:$1|ഒരൠഅപര à´ªàµà´°à´®à´¾à´£à´¤àµà´¤àµ†|$1 അപര à´ªàµà´°à´®à´¾à´£à´™àµà´™à´³àµ†}} താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ ([[Special:FileDuplicateSearch/$2|കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾]]):',
'sharedupload' => 'ഇതൠ$1 സം‌രംഭതàµà´¤à´¿àµ½ നിനàµà´¨àµà´³àµà´³ à´ªàµà´°à´®à´¾à´£à´®à´¾à´£àµâ€Œ, മറàµà´±àµ സം‌രംഭങàµà´™à´³àµà´‚ ഇതàµà´ªà´¯àµ‹à´—à´¿à´•àµà´•àµà´¨àµà´¨àµà´£àµà´Ÿà´¾à´•à´¾à´‚.',
'sharedupload-desc-there' => 'à´ˆ à´ªàµà´°à´®à´¾à´£à´‚ $1 സംരംഭതàµà´¤à´¿àµ½ നിനàµà´¨àµà´®àµà´³àµà´³à´¤à´¾à´£àµ, മറàµà´±àµ പദàµà´§à´¤à´¿à´•àµ¾ ഇതàµà´ªà´¯àµ‹à´—à´¿à´•àµà´•àµà´¨àµà´¨àµà´£àµà´Ÿà´¾à´•à´¾à´‚.
@@ -1890,7 +1939,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization കാണàµà´•.',
'statistics-pages-desc' => 'സം‌വാദം താളàµà´•àµ¾, തിരിചàµà´šàµà´µà´¿à´Ÿà´²àµà´•àµ¾ à´¤àµà´Ÿà´™àµà´™à´¿à´¯à´µà´¯à´Ÿà´•àµà´•à´‚ വികàµà´•à´¿à´¯à´¿à´²àµ† à´Žà´²àµà´²à´¾ താളàµà´•à´³àµà´‚.',
'statistics-files' => 'à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¤à´¿à´Ÿàµà´Ÿàµà´³àµà´³ à´ªàµà´°à´®à´¾à´£à´™àµà´™àµ¾',
'statistics-edits' => '{{SITENAME}} സം‌രംഭതàµà´¤à´¿à´¨àµà´±àµ† à´¤àµà´Ÿà´•àµà´•à´‚ à´®àµà´¤à´²àµà´³àµà´³ തിരàµà´¤àµà´¤à´²àµà´•àµ¾',
-'statistics-edits-average' => 'ഒരൠതാളിൽ ശരാശരി തിരàµà´¤àµà´¤à´²àµà´•àµ¾',
+'statistics-edits-average' => 'ഒരൠതാളിലെ ശരാശരി തിരàµà´¤àµà´¤à´²àµà´•àµ¾',
'statistics-views-total' => 'ആകെ സനàµà´¦àµ¼à´¶à´¨à´™àµà´™àµ¾',
'statistics-views-total-desc' => 'നിലവിലàµà´²à´¾à´¤àµà´¤ താളàµà´•à´³à´¿à´²àµà´‚ à´ªàµà´°à´¤àµà´¯àµ‡à´• താളàµà´•à´³à´¿à´²àµà´‚ ഉളàµà´³ à´Žà´Ÿàµà´¤àµà´¤àµà´¨àµ‹à´•àµà´•à´²àµà´•àµ¾ ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²',
'statistics-views-peredit' => 'ഓരോ തിരàµà´¤àµà´¤à´²à´¿à´²àµà´‚ ഉളàµà´³ à´Žà´Ÿàµà´¤àµà´¤àµà´¨àµ‹à´Ÿàµà´Ÿà´™àµà´™àµ¾',
@@ -1899,16 +1948,17 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization കാണàµà´•.',
'statistics-users-active-desc' => 'à´•à´´à´¿à´žàµà´ž {{PLURAL:$1|ദിവസം|$1 ദിവസങàµà´™àµ¾à´•àµà´•àµà´³àµà´³à´¿àµ½}} à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¿à´šàµà´šà´¿à´Ÿàµà´Ÿàµà´³àµà´³ ഉപയോകàµà´¤à´¾à´•àµà´•àµ¾',
'statistics-mostpopular' => 'à´à´±àµà´±à´µàµà´®à´§à´¿à´•à´‚ സനàµà´¦àµ¼à´¶à´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ താളàµà´•àµ¾',
-'disambiguations' => 'വിവകàµà´·à´¿à´¤à´™àµà´™à´³àµ† à´•àµà´±à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•àµ¾',
+'disambiguations' => 'വിവകàµà´·à´¿à´¤ താളàµà´•à´³à´¿à´²àµ‡à´¯àµà´•àµà´•àµ à´•à´£àµà´£à´¿à´šàµ‡àµ¼à´•àµà´•àµà´¨àµà´¨ താളàµà´•àµ¾',
'disambiguationspage' => 'Template:വിവകàµà´·à´•àµ¾',
'disambiguations-text' => 'താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•àµ¾ വിവകàµà´·à´¿à´¤à´™àµà´™àµ¾ താളിലേകàµà´•àµ à´•à´£àµà´£à´¿ ചേർകàµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. അതിനൠപകരം à´…à´µ ലേഖനതാളàµà´•à´³à´¿à´²àµ‡à´•àµà´•àµ à´•à´£àµà´£à´¿ ചേകàµà´•àµ‡à´£àµà´Ÿà´¤à´¾à´£àµâ€Œ. <br /> ഒരൠതാളിനെ വിവകàµà´·à´¿à´¤ താൾ ആയി പരിഗണികàµà´•à´£à´®àµ†à´™àµà´•à´¿àµ½ അതൠ[[MediaWiki:Disambiguationspage]] à´Žà´¨àµà´¨ താളിൽ നിനàµà´¨àµ à´•à´£àµà´£à´¿ ചേർകàµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ ഒരൠഫലകം ഉപയോഗികàµà´•à´£à´‚.',
-'doubleredirects' => 'ഇരടàµà´Ÿ തിരിചàµà´šàµà´µà´¿à´Ÿà´²àµà´•àµ¾',
-'doubleredirectstext' => 'à´ˆ താളിൽ ഒരൠതിരിചàµà´šàµà´µà´¿à´Ÿà´²à´¿àµ½ നിനàµà´¨àµà´‚ മറàµà´±àµ തിരിചàµà´šàµà´µà´¿à´Ÿàµ½ താളàµà´•à´³à´¿à´²àµ‡à´¯àµà´•àµà´•àµ പോകàµà´¨àµà´¨ താളàµà´•àµ¾ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. ഓരോ വരിയിലàµà´‚ à´’à´¨àµà´¨à´¾à´®à´¤àµà´¤àµ‡à´¯àµà´‚ à´°à´£àµà´Ÿà´¾à´®à´¤àµà´¤àµ‡à´¯àµà´‚ തിരിചàµà´šàµà´µà´¿à´Ÿàµ½ താളിലേകàµà´•àµà´³àµà´³ à´•à´£àµà´£à´¿à´•à´³àµà´‚, à´°à´£àµà´Ÿà´¾à´®à´¤àµà´¤àµ† തിരിചàµà´šàµà´µà´¿à´Ÿàµ½ താളിൽ നിനàµà´¨àµ ശരിയായ ലകàµà´·àµà´¯à´¤à´¾à´³à´¿à´²àµ‡à´•àµà´•àµà´³àµà´³ à´•à´£àµà´£à´¿à´•à´³àµà´‚ ഉൾകàµà´•àµŠà´³àµà´³àµà´¨àµà´¨àµ.
+'doubleredirects' => 'ഇരടàµà´Ÿ തിരിചàµà´šàµà´µà´¿à´Ÿà´²àµà´•àµ¾',
+'doubleredirectstext' => 'à´ˆ താളിൽ ഒരൠതിരിചàµà´šàµà´µà´¿à´Ÿà´²à´¿àµ½ നിനàµà´¨àµà´‚ മറàµà´±àµ തിരിചàµà´šàµà´µà´¿à´Ÿàµ½ താളàµà´•à´³à´¿à´²àµ‡à´¯àµà´•àµà´•àµ പോകàµà´¨àµà´¨ താളàµà´•àµ¾ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. ഓരോ വരിയിലàµà´‚ à´’à´¨àµà´¨à´¾à´®à´¤àµà´¤àµ‡à´¯àµà´‚ à´°à´£àµà´Ÿà´¾à´®à´¤àµà´¤àµ‡à´¯àµà´‚ തിരിചàµà´šàµà´µà´¿à´Ÿàµ½ താളിലേകàµà´•àµà´³àµà´³ à´•à´£àµà´£à´¿à´•à´³àµà´‚, à´°à´£àµà´Ÿà´¾à´®à´¤àµà´¤àµ† തിരിചàµà´šàµà´µà´¿à´Ÿàµ½ താളിൽ നിനàµà´¨àµ ശരിയായ ലകàµà´·àµà´¯à´¤à´¾à´³à´¿à´²àµ‡à´•àµà´•àµà´³àµà´³ à´•à´£àµà´£à´¿à´•à´³àµà´‚ ഉൾകàµà´•àµŠà´³àµà´³àµà´¨àµà´¨àµ.
<del>വെടàµà´Ÿà´¿à´•àµà´•àµŠà´Ÿàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨à´µ</del> ശരിയാകàµà´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµ.',
-'double-redirect-fixed-move' => '[[$1]] മാറàµà´±à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.
+'double-redirect-fixed-move' => '[[$1]] മാറàµà´±à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.
ഇതൠഇപàµà´ªàµ‹àµ¾ [[$2]] à´Žà´¨àµà´¨à´¤à´¿à´²àµ‡à´¯àµà´•àµà´•àµ തിരിചàµà´šàµà´µà´¿à´Ÿà´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
-'double-redirect-fixer' => 'തിരിചàµà´šàµà´µà´¿à´Ÿàµ½ ശരിയാകàµà´•à´¿à´¯à´¤àµ',
+'double-redirect-fixed-maintenance' => '[[$1]] à´Žà´¨àµà´¨ താളിൽ നിനàµà´¨àµ [[$2]] à´Žà´¨àµà´¨ താളിലേയàµà´•àµà´•àµà´³àµà´³ ഇരടàµà´Ÿ തിരിചàµà´šàµà´µà´¿à´Ÿàµ½ ശരിയാകàµà´•àµà´¨àµà´¨àµ.',
+'double-redirect-fixer' => 'തിരിചàµà´šàµà´µà´¿à´Ÿàµ½ ശരിയാകàµà´•à´¿à´¯à´¤àµ',
'brokenredirects' => 'à´®àµà´±à´¿à´žàµà´ž തിരിചàµà´šàµà´µà´¿à´Ÿà´²àµà´•àµ¾',
'brokenredirectstext' => 'താഴെകàµà´•à´¾à´£àµà´¨àµà´¨ തിരിചàµà´šàµà´µà´¿à´Ÿà´²àµà´•àµ¾ നിലവിലിലàµà´²à´¾à´¤àµà´¤ താളàµà´•à´³à´¿à´²àµ‡à´¯àµà´•àµà´•à´¾à´£àµâ€Œ:',
@@ -1985,6 +2035,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization കാണàµà´•.',
'pager-newer-n' => '{{PLURAL:$1|à´ªàµà´¤à´¿à´¯ 1|à´ªàµà´¤à´¿à´¯ $1}}',
'pager-older-n' => '{{PLURAL:$1|പഴയ 1|പഴയ $1}}',
'suppress' => 'മേൽനോടàµà´Ÿà´‚',
+'querypage-disabled' => 'à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¨à´®à´¿à´•à´µà´¿à´¨àµ† ബാധികàµà´•àµà´¨àµà´¨ കാരണങàµà´™à´³à´¾àµ½ à´ˆ à´ªàµà´°à´¤àµà´¯àµ‡à´• താൾ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¨ രഹിതമാകàµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
# Book sources
'booksources' => 'à´ªàµà´¸àµà´¤à´• à´¸àµà´°àµ‹à´¤à´¸àµà´¸àµà´•àµ¾',
@@ -2036,12 +2087,13 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization കാണàµà´•.',
'sp-deletedcontributions-contribs' => 'സം‌ഭാവനകൾ',
# Special:LinkSearch
-'linksearch' => 'വെബàµà´¬àµ à´•à´£àµà´£à´¿à´•àµ¾',
+'linksearch' => 'à´ªàµà´±à´¤àµà´¤àµ‡à´¯àµà´•àµà´•àµà´³àµà´³ à´•à´£àµà´£à´¿à´•àµ¾ തിരയàµà´•',
'linksearch-pat' => 'തിരചàµà´šà´¿à´²à´¿à´¨àµà´±àµ† മാതൃക:',
'linksearch-ns' => 'നാമമേഖല:',
'linksearch-ok' => 'തിരയൂ',
-'linksearch-text' => '"*.wikipedia.org" പോലàµà´³àµà´³ വൈൽഡൠകാർഡàµà´•àµ¾ ഉപയോഗികàµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ.<br />
-പിനàµà´¤à´¾à´™àµà´™àµà´¨àµà´¨ à´ªàµà´°àµ‹à´Ÿàµà´Ÿàµ‹à´•àµà´•àµ‹à´³àµà´•àµ¾: <tt>$1</tt>',
+'linksearch-text' => '"*.wikipedia.org" പോലàµà´³àµà´³ വൈൽഡൠകാർഡàµà´•àµ¾ ഉപയോഗികàµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ.
+à´•àµà´±à´žàµà´žà´¤àµ "*.org" പോലàµà´³àµà´³ ടോപàµ-ലെവൽ ഡൊമൈൻ à´Žà´™àµà´•à´¿à´²àµà´‚ ഉണàµà´Ÿà´¾à´¯à´¿à´°à´¿à´•àµà´•à´£à´‚.<br />
+പിനàµà´¤à´¾à´™àµà´™àµà´¨àµà´¨ à´ªàµà´°àµ‹à´Ÿàµà´Ÿàµ‹à´•àµà´•àµ‹à´³àµà´•àµ¾: <tt>$1</tt> (താങàµà´•à´³àµà´Ÿàµ† തിരചàµà´šà´¿à´²à´¿àµ½ ഇവ ചേർകàµà´•à´°àµà´¤àµ).',
'linksearch-line' => '$1, $2ൽ നിനàµà´¨àµ à´•à´£àµà´£à´¿ ചേർകàµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
'linksearch-error' => 'ഹോസàµà´±àµà´±àµà´¨àµ†à´¯à´¿à´®à´¿à´¨àµà´±àµ† à´¤àµà´Ÿà´•àµà´•à´¤àµà´¤à´¿àµ½ മാതàµà´°à´®àµ‡ വൈൽഡൠകാർഡàµà´•àµ¾ വരാവൂ.',
@@ -2102,6 +2154,10 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization കാണàµà´•.',
'noemailtext' => 'à´ˆ ഉപയോകàµà´¤à´¾à´µàµ സാധàµà´µà´¾à´¯ ഇമെയിൽ വിലാസം നൽകിയിടàµà´Ÿà´¿à´²àµà´².',
'nowikiemailtitle' => 'ഇമെയിൽ à´…à´¨àµà´µà´¦à´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´Ÿàµà´Ÿà´¿à´²àµà´²',
'nowikiemailtext' => 'à´ˆ ഉപയോകàµà´¤à´¾à´µàµ മറàµà´±àµà´³àµà´³à´µà´°à´¿àµ½ നിനàµà´¨àµà´‚ ഇമെയിൽ à´¸àµà´µàµ€à´•à´°à´¿à´•àµà´•àµà´¨àµà´¨à´¤àµ ഒഴിവാകàµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
+'emailnotarget' => 'à´¸àµà´µàµ€à´•àµ¼à´¤àµà´¤à´¾à´µà´¿à´¨àµà´±àµ† ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ നിലവിലിലàµà´² à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ അസാധàµà´µà´¾à´£àµ.',
+'emailtarget' => 'à´¸àµà´µàµ€à´•àµ¼à´¤àµà´¤à´¾à´µà´¿à´¨àµà´±àµ† ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ നൽകàµà´•',
+'emailusername' => 'ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚:',
+'emailusernamesubmit' => 'സമർപàµà´ªà´¿à´•àµà´•àµà´•',
'email-legend' => 'മറàµà´±àµŠà´°àµ {{SITENAME}} ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ ഇമെയിൽ അയയàµà´•àµà´•àµà´•',
'emailfrom' => 'ദാതാവàµ:',
'emailto' => 'à´¸àµà´µàµ€à´•àµ¼à´¤àµà´¤à´¾à´µàµ:',
@@ -2126,9 +2182,9 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization കാണàµà´•.',
'watchlistanontext' => 'താങàµà´•àµ¾ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´• കാണàµà´µà´¾à´¨àµ‹ തിരàµà´¤àµà´¤àµà´µà´¾à´¨àµ‹ $1 ചെയàµà´¯àµà´•.',
'watchnologin' => 'ലോഗിൻ ചെയàµà´¤à´¿à´Ÿàµà´Ÿà´¿à´²àµà´²',
'watchnologintext' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളിനàµà´±àµ† പടàµà´Ÿà´¿à´• തിരàµà´¤àµà´¤àµà´µà´¾àµ» താങàµà´•àµ¾ [[Special:UserLogin|ലോഗിൻ]] ചെയàµà´¤à´¿à´°à´¿à´•àµà´•à´£à´‚.',
-'addedwatch' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯à´¿à´²àµ‡à´•àµà´•àµ ചേർതàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
+'addwatch' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯à´¿à´²àµ‡à´•àµà´•àµ ചേർകàµà´•àµà´•',
'addedwatchtext' => "താങàµà´•àµ¾ [[Special:Watchlist|à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯à´¿à´²àµ‡à´•àµà´•àµ]] \"[[:\$1]]\" à´Žà´¨àµà´¨ à´ˆ താൾ ചേർതàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. ഇനി à´®àµà´¤àµ½ à´ˆ താളിലàµà´‚ ബനàµà´§à´ªàµà´ªàµ†à´Ÿàµà´Ÿ സം‌വാദം താളിലàµà´‚ ഉണàµà´Ÿà´¾à´•àµà´¨àµà´¨ മാറàµà´±à´™àµà´™àµ¾ à´† പടàµà´Ÿà´¿à´•à´¯à´¿àµ½ ദൃശàµà´¯à´®à´¾à´µàµà´‚. കൂടാതെ താങàµà´•àµ¾à´•àµà´•àµ à´Žà´³àµà´ªàµà´ªà´¤àµà´¤à´¿àµ½ തിരിചàµà´šà´±à´¿à´¯à´¾àµ» [[Special:RecentChanges|à´ªàµà´¤à´¿à´¯ മാറàµà´±à´™àµà´™àµ¾]] താളിൽ à´ˆ താളിലെ മാറàµà´±à´™àµà´™àµ¾ '''à´•à´Ÿàµà´ªàµà´ªà´¤àµà´¤à´¿àµ½''' കാണികàµà´•àµà´•à´¯àµà´‚ ചെയàµà´¯àµà´‚.",
-'removedwatch' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯à´¿àµ½ നിനàµà´¨àµà´‚ നീകàµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
+'removewatch' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯à´¿àµ½ നിനàµà´¨àµà´‚ ഒഴിവാകàµà´•àµà´•',
'removedwatchtext' => 'താങàµà´•àµ¾ [[Special:Watchlist|à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯à´¿àµ½]] നിനàµà´¨àµà´‚ "[[:$1]]" à´Žà´¨àµà´¨ താൾ നീകàµà´•à´‚ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
'watch' => 'മാറàµà´±à´™àµà´™àµ¾ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´•',
'watchthispage' => 'à´ˆ താൾ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´•',
@@ -2149,8 +2205,9 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization കാണàµà´•.',
'watchlist-options' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† സജàµà´œàµ€à´•à´°à´£à´™àµà´™àµ¾',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨àµ...',
-'unwatching' => 'അവഗണികàµà´•àµà´¨àµà´¨àµ...',
+'watching' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨àµ...',
+'unwatching' => 'അവഗണികàµà´•àµà´¨àµà´¨àµ...',
+'watcherrortext' => '"$1" à´Žà´¨àµà´¨ താൾ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµà´±àµ† à´¸àµà´¥à´¿à´¤à´¿à´¯à´¿àµ½ മാറàµà´±à´‚ വരàµà´¤àµà´¤à´¿à´¯à´ªàµà´ªàµ‹àµ¾ ഒരൠപിഴവàµà´£àµà´Ÿà´¾à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
'enotif_mailer' => '{{SITENAME}} വിജàµà´žà´¾à´ªà´¨ മെയിലർ',
'enotif_reset' => 'à´Žà´²àµà´²à´¾ താളàµà´•à´³àµà´‚ സനàµà´¦àµ¼à´¶à´¿à´šàµà´šà´¤à´¾à´¯à´¿ രേഖപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
@@ -2181,16 +2238,16 @@ $NEWPAGE
--
ഇമെയിൽ അറിയിപàµà´ªàµ സജàµà´œàµ€à´•à´°à´£à´™àµà´™à´³à´¿àµ½ മാറàµà´±à´‚വരàµà´¤àµà´¤à´¾àµ», സനàµà´¦àµ¼à´¶à´¿à´•àµà´•àµà´•
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ പടàµà´Ÿà´¿à´•à´¯à´¿à´²àµ† à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™à´³à´¿àµ½ മാറàµà´±à´‚ വരàµà´¤àµà´¤à´¾àµ», സനàµà´¦àµ¼à´¶à´¿à´•àµà´•àµà´•
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
താൾ താങàµà´•àµ¾ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨à´µà´¯àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯à´¿àµ½ നിനàµà´¨àµ നീകàµà´•à´‚ചെയàµà´¯à´¾àµ», സനàµà´¦àµ¼à´¶à´¿à´•àµà´•àµà´•
$UNWATCHURL
à´…à´­à´¿à´ªàµà´°à´¾à´¯à´‚ അറിയികàµà´•à´¾à´¨àµà´‚ മറàµà´±àµ സഹായങàµà´™àµ¾à´•àµà´•àµà´‚:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'താൾ മായàµà´•àµà´•àµà´•',
@@ -2202,10 +2259,10 @@ $UNWATCHURL
'delete-confirm' => '"$1" മായàµà´•àµà´•àµà´•',
'delete-legend' => 'മായàµà´•àµà´•àµà´•',
'historywarning' => "'''à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ''': താങàµà´•àµ¾ മായàµà´•àµà´•àµà´µà´¾àµ» പോകàµà´¨àµà´¨ താളിനൠà´à´•à´¦àµ‡à´¶à´‚ {{PLURAL:$1|ഒരൠനാൾപàµà´ªà´¤à´¿à´ªàµà´ªàµ|$1 നാൾപàµà´ªà´¤à´¿à´ªàµà´ªàµà´•àµ¾}} ഉളàµà´³ നാൾവഴി ഉണàµà´Ÿàµ:",
-'confirmdeletetext' => 'താങàµà´•àµ¾ ഒരൠതാൾ അതിനàµà´±àµ† തിരàµà´¤àµà´¤àµ½ à´šà´°à´¿à´¤àµà´°à´®à´Ÿà´•àµà´•à´‚ മായàµà´•àµà´•àµà´µà´¾àµ» പോവàµà´•à´¯à´¾à´£àµ. താങàµà´•àµ¾ ചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´±àµ† പരിണതഫലം താങàµà´•àµ¾à´•àµà´•à´±à´¿à´¯à´¾à´®àµ†à´¨àµà´¨àµà´‚, താങàµà´•à´³àµà´Ÿàµ† à´ˆ മായàµà´•àµà´•àµ½ [[{{MediaWiki:Policy-url}}|വികàµà´•à´¿à´¯àµà´Ÿàµ† നയം]] à´…à´¨àµà´¸à´°à´¿à´šàµà´šà´¾à´£àµ ചെയàµà´¯àµà´¨àµà´¨à´¤àµ†à´¨àµà´¨àµà´‚ ഉറപàµà´ªà´¾à´•àµà´•àµà´•.',
+'confirmdeletetext' => 'താങàµà´•àµ¾ ഒരൠതാൾ അതിനàµà´±àµ† തിരàµà´¤àµà´¤àµ½ à´šà´°à´¿à´¤àµà´°à´®à´Ÿà´•àµà´•à´‚ മായàµà´•àµà´•àµà´µà´¾àµ» പോവàµà´•à´¯à´¾à´£àµ. താങàµà´•àµ¾ ചെയàµà´¯àµà´¨àµà´¨à´¤à´¿à´¨àµà´±àµ† പരിണിതഫലം താങàµà´•àµ¾à´•àµà´•à´±à´¿à´¯à´¾à´®àµ†à´¨àµà´¨àµà´‚, താങàµà´•à´³àµà´Ÿàµ† à´ˆ മായàµà´•àµà´•àµ½ [[{{MediaWiki:Policy-url}}|വികàµà´•à´¿à´¯àµà´Ÿàµ† നയം]] à´…à´¨àµà´¸à´°à´¿à´šàµà´šà´¾à´£àµ ചെയàµà´¯àµà´¨àµà´¨à´¤àµ†à´¨àµà´¨àµà´‚ ഉറപàµà´ªà´¾à´•àµà´•àµà´•.',
'actioncomplete' => 'à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿ പൂർതàµà´¤à´¿à´¯à´¾à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
'actionfailed' => 'à´ªàµà´°à´µàµƒà´¤àµà´¤à´¿ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
-'deletedtext' => '"<nowiki>$1</nowiki>" മായàµà´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. à´ªàµà´¤à´¿à´¯à´¤à´¾à´¯à´¿ നടനàµà´¨ മായàµà´•àµà´•à´²àµà´•à´³àµà´Ÿàµ† വിവരങàµà´™àµ¾ $2 ഉപയോഗിചàµà´šàµ കാണാം.',
+'deletedtext' => '"$1" മായàµà´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. à´ªàµà´¤à´¿à´¯à´¤à´¾à´¯à´¿ നടനàµà´¨ മായàµà´•àµà´•à´²àµà´•à´³àµà´Ÿàµ† വിവരങàµà´™àµ¾ $2 ഉപയോഗിചàµà´šàµ കാണാം.',
'deletedarticle' => '"[[$1]]" മായàµà´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
'suppressedarticle' => '"[[$1]]" à´’à´¤àµà´•àµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
'dellogpage' => 'മായàµà´•àµà´•àµ½ രേഖ',
@@ -2259,7 +2316,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'കാലാവധി തീരàµà´¨àµà´¨ സമയം അസാധàµà´µà´¾à´£àµ.',
'protect_expiry_old' => 'കാലവധി തീരàµà´¨àµà´¨ സമയം ഭൂതകാലതàµà´¤à´¿à´²à´¾à´£àµ.',
'protect-unchain-permissions' => 'മറàµà´±àµ സംരകàµà´·à´£ à´à´šàµà´›à´¿à´•à´™àµà´™àµ¾ à´¤àµà´±à´•àµà´•àµà´•',
-'protect-text' => "താങàµà´•àµ¾à´•àµà´•àµ ഇവിടെ '''<nowiki>$1</nowiki>''' à´Žà´¨àµà´¨ താളിനàµà´±àµ† നിലവിലàµà´³àµà´³ സംരകàµà´·à´£à´®à´¾à´¨à´‚ ദർശികàµà´•àµà´•à´¯àµà´‚ അതിൽ മാറàµà´±à´‚വരàµà´¤àµà´¤àµà´•à´¯àµà´‚ ചെയàµà´¯à´¾à´‚.",
+'protect-text' => "താങàµà´•àµ¾à´•àµà´•àµ ഇവിടെ '''$1''' à´Žà´¨àµà´¨ താളിനàµà´±àµ† നിലവിലàµà´³àµà´³ സംരകàµà´·à´£à´®à´¾à´¨à´‚ ദർശികàµà´•àµà´•à´¯àµà´‚ അതിൽ മാറàµà´±à´‚വരàµà´¤àµà´¤àµà´•à´¯àµà´‚ ചെയàµà´¯à´¾à´‚.",
'protect-locked-blocked' => "തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ സമയതàµà´¤àµ താങàµà´•àµ¾à´•àµà´•àµ സം‌രകàµà´·à´£ പരിധി മാറàµà´±àµà´µà´¾àµ» സാധികàµà´•à´¿à´²àµà´². '''$1''' à´Žà´¨àµà´¨ താളിനàµà´±àµ† നിലവിലàµà´³àµà´³ à´•àµà´°à´®àµ€à´•à´°à´£à´‚ ഇതാണàµâ€Œ:",
'protect-locked-dblock' => "ഡാറàµà´±à´¾à´¬àµ‡à´¸àµ ബനàµà´§à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨à´¤àµ കാരണം താങàµà´•àµ¾à´•àµà´•àµ സം‌രകàµà´·à´£à´®à´¾à´¨à´‚ മാറàµà´±àµà´µà´¾àµ» സാധികàµà´•à´¿à´²àµà´².
@@ -2313,8 +2370,7 @@ $UNWATCHURL
'undeletepagetext' => 'താഴെ കാണിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ {{PLURAL:$1|താൾ|$1 താളàµà´•àµ¾}} മായàµà´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¤à´¾à´£àµ†à´™àµà´•à´¿à´²àµà´‚ പതàµà´¤à´¾à´¯à´¤àµà´¤à´¿à´²àµà´³àµà´³à´¤à´¿à´¨à´¾àµ½ à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ. പതàµà´¤à´¾à´¯à´‚ സമയാസമയങàµà´™à´³à´¿àµ½ വൃതàµà´¤à´¿à´¯à´¾à´•àµà´•à´¾à´¨à´¿à´Ÿà´¯àµà´£àµà´Ÿàµ.',
'undelete-fieldset-title' => 'നാൾപàµà´ªà´¤à´¿à´ªàµà´ªàµà´•àµ¾ à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•àµà´•',
'undeleteextrahelp' => "താളിനàµà´±àµ† à´®àµà´´àµà´µàµ» നാൾവഴിയàµà´‚ à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•à´¾àµ» à´Žà´²àµà´²à´¾ ചെകàµà´•àµà´¬àµ‹à´•àµà´¸àµà´•à´³àµà´‚ ശരിയിടാതെ വിടàµà´Ÿà´¶àµ‡à´·à´‚ '''''à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•àµà´•''''' à´Žà´¨àµà´¨à´¤àµ ഞെകàµà´•àµà´•.
-തിരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤à´µ à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•à´¾àµ», à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•àµ‡à´£àµà´Ÿ നാൾപàµà´ªà´¤à´¿à´ªàµà´ªà´¿à´¨àµà´³àµà´³ ചെകàµà´•àµà´¬àµ‹à´•àµà´¸à´¿àµ½ ശരിയിടàµà´Ÿà´¶àµ‡à´·à´‚ '''''à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•àµà´•''''' à´Žà´¨àµà´¨à´¤àµ ഞെകàµà´•àµà´•.
-'''''à´ªàµà´¨à´ƒà´•àµà´°à´®àµ€à´•à´°à´¿à´•àµà´•àµà´•''''' à´Žà´¨àµà´¨à´¤àµ ഞെകàµà´•à´¿à´¯à´¾àµ½ à´•àµà´±à´¿à´ªàµà´ªà´¿à´Ÿà´¾à´¨àµà´³àµà´³ പെടàµà´Ÿà´¿à´¯àµà´‚ à´Žà´²àµà´²à´¾ ചെകàµà´•àµà´¬àµ‹à´•àµà´¸àµà´•à´³àµà´‚ ശൂനàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨à´¤à´¾à´£àµ.",
+തിരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤à´µ à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•à´¾àµ», à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•àµ‡à´£àµà´Ÿ നാൾപàµà´ªà´¤à´¿à´ªàµà´ªà´¿à´¨àµà´³àµà´³ ചെകàµà´•àµà´¬àµ‹à´•àµà´¸à´¿àµ½ ശരിയിടàµà´Ÿà´¶àµ‡à´·à´‚ '''''à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•àµà´•''''' à´Žà´¨àµà´¨à´¤àµ ഞെകàµà´•àµà´•.",
'undeleterevisions' => '$1 {{PLURAL:$1|പതിപàµà´ªàµ|പതിപàµà´ªàµà´•àµ¾}} പതàµà´¤à´¾à´¯à´¤àµà´¤à´¿à´²à´¾à´•àµà´•à´¿',
'undeletehistory' => 'താങàµà´•àµ¾ താൾ à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´šàµà´šà´¾àµ½, à´Žà´²àµà´²à´¾ നാൾപàµà´ªà´¤à´¿à´ªàµà´ªàµà´•à´³àµà´‚ നാൾവഴിയിൽ à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´‚.
മായàµà´•àµà´•à´²à´¿à´¨àµ ശേഷം à´ªàµà´¤à´¿à´¯àµŠà´°àµ താൾ അതേ പേരിൽ സൃഷàµà´Ÿà´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´Ÿàµà´Ÿàµà´£àµà´Ÿàµ†à´™àµà´•à´¿àµ½, à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ പതിപàµà´ªàµà´•àµ¾ നാൾവഴിയിൽ പഴയവയായി à´ªàµà´°à´¤àµà´¯à´•àµà´·à´ªàµà´ªàµ†à´Ÿàµà´¨àµà´¨à´¤à´¾à´£àµ.',
@@ -2358,9 +2414,12 @@ $1',
'undelete-show-file-submit' => 'ശരി',
# Namespace form on various pages
-'namespace' => 'നാമമേഖല:',
-'invert' => 'വിപരീതം തിരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•',
-'blanknamespace' => '(à´®àµà´–àµà´¯à´‚)',
+'namespace' => 'നാമമേഖല:',
+'invert' => 'വിപരീതം തിരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•',
+'tooltip-invert' => 'തിരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´¨àµà´¨ നാമമേഖലയിലെ (ശരി ചേർതàµà´¤à´¿à´Ÿàµà´Ÿàµà´£àµà´Ÿàµ†à´™àµà´•à´¿àµ½ കൂടെ à´…à´¨àµà´¬à´¨àµà´§ നാമമേഖലയിലേയàµà´‚) താളàµà´•à´³à´¿à´²àµ† മാറàµà´±à´™àµà´™àµ¾ മറയàµà´•àµà´•à´¾àµ» à´ˆ പെടàµà´Ÿà´¿à´¯à´¿àµ½ ശരി ചേർകàµà´•àµà´•',
+'namespace_association' => 'à´…à´¨àµà´¬à´¨àµà´§à´¨à´¾à´®à´®àµ‡à´–ലകൾ',
+'tooltip-namespace_association' => 'താങàµà´•àµ¾ തിരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤ നാമമേഖലയàµà´Ÿàµ† കൂടെ സംവാദം à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ വിഷയ നാമമേഖലയàµà´‚ കൂടെ ചേർകàµà´•à´£à´®àµ†à´™àµà´•à´¿àµ½ ഇവിടെ ശരി ചേർകàµà´•àµà´•',
+'blanknamespace' => '(à´®àµà´–àµà´¯à´‚)',
# Contributions
'contributions' => 'ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† സംഭാവനകൾ',
@@ -2409,13 +2468,15 @@ $1',
'whatlinkshere-filters' => 'à´…à´°à´¿à´ªàµà´ªà´•àµ¾',
# Block/unblock
+'autoblockid' => 'à´¸àµà´µà´¯à´‚ തടയൽ #$1',
+'block' => 'ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† തടയàµà´•',
+'unblock' => 'ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´³àµà´³ തടയൽ നീകàµà´•àµà´•',
'blockip' => 'ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† തടയàµà´•',
'blockip-title' => 'ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† തടയàµà´•',
'blockip-legend' => 'ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† തടയàµà´•',
'blockiptext' => 'à´à´¤àµ†à´™àµà´•à´¿à´²àµà´‚ à´.പി. വിലാസതàµà´¤àµ‡à´¯àµ‹ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ‡à´¯àµ‹ തടയàµà´µà´¾àµ» താഴെയàµà´³àµà´³ ഫോം ഉപയോഗികàµà´•àµà´•.
[[{{MediaWiki:Policy-url}}|വികàµà´•à´¿à´¯àµà´Ÿàµ† നയം]] à´…à´¨àµà´¸à´°à´¿à´šàµà´šàµ നശീകരണപàµà´°à´µàµ¼à´¤àµà´¤à´¨à´‚ തടയാൻ മാതàµà´°à´®àµ‡ ഇതൠചെയàµà´¯à´¾à´µàµ‚.
തടയാനàµà´³àµà´³ à´µàµà´¯à´•àµà´¤à´®à´¾à´¯ കാരണം (à´à´¤àµ താളിലാണൠനശീകരണപàµà´°à´µàµ¼à´¤àµà´¤à´¨à´‚ നടനàµà´¨à´¤àµ à´Žà´¨àµà´¨à´¤à´Ÿà´•àµà´•à´‚) താഴെ രേഖപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´°à´¿à´•àµà´•à´£à´‚.',
-'ipaddress' => 'à´.പി. വിലാസം:',
'ipadressorusername' => 'à´.പി. വിലാസം à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚:',
'ipbexpiry' => 'കാലാവധി:',
'ipbreason' => 'കാരണം:',
@@ -2428,7 +2489,7 @@ $1',
** മാനàµà´¯à´®à´²àµà´²à´¾à´¤àµà´¤ പെരàµà´®à´¾à´±àµà´±à´‚
** à´¦àµà´°àµà´¦àµà´¦àµ‡à´¶à´¤àµà´¤àµ‹à´Ÿàµ† ഉപയോഗികàµà´•àµà´¨àµà´¨ നിരവധി à´…à´‚à´—à´¤àµà´µà´™àµà´™àµ¾
** വികàµà´•à´¿à´•àµà´•àµ ചേരാതàµà´¤ ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚',
-'ipbanononly' => 'à´…à´œàµà´žà´¾à´¤ ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµ† മാതàµà´°à´‚ തടയàµà´•',
+'ipb-hardblock' => 'à´ˆ à´.പി. വിലാസതàµà´¤à´¿àµ½ നിനàµà´¨àµà´‚ à´ªàµà´°à´µàµ‡à´¶à´¿à´•àµà´•àµà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµ† തിരàµà´¤àµà´¤àµà´¨àµà´¨à´¤à´¿àµ½ നിനàµà´¨àµà´‚ തടയàµà´•',
'ipbcreateaccount' => 'à´…à´‚à´—à´¤àµà´µà´‚ സൃഷàµà´Ÿà´¿à´•àµà´•àµà´¨àµà´¨à´¤àµ തടയàµà´•',
'ipbemailban' => 'ഇമെയിൽ അയകàµà´•àµà´¨àµà´¨à´¤à´¿àµ½ നിനàµà´¨àµ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† തടയàµà´•',
'ipbenableautoblock' => 'à´ˆ ഉപയോകàµà´¤à´¾à´µàµ അവസാനം ഉപയോഗിചàµà´š à´.പി.à´¯àµà´‚ à´¤àµà´Ÿàµ¼à´¨àµà´¨àµ ഉപയോഗികàµà´•à´¾àµ» സാദàµà´§àµà´¯à´¤à´¯àµà´³àµà´³ à´.പി.à´•à´³àµà´‚ യാനàµà´¤àµà´°à´¿à´•à´®à´¾à´¯à´¿ തടയàµà´•',
@@ -2439,12 +2500,15 @@ $1',
'ipbotherreason' => 'മറàµà´±àµ/കൂടàµà´¤àµ½ കാരണം:',
'ipbhidename' => 'തിരàµà´¤àµà´¤à´²àµà´•àµ¾, പടàµà´Ÿà´¿à´•à´•àµ¾ à´Žà´¨àµà´¨à´¿à´µà´¯à´¿àµ½ നിനàµà´¨àµà´‚ ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ മറയàµà´•àµà´•àµà´•',
'ipbwatchuser' => 'à´ˆ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† താളàµà´‚ സംവാദം താളàµà´‚ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´•',
-'ipballowusertalk' => 'തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´®àµà´ªàµ‹à´´àµà´‚ à´ˆ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† à´¸àµà´µà´¨àµà´¤à´‚ സംവാദം താളിൽ തിരàµà´¤àµà´¤à´¾àµ» à´…à´¨àµà´µà´¦à´¿à´•àµà´•àµà´•',
+'ipb-disableusertalk' => 'തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´®àµà´ªàµ‹àµ¾ à´¸àµà´µà´¨àµà´¤à´‚ സംവാദം താൾ തിരàµà´¤àµà´¤àµà´¨àµà´¨à´¤à´¿àµ½ നിനàµà´¨àµà´‚ à´ˆ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† തടയàµà´•',
'ipb-change-block' => 'à´ˆ à´•àµà´°à´®àµ€à´•à´°à´£à´ªàµà´°à´•à´¾à´°à´‚ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† വീണàµà´Ÿàµà´‚ തടയàµà´•',
+'ipb-confirm' => 'തടയൽ à´¸àµà´¥à´¿à´°àµ€à´•à´°à´¿à´•àµà´•àµà´•',
'badipaddress' => 'അസാധàµà´µà´¾à´¯ à´.പി. വിലാസം.',
'blockipsuccesssub' => 'തടയൽ വിജയിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† തടഞàµà´žà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.<br />
തടയൽ à´ªàµà´¨à´ƒà´ªà´°à´¿à´¶àµ‹à´§à´¿à´•àµà´•à´¾àµ» [[Special:IPBlockList|à´.പി. തടയൽ പടàµà´Ÿà´¿à´•]] കാണàµà´•.',
+'ipb-blockingself' => 'താങàµà´•àµ¾ താങàµà´•à´³àµ† തനàµà´¨àµ† തടയാൻ പോകàµà´•à´¯à´¾à´£àµ! അതൠചെയàµà´¯à´£à´‚ à´Žà´¨àµà´¨àµ താങàµà´•àµ¾à´•àµà´•àµà´±à´ªàµà´ªà´¾à´£àµ‹?',
+'ipb-confirmhideuser' => 'താങàµà´•àµ¾ "ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† മറചàµà´šàµà´•àµŠà´£àµà´Ÿàµ" ഒരൠതടയൽ ചെയàµà´¯à´¾àµ» പോവàµà´•à´¯à´¾à´£àµ. ഇതൠഎലàµà´²à´¾ പടàµà´Ÿà´¿à´•à´•à´³à´¿àµ½ നിനàµà´¨àµà´‚ രേഖകളിൽ നിനàµà´¨àµà´‚ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† പേരൠമറചàµà´šàµ വെയàµà´•àµà´•àµà´‚. ഇപàµà´°à´•à´¾à´°à´‚ വേണമെനàµà´¨àµ തീർചàµà´šà´¯à´¾à´£àµ‹?',
'ipb-edit-dropdown' => 'തടഞàµà´žà´¤à´¿à´¨àµà´±àµ† കാരണം തിരàµà´¤àµà´¤àµà´•',
'ipb-unblock-addr' => '$1 à´…à´‚à´—à´¤àµà´µà´¤àµà´¤à´¿à´¨àµà´³àµà´³ തടയൽ നീകàµà´•àµà´•',
'ipb-unblock' => 'ഒരൠà´.പി. വിലാസതàµà´¤à´¿à´¨àµ‹ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ‹ ഉളàµà´³ തടയൽ നീകàµà´•à´‚ചെയàµà´¯àµà´•',
@@ -2454,17 +2518,23 @@ $1',
'unblockiptext' => 'à´®àµàµ»à´ªàµ തടയപàµà´ªàµ†à´Ÿàµà´Ÿ à´.പി.à´¯àµà´Ÿàµ‡à´¯àµà´‚ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ‡à´¯àµà´‚ തിരàµà´¤àµà´¤àµ½ അവകാശം à´ªàµà´¨à´ƒà´¸àµà´¥à´¾à´ªà´¿à´•àµà´•à´¾àµ» താഴെയàµà´³àµà´³ ഫോം ഉപയോഗികàµà´•àµà´•.',
'ipusubmit' => 'à´ˆ വിലകàµà´•àµ ഒഴിവാകàµà´•àµà´•',
'unblocked' => '[[User:$1|$1]] à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´£àµà´Ÿà´¾à´¯à´¿à´°àµà´¨àµà´¨ തടയൽ നീകàµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
+'unblocked-range' => '$1 à´Žà´¨àµà´¨ പരിധിയàµà´Ÿàµ† തടയൽ നീകàµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
'unblocked-id' => '$1 à´Žà´¨àµà´¨ തടയൽ നീകàµà´•à´‚ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
+'blocklist' => 'തടയപàµà´ªàµ†à´Ÿàµà´Ÿ ഉപയോകàµà´¤à´¾à´•àµà´•àµ¾',
'ipblocklist' => 'തടയപàµà´ªàµ†à´Ÿàµà´Ÿ ഉപയോകàµà´¤à´¾à´•àµà´•àµ¾',
'ipblocklist-legend' => 'തടഞàµà´ž ഒരൠഉപയോകàµà´¤à´¾à´µà´¿à´¨àµ† തിരയàµà´•',
-'ipblocklist-username' => 'ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ à´.പി. വിലാസം:',
-'ipblocklist-sh-userblocks' => 'à´…à´‚à´—à´¤àµà´µ തടയലàµà´•àµ¾ $1',
-'ipblocklist-sh-tempblocks' => 'താൽകàµà´•à´¾à´²à´¿à´• തടയലàµà´•àµ¾ $1',
-'ipblocklist-sh-addressblocks' => 'à´’à´±àµà´±à´¯àµŠà´±àµà´± à´.പി. തടയലàµà´•àµ¾ $1',
+'blocklist-userblocks' => 'à´…à´‚à´—à´¤àµà´µ തടയലàµà´•àµ¾ മറയàµà´•àµà´•àµà´•',
+'blocklist-tempblocks' => 'താതàµà´•à´¾à´²à´¿à´• തടയലàµà´•àµ¾ മറയàµà´•àµà´•àµà´•',
+'blocklist-addressblocks' => 'à´’à´±àµà´±à´¯àµŠà´±àµà´± à´.പി. തടയലàµà´•àµ¾ മറയàµà´•àµà´•àµà´•',
+'blocklist-timestamp' => 'സമയമàµà´¦àµà´°',
+'blocklist-target' => 'ലകàµà´·àµà´¯à´‚',
+'blocklist-expiry' => 'കാലാവധി',
+'blocklist-by' => 'തടയàµà´¨àµà´¨ കാരàµà´¯à´¨à´¿àµ¼à´µàµà´µà´¾à´¹à´•(ൻ)',
+'blocklist-params' => 'തടയൽ à´šà´°à´™àµà´™àµ¾',
+'blocklist-reason' => 'കാരണം',
'ipblocklist-submit' => 'തിരയൂ',
'ipblocklist-localblock' => 'à´ªàµà´°à´¾à´¦àµ‡à´¶à´¿à´• തടയൽ',
'ipblocklist-otherblocks' => 'മറàµà´±àµ {{PLURAL:$1|തടയൽ|തടയലàµà´•àµ¾}}',
-'blocklistline' => '$1-à´¨àµ, $3 à´Žà´¨àµà´¨ à´…à´‚à´—à´¤àµà´µà´¤àµà´¤àµ† $2 തടഞàµà´žà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ ($4)',
'infiniteblock' => 'അനിശàµà´šà´¿à´¤ കാലം',
'expiringblock' => 'കാലാവധി തീരàµà´¨àµà´¨à´¤àµ - $1 $2',
'anononlyblock' => 'à´…à´œàµà´žà´¾à´¤ ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµ† മാതàµà´°à´‚',
@@ -2486,7 +2556,7 @@ $1',
അവലംബതàµà´¤à´¿à´¨à´¾à´¯à´¿ à´’à´¤àµà´•àµà´•àµ½ രേഖ താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ:',
'blocklogentry' => '$2 കാലതàµà´¤àµ‡à´•àµà´•àµ [[$1]] à´Žà´¨àµà´¨ à´…à´‚à´—à´¤àµà´µà´¤àµà´¤àµ† തടഞàµà´žà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ $3',
'reblock-logentry' => '[[$1]] à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´³àµà´³ തടയൽ നിബനàµà´§à´¨à´•àµ¾ മാറàµà´±à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ, തടയൽ അവസാനികàµà´•àµà´¨àµà´¨à´¤àµ $2 $3',
-'blocklogtext' => '{{SITENAME}} സംരംഭതàµà´¤à´¿àµ½ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿àµ½ നിനàµà´¨àµ ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµ† തടഞàµà´žà´¤à´¿à´¨àµà´±àµ‡à´¯àµà´‚, à´ªàµà´¨à´ƒà´ªàµà´°à´µàµ¼à´¤àµà´¤à´¨à´¾à´¨àµà´®à´¤à´¿ നൽകിയതിനàµà´±àµ‡à´¯àµà´‚ രേഖകൾ താഴെ കാണാം. {{SITENAME}} സംരംഭം à´¸àµà´µà´¯à´‚ തടയàµà´¨àµà´¨ à´.പി. വിലാസങàµà´™àµ¾ à´ˆ പടàµà´Ÿà´¿à´•à´¯à´¿àµ½ ഇലàµà´². [[Special:IPBlockList|തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´Ÿàµà´Ÿàµà´³àµà´³ à´.പി. വിലാസങàµà´™à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•]] à´Žà´¨àµà´¨à´¤à´¾à´³à´¿àµ½ നിലവിലàµà´³àµà´³ നിരോധനങàµà´™à´³àµ‡à´¯àµà´‚ തടയലàµà´•à´³àµ‡à´¯àµà´‚ കാണാവàµà´¨àµà´¨à´¤à´¾à´£àµ.',
+'blocklogtext' => '{{SITENAME}} സംരംഭതàµà´¤à´¿àµ½ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿àµ½ നിനàµà´¨àµ ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµ† തടഞàµà´žà´¤à´¿à´¨àµà´±àµ‡à´¯àµà´‚, à´ªàµà´¨à´ƒà´ªàµà´°à´µàµ¼à´¤àµà´¤à´¨à´¾à´¨àµà´®à´¤à´¿ നൽകിയതിനàµà´±àµ‡à´¯àµà´‚ രേഖകൾ താഴെ കാണാം. {{SITENAME}} സംരംഭം à´¸àµà´µà´¯à´‚ തടയàµà´¨àµà´¨ à´.പി. വിലാസങàµà´™àµ¾ à´ˆ പടàµà´Ÿà´¿à´•à´¯à´¿à´²à´¿à´²àµà´². [[Special:BlockList|തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´Ÿàµà´Ÿàµà´³àµà´³ à´.പി. വിലാസങàµà´™à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•]] à´Žà´¨àµà´¨ താളിൽ നിലവിലàµà´³àµà´³ നിരോധനങàµà´™à´³àµ‡à´¯àµà´‚ തടയലàµà´•à´³àµ‡à´¯àµà´‚ കാണാവàµà´¨àµà´¨à´¤à´¾à´£àµ.',
'unblocklogentry' => '$1 à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† തടയൽ ഒഴിവാകàµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
'block-log-flags-anononly' => 'à´…à´œàµà´žà´¾à´¤ ഉപയോകàµà´¤à´¾à´•àµà´•à´³àµ† മാതàµà´°à´‚',
'block-log-flags-nocreate' => 'à´…à´‚à´—à´¤àµà´µà´‚ സൃഷàµà´Ÿà´¿à´•àµà´•àµà´¨àµà´¨à´¤àµà´‚ തടഞàµà´žà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
@@ -2500,10 +2570,10 @@ $1',
'ipb_expiry_temp' => 'മറയàµà´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´™àµà´™à´³à´¿à´²àµà´³àµà´³ തടയൽ à´¸àµà´¥à´¿à´°à´®à´¾à´¯à´¿à´°à´¿à´•àµà´•à´£à´‚.',
'ipb_hide_invalid' => 'à´ˆ à´…à´‚à´—à´¤àµà´µà´‚ à´’à´¤àµà´•àµà´•à´¾àµ» കഴിയിലàµà´²; അതിനൠവളരെയധികം തിരàµà´¤àµà´¤à´²àµà´•àµ¾ ഉണàµà´Ÿàµ.',
'ipb_already_blocked' => '"$1" ഇതിനകം തനàµà´¨àµ† തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
-'ipb-needreblock' => '== നിലവിൽ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¤à´¾à´£àµ ==
-$1 നിലവിൽ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¤à´¾à´£àµ.<br />
+'ipb-needreblock' => '$1 നിലവിൽ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¤à´¾à´£àµ.<br />
താങàµà´•àµ¾ സജàµà´œàµ€à´•à´°à´£à´¤àµà´¤à´¿àµ½ മാറàµà´±à´‚ വരàµà´¤àµà´¤àµà´µà´¾àµ» ഉദàµà´¦àµ‡à´¶à´¿à´•àµà´•àµà´¨àµà´¨àµà´£àµà´Ÿàµ‹?',
'ipb-otherblocks-header' => 'മറàµà´±àµ {{PLURAL:$1|തടയൽ|തടയലàµà´•àµ¾}}',
+'unblock-hideuser' => 'ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚ മറയàµà´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨à´¾àµ½ à´ˆ ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† തടയൽ നീകàµà´•à´¾àµ» താങàµà´•àµ¾à´•àµà´•à´¾à´µà´¿à´²àµà´².',
'ipb_cant_unblock' => 'പിഴവàµ: $1 à´Žà´¨àµà´¨ തടയൽ à´.à´¡à´¿. കാണàµà´¨àµà´¨à´¿à´²àµà´². ഇതിനകം അതിനàµà´±àµ† തടയൽ നീകàµà´•à´‚ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•à´¾à´‚.',
'ipb_blocked_as_range' => 'പിഴവàµ: $1 à´Žà´¨àµà´¨ à´.പി.യെ നേരിടàµà´Ÿà´²àµà´² തടഞàµà´žà´¿à´Ÿàµà´Ÿàµà´³àµà´³à´¤àµ. അതിനാൽ തടയൽ നീകàµà´•à´‚ ചെയàµà´¯àµà´µà´¾àµ» സാദàµà´§àµà´¯à´®à´²àµà´². അതിനെ $2à´¨àµà´±àµ† ഭാഗമായàµà´³àµà´³ റേഞàµà´šà´¿àµ½ ആണàµâ€Œ തടഞàµà´žà´¿à´Ÿàµà´Ÿàµà´³àµà´³à´¤àµ. അതൠഒഴിവാകàµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµ.',
'ip_range_invalid' => 'അസാധàµà´µà´¾à´¯ à´.പി. റേഞàµà´šàµ.',
@@ -2540,6 +2610,7 @@ $1 നിലവിൽ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¤à´¾à´£àµ.<br />
'lockfilenotwritable' => 'ഡേറàµà´±à´¾à´¬àµ‡à´¸àµ പൂടàµà´Ÿàµ½ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿àµ½ മാറàµà´±à´™àµà´™àµ¾ വരàµà´¤àµà´¤à´¾àµ» à´•à´´à´¿à´žàµà´žà´¿à´²àµà´².
ഡേറàµà´±à´¾à´¬àµ‡à´¸àµ പൂടàµà´Ÿà´¾à´¨àµà´‚ à´¤àµà´±à´•àµà´•à´¾à´¨àµà´‚, ഇതിൽ വെബൠസെർവർ ഉപയോഗിചàµà´šàµ മാറàµà´±à´™àµà´™àµ¾ വരàµà´¤àµà´¤à´¾àµ» കഴിയണം.',
'databasenotlocked' => 'ഡാറàµà´±à´¾à´¬àµ‡à´¸àµ ബനàµà´§à´¿à´šàµà´šà´¿à´Ÿàµà´Ÿà´¿à´²àµà´².',
+'lockedbyandtime' => '($3 $2-നൠ$1 ചെയàµà´¤à´¤àµ)',
# Move page
'move-page' => '$1 മാറàµà´±àµà´•',
@@ -2576,7 +2647,7 @@ $1 നിലവിൽ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¤à´¾à´£àµ.<br />
à´®àµà´¨àµà´¨àµ‹à´Ÿàµà´Ÿàµ പോകàµà´¨àµà´¨à´¤à´¿à´¨àµ à´®àµà´®àµà´ªàµ താങàµà´•àµ¾ ചെയàµà´¯àµà´¨àµà´¨à´¤àµ†à´¨àµà´¤à´¾à´£àµ†à´¨àµà´¨àµ à´µàµà´¯à´•àµà´¤à´®à´¾à´¯à´¿ മനസàµà´¸à´¿à´²à´¾à´•àµà´•àµà´•.",
'movepagetalktext' => "'''ബനàµà´§à´ªàµà´ªàµ†à´Ÿàµà´Ÿ സം‌വാദം താളàµà´‚ à´¸àµà´µà´¯à´‚ മാറàµà´±à´ªàµà´ªàµ†à´Ÿà´¾à´¤à´¿à´°à´¿à´•àµà´•à´¾à´¨àµà´³àµà´³ കാരണങàµà´™àµ¾'''
*അതേ പേരിൽ തനàµà´¨àµ† ശൂനàµà´¯à´®à´²àµà´²à´¾à´¤àµà´¤ ഒരൠസം‌വാദം താൾ നിലവിലàµà´£àµà´Ÿàµ†à´™àµà´•à´¿àµ½
-*താങàµà´•àµ¾ താഴെയàµà´³àµà´³ ചെകàµâ€à´¬àµ‹à´•àµà´¸àµ ഉപയോഗിചàµà´šà´¿à´Ÿàµà´Ÿà´¿à´²àµà´²à´™àµà´•à´¿àµ½
+*താങàµà´•àµ¾ താഴെയàµà´³àµà´³ ചെൿബോകàµà´¸àµ ഉപയോഗിചàµà´šà´¿à´Ÿàµà´Ÿà´¿à´²àµà´²àµ†à´™àµà´•à´¿àµ½
à´…à´¤àµà´¤à´°à´‚ സനàµà´¦àµ¼à´­à´™àµà´™à´³à´¿àµ½ സം‌വാദം താളàµà´•àµ¾ താങàµà´•àµ¾ à´¸àµà´µà´¯à´‚ കൂടàµà´Ÿà´¿à´šàµà´šàµ‡àµ¼à´•àµà´•àµ‡à´£àµà´Ÿà´¤à´¾à´£àµ.",
'movearticle' => 'മാറàµà´±àµ‡à´£àµà´Ÿ താൾ',
@@ -2666,7 +2737,7 @@ $1 നിലവിൽ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¤à´¾à´£àµ.<br />
'allmessagesdefault' => 'à´¸àµà´µà´¤àµ‡à´¯àµà´³àµà´³ ഉളàµà´³à´Ÿà´•àµà´•à´‚',
'allmessagescurrent' => 'നിലവിലàµà´³àµà´³ ഉളàµà´³à´Ÿà´•àµà´•à´‚',
'allmessagestext' => 'ഇതൠമീഡിയവികàµà´•à´¿ നാമമേഖലയിൽ ലഭàµà´¯à´®à´¾à´¯ à´µàµà´¯à´µà´¸àµà´¥à´¾à´¸à´¨àµà´¦àµ‡à´¶à´™àµà´™à´³àµà´Ÿàµ† ഒരൠപടàµà´Ÿà´¿à´• ആണàµâ€Œ.
-à´ªàµà´°à´¾à´®à´¾à´£à´¿à´•à´®à´¾à´¯ വിധതàµà´¤à´¿àµ½ മീഡിയവികàµà´•à´¿à´¯àµà´Ÿàµ† à´ªàµà´°à´¾à´¦àµ‡à´¶àµ€à´•à´°à´£à´‚ താങàµà´•àµ¾ ഉദàµà´¦àµ‡à´¶à´¿à´•àµà´•àµà´¨àµà´¨àµà´µàµ†à´™àµà´•à´¿àµ½ ദയവായി [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation], [http://translatewiki.net translatewiki.net] à´Žà´¨àµà´¨àµ€ താളàµà´•àµ¾ സനàµà´¦àµ¼à´¶à´¿à´•àµà´•àµà´•.',
+à´ªàµà´°à´¾à´®à´¾à´£à´¿à´•à´®à´¾à´¯ വിധതàµà´¤à´¿àµ½ മീഡിയവികàµà´•à´¿à´¯àµà´Ÿàµ† à´ªàµà´°à´¾à´¦àµ‡à´¶àµ€à´•à´°à´£à´‚ താങàµà´•àµ¾ ഉദàµà´¦àµ‡à´¶à´¿à´•àµà´•àµà´¨àµà´¨àµà´µàµ†à´™àµà´•à´¿àµ½ ദയവായി [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation], [//translatewiki.net translatewiki.net] à´Žà´¨àµà´¨àµ€ താളàµà´•àµ¾ സനàµà´¦àµ¼à´¶à´¿à´•àµà´•àµà´•.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' ബനàµà´§à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨à´¤àµ കാരണം à´ˆ താൾ ഉപയോഗികàµà´•àµà´µà´¾àµ» സാദàµà´§àµà´¯à´®à´²àµà´².",
'allmessages-filter-legend' => 'à´…à´°à´¿à´ªàµà´ª',
'allmessages-filter' => 'à´ªàµà´¨à´ƒà´•àµà´°à´®àµ€à´•à´°à´¿à´šàµà´š à´•àµà´°à´®à´¤àµà´¤à´¿àµ½ തിരഞàµà´žàµà´µàµ†à´¯àµà´•àµà´•àµà´•:',
@@ -2815,9 +2886,7 @@ $1 നിലവിൽ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¤à´¾à´£àµ.<br />
'vector.js' => '/*ഇവിടെ നൽകàµà´¨àµà´¨ ജാവാസàµà´•àµà´°à´¿à´ªàµà´±àµà´±àµ വെകàµà´±àµà´±àµ¼ ദൃശàµà´¯à´°àµ‚പം ഉപയോഗികàµà´•àµà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´•àµà´•àµ¾à´•àµà´•àµ ബാധകമായിരികàµà´•àµà´‚*/',
# Metadata
-'nodublincore' => 'à´¡à´¬àµà´²à´¿àµ» കോർ ആർ.à´¡à´¿.à´Žà´«àµ. മെറàµà´±à´¾à´¡àµ‡à´±àµà´±à´¾ à´ˆ സെർവറിൽ സജàµà´œà´®à´²àµà´².',
-'nocreativecommons' => 'à´•àµà´°à´¿à´¯àµ‡à´±àµà´±àµ€à´µàµ കോമൺസൠആർ.à´¡à´¿.à´Žà´«àµ. മെറàµà´±à´¾à´¡àµ‡à´±àµà´±à´¾ à´ˆ സെ‌‌ർവറിൽ സജàµà´œà´®à´²àµà´².',
-'notacceptable' => 'താങàµà´•à´³àµà´Ÿàµ† à´•àµà´²à´¯à´¨àµà´±à´¿à´¨àµ മനസàµà´¸à´¿à´²à´¾à´•àµà´•à´¾àµ» പാകതàµà´¤à´¿à´²àµà´³àµà´³ തരതàµà´¤à´¿àµ½ വിവരങàµà´™àµ¾ നൽകാൻ വികàµà´•à´¿ സെർവറിനൠശേഷിയിലàµà´².',
+'notacceptable' => 'താങàµà´•à´³àµà´Ÿàµ† à´•àµà´²à´¯à´¨àµà´±à´¿à´¨àµ മനസàµà´¸à´¿à´²à´¾à´•àµà´•à´¾àµ» പാകതàµà´¤à´¿à´²àµà´³àµà´³ തരതàµà´¤à´¿àµ½ വിവരങàµà´™àµ¾ നൽകാൻ വികàµà´•à´¿ സെർവറിനൠശേഷിയിലàµà´².',
# Attribution
'anonymous' => '{{SITENAME}} സംരംഭതàµà´¤à´¿à´²àµ† à´…à´œàµà´žà´¾à´¤ {{PLURAL:$1|ഉപയോകàµà´¤à´¾à´µàµ|ഉപയോകàµà´¤à´¾à´•àµà´•àµ¾}}',
@@ -2833,7 +2902,7 @@ $1 നിലവിൽ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¤à´¾à´£àµ.<br />
# Spam protection
'spamprotectiontitle' => 'പാഴെഴàµà´¤àµà´¤àµ സം‌രകàµà´·à´£ à´…à´°à´¿à´ªàµà´ª',
-'spamprotectiontext' => 'താങàµà´•àµ¾à´•àµà´•àµ സേവൠചെയാൻ ഉദàµà´¦àµ‡à´¶à´¿à´•àµà´•àµà´¨àµà´¨ à´±àµà´±àµ†à´•àµà´¸àµà´±àµà´±àµ പാഴàµ-വിവരങàµà´™à´³àµà´Ÿàµ† à´…à´°à´¿à´ªàµà´ªà´¯à´¾àµ½ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.
+'spamprotectiontext' => 'താങàµà´•àµ¾à´•àµà´•àµ സേവൠചെയàµà´¯à´¾àµ» ഉദàµà´¦àµ‡à´¶à´¿à´•àµà´•àµà´¨àµà´¨ à´±àµà´±àµ†à´•àµà´¸àµà´±àµà´±àµ പാഴàµ-വിവരങàµà´™à´³àµà´Ÿàµ† à´…à´°à´¿à´ªàµà´ªà´¯à´¾àµ½ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.
ഒരൠപകàµà´·àµ‡ à´•à´°à´¿à´®àµà´ªà´Ÿàµà´Ÿà´¿à´•à´¯à´¿à´²àµà´³àµà´³ വെബàµâ€Œâ€Œà´¸àµˆà´±àµà´±à´¿à´²àµ‡à´¯àµà´•àµà´•àµ à´•à´£àµà´£à´¿ ഉൾകàµà´•àµŠà´³àµà´³àµà´¨àµà´¨à´¤àµ കൊണàµà´Ÿà´¾à´¯à´¿à´°à´¿à´•àµà´•à´¾à´‚ ഇങàµà´™à´¨àµ† സംഭവിചàµà´šà´¤àµ.',
'spamprotectionmatch' => 'പാഴെഴàµà´¤àµà´¤àµ à´…à´°à´¿à´ªàµà´ªà´¯àµ† ഉണർതàµà´¤à´¿à´¯ à´Žà´´àµà´¤àµà´¤àµ താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ: $1',
'spambot_username' => 'മീഡിയാവികàµà´•à´¿à´¯à´¿à´²àµ† പാഴെഴàµà´¤àµà´¤àµ à´¶àµà´¦àµà´§àµ€à´•à´°à´£à´‚',
@@ -2841,12 +2910,17 @@ $1 നിലവിൽ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¤à´¾à´£àµ.<br />
'spam_blanking' => '$1 à´Žà´¨àµà´¨ à´•à´£àµà´£à´¿à´•à´³àµà´³àµà´³ നാൾപàµà´ªà´¤à´¿à´ªàµà´ªàµà´•à´³àµ†à´²àµà´²à´¾à´‚ ശൂനàµà´¯à´®à´¾à´•àµà´•àµà´¨àµà´¨àµ',
# Info page
-'infosubtitle' => 'താളിനàµà´±àµ† വിവരങàµà´™àµ¾',
-'numedits' => 'തിരàµà´¤àµà´¤à´²àµà´•à´³àµà´Ÿàµ† à´Žà´£àµà´£à´‚ (ലേഖനം): $1',
-'numtalkedits' => 'തിരàµà´¤àµà´¤à´²àµà´•à´³àµà´Ÿàµ† à´Žà´£àµà´£à´‚ (സം‌വാദം താൾ): $1',
-'numwatchers' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨à´µà´°àµà´Ÿàµ† à´Žà´£àµà´£à´‚: $1',
-'numauthors' => 'à´µàµà´¯à´¤àµà´¯à´¸àµà´¤à´°à´¾à´¯ രചയിതാകàµà´•à´³àµà´Ÿàµ† à´Žà´£àµà´£à´‚ (താളിനàµà´±àµ†): $1',
-'numtalkauthors' => 'à´µàµà´¯à´¤àµà´¯à´¸àµà´¤à´°à´¾à´¯ രചയിതാകàµà´•à´³àµà´Ÿàµ† à´Žà´£àµà´£à´‚ (സം‌വാദം താളിനàµà´±àµ†): $1',
+'pageinfo-title' => '"$1" à´Žà´¨àµà´¨ താളിനàµà´±àµ† വിവരങàµà´™àµ¾',
+'pageinfo-header-edits' => 'തിരàµà´¤àµà´¤à´²àµà´•àµ¾',
+'pageinfo-header-watchlist' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨à´µ',
+'pageinfo-header-views' => 'à´Žà´Ÿàµà´¤àµà´¤àµà´¨àµ‹à´•àµà´•à´²àµà´•àµ¾',
+'pageinfo-subjectpage' => 'താൾ',
+'pageinfo-talkpage' => 'സം‌വാദം താൾ',
+'pageinfo-watchers' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨à´µà´°àµà´Ÿàµ† à´Žà´£àµà´£à´‚',
+'pageinfo-edits' => 'ആകെ തിരàµà´¤àµà´¤à´²àµà´•àµ¾',
+'pageinfo-authors' => 'ആകെ രചയിതാകàµà´•à´³àµà´Ÿàµ† à´Žà´£àµà´£à´‚',
+'pageinfo-views' => 'à´Žà´Ÿàµà´¤àµà´¤àµà´¨àµ‹à´•àµà´•à´²àµà´•à´³àµà´Ÿàµ† à´Žà´£àµà´£à´‚',
+'pageinfo-viewsperedit' => 'ഓരോ തിരàµà´¤àµà´¤à´²à´¿à´²àµà´‚ ഉളàµà´³ à´Žà´Ÿàµà´¤àµà´¤àµà´¨àµ‹à´Ÿàµà´Ÿà´™àµà´™àµ¾',
# Skin names
'skinname-standard' => 'സാർവതàµà´°à´¿à´•à´‚',
@@ -2859,27 +2933,6 @@ $1 നിലവിൽ തടയപàµà´ªàµ†à´Ÿàµà´Ÿà´¤à´¾à´£àµ.<br />
'skinname-modern' => 'നവീനം',
'skinname-vector' => 'വെകàµà´±àµà´±àµ¼',
-# Math options
-'mw_math_png' => 'à´Žà´ªàµà´ªàµ‹à´´àµà´‚ PNG ആയി à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´•',
-'mw_math_simple' => 'വളരെ ലളിതമാണെങàµà´•à´¿àµ½ HTML à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ PNG',
-'mw_math_html' => 'പറàµà´±àµà´®àµ†à´™àµà´•à´¿àµ½ HTML à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ PNG',
-'mw_math_source' => 'TeX ആയി തനàµà´¨àµ† à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´• (ടെകàµà´¸àµà´±àµà´±àµ à´¬àµà´°àµ—സറàµà´•àµ¾à´•àµà´•àµ)',
-'mw_math_modern' => 'ആധàµà´¨à´¿à´• à´¬àµà´°àµ—സറàµà´•àµ¾à´•àµà´•à´¾à´¯à´¿ നിർദേശികàµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¤àµ',
-'mw_math_mathml' => 'പറàµà´±àµà´®àµ†à´™àµà´•à´¿àµ½ MathML (പരീകàµà´·à´£à´¾à´Ÿà´¿à´¸àµà´¥à´¾à´¨à´‚)',
-
-# Math errors
-'math_failure' => 'പാഴàµà´¸àµ ചെയàµà´¯àµ½ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ',
-'math_unknown_error' => 'അപരിചിതമായ പിഴവàµ',
-'math_unknown_function' => 'à´…à´œàµà´žà´¾à´¤à´®à´¾à´¯ à´«à´™àµà´™àµà´·àµ»',
-'math_lexing_error' => 'ലെകàµà´¸à´¿à´™àµ പിഴവàµ',
-'math_syntax_error' => 'തെറàµà´±à´¾à´¯ പദവിനàµà´¯à´¾à´¸à´‚',
-'math_image_error' => 'PNG രൂപതàµà´¤à´¿à´²àµ‡à´¯àµà´•àµà´•àµà´³àµà´³ മാറàµà´±à´‚ പരാജയപàµà´ªàµ†à´Ÿàµà´Ÿàµ;
-latex, dvips,à´Žà´¨àµà´¨à´¿à´µ ശരിയായാണോ ഇൻസàµà´±àµà´±àµ‹àµ¾ ചെയàµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨à´¤àµ†à´¨àµà´¨àµ പരിശോധികàµà´•àµà´• (അഥവാ dvips + gs +convert)',
-'math_bad_tmpdir' => 'math temp ഡയറകàµà´Ÿà´±à´¿ ഉണàµà´Ÿà´¾à´•àµà´•à´¾à´¨àµ‹ അതിലേകàµà´•àµ à´Žà´´àµà´¤à´¾à´¨àµ‹ സാധിചàµà´šà´¿à´²àµà´²',
-'math_bad_output' => 'math output ഡയറകàµà´Ÿà´±à´¿ ഉണàµà´Ÿà´¾à´•àµà´•à´¾à´¨àµ‹ അതിലേകàµà´•àµ à´Žà´´àµà´¤à´¾à´¨àµ‹ സാധിചàµà´šà´¿à´²àµà´²',
-'math_notexvc' => 'à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¨à´¸à´œàµà´œà´®à´¾à´¯ texvc ലഭàµà´¯à´®à´²àµà´²;
-സജàµà´œàµ€à´•à´°à´¿à´šàµà´šàµ†à´Ÿàµà´•àµà´•à´¾à´¨àµà´³àµà´³ സഹായതàµà´¤à´¿à´¨àµ ദയവായി math/README കാണàµà´•.',
-
# Patrolling
'markaspatrolleddiff' => 'റോനàµà´¤àµà´šàµà´±àµà´±à´¿à´¯à´¤à´¾à´¯à´¿ അടയാളപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
'markaspatrolledtext' => 'à´ˆ താളിൽ റോനàµà´¤àµà´šàµà´±àµà´±à´¿à´¯à´¤à´¾à´¯à´¿ രേഖപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµà´•',
@@ -2915,21 +2968,24 @@ $1',
'nextdiff' => 'à´…à´Ÿàµà´¤àµà´¤ à´µàµà´¯à´¤àµà´¯à´¾à´¸à´‚ →',
# Media information
-'mediawarning' => "'''à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ''': à´ˆ തരതàµà´¤à´¿à´²àµà´³àµà´³ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿àµ½ വിനാശകാരിയായ കോഡൠഉണàµà´Ÿà´¾à´¯àµ‡à´•àµà´•à´¾à´‚. ഇതൠതàµà´±à´•àµà´•àµà´¨àµà´¨à´¤àµ താങàµà´•à´³àµà´Ÿàµ† à´•à´®àµà´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´±à´¿à´¨àµ അപകടമായി തീർനàµà´¨àµ‡à´•àµà´•à´¾à´‚.",
-'imagemaxsize' => "à´šà´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† വലിപàµà´ªà´‚:<br />''(à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† വിവരണ താളàµà´•à´³à´¿àµ½)''",
-'thumbsize' => 'ലഘàµà´šà´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† വലിപàµà´ªà´‚:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|താൾ|താളàµà´•àµ¾}}',
-'file-info' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† വലിപàµà´ªà´‚: $1, മൈം തരം: $2',
-'file-info-size' => '$1 × $2 പികàµà´¸àµ½, à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† വലിപàµà´ªà´‚: $3, മൈം തരം: $4',
-'file-nohires' => '<small>കൂടàµà´¤àµ½ à´µàµà´¯à´•àµà´¤à´¤à´¯àµà´³àµà´³ à´šà´¿à´¤àµà´°à´‚ ലഭàµà´¯à´®à´²àµà´².</small>',
-'svg-long-desc' => 'SVG à´ªàµà´°à´®à´¾à´£à´‚, നാമമാതàµà´°à´®à´¾à´¯ $1 × $2 പികàµà´¸à´²àµà´•àµ¾, à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† വലിപàµà´ªà´‚: $3',
-'show-big-image' => 'പൂർണàµà´£ റെസലൂഷൻ',
-'show-big-image-thumb' => '<small>à´ˆ à´ªàµà´°à´¿à´µàµà´¯àµ‚വിനàµà´±àµ† വലിപàµà´ªà´‚: $1 × $2 പികàµà´¸à´²àµà´•àµ¾</small>',
-'file-info-gif-looped' => 'à´ªàµà´¨à´°à´¾à´µàµ¼à´¤àµà´¤à´¿à´¤à´‚',
-'file-info-gif-frames' => '{{PLURAL:$1|ഒരൠചടàµà´Ÿà´‚|$1 à´šà´Ÿàµà´Ÿà´™àµà´™àµ¾}}',
-'file-info-png-looped' => 'à´ªàµà´¨à´°à´¾à´µàµ¼à´¤àµà´¤à´¿à´¤à´‚',
-'file-info-png-repeat' => '{{PLURAL:$1|ഒരൠതവണ|$1 തവണ}} à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´šàµà´šàµ',
-'file-info-png-frames' => '{{PLURAL:$1|ഒരൠഫàµà´°àµ†à´¯à´¿à´‚|$1 à´«àµà´°àµ†à´¯à´¿à´‚}}',
+'mediawarning' => "'''à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ''': à´ˆ തരതàµà´¤à´¿à´²àµà´³àµà´³ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿àµ½ വിനാശകാരിയായ കോഡൠഉണàµà´Ÿà´¾à´¯àµ‡à´•àµà´•à´¾à´‚. ഇതൠതàµà´±à´•àµà´•àµà´¨àµà´¨à´¤àµ താങàµà´•à´³àµà´Ÿàµ† à´•à´®àµà´ªàµà´¯àµ‚à´Ÿàµà´Ÿà´±à´¿à´¨àµ അപകടമായി തീർനàµà´¨àµ‡à´•àµà´•à´¾à´‚.",
+'imagemaxsize' => "à´šà´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† വലിപàµà´ªà´‚:<br />''(à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† വിവരണ താളàµà´•à´³à´¿àµ½)''",
+'thumbsize' => 'ലഘàµà´šà´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† വലിപàµà´ªà´‚:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|താൾ|താളàµà´•àµ¾}}',
+'file-info' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† വലിപàµà´ªà´‚: $1, മൈം തരം: $2',
+'file-info-size' => '$1 × $2 പികàµà´¸àµ½, à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† വലിപàµà´ªà´‚: $3, മൈം തരം: $4',
+'file-info-size-pages' => '$1 × $2 പികàµà´¸àµ½, à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† വലിപàµà´ªà´‚: $3, മൈം തരം: $4, {{PLURAL:$5|ഒരൠതാൾ|$5 താളàµà´•àµ¾}}',
+'file-nohires' => '<small>കൂടàµà´¤àµ½ à´µàµà´¯à´•àµà´¤à´¤à´¯àµà´³àµà´³ à´šà´¿à´¤àµà´°à´‚ ലഭàµà´¯à´®à´²àµà´².</small>',
+'svg-long-desc' => 'SVG à´ªàµà´°à´®à´¾à´£à´‚, നാമമാതàµà´°à´®à´¾à´¯ $1 × $2 പികàµà´¸à´²àµà´•àµ¾, à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† വലിപàµà´ªà´‚: $3',
+'show-big-image' => 'പൂർണàµà´£ റെസലൂഷൻ',
+'show-big-image-preview' => '<small>à´ˆ à´ªàµà´°à´¿à´µàµà´¯àµ‚വിനàµà´±àµ† വലിപàµà´ªà´‚: $1.</small>',
+'show-big-image-other' => '<small>മറàµà´±àµ റെസലൂഷനàµà´•àµ¾: $1.</small>',
+'show-big-image-size' => '$1 × $2 പികàµà´¸à´²àµà´•àµ¾',
+'file-info-gif-looped' => 'à´ªàµà´¨à´°à´¾à´µàµ¼à´¤àµà´¤à´¿à´¤à´‚',
+'file-info-gif-frames' => '{{PLURAL:$1|ഒരൠചടàµà´Ÿà´‚|$1 à´šà´Ÿàµà´Ÿà´™àµà´™àµ¾}}',
+'file-info-png-looped' => 'à´ªàµà´¨à´°à´¾à´µàµ¼à´¤àµà´¤à´¿à´¤à´‚',
+'file-info-png-repeat' => '{{PLURAL:$1|ഒരൠതവണ|$1 തവണ}} à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¿à´ªàµà´ªà´¿à´šàµà´šàµ',
+'file-info-png-frames' => '{{PLURAL:$1|ഒരൠഫàµà´°àµ†à´¯à´¿à´‚|$1 à´«àµà´°àµ†à´¯à´¿à´‚}}',
# Special:NewFiles
'newimages' => 'à´ªàµà´¤à´¿à´¯ à´ªàµà´°à´®à´¾à´£à´™àµà´™à´³àµà´Ÿàµ† ഗാലറി',
@@ -2953,14 +3009,21 @@ $1',
'metadata-help' => 'ഡിജിറàµà´±àµ½ à´•àµà´¯à´¾à´®à´±à´¯àµ‹, à´¸àµà´•à´¾à´¨à´±àµ‹ ഉപയോഗിചàµà´šàµ നിർമàµà´®à´¿à´šàµà´šà´ªàµà´ªàµ‹à´´àµ‹ ഡിജിറàµà´±àµˆà´¸àµ ചെയàµà´¤à´ªàµà´ªàµ‹à´´àµ‹ ചേർകàµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ അധികവിവരങàµà´™àµ¾ à´ˆ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´²àµà´£àµà´Ÿàµ. à´ˆ à´ªàµà´°à´®à´¾à´£à´‚ അതിനàµà´±àµ† ആദàµà´¯à´¸àµà´¥à´¿à´¤à´¿à´¯à´¿àµ½ നിനàµà´¨àµà´‚ മാറàµà´±à´¿à´¯à´¿à´Ÿàµà´Ÿàµà´£àµà´Ÿàµ†à´™àµà´•à´¿àµ½, à´šà´¿à´² വിവരങàµà´™àµ¾ ഇപàµà´ªàµ‹à´´àµà´³àµà´³ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤àµ† പൂർണàµà´£à´®à´¾à´¯à´¿ à´ªàµà´°à´¤à´¿à´¨à´¿à´§àµ€à´•à´°à´¿à´•àµà´•à´£à´®àµ†à´¨àµà´¨à´¿à´²àµà´².',
'metadata-expand' => 'അധികവിവരങàµà´™àµ¾ à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´•àµà´•àµà´•',
'metadata-collapse' => 'അധികവിവരങàµà´™àµ¾ മറയàµà´•àµà´•àµà´•',
-'metadata-fields' => 'à´ˆ സനàµà´¦àµ‡à´¶à´¤àµà´¤à´¿àµ½ തനàµà´¨à´¿à´Ÿàµà´Ÿàµà´³àµà´³ EXIF മെറàµà´±à´¾à´¡à´¾à´±àµà´± ഫീൽഡàµà´•àµ¾ à´šà´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† താളിൽ മെറàµà´±à´¾à´¡à´¾à´±àµà´± ടേബിൾ മറഞàµà´žà´¿à´°à´¿à´•àµà´•àµà´®àµà´ªàµ‹à´´àµà´‚ ദൃശàµà´¯à´®à´¾à´•àµà´‚. മറàµà´±àµà´³àµà´³ ഫീൽഡàµà´•àµ¾ à´¸àµà´µà´¤àµ‡ മറഞàµà´žà´¿à´°à´¿à´•àµà´•àµà´‚.
+'metadata-fields' => 'à´ˆ സനàµà´¦àµ‡à´¶à´¤àµà´¤à´¿àµ½ ഉൾപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´Ÿàµà´Ÿàµà´³àµà´³ à´šà´¿à´¤àµà´° മെറàµà´±à´¾à´¡àµ‡à´±àµà´±à´¾ ഫീൽഡàµà´•àµ¾, മെറàµà´±à´¾à´¡àµ‡à´±àµà´±à´¾ പടàµà´Ÿà´¿à´• à´šàµà´°àµà´™àµà´™à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ അവസàµà´¥à´¯à´¿à´²àµà´‚ ദൃശàµà´¯à´®à´¾à´•àµà´‚.
+മറàµà´±àµà´³àµà´³à´µ à´¸àµà´µà´¤àµ‡ മറയàµà´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´‚.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'വീതി',
@@ -2974,12 +3037,10 @@ $1',
'exif-ycbcrpositioning' => 'Y, C à´Žà´¨àµà´¨à´¿à´µà´¯àµà´Ÿàµ† à´¸àµà´¥à´¾à´¨à´¨à´¿àµ¼à´£àµà´£à´¯à´‚',
'exif-xresolution' => 'തിരശàµà´šàµ€à´¨ റെസലൂഷൻ',
'exif-yresolution' => 'ലംബ റെസലൂഷൻ',
-'exif-resolutionunit' => 'X, Y à´Žà´¨àµà´¨à´¿à´µà´¯àµà´Ÿàµ† à´µàµà´¯à´¤à´¿à´°à´¿à´•àµà´¤à´¤ à´à´•à´•à´‚',
'exif-stripoffsets' => 'à´šà´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† വിവര à´¸àµà´¥à´¾à´¨à´‚',
'exif-rowsperstrip' => 'ഓരോ à´¸àµâ€Œà´Ÿàµà´°à´¿à´ªàµà´ªà´¿à´²àµà´®àµà´³àµà´³ വരികളàµà´Ÿàµ† à´Žà´£àµà´£à´‚',
'exif-stripbytecounts' => 'ഓരോ à´šàµà´°àµà´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ à´–à´£àµà´¡à´¤àµà´¤à´¿à´²àµà´®àµà´³àµà´³ ബൈറàµà´±àµà´•àµ¾',
'exif-jpeginterchangeformatlength' => 'JPEG ഡാറàµà´±à´¯àµà´Ÿàµ† ബൈറàµà´±àµà´•àµ¾',
-'exif-transferfunction' => 'കൈമാറàµà´± രീതി',
'exif-whitepoint' => 'വൈറàµà´±àµ പോയിനàµà´±àµ à´•àµà´°àµ‹à´®à´¾à´±àµà´±à´¿à´¸à´¿à´±àµà´±à´¿',
'exif-referenceblackwhite' => 'à´•à´±àµà´ªàµà´ªàµà´‚ വെളàµà´ªàµà´ªàµà´‚ അവലംബിത മൂലàµà´¯à´™àµà´™à´³àµà´Ÿàµ† ജോഡി',
'exif-datetime' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµ മാറàµà´±à´‚ വരàµà´¤àµà´¤à´¿à´¯ തീയതിയàµà´‚ സമയവàµà´‚',
@@ -2996,7 +3057,6 @@ $1',
'exif-compressedbitsperpixel' => 'à´šà´¿à´¤àµà´°à´‚ à´šàµà´°àµà´•àµà´•àµà´µà´¾à´¨àµà´ªà´¯àµ‹à´—à´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ മാർഗàµà´—à´‚',
'exif-pixelydimension' => 'à´šà´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† വീതി',
'exif-pixelxdimension' => 'à´šà´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† ഉയരം',
-'exif-makernote' => 'നിർമàµà´®à´¾à´¤à´¾à´•àµà´•à´³àµà´Ÿàµ† à´•àµà´±à´¿à´ªàµà´ªàµà´•àµ¾',
'exif-usercomment' => 'ഉപയോകàµà´¤à´¾à´µà´¿à´¨àµà´±àµ† à´•àµà´±à´¿à´ªàµà´ªàµà´•àµ¾',
'exif-relatedsoundfile' => 'ഇതàµà´®à´¾à´¯à´¿ ബനàµà´§à´®àµà´³àµà´³ ഓഡിയോ à´ªàµà´°à´®à´¾à´£à´‚',
'exif-datetimeoriginal' => 'ഡാറàµà´± സൃഷàµà´Ÿà´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ തീയതിയàµà´‚ സമയവàµà´‚',
@@ -3010,7 +3070,6 @@ $1',
'exif-exposureprogram' => 'à´Žà´•àµà´¸àµà´ªàµ‹à´·àµ¼ à´ªàµà´°àµ‹à´—àµà´°à´¾à´‚',
'exif-spectralsensitivity' => 'വർണàµà´£à´°à´¾à´œà´¿ സംവേദനതàµà´µà´‚',
'exif-isospeedratings' => 'à´.à´Žà´¸àµ.à´’. വേഗതയàµà´Ÿàµ† മൂലàµà´¯à´®à´¤à´¿à´ªàµà´ªàµ',
-'exif-oecf' => 'à´’à´ªàµà´±àµà´±àµ‹à´‡à´²à´•àµà´Ÿàµà´°àµ‹à´£à´¿à´•àµ പരിവർതàµà´¤à´¨ ഘടകം',
'exif-shutterspeedvalue' => 'അപെകàµà´¸àµ à´·à´Ÿàµà´Ÿàµ¼ à´¸àµà´ªàµ€à´¡àµ',
'exif-aperturevalue' => 'അപെകàµà´¸àµ à´…à´ªàµà´ªàµ†àµ¼à´šàµà´šàµ¼',
'exif-brightnessvalue' => 'അപെകàµà´¸àµ à´¬àµà´°àµˆà´±àµà´±àµà´¨àµ†à´¸àµà´¸àµ',
@@ -3023,7 +3082,6 @@ $1',
'exif-focallength' => 'ലെൻസിനàµà´±àµ† ഫോകàµà´•àµ½ ദൂരം',
'exif-subjectarea' => 'വസàµà´¤àµà´µà´¿à´¨àµà´±àµ† വിസàµà´¤àµƒà´¤à´¿',
'exif-flashenergy' => 'à´«àµà´²à´¾à´·àµ എനർജി',
-'exif-spatialfrequencyresponse' => 'à´¸àµà´¥à´¾à´¨à´¸à´‚ബനàµà´§à´¿à´¯à´¾à´¯ ആവൃതി à´ªàµà´°à´¤à´¿à´•à´°à´£à´‚',
'exif-focalplanexresolution' => 'ഫോകàµà´•àµ½ തലം X നൽകàµà´¨àµà´¨ à´µàµà´¯à´¤à´¿à´°à´¿à´•àµà´¤à´¤',
'exif-focalplaneyresolution' => 'ഫോകàµà´•àµ½ തലം Y നൽകàµà´¨àµà´¨ à´µàµà´¯à´¤à´¿à´°à´¿à´•àµà´¤à´¤',
'exif-focalplaneresolutionunit' => 'ഫോകàµà´•àµ½ തലം à´µàµà´¯à´¤à´¿à´°à´¿à´•àµà´¤à´¤à´¯àµà´Ÿàµ† à´à´•à´•à´‚',
@@ -3032,7 +3090,6 @@ $1',
'exif-sensingmethod' => 'സം‌വേദന രീതി',
'exif-filesource' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† à´¸àµà´°àµ‹à´¤à´¸àµà´¸àµ',
'exif-scenetype' => 'ദൃശàµà´¯ തരം',
-'exif-cfapattern' => 'സി.à´Žà´«àµ.à´Ž. à´¶àµà´°àµ‡à´£à´¿',
'exif-customrendered' => 'ഇചàµà´›à´¾à´¨àµà´¸à´°à´£à´®àµà´³àµà´³ à´šà´¿à´¤àµà´° à´ªàµà´°à´•àµà´°à´¿à´¯',
'exif-exposuremode' => 'à´Žà´•àµà´¸àµà´ªàµ‹à´·àµ¼ മോഡàµ',
'exif-whitebalance' => 'വൈറàµà´±àµ ബാലൻസàµ',
@@ -3077,11 +3134,77 @@ $1',
'exif-gpsareainformation' => 'GPS à´ªàµà´°à´¦àµ‡à´¶à´¤àµà´¤à´¿à´¨àµà´±àµ† പേരàµâ€Œ',
'exif-gpsdatestamp' => 'GPS തീയതി',
'exif-gpsdifferential' => 'ജി.പി.à´Žà´¸àµ. à´µàµà´¯à´¤àµà´¯à´¾à´¸à´‚ ശരിയാകàµà´•àµ½',
+'exif-jpegfilecomment' => 'ജെപെഗൠപàµà´°à´®à´¾à´£à´•àµà´•àµà´±à´¿à´ªàµà´ªàµ',
+'exif-keywords' => 'അടയാളവാകàµà´•àµà´•àµ¾',
+'exif-worldregioncreated' => 'ലോകതàµà´¤à´¿àµ½ à´šà´¿à´¤àµà´°à´®àµ†à´Ÿàµà´¤àµà´¤ ഭാഗം',
+'exif-countrycreated' => 'à´šà´¿à´¤àµà´°à´®àµ†à´Ÿàµà´¤àµà´¤ രാജàµà´¯à´‚',
+'exif-countrycodecreated' => 'à´šà´¿à´¤àµà´°à´®àµ†à´Ÿàµà´¤àµà´¤ രാജàµà´¯à´¤àµà´¤à´¿à´¨àµà´±àµ† കോഡàµ',
+'exif-provinceorstatecreated' => 'à´šà´¿à´¤àµà´°à´®àµ†à´Ÿàµà´¤àµà´¤ ഭരണപàµà´°à´¦àµ‡à´¶à´‚ അഥവാ സംസàµà´¥à´¾à´¨à´‚',
+'exif-citycreated' => 'à´šà´¿à´¤àµà´°à´®àµ†à´Ÿàµà´¤àµà´¤ പടàµà´Ÿà´£à´‚',
+'exif-sublocationcreated' => 'പടàµà´Ÿà´£à´¤àµà´¤à´¿àµ½ à´šà´¿à´¤àµà´°à´®àµ†à´Ÿàµà´¤àµà´¤ ഭൂഭാഗം',
+'exif-worldregiondest' => 'ലോകഭൂഭാഗം à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
+'exif-countrydest' => 'രാജàµà´¯à´‚ à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
+'exif-countrycodedest' => 'à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ രാജàµà´¯à´¤àµà´¤à´¿à´¨àµà´±àµ† കോഡàµ',
+'exif-provinceorstatedest' => 'ഭരണപàµà´°à´¦àµ‡à´¶à´‚ അഥവാ സംസàµà´¥à´¾à´¨à´‚ à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
+'exif-citydest' => 'പടàµà´Ÿà´£à´‚ à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
+'exif-sublocationdest' => 'പടàµà´Ÿà´£à´¤àµà´¤à´¿à´¨àµà´±àµ† ഭാഗം à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ',
'exif-objectname' => 'ചെറിയ തലകàµà´•àµ†à´Ÿàµà´Ÿàµ',
+'exif-specialinstructions' => 'à´ªàµà´°à´¤àµà´¯àµ‡à´• നിർദàµà´¦àµ‡à´¶à´™àµà´™àµ¾',
+'exif-headline' => 'തലകàµà´•àµ†à´Ÿàµà´Ÿàµ',
+'exif-credit' => 'à´•à´Ÿà´ªàµà´ªà´¾à´Ÿàµ/നൽകിയയാൾ',
+'exif-source' => 'à´¸àµà´°àµ‹à´¤à´¸àµà´¸àµ',
+'exif-editstatus' => 'à´šà´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† à´Žà´¡à´¿à´±àµà´±àµ‹à´±à´¿à´¯àµ½ à´¸àµà´¥à´¿à´¤à´¿',
+'exif-urgency' => 'à´…à´¤àµà´¯à´¾à´µà´¶àµà´¯à´•à´¤',
+'exif-fixtureidentifier' => 'ദൃഢസàµà´¥à´¿à´¤à´¨à´¾à´®à´‚',
+'exif-locationdest' => 'à´šà´¿à´¤àµà´°àµ€à´•à´°à´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ à´ªàµà´°à´¦àµ‡à´¶à´‚',
+'exif-locationdestcode' => 'à´šà´¿à´¤àµà´°àµ€à´•à´°à´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ à´ªàµà´°à´¦àµ‡à´¶à´¤àµà´¤à´¿à´¨àµà´±àµ† കോഡàµ',
+'exif-objectcycle' => 'മീഡിയ ഉപയോഗികàµà´•à´¾àµ» ആഗàµà´°à´¹à´¿à´•àµà´•àµà´¨àµà´¨ സമയം',
+'exif-contact' => 'ബനàµà´§à´ªàµà´ªàµ†à´Ÿà´¾à´¨àµà´³àµà´³ വിവരങàµà´™àµ¾',
+'exif-writer' => 'à´Žà´´àµà´¤à´¿à´¯à´¤àµ',
+'exif-languagecode' => 'ഭാഷ',
+'exif-iimversion' => 'à´.à´.à´Žà´‚. പതിപàµà´ªàµ',
+'exif-iimcategory' => 'വർഗàµà´—à´‚',
+'exif-iimsupplementalcategory' => 'പൂരക വർഗàµà´—à´™àµà´™àµ¾',
+'exif-datetimeexpires' => 'ഇതിനൠശേഷമàµà´ªà´¯àµ‹à´—à´¿à´•àµà´•à´°àµà´¤àµ',
+'exif-datetimereleased' => 'à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´¿à´šàµà´šà´¤àµ',
+'exif-originaltransmissionref' => 'യഥാർതàµà´¥ à´ªàµà´°à´¸à´°à´£ à´ªàµà´°à´¦àµ‡à´¶à´¤àµà´¤à´¿à´¨àµà´±àµ† കോഡàµ',
+'exif-identifier' => 'തിരിചàµà´šà´±à´¿à´¯à´²à´Ÿà´¯à´¾à´³à´‚',
+'exif-lens' => 'ഉപയോഗിചàµà´š കാചം',
+'exif-serialnumber' => 'ഛായാഗàµà´°à´¾à´¹à´¿à´¯àµà´Ÿàµ† സീരിയൽ നമàµà´ªàµ¼',
+'exif-cameraownername' => 'ഛായാഗàµà´°à´¾à´¹à´¿à´¯àµà´Ÿàµ† ഉടമ',
+'exif-label' => 'തലകàµà´•àµà´±à´¿',
+'exif-datetimemetadata' => 'മെറàµà´±à´¾à´¡àµ‡à´±àµà´± അവസാനം à´ªàµà´¤àµà´•àµà´•à´¿à´¯ തീയതി',
+'exif-nickname' => 'à´šà´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† അനൗദàµà´¯àµ‹à´—à´¿à´• നാമം',
+'exif-rating' => 'നിലവാരമിടൽ (5-ൽ)',
+'exif-rightscertificate' => 'അവകാശകൈകാരàµà´¯ യോഗàµà´¯à´¤à´¾à´ªà´¤àµà´°à´‚',
+'exif-copyrighted' => 'പകർപàµà´ªà´µà´•à´¾à´¶ à´¸àµà´¥à´¿à´¤à´¿',
+'exif-copyrightowner' => 'പകർപàµà´ªà´µà´•à´¾à´¶ ഉടമ',
+'exif-usageterms' => 'ഉപയോഗ നിബനàµà´§à´¨à´•àµ¾',
+'exif-webstatement' => 'ഓൺലൈൻ പകർപàµà´ªà´µà´•à´¾à´¶à´•àµà´•àµà´±à´¿à´ªàµà´ªàµ',
+'exif-originaldocumentid' => 'യഥാർതàµà´¥ രേഖയàµà´Ÿàµ† അനനàµà´¯à´®à´¾à´¯ à´.à´¡à´¿.',
+'exif-licenseurl' => 'പകർപàµà´ªà´µà´•à´¾à´¶ à´…à´¨àµà´®à´¤à´¿à´¯àµà´Ÿàµ† യൂ.ആർ.എൽ.',
+'exif-morepermissionsurl' => 'മറàµà´±àµ à´…à´¨àµà´®à´¤à´¿à´¨àµ½à´•àµ½ വിവരങàµà´™àµ¾',
+'exif-attributionurl' => 'à´ˆ കൃതി à´ªàµà´¨à´°àµà´ªà´¯àµ‹à´—à´¿à´•àµà´•àµà´®àµà´ªàµ‹àµ¾, ദയവായി ഇവിടേയàµà´•àµà´•àµ à´•à´£àµà´£à´¿ ചേർകàµà´•àµà´•',
+'exif-preferredattributionname' => 'à´ˆ കൃതി à´ªàµà´¨à´°àµà´ªà´¯àµ‹à´—à´¿à´•àµà´•àµà´®àµà´ªàµ‹àµ¾ ദയവായി à´•à´Ÿà´ªàµà´ªà´¾à´Ÿàµ നൽകàµà´•',
+'exif-pngfilecomment' => 'പി.എൻ.ജി. à´ªàµà´°à´®à´¾à´£à´•àµà´•àµà´±à´¿à´ªàµà´ªàµ',
+'exif-disclaimer' => 'നിരാകരണം',
+'exif-contentwarning' => 'ഉളàµà´³à´Ÿà´•àµà´• à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ',
+'exif-giffilecomment' => 'ജിഫൠപàµà´°à´®à´¾à´£à´•àµà´•àµà´±à´¿à´ªàµà´ªàµ',
+'exif-intellectualgenre' => 'ഇനതàµà´¤à´¿à´¨àµà´±àµ† തരം',
+'exif-subjectnewscode' => 'വിഷയകോഡàµ',
+'exif-scenecode' => 'à´.പി.à´±àµà´±à´¿.സി. à´°à´‚à´— കോഡàµ',
+'exif-event' => 'à´šà´¿à´¤àµà´°àµ€à´•à´°à´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ സംഭവം',
+'exif-organisationinimage' => 'à´šà´¿à´¤àµà´°àµ€à´•à´°à´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ സംഘടന',
+'exif-personinimage' => 'à´šà´¿à´¤àµà´°àµ€à´•à´°à´¿à´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿ à´µàµà´¯à´•àµà´¤à´¿',
+'exif-originalimageheight' => 'വെടàµà´Ÿà´¿à´¯àµ†à´Ÿàµà´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµ à´®àµà´®àµà´ªàµ à´šà´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† ഉയരം',
+'exif-originalimagewidth' => 'വെടàµà´Ÿà´¿à´¯àµ†à´Ÿàµà´•àµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµ à´®àµà´®àµà´ªàµ à´šà´¿à´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† വീതി',
# EXIF attributes
'exif-compression-1' => 'à´šàµà´°àµà´•àµà´•à´¾à´¤àµà´¤à´¤àµ',
+'exif-copyrighted-true' => 'പകർപàµà´ªà´µà´•à´¾à´¶à´¸à´‚à´°à´•àµà´·à´¿à´¤à´‚',
+'exif-copyrighted-false' => 'പൊതàµà´¸à´žàµà´šà´¯à´‚',
+
'exif-unknowndate' => 'തീയതി à´…à´œàµà´žà´¾à´¤à´‚',
'exif-orientation-1' => 'സാധാരണം',
@@ -3209,6 +3332,10 @@ $1',
'exif-gpslongitude-e' => 'à´•à´¿à´´à´•àµà´•àµ‡ രേഖാംശം',
'exif-gpslongitude-w' => 'പടിഞàµà´žà´¾à´±àµ† രേഖാംശം',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => 'സമàµà´¦àµà´°à´¨à´¿à´°à´ªàµà´ªà´¿à´¨àµ {{PLURAL:$1|ഒരൠമീറàµà´±àµ¼|$1 മീറàµà´±àµ¼}} ഉപരി',
+'exif-gpsaltitude-below-sealevel' => 'സമàµà´¦àµà´°à´¨à´¿à´°à´ªàµà´ªà´¿à´¨àµ {{PLURAL:$1|ഒരൠമീറàµà´±àµ¼|$1 മീറàµà´±àµ¼}} താഴെ',
+
'exif-gpsstatus-a' => 'കണകàµà´•àµ†à´Ÿàµà´ªàµà´ªàµ à´ªàµà´°àµ‹à´—മികàµà´•àµà´¨àµà´¨àµ',
'exif-gpsstatus-v' => 'അളവàµà´•à´³àµà´Ÿàµ† പരസàµà´ªà´°à´ªàµà´°à´¯àµ‹à´—à´•àµà´·à´®à´¤',
@@ -3220,21 +3347,72 @@ $1',
'exif-gpsspeed-m' => 'മൈലàµà´•àµ¾/മണികàµà´•àµ‚ർ',
'exif-gpsspeed-n' => 'നോടàµà´Ÿàµà´•àµ¾ (Knots)',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'കിലോമീറàµà´±àµ¼',
+'exif-gpsdestdistance-m' => 'മൈൽ',
+'exif-gpsdestdistance-n' => 'നോടàµà´Ÿà´¿à´•àµà´•àµ½ മൈൽ',
+
+'exif-gpsdop-excellent' => 'à´’à´¨àµà´¨à´¾à´¨àµà´¤à´°à´‚ ($1)',
+'exif-gpsdop-good' => 'കൊളàµà´³à´¾à´‚ ($1)',
+'exif-gpsdop-moderate' => 'ശരാശരി ($1)',
+'exif-gpsdop-fair' => 'തരകàµà´•àµ‡à´Ÿà´¿à´²àµà´² ($1)',
+'exif-gpsdop-poor' => 'മോശം ($1)',
+
+'exif-objectcycle-a' => 'രാവിലെ മാതàµà´°à´‚',
+'exif-objectcycle-p' => 'ഉചàµà´šà´•à´´à´¿à´žàµà´žàµ മാതàµà´°à´‚',
+'exif-objectcycle-b' => 'രാവിലെയàµà´‚ വൈകàµà´¨àµà´¨àµ‡à´°à´µàµà´‚',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'ശരികàµà´•àµà´³àµà´³ ദിശ',
'exif-gpsdirection-m' => 'കാനàµà´¤à´¿à´• ദിശ',
+'exif-ycbcrpositioning-1' => 'മദàµà´§àµà´¯à´¤àµà´¤à´¿à´²à´¾à´•àµà´•à´¿à´¯à´¤àµ',
+
+'exif-dc-contributor' => 'സംഭാവകർ',
+'exif-dc-coverage' => 'മീഡിയയàµà´Ÿàµ† à´¸àµà´¥à´² à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ കാലസംബനàµà´§à´¿à´¯à´¾à´¯ ഉപയോഗസാദàµà´§àµà´¯à´¤',
+'exif-dc-date' => 'തീയതി(കൾ)',
+'exif-dc-publisher' => 'à´ªàµà´°à´¸à´¾à´§à´•(ൻ)',
+'exif-dc-relation' => 'ബനàµà´§à´ªàµà´ªàµ†à´Ÿàµà´Ÿ മീഡിയ',
+'exif-dc-rights' => 'അവകാശങàµà´™àµ¾',
+'exif-dc-source' => 'മീഡിയ à´¸àµà´°àµ‹à´¤à´¸àµà´¸àµ',
+'exif-dc-type' => 'മീഡിയ തരം',
+
+'exif-rating-rejected' => 'നിരസിചàµà´šàµ',
+
+'exif-isospeedratings-overflow' => '65535-നേകàµà´•à´¾àµ¾ കൂടàµà´¤àµ½',
+
+'exif-iimcategory-ace' => 'à´•à´², സാംസàµà´•à´¾à´°à´¿à´•à´‚, വിനോദം',
+'exif-iimcategory-clj' => 'à´•àµà´±àµà´±à´µàµà´‚ നിയമവàµà´‚',
+'exif-iimcategory-dis' => 'à´¦àµà´°à´¨àµà´¤à´™àµà´™à´³àµà´‚ അപകടങàµà´™à´³àµà´‚',
+'exif-iimcategory-fin' => 'സമàµà´ªà´¦àµâ€Œà´µàµà´¯à´µà´¸àµà´¥à´¯àµà´‚ à´µàµà´¯à´¾à´ªà´¾à´°à´µàµà´‚',
+'exif-iimcategory-edu' => 'വിദàµà´¯à´¾à´­àµà´¯à´¾à´¸à´‚',
+'exif-iimcategory-evn' => 'പരിസàµà´¥à´¿à´¤à´¿',
+'exif-iimcategory-hth' => 'ആരോഗàµà´¯à´‚',
+'exif-iimcategory-hum' => 'മാനàµà´·à´¿à´• താതàµà´ªà´°àµà´¯à´‚',
+'exif-iimcategory-lab' => 'തൊഴിൽ',
+'exif-iimcategory-lif' => 'ജീവിതരീതിയàµà´‚ വിശàµà´°à´®à´µàµ‡à´³à´¯àµà´‚',
+'exif-iimcategory-pol' => 'രാഷàµà´Ÿàµà´°àµ€à´¯à´‚',
+'exif-iimcategory-rel' => 'മതവàµà´‚ വിശàµà´µà´¾à´¸à´µàµà´‚',
+'exif-iimcategory-sci' => 'ശാസàµà´¤àµà´°à´µàµà´‚ സാങàµà´•àµ‡à´¤à´¿à´•à´µà´¿à´¦àµà´¯à´¯àµà´‚',
+'exif-iimcategory-soi' => 'സാമൂഹിക à´ªàµà´°à´¶àµà´¨à´™àµà´™àµ¾',
+'exif-iimcategory-spo' => 'കായികം',
+'exif-iimcategory-war' => 'à´¯àµà´¦àµà´§à´‚, പോരാടàµà´Ÿà´‚, à´…à´¸àµà´¥à´¿à´°à´¤',
+'exif-iimcategory-wea' => 'കാലാവസàµà´¥',
+
+'exif-urgency-normal' => 'സാധാരണം ($1)',
+'exif-urgency-low' => 'താഴàµâ€Œà´¨àµà´¨à´¤àµ ($1)',
+'exif-urgency-high' => 'ഉനàµà´¨à´¤à´‚ ($1)',
+'exif-urgency-other' => 'ഉപയോകàµà´¤àµƒ-നിർവചിത à´®àµàµ»à´—ണന ($1)',
+
# External editor support
'edit-externally' => 'à´ˆ à´ªàµà´°à´®à´¾à´£à´‚ ഒരൠബാഹàµà´¯ ആപàµà´²à´¿à´•àµà´•àµ‡à´·àµ» ഉപയോഗിചàµà´šàµ തിരàµà´¤àµà´¤àµà´•',
-'edit-externally-help' => '(കൂടàµà´¤àµ½ വിവരതàµà´¤à´¿à´¨àµ http://www.mediawiki.org/wiki/Manual:External_editors കാണàµà´•)',
+'edit-externally-help' => '(കൂടàµà´¤àµ½ വിവരതàµà´¤à´¿à´¨àµ //www.mediawiki.org/wiki/Manual:External_editors കാണàµà´•)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'à´Žà´²àµà´²à´¾à´‚',
-'imagelistall' => 'à´Žà´²àµà´²à´¾à´‚',
-'watchlistall2' => 'à´Žà´²àµà´²à´¾à´‚',
-'namespacesall' => 'à´Žà´²àµà´²à´¾à´‚',
-'monthsall' => 'à´Žà´²àµà´²à´¾à´‚',
-'limitall' => 'à´Žà´²àµà´²à´¾à´‚',
+'watchlistall2' => 'à´Žà´²àµà´²à´¾à´‚',
+'namespacesall' => 'à´Žà´²àµà´²à´¾à´‚',
+'monthsall' => 'à´Žà´²àµà´²à´¾à´‚',
+'limitall' => 'à´Žà´²àµà´²à´¾à´‚',
# E-mail address confirmation
'confirmemail' => 'à´‡-മെയിൽ വിലാസം à´¸àµà´¥à´¿à´°àµ€à´•à´°à´¿à´•àµà´•àµ½',
@@ -3307,17 +3485,24 @@ $1',
'trackbackdeleteok' => 'à´ˆ പിനàµà´¤àµà´Ÿà´°àµ½ വിജയകരമായി മായàµà´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
# Delete conflict
-'deletedwhileediting' => "'''à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ''': താങàµà´•àµ¾ തിരàµà´¤àµà´¤àµà´µà´¾àµ» à´¤àµà´Ÿà´™àµà´™à´¿à´¯ ശേഷം താൾ മായàµà´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ!",
-'confirmrecreate' => "താങàµà´•àµ¾ à´ˆ താൾ തിരàµà´¤àµà´¤à´¾àµ» à´¤àµà´Ÿà´™àµà´™à´¿à´¯à´¤à´¿à´¨àµà´¶àµ‡à´·à´‚ [[User:$1|$1]] ([[User talk:$1|talk]]) à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µàµ ഇങàµà´™à´¨àµ† ഒരൠകാരണം നൽകി à´ˆ താൾ നീകàµà´•à´‚ ചെയàµà´¤àµ:
+'deletedwhileediting' => "'''à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ''': താങàµà´•àµ¾ തിരàµà´¤àµà´¤àµà´µà´¾àµ» à´¤àµà´Ÿà´™àµà´™à´¿à´¯ ശേഷം താൾ മായàµà´•àµà´•à´ªàµà´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ!",
+'confirmrecreate' => "താങàµà´•àµ¾ à´ˆ താൾ തിരàµà´¤àµà´¤à´¾àµ» à´¤àµà´Ÿà´™àµà´™à´¿à´¯à´¤à´¿à´¨àµà´¶àµ‡à´·à´‚ [[User:$1|$1]] ([[User talk:$1|talk]]) à´Žà´¨àµà´¨ ഉപയോകàµà´¤à´¾à´µàµ ഇങàµà´™à´¨àµ† ഒരൠകാരണം നൽകി à´ˆ താൾ നീകàµà´•à´‚ ചെയàµà´¤àµ:
: ''$2''
ദയവായി താൾ à´ªàµà´¨à´ƒà´¸àµƒà´·àµà´Ÿà´¿à´•àµà´•àµ‡à´£àµà´Ÿà´¤àµà´£àµà´Ÿàµ‹ à´Žà´¨àµà´¨àµ à´¸àµà´¥à´¿à´°àµ€à´•à´°à´¿à´•àµà´•àµà´•.",
-'recreate' => 'à´ªàµà´¨à´ƒà´¸àµƒà´·àµà´Ÿà´¿à´•àµà´•àµà´•',
+'confirmrecreate-noreason' => 'താങàµà´•àµ¾ തിരàµà´¤àµà´¤à´¾à´¨à´¾à´°à´‚à´­à´¿à´šàµà´šà´¤à´¿à´¨àµ ശേഷം, ഉപയോകàµà´¤à´¾à´µàµ [[User:$1|$1]] ([[User talk:$1|സംവാദം]]) à´ˆ താൾ മായàµà´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. à´ˆ താൾ à´ªàµà´¨à´ƒà´¸àµƒà´·àµà´Ÿà´¿à´•àµà´•à´£à´‚ à´Žà´¨àµà´¨à´¤àµ à´¸àµà´¥à´¿à´°àµ€à´•à´°à´¿à´•àµà´•àµà´•.',
+'recreate' => 'à´ªàµà´¨à´ƒà´¸àµƒà´·àµà´Ÿà´¿à´•àµà´•àµà´•',
# action=purge
'confirm_purge_button' => 'ശരി',
'confirm-purge-top' => 'à´ˆ താളിനàµà´±àµ† കാഷെ à´•àµà´²àµ€à´¯àµ¼ ചെയàµà´¯à´Ÿàµà´Ÿàµ†?',
'confirm-purge-bottom' => 'താൾ à´¶àµà´¦àµà´§àµ€à´•à´°à´¿à´•àµà´•àµà´®àµà´ªàµ‹àµ¾ കാഷെ ഒഴിവാകàµà´•àµà´•à´¯àµà´‚, à´à´±àµà´±à´µàµà´‚ à´ªàµà´¤à´¿à´¯ പതിപàµà´ªàµ à´ªàµà´°à´¤àµà´¯à´•àµà´·à´ªàµà´ªàµ†à´Ÿà´¾àµ» സമàµà´®àµ¼à´¦àµà´¦à´‚ ചെലàµà´¤àµà´¤àµà´•à´¯àµà´‚ ചെയàµà´¯àµà´¨àµà´¨à´¤à´¾à´£àµ.',
+# action=watch/unwatch
+'confirm-watch-button' => 'ശരി',
+'confirm-watch-top' => 'à´ˆ താൾ താങàµà´•àµ¾ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯à´¿à´²àµ‡à´•àµà´•àµ ചേർകàµà´•à´Ÿàµà´Ÿàµ†?',
+'confirm-unwatch-button' => 'ശരി',
+'confirm-unwatch-top' => 'à´ˆ താൾ ഞാൻ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯à´¿àµ½à´¨à´¿à´¨àµà´¨àµà´‚ നീകàµà´•à´Ÿàµà´Ÿàµ†?',
+
# Multipage image navigation
'imgmultipageprev' => '↠മàµàµ»à´ªà´¤àµà´¤àµ† താൾ',
'imgmultipagenext' => 'à´…à´Ÿàµà´¤àµà´¤ താൾ →',
@@ -3358,14 +3543,14 @@ $1',
'watchlistedit-noitems' => 'താങàµà´•àµ¾ നിലവിൽ ഒരൠതാളàµà´‚ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨à´¿à´²àµà´².',
'watchlistedit-normal-title' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´• തിരàµà´¤àµà´¤àµà´•',
'watchlistedit-normal-legend' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯à´¿àµ½ നിനàµà´¨àµà´‚ ഒഴിവാകàµà´•àµà´•',
-'watchlistedit-normal-explain' => "താങàµà´•àµ¾ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•àµ¾ താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. നീകàµà´•à´‚ ചെയàµà´¯àµ‡à´£àµà´Ÿà´µ തിരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤ ശേഷം '''{{int:Watchlistedit-normal-submit}}''' à´Žà´¨àµà´¨ ബടàµà´Ÿà´£à´¿àµ½ ഞെകàµà´•à´¿à´¯à´¾àµ½ നീകàµà´•à´‚ ചെയàµà´¯à´ªàµà´ªàµ†à´Ÿàµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ. താങàµà´•àµ¾à´•àµà´•àµ [[Special:Watchlist/raw|പടàµà´Ÿà´¿à´•à´¯àµà´Ÿàµ† മൂല രൂപം]] തിരàµà´¤àµà´¤àµà´•à´¯àµà´‚ ചെയàµà´¯à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ.",
+'watchlistedit-normal-explain' => "താങàµà´•àµ¾ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•àµ¾ താഴെ കൊടàµà´¤àµà´¤à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. നീകàµà´•à´‚ ചെയàµà´¯àµ‡à´£àµà´Ÿà´µ തിരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤ ശേഷം '''{{int:Watchlistedit-normal-submit}}''' à´Žà´¨àµà´¨ ബടàµà´Ÿà´£à´¿àµ½ ഞെകàµà´•à´¿à´¯à´¾àµ½ നീകàµà´•à´‚ ചെയàµà´¯à´ªàµà´ªàµ†à´Ÿàµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ. താങàµà´•àµ¾à´•àµà´•àµ [[Special:EditWatchlist/raw|പടàµà´Ÿà´¿à´•à´¯àµà´Ÿàµ† മൂല രൂപം]] തിരàµà´¤àµà´¤àµà´•à´¯àµà´‚ ചെയàµà´¯à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ.",
'watchlistedit-normal-submit' => 'തിരഞàµà´žàµ†à´Ÿàµà´¤àµà´¤à´µ നീകàµà´•àµà´•',
'watchlistedit-normal-done' => '{{PLURAL:$1|ഒരൠതാൾ|$1 താളàµà´•àµ¾}} താങàµà´•àµ¾ à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯à´¿àµ½ നിനàµà´¨àµà´‚ ഒഴിവാകàµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ:',
'watchlistedit-raw-title' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯àµà´Ÿàµ† മൂലരൂപം തിരàµà´¤àµà´¤àµà´•',
'watchlistedit-raw-legend' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯àµà´Ÿàµ† മൂലരൂപം തിരàµà´¤àµà´¤àµà´•',
'watchlistedit-raw-explain' => 'താങàµà´•à´³àµà´Ÿàµ† à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´•à´¯à´¿à´²àµà´³àµà´³ താളàµà´•àµ¾ താഴെ കാണിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. ഒരൠവരിയിൽ ഒരൠതാൾ മാതàµà´°à´‚ വരതàµà´¤à´•àµà´• രീതിയിൽ à´ˆ പടàµà´Ÿà´¿à´• തിരàµà´¤àµà´¤à´¿ താളàµà´•àµ¾ കൂടàµà´Ÿà´¿à´šàµà´šàµ‡àµ¼à´•àµà´•àµà´•à´¯àµ‹ ഒഴിവാകàµà´•àµà´•à´¯àµ‹ ചെയàµà´¯à´¾à´‚. തിരàµà´¤àµà´¤àµ½ പൂർതàµà´¤à´¿à´¯à´¾à´¯à´¾àµ½ "{{int:Watchlistedit-raw-submit}}"à´Žà´¨àµà´¨ ബടàµà´Ÿàµ» ഞെകàµà´•àµà´•.
-[[Special:Watchlist/edit|à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളിനàµà´±àµ† പടàµà´Ÿà´¿à´• തിരàµà´¤àµà´¤àµà´•]] à´Žà´¨àµà´¨ താൾ ഉപയോഗിചàµà´šàµà´‚ താങàµà´•àµ¾à´•àµà´•àµ പടàµà´Ÿà´¿à´• à´ªàµà´¤àµà´•àµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ.',
+[[Special:EditWatchlist|à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളിനàµà´±àµ† പടàµà´Ÿà´¿à´• തിരàµà´¤àµà´¤àµà´•]] à´Žà´¨àµà´¨ താൾ ഉപയോഗിചàµà´šàµà´‚ താങàµà´•àµ¾à´•àµà´•àµ പടàµà´Ÿà´¿à´• à´ªàµà´¤àµà´•àµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ.',
'watchlistedit-raw-titles' => 'തലകàµà´•àµ†à´Ÿàµà´Ÿàµà´•àµ¾:',
'watchlistedit-raw-submit' => 'à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´• à´ªàµà´¤àµà´•àµà´•àµà´•',
'watchlistedit-raw-done' => 'താങàµà´•à´³àµà´Ÿàµ† à´¶àµà´°à´¦àµà´§à´¿à´•àµà´•àµà´¨àµà´¨ താളàµà´•à´³àµà´Ÿàµ† പടàµà´Ÿà´¿à´• à´ªàµà´¤àµà´•àµà´•à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ.',
@@ -3382,33 +3567,33 @@ $1',
'duplicate-defaultsort' => '\'\'\'à´®àµà´¨àµà´¨à´±à´¿à´¯à´¿à´ªàµà´ªàµ:\'\'\' à´•àµà´°à´®à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¾à´¨àµà´³àµà´³ ചാവിയായ "$2" à´®àµà´®àµà´ªàµ à´•àµà´°à´®à´ªàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¾à´¨àµà´³àµà´³ ചാവിയായിരàµà´¨àµà´¨ "$1" à´Žà´¨àµà´¨à´¤à´¿à´¨àµ† അതിലംഘികàµà´•àµà´¨àµà´¨àµ.',
# Special:Version
-'version' => 'പതിപàµà´ªàµ',
-'version-extensions' => 'ഇൻസàµà´±àµà´±àµ‹àµ¾ ചെയàµà´¤à´¿à´Ÿàµà´Ÿàµà´³àµà´³ à´…à´¨àµà´¬à´¨àµà´§à´™àµà´™àµ¾',
-'version-specialpages' => 'à´ªàµà´°à´¤àµà´¯àµ‡à´• താളàµà´•àµ¾',
-'version-parserhooks' => 'പാഴàµâ€Œà´¸àµ¼ കൊളàµà´¤àµà´¤àµà´•àµ¾',
-'version-variables' => 'à´šà´°à´™àµà´™àµ¾',
-'version-skins' => 'ദൃശàµà´¯à´°àµ‚പങàµà´™àµ¾',
-'version-other' => 'മറàµà´±àµà´³àµà´³à´µ',
-'version-mediahandlers' => 'മീഡിയ കൈകാരàµà´¯àµ‹à´ªà´•à´°à´£à´™àµà´™àµ¾',
-'version-hooks' => 'കൊളàµà´¤àµà´¤àµà´•àµ¾',
-'version-extension-functions' => 'à´…à´¨àµà´¬à´¨àµà´§à´™àµà´™à´³àµà´Ÿàµ† കർതàµà´¤à´µàµà´¯à´™àµà´™àµ¾',
-'version-parser-extensiontags' => 'പാഴàµâ€Œà´¸àµ¼ à´…à´¨àµà´¬à´¨àµà´§ à´±àµà´±à´¾à´—àµà´•àµ¾',
-'version-parser-function-hooks' => 'പാഴàµâ€Œà´¸àµ¼ à´«à´™àµà´·àµ» കൊളàµà´¤àµà´¤àµà´•àµ¾',
-'version-skin-extension-functions' => 'ദൃശàµà´¯à´°àµ‚പാനàµà´¬à´¨àµà´§à´™àµà´™à´³àµà´Ÿàµ† കർതàµà´¤à´µàµà´¯à´™àµà´™àµ¾',
-'version-hook-name' => 'കൊളàµà´¤àµà´¤à´¿à´¨àµà´±àµ† പേരàµ',
-'version-hook-subscribedby' => 'വരികàµà´•à´¾à´°à´¨à´¾à´¯à´¤àµ',
-'version-version' => '(പതിപàµà´ªàµ $1)',
-'version-license' => 'à´…à´¨àµà´®à´¤à´¿',
-'version-poweredby-credits' => "à´ˆ വികàµà´•à´¿ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¿à´•àµà´•à´¾àµ» '''[http://www.mediawiki.org/ മീഡിയവികàµà´•à´¿]''' ഉപയോഗികàµà´•àµà´¨àµà´¨àµ. പകർപàµà´ªà´µà´•à´¾à´¶à´‚ © 2001-$1 $2.",
-'version-poweredby-others' => 'മറàµà´±àµà´³àµà´³à´µàµ¼',
-'version-license-info' => 'മീഡിയവികàµà´•à´¿ ഒരൠസàµà´µà´¤à´¨àµà´¤àµà´° സോഫàµà´±àµà´±àµâ€Œà´µàµ‡à´±à´¾à´£àµ; à´¸àµà´µà´¤à´¨àµà´¤àµà´° സോഫàµà´±àµà´±àµâ€Œà´µàµ‡àµ¼ ഫൗണàµà´Ÿàµ‡à´·àµ» à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´¿à´šàµà´šà´¿à´Ÿàµà´Ÿàµà´³àµà´³ à´—àµà´¨àµ സാർവàµà´µà´œà´¨à´¿à´• à´…à´¨àµà´µà´¾à´¦à´ªà´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† പതിപàµà´ªàµ 2 à´ªàµà´°à´•à´¾à´°à´®àµ‹, à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ (താങàµà´•à´³àµà´Ÿàµ† ഇചàµà´›à´¾à´¨àµà´¸à´°à´£à´‚) പിനàµà´¨àµ€à´Ÿàµ à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´¿à´šàµà´š à´à´¤àµ†à´™àµà´•à´¿à´²àµà´‚ പതിപàµà´ªàµ à´ªàµà´°à´•à´¾à´°à´®àµ‹ താങàµà´•àµ¾à´•àµà´•à´¿à´¤àµ à´ªàµà´¨àµ¼à´µà´¿à´¤à´°à´£à´‚ ചെയàµà´¯à´¾à´¨àµà´‚ à´’à´ªàµà´ªà´‚/à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ മാറàµà´±à´™àµà´™àµ¾ വരàµà´¤àµà´¤à´¾à´¨àµà´‚ സാധികàµà´•àµà´¨àµà´¨à´¤à´¾à´£àµ.
+'version' => 'പതിപàµà´ªàµ',
+'version-extensions' => 'ഇൻസàµà´±àµà´±àµ‹àµ¾ ചെയàµà´¤à´¿à´Ÿàµà´Ÿàµà´³àµà´³ à´…à´¨àµà´¬à´¨àµà´§à´™àµà´™àµ¾',
+'version-specialpages' => 'à´ªàµà´°à´¤àµà´¯àµ‡à´• താളàµà´•àµ¾',
+'version-parserhooks' => 'പാഴàµâ€Œà´¸àµ¼ കൊളàµà´¤àµà´¤àµà´•àµ¾',
+'version-variables' => 'à´šà´°à´™àµà´™àµ¾',
+'version-antispam' => 'പാഴെഴàµà´¤àµà´¤àµ തടയൽ',
+'version-skins' => 'ദൃശàµà´¯à´°àµ‚പങàµà´™àµ¾',
+'version-other' => 'മറàµà´±àµà´³àµà´³à´µ',
+'version-mediahandlers' => 'മീഡിയ കൈകാരàµà´¯àµ‹à´ªà´•à´°à´£à´™àµà´™àµ¾',
+'version-hooks' => 'കൊളàµà´¤àµà´¤àµà´•àµ¾',
+'version-extension-functions' => 'à´…à´¨àµà´¬à´¨àµà´§à´™àµà´™à´³àµà´Ÿàµ† കർതàµà´¤à´µàµà´¯à´™àµà´™àµ¾',
+'version-parser-extensiontags' => 'പാഴàµâ€Œà´¸àµ¼ à´…à´¨àµà´¬à´¨àµà´§ à´±àµà´±à´¾à´—àµà´•àµ¾',
+'version-parser-function-hooks' => 'പാഴàµâ€Œà´¸àµ¼ à´«à´™àµà´·àµ» കൊളàµà´¤àµà´¤àµà´•àµ¾',
+'version-hook-name' => 'കൊളàµà´¤àµà´¤à´¿à´¨àµà´±àµ† പേരàµ',
+'version-hook-subscribedby' => 'വരികàµà´•à´¾à´°à´¨à´¾à´¯à´¤àµ',
+'version-version' => '(പതിപàµà´ªàµ $1)',
+'version-license' => 'à´…à´¨àµà´®à´¤à´¿',
+'version-poweredby-credits' => "à´ˆ വികàµà´•à´¿ à´ªàµà´°à´µàµ¼à´¤àµà´¤à´¿à´•àµà´•à´¾àµ» '''[//www.mediawiki.org/ മീഡിയവികàµà´•à´¿]''' ഉപയോഗികàµà´•àµà´¨àµà´¨àµ. പകർപàµà´ªà´µà´•à´¾à´¶à´‚ © 2001-$1 $2.",
+'version-poweredby-others' => 'മറàµà´±àµà´³àµà´³à´µàµ¼',
+'version-license-info' => 'മീഡിയവികàµà´•à´¿ ഒരൠസàµà´µà´¤à´¨àµà´¤àµà´° സോഫàµà´±àµà´±àµâ€Œà´µàµ‡à´±à´¾à´£àµ; à´¸àµà´µà´¤à´¨àµà´¤àµà´° സോഫàµà´±àµà´±àµâ€Œà´µàµ‡àµ¼ ഫൗണàµà´Ÿàµ‡à´·àµ» à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´¿à´šàµà´šà´¿à´Ÿàµà´Ÿàµà´³àµà´³ à´—àµà´¨àµ സാർവàµà´µà´œà´¨à´¿à´• à´…à´¨àµà´µà´¾à´¦à´ªà´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† പതിപàµà´ªàµ 2 à´ªàµà´°à´•à´¾à´°à´®àµ‹, à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ (താങàµà´•à´³àµà´Ÿàµ† ഇചàµà´›à´¾à´¨àµà´¸à´°à´£à´‚) പിനàµà´¨àµ€à´Ÿàµ à´ªàµà´°à´¸à´¿à´¦àµà´§àµ€à´•à´°à´¿à´šàµà´š à´à´¤àµ†à´™àµà´•à´¿à´²àµà´‚ പതിപàµà´ªàµ à´ªàµà´°à´•à´¾à´°à´®àµ‹ താങàµà´•àµ¾à´•àµà´•à´¿à´¤àµ à´ªàµà´¨àµ¼à´µà´¿à´¤à´°à´£à´‚ ചെയàµà´¯à´¾à´¨àµà´‚ à´’à´ªàµà´ªà´‚/à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ മാറàµà´±à´™àµà´™àµ¾ വരàµà´¤àµà´¤à´¾à´¨àµà´‚ സാധികàµà´•àµà´¨àµà´¨à´¤à´¾à´£àµ.
മീഡിയവികàµà´•à´¿ താങàµà´•àµ¾à´•àµà´•àµà´ªà´•à´°à´¿à´•àµà´•àµà´®àµ†à´¨àµà´¨ à´ªàµà´°à´¤àµ€à´•àµà´·à´¯àµ‹à´Ÿàµ†à´¯à´¾à´£àµ വിതരണം ചെയàµà´¯àµà´¨àµà´¨à´¤àµ, പകàµà´·àµ‡ യാതൊരൠഗàµà´£à´®àµ‡à´¨àµà´®àµ‹à´¤àµà´¤à´°à´µà´¾à´¦à´¿à´¤àµà´¤à´µàµà´‚ വഹികàµà´•àµà´¨àµà´¨à´¿à´²àµà´²; à´µàµà´¯à´¾à´ªà´¾à´°à´¯àµ‹à´—àµà´¯à´®àµ†à´¨àµà´¨àµ‹ à´ªàµà´°à´¤àµà´¯àµ‡à´• ഉപയോഗതàµà´¤à´¿à´¨àµ à´…à´¨àµà´¯àµ‹à´œàµà´¯à´®àµ†à´¨àµà´¨àµ‹ ഉളàµà´³ യാതൊരൠഗàµà´£à´®àµ‡à´¨àµà´®àµ‹à´¤àµà´¤à´°à´µà´¾à´¦à´¿à´¤àµà´¤à´µàµà´‚ ഇതൠഉൾകàµà´•àµŠà´³àµà´³àµà´¨àµà´¨à´¿à´²àµà´². കൂടàµà´¤àµ½ വിവരങàµà´™àµ¾à´•àµà´•àµ à´—àµà´¨àµ സാർവàµà´µà´œà´¨à´¿à´• à´…à´¨àµà´µà´¾à´¦à´ªà´¤àµà´°à´‚ കാണàµà´•.
-à´ˆ à´ªàµà´°àµ‹à´—àµà´°à´¾à´®à´¿à´¨àµŠà´ªàµà´ªà´‚ [{{SERVER}}{{SCRIPTPATH}}/COPYING à´—àµà´¨àµ സാർവàµà´µà´œà´¨à´¿à´• à´…à´¨àµà´µà´¾à´¦à´ªà´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† ഒരൠപകർപàµà´ªàµ] താങàµà´•àµ¾à´•àµà´•àµ ലഭിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´‚; ഇലàµà´²àµ†à´™àµà´•à´¿àµ½ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA à´Žà´¨àµà´¨ വിലാസതàµà´¤à´¿à´²àµ†à´´àµà´¤àµà´• à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html à´…à´¨àµà´µà´¾à´¦à´ªà´¤àµà´°à´‚ ഓൺലൈനായി വായികàµà´•àµà´•].',
-'version-software' => 'ഇൻസàµà´±àµà´±àµ‹àµ¾ ചെയàµà´¤ സോഫàµà´±àµà´±àµâ€Œà´µàµ†à´¯àµ¼',
-'version-software-product' => 'സോഫàµà´±àµà´±àµâ€Œà´µàµ†à´¯àµ¼ ഉലàµà´ªàµà´ªà´¨àµà´¨à´‚',
-'version-software-version' => 'വിവരണം',
+à´ˆ à´ªàµà´°àµ‹à´—àµà´°à´¾à´®à´¿à´¨àµŠà´ªàµà´ªà´‚ [{{SERVER}}{{SCRIPTPATH}}/COPYING à´—àµà´¨àµ സാർവàµà´µà´œà´¨à´¿à´• à´…à´¨àµà´µà´¾à´¦à´ªà´¤àµà´°à´¤àµà´¤à´¿à´¨àµà´±àµ† ഒരൠപകർപàµà´ªàµ] താങàµà´•àµ¾à´•àµà´•àµ ലഭിചàµà´šà´¿à´°à´¿à´•àµà´•àµà´‚; ഇലàµà´²àµ†à´™àµà´•à´¿àµ½ Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA à´Žà´¨àµà´¨ വിലാസതàµà´¤à´¿à´²àµ†à´´àµà´¤àµà´• à´…à´²àµà´²àµ†à´™àµà´•à´¿àµ½ [//www.gnu.org/licenses/old-licenses/gpl-2.0.html à´…à´¨àµà´µà´¾à´¦à´ªà´¤àµà´°à´‚ ഓൺലൈനായി വായികàµà´•àµà´•].',
+'version-software' => 'ഇൻസàµà´±àµà´±àµ‹àµ¾ ചെയàµà´¤ സോഫàµà´±àµà´±àµâ€Œà´µàµ†à´¯àµ¼',
+'version-software-product' => 'സോഫàµà´±àµà´±àµâ€Œà´µàµ†à´¯àµ¼ ഉലàµà´ªàµà´ªà´¨àµà´¨à´‚',
+'version-software-version' => 'വിവരണം',
# Special:FilePath
'filepath' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´²àµ‡à´•àµà´•àµà´³àµà´³ വിലാസം',
@@ -3418,22 +3603,22 @@ $1',
à´šà´¿à´¤àµà´°à´™àµà´™àµ¾ പൂർണàµà´£ റെസലൂഷനോടൠകൂടി à´ªàµà´°à´¦àµ¼à´¶à´¿à´ªàµà´ªà´¿à´šàµà´šà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ. മറàµà´±àµà´³àµà´³ à´ªàµà´°à´®à´¾à´£ തരങàµà´™àµ¾ അതതൠപàµà´°àµ‹à´—àµà´°à´¾à´®à´¿àµ½ നേരിടàµà´Ÿàµ à´¤àµà´±à´•àµà´•à´¾à´µàµà´¨àµà´¨à´¤à´¾à´£àµâ€Œ.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'ഒരേ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† പലപകർപàµà´ªàµà´•à´³àµà´£àµà´Ÿàµ‹à´¯àµ†à´¨àµà´¨àµ തിരയàµà´•',
-'fileduplicatesearch-summary' => 'ഒരേ à´ªàµà´°à´®à´¾à´£à´‚ തനàµà´¨àµ† വിവിധപേരിലàµà´£àµà´Ÿàµ‹à´¯àµ†à´¨àµà´¨àµ ഹാഷൠവാലàµà´¯àµ‚വധിഷàµà´ à´¿à´¤à´®à´¾à´¯à´¿ തിരയàµà´•.
-
-à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† പേരàµâ€Œ "{{ns:file}}:" à´Žà´¨àµà´¨ പൂർവàµà´µà´ªà´¦à´®à´¿à´²àµà´²à´¾à´¤àµ† നൽകàµà´•.',
-'fileduplicatesearch-legend' => 'അപരനെ തിരയàµà´•',
-'fileduplicatesearch-filename' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† പേരàµ:',
-'fileduplicatesearch-submit' => 'തിരയൂ',
-'fileduplicatesearch-info' => '$1 × $2 ബിനàµà´¦àµ<br /> à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† വലിപàµà´ªà´‚: $3<br />മൈം തരം: $4',
-'fileduplicatesearch-result-1' => '"$1" à´Žà´¨àµà´¨ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµ സദൃശ അപരനിലàµà´².',
-'fileduplicatesearch-result-n' => '"$1" à´Žà´¨àµà´¨ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµ {{PLURAL:$2|ഒരൠസദൃശ അപരൻ|$2 സദൃശ അപരർ}} ഉണàµà´Ÿàµ.',
+'fileduplicatesearch' => 'ഒരേ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† പലപകർപàµà´ªàµà´•à´³àµà´£àµà´Ÿàµ‹à´¯àµ†à´¨àµà´¨àµ തിരയàµà´•',
+'fileduplicatesearch-summary' => 'ഒരേ à´ªàµà´°à´®à´¾à´£à´‚ തനàµà´¨àµ† വിവിധപേരിലàµà´£àµà´Ÿàµ‹à´¯àµ†à´¨àµà´¨àµ ഹാഷൠവാലàµà´¯àµ‚വധിഷàµà´ à´¿à´¤à´®à´¾à´¯à´¿ തിരയàµà´•.',
+'fileduplicatesearch-legend' => 'അപരനെ തിരയàµà´•',
+'fileduplicatesearch-filename' => 'à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† പേരàµ:',
+'fileduplicatesearch-submit' => 'തിരയൂ',
+'fileduplicatesearch-info' => '$1 × $2 ബിനàµà´¦àµ<br /> à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµà´±àµ† വലിപàµà´ªà´‚: $3<br />മൈം തരം: $4',
+'fileduplicatesearch-result-1' => '"$1" à´Žà´¨àµà´¨ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµ സദൃശ അപരനിലàµà´².',
+'fileduplicatesearch-result-n' => '"$1" à´Žà´¨àµà´¨ à´ªàµà´°à´®à´¾à´£à´¤àµà´¤à´¿à´¨àµ {{PLURAL:$2|ഒരൠസദൃശ അപരൻ|$2 സദൃശ അപരർ}} ഉണàµà´Ÿàµ.',
+'fileduplicatesearch-noresults' => '"$1" à´Žà´¨àµà´¨ പേരിൽ ഒരൠപàµà´°à´®à´¾à´£à´µàµà´‚ à´•à´£àµà´Ÿàµ†à´¤àµà´¤à´¾à´¨à´¾à´¯à´¿à´²àµà´².',
# Special:SpecialPages
'specialpages' => 'à´ªàµà´°à´¤àµà´¯àµ‡à´• താളàµà´•àµ¾',
'specialpages-note' => '----
-* സർവàµà´µàµ‹à´ªà´¯àµ‹à´— à´ªàµà´°à´¤àµà´¯àµ‡à´• താളàµà´•àµ¾.
-* <strong class="mw-specialpagerestricted">ഉപയോഗം പരിമിതപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ à´ªàµà´°à´¤àµà´¯àµ‡à´• താളàµà´•àµ¾.</strong>',
+* പൊതàµà´µàµ‡ ഉപയോഗികàµà´•àµà´¨àµà´¨ à´ªàµà´°à´¤àµà´¯àµ‡à´• താളàµà´•àµ¾.
+* <strong class="mw-specialpagerestricted">ഉപയോഗം പരിമിതപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨ à´ªàµà´°à´¤àµà´¯àµ‡à´• താളàµà´•àµ¾.</strong>
+* <span class="mw-specialpagecached">à´ªàµà´°à´¾à´¦àµ‡à´¶à´¿à´•à´®à´¾à´¯à´¿ സംഭരിചàµà´šàµà´ªà´¯àµ‹à´—à´¿à´•àµà´•àµà´¨àµà´¨ à´ªàµà´°à´¤àµà´¯àµ‡à´• താളàµà´•àµ¾.</span>',
'specialpages-group-maintenance' => 'പരിചരണം ആവശàµà´¯à´®à´¾à´¯à´µ',
'specialpages-group-other' => 'മറàµà´±àµ à´ªàµà´°à´¤àµà´¯àµ‡à´• താളàµà´•àµ¾',
'specialpages-group-login' => 'à´ªàµà´°à´µàµ‡à´¶à´¿à´•àµà´•àµà´• / à´…à´‚à´—à´¤àµà´µà´‚ à´Žà´Ÿàµà´•àµà´•àµà´•',
diff --git a/languages/messages/MessagesMn.php b/languages/messages/MessagesMn.php
index db1bdf88..3f2950f1 100644
--- a/languages/messages/MessagesMn.php
+++ b/languages/messages/MessagesMn.php
@@ -168,14 +168,6 @@ $messages = array(
'index-category' => 'ИндекÑлÑгдÑÑн хуудÑууд',
'noindex-category' => 'ИндекÑлÑгдÑÑгүй хуудÑууд',
-'mainpagetext' => "'''МедиаВики амжилттай Ñуулаа.'''",
-'mainpagedocfooter' => 'Вики программыг Ñ…ÑÑ€ÑглÑÑ… талаар заавар авахын тулд [http://meta.wikimedia.org/wiki/Help:Contents Ñ…ÑÑ€ÑглÑгчийн гарын авлага]-г Ò¯Ð·Ð½Ñ Ò¯Ò¯.
-
-== ЭхлÑÑ… ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Тохиргоо]
-* [http://www.mediawiki.org/wiki/Manual:FAQ МедиаВикигийн тогтмол тавигддаг аÑуултууд]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce МедиаВикигийн мÑдÑÑний мÑйл Ñвуулах жагÑаалт]',
-
'about' => 'Тухай',
'article' => 'ӨгүүлÑл',
'newwindow' => 'ï¼ˆÑˆÐ¸Ð½Ñ Ñ†Ð¾Ð½Ñ… нÑÑгдÑнÑ)',
@@ -226,7 +218,6 @@ $messages = array(
'history' => 'ХуудаÑны түүх',
'history_short' => 'Түүх',
'updatedmarker' => 'Ñүүлд зочилÑÐ½Ð¾Ð¾Ñ Ñ…Ð¾Ð¹Ñˆ шинÑчлÑгдÑÑн',
-'info_short' => 'ÐœÑдÑÑлÑл',
'printableversion' => 'Ð¥ÑвлÑÑ… хувилбар',
'permalink' => 'Байнгын холбооÑ',
'print' => 'Ð¥ÑвлÑÑ…',
@@ -415,12 +406,11 @@ $1',
'protectedinterface' => 'Ð­Ð½Ñ Ñ…ÑƒÑƒÐ´Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ñ‹Ð½ харагдах байдалд ашиглагддаг текÑтийг агуулдаг тул түгжигдÑÑн байна.',
'editinginterface' => "'''Ðнхаар''': Та программын харагдах байдалд ашиглагддаг текÑтийг агуулÑан хуудÑыг заÑварлах гÑж байна.
Ð­Ð½Ñ Ñ…ÑƒÑƒÐ´Ñанд өөрчлөлт оруулÑнаар буÑад Ñ…ÑÑ€ÑглÑгчдийн программын харагдах байдалд нөлөөлөх болно.
-Орчуулга хийх гÑж байгаа бол МедиаВикигийн орчуулгын Ñ‚Ó©Ñөл болох, [http://translatewiki.net/wiki/Main_Page?setlang=mn Бетавики]-г Ñ…ÑÑ€ÑглÑхийг Ñанал болгож байна.",
+Орчуулга хийх гÑж байгаа бол МедиаВикигийн орчуулгын Ñ‚Ó©Ñөл болох, [//translatewiki.net/wiki/Main_Page?setlang=mn Бетавики]-г Ñ…ÑÑ€ÑглÑхийг Ñанал болгож байна.",
'sqlhidden' => '(SQL илÑрц харагдахгүй байна)',
'cascadeprotected' => 'Ð­Ð½Ñ Ñ…ÑƒÑƒÐ´Ð°Ñ Ð½ÑŒ давхар хамгаалалттай дараах {{PLURAL:$1|хуудÑанд|хуудÑуудад}} орÑон тул заÑÐ²Ð°Ñ€Ð»Ð°Ð³Ð´Ð°Ñ…Ð°Ð°Ñ Ñ…Ð°Ð¼Ð³Ð°Ð°Ð»Ð°Ð³Ð´Ñан байна:
$2',
'namespaceprotected' => "Таньд '''$1''' нÑрний зай дахь хуудÑуудыг заÑварлах зөвшөөрөл байхгүй байна.",
-'customcssjsprotected' => 'Ð­Ð½Ñ Ñ…ÑƒÑƒÐ´Ð°Ñ Ó©Ó©Ñ€ Ñ…ÑÑ€ÑглÑгчийн хувийн тохиргоог агуулдаг тул та заÑварлах Ñрхгүй.',
'ns-specialprotected' => 'ТуÑгай хуудÑуудыг заÑварлах боломжгүй.',
'titleprotected' => "[[User:$1|$1]] нь ÑÐ½Ñ Ñ…ÑƒÑƒÐ´Ñыг Ò¯Ò¯ÑгÑÑ… Ñвдыг хорьжÑÑ.
Шалтгаан нь: ''$2''.",
@@ -477,7 +467,7 @@ $2',
'nosuchuser' => '"$1" нÑртÑй Ñ…ÑÑ€ÑглÑгч олдÑонгүй.
Ð¥ÑÑ€ÑглÑгчийн нÑрийн Ò¯Ñгүүд том жижгÑÑÑ€ бичÑÑн байдлаар Ó©Ó©Ñ€ байна.
Та зөв бичÑÑн ÑÑÑÑ…ÑÑ ÑˆÐ°Ð»Ð³Ð°Ñ…, ÑÑвÑл [[Special:UserLogin/signup| шинÑÑÑ€ Ð±Ò¯Ñ€Ñ‚Ð³Ò¯Ò¯Ð»Ð½Ñ Ò¯Ò¯]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" гÑÑÑн нÑртÑй Ñ…ÑÑ€ÑглÑгч байхгүй байна.
+'nosuchusershort' => '"$1" гÑÑÑн нÑртÑй Ñ…ÑÑ€ÑглÑгч байхгүй байна.
Ò®Ñгийн алдаагаа шалгана уу.',
'nouserspecified' => 'Та Ñ…ÑÑ€ÑглÑгчийн нÑÑ€ÑÑ Ð·Ð°Ð°Ð¶ өгөх Ñ…ÑÑ€ÑгтÑй.',
'login-userblocked' => 'ЭнÑÑ…Ò¯Ò¯ Ñ…ÑÑ€ÑглÑгчийг түгжÑÑн байна. ÐÑвтрÑÑ… боломжгүй.',
@@ -525,7 +515,7 @@ $2',
'loginlanguagelabel' => 'Ð¥Ñл: $1',
'suspicious-userlogout' => 'Таны гарах Ñ…Ò¯ÑÑлт нь ÑвдÑрхий хөтөч буюу кÑшлÑгч прокÑигоор ÑвуулÑан мÑÑ‚ харагдаж байгаа тул зөвшөөрÑөнгүй.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Ðууц үгÑÑ Ñолих',
'resetpass_announce' => 'Та мÑйлÑÑÑ€ илгÑÑгдÑÑн түр зуурын нууц үгÑÑÑ€ нÑвтÑрч орÑон байна
БүрÑн нÑвтÑÑ€ÑÑ…Ñд та Ñнд ÑˆÐ¸Ð½Ñ Ð½ÑƒÑƒÑ† үгÑÑ Ð¾Ñ€ÑƒÑƒÐ»Ð°Ñ… Ñ…ÑÑ€ÑгтÑй:',
@@ -543,6 +533,9 @@ $2',
Та аль Ñ…ÑдийнÑÑ Ð½ÑƒÑƒÑ† үгÑÑ ÑольÑон ÑÑвÑл түр зуурын нууц үг Ñ…Ò¯ÑÑÑн байна.',
'resetpass-temp-password' => 'Түр зуурын нууц үг:',
+# Special:PasswordReset
+'passwordreset-username' => 'Ð¥ÑÑ€ÑглÑгчийн нÑÑ€:',
+
# Edit page toolbar
'bold_sample' => 'ТодруулÑан бичиг',
'bold_tip' => 'ТодруулÑан бичиг',
@@ -554,8 +547,6 @@ $2',
'extlink_tip' => 'Гадны Ñ…Ð¾Ð»Ð±Ð¾Ð¾Ñ (ÑÑ…Ñнд нь http:// бичихÑÑ Ð¼Ð°Ñ€Ñ‚ÑƒÑƒÐ·Ð°Ð¹)',
'headline_sample' => 'Гарчигийн текÑÑ‚',
'headline_tip' => '2-р түвшний гарчиг',
-'math_sample' => 'Энд томъёогоо оруулна уу',
-'math_tip' => 'Математикийн томъёо (LaTeX)',
'nowiki_sample' => 'Энд Ñ…ÑлбÑршүүлÑÑгүй текÑÑ‚ÑÑ Ð¾Ñ€ÑƒÑƒÐ»Ð½Ð° уу',
'nowiki_tip' => 'Вики форматыг Ñ…ÑÑ€ÑглÑхгүй байх',
'image_sample' => 'жишÑÑ.jpg',
@@ -641,7 +632,7 @@ $2',
ÑÑвÑл [{{fullurl:{{FULLPAGENAME}}|action=edit}} ÑÐ½Ñ Ñ…ÑƒÑƒÐ´Ñыг заÑварлаж болно]</span>.',
'noarticletext-nopermission' => 'Одоогийн байдлаар ÑÐ½Ñ Ñ…ÑƒÑƒÐ´Ñанд текÑÑ‚ алга.
Та ÑнÑÑ…Ò¯Ò¯ [[Special:Search/{{PAGENAME}}|гарчигийг буÑад хуудÑÑƒÑƒÐ´Ð°Ð°Ñ Ñ…Ð°Ð¹Ñ…]], ÑÑвÑл <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} холбогдох Ð»Ð¾Ð³ÑƒÑƒÐ´Ð°Ð°Ñ Ñ…Ð°Ð¹Ð¶ болно]</span>.',
-'userpage-userdoesnotexist' => '"$1" Ñ…ÑÑ€ÑглÑгчийн бүртгÑл бүртгÑгдÑÑгүй байна. Та ÑÐ½Ñ Ñ…ÑƒÑƒÐ´Ñыг Ò¯Ò¯ÑгÑÑ…/заÑварлах тухайгаа дахин тунгааж бодно уу.',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" Ñ…ÑÑ€ÑглÑгчийн бүртгÑл бүртгÑгдÑÑгүй байна. Та ÑÐ½Ñ Ñ…ÑƒÑƒÐ´Ñыг Ò¯Ò¯ÑгÑÑ…/заÑварлах тухайгаа дахин тунгааж бодно уу.',
'userpage-userdoesnotexist-view' => '"$1" гÑÑÑн Ñ…ÑÑ€ÑглÑгч бүртгÑгдÑÑгүй байна.',
'blocked-notice-logextract' => 'ЭнÑÑ…Ò¯Ò¯ Ñ…ÑÑ€ÑглÑгч одоогоор түгжигдÑÑн байна.
Лавлагааны зориулалтаар түгжÑÑний лог дÑÑрх хамгийн Ñүүлийн нÑмÑлтийг доор оруулав:',
@@ -1037,7 +1028,6 @@ $1",
'changepassword' => 'Ðууц үгÑÑ Ñолих',
'prefs-skin' => 'ÐрьÑ',
'skin-preview' => 'Урьдчилж харах',
-'prefs-math' => 'Томъёонууд',
'datedefault' => 'Ðнхны байдал',
'prefs-datetime' => 'Огноо ба цаг',
'prefs-personal' => 'Хувийн тохируулга',
@@ -1061,8 +1051,6 @@ $1",
'columns' => 'Багана:',
'searchresultshead' => 'Хайлт',
'resultsperpage' => 'Ð¥ÑƒÑƒÐ´Ð°Ñ Ñ‚ÑƒÑ Ð±Ò¯Ñ€ дÑÑрх илÑрцийн тоо:',
-'contextlines' => 'ИлÑрц Ñ‚ÑƒÑ Ð±Ò¯Ñ€ дÑÑ… мөрийн тоо:',
-'contextchars' => 'ÐÑг мөр Ñ‚ÑƒÑ Ð±Ò¯Ñ€ дÑÑ… үгийн тоо:',
'stub-threshold' => '<a href="#" class="stub">Түүхий холбооÑийг</a> форматлах боÑго (байт):',
'stub-threshold-disabled' => 'ИдÑвхигүйжүүлÑÑн',
'recentchangesdays' => 'Сүүлийн өөрчлөлтүүдÑд үзүүлÑÑ… өдрийн тоо:',
@@ -1244,7 +1232,6 @@ $1 Ñ‚ÑмдÑгтÑÑÑ Ð±Ð¾Ð³Ð¸Ð½Ð¾ байх Ñ‘Ñтой.',
'right-userrights' => 'Ð¥ÑÑ€ÑглÑгчийн Ñрхүүдийг заÑварлах',
'right-userrights-interwiki' => 'БуÑад вики дÑÑрх Ñ…ÑÑ€ÑглÑгчдийн Ñрхүүдийг заÑварлах',
'right-siteadmin' => 'ÐœÑдÑÑллийн баазыг түгжих буюу нÑÑÑ…',
-'right-reset-passwords' => 'БуÑад Ñ…ÑÑ€ÑглÑгчдийн нууц үгÑийг дахин тогтоох',
'right-override-export-depth' => '5 хүртÑлх гүний хуудÑуудыг холбогдÑон хуудÑуудтай хамт гаргах',
'right-sendemail' => 'БуÑад Ñ…ÑÑ€ÑглÑгчид руу и-мÑйл Ñвуулах',
@@ -1446,10 +1433,6 @@ file_uploads тохиргоогоо шалгана уу.',
'watchthisupload' => 'Ð­Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ‹Ð³ Ñ…Ñнах',
'filewasdeleted' => 'Өмнө нь ийм нÑртÑй файл оруулагдÑан бөгөөд дараа нь уÑтгагдÑан байна.
Та үүнийг дахин оруулахын өмнө $1-г шалгаж Ò¯Ð·Ð½Ñ Ò¯Ò¯.',
-'upload-wasdeleted' => "'''Ðнхаар: Та өмнө нь уÑтгагдÑан файлыг дахин оруулах гÑж байна.'''
-
-Ð­Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ‹Ð³ дахин оруулах нь зүйтÑй ÑÑÑхийг та бодож Ò¯Ð·Ð½Ñ Ò¯Ò¯.
-Файлын уÑтгалын лог Ñнд байна:",
'filename-bad-prefix' => "Таны оруулж байгаа файлын нÑÑ€ '''\"\$1\"'''-Ñ€ ÑÑ…Ñлж байна. Ð­Ð½Ñ Ð½ÑŒ файлыг тодорхойлойлоогүй, голдуу дижитал аппаратын автоматаар гаргадаг нÑÑ€ болно.
Файланд түүнийг илүү Ñайн тодорхойлÑон нÑÑ€ өгнө Ò¯Ò¯.",
'upload-success-subj' => 'Файлыг амжилттай орууллаа',
@@ -1556,7 +1539,6 @@ URL нь зөв болон Ñайт ажиллагаатай байгаа ÑÑÑ
[[Special:WhatLinksHere/$2|БүтÑн жагÑаалт]] мөн байгаа.',
'nolinkstoimage' => 'Ð­Ð½Ñ Ñ„Ð°Ð¹Ð»Ð´ холбогдÑон Ñ…ÑƒÑƒÐ´Ð°Ñ Ð±Ð°Ð¹Ñ…Ð³Ò¯Ð¹ байна.',
'morelinkstoimage' => 'Ð­Ð½Ñ Ñ„Ð°Ð¹Ð»Ð´ руух [[Special:WhatLinksHere/$1|илүү олон холбооÑ]] үзÑÑ….',
-'redirectstofile' => 'Дараах {{PLURAL:$1|чиглүүлÑгч|$1 чиглүүлÑгч}} ÑÐ½Ñ Ñ„Ð°Ð¹Ð»Ð´ холбогдоно:',
'duplicatesoffile' => 'Дараах {{PLURAL:$1|файл|$1 файл}} нь ÑÐ½Ñ Ñ„Ð°Ð¹Ð»Ñ‚Ð°Ð¹ Ñг ижилхÑн байна ([[Special:FileDuplicateSearch/$2|дÑлгÑÑ€Ñнгүй мÑдÑÑлÑл]]):',
'sharedupload' => 'Ð­Ð½Ñ Ñ„Ð°Ð¹Ð» нь $1-ийнх бөгөөд буÑад Ñ‚Ó©ÑлүүдÑд ашиглах боломжтой',
'sharedupload-desc-there' => 'Ð­Ð½Ñ Ñ„Ð°Ð¹Ð» нь $1-нх бөгөөд буÑад Ñ‚Ó©Ñлүүд үүнийг Ñ…ÑÑ€ÑглÑÑ… боломжтой.
@@ -1869,10 +1851,8 @@ URL нь зөв болон Ñайт ажиллагаатай байгаа ÑÑÑ
'watchlistanontext' => 'Та өөрийн Ñ…Ñнах лиÑтийг өөрчлөх буюу үзÑхийг Ñ…Ò¯ÑвÑл $1 Ñ…ÑÑ€ÑгтÑй.',
'watchnologin' => 'ÐÑвтрÑÑгүй байна.',
'watchnologintext' => 'Та өөрийн Ñ…Ñнаж буй хуудаÑнуудын жагÑаалтыг өөрчлөхийн тулд [[Special:UserLogin|нÑвтÑÑ€ÑÑн байх]] шаардлагатай.',
-'addedwatch' => 'Ð¥Ñнах жагÑаалтанд нÑмÑгдлÑÑ',
'addedwatchtext' => "\"[[:\$1]]\" гÑÑÑн Ñ…ÑƒÑƒÐ´Ð°Ñ Ñ‚Ð°Ð½Ñ‹ [[Special:Watchlist|Ñ…Ñнах жагÑаалтанд]] нÑмÑгдлÑÑ.
Ð­Ð½Ñ Ñ…ÑƒÑƒÐ´Ð°Ñ ÑÑвÑл түүний Ñ…ÑлÑлцүүлгийн Ñ…ÑƒÑƒÐ´Ð°Ñ Ð·Ð°Ñварлагдахад Ñ‚ÑдгÑÑÑ€ нь [[Special:RecentChanges|Ñүүлийн заÑваруудын жагÑаалтад]] '''тодруулалттай''' харагдах болно.",
-'removedwatch' => 'Ð¥Ñнах жагÑÐ°Ð°Ð»Ñ‚Ð½Ð°Ð°Ñ Ñ…Ð°Ñагдлаа',
'removedwatchtext' => '"[[:$1]]" Ñ…ÑƒÑƒÐ´Ð°Ñ Ñ‚Ð°Ð½Ñ‹ [[Special:Watchlist|Ñ…Ñналтын жагÑаалтааÑ]] хаÑагдлаа.',
'watch' => 'Ð¥Ñнах',
'watchthispage' => 'Ð­Ð½Ñ Ñ…ÑƒÑƒÐ´Ñыг Ñ…Ñна',
@@ -1925,10 +1905,10 @@ $NEWPAGE
--
Ð¥Ñнаж буй хуудÑуудынхаа тохиргоог өөрчлөхийн тулд дараах хуудаÑÑ‚ зочилно уу:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
ДÑлгÑÑ€Ñнгүй мÑдÑÑлÑл:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'ХуудÑыг уÑтга',
@@ -1944,7 +1924,7 @@ $NEWPAGE
ЭнÑÑ…Ò¯Ò¯ үйлдлийг хийÑнÑÑÑ€ Ñмар үр дүнд хүрÑхийг бүрÑн гүйцÑд ойлгож хийж байгаа гÑдгÑÑ, мөн [[{{MediaWiki:Policy-url}}|дүрÑм журмынх нь дагуу]] хийж байнаагаа илтгÑÐ½Ñ Ò¯Ò¯.',
'actioncomplete' => 'Үйлдлийг гүйцÑтгÑлÑÑ.',
'actionfailed' => 'Үйлдлийг гүйцÑтгÑж чадÑангүй',
-'deletedtext' => '"<nowiki>$1</nowiki>" нь уÑтгагдлаа.
+'deletedtext' => '"$1" нь уÑтгагдлаа.
Сүүлд уÑтгагдÑан зүйлÑийг $2-Ñ Ñ…Ð°Ñ€Ð½Ð° уу.',
'deletedarticle' => '"[[$1]]" нь уÑтгагдлаа',
'suppressedarticle' => '"[[$1]]"-г далдаллаа',
@@ -2002,7 +1982,7 @@ $NEWPAGE
'protect_expiry_invalid' => 'ДууÑах хугацаа хүчингүй байна.',
'protect_expiry_old' => 'ДууÑах хугацаа өнгөрÑөн цагт байна.',
'protect-unchain-permissions' => 'Хамгаалах буÑад тохиргоог нÑÑÑ…',
-'protect-text' => "Та '''<nowiki>$1</nowiki>''' хуудаÑны хамгаалалтын түвшинг харж, өөрчлөх боломжтой.",
+'protect-text' => "Та '''$1''' хуудаÑны хамгаалалтын түвшинг харж, өөрчлөх боломжтой.",
'protect-locked-blocked' => "ТүгжигдÑÑн байхад хамгаалалтын түвшинг өөрчилж болохгүй.
'''$1''' хуудаÑны одоогийн тохиргоо Ñнд байна:",
'protect-locked-dblock' => "ÐœÑдÑÑллийн Ñанг түгжÑÑн байгаа тул хамгаалалтын түвшинг өөрчилж болохгүй.
@@ -2155,7 +2135,6 @@ $1',
'blockiptext' => 'Доорх маÑгтыг ашиглан тодорхой IP хаÑг ÑÑвÑл Ñ…ÑÑ€ÑглÑгчийн нÑрийг заÑвар хийхÑÑÑ Ñ‚Ò¯Ð³Ð¶Ð¸Ð½Ñ Ò¯Ò¯.
Ð­Ð½Ñ Ð½ÑŒ зөвхөн вандализм үйлдÑÑ… ÑÐ²Ð´Ð»Ð°Ð°Ñ ÑÑргийлÑхийн тулд, [[{{MediaWiki:Policy-url}}|бодлого, баримтлалын]] дагуу хийгдÑÑ… Ñ‘Ñтой.
Доор тодорхой шалтгаанаа Ð±Ð¸Ñ‡Ð½Ñ Ò¯Ò¯.',
-'ipaddress' => 'IP хаÑг',
'ipadressorusername' => 'IP хаÑг буюу Ñ…ÑÑ€ÑглÑгчийн нÑÑ€',
'ipbexpiry' => 'ТүгжÑÑ Ð½ÑŒ нÑÑгдÑÑ… хугацаа',
'ipbreason' => 'Шалтгаан:',
@@ -2168,7 +2147,6 @@ $1',
** СүрдүүлÑÑн/зовооÑон ааш авиртай
** Олон бүртгÑлийг буруу Ñ…ÑргÑÑÑ€ ашиглаÑан
** Зөвшөөршгүй Ñ…ÑÑ€ÑглÑгчийн нÑртÑй',
-'ipbanononly' => 'Зөвхөн бүртгÑлгүй Ñ…ÑÑ€ÑглÑгчдийг л түгжих',
'ipbcreateaccount' => 'БүртгÑл нÑÑÑ…ÑÑÑ Ñ…Ð°Ð¼Ð³Ð°Ð°Ð»Ð°Ñ…',
'ipbemailban' => 'Ð¥ÑÑ€ÑглÑгчийг мÑйл ÑÐ²ÑƒÑƒÐ»Ð°Ñ…Ð°Ð°Ñ Ñаатуулах',
'ipbenableautoblock' => 'Ð­Ð½Ñ Ñ…ÑÑ€ÑглÑгчийн Ñүүлийн IP хаÑгийг түгж. ДÑÑÑ€ нь дахин оролдого хийж болох хаÑгуудыг ч мөн түгжих.',
@@ -2179,7 +2157,6 @@ $1',
'ipbotherreason' => 'Ó¨Ó©Ñ€/нÑмÑлт шалтгаан:',
'ipbhidename' => 'Ð¥ÑÑ€ÑглÑгчийн нÑрийг түгжÑÑний лог, одоо Ñ…ÑÑ€Ñгжиж буй түгжÑÑний жагÑаалт болон Ñ…ÑÑ€ÑглÑгчийн жагÑÐ°Ð°Ð»Ñ‚Ð°Ð°Ñ Ð½ÑƒÑƒÑ†Ð»Ð°Ñ…',
'ipbwatchuser' => 'Ð­Ð½Ñ Ñ…ÑÑ€ÑглÑгчийн Ñ…ÑÑ€ÑглÑгчийн ба Ñрианы хуудÑуудыг Ñ…Ñнах',
-'ipballowusertalk' => 'Ð­Ð½Ñ Ñ…ÑÑ€ÑглÑгч түгжигдÑÑн үед өөрийн Ñрианы хуудÑаа заÑварлахыг зөвшөөрөх',
'ipb-change-block' => 'ЭдгÑÑÑ€ тохиргоотойгоор ÑÐ½Ñ Ñ…ÑÑ€ÑглÑгчийг дахин түгжих',
'badipaddress' => 'Хүчингүй IP хаÑг',
'blockipsuccesssub' => 'ТүгжÑÑ Ð°Ð¼Ð¶Ð¸Ð»Ñ‚Ñ‚Ð°Ð¹ боллоо.',
@@ -2197,14 +2174,9 @@ $1',
'unblocked-id' => '$1 түгжÑÑг авч хаÑлаа',
'ipblocklist' => 'ТүгжигдÑÑн Ñ…ÑÑ€ÑглÑгчид болон IP хаÑгнууд',
'ipblocklist-legend' => 'ТүгжигдÑÑн Ñ…ÑÑ€ÑглÑгчийг хайх',
-'ipblocklist-username' => 'Ð¥ÑÑ€ÑглÑгчийн нÑÑ€ ÑÑвÑл IP хаÑг:',
-'ipblocklist-sh-userblocks' => 'БүртгÑлүүдийн түгжÑÑг $1',
-'ipblocklist-sh-tempblocks' => 'Түр зуурын түгжÑÑг $1',
-'ipblocklist-sh-addressblocks' => 'Ганц IP-н түгжÑÑг $1',
'ipblocklist-submit' => 'Хайх',
'ipblocklist-localblock' => 'Дотоодын түгжилт',
'ipblocklist-otherblocks' => 'БуÑад {{PLURAL:$1|түгжÑÑ|түгжÑÑ}}',
-'blocklistline' => '$1, $2 нь $3 ($4)-г түгжив',
'infiniteblock' => 'тодорхойгүй',
'expiringblock' => '$1-ний $2-д хугацаа нь дууÑна',
'anononlyblock' => 'зөвхөн бүртгÑгдÑÑгүйг',
@@ -2228,7 +2200,7 @@ $1',
'reblock-logentry' => '[[$1]]-н түгжÑÑний тохиргоог $2 $3 хугацаатай болгож өөрчилÑөн',
'blocklogtext' => 'Ð­Ð½Ñ Ð½ÑŒ Ñ…ÑÑ€ÑглÑгчийг түгжÑÑн болон тайлÑан үйлдлийн лог юм.
Ðвтоматаар түгжигдÑÑн IP хаÑгууд жагÑаагдаагүй.
-[[Special:IPBlockList|IP хаÑгийн түгжÑÑний жагÑаалтыг]] харж одоо түгжигдÑÑн хаÑгуудыг харна уу.',
+[[Special:BlockList|IP хаÑгийн түгжÑÑний жагÑаалтыг]] харж одоо түгжигдÑÑн хаÑгуудыг харна уу.',
'unblocklogentry' => '$1 идÑвхтÑй',
'block-log-flags-anononly' => 'зөвхөн нÑргүй Ñ…ÑÑ€ÑглÑгчид',
'block-log-flags-nocreate' => 'БүртгÑл Ò¯Ò¯ÑгÑÑ… боломжгүй',
@@ -2242,8 +2214,7 @@ $1',
'ipb_expiry_temp' => 'ÐуугдÑан Ñ…ÑÑ€ÑглÑгийн нÑÑ€Ñийн түгжÑÑ Ð½ÑŒ үүрдийн байх Ñ‘Ñтой',
'ipb_hide_invalid' => 'ЭнÑÑ…Ò¯Ò¯ бүртгÑлийг далдлах боломжгүй байна; Ñ…ÑÑ‚Ñрхий олон заÑвар үйлдÑÑн байж болзошгүй.',
'ipb_already_blocked' => '"$1" нь аль Ñ…Ñдийн түгжигдÑÑн байна.',
-'ipb-needreblock' => '== Ðль Ñ…ÑдийнÑÑ Ñ‚Ò¯Ð³Ð¶Ð¸Ð³Ð´ÑÑн ==
-$1 нь аль Ñ…ÑдийнÑÑ Ñ‚Ò¯Ð³Ð¶Ð¸Ð³Ð´ÑÑн байна.
+'ipb-needreblock' => '$1 нь аль Ñ…ÑдийнÑÑ Ñ‚Ò¯Ð³Ð¶Ð¸Ð³Ð´ÑÑн байна.
Та тохиргоог өөрчилмөөр байна уу?',
'ipb-otherblocks-header' => ' БуÑад {{PLURAL:$1|түгжÑÑ|түгжÑÑ}}',
'ipb_cant_unblock' => 'Ðлдаа: ТүгжигдÑÑн ID $1 нь олдохгүй байна. ТүгжÑÑ Ð½ÑŒ аль Ñ…Ñдийн тайлагдÑан байж болзошгүй.',
@@ -2393,7 +2364,7 @@ $1 нь аль Ñ…ÑдийнÑÑ Ñ‚Ò¯Ð³Ð¶Ð¸Ð³Ð´ÑÑн байна.
'allmessagesdefault' => 'Ðнхны',
'allmessagescurrent' => 'Одоогийн',
'allmessagestext' => 'Ð­Ð½Ñ Ð±Ð¾Ð» МедиаВики дахь ÑиÑтемийн мÑдÑгдлүүдийн жагÑаалт юм.
-МедиаВикиг орчуулах тухай мÑдÑÑллийг [http://www.mediawiki.org/wiki/Localisation МедиаВикигийн орчуулга], мөн [http://translatewiki.net translatewiki.net]-Ñ Ð°Ð²Ð½Ð° уу.',
+МедиаВикиг орчуулах тухай мÑдÑÑллийг [//www.mediawiki.org/wiki/Localisation МедиаВикигийн орчуулга], мөн [//translatewiki.net translatewiki.net]-Ñ Ð°Ð²Ð½Ð° уу.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' нь унтарÑан байгаа тул '''Special:Allmessages'''-г Ñ…ÑÑ€ÑглÑж болохгүй.",
'allmessages-filter-legend' => 'Шүүлтүүр',
'allmessages-filter' => 'Өөрийн болгоÑон байдлаар нь шүүх:',
@@ -2538,9 +2509,7 @@ $1 нь аль Ñ…ÑдийнÑÑ Ñ‚Ò¯Ð³Ð¶Ð¸Ð³Ð´ÑÑн байна.
'common.js' => '/* Энд байгаа ЖаваСкрипт Ñ…ÑÑ€ÑглÑгч бүрд Ñмар нÑгÑн Ñ…ÑƒÑƒÐ´Ð°Ñ Ð½ÑÑж үзÑÑ… болгонд дуудагдах болно. */',
# Metadata
-'nodublincore' => 'Ð­Ð½Ñ Ñерверт Dublin Core RDF мÑдÑÑллийг идÑвхжүүлÑÑгүй байна.',
-'nocreativecommons' => 'Ð­Ð½Ñ Ñерверт Creative Commons RDF мÑдÑÑллийг идÑвхжүүлÑÑгүй байна.',
-'notacceptable' => 'Вики Ñервер нь мÑдÑÑллийг таны клиентийн уншиж чадах Ñ…ÑлбÑрт олгох боломжгүй байна.',
+'notacceptable' => 'Вики Ñервер нь мÑдÑÑллийг таны клиентийн уншиж чадах Ñ…ÑлбÑрт олгох боломжгүй байна.',
# Attribution
'anonymous' => '{{SITENAME}}-н бүртгүүлÑÑгүй {{PLURAL:$1|Ñ…ÑÑ€ÑглÑгч|Ñ…ÑÑ€ÑглÑгчид}}',
@@ -2563,35 +2532,6 @@ $1 нь аль Ñ…ÑдийнÑÑ Ñ‚Ò¯Ð³Ð¶Ð¸Ð³Ð´ÑÑн байна.
'spam_reverting' => '$1 руух холбооÑгүй хамгийн Ñүүлийн хувилбар руу шилжүүлж байна',
'spam_blanking' => 'Бүх заÑварууд $1 руу холбооÑтой тул хуудÑыг хооÑолж байна',
-# Info page
-'infosubtitle' => 'ХуудаÑны мÑдÑÑлÑл',
-'numedits' => 'заÑварлаÑан тоо (ӨгүүлÑл): $1',
-'numtalkedits' => 'заÑварлаÑан тоо (ХÑлÑлцүүлÑгийн хуудаÑ): $1',
-'numwatchers' => 'Ð¥Ñнагчдын тоо: $1',
-'numauthors' => 'Ялгаатай зохиогчдын тоо (БичлÑг): $1',
-'numtalkauthors' => 'Ялгаатай зохиогчдын тоо (ХÑлÑлцүүлÑгийн хуудаÑ): $1',
-
-# Math options
-'mw_math_png' => 'Байнга PNG болго',
-'mw_math_simple' => 'Ð¥Ñлбар бол HTML, үгүй бол PNG',
-'mw_math_html' => 'Болвол HTML, үгүй бол PNG',
-'mw_math_source' => 'TeX Ñ…ÑвÑÑÑ€ үлдÑÑÑ… (текÑÑ‚Ñн броузеруудад)',
-'mw_math_modern' => 'Сүүлийн үеийн браузер Ñ…ÑÑ€ÑглÑхийг зөвлөж байна/Интернет хөтлөгчийн ÑˆÐ¸Ð½Ñ Ñ…ÑƒÐ²Ð¸Ð»Ð±Ð°Ñ€ÑƒÑƒÐ´Ð°Ð´ зориулÑан.',
-'mw_math_mathml' => 'Бололцоотой бол MathML (туршилт)',
-
-# Math errors
-'math_failure' => 'Задлан Ñлгал хийж чадÑангүй',
-'math_unknown_error' => 'үл мÑдÑгдÑÑ… алдаа',
-'math_unknown_function' => 'үл мÑдÑгдÑÑ… функц',
-'math_lexing_error' => 'лекÑлÑÑ…Ñд алдаа гарлаа',
-'math_syntax_error' => 'ÑинтакÑийн алдаа',
-'math_image_error' => 'PNG руух хувиргал амжилтгүй боллоо;
-latex, dvips, gs, convert-г зөв ÑуулгаÑан ÑÑÑхийг шалгана уу',
-'math_bad_tmpdir' => 'Математикийн түр зуурын каталогыг Ò¯Ò¯ÑгÑÑ…, ÑÑвÑл түүн руу хуулж чадÑангүй',
-'math_bad_output' => 'Математикийн гадагшлуулах каталогыг Ò¯Ò¯ÑгÑÑ…, ÑÑвÑл түүн руу хуулж чадÑангүй',
-'math_notexvc' => 'texvc программ олдохгүй байна;
-math/README-г уншиж тохируулна уу.',
-
# Patrolling
'markaspatrolleddiff' => 'Ð¥Ñналтанд авъÑ',
'markaspatrolledtext' => 'Үүнийг Ñ…Ñналтанд авъÑ',
@@ -2636,7 +2576,6 @@ $1',
'file-nohires' => '<small>Илүү чанартай хувилбар байхгүй байна.</small>',
'svg-long-desc' => 'SVG файл, $1 × $2 пикÑÑл, файлын Ñ…ÑмжÑÑ: $3',
'show-big-image' => 'Хамгийн Ñайн чанартай хувилбар',
-'show-big-image-thumb' => '<small>Файлын одоогоор харагдаж буй Ñ…ÑмжÑÑ: $1 × $2 пикÑел</small>',
'file-info-gif-looped' => 'ÑргÑлдÑÑн',
'file-info-gif-frames' => '$1 {{PLURAL:$1|Ñ„Ñ€Ñйм}}',
'file-info-png-looped' => 'ÑргÑлдÑÑн',
@@ -2676,7 +2615,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Өргөн',
@@ -2691,13 +2636,11 @@ $1',
'exif-ycbcrpositioning' => 'Y and C-н байршил',
'exif-xresolution' => 'Зургийн хөндлөн чанар',
'exif-yresolution' => 'Зургийн боÑоо чанар',
-'exif-resolutionunit' => 'X ба Y чанарын нÑгж',
'exif-stripoffsets' => 'Зургийн мÑдÑÑллийн байршил',
'exif-rowsperstrip' => 'Ð—ÑƒÑ€Ð²Ð°Ñ Ñ‚ÑƒÑ Ð±Ò¯Ñ€ дÑÑ… мөрийн тоо',
'exif-stripbytecounts' => 'ШахагдÑан Ð·ÑƒÑ€Ð²Ð°Ñ Ñ‚ÑƒÑ Ð±Ò¯Ñ€ дÑÑ… байт',
'exif-jpeginterchangeformat' => 'JPEG SOI руу шилжүүлÑÑ…',
'exif-jpeginterchangeformatlength' => 'JPEG өгөгдлийн байт',
-'exif-transferfunction' => 'Шилжүүлгийн функц',
'exif-whitepoint' => 'Цагаан цÑгийн хромат байдал',
'exif-ycbcrcoefficients' => 'Өнгөний орон зайн хувиргалтын матрицийн коÑффициентүүд',
'exif-referenceblackwhite' => 'Хар цагаан лавлагааны хоёр Ñ…ÑмжÑÑÑ',
@@ -2715,7 +2658,6 @@ $1',
'exif-compressedbitsperpixel' => 'Зургийн файлыг шахах арга',
'exif-pixelydimension' => 'Зургийн хүчинтÑй өргөн',
'exif-pixelxdimension' => 'Зургийн хүчинтÑй өндөр',
-'exif-makernote' => 'ҮйлдвÑрлÑгчийн Ñ‚ÑмдÑглÑлүүд',
'exif-usercomment' => 'Ð¥ÑÑ€ÑглÑгчдийн Ñ‚ÑмдÑглÑл',
'exif-relatedsoundfile' => 'Холбоотой дуун файл',
'exif-datetimeoriginal' => 'ÐœÑдÑÑллийг Ò¯Ò¯ÑгÑÑÑн огноо ба цаг',
@@ -2729,7 +2671,6 @@ $1',
'exif-exposureprogram' => 'ГÑÑ€Ñл өгөх хугацааны программ',
'exif-spectralsensitivity' => 'Спектралийн мÑдрÑмтгий байдал',
'exif-isospeedratings' => 'ISO хурдны үнÑлгÑÑ',
-'exif-oecf' => 'ОптоÑлектроник хувилгалтын хүчин зүйл',
'exif-shutterspeedvalue' => 'Хөшигний хурд',
'exif-aperturevalue' => 'Дурангийн өрц',
'exif-brightnessvalue' => 'ГÑÑ€ÑлтÑлт',
@@ -2742,7 +2683,6 @@ $1',
'exif-focallength' => 'Линзний фокуÑын урт',
'exif-subjectarea' => 'Субъектийн талбай',
'exif-flashenergy' => 'ГÑÑ€Ñл цацагчын Ñнерги',
-'exif-spatialfrequencyresponse' => 'Орон зайн давтамжийн хариу',
'exif-focalplanexresolution' => 'X фокуÑын хавтгайн чанар',
'exif-focalplaneyresolution' => 'Y фокуÑын хавтгайн чанар',
'exif-focalplaneresolutionunit' => 'ФокуÑын хавтгайн чанарын нÑгж',
@@ -2751,7 +2691,6 @@ $1',
'exif-sensingmethod' => 'ÐœÑдрÑÑ… арга',
'exif-filesource' => 'Файлыг ÑÑ… Ò¯Ò¯ÑвÑÑ€',
'exif-scenetype' => 'ҮзÑгдлийн төрөл',
-'exif-cfapattern' => 'CFA загвар',
'exif-customrendered' => 'Зураг боловÑруулах дурын процеÑÑ',
'exif-exposuremode' => 'ГÑÑ€Ñл өгөх арга',
'exif-whitebalance' => 'Цагаан өнгийн Ñ‚ÑнцвÑÑ€',
@@ -2915,15 +2854,13 @@ $1',
# External editor support
'edit-externally' => 'Гадны программыг ашиглан ÑÐ½Ñ Ñ„Ð°Ð¹Ð»Ñ‹Ð³ заÑварлах',
-'edit-externally-help' => '(ÐÑмÑлт мÑдÑÑллийг [http://www.mediawiki.org/wiki/Manual:External_editors тохируулгын зааврын] хуудаÑÐ½Ð°Ð°Ñ Ñ…Ð°Ñ€Ð½Ð° уу)',
+'edit-externally-help' => '(ÐÑмÑлт мÑдÑÑллийг [//www.mediawiki.org/wiki/Manual:External_editors тохируулгын зааврын] хуудаÑÐ½Ð°Ð°Ñ Ñ…Ð°Ñ€Ð½Ð° уу)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Бүгдийг',
-'imagelistall' => 'бүгдийг',
-'watchlistall2' => 'бүгдийг',
-'namespacesall' => 'бүгдийг',
-'monthsall' => 'бүгдийг',
-'limitall' => 'бүгдийг',
+'watchlistall2' => 'бүгдийг',
+'namespacesall' => 'бүгдийг',
+'monthsall' => 'бүгдийг',
+'limitall' => 'бүгдийг',
# E-mail address confirmation
'confirmemail' => 'ÐœÑйл хаÑгийг баталгаажуулах',
@@ -3039,14 +2976,14 @@ $1',
'watchlistedit-normal-legend' => 'Ð¥Ñнаж буй хуудÑуудын жагÑÐ°Ð°Ð»Ñ‚Ð°Ð°Ñ Ð·Ò¯Ð¹Ð»Ñ Ñ…Ð°Ñах',
'watchlistedit-normal-explain' => 'Ð¥Ñнаж буй хуудÑуудын жагÑаалт дахь зүйлÑийг доор үзүүлÑв.
Зүйлийг авч хаÑхын тулд үүний хажуу дахь хайрцгийг Ñонгоод "{{int:Watchlistedit-normal-submit}}" дÑÑÑ€ дарна уу.
-Мөн гар аргаар [[Special:Watchlist/raw|жагÑаалтад заÑвар хийж болно]].',
+Мөн гар аргаар [[Special:EditWatchlist/raw|жагÑаалтад заÑвар хийж болно]].',
'watchlistedit-normal-submit' => 'ХуудÑуудыг авч хаÑÑ…',
'watchlistedit-normal-done' => 'Таны Ñ…Ñнаж буй хуудÑуудын жагÑÐ°Ð°Ð»Ñ‚Ð°Ð°Ñ {{PLURAL:$1|1 хуудÑыг|$1 хуудÑыг}} авч хаÑлаа:',
'watchlistedit-raw-title' => 'Түүхий Ñ…Ñнах жагÑаалтыг заÑварлах',
'watchlistedit-raw-legend' => 'Түүхий Ñ…Ñнах жагÑаалтыг заÑварлах',
'watchlistedit-raw-explain' => 'Таны Ñ…Ñнаж буй хуудÑуудын жагÑаалт дахь зүйлÑийг доор үзүүлÑв, жагÑаалтад Ð·Ò¯Ð¹Ð»Ñ Ð½Ñмж, үүнÑÑÑ Ñ…Ð°Ñах маÑгаар заÑварлаж болно; ингÑхдÑÑ Ð¼Ó©Ñ€ бүрд ганц л зүйлийг заÑварлана.
ДууÑÑаныхаа дараа "{{int:Watchlistedit-raw-submit}}" дÑÑÑ€ дарна уу.
-Та мөн [[Special:Watchlist/edit|Ñтандарт заÑварлагчийг]] ашиглаж болно.',
+Та мөн [[Special:EditWatchlist|Ñтандарт заÑварлагчийг]] ашиглаж болно.',
'watchlistedit-raw-titles' => 'Гарчигууд:',
'watchlistedit-raw-submit' => 'Ð¥Ñнаж буй хуудÑуудын жагÑаалтыг шинÑчлÑÑ…',
'watchlistedit-raw-done' => 'Таны Ñ…Ñнаж буй хуудÑуудын жагÑаалтыг шинÑчлÑлÑÑ.',
@@ -3063,27 +3000,26 @@ $1',
'duplicate-defaultsort' => '\'\'\'Ðнхаар:\'\'\' "$2" гÑÑÑн default sort key нь "$1" гÑÑÑн өмнөх key-н дÑÑгүүр бичигдÑÑ… болж байна.',
# Special:Version
-'version' => 'Хувилбар',
-'version-extensions' => 'СуулгаÑан өргөтгөлүүд',
-'version-specialpages' => 'ТуÑгай хуудÑууд',
-'version-parserhooks' => 'ПарÑер хүүкүүд',
-'version-variables' => 'ХувьÑагчууд',
-'version-other' => 'БуÑад',
-'version-mediahandlers' => 'Медиа боловÑруулагч',
-'version-hooks' => 'Хүүкүүд',
-'version-extension-functions' => 'Өргөтгөлүүдийн функцууд',
-'version-parser-extensiontags' => 'ПарÑер нÑмÑлт тагууд',
-'version-parser-function-hooks' => 'ПарÑер функцийн тагууд',
-'version-skin-extension-functions' => 'Скины өргөтгөлийн функцууд',
-'version-hook-name' => 'Хүүкийн нÑÑ€',
-'version-hook-subscribedby' => 'ЗахиалÑан:',
-'version-version' => '(Хувилбар $1)',
-'version-license' => 'Лиценз',
-'version-poweredby-credits' => "ЭнÑÑ…Ò¯Ò¯ викиг '''[http://www.mediawiki.org/ MediaWiki]''' програмаар ажиллуулдаг, зохиогчийн Ñрх © 2001-$1 $2.",
-'version-poweredby-others' => 'буÑад',
-'version-software' => 'СуулгаÑан программ',
-'version-software-product' => 'БүтÑÑгдÑхүүн',
-'version-software-version' => 'Хувилбар',
+'version' => 'Хувилбар',
+'version-extensions' => 'СуулгаÑан өргөтгөлүүд',
+'version-specialpages' => 'ТуÑгай хуудÑууд',
+'version-parserhooks' => 'ПарÑер хүүкүүд',
+'version-variables' => 'ХувьÑагчууд',
+'version-other' => 'БуÑад',
+'version-mediahandlers' => 'Медиа боловÑруулагч',
+'version-hooks' => 'Хүүкүүд',
+'version-extension-functions' => 'Өргөтгөлүүдийн функцууд',
+'version-parser-extensiontags' => 'ПарÑер нÑмÑлт тагууд',
+'version-parser-function-hooks' => 'ПарÑер функцийн тагууд',
+'version-hook-name' => 'Хүүкийн нÑÑ€',
+'version-hook-subscribedby' => 'ЗахиалÑан:',
+'version-version' => '(Хувилбар $1)',
+'version-license' => 'Лиценз',
+'version-poweredby-credits' => "ЭнÑÑ…Ò¯Ò¯ викиг '''[//www.mediawiki.org/ MediaWiki]''' програмаар ажиллуулдаг, зохиогчийн Ñрх © 2001-$1 $2.",
+'version-poweredby-others' => 'буÑад',
+'version-software' => 'СуулгаÑан программ',
+'version-software-product' => 'БүтÑÑгдÑхүүн',
+'version-software-version' => 'Хувилбар',
# Special:FilePath
'filepath' => 'Файлын зам',
@@ -3094,9 +3030,7 @@ $1',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'ДавхардÑан файлуудыг хайх',
-'fileduplicatesearch-summary' => 'Ð¥Ñш кодыг ашиглан давхардÑан файлуудын хайна.
-
-Файлын нÑрийг "{{ns:file}}:" угтваргүйгÑÑÑ€ оруулна уу.',
+'fileduplicatesearch-summary' => 'Ð¥Ñш кодыг ашиглан давхардÑан файлуудын хайна.',
'fileduplicatesearch-legend' => 'Давхардалтыг хайх',
'fileduplicatesearch-filename' => 'Файлын нÑÑ€:',
'fileduplicatesearch-submit' => 'Хайх',
diff --git a/languages/messages/MessagesMo.php b/languages/messages/MessagesMo.php
index ab7ba56f..9d0bd700 100644
--- a/languages/messages/MessagesMo.php
+++ b/languages/messages/MessagesMo.php
@@ -180,8 +180,6 @@ $messages = array(
'extlink_tip' => 'ЛегÑÑ‚ÑƒÑ€Ñ ÐµÐºÑÑ‚ÐµÑ€Ð½Ñ (ну уита префикÑул http://)',
'headline_sample' => 'ТекÑÑ‚ де титлу',
'headline_tip' => 'Титлу де нивел 2',
-'math_sample' => 'Интроду формула аичь',
-'math_tip' => 'Ð¤Ð¾Ñ€Ð¼ÑƒÐ»Ñ Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸ÐºÑ (LaTeX)',
'nowiki_sample' => 'Интроду текÑÑ‚ неформатат аичь',
'nowiki_tip' => 'Ð˜Ð³Ð½Ð¾Ñ€Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð°Ñ€Ñ Ð²Ð¸ÐºÐ¸',
'image_tip' => 'Фишиер инÑерат',
@@ -394,7 +392,7 @@ $messages = array(
# Delete
'deletepage' => 'Штерӂе паӂина',
'actioncomplete' => 'Ðкциуне комплетÑ',
-'deletedtext' => 'Паӂина «<nowiki>$1</nowiki>» а фоÑÑ‚ штÑÑ€ÑÑ.
+'deletedtext' => 'Паӂина «$1» а фоÑÑ‚ штÑÑ€ÑÑ.
Везь $2 пентру о лиÑÑ‚Ñ Ð° елементелор штерÑе речент.',
'deletedarticle' => 'а ÑˆÑ‚ÐµÑ€Ñ Â«[[$1]]»',
'dellogpage' => 'Журнал штерӂерь',
@@ -413,7 +411,7 @@ $messages = array(
'protectexpiry' => 'ЕкÑпирÑ:',
'protect_expiry_invalid' => 'Тимпул де екÑпираре ну еÑте валид.',
'protect_expiry_old' => 'Тимпул де екÑпираре еÑте ын трекут.',
-'protect-text' => "Поць визуализа Ñау модифика нивелул де протекцие пентру паӂина '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Поць визуализа Ñау модифика нивелул де протекцие пентру паӂина '''$1'''.",
'protect-locked-access' => "Контул Ñ‚Ñу ну аре пермиÑÐ¸ÑƒÐ½Ñ Ð´Ðµ а Ñкимба нивелуриле де протежаре а паӂиний.
Ðичь Ñынт ÑетÑриле куренте пентру паӂина '''$1''':",
'protect-cascadeon' => 'ÐчаÑÑ‚Ñ Ð¿Ð°Ó‚Ð¸Ð½Ñ ÐµÑте Ð¿Ñ€Ð¾Ñ‚ÐµÐ¶Ð°Ñ‚Ñ Ð´ÐµÐ¾Ð°Ñ€ÐµÑ‡Ðµ еÑте инклуÑÑ Ñ‹Ð½ {{PLURAL:$1|урмÑÑ‚Ð¾Ð°Ñ€Ñ Ð¿Ð°Ó‚Ð¸Ð½Ñ, че аре|урмÑтоареле паӂинь, че ау}} Ð°ÐºÑ‚Ð¸Ð²Ð¸Ñ‚Ð°Ñ‚Ñ Ð¿Ñ€Ð¾Ñ‚ÐµÐ¶Ð°Ñ€Ñ Ð»Ð° модификаре ын каÑкадÑ.
@@ -548,11 +546,10 @@ $messages = array(
'tooltip-rollback' => "«Ревино» анулÑÐ·Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ€Ñ/модификÑриле де пе ачаÑÑ‚Ñ Ð¿Ð°Ó‚Ð¸Ð½Ñ Ð° ултимулуй контрибуитор принтр'о ÑÐ¸Ð½Ð³ÑƒÑ€Ñ Ð°Ð¿ÑÑаре",
# Media information
-'file-info-size' => '$1 × $2 пикÑель, мÑриме фишиер: $3, тип MIME: $4',
-'file-nohires' => '<small>Резолуций май марь ну Ñынт диÑпонибиле.</small>',
-'svg-long-desc' => 'фишиер SVG, ку дименÑÐ¸ÑƒÐ½Ñ Ð½Ð¾Ð¼Ð¸Ð½Ð°Ð»Ñ Ð´Ðµ $1 × $2 пикÑель, мÑриме фишиер: $3',
-'show-big-image' => 'ÐœÑреште Ñ€ÐµÐ·Ð¾Ð»ÑƒÑ†Ð¸Ñ Ð¸Ð¼Ð°Ó‚Ð¸Ð½Ð¸Ð¹',
-'show-big-image-thumb' => '<small>ÐœÑÑ€Ð¸Ð¼Ñ Ð°Ñ‡ÐµÑтей превизуализÑрь: $1 × $2 пикÑель</small>',
+'file-info-size' => '$1 × $2 пикÑель, мÑриме фишиер: $3, тип MIME: $4',
+'file-nohires' => '<small>Резолуций май марь ну Ñынт диÑпонибиле.</small>',
+'svg-long-desc' => 'фишиер SVG, ку дименÑÐ¸ÑƒÐ½Ñ Ð½Ð¾Ð¼Ð¸Ð½Ð°Ð»Ñ Ð´Ðµ $1 × $2 пикÑель, мÑриме фишиер: $3',
+'show-big-image' => 'ÐœÑреште Ñ€ÐµÐ·Ð¾Ð»ÑƒÑ†Ð¸Ñ Ð¸Ð¼Ð°Ó‚Ð¸Ð½Ð¸Ð¹',
# Bad image list
'bad_image_list' => 'Форматул еÑте умÑторул:
@@ -569,7 +566,7 @@ $messages = array(
# External editor support
'edit-externally' => 'ЕдитÑÐ·Ñ Ð°Ñ‡ÐµÑÑ‚ фишиер фолоÑинд о апликацие екÑтернÑ',
-'edit-externally-help' => '(Везь [http://www.mediawiki.org/wiki/Manual:External_editors инÑтрукциунь де инÑталаре] пентру май мулте информаций)',
+'edit-externally-help' => '(Везь [//www.mediawiki.org/wiki/Manual:External_editors инÑтрукциунь де инÑталаре] пентру май мулте информаций)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'тоате',
diff --git a/languages/messages/MessagesMr.php b/languages/messages/MessagesMr.php
index 46b3f76f..aa863ce4 100644
--- a/languages/messages/MessagesMr.php
+++ b/languages/messages/MessagesMr.php
@@ -12,6 +12,7 @@
* @author Hemanshu
* @author Hemant wikikosh1
* @author Htt
+ * @author Kaajawa
* @author Kaustubh
* @author Mahitgar
* @author Sankalpdravid
@@ -50,94 +51,94 @@ $namespaceAliases = array(
# !!# sqlविचारा is not in normalised form, which is Sqlविचारा or Sqlविचारा
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'दà¥à¤¹à¥‡à¤°à¥€_पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨à¥‡' ),
+ 'Activeusers' => array( 'कारà¥à¤¯à¤°à¤¤à¤¸à¤¦à¤¸à¥à¤¯' ),
+ 'Allmessages' => array( 'सरà¥à¤µ_निरोप' ),
+ 'Allpages' => array( 'सरà¥à¤µ_पाने' ),
+ 'Ancientpages' => array( 'जà¥à¤¨à¥€_पाने' ),
+ 'Blankpage' => array( 'कोरेपान' ),
+ 'Block' => array( 'पà¥à¤°à¤¤à¤¿à¤¬à¤‚ध', 'अंकपतà¥à¤¤à¤¾à¤ªà¥à¤°à¤¤à¤¿à¤¬à¤‚ध', 'सदसà¥à¤¯à¤ªà¥à¤°à¤¤à¤¿à¤¬à¤‚ध' ),
+ 'Blockme' => array( 'मलापà¥à¤°à¤¤à¤¿à¤¬à¤‚धकरा' ),
+ 'Booksources' => array( 'पà¥à¤¸à¥à¤¤à¤•à¤¸à¥à¤°à¥‹à¤¤' ),
'BrokenRedirects' => array( 'चà¥à¤•à¥€à¤šà¥€_पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨à¥‡' ),
- 'Disambiguations' => array( 'नि:संदिगà¥à¤§à¥€à¤•à¤°à¤£' ),
- 'Userlogin' => array( 'सदसà¥à¤¯à¤ªà¥à¤°à¤µà¥‡à¤¶' ),
- 'Userlogout' => array( 'सदसà¥à¤¯à¤¬à¤¹à¤¿à¤°à¥à¤—मन' ),
+ 'Categories' => array( 'वरà¥à¤—' ),
+ 'ChangePassword' => array( 'परवलीचाशबà¥à¤¦à¤¬à¤¦à¤²à¤¾' ),
+ 'Confirmemail' => array( 'विपतà¥à¤°à¤¨à¤•à¥à¤•à¥€à¤•à¤°à¤¾' ),
+ 'Contributions' => array( 'योगदान' ),
'CreateAccount' => array( 'सदसà¥à¤¯à¤¨à¥‹à¤‚द' ),
- 'Preferences' => array( 'पसंती' ),
- 'Watchlist' => array( 'पहारà¥â€à¤¯à¤¾à¤šà¥€_सूची' ),
- 'Recentchanges' => array( 'अलीकडील_बदल' ),
- 'Upload' => array( 'चढवा' ),
+ 'Deadendpages' => array( 'टोकाची_पाने' ),
+ 'DeletedContributions' => array( 'वगळलेलीयोगदाने' ),
+ 'Disambiguations' => array( 'नि:संदिगà¥à¤§à¥€à¤•à¤°à¤£' ),
+ 'DoubleRedirects' => array( 'दà¥à¤¹à¥‡à¤°à¥€_पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨à¥‡' ),
+ 'Emailuser' => array( 'विपतà¥à¤°à¤µà¤¾à¤ªà¤°à¤•à¤°à¥à¤¤à¤¾' ),
+ 'Export' => array( 'निरà¥à¤¯à¤¾à¤¤' ),
+ 'Fewestrevisions' => array( 'कमीतकमीआवरà¥à¤¤à¤¨à¥‡' ),
+ 'FileDuplicateSearch' => array( 'दà¥à¤¹à¥‡à¤°à¥€à¤¸à¤‚चिकाशोध' ),
+ 'Filepath' => array( 'संचिकेचा_पतà¥à¤¤à¤¾_(पाथ)' ),
+ 'Import' => array( 'आयात' ),
+ 'Invalidateemail' => array( 'चूकदिनांकविपतà¥à¤°' ),
+ 'BlockList' => array( 'पà¥à¤°à¤¤à¤¿à¤¬à¤‚धनसà¥à¤šà¥€' ),
+ 'LinkSearch' => array( 'दà¥à¤µà¤¾à¤¶à¥‹à¤§' ),
+ 'Listadmins' => array( 'पà¥à¤°à¤¬à¤‚धकांची_यादी' ),
+ 'Listbots' => array( 'सांगकामà¥à¤¯à¤¾à¤‚ची_यादी' ),
'Listfiles' => array( 'चितà¥à¤°à¤¯à¤¾à¤¦à¥€' ),
- 'Newimages' => array( 'नवीन_चितà¥à¤°à¥‡' ),
- 'Listusers' => array( 'सदसà¥à¤¯à¤¾à¤‚ची_यादी' ),
'Listgrouprights' => array( 'गट_अधिकार_यादी' ),
- 'Statistics' => array( 'सांखà¥à¤¯à¤¿à¤•à¥€' ),
- 'Randompage' => array( 'अविशिषà¥à¤Ÿ', 'अविशिषà¥à¤Ÿ_पृषà¥à¤ ' ),
+ 'Listredirects' => array( 'पà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨à¤¸à¥à¤šà¥€' ),
+ 'Listusers' => array( 'सदसà¥à¤¯à¤¾à¤‚ची_यादी' ),
+ 'Lockdb' => array( 'कà¥à¤²à¥à¤ªà¤¬à¤‚द_करा_(डेटाबेस)' ),
+ 'Log' => array( 'नोंद', 'नोंदी' ),
'Lonelypages' => array( 'à¤à¤•à¤²à¤ªà¤¾à¤¨à¥‡' ),
- 'Uncategorizedpages' => array( 'अवरà¥à¤—ीकृत_पाने' ),
- 'Uncategorizedcategories' => array( 'अवरà¥à¤—ीकृत_वरà¥à¤—' ),
- 'Uncategorizedimages' => array( 'अवरà¥à¤—ीकृत_चितà¥à¤°à¥‡' ),
- 'Uncategorizedtemplates' => array( 'अवरà¥à¤—ीकृत_साचे' ),
- 'Unusedcategories' => array( 'न_वापरलेले_वरà¥à¤—' ),
- 'Unusedimages' => array( 'न_वापरलेली_चितà¥à¤°à¥‡' ),
- 'Wantedpages' => array( 'हवे_असलेले_लेख' ),
- 'Wantedcategories' => array( 'हवे_असलेले_वरà¥à¤—' ),
- 'Wantedfiles' => array( 'संचिकाहवी' ),
- 'Wantedtemplates' => array( 'साचाहवा' ),
+ 'Longpages' => array( 'मोठी_पाने' ),
+ 'MergeHistory' => array( 'इतिहास_à¤à¤•à¤¤à¥à¤°_करा' ),
+ 'MIMEsearch' => array( 'माईमशोध' ),
+ 'Mostcategories' => array( 'सरà¥à¤µà¤¾à¤¤_जासà¥à¤¤_वरà¥à¤—' ),
+ 'Mostimages' => array( 'सरà¥à¤µà¤¾à¤§à¤¿à¤•à¤¸à¤¾à¤‚धलेलीसंचिका' ),
'Mostlinked' => array( 'सरà¥à¤µà¤¾à¤¤_जासà¥à¤¤_जोडलेली' ),
'Mostlinkedcategories' => array( 'सरà¥à¤µà¤¾à¤¤_जासà¥à¤¤_जोडलेले_वरà¥à¤—', 'सरà¥à¤µà¤¾à¤¤_जासà¥à¤¤_वापरलेले_वरà¥à¤—' ),
'Mostlinkedtemplates' => array( 'सरà¥à¤µà¤¾à¤¤_जासà¥à¤¤_जोडलेले_साचे', 'सरà¥à¤µà¤¾à¤¤_जासà¥à¤¤_वापरलेले_साचे' ),
- 'Mostimages' => array( 'सरà¥à¤µà¤¾à¤§à¤¿à¤•à¤¸à¤¾à¤‚धलेलीसंचिका' ),
- 'Mostcategories' => array( 'सरà¥à¤µà¤¾à¤¤_जासà¥à¤¤_वरà¥à¤—' ),
'Mostrevisions' => array( 'सरà¥à¤µà¤¾à¤§à¤¿à¤•à¤†à¤µà¤°à¥à¤¤à¤¨à¥‡' ),
- 'Fewestrevisions' => array( 'कमीतकमीआवरà¥à¤¤à¤¨à¥‡' ),
- 'Shortpages' => array( 'छोटी_पाने' ),
- 'Longpages' => array( 'मोठी_पाने' ),
+ 'Movepage' => array( 'पान_हलवा' ),
+ 'Mycontributions' => array( 'माà¤à¥‡_योगदान' ),
+ 'Mypage' => array( 'माà¤à¥‡_पान' ),
+ 'Mytalk' => array( 'माà¤à¥à¤¯à¤¾_चरà¥à¤šà¤¾' ),
+ 'Newimages' => array( 'नवीन_चितà¥à¤°à¥‡' ),
'Newpages' => array( 'नवीन_पाने' ),
- 'Ancientpages' => array( 'जà¥à¤¨à¥€_पाने' ),
- 'Deadendpages' => array( 'टोकाची_पाने' ),
+ 'Popularpages' => array( 'पà¥à¤°à¤¸à¤¿à¤¦à¥à¤§_पाने' ),
+ 'Preferences' => array( 'पसंती' ),
+ 'Prefixindex' => array( 'उपसरà¥à¤—सà¥à¤šà¥€' ),
'Protectedpages' => array( 'सà¥à¤°à¤•à¥à¤·à¤¿à¤¤_पाने' ),
'Protectedtitles' => array( 'सà¥à¤°à¤•à¥à¤·à¤¿à¤¤_शीरà¥à¤·à¤•à¥‡' ),
- 'Allpages' => array( 'सरà¥à¤µ_पाने' ),
- 'Prefixindex' => array( 'उपसरà¥à¤—सà¥à¤šà¥€' ),
- 'Ipblocklist' => array( 'पà¥à¤°à¤¤à¤¿à¤¬à¤‚धनसà¥à¤šà¥€' ),
- 'Specialpages' => array( 'विशेष_पाने' ),
- 'Contributions' => array( 'योगदान' ),
- 'Emailuser' => array( 'विपतà¥à¤°à¤µà¤¾à¤ªà¤°à¤•à¤°à¥à¤¤à¤¾' ),
- 'Confirmemail' => array( 'विपतà¥à¤°à¤¨à¤•à¥à¤•à¥€à¤•à¤°à¤¾' ),
- 'Whatlinkshere' => array( 'येथे_काय_जोडले_आहे' ),
+ 'Randompage' => array( 'अविशिषà¥à¤Ÿ', 'अविशिषà¥à¤Ÿ_पृषà¥à¤ ' ),
+ 'Randomredirect' => array( 'अविशिषà¥à¤Ÿà¥à¤ªà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨' ),
+ 'Recentchanges' => array( 'अलीकडील_बदल' ),
'Recentchangeslinked' => array( 'सांधलेलेअलिकडीलबदल' ),
- 'Movepage' => array( 'पान_हलवा' ),
- 'Blockme' => array( 'मलापà¥à¤°à¤¤à¤¿à¤¬à¤‚धकरा' ),
- 'Booksources' => array( 'पà¥à¤¸à¥à¤¤à¤•à¤¸à¥à¤°à¥‹à¤¤' ),
- 'Categories' => array( 'वरà¥à¤—' ),
- 'Export' => array( 'निरà¥à¤¯à¤¾à¤¤' ),
- 'Version' => array( 'आवृतà¥à¤¤à¥€' ),
- 'Allmessages' => array( 'सरà¥à¤µ_निरोप' ),
- 'Log' => array( 'नोंद', 'नोंदी' ),
- 'Blockip' => array( 'पà¥à¤°à¤¤à¤¿à¤¬à¤‚ध', 'अंकपतà¥à¤¤à¤¾à¤ªà¥à¤°à¤¤à¤¿à¤¬à¤‚ध', 'सदसà¥à¤¯à¤ªà¥à¤°à¤¤à¤¿à¤¬à¤‚ध' ),
+ 'Revisiondelete' => array( 'आवरà¥à¤¤à¤¨à¤µà¤—ळा' ),
+ 'Search' => array( 'शोधा' ),
+ 'Shortpages' => array( 'छोटी_पाने' ),
+ 'Specialpages' => array( 'विशेष_पाने' ),
+ 'Statistics' => array( 'सांखà¥à¤¯à¤¿à¤•à¥€' ),
+ 'Tags' => array( 'खूणा' ),
+ 'Uncategorizedcategories' => array( 'अवरà¥à¤—ीकृत_वरà¥à¤—' ),
+ 'Uncategorizedimages' => array( 'अवरà¥à¤—ीकृत_चितà¥à¤°à¥‡' ),
+ 'Uncategorizedpages' => array( 'अवरà¥à¤—ीकृत_पाने' ),
+ 'Uncategorizedtemplates' => array( 'अवरà¥à¤—ीकृत_साचे' ),
'Undelete' => array( 'काढणे_रदà¥à¤¦_करा' ),
- 'Import' => array( 'आयात' ),
- 'Lockdb' => array( 'कà¥à¤²à¥à¤ªà¤¬à¤‚द_करा_(डेटाबेस)' ),
'Unlockdb' => array( 'विदागारताळेउघडा' ),
- 'Userrights' => array( 'खातेदाराचे_अधिकार' ),
- 'MIMEsearch' => array( 'माईमशोध' ),
- 'FileDuplicateSearch' => array( 'दà¥à¤¹à¥‡à¤°à¥€à¤¸à¤‚चिकाशोध' ),
- 'Unwatchedpages' => array( 'अपà¥à¤°à¥‡à¤•à¥à¤·à¥€à¤¤à¤ªà¤¾à¤¨à¥‡' ),
- 'Listredirects' => array( 'पà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨à¤¸à¥à¤šà¥€' ),
- 'Revisiondelete' => array( 'आवरà¥à¤¤à¤¨à¤µà¤—ळा' ),
+ 'Unusedcategories' => array( 'न_वापरलेले_वरà¥à¤—' ),
+ 'Unusedimages' => array( 'न_वापरलेली_चितà¥à¤°à¥‡' ),
'Unusedtemplates' => array( 'नउपयोगातआणलेलासाचा' ),
- 'Randomredirect' => array( 'अविशिषà¥à¤Ÿà¥à¤ªà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨' ),
- 'Mypage' => array( 'माà¤à¥‡_पान' ),
- 'Mytalk' => array( 'माà¤à¥à¤¯à¤¾_चरà¥à¤šà¤¾' ),
- 'Mycontributions' => array( 'माà¤à¥‡_योगदान' ),
- 'Listadmins' => array( 'पà¥à¤°à¤¬à¤‚धकांची_यादी' ),
- 'Listbots' => array( 'सांगकामà¥à¤¯à¤¾à¤‚ची_यादी' ),
- 'Popularpages' => array( 'पà¥à¤°à¤¸à¤¿à¤¦à¥à¤§_पाने' ),
- 'Search' => array( 'शोधा' ),
- 'Resetpass' => array( 'परवलीचाशबà¥à¤¦à¤¬à¤¦à¤²à¤¾' ),
+ 'Unwatchedpages' => array( 'अपà¥à¤°à¥‡à¤•à¥à¤·à¥€à¤¤à¤ªà¤¾à¤¨à¥‡' ),
+ 'Upload' => array( 'चढवा' ),
+ 'Userlogin' => array( 'सदसà¥à¤¯à¤ªà¥à¤°à¤µà¥‡à¤¶' ),
+ 'Userlogout' => array( 'सदसà¥à¤¯à¤¬à¤¹à¤¿à¤°à¥à¤—मन' ),
+ 'Userrights' => array( 'खातेदाराचे_अधिकार' ),
+ 'Version' => array( 'आवृतà¥à¤¤à¥€' ),
+ 'Wantedcategories' => array( 'हवे_असलेले_वरà¥à¤—' ),
+ 'Wantedfiles' => array( 'संचिकाहवी' ),
+ 'Wantedpages' => array( 'हवे_असलेले_लेख' ),
+ 'Wantedtemplates' => array( 'साचाहवा' ),
+ 'Watchlist' => array( 'पहारà¥â€à¤¯à¤¾à¤šà¥€_सूची' ),
+ 'Whatlinkshere' => array( 'येथे_काय_जोडले_आहे' ),
'Withoutinterwiki' => array( 'विनाआंतरविकि' ),
- 'MergeHistory' => array( 'इतिहास_à¤à¤•à¤¤à¥à¤°_करा' ),
- 'Filepath' => array( 'संचिकेचा_पतà¥à¤¤à¤¾_(पाथ)' ),
- 'Invalidateemail' => array( 'चूकदिनांकविपतà¥à¤°' ),
- 'Blankpage' => array( 'कोरेपान' ),
- 'LinkSearch' => array( 'दà¥à¤µà¤¾à¤¶à¥‹à¤§' ),
- 'DeletedContributions' => array( 'वगळलेलीयोगदाने' ),
- 'Tags' => array( 'खूणा' ),
- 'Activeusers' => array( 'कारà¥à¤¯à¤°à¤¤à¤¸à¤¦à¤¸à¥à¤¯' ),
);
$magicWords = array(
@@ -327,8 +328,8 @@ $messages = array(
'tog-shownumberswatching' => 'पहारा दिलेले सदसà¥à¤¯ दाखवा',
'tog-oldsig' => 'सधà¥à¤¯à¤¾à¤šà¥‡ सहीची à¤à¤²à¤•:',
'tog-fancysig' => 'सही विकिसंजà¥à¤žà¤¾ मà¥à¤¹à¤£à¥‚न वापरा (आपोआप दà¥à¤µà¥à¤¯à¤¾à¤¶à¤¿à¤µà¤¾à¤¯)',
-'tog-externaleditor' => 'कायम बाहà¥à¤¯ संपादक वापरा (फकà¥à¤¤ पà¥à¤°à¤¶à¤¿à¤•à¥à¤·à¤¿à¤¤ सदसà¥à¤¯à¤¾à¤‚साठीच, संगणकावर विशेष पà¥à¤°à¤£à¤¾à¤²à¥€ लागते) ([http://www.mediawiki.org/wiki/Manual:External_editors अधिक माहिती])',
-'tog-externaldiff' => 'इतिहास पानावर निवडलेलà¥à¤¯à¤¾ आवृतà¥à¤¤à¥à¤¯à¤¾à¤‚मधील बदल दाखविणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ बाहà¥à¤¯ पà¥à¤°à¤£à¤¾à¤²à¥€ वापरा (फकà¥à¤¤ पà¥à¤°à¤¶à¤¿à¤•à¥à¤·à¤¿à¤¤ सदसà¥à¤¯à¤¾à¤‚साठीच, संगणकावर विशेष पà¥à¤°à¤£à¤¾à¤²à¥€ लागते) ([http://www.mediawiki.org/wiki/Manual:External_editors अधिक माहिती])',
+'tog-externaleditor' => 'कायम बाहà¥à¤¯ संपादक वापरा (फकà¥à¤¤ पà¥à¤°à¤¶à¤¿à¤•à¥à¤·à¤¿à¤¤ सदसà¥à¤¯à¤¾à¤‚साठीच, संगणकावर विशेष पà¥à¤°à¤£à¤¾à¤²à¥€ लागते) ([//www.mediawiki.org/wiki/Manual:External_editors अधिक माहिती])',
+'tog-externaldiff' => 'इतिहास पानावर निवडलेलà¥à¤¯à¤¾ आवृतà¥à¤¤à¥à¤¯à¤¾à¤‚मधील बदल दाखविणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ बाहà¥à¤¯ पà¥à¤°à¤£à¤¾à¤²à¥€ वापरा (फकà¥à¤¤ पà¥à¤°à¤¶à¤¿à¤•à¥à¤·à¤¿à¤¤ सदसà¥à¤¯à¤¾à¤‚साठीच, संगणकावर विशेष पà¥à¤°à¤£à¤¾à¤²à¥€ लागते) ([//www.mediawiki.org/wiki/Manual:External_editors अधिक माहिती])',
'tog-showjumplinks' => '"कडे जा" सà¥à¤—म दà¥à¤µà¥‡, उपलबà¥à¤§ करा.',
'tog-uselivepreview' => 'संपादन करता करताच à¤à¤²à¤• दाखवा (जावासà¥à¤•à¥à¤°à¥€à¤ªà¥à¤Ÿ)(पà¥à¤°à¤¯à¥‹à¤—कà¥à¤·à¤®)',
'tog-forceeditsummary' => 'जर ’बदलांचा आढावा’ दिला नसेल तर मला सूचित करा',
@@ -423,15 +424,7 @@ $messages = array(
'listingcontinuesabbrev' => 'पà¥à¤¢à¥‡.',
'index-category' => 'अनà¥à¤•à¥à¤°à¤®à¤¿à¤¤ पाने',
'noindex-category' => 'अनà¥à¤•à¥à¤°à¤® नसलेली पाने',
-
-'mainpagetext' => "'''मीडियाविकीचे इनà¥à¤¸à¥à¤Ÿà¥‰à¤²à¥‡à¤¶à¤¨ पूरà¥à¤£.'''",
-'mainpagedocfooter' => 'विकी सॉफà¥à¤Ÿà¤µà¥‡à¤…र वापरणà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾ [http://meta.wikimedia.org/wiki/Help:Contents यूजर गाईड] पहा.
-
-== सà¥à¤°à¥à¤µà¤¾à¤¤ ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings कॉनà¥à¤«à¤¿à¤—रेशन सेटींगची यादी]
-* [http://www.mediawiki.org/wiki/Manual:FAQ मीडियाविकी नेहमी विचारले जाणारे पà¥à¤°à¤¶à¥à¤¨]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce मीडियाविकि मेलिंग लिसà¥à¤Ÿ]',
+'broken-file-category' => 'तà¥à¤Ÿà¤²à¥‡à¤²à¥à¤¯à¤¾ संचिका दà¥à¤µà¥à¤¯à¤¾à¤‚सह असलेली पाने',
'about' => 'चà¥à¤¯à¤¾ विषयी',
'article' => 'लेख',
@@ -483,10 +476,10 @@ $messages = array(
'history' => 'जà¥à¤¨à¥à¤¯à¤¾ आवृतà¥à¤¤à¥€',
'history_short' => 'इतिहास',
'updatedmarker' => 'शेवटचà¥à¤¯à¤¾ भेटीनंतर बदलले',
-'info_short' => 'माहिती',
'printableversion' => 'छापणà¥à¤¯à¤¾à¤¯à¥‹à¤—à¥à¤¯ आवृतà¥à¤¤à¥€',
'permalink' => 'शाशà¥à¤µà¤¤ दà¥à¤µà¤¾',
'print' => 'छापा',
+'view' => 'दाखवा',
'edit' => 'संपादन',
'create' => 'तयार करा',
'editthispage' => 'हे पृषà¥à¤  संपादित करा',
@@ -494,6 +487,7 @@ $messages = array(
'delete' => 'वगळा',
'deletethispage' => 'हे पृषà¥à¤  काढून टाका',
'undelete_short' => 'पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¨ {{PLURAL:$1|à¤à¤• संपादन|$1 संपादने}}',
+'viewdeleted_short' => '{{PLURAL:$1|à¤à¤• वगळलेले संपादन|$1 वगळलेली संपादने}} पहा.',
'protect' => 'सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करा',
'protect_change' => 'बदला',
'protectthispage' => 'हे पृषà¥à¤  सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ करा',
@@ -574,6 +568,8 @@ $1',
'toc' => 'अनà¥à¤•à¥à¤°à¤®à¤£à¤¿à¤•à¤¾',
'showtoc' => 'दाखवा',
'hidetoc' => 'लपवा',
+'collapsible-collapse' => 'लपवा',
+'collapsible-expand' => 'विसà¥à¤¤à¤¾à¤°',
'thisisdeleted' => 'आवलोकन किंवा पूनरà¥à¤¸à¥à¤¥à¤¾à¤ªà¤¨ $1?',
'viewdeleted' => 'आवलोकन $1?',
'restorelink' => '{{PLURAL:$1|à¤à¤• वगळलेले संपादन|$1 वगळलेली संपादने}}',
@@ -587,6 +583,8 @@ $1',
'feed-atom' => 'à¤à¤Ÿà¤®',
'feed-rss' => 'आर.à¤à¤¸.à¤â€à¤¸.',
'red-link-title' => '$1 (पान असà¥à¤¤à¤¿à¤¤à¥à¤¤à¥à¤µà¤¾à¤¤ नाही)',
+'sort-descending' => 'उतरतà¥à¤¯à¤¾ कà¥à¤°à¤®à¤¾à¤¨à¥‡ लावा',
+'sort-ascending' => 'चढतà¥à¤¯à¤¾ कà¥à¤°à¤®à¤¾à¤¨à¥‡ लावा',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'लेख',
@@ -667,12 +665,12 @@ MySQL returned error "$3: $4".',
'protectedpagetext' => 'हे पान बदल होऊ नयेत मà¥à¤¹à¤£à¥à¤¨ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ केले आहे.',
'viewsourcetext' => 'तà¥à¤®à¥à¤¹à¥€ या पानाचा सà¥à¤°à¥‹à¤¤ पाहू शकता व पà¥à¤°à¤¤ करू शकता:',
'protectedinterface' => 'हे पान सॉफà¥à¤Ÿà¤µà¥‡à¤…रला इंटरफेस लेखन पà¥à¤°à¤µà¤¤à¥‡, मà¥à¤¹à¤£à¥‚न दà¥à¤°à¥‚पयोग टाळणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ संरकà¥à¤·à¤¿à¤¤ केलेले आहे.',
-'editinginterface' => "'''सावधान:''' तà¥à¤®à¥à¤¹à¥€ संचेतनाचे(Software) संपरà¥à¤•à¤®à¤¾à¤§à¥à¤¯à¤® मजकà¥à¤° असलेले पान संपादीत करित आहात.या पानावरील बदल इतर उपयोगकरà¥à¤¤à¥à¤¯à¤¾à¤‚चà¥à¤¯à¤¾ उपयोगकरà¥à¤¤à¤¾-संपरà¥à¤•à¤®à¤¾à¤§à¥à¤¯à¤®à¤¾à¤šà¥‡ सà¥à¤µà¤°à¥‚प पालटवू शकते.भाषांतरणांकरिता कृपया मिडीयाविकि सà¥à¤¥à¤¾à¤¨à¤¿à¤•à¥€à¤•à¤°à¤£ पà¥à¤°à¤•à¤²à¥à¤ªà¤¾à¤šà¥à¤¯à¤¾ [http://translatewiki.net/wiki/Main_Page?setlang=mr बीटाविकि] सà¥à¤µà¤¿à¤§à¥‡à¤šà¤¾ उपयोग करणà¥à¤¯à¤¾à¤¬à¤¦à¥à¤¦à¤² विचार करा.",
+'editinginterface' => "'''सावधान:''' तà¥à¤®à¥à¤¹à¥€ संचेतनाचे(Software) संपरà¥à¤•à¤®à¤¾à¤§à¥à¤¯à¤® मजकà¥à¤° असलेले पान संपादीत करित आहात.या पानावरील बदल इतर उपयोगकरà¥à¤¤à¥à¤¯à¤¾à¤‚चà¥à¤¯à¤¾ उपयोगकरà¥à¤¤à¤¾-संपरà¥à¤•à¤®à¤¾à¤§à¥à¤¯à¤®à¤¾à¤šà¥‡ सà¥à¤µà¤°à¥‚प पालटवू शकते.भाषांतरणांकरिता कृपया मिडीयाविकि सà¥à¤¥à¤¾à¤¨à¤¿à¤•à¥€à¤•à¤°à¤£ पà¥à¤°à¤•à¤²à¥à¤ªà¤¾à¤šà¥à¤¯à¤¾ [//translatewiki.net/wiki/Main_Page?setlang=mr बीटाविकि] सà¥à¤µà¤¿à¤§à¥‡à¤šà¤¾ उपयोग करणà¥à¤¯à¤¾à¤¬à¤¦à¥à¤¦à¤² विचार करा.",
'sqlhidden' => 'छूपी à¤à¤¸à¥à¤•à¥à¤¯à¥‚à¤à¤² पृचà¥à¤›à¤¾ (SQL query hidden)',
'cascadeprotected' => 'हे पान संपादनांपासून सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ केले गेलेले आहे, कारण ते खालील {{PLURAL:$1|पानात|पानांमधà¥à¤¯à¥‡}} अंतरà¥à¤­à¥‚त केलेले आहे, की जे पान/जी पाने शिडी परà¥à¤¯à¤¾à¤¯à¤¾à¤¨à¥‡ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ आहेत:
$2',
'namespaceprotected' => "'''$1''' नामविशà¥à¤µà¤¾à¤¤à¥€à¤² पाने बदलणà¥à¤¯à¤¾à¤šà¥€ आपणांस परवानगी नाही.",
-'customcssjsprotected' => 'या पानावर इतर सदसà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त पसंती असलà¥à¤¯à¤¾à¤®à¥à¤³à¥‡, तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ हे पान संपादीत करणà¥à¤¯à¤¾à¤šà¥€ परवानगी नाही.',
+'customcssprotected' => 'या पानावर इतर सदसà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त पसंती असलà¥à¤¯à¤¾à¤®à¥à¤³à¥‡, तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ हे सीà¤à¤¸à¤à¤¸ पान संपादीत करणà¥à¤¯à¤¾à¤šà¥€ परवानगी नाही.',
'ns-specialprotected' => 'विशेष पाने संपादीत करता येत नाहीत.',
'titleprotected' => "या शीरà¥à¤·à¤•à¤¾à¤šà¥‡ पान सदसà¥à¤¯ [[User:$1|$1]]ने निरà¥à¤®à¥€à¤¤ करणà¥à¤¯à¤¾à¤ªà¤¾à¤¸à¥‚न सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ केलेले आहे.
''$2'' हे कारण नमूद केलेले आहे.",
@@ -711,6 +709,7 @@ $2',
'createaccount' => 'नवीन खातà¥à¤¯à¤¾à¤šà¥€ नोंदणी करा',
'gotaccount' => "जà¥à¤¨à¥‡ खाते आहे? '''$1'''.",
'gotaccountlink' => 'पà¥à¤°à¤µà¥‡à¤¶ करा',
+'userlogin-resetlink' => 'पà¥à¤°à¤µà¥‡à¤¶ तपशील विसरला आसाल तर येथे टिचकी मारा.',
'createaccountmail' => 'इमेल दà¥à¤µà¤¾à¤°à¥‡',
'createaccountreason' => 'कारण:',
'badretype' => 'आपला परवलीचा शबà¥à¤¦ चà¥à¤•à¥€à¤šà¤¾ आहे.',
@@ -720,11 +719,13 @@ $2',
'createaccounterror' => 'हे खाते तयार करता येउ शकले नाही:$1',
'nocookiesnew' => 'सदसà¥à¤¯ खाते उघडले ,पण तà¥à¤®à¥à¤¹à¥€ खाते वापरून दाखल à¤à¤¾à¤²à¥‡à¤²à¥‡ नाही आहात.{{SITENAME}} सदसà¥à¤¯à¤¾à¤‚ना दाखल करून घेताना तà¥à¤¯à¤¾à¤‚चà¥à¤¯à¤¾ सà¥à¤®à¥ƒà¤¤à¥€à¤¶à¥‡à¤· (cookies) वापरते.तà¥à¤®à¥à¤¹à¥€ सà¥à¤®à¥ƒà¤¤à¥€à¤¶à¥‡à¤· सà¥à¤µà¤¿à¤§à¤¾ अनà¥à¤ªà¤²à¤¬à¥à¤§ टेवली आहे.ती कृपया उपलबà¥à¤§ करा,आणि नंतर तà¥à¤®à¤šà¥à¤¯à¤¾ नवीन सदसà¥à¤¯ नावाने आणि परवलीने दाखल वà¥à¤¹à¤¾.',
'nocookieslogin' => '{{SITENAME}} सदसà¥à¤¯à¤¾à¤‚ना दाखल करून घेताना तà¥à¤¯à¤¾à¤‚चà¥à¤¯à¤¾ सà¥à¤®à¥ƒà¤¤à¥€à¤¶à¥‡à¤· (cookies) वापरते.तà¥à¤®à¥à¤¹à¥€ सà¥à¤®à¥ƒà¤¤à¥€à¤¶à¥‡à¤· सà¥à¤µà¤¿à¤§à¤¾ अनà¥à¤ªà¤²à¤¬à¥à¤§ टेवली आहे.सà¥à¤®à¥ƒà¤¤à¥€à¤¶à¥‡à¤· सà¥à¤µà¤¿à¤§à¤¾ कृपया उपलबà¥à¤§ करा,आणि दाखल होणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ पà¥à¤¨à¥à¤¹à¤¾ पà¥à¤°à¤¯à¤¤à¥à¤¨ करा.',
+'nocookiesfornew' => 'हे सदसà¥à¤¯ खाते असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ नाही, तà¥à¤¯à¤¾à¤®à¥à¤³à¥‡ आमà¥à¤¹à¥€ तà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ सà¥à¤°à¥‹à¤¤à¤¾à¤šà¥€ खातà¥à¤°à¥€ करू शकलो नाही.
+तà¥à¤®à¤šà¥‡ सà¥à¤®à¥ƒà¤¤à¤¿à¤¶à¥‡à¤· उपलबà¥à¤§ असणà¥à¤¯à¤¾à¤šà¥€ खातà¥à¤°à¥€ करा, किंवा थोडà¥à¤¯à¤¾ वेळाने हे पान पà¥à¤¨à¥à¤¹à¤¾ पहा.',
'noname' => 'आपण नोंदणीसाठी सदसà¥à¤¯à¤¾à¤šà¥‡ योगà¥à¤¯ नाव लिहिले नाही.',
'loginsuccesstitle' => 'आपलà¥à¤¯à¤¾ पà¥à¤°à¤µà¥‡à¤¶à¤¾à¤šà¥€ नोंदणी यशसà¥à¤µà¥€à¤°à¤¿à¤¤à¥à¤¯à¤¾ पूरà¥à¤£ à¤à¤¾à¤²à¥€',
'loginsuccess' => "'''तà¥à¤®à¥à¤¹à¥€ {{SITENAME}} वर \"\$1\" नावाने पà¥à¤°à¤µà¥‡à¤¶ केला आहे.'''",
'nosuchuser' => '"$1" या नावाचा कोणताही सदसà¥à¤¯ नाही.तà¥à¤®à¤šà¥‡ शà¥à¤¦à¥à¤§à¤²à¥‡à¤–न तपासा, किंवा [[Special:UserLogin/signup|नवीन खाते]] तयार करा.',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" या नावाचा सदसà¥à¤¯ नाही. लिहीताना आपली चूक तर नाही ना à¤à¤¾à¤²à¥€?',
+'nosuchusershort' => '"$1" या नावाचा सदसà¥à¤¯ नाही. लिहीताना आपली चूक तर नाही ना à¤à¤¾à¤²à¥€?',
'nouserspecified' => 'तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ सदसà¥à¤¯à¤¨à¤¾à¤µ नमà¥à¤¦ करावे लागेल.',
'login-userblocked' => 'या सदसà¥à¤¯à¤¾à¤šà¥‡ खाते ’पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित’ आहे. तà¥à¤¯à¤¾à¤¸ पà¥à¤°à¤µà¥‡à¤¶ करॠदेणे शकà¥à¤¯ नाही.',
'wrongpassword' => 'आपला परवलीचा शबà¥à¤¦ चà¥à¤•à¥€à¤šà¤¾ आहे, पà¥à¤¨à¥à¤¹à¤¾ à¤à¤•à¤¦à¤¾ पà¥à¤°à¤¯à¤¤à¥à¤¨ करा.',
@@ -763,13 +764,14 @@ $2',
'usernamehasherror' => 'सदसà¥à¤¯à¤¨à¤¾à¤®à¤¾à¤¤ "हॅश" वरà¥à¤£ असू शकत नाहीत.',
'login-throttled' => 'तà¥à¤®à¥à¤¹à¥€ पà¥à¤°à¤µà¥‡à¤¶ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ खूप पà¥à¤°à¤¯à¤¤à¥â€à¤¨ केले आहेत.
कृपया पà¥à¤¨à¥à¤¹à¤¾ पà¥à¤°à¤¯à¤¤à¥â€à¤¨ करणà¥à¤¯à¤¾à¤†à¤§à¥€ थांबा',
+'login-abort-generic' => 'तà¥à¤®à¤šà¤¾ पà¥à¤°à¤µà¥‡à¤¶ अयशसà¥à¤µà¥€ होऊन रदà¥à¤¦ à¤à¤¾à¤²à¤¾.',
'loginlanguagelabel' => 'भाषा: $1',
'suspicious-userlogout' => 'तà¥à¤®à¤šà¥‡ अदाखल होणे पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित à¤à¤¾à¤²à¥‡ कारण असे दिसते की ते तà¥à¤Ÿà¤²à¥‡à¤²à¥à¤¯à¤¾ नà¥à¤¯à¤¾à¤¹à¤¾à¤³à¤•à¤¾à¤¦à¥à¤µà¤¾à¤°à¥‡ पाठवले गेले.',
# E-mail sending
'php-mail-error-unknown' => 'पीà¤à¤šà¤ªà¥€à¤šà¥à¤¯à¤¾ विपतà¥à¤°() परà¥à¤¯à¤¾à¤¯à¤¾à¤¤ अजà¥à¤žà¤¾à¤¤ चूक',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'परवलीचा शबà¥à¤¦ बदला',
'resetpass_announce' => 'तà¥à¤®à¥à¤¹à¥€ इमेलमधून दिलेलà¥à¤¯à¤¾ तातà¥à¤ªà¥à¤°à¤¤à¥à¤¯à¤¾ शबà¥à¤¦à¤¾à¤‚काने पà¥à¤°à¤µà¥‡à¤¶ केलेला आहे. आपली सदसà¥à¤¯ नोंदणी पूरà¥à¤£ करणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ कृपया इथे नवीन परवलीचा शबà¥à¤¦ दà¥à¤¯à¤¾:',
'resetpass_text' => '<!-- मजकूर इथे लिहा -->',
@@ -787,6 +789,29 @@ $2',
कदाचित तà¥à¤®à¥à¤¹à¥€ आधीच तो यशसà¥à¤µà¥€à¤°à¥€à¤¤à¥à¤¯à¤¾ बदलला असेल किंवा तातà¥à¤ªà¥à¤°à¤¤à¤¾ परवलीचा शबà¥à¤¦ मागवला असेल.',
'resetpass-temp-password' => 'तातà¥à¤ªà¥à¤°à¤¤à¤¾ परवलीचा शबà¥à¤¦',
+# Special:PasswordReset
+'passwordreset' => 'परवलीचा शबà¥à¤¦ पूरà¥à¤µà¤µà¤¤ करा',
+'passwordreset-text' => 'तà¥à¤®à¤šà¥à¤¯à¤¾ खातà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ माहितीसंदरà¥à¤­à¤¾à¤¤ विपतà¥à¤°à¤¾à¤¦à¥à¤µà¤¾à¤°à¥‡ अनà¥à¤¸à¥à¤®à¤¾à¤°à¤• येणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ हा अरà¥à¤œ पूरà¥à¤£ भरा.',
+'passwordreset-legend' => 'परवलीचा शबà¥à¤¦ पूरà¥à¤µà¤µà¤¤ करा',
+'passwordreset-disabled' => 'या विकीवर परवलीचा शबà¥à¤¦ पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ करता येत नाही.',
+'passwordreset-pretext' => '{{PLURAL:$1||खालील माहितीचà¥à¤¯à¤¾ भागांपैकी à¤à¤• भाग लिहा}}',
+'passwordreset-username' => 'सदसà¥à¤¯à¤¨à¤¾à¤µ:',
+'passwordreset-email' => 'विपतà¥à¤° पतà¥à¤¤à¤¾',
+'passwordreset-emailtitle' => '{{SITENAME}} वर खातà¥à¤¯à¤¾à¤šà¥€ माहिती',
+'passwordreset-emailtext-ip' => 'कà¥à¤£à¥€à¤¤à¤°à¥€ (कदाचित तà¥à¤®à¥à¤¹à¥€, अंकपतà¥à¤¤à¤¾ $1 कडून) {{SITENAME}} करिता ’नवा परवलीचा शबà¥à¤¦à¤¾à¤‚क पाठवावा’ अशी विनंती केली आहे ($4).
+"$2" सदसà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾ परवलीचा शबà¥à¤¦à¤¾à¤‚क "$3" à¤à¤¾à¤²à¤¾ आहे.
+तà¥à¤®à¥à¤¹à¥€ आता पà¥à¤°à¤µà¥‡à¤¶ करा व तà¥à¤®à¤šà¤¾ परवलीचा शबà¥à¤¦à¤¾à¤‚क बदला. तà¥à¤®à¤šà¤¾ असà¥à¤¥à¤¾à¤¯à¥€ शबà¥à¤¦à¤¾à¤‚क {{PLURAL:$5|à¤à¤•à¤¾ दिवसात|$5 दिवसांत}} संपेल.
+
+जर ही विनंती इतर कà¥à¤£à¥€ केली असेल किंवा तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ तà¥à¤®à¤šà¤¾ परवलीचा शबà¥à¤¦à¤¾à¤‚क आठवला असेल आणि तà¥à¤®à¥à¤¹à¥€ तो आता बदलू इचà¥à¤›à¤¿à¤¤ नसाल तर, तà¥à¤®à¥à¤¹à¥€ हा संदेश दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ करून जà¥à¤¨à¤¾ परवलीचा शबà¥à¤¦à¤¾à¤‚क वापरत राहू शकता.',
+'passwordreset-emailtext-user' => 'कà¥à¤£à¥€à¤¤à¤°à¥€ (कदाचित तà¥à¤®à¥à¤¹à¥€, सदसà¥à¤¯ $1 कडून) {{SITENAME}} करिता ’नवा परवलीचा शबà¥à¤¦à¤¾à¤‚क पाठवावा’ अशी विनंती केली आहे ($4).
+"$2" सदसà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾ परवलीचा शबà¥à¤¦à¤¾à¤‚क "$3" à¤à¤¾à¤²à¤¾ आहे.
+तà¥à¤®à¥à¤¹à¥€ आता पà¥à¤°à¤µà¥‡à¤¶ करा व तà¥à¤®à¤šà¤¾ परवलीचा शबà¥à¤¦à¤¾à¤‚क बदला. तà¥à¤®à¤šà¤¾ असà¥à¤¥à¤¾à¤¯à¥€ शबà¥à¤¦à¤¾à¤‚क {{PLURAL:$5|à¤à¤•à¤¾ दिवसात|$5 दिवसांत}} संपेल.
+
+जर ही विनंती इतर कà¥à¤£à¥€ केली असेल किंवा तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ तà¥à¤®à¤šà¤¾ परवलीचा शबà¥à¤¦à¤¾à¤‚क आठवला असेल आणि तà¥à¤®à¥à¤¹à¥€ तो आता बदलू इचà¥à¤›à¤¿à¤¤ नसाल तर, तà¥à¤®à¥à¤¹à¥€ हा संदेश दà¥à¤°à¥à¤²à¤•à¥à¤·à¤¿à¤¤ करून जà¥à¤¨à¤¾ परवलीचा शबà¥à¤¦à¤¾à¤‚क वापरत राहू शकता.',
+'passwordreset-emailelement' => 'सदसà¥à¤¯à¤¨à¤¾à¤µ: $1
+असà¥à¤¥à¤¾à¤¯à¥€ परवलीचा शबà¥à¤¦: $2',
+'passwordreset-emailsent' => 'आठवणीसाठी à¤à¤• विपतà¥à¤° पाठवणà¥à¤¯à¤¾à¤¤ आले आहे.',
+
# Edit page toolbar
'bold_sample' => 'ठळक मजकूर',
'bold_tip' => 'ठळक',
@@ -798,8 +823,6 @@ $2',
'extlink_tip' => 'बाहà¥à¤¯ दà¥à¤µà¥à¤¯à¤¾à¤¤ (http:// हा उपसरà¥à¤— विसरू नका)',
'headline_sample' => 'अगà¥à¤°à¤¶à¥€à¤°à¥à¤· मजकà¥à¤°',
'headline_tip' => 'दà¥à¤µà¤¿à¤¤à¥€à¤¯-सà¥à¤¤à¤° अगà¥à¤°à¤¶à¥€à¤°à¥à¤·',
-'math_sample' => 'इथे सूतà¥à¤° लिहा',
-'math_tip' => 'गणितीय सूतà¥à¤° (LaTeX)',
'nowiki_sample' => 'मजकूर इथे लिहा',
'nowiki_tip' => 'विकिभाषेपà¥à¤°à¤®à¤¾à¤£à¥‡ बदल करू नका',
'image_tip' => 'संलगà¥à¤¨ संचिका',
@@ -876,7 +899,7 @@ $2',
'noarticletext-nopermission' => 'या लेखात सधà¥à¤¯à¤¾ काहीही मजकूर नाही.
तà¥à¤®à¥à¤¹à¥€ विकिपिडीयावरील इतर लेखांमधà¥à¤¯à¥‡ या [[Special:Search/{{PAGENAME}}|मथळà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ शोध घेऊ शकता]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} इतर यादà¥à¤¯à¤¾ शोधा],
किंवा हा लेख [{{fullurl:{{FULLPAGENAME}}|action=edit}} लिहू शकता]</span>.',
-'userpage-userdoesnotexist' => '"$1" सदसà¥à¤¯ खाते नोंदीकॄत नाही.कृपया हे पान तà¥à¤®à¥à¤¹à¥€ संपादीत किंवा नवà¥à¤¯à¤¾à¤¨à¥‡ तयार करू इचà¥à¤›à¤¿à¤¤à¤¾ का या बदà¥à¤¦à¤² विचार करा.',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" सदसà¥à¤¯ खाते नोंदीकॄत नाही.कृपया हे पान तà¥à¤®à¥à¤¹à¥€ संपादीत किंवा नवà¥à¤¯à¤¾à¤¨à¥‡ तयार करू इचà¥à¤›à¤¿à¤¤à¤¾ का या बदà¥à¤¦à¤² विचार करा.',
'userpage-userdoesnotexist-view' => 'सदसà¥à¤¯à¤–ाते "$1" हे नोंदलेले नाही.',
'blocked-notice-logextract' => 'हा सदसà¥à¤¯ सधà¥à¤¯à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित आहे.
सरà¥à¤µà¤¾à¤‚त नवीन पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन यादी खाली संदरà¥à¤­à¤¾à¤¸à¤¾à¤ à¥€ दिली आहे:',
@@ -903,6 +926,7 @@ $2',
'token_suffix_mismatch' => "'''तà¥à¤®à¤šà¥‡ संपादन रदà¥à¤¦ करणà¥à¤¯à¤¾à¤¤ आलेले आहे कारण तà¥à¤®à¤šà¥à¤¯à¤¾ कà¥à¤²à¤¾à¤¯à¤‚टनी तà¥à¤®à¤šà¥à¤¯à¤¾ संपादनातील उदà¥à¤—ारवाचक चिनà¥à¤¹à¤¾à¤‚मधà¥à¤¯à¥‡ (punctuation) बदल केलेले आहेत.
पानातील मजकूर खराब होऊ नये यासाठी संपादन रदà¥à¤¦ करणà¥à¤¯à¤¾à¤¤ आलेले आहे.
असे कदाचित तà¥à¤®à¥à¤¹à¥€ अनामिक proxy वापरत असलà¥à¤¯à¤¾à¤¨à¥‡ होऊ शकते.'''",
+'edit_form_incomplete' => 'â€â€™à¤¤à¥à¤®à¤šà¥à¤¯à¤¾ संपादनाचा काही भाग सरà¥à¤µà¥à¤¹à¤°à¤ªà¤°à¥à¤¯à¤‚त पोचला नाही; तà¥à¤®à¤šà¥‡ संपादन पूरà¥à¤£ आहे का याची पà¥à¤¨à¥à¤¹à¤¾ खातà¥à¤°à¥€ करा.',
'editing' => '$1 चे संपादन होत आहे.',
'editingsection' => '$1 (विभाग) संपादन',
'editingcomment' => '$1 चे संपादन (पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¤¿à¤¯à¤¾)',
@@ -1250,9 +1274,10 @@ $1",
'changepassword' => 'परवलीचा शबà¥à¤¦ बदला',
'prefs-skin' => 'तà¥à¤µà¤šà¤¾',
'skin-preview' => 'à¤à¤²à¤•',
-'prefs-math' => 'गणित',
'datedefault' => 'पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ नाही',
+'prefs-beta' => 'बीटा चेहेरेपटà¥à¤Ÿà¥€',
'prefs-datetime' => 'दिनांक आणि वेळ',
+'prefs-labs' => 'पà¥à¤°à¤¾à¤¯à¥‹à¤—िक वैशिषà¥à¤Ÿà¥à¤¯à¥‡',
'prefs-personal' => 'सदसà¥à¤¯ वà¥à¤¯à¤•à¥à¤¤à¤¿à¤°à¥‡à¤–ा',
'prefs-rc' => 'अलीकडील बदल',
'prefs-watchlist' => 'पहारà¥â€à¤¯à¤¾à¤šà¥€ सूची',
@@ -1274,8 +1299,6 @@ $1",
'columns' => 'सà¥à¤¤à¤‚भ:',
'searchresultshead' => 'शोध',
'resultsperpage' => 'पà¥à¤°à¤¤à¤¿ पान धडका:',
-'contextlines' => 'पà¥à¤°à¤¤à¤¿ धडक ओळी:',
-'contextchars' => 'पà¥à¤°à¤¤à¤¿à¤“ळ संदरà¥à¤­:',
'stub-threshold' => '<a href="#" class="stub">अंकà¥à¤°à¥€à¤¤ दà¥à¤µà¥à¤¯à¤¾à¤‚चà¥à¤¯à¤¾</a> रचनेची नांदी (बाईटà¥à¤¸):',
'stub-threshold-disabled' => 'अकà¥à¤·à¤® केले',
'recentchangesdays' => 'अलिकडील बदल मधील दाखवावयाचे दिवस:',
@@ -1285,6 +1308,7 @@ $1",
'savedprefs' => 'तà¥à¤®à¤šà¥à¤¯à¤¾ पसंती जतन केलà¥à¤¯à¤¾ आहेत.',
'timezonelegend' => 'वेळकà¥à¤·à¥‡à¤¤à¥à¤°',
'localtime' => 'सà¥à¤¥à¤¾à¤¨à¤¿à¤• वेळ:',
+'timezoneuseserverdefault' => 'सरà¥à¤µà¥à¤¹à¤° मूलसà¥à¤¥à¤¿à¤¤à¥€ वापरा ($1)',
'timezoneuseoffset' => 'इतर (वेळेतील अंतर लिहा)',
'timezoneoffset' => 'समासफरक¹:',
'servertime' => 'विदागारदातà¥à¤¯à¤¾à¤šà¥€ वेळ',
@@ -1327,7 +1351,7 @@ $1",
'gender-female' => 'सà¥à¤¤à¥à¤°à¥€',
'email' => 'विपतà¥à¤°',
'prefs-help-realname' => 'तà¥à¤®à¤šà¥‡ खरे नाव (वैकलà¥à¤ªà¤¿à¤•): हे नाव दिलà¥à¤¯à¤¾à¤¸ आपले योगदान या नावाखाली नोंदले व दाखवले जाईल.',
-'prefs-help-email' => 'विरोप(ईमेल)(वैकलà¥à¤ªà¤¿à¤•):इतरांना सदसà¥à¤¯ किंवा सदसà¥à¤¯_चरà¥à¤šà¤¾ पानातून, तà¥à¤®à¤šà¥€ ओळख देणà¥à¤¯à¤¾à¤šà¥€ आवशà¥à¤¯à¤•à¤¤à¤¾ न ठेवता , तà¥à¤®à¤šà¥à¤¯à¤¾à¤¶à¥€ संपरà¥à¤• सà¥à¤µà¤¿à¤§à¤¾ पà¥à¤°à¤µà¤¤à¥‡.',
+'prefs-help-email' => 'विपतà¥à¤° (वैकलà¥à¤ªà¤¿à¤•) :इतरांना सदसà¥à¤¯ किंवा सदसà¥à¤¯à¤šà¤°à¥à¤šà¤¾ पानातून, तà¥à¤®à¤šà¥€ ओळख देणà¥à¤¯à¤¾à¤šà¥€ आवशà¥à¤¯à¤•à¤¤à¤¾ न ठेवता, तà¥à¤®à¤šà¥à¤¯à¤¾à¤¶à¥€ संपरà¥à¤• सà¥à¤µà¤¿à¤§à¤¾ पà¥à¤°à¤µà¤¤à¥‡.',
'prefs-help-email-required' => 'विपतà¥à¤°(ईमेल)पतà¥à¤¤à¤¾ लागेल.',
'prefs-info' => 'मूलभूत माहिती',
'prefs-i18n' => 'आंतरराषà¥à¤Ÿà¥à¤°à¥€à¤¯à¥€à¤•à¤°à¤£',
@@ -1452,7 +1476,6 @@ $1",
'right-userrights' => 'सरà¥à¤µ सदसà¥à¤¯à¤¾à¤‚चे अधिकार संपादा',
'right-userrights-interwiki' => 'इतर विकिंवर सदसà¥à¤¯ अधिकार बदला',
'right-siteadmin' => 'माहितीसाठà¥à¤¯à¤¾à¤²à¤¾ कà¥à¤²à¥à¤ª लावा अथवा काढा',
-'right-reset-passwords' => 'इतर सदसà¥à¤¯à¤¾à¤‚चा परवलीचा शबà¥à¤¦ पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ करा',
'right-sendemail' => 'इतर सदसà¥à¤¯à¤¾à¤‚ना विपतà¥à¤°à¥‡ पाठवा',
# User rights log
@@ -1463,7 +1486,7 @@ $1",
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'हे पान वाचा',
-'action-edit' => 'हे पान संपादा',
+'action-edit' => 'हे पान संपादित करा',
'action-createpage' => 'लेख बनवा',
'action-createtalk' => 'चरà¥à¤šà¤¾ पृषà¥à¤ à¥‡ तयार करा',
'action-createaccount' => 'हे सदसà¥à¤¯à¤–ाते तयार करा',
@@ -1491,8 +1514,8 @@ $1",
'action-unwatchedpages' => 'न पाहिलेलà¥à¤¯à¤¾ पानांची यादी पहा',
'action-trackback' => 'à¤à¤• विपरित पथ पाठवा',
'action-mergehistory' => 'पानाचा इतिहास विलीन करा',
-'action-userrights' => 'सरà¥à¤µ सदसà¥à¤¯à¤¾à¤‚चे अधिकार संपादा',
-'action-userrights-interwiki' => 'इतर विकिंवरचà¥à¤¯à¤¾ सदसà¥à¤¯à¤¾à¤‚चे अधिकार संपादा',
+'action-userrights' => 'सरà¥à¤µ सदसà¥à¤¯à¤¾à¤‚चे अधिकार संपादित करा',
+'action-userrights-interwiki' => 'इतर विकिंवरचà¥à¤¯à¤¾ सदसà¥à¤¯à¤¾à¤‚चे अधिकार संपादित करा',
'action-siteadmin' => 'माहितीसाठà¥à¤¯à¤¾à¤²à¤¾ कà¥à¤²à¥à¤ª लावा अथवा काढा',
# Recent changes
@@ -1575,11 +1598,11 @@ $1",
'minlength1' => 'संचिकानाम किमान à¤à¤• अकà¥à¤·à¤°à¤¾à¤šà¥‡ हवे.',
'illegalfilename' => '"$1" या संचिकानामात शीरà¥à¤·à¤•à¤¾à¤¤ चालू न शकणारी अकà¥à¤·à¤°à¥‡ आहेत. कृपया संचिकानाम बदलून पà¥à¤¨à¥à¤¹à¤¾ चढवणà¥à¤¯à¤¾à¤šà¤¾ पà¥à¤°à¤¯à¤¤à¥à¤¨ करा.',
'badfilename' => 'संचिकेचे नाव बदलून "$1" असे केले आहे.',
-'filetype-mime-mismatch' => 'संचिका विसà¥à¤¤à¤¾à¤°à¤• à¤à¤®à¤†à¤¯à¤à¤®à¤ˆ पà¥à¤°à¤•à¤¾à¤°à¤¾à¤¶à¥€ जà¥à¤³à¤¤ नाही.',
+'filetype-mime-mismatch' => 'संचिका विसà¥à¤¤à¤¾à¤°à¤• ".$1" ठरवलेलà¥à¤¯à¤¾ à¤à¤®à¤†à¤¯à¤à¤®à¤ˆ संचिकापà¥à¤°à¤•à¤¾à¤°à¤¾à¤‚शी जà¥à¤³à¤¤ नाही ($2).',
'filetype-badmime' => 'विविधामाप(माईम) "$1" पà¥à¤°à¤•à¤¾à¤°à¤šà¥à¤¯à¤¾ संचिका चढवणà¥à¤¯à¤¾à¤¸ परवानगी नाही.',
'filetype-bad-ie-mime' => 'ही संचिका चढवता येत नाही कारण इंटरनेट à¤à¤•à¥à¤¸à¥à¤ªà¥à¤²à¥‹à¤°à¤° तिला "$1" मà¥à¤¹à¤£à¥‚न ओळखेल. हा संचिकापà¥à¤°à¤•à¤¾à¤° पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित व संभावà¥à¤¯ धोकादायक संचिकापà¥à¤°à¤•à¤¾à¤° आहे.',
-'filetype-unwanted-type' => "'''\".\$1\"''' ही नको असलेलà¥à¤¯à¤¾ पà¥à¤°à¤•à¤¾à¤°à¤šà¥€ संचिका आहे. \$2 {{PLURAL:\$3|ही हवà¥à¤¯à¤¾ असलेलà¥à¤¯à¤¾ पà¥à¤°à¤•à¤¾à¤°à¤šà¥€ संचिका आहे|हà¥à¤¯à¤¾ हवà¥à¤¯à¤¾ असलेलà¥à¤¯à¤¾ पà¥à¤°à¤•à¤¾à¤°à¤šà¥à¤¯à¤¾ संचिका आहेत}}.",
-'filetype-banned-type' => "'''\".\$1\"''' ही परवानगी नसलेलà¥à¤¯à¤¾ पà¥à¤°à¤•à¤¾à¤°à¤šà¥€ संचिका आहे. \$2 हà¥à¤¯à¤¾ परवानगी असलेलà¥à¤¯à¤¾ पà¥à¤°à¤•à¤¾à¤°à¤šà¥à¤¯à¤¾ संचिका आहेत.",
+'filetype-unwanted-type' => "'''\".\$1\"''' हा अवांछित संचिका पà¥à¤°à¤•à¤¾à¤° आहे. पà¥à¤°à¤¾à¤§à¤¾à¤¨à¥à¤¯à¤¾à¤¨à¥‡ \$2 {{PLURAL:\$3|या पà¥à¤°à¤•à¤¾à¤°à¤šà¥à¤¯à¤¾ |या पà¥à¤°à¤•à¤¾à¤°à¤¾à¤‚चà¥à¤¯à¤¾}} संचिका हवà¥à¤¯à¤¾ आहेत.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|ही परवानगी नसलेलà¥à¤¯à¤¾ पà¥à¤°à¤•à¤¾à¤°à¤šà¥€ संचिका आहे.|हà¥à¤¯à¤¾ परवानगी नसलेलà¥à¤¯à¤¾ पà¥à¤°à¤•à¤¾à¤°à¤šà¥à¤¯à¤¾ संचिका आहेत.}} $2 {{PLURAL:$3|ही परवानगी असलेलà¥à¤¯à¤¾ पà¥à¤°à¤•à¤¾à¤°à¤šà¥€ संचिका आहे|हà¥à¤¯à¤¾ परवानगी असलेलà¥à¤¯à¤¾ पà¥à¤°à¤•à¤¾à¤°à¤šà¥à¤¯à¤¾ संचिका आहेत}}.',
'filetype-missing' => 'या संचिकेला à¤à¤•à¥à¤¸à¤Ÿà¥‡à¤‚शन दिलेले नाही (उदा. ".jpg").',
'empty-file' => 'तà¥à¤®à¥à¤¹à¥€ पà¥à¤°à¤¸à¥à¤¤à¥à¤¤ केलेली संचिका रिकामी होती.',
'file-too-large' => 'तà¥à¤®à¥à¤¹à¥€ पà¥à¤°à¤¸à¥à¤¤à¥à¤¤ केलेली संचिका आकाराने खूप जासà¥à¤¤ होती.',
@@ -1589,7 +1612,7 @@ $1",
'illegal-filename' => 'हे संचिकानाम पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित आहे.',
'overwrite' => 'असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ असलेलà¥à¤¯à¤¾ संचिकेवर पà¥à¤¨à¤°à¥à¤²à¥‡à¤–न पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित आहे.',
'unknown-error' => 'à¤à¤• अजà¥à¤žà¤¾à¤¤ चूक उदà¥à¤­à¤µà¤²à¥€.',
-'tmp-create-error' => 'तातà¥à¤ªà¥à¤°à¤¤à¥€ संचिका करता आली नाही.',
+'tmp-create-error' => 'तातà¥à¤ªà¥à¤°à¤¤à¥€ संचिका बनवता आली नाही.',
'tmp-write-error' => 'तातà¥à¤ªà¥à¤°à¤¤à¥€ संचिका लिहताना अडचण',
'large-file' => 'संचिका $1 पेकà¥à¤·à¤¾ कमी आकाराची असणà¥à¤¯à¤¾à¤šà¥€ अपेकà¥à¤·à¤¾ आहे, ही संचिका $2 à¤à¤µà¤¢à¥€ आहे.',
'largefileserver' => 'सेवा संगणकावर (सरà¥à¤µà¤°) निरà¥à¤§à¤¾à¤°à¤¿à¤¤ केलेलà¥à¤¯à¤¾ आकारापेकà¥à¤·à¤¾ या संचिकेचा आकार मोठा आहे.',
@@ -1612,7 +1635,7 @@ $1",
'fileexists-shared-forbidden' => 'हे नाव असलेली à¤à¤• संचिका शेअरà¥à¤¡ संचिका कोशात आधी पासून आहे; कृपया परत फिरा आणि नविन(वेगळà¥à¤¯à¤¾) नावाने ही संचिका पà¥à¤¨à¥à¤¹à¤¾ चढवा.[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'ही संचिका खालील {{PLURAL:$1|संचिकेची|संचिकांची}} पà¥à¤°à¤¤ आहे:',
'uploadwarning' => 'चढवताना सूचना',
-'uploadwarning-text' => 'कृपया खालील संचिका वरà¥à¤£à¤¨ संपादून पà¥à¤¨à¤°à¥à¤ªà¥à¤°à¤¯à¤¤à¥à¤¨ करा.',
+'uploadwarning-text' => 'कृपया खालील संचिका वरà¥à¤£à¤¨ संपादित करून पà¥à¤¨à¤°à¥à¤ªà¥à¤°à¤¯à¤¤à¥à¤¨ करा.',
'savefile' => 'संचिका जतन करा',
'uploadedimage' => '"[[$1]]" ही संचिका चढवली',
'overwroteimage' => '"[[$1]]" या संचिकेची नवीन आवृतà¥à¤¤à¥€ चढविली.',
@@ -1631,10 +1654,6 @@ $1",
'upload-options' => 'चढवणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ परà¥à¤¯à¤¾à¤¯',
'watchthisupload' => 'या पानावर बदलांसाठी लकà¥à¤· ठेवा.',
'filewasdeleted' => 'या नावाची संचिका या पूरà¥à¤µà¥€ à¤à¤•à¤¦à¤¾ चढवून नंतर वगळली होती.तà¥à¤®à¥à¤¹à¥€ ती पà¥à¤¨à¥à¤¹à¤¾ चढवणà¥à¤¯à¤¾ अगोदर $1 तपासा.',
-'upload-wasdeleted' => "'''सूचना: पूरà¥à¤µà¥€ वगळणà¥à¤¯à¤¾à¤¤ आलेली संचिका तà¥à¤®à¥à¤¹à¥€ पà¥à¤¨à¥à¤¹à¤¾ चढवित आहात.'''
-
-कृपया तà¥à¤®à¥à¤¹à¥€ करत असलेली कृती योगà¥à¤¯ असलà¥à¤¯à¤¾à¤šà¥€ खातà¥à¤°à¥€ करून घà¥à¤¯à¤¾.
-तà¥à¤®à¤šà¥à¤¯à¤¾ सोयीसाठी वगळलà¥à¤¯à¤¾à¤šà¥€ नोंद पà¥à¤¢à¥€à¤²à¤ªà¥à¤°à¤®à¤¾à¤£à¥‡:",
'filename-bad-prefix' => "तà¥à¤®à¥à¤¹à¥€ चढवत असलेलà¥à¤¯à¤¾ संचिकेचे नाव '''\"\$1\"''' पासून सà¥à¤°à¥‚ होते, जे की अंकीय छाउ (कॅमेरा) ने दिलेले अवरà¥à¤£à¤¨à¤¾à¤¤à¥à¤®à¤• नाव आहे.कृपया तà¥à¤®à¤šà¥à¤¯à¤¾ संचिकेकरिता अधिक वरà¥à¤£à¤¨à¤¾à¤¤à¥à¤®à¤• नाव निवडा.",
'upload-success-subj' => 'यशसà¥à¤µà¥€à¤°à¥€à¤¤à¥à¤¯à¤¾ चढवले',
'upload-success-msg' => 'तà¥à¤®à¤šà¥‡ [$2] येथूनà¥à¤¬ चढवणे यशसà¥à¤µà¥€ ठरले. ते येथे उपलबà¥à¤§ आहे: [[:{{ns:file}}:$1]]',
@@ -1655,6 +1674,18 @@ $1',
'upload-unknown-size' => 'अजà¥à¤žà¤¾à¤¤ आकारमान',
'upload-http-error' => 'à¤à¤• à¤à¤šà¤Ÿà¥€à¤Ÿà¥€à¤ªà¥€ चूक उदà¥à¤­à¤µà¤²à¥€: $1',
+# ZipDirectoryReader
+'zip-wrong-format' => 'ही संचिका "à¤à¤¿à¤ª" पà¥à¤°à¤•à¤¾à¤°à¤šà¥€ नाही.',
+'zip-bad' => 'ही संचिका दूषित किंवा न वाचता येणारी à¤à¤¿à¤ª संचिका आहे.
+ती सà¥à¤°à¤•à¥à¤·à¤¿à¤¤à¤¤à¥‡à¤¸à¤¾à¤ à¥€ नीट तपासता आली नाही.',
+
+# Special:UploadStash
+'uploadstash' => 'चढवणे लपवा',
+'uploadstash-clear' => 'लपवलेलà¥à¤¯à¤¾ संचिका काढा',
+'uploadstash-nofiles' => 'तà¥à¤®à¤šà¥à¤¯à¤¾à¤•à¤¡à¥‡ लपवलेलà¥à¤¯à¤¾ संचिका नाहीत.',
+'uploadstash-errclear' => 'संचिका सà¥à¤µà¤šà¥à¤› करणे अयशसà¥à¤µà¥€.',
+'uploadstash-refresh' => 'संचिकांची यादी ताजीतवानी करा',
+
# img_auth script messages
'img-auth-accessdenied' => 'परवानगी नाही',
'img-auth-nopathinfo' => 'PATH_INFO आढळले नाही.
@@ -1724,7 +1755,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization पहा.',
'linkstoimage' => 'खालील {{PLURAL:$1|पान चितà¥à¤°à¤¾à¤¶à¥€ जोडले आहे|$1 पाने चितà¥à¤°à¤¾à¤¶à¥€ जोडली आहेत}}:',
'nolinkstoimage' => 'या चितà¥à¤°à¤¾à¤¶à¥€ जोडलेली पृषà¥à¤ à¥‡ नाही आहेत.',
'morelinkstoimage' => 'या संचिकेचे [[Special:WhatLinksHere/$1|अधिक दà¥à¤µà¥‡]] पहा.',
-'redirectstofile' => 'खालील संचिका या {{PLURAL:$1|संचिकेकडे पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ करते|$1 संचिकांकडे पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ करतात}}:',
+'linkstoimage-redirect' => '$1 (संचिका पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨) $2',
'duplicatesoffile' => 'खालील संचिका या दिलेलà¥à¤¯à¤¾ {{PLURAL:$1|संचिकेची पà¥à¤°à¤¤ आहे|$1 संचिकांचà¥à¤¯à¤¾ पà¥à¤°à¤¤à¥€ आहेत}}. [[Special:FileDuplicateSearch/$2|अधिक माहिती]]',
'sharedupload' => 'ही संचिका $1 मधील आहे व ती इतर पà¥à¤°à¤•à¤²à¥à¤ªà¤¾à¤‚मधà¥à¤¯à¥‡ वापरली गेलà¥à¤¯à¤¾à¤šà¥€ शकà¥à¤¯à¤¤à¤¾ आहे.',
'sharedupload-desc-here' => 'ही संचिका $1 येथील असून ती इतर पà¥à¤°à¤•à¤²à¥à¤ªà¤¾à¤¤ वापरलेली असू शकते.
@@ -1760,7 +1791,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization पहा.',
'filedelete-reason-otherlist' => 'इतर कारण',
'filedelete-reason-dropdown' => '*वगळणà¥à¤¯à¤¾à¤šà¥€ सामानà¥à¤¯ कारणे
** पà¥à¤°à¤¤à¤¾à¤§à¤¿à¤•à¤¾à¤° उलà¥à¤²à¤‚घन
-** जूळी संचिका',
+** जà¥à¤³à¥€ संचिका',
'filedelete-edit-reasonlist' => 'वगळणà¥à¤¯à¤¾à¤šà¥€ कारणे संपादीत करा',
# MIME search
@@ -1813,15 +1844,16 @@ Input:contenttype/subtype, e.g. <tt>image/jpeg</tt>.',
'disambiguationspage' => 'Template:नि:संदिगà¥à¤§à¥€à¤•à¤°à¤£',
'disambiguations-text' => "निमà¥à¤¨à¤²à¤¿à¤–ीत पाने à¤à¤•à¤¾ '''नि:संदिगà¥à¤§à¤•à¤°à¤£ पृषà¥à¤ à¤¾à¤¸'''जोडली जातात. तà¥à¤¯à¤¾à¤à¤µà¤œà¥€ ती सà¥à¤¯à¥‹à¤—à¥à¤¯ विषयाशी जोडली जावयास हवीत.<br /> जर जर à¤à¤–ादे पान [[MediaWiki:Disambiguationspage]]पासून जोडलेला साचा वापरत असेल तर ते पान '''नि:संदिगà¥à¤§à¤•à¤°à¤£ पृषà¥à¤ ''' गृहीत धरले जाते",
-'doubleredirects' => 'दà¥à¤¹à¥‡à¤°à¥€-पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨à¥‡',
-'doubleredirectstext' => 'हे पान अशा पानांची सूची पà¥à¤°à¤µà¤¤à¥‡ की जी पà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¥€à¤¤ पाने दà¥à¤¸à¤°à¥â€à¤¯à¤¾ पà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¥€à¤¤ पानाकडे निरà¥à¤¦à¥‡à¤¶à¥€à¤¤ à¤à¤¾à¤²à¥€ आहेत.पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• ओळीत पहिलà¥à¤¯à¤¾ आणि दà¥à¤¸à¤°à¥â€à¤¯à¤¾ पà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨à¤¾à¤¸ दà¥à¤µà¤¾ दीला आहे सोबतच दà¥à¤¸à¤°à¥‡ पà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ जà¥à¤¯à¤¾ पानाकडे पोहचते ते पण दिले आहे, जे की बरोबर असणà¥à¤¯à¤¾à¤šà¥€ शकà¥à¤¯à¤¤à¤¾ आहे ,ते वसà¥à¤¤à¥à¤¤: पहिलà¥à¤¯à¤¾ पानापासूनचेही पà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ असावयास हवे.',
-'double-redirect-fixed-move' => '[[$1]] हलवले गेले आहे.
+'doubleredirects' => 'दà¥à¤¹à¥‡à¤°à¥€-पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨à¥‡',
+'doubleredirectstext' => 'हे पान अशा पानांची सूची पà¥à¤°à¤µà¤¤à¥‡ की जी पà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¥€à¤¤ पाने दà¥à¤¸à¤°à¥â€à¤¯à¤¾ पà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¥€à¤¤ पानाकडे निरà¥à¤¦à¥‡à¤¶à¥€à¤¤ à¤à¤¾à¤²à¥€ आहेत.पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• ओळीत पहिलà¥à¤¯à¤¾ आणि दà¥à¤¸à¤°à¥â€à¤¯à¤¾ पà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨à¤¾à¤¸ दà¥à¤µà¤¾ दीला आहे सोबतच दà¥à¤¸à¤°à¥‡ पà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ जà¥à¤¯à¤¾ पानाकडे पोहचते ते पण दिले आहे, जे की बरोबर असणà¥à¤¯à¤¾à¤šà¥€ शकà¥à¤¯à¤¤à¤¾ आहे ,ते वसà¥à¤¤à¥à¤¤: पहिलà¥à¤¯à¤¾ पानापासूनचेही पà¥à¤°à¥à¤¨à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ असावयास हवे.',
+'double-redirect-fixed-move' => '[[$1]] हलवले गेले आहे.
ते [[$2]] येथे निरà¥à¤¦à¥‡à¤¶à¤¿à¤¤ होते.',
-'double-redirect-fixer' => 'पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ नीट करणारा',
+'double-redirect-fixed-maintenance' => '[[$1]] ते [[$2]] हे चà¥à¤•à¥€à¤šà¥‡ पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ नीट केले.',
+'double-redirect-fixer' => 'पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨ नीट करणारा',
'brokenredirects' => 'मोडके पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨',
'brokenredirectstext' => 'खालील पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨à¥‡ असà¥à¤¤à¤¿à¤¤à¥à¤µà¤¾à¤¤ नसलेली पाने जोडतात:',
-'brokenredirects-edit' => 'संपादा',
+'brokenredirects-edit' => 'संपादन',
'brokenredirects-delete' => 'वगळा',
'withoutinterwiki' => 'आंतरविकि दà¥à¤µà¥‡ नसलेली पाने',
@@ -2001,6 +2033,8 @@ Input:contenttype/subtype, e.g. <tt>image/jpeg</tt>.',
'noemailtitle' => 'विपतà¥à¤° पतà¥à¤¤à¤¾ नाही',
'noemailtext' => 'या सदसà¥à¤¯à¤¾à¤¨à¥‡ वैध विपतà¥à¤° पतà¥à¤¤à¤¾ नमूद केलेला नाही.',
'nowikiemailtitle' => 'विपतà¥à¤° पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित',
+'emailusername' => 'सदसà¥à¤¯à¤¨à¤¾à¤®:',
+'emailusernamesubmit' => 'पाठवा',
'email-legend' => 'ईमेल अनà¥à¤¯ सदसà¥à¤¯à¤¾à¤²à¤¾ पाठवा',
'emailfrom' => 'पà¥à¤°à¥‡à¤·à¤•',
'emailto' => 'पà¥à¤°à¤¤à¤¿:',
@@ -2025,11 +2059,11 @@ Input:contenttype/subtype, e.g. <tt>image/jpeg</tt>.',
'watchlistanontext' => 'तà¥à¤®à¤šà¥à¤¯à¤¾ पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीतील बाबी पाहणà¥à¤¯à¤¾à¤•à¤°à¤¤à¤¾ किंवा संपादित करणà¥à¤¯à¤¾à¤•à¤°à¤¤à¤¾, कृपया $1.',
'watchnologin' => 'पà¥à¤°à¤µà¥‡à¤¶ केलेला नाही',
'watchnologintext' => 'तà¥à¤®à¤šà¥€ पहारà¥â€à¤¯à¤¾à¤šà¥€ सूची बदलावयाची असेल तर तà¥à¤®à¥à¤¹à¥€ [[Special:UserLogin|पà¥à¤°à¤µà¥‡à¤¶ केलेला]] असलाच पाहीजे.',
-'addedwatch' => 'हे पान पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीत घातले.',
+'addwatch' => 'पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीत टाका',
'addedwatchtext' => '"[[:$1]]" हे पान तà¥à¤®à¤šà¥à¤¯à¤¾ [[Special:Watchlist|पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीत]] टाकले आहे. या पानावरील तसेच तà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ चरà¥à¤šà¤¾ पानावरील पà¥à¤¢à¥€à¤² बदल येथे दाखवले जातील, आणि [[Special:RecentChanges|अलीकडील बदलांमधà¥à¤¯à¥‡]] पान ठळक दिसेल.
पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीतून पान काढायचे असेल तर "पहारा काढा" वर टिचकी दà¥à¤¯à¤¾.',
-'removedwatch' => 'पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीतून वगळले',
+'removewatch' => 'पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीतून वगळा',
'removedwatchtext' => '"[[:$1]]" पान तà¥à¤®à¤šà¥à¤¯à¤¾ [[Special:Watchlist|पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूची]]तून वगळणà¥à¤¯à¤¾à¤¤ आले आहे.',
'watch' => 'पहारा',
'watchthispage' => 'या पानावर बदलांसाठी लकà¥à¤· ठेवा.',
@@ -2082,10 +2116,10 @@ $NEWPAGE
--
-तà¥à¤®à¤šà¥‡ पहारà¥â€à¤¯à¤¾à¤¤à¥€à¤² पानांची मांडणावळ (कोंदण) बदलू शकता,{{fullurl:{{#special:Watchlist}}/edit}}ला भेट दà¥à¤¯à¤¾
+तà¥à¤®à¤šà¥‡ पहारà¥â€à¤¯à¤¾à¤¤à¥€à¤² पानांची मांडणावळ (कोंदण) बदलू शकता,{{canonicalurl:{{#special:EditWatchlist}}}}ला भेट दà¥à¤¯à¤¾
पà¥à¤¢à¥€à¤² सहायà¥à¤¯ आणि पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¥€à¤¯à¤¾:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'पान वगळा',
@@ -2101,7 +2135,7 @@ $NEWPAGE
कृपया तà¥à¤®à¥à¤¹à¥€ करत असलेली कृती ही मीडियाविकीचà¥à¤¯à¤¾ [[{{MediaWiki:Policy-url}}|नीतीनà¥à¤¸à¤¾à¤°]] आहे हà¥à¤¯à¤¾à¤šà¥€ खातà¥à¤°à¥€ करा. तसेच तà¥à¤®à¥à¤¹à¥€ करीत असलेलà¥à¤¯à¤¾ कृतीचे परीणाम कृती करणà¥à¤¯à¤¾à¤ªà¥‚रà¥à¤µà¥€ जाणून घà¥à¤¯à¤¾.',
'actioncomplete' => 'काम पूरà¥à¤£',
'actionfailed' => 'कृती अयशसà¥à¤µà¥€ à¤à¤¾à¤²à¥€',
-'deletedtext' => '"<nowiki>$1</nowiki>" हा लेख वगळला. अलीकडे वगळलेले लेख पाहणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ $2 पहा.',
+'deletedtext' => '"$1" हा लेख वगळला. अलीकडे वगळलेले लेख पाहणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ $2 पहा.',
'deletedarticle' => '"[[$1]]" लेख वगळला.',
'suppressedarticle' => '"[[$1]]" ला दाबले (सपà¥à¤°à¥‡à¤¸)',
'dellogpage' => 'वगळलà¥à¤¯à¤¾à¤šà¥€ नोंद',
@@ -2152,7 +2186,7 @@ $NEWPAGE
'protectexpiry' => 'संपणà¥à¤¯à¤¾à¤šà¤¾ कालावधी:',
'protect_expiry_invalid' => 'संपणà¥à¤¯à¤¾à¤šà¤¾ कालावधी चà¥à¤•à¥€à¤šà¤¾ आहे.',
'protect_expiry_old' => 'संपणà¥à¤¯à¤¾à¤šà¤¾ कालावधी उलटून गेलेला आहे.',
-'protect-text' => "'''<nowiki>$1</nowiki>''' या पानाची सà¥à¤°à¤•à¥à¤·à¤¾à¤ªà¤¾à¤¤à¤³à¥€ तà¥à¤®à¥à¤¹à¥€ इथे पाहू शकता अथवा बदलू शकता.",
+'protect-text' => "'''$1''' या पानाची सà¥à¤°à¤•à¥à¤·à¤¾à¤ªà¤¾à¤¤à¤³à¥€ तà¥à¤®à¥à¤¹à¥€ इथे पाहू शकता अथवा बदलू शकता.",
'protect-locked-blocked' => "तà¥à¤®à¥à¤¹à¥€ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत असताना सà¥à¤°à¤•à¥à¤·à¤¾ पातळी बदलू शकत नाही.येथे '''$1''' पानाकरिता सधà¥à¤¯à¤¾à¤šà¥€ मांडणावळ आहे:",
'protect-locked-dblock' => "विदागारास ताळे लागलेले असताना सà¥à¤°à¤•à¥à¤·à¤¾ पातळी बदलता येत नाही.येथे '''$1''' पानाकरिता सधà¥à¤¯à¤¾à¤šà¥€ मांडणावळ आहे:",
'protect-locked-access' => "तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ या पानाची सà¥à¤°à¤•à¥à¤·à¤¾ पातळी बदलणà¥à¤¯à¤¾à¤šà¥‡ अधिकार नाहीत.
@@ -2238,9 +2272,10 @@ $1',
'undelete-show-file-submit' => 'होय',
# Namespace form on various pages
-'namespace' => 'नामविशà¥à¤µ:',
-'invert' => 'निवडीचा कà¥à¤°à¤® उलटा करा',
-'blanknamespace' => '(मà¥à¤–à¥à¤¯)',
+'namespace' => 'नामविशà¥à¤µ:',
+'invert' => 'निवडीचा कà¥à¤°à¤® उलटा करा',
+'namespace_association' => 'सहभागी नामविशà¥à¤µà¥‡',
+'blanknamespace' => '(मà¥à¤–à¥à¤¯)',
# Contributions
'contributions' => 'सदसà¥à¤¯à¤¾à¤šà¥‡ योगदान',
@@ -2290,13 +2325,15 @@ $1',
'whatlinkshere-filters' => 'फिलà¥à¤Ÿà¤°à¥à¤¸',
# Block/unblock
+'autoblockid' => '#$1ला सà¥à¤µà¤¯à¤‚चलितपणे पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित करा',
+'block' => 'सदसà¥à¤¯à¤¾à¤¸ पà¥à¤°à¤¤à¤¿à¤¬à¤‚ध करा',
+'unblock' => 'सदसà¥à¤¯ सोडवा',
'blockip' => 'हा अंकपतà¥à¤¤à¤¾ अडवा',
'blockip-title' => 'सदसà¥à¤¯à¤¾à¤¸ पà¥à¤°à¤¤à¤¿à¤¬à¤‚ध करा',
'blockip-legend' => 'सदसà¥à¤¯à¤¾à¤¸ पà¥à¤°à¤¤à¤¿à¤¬à¤‚ध करा',
'blockiptext' => 'à¤à¤–ादà¥à¤¯à¤¾ विशिषà¥à¤Ÿ अंकपतà¥à¤¤à¥à¤¯à¤¾à¤šà¥€ किंवा सदसà¥à¤¯à¤¾à¤šà¥€ लिहिणà¥à¤¯à¤¾à¤šà¥€ कà¥à¤·à¤®à¤¤à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत करणà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾ खालील सारणी वापरा.
हे केवळ उचà¥à¤›à¥‡à¤¦ टाळणà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾à¤š दृषà¥à¤Ÿà¥€à¤¨à¥‡ आणि [[{{MediaWiki:Policy-url}}|निती]]स अनà¥à¤¸à¤°à¥‚न केले पाहिजे.
खाली विशिषà¥à¤Ÿ कारण भरा(उदाहरणारà¥à¤¥,जà¥à¤¯à¤¾ पानांवर उचà¥à¤›à¥‡à¤¦ माजवला गेला तà¥à¤¯à¤¾à¤‚ची उदà¥à¤§à¤°à¤£à¥‡ देऊन).',
-'ipaddress' => 'अंकपतà¥à¤¤à¤¾',
'ipadressorusername' => 'अंकपतà¥à¤¤à¤¾ किंवा सदसà¥à¤¯à¤¨à¤¾à¤®:',
'ipbexpiry' => 'समापà¥à¤¤à¤¿:',
'ipbreason' => 'कारण:',
@@ -2309,7 +2346,6 @@ $1',
** धमकावणारे/उपदà¥à¤°à¤µà¥€ वरà¥à¤¤à¤¨
** असंखà¥à¤¯ खातà¥à¤¯à¤¾à¤‚चा गैरवापर
** असà¥à¤µà¥€à¤•à¤¾à¤°à¥à¤¯ सदसà¥à¤¯à¤¨à¤¾à¤®',
-'ipbanononly' => 'केवळ अनामिक सदसà¥à¤¯à¤¾à¤‚ना पà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत करा',
'ipbcreateaccount' => 'खातà¥à¤¯à¤¾à¤šà¥€ निरà¥à¤®à¤¿à¤¤à¥€ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत करा',
'ipbemailban' => 'सदसà¥à¤¯à¤¾à¤‚ना विपतà¥à¤° पाठवणà¥à¤¯à¤¾à¤ªà¤¾à¤¸à¥‚न पà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत करा',
'ipbenableautoblock' => 'या सदसà¥à¤¯à¤¾à¤¨à¥‡ वापरलेला शेवटचा अंकपतà¥à¤¤à¤¾ आणि जेथून या पà¥à¤¢à¥‡ तो संपादनाचा पà¥à¤°à¤¯à¤¤à¥à¤¨ करेल ते सरà¥à¤µ अंकपतà¥à¤¤à¥‡ आपोआप पà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत करा.',
@@ -2324,6 +2360,7 @@ $1',
'blockipsuccesssub' => 'अडवणूक यशसà¥à¤µà¥€ à¤à¤¾à¤²à¥€',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]ला पà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत केले.<br />
पà¥à¤°à¤¤à¤¿à¤¬à¤‚धनांचा आढावा घेणà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾ [[Special:IPBlockList|अंकपतà¥à¤¤à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन सूची]] पहा.',
+'ipb-blockingself' => 'तà¥à¤®à¥à¤¹à¥€ सà¥à¤µà¤¤à¤ƒà¤²à¤¾à¤š पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित करत आहात! तà¥à¤®à¥à¤¹à¥€ ते नकà¥à¤•à¥€ करणार आहात का?',
'ipb-edit-dropdown' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤‚धाची कारणे संपादा',
'ipb-unblock-addr' => '$1चा पà¥à¤°à¤¤à¤¿à¤¬à¤‚ध उठवा',
'ipb-unblock' => 'सदसà¥à¤¯à¤¨à¤¾à¤µ आणि अंकपतà¥à¤¤à¥à¤¯à¤¾à¤µà¤°à¤šà¥‡ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन उठवा',
@@ -2333,16 +2370,21 @@ $1',
'unblockiptext' => 'खाली दिलेला फॉरà¥à¤® वापरून पूरà¥à¤µà¥€ अडवलेलà¥à¤¯à¤¾ अंकपतà¥à¤¤à¥à¤¯à¤¾à¤²à¤¾ लेखनासाठी आधिकार दà¥à¤¯à¤¾.',
'ipusubmit' => 'हा पतà¥à¤¤à¤¾ सोडवा',
'unblocked' => '[[User:$1|$1]] वरचे पà¥à¤°à¤¤à¤¿à¤¬à¤‚ध उठवले आहेत',
+'unblocked-range' => '$1 याचà¥à¤¯à¤¾à¤µà¤°à¥€à¤² पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन काढले आहे',
'unblocked-id' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤‚ध $1 काढले',
+'blocklist' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित केलेले सदसà¥à¤¯',
'ipblocklist' => 'अडविलेले अंकपतà¥à¤¤à¥‡ व सदसà¥à¤¯ नावे',
'ipblocklist-legend' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत सदसà¥à¤¯ शोधा',
-'ipblocklist-username' => 'सदसà¥à¤¯à¤¨à¤¾à¤µ किंवा आंतरजाल अंकपतà¥à¤¤à¤¾:',
-'ipblocklist-sh-userblocks' => '$1खाते पà¥à¤°à¤¤à¤¿à¤¬à¤‚धने',
-'ipblocklist-sh-tempblocks' => '$1 तातà¥à¤ªà¥à¤°à¤¤à¥€ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धने',
+'blocklist-userblocks' => 'खाते पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन लपवा',
+'blocklist-tempblocks' => 'तातà¥à¤ªà¥à¤°à¤¤à¥€ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धने लपवा',
+'blocklist-timestamp' => 'वेळशिकà¥à¤•à¤¾',
+'blocklist-target' => 'लकà¥à¤·à¥à¤¯',
+'blocklist-by' => 'पà¥à¤°à¤¬à¤‚धकास पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन',
+'blocklist-params' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤‚ध मापदंड',
+'blocklist-reason' => 'कारण',
'ipblocklist-submit' => 'शोध',
'ipblocklist-localblock' => 'सà¥à¤¥à¤¾à¤¨à¤¿à¤• पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन',
'ipblocklist-otherblocks' => '{{PLURAL:$1|दà¥à¤¸à¤°à¥‡ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन|इतर पà¥à¤°à¤¤à¤¿à¤¬à¤‚धने}}',
-'blocklistline' => '$3 ($4)ला $1, $2 ने पà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत केले',
'infiniteblock' => 'अनंत',
'expiringblock' => 'समापà¥à¤¤à¤¿ $1 $2',
'anononlyblock' => 'केवळ अनामिक',
@@ -2361,7 +2403,7 @@ $1',
'blocklogentry' => '[[$1]] ला $2 $3 परà¥à¤¯à¤‚त बà¥à¤²à¥‰à¤• केलेले आहे',
'blocklogtext' => 'ही सदसà¥à¤¯à¤¾à¤‚चà¥à¤¯à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धनाची आणि पà¥à¤°à¤¤à¤¿à¤¬à¤‚धने उठवलà¥à¤¯à¤¾à¤šà¥€ नोंद आहे.
आपोआप पà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत केलेले अंकपतà¥à¤¤à¥‡ नमूद केलेले नाहीत.
-सधà¥à¤¯à¤¾ लागू असलेली बंदी व पà¥à¤°à¤¤à¤¿à¤¬à¤‚धनांचà¥à¤¯à¤¾ यादीकरिता [[Special:IPBlockList|अंकपतà¥à¤¤à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन सूची]] पहा.',
+सधà¥à¤¯à¤¾ लागू असलेली बंदी व पà¥à¤°à¤¤à¤¿à¤¬à¤‚धनांचà¥à¤¯à¤¾ यादीकरिता [[Special:BlockList|अंकपतà¥à¤¤à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन सूची]] पहा.',
'unblocklogentry' => 'पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन $1 हटवले',
'block-log-flags-anononly' => 'केवळ अनामिक सदसà¥à¤¯',
'block-log-flags-nocreate' => 'खाते तयारकरणे अवरूदà¥à¤§ केले',
@@ -2373,9 +2415,6 @@ $1',
'ipb_expiry_invalid' => 'अयोगà¥à¤¯ समापà¥à¤¤à¥€ काळ.',
'ipb_expiry_temp' => 'लपविलेले सदसà¥à¤¯à¤¨à¤¾à¤® पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन कायमसà¥à¤µà¤°à¥à¤ªà¥€ असले पाहिजे.',
'ipb_already_blocked' => '"$1" आधीच अवरूदà¥à¤§ केलेले आहे.',
-'ipb-needreblock' => '== अगोदरच पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित ==
-$1 हा अगोदरच पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित आहे.
-तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ रà¥à¤ªà¤°à¥‡à¤·à¤¾ बदलायची आहे का?',
'ipb-otherblocks-header' => '{{PLURAL:$1|दà¥à¤¸à¤°à¥‡ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन|इतर पà¥à¤°à¤¤à¤¿à¤¬à¤‚धने}}',
'ipb_cant_unblock' => 'तà¥à¤°à¥‚टी: पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन कà¥à¤°.$1 मिळाला नाही. तà¥à¤¯à¤¾à¤µà¤°à¥€à¤² पà¥à¤°à¤¤à¤¿à¤¬à¤‚धन कदाचित आधीच उठवले असेल.',
'ipb_blocked_as_range' => 'तà¥à¤°à¥‚टी:अंकपतà¥à¤¤à¤¾ IP $1 हा पà¥à¤°à¤¤à¥à¤¯à¤•à¥à¤·à¤ªà¤£à¥‡ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत केलेला नाही आणि अपà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत करता येत नाही.तो,अरà¥à¤¥à¤¾à¤¤,$2पलà¥à¤²à¥à¤¯à¤¾à¤šà¤¾ भाग मà¥à¤¹à¤¾à¤£à¥‚न तो पà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत केलेला आहे,जो की अपà¥à¤°à¤¤à¤¿à¤¬à¤‚धीत करता येत नाही.',
@@ -2637,16 +2676,14 @@ $1 हा अगोदरच पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित आहे.
'tooltip-watch' => 'हे पान तà¥à¤®à¤šà¥à¤¯à¤¾ पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीत टाका.',
'tooltip-recreate' => 'हे पान मागे वगळले असले तरी नवनिरà¥à¤®à¥€à¤¤ करा',
'tooltip-upload' => 'चढवणे सà¥à¤°à¥‚करा',
-'tooltip-rollback' => '"दà¥à¤°à¥‚तमाघार" शेवटचà¥à¤¯à¤¾ सदसà¥à¤¯à¤¾à¤¨à¥‡ या पानात केलेली संपादने à¤à¤•à¤¾ à¤à¤Ÿà¤•à¥à¤¯à¤¾à¤¤ उलटविते.',
+'tooltip-rollback' => '"दà¥à¤°à¥à¤¤à¤®à¤¾à¤˜à¤¾à¤°". यादà¥à¤µà¤¾à¤°à¥‡ शेवटचà¥à¤¯à¤¾ सदसà¥à¤¯à¤¾à¤¨à¥‡ या पानात केलेली संपादने à¤à¤•à¤¾ à¤à¤Ÿà¤•à¥à¤¯à¤¾à¤¤ उलटवली जातात.',
'tooltip-undo' => '"रदà¥à¤¦ करा" हे संपादन उलटविते व संपादन खिडकी उघडते.
तà¥à¤¯à¤¾à¤®à¥à¤³à¥‡ तà¥à¤®à¥à¤¹à¥€ बदलांचा आढावा देऊ शकता.',
'tooltip-preferences-save' => 'माà¤à¥à¤¯à¤¾ पसंती जतन करा',
'tooltip-summary' => 'लहान सारांश लिहा',
# Metadata
-'nodublincore' => 'या विदादातà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾ Dublin Core RDF metadata अनà¥à¤ªà¤²à¤¬à¥à¤§ केला आहे.',
-'nocreativecommons' => 'या विदादातà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾ Creative Commons RDF metadata अनà¥à¤ªà¤²à¤¬à¥à¤§ आहे.',
-'notacceptable' => 'विकि विदादाता तà¥à¤®à¤šà¤¾ घेता वाचू शकेल अशा सà¥à¤µà¤°à¥‚पात(संरचनेत) विदा पà¥à¤°à¤µà¥‚ शकत नाही.',
+'notacceptable' => 'विकि विदादाता तà¥à¤®à¤šà¤¾ घेता वाचू शकेल अशा सà¥à¤µà¤°à¥‚पात(संरचनेत) विदा पà¥à¤°à¤µà¥‚ शकत नाही.',
# Attribution
'anonymous' => '{{SITENAME}} वरील अनामिक {{PLURAL:$1|सदसà¥à¤¯|सदसà¥à¤¯}}',
@@ -2671,12 +2708,10 @@ $1 हा अगोदरच पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित आहे.
'spam_blanking' => '$1शी दà¥à¤µà¥‡ असलेली सरà¥à¤µ आवरà¥à¤¤à¤¨à¥‡,रिकà¥à¤¤ केली जात आहेत',
# Info page
-'infosubtitle' => 'पानाची माहिती',
-'numedits' => 'संपादनांची संखà¥à¤¯à¤¾ (पान): $1',
-'numtalkedits' => 'संपादनांची संखà¥à¤¯à¤¾(चरà¥à¤šà¤¾ पान): $1',
-'numwatchers' => 'बघà¥à¤¯à¤¾à¤‚ची संखà¥à¤¯à¤¾: $1',
-'numauthors' => 'सà¥à¤ªà¤·à¥à¤Ÿ पणे वेगळà¥à¤¯à¤¾ लेखकांची संखà¥à¤¯à¤¾ (पान): $1',
-'numtalkauthors' => 'सà¥à¤ªà¤·à¥à¤Ÿà¤ªà¤£à¥‡ वेग-वेगळà¥à¤¯à¤¾ लेखकांची संखà¥à¤¯à¤¾(चरà¥à¤šà¤¾ पान): $1',
+'pageinfo-header-edits' => 'संपादने',
+'pageinfo-header-watchlist' => 'पहारà¥â€à¤¯à¤¾à¤šà¥€ सूची',
+'pageinfo-subjectpage' => 'पान',
+'pageinfo-talkpage' => 'चरà¥à¤šà¤¾ पान',
# Skin names
'skinname-standard' => 'अभिजात',
@@ -2688,25 +2723,6 @@ $1 हा अगोदरच पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित आहे.
'skinname-simple' => 'साधी',
'skinname-modern' => 'आधà¥à¤¨à¤¿à¤•',
-# Math options
-'mw_math_png' => 'नेहमीच पीà¤à¤¨à¤œà¥€ (PNG) रेखाटा',
-'mw_math_simple' => 'सà¥à¤²à¤­ असलà¥à¤¯à¤¾à¤¸ à¤à¤šà¤Ÿà¥€à¤à¤®à¤à¤² (HTML); अनà¥à¤¯à¤¥à¤¾ पीà¤à¤¨à¤œà¥€ (PNG)',
-'mw_math_html' => 'शकà¥à¤¯ असलà¥à¤¯à¤¾à¤¸ à¤à¤šà¤Ÿà¥€à¤à¤®à¤à¤² (HTML); अनà¥à¤¯à¤¥à¤¾ पीà¤à¤¨à¤œà¥€ (PNG)',
-'mw_math_source' => '(टेकà¥à¤¸à¥à¤Ÿ विचरकांकरिता)तà¥à¤¯à¤¾à¤¸ TeX मà¥à¤¹à¤£à¥‚न सोडून दà¥à¤¯à¤¾',
-'mw_math_modern' => 'आधूनिक विचरकांकरिता सूचवलेले',
-'mw_math_mathml' => 'शकà¥à¤¯ असलà¥à¤¯à¤¾à¤¸ मॅथ à¤à¤®à¤à¤² (MathML) (पà¥à¤°à¤¯à¥‹à¤—ावसà¥à¤¥à¤¾)',
-
-# Math errors
-'math_failure' => 'पृथकà¥à¤•à¤°à¤£à¤¾à¤¤ अयशसà¥à¤µà¥€',
-'math_unknown_error' => 'अपरिचित तà¥à¤°à¥‚टी',
-'math_unknown_function' => 'अजà¥à¤žà¤¾à¤¤ कारà¥à¤¯',
-'math_lexing_error' => 'लेकà¥à¤à¥€à¤‚ग(कोशीय?)तà¥à¤°à¥‚टी',
-'math_syntax_error' => 'आजà¥à¤žà¤¾à¤µà¤²à¥€-विनà¥à¤¯à¤¾à¤¸ तà¥à¤°à¥‚टी',
-'math_image_error' => 'पीà¤à¤¨à¤œà¥€ रà¥à¤ªà¤¾à¤‚तर अयशसà¥à¤µà¥€; लॅटेकà¥à¤¸, डीवà¥à¤¹à¥€à¤ªà¥à¤¸, जीà¤à¤¸à¤šà¥€ सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ योगà¥à¤¯ à¤à¤¾à¤²à¥€ आहे काय ते तपासा आणि बदल करा',
-'math_bad_tmpdir' => '"गणितीय तूरà¥à¤¤ धारिके"(math temp directory)ची निरà¥à¤®à¥€à¤¤à¥€ करू शकत नाही अथवा "मॅथ तूरà¥à¤¤ धारिकेत" लिहू शकत नाही .',
-'math_bad_output' => 'गणितीय पà¥à¤°à¤¾à¤ªà¥à¤¤ धारिकेची( math output directory) निरà¥à¤®à¥€à¤¤à¥€ अथवा तà¥à¤¯à¤¾à¤¤ लेखन करू शकत नाही.',
-'math_notexvc' => 'texvcकरणी(texvc à¤à¤•à¥à¤à¤¿à¤•à¥à¤¯à¥‚टेबल)चूकमà¥à¤•à¤²à¥€ आहे;कृपया,सजà¥à¤œà¥€à¤¤ करणà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾ math/README पहा.',
-
# Patrolling
'markaspatrolleddiff' => 'टेहळणी केलà¥à¤¯à¤¾à¤šà¥€ खूण करा',
'markaspatrolledtext' => 'या पानावर गसà¥à¤¤ à¤à¤¾à¤²à¥à¤¯à¤¾à¤šà¥€ खूण करा',
@@ -2740,19 +2756,22 @@ $1',
'nextdiff' => 'पà¥à¤¢à¥€à¤² संपादन →',
# Media information
-'mediawarning' => "'''सावधान''': या संचिकेत डंखी संकेत असू शकतो, जो वापरलà¥à¤¯à¤¾à¤¨à¥‡ तà¥à¤®à¤šà¥à¤¯à¤¾ संचालन पà¥à¤°à¤£à¤¾à¤²à¥€à¤¸ नाजूक परिसà¥à¤¥à¤¿à¤¤à¥€à¤¸ सामोरे जावे लागू शकते.",
-'imagemaxsize' => 'संचिका वरà¥à¤£à¤¨ पानांवरील चितà¥à¤°à¤¾à¤‚ना मरà¥à¤¯à¤¾à¤¦à¤¾ घाला:',
-'thumbsize' => 'इवलासा आकार:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|पान|पाने}}',
-'file-info' => 'संचिकेचा आकार:$1,विविधामापमाईमपà¥à¤°à¤•à¤¾à¤°: $2',
-'file-info-size' => '$1 × $2 pixel, संचिकेचा आकार: $3, MIME पà¥à¤°à¤•à¤¾à¤°: $4',
-'file-nohires' => '<small>यापेकà¥à¤·à¤¾ जासà¥à¤¤ मोठे चितà¥à¤° उपलबà¥à¤§ नाही.</small>',
-'svg-long-desc' => 'SVG संचिका, साधारणपणे $1 × $2 pixels, संचिकेचा आकार: $3',
-'show-big-image' => 'संपूरà¥à¤£ रिजोलà¥à¤¯à¥‚शन',
-'show-big-image-thumb' => '<small>या à¤à¤²à¤•à¥‡à¤šà¤¾ आकार: $1 × $2 पिकà¥à¤¸à¥‡à¤²</small>',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|चौकट|चौकटी}}',
-'file-info-png-repeat' => '$1 {{PLURAL:$1|वेळा दाखवले|वेळा दाखवले}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|चौकट|चौकटी}}',
+'mediawarning' => "'''सावधान''': या संचिकेत डंखी संकेत असू शकतो, जो वापरलà¥à¤¯à¤¾à¤¨à¥‡ तà¥à¤®à¤šà¥à¤¯à¤¾ संचालन पà¥à¤°à¤£à¤¾à¤²à¥€à¤¸ नाजूक परिसà¥à¤¥à¤¿à¤¤à¥€à¤¸ सामोरे जावे लागू शकते.",
+'imagemaxsize' => 'संचिका वरà¥à¤£à¤¨ पानांवरील चितà¥à¤°à¤¾à¤‚ना मरà¥à¤¯à¤¾à¤¦à¤¾ घाला:',
+'thumbsize' => 'इवलासा आकार:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|पान|पाने}}',
+'file-info' => 'संचिकेचा आकार:$1,विविधामापमाईमपà¥à¤°à¤•à¤¾à¤°: $2',
+'file-info-size' => '$1 × $2 pixel, संचिकेचा आकार: $3, MIME पà¥à¤°à¤•à¤¾à¤°: $4',
+'file-info-size-pages' => '$1 × $2 पिकà¥à¤¸à¥‡à¤², संचिका आकारमान: $3, à¤à¤®à¤†à¤¯à¤à¤®à¤ˆ पà¥à¤°à¤•à¤¾à¤°: $4, $5 {{PLURAL:$5|पान|पाने}}',
+'file-nohires' => '<small>यापेकà¥à¤·à¤¾ जासà¥à¤¤ मोठे चितà¥à¤° उपलबà¥à¤§ नाही.</small>',
+'svg-long-desc' => 'SVG संचिका, साधारणपणे $1 × $2 pixels, संचिकेचा आकार: $3',
+'show-big-image' => 'संपूरà¥à¤£ रिजोलà¥à¤¯à¥‚शन',
+'show-big-image-preview' => '<small>या à¤à¤²à¤•à¥‡à¤šà¤¾ आकार: $1. पिकà¥à¤¸à¥‡à¤²</small>',
+'show-big-image-other' => '<small>इतर रिà¤à¥‰à¤²à¥à¤¯à¥à¤¶à¤¨à¥à¤¸: $1.</small>',
+'show-big-image-size' => '$1 × $2 पिकà¥à¤¸à¥‡à¤²',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|चौकट|चौकटी}}',
+'file-info-png-repeat' => '$1 {{PLURAL:$1|वेळा दाखवले|वेळा दाखवले}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|चौकट|चौकटी}}',
# Special:NewFiles
'newimages' => 'नवीन संचिकांची यादी',
@@ -2774,7 +2793,7 @@ $1',
# Metadata
'metadata' => 'मेटाडाटा',
-'metadata-help' => 'या संचिकेत जासà¥à¤¤à¥€à¤šà¥€ माहिती आहे, बहà¥à¤§à¤¾ संचिका अंकनीकरणाकरिता किंवा निरà¥à¤®à¥€à¤¤à¥€à¤•à¤°à¤¿à¤¤à¤¾ वापरलेलà¥à¤¯à¤¾ अंकीय हूबहॠछाउ (कॅमेरा) किंवा (सà¥à¤•à¥…नर) कडून ही माहिती जमा à¤à¤¾à¤²à¥€ आहे. जर ही संचिका मूळ सà¥à¤¥à¤¿à¤¤à¥€ पासून बदलली असेल तर काही माहिती नवीन संचिकेशी पूरà¥à¤£à¤ªà¤£à¥‡ जà¥à¤³à¤£à¤¾à¤° नाही.',
+'metadata-help' => 'या संचिकेत जासà¥à¤¤à¥€à¤šà¥€ माहिती आहे. बहà¥à¤§à¤¾ ही संचिका बनवताना वापरलेलà¥à¤¯à¤¾ कॅमेरा किंवा सà¥à¤•à¥…नर कडून ही माहिती जमा à¤à¤¾à¤²à¥€ आहे. जर या संचिकेत निरà¥à¤®à¤¿à¤¤à¥€à¤ªà¤¶à¥à¤šà¤¾à¤¤ बदल करणà¥à¤¯à¤¾à¤¤ आले असतील, तर कदाचित काही माहिती नवीन संचिकेशी पूरà¥à¤£à¤ªà¤£à¥‡ जà¥à¤³à¤£à¤¾à¤° नाही.',
'metadata-expand' => 'जासà¥à¤¤à¥€à¤šà¥€ माहिती दाखवा',
'metadata-collapse' => 'जासà¥à¤¤à¥€à¤šà¥€ माहिती लपवा',
'metadata-fields' => 'या यादीतील जी माहिती दिलेली असेल ती माहिती संचिकेचà¥à¤¯à¤¾ खाली मेटाडाटा माहितीत दिसेल. बाकीची माहिती à¤à¤¾à¤•à¤²à¥‡à¤²à¥€ राहील.
@@ -2784,7 +2803,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'रूंदी',
@@ -2799,13 +2824,11 @@ $1',
'exif-ycbcrpositioning' => 'Y आणि C पà¥à¤°à¤¤à¤¿à¤¸à¥à¤¥à¤¾à¤ªà¤¨à¤¾ (पोà¤à¥€à¤¶à¤¨à¥€à¤‚ग)',
'exif-xresolution' => 'समांतर रिà¤à¥‹à¤²à¥à¤¯à¥‚शन',
'exif-yresolution' => 'उभे रिà¤à¥‹à¤²à¥à¤¯à¥‚शन',
-'exif-resolutionunit' => 'X आणि Y रिà¤à¥‹à¤²à¥à¤¯à¥‚शन चे मानक पà¥à¤°à¤®à¤¾à¤£',
'exif-stripoffsets' => 'चितà¥à¤°à¤µà¤¿à¤¦à¤¾ सà¥à¤¥à¤¾à¤¨',
'exif-rowsperstrip' => 'पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• पटà¥à¤Ÿà¥€à¤¤à¥€à¤² ओळींची संखà¥à¤¯à¤¾',
'exif-stripbytecounts' => 'पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• आकà¥à¤‚चीत पटà¥à¤Ÿà¥€à¤¤à¥€à¤² बाईटà¥à¤¸à¤šà¥€ संखà¥à¤¯à¤¾',
'exif-jpeginterchangeformat' => 'JPEG SOI करिता ऑफसेट',
'exif-jpeginterchangeformatlength' => 'JPEG विदे चà¥à¤¯à¤¾ बाईटà¥à¤¸',
-'exif-transferfunction' => 'टà¥à¤°à¤¾à¤¨à¥à¤¸à¥à¤«à¤° फंकà¥à¤¶à¤¨',
'exif-whitepoint' => 'धवल बिंदू कà¥à¤°à¥‹à¤®à¥…टिसिटी',
'exif-primarychromaticities' => 'कà¥à¤°à¥‹à¤®à¥…टिसिटीज ऑफ पà¥à¤°à¤¾à¤ˆà¤®à¤¾à¤°à¤¿à¤Ÿà¥€à¤œ',
'exif-ycbcrcoefficients' => 'कलर सà¥à¤ªà¥‡à¤¸ टà¥à¤°à¤¾à¤¨à¥à¤¸à¥à¤«à¥‰à¤°à¥à¤®à¥‡à¤¶à¤¨ मॅटà¥à¤°à¥€à¤•à¥à¤¸ कोà¤à¤«à¤¿à¤¶à¥€à¤¯à¤‚टà¥à¤¸',
@@ -2824,7 +2847,6 @@ $1',
'exif-compressedbitsperpixel' => 'चितà¥à¤° आकà¥à¤‚चन सà¥à¤¥à¤¿à¤¤à¥€',
'exif-pixelydimension' => 'आकृतीची सà¥à¤¯à¥‹à¤—à¥à¤¯ रूंदी',
'exif-pixelxdimension' => 'आकृतीची सà¥à¤¯à¥‹à¤—à¥à¤¯ उंची',
-'exif-makernote' => 'उतà¥à¤ªà¤¾à¤¦à¤•à¤¾à¤šà¥à¤¯à¤¾ सूचना',
'exif-usercomment' => 'सदसà¥à¤¯ पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¥€à¤¯à¤¾',
'exif-relatedsoundfile' => 'संबधीत धà¥à¤µà¤¨à¥€ संचिका',
'exif-datetimeoriginal' => 'विदा निरà¥à¤®à¤¿à¤¤à¥€à¤šà¥€ तारीख आणि वेळ',
@@ -2838,7 +2860,6 @@ $1',
'exif-exposureprogram' => "'''पà¥à¤°à¤­à¤¾à¤µ'''न कारà¥à¤¯ (à¤à¤•à¥à¤¸à¥à¤ªà¥‹à¤œà¤° पà¥à¤°à¥‹à¤—à¥à¤°à¤¾à¤®)",
'exif-spectralsensitivity' => 'à¤à¥‹à¤¤ संवेदनशीलता (सà¥à¤ªà¥‡à¤•à¥à¤Ÿà¥à¤°à¤² सेनà¥à¤¸à¤¿à¤Ÿà¥€à¤µà¥à¤¹à¤¿à¤Ÿà¥€)',
'exif-isospeedratings' => 'आंतरराषà¥à¤Ÿà¥à¤°à¥€à¤¯ मानक संसà¥à¤¥à¥‡à¤šà¥‡ वेग मà¥à¤²à¥à¤¯à¤®à¤¾à¤ªà¤¨',
-'exif-oecf' => 'दृकà¥à¤µà¥ˆà¤¦à¥à¤¯à¥‚तसंचरण परिवरà¥à¤¤à¤¨ कारक (ऑपà¥à¤Ÿà¥‹à¤ˆà¤²à¥‡à¤•à¥à¤Ÿà¥à¤°à¥‰à¤¨à¤¿à¤• कनà¥à¤µà¥à¤¹à¤°à¥à¤¶à¤¨ फॅकà¥à¤Ÿà¤°)',
'exif-shutterspeedvalue' => 'शटर वेग',
'exif-aperturevalue' => 'रनà¥à¤§à¥à¤°',
'exif-brightnessvalue' => 'à¤à¤³à¤¾à¤³à¥€',
@@ -2851,7 +2872,6 @@ $1',
'exif-focallength' => 'भींगाची मधà¥à¤¯à¤µà¤°à¥à¤¤à¥€ लांबी (फोकल लांबी)',
'exif-subjectarea' => 'विषय विभाग',
'exif-flashenergy' => 'लखाट उरà¥à¤œà¤¾ (फà¥à¤²à¥…श à¤à¤¨à¤°à¥à¤œà¥€)',
-'exif-spatialfrequencyresponse' => 'विशाल लहर पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¤¿à¤¯à¤¾ (सà¥à¤ªà¥…टीअल फà¥à¤°à¤¿à¤•à¥à¤µà¥‡à¤¨à¥à¤¸à¥€ रिसà¥à¤ªà¥‰à¤¨à¥à¤¸)',
'exif-focalplanexresolution' => 'फोकल पà¥à¤²à¥‡à¤¨ x रिà¤à¥‹à¤²à¥à¤¯à¥‚शन',
'exif-focalplaneyresolution' => 'फोकल पà¥à¤²à¥‡à¤¨ Y रिà¤à¥‹à¤²à¥à¤¯à¥‚शन',
'exif-focalplaneresolutionunit' => 'फोकल पà¥à¤²à¥‡à¤¨ रिà¤à¥‹à¤²à¥à¤¯à¥‚शन माप',
@@ -2860,7 +2880,6 @@ $1',
'exif-sensingmethod' => 'सेनà¥à¤¸à¥€à¤‚ग पदà¥à¤§à¤¤à¥€',
'exif-filesource' => 'संचिका सà¥à¤°à¥‹à¤¤',
'exif-scenetype' => 'दृषà¥à¤¯ पà¥à¤°à¤•à¤¾à¤°',
-'exif-cfapattern' => 'CFA पॅटरà¥à¤¨',
'exif-customrendered' => 'कसà¥à¤Ÿà¤® इमेज पà¥à¤°à¥‹à¤¸à¥‡à¤¸à¤¿à¤‚ग',
'exif-exposuremode' => "'''पà¥à¤°à¤­à¤¾à¤µ'''न मोड",
'exif-whitebalance' => 'वà¥à¤¹à¤¾à¤ˆà¤Ÿ बॅलनà¥à¤¸',
@@ -2905,11 +2924,32 @@ $1',
'exif-gpsareainformation' => 'GPS विभागाचे नाव',
'exif-gpsdatestamp' => 'GPSतारीख',
'exif-gpsdifferential' => 'GPS डिफरेंशीअल सà¥à¤§à¤¾à¤°à¤£à¤¾',
+'exif-jpegfilecomment' => 'जेपीईजी संचिका टिपà¥à¤ªà¤£à¥€',
+'exif-keywords' => 'लघà¥à¤¶à¤¬à¥à¤¦',
+'exif-countrycreated' => 'देश जà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾à¤¤ चितà¥à¤° घेतले',
'exif-objectname' => 'लघà¥à¤¶à¥€à¤°à¥à¤·à¤•',
+'exif-headline' => 'मथळा',
+'exif-source' => 'सà¥à¤°à¥‹à¤¤',
+'exif-urgency' => 'तातà¥à¤•à¤¾à¤²à¤¿à¤•à¤¤à¤¾',
+'exif-contact' => 'संपरà¥à¤• माहिती',
+'exif-writer' => 'लेखक',
+'exif-languagecode' => 'भाषा',
+'exif-iimcategory' => 'वरà¥à¤—',
+'exif-lens' => 'वापरलेले भिंग',
+'exif-serialnumber' => 'छायाचितà¥à¤°à¤•à¤¾à¤šà¤¾ सामयिक कà¥à¤°à¤®à¤¾à¤‚क',
+'exif-cameraownername' => 'छायाचितà¥à¤°à¤•à¤¾à¤šà¤¾ मालक',
+'exif-copyrighted' => 'पà¥à¤°à¤¤à¤¾à¤§à¤¿à¤•à¤¾à¤° सà¥à¤¥à¤¿à¤¤à¥€',
+'exif-copyrightowner' => 'पà¥à¤°à¤¤à¤¾à¤§à¤¿à¤•à¤¾à¤° धारक',
+'exif-pngfilecomment' => 'पीà¤à¤¨à¤œà¥€ संचिका टिपà¥à¤ªà¤£à¥€',
+'exif-disclaimer' => 'परवाना',
+'exif-giffilecomment' => 'जीआयà¤à¤« संचिका टिपà¥à¤ªà¤£à¥€',
# EXIF attributes
'exif-compression-1' => 'अनाकà¥à¤‚चीत',
+'exif-copyrighted-true' => 'पà¥à¤°à¤¤à¤¾à¤§à¤¿à¤•à¤¾à¤°à¥€à¤¤',
+'exif-copyrighted-false' => 'सारà¥à¤µà¤œà¤¨à¤¿à¤• जà¥à¤žà¤¾à¤¨à¤•à¥à¤·à¥‡à¤¤à¥à¤°',
+
'exif-unknowndate' => 'अजà¥à¤žà¤¾à¤¤ तारीख',
'exif-orientation-1' => 'सामानà¥à¤¯',
@@ -3026,6 +3066,10 @@ $1',
'exif-gpslongitude-e' => 'पूरà¥à¤µ रेखांश',
'exif-gpslongitude-w' => 'पशà¥à¤šà¤¿à¤® रेखांश',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => 'समà¥à¤¦à¥à¤°à¤ªà¤¾à¤¤à¤³à¥€à¤šà¥à¤¯à¤¾à¤µà¤° $1 {{PLURAL:$1|मीटर|मीटर}}',
+'exif-gpsaltitude-below-sealevel' => 'समà¥à¤¦à¥à¤°à¤ªà¤¾à¤¤à¤³à¥€à¤šà¥à¤¯à¤¾à¤–ाली $1 {{PLURAL:$1|मीटर|मीटर}}',
+
'exif-gpsstatus-a' => 'मोजणी काम चालू आहे',
'exif-gpsstatus-v' => 'आंतरोपयोगीकà¥à¤·à¤®à¤¤à¥‡à¤šà¥‡ मोजमाप',
@@ -3037,21 +3081,60 @@ $1',
'exif-gpsspeed-m' => 'पà¥à¤°à¤¤à¤¿à¤¤à¤¾à¤¶à¥€ मैल',
'exif-gpsspeed-n' => 'गाठी',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'किमी',
+'exif-gpsdestdistance-m' => 'मैल',
+'exif-gpsdestdistance-n' => 'सागरी मैल',
+
+'exif-gpsdop-excellent' => 'उतà¥à¤•à¥ƒà¤·à¥à¤Ÿ ($1)',
+'exif-gpsdop-good' => 'चांगले ($1)',
+'exif-gpsdop-moderate' => 'मधà¥à¤¯à¤® ($1)',
+'exif-gpsdop-fair' => 'निषà¥à¤ªà¤•à¥à¤· ($1)',
+'exif-gpsdop-poor' => 'वाईट ($1)',
+
+'exif-objectcycle-a' => 'फकà¥à¤¤ सकाळी',
+'exif-objectcycle-p' => 'फकà¥à¤¤ संधà¥à¤¯à¤¾à¤•à¤¾à¤³à¥€',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'बरोबर दिशा',
'exif-gpsdirection-m' => 'चà¥à¤‚बकीय दिशा',
+'exif-dc-contributor' => 'योगदानकरà¥à¤¤à¥‡',
+'exif-dc-date' => 'दिनांक',
+'exif-dc-publisher' => 'पà¥à¤°à¤•à¤¾à¤¶à¤•',
+'exif-dc-relation' => 'संबंधित मीडिया',
+'exif-dc-rights' => 'अधिकार',
+'exif-dc-source' => 'सà¥à¤°à¥‹à¤¤ मीडिया',
+'exif-dc-type' => 'मीडिया पà¥à¤°à¤•à¤¾à¤°',
+
+'exif-isospeedratings-overflow' => '६५,५३६ हून मोठे',
+
+'exif-iimcategory-ace' => 'कला, संसà¥à¤•à¥ƒà¤¤à¥€ व मनोरंजन',
+'exif-iimcategory-clj' => 'कायदे व गà¥à¤¨à¥à¤¹à¥‡',
+'exif-iimcategory-fin' => 'वà¥à¤¯à¤¾à¤ªà¤¾à¤° व अरà¥à¤¥à¤¶à¤¾à¤¸à¥à¤¤à¥à¤°',
+'exif-iimcategory-edu' => 'शिकà¥à¤·à¤£',
+'exif-iimcategory-evn' => 'परà¥à¤¯à¤¾à¤µà¤°à¤£',
+'exif-iimcategory-hth' => 'तबà¥à¤¯à¥‡à¤¤',
+'exif-iimcategory-lab' => 'परिशà¥à¤°à¤®',
+'exif-iimcategory-pol' => 'राजनीती',
+'exif-iimcategory-rel' => 'धरà¥à¤® व शà¥à¤°à¤¦à¥à¤§à¤¾',
+'exif-iimcategory-sci' => 'विजà¥à¤žà¤¾à¤¨ व तंतà¥à¤°à¤œà¥à¤žà¤¾à¤¨',
+'exif-iimcategory-spo' => 'कà¥à¤°à¥€à¤¡à¤¾',
+'exif-iimcategory-wea' => 'हवामान',
+
+'exif-urgency-normal' => 'सामानà¥à¤¯ ($1)',
+'exif-urgency-low' => 'नीचतम ($1)',
+'exif-urgency-high' => 'उचà¥à¤šà¤¤à¤® ($1)',
+
# External editor support
-'edit-externally' => 'बाहेरील संगणक पà¥à¤°à¤£à¤¾à¤²à¥€ वापरून ही संचिका संपादा.',
-'edit-externally-help' => 'अधिक माहितीसाठी सà¥à¤¥à¤¾à¤ªà¤¨ करणà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचना [http://www.mediawiki.org/wiki/Manual:External_editors] येथे पहा.',
+'edit-externally' => 'बाहेरील संगणक पà¥à¤°à¤£à¤¾à¤²à¥€ वापरून ही संचिका संपादित करा.',
+'edit-externally-help' => 'अधिक माहितीसाठी सà¥à¤¥à¤¾à¤ªà¤¨ करणà¥à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचना [//www.mediawiki.org/wiki/Manual:External_editors] येथे पहा.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'सरà¥à¤µ',
-'imagelistall' => 'सरà¥à¤µ',
-'watchlistall2' => 'सरà¥à¤µ',
-'namespacesall' => 'सरà¥à¤µ',
-'monthsall' => 'सरà¥à¤µ',
-'limitall' => 'सरà¥à¤µ',
+'watchlistall2' => 'सरà¥à¤µ',
+'namespacesall' => 'सरà¥à¤µ',
+'monthsall' => 'सरà¥à¤µ',
+'limitall' => 'सरà¥à¤µ',
# E-mail address confirmation
'confirmemail' => 'इमेल पतà¥à¤¤à¤¾ पडताळून पहा',
@@ -3098,11 +3181,12 @@ $1',
'trackbackdeleteok' => 'पाठलाग यशसà¥à¤µà¥€à¤ªà¤£à¥‡ वगळला.',
# Delete conflict
-'deletedwhileediting' => 'â€â€™à¤¸à¥‚चना:â€â€™ तà¥à¤®à¥à¤¹à¥€ संपादन सà¥à¤°à¥‚ केलà¥à¤¯à¤¾à¤¨à¤‚तर हे पान वगळले गेले आहे.',
-'confirmrecreate' => "तà¥à¤®à¥à¤¹à¥€ संपादन सà¥à¤°à¥‚ केलà¥à¤¯à¤¾à¤¨à¤‚तर सदसà¥à¤¯ [[User:$1|$1]] ([[User talk:$1|चरà¥à¤šà¤¾]])ने हे पान पà¥à¤¢à¥€à¤² कारणाने वगळले:
+'deletedwhileediting' => 'â€â€™à¤¸à¥‚चना:â€â€™ तà¥à¤®à¥à¤¹à¥€ संपादन सà¥à¤°à¥‚ केलà¥à¤¯à¤¾à¤¨à¤‚तर हे पान वगळले गेले आहे.',
+'confirmrecreate' => "तà¥à¤®à¥à¤¹à¥€ संपादन सà¥à¤°à¥‚ केलà¥à¤¯à¤¾à¤¨à¤‚तर सदसà¥à¤¯ [[User:$1|$1]] ([[User talk:$1|चरà¥à¤šà¤¾]])ने हे पान पà¥à¤¢à¥€à¤² कारणाने वगळले:
: ''$2''
कृपया हे पान खरेच पà¥à¤¨à¥à¤¹à¤¾ निरà¥à¤®à¥€à¤¤ करून हवे आहे का हे निशà¥à¤šà¤¿à¤¤ करा.",
-'recreate' => 'पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤®à¤¾à¤£',
+'confirmrecreate-noreason' => 'तà¥à¤®à¥à¤¹à¥€ संपादन सà¥à¤°à¥‚ केलà¥à¤¯à¤¾à¤¨à¤‚तर सदसà¥à¤¯ [[User:$1|$1]] ([[User talk:$1|चरà¥à¤šà¤¾]])ने हे पान वगळले. तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ हे पान खरेच पà¥à¤¨à¥à¤¹à¤¾ निरà¥à¤®à¤¿à¤¤ करून हवे आहे का हे निशà¥à¤šà¤¿à¤¤ करा.',
+'recreate' => 'पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤®à¤¾à¤£',
# action=purge
'confirm_purge_button' => 'ठीक',
@@ -3147,14 +3231,14 @@ $1',
'watchlistedit-noitems' => 'पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीत कोणतेही शीरà¥à¤·à¤• पान नोंदलेले नाही.',
'watchlistedit-normal-title' => 'पहारà¥â€à¤¯à¤¾à¤šà¥€ सूची संपादीत करा',
'watchlistedit-normal-legend' => 'शीरà¥à¤·à¤•à¤ªà¤¾à¤¨à¥‡ पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीतून वगळा',
-'watchlistedit-normal-explain' => 'तà¥à¤®à¤šà¥à¤¯à¤¾ पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीतील अंतरà¥à¤­à¥‚त नामावळी खाली निरà¥à¤¦à¥‡à¤¶à¥€à¤¤ केली आहे. शीरà¥à¤·à¤• वगळणà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾, तà¥à¤¯à¤¾ पà¥à¤¢à¥€à¤² खिडकी निवडा, आणि शीरà¥à¤·à¤• वगळावर टिचकी मारा. तà¥à¤®à¥à¤¹à¥€ [[Special:Watchlist/raw|कचà¥à¤šà¥€ यादी सà¥à¤¦à¥à¤§à¤¾ संपादित]] करू शकता.',
+'watchlistedit-normal-explain' => 'तà¥à¤®à¤šà¥à¤¯à¤¾ पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीतील अंतरà¥à¤­à¥‚त नामावळी खाली निरà¥à¤¦à¥‡à¤¶à¥€à¤¤ केली आहे. शीरà¥à¤·à¤• वगळणà¥à¤¯à¤¾à¤•à¤°à¤¿à¤¤à¤¾, तà¥à¤¯à¤¾ पà¥à¤¢à¥€à¤² खिडकी निवडा, आणि शीरà¥à¤·à¤• वगळावर टिचकी मारा. तà¥à¤®à¥à¤¹à¥€ [[Special:EditWatchlist/raw|कचà¥à¤šà¥€ यादी सà¥à¤¦à¥à¤§à¤¾ संपादित]] करू शकता.',
'watchlistedit-normal-submit' => 'शिरà¥à¤·à¤• वगळा',
'watchlistedit-normal-done' => 'तà¥à¤®à¤šà¥à¤¯à¤¾ पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीतून वगळलेली {{PLURAL:$1|1 शिरà¥à¤·à¤• होते |$1 शिरà¥à¤·à¤•à¥‡ होती }}:',
'watchlistedit-raw-title' => 'कचà¥à¤šà¥€ पहारà¥â€à¤¯à¤¾à¤šà¥€ सूची संपादीत करा.',
'watchlistedit-raw-legend' => 'कचà¥à¤šà¥€ पहारà¥â€à¤¯à¤¾à¤šà¥€ सूची संपादीत करा.',
'watchlistedit-raw-explain' => 'तà¥à¤®à¤šà¥à¤¯à¤¾ पहारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचीतील अंतरà¥à¤­à¥‚त नामावळी खाली निरà¥à¤¦à¥‡à¤¶à¥€à¤¤ केली आहे, à¤à¤•à¤¾ ओळीत à¤à¤• नाव या पदà¥à¤§à¤¤à¥€à¤¨à¥‡; हà¥à¤¯à¤¾ यादीतील नावे वगळून किंवा भर घालून संपादित करून नामावळी अदà¥à¤¯à¤¾à¤µà¤¤(परिषà¥à¤•à¥ƒà¤¤) करता येते.
पहारà¥â€à¤¯à¤¾à¤šà¥€ सूची अदà¥à¤¯à¤¾à¤µà¤¤ करा येथे टिचकी मारा.
-तà¥à¤®à¥à¤¹à¥€ [[Special:Watchlist/edit|पà¥à¤°à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ संपादकाचा उपयोग]] सà¥à¤¦à¥à¤§à¤¾ करू शकता.',
+तà¥à¤®à¥à¤¹à¥€ [[Special:EditWatchlist|पà¥à¤°à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ संपादकाचा उपयोग]] सà¥à¤¦à¥à¤§à¤¾ करू शकता.',
'watchlistedit-raw-titles' => 'शिरà¥à¤·à¤•à¥‡:',
'watchlistedit-raw-submit' => 'पहारà¥â€à¤¯à¤¾à¤šà¥€ सूची अदà¥à¤¯à¤¾à¤µà¤¤ करा.',
'watchlistedit-raw-done' => 'तà¥à¤®à¤šà¥€ पहारà¥â€à¤¯à¤¾à¤šà¥€ सूची परिषà¥à¤•à¥ƒà¤¤ करणà¥à¤¯à¤¾à¤¤ आली आहे.',
@@ -3170,28 +3254,27 @@ $1',
'unknown_extension_tag' => 'अजà¥à¤žà¤¾à¤¤ विसà¥à¤¤à¤¾à¤° खूण "$1"',
# Special:Version
-'version' => 'आवृतà¥à¤¤à¥€',
-'version-extensions' => 'सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ विसà¥à¤¤à¤¾à¤°',
-'version-specialpages' => 'विशेष पाने',
-'version-parserhooks' => 'पृथकक अंकà¥à¤¶',
-'version-variables' => 'चल',
-'version-skins' => 'तà¥à¤µà¤šà¤¾',
-'version-other' => 'इतर',
-'version-mediahandlers' => 'मिडिया हॅंडलर',
-'version-hooks' => 'अंकà¥à¤¶',
-'version-extension-functions' => 'अतिविसà¥à¤¤à¤¾à¤°(à¤à¤•à¥à¤¸à¥à¤Ÿà¥‡à¤‚शन) कारà¥à¤¯à¥‡',
-'version-parser-extensiontags' => 'पृथकक विसà¥à¤¤à¤¾à¤°à¥€à¤¤ खूणा',
-'version-parser-function-hooks' => 'पृथकक कारà¥à¤¯ अंकà¥à¤¶',
-'version-skin-extension-functions' => 'तà¥à¤µà¤šà¤¾ अतिविसà¥à¤¤à¤¾à¤°(à¤à¤•à¥à¤¸à¥à¤Ÿà¥‡à¤‚शन) कारà¥à¤¯à¥‡',
-'version-hook-name' => 'अंकà¥à¤¶ नाव',
-'version-hook-subscribedby' => 'वरà¥à¤—णीदार',
-'version-version' => '(आवृतà¥à¤¤à¥€ $1)',
-'version-license' => 'परवाना',
-'version-poweredby-credits' => "हा विकी '''[http://www.mediawiki.org/ मीडियाविकी]'''दà¥à¤µà¤¾à¤°à¥‡ संचालित आहे, पà¥à¤°à¤¤à¤¾à¤§à¤¿à¤•à¤¾à¤°à¤¿à¤¤ © २००१-$1 $2.",
-'version-poweredby-others' => 'इतर',
-'version-software' => 'सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ संगणक पà¥à¤°à¤£à¤¾à¤²à¥€ (Installed software)',
-'version-software-product' => 'उतà¥à¤ªà¤¾à¤¦à¤¨',
-'version-software-version' => 'आवृतà¥à¤¤à¥€',
+'version' => 'आवृतà¥à¤¤à¥€',
+'version-extensions' => 'सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ विसà¥à¤¤à¤¾à¤°',
+'version-specialpages' => 'विशेष पाने',
+'version-parserhooks' => 'पृथकक अंकà¥à¤¶',
+'version-variables' => 'चल',
+'version-skins' => 'तà¥à¤µà¤šà¤¾',
+'version-other' => 'इतर',
+'version-mediahandlers' => 'मिडिया हॅंडलर',
+'version-hooks' => 'अंकà¥à¤¶',
+'version-extension-functions' => 'अतिविसà¥à¤¤à¤¾à¤°(à¤à¤•à¥à¤¸à¥à¤Ÿà¥‡à¤‚शन) कारà¥à¤¯à¥‡',
+'version-parser-extensiontags' => 'पृथकक विसà¥à¤¤à¤¾à¤°à¥€à¤¤ खूणा',
+'version-parser-function-hooks' => 'पृथकक कारà¥à¤¯ अंकà¥à¤¶',
+'version-hook-name' => 'अंकà¥à¤¶ नाव',
+'version-hook-subscribedby' => 'वरà¥à¤—णीदार',
+'version-version' => '(आवृतà¥à¤¤à¥€ $1)',
+'version-license' => 'परवाना',
+'version-poweredby-credits' => "हा विकी '''[//www.mediawiki.org/ मीडियाविकी]'''दà¥à¤µà¤¾à¤°à¥‡ संचालित आहे, पà¥à¤°à¤¤à¤¾à¤§à¤¿à¤•à¤¾à¤°à¤¿à¤¤ © २००१-$1 $2.",
+'version-poweredby-others' => 'इतर',
+'version-software' => 'सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ संगणक पà¥à¤°à¤£à¤¾à¤²à¥€ (Installed software)',
+'version-software-product' => 'उतà¥à¤ªà¤¾à¤¦à¤¨',
+'version-software-version' => 'आवृतà¥à¤¤à¥€',
# Special:FilePath
'filepath' => 'संचिका मारà¥à¤—',
@@ -3201,21 +3284,19 @@ $1',
चितà¥à¤°à¥‡ संपूरà¥à¤£ रिà¤à¥‹à¤²à¥à¤¯à¥‚शन मधà¥à¤¯à¥‡ दाखवली आहेत,इतर संचिका पà¥à¤°à¤•à¤¾à¤° तà¥à¤¯à¤¾à¤‚चà¥à¤¯à¤¾ संबधीत पà¥à¤°à¥‹à¤—à¥à¤°à¤¾à¤®à¤¨à¥‡ पà¥à¤°à¤¤à¥à¤¯à¤•à¥à¤· सà¥à¤°à¥‚ होतात.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'जà¥à¤³à¥à¤¯à¤¾ संचिका शोधा',
-'fileduplicatesearch-summary' => 'हॅश किंमतीपà¥à¤°à¤®à¤¾à¤£à¥‡ जà¥à¤³à¥à¤¯à¤¾ संचिका शोधा.
-
-"{{ns:file}}:" न लिहिता फकà¥à¤¤ संचिकेचे नाव लिहा.',
-'fileduplicatesearch-legend' => 'जà¥à¤³à¥€ संचिका शोधा',
-'fileduplicatesearch-filename' => 'संचिकानाव:',
-'fileduplicatesearch-submit' => 'शोधा',
-'fileduplicatesearch-info' => '$1 × $2 पीकà¥à¤¸à¥‡à¤²<br />संचिकेचा आकार: $3<br />MIME पà¥à¤°à¤•à¤¾à¤°: $4',
-'fileduplicatesearch-result-1' => '"$1" या संचिकेशी जà¥à¤³à¤£à¤¾à¤°à¥€ जà¥à¤³à¥€ संचिका सापडली नाही.',
-'fileduplicatesearch-result-n' => '"$1" ला {{PLURAL:$2|१ जà¥à¤³à¥€ संचिका आहे|$2 जà¥à¤³à¥à¤¯à¤¾ संचिका आहेत}}.',
+'fileduplicatesearch' => 'जà¥à¤³à¥à¤¯à¤¾ संचिका शोधा',
+'fileduplicatesearch-summary' => 'हॅश किंमतीपà¥à¤°à¤®à¤¾à¤£à¥‡ जà¥à¤³à¥à¤¯à¤¾ संचिका शोधा.',
+'fileduplicatesearch-legend' => 'जà¥à¤³à¥€ संचिका शोधा',
+'fileduplicatesearch-filename' => 'संचिकानाव:',
+'fileduplicatesearch-submit' => 'शोधा',
+'fileduplicatesearch-info' => '$1 × $2 पीकà¥à¤¸à¥‡à¤²<br />संचिकेचा आकार: $3<br />MIME पà¥à¤°à¤•à¤¾à¤°: $4',
+'fileduplicatesearch-result-1' => '"$1" या संचिकेशी जà¥à¤³à¤£à¤¾à¤°à¥€ जà¥à¤³à¥€ संचिका सापडली नाही.',
+'fileduplicatesearch-result-n' => '"$1" ला {{PLURAL:$2|१ जà¥à¤³à¥€ संचिका आहे|$2 जà¥à¤³à¥à¤¯à¤¾ संचिका आहेत}}.',
+'fileduplicatesearch-noresults' => '"$1" या नावाची संचिका सापडली नाही.',
# Special:SpecialPages
'specialpages' => 'विशेष पृषà¥à¤ à¥‡',
-'specialpages-note' => '----
-* सरà¥à¤µà¤¸à¤¾à¤§à¤¾à¤°à¤£ विशेष पृषà¥à¤ à¥‡.
+'specialpages-note' => '* सरà¥à¤µà¤¸à¤¾à¤§à¤¾à¤°à¤£ विशेष पृषà¥à¤ à¥‡.
* <strong class="mw-specialpagerestricted">पà¥à¤°à¤¤à¤¿à¤¬à¤‚धित विशेष पृषà¥à¤ à¥‡.</strong>',
'specialpages-group-maintenance' => 'वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤ªà¤¨ अहवाल',
'specialpages-group-other' => 'इतर विशेष पृषà¥à¤ à¥‡',
diff --git a/languages/messages/MessagesMrj.php b/languages/messages/MessagesMrj.php
index 980199a3..68e847ab 100644
--- a/languages/messages/MessagesMrj.php
+++ b/languages/messages/MessagesMrj.php
@@ -288,8 +288,6 @@ $messages = array(
'extlink_tip' => 'Тӱнӹш ажедмӓш (префикÑӹм идӓ монды http:// )',
'headline_sample' => 'ТекÑтӹн лӹмжӹ',
'headline_tip' => '2-шы кӱкшӹцӓн тӹнг лӹм',
-'math_sample' => 'Тишкӹ формулым шӹндӹдӓ',
-'math_tip' => 'Математика формула (формат LaTeX)',
'nowiki_sample' => 'Тишкӹ форматируйымы агыл текÑтвлӓм шӹндӹдӓ',
'nowiki_tip' => 'Вики-форматированим мондаш',
'image_tip' => 'Кӧргӹш пыртен шӹндӹмӹ файл',
@@ -496,9 +494,7 @@ $messages = array(
# Watchlist
'watchlist' => 'Вӓнгӹмӹ ÑпиÑок',
'mywatchlist' => 'Вӓнгӹмӹ Ñирмӓш, ÑпиÑок',
-'addedwatch' => 'Вӓнгӹмӓш ÑпиÑокыш пыртымы',
'addedwatchtext' => 'Ӹлӹштӓшӹм«[[:$1]]» тӓмдӓн вӓнгӹмӹ [[Special:Watchlist|ӹлӹштӓшӹшкӹдӓ пыртымы]]. Тидӹ паштек ӹштӹмӹ ӹлӹштӓшӹн вашталтымашвлӓ ти ÑпиÑокышты анжыктымы дӓ тенгеок кӹжгӹ буквавлӓ доно у вашталтымашвлӓн ÑпиÑокышты пӓлдӹртӹмӹ лиÑш[[Special:RecentChanges| пӓлдӹртӹмӹ лит]] нӹнӹм айыраш куштылгырак лижӹ манын.',
-'removedwatch' => 'Вӓнгӹмӹ ÑпиÑок гӹц карангдымы',
'removedwatchtext' => 'Ӹлӹштӓш «[[:$1]]» тӓмдӓн вӓнгӹмӹ ӹлӹштӓшдӓ гӹц [[Special:Watchlist|карангдымы]].',
'watch' => 'Вӓнгӓш',
'watchthispage' => 'Ти ӹлӹштӓшӹм вӓнгӓш',
@@ -515,7 +511,7 @@ $messages = array(
'deletepage' => 'Ӹлӹштӓшӹм карангдаш',
'confirmdeletetext' => 'Тӓ ӹлӹштӓшӹн (изображенин) цилӓ информацижӹм дӓ базышты ылшы вашталтымашвлӓн иÑторим ӹштӹл шуаш Ñдыда. Пуры лидӓ, дӓ лачокат ма тенге ӹштӹнедӓ, шаналтыда. Махань поÑледÑтвивлӓ тидӹ паштек вычат, ынгылышашлык ылыда дӓ тидӹм ти кӹдешӹтӹ анжыктымы правилывлӓштӹ анжалда [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Лачокат ӹштӹмӹ',
-'deletedtext' => '«<nowiki>$1</nowiki>» карангдымы.
+'deletedtext' => '«$1» карангдымы.
Ðнжы: $2 тидӹ мам карангдымы Ñ‚Ó¹ ÑпиÑокым анжыкта',
'deletedarticle' => '«[[$1]]» карангдымы',
'dellogpage' => 'Мам карангдымы анжыктышы Ñирмӓш',
@@ -534,7 +530,7 @@ $messages = array(
'protectexpiry' => 'Жепшӹ пӹтӓ:',
'protect_expiry_invalid' => 'Ӹшӹклӹмӹ жепӹм Ñамынь анжыктымы.',
'protect_expiry_old' => 'Пӹтӹм жепшӹ Ñртен',
-'protect-text' => "Тиштӹ тӓ ӹлӹштӓшӹн ӹшӹклӹмӹ кӱкшӹцшӹм анжал дӓ вашталтен кердӹдӓ'''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Тиштӹ тӓ ӹлӹштӓшӹн ӹшӹклӹмӹ кӱкшӹцшӹм анжал дӓ вашталтен кердӹдӓ'''$1'''.",
'protect-locked-access' => "Тӓмдӓн учетный карточкыдан ӹшӹклӹмӓш кӱкшӹцӹм вашталташ манын Ñитӓлык праважы уке. Ти ӹлӹштӓшӹм шӹндӹдӓ'''$1''':",
'protect-cascadeon' => 'Ти ӹлӹштӓшӹм {{PLURAL:$1|-шкы пыртымат, ӹшӹклӓлтеш, кыды ӱлнӹрӓк ылшы ӹлӹштӓшӹш|ӹлӹштӓшвлӓшкӹ ажедеш, кышкы }} каÑкадан ӹшӹклӹмашӹм шӹндӹмӹ. Тӓ ти ӹлӹштӓшӹн ӹшӹклӹмӹ кӱкшӹцшӹм вашталтен кердӹдӓ, но тидӹ каÑкадан ӹшӹклӹмашӹм ак тӹкӓл лиÑш.',
'protect-default' => 'Ӹшӹклӹмӹ агыл',
@@ -692,11 +688,10 @@ $messages = array(
'nextdiff' => 'Ð’ÐµÑ Ñ‚Ó§Ñ€Ð»Ó¹Ð¼Ó“Ñˆ →',
# Media information
-'file-info-size' => '$1 × $2 пикÑел, файлын размержӹ: $3, MIME-тип: $4',
-'file-nohires' => '<small>Кого разрешени доно верÑи уке.</small>',
-'svg-long-desc' => 'SVG-файл, номинально $1 × $2 пикÑель, файлын размержӹ: $3',
-'show-big-image' => 'Кӱкшӹрӓк разрешениӓн изображени',
-'show-big-image-thumb' => '<small>Размер анзыц анжымы годым: $1 × $2 пикÑель</small>',
+'file-info-size' => '$1 × $2 пикÑел, файлын размержӹ: $3, MIME-тип: $4',
+'file-nohires' => '<small>Кого разрешени доно верÑи уке.</small>',
+'svg-long-desc' => 'SVG-файл, номинально $1 × $2 пикÑель, файлын размержӹ: $3',
+'show-big-image' => 'Кӱкшӹрӓк разрешениӓн изображени',
# Bad image list
'bad_image_list' => 'Техень форматан лишӓшлык:
@@ -717,11 +712,17 @@ $messages = array(
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Тӱнӹш программым кычылт, ти файлым тӧрлӓш',
-'edit-externally-help' => '(шукыракым анжал: [http://www.mediawiki.org/wiki/Manual:External_editors уÑтановкын правилывлӓжӹ])',
+'edit-externally-help' => '(шукыракым анжал: [//www.mediawiki.org/wiki/Manual:External_editors уÑтановкын правилывлӓжӹ])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'цилӓ',
diff --git a/languages/messages/MessagesMs.php b/languages/messages/MessagesMs.php
index c905a13e..ad718f36 100644
--- a/languages/messages/MessagesMs.php
+++ b/languages/messages/MessagesMs.php
@@ -38,18 +38,18 @@ $namespaceNames = array(
NS_SPECIAL => 'Khas',
NS_TALK => 'Perbincangan',
NS_USER => 'Pengguna',
- NS_USER_TALK => 'Perbincangan_Pengguna',
+ NS_USER_TALK => 'Perbincangan_pengguna',
NS_PROJECT_TALK => 'Perbincangan_$1',
NS_FILE => 'Fail',
- NS_FILE_TALK => 'Perbincangan_Fail',
+ NS_FILE_TALK => 'Perbincangan_fail',
NS_MEDIAWIKI => 'MediaWiki',
NS_MEDIAWIKI_TALK => 'Perbincangan_MediaWiki',
NS_TEMPLATE => 'Templat',
- NS_TEMPLATE_TALK => 'Perbincangan_Templat',
+ NS_TEMPLATE_TALK => 'Perbincangan_templat',
NS_HELP => 'Bantuan',
- NS_HELP_TALK => 'Perbincangan_Bantuan',
+ NS_HELP_TALK => 'Perbincangan_bantuan',
NS_CATEGORY => 'Kategori',
- NS_CATEGORY_TALK => 'Perbincangan_Kategori',
+ NS_CATEGORY_TALK => 'Perbincangan_kategori',
);
$namespaceAliases = array(
@@ -66,94 +66,127 @@ $namespaceAliases = array(
'Perbualan_Bantuan' => NS_HELP_TALK,
);
+$magicWords = array(
+ 'redirect' => array( '0', '#LENCONG', '#REDIRECT' ),
+ 'currentmonth' => array( '1', 'BULANSEMASA', 'BULANSEMASA2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'BULANSEMASA1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'NAMABULANSEMASA', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'NAMABULANSEMASAGEN', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'SINGBULANSEMASA', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'HARISEMASA', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'HARISEMASA2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'NAMAHARISEMASA', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'TAHUNSEMASA', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'WAKTUSEMASA', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'JAMSEMASA', 'CURRENTHOUR' ),
+ 'pagename' => array( '1', 'NAMALAMAN', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'NAMALAMANE', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'RUANGNAMA', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'RUANGNAMAE', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'RUANGBINCANG', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'RUANGBINCANGE', 'TALKSPACEE' ),
+ 'fullpagename' => array( '1', 'NAMALAMANPENUH', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'NAMALAMANPENUHE', 'FULLPAGENAMEE' ),
+ 'msg' => array( '0', 'PESAN:', 'MSG:' ),
+ 'subst' => array( '0', 'TUKAR:', 'SUBST:' ),
+ 'img_right' => array( '1', 'kiri', 'right' ),
+ 'img_left' => array( '1', 'kanan', 'left' ),
+ 'img_none' => array( '1', 'tiada', 'none' ),
+ 'img_center' => array( '1', 'tengah', 'center', 'centre' ),
+ 'sitename' => array( '1', 'NAMATAPAK', 'SITENAME' ),
+ 'ns' => array( '0', 'RN:', 'NS:' ),
+ 'nse' => array( '0', 'RNE:', 'NSE:' ),
+ 'currentweek' => array( '1', 'MINGGUSEMASA', 'CURRENTWEEK' ),
+);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Lencongan_berganda', 'Pelencongan_berganda' ),
+ 'Activeusers' => array( 'Pengguna_aktif' ),
+ 'Allmessages' => array( 'Semua_pesanan', 'Semua_mesej' ),
+ 'Allpages' => array( 'Semua_laman' ),
+ 'Ancientpages' => array( 'Laman_lapuk' ),
+ 'Blankpage' => array( 'Laman_kosong' ),
+ 'Block' => array( 'Sekat_IP' ),
+ 'Blockme' => array( 'Sekat_saya' ),
+ 'Booksources' => array( 'Sumber_buku' ),
'BrokenRedirects' => array( 'Lencongan_rosak', 'Pelencongan_rosak' ),
- 'Disambiguations' => array( 'Penyahtaksaan' ),
- 'Userlogin' => array( 'Log_masuk' ),
- 'Userlogout' => array( 'Log_keluar' ),
+ 'Categories' => array( 'Kategori' ),
+ 'ChangePassword' => array( 'Lupa_kata_laluan' ),
+ 'Confirmemail' => array( 'Sahkan_e-mel' ),
+ 'Contributions' => array( 'Sumbangan' ),
'CreateAccount' => array( 'Buka_akaun' ),
- 'Preferences' => array( 'Keutamaan' ),
- 'Watchlist' => array( 'Senarai_pantau' ),
- 'Recentchanges' => array( 'Perubahan_terkini' ),
- 'Upload' => array( 'Muat_naik' ),
+ 'Deadendpages' => array( 'Laman_buntu' ),
+ 'DeletedContributions' => array( 'Sumbangan_dihapuskan' ),
+ 'Disambiguations' => array( 'Penyahtaksaan' ),
+ 'DoubleRedirects' => array( 'Lencongan_berganda', 'Pelencongan_berganda' ),
+ 'Emailuser' => array( 'E-mel_pengguna' ),
+ 'Export' => array( 'Eksport' ),
+ 'Fewestrevisions' => array( 'Semakan_tersikit' ),
+ 'FileDuplicateSearch' => array( 'Cari_fail_berganda' ),
+ 'Filepath' => array( 'Laluan_fail' ),
+ 'Invalidateemail' => array( 'Batalkan_pengesahan_e-mel' ),
+ 'BlockList' => array( 'Sekatan_IP' ),
+ 'LinkSearch' => array( 'Cari_pautan' ),
+ 'Listadmins' => array( 'Senarai_pentadbir' ),
+ 'Listbots' => array( 'Senarai_bot' ),
'Listfiles' => array( 'Senarai_imej' ),
- 'Newimages' => array( 'Imej_baru' ),
- 'Listusers' => array( 'Senarai_pengguna' ),
'Listgrouprights' => array( 'Senarai_hak_kumpulan' ),
- 'Statistics' => array( 'Statistik' ),
- 'Randompage' => array( 'Laman_rawak' ),
+ 'Listredirects' => array( 'Senarai_lencongan', 'Senarai_pelencongan' ),
+ 'Listusers' => array( 'Senarai_pengguna' ),
+ 'Lockdb' => array( 'Kunci_pangkalan_data' ),
'Lonelypages' => array( 'Laman_yatim' ),
- 'Uncategorizedpages' => array( 'Laman_tanpa_kategori' ),
- 'Uncategorizedcategories' => array( 'Kategori_tanpa_kategori' ),
- 'Uncategorizedimages' => array( 'Imej_tanpa_kategori' ),
- 'Uncategorizedtemplates' => array( 'Templat_tanpa_kategori' ),
- 'Unusedcategories' => array( 'Kategori_tak_digunakan' ),
- 'Unusedimages' => array( 'Imej_tak_digunakan' ),
- 'Wantedpages' => array( 'Laman_dikehendaki' ),
- 'Wantedcategories' => array( 'Kategori_dikehendaki' ),
- 'Wantedfiles' => array( 'Fail_dikehendaki' ),
- 'Wantedtemplates' => array( 'Templat_dikehendaki' ),
+ 'Longpages' => array( 'Laman_panjang' ),
+ 'MergeHistory' => array( 'Gabung_sejarah' ),
+ 'MIMEsearch' => array( 'Gelintar_MIME' ),
+ 'Mostcategories' => array( 'Kategori_terbanyak' ),
+ 'Mostimages' => array( 'Imej_terbanyak' ),
'Mostlinked' => array( 'Laman_dipaut_terbanyak' ),
'Mostlinkedcategories' => array( 'Kategori_dipaut_terbanyak' ),
'Mostlinkedtemplates' => array( 'Templat_dipaut_terbanyak' ),
- 'Mostimages' => array( 'Imej_terbanyak' ),
- 'Mostcategories' => array( 'Kategori_terbanyak' ),
'Mostrevisions' => array( 'Semakan_terbanyak' ),
- 'Fewestrevisions' => array( 'Semakan_tersikit' ),
- 'Shortpages' => array( 'Laman_pendek' ),
- 'Longpages' => array( 'Laman_panjang' ),
+ 'Movepage' => array( 'Pindah_laman' ),
+ 'Mycontributions' => array( 'Sumbangan_saya' ),
+ 'Mypage' => array( 'Laman_saya' ),
+ 'Mytalk' => array( 'Perbincangan_saya' ),
+ 'Newimages' => array( 'Imej_baru' ),
'Newpages' => array( 'Laman_baru' ),
- 'Ancientpages' => array( 'Laman_lapuk' ),
- 'Deadendpages' => array( 'Laman_buntu' ),
+ 'Popularpages' => array( 'Laman_popular' ),
+ 'Preferences' => array( 'Keutamaan' ),
+ 'Prefixindex' => array( 'Indeks_awalan' ),
'Protectedpages' => array( 'Laman_dilindungi' ),
'Protectedtitles' => array( 'Tajuk_dilindungi' ),
- 'Allpages' => array( 'Semua_laman' ),
- 'Prefixindex' => array( 'Indeks_awalan' ),
- 'Ipblocklist' => array( 'Sekatan_IP' ),
- 'Specialpages' => array( 'Laman_khas' ),
- 'Contributions' => array( 'Sumbangan' ),
- 'Emailuser' => array( 'E-mel_pengguna' ),
- 'Confirmemail' => array( 'Sahkan_e-mel' ),
- 'Whatlinkshere' => array( 'Pautan_ke' ),
+ 'Randompage' => array( 'Laman_rawak' ),
+ 'Randomredirect' => array( 'Lencongan_rawak', 'Pelencongan_rawak' ),
+ 'Recentchanges' => array( 'Perubahan_terkini' ),
'Recentchangeslinked' => array( 'Perubahan_berkaitan' ),
- 'Movepage' => array( 'Pindah_laman' ),
- 'Blockme' => array( 'Sekat_saya' ),
- 'Booksources' => array( 'Sumber_buku' ),
- 'Categories' => array( 'Kategori' ),
- 'Export' => array( 'Eksport' ),
- 'Version' => array( 'Versi' ),
- 'Allmessages' => array( 'Semua_pesanan', 'Semua_mesej' ),
- 'Blockip' => array( 'Sekat_IP' ),
+ 'Revisiondelete' => array( 'Hapus_semakan' ),
+ 'RevisionMove' => array( 'Pindah_semakan' ),
+ 'Search' => array( 'Gelintar' ),
+ 'Shortpages' => array( 'Laman_pendek' ),
+ 'Specialpages' => array( 'Laman_khas' ),
+ 'Statistics' => array( 'Statistik' ),
+ 'Tags' => array( 'Label' ),
+ 'Uncategorizedcategories' => array( 'Kategori_tanpa_kategori' ),
+ 'Uncategorizedimages' => array( 'Imej_tanpa_kategori' ),
+ 'Uncategorizedpages' => array( 'Laman_tanpa_kategori' ),
+ 'Uncategorizedtemplates' => array( 'Templat_tanpa_kategori' ),
'Undelete' => array( 'Nyahhapus' ),
- 'Lockdb' => array( 'Kunci_pangkalan_data' ),
'Unlockdb' => array( 'Buka_kunci_pangkalan_data' ),
- 'Userrights' => array( 'Hak_pengguna' ),
- 'MIMEsearch' => array( 'Gelintar_MIME' ),
- 'FileDuplicateSearch' => array( 'Cari_fail_berganda' ),
- 'Unwatchedpages' => array( 'Laman_tak_dipantau' ),
- 'Listredirects' => array( 'Senarai_lencongan', 'Senarai_pelencongan' ),
- 'Revisiondelete' => array( 'Hapus_semakan' ),
+ 'Unusedcategories' => array( 'Kategori_tak_digunakan' ),
+ 'Unusedimages' => array( 'Imej_tak_digunakan' ),
'Unusedtemplates' => array( 'Templat_tak_digunakan' ),
- 'Randomredirect' => array( 'Lencongan_rawak', 'Pelencongan_rawak' ),
- 'Mypage' => array( 'Laman_saya' ),
- 'Mytalk' => array( 'Perbincangan_saya' ),
- 'Mycontributions' => array( 'Sumbangan_saya' ),
- 'Listadmins' => array( 'Senarai_pentadbir' ),
- 'Listbots' => array( 'Senarai_bot' ),
- 'Popularpages' => array( 'Laman_popular' ),
- 'Search' => array( 'Gelintar' ),
- 'Resetpass' => array( 'Lupa_kata_laluan' ),
+ 'Unwatchedpages' => array( 'Laman_tak_dipantau' ),
+ 'Upload' => array( 'Muat_naik' ),
+ 'Userlogin' => array( 'Log_masuk' ),
+ 'Userlogout' => array( 'Log_keluar' ),
+ 'Userrights' => array( 'Hak_pengguna' ),
+ 'Version' => array( 'Versi' ),
+ 'Wantedcategories' => array( 'Kategori_dikehendaki' ),
+ 'Wantedfiles' => array( 'Fail_dikehendaki' ),
+ 'Wantedpages' => array( 'Laman_dikehendaki' ),
+ 'Wantedtemplates' => array( 'Templat_dikehendaki' ),
+ 'Watchlist' => array( 'Senarai_pantau' ),
+ 'Whatlinkshere' => array( 'Pautan_ke' ),
'Withoutinterwiki' => array( 'Laman_tanpa_pautan_bahasa' ),
- 'MergeHistory' => array( 'Gabung_sejarah' ),
- 'Filepath' => array( 'Laluan_fail' ),
- 'Invalidateemail' => array( 'Batalkan_pengesahan_e-mel' ),
- 'Blankpage' => array( 'Laman_kosong' ),
- 'LinkSearch' => array( 'Cari_pautan' ),
- 'DeletedContributions' => array( 'Sumbangan_dihapuskan' ),
- 'Tags' => array( 'Label' ),
- 'Activeusers' => array( 'Pengguna_aktif' ),
);
$messages = array(
@@ -188,8 +221,8 @@ $messages = array(
'tog-shownumberswatching' => 'Tunjukkan bilangan pemantau',
'tog-oldsig' => 'Tanda tangan yang sedia ada:',
'tog-fancysig' => 'Anggap tandatangan sebagai teks wiki (tanpa pautan automatik)',
-'tog-externaleditor' => 'Utamakan penyunting luar (hanya untuk pakar, perlu tetapan khas pada komputer anda. [http://www.mediawiki.org/wiki/Manual:External_editors Maklumat lanjut.])',
-'tog-externaldiff' => 'Utamakan pembeza luar (hanya untuk pakar, perlu tetapan khas pada komputer anda. [http://www.mediawiki.org/wiki/Manual:External_editors Maklumat lanjut.])',
+'tog-externaleditor' => 'Utamakan penyunting luar (hanya untuk pakar, perlu tetapan khas pada komputer anda. [//www.mediawiki.org/wiki/Manual:External_editors Maklumat lanjut.])',
+'tog-externaldiff' => 'Utamakan pembeza luar (hanya untuk pakar, perlu tetapan khas pada komputer anda. [//www.mediawiki.org/wiki/Manual:External_editors Maklumat lanjut.])',
'tog-showjumplinks' => 'Bolehkan pautan ketercapaian "lompat ke"',
'tog-uselivepreview' => 'Gunakan pratonton langsung (JavaScript) (masih dalam uji kaji)',
'tog-forceeditsummary' => 'Tanya saya jika ringkasan suntingan kosong',
@@ -286,15 +319,9 @@ $messages = array(
'listingcontinuesabbrev' => 'samb.',
'index-category' => 'Laman terindeks',
'noindex-category' => 'Laman tak diindeks',
+'broken-file-category' => 'Laman yang ada pautan fail yang terputus',
-'mainpagetext' => "'''MediaWiki telah berjaya dipasang.'''",
-'mainpagedocfooter' => 'Sila rujuk [http://meta.wikimedia.org/wiki/Help:Contents Panduan Penggunaan] untuk maklumat mengenai penggunaan perisian wiki ini.
-
-== Untuk bermula ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Senarai tetapan konfigurasi]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Soalan Lazim MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Senarai mel bagi keluaran MediaWiki]',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Perihal',
'article' => 'Laman kandungan',
@@ -346,10 +373,10 @@ $messages = array(
'history' => 'Sejarah laman',
'history_short' => 'Sejarah',
'updatedmarker' => 'dikemaskinikan sejak kunjungan terakhir saya',
-'info_short' => 'Maklumat',
'printableversion' => 'Versi boleh cetak',
'permalink' => 'Pautan kekal',
'print' => 'Cetak',
+'view' => 'Paparkan',
'edit' => 'Sunting',
'create' => 'Cipta',
'editthispage' => 'Sunting laman ini',
@@ -357,6 +384,7 @@ $messages = array(
'delete' => 'Hapuskan',
'deletethispage' => 'Hapuskan laman ini',
'undelete_short' => 'Nyahhapus {{PLURAL:$1|satu suntingan|$1 suntingan}}',
+'viewdeleted_short' => 'Papar {{PLURAL:$1|satu|$1}} suntingan dihapuskan',
'protect' => 'Lindung',
'protect_change' => 'ubah',
'protectthispage' => 'Lindungi laman ini',
@@ -426,12 +454,15 @@ $1',
'versionrequiredtext' => 'MediaWiki versi $1 diperlukan untuk menggunakan laman ini. Sila lihat [[Special:Version|laman versi]].',
'ok' => 'Baik',
+'pagetitle' => '$1 - {{SITENAME}}',
+'pagetitle-view-mainpage' => '{{SITENAME}}',
'retrievedfrom' => 'Diambil daripada "$1"',
'youhavenewmessages' => 'Anda mempunyai $1 ($2).',
'newmessageslink' => 'pesanan baru',
'newmessagesdifflink' => 'perubahan terakhir',
'youhavenewmessagesmulti' => 'Anda telah menerima pesanan baru pada $1',
'editsection' => 'sunting',
+'editsection-brackets' => '[$1]',
'editold' => 'sunting',
'viewsourceold' => 'lihat sumber',
'editlink' => 'sunting',
@@ -440,6 +471,8 @@ $1',
'toc' => 'Isi kandungan',
'showtoc' => 'tunjukkan',
'hidetoc' => 'sorokkan',
+'collapsible-collapse' => 'Lipat',
+'collapsible-expand' => 'Kembangkan',
'thisisdeleted' => 'Lihat atau pulihkan $1?',
'viewdeleted' => 'Lihat $1?',
'restorelink' => '{{PLURAL:$1|satu|$1}} suntingan dihapuskan',
@@ -450,7 +483,11 @@ $1',
'site-atom-feed' => 'Suapan Atom $1',
'page-rss-feed' => 'Suapan RSS "$1"',
'page-atom-feed' => 'Suapan Atom "$1"',
+'feed-atom' => 'Atom',
+'feed-rss' => 'RSS',
'red-link-title' => '$1 (tidak wujud)',
+'sort-descending' => 'Isih tertib menurun',
+'sort-ascending' => 'Isih tertib menaik',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Laman',
@@ -533,11 +570,12 @@ Pertanyaan: $2',
'protectedpagetext' => 'Laman ini telah dikunci untuk menghalang penyuntingan.',
'viewsourcetext' => 'Anda boleh melihat dan menyalin sumber bagi laman ini:',
'protectedinterface' => 'Laman ini menyediakan teks antara muka bagi perisian ini, akan tetapi dikunci untuk menghalang penyalahgunaan.',
-'editinginterface' => "'''Amaran:''' Anda sedang menyunting laman yang digunakan untuk menghasilkan teks antara muka bagi perisian ini. Sebarang perubahan terhadap laman ini akan menjejaskan rupa antara muka bagi pengguna-pengguna lain. Untuk melakukan penterjemahan, anda boleh menggunakan [http://translatewiki.net/wiki/Main_Page?setlang=ms translatewiki.net], sebuah projek penyetempatan MediaWiki.",
+'editinginterface' => "'''Amaran:''' Anda sedang menyunting laman yang digunakan untuk menghasilkan teks antara muka bagi perisian ini. Sebarang perubahan terhadap laman ini akan menjejaskan rupa antara muka bagi pengguna-pengguna lain. Untuk melakukan penterjemahan, anda boleh menggunakan [//translatewiki.net/wiki/Main_Page?setlang=ms translatewiki.net], sebuah projek penyetempatan MediaWiki.",
'sqlhidden' => '(Pertanyaan SQL disorokkan)',
'cascadeprotected' => 'Laman ini telah dilindungi daripada penyuntingan oleh pengguna selain penyelia, kerana ia termasuk dalam {{PLURAL:$1|laman|laman-laman}} berikut, yang dilindungi dengan secara "melata": $2',
'namespaceprotected' => "Anda tidak mempunyai keizinan untuk menyunting laman dalam ruang nama '''$1'''.",
-'customcssjsprotected' => 'Anda tidak dibenarkan menyunting laman ini kerana ia mengandungi tetapan peribadi pengguna lain.',
+'customcssprotected' => 'Anda tidak dibenarkan menyunting laman JavaScript ini kerana ia mengandungi tetapan peribadi pengguna lain.',
+'customjsprotected' => 'Anda tidak dibenarkan menyunting laman JavaScript ini kerana ia mengandungi tetapan peribadi pengguna lain.',
'ns-specialprotected' => 'Laman khas tidak boleh disunting.',
'titleprotected' => "Tajuk ini telah dilindungi oleh [[User:$1|$1]] daripada dicipta. Sebab yang diberikan ialah ''$2''.",
@@ -573,6 +611,7 @@ Akaun anda telah dibuka. Jangan lupa untuk mengubah [[Special:Preferences|keutam
'createaccount' => 'Buka akaun',
'gotaccount' => "Sudah mempunyai akaun? '''$1'''.",
'gotaccountlink' => 'Log masuk',
+'userlogin-resetlink' => 'Lupa nama pengguna/kata laluan anda?',
'createaccountmail' => 'melalui e-mel',
'createaccountreason' => 'Sebab:',
'badretype' => 'Sila ulangi kata laluan dengan betul.',
@@ -582,11 +621,14 @@ Sila pilih nama yang lain.',
'createaccounterror' => 'Tidak dapat mencipta akaun: $1',
'nocookiesnew' => 'Akaun anda telah dibuka, tetapi anda belum log masuk. {{SITENAME}} menggunakan kuki untuk mencatat status log masuk pengguna. Sila aktifkan sokongan kuki pada pelayar anda, kemudian log masuk dengan nama pengguna dan kata laluan baru anda.',
'nocookieslogin' => "{{SITENAME}} menggunakan ''cookies'' untuk mencatat status log masuk pengguna. Sila aktifkan sokongan ''cookies'' pada pelayar anda dan cuba lagi.",
+'nocookiesfornew' => 'Akaun pengguna tidak dicipta kerana kami tidak dapat sahkan sumbernya.
+Pastikan anda telah bolehkan kuki, muat semula laman ini dan cuba lagi.',
+'nocookiesforlogin' => '{{int:nocookieslogin}}',
'noname' => 'Nama pengguna tidak sah.',
'loginsuccesstitle' => 'Berjaya log masuk',
'loginsuccess' => "'''Anda telah log masuk ke dalam {{SITENAME}} sebagai \"\$1\".'''",
'nosuchuser' => 'Pengguna "$1" tidak wujud. Nama pengguna adalah peka huruf besar. Sila semak ejaan anda, atau anda boleh [[Special:UserLogin/signup|membuka akaun baru]].',
-'nosuchusershort' => 'Pengguna "<nowiki>$1</nowiki>" tidak wujud. Sila semak ejaan anda.',
+'nosuchusershort' => 'Pengguna "$1" tidak wujud. Sila semak ejaan anda.',
'nouserspecified' => 'Sila nyatakan nama pengguna.',
'login-userblocked' => 'Pengguna ini disekat. Log masuk tidak dibenarkan.',
'wrongpassword' => 'Kata laluan yang dimasukkan adalah salah. Sila cuba lagi.',
@@ -632,13 +674,14 @@ Sila abaikan mesej ini jika anda tidak meminta untuk membuka akaun tersebut.',
'usernamehasherror' => 'Nama pengguna tidak boleh memiliki aksara cincangan',
'login-throttled' => 'Anda telah mencuba log masuk berulang kali.
Sila tunggu sebentar dan cuba lagi.',
+'login-abort-generic' => 'Log masuk anda tidak berjaya, dan terpaksa dibatalkan',
'loginlanguagelabel' => 'Bahasa: $1',
'suspicious-userlogout' => 'Permintaan anda untuk log keluar ditolak kerana ia kelihatan seperti dihantar oleh pelayar rosak atau proksi pengagregatan.',
# E-mail sending
'php-mail-error-unknown' => 'Ralat tak diketahui dalam fungsi mail() PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Tukar kata laluan',
'resetpass_announce' => 'Anda sedang log masuk dengan kata laluan sementara. Untuk log masuk dengan sempurna, sila tetapkan kata laluan baru di sini:',
'resetpass_text' => '<!-- Tambah teks di sini -->',
@@ -656,6 +699,30 @@ Sila tunggu sebentar dan cuba lagi.',
Anda mungkin telah pun berjaya menukar kata laluan anda atau meminta kata laluan sementara yang baru.',
'resetpass-temp-password' => 'Kata laluan sementara:',
+# Special:PasswordReset
+'passwordreset' => 'Set semula kata laluan',
+'passwordreset-text' => 'Isikan borang ini untuk menerima peringatan butiran akaun anda melalui e-mel.',
+'passwordreset-legend' => 'Set semula kata laluan',
+'passwordreset-disabled' => 'Ciri set semula kata laluan telah dimatikan di wiki ini.',
+'passwordreset-pretext' => '{{PLURAL:$1||Isikan data di bawah}}',
+'passwordreset-username' => 'Nama pengguna:',
+'passwordreset-domain' => 'Domain:',
+'passwordreset-email' => 'Alamat e-mel:',
+'passwordreset-emailtitle' => 'Butiran akaun di {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Ada orang (mungkin anda, dari alamat IP $1) yang memohon peringatan butiran akaun anda untuk {{SITENAME}} ($4). {{PLURAL:$3|Akaun|Akaun-akaun}} pengguna yang berikut dikaitkan dengan alamat e-mel ini:
+
+$2
+
+{{PLURAL:$3|Kata|Kata-kata}} laluan sementara ini akan luput dalam masa {{PLURAL:$5|sehari|$5 hari}}. Anda mesti log masuk dan buat kata laluan baru sekarang juga. Jika permohonan ini dibuat oleh orang lain, ataupun jika anda teringat balik kata laluan lama anda, dan tidak ingin lagi untuk menukarnya, anda boleh mengabaikan pesanan ini dan terus menggunakan kata laluan lama anda.',
+'passwordreset-emailtext-user' => 'Pengguna $1 di {{SITENAME}} memohon peringatan butiran akaun anda untuk {{SITENAME}} ($4). {{PLURAL:$3|Akaun|Akaun-akaun}} pengguna yang berikut dikaitkan dengan alamat e-mel ini:
+
+$2
+
+{{PLURAL:$3|Kata|Kata-kata}} laluan sementara ini akan luput dalam masa {{PLURAL:$5|sehari|$5 hari}}. Anda mesti log masuk dan buat kata laluan baru sekarang juga. Jika permohonan ini dibuat oleh orang lain, ataupun jika anda teringat balik kata laluan lama anda, dan tidak ingin lagi untuk menukarnya, anda boleh mengabaikan pesanan ini dan terus menggunakan kata laluan lama anda.',
+'passwordreset-emailelement' => 'Nama pengguna: $1
+Kata laluan sementara: $2',
+'passwordreset-emailsent' => 'E-mel peringatan telah dihantar.',
+
# Edit page toolbar
'bold_sample' => 'Teks tebal',
'bold_tip' => 'Teks tebal',
@@ -667,8 +734,6 @@ Anda mungkin telah pun berjaya menukar kata laluan anda atau meminta kata laluan
'extlink_tip' => 'Pautan luar (ingat awalan http://)',
'headline_sample' => 'Teks tajuk',
'headline_tip' => 'Tajuk peringkat 2',
-'math_sample' => 'Masukkan rumus di sini',
-'math_tip' => 'Rumus matematik (LaTeX)',
'nowiki_sample' => 'Masukkan teks tak berformat di sini',
'nowiki_tip' => 'Abaikan pemformatan wiki',
'image_sample' => 'Contoh.jpg',
@@ -752,7 +817,7 @@ Sekiranya anda adalah seorang pengguna tanpa nama dan berasa bahawa komen yang t
'noarticletext-nopermission' => 'Tiada teks dalam laman ini ketika ini.
Anda boleh [[Special:Search/{{PAGENAME}}|mencari tajuk laman ini]] dalam laman lain,
atau <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} mencari log yang berkaitan]</span>.',
-'userpage-userdoesnotexist' => 'Akaun pengguna "$1" tidak berdaftar. Sila pastikan sama ada anda mahu mencipta/menyunting laman ini.',
+'userpage-userdoesnotexist' => 'Akaun pengguna "<nowiki>$1</nowiki>" tidak berdaftar. Sila pastikan sama ada anda mahu mencipta/menyunting laman ini.',
'userpage-userdoesnotexist-view' => 'Akaun pengguna "$1" tidak berdaftar.',
'blocked-notice-logextract' => 'Pengguna ini sedang disekat.
Masukan log sekatan terakhir disediakan di bawah sebagai rujukan:',
@@ -784,6 +849,7 @@ Masukan log sekatan terakhir disediakan di bawah sebagai rujukan:',
'token_suffix_mismatch' => "'''Suntingan anda telah ditolak kerana pelanggan anda memusnahkan aksara tanda baca
dalam token suntingan. Suntingan tersebut telah ditolak untuk menghalang kerosakan teks laman.
Hal ini kadangkala berlaku apabila anda menggunakan khidmat proksi tanpa nama berdasarkan web yang bermasalah.'''",
+'edit_form_incomplete' => "'''Beberapa bahagian dari bentuk edit tidak mencapai pelayan, periksa bahawa suntingan anda utuh dan cuba lagi'.'''",
'editing' => 'Menyunting $1',
'editingsection' => 'Menyunting $1 (bahagian)',
'editingcomment' => 'Menyunting $1 (bahagian baru)',
@@ -827,6 +893,7 @@ Masukan log terakhir ditunjukkan di bawah untuk rujukan:",
'template-semiprotected' => '(dilindungi separa)',
'hiddencategories' => 'Laman ini terdapat dalam $1 kategori tersembunyi:',
'edittools' => '<!-- Teks di sini akan ditunjukkan bawah borang sunting dan muat naik. -->',
+'edittools-upload' => '-',
'nocreatetitle' => 'Penciptaan laman dihadkan',
'nocreatetext' => 'Penciptaan laman baru dihadkan pada {{SITENAME}}.
Anda boleh berundur dan menyunting laman yang sedia ada, atau [[Special:UserLogin|log masuk]].',
@@ -1017,8 +1084,8 @@ Mohon semak log.',
# Suppression log
'suppressionlog' => 'Log penahanan',
-'suppressionlogtext' => 'Yang berikut ialah senarai penghapusan dan sekatan yang membabitkan kandungan yang terselindung daripada penyelia.
-Sila lihat juga [[Special:IPBlockList|senarai sekatan IP]] yang sedang berkuatkuasa.',
+'suppressionlogtext' => 'Berikut adalah daftar penghapusan dan sekatan yang melibatkan kandungan yang disembunyikan daripada pentadbir.
+Lihat [[Special:BlockList|senarai sekatan IP]] untuk senarai larangan dan sekatan semasa.',
# History merging
'mergehistory' => 'Gabungkan sejarah laman',
@@ -1128,12 +1195,13 @@ Cuba berikan awalan ''all:'' untuk mencari semua kandungan (termasuk laman perbi
'searchdisabled' => 'Ciri pencarian dalam {{SITENAME}} dimatikan. Anda boleh mencari melalui Google. Sila ambil perhatian bahawa indeks dalam Google mungkin bukan yang terkini.',
# Quickbar
-'qbsettings' => 'Bar pantas',
-'qbsettings-none' => 'Tiada',
-'qbsettings-fixedleft' => 'Tetap sebelah kiri',
-'qbsettings-fixedright' => 'Tetap sebelah kanan',
-'qbsettings-floatingleft' => 'Berubah-ubah sebelah kiri',
-'qbsettings-floatingright' => 'Berubah-ubah sebelah kanan',
+'qbsettings' => 'Bar pantas',
+'qbsettings-none' => 'Tiada',
+'qbsettings-fixedleft' => 'Tetap sebelah kiri',
+'qbsettings-fixedright' => 'Tetap sebelah kanan',
+'qbsettings-floatingleft' => 'Berubah-ubah sebelah kiri',
+'qbsettings-floatingright' => 'Berubah-ubah sebelah kanan',
+'qbsettings-directionality' => 'Tetap, bergantung pada kearahan tulisan bahasa anda',
# Preferences page
'preferences' => 'Keutamaan',
@@ -1144,9 +1212,10 @@ Cuba berikan awalan ''all:'' untuk mencari semua kandungan (termasuk laman perbi
'changepassword' => 'Tukar kata laluan',
'prefs-skin' => 'Rupa',
'skin-preview' => 'Pratonton',
-'prefs-math' => 'Matematik',
'datedefault' => 'Tiada keutamaan',
+'prefs-beta' => 'Ciri-ciri beta',
'prefs-datetime' => 'Tarikh dan waktu',
+'prefs-labs' => 'Ciri-ciri makmal',
'prefs-personal' => 'Profil',
'prefs-rc' => 'Perubahan terkini',
'prefs-watchlist' => 'Senarai pantau',
@@ -1168,8 +1237,6 @@ Cuba berikan awalan ''all:'' untuk mencari semua kandungan (termasuk laman perbi
'columns' => 'Lajur:',
'searchresultshead' => 'Cari',
'resultsperpage' => 'Jumlah padanan bagi setiap halaman:',
-'contextlines' => 'Bilangan baris untuk dipaparkan bagi setiap capaian:',
-'contextchars' => 'Bilangan askara konteks bagi setiap baris:',
'stub-threshold' => 'Ambang bagi pemformatan <a href="#" class="stub">pautan ke rencana ringkas</a> (bait):',
'stub-threshold-disabled' => 'Dimatikan',
'recentchangesdays' => 'Bilangan hari dalam perubahan terkini:',
@@ -1182,7 +1249,7 @@ Di sini ada nilai yang dihasilkan secara rawak yang boleh anda guna: $1',
'savedprefs' => 'Keutamaan anda disimpan.',
'timezonelegend' => 'Zon waktu:',
'localtime' => 'Waktu tempatan:',
-'timezoneuseserverdefault' => 'Gunakan tetapan sediakala pelayan',
+'timezoneuseserverdefault' => 'Gunakan tetapan sediaan wiki ($1)',
'timezoneuseoffset' => 'Lain-lain (nyatakan imbangan)',
'timezoneoffset' => 'Imbangan¹:',
'servertime' => 'Waktu pelayan:',
@@ -1214,7 +1281,9 @@ Tindakan ini tidak boleh dibatalkan.',
'username' => 'Nama pengguna:',
'uid' => 'ID pengguna:',
'prefs-memberingroups' => 'Ahli {{PLURAL:$1|kumpulan|kumpulan}}:',
+'prefs-memberingroups-type' => '$1',
'prefs-registration' => 'Waktu pendaftaran:',
+'prefs-registration-date-time' => '$1',
'yourrealname' => 'Nama sebenar:',
'yourlanguage' => 'Bahasa:',
'yourvariant' => 'Varian bahasa kandungan:',
@@ -1229,7 +1298,8 @@ Tindakan ini tidak boleh dibatalkan.',
'prefs-help-gender' => 'Pilihan: digunakan oleh perisian ini untuk merujuk diri anda dengan betul. Maklumat ini akan didedahkan kepada orang awam.',
'email' => 'E-mel',
'prefs-help-realname' => 'Nama sebenar adalah tidak wajib. Jika dinyatakan, ia akan digunakan untuk mengiktiraf karya anda.',
-'prefs-help-email' => 'Alamat e-mel adalah tidak wajib. Akan tetapi, jika anda terlupa kata laluan, anda boleh meminta kata laluan yang baru dikirim kepada e-mel anda. Anda juga boleh membenarkan orang lain menghubungi anda melalui laman pengguna atau laman perbualan anda tanpa mendedahkan identiti anda.',
+'prefs-help-email' => 'Alamat e-mail adalah tidak wajib, tapi diperlukan untuk set semula kata laluan jika anda terlupa kata laluan anda.',
+'prefs-help-email-others' => 'Anda juga boleh memilih untuk membiarkan pengguna lain menghubungi anda menerusi laman perbualan anda tanpa perlu mendedahkan identiti anda.',
'prefs-help-email-required' => 'Alamat e-mel adalah wajib.',
'prefs-info' => 'Maklumat asas',
'prefs-i18n' => 'Pengantarabangsaan',
@@ -1251,26 +1321,27 @@ Tindakan ini tidak boleh dibatalkan.',
'email-address-validity-invalid' => 'Sila masukkan alamat e-mel yang sah',
# User rights
-'userrights' => 'Pengurusan hak pengguna',
-'userrights-lookup-user' => 'Urus kumpulan pengguna',
-'userrights-user-editname' => 'Masukkan nama pengguna:',
-'editusergroup' => 'Sunting Kumpulan Pengguna',
-'editinguser' => "Mengubah hak pengguna '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
-'userrights-editusergroup' => 'Ubah kumpulan pengguna',
-'saveusergroups' => 'Simpan Kumpulan Pengguna',
-'userrights-groupsmember' => 'Ahli bagi:',
-'userrights-groupsmember-auto' => 'Ahli automatik bagi:',
-'userrights-groups-help' => 'Anda boleh mengubah keahlian kumpulan bagi pengguna ini:
+'userrights' => 'Pengurusan hak pengguna',
+'userrights-lookup-user' => 'Urus kumpulan pengguna',
+'userrights-user-editname' => 'Masukkan nama pengguna:',
+'editusergroup' => 'Sunting Kumpulan Pengguna',
+'editinguser' => "Mengubah hak pengguna '''[[User:$1|$1]]''' ([[User talk:$1|{{int:talkpagelinktext}}]]{{int:pipe-separator}}[[Special:Contributions/$1|{{int:contribslink}}]])",
+'userrights-editusergroup' => 'Ubah kumpulan pengguna',
+'saveusergroups' => 'Simpan Kumpulan Pengguna',
+'userrights-groupsmember' => 'Ahli bagi:',
+'userrights-groupsmember-auto' => 'Ahli automatik bagi:',
+'userrights-groups-help' => 'Anda boleh mengubah keahlian kumpulan bagi pengguna ini:
* Petak yang bertanda bererti pengguna tersebut adalah ahli kumpulan itu.
* Petak yang tidak bertanda bererti bahawa pengguna tersebut bukan ahli kumpulan itu.
* Tanda bintang (*) menandakan bahawa anda tidak boleh melucutkan keahlian pengguna tersebut setelah anda melantiknya, dan begitulah sebaliknya.',
-'userrights-reason' => 'Sebab:',
-'userrights-no-interwiki' => 'Anda tidak mempunyai keizinan untuk mengubah hak-hak pengguna di wiki lain.',
-'userrights-nodatabase' => 'Pangkalan data $1 tiada atau bukan tempatan.',
-'userrights-nologin' => 'Anda mesti [[Special:UserLogin|log masuk]] dengan akaun pentadbir terlebih dahulu untuk memperuntukkan hak-hak pengguna.',
-'userrights-notallowed' => 'Akuan anda tidak dibenarkan untuk menambah atau membuang hak pengguna.',
-'userrights-changeable-col' => 'Kumpulan yang anda boleh ubah',
-'userrights-unchangeable-col' => 'Kumpulan yang anda tak boleh ubah',
+'userrights-reason' => 'Sebab:',
+'userrights-no-interwiki' => 'Anda tidak mempunyai keizinan untuk mengubah hak-hak pengguna di wiki lain.',
+'userrights-nodatabase' => 'Pangkalan data $1 tiada atau bukan tempatan.',
+'userrights-nologin' => 'Anda mesti [[Special:UserLogin|log masuk]] dengan akaun pentadbir terlebih dahulu untuk memperuntukkan hak-hak pengguna.',
+'userrights-notallowed' => 'Akuan anda tidak dibenarkan untuk menambah atau membuang hak pengguna.',
+'userrights-changeable-col' => 'Kumpulan yang anda boleh ubah',
+'userrights-unchangeable-col' => 'Kumpulan yang anda tak boleh ubah',
+'userrights-irreversible-marker' => '$1*',
# Groups
'group' => 'Kumpulan:',
@@ -1354,15 +1425,15 @@ Tindakan ini tidak boleh dibatalkan.',
'right-userrights' => 'Menyerahkan dan menarik balik sebarang hak pengguna',
'right-userrights-interwiki' => 'Menyerahkan dan menarik balik hak pengguna di wiki lain',
'right-siteadmin' => 'Mengunci dan membuka kunci pangkalan data',
-'right-reset-passwords' => 'Mengeset semula kata laluan pengguna lain',
'right-override-export-depth' => 'Mengeksport laman termasuk laman dipaut sehingga kedalaman 5',
'right-sendemail' => 'Mengirim e-mel kepada pengguna-pengguna lain',
# User rights log
-'rightslog' => 'Log hak pengguna',
-'rightslogtext' => 'Ini ialah log bagi perubahan hak pengguna.',
-'rightslogentry' => 'menukar keahlian kumpulan bagi $1 daripada $2 kepada $3',
-'rightsnone' => '(tiada)',
+'rightslog' => 'Log hak pengguna',
+'rightslogtext' => 'Ini ialah log bagi perubahan hak pengguna.',
+'rightslogentry' => 'menukar keahlian kumpulan bagi $1 daripada $2 kepada $3',
+'rightslogentry-autopromote' => 'dinaik pangkat secara automatik dari $2 ke $3',
+'rightsnone' => '(tiada)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'membaca laman ini',
@@ -1427,9 +1498,12 @@ Tindakan ini tidak boleh dibatalkan.',
'minoreditletter' => 'k',
'newpageletter' => 'B',
'boteditletter' => 'b',
+'unpatrolledletter' => '!',
+'sectionlink' => '→',
'number_of_watching_users_pageview' => '[$1 pemantau]',
'rc_categories' => 'Hadkan kepada kategori (asingkan dengan "|")',
'rc_categories_any' => 'Semua',
+'rc-change-size' => '$1',
'newsectionsummary' => '/* $1 */ bahagian baru',
'rc-enhanced-expand' => 'Papar butiran (JavaScript diperlukan)',
'rc-enhanced-hide' => 'Sorokkan butiran',
@@ -1439,6 +1513,7 @@ Tindakan ini tidak boleh dibatalkan.',
'recentchangeslinked-feed' => 'Perubahan berkaitan',
'recentchangeslinked-toolbox' => 'Perubahan berkaitan',
'recentchangeslinked-title' => 'Perubahan berkaitan dengan $1',
+'recentchangeslinked-backlink' => '↠$1',
'recentchangeslinked-noresult' => 'Tiada perubahan pada semua laman yang dipaut dalam tempoh yang diberikan.',
'recentchangeslinked-summary' => "Laman khas ini menyenaraikan perubahan terkini bagi laman-laman yang dipaut. Laman-laman yang terdapat dalam senarai pantau anda ditandakan dengan '''teks tebal'''.",
'recentchangeslinked-page' => 'Nama laman:',
@@ -1483,11 +1558,11 @@ Untuk menyertakan sebarang fail ke dalam sesebuah laman, gunakan pautan dengan s
'minlength1' => 'Panjang nama fail mestilah sekurang-kurangnya satu huruf.',
'illegalfilename' => 'Nama fail "$1" mengandungi aksara yang tidak dibenarkan dalam tajuk laman. Sila tukar nama fail ini dan muat naik sekali lagi.',
'badfilename' => 'Nama fail telah ditukar kepada "$1".',
-'filetype-mime-mismatch' => 'Sambungan fail tidak berpadanan dengan jenis MIME.',
+'filetype-mime-mismatch' => 'Sambungan fail ".$1" tidak padan dengan jenis MIME fail ($2).',
'filetype-badmime' => 'Memuat naik fail jenis MIME "$1" adalah tidak dibenarkan.',
'filetype-bad-ie-mime' => 'Fail ini tidak boleh dimuat naik kerana Internet Explorer mengesannya sebagai fail jenis "$1" yang tidak dibenarkan dan berbahaya.',
'filetype-unwanted-type' => "'''\".\$1\"''' adalah jenis fail yang tidak dikehendaki. {{PLURAL:\$3|Jenis|Jenis-jenis}} fail yang diutamakan ialah \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' adalah jenis fail yang dilarang. {{PLURAL:\$3|Jenis|Jenis-jenis}} fail yang dibenarkan ialah \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' adalah {{PLURAL:$4|jenis|jenis-jenis}} fail yang dilarang. {{PLURAL:$3|Jenis|Jenis-jenis}} fail yang dibenarkan ialah $2.',
'filetype-missing' => 'Fail ini tidak mempunyai sambungan (contohnya ".jpg").',
'empty-file' => 'Fail yang anda serahkan adalah kosong.',
'file-too-large' => 'Fail yang anda serahkan adalah terlalu besar.',
@@ -1503,6 +1578,7 @@ Untuk menyertakan sebarang fail ke dalam sesebuah laman, gunakan pautan dengan s
'large-file' => 'Saiz fail ini ialah $2. Anda dinasihati supaya memuat naik fail yang tidak melebihi $1.',
'largefileserver' => 'Fail ini telah melebihi had muat naik pelayan web.',
'emptyfile' => 'Fail yang dimuat naik adalah kosong. Ini mungkin disebabkan oleh kesilapan menaip nama fail. Sila pastikan bahawa anda betul-betul mahu memuat naik fail ini.',
+'windows-nonascii-filename' => 'Wiki ini tidak menyokong nama fail yang mengandungi aksara khas.',
'fileexists' => "Sebuah fail dengan nama ini telah pun wujud.
Sila semak '''<tt>[[:$1]]</tt>''' sekiranya anda tidak pasti bahawa anda mahu menukarnya atau tidak.
[[$1|thumb]]",
@@ -1534,6 +1610,8 @@ Jika anda memiliki imej ini dalam leraian penuh, sila muat naik fail tersebut. S
'php-uploaddisabledtext' => 'Pemuatnaikan fail PHP dilumpuhkan. Sila semak tetapan file_uploads.',
'uploadscripted' => 'Fail ini mengandungi kod HTML atau skrip yang boleh disalahtafsirkan oleh pelayar web.',
'uploadvirus' => 'Fail tersebut mengandungi virus! Butiran: $1',
+'uploadjava' => 'Fail ini ialah fail ZIP yang mengandungi fail .class Java.
+Memuat naik fail Java tidak dibenarkan, kerana boleh menyebabkan sekatan keselamatan dipintas.',
'upload-source' => 'Fail sumber',
'sourcefilename' => 'Nama fail sumber:',
'sourceurl' => 'Sumber URL:',
@@ -1543,10 +1621,6 @@ Jika anda memiliki imej ini dalam leraian penuh, sila muat naik fail tersebut. S
'upload-options' => 'Pilihan muat naik',
'watchthisupload' => 'Pantau fail ini',
'filewasdeleted' => 'Sebuah fail dengan nama ini pernah dimuat naik, tetapi kemudiannya dihapuskan. Anda seharusnya menyemak $1 sebelum meneruskan percubaan untuk memuat naik fail ini.',
-'upload-wasdeleted' => "'''Amaran: Anda sedang memuat naik sebuah fail yang pernah dihapuskan.'''
-
-Anda harus mempertimbangkan perlunya memuat naik fail ini.
-Untuk rujukan, yang berikut ialah log penghapusan bagi fail ini:",
'filename-bad-prefix' => "Nama bagi fail yang dimuat naik bermula dengan '''\"\$1\"''', yang mana merupakan nama yang tidak deskriptif yang biasanya ditetapkan oleh kamera digital secara automatik. Sila berikan nama yang lebih deskriptif bagi fail tersebut.",
'upload-success-subj' => 'Muat naik berjaya',
'upload-success-msg' => 'Muat naik anda dari [$2] berjaya. Ia ada di sini: [[:{{ns:file}}:$1]]',
@@ -1568,12 +1642,29 @@ Sila hubungi [[Special:ListUsers/sysop|pentadbir sistem]].',
'upload-unknown-size' => 'Saiz tidak diketahui',
'upload-http-error' => 'Berlaku ralat HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Wujud ralat ketika membuka fail untuk pemeriksaan ZIP.',
+'zip-wrong-format' => 'Fail yang dinyatakan bukan fail ZIP.',
+'zip-bad' => 'Fail ini adalah fail ZIP rosak atau tidak dapat dibaca.
+Ia tidak dapat diperiksa dengan betul demi keselamatan.',
+'zip-unsupported' => 'Fail ini adalah fail ZIP yang menggunakan ciri-ciri ZIP tidak disokong oleh MediaWiki.
+Ia tidak dapat diperiksa dengan betul demi keselamatan.',
+
+# Special:UploadStash
+'uploadstash' => 'Sorokan muat naik',
+'uploadstash-summary' => 'Laman ini menyediakan capaian kepada fail-fail yang dimuat naik (atau sedang dimuat naik) tapi belum diterbitkan ke dalam wiki. Fail-fail ini tidak dapat dilihat oleh sesiapa melainkan pengguna yang memuatnaiknya.',
+'uploadstash-clear' => 'Bersihkan fail-fail sorokan',
+'uploadstash-nofiles' => 'Anda tiada sebarang fail sorokan.',
+'uploadstash-badtoken' => 'Tindakan tadi tidak berjaya, mungkin kerana kelayakan menyunting anda telah luput. Cuba lagi.',
+'uploadstash-errclear' => 'Gagal membersihkan fail-fail tersebut.',
+'uploadstash-refresh' => 'Segarkan semula senarai fail',
+
# img_auth script messages
'img-auth-accessdenied' => 'Capaian ditolak',
'img-auth-nopathinfo' => 'Tiada PATH_INFO.
Pelayan anda tidak ditetapkan untuk menyampaikan maklumat ini.
Ia barangkali berdasarkan CGI dan tidak boleh menyokong img_auth.
-Lihat http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Lihat keizinan imej.]',
'img-auth-notindir' => 'Laluan yang diminta tiada dalam direktori muat naik yang telah dikonfigurasikan.',
'img-auth-badtitle' => 'Tajuk yang sah tidak dapat dibina daripada "$1".',
'img-auth-nologinnWL' => 'Anda belum log masuk dan "$1" tiada dalam senarai putih.',
@@ -1624,41 +1715,42 @@ Apabila ditapis oleh pengguna, hanya fail-fail yang dimuat naik versi terkininya
'listfiles_count' => 'Versi',
# File description page
-'file-anchor-link' => 'Fail',
-'filehist' => 'Sejarah fail',
-'filehist-help' => 'Klik pada tarikh/waktu untuk melihat rupa fail tersebut pada waktu silam.',
-'filehist-deleteall' => 'hapuskan semua',
-'filehist-deleteone' => 'hapuskan',
-'filehist-revert' => 'balik',
-'filehist-current' => 'semasa',
-'filehist-datetime' => 'Tarikh/Waktu',
-'filehist-thumb' => 'Imej ringkas',
-'filehist-thumbtext' => 'Imej ringkas bagi versi pada $1',
-'filehist-nothumb' => 'Tiada imej ringkas',
-'filehist-user' => 'Pengguna',
-'filehist-dimensions' => 'Ukuran',
-'filehist-filesize' => 'Saiz fail',
-'filehist-comment' => 'Komen',
-'filehist-missing' => 'Fail tidak dapat dijumpai',
-'imagelinks' => 'Penggunaan fail',
-'linkstoimage' => '{{PLURAL:$1|Laman|$1 buah laman}} berikut mengandungi pautan ke fail ini:',
-'linkstoimage-more' => 'Lebih daripada $1 laman mengandungi pautan ke fail ini.
+'file-anchor-link' => 'Fail',
+'filehist' => 'Sejarah fail',
+'filehist-help' => 'Klik pada tarikh/waktu untuk melihat rupa fail tersebut pada waktu silam.',
+'filehist-deleteall' => 'hapuskan semua',
+'filehist-deleteone' => 'hapuskan',
+'filehist-revert' => 'balik',
+'filehist-current' => 'semasa',
+'filehist-datetime' => 'Tarikh/Waktu',
+'filehist-thumb' => 'Imej ringkas',
+'filehist-thumbtext' => 'Imej ringkas bagi versi pada $1',
+'filehist-nothumb' => 'Tiada imej ringkas',
+'filehist-user' => 'Pengguna',
+'filehist-dimensions' => 'Ukuran',
+'filehist-filesize' => 'Saiz fail',
+'filehist-comment' => 'Komen',
+'filehist-missing' => 'Fail tidak dapat dijumpai',
+'imagelinks' => 'Penggunaan fail',
+'linkstoimage' => '{{PLURAL:$1|Laman|$1 buah laman}} berikut mengandungi pautan ke fail ini:',
+'linkstoimage-more' => 'Lebih daripada $1 laman mengandungi pautan ke fail ini.
Yang berikut ialah {{PLURAL:$1||$1}} pautan pertama ke fail ini.
Anda boleh melihat [[Special:WhatLinksHere/$2|senarai penuh]].',
-'nolinkstoimage' => 'Tiada laman yang mengandungi pautan ke fail ini.',
-'morelinkstoimage' => 'Lihat [[Special:WhatLinksHere/$1|semua pautan]] ke fail ini.',
-'redirectstofile' => '{{PLURAL:$1|Fail|$1 buah fail}} berikut melencong ke fail ini:',
-'duplicatesoffile' => '{{PLURAL:$1|Fail|$1 buah fail}} berikut adalah salinan bagi fail ini ([[Special:FileDuplicateSearch/$2|butiran lanjut]]):',
-'sharedupload' => 'Fail ini daripada $1 dan boleh digunakan oleh projek lain.',
-'sharedupload-desc-there' => 'Fail ini dari $1 dan mungkin digunakan oleh projek lain.
+'nolinkstoimage' => 'Tiada laman yang mengandungi pautan ke fail ini.',
+'morelinkstoimage' => 'Lihat [[Special:WhatLinksHere/$1|semua pautan]] ke fail ini.',
+'linkstoimage-redirect' => '$1 (lencongan fail) $2',
+'duplicatesoffile' => '{{PLURAL:$1|Fail|$1 buah fail}} berikut adalah salinan bagi fail ini ([[Special:FileDuplicateSearch/$2|butiran lanjut]]):',
+'sharedupload' => 'Fail ini daripada $1 dan boleh digunakan oleh projek lain.',
+'sharedupload-desc-there' => 'Fail ini dari $1 dan mungkin digunakan oleh projek lain.
Sila lihat [$2 laman penerangan fail] untuk maklumat lanjut.',
-'sharedupload-desc-here' => 'Fail ini dari $1 dan mungkin digunakan oleh projek lain.
+'sharedupload-desc-here' => 'Fail ini dari $1 dan mungkin digunakan oleh projek lain.
Penerangan pada [$2 laman penerangan failnya] di sana ditunjukkan di bawah.',
-'filepage-nofile' => 'Fail dengan nama ini tidak wujud.',
-'filepage-nofile-link' => 'Fail dengan nama ini tidak wujud, tetapi boleh [$1 dimuat naik].',
-'uploadnewversion-linktext' => 'Muat naik versi baru bagi fail ini',
-'shared-repo-from' => 'dari $1',
-'shared-repo' => 'sebuah gedung kongsi',
+'filepage-nofile' => 'Fail dengan nama ini tidak wujud.',
+'filepage-nofile-link' => 'Fail dengan nama ini tidak wujud, tetapi boleh [$1 dimuat naik].',
+'uploadnewversion-linktext' => 'Muat naik versi baru bagi fail ini',
+'shared-repo-from' => 'dari $1',
+'shared-repo' => 'sebuah gedung kongsi',
+'shared-repo-name-wikimediacommons' => 'Wikimedia Commons',
# File reversion
'filerevert' => 'Balikkan $1',
@@ -1736,15 +1828,16 @@ Penerangan pada [$2 laman penerangan failnya] di sana ditunjukkan di bawah.',
'statistics-users-active-desc' => 'Pengguna yang aktif sejak {{PLURAL:$1|semalam|$1 hari lalu}}',
'statistics-mostpopular' => 'Laman dilihat terbanyak',
-'disambiguations' => 'Laman penyahtaksaan',
+'disambiguations' => 'Laman-laman yang berpaut dengan laman penyahkekaburan',
'disambiguationspage' => 'Template:disambig',
'disambiguations-text' => "Laman-laman berikut mengandungi pautan ke '''laman penyahtaksaan'''. Pautan ini sepatutnya ditujukan kepada topik yang sepatutnya.<br />Sesebuah laman dianggap sebagai laman penyahtaksaan jika ia menggunakan templat yang dipaut dari [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Lencongan berganda',
-'doubleredirectstext' => 'Yang berikut ialah senarai laman yang melencong ke laman lencongan lain. Setiap baris mengandungi pautan ke laman lencongan pertama dan kedua, serta baris pertama bagi teks lencongan kedua, lazimnya merupakan laman sasaran "sebenar", yang sepatutnya ditujui oleh lencongan pertama.
+'doubleredirects' => 'Lencongan berganda',
+'doubleredirectstext' => 'Yang berikut ialah senarai laman yang melencong ke laman lencongan lain. Setiap baris mengandungi pautan ke laman lencongan pertama dan kedua, serta baris pertama bagi teks lencongan kedua, lazimnya merupakan laman sasaran "sebenar", yang sepatutnya ditujui oleh lencongan pertama.
Masukan yang <del>dipotong</del> telah diselesaikan.',
-'double-redirect-fixed-move' => '[[$1]] dilencongkan ke [[$2]]',
-'double-redirect-fixer' => 'Pembaiki lencongan',
+'double-redirect-fixed-move' => '[[$1]] dilencongkan ke [[$2]]',
+'double-redirect-fixed-maintenance' => 'Membetulkan dwilecongan daripada [[$1]] kepada [[$2]].',
+'double-redirect-fixer' => 'Pembaiki lencongan',
'brokenredirects' => 'Lencongan rosak',
'brokenredirectstext' => 'Lencongan-lencongan berikut menuju ke laman yang tidak wujud:',
@@ -1821,6 +1914,7 @@ Sila ambil perhatian bahawa mungkin terdapat tapak web lain yang memaut ke fail
'pager-newer-n' => '{{PLURAL:$1|$1 berikutnya}}',
'pager-older-n' => '{{PLURAL:$1|$1 sebelumnya}}',
'suppress' => 'Kawalan',
+'querypage-disabled' => 'Laman khas ini dilumpuhkan atas sebab-sebab prestasi.',
# Book sources
'booksources' => 'Sumber buku',
@@ -1831,8 +1925,8 @@ serta mungkin mempunyai maklumat lanjut mengenai buku yang anda cari:',
'booksources-invalid-isbn' => 'ISBN yang dinyatakan tidak sah. Sila semak sekali lagi.',
# Special:Log
-'specialloguserlabel' => 'Pengguna:',
-'speciallogtitlelabel' => 'Tajuk:',
+'specialloguserlabel' => 'Pelaku:',
+'speciallogtitlelabel' => 'Sasaran (tajuk atau pengguna):',
'log' => 'Log',
'all-logs-page' => 'Semua log awam',
'alllogstext' => 'Yang berikut ialah gabungan bagi semua log yang ada bagi {{SITENAME}}. Anda boleh menapis senarai ini dengan memilih jenis log, nama pengguna (peka huruf besar), atau nama laman yang terjejas (juga peka huruf besar).',
@@ -1871,12 +1965,13 @@ Lihat juga [[Special:WantedCategories|kategori yang dikehendaki]].',
'sp-deletedcontributions-contribs' => 'sumbangan',
# Special:LinkSearch
-'linksearch' => 'Pautan luar',
+'linksearch' => 'Carian pautan luar',
'linksearch-pat' => 'Corak carian:',
'linksearch-ns' => 'Ruang nama:',
'linksearch-ok' => 'Cari',
'linksearch-text' => 'Kad bebas seperti "*.wikipedia.org" dibenarkan.<br />
-Protokol yang disokong: <tt>$1</tt>',
+Memerlukan sekurang-kurangnya satu domain peringkat tinggi, cth. "*.org".<br />
+Protokol yang disokong: <tt>$1</tt> (jangan bubuh sebarang protokol ini dalam carian anda)',
'linksearch-line' => '$1 dipaut dari $2',
'linksearch-error' => 'Kad bebas hanya boleh digunakan pada permulaan nama hos.',
@@ -1940,6 +2035,10 @@ Alamat e-mel yang ditetapkan dalam [[Special:Preferences|keutamaan anda]] akan d
'noemailtext' => 'Pengguna ini tidak menetapkan alamat e-mel yang sah.',
'nowikiemailtitle' => 'E-mel tidak dibenarkan',
'nowikiemailtext' => 'Pengguna ini tidak mahu menerima e-mel daripada pengguna lain.',
+'emailnotarget' => 'Nama pengguna penerima tidak wujud atau tidak sah.',
+'emailtarget' => 'Isikan nama pengguna penerima',
+'emailusername' => 'Nama pengguna:',
+'emailusernamesubmit' => 'Hantar',
'email-legend' => 'Kirim e-mel kepada pengguna {{SITENAME}} lain',
'emailfrom' => 'Daripada:',
'emailto' => 'Kepada:',
@@ -1964,14 +2063,14 @@ Alamat e-mel yang ditetapkan dalam [[Special:Preferences|keutamaan anda]] akan d
'watchlistanontext' => 'Sila $1 terlebih dahulu untuk melihat atau menyunting senarai pantau anda.',
'watchnologin' => 'Belum log masuk',
'watchnologintext' => 'Anda mesti [[Special:UserLogin|log masuk]] terlebih dahulu untuk mengubah senarai pantau.',
-'addedwatch' => 'Senarai pantau dikemaskinikan',
+'addwatch' => 'Tambahkan ke senarai pantau',
'addedwatchtext' => "Laman \"[[:\$1]]\" telah ditambahkan ke dalam [[Special:Watchlist|senarai pantau]] anda.
Semua perubahan bagi laman tersebut dan laman perbincangannya akan disenaraikan di sana,
dan tajuk laman tersebut juga akan ditonjolkan dalam '''teks tebal''' di [[Special:RecentChanges|senarai perubahan terkini]]
untuk memudahkan anda.
Jika anda mahu membuang laman tersebut daripada senarai pantau, klik \"Nyahpantau\" pada bar sisi.",
-'removedwatch' => 'Dibuang daripada senarai pantau',
+'removewatch' => 'Buang daripada senarai pantau',
'removedwatchtext' => 'Laman "[[:$1]]" telah dibuang daripada [[Special:Watchlist|senarai pantau anda]].',
'watch' => 'Pantau',
'watchthispage' => 'Pantau laman ini',
@@ -1992,8 +2091,9 @@ Jika anda mahu membuang laman tersebut daripada senarai pantau, klik \"Nyahpanta
'watchlist-options' => 'Pilihan senarai pantau',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Memantau...',
-'unwatching' => 'Menyahpantau...',
+'watching' => 'Memantau...',
+'unwatching' => 'Menyahpantau...',
+'watcherrortext' => 'Ralat berlaku ketika menukar tetapan senarai pantau anda untuk "$1".',
'enotif_mailer' => 'Sistem Pemberitahuan {{SITENAME}}',
'enotif_reset' => 'Tandakan semua laman sebagai telah dikunjungi',
@@ -2025,16 +2125,16 @@ Anda juga boleh menetapkan semula penanda pemberitahuan bagi semua laman dalam s
--
Untuk mengubah tetapan pemberitahuan e-mel anda, lawati
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Untuk mengubah tetapan senarai pantau anda, lawati
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Untuk menghapuskan laman ini dari senarai pantau anda, lawati
$UNWATCHURL
Maklum balas dan bantuan:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Hapus laman',
@@ -2051,7 +2151,7 @@ Sila sahkan bahawa anda memang hendak berbuat demikian, anda faham akan
akibatnya, dan perbuatan anda mematuhi [[{{MediaWiki:Policy-url}}|dasar kami]].',
'actioncomplete' => 'Tindakan berjaya',
'actionfailed' => 'Tindakan gagal',
-'deletedtext' => '"<nowiki>$1</nowiki>" telah dihapuskan.
+'deletedtext' => '"$1" telah dihapuskan.
Sila lihat $2 untuk rekod penghapusan terkini.',
'deletedarticle' => 'menghapuskan "[[$1]]"',
'suppressedarticle' => 'menahan "[[$1]]"',
@@ -2098,7 +2198,7 @@ Lihat [[Special:ProtectedPages|senarai laman terlindung]] untuk senarai laman-la
'modifiedarticleprotection' => 'menukar peringkat perlindungan bagi "[[$1]]"',
'unprotectedarticle' => '"[[$1]]" digugurkan perlindungannya',
'movedarticleprotection' => 'memindahkan tetapan perlindungan dari "[[$2]]" ke "[[$1]]"',
-'protect-title' => 'Menetapkan peringkat perlindungan bagi "$1"',
+'protect-title' => 'Ubah tahap perlindungan bagi "$1"',
'prot_1movedto2' => '[[$1]] dipindahkan ke [[$2]]',
'protect-legend' => 'Sahkan perlindungan',
'protectcomment' => 'Sebab:',
@@ -2106,7 +2206,7 @@ Lihat [[Special:ProtectedPages|senarai laman terlindung]] untuk senarai laman-la
'protect_expiry_invalid' => 'Waktu tamat tidak sah.',
'protect_expiry_old' => 'Waktu tamat telah berlalu.',
'protect-unchain-permissions' => 'Aktifkan pilihan perlindungan selanjutnya',
-'protect-text' => "Anda boleh melihat dan menukar peringkat perlindungan bagi laman '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Anda boleh melihat dan menukar peringkat perlindungan bagi laman '''$1'''.",
'protect-locked-blocked' => "Anda telah disekat, justeru tidak boleh menukar peringkat perlindungan.
Ini adalah tetapan semasa bagi laman '''$1''':",
'protect-locked-dblock' => "Anda tidak boleh menukar peringkat perlindungan kerana pangkalan data sedang dikunci.
@@ -2159,7 +2259,7 @@ Ini adalah tetapan semasa bagi laman '''$1''':",
'viewdeletedpage' => 'Lihat laman yang dihapuskan',
'undeletepagetext' => '{{PLURAL:$1|Laman|$1 laman}} berikut telah dihapuskan tetapi masih disimpan dalam arkib dan masih boleh dipulihkan. Arkib tersebut akan dibersihkan dari semasa ke semasa.',
'undelete-fieldset-title' => 'Pulihkan semakan',
-'undeleteextrahelp' => "Untuk memulihkan keseluruhan laman, biarkan semua kotak semak dan klik '''''Pulih'''''. Untuk melaksanakan pemulihan tertentu, tanda di setiap kotak yang bersebelahan dengan semakan untuk dipulihkan dan klik '''''Pulih'''''. Klik '''''Set semula''''' untuk mengosongkan ruangan komen dan membuang tanda semua kotak.",
+'undeleteextrahelp' => "Untuk memulihkan keseluruhan sejarah laman, biarkan semua kotak semak tak tertanda dan klik '''''{{int:undeletebtn}}'''''. Untuk melaksanakan pemulihan tertentu, tandai setiap kotak yang bersebelahan dengan semakan untuk dipulihkan dan klik '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 semakan telah diarkibkan.',
'undeletehistory' => 'Jika anda memulihkan laman tersebut, semua semakan akan dipulihkan kepada sejarahnya. Jika sebuah laman baru yang mempunyai nama yang sama telah dicipta sejak penghapusan, semakan yang dipulihkan akan muncul dalam sejarah terdahulu.',
'undeleterevdel' => 'Penyahhapusan tidak akan dilaksanakan sekiranya ia menyebabkan sebahagian semakan puncak dihapuskan.
@@ -2203,9 +2303,12 @@ $1',
'undelete-show-file-submit' => 'Ya',
# Namespace form on various pages
-'namespace' => 'Ruang nama:',
-'invert' => 'Kecualikan pilihan',
-'blanknamespace' => '(Utama)',
+'namespace' => 'Ruang nama:',
+'invert' => 'Kecualikan pilihan',
+'tooltip-invert' => 'Tandai kotak ini untuk menyorokkan perubahan dalam ruang nama yang dipilih (dan ruang nama yang berkaitan jika ditandai)',
+'namespace_association' => 'Ruang nama berkaitan',
+'tooltip-namespace_association' => 'Tandai kotak ini untuk turut menyertakan ruang nama perbincangan atau subjek yang dikaitkan dengan ruang nama terpilih',
+'blanknamespace' => '(Utama)',
# Contributions
'contributions' => 'Sumbangan',
@@ -2253,6 +2356,9 @@ $1',
'whatlinkshere-filters' => 'Tapis',
# Block/unblock
+'autoblockid' => 'Sekat #$1 secara automatik',
+'block' => 'Sekat pengguna',
+'unblock' => 'Nyahsekat pengguna',
'blockip' => 'Sekat pengguna',
'blockip-title' => 'Sekat pengguna',
'blockip-legend' => 'Sekat pengguna',
@@ -2262,7 +2368,6 @@ Tindakan ini perlu dilakukan untuk menentang vandalisme sahaja dan selaras
dengan [[{{MediaWiki:Policy-url}}|dasar {{SITENAME}}]].
Sila masukkan sebab sekatan di bawah (umpamannya, sebutkan laman yang telah
dirosakkan).',
-'ipaddress' => 'Alamat IP:',
'ipadressorusername' => 'Alamat IP atau nama pengguna:',
'ipbexpiry' => 'Tamat:',
'ipbreason' => 'Sebab:',
@@ -2275,7 +2380,7 @@ dirosakkan).',
** Mengugut/mengganggu pengguna lain
** Menyalahgunakan berbilang akaun
** Nama pengguna yang tidak sesuai',
-'ipbanononly' => 'Sekat pengguna tanpa nama sahaja',
+'ipb-hardblock' => 'Cegah pengguna yang sudah log masuk daripada menyunting dari alamat IP ini',
'ipbcreateaccount' => 'Tegah pembukaan akaun',
'ipbemailban' => 'Halang pengguna tersebut daripada mengirim e-mel',
'ipbenableautoblock' => 'Sekat alamat IP terakhir dan mana-mana alamat berikutnya yang digunakan oleh pengguna ini secara automatik',
@@ -2286,12 +2391,15 @@ dirosakkan).',
'ipbotherreason' => 'Sebab tambahan/lain:',
'ipbhidename' => 'Sembunyikan nama pengguna daripada senarai suntingan dan pengguna',
'ipbwatchuser' => 'Pantau laman pengguna dan laman perbincangan bagi pengguna ini',
-'ipballowusertalk' => 'Benarkan pengguna ini menyunting laman perbincangannya sendiri ketika disekat',
+'ipb-disableusertalk' => 'Halang pengguna ini daripada menyunting laman perbincangan sendiri apabila disekat',
'ipb-change-block' => 'Sekat semula pengguna tersebut dengan tetapan ini',
+'ipb-confirm' => 'Sahkan sekatan',
'badipaddress' => 'Alamat IP tidak sah',
'blockipsuccesssub' => 'Sekatan berjaya',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] telah disekat.
<br />Sila lihat [[Special:IPBlockList|senarai sekatan IP]] untuk maklumat lanjut.',
+'ipb-blockingself' => 'Anda akan menyekat diri sendiri! Pastikah anda mahu berbuat demikian?',
+'ipb-confirmhideuser' => 'Anda akan menyekat seorang pengguna yang menghidupkan "sorokkan pengguna". Ini akan menindaskan nama pengguna itu di semua senarai dan entri log. Pastikah anda mahu berbuat demikian?',
'ipb-edit-dropdown' => 'Sunting sebab sekatan',
'ipb-unblock-addr' => 'Nyahsekat $1',
'ipb-unblock' => 'Nyahsekat nama pengguna atau alamat IP',
@@ -2301,17 +2409,23 @@ dirosakkan).',
'unblockiptext' => 'Gunakan borang di bawah untuk membuang sekatan bagialamat IP atau nama pengguna yang telah disekat.',
'ipusubmit' => 'Tarik sekatan ini',
'unblocked' => '[[User:$1|$1]] telah dinyahsekat',
+'unblocked-range' => '$1 telah dinyahsekat',
'unblocked-id' => 'Sekatan $1 telah dibuang',
+'blocklist' => 'Pengguna yang disekat',
'ipblocklist' => 'Alamat IP dan nama pengguna yang disekat',
'ipblocklist-legend' => 'Cari pengguna yang disekat',
-'ipblocklist-username' => 'Nama pengguna atau alamat IP:',
-'ipblocklist-sh-userblocks' => '$1 sekatan akaun',
-'ipblocklist-sh-tempblocks' => '$1 sekatan sementara',
-'ipblocklist-sh-addressblocks' => '$1 sekatan IP tunggal',
+'blocklist-userblocks' => 'Sorokkan sekatan akaun',
+'blocklist-tempblocks' => 'Sorokkan sekatan sementara',
+'blocklist-addressblocks' => 'Sorokkan sekatan IP tunggal',
+'blocklist-timestamp' => 'Cop masa',
+'blocklist-target' => 'Sasaran',
+'blocklist-expiry' => 'Luput',
+'blocklist-by' => 'Pentadbir sekatan',
+'blocklist-params' => 'Parameter sekatan',
+'blocklist-reason' => 'Sebab',
'ipblocklist-submit' => 'Cari',
'ipblocklist-localblock' => 'Sekatan tempatan',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Sekatan|Sekatan-sekatan}} lain',
-'blocklistline' => '$1, $2 menyekat $3 ($4)',
'infiniteblock' => 'selama-lamanya',
'expiringblock' => 'sehingga $1 pada $2',
'anononlyblock' => 'pengguna tanpa nama sahaja',
@@ -2334,7 +2448,7 @@ Log sekatan disediakan di bawah sebagai rujukan:',
'reblock-logentry' => 'menukar tetapan sekatan [[$1]] yang tamat pada $2 $3',
'blocklogtext' => 'Ini adalah log bagi sekatan dan penyahsekatan.
Alamat IP yang disekat secara automatik tidak disenaraikan di sini.
-Sila lihat juga [[Special:IPBlockList|senarai sekatan IP]] yang sedang berkuatkuasa.',
+Sila lihat juga [[Special:BlockList|senarai sekatan IP]] yang sedang berkuatkuasa.',
'unblocklogentry' => 'menyahsekat $1',
'block-log-flags-anononly' => 'pengguna tanpa nama sahaja',
'block-log-flags-nocreate' => 'pembukaan akaun dimatikan',
@@ -2348,9 +2462,9 @@ Sila lihat juga [[Special:IPBlockList|senarai sekatan IP]] yang sedang berkuatku
'ipb_expiry_temp' => 'Sekatan nama pengguna terselindung sepatutnya kekal.',
'ipb_hide_invalid' => 'Tidak dapat menahan akaun ini; ia mungkin mempunyai terlalu banyak suntingan.',
'ipb_already_blocked' => '"$1" sudah disekat',
-'ipb-needreblock' => '== Telah pun disekat ==
-$1 telah pun disekat Adakah anda mahu menukar tetapan sekatan pengguna ini?',
+'ipb-needreblock' => '$1 telah pun disekat Adakah anda mahu menukar tetapan sekatan pengguna ini?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Sekatan|Sekatan-sekatan}} lain',
+'unblock-hideuser' => 'Anda tidak boleh menyahsekat pengguna ini kerana nama penggunanya telah disorok.',
'ipb_cant_unblock' => 'Ralat: ID sekatan $1 tidak dijumpai. Barangkali ia telah pun dinyahsekat.',
'ipb_blocked_as_range' => 'Ralat: IP $1 tidak boleh dinyahsekat kerana ia tidak disekat secara langsung. Sebaliknya, ia disekat kerana merupakan sebahagian daripada sekatan julat $2, yang mana boleh dinyahsekat.',
'ip_range_invalid' => 'Julat IP tidak sah.',
@@ -2392,6 +2506,7 @@ sahkan bahawa anda betul-betul mahu melakukan tindakan ini.',
'unlockdbsuccesstext' => 'Kunci pangkalan data {{SITENAME}} telah dibuka.',
'lockfilenotwritable' => 'Fail kunci pangkalan data tidak boleh ditulis. Untuk mengunci atau membuka kunci pangkalan data, fail ini perlu diubah suai supaya boleh ditulis oleh pelayan web ini.',
'databasenotlocked' => 'Pangkalan data tidak dikunci.',
+'lockedbyandtime' => '(oleh $1 di $2 pada $3)',
# Move page
'move-page' => 'Pindah $1',
@@ -2509,7 +2624,7 @@ Dalam pilihan kedua tadi, anda juga boleh menggunakan pautan, umpamanya [[{{#Spe
'allmessagesdefault' => 'Teks mesej asal',
'allmessagescurrent' => 'Teks semasa',
'allmessagestext' => 'Ini ialah senarai pesanan sistem yang terdapat dalam ruang nama MediaWiki.
-Sila lawat [http://www.mediawiki.org/wiki/Localisation Penyetempatan MediaWiki] dan [http://translatewiki.net translatewiki.net] sekiranya anda mahu menyumbang dalam menyetempatkan dan menterjemah perisian MediaWiki.',
+Sila lawat [//www.mediawiki.org/wiki/Localisation Penyetempatan MediaWiki] dan [//translatewiki.net translatewiki.net] sekiranya anda mahu menyumbang dalam menyetempatkan dan menterjemah perisian MediaWiki.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' tidak boleh digunakan kerana '''\$wgUseDatabaseMessages''' dipadamkan.",
'allmessages-filter-legend' => 'Penapisan',
'allmessages-filter' => 'Tapis berdasarkan keadaan penempahan:',
@@ -2527,7 +2642,7 @@ Sila lawat [http://www.mediawiki.org/wiki/Localisation Penyetempatan MediaWiki]
'djvu_page_error' => 'Laman DjVu di luar julat',
'djvu_no_xml' => 'Gagal mendapatkan data XML bagi fail DjVu',
'thumbnail_invalid_params' => 'Parameter imej ringkas tidak sah',
-'thumbnail_dest_directory' => 'Direktori destinasi gagal diciptakans',
+'thumbnail_dest_directory' => 'Direktori destinasi gagal diwujudkan',
'thumbnail_image-type' => 'Jenis imej tidak disokong',
'thumbnail_gd-library' => 'Tatarajah perpustakaan GD tidak lengkap: kehilangan fungsi $1',
'thumbnail_image-missing' => 'Fail hilang: $1',
@@ -2646,10 +2761,20 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
'tooltip-preferences-save' => 'Simpan keutamaan',
'tooltip-summary' => 'Masukkan ringkasan pendek',
+# Stylesheets
+'common.css' => '/* CSS yang terletak di sini akan digunakan pada semua kulit */',
+'standard.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Klasik */',
+'nostalgia.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Nostalgia */',
+'cologneblue.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Cologne Blue */',
+'monobook.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Monobook */',
+'myskin.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit MySkin */',
+'chick.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Chick */',
+'simple.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Ringkas */',
+'modern.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Moden */',
+'vector.css' => '/* CSS yang terletak di sini akan mempengaruhi pengguna kulit Vector */',
+
# Metadata
-'nodublincore' => 'Metadata RDF Dublin Core dipadamkan bagi pelayan ini.',
-'nocreativecommons' => 'Metadata RDF Creative Commons RDF dipadamkan bagi pelayan ini.',
-'notacceptable' => 'Pelayan wiki ini tidak mampu menyediakan data dalam format yang boleh dibaca oleh pelanggan anda.',
+'notacceptable' => 'Pelayan wiki ini tidak mampu menyediakan data dalam format yang boleh dibaca oleh pelanggan anda.',
# Attribution
'anonymous' => '{{PLURAL:$1|Pengguna|Pengguna-pengguna}} {{SITENAME}} tanpa nama',
@@ -2672,36 +2797,28 @@ Simpan dalam komputer anda dan muat naiknya di sini.',
'spam_blanking' => 'Mengosongkan semua semakan yang mengandungi pautan ke $1',
# Info page
-'infosubtitle' => 'Maklumat laman',
-'numedits' => 'Jumlah suntingan (laman): $1',
-'numtalkedits' => 'Jumlah suntingan (laman perbincangan): $1',
-'numwatchers' => 'Bilangan pemantau: $1',
-'numauthors' => 'Bilangan pengarang (page): $1',
-'numtalkauthors' => 'Bilangan pengarang (laman perbincangan): $1',
+'pageinfo-title' => 'Maklumat untuk "$1"',
+'pageinfo-header-edits' => 'Suntingan',
+'pageinfo-header-watchlist' => 'Senarai pantau',
+'pageinfo-header-views' => 'Kunjungan',
+'pageinfo-subjectpage' => 'Laman',
+'pageinfo-talkpage' => 'Laman perbincangan',
+'pageinfo-watchers' => 'Bilangan pemantau',
+'pageinfo-edits' => 'Bilangan suntingan',
+'pageinfo-authors' => 'Bilangan pengarang yang berlainan',
+'pageinfo-views' => 'Bilangan kunjungan',
+'pageinfo-viewsperedit' => 'Kunjungan sesuntingan',
# Skin names
-'skinname-standard' => 'Klasik',
-'skinname-simple' => 'Ringkas',
-'skinname-modern' => 'Moden',
-
-# Math options
-'mw_math_png' => 'Sentiasa lakar PNG',
-'mw_math_simple' => 'HTML jika ringkas, sebaliknya PNG',
-'mw_math_html' => 'HTML jika boleh, sebaliknya PNG',
-'mw_math_source' => 'Biarkan sebagai TeX (untuk pelayar teks)',
-'mw_math_modern' => 'Dicadangkan untuk pelayar moden',
-'mw_math_mathml' => 'MathML jika boleh (sedang dalam uji kaji)',
-
-# Math errors
-'math_failure' => 'Gagal menghurai',
-'math_unknown_error' => 'ralat yang tidak dikenali',
-'math_unknown_function' => 'fungsi yang tidak dikenali',
-'math_lexing_error' => "ralat ''lexing''",
-'math_syntax_error' => 'ralat sintaks',
-'math_image_error' => 'Penukaran PNG gagal; periksa sama ada latex dan dvipng (atau dvips + gs + convert) telah dipasang dengan betul',
-'math_bad_tmpdir' => 'Direktori temp matematik tidak boleh ditulis atau dicipta',
-'math_bad_output' => 'Direktori output matematik tidak boleh ditulis atau dicipta',
-'math_notexvc' => 'Atur cara texvc hilang; sila lihat fail math/README untuk maklumat konfigurasi.',
+'skinname-standard' => 'Klasik',
+'skinname-nostalgia' => 'Nostalgia',
+'skinname-cologneblue' => 'Cologne Blue',
+'skinname-monobook' => 'MonoBook',
+'skinname-myskin' => 'MySkin',
+'skinname-chick' => 'Chick',
+'skinname-simple' => 'Ringkas',
+'skinname-modern' => 'Moden',
+'skinname-vector' => 'Vector',
# Patrolling
'markaspatrolleddiff' => 'Tanda ronda',
@@ -2738,22 +2855,26 @@ $1',
'nextdiff' => 'Suntingan berikutnya →',
# Media information
-'mediawarning' => "'''Amaran''': Fail jenis ini mungkin mengandungi kod berbahaya.
+'mediawarning' => "'''Amaran''': Fail jenis ini mungkin mengandungi kod berbahaya.
Dengan menjalankannya, komputer anda mungkin akan terjejas.",
-'imagemaxsize' => "Had saiz imej:<br />''(untuk laman keterangan fail)''",
-'thumbsize' => 'Saiz imej ringkas:',
-'widthheightpage' => '$1×$2, $3 halaman',
-'file-info' => 'saiz file: $1, jenis MIME: $2',
-'file-info-size' => '$1 × $2 piksel, saiz fail: $3, jenis MIME: $4',
-'file-nohires' => '<small>Tiada leraian lebih besar.</small>',
-'svg-long-desc' => 'Fail SVG, ukuran dasar $1 × $2 piksel, saiz fail: $3',
-'show-big-image' => 'Leraian penuh',
-'show-big-image-thumb' => '<small>Saiz pratonton ini: $1 × $2 piksel</small>',
-'file-info-gif-looped' => 'berulang',
-'file-info-gif-frames' => '$1 bingkai',
-'file-info-png-looped' => 'berulang',
-'file-info-png-repeat' => 'dimainkan {{PLURAL:$1|sekali|sebanyak $1 kali}}',
-'file-info-png-frames' => '$1 bingkai',
+'imagemaxsize' => "Had saiz imej:<br />''(untuk laman keterangan fail)''",
+'thumbsize' => 'Saiz imej ringkas:',
+'widthheight' => '$1 × $2',
+'widthheightpage' => '$1×$2, $3 halaman',
+'file-info' => 'saiz file: $1, jenis MIME: $2',
+'file-info-size' => '$1 × $2 piksel, saiz fail: $3, jenis MIME: $4',
+'file-info-size-pages' => '$1 × $2 piksel, saiz fail: $3, jenis MIME: $4, $5 laman',
+'file-nohires' => '<small>Tiada leraian lebih besar.</small>',
+'svg-long-desc' => 'Fail SVG, ukuran dasar $1 × $2 piksel, saiz fail: $3',
+'show-big-image' => 'Leraian penuh',
+'show-big-image-preview' => '<small>Saiz pratonton ini: $1.</small>',
+'show-big-image-other' => '<small>Leraian lain: $1.</small>',
+'show-big-image-size' => '$1 × $2 piksel',
+'file-info-gif-looped' => 'berulang',
+'file-info-gif-frames' => '$1 bingkai',
+'file-info-png-looped' => 'berulang',
+'file-info-png-repeat' => 'dimainkan {{PLURAL:$1|sekali|sebanyak $1 kali}}',
+'file-info-png-frames' => '$1 bingkai',
# Special:NewFiles
'newimages' => 'Galeri fail baru',
@@ -2768,7 +2889,11 @@ Dengan menjalankannya, komputer anda mungkin akan terjejas.",
'sp-newimages-showfrom' => 'Tunjukkan imej baru bermula daripada $2, $1',
# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
-'hours-abbrev' => 'j',
+'video-dims' => '$1, $2 × $3',
+'seconds-abbrev' => 's',
+'minutes-abbrev' => 'm',
+'hours-abbrev' => 'j',
+'days-abbrev' => 'h',
# Bad image list
'bad_image_list' => 'Berikut adalah format yang digunakan:
@@ -2782,14 +2907,20 @@ Sebarang pautan berikutnya pada baris yang sama dikira sebagai pengecualian (ren
'metadata-expand' => 'Tunjukkan butiran penuh',
'metadata-collapse' => 'Sembunyikan butiran penuh',
'metadata-fields' => 'Ruangan metadata EXIF yang disenaraikan dalam mesej ini akan ditunjukkan pada laman imej apabila jadual metadata dikecilkan.
-Ruangan lain akan disembunyikan pada sediakala.
+Ruangan lain akan disembunyikan secara sediakala.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Lebar',
@@ -2804,13 +2935,11 @@ Ruangan lain akan disembunyikan pada sediakala.
'exif-ycbcrpositioning' => 'Kedudukan Y dan C',
'exif-xresolution' => 'Leraian mengufuk',
'exif-yresolution' => 'Leraian menegak',
-'exif-resolutionunit' => 'Unit leraian X dan Y',
'exif-stripoffsets' => 'Lokasi data imej',
'exif-rowsperstrip' => 'Baris sejalur',
'exif-stripbytecounts' => 'Bait sejalur termampat',
'exif-jpeginterchangeformat' => 'Ofset ke SOI JPEG',
'exif-jpeginterchangeformatlength' => 'Jumlah bait bagi data JPEG',
-'exif-transferfunction' => 'Fungsi pindah',
'exif-whitepoint' => 'Kekromatan takat putih',
'exif-primarychromaticities' => 'Kekromatan warna primer',
'exif-ycbcrcoefficients' => 'Pekali matriks penukaran ruang warna',
@@ -2829,7 +2958,6 @@ Ruangan lain akan disembunyikan pada sediakala.
'exif-compressedbitsperpixel' => 'Mod pemampatan imej',
'exif-pixelydimension' => 'Lebar imej',
'exif-pixelxdimension' => 'Tinggi imej',
-'exif-makernote' => 'Catatan pengilang',
'exif-usercomment' => 'Komen pengguna',
'exif-relatedsoundfile' => 'Fail audio berkaitan',
'exif-datetimeoriginal' => 'Tarikh dan waktu penjanaan data',
@@ -2843,7 +2971,6 @@ Ruangan lain akan disembunyikan pada sediakala.
'exif-exposureprogram' => 'Atur cara pendedahan',
'exif-spectralsensitivity' => 'Kepekaan spektrum',
'exif-isospeedratings' => 'Penilaian kelajuan ISO',
-'exif-oecf' => 'Faktor penukaran optoelektronik',
'exif-shutterspeedvalue' => 'Kelajuan pengatup APEX',
'exif-aperturevalue' => 'Bukaan APEX',
'exif-brightnessvalue' => 'Kecerahan APEX',
@@ -2856,7 +2983,6 @@ Ruangan lain akan disembunyikan pada sediakala.
'exif-focallength' => 'Panjang fokus kanta',
'exif-subjectarea' => 'Luas subjek',
'exif-flashenergy' => 'Tenaga denyar',
-'exif-spatialfrequencyresponse' => 'Sambutan frekuensi ruang',
'exif-focalplanexresolution' => 'Leraian X satah fokus',
'exif-focalplaneyresolution' => 'Leraian Y satah fokus',
'exif-focalplaneresolutionunit' => 'Unit leraian satah fokus',
@@ -2865,7 +2991,6 @@ Ruangan lain akan disembunyikan pada sediakala.
'exif-sensingmethod' => 'Kaedah penderiaan',
'exif-filesource' => 'Sumber fail',
'exif-scenetype' => 'Jenis latar',
-'exif-cfapattern' => 'Corak CFA',
'exif-customrendered' => 'Pemprosesan imej tempahan',
'exif-exposuremode' => 'Mod pendedahan',
'exif-whitebalance' => 'Imbangan warna putih',
@@ -2910,10 +3035,79 @@ Ruangan lain akan disembunyikan pada sediakala.
'exif-gpsareainformation' => 'Nama kawasan GPS',
'exif-gpsdatestamp' => 'Tarikh GPS',
'exif-gpsdifferential' => 'Pembetulan pembezaan GPS',
+'exif-jpegfilecomment' => 'Komen fail JPEG',
+'exif-keywords' => 'Kata kunci',
+'exif-worldregioncreated' => 'Kawasan dunia di mana gambar diambil',
+'exif-countrycreated' => 'Negara di mana gambar diambil',
+'exif-countrycodecreated' => 'Kod negara di mana gambar diambil',
+'exif-provinceorstatecreated' => 'Wilayah atau negeri di mana gambar diambil',
+'exif-citycreated' => 'Bandar di mana gambar diambil',
+'exif-sublocationcreated' => 'Kawasan bandar di mana gambar diambil',
+'exif-worldregiondest' => 'Kawasan dunia yang ditunjukkan',
+'exif-countrydest' => 'Negara yang ditunjukkan',
+'exif-countrycodedest' => 'Kod negara yang ditunjukkan',
+'exif-provinceorstatedest' => 'Wilayah atau negeri yang ditunjukkan',
+'exif-citydest' => 'Bandar yang ditunjukkan',
+'exif-sublocationdest' => 'Kawasan bandar yang ditunjukkan',
'exif-objectname' => 'Tajuk ringkas',
+'exif-specialinstructions' => 'Arahan khusus',
+'exif-headline' => 'Tajuk berita',
+'exif-credit' => 'Kredit/Pembekal',
+'exif-source' => 'Sumber',
+'exif-editstatus' => 'Status editorial imej',
+'exif-urgency' => 'Kemustahakan',
+'exif-fixtureidentifier' => 'Nama lekapan',
+'exif-locationdest' => 'Lokasi yang digambarkan',
+'exif-locationdestcode' => 'Kod lokasi yang digambarkan',
+'exif-objectcycle' => 'Waktu untuk siarkan media',
+'exif-contact' => 'Maklumat hubungan',
+'exif-writer' => 'Penulis',
+'exif-languagecode' => 'Bahasa',
+'exif-iimversion' => 'Versi IIM',
+'exif-iimcategory' => 'Kategori',
+'exif-iimsupplementalcategory' => 'Kategori tambahan',
+'exif-datetimeexpires' => 'Jangan gunakan selepas',
+'exif-datetimereleased' => 'Keluar pada',
+'exif-originaltransmissionref' => 'Kod lokasi transmisi asal',
+'exif-identifier' => 'Pengenal',
+'exif-lens' => 'Kanta yang digunakan',
+'exif-serialnumber' => 'Nombor bersiri kamera',
+'exif-cameraownername' => 'Pemilik kamera',
+'exif-label' => 'Label',
+'exif-datetimemetadata' => 'Tarikh kali terakhir metadata diubah',
+'exif-nickname' => 'Nama timangan imej',
+'exif-rating' => 'Nilai (daripada 5)',
+'exif-rightscertificate' => 'Sijil pengurusan hak',
+'exif-copyrighted' => 'Status hak cipta',
+'exif-copyrightowner' => 'Pemilik hak cipta',
+'exif-usageterms' => 'Terma-terma penggunaan',
+'exif-webstatement' => 'Kenyataan hak cipta dalam talian',
+'exif-originaldocumentid' => 'ID unik dokumen asli',
+'exif-licenseurl' => 'URL untuk lesen hak cipta',
+'exif-morepermissionsurl' => 'Maklumat pelesenan alternatif',
+'exif-attributionurl' => 'Apabila menggunakan semula hasil kerja ini, tolong pautkannya ke',
+'exif-preferredattributionname' => 'Apabila menggunakan semula hasil kerja ini, tolong berikan penghargaan kepada',
+'exif-pngfilecomment' => 'Komen fail PNG',
+'exif-disclaimer' => 'Penafian',
+'exif-contentwarning' => 'Amaran kandungan',
+'exif-giffilecomment' => 'Komen fail GIF',
+'exif-intellectualgenre' => 'Jenis item',
+'exif-subjectnewscode' => 'Kod subjek',
+'exif-scenecode' => 'Kod pemandangan IPTC',
+'exif-event' => 'Peristiwa yang digambarkan',
+'exif-organisationinimage' => 'Pertubuhan yang digambarkan',
+'exif-personinimage' => 'Tokoh yang digambarkan',
+'exif-originalimageheight' => 'Ketinggian imej sebelum dipangkas',
+'exif-originalimagewidth' => 'Lebar imej sebelum dipangkas',
# EXIF attributes
'exif-compression-1' => 'Tidak dimampat',
+'exif-compression-2' => 'Pengekodan panjang jalan Huffman Terubahsuai 1-Dimensi Kumpulan 3 CCITT',
+'exif-compression-3' => 'Pengekodan faks Kumpulan 3 CCITT',
+'exif-compression-4' => 'Pengekodan faks Kumpulan 4 CCITT',
+
+'exif-copyrighted-true' => 'Berhak cipta',
+'exif-copyrighted-false' => 'Domain awam',
'exif-unknowndate' => 'Tarikh tidak diketahui',
@@ -2929,6 +3123,8 @@ Ruangan lain akan disembunyikan pada sediakala.
'exif-planarconfiguration-1' => 'format besar',
'exif-planarconfiguration-2' => 'format satah',
+'exif-colorspace-65535' => 'Tidak tertentukur',
+
'exif-componentsconfiguration-0' => 'tiada',
'exif-exposureprogram-0' => 'Tidak ditentukan',
@@ -3042,6 +3238,10 @@ Ruangan lain akan disembunyikan pada sediakala.
'exif-gpslongitude-e' => 'Longitud timur',
'exif-gpslongitude-w' => 'Longitud barat',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 meter di atas aras laut',
+'exif-gpsaltitude-below-sealevel' => '$1 meter di bawah paras laut',
+
'exif-gpsstatus-a' => 'Pengukuran sedang dijalankan',
'exif-gpsstatus-v' => 'Interoperabiliti pengukuran',
@@ -3053,21 +3253,73 @@ Ruangan lain akan disembunyikan pada sediakala.
'exif-gpsspeed-m' => 'Batu sejam',
'exif-gpsspeed-n' => 'Knot',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometer',
+'exif-gpsdestdistance-m' => 'Batu',
+'exif-gpsdestdistance-n' => 'Batu nautika',
+
+'exif-gpsdop-excellent' => 'Cemerlang ($1)',
+'exif-gpsdop-good' => 'Bagus ($1)',
+'exif-gpsdop-moderate' => 'Sederhana ($1)',
+'exif-gpsdop-fair' => 'Ala kadar ($1)',
+'exif-gpsdop-poor' => 'Tidak memuaskan ($1)',
+
+'exif-objectcycle-a' => 'Pagi sahaja',
+'exif-objectcycle-p' => 'Petang sahaja',
+'exif-objectcycle-b' => 'Pagi dan petang',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Arah benar',
'exif-gpsdirection-m' => 'Arah magnet',
+'exif-ycbcrpositioning-1' => 'Terpusat',
+'exif-ycbcrpositioning-2' => 'Sama tapak',
+
+'exif-dc-contributor' => 'Penyumbang',
+'exif-dc-coverage' => 'Skop ruangan atau masa media',
+'exif-dc-date' => 'Tarikh',
+'exif-dc-publisher' => 'Penerbit',
+'exif-dc-relation' => 'Media berkaitan',
+'exif-dc-rights' => 'Hak',
+'exif-dc-source' => 'Media sumber',
+'exif-dc-type' => 'Jenis media',
+
+'exif-rating-rejected' => 'Ditolak',
+
+'exif-isospeedratings-overflow' => 'Melebihi 65535',
+
+'exif-iimcategory-ace' => 'Seni, kebudayaan dan hiburan',
+'exif-iimcategory-clj' => 'Jenayah dan undang-undang',
+'exif-iimcategory-dis' => 'Bencana dan kemalangan',
+'exif-iimcategory-fin' => 'Ekonomi dan perniagaan',
+'exif-iimcategory-edu' => 'Pendidikan',
+'exif-iimcategory-evn' => 'Alam sekitar',
+'exif-iimcategory-hth' => 'Kesihatan',
+'exif-iimcategory-hum' => 'Pesona',
+'exif-iimcategory-lab' => 'Pekerja',
+'exif-iimcategory-lif' => 'Gaya hidup dan santai',
+'exif-iimcategory-pol' => 'Politik',
+'exif-iimcategory-rel' => 'Agama dan kepercayaan',
+'exif-iimcategory-sci' => 'Sains dan teknologi',
+'exif-iimcategory-soi' => 'Isu sosial',
+'exif-iimcategory-spo' => 'Sukan',
+'exif-iimcategory-war' => 'Peperangan, konflik dan pergolakan',
+'exif-iimcategory-wea' => 'Cuaca',
+
+'exif-urgency-normal' => 'Biasa ($1)',
+'exif-urgency-low' => 'Rendah ($1)',
+'exif-urgency-high' => 'Tinggi ($1)',
+'exif-urgency-other' => 'Keutamaan tentuan pengguna ($1)',
+
# External editor support
'edit-externally' => 'Sunting fail ini menggunakan perisian luar',
-'edit-externally-help' => '(Lihat [http://www.mediawiki.org/wiki/Manual:External_editors arahan pemasangan] untuk maklumat lanjut)',
+'edit-externally-help' => '(Lihat [//www.mediawiki.org/wiki/Manual:External_editors arahan pemasangan] untuk maklumat lanjut)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'semua',
-'imagelistall' => 'semua',
-'watchlistall2' => 'semua',
-'namespacesall' => 'semua',
-'monthsall' => 'semua',
-'limitall' => 'semua',
+'watchlistall2' => 'semua',
+'namespacesall' => 'semua',
+'monthsall' => 'semua',
+'limitall' => 'semua',
# E-mail address confirmation
'confirmemail' => 'Sahkan alamat e-mel',
@@ -3142,17 +3394,24 @@ $1',
'trackbackdeleteok' => 'Jejak balik dihapuskan.',
# Delete conflict
-'deletedwhileediting' => "'''Amaran''': Laman ini dihapuskan ketika anda sedang menyuntingnya!",
-'confirmrecreate' => "Pengguna [[User:$1|$1]] ([[User talk:$1|perbincangan]]) telah menghapuskan laman ini ketika anda sedang menyunting atas sebab berikut:
+'deletedwhileediting' => "'''Amaran''': Laman ini dihapuskan ketika anda sedang menyuntingnya!",
+'confirmrecreate' => "Pengguna [[User:$1|$1]] ([[User talk:$1|perbincangan]]) telah menghapuskan laman ini ketika anda sedang menyunting atas sebab berikut:
: ''$2''
Sila sahkan bahawa anda mahu mencipta semula laman ini.",
-'recreate' => 'Cipta semula',
+'confirmrecreate-noreason' => 'Pengguna [[User:$1|$1]] ([[User talk:$1|bincang]]) menghapuskan laman ini selepas anda mulai menyunting. Sila sahkan bahawa anda betul-betul ingin mencipta semula laman ini.',
+'recreate' => 'Cipta semula',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Kosongkan fail simpanan bagi laman ini?',
'confirm-purge-bottom' => 'Kosongkan cache dan papar versi semasa.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Tambahkan laman ini ke dalam senarai pantau anda?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Buang laman ini daripada senarai pantau anda?',
+
# Multipage image navigation
'imgmultipageprev' => '↠halaman sebelumnya',
'imgmultipagenext' => 'halaman berikutnya →',
@@ -3193,7 +3452,7 @@ Sila sahkan bahawa anda mahu mencipta semula laman ini.",
'watchlistedit-normal-title' => 'Sunting senarai pantau',
'watchlistedit-normal-legend' => 'Buang tajuk daripada senarai pantau',
'watchlistedit-normal-explain' => 'Tajuk-tajuk dalam senarai pantau anda ditunjukkan di bawah.
-Untuk membuang mana-mana tajuk, tanda kotak yang terletak di sebelahnya, dan klik "Buang Tajuk". Anda juga boleh [[Special:Watchlist/raw|menyunting senarai mentah]].',
+Untuk membuang mana-mana tajuk, tanda kotak yang terletak di sebelahnya, dan klik "Buang Tajuk". Anda juga boleh [[Special:EditWatchlist/raw|menyunting senarai mentah]].',
'watchlistedit-normal-submit' => 'Buang Tajuk',
'watchlistedit-normal-done' => '$1 tajuk dibuang daripada senarai pantau anda:',
'watchlistedit-raw-title' => 'Sunting senarai pantau mentah',
@@ -3201,7 +3460,7 @@ Untuk membuang mana-mana tajuk, tanda kotak yang terletak di sebelahnya, dan kli
'watchlistedit-raw-explain' => 'Tajuk-tajuk dalam senarai pantau anda dipaparkan di bawah, dan boleh disunting dengan menambah atau membuang daripada senarai tersebut;
satu tajuk bagi setiap baris.
Apabila selesai, klik "{{int:Watchlistedit-raw-submit}}".
-Anda juga boleh [[Special:Watchlist/edit|menggunakan penyunting piawai]].',
+Anda juga boleh [[Special:EditWatchlist|menggunakan penyunting piawai]].',
'watchlistedit-raw-titles' => 'Tajuk:',
'watchlistedit-raw-submit' => 'Kemas Kini Senarai Pantau',
'watchlistedit-raw-done' => 'Senarai pantau anda telah dikemaskinikan.',
@@ -3232,33 +3491,33 @@ Anda juga boleh [[Special:Watchlist/edit|menggunakan penyunting piawai]].',
'duplicate-defaultsort' => 'Amaran: Kunci susunan tersedia "$2" mengatasi kunci susunan tersedia "$1" sebelumnya.',
# Special:Version
-'version' => 'Versi',
-'version-extensions' => 'Penyambung yang dipasang',
-'version-specialpages' => 'Laman khas',
-'version-parserhooks' => 'Penyangkuk penghurai',
-'version-variables' => 'Pemboleh ubah',
-'version-skins' => 'Rupa',
-'version-other' => 'Lain-lain',
-'version-mediahandlers' => 'Pengelola media',
-'version-hooks' => 'Penyangkuk',
-'version-extension-functions' => 'Fungsi penyambung',
-'version-parser-extensiontags' => 'Tag penyambung penghurai',
-'version-parser-function-hooks' => 'Penyangkuk fungsi penghurai',
-'version-skin-extension-functions' => 'Fungsi penyangkuk rupa',
-'version-hook-name' => 'Nama penyangkuk',
-'version-hook-subscribedby' => 'Dilanggan oleh',
-'version-version' => '(Versi $1)',
-'version-license' => 'Lesen',
-'version-poweredby-credits' => "Wiki ini dikuasakan oleh '''[http://www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
-'version-poweredby-others' => 'penyumbang-penyumbang lain',
-'version-license-info' => 'MediaWiki adalah perisian bebas; anda boleh mengedarkannya semula dan/atau mengubah suainya di bawah terma-terma Lesen Awam GNU sebagai mana yang telah diterbitkan oleh Yayasan Perisian Bebas, sama ada versi 2 bagi Lesen tersebut, atau (berdasarkan pilihan anda) mana-mana versi selepasnya.
+'version' => 'Versi',
+'version-extensions' => 'Penyambung yang dipasang',
+'version-specialpages' => 'Laman khas',
+'version-parserhooks' => 'Penyangkuk penghurai',
+'version-variables' => 'Pemboleh ubah',
+'version-antispam' => 'Pencegahan spam',
+'version-skins' => 'Rupa',
+'version-other' => 'Lain-lain',
+'version-mediahandlers' => 'Pengelola media',
+'version-hooks' => 'Penyangkuk',
+'version-extension-functions' => 'Fungsi penyambung',
+'version-parser-extensiontags' => 'Tag penyambung penghurai',
+'version-parser-function-hooks' => 'Penyangkuk fungsi penghurai',
+'version-hook-name' => 'Nama penyangkuk',
+'version-hook-subscribedby' => 'Dilanggan oleh',
+'version-version' => '(Versi $1)',
+'version-license' => 'Lesen',
+'version-poweredby-credits' => "Wiki ini dikuasakan oleh '''[//www.mediawiki.org/ MediaWiki]''', hak cipta © 2001-$1 $2.",
+'version-poweredby-others' => 'penyumbang-penyumbang lain',
+'version-license-info' => 'MediaWiki adalah perisian bebas; anda boleh mengedarkannya semula dan/atau mengubah suainya di bawah terma-terma Lesen Awam GNU sebagai mana yang telah diterbitkan oleh Yayasan Perisian Bebas, sama ada versi 2 bagi Lesen tersebut, atau (berdasarkan pilihan anda) mana-mana versi selepasnya.
MediaWiki diedarkan dengan harapan bahawa ia berguna, tetapi TANPA SEBARANG WARANTI; hatta waranti yang tersirat bagi KEBOLEHDAGANGAN mahupun KESESUAIAN UNTUK TUJUAN TERTENTU. Sila lihat Lesen Awam GNU untuk butiran lanjut.
-Anda patut telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING sebuah salinan bagi Lesen Awam GNU] bersama-sama dengan atur cara ini; jika tidak, tulis ke Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA atau [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html baca dalam talian].',
-'version-software' => 'Perisian yang dipasang',
-'version-software-product' => 'Produk',
-'version-software-version' => 'Versi',
+Anda patut telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING sebuah salinan bagi Lesen Awam GNU] bersama-sama dengan atur cara ini; jika tidak, tulis ke Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA atau [//www.gnu.org/licenses/old-licenses/gpl-2.0.html baca dalam talian].',
+'version-software' => 'Perisian yang dipasang',
+'version-software-product' => 'Produk',
+'version-software-version' => 'Versi',
# Special:FilePath
'filepath' => 'Laluan fail',
@@ -3268,22 +3527,22 @@ Anda patut telah menerima [{{SERVER}}{{SCRIPTPATH}}/COPYING sebuah salinan bagi
Imej ditunjuk dalam leraian penuh, jenis fail yang lain dibuka dengan atur cara yang berkenaan secara terus.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Cari fail serupa',
-'fileduplicatesearch-summary' => 'Anda boleh mencari fail serupa berdasarkan nilai cincangannya.
-
-Sila masukkan nama fail tanpa awalan "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Cari fail serupa',
-'fileduplicatesearch-filename' => 'Nama fail:',
-'fileduplicatesearch-submit' => 'Cari',
-'fileduplicatesearch-info' => '$1 × $2 piksel<br />Saiz fail: $3<br />Jenis MIME: $4',
-'fileduplicatesearch-result-1' => 'Tiada fail yang serupa dengan "$1".',
-'fileduplicatesearch-result-n' => 'Terdapat $2 fail yang serupa dengan "$1".',
+'fileduplicatesearch' => 'Cari fail serupa',
+'fileduplicatesearch-summary' => 'Anda boleh mencari fail serupa berdasarkan nilai cincangannya.',
+'fileduplicatesearch-legend' => 'Cari fail serupa',
+'fileduplicatesearch-filename' => 'Nama fail:',
+'fileduplicatesearch-submit' => 'Cari',
+'fileduplicatesearch-info' => '$1 × $2 piksel<br />Saiz fail: $3<br />Jenis MIME: $4',
+'fileduplicatesearch-result-1' => 'Tiada fail yang serupa dengan "$1".',
+'fileduplicatesearch-result-n' => 'Terdapat $2 fail yang serupa dengan "$1".',
+'fileduplicatesearch-noresults' => 'Tidak ada gambar-gambar dengan nama "$1" dijumpai.',
# Special:SpecialPages
'specialpages' => 'Laman khas',
'specialpages-note' => '----
* Laman khas biasa.
-* <strong class="mw-specialpagerestricted">Laman khas terhad.</strong>',
+* <span class="mw-specialpagerestricted">Laman khas terhad.</span>
+* <span class="mw-specialpagecached">Laman khas tercache (mungkin lapuk).</span>',
'specialpages-group-maintenance' => 'Laporan penyenggaraan',
'specialpages-group-other' => 'Laman khas lain',
'specialpages-group-login' => 'Log masuk / daftar',
diff --git a/languages/messages/MessagesMt.php b/languages/messages/MessagesMt.php
index d8b1f643..addeeb2f 100644
--- a/languages/messages/MessagesMt.php
+++ b/languages/messages/MessagesMt.php
@@ -48,94 +48,94 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'RindirizziDoppji', 'RiindirizziDoppji' ),
+ 'Activeusers' => array( 'UtentiAttivi' ),
+ 'Allmessages' => array( 'MessaġġiKollha' ),
+ 'Allpages' => array( 'PaġniKollha' ),
+ 'Ancientpages' => array( 'PaġniQodma', 'PaġniAntiki' ),
+ 'Blankpage' => array( 'PaġnaVojta' ),
+ 'Block' => array( 'BlokkaIP' ),
+ 'Blockme' => array( 'Imblukkani' ),
+ 'Booksources' => array( 'SorsiKotba' ),
'BrokenRedirects' => array( 'RindirizziMiksura', 'RiindirizziMiksura' ),
- 'Disambiguations' => array( 'Diżambigwazzjoni' ),
- 'Userlogin' => array( 'UtentDħul' ),
- 'Userlogout' => array( 'UtentĦruġ' ),
+ 'Categories' => array( 'Kategoriji' ),
+ 'ChangePassword' => array( 'BiddelPassword' ),
+ 'Confirmemail' => array( 'KonfermaPostaElettronika' ),
+ 'Contributions' => array( 'Kontribuzzjonijiet' ),
'CreateAccount' => array( 'OħloqKont' ),
- 'Preferences' => array( 'Preferenzi' ),
- 'Watchlist' => array( 'ListaOsservazzjoni' ),
- 'Recentchanges' => array( 'TibdilRiċenti' ),
- 'Upload' => array( 'Tella\'' ),
+ 'Deadendpages' => array( 'PaġniWieqfa' ),
+ 'DeletedContributions' => array( 'KontribuzzjonijietImħassra' ),
+ 'Disambiguations' => array( 'Diżambigwazzjoni' ),
+ 'DoubleRedirects' => array( 'RindirizziDoppji', 'RiindirizziDoppji' ),
+ 'Emailuser' => array( 'IbgħatUtent' ),
+ 'Export' => array( 'Esporta' ),
+ 'Fewestrevisions' => array( 'L-InqasReviżjonijiet' ),
+ 'FileDuplicateSearch' => array( 'FittexFajlDuplikat' ),
+ 'Filepath' => array( 'PostFajl' ),
+ 'Import' => array( 'Importa' ),
+ 'Invalidateemail' => array( 'PostaElettronikaInvalida' ),
+ 'BlockList' => array( 'ListaIPImblukkati' ),
+ 'LinkSearch' => array( 'FittexĦolqa' ),
+ 'Listadmins' => array( 'ListaAmmin' ),
+ 'Listbots' => array( 'ListaBots' ),
'Listfiles' => array( 'ListaStampi', 'ListaFajls' ),
- 'Newimages' => array( 'StampiÄ odda', 'FajlsÄ odda' ),
- 'Listusers' => array( 'Utenti', 'ListaUtenti' ),
'Listgrouprights' => array( 'ListaDrittijietGruppi' ),
- 'Statistics' => array( 'Statistika' ),
- 'Randompage' => array( 'PaġnaKwalunkwe' ),
+ 'Listredirects' => array( 'ListaRindirizzi', 'ListaRiindirizzi' ),
+ 'Listusers' => array( 'Utenti', 'ListaUtenti' ),
+ 'Lockdb' => array( 'AgħlaqDB' ),
+ 'Log' => array( 'Reġistru', 'Reġistri' ),
'Lonelypages' => array( 'PaġniOrfni' ),
- 'Uncategorizedpages' => array( 'PaġniMhuxKategorizzati' ),
- 'Uncategorizedcategories' => array( 'KategorijiMhuxKategorizzati' ),
- 'Uncategorizedimages' => array( 'StampiMhuxKategorizzati' ),
- 'Uncategorizedtemplates' => array( 'MudelliMhuxKategorizzati' ),
- 'Unusedcategories' => array( 'KategorijiMhuxUżati' ),
- 'Unusedimages' => array( 'StampiMhuxUżati', 'FajlsMhuxUżati' ),
- 'Wantedpages' => array( 'PaġniRikjesti', 'ĦoloqMiksura' ),
- 'Wantedcategories' => array( 'KategorijiRikjesti' ),
- 'Wantedfiles' => array( 'FajlsRikjesti' ),
- 'Wantedtemplates' => array( 'MudelliRikjesti' ),
+ 'Longpages' => array( 'PaġniTwal' ),
+ 'MergeHistory' => array( 'WaħħadKronoloġija' ),
+ 'MIMEsearch' => array( 'FittexMIME' ),
+ 'Mostcategories' => array( 'L-AktarKategoriji' ),
+ 'Mostimages' => array( 'L-AktarStampiMarbuta' ),
'Mostlinked' => array( 'L-AktarPaġniMarbuta' ),
'Mostlinkedcategories' => array( 'L-AktarKategorijiMarbuta' ),
'Mostlinkedtemplates' => array( 'L-AktarMudelliMarbuta' ),
- 'Mostimages' => array( 'L-AktarStampiMarbuta' ),
- 'Mostcategories' => array( 'L-AktarKategoriji' ),
'Mostrevisions' => array( 'L-AktarReviżjonijiet' ),
- 'Fewestrevisions' => array( 'L-InqasReviżjonijiet' ),
- 'Shortpages' => array( 'PaġniQosra' ),
- 'Longpages' => array( 'PaġniTwal' ),
+ 'Movepage' => array( 'Mexxi', 'MexxiPaġna' ),
+ 'Mycontributions' => array( 'KontribuzzjonijietTiegħi' ),
+ 'Mypage' => array( 'PaġnaTiegħi' ),
+ 'Mytalk' => array( 'DiskussjonijietTiegħi' ),
+ 'Newimages' => array( 'StampiÄ odda', 'FajlsÄ odda' ),
'Newpages' => array( 'PaġniĠodda' ),
- 'Ancientpages' => array( 'PaġniQodma', 'PaġniAntiki' ),
- 'Deadendpages' => array( 'PaġniWieqfa' ),
+ 'Popularpages' => array( 'PaġniPopolari' ),
+ 'Preferences' => array( 'Preferenzi' ),
+ 'Prefixindex' => array( 'IndiċiPrefiss' ),
'Protectedpages' => array( 'PaġniProtetti' ),
'Protectedtitles' => array( 'TitliProtetti' ),
- 'Allpages' => array( 'PaġniKollha' ),
- 'Prefixindex' => array( 'IndiċiPrefiss' ),
- 'Ipblocklist' => array( 'ListaIPImblukkati' ),
- 'Unblock' => array( 'Żblokka' ),
- 'Specialpages' => array( 'PaġniSpeċjali' ),
- 'Contributions' => array( 'Kontribuzzjonijiet' ),
- 'Emailuser' => array( 'IbgħatUtent' ),
- 'Confirmemail' => array( 'KonfermaPostaElettronika' ),
- 'Whatlinkshere' => array( 'XiJwassalHawn' ),
+ 'Randompage' => array( 'PaġnaKwalunkwe' ),
+ 'Randomredirect' => array( 'RiindirizzKwalunkwe' ),
+ 'Recentchanges' => array( 'TibdilRiċenti' ),
'Recentchangeslinked' => array( 'TibdilRelatat' ),
- 'Movepage' => array( 'Mexxi', 'MexxiPaġna' ),
- 'Blockme' => array( 'Imblukkani' ),
- 'Booksources' => array( 'SorsiKotba' ),
- 'Categories' => array( 'Kategoriji' ),
- 'Export' => array( 'Esporta' ),
- 'Version' => array( 'Verżjoni' ),
- 'Allmessages' => array( 'MessaġġiKollha' ),
- 'Log' => array( 'Reġistru', 'Reġistri' ),
- 'Blockip' => array( 'BlokkaIP' ),
+ 'Revisiondelete' => array( 'ĦassarReviżjoni' ),
+ 'Search' => array( 'Fittex' ),
+ 'Shortpages' => array( 'PaġniQosra' ),
+ 'Specialpages' => array( 'PaġniSpeċjali' ),
+ 'Statistics' => array( 'Statistika' ),
+ 'Unblock' => array( 'Żblokka' ),
+ 'Uncategorizedcategories' => array( 'KategorijiMhuxKategorizzati' ),
+ 'Uncategorizedimages' => array( 'StampiMhuxKategorizzati' ),
+ 'Uncategorizedpages' => array( 'PaġniMhuxKategorizzati' ),
+ 'Uncategorizedtemplates' => array( 'MudelliMhuxKategorizzati' ),
'Undelete' => array( 'Irkupra' ),
- 'Import' => array( 'Importa' ),
- 'Lockdb' => array( 'AgħlaqDB' ),
'Unlockdb' => array( 'IftaħDB' ),
- 'Userrights' => array( 'DrittijietUtent' ),
- 'MIMEsearch' => array( 'FittexMIME' ),
- 'FileDuplicateSearch' => array( 'FittexFajlDuplikat' ),
- 'Unwatchedpages' => array( 'PaġniMhuxOsservati' ),
- 'Listredirects' => array( 'ListaRindirizzi', 'ListaRiindirizzi' ),
- 'Revisiondelete' => array( 'ĦassarReviżjoni' ),
+ 'Unusedcategories' => array( 'KategorijiMhuxUżati' ),
+ 'Unusedimages' => array( 'StampiMhuxUżati', 'FajlsMhuxUżati' ),
'Unusedtemplates' => array( 'MudelliMhuxUżati' ),
- 'Randomredirect' => array( 'RiindirizzKwalunkwe' ),
- 'Mypage' => array( 'PaġnaTiegħi' ),
- 'Mytalk' => array( 'DiskussjonijietTiegħi' ),
- 'Mycontributions' => array( 'KontribuzzjonijietTiegħi' ),
- 'Listadmins' => array( 'ListaAmmin' ),
- 'Listbots' => array( 'ListaBots' ),
- 'Popularpages' => array( 'PaġniPopolari' ),
- 'Search' => array( 'Fittex' ),
- 'Resetpass' => array( 'BiddelPassword' ),
+ 'Unwatchedpages' => array( 'PaġniMhuxOsservati' ),
+ 'Upload' => array( 'Tella\'' ),
+ 'Userlogin' => array( 'UtentDħul' ),
+ 'Userlogout' => array( 'UtentĦruġ' ),
+ 'Userrights' => array( 'DrittijietUtent' ),
+ 'Version' => array( 'Verżjoni' ),
+ 'Wantedcategories' => array( 'KategorijiRikjesti' ),
+ 'Wantedfiles' => array( 'FajlsRikjesti' ),
+ 'Wantedpages' => array( 'PaġniRikjesti', 'ĦoloqMiksura' ),
+ 'Wantedtemplates' => array( 'MudelliRikjesti' ),
+ 'Watchlist' => array( 'ListaOsservazzjoni' ),
+ 'Whatlinkshere' => array( 'XiJwassalHawn' ),
'Withoutinterwiki' => array( 'PaġniMingħajrInterwiki', 'BlaInterwiki' ),
- 'MergeHistory' => array( 'WaħħadKronoloġija' ),
- 'Filepath' => array( 'PostFajl' ),
- 'Invalidateemail' => array( 'PostaElettronikaInvalida' ),
- 'Blankpage' => array( 'PaġnaVojta' ),
- 'LinkSearch' => array( 'FittexĦolqa' ),
- 'DeletedContributions' => array( 'KontribuzzjonijietImħassra' ),
- 'Activeusers' => array( 'UtentiAttivi' ),
);
$magicWords = array(
@@ -300,8 +300,8 @@ $messages = array(
'tog-shownumberswatching' => "Uri n-numru ta' utenti li qegħdin isegwu din il-paġna",
'tog-oldsig' => 'Firma attwali:',
'tog-fancysig' => 'Interpreta l-firma bħala test tal-wiki (mingħajr ħolqa awtomatika)',
-'tog-externaleditor' => 'Uża awtomatikament editur estern (għal utenti esperti biss, hemm bżonn preferenzi speċjali fuq il-komputer tiegħek. [http://www.mediawiki.org/wiki/Manual:External_editors Iktar informazzjoni.])',
-'tog-externaldiff' => 'Uża awtomatikament diff estern (għal utenti esperti biss, hemm bżonn preferenzi speċjali fuq il-komputer tiegħek. [http://www.mediawiki.org/wiki/Manual:External_editors Iktar informazzjoni.])',
+'tog-externaleditor' => 'Uża awtomatikament editur estern (għal utenti esperti biss, hemm bżonn preferenzi speċjali fuq il-komputer tiegħek. [//www.mediawiki.org/wiki/Manual:External_editors Iktar informazzjoni.])',
+'tog-externaldiff' => 'Uża awtomatikament diff estern (għal utenti esperti biss, hemm bżonn preferenzi speċjali fuq il-komputer tiegħek. [//www.mediawiki.org/wiki/Manual:External_editors Iktar informazzjoni.])',
'tog-showjumplinks' => 'Attiva l-ħoloq aċċessibbli "aqbeż għal"',
'tog-uselivepreview' => "Attiva l-funzjoni ''Live preview'' (bżonn tal-JavaScript; sperimentali)",
'tog-forceeditsummary' => 'Nebbaħni meta ndaħħal taqsira tal-modifika vojta',
@@ -397,15 +397,9 @@ $messages = array(
'listingcontinuesabbrev' => 'kompli',
'index-category' => 'Paġni indiċjati',
'noindex-category' => 'Paġni mhux indiċizzati',
+'broken-file-category' => "Paġni b'ħoloq lejn fajls miksura",
-'linkprefix' => '/^(.*?)([a-żA-Ż\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''MediaWiki ġie installat b'suċċess.'''",
-'mainpagedocfooter' => "Ikkonsulta l-[http://meta.wikimedia.org/wiki/Help:Contents Gwida għall-utenti] sabiex tikseb iktar informazzjoni dwar kif tuża' s-softwer tal-wiki.
-
-== Biex tibda ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista ta' preferenzi għall-konfigurazzjoni]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Mistoqsijiet rikorrenti fuq il-MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Il-lista tal-posta tħabbar 'l MediaWiki]",
+'linkprefix' => '/^(.*?)([a-żA-Ż\\x80-\\xff]+)$/sD',
'about' => 'Dwar',
'article' => 'artiklu',
@@ -457,10 +451,10 @@ $messages = array(
'history' => 'Verżjoni preċedenti',
'history_short' => 'Kronoloġija',
'updatedmarker' => 'ġiet modifikata mill-aħħar żjara',
-'info_short' => 'Informazzjoni',
'printableversion' => 'Verżjoni għall-ipprintjar',
'permalink' => 'Ħolqa permanenti',
'print' => 'Ipprintja',
+'view' => 'Dehra',
'edit' => 'Editja',
'create' => 'Oħloq',
'editthispage' => 'Immodifika din il-paġna',
@@ -468,6 +462,7 @@ $messages = array(
'delete' => 'Ħassar',
'deletethispage' => 'Ħassar din il-paġna',
'undelete_short' => 'Irkupra {{PLURAL:$1|modifika waħda|$1 modifiki}}',
+'viewdeleted_short' => 'Ara {{PLURAL:$1|modifika mħassra|$1 modifiki mħassra}}',
'protect' => 'Ipproteġi',
'protect_change' => 'biddel',
'protectthispage' => 'Ipproteġi din il-paġna',
@@ -550,6 +545,8 @@ $1",
'toc' => 'Kontenut',
'showtoc' => 'uri',
'hidetoc' => 'aħbi',
+'collapsible-collapse' => 'Aħbi',
+'collapsible-expand' => 'Espandi',
'thisisdeleted' => 'Uri jew Ä¡ib lura $1?',
'viewdeleted' => 'Ara $1?',
'restorelink' => '{{PLURAL:$1|waħda mill-modifiki mħassra|$1 modifiki mħassra}}',
@@ -561,6 +558,8 @@ $1",
'page-rss-feed' => 'Feed RSS għal "$1"',
'page-atom-feed' => 'Feed Atom għal "$1"',
'red-link-title' => '$1 (il-paġna ma teżistix)',
+'sort-descending' => 'Ordni dixxendenti',
+'sort-ascending' => 'Ordni axxendenti',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Paġna',
@@ -643,12 +642,13 @@ Jekk jogħġbok erġa' prova fi ftit minuti oħra.",
'protectedpagetext' => "Din il-paġna ġiet protetta sabiex twaqqaf kull tip ta' modifika.",
'viewsourcetext' => "Tista' tara u tikkopja s-sors ta' din il-paġna:",
'protectedinterface' => 'Din il-paġna għanda element li tagħmel parti mill-interfaċċa tal-utent tas-software, u għaldaqstant ġiet protetta sabiex ma jkunx hemm abbuż.',
-'editinginterface' => "'''Avviż:''' Qiegħed tagħmel modifiki lejn paġna li qegħdha tintuża biex tipprovdi interfaċċa għall-messaġġi tas-software. Kull modifika f'din il-paġna se taffetwa l-apparenza tal-faċċata tal-utenti kollha. Għat-traduzzjonijiet, ikkunsidra l-possibilità li tuża' [http://translatewiki.net/wiki/Main_Page?setlang=mt translatewiki.net], il-proġett MediaWiki għal-lokalizzazzjoni.",
+'editinginterface' => "'''Avviż:''' Qiegħed tagħmel modifiki lejn paġna li qegħdha tintuża biex tipprovdi interfaċċa għall-messaġġi tas-software. Kull modifika f'din il-paġna se taffetwa l-apparenza tal-faċċata tal-utenti kollha. Għat-traduzzjonijiet, ikkunsidra l-possibilità li tuża' [//translatewiki.net/wiki/Main_Page?setlang=mt translatewiki.net], il-proġett MediaWiki għal-lokalizzazzjoni.",
'sqlhidden' => '(SQL rikjesta moħbija)',
'cascadeprotected' => 'Din il-paġna ġiet protetta mill-modifiki, minħabba li tinkludi {{PLURAL:$1|paġni, li huwa|paġni, li huma}} protetti bil-preferenza tal-"kaskata" mixewla:
$2',
'namespaceprotected' => "Inti m'għandhekx il-permess li timodifika paġni fin-''namespace'' '''$1''.",
-'customcssjsprotected' => "M'għandekx permess timmodifika din il-paġna, peress li tinkludi l-preferenzi personali ta' utent ieħor.",
+'customcssprotected' => "M'għandekx il-permessi neċessarji sabiex timmodifika din il-paġna tas-CSS, minħabba li għandha tqegħid personali ta' utent ieħor.",
+'customjsprotected' => "M'għandekx il-permessi neċessarji sabiex timmodifika din il-paġna tal-JavaScript, minħabba li għandha tqegħid personali ta' utent ieħor.",
'ns-specialprotected' => 'Il-paġni speċjali ma jistgħux jiġu mmodifikati.',
'titleprotected' => "Dan it-titlu ġie protett mill-ħolqien minn [[User:$1|$1]].
Ir-raġuni li ġiet mogħtija kienet ''$2''.",
@@ -686,6 +686,7 @@ Tinsiex tippersonalizza l-[[Special:Preferences|preferenzi]] ta' {{SITENAME}}.",
'createaccount' => 'Oħloq kont',
'gotaccount' => "Diġa għandhek kont? '''$1'''.",
'gotaccountlink' => 'Idħol',
+'userlogin-resetlink' => 'Insejt kif tidħol fil-kont tiegħek?',
'createaccountmail' => 'bil-posta elettronika',
'createaccountreason' => 'Raġuni:',
'badretype' => 'Il-passwords li daħħalt ma jaqblux.',
@@ -694,13 +695,14 @@ Tinsiex tippersonalizza l-[[Special:Preferences|preferenzi]] ta' {{SITENAME}}.",
'createaccounterror' => 'Il-kont ma jistax jinħoloq: $1',
'nocookiesnew' => "Il-Kont tal-utent għal l-aċċess ġie maħluq, però ma kienx possibli li tagħmel aċċess għal {{SITENAME}} għax il-''cookies'' huma disattivati. Erġa' prova l-aċċess bl-isem tal-utent u l-password wara li tkun attivajt il-''cookies'' tal-''browser''.",
'nocookieslogin' => "L-aċċess għal {{SITENAME}} jagħmel użu minn ''cookies'', li bħalissa huma disattivati. Jekk jogħġbok erġa' prova idħol wara li tkun attivajt il-''cookies'' fil-browser.",
+'nocookiesfornew' => "Il-kont ma ġiex maħluq, minħabba li ma stajniex nikkonfermaw is-sors. Assigura ruħek li l-cookies huma attivati, u erġa' tella' l-paġna biex terġa' tipprova.",
'noname' => "Inti ma speċifikajtx isem ta' utent validu.",
'loginsuccesstitle' => "Dħalt b'suċċess",
'loginsuccess' => "'''Irnexxielek taqbad mas-server ta' {{SITENAME}} bl-isem tal-utent \"\$1\".'''",
'nosuchuser' => 'M\'hemm l-ebda utent bl-isem ta\' "$1".<br />
L-ismijiet tal-utenti huma sensittivi fuq kif jinkitbu.<br />
Jekk jogħġbok kun żġur li ktibtu sew, jew minflok [[Special:UserLogin/signup|oħloq kont ġdid]].',
-'nosuchusershort' => 'M\'hemm l-ebda utent bl-isem "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'M\'hemm l-ebda utent bl-isem "$1".
Agħmel żġur li ktibta sew.',
'nouserspecified' => 'Trid tispeċifika isem tal-utent.',
'login-userblocked' => 'Dan l-utent huwa imblukkat. Mhuwiex possibbli li jsir il-login.',
@@ -745,13 +747,14 @@ Jekk trid tista\' ma tagħtix każ dan il-messaġġ, jekk dan il-kont ġie maħl
'usernamehasherror' => 'L-isem tal-utent ma jistax ikolu karattri hash',
'login-throttled' => "Saru ħafna tentattivi riċenti fuq il-password ta' dan il-kont.
Jekk jogħġbok stenna qabel ma terġa' tipprova.",
+'login-abort-generic' => 'Il-login ma kienx suċċess - Imħassar',
'loginlanguagelabel' => 'Lingwa: $1',
'suspicious-userlogout' => "Ir-rikjesta tiegħek li toħroġ barra mill-kont tiegħek ġiet miċħuda minħabba li jidher li din intbagħtet minn browser li ma jaħdimx jew minn proxy ta' caching.",
# E-mail sending
'php-mail-error-unknown' => 'Żball mhux magħruf fil-funzjoni mail() tal-PHP.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Biddel il-password',
'resetpass_announce' => "L-aċċess ġe effetwat permezz ta' kodiċi temporanju, li ntbagħat permezz tal-posta elettronika.
Biex tkompli l-aċċess tal-kont tiegħek huwa neċessarju li toħloq password ġdida hawnhekk:",
@@ -770,6 +773,29 @@ Biex tkompli l-aÄ‹Ä‹ess tal-kont tiegħek huwa neÄ‹essarju li toħloq password Ä
Jista' jkun li int diġà biddilt il-password, jew għamilt rikjesta għal password temporanja ġdida.",
'resetpass-temp-password' => 'Password temporanja:',
+# Special:PasswordReset
+'passwordreset' => 'Irrisettja l-password',
+'passwordreset-text' => 'Imla din il-formola sabiex tirċievi notifikazzjoni permezz tal-posta elettronika tad-dettalji tal-kont tiegħek.',
+'passwordreset-legend' => 'Irrisettja l-password',
+'passwordreset-disabled' => 'L-irrisettjar tal-password fuq din il-wiki ġie diżattivat.',
+'passwordreset-pretext' => "{{PLURAL:$1||Daħħal wieħed mill-biċċiet ta' informazzjoni t'hawn taħt}}",
+'passwordreset-username' => 'Isem tal-utent:',
+'passwordreset-email' => 'Indirizz elettroniku:',
+'passwordreset-emailtitle' => 'Dettalji tal-kont fuq {{SITENAME}}',
+'passwordreset-emailtext-ip' => "Xi ħadd (probabilment int, mill-indirizz IP $1) għamel rikjesta sabiex jingħata password ġdida sabiex jaċċessa l-{{SITENAME}} ($4). {{PLURAL:$3|L-utent assoċjat|L-utenti assoċjati}} ma' dan l-indirizz elettroniku huma:
+
+$2
+
+{{PLURAL:$3|Din il-password temporanja se tiskadi|Dawn il-passwords temporanji se jiskadu}} fi żmien {{PLURAL:$5|ġurnata|$5 jum}}. Inti għadek tidħol fil-kont tiegħek u tagħżel password ġdida issa. Jekk xi ħadd ieħor għamel din ir-rikjesta, jew jekk ftakart il-password oriġinali, u m'għadikx trid tbiddilha, inti tista' tinjora dan il-messaġġ u tibqa' tuża' l-password il-qadima.",
+'passwordreset-emailtext-user' => "L-utent $1 fuq {{SITENAME}} għamel rikjesta sabiex jingħata password ġdida sabiex jaċċessa l-{{SITENAME}} ($4). {{PLURAL:$3|L-utent assoċjat|L-utenti assoċjati}} ma' dan l-indirizz elettroniku huma:
+
+$2
+
+{{PLURAL:$3|Din il-password temporanja se tiskadi|Dawn il-passwords temporanji se jiskadu}} fi żmien {{PLURAL:$5|ġurnata|$5 jum}}. Inti għadek tidħol fil-kont tiegħek u tagħżel password ġdida issa. Jekk xi ħadd ieħor għamel din ir-rikjesta, jew jekk ftakart il-password oriġinali, u m'għadikx trid tbiddilha, inti tista' tinjora dan il-messaġġ u tibqa' tuża' l-password il-qadima.",
+'passwordreset-emailelement' => 'Isem tal-utent: $1
+Password temporanja: $2',
+'passwordreset-emailsent' => 'Intbagħtet ittra-e bħala tfakkira.',
+
# Edit page toolbar
'bold_sample' => 'Tipa ħoxna',
'bold_tip' => 'Tipa ħoxna',
@@ -781,8 +807,6 @@ Jista' jkun li int diġà biddilt il-password, jew għamilt rikjesta għal passw
'extlink_tip' => 'Link estern (ftakar il-prefiss http://)',
'headline_sample' => "Kliem ta' l-ewwel vers",
'headline_tip' => "L-ewwel vers ta' livell 2",
-'math_sample' => 'Daħħal formula hawnhekk',
-'math_tip' => 'Formula matematika (LaTeX)',
'nowiki_sample' => 'Daħħal test mhux formatjat hawnhekk',
'nowiki_tip' => 'Tagħtix każ il-formatjar tal-wiki',
'image_sample' => 'Eżempju.jpg',
@@ -869,7 +893,7 @@ Jekk int utent anonimu u tħoss li qiegħed tirċievi kummenti irrelevanti jew l
'noarticletext' => "Bħalissa m'hemm l-ebda test f'din il-paġna.
Inti tista' [[Special:Search/{{PAGENAME}}|tfittex it-titlu ta' din il-paġna]] f'paġni oħra, jew <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tfittex ir-reġistri relatati], jew [{{fullurl:{{FULLPAGENAME}}|action=edit}} timmodifika din il-paġna]</span>.",
'noarticletext-nopermission' => "Bħalissa m'hemm l-ebda test f'din il-paġna. Inti tista' [[Special:Search/{{PAGENAME}}|tfittex għal dan it-titlu tal-paġna]] f'paġni oħra, jew <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} fittex ir-reġistri relatati]</span>.",
-'userpage-userdoesnotexist' => 'Il-kont tal-utent "$1" mhux reġistrat.
+'userpage-userdoesnotexist' => 'Il-kont tal-utent "<nowiki>$1</nowiki>" mhux reġistrat.
Jekk jogħġbok, ara jekk verament tridx toħloq/timodifika din il-paġna.',
'userpage-userdoesnotexist-view' => 'Il-kont tal-utent "$1" mhuwiex reġistrat.',
'blocked-notice-logextract' => 'L-utent attwalment jinsab imblukkat.
@@ -901,6 +925,7 @@ Jekk jogħġbok, erġa' pprova. Jekk xorta tibqa' ma taħdimx, ipprova [[Special
'''Jekk dan huwa attentat leġittmu ta' modifika, jekk jogħġbok erġa' pprova. Jekk tibqa' ma taħdimx, ipprova [[Special:UserLogout|oħroġ]] u erġa' idħol.'''",
'token_suffix_mismatch' => "'''Il-modifika tiegħek ma ġietx aċċettata minħabba li klijent tiegħek tertaq l-karratri tal-ortografija fit-token tal-modifika.
Din il-modifika ma ġietx aċċettata sabiex ma jkunx hemm żballji fit-test tal-paġna. Dan xi kultant jiġri minħabba li qiegħed tuża servizz difettuż anonimu li huwa bbażat fuq il-web ta' prokura.'''",
+'edit_form_incomplete' => "'''Ċerti parti tal-formola tal-modifika ma laħqux is-server; iċċekkja jekk il-modifiki tiegħek humiex intatti u erġa' pprova.'''",
'editing' => "Modifika ta' $1",
'editingsection' => "Modifika ta' $1 (sezzjoni)",
'editingcomment' => 'Qed jiġi editjat $1 (sezzjoni ġdida)',
@@ -1243,12 +1268,13 @@ Sadanittant, tista' tipprova tfittex bil-Google.
Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu ma jkunux aġġornati.",
# Quickbar
-'qbsettings' => "''Quickbar''",
-'qbsettings-none' => 'Xejn',
-'qbsettings-fixedleft' => 'Mehmuż fix-xellug',
-'qbsettings-fixedright' => 'Mehmuż fil-lemin',
-'qbsettings-floatingleft' => "''Floating'' lejn ix-xellug",
-'qbsettings-floatingright' => "''Floating'' lejn il-lemin",
+'qbsettings' => "''Quickbar''",
+'qbsettings-none' => 'Xejn',
+'qbsettings-fixedleft' => 'Mehmuż fix-xellug',
+'qbsettings-fixedright' => 'Mehmuż fil-lemin',
+'qbsettings-floatingleft' => "''Floating'' lejn ix-xellug",
+'qbsettings-floatingright' => "''Floating'' lejn il-lemin",
+'qbsettings-directionality' => 'Fiss, skont id-direzzjoni tat-test fil-lingwa tiegħek',
# Preferences page
'preferences' => 'Preferenzi',
@@ -1259,9 +1285,10 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
'changepassword' => 'Ibdel il-password',
'prefs-skin' => 'Aspett grafiku (skin)',
'skin-preview' => 'dehra proviżorja',
-'prefs-math' => 'Formuli matematiċi',
'datedefault' => 'L-ebda preferenza',
+'prefs-beta' => 'Karatteristiċi tal-Beta',
'prefs-datetime' => 'Data u ħin',
+'prefs-labs' => 'Karatteristiċi tal-laboratorji',
'prefs-personal' => 'Profil tal-utent',
'prefs-rc' => 'Modifiki riċenti',
'prefs-watchlist' => 'Osservazzjoni speċjali',
@@ -1282,8 +1309,6 @@ Innota però li l-werreja tal-kontenut ta' {{SITENAME}} f'dawn is-siti, jistgħu
'columns' => 'Kolonni:',
'searchresultshead' => 'Fittex',
'resultsperpage' => "Numru ta' riżultati għal kull paġna:",
-'contextlines' => 'Fillieri għal kull riżultat:',
-'contextchars' => "Numru ta' karratri tal-kliem",
'stub-threshold' => 'Valur minimu għall-<a href="#" class="stub">ħoloq għall-abozzi</a>, f\'bytes:',
'stub-threshold-disabled' => 'Diżattivat',
'recentchangesdays' => "Numru ta' ġranet li għandhom jintwerew fit-tibdil riċenti:",
@@ -1296,7 +1321,7 @@ Hawnhekk hawn valur iġġenerat b'mod każwali li inti tista' tuża: $1",
'savedprefs' => 'Il-preferenzi tiegħek ġew salvati.',
'timezonelegend' => 'Żona tal-ħin:',
'localtime' => 'Ħin lokali:',
-'timezoneuseserverdefault' => 'Uża l-ħin tas-server',
+'timezoneuseserverdefault' => 'Uża l-ħin użat mill-wiki ($1)',
'timezoneuseoffset' => 'Ieħor (speċifika d-differenza)',
'timezoneoffset' => 'Differenza¹:',
'servertime' => 'Ħin tas-server:',
@@ -1343,7 +1368,8 @@ Hawnhekk hawn valur iġġenerat b'mod każwali li inti tista' tuża: $1",
'prefs-help-gender' => 'Opzjonali: użat biex jagħmel l-indikazzjoni tas-sess mis-softwer. Din l-informazzjoni tkun pubblika.',
'email' => 'Posta elettronika',
'prefs-help-realname' => 'L-isem propju mhuwiex obbligatorju; jekk tagħżel li tipprovdih, dan jintuża biss biex jagħtik attribuzzjoni għax-xogħol tiegħek.',
-'prefs-help-email' => "L-indirizz tal-posta elettronika huwa kamp opzjonali, però dan jagħti aċċess lil oħrajn sabiex jagħmlu kuntatt miegħek minn ġol-paġna tal-utent jew mill-paġna ta' diskussjoni tal-utent mingħajr ma jkollok bżonn li turi l-identità tiegħek.",
+'prefs-help-email' => 'L-indirizz tal-posta elettronika huwa kamp opzjonali, però huwa obbligatarju sabiex tissettja mill-ġdid il-password, jekk tinsa l-password.',
+'prefs-help-email-others' => "Tista' wkoll tagħżel li tħalli oħrajn jikkuntatjawk permezz tal-posta elettronika permezz ta' ħolqa fuq il-paġna tal-utent personali jew dik ta' diskussjoni. L-indirizz elettroniku ma jintweriex meta oħrajn jikkuntatjawk.",
'prefs-help-email-required' => 'Hemm bżonn l-indirizz tal-posta elettronika.',
'prefs-info' => 'Informazzjoni bażika',
'prefs-i18n' => 'Internazzjonalizzazzjoni',
@@ -1468,15 +1494,15 @@ Hawnhekk hawn valur iġġenerat b'mod każwali li inti tista' tuża: $1",
'right-userrights' => 'Modifika d-drittijiet tal-utenti kollha',
'right-userrights-interwiki' => "Modifika d-drittijiet tal-utenti ta' wiki oħrajn",
'right-siteadmin' => 'Agħlaq u iftaħ id-database',
-'right-reset-passwords' => "Jerġa' jimposta l-passwords ta' utenti oħra",
'right-override-export-depth' => "Jesporta paġni li jinkludu paġni b'ħoloq sa fond ta' 5",
'right-sendemail' => 'Jibgħat ittri-e lil utenti oħra',
# 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 mill-grupp $2 għall-grupp $3",
-'rightsnone' => '(xejn)',
+'rightslog' => 'Drittijiet tal-utenti',
+'rightslogtext' => "Dan huwa r-reġistru tal-modifiki ta' drittijiet tal-utenti.",
+'rightslogentry' => "biddel is-sħubija ta' $1 mill-grupp $2 għall-grupp $3",
+'rightslogentry-autopromote' => 'ġie awtomatikament promoss minn $2 għal $3',
+'rightsnone' => '(xejn)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'aqra din il-paġna',
@@ -1596,12 +1622,13 @@ Ara l-[[Special:NewFiles|gallerija ta' fajls ġodda]] għal ħarsa viżiva.",
'minlength1' => "L-ismijiet tal-fajls għandhom ikunu ta' l-inqas ittra waħda.",
'illegalfilename' => 'L-Isem tal-fajl "$1" għandu karattri li mhux permessi fit-titli ta\' paġna. Jekk jogħġbok agħti isem ġdid lil fajl u prova tellgħu mill-ġdid.',
'badfilename' => 'Isem il-fajl ġie mibdul għal "$1".',
+'filetype-mime-mismatch' => 'L-estensjoni tal-fajl ".$1" ma taqbilx mat-tip MIME li nstab fil-fajl ($2).',
'filetype-badmime' => "Mhux permess li fajls jiġu ''uploaded'' ta' tip MIME \"\$1\".",
'filetype-bad-ie-mime' => 'Ma tistax ittella\' dan il-fajl minħabba li Internet Explorer se jarah bħala "$1", li huwa tip ta\' fajl li mhuwiex aċċettat u potenzjalment perikoluż',
'filetype-unwanted-type' => "'''\".\$1\"''' huwa tip ta' fajl mhux rikjest.
{{PLURAL:\$3|Tip ta' fajl preferut huwa|Tipi ta' fajl preferuti huma}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' mhux tip ta' fajl permess.
-{{PLURAL:\$3|Tip ta' fajl permess huwa|Tipi ta' fajl permessi huma}} \$2.",
+'filetype-banned-type' => "'''\".\$1\"''' {{PLURAL:\$4|mhuwiex tip ta' fajl permess|mhumiex tipi ta' fajls permessi}}.
+It-{{PLURAL:\$3|tip ta' fajl permess huwa|tipi ta' fajls permessi huma}} \$2.",
'filetype-missing' => 'Il-Fajl m\'għandux estenżjoni (bħal ".jpg").',
'empty-file' => 'Il-fajl li bagħat huwa vojt.',
'file-too-large' => 'Il-fajl li bagħat huwa kbir wisq.',
@@ -1619,6 +1646,7 @@ dan il-fajl huwa $2 kbir.',
'largefileserver' => 'Il-Fajl għandu dimenżjoni akbar minn dak konsentit mill-konfigurazzjoni tas-server.',
'emptyfile' => "Il-Fajl li ġie ''uploaded'' jidher li huwa vojt. Dan jista' jkun minħabba żball fl-isem tal-fajl.
Jekk jogħġbok verifika jekk xorta waħda trid itella' dan il-fajl.",
+'windows-nonascii-filename' => "Din il-wiki ma taċċettax ismijiet tal-fajls b'karattri speċjali.",
'fileexists' => "Fajl b'dan l-isem ġa jeżisti, jekk jogħġbok verifika l-ewwel '''<tt>[[:$1]]</tt>''' jekk ma tridx tikteb fuqu.
[[$1|thumb]]",
'filepageexists' => "Il-paġna ta' deskrizzjoni għal dan il-fajl diġà ġiet maħluqa f''''<tt>[[:$1]]</tt>''', iżda l-ebda fajl b'dan l-isem ma jeżisti. It-taqsira li daħħalt mhux se tidher fuq il-paġna ta' deskrizzjoni.
@@ -1650,6 +1678,8 @@ Jekk jogħġbok mur lura u tella' dan il-fajl b'isem ġdid. [[File:$1|thumb|cent
'php-uploaddisabledtext' => "It-tlugħ tal-fajls permezz tal-PHP huwa diżattivat. Iċċekkja l-konfigurazzjoni ta' file_uploads.",
'uploadscripted' => "Dan il-fajl fih kodiċi ta' ''HTML'' u ''script'' li jista' jkun interpretat hażin mill-''web browser''.",
'uploadvirus' => "Dan il-fajl huwa infettat b'virus! Dettalji: $1",
+'uploadjava' => "Il-fajl huwa fajl ZIP li jinkludi fajl .class tal-Java.
+It-tlugħ ta' fajls tal-Java mhuwiex permess, minħabba li jistgħu jaqbżu restrizzjonijiet ta' sigurtà.",
'upload-source' => 'Sors tal-fajl',
'sourcefilename' => 'L-isem tal-fajl tal-oriġini:',
'sourceurl' => 'Sors tal-URL:',
@@ -1660,9 +1690,6 @@ Jekk jogħġbok mur lura u tella' dan il-fajl b'isem ġdid. [[File:$1|thumb|cent
'watchthisupload' => 'Segwi dan il-fajl',
'filewasdeleted' => "Fajl b'dan l-isem kien itella' diġa u wara ġie mħassar.
Inti għandek tiverifika ir-$1 qabel ma tkompli bl-''upload'' mill-ġdid.",
-'upload-wasdeleted' => "'''Twissija: Il-Fajl li qiegħed itella' kien imħassar.'''
-
-Verifika jekk jogħġbok jekk m'għandhekx tkompli itella' dan il-fajl. Ir-Reġistru ta' tħassir għal dan il-fajl huwa provdut għal konvenjenza:",
'filename-bad-prefix' => "L-Isem tal-fajl li qiegħed itella' jibda' b''''\"\$1\"''',
li huma isem mhux deskrittiv u huwa tipikament mogħti awtomatikament minn kameras diġitali. Jekk jogħġbok agħżel isem għal fajl tiegħek aktar deskrittiv.",
'filename-prefix-blacklist' => ' #<!-- ħalli din il-linja eżattament kif inhi --> <pre>
@@ -1701,6 +1728,23 @@ Jekk il-problema tkompli tippersisti, ikkuntatja lil xi [[Special:ListUsers/syso
'upload-unknown-size' => 'Dimensjoni mhux magħrufa',
'upload-http-error' => 'Qam żball HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Qam żball waqt il-ftuħ tal-fajl għall-kontrolli ZIP.',
+'zip-wrong-format' => 'Il-fajl speċifikat ma kienx fajl ZIP.',
+'zip-bad' => "Il-fajl huwa korrott jew inkella ma jistax jinqara.
+Ma jistax jiġi kkontrollat għas-sigurtà b'mod adegwat.",
+'zip-unsupported' => "Il-fajl huwa fajl ZIP li uża karatteristiċi ZIP li mhumiex sostnuti minn MediaWiki.
+Ma jistax jiġi kkontrollat għas-sigurtà b'mod adegwat.",
+
+# Special:UploadStash
+'uploadstash' => "Tella' ''stash''",
+'uploadstash-summary' => 'Din il-paġna tipprovdi aċċess għal fajls li huma mtellgħa (jew jinsabu fil-proċess tat-tlugħ) imma li għadhom mhumiex ippubblikati fuq il-wiki. Dawn il-fajls huma viżibbli biss għall-utent li tellagħhom.',
+'uploadstash-clear' => "Ħassar il-fajls fl-i''stash''.",
+'uploadstash-nofiles' => "M'għandekx fajls fl-i''stash''.",
+'uploadstash-badtoken' => "It-twettiq ta' dik l-azzjoni ma kienx suċċess, probabilment minħabba li l-kredenzjali tiegħek tal-immodifikar skadew. Erġa' pprova.",
+'uploadstash-errclear' => 'It-tħassir tal-fajls ma rnexxiex.',
+'uploadstash-refresh' => "Erġa' ġedded il-lista tal-fajls",
+
# img_auth script messages
'img-auth-accessdenied' => 'Aċċess miċħud',
'img-auth-nopathinfo' => "PATH_INFO nieqes.
@@ -1783,7 +1827,7 @@ Il-lista segwenti turi {{PLURAL:$1|l-ewwel paġna li tipponta|l-ewwel $1 paġni
[[Special:WhatLinksHere/$2|Lista sħiħa]] hija disponibbli.',
'nolinkstoimage' => "M'hemmx paġni li huma relatati ma' dan il-fajl.",
'morelinkstoimage' => 'Uri [[Special:WhatLinksHere/$1|aktar links]] għal dan il-fajl.',
-'redirectstofile' => '{{PLURAL:$1|Il-fajl segwenti huwa rindirizzat|Il-$1 fajls segwenti huma rindirizzati}} għal dan il-fajl.',
+'linkstoimage-redirect' => '$1 (rindirizz tal-fajl) $2',
'duplicatesoffile' => "{{PLURAL:$1|Il-fajl segwenti huwa duplikat|Il-$1 fajls segwenti huma duplikati}} ta' dan il-fajl ([[Special:FileDuplicateSearch/$2|aktar dettalji]]):",
'sharedupload' => "Dan il-fajl ġej minn $1 u jista' jiġi wżat minn proġetti oħra.",
'sharedupload-desc-there' => "Dan il-fajl huwa minn $1 u jista' jiġi wżat minn proġetti oħrajn.
@@ -1877,11 +1921,12 @@ Daħħal: tip/sottotip, eż. <tt>image/jpeg</tt>.",
'disambiguations-text' => "Il-Paġni li jinsabu f'din lista huma parti minn '''paġna ta' diżambigwazzjoni''' b'hekk għandhom jiġu relatati mas-suġġett preċiż minflok. <br />
Paġna tiġi stimata paġna ta' diżambigwazzjoni dawk kollha li jagħmlu użu mit-template elenkat f'[[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Riindirizzi doppji',
-'doubleredirectstext' => 'Din il-paġna telenka dawk il-paġni li jindirizzaw lejn paġna oħra ta\' riindirizzament.
+'doubleredirects' => 'Riindirizzi doppji',
+'doubleredirectstext' => 'Din il-paġna telenka dawk il-paġni li jindirizzaw lejn paġna oħra ta\' riindirizzament.
Kull filliera għandha ħolqa għall-ewwel u t-tieni riindirizz, kif ukoll fejn tirrindirizza t-tieni paġna, is-soltu magħrufa bħalha l-paġna "reali" fejn se twassal, fejn suppost l-ewwel riindirizz għandu jipponta.',
-'double-redirect-fixed-move' => '[[$1]] ġie mmexxi awtomatikament, issa hu rindirizz għal [[$2]]',
-'double-redirect-fixer' => "Tiswija ta' rindirizz",
+'double-redirect-fixed-move' => '[[$1]] ġie mmexxi awtomatikament, issa hu rindirizz għal [[$2]]',
+'double-redirect-fixed-maintenance' => "Tiswija ta' rindirizz doppju minn [[$1]] għal [[$2]].",
+'double-redirect-fixer' => "Tiswija ta' rindirizz",
'brokenredirects' => 'Riindirizzi ħżiena',
'brokenredirectstext' => 'Ir-riindirizzi segwenti għandhom ħoloq għal paġni ineżistenti:',
@@ -1958,6 +2003,7 @@ Kun af li siti elettroniċi oħra jistgħu jorbtu b'ħolqa diretta lejn il-fajl,
'pager-newer-n' => '{{PLURAL:$1|l-aktar riċenti|$1 l-aktar riċenti}}',
'pager-older-n' => '{{PLURAL:$1|l-inqas riċenti|$1 l-inqas riċenti}}',
'suppress' => 'Oversight',
+'querypage-disabled' => "Din il-paġna speċjali hija diżattivata għal raġunijiet ta' prestazzjoni.",
# Book sources
'booksources' => 'Sorsi tal-kotba',
@@ -2073,6 +2119,10 @@ Jista' jkun hemm [[{{MediaWiki:Listgrouprights-helppage}}|aktar informazzjoni]]
'noemailtext' => 'Dan l-utent ma daħħalx indirizz tal-posta elettronika valida.',
'nowikiemailtitle' => 'L-ebda posta elettronika mhi permessa',
'nowikiemailtext' => 'Dan l-utent iddeċieda li ma jirċivix posta elettronika minn utenti oħrajn.',
+'emailnotarget' => 'Isem tal-utent tar-riċevitur ma jeżistix jew mhuwiex validu.',
+'emailtarget' => 'Daħħal l-isem tal-utent tar-riċevitur',
+'emailusername' => 'Isem tal-utent:',
+'emailusernamesubmit' => 'Ibgħat',
'email-legend' => 'Ibgħat posta elettronika lil utent ieħor fuq {{SITENAME}}',
'emailfrom' => 'Minn:',
'emailto' => 'Lil:',
@@ -2097,12 +2147,12 @@ Jista' jkun hemm [[{{MediaWiki:Listgrouprights-helppage}}|aktar informazzjoni]]
'watchlistanontext' => "Sabiex tara u timmodifika l-lista ta' osservazzjoni tiegħek, hemm bżonn li $1.",
'watchnologin' => 'Għadek ma dħaltx ġewwa',
'watchnologintext' => "Biex tagħmel modifika fil-lista t'osservazzjoni speċjali huwa neċessarju li l-ewwel [[Special:UserLogin|tidħol]] fil-kont tiegħek.",
-'addedwatch' => "Il-paġna ġiet miżjuda mal-lista ta' osservazzjoni",
+'addwatch' => "Żid mal-lista ta' osservazzjonijiet",
'addedwatchtext' => "Il-paġna \"[[:\$1]]\" ġiet miżjuda mal-[[Special:Watchlist|lista ta' osservazzjoni]] tiegħek.
Minn issa 'l quddiem, il-modifiki f'din il-paġna u fil-paġna ta' diskussjoni tagħha jiġu rreġistrati hawnhekk, u l-paġna tibda tidher b'tipa '''ħoxna''' fil-[[Special:RecentChanges|lista ta' modifiki riċenti]] sabiex tinsab iktar faċilment.
Jekk f'xi ħin tkun tixtieq tneħħi l-paġna mil-lista ta' osservazzjoni tiegħek, kemm tagħfas fuq \"tibqax issegwi\" li tinsab fl-iżbarra ta' fuq.",
-'removedwatch' => "Il-paġna tneħħiet mil-lista ta' osservazzjoni",
+'removewatch' => "Neħħi mil-lista ta' osservazzjonijiet",
'removedwatchtext' => 'Il-paġna "[[:$1]]" tneħħiet mil-[[Special:Watchlist|lista ta\' osservazzjoni tiegħek]].',
'watch' => 'Segwi',
'watchthispage' => 'Segwi din il-paġna',
@@ -2123,8 +2173,9 @@ Jekk f'xi ħin tkun tixtieq tneħħi l-paġna mil-lista ta' osservazzjoni tiegħ
'watchlist-options' => "Opzjonijiet tal-lista ta' osservazzjoni",
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Imsegwi...',
-'unwatching' => 'Mhux osservat aktar...',
+'watching' => 'Imsegwi...',
+'unwatching' => 'Mhux osservat aktar...',
+'watcherrortext' => 'Ġara żball waqt it-tibdil tal-lista ta\' osservazzjonijiet għal "$1".',
'enotif_mailer' => "Sistema ta' notifikazzjoni bl-użu tal-posta elettronika fuq {{SITENAME}}",
'enotif_reset' => 'Immarka l-paġni kollha bħala diġà viżitati',
@@ -2144,22 +2195,25 @@ $NEWPAGE
Taqsira tal-editur: $PAGESUMMARY $PAGEMINOREDIT
-Ikkuntatja \'l-editur:
+Ikkuntatja lill-editur:
ittra-e: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Mhux se jiġu mibgħuta notifiki oħra f\'każ ta\' aktar modifiki sakemm ma żżirx din il-paġna. Huwa possibbli li terġa\' tpoġġi l-avviż mill-ġdid għal paġni kollha fil-lista ta\' osservazzjoni speċjali.
+Mhux se jiġu mibgħuta notifiki oħra f\'każ ta\' aktar modifiki sakemm ma żżurx din il-paġna. Huwa possibbli li terġa\' tpoġġi l-avviż mill-ġdid għal paġni kollha fil-lista ta\' osservazzjonijiet.
- Is-sistema ta\' notifika ta\' {{SITENAME}}, fis-servizz tiegħek
+Is-sistema ta\' notifika ta\' {{SITENAME}}, fis-servizz tiegħek
--
-Biex tbiddel l-impostazzjonijiet tal-lista ta\' osservazzjoni tiegħek, żur
-{{fullurl:{{#special:Watchlist}}/edit}}
+Biex tbiddel it-tqegħid tan-notifiki permezz tal-posta elettronika, żur
+{{fullurl:{{#special:Preferences}}}}
-Biex tħassar il-paġna minn fuq il-lista ta\' osservazzjoni tiegħek, żur
+Biex tbiddel t-tqegħid tal-lista ta\' osservazzjonijiet, żur
+{{fullurl:{{#special:Preferences}}}}
+
+Biex tħassar il-paġna minn fuq il-lista ta\' osservazzjonijiet, żur
$UNWATCHURL
-Biex tagħti l-kumment tiegħek u biex tikseb aktar għajnuna:
+Biex tgħaddi l-kummenti tiegħek u biex tikseb aktar għajnuna:
{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
@@ -2175,7 +2229,7 @@ Biex tagħti l-kumment tiegħek u biex tikseb aktar għajnuna:
'confirmdeletetext' => "Int se tħassar għal kollox mid-database paġna jew stampa, flimkien mal-kronoloġija kollha tagħha. Jekk jogħġbok, ikkonferma li hija x-xewqa tiegħek li tkompli bit-tħassir ta' din il-paġna, u tifhem il-konsegwenzi ta' li qiegħed tagħmel, u li qiegħed tagħmilhom skont il- [[{{MediaWiki:Policy-url}}|politika]] stabbilita.",
'actioncomplete' => 'Azzjoni mwettqa',
'actionfailed' => 'Azzjoni fallita',
-'deletedtext' => 'Il-paġna "<nowiki>$1</nowiki>" ġiet imħassra.
+'deletedtext' => 'Il-paġna "$1" ġiet imħassra.
Ikkonsulta r-$2 biex tara paġni li ġew imħassra riċentament.',
'deletedarticle' => 'ħassar "[[$1]]"',
'suppressedarticle' => 'Neħħi "[[$1]]"',
@@ -2231,7 +2285,7 @@ Ara l-[[Special:ProtectedPages|lista ta' paġni protetti]] għal-lista ta' paġn
'protect_expiry_invalid' => 'Skadenza mhux valida.',
'protect_expiry_old' => 'Skadenza ġa inġarbet.',
'protect-unchain-permissions' => "Żblokka opzjonijiet oħra ta' protezzjoni",
-'protect-text' => "Int tista' tara jew tagħmel modifiki fil-livell ta' protezzjoni hawnhekk għal paġna '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Int tista' tara jew tagħmel modifiki fil-livell ta' protezzjoni hawnhekk għal paġna '''$1'''.",
'protect-locked-blocked' => "Ma tistax tbiddel il-livell ta' protezzjoni waqt li tkun imblukkat. Il-preferenzi kurrenti għall-paġna '''$1''' huma:",
'protect-locked-dblock' => "Livelli ta' protezzjoni ma jistgħux jiġu modifikata minħabba li database attiv huwa magħluq. Il-Preferenzi kurrenti ta' din il-paġna huma '''$1''':",
'protect-locked-access' => "M'għandhekx il-permessi neċessarji biex tagħmel modifiki fil-livelli ta' protezzjoni ta' din il-paġna.
@@ -2282,8 +2336,8 @@ Il-Preferenzi kurrenti ta' din il-paġni huma '''$1''':",
'viewdeletedpage' => 'Ara l-paġni mħassra',
'undeletepagetext' => "Il-{{PLURAL:$1|paġna segwenti ġiet mħassra, però xorta għadha fl-arkivju u għalhekk tista' tiġi rkuprata|paġni segwenti ġew imħassra, però xorta għadhom jistgħu jiġu rkuprati}}. L-arkivju jista' jiġi mnaddaf perjodikament.",
'undelete-fieldset-title' => 'Irkupra reviżjonijiet',
-'undeleteextrahelp' => "Biex tirkupra l-paġna sħiħa, ħalli l-kaxxi kollha vojta u agħfas fuq '''''Irkupra'''''.
-Biex tirkupra partijiet speċifiċi, agħżel il-kaxxi korrispondenti mar-reviżjonijiet li tixtieq tirkupra u agħfas '''''Irkupra'''''. Jekk tagħfas '''''Irrisettja''''', kemm il-kaxxi kif ukoll l-ispazju għall-kummenti jiżvojtjaw.",
+'undeleteextrahelp' => "Biex tirkupra l-paġna sħiħa, ħalli l-kaxxi kollha vojta u agħfas fuq '''''{{int:undeletebtn}}'''''.
+Biex tirkupra partijiet speċifiċi, agħżel il-kaxxi korrispondenti mar-reviżjonijiet li tixtieq tirkupra u agħfas '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '{{PLURAL:$1|reviżjoni|$1 reviżjonijiet}} fl-arkivju',
'undeletehistory' => 'Jekk tirkupra l-paġna, ir-reviżjonijiet kollha jiġu mdaħħla mill-ġdid fil-kronoloġija relattiva. Jekk wara t-tħassir paġni ġodda jiġi maħluqa bl-istess titlu, r-reviżjonijiet irkuprati jiġu jidhru fil-kronoloġija preċedenti. Kun af wkoll li limitazzjonijiet fuq reviżjonijiet tal-fajl huwa mitlufa waqt li jiġi rkuprati.',
'undeleterevdel' => "Jekk il-parti ta' fuq tal-paġna jew ir-reviżjoni tal-fajl huma parzjalment imħassra, l-proċess ta' irkuprar ma ssirx. F'dawn il-każi, int trid ma taħbiex jew ma tagħżilx ir-reviżjoni mħassra l-aktar riċenti.",
@@ -2327,9 +2381,12 @@ $1',
'undelete-show-file-submit' => 'Iva',
# Namespace form on various pages
-'namespace' => 'Spazju tal-isem:',
-'invert' => 'Inverti l-għażla',
-'blanknamespace' => '(Prinċipali)',
+'namespace' => 'Spazju tal-isem:',
+'invert' => 'Inverti l-għażla',
+'tooltip-invert' => 'Agħżel din il-kaxxa biex taħbi l-modifiki lejn paġni li jinsabu fl-ispazji tal-isem magħżula (u l-ispazju tal-isem assoċjat jekk hu magħżul)',
+'namespace_association' => 'Spazju tal-isem assoċjata',
+'tooltip-namespace_association' => "Agħżel din il-kaxxa sabiex tinkludi l-paġna ta' diskussjoni jew l-oġġett tal-ispazju tal-isem assoċjat mal-ispazju tal-isem magħżul",
+'blanknamespace' => '(Prinċipali)',
# Contributions
'contributions' => 'Kontribuzzjonijiet tal-utent',
@@ -2379,13 +2436,15 @@ L-aħħar daħla fir-reġistru tal-imblokki tinsab hawn taħt bħala referenza:'
'whatlinkshere-filters' => 'Filtri',
# Block/unblock
+'autoblockid' => 'Awtoblokk #$1',
+'block' => 'Imblokka utent',
+'unblock' => 'Żblokka utent',
'blockip' => 'Imblokka lil utent',
'blockip-title' => "Imblokka 'l-utent",
'blockip-legend' => "Imblokka 'l-utent",
'blockiptext' => "Uża l-formola t'hawn taħt sabiex biex tibblokkja l-aċċess tal-kitba lil IP speċifiku jew utent.
Il-blokk irid ikun użat biss sabiex jitnaqqas iċ-ċans ta' vandaliżmu, u għandu josservja b'mod strett il-[[{{MediaWiki:Policy-url}}|politika ta' {{SITENAME}}]].
Indika r-raġuni speċifika għalfejn tixtieq tipproċedi bil-blokk (per eżempju, billi turi l-paġni partikolari li ġew ivvandalizzati).",
-'ipaddress' => 'Indirizz tal-IP:',
'ipadressorusername' => 'Indirizz tal-IP jew isem tal-utent:',
'ipbexpiry' => 'Skadenza tal-imblokk:',
'ipbreason' => 'Raġuni:',
@@ -2398,7 +2457,7 @@ Indika r-raġuni speċifika għalfejn tixtieq tipproċedi bil-blokk (per eżempj
** Komportament intimidanti jew molestiku
** Abbuż minn aktar minn kont wieħed
** isem ta' utent mhux aċċettabli",
-'ipbanononly' => 'Imblokka biss l-utenti anonimi',
+'ipb-hardblock' => 'Ipprevjeni utenti reġistri li jikkontribwixxu minn dan l-indirizz IP',
'ipbcreateaccount' => "Impedixxi ħolqien ta' kontijiet oħrajn",
'ipbemailban' => 'Impedixxi utenti milli jkunu jistgħu jibgħatu posta elettronika',
'ipbenableautoblock' => 'Awtomatikament blokka l-aħħar indirizz tal-IP użat minn dan l-utent, u IP suċċessivi li jipprovaw jagħmlu modifiki',
@@ -2409,12 +2468,15 @@ Indika r-raġuni speċifika għalfejn tixtieq tipproċedi bil-blokk (per eżempj
'ipbotherreason' => 'Raġunijiet oħra/addizzjonali:',
'ipbhidename' => 'Aħbi l-isem tal-utent mill-modifiki u mill-elenki.',
'ipbwatchuser' => "Osserva l-paġni u d-diskussjonijiet ta' dan l-utent",
-'ipballowusertalk' => "Ħalli lil dan l-utent jimmodifika l-paġna ta' diskussjoni personali waqt il-blokk",
+'ipb-disableusertalk' => "Ipprevjeni dan l-utent milli jimmodifika l-paġna ta' diskussjoni personali waqt li hu mblukkat.",
'ipb-change-block' => "Erġa' mblokka lil dan l-utent b'dawn l-għażliet",
+'ipb-confirm' => 'Ikkonferma l-blokk',
'badipaddress' => "Indirizz ta' IP invalidu",
'blockipsuccesssub' => 'Il-blokk irnexxa',
'blockipsuccesstext' => 'L-utent [[Special:Contributions/$1|$1]] Ä¡ie imblukkat.<br />
Ara l-[[Special:IPBlockList|lista tal-IP imblukkati]] biex tara l-blokki attivi.',
+'ipb-blockingself' => 'Inti se timblokka lilek innifsek! Inti ċert li trid tagħmel dan?',
+'ipb-confirmhideuser' => 'Inti se timblokka utent bl-opzjoni "Aħbi l-utent" magħżula. B\'dan il-mod jiġi evitat li jidher l-isem tal-utent fl-elenki u fid-daħliet rar-reġistri kollha. Inti ċert li trid tagħmel dan?',
'ipb-edit-dropdown' => 'Immodifika r-raġunijiet tal-imblukkar',
'ipb-unblock-addr' => 'Żblokkja $1',
'ipb-unblock' => 'Żblokka isem tal-utent jew indirizz IP',
@@ -2424,17 +2486,23 @@ Ara l-[[Special:IPBlockList|lista tal-IP imblukkati]] biex tara l-blokki attivi.
'unblockiptext' => "Uża l-formola t'hawn taħt sabiex tirkupra l-aċċess tal-ktiba 'l utent jew indirizz tal-IP imblukkat.",
'ipusubmit' => 'Żblokkja dan l-indirizz',
'unblocked' => 'L-utent [[User:$1|$1]] ġie żblokkjat',
+'unblocked-range' => '$1 ġie żblukkat',
'unblocked-id' => 'Il-blokk $1 tneħħa',
+'blocklist' => 'Utenti mblukkati',
'ipblocklist' => 'Utenti mblukkati',
'ipblocklist-legend' => 'Fittex utent ibblokkjat',
-'ipblocklist-username' => 'Isem tal-utent u indirizz IP:',
-'ipblocklist-sh-userblocks' => '$1 l-blokki tal-utenti reġistrati',
-'ipblocklist-sh-tempblocks' => '$1 l-blokki temporanji',
-'ipblocklist-sh-addressblocks' => '$1 l-blokki waħdanija tal-IP',
+'blocklist-userblocks' => 'Aħbi blokki tal-kontijiet',
+'blocklist-tempblocks' => 'Aħbi blokki temporanji',
+'blocklist-addressblocks' => 'Aħbi blokki waħdanija tal-IP',
+'blocklist-timestamp' => 'Data u ħin',
+'blocklist-target' => 'Destinazzjoni',
+'blocklist-expiry' => 'Skadenza',
+'blocklist-by' => 'Amministratur li għamel il-blokk',
+'blocklist-params' => 'Parametri tal-blokk',
+'blocklist-reason' => 'Raġuni',
'ipblocklist-submit' => 'Fittex',
'ipblocklist-localblock' => 'Blokki lokali',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Blokk ieħor|Blokki oħrajn}}',
-'blocklistline' => '$1, $2 imblokka lil $3 (sa $4)',
'infiniteblock' => 'infinit',
'expiringblock' => 'jiskadi sa $1 fil-$2',
'anononlyblock' => 'anonimu biss',
@@ -2454,7 +2522,7 @@ Ara l-[[Special:IPBlockList|lista tal-IP imblukkati]] biex tara l-blokki attivi.
'blocklog-showsuppresslog' => 'Dan l-utent ġie imblukkat u moħbi qabel. Ir-reġistru tal-blokki jinsab hawn taħt bħala referenza:',
'blocklogentry' => 'imblokka lil "[[$1]]" għal perjodu ta\' $2 $3',
'reblock-logentry' => "biddel l-impostazzjonijiet tal-blokk għal [[$1]] bi skadenza ta' $2 $3",
-'blocklogtext' => "Dan huwa log tal-azzjonijiet tal-blokkar u sblokkar ta' utent. Indirizzi tal-IP blokkati awtomatikament m'humiex fil-lista. Ara l-[[Special:IPBlockList|lista tal-IP blokkati]] għal lista tal-blokki attivi bħalissa.",
+'blocklogtext' => "Dan huwa log tal-azzjonijiet tal-blokkar u sblokkar ta' utent. Indirizzi tal-IP blokkati awtomatikament m'humiex fil-lista. Ara l-[[Special:BlockList|lista tal-IP blokkati]] għal lista tal-blokki attivi bħalissa.",
'unblocklogentry' => 'żblokka lil $1',
'block-log-flags-anononly' => 'utenti anonimi biss',
'block-log-flags-nocreate' => 'ħolqien tal-kont imblukkat',
@@ -2468,9 +2536,9 @@ Ara l-[[Special:IPBlockList|lista tal-IP imblukkati]] biex tara l-blokki attivi.
'ipb_expiry_temp' => "Blokkijiet ta' ismijiet ta' l-utent moħbija jridu jkunu permanenti.",
'ipb_hide_invalid' => "Ma jistax jitneħħa l-kont; jista' jkun li għandu ħafna modifiki.",
'ipb_already_blocked' => 'L-utent "$1" diġà imblukkat',
-'ipb-needreblock' => '== Diġà imblukkat ==
-L-utent $1 hu diġà imblukkat. Trid tbiddel l-impostazzjonijet?',
+'ipb-needreblock' => 'L-utent $1 hu diġà imblukkat. Trid tbiddel l-impostazzjonijet?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Blokk ieħor|Blokki oħra}}',
+'unblock-hideuser' => 'Ma tistax tiżblokka lil dan l-utent, minħabba li l-isem tal-utent tagħhom ġie moħbi.',
'ipb_cant_unblock' => 'Problema: Impossibli ssib il-blokk bl-ID $1. L-Imblokk setgħa jkun ġa sblokkat.',
'ipb_blocked_as_range' => "Problema: L-Indirizz tal-IP $1 ma jistax jiġi blokkat waħdu u ma jistax jiġi sblokkat. L-Imblokk huwa attiv però f'livell ta' interval $2, li jista' jkun sblokkat.",
'ip_range_invalid' => "Interval ta' indirizzi ta' IP mhux validi.",
@@ -2506,6 +2574,7 @@ Ftakar li [[Special:UnlockDB|tiftaħ]] wara l-manteniment ikun lest.',
'unlockdbsuccesstext' => 'Id-database infetaħ.',
'lockfilenotwritable' => "Impossibli tikteb fuq il-fajl ''agħlaq' tad-database. L-Aċċess tad-database, l-web server irrid ikun jista' jikteb.",
'databasenotlocked' => 'Id-Database mhux magħluq.',
+'lockedbyandtime' => '(minn $1 nhar il-$2 fil-$3)',
# Move page
'move-page' => 'Mexxi $1',
@@ -2782,9 +2851,7 @@ Kull azzjonijiet ta' importazzjoni tal-transwiki jiġu reġistrati fil-[[Special
'modern.js' => "/* Kull ''JavaScript'' hawnhekk jiġi mniżżel għal dawk l-utenti li qegħdin jagħmlu użu mill-iskin ''Modern''*/",
# Metadata
-'nodublincore' => "''Dublin Core RDF metadata'' ġie mneħħi għal dan is-server.",
-'nocreativecommons' => "''Creative Commons RDF metadata'' ġie mneħħi għal dan is-server. .",
-'notacceptable' => "Is-Server tal-wiki m'għandux format li l-klijent tiegħek ikun jista' jaqra.",
+'notacceptable' => "Is-Server tal-wiki m'għandux format li l-klijent tiegħek ikun jista' jaqra.",
# Attribution
'anonymous' => "{{PLURAL:$1|Utent anonimu|Utenti anonimi}} ta' {{SITENAME}}",
@@ -2807,12 +2874,17 @@ Kull azzjonijiet ta' importazzjoni tal-transwiki jiġu reġistrati fil-[[Special
'spam_blanking' => 'Paġna svojtjata, kull verżjoni kellu link għal $1',
# Info page
-'infosubtitle' => 'Informazzjoni għal paġna',
-'numedits' => "Numru ta' modifiki (paġna): $1",
-'numtalkedits' => "Numru ta' modifiki (paġna tad-diskussjoni): $1",
-'numwatchers' => "Numru ta' osservaturi: $1",
-'numauthors' => "Numru ta' awturi distinti (paġna): $1",
-'numtalkauthors' => "Numru ta' awturi distinti (paġna tad-diskussjoni): $1",
+'pageinfo-title' => 'Informazzjoni għal "$1"',
+'pageinfo-header-edits' => 'Modifiki',
+'pageinfo-header-watchlist' => "Lista ta' osservazzjonijiet",
+'pageinfo-header-views' => 'Viżti',
+'pageinfo-subjectpage' => 'Paġna',
+'pageinfo-talkpage' => "Paġna ta' diskussjoni",
+'pageinfo-watchers' => "Numru ta' osservaturi",
+'pageinfo-edits' => "Numru ta' modifiki",
+'pageinfo-authors' => "Numru ta' awturi distinti",
+'pageinfo-views' => "Numru ta' viżti",
+'pageinfo-viewsperedit' => 'Viżti kull modifika',
# Skin names
'skinname-standard' => 'Classic',
@@ -2824,25 +2896,6 @@ Kull azzjonijiet ta' importazzjoni tal-transwiki jiġu reġistrati fil-[[Special
'skinname-simple' => 'Simple',
'skinname-modern' => 'Modern',
-# Math options
-'mw_math_png' => "Uri dejjem f'PNG",
-'mw_math_simple' => 'HTML jekk sempliċi ħafna, inkella PNG',
-'mw_math_html' => 'HTML jekk possibli inkella PNG',
-'mw_math_source' => "Ħallija bħala TeX (għal browsers ta' test)",
-'mw_math_modern' => 'Format rakkomandat għall-browsers moderni',
-'mw_math_mathml' => 'MathML jekk possibli (esperimentali)',
-
-# Math errors
-'math_failure' => "Problema fil-''parser''",
-'math_unknown_error' => 'Problema mhux magħrufa',
-'math_unknown_function' => 'funżjoni mhux magħrufa',
-'math_lexing_error' => 'żball lessikali',
-'math_syntax_error' => 'żball fis-sintassi',
-'math_image_error' => "Konverżjoni għal PNG bla suċċess; verifika li huma installati tajjeb il-programmi segwenti: ''latex, dvips, gs, u convert''",
-'math_bad_tmpdir' => "Impossibli tikteb jew toħloq direttorju temporanju għal ''math''",
-'math_bad_output' => "Impossibli tikteb jew toħloq direttorju tal-''output'' tal-''math''",
-'math_notexvc' => "Esekuzzjoni ''texvc'' nieqes; jekk jogħġbok konsultà ''math/README'' għal konfigurazzjoni.",
-
# Patrolling
'markaspatrolleddiff' => 'Marka l-modifiki bħalha verifikati',
'markaspatrolledtext' => 'Immarka din il-paġna bħala verifikata',
@@ -2884,10 +2937,11 @@ $1',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|paġna|paġni}}',
'file-info' => "Dimensjoni: $1, tip ta' MIME: $2",
'file-info-size' => "$1 × $2 pixel, dimensjoni: $3, tip ta' MIME: $4",
+'file-info-size-pages' => '$1 × $2 pixels, daqs tal-fajl: $3, tip MIME: $4, $5 {{PLURAL:$5|paġna|paġni}}',
'file-nohires' => "<small>Mhux disponibli verżjonijiet b'risoluzzjoni akbar.</small>",
'svg-long-desc' => 'Fajl fil-format SVG, dimensjoni nominali $1 × $2 pixel, dimensjoni tal-fajl: $3',
'show-big-image' => "Verżjoni b'risoluzzjoni sħiħa",
-'show-big-image-thumb' => '<small>Dimensjoni tal-previżjoni: $1 × $2 pixel</small>',
+'show-big-image-size' => '$1 × $2 pixels',
'file-info-gif-looped' => 'Ä‹iklika',
'file-info-gif-frames' => '{{PLURAL:$1|frejm wieħed|$1 frejms}}',
'file-info-png-looped' => 'Ä‹iklika',
@@ -2922,15 +2976,21 @@ Il-links suċċessivi fuq l-istess linja huma kkunsidrati bħala eċċezzjonijie
Jekk il-fajl ġie modifikat mill-istat oriġinali, xi dettalji jistgħu ma jikkorispondux mal-verżjoni kurrenti.',
'metadata-expand' => 'Uri d-dettalji',
'metadata-collapse' => 'Aħbi d-dettalji',
-'metadata-fields' => "EXIF metadata mniżżel f'din il-lista tal-messaġġ se jiġu inkluż fil-veduta tal-paġna tal-istampa meta t-tabella tiġi murija fil-forma qasira.
-Minħabba veduta predefinita ,l-oħrajn se jiġu moħbija.
+'metadata-fields' => "Il-metadati tal-istampa mniżżla f'dan il-messaġġ se jiġu inklużi fuq il-paġna tal-sitampa meta t-tabella tal-metadata tkun magħluqa.
+Oħrajn jiġu moħbija kif inhu definit oriġinarjament.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => "Wisa'",
@@ -2945,13 +3005,11 @@ Minħabba veduta predefinita ,l-oħrajn se jiġu moħbija.
'exif-ycbcrpositioning' => 'Pożizzjonament tal-komponenti Y u C',
'exif-xresolution' => 'Riżoluzzjoni orizzontali',
'exif-yresolution' => 'Riżoluzzjoni vertikali',
-'exif-resolutionunit' => 'Unita tar-riżoluzzjoni X u Y',
'exif-stripoffsets' => 'Post fejn jinsab id-data tal-istampa',
'exif-rowsperstrip' => "Numru ta' fillieri għal kull strixxa",
'exif-stripbytecounts' => 'Bytes għal kull strixxa kompressa',
'exif-jpeginterchangeformat' => 'Pożizzjoni byte SOI JPEG',
'exif-jpeginterchangeformatlength' => "Numru ta' bytes ta' data JPEG",
-'exif-transferfunction' => "Funżjoni ta' transferiment",
'exif-whitepoint' => 'Kromatiku tal-punt abjad',
'exif-primarychromaticities' => 'Kromitiku tal-kuluri primarji',
'exif-ycbcrcoefficients' => 'Koeffiċjent matriċi tat-trasformazzjoni spazji tal-kuluri',
@@ -2970,7 +3028,6 @@ Minħabba veduta predefinita ,l-oħrajn se jiġu moħbija.
'exif-compressedbitsperpixel' => 'Għamla tal-kompressjoni tal-istampa',
'exif-pixelydimension' => "Wisa' tal-istampa",
'exif-pixelxdimension' => 'Għoli tal-istama',
-'exif-makernote' => 'Noti dwar il-maniffatur',
'exif-usercomment' => 'Noti tal-utent',
'exif-relatedsoundfile' => 'Fajl relatat mal-ismiegħ',
'exif-datetimeoriginal' => 'Data u ħin tal-ħolqien tad-data',
@@ -2984,7 +3041,6 @@ Minħabba veduta predefinita ,l-oħrajn se jiġu moħbija.
'exif-exposureprogram' => 'Programm tal-wirja',
'exif-spectralsensitivity' => 'Sensitività spettrali',
'exif-isospeedratings' => 'Sensibilità ISO',
-'exif-oecf' => "Fattur ta' konverżjoni optoelettronika",
'exif-shutterspeedvalue' => 'Veloċità tax-xater APEX',
'exif-aperturevalue' => 'Ftuħ APEX',
'exif-brightnessvalue' => 'ÄŠarezza APEX',
@@ -2997,7 +3053,6 @@ Minħabba veduta predefinita ,l-oħrajn se jiġu moħbija.
'exif-focallength' => 'Distanza fokali objettiva',
'exif-subjectarea' => 'Spazju tas-suġġett',
'exif-flashenergy' => 'Saħħa tal-flash',
-'exif-spatialfrequencyresponse' => 'Risposta fi frekwenza spazjali',
'exif-focalplanexresolution' => 'Riżoluzzjoni X fuq il-witja fokali',
'exif-focalplaneyresolution' => 'Riżoluzzjoni Y fuq il-witja fokali',
'exif-focalplaneresolutionunit' => "Unita ta' qisien tar-riżoluzzjoni fuq il-witja fokali",
@@ -3006,7 +3061,6 @@ Minħabba veduta predefinita ,l-oħrajn se jiġu moħbija.
'exif-sensingmethod' => 'Metodu ta tħaffif',
'exif-filesource' => 'Oriġini tal-fajl',
'exif-scenetype' => 'Tip tax-xena',
-'exif-cfapattern' => 'Dispożizzjoni tal-filtru tal-kulur',
'exif-customrendered' => 'Proċessar tal-istampi personalizzati',
'exif-exposuremode' => "Stat ta' wirja",
'exif-whitebalance' => 'Bilanċ l-abjad',
@@ -3051,11 +3105,77 @@ Minħabba veduta predefinita ,l-oħrajn se jiġu moħbija.
'exif-gpsareainformation' => 'Isem taż-żona tal-GPS',
'exif-gpsdatestamp' => 'Data tal-GPS',
'exif-gpsdifferential' => 'Tiswija differenzjali tal-GPS',
+'exif-jpegfilecomment' => 'Kumment tal-fajl JPEG',
+'exif-keywords' => 'Kliem importanti',
+'exif-worldregioncreated' => 'Reġjun tad-dinja fejn l-istampa ttieħdet',
+'exif-countrycreated' => 'Pajjiż fejn l-istampa ttieħdet',
+'exif-countrycodecreated' => 'Kodiċi għall-pajjiż fejn l-istampa ttieħdet',
+'exif-provinceorstatecreated' => 'Provinċja jew stat fejn l-istampa ttieħdet',
+'exif-citycreated' => 'Belt fejn l-istampa ttieħdet',
+'exif-sublocationcreated' => 'Parti tal-belt fejn l-istampa ttieħdet',
+'exif-worldregiondest' => 'Reġjun tad-dinja murij',
+'exif-countrydest' => 'Pajjiż muri',
+'exif-countrycodedest' => 'Kodiċi tal-pajjiż muri',
+'exif-provinceorstatedest' => 'Provinċja jew stati muri',
+'exif-citydest' => 'Belt muri',
+'exif-sublocationdest' => 'Parti tal-belt muri',
'exif-objectname' => 'Titlu qasir',
+'exif-specialinstructions' => 'Struzzjonijiet speċjali',
+'exif-headline' => 'Titlu',
+'exif-credit' => 'Fornitur',
+'exif-source' => 'Sors',
+'exif-editstatus' => 'Stat editorjali tal-istampa',
+'exif-urgency' => 'Urġenza',
+'exif-fixtureidentifier' => 'Isem tar-riferiment',
+'exif-locationdest' => 'Lokalità raffigurata',
+'exif-locationdestcode' => 'Kodiċi tal-lokalità raffigurata',
+'exif-objectcycle' => 'Ħin tal-ġurnata li l-midja hija intiża',
+'exif-contact' => 'Informazzjoni dwar il-kuntatt',
+'exif-writer' => 'Kittieb',
+'exif-languagecode' => 'Lingwa',
+'exif-iimversion' => 'Verżjoni IIM',
+'exif-iimcategory' => 'Kategorija',
+'exif-iimsupplementalcategory' => 'Kategoriji supplementari',
+'exif-datetimeexpires' => 'Tużahiex wara',
+'exif-datetimereleased' => 'Rilaxxata nhar il-',
+'exif-originaltransmissionref' => "Kodiċi tal-post ta' trażmissjoni oriġinali",
+'exif-identifier' => 'Identifikatur',
+'exif-lens' => 'Lenti wżat',
+'exif-serialnumber' => 'Numru tas-serje tal-kamera',
+'exif-cameraownername' => 'Sid il-kamera',
+'exif-label' => 'Tikketta',
+'exif-datetimemetadata' => 'Data meta l-metadati ġew modifikati l-aħħar',
+'exif-nickname' => "Isem informali ta' stampa",
+'exif-rating' => 'Valutazzjoni (minn 5)',
+'exif-rightscertificate' => "ÄŠertifikat ta' Ä¡estjoni tad-drittijiet",
+'exif-copyrighted' => 'Stat tal-copyright',
+'exif-copyrightowner' => 'Proprjetarju tal-copyright',
+'exif-usageterms' => "Termini ta' użu",
+'exif-webstatement' => 'Dikjarazzjoni tal-copyright online',
+'exif-originaldocumentid' => 'ID unika tad-dokument oriġinali',
+'exif-licenseurl' => 'URL għal-liċenzja tal-copyright',
+'exif-morepermissionsurl' => 'Informazzjoni fuq il-liċenzji alternattivi',
+'exif-attributionurl' => "Meta terġa' tuża dan ix-xogħol, jekk jogħġbok agħmel ħolqa lejn",
+'exif-preferredattributionname' => "Meta terġa' tuża dan ix-xogħol, jekk jogħġbok attribwixxi lil",
+'exif-pngfilecomment' => 'Kumment tal-fajl PNG',
+'exif-disclaimer' => 'Ċaħda',
+'exif-contentwarning' => 'Avviż fuq il-kontenut',
+'exif-giffilecomment' => 'Kumment tal-fajl GIF',
+'exif-intellectualgenre' => "Tip ta' element",
+'exif-subjectnewscode' => 'Kodiċi tas-suġġett',
+'exif-scenecode' => 'Kodiċi tax-xena IPTC',
+'exif-event' => 'Avveniment raffigurat',
+'exif-organisationinimage' => 'Organizzazzjoni raffigurata',
+'exif-personinimage' => 'Persuna raffigurata',
+'exif-originalimageheight' => 'Għoli tal-istampa qabel ma ġiet maqtugħa',
+'exif-originalimagewidth' => "Wisa' tal-istampa qabel ma ġiet maqtugħa",
# EXIF attributes
'exif-compression-1' => 'L-Ebda',
+'exif-copyrighted-true' => 'Protetta bil-copyright',
+'exif-copyrighted-false' => 'Dominju pubbliku',
+
'exif-unknowndate' => 'Data mhux magħrufa',
'exif-orientation-1' => 'Normali',
@@ -3070,6 +3190,8 @@ Minħabba veduta predefinita ,l-oħrajn se jiġu moħbija.
'exif-planarconfiguration-1' => 'format imbaċċaċ',
'exif-planarconfiguration-2' => 'format tal-ippjanar',
+'exif-colorspace-65535' => 'Mhux kalibrata',
+
'exif-componentsconfiguration-0' => 'nieqes',
'exif-exposureprogram-0' => 'Mhux definit',
@@ -3177,6 +3299,10 @@ Minħabba veduta predefinita ,l-oħrajn se jiġu moħbija.
'exif-gpslongitude-e' => 'Loġitudni tal-lvant',
'exif-gpslongitude-w' => 'Lonġitudni tal-punent',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metru|metri}} fuq il-livell tal-baħar',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metru|metri}} taħt il-livell tal-baħar',
+
'exif-gpsstatus-a' => 'Qisien fil-progress',
'exif-gpsstatus-v' => 'Qisien interoperabili',
@@ -3188,21 +3314,72 @@ Minħabba veduta predefinita ,l-oħrajn se jiġu moħbija.
'exif-gpsspeed-m' => 'Mili fis-siegħa',
'exif-gpsspeed-n' => 'Nodi',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometri',
+'exif-gpsdestdistance-m' => 'Mili',
+'exif-gpsdestdistance-n' => 'Mili nawtiċi',
+
+'exif-gpsdop-excellent' => 'EÄ‹Ä‹ellenti ($1)',
+'exif-gpsdop-good' => 'Tajba ($1)',
+'exif-gpsdop-moderate' => 'Moderata ($1)',
+'exif-gpsdop-fair' => 'Diskreta ($1)',
+'exif-gpsdop-poor' => 'Fqira ($1)',
+
+'exif-objectcycle-a' => 'Filgħodu biss',
+'exif-objectcycle-p' => 'Filgħaxija biss',
+'exif-objectcycle-b' => 'Kemm filgħodu kif ukoll filgħaxija',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Direzzjoni vera',
'exif-gpsdirection-m' => 'Direzzjoni tal-kalamita',
+'exif-ycbcrpositioning-1' => 'ÄŠentrata',
+
+'exif-dc-contributor' => 'Kontributuri',
+'exif-dc-coverage' => 'Ambitu spazjali jew temporali tal-midja',
+'exif-dc-date' => 'Data(i)',
+'exif-dc-publisher' => 'Pubblikatur',
+'exif-dc-relation' => 'Midja relatata',
+'exif-dc-rights' => 'Drittijiet',
+'exif-dc-source' => 'Sors tal-midja',
+'exif-dc-type' => "Tip ta' midja",
+
+'exif-rating-rejected' => 'Rifjutata',
+
+'exif-isospeedratings-overflow' => 'Ikbar minn 65535',
+
+'exif-iimcategory-ace' => 'Arti, kultura u spettaklu',
+'exif-iimcategory-clj' => 'Kriminalità u liġi',
+'exif-iimcategory-dis' => 'Diżastri u aċċidenti',
+'exif-iimcategory-fin' => 'Ekonomija u negozju',
+'exif-iimcategory-edu' => 'Edukazzjoni',
+'exif-iimcategory-evn' => 'Ambjent',
+'exif-iimcategory-hth' => 'Saħħa',
+'exif-iimcategory-hum' => 'Interess uman',
+'exif-iimcategory-lab' => 'Xogħol',
+'exif-iimcategory-lif' => "Stil ta' ħajja u ħin liberu",
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Reliġjon u twemmin',
+'exif-iimcategory-sci' => 'Xjenza u teknoloġija',
+'exif-iimcategory-soi' => 'Kwistjonijiet soċjali',
+'exif-iimcategory-spo' => 'Sports',
+'exif-iimcategory-war' => 'Gwerra, kunflitti u diżordni',
+'exif-iimcategory-wea' => 'Temp',
+
+'exif-urgency-normal' => 'Normali ($1)',
+'exif-urgency-low' => 'Baxx ($1)',
+'exif-urgency-high' => 'Għoli ($1)',
+'exif-urgency-other' => 'Prijorità definita mill-utent ($1)',
+
# External editor support
'edit-externally' => "Immodifika dan il-fajl b'użu ta' applikazzjoni esterna",
-'edit-externally-help' => '(Għal aktar informazzjoni ara l-[http://www.mediawiki.org/wiki/Manual:External_editors istruzzjonijiet])',
+'edit-externally-help' => '(Għal aktar informazzjoni ara l-[//www.mediawiki.org/wiki/Manual:External_editors istruzzjonijiet])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'kollha',
-'imagelistall' => 'kollha',
-'watchlistall2' => 'kollha',
-'namespacesall' => 'kollha',
-'monthsall' => 'kollha',
-'limitall' => 'kollha',
+'watchlistall2' => 'kollha',
+'namespacesall' => 'kollha',
+'monthsall' => 'kollha',
+'limitall' => 'kollha',
# E-mail address confirmation
'confirmemail' => 'Ikkonferma l-indirizz tal-posta elettronika',
@@ -3278,17 +3455,24 @@ $1',
'trackbackdeleteok' => "Informazzjoni ta' trackback imħassar tajjeb.",
# Delete conflict
-'deletedwhileediting' => "'''Twissija''': Din il-paġna ġiet imħassra wara li int bdejt timmodifikaha!",
-'confirmrecreate' => "L-Utent [[User:$1|$1]] ([[User talk:$1|diskussjoni]]) ħassar din il-paġna wara li bdejt tagħmel il-modifiki bir-raġuni:
+'deletedwhileediting' => "'''Twissija''': Din il-paġna ġiet imħassra wara li int bdejt timmodifikaha!",
+'confirmrecreate' => "L-Utent [[User:$1|$1]] ([[User talk:$1|diskussjoni]]) ħassar din il-paġna wara li bdejt tagħmel il-modifiki bir-raġuni:
: ''$2''
Jekk jogħġbok konferma jekk vera trid terġa' toħloq din il-paġna.",
-'recreate' => "Erġa' oħloq",
+'confirmrecreate-noreason' => "L-utent [[User:$1|$1]] ([[User talk:$1|diskussjoni]]) ħassar din il-paġna wara li inti bdejt timmodifikaha. Jekk jogħġbok ikkonferma jekk tixtieqx li terġa' toħloq din il-paġna.",
+'recreate' => "Erġa' oħloq",
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => "Ħassar il-''cache'' ta' din il-paġna?",
'confirm-purge-bottom' => 'L-iżvojtar tal-cache twasslek biex tara l-iktar verżjoni aġġornata tal-paġna.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => "Żid din il-paġna mal-lista ta' osservazzjonijiet?",
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => "Neħħi din il-paġna mil-lista ta' osservazzjonijiet?",
+
# Separators for various lists, etc.
'semicolon-separator' => ';',
'autocomment-prefix' => '-',
@@ -3341,7 +3525,7 @@ Uża previżjoni standard.',
'watchlistedit-normal-legend' => 'Neħħi titli mil-lista tal-osservazzjonijiet speċjali',
'watchlistedit-normal-explain' => "Titli fil-lista ta' osservazzjoni tiegħek huma murija hawn taħt.
Biex tneħħi titlu, agħżel il-kaxxa ħdejn l-istess titlu, u agħfas \"{{int:Watchlistedit-normal-submit}}\".
-Int tista' wkoll [[Special:Watchlist/raw|timmodifika l-lista f'format testwali]].",
+Int tista' wkoll [[Special:EditWatchlist/raw|timmodifika l-lista f'format testwali]].",
'watchlistedit-normal-submit' => 'Neħħi t-titli',
'watchlistedit-normal-done' => '{{PLURAL:$1|Titlu kien imħassar|$1 titli kienu mħassra}} mil-lista tal-osservazzjonijiet speċjali tiegħek:',
'watchlistedit-raw-title' => 'Modifiki osservazzjonijiet speċjali fil-forma testwali',
@@ -3349,7 +3533,7 @@ Int tista' wkoll [[Special:Watchlist/raw|timmodifika l-lista f'format testwali]]
'watchlistedit-raw-explain' => "Titli fil-lista tal-osservazzjonijiet speċjali huma murija hawn taħt, u jistgħu jiġu modifikati billi żżid u tneħħi mil-lista;
titlu f'kull linja.
Meta tlesti, agħfas fuq \"{{int:Watchlistedit-raw-submit}}\".
-Inti tista' wkoll tuża' l-[[Special:Watchlist/edit|editur bl-interfaċċa standard]].",
+Inti tista' wkoll tuża' l-[[Special:EditWatchlist|editur bl-interfaċċa standard]].",
'watchlistedit-raw-titles' => 'Titli:',
'watchlistedit-raw-submit' => 'AÄ¡Ä¡orna l-lista',
'watchlistedit-raw-done' => "Il-lista ta' osservazzjoni tiegħek ġiet aġġornata.",
@@ -3378,33 +3562,33 @@ Inti tista' wkoll tuża' l-[[Special:Watchlist/edit|editur bl-interfaċċa stand
'duplicate-defaultsort' => '\'\'\'Twissija:\'\'\' iċ-ċavetta tal-issortjar oriġinali "$2" tissostitwixxi dik preċedenti "$1".',
# Special:Version
-'version' => 'Verżjoni',
-'version-extensions' => 'Estensjonijiet installati',
-'version-specialpages' => 'Paġni speċjali',
-'version-parserhooks' => 'Hook tal-parser',
-'version-variables' => 'Varjabili',
-'version-skins' => 'Aspetti',
-'version-other' => 'Oħrajn',
-'version-mediahandlers' => 'Imradd tal-medja',
-'version-hooks' => 'Hook',
-'version-extension-functions' => 'Funzjonijiet tal-estensjoni',
-'version-parser-extensiontags' => "Tikketti magħrufa mill-''parser'' introdotti minn estensjonijiet",
-'version-parser-function-hooks' => "''Hooks'' għal funzjonijiet tal-''parser''",
-'version-skin-extension-functions' => 'Funżjoni marbut mall-aspett grafiku (skin) introdott mill-estenżjoni',
-'version-hook-name' => 'Isem tal-hook',
-'version-hook-subscribedby' => 'Reġistrat minn',
-'version-version' => '(Verżjoni $1)',
-'version-license' => 'Liċenzja',
-'version-poweredby-credits' => "Din il-wiki hija operata minn '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'oħrajn',
-'version-license-info' => "MediaWiki huwa softwer b'xejn; inti tista' tqassmu mill-ġdid u/jew timmodifikah taħt it-termini tal-GNU General Public License, kif ippubblikata mill-Free Software Foundation; jew it-2 verżjoni tal-Liċenzja, jew (skont l-għażla tiegħek) kwalunkwe verżjoni suċċessiva.
+'version' => 'Verżjoni',
+'version-extensions' => 'Estensjonijiet installati',
+'version-specialpages' => 'Paġni speċjali',
+'version-parserhooks' => 'Hook tal-parser',
+'version-variables' => 'Varjabili',
+'version-antispam' => 'Prevenzjoni tal-ispam',
+'version-skins' => 'Aspetti',
+'version-other' => 'Oħrajn',
+'version-mediahandlers' => 'Imradd tal-medja',
+'version-hooks' => 'Hook',
+'version-extension-functions' => 'Funzjonijiet tal-estensjoni',
+'version-parser-extensiontags' => "Tikketti magħrufa mill-''parser'' introdotti minn estensjonijiet",
+'version-parser-function-hooks' => "''Hooks'' għal funzjonijiet tal-''parser''",
+'version-hook-name' => 'Isem tal-hook',
+'version-hook-subscribedby' => 'Reġistrat minn',
+'version-version' => '(Verżjoni $1)',
+'version-license' => 'Liċenzja',
+'version-poweredby-credits' => "Din il-wiki hija operata minn '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'oħrajn',
+'version-license-info' => "MediaWiki huwa softwer b'xejn; inti tista' tqassmu mill-ġdid u/jew timmodifikah taħt it-termini tal-GNU General Public License, kif ippubblikata mill-Free Software Foundation; jew it-2 verżjoni tal-Liċenzja, jew (skont l-għażla tiegħek) kwalunkwe verżjoni suċċessiva.
MediaWiki hi distribwita bl-iskop li din tkun utli, imma MINGĦAJR EBDA GARANZIJA; mingħajr lanqas il-garanzija impliċita ta' NEGOZJABILITÀ jew ta' ADEGWATEZZA GĦAL SKOP PARTIKULARI. Ara l-GNU General Public License għal aktar dettalji.
-Flimkien ma' dan il-programm suppost kellek tirċievi [{{SERVER}}{{SCRIPTPATH}}/COPYING kopja tal-GNU General Public License]; jekk le, ikteb lil Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA jew [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html aqraha fuq l-internet].",
-'version-software' => 'Softwer installat',
-'version-software-product' => 'Prodott',
-'version-software-version' => 'Verżjoni',
+Flimkien ma' dan il-programm suppost kellek tirċievi [{{SERVER}}{{SCRIPTPATH}}/COPYING kopja tal-GNU General Public License]; jekk le, ikteb lil Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA jew [//www.gnu.org/licenses/old-licenses/gpl-2.0.html aqraha fuq l-internet].",
+'version-software' => 'Softwer installat',
+'version-software-product' => 'Prodott',
+'version-software-version' => 'Verżjoni',
# Special:FilePath
'filepath' => 'Post tal-fajl',
@@ -3414,22 +3598,22 @@ Flimkien ma' dan il-programm suppost kellek tirċievi [{{SERVER}}{{SCRIPTPATH}}/
Stampi huwa mogħrija b'risoluzzjoni sħiħa, tipi tal-fajl oħrajn jibdew bil-program assoċjat magħhom direttament.",
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Fittex fajls duplikati',
-'fileduplicatesearch-summary' => "Fittex fajls duplikati fil-bażi għal valur ''hash''.
-
-Daħħal l-isem tal-fajl mingħajr il-prefiss \"{{ns:file}}:\".",
-'fileduplicatesearch-legend' => 'Fittex għal duplikat',
-'fileduplicatesearch-filename' => 'Isem il-fajl:',
-'fileduplicatesearch-submit' => 'Fittex',
-'fileduplicatesearch-info' => '$1 × $2 pixel<br />Daqs tal-fajl: $3<br />tip MIME: $4',
-'fileduplicatesearch-result-1' => 'Il-Fajl "$1" m\'għandux duplikat eżatt.',
-'fileduplicatesearch-result-n' => 'Il-Fajl "$1" għandu {{PLURAL:$2|duplikat identiku|$2 duplikati identiki}}.',
+'fileduplicatesearch' => 'Fittex fajls duplikati',
+'fileduplicatesearch-summary' => "Fittex fajls duplikati fil-bażi għal valur ''hash''.",
+'fileduplicatesearch-legend' => 'Fittex għal duplikat',
+'fileduplicatesearch-filename' => 'Isem il-fajl:',
+'fileduplicatesearch-submit' => 'Fittex',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />Daqs tal-fajl: $3<br />tip MIME: $4',
+'fileduplicatesearch-result-1' => 'Il-Fajl "$1" m\'għandux duplikat eżatt.',
+'fileduplicatesearch-result-n' => 'Il-Fajl "$1" għandu {{PLURAL:$2|duplikat identiku|$2 duplikati identiki}}.',
+'fileduplicatesearch-noresults' => 'Ma nstab l-ebda fajl bl-isem "$1".',
# Special:SpecialPages
'specialpages' => 'Paġni speċjali',
-'specialpages-note' => '----
-* Paġni normali speċjali.
-* <strong class="mw-specialpagerestricted">Paġni speċjali limitati.</strong>',
+'specialpages-note' => '---
+* Paġni speċjali normali.
+* <span class="mw-specialpagerestricted">Paġni speċjali riservati.</span>
+* <span class="mw-specialpagecached">Paġni speċjali disponibbli f\'verżjoni cache (jistgħu jkunu skaduti).</span>',
'specialpages-group-maintenance' => 'Rapporti tal-manteniment',
'specialpages-group-other' => 'Paġni speċjali oħrajn',
'specialpages-group-login' => 'Idħol / irreġistra',
diff --git a/languages/messages/MessagesMwl.php b/languages/messages/MessagesMwl.php
index 0eac51ba..d9941a40 100644
--- a/languages/messages/MessagesMwl.php
+++ b/languages/messages/MessagesMwl.php
@@ -55,12 +55,12 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Userlogin' => array( 'Antrar' ),
- 'Userlogout' => array( 'Salir' ),
'CreateAccount' => array( 'Criar Cuonta' ),
'Lonelypages' => array( 'Páiginas Uorfanas' ),
'Uncategorizedcategories' => array( 'Catadories sien catadories' ),
'Uncategorizedimages' => array( 'Eimaiges sien catadories' ),
+ 'Userlogin' => array( 'Antrar' ),
+ 'Userlogout' => array( 'Salir' ),
);
$magicWords = array(
@@ -228,7 +228,6 @@ $messages = array(
'searcharticle' => 'Bota',
'history' => 'Stórico de la Páigina',
'history_short' => 'Stórico',
-'info_short' => 'Anformaçon',
'printableversion' => 'Berson pa Ampremir',
'permalink' => 'Lhigaçon pa siempre',
'print' => 'Ampremir',
@@ -394,7 +393,7 @@ Puode tener un ó mais carateres que nun puoden ser outelizados an títalos.',
'nosuchuser' => 'Num eisiste nanhun outelizador cul nome "$1".
Ls nomes de outelizador son defrentes an lhetra grande ó pequeinha.
Bei cumo screbiste, ó [[Special:UserLogin/signup|cria ua nuoba cuonta]].',
-'nosuchusershort' => 'Nun eisiste nanhun outelizador cul nome "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Nun eisiste nanhun outelizador cul nome "$1".
Bei se l screbiste bien.',
'nouserspecified' => 'Tenes que dezir un nome de outelizador.',
'wrongpassword' => 'La palabra chabe ye ambálida.
@@ -421,7 +420,7 @@ de modo a cunfirmar que la cuonta ye mesmo la tue.',
'emailconfirmlink' => 'Cunfirma la tue morada de correio eiletrónico',
'loginlanguagelabel' => 'Lhéngua: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Demudar palabra-chabe',
'retypenew' => 'Pon outra beç la nuoba palabra chabe:',
@@ -436,8 +435,6 @@ de modo a cunfirmar que la cuonta ye mesmo la tue.',
'extlink_tip' => 'Lhigaçon sterna (lembra-te de l perfixo http://)',
'headline_sample' => 'Testo de cabeçailho',
'headline_tip' => 'Cacho de nible 2',
-'math_sample' => 'Poner fórmula eiqui',
-'math_tip' => 'Fórmula matemática (LaTeX)',
'nowiki_sample' => 'Poner testo nun-formatado eiqui',
'nowiki_tip' => 'Nun fazer causo de la formataçon biqui',
'image_tip' => 'Fexeiro ambutido',
@@ -589,7 +586,6 @@ Legenda: (atu) = defrénças de la berson atual,
'mypreferences' => 'Las mies perfréncias',
'prefs-skin' => 'Maçcarilha',
'skin-preview' => 'Amostrar',
-'prefs-math' => 'Matemática',
'prefs-datetime' => 'Data i hora',
'prefs-personal' => 'Calantriç',
'prefs-rc' => 'Redadeiras alteraçones',
@@ -873,10 +869,8 @@ Páiginas que steian ne ls [[Special:Watchlist|tous begiados]] son amostradas an
# Watchlist
'watchlist' => 'Ls mius begiados',
'mywatchlist' => 'Las mies páiginas begiadas',
-'addedwatch' => 'Ajuntada a las páiginas begiadas',
'addedwatchtext' => "La páigina \"[[:\$1]]\" fui ajuntada a la tue [[Special:Watchlist|lista de páiginas begiadas]].
Altaraçones feturas na tal páigina i páiginas de çcusson a eilha associadas seran listadas alhá, cun la páigina aparecendo a '''negrito''' na [[Special:RecentChanges|lista de redadeiras altaraçones]], para que se pouda ancuntrar cun maior facelidade.",
-'removedwatch' => 'Botada fuora de las begiadas',
'removedwatchtext' => 'La páigina "[[:$1]]" fui botada fuora de la [[Special:Watchlist|tue lista de páiginas begiadas]].',
'watch' => 'Begiar',
'watchthispage' => 'Begiar esta páigina',
@@ -900,7 +894,7 @@ Altaraçones feturas na tal páigina i páiginas de çcusson a eilha associadas
'confirmdeletetext' => "Stás quaije a botar fuora para siempre ua páigina ó ua eimaige i todos ls sous stóricos.
Por fabor, bei se ye esso que quieres fazer, que antendes las cunsequéncias i se esso stá d'acordo culas [[{{MediaWiki:Policy-url}}|políticas]].",
'actioncomplete' => 'Acion acabada',
-'deletedtext' => '"<nowiki>$1</nowiki>" fue elhiminada.
+'deletedtext' => '"$1" fue elhiminada.
Consulte $2 para um registo de eliminações recentes.',
'deletedarticle' => 'botado pa la rue "[[$1]]"',
'dellogpage' => 'Registro de botado fuora',
@@ -921,7 +915,7 @@ Consulte $2 para um registo de eliminações recentes.',
'protectexpiry' => 'Data de balidade:',
'protect_expiry_invalid' => 'La data de balidade ye ambálido.',
'protect_expiry_old' => 'La data de balidade stá ne l passado.',
-'protect-text' => "Tu eiqui puodes ber i demudar ls nibles de porteçon pa esta páigina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Tu eiqui puodes ber i demudar ls nibles de porteçon pa esta páigina '''$1'''.",
'protect-locked-access' => "La tue cuonta nun ten permissones pa demudar ls nibles de porteçon dua páigina.
Esta ye la cunfiguraçon atual pa la páigina '''$1''':",
'protect-cascadeon' => 'Esta páigina ancontra-se portegida, ua beç que se ancontra ancluída {{PLURAL:$1|na páigina listada a seguir, portegida|nas páiginas listadas a seguir, portegidas}} cun la "porteçon porgressiba" atibada. Tu puodes demudar l nible de porteçon desta páigina, mas esso nun terá eifeito na "porteçon an cachon".',
@@ -1120,11 +1114,10 @@ Premite ajuntar la rezon de la eidiçon ne l sumário.',
'nextdiff' => 'Redadeira eidiçon →',
# Media information
-'file-info-size' => '$1 × $2 pixel, tamanho: $3, tipo MIME: $4',
-'file-nohires' => '<small>Sin resoluçon maior çponible.</small>',
-'svg-long-desc' => 'fexeiro SVG, de $1 × $2 pixeles, tamanho: $3',
-'show-big-image' => 'Resoluçon cumpleta',
-'show-big-image-thumb' => '<small>Tamanho desta prebison: $1 × $2 pixeles</small>',
+'file-info-size' => '$1 × $2 pixel, tamanho: $3, tipo MIME: $4',
+'file-nohires' => '<small>Sin resoluçon maior çponible.</small>',
+'svg-long-desc' => 'fexeiro SVG, de $1 × $2 pixeles, tamanho: $3',
+'show-big-image' => 'Resoluçon cumpleta',
# Special:NewFiles
'newimages' => 'Galerie de nuobos fexeiros',
@@ -1150,7 +1143,13 @@ Causo l fexeiro tenga sido demudado a partir de l sou stado oureginal, alguns de
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Ancho',
@@ -1180,14 +1179,12 @@ Causo l fexeiro tenga sido demudado a partir de l sou stado oureginal, alguns de
# External editor support
'edit-externally' => 'Eiditar este fexeiro outelizando ua aplicaçon sterna',
-'edit-externally-help' => '(Bei las [http://www.mediawiki.org/wiki/Manual:External_editors anstruçones de anstalaçon] pa mais anformaçon).',
+'edit-externally-help' => '(Bei las [//www.mediawiki.org/wiki/Manual:External_editors anstruçones de anstalaçon] pa mais anformaçon).',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'todo',
-'imagelistall' => 'todo',
-'watchlistall2' => 'todas',
-'namespacesall' => 'todas',
-'monthsall' => 'todos',
+'watchlistall2' => 'todas',
+'namespacesall' => 'todas',
+'monthsall' => 'todos',
# action=purge
'confirm_purge_button' => 'Stá bien',
diff --git a/languages/messages/MessagesMy.php b/languages/messages/MessagesMy.php
index 3160b1a7..5a5b36ed 100644
--- a/languages/messages/MessagesMy.php
+++ b/languages/messages/MessagesMy.php
@@ -172,8 +172,7 @@ $messages = array(
'listingcontinuesabbrev' => 'ပံ့ပိုး',
'index-category' => 'အက္á€á€›á€¬á€…ဉ် စာမျက်နှာများ',
'noindex-category' => 'အက္á€á€›á€¬á€…ဉ် စာမျက်နှာများမရှိ',
-
-'mainpagetext' => "'''မီဒီယာá€á€®á€€á€®á€€á€­á€¯ အောင်မြင်စွာ သွင်းပြီးပါပြီá‹'''",
+'broken-file-category' => 'ကျိုးပျက်နေသော ဖိုင်လင့်များပါသည့် စာမျက်နှာများ',
'about' => 'အကြောင်း',
'article' => 'စာမျက်နှာ',
@@ -224,10 +223,10 @@ $messages = array(
'history' => 'စာမျက်နှာ ရာဇá€á€„်',
'history_short' => 'ရာဇá€á€„်',
'updatedmarker' => 'နောက်ဆုံးထာကြည့်ပြီးသည့်နောက်ပိုင်း á€á€Šá€ºá€¸á€–ြá€á€ºá€‘ားသည်á‹',
-'info_short' => 'သá€á€„်းအá€á€»á€€á€ºá€¡á€œá€€á€º',
'printableversion' => 'ပရင့်ထုá€á€ºá€›á€”်',
'permalink' => 'ပုံ​သေ​လိပ်​စာ​',
'print' => 'ပရင့်',
+'view' => 'ကြည့်ရန်',
'edit' => 'ပြင်​ဆင်​ရန်​',
'create' => 'စá€á€„်ရေးသားရန်',
'editthispage' => 'ဤစာမျက်နှာကို ပြင်ရန်',
@@ -235,6 +234,7 @@ $messages = array(
'delete' => 'ဖျက်​ပါ​',
'deletethispage' => 'ဤစာမျက်နှာဖျက်ပါ',
'undelete_short' => '{{PLURAL:$1|á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€¾á€¯á€á€…်á€á€¯|á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€¾á€¯ $1 á€á€¯á€á€­á€¯á€·}}ကို မဖျက်á€á€±á€¬á€·á€›á€”်',
+'viewdeleted_short' => '{{PLURAL:$1|ဖျက်လိုက်သည့်á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€¾á€¯á€á€…်á€á€¯|ဖျက်လိုက်သည့် á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€¾á€¯ $1 á€á€¯}}ကို ကြည့်ရန်',
'protect' => 'ထိမ်း​သိမ်း​ပါ​',
'protect_change' => 'ပြောင်းလဲရန်',
'protectthispage' => 'ဤစာမျက်နှာကို ကာကွယ်ရန်',
@@ -315,6 +315,8 @@ $1',
'toc' => 'မာá€á€­á€€á€¬',
'showtoc' => 'ပြ',
'hidetoc' => 'á€á€¾á€€á€º',
+'collapsible-collapse' => 'á€á€»á€¯á€¶á€·á€›á€”်',
+'collapsible-expand' => 'á€á€»á€²á€·á€›á€”်',
'thisisdeleted' => '$1 ကို ကြည့်မည်လော (သို့) restore ပြန်သိမ်းမည်လောá‹',
'viewdeleted' => '$1 ကို ကြည့်မည်လောá‹',
'restorelink' => '{{PLURAL:$1|ဖျက်လိုက်သည့်á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€¾á€¯á€á€…်á€á€¯|ဖျက်လိုက်သည့် á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€¾á€¯ $1 á€á€¯}}',
@@ -323,6 +325,8 @@ $1',
'page-rss-feed' => 'RSS feed "$1" á€á€¯',
'page-atom-feed' => 'Atom feed "$1" á€á€¯',
'red-link-title' => '$1 (ဤစာမျက်နှာ မရှိပါ)',
+'sort-descending' => 'အစဉ်လိုက်စီရန်',
+'sort-ascending' => 'အစဉ်လိုက် ပြောင်းပြန်စီရန်',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'စာ​မျက်​နှာ​',
@@ -366,7 +370,6 @@ $1',
'viewsourcefor' => '$1 အá€á€½á€€á€º',
'protectedpagetext' => 'ဤစာမျက်နှာအား á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€›á€”ိုင်ရန် ထိန်းသိမ်းထားသည်á‹',
'namespaceprotected' => "'''$1''' စာညွှန်းဖြင့် စာမျက်နှာကို á€á€Šá€ºá€¸á€–ြá€á€ºá€›á€”် á€á€½á€„့်ပြုá€á€»á€€á€º မရှိပါá‹",
-'customcssjsprotected' => 'အá€á€¼á€¬á€¸á€¡á€žá€¯á€¶á€¸á€•á€¼á€¯á€žá€°á ကိုယ်ရေးအá€á€»á€€á€ºá€¡á€œá€€á€ºá€™á€»á€¬á€¸ ပါá€á€„်သည့်အá€á€½á€€á€º သင်ပြင်ဆင်á€á€½á€„့်မရှိပါá‹',
'ns-specialprotected' => 'အထူးစာမျက်နှာများကို á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€›á€”ိုင်ပါá‹',
# Virus scanner
@@ -397,6 +400,7 @@ $1',
'createaccount' => 'အကောင့်လုပ်ရန်',
'gotaccount' => 'အကောင့်ရှိပြီးသားလားዠ$1á‹',
'gotaccountlink' => 'Log in á€á€„်ရန်',
+'userlogin-resetlink' => 'Login á€á€„်သည့် အသေးစိá€á€ºá€á€­á€¯á€·á€€á€­á€¯ မေ့သွားပါသလား?',
'createaccountmail' => 'အီးမေးဖြင့်',
'createaccountreason' => 'အ​ကြောင်း​ပြ​á€á€»á€€á€º -',
'badretype' => 'သင်ထည့်သွင်းလိုက်သော စကားá€á€¾á€€á€ºá€™á€»á€¬á€¸ ကိုက်ညီမှု မရှိပါá‹',
@@ -407,7 +411,7 @@ $1',
'noname' => 'á€á€›á€¬á€¸á€á€„် အသုံးပြုသူအမည်ကို မသá€á€ºá€™á€¾á€á€ºá€›á€žá€±á€¸á€•á€«á‹',
'loginsuccesstitle' => 'Login á€á€„်​á€á€¼á€„်း အောင်မြင်သည်á‹',
'loginsuccess' => "'''သင်သည် {{SITENAME}} သို့ \"\$1\" အဖြစ် Login á€á€„်ပြီးဖြစ်သည်á‹'''",
-'nosuchusershort' => '"<nowiki>$1</nowiki>" အမည်ဖြင့် အသုံးပြုသူမရှိပါá‹
+'nosuchusershort' => '"$1" အမည်ဖြင့် အသုံးပြုသူမရှိပါá‹
စာလုံးပေါင်း ပြန်စစ်ပေးပါရန်á‹',
'nouserspecified' => 'အသုံးပြုသူအမည်ကို ဖော်ပြရမည်ဖြစ်သည်á‹',
'login-userblocked' => 'ဤအသုံးပြုသူကို ပိá€á€ºá€•á€„်ထားသည်ዠLogin á€á€„်á€á€¼á€„်း á€á€½á€„့်မပြုပါá‹',
@@ -431,9 +435,10 @@ $1',
'usernamehasherror' => 'အသုံးပြုသူအမည်á€á€½á€„် hash စာလုံး (#) မပါရပါ',
'login-throttled' => 'သင်သည် login á€á€„်ရန် အကြိမ်မြောက်မြားစွာ အားထုá€á€ºá€á€²á€·á€•á€¼á€®á€¸á€–ြစ်သည်á‹
ကျေးဇူးပြုá ထပ်မá€á€„်á€á€„် စောင့်ပေးပါá‹',
+'login-abort-generic' => 'Login á€á€„်á€á€¼á€„်း မအောင်မြင်ပါ - ထွက်သွားပြီ',
'loginlanguagelabel' => 'ဘာသာ: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'စကားá€á€¾á€€á€ºá€•á€¼á€±á€¬á€„်းရန်',
'resetpass_announce' => 'သင်သည် ယာယီ စကားá€á€¾á€€á€ºá€–ြင့် á€á€„်ရောက်á€á€¼á€„်းဖြစ်သည်á‹
စကားá€á€¾á€€á€º အသစ်အား ဤနေရာá€á€½á€„်ရိုက်ပါ :',
@@ -449,6 +454,10 @@ $1',
'resetpass-submit-cancel' => 'မလုပ်á€á€±á€¬á€·á€•á€«',
'resetpass-temp-password' => 'ယာယီစကားá€á€¾á€€á€º -',
+# Special:PasswordReset
+'passwordreset-username' => 'အသုံးပြုသူအမည် :',
+'passwordreset-email' => 'အီးမေး လိပ်စာ :',
+
# Edit page toolbar
'bold_sample' => 'စာလုံးမည်း',
'bold_tip' => 'စာလုံးမည်း',
@@ -460,8 +469,6 @@ $1',
'extlink_tip' => 'ပြင်ပလင့်များ (http:// ကို ရှေ့ဆုံးမှ ထည့်ရေးရန် မမေ့ပါနှင့်)',
'headline_sample' => 'á€á€±á€«á€„်းကြီးစာသား',
'headline_tip' => 'အဆင့် á‚ á€á€±á€«á€„်းစီး',
-'math_sample' => 'ဤနေရာá€á€½á€„် သင်္á€á€»á€¬á€•á€¯á€¶á€žá€±á€”ည်း သုံးရန်',
-'math_tip' => 'သင်္á€á€»á€¬á€•á€¯á€¶á€žá€±á€”ည်း (LaTeX)',
'nowiki_sample' => 'ဖောမá€á€ºá€™á€œá€¯á€•á€ºá€‘ားသော စာများကို ဤနေရာá€á€½á€„် ထည့်ရန်',
'nowiki_tip' => 'á€á€®á€€á€®á€•á€¯á€¶á€…ံ ဖော်မá€á€ºá€™á€»á€¬á€¸á€€á€­á€¯ လျစ်လျူရှုရန်',
'image_tip' => 'Embedded ထည့်ထားသော ဖိုင်',
@@ -737,7 +744,6 @@ Try prefixing your query with ''all:'' to search all content (including talk pag
'changepassword' => 'စကားá€á€¾á€€á€º ပြောင်းရန်',
'prefs-skin' => 'အသွင်အပြင်',
'skin-preview' => 'နမူနာ',
-'prefs-math' => 'သင်္á€á€»á€¬',
'datedefault' => 'မရွေးá€á€»á€šá€º',
'prefs-datetime' => 'နေ့စွဲနှင့် အá€á€»á€­á€”်',
'prefs-personal' => 'အသုံးပြုသူ ပရိုဖိုင်',
@@ -761,7 +767,6 @@ Try prefixing your query with ''all:'' to search all content (including talk pag
'columns' => 'ဒေါင်လိုက်á€á€”်း -',
'searchresultshead' => 'ရှာ​ဖွေ​ရန်​',
'resultsperpage' => 'စာá€á€…်မျက်နှာလျှင် á€á€„်ကြည့်နှုန်း -',
-'contextlines' => 'စာá€á€…်ကြောင်းလျှင် á€á€„်ကြည့်နှုန်း -',
'stub-threshold-disabled' => 'ပိá€á€ºá€‘ားသည်',
'recentchangesdays' => 'လá€á€ºá€á€œá€±á€¬á€¡á€•á€¼á€±á€¬á€„်းအလဲများကို ပြရန်နေ့များ -',
'recentchangesdays-max' => 'အများဆုံး $1 {{PLURAL:$1|ရက်|ရက်}}',
@@ -811,6 +816,11 @@ HTML tags ကို စစ်ဆေးပါá‹',
'gender-male' => 'ကျား',
'gender-female' => 'မ',
'email' => 'အီးမေး',
+'prefs-help-email' => 'အီးမေးလ်လိပ်စာ ပေးမည် မပေးမည်မှာ သင့်သဘောသာ ဖြစ်ပါသည်ዠသို့သော်လည်း သင် စကားá€á€¾á€€á€ºá€€á€­á€¯ မေ့သွားပါက စကားá€á€¾á€€á€ºá€€á€­á€¯ reset လုပ်ရန် အီးမေးလ်လိပ်စာ လိုအပ်ပါလိမ့်မည်á‹',
+'prefs-help-email-others' => 'You can also choose to let others contact you by e-mail through a link on your user or talk page.
+သင့်ယူဆာစာမျက်နှာ သို့မဟုá€á€º ဆွေးနွေးရန်စာမျက်နှာရှိ လင့်မှá€á€†á€„့် သင့်ထံ အá€á€¼á€¬á€¸á€žá€°á€™á€»á€¬á€¸ အီးမေးမှဆက်သွယ်ရန်လည်း ရွေးá€á€»á€šá€ºá€”ိုင်သည်á‹
+Your e-mail address is not revealed when other users contact you.
+အá€á€¼á€¬á€¸á€žá€°á€™á€»á€¬á€¸ သင့်ထံဆက်သွယ်သည့်အá€á€« သင့်အီးမေးကို သူá€á€­á€¯á€·á€€á€­á€¯ ဖော်ပြမည်မဟုá€á€ºá€•á€«á‹',
'prefs-help-email-required' => 'အီးမေးလိပ်စာ လိုအပ်ပါသည်á‹',
'prefs-info' => 'အá€á€¼á€±á€á€¶á€žá€á€„်းအá€á€»á€€á€ºá€¡á€œá€€á€º',
'prefs-i18n' => 'နိုင်ငံá€á€€á€¬á€¡á€†á€„့်မီပြုလုပ်á€á€¼á€„်း',
@@ -901,7 +911,6 @@ HTML tags ကို စစ်ဆေးပါá‹',
'right-mergehistory' => 'စာမျက်နှာများáရာဇá€á€„်များကို ပေါင်းရန်',
'right-userrights' => 'အသုံးပြုသူáအá€á€½á€„့်အရေးများအားလုံးကို á€á€Šá€ºá€¸á€–ြá€á€ºá€›á€”်',
'right-userrights-interwiki' => 'အá€á€¼á€¬á€¸á€á€®á€€á€®á€™á€»á€¬á€¸á€™á€¾ အသုံးပြုသူများá အသုံးပြုသူအá€á€½á€„့်အရေးများကို á€á€Šá€ºá€¸á€–ြá€á€ºá€›á€”်',
-'right-reset-passwords' => 'အá€á€¼á€¬á€¸á€¡á€žá€¯á€¶á€¸á€•á€¼á€¯á€žá€°á€™á€»á€¬á€¸á စကားá€á€¾á€€á€ºá€™á€»á€¬á€¸á€€á€­á€¯ ပြန်သá€á€ºá€™á€¾á€á€ºá€›á€”်',
'right-sendemail' => 'အá€á€¼á€¬á€¸á€¡á€žá€¯á€¶á€¸á€•á€¼á€¯á€žá€°á€™á€»á€¬á€¸á€€á€­á€¯ အီးမေးပို့ရန်',
# User rights log
@@ -1290,24 +1299,26 @@ HTML tags ကို စစ်ဆေးပါá‹',
'listgrouprights-removegroup-self-all' => 'မိမိáအကောင့်မှ အုပ်စုအားလုံးကို ဖယ်ရှားရန်',
# E-mail user
-'mailnologin' => 'ပို့ရန်လိပ်စာ မရှိပါ',
-'emailuser' => 'ဤ​အ​သုံး​ပြု​သူ​အား​အီး​မေး​ပို့​ပါ​',
-'emailpage' => 'အီးမေးအသုံးပြုသူ',
-'defemailsubject' => '{{SITENAME}} အီးမေး',
-'usermaildisabled' => 'အသုံးပြုသူအီးမေးကို ပိá€á€ºá€‘ားသည်',
-'noemailtitle' => 'အီးမေးလိပ်စာ မရှိပါ',
-'noemailtext' => 'ဤအသုံးပြုသူသည် á€á€›á€¬á€¸á€á€„်သော အီးမေးလိပ်စာကို ဖောိပြထားá€á€¼á€„်း မရှိပါá‹',
-'nowikiemailtitle' => 'မည်သည့်အီးမေးမှ á€á€½á€„့်မပြုပါ',
-'nowikiemailtext' => 'ဤအသုံးပြုသူသည် အá€á€¼á€¬á€¸á€¡á€žá€¯á€¶á€¸á€•á€¼á€¯á€žá€°á€™á€»á€¬á€¸á€‘ံမှ အီးမေးကို လက်မá€á€¶á€›á€”် ရွေးá€á€»á€šá€ºá€‘ားသည်á‹',
-'email-legend' => 'အá€á€¼á€¬á€¸ {{SITENAME}} မှ အသုံးပြုသူကို အီးမေးပို့ရန်',
-'emailfrom' => 'မှ -',
-'emailto' => 'သို့ -',
-'emailsubject' => 'အကြောင်းအရာ -',
-'emailmessage' => 'စာသား -',
-'emailsend' => 'ပို့',
-'emailccme' => 'ကျွန်ုပ်ပို့လိုက်သော အီးမေးကော်ပီကို ကျွန်ုပ်ထံ ပြန်ပို့ပါá‹',
-'emailsent' => 'အီးမေးပို့လိုက်ပြီ',
-'emailsenttext' => 'သင့်အီးမေးမက်ဆေ့ကို ပို့လိုက်ပြီးပြီ ဖြစ်သည်á‹',
+'mailnologin' => 'ပို့ရန်လိပ်စာ မရှိပါ',
+'emailuser' => 'ဤ​အ​သုံး​ပြု​သူ​အား​အီး​မေး​ပို့​ပါ​',
+'emailpage' => 'အီးမေးအသုံးပြုသူ',
+'defemailsubject' => '{{SITENAME}} အီးမေး',
+'usermaildisabled' => 'အသုံးပြုသူအီးမေးကို ပိá€á€ºá€‘ားသည်',
+'noemailtitle' => 'အီးမေးလိပ်စာ မရှိပါ',
+'noemailtext' => 'ဤအသုံးပြုသူသည် á€á€›á€¬á€¸á€á€„်သော အီးမေးလိပ်စာကို ဖောိပြထားá€á€¼á€„်း မရှိပါá‹',
+'nowikiemailtitle' => 'မည်သည့်အီးမေးမှ á€á€½á€„့်မပြုပါ',
+'nowikiemailtext' => 'ဤအသုံးပြုသူသည် အá€á€¼á€¬á€¸á€¡á€žá€¯á€¶á€¸á€•á€¼á€¯á€žá€°á€™á€»á€¬á€¸á€‘ံမှ အီးမေးကို လက်မá€á€¶á€›á€”် ရွေးá€á€»á€šá€ºá€‘ားသည်á‹',
+'emailusername' => 'အသုံးပြုသူအမည် -',
+'emailusernamesubmit' => 'ထည့်သွင်းရန်',
+'email-legend' => 'အá€á€¼á€¬á€¸ {{SITENAME}} မှ အသုံးပြုသူကို အီးမေးပို့ရန်',
+'emailfrom' => 'မှ -',
+'emailto' => 'သို့ -',
+'emailsubject' => 'အကြောင်းအရာ -',
+'emailmessage' => 'စာသား -',
+'emailsend' => 'ပို့',
+'emailccme' => 'ကျွန်ုပ်ပို့လိုက်သော အီးမေးကော်ပီကို ကျွန်ုပ်ထံ ပြန်ပို့ပါá‹',
+'emailsent' => 'အီးမေးပို့လိုက်ပြီ',
+'emailsenttext' => 'သင့်အီးမေးမက်ဆေ့ကို ပို့လိုက်ပြီးပြီ ဖြစ်သည်á‹',
# Watchlist
'watchlist' => 'စောင့်ကြည့်စာရင်း',
@@ -1315,9 +1326,7 @@ HTML tags ကို စစ်ဆေးပါá‹',
'watchlistfor2' => '$1 အá€á€½á€€á€º $2',
'nowatchlist' => 'သင့်စောင့်ကြည့်စာရင်းမှာ ဘာမှ မရှိပါá‹',
'watchnologin' => 'logged in á€á€„်မထားပါ',
-'addedwatch' => 'စောင့်ကြည့်စာရင်းသို့ ပေါင်းထည့်ပြီး',
'addedwatchtext' => '"[[:$1]]" စာမျက်နှာကို [[Special:Watchlist|စောင့်ကြည့်စာရင်း]]ထဲ ပေါင်းထည့်ပြီးဖြစ်သည်ዠနောက်ပိုင်းအပြောင်းအလဲများနှင့် áŽá€„်းနှင့် ဆက်နွယ်နေသော ဆွေးနွေးá€á€»á€€á€º စာမျက်နှာကို ယင်းနေရာá€á€½á€„် စာရင်းပြုစုထားမည် ဖြစ်သည်ዠရွေးá€á€»á€šá€ºá€› လွယ်ကူစေရန် စာမျက်နှာသည် [[Special:RecentChanges|လá€á€ºá€á€œá€±á€¬ အပြောင်းအလဲများစာရင်း]]á€á€½á€„် စာလုံးမည်းဖြင့် ပေါ်လာမည်ဖြစ်သည်á‹',
-'removedwatch' => 'စောင့်ကြည့်စာရင်းမှ ဖယ်ရန်',
'removedwatchtext' => '"[[:$1]]" စာမျက်နှာကို [[Special:Watchlist|စောင့်ကြည့်စာရင်း]] မှ ဖယ်ထုá€á€ºá€•á€¼á€®á€¸ ဖြစ်သည်á‹',
'watch' => 'စောင့်ကြည့်ရန်',
'watchthispage' => 'ဤစာမျက်နှာကို စောင့်ကြည့်ရန်',
@@ -1348,7 +1357,7 @@ HTML tags ကို စစ်ဆေးပါá‹',
ဤသို့ ဖျက်ပစ်ရန် သင် အမှန်á€á€€á€šá€º ရည်ရွယ်လျက် နောက်ဆက်á€á€½á€² အကျိုးဆက်များကို သိရှိနားလည်ပြီး [[{{MediaWiki:Policy-url}}|မူá€á€«á€’]] အá€á€­á€¯á€„်းလုပ်ဆောင်နေá€á€¼á€„်းဖြစ်ကြောင်းကို အá€á€Šá€ºá€•á€¼á€¯á€•á€±á€¸á€•á€«á‹',
'actioncomplete' => 'လုပ်ဆောင်á€á€»á€€á€º ပြီးပြီ',
'actionfailed' => 'ဆောင်ရွက်မှုမအောင်မြင်ပါ',
-'deletedtext' => '"<nowiki>$1</nowiki>" ကို ဖျက်ပစ်လိုက်ပြီးဖြစ်သည်á‹
+'deletedtext' => '"$1" ကို ဖျက်ပစ်လိုက်ပြီးဖြစ်သည်á‹
လá€á€ºá€á€œá€±á€¬á€–ျက်ထားသည်များá မှá€á€ºá€á€™á€ºá€¸á€€á€­á€¯ $2 á€á€½á€„် ကြည့်ပါá‹',
'deletedarticle' => '[[$1]] ကို ဖျက်လိုက်သည်',
'dellogpage' => 'ဖျက်ထားသည်များ မှá€á€ºá€á€™á€ºá€¸',
@@ -1370,7 +1379,7 @@ HTML tags ကို စစ်ဆေးပါá‹',
'protectexpiry' => 'သက်á€á€™á€ºá€¸á€€á€¯á€”်လွန်မည် -',
'protect_expiry_invalid' => 'သက်á€á€™á€ºá€¸á€€á€¯á€”်လွန်မည့် အá€á€»á€­á€”်သည် á€á€›á€¬á€¸á€™á€á€„်ပါá‹',
'protect_expiry_old' => 'သက်á€á€™á€ºá€¸á€žá€Šá€º အá€á€­á€á€ºá€€á€¬á€œá€á€½á€„် ကုန်လွန်á€á€²á€·á€•á€¼á€®á€¸ ဖြစ်သည်á‹',
-'protect-text' => "'''<nowiki>$1</nowiki>''' စာမျက်နှာအá€á€½á€€á€º ကာကွယ်မှုအဆင့်ကို ဤနေရာá€á€½á€„် ကြည့်ရှုပြောင်းလဲနိုင်သည်á‹",
+'protect-text' => "'''$1''' စာမျက်နှာအá€á€½á€€á€º ကာကွယ်မှုအဆင့်ကို ဤနေရာá€á€½á€„် ကြည့်ရှုပြောင်းလဲနိုင်သည်á‹",
'protect-locked-access' => "သင့်အကောင့်သည် စာမျက်နှာá ကာကွယ်မှုအဆင့်ကို ပြောင်းလဲနိုင်ရန် á€á€½á€„့်ပြုá€á€»á€€á€º မရှိပါá‹
ဤသည်မှာ '''$1''' စာမျက်နှာအá€á€½á€€á€º လက်ရှိ settings သá€á€ºá€™á€¾á€á€ºá€á€»á€€á€ºá€™á€»á€¬á€¸ ဖြစ်သည်á‹",
'protect-cascadeon' => 'ပြန်စီစဉ်á€á€¼á€„်း cascading ကို ကာကွယ်ထားသော အောက်ပါ{{PLURAL:$1|စာမျက်နှာ|စာမျက်နှာများ}} ပါá€á€„်နေသောကြောင့် ဤစာမျက်နှာကို လက်ရှိá€á€½á€„် ကာကွယ်ထားသည်á‹
@@ -1467,68 +1476,61 @@ HTML tags ကို စစ်ဆေးပါá‹',
'whatlinkshere-filters' => 'စိစစ်မှုများ',
# Block/unblock
-'blockip' => 'အသုံးပြုသူကို ပိá€á€ºá€•á€„်ရန်',
-'blockip-title' => 'အသုံးပြုသူကို ပိá€á€ºá€•á€„်ရန်',
-'blockip-legend' => 'အသုံးပြုသူကို ပိá€á€ºá€•á€„်ရန်',
-'ipaddress' => 'အိုင်ပီလိပ်စာ -',
-'ipadressorusername' => 'အိုင်ပီလိပ်စာ သို့ အသုံးပြုသူအမည် -',
-'ipbexpiry' => 'သက်á€á€™á€ºá€¸á€€á€¯á€”်လွန်ရက် -',
-'ipbreason' => 'အ​ကြောင်း​ပြ​á€á€»á€€á€º:',
-'ipbreasonotherlist' => 'အá€á€¼á€¬á€¸ အကြောင်းပြá€á€»á€€á€º',
-'ipbanononly' => 'အမည်မသိ အသုံးပြုသူများကိုသာ ပိá€á€ºá€•á€„်ရန်',
-'ipbcreateaccount' => 'အကောင့်အသစ်ပြုလုပ်á€á€¼á€„်းကို á€á€¬á€¸á€†á€®á€¸á€›á€”်',
-'ipbemailban' => 'အီးမေးပို့á€á€¼á€„်းမှ အသုံးပြုသူကို á€á€¬á€¸á€†á€®á€¸á€›á€”်',
-'ipbsubmit' => 'ဤအသုံးပြုသူကို ပိá€á€ºá€•á€„်ရန်',
-'ipbother' => 'အá€á€¼á€¬á€¸á€¡á€á€»á€­á€”်:',
-'ipboptions' => 'Ⴀနာရီ:2 hours,á ရက်:1 day,რရက်:3 days,á ပá€á€º:1 week,Ⴀပá€á€º:2 weeks,á လ:1 month,რလ:3 months,ᆠလ:6 months,á နှစ်:1 year,အနန္á€:infinite',
-'ipbotheroption' => 'အá€á€¼á€¬á€¸',
-'ipbotherreason' => 'အá€á€¼á€¬á€¸á€žá€±á€¬/နောက်ထပ် အကြောင်းပြá€á€»á€€á€º -',
-'ipbhidename' => 'အသုံးပြုသူအမည်ကို á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€¾á€¯á€™á€»á€¬á€¸á€”ှင့် စာရင်းမှထဲá€á€½á€„် á€á€¾á€€á€ºá€‘ားရန်',
-'ipbwatchuser' => 'ဤအသုံးပြုသူáစာမျက်နှနှင့် ဆွေးနွေးá€á€»á€€á€ºá€á€­á€¯á€·á€€á€­á€¯ စောင့်ကြည့်ရန်',
-'badipaddress' => 'á€á€›á€¬á€¸á€™á€á€„်သော IP address',
-'blockipsuccesssub' => 'ပိá€á€ºá€•á€„်á€á€¼á€„်း အောင်မြင်သည်',
-'ipb-edit-dropdown' => 'ပိá€á€ºá€•á€„်ရသောအကြောင်းရင်းများ',
-'ipb-unblock-addr' => '$1 ကို ပိá€á€ºá€‘ားရာမှ ပြန်ဖွင့်ရန်',
-'ipb-unblock' => 'အသုံးပြုသူအမည် သို့ IP address ကို ပိá€á€ºá€‘ားရာမှ ပြန်ဖွင့်ပေးရန်',
-'ipb-blocklist' => 'ရှိနှင့်ပြီးသား ပိá€á€ºá€•á€„်မှုများကို ကြည့်ရန်',
-'ipb-blocklist-contribs' => '$1 အá€á€½á€€á€º ပံ့ပိုးမှုများ',
-'unblockip' => 'အသုံးပြုသူကို ပိá€á€ºá€•á€„်ထားရာမှ ပြန်ဖွင်ြ့ပေးရန်',
-'ipusubmit' => 'ဤပိá€á€ºá€•á€„်မှုကို ဖယ်ရှားရန်',
-'unblocked' => '[[User:$1|$1]] ကို ပိá€á€ºá€•á€„်ထားရာမှ ပြန်ဖွင့်ပေးလိုက်သည်',
-'unblocked-id' => '$1 ကို ပိá€á€ºá€•á€„်ထားမှုကို ဖယ်ရှာလိုက်သည်',
-'ipblocklist' => 'ပိá€á€ºá€•á€„်ထားသော အသုံးပြုသူများ',
-'ipblocklist-legend' => 'ပိá€á€ºá€•á€„်ထားသော အသုံးပြုသူá€á€…်ဦးကို ရှာရန်',
-'ipblocklist-username' => 'အသုံးပြုသူအမည် (သို့) IP address -',
-'ipblocklist-sh-userblocks' => 'အကောင့်ပိá€á€ºá€•á€„်ထားမှုများကို $1ရန်',
-'ipblocklist-sh-tempblocks' => 'ယာယီပိá€á€ºá€•á€„်ထားမှုများကို $1ရန်',
-'ipblocklist-sh-addressblocks' => 'IP á€á€…်á€á€¯á€á€Šá€ºá€¸á€•á€­á€á€ºá€•á€„်ထားမှုများကို $1ရန်',
-'ipblocklist-submit' => 'ရှာ​ဖွေ​ရန်​',
-'ipblocklist-otherblocks' => 'အá€á€¼á€¬á€¸ ပိá€á€ºá€•á€„်ထားမှု{{PLURAL:$1|á€á€¯|á€á€¯}}',
-'blocklistline' => '$1አ$2က $3ကို ပိá€á€ºá€•á€„်လိုက်သည်ዠ($4)',
-'infiniteblock' => 'အကန့်အသá€á€ºá€™á€›á€¾á€­',
-'expiringblock' => '$1 ရက် $2 အá€á€»á€­á€”်á€á€½á€„် သက်á€á€™á€ºá€¸á€€á€¯á€”်မည်',
-'noautoblockblock' => 'အလိုအလျောက်ပိá€á€ºá€•á€„်á€á€¼á€„်းကို ပိá€á€ºá€‘ားရန်',
-'createaccountblock' => 'အကောင့်ဖန်á€á€®á€¸á€á€¼á€„်းကို ပိá€á€ºá€‘ားသည်',
-'emailblock' => 'အီးမေးကို ပိá€á€ºá€•á€„်ထားသည်',
-'blocklist-nousertalk' => 'မိမိáဆွေးနွေးá€á€»á€€á€ºá€…ာမျက်နှာကို á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€›á€”ိုင်ပါ',
-'ipblocklist-empty' => 'ပိá€á€ºá€•á€„်ထားမှုစာရင်းသည် ဗလာဖြစ်နေသည်á‹',
-'blocklink' => 'á€á€¬á€¸á€†á€®á€¸á€€á€”့်သá€á€ºá€›á€”်',
-'unblocklink' => 'လင့် ပြန်ဖြေရန်',
-'change-blocklink' => 'စာကြောင်းအမည် ပြောင်းရန်',
-'contribslink' => 'ပံ့ပိုး',
-'blocklogpage' => 'ပိá€á€ºá€•á€„်á€á€¬á€¸á€†á€®á€¸á€™á€¾á€¯ မှá€á€ºá€á€™á€ºá€¸',
-'blocklogentry' => '[[$1]] ကို $2 ကြာအောင် ပိá€á€ºá€•á€„် á€á€¬á€¸á€†á€®á€¸á€œá€­á€¯á€€á€ºá€žá€Šá€º $3',
-'unblocklogentry' => '$1 ကို ပိá€á€ºá€‘ားရာမှ ပြန်ဖွင့်ရန်',
-'block-log-flags-anononly' => 'အမည်မသိ အသုံးပြုသူများသာ',
-'block-log-flags-nocreate' => 'အကောင့်ဖန်á€á€®á€¸á€á€¼á€„်းကို ပိá€á€ºá€‘ားသည်',
-'block-log-flags-noautoblock' => 'အလိုအလျောက်ပိá€á€ºá€•á€„်á€á€¼á€„်းကို ပိá€á€ºá€‘ားသည်',
-'block-log-flags-noemail' => 'အီးမေးကို ပိá€á€ºá€•á€„်ထားသည်',
-'block-log-flags-nousertalk' => 'မိမိáဆွေးနွေးá€á€»á€€á€ºá€…ာမျက်နှာကို á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€›á€”ိုင်ပါ',
-'block-log-flags-hiddenname' => 'အသုံးပြုသူအမည် á€á€¾á€€á€ºá€‘ားသည်',
-'ipb_expiry_invalid' => 'သက်á€á€™á€ºá€¸á€€á€¯á€”်လွန်မည့် အá€á€»á€­á€”်သည် á€á€›á€¬á€¸á€™á€á€„်ပါá‹',
-'ipb_already_blocked' => '"$1" ကို အစကá€á€Šá€ºá€¸á€€ ပိá€á€ºá€‘ားသည်',
-'blockme' => 'ကျွန်ုပ်ကို ပိá€á€ºá€›á€”်',
-'proxyblocksuccess' => 'ပြီးပါပြီá‹',
+'blockip' => 'အသုံးပြုသူကို ပိá€á€ºá€•á€„်ရန်',
+'blockip-title' => 'အသုံးပြုသူကို ပိá€á€ºá€•á€„်ရန်',
+'blockip-legend' => 'အသုံးပြုသူကို ပိá€á€ºá€•á€„်ရန်',
+'ipadressorusername' => 'အိုင်ပီလိပ်စာ သို့ အသုံးပြုသူအမည် -',
+'ipbexpiry' => 'သက်á€á€™á€ºá€¸á€€á€¯á€”်လွန်ရက် -',
+'ipbreason' => 'အ​ကြောင်း​ပြ​á€á€»á€€á€º:',
+'ipbreasonotherlist' => 'အá€á€¼á€¬á€¸ အကြောင်းပြá€á€»á€€á€º',
+'ipbcreateaccount' => 'အကောင့်အသစ်ပြုလုပ်á€á€¼á€„်းကို á€á€¬á€¸á€†á€®á€¸á€›á€”်',
+'ipbemailban' => 'အီးမေးပို့á€á€¼á€„်းမှ အသုံးပြုသူကို á€á€¬á€¸á€†á€®á€¸á€›á€”်',
+'ipbsubmit' => 'ဤအသုံးပြုသူကို ပိá€á€ºá€•á€„်ရန်',
+'ipbother' => 'အá€á€¼á€¬á€¸á€¡á€á€»á€­á€”်:',
+'ipboptions' => 'Ⴀနာရီ:2 hours,á ရက်:1 day,რရက်:3 days,á ပá€á€º:1 week,Ⴀပá€á€º:2 weeks,á လ:1 month,რလ:3 months,ᆠလ:6 months,á နှစ်:1 year,အနန္á€:infinite',
+'ipbotheroption' => 'အá€á€¼á€¬á€¸',
+'ipbotherreason' => 'အá€á€¼á€¬á€¸á€žá€±á€¬/နောက်ထပ် အကြောင်းပြá€á€»á€€á€º -',
+'ipbhidename' => 'အသုံးပြုသူအမည်ကို á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€¾á€¯á€™á€»á€¬á€¸á€”ှင့် စာရင်းမှထဲá€á€½á€„် á€á€¾á€€á€ºá€‘ားရန်',
+'ipbwatchuser' => 'ဤအသုံးပြုသူáစာမျက်နှနှင့် ဆွေးနွေးá€á€»á€€á€ºá€á€­á€¯á€·á€€á€­á€¯ စောင့်ကြည့်ရန်',
+'badipaddress' => 'á€á€›á€¬á€¸á€™á€á€„်သော IP address',
+'blockipsuccesssub' => 'ပိá€á€ºá€•á€„်á€á€¼á€„်း အောင်မြင်သည်',
+'ipb-edit-dropdown' => 'ပိá€á€ºá€•á€„်ရသောအကြောင်းရင်းများ',
+'ipb-unblock-addr' => '$1 ကို ပိá€á€ºá€‘ားရာမှ ပြန်ဖွင့်ရန်',
+'ipb-unblock' => 'အသုံးပြုသူအမည် သို့ IP address ကို ပိá€á€ºá€‘ားရာမှ ပြန်ဖွင့်ပေးရန်',
+'ipb-blocklist' => 'ရှိနှင့်ပြီးသား ပိá€á€ºá€•á€„်မှုများကို ကြည့်ရန်',
+'ipb-blocklist-contribs' => '$1 အá€á€½á€€á€º ပံ့ပိုးမှုများ',
+'unblockip' => 'အသုံးပြုသူကို ပိá€á€ºá€•á€„်ထားရာမှ ပြန်ဖွင်ြ့ပေးရန်',
+'ipusubmit' => 'ဤပိá€á€ºá€•á€„်မှုကို ဖယ်ရှားရန်',
+'unblocked' => '[[User:$1|$1]] ကို ပိá€á€ºá€•á€„်ထားရာမှ ပြန်ဖွင့်ပေးလိုက်သည်',
+'unblocked-id' => '$1 ကို ပိá€á€ºá€•á€„်ထားမှုကို ဖယ်ရှာလိုက်သည်',
+'ipblocklist' => 'ပိá€á€ºá€•á€„်ထားသော အသုံးပြုသူများ',
+'ipblocklist-legend' => 'ပိá€á€ºá€•á€„်ထားသော အသုံးပြုသူá€á€…်ဦးကို ရှာရန်',
+'ipblocklist-submit' => 'ရှာ​ဖွေ​ရန်​',
+'ipblocklist-otherblocks' => 'အá€á€¼á€¬á€¸ ပိá€á€ºá€•á€„်ထားမှု{{PLURAL:$1|á€á€¯|á€á€¯}}',
+'infiniteblock' => 'အကန့်အသá€á€ºá€™á€›á€¾á€­',
+'expiringblock' => '$1 ရက် $2 အá€á€»á€­á€”်á€á€½á€„် သက်á€á€™á€ºá€¸á€€á€¯á€”်မည်',
+'noautoblockblock' => 'အလိုအလျောက်ပိá€á€ºá€•á€„်á€á€¼á€„်းကို ပိá€á€ºá€‘ားရန်',
+'createaccountblock' => 'အကောင့်ဖန်á€á€®á€¸á€á€¼á€„်းကို ပိá€á€ºá€‘ားသည်',
+'emailblock' => 'အီးမေးကို ပိá€á€ºá€•á€„်ထားသည်',
+'blocklist-nousertalk' => 'မိမိáဆွေးနွေးá€á€»á€€á€ºá€…ာမျက်နှာကို á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€›á€”ိုင်ပါ',
+'ipblocklist-empty' => 'ပိá€á€ºá€•á€„်ထားမှုစာရင်းသည် ဗလာဖြစ်နေသည်á‹',
+'blocklink' => 'á€á€¬á€¸á€†á€®á€¸á€€á€”့်သá€á€ºá€›á€”်',
+'unblocklink' => 'လင့် ပြန်ဖြေရန်',
+'change-blocklink' => 'စာကြောင်းအမည် ပြောင်းရန်',
+'contribslink' => 'ပံ့ပိုး',
+'blocklogpage' => 'ပိá€á€ºá€•á€„်á€á€¬á€¸á€†á€®á€¸á€™á€¾á€¯ မှá€á€ºá€á€™á€ºá€¸',
+'blocklogentry' => '[[$1]] ကို $2 ကြာအောင် ပိá€á€ºá€•á€„် á€á€¬á€¸á€†á€®á€¸á€œá€­á€¯á€€á€ºá€žá€Šá€º $3',
+'unblocklogentry' => '$1 ကို ပိá€á€ºá€‘ားရာမှ ပြန်ဖွင့်ရန်',
+'block-log-flags-anononly' => 'အမည်မသိ အသုံးပြုသူများသာ',
+'block-log-flags-nocreate' => 'အကောင့်ဖန်á€á€®á€¸á€á€¼á€„်းကို ပိá€á€ºá€‘ားသည်',
+'block-log-flags-noautoblock' => 'အလိုအလျောက်ပိá€á€ºá€•á€„်á€á€¼á€„်းကို ပိá€á€ºá€‘ားသည်',
+'block-log-flags-noemail' => 'အီးမေးကို ပိá€á€ºá€•á€„်ထားသည်',
+'block-log-flags-nousertalk' => 'မိမိáဆွေးနွေးá€á€»á€€á€ºá€…ာမျက်နှာကို á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€›á€”ိုင်ပါ',
+'block-log-flags-hiddenname' => 'အသုံးပြုသူအမည် á€á€¾á€€á€ºá€‘ားသည်',
+'ipb_expiry_invalid' => 'သက်á€á€™á€ºá€¸á€€á€¯á€”်လွန်မည့် အá€á€»á€­á€”်သည် á€á€›á€¬á€¸á€™á€á€„်ပါá‹',
+'ipb_already_blocked' => '"$1" ကို အစကá€á€Šá€ºá€¸á€€ ပိá€á€ºá€‘ားသည်',
+'blockme' => 'ကျွန်ုပ်ကို ပိá€á€ºá€›á€”်',
+'proxyblocksuccess' => 'ပြီးပါပြီá‹',
# Move page
'move-page' => '$1 ကို ရွှေ့ရန်',
@@ -1684,24 +1686,6 @@ HTML tags ကို စစ်ဆေးပါá‹',
# Attribution
'others' => 'အá€á€¼á€¬á€¸',
-# Info page
-'numedits' => 'á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€¾á€¯ အရေအá€á€½á€€á€º (စာမျက်နှာ) - $1',
-'numtalkedits' => 'á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€¾á€¯á€¡á€›á€±á€¡á€á€½á€€á€º (ဆွေးနွေးá€á€»á€€á€º စာမျက်နှာ) - $1',
-'numwatchers' => 'စောင့်ကြည့်သူ အရေအá€á€½á€€á€º - $1',
-'numauthors' => 'အá€á€±á€¸á€›á€±á€¬á€€á€º စာရေးသူ အရေအá€á€½á€€á€º - $1',
-'numtalkauthors' => 'အá€á€±á€¸á€›á€±á€¬á€€á€º စာရေးသူ အရေအá€á€½á€€á€º (ဆွေးနွေးá€á€»á€€á€ºá€…ာမျက်နှာ) - $1',
-
-# Math options
-'mw_math_png' => 'PNG ဖိုင်အဖြစ် အမြဲပုံဖော်ရန်',
-'mw_math_simple' => 'လွန်စွာရိုးရှင်းပါက HTML အဖြစ် သို့မဟုá€á€ºá€•á€«á€€ PNG အဖြစ်',
-'mw_math_html' => 'ဖြစ်နိုင်လျှင် HTML သို့မဟုá€á€ºá€•á€«á€€ PNG အဖြစ်',
-'mw_math_source' => 'TeX အဖြစ်ထားá€á€²á€·á€•á€« (စာသားသာပြသည့် ဘရောက်ဇာများအá€á€½á€€á€º)',
-'mw_math_modern' => 'á€á€±á€á€ºá€•á€±á€«á€ºá€˜á€›á€±á€¬á€€á€ºá€‡á€¬á€™á€»á€¬á€¸á€¡á€á€½á€€á€º အကြံပြုသည်',
-
-# Math errors
-'math_unknown_error' => 'အမည်မသိ အမှား',
-'math_unknown_function' => 'အမည်မသိ ဖန်ရှင်',
-
# Patrol log
'patrol-log-line' => '$3 စောင့်ကြည့်နေသော $2 á $1 ကို မှá€á€ºá€žá€¬á€¸á€œá€­á€¯á€€á€ºá€žá€Šá€º',
'patrol-log-diff' => 'မူ $1',
@@ -1714,11 +1698,10 @@ HTML tags ကို စစ်ဆေးပါá‹',
'nextdiff' => 'ပိုသစ်သော á€á€Šá€ºá€¸á€–ြá€á€ºá€™á€¾á€¯',
# Media information
-'file-info-size' => '$1 × $2 pixels, ဖိုင်အရွယ်အစား - $3, MIME အမျိုးအစား $4',
-'file-nohires' => '<small>သည်ထက်ကြီးသော resolution မရှိပါ.</small>',
-'svg-long-desc' => 'SVG ဖိုင်, $1 × $2 pixels ကို အကြံပြုသည်, ဖိုင်အရွယ်အစား - $3',
-'show-big-image' => 'resolution အပြည့်',
-'show-big-image-thumb' => '<small>နမူနာကြည့်ရန် အရွယ်အစား - $1 × $2 pixels</small>',
+'file-info-size' => '$1 × $2 pixels, ဖိုင်အရွယ်အစား - $3, MIME အမျိုးအစား $4',
+'file-nohires' => '<small>သည်ထက်ကြီးသော resolution မရှိပါ.</small>',
+'svg-long-desc' => 'SVG ဖိုင်, $1 × $2 pixels ကို အကြံပြုသည်, ဖိုင်အရွယ်အစား - $3',
+'show-big-image' => 'resolution အပြည့်',
# Special:NewFiles
'newimages' => 'ပုံအသစ်များပြá€á€”်း',
@@ -1743,7 +1726,7 @@ HTML tags ကို စစ်ဆေးပါá‹',
အကယ်á ဖိုင်ကို မူရင်းအá€á€¼á€±á€¡á€”ေမှ ပြုပြင်လိုက်ပါက အသေးစိá€á€ºá€¡á€á€»á€­á€¯á€·á€žá€Šá€º ပြုပြင်ထားသောဖိုင်á€á€½á€„် အပြည့်အစုံ ပြန်ပါလာမည်မဟုá€á€ºá‹',
'metadata-expand' => 'á€á€»á€²á€·á€‘ားသော အသေးစိá€á€ºá€™á€»á€¬á€¸á€€á€­á€¯ ပြရန်',
'metadata-collapse' => 'á€á€»á€²á€·á€‘ားသော အသေးစိá€á€ºá€™á€»á€¬á€¸á€€á€­á€¯ ပြရန်',
-'metadata-fields' => 'metadata table ကို ဖွင့်á€á€»á€œá€­á€¯á€€á€ºá€žá€±á€¬á€¡á€á€« ဤမက်ဆေ့á€á€½á€„် စာရင်းလုပ်ထားသော EXIF metadata fields သည် ပုံစာမျက်နှာပြရာá€á€½á€„် ပါá€á€„်မည်ဖြစ်သည်á‹
+'metadata-fields' => 'metadata table ကို ဖွင့်á€á€»á€œá€­á€¯á€€á€ºá€žá€±á€¬á€¡á€á€« ဤမက်ဆေ့á€á€½á€„် စာရင်းလုပ်ထားသော Image metadata fields သည် ပုံစာမျက်နှာပြရာá€á€½á€„် ပါá€á€„်မည်ဖြစ်သည်á‹
အá€á€¼á€¬á€¸á€¡á€›á€¬á€™á€»á€¬á€¸á€€á€­á€¯á€™á€° ပုံမှန်အားဖြင့် á€á€¾á€€á€ºá€‘ားမည် ဖြစ်သည်á‹
* make
* model
@@ -1751,7 +1734,13 @@ HTML tags ကို စစ်ဆေးပါá‹',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'အကျယ်',
@@ -1765,7 +1754,6 @@ HTML tags ကို စစ်ဆေးပါá‹',
'exif-copyright' => 'မူပိုင်á€á€½á€„့်ပိုင်ရှင်',
'exif-pixelydimension' => 'á€á€›á€¬á€¸á€á€„်ပုံအကျယ်',
'exif-pixelxdimension' => 'á€á€›á€¬á€¸á€á€„် ပုံအမြင့်',
-'exif-makernote' => 'ထုá€á€ºá€œá€¯á€•á€ºá€žá€°á€™á€¾á€á€ºá€á€»á€€á€ºá€™á€»á€¬á€¸',
'exif-usercomment' => 'အသုံးပြုသူ မှá€á€ºá€á€»á€€á€ºá€™á€»á€¬á€¸',
'exif-relatedsoundfile' => 'ဆက်နွယ်သော အသံဖိုင်',
'exif-datetimeoriginal' => 'ဒေá€á€¬á€–န်á€á€®á€¸á€á€²á€·á€žá€±á€¬ နေ့စွဲနှင့် အá€á€»á€­á€”်',
@@ -1824,15 +1812,13 @@ HTML tags ကို စစ်ဆေးပါá‹',
# External editor support
'edit-externally' => 'ပြင်ပ application á€á€…်á€á€¯á€á€¯á€€á€­á€¯á€žá€¯á€¶á€¸á ဤဖိုင်ကို ပြင်ရန်',
-'edit-externally-help' => '(နောက်ထပ်သá€á€„်းအá€á€»á€€á€ºá€¡á€œá€€á€ºá€™á€»á€¬á€¸á€¡á€á€½á€€á€º[http://www.mediawiki.org/wiki/Manual:External_editors á€á€•á€ºá€†á€„်မှု လမ်းညွှန်များ] ကို ကြည့်ရန်)',
+'edit-externally-help' => '(နောက်ထပ်သá€á€„်းအá€á€»á€€á€ºá€¡á€œá€€á€ºá€™á€»á€¬á€¸á€¡á€á€½á€€á€º[//www.mediawiki.org/wiki/Manual:External_editors á€á€•á€ºá€†á€„်မှု လမ်းညွှန်များ] ကို ကြည့်ရန်)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'အားလုံး',
-'imagelistall' => 'အားလုံး',
-'watchlistall2' => 'အားလုံး',
-'namespacesall' => 'အားလုံး',
-'monthsall' => 'အားလုံး',
-'limitall' => 'အားလုံး',
+'watchlistall2' => 'အားလုံး',
+'namespacesall' => 'အားလုံး',
+'monthsall' => 'အားလုံး',
+'limitall' => 'အားလုံး',
# E-mail address confirmation
'confirmemail' => 'အီးမေးကိုအá€á€Šá€ºá€•á€¼á€¯á€•á€«',
diff --git a/languages/messages/MessagesMyv.php b/languages/messages/MessagesMyv.php
index 0580aae2..c1be8aba 100644
--- a/languages/messages/MessagesMyv.php
+++ b/languages/messages/MessagesMyv.php
@@ -39,73 +39,73 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'КавтоньКирданьЛиÑвÐевтемат' ),
+ 'Allmessages' => array( 'ВеÑеПачтÑмнÑÑ‚ÑŒ' ),
+ 'Allpages' => array( 'ВеÑеЛопат' ),
+ 'Ancientpages' => array( 'ТюштÑПингеньЛопат' ),
+ 'Blankpage' => array( 'ЧавоЛопа' ),
+ 'Block' => array( 'СаймаÑСаемÑIP' ),
+ 'Blockme' => array( 'СаймаÑСаемизь' ),
+ 'Booksources' => array( 'КнигаЛиÑьмапрÑÑ‚' ),
'BrokenRedirects' => array( 'СинденьЛиÑвÐевтемат' ),
- 'Userlogin' => array( 'ТеицÑСовамо' ),
- 'Userlogout' => array( 'ТеицÑЛиÑема' ),
+ 'Categories' => array( 'КатегориÑÑ‚' ),
+ 'ChangePassword' => array( 'СовамоВалоньПолавтома' ),
+ 'Contributions' => array( 'ПоладкÑÑ‚' ),
'CreateAccount' => array( 'ТеемÑШкамÑСовамоТарка' ),
- 'Watchlist' => array( 'ВанÑтнемаКерькÑ' ),
- 'Recentchanges' => array( 'ЧыÑконьПолавтомат' ),
- 'Upload' => array( 'ÐвкÑтамо' ),
+ 'Deadendpages' => array( 'ЛиÑемаСюлмавомаПевтемеЛопат' ),
+ 'DoubleRedirects' => array( 'КавтоньКирданьЛиÑвÐевтемат' ),
+ 'Export' => array( 'ЭкÑпортировамÑ' ),
+ 'Fewestrevisions' => array( 'ВеÑемедеÐламокÑтьЛиÑкÑтомтозь' ),
+ 'Filepath' => array( 'ФайланьКи' ),
+ 'Import' => array( 'ИмпортировамÑ' ),
'Listfiles' => array( 'ÐртовкÑКерькÑ' ),
- 'Newimages' => array( 'ОдÐртовкÑÑ‚' ),
- 'Statistics' => array( 'СтатиÑтика' ),
- 'Randompage' => array( 'КодамоПонгÑьЛопа' ),
+ 'Lockdb' => array( 'СёлгомÑДБ' ),
'Lonelypages' => array( 'СькамнеÑтЛопат', 'УрозЛопат' ),
- 'Uncategorizedpages' => array( 'КатегориÑвтомоЛопат' ),
- 'Uncategorizedcategories' => array( 'КатегориÑÑÐпакСовавтоСатегориÑÑ‚' ),
- 'Uncategorizedimages' => array( 'КатегориÑвтомоÐртовкÑÑ‚' ),
- 'Uncategorizedtemplates' => array( 'КатегориÑвтомоЛопаПарцунт' ),
- 'Unusedcategories' => array( 'ТевÑÐÐолдавицÑКатегориÑÑ‚' ),
- 'Unusedimages' => array( 'ТевÑÐÐолдавицÑÐртовкÑÑ‚' ),
- 'Wantedpages' => array( 'ВешезьЛопат' ),
- 'Wantedcategories' => array( 'ВешезьКатегориÑÑ‚' ),
- 'Wantedfiles' => array( 'ВешезьФайлат' ),
- 'Wantedtemplates' => array( 'ВешезьЛопапарцунт' ),
+ 'Longpages' => array( 'КувакаЛопат' ),
+ 'MIMEsearch' => array( 'MIMEВешнема' ),
+ 'Mostcategories' => array( 'ВеÑемедеЛамоКатегориÑМарто' ),
+ 'Mostimages' => array( 'ВеÑемедеЛамоÐртовкÑМарто' ),
'Mostlinked' => array( 'СехтеЛамоСюлмавомаПеМартот' ),
'Mostlinkedcategories' => array( 'СехтеЛамоСюлмавомаПеМартоКатегориÑÑ‚' ),
'Mostlinkedtemplates' => array( 'СехтеЛамоСюлмавомаПеМартоЛопаПарцунт' ),
- 'Mostimages' => array( 'ВеÑемедеЛамоÐртовкÑМарто' ),
- 'Mostcategories' => array( 'ВеÑемедеЛамоКатегориÑМарто' ),
'Mostrevisions' => array( 'ВеÑемедеЛамокÑтьЛиÑкÑтомтозь' ),
- 'Fewestrevisions' => array( 'ВеÑемедеÐламокÑтьЛиÑкÑтомтозь' ),
- 'Shortpages' => array( 'ÐурькинеЛопат' ),
- 'Longpages' => array( 'КувакаЛопат' ),
+ 'Movepage' => array( 'ПечтевтемÑЛопа' ),
+ 'Mycontributions' => array( 'МонМезеТеинь' ),
+ 'Mypage' => array( 'МоньЛопам' ),
+ 'Mytalk' => array( 'МоньКортамом' ),
+ 'Newimages' => array( 'ОдÐртовкÑÑ‚' ),
'Newpages' => array( 'ОдЛопат' ),
- 'Ancientpages' => array( 'ТюштÑПингеньЛопат' ),
- 'Deadendpages' => array( 'ЛиÑемаСюлмавомаПевтемеЛопат' ),
+ 'Popularpages' => array( 'ЛиÑийСовийМартоЛопат' ),
'Protectedpages' => array( 'ВанÑтоньЛопат' ),
'Protectedtitles' => array( 'ВанÑтоньКонÑкÑÑ‚' ),
- 'Allpages' => array( 'ВеÑеЛопат' ),
- 'Specialpages' => array( 'БашкаТевеньЛопат' ),
- 'Contributions' => array( 'ПоладкÑÑ‚' ),
- 'Whatlinkshere' => array( 'ТезÑньКодамтСюлмавомаПеть' ),
+ 'Randompage' => array( 'КодамоПонгÑьЛопа' ),
+ 'Recentchanges' => array( 'ЧыÑконьПолавтомат' ),
'Recentchangeslinked' => array( 'МалавикÑПолавтомат' ),
- 'Movepage' => array( 'ПечтевтемÑЛопа' ),
- 'Blockme' => array( 'СаймаÑСаемизь' ),
- 'Booksources' => array( 'КнигаЛиÑьмапрÑÑ‚' ),
- 'Categories' => array( 'КатегориÑÑ‚' ),
- 'Export' => array( 'ЭкÑпортировамÑ' ),
- 'Version' => array( 'ВерÑиÑ' ),
- 'Allmessages' => array( 'ВеÑеПачтÑмнÑÑ‚ÑŒ' ),
- 'Blockip' => array( 'СаймаÑСаемÑIP' ),
+ 'Revisiondelete' => array( 'ЛиÑкÑтомтоманьÐардамо' ),
+ 'Search' => array( 'ВешнемÑ' ),
+ 'Shortpages' => array( 'ÐурькинеЛопат' ),
+ 'Specialpages' => array( 'БашкаТевеньЛопат' ),
+ 'Statistics' => array( 'СтатиÑтика' ),
+ 'Uncategorizedcategories' => array( 'КатегориÑÑÐпакСовавтоСатегориÑÑ‚' ),
+ 'Uncategorizedimages' => array( 'КатегориÑвтомоÐртовкÑÑ‚' ),
+ 'Uncategorizedpages' => array( 'КатегориÑвтомоЛопат' ),
+ 'Uncategorizedtemplates' => array( 'КатегориÑвтомоЛопаПарцунт' ),
'Undelete' => array( 'ВельмевтемÑ' ),
- 'Import' => array( 'ИмпортировамÑ' ),
- 'Lockdb' => array( 'СёлгомÑДБ' ),
'Unlockdb' => array( 'ПанжомÑДБ' ),
- 'Userrights' => array( 'ТеицÑньВидечыть' ),
- 'MIMEsearch' => array( 'MIMEВешнема' ),
- 'Unwatchedpages' => array( 'ВанÑтнемавтомоЛопат' ),
- 'Revisiondelete' => array( 'ЛиÑкÑтомтоманьÐардамо' ),
+ 'Unusedcategories' => array( 'ТевÑÐÐолдавицÑКатегориÑÑ‚' ),
+ 'Unusedimages' => array( 'ТевÑÐÐолдавицÑÐртовкÑÑ‚' ),
'Unusedtemplates' => array( 'ТевÑÐпакÐолдаЛопаПарцунт' ),
- 'Mypage' => array( 'МоньЛопам' ),
- 'Mytalk' => array( 'МоньКортамом' ),
- 'Mycontributions' => array( 'МонМезеТеинь' ),
- 'Popularpages' => array( 'ЛиÑийСовийМартоЛопат' ),
- 'Search' => array( 'ВешнемÑ' ),
- 'Resetpass' => array( 'СовамоВалоньПолавтома' ),
- 'Filepath' => array( 'ФайланьКи' ),
- 'Blankpage' => array( 'ЧавоЛопа' ),
+ 'Unwatchedpages' => array( 'ВанÑтнемавтомоЛопат' ),
+ 'Upload' => array( 'ÐвкÑтамо' ),
+ 'Userlogin' => array( 'ТеицÑСовамо' ),
+ 'Userlogout' => array( 'ТеицÑЛиÑема' ),
+ 'Userrights' => array( 'ТеицÑньВидечыть' ),
+ 'Version' => array( 'ВерÑиÑ' ),
+ 'Wantedcategories' => array( 'ВешезьКатегориÑÑ‚' ),
+ 'Wantedfiles' => array( 'ВешезьФайлат' ),
+ 'Wantedpages' => array( 'ВешезьЛопат' ),
+ 'Wantedtemplates' => array( 'ВешезьЛопапарцунт' ),
+ 'Watchlist' => array( 'ВанÑтнемаКерькÑ' ),
+ 'Whatlinkshere' => array( 'ТезÑньКодамтСюлмавомаПеть' ),
);
$magicWords = array(
@@ -211,8 +211,8 @@ $messages = array(
'tog-enotifrevealaddr' => 'Ð¨Ñ‚Ð°Ð²Ñ‚Ð¾Ð¼Ñ Ðµ-Ñёрмань адреÑÑм ÑволÑвтомань ÑёрмадовкÑтнÑÑÑ',
'tog-shownumberswatching' => 'ÐÐµÐ²Ñ‚ÐµÐ¼Ñ Ð·Ñро теицÑтнеде, конат аравтызь лопанть ÑÑеÑÑ‚ ванома лемриÑьментень',
'tog-fancysig' => 'ЛемпутовкÑоÑÑŒ прок викитекÑÑ‚ (ÑонÑÑŒ Ñ‚ÐµÐµÐ²Ð¸Ñ†Ñ Ñюлмавома певтеме)',
-'tog-externaleditor' => 'ÐÐ¾Ð»Ð´Ð°Ð¼Ñ Ñ‚ÐµÐ²Ñ ÑƒÑˆÐ¾Ñ‘Ð½Ð¾Ð½ÑŒ витнемканть, зÑÑ€Ñ Ð»Ð¸ÑÐºÑ Ð°Ð¿Ð°Ðº аравто (анÑÑк тевень Ñодыйтненень, арÑий машинаÑот ÑÑ€Ñвить башка ёнкÑÑ‚-аравтомат [http://www.mediawiki.org/wiki/Manual:External_editors подробнее])',
-'tog-externaldiff' => 'ÐÐ¾Ð»Ð´Ð°Ð¼Ñ Ñ‚ÐµÐ²Ñ ÑƒÑˆÐ¾Ñ‘Ð½Ð¾Ð½ÑŒ diff, зÑÑ€Ñ Ð»Ð¸ÑÐºÑ Ð°Ð¿Ð°Ðº аравто (анÑÑк тевень Ñодыйтненень, арÑий машинаÑот ÑÑ€Ñвить башка ёнкÑÑ‚-аравтомат [http://www.mediawiki.org/wiki/Manual:External_editors подробнее])',
+'tog-externaleditor' => 'ÐÐ¾Ð»Ð´Ð°Ð¼Ñ Ñ‚ÐµÐ²Ñ ÑƒÑˆÐ¾Ñ‘Ð½Ð¾Ð½ÑŒ витнемканть, зÑÑ€Ñ Ð»Ð¸ÑÐºÑ Ð°Ð¿Ð°Ðº аравто (анÑÑк тевень Ñодыйтненень, арÑий машинаÑот ÑÑ€Ñвить башка ёнкÑÑ‚-аравтомат [//www.mediawiki.org/wiki/Manual:External_editors подробнее])',
+'tog-externaldiff' => 'ÐÐ¾Ð»Ð´Ð°Ð¼Ñ Ñ‚ÐµÐ²Ñ ÑƒÑˆÐ¾Ñ‘Ð½Ð¾Ð½ÑŒ diff, зÑÑ€Ñ Ð»Ð¸ÑÐºÑ Ð°Ð¿Ð°Ðº аравто (анÑÑк тевень Ñодыйтненень, арÑий машинаÑот ÑÑ€Ñвить башка ёнкÑÑ‚-аравтомат [//www.mediawiki.org/wiki/Manual:External_editors подробнее])',
'tog-showjumplinks' => 'ÐœÐµÑ€ÐµÐ¼Ñ "тёкадемÑ" малаÑпонгомань ÑюлмавомапетнеÑ',
'tog-uselivepreview' => 'МакÑÐ¾Ð¼Ñ ÑÑ€Ñй ваÑнÑнь Ð½ÐµÐ²Ñ‚ÐµÐ²ÐºÑ (JavaScript) (Варчамонь)',
'tog-forceeditsummary' => 'Ðевтик монень, мезе ÑÑ‘Ñ€Ð¼Ð°Ð´Ð¾Ð¼Ñ Ð²Ð¸Ñ‚Ð½ÐµÐ¼Ð°Ð´Ð¾-петнемадо ёвтамонь вальминентень',
@@ -308,8 +308,6 @@ $messages = array(
'index-category' => 'Ð˜Ð½Ð´ÐµÐºÑ Ð¼Ð°Ñ€Ñ‚Ð¾ лопатне',
'noindex-category' => 'ИндекÑÑ‚Ñме лопатне',
-'mainpagetext' => "'''МедиÑВикинь Ñ‚ÐµÐ²Ñ Ð°Ñ€Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ð·Ð¾ парÑте лиÑÑÑŒ.'''",
-
'about' => 'ЭÑтедензÑ',
'article' => 'ПотмокÑлопа',
'newwindow' => '(панжови од вальмаÑо)',
@@ -359,10 +357,10 @@ $messages = array(
'history' => 'Лопань полавтнемат - витнемат',
'history_short' => 'ПутовкÑонзо-йуронзо',
'updatedmarker' => 'меельÑеде Ñакшномадот мейле полавтовÑÑŒ',
-'info_short' => 'Мезе ÑодамÑ',
'printableversion' => 'Ð›Ð¸Ð²Ñ‚ÐµÐ²Ð¸Ñ†Ñ Ð²ÐµÑ€ÑиÑ',
'permalink' => 'Ð¡Ð²Ð°Ð»ÑˆÐºÐ°Ñ Ñюлмавомапе',
'print' => 'ÐолдамÑ',
+'view' => 'Ванома потмо',
'edit' => 'Витнеме-петнеме',
'create' => 'Тейть-шкак',
'editthispage' => 'ВитнемÑ-Ð¿ÐµÑ‚Ð½ÐµÐ¼Ñ Ñ‚Ðµ лопанть',
@@ -446,6 +444,8 @@ $messages = array(
'toc' => 'ПотмокÑ',
'showtoc' => 'невтемÑ',
'hidetoc' => 'кекшемÑ',
+'collapsible-collapse' => 'ВишкалгавтомÑ',
+'collapsible-expand' => 'КелейгавтомÑ',
'thisisdeleted' => '$1-нть Ð²Ð°Ð½Ð¾Ð¼Ñ Ñли велÑÐ²Ñ‚Ð¾Ð¼Ñ Ð¼ÐµÐºÐµÐ²?',
'viewdeleted' => 'Ð’Ð°Ð½Ð½Ð¾Ð¼Ñ $1?',
'restorelink' => '{{PLURAL:$1|нардазь вейке витнема-петнема|нардазь $1 витнемат-петнемат}}',
@@ -538,6 +538,7 @@ $messages = array(
'createaccount' => 'Ð¢ÐµÐµÐ¼Ñ Ñ‚ÐµÐ¸Ñ†Ñнь од лопа',
'gotaccount' => "Совамотаркат ули? '''$1'''.",
'gotaccountlink' => 'СовамÑ',
+'userlogin-resetlink' => 'Совамо ÑÑ€ÑвикÑтнÑнь Ñтувтыть?',
'createaccountmail' => 'е-ÑёрмаÑо',
'createaccountreason' => 'ТувталоÑÑŒ:',
'badretype' => 'Сёрмадыть Ñалава валот кавкÑÑ‚ÑŒ: Ñынь аволь вейкеть.',
@@ -554,7 +555,7 @@ $messages = array(
'loginsuccess' => "'''Тон Ñовить {{SITENAME}}-Ñ ÐºÐ¾Ð´Ð° \"\$1\".'''",
'nosuchuser' => '$1 лем марто Ñ‚ÐµÐ¸Ñ†Ñ Ð°Ñ€Ð°ÑÑŒ.
Ð¢ÐµÐ¸Ñ†Ñ Ð»ÐµÐ¼Ñ‚Ð½Ðµ Ñвозь тень корÑÑÑŒ вишка Ñли покш тештинеÑÑ Ñёрмадозь. Ваннык видеÑÑ‚Ñ - а видеÑÑ‚Ñ Ñёрмадык, Ñли [[Special:UserLogin/signup|тейть-шкак од Ñовамо тарка]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" лемÑÑ Ñ‚ÐµÐ¸Ñ†Ñ Ð°Ñ€Ð°ÑÑŒ. Варштака, кизды, аволь иÑÑ‚Ñ Ñёрмадозь.',
+'nosuchusershort' => '"$1" лемÑÑ Ñ‚ÐµÐ¸Ñ†Ñ Ð°Ñ€Ð°ÑÑŒ. Варштака, кизды, аволь иÑÑ‚Ñ Ñёрмадозь.',
'nouserspecified' => 'ТеицÑнь лем ÑÑ€Ñви.',
'login-userblocked' => 'Те теицÑÑÑŒ аравтозь ÑаймаÑ. Совамонзо а мерить.',
'wrongpassword' => 'Ðволь иÑÑ‚Ñ Ñёрмадык Ñовамо валот. Варчыка одов.',
@@ -585,7 +586,7 @@ $messages = array(
'accountcreatedtext' => '$1-нь ÑовицÑнь таркаÑÑŒ теевÑÑŒ-шкавÑÑŒ.',
'loginlanguagelabel' => 'Кель: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ÐŸÐ¾Ð»Ð°Ð²Ñ‚Ð¾Ð¼Ñ Ñовамо валот',
'resetpass_header' => 'ÐŸÐ¾Ð»Ð°Ð²Ñ‚Ð¾Ð¼Ñ Ñовамо валот',
'oldpassword' => 'Ташто Ñовамо валот:',
@@ -598,6 +599,14 @@ $messages = array(
'resetpass-submit-cancel' => 'Ð¡Ð°ÐµÐ¼Ñ Ð¼ÐµÐºÐµÐ²',
'resetpass-temp-password' => 'Ркуватень Ñовамо валоÑÑŒ:',
+# Special:PasswordReset
+'passwordreset' => 'Совамо валонь лиÑлгавтома',
+'passwordreset-legend' => 'Полавтык Ñовамо валонть',
+'passwordreset-username' => 'Ð¢ÐµÐ¸Ñ†Ñ Ð»ÐµÐ¼ÐµÑ‚ÑŒ:',
+'passwordreset-email' => 'Е-Ñёрмапаргот:',
+'passwordreset-emailelement' => 'ТеицÑнь леметь: $1
+Ðурькине шкань Ñалававалот: $2',
+
# Edit page toolbar
'bold_sample' => 'Эчке текÑÑ‚',
'bold_tip' => 'Эчке текÑÑ‚',
@@ -609,8 +618,6 @@ $messages = array(
'extlink_tip' => 'Ушо ёнкÑонь ÑÑŽÐ»Ð¼Ð°Ð²ÐºÑ / налтке (мельÑÑ ÐºÐ¸Ñ€Ð´Ð¸Ñ‚ÑŒ http:// путовкÑонть)',
'headline_sample' => 'КонÑкÑÑонть текÑÑ‚ÑÑÑŒ',
'headline_tip' => 'Омбоце ÑÑкелькÑÑнь конÑкÑ',
-'math_sample' => 'Ð¡Ð¾Ð²Ð°Ð²Ñ‚Ð¾Ð¼Ñ Ñ‚ÐµÐ·Ñнь хвормула',
-'math_tip' => 'Математикань хвормула (LaTeX)',
'nowiki_sample' => 'Ð¡Ð¾Ð²Ð°Ð²Ñ‚Ð¾Ð¼Ñ Ñ…Ð²Ð¾Ñ€Ð¼Ð°Ñ‚Ñ‚Ð¾Ð¼Ð¾ текÑÑ‚ тезÑнь',
'nowiki_tip' => 'Wiki -нь поладомантень-витнемантень мель апак Ñво',
'image_sample' => 'Саемга.jpg',
@@ -878,8 +885,8 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'changepassword' => 'Салавань валонь полавтома',
'prefs-skin' => 'Ðеемань ладÑема',
'skin-preview' => 'ВаÑнÑнь неевтезÑ',
-'prefs-math' => 'Математика',
'datedefault' => 'Ð˜ÐºÐµÐ»ÑŒÐºÑ Ð²ÐµÑˆÐµÐ¼Ð° араÑÑŒ',
+'prefs-beta' => 'Бета ёнкÑÑ‚-мезть',
'prefs-datetime' => 'Чи ды шка',
'prefs-personal' => 'ТеицÑдо',
'prefs-rc' => 'Чиень полавтнемат',
@@ -898,7 +905,6 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'columns' => 'Палманть:',
'searchresultshead' => 'ВешнÑма',
'resultsperpage' => 'ЗÑрокÑÑ‚ÑŒ ваÑтневи ве лопаÑо:',
-'contextlines' => 'ЗÑро риÑьметь Ñрьва муевкÑÑÑ:',
'recentchangesdays-max' => '(макÑимумоÑÑŒ $1 {{PLURAL:$1|чи|чить}})',
'timezonelegend' => 'Шкань зонаÑÑŒ:',
'localtime' => 'ТеицÑнь шкаÑÑŒ:',
@@ -1361,29 +1367,28 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'listgrouprights-removegroup-all' => 'ВеÑе куротнень нардамÑ',
# E-mail user
-'mailnologin' => 'ÐšÑƒÑ‡Ð¾Ð¼Ñ Ñёрма парго араÑÑŒ',
-'emailuser' => 'ÐšÑƒÑ‡Ð¾Ð¼Ñ Ðµ-Ñёрма те теицÑнтень',
-'emailpage' => 'Кучт Ñ-Ñёрма теицÑнтень',
-'defemailsubject' => '{{SITENAME}} е-Ñёрма',
-'noemailtitle' => 'Е-Ñёрма парго араÑÑŒ',
-'emailfrom' => 'Кинь пельде:',
-'emailto' => 'Кинень:',
-'emailsubject' => 'Мезде:',
-'emailmessage' => 'ПачтÑмнÑ:',
-'emailsend' => 'КучомÑ',
-'emailccme' => 'Кучок монень е-Ñёрмам копиÑнзо.',
-'emailsent' => 'Е-Ñёрма кучозь',
-'emailsenttext' => 'Е-ÑёрмаÑо пачтÑмнÑÑ‚ÑŒ кучовÑÑŒ.',
+'mailnologin' => 'ÐšÑƒÑ‡Ð¾Ð¼Ñ Ñёрма парго араÑÑŒ',
+'emailuser' => 'ÐšÑƒÑ‡Ð¾Ð¼Ñ Ðµ-Ñёрма те теицÑнтень',
+'emailpage' => 'Кучт Ñ-Ñёрма теицÑнтень',
+'defemailsubject' => '{{SITENAME}} е-Ñёрма',
+'noemailtitle' => 'Е-Ñёрма парго араÑÑŒ',
+'emailusernamesubmit' => 'МакÑомÑ',
+'emailfrom' => 'Кинь пельде:',
+'emailto' => 'Кинень:',
+'emailsubject' => 'Мезде:',
+'emailmessage' => 'ПачтÑмнÑ:',
+'emailsend' => 'КучомÑ',
+'emailccme' => 'Кучок монень е-Ñёрмам копиÑнзо.',
+'emailsent' => 'Е-Ñёрма кучозь',
+'emailsenttext' => 'Е-ÑёрмаÑо пачтÑмнÑÑ‚ÑŒ кучовÑÑŒ.',
# Watchlist
'watchlist' => 'Мезе мельга мон ванÑтнÑн',
'mywatchlist' => 'Мезе мельга мон ванÑтнÑн',
'watchlistfor2' => '$1-нь туртов $2',
'watchnologin' => 'Ðпак Ñова',
-'addedwatch' => 'Топавтозь ванома потмокÑоньте',
'addedwatchtext' => 'ЛопаÑÑŒ «[[:$1]]» Ñовавтозь [[Special:Watchlist|ванома потмозот]].
Седе тов те лопаÑонть ды мартонзо Ñюлмавозь кортнема лопаÑонть теезь витьнематне тешкÑтавтовить те потмонтень, иÑÑ‚Ñжо кармить кикÑтазь те лопаÑонть[[Special:RecentChanges|потмо од витнематне]], иÑÑ‚Ñ Ñеде шождаÑто Ñынь неÑвить.',
-'removedwatch' => 'Ðардазь ванома потмокÑтонть',
'removedwatchtext' => '«[[:$1]]» лопаÑÑŒ нардавÑÑŒ [[Special:Watchlist|ванома потмокÑÑтот]].',
'watch' => 'ВанÑтнемÑ',
'watchthispage' => 'ВанÑÑ‚Ð½ÐµÐ¼Ñ Ñ‚Ðµ лопа мельга',
@@ -1419,7 +1424,7 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
ИнеÑькеть, кемекÑтык, ÑÑеть мелеть корÑÑ Ñ‚ÐµÐ½ÑŒ тейÑак, Ð°Ð»ÐºÑƒÐºÑ Ñодат, мезе лиÑды теде мейле, ды Ð°Ð»ÐºÑƒÐºÑ Ñ‚ÐµÑÑ‚ тень видечинть (правилатьнень) корÑÑ, конат Ñёрмадозь [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Тевень теемаÑÑŒ топавтовÑÑŒ',
'actionfailed' => 'Тев теемаÑÑŒ Ñзь лиÑе',
-'deletedtext' => '"<nowiki>$1</nowiki>"-ÑÑŒ ульнеÑÑŒ нардазь.
+'deletedtext' => '"$1"-ÑÑŒ ульнеÑÑŒ нардазь.
Вант $2 тоÑо веÑи уаль умоконь нардавкÑне.',
'deletedarticle' => 'нардазь "[[$1]]"',
'dellogpage' => 'Ðардазде мезе йовтамÑ',
@@ -1451,7 +1456,7 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'protectexpiry' => 'ПрÑдови:',
'protect_expiry_invalid' => 'ПрÑдома шкаÑÑŒ ашти ютань шкаÑо.',
'protect_expiry_old' => 'ПрÑдома шкаÑÑŒ амаштовикÑ.',
-'protect-text' => "ТеÑÑ Ñ‚Ñ‹Ð½ÑŒ ванÑынк ды лиÑкÑтомÑынк ванÑтоманть покшолманзо лопаньте '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "ТеÑÑ Ñ‚Ñ‹Ð½ÑŒ ванÑынк ды лиÑкÑтомÑынк ванÑтоманть покшолманзо лопаньте '''$1'''.",
'protect-locked-access' => "КирдицÑнь Ñовамо таркат а макÑÑ‹ видечи лиÑкÑÑ‚Ð¾Ð¼Ñ‚Ð¾Ð¼Ñ Ð»Ð¾Ð¿Ð°Ð½Ñ‚ÑŒ ванÑтома лувонзо. ТеÑÑ Ð²Ð°Ð½Ð° лопанть ÑƒÐ»Ð¸ÐºÑ Ð¿ÑƒÑ‚Ð¾Ð²ÐºÑонзо-аравтоманзо '''$1''':",
'protect-cascadeon' => 'Те лопаÑÑŒ ванÑтозь, Ñон путозь {{PLURAL:$1|невтезезь ало лопаньте, конаньте|невтезезь ало лопатьнене конатьнене}}-те путозь каÑкадонь ванÑтомаÑÑŒ. Тынь лиÑкÑтавÑынк те ванÑтома ÑÑренть, анÑÑк те кодаÑк а полавÑÑ‹ каÑкадонь ванÑтоманть.',
'protect-default' => 'ВеÑе теицÑтненень маштови',
@@ -1547,10 +1552,11 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'whatlinkshere-filters' => 'Фильтрат',
# Block/unblock
+'block' => 'ÐÑ€Ð°Ð²Ñ‚Ð¾Ð¼Ñ Ñ‚ÐµÐ¸Ñ†Ñнть ÑаймаÑ',
+'unblock' => 'ÐÐ¾Ð»Ð´Ð°Ð¼Ñ Ñ‚ÐµÐ¸Ñ†Ñнть ÑаймаÑто',
'blockip' => 'ÐÑ€Ð°Ð²Ñ‚Ð¾Ð¼Ñ Ñ‚ÐµÐ¸Ñ†Ñнть ÑаймаÑ',
'blockip-title' => 'ÐÑ€Ð°Ð²Ñ‚Ð¾Ð¼Ñ Ñ‚ÐµÐ¸Ñ†Ñнть ÑаймаÑ',
'blockip-legend' => 'ÐÑ€Ð°Ð²Ñ‚Ð¾Ð¼Ñ Ñ‚ÐµÐ¸Ñ†Ñнть ÑаймаÑ',
-'ipaddress' => 'IP адреÑ:',
'ipadressorusername' => 'IP Ð°Ð´Ñ€ÐµÑ Ñли теицÑнь лем:',
'ipbexpiry' => 'Таштомома шказо:',
'ipbreason' => 'ТувталоÑÑŒ:',
@@ -1570,7 +1576,9 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'ipusubmit' => 'ÐÐ°Ñ€Ð´Ð°Ð¼Ñ Ñ‚Ðµ ÑÐ°Ð¹Ð¼Ð°Ñ Ð°Ñ€Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ð½Ñ‚ÑŒ',
'ipblocklist' => 'Ð¡Ð°Ð¹Ð¼ÐµÑ Ñаень теицÑÑ‚',
'ipblocklist-legend' => 'Ð’ÐµÑˆÐ½ÐµÐ¼Ñ ÑÐ°Ð¹Ð¼Ð°Ñ Ñаезь теицÑ',
-'ipblocklist-username' => 'СовицÑнть Ð»ÐµÐ¼ÐµÐ·Ñ Ñли IP адреÑÑзÑ:',
+'blocklist-target' => 'Ðоровамо тарка',
+'blocklist-expiry' => 'ПрÑдови',
+'blocklist-reason' => 'Тувтал',
'ipblocklist-submit' => 'ВешнÑме',
'infiniteblock' => 'певтеме',
'expiringblock' => 'ÑÐ°Ð¹Ð¼Ð°Ñ ÑаемаÑÑŒ прÑдови $1 $2 цÑÑÑто',
@@ -1775,10 +1783,12 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'spambot_username' => 'MediaWiki-нь шукшто ванькÑкавтома',
# Info page
-'infosubtitle' => 'Лопанть информациÑнзо',
-'numedits' => 'ЗÑрокÑÑ‚ÑŒ витнезь-петнезь (лопа): $1',
-'numtalkedits' => 'ЗÑрокÑÑ‚ÑŒ витнезь-петнезь (кортнема лопа): $1',
-'numwatchers' => 'ЗÑро ванÑтнить тень мельга: $1',
+'pageinfo-header-views' => 'Ванома потмот',
+'pageinfo-subjectpage' => 'Лопа',
+'pageinfo-talkpage' => 'Кортнема лопа',
+'pageinfo-edits' => 'ЗÑрокÑÑ‚ÑŒ витнезь-петнезь',
+'pageinfo-authors' => 'ЗÑро авторонзо',
+'pageinfo-views' => 'ЗÑро ванома потмонзо',
# Skin names
'skinname-standard' => 'КлаÑÑикань',
@@ -1787,20 +1797,6 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'skinname-simple' => 'Шожда',
'skinname-modern' => 'ÐееньШкань',
-# Math options
-'mw_math_simple' => 'HTML зÑрдо вельть шожда, лиÑÐºÑ PNG',
-'mw_math_html' => 'HTML, те тееви, теик, лиÑÐºÑ PNG',
-'mw_math_source' => 'Кадык TeX хорматÑо (текÑÑ‚ вальмаÑ)',
-'mw_math_modern' => 'ÐрьÑезь неень шкань Ñодый машинань вальмаÑ',
-'mw_math_mathml' => 'MathML коÑо ули кода (варчамонь)',
-
-# Math errors
-'math_failure' => 'Рловнови',
-'math_unknown_error' => 'апак Ñодань ильведькÑ',
-'math_unknown_function' => 'апак Ñодань функциÑ',
-'math_lexing_error' => 'лекÑиконь манÑвкÑ',
-'math_syntax_error' => 'ÑинтакÑонь ильведевкÑ',
-
# Patrolling
'markaspatrolleddiff' => 'ТешкÑÑ‚Ð°Ð¼Ñ Ð²Ð°Ð½Ñтнемань ютазекÑ',
'markaspatrolledtext' => 'ТешкÑÑ‚Ð°Ð¼Ñ Ñ‚Ðµ лопанть ванÑтнемань ютазекÑ',
@@ -1827,7 +1823,6 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'file-nohires' => '<small>ÐраÑÑŒ верÑÐ¸Ñ Ð¿Ð¾ÐºÑˆ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¼Ð°Ñ€Ñ‚Ð¾.</small>',
'svg-long-desc' => 'SVG файла, $1 × $2 пикÑельть, файланть покшолмазо: $3',
'show-big-image' => 'ПешкÑе теевкÑеÑÑŒ',
-'show-big-image-thumb' => '<small>ВаÑнÑнь невтевкÑÑнть покшолмазо: $1 × $2 пикÑÑлт</small>',
'file-info-gif-looped' => 'кирькÑÑÑ Ð°Ñ€Ð°Ð²Ñ‚Ð¾Ð·ÑŒ',
'file-info-png-looped' => 'кирькÑÑÑ Ð°Ñ€Ð°Ð²Ñ‚Ð¾Ð·ÑŒ',
@@ -1850,14 +1845,21 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'metadata-help' => 'Те файлаÑонть Ð¿Ð¾Ð»Ð°Ð´ÐºÑ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ, кона, парÑк, ÑаевÑÑŒ цифровой камераÑтонть Ñли ÑулеймашинаÑтонть (ÑкенерÑÑ‚Ñнть), зÑдро файлаÑÑŒ теезель цифровой лувÑ. Бути Ñон оригиналонть ÑйÑÑ‚Ñ Ð»Ð¸ÑкÑтомтозь, парÑк аволь веÑе ёнкÑÑ‚Ð½Ñ Ð²Ð°Ð½ÑтовÑÑ‚ÑŒ; фото-артовкÑтнÑÑÑ Ñ€ÐµÐ´Ñвить аÑатыкÑÑ‚.',
'metadata-expand' => 'ÐÐµÐ²Ñ‚ÐµÐ¼Ñ Ñ‚Ð¾Ð¿Ð°Ð²Ñ‚Ð¾Ð·ÑŒ даннойтнень',
'metadata-collapse' => 'ПекÑтынк келейкÑтазь детальтнень.',
-'metadata-fields' => 'Матадань пакÑÑтьне, конататьне ловозь те потмоÑонть, кармить невтезь артома лопаÑонть а Ñёпазь, лиÑтне кармить кекшезезь.
+'metadata-fields' => 'Те ÑёрминеÑÑ Ð¼Ð°ÐºÑозь артовкÑметадатань уминетне Ñовавтовить артовкÑлопань невтемапотмоÑ, зÑрдо метадата таблицаÑÑŒ кекшезь-вишкалгавтозь.
+ЛиÑтне, апак кевкÑтне, кармить улеме кекшезь.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Келе',
@@ -1869,7 +1871,6 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'exif-planarconfiguration' => 'МакÑовкÑонь аравтнема',
'exif-xresolution' => 'ГоризонтальÑÑ ÑеедезÑ',
'exif-yresolution' => 'ВертикальÑÑ ÑеедезÑ',
-'exif-transferfunction' => 'Печтевтемань функциÑ',
'exif-referenceblackwhite' => 'Раужот-ашот кавто корÑмо точкат',
'exif-imagedescription' => 'ÐртовкÑонть конÑкÑозо',
'exif-software' => 'Ð¢ÐµÐ²Ñ Ð½Ð¾Ð»Ð´Ð°Ð·ÑŒ программатне',
@@ -1886,7 +1887,6 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'exif-flash' => 'Кивчкадема',
'exif-subjectarea' => 'Субъектонть Ñаема тарказо',
'exif-filesource' => 'Файланть Ñаемазо',
-'exif-cfapattern' => 'CFA парцун',
'exif-contrast' => 'КонтраÑтоÑÑŒ',
'exif-saturation' => 'ТуÑтолмазо',
'exif-sharpness' => 'ПштикÑчизÑ',
@@ -1903,7 +1903,14 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'exif-gpsdestlatitude' => 'Ðоровамо тарканть келелмазо',
'exif-gpsdestlongitude' => 'Ðоровамо тарканть кувалмозо',
'exif-gpsdatestamp' => 'GPS чи',
+'exif-countrydest' => 'Ðевтезь маÑтороÑÑŒ',
+'exif-citydest' => 'Ðевтезь ошоÑÑŒ',
'exif-objectname' => 'ÐурькинеÑÑ‚Ñ Ð»ÐµÐ¼ÐµÐ·Ñ',
+'exif-headline' => 'КонÑкÑозо',
+'exif-source' => 'ЛиÑьмапрÑзо',
+'exif-writer' => 'СёрмадыцÑзо',
+'exif-languagecode' => 'Кель',
+'exif-iimcategory' => 'ЯвовкÑ',
# EXIF attributes
'exif-compression-1' => 'Ðпак Ñювордо',
@@ -2002,21 +2009,44 @@ IP-тешкÑÑ‚ÑÑ‚ÑŒ — $3, ÑÐ°Ð¹Ð¼Ð°Ñ Ñовавтоманть ID-ÑÑŒ —
'exif-gpsspeed-m' => 'Милат цÑÑозонзо',
'exif-gpsspeed-n' => 'Сюлмот цÑÑозонзо',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Вайгельпеть',
+'exif-gpsdestdistance-m' => 'Майлатне',
+'exif-gpsdestdistance-n' => 'Иневедень майлатне',
+
+'exif-gpsdop-excellent' => 'Эень паро ($1)',
+'exif-gpsdop-good' => 'Паро ($1)',
+'exif-gpsdop-moderate' => 'РберÑнь ($1)',
+
+'exif-objectcycle-a' => 'ÐнÑÑк валÑке марто',
+'exif-objectcycle-p' => 'ÐнÑÑк чокшнÑ',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'ÐлкукÑонь йонкÑ',
'exif-gpsdirection-m' => 'МагнитÑнь йонкÑ',
+'exif-dc-publisher' => 'ÐолдыцÑзо',
+'exif-dc-rights' => 'ВидечидензÑ',
+'exif-dc-source' => 'Медианть лиÑьмапрÑзо',
+
+'exif-iimcategory-hth' => 'Шумбрачи',
+'exif-iimcategory-pol' => 'Политика',
+'exif-iimcategory-rel' => 'Кемемат-озномат',
+'exif-iimcategory-wea' => 'Вармат-пиземеть',
+
+'exif-urgency-normal' => 'Куншка видень ($1)',
+'exif-urgency-low' => 'Ðламо ($1)',
+'exif-urgency-high' => 'Ламо ($1)',
+
# External editor support
'edit-externally' => 'ВитнемÑ-Ð¿ÐµÑ‚Ð½ÐµÐ¼Ñ Ñ‚Ðµ файланть, Ñ‚ÐµÐ²Ñ Ð½Ð¾Ð»Ð´Ð°Ð·ÑŒ ушо ёнкÑонь программанть',
-'edit-externally-help' => '(Вант [http://www.mediawiki.org/wiki/Manual:External_editors аравтома инÑтрукциÑтнень] Ñеде ламо информациÑнть киÑ.)',
+'edit-externally-help' => '(Вант [//www.mediawiki.org/wiki/Manual:External_editors аравтома инÑтрукциÑтнень] Ñеде ламо информациÑнть киÑ.)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'веÑе',
-'imagelistall' => 'веÑе',
-'watchlistall2' => 'веÑе',
-'namespacesall' => 'веÑе',
-'monthsall' => 'веÑе',
-'limitall' => 'веÑе',
+'watchlistall2' => 'веÑе',
+'namespacesall' => 'веÑе',
+'monthsall' => 'веÑе',
+'limitall' => 'веÑе',
# E-mail address confirmation
'confirmemail' => 'КемекÑÑ‚Ð°Ð¼Ñ Ðµ-почтань Ñёрмапаргот',
diff --git a/languages/messages/MessagesMzn.php b/languages/messages/MessagesMzn.php
index 0b6aae77..a8913e45 100644
--- a/languages/messages/MessagesMzn.php
+++ b/languages/messages/MessagesMzn.php
@@ -21,12 +21,6 @@ $linkPrefixExtension = true;
$fallback8bitEncoding = 'windows-1256';
$rtl = true;
-$defaultUserOptionOverrides = array(
- # Swap sidebar to right side by default
- 'quickbar' => 2,
- # Underlines seriously harm legibility. Force off:
- 'underline' => 0,
-);
$namespaceNames = array(
NS_MEDIA => 'مه‌دیا',
@@ -199,6 +193,7 @@ $messages = array(
'listingcontinuesabbrev' => '(دمباله)',
'index-category' => 'صÙحه‌ئون نمایه بَیی',
'noindex-category' => 'صÙحه‌ئون نمایه نَیی',
+'broken-file-category' => 'صÙحه‌ئونی Ú©Ù‡ اتا عکس اسا وشون سر دنی‌یه',
'about' => 'درباره',
'article' => 'صÙحه‌ی بنویشته‌ئون',
@@ -250,10 +245,10 @@ $messages = array(
'history' => 'صÙحه‌ی تاریخچه',
'history_short' => 'تاریخچه',
'updatedmarker' => 'عوض بَیی پس از آخرین بار که بی‌یمومه',
-'info_short' => 'اطیلاعات',
'printableversion' => 'پرینت‌هاکردنی صÙحه',
'permalink' => 'بموندستنی لینک',
'print' => 'پرینت',
+'view' => 'نمایش',
'edit' => 'دچی‌ین',
'create' => 'بساتن',
'editthispage' => 'این صÙحه ره دچی‌ین',
@@ -261,6 +256,7 @@ $messages = array(
'delete' => 'پاک هاکردن',
'deletethispage' => 'این صÙحه ره پاک هاکردن',
'undelete_short' => 'احیای {{PLURAL:$1|ات دچی‌یه|$1 دچی‌یه}}',
+'viewdeleted_short' => 'نمایش {{PLURAL:$1|اتا دچی‌یه حذ٠بَیی|$1 دچی‌یه حذ٠بَیی}}',
'protect' => 'زلÙÙ† بزوئن',
'protect_change' => 'دگاردنی‌ین',
'protectthispage' => 'این صÙحه ره زلÙÙ† بزن',
@@ -340,6 +336,8 @@ $2، $1',
'toc' => 'دله',
'showtoc' => 'نشون هاده',
'hidetoc' => 'Ùرو بور',
+'collapsible-collapse' => 'دوستن',
+'collapsible-expand' => 'گت هاکردن',
'thisisdeleted' => 'نیمایش یا دÙباره دربیاردن٠$1ØŸ',
'viewdeleted' => 'نمایش $1؟',
'restorelink' => '{{PLURAL:$1|$1|$1}} دچی‌ین پاک بیّه',
@@ -351,6 +349,8 @@ $2، $1',
'page-rss-feed' => '"$1" RSS خه‌راک',
'page-atom-feed' => '"$1" Atom خه‌راک',
'red-link-title' => '$1 (این صÙحه دَنی‌یه)',
+'sort-descending' => 'مرتب‌ساجی نزولی',
+'sort-ascending' => 'مرتب‌ساجی صعودی',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'صÙحه',
@@ -463,7 +463,7 @@ $2، $1',
'accountcreated' => 'کاروری نوم دÙرÙس بیّه',
'accountcreatedtext' => 'کاروری نوم، $1 بساته بیّه.',
-# Password reset dialog
+# Change password dialog
'newpassword' => 'نو پسورد:',
# Edit page toolbar
@@ -477,8 +477,6 @@ $2، $1',
'extlink_tip' => 'بیرون بگردستن (پیشوند http://‎ ره یادنکانین)',
'headline_sample' => 'متن عنوان',
'headline_tip' => 'عنوان بند ۲',
-'math_sample' => 'Ùورمـول ره ایجـه دأکـه‌ن',
-'math_tip' => 'ریاضی Ùورمول',
'nowiki_sample' => 'شه بی Ùورمت بنویشته ره اینجه دکانین',
'nowiki_tip' => 'Ùورمت سر چش ره کوریک بَیره',
'media_tip' => 'Ùایل لینک',
diff --git a/languages/messages/MessagesNah.php b/languages/messages/MessagesNah.php
index 805a52db..eda7a805 100644
--- a/languages/messages/MessagesNah.php
+++ b/languages/messages/MessagesNah.php
@@ -56,20 +56,20 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Userlogin' => array( 'Tlacalaquiliztli', 'Registrarse' ),
- 'Upload' => array( 'Quetza', 'Subir' ),
- 'Shortpages' => array( 'ZÄzaniltÅn', 'PáginasCortas' ),
- 'Longpages' => array( 'HuÄ“iyacZÄzaniltin', 'PáginasLargas' ),
- 'Newpages' => array( 'YancuÄ«cZÄzaniltin', 'PáginasNuevas' ),
- 'Ancientpages' => array( 'HuÄ“huehZÄzaniltin', 'PáginasViejas' ),
'Allpages' => array( 'MochÄ«ntÄ«nZÄzaniltin', 'TodasPáginas' ),
- 'Specialpages' => array( 'NÅncuahquÄ«zquiÄ€matl', 'PáginasEspeciales' ),
- 'Emailuser' => array( 'EmailTlÄcatl', 'CorreoUsuario' ),
+ 'Ancientpages' => array( 'HuÄ“huehZÄzaniltin', 'PáginasViejas' ),
'Categories' => array( 'NeneuhcÄyÅtl', 'Categorías' ),
+ 'Emailuser' => array( 'EmailTlÄcatl', 'CorreoUsuario' ),
+ 'Longpages' => array( 'HuÄ“iyacZÄzaniltin', 'PáginasLargas' ),
+ 'Mycontributions' => array( 'NotlahcuilÅl', 'MisContribuciones' ),
'Mypage' => array( 'NozÄzanil', 'MiPágina' ),
'Mytalk' => array( 'NotÄ“ixnÄmiquiliz', 'MiDiscusión' ),
- 'Mycontributions' => array( 'NotlahcuilÅl', 'MisContribuciones' ),
+ 'Newpages' => array( 'YancuÄ«cZÄzaniltin', 'PáginasNuevas' ),
'Search' => array( 'TlatÄ“mÅz', 'Buscar' ),
+ 'Shortpages' => array( 'ZÄzaniltÅn', 'PáginasCortas' ),
+ 'Specialpages' => array( 'NÅncuahquÄ«zquiÄ€matl', 'PáginasEspeciales' ),
+ 'Upload' => array( 'Quetza', 'Subir' ),
+ 'Userlogin' => array( 'Tlacalaquiliztli', 'Registrarse' ),
);
$messages = array(
@@ -185,8 +185,6 @@ $messages = array(
'category-file-count-limited' => '{{PLURAL:$1|Inìn tlâkuilòlèwalli kä|Inîkë $1 tlâkuilòlèwaltìn katêkë}} ìpan inìn tlaìxmatkàtlàlilòtl.',
'listingcontinuesabbrev' => 'niman',
-'mainpagetext' => "'''MediaHuiqui cualli ÅmotlahtlÄli.'''",
-
'about' => 'Ītechpa',
'article' => 'Tlâkuilòpilli',
'newwindow' => '(MotlapoÄz cÄ“ yancuÄ«c tlanexillÅtl)',
@@ -231,10 +229,10 @@ $messages = array(
'history' => 'tlahcuilÅlloh',
'history_short' => 'TlahcuilÅlloh',
'updatedmarker' => 'ÅmoyancuÄ«x Ä«huÄ«cpa xÅcoyÅc notlahpololiz',
-'info_short' => 'TlanÅnÅtzaliztli',
'printableversion' => 'TepoztlahcuilÅlli',
'permalink' => 'Mochipa tzonhuiliztli',
'print' => 'TictepoztlahcuilÅz',
+'view' => 'Mà má»ta',
'edit' => 'TicpatlÄz',
'create' => 'TicchÄ«huÄz',
'editthispage' => 'TicpatlÄz inÄ«n zÄzanilli',
@@ -242,6 +240,7 @@ $messages = array(
'delete' => 'TicpolÅz',
'deletethispage' => 'TicpolÅz inÄ«n zÄzanilli',
'undelete_short' => 'AhticpolÅz {{PLURAL:$1|cÄ“ tlapatlaliztli|$1 tlapatlaliztli}}',
+'viewdeleted_short' => 'Mà má»ta {{PLURAL:$1|se tlatlaìxpôpolòlli tlayèktlàlilistli|$1 tlatlaìxpôpolòltin tlayèktlàlilistin}}',
'protect' => 'Ticquīxtīz',
'protect_change' => 'ticpatlÄz',
'protectthispage' => 'TicquÄ«xtiÄz inÄ«n zÄzanilli',
@@ -313,6 +312,8 @@ $messages = array(
'toc' => 'InÄ«n tlahcuilÅlco',
'showtoc' => 'xiquitta',
'hidetoc' => 'tictlÄtÄ«z',
+'collapsible-collapse' => 'Motlàtìs',
+'collapsible-expand' => 'Monèxtìs',
'thisisdeleted' => '¿TiquittÄz nozo ahticpolÅz $1?',
'viewdeleted' => '¿Tiquiēlēhuia tiquitta $1?',
'restorelink' => '{{PLURAL:$1|cē tlapatlaliztli polotic|$1 tlapatlaliztli polotic}}',
@@ -409,7 +410,7 @@ TimitztlÄtlauhtiah xicpehpena occÄ“.',
'nosuchuser' => 'AyÄc tlatequitiltilÄ«lli motÅcÄitia "$1".
In tlatequitiltilÄ«ltÅcÄitl quimati in huÄ“yimachiyÅtlahtÅliztli.
Xiquitta in yÄ“quihcuilÅlli, ahnozo [[Special:UserLogin/signup|xicchÄ«hua yancuÄ«c cuenta]].',
-'nosuchusershort' => 'AyÄc tlatequitiltilÄ«lli motÅcÄitia "<nowiki>$1</nowiki>". Xiquitta in tlein Åtitlahcuiloh melÄhuacÄ cah.
+'nosuchusershort' => 'AyÄc tlatequitiltilÄ«lli motÅcÄitia "$1". Xiquitta in tlein Åtitlahcuiloh melÄhuacÄ cah.
Xiquitta moyÄ“quihcuilÅl.',
'nouserspecified' => 'MohuÄ«quilia tiquihtoa cualli tlatequitiltilÄ«ltÅcÄitl.',
'wrongpassword' => 'Ahcualli motlahtÅlichtacÄyo.
@@ -427,7 +428,7 @@ Occeppa xicalaqui niman ticmatīz.',
'createaccount-title' => 'Cuentah ītlachīhualiz ic {{SITENAME}}',
'loginlanguagelabel' => 'Tlâtòlli: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'TicpatlÄz motlahtÅlichtacÄyo',
'resetpass_header' => 'XicpatlÄz motlahtÅlichtacÄyo',
'oldpassword' => 'HuÄ“hueh motlahtÅlichtacayo:',
@@ -439,6 +440,9 @@ Occeppa xicalaqui niman ticmatīz.',
'resetpass-submit-loggedin' => 'TicpatlÄz motlahtÅlichtacÄyo',
'resetpass-submit-cancel' => 'TiccuepÄz',
+# Special:PasswordReset
+'passwordreset-username' => 'TlatequitiltilÄ«ltÅcÄitl:',
+
# Edit page toolbar
'bold_sample' => 'TlÄ«ltic tlahcuilÅlli',
'bold_tip' => 'TlÄ«ltic tlahcuilÅlli',
@@ -450,8 +454,6 @@ Occeppa xicalaqui niman ticmatīz.',
'extlink_tip' => 'TzonhuilizcallÄn (xitequitiltia http://)',
'headline_sample' => 'CuÄtlahcuilÅlli',
'headline_tip' => 'IuhcÄyÅtl 2 tÅcÄyÅtl',
-'math_sample' => 'Xihcuiloa nicÄn',
-'math_tip' => 'TlapÅhualmatiliztlahtÅl (LaTeX)',
'image_sample' => 'MachiyÅtl.jpg',
'media_sample' => 'MachiyÅtl.ogg',
'media_tip' => 'Mēdiahuīc tzonhuiliztli',
@@ -489,7 +491,7 @@ In tlahtÅlichtacÄyÅtl Ä«pal inÄ«n yancuÄ«c cuenta hueliti ticpatlalo zÄzanil
'noarticletext' => 'In ÄxcÄn, ahmÅ onca tlahcuilÅlli inÄ«n zÄzanilpan.
TihuelÄ«ti [[Special:Search/{{PAGENAME}}|tictÄ“moa inÄ«n zÄzaniltÅcÄcopa]] occequÄ«ntÄ«n zÄzanilpan,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} machiyÅmacalpan], ahnozo [{{fullurl:{{FULLPAGENAME}}|action=edit}} ticpatla inÄ«n zÄzanilli]</span>.',
-'userpage-userdoesnotexist' => 'Ahmo ia cuentah "$1" Ä«tÅca. TimitztlÄtlauhtiah xitÄ“chquinÅtza intlÄ ticchÄ«huÄz intlÄ nozo ticpatlÄz inÄ«n zÄzanilli.',
+'userpage-userdoesnotexist' => 'Ahmo ia cuentah "<nowiki>$1</nowiki>" Ä«tÅca. TimitztlÄtlauhtiah xitÄ“chquinÅtza intlÄ ticchÄ«huÄz intlÄ nozo ticpatlÄz inÄ«n zÄzanilli.',
'usercsspreview' => "'''Ca inīn moachtochīhualiz ītechcopa moCSS.'''
'''¡Ahmo ÅmochÄ«uh nozan!'''",
'userjspreview' => "'''Ca inīn moachtochīhualiz ītechcopa moJavaScript.'''
@@ -645,9 +647,10 @@ Hueliz Åmopolo huiqui nozo Åmozacac.
'prefsnologin' => 'Ahmo Åtimocalac',
'changepassword' => 'TicpatlÄz motlahtÅlichtacÄyo',
'skin-preview' => 'Xiquitta quemeh yez',
-'prefs-math' => 'TlapÅhualmatiliztli',
'datedefault' => 'AyÄc tlanequiliztli',
+'prefs-beta' => 'Ìtlâtlamảtilis in tlayêyẻkòlli',
'prefs-datetime' => 'CÄuhtiliztli Ä«huÄn cÄhuitl',
+'prefs-labs' => 'Ìntlâtlamảtilis in tlayêyẻkòyàntìn',
'prefs-personal' => 'MotlÄcatlanÅnÅtzaliz',
'prefs-rc' => 'Yancuīc tlapatlaliztli',
'prefs-watchlist' => 'Tlachiyaliztli',
@@ -659,8 +662,6 @@ Hueliz Åmopolo huiqui nozo Åmozacac.
'prefs-editing' => 'Tlapatlaliztli',
'rows' => 'PÄntli:',
'searchresultshead' => 'Tlatēmoliztli',
-'contextlines' => 'PÄntli tlahtÅltechcopa:',
-'contextchars' => 'TlahtÅltechcopa ic pÄntli:',
'recentchangesdays' => 'TÅnaltin tiquinttÄz yancuÄ«c tlapatlalizpan:',
'localtime' => 'CÄhuitl nicÄn:',
'timezoneregion-africa' => 'Africa',
@@ -859,7 +860,6 @@ TimitztlÄtlauhtiah, xitlahcuiloa occÄ“ tÅcÄitl.",
'linkstoimage' => 'InÄ«n {{PLURAL:$1|zÄzanilli tzonhuilia|$1 zÄzaniltin tzonhuiliah}} inÄ«n tlahcuilÅlhuÄ«c:',
'nolinkstoimage' => 'Ahmo cateh zÄzaniltin tlein tzonhuiliah inÄ«n tlahcuilÅlhuÄ«c.',
'morelinkstoimage' => 'TiquinttÄz [[Special:WhatLinksHere/$1|achi tzonhuiliztli]] inÄ«n tlahcuilÅlhuÄ«c.',
-'redirectstofile' => 'InÅn {{PLURAL:$1|tlahcuilÅlli mocuepa|$1 tlahcuilÅlli mocuepah}} nicÄn:',
'duplicatesoffile' => 'InÅn {{PLURAL:$1|tlahcuilÅlli cah|$1 tlahcuilÅlli cateh}} Åntiah inÄ«n zÄzanilli ([[Special:FileDuplicateSearch/$2|ocahci]]):',
'sharedupload' => 'InÄ«n $1 zÄzanilli huelÄ«ti motequitiltia zÄzocÄmpa.',
'uploadnewversion-linktext' => 'TicquetzÄz yancuÄ«c tlahcuilÅlli',
@@ -915,7 +915,7 @@ TimitztlÄtlauhtiah, xitlahcuiloa occÄ“ tÅcÄitl.",
'statistics-files' => 'TlahcuilÅlli Åmoquetz',
'statistics-views-peredit' => 'Tlahpololiztli ic tlapatlaliztli',
-'disambiguations' => 'ÅŒmetÅcÄitl zÄzaniltin',
+'disambiguations' => 'Ä€matl tlein motzonhuiliah Ä«ca tlahtÅlmelÄhuacÄtlÄliztli Ämatl',
'doubleredirects' => 'ÅŒntetl tlacuepaliztli',
@@ -999,7 +999,7 @@ Nò mà má»ta in tlèn [[Special:WantedCategories|ìpan kineki tlaìxmatkàtlà
'special-categories-sort-abc' => 'tlahtÅlcopa',
# Special:LinkSearch
-'linksearch' => 'CalÄn tzonhuiliztli',
+'linksearch' => 'CalÄn tzonhuiliztli tlatemoliztli',
'linksearch-ns' => 'TÅcÄtzin:',
'linksearch-ok' => 'TictÄ“mÅz',
@@ -1027,8 +1027,6 @@ Nò mà má»ta in tlèn [[Special:WantedCategories|ìpan kineki tlaìxmatkàtlà
'watchlist' => 'Notlachiyaliz',
'mywatchlist' => 'Notlachiyaliz',
'watchnologin' => 'Ahmo Åtimocalac',
-'addedwatch' => 'Ōmocētili tlachiyalizpan',
-'removedwatch' => 'ÅŒmopolo Ä«pan motlachiyaliz',
'removedwatchtext' => 'ZÄzanilli "[[:$1]]" Åmopolo [[Special:Watchlist|motlachiyalizco]].',
'watch' => 'TictlachiyÄz',
'watchthispage' => 'TictlachiyÄz inÄ«n zÄzanilli',
@@ -1047,31 +1045,31 @@ Nò mà má»ta in tlèn [[Special:WantedCategories|ìpan kineki tlaìxmatkàtlà
'enotif_anon_editor' => 'ahtÅcÄtlatequitiltilÄ«lli $1',
'enotif_body' => 'MÄhuizzoh $WATCHINGUSERNAME,
-In {{SITENAME}} zÄzanilli "$PAGETITLE" $CHANGEDORCREATED Ä«pal in tlatequitiltilÄ«lli $PAGEEDITOR Ä«pan $PAGEEDITDATE.
-Xiquitta in ÄxcÄn tlachiyaliztli Ä«pan $PAGETITLE_URL.
+In {{SITENAME}} Ämatl "$PAGETITLE" $CHANGEDORCREATED in tlatequitiltilÄ«lli $PAGEEDITOR Ä«pan $PAGEEDITDATE.
+In ÄxcÄn tlachiyaliztli onca Ä«pan $PAGETITLE_URL
$NEWPAGE
In tlapatlaliztli Ä«xtlamatiliztli cah: $PAGESUMMARY $PAGEMINOREDIT
+
+XicnotzÄz in tlapatlani:
+Correo electrónico: {{canonicalurl:Special:Emailuser|target=$PAGEEDITOR}}
+Huiqui: {{canonicalurl:User:$PAGEEDITOR}}
-Ic ticnotzÄz in tlatequitiltilÄ«lli:
-correo electrónico: {{fullurl:Special:Emailuser|target=$PAGEEDITOR}}
-huiquipan: {{fullurl:User:$PAGEEDITOR}}
+Ahmo onyez occÄ“ tÄ“machitÄ«liztli Ä«tech occÄ“ tlapatlaliztli, zan mÄ tiquihitta inÄ«n Ämoxtli yancuÄ«cÄn.
+NÅ tihuelÄ«ti quitlahtlÄlÄ«z, in tÄ“machitÄ«liztli in mochi tlachixqui mozÄzanilhuÄ«c in motlachiyaliz Ämatl.
-Ic ticpiyÄz yancuÄ«c tlanÅnÅtzaliztli tlapatlalizcopa inÄ«n zÄzanilpan, tihuÄ«quilÄ«z tictlahpolÅz occeppa.
-NÅ tihuelÄ«ti, motlachiyalizpan, ticpatlÄz motlanequiliz tlanÅnÅtzaliztechcopa in zÄzanilli tiquinchiya.
-
- MocnÄ«uh {{SITENAME}} Ä«tlanÅnÅtzaliz.
+ In {{SITENAME}} tēmachitīliztli sistema.
--
-Ic ticpatla totlachiyaliz, xiquitta
-{{fullurl:{{#special:Watchlist}}/edit}}
+Ic ticpatlaz in tlachiyaliztli motlapÅhualÄma, xiquihitta:
+{{canonicalurl:{{#special:EditWatchlist}}}}
-Ic ticpoloa in zÄzanilli Ä«tech totlachiyaliz, xiquitta
+Ic ticpolÅz in Ämatl in tlachiyaliztli motlapÅhualÄma, xiquihitta:
$UNWATCHURL
-Tlacaquiztiliztli Ä«huÄn ocachi tÄ“palÄ“huiliztli:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+TÄ“tlamachÄ«tÄ«liztli Ä«huÄn oc yeh tÄ“palehuiliztli:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'TicpolÅz inÄ«n zÄzanilli',
@@ -1081,7 +1079,7 @@ Tlacaquiztiliztli Ä«huÄn ocachi tÄ“palÄ“huiliztli:
'delete-confirm' => 'TicpolÅz "$1"',
'delete-legend' => 'TicpolÅz',
'actioncomplete' => 'CÄ“ntetl',
-'deletedtext' => '"<nowiki>$1</nowiki>" Åmopolo.
+'deletedtext' => '"$1" Åmopolo.
Xiquitta $2 ic yancuīc tlapololiztli.',
'deletedarticle' => 'Åmopolo "[[$1]]"',
'dellogpage' => 'Tlapololiztli tlahcuilÅlloh',
@@ -1171,7 +1169,6 @@ Xiquitta $2 ic yancuīc tlapololiztli.',
# Block/unblock
'blockip' => 'Tiquitzacuilīz tlatequitiltilīlli',
'blockip-legend' => 'Tiquitzacuilīz tlatequitiltilīlli',
-'ipaddress' => 'IP:',
'ipadressorusername' => 'IP nozo tlatequitiltilÄ«lli Ä«tÅcÄ:',
'ipbexpiry' => 'Motlamia:',
'ipbreason' => 'Īxtlamatiliztli:',
@@ -1188,7 +1185,6 @@ Xiquitta $2 ic yancuīc tlapololiztli.',
'ipb-unblock' => 'Ahtiquitzacuilīz IP nozo tlatequitiltilīlli',
'unblockip' => 'Ahtiquitzacuilīz tlatequitiltilīlli',
'ipblocklist-submit' => 'TlatÄ“mÅz',
-'blocklistline' => '$1, $2 Åquitzacuili $3 ($4)',
'infiniteblock' => 'ahtlamic',
'expiringblock' => 'tlami Ä«pan $1 Ä«pan $2',
'anononlyblock' => 'zan ahtÅcÄ',
@@ -1336,14 +1332,6 @@ Hueliz cah inÄ«n huÄ“yi tlapatlaliztli. TimitztlÄtlauhtia ticmatÄ«z cuallÅtl a
'spam_reverting' => 'Mocuepacah Ä«huÄ«c xÅcoyÅc tlapatlaliztli ahmo tzonhuilizca Ä«huÄ«c $1',
'spam_blanking' => 'Mochi tlapatlaliztli quimpiyah tzonhuiliztli Ä«huÄ«c $1, iztÄctiliacah',
-# Info page
-'infosubtitle' => 'ZÄzaniltechcopa',
-'numedits' => 'Tlapatlaliztli tlapÅhualli (tlahcuilÅlli): $1',
-'numtalkedits' => 'Tlapatlaliztli tlapÅhualli (tÄ“ixnÄmiquiliztli): $1',
-'numwatchers' => 'TlachiyalÅnih tlapÅhualli: $1',
-'numauthors' => 'Ahneneuhqui tlapatlalÅnih tlapÅhualli (tlahcuilÅlli): $1',
-'numtalkauthors' => 'Ahneneuhqui tlapatlalÅnih tlapÅhualli (tÄ“ixnÄmiquiliztli): $1',
-
# Browsing diffs
'previousdiff' => '↠Achtopa',
'nextdiff' => 'Oc ye cencah yancuīc tlapatlaliztli →',
@@ -1427,12 +1415,10 @@ Hueliz cah inÄ«n huÄ“yi tlapatlaliztli. TimitztlÄtlauhtia ticmatÄ«z cuallÅtl a
'exif-gpslongitude-w' => 'CihuÄtlÄmpa huehtlatzÄ«ncÄyÅtl',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'mochīntīn',
-'imagelistall' => 'mochīntīn',
-'watchlistall2' => 'mochīntīn',
-'namespacesall' => 'mochīntīn',
-'monthsall' => '(mochīntīn)',
-'limitall' => 'mochi',
+'watchlistall2' => 'mochīntīn',
+'namespacesall' => 'mochīntīn',
+'monthsall' => '(mochīntīn)',
+'limitall' => 'mochi',
# E-mail address confirmation
'confirmemail' => 'TicchicÄhuÄz e-mail',
@@ -1514,8 +1500,9 @@ Niman tihuelÄ«ti [[Special:UserLogin|timocalaqui]] auh ticpactiÄz huiquitica.',
# Special:SpecialPages
'specialpages' => 'Nònkuâkìskàtlaìxtlapaltìn',
'specialpages-note' => '----
-* NÅncuahquÄ«zqui.
-* <strong class="mw-specialpagerestricted">Tzacuilic.</strong>',
+* Kèn sanỉman nònkuâkìskàtlaìxtlapaltìn.
+* <span class="mw-specialpagerestricted>Âmò tlakàwiltìn nònkuâkìskàtlaìxtlapaltìn.</span>
+* <span class="mw-specialpagecached">Tlatlaìxkopìnèuhtìn nònkuâkìskàtlaìxtlapaltìn.</span>',
'specialpages-group-other' => 'Oksẻki nònkuâkìskàtlaìxtlapaltìn',
'specialpages-group-login' => 'Ximocalaqui / ximomachiyÅmaca',
'specialpages-group-changes' => 'YancuÄ«c tlapatlaliztli Ä«huÄn tlahcuilÅlloh',
diff --git a/languages/messages/MessagesNan.php b/languages/messages/MessagesNan.php
index 7777183a..9a36f9fe 100644
--- a/languages/messages/MessagesNan.php
+++ b/languages/messages/MessagesNan.php
@@ -53,8 +53,8 @@ $messages = array(
'tog-shownumberswatching' => 'Hián-sÄ« tng leh khoà⿠ê iÅng-chiá sò͘-boÌk',
'tog-oldsig' => 'Chit-má ê chhiam-miâ:',
'tog-fancysig' => 'Chhiam-miâ mài chò liân-kiat',
-'tog-externaleditor' => 'IÅng gÅa-pÅ· pian-chiÌp-khì (kan-na hÅ͘ ko-chhiú, he ài tÄ« lí ê tiÄn-náu koh siat-tÄ“ng. [http://www.mediawiki.org/wiki/Manual:External_editors Siông-chêng.])',
-'tog-externaldiff' => 'IÅng gÅa-pÅ· diff (kan-na hÅ͘ ko-chhiú, he ài tÄ« lí ê tiÄn-noá koh siat-tÄ“ng. [http://www.mediawiki.org/wiki/Manual:External_editors Siông-chêng.])',
+'tog-externaleditor' => 'IÅng gÅa-pÅ· pian-chiÌp-khì (kan-na hÅ͘ ko-chhiú, he ài tÄ« lí ê tiÄn-náu koh siat-tÄ“ng. [//www.mediawiki.org/wiki/Manual:External_editors Siông-chêng.])',
+'tog-externaldiff' => 'IÅng gÅa-pÅ· diff (kan-na hÅ͘ ko-chhiú, he ài tÄ« lí ê tiÄn-noá koh siat-tÄ“ng. [//www.mediawiki.org/wiki/Manual:External_editors Siông-chêng.])',
'tog-showjumplinks' => 'HÅ͘ "thiàu khì" chit ê liân-chiap Ä“-sái',
'tog-uselivepreview' => 'Ä’ng sui khoàâ¿-mÄi (ài Å« JavaScript) (chhì-giÄm--ê)',
'tog-forceeditsummary' => 'Pian-chiÌp khài-iàu bô thi⿠ê sî-chÅ«n, kÄ goá thê-chhéâ¿',
@@ -149,14 +149,7 @@ $messages = array(
'listingcontinuesabbrev' => '(chiap-sòa thâu-chêng)',
'index-category' => 'Ū sik-ín ê iaÌh',
'noindex-category' => 'BÄ« sik-ín ê iaÌh.',
-
-'mainpagetext' => "'''MediaWiki已經è£å¥½çŸ£ã€‚'''",
-'mainpagedocfooter' => '請查看[http://meta.wikimedia.org/wiki/Help:Contents 用者說明書]的資料通使用wiki 軟體
-
-== 入門 ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings é…置的設定]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki時常å•ç­”]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki的公布列單]',
+'broken-file-category' => 'Sit-khì tóng-àn liân-kiat ê iaÌh.',
'about' => 'Koan-hē',
'article' => 'LoÄ“-iông iaÌh',
@@ -208,10 +201,10 @@ $messages = array(
'history' => 'IaÌh leÌk-sú',
'history_short' => 'leÌk-sú',
'updatedmarker' => 'Téng hoê goá lâi chiah liáu ū kái koè--ê',
-'info_short' => '資訊',
'printableversion' => 'Ìn-soat pán-pún',
'permalink' => 'Éng-kiú liân-kiat',
'print' => 'ÃŒn-soat',
+'view' => 'Khoàâ¿',
'edit' => 'Siu-kái',
'create' => 'Khai-sí siá',
'editthispage' => 'Siu-kái chit iaÌh',
@@ -219,6 +212,7 @@ $messages = array(
'delete' => 'Thâi',
'deletethispage' => 'Thâi chit iaÌh',
'undelete_short' => 'Kiù $1 ê siu-kái',
+'viewdeleted_short' => 'Khoà⿠{{PLURAL:$1|chiÌt-ê thâi tiàu--ê pian-chiÌp|$1 ê thâi tiàu--ê pian-chiÌp}}',
'protect' => 'Pó-hÅ·',
'protect_change' => 'kái-piàn',
'protectthispage' => 'Pó-hÅ· chit iaÌh',
@@ -303,6 +297,8 @@ Chhiá⿠khoà⿠[[Special:Version|pán-pún iaÌh]].',
'toc' => 'BoÌk-loÌk',
'showtoc' => 'khui',
'hidetoc' => 'siu',
+'collapsible-collapse' => 'Siu',
+'collapsible-expand' => 'Khui',
'thisisdeleted' => 'Khoà⿠aÌh-sÄ« kiù $1?',
'viewdeleted' => 'Beh khoà⿠$1?',
'restorelink' => '{{PLURAL:$1|chiÌt ê thâi-tiàu ê pian-chiÌp|$1 thâi-tiàu ê pian-chiÌp}}',
@@ -314,6 +310,8 @@ Chhiá⿠khoà⿠[[Special:Version|pán-pún iaÌh]].',
'page-rss-feed' => '"$1" ê RSS tÄ“ng khoàâ¿',
'page-atom-feed' => '"$1" ê Atom tÄ“ng khoàâ¿',
'red-link-title' => '$1 (bô hit iaÌh)',
+'sort-descending' => 'HÄ-kàng pâi-liaÌt',
+'sort-ascending' => 'Seng-koân pâi-liaÌt',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Bûn-chiuâ¿',
@@ -395,12 +393,13 @@ Chhiá⿠tÄ« kúi hun-cheng hÄu chiah koh chhì.',
'protectedinterface' => 'Chit iaÌh thê-kiong nÅ„g-thé kài-bÄ«n Ä“ng ê bûn-jÄ«. Ūi beh Ä«-hông lâng chau-that, só͘-í Å« siÅ« tioÌh pó-hÅ͘.',
'editinginterface' => "'''Sè-jÄ«:''' Lí tng teh siu-kái 1 bÄ«n thê-kiong nÅ„g-thé kài-bÄ«n bûn-jÄ« ê iaÌh.
JÄ«n-hô kái-piàn to Ä“ éng-hióng tioÌh kî-thaâ¿ iÅng-chiá ê sú-iÅng kài-bÄ«n.
-NÄ Å«i-tioÌh hoan-eÌk, chhiá⿠khó-lÅ« sú-iÅng [http://translatewiki.net/wiki/Main_Page?setlang=nan translatewiki.net], MediaWiki ê chÄi-tÄ“ hoà sÅ«-kang.",
+NÄ Å«i-tioÌh hoan-eÌk, chhiá⿠khó-lÅ« sú-iÅng [//translatewiki.net/wiki/Main_Page?setlang=nan translatewiki.net], MediaWiki ê chÄi-tÄ“ hoà sÅ«-kang.",
'sqlhidden' => '(Tshàng SQL tsa-sûn)',
'cascadeprotected' => 'Chit-ê iaÌh í-keng hông pó-hÅ͘ bÄ“ kái tit. In-Å«i i tÄ« Ä“-bÄ«n {{PLURAL:$1|ê|ê}} liân-só pó-hÅ͘ lÄi-té:
$2',
'namespaceprotected' => "Lí bô khoân-lÄ« kái '''$1''' miâ-khong-kan ê iaÌh",
-'customcssjsprotected' => '你無權é™é€šæ”¹é€™é ï¼Œå› ç‚ºä¼ŠåŒ…括著其他用戶的個人設定。',
+'customcssprotected' => '你無權é™é€šæ”¹é€™CSSé é¢ï¼Œå› ç‚ºä¼ŠåŒ…括著其他用戶的個人設定。',
+'customjsprotected' => '你無權é™é€šæ”¹é€™javaScripté é¢ï¼Œå› ç‚ºä¼ŠåŒ…括著其他用戶的個人設定。',
'ns-specialprotected' => '特殊é è¢‚使改得',
'titleprotected' => "這个標題已經予[[User:$1|$1]]ä¿è­·ç‰¢å’§è¢‚使用。ç†ç”±æ˜¯''$2''。",
@@ -436,6 +435,7 @@ Chhiaâ¿ chù-ì: Å«-kóa iaÌh Å« khó-lêng khoàâ¿-tioÌh bÄ“-su lí iû-goÃ
'createaccount' => 'Khui sin kháu-chÅ',
'gotaccount' => "Ã-keng Å« kháu-chÅ? '''$1'''.",
'gotaccountlink' => 'Teng-jiÌp',
+'userlogin-resetlink' => '袂記哩你登入的資料?',
'createaccountmail' => 'Thàu koè tiÄn-chú-phoe',
'createaccountreason' => 'Lí-iû:',
'badretype' => 'Lí su-jiÌp ê 2-cho· biÌt-bé bô tùi.',
@@ -447,12 +447,14 @@ Chhiaâ¿ chù-ì: Å«-kóa iaÌh Å« khó-lêng khoàâ¿-tioÌh bÄ“-su lí iû-goÃ
ä½ ç„¡æ‹é–‹cookies功能,
è«‹æ‹é–‹ï¼Œé€šè¨˜éŒ„你的用者å稱佮密碼。',
'nocookieslogin' => '{{SITENAME}}用 Cookies 記錄用戶,你共關掉,請æ‹é–‹é–£é‡æ–°ç™»å…¥ã€‚',
+'nocookiesfornew' => '這个用者å£åº§çŒ¶æœªé–‹ï¼Œé˜®ç„¡æ³•åº¦ç¢ºèªä¼Šçš„來æºï¼Œ
+請確定你您已經æ‹é–‹cookies功能了,é‡æ–°è¼‰å…¥é€™é é–£é‡è©¦ã€‚',
'noname' => 'ä½ ç„¡æ‹ä¸€ä¸ªæœ‰æ•ˆçš„用者å稱。',
'loginsuccesstitle' => 'Teng-jiÌp sêng-kong',
'loginsuccess' => 'Lí hiÄn-chhú-sî í-keng teng-jiÌp {{SITENAME}} chò "$1".',
'nosuchuser' => 'Chia bô iÅng-chiá hÅ-chò "$1". Miâ-jÄ« Å« hun toÄ-siá, sio-siá . Chhiá⿠kiám-cha lí ê phèng-im, aÌh-sÄ« [[Special:UserLogin/signup|khui sin káu-chÅ]].',
-'nosuchusershort' => 'ç„¡"$1"這个用者å,
-å°çœ‹è¦“,你æ‹çš„。',
+'nosuchusershort' => 'Bô "$1" chit ê iÅng-chiá miâ.
+Tùi khoàâ¿-mÄi, lí phah--ê.',
'nouserspecified' => 'Lí ài chí-tÄ“ng chiÌt ê iÅng-chiá miâ.',
'login-userblocked' => '這个用者已經hôngå°éŽ–,無å…准登入。',
'wrongpassword' => 'Lí su-jiÌp ê biÌt-bé Å« têng-tââ¿. Chhiá⿠têng chhì.',
@@ -495,13 +497,14 @@ TiÅ-sÄ« kóng, tÄ« chit-má iÅng chit ê IP bÄng-chí ê lâng bÄ“-sái koh k
'usernamehasherror' => '用者å稱袂使有#å­—å…ƒ',
'login-throttled' => '你已經試傷濟擺登入的動作,
è«‹å°ç­‰ä¸€ä¸‹æ‰é–£è©¦ã€‚',
+'login-abort-generic' => '你的登入無æˆåŠŸï¼Œä¸­é€”退出。',
'loginlanguagelabel' => '話語:$1',
'suspicious-userlogout' => '你登出的è¦æ±‚已經被拒絕,因為伊看起來是å°ç„¡é€£ç·šçš„ç€è¦½å™¨æŠ‘是快å–代ç†å‚³é€ä¾†çš„。',
# E-mail sending
'php-mail-error-unknown' => '佇PHP的 mail() 函數的未知錯誤',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Kái biÌt-bé',
'resetpass_announce' => '你是å°ä¸€å¼µé›»å­æ‰¹çš„臨時編碼登入的。欲完æˆç™»å…¥ï¼Œä½ æ„›ä½‡é®è¨­å®šæ–°å¯†ç¢¼ï¼š',
'resetpass_header' => 'Kái káu-chŠê biÌt-bé.',
@@ -519,6 +522,27 @@ TiÅ-sÄ« kóng, tÄ« chit-má iÅng chit ê IP bÄng-chí ê lâng bÄ“-sái koh k
ä½ å¯èƒ½å·²ç¶“æˆåŠŸæ›´éŽä½ çš„密碼,抑是申請一个新的臨時密碼。',
'resetpass-temp-password' => 'Lîm-sî ê biÌt-bé:',
+# Special:PasswordReset
+'passwordreset' => 'Têng siat biÌt-bé',
+'passwordreset-text' => '完æˆé€™ä¸ªè¡¨ï¼Œå°±é€šæ”¶è‘—一å°æ醒你å£åº§è©³æƒ…çš„é›»å­æ‰¹ã€‚',
+'passwordreset-legend' => 'Têng siat biÌt-bé',
+'passwordreset-disabled' => '佇這个Wiki已經ç¦æ­¢é‡è¨­å¯†ç¢¼',
+'passwordreset-pretext' => '{{PLURAL:$1||æ‹ä¸‹è·¤è³‡æ–™å…§åº•çš„一个}}',
+'passwordreset-username' => 'Lí ê iÅng-chiá miâ-chheng:',
+'passwordreset-domain' => '網域:',
+'passwordreset-email' => 'TiÄn-chú-phoe tÄ“-chí:',
+'passwordreset-emailtitle' => '佇{{SITENAME}}é¢é ‚çš„çš„å£åº§è©³ç´°',
+'passwordreset-emailtext-ip' => '有人(å¯èƒ½æ˜¯ä½ ï¼Œå°$1這IP)è¦æ±‚發一个{{SITENAME}}($4)å£åº§è©³æƒ…çš„æ示。彼个用戶{{PLURAL:$3|是|是}}佮下跤電å­æ‰¹åœ°å€æœ‰é—œä¿‚:
+
+$2
+
+{{PLURAL:$3|這个臨時密碼|é®çš„臨時密碼}}會佇{{PLURAL:$5|一工 |$5å·¥}}內到期。
+你這馬應該登入,而且é¸æ“‡ä¸€ä¸ªæ–°å¯†ç¢¼ã€‚若是別人åšçš„è¦æ±‚,抑是你已經記
+起來你的密碼,你閣無想欲改,你會當å…管這个信æ¯ï¼Œè€Œä¸”繼續用你的密碼。',
+'passwordreset-emailelement' => 'IÅng-chiá: $1
+Lîm-sî ê biÌt-bé: $2',
+'passwordreset-emailsent' => 'Chit hong thê-chhí⿠ê tiÄn-chú-phoe í-keng kià chhut.',
+
# Edit page toolbar
'bold_sample' => 'Chho·-thé bûn-jī',
'bold_tip' => 'Chho·-thé jī',
@@ -530,8 +554,6 @@ TiÅ-sÄ« kóng, tÄ« chit-má iÅng chit ê IP bÄng-chí ê lâng bÄ“-sái koh k
'extlink_tip' => 'GÅa-pÅ· ê liân-kiat (Ä“-kì-tit thâu-chêng ài ke http://)',
'headline_sample' => 'Thâu-tiâu bûn-jī',
'headline_tip' => 'Tē-2-chân (level 2) ê phiau-tê',
-'math_sample' => 'Chia siá hong-thêng-sek',
-'math_tip' => 'æ•¸å­¸çš„å…¬å¼ ï¼ˆLaTeX)',
'nowiki_sample' => 'Chia siá bô keh-sek ê bûn-jī',
'nowiki_tip' => 'ç„¡ç…§Wikiçš„è¦æ ¼',
'image_sample' => 'Iann-siong-e-le.jpg',
@@ -648,6 +670,7 @@ Kháu-chŠê sin biÌt-bé thang tÄ« teng-jiÌp liáu tÄ« ''[[Special:ChangePas
'''若這改編輯éŽç¨‹ç„¡å•é¡Œï¼Œè«‹é–£è©¦ä¸€æ”¹ã€‚若閣有å•é¡Œï¼Œè«‹[[Special:UserLogout|登出]]了後,æ‰é–£é‡ç™»å…¥ã€‚'''",
'token_suffix_mismatch' => "'''因為你用者端的編輯毀æ一寡標點符號字元,你的編輯無被接å—。'''
這種情æ³æœƒå‡ºç¾ä½‡ä½ ç”¨ç¶²è·¯ä¸ŠåŒ¿å代ç†æœå‹™çš„時陣。",
+'edit_form_incomplete' => "'''一寡部份的編輯無é€åˆ°ä¼ºæœå™¨ï¼Œè«‹æª¢æŸ¥ä½ çš„編輯是毋是完整,æ‰é–£è©¦ã€‚'''",
'editing' => 'Siu-kái $1',
'editingsection' => 'Pian-chiÌp $1 (section)',
'editingcomment' => 'Teh pian-chiÌp $1 (lâu-oÄ“)',
@@ -766,29 +789,169 @@ $3å…±ç¦æ­¢çš„原因是 ''$2''。",
'historyempty' => '(空的)',
# Revision feed
+'history-feed-title' => '修改的歷å²',
+'history-feed-description' => '這é ä½‡æœ¬ç«™çš„修改歷å²',
'history-feed-item-nocomment' => '$1 tī $2',
+'history-feed-empty' => '無你欲挃的é ï¼Œ
+伊å¯èƒ½hông刣掉抑是改å,
+試[[Special:Search|æœæ£æœ¬ç«™]],通創建新é ã€‚',
# Revision deletion
-'rev-delundel' => '顯示ï¼æŽ©',
-'revdel-restore' => '改敢看會著',
-'revdel-restore-deleted' => '刣掉去的修訂本',
-'revdel-restore-visible' => '看會著的修訂本',
+'rev-deleted-comment' => '(編輯概è¦å·²ç¶“清掉)',
+'rev-deleted-user' => '用者å稱已經清掉',
+'rev-deleted-event' => '動作的記錄已經清掉',
+'rev-deleted-user-contribs' => '[用者å稱抑是IP地å€å·²ç¶“徙掉 - 佇貢ç»ç•¶ä¸­éš±è—編輯]',
+'rev-deleted-text-permission' => "這é çš„修訂本已經hông'''刣掉'''。
+佇[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刣掉記錄],有詳細的訊æ¯ã€‚",
+'rev-deleted-text-unhide' => "這é çš„修訂本已經hông'''刣掉'''。
+佇[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刣掉記錄],
+若你欲繼續行,你照ä»æœƒä½¿[$1看這个修訂本]。",
+'rev-suppressed-text-unhide' => "這é çš„修訂本已經hông'''壓縮掉'''。
+佇[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 壓縮記錄],
+若你欲繼續行,你照ä»æœƒä½¿[$1看這个修訂本]。",
+'rev-deleted-text-view' => "這é çš„修訂本已經hông'''刣掉'''。
+佇[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刣掉記錄],有詳細的訊æ¯ã€‚",
+'rev-suppressed-text-view' => "這é çš„修訂本已經hông'''壓縮掉'''。
+你會使佇[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 壓縮記錄]看詳細。",
+'rev-deleted-no-diff' => "你無法度看精差,因為其中一个修訂本已經hông'''刣掉'''。
+佇[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刣掉記錄]有通看詳細。",
+'rev-suppressed-no-diff' => "你無法度看精差,因為其中一个修訂本已經hông'''刣掉\"。",
+'rev-deleted-unhide-diff' => "欲åšç²¾å·®æ¯”並的一个修訂本已經hông'''刣掉'''。
+佇[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刣掉記錄],
+若你欲繼續行,你照ä»æœƒä½¿[$1看這个精差比並]。",
+'rev-suppressed-unhide-diff' => '精差比並的其中一个修訂本已經hông壓縮掉。
+佇[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 壓縮記錄]通看詳細,
+若你欲繼續行,你照ä»æœƒä½¿[$1看這个精差比並]。',
+'rev-deleted-diff-view' => "欲åšç²¾å·®æ¯”並的一个修訂本已經hông'''刣掉'''。
+佇[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 刣掉記錄],通看這个精差比並。",
+'rev-suppressed-diff-view' => "欲åšç²¾å·®æ¯”並的一个修訂本已經hông'''壓縮掉'''。
+你會使佇[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 壓縮記錄],看這个精差比並。",
+'rev-delundel' => '顯示ï¼æŽ©',
+'rev-showdeleted' => '顯示',
+'revisiondelete' => '刣掉/å–消刣掉 修訂本',
+'revdelete-nooldid-title' => '目標是無效的修訂本',
+'revdelete-nooldid-text' => '你欲用這个功能進å‰ç„¡æŒ‡å®šæ¬²æ”¹çš„修訂本,抑是無你指定的修訂本,抑是你欲改ç¾æ™‚的版本隱è—起來。',
+'revdelete-nologtype-title' => '無指定記錄的類型',
+'revdelete-nologtype-text' => '你無指定佗一个記錄類型欲åšé€™ä¸ªå‹•ä½œ',
+'revdelete-nologid-title' => '無效的記錄項目',
+'revdelete-nologid-text' => '你無指定佗一个記錄項目欲進行這个動作,抑是無你指定的項目。',
+'revdelete-no-file' => '無你指定的檔案',
+'revdelete-show-file-confirm' => '你敢確定欲看"<nowiki>$1</nowiki>"佇 $2 $3 刣掉的修訂本?',
+'revdelete-show-file-submit' => '是',
+'revdelete-selected' => "'''[[:$1]]{{PLURAL:$2|所é¸çš„修訂本|所é¸çš„修訂本}}:'''",
+'logdelete-selected' => "'''{{PLURAL:$1|所é¸çš„記錄項目|所é¸çš„記錄項目}}:'''",
+'revdelete-text' => "'''佇é é¢æ­·å²ä½®è¨˜éŒ„猶看有刣掉的修訂本佮彼件物,毋éŽå…§å®¹éƒ¨ä»½æ˜¯ç„¡äºˆå¤§çœ¾çœ‹ã€‚'''
+佇{{SITENAME}}的其他管ç†å“¡æ˜¯æœƒç•¶çœ‹éš±è—的內容,而且除éžæœ‰å¦å¤–附加的é™åˆ¶ï¼Œä¼Šç”¨é€™ä¸ªä»æ¬¾ä»‹é¢é€šå–消刣掉。",
+'revdelete-confirm' => '請確定你欲按呢åšï¼Œä½ å˜›äº†è§£å¾Œæžœï¼Œè€Œä¸”你欲åšçš„這个動作符åˆ[[{{MediaWiki:Policy-url}}|政策]]。',
+'revdelete-suppress-text' => "掩å´'''åª'''佇下跤情æ³ä¸‹æ‰ä½¿ç”¨:
+* å¯èƒ½æ˜¯èª¹è¬—ä¿¡æ¯
+* ç„¡é©ç•¶çš„個人資料
+*:''åŽçš„地å€ã€é›»è©±è™Ÿç¢¼ã€ç¤¾æœƒå®‰å…¨è™Ÿç¢¼æŠ‘身份證號碼等等。''",
+'revdelete-legend' => '設定通看的制é™',
+'revdelete-hide-text' => 'éš±è—修訂本文本',
+'revdelete-hide-image' => 'éš±è—檔案內容',
+'revdelete-hide-name' => 'éš±è—動作佮目標',
+'revdelete-hide-comment' => 'éš±è—編輯概è¦',
+'revdelete-hide-user' => 'éš±è—編輯者的å稱抑 IP 地å€',
+'revdelete-hide-restricted' => 'å°ç³»çµ±ç®¡ç†å“¡ä½®å…¶ä»–人æ”掩å´è³‡æ–™',
+'revdelete-radio-same' => '(毋共改)',
+'revdelete-radio-set' => '是',
+'revdelete-radio-unset' => '毋是',
+'revdelete-suppress' => 'å°ç³»çµ±ç®¡ç†å“¡ä½®å…¶ä»–人æ”掩å´è³‡æ–™',
+'revdelete-unsuppress' => 'å…±æ¢å¾©çš„修訂本徙掉é™åˆ¶',
+'revdelete-log' => 'ç†ç”±ï¼š',
+'revdelete-submit' => 'å°æ‰€é¸çš„{{PLURAL:$1|修訂本}}來施實',
+'revdelete-logentry' => '改"[[$1]]"修訂本的å¯è¦‹æ€§è³ª',
+'logdelete-logentry' => '改"[[$1]]"的一个事件å¯è¦‹æ€§è³ª',
+'revdelete-success' => "'''改修訂本是毋是通予人看,已經改好矣'''",
+'revdelete-failure' => "'''改修訂本是毋是通予人看的動作無æˆåŠŸ'''
+$1",
+'logdelete-success' => "'''事件的å¯è¦‹æ€§è³ªå·²ç¶“æˆåŠŸè¨­å®š'''",
+'logdelete-failure' => "'''事件的å¯è¦‹æ€§è³ªç„¡æ³•åº¦è¨­å®šï¼š'''
+$1",
+'revdel-restore' => '改敢看會著',
+'revdel-restore-deleted' => '刣掉去的修訂本',
+'revdel-restore-visible' => '看會著的修訂本',
+'pagehist' => 'é çš„æ­·å²',
+'deletedhist' => '已經刣掉的歷å²',
+'revdelete-content' => '內容',
+'revdelete-summary' => '編輯概è¦',
+'revdelete-uname' => '用者å稱',
+'revdelete-restricted' => '已經共é™åˆ¶ç”¨ä½‡ç®¡è£¡å“¡',
+'revdelete-unrestricted' => '徙走å°ç®¡è£¡å“¡çš„é™åˆ¶',
+'revdelete-hid' => 'éš±è— $1',
+'revdelete-unhid' => 'ç„¡éš±è— $1',
+'revdelete-log-message' => '$1的{{PLURAL:$2|个|个}}修訂本',
+'logdelete-log-message' => '$1的{{PLURAL:$2|項|項}}事件',
+'revdelete-hide-current' => '當咧隱è—佇$1 $2的項目錯誤:這是這馬的修訂本,袂使隱è—。',
+'revdelete-show-no-access' => '當咧顯示佇$1 $2的項目錯誤:這个項目已經標示åš"有é™åˆ¶",
+你袂當處ç†ã€‚',
+'revdelete-modify-no-access' => "當欲改$1 $2項目的錯誤:這个項目已經標示åš''有é™åˆ¶'',
+你袂當處ç†ã€‚",
+'revdelete-modify-missing' => '當咧改項目編號 $1錯誤:伊å°è³‡æ–™åº«ç•¶ä¸­æ¶ˆå¤±ï¼',
+'revdelete-no-change' => "'''æ醒''':佇$1 $2的項目已經有人請求å¯è¦‹æ€§è³ªçš„設定。",
+'revdelete-concurrent-change' => '錯誤佇欲改$1 $2的項目:當你欲改伊的設定時,已經有å¦å¤–的人共改éŽã€‚
+請檢查記錄。',
+'revdelete-only-restricted' => '錯誤佇欲隱è—$1 $2的項目時發生:你袂當一方é¢é¸æ“‡ä¸€é …å¦å¤–çš„å¯è¦‹æ€§è³ªï¼Œé–£ä¸å‡†ç®¡ç†å“¡çœ‹å½¼é …目。',
+'revdelete-reason-dropdown' => '*æ·ç”¨çš„刣掉ç†ç”±
+** 侵犯版權
+** ä¸é©åˆçš„個人資料
+** å¯èƒ½æ˜¯èª¹è¬—資料',
+'revdelete-otherreason' => '其他ï¼å¦å¤–çš„ç†ç”±ï¼š',
+'revdelete-reasonotherlist' => '其他ç†ç”±',
+'revdelete-edit-reasonlist' => '編輯刣掉的ç†ç”±',
+'revdelete-offender' => '修訂本的編輯者:',
+
+# Suppression log
+'suppressionlog' => 'éš±è—記錄',
+
+# History merging
+'mergehistory' => 'åˆä½µå…©ä¸ªé çš„修改歷å²:',
+'mergehistory-header' => '這é é€šäºˆä½ åˆä½µä¸€ä¸ªé çš„æ­·å²åˆ°å¦å¤–一个新的é ã€‚
+會當予這改變更通接紲歷å²é ã€‚',
+'mergehistory-box' => 'åˆä½µå…©ä¸ªé çš„修訂本:',
+'mergehistory-from' => '來æºé ï¼š',
+'mergehistory-into' => '目標é ï¼š',
+'mergehistory-list' => 'å¯ä»¥åˆä½µçš„編輯歷å²',
+'mergehistory-merge' => '下跤[[:$1]]的修訂本會使åˆä½µåˆ°[[:$2]]。用彼个é¸é …鈕仔去åˆä½µåªæœ‰ä½‡æŒ‡å®šæ™‚間進å‰æ‰€å‰µå»ºçš„修訂本。愛注æ„的是若使用導航連çµå°±æœƒé‡è¨­é€™ä¸€æ¬„。',
+'mergehistory-go' => '顯示通åˆä½µçš„編輯',
+'mergehistory-submit' => 'åˆä½µä¿®è¨‚本',
+'mergehistory-empty' => '無修訂本通åˆä½µ',
+'mergehistory-success' => '[[:$1]]çš„{{PLURAL:$3|篇|篇}}修訂本已經æˆåŠŸåˆä½µåˆ°[[:$2]]。',
+'mergehistory-fail' => '無法度進行歷å²çš„åˆä½µï¼Œè«‹é‡æ–°æª¢æŸ¥å½¼é ä½®æ™‚é–“åƒæ•¸ã€‚',
+'mergehistory-no-source' => 'ç„¡$1這个來æºé ',
+'mergehistory-no-destination' => 'ç„¡$1這个目標é ',
+'mergehistory-invalid-source' => '來æºé æ„›æœ‰ä¸€ä¸ªæœ‰æ•ˆçš„標題',
+'mergehistory-invalid-destination' => '目標é æ„›æœ‰ä¸€ä¸ªæœ‰æ•ˆçš„標題',
+'mergehistory-autocomment' => '已經åˆä½µ[[:$1]]到[[:$2]]',
+'mergehistory-comment' => '已經åˆä½µ[[:$1]]到[[:$2]]: $3',
+'mergehistory-same-destination' => '來æºé ä½®ç›®æ¨™é è¢‚使相ä»',
+'mergehistory-reason' => 'ç†ç”±ï¼š',
# Merge log
-'revertmerge' => 'å–消åˆä½µ',
+'mergelog' => 'åˆä½µè¨˜éŒ„',
+'pagemerge-logentry' => '已經共[[$1]]åˆä½µåˆ°[[$2]] (修訂本到$3)',
+'revertmerge' => 'å–消åˆä½µ',
+'mergelogpagetext' => '下跤是最近共一é çš„æ­·å²åˆä½µåˆ°å¦ä¸€ä¸ªçš„列表',
# Diffs
-'history-title' => '改"$1"çš„æ­·å²',
-'difference' => '(Bô kâng pán-pún ê cheng-chha)',
-'lineno' => 'TÄ“ $1 chÅa:',
-'compareselectedversions' => 'Pí-phÄ“ng soán-teÌk ê pán-pún',
-'editundo' => 'chhú-siau',
-'diff-multi' => '(由{{PLURAL:$2|个用者|$2个用者}}的{{PLURAL:$1|一个中央修訂本|$1个中央修訂本}}無顯示)',
+'history-title' => '改"$1"çš„æ­·å²',
+'difference' => '(Bô kâng pán-pún ê cheng-chha)',
+'difference-multipage' => '(é ä¸­é–“的精差)',
+'lineno' => 'TÄ“ $1 chÅa:',
+'compareselectedversions' => 'Pí-phÄ“ng soán-teÌk ê pán-pún',
+'showhideselectedversions' => '顯示ï¼éš±è— é¸å®šçš„修訂版本',
+'editundo' => 'chhú-siau',
+'diff-multi' => '(由{{PLURAL:$2|个用者|$2个用者}}的{{PLURAL:$1|一个中央修訂本|$1个中央修訂本}}無顯示)',
+'diff-multi-manyusers' => '({{PLURAL:$2|个用者|$2个用者}}的{{PLURAL:$1|一个中途修訂本|$1个中途修訂本}}無顯示)',
# Search results
'searchresults' => 'Kiám-sek kiat-kó',
'searchresults-title' => 'Chhoé "$1" ê kiat-kó',
'searchresulttext' => 'Koan-hÄ“ kiám-sek {{SITENAME}} ê siông-sè pÅ·-sò·, chhiá⿠chham-khó [[{{MediaWiki:Helppage}}|{{int:help}}]].',
+'searchsubtitle' => 'æ£\'\'\'[[:$1]]\'\'\'([[Special:Prefixindex/$1|所有以 "$1" åšé ­çš„é ]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|所有連çµåˆ° "$1" çš„é ]])',
+'searchsubtitleinvalid' => 'æ£"$1"',
+'toomanymatches' => 'æ£è‘—傷濟,請試å¦å¤–一款方å¼',
'titlematches' => 'Phiau-tê Å«-tùi ê bûn-chiuâ¿',
'notitlematches' => 'Bô sio-tùi ê iaÌh-piau-tê',
'textmatches' => 'LÅe-iông Å«-tùi ê bûn-chiuâ¿',
@@ -799,9 +962,11 @@ $3å…±ç¦æ­¢çš„原因是 ''$2''。",
'nextn-title' => '後$1个{{PLURAL:$1|çµæžœ|çµæžœ}}',
'shown-title' => 'Múi iaÌh hián-sÄ« $1 {{PLURAL:$1|kiat-kó|kiat-kó}}',
'viewprevnext' => 'Khoà⿠($1 {{int:pipe-separator}} $2) ($3)',
+'searchmenu-legend' => 'æœæ£çš„é¸é …',
'searchmenu-exists' => "'''佇這个wikié,有一个é å«åšã€Œ[[:$1]]ã€'''",
'searchmenu-new' => "'''佇這个 wiki建立「[[:$1]]ã€é€™ä¸ªé ï¼'''",
'searchhelp-url' => 'Help:BoÌk-lioÌk',
+'searchmenu-prefix' => '[[Special:PrefixIndex/$1|看é æ¨™é¡Œé ­å‰ç›¸ä»çš„é ]]',
'searchprofile-articles' => 'LoÄ“-iông iaÌh',
'searchprofile-project' => '幫助佮事工é ',
'searchprofile-images' => 'To-mûi-thé',
@@ -814,70 +979,291 @@ $3å…±ç¦æ­¢çš„原因是 ''$2''。",
'searchprofile-advanced-tooltip' => '佇自定的å空間中æœæ£',
'search-result-size' => '$1 ({{PLURAL:$2|1 jī-goân|$2 jī-goân}})',
'search-result-category-size' => '{{PLURAL:$1|一个æˆå“¡|$1æˆå“¡}} ({{PLURAL:$2|一个下類別|$2个下類別}},{{PLURAL:$3|一个檔案|$3个檔案}})',
+'search-result-score' => '相關度: $1%',
'search-redirect' => 'ï¼ˆæ”¹å‘ $1)',
'search-section' => '(toÄn-loÌh $1)',
'search-suggest' => '你是欲:$1',
+'search-interwiki-caption' => '姊妹事工',
+'search-interwiki-default' => '$1é …çµæžœ:',
+'search-interwiki-more' => '(閣有)',
+'search-mwsuggest-enabled' => '有建議',
+'search-mwsuggest-disabled' => '無建議',
+'search-relatedarticle' => '相關的',
+'mwsuggest-disable' => 'åœæŽ‰AJAX的建議',
+'searcheverything-enable' => 'æ£æ‰€æœ‰çš„å空間',
'searchrelated' => '相關的',
'searchall' => 'choân-pÅ·',
'showingresults' => 'Ä’-kha tùi #<b>$2</b> khai-sí hián-sÄ« <b>$1</b> hÄng kiat-kó.',
'showingresultsnum' => 'Ä’-kha tùi #<b>$2</b> khai-sí hián-sÄ« <b>$3</b> hÄng kiat-kó.',
'showingresultsheader' => "å°'''$4'''çš„{{PLURAL:$5|第'''$1'''到第'''$3'''é …çµæžœ|第'''$1 - $2'''項,總共'''$3'''é …çµæžœ}}",
+'nonefound' => "'''注æ„''':åªæœ‰ä¸€å¯¡å空間是é è¨­æœƒåŽ»æ£ã€‚試''all:''去æ£æ‰€æœ‰çš„é ï¼ˆåŒ…括討論é ã€æž‹æ¨¡ç­‰ç­‰ï¼‰ï¼ŒæŠ‘是頭å‰æŒ‡å®šå空間。",
'search-nonefound' => 'æ£ç„¡æ¬²æ„›çš„',
'powersearch' => 'Kiám-sek',
'powersearch-legend' => 'Kiám-sek',
+'powersearch-ns' => '佇下跤的å空間æ£ï¼š',
+'powersearch-redir' => '轉é æ¸…å–®',
+'powersearch-field' => 'æ£',
+'powersearch-togglelabel' => 'é¸å®šï¼š',
+'powersearch-toggleall' => '所有的',
+'powersearch-togglenone' => 'ç„¡',
+'search-external' => '外部的æœæ£',
+'searchdisabled' => '{{SITENAME}}因為性能方é¢çš„原因,全文æœæ£å·²ç¶“暫時åœç”¨ã€‚你會使暫時é€éŽGoogleæœæ£ã€‚請注æ„怹的索引å¯èƒ½éŽæ™‚。',
# Quickbar
-'qbsettings' => 'Quickbar ê siat-tēng',
+'qbsettings' => 'Quickbar ê siat-tēng',
+'qbsettings-none' => 'ç„¡',
+'qbsettings-fixedleft' => '倒手爿固定',
+'qbsettings-fixedright' => '正手爿固定',
+'qbsettings-floatingleft' => '倒手爿無固定',
+'qbsettings-floatingright' => '正手爿無固定',
# Preferences page
-'preferences' => 'Siat-tēng',
-'mypreferences' => 'Góa ê siat-tēng',
-'prefsnologin' => 'Bô teng-jiÌp',
-'prefsnologintext' => 'Lí it-tÄ“ng ài [[Special:UserLogin|teng-jiÌp]] chiah Ä“-tàng chhiâu iÅng-chiá ê siat-tÄ“ng.',
-'changepassword' => 'OÄâ¿ biÌt-bé',
-'prefs-skin' => 'Phôe',
-'skin-preview' => 'Chhì khoàâ¿',
-'prefs-math' => 'Sò·-haÌk ê rendering',
-'datedefault' => 'Chhìn-chhái',
-'prefs-datetime' => 'JiÌt-kî kap sî-kan',
-'prefs-personal' => 'IÅng-chiá chu-liÄu',
-'prefs-rc' => 'Chòe-kīn ê kái-piàn & stub ê hián-sī',
-'prefs-watchlist' => 'Kàm-sÄ«-toaâ¿',
-'prefs-watchlist-days' => 'Kàm-sÄ«-toaâ¿ hián-sÄ« kúi kang lÄi--ê:',
-'prefs-watchlist-edits' => 'Khok-chhiong ê kàm-sÄ«-toaâ¿ tioÌh hián-sÄ« kúi hÄng pian-chiÌp:',
-'prefs-misc' => 'Kî-tha⿠ê siat-tēng',
-'saveprefs' => 'Pó-chûn siat-tēng',
-'resetprefs' => 'Têng siat-tēng',
-'prefs-editing' => 'Pian-chiÌp',
-'rows' => 'ChÅa:',
-'columns' => 'Nôa',
-'searchresultshead' => 'Chhiau-chhÅe kiat-kó ê siat-tÄ“ng',
-'resultsperpage' => '1 iaÌh hián-sÄ« kúi kiÄâ¿:',
-'contextlines' => '1 kiÄâ¿ hián-sÄ« kúi chÅa:',
-'contextchars' => '1 chÅa hián-sÄ« kúi jÄ« ê chêng-Äu-bûn:',
-'recentchangesdays' => 'Hián-sÄ« kúi jiÌt chòe-kÄ«n ê kái-piàn:',
-'recentchangescount' => 'Hián-sī kúi tiâu chòe-kīn ê kái-piàn:',
-'savedprefs' => 'Lí ê iÅng-chiá siat-tÄ“ng í-keng pó-chûn khí lâi ah.',
-'timezonelegend' => 'Sî-khu',
-'localtime' => 'ChÄi-tÄ“ sî-kan sÄ«:',
-'timezoneoffset' => 'Sî-chha¹:',
-'servertime' => 'Server sî-kan hiÄn-chÄi sÄ«:',
-'guesstimezone' => 'Tùi liû-lám-khì chhau--lâi',
-'allowemail' => 'Ún-chún paÌt-ê iÅng-chiá kià email kòe-lâi',
-'defaultns' => 'TÄ« chiah ê miâ-khong-kan chhiau-chhÅe:',
-'prefs-files' => 'Tóng-àn',
-'youremail' => 'Lí ê email:',
-'yourrealname' => 'Lí ê chin miâ:',
-'yourlanguage' => 'Kài-bīn gú-giân:',
-'yournick' => 'Lí ê sió-miâ (chhiam-miâ iÅng):',
-
-'grouppage-sysop' => '{{ns:project}}:Hêng-chèng jîn-oân',
+'preferences' => 'Siat-tēng',
+'mypreferences' => 'Góa ê siat-tēng',
+'prefs-edits' => '編輯幾擺:',
+'prefsnologin' => 'Bô teng-jiÌp',
+'prefsnologintext' => 'Lí it-tÄ“ng ài <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} teng-jiÌp]</span> chiah Ä“-tàng chhiâu iÅng-chiá ê siat-tÄ“ng.',
+'changepassword' => 'OÄâ¿ biÌt-bé',
+'prefs-skin' => 'Phôe',
+'skin-preview' => 'Chhì khoàâ¿',
+'datedefault' => 'Chhìn-chhái',
+'prefs-datetime' => 'JiÌt-kî kap sî-kan',
+'prefs-personal' => 'IÅng-chiá chu-liÄu',
+'prefs-rc' => 'Chòe-kīn ê kái-piàn & stub ê hián-sī',
+'prefs-watchlist' => 'Kàm-sÄ«-toaâ¿',
+'prefs-watchlist-days' => 'Kàm-sÄ«-toaâ¿ hián-sÄ« kúi kang lÄi--ê:',
+'prefs-watchlist-days-max' => '上濟七工',
+'prefs-watchlist-edits' => 'Khok-chhiong ê kàm-sÄ«-toaâ¿ tioÌh hián-sÄ« kúi hÄng pian-chiÌp:',
+'prefs-watchlist-edits-max' => '上大的數目:1000',
+'prefs-watchlist-token' => '監視列表的密鑰:',
+'prefs-misc' => 'Kî-tha⿠ê siat-tēng',
+'prefs-resetpass' => '改密碼',
+'prefs-email' => 'é›»å­æ‰¹çš„é¸é …',
+'prefs-rendering' => '外觀',
+'saveprefs' => 'Pó-chûn siat-tēng',
+'resetprefs' => 'Têng siat-tēng',
+'restoreprefs' => '全部æ”æ¢å¾©åšè¨­ä¾¿çš„',
+'prefs-editing' => 'Pian-chiÌp',
+'prefs-edit-boxsize' => '編輯框的寸尺',
+'rows' => 'ChÅa:',
+'columns' => 'Nôa',
+'searchresultshead' => 'Chhiau-chhÅe kiat-kó ê siat-tÄ“ng',
+'resultsperpage' => '1 iaÌh hián-sÄ« kúi kiÄâ¿:',
+'stub-threshold' => '<a href="#" class="stub">短é é€£çµ</a>的門檻值 (ä½å…ƒçµ„):',
+'stub-threshold-disabled' => '莫用',
+'recentchangesdays' => 'Hián-sÄ« kúi jiÌt chòe-kÄ«n ê kái-piàn:',
+'recentchangesdays-max' => '上濟$1{{PLURAL:$1|工|工}}',
+'recentchangescount' => 'Beh hián-sī kúi tiâu chòe-kīn kái--ê:',
+'prefs-help-recentchangescount' => '這包括最近改的ã€é çš„æ­·å²ä½®è¨˜éŒ„',
+'prefs-help-watchlist-token' => '佇這个欄ä½åŠ å…¥ä¸€ä¸ªå¯†é‘°ï¼Œä¼Šä½‡ä½ è¨‚看監視清單 RSS內底嘛會產生。
+任何人若知影這个欄ä½çš„密鑰,就會當看你的監視清單,請é¸ä¸€ä¸ªå®‰å…¨çš„數字。
+é®æœ‰ä¸€ä¸ªéš¨æ„產生的數字你通用:$1',
+'savedprefs' => 'Lí ê iÅng-chiá siat-tÄ“ng í-keng pó-chûn khí lâi ah.',
+'timezonelegend' => 'Sî-khu',
+'localtime' => 'ChÄi-tÄ“ sî-kan sÄ«:',
+'timezoneuseserverdefault' => '使用Wiki設便的($1)',
+'timezoneuseoffset' => '其他 (指定åå·®é‡ï¼‰',
+'timezoneoffset' => 'Sî-chha¹:',
+'servertime' => 'Server sî-kan hiÄn-chÄi sÄ«:',
+'guesstimezone' => 'Tùi liû-lám-khì chhau--lâi',
+'timezoneregion-africa' => 'éžæ´²',
+'timezoneregion-america' => '美洲',
+'timezoneregion-antarctica' => 'å—極洲',
+'timezoneregion-arctic' => '北極',
+'timezoneregion-asia' => '亞洲',
+'timezoneregion-atlantic' => '大西洋',
+'timezoneregion-australia' => '澳洲',
+'timezoneregion-europe' => 'æ­æ´²',
+'timezoneregion-indian' => 'å°åº¦æ´‹',
+'timezoneregion-pacific' => '太平洋',
+'allowemail' => 'Ún-chún paÌt-ê iÅng-chiá kià email kòe-lâi',
+'prefs-searchoptions' => 'æœæ£çš„é¸é …',
+'prefs-namespaces' => 'å空間',
+'defaultns' => 'TÄ« chiah ê miâ-khong-kan chhiau-chhÅe:',
+'default' => '設便',
+'prefs-files' => 'Tóng-àn',
+'prefs-custom-css' => ' 家己設的CSS',
+'prefs-custom-js' => ' 家己設的JavaScript',
+'prefs-common-css-js' => '共 CSS/JavaScript 分享佇所有的外觀:',
+'prefs-reset-intro' => '你會當用這é åŽ»æ”¹åšåŽŸæœ¬è¨­ä¾¿çš„。
+這个動作無法度å–消。',
+'prefs-emailconfirm-label' => 'é›»å­æ‰¹çš„確定:',
+'prefs-textboxsize' => '編輯框的大細',
+'youremail' => 'Lí ê email:',
+'username' => '用者å稱:',
+'uid' => '用者編號:',
+'prefs-memberingroups' => '{{PLURAL:$1|這陣人|這陣人}}çš„æˆå“¡ï¼š',
+'prefs-registration' => '註冊時間:',
+'yourrealname' => 'Lí ê chin miâ:',
+'yourlanguage' => 'Kài-bīn gú-giân:',
+'yourvariant' => 'é å…§å®¹çš„語文:',
+'yournick' => 'Lí ê sió-miâ (chhiam-miâ iÅng):',
+'prefs-help-signature' => '佇討論é çš„評論應該愛用「<nowiki>~~~~</nowiki>ã€ç°½å,彼會轉變åšä½ çš„ç°½å佮戳å°ä¸€ä¸ªæ™‚間。',
+'badsig' => '錯誤的原始簽å,
+請檢查HTML標籤。',
+'badsiglength' => 'ä½ çš„ç°½åå‚·éŽé•·ï¼Œ
+伊的長度袂使超éŽ{{PLURAL:$1|个|个}}字元。',
+'yourgender' => '性別:',
+'gender-unknown' => '無表明',
+'gender-male' => '查埔',
+'gender-female' => '查æŸ',
+'prefs-help-gender' => 'é¸é …:用佇軟體的性別指定,
+這項資料會公開。',
+'email' => 'é›»å­æ‰¹',
+'prefs-help-realname' => '你的真實å字無一定愛,
+若你欲æ供,伊會附佇你貢 ç»çš„作å“。',
+'prefs-help-email' => 'TiÄn-chú-phoe ê chÅ«-chí mÌ„-sÄ« it-tÄ“ng ài, mÌ„-koh tÄ« lí bÄ“-kì biÌt-bé beh tîng siat-tÄ«ng tŠài.',
+'prefs-help-email-others' => 'Lí Ä“-sái thàu--koè lí ê iaÌh , thó-lÅ«n-iaÌh ê liân kiat hÅ͘ lâng Ä“ng e-mail kah lí liân-loÌk.
+TÄ« pat-lâng liân-loÌk lí ê sî-chÅ«n bÄ“ kÄ e-mail tsÅ«-tsí siá chhut--lâi.',
+'prefs-help-email-required' => '愛有電å­æ‰¹åœ°å€',
+'prefs-info' => '基本資料',
+'prefs-i18n' => '國際化',
+'prefs-signature' => 'ç°½å',
+'prefs-dateformat' => '顯示日期的è¦æ ¼',
+'prefs-timeoffset' => '佮標準時間的åå·®',
+'prefs-advancedediting' => '進一步的é¸é …',
+'prefs-advancedrc' => '進一步的é¸é …',
+'prefs-advancedrendering' => '進一步的é¸é …',
+'prefs-advancedsearchoptions' => '進一步的é¸é …',
+'prefs-advancedwatchlist' => '進一步的é¸é …',
+'prefs-displayrc' => '顯示的é¸é …',
+'prefs-displaysearchoptions' => '顯示的é¸é …',
+'prefs-displaywatchlist' => '顯示的é¸é …',
+'prefs-diffs' => '精差',
+
+# User preference: e-mail validation using jQuery
+'email-address-validity-valid' => 'é›»å­æ‰¹åœ°å€çœ‹èµ·ä¾†æ˜¯æœ‰æ•ˆçš„',
+'email-address-validity-invalid' => 'æ‹ä¸€ä¸ªæœ‰æ•ˆçš„é›»å­æ‰¹åœ°å€',
+
+# User rights
+'userrights' => '用者的權é™ç®¡ç†',
+'userrights-lookup-user' => '管ç†ç”¨è€…的陣營',
+'userrights-user-editname' => '輸入一个用者å稱:',
+'editusergroup' => '設定用者的陣營',
+'userrights-editusergroup' => '設定用者的陣營',
+'saveusergroups' => 'ä¿å­˜ç”¨è€…的陣營',
+'userrights-groupsmember' => 'æˆå“¡ï¼š',
+'userrights-groupsmember-auto' => '自本的æˆå“¡ï¼š',
+'userrights-groups-help' => '你會動改用者所屬的陣營:
+* é ­å‰æœ‰å‹¾èµ·ä¾†çš„代表用者屬彼陣營
+* é ­å‰ç„¡å‹¾èµ·ä¾†çš„代表用者無屬彼陣營
+* 有 * 的項目,表示你會當加袂當減倒轉來,抑是會當減袂當加倒轉來',
+'userrights-reason' => 'ç†ç”±ï¼š',
+'userrights-no-interwiki' => '你無權去設定其它wiki上的用者權利。',
+'userrights-nodatabase' => 'ç„¡$1資料庫抑是éžæœ¬åœ°çš„',
+'userrights-nologin' => '你愛管ç†å“¡çš„å£åº§[[Special:UserLogin|登入]]了後,æ‰æœƒç•¶æŒ‡å®šç”¨è€…權利。',
+'userrights-notallowed' => 'ä½ å£åº§çš„無授權你會當加添用者權利',
+'userrights-changeable-col' => '你會當改的陣營',
+'userrights-unchangeable-col' => '你袂當改的陣營',
+
+# Groups
+'group' => '陣營:',
+'group-user' => '用者:',
+'group-autoconfirmed' => '自動確èªçš„用者',
+'group-bot' => '機器人',
+'group-sysop' => '管ç†å“¡',
+'group-bureaucrat' => '行政人員',
+'group-suppress' => '監ç£',
+'group-all' => '(全部)',
+
+'grouppage-user' => '{{ns:project}}:用者',
+'grouppage-autoconfirmed' => '{{ns:project}}:自動確èªçš„用者',
+'grouppage-bot' => '{{ns:project}}:機器人',
+'grouppage-sysop' => '{{ns:project}}:Hêng-chèng jîn-oân',
+'grouppage-bureaucrat' => '{{ns:project}}:行政人員',
+'grouppage-suppress' => '{{ns:project}}:監ç£',
+
+# Rights
+'right-read' => '看é ',
+'right-edit' => '改é ',
+'right-createpage' => 'é–‹æ–°é ï¼ˆç„¡åŒ…括討論é ï¼‰',
+'right-createtalk' => '開新討論é ',
+'right-createaccount' => '開新用者å£åº§',
+'right-minoredit' => '標示åšå°ç·¨è¼¯',
+'right-move' => 'å¾™é ',
+'right-move-subpages' => 'å¾™é ï¼Œé€£ä¼Šçš„次é ',
+'right-move-rootuserpages' => '徙用者rootçš„é ',
+'right-movefile' => '徙檔案',
+'right-suppressredirect' => 'å¾™é çš„時陣,無共原本的é æ”¹åšè½‰å‘é ',
+'right-upload' => '上載檔案',
+'right-reupload' => 'å–代原本的檔案',
+'right-reupload-own' => 'å–代別人上載的原本檔案',
+'right-reupload-shared' => '莫用共用媒體檔案庫上的檔案',
+'right-upload_by_url' => 'å°ä¸€ä¸ªç¶²å€(URL)上載檔案',
+'right-purge' => '直接清掉網站é çš„cache,毋å…閣確定',
+'right-autoconfirmed' => '編輯åŠä¿è­·çš„é ',
+'right-bot' => '看åšæ˜¯ä¸€ä¸ªè‡ªå‹•ç¨‹åº',
+'right-nominornewtalk' => '佇討論é çš„å°ç·¨è¼¯ç„¡ç™¼æ–°è¨Šæ¯',
+'right-apihighlimits' => '佇API查詢的時陣,用較懸的é™åˆ¶é‡',
+'right-writeapi' => '使用API編寫',
+'right-delete' => '刣é ',
+'right-bigdelete' => '刣掉é çš„誠濟歷å²',
+'right-deleterevision' => '刣掉佮å–消刣掉é çš„指定修訂本',
+'right-deletedhistory' => '看已經刣掉的歷å²é …目,ä¸åŒ…括相關的文本',
+'right-deletedtext' => '看已經刣掉修訂本當中,刣掉的文字佮變化',
+'right-browsearchive' => 'æ£åˆ£æŽ‰çš„é ',
+'right-undelete' => '共刣掉的é æ•‘倒轉來',
+'right-suppressrevision' => 'æ¢å¾©ç”±ç®¡ç†å“¡éš±è—掉的修訂本',
+'right-suppressionlog' => '看ç§äººçš„記錄',
+'right-block' => 'å°éŽ–其他用者,予怹袂當編輯',
+'right-blockemail' => 'å°éŽ–一个用者,予伊袂當寄電å­æ‰¹',
+'right-hideuser' => 'å°éŽ–一个用者å稱,無å°å¤§çœ¾å…¬é–‹',
+'right-ipblock-exempt' => 'è·³éŽIPå°éŽ–ã€è‡ªå‹•å°éŽ–佮範åœå°éŽ–',
+'right-proxyunbannable' => 'è·³éŽProxy的自動å°éŽ–',
+'right-unblockself' => 'å–消怹的å°éŽ–',
+'right-protect' => '改ä¿è­·å±¤ç´šè€Œä¸”編輯hôngä¿è­·çš„é ',
+'right-editprotected' => '編輯ä¿è­·ä¸­çš„é ï¼ˆç„¡é€£éŽ–ä¿è­·ï¼‰',
+'right-editinterface' => '編輯用者介é¢',
+'right-editusercssjs' => '編輯其他用者的CSS佮JavaScript檔案',
+'right-editusercss' => '編輯其他用者的CSS檔案',
+'right-edituserjs' => '編輯其他用者的JavaScript檔案',
+'right-rollback' => 'å…±æŸä¸€é çš„頂一个用戶所åšçš„編輯鉸轉去',
+'right-markbotedits' => '共復原編輯標示åšæ©Ÿæ¢°äººç·¨è¼¯',
+'right-noratelimit' => 'ç„¡å—著頻率é™åˆ¶çš„影響',
+'right-import' => 'å°åˆ¥ä¸ªWiki匯入é ',
+'right-importupload' => 'å°ä¸€ä¸ªä¸Šè¼‰æª”案匯入é ',
+'right-autopatrol' => '家己的編輯自動標示åšå·¡éŽ',
+'right-patrolmarks' => '看最近巡查編輯的標記',
+'right-unwatchedpages' => '看é ç„¡äººç›£è¦–的清單',
+'right-trackback' => 'é€å‡ºä¸€ä¸ªtrackback',
+'right-mergehistory' => '相佮一寡é çš„æ­·å²',
+'right-userrights' => '編輯所有用者的權利é™åˆ¶',
+'right-userrights-interwiki' => '編輯å°å…¶å®ƒwiki來的用者權é™',
+'right-siteadmin' => 'å°éŽ–閣開鎖資料庫',
+'right-override-export-depth' => '輸出é ï¼ŒåŒ…括連到的é åˆ°5層深',
+'right-sendemail' => '寄電å­æ‰¹äºˆå…¶ä»–用者',
# User rights log
-'rightslogtext' => 'Chit-ê log liaÌt-chhut kái-piàn iÅng-chiá koân-lÄ« ê tÅng-chok.',
+'rightslog' => '用者使用權記錄',
+'rightslogtext' => 'Chit-ê log liaÌt-chhut kái-piàn iÅng-chiá koân-lÄ« ê tÅng-chok.',
+'rightslogentry' => 'å…± $1 的權利é™åˆ¶å° $2 æ”¹åš $3',
+'rightslogentry-autopromote' => '自動å°$2æå‡è‡³$3',
+'rightsnone' => '(無)',
# Associated actions - in the sentence "You do not have permission to X"
+'action-read' => '看這é ',
'action-edit' => 'Siu-kái chit iaÌh',
+'action-createpage' => 'é–‹æ–°é ',
+'action-createtalk' => '開討論é ',
+'action-createaccount' => '開這个用者å£åº§',
+'action-minoredit' => '標示åšå°ç·¨è¼¯',
+'action-move' => '徙這é ',
+'action-move-subpages' => '徙這é ï¼Œä½®ä¼Šçš„次é ',
+'action-move-rootuserpages' => '徙用者rootçš„é ',
+'action-movefile' => '徙這个檔案',
+'action-upload' => '上載這个檔案',
+'action-reupload' => 'å–代原本的檔案',
+'action-reupload-shared' => '莫用共用媒體檔案庫é¢é ‚的檔案',
+'action-upload_by_url' => 'å°ä¸€ä¸ªç¶²å€(URL)上載這个檔案',
+'action-writeapi' => '使用API編寫',
+'action-delete' => '刣掉這é ',
+'action-deleterevision' => '刣掉這个修訂本',
+'action-deletedhistory' => '看這个é hông刣掉的歷å²',
+'action-browsearchive' => 'æ£åˆ£æŽ‰çš„é ',
+'action-undelete' => '共刣掉的é æ•‘倒轉來',
+'action-suppressrevision' => '看而且å–消這个è—起來的修訂本',
+'action-suppressionlog' => '看這个ç§äººè¨˜éŒ„',
+'action-block' => 'å°éŽ–這个用者,予伊袂當編輯',
'action-protect' => '改這é çš„ä¿è­·å±¤ç´š',
'action-import' => 'å°åˆ¥ä¸ªWiki匯入這é ',
'action-importupload' => 'å°ä¸€ä¸ªä¸Šè¼‰æª”案匯入這é ',
@@ -891,34 +1277,38 @@ $3å…±ç¦æ­¢çš„原因是 ''$2''。",
'action-siteadmin' => 'å°éŽ–抑開鎖資料庫',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|改|改}}',
-'recentchanges' => 'Chòe-kīn ê kái-piàn',
-'recentchanges-legend' => '最近編輯的é¸é …',
-'recentchangestext' => '佇這é ï¼Œçœ‹é˜®é€™ä¸ªWiki最近改的',
-'recentchanges-feed-description' => '訂看這个Wiki最近改的',
-'recentchanges-label-newpage' => 'Chit ê siu-kái Ä“ sán-seng sin iaÌh',
-'recentchanges-label-minor' => 'Che sī sió siu-kái',
-'recentchanges-label-bot' => '這个編輯是機器人åšçš„',
-'recentchanges-label-unpatrolled' => '這个編輯猶未巡éŽ',
-'rcnote' => "下é¢æ˜¯ä½‡$4 $5,最近{{PLURAL:$2|å·¥|'''$2'''å·¥}}內的{{PLURAL:$1|'''1'''改|é ‚'''$1'''改}}修改記錄。",
-'rcnotefrom' => 'Ä’-kha sÄ« <b>$2</b> kàu ta⿠ê kái-piàn (keÌk-ke hián-sÄ« <b>$1</b> hÄng).',
-'rclistfrom' => 'Hián-sī tùi $1 kàu ta⿠ê sin kái-piàn',
-'rcshowhideminor' => '$1 sió siu-kái',
-'rcshowhidebots' => '$1機器人所åšçš„',
-'rcshowhideliu' => '$1 teng-jiÌp ê iÅng-chiá',
-'rcshowhideanons' => '$1 bû-bêng-sī',
-'rcshowhidepatr' => '$1å·¡éŽçš„編輯',
-'rcshowhidemine' => '$1 góa ê pian-chiÌp',
-'rclinks' => 'Hían-sÄ« $2 jiÌt lÄi siÅng sin ê $1 hÄng kái-piàn<br />$3',
-'diff' => 'Cheng-chha',
-'hist' => 'ls',
-'hide' => 'am',
-'show' => 'hían-sī',
-'minoreditletter' => '~',
-'newpageletter' => '!',
-'boteditletter' => 'b',
-'rc-enhanced-expand' => '看內容(愛有JavaScript)',
-'rc-enhanced-hide' => 'è—內容',
+'nchanges' => '$1 {{PLURAL:$1|改|改}}',
+'recentchanges' => 'Chòe-kīn ê kái-piàn',
+'recentchanges-legend' => '最近編輯的é¸é …',
+'recentchangestext' => '佇這é ï¼Œçœ‹é˜®é€™ä¸ªWiki最近改的',
+'recentchanges-feed-description' => '訂看這个Wiki最近改的',
+'recentchanges-label-newpage' => 'Chit ê siu-kái Ä“ sán-seng sin iaÌh',
+'recentchanges-label-minor' => 'Che sī sió siu-kái',
+'recentchanges-label-bot' => '這个編輯是機器人åšçš„',
+'recentchanges-label-unpatrolled' => '這个編輯猶未巡éŽ',
+'rcnote' => "下é¢æ˜¯ä½‡$4 $5,最近{{PLURAL:$2|å·¥|'''$2'''å·¥}}內的{{PLURAL:$1|'''1'''改|é ‚'''$1'''改}}修改記錄。",
+'rcnotefrom' => 'Ä’-kha sÄ« <b>$2</b> kàu ta⿠ê kái-piàn (keÌk-ke hián-sÄ« <b>$1</b> hÄng).',
+'rclistfrom' => 'Hián-sī tùi $1 kàu ta⿠ê sin kái-piàn',
+'rcshowhideminor' => '$1 sió siu-kái',
+'rcshowhidebots' => '$1機器人所åšçš„',
+'rcshowhideliu' => '$1 teng-jiÌp ê iÅng-chiá',
+'rcshowhideanons' => '$1 bû-bêng-sī',
+'rcshowhidepatr' => '$1å·¡éŽçš„編輯',
+'rcshowhidemine' => '$1 góa ê pian-chiÌp',
+'rclinks' => 'Hían-sÄ« $2 jiÌt lÄi siÅng sin ê $1 hÄng kái-piàn<br />$3',
+'diff' => 'Cheng-chha',
+'hist' => 'ls',
+'hide' => 'am',
+'show' => 'hían-sī',
+'minoreditletter' => '~',
+'newpageletter' => '!',
+'boteditletter' => 'b',
+'number_of_watching_users_pageview' => '[$1个愛注æ„çš„{{PLURAL:$1|用者|用者}}]',
+'rc_categories' => '分類界線(以"|"分開)',
+'rc_categories_any' => '任何',
+'newsectionsummary' => '/* $1 */ 新段è½',
+'rc-enhanced-expand' => '看內容(愛有JavaScript)',
+'rc-enhanced-hide' => 'è—內容',
# Recent changes linked
'recentchangeslinked' => 'Siong-koan ê kái-piàn',
@@ -932,29 +1322,61 @@ $3å…±ç¦æ­¢çš„原因是 ''$2''。",
'recentchangeslinked-to' => '顯示連到我æ‹å…¥çš„é å閣有改éŽçš„',
# Upload
-'upload' => 'KÄ tóng-àn chiÅ«â¿-bÄng',
-'uploadbtn' => 'KÄ tóng-àn chiÅ«â¿-bÄng',
-'reuploaddesc' => 'Tò khì sàng-chiÅ«â¿-bÄng ê pió.',
-'uploadnologin' => 'Bô teng-jiÌp',
-'uploadnologintext' => 'Bô [[Special:UserLogin|teng-jiÌp]] bÄ“-sái-tit kÄ tóng-àn sàng-chiÅ«â¿-bÄng.',
-'uploaderror' => 'Upload chhò-gÅ·',
-'uploadlogpage' => '上載記錄',
-'uploadlogpagetext' => 'Ã-hÄ sÄ« chòe-kÄ«n sàng-chiÅ«â¿-bÄng ê tóng-àn ê liaÌt-toaâ¿.',
-'filename' => 'Tóng-àn',
-'filedesc' => 'Khài-iàu',
-'fileuploadsummary' => 'Khài-iàu:',
-'uploadedfiles' => 'Tóng-àn í-keng sàng chiÅ«â¿-bÄng',
-'ignorewarning' => 'Mài chhap kéng-kò, kÄ tóng-àn pó-chûn khí lâi.',
-'ignorewarnings' => 'Mài chhap kéng-kò',
-'badfilename' => 'Iáâ¿-siÅng ê miâ í-keng kái chò "$1".',
-'uploadwarning' => 'Upload kéng-kò',
-'savefile' => 'Pó-chûn tóng-àn',
-'uploadedimage' => 'thoân "[[$1]]" chiÅ«â¿-bÄng',
-'uploaddisabled' => 'Pháiâ¿-sè, sàng chiÅ«â¿-bÄng ê kong-lêng bô khui.',
-'sourcefilename' => 'Tóng-àn goân miâ:',
-'destfilename' => 'Tóng-àn sin miâ:',
-'watchthisupload' => 'Kàm-sī chit ê tóng-àn',
-'upload-success-subj' => 'Sàng-chiÅ«â¿-bÄng sêng-kong',
+'upload' => 'KÄ tóng-àn chiÅ«â¿-bÄng',
+'uploadbtn' => 'KÄ tóng-àn chiÅ«â¿-bÄng',
+'reuploaddesc' => 'Tò khì sàng-chiÅ«â¿-bÄng ê pió.',
+'upload-tryagain' => 'é€å‡ºæ”¹éŽäº†å¾Œçš„檔案æè¿°',
+'uploadnologin' => 'Bô teng-jiÌp',
+'uploadnologintext' => 'Bô [[Special:UserLogin|teng-jiÌp]] bÄ“-sái-tit kÄ tóng-àn sàng-chiÅ«â¿-bÄng.',
+'upload_directory_missing' => '無上傳的目錄($1),彼袂當由網é ä¼ºæœå™¨å»ºç«‹ã€‚',
+'upload_directory_read_only' => '無上載目錄($1),抑是網é ä¼ºæœå™¨ç„¡æ¬Šå¯«å…¥',
+'uploaderror' => 'Upload chhò-gÅ·',
+'upload-recreate-warning' => "'''注æ„:一个ä»å的檔案æŒhông刣掉抑是徙去別ä½ã€‚'''
+
+這é çš„刣掉ã€å¾™æŒ¯å‹•è¨˜éŒ„佇下跤通åƒè€ƒï¼š",
+'uploadtext' => "用下跤的表來共檔案上載。
+若欲看抑是æ£å¾€éŽä¸Šè¼‰çš„檔案,會使進入[[Special:FileList|檔案上載清單]],(é‡ï¼‰ä¸Šè¼‰å˜›æœƒè¨˜éŒ„佇[[Special:Log/upload|上傳記錄]],若刣掉就會記錄佇[[Special:Log/delete|刪除記錄]]。
+
+若欲佇é åŠ å…¥æª”案,用下跤的一種方å¼ä¾†é€£çµï¼š
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>'''使用檔案的完整版本
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|替æ›æ–‡å­—]]</nowiki></tt>'''用一个囥佇倒爿的一个200 åƒç´ åœ–相框,「替æ›æ–‡å­—ã€åšèªªæ˜Ž
+* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>'''直接連çµåˆ°æª”案,毋éŽç„¡é¡¯ç¤ºæª”案",
+'upload-permitted' => '准許的檔案類型: $1',
+'upload-preferred' => '建議的檔案類型: $1',
+'upload-prohibited' => 'ç¦æ­¢çš„檔案類型: $1。',
+'uploadlog' => '上載記錄',
+'uploadlogpage' => '上載記錄',
+'uploadlogpagetext' => 'Ã-hÄ sÄ« chòe-kÄ«n sàng-chiÅ«â¿-bÄng ê tóng-àn ê liaÌt-toaâ¿.',
+'filename' => 'Tóng-àn',
+'filedesc' => 'Khài-iàu',
+'fileuploadsummary' => 'Khài-iàu:',
+'filereuploadsummary' => '改æ›æª”案的說明:',
+'filestatus' => '版權狀æ³:',
+'filesource' => '來æºï¼š',
+'uploadedfiles' => 'Tóng-àn í-keng sàng chiÅ«â¿-bÄng',
+'ignorewarning' => 'Mài chhap kéng-kò, kÄ tóng-àn pó-chûn khí lâi.',
+'ignorewarnings' => 'Mài chhap kéng-kò',
+'minlength1' => '檔案的å上少愛有一字',
+'illegalfilename' => '檔案å“$1â€æœ‰è¢‚用得用佇標題的字,
+請改å了後é‡æ–°ä¸Šè¼‰ã€‚',
+'badfilename' => 'Iáâ¿-siÅng ê miâ í-keng kái chò "$1".',
+'filetype-bad-ie-mime' => '袂當上載這个檔案,因為 Internet Explorer 會共伊åµæ¸¬åš "$1",彼種袂使,å¯èƒ½æ˜¯æœ‰æ‰€å±å®³çš„檔案類型。',
+'filetype-unwanted-type' => "'''\".\$1\"'''是袂當上載的檔案類型,
+é©ç•¶çš„{{PLURAL:\$3|檔案類型|檔案類型}}是\$2。",
+'filetype-missing' => '彼个檔案å稱無副檔å ï¼ˆè¦ªåƒ ".jpg")。',
+'empty-file' => 'ä½ é€å‡ºä¾†çš„檔案是空的',
+'file-too-large' => 'ä½ é€å‡ºä¾†çš„檔案傷éŽå¤§',
+'filename-tooshort' => '檔案å傷短',
+'filetype-banned' => '這類的檔案被ç¦æ­¢',
+'verification-error' => '這个檔案無通éŽé©—è­‰',
+'uploadwarning' => 'Upload kéng-kò',
+'savefile' => 'Pó-chûn tóng-àn',
+'uploadedimage' => 'thoân "[[$1]]" chiÅ«â¿-bÄng',
+'uploaddisabled' => 'Pháiâ¿-sè, sàng chiÅ«â¿-bÄng ê kong-lêng bô khui.',
+'sourcefilename' => 'Tóng-àn goân miâ:',
+'destfilename' => 'Tóng-àn sin miâ:',
+'watchthisupload' => 'Kàm-sī chit ê tóng-àn',
+'upload-success-subj' => 'Sàng-chiÅ«â¿-bÄng sêng-kong',
'license' => 'Siū-khoân:',
'license-header' => 'Siū-khoân',
@@ -970,7 +1392,7 @@ $3å…±ç¦æ­¢çš„原因是 ''$2''。",
# File description page
'file-anchor-link' => 'Tóng-àn',
'filehist' => 'Tóng-àn ê leÌk-sú',
-'filehist-help' => 'æ¤æ—¥æœŸï¼æ™‚間通看彼時陣的檔案',
+'filehist-help' => 'æ¤æ—¥æœŸï¼æ™‚間就通看彼時陣的檔案',
'filehist-revert' => '回轉',
'filehist-current' => 'hiÄn-chÄi',
'filehist-datetime' => 'JiÌt-kî/ Sî-kan',
@@ -982,8 +1404,8 @@ $3å…±ç¦æ­¢çš„原因是 ''$2''。",
'imagelinks' => 'Ä’ng tioÌh ê tóng-àn',
'linkstoimage' => 'Ä’-bÄ«n ê {{PLURAL:$1|iaÌh liân kàu|$1 iaÌh liân kàu}} chit ê tóng-àn:',
'nolinkstoimage' => 'Bô poà⿠iaÌh liân kàu chit tiuâ¿ iáâ¿-siÅng.',
-'sharedupload-desc-here' => '這檔案å°$1é來的,伊å¯èƒ½å˜›ç”¨ä½‡åˆ¥çš„事工,
-伊的說明[$2 檔案說明é ]貼佇下跤。',
+'sharedupload-desc-here' => '這个檔案是å°$1é來的,伊å¯èƒ½å˜›ç”¨ä½‡åˆ¥çš„事工,
+伊[$2 檔案說明é ]的說明佇下跤。',
# MIME search
'mimesearch' => 'MIME chhiau-chhoē',
@@ -1129,9 +1551,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'nowatchlist' => 'Lí ê kàm-sÄ«-toaâ¿ bô pòaâ¿ hÄng.',
'watchnologin' => 'Bô teng-jiÌp',
'watchnologintext' => 'Lí it-tÄ“ng ài [[Special:UserLogin|teng-jiÌp]] chiah Ä“-tàng siu-kái lí ê kàm-sÄ«-toaâ¿.',
-'addedwatch' => 'Ã-keng ka-jiÌp kàm-sÄ«-toaâ¿',
'addedwatchtext' => "\"[[:\$1]]\" chit iaÌh í-keng ka-jiÌp lí ê [[Special:Watchlist|kàm-sÄ«-toaâ¿]]. BÄ«-lâi chit iaÌh aÌh-sÄ« siong-koan ê thó-lÅ«n-iaÌh nÄ Å« kái-piàn, Ä“ liaÌt tÄ« hia. Tông-sî tÄ« [[Special:RecentChanges|Chòe-kÄ«n ê kái-piàn]] Ä“ iÅng '''chho·-thé''' hián-sÄ« iaÌh ê piau-tê, án-ne khah bêng-hián. Ká-sú lí beh chiÅng chit iaÌh tùi lí ê kàm-sÄ«-toaâ¿ tû tiÄu, khì khòng-chè-tiâu chhiÌh \"Mài kàm-sÄ«\" chiÅ« Ä“-sái-tit.",
-'removedwatch' => 'Ã-keng tùi kàm-sÄ«-toaâ¿ tû tiÄu',
'removedwatchtext' => '"[[:$1]]" chit iaÌh í-keng tùi lí ê kàm-sÄ«-toaâ¿ tû tiÄu.',
'watch' => 'kàm-sī',
'watchthispage' => 'Kàm-sÄ« chit iaÌh',
@@ -1157,7 +1577,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'confirmdeletetext' => 'Lí tih-beh kÄ 1 ê iaÌh aÌh-sÄ« iáâ¿-siÅng (pau-koat siong-koan ê leÌk-sú) éng-kiú tùi chu-liÄu-khò· thâi tiÄu. Chhiá⿠khak-tÄ“ng lí àn-sǹg án-ne chò, jÄ«-chhiá⿠liáu-kái hiÅ-kó, jÄ«-chhiá⿠bô ûi-hoán [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Chip-hêng sêng-kong',
'actionfailed' => 'åšç„¡æˆ',
-'deletedtext' => '"<nowiki>$1</nowiki>" í-keng thâi tiÄu. Tùi $2 khoàâ¿-Ä“-tioÌh chòe-kÄ«n thâi ê kì-loÌk.',
+'deletedtext' => '"$1" í-keng thâi tiÄu. Tùi $2 khoàâ¿-Ä“-tioÌh chòe-kÄ«n thâi ê kì-loÌk.',
'deletedarticle' => 'Thâi tiÄu "[[$1]]"',
'dellogpage' => '刣掉的記錄',
'dellogpagetext' => 'Ã-hÄ liaÌt chhut chòe-kÄ«n thâi tiÄu ê hÄng-boÌk.',
@@ -1254,7 +1674,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'autoblocker' => 'ChÅ«-tÅng kìm-chí lí sú-iÅng, in-Å«i lí kap "$1" kong-ke kÄng 1 ê IP chÅ«-chí (kìm-chí lí-iû "$2").',
'blocklogpage' => 'å°éŽ–記錄',
'blocklogentry' => 'hong-só [[$1]], siat kî-hÄn chì $2 $3',
-'blocklogtext' => 'Chit-ê log liaÌt-chhut block/unblock ê tÅng-chok. ChÅ«-tÅng block ê IP chÅ«-chí bô liaÌt--chhut-lâi ([[Special:IPBlockList]] Å« hiÄn-chú-sî Å«-hÄu ê block/ban o·-miâ-toaâ¿).',
+'blocklogtext' => 'Chit-ê log liaÌt-chhut block/unblock ê tÅng-chok. ChÅ«-tÅng block ê IP chÅ«-chí bô liaÌt--chhut-lâi ([[Special:BlockList]] Å« hiÄn-chú-sî Å«-hÄu ê block/ban o·-miâ-toaâ¿).',
'block-log-flags-nocreate' => 'Khui kháu-chÅ thêng-iÅng ah',
# Developer tools
@@ -1374,14 +1794,6 @@ Lí ē-sái khoà⿠i ê goân-sú-bé.',
'othercontribs' => 'Kin-kù $1 ê kòng-hiàn.',
'siteusers' => '{{SITENAME}} iÅng-chiá $1',
-# Math options
-'mw_math_png' => 'TiÄâ¿-tioÌh iÅng PNG render',
-'mw_math_simple' => 'Tân-sûn ê chêng-hêng iÅng HTML; kî-thaâ¿ iÅng PNG',
-'mw_math_html' => 'ChÄ«n-liÅng iÅng HTML; kî-thaâ¿ iÅng PNG',
-'mw_math_source' => 'ÃŽ-chhî TeX ê keh-sek (khah haÌh bûn-jÄ«-sek ê liû-lám-khì)',
-'mw_math_modern' => 'Kiàn-gÄ« hiÄn-tÄi liû-lám-khì kéng che',
-'mw_math_mathml' => 'ChÄ«n-liÅng iÅng MathML (chhì-giÄm-sèng--ê)',
-
# Patrolling
'markaspatrolleddiff' => 'Phiau-sī sûn--kòe',
'markedaspatrolledtext' => 'Ã-keng phiau-sÄ« chit ê siu-tÄ“ng-pún Å« lâng sûn--kòe.',
@@ -1394,13 +1806,12 @@ Lí ē-sái khoà⿠i ê goân-sú-bé.',
'nextdiff' => 'Khì Äu 1 ê siu-kái →',
# Media information
-'imagemaxsize' => 'Iáâ¿-siÅng biô-suÌt-iaÌh ê tô· keÌk-ke hián-sÄ« jÅa tÅa tiuâ¿:',
-'thumbsize' => 'Sok-tô· (thumbnail) jÅa tÅa tiuâ¿:',
-'file-info-size' => '$1 × $2 åƒç´ ï¼Œæª”案大細:$3,MIME類型:$4',
-'file-nohires' => '<small>Bô khah koân ê kái-sek-tÅ͘.</small>',
-'svg-long-desc' => 'SVG 檔案,一般的長闊:$1 × $2 åƒç´ ï¼Œæª”案大å°ï¼š$3',
-'show-big-image' => '檔案解æžåº¦',
-'show-big-image-thumb' => '<small>Chit tiuâ¿ Å«-lám tô͘ (preview) ê toÄ-sè: $1 × $2 pixel</small>',
+'imagemaxsize' => 'Iáâ¿-siÅng biô-suÌt-iaÌh ê tô· keÌk-ke hián-sÄ« jÅa tÅa tiuâ¿:',
+'thumbsize' => 'Sok-tô· (thumbnail) jÅa tÅa tiuâ¿:',
+'file-info-size' => '$1 × $2 åƒç´ ï¼Œæª”案大細:$3,MIME類型:$4',
+'file-nohires' => '<small>Bô khah koân ê kái-sek-tÅ͘.</small>',
+'svg-long-desc' => 'SVG 檔案,一般的長闊:$1 × $2 åƒç´ ï¼Œæª”案大å°ï¼š$3',
+'show-big-image' => '檔案解æžåº¦',
# Special:NewFiles
'newimages' => 'Sin iáâ¿-siÅng oÄ“-lóng',
@@ -1421,16 +1832,30 @@ Lí ē-sái khoà⿠i ê goân-sú-bé.',
若檔案有人改éŽï¼Œä¸€å¯¡èªªæ˜Žå°±ç„¡å®Œå…¨å應改éŽçš„檔案',
'metadata-expand' => 'Hián-sī iù-chiat',
'metadata-collapse' => 'Am iù-chiat',
+'metadata-fields' => '這个信æ¯æ‰€æŽ’來出的影相元資料,是會佇欲顯示元資料表的時陣顯示。
+其他的元資料是先è—起來。
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'IÅng gÅa-pÅ· èng-iÅng nÅ„g-thé pian-chiÌp chit-ê tóng-àn',
-'edit-externally-help' => '(Khoà⿠[http://www.mediawiki.org/wiki/Manual:External_editors siat-tÄ“ng soat-bêng] ê chu-liÄu.)',
+'edit-externally-help' => '(Khoà⿠[//www.mediawiki.org/wiki/Manual:External_editors siat-tÄ“ng soat-bêng] ê chu-liÄu.)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'choân-pÅ·',
-'watchlistall2' => 'choân-pÅ͘',
-'namespacesall' => 'choân-pÅ·',
-'monthsall' => 'choân-pÅ͘',
+'watchlistall2' => 'choân-pÅ͘',
+'namespacesall' => 'choân-pÅ·',
+'monthsall' => 'choân-pÅ͘',
# E-mail address confirmation
'confirmemail' => 'Khak-jīn e-mail chū-chí',
diff --git a/languages/messages/MessagesNap.php b/languages/messages/MessagesNap.php
index b4c142f1..3e03722c 100644
--- a/languages/messages/MessagesNap.php
+++ b/languages/messages/MessagesNap.php
@@ -151,7 +151,6 @@ $messages = array(
'go' => 'Vàje',
'history' => "Verziune 'e primma",
'history_short' => 'Cronologgia',
-'info_short' => 'Nfurmazzione',
'printableversion' => "Verzione pe' stampa",
'permalink' => 'Jonta permanente',
'edit' => 'Càgna',
@@ -236,7 +235,7 @@ Putite cuntinuà a ausà {{SITENAME}} comme n'utente senza nomme, o si nò putit
'gotaccountlink' => 'Tràse',
'loginerror' => "Probblema 'e accièsso",
'loginsuccesstitle' => 'Acciesso affettuato',
-'nosuchusershort' => 'Nun ce stanno utente cu o nòmme "<nowiki>$1</nowiki>". Cuntrolla si scrivìste buòno.',
+'nosuchusershort' => 'Nun ce stanno utente cu o nòmme "$1". Cuntrolla si scrivìste buòno.',
'nouserspecified' => "Tiene 'a dìcere nu nomme pricìso.",
'acct_creation_throttle_hit' => 'Ce dispiace, haje già criato $1 utente. Nun ne pô crià ate.',
'accountcreated' => 'Cunto criato',
@@ -360,7 +359,6 @@ Also see [[Special:WantedCategories|wanted categories]].",
'linksearch-ok' => 'Truova',
# Watchlist
-'addedwatch' => 'Aggiunto ai Osservate Speciale tue',
'watch' => 'Secuta',
'notanarticle' => 'Chesta paggena nun è na voce',
@@ -374,7 +372,7 @@ Also see [[Special:WantedCategories|wanted categories]].",
'exbeforeblank' => "'O cuntenuto apprimm' 'a ll'arrevacamento era: '$1'",
'exblank' => "'a paggena era vacante",
'actioncomplete' => 'Azzione fernuta',
-'deletedtext' => 'Qauccheruno ha scancellata \'a paggena "<nowiki>$1</nowiki>". Addumannà \'o $2 pe na lista d"e ppaggene scancellate urdemamente.',
+'deletedtext' => 'Qauccheruno ha scancellata \'a paggena "$1". Addumannà \'o $2 pe na lista d"e ppaggene scancellate urdemamente.',
'deletedarticle' => 'ha scancellato "[[$1]]"',
'dellogpage' => 'Scancellazione',
'deletionlog' => 'Log d"e scancellazione',
@@ -410,11 +408,10 @@ Also see [[Special:WantedCategories|wanted categories]].",
'ipadressorusername' => 'Nnerizzo IP o nomme utente',
'ipboptions' => '2 ore:2 hours,1 juorno:1 day,3 juorne:3 days,1 semmana:1 week,2 semmane:2 weeks,1 mise:1 month,3 mese:3 months,6 mese:6 months,1 anno:1 year,infinito:infinite',
'blockipsuccesssub' => 'Blocco aseguito',
-'blocklistline' => '$1, $2 ha fermato $3 ($4)',
'blocklink' => 'ferma',
'blocklogpage' => 'Blocche',
'blocklogentry' => 'ha fermato "[[$1]]" pe\' nu mumento \'e $2 $3',
-'blocklogtext' => "Chesta è 'a lista d''e azzione 'e blocco e sblocco utente. 'E nnerizze IP bloccate automaticamente nun nce so'. Addumannà 'a [[Special:IPBlockList|lista IP bloccate]] pp' 'a lista d''e nnerizze e nomme utente 'o ca blocco nce sta.",
+'blocklogtext' => "Chesta è 'a lista d''e azzione 'e blocco e sblocco utente. 'E nnerizze IP bloccate automaticamente nun nce so'. Addumannà 'a [[Special:BlockList|lista IP bloccate]] pp' 'a lista d''e nnerizze e nomme utente 'o ca blocco nce sta.",
# Move page
'movearticle' => "Spusta 'a paggena",
@@ -452,10 +449,6 @@ Also see [[Special:WantedCategories|wanted categories]].",
# Attribution
'others' => 'ate',
-# Info page
-'numedits' => "Nummero 'e cagnamiente (articulo): $1",
-'numwatchers' => "Nummero 'e asservature: $1",
-
# Special:NewFiles
'noimages' => "Nun nc'è nind' 'a veré.",
'ilsubmit' => 'Truova',
@@ -474,7 +467,7 @@ Also see [[Special:WantedCategories|wanted categories]].",
'exif-subjectdistancerange-0' => 'Scanusciuta',
# External editor support
-'edit-externally-help' => "Pe piglià cchiù nfromma veré 'e [http://www.mediawiki.org/wiki/Manual:External_editors struzione] ('n ngrese)",
+'edit-externally-help' => "Pe piglià cchiù nfromma veré 'e [//www.mediawiki.org/wiki/Manual:External_editors struzione] ('n ngrese)",
# 'all' in various places, this might be different for inflected languages
'namespacesall' => 'Tutte',
diff --git a/languages/messages/MessagesNds.php b/languages/messages/MessagesNds.php
index 825967fe..bfbaedad 100644
--- a/languages/messages/MessagesNds.php
+++ b/languages/messages/MessagesNds.php
@@ -24,8 +24,8 @@ $namespaceNames = array(
NS_USER => 'Bruker',
NS_USER_TALK => 'Bruker_Diskuschoon',
NS_PROJECT_TALK => '$1_Diskuschoon',
- NS_FILE => 'Datei',
- NS_FILE_TALK => 'Datei_Diskuschoon',
+ NS_FILE => 'Bild',
+ NS_FILE_TALK => 'Bild_Diskuschoon',
NS_MEDIAWIKI => 'MediaWiki',
NS_MEDIAWIKI_TALK => 'MediaWiki_Diskuschoon',
NS_TEMPLATE => 'Vörlaag',
@@ -41,9 +41,9 @@ $namespaceAliases = array(
'Benutzer' => NS_USER,
'Benutzer_Diskussion' => NS_USER_TALK,
'$1_Diskussion' => NS_PROJECT_TALK,
- 'Bild' => NS_FILE,
+ 'Datei' => NS_FILE,
'Bild_Diskussion' => NS_FILE_TALK,
- 'Bild_Diskuschoon' => NS_FILE_TALK,
+ 'Datei_Diskuschoon' => NS_FILE_TALK,
'MediaWiki_Diskussion' => NS_MEDIAWIKI_TALK,
'Vorlage' => NS_TEMPLATE,
'Vorlage_Diskussion' => NS_TEMPLATE_TALK,
@@ -130,86 +130,86 @@ $dateFormats = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Dubbelte Redirects' ),
+ 'Allmessages' => array( 'Systemnarichten' ),
+ 'Allpages' => array( 'Alle Sieden' ),
+ 'Ancientpages' => array( 'Ole Sieden' ),
+ 'Blankpage' => array( 'Leddige Sied' ),
+ 'Block' => array( 'Blocken' ),
+ 'Blockme' => array( 'Proxy-Sparr' ),
+ 'Booksources' => array( 'ISBN-Söök' ),
'BrokenRedirects' => array( 'Kaputte Redirects' ),
- 'Disambiguations' => array( 'Mehrdüdige Begrepen' ),
- 'Userlogin' => array( 'Anmellen' ),
- 'Userlogout' => array( 'Afmellen' ),
+ 'Categories' => array( 'Kategorien' ),
+ 'ChangePassword' => array( 'Passwoort trüchsetten' ),
+ 'Confirmemail' => array( 'E-Mail bestätigen' ),
+ 'Contributions' => array( 'Bidrääg' ),
'CreateAccount' => array( 'Brukerkonto anleggen' ),
- 'Preferences' => array( 'Instellungen' ),
- 'Watchlist' => array( 'Oppasslist' ),
- 'Recentchanges' => array( 'Toletzt ännert', 'Neeste Ännern' ),
- 'Upload' => array( 'Hoochladen' ),
+ 'Deadendpages' => array( 'Sackstraatsieden' ),
+ 'Disambiguations' => array( 'Mehrdüdige Begrepen' ),
+ 'DoubleRedirects' => array( 'Dubbelte Redirects' ),
+ 'Emailuser' => array( 'E-Mail an Bruker' ),
+ 'Export' => array( 'Exporteren' ),
+ 'Fewestrevisions' => array( 'Kuum ännerte Sieden' ),
+ 'FileDuplicateSearch' => array( 'Dubbelte-Datein-Söök' ),
+ 'Filepath' => array( 'Dateipadd' ),
+ 'Import' => array( 'Importeren' ),
+ 'BlockList' => array( 'List vun blockte IPs' ),
+ 'Listadmins' => array( 'Administraters' ),
+ 'Listbots' => array( 'Bots' ),
'Listfiles' => array( 'Dateilist' ),
- 'Newimages' => array( 'Nee Datein' ),
- 'Listusers' => array( 'Brukers' ),
'Listgrouprights' => array( 'Gruppenrechten' ),
- 'Statistics' => array( 'Statistik' ),
- 'Randompage' => array( 'Tofällige Siet' ),
+ 'Listredirects' => array( 'List vun Redirects' ),
+ 'Listusers' => array( 'Brukers' ),
+ 'Lockdb' => array( 'Datenbank sparren' ),
+ 'Log' => array( 'Logbook' ),
'Lonelypages' => array( 'Weetsieden' ),
- 'Uncategorizedpages' => array( 'Sieden ahn Kategorie' ),
- 'Uncategorizedcategories' => array( 'Kategorien ahn Kategorie' ),
- 'Uncategorizedimages' => array( 'Datein ahn Kategorie' ),
- 'Uncategorizedtemplates' => array( 'Vörlagen ahn Kategorie' ),
- 'Unusedcategories' => array( 'Nich bruukte Kategorien' ),
- 'Unusedimages' => array( 'Nich bruukte Datein' ),
- 'Wantedpages' => array( 'Wünschte Sieden' ),
- 'Wantedcategories' => array( 'Wünschte Kategorien' ),
+ 'Longpages' => array( 'Lange Sieden' ),
+ 'MergeHistory' => array( 'Versionshistorie tohoopbringen' ),
+ 'MIMEsearch' => array( 'MIME-Typ-Söök' ),
+ 'Mostcategories' => array( 'Sieden mit vele Kategorien' ),
+ 'Mostimages' => array( 'Veel bruukte Datein' ),
'Mostlinked' => array( 'Veel lenkte Sieden' ),
'Mostlinkedcategories' => array( 'Veel bruukte Kategorien' ),
'Mostlinkedtemplates' => array( 'Veel bruukte Vörlagen' ),
- 'Mostimages' => array( 'Veel bruukte Datein' ),
- 'Mostcategories' => array( 'Sieden mit vele Kategorien' ),
'Mostrevisions' => array( 'Faken ännerte Sieden' ),
- 'Fewestrevisions' => array( 'Kuum ännerte Sieden' ),
- 'Shortpages' => array( 'Korte Sieden' ),
- 'Longpages' => array( 'Lange Sieden' ),
+ 'Movepage' => array( 'Schuven' ),
+ 'Mycontributions' => array( 'Miene Bidrääg' ),
+ 'Mypage' => array( 'Miene Brukersiet' ),
+ 'Mytalk' => array( 'Miene Diskuschoonssiet' ),
+ 'Newimages' => array( 'Nee Datein' ),
'Newpages' => array( 'Nee Sieden' ),
- 'Ancientpages' => array( 'Ole Sieden' ),
- 'Deadendpages' => array( 'Sackstraatsieden' ),
+ 'Popularpages' => array( 'Veel besöchte Sieden' ),
+ 'Preferences' => array( 'Instellungen' ),
+ 'Prefixindex' => array( 'Sieden de anfangt mit' ),
'Protectedpages' => array( 'Schuulte Sieden' ),
'Protectedtitles' => array( 'Sperrte Titels' ),
- 'Allpages' => array( 'Alle Sieden' ),
- 'Prefixindex' => array( 'Sieden de anfangt mit' ),
- 'Ipblocklist' => array( 'List vun blockte IPs' ),
- 'Specialpages' => array( 'Spezialsieden' ),
- 'Contributions' => array( 'Bidrääg' ),
- 'Emailuser' => array( 'E-Mail an Bruker' ),
- 'Confirmemail' => array( 'E-Mail bestätigen' ),
- 'Whatlinkshere' => array( 'Wat wiest hier hen' ),
+ 'Randompage' => array( 'Tofällige Siet' ),
+ 'Randomredirect' => array( 'Tofällig Redirect' ),
+ 'Recentchanges' => array( 'Toletzt ännert', 'Neeste Ännern' ),
'Recentchangeslinked' => array( 'Ännern an lenkte Sieden' ),
- 'Movepage' => array( 'Schuven' ),
- 'Blockme' => array( 'Proxy-Sparr' ),
- 'Booksources' => array( 'ISBN-Söök' ),
- 'Categories' => array( 'Kategorien' ),
- 'Export' => array( 'Exporteren' ),
- 'Allmessages' => array( 'Systemnarichten' ),
- 'Log' => array( 'Logbook' ),
- 'Blockip' => array( 'Blocken' ),
+ 'Revisiondelete' => array( 'Versionen wegsmieten' ),
+ 'Search' => array( 'Söök' ),
+ 'Shortpages' => array( 'Korte Sieden' ),
+ 'Specialpages' => array( 'Spezialsieden' ),
+ 'Statistics' => array( 'Statistik' ),
+ 'Uncategorizedcategories' => array( 'Kategorien ahn Kategorie' ),
+ 'Uncategorizedimages' => array( 'Datein ahn Kategorie' ),
+ 'Uncategorizedpages' => array( 'Sieden ahn Kategorie' ),
+ 'Uncategorizedtemplates' => array( 'Vörlagen ahn Kategorie' ),
'Undelete' => array( 'Wedderhalen' ),
- 'Import' => array( 'Importeren' ),
- 'Lockdb' => array( 'Datenbank sparren' ),
'Unlockdb' => array( 'Datenbank freegeven' ),
- 'Userrights' => array( 'Brukerrechten' ),
- 'MIMEsearch' => array( 'MIME-Typ-Söök' ),
- 'FileDuplicateSearch' => array( 'Dubbelte-Datein-Söök' ),
- 'Unwatchedpages' => array( 'Sieden op keen Oppasslist' ),
- 'Listredirects' => array( 'List vun Redirects' ),
- 'Revisiondelete' => array( 'Versionen wegsmieten' ),
+ 'Unusedcategories' => array( 'Nich bruukte Kategorien' ),
+ 'Unusedimages' => array( 'Nich bruukte Datein' ),
'Unusedtemplates' => array( 'Nich bruukte Vörlagen' ),
- 'Randomredirect' => array( 'Tofällig Redirect' ),
- 'Mypage' => array( 'Miene Brukersiet' ),
- 'Mytalk' => array( 'Miene Diskuschoonssiet' ),
- 'Mycontributions' => array( 'Miene Bidrääg' ),
- 'Listadmins' => array( 'Administraters' ),
- 'Listbots' => array( 'Bots' ),
- 'Popularpages' => array( 'Veel besöchte Sieden' ),
- 'Search' => array( 'Söök' ),
- 'Resetpass' => array( 'Passwoort trüchsetten' ),
+ 'Unwatchedpages' => array( 'Sieden op keen Oppasslist' ),
+ 'Upload' => array( 'Hoochladen' ),
+ 'Userlogin' => array( 'Anmellen' ),
+ 'Userlogout' => array( 'Afmellen' ),
+ 'Userrights' => array( 'Brukerrechten' ),
+ 'Wantedcategories' => array( 'Wünschte Kategorien' ),
+ 'Wantedpages' => array( 'Wünschte Sieden' ),
+ 'Watchlist' => array( 'Oppasslist' ),
+ 'Whatlinkshere' => array( 'Wat wiest hier hen' ),
'Withoutinterwiki' => array( 'Sieden ahn Spraaklenken' ),
- 'MergeHistory' => array( 'Versionshistorie tohoopbringen' ),
- 'Filepath' => array( 'Dateipadd' ),
- 'Blankpage' => array( 'Leddige Sied' ),
);
$messages = array(
@@ -244,8 +244,8 @@ $messages = array(
'tog-shownumberswatching' => 'Wies de Tall vun Brukers, de op disse Siet oppasst',
'tog-oldsig' => 'Vörschau von de Ünnerschrift, de nu gellt:',
'tog-fancysig' => 'Signatur as Wikitext behanneln (ahn automaatsch Lenk)',
-'tog-externaleditor' => 'Extern Editor as Standard bruken (Blots för Lüüd, de sik dormit utkennt. Dor mutt noch mehr op dien Reekner instellt warrn, dat dat geiht. [http://www.mediawiki.org/wiki/Manual:External_editors Wiedere Informatschonen hierto.])',
-'tog-externaldiff' => 'Extern Warktüüch to’n Wiesen vun Ünnerscheden as Standard bruken (Blots för Lüüd, de sik dormit utkennt. Dor mutt noch mehr op dien Reekner instellt warrn, dat dat geiht. [http://www.mediawiki.org/wiki/Manual:External_editors Wiedere Informatschonen hierto.])',
+'tog-externaleditor' => 'Extern Editor as Standard bruken (Blots för Lüüd, de sik dormit utkennt. Dor mutt noch mehr op dien Reekner instellt warrn, dat dat geiht. [//www.mediawiki.org/wiki/Manual:External_editors Wiedere Informatschonen hierto.])',
+'tog-externaldiff' => 'Extern Warktüüch to’n Wiesen vun Ünnerscheden as Standard bruken (Blots för Lüüd, de sik dormit utkennt. Dor mutt noch mehr op dien Reekner instellt warrn, dat dat geiht. [//www.mediawiki.org/wiki/Manual:External_editors Wiedere Informatschonen hierto.])',
'tog-showjumplinks' => '„Wesseln-na“-Lenken tolaten',
'tog-uselivepreview' => 'Live-Vörschau bruken (JavaScript) (Experimental)',
'tog-forceeditsummary' => 'Segg mi bescheid, wenn ik keen Tosamenfaten geven heff, wat ik allens ännert heff',
@@ -341,10 +341,7 @@ $messages = array(
'listingcontinuesabbrev' => 'wieder',
'index-category' => 'indexeerte Sieden',
'noindex-category' => 'nich indexeerte Sieden',
-
-'mainpagetext' => "'''De MediaWiki-Software is mit Spood installeert worrn.'''",
-'mainpagedocfooter' => 'Kiek de [http://meta.wikimedia.org/wiki/MediaWiki_localisation Dokumentatschoon för dat Anpassen vun de Brukerböversiet]
-un dat [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Brukerhandbook] för Hülp to de Bruuk un Konfiguratschoon.',
+'broken-file-category' => 'Sieden mit kaputten Dateilenken',
'about' => 'Över',
'article' => 'Artikel',
@@ -396,10 +393,10 @@ un dat [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Brukerhandbook]
'history' => 'Historie',
'history_short' => 'Historie',
'updatedmarker' => 'bearbeidt, in de Tiet sietdem ik toletzt dor weer',
-'info_short' => 'Informatschoon',
'printableversion' => 'Druckversion',
'permalink' => 'Duurlenk',
'print' => 'Drucken',
+'view' => 'Lesen',
'edit' => 'Ännern',
'create' => 'Opstellen',
'editthispage' => 'Disse Siet ännern',
@@ -407,6 +404,7 @@ un dat [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Brukerhandbook]
'delete' => 'Wegsmieten',
'deletethispage' => 'Disse Siet wegsmieten',
'undelete_short' => '{{PLURAL:$1|ene Version|$1 Versionen}} wedderhalen',
+'viewdeleted_short' => '{{PLURAL:$1|Een wegdaan Version|$1 wegdaan Versionen}} ankieken',
'protect' => 'Schulen',
'protect_change' => 'ännern',
'protectthispage' => 'Siet schulen',
@@ -491,6 +489,8 @@ $1",
'toc' => 'Inholtsverteken',
'showtoc' => 'wiesen',
'hidetoc' => 'Nich wiesen',
+'collapsible-collapse' => 'Versteken',
+'collapsible-expand' => 'Wiesen',
'thisisdeleted' => 'Ankieken oder weerholen vun $1?',
'viewdeleted' => '$1 ankieken?',
'restorelink' => '{{PLURAL:$1|ene löschte Version|$1 löschte Versionen}}',
@@ -502,6 +502,8 @@ $1",
'page-rss-feed' => 'RSS-Feed för „$1“',
'page-atom-feed' => 'Atom-Feed för „$1“',
'red-link-title' => '$1 (noch nich vörhannen)',
+'sort-descending' => 'Afstiegen sorteren',
+'sort-ascending' => 'Opstiegen sorteren',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Artikel',
@@ -582,12 +584,11 @@ Query: $2',
'protectedinterface' => 'Op disse Siet staht Narichtentexte för dat System un de Siet is dorüm sparrt.',
'editinginterface' => "'''Wohrschau:''' Disse Siet bargt Text, de vun de MediaWiki-Software för ehr Böverflach bruukt warrt.
Wat du hier ännerst, warkt sik op dat kumplette Wiki ut.
-Wenn du Text översetten wist, de betherto noch gornich översett is, denn maak dat opbest op [http://translatewiki.net/wiki/Main_Page?setlang=nds translatewiki.net], dat Översett-Projekt vun MediaWiki.",
+Wenn du Text översetten wist, de betherto noch gornich översett is, denn maak dat opbest op [//translatewiki.net/wiki/Main_Page?setlang=nds translatewiki.net], dat Översett-Projekt vun MediaWiki.",
'sqlhidden' => '(SQL-Affraag versteken)',
'cascadeprotected' => 'Disse Siet is sperrt un kann nich ännert warrn. Dat kummt dorvun dat se in disse {{PLURAL:$1|Siet|Sieden}} inbunnen is, de över Kaskadensperr schuult {{PLURAL:$1|is|sünd}}:
$2',
'namespaceprotected' => "Du hest keen Rechten, Sieden in’n Naamruum '''$1''' to ännern.",
-'customcssjsprotected' => 'Du hest keen Rechten, disse Siet to ännern. Dor sünd persönliche Instellungen vun en annern Bruker in.',
'ns-specialprotected' => 'Spezialsieden köönt nich ännert warrn.',
'titleprotected' => "Disse Siet is gegen dat nee Opstellen vun [[User:$1|$1]] schuult worrn.
As Grund is angeven: ''$2''.",
@@ -624,6 +625,7 @@ Vergeet nich, de Sied för di persönlich [[Special:Preferences|intostellen]].',
'createaccount' => 'Nieg Brukerkonto anleggen',
'gotaccount' => "Hest Du al en Brukerkonto? '''$1'''.",
'gotaccountlink' => 'Anmellen',
+'userlogin-resetlink' => 'De Anmelldaten vergaten?',
'createaccountmail' => 'över E-Mail',
'createaccountreason' => 'Grund:',
'badretype' => 'De beiden Passwöör stimmt nich övereen.',
@@ -632,13 +634,15 @@ Vergeet nich, de Sied för di persönlich [[Special:Preferences|intostellen]].',
'createaccounterror' => 'Kunn dat Brukerkonto nich opstellen: $1',
'nocookiesnew' => 'De Brukertogang is anleggt, aver du büst nich inloggt. {{SITENAME}} bruukt för disse Funktschoon Cookies, aktiveer de Cookies un logg di denn mit dien nieg Brukernaam un den Password in.',
'nocookieslogin' => '{{SITENAME}} bruukt Cookies för dat Inloggen vun de Bruker. Du hest Cookies deaktiveert, aktiveer de Cookies un versöök dat noch eenmal.',
+'nocookiesfornew' => 'Dat Brukerkonto kunn nich opstellt warrn, vonwegen dat de Born nich wiss maakt warrn kunn.
+Sorg dor för, dat Cookies anstellt sünd. Denn laad de Sied noch wedder nee un versöök dat nochmaal.',
'noname' => 'Du muttst en Brukernaam angeven.',
'loginsuccesstitle' => 'Anmellen hett Spood',
'loginsuccess' => 'Du büst nu as „$1“ bi {{SITENAME}} anmellt.',
'nosuchuser' => 'Den Brukernaam „$1“ gifft dat nich.
Brukernaams maakt en Ünnerscheed twischen groot un lütt schrevene Bookstaven.
Kiek de Schrievwies na oder [[Special:UserLogin/signup|mell di as ne’en Bruker an]].',
-'nosuchusershort' => 'De Brukernaam „<nowiki>$1</nowiki>“ existeert nich. Prööv de Schrievwies.',
+'nosuchusershort' => 'De Brukernaam „$1“ existeert nich. Prööv de Schrievwies.',
'nouserspecified' => 'Du musst en Brukernaam angeven',
'login-userblocked' => 'Disse Bruker is sperrt. Anmellen geiht nich.',
'wrongpassword' => 'Dat Passwoort, wat du ingeven hest, is verkehrt. Kannst dat aver noch wedder versöken.',
@@ -681,7 +685,7 @@ Tööv en Stoot, ehrdat du dat noch wedder versöchst.',
# E-mail sending
'php-mail-error-unknown' => 'Unbekennten Fehler in PHP sien mail()-Funkschoon',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Passwoord ännern',
'resetpass_announce' => 'Du hest di mit en Kood anmellt, de di över E-Mail toschickt worrn is. Dat anmellen aftosluten, söök di nu en neet Passwoord ut:',
'resetpass_header' => 'Passwoord trüchsetten',
@@ -709,8 +713,6 @@ Villicht hest du dien Passwoord al ännert oder noch wedder en nee temporär Pas
'extlink_tip' => 'Externen Link (http:// is wichtig)',
'headline_sample' => 'Evene 2 Överschrift',
'headline_tip' => 'Evene 2 Överschrift',
-'math_sample' => 'Formel hier infögen',
-'math_tip' => 'Mathematsche Formel (LaTeX)',
'nowiki_sample' => 'Unformateerten Text hier infögen',
'nowiki_tip' => 'Unformateerten Text',
'image_sample' => 'Bispeel.jpg',
@@ -795,7 +797,7 @@ oder [{{fullurl:{{FULLPAGENAME}}|action=edit}} disse Sied ännern]</span>.',
'noarticletext-nopermission' => 'Disse Sied hett opstunns keen Text.
Du kannst in annere Sieden [[Special:Search/{{PAGENAME}}|na dissen Titel söken]]
oder <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} in de Logböker söken]</span>.',
-'userpage-userdoesnotexist' => 'Dat Brukerkonto „$1“ gifft dat noch nich. Överlegg, wat du disse Siet würklich nee opstellen/ännern wullt.',
+'userpage-userdoesnotexist' => 'Dat Brukerkonto „<nowiki>$1</nowiki>“ gifft dat noch nich. Överlegg, wat du disse Siet würklich nee opstellen/ännern wullt.',
'userpage-userdoesnotexist-view' => 'Dat Brukerkonto „$1“ gifft dat nich.',
'blocked-notice-logextract' => 'Disse Bruker is opstunns sperrt.
De jüngste Indrag in dat Sperr-Logbook wart ünnen wiest:',
@@ -1143,7 +1145,6 @@ de aver nich jümmer den aktuellsten Stand weerspegelt.<p>',
'changepassword' => 'Passwoort ännern',
'prefs-skin' => 'Utsehn vun de Steed',
'skin-preview' => 'Vörschau',
-'prefs-math' => 'TeX',
'datedefault' => 'Standard',
'prefs-datetime' => 'Datum un Tiet',
'prefs-personal' => 'Brukerdaten',
@@ -1167,8 +1168,6 @@ de aver nich jümmer den aktuellsten Stand weerspegelt.<p>',
'columns' => 'Spalten',
'searchresultshead' => 'Söökresultaten',
'resultsperpage' => 'Treffer pro Siet',
-'contextlines' => 'Lienen pro Treffer',
-'contextchars' => 'Teken je Reeg',
'stub-threshold' => 'Grött ünner de Lenken op <a href="#" class="stub">Stubbens un lütte Sieden</a> farvlich kenntekent warrn schöölt (in Bytes):',
'stub-threshold-disabled' => 'Utstellt',
'recentchangesdays' => 'Daag, de de List vun de „Ne’esten Ännern“ wiesen schall:',
@@ -1228,7 +1227,8 @@ Dat kann nich wedder ungeschehn maakt warrn.',
'prefs-help-gender' => 'Mutt nich angeven warrn: Warrt bruukt, dat di de Software korrekt ansnacken kann. Disse Informatschoon is vör annere Brukers sichtbor.',
'email' => 'Nettbreef',
'prefs-help-realname' => 'De echte Naam mutt nich angeven warrn. Wenn du em angiffst, warrt de Naam bruukt, dat diene Arbeit di torekent warrn kann.',
-'prefs-help-email' => 'De E-Mail-Adress mutt nich angeven warrn. Aver so köönt annere Brukers di över E-Mail schrieven, ahn dat du dien Identität priesgiffst, un du kannst di ok en nee Passwoord toschicken laten, wenn du dien oold vergeten hest.',
+'prefs-help-email' => "De E-Mail-Adress mutt nich angeven warrn. Aver so köönt annere Brukers di över E-Mail schrieven, ahn dat du dien Identität priesgiffst, un du kannst di ok en ne'e Passwoord toschicken laten, wenn du dien oold vergeten hest.",
+'prefs-help-email-others' => 'Mit anner Brukers kannst du ok över de Brukerdiskuschoonssieden Kuntakt opnahmen, ahn dat du dien Identität apenleggen müttst.',
'prefs-help-email-required' => 'E-Mail-Adress nödig.',
'prefs-info' => 'Basisinformatschoon',
'prefs-i18n' => 'Spraakinstellungen',
@@ -1348,7 +1348,6 @@ Dat kann nich wedder ungeschehn maakt warrn.',
'right-userrights' => 'Brukerrechten ännern',
'right-userrights-interwiki' => 'Brukerrechten op annere Wikis ännern',
'right-siteadmin' => 'Datenbank sperren un wedder apen maken',
-'right-reset-passwords' => 'Anner Lüüd ehr Passwoord trüchsetten',
'right-override-export-depth' => 'Exporteer Sieden, lenkt Sieden inslaten bet to en Deepd vun 5',
# User rights log
@@ -1513,10 +1512,6 @@ Wenn du ehr liekers hoochladen wullt, gah trüch un laad de Datei ünner en anne
'upload-maxfilesize' => 'Maximale Dateigrött: $1',
'watchthisupload' => 'Op disse Datei oppassen',
'filewasdeleted' => 'En Datei mit dissen Naam hett dat al mal geven un is denn wegsmeten worrn. Kiek doch toeerst in dat $1 na, ehrdat du de Datei afspiekerst.',
-'upload-wasdeleted' => "'''Wohrschau: Du läädst en Datei hooch, de al ehrder mal wegsmeten worrn is.'''
-
-Bedenk di eerst, wat dat ok passt, dat du de Datei noch wedder hoochladen deist.
-Hier dat Logbook, wo insteiht, worüm de Sied wegsmeten worrn is:",
'filename-bad-prefix' => "De Naam vun de Datei fangt mit '''„$1“''' an. Dat is normalerwies en Naam, den de Datei automaatsch vun de Digitalkamera kriggt. De Naam beschrievt de Datei nich un seggt dor ok nix över ut. Söök di doch en Naam för de Datei ut, de ok wat över den Inholt seggt.",
'upload-success-subj' => 'Datei hoochladen hett Spood',
@@ -1578,7 +1573,6 @@ Disse List wiest blot {{PLURAL:$1|den eersten Lenk|de eersten $1 Lenken}} op dis
En [[Special:WhatLinksHere/$2|kumplette List]] gifft dat ok.',
'nolinkstoimage' => 'Kene Siet bruukt dat Bild.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Mehr Verwiesen]] för disse Datei.',
-'redirectstofile' => 'Disse {{PLURAL:$1|Datei is|Datein sünd}} en Redirect op disse Datei:',
'duplicatesoffile' => 'Disse {{PLURAL:$1|Datei is|Datein sünd}} jüst de {{PLURAL:$1|glieke|glieken}} as disse Datei hier ([[Special:FileDuplicateSearch/$2|mehr Infos]]):',
'sharedupload' => 'Disse Datei is as gemeensam bruukte Datei op $1 hoochlaadt un warrt mööglicherwies ok vun annere Wikis bruukt.',
'sharedupload-desc-there' => 'Disse Datei is as gemeensam bruukte Datei op $1 hoochlaadt un warrt mööglicherwies ok vun annere Wikis bruukt.
@@ -1886,10 +1880,8 @@ Mehr Informatschonen över enkelte Rechten staht ünner [[{{MediaWiki:Listgroupr
'watchlistanontext' => '$1, dat du dien Oppasslist ankieken oder ännern kannst.',
'watchnologin' => 'Du büst nich anmellt',
'watchnologintext' => 'Du must [[Special:UserLogin|anmellt]] wesen, wenn du dien Oppasslist ännern willst.',
-'addedwatch' => 'To de Oppasslist toföögt',
'addedwatchtext' => 'De Siet „<nowiki>$1</nowiki>“ is to diene [[Special:Watchlist|Oppasslist]] toföögt worrn.
Ännern, de in Tokumst an disse Siet un an de tohörige Diskuschoonssiet maakt warrt, sünd dor op oplist un de Siet is op de [[Special:RecentChanges|List vun de letzten Ännern]] fett markt. Wenn du de Siet nich mehr op diene Oppasslist hebben willst, klick op „Nich mehr oppassen“.',
-'removedwatch' => 'De Siet is nich mehr op de Oppasslist',
'removedwatchtext' => 'De Sied „[[:$1]]“ is nich mehr op [[Special:Watchlist|dien Oppasslist]].',
'watch' => 'Oppassen',
'watchthispage' => 'Op disse Siet oppassen',
@@ -1942,7 +1934,7 @@ Du kriggst solang keen Bescheedgeev-E-Mails mehr, bet dat du de Siet wedder besÃ
Dien fründlich {{SITENAME}}-Bescheedgeevsystem
--
-De Instellungen vun dien Oppasslist to ännern, gah na: {{fullurl:Special:Watchlist/edit}}',
+De Instellungen vun dien Oppasslist to ännern, gah na: {{canonicalurl:Special:Watchlist/edit}}',
# Delete
'deletepage' => 'Siet wegsmieten',
@@ -1958,7 +1950,7 @@ De Instellungen vun dien Oppasslist to ännern, gah na: {{fullurl:Special:Watchl
Segg to, dat du över de Folgen Bescheed weetst un dat du in Övereenstimmen mit uns [[{{MediaWiki:Policy-url}}|Leidlienen]] hannelst.',
'actioncomplete' => 'Akschoon trech',
'actionfailed' => 'Akschoon fehlslaan',
-'deletedtext' => 'De Artikel „<nowiki>$1</nowiki>“ is nu wegsmeten. Op $2 gifft dat en Logbook vun de letzten Löschakschonen.',
+'deletedtext' => 'De Artikel „$1“ is nu wegsmeten. Op $2 gifft dat en Logbook vun de letzten Löschakschonen.',
'deletedarticle' => '„[[$1]]“ wegsmeten',
'suppressedarticle' => 'hett „[[$1]]“ versteken',
'dellogpage' => 'Lösch-Logbook',
@@ -2008,7 +2000,7 @@ Gah een Sied trüch un versöök dat noch wedder.',
'protectexpiry' => 'Löppt ut:',
'protect_expiry_invalid' => 'Utlooptiet ungüllig',
'protect_expiry_old' => 'Utlooptiet al vörbi.',
-'protect-text' => "Hier kannst du den Schuulstatus för de Siet '''<nowiki>$1</nowiki>''' ankieken un ännern.",
+'protect-text' => "Hier kannst du den Schuulstatus för de Siet '''$1''' ankieken un ännern.",
'protect-locked-blocked' => "Du kannst den Schuulstatus vun de Sied nich ännern, du büst sperrt. Hier sünd de aktuellen Schuulstatus-Instellungen för de Siet '''„$1“:'''",
'protect-locked-dblock' => "De Datenbank is sperrt un de Schuulstatus vun de Sied kann nich ännert warrn. Dit sünd de aktuellen Schuul-Instellungen för de Sied '''„$1“:'''",
'protect-locked-access' => "Du hest nich de nödigen Rechten, den Schuulstatus vun de Siet to ännern. Dit sünd de aktuellen Instellungen för de Siet '''„$1“:'''",
@@ -2161,7 +2153,6 @@ De jüngste Indrag in dat Sperr-Logbook wart ünnen wiest:',
'blockiptext' => 'Bruuk dat Formular, ene IP-Adress to blocken.
Dit schall blots maakt warrn, Vandalismus to vermasseln, aver jümmer in Övereenstimmen mit uns [[{{MediaWiki:Policy-url}}|Leidlienen]].
Ok den Grund för dat Blocken indregen.',
-'ipaddress' => 'IP-Adress',
'ipadressorusername' => 'IP-Adress oder Brukernaam:',
'ipbexpiry' => 'Aflooptiet',
'ipbreason' => 'Grund:',
@@ -2172,7 +2163,6 @@ Ok den Grund för dat Blocken indregen.',
** Schrifft Tüdelkraam in Sieden
** Bedroht annere
** Brukernaam nich akzeptabel',
-'ipbanononly' => 'Blot anonyme Brukers blocken',
'ipbcreateaccount' => 'Anleggen vun Brukerkonto verhinnern',
'ipbemailban' => 'E-Mail schrieven sperren',
'ipbenableautoblock' => 'Sperr de aktuell vun dissen Bruker bruukte IP-Adress un automaatsch all de annern, vun de ut he Sieden ännern oder Brukers anleggen will',
@@ -2183,7 +2173,6 @@ Ok den Grund för dat Blocken indregen.',
'ipbotherreason' => 'Annern Grund:',
'ipbhidename' => 'Brukernaam narms mehr wiesen',
'ipbwatchuser' => 'Op Brukersiet un Brukerdiskuschoon oppassen',
-'ipballowusertalk' => 'Den sperrten Bruker verlöven de egene Diskuschoonssied to ännern',
'ipb-change-block' => 'Mit disse Sperrparameters noch wedder nee sperren',
'badipaddress' => 'De IP-Adress hett en falsch Format.',
'blockipsuccesssub' => 'Blocken hett Spood',
@@ -2201,12 +2190,7 @@ Op de [[Special:IPBlockList|IP-Blocklist]] is en List vun alle Blocks to finnen.
'unblocked-id' => 'Sperr $1 freegeven',
'ipblocklist' => 'Sparrte Brukers',
'ipblocklist-legend' => 'Blockten Bruker finnen',
-'ipblocklist-username' => 'Brukernaam oder IP-Adress:',
-'ipblocklist-sh-userblocks' => 'Brukersperren $1',
-'ipblocklist-sh-tempblocks' => 'tiedwies Sperren $1',
-'ipblocklist-sh-addressblocks' => 'enkelt IP-Sperren $1',
'ipblocklist-submit' => 'Söken',
-'blocklistline' => '$1, $2 hett $3 blockt ($4)',
'infiniteblock' => 'unbegrenzt',
'expiringblock' => 'löppt $1 $2 af',
'anononlyblock' => 'blot Anonyme',
@@ -2225,7 +2209,7 @@ Op de [[Special:IPBlockList|IP-Blocklist]] is en List vun alle Blocks to finnen.
'blocklogentry' => 'block [[$1]] för en Tiedruum vun: $2 $3',
'reblock-logentry' => 'hett de Sperr för „[[$1]]“ op de Tied $2 $3 ännert',
'blocklogtext' => 'Dit is en Logbook över Blocks un Freegaven vun Brukern. Automatisch blockte IP-Adressen sünd nich opföhrt.
-Kiek [[Special:IPBlockList|IP-Blocklist]] för en List vun den blockten Brukern.',
+Kiek [[Special:BlockList|IP-Blocklist]] för en List vun den blockten Brukern.',
'unblocklogentry' => 'Block vun $1 ophoven',
'block-log-flags-anononly' => 'blots anonyme Brukers',
'block-log-flags-nocreate' => 'Brukerkonten opstellen sperrt',
@@ -2239,8 +2223,7 @@ Kiek [[Special:IPBlockList|IP-Blocklist]] för en List vun den blockten Brukern.
'ipb_expiry_temp' => 'Versteken Brukernaam-Sperren schöölt duurhaft wesen.',
'ipb_hide_invalid' => 'Dit Konto kunn nich versteken warrn, dat hett toveel Ännern maakt.',
'ipb_already_blocked' => '„$1“ is al blockt.',
-'ipb-needreblock' => '== Is al sperrt ==
-„$1“ is al sperrt. Wullt du de Sperrparameters ännern?',
+'ipb-needreblock' => '„$1“ is al sperrt. Wullt du de Sperrparameters ännern?',
'ipb_cant_unblock' => 'Fehler: Block-ID $1 nich funnen. De Sperr is villicht al wedder ophoven.',
'ipb_blocked_as_range' => 'Fehler: De IP-Adress $1 is as Deel vun de IP-Reeg $2 indirekt sperrt worrn. De Sperr trüchnehmen för $1 alleen geiht nich.',
'ip_range_invalid' => 'Ungüllig IP-Addressrebeet.',
@@ -2510,9 +2493,7 @@ All Transwiki-Import-Akschonen staht later ok in dat [[Special:Log/import|Import
'monobook.css' => '/* disse Datei ännern üm de Monobook-Stilvörlaag för de ganze Siet antopassen */',
# Metadata
-'nodublincore' => 'Dublin-Core-RDF-Metadaten sünd för dissen Server nich aktiveert.',
-'nocreativecommons' => 'Creative-Commons-RDF-Metadaten sünd för dissen Server nich aktiveert.',
-'notacceptable' => 'Dat Wiki-Server kann kene Daten in enen Format levern, dat dien Klient lesen kann.',
+'notacceptable' => 'Dat Wiki-Server kann kene Daten in enen Format levern, dat dien Klient lesen kann.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonym Bruker|Anonyme Brukers}} vun {{SITENAME}}',
@@ -2532,39 +2513,12 @@ All Transwiki-Import-Akschonen staht later ok in dat [[Special:Log/import|Import
'spam_reverting' => 'Trüchdreiht na de letzte Version ahn Lenken na $1.',
'spam_blanking' => 'All Versionen harrn Lenken na $1, rein maakt.',
-# Info page
-'infosubtitle' => 'Informatschonen för de Siet',
-'numedits' => 'Antall vun Ännern (Siet): $1',
-'numtalkedits' => 'Antall vun Ännern (Diskuschoonssiet): $1',
-'numwatchers' => 'Antall vun Oppassers: $1',
-'numauthors' => 'Antall vun verschedene Autoren (Siet): $1',
-'numtalkauthors' => 'Antall vun verschedene Autoren (Diskuschoonssiet): $1',
-
# Skin names
'skinname-standard' => 'Klassik',
'skinname-nostalgia' => 'Nostalgie',
'skinname-cologneblue' => 'Kölsch Blau',
'skinname-chick' => 'Küken',
-# Math options
-'mw_math_png' => 'Jümmer as PNG dorstellen',
-'mw_math_simple' => 'Eenfach TeX as HTML dorstellen, sünst PNG',
-'mw_math_html' => 'Wenn mööglich as HTML dorstellen, sünst PNG',
-'mw_math_source' => 'As TeX laten (för Textbrowser)',
-'mw_math_modern' => 'Anratenswert för moderne Browser',
-'mw_math_mathml' => 'MathML (experimentell)',
-
-# Math errors
-'math_failure' => 'Parser-Fehler',
-'math_unknown_error' => 'Unbekannten Fehler',
-'math_unknown_function' => 'Unbekannte Funktschoon',
-'math_lexing_error' => "'Lexing'-Fehler",
-'math_syntax_error' => 'Syntaxfehler',
-'math_image_error' => 'dat Konverteren na PNG harr keen Spood.',
-'math_bad_tmpdir' => 'Kann dat Temporärverteken för mathematsche Formeln nich anleggen oder beschrieven.',
-'math_bad_output' => 'Kann dat Teelverteken för mathematsche Formeln nich anleggen oder beschrieven.',
-'math_notexvc' => 'Dat texvc-Programm kann nich funnen warrn. Kiek ok math/README.',
-
# Patrolling
'markaspatrolleddiff' => 'As nakeken marken',
'markaspatrolledtext' => 'Disse Siet as nakeken marken',
@@ -2609,7 +2563,6 @@ $1',
'file-nohires' => '<small>Gifft dat Bild nich grötter.</small>',
'svg-long-desc' => 'SVG-Datei, Utgangsgrött: $1 × $2 Pixel, Dateigrött: $3',
'show-big-image' => 'Dat Bild wat grötter',
-'show-big-image-thumb' => '<small>Grött vun disse Vörschau: $1 × $2 Pixels</small>',
'file-info-gif-looped' => 'löppt as Slööp',
'file-info-gif-frames' => '$1 {{PLURAL:$1|Bild|Biller}}',
'file-info-png-looped' => 'löppt as Slööp',
@@ -2639,14 +2592,21 @@ Wat denn noch an Lenken kummt in de Reeg, dat sünd Utnahmen, bi de dat Bild lie
'metadata-help' => 'Disse Datei bargt noch mehr Informatschonen, de mehrsttiets vun de Digitalkamera oder den Scanner kaamt. Dör Afännern vun de Originaldatei köönt welk Details nich mehr ganz to dat Bild passen.',
'metadata-expand' => 'Wies mehr Details',
'metadata-collapse' => 'Wies minner Details',
-'metadata-fields' => 'De Feller vun de EXIF-Metadaten, de hier indragen sünd, warrt op Bildsieden glieks wiest. De annern Feller sünd versteken.
+'metadata-fields' => 'De folgen Fehlers vun de EXIF-Metadaten, de in disse MediaWiki-Systemtext indragen sünd, warrt op Bildbeschrievenssieden mit inklappte Metadatentabell anwiest.
+Wiedere warrt standardmatig nich anwiest:
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Breed',
@@ -2661,13 +2621,11 @@ Wat denn noch an Lenken kummt in de Reeg, dat sünd Utnahmen, bi de dat Bild lie
'exif-ycbcrpositioning' => 'Y un C Positionerung',
'exif-xresolution' => 'Oplösen in de Breed',
'exif-yresolution' => 'Oplösen in de Hööchd',
-'exif-resolutionunit' => 'Eenheit vun de Oplösen',
'exif-stripoffsets' => 'Bilddaten-Versatz',
'exif-rowsperstrip' => 'Tall Regen je Striepen',
'exif-stripbytecounts' => 'Bytes je kumprimeert Striepen',
'exif-jpeginterchangeformat' => 'Offset to JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Grött vun de JPEG-Daten in Bytes',
-'exif-transferfunction' => 'Transferfunkschoon',
'exif-whitepoint' => 'Wittpunkt-Chromatizität',
'exif-primarychromaticities' => 'Chromatizität vun de Grundfarven',
'exif-ycbcrcoefficients' => 'YCbCr-Koeffizienten',
@@ -2686,7 +2644,6 @@ Wat denn noch an Lenken kummt in de Reeg, dat sünd Utnahmen, bi de dat Bild lie
'exif-compressedbitsperpixel' => 'Komprimeerte Bits je Pixel',
'exif-pixelydimension' => 'Gellen Bildbreed',
'exif-pixelxdimension' => 'Gellen Bildhööchd',
-'exif-makernote' => 'Herstellernotiz',
'exif-usercomment' => 'Brukerkommentar',
'exif-relatedsoundfile' => 'Tohörige Toondatei',
'exif-datetimeoriginal' => 'Tiet vun de Opnahm',
@@ -2700,7 +2657,6 @@ Wat denn noch an Lenken kummt in de Reeg, dat sünd Utnahmen, bi de dat Bild lie
'exif-exposureprogram' => 'Belichtungsprogramm',
'exif-spectralsensitivity' => 'Spektralsensitivität',
'exif-isospeedratings' => 'Film- oder Sensorempfindlichkeit (ISO)',
-'exif-oecf' => 'Optoelektroonsch Ãœmrekenfaktor',
'exif-shutterspeedvalue' => 'Belichttiet',
'exif-aperturevalue' => 'Blennweert',
'exif-brightnessvalue' => 'Helligkeit',
@@ -2713,7 +2669,6 @@ Wat denn noch an Lenken kummt in de Reeg, dat sünd Utnahmen, bi de dat Bild lie
'exif-focallength' => 'Brennwied',
'exif-subjectarea' => 'Hauptmotivpositschoon un -grött',
'exif-flashenergy' => 'Blitzstärk',
-'exif-spatialfrequencyresponse' => 'Ruumfrequenz-Reakschoon',
'exif-focalplanexresolution' => 'X-Oplösung Brennpunktflach',
'exif-focalplaneyresolution' => 'Y-Oplösung Brennpunktflach',
'exif-focalplaneresolutionunit' => 'Eenheit vun de Oplösung Brennpunktflach',
@@ -2722,7 +2677,6 @@ Wat denn noch an Lenken kummt in de Reeg, dat sünd Utnahmen, bi de dat Bild lie
'exif-sensingmethod' => 'Meetmethood',
'exif-filesource' => 'Dateiborn',
'exif-scenetype' => 'Szenentyp',
-'exif-cfapattern' => 'CFA-Munster',
'exif-customrendered' => 'Anpasst Bildverarbeidung',
'exif-exposuremode' => 'Belichtungsmodus',
'exif-whitebalance' => 'Wittutgliek',
@@ -2907,21 +2861,24 @@ Wat denn noch an Lenken kummt in de Reeg, dat sünd Utnahmen, bi de dat Bild lie
'exif-gpsspeed-m' => 'Mielen in’e Stünn',
'exif-gpsspeed-n' => 'Knoten',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometers',
+'exif-gpsdestdistance-m' => 'Mielen',
+'exif-gpsdestdistance-n' => 'Seemielen',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Wohre Richtung',
'exif-gpsdirection-m' => 'Magneetsch Richtung',
# External editor support
'edit-externally' => 'Änner disse Datei mit en extern Programm',
-'edit-externally-help' => '(Lees de [http://www.mediawiki.org/wiki/Manual:External_editors Installatschoonshelp] wenn du dor mehr to weten wullt)',
+'edit-externally-help' => '(Lees de [//www.mediawiki.org/wiki/Manual:External_editors Installatschoonshelp] wenn du dor mehr to weten wullt)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'all',
-'imagelistall' => 'all',
-'watchlistall2' => 'alle',
-'namespacesall' => 'alle',
-'monthsall' => 'alle',
-'limitall' => 'all',
+'watchlistall2' => 'alle',
+'namespacesall' => 'alle',
+'monthsall' => 'alle',
+'limitall' => 'all',
# E-mail address confirmation
'confirmemail' => 'Nettbreefadress bestätigen',
@@ -3019,14 +2976,14 @@ Versöök de normale Vörschau.',
'watchlistedit-noitems' => 'Diene Oppasslist is leddig.',
'watchlistedit-normal-title' => 'Oppasslist ännern',
'watchlistedit-normal-legend' => 'Sieden vun de Oppasslist rünnernehmen',
-'watchlistedit-normal-explain' => 'Dit sünd all de Sieden op diene Oppasslist. Sieden ruttonehmen, krüüz de Kassens blangen de Sieden an un klick op „{{int:Watchlistedit-normal-submit}}“. Du kannst diene Oppasslist ok in [[Special:Watchlist/raw|Listenform ännern]].',
+'watchlistedit-normal-explain' => 'Dit sünd all de Sieden op diene Oppasslist. Sieden ruttonehmen, krüüz de Kassens blangen de Sieden an un klick op „{{int:Watchlistedit-normal-submit}}“. Du kannst diene Oppasslist ok in [[Special:EditWatchlist/raw|Listenform ännern]].',
'watchlistedit-normal-submit' => 'Sieden rutnehmen',
'watchlistedit-normal-done' => '{{PLURAL:$1|Ene Siet|$1 Sieden}} vun de Oppasslist rünnernahmen:',
'watchlistedit-raw-title' => 'Oppasslist as Textlist ännern',
'watchlistedit-raw-legend' => 'Oppasslist as Textlist ännern',
'watchlistedit-raw-explain' => 'Dit sünd de Sieden op diene Oppasslist as List. Du kannst Sieden rutnehmen oder tofögen. Een Reeg för een Sied.
Wenn du trech büst, denn klick op Oppasslist spiekern“.
-Du kannst ok de [[Special:Watchlist/edit|normale Sied to’n Ännern]] bruken.',
+Du kannst ok de [[Special:EditWatchlist|normale Sied to’n Ännern]] bruken.',
'watchlistedit-raw-titles' => 'Sieden:',
'watchlistedit-raw-submit' => 'Oppasslist spiekern',
'watchlistedit-raw-done' => 'Diene Oppasslist is spiekert worrn.',
@@ -3043,27 +3000,26 @@ Du kannst ok de [[Special:Watchlist/edit|normale Sied to’n Ännern]] bruken.',
'duplicate-defaultsort' => 'Wohrschau: De DEFAULTSORTKEY „$2“ överschrifft den vörher bruukten Slötel „$1“.',
# Special:Version
-'version' => 'Version',
-'version-extensions' => 'Installeerte Extensions',
-'version-specialpages' => 'Spezialsieden',
-'version-parserhooks' => 'Parser-Hooks',
-'version-variables' => 'Variablen',
-'version-other' => 'Annern Kraam',
-'version-mediahandlers' => 'Medien-Handlers',
-'version-hooks' => 'Hooks',
-'version-extension-functions' => 'Extension-Funkschonen',
-'version-parser-extensiontags' => "Parser-Extensions ''(Tags)''",
-'version-parser-function-hooks' => 'Parser-Funkschonen',
-'version-skin-extension-functions' => 'Skin-Extension-Funkschonen',
-'version-hook-name' => 'Hook-Naam',
-'version-hook-subscribedby' => 'Opropen vun',
-'version-version' => '(Version $1)',
-'version-license' => 'Lizenz',
-'version-poweredby-credits' => "Dit Wiki bruukt '''[http://www.mediawiki.org/ MediaWiki]''', Copyright © 2001–$1 $2.",
-'version-poweredby-others' => 'annere',
-'version-software' => 'Installeerte Software',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Version',
+'version' => 'Version',
+'version-extensions' => 'Installeerte Extensions',
+'version-specialpages' => 'Spezialsieden',
+'version-parserhooks' => 'Parser-Hooks',
+'version-variables' => 'Variablen',
+'version-other' => 'Annern Kraam',
+'version-mediahandlers' => 'Medien-Handlers',
+'version-hooks' => 'Hooks',
+'version-extension-functions' => 'Extension-Funkschonen',
+'version-parser-extensiontags' => "Parser-Extensions ''(Tags)''",
+'version-parser-function-hooks' => 'Parser-Funkschonen',
+'version-hook-name' => 'Hook-Naam',
+'version-hook-subscribedby' => 'Opropen vun',
+'version-version' => '(Version $1)',
+'version-license' => 'Lizenz',
+'version-poweredby-credits' => "Dit Wiki bruukt '''[//www.mediawiki.org/ MediaWiki]''', Copyright © 2001–$1 $2.",
+'version-poweredby-others' => 'annere',
+'version-software' => 'Installeerte Software',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath' => 'Dateipadd',
@@ -3075,9 +3031,7 @@ Geev den Dateinaam ahn den Tosatz „{{ns:file}}:“ an.',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Söök na Datein, de jüst gliek sünd',
-'fileduplicatesearch-summary' => 'Söök na Datein, de na jemehr Hash-Tallen jüst gliek sünd.
-
-Geev den Dateinaam ahn dat Präfix „{{ns:file}}:“ in.',
+'fileduplicatesearch-summary' => 'Söök na Datein, de na jemehr Hash-Tallen jüst gliek sünd.',
'fileduplicatesearch-legend' => 'Söök na Datein, de jüst gliek sünd',
'fileduplicatesearch-filename' => 'Dateinaam:',
'fileduplicatesearch-submit' => 'Söken',
diff --git a/languages/messages/MessagesNds_nl.php b/languages/messages/MessagesNds_nl.php
index f9b14850..de19b4f2 100644
--- a/languages/messages/MessagesNds_nl.php
+++ b/languages/messages/MessagesNds_nl.php
@@ -66,6 +66,7 @@ $bookstoreList = array(
'Koninklijke Bibliotheek' => 'http://opc4.kb.nl/DB=1/SET=5/TTL=1/CMD?ACT=SRCH&IKT=1007&SRT=RLV&TRM=$1'
);
+#!!# Translation <b>HLEERSTE:</b> is used more than once for <a href="#mw-sp-magic-lcfirst">lcfirst</a> and <a href="#mw-sp-magic-ucfirst">ucfirst</a>.
$magicWords = array(
'redirect' => array( '0', '#DEURVERWIEZING', '#DOORVERWIJZING', '#REDIRECT' ),
'notoc' => array( '0', '__GIENONDERWARPEN__', '__GEENINHOUD__', '__NOTOC__' ),
@@ -201,93 +202,99 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Dubbele_deurverwiezingen' ),
+ 'Activeusers' => array( 'Actieve_gebrukers' ),
+ 'Allmessages' => array( 'Alle_systeemteksen' ),
+ 'Allpages' => array( 'Alle_pagina\'s' ),
+ 'Ancientpages' => array( 'Oudste_pagina\'s' ),
+ 'Blankpage' => array( 'Lege_pagina' ),
+ 'Block' => array( 'Blokkeer_IP' ),
+ 'Blockme' => array( 'Blokkeer_mien' ),
+ 'Booksources' => array( 'Boekinfermasie' ),
'BrokenRedirects' => array( 'Ebreuken_deurverwiezingen' ),
- 'Disambiguations' => array( 'Deurverwiespagina\'s' ),
- 'Userlogin' => array( 'Anmelden' ),
- 'Userlogout' => array( 'Ofmelden' ),
+ 'Categories' => array( 'Kattegerieën' ),
+ 'ChangePassword' => array( 'Wachwoord_wiezigen' ),
+ 'Confirmemail' => array( 'Netpos_bevestigen' ),
+ 'Contributions' => array( 'Biedragen' ),
'CreateAccount' => array( 'Gebruker_anmaken' ),
- 'Preferences' => array( 'Veurkeuren' ),
- 'Watchlist' => array( 'Volglieste' ),
- 'Recentchanges' => array( 'Leste_wiezigingen' ),
- 'Upload' => array( 'Bestanen_toevoegen' ),
+ 'Deadendpages' => array( 'Gien_verwiezingen' ),
+ 'DeletedContributions' => array( 'Vort-ehaolen_gebrukersbiedragen' ),
+ 'Disambiguations' => array( 'Deurverwiespagina\'s' ),
+ 'DoubleRedirects' => array( 'Dubbele_deurverwiezingen' ),
+ 'Emailuser' => array( 'Berich_sturen' ),
+ 'Export' => array( 'Uutvoeren' ),
+ 'Fewestrevisions' => array( 'Minste_bewarkingen' ),
+ 'FileDuplicateSearch' => array( 'Dubbele_bestanen_zeuken' ),
+ 'Filepath' => array( 'Bestaanslokasie' ),
+ 'Import' => array( 'Invoeren' ),
+ 'Invalidateemail' => array( 'Netpos_ongeldig' ),
+ 'BlockList' => array( 'IP-blokkeerlieste' ),
+ 'LinkSearch' => array( 'Verwiezingen_zeuken' ),
+ 'Listadmins' => array( 'Beheerderslieste' ),
+ 'Listbots' => array( 'Botlieste' ),
'Listfiles' => array( 'Ofbeeldingenlieste' ),
- 'Newimages' => array( 'Nieje_ofbeeldingen' ),
- 'Listusers' => array( 'Gebrukerslieste' ),
'Listgrouprights' => array( 'Groepsrechen_bekieken' ),
- 'Statistics' => array( 'Staotestieken' ),
- 'Randompage' => array( 'Willekeurig_artikel' ),
+ 'Listredirects' => array( 'Deurverwiezingslieste' ),
+ 'Listusers' => array( 'Gebrukerslieste' ),
+ 'Lockdb' => array( 'Databanke_blokkeren' ),
+ 'Log' => array( 'Logboeken' ),
'Lonelypages' => array( 'Weespagina\'s' ),
- 'Uncategorizedpages' => array( 'Pagina\'s_zonder_kattegerie' ),
- 'Uncategorizedcategories' => array( 'Kattergieën_zonder_kattegerie' ),
- 'Uncategorizedimages' => array( 'Ofbeeldingen_zonder_kattegerie' ),
- 'Uncategorizedtemplates' => array( 'Mallen_zonder_kattegerie' ),
- 'Unusedcategories' => array( 'Ongebruken_kattegerieën' ),
- 'Unusedimages' => array( 'Ongebruken_ofbeeldingen' ),
- 'Wantedpages' => array( 'Gewunste_pagina\'s' ),
- 'Wantedcategories' => array( 'Gewunste_kattegerieën' ),
- 'Wantedfiles' => array( 'Gewunste_bestanen' ),
- 'Wantedtemplates' => array( 'Gewunste_mallen' ),
+ 'Longpages' => array( 'Lange_artikels' ),
+ 'MergeHistory' => array( 'Geschiedenisse_bie_mekaar_doon' ),
+ 'MIMEsearch' => array( 'MIME-zeuken' ),
+ 'Mostcategories' => array( 'Meeste_kattegerieën' ),
+ 'Mostimages' => array( 'Meeste_ofbeeldingen' ),
'Mostlinked' => array( 'Meest_naor_verwezen_pagina\'s' ),
'Mostlinkedcategories' => array( 'Meestgebruken_kattegerieën' ),
'Mostlinkedtemplates' => array( 'Meest_naor_verwezen_mallen' ),
- 'Mostimages' => array( 'Meeste_ofbeeldingen' ),
- 'Mostcategories' => array( 'Meeste_kattegerieën' ),
'Mostrevisions' => array( 'Meeste_bewarkingen' ),
- 'Fewestrevisions' => array( 'Minste_bewarkingen' ),
- 'Shortpages' => array( 'Korte_artikels' ),
- 'Longpages' => array( 'Lange_artikels' ),
+ 'Movepage' => array( 'Herneum_pagina' ),
+ 'Mycontributions' => array( 'Mien_biedragen' ),
+ 'Mypage' => array( 'Mien_gebrukerspagina' ),
+ 'Mytalk' => array( 'Mien_overleg' ),
+ 'Myuploads' => array( 'Mien_in-elaojen_bestanen' ),
+ 'Newimages' => array( 'Nieje_ofbeeldingen' ),
'Newpages' => array( 'Nieje_pagina\'s' ),
- 'Ancientpages' => array( 'Oudste_pagina\'s' ),
- 'Deadendpages' => array( 'Gien_verwiezingen' ),
+ 'PasswordReset' => array( 'Wachwoord_opniej_instellen' ),
+ 'PermanentLink' => array( 'Vaste_verwiezing' ),
+ 'Popularpages' => array( 'Populaire_artikels' ),
+ 'Preferences' => array( 'Veurkeuren' ),
+ 'Prefixindex' => array( 'Veurvoegselindex' ),
'Protectedpages' => array( 'Beveiligen_pagina\'s' ),
'Protectedtitles' => array( 'Beveiligen_titels' ),
- 'Allpages' => array( 'Alle_pagina\'s' ),
- 'Prefixindex' => array( 'Veurvoegselindex' ),
- 'Ipblocklist' => array( 'IP-blokkeerlieste' ),
- 'Specialpages' => array( 'Speciale_pagina\'s' ),
- 'Contributions' => array( 'Biedragen' ),
- 'Emailuser' => array( 'Berich_sturen' ),
- 'Confirmemail' => array( 'E-mailbevestigen' ),
- 'Whatlinkshere' => array( 'Verwiezingen_naor_disse_pagina' ),
+ 'Randompage' => array( 'Zomer_een_artikel' ),
+ 'Randomredirect' => array( 'Willekeurige_deurverwiezing' ),
+ 'Recentchanges' => array( 'Leste_wiezigingen' ),
'Recentchangeslinked' => array( 'Volg_verwiezingen' ),
- 'Movepage' => array( 'Herneum_pagina' ),
- 'Blockme' => array( 'Blokkeer_mien' ),
- 'Booksources' => array( 'Boekinfermasie' ),
- 'Categories' => array( 'Kattegerieën' ),
- 'Export' => array( 'Uutvoeren' ),
- 'Version' => array( 'Versie' ),
- 'Allmessages' => array( 'Alle_systeemteksen' ),
- 'Log' => array( 'Logboeken' ),
- 'Blockip' => array( 'Blokkeer_IP' ),
+ 'Revisiondelete' => array( 'Versie_vortdoon' ),
+ 'RevisionMove' => array( 'Versie_verplaosen' ),
+ 'Search' => array( 'Zeuken' ),
+ 'Shortpages' => array( 'Korte_artikels' ),
+ 'Specialpages' => array( 'Speciale_pagina\'s' ),
+ 'Statistics' => array( 'Staotestieken' ),
+ 'Tags' => array( 'Etiketten' ),
+ 'Uncategorizedcategories' => array( 'Kattergieën_zonder_kattegerie' ),
+ 'Uncategorizedimages' => array( 'Ofbeeldingen_zonder_kattegerie' ),
+ 'Uncategorizedpages' => array( 'Pagina\'s_zonder_kattegerie' ),
+ 'Uncategorizedtemplates' => array( 'Mallen_zonder_kattegerie' ),
'Undelete' => array( 'Weerummeplaosen' ),
- 'Import' => array( 'Invoeren' ),
- 'Lockdb' => array( 'Databanke_blokkeren' ),
'Unlockdb' => array( 'Databanke_vriegeven' ),
- 'Userrights' => array( 'Gebrukersrechen' ),
- 'MIMEsearch' => array( 'MIME-zeuken' ),
- 'FileDuplicateSearch' => array( 'Dubbele_bestanen_zeuken' ),
- 'Unwatchedpages' => array( 'Neet-evolgen_pagina\'s' ),
- 'Listredirects' => array( 'Deurverwiezingslieste' ),
- 'Revisiondelete' => array( 'Versie_vortdoon' ),
+ 'Unusedcategories' => array( 'Ongebruken_kattegerieën' ),
+ 'Unusedimages' => array( 'Ongebruken_ofbeeldingen' ),
'Unusedtemplates' => array( 'Ongebruken_mallen' ),
- 'Randomredirect' => array( 'Willekeurige_deurverwiezing' ),
- 'Mypage' => array( 'Mien_gebrukerspagina' ),
- 'Mytalk' => array( 'Mien_overleg' ),
- 'Mycontributions' => array( 'Mien_biedragen' ),
- 'Listadmins' => array( 'Beheerderslieste' ),
- 'Listbots' => array( 'Botlieste' ),
- 'Popularpages' => array( 'Popelaire_artikels' ),
- 'Search' => array( 'Zeuken' ),
- 'Resetpass' => array( 'Wachwoord_wiezigen' ),
+ 'Unwatchedpages' => array( 'Neet-evolgen_pagina\'s' ),
+ 'Upload' => array( 'Bestanen_opsturen' ),
+ 'UploadStash' => array( 'Bestanenstallige' ),
+ 'Userlogin' => array( 'Anmelden' ),
+ 'Userlogout' => array( 'Ofmelden' ),
+ 'Userrights' => array( 'Gebrukersrechen' ),
+ 'Version' => array( 'Versie' ),
+ 'Wantedcategories' => array( 'Gewunste_kattegerieën' ),
+ 'Wantedfiles' => array( 'Gewunste_bestanen' ),
+ 'Wantedpages' => array( 'Gewunste_pagina\'s' ),
+ 'Wantedtemplates' => array( 'Gewunste_mallen' ),
+ 'Watchlist' => array( 'Volglieste' ),
+ 'Whatlinkshere' => array( 'Verwiezingen_naor_disse_pagina' ),
'Withoutinterwiki' => array( 'Gien_interwiki' ),
- 'MergeHistory' => array( 'Geschiedenisse_bie_mekaar_doon' ),
- 'Filepath' => array( 'Bestaanslokasie' ),
- 'Invalidateemail' => array( 'E-mail_annuleren' ),
- 'Blankpage' => array( 'Lege_pagina' ),
- 'LinkSearch' => array( 'Verwiezingen_zeuken' ),
- 'DeletedContributions' => array( 'Vort-ehaolen_gebrukersbiedragen' ),
- 'Activeusers' => array( 'Actieve_gebrukers' ),
);
$linkTrail = '/^([a-zäöüïëéèà]+)(.*)$/sDu';
@@ -324,8 +331,8 @@ $messages = array(
'tog-shownumberswatching' => 't Antal gebrukers bekieken die disse pagina volgt',
'tog-oldsig' => 'Bestaonde haandtekening:',
'tog-fancysig' => 'Ondertekening zien as wikitekste (zonder automatiese verwiezing)',
-'tog-externaleditor' => 'Standard n externe tekstbewarker gebruken (allinnig veur gevorderden - veur disse funksie bin spesiale instellingen neudig. [http://www.mediawiki.org/wiki/Manual:External_editors Meer informasie]).',
-'tog-externaldiff' => 'Standard n extern vergeliekingsprogramma gebruken (allinnig veur gevorderden - veur disse funksie bin spesiale instellingen neudig. [http://www.mediawiki.org/wiki/Manual:External_editors Meer informasie]).',
+'tog-externaleditor' => 'Standard n externe tekstbewarker gebruken (allinnig veur gevorderden - veur disse funksie bin spesiale instellingen neudig. [//www.mediawiki.org/wiki/Manual:External_editors Meer informasie]).',
+'tog-externaldiff' => 'Standard n extern vergeliekingsprogramma gebruken (allinnig veur gevorderden - veur disse funksie bin spesiale instellingen neudig. [//www.mediawiki.org/wiki/Manual:External_editors Meer informasie]).',
'tog-showjumplinks' => '"Gao naor"-verwiezingen toelaoten',
'tog-uselivepreview' => 'Gebruuk "rechtstreeks naokieken" (mö\'j JavaScript veur hebben - experimenteel)',
'tog-forceeditsummary' => 'Geef n melding bie n lege samenvatting',
@@ -422,14 +429,7 @@ $messages = array(
'listingcontinuesabbrev' => '(vervolg)',
'index-category' => "Pagina's die indexeerd bin",
'noindex-category' => "Pagina's die niet indexeerd bin",
-
-'mainpagetext' => "'''’t Installeren van de MediaWiki programmatuur is succesvol.'''",
-'mainpagedocfooter' => 'Bekiek de [http://meta.wikimedia.org/wiki/Help:Contents haandleiding] veur informasie over t gebruuk van de wikiprogrammatuur.
-
-== Meer hulpe ==
-* [http://www.mediawiki.org/wiki/Help:Configuration_settings Lieste mit instellingen]
-* [http://www.mediawiki.org/wiki/Help:FAQ MediaWiki-vragen die vake esteld wörden]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki-postlieste veur nieje versies]',
+'broken-file-category' => "Pagina's mit verkeerde bestaandsverwiezingen",
'about' => 'Informasie',
'article' => 'Artikel',
@@ -481,10 +481,10 @@ $messages = array(
'history' => 'Geschiedenisse',
'history_short' => 'Geschiedenisse',
'updatedmarker' => 'bie-ewörken sinds mien leste bezeuk',
-'info_short' => 'Infermasie',
'printableversion' => 'Aofdrokbaore versie',
'permalink' => 'Vaste verwiezing',
'print' => 'Aofdrokken',
+'view' => 'Lezen',
'edit' => 'Bewarken',
'create' => 'Anmaken',
'editthispage' => 'Pagina bewarken',
@@ -492,6 +492,7 @@ $messages = array(
'delete' => 'Vortdoon',
'deletethispage' => 'Disse pagina vortdoon',
'undelete_short' => '$1 {{PLURAL:$1|versie|versies}} weerummeplaotsen',
+'viewdeleted_short' => '{{PLURAL:$1|Eén versie die vortedaon is|$1 versies die vortedaon bin}} bekieken',
'protect' => 'Beveiligen',
'protect_change' => 'wiezigen',
'protectthispage' => 'Beveiligen',
@@ -575,6 +576,8 @@ $1",
'toc' => 'Onderwarpen',
'showtoc' => 'Bekieken',
'hidetoc' => 'Verbarg',
+'collapsible-collapse' => 'Inklappen',
+'collapsible-expand' => 'Uutklappen',
'thisisdeleted' => 'Bekieken of herstellen van $1?',
'viewdeleted' => 'Bekiek $1?',
'restorelink' => '{{PLURAL:$1|versie die vortedaon is|versies die vortedaon bin}}',
@@ -586,6 +589,8 @@ $1",
'page-rss-feed' => '"$1" RSS-voer',
'page-atom-feed' => '"$1" Atom-voer',
'red-link-title' => '$1 (pagina besteet nog niet)',
+'sort-descending' => 'Aoflopend sorteren',
+'sort-ascending' => 'Oplopend sorteren',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Artikel',
@@ -668,12 +673,13 @@ Zeukopdrachte: $2',
'protectedpagetext' => 'Disse pagina is beveiligd um bewarkingen te veurkoemen.',
'viewsourcetext' => 'Je kunnen de brontekste van disse pagina bewarken en bekieken:',
'protectedinterface' => 'Op disse pagina steet n tekste die gebruukt wörden veur systeemteksten van de wiki. Allinnig beheerders kunnen disse pagina bewarken.',
-'editinginterface' => "'''Waorschuwing:''' je bewarken n pagina die gebruukt wörden deur de programmatuur. Wa'j hier wiezigen, is van invleud op de hele wiki. Overweeg veur vertalingen um [http://translatewiki.net/wiki/Main_Page?setlang=nds-nl translatewiki.net] te gebruken, t vertalingsprojekt veur MediaWiki.",
+'editinginterface' => "'''Waorschuwing:''' je bewarken n pagina die gebruukt wörden deur de programmatuur. Wa'j hier wiezigen, is van invleud op de hele wiki. Overweeg veur vertalingen um [//translatewiki.net/wiki/Main_Page?setlang=nds-nl translatewiki.net] te gebruken, t vertalingsprojekt veur MediaWiki.",
'sqlhidden' => '(SQL-zeukopdrachte verbörgen)',
'cascadeprotected' => 'Disse pagina is beveiligd umdat t veurkump in de volgende {{PLURAL:$1|pagina|pagina\'s}}, die beveiligd {{PLURAL:$1|is|bin}} mit de "kaskade"-opsie:
$2',
'namespaceprotected' => "Je maggen gien pagina's in de '''$1'''-naamruumte bewarken.",
-'customcssjsprotected' => 'Je kunnen disse pagina neet bewarken umdat der persoonlijke instellingen van een aandere gebruker in staon.',
+'customcssprotected' => 'Je kunnen disse CSS-pagina niet bewarken, umdat der persoonlike instellingen van n aandere gebruker in staon.',
+'customjsprotected' => 'Je kunnen disse JavaScript-pagina niet bewarken, umdat der persoonlike instellingen van n aandere gebruker in staon.',
'ns-specialprotected' => "Spesiale pagina's kunnen niet bewarkt wörden.",
'titleprotected' => "t Anmaken van disse pagina is beveiligd deur [[User:$1|$1]].
De op-egeven reden is ''$2''.",
@@ -711,6 +717,7 @@ Vergeet niet joew [[Special:Preferences|veurkeuren veur {{SITENAME}}]] in te ste
'createaccount' => 'Niej gebrukersprofiel anmaken',
'gotaccount' => "Stao'j al in-eschreven? '''$1'''.",
'gotaccountlink' => 'Anmelden',
+'userlogin-resetlink' => "Bi'j de anmeldgegevens kwiet?",
'createaccountmail' => 'per netpost',
'createaccountreason' => 'Reden:',
'badretype' => "De wachtwoorden die'j in-etikt hebben bin niet liek alleens.",
@@ -723,6 +730,8 @@ Kies n aandere naam.',
Je hebben disse scheumbestaanden uutezet.
Zet ze an, en meld daornao an mit de nieje gegevens.',
'nocookieslogin' => 't Anmelden is mislokt umdat de webkieker gien scheumbestaanden (cookies) an hef staon. Probeer t aksepteren van scheumbestaanden an te zetten en daornao opniej an te melden.',
+'nocookiesfornew' => "De gebruker is niet an-emaakt, umdat de bron niet bevestigd kon wörden.
+Zörg derveur da'j scheumbestaanden (cookies) an hebben staon, herlaot disse pagina en probeer t opniej.",
'noname' => 'Je mutten n gebrukersnaam opgeven.',
'loginsuccesstitle' => 'Suksesvol an-emeld',
'loginsuccess' => 'Je bin noen an-emeld bie {{SITENAME}} as "$1".',
@@ -774,13 +783,14 @@ Negeer dit bericht as disse gebruker zonder joew toestemming an-emaakt is.',
'usernamehasherror' => "In n gebrukersnaam ma'j gien hekjen gebruken.",
'login-throttled' => "Je hebben lestens te vake eprobeerd um an te melden mit n verkeerd wachtwoord.
Je mutten effen wachten veurda'j t opniej proberen kunnen.",
+'login-abort-generic' => 'Je bin niet an-emeld. De procedure is aofebreuken.',
'loginlanguagelabel' => 'Taal: $1',
'suspicious-userlogout' => 'Joew verzeuk um of te melden is aofewezen umdat t dernaor uutziet dat t verstuurd is deur n kepotte webkieker of tussenopslagbuffer',
# E-mail sending
'php-mail-error-unknown' => 'Der was n onbekende fout mit de mail()-funksie van PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Wachtwoord wiezigen',
'resetpass_announce' => "Je bin an-emeld mit n veurlopige kode die mit de netpost toe-estuurd wörden. Um t anmelden te voltooien, mö'j n niej wachtwoord invoeren:",
'resetpass_text' => '<!-- Tekste hier invoegen -->',
@@ -798,6 +808,34 @@ Je mutten effen wachten veurda'j t opniej proberen kunnen.",
Misschien he'j t wachtwoord al ewiezigd of n niej veurlopig wachtwoord an-evreugen.",
'resetpass-temp-password' => 'Veurlopig wachtwoord:',
+# Special:PasswordReset
+'passwordreset' => 'Wachtwoord opniej instellen',
+'passwordreset-text' => 'Vul dit formulier in zoda-w joe netpost kunnen sturen mit de gebrukersgegevens.',
+'passwordreset-legend' => 'Wachtwoord opniej instellen',
+'passwordreset-disabled' => 'Je kunnen op disse wiki joew wachtwoord niet opniej instellen.',
+'passwordreset-pretext' => '{{PLURAL:$1||Voer één van de onderstaonde velden in}}',
+'passwordreset-username' => 'Gebruker:',
+'passwordreset-domain' => 'Domein:',
+'passwordreset-email' => 'Netpostadres:',
+'passwordreset-emailtitle' => 'Gebrukersgegevens op {{SITENAME}}',
+'passwordreset-emailtext-ip' => "Der hef der ene, warschienlik jie zelf, gebrukersgegevens veur {{SITENAME}} ($4) op-evreugen vanaof t IP-adres $1.
+De volgende {{PLURAL:$3|gebruker is|gebrukers bin}} ekoppeld an dit netpostadres:
+
+$2
+
+{{PLURAL:$3|Dit tiedelike wachtwoord vervuilt|Disse tiedelike wachtwoorden vervallen}} over {{PLURAL:$5|één dag|$5 dagen}}.
+Meld je eigen noen an en wiezig t wachtwoord. A'j dit verzeuk niet zelf edaon hebben, of a'j t oorspronkelike wachtwoord nog kennen en t niet wiezigen willen, negeer dit bericht dan en blief joew ouwe wachtwoord gebruken.",
+'passwordreset-emailtext-user' => "De gebruker $1 van {{SITENAME}} hef joew gebrukersgegevens veur {{SITENAME}} ($4) op-evreugen vanaof t IP-adres $1.
+De volgende {{PLURAL:$3|gebruker is|gebrukers bin}} ekoppeld an dit netpostadres:
+
+$2
+
+{{PLURAL:$3|Dit tiedelike wachtwoord vervuilt|Disse tiedelike wachtwoorden vervallen}} over {{PLURAL:$5|één dag|$5 dagen}}.
+Meld je eigen noen an en wiezig t wachtwoord. A'j dit verzeuk niet zelf edaon hebben, of a'j t oorspronkelike wachtwoord nog kennen en t niet wiezigen willen, negeer dit bericht dan en blief joew ouwe wachtwoord gebruken.",
+'passwordreset-emailelement' => 'Gebrukersnaam: $1
+Tiedelik wachtwoord: $2',
+'passwordreset-emailsent' => 'Der is per netpost n herinnering verstuurd.',
+
# Edit page toolbar
'bold_sample' => 'Vet-edrokten tekste',
'bold_tip' => 'Vet-edrokten tekste',
@@ -809,8 +847,6 @@ Misschien he'j t wachtwoord al ewiezigd of n niej veurlopig wachtwoord an-evreug
'extlink_tip' => 'Uutgaonde verwiezing',
'headline_sample' => 'Deelonderwarp',
'headline_tip' => 'Deelonderwarp',
-'math_sample' => 'a^2 + b^2 = c^2',
-'math_tip' => 'Wiskundige formule (in LaTeX)',
'nowiki_sample' => 'Tekste zonder wiki-opmaak.',
'nowiki_tip' => 'Gien wiki-opmaak toepassen',
'image_sample' => 'Veurbeeld.jpg',
@@ -897,7 +933,7 @@ of [{{fullurl:{{FULLPAGENAME}}|action=edit}} disse pagina bewarken]</span>.',
'noarticletext-nopermission' => 'Op disse pagina steet gien tekste.
Je kunnen [[Special:Search/{{PAGENAME}}|zeuken naor disse term]] in aandere pagina\'s of
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken deurzeuken]</span>.',
-'userpage-userdoesnotexist' => 'Je bewarken een gebrukerspagina van een gebruker dee neet besteet (gebruker "$1"). Kiek effen nao o-j disse pagina wel anmaken/bewarken willen.',
+'userpage-userdoesnotexist' => 'Je bewarken n gebrukerspagina van n gebruker die niet besteet (gebruker "<nowiki>$1</nowiki>"). Kiek effen nao o\'j disse pagina wel anmaken/bewarken willen.',
'userpage-userdoesnotexist-view' => 'Gebruker "$1" steet hier niet in-eschreven',
'blocked-notice-logextract' => 'Disse gebruker is op t moment eblokkeerd.
De leste regel uut t blokkeerlogboek steet hieronder as referensie:',
@@ -931,6 +967,7 @@ As t probleem dan nog steeds veurkump, probeer dan [[Special:UserLogout|opniej a
'''As dit n legitieme wieziging is, probeer t dan opniej.'''
As t dan nog problemen geef, probeer dan um [[Special:UserLogout|opniej an te melden]].",
'token_suffix_mismatch' => "'''De bewarking is eweigerd umdat de webkieker de leestekens in t bewarkingstoken verkeerd behaandeld hef. De bewarking is eweigerd um verminking van de paginatekste te veurkoemen. Dit gebeurt soms as der n web-ebaseerden proxydienst gebruukt wörden waor fouten in zitten.'''",
+'edit_form_incomplete' => "'''Partie delen van t bewarkingsformulier hebben de server niet bereikt. Kiek eers nao of de bewarkingen kloppen en probeer t opniej.'''",
'editing' => 'Bewark: $1',
'editingsection' => 'Bewark: $1 (deelpagina)',
'editingcomment' => 'Bewark: $1 (niej onderwarp)',
@@ -1159,7 +1196,7 @@ Kiek de logboeken nao.',
# Suppression log
'suppressionlog' => 'Verbargingslogboek',
-'suppressionlogtext' => 'De onderstaande lieste bevat de pagina dee vort-edaon bin en blokkeringen dee veur beheerders verbörgen bin. In de [[Special:IPBlockList|IP-blokkeerlieste]] bin de blokkeringen dee noen van toepassing bin te bekieken.',
+'suppressionlogtext' => "In de onderstaande lieste staon de vortedaone pagina's en blokkeringen die veur beheerders verbörgen bin. In de [[Special:BlockList|IP-blokkeerlieste]] bin de blokkeringen, die noen van toepassing bin, te bekieken.",
# History merging
'mergehistory' => "Geschiedenisse van pagina's bie mekaar doon",
@@ -1265,12 +1302,13 @@ Kiek de logboeken nao.',
'searchdisabled' => 'Zeuken in {{SITENAME}} is niet meugelik. Je kunnen gebruukmaken van Google. De gegevens over {{SITENAME}} bin misschien niet bie-ewörken.',
# Quickbar
-'qbsettings' => 'Paginalieste',
-'qbsettings-none' => 'Gien',
-'qbsettings-fixedleft' => 'Links, vaste',
-'qbsettings-fixedright' => 'Rechts, vaste',
-'qbsettings-floatingleft' => 'Links, zweven',
-'qbsettings-floatingright' => 'Rechts, zweven',
+'qbsettings' => 'Paginalieste',
+'qbsettings-none' => 'Gien',
+'qbsettings-fixedleft' => 'Links, vaste',
+'qbsettings-fixedright' => 'Rechts, vaste',
+'qbsettings-floatingleft' => 'Links, zweven',
+'qbsettings-floatingright' => 'Rechts, zweven',
+'qbsettings-directionality' => 'Vaste, aofhankelik van de schriefrichtige van joew taal',
# Preferences page
'preferences' => 'Veurkeuren',
@@ -1281,9 +1319,10 @@ Kiek de logboeken nao.',
'changepassword' => 'Wachtwoord wiezigen',
'prefs-skin' => '{{SITENAME}}-uterlik',
'skin-preview' => 'bekieken',
-'prefs-math' => 'Wiskundige formules',
'datedefault' => 'Gien veurkeur',
+'prefs-beta' => 'Bètafunksies',
'prefs-datetime' => 'Daotum en tied',
+'prefs-labs' => 'Alphafunksies',
'prefs-personal' => 'Gebrukersgegevens',
'prefs-rc' => 'Leste wiezigingen',
'prefs-watchlist' => 'Volglieste',
@@ -1305,8 +1344,6 @@ Kiek de logboeken nao.',
'columns' => 'Kolommen',
'searchresultshead' => 'Zeukresultaoten',
'resultsperpage' => 'Antal zeukresultaoten per pagina',
-'contextlines' => 'Antal regels per evunnen pagina',
-'contextchars' => 'Antal tekens per pagina',
'stub-threshold' => 'Verwiezingsformattering van <a href="#" class="stub">beginnetjes</a>:',
'stub-threshold-disabled' => 'uuteschakeld',
'recentchangesdays' => 'Antal dagen die de lieste "leste wiezigingen" laot zien:',
@@ -1319,7 +1356,7 @@ Je kunnen oek disse egenereren standardkode gebruken: $1",
'savedprefs' => 'Veurkeuren bin op-esleugen.',
'timezonelegend' => 'Tiedzone:',
'localtime' => 'Plaotselike tied:',
-'timezoneuseserverdefault' => 'Tied van de server gebruken',
+'timezoneuseserverdefault' => 'Wikistandard gebruken ($1)',
'timezoneuseoffset' => 'Aanders (tiedverschil angeven)',
'timezoneoffset' => 'Tiedverschil¹:',
'servertime' => 'Tied op de server:',
@@ -1368,8 +1405,8 @@ t Mut minder as {{PLURAL:$1|letter|letters}} hebben.',
Disse informasie is zichtbaor veur aandere gebrukers.',
'email' => 'Privéberichten',
'prefs-help-realname' => "* Echte naam (niet verplicht): a'j disse opsie invullen zu'w joew echte naam gebruken um erkenning te geven veur joew warkzaamheen.",
-'prefs-help-email' => "Een netposadres is neet verplich, mar zo ku-w wel joew wachwoord toesturen veur a-j 't vergeten bin.
-Je kunnen oek aandere luui in staot stellen um per netpos kontak mit joe op te nemen via de verwiezing op joew gebrukers- en overlegpagina, zonder da-j joew identiteit priesgeven.",
+'prefs-help-email' => "n Netpostadres is niet verplicht, mer zo ku'w wel joew wachtwoord toesturen veur a'j t vergeten bin.",
+'prefs-help-email-others' => "Je kunnen oek aandere meensen de meugelikheid geven um kontakt mit joe op te nemen mit n verwiezing op joew gebrukers- en overlegpagina zonder da'j de identiteit pries hoeven te geven.",
'prefs-help-email-required' => "Hier he'w n netpostadres veur neudig.",
'prefs-info' => 'Baosisinformasie',
'prefs-i18n' => 'Taalinstellingen',
@@ -1494,15 +1531,15 @@ Je kunnen oek aandere luui in staot stellen um per netpos kontak mit joe op te n
'right-userrights' => 'Alle gebrukersrechten bewarken',
'right-userrights-interwiki' => "Gebrukersrechten van gebrukers in aandere wiki's wiezigen",
'right-siteadmin' => 'De databanke blokkeren en weer vriegeven',
-'right-reset-passwords' => 'Wachtwoorden van aandere gebrukers opniej instellen',
'right-override-export-depth' => "Pagina's uutvoeren, oek de pagina's waor naor verwezen wörden, tot n diepte van 5",
'right-sendemail' => 'Bericht versturen naor aandere gebrukers',
# User rights log
-'rightslog' => 'Gebrukersrechtenlogboek',
-'rightslogtext' => 'Dit is n logboek mit veraanderingen van gebrukersrechten',
-'rightslogentry' => 'Gebrukersrechten veur $1 ewiezigd van $2 naor $3',
-'rightsnone' => '(gien)',
+'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 pagina lezen',
@@ -1625,12 +1662,12 @@ Zie de [[Special:NewFiles|uutstalling mit media]] veur n overzichte.',
'minlength1' => 'Bestaandsnamen mutten uut tenminsten één letter bestaon.',
'illegalfilename' => 'Der staon karakters in bestaandsnaam "$1" die niet in namen van artikels veur maggen koemen. Geef t bestaand n aandere naam, en probeer t dan opniej toe te voegen.',
'badfilename' => 'De naam van t bestaand is ewiezigd naor "$1".',
-'filetype-mime-mismatch' => "De bestaansextensie heurt neet bie 't MIME-type.",
+'filetype-mime-mismatch' => 'De bestaandsextensie ".$1" heurt niet bie t MIME-type van t bestaand ($2).',
'filetype-badmime' => 'Bestaanden mit t MIME-type "$1" ma\'j hier niet opsturen.',
'filetype-bad-ie-mime' => 'Dit bestaand kan niet op-estuurd wörden umdat Internet Explorer t zol herkennen as "$1", n niet toe-estaone bestaandstype die schao an kan richten.',
'filetype-unwanted-type' => "'''\".\$1\"''' is n ongewunst bestaandstype. An-ewezen {{PLURAL:\$3|bestaandstype is|bestaandstypes bin}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' is gien toe-estaone bestaanstype.
-Toe-estaone {{PLURAL:\$3|bestaanstype is|bestaanstypes bin}} \$2.",
+'filetype-banned-type' => "{{PLURAL:\$4|t Bestaandstype '''\".\$1\"''' wordt|De bestandstypes '''\".\$1\"''' worden}} niet toegelaten.
+{{PLURAL:\$3|t Toe-estaone bestaandstype is|De toe-estaone bestaandstypen bin}} \$2.",
'filetype-missing' => 'Dit bestaand hef gien extensie (bv. ".jpg").',
'empty-file' => "t Bestaand da'j op-egeven hebben was leeg.",
'file-too-large' => "t Bestaand da'j op-egeven hebben was te groot.",
@@ -1646,6 +1683,7 @@ Toe-estaone {{PLURAL:\$3|bestaanstype is|bestaanstypes bin}} \$2.",
'large-file' => 'Bestaanden mutten niet groter ween as $1, dit bestaand is $2.',
'largefileserver' => 't Bestaand is groter as dat de server toesteet.',
'emptyfile' => "t Bestaand da'j op-estuurd hebben is leeg. Dit kan koemen deur n tikfout in de bestaandsnaam. Kiek effen nao o'j dit bestaand wel bedoelden.",
+'windows-nonascii-filename' => 'Disse wiki ondersteunt gien bestaandsnamen mit spesiale tekens.',
'fileexists' => "n Bestaand mit disse naam besteet al; voeg t bestaand onder n aandere naam toe.
'''<tt>[[:$1]]</tt>''' [[$1|thumb]]",
'filepageexists' => "De beschrievingspagina veur dit bestaand bestung al op '''<tt>[[:$1]]</tt>''', mer der besteet nog gien bestaand mit disse naam.
@@ -1683,6 +1721,8 @@ Bekiek t vortdologboek veurda'j veurdan gaon.",
'php-uploaddisabledtext' => 't Opsturen van PHP-bestaanden is uuteschakeld. Kiek de instellingen veur t opsturen van bestaanden effen nao.',
'uploadscripted' => 'In dit bestaand steet HTML- of skriptkode die verkeerd elezen kan wörden deur de webkieker.',
'uploadvirus' => 'In dit bestaand zit n virus! Gegevens: $1',
+'uploadjava' => 't Bestaand is n ZIP-bestaand waor n Java .class-bestaand in zit.
+t Inlaojen van Java-bestaanden is niet toe-estaon umdat hiermee beveiligingsinstellingen ummezeild kunnen wörden.',
'upload-source' => 'Bronbestaand',
'sourcefilename' => 'Bestaandsnaam op de hardeschieve:',
'sourceurl' => 'Bronwebadres:',
@@ -1692,10 +1732,6 @@ Bekiek t vortdologboek veurda'j veurdan gaon.",
'upload-options' => 'Instellingen veur t opsturen van bestaanden',
'watchthisupload' => 'Volg dit bestaand',
'filewasdeleted' => "n Bestaand mit disse naam is al eerder vortedaon. Kiek t $1 nao veurda'j t opniej opsturen.",
-'upload-wasdeleted' => "'''Waorschuwing: je willen een bestaand opsturen dat eerder al vort-edaon is.'''
-
-Bedenk eers of 't inderdaod de bedoeling is dat dit bestaand op-estuurd wönnen.
-'t Logboek mit alle vort-edaone infermasie ku-j hier vienen:",
'filename-bad-prefix' => "De naam van t bestaand da'j opsturen, begint mit '''\"\$1\"''', dit is n niet-beschrievende naam die meestentieds automaties deur n digitale kamera egeven wörden. Kies n dudelike naam veur t bestaand.",
'upload-success-subj' => 't Bestaand is op-estuurd',
'upload-success-msg' => 't Bestaand [$2] steet derop. Je kunnen t hier vienen: [[:{{ns:file}}:$1]]',
@@ -1719,12 +1755,29 @@ As t probleem zo blif, neem dan kontakt op mit één van de [[Special:ListUsers/
'upload-unknown-size' => 'Onbekende grootte',
'upload-http-error' => 'Der is n HTTP-fout op-etrejen: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Der is wat fout egaon bie t los doon van t bestaand veur de ZIP-kontrole.',
+'zip-wrong-format' => 't Op-egeven bestaand was gien ZIP-bestaand.',
+'zip-bad' => 't Bestaand is beschaodig of is n onleesbaor ZIP-bestaand.
+De veiligheid kan niet ekontroleerd wörden.',
+'zip-unsupported' => 't Bestaand is n ZIP-bestaand dat gebruukmaak van ZIP-meugelikheen die MediaWiki niet ondersteunt.
+De veiligheid kan niet ekontroleerd wörden.',
+
+# Special:UploadStash
+'uploadstash' => 'Verbörgen bestaanden',
+'uploadstash-summary' => 'Disse pagina geef toegang tot bestaanden die op-estuurd bin of nog op-estuurd wörden mer nog niet beschikbaor emaakt bin op de wiki. Disse bestaanden bin allinnig zichtbaor veur de gebruker die ze opstuurt.',
+'uploadstash-clear' => 'Verbörgen bestaanden vortdoon',
+'uploadstash-nofiles' => 'Der bin gien verbörgen bestaanden.',
+'uploadstash-badtoken' => 't Uutvoeren van de haandeling is mislokt. Dit kump warschienlik deurdat joew bewarkingsreferensies verleupen bin. Probeer t opniej.',
+'uploadstash-errclear' => 't Vortdoon van de bestaanden is mislokt.',
+'uploadstash-refresh' => 'Lieste mit bestaanden biewarken',
+
# img_auth script messages
'img-auth-accessdenied' => 'Toegang eweigerd',
-'img-auth-nopathinfo' => 'PATH_INFO onbreek.
+'img-auth-nopathinfo' => 'PATH_INFO ontbrik.
Joew server is niet in-esteld um disse informasie deur te geven.
-Misschien gebruuk disse CGI, en dan wörden img_auth niet ondersteund.
-Zie http://www.mediawiki.org/wiki/Manual:Image_Authorization veur meer informasie',
+Misschien gebruukt disse CGI, en dan wörden img_auth niet ondersteund.
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Zie aofbeeldingsauthorisasie.]',
'img-auth-notindir' => 't Op-evreugen pad is niet de in-estelde bestaandinlaodmap',
'img-auth-badtitle' => 'Kon gien geldige paginanaam maken van "$1".',
'img-auth-nologinnWL' => 'Je bin niet an-emeld en "$1" steet niet op de witte lieste.',
@@ -1799,7 +1852,7 @@ De volgende lieste geef allinnig de eerste {{PLURAL:$1|verwiezing|$1 verwiezinge
De [[Special:WhatLinksHere/$2|hele lieste]] is oek beschikbaor.',
'nolinkstoimage' => 'Bestaand is niet in gebruuk.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Meer verwiezingen]] naor dit bestaand bekieken.',
-'redirectstofile' => "{{PLURAL:$1|'t Volgende bestaand verwies|De volgende $1 bestanen verwiezen}} deur naor dit bestaand:",
+'linkstoimage-redirect' => '$1 (bestaandsdeurverwiezing) $2',
'duplicatesoffile' => '{{PLURAL:$1|t Volgende bestaand is|De volgende $1 bestaanden bin}} liek alleens as dit bestaand ([[Special:FileDuplicateSearch/$2|meer informasie]]):',
'sharedupload' => "Dit is n edeeld bestaand op $1 en ku'j oek gebruken veur aandere projekten.",
'sharedupload-desc-there' => "Dit is n edeeld bestaand op $1 en ku'j oek gebruken veur aandere projekten. Bekiek de [$2 beschrieving van t bestaand] veur meer informasie.",
@@ -1886,18 +1939,19 @@ Vergeet niet de verwiezingen nao te kieken veurda\'j de mal vortdoon.',
'statistics-users-active-desc' => 'Gebrukers die de veurbieje {{PLURAL:$1|dag|$1 dagen}} n haandeling uutevoerd hebben',
'statistics-mostpopular' => "Meestbekeken pagina's",
-'disambiguations' => "Deurverwiespagina's",
+'disambiguations' => "Pagina's die verwiezen naor deurverwiespagina's",
'disambiguationspage' => 'Template:Dv',
'disambiguations-text' => "De onderstaonde pagina's verwiezen naor n '''deurverwiespagina'''. Disse verwiezingen mutten eigenliks rechtstreeks verwiezen naor t juuste onderwarp.
Pagina's wörden ezien as n deurverwiespagina, as de mal gebruukt wörden die vermeld steet op [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Dubbele deurverwiezingen',
-'doubleredirectstext' => "Op disse lieste staon alle pagina's die deurverwiezen naor aandere deurverwiezingen.
+'doubleredirects' => 'Dubbele deurverwiezingen',
+'doubleredirectstext' => "Op disse lieste staon alle pagina's die deurverwiezen naor aandere deurverwiezingen.
Op elke regel steet de eerste en de tweede deurverwiezing, daorachter steet de doelpagina van de tweede deurverwiezing.
Meestentieds is leste pagina de gewunste doelpagina, waor oek de eerste pagina heer zol mutten liejen.",
-'double-redirect-fixed-move' => '[[$1]] is herneumd en is noen n deurverwiezing naor [[$2]]',
-'double-redirect-fixer' => 'Deurverwiezingsverbeteraar',
+'double-redirect-fixed-move' => '[[$1]] is herneumd en is noen n deurverwiezing naor [[$2]]',
+'double-redirect-fixed-maintenance' => 'Verbeteren van dubbele deurverwiezing van [[$1]] naor [[$2]].',
+'double-redirect-fixer' => 'Deurverwiezingsverbeteraar',
'brokenredirects' => 'Ebreuken deurverwiezingen',
'brokenredirectstext' => 'Disse deurverwiezingen verwiezen naor n niet-bestaonde pagina.',
@@ -1977,6 +2031,7 @@ n Bestaand kan hier dus verkeerd op-eneumen ween.",
'pager-newer-n' => '{{PLURAL:$1|1 niejere|$1 niejere}}',
'pager-older-n' => '{{PLURAL:$1|1 ouwere|$1 ouwere}}',
'suppress' => 'Toezichte',
+'querypage-disabled' => 'Disse spesiale pagina is uuteschakeld um prestasieredens.',
# Book sources
'booksources' => 'Boekinformasie',
@@ -2027,7 +2082,7 @@ Zie oek [[Special:WantedCategories|gewunste kategorieën]].",
'sp-deletedcontributions-contribs' => 'biedragen',
# Special:LinkSearch
-'linksearch' => 'Uutgaonde verwiezingen',
+'linksearch' => 'Uutgaonde verwiezingen zeuken',
'linksearch-pat' => 'Zeukpetroon:',
'linksearch-ns' => 'Naamruumte:',
'linksearch-ok' => 'Zeuken',
@@ -2094,6 +2149,10 @@ De ontvanger kan dus drek beantwoorden.",
'noemailtext' => 'Disse gebruker hef gien geldig e-mailadres in-evoerd.',
'nowikiemailtitle' => 'Netpost is niet toe-estaon',
'nowikiemailtext' => 'Disse gebruker wil gien netpost toe-estuurd kriegen van aandere gebrukers.',
+'emailnotarget' => 'Niet-bestaonde of ongeldige ontvanger.',
+'emailtarget' => 'Voer de gebrukersnaam of ontvanger in',
+'emailusername' => 'Gebrukersnaam:',
+'emailusernamesubmit' => 'Opslaon',
'email-legend' => 'n Bericht sturen naor n aandere gebruker van {{SITENAME}}',
'emailfrom' => 'Van:',
'emailto' => 'An:',
@@ -2118,10 +2177,10 @@ De ontvanger kan dus drek beantwoorden.",
'watchlistanontext' => '$1 is verplicht um joew volglieste te bekieken of te wiezigen.',
'watchnologin' => 'Niet an-emeld',
'watchnologintext' => "Um je volglieste an te passen mö'j eers [[Special:UserLogin|an-emeld]] ween.",
-'addedwatch' => 'Disse pagina steet noen op joew volglieste',
+'addwatch' => 'Op mien volglieste zetten',
'addedwatchtext' => "De pagina \"[[:\$1]]\" steet noen op joew [[Special:Watchlist|volglieste]].
Toekomstige wiezigingen op disse pagina en de overlegpagina zullen hier vermeld wörden, oek zullen disse pagina's '''vet-edrokt''' ween in de lieste mit de [[Special:RecentChanges|leste wiezigingen]] zoda'j t makkeliker zien kunnen.",
-'removedwatch' => 'Van volglieste ofhaolen',
+'removewatch' => 'Van mien volglieste aofhaolen',
'removedwatchtext' => 'De pagina "[[:$1]]" is van [[Special:Watchlist|joew volglieste]] aofehaold.',
'watch' => 'Volgen',
'watchthispage' => 'Volg disse pagina',
@@ -2142,8 +2201,9 @@ Toekomstige wiezigingen op disse pagina en de overlegpagina zullen hier vermeld
'watchlist-options' => 'Opsies veur de volglieste',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Volg...',
-'unwatching' => 'Niet volgen...',
+'watching' => 'Volg...',
+'unwatching' => 'Niet volgen...',
+'watcherrortext' => 'Der is n fout op-etrejen tiejens t wiezigen van joew volgliesinstellingen veur "$1".',
'enotif_mailer' => '{{SITENAME}}-berichgevingssysteem',
'enotif_reset' => "Markeer alle pagina's as bezöcht.",
@@ -2163,24 +2223,27 @@ $NEWPAGE
Samenvatting van de wieziging: $PAGESUMMARY $PAGEMINOREDIT
-Kontakgevevens van de auteur:
-Netpos: $PAGEEDITOR_EMAIL
+Kontaktgevevens van de auteur:
+Netpost: $PAGEEDITOR_EMAIL
Wiki: $PAGEEDITOR_WIKI
-Je kriegen veerder gien berichen, behalve a-j disse pagina bezeuken.
-Op joew volglieste ku-j veur alle pagina\'s dee-j volgen de waorschuwingsinstellingen derof haolen.
+Je kriegen veerder gien berichten, behalven a\'j disse pagina bezeuken.
+Op joew volglieste ku\'j veur alle pagina\'s die\'j volgen de waorschuwingsinstellingen deraof haolen.
-Groeten van \'t {{SITENAME}}-waorschuwingssysteem.
+Groeten van t {{SITENAME}}-waorschuwingssysteem.
--
-Je kunnen de instellingen van joew volglieste wiezigen op:
-{{fullurl:Special:Watchlist/edit}}
+Je kunnen joew netpostinstellingen wiezigen op:
+{{canonicalurl:{{#special:Preferences}}}}
+
+Je kunnen de volgliestinstellingen wiezigen op:
+{{canonicalurl:{{#special:EditWatchlist}}}}
-Je kunnen de pagina van joew volglieste ofhaolen deur op de volgende verwiezing te klikken:
+Je kunnen de pagina van joew volglieste aofhaolen deur op de volgende verwiezing te klikken:
$UNWATCHURL
Opmarkingen en veerdere hulpe:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Vortdoon',
@@ -2196,7 +2259,7 @@ Opmarkingen en veerdere hulpe:
Bevestig hieronder dat dit inderdaod de bedoeling is, da'j de gevolgen begriepen en dat t akkedeert mit t [[{{MediaWiki:Policy-url}}|beleid]].",
'actioncomplete' => 'Uutevoerd',
'actionfailed' => 'De haandeling is mislokt.',
-'deletedtext' => '\'t Artikel "$1" is vort-edaon. Zie de "$2" veur een lieste van pagina\'s dee as les vort-edaon bin.',
+'deletedtext' => 't Artikel "$1" is vortedaon. Zie de "$2" veur n lieste van pagina\'s die as lest vortedaon bin.',
'deletedarticle' => '"[[$1]]" vortedaon',
'suppressedarticle' => 'hef "[[$1]]" verbörgen',
'dellogpage' => 'Vortdologboek',
@@ -2252,7 +2315,7 @@ Zie de [[Special:ProtectedPages|lieste mit pagina's die beveiligd bin]] veur t h
'protect_expiry_invalid' => 'Verlooptied is ongeldig.',
'protect_expiry_old' => 'De verlooptied is al veurbie.',
'protect-unchain-permissions' => 'Overige beveiligingsinstellingen beschikbaor maken',
-'protect-text' => "Hier ku-j 't beveiligingsnivo veur de pagina '''$1''' instellen.",
+'protect-text' => "Hier ku'j t beveiligingsnivo veur de pagina '''$1''' instellen.",
'protect-locked-blocked' => "Je kunnen beveiligingsnivo's niet wiezigen terwiel je eblokkeerd bin. Hier bin de instellingen zo as ze noen bin veur de pagina '''$1''':",
'protect-locked-dblock' => "Beveiligingsnivo's kunnen effen niet ewiezigd wörden umdat de databanke noen beveiligd is.
Hier staon de instellingen zo as ze noen bin veur de pagina '''$1''':",
@@ -2304,10 +2367,8 @@ Hier staon de instellingen zo as ze noen bin veur de pagina '''$1''':",
'viewdeletedpage' => "Bekiek vortedaone pagina's",
'undeletepagetext' => "Hieronder {{PLURAL:$1|steet de pagina die vortedaon is|staon de pagina's die vortedaon bin}} en vanuut t archief weerummeplaots {{PLURAL:$1|kan|kunnen}} wörden.",
'undelete-fieldset-title' => 'Versies weerummeplaotsen',
-'undeleteextrahelp' => "Um de pagina mit alle eerdere versies weerumme te plaosen lao-j alle hokjes leeg en klik op '''''Weerummeplaosen!'''''.
-Um een bepaolde versies weerumme te plaosen mu-j de versies dee-j weerummeplaosen willen anvinken en klik op '''''Weerummeplaosen!'''''.
-Um een bulte achter mekaarstaonde versies te kiezen mu-j de eerste in de reeks anvinken en vervolgens mit de schuufknoppe in-edrok de leste anvinken. Hierdeur wonnen oek alle tussenliggende versies mee-eneumen.
-A-j op '''''Herstel''''' klikken wonnen 't infermasieveld en alle hokjes leeg-emaak.",
+'undeleteextrahelp' => "Laot alle vakjes leeg en klik op '''''{{int:undeletebtn}}''''' um de hele pagina mit alle veurgeschiedenisse weerumme te plaotsen.
+Vink de versies die weerummeplaotsen willen an en klik op '''''{{int:undeletebtn}}''''' um bepaolde versies weerumme te zetten.",
'undeleterevisions' => '$1 {{PLURAL:$1|versie|versies}} earchiveerd',
'undeletehistory' => "A'j n pagina weerummeplaotsen, wörden alle versies as ouwe versies weerummeplaots.
As der al n nieje pagina mit de zelfde naam an-emaakt is, zullen disse versies as ouwe versies weerummeplaotst wörden, mer de op-esleugen versie zal niet ewiezigd wörden.",
@@ -2349,9 +2410,12 @@ $1',
'undelete-show-file-submit' => 'Ja',
# Namespace form on various pages
-'namespace' => 'Naamruumte:',
-'invert' => 'seleksie ummekeren',
-'blanknamespace' => '(Heufdnaamruumte)',
+'namespace' => 'Naamruumte:',
+'invert' => 'seleksie ummekeren',
+'tooltip-invert' => "Vink dit vakjen an um wiezigingen an pagina's binnen de ekeuzen naamruumte te verbargen (en de biebeheurende naamruumte as dat an-evinkt is)",
+'namespace_association' => 'Naamruumte die hieran ekoppeld is',
+'tooltip-namespace_association' => 'Vink dit vakjen an um oek de overlegnaamruumte, of in t ummekeren geval de naamruumte zelf, derbie te doon die bie disse naamruumte heurt.',
+'blanknamespace' => '(Heufdnaamruumte)',
# Contributions
'contributions' => 'Biedragen van disse gebruker',
@@ -2401,11 +2465,13 @@ De leste regel uut t blokkeerlogboek steet as referensie',
'whatlinkshere-filters' => 'Filters',
# Block/unblock
+'autoblockid' => 'Automatiese blokkering #$1',
+'block' => 'Gebruker blokkeren',
+'unblock' => 'Gebruker deblokkeren',
'blockip' => 'Gebruker blokkeren',
'blockip-title' => 'Gebruker blokkeren',
'blockip-legend' => 'n Gebruker of IP-adres blokkeren',
'blockiptext' => "Gebruuk dit formulier um n IP-adres of gebrukersnaam te blokkeren. t Is bedoeld um vandelisme te veurkoemen en mit in akkerderen mit t [[{{MediaWiki:Policy-url}}|beleid]]. Geef hieronder n reden op (bieveurbeeld op welke pagina's de vandelisme epleeg is)",
-'ipaddress' => 'IP-adres:',
'ipadressorusername' => 'IP-adres of gebrukersnaam',
'ipbexpiry' => 'Verlöp nao',
'ipbreason' => 'Reden:',
@@ -2418,7 +2484,7 @@ De leste regel uut t blokkeerlogboek steet as referensie',
** targerieje of naor gedrag
** misbruuk vanaof meerdere profielen
** ongewunste gebrukersnaam",
-'ipbanononly' => 'Blokkeer allinnig annenieme gebrukers',
+'ipb-hardblock' => 'Veurkoemen dat an-emelde gebrukers vanaof dit IP-adres kunnen bewarken',
'ipbcreateaccount' => 'Veurkom t anmaken van gebrukersprofielen',
'ipbemailban' => 'Veurkom dat bepaolde gebrukers berichten versturen',
'ipbenableautoblock' => 'De IP-adressen van disse gebruker vanzelf blokkeren',
@@ -2429,12 +2495,15 @@ De leste regel uut t blokkeerlogboek steet as referensie',
'ipbotherreason' => 'Aandere/extra reden:',
'ipbhidename' => 'Verbarg de gebrukersnaam in bewarkingen en liesten',
'ipbwatchuser' => 'Gebrukerspagina en overlegpagina op volglieste zetten',
-'ipballowusertalk' => 'Disse gebruker toestaon tiejens de blokkering zien eigen overlegpagina te bewarken',
+'ipb-disableusertalk' => 'Veurkoemen dat disse gebruker tiejens de blokkering de eigen overlegpagina kan bewarken',
'ipb-change-block' => 'De gebruker opniej blokkeren mit disse instellingen',
+'ipb-confirm' => 'Blokkering bevestigen',
'badipaddress' => 'Ongeldig IP-adres of onbestaonde gebrukersnaam',
'blockipsuccesssub' => 'Suksesvol eblokkeerd',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] is noen eblokkeerd.<br />
-Op de [[Special:IPBlockList|IP-blokkeerlieste]] steet een lieste mit alle blokkeringen.',
+Op de [[Special:BlockList|IP-blokkeerlieste]] steet n lieste mit alle blokkeringen.',
+'ipb-blockingself' => "Hiermee blokkeer je je eigen. Wi'j dat?",
+'ipb-confirmhideuser' => "Hiermee blokkeer je n verbörgen gebruker. Hierveur wörden gebrukersnamen in alle liesten en logboekregels verbörgen. Wi'j dat?",
'ipb-edit-dropdown' => 'Blokkeerredens bewarken',
'ipb-unblock-addr' => 'Deblokkeer $1',
'ipb-unblock' => 'Deblokkeer n gebruker of IP-adres',
@@ -2444,17 +2513,23 @@ Op de [[Special:IPBlockList|IP-blokkeerlieste]] steet een lieste mit alle blokke
'unblockiptext' => 'Gebruuk t onderstaonde formulier um weerumme schrieftoegang te geven an n eblokkeerden gebruker of IP-adres.',
'ipusubmit' => 'Blokkering deraof haolen',
'unblocked' => '[[User:$1|$1]] is edeblokeerd',
+'unblocked-range' => '$1 is edeblokkeerd',
'unblocked-id' => 'Blokkering $1 is op-eheven',
+'blocklist' => 'Gebrukers die eblokkeerd bin',
'ipblocklist' => 'Gebrukers die eblokkeerd bin',
'ipblocklist-legend' => 'n Eblokkeerden gebruker zeuken',
-'ipblocklist-username' => 'Gebrukersnaam of IP-adres:',
-'ipblocklist-sh-userblocks' => 'gebrukersblokkeringen $1',
-'ipblocklist-sh-tempblocks' => 'tiedelijke blokkeringen $1',
-'ipblocklist-sh-addressblocks' => 'enkele IP-blokkeringen $1',
+'blocklist-userblocks' => 'Verbarg gebrukers die eblokkeerd bin',
+'blocklist-tempblocks' => 'Tiedelike blokkeringen verbargen',
+'blocklist-addressblocks' => 'Blokkering van één IP-adres verbargen',
+'blocklist-timestamp' => 'Tiedstip',
+'blocklist-target' => 'Doel',
+'blocklist-expiry' => 'Vervuilt',
+'blocklist-by' => 'Eblokkeerd deur',
+'blocklist-params' => 'Blokkeringsparameters',
+'blocklist-reason' => 'Reden',
'ipblocklist-submit' => 'Zeuk',
'ipblocklist-localblock' => 'Lokale blokkering',
'ipblocklist-otherblocks' => 'Aandere {{PLURAL:$1|blokkering|blokkeringen}}',
-'blocklistline' => 'Op $1 (vervuilt op $4) blokkeren $2: $3',
'infiniteblock' => 'onbeparkt',
'expiringblock' => 'löp aof op $1 um $2',
'anononlyblock' => 'allinnig anoniemen',
@@ -2476,7 +2551,7 @@ t Blokkeerlogboek steet hieronder as referensie:',
t Logboek mit onderdrokten versies steet hieronder as referensie:',
'blocklogentry' => 'blokkeren "[[$1]]" veur $2 $3',
'reblock-logentry' => 'hef de instellingen veur de blokkering van [[$1]] ewiezigd t Löp noen of over $2 $3',
-'blocklogtext' => "Hier zie-j een lieste van de leste blokkeringen en deblokkeringen. Autematische blokkeringen en deblokkeringen koemen neet in 't logboek te staon. Zie de [[Special:IPBlockList|IP-blokkeerlieste]] veur de lieste van adressen dee noen eblokkeerd bin.",
+'blocklogtext' => "Hier zie'j n lieste van de leste blokkeringen en deblokkeringen. Automatiese blokkeringen en deblokkeringen koemen niet in t logboek te staon. Zie de [[Special:BlockList|IP-blokkeerlieste]] veur de lieste van adressen die noen eblokkeerd bin.",
'unblocklogentry' => 'blokkering van $1 is op-eheven',
'block-log-flags-anononly' => 'allinnig anoniemen',
'block-log-flags-nocreate' => 'anmaken van gebrukersprofielen uuteschakeld',
@@ -2490,10 +2565,10 @@ t Logboek mit onderdrokten versies steet hieronder as referensie:',
'ipb_expiry_temp' => 'Blokkeringen veur verbörgen gebrukers mutten permanent ween.',
'ipb_hide_invalid' => 'Kan disse gebruker niet verbargen; warschienlik hef e al te veule bewarkingen emaakt.',
'ipb_already_blocked' => '"$1" is al eblokkeerd',
-'ipb-needreblock' => '== Disse gebruker is al eblokkeerd ==
-$1 is al eblokkeerd.
-Wi-j de instellingen wiezigen?',
+'ipb-needreblock' => "$1 is al eblokkeerd.
+Wi'j de instellingen wiezigen?",
'ipb-otherblocks-header' => 'Aandere {{PLURAL:$1|blokkering|blokkeringen}}',
+'unblock-hideuser' => 'Je kunnen disse gebruker niet deblokkeeren, umdat de gebrukersnaam verbörgen is.',
'ipb_cant_unblock' => 'Foutmelding: blokkerings-ID $1 niet evunnen, t is misschien al edeblokkeerd.',
'ipb_blocked_as_range' => 'Fout: t IP-adres $1 is niet drek eblokkeerd en de blokkering kan niet op-eheven wörden.
De blokkering is onderdeel van de reeks $2, waorvan de blokkering wel op-eheven kan wörden.',
@@ -2531,6 +2606,7 @@ Vergeet niet de [[Special:UnlockDB|databanke vrie te geven]] a'j klaor bin mit t
'unlockdbsuccesstext' => 'De databanke is weer vrie-egeven.',
'lockfilenotwritable' => 'Gien schriefrechten op t beveiligingsbestaand van de databanke. Um de databanke te blokkeren of de blokkering op te heffen, mut der eschreven kunnen wörden deur de webserver.',
'databasenotlocked' => 'De databanke is niet eblokkeerd.',
+'lockedbyandtime' => '(deur $1 um $3 op $2)',
# Move page
'move-page' => 'Herneum "$1"',
@@ -2649,7 +2725,7 @@ A'j dat leste doon willen dan ku'j oek n verwiezing gebruken, bieveurbeeld [[{{#
'allmessagesdefault' => 'Standardtekste',
'allmessagescurrent' => 'De leste versie',
'allmessagestext' => "Hieronder steet n lieste mit alle systeemteksten in de MediaWiki-naamruumte.
-Kiek oek effen bie [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisasie] en [http://translatewiki.net translatewiki.net] a'j biedragen willen an de algemene vertaling veur MediaWiki.",
+Kiek oek effen bie [//www.mediawiki.org/wiki/Localisation MediaWiki-lokalisasie] en [//translatewiki.net translatewiki.net] a'j biedragen willen an de algemene vertaling veur MediaWiki.",
'allmessagesnotsupportedDB' => "Disse pagina kan niet gebruukt wörden umdat '''\$wgUseDatabaseMessages''' uuteschakeld is.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filtreer op wiezigingen:',
@@ -2791,9 +2867,7 @@ Iej könt in de bewearkingssamenvatting n reden opgeven.',
'tooltip-summary' => 'Voer ne korte samenvatting in',
# Metadata
-'nodublincore' => 'Dublin Core RDF-metadata is uut-eschakeld op disse server.',
-'nocreativecommons' => 'Creative Commons RDF-metadata is uut-eschakeld op disse server.',
-'notacceptable' => 'De wikiserver kan de gegevens niet leveren in n vorm die joew kliënt kan lezen.',
+'notacceptable' => 'De wikiserver kan de gegevens niet leveren in n vorm die joew kliënt kan lezen.',
# Attribution
'anonymous' => 'Anonieme {{PLURAL:$1|gebruker|gebrukers}} van {{SITENAME}}',
@@ -2817,12 +2891,17 @@ Meestentieds kump dit deur n uutgaonde verwiezing die op de zwarte lieste steet.
'spam_blanking' => 'Alle wiezigingen mit n verwiezing naor $1 wörden vortehaold',
# Info page
-'infosubtitle' => 'Infermasie veur disse pagina',
-'numedits' => 'Antal bewarkingen (artikel): $1',
-'numtalkedits' => 'Antal bewarkingen (overlegpagina): $1',
-'numwatchers' => 'Antal volgers: $1',
-'numauthors' => 'Antal verschillende auteurs (artikel): $1',
-'numtalkauthors' => 'Antal verschillende auteurs (overlegpagina): $1',
+'pageinfo-title' => 'Informasie over "$1"',
+'pageinfo-header-edits' => 'Bewarkingen',
+'pageinfo-header-watchlist' => 'Volglieste',
+'pageinfo-header-views' => 'Bekeken',
+'pageinfo-subjectpage' => 'Pagina:',
+'pageinfo-talkpage' => 'Overlegpagina',
+'pageinfo-watchers' => 'Antal volgers',
+'pageinfo-edits' => 'Antal bewarkingen',
+'pageinfo-authors' => 'Antal verschillende auteurs',
+'pageinfo-views' => 'Antal keer bekeken',
+'pageinfo-viewsperedit' => 'Antal keer bekeken per bewarking',
# Skin names
'skinname-standard' => 'Klassiek',
@@ -2834,25 +2913,6 @@ Meestentieds kump dit deur n uutgaonde verwiezing die op de zwarte lieste steet.
'skinname-simple' => 'Eenvoudig',
'skinname-modern' => 'Niejmoeds',
-# Math options
-'mw_math_png' => 'Altied as PNG weergeven',
-'mw_math_simple' => 'HTML veur eenvoudige formules, aanders PNG',
-'mw_math_html' => 'HTML as t meugelik is, aanders PNG',
-'mw_math_source' => 'Laot TeX-bronkode staon (veur tekstblaojeraars)',
-'mw_math_modern' => 'Anbeveulen methode veur niejere webkiekers',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'Wiskundige formule niet begriepelik',
-'math_unknown_error' => 'Onbekende fout in formule',
-'math_unknown_function' => 'Onbekende funksie in formule',
-'math_lexing_error' => 'Lexikografiese fout in formule',
-'math_syntax_error' => 'Syntaktiese fout in formule',
-'math_image_error' => 'De PNG-umzetting is mislokt. Kiek even nao of LaTeX en dvipng (of dvips + gs + convert) wel goed eïnstalleerd bin.',
-'math_bad_tmpdir' => 'De map veur tiedelike bestaanden veur wiskundige formules besteet niet of is kan niet an-emaakt wörden.',
-'math_bad_output' => 'De map veur wiskundebestaanden besteet niet of is niet an te maken.',
-'math_notexvc' => 'Kan t programma texvc niet vienen; configureer volgens de beschrieving in math/README.',
-
# Patrolling
'markaspatrolleddiff' => 'Markeer as ekontroleerd',
'markaspatrolledtext' => 'Disse pagina is emarkeerd as ekontroleerd',
@@ -2888,22 +2948,25 @@ $1',
'nextdiff' => 'volgende wieziging →',
# Media information
-'mediawarning' => "'''Waorschuwing:''' in dit bestaand zit misschien kodering die slicht is veur t systeem.",
-'imagemaxsize' => "Maximale aofmetingen van aofbeeldingen:<br />
+'mediawarning' => "'''Waorschuwing:''' in dit bestaand zit misschien kodering die slicht is veur t systeem.",
+'imagemaxsize' => "Maximale aofmetingen van aofbeeldingen:<br />
''(veur op de beschrievingspagina)''",
-'thumbsize' => 'Grootte van de miniatuuraofbeelding:',
-'widthheightpage' => "$1×$2, $3 {{PLURAL:$3|pagina|pagina's}}",
-'file-info' => 'Bestaandsgrootte: $1, MIME-type: $2',
-'file-info-size' => '$1 × $2 beeldpunten, bestaandsgrootte: $3, MIME-type: $4',
-'file-nohires' => '<small>Gien hogere resolusie beschikbaor.</small>',
-'svg-long-desc' => 'SVG-bestaand, uutgangsgrootte $1 × $2 beeldpunten, bestaandsgrootte: $3',
-'show-big-image' => 'Volle resolusie',
-'show-big-image-thumb' => '<small>Grootte van disse weergave: $1 × $2 beeldpunten</small>',
-'file-info-gif-looped' => 'herhaolend',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|beeld|beelden}}',
-'file-info-png-looped' => 'herhaolend',
-'file-info-png-repeat' => '$1 {{PLURAL:$1|keer|keer}} aofespeuld',
-'file-info-png-frames' => '$1 {{PLURAL:$1|beeld|beelden}}',
+'thumbsize' => 'Grootte van de miniatuuraofbeelding:',
+'widthheightpage' => "$1×$2, $3 {{PLURAL:$3|pagina|pagina's}}",
+'file-info' => 'Bestaandsgrootte: $1, MIME-type: $2',
+'file-info-size' => '$1 × $2 beeldpunten, bestaandsgrootte: $3, MIME-type: $4',
+'file-info-size-pages' => "$1 × $2 beeldpunten, bestaandsgrootte: $3, MIME-type: $4, $5 {{PLURAL:$5|pagina|pagina's}}",
+'file-nohires' => '<small>Gien hogere resolusie beschikbaor.</small>',
+'svg-long-desc' => 'SVG-bestaand, uutgangsgrootte $1 × $2 beeldpunten, bestaandsgrootte: $3',
+'show-big-image' => 'Volle resolusie',
+'show-big-image-preview' => '<small>Grootte van disse weergave: $1.</small>',
+'show-big-image-other' => '<small>Aandere resolusies: $1.</small>',
+'show-big-image-size' => '$1 × $2 beeldpunten',
+'file-info-gif-looped' => 'herhaolend',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|beeld|beelden}}',
+'file-info-png-looped' => 'herhaolend',
+'file-info-png-repeat' => '$1 {{PLURAL:$1|keer|keer}} aofespeuld',
+'file-info-png-frames' => '$1 {{PLURAL:$1|beeld|beelden}}',
# Special:NewFiles
'newimages' => 'Nieje bestaanden',
@@ -2929,14 +2992,21 @@ Alle volgende verwiezingen die op de zelfde regel staon, wörden behaandeld as u
'metadata-help' => 'In dit bestaand zit metadata mit EXIF-informasie, die deur n fotokamera, inleesapparaot of fotobewarkingsprogramma op-estuurd kan ween.',
'metadata-expand' => 'Bekiek uutebreiden gegevens',
'metadata-collapse' => 'Verbarg uutebreiden gegevens',
-'metadata-fields' => 'EXIF-gegevens dee zichbaor bin as de tebel in-eklap is. De overige gegevens bin zichbaor as de tebel uut-eklap is, nao \'t klikken op "Bekiek uut-ebreien gegevens".
+'metadata-fields' => 'De aofbeeldingsmetadatavelden in dit bericht staon oek op n aofbeeldingspagina as de metadatatabel in-eklapt is.
+Aandere velden wörden verbörgen.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Wiedte',
@@ -2951,13 +3021,11 @@ Alle volgende verwiezingen die op de zelfde regel staon, wörden behaandeld as u
'exif-ycbcrpositioning' => 'Y- en C-posisionering',
'exif-xresolution' => 'Horizontale resolusie',
'exif-yresolution' => 'Verticale resolusie',
-'exif-resolutionunit' => 'Eenheid van de oplossing X en Y',
'exif-stripoffsets' => 'Lokasie aofbeeldingsgegevens',
'exif-rowsperstrip' => 'Riejen per strip',
'exif-stripbytecounts' => 'Bytes per ekomprimeerden strip',
'exif-jpeginterchangeformat' => 'Aofstaand tot JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytes van JPEG-gegevens',
-'exif-transferfunction' => 'Overdrachsfunctie',
'exif-whitepoint' => 'Witpuntchromaticiteit',
'exif-primarychromaticities' => 'Chromaciteit van primaire kleuren',
'exif-ycbcrcoefficients' => 'Transformasiematrixkoëfficiënten veur de kleurruumte',
@@ -2976,7 +3044,6 @@ Alle volgende verwiezingen die op de zelfde regel staon, wörden behaandeld as u
'exif-compressedbitsperpixel' => 'Beeldkompressiemethode',
'exif-pixelydimension' => 'Aofbeeldingsbreedte',
'exif-pixelxdimension' => 'Aofbeeldingsheugte',
-'exif-makernote' => 'Opmarkingen van de fabrikaant',
'exif-usercomment' => 'Opmarkingen',
'exif-relatedsoundfile' => 'Biebeheurend geluudsbestaand',
'exif-datetimeoriginal' => 'Tiedstip van datagenerasie',
@@ -2990,7 +3057,6 @@ Alle volgende verwiezingen die op de zelfde regel staon, wörden behaandeld as u
'exif-exposureprogram' => 'Belochtingsprogramma',
'exif-spectralsensitivity' => 'Spektrale geveuligheid',
'exif-isospeedratings' => 'ISO-weerde.',
-'exif-oecf' => 'Opto-elektronische conversiefactor',
'exif-shutterspeedvalue' => 'Slutersnelheid in APEX',
'exif-aperturevalue' => 'Diafragma in APEX',
'exif-brightnessvalue' => 'Helderheid in APEX',
@@ -3003,7 +3069,6 @@ Alle volgende verwiezingen die op de zelfde regel staon, wörden behaandeld as u
'exif-focallength' => 'Braandpuntofstand',
'exif-subjectarea' => 'Objektruumte',
'exif-flashenergy' => 'Flitserstarkte',
-'exif-spatialfrequencyresponse' => 'Ruumtelijke frequentiereactie',
'exif-focalplanexresolution' => 'X-resolusie van CDD',
'exif-focalplaneyresolution' => 'Y-resolusie van CCD',
'exif-focalplaneresolutionunit' => 'Eenheid CCD-resolusie',
@@ -3012,7 +3077,6 @@ Alle volgende verwiezingen die op de zelfde regel staon, wörden behaandeld as u
'exif-sensingmethod' => 'Meetmethode',
'exif-filesource' => 'Bestaandsnaam op de hardeschieve',
'exif-scenetype' => 'Scènetype',
-'exif-cfapattern' => 'CFA-petroon',
'exif-customrendered' => 'An-epassen beeldbewarking',
'exif-exposuremode' => 'Belochtingsinstelling',
'exif-whitebalance' => 'Witbalans',
@@ -3057,10 +3121,79 @@ Alle volgende verwiezingen die op de zelfde regel staon, wörden behaandeld as u
'exif-gpsareainformation' => 'Naam van t GPS-gebied',
'exif-gpsdatestamp' => 'GPS-daotum',
'exif-gpsdifferential' => 'Differensiële GPS-korreksie',
+'exif-jpegfilecomment' => 'Opmarking bie JPEG-bestaand',
+'exif-keywords' => 'Trefwoorden',
+'exif-worldregioncreated' => 'Regio in de wereld waor de aofbeelding emaakt is',
+'exif-countrycreated' => 'Laand waor de aofbeelding emaakt is',
+'exif-countrycodecreated' => 'Kode veur t laand waor de aofbeelding emaakt is',
+'exif-provinceorstatecreated' => 'Provinsie of staot waor de aofbeelding emaakt is',
+'exif-citycreated' => 'Plaotse waor de aofbeelding emaakt is',
+'exif-sublocationcreated' => 'Wiek van de plaotse waor de aofbeelding emaakt is',
+'exif-worldregiondest' => 'Weeregeven wereldregio',
+'exif-countrydest' => 'Weeregeven laand',
+'exif-countrycodedest' => 'Kode veur t weeregeven laand',
+'exif-provinceorstatedest' => 'Weeregeven provinsie of staot',
+'exif-citydest' => 'Weeregeven plaotse',
+'exif-sublocationdest' => 'Weeregeven wiek in plaotse',
'exif-objectname' => 'Korte naam',
+'exif-specialinstructions' => 'Spesiale instruksies',
+'exif-headline' => 'Kopjen',
+'exif-credit' => 'Krediet/leverancier',
+'exif-source' => 'Bron',
+'exif-editstatus' => 'Bewarkingsstaotus van de aofbeelding',
+'exif-urgency' => 'Urgensie',
+'exif-fixtureidentifier' => 'Groepsnaam',
+'exif-locationdest' => 'Weeregeven lokasie',
+'exif-locationdestcode' => 'Kode veur de weeregeven lokasie',
+'exif-objectcycle' => 'Tied van de dag waor de media veur bedoeld is',
+'exif-contact' => 'Kontaktgegevens',
+'exif-writer' => 'Schriever',
+'exif-languagecode' => 'Taal',
+'exif-iimversion' => 'IIM-versie',
+'exif-iimcategory' => 'Kategorie',
+'exif-iimsupplementalcategory' => 'Anvullende kategorieën',
+'exif-datetimeexpires' => 'Niet te gebruken nao',
+'exif-datetimereleased' => 'Uutebröcht op',
+'exif-originaltransmissionref' => 'Oorspronkelike taaklokasiekode',
+'exif-identifier' => 'ID',
+'exif-lens' => 'Lenze die gebruukt wörden',
+'exif-serialnumber' => 'Serienummer van de camera',
+'exif-cameraownername' => 'Eigenaar van camera',
+'exif-label' => 'Etiket',
+'exif-datetimemetadata' => 'Daotum waorop de metadata veur t lest bie-ewörken bin',
+'exif-nickname' => 'Informele naam van de aofbeelding',
+'exif-rating' => 'Werdering (op n schaole van 5)',
+'exif-rightscertificate' => 'Rechtenbeheercertificaot',
+'exif-copyrighted' => 'Auteursrechtstaotus',
+'exif-copyrightowner' => 'Auteursrechthouwer',
+'exif-usageterms' => 'Gebruuksveurweerden',
+'exif-webstatement' => 'Internetauteursrechverklaoring',
+'exif-originaldocumentid' => 'Uniek ID van t originele dokument',
+'exif-licenseurl' => 'Webadres veur auteursrechlisensie',
+'exif-morepermissionsurl' => 'Alternatieve lisensiegegevens',
+'exif-attributionurl' => 'Gebruuk de volgende verwiezing bie hergebruuk van dit wark',
+'exif-preferredattributionname' => 'Gebruuk de volgende makersvermelding bie hergebruuk van dit wark',
+'exif-pngfilecomment' => 'Opmarking bie PNG-bestaand',
+'exif-disclaimer' => 'Veurbehoud',
+'exif-contentwarning' => 'Waorschuwing over inhoud',
+'exif-giffilecomment' => 'Opmarking bie GIF-bestaand',
+'exif-intellectualgenre' => 'Soort onderwarp',
+'exif-subjectnewscode' => 'Onderwarpcode',
+'exif-scenecode' => 'IPTC-scènecode',
+'exif-event' => 'Aofebeelden gebeurtenisse',
+'exif-organisationinimage' => 'Aofebeelden organisasie',
+'exif-personinimage' => 'Aofebeeld persoon',
+'exif-originalimageheight' => 'Heugte van de aofbeelding veur biesniejen',
+'exif-originalimagewidth' => 'Breedte van de aofbeelding veur biesniejen',
# EXIF attributes
'exif-compression-1' => 'Niet ekomprimeerd',
+'exif-compression-2' => 'CCITT-groep 3 1-dimensionale an-epasten "Huffman run length"-kodering',
+'exif-compression-3' => 'CCITT-groep 3 faxcodering',
+'exif-compression-4' => 'CCITT-groep 4 faxcodering',
+
+'exif-copyrighted-true' => 'Auteursrechtelik bescharmp',
+'exif-copyrighted-false' => 'Publiek domein',
'exif-unknowndate' => 'Onbekende daotum',
@@ -3076,6 +3209,8 @@ Alle volgende verwiezingen die op de zelfde regel staon, wörden behaandeld as u
'exif-planarconfiguration-1' => 'Grof gegevensformaot',
'exif-planarconfiguration-2' => 'planar gegevensformaot',
+'exif-colorspace-65535' => 'Niet-ekalibreerd',
+
'exif-componentsconfiguration-0' => 'besteet niet',
'exif-exposureprogram-0' => 'Niet umschreven',
@@ -3189,6 +3324,10 @@ Alle volgende verwiezingen die op de zelfde regel staon, wörden behaandeld as u
'exif-gpslongitude-e' => 'Oosterlengte',
'exif-gpslongitude-w' => 'Westerlengte',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|meter}} boven de zeespegel',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|meter}} onder de zeespegel',
+
'exif-gpsstatus-a' => 'Bezig mit meten',
'exif-gpsstatus-v' => 'Meetinteroperebiliteit',
@@ -3200,21 +3339,73 @@ Alle volgende verwiezingen die op de zelfde regel staon, wörden behaandeld as u
'exif-gpsspeed-m' => 'Miel per ure',
'exif-gpsspeed-n' => 'Kneupen',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometer',
+'exif-gpsdestdistance-m' => 'Miel',
+'exif-gpsdestdistance-n' => 'Zeemielen',
+
+'exif-gpsdop-excellent' => 'Uutstekend ($1)',
+'exif-gpsdop-good' => 'Goed ($1)',
+'exif-gpsdop-moderate' => 'Gemiddeld ($1)',
+'exif-gpsdop-fair' => 'Redelik ($1)',
+'exif-gpsdop-poor' => 'Slicht ($1)',
+
+'exif-objectcycle-a' => 'Allinnig smarnens',
+'exif-objectcycle-p' => 'Allinnig savends',
+'exif-objectcycle-b' => "'s Mannen én 's avens",
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Waore richting',
'exif-gpsdirection-m' => 'Magnetiese richting',
+'exif-ycbcrpositioning-1' => 'In t midden',
+'exif-ycbcrpositioning-2' => 'E-kositueerd',
+
+'exif-dc-contributor' => 'Luui die bie-edreugen hebben',
+'exif-dc-coverage' => 'Ruumtelike of temporele reikwiedte van media',
+'exif-dc-date' => 'Daotum(s)',
+'exif-dc-publisher' => 'Uutgever',
+'exif-dc-relation' => 'Verwaante media',
+'exif-dc-rights' => 'Rechten',
+'exif-dc-source' => 'Bronmedia',
+'exif-dc-type' => 'Soort media',
+
+'exif-rating-rejected' => 'Aofewezen',
+
+'exif-isospeedratings-overflow' => 'Groter as 65535',
+
+'exif-iimcategory-ace' => 'Kunst, kultuur en vermaak',
+'exif-iimcategory-clj' => 'Misdaod en recht',
+'exif-iimcategory-dis' => 'Rampen en ongevallen',
+'exif-iimcategory-fin' => 'Ekonomie en bedriefsleven',
+'exif-iimcategory-edu' => 'Onderwies',
+'exif-iimcategory-evn' => 'Milieu',
+'exif-iimcategory-hth' => 'Gezondheid',
+'exif-iimcategory-hum' => 'Meenselike interesse',
+'exif-iimcategory-lab' => 'Arbeid',
+'exif-iimcategory-lif' => 'Levensstiel en vrieje tied',
+'exif-iimcategory-pol' => 'Politiek',
+'exif-iimcategory-rel' => 'Godsdienst en overtuging',
+'exif-iimcategory-sci' => 'Wetenschap en technologie',
+'exif-iimcategory-soi' => 'Sosiale kwesties',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Oorlog, armoe en onrust',
+'exif-iimcategory-wea' => 'Weer',
+
+'exif-urgency-normal' => 'Normaal ($1)',
+'exif-urgency-low' => 'Leeg ($1)',
+'exif-urgency-high' => 'Hoog ($1)',
+'exif-urgency-other' => 'Deur gebruker in-estelde prioriteit ($1)',
+
# External editor support
'edit-externally' => 'Wiezig dit bestaand mit n extern programma',
-'edit-externally-help' => '(Zie de [http://www.mediawiki.org/wiki/Manual:External_editors installasie-instruksies] veur meer informasie)',
+'edit-externally-help' => '(Zie de [//www.mediawiki.org/wiki/Manual:External_editors installasie-instruksies] veur meer informasie)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'alles',
-'imagelistall' => 'alles',
-'watchlistall2' => 'alles',
-'namespacesall' => 'alles',
-'monthsall' => 'alles',
-'limitall' => 'alles',
+'watchlistall2' => 'alles',
+'namespacesall' => 'alles',
+'monthsall' => 'alles',
+'limitall' => 'alles',
# E-mail address confirmation
'confirmemail' => 'Bevestig netpostadres',
@@ -3287,15 +3478,22 @@ $1',
'trackbackdeleteok' => 'De trackback is vortedaon.',
# Delete conflict
-'deletedwhileediting' => "'''Waorschuwing''': disse pagina is vortedaon terwiel jie t an t bewarken waren!",
-'confirmrecreate' => "Gebruker [[User:$1|$1]] ([[User talk:$1|Overleg]]) hef disse pagina vortedaon naoda'j begunnen bin mit joew wieziging, mit opgave van de volgende reden: ''$2''. Bevestig da'j t artikel herschrieven willen.",
-'recreate' => 'Herschrieven',
+'deletedwhileediting' => "'''Waorschuwing''': disse pagina is vortedaon terwiel jie t an t bewarken waren!",
+'confirmrecreate' => "Gebruker [[User:$1|$1]] ([[User talk:$1|Overleg]]) hef disse pagina vortedaon naoda'j begunnen bin mit joew wieziging, mit opgave van de volgende reden: ''$2''. Bevestig da'j t artikel herschrieven willen.",
+'confirmrecreate-noreason' => "Gebruker [[User:$1|$1]] ([[User talk:$1|overleg]]) hef disse pagina vortedaon naoda'j begunnen bin mit joew wieziging. Bevestig da'j t artikel herschrieven willen.",
+'recreate' => 'Herschrieven',
# action=purge
'confirm_purge_button' => 'Bevestig',
'confirm-purge-top' => "Klik op 'bevestig' um t tussengeheugen van disse pagina te legen.",
'confirm-purge-bottom' => "t leegmaken van t tussengeheugen zörgt derveur da'j de leste versie van n pagina zien.",
+# action=watch/unwatch
+'confirm-watch-button' => 'Oké',
+'confirm-watch-top' => 'Disse pagina op joew volglieste zetten?',
+'confirm-unwatch-button' => 'Oké',
+'confirm-unwatch-top' => 'Disse pagina van joew volglieste aofhaolen?',
+
# Multipage image navigation
'imgmultipageprev' => '&larr; veurige',
'imgmultipagenext' => 'volgende &rarr;',
@@ -3337,17 +3535,17 @@ Kiek de pagina op de normale maniere nao.',
'watchlistedit-noitems' => 'Joew volglieste is leeg.',
'watchlistedit-normal-title' => 'Volglieste bewarken',
'watchlistedit-normal-legend' => "Disse pagina's van mien volglieste aofhaolen.",
-'watchlistedit-normal-explain' => 'Pagina\'s dee op joew volglieste staon, zie-j hieronder.
-Um een pagina van joew volglieste of te haolen mu-j \'t vakjen dernaos anklikken, en klik dan op "{{int:Watchlistedit-normal-submit}}".
-Je kunnen oek [[Special:Watchlist/raw|de roewe lieste bewarken]].',
+'watchlistedit-normal-explain' => "Pagina's die op joew volglieste staon, zie'j hieronder.
+Um n pagina van joew volglieste aof te haolen mö'j t vakjen dernaost anklikken, en klik dan op \"{{int:Watchlistedit-normal-submit}}\".
+Je kunnen oek [[Special:EditWatchlist/raw|de roewe lieste bewarken]].",
'watchlistedit-normal-submit' => "Pagina's deraof haolen",
'watchlistedit-normal-done' => "Der {{PLURAL:$1|is 1 pagina|bin $1 pagina's}} vortedaon uut joew volglieste:",
'watchlistedit-raw-title' => 'Roewe volglieste bewarken',
'watchlistedit-raw-legend' => 'Roewe volglieste bewarken',
-'watchlistedit-raw-explain' => "Pagina's dee op joew volglieste staon, zie-j hieronder. Je kunnen de lieste bewarken deur pagina's deruut vort te haolen en derbie te te zetten.
+'watchlistedit-raw-explain' => "Pagina's die op joew volglieste staon, zie'j hieronder. Je kunnen de lieste bewarken deur pagina's deruut vort te haolen en derbie te te zetten.
Eén pagina per regel.
-A-j klaor bin, klik dan op \"{{int:Watchlistedit-raw-submit}}\".
-Je kunnen oek [[Special:Watchlist/edit|'t standardbewarkingsscharm gebruken]].",
+A'j klaor bin, klik dan op \"{{int:Watchlistedit-raw-submit}}\".
+Je kunnen oek [[Special:EditWatchlist|t standardbewarkingsscharm gebruken]].",
'watchlistedit-raw-titles' => 'Titels:',
'watchlistedit-raw-submit' => 'Volglieste biewarken',
'watchlistedit-raw-done' => 'Joew volglieste is bie-ewörken.',
@@ -3364,33 +3562,34 @@ Je kunnen oek [[Special:Watchlist/edit|'t standardbewarkingsscharm gebruken]].",
'duplicate-defaultsort' => 'Waorschuwing: de standardsortering "$2" krig veurrang veur de sortering "$1".',
# Special:Version
-'version' => 'Versie',
-'version-extensions' => 'Uutbreidingen die installeerd bin',
-'version-specialpages' => "Spesiale pagina's",
-'version-parserhooks' => 'Parserhoeken',
-'version-variables' => 'Variabels',
-'version-skins' => 'Vormgevingen',
-'version-other' => 'Overige',
-'version-mediahandlers' => 'Mediaverwarkers',
-'version-hooks' => 'Hoeken',
-'version-extension-functions' => 'Uutbreidingsfunksies',
-'version-parser-extensiontags' => 'Parseruutbreidingsplaotjes',
-'version-parser-function-hooks' => 'Parserfunksiehoeken',
-'version-skin-extension-functions' => 'Vormgevingsuutbreidingsfuncties',
-'version-hook-name' => 'Hooknaam',
-'version-hook-subscribedby' => 'In-eschreven deur',
-'version-version' => '(Versie $1)',
-'version-license' => 'Lisensie',
-'version-poweredby-credits' => "Disse wiki wörden an-estuurd deur '''[http://www.mediawiki.org/ MediaWiki]''', auteursrecht © 2001-$1 $2.",
-'version-poweredby-others' => 'aanderen',
-'version-license-info' => 'MediaWiki is vrieje programmatuur; je kunnen MediaWiki verspreien en/of anpassen onder de veurweerden van de GNU General Public License zo as epubliceerd deur de Free Software Foundation; of versie 2 van de Lisensie, of - naor eigen wuns - n laotere versie.
+'version' => 'Versie',
+'version-extensions' => 'Uutbreidingen die installeerd bin',
+'version-specialpages' => "Spesiale pagina's",
+'version-parserhooks' => 'Parserhoeken',
+'version-variables' => 'Variabels',
+'version-antispam' => 'Veurkoemen van ongewunste bewarkingen',
+'version-skins' => 'Vormgevingen',
+'version-api' => 'Api',
+'version-other' => 'Overige',
+'version-mediahandlers' => 'Mediaverwarkers',
+'version-hooks' => 'Hoeken',
+'version-extension-functions' => 'Uutbreidingsfunksies',
+'version-parser-extensiontags' => 'Parseruutbreidingsplaotjes',
+'version-parser-function-hooks' => 'Parserfunksiehoeken',
+'version-hook-name' => 'Hooknaam',
+'version-hook-subscribedby' => 'In-eschreven deur',
+'version-version' => '(Versie $1)',
+'version-license' => 'Lisensie',
+'version-poweredby-credits' => "Disse wiki wörden an-estuurd deur '''[//www.mediawiki.org/ MediaWiki]''', auteursrecht © 2001-$1 $2.",
+'version-poweredby-others' => 'aanderen',
+'version-license-info' => 'MediaWiki is vrieje programmatuur; je kunnen MediaWiki verspreien en/of anpassen onder de veurweerden van de GNU General Public License zo as epubliceerd deur de Free Software Foundation; of versie 2 van de Lisensie, of - naor eigen wuns - n laotere versie.
MediaWiki wörden verspreid in de hoop dat t nuttig is, mer ZONDER ENIGE GARANSIE; zonder zelfs de daoronder begrepen garansie van VERKOOPBAORHEID of GESCHIKTHEID VEUR ENIG DOEL IN T BIEZUNDER. Zie de GNU General Public License veur meer informasie.
-Samen mit dit programma heur je n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van de GNU General Public License] te hebben ekregen; as dat niet zo is, schrief dan naor de Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA of [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html lees de lisensie op t internet].',
-'version-software' => 'Programmatuur die installeerd is',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Versie',
+Samen mit dit programma heur je n [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van de GNU General Public License] te hebben ekregen; as dat niet zo is, schrief dan naor de Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA of [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lees de lisensie op t internet].',
+'version-software' => 'Programmatuur die installeerd is',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Versie',
# Special:FilePath
'filepath' => 'Bestaandslokasie',
@@ -3401,22 +3600,22 @@ Aofbeeldingen wörden in resolusie helemaole weeregeven.
Aandere bestaandstypen wörden gelieke in t mit t MIME-type verbunnen programma opend.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Dubbele bestaanden zeuken',
-'fileduplicatesearch-summary' => 'Dubbele bestanen zeuken op baosis van de hashweerde.
-
-Voer de bestaansnaam in zonder \'t veurvoegsel "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Dubbele bestaanden zeuken',
-'fileduplicatesearch-filename' => 'Bestaandsnaam:',
-'fileduplicatesearch-submit' => 'Zeuken',
-'fileduplicatesearch-info' => '$1 × $2 beeldpunten<br />Bestaandsgrootte: $3<br />MIME-type: $4',
-'fileduplicatesearch-result-1' => 'Der bin gien bestaanden die liek alleens bin as "$1".',
-'fileduplicatesearch-result-n' => 'Der {{PLURAL:$2|is één bestaand|bin $2 bestaanden}} die liek alleens bin as "$1".',
+'fileduplicatesearch' => 'Dubbele bestaanden zeuken',
+'fileduplicatesearch-summary' => 'Dubbele bestaanden zeuken op baosis van de hashweerde.',
+'fileduplicatesearch-legend' => 'Dubbele bestaanden zeuken',
+'fileduplicatesearch-filename' => 'Bestaandsnaam:',
+'fileduplicatesearch-submit' => 'Zeuken',
+'fileduplicatesearch-info' => '$1 × $2 beeldpunten<br />Bestaandsgrootte: $3<br />MIME-type: $4',
+'fileduplicatesearch-result-1' => 'Der bin gien bestaanden die liek alleens bin as "$1".',
+'fileduplicatesearch-result-n' => 'Der {{PLURAL:$2|is één bestaand|bin $2 bestaanden}} die liek alleens bin as "$1".',
+'fileduplicatesearch-noresults' => 'Der is gien bestaand mit de naam "$1" evunnen.',
# Special:SpecialPages
'specialpages' => "Spesiale pagina's",
'specialpages-note' => '----
-* Normale speciale pagina\'s
-* <strong class="mw-specialpagerestricted">Beteund toegankelijke speciale pagina\'s</strong>',
+* Normale spesiale pagina\'s.
+* <strong class="mw-specialpagerestricted">Beparkt toegankelike spesiale pagina\'s.</strong>
+* <span class="mw-specialpagecached">Spesiale pagina\'s mit allinnig gegevens uut t tussengeheugen (kunnen verouwerd ween).</span>',
'specialpages-group-maintenance' => 'Onderhoudsliesten',
'specialpages-group-other' => "Overige spesiale pagina's",
'specialpages-group-login' => 'Anmelden / inschrieven',
diff --git a/languages/messages/MessagesNe.php b/languages/messages/MessagesNe.php
index 4a6b3413..20054812 100644
--- a/languages/messages/MessagesNe.php
+++ b/languages/messages/MessagesNe.php
@@ -82,8 +82,8 @@ $messages = array(
'tog-shownumberswatching' => 'निगरानी गरिरहेका पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤¹à¤°à¥à¤•à¥‹ संखà¥à¤¯à¤¾ देखाउने',
'tog-oldsig' => 'वरà¥à¤¤à¤®à¤¾à¤¨ हसà¥à¤¤à¤¾à¤•à¥à¤·à¤°:',
'tog-fancysig' => 'मेरो दसà¥à¤¤à¤–तलाई विकि पाठको रà¥à¤ªà¤®à¤¾ लिने(सà¥à¤µà¤¤ समà¥à¤µà¤¨à¥à¤§ बिना)',
-'tog-externaleditor' => 'पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ रà¥à¤ªà¤®à¤¾ बाहà¥à¤¯ समà¥à¤ªà¤¾à¤¦à¤• पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ (विजà¥à¤žà¤¹à¤°à¥à¤•à¥‹ लागि मातà¥à¤°, तपाईको कमà¥à¤ªà¥à¤¯à¥à¤Ÿà¤°à¤®à¤¾ विशेष अनà¥à¤•à¥à¤²à¤¤à¤¾ आवशà¥à¤¯à¤• हà¥à¤¨à¥à¤› [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
-'tog-externaldiff' => 'पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ रà¥à¤ªà¤®à¤¾ बाहà¥à¤¯ diff पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸ (विजà¥à¤ž पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤¹à¤°à¥à¤•à¥‹ लागि मातà¥à¤°, तपाईंको कमà¥à¤ªà¥à¤¯à¥à¤Ÿà¤°à¤®à¤¾ विशेष अनà¥à¤•à¥à¤²à¤¤à¤¾ आवशà¥à¤¯à¤• हà¥à¤¨à¥à¤› [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaleditor' => 'पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ रà¥à¤ªà¤®à¤¾ बाहà¥à¤¯ समà¥à¤ªà¤¾à¤¦à¤• पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ (विजà¥à¤žà¤¹à¤°à¥à¤•à¥‹ लागि मातà¥à¤°, तपाईको कमà¥à¤ªà¥à¤¯à¥à¤Ÿà¤°à¤®à¤¾ विशेष अनà¥à¤•à¥à¤²à¤¤à¤¾ आवशà¥à¤¯à¤• हà¥à¤¨à¥à¤› [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaldiff' => 'पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ रà¥à¤ªà¤®à¤¾ बाहà¥à¤¯ diff पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸ (विजà¥à¤ž पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤¹à¤°à¥à¤•à¥‹ लागि मातà¥à¤°, तपाईंको कमà¥à¤ªà¥à¤¯à¥à¤Ÿà¤°à¤®à¤¾ विशेष अनà¥à¤•à¥à¤²à¤¤à¤¾ आवशà¥à¤¯à¤• हà¥à¤¨à¥à¤› [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
'tog-showjumplinks' => '"जाने" पहà¥à¤à¤š समà¥à¤µà¤¨à¥à¤§ सकà¥à¤°à¤¿à¤¯ पारà¥à¤¨à¥‡',
'tog-uselivepreview' => 'पà¥à¤°à¤¤à¥à¤¯à¤•à¥à¤· पूरà¥à¤µà¤°à¥à¤ª पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ( जाभा सà¥à¤•à¥à¤°à¤¿à¤ªà¥à¤Ÿ आवशà¥à¤¯à¤•) (पà¥à¤°à¤¯à¥‹à¤—ातà¥à¤®à¤•)',
'tog-forceeditsummary' => 'खाली समà¥à¤ªà¤¾à¤¦à¤¨ सार पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿ गरेमा मलाई सोधà¥à¤¨à¥‡',
@@ -180,15 +180,9 @@ $messages = array(
'listingcontinuesabbrev' => 'निरनà¥à¤¤à¤°à¤¤à¤¾...',
'index-category' => 'कà¥à¤°à¤®à¤¾à¤™à¥à¤•à¤¿à¤¤ पृषà¥à¤ à¤¹à¤°à¥',
'noindex-category' => 'कà¥à¤°à¤®à¤¾à¤‚कन नगरिà¤à¤•à¤¾ पृषà¥à¤ à¤¹à¤°à¥',
+'broken-file-category' => 'टà¥à¤Ÿà¥‡à¤•à¥‹ फाइल लिंकसितको पृषà¥à¤ ',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''मीडिया सफलतापूरà¥à¤µà¤• कमà¥à¤ªà¥à¤¯à¥‚टरमा सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ भयो ।'''",
-'mainpagedocfooter' => ' विकी अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— कसरी पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥‡ भनà¥à¤¨à¥‡ जानकारीको लागि [http://meta.wikimedia.org/wiki/Help:Contents पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ सहायता] हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥
-
-== सà¥à¤°à¥‚ गरà¥à¤¨à¤•à¥‹ लागि ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings विनà¥à¤¯à¤¾à¤¸ सेटिङà¥à¤— सूची]
-* [http://www.mediawiki.org/wiki/Manual:FAQ मेडियाविकि सामानà¥à¤¯ पà¥à¤°à¤¶à¥à¤¨à¤•à¤¾ उतà¥à¤¤à¤°à¤¹à¤°à¥]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce मेडियाविकि सà¥à¤šà¤¨à¤¾ मेलिङà¥à¤— सूची]',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'बारेमा',
'article' => 'सामागà¥à¤°à¥€ पृषà¥à¤ ',
@@ -240,10 +234,10 @@ $messages = array(
'history' => 'पृषà¥à¤ à¤•à¥‹ इतिहास',
'history_short' => 'पृषà¥à¤ à¤•à¥‹ इतिहास',
'updatedmarker' => 'मेरो अनà¥à¤¤à¤¿à¤® भà¥à¤°à¤®à¤£ पछि अदà¥à¤¯à¤¤à¤¨ गरिà¤à¤•à¥‹',
-'info_short' => 'जानकारी',
'printableversion' => 'छापà¥à¤¨à¤¯à¥‹à¤—à¥à¤¯ संसà¥à¤•à¤°à¤£',
'permalink' => 'सà¥à¤¥à¤¾à¤¯à¥€à¤²à¤¿à¤™à¥à¤•',
'print' => 'छापà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
+'view' => 'अवलोकन गरà¥à¤¨à¥‡',
'edit' => 'परिवरà¥à¤¤à¤¨',
'create' => 'सृजना गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
'editthispage' => 'यो पृषà¥à¤  समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
@@ -251,6 +245,7 @@ $messages = array(
'delete' => 'मेटà¥à¤¨à¥‡',
'deletethispage' => 'यो पृषà¥à¤  हटाउनà¥à¤¹à¥‹à¤¸à¥',
'undelete_short' => '{{PLURAL:$1|à¤à¤‰à¤Ÿà¤¾ मेटिà¤à¤•à¥‹ समà¥à¤ªà¤¾à¤¦à¤¨|$1 मेटिà¤à¤•à¤¾ समà¥à¤ªà¤¾à¤¦à¤¨à¤¹à¤°à¥}} फरà¥à¤•à¤¾à¤‰à¤¨à¥‡',
+'viewdeleted_short' => '{{PLURAL:$1|मेटिà¤à¤•à¥‹ समà¥à¤ªà¤¾à¤¦à¤¨ |$1 मेटिà¤à¤•à¤¾ समà¥à¤ªà¤¾à¤¦à¤¨à¤¹à¤°à¥‚}}',
'protect' => 'सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ राखà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
'protect_change' => 'परिवरà¥à¤¤à¤¨',
'protectthispage' => 'यो पृषà¥à¤  सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
@@ -338,6 +333,8 @@ $1',
'toc' => 'विषयसूची',
'showtoc' => 'देखाउनà¥à¤¹à¥‹à¤¸à¥',
'hidetoc' => 'लà¥à¤•à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥',
+'collapsible-collapse' => 'खà¥à¤®à¥à¤šà¥à¤¯à¤¾à¤‰à¤¨à¥‡',
+'collapsible-expand' => 'फैलà¥à¤¯à¤¾à¤‰à¤¨à¥‡',
'thisisdeleted' => '$1 हेरà¥à¤¨à¥‡ या पूरà¥à¤µà¤°à¥à¤ªà¤®à¤¾ फरà¥à¤•à¤¾à¤‰à¤¨à¥‡ हो ?',
'viewdeleted' => '$1 हेरà¥à¤¨à¥‡ ?',
'restorelink' => '{{PLURAL:$1|à¤à¤• मेटिà¤à¤•à¥‹ समà¥à¤ªà¤¾à¤¦à¤¨ |$1 मेटिà¤à¤•à¤¾ समà¥à¤ªà¤¾à¤¦à¤¨à¤¹à¤°à¥‚}}',
@@ -351,6 +348,8 @@ $1',
'feed-atom' => 'अणà¥',
'feed-rss' => 'RSS',
'red-link-title' => '$1 (पृषà¥à¤  उपलबà¥à¤§ छैन)',
+'sort-descending' => 'अवरोहण कà¥à¤°à¤®à¤®à¤¾ मिलाउने',
+'sort-ascending' => 'आरोहण कà¥à¤°à¤®à¤®à¤¾ मिलाउने',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'लेख',
@@ -434,12 +433,13 @@ $1',
'protectedinterface' => 'यो पृषà¥à¤ à¤²à¥‡ सफà¥à¤Ÿà¤µà¥‡à¤¯à¤°à¤•à¥‹ लागि अनà¥à¤¤à¤°à¤®à¥‹à¤¹à¤¡à¤¾ पाठ पà¥à¤°à¤¦à¤¾à¤¨ गरà¥à¤¦à¤› , र यसलाई दà¥à¤°à¥à¤ªà¤¯à¥‹à¤— हà¥à¤¨à¤¬à¤¾à¤Ÿ बचाउन तालà¥à¤šà¤¾ मारिà¤à¤•à¥‹ छ।',
'editinginterface' => "'''चेतावनी:''' तपाईं यसà¥à¤¤à¥‹ पृषà¥à¤ à¤²à¤¾à¤ˆ समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥à¤¹à¥à¤à¤¦à¥ˆà¤›, जसले सफà¥à¤Ÿà¤µà¥‡à¤¯à¤°à¤•à¥‹ लागि अनà¥à¤¤à¤°à¤®à¥‹à¤¹à¥‹à¤¡à¤¼à¤¾ (interface) पाठ पà¥à¤°à¤¦à¤¾à¤¨ गरà¥à¤¦à¤›à¥¤
यसको परिवरà¥à¤¤à¤¨à¤²à¥‡ अरॠपà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ अनà¥à¤¤à¤°à¤®à¥‹à¤¹à¥‹à¤¡à¤¼à¤¾à¤•à¥‹ पà¥à¤°à¤¦à¤°à¥à¤¶à¤¨à¤®à¤¾ पà¥à¤°à¤­à¤¾à¤µ पारà¥à¤›à¥¤
-मीडियाविकिको सà¥à¤¥à¤¾à¤¨à¥€à¤¯à¤•à¤°à¤£ परियोजना निमà¥à¤¤à¤¿ अनà¥à¤µà¤¾à¤¦ गरà¥à¤¨ कृपया यहाठजानà¥à¤¹à¥‹à¤¸à¥ [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net]",
+मीडियाविकिको सà¥à¤¥à¤¾à¤¨à¥€à¤¯à¤•à¤°à¤£ परियोजना निमà¥à¤¤à¤¿ अनà¥à¤µà¤¾à¤¦ गरà¥à¤¨ कृपया यहाठजानà¥à¤¹à¥‹à¤¸à¥ [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net]",
'sqlhidden' => '(SQL कà¥à¤µà¥‡à¤°à¥€ लà¥à¤•à¤¾à¤à¤•à¥‹)',
'cascadeprotected' => 'यो पृषà¥à¤  समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¤¬à¤¾à¤Ÿ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ गरिà¤à¤•à¥‹à¤› किनभनें {{PLURAL:$1|पृषà¥à¤  |पृषà¥à¤ à¤¹à¤°à¥}}मा सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ गरà¥à¤¨à¥à¤•à¤¾ साथै पà¥à¤°à¤ªà¤¾à¤¤ ("cascading") विकलà¥à¤ª खà¥à¤²à¥à¤²à¤¾ राखिà¤à¤•à¥‹à¤›:
$2',
'namespaceprotected' => " '''$1''' नेमसà¥à¤ªà¥‡à¤¸à¤®à¤¾ रहेका पृषà¥à¤ à¤¹à¤°à¥ समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥‡ अनà¥à¤®à¤¤à¤¿ यहाà¤à¤²à¤¾à¤ˆ छैन ।",
-'customcssjsprotected' => 'यो पृषà¥à¤  समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥‡ अनà¥à¤®à¤¤à¤¿ यहाà¤à¤²à¤¾à¤ˆ छैन ,किन भनें यसमा अरà¥à¤•à¥‹ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त जानकारीहरॠछनॠ।',
+'customcssprotected' => 'तपाईलाई यस पृषà¥à¤  समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥‡ अनà¥à¤®à¤¤à¤¿ छैन, किनकी यसमा कà¥à¤¨à¥ˆ अरà¥à¤•à¥‹ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त अभिरà¥à¤šà¥€à¤¹à¤°à¥ संगà¥à¤°à¤¹à¤¿à¤¤ छनॠ।',
+'customjsprotected' => 'तपाईलाई यस जाभासà¥à¤•à¥ƒà¤ªà¥à¤Ÿ पृषà¥à¤  समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥‡ अनà¥à¤®à¤¤à¤¿ छैन, किनकी यसमा कà¥à¤¨à¥ˆ अरà¥à¤•à¥‹ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त अभिरà¥à¤šà¥€à¤¹à¤°à¥ संगà¥à¤°à¤¹à¤¿à¤¤ छनॠ।',
'ns-specialprotected' => 'विशेष पृषà¥à¤  समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨ सकिदैन ।',
'titleprotected' => ' [[User:$1|$1]]दà¥à¤µà¤¾à¤°à¤¾ यो शीरà¥à¤·à¤• निरà¥à¤®à¤¾à¤£à¤¹à¥à¤¨à¤¬à¤¾à¤Ÿ जोगाइà¤à¤•à¥‹ छ।
कारण "\'\'$2\'\'" हो ।',
@@ -475,6 +475,7 @@ $2',
'createaccount' => 'खाता खोलà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
'gotaccount' => "के तपाईà¤à¤¸à¤à¤— पहिले देखि नै खाता छ ? '''$1''' ।",
'gotaccountlink' => 'लग इन',
+'userlogin-resetlink' => 'पà¥à¤°à¤µà¥‡à¤¶ समà¥à¤¬à¤¨à¥à¤§à¥€ विवरणहरॠबिरà¥à¤¸à¤¨à¥ भयो?',
'createaccountmail' => 'इ-मेलबाट',
'createaccountreason' => 'कारण :',
'badretype' => 'तपाईंले दिनà¥à¤­à¤à¤•à¥‹ पासवरà¥à¤¡ मिलà¥à¤¦à¥ˆà¤¨à¥¤',
@@ -487,13 +488,16 @@ $2',
तपाईà¤à¤•à¤¾ कà¥à¤•à¥€à¤¹à¤°à¥‚ निसà¥à¤•à¥à¤°à¤¿à¤¯ छनà¥à¥¤
कृपया सकà¥à¤°à¤¿à¤¯ बनाइ , नाम र पà¥à¤°à¤µà¥‡à¤¶à¤¶à¤µà¥à¤¦ राखी पà¥à¤°à¤µà¥‡à¤¶ गरà¥à¤¨à¥à¤¹à¥‹à¤²à¤¾ ।',
'nocookieslogin' => '{{SITENAME}} ले पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ पà¥à¤°à¤µà¥‡à¤¶ गराउन कà¥à¤•à¥€à¤¹à¤°à¥‚ पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤› । तपाईà¤à¤•à¥‹ कà¥à¤•à¥€à¤¹à¤°à¥‚ निसà¥à¤•à¥à¤°à¤¿à¤¯ गरिà¤à¤•à¥‹ छ। कृपया सकà¥à¤°à¤¿à¤¯ बनाइ , नाम र पà¥à¤°à¤µà¥‡à¤¶à¤¶à¤µà¥à¤¦ राखी पà¥à¤°à¤µà¥‡à¤¶ गरà¥à¤¨à¥à¤¹à¥‹à¤²à¤¾ ।',
+'nocookiesfornew' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ खाता निरà¥à¤®à¤¾à¤£ गरिà¤à¤¨, हामीले यसको मूल सà¥à¤°à¥‹à¤¤ निरà¥à¤§à¤¾à¤°à¤£ गरà¥à¤¨ सकेनौं।
+निशà¥à¤šà¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ तपाईंले कà¥à¤•à¥€ सकà¥à¤°à¤¿à¤¯ गरà¥à¤¨à¥à¤­à¤à¤•à¥‹à¤›, पà¥à¤¨à¤ƒ यस पृषà¥à¤Ÿà¤²à¤¾à¤ˆ उठाई पà¥à¤°à¤¯à¤¾à¤¸ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤',
+'nocookiesforlogin' => '{{int:nocookieslogin}}',
'noname' => 'तपाईले सही पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम दिनॠभà¤à¤¨à¥¤',
'loginsuccesstitle' => 'पà¥à¤°à¤µà¥‡à¤¶ सफल',
'loginsuccess' => "'''तपाईंले {{SITENAME}}मा \"\$1\" को रà¥à¤ªà¤®à¤¾ पà¥à¤°à¤µà¥‡à¤¶ गरà¥à¤¨à¥à¤­à¤à¤•à¥‹à¤›à¥¤'''",
'nosuchuser' => '"$1" को नामबाट कà¥à¤¨à¥ˆ पनि पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ भेटिà¤à¤¨à¤¨à¥ ।
पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम वरà¥à¤£à¤¸à¤‚वेदनशील हà¥à¤¨à¥à¤›à¤¨à¥ ।
हिजà¥à¤œà¥‡ जाà¤à¤šà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ , या [[Special:UserLogin/signup|नयाठखाता बनाउनà¥à¤¹à¥‹à¤¸à¥]].',
-'nosuchusershort' => ' "<nowiki>$1</nowiki>" नामको कà¥à¤¨à¥ˆ पनि पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ भेटिà¤à¤¨à¥¤
+'nosuchusershort' => ' "$1" नामको कà¥à¤¨à¥ˆ पनि पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ भेटिà¤à¤¨à¥¤
तपाईà¤à¤•à¥‹ हिजà¥à¤œà¥‡ जाà¤à¤šà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।',
'nouserspecified' => 'तपाà¤à¤ˆà¤²à¥‡ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ नाम जनाउनà¥à¤ªà¤°à¥à¤›à¥¤',
'login-userblocked' => 'यस पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¤¾à¤ˆ रोक लगाइà¤à¤•à¥‹ छ। पà¥à¤°à¤µà¥‡à¤¶ गरà¥à¤¨à¥‡ अनà¥à¤®à¤¤à¤¿ छैन।',
@@ -534,13 +538,14 @@ $2',
'usernamehasherror' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤¨à¤¾à¤®à¤®à¤¾ हà¥à¤¯à¤¾à¤¸ अकà¥à¤·à¤°à¤¹à¤°à¥ राखà¥à¤¨ मिलà¥à¤¦à¥ˆà¤¨à¥¤',
'login-throttled' => 'तपाईंले भरà¥à¤–रै धेरै पलà¥à¤Ÿ पà¥à¤°à¤µà¥‡à¤¶à¤•à¥‹ निमà¥à¤¤à¤¿ पà¥à¤°à¤¯à¤¾à¤¸ गरà¥à¤¨à¥à¤­à¤¯à¥‹à¥¤
कृपया परà¥à¤–ेर केही समयपछि मातà¥à¤° पà¥à¤°à¤¯à¤¾à¤¸ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤',
+'login-abort-generic' => 'तपाईंको पà¥à¤°à¤µà¥‡à¤¶ असफल भयो - छोड़ियो',
'loginlanguagelabel' => 'भाषा: $1',
'suspicious-userlogout' => 'तपाईंको निरà¥à¤—मन अनà¥à¤°à¥‹à¤§ असà¥à¤µà¤¿à¤•à¤¾à¤° गरिनà¥à¤› किन कि यो खराब बà¥à¤°à¤¾à¤‰à¤œà¤° वा कà¥à¤¯à¤¾à¤¸à¤¿à¤™ पà¥à¤°à¥‹à¤•à¥à¤¸à¤¿à¤²à¥‡ पठाà¤à¤•à¥‹ जसà¥à¤¤à¥‹ देखिनà¥à¤›à¥¤',
# E-mail sending
'php-mail-error-unknown' => 'PHP मेल() कà¥à¤°à¤¿à¤¯à¤¾à¤®à¤¾ अजà¥à¤žà¤¾à¤¤ तà¥à¤°à¥à¤Ÿà¤¿',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'पà¥à¤°à¤µà¥‡à¤¶à¤¶à¤µà¥à¤¦ परिवरà¥à¤¤à¤¨ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
'resetpass_announce' => 'तपाईंले असà¥à¤¥à¤¾à¤¯à¥€ ई-मेल कोडको आधारमा पà¥à¤°à¤µà¥‡à¤¶ गरà¥à¤¨à¥ भà¤à¤•à¥‹à¤›à¥¤
पà¥à¤°à¤µà¥‡à¤¶à¤•à¤¾à¤°à¥à¤¯ पूरा गरà¥à¤¨ नयाठपà¥à¤°à¤µà¥‡à¤¶ शवà¥à¤¦ यहाठदिनà¥à¤¹à¥‹à¤¸à¥:',
@@ -559,6 +564,32 @@ $2',
तपाईंले अघिबाट नैं पà¥à¤°à¤µà¥‡à¤¶ शवà¥à¤¦ सफलता पूरà¥à¤µà¤• परिवरà¥à¤¤à¤¨ गरिसकà¥à¤¨à¥ भà¤à¤•à¥‹ हो वा नयाठपà¥à¤°à¤µà¥‡à¤¶ शवà¥à¤¦à¤•à¥‹ निमà¥à¤¤à¤¿ निवेदन गरà¥à¤¨à¥à¤­à¤à¤•à¥‹à¤›à¥¤',
'resetpass-temp-password' => 'असà¥à¤¥à¤¾à¤‡ पà¥à¤°à¤µà¥‡à¤¶à¤¶à¤µà¥à¤¦',
+# Special:PasswordReset
+'passwordreset' => 'पà¥à¤°à¤µà¥‡à¤¶à¤¶à¤µà¥à¤¦ पà¥à¤¨à¤ƒ तय गरà¥à¤¨à¥‡',
+'passwordreset-text' => 'तपाईंको खाता-विवरणको इमेल अनà¥à¤¸à¥à¤®à¤¾à¤°à¤• पà¥à¤°à¤¾à¤ªà¥à¤¤ गरà¥à¤¨ यो फारम पूरा गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤',
+'passwordreset-legend' => 'पà¥à¤°à¤µà¥‡à¤¶à¤¶à¤µà¥à¤¦ पà¥à¤¨à¤ƒ तय गरà¥à¤¨à¥‡',
+'passwordreset-disabled' => 'पà¥à¤°à¤µà¥‡à¤¶ शवà¥à¤¦ पà¥à¤¨à¤ƒ निरà¥à¤§à¤¾à¤°à¤£ गरà¥à¤¨à¥‡ वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾ यस विकिमा निसà¥à¤•à¥à¤°à¤¿à¤¯ पारिà¤à¤•à¥‹ छ।',
+'passwordreset-pretext' => '{{PLURAL:$1||तल दिà¤à¤•à¤¾ आà¤à¤•à¤¡à¤¼à¤¾à¤•à¤¾ टà¥à¤•à¥à¤°à¤¾ मधà¥à¤¯à¥‡ à¤à¤‰à¤Ÿà¤¾ पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥}}',
+'passwordreset-username' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾-नाम:',
+'passwordreset-domain' => 'डोमेन',
+'passwordreset-email' => 'इमेल ठेगाना:',
+'passwordreset-emailtitle' => '{{SITENAME}}मा खाता विवरण',
+'passwordreset-emailtext-ip' => 'कसैले (सायद तपाईंले, $1 आई पी ठेगानाबाट) {{SITENAME}} ($4)मा तपाईंको खाता विवरणको निमà¥à¤¤à¤¿ à¤à¤‰à¤Ÿà¤¾ अनà¥à¤¸à¥à¤®à¤¾à¤°à¤•à¤•à¥‹ अनà¥à¤°à¥‹à¤§ गरेको छ। निमà¥à¤¨ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ {{PLURAL:$3|खाता यस इमेल ठेगानासित समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ छ|खाताहरॠयस इमेल ठेगानासित समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ छनà¥}}:
+
+$2
+
+{{PLURAL:$3|यो असà¥à¤¥à¤¾à¤ˆ पासवरà¥à¤¡à¤•à¥‹|यी असà¥à¤¥à¤¾à¤ˆ पासवरà¥à¤¡à¤¹à¤°à¥à¤•à¥‹}} समय {{PLURAL:$5|à¤à¤• दिन|$5 दिन}}मा सकिनेछ।
+तपाईंले पà¥à¤°à¤µà¥‡à¤¶ गरेर अहिले नैं नयाठपासवरà¥à¤¡ चà¥à¤¨à¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤ यदि अरॠकसैले अनà¥à¤°à¥‹à¤§ गरेको भठअथवा यदि तपाईंलाई मूल पासवरà¥à¤¡ याद भठअनि यसलाई परिवरà¥à¤¤à¤¨ गरà¥à¤¨ चाहनॠहà¥à¤¨à¥à¤¨ भनें, तपाईंले यस सनà¥à¤¦à¥‡à¤¶à¤²à¤¾à¤ˆ अनदेखा गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ र पà¥à¤°à¤¾à¤¨à¥ˆ पासवरà¥à¤¡à¤²à¤¾à¤ˆ चालू राखà¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤',
+'passwordreset-emailtext-user' => '{{SITENAME}} को $1 पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¥‡ {{SITENAME}} ($4)को लागि खाता विवरणको निमà¥à¤¤à¤¿ à¤à¤‰à¤Ÿà¤¾ अनà¥à¤¸à¥à¤®à¤¾à¤°à¤•à¤•à¥‹ अनà¥à¤°à¥‹à¤§ गरेको छ। निमà¥à¤¨ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ {{PLURAL:$3|खाता यस इमेल ठेगानासित समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ छ|खाताहरॠयस इमेल ठेगानासित समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ छनà¥}}:
+
+$2
+
+{{PLURAL:$3|यो असà¥à¤¥à¤¾à¤ˆ पासवरà¥à¤¡à¤•à¥‹|यी असà¥à¤¥à¤¾à¤ˆ पासवरà¥à¤¡à¤¹à¤°à¥à¤•à¥‹}} समय {{PLURAL:$5|à¤à¤• दिन|$5 दिन}}मा सकिनेछ।
+तपाईंले पà¥à¤°à¤µà¥‡à¤¶ गरेर अहिले नैं नयाठपासवरà¥à¤¡ चà¥à¤¨à¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤ यदि अरॠकसैले अनà¥à¤°à¥‹à¤§ गरेको भठअथवा यदि तपाईंलाई मूल पासवरà¥à¤¡ याद भठअनि यसलाई परिवरà¥à¤¤à¤¨ गरà¥à¤¨ चाहनॠहà¥à¤¨à¥à¤¨ भनें, तपाईंले यस सनà¥à¤¦à¥‡à¤¶à¤²à¤¾à¤ˆ अनदेखा गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ र पà¥à¤°à¤¾à¤¨à¥ˆ पासवरà¥à¤¡à¤²à¤¾à¤ˆ चालू राखà¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤',
+'passwordreset-emailelement' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ नाम: $1
+असà¥à¤¥à¤¾à¤ˆ पासवरà¥à¤¡: $2',
+'passwordreset-emailsent' => 'à¤à¤‰à¤Ÿà¤¾ अनà¥à¤¸à¥à¤®à¤¾à¤°à¤• इमेल पठाइयो।',
+
# Edit page toolbar
'bold_sample' => 'गाढा अकà¥à¤·à¤°',
'bold_tip' => 'गाढा अकà¥à¤·à¤°',
@@ -570,8 +601,6 @@ $2',
'extlink_tip' => 'बाहà¥à¤¯ लिङà¥à¤• (समà¥à¤à¤¨à¥à¤¹à¥‹à¤¸à¥ http:// prefix)',
'headline_sample' => 'शीरà¥à¤·à¤• अकà¥à¤·à¤°',
'headline_tip' => 'दोसà¥à¤°à¥‹ सà¥à¤¤à¤° शीरà¥à¤·à¤ªà¤‚कà¥à¤¤à¤¿',
-'math_sample' => 'सूतà¥à¤° यहाठथपà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
-'math_tip' => 'गणितीय सूतà¥à¤° (LaTeX)',
'nowiki_sample' => 'पà¥à¤°à¤¾à¤°à¥à¤ª नभà¤à¤•à¥‹ पाठ यहाठदिनà¥à¤¹à¥‹à¤¸à¥',
'nowiki_tip' => 'विकि फरमà¥à¤¯à¤¾à¤Ÿà¤¿à¤™à¥à¤²à¤¾à¤‡ वासà¥à¤¤à¤¾ नगरà¥à¤¨à¥‡ (इगà¥à¤¨à¥‹à¤° गरà¥à¤¨à¥‡)',
'image_sample' => 'उदाहरण.jpg',
@@ -661,7 +690,7 @@ $2',
'noarticletext-nopermission' => 'यस लेखमा अहिले केहि पनि पाठ छैन ।
तपाईंले अनà¥à¤¯ पृषà¥à¤ à¤®à¤¾ [[Special:Search/{{PAGENAME}}|यस पृषà¥à¤ à¤•à¥‹ शीरà¥à¤·à¤•à¤•à¥‹ लागि खोज]] गरà¥à¤¨ सकà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤›,
अथवा <span class="plainlinks">[{{fullurl:{{#Special:Log}}|पृषà¥à¤ ={{FULLPAGENAMEE}}}} समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ लगहरॠखोजà¥à¤¨ सकà¥à¤¨à¥à¤¹à¥à¤¨à¥‡à¤› ]</span>.',
-'userpage-userdoesnotexist' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ खाता "$1" दरà¥à¤¤à¤¾ गरिà¤à¤•à¥‹ छैन ।
+'userpage-userdoesnotexist' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ खाता "<nowiki>$1</nowiki>" दरà¥à¤¤à¤¾ गरिà¤à¤•à¥‹ छैन ।
तपाईà¤à¤²à¥‡ पृषà¥à¤  निरà¥à¤®à¤¾à¤£/समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨ चाहनॠभà¤à¤•à¥‹ भठजाà¤à¤š गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।',
'userpage-userdoesnotexist-view' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ खाता "$1" दरà¥à¤¤à¤¾ गरिà¤à¤•à¥‹ छैन।',
'blocked-notice-logextract' => 'यो पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ हाल पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ छ।
@@ -699,6 +728,7 @@ $2',
'token_suffix_mismatch' => "'''समà¥à¤ªà¤¾à¤¦à¤¨ टोकनमा विराम चिहà¥à¤¨ र वरà¥à¤£ समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ गड़बड़ीको कारण तपाईंको समà¥à¤ªà¤¾à¤¦à¤¨ असà¥à¤µà¥€à¤•à¤¾à¤° गरिà¤à¤•à¥‹ छ'''
पृषà¥à¤ à¤•à¥‹ पाठ बचाउन समà¥à¤ªà¤¾à¤¦à¤¨ असà¥à¤µà¥€à¤•à¤¾à¤° गरिà¤à¤•à¥‹ हो।
यसà¥à¤¤à¥‹ तà¥à¤¯à¤¸à¤¬à¥‡à¤²à¤¾ हà¥à¤¨à¥à¤› जब तपाईंले बगी वेवमा आधारित अजà¥à¤žà¤¾à¤¤ पà¥à¤°à¥‹à¤•à¥à¤¸à¥€ सेवा पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤›à¥¤",
+'edit_form_incomplete' => "'''समà¥à¤ªà¤¾à¤¦à¤¨à¤•à¥‹ केहि भाग सरà¥à¤µà¤°à¤¸à¤®à¥à¤® पà¥à¤—à¥à¤¨ सकेन, दà¥à¤‡à¤ªà¤²à¥à¤Ÿ जाà¤à¤š गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥, तपाईंको समà¥à¤ªà¤¾à¤¦à¤¨ यथावत रहे पà¥à¤¨à¤ƒ पà¥à¤°à¤¯à¤¾à¤¸ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥'''",
'editing' => '$1 समà¥à¤ªà¤¾à¤¦à¤¨ गरिà¤à¤¦à¥ˆ',
'editingsection' => '$1 (खणà¥à¤¡) समà¥à¤ªà¤¾à¤¦à¤¨ गरिà¤à¤¦à¥ˆ',
'editingcomment' => '$1 समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¦à¥ˆ(नयाठखणà¥à¤¡)',
@@ -735,6 +765,7 @@ $2',
'template-semiprotected' => '(अरà¥à¤§-सà¥à¤°à¤•à¥à¤·à¤¿à¤¤)',
'hiddencategories' => 'यो पृषà¥à¤  निमà¥à¤¨ {{PLURAL:$1|1 लà¥à¤•à¤¾à¤‡à¤à¤•à¥‹ शà¥à¤°à¥‡à¤£à¥€|$1 लà¥à¤•à¤¾à¤‡à¤à¤•à¤¾ शà¥à¤°à¥‡à¤£à¥€à¤¹à¤°à¥}}को सदसà¥à¤¯ हो :',
'edittools' => '<!-- Text here will be shown below edit and upload forms. -->',
+'edittools-upload' => '-',
'nocreatetitle' => 'पृषà¥à¤  सृजना सीमित गरिà¤à¤•à¥‹',
'nocreatetext' => '{{SITENAME}} ले नयाठपृषà¥à¤  सृजना गरà¥à¤¨ सकà¥à¤¨à¥‡ कà¥à¤·à¤®à¤¤à¤¾à¤®à¤¾ रोक लगाà¤à¤•à¥‹ छ।
तपाईठपछाडि जानॠभइ रहिआà¤à¤•à¥‹ पृषà¥à¤  समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¤¸à¤•à¥à¤¨à¥à¤¹à¥à¤¨à¥à¤› , अथवा [[Special:UserLogin|पà¥à¤°à¤µà¥‡à¤¶ गरà¥à¤¨à¥à¤¹à¥‹à¤¸ या नयाठखाता सृजना गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ]]।',
@@ -919,7 +950,9 @@ $1",
'revdelete-offender' => 'संशोधन करà¥à¤¤à¤¾:',
# Suppression log
-'suppressionlog' => 'कमगरेको लग',
+'suppressionlog' => 'कमगरेको लग',
+'suppressionlogtext' => 'मेटà¥à¤¨à¤•à¥‹ र रोककको निमà¥à¤¤à¥€ निमà¥à¤¨ सà¥à¤šà¥€ रहेको छ जसमा पà¥à¤°à¤µà¤¨à¥à¤§à¤•à¤¬à¤¾à¤Ÿ लà¥à¤•à¤¾à¤‡à¤à¤•à¤¾ सामगà¥à¤°à¥€ समेत रहेका छन।
+कृपया हाल पà¥à¤°à¤¯à¥‹à¤—मा रहेका रोक र रोकावटको सà¥à¤šà¥€à¤•à¤¾ लागि[[Special:BlockList|IP रोक सà¥à¤šà¥€]] हेरà¥à¤¨à¥à¤¹à¥‹à¤²à¤¾ ।',
# History merging
'mergehistory' => 'पृषà¥à¤  इतिहासहरॠमिसाउने',
@@ -1026,12 +1059,13 @@ $1",
याद गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ उनीहरà¥à¤•à¥‹ {{SITENAME}}को सूची सामगà¥à¤°à¥€ पà¥à¤°à¤¾à¤¨à¥‹ भà¤à¤•à¥‹ हà¥à¤¨à¤¸à¤•à¥à¤› ।',
# Quickbar
-'qbsettings' => 'कà¥à¤µà¤¿à¤•à¤¬à¤¾à¤°',
-'qbsettings-none' => 'कà¥à¤¨à¥ˆà¤ªà¤¨à¤¿ होइन',
-'qbsettings-fixedleft' => 'देबà¥à¤°à¥‡ निशà¥à¤šà¤¿à¤¤ गरिà¤à¤•à¥‹',
-'qbsettings-fixedright' => 'दाहिने निशà¥à¤šà¤¿à¤¤ गरिà¤à¤•à¥‹',
-'qbsettings-floatingleft' => 'देबà¥à¤°à¥‡ तैरने',
-'qbsettings-floatingright' => 'दाहिने तैरने',
+'qbsettings' => 'कà¥à¤µà¤¿à¤•à¤¬à¤¾à¤°',
+'qbsettings-none' => 'कà¥à¤¨à¥ˆà¤ªà¤¨à¤¿ होइन',
+'qbsettings-fixedleft' => 'देबà¥à¤°à¥‡ निशà¥à¤šà¤¿à¤¤ गरिà¤à¤•à¥‹',
+'qbsettings-fixedright' => 'दाहिने निशà¥à¤šà¤¿à¤¤ गरिà¤à¤•à¥‹',
+'qbsettings-floatingleft' => 'देबà¥à¤°à¥‡ तैरने',
+'qbsettings-floatingright' => 'दाहिने तैरने',
+'qbsettings-directionality' => 'तपाईको भाषाको लेखाइ दिशाको आधारमा मिलान गरिà¤à¤•à¥‹ छ',
# Preferences page
'preferences' => 'रोजाईहरू',
@@ -1042,9 +1076,10 @@ $1",
'changepassword' => 'पासवरà¥à¤¡ परिवरà¥à¤¤à¤¨ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
'prefs-skin' => 'काà¤à¤šà¥à¤²à¥€',
'skin-preview' => 'पूरà¥à¤µà¤¾à¤²à¥‹à¤•à¤¨',
-'prefs-math' => 'गणित',
'datedefault' => 'कà¥à¤¨à¥ˆ अभिरà¥à¤šà¤¿ छैन',
+'prefs-beta' => 'बिटा गà¥à¤£à¤¹à¤°à¥',
'prefs-datetime' => 'मिति र समय',
+'prefs-labs' => 'पà¥à¤°à¤¯à¥‹à¤—शाला गà¥à¤£à¤¹à¤°à¥',
'prefs-personal' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ विवरण',
'prefs-rc' => 'नयाठपरिवरà¥à¤¤à¤¨à¤¹à¤°à¥',
'prefs-watchlist' => 'अवलोकन पृषà¥à¤ ',
@@ -1066,8 +1101,6 @@ $1",
'columns' => 'सà¥à¤¤à¤®à¥à¤­à¤¹à¤°à¥ :',
'searchresultshead' => 'खोज',
'resultsperpage' => 'पà¥à¤°à¤¤à¤¿ पृषà¥à¤  खोज मेल(hits):',
-'contextlines' => 'पà¥à¤°à¤¤à¤¿ पंकà¥à¤¤à¤¿ मेल :',
-'contextchars' => 'पà¥à¤°à¤¤à¤¿ पंकà¥à¤¤à¤¿ सनà¥à¤¦à¤°à¥à¤­ :',
'stub-threshold' => ' <a href="#" class="stub">stub link</a> सà¥à¤µà¤°à¥‚पण (बाइट)को निमà¥à¤¤à¤¿ दà¥à¤µà¤¾à¤°:',
'stub-threshold-disabled' => 'निषà¥à¤•à¥à¤°à¤¿à¤¯',
'recentchangesdays' => 'हालको परिवरà¥à¤¤à¤¨à¤®à¤¾ देखाउने दिनहरà¥:',
@@ -1080,7 +1113,7 @@ $1",
'savedprefs' => 'तपाईंका अभिरà¥à¤šà¤¿à¤¹à¤°à¥‚ सङà¥à¤—à¥à¤°à¤¹à¤¿à¤¤ भयो।',
'timezonelegend' => 'समय कà¥à¤·à¥‡à¤¤à¥à¤° :',
'localtime' => 'सà¥à¤¥à¤¾à¤¨à¤¿à¤¯ समय:',
-'timezoneuseserverdefault' => 'सरà¥à¤­à¤° पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸',
+'timezoneuseserverdefault' => 'विकि मूल ($1) रà¥à¤ªà¤®à¤¾ पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥‡',
'timezoneuseoffset' => 'अरॠनै(अफसेट खà¥à¤²à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥)',
'timezoneoffset' => 'अफसेट¹:',
'servertime' => 'सरà¥à¤­à¤° समय:',
@@ -1133,8 +1166,8 @@ HTML टà¥à¤¯à¤¾à¤—हरॠजाà¤à¤šà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।',
'email' => 'ईमेल',
'prefs-help-realname' => 'वासà¥à¤¤à¤µà¤¿à¤• नाम à¤à¤šà¥à¤›à¤¿à¤• हो ।
तपाईले यो खà¥à¤²à¤¾à¤‰à¤¨à¥ भà¤à¤•à¥‹ खणà¥à¤¡à¤®à¤¾ तपाईà¤à¤•à¥‹ कामको शà¥à¤°à¥‡à¤¯ दिनको लागि पà¥à¤°à¤¯à¥‹à¤— गरिने छ।',
-'prefs-help-email' => 'इमेल ठेगाना à¤à¤šà¥à¤›à¤¿à¤• हो , तर तपाईà¤à¤²à¥‡ आफà¥à¤¨à¥‹ पà¥à¤°à¤µà¥‡à¤¶à¤¶à¤µà¥à¤¦ भà¥à¤²à¥à¤¨à¥ भà¤à¤®à¤¾ तपाईठनयाठपà¥à¤°à¤µà¥‡à¤¶à¤¶à¤µà¥à¤¦ इमेल गराइ पाउन सकà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤›à¥¤
-तपाईले आफà¥à¤¨à¥‹ वासà¥à¤¤à¤¾à¤µà¤¿à¤• परिचय नखà¥à¤²à¤¾à¤‡à¤•à¤¨ वारà¥à¤¤à¤¾à¤²à¤¾à¤ª पृषà¥à¤  पà¥à¤°à¤¯à¥‹à¤— गरेर अरà¥à¤²à¥‡ तपाईà¤à¤¸à¤à¤— समà¥à¤ªà¤°à¥à¤• गरà¥à¤¨ पाउने गरà¥à¤¨ सकà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤› ।',
+'prefs-help-email' => 'इमेल ठेगाना à¤à¤šà¥à¤›à¤¿à¤• हो, तर पà¥à¤°à¤µà¥‡à¤¶ शवà¥à¤¦à¤•à¥‹ पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¨à¤¾à¤•à¥‹ लागि आवशà¥à¤¯à¤•à¤¤à¤¾ छ, के तपाईंले पà¥à¤°à¤µà¥‡à¤¶ शवà¥à¤¦ भà¥à¤²à¥à¤¨à¥ हà¥à¤¨à¥à¤¥à¥à¤¯à¥‹à¥¤',
+'prefs-help-email-others' => 'तपाईंले यो पनि चयन गरà¥à¤¨ सकà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤› कि अरà¥à¤¹à¤°à¥à¤²à¥‡ तपाईंको परिचय नपाई तपाईंसित तपाईंको पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ अथवा वारà¥à¤¤à¤¾à¤²à¤¾à¤ª पृषà¥à¤ à¤•à¥‹ माधà¥à¤¯à¤®à¤²à¥‡ समà¥à¤ªà¤°à¥à¤• राखà¥à¤¨à¥ ।',
'prefs-help-email-required' => 'इमेल ठेगामा चाहिनà¥à¤› ।',
'prefs-info' => 'साधारण जानकारी',
'prefs-i18n' => 'अनà¥à¤¤à¤°à¥à¤°à¤¾à¤·à¥à¤Ÿà¥à¤°à¤¿à¤¯à¤•à¤°à¤£',
@@ -1259,15 +1292,15 @@ HTML टà¥à¤¯à¤¾à¤—हरॠजाà¤à¤šà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।',
'right-userrights' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¤¾ अधिकारहरॠसमà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥‡',
'right-userrights-interwiki' => 'अरॠविकिहरà¥à¤®à¤¾ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤¹à¤°à¥à¤•à¥‹ अधिकार समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥‡',
'right-siteadmin' => 'डेटाबेसको तालà¥à¤šà¤¾à¤®à¤¾à¤°à¥à¤¨à¥‡ र तालà¥à¤šà¤¾à¤–ोलà¥à¤¨à¥‡',
-'right-reset-passwords' => 'अरॠपà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ पà¥à¤°à¤µà¥‡à¤¶à¤¶à¤µà¥à¤¦ पà¥à¤¨à¤°à¥à¤ªà¥à¤°à¤µà¤¿à¤·à¥à¤ à¥€à¤—रà¥à¤¨à¥‡',
'right-override-export-depth' => 'गहिराइ ५ समà¥à¤®à¤•à¥‹ लिंकगरिà¤à¤•à¤¾ पृषà¥à¤ à¤¹à¤°à¥ सहित निरà¥à¤¯à¤¾à¤¤ गरà¥à¤¨à¥‡',
'right-sendemail' => 'अनà¥à¤¯ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤¹à¤°à¥à¤²à¤¾à¤ˆ इमेल गरà¥à¤¨à¥‡',
# User rights log
-'rightslog' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ अधिकार लग',
-'rightslogtext' => 'यो पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ अधिकारहरà¥à¤•à¥‹ परिवरà¥à¤¤à¤¨ लग हो ।',
-'rightslogentry' => '$1 समूह सदसà¥à¤¯à¤¾à¤¤à¤¾ $2 बाट $3 मा परिवरà¥à¤¤à¤¨ गरिà¤à¤•à¥‹ छ',
-'rightsnone' => '(कà¥à¤¨à¥ˆà¤ªà¤¨à¤¿ होइन)',
+'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' => 'यो पृषà¥à¤  पढà¥à¤¨à¥‡',
@@ -1393,7 +1426,7 @@ HTML टà¥à¤¯à¤¾à¤—हरॠजाà¤à¤šà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।',
'illegalfilename' => 'फाइल नाम "$1"मा तà¥à¤¯à¤¸à¥à¤¤à¤¾ बरà¥à¤£à¤¹à¤°à¥ छनॠजसलाई पृषà¥à¤ à¤•à¥‹ शीरà¥à¤·à¤•à¤•à¥‹ रà¥à¤ªà¤®à¤¾ पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥‡ अनà¥à¤®à¤¤à¤¿ छैन।
कृपया फाइललाई नयाठनाम दिà¤à¤° पà¥à¤¨à¤ƒ उरà¥à¤§à¥à¤µà¤­à¤°à¤£à¤•à¥‹à¤²à¤¾à¤—ि पà¥à¤°à¤¯à¤¾à¤¸ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤',
'badfilename' => 'फाइलको नाम "$1"मा सारियो।',
-'filetype-mime-mismatch' => 'फ़ाइल à¤à¤•à¥à¤¸à¤Ÿà¥‡à¤‚शन MIME पà¥à¤°à¤•à¤¾à¤°à¤¸à¤¿à¤¤ मेल खाà¤à¤¦à¥ˆà¤¨à¥¤',
+'filetype-mime-mismatch' => '".$1" फाइल विसà¥à¤¤à¤¾à¤° पाइà¤à¤•à¥‹ फाइल ($2)को MIME पà¥à¤°à¤•à¤¾à¤°à¤¸à¤¿à¤¤ मेल खाà¤à¤¦à¥ˆà¤¨à¥¤',
'filetype-badmime' => 'MIME "$1" पà¥à¤°à¤•à¤¾à¤°à¤•à¥‹ फाइल उरà¥à¤§à¥à¤µà¤­à¤°à¤£ गरà¥à¤¨à¥‡ अनà¥à¤®à¤¤à¤¿ छैन।',
'filetype-bad-ie-mime' => "यो फाइल उरà¥à¤§à¥à¤µà¤­à¤°à¤£ गरà¥à¤¨ सकिà¤à¤¨ किनभनें '''इणà¥à¤Ÿà¤°à¤¨à¥‡à¤Ÿ à¤à¤•à¥à¤¸à¥à¤ªà¥à¤²à¥‹à¤°à¤°'''ले यस फाइललाई \"\$1\" बतायो जसलाई संभावित खतरनाक पà¥à¤°à¤•à¤¾à¤°à¤•à¥‹ फाइल मानियो।",
'filetype-unwanted-type' => "'''\".\$1\"''' फाइल नचाहिने पà¥à¤°à¤•à¤¾à¤°à¤•à¥‹ फाइल हो।
@@ -1416,6 +1449,7 @@ HTML टà¥à¤¯à¤¾à¤—हरॠजाà¤à¤šà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।',
'emptyfile' => 'तपाईले उरà¥à¤§à¥à¤µà¤­à¤°à¤£ गरà¥à¤¨à¥à¤­à¤à¤•à¥‹ फाइल रितà¥à¤¤à¥‹ छ।
यो फाइलनाम गलत राखिà¤à¤•à¥‹ कारणले भà¤à¤•à¥‹ हà¥à¤¨à¤¸à¤•à¥à¤›
यो फाइल साचà¥à¤šà¥ˆ उरà¥à¤§à¥à¤µà¤­à¤°à¤£ गरà¥à¤¨à¥‡à¤•à¥à¤°à¤¾à¤®à¤¾ निशà¥à¤šà¤¿à¤¤ हà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।',
+'windows-nonascii-filename' => 'विशेष वरà¥à¤£ सहितका फाइलनामहरॠयस विकिदà¥à¤µà¤¾à¤°à¤¾ समरà¥à¤¥à¤¿à¤¤ छैननॠ।',
'fileexists-extension' => "यहि नामको à¤à¤‰à¤Ÿà¤¾ फाइल पहिलेदेखि नैं छ: [[$2|thumb]]
* उरà¥à¤§à¥à¤µà¤­à¤°à¤£ हà¥à¤à¤¦à¥ˆ गरेको पाइलको नाम: '''<tt>[[:$1]]</tt>'''
* पहिलेदेखि नैं भà¤à¤•à¥‹ पाइअलको नाम: '''<tt>[[:$2]]</tt>'''
@@ -1442,10 +1476,6 @@ HTML टà¥à¤¯à¤¾à¤—हरॠजाà¤à¤šà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।',
'upload-description' => 'फाइल वरà¥à¤£à¤¨',
'upload-options' => 'उरà¥à¤§à¥à¤µà¤­à¤°à¤£ विकलà¥à¤ªà¤¹à¤°à¥',
'watchthisupload' => 'यो पृषà¥à¤  निगरानी गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
-'upload-wasdeleted' => "'''चेतावनी: तपाईं अघिबाट मेटिà¤à¤•à¥‹ फाइल उरà¥à¤§à¥à¤µà¤­à¤°à¤£ गरà¥à¤¨à¥à¤¹à¥à¤à¤¦à¥ˆà¤›'''
-
-तपाईंको विचारमा के यो उचित छ कि यसको उरà¥à¤§à¥à¤µà¤­à¤°à¤£ जारी राखियोसà¥,
-यस फाइलको मेटिà¤à¤•à¥‹ लग सà¥à¤µà¤¿à¤§à¤¾à¤•à¥‹ निमà¥à¤¤à¤¿ यहाठदिइà¤à¤•à¥‹à¤› :",
'upload-success-subj' => 'उरà¥à¤§à¥à¤µà¤­à¤°à¤£ सफल',
'upload-success-msg' => '[$2]बाट तà¥à¤ªà¤¾à¤ˆà¤‚को उरà¥à¤§à¥à¤µà¤­à¤°à¤£ सफल भयो। तà¥à¤¯à¥‹ यहाठपाउन सकिनेछ: [[:{{ns:file}}:$1]]',
'upload-failure-subj' => 'उरà¥à¤§à¥à¤µà¤­à¤°à¤£ समसà¥à¤¯à¤¾',
@@ -1462,6 +1492,22 @@ $1',
'upload-unknown-size' => 'अजà¥à¤žà¤¾à¤¤ आकार',
'upload-http-error' => 'HTTP तà¥à¤°à¥à¤Ÿà¤¿ भयो: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'ZIP परीकà¥à¤·à¤£à¤•à¥‹ लागि फाइल खोलà¥à¤¦à¤¾ à¤à¤• तà¥à¤°à¥à¤Ÿà¥€ भेटीयो ।',
+'zip-wrong-format' => 'खà¥à¤²à¤¾à¤‡à¤à¤•à¥‹ फाइल ZIP फाइल हैन ।',
+'zip-bad' => 'यो फाइल बिगà¥à¤°à¥€à¤à¤•à¥‹ अवसà¥à¤¥à¤¾à¤®à¤¾ छ या खोलà¥à¤¨ नसकिने ZIP फाइल हो
+सà¥à¤°à¤•à¥à¤·à¤¾à¤•à¥‹ कारणले गरà¥à¤¦à¤¾ रामà¥à¤°à¤°à¥€ जाà¤à¤š गरà¥à¤¨ सकिà¤à¤¨ ।',
+'zip-unsupported' => 'यो फाइल à¤à¤• ZIP फाइल हो र यसले पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥‡ गà¥à¤£à¤¹à¤°à¥ ,मेडियाविकिदà¥à¤µà¤¾à¤°à¤¾ समरà¥à¤¥à¤¿à¤¤ छैन ।
+सà¥à¤°à¤•à¥à¤·à¤¾à¤•à¥‹ कारणले रामà¥à¤°à¤°à¥€ जाà¤à¤š गरà¥à¤¨ सकिà¤à¤¨ ।',
+
+# Special:UploadStash
+'uploadstash' => 'उरà¥à¤§à¥à¤µà¤­à¤°à¤£ सà¥à¤Ÿà¤¾à¤¶',
+'uploadstash-clear' => 'सà¥à¤Ÿà¤¾à¤¶ गरिà¤à¤•à¤¾ फाइल हटाउने',
+'uploadstash-nofiles' => 'तपाईका कà¥à¤¨à¥ˆ पनि सà¥à¤Ÿà¤¾à¤¶ गरिà¤à¤•à¤¾ फाइलहरॠछैननॠ।',
+'uploadstash-badtoken' => 'दिइà¤à¤•à¥‹ कारà¥à¤¯ असफलभयो , तपाईको समà¥à¤ªà¤¾à¤¦à¤¨ अधिकार समापà¥à¤¤ भयो । पà¥à¤¨: पà¥à¤°à¤¯à¤¾à¤¸ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।',
+'uploadstash-errclear' => 'फाइल हटाउने कारà¥à¤¯ असफल भयो ।',
+'uploadstash-refresh' => 'फाइलहरà¥à¤•à¥‹ सà¥à¤šà¥€ ताजा परà¥à¤¨à¥‡',
+
# img_auth script messages
'img-auth-accessdenied' => 'पहà¥à¤à¤š असà¥à¤µà¥€à¤•à¤¾à¤°',
'img-auth-notindir' => 'अनà¥à¤°à¥‹à¤§ गरिà¤à¤•à¥‹ बाटो(पाथ) उरà¥à¤§à¥à¤µà¤­à¤°à¤£ भनि तोकिà¤à¤•à¥‹ बाटोमा परà¥à¤¦à¥ˆà¤¨ ।',
@@ -1518,7 +1564,6 @@ $1',
'linkstoimage' => 'यस फाइलमा निमà¥à¤¨{{PLURAL:$1|पृषà¥à¤  जोडिनà¥à¤›|$1 पृषà¥à¤ à¤¹à¤°à¥ जोडिनà¥à¤›à¤¨}}:',
'nolinkstoimage' => 'यो फाईलसंग लिंकभà¤à¤•à¥‹ कà¥à¤¨à¥ˆ पृषà¥à¤  छैन.',
'morelinkstoimage' => 'हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ [[Special:WhatLinksHere/$1|थप लिंकहरà¥]] यो फाइलको।',
-'redirectstofile' => 'यहाठनिमà¥à¤¨ {{PLURAL:$1|फाइल|$1 फाइलहरà¥}} रिडाइरेकà¥à¤Ÿ हà¥à¤¨à¥à¤›:',
'sharedupload' => 'यो फाइल $1 को हो र अनà¥à¤¯ परियोजनामा पà¥à¤°à¤¯à¥‹à¤— गरिà¤à¤•à¥‹ हà¥à¤¨à¤¸à¤•à¥à¤›à¥¤',
'filepage-nofile' => 'यस नामको फाइल छैन।',
'filepage-nofile-link' => 'यस नामको फाइल छैन तर तपाईं [$1 यो उरà¥à¤§à¥à¤µà¤­à¤°à¤£ गरà¥à¤¨ सकà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤›].',
@@ -1597,10 +1642,11 @@ $1',
'disambiguations' => 'बहà¥à¤µà¤¿à¤•à¤²à¥à¤ªà¥€ पृषà¥à¤ à¤¹à¤°à¥',
'disambiguationspage' => 'Template:बहà¥à¤µà¤¿à¤•à¤²à¥à¤ª',
-'doubleredirects' => 'दोहोरो अनà¥à¤ªà¥à¤°à¥‡à¤·à¤£',
-'double-redirect-fixed-move' => '[[$1]] सारिà¤à¤•à¥‹ छ।
+'doubleredirects' => 'दोहोरो अनà¥à¤ªà¥à¤°à¥‡à¤·à¤£',
+'double-redirect-fixed-move' => '[[$1]] सारिà¤à¤•à¥‹ छ।
यसले [[$2]] तिर अनà¥à¤ªà¥à¤°à¥‡à¤·à¤¿à¤¤ गरà¥à¤¦à¤›à¥¤',
-'double-redirect-fixer' => 'अनà¥à¤ªà¥à¤°à¥‡à¤·à¤£ तय गरà¥à¤¨à¥‡',
+'double-redirect-fixed-maintenance' => '[[$1]]बाट [[$2]]मा दोहोरो अनà¥à¤ªà¥à¤°à¥‡à¤·à¤£ तय गरिंदै।',
+'double-redirect-fixer' => 'अनà¥à¤ªà¥à¤°à¥‡à¤·à¤£ तय गरà¥à¤¨à¥‡',
'brokenredirects' => 'टà¥à¤Ÿà¥‡à¤•à¤¾ रिडाइरेकà¥à¤Ÿà¤¹à¤°à¥‚',
'brokenredirectstext' => 'तलका लिङà¥à¤•à¤¹à¤°à¥ ले हà¥à¤¦à¥ˆ नभà¤à¤•à¤¾ पृषà¥à¤ à¤¹à¤°à¤°à¤¸à¤à¤— जोडिनà¥à¤›à¤¨à¥:',
@@ -1778,6 +1824,10 @@ $1',
'noemailtext' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¥‡ सही ई-मेल ठेगाना दरà¥à¤¶à¤¾à¤à¤•à¥‹ छैन।',
'nowikiemailtitle' => 'ई-मेलको अनà¥à¤®à¤¤à¤¿ छैन',
'nowikiemailtext' => 'यी पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¥‡ अरॠपà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤¹à¤°à¥à¤¬à¤¾à¤Ÿ ई-मेल सà¥à¤µà¥€à¤•à¤¾à¤° नगरà¥à¤¨à¥‡ छनोट गरेकाछनà¥à¥¤',
+'emailnotarget' => 'पà¥à¤°à¤¾à¤ªà¥à¤¤à¤•à¤°à¥à¤¤à¤¾à¤•à¥‹ रà¥à¤ªà¤®à¤¾ नभà¤à¤•à¥‹ अथवा अमानà¥à¤¯ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¥¤',
+'emailtarget' => 'पà¥à¤°à¤¾à¤ªà¥à¤¤à¤•à¤°à¥à¤¤à¤¾à¤•à¥‹ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम हालà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
+'emailusername' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾-नाम:',
+'emailusernamesubmit' => 'बà¥à¤à¤¾à¤‰à¤¨à¥‡',
'email-legend' => '{{SITENAME}}का अरà¥à¤•à¤¾ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¤¾à¤ˆ ई-मेल पठाउने',
'emailfrom' => 'बाट:',
'emailto' => 'लाई:',
@@ -1803,10 +1853,10 @@ $1',
'watchlistanontext' => 'कृपया तपाईको निगरानी सà¥à¤šà¥€ हेरà¥à¤¨ या समà¥à¤ªà¤¾à¤¦à¤¨à¤—रà¥à¤¨ $1 गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।',
'watchnologin' => 'पà¥à¤°à¤µà¥‡à¤¶ (लग ईन) नगरिà¤à¤•à¥‹',
'watchnologintext' => 'आफà¥à¤¨à¥‹ अवलोकनलाइ परिवरà¥à¤¤à¤¨ गरà¥à¤¨à¤•à¥‹ लागि त तपाइ यसमा [[Special:UserLogin|पà¥à¤°à¤µà¥‡à¤¶(लगइन)]] गरà¥à¤¨à¥à¤ªà¤°à¥à¤›à¥¤',
-'addedwatch' => 'अवलोकनसूची मा थपियो',
+'addwatch' => 'निगरानी सà¥à¤šà¥€à¤®à¤¾ थपà¥à¤¨à¥‡',
'addedwatchtext' => '"[[:$1]]" पृषà¥à¤  [[Special:Watchlist|अवलोकनसूची]]मा थपियो
यो पृषà¥à¤  र यससित समà¥à¤¬à¤¦à¥à¤§ वारà¥à¤¤à¤¾à¤²à¤¾à¤ª पृषà¥à¤ à¤®à¤¾ भविषà¥à¤¯à¤®à¤¾ हà¥à¤¨à¥‡ परिवरà¥à¤¤à¤¨ सूचिबदà¥à¤§ गरिनेछ र यो पृषà¥à¤  [[Special:RecentChanges|नयाठपरिवरà¥à¤¤à¤¨à¤¹à¤°à¥]]मा छानà¥à¤¨ सजिलोकोलागि गाढा अकà¥à¤·à¤°à¤®à¤¾ देखा परà¥à¤¨à¥‡à¤›à¥¤',
-'removedwatch' => 'निगरानी सूचीबाट हटाइयो',
+'removewatch' => 'निगरानी सà¥à¤šà¥€à¤¬à¤¾à¤Ÿ हटाउने',
'removedwatchtext' => 'पृषà¥à¤  "[[:$1]]" [[Special:Watchlist|तपाईको निगरानी सूची]]बाट हटाइà¤à¤•à¥‹ छ।',
'watch' => 'अवलोकन',
'watchthispage' => 'यो पृषà¥à¤  अवलोकन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
@@ -1827,8 +1877,9 @@ $1',
'watchlist-options' => 'निगरानि सूची विकलà¥à¤ª',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'निगरानी गरà¥à¤¦à¥ˆ...',
-'unwatching' => 'निगरानीबाट हटाउà¤à¤¦à¥ˆ...',
+'watching' => 'निगरानी गरà¥à¤¦à¥ˆ...',
+'unwatching' => 'निगरानीबाट हटाउà¤à¤¦à¥ˆ...',
+'watcherrortext' => ' "$1"को लागि निगरानी सà¥à¤šà¥€ परिवरà¥à¤¤à¤¨ गरà¥à¤¨à¥‡ कà¥à¤°à¤®à¤®à¤¾ à¤à¤• तà¥à¤°à¥à¤Ÿà¥€ आइपरेको छ। \\',
'enotif_mailer' => '{{SITENAME}} जानकारी पà¥à¤°à¥‡à¤·à¤•',
'enotif_reset' => 'सबै पृषà¥à¤ à¤¹à¤°à¥ भनी दाग दिने',
@@ -1860,16 +1911,16 @@ $NEWPAGE
तपाईंको मितà¥à¤° {{SITENAME}} सूचना पà¥à¤°à¤£à¤¾à¤²à¥€
--
इमेल सूचना वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾ परिवरà¥à¤¤à¤¨ गरà¥à¤¨, जानà¥à¤¹à¥‹à¤¸à¥
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
निगरानी सूची वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¿à¤¤ गरà¥à¤¨, जानà¥à¤¹à¥‹à¤¸à¥
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
निगरानी सूची मेटà¥à¤¨, जानà¥à¤¹à¥‹à¤¸à¥
$UNWATCHURL
पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¤¿à¤¯à¤¾ र अनà¥à¤¯ सहयोगको निमà¥à¤¤à¤¿:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'पृषà¥à¤  मेटà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
@@ -1885,7 +1936,7 @@ $UNWATCHURL
'confirmdeletetext' => 'तपाई यो पृषà¥à¤  र यसको इतिहास मेटà¥à¤¨ गइरहनॠभà¤à¤•à¥‹à¤›à¥¤ कृपया पà¥à¤·à¥à¤Ÿà¤¿ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ कि [[{{MediaWiki:Policy-url}}|नियम]] मà¥à¤¤à¤¾à¤¬à¤¿à¤• तपाईं मेटà¥à¤¨ गइरहनॠभà¤à¤•à¥‹à¤›à¥¤',
'actioncomplete' => 'काम सकियो',
'actionfailed' => 'कारà¥à¤¯ असफल',
-'deletedtext' => '"<nowiki>$1</nowiki>" मेटिà¤à¤•à¥‹ छ।
+'deletedtext' => '"$1" मेटिà¤à¤•à¥‹ छ।
हालै हटाइà¤à¤•à¥‹ सूची $2 मा हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ ।',
'deletedarticle' => '"[[$1]]" मेटियो',
'suppressedarticle' => '"[[$1]]"लाई दमन गरियो \\',
@@ -1933,7 +1984,7 @@ proceed with caution.',
'protect_expiry_invalid' => 'सकिने समयावधि अमानà¥à¤¯ ।',
'protect_expiry_old' => 'समापà¥à¤¤à¥€ समय बितिसकà¥à¤¯à¥‹ ।',
'protect-unchain-permissions' => 'आगामी सà¥à¤°à¤•à¥à¤·à¤¾ विकलà¥à¤ªà¤¹à¤°à¥ खोलà¥à¤¨à¥‡',
-'protect-text' => "तपाईठयहाठ'''<nowiki>$1</nowiki>''' पृषà¥à¤ à¤•à¥‹ सà¥à¤°à¤•à¥à¤·à¤¾ सà¥à¤¤à¤° हेरà¥à¤¨ र परिवरà¥à¤¤à¤¨ गरà¥à¤¨ सकà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤› ।",
+'protect-text' => "तपाईठयहाठ'''$1''' पृषà¥à¤ à¤•à¥‹ सà¥à¤°à¤•à¥à¤·à¤¾ सà¥à¤¤à¤° हेरà¥à¤¨ र परिवरà¥à¤¤à¤¨ गरà¥à¤¨ सकà¥à¤¨à¥à¤¹à¥à¤¨à¥à¤› ।",
'protect-locked-access' => "तपाईà¤à¤•à¥‹ खातालाई पृषà¥à¤ à¤•à¥‹ सà¥à¤°à¤•à¥à¤·à¤¾ सà¥à¤¤à¤°à¤¹à¤°à¥‚ परिवरà¥à¤¤à¤¨ गरà¥à¤¨à¥‡ अनà¥à¤®à¤¤à¤¿ छैन ।
'''$1''पृषà¥à¤ à¤•à¥‹ हालको सà¥à¤¥à¤¿à¤¤à¤¿ निमà¥à¤¨ छ :",
'protect-cascadeon' => 'हालमा यो पृषà¥à¤  सà¥à¤°à¤•à¥à¤·à¤¿à¤¤ गरिà¤à¤•à¥‹à¤› किन कि यसमा निमà¥à¤¨ {{PLURAL:$1|पृषà¥à¤ , जसको|पृषà¥à¤ à¤¹à¤°à¥, जसको}} सà¥à¤°à¤•à¥à¤·à¤¾à¤®à¤¾ वà¥à¤¯à¤¾à¤ªà¤•à¤¤à¤¾ कायम गरिà¤à¤•à¥‹à¤›à¥¤
@@ -1984,6 +2035,8 @@ proceed with caution.',
'undeletepagetext' => 'निमà¥à¤¨à¤²à¤¿à¤–ित {{PLURAL:$1|पृषà¥à¤  मेटिà¤à¤•à¥‹à¤› तर पूरालेखभितà¥à¤°à¥ˆ छ|$1 पृषà¥à¤  मेटिà¤à¤•à¤¾à¤›à¤¨à¥ तर पूरालेखभितà¥à¤°à¥ˆ छनà¥}} र पà¥à¤¨à¤°à¥à¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤ गरà¥à¤¨ सकिनà¥à¤›à¥¤
पूरालेखको समय-समयमा सफाई गरà¥à¤¨ सकिनà¥à¤›à¥¤',
'undelete-fieldset-title' => 'पà¥à¤¨à¤°à¤¾à¤µà¤²à¥‹à¤•à¤¨à¤¹à¤°à¥ पूरà¥à¤µà¤¾à¤µà¤¸à¥à¤¥à¤¾à¤®à¤¾ लà¥à¤¯à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸à¥',
+'undeleteextrahelp' => "यस पृषà¥à¤ à¤• पà¥à¤°à¥ˆ इतिहास पूरà¥à¤µà¤°à¥à¤ªà¤®à¤¾ फरà¥à¤•à¤¾à¤‰à¤¨à¤•à¥‹ लागि छनोट सनà¥à¤¦à¥à¤•à¤¹à¤°à¥à¤²à¤¾à¤ˆ नछानी '''''{{int:undeletebtn}}''''' मा कà¥à¤²à¤¿à¤• गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥¤
+अनà¥à¤•à¥à¤² पूरà¥à¤µà¤°à¥à¤ªà¤®à¤¾ फरà¥à¤•à¤¾à¤‰à¤¨à¥‡ कारà¥à¤¯ गरà¥à¤¨ छनौट चाहिà¤à¤•à¤¾ संसà¥à¤•à¤°à¤£à¤• सनà¥à¤¦à¥à¤•à¤¹à¤°à¥à¤²à¤¾à¤ˆ छानेर '''''{{int:undeletebtn}}'''''मा कà¥à¤²à¤¿à¤• गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥¤",
'undeleterevisions' => '$1 {{PLURAL:$1|संशोधन|संशोधनहरà¥}} संगà¥à¤°à¤¹à¤¿à¤¤',
'undeletehistory' => 'यदि कà¥à¤¨à¥ˆ पृषà¥à¤Ÿà¤²à¤¾à¤ˆ पà¥à¤¨: सà¥à¤¥à¤¾à¤ªà¤¨ गराउनॠभयो भने समà¥à¤ªà¥‚रà¥à¤£ संसà¥à¤•à¤°à¤£à¤¹à¤°à¥ इतिहासमा पà¥à¤¨:सà¥à¤¥à¤¾à¤ªà¤¨ हà¥à¤¨à¥‡à¤›à¤¨à¥ ।
यदि यसै नामबाट नयाठपृषà¥à¤  निरà¥à¤®à¤¾à¤£ भैसकेको छनॠभने पà¥à¤¨: सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ संसà¥à¤•à¤°à¤£à¤¹à¤°à¥ पूरà¥à¤µ इतिहासको रà¥à¤ªà¤®à¤¾ सà¥à¤¥à¤¾à¤ªà¤¿à¤¤ हà¥à¤¨à¥‡à¤›à¤¨à¥ ।',
@@ -2028,9 +2081,12 @@ $3दà¥à¤µà¤¾à¤°à¤¾ $1को ($4को समय $5 मा) मेटाइà¤
'undelete-show-file-submit' => 'हो',
# Namespace form on various pages
-'namespace' => 'नामसà¥à¤¥à¤¾à¤¨:',
-'invert' => 'रोजाइ उलà¥à¤Ÿà¤¾à¤‰à¤¨à¥‡',
-'blanknamespace' => '(मà¥à¤–à¥à¤¯)',
+'namespace' => 'नामसà¥à¤¥à¤¾à¤¨:',
+'invert' => 'रोजाइ उलà¥à¤Ÿà¤¾à¤‰à¤¨à¥‡',
+'tooltip-invert' => 'छानिà¤à¤•à¤¾ नेमसà¥à¤ªà¥‡à¤¸à¤¹à¤°à¥à¤®à¤¾ रहेका पृषà¥à¤ à¤¹à¤°à¥à¤®à¤¾ गरिà¤à¤•à¤¾ परिवरà¥à¤¤à¤¨à¤¹à¤°à¥ लà¥à¤•à¤¾à¤‰à¤¨ यसमा चिनो लगाउनà¥à¤¹à¥‹à¤¸à¥ (र समà¥à¤µà¤¨à¥à¤§à¤¿à¤¤ नेमसà¥à¤ªà¥‡à¤¸ यदि छानिà¤à¤•à¤¾ भà¤)',
+'namespace_association' => 'समà¥à¤¬à¤¨à¥à¤§à¤¿à¤¤ नेमसà¥à¤ªà¥‡à¤¸',
+'tooltip-namespace_association' => 'वारà¥à¤¤à¤¾à¤²à¤¾à¤ª या विषय नेमसà¥à¤ªà¥‡à¤¸à¤¹à¤°à¥à¤²à¤¾à¤ˆ समà¥à¤µà¤¨à¥à¤§à¤¿à¤¤ नेमसà¥à¤ªà¥‡à¤¸à¤•à¥‹ रà¥à¤ªà¤®à¤¾ लिनको लागि सनà¥à¤¦à¥à¤•à¤®à¤¾ चिनो लगाउनà¥à¤¹à¥‹à¤¸à¥ \\',
+'blanknamespace' => '(मà¥à¤–à¥à¤¯)',
# Contributions
'contributions' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¤¾ योगदानहरू',
@@ -2081,13 +2137,15 @@ $3दà¥à¤µà¤¾à¤°à¤¾ $1को ($4को समय $5 मा) मेटाइà¤
'whatlinkshere-filters' => 'फिलà¥à¤Ÿà¤°à¤¹à¤°à¥‚',
# Block/unblock
+'autoblockid' => 'अटोबà¥à¤²à¤• #$1',
+'block' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¤¾à¤ˆ रोकलगाउने',
+'unblock' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ माथिको पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ हटाउने',
'blockip' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¤¾à¤‡ निषेध गरà¥à¤¨à¥‡',
'blockip-title' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¤¾à¤ˆ रोक लगाउनà¥à¤¹à¥‹à¤¸à¥',
'blockip-legend' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ रोकà¥à¤¨à¥à¤¹à¥‹à¤¸',
'blockiptext' => 'विशेष IP ठेगाना अथवा पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¤¾à¤ˆ रोक लगाउन निमà¥à¤¨ पà¥à¤°à¤ªà¤¤à¥à¤° (form) पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤
यसो गरà¥à¤¨à¥à¤•à¥‹ कारण [[{{MediaWiki:Policy-url}}|नीति]] अनà¥à¤°à¥à¤ª विकिमा गरिने बरà¥à¤¬à¤°à¤¤à¤¾à¤•à¤¾ कारà¥à¤¯ रोकà¥à¤¨à¥ मातà¥à¤° हो।
विशेष कारण देखाउà¤à¤¦à¥ˆ तलको पà¥à¤°à¤ªà¤¤à¥à¤° भरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ (उदाहरण, बरà¥à¤¬à¤°à¤¤à¤¾à¤•à¥‹ कारà¥à¤¯ गरिà¤à¤•à¥‹ पृषà¥à¤  दरà¥à¤¶à¤¾à¤‰à¤à¤¦à¥ˆ)',
-'ipaddress' => 'आई पी ठेगाना',
'ipadressorusername' => ' ip ठेगाना या पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम :',
'ipbexpiry' => 'समापà¥à¤¤à¤¿:',
'ipbreason' => 'कारण:',
@@ -2100,7 +2158,7 @@ $3दà¥à¤µà¤¾à¤°à¤¾ $1को ($4को समय $5 मा) मेटाइà¤
** भय फैलà¥à¤¯à¤¾à¤‰à¤¨à¥‡ वà¥à¤¯à¤µà¤¹à¤¾à¤°/उतà¥à¤ªà¥€à¤¡à¤¼à¤¨ (सताउने कारà¥à¤¯)
** धेरै खाताहरà¥à¤•à¥‹ कोस
** असà¥à¤µà¥€à¤•à¤¾à¤°à¥à¤¯ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम',
-'ipbanononly' => 'अजà¥à¤žà¤¾à¤¤ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¤¾à¤ˆ मातà¥à¤° रोकà¥à¤¨à¥‡',
+'ipb-hardblock' => 'यस आई पी ठेगानाबाट पà¥à¤°à¤µà¥‡à¤¶ गरेका पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¤¾à¤ˆ संपादन गरà¥à¤¨ नदिने',
'ipbcreateaccount' => 'खाता सिरà¥à¤œà¤¨à¤¾ रोकà¥à¤¨à¥à¤¹à¥‹à¤¸',
'ipbemailban' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¤¾à¤ˆ इमेल पठाउनबाट रोकà¥à¤¨à¥‡',
'ipbenableautoblock' => 'यस पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¥‡ पà¥à¤°à¤¯à¥‹à¤— गरेको अनà¥à¤¤à¤¿à¤® IP ठेगानालाई सà¥à¤µà¤¤à¤ƒ रोकà¥à¤¨à¥‡, र पछाड़िका अरॠपनि IP ठेगानालाई जहाà¤à¤¬à¤¾à¤Ÿ तिनीहरà¥à¤²à¥‡ समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥‡ पà¥à¤°à¤¯à¤¾à¤¸ गरà¥à¤›à¤¨à¥à¥¤',
@@ -2111,12 +2169,15 @@ $3दà¥à¤µà¤¾à¤°à¤¾ $1को ($4को समय $5 मा) मेटाइà¤
'ipbotherreason' => 'अनà¥à¤¯ / थप कारणहरà¥:',
'ipbhidename' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ नाम समà¥à¤ªà¤¾à¤¦à¤¨à¤¬à¤¾à¤Ÿ र सूचीबाट हटाउने',
'ipbwatchuser' => 'यो पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ पà¥à¤°à¤¯à¤ªà¥‹à¤—करà¥à¤¤à¤¾ र वारà¥à¤¤à¤²à¤¾à¤ª पृषà¥à¤  हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
-'ipballowusertalk' => 'निषेधित हà¥à¤à¤¦à¤¾ पनि यो पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ आफà¥à¤¨à¥‹ वारà¥à¤¤à¤¾à¤²à¤¾à¤ª पृषà¥à¤  समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨ दिने',
+'ipb-disableusertalk' => 'यस पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¤¾à¤ˆ निषेधित समयमा आफà¥à¤¨à¥ˆ वारà¥à¤¤à¤¾à¤²à¤¾à¤ª पृषà¥à¤  समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨ नदिने',
'ipb-change-block' => 'निमà¥à¤® सà¥à¤¥à¤¿à¤¤à¥€à¤®à¤¾ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¤¾à¤ˆ पà¥à¤¨: निषेध गरà¥à¤¨à¥‡',
+'ipb-confirm' => 'रोक सà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ गरà¥à¤¨à¥‡',
'badipaddress' => 'अमानà¥à¤¯ IP ठेगाना',
'blockipsuccesssub' => 'निषेधकारà¥à¤¯ सफल भयो',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] निषेधगरिà¤à¤•à¥‹ छ।<br />
पà¥à¤¨à¤°à¤¾à¤µà¤²à¤•à¥‹à¤¨à¤•à¥‹ लागि [[Special:IPBlockList|IP निषेध सूची]] हेरà¥à¤¨à¤¹à¥‹à¤¸à¥ ।',
+'ipb-blockingself' => 'तपाईंले आफैंलाई रोक लगाउन गइरहनॠभà¤à¤•à¥‹ छ! के तपाईं पकà¥à¤•à¤¾ यसो गरà¥à¤¨ चाहनà¥à¤¹à¥à¤¨à¥à¤›?',
+'ipb-confirmhideuser' => 'तपाईंले तà¥à¤¯à¤¸à¥à¤¤à¥‹ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¤¾à¤ˆ रोक लगाउन गइरहनॠभà¤à¤•à¥‹ छ जसको "पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ लà¥à¤•à¤¾à¤‰à¤¨à¥‡" सकà¥à¤°à¤¿à¤¯ बनाइà¤à¤•à¥‹ छ। यसो गरà¥à¤¦à¤¾ सबै लग सूचीहरà¥à¤¬à¤¾à¤Ÿ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ नाम गायब हà¥à¤¨à¥‡à¤›à¥¤ के तपाईं पकà¥à¤•à¤¾ यसो गरà¥à¤¨ चाहनà¥à¤¹à¥à¤¨à¥à¤›?',
'ipb-edit-dropdown' => 'निषेध कारण समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
'ipb-unblock-addr' => '$1 निषेध खारेज गरà¥à¤¨à¥‡',
'ipb-unblock' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ वा IP माथिको निषेध खारेज गरà¥à¤¨à¥‡',
@@ -2126,17 +2187,23 @@ $3दà¥à¤µà¤¾à¤°à¤¾ $1को ($4को समय $5 मा) मेटाइà¤
'unblockiptext' => 'IP ठेगाना अथवा पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤®à¤¾à¤¥à¤¿ पहिले लगाइà¤à¤•à¥‹ रोक फà¥à¤•à¥à¤µà¤¾ गरà¥à¤¨ तलको पà¥à¤°à¤ªà¤¤à¥à¤° पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥à¥¤',
'ipusubmit' => 'यो रोक हटाउने',
'unblocked' => '[[User:$1|$1]] लाई रोक लगाउने',
+'unblocked-range' => '$1 लाई अनिषेधित गरियो',
'unblocked-id' => '$1 रोक हटाइà¤à¤•à¥‹ छ',
+'blocklist' => 'निषेधित पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤¹à¤°à¥',
'ipblocklist' => 'निषेधित पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤¹à¤°à¥',
'ipblocklist-legend' => 'रोकलगाइà¤à¤•à¤¾ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤¹à¤°à¥ खोजà¥à¤¨à¥à¤¹à¥‹à¤¸',
-'ipblocklist-username' => ' ip ठेगाना वा पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नाम:',
-'ipblocklist-sh-userblocks' => '$1 खाता रोक लगाइयो',
-'ipblocklist-sh-tempblocks' => '$1असà¥à¤¥à¤¾à¤ˆ रोक',
-'ipblocklist-sh-addressblocks' => 'à¤à¤• $1 IP निषेध',
+'blocklist-userblocks' => 'खाता निषेधित लà¥à¤•à¤¾à¤‰à¤¨à¥‡',
+'blocklist-tempblocks' => 'असà¥à¤¥à¤¾à¤ˆ रोकहरॠलà¥à¤•à¤¾à¤‰à¤¨à¥‡',
+'blocklist-addressblocks' => 'à¤à¤•à¥à¤²à¥‹ आई पी रोक लà¥à¤•à¤¾à¤‰à¤¨à¥‡',
+'blocklist-timestamp' => 'समयछाप',
+'blocklist-target' => 'लकà¥à¤·à¥à¤¯',
+'blocklist-expiry' => 'सकिनेछ',
+'blocklist-by' => 'पà¥à¤°à¤¬à¤¨à¥à¤§à¤•à¤²à¤¾à¤ˆ रोक लागाइà¤à¤¦à¥ˆ',
+'blocklist-params' => 'पारामिटरà¥à¤¸ रोकà¥à¤¨à¥‡',
+'blocklist-reason' => 'कारण',
'ipblocklist-submit' => 'खोजà¥à¤¨à¥‡',
'ipblocklist-localblock' => 'सà¥à¤¥à¤¾à¤¨à¥€à¤¯ रोक',
'ipblocklist-otherblocks' => 'अनà¥à¤¯ {{PLURAL:$1|रोक|रोकहरà¥}}',
-'blocklistline' => '$1, $2 दà¥à¤µà¤¾à¤°à¤¾ रोकियो $3 ($4)',
'infiniteblock' => 'अनिशà¥à¤šà¤¿à¤¤ काल',
'expiringblock' => '$1 को दिन $2 मा सकिनेछ',
'anononlyblock' => 'अजà¥à¤žà¤¾à¤¤à¤¹à¤°à¥ मातà¥à¤°',
@@ -2161,7 +2228,7 @@ $1को बनà¥à¤¦à¥‡à¤œà¤•à¥‹ कारण : "$2" हो',
'reblock-logentry' => '$2 $3 मा सकिने गरि [[$1]] को निषेध सà¥à¤¥à¤¿à¤¤à¤¿ परिवरà¥à¤¤à¤¨ गरिà¤à¤•à¥‹ छ ।',
'blocklogtext' => 'यो लग पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ रोकावट र फà¥à¤•à¥à¤µà¤¾ कारà¥à¤¯à¤¹à¤°à¥à¤•à¥‹ हो।
सà¥à¤µà¤¤à¤ƒ रोकिà¤à¤•à¤¾ आई पी ठेगानाहरॠसूचीमा छैननà¥à¥¤
-वरà¥à¤¤à¤®à¤¾à¤¨à¤•à¤¾ चालू रोक र पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¹à¤°à¥à¤•à¥‹ सूचीकोलागि हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ [[Special:IPBlockList|आई पी निषेध सूची]]।',
+वरà¥à¤¤à¤®à¤¾à¤¨à¤•à¤¾ चालू रोक र पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¹à¤°à¥à¤•à¥‹ सूचीकोलागि हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ [[Special:BlockList|आई पी निषेध सूची]]।',
'unblocklogentry' => '$1 लाई अनिषेधित गरियो',
'block-log-flags-anononly' => 'अजà¥à¤žà¤¾à¤¤ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤¹à¤°à¥ मातà¥à¤°',
'block-log-flags-nocreate' => 'खाता खोलà¥à¤¨ निसà¥à¤•à¥à¤°à¤¿à¤¯ पारिà¤à¤•à¥‹',
@@ -2175,10 +2242,10 @@ $1को बनà¥à¤¦à¥‡à¤œà¤•à¥‹ कारण : "$2" हो',
'ipb_expiry_temp' => 'लà¥à¤•à¤¾à¤‡à¤à¤•à¤¾ पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ नामको रोक सà¥à¤¥à¤¾à¤ˆ हà¥à¤¨ अनिवारà¥à¤¯ छ।',
'ipb_hide_invalid' => 'यो खातालाई दबाउन सकिने छैन; किन कि यसका धेरै समà¥à¤ªà¤¾à¤¦à¤¨à¤¹à¤°à¥ छनà¥à¥¤',
'ipb_already_blocked' => '"$1"लाई पहिले नै रोक लगाइà¤à¤•à¥‹ छ',
-'ipb-needreblock' => '== अघिबाट पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤ ==
-$1लाई अघिबाट नैं पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ लगाइà¤à¤•à¥‹à¤›à¥¤
+'ipb-needreblock' => '$1लाई अघिबाट नैं पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ लगाइà¤à¤•à¥‹à¤›à¥¤
के तपाईं यसको वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤²à¤¾à¤ˆ परिवरà¥à¤¤à¤¨ गरà¥à¤¨ चाहनà¥à¤¹à¥à¤¨à¥à¤›?',
'ipb-otherblocks-header' => 'अरॠ{{PLURAL:$1|रोक|रोकहरà¥}}',
+'unblock-hideuser' => 'यस पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¤¾à¤ˆ रोक फà¥à¤•à¥à¤µà¤¾ गरà¥à¤¨ सकà¥à¤¨à¥ हà¥à¤¨à¥à¤¨, यस पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ नाम लà¥à¤•à¥‡à¤•à¥‹ छ।',
'ipb_cant_unblock' => 'तà¥à¤°à¥à¤Ÿà¥€: रोक आइडी $1 भेटिà¤à¤¨à¥¤ या यो पहिले नै खोलिइसकेको हà¥à¤¨à¤¸à¤•à¥à¤› ।',
'ipb_blocked_as_range' => 'तà¥à¤°à¥à¤Ÿà¥€: IP ठेगाना $1 is लाई सिधै रोकलगाइà¤à¤•à¥‹ छैन र यस रोकलाई खोलà¥à¤¨ मिलà¥à¤¦à¥ˆà¤¨
यो à¤à¤• रेनà¥à¤œ रोक $2, को अनà¥à¤¤à¤°à¥à¤—त रहेको छ जसलाई रोक खोलà¥à¤¨ मिलà¥à¤› ।',
@@ -2212,6 +2279,7 @@ $1लाई अघिबाट नैं पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ लगाà¤
'unlockdbsuccesssub' => 'डेटाबेस तालà¥à¤šà¤¾ हटाइयो',
'unlockdbsuccesstext' => 'डेटाबेसको तालà¥à¤šà¤¾ खोलियो ।',
'databasenotlocked' => 'डेटाबेस तालà¥à¤šà¤¾ मारिइà¤à¤•à¥‹ छैन',
+'lockedbyandtime' => '( {{GENDER:$1|$1}} आधारमा $2 at $3 मा )',
# Move page
'move-page' => ' $1 लाई सारà¥à¤¨à¥‡',
@@ -2305,7 +2373,7 @@ $1लाई अघिबाट नैं पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ लगाà¤
'allmessagesdefault' => 'डिफलà¥à¤Ÿ सनà¥à¤¦à¥‡à¤¶ पाठ',
'allmessagescurrent' => 'वरà¥à¤¤à¤®à¤¾à¤¨ सनà¥à¤¦à¥‡à¤¶ पाठ',
'allmessagestext' => 'यो मीडियाविकि नेमसà¥à¤ªà¥‡à¤¸à¤®à¤¾ पाइने सिसà¥à¤Ÿà¤® सनà¥à¤¦à¥‡à¤¶à¤¹à¤°à¥‚को सूची हो।
-यदि तपाईं वà¥à¤¯à¤¾à¤ªà¤• मीडिया विकि सà¥à¤¥à¤¾à¤¨à¥€à¤¯à¤•à¤°à¤£à¤®à¤¾ योगदान गरà¥à¤¨ चाहनà¥à¤¹à¥à¤¨à¥à¤› भनें कृपया [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]मा र [http://translatewiki.net translatewiki.net]मा जानà¥à¤¹à¥‹à¤¸à¥à¥¤',
+यदि तपाईं वà¥à¤¯à¤¾à¤ªà¤• मीडिया विकि सà¥à¤¥à¤¾à¤¨à¥€à¤¯à¤•à¤°à¤£à¤®à¤¾ योगदान गरà¥à¤¨ चाहनà¥à¤¹à¥à¤¨à¥à¤› भनें कृपया [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation]मा र [//translatewiki.net translatewiki.net]मा जानà¥à¤¹à¥‹à¤¸à¥à¥¤',
'allmessages-filter-legend' => 'फिलà¥à¤Ÿà¤°',
'allmessages-filter-unmodified' => 'असंशोधित',
'allmessages-filter-all' => 'सबै',
@@ -2452,12 +2520,17 @@ $1लाई अघिबाट नैं पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ लगाà¤
'spambot_username' => 'MediaWiki सà¥à¤ªà¤¾à¤® सर-सफाइ',
# Info page
-'infosubtitle' => 'पृषà¥à¤ à¤•à¥‹ लागि जानकारी',
-'numedits' => 'समà¥à¤ªà¤¾à¤¦à¤¨ संखà¥à¤¯à¤¾ (लेख): $1',
-'numtalkedits' => 'समà¥à¤ªà¤¾à¤¦à¤¨ संखà¥à¤¯à¤¾ (छलफल पृषà¥à¤ ): $1',
-'numwatchers' => 'अवलोकन संखà¥à¤¯à¤¾: $1',
-'numauthors' => 'पà¥à¤°à¤·à¥à¤Ÿ लेखकहरà¥à¤•à¥‹ संखà¥à¤¯à¤¾ (लेख): $1',
-'numtalkauthors' => 'लेखकहरूको संखà¥à¤¯à¤¾ (छलफल पृषà¥à¤ ): $1',
+'pageinfo-title' => ' "$1"को लागि जाकारी',
+'pageinfo-header-edits' => 'समà¥à¤ªà¤¾à¤¦à¤¨à¤¹à¤°à¥',
+'pageinfo-header-watchlist' => 'निगरानी सà¥à¤šà¥€',
+'pageinfo-header-views' => 'अवलोकनहरà¥',
+'pageinfo-subjectpage' => 'पृषà¥à¤ ',
+'pageinfo-talkpage' => 'वारà¥à¤¤à¤¾à¤²à¤¾à¤ª पृषà¥à¤ ',
+'pageinfo-watchers' => 'निगरानी करà¥à¤¤à¤¾à¤¹à¤°à¥à¤•à¥‹ संखà¥à¤¯à¤¾',
+'pageinfo-edits' => 'समà¥à¤ªà¤¾à¤¦à¤¨ संखà¥à¤¯à¤¾',
+'pageinfo-authors' => 'फरक समà¥à¤ªà¤¾à¤¦à¤•à¤°à¥à¤•à¥‹ संखà¥à¤¯à¤¾',
+'pageinfo-views' => 'अवलोकन संखà¥à¤¯à¤¾',
+'pageinfo-viewsperedit' => 'पà¥à¤°à¤¤à¤¿ समà¥à¤ªà¤¾à¤¦à¤¨ अवलोकन संखà¥à¤¯à¤¾',
# Skin names
'skinname-standard' => 'कà¥à¤²à¤¾à¤¸à¤¿à¤•',
@@ -2470,20 +2543,6 @@ $1लाई अघिबाट नैं पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§ लगाà¤
'skinname-modern' => 'मोडरà¥à¤¨',
'skinname-vector' => 'भेकà¥à¤Ÿà¤°',
-# Math options
-'mw_math_png' => 'जहिले PNG खोलà¥à¤¨à¥‡',
-'mw_math_simple' => 'धेरै साधारण भà¤à¤®à¤¾ HTML नतà¥à¤° PNG',
-'mw_math_html' => 'संभव भà¤à¤¸à¤®à¥à¤® HTML नतà¥à¤° PNG',
-'mw_math_source' => 'यसलाई TeX को रà¥à¤ªà¤®à¤¾ छोडà¥à¤¨à¥‡(पाठ पà¥à¤°à¤¦à¤°à¥à¤¶à¤•à¥‹ लागि)',
-'mw_math_modern' => 'आधà¥à¤¨à¤¿à¤• बà¥à¤°à¤¾à¤‰à¤œà¤°à¤•à¥‹ लागि सिफारिस गरिà¤à¤•à¥‹',
-
-# Math errors
-'math_failure' => 'पढà¥à¤¨ सकिà¤à¤¨',
-'math_unknown_error' => 'अजà¥à¤žà¤¾à¤¤ समसà¥à¤¯à¤¾',
-'math_unknown_function' => 'अजà¥à¤žà¤¾à¤¤ निरà¥à¤¦à¥‡à¤¶à¤¨',
-'math_lexing_error' => 'वरà¥à¤£(lexing) तà¥à¤°à¥à¤Ÿà¥€',
-'math_syntax_error' => 'सूतà¥à¤° (syntax) तà¥à¤°à¥à¤Ÿà¤¿',
-
# Patrolling
'markaspatrolleddiff' => 'गसà¥à¤¤à¥€ गरिà¤à¤•à¥‹(patrolled) को रà¥à¤ªà¤®à¤¾ चिनो लगाउने',
'markaspatrolledtext' => 'यस पृषà¥à¤ à¤²à¤¾à¤ˆ गसà¥à¤¤à¥€ गरिà¤à¤•à¥‹(patrolled) को रà¥à¤ªà¤®à¤¾ चिनो लगाउने',
@@ -2527,10 +2586,11 @@ $1',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|पृषà¥à¤ |पृषà¥à¤ à¤¹à¤°à¥}}',
'file-info' => 'फाइल आकार: $1, MIME पà¥à¤°à¤•à¤¾à¤°: $2',
'file-info-size' => '$1 × $2 पिकà¥à¤¸à¥‡à¤²à¤¹à¤°à¥, फाइल आकार: $3, MIME पà¥à¤°à¤•à¤¾à¤°: $4',
+'file-info-size-pages' => '$1 × $2 पिकà¥à¤¸à¥‡à¤²à¤¹à¤°à¥, फाइल आकार: $3, MIME पà¥à¤°à¤•à¤¾à¤°: $4, $5 {{PLURAL:$5|पृषà¥à¤ |पृषà¥à¤ à¤¹à¤°à¥}}',
'file-nohires' => '<small>उचà¥à¤š रिजोलà¥à¤¯à¥à¤¶à¤¨ अनà¥à¤ªà¤²à¤¬à¥à¤§</small>',
'svg-long-desc' => 'SVG फाइल,साधारण $1 × $2 पिकà¥à¤¸à¥‡à¤²à¤¹à¤°à¥, फाइल आकार: $3',
'show-big-image' => 'पूरा रिजोलà¥à¤¯à¥à¤¶à¤¨',
-'show-big-image-thumb' => '<small>यस पूरà¥à¤µà¤¾à¤µà¤²à¥‹à¤•à¤¨à¤•à¥‹ आकार : $1 × $2 पिकà¥à¤¸à¤²</small>',
+'show-big-image-size' => '$1 × $2 पिकà¥à¤¸à¤²',
'file-info-gif-looped' => 'चकृय गरिà¤à¤•à¥‹',
'file-info-gif-frames' => '$1 {{PLURAL:$1|फà¥à¤°à¥‡à¤®|फà¥à¤°à¥‡à¤®à¤¹à¤°à¥}}',
'file-info-png-looped' => 'ग़ाà¤à¤ à¥‹ परेको',
@@ -2556,15 +2616,21 @@ $1',
'metadata-help' => 'यस फाइलमा अतिरिकà¥à¤¤ जानकारीहरॠछनà¥, यसलाई बनाउन समà¥à¤­à¤µà¤¤à¤ƒ डिजिटल कà¥à¤¯à¤¾à¤®à¥‡à¤°à¤¾ अथवा सà¥à¤•à¥à¤¯à¤¾à¤¨à¤° पà¥à¤°à¤¯à¥‹à¤— गरिà¤à¤•à¥‹ हà¥à¤¨à¥à¤ªà¤°à¥à¤›à¥¤ यदि यस फाइललाई मूल अवसà¥à¤¥à¤¾à¤¬à¤¾à¤Ÿ परिवरà¥à¤¤à¤¨ गरिà¤à¤•à¥‹ हो भनें यस फाइलले समà¥à¤ªà¥‚रà¥à¤£ विवरण पà¥à¤°à¤¤à¤¿à¤¬à¤¿à¤®à¥à¤¬à¤¿à¤¤ गरà¥à¤¨ सकà¥à¤¨à¥‡à¤›à¥ˆà¤¨ ।',
'metadata-expand' => 'लामो विबरण हेरà¥à¤¨à¥‡',
'metadata-collapse' => 'लामो विवरण लà¥à¤•à¤¾à¤‰à¤¨à¥‡',
-'metadata-fields' => 'EXIF मेटाडेटा तालिका धà¥à¤µà¤¸à¥à¤¤ भà¤à¤®à¤¾ यस सनà¥à¤¦à¥‡à¤¶à¤®à¤¾ सूचिकृत मेटाडेटा फिलà¥à¤¡ तसà¥à¤µà¥€à¤° पृषà¥à¤  पà¥à¤°à¤¦à¤°à¥à¤¶à¤¨à¤®à¤¾à¤¥à¤¿ समà¥à¤®à¤¿à¤²à¤¿à¤¤ हà¥à¤¨à¥‡à¤› ।
-अनà¥à¤¯ डिफलà¥à¤Ÿ रà¥à¤ªà¤®à¤¾ लà¥à¤•à¥‡à¤° बसà¥à¤¨à¥‡à¤›à¤¨à¥ ।
+'metadata-fields' => 'Image metadata fields listed in this message will be included on image page display when the metadata table is collapsed.
+Others will be hidden by default.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'चौडाइ',
@@ -2579,11 +2645,9 @@ $1',
'exif-ycbcrpositioning' => 'Y र C वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤ªà¤¨',
'exif-xresolution' => 'कà¥à¤·à¥ˆà¤¤à¤¿à¤œ संकलà¥à¤ª(resolution)',
'exif-yresolution' => 'ऊरà¥à¤§à¥à¤µà¤¾à¤§à¤° संकलà¥à¤ª(resolution)',
-'exif-resolutionunit' => 'यूनिट à¤à¤•à¥à¤¸ र वाईको रिजोलà¥à¤¸à¤¨',
'exif-stripoffsets' => 'चितà¥à¤° आà¤à¤•à¤¡à¤¼à¤¾à¤•à¥‹ अवसà¥à¤¥à¤¿à¤¤à¤¿',
'exif-rowsperstrip' => 'पà¥à¤°à¤¤à¤¿à¤ªà¤‚कà¥à¤¤à¤¿ पटà¥à¤Ÿà¥€à¤¹à¤°à¥à¤•à¥‹ संखà¥à¤¯à¤¾',
'exif-jpeginterchangeformatlength' => 'JPEG आà¤à¤•à¤¡à¤¼à¤¾à¤•à¥‹ बाइट',
-'exif-transferfunction' => 'सà¥à¤¥à¤¾à¤¨à¤¾à¤¨à¥à¤¤à¤°à¤£ कारà¥à¤¯',
'exif-whitepoint' => 'सेतो बिंदॠकà¥à¤°à¥‹à¤®à¥à¤¯à¤¾à¤¸à¤¿à¤Ÿà¥€(chromaticity)',
'exif-datetime' => 'फाइल परिवरà¥à¤¤à¤¨ मिति तथा समय',
'exif-imagedescription' => 'चितà¥à¤° नाम',
@@ -2609,7 +2673,6 @@ $1',
'exif-exposureprogram' => 'à¤à¤•à¥à¤¸à¥à¤ªà¥‹à¤œà¤° कारà¥à¤¯à¤•à¥à¤°à¤®',
'exif-spectralsensitivity' => 'वरà¥à¤£à¤•à¥à¤°à¤®à¥€à¤¯ संवेदनशीलता',
'exif-isospeedratings' => 'आईà¤à¤¸à¤“ गति रेटिंग',
-'exif-oecf' => 'Optoelectronic रूपांतरण कारक',
'exif-shutterspeedvalue' => 'APEX शटरको गति',
'exif-aperturevalue' => 'APEX छिंड़',
'exif-brightnessvalue' => 'APEX चमक',
@@ -2622,7 +2685,6 @@ $1',
'exif-focallength' => 'लेंस फोकल लमà¥à¤¬à¤¾à¤ˆ',
'exif-subjectarea' => 'विषय कà¥à¤·à¥‡à¤¤à¥à¤°',
'exif-flashenergy' => 'फà¥à¤²à¥à¤¯à¤¾à¤¸ ऊरà¥à¤œà¤¾',
-'exif-spatialfrequencyresponse' => 'सà¥à¤¥à¤¾à¤¨à¤¿à¤• आवृतà¥à¤¤à¤¿ पà¥à¤°à¤¤à¤¿à¤•à¥à¤°à¤¿à¤¯à¤¾',
'exif-focalplanexresolution' => 'फोकल विमान à¤à¤•à¥à¤¸ संकलà¥à¤ª',
'exif-focalplaneyresolution' => 'फोकल पà¥à¤²à¥‡à¤¨ वाई रिजोलà¥à¤¸à¤¨',
'exif-subjectlocation' => 'विषयको अवसà¥à¤¥à¤¿à¤¤à¤¿',
@@ -2665,10 +2727,97 @@ $1',
'exif-gpsareainformation' => 'जीपीà¤à¤¸ कà¥à¤·à¥‡à¤¤à¥à¤°à¤•à¥‹ नाम',
'exif-gpsdatestamp' => 'जी पी à¤à¤¸ मिति',
'exif-gpsdifferential' => 'जीपीà¤à¤¸ अंतर सà¥à¤§à¤¾à¤°',
+'exif-coordinate-format' => '$1° $2′ $3″ $4',
+'exif-jpegfilecomment' => 'जेपेग फाइल टिपà¥à¤ªà¤£à¥€',
+'exif-keywords' => 'मूलशवà¥à¤¦à¤¹à¤°à¥',
+'exif-worldregioncreated' => 'यस विशà¥à¤µà¤•à¥‹ यस भागमा यो फोटो लिà¤à¤•à¥‹ थियो',
+'exif-countrycreated' => 'तसà¥à¤µà¤¿à¤° खिचिà¤à¤•à¥‹ देश',
+'exif-countrycodecreated' => 'तसà¥à¤µà¤¿à¤° खिचिà¤à¤•à¥‹ देशको कोड',
+'exif-provinceorstatecreated' => 'कà¥à¤·à¥‡à¤¤à¥à¤° जहाठयस तसà¥à¤µà¤¿à¤° खिचिà¤à¤•à¥‹ थियो थियो',
+'exif-citycreated' => 'सहर जहाà¤',
+'exif-sublocationcreated' => 'सहर भितà¥à¤°à¤•à¥‹ कà¥à¤·à¥‡à¤¤à¥à¤° जहाठयस तसà¥à¤µà¤¿à¤° खिचिà¤à¤•à¥‹ थियो \\',
+'exif-worldregiondest' => ' देखाइà¤à¤•à¥‹ विशà¥à¤µ कà¥à¤·à¥‡à¤¤à¥à¤°',
+'exif-countrydest' => 'देखाइà¤à¤•à¥‹ देश \\',
+'exif-countrycodedest' => 'देखाइà¤à¤•à¥‹ देशको कोड',
+'exif-provinceorstatedest' => 'देखाइà¤à¤•à¥‹ पà¥à¤°à¤¾à¤¨à¥à¤¤ या कà¥à¤·à¥‡à¤¤à¥à¤°',
+'exif-citydest' => 'देखाइà¤à¤•à¥‹ सहर',
+'exif-sublocationdest' => 'देखाइà¤à¤•à¥‹ सहर भितà¥à¤°à¤•à¥‹ कà¥à¤·à¥‡à¤¤à¥à¤°',
'exif-objectname' => 'छोटो शीरà¥à¤·à¤•',
+'exif-specialinstructions' => 'विषेश निरà¥à¤¦à¥‡à¤¶à¤¨à¤¹à¤°à¥',
+'exif-headline' => 'शीरà¥à¤·à¤¹à¤°à¤«',
+'exif-credit' => 'शà¥à¤°à¥‡à¤¯/पà¥à¤°à¤¦à¤¾à¤¯à¤•',
+'exif-source' => 'सà¥à¤°à¥‹à¤¤',
+'exif-editstatus' => 'तसà¥à¤µà¤¿à¤°à¤•à¥‹ समà¥à¤ªà¤¾à¤¦à¤•à¥€à¤¯ सà¥à¤¥à¤¿à¤¤à¥€',
+'exif-urgency' => 'अपरà¤à¤Ÿà¤¤à¤¾',
+'exif-fixtureidentifier' => 'फिकà¥à¤šà¤°à¤•à¥‹ नाम',
+'exif-locationdest' => 'भनिà¤à¤•à¥‹ सà¥à¤¥à¤¾à¤¨',
+'exif-locationdestcode' => 'भनिइको सà¥à¤¥à¤¾à¤¨à¤•à¥‹ कोड',
+'exif-objectcycle' => 'दिनको यस समय जसका लागि मेडिया लकà¥à¤·à¤¿à¤¤ छ',
+'exif-contact' => 'समà¥à¤ªà¤°à¥à¤• जानकारी',
+'exif-writer' => 'लेखक',
+'exif-languagecode' => 'भाषा',
+'exif-iimversion' => 'IIM संसà¥à¤•à¤°à¤£',
+'exif-iimcategory' => 'शà¥à¤°à¥‡à¤£à¥€',
+'exif-iimsupplementalcategory' => 'पà¥à¤°à¤• शà¥à¤°à¥‡à¤£à¥€',
+'exif-datetimeexpires' => 'यस पछि पà¥à¤°à¤¯à¥‹à¤— नगरà¥à¤¨à¥‡',
+'exif-datetimereleased' => 'यस मितिमा खà¥à¤²à¤¾ गरिà¤à¤•à¥‹ \\',
+'exif-originaltransmissionref' => 'मूल पà¥à¤°à¤¸à¤¾à¤°à¤£ सà¥à¤¥à¤² कोड',
+'exif-identifier' => 'जनक',
+'exif-lens' => 'पà¥à¤°à¤¯à¥‹à¤— गरिà¤à¤•à¥‹ लेनà¥à¤¸',
+'exif-serialnumber' => 'कà¥à¤¯à¤¾à¤®à¥‡à¤°à¤¾à¤•à¥‹ कà¥à¤°à¤® संखà¥à¤¯à¤¾',
+'exif-cameraownername' => 'कà¥à¤¯à¤¾à¤®à¥‡à¤°à¤¾à¤•à¤¾ धनी',
+'exif-label' => 'टाà¤à¤¸à¤¿à¤à¤•à¥‹ नाम',
+'exif-datetimemetadata' => 'मेटा जानकारी अनà¥à¤¤à¤¿à¤® समà¥à¤ªà¤¾à¤¦à¤¨ गरिà¤à¤•à¥‹ मिति',
+'exif-nickname' => 'तसà¥à¤µà¤¿à¤°à¤•à¥‹ अनौपचारिक नाम',
+'exif-rating' => 'सà¥à¤¤à¤°(५ पूरà¥à¤£à¤™à¥à¤•à¤®à¤¾)',
+'exif-rightscertificate' => 'अनà¥à¤®à¤¤à¥€ वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤ªà¤¨ पà¥à¤°à¤®à¤¾à¤£ पतà¥à¤°',
+'exif-copyrighted' => 'पà¥à¤°à¤•à¤¾à¤¶ अधिकार सà¥à¤¥à¤¿à¤¤à¥€',
+'exif-copyrightowner' => 'पà¥à¤°à¤•à¤¾à¤¶ अधिकार धनी',
+'exif-usageterms' => 'पà¥à¤°à¤¯à¥‹à¤—का सरà¥à¤¤à¤¨à¤¾à¤®à¤¾à¤¹à¤°à¥',
+'exif-webstatement' => 'अनलाइन पà¥à¤°à¤•à¤¾à¤¶ अधिकार अभिवà¥à¤¯à¤•à¥à¤¤à¤¿',
+'exif-originaldocumentid' => 'मूल मिसिलको पà¥à¤°à¤¤à¤¿ मिसिल परिचय (आइडी)',
+'exif-licenseurl' => 'पà¥à¤°à¤•à¤¾à¤¶ अधिकार पà¥à¤°à¤®à¤¾à¤£ पतà¥à¤°à¤•à¥‹ लागि URL',
+'exif-morepermissionsurl' => 'वैकलà¥à¤ªà¤• पà¥à¤°à¤®à¤¾à¤£à¤¿à¤•à¤°à¤£ जानकारी',
+'exif-attributionurl' => 'यस कारà¥à¤¯à¤•à¥‹ पà¥à¤¨: पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥‡ कà¥à¤°à¤®à¤®à¤¾ , कृपया यससà¤à¤— लिनङà¥à¤• गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
+'exif-preferredattributionname' => 'यस कारà¥à¤¯à¤•à¥‹ पà¥à¤¨: पà¥à¤°à¤¯à¥‹à¤— गरà¥à¤¨à¥‡ कà¥à¤°à¤®à¤®à¤¾ , कृया शà¥à¤°à¥‡à¤¯ दिनà¥à¤¹à¥‹à¤¸à¥',
+'exif-pngfilecomment' => 'पिà¤à¤¨à¤œà¥€ फाइल टिपà¥à¤ªà¤£à¥€',
+'exif-disclaimer' => 'अशà¥à¤µà¤¿à¤•à¤¾à¤°à¥‹à¤•à¥à¤¤à¤¿à¤¹à¤°à¥',
+'exif-contentwarning' => 'सामगà¥à¤°à¥€ चेतावनी',
+'exif-giffilecomment' => 'जिफ फाइल फाइ;',
+'exif-intellectualgenre' => 'वसà¥à¤¤à¥à¤•à¥‹ पà¥à¤°à¤•à¤¾à¤°',
+'exif-subjectnewscode' => 'विषय कोड',
+'exif-scenecode' => 'IPTC दृषà¥à¤¯ कोड',
+'exif-event' => 'जनाइà¤à¤•à¥‹ घटना',
+'exif-organisationinimage' => 'जनाइà¤à¤•à¥‹ संसà¥à¤¥à¤¾',
+'exif-personinimage' => 'जनाइà¤à¤•à¥‹ वà¥à¤¯à¤•à¥à¤¤à¤¿',
+'exif-originalimageheight' => 'तसà¥à¤µà¤¿à¤°à¤•à¥‹ काटà¥à¤¨à¥ अगाडिको चौडाइ',
+'exif-originalimagewidth' => 'काटà¥à¤¨à¥ अगाडि तसà¥à¤µà¤¿à¤°à¤•à¥‹ लमà¥à¤¬à¤¾à¤ˆ',
+
+# Make & model, can be wikified in order to link to the camera and model name
+'exif-contact-value' => '$1
+
+$2
+<div class="adr">
+$3
+
+$4, $5, $6 $7
+</div>
+$8',
+'exif-subjectnewscode-value' => '$2 ($1)',
# EXIF attributes
-'exif-compression-1' => 'नखादिà¤à¤•à¥‹(कमà¥à¤ªà¥à¤°à¥‡à¤¸ नगरिà¤à¤•à¥‹)',
+'exif-compression-1' => 'नखादिà¤à¤•à¥‹(कमà¥à¤ªà¥à¤°à¥‡à¤¸ नगरिà¤à¤•à¥‹)',
+'exif-compression-2' => 'CCITT समूह 3 1-Dimensional Modified Huffman संचालन इनà¥à¤•à¥‹à¤¡à¤¿à¤™à¥à¤—',
+'exif-compression-3' => 'CCITT Group 3 फà¥à¤¯à¤¾à¤•à¥à¤¸ इनà¥à¤•à¥‹à¤¡à¤¿à¤™à¥à¤—',
+'exif-compression-4' => 'CCITT Group 4 फà¥à¤¯à¤¾à¤•à¥à¤¸ इनà¥à¤•à¥‹à¤¡à¤¿à¤™à¥à¤—',
+'exif-compression-5' => 'LZW',
+'exif-compression-6' => 'जेपेग(पà¥à¤°à¤¾à¤¨à¥‹)',
+'exif-compression-7' => 'जेपेग',
+'exif-compression-8' => 'डिफà¥à¤²à¥‡à¤Ÿ(à¤à¤¡à¥‹à¤¬)',
+'exif-compression-34712' => 'जेपेग२०००',
+
+'exif-copyrighted-true' => 'पà¥à¤°à¤•à¤¾à¤¶ अधिकार सिमित गरिà¤à¤•à¥‹ \\',
+'exif-copyrighted-false' => 'पबà¥à¤²à¤¿à¤• डोमेन',
'exif-photometricinterpretation-2' => 'आरजीबी(रातोहरियोनिलो)',
@@ -2689,6 +2838,8 @@ $1',
'exif-xyresolution-i' => '$1 पà¥à¤°à¤¤à¤¿à¤‡à¤¨à¥à¤šà¤¥à¥‹à¤ªà¥à¤²à¤¾à¤¹à¤°à¥(डिपिआई)',
'exif-xyresolution-c' => '$1 पà¥à¤°à¤¤à¤¿à¤¸à¥‡à¤¨à¥à¤Ÿà¤¿à¤®à¤¿à¤Ÿà¤°à¤¥à¥‹à¤ªà¥à¤²à¤¾à¤¹à¤°à¥(डिपिसी)',
+'exif-colorspace-65535' => 'सà¥à¤¤à¤°à¤¿à¤•à¤°à¤£ नगरिà¤à¤•à¥‹',
+
'exif-componentsconfiguration-0' => 'असà¥à¤¤à¤¿à¤¤à¥à¤µà¤®à¤¾ छैन',
'exif-exposureprogram-0' => 'खà¥à¤²à¤¾à¤‡à¤à¤•à¥‹ छैन',
@@ -2786,6 +2937,10 @@ $1',
'exif-gpslongitude-e' => 'पूरà¥à¤µ देशानà¥à¤¤à¤°',
'exif-gpslongitude-w' => 'पशà¥à¤šà¤¿à¤® देशानà¥à¤¤à¤°',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|मिटर|मिटरहरà¥}} समà¥à¤¦à¥à¤°à¥€ सतह देखि माथि',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|मिटर|मिटरहरà¥}} समà¥à¤¦à¥à¤°à¥€ सतह देखि तल',
+
'exif-gpsstatus-a' => 'नापकारà¥à¤¯ अगि बढिरहेको छ',
'exif-gpsstatus-v' => 'नापकारà¥à¤¯ अनà¥à¤¤à¤°à¤¸à¤®à¤°à¥à¤¥à¤¨',
@@ -2797,21 +2952,75 @@ $1',
'exif-gpsspeed-m' => 'माइल पà¥à¤°à¤¤à¤¿ घणà¥à¤Ÿà¤¾',
'exif-gpsspeed-n' => 'गाà¤à¤ à¤¾à¤¹à¤°à¥',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'किलो मिटरहरà¥',
+'exif-gpsdestdistance-m' => 'माइलहरà¥',
+'exif-gpsdestdistance-n' => 'नटिकल माइलहरà¥',
+
+'exif-gpsdop-excellent' => 'अति रामà¥à¤°à¥‹ ($1)',
+'exif-gpsdop-good' => 'रामà¥à¤°à¥‹ ($1)',
+'exif-gpsdop-moderate' => 'सामानà¥à¤¯ ($1)',
+'exif-gpsdop-fair' => 'ठिकै ($1)',
+'exif-gpsdop-poor' => 'खराब ($1)',
+
+'exif-objectcycle-a' => 'बिहान मातà¥à¤°',
+'exif-objectcycle-p' => 'बेलà¥à¤•à¥€ मातà¥à¤°',
+'exif-objectcycle-b' => 'बिहान र बेलà¥à¤•à¥€ दà¥à¤¬à¥ˆ',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'वासà¥à¤¤à¤µà¤¿à¤• दिशा:',
'exif-gpsdirection-m' => 'चà¥à¤®à¥à¤¬à¤•à¤¿à¤¯ दिशा:',
+'exif-ycbcrpositioning-1' => 'केनà¥à¤¦à¥à¤°à¥€à¤•à¥ƒà¤¤',
+'exif-ycbcrpositioning-2' => 'सह-कà¥à¤°à¥à¤¸à¥€à¤°à¤¹à¥‡à¤•à¥‹',
+
+'exif-dc-contributor' => 'योगदानकरà¥à¤¤à¤¾à¤¹à¤°à¥',
+'exif-dc-coverage' => 'मेडियाको सà¥à¤ªà¤¾à¤Ÿà¤¿à¤à¤²(आयाम) वा टेमà¥à¤ªà¥‹à¤°à¤²(काल) सानà¥à¤¦à¤°à¥à¤­à¤¿à¤•à¤¤à¤¾',
+'exif-dc-date' => 'मिति(हरà¥)',
+'exif-dc-publisher' => 'पà¥à¤°à¤•à¤¾à¤¶à¤•',
+'exif-dc-relation' => 'समà¥à¤µà¤¨à¥à¤§à¤¿à¤¤ मेडिया',
+'exif-dc-rights' => 'अधिकारहरà¥',
+'exif-dc-source' => 'सà¥à¤°à¥‹à¤¤ मेडिया',
+'exif-dc-type' => 'मेडियाको पà¥à¤°à¤•à¤¾à¤°',
+
+'exif-rating-rejected' => 'असà¥à¤µà¤¿à¤•à¥ƒà¤¤',
+
+'exif-isospeedratings-overflow' => '६५५३५ भनà¥à¤¦à¤¾ ठूलो',
+
+'exif-maxaperturevalue-value' => '$1 à¤à¤ªà¥‡à¤•à¥à¤¸ (f/$2)',
+
+'exif-iimcategory-ace' => 'कला, संसà¥à¤•à¥ƒà¤¤à¥€ र मनोरञà¥à¤¨',
+'exif-iimcategory-clj' => 'अपराध र कानà¥à¤¨',
+'exif-iimcategory-dis' => 'पà¥à¤°à¤•à¥‹à¤ª तथा दà¥à¤°à¥à¤˜à¤Ÿà¤¨à¤¾',
+'exif-iimcategory-fin' => 'अरà¥à¤¥ र वà¥à¤¯à¤µà¤¸à¤¾à¤¯',
+'exif-iimcategory-edu' => 'शिकà¥à¤·à¤¾',
+'exif-iimcategory-evn' => 'वातावरण',
+'exif-iimcategory-hth' => 'सà¥à¤µà¤¾à¤¸à¥à¤¥à¥à¤¯',
+'exif-iimcategory-hum' => 'मानवीय चासो',
+'exif-iimcategory-lab' => 'शà¥à¤°à¤®',
+'exif-iimcategory-lif' => 'जीवनशैली र फूरà¥à¤¸à¤¦',
+'exif-iimcategory-pol' => 'राजनीति',
+'exif-iimcategory-rel' => 'धरà¥à¤® तथा विशà¥à¤µà¤¾à¤¸',
+'exif-iimcategory-sci' => 'विजà¥à¤žà¤¾à¤¨ तथा पà¥à¤°à¤µà¤¿à¤§à¥€',
+'exif-iimcategory-soi' => 'सामाजिक समसà¥à¤¯à¤¾à¤¹à¤°à¥',
+'exif-iimcategory-spo' => 'खेलकà¥à¤¦',
+'exif-iimcategory-war' => 'लडाई, दà¥à¤µà¤¨à¥à¤¦ र अशानà¥à¤¤à¤¿',
+'exif-iimcategory-wea' => 'मौसम',
+
+'exif-urgency-normal' => 'सामानà¥à¤¯ ($1)',
+'exif-urgency-low' => 'नà¥à¤¯à¥à¤¨ ($1)',
+'exif-urgency-high' => 'उचà¥à¤š ($1)',
+'exif-urgency-other' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤²à¥‡ निरà¥à¤§à¤¾à¤°à¤£ गरेको पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾ ($1)',
+
# External editor support
'edit-externally' => 'यो फाइललाई बाहà¥à¤¯ अनà¥à¤ªà¥à¤°à¤¯à¥‹à¤— पà¥à¤°à¤¯à¥‹à¤— गरेर समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥‡',
-'edit-externally-help' => '(थप जानकारीको लागि [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] मा हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ )',
+'edit-externally-help' => '(थप जानकारीको लागि [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] मा हेरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ )',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'सबै',
-'imagelistall' => 'सबै',
-'watchlistall2' => 'सबै',
-'namespacesall' => 'सबै',
-'monthsall' => 'सबै',
-'limitall' => 'सबै',
+'watchlistall2' => 'सबै',
+'namespacesall' => 'सबै',
+'monthsall' => 'सबै',
+'limitall' => 'सबै',
# E-mail address confirmation
'confirmemail' => 'इमेल ठेगाना पकà¥à¤•à¤¾ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
@@ -2888,11 +3097,12 @@ $1',
'trackbackdeleteok' => 'टà¥à¤°à¤¾à¤•à¤¬à¥à¤¯à¤¾à¤• सफलतापूरà¥à¤µà¤• हटाइयो।',
# Delete conflict
-'deletedwhileediting' => "'''चेतावनी''': तपाईंले समà¥à¤ªà¤¾à¤¦à¤¨ सà¥à¤°à¥ गरेपछि यो पृषà¥à¤  मेटिà¤à¤•à¥‹à¤›!",
-'confirmrecreate' => "पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ [[User:$1|$1]] ([[User talk:$1|वारà¥à¤¤à¤¾à¤²à¤¾à¤ª]])ले तपाईंले समà¥à¤ªà¤¾à¤¦à¤¨ सà¥à¤°à¥ गरेपछि यो पृषà¥à¤  मेटेकाछनॠ। कारण थियो:
+'deletedwhileediting' => "'''चेतावनी''': तपाईंले समà¥à¤ªà¤¾à¤¦à¤¨ सà¥à¤°à¥ गरेपछि यो पृषà¥à¤  मेटिà¤à¤•à¥‹à¤›!",
+'confirmrecreate' => "पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ [[User:$1|$1]] ([[User talk:$1|वारà¥à¤¤à¤¾à¤²à¤¾à¤ª]])ले तपाईंले समà¥à¤ªà¤¾à¤¦à¤¨ सà¥à¤°à¥ गरेपछि यो पृषà¥à¤  मेटेकाछनॠ। कारण थियो:
: ''$2''
कृपया सà¥à¤¨à¤¿à¤¶à¥à¤šà¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ कि तपाईं यो पृषà¥à¤  साà¤à¤šà¥à¤šà¥ˆ निरà¥à¤®à¤¾à¤£ गरà¥à¤¨ चाहनà¥à¤¹à¥à¤¨à¥à¤›à¥¤",
-'recreate' => 'पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤®à¤¾à¤£',
+'confirmrecreate-noreason' => 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾ [[User:$1|$1]] ले ([[User talk:$1|वारà¥à¤¤à¤¾à¤²à¤¾à¤ª ]])पृषà¥à¤  तपाईले समà¥à¤ªà¤¾à¤¦à¤¨ थालà¥à¤¨à¥ भठपछि हटाइदिà¤à¤•à¤¾ छनॠके यो पृषà¥à¤ à¤²à¤¾à¤ˆ पà¥à¤¨: शिरà¥à¤œà¤¨à¤¾ गरà¥à¤¨à¥‡ हो ?',
+'recreate' => 'पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤®à¤¾à¤£',
'unit-pixel' => 'पिकà¥à¤¸à¥‡à¤²',
@@ -2901,6 +3111,12 @@ $1',
'confirm-purge-top' => 'के यस पृषà¥à¤ à¤•à¥‹ कà¥à¤¯à¤¾à¤¶ सफा गरà¥à¤¨à¥‡ हो ?',
'confirm-purge-bottom' => 'पृषà¥à¤  परà¥à¤œ(सफाई)ले कà¥à¤¯à¤¾à¤¶ सफा गरà¥à¤¦à¤› र सबै भनà¥à¤¦à¤¾ अदà¥à¤¯à¤¾à¤µà¤§à¤¿à¤• संसà¥à¤•à¤°à¤£ पà¥à¤°à¤¦à¤°à¥à¤¶à¤¿à¤¤ हà¥à¤¨ जोड दिनà¥à¤› ।',
+# action=watch/unwatch
+'confirm-watch-button' => 'ठीक',
+'confirm-watch-top' => 'के यस पृषà¥à¤ à¤²à¤¾à¤ˆ निगरानी सà¥à¤šà¥€à¤®à¤¾ थपà¥à¤¨à¥‡ हो ?',
+'confirm-unwatch-button' => 'ठीक',
+'confirm-unwatch-top' => 'के यो पृषà¥à¤ à¤²à¤¾à¤ˆ निगरानी सà¥à¤šà¥€à¤¬à¤¾à¤Ÿ हटाउने हो ?',
+
# Separators for various lists, etc.
'semicolon-separator' => ';&#32;',
'comma-separator' => ',&#32;',
@@ -3040,29 +3256,30 @@ $1',
'duplicate-defaultsort' => '\'\'\'चेतावनी:\'\'\' पूरà¥à¤µ निरà¥à¤§à¤¾à¤°à¤¿à¤¤ छोटकरी "$2" ले पà¥à¤°à¤¾à¤¨à¥‹ पूरà¥à¤µà¤¨à¤¿à¤°à¥à¤§à¤¾à¤°à¤¿à¤¤ छोटकरी"$1"लाई विसà¥à¤¥à¤¾à¤ªà¤¨ गरेको छ ।',
# Special:Version
-'version' => 'संसà¥à¤•à¤°à¤£',
-'version-extensions' => 'सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ गरिà¤à¤•à¤¾ à¤à¤•à¥à¤¸à¤Ÿà¥‡à¤¨à¥à¤¸à¤¨à¤¹à¤°à¥',
-'version-specialpages' => 'विशेष पृषà¥à¤ à¤¹à¤°à¥‚',
-'version-parserhooks' => 'पारà¥à¤¸à¤° हà¥à¤•à¤¹à¤°à¥',
-'version-variables' => 'चल राशी(variables)',
-'version-skins' => 'खोलहरà¥',
-'version-other' => 'अनà¥à¤¯',
-'version-mediahandlers' => 'मिडिया हà¥à¤¯à¤¾à¤¨à¥à¤¡à¤²à¤°à¤¹à¤°à¥‚',
-'version-hooks' => 'अंकà¥à¤¶à¤¹à¤°à¥',
-'version-extension-functions' => 'अतिरिकà¥à¤¤ पà¥à¤°à¤•à¤¾à¤°à¥à¤¯',
-'version-parser-extensiontags' => 'पारà¥à¤¸à¤° विसà¥à¤¤à¤¾à¤° टà¥à¤¯à¤¾à¤—हरà¥',
-'version-parser-function-hooks' => 'पारà¥à¤¸à¤° फङà¥à¤¸à¤¨ हà¥à¤•',
-'version-skin-extension-functions' => 'काचà¥à¤²à¥€ विसà¥à¤¤à¤¾à¤° फङà¥à¤¸à¤¨à¤¹à¤°à¥(functions)',
-'version-hook-name' => 'हà¥à¤• नाम',
-'version-hook-subscribedby' => 'गà¥à¤°à¤¾à¤¹à¥à¤¯à¤¤à¤¾ गरà¥à¤¨à¥‡',
-'version-version' => '(संसà¥à¤•à¤°à¤£ $1)',
-'version-svn-revision' => '(r$2)',
-'version-license' => 'इजाजतपतà¥à¤°',
-'version-poweredby-credits' => "यो विकी '''[http://www.mediawiki.org/ मिडियाविकि]''' दà¥à¤µà¤¾à¤°à¤¾ सशकà¥à¤¤à¤¿à¤•à¤°à¤£ गरिà¤à¤•à¥‹ छ, copyright © सनॠ२००१-$1 $2.",
-'version-poweredby-others' => 'अनà¥à¤¯',
-'version-software' => 'सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ गरिà¤à¤•à¥‹ सफà¥à¤Ÿà¤µà¥‡à¤¯à¤°',
-'version-software-product' => 'उतà¥à¤ªà¤¾à¤¦à¤¨',
-'version-software-version' => 'संसà¥à¤•à¤°à¤£',
+'version' => 'संसà¥à¤•à¤°à¤£',
+'version-extensions' => 'सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ गरिà¤à¤•à¤¾ à¤à¤•à¥à¤¸à¤Ÿà¥‡à¤¨à¥à¤¸à¤¨à¤¹à¤°à¥',
+'version-specialpages' => 'विशेष पृषà¥à¤ à¤¹à¤°à¥‚',
+'version-parserhooks' => 'पारà¥à¤¸à¤° हà¥à¤•à¤¹à¤°à¥',
+'version-variables' => 'चल राशी(variables)',
+'version-antispam' => 'सà¥à¤ªà¥à¤¯à¤¾à¤® रोकथाम',
+'version-skins' => 'खोलहरà¥',
+'version-api' => 'à¤à¤ªà¤¿à¤†à¤‡(API)',
+'version-other' => 'अनà¥à¤¯',
+'version-mediahandlers' => 'मिडिया हà¥à¤¯à¤¾à¤¨à¥à¤¡à¤²à¤°à¤¹à¤°à¥‚',
+'version-hooks' => 'अंकà¥à¤¶à¤¹à¤°à¥',
+'version-extension-functions' => 'अतिरिकà¥à¤¤ पà¥à¤°à¤•à¤¾à¤°à¥à¤¯',
+'version-parser-extensiontags' => 'पारà¥à¤¸à¤° विसà¥à¤¤à¤¾à¤° टà¥à¤¯à¤¾à¤—हरà¥',
+'version-parser-function-hooks' => 'पारà¥à¤¸à¤° फङà¥à¤¸à¤¨ हà¥à¤•',
+'version-hook-name' => 'हà¥à¤• नाम',
+'version-hook-subscribedby' => 'गà¥à¤°à¤¾à¤¹à¥à¤¯à¤¤à¤¾ गरà¥à¤¨à¥‡',
+'version-version' => '(संसà¥à¤•à¤°à¤£ $1)',
+'version-svn-revision' => '(r$2)',
+'version-license' => 'इजाजतपतà¥à¤°',
+'version-poweredby-credits' => "यो विकी '''[//www.mediawiki.org/ मिडियाविकि]''' दà¥à¤µà¤¾à¤°à¤¾ सशकà¥à¤¤à¤¿à¤•à¤°à¤£ गरिà¤à¤•à¥‹ छ, copyright © सनॠ२००१-$1 $2.",
+'version-poweredby-others' => 'अनà¥à¤¯',
+'version-software' => 'सà¥à¤¥à¤¾à¤ªà¤¨à¤¾ गरिà¤à¤•à¥‹ सफà¥à¤Ÿà¤µà¥‡à¤¯à¤°',
+'version-software-product' => 'उतà¥à¤ªà¤¾à¤¦à¤¨',
+'version-software-version' => 'संसà¥à¤•à¤°à¤£',
# Special:FilePath
'filepath' => 'फाइल मारà¥à¤—:',
@@ -3074,16 +3291,22 @@ $1',
"{{ns:file}}:" पà¥à¤°à¤¿à¤«à¤¿à¤•à¥à¤¸(पूरà¥à¤µà¤¸à¤°à¥à¤—) बिना फाइल नाम पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥ । .',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'नकà¥à¤•à¤² फाइल खोजà¥à¤¨à¥‡',
-'fileduplicatesearch-legend' => ' नकà¥à¤•à¤² खोजà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
-'fileduplicatesearch-filename' => 'फाइलनाम:',
-'fileduplicatesearch-submit' => 'खोजी गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
-'fileduplicatesearch-info' => '$1 × $2 पिकà¥à¤¸à¥‡à¤²<br />फाइल आकार: $3<br />MIME पà¥à¤°à¤•à¤¾à¤°: $4',
-'fileduplicatesearch-result-1' => 'फाइल"$1" को दà¥à¤°à¥à¤¸à¥à¤¤ नकà¥à¤•à¤²à¤¹à¤°à¥ छैननॠ।',
-'fileduplicatesearch-result-n' => 'फाइल"$1" को {{PLURAL:$2|1 दà¥à¤°à¥à¤¸à¥à¤¤ नकà¥à¤•à¤²|$2 दà¥à¤°à¥à¤¸à¥à¤¤ नकà¥à¤•à¤²à¤¹à¤°à¥}} छनॠ।',
+'fileduplicatesearch' => 'नकà¥à¤•à¤² फाइल खोजà¥à¤¨à¥‡',
+'fileduplicatesearch-summary' => 'हà¥à¤¯à¤¾à¤¸ मानको आधारमा दà¥à¤°à¥à¤¸à¥à¤¤ नकà¥à¤•à¤² फाइहरॠखोजà¥à¤¨à¥‡ ।',
+'fileduplicatesearch-legend' => ' नकà¥à¤•à¤² खोजà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
+'fileduplicatesearch-filename' => 'फाइलनाम:',
+'fileduplicatesearch-submit' => 'खोजी गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥',
+'fileduplicatesearch-info' => '$1 × $2 पिकà¥à¤¸à¥‡à¤²<br />फाइल आकार: $3<br />MIME पà¥à¤°à¤•à¤¾à¤°: $4',
+'fileduplicatesearch-result-1' => 'फाइल"$1" को दà¥à¤°à¥à¤¸à¥à¤¤ नकà¥à¤•à¤²à¤¹à¤°à¥ छैननॠ।',
+'fileduplicatesearch-result-n' => 'फाइल"$1" को {{PLURAL:$2|1 दà¥à¤°à¥à¤¸à¥à¤¤ नकà¥à¤•à¤²|$2 दà¥à¤°à¥à¤¸à¥à¤¤ नकà¥à¤•à¤²à¤¹à¤°à¥}} छनॠ।',
+'fileduplicatesearch-noresults' => '"$1" नामको फाइल पाइà¤à¤¨à¥¤',
# Special:SpecialPages
'specialpages' => 'विशेष पृषà¥à¤ ',
+'specialpages-note' => '----
+* साधारण विशेष पृषà¥à¤ à¤¹à¤°à¥à¥¤
+* <span class="mw-specialpagerestricted">निषेधित विशेष पृषà¥à¤ à¤¹à¤°à¥à¥¤</span>
+* <span class="mw-specialpagecached">कà¥à¤¯à¤¾à¤¶ गरिà¤à¤•à¤¾ विशेष पृषà¥à¤ à¤¹à¤°à¥ (अधà¥à¤¯à¤¾à¤µà¤§à¤¿à¤• नहà¥à¤¨ सकà¥à¤›)।</span>',
'specialpages-group-maintenance' => 'मरà¥à¤®à¤¤ पà¥à¤°à¤¤à¤¿à¤µà¥‡à¤¦à¤¨à¤¹à¤°à¥ \\',
'specialpages-group-other' => 'अरॠविशेष पृषà¥à¤ à¤¹à¤°à¥',
'specialpages-group-login' => 'पà¥à¤°à¤µà¥‡à¤¶à¤—रà¥à¤¨à¥à¤¹à¥‹à¤¸/खाता शृजना गरà¥à¤¨à¥à¤¹à¥‹à¤¸',
diff --git a/languages/messages/MessagesNew.php b/languages/messages/MessagesNew.php
index 4130872f..91cc8c0e 100644
--- a/languages/messages/MessagesNew.php
+++ b/languages/messages/MessagesNew.php
@@ -181,7 +181,6 @@ $messages = array(
'history' => 'पौया इतिहास',
'history_short' => 'इतिहास',
'updatedmarker' => 'जिं दकà¥à¤²à¥‡ लिपा पौ सà¥à¤µà¥‡ धà¥à¤‚काया अपडेट',
-'info_short' => 'जानकारी',
'printableversion' => 'धà¥à¤µà¤¾à¤¯à¥‡à¤œà¥à¤¯à¥à¤—ॠसंसà¥à¤•à¤°à¤£',
'permalink' => 'सà¥à¤¥à¤¾à¤¯à¥€ लिङà¥à¤•',
'print' => 'धà¥à¤µà¤¾à¤¨à¤¾à¤¦à¤¿à¤¸à¤',
@@ -316,7 +315,6 @@ MySQL नं इरर "<tt>$3: $4</tt>" कà¥à¤¯à¤‚गॠदà¥à¥¤',
# Preferences page
'mypreferences' => 'जिगॠपà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾',
'changepassword' => 'पासवरà¥à¤¦ हिलादिसà¤',
-'prefs-math' => 'गणित',
'prefs-datetime' => 'दिं व ई',
'prefs-personal' => 'छà¥à¤¯à¥â€Œà¤²à¤¾à¤®à¤¿ पà¥à¤°à¥‹à¤«à¤¾à¤‡à¤²',
'prefs-rc' => 'नà¥à¤¹à¥à¤—ॠहिलेजà¥à¤¯à¤¾',
diff --git a/languages/messages/MessagesNiu.php b/languages/messages/MessagesNiu.php
index f1b9dd3c..dae02593 100644
--- a/languages/messages/MessagesNiu.php
+++ b/languages/messages/MessagesNiu.php
@@ -111,6 +111,9 @@ Ua nimo ke hiki e haau tau [[Special:Preferences|manako {{SITENAME}}]].',
'createaccount' => 'Talaga e poko',
'gotaccountlink' => 'Hu ki loto',
+# Special:PasswordReset
+'passwordreset-username' => 'Matahigoa he tagata',
+
# Edit pages
'summary' => 'Fakakatoakatoa:',
'minoredit' => 'Ko e fakahakohako fakatote',
diff --git a/languages/messages/MessagesNl.php b/languages/messages/MessagesNl.php
index 8691fd97..b7bd6b97 100644
--- a/languages/messages/MessagesNl.php
+++ b/languages/messages/MessagesNl.php
@@ -21,6 +21,7 @@
* @author Krinkle
* @author MarkvA
* @author McDutchie
+ * @author Mihxil
* @author Multichill
* @author Mwpnl
* @author Naudefj
@@ -63,12 +64,16 @@ $namespaceAliases = array(
'Overleg_afbeelding' => NS_FILE_TALK,
);
+$datePreferences = array(
+ 'default',
+ 'dmy',
+ 'ymd',
+ 'ISO 8601',
+);
-$dateFormats = array(
- 'mdy time' => 'H:i',
- 'mdy date' => 'M j, Y',
- 'mdy both' => 'M j, Y H:i',
+$defaultDateFormat = 'dmy';
+$dateFormats = array(
'dmy time' => 'H:i',
'dmy date' => 'j M Y',
'dmy both' => 'j M Y H:i',
@@ -225,100 +230,103 @@ $magicWords = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'DubbeleDoorverwijzingen' ),
+ 'Activeusers' => array( 'ActieveGebruikers' ),
+ 'Allmessages' => array( 'AlleBerichten', 'Systeemberichten' ),
+ 'Allpages' => array( 'AllePaginas', 'AllePagina’s', 'AllePagina\'s' ),
+ 'Ancientpages' => array( 'OudstePaginas', 'OudstePagina’s', 'OudstePagina\'s' ),
+ 'Blankpage' => array( 'LegePagina' ),
+ 'Block' => array( 'Blokkeren', 'IPblokkeren', 'BlokkeerIP', 'BlokkeerIp' ),
+ 'Blockme' => array( 'BlokkeerMij', 'MijBlokkeren' ),
+ 'Booksources' => array( 'Boekbronnen', 'Boekinformatie' ),
'BrokenRedirects' => array( 'GebrokenDoorverwijzingen' ),
- 'Disambiguations' => array( 'Doorverwijspagina\'s', 'Doorverwijspaginas' ),
- 'Userlogin' => array( 'Aanmelden', 'Inloggen' ),
- 'Userlogout' => array( 'Afmelden', 'Uitloggen' ),
+ 'Categories' => array( 'Categorieën' ),
+ 'ChangeEmail' => array( 'E-mailWijzigen' ),
+ 'ChangePassword' => array( 'WachtwoordWijzigen', 'WachtwoordHerinitialiseren' ),
+ 'ComparePages' => array( 'PaginasVergelijken', 'Pagina\'sVergelijken' ),
+ 'Confirmemail' => array( 'Emailbevestigen', 'E-mailbevestigen' ),
+ 'Contributions' => array( 'Bijdragen' ),
'CreateAccount' => array( 'GebruikerAanmaken' ),
- 'Preferences' => array( 'Voorkeuren' ),
- 'Watchlist' => array( 'Volglijst' ),
- 'Recentchanges' => array( 'RecenteWijzigingen' ),
- 'Upload' => array( 'Uploaden' ),
- 'UploadStash' => array( 'TijdelijkeUpload' ),
+ 'Deadendpages' => array( 'VerwijslozePaginas', 'VerwijslozePagina’s', 'VerwijslozePagina\'s' ),
+ 'DeletedContributions' => array( 'VerwijderdeBijdragen' ),
+ 'Disambiguations' => array( 'Doorverwijspagina\'s', 'Doorverwijspaginas' ),
+ 'DoubleRedirects' => array( 'DubbeleDoorverwijzingen' ),
+ 'EditWatchlist' => array( 'VolglijstBewerken' ),
+ 'Emailuser' => array( 'GebruikerE-mailen', 'E-mailGebruiker' ),
+ 'Export' => array( 'Exporteren' ),
+ 'Fewestrevisions' => array( 'MinsteVersies', 'MinsteHerzieningen', 'MinsteRevisies' ),
+ 'FileDuplicateSearch' => array( 'BestandsduplicatenZoeken' ),
+ 'Filepath' => array( 'Bestandspad' ),
+ 'Import' => array( 'Importeren' ),
+ 'Invalidateemail' => array( 'EmailAnnuleren' ),
+ 'BlockList' => array( 'Blokkeerlijst', 'IP-blokkeerlijst', 'IPblokkeerlijst', 'IpBlokkeerlijst' ),
+ 'LinkSearch' => array( 'VerwijzingenZoeken', 'LinksZoeken' ),
+ 'Listadmins' => array( 'Beheerderlijst', 'Administratorlijst', 'Adminlijst', 'Beheerderslijst' ),
+ 'Listbots' => array( 'Botlijst', 'Lijstbots' ),
'Listfiles' => array( 'Bestandenlijst', 'Afbeeldingenlijst' ),
- 'Newimages' => array( 'NieuweBestanden', 'NieuweAfbeeldingen' ),
- 'Listusers' => array( 'Gebruikerslijst', 'Gebruikerlijst' ),
'Listgrouprights' => array( 'GroepsrechtenWeergeven' ),
- 'Statistics' => array( 'Statistieken' ),
- 'Randompage' => array( 'Willekeurig', 'WillekeurigePagina' ),
+ 'Listredirects' => array( 'Doorverwijzinglijst', 'Redirectlijst' ),
+ 'Listusers' => array( 'Gebruikerslijst', 'Gebruikerlijst' ),
+ 'Lockdb' => array( 'DBblokkeren', 'DbBlokkeren', 'BlokkeerDB' ),
+ 'Log' => array( 'Logboeken', 'Logboek' ),
'Lonelypages' => array( 'Weespaginas', 'Weespagina\'s' ),
- 'Uncategorizedpages' => array( 'NietGecategoriseerdePaginas', 'Niet-GecategoriseerdePagina’s', 'Niet-GecategoriseerdePagina\'s' ),
- 'Uncategorizedcategories' => array( 'NietGecategoriseerdeCategorieën', 'Niet-GecategoriseerdeCategorieën' ),
- 'Uncategorizedimages' => array( 'NietGecategoriseerdeBestanden', 'NietGecategoriseerdeAfbeeldingen', 'Niet-GecategoriseerdeAfbeeldingen' ),
- 'Uncategorizedtemplates' => array( 'NietGecategoriseerdeSjablonen' ),
- 'Unusedcategories' => array( 'OngebruikteCategorieën' ),
- 'Unusedimages' => array( 'OngebruikteBestanden', 'OngebruikteAfbeeldingen' ),
- 'Wantedpages' => array( 'GevraagdePaginas', 'GevraagdePagina\'s', 'GevraagdePagina’s' ),
- 'Wantedcategories' => array( 'GevraagdeCategorieën' ),
- 'Wantedfiles' => array( 'GevraagdeBestanden' ),
- 'Wantedtemplates' => array( 'GevraagdeSjablonen' ),
+ 'Longpages' => array( 'LangePaginas', 'LangePagina’s', 'LangePagina\'s' ),
+ 'MergeHistory' => array( 'GeschiedenisSamenvoegen' ),
+ 'MIMEsearch' => array( 'MIMEzoeken', 'MIME-zoeken' ),
+ 'Mostcategories' => array( 'MeesteCategorieën' ),
+ 'Mostimages' => array( 'MeesteVerwezenBestanden', 'MeesteBestanden', 'MeesteAfbeeldingen' ),
'Mostlinked' => array( 'MeestVerwezenPaginas', 'MeestVerwezenPagina\'s', 'MeestVerwezen' ),
'Mostlinkedcategories' => array( 'MeestVerwezenCategorieën' ),
'Mostlinkedtemplates' => array( 'MeestVerwezenSjablonen' ),
- 'Mostimages' => array( 'MeesteVerwezenBestanden', 'MeesteBestanden', 'MeesteAfbeeldingen' ),
- 'Mostcategories' => array( 'MeesteCategorieën' ),
'Mostrevisions' => array( 'MeesteVersies', 'MeesteHerzieningen', 'MeesteRevisies' ),
- 'Fewestrevisions' => array( 'MinsteVersies', 'MinsteHerzieningen', 'MinsteRevisies' ),
- 'Shortpages' => array( 'KortePaginas', 'KortePagina’s', 'KortePagina\'s' ),
- 'Longpages' => array( 'LangePaginas', 'LangePagina’s', 'LangePagina\'s' ),
+ 'Movepage' => array( 'PaginaHernoemen', 'PaginaVerplaatsen', 'TitelWijzigen', 'VerplaatsPagina' ),
+ 'Mycontributions' => array( 'MijnBijdragen' ),
+ 'Mypage' => array( 'MijnPagina' ),
+ 'Mytalk' => array( 'MijnOverleg' ),
+ 'Myuploads' => array( 'MijnUploads' ),
+ 'Newimages' => array( 'NieuweBestanden', 'NieuweAfbeeldingen' ),
'Newpages' => array( 'NieuwePaginas', 'NieuwePagina’s', 'NieuwePagina\'s' ),
- 'Ancientpages' => array( 'OudstePaginas', 'OudstePagina’s', 'OudstePagina\'s' ),
- 'Deadendpages' => array( 'VerwijslozePaginas', 'VerwijslozePagina’s', 'VerwijslozePagina\'s' ),
+ 'PasswordReset' => array( 'WachtwoordOpnieuwInstellen' ),
+ 'PermanentLink' => array( 'PermanenteVerwijzing' ),
+ 'Popularpages' => array( 'PopulairePaginas', 'PopulairePagina’s', 'PopulairePagina\'s' ),
+ 'Preferences' => array( 'Voorkeuren' ),
+ 'Prefixindex' => array( 'Voorvoegselindex' ),
'Protectedpages' => array( 'BeveiligdePaginas', 'BeveiligdePagina\'s', 'BeschermdePaginas', 'BeschermdePagina’s', 'BeschermdePagina\'s' ),
'Protectedtitles' => array( 'BeveiligdeTitels', 'BeschermdeTitels' ),
- 'Allpages' => array( 'AllePaginas', 'AllePagina’s', 'AllePagina\'s' ),
- 'Prefixindex' => array( 'Voorvoegselindex' ),
- 'Ipblocklist' => array( 'Blokkeerlijst', 'IP-blokkeerlijst', 'IPblokkeerlijst', 'IpBlokkeerlijst' ),
- 'Unblock' => array( 'Deblokkeren' ),
- 'Specialpages' => array( 'SpecialePaginas', 'SpecialePagina’s', 'SpecialePagina\'s' ),
- 'Contributions' => array( 'Bijdragen' ),
- 'Emailuser' => array( 'GebruikerE-mailen', 'E-mailGebruiker' ),
- 'Confirmemail' => array( 'Emailbevestigen', 'E-mailbevestigen' ),
- 'Whatlinkshere' => array( 'VerwijzingenNaarHier', 'Verwijzingen', 'LinksNaarHier' ),
+ 'Randompage' => array( 'Willekeurig', 'WillekeurigePagina' ),
+ 'Randomredirect' => array( 'WillekeurigeDoorverwijzing' ),
+ 'Recentchanges' => array( 'RecenteWijzigingen' ),
'Recentchangeslinked' => array( 'RecenteWijzigingenGelinkt', 'VerwanteWijzigingen' ),
- 'Movepage' => array( 'PaginaHernoemen', 'PaginaVerplaatsen', 'TitelWijzigen', 'VerplaatsPagina' ),
- 'Blockme' => array( 'BlokkeerMij', 'MijBlokkeren' ),
- 'Booksources' => array( 'Boekbronnen', 'Boekinformatie' ),
- 'Categories' => array( 'Categorieën' ),
- 'Export' => array( 'Exporteren' ),
- 'Version' => array( 'Softwareversie', 'Versie' ),
- 'Allmessages' => array( 'AlleBerichten', 'Systeemberichten' ),
- 'Log' => array( 'Logboeken', 'Logboek' ),
- 'Blockip' => array( 'Blokkeren', 'IPblokkeren', 'BlokkeerIP', 'BlokkeerIp' ),
+ 'Revisiondelete' => array( 'VersieVerwijderen', 'HerzieningVerwijderen', 'RevisieVerwijderen' ),
+ 'RevisionMove' => array( 'VersieVerplaatsen' ),
+ 'Search' => array( 'Zoeken' ),
+ 'Shortpages' => array( 'KortePaginas', 'KortePagina’s', 'KortePagina\'s' ),
+ 'Specialpages' => array( 'SpecialePaginas', 'SpecialePagina’s', 'SpecialePagina\'s' ),
+ 'Statistics' => array( 'Statistieken' ),
+ 'Tags' => array( 'Labels' ),
+ 'Unblock' => array( 'Deblokkeren' ),
+ 'Uncategorizedcategories' => array( 'NietGecategoriseerdeCategorieën', 'Niet-GecategoriseerdeCategorieën' ),
+ 'Uncategorizedimages' => array( 'NietGecategoriseerdeBestanden', 'NietGecategoriseerdeAfbeeldingen', 'Niet-GecategoriseerdeAfbeeldingen' ),
+ 'Uncategorizedpages' => array( 'NietGecategoriseerdePaginas', 'Niet-GecategoriseerdePagina’s', 'Niet-GecategoriseerdePagina\'s' ),
+ 'Uncategorizedtemplates' => array( 'NietGecategoriseerdeSjablonen' ),
'Undelete' => array( 'Terugplaatsen', 'Herstellen', 'VerwijderenOngedaanMaken' ),
- 'Import' => array( 'Importeren' ),
- 'Lockdb' => array( 'DBblokkeren', 'DbBlokkeren', 'BlokkeerDB' ),
'Unlockdb' => array( 'DBvrijgeven', 'DbVrijgeven', 'GeefDbVrij' ),
- 'Userrights' => array( 'Gebruikersrechten', 'Gebruikerrechten' ),
- 'MIMEsearch' => array( 'MIMEzoeken', 'MIME-zoeken' ),
- 'FileDuplicateSearch' => array( 'BestandsduplicatenZoeken' ),
- 'Unwatchedpages' => array( 'NietGevolgdePaginas', 'Niet-GevolgdePagina’s', 'Niet-GevolgdePagina\'s' ),
- 'Listredirects' => array( 'Doorverwijzinglijst', 'Redirectlijst' ),
- 'Revisiondelete' => array( 'VersieVerwijderen', 'HerzieningVerwijderen', 'RevisieVerwijderen' ),
+ 'Unusedcategories' => array( 'OngebruikteCategorieën' ),
+ 'Unusedimages' => array( 'OngebruikteBestanden', 'OngebruikteAfbeeldingen' ),
'Unusedtemplates' => array( 'OngebruikteSjablonen' ),
- 'Randomredirect' => array( 'WillekeurigeDoorverwijzing' ),
- 'Mypage' => array( 'MijnPagina' ),
- 'Mytalk' => array( 'MijnOverleg' ),
- 'Mycontributions' => array( 'MijnBijdragen' ),
- 'Myuploads' => array( 'MijnUploads' ),
- 'Listadmins' => array( 'Beheerderlijst', 'Administratorlijst', 'Adminlijst', 'Beheerderslijst' ),
- 'Listbots' => array( 'Botlijst', 'Lijstbots' ),
- 'Popularpages' => array( 'PopulairePaginas', 'PopulairePagina’s', 'PopulairePagina\'s' ),
- 'Search' => array( 'Zoeken' ),
- 'Resetpass' => array( 'WachtwoordWijzigen', 'WachtwoordHerinitialiseren' ),
+ 'Unwatchedpages' => array( 'NietGevolgdePaginas', 'Niet-GevolgdePagina’s', 'Niet-GevolgdePagina\'s' ),
+ 'Upload' => array( 'Uploaden' ),
+ 'UploadStash' => array( 'TijdelijkeUpload' ),
+ 'Userlogin' => array( 'Aanmelden', 'Inloggen' ),
+ 'Userlogout' => array( 'Afmelden', 'Uitloggen' ),
+ 'Userrights' => array( 'Gebruikersrechten', 'Gebruikerrechten' ),
+ 'Version' => array( 'Softwareversie', 'Versie' ),
+ 'Wantedcategories' => array( 'GevraagdeCategorieën' ),
+ 'Wantedfiles' => array( 'GevraagdeBestanden' ),
+ 'Wantedpages' => array( 'GevraagdePaginas', 'GevraagdePagina\'s', 'GevraagdePagina’s' ),
+ 'Wantedtemplates' => array( 'GevraagdeSjablonen' ),
+ 'Watchlist' => array( 'Volglijst' ),
+ 'Whatlinkshere' => array( 'VerwijzingenNaarHier', 'Verwijzingen', 'LinksNaarHier' ),
'Withoutinterwiki' => array( 'ZonderInterwiki' ),
- 'MergeHistory' => array( 'GeschiedenisSamenvoegen' ),
- 'Filepath' => array( 'Bestandspad' ),
- 'Invalidateemail' => array( 'EmailAnnuleren' ),
- 'Blankpage' => array( 'LegePagina' ),
- 'LinkSearch' => array( 'VerwijzingenZoeken', 'LinksZoeken' ),
- 'DeletedContributions' => array( 'VerwijderdeBijdragen' ),
- 'Tags' => array( 'Labels' ),
- 'Activeusers' => array( 'ActieveGebruikers' ),
- 'ComparePages' => array( 'PaginasVergelijken', 'Pagina\'sVergelijken' ),
- 'Badtitle' => array( 'OnjuisteNaam' ),
- 'DisableAccount' => array( 'GebruikerUitschakelen' ),
);
$linkTrail = '/^([a-zäöüïëéèà]+)(.*)$/sDu';
@@ -355,8 +363,8 @@ $messages = array(
'tog-shownumberswatching' => 'Het aantal gebruikers weergeven dat deze pagina volgt',
'tog-oldsig' => 'Bestaande ondertekening:',
'tog-fancysig' => 'Als wikitekst behandelen (zonder automatische verwijzing)',
-'tog-externaleditor' => 'Standaard een externe tekstbewerker gebruiken (alleen voor experts - voor deze functie zijn speciale instellingen nodig. [http://www.mediawiki.org/wiki/Manual:External_editors Meer informatie]).',
-'tog-externaldiff' => 'Standaard een extern vergelijkingsprogramma gebruiken (alleen voor experts - voor deze functie zijn speciale instellingen nodig. [http://www.mediawiki.org/wiki/Manual:External_editors Meer informatie]).',
+'tog-externaleditor' => 'Standaard een externe tekstbewerker gebruiken (alleen voor experts - voor deze functie zijn speciale instellingen nodig. [//www.mediawiki.org/wiki/Manual:External_editors Meer informatie]).',
+'tog-externaldiff' => 'Standaard een extern vergelijkingsprogramma gebruiken (alleen voor experts - voor deze functie zijn speciale instellingen nodig. [//www.mediawiki.org/wiki/Manual:External_editors Meer informatie]).',
'tog-showjumplinks' => '“ga naarâ€-toegankelijkheidsverwijzingen inschakelen',
'tog-uselivepreview' => '“live voorvertoning†gebruiken (vereist JavaScript – experimenteel)',
'tog-forceeditsummary' => 'Een melding geven bij een lege bewerkingssamenvatting',
@@ -453,15 +461,7 @@ $messages = array(
'listingcontinuesabbrev' => 'meer',
'index-category' => "Te indexeren pagina's",
'noindex-category' => "Niet te indexeren pagina's",
-
-'mainpagetext' => "'''De installatie van MediaWiki is geslaagd.'''",
-'mainpagedocfooter' => 'Raadpleeg de [http://meta.wikimedia.org/wiki/NL_Help:Inhoudsopgave handleiding] voor informatie over het gebruik van de wikisoftware.
-
-== Meer hulp over MediaWiki ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lijst met instellingen]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Veelgestelde vragen (FAQ)]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailinglijst voor aankondigingen van nieuwe versies]',
+'broken-file-category' => "Pagina's met onjuiste bestandsverwijzingen",
'about' => 'Over',
'article' => 'Pagina',
@@ -513,10 +513,10 @@ $messages = array(
'history' => 'Paginageschiedenis',
'history_short' => 'Geschiedenis',
'updatedmarker' => 'bewerkt sinds mijn laatste bezoek',
-'info_short' => 'Informatie',
'printableversion' => 'Printervriendelijke versie',
'permalink' => 'Permanente verwijzing',
'print' => 'Afdrukken',
+'view' => 'Lezen',
'edit' => 'Bewerken',
'create' => 'Aanmaken',
'editthispage' => 'Deze pagina bewerken',
@@ -524,6 +524,7 @@ $messages = array(
'delete' => 'Verwijderen',
'deletethispage' => 'Deze pagina verwijderen',
'undelete_short' => '$1 {{PLURAL:$1|bewerking|bewerkingen}} terugplaatsen',
+'viewdeleted_short' => '{{PLURAL: $1|Eén geschrapte bewerking |$1 geschrapte bewerkingen}} bekijken',
'protect' => 'Beveiligen',
'protect_change' => 'wijzigen',
'protectthispage' => 'Deze pagina beveiligen',
@@ -608,6 +609,8 @@ Meer informatie is beschikbaar op de pagina [[Special:Version|softwareversie]].'
'toc' => 'Inhoud',
'showtoc' => 'weergeven',
'hidetoc' => 'verbergen',
+'collapsible-collapse' => 'Inklappen',
+'collapsible-expand' => 'Uitvouwen',
'thisisdeleted' => '$1 bekijken of terugplaatsen?',
'viewdeleted' => '$1 bekijken?',
'restorelink' => '$1 verwijderde {{PLURAL:$1|versie|versies}}',
@@ -619,6 +622,8 @@ Meer informatie is beschikbaar op de pagina [[Special:Version|softwareversie]].'
'page-rss-feed' => '“$1†RSS-feed',
'page-atom-feed' => '“$1†Atom-feed',
'red-link-title' => '$1 (de pagina bestaat niet)',
+'sort-descending' => 'Aflopend sorteren',
+'sort-ascending' => 'Oplopend sorteren',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Pagina',
@@ -708,12 +713,13 @@ Bewerken is niet mogelijk.',
'protectedinterface' => 'Deze pagina bevat tekst voor berichten van de software en is beveiligd om misbruik te voorkomen.',
'editinginterface' => "'''Waarschuwing:''' U bewerkt een pagina die interfacetekst voor de software bevat.
Bewerkingen op deze pagina beïnvloeden de gebruikersinterface van iedereen.
-Overweeg voor vertalingen om [http://translatewiki.net/wiki/Main_Page?setlang=nl translatewiki.net] te gebruiken, het vertaalproject voor MediaWiki.",
+Overweeg voor vertalingen om [//translatewiki.net/wiki/Main_Page?setlang=nl translatewiki.net] te gebruiken, het vertaalproject voor MediaWiki.",
'sqlhidden' => '(SQL-zoekopdracht verborgen)',
'cascadeprotected' => "Deze pagina kan niet bewerkt worden, omdat die is opgenomen in de volgende {{PLURAL:$1|pagina|pagina's}} die beveiligd {{PLURAL:$1|is|zijn}} met de cascade-optie:
$2",
'namespaceprotected' => "U hebt geen rechten om pagina's in de naamruimte '''$1''' te bewerken.",
-'customcssjsprotected' => 'U kunt deze pagina niet bewerken, omdat die persoonlijke instellingen van een andere gebruiker bevat.',
+'customcssprotected' => 'U kunt deze CSS-pagina niet bewerken, omdat die persoonlijke instellingen van een andere gebruiker bevat.',
+'customjsprotected' => 'U kunt deze JavaScriptpagina niet bewerken, omdat die persoonlijke instellingen van een andere gebruiker bevat.',
'ns-specialprotected' => 'Pagina\'s in de naamruimte "{{ns:special}}" kunnen niet bewerkt worden.',
'titleprotected' => "Het aanmaken van deze pagina is beveiligd door [[User:$1|$1]].
De gegeven reden is ''$2''.",
@@ -751,6 +757,7 @@ Vergeet niet uw [[Special:Preferences|voorkeuren voor {{SITENAME}}]] aan te pass
'createaccount' => 'Registreren',
'gotaccount' => 'Hebt u al een gebruikersnaam? $1.',
'gotaccountlink' => 'Aanmelden',
+'userlogin-resetlink' => 'Bent u uw aanmeldgegevens vergeten?',
'createaccountmail' => 'Per e-mail',
'createaccountreason' => 'Reden:',
'badretype' => 'De ingevoerde wachtwoorden verschillen van elkaar.',
@@ -764,13 +771,15 @@ Schakel die in en meld daarna aan met uw nieuwe gebruikersnaam en wachtwoord.',
'nocookieslogin' => '{{SITENAME}} gebruikt cookies voor het aanmelden van gebruikers.
Cookies zijn uitgeschakeld in uw browser.
Schakel deze optie aan en probeer het opnieuw.',
+'nocookiesfornew' => 'De gebruiker is niet gemaakt omdat de bron niet bevestigd kon worden.
+Zorg ervoor dat u cookies hebt ingeschakeld, herlaad deze pagina en probeer het opnieuw.',
'noname' => 'U hebt geen geldige gebruikersnaam opgegeven.',
'loginsuccesstitle' => 'Aanmelden geslaagd',
'loginsuccess' => "'''U bent nu aangemeld bij {{SITENAME}} als \"\$1\".'''",
'nosuchuser' => 'De gebruiker "$1" bestaat niet.
Gebruikersnamen zijn hoofdlettergevoelig.
Controleer de schrijfwijze of [[Special:UserLogin/signup|maak een nieuwe gebruiker aan]].',
-'nosuchusershort' => 'De gebruiker "<nowiki>$1</nowiki>" bestaat niet.
+'nosuchusershort' => 'De gebruiker "$1" bestaat niet.
Controleer de schrijfwijze.',
'nouserspecified' => 'U dient een gebruikersnaam op te geven.',
'login-userblocked' => 'Deze gebruiker is geblokkeerd.
@@ -826,13 +835,14 @@ Negeer dit bericht als deze gebruiker zonder uw medeweten is aangemaakt.',
'usernamehasherror' => 'Een gebruikersnaam mag het karakter hekje ("#") niet bevatten.',
'login-throttled' => 'U hebt recentelijk te vaak geprobeerd aan te melden met een onjuist wachtwoord.
Wacht even voordat u het opnieuw probeert.',
+'login-abort-generic' => 'U bent niet aangemeld. De procedure is afgebroken.',
'loginlanguagelabel' => 'Taal: $1',
'suspicious-userlogout' => 'Uw verzoek om af te melden is genegeerd, omdat het lijkt alsof het verzoek is verzonden door een browser of cacheproxy die stuk is.',
# E-mail sending
'php-mail-error-unknown' => 'Er is een onbekende fout opgetreden in de mail()-functie van PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Wachtwoord wijzigen',
'resetpass_announce' => 'U bent aangemeld met een tijdelijke code die u per e-mail is toegezonden.
Voer een nieuw wachtwoord in om het aanmelden te voltooien:',
@@ -852,6 +862,34 @@ Bezig met aanmelden…',
Mogelijk hebt u uw wachtwoord al gewijzigd of een nieuw tijdelijk wachtwoord aangevraagd.',
'resetpass-temp-password' => 'Tijdelijk wachtwoord:',
+# Special:PasswordReset
+'passwordreset' => 'Wachtwoord opnieuw instellen',
+'passwordreset-text' => 'Vul dit formulier in zodat we u een e-mail kunnen sturen met uw gebruikersgegevens.',
+'passwordreset-legend' => 'Wachtwoord opnieuw instellen',
+'passwordreset-disabled' => 'Het is in deze wiki niet mogelijk uw wachtwoord opnieuw in te stellen.',
+'passwordreset-pretext' => '{{PLURAL:$1||Voer één van de onderstaande velden in}}',
+'passwordreset-username' => 'Gebruiker:',
+'passwordreset-domain' => 'Domein:',
+'passwordreset-email' => 'E-mailadres:',
+'passwordreset-emailtitle' => 'Gebruikersgegevens op {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Iemand, waarschijnlijk u, heeft vanaf het IP-adres $1 uw gebruikersgegevens voor {{SITENAME}} ($4) opgevraagd.
+De volgende {{PLURAL:$3|gebruiker is|gebruikers zijn}} gekoppeld aan dit e-mailadres:
+
+$2
+
+{{PLURAL:$3|Dit tijdelijke wachtwoord vervalt|Deze tijdelijke wachtwoorden vervallen}} over {{PLURAL:$5|een dag|$5 dagen}}.
+Meld u aan en wijzig het wachtwoord nu. Als u dit verzoek niet zelf heeft gedaan, of als u het oorspronkelijke wachtwoord nog kent en het niet wilt wijzigen, negeer dit bericht dan en blijf uw oude wachtwoord gebruiken.',
+'passwordreset-emailtext-user' => 'Gebruiker $1 op de site {{SITENAME}} heeft uw gebruikersgegevens voor {{SITENAME}} ($4) opgevraagd.
+De volgende {{PLURAL:$3|gebruiker is|gebruikers zijn}} gekoppeld aan dit e-mailadres:
+
+$2
+
+{{PLURAL:$3|Dit tijdelijke wachtwoord vervalt|Deze tijdelijke wachtwoorden vervallen}} over {{PLURAL:$5|een dag|$5 dagen}}.
+Meld u aan en wijzig het wachtwoord nu. Als u dit verzoek niet zelf heeft gedaan, of als u het oorspronkelijke wachtwoord nog kent en het niet wilt wijzigen, negeer dit bericht dan en blijf uw oude wachtwoord gebruiken.',
+'passwordreset-emailelement' => 'Gebruikersnaam: $1
+Tijdelijk wachtwoord: $2',
+'passwordreset-emailsent' => 'Er is per e-mail een herinnering verzonden.',
+
# Edit page toolbar
'bold_sample' => 'Vetgedrukte tekst',
'bold_tip' => 'Vet',
@@ -863,8 +901,6 @@ Mogelijk hebt u uw wachtwoord al gewijzigd of een nieuw tijdelijk wachtwoord aan
'extlink_tip' => 'Externe verwijzing (vergeet http:// niet)',
'headline_sample' => 'Deelonderwerp',
'headline_tip' => 'Tussenkopje (hoogste niveau)',
-'math_sample' => 'Voer de formule in',
-'math_tip' => 'Wiskundige formule (in LaTeX)',
'nowiki_sample' => 'Voer hier de niet op te maken tekst in',
'nowiki_tip' => 'Wiki-opmaak negeren',
'image_sample' => 'Voorbeeld.png',
@@ -888,13 +924,13 @@ Mogelijk hebt u uw wachtwoord al gewijzigd of een nieuw tijdelijk wachtwoord aan
Uw IP-adres wordt opgeslagen als u wijzigingen op deze pagina maakt.",
'anonpreviewwarning' => "''U bent niet aangemeld.''
''Door uw bewerking op te slaan wordt uw IP-adres opgeslagen in de paginageschiedenis.''",
-'missingsummary' => "'''Herinnering:''' u hebt geen samenvatting opgegeven voor uw bewerking.
-Als u nogmaals op ''Pagina opslaan'' klikt wordt de bewerking zonder samenvatting opgeslagen.",
+'missingsummary' => "'''Herinnering:''' u hebt geen bewerkingssamenvatting opgegeven.
+Als u nogmaals op \"{{int:savearticle}}\" klikt wordt de bewerking zonder samenvatting opgeslagen.",
'missingcommenttext' => 'Plaats uw opmerking hieronder.',
'missingcommentheader' => "'''Let op:''' U hebt geen onderwerp/kop voor deze opmerking opgegeven.
Als u opnieuw op \"{{int:savearticle}}\" klikt, wordt uw wijziging zonder een onderwerp/kop opgeslagen.",
-'summary-preview' => 'Samenvatting nakijken:',
-'subject-preview' => 'Nakijken onderwerp/kop:',
+'summary-preview' => 'Bewerkingssamenvatting nakijken:',
+'subject-preview' => 'Onderwerp/kop nakijken:',
'blockedtitle' => 'Gebruiker is geblokkeerd',
'blockedtext' => '\'\'\'Uw gebruiker of IP-adres is geblokkeerd.\'\'\'
@@ -955,8 +991,8 @@ U kunt [[Special:Search/{{PAGENAME}}|naar deze term zoeken]] in andere pagina\'s
'noarticletext-nopermission' => 'Deze pagina bevat geen tekst.
U kunt [[Special:Search/{{PAGENAME}}|naar deze term zoeken]] in andere pagina\'s of
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken doorzoeken]</span>.',
-'userpage-userdoesnotexist' => 'U bewerkt een gebruikerspagina van een gebruiker die niet bestaat (gebruiker "$1").
-Controleer of u deze pagina wel wilt aanmaken/bewerken.',
+'userpage-userdoesnotexist' => 'U bewerkt een gebruikerspagina van een gebruiker die niet bestaat (gebruiker "<nowiki>$1</nowiki>").
+Controleer of u deze pagina wel wilt aanmaken of bewerken.',
'userpage-userdoesnotexist-view' => 'De gebruiker "$1" is niet geregistreerd.',
'blocked-notice-logextract' => 'Deze gebruiker is op het moment geblokkeerd.
De laatste regel uit het blokkeerlogboek wordt hieronder ter referentie weergegeven:',
@@ -994,6 +1030,7 @@ Als het dan nog niet lukt, [[Special:UserLogout|meld u zich dan af]] en weer aan
'token_suffix_mismatch' => "'''Uw bewerking is geweigerd, omdat uw browser de leestekens in het bewerkingstoken onjuist heeft behandeld.
De bewerking is geweigerd om verminking van de paginatekst te voorkomen.
Dit gebeurt soms als er een webgebaseerde proxydienst wordt gebruikt die fouten bevat.'''",
+'edit_form_incomplete' => "'''Sommige onderdelen van het bewerkingsformulier hebben de server niet bereikt. Controleer of uw bewerkingen intact zijn en probeer het opnieuw.'''",
'editing' => 'Bezig met bewerken van $1',
'editingsection' => 'Bezig met bewerken van $1 (deelpagina)',
'editingcomment' => 'Bezig met bewerken van $1 (nieuw kopje)',
@@ -1234,7 +1271,7 @@ Controleer de logboeken.',
# Suppression log
'suppressionlog' => 'Verbergingslogboek',
'suppressionlogtext' => 'De onderstaande lijst bevat de verwijderingen en blokkades die voor beheerders verborgen zijn.
-In de [[Special:IPBlockList|IP-blokkeerlijst]] zijn de huidige blokkades te bekijken.',
+In de [[Special:BlockList|IP-blokkeerlijst]] zijn de huidige blokkades te bekijken.',
# History merging
'mergehistory' => "Geschiedenis van pagina's samenvoegen",
@@ -1348,12 +1385,13 @@ U kunt gebruik maken van Google.
De gegevens over {{SITENAME}} zijn mogelijk niet bijgewerkt.',
# Quickbar
-'qbsettings' => 'Menubalk',
-'qbsettings-none' => 'Uitgeschakeld',
-'qbsettings-fixedleft' => 'Links vast',
-'qbsettings-fixedright' => 'Rechts vast',
-'qbsettings-floatingleft' => 'Links zwevend',
-'qbsettings-floatingright' => 'Rechts zwevend',
+'qbsettings' => 'Menubalk',
+'qbsettings-none' => 'Uitgeschakeld',
+'qbsettings-fixedleft' => 'Links vast',
+'qbsettings-fixedright' => 'Rechts vast',
+'qbsettings-floatingleft' => 'Links zwevend',
+'qbsettings-floatingright' => 'Rechts zwevend',
+'qbsettings-directionality' => 'Vast, afhankelijk van de schrijfrichting van uw taal',
# Preferences page
'preferences' => 'Voorkeuren',
@@ -1364,9 +1402,10 @@ De gegevens over {{SITENAME}} zijn mogelijk niet bijgewerkt.',
'changepassword' => 'Wachtwoord wijzigen',
'prefs-skin' => 'Vormgeving',
'skin-preview' => 'Voorvertoning',
-'prefs-math' => 'Formules',
'datedefault' => 'Geen voorkeur',
+'prefs-beta' => 'Bètafunctionaliteit',
'prefs-datetime' => 'Datum en tijd',
+'prefs-labs' => 'Alphafunctionaliteit',
'prefs-personal' => 'Gebruikersprofiel',
'prefs-rc' => 'Recente wijzigingen',
'prefs-watchlist' => 'Volglijst',
@@ -1388,8 +1427,6 @@ De gegevens over {{SITENAME}} zijn mogelijk niet bijgewerkt.',
'columns' => 'Kolommen:',
'searchresultshead' => 'Zoekresultaten',
'resultsperpage' => 'Resultaten per pagina:',
-'contextlines' => 'Regels per resultaat:',
-'contextchars' => 'Context per regel:',
'stub-threshold' => 'Drempel voor markering als <a href="#" class="stub">beginnetje</a>:',
'stub-threshold-disabled' => 'Uitgeschakeld',
'recentchangesdays' => 'Aantal dagen weer te geven in de recente wijzigingen:',
@@ -1402,7 +1439,7 @@ Hier volgt een willekeurig gegenereerde waarde die u kunt gebruiken: $1',
'savedprefs' => 'Uw voorkeuren zijn opgeslagen.',
'timezonelegend' => 'Tijdzone:',
'localtime' => 'Plaatselijke tijd:',
-'timezoneuseserverdefault' => 'Servertijd gebruiken',
+'timezoneuseserverdefault' => 'Wikistandaard gebruiken ($1)',
'timezoneuseoffset' => 'Anders (tijdverschil aangeven)',
'timezoneoffset' => 'Tijdsverschil¹:',
'servertime' => 'Servertijd:',
@@ -1452,8 +1489,8 @@ Deze moet minder dan $1 {{PLURAL:$1|karakters|karakters}} bevatten.',
Deze informatie is zichtbaar voor andere gebruikers.',
'email' => 'E-mail',
'prefs-help-realname' => 'Echte naam is optioneel, als u deze opgeeft kan deze naam gebruikt worden om u erkenning te geven voor uw werk.',
-'prefs-help-email' => 'E-mailadres is optioneel, maar maakt het mogelijk om u uw wachtwoord te e-mailen als u het bent vergeten.
-U kunt ook anderen in staat stellen per e-mail contact met u op te nemen via een verwijzing op uw gebruikers- en overlegpagina zonder dat u uw identiteit prijsgeeft.',
+'prefs-help-email' => 'E-mailadres is optioneel, maar maakt het mogelijk om u uw wachtwoord te e-mailen als u het bent vergeten.',
+'prefs-help-email-others' => 'U kunt ook anderen in staat stellen per e-mail contact met u op te nemen via een verwijzing op uw gebruikers- en overlegpagina zonder dat u uw identiteit prijsgeeft.',
'prefs-help-email-required' => 'Hiervoor is een e-mailadres nodig.',
'prefs-info' => 'Basisinformatie',
'prefs-i18n' => 'Taalinstellingen',
@@ -1578,15 +1615,15 @@ U kunt ook anderen in staat stellen per e-mail contact met u op te nemen via een
'right-userrights' => 'Alle gebruikersrechten bewerken',
'right-userrights-interwiki' => "Gebruikersrechten van gebruikers in andere wiki's wijzigen",
'right-siteadmin' => 'De database blokkeren en weer vrijgeven',
-'right-reset-passwords' => 'Wachtwoorden van andere gebruikers opnieuw instellen',
'right-override-export-depth' => "Pagina's exporteren inclusief pagina's waarnaar verwezen wordt tot een diepte van vijf",
'right-sendemail' => 'E-mail versturen aan andere gebruikers',
# User rights log
-'rightslog' => 'Gebruikersrechtenlogboek',
-'rightslogtext' => 'Hieronder staan de wijzigingen in gebruikersrechten.',
-'rightslogentry' => 'wijzigde de gebruikersrechten voor $1 van $2 naar $3',
-'rightsnone' => '(geen)',
+'rightslog' => 'Gebruikersrechtenlogboek',
+'rightslogtext' => 'Hieronder staan de wijzigingen in gebruikersrechten.',
+'rightslogentry' => 'wijzigde de gebruikersrechten voor $1 van $2 naar $3',
+'rightslogentry-autopromote' => 'is automatisch gepromoveerd van de groepen "$2" naar de groepen "$3"',
+'rightsnone' => '(geen)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'deze pagina te bekijken',
@@ -1714,13 +1751,13 @@ Zie de [[Special:NewFiles|galerij met nieuwe bestanden]] voor een visueler overz
'illegalfilename' => 'De bestandsnaam "$1" bevat ongeldige karakters.
Geef het bestand een andere naam, en probeer het dan opnieuw te uploaden.',
'badfilename' => 'De naam van het bestand is gewijzigd in "$1".',
-'filetype-mime-mismatch' => 'De bestandsextensie hoort niet bij het MIME-type.',
+'filetype-mime-mismatch' => 'De bestandsextensie ".$1" hoort niet bij het MIME-type van het bestand ($2).',
'filetype-badmime' => 'Het is niet toegestaan om bestanden van MIME-type "$1" te uploaden.',
'filetype-bad-ie-mime' => 'Dit bestand kan niet toegevoegd worden, omdat Internet Explorer het zou identificeren als "$1", een niet toegelaten bestandstype dat potentieel schadelijk is.',
'filetype-unwanted-type' => "'''\".\$1\"''' is een ongewenst bestandstype.
Aangewezen {{PLURAL:\$3|bestandstype is|bestandstypes zijn}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' is geen toegelaten bestandstype.
-Toegelaten {{PLURAL:\$3|bestandstype is|bestandstypes zijn}} \$2.",
+'filetype-banned-type' => "{{PLURAL:\$4|Het bestandstype '''\".\$1\"''' wordt|De bestandstypes '''\".\$1\"''' worden}} niet toegelaten.
+{{PLURAL:\$3|Het toegelaten bestandstype is|De toegelaten bestandstypes zijn}} \$2.",
'filetype-missing' => 'Dit bestand heeft geen extensie (zoals ".jpg").',
'empty-file' => 'Het bestand dat u probeerde te uploaden had geen inhoud.',
'file-too-large' => 'Het bestand dat u probeerde te uploaden was te groot.',
@@ -1738,6 +1775,7 @@ Toegelaten {{PLURAL:\$3|bestandstype is|bestandstypes zijn}} \$2.",
'emptyfile' => 'Het bestand dat u hebt geüpload lijkt leeg te zijn.
Dit zou kunnen komen door een typefout in de bestandsnaam.
Ga na of u dit bestand werkelijk bedoelde te uploaden.',
+'windows-nonascii-filename' => 'Deze wiki ondersteunt geen bestandsnamen met speciale tekens.',
'fileexists' => "Er bestaat al een bestand met deze naam.
Controleer '''<tt>[[:$1]]</tt>''' als u niet zeker weet of u het huidige bestand wilt overschrijven.
[[$1|thumb]]",
@@ -1776,6 +1814,8 @@ Raadpleeg het verwijderingslogboek voordat u verder gaat.',
'php-uploaddisabledtext' => 'PHP-bestanduploads zijn uitgeschakeld. Controleer a.u.b. de file_uploads-instelling.',
'uploadscripted' => 'Dit bestand bevat HTML- of scriptcode die foutief door uw browser kan worden weergegeven.',
'uploadvirus' => 'Het bestand bevat een virus! Details: $1',
+'uploadjava' => 'Het bestand is een ZIP-bestand dat een Java .class-bestand bevat.
+Het uploaden van Java-bestanden is niet toegestaan omdat hiermee beveiligingsinstellingen omzeild kunnen worden.',
'upload-source' => 'Bronbestand',
'sourcefilename' => 'Oorspronkelijke bestandsnaam:',
'sourceurl' => 'Bron-URL:',
@@ -1786,10 +1826,6 @@ Raadpleeg het verwijderingslogboek voordat u verder gaat.',
'watchthisupload' => 'Dit bestand volgen',
'filewasdeleted' => 'Er is eerder een bestand met deze naam verwijderd.
Raadpleeg het $1 voordat u het opnieuw toevoegt.',
-'upload-wasdeleted' => "'''Waarschuwing: u bent een bestand dat eerder verwijderd was aan het uploaden.'''
-
-Controleer of het inderdaad uw bedoeling is dit bestand te uploaden.
-Het verwijderingslogboek van dit bestand kunt u hier zien:",
'filename-bad-prefix' => "De naam van het bestand dat u aan het uploaden bent begint met '''\"\$1\"''', wat een niet-beschrijvende naam is die meestal automatisch door een digitale camera wordt gegeven.
Kies een duidelijke naam voor uw bestand.",
'filename-prefix-blacklist' => ' #<!-- leave this line exactly as it is --> <pre>
@@ -1829,12 +1865,29 @@ Als het probleem aanhoudt, neem dan contact op met een [[Special:ListUsers/sysop
'upload-unknown-size' => 'Onbekende grootte',
'upload-http-error' => 'Er is een HTTP-fout opgetreden: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Er is een fout opgetreden bij het openen van het bestand voor de ZIP-controle.',
+'zip-wrong-format' => 'Het opgegeven bestand was geen ZIP-bestand.',
+'zip-bad' => 'Het bestand is een corrupt of onleesbare ZIP-bestand.
+De veiligheid kan niet worden gecontroleerd.',
+'zip-unsupported' => 'Het bestand is een ZIP-bestand dat gebruik maakt van ZIP-mogelijkheden die MediaWiki niet ondersteunt.
+De veiligheid kan niet worden gecontroleerd.',
+
+# Special:UploadStash
+'uploadstash' => 'Verborgen uploads',
+'uploadstash-summary' => 'Deze pagina biedt toegang tot bestanden die geüpload zijn of nog geüpload worden maar nog niet beschikbaar gemaakt zijn in de wiki. Deze bestanden zijn alleen zichtbaar voor de gebruiker die ze uploadt.',
+'uploadstash-clear' => 'Verborgen bestanden weggooien',
+'uploadstash-nofiles' => 'Er zijn geen verborgen bestanden.',
+'uploadstash-badtoken' => 'Het uitvoeren van de handeling is mislukt. Dit komt mogelijk doordat uw bewerkingsreferenties zijn verlopen. Probeer het opnieuw.',
+'uploadstash-errclear' => 'Het verwijderen van de bestanden is mislukt.',
+'uploadstash-refresh' => 'Lijst met bestanden bijwerken',
+
# img_auth script messages
'img-auth-accessdenied' => 'Toegang geweigerd',
'img-auth-nopathinfo' => 'PATH_INFO mist.
Uw server is niet ingesteld om deze informatie door te geven.
Misschien gebruikt deze CGI, en dan wordt img_auth niet ondersteund.
-Zie http://www.mediawiki.org/wiki/Manual:Image_Authorization voor meer informatie.',
+Zie [//www.mediawiki.org/wiki/Manual:Image_Authorization rechten voor afbeeldingen] voor meer informatie.',
'img-auth-notindir' => 'Het opgevraagde pad is niet de ingestelde uploadmap.',
'img-auth-badtitle' => 'Het was niet mogelijk een geldige paginanaam te maken van "$1".',
'img-auth-nologinnWL' => 'U bent niet aangemeld en "$1" staat niet op de witte lijst.',
@@ -1912,7 +1965,7 @@ De volgende lijst geeft alleen de eerste {{PLURAL:$1|verwijzing|$1 verwijzingen}
Er is ook een [[Special:WhatLinksHere/$2|volledige lijst]].',
'nolinkstoimage' => 'Geen enkele pagina gebruikt dit bestand.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Meer verwijzingen]] naar dit bestand bekijken.',
-'redirectstofile' => '{{PLURAL:$1|Het volgende bestand verwijst|De volgende $1 bestanden verwijzen}} door naar dit bestand:',
+'linkstoimage-redirect' => '$1 (bestandsdoorverwijzing) $2',
'duplicatesoffile' => '{{PLURAL:$1|Het volgende bestand is|De volgende $1 bestanden zijn}} identiek aan dit bestand ([[Special:FileDuplicateSearch/$2|meer details]]):',
'sharedupload' => 'Dit bestand komt van $1 en kan ook door andere projecten gebruikt worden.',
'sharedupload-desc-there' => 'Dit bestand komt van $1 en kan ook in andere projecten gebruikt worden.
@@ -2004,19 +2057,20 @@ Vergeet niet de "Verwijzingen naar deze pagina" te controleren alvorens dit sjab
'statistics-users-active-desc' => 'Gebruikers die in de afgelopen {{PLURAL:$1|dag|$1 dagen}} een handeling hebben uitgevoerd',
'statistics-mostpopular' => "Meest bekeken pagina's",
-'disambiguations' => "Doorverwijspagina's",
+'disambiguations' => "Pagina's die verwijzen naar doorverwijspagina's",
'disambiguationspage' => 'Template:Doorverwijspagina',
'disambiguations-text' => "Hieronder staan pagina's die verwijzen naar een '''doorverwijspagina'''.
Deze horen waarschijnlijk direct naar het juiste onderwerp te verwijzen.
<br />Een pagina wordt gezien als doorverwijspagina als er een sjabloon op staat dat opgenomen is op [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Dubbele doorverwijzingen',
-'doubleredirectstext' => "Deze lijst bevat pagina's die doorverwijzen naar andere doorverwijspagina's.
+'doubleredirects' => 'Dubbele doorverwijzingen',
+'doubleredirectstext' => "Deze lijst bevat pagina's die doorverwijzen naar andere doorverwijspagina's.
Elke rij bevat verwijzingen naar de eerste en de tweede doorverwijspagina en een verwijzing naar de doelpagina van de tweede doorverwijspagina.
Meestal is de laatste pagina het eigenlijke doel, waar de eerste pagina naar zou moeten doorverwijzen.
<del>Doorgehaalde regels</del> geven aan dat het probleem al is opgelost.",
-'double-redirect-fixed-move' => '[[$1]] is verplaatst en is nu een doorverwijzing naar [[$2]]',
-'double-redirect-fixer' => 'Doorverwijzingen opschonen',
+'double-redirect-fixed-move' => '[[$1]] is verplaatst en is nu een doorverwijzing naar [[$2]]',
+'double-redirect-fixed-maintenance' => 'Correctie dubbele doorverwijzing van [[$1]] naar [[$2]].',
+'double-redirect-fixer' => 'Doorverwijzingen opschonen',
'brokenredirects' => 'Defecte doorverwijzingen',
'brokenredirectstext' => "De onderstaande doorverwijzigingen verwijzen naar niet-bestaande pagina's.",
@@ -2095,6 +2149,7 @@ Een bestand kan hier dus ten onrechte opgenomen zijn.',
'pager-newer-n' => '{{PLURAL:$1|1 nieuwere|$1 nieuwere}}',
'pager-older-n' => '{{PLURAL:$1|1 oudere|$1 oudere}}',
'suppress' => 'Toezicht',
+'querypage-disabled' => 'Deze speciale pagina is uitgeschakeld om performanceredenen.',
# Book sources
'booksources' => 'Boekinformatie',
@@ -2105,8 +2160,8 @@ Een bestand kan hier dus ten onrechte opgenomen zijn.',
Controleer of u wellicht een fout hebt gemaakt bij de invoer.',
# Special:Log
-'specialloguserlabel' => 'Gebruiker:',
-'speciallogtitlelabel' => 'Paginanaam:',
+'specialloguserlabel' => 'Uitvoerende gebruiker:',
+'speciallogtitlelabel' => 'Doel (paginanaam of gebruiker):',
'log' => 'Logboeken',
'all-logs-page' => 'Alle openbare logboeken',
'alllogstext' => 'Dit is het gecombineerde logboek van {{SITENAME}}.
@@ -2147,12 +2202,13 @@ Zie ook [[Special:WantedCategories|niet-bestaande categorieën met verwijzingen]
'sp-deletedcontributions-contribs' => 'bijdragen',
# Special:LinkSearch
-'linksearch' => 'Externe verwijzingen',
+'linksearch' => 'Externe verwijzingen zoeken',
'linksearch-pat' => 'Zoekpatroon:',
'linksearch-ns' => 'Naamruimte:',
'linksearch-ok' => 'Zoeken',
-'linksearch-text' => 'Wildcards zoals "*.wikipedia.org" of "*.org" zijn toegestaan.<br />
-Ondersteunde protocollen: <tt>$1</tt>',
+'linksearch-text' => 'Wildcards zoals "*.wikipedia.org" of "*.org" zijn toegestaan.
+Heeft tenminste een topleveldomein, zoals bijvoorbeeld "*.org".<br />
+Ondersteunde protocollen: <tt>$1</tt> (voeg deze niet toe in uw zoekopdracht).',
'linksearch-line' => '$1 heeft een verwijzing in $2',
'linksearch-error' => 'Wildcards zijn alleen toegestaan aan het begin van een hostnaam.',
@@ -2214,6 +2270,10 @@ De ontvanger kan dus direct naar u reageren.',
'noemailtext' => 'Deze gebruiker heeft geen geldig e-mailadres opgegeven.',
'nowikiemailtitle' => 'E-mail is niet toegestaan',
'nowikiemailtext' => 'Deze gebruiker wil geen e-mail ontvangen van andere gebruikers.',
+'emailnotarget' => 'Niet-bestaande of ongeldige ontvanger.',
+'emailtarget' => 'Voer de geadresseerde in',
+'emailusername' => 'Gebruikersnaam:',
+'emailusernamesubmit' => 'Opslaan',
'email-legend' => 'Een e-mail versturen naar een andere gebruiker van {{SITENAME}}',
'emailfrom' => 'Van:',
'emailto' => 'Aan:',
@@ -2238,10 +2298,10 @@ De ontvanger kan dus direct naar u reageren.',
'watchlistanontext' => 'Om uw volglijst te bekijken of te bewerken moet u zich $1.',
'watchnologin' => 'U bent niet aangemeld',
'watchnologintext' => 'U dient [[Special:UserLogin|aangemeld]] te zijn om uw volglijst te bewerken.',
-'addedwatch' => 'Toegevoegd aan volglijst',
+'addwatch' => 'Toevoegen aan volglijst',
'addedwatchtext' => "De pagina \"[[:\$1]]\" is toegevoegd aan uw [[Special:Watchlist|volglijst]].
Toekomstige bewerkingen van deze pagina en de bijbehorende overlegpagina worden op [[Special:Watchlist|uw volglijst]] vermeld en worden '''vet''' weergegeven in de [[Special:RecentChanges|lijst van recente wijzigingen]].",
-'removedwatch' => 'Verwijderd van volglijst',
+'removewatch' => 'Verwijderen uit volglijst',
'removedwatchtext' => 'De pagina "[[:$1]]" is van [[Special:Watchlist|uw volglijst]] verwijderd.',
'watch' => 'Volgen',
'watchthispage' => 'Pagina volgen',
@@ -2262,8 +2322,9 @@ Toekomstige bewerkingen van deze pagina en de bijbehorende overlegpagina worden
'watchlist-options' => 'Opties voor volglijst',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Bezig met plaatsen op volglijst…',
-'unwatching' => 'Bezig met verwijderen van volglijst…',
+'watching' => 'Bezig met plaatsen op volglijst…',
+'unwatching' => 'Bezig met verwijderen van volglijst…',
+'watcherrortext' => 'Er is een fout opgetreden tijdens het wijzigen van uw volglijstinstellingen voor "$1".',
'enotif_mailer' => '{{SITENAME}}-waarschuwingssysteem',
'enotif_reset' => "Alle pagina's markeren als bezocht",
@@ -2289,20 +2350,20 @@ Wiki: $PAGEEDITOR_WIKI
Tenzij u deze pagina bezoekt, komen er geen verdere berichten. Op uw volglijst kunt u voor alle gevolgde pagina\'s de waarschuwingsinstellingen opschonen.
- Groet van uw {{SITENAME}} waarschuwingssysteem.
+ Groet van uw {{SITENAME}}-waarschuwingssysteem.
--
U kunt uw e-mailinstellingen wijzigen op:
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
U kunt uw volglijstinstellingen wijzigen op:
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:Special:Watchlist/edit}}
U kunt de pagina van uw volglijst verwijderen via de volgende verwijzing:
$UNWATCHURL
Feedback en andere assistentie:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Deze pagina verwijderen',
@@ -2318,7 +2379,7 @@ Feedback en andere assistentie:
Bevestig hieronder dat dit inderdaad uw bedoeling is, dat u de gevolgen begrijpt en dat de verwijdering overeenstemt met het [[{{MediaWiki:Policy-url}}|beleid]].',
'actioncomplete' => 'Handeling voltooid',
'actionfailed' => 'De handeling is mislukt.',
-'deletedtext' => '"<nowiki>$1</nowiki>" is verwijderd.
+'deletedtext' => '"$1" is verwijderd.
Zie het $2 voor een overzicht van recente verwijderingen.',
'deletedarticle' => 'verwijderde "[[$1]]"',
'suppressedarticle' => 'heeft "[[$1]]" verborgen',
@@ -2378,7 +2439,7 @@ Zie de [[Special:ProtectedPages|lijst met beveiligde pagina's]] voor alle beveil
'protect_expiry_invalid' => 'De aangegeven duur is ongeldig.',
'protect_expiry_old' => 'Vervaldatum is in het verleden.',
'protect-unchain-permissions' => 'Overige beveiligingsinstellingen beschikbaar maken',
-'protect-text' => "Hier kunt u het beveiligingsniveau voor de pagina '''<nowiki>$1</nowiki>''' bekijken en wijzigen.",
+'protect-text' => "Hier kunt u het beveiligingsniveau voor de pagina '''$1''' bekijken en wijzigen.",
'protect-locked-blocked' => "U kunt het beveiligingsniveau niet wijzigen terwijl u geblokkeerd bent.
Hier zijn de huidige instellingen voor de pagina '''$1''':",
'protect-locked-dblock' => "Het beveiligingsniveau kan niet worden gewijzigd, omdat de database gesloten is.
@@ -2432,9 +2493,8 @@ Het beveiligingsniveau wijzigen heeft geen enkel effect.",
'viewdeletedpage' => "Verwijderde pagina's bekijken",
'undeletepagetext' => "Hieronder {{PLURAL:$1|staat de pagina die verwijderd is|staan pagina's die zijn verwijderd}} en vanuit het archief teruggeplaatst {{PLURAL:$1|kan|kunnen}} worden.",
'undelete-fieldset-title' => 'Versies terugplaatsen',
-'undeleteextrahelp' => "Om de hele pagina inclusief alle eerdere versies terug te plaatsen: laat alle hokjes onafgevinkt en klik op '''''Terugplaatsen'''''.
-Om slechts bepaalde versies terug te zetten: vink de terug te plaatsen versies aan en klik op '''''Terugplaatsen'''''.
-Als u op '''''Herinstellen''''' klikt wordt het toelichtingsveld leeggemaakt en worden alle versies gedeselecteerd.",
+'undeleteextrahelp' => "Laat alle vakjess leeg en klik op '''''Terugplaatsen''''' om de hele pagina inclusief alle eerdere versies terug te plaatsen.
+Vink de terug te plaatsen versies aan en klik op '''''Terugplaatsen''''' om bepaalde versies terug te plaatsen.",
'undeleterevisions' => '$1 {{PLURAL:$1|versie|versies}} gearchiveerd',
'undeletehistory' => 'Als u een pagina terugplaatst, worden alle versies hersteld.
Als er al een nieuwe pagina met dezelfde naam is aangemaakt sinds de pagina is verwijderd, worden de eerder verwijderde versies teruggeplaatst en blijft de huidige versie intact.',
@@ -2480,9 +2540,12 @@ $1',
'undelete-show-file-submit' => 'Ja',
# Namespace form on various pages
-'namespace' => 'Naamruimte:',
-'invert' => 'Omgekeerde selectie',
-'blanknamespace' => '(Hoofdnaamruimte)',
+'namespace' => 'Naamruimte:',
+'invert' => 'Omgekeerde selectie',
+'tooltip-invert' => 'Vink dit aan om wijzigingen te verbergen in de geselecteerde naamruimte (en de gekoppelde naamruimte indien aangevinkt)',
+'namespace_association' => 'Gekoppelde naamruimte',
+'tooltip-namespace_association' => 'Vink dit aan om ook wijzigingen weer te geven in de overleg- of onderwerpnaamruimte die bij de geselecteerde naamruimte hoort',
+'blanknamespace' => '(Hoofdnaamruimte)',
# Contributions
'contributions' => 'Gebruikersbijdragen',
@@ -2532,13 +2595,15 @@ De laatste regel uit het blokkeerlogboek wordt hieronder ter referentie weergege
'whatlinkshere-filters' => 'Filters',
# Block/unblock
+'autoblockid' => 'Automatische blokkade #$1',
+'block' => 'Gebruiker blokkeren',
+'unblock' => 'Gebruiker deblokkeren',
'blockip' => 'Gebruiker blokkeren',
'blockip-title' => 'Gebruiker blokkeren',
'blockip-legend' => 'Een gebruiker of IP-adres blokkeren',
'blockiptext' => "Gebruik het onderstaande formulier om schrijftoegang voor een gebruiker of IP-adres in te trekken.
Doe dit alleen als bescherming tegen vandalisme en in overeenstemming met het [[{{MediaWiki:Policy-url}}|beleid]].
Geef hieronder een reden op (bijvoorbeeld welke pagina's gevandaliseerd zijn).",
-'ipaddress' => 'IP-adres:',
'ipadressorusername' => 'IP-adres of gebruikersnaam:',
'ipbexpiry' => 'Vervalt (maak een keuze):',
'ipbreason' => 'Reden:',
@@ -2551,7 +2616,7 @@ Geef hieronder een reden op (bijvoorbeeld welke pagina's gevandaliseerd zijn).",
** Intimiderend gedrag
** Misbruik door meerdere gebruikers
** Onaanvaardbare gebruikersnaam",
-'ipbanononly' => 'Alleen anonieme gebruikers blokkeren',
+'ipb-hardblock' => 'Voorkomen dat aangemelde gebruikers vanaf dit IP-adres kunnen bewerken',
'ipbcreateaccount' => 'Registreren gebruikers blokkeren',
'ipbemailban' => 'Gebruiker weerhouden van het sturen van e-mail',
'ipbenableautoblock' => 'Automatisch de IP-adressen van deze gebruiker blokkeren',
@@ -2562,12 +2627,15 @@ Geef hieronder een reden op (bijvoorbeeld welke pagina's gevandaliseerd zijn).",
'ipbotherreason' => 'Andere/extra reden:',
'ipbhidename' => 'Gebruiker in bewerkingen en lijsten verbergen',
'ipbwatchuser' => 'Gebruikerspagina en overlegpagina op volglijst plaatsen',
-'ipballowusertalk' => 'Deze gebruiker toestaan tijdens de blokkade de eigen overlegpagina te bewerken',
+'ipb-disableusertalk' => 'Voorkomen dat deze gebruiker tijdens de blokkade de eigen overlegpagina kan bewerken',
'ipb-change-block' => 'De gebruiker opnieuw blokkeren met deze instellingen',
+'ipb-confirm' => 'Blokkade bevestigen',
'badipaddress' => 'Geen geldig IP-adres',
'blockipsuccesssub' => 'De blokkering is ingesteld',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] is geblokkeerd.<br />
Zie de [[Special:IPBlockList|Lijst van geblokkeerde IP-adressen]] voor recente blokkades.',
+'ipb-blockingself' => 'U staat op het punt uzelf te blokkeren. Weet u zeker dat u dat wilt doen?',
+'ipb-confirmhideuser' => 'U staat op het punt een verborgen gebruiker te blokkeren. Hiervoor worden gebruikersnamen in alle lijsten en logboekregels verborgen. Weet u het zeker?',
'ipb-edit-dropdown' => 'Lijst van redenen bewerken',
'ipb-unblock-addr' => '$1 deblokkeren',
'ipb-unblock' => 'Een gebruiker of IP-adres deblokkeren',
@@ -2577,17 +2645,23 @@ Zie de [[Special:IPBlockList|Lijst van geblokkeerde IP-adressen]] voor recente b
'unblockiptext' => 'Gebruik het onderstaande formulier om opnieuw schrijftoegang te geven aan een geblokkeerde gebruiker of IP-adres.',
'ipusubmit' => 'Blokkade opheffen',
'unblocked' => 'Blokkade van [[User:$1|$1]] is opgeheven',
+'unblocked-range' => '$1 is gedeblokkeerd',
'unblocked-id' => 'Blokkade $1 is opgeheven',
+'blocklist' => 'Geblokkeerde gebruikers',
'ipblocklist' => 'Geblokkeerde gebruikers',
'ipblocklist-legend' => 'Een geblokkeerde gebruiker zoeken',
-'ipblocklist-username' => 'Gebruikersnaam of IP-adres:',
-'ipblocklist-sh-userblocks' => 'gebruikersblokkades $1',
-'ipblocklist-sh-tempblocks' => 'tijdelijke blokkades $1',
-'ipblocklist-sh-addressblocks' => 'enkele IP-blokkades $1',
+'blocklist-userblocks' => 'Geblokkeerde gebruikers verbergen',
+'blocklist-tempblocks' => 'Tijdelijke blokkades verbergen',
+'blocklist-addressblocks' => 'Blokkades van één IP-adres verbergen',
+'blocklist-timestamp' => 'Tijdstip',
+'blocklist-target' => 'Doel',
+'blocklist-expiry' => 'Vervalt',
+'blocklist-by' => 'Geblokkeerd door',
+'blocklist-params' => 'Blokkadeparameters',
+'blocklist-reason' => 'Reden',
'ipblocklist-submit' => 'Zoeken',
'ipblocklist-localblock' => 'Lokale blokkade',
'ipblocklist-otherblocks' => 'Andere {{PLURAL:$1|blokkade|blokkades}}',
-'blocklistline' => 'Op $1 blokkeerde $2: $3 ($4)',
'infiniteblock' => 'onbeperkt',
'expiringblock' => 'vervalt op $1 om $2',
'anononlyblock' => 'alleen anoniemen',
@@ -2611,7 +2685,7 @@ Het verbergingslogboek wordt hieronder ter referentie weergegeven:',
'reblock-logentry' => 'heeft de blokkade voor [[$1]] gewijzigd met als vervaldatum $2 $3',
'blocklogtext' => 'Hier ziet u een lijst van de recente blokkeringen en deblokkeringen.
Automatische blokkeringen en deblokkeringen komen niet in het logboek.
-Zie ook [[Special:IPBlockList|Geblokkeerde IP-adressen en gebruikers]].',
+Zie ook [[Special:BlockList|Geblokkeerde IP-adressen en gebruikers]].',
'unblocklogentry' => 'heeft de blokkade van $1 opgeheven',
'block-log-flags-anononly' => 'alleen anoniemen',
'block-log-flags-nocreate' => 'registreren gebruikers geblokkeerd',
@@ -2625,10 +2699,10 @@ Zie ook [[Special:IPBlockList|Geblokkeerde IP-adressen en gebruikers]].',
'ipb_expiry_temp' => 'Blokkades voor verborgen gebruikers moeten permanent zijn.',
'ipb_hide_invalid' => 'Het is niet mogelijk deze gebruiker te verbergen; mogelijk heeft deze te veel bewerkingen gemaakt.',
'ipb_already_blocked' => '"$1" is al geblokkeerd',
-'ipb-needreblock' => '== Deze gebruiker is al geblokkeerd ==
-$1 is al geblokkeerd.
+'ipb-needreblock' => '$1 is al geblokkeerd.
Wilt u de instellingen wijzigen?',
'ipb-otherblocks-header' => 'Andere {{PLURAL:$1|blokkade|blokkades}}',
+'unblock-hideuser' => 'U kunt deze gebruiker niet deblokkeeren, omdat de gebruikersnaam verborgen is.',
'ipb_cant_unblock' => 'Fout: blokkadenummer $1 niet gevonden.
Misschien is de blokkade al opgeheven.',
'ipb_blocked_as_range' => 'Fout: het IP-adres $1 is niet direct geblokkeerd en de blokkade kan niet opgeheven worden.
@@ -2672,6 +2746,7 @@ Vergeet niet de [[Special:UnlockDB|database vrij te geven]] zodra u klaar bent m
'lockfilenotwritable' => 'Geen schrijfrechten op het databaselockbestand.
Om de database te kunnen blokkeren of vrij te geven, dient de webserver schrijfrechten op dit bestand te hebben.',
'databasenotlocked' => 'De database is niet geblokkeerd.',
+'lockedbyandtime' => '(door $1 om $3 op $2)',
# Move page
'move-page' => '"$1" hernoemen',
@@ -2795,7 +2870,7 @@ In het laatste geval kunt u ook een verwijzing gebruiken, bijvoorbeeld [[{{#Spec
'allmessagesdefault' => 'Standaardinhoud',
'allmessagescurrent' => 'Huidige inhoud',
'allmessagestext' => 'Hieronder staan de systeemberichten uit de MediaWiki-naamruimte.
-Ga naar [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [http://translatewiki.net translatewiki.net] als u wilt bijdragen aan de algemene vertaling voor MediaWiki.',
+Ga naar [//www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [//translatewiki.net translatewiki.net] als u wilt bijdragen aan de algemene vertaling voor MediaWiki.',
'allmessagesnotsupportedDB' => "Deze pagina kan niet gebruikt worden, omdat '''\$wgUseDatabaseMessages''' is uitgeschakeld.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filteren op aangepast:',
@@ -2936,35 +3011,42 @@ De tijdelijke map is niet aanwezig.',
'tooltip-summary' => 'Voer een korte samenvatting in',
# Stylesheets
-'common.css' => '/** CSS die hier wordt geplaatst heeft invloed op alle skins */',
-'standard.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Standard */',
-'nostalgia.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Nostalgie */',
-'cologneblue.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Keuls blauw */',
-'monobook.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Monobook */',
-'myskin.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin MijnSkin */',
-'chick.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Chick */',
-'simple.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Eenvoudig */',
-'modern.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Modern */',
-'vector.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Vector */',
-'print.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de printuitvoer */',
-'handheld.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op handheldapparaten gebaseerd op de skin die is ingesteld in $wgHandheldStyle */',
+'common.css' => '/** CSS die hier wordt geplaatst heeft invloed op alle skins */',
+'standard.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Standard */',
+'nostalgia.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Nostalgie */',
+'cologneblue.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Keuls blauw */',
+'monobook.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Monobook */',
+'myskin.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin MijnSkin */',
+'chick.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Chick */',
+'simple.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Eenvoudig */',
+'modern.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Modern */',
+'vector.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de skin Vector */',
+'print.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op de printuitvoer */',
+'handheld.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op handheldapparaten gebaseerd op de skin die is ingesteld in $wgHandheldStyle */',
+'noscript.css' => '/ * CSS die hier wordt geplaatst heeft invloed voor gebruikers die JavaScript hebben uitgeschakeld * /',
+'group-autoconfirmed.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op automatisch bevestigde gebruikers */',
+'group-bot.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op robots */',
+'group-sysop.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op beheerders */',
+'group-bureaucrat.css' => '/* CSS die hier wordt geplaatst heeft alleen invloed op bureaucraten */',
# Scripts
-'common.js' => "/* JavaScript die hier wordt geplaatst heeft invloed op alle pagina's voor alle gebruikers */",
-'standard.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Standaard gebruiken */',
-'nostalgia.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Nostalgie gebruiken */',
-'cologneblue.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Keuls blauw gebruiken */',
-'monobook.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Monobook gebruiken */',
-'myskin.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin MijnSkin gebruiken */',
-'chick.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Chick gebruiken */',
-'simple.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Eenvoudig gebruiken */',
-'modern.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Modern gebruiken */',
-'vector.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Vector gebruiken */',
+'common.js' => "/* JavaScript die hier wordt geplaatst heeft invloed op alle pagina's voor alle gebruikers */",
+'standard.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Standaard gebruiken */',
+'nostalgia.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Nostalgie gebruiken */',
+'cologneblue.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Keuls blauw gebruiken */',
+'monobook.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Monobook gebruiken */',
+'myskin.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin MijnSkin gebruiken */',
+'chick.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Chick gebruiken */',
+'simple.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Eenvoudig gebruiken */',
+'modern.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Modern gebruiken */',
+'vector.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op gebruikers die de skin Vector gebruiken */',
+'group-autoconfirmed.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op automatisch bevestigde gebruikers */',
+'group-bot.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op robots */',
+'group-sysop.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op beheerders */',
+'group-bureaucrat.js' => '/* JavaScript die hier wordt geplaatst heeft alleen invloed op bureaucraten */',
# Metadata
-'nodublincore' => 'Dublin Core RDF-metadata is uitgeschakeld op deze server.',
-'nocreativecommons' => 'Creative Commons RDF-metadata is uitgeschakeld op deze server.',
-'notacceptable' => 'De wikiserver kan de gegevens niet leveren in een vorm die uw browser kan lezen.',
+'notacceptable' => 'De wikiserver kan de gegevens niet leveren in een vorm die uw browser kan lezen.',
# Attribution
'anonymous' => 'Anonieme {{PLURAL:$1|gebruiker|gebruikers}} van {{SITENAME}}',
@@ -2988,12 +3070,17 @@ Meestal wordt dit door een externe verwijzing op een zwarte lijst veroorzaakt.',
'spam_blanking' => 'Alle wijzigingen met een verwijzing naar $1 worden verwijderd',
# Info page
-'infosubtitle' => 'Informatie voor pagina',
-'numedits' => 'Aantal bewerkingen (pagina): $1',
-'numtalkedits' => 'Aantal bewerkingen (overlegpagina): $1',
-'numwatchers' => 'Aantal volgers: $1',
-'numauthors' => 'Aantal auteurs (pagina): $1',
-'numtalkauthors' => 'Aantal verschilende auteurs (overlegpagina): $1',
+'pageinfo-title' => 'Informatie over "$1"',
+'pageinfo-header-edits' => 'Bewerkingen',
+'pageinfo-header-watchlist' => 'Volglijst',
+'pageinfo-header-views' => 'Weergaven',
+'pageinfo-subjectpage' => 'Pagina',
+'pageinfo-talkpage' => 'Overlegpagina',
+'pageinfo-watchers' => 'Aantal volgers',
+'pageinfo-edits' => 'Aantal bewerkingen',
+'pageinfo-authors' => 'Aantal verschillende auteurs',
+'pageinfo-views' => 'Aantal weergaven',
+'pageinfo-viewsperedit' => 'Weergaven per bewerking',
# Skin names
'skinname-standard' => 'Klassiek',
@@ -3006,25 +3093,6 @@ Meestal wordt dit door een externe verwijzing op een zwarte lijst veroorzaakt.',
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vector',
-# Math options
-'mw_math_png' => 'Altijd als PNG weergeven',
-'mw_math_simple' => 'HTML voor eenvoudige formules, anders PNG',
-'mw_math_html' => 'HTML indien mogelijk, anders PNG',
-'mw_math_source' => 'De TeX-broncode behouden (voor tekstbrowsers)',
-'mw_math_modern' => 'Aanbevolen methode voor recente browsers',
-'mw_math_mathml' => 'MathML als mogelijk (experimenteel)',
-
-# Math errors
-'math_failure' => 'Parsen mislukt',
-'math_unknown_error' => 'onbekende fout',
-'math_unknown_function' => 'onbekende functie',
-'math_lexing_error' => 'lexicografische fout',
-'math_syntax_error' => 'syntactische fout',
-'math_image_error' => 'De PNG-omzetting is mislukt. Controleer of LaTeX en dvipng (of dvips + gs + convert) correct zijn geïnstalleerd.',
-'math_bad_tmpdir' => 'De map voor tijdelijke bestanden voor wiskundige formules bestaat niet of kan niet gemaakt worden',
-'math_bad_output' => 'De map voor bestanden met wiskundige formules bestaat niet of kan niet gemaakt worden.',
-'math_notexvc' => 'Kan het programma texvc niet vinden; stel alles in volgens de beschrijving in math/README.',
-
# Patrolling
'markaspatrolleddiff' => 'Markeren als gecontroleerd',
'markaspatrolledtext' => 'Deze pagina als gecontroleerd markeren',
@@ -3060,23 +3128,26 @@ $1',
'nextdiff' => 'Nieuwere bewerking →',
# Media information
-'mediawarning' => "'''Waarschuwing''': dit bestandstype bevat mogelijk programmacode die uw systeem schade kan berokkenen.",
-'imagemaxsize' => "Maximale afmetingen van afbeeldingen:<br />
+'mediawarning' => "'''Waarschuwing''': dit bestandstype bevat mogelijk programmacode die uw systeem schade kan berokkenen.",
+'imagemaxsize' => "Maximale afmetingen van afbeeldingen:<br />
''(voor op de beschrijvingspagina)''",
-'thumbsize' => 'Grootte miniatuurafbeelding:',
-'widthheight' => '$1x$2',
-'widthheightpage' => "$1×$2, $3 {{PLURAL:$3|pagina|pagina's}}",
-'file-info' => 'bestandsgrootte: $1, MIME-type: $2',
-'file-info-size' => '$1 × $2 pixels, bestandsgrootte: $3, MIME-type: $4',
-'file-nohires' => '<small>Geen hogere resolutie beschikbaar.</small>',
-'svg-long-desc' => 'SVG-bestand, nominaal $1 × $2 pixels, bestandsgrootte: $3',
-'show-big-image' => 'Volledige resolutie',
-'show-big-image-thumb' => '<small>Afmetingen van deze weergave: $1 × $2 pixels</small>',
-'file-info-gif-looped' => 'herhalend',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frames}}',
-'file-info-png-looped' => 'herhalend',
-'file-info-png-repeat' => '$1 {{PLURAL:$1|keer|keer}} afgespeeld',
-'file-info-png-frames' => '$1 {{PLURAL:$1|frame|frames}}',
+'thumbsize' => 'Grootte miniatuurafbeelding:',
+'widthheight' => '$1x$2',
+'widthheightpage' => "$1×$2, $3 {{PLURAL:$3|pagina|pagina's}}",
+'file-info' => 'bestandsgrootte: $1, MIME-type: $2',
+'file-info-size' => '$1 × $2 pixels, bestandsgrootte: $3, MIME-type: $4',
+'file-info-size-pages' => "$1 × $2 pixels, bestandsgrootte: $3, MIME-type: $4, $5 {{PLURAL:$5|pagina|pagina's}}",
+'file-nohires' => '<small>Geen hogere resolutie beschikbaar.</small>',
+'svg-long-desc' => 'SVG-bestand, nominaal $1 × $2 pixels, bestandsgrootte: $3',
+'show-big-image' => 'Volledige resolutie',
+'show-big-image-preview' => '<small>Grootte van deze voorvertoning: $1.</small>',
+'show-big-image-other' => '<small>Andere resoluties: $1.</small>',
+'show-big-image-size' => '$1 × $2 pixels',
+'file-info-gif-looped' => 'herhalend',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frames}}',
+'file-info-png-looped' => 'herhalend',
+'file-info-png-repeat' => '$1 {{PLURAL:$1|keer|keer}} afgespeeld',
+'file-info-png-frames' => '$1 {{PLURAL:$1|frame|frames}}',
# Special:NewFiles
'newimages' => 'Nieuwe bestanden',
@@ -3106,7 +3177,7 @@ Alle volgende verwijzingen die op dezelfde regel staan, worden behandeld als uit
Als het bestand aangepast is, komen details mogelijk niet overeen met het gewijzigde bestand.',
'metadata-expand' => 'Uitgebreide gegevens bekijken',
'metadata-collapse' => 'Uitgebreide gegevens verbergen',
-'metadata-fields' => 'De EXIF-metadatavelden in dit bericht worden ook weergegeven op een afbeeldingspagina als de metadatatabel ingeklapt is.
+'metadata-fields' => 'De afbeeldingsmetadatavelden in dit bericht worden ook weergegeven op een afbeeldingspagina als de metadatatabel ingeklapt is.
Andere velden worden verborgen.
* make
* model
@@ -3114,7 +3185,13 @@ Andere velden worden verborgen.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Breedte',
@@ -3129,13 +3206,11 @@ Andere velden worden verborgen.
'exif-ycbcrpositioning' => 'Y- en C-positionering',
'exif-xresolution' => 'Horizontale resolutie',
'exif-yresolution' => 'Verticale resolutie',
-'exif-resolutionunit' => 'Eenheid X en Y resolutie',
'exif-stripoffsets' => 'Locatie afbeeldingsgegevens',
'exif-rowsperstrip' => 'Rijen per strip',
'exif-stripbytecounts' => 'Bytes per gecomprimeerde strip',
'exif-jpeginterchangeformat' => 'Afstand tot JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytes JPEG-gegevens',
-'exif-transferfunction' => 'Transferfunctie',
'exif-whitepoint' => 'Witpuntchromaticiteit',
'exif-primarychromaticities' => 'Chromaciteit van primaire kleuren',
'exif-ycbcrcoefficients' => 'Transformatiematrixcoëfficiënten voor de kleurruimte',
@@ -3154,7 +3229,6 @@ Andere velden worden verborgen.
'exif-compressedbitsperpixel' => 'Beeldcompressiemethode',
'exif-pixelydimension' => 'Afbeeldingsbreedte',
'exif-pixelxdimension' => 'Afbeeldingshoogte',
-'exif-makernote' => 'Opmerkingen fabrikant',
'exif-usercomment' => 'Opmerkingen',
'exif-relatedsoundfile' => 'Bijbehorend audiobestand',
'exif-datetimeoriginal' => 'Tijdstip gegevensaanmaak',
@@ -3168,7 +3242,6 @@ Andere velden worden verborgen.
'exif-exposureprogram' => 'Belichtingsprogramma',
'exif-spectralsensitivity' => 'Spectrale gevoeligheid',
'exif-isospeedratings' => 'ISO/ASA-waarde',
-'exif-oecf' => 'Opto-elektronische conversiefactor',
'exif-shutterspeedvalue' => 'Sluitersnelheid in APEX',
'exif-aperturevalue' => 'Diafragma in APEX',
'exif-brightnessvalue' => 'Helderheid in APEX',
@@ -3181,7 +3254,6 @@ Andere velden worden verborgen.
'exif-focallength' => 'Brandpuntsafstand',
'exif-subjectarea' => 'Objectruimte',
'exif-flashenergy' => 'Flitssterkte',
-'exif-spatialfrequencyresponse' => 'Ruimtelijke frequentiereactie',
'exif-focalplanexresolution' => 'Brandpuntsvlak-X-resolutie',
'exif-focalplaneyresolution' => 'Brandpuntsvlak-Y-resolutie',
'exif-focalplaneresolutionunit' => 'Eenheid CCD-resolutie',
@@ -3190,7 +3262,6 @@ Andere velden worden verborgen.
'exif-sensingmethod' => 'Meetmethode',
'exif-filesource' => 'Bestandsbron',
'exif-scenetype' => 'Scènetype',
-'exif-cfapattern' => 'CFA-patroon',
'exif-customrendered' => 'Aangepaste beeldverwerking',
'exif-exposuremode' => 'Belichtingsinstelling',
'exif-whitebalance' => 'Witbalans',
@@ -3235,10 +3306,79 @@ Andere velden worden verborgen.
'exif-gpsareainformation' => 'Naam GPS-gebied',
'exif-gpsdatestamp' => 'GPS-datum',
'exif-gpsdifferential' => 'Differentiele GPS-correctie',
+'exif-jpegfilecomment' => 'Opmerking bij JPEG-bestand',
+'exif-keywords' => 'Trefwoorden',
+'exif-worldregioncreated' => 'Regio in de wereld waar de afbeelding is gemaakt',
+'exif-countrycreated' => 'Land waar de afbeelding is gemaakt',
+'exif-countrycodecreated' => 'Code voor het land waar de afbeelding is gemaakt',
+'exif-provinceorstatecreated' => 'Provincie of staat waar de afbeelding is gemaakt',
+'exif-citycreated' => 'Plaats waar de afbeelding is gemaakt',
+'exif-sublocationcreated' => 'Wijk van de plaats waar de afbeelding is gemaakt',
+'exif-worldregiondest' => 'Weergegeven wereldregio',
+'exif-countrydest' => 'Weergegeven land',
+'exif-countrycodedest' => 'Code voor het weergegeven land',
+'exif-provinceorstatedest' => 'Weergegeven provincie of staat',
+'exif-citydest' => 'Weergegeven plaats',
+'exif-sublocationdest' => 'Weergegeven wijk in plaats',
'exif-objectname' => 'Korte naam',
+'exif-specialinstructions' => 'Speciale instructies',
+'exif-headline' => 'Koptekst',
+'exif-credit' => 'Credit/Leverancier',
+'exif-source' => 'Bron',
+'exif-editstatus' => 'Bewerkingsstatus van de afbeelding',
+'exif-urgency' => 'Urgentie',
+'exif-fixtureidentifier' => 'Groepsnaam',
+'exif-locationdest' => 'Weergegeven locatie',
+'exif-locationdestcode' => 'Code voor de weergegeven locatie',
+'exif-objectcycle' => 'Tijd van de dag waar de media voor bedoeld is',
+'exif-contact' => 'Contactgegevens',
+'exif-writer' => 'Schrijver',
+'exif-languagecode' => 'Taal',
+'exif-iimversion' => 'IIM-versie',
+'exif-iimcategory' => 'Categorie',
+'exif-iimsupplementalcategory' => 'Aanvullende categorieën',
+'exif-datetimeexpires' => 'Niet te gebruiken na',
+'exif-datetimereleased' => 'Gepubliceerd op',
+'exif-originaltransmissionref' => 'Originele taaklocatiecode',
+'exif-identifier' => 'Id',
+'exif-lens' => 'Gebruikte lens',
+'exif-serialnumber' => 'Serienummer van de camera',
+'exif-cameraownername' => 'Eigenaar van camera',
+'exif-label' => 'Label',
+'exif-datetimemetadata' => 'Datum waarop de metadata het laatst zijn bewerkt',
+'exif-nickname' => 'Informele naam van de afbeelding',
+'exif-rating' => 'Waardering (schaal van 5)',
+'exif-rightscertificate' => 'Rechtenbeheercertificaat',
+'exif-copyrighted' => 'Auteursrechtenstatus',
+'exif-copyrightowner' => 'Auteursrechtenhouder',
+'exif-usageterms' => 'Gebruiksvoorwaarden',
+'exif-webstatement' => 'Online auteursrechtenverklaring',
+'exif-originaldocumentid' => 'Uniek ID van het originele document',
+'exif-licenseurl' => 'URL voor auteursrechtenlicentie',
+'exif-morepermissionsurl' => 'Alternatieve licentiegegevens',
+'exif-attributionurl' => 'Gebruik de volgende verwijzing bij hergebruik van dit werk',
+'exif-preferredattributionname' => 'Gebruik de volgende credits bij hergebruik van dit werk',
+'exif-pngfilecomment' => 'Opmerking bij PNG-bestand',
+'exif-disclaimer' => 'Voorbehoud',
+'exif-contentwarning' => 'Waarschuwing over inhoud',
+'exif-giffilecomment' => 'Opmerking bij GIF-bestand',
+'exif-intellectualgenre' => 'Itemtype',
+'exif-subjectnewscode' => 'Onderwerpcode',
+'exif-scenecode' => 'IPTC-scènecode',
+'exif-event' => 'Afgebeelde gebeurtenis',
+'exif-organisationinimage' => 'Afgebeelde organisatie',
+'exif-personinimage' => 'Afgebeelde persoon',
+'exif-originalimageheight' => 'Hoogte van de afbeelding voor bijsnijden',
+'exif-originalimagewidth' => 'Breedte van de afbeelding voor bijsnijden',
# EXIF attributes
'exif-compression-1' => 'Ongecomprimeerd',
+'exif-compression-2' => 'CCITT Groep 3 1-dimensionale aangepaste "Huffman run length"-codering',
+'exif-compression-3' => 'CCITT Groep 3 faxcodering',
+'exif-compression-4' => 'CCITT Groep 4 faxcodering',
+
+'exif-copyrighted-true' => 'Auteursrechtelijk beschermd',
+'exif-copyrighted-false' => 'Publiek domein',
'exif-unknowndate' => 'Datum onbekend',
@@ -3254,7 +3394,7 @@ Andere velden worden verborgen.
'exif-planarconfiguration-1' => 'chunky gegevensformaat',
'exif-planarconfiguration-2' => 'planar gegevensformaat',
-'exif-colorspace-ffff.h' => 'Ongekalibreerd',
+'exif-colorspace-65535' => 'Ongekalibreerd',
'exif-componentsconfiguration-0' => 'bestaat niet',
@@ -3369,6 +3509,10 @@ Andere velden worden verborgen.
'exif-gpslongitude-e' => 'Oosterlengte',
'exif-gpslongitude-w' => 'Westerlengte',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|meter}} boven de zeespiegel',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|meter}} onder de zeespiegel',
+
'exif-gpsstatus-a' => 'Bezig met meten',
'exif-gpsstatus-v' => 'Meetinteroperabiliteit',
@@ -3380,21 +3524,73 @@ Andere velden worden verborgen.
'exif-gpsspeed-m' => 'Mijl per uur',
'exif-gpsspeed-n' => 'Knopen',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometers',
+'exif-gpsdestdistance-m' => 'Mijlen',
+'exif-gpsdestdistance-n' => 'Knopen',
+
+'exif-gpsdop-excellent' => 'Uitstekend ($1)',
+'exif-gpsdop-good' => 'Goed ($1)',
+'exif-gpsdop-moderate' => 'Gemiddeld ($1)',
+'exif-gpsdop-fair' => 'Redelijk ($1)',
+'exif-gpsdop-poor' => 'Slecht ($1)',
+
+'exif-objectcycle-a' => "Alleen 's ochtends",
+'exif-objectcycle-p' => "Alleen 's avonds",
+'exif-objectcycle-b' => "Zowel 's ochtends als 's avonds",
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Eigenlijke richting',
'exif-gpsdirection-m' => 'Magnetische richting',
+'exif-ycbcrpositioning-1' => 'Gecentreerd',
+'exif-ycbcrpositioning-2' => 'Gecositueerd',
+
+'exif-dc-contributor' => 'Medewerkers',
+'exif-dc-coverage' => 'Ruimtelijke of temporele scope van media',
+'exif-dc-date' => 'Datum(s)',
+'exif-dc-publisher' => 'Uitgever',
+'exif-dc-relation' => 'Gerelateerde media',
+'exif-dc-rights' => 'Rechten',
+'exif-dc-source' => 'Bronmedia',
+'exif-dc-type' => 'Mediatype',
+
+'exif-rating-rejected' => 'Afgewezen',
+
+'exif-isospeedratings-overflow' => 'Groter dan 65535',
+
+'exif-iimcategory-ace' => 'Kunst, cultuur en vermaak',
+'exif-iimcategory-clj' => 'Misdaad en recht',
+'exif-iimcategory-dis' => 'Rampen en ongevallen',
+'exif-iimcategory-fin' => 'Economie en bedrijfsleven',
+'exif-iimcategory-edu' => 'Onderwijs',
+'exif-iimcategory-evn' => 'Milieu',
+'exif-iimcategory-hth' => 'Gezondheid',
+'exif-iimcategory-hum' => 'Human interest',
+'exif-iimcategory-lab' => 'Arbeid',
+'exif-iimcategory-lif' => 'Lifestyle en vrije tijd',
+'exif-iimcategory-pol' => 'Politiek',
+'exif-iimcategory-rel' => 'Godsdienst en overtuiging',
+'exif-iimcategory-sci' => 'Wetenschap en technologie',
+'exif-iimcategory-soi' => 'Sociale kwesties',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Oorlog, conflict en onrust',
+'exif-iimcategory-wea' => 'Weer',
+
+'exif-urgency-normal' => 'Normaal ($1)',
+'exif-urgency-low' => 'Laag ($1)',
+'exif-urgency-high' => 'Hoog ($1)',
+'exif-urgency-other' => 'Door gebruiker gedefinieerde prioriteit ($1)',
+
# External editor support
'edit-externally' => 'Dit bestand in een extern programma bewerken',
-'edit-externally-help' => '(zie de [http://www.mediawiki.org/wiki/Manual:External_editors handleiding voor instellingen] voor meer informatie)',
+'edit-externally-help' => '(zie de [//www.mediawiki.org/wiki/Manual:External_editors handleiding voor instellingen] voor meer informatie)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'alles',
-'imagelistall' => 'alle',
-'watchlistall2' => 'alles',
-'namespacesall' => 'alle',
-'monthsall' => 'alle',
-'limitall' => 'alle',
+'watchlistall2' => 'alles',
+'namespacesall' => 'alle',
+'monthsall' => 'alle',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'E-mailadres bevestigen',
@@ -3473,17 +3669,25 @@ $1",
'trackbackdeleteok' => 'De terugverwijzende pagina is verwijderd.',
# Delete conflict
-'deletedwhileediting' => "'''Let op''': deze pagina is verwijderd terwijl u bezig was met uw bewerking!",
-'confirmrecreate' => "Nadat u begonnen bent met uw wijziging heeft [[User:$1|$1]] ([[User talk:$1|overleg]]) deze pagina verwijderd met opgave van de volgende reden:
+'deletedwhileediting' => "'''Let op''': deze pagina is verwijderd terwijl u bezig was met uw bewerking!",
+'confirmrecreate' => "Nadat u begonnen bent met uw wijziging heeft [[User:$1|$1]] ([[User talk:$1|overleg]]) deze pagina verwijderd met opgave van de volgende reden:
: ''$2''
Bevestig dat u de pagina opnieuw wilt aanmaken.",
-'recreate' => 'Opnieuw aanmaken',
+'confirmrecreate-noreason' => 'Nadat u begonnen bent met uw wijziging heeft [[User:$1|$1]] ([[User talk:$1|overleg]]) deze pagina verwijderd.
+Bevestig dat u de pagina opnieuw wilt aanmaken.',
+'recreate' => 'Opnieuw aanmaken',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'De cache van deze pagina legen?',
'confirm-purge-bottom' => 'Het opschonen van de cache zorgt ervoor dat de meest recente versie van een pagina wordt weergegeven.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Deze pagina toevoegen aan uw volglijst?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Deze pagina verwijderen uit uw volglijst?',
+
# Multipage image navigation
'imgmultipageprev' => '↠vorige pagina',
'imgmultipagenext' => 'volgende pagina →',
@@ -3530,7 +3734,7 @@ Probeer normale voorvertoning.',
'watchlistedit-normal-legend' => 'Pagina’s van uw volglijst verwijderen',
'watchlistedit-normal-explain' => 'Hieronder worden de pagina’s op uw volglijst weergegeven.
Klik op het vierkantje ernaast en daarna op "{{int:Watchlistedit-normal-submit}}" om een pagina te verwijderen.
-U kunt ook de [[Special:Watchlist/raw|ruwe lijst bewerken]].',
+U kunt ook de [[Special:EditWatchlist/raw|ruwe lijst bewerken]].',
'watchlistedit-normal-submit' => "Pagina's verwijderen",
'watchlistedit-normal-done' => 'Er {{PLURAL:$1|is 1 pagina|zijn $1 pagina’s}} verwijderd van uw volglijst:',
'watchlistedit-raw-title' => 'Ruwe volglijst bewerken',
@@ -3539,7 +3743,7 @@ U kunt ook de [[Special:Watchlist/raw|ruwe lijst bewerken]].',
U kunt de lijst bewerken door pagina’s te verwijderen en toe te voegen.
Eén pagina per regel.
Als u klaar bent, klik dan op "{{int:Watchlistedit-raw-submit}}".
-U kunt ook [[Special:Watchlist/edit|het standaard bewerkingsscherm gebruiken]].',
+U kunt ook [[Special:EditWatchlist|het standaard bewerkingsscherm gebruiken]].',
'watchlistedit-raw-titles' => 'Pagina’s:',
'watchlistedit-raw-submit' => 'Volglijst bijwerken',
'watchlistedit-raw-done' => 'Uw volglijst is bijgewerkt.',
@@ -3570,33 +3774,33 @@ U kunt ook [[Special:Watchlist/edit|het standaard bewerkingsscherm gebruiken]].'
'duplicate-defaultsort' => 'Waarschuwing: De standaardsortering "$2" krijgt voorrang voor de sortering "$1".',
# Special:Version
-'version' => 'Softwareversie',
-'version-extensions' => 'Geïnstalleerde uitbreidingen',
-'version-specialpages' => "Speciale pagina's",
-'version-parserhooks' => 'Parserhooks',
-'version-variables' => 'Variabelen',
-'version-skins' => 'Vormgevingen',
-'version-other' => 'Overige',
-'version-mediahandlers' => 'Mediaverwerkers',
-'version-hooks' => 'Hooks',
-'version-extension-functions' => 'Uitbreidingsfuncties',
-'version-parser-extensiontags' => 'Parseruitbreidingstags',
-'version-parser-function-hooks' => 'Parserfunctiehooks',
-'version-skin-extension-functions' => 'Vormgevingsuitbreidingsfuncties',
-'version-hook-name' => 'Hooknaam',
-'version-hook-subscribedby' => 'Geabonneerd door',
-'version-version' => '(Versie $1)',
-'version-license' => 'Licentie',
-'version-poweredby-credits' => "Deze wiki wordt aangedreven door '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'anderen',
-'version-license-info' => 'MediaWiki is vrije software; u kunt MediaWiki verspreiden en/of aanpassen onder de voorwaarden van de GNU General Public License zoals gepubliceerd door de Free Software Foundation; ofwel versie 2 van de Licentie, of - naar uw wens - enige latere versie.
+'version' => 'Softwareversie',
+'version-extensions' => 'Geïnstalleerde uitbreidingen',
+'version-specialpages' => "Speciale pagina's",
+'version-parserhooks' => 'Parserhooks',
+'version-variables' => 'Variabelen',
+'version-antispam' => 'Spampreventie',
+'version-skins' => 'Vormgevingen',
+'version-other' => 'Overige',
+'version-mediahandlers' => 'Mediaverwerkers',
+'version-hooks' => 'Hooks',
+'version-extension-functions' => 'Uitbreidingsfuncties',
+'version-parser-extensiontags' => 'Parseruitbreidingstags',
+'version-parser-function-hooks' => 'Parserfunctiehooks',
+'version-hook-name' => 'Hooknaam',
+'version-hook-subscribedby' => 'Geabonneerd door',
+'version-version' => '(Versie $1)',
+'version-license' => 'Licentie',
+'version-poweredby-credits' => "Deze wiki wordt aangedreven door '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'anderen',
+'version-license-info' => 'MediaWiki is vrije software; u kunt MediaWiki verspreiden en/of aanpassen onder de voorwaarden van de GNU General Public License zoals gepubliceerd door de Free Software Foundation; ofwel versie 2 van de Licentie, of - naar uw wens - enige latere versie.
MediaWiki wordt verspreid in de hoop dat het nuttig is, maar ZONDER ENIGE GARANTIE; zonder zelfs de impliciete garantie van VERKOOPBAARHEID of GESCHIKTHEID VOOR ENIG DOEL IN HET BIJZONDER. Zie de GNU General Public License voor meer informatie.
-Samen met dit programma hoort u een [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van de GNU General Public License] te hebben ontvangen; zo niet, schrijf dan naar de Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA of [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html lees de licentie online].',
-'version-software' => 'Geïnstalleerde software',
-'version-software-product' => 'Product',
-'version-software-version' => 'Versie',
+Samen met dit programma hoort u een [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van de GNU General Public License] te hebben ontvangen; zo niet, schrijf dan naar de Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA of [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lees de licentie online].',
+'version-software' => 'Geïnstalleerde software',
+'version-software-product' => 'Product',
+'version-software-version' => 'Versie',
# Special:FilePath
'filepath' => 'Bestandslocatie',
@@ -3607,22 +3811,22 @@ Afbeeldingen worden in hun volledige resolutie weergegeven.
Andere bestandstypen worden direct in het met het MIME-type verbonden programma geopend.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Duplicaatbestanden zoeken',
-'fileduplicatesearch-summary' => 'Duplicaatbestanden zoeken op basis van de hashwaarde.
-
-Voer de bestandsnaam in zonder het voorvoegsel "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Duplicaatbestanden zoeken',
-'fileduplicatesearch-filename' => 'Bestandsnaam:',
-'fileduplicatesearch-submit' => 'Zoeken',
-'fileduplicatesearch-info' => '$1 × $2 pixels<br />Bestandsgrootte: $3<br />MIME-type: $4',
-'fileduplicatesearch-result-1' => 'Het bestand "$1" heeft geen duplicaten.',
-'fileduplicatesearch-result-n' => 'Het bestand "$1" heeft {{PLURAL:$2|één duplicaat|$2 duplicaten}}.',
+'fileduplicatesearch' => 'Duplicaatbestanden zoeken',
+'fileduplicatesearch-summary' => 'Duplicaatbestanden zoeken op basis van de hashwaarde.',
+'fileduplicatesearch-legend' => 'Duplicaatbestanden zoeken',
+'fileduplicatesearch-filename' => 'Bestandsnaam:',
+'fileduplicatesearch-submit' => 'Zoeken',
+'fileduplicatesearch-info' => '$1 × $2 pixels<br />Bestandsgrootte: $3<br />MIME-type: $4',
+'fileduplicatesearch-result-1' => 'Het bestand "$1" heeft geen duplicaten.',
+'fileduplicatesearch-result-n' => 'Het bestand "$1" heeft {{PLURAL:$2|één duplicaat|$2 duplicaten}}.',
+'fileduplicatesearch-noresults' => 'Er is geen bestand met de naam "$1" gevonden.',
# Special:SpecialPages
'specialpages' => "Speciale pagina's",
'specialpages-note' => '----
* Normale speciale pagina\'s
-* <strong class="mw-specialpagerestricted">Beperkt toegankelijke speciale pagina\'s</strong>',
+* <strong class="mw-specialpagerestricted">Beperkt toegankelijke speciale pagina\'s</strong>
+* <span class="mw-specialpagecached">Speciale pagina\'s met alleen gegevens uit de cache (mogelijk verouderd)</span>',
'specialpages-group-maintenance' => 'Onderhoudsrapporten',
'specialpages-group-other' => "Overige speciale pagina's",
'specialpages-group-login' => 'Aanmelden / registreren',
diff --git a/languages/messages/MessagesNl_informal.php b/languages/messages/MessagesNl_informal.php
index 4c1b37a6..1e3990c4 100644
--- a/languages/messages/MessagesNl_informal.php
+++ b/languages/messages/MessagesNl_informal.php
@@ -35,21 +35,20 @@ Het kan ook wijzen op een fout in de software van {{SITENAME}}.',
Een lijst met bestaande speciale pagina’s staat op [[Special:SpecialPages|speciale pagina’s]].',
# General errors
-'missing-article' => 'In de database is geen inhoud aangetroffen voor de pagina "$1" die er wel zou moeten zijn ($2).
+'missing-article' => 'In de database is geen inhoud aangetroffen voor de pagina "$1" die er wel zou moeten zijn ($2).
Dit kan voorkomen als je een verouderde verwijzing naar het verschil tussen twee versies van een pagina volgt of een versie opvraagt die is verwijderd.
Als dit niet het geval is, heb je wellicht een fout in de software gevonden.
Maak hiervan melding bij een [[Special:ListUsers/sysop|systeembeheerder]] van {{SITENAME}} en vermeld daarbij de URL van deze pagina.',
-'actionthrottledtext' => 'Als maatregel tegen spam is het aantal keren per tijdseenheid dat je deze handeling kunt verrichten beperkt.
+'actionthrottledtext' => 'Als maatregel tegen spam is het aantal keren per tijdseenheid dat je deze handeling kunt verrichten beperkt.
De limiet is overschreden.
Probeer het over een aantal minuten opnieuw.',
-'viewsourcetext' => 'Je kunt de brontekst van deze pagina bekijken en kopiëren:',
-'editinginterface' => "'''Waarschuwing:''' Je bewerkt een pagina die gebruikt wordt door de software.
+'viewsourcetext' => 'Je kunt de brontekst van deze pagina bekijken en kopiëren:',
+'editinginterface' => "'''Waarschuwing:''' Je bewerkt een pagina die gebruikt wordt door de software.
Bewerkingen op deze pagina beïnvloeden de gebruikersinterface van iedereen.
-Overweeg voor vertalingen om [http://translatewiki.net/wiki/Main_Page?setlang=nl translatewiki.net] te gebruiken, het vertalingsproject voor MediaWiki.",
-'namespaceprotected' => "Je hebt geen rechten om pagina's in de naamruimte '''$1''' te bewerken.",
-'customcssjsprotected' => 'Je kunt deze pagina niet bewerken, omdat die persoonlijke instellingen van een andere gebruiker bevat.',
+Overweeg voor vertalingen om [//translatewiki.net/wiki/Main_Page?setlang=nl translatewiki.net] te gebruiken, het vertalingsproject voor MediaWiki.",
+'namespaceprotected' => "Je hebt geen rechten om pagina's in de naamruimte '''$1''' te bewerken.",
# Login and logout pages
'logouttext' => "'''Je bent nu afgemeld.'''
@@ -108,7 +107,7 @@ Negeer dit bericht als deze gebruiker zonder jouw medeweten is aangemaakt.',
Wacht even voordat je het opnieuw probeert.',
'suspicious-userlogout' => 'Je verzoek om af te melden is genegeerd, omdat het lijkt alsof het verzoek is verzonden door een browser of cacheproxy die stuk is.',
-# Password reset dialog
+# Change password dialog
'resetpass_announce' => 'Je bent aangemeld met een tijdelijke code die je per e-mail is toegezonden.
Voer een nieuw wachtwoord in om het aanmelden te voltooien:',
'resetpass_success' => 'Je wachtwoord is gewijzigd.
@@ -178,7 +177,7 @@ Je kunt [[Special:Search/{{PAGENAME}}|naar deze term zoeken]] in andere pagina\'
'noarticletext-nopermission' => 'Deze pagina bevat geen tekst.
Je kunt [[Special:Search/{{PAGENAME}}|naar deze term zoeken]] in andere pagina\'s of
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} de logboeken doorzoeken]</span>.',
-'userpage-userdoesnotexist' => 'Je bewerkt een gebruikerspagina van een gebruiker die niet bestaat (gebruiker "$1").
+'userpage-userdoesnotexist' => 'Je bewerkt een gebruikerspagina van een gebruiker die niet bestaat (gebruiker "<nowiki>$1</nowiki>").
Controleer of je deze pagina wel wilt aanmaken/bewerken.',
'clearyourcache' => "'''Let op! Nadat je de wijzigingen hebt opgeslagen is het wellicht nodig je browsercache te legen.'''
@@ -357,10 +356,6 @@ Raadpleeg het verwijderingslogboek voordat je verder gaat.',
'uploadfromurl-queued' => 'Je upload is in de wachtrij geplaatst.',
'filewasdeleted' => 'Er is eerder een bestand met deze naam verwijderd.
Raadpleeg het $1 voordat je het opnieuw toevoegt.',
-'upload-wasdeleted' => "'''Waarschuwing: je bent een bestand dat eerder verwijderd was aan het uploaden.'''
-
-Controleer of het inderdaad je bedoeling is dit bestand te uploaden.
-Het verwijderingslogboek van dit bestand kunt je hier zien:",
'filename-bad-prefix' => "De naam van het bestand dat je aan het uploaden bent begint met '''\"\$1\"''', wat een niet-beschrijvende naam is die meestal automatisch door een digitale camera wordt gegeven.
Kies een duidelijke naam voor je bestand.",
'upload-success-msg' => 'Je upload van [$2] is geslaagd en is beschikbaar: [[:{{ns:file}}:$1]]',
@@ -447,13 +442,13 @@ Tenzij je deze pagina bezoekt, komen er geen verdere berichten. Op je volglijst
--
Je kunt je volglijstinstellingen wijzigen op:
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:Special:Watchlist/edit}}
Je kunt de pagina van uw volglijst verwijderen via de volgende verwijzing:
$UNWATCHURL
Feedback en andere assistentie:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'historywarning' => "'''Waarschuwing:''' de pagina die je wilt verwijderen heeft ongeveer $1 {{PLURAL:$1|versie|versies}}:",
@@ -466,7 +461,7 @@ Je handeling is gestopt uit voorzorg tegen een beveiligingsrisico (dat bestaat u
Ga een pagina terug, laad die pagina opnieuw en probeer het nog eens.',
# Protect
-'protect-text' => "Hier kun je het beveiligingsniveau voor de pagina '''<nowiki>$1</nowiki>''' bekijken en wijzigen.",
+'protect-text' => "Hier kun je het beveiligingsniveau voor de pagina '''$1''' bekijken en wijzigen.",
'protect-locked-blocked' => "Je kunt het beveiligingsniveau niet wijzigen terwijl je geblokkeerd bent.
Hier zijn de huidige instellingen voor de pagina '''$1''':",
'protect-locked-access' => "Je hebt geen rechten om het beveiligingsniveau te wijzigen.
@@ -481,8 +476,7 @@ Mogelijk heb je een verkeerde verwijzing of is de versie hersteld of verwijderd
'undelete-show-file-confirm' => 'Weet je zeker dat je een verwijderde versie van het bestand "<nowiki>$1</nowiki>" van $2 om $3 wil bekijken?',
# Block/unblock
-'ipb-needreblock' => '== Deze gebruiker is al geblokkeerd ==
-$1 is al geblokkeerd.
+'ipb-needreblock' => '$1 is al geblokkeerd.
Wil je de instellingen wijzigen?',
'proxyblockreason' => 'Dit is een automatische preventieve blokkade, omdat je gebruik maakt van een open proxyserver.
Neem contact op met je Internet-provider of je helpdesk en stel die op de hoogte van dit ernstige beveiligingsprobleem.',
@@ -544,7 +538,7 @@ In het laatste geval kun je ook een verwijzing gebruiken, bijvoorbeeld [[{{#Spec
# Namespace 8 related
'allmessagestext' => 'Hieronder staan de systeemberichten uit de MediaWiki-naamruimte.
-Ga naar [http://www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [http://translatewiki.net translatewiki.net] als je wilt bijdragen aan de algemene vertaling voor MediaWiki.',
+Ga naar [//www.mediawiki.org/wiki/Localisation MediaWiki-lokalisatie] en [//translatewiki.net translatewiki.net] als je wilt bijdragen aan de algemene vertaling voor MediaWiki.',
# Special:Import
'importtext' => 'Gebruik de [[Special:Export|exportfunctie]] in de wiki waar de informatie vandaan komt, sla de uitvoer op je eigen systeem op, en voeg die daarna hier toe.',
@@ -633,13 +627,13 @@ Bevestig dat je de pagina opnieuw wilt aanmaken.",
'watchlistedit-noitems' => 'Je volglijst bevat geen pagina’s.',
'watchlistedit-normal-explain' => 'Hieronder worden de pagina’s op je volglijst weergegeven.
Klik op het vierkantje ernaast en daarna op "{{int:Watchlistedit-normal-submit}}" om een pagina te verwijderen.
-Je kunt ook de [[Special:Watchlist/raw|ruwe lijst bewerken]].',
+Je kunt ook de [[Special:EditWatchlist/raw|ruwe lijst bewerken]].',
'watchlistedit-normal-done' => 'Er {{PLURAL:$1|is 1 pagina|zijn $1 pagina’s}} verwijderd van je volglijst:',
'watchlistedit-raw-explain' => 'Hieronder staan pagina’s op je volglijst.
Je kunt de lijst bewerken door pagina’s te verwijderen en toe te voegen.
Eén pagina per regel.
Als je klaar bent, klik dan op "{{int:Watchlistedit-raw-submit}}".
-Je kunt ook [[Special:Watchlist/edit|het standaard bewerkingsscherm gebruiken]].',
+Je kunt ook [[Special:EditWatchlist|het standaard bewerkingsscherm gebruiken]].',
'watchlistedit-raw-done' => 'Jr volglijst is bijgewerkt.',
# Special:Version
@@ -647,7 +641,7 @@ Je kunt ook [[Special:Watchlist/edit|het standaard bewerkingsscherm gebruiken]].
MediaWiki wordt verspreid in de hoop dat het nuttig is, maar ZONDER ENIGE GARANTIE; zonder zelfs de implicitiete garantie van VERKOOPBAARHEID of GESCHIKHEID VOOR ENIG DOEL IN HET BIJZONDER. Zie de GNU General Public License voor meer informatie.
-Samen met dit programma hoor je een [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van de GNU General Public License] te hebben ontvangen; zo niet, schrijf dan naar de Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA of [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html lees de licentie online].',
+Samen met dit programma hoor je een [{{SERVER}}{{SCRIPTPATH}}/COPYING kopie van de GNU General Public License] te hebben ontvangen; zo niet, schrijf dan naar de Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA of [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lees de licentie online].',
# Database error messages
'dberr-usegoogle' => 'Wellicht kun je in de tussentijd zoeken via Google.',
diff --git a/languages/messages/MessagesNn.php b/languages/messages/MessagesNn.php
index f6c148ce..9e6ba6c2 100644
--- a/languages/messages/MessagesNn.php
+++ b/languages/messages/MessagesNn.php
@@ -185,93 +185,95 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Doble_omdirigeringar' ),
+ 'Allmessages' => array( 'Alle_systemmeldingar' ),
+ 'Allpages' => array( 'Alle_sider' ),
+ 'Ancientpages' => array( 'Gamle_sider' ),
+ 'Blankpage' => array( 'Tom_side' ),
+ 'Block' => array( 'Blokker' ),
+ 'Blockme' => array( 'Blokker_meg' ),
+ 'Booksources' => array( 'Bokkjelder' ),
'BrokenRedirects' => array( 'Blindvegsomdirigeringar' ),
- 'Disambiguations' => array( 'Fleirtydingssider' ),
- 'Userlogin' => array( 'Logg_inn' ),
- 'Userlogout' => array( 'Logg_ut' ),
+ 'Categories' => array( 'Kategoriar' ),
+ 'ChangePassword' => array( 'Nullstill_passord' ),
+ 'Confirmemail' => array( 'Stadfest_e-postadresse' ),
+ 'Contributions' => array( 'Bidrag' ),
'CreateAccount' => array( 'Opprett_konto' ),
- 'Preferences' => array( 'Innstillingar' ),
- 'Watchlist' => array( 'Overvakingsliste' ),
- 'Recentchanges' => array( 'Siste_endringar' ),
- 'Upload' => array( 'Last_opp' ),
+ 'Deadendpages' => array( 'Blindvegsider' ),
+ 'DeletedContributions' => array( 'Sletta_brukarbidrag' ),
+ 'Disambiguations' => array( 'Fleirtydingssider' ),
+ 'DoubleRedirects' => array( 'Doble_omdirigeringar' ),
+ 'Emailuser' => array( 'E-post' ),
+ 'Export' => array( 'Eksport' ),
+ 'Fewestrevisions' => array( 'Færrast_endringar' ),
+ 'FileDuplicateSearch' => array( 'Filduplikatsøk' ),
+ 'Filepath' => array( 'Filstig', 'Filsti' ),
+ 'Import' => array( 'Importer' ),
+ 'Invalidateemail' => array( 'Gjer_e-post_ugyldig' ),
+ 'BlockList' => array( 'Blokkeringsliste' ),
+ 'LinkSearch' => array( 'Lenkjesøk' ),
+ 'Listadmins' => array( 'Administratorliste', 'Administratorar' ),
+ 'Listbots' => array( 'Bottliste', 'Bottar' ),
'Listfiles' => array( 'Filliste' ),
- 'Newimages' => array( 'Nye_filer' ),
- 'Listusers' => array( 'Brukarliste' ),
'Listgrouprights' => array( 'Grupperettar' ),
- 'Statistics' => array( 'Statistikk' ),
- 'Randompage' => array( 'Tilfeldig_side' ),
+ 'Listredirects' => array( 'Omdirigeringsliste' ),
+ 'Listusers' => array( 'Brukarliste' ),
+ 'Lockdb' => array( 'LÃ¥s_database' ),
+ 'Log' => array( 'Logg', 'Loggar' ),
'Lonelypages' => array( 'Foreldrelause_sider' ),
- 'Uncategorizedpages' => array( 'Ukategoriserte_sider' ),
- 'Uncategorizedcategories' => array( 'Ukategoriserte_kategoriar' ),
- 'Uncategorizedimages' => array( 'Ukategoriserte_filer' ),
- 'Uncategorizedtemplates' => array( 'Ukategoriserte_malar' ),
- 'Unusedcategories' => array( 'Ubrukte_kategoriar' ),
- 'Unusedimages' => array( 'Ubrukte_filer' ),
- 'Wantedpages' => array( 'Etterspurde_sider' ),
- 'Wantedcategories' => array( 'Etterspurde_kategoriar' ),
- 'Wantedfiles' => array( 'Etterspurde_filer' ),
- 'Wantedtemplates' => array( 'Etterspurde_malar' ),
+ 'Longpages' => array( 'Lange_sider' ),
+ 'MergeHistory' => array( 'Flettehistorie' ),
+ 'MIMEsearch' => array( 'MIME-søk' ),
+ 'Mostcategories' => array( 'Flest_kategoriar' ),
+ 'Mostimages' => array( 'Mest_brukte_filer' ),
'Mostlinked' => array( 'Mest_lenka_sider' ),
'Mostlinkedcategories' => array( 'Mest_brukte_kategoriar' ),
'Mostlinkedtemplates' => array( 'Mest_brukte_malar' ),
- 'Mostimages' => array( 'Mest_brukte_filer' ),
- 'Mostcategories' => array( 'Flest_kategoriar' ),
'Mostrevisions' => array( 'Flest_endringar' ),
- 'Fewestrevisions' => array( 'Færrast_endringar' ),
- 'Shortpages' => array( 'Korte_sider' ),
- 'Longpages' => array( 'Lange_sider' ),
+ 'Movepage' => array( 'Flytt_side' ),
+ 'Mycontributions' => array( 'Bidraga_mine' ),
+ 'Mypage' => array( 'Sida_mi' ),
+ 'Mytalk' => array( 'Diskusjonssida_mi' ),
+ 'Myuploads' => array( 'Opplastingane_mine' ),
+ 'Newimages' => array( 'Nye_filer' ),
'Newpages' => array( 'Nye_sider' ),
- 'Ancientpages' => array( 'Gamle_sider' ),
- 'Deadendpages' => array( 'Blindvegsider' ),
+ 'PermanentLink' => array( 'Permanent_lenkje' ),
+ 'Popularpages' => array( 'Populære_sider' ),
+ 'Preferences' => array( 'Innstillingar' ),
+ 'Prefixindex' => array( 'Prefiksindeks' ),
'Protectedpages' => array( 'Verna_sider' ),
'Protectedtitles' => array( 'Verna_sidenamn' ),
- 'Allpages' => array( 'Alle_sider' ),
- 'Prefixindex' => array( 'Prefiksindeks' ),
- 'Ipblocklist' => array( 'Blokkeringsliste' ),
- 'Specialpages' => array( 'Spesialsider' ),
- 'Contributions' => array( 'Bidrag' ),
- 'Emailuser' => array( 'E-post' ),
- 'Confirmemail' => array( 'Stadfest_e-postadresse' ),
- 'Whatlinkshere' => array( 'Lenkjer_hit' ),
+ 'Randompage' => array( 'Tilfeldig_side' ),
+ 'Randomredirect' => array( 'Tilfeldig_omdirigering' ),
+ 'Recentchanges' => array( 'Siste_endringar' ),
'Recentchangeslinked' => array( 'Relaterte_endringar' ),
- 'Movepage' => array( 'Flytt_side' ),
- 'Blockme' => array( 'Blokker_meg' ),
- 'Booksources' => array( 'Bokkjelder' ),
- 'Categories' => array( 'Kategoriar' ),
- 'Export' => array( 'Eksport' ),
- 'Version' => array( 'Versjon' ),
- 'Allmessages' => array( 'Alle_systemmeldingar' ),
- 'Log' => array( 'Logg', 'Loggar' ),
- 'Blockip' => array( 'Blokker' ),
+ 'Revisiondelete' => array( 'Versjonssletting' ),
+ 'Search' => array( 'Søk' ),
+ 'Shortpages' => array( 'Korte_sider' ),
+ 'Specialpages' => array( 'Spesialsider' ),
+ 'Statistics' => array( 'Statistikk' ),
+ 'Tags' => array( 'Merke' ),
+ 'Uncategorizedcategories' => array( 'Ukategoriserte_kategoriar' ),
+ 'Uncategorizedimages' => array( 'Ukategoriserte_filer' ),
+ 'Uncategorizedpages' => array( 'Ukategoriserte_sider' ),
+ 'Uncategorizedtemplates' => array( 'Ukategoriserte_malar' ),
'Undelete' => array( 'Attopprett' ),
- 'Import' => array( 'Importer' ),
- 'Lockdb' => array( 'LÃ¥s_database' ),
'Unlockdb' => array( 'Opne_database' ),
- 'Userrights' => array( 'Brukarrettar' ),
- 'MIMEsearch' => array( 'MIME-søk' ),
- 'FileDuplicateSearch' => array( 'Filduplikatsøk' ),
- 'Unwatchedpages' => array( 'Uovervaka_sider' ),
- 'Listredirects' => array( 'Omdirigeringsliste' ),
- 'Revisiondelete' => array( 'Versjonssletting' ),
+ 'Unusedcategories' => array( 'Ubrukte_kategoriar' ),
+ 'Unusedimages' => array( 'Ubrukte_filer' ),
'Unusedtemplates' => array( 'Ubrukte_malar' ),
- 'Randomredirect' => array( 'Tilfeldig_omdirigering' ),
- 'Mypage' => array( 'Sida_mi' ),
- 'Mytalk' => array( 'Diskusjonssida_mi' ),
- 'Mycontributions' => array( 'Bidraga_mine' ),
- 'Listadmins' => array( 'Administratorliste', 'Administratorar' ),
- 'Listbots' => array( 'Bottliste', 'Bottar' ),
- 'Popularpages' => array( 'Populære_sider' ),
- 'Search' => array( 'Søk' ),
- 'Resetpass' => array( 'Nullstill_passord' ),
+ 'Unwatchedpages' => array( 'Uovervaka_sider' ),
+ 'Upload' => array( 'Last_opp' ),
+ 'Userlogin' => array( 'Logg_inn' ),
+ 'Userlogout' => array( 'Logg_ut' ),
+ 'Userrights' => array( 'Brukarrettar' ),
+ 'Version' => array( 'Versjon' ),
+ 'Wantedcategories' => array( 'Etterspurde_kategoriar' ),
+ 'Wantedfiles' => array( 'Etterspurde_filer' ),
+ 'Wantedpages' => array( 'Etterspurde_sider' ),
+ 'Wantedtemplates' => array( 'Etterspurde_malar' ),
+ 'Watchlist' => array( 'Overvakingsliste' ),
+ 'Whatlinkshere' => array( 'Lenkjer_hit' ),
'Withoutinterwiki' => array( 'Utan_interwiki' ),
- 'MergeHistory' => array( 'Flettehistorie' ),
- 'Filepath' => array( 'Filsti' ),
- 'Invalidateemail' => array( 'Gjer_e-post_ugyldig' ),
- 'Blankpage' => array( 'Tom_side' ),
- 'LinkSearch' => array( 'Lenkjesøk' ),
- 'DeletedContributions' => array( 'Sletta_brukarbidrag' ),
- 'Tags' => array( 'Merke' ),
);
$separatorTransformTable = array(
@@ -312,9 +314,9 @@ $messages = array(
'tog-shownumberswatching' => 'Vis kor mange som overvakar sida',
'tog-oldsig' => 'Noverande signatur:',
'tog-fancysig' => 'Handsam signaturar som wikitekst (utan automatisk lenking)',
-'tog-externaleditor' => 'Bruk eit eksternt handsamingsprogram som standard (berre for vidarekomne, krev eit spesielt oppsett på maskina di. [http://www.mediawiki.org/wiki/Manual:External_editors Meir informasjon.])',
+'tog-externaleditor' => 'Bruk eit eksternt handsamingsprogram som standard (berre for vidarekomne, krev eit spesielt oppsett på maskina di. [//www.mediawiki.org/wiki/Manual:External_editors Meir informasjon.])',
'tog-externaldiff' => 'Bruk eit eksternt skilnadprogram som standard (berre for vidarekomne, krev eit spesielt oppsett på maskina di.
-[http://www.mediawiki.org/wiki/Manual:External_editors Meir informasjon.])',
+[//www.mediawiki.org/wiki/Manual:External_editors Meir informasjon.])',
'tog-showjumplinks' => 'Slå på «gå til»-lenkjer',
'tog-uselivepreview' => 'Bruk levande førehandsvising (eksperimentelt JavaScript)',
'tog-forceeditsummary' => 'Spør meg når eg ikkje har skrive noko i endringssamandraget',
@@ -411,15 +413,9 @@ $messages = array(
'listingcontinuesabbrev' => 'vidare',
'index-category' => 'Indekserte sider',
'noindex-category' => 'Ikkje-indekserte sider',
+'broken-file-category' => 'Sider med brotne fillenkjer',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''MediaWiki er no installert.'''",
-'mainpagedocfooter' => 'Sjå [http://meta.wikimedia.org/wiki/Help:Contents brukarmanualen] for informasjon om bruk og oppsettshjelp for wikiprogramvara.
-
-==Kome i gang==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste over oppsettsinnstillingar]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Spørsmål og svar om MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postliste med informasjon om nye MediaWiki-versjonar]',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Om',
'article' => 'Innhaldsside',
@@ -471,10 +467,10 @@ $messages = array(
'history' => 'Sidehistorikk',
'history_short' => 'Historikk',
'updatedmarker' => 'oppdatert etter førre vitjinga mi',
-'info_short' => 'Informasjon',
'printableversion' => 'Utskriftsversjon',
'permalink' => 'Fast lenkje',
'print' => 'Skriv ut',
+'view' => 'Sjå',
'edit' => 'Endre',
'create' => 'Opprett',
'editthispage' => 'Endre sida',
@@ -482,6 +478,7 @@ $messages = array(
'delete' => 'Slett',
'deletethispage' => 'Slett denne sida',
'undelete_short' => 'Attopprett {{PLURAL:$1|éin versjon|$1 versjonar}}',
+'viewdeleted_short' => 'Vis {{PLURAL:$1|éin sletta versjon|$1 sletta versjonar}}',
'protect' => 'Vern',
'protect_change' => 'endre',
'protectthispage' => 'Vern denne sida',
@@ -565,6 +562,8 @@ $1',
'toc' => 'Innhaldsliste',
'showtoc' => 'vis',
'hidetoc' => 'gøym',
+'collapsible-collapse' => 'Slå saman.',
+'collapsible-expand' => 'Utvid',
'thisisdeleted' => 'Sjå eller attopprett $1?',
'viewdeleted' => 'Sjå historikk for $1?',
'restorelink' => '{{PLURAL:$1|Éin sletta versjon|$1 sletta versjonar}}',
@@ -576,6 +575,8 @@ $1',
'page-rss-feed' => '«$1» RSS-kjelde',
'page-atom-feed' => '«$1» Atom-kjelde',
'red-link-title' => '$1 (sida finst ikkje)',
+'sort-descending' => '↓Sorter fallande',
+'sort-ascending' => '↓Sorter stigande',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Side',
@@ -647,12 +648,13 @@ Ho kan allereie vere sletta av andre.',
'protectedpagetext' => 'Denne sida er verna for å hindre endring.',
'viewsourcetext' => 'Du kan sjå og kopiere kjeldekoden til denne sida:',
'protectedinterface' => 'Denne sida inneheld tekst som er brukt av brukargrensesnittet for programvara, og er difor låst for å hindre hærverk.',
-'editinginterface' => "'''Åtvaring:''' Du endrar på ei side som inneheld tekst som er brukt av brukargrensesnittet for programvara. Endringar på denne sida påverkar utsjånaden til sida for dei andre brukarane. Dersom du ynskjer å setje om, ver venleg og vurder å bruke [http://translatewiki.net/wiki/Main_Page?setlang=nn translatewiki.net], prosjektet for omsetjing av MediaWiki.",
+'editinginterface' => "'''Åtvaring:''' Du endrar på ei side som inneheld tekst som er brukt av brukargrensesnittet for programvara. Endringar på denne sida påverkar utsjånaden til sida for dei andre brukarane. Dersom du ynskjer å setje om, ver venleg og vurder å bruke [//translatewiki.net/wiki/Main_Page?setlang=nn translatewiki.net], prosjektet for omsetjing av MediaWiki.",
'sqlhidden' => '(SQL-førespurnaden er gøymd)',
'cascadeprotected' => 'Denne sida er verna mot endring fordi ho er inkludert i {{PLURAL:$1|den opplista sida|dei opplista sidene}} som har djupvern slått på:
$2',
'namespaceprotected' => "Du har ikkje tilgang til å endre sidene i '''$1'''-namnerommet.",
-'customcssjsprotected' => 'Du har ikkje tilgang til å endre denne sida, fordi ho inneheld ein annan brukar sine personlege innstillingar.',
+'customcssprotected' => '↓Du har ikkje tilgang til å endre denne sida, fordi ho inneheld ein annan brukar sine personlege innstillingar.',
+'customjsprotected' => '↓Du har ikkje tilgang til å endra denne JavaScript-sida fordi ho inneheld ein annen brukar sine personlege innstillingar.',
'ns-specialprotected' => 'Sider i {{ns:special}}-namnerommet kan ikkje endrast.',
'titleprotected' => "Denne sidetittelen er verna mot oppretting av [[User:$1|$1]].
Grunnen som er gjeven er: ''$2''.",
@@ -690,6 +692,7 @@ Hugs at du kan endre på [[Special:Preferences|innstillingane]] dine.',
'createaccount' => 'Opprett ny konto',
'gotaccount' => "Har du ein brukarkonto? '''$1'''.",
'gotaccountlink' => 'Logg inn',
+'userlogin-resetlink' => 'Har du gløymd påloggingsopplysingane dine?',
'createaccountmail' => 'over e-post',
'createaccountreason' => 'Ã…rsak:',
'badretype' => 'Passorda du skreiv inn er ikkje like.',
@@ -700,12 +703,14 @@ Hugs at du kan endre på [[Special:Preferences|innstillingane]] dine.',
nettlesaren din er innstilt for ikkje å godta desse. Etter at du har endra innstillingane slik at nettlesaren godtek informasjonskapslar, kan du logge inn med det nye brukarnamnet og passordet ditt.',
'nocookieslogin' => '{{SITENAME}} bruker informasjonskapslar for å logge inn brukarar, nettlesaren din er innstilt for ikkje å godta desse.
Etter at du har endra innstillingane slik at nettlesaren godtek informasjonskapslar kan du prøve å logge inn på nytt.',
+'nocookiesfornew' => 'Brukarkontoen blei ikkje oppretta ettersom kjelda ikkje kunne stadfestast.
+Sjå etter om du tek imot informasjonskapslar (cookies), last ned sida ein gong til og prøv igjen.',
'noname' => 'Du har ikkje oppgjeve gyldig brukarnamn.',
'loginsuccesstitle' => 'Du er no innlogga',
'loginsuccess' => 'Du er no innlogga som «$1».',
'nosuchuser' => 'Det finst ikkje nokon brukar med brukarnamnet «$1».
Brukarnamn skil mellom stor og liten bokstav. Sjekk at du har skrive brukarnamet rett eller [[Special:UserLogin/signup|opprett ein ny konto]].',
-'nosuchusershort' => 'Det finst ikkje nokon brukar med brukarnamnet «<nowiki>$1</nowiki>». Sjekk at du har skrive rett.',
+'nosuchusershort' => 'Det finst ikkje nokon brukar med brukarnamnet «$1». Sjekk at du har skrive rett.',
'nouserspecified' => 'Du må oppgje eit brukarnamn.',
'login-userblocked' => 'Denne brukaren er blokkert. Innlogging er ikkje tillate.',
'wrongpassword' => 'Du har oppgjeve eit ugyldig passord. Prøv om att.',
@@ -742,13 +747,14 @@ Grunna dette vil ikkje vitjande som nyttar denne IP-adressa kunna oppretta nye k
Du kan sjå bort frå denne meldinga dersom kontoen vart oppretta med eit uhell.',
'usernamehasherror' => 'Brukarnamn kan ikkje innehalda nummerteikn.',
'login-throttled' => 'Du har prøvd å logge inn for mange gonger. Ver venleg og vent før du prøver igjen.',
+'login-abort-generic' => 'Innlogginga er avbroten.',
'loginlanguagelabel' => 'Språk: $1',
'suspicious-userlogout' => 'Førespurnaden din om å logge ut vart nekta fordi han såg ut til å vere sendt av ein øydelagt nettlesar eller mellomtenar.',
# E-mail sending
'php-mail-error-unknown' => 'Ukjend feil i PHPs mail()-funksjon',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Endra passord',
'resetpass_announce' => 'Du logga inn med eit mellombels passord du fekk på e-post. For å fullføre innlogginga må du lage eit nytt passord her:',
'resetpass_text' => '<!-- Legg til tekst her -->',
@@ -766,6 +772,26 @@ Du kan sjå bort frå denne meldinga dersom kontoen vart oppretta med eit uhell.
Du kan allereie ha byta passordet, eller ha bede om å få eit nytt mellombels passord.',
'resetpass-temp-password' => 'Mellombels passord:',
+# Special:PasswordReset
+'passwordreset' => 'Attendestilling av passord',
+'passwordreset-text' => '↓Fyll ut dette skjemaet for å motta ei påminning om kontoopplysningane dine i ein e-post.',
+'passwordreset-legend' => '↓Nullstill passordet',
+'passwordreset-disabled' => '↓Tilbakestilling av passord er ikkje aktivert på denne wikien',
+'passwordreset-pretext' => '↓{{PLURAL:$1||Tast inn ein av datadelane nedanfor}}',
+'passwordreset-username' => 'Brukarnamn:',
+'passwordreset-domain' => 'Domene:',
+'passwordreset-email' => '↓E-postadresse:',
+'passwordreset-emailtitle' => '↓Kontodetaljar på {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Nokon (sannsynleg deg, frå IP-adresse $1) ba om ei påminning om kontodetaljane dine for {{SITENAME}} ($4). Følgjane brukar {{PLURAL:$3|brukar|brukarar}} er assosiert med denne epost-adressa:
+
+$2
+
+{{PLURAL:$3|Dette førebelse passordet|Desse førebelse passorda}} vil løpe ut om {{PLURAL:$5|ein dag|$5 dagar}}.
+Du bør logge inn og velje eit nytt passord no. Dersom nokon andre kom med denne førespurnaden, eller dersom du hugsar ditt opprinnelege passord, og du ikkje ynskjar å endre det, kan du ignorere denne eposten, og halde fram med å bruke ditt gamle passord.',
+'passwordreset-emailelement' => '↓Brukarnamn: $1
+Mellombels passord: $2',
+'passwordreset-emailsent' => '↓Ei påminning har vorte sendt på e-post.',
+
# Edit page toolbar
'bold_sample' => 'Halvfeit skrift',
'bold_tip' => 'Halvfeit skrift',
@@ -777,8 +803,6 @@ Du kan allereie ha byta passordet, eller ha bede om å få eit nytt mellombels p
'extlink_tip' => 'Ekstern lenkje (hugs http:// prefiks)',
'headline_sample' => 'Overskriftstekst',
'headline_tip' => '2. nivå-overskrift',
-'math_sample' => 'Skriv formel her',
-'math_tip' => 'Matematisk formel (LaTeX)',
'nowiki_sample' => 'Skriv uformatert tekst her',
'nowiki_tip' => 'Sjå bort frå wikiformatering',
'image_sample' => 'Døme.jpg',
@@ -860,7 +884,7 @@ eller [{{fullurl:{{FULLPAGENAME}}|action=edit}} endra denne sida]</span>.',
'noarticletext-nopermission' => 'Der er nett no ikkje noko tekst på denne sida.
Du kan [[Special:Search/{{PAGENAME}}|søkja etter tittelen på denne sida]] på andre sider,
eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sjå loggføringar med tilknytting]</span>.',
-'userpage-userdoesnotexist' => 'Brukarkontoen «$1» finst ikkje. Vil du verkeleg opprette/endre denne sida?',
+'userpage-userdoesnotexist' => 'Brukarkontoen «<nowiki>$1</nowiki>» finst ikkje. Vil du verkeleg opprette/endre denne sida?',
'userpage-userdoesnotexist-view' => 'Brukarkontoen «$1» er ikkje oppretta.',
'blocked-notice-logextract' => 'Denne brukaren er for tida blokkert.
Det siste elementet i blokkeringsloggen er oppgjeve nedanfor:',
@@ -885,6 +909,7 @@ Det siste elementet i blokkeringsloggen er oppgjeve nedanfor:',
'''Dersom dette er eit heilt vanleg forsøk på endring, prøv ein gong til. Dersom det framleis ikkje går, prøv å logge deg ut og inn att.'''",
'token_suffix_mismatch' => "'''Endringa di vart avvist fordi klienten/nettlesaren din lagar teiknfeil i teksten. Dette vart gjort for å hindre øydelegging av teksten på sida. Slikt kan av og til hende når ein brukar feilprogrammerte og vevbaserte anonyme proxytenester.'''",
+'edit_form_incomplete' => 'Delar av redigeringsskjemaet nådde ikkje fram til tenaren; dobbelsjekk at redigeringa er korrekt, og prøv om att.',
'editing' => 'Endrar $1',
'editingsection' => 'Endrar $1 (bolk)',
'editingcomment' => 'Endrar $1 (ny bolk)',
@@ -1241,9 +1266,10 @@ Ver merksam på at registra deira kan vera utdaterte.',
'changepassword' => 'Skift passord',
'prefs-skin' => 'Drakt',
'skin-preview' => 'førehandsvis',
-'prefs-math' => 'Matematiske formlar',
'datedefault' => 'Standard',
+'prefs-beta' => 'Betafunksjonar',
'prefs-datetime' => 'Dato og klokkeslett',
+'prefs-labs' => 'Testfunksjonar',
'prefs-personal' => 'Brukaropplysningar',
'prefs-rc' => 'Siste endringar',
'prefs-watchlist' => 'Overvakingsliste',
@@ -1265,8 +1291,6 @@ Ver merksam på at registra deira kan vera utdaterte.',
'columns' => 'Kolonnar',
'searchresultshead' => 'Søk',
'resultsperpage' => 'Resultat per side',
-'contextlines' => 'Liner per resultat',
-'contextchars' => 'Teikn per line i resultatet',
'stub-threshold' => 'Grense (i byte) for at frø/spirer skal formaterast <a href="#" class="stub">slik</a>:',
'stub-threshold-disabled' => 'Deaktivert',
'recentchangesdays' => 'Tal på dagar som viser på siste endringar:',
@@ -1279,7 +1303,7 @@ Her er det framlegg til eit tal som kan nyttast, tilfelleleg henta fram: $1',
'savedprefs' => 'Brukarinnstillingane er lagra.',
'timezonelegend' => 'Tidssone:',
'localtime' => 'Lokaltid:',
-'timezoneuseserverdefault' => 'Nytt standardinnstillinga til tenaren',
+'timezoneuseserverdefault' => '↓Nytt standardinnstillinga til wikien ($1)',
'timezoneuseoffset' => 'Anna (oppgje skilnad)',
'timezoneoffset' => 'Skilnad¹:',
'servertime' => 'Tenartid:',
@@ -1326,8 +1350,8 @@ Dette kan ikke tilbakestillast.',
'prefs-help-gender' => 'Valfritt: nytta for kjønnskorrekt referering frå mjukvara. Denne informasjonen vil vera offentleg.',
'email' => 'E-post',
'prefs-help-realname' => '* Namn (valfritt): Om du vel å fylle ut dette feltet, vil informasjonen bli brukt til å godskrive arbeid du har gjort.',
-'prefs-help-email' => 'Å oppgje e-postadresse er valfritt, men lar deg ta i mot nytt passord om du gløymer det gamle.
-Du kan òg velje å la andre brukarar kontakte deg på e-post via brukarsida di utan å røpe identiteten din.',
+'prefs-help-email' => 'Å oppgje e-postadresse er valfritt, men lar deg ta i mot nytt passord om du gløymer det gamle.',
+'prefs-help-email-others' => 'Du kan òg velje å la andre brukarar kontakte deg på e-post via brukarsida di utan å røpe identiteten din.',
'prefs-help-email-required' => 'E-postadresse må oppgjevast.',
'prefs-info' => 'Grunnleggjande informasjon',
'prefs-i18n' => 'Internasjonalisering',
@@ -1452,15 +1476,15 @@ Du kan òg velje å la andre brukarar kontakte deg på e-post via brukarsida di
'right-userrights' => 'Endre alle brukarrettar',
'right-userrights-interwiki' => 'Endre rettar for brukarar på andre wikiar',
'right-siteadmin' => 'Låse og låse opp databasen',
-'right-reset-passwords' => 'Nullstilla passorda til andre brukarar',
'right-override-export-depth' => 'Eksporter sider inkludert lenkte sider til ei djupn på 5',
'right-sendemail' => 'Senda e-post til andre brukarar',
# User rights log
-'rightslog' => 'Brukartilgangslogg',
-'rightslogtext' => 'Dette er ein logg over endringar av brukartilgang.',
-'rightslogentry' => 'endra brukartilgangen til $1 frå $2 til $3',
-'rightsnone' => '(ingen)',
+'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',
+'rightsnone' => '(ingen)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'sjå denne sida',
@@ -1603,6 +1627,7 @@ For å bruke ei fil på ei side, bruk ei lenkje på eit liknande format:
'large-file' => 'Det er tilrådd at filene ikkje er større enn $1, denne fila er $2.',
'largefileserver' => 'Denne fila er større enn det tenaren tillèt.',
'emptyfile' => 'Det ser ut til at fila du lasta opp er tom. Dette kan komma av ein skrivefeil i filnamnet. Sjekk og tenk etter om du verkeleg vil laste opp fila.',
+'windows-nonascii-filename' => 'Wikien stør ikkje filnamn med spesialteikn.',
'fileexists' => "Ei fil med dette namnet finst allereie, sjekk '''<tt>[[:$1]]</tt>''' om du ikkje er sikker på om du vil endre namnet.
[[$1|thumb]]",
'filepageexists' => "Skildringssida for denne fila finst allereie på '''<tt>[[:$1]]</tt>''', men det finst ikkje noka fil med dette namnet. Endringssamandraget du skriv inn vert ikkje vist på skildringssida. For at det skal dukke opp der, må du skrive det inn på skildringssida manuelt etter å ha lasta opp fila.
@@ -1643,10 +1668,6 @@ Om du framleis ønskjer å laste opp fila, gå tilbake og last ho opp med eit an
'upload-options' => 'Val for opplasting',
'watchthisupload' => 'Overvak denne fila',
'filewasdeleted' => 'Ei fil med same namnet er tidlegare vorte lasta opp og sletta. Du bør sjekke $1 før du prøver å laste henne opp att.',
-'upload-wasdeleted' => "'''Ã…tvaring: Du nyopplastar ei fil som tidlegare har vorte sletta.'''
-
-Du bør tenkje over om det er lurt å halde fram med å laste opp denne fila.
-Sletteloggen for fila finn du her:",
'filename-bad-prefix' => "Namnet på fila du lastar opp byrjar med '''«$1»''', som er eit inkjeseiande namn som vanlegvis vert gjeve til bilete automatisk av digitale kamera. Ver venleg og vel eit meir skildrande namn på fila di.",
'filename-prefix-blacklist' => ' #<!-- leave this line exactly as it is --> <pre>
# Syntaksen er som følgjer:
@@ -1759,7 +1780,7 @@ Følgjande liste viser {{PLURAL:$1|den første sida|dei $1 første sidene}}.
Ei [[Special:WhatLinksHere/$2|fullstendig liste]] er tilgjengeleg.',
'nolinkstoimage' => 'Det finst ikkje noka side med lenkje til denne fila.',
'morelinkstoimage' => 'Vis [[Special:WhatLinksHere/$1|fleire lenkjer]] til denne fila.',
-'redirectstofile' => 'Følgjande {{PLURAL:$1|fil er ei omdirigering|filer er omdirigeringar}} til denne fila:',
+'linkstoimage-redirect' => '$1 (filomdirigering) $2',
'duplicatesoffile' => 'Følgjande {{PLURAL:$1|fil er ein dublett|filer er dublettar}} av denne fila ([[Special:FileDuplicateSearch/$2|fleire detaljar]]):',
'sharedupload' => 'Denne fila er frå $1 og kan verta brukt av andre prosjekt.',
'sharedupload-desc-there' => 'Denne fila er frå $1 og kan verta nytta av andre prosjekt.
@@ -1850,10 +1871,11 @@ Skildringa frå [$2 filskildringssida] der er vist nedanfor.',
'disambiguationspage' => 'Template:Fleirtyding',
'disambiguations-text' => "Sidene nedanfor har lenkje til ei '''fleirtydingsside'''. Dei bør ha lenkje til det rette oppslagsordet i staden for.<br />Sider vert handsama som fleirtydingssider dersom dei inneheld ein mal som har lenkje på [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Doble omdirigeringar',
-'doubleredirectstext' => 'Kvar line inneheld lenkjer til den første og den andre omdirigeringa, og den første lina frå den andre omdirigeringsteksten. Det gjev som regel den «rette» målartikkelen, som den første omdirigeringa skulle ha peikt på. <del>Overstrykne</del> liner har vorte retta på.',
-'double-redirect-fixed-move' => '[[$1]] har blitt flytta, og er no ei omdirigering til [[$2]]',
-'double-redirect-fixer' => 'Omdirigeringsfiksar',
+'doubleredirects' => 'Doble omdirigeringar',
+'doubleredirectstext' => 'Kvar line inneheld lenkjer til den første og den andre omdirigeringa, og den første lina frå den andre omdirigeringsteksten. Det gjev som regel den «rette» målartikkelen, som den første omdirigeringa skulle ha peikt på. <del>Overstrykne</del> liner har vorte retta på.',
+'double-redirect-fixed-move' => '[[$1]] har blitt flytta, og er no ei omdirigering til [[$2]]',
+'double-redirect-fixed-maintenance' => 'Rettar dobbel omdirigering frå [[$1]] til [[$2]].',
+'double-redirect-fixer' => 'Omdirigeringsfiksar',
'brokenredirects' => 'Blindvegsomdirigeringar',
'brokenredirectstext' => 'Dei følgjande omdirigeringane viser til ei side som ikkje finst:',
@@ -2043,6 +2065,10 @@ E-postadressa du har sett i [[Special:Preferences|innstillingane dine]] vil dukk
'noemailtext' => 'Denne brukaren har ikkje oppgjeve ei gyldig e-postadresse.',
'nowikiemailtitle' => 'Ingen e-post tillaten',
'nowikiemailtext' => 'Denne brukaren har vald å ikkje motta e-postar frå andre brukarar.',
+'emailnotarget' => 'Ikkje-eksisterande eller ugyldig brukarnamn for mottakar.',
+'emailtarget' => 'Skriv inn brukarnamnet til mottakaren',
+'emailusername' => 'Brukarnamn:',
+'emailusernamesubmit' => 'Send',
'email-legend' => 'Send ein e-post til ein annan {{SITENAME}}-brukar',
'emailfrom' => 'Frå:',
'emailto' => 'Ã…t:',
@@ -2063,11 +2089,11 @@ E-postadressa du har sett i [[Special:Preferences|innstillingane dine]] vil dukk
'watchlistanontext' => 'Du lyt $1 for å vise eller endre sider på overvakingslista di.',
'watchnologin' => 'Ikkje innlogga',
'watchnologintext' => 'Du lyt vera [[Special:UserLogin|innlogga]] for å kunna endre overvakingslista.',
-'addedwatch' => 'Lagt til overvakingslista',
+'addwatch' => '↓Legg til i overvakingslista',
'addedwatchtext' => "Sida «[[:$1]]» er lagt til [[Special:Watchlist|overvakingslista]] di. Framtidige endringar av denne sida og den tilhøyrande diskusjonssida vil bli oppførde her, og sida vil vera '''utheva''' på «[[Special:RecentChanges|siste endringar]]» for å gjera deg merksam på henne.
Om du seinare vil fjerne sida frå overvakingslista, klikk på «Fjern overvaking» på den aktuelle sida.",
-'removedwatch' => 'Fjerna frå overvakingslista',
+'removewatch' => 'Fjerna frå overvakingslista',
'removedwatchtext' => 'Sida «[[:$1]]» er fjerna frå [[Special:Watchlist|overvakingslista di]].',
'watch' => 'Overvak',
'watchthispage' => 'Overvak denne sida',
@@ -2121,13 +2147,13 @@ Du kan også tilbakestille endringsmeldingsstatus for alle sidene på overvaking
--
For å endre innstillingane for overvakingslista di, gå til
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
For hjelp og meir informasjon:
$UNWATCHURL
Tilbakemeldingar og anna hjelp:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Slett sida',
@@ -2142,7 +2168,7 @@ Tilbakemeldingar og anna hjelp:
'confirmdeletetext' => 'Du held på å varig slette ei side eller eit bilete saman med heile den tilhøyrande historikken frå databasen. Stadfest at du verkeleg vil gjere dette, at du skjønar konsekvensane, og at du gjer dette i tråd med [[{{MediaWiki:Policy-url}}|retningslinene]].',
'actioncomplete' => 'Ferdig',
'actionfailed' => 'Handlinga kunne ikkje verta utførd',
-'deletedtext' => '«<nowiki>$1</nowiki>» er sletta. Sjå $2 for eit oversyn over dei siste slettingane.',
+'deletedtext' => '«$1» er sletta. Sjå $2 for eit oversyn over dei siste slettingane.',
'deletedarticle' => 'sletta «[[$1]]»',
'suppressedarticle' => 'gøymde «[[$1]]»',
'dellogpage' => 'Slettelogg',
@@ -2194,7 +2220,7 @@ Sjå [[Special:ProtectedPages|lista over verna sider]] for lista over vern som n
'protect_expiry_invalid' => 'Utløpstida er ugyldig.',
'protect_expiry_old' => 'Utløpstida har allereie vore.',
'protect-unchain-permissions' => 'LÃ¥s opp fleire alternativ for vern',
-'protect-text' => "Her kan du kan sjå og endre på graden av vern for sida '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Her kan du kan sjå og endre på graden av vern for sida '''$1'''.",
'protect-locked-blocked' => "Du kan ikkje endre nivå på vern medan du er blokkert. Dette er dei noverande innstillingane for sida '''$1''':",
'protect-locked-dblock' => "Du kan ikkje endre nivå på vern fordi databasen er låst akkurat no. Dette er dei noverande innstillingane for sida '''$1''':",
'protect-locked-access' => "Brukarkontoen din har ikkje tilgang til endring av vern.
@@ -2288,9 +2314,12 @@ $1',
'undelete-show-file-submit' => 'Ja',
# Namespace form on various pages
-'namespace' => 'Namnerom:',
-'invert' => 'Vreng val',
-'blanknamespace' => '(Hovud)',
+'namespace' => 'Namnerom:',
+'invert' => 'Vreng val',
+'tooltip-invert' => 'Haka av boksen for å gøyma endringar på sider i det valde namnerommet (og det tilknytte namnerommet om det er haka av)',
+'namespace_association' => 'Tilknytt namnerom',
+'tooltip-namespace_association' => 'Haka av boksen for at diskusjonssida eller emnenamnerommet knytt til det valde namnerommet skal vera med òg',
+'blanknamespace' => '(Hovud)',
# Contributions
'contributions' => 'Brukarbidrag',
@@ -2338,11 +2367,13 @@ $1',
'whatlinkshere-filters' => 'Filter',
# Block/unblock
+'autoblockid' => 'Autoblokker #$1',
+'block' => 'Blokker brukar',
+'unblock' => 'Opphev blokkeringa av brukaren',
'blockip' => 'Blokker brukar',
'blockip-title' => 'Blokker brukar',
'blockip-legend' => 'Blokker brukar',
'blockiptext' => 'Bruk skjemaet nedanfor for å blokkere skrivetilgangen frå ei spesifikk IP-adresse eller brukarnamn. Dette bør berre gjerast for å hindre hærverk, og i samsvar med [[{{MediaWiki:Policy-url}}|retningslinene]].',
-'ipaddress' => 'IP-adresse',
'ipadressorusername' => 'IP-adresse eller brukarnamn',
'ipbexpiry' => 'Opphøyrstid:',
'ipbreason' => 'Ã…rsak:',
@@ -2354,7 +2385,7 @@ $1',
** Sjikane/plaging av andre brukarar
** Misbruk ved hjelp av fleire brukarkontoar
** Uansvarleg brukarnamn',
-'ipbanononly' => 'Blokker berre anonyme brukarar',
+'ipb-hardblock' => 'Hindre innlogga frå å endre sider frå denne IP-adressa.',
'ipbcreateaccount' => 'Hindre kontooppretting',
'ipbemailban' => 'Hindre sending av e-post til andre brukarar',
'ipbenableautoblock' => 'Blokker den førre IP-adressa som vart brukt av denne brukaren automatisk, og alle andre IP-adresser brukaren prøver å endre sider med i framtida',
@@ -2365,12 +2396,15 @@ $1',
'ipbotherreason' => 'Annan grunn/tilleggsgrunn:',
'ipbhidename' => 'Gøym brukarnamnet frå endringar og lister',
'ipbwatchuser' => 'Overvak brukarsida og diskusjonssida til brukaren',
-'ipballowusertalk' => 'La brukaren endre si eiga diskusjonsside under blokkeringa',
+'ipb-disableusertalk' => 'Hindra brukaren i å endra eiga diskusjonsside medan blokkeringa gjeld',
'ipb-change-block' => 'Blokker brukaren på nytt med desse innstillingane',
+'ipb-confirm' => 'Stadfest blokkering',
'badipaddress' => 'IP-adressa er ugyldig eller blokkering av brukarar er slått av på tenaren.',
'blockipsuccesssub' => 'Blokkeringa er utførd',
'blockipsuccesstext' => '«[[Special:Contributions/$1|$1]]» er blokkert.<br />
Sjå [[Special:IPBlockList|blokkeringslista]] for alle blokkeringane.',
+'ipb-blockingself' => 'Du er i ferd med å blokkera deg sjølv. Er du viss på at du ynskjer gjera dette?',
+'ipb-confirmhideuser' => 'Du er i ferd med å blokkere ein brukar med "skjult brukar" aktivert. Brukarens namn vil verte skjult i alle lister og loggoppføringar. Er du sikker på at du vil gjere dette?',
'ipb-edit-dropdown' => 'Endre grunnane for blokkering',
'ipb-unblock-addr' => 'Opphev blokkeringa av $1',
'ipb-unblock' => 'Opphev blokkeringa av eit brukarnamn eller ei IP-adresse',
@@ -2381,16 +2415,20 @@ Sjå [[Special:IPBlockList|blokkeringslista]] for alle blokkeringane.',
'ipusubmit' => 'Opphev blokkering',
'unblocked' => 'Blokkeringa av [[User:$1|$1]] er oppheva',
'unblocked-id' => 'Blokkering $1 er oppheva',
+'blocklist' => 'Blokkerte brukarar',
'ipblocklist' => 'Blokkerte IP-adresser og brukarnamn',
'ipblocklist-legend' => 'Finn ein blokkert brukar',
-'ipblocklist-username' => 'Brukarnamn eller IP-adresse:',
-'ipblocklist-sh-userblocks' => '$1 blokkeringar av kontoar',
-'ipblocklist-sh-tempblocks' => '$1 mellombelse blokkeringar',
-'ipblocklist-sh-addressblocks' => '$1 blokkeringar av individuelle IP-adresser',
+'blocklist-userblocks' => 'Gøym kontoblokkeringar',
+'blocklist-tempblocks' => 'Gøym førebelse blokkeringar',
+'blocklist-addressblocks' => 'Gøym enkle IP-blokkeringar',
+'blocklist-timestamp' => 'Tidsmerkje',
+'blocklist-target' => 'MÃ¥l',
+'blocklist-expiry' => 'Endar',
+'blocklist-by' => 'Blokkerande admin',
+'blocklist-reason' => 'Ã…rsak',
'ipblocklist-submit' => 'Søk',
'ipblocklist-localblock' => 'Lokal blokkering',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Anna blokkering|Andre blokkeringar}}',
-'blocklistline' => '$1, $2 blokkerte $3 ($4)',
'infiniteblock' => 'uendeleg opphøyrstid',
'expiringblock' => 'endar den $1 ved $2',
'anononlyblock' => 'berre anonyme',
@@ -2413,7 +2451,7 @@ Loggføringa er synt nedanfor som referanse:',
'blocklogentry' => 'Blokkerte «[[$1]]» med opphøyrstid $2 $3',
'reblock-logentry' => 'endra blokkeringsinnstillingar for [[$1]] med tida $2 $3',
'blocklogtext' => 'Dette er ein logg over blokkeringar og oppheving av blokkeringar gjorde.
-IP-adresser som blir automatisk blokkerte er ikkje lista her. Sjå [[Special:IPBlockList|blokkeringslista]] for alle aktive blokkeringar.',
+IP-adresser som blir automatisk blokkerte er ikkje lista her. Sjå [[Special:BlockList|blokkeringslista]] for alle aktive blokkeringar.',
'unblocklogentry' => 'oppheva blokkering av «$1»',
'block-log-flags-anononly' => 'berre anonyme brukarar',
'block-log-flags-nocreate' => 'kontooppretting slått av',
@@ -2427,9 +2465,9 @@ IP-adresser som blir automatisk blokkerte er ikkje lista her. Sjå [[Special:IPB
'ipb_expiry_temp' => 'For å skjule brukarnamnet må blokkeringa vere permanent.',
'ipb_hide_invalid' => 'Kan ikkje halda nede denne kontoen; han har kan henda for mange endringar.',
'ipb_already_blocked' => '«$1» er allereie blokkert',
-'ipb-needreblock' => '== Alt blokkert ==
-$1 er alt blokkert. Vil du endre innstillingane?',
+'ipb-needreblock' => '$1 er alt blokkert. Vil du endre innstillingane?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Anna blokkering|Andre blokkeringar}}',
+'unblock-hideuser' => 'Du kan ikkje heve blokkeringa av denne brukaren, av di brukarnamnet har blitt gøymd.',
'ipb_cant_unblock' => 'Feil: Fann ikkje blokkeringsnummeret $1. Blokkeringa kan vere oppheva allereie.',
'ipb_blocked_as_range' => 'Feil: IP-en $1 er ikkje direkte blokkert og kan ikkje opphevast. Adressa er blokkert som ein del av blokkeringa av IP-intervallet $2. Denne blokkeringa kan opphevast.',
'ip_range_invalid' => 'Ugyldig IP-adresseserie.',
@@ -2462,6 +2500,7 @@ $1 er alt blokkert. Vil du endre innstillingane?',
'unlockdbsuccesstext' => 'Skrivevernet er oppheva.',
'lockfilenotwritable' => 'Kan ikkje skrive til databasen si låsefil. For å låse eller opne databasen, må tenaren kunne skrive til denne fila.',
'databasenotlocked' => 'Databasen er ikkje låst.',
+'lockedbyandtime' => 'av $1 den $2 kl. $3',
# Move page
'move-page' => 'Flytt $1',
@@ -2575,7 +2614,7 @@ Dersom du berre vil ha noverande versjon, kan du også bruke ei lenkje, til døm
'allmessagesdefault' => 'Standardtekst',
'allmessagescurrent' => 'Noverande tekst',
'allmessagestext' => 'Dette er ei liste over systemmeldingar i MediaWiki-namnerommet.
-Vitja [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [http://translatewiki.net translatewiki.net] om du ynskjer å bidra til den generelle omsetjinga av MediaWiki.',
+Vitja [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [//translatewiki.net translatewiki.net] om du ynskjer å bidra til den generelle omsetjinga av MediaWiki.',
'allmessagesnotsupportedDB' => "Denne sida kan ein ikkje bruka fordi «'''\$wgUseDatabaseMessages'''» er slått av.",
'allmessages-filter-legend' => 'Filtrer',
'allmessages-filter' => 'Filtrer etter tilpassingsgrad:',
@@ -2734,9 +2773,7 @@ Vitja [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [ht
'modern.js' => '* Javascript i denne fila vil gjelde for brukarar av drakta Modern */',
# Metadata
-'nodublincore' => 'Funksjonen for Dublin Core RDF metadata er deaktivert på denne tenaren.',
-'nocreativecommons' => 'Funksjonen for Creative Commons RDF er deaktivert på denne tenaren.',
-'notacceptable' => 'Wikitenaren kan ikkje gje data i noko format som programmet ditt kan lesa.',
+'notacceptable' => 'Wikitenaren kan ikkje gje data i noko format som programmet ditt kan lesa.',
# Attribution
'anonymous' => '{{PLURAL:$1|anonym brukar|anonyme brukarar}} av {{SITENAME}}',
@@ -2759,12 +2796,17 @@ Vitja [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [ht
'spam_blanking' => 'Alle versjonar inneheldt lenkje til $1, tømmer sida',
# Info page
-'infosubtitle' => 'Informasjon om side',
-'numedits' => 'Tal endringar (innhaldsside): $1',
-'numtalkedits' => 'Tal endringar (diskusjonsside): $1',
-'numwatchers' => 'Tal brukarar som overvakar: $1',
-'numauthors' => 'Tal ulike bidragsytarar (innhaldsside): $1',
-'numtalkauthors' => 'Tal ulike bidragsytarar (diskusjonsside): $1',
+'pageinfo-title' => 'Informasjon om «$1»',
+'pageinfo-header-edits' => 'Endringar',
+'pageinfo-header-watchlist' => 'Overvakingsliste',
+'pageinfo-header-views' => 'Visningar',
+'pageinfo-subjectpage' => 'Side',
+'pageinfo-talkpage' => 'Diskusjonsside',
+'pageinfo-watchers' => 'Antal overvakarar',
+'pageinfo-edits' => 'Tal på endringar',
+'pageinfo-authors' => 'Tal på forskjellege forfattarar',
+'pageinfo-views' => 'Tal på visningar',
+'pageinfo-viewsperedit' => 'Visningar per endring',
# Skin names
'skinname-standard' => 'Klassisk',
@@ -2776,25 +2818,6 @@ Vitja [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] og [ht
'skinname-simple' => 'Enkel',
'skinname-modern' => 'Moderne',
-# Math options
-'mw_math_png' => 'Vis alltid som PNG',
-'mw_math_simple' => 'HTML om svært enkel, elles PNG',
-'mw_math_html' => 'HTML om mogleg, elles PNG',
-'mw_math_source' => 'Behald som TeX (for tekst-nettlesarar)',
-'mw_math_modern' => 'Tilrådd for moderne nettlesarar',
-'mw_math_mathml' => 'MathML dersom mogleg (eksperimentell)',
-
-# Math errors
-'math_failure' => 'Klarte ikkje å tolke formelen',
-'math_unknown_error' => 'ukjend feil',
-'math_unknown_function' => 'ukjend funksjon',
-'math_lexing_error' => 'lexerfeil',
-'math_syntax_error' => 'syntaksfeil',
-'math_image_error' => 'PNG-konverteringa var mislukka; sjekk at latex og dvipng (eller dvips + gs + convert) er rett installerte',
-'math_bad_tmpdir' => 'Kan ikkje skrive til eller laga mellombels mattemappe',
-'math_bad_output' => 'Kan ikkje skrive til eller laga mattemappe',
-'math_notexvc' => 'Manglar texvc-program; sjå math/README for konfigurasjon.',
-
# Patrolling
'markaspatrolleddiff' => 'Merk som patruljert',
'markaspatrolledtext' => 'Merk innhaldssida som patruljert',
@@ -2839,7 +2862,8 @@ $1',
'file-nohires' => '<small>Høgare oppløysing er ikkje tilgjengeleg.</small>',
'svg-long-desc' => 'SVG-fil, standardoppløysing: $1 × $2 pikslar, filstorleik: $3',
'show-big-image' => 'Full oppløysing',
-'show-big-image-thumb' => '<small>Storleiken på denne førehandsvisinga: $1 × $2 pikslar</small>',
+'show-big-image-other' => '<small>Andre oppløysingar: $1.</small>',
+'show-big-image-size' => '$1 × $2 pikslar',
'file-info-gif-looped' => 'gjentatt',
'file-info-gif-frames' => '$1 {{PLURAL:$1|rame|ramer}}',
'file-info-png-looped' => '↓oppatteke',
@@ -2878,7 +2902,13 @@ Dei andre felta er gøymde som standard.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Breidd',
@@ -2893,13 +2923,11 @@ Dei andre felta er gøymde som standard.
'exif-ycbcrpositioning' => 'Y- og C-posisjon',
'exif-xresolution' => 'Oppløysing i breidda',
'exif-yresolution' => 'Oppløysing i høgda',
-'exif-resolutionunit' => 'Eining for X- og Y-oppløysing',
'exif-stripoffsets' => 'Plassering for biletdata',
'exif-rowsperstrip' => 'Tal rader per stripe',
'exif-stripbytecounts' => 'Tal byte per kompimerte stripe',
'exif-jpeginterchangeformat' => 'Offset til JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Byte JPEG-data',
-'exif-transferfunction' => 'Overføringsfunksjon',
'exif-whitepoint' => 'Kvitpunktsreinleik',
'exif-primarychromaticities' => 'Reinheita til primærfargane',
'exif-ycbcrcoefficients' => 'Koeffisientar for fargeromstransformasjonsmatrise',
@@ -2918,7 +2946,6 @@ Dei andre felta er gøymde som standard.
'exif-compressedbitsperpixel' => 'Komprimerte bits pr. pixel',
'exif-pixelydimension' => 'Biletbreidd',
'exif-pixelxdimension' => 'Bilethøgd',
-'exif-makernote' => 'Produsentnotat',
'exif-usercomment' => 'Brukarkommentarar',
'exif-relatedsoundfile' => 'Tilknytt lydfil',
'exif-datetimeoriginal' => 'Dato og tid laga',
@@ -2932,7 +2959,6 @@ Dei andre felta er gøymde som standard.
'exif-exposureprogram' => 'Eksponeringsprogram',
'exif-spectralsensitivity' => 'Spektralsensitivitet',
'exif-isospeedratings' => 'Lyskjensle (ISO)',
-'exif-oecf' => 'Optoelektronisk omregningsfaktor',
'exif-shutterspeedvalue' => 'APEX-lukkarfart',
'exif-aperturevalue' => 'APEX-blendartal',
'exif-brightnessvalue' => 'APEX-lysstyrke',
@@ -2945,7 +2971,6 @@ Dei andre felta er gøymde som standard.
'exif-focallength' => 'Linsefokallengd',
'exif-subjectarea' => 'Motivområde',
'exif-flashenergy' => 'Blitsstyrke',
-'exif-spatialfrequencyresponse' => 'Romleg frekvensrespons',
'exif-focalplanexresolution' => 'Oppløysing i fokalplan X',
'exif-focalplaneyresolution' => 'Oppløysing i fokalplan Y',
'exif-focalplaneresolutionunit' => 'Oppløysingseining for fokalplanet',
@@ -2954,7 +2979,6 @@ Dei andre felta er gøymde som standard.
'exif-sensingmethod' => 'Sensor',
'exif-filesource' => 'Filkjelde',
'exif-scenetype' => 'Scenetype',
-'exif-cfapattern' => 'CFA-mønster',
'exif-customrendered' => 'Tilpassa biletehandsaming',
'exif-exposuremode' => 'Eksponeringsmodus',
'exif-whitebalance' => 'Kvitbalanse',
@@ -2999,10 +3023,51 @@ Dei andre felta er gøymde som standard.
'exif-gpsareainformation' => 'Namn på GPS-område',
'exif-gpsdatestamp' => 'GPS-dato',
'exif-gpsdifferential' => 'Differensiell GPS-retting',
+'exif-jpegfilecomment' => 'JPEG-filkommentar',
+'exif-keywords' => 'Nøkkelord',
+'exif-worldregioncreated' => 'Verdsregionen biletet blei teke i',
+'exif-countrycreated' => 'Land biletet blei teke i',
+'exif-countrycodecreated' => 'Landkoden for der biletet blei teke',
+'exif-provinceorstatecreated' => 'Provins, delstat eller region der biletet blei teke',
+'exif-citycreated' => 'By biletet blei teke i',
+'exif-sublocationcreated' => 'Bydel bilete blei teke i',
+'exif-worldregiondest' => 'Verdsregionen vist',
+'exif-countrydest' => 'Land vist',
+'exif-countrycodedest' => 'Landkode vist',
+'exif-provinceorstatedest' => 'Provins, delstat eller region vist',
+'exif-citydest' => 'By vist',
+'exif-sublocationdest' => 'Bydel vist',
'exif-objectname' => 'Kort tittel',
+'exif-specialinstructions' => 'Spesieller instuksjonar',
+'exif-headline' => 'Overskrift',
+'exif-credit' => 'Opphavrettseigar/filgjevar',
+'exif-source' => 'Kjelde',
+'exif-languagecode' => 'Språk',
+'exif-iimversion' => 'IIM-versjon',
+'exif-iimcategory' => 'Kategori',
+'exif-lens' => 'Objektiv',
+'exif-cameraownername' => 'Eigar av kameraet',
+'exif-pngfilecomment' => 'PNG-filkommentar',
+'exif-disclaimer' => 'Atterhald',
+'exif-contentwarning' => 'Innholdsåtvaring',
+'exif-giffilecomment' => 'GIF-filkommentar',
+'exif-intellectualgenre' => 'Elementtype',
+'exif-subjectnewscode' => 'Emnekode',
+'exif-scenecode' => 'IPTC-scenekode',
+'exif-event' => 'Avbilda hending',
+'exif-organisationinimage' => 'Avbilda organisasjon',
+'exif-personinimage' => 'Avbilda person',
+'exif-originalimageheight' => 'Høgda på biletet før det vart beskåren',
+'exif-originalimagewidth' => 'Bredda på biletet før det vart beskåren',
# EXIF attributes
'exif-compression-1' => 'Ukomprimert',
+'exif-compression-2' => 'CCITT Gruppe 3 1-dimensjonal modifisert Huffman-kjøyrelengdekoding',
+'exif-compression-3' => 'CCITT Gruppe 3 faks-koding',
+'exif-compression-4' => 'CCITT Gruppe 4 faks-koding',
+
+'exif-copyrighted-true' => 'Verna av opphavsrett',
+'exif-copyrighted-false' => 'Ikkje verna av opphavsrett',
'exif-unknowndate' => 'Ukjend dato',
@@ -3018,6 +3083,8 @@ Dei andre felta er gøymde som standard.
'exif-planarconfiguration-1' => 'grovformat',
'exif-planarconfiguration-2' => 'planærformat',
+'exif-colorspace-65535' => 'Ukalibrert',
+
'exif-componentsconfiguration-0' => 'finst ikkje',
'exif-exposureprogram-0' => 'Ikkje bestemt',
@@ -3140,21 +3207,55 @@ Dei andre felta er gøymde som standard.
'exif-gpsspeed-m' => 'Engelsk mil per time',
'exif-gpsspeed-n' => 'Knop',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometer',
+'exif-gpsdestdistance-m' => 'Miles',
+'exif-gpsdestdistance-n' => 'Nautiske mil',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Verkeleg retning',
'exif-gpsdirection-m' => 'Magnetisk retning',
+'exif-dc-date' => 'Dato(ar)',
+'exif-dc-publisher' => 'Utgjevar',
+'exif-dc-rights' => 'Rettar',
+'exif-dc-source' => 'Mediakilde',
+'exif-dc-type' => 'Mediatype',
+
+'exif-isospeedratings-overflow' => 'Større enn 65535',
+
+'exif-iimcategory-ace' => 'Kunst, kultur og underhaldning',
+'exif-iimcategory-clj' => 'Kriminalitet og jura',
+'exif-iimcategory-dis' => 'Katastrofar og ulukker',
+'exif-iimcategory-fin' => 'Økonomi og næringsliv',
+'exif-iimcategory-edu' => 'Utdanning',
+'exif-iimcategory-evn' => 'Miljø',
+'exif-iimcategory-hth' => 'Helse',
+'exif-iimcategory-hum' => 'Menneskeleg interesse',
+'exif-iimcategory-lab' => 'Arbeidskraft',
+'exif-iimcategory-lif' => 'Livsstil og fritid',
+'exif-iimcategory-pol' => 'Politikk',
+'exif-iimcategory-rel' => 'Religion og livssyn',
+'exif-iimcategory-sci' => 'Vitskap og teknologi',
+'exif-iimcategory-soi' => 'Sosiale problem',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Krig, konflikt og uro',
+'exif-iimcategory-wea' => 'Vær',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'LÃ¥g ($1)',
+'exif-urgency-high' => 'Høg ($1)',
+'exif-urgency-other' => 'Brukardefinert prioritet ($1)',
+
# External editor support
'edit-externally' => 'Endre denne fila med eit eksternt program',
-'edit-externally-help' => '(Sjå [http://www.mediawiki.org/wiki/Manual:External_editors oppsettsinstruksjonane] for meir informasjon)',
+'edit-externally-help' => '(Sjå [//www.mediawiki.org/wiki/Manual:External_editors oppsettsinstruksjonane] for meir informasjon)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'alle',
-'imagelistall' => 'alle',
-'watchlistall2' => 'alle',
-'namespacesall' => 'alle',
-'monthsall' => 'alle',
-'limitall' => 'alle',
+'watchlistall2' => 'alle',
+'namespacesall' => 'alle',
+'monthsall' => 'alle',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'Stadfest e-postadresse',
@@ -3218,6 +3319,12 @@ Du må stadfeste at du verkeleg vil nyopprette denne sida.",
'confirm-purge-top' => 'Vil du slette tenarane sin mellomlagra versjon av denne sida?',
'confirm-purge-bottom' => 'Reinsing av ei side slettar mellomlageret og tvinger fram den nyaste versjonen.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Legg denne sida til i overvakingslista di?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Fjern denne sida frå overvakingslista di?',
+
# Multipage image navigation
'imgmultipageprev' => '↠førre side',
'imgmultipagenext' => 'neste side →',
@@ -3259,7 +3366,7 @@ Du må stadfeste at du verkeleg vil nyopprette denne sida.",
'watchlistedit-normal-legend' => 'Fjern sider frå overvakingslista',
'watchlistedit-normal-explain' => 'Sidene på overvakingslista di er viste nedanfor.
For å fjerne ei side, kryss av boksen ved sida av sida du vil fjerne og klikk på «{{int:Watchlistedit-normal-submit}}».
-Du kan òg [[Special:Watchlist/raw|endre overvakingslista i råformat]].',
+Du kan òg [[Special:EditWatchlist/raw|endre overvakingslista i råformat]].',
'watchlistedit-normal-submit' => 'Fjern sider',
'watchlistedit-normal-done' => '{{PLURAL:$1|Éi side|$1 sider}} vart fjerna frå overvakingslista di:',
'watchlistedit-raw-title' => 'Endre på overvakingslista i råformat',
@@ -3267,7 +3374,7 @@ Du kan òg [[Special:Watchlist/raw|endre overvakingslista i råformat]].',
'watchlistedit-raw-explain' => 'Sidene på overvakingslista di er viste nedanfor, og lista kan endrast ved å legge til eller fjerne sider frå lista;
ei side per line.
Når du er ferdig, klikk «{{int:Watchlistedit-raw-submit}}».
-Du kan òg [[Special:Watchlist/edit|nytte standardverktøyet]].',
+Du kan òg [[Special:EditWatchlist|nytte standardverktøyet]].',
'watchlistedit-raw-titles' => 'Sider:',
'watchlistedit-raw-submit' => 'Oppdater overvakingslista',
'watchlistedit-raw-done' => 'Overvakingslista er oppdatert.',
@@ -3284,28 +3391,27 @@ Du kan òg [[Special:Watchlist/edit|nytte standardverktøyet]].',
'duplicate-defaultsort' => 'Åtvaring: Standarsorteringa «$2» tar over for den tidlegare sorteringa «$1».',
# Special:Version
-'version' => 'Versjon',
-'version-extensions' => 'Installerte utvidingar',
-'version-specialpages' => 'Spesialsider',
-'version-parserhooks' => 'Parsertillegg',
-'version-variables' => 'Variablar',
-'version-skins' => 'Draktar',
-'version-other' => 'Anna',
-'version-mediahandlers' => 'Mediahandsamarar',
-'version-hooks' => 'Tilleggsuttrykk',
-'version-extension-functions' => 'Utvidingsfunksjonar',
-'version-parser-extensiontags' => 'Parserutvidingsmerke',
-'version-parser-function-hooks' => 'Parserfunksjonstillegg',
-'version-skin-extension-functions' => 'Draktutvidingsfunksjonar',
-'version-hook-name' => 'Namn på tillegg',
-'version-hook-subscribedby' => 'Brukt av',
-'version-version' => '(versjon $1)',
-'version-license' => 'Lisens',
-'version-poweredby-credits' => "Denne wikien er dreven av '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'andre',
-'version-software' => 'Installert programvare',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Versjon',
+'version' => 'Versjon',
+'version-extensions' => 'Installerte utvidingar',
+'version-specialpages' => 'Spesialsider',
+'version-parserhooks' => 'Parsertillegg',
+'version-variables' => 'Variablar',
+'version-skins' => 'Draktar',
+'version-other' => 'Anna',
+'version-mediahandlers' => 'Mediahandsamarar',
+'version-hooks' => 'Tilleggsuttrykk',
+'version-extension-functions' => 'Utvidingsfunksjonar',
+'version-parser-extensiontags' => 'Parserutvidingsmerke',
+'version-parser-function-hooks' => 'Parserfunksjonstillegg',
+'version-hook-name' => 'Namn på tillegg',
+'version-hook-subscribedby' => 'Brukt av',
+'version-version' => '(versjon $1)',
+'version-license' => 'Lisens',
+'version-poweredby-credits' => "Denne wikien er dreven av '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'andre',
+'version-software' => 'Installert programvare',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Versjon',
# Special:FilePath
'filepath' => 'Filsti',
@@ -3316,16 +3422,15 @@ Du kan òg [[Special:Watchlist/edit|nytte standardverktøyet]].',
Skriv inn filnamnet utan «{{ns:file}}:»-prefikset.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Søk etter duplikatfiler',
-'fileduplicatesearch-summary' => 'Søk etter duplikatfiler basert på hash-verdiane deira.
-
-Skriv inn filnamn utan «{{ns:file}}:»-prefikset.',
-'fileduplicatesearch-legend' => 'Søk etter ei duplikatfil',
-'fileduplicatesearch-filename' => 'Filnamn:',
-'fileduplicatesearch-submit' => 'Søk',
-'fileduplicatesearch-info' => '$1 × $2 pikslar<br />Filstorleik: $3<br />MIME-type: $4',
-'fileduplicatesearch-result-1' => 'Det er ingen kopiar av fila «$1».',
-'fileduplicatesearch-result-n' => 'Det er {{PLURAL:$2|éin kopi|$2 kopiar}} av fila «$1».',
+'fileduplicatesearch' => 'Søk etter duplikatfiler',
+'fileduplicatesearch-summary' => 'Søk etter duplikatfiler basert på hash-verdiane deira.',
+'fileduplicatesearch-legend' => 'Søk etter ei duplikatfil',
+'fileduplicatesearch-filename' => 'Filnamn:',
+'fileduplicatesearch-submit' => 'Søk',
+'fileduplicatesearch-info' => '$1 × $2 pikslar<br />Filstorleik: $3<br />MIME-type: $4',
+'fileduplicatesearch-result-1' => 'Det er ingen kopiar av fila «$1».',
+'fileduplicatesearch-result-n' => 'Det er {{PLURAL:$2|éin kopi|$2 kopiar}} av fila «$1».',
+'fileduplicatesearch-noresults' => 'Fann inga fil med namnet «$1».',
# Special:SpecialPages
'specialpages' => 'Spesialsider',
diff --git a/languages/messages/MessagesNo.php b/languages/messages/MessagesNo.php
index 194c6ba6..968847c2 100644
--- a/languages/messages/MessagesNo.php
+++ b/languages/messages/MessagesNo.php
@@ -9,6 +9,7 @@
*
* @author Audun
* @author Boivie
+ * @author Brik
* @author Byrial
* @author Eirik
* @author EivindJ
@@ -29,6 +30,7 @@
* @author Qaqqalik
* @author Samuelsen
* @author Simny
+ * @author Sjurhamre
* @author Stigmj
* @author Teak
* @author לערי ריינה×רט
@@ -85,101 +87,129 @@ $dateFormats = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Doble_omdirigeringer' ),
+ 'Activeusers' => array( 'Aktive_brukere' ),
+ 'Allmessages' => array( 'Alle_systembeskjeder' ),
+ 'Allpages' => array( 'Alle_sider' ),
+ 'Ancientpages' => array( 'Gamle_sider' ),
+ 'Blankpage' => array( 'Blank_side' ),
+ 'Block' => array( 'Blokker', 'Blokker_IP', 'Blokker_bruker' ),
+ 'Blockme' => array( 'Blokker_meg' ),
+ 'Booksources' => array( 'Bokkilder' ),
'BrokenRedirects' => array( 'Ødelagte_omdirigeringer' ),
- 'Disambiguations' => array( 'Pekere' ),
- 'Userlogin' => array( 'Logg_inn' ),
- 'Userlogout' => array( 'Logg_ut' ),
+ 'Categories' => array( 'Kategorier' ),
+ 'ChangePassword' => array( 'Endre_passord', 'TIlbakestill_passord' ),
+ 'ComparePages' => array( 'Sammenlign_sider' ),
+ 'Confirmemail' => array( 'Bekreft_e-postadresse' ),
+ 'Contributions' => array( 'Bidrag' ),
'CreateAccount' => array( 'Opprett_konto' ),
- 'Preferences' => array( 'Innstillinger' ),
- 'Watchlist' => array( 'Overvåkningsliste', 'Overvåkingsliste' ),
- 'Recentchanges' => array( 'Siste_endringer' ),
- 'Upload' => array( 'Last_opp' ),
+ 'Deadendpages' => array( 'Blindveisider' ),
+ 'DeletedContributions' => array( 'Slettede_bidrag' ),
+ 'Disambiguations' => array( 'Pekere' ),
+ 'DoubleRedirects' => array( 'Doble_omdirigeringer' ),
+ 'Emailuser' => array( 'E-post' ),
+ 'Export' => array( 'Eksporter' ),
+ 'Fewestrevisions' => array( 'Færrest_revisjoner' ),
+ 'FileDuplicateSearch' => array( 'Filduplikatsøk' ),
+ 'Filepath' => array( 'Filsti' ),
+ 'Import' => array( 'Importer' ),
+ 'Invalidateemail' => array( 'Ugyldiggjøre_e-post' ),
+ 'BlockList' => array( 'Blokkeringsliste', 'IP-blokkeringsliste' ),
+ 'LinkSearch' => array( 'Lenkesøk' ),
+ 'Listadmins' => array( 'Administratorliste', 'Administratorer' ),
+ 'Listbots' => array( 'Robotliste', 'Liste_over_roboter' ),
'Listfiles' => array( 'Filliste', 'Bildeliste', 'Billedliste' ),
- 'Newimages' => array( 'Nye_filer', 'Nye_bilder' ),
- 'Listusers' => array( 'Brukerliste' ),
'Listgrouprights' => array( 'Grupperettigheter' ),
- 'Statistics' => array( 'Statistikk' ),
- 'Randompage' => array( 'Tilfeldig', 'Tilfeldig_side' ),
+ 'Listredirects' => array( 'Omdirigeringsliste' ),
+ 'Listusers' => array( 'Brukerliste' ),
+ 'Lockdb' => array( 'LÃ¥s_database' ),
+ 'Log' => array( 'Logg', 'Logger' ),
'Lonelypages' => array( 'Foreldreløse_sider' ),
- 'Uncategorizedpages' => array( 'Ukategoriserte_sider' ),
- 'Uncategorizedcategories' => array( 'Ukategoriserte_kategorier' ),
- 'Uncategorizedimages' => array( 'Ukategoriserte_filer', 'Ukategoriserte_bilder' ),
- 'Uncategorizedtemplates' => array( 'Ukategoriserte_maler' ),
- 'Unusedcategories' => array( 'Ubrukte_kategorier' ),
- 'Unusedimages' => array( 'Ubrukte_filer', 'Ubrukte_bilder' ),
- 'Wantedpages' => array( 'Ønskede_sider', 'Ødelagte_lenker' ),
- 'Wantedcategories' => array( 'Ønskede_kategorier' ),
- 'Wantedfiles' => array( 'Ønskede_filer' ),
- 'Wantedtemplates' => array( 'Ønskede_maler' ),
+ 'Longpages' => array( 'Lange_sider' ),
+ 'MergeHistory' => array( 'Flett_historikk' ),
+ 'MIMEsearch' => array( 'MIME-søk' ),
+ 'Mostcategories' => array( 'Flest_kategorier' ),
+ 'Mostimages' => array( 'Mest_lenkede_filer', 'Flest_filer', 'Flest_bilder' ),
'Mostlinked' => array( 'Mest_lenkede_sider', 'Mest_lenket' ),
'Mostlinkedcategories' => array( 'Mest_lenkede_kategorier', 'Mest_brukte_kategorier' ),
'Mostlinkedtemplates' => array( 'Mest_lenkede_maler', 'Mest_brukte_maler' ),
- 'Mostimages' => array( 'Mest_lenkede_filer', 'Flest_filer', 'Flest_bilder' ),
- 'Mostcategories' => array( 'Flest_kategorier' ),
'Mostrevisions' => array( 'Flest_revisjoner' ),
- 'Fewestrevisions' => array( 'Færrest_revisjoner' ),
- 'Shortpages' => array( 'Korte_sider' ),
- 'Longpages' => array( 'Lange_sider' ),
+ 'Movepage' => array( 'Flytt_side' ),
+ 'Mycontributions' => array( 'Mine_bidrag' ),
+ 'Mypage' => array( 'Min_side' ),
+ 'Mytalk' => array( 'Min_diskusjon' ),
+ 'Newimages' => array( 'Nye_filer', 'Nye_bilder' ),
'Newpages' => array( 'Nye_sider' ),
- 'Ancientpages' => array( 'Gamle_sider' ),
- 'Deadendpages' => array( 'Blindveisider' ),
+ 'PasswordReset' => array( 'Nullstill_passord' ),
+ 'Popularpages' => array( 'Populære_sider' ),
+ 'Preferences' => array( 'Innstillinger' ),
+ 'Prefixindex' => array( 'Prefiksindeks' ),
'Protectedpages' => array( 'Beskyttede_sider' ),
'Protectedtitles' => array( 'Beskyttede_titler' ),
- 'Allpages' => array( 'Alle_sider' ),
- 'Prefixindex' => array( 'Prefiksindeks' ),
- 'Ipblocklist' => array( 'Blokkeringsliste', 'IP-blokkeringsliste' ),
- 'Unblock' => array( 'Avblokker' ),
- 'Specialpages' => array( 'Spesialsider' ),
- 'Contributions' => array( 'Bidrag' ),
- 'Emailuser' => array( 'E-post' ),
- 'Confirmemail' => array( 'Bekreft_e-postadresse' ),
- 'Whatlinkshere' => array( 'Lenker_hit' ),
+ 'Randompage' => array( 'Tilfeldig', 'Tilfeldig_side' ),
+ 'Randomredirect' => array( 'Tilfeldig_omdirigering' ),
+ 'Recentchanges' => array( 'Siste_endringer' ),
'Recentchangeslinked' => array( 'Relaterte_endringer' ),
- 'Movepage' => array( 'Flytt_side' ),
- 'Blockme' => array( 'Blokker_meg' ),
- 'Booksources' => array( 'Bokkilder' ),
- 'Categories' => array( 'Kategorier' ),
- 'Export' => array( 'Eksporter' ),
- 'Version' => array( 'Versjon' ),
- 'Allmessages' => array( 'Alle_systembeskjeder' ),
- 'Log' => array( 'Logg', 'Logger' ),
- 'Blockip' => array( 'Blokker', 'Blokker_IP', 'Blokker_bruker' ),
+ 'Revisiondelete' => array( 'Revisjonssletting' ),
+ 'RevisionMove' => array( 'Revisjonsflytting' ),
+ 'Search' => array( 'Søk' ),
+ 'Shortpages' => array( 'Korte_sider' ),
+ 'Specialpages' => array( 'Spesialsider' ),
+ 'Statistics' => array( 'Statistikk' ),
+ 'Tags' => array( 'Tagger' ),
+ 'Unblock' => array( 'Avblokker' ),
+ 'Uncategorizedcategories' => array( 'Ukategoriserte_kategorier' ),
+ 'Uncategorizedimages' => array( 'Ukategoriserte_filer', 'Ukategoriserte_bilder' ),
+ 'Uncategorizedpages' => array( 'Ukategoriserte_sider' ),
+ 'Uncategorizedtemplates' => array( 'Ukategoriserte_maler' ),
'Undelete' => array( 'Gjenopprett' ),
- 'Import' => array( 'Importer' ),
- 'Lockdb' => array( 'LÃ¥s_database' ),
'Unlockdb' => array( 'Ã…pne_database' ),
- 'Userrights' => array( 'Brukerrettigheter' ),
- 'MIMEsearch' => array( 'MIME-søk' ),
- 'FileDuplicateSearch' => array( 'Filduplikatsøk' ),
- 'Unwatchedpages' => array( 'Uovervåkede_sider' ),
- 'Listredirects' => array( 'Omdirigeringsliste' ),
- 'Revisiondelete' => array( 'Revisjonssletting' ),
+ 'Unusedcategories' => array( 'Ubrukte_kategorier' ),
+ 'Unusedimages' => array( 'Ubrukte_filer', 'Ubrukte_bilder' ),
'Unusedtemplates' => array( 'Ubrukte_maler' ),
- 'Randomredirect' => array( 'Tilfeldig_omdirigering' ),
- 'Mypage' => array( 'Min_side' ),
- 'Mytalk' => array( 'Min_diskusjon' ),
- 'Mycontributions' => array( 'Mine_bidrag' ),
- 'Listadmins' => array( 'Administratorliste', 'Administratorer' ),
- 'Listbots' => array( 'Robotliste', 'Liste_over_roboter' ),
- 'Popularpages' => array( 'Populære_sider' ),
- 'Search' => array( 'Søk' ),
- 'Resetpass' => array( 'Endre_passord', 'TIlbakestill_passord' ),
+ 'Unwatchedpages' => array( 'Uovervåkede_sider' ),
+ 'Upload' => array( 'Last_opp' ),
+ 'Userlogin' => array( 'Logg_inn' ),
+ 'Userlogout' => array( 'Logg_ut' ),
+ 'Userrights' => array( 'Brukerrettigheter' ),
+ 'Version' => array( 'Versjon' ),
+ 'Wantedcategories' => array( 'Ønskede_kategorier' ),
+ 'Wantedfiles' => array( 'Ønskede_filer' ),
+ 'Wantedpages' => array( 'Ønskede_sider', 'Ødelagte_lenker' ),
+ 'Wantedtemplates' => array( 'Ønskede_maler' ),
+ 'Watchlist' => array( 'Overvåkningsliste', 'Overvåkingsliste' ),
+ 'Whatlinkshere' => array( 'Lenker_hit' ),
'Withoutinterwiki' => array( 'Uten_interwiki' ),
- 'MergeHistory' => array( 'Flett_historikk' ),
- 'Filepath' => array( 'Filsti' ),
- 'Invalidateemail' => array( 'Ugyldiggjøre_e-post' ),
- 'Blankpage' => array( 'Blank_side' ),
- 'LinkSearch' => array( 'Lenkesøk' ),
- 'DeletedContributions' => array( 'Slettede_bidrag' ),
- 'Tags' => array( 'Tagger' ),
- 'Activeusers' => array( 'Aktive_brukere' ),
- 'ComparePages' => array( 'Sammenlign_sider' ),
- 'Badtitle' => array( 'Ugyldig_tittel' ),
);
$magicWords = array(
'redirect' => array( '0', '#OMDIRIGERING', '#REDIRECT' ),
+ 'notoc' => array( '0', '__INGENINNHOLDSFORTEGNELSE__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__INTETGALLERI__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__TVINGINNHOLDSFORTEGNELSE__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__INNHOLDSFORTEGNELSE__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__INGENSEKSJONSREDIGERING__', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'NÅVÆRENDEMÅNED', 'NÅVÆRENDEMÅNED2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'NÅVÆRENDEMÅNED1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'NÅVÆRENDEMÅNEDSNAVN', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'NÅVÆRENDEMÅNEDSNAVNGEN', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'NÅVÆRENDEMÅNEDSNAVNKORT', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'NÅVÆRENDEDAG', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'NÅVÆRENDEDAG2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'NÅVÆRENDEDAGSNAVN', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'NÅVÆRENDEÅR', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'NÅVÆRENDETID', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'NÅVÆRENDETIME', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'LOKALMÃ…NED', 'LOKALMÃ…NED2', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'LOKALMÃ…NED1', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'LOKALMÃ…NEDSNAVN', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'LOKALMÃ…NEDSNAVNGEN', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'LOKALMÃ…NEDSNAVNKORT', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'LOKALDAG', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'LOKALDAG2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'LOKALDAGSNAVN', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'LOKALTÃ…R', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'LOKALTID', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'LOKALTIME', 'LOCALHOUR' ),
'numberofpages' => array( '1', 'ANTALLSIDER', 'NUMBEROFPAGES' ),
'numberofarticles' => array( '1', 'ANTALLARTIKLER', 'NUMBEROFARTICLES' ),
'numberoffiles' => array( '1', 'ANTALLFILER', 'NUMBEROFFILES' ),
@@ -214,6 +244,8 @@ $magicWords = array(
'img_framed' => array( '1', 'ramme', 'framed', 'enframed', 'frame' ),
'img_frameless' => array( '1', 'ingenramme', 'frameless' ),
'img_page' => array( '1', 'side=$1', 'side $1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'portrett', 'portrett=$1', 'portrett_$1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_baseline' => array( '1', 'grunnlinje', 'baseline' ),
'img_top' => array( '1', 'topp', 'top' ),
'img_middle' => array( '1', 'midt', 'middle' ),
'img_bottom' => array( '1', 'bunn', 'bottom' ),
@@ -222,12 +254,52 @@ $magicWords = array(
'ns' => array( '0', 'NR:', 'NS:' ),
'localurl' => array( '0', 'LOKALURL:', 'LOCALURL:' ),
'localurle' => array( '0', 'LOKALURLE:', 'LOCALURLE:' ),
+ 'articlepath' => array( '0', 'ARTIKKELSTI', 'ARTICLEPATH' ),
'server' => array( '0', 'TJENER', 'SERVER' ),
'servername' => array( '0', 'TJENERNAVN', 'SERVERNAME' ),
+ 'scriptpath' => array( '0', 'SKRIPTSTI', 'SCRIPTPATH' ),
+ 'stylepath' => array( '0', 'STILSTI', 'STYLEPATH' ),
'grammar' => array( '0', 'GRAMMATIKK:', 'GRAMMAR:' ),
'gender' => array( '0', 'KJØNN:', 'GENDER:' ),
+ 'notitleconvert' => array( '0', '__INGENTITTELKONVERTERING__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__INGENINNHOLDSKONVERTERING__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'NÅVÆRENDEUKE', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'NÅVÆRENDEUKEDAG', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'LOKALUKE', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'LOKALUKEDAG', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'REVISJONSID', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'REVISJONSDAG', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'REVISJONSDAG2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'REVISJONSMÃ…NED', 'REVISIONMONTH' ),
+ 'revisionmonth1' => array( '1', 'REVISJONSMÃ…NED1', 'REVISIONMONTH1' ),
+ 'revisionyear' => array( '1', 'REVISJONSÃ…R', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'REVISJONSTIDSSTEMPEL', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'REVISJONSBRUKER', 'REVISIONUSER' ),
+ 'plural' => array( '0', 'FLERTALL:', 'PLURAL:' ),
+ 'raw' => array( '0', 'RÃ…:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'VISTITTEL', 'DISPLAYTITLE' ),
+ 'newsectionlink' => array( '1', '__NYSEKSJONSLENKE__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__INGENNYSEKSJONSLENKE__', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'NÅVÆRENDEVERSJON', 'CURRENTVERSION' ),
+ 'currenttimestamp' => array( '1', 'NÅVÆRENDETIDSSTEMPEL', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'LOKALTTIDSSTEMPEL', 'LOCALTIMESTAMP' ),
+ 'contentlanguage' => array( '1', 'INNHOLDSSPRÃ…K', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'SIDERINAVNEROM:', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'ANTALLADMINISTRATORER', 'NUMBEROFADMINS' ),
'special' => array( '0', 'spesial', 'special' ),
+ 'defaultsort' => array( '1', 'STANDARDSORTERING', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
'filepath' => array( '0', 'FILSTI:', 'FILEPATH:' ),
+ 'hiddencat' => array( '1', '__SKJULTKATEGORI__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'SIDERIKATEGORI', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'SIDESTØRRELSE', 'PAGESIZE' ),
+ 'index' => array( '1', '__INDEKSER__', '__INDEX__' ),
+ 'noindex' => array( '1', '__INGENINDEKSERING__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'NUMMERIGRUPPE', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__STATISTOMDIRIGERING__', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'BESKYTTELSESNIVÃ…', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'datoformat', 'formatdate', 'dateformat' ),
+ 'url_path' => array( '0', 'STI', 'PATH' ),
+ 'url_query' => array( '0', 'SPØRRING', 'QUERY' ),
);
$messages = array(
@@ -262,8 +334,8 @@ $messages = array(
'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. [http://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. [http://www.mediawiki.org/wiki/Manual:External_editors Mer informasjon.])',
+'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',
@@ -359,14 +431,7 @@ $messages = array(
'listingcontinuesabbrev' => 'forts.',
'index-category' => 'Indekserte sider',
'noindex-category' => 'Ikke-indekserte sider',
-
-'mainpagetext' => "'''MediaWiki-programvaren er nå installert.'''",
-'mainpagedocfooter' => 'Se [http://meta.wikimedia.org/wiki/Help:Contents brukerveiledningen] for informasjon om hvordan du bruker wiki-programvaren.
-
-==Ã… starte==
-*[http://www.mediawiki.org/wiki/Manual:Configuration_settings Oppsettsliste]
-*[http://www.mediawiki.org/wiki/Manual:FAQ Ofte stilte spørsmål]
-*[https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-postliste]',
+'broken-file-category' => 'Sider med brutte fillenker',
'about' => 'Om',
'article' => 'Innholdsside',
@@ -418,10 +483,10 @@ $messages = array(
'history' => 'Sidehistorikk',
'history_short' => 'Historikk',
'updatedmarker' => 'oppdatert siden mitt forrige besøk',
-'info_short' => 'Informasjon',
'printableversion' => 'Utskriftsvennlig versjon',
'permalink' => 'Permanent lenke',
'print' => 'Skriv ut',
+'view' => 'Vis',
'edit' => 'Rediger',
'create' => 'Opprett',
'editthispage' => 'Rediger siden',
@@ -429,6 +494,7 @@ $messages = array(
'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',
@@ -512,6 +578,8 @@ $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}}',
@@ -523,6 +591,8 @@ $1',
'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',
@@ -546,7 +616,7 @@ Det kan også være en bug i {{SITENAME}}.',
# General errors
'error' => 'Feil',
-'databaseerror' => 'databasefeil',
+'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:
@@ -603,12 +673,13 @@ Spørring: $2',
'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 [http://translatewiki.net/wiki/Main_Page?setlang=no translatewiki.net], prosjektet for oversettelse av MediaWiki.",
+'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'''.",
-'customcssjsprotected' => 'Du har ikke tillatelse til å redigere denne siden fordi den inneholder en annen brukers personlige innstillinger.',
+'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''.",
@@ -646,6 +717,7 @@ Ikke glem å endre [[Special:Preferences|innstillingene]] dine.',
'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.',
@@ -655,13 +727,15 @@ Velg et annet brukernavn.',
'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 «<nowiki>$1</nowiki>». Kontroller stavemåten.',
+'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.',
@@ -703,13 +777,14 @@ Skriv inn en fungerende e-postadresse eller tøm feltet.',
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',
-# Password reset dialog
+# 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 -->',
@@ -727,6 +802,41 @@ Du kan ignorere denne beskjeden dersom kontoen ble opprettet ved en feil.',
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',
@@ -738,8 +848,6 @@ Du kan ha allerede byttet passordet, eller bedt om et nytt midlertidig passord.'
'extlink_tip' => 'Ekstern lenke (husk prefikset http://)',
'headline_sample' => 'Overskriftstekst',
'headline_tip' => 'Overskrift, nivå 2',
-'math_sample' => 'Sett inn formel her',
-'math_tip' => 'Matematisk formel (LaTeX)',
'nowiki_sample' => 'Sett inn uformatert tekst her',
'nowiki_tip' => 'Ignorer wikiformatering',
'image_sample' => 'Eksempel.jpg',
@@ -828,7 +936,7 @@ Du kan [[Special:Search/{{PAGENAME}}|søke etter denne sidetittelen]] på andre
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 «$1» er ikke registrert. Sjekk om du ønsker å opprette/redigere denne siden.',
+'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.',
@@ -859,6 +967,7 @@ Endringene dine har ikke blitt lagret ennå!",
'''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)',
@@ -1088,8 +1197,8 @@ Vennligst sjekk loggen.',
# Suppression log
'suppressionlog' => 'Sideskjulingslogg',
-'suppressionlogtext' => 'Nedenfor er en liste over sider og blokkeringer med innhold skjult fra administratorer.
-Se [[Special:IPBlockList|blokkeringslisten]] for oversikten over nåværende blokkeringer.',
+'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',
@@ -1197,12 +1306,13 @@ For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler,
'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' => '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',
@@ -1213,9 +1323,10 @@ For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler,
'changepassword' => 'Endre passord',
'prefs-skin' => 'Utseende',
'skin-preview' => 'Forhåndsvisning',
-'prefs-math' => 'Matteformler',
'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',
@@ -1237,8 +1348,6 @@ For å søke i alle, bruk prefikset ''all:'' (inkluderer diskusjonssider, maler,
'columns' => 'Kolonner',
'searchresultshead' => 'Søk',
'resultsperpage' => 'Resultater per side:',
-'contextlines' => 'Linjer per resultat',
-'contextchars' => 'Tegn per linje i resultatet',
'stub-threshold' => 'Grense for <span class="mw-stub-example">stubblenkeformatering</span>:',
'stub-threshold-disabled' => 'Deaktivert',
'recentchangesdays' => 'Antall dager som skal vises i siste endringer:',
@@ -1251,7 +1360,7 @@ Her er et tilfeldig tall du kan bruke: $1',
'savedprefs' => 'Innstillingene ble lagret.',
'timezonelegend' => 'Tidssone:',
'localtime' => 'Lokaltid:',
-'timezoneuseserverdefault' => 'Bruk serverens standardinnstillinger',
+'timezoneuseserverdefault' => 'Bruk wikistandard ($1)',
'timezoneuseoffset' => 'Annet (spesifiser forskjell)',
'timezoneoffset' => 'Forskjell¹:',
'servertime' => 'Serverens tid er nå:',
@@ -1299,8 +1408,8 @@ Den kan maks inneholde $1 {{PLURAL:$1|tegn|tegn}}.',
'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 lar det motta nytt passord om du glemmer det gamle.
-Du kan også la velge å la andre brukere kontakte deg via brukersiden din uten å røpe identiteten din.',
+'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',
@@ -1426,15 +1535,15 @@ Du kan også la velge å la andre brukere kontakte deg via brukersiden din uten
'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-reset-passwords' => 'Nullstille andre brukeres passord',
'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',
-'rightsnone' => '(ingen)',
+'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',
@@ -1556,12 +1665,12 @@ Se [[Special:NewFiles|galleriet over nye filer]] for en mer visuell visning',
'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 samsvarer ikke med noen MIME-type.',
+'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' => "'''«$1»''' er ikke en tillatt filtype.
+'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.',
@@ -1578,6 +1687,7 @@ Se [[Special:NewFiles|galleriet over nye filer]] for en mer visuell visning',
'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]]",
@@ -1611,6 +1721,8 @@ Om du fortsatt ønsker å laste opp filen, gå tilbake og last den opp under et
'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:',
@@ -1620,9 +1732,6 @@ Om du fortsatt ønsker å laste opp filen, gå tilbake og last den opp under et
'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.',
-'upload-wasdeleted' => "'''Advarsel: Du laster opp en fil som tidligere har blitt slettet.'''
-
-Vurder om det er riktig å fortsette å laste opp denne filen. Slettingsloggen for filen gis nedenunder:",
'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:
@@ -1659,12 +1768,29 @@ Om problemet fortsetter, kontakt en [[Special:ListUsers/sysop|administrator]].',
'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' => 'PATH_INFO mangler.
+'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.
-Se http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//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.',
@@ -1739,7 +1865,7 @@ 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.',
-'redirectstofile' => 'Følgende {{PLURAL:$1|fil er en omdirigering|filer er omdirigeringer}} 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.
@@ -1827,18 +1953,19 @@ Beskrivelsen fra [$2 filbeskrivelsessida] vises nedenfor.',
'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' => 'Artikler med flertydige titler',
+'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.
+'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-fixer' => 'Omdirigeringsfikser',
+'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:',
@@ -1915,6 +2042,7 @@ Merk at andre sider kanskje lenker til en fil med en direkte lenke, så filen li
'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',
@@ -1965,7 +2093,7 @@ Se også [[Special:WantedCategories|ønskede kategorier]].',
'sp-deletedcontributions-contribs' => 'bidrag',
# Special:LinkSearch
-'linksearch' => 'Eksterne lenker',
+'linksearch' => 'Søk i eksterne lenker',
'linksearch-pat' => 'Søkemønster:',
'linksearch-ns' => 'Navnerom:',
'linksearch-ok' => 'Søk',
@@ -2030,6 +2158,10 @@ Den e-postadressen du har satt i [[Special:Preferences|innstillingene dine]] vil
'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:',
@@ -2054,10 +2186,10 @@ Den e-postadressen du har satt i [[Special:Preferences|innstillingene dine]] vil
'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.',
-'addedwatch' => 'Lagt til overvåkningsliste',
+'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.",
-'removedwatch' => 'Fjernet fra overvåkningsliste',
+'removewatch' => 'Fjern fra overvåkningslisten',
'removedwatchtext' => 'Siden «[[:$1]]» er fjernet fra [[Special:Watchlist|overvåkningslisten din]].',
'watch' => 'Overvåk',
'watchthispage' => 'Overvåk denne siden',
@@ -2078,8 +2210,9 @@ Fremtidige endringer til denne siden og den tilhørende diskusjonssiden blir lis
'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…',
+'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',
@@ -2111,16 +2244,16 @@ Du kan også fjerne varslingsflagg for alle overvåkede sider i overvåkningslis
--
For å endre innstillingene for e-postvarsler, se
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
For å endre innstillingene for overvåkningslisten, se
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
For å slette en side fra overvåkningssiden, se
$UNWATCHURL
Tilbakemelding og videre assistanse:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Slett side',
@@ -2136,7 +2269,7 @@ Tilbakemelding og videre assistanse:
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' => '«<nowiki>$1</nowiki>» er slettet.
+'deletedtext' => '«$1» er slettet.
Se $2 for en oversikt over de siste slettingene.',
'deletedarticle' => 'slettet «[[$1]]»',
'suppressedarticle' => 'fjernet «[[$1]]»',
@@ -2189,7 +2322,7 @@ Se [[Special:ProtectedPages|listen over beskyttede sider]] for listen over gjeld
'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 '''<nowiki>$1</nowiki>''' her.",
+'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å.
@@ -2241,9 +2374,8 @@ Du kan endre sidens beskyttelsesnivå, men det vil ikke påvirke dypbeskyttelsen
'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 siden, la alle boksene være som de er, og klikk '''''Gjenopprett'''''.
-For å gjenopprette kun deler, kryss av revisjonenes bokser, og klikk '''''Gjenopprett'''''.
-Å klikke '''''Nullstill''''' vil føre til at alle tekstfelt og bokser gjøres blanke.",
+'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.',
@@ -2283,9 +2415,12 @@ $1',
'undelete-show-file-submit' => 'Ja',
# Namespace form on various pages
-'namespace' => 'Navnerom:',
-'invert' => 'Inverter valg',
-'blanknamespace' => '(Hoved)',
+'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',
@@ -2335,11 +2470,13 @@ Den siste oppføringen i blokkeringsloggen er vist nedenfor som referanse:',
'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.',
-'ipaddress' => 'IP-adresse',
'ipadressorusername' => 'IP-adresse eller brukernavn',
'ipbexpiry' => 'Varighet:',
'ipbreason' => 'Ã…rsak:',
@@ -2352,7 +2489,7 @@ Den siste oppføringen i blokkeringsloggen er vist nedenfor som referanse:',
** Truende oppførsel
** Misbruk av flere kontoer
** Uakseptabelt brukernavn',
-'ipbanononly' => 'Blokker kun anonyme brukere',
+'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',
@@ -2363,12 +2500,15 @@ Den siste oppføringen i blokkeringsloggen er vist nedenfor som referanse:',
'ipbotherreason' => 'Annen/utdypende grunn:',
'ipbhidename' => 'Skjul brukernavn fra endringer og lister',
'ipbwatchuser' => 'Overvåk brukerens brukerside og diskusjonsside',
-'ipballowusertalk' => 'La brukeren redigere sin egen diskusjonssiden under blokkeringen',
+'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',
@@ -2378,17 +2518,23 @@ Se [[Special:IPBlockList|blokkeringslisten]] for alle blokkeringer.',
'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',
-'ipblocklist-username' => 'Brukernavn eller IP-adresse:',
-'ipblocklist-sh-userblocks' => '$1 blokkeringer av kontoer',
-'ipblocklist-sh-tempblocks' => '$1 midlertidige blokkeringer',
-'ipblocklist-sh-addressblocks' => '$1 blokkeringer av individuelle IP-adresser',
+'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}}',
-'blocklistline' => '$1, $2 blokkerte $3 ($4)',
'infiniteblock' => 'uendelig',
'expiringblock' => 'utgår den $1 kl $2',
'anononlyblock' => 'kun uregistrerte',
@@ -2410,7 +2556,7 @@ Blokkeringsloggen vises nedenfor.',
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:IPBlockList|blokkeringslisten]] for en liste over IP-adresser som er blokkert akkurat nå.',
+'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',
@@ -2424,9 +2570,9 @@ Skjulingsloggen vises nedenfor.',
'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' => '== Allerede blokkert ==
-$1 er blokkert fra før. Vil du endre innstillingene?',
+'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.',
@@ -2466,6 +2612,7 @@ Bekreft at du har til hensikt å gjøre dette.',
'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',
@@ -2588,7 +2735,7 @@ Dersom du bare vil ha nåværende versjon, kan du også bruke en lenke, for ekse
'allmessagesdefault' => 'Standardtekst',
'allmessagescurrent' => 'Nåværende tekst',
'allmessagestext' => 'Dette er en liste over tilgjengelige systemmeldinger i MediaWiki-navnerommet.
-Besøk [http://translatewiki.net translatewiki.net] om du ønsker å bidra med oversettelse av MediaWiki.',
+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',
@@ -2747,9 +2894,7 @@ Du kan se på kildeteksten',
'modern.js' => '/* Javascript i denne fila vil gjelde for brukere av drakta Modern */',
# Metadata
-'nodublincore' => 'Dublin Core RDF-metadata er slått av på denne tjeneren.',
-'nocreativecommons' => 'Create Commons RDF-metadata er slått av på denne tjeneren.',
-'notacceptable' => 'Tjeneren har ingen mulige måter å vise data i din nettleser.',
+'notacceptable' => 'Tjeneren har ingen mulige måter å vise data i din nettleser.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonym bruker|Anonyme brukere}} av {{SITENAME}}',
@@ -2773,12 +2918,17 @@ Dette er sannsynligvis forårsaket av en lenke til et svartelistet eksternt nett
'spam_blanking' => 'Alle revisjoner inneholdt lenke til $1, tømmer siden',
# Info page
-'infosubtitle' => 'Sideinformasjon',
-'numedits' => 'Antall redigeringer (artikkel): $1',
-'numtalkedits' => 'Antall redigeringer (diskusjonsside): $1',
-'numwatchers' => 'Antall overvåkere: $1',
-'numauthors' => 'Antall forskjellige bidragsytere (artikkel): $1',
-'numtalkauthors' => 'Antall forskjellige bidragsytere (diskusjonsside): $1',
+'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',
@@ -2789,26 +2939,6 @@ Dette er sannsynligvis forårsaket av en lenke til et svartelistet eksternt nett
'skinname-simple' => 'Enkel',
'skinname-modern' => 'Moderne',
-# Math options
-'mw_math_png' => 'Vis alltid som PNG',
-'mw_math_simple' => 'HTML hvis veldig enkel, ellers PNG',
-'mw_math_html' => 'HTML hvis mulig, ellers PNG',
-'mw_math_source' => 'Behold som TeX (for tekst-nettlesere)',
-'mw_math_modern' => 'Anbefalt for moderne nettlesere',
-'mw_math_mathml' => 'MathML hvis mulig',
-
-# Math errors
-'math_failure' => 'Feil i matematikken',
-'math_unknown_error' => 'ukjent feil',
-'math_unknown_function' => 'ukjent funksjon',
-'math_lexing_error' => 'lexerfeil',
-'math_syntax_error' => 'syntaksfeil',
-'math_image_error' => 'PNG-konversjon mislyktes; sjekk at latex og dvipng (eller dvips + gs + convert) er korrekt installert',
-'math_bad_tmpdir' => 'Kan ikke skrive til eller opprette midlertidig mappe',
-'math_bad_output' => 'Kan ikke skrive til eller opprette resultatmappe',
-'math_notexvc' => 'Mangler kjørbar texvc;
-se math/README for oppsett.',
-
# Patrolling
'markaspatrolleddiff' => 'Godkjenn endringen',
'markaspatrolledtext' => 'Godkjenn denne siden',
@@ -2844,22 +2974,25 @@ $1',
'nextdiff' => 'Neste endring →',
# Media information
-'mediawarning' => "'''Advarsel''': Denne filen kan inneholde farlig kode.
+'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-nohires' => '<small>Ingen høyere oppløsning tilgjengelig.</small>',
-'svg-long-desc' => 'SVG-fil, standardoppløsning $1 × $2 piksler, filstørrelse: $3',
-'show-big-image' => 'Full oppløsning',
-'show-big-image-thumb' => '<small>Størrelse på denne forhåndsvisningen: $1 × $2 piksler</small>',
-'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}}',
+'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}}',
+'file-nohires' => '<small>Ingen høyere oppløsning tilgjengelig.</small>',
+'svg-long-desc' => 'SVG-fil, standardoppløsning $1 × $2 piksler, filstørrelse: $3',
+'show-big-image' => 'Full oppløsning',
+'show-big-image-preview' => '<small>Størrelse på denne forhåndsvisningen: $1.</small>',
+'show-big-image-other' => '<small>Andre oppløsninger: $1.</small>',
+'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',
@@ -2889,7 +3022,7 @@ Alle andre lenker på samme linje anses for å være unntak, altså sider der fi
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' => 'EXIF-metadatafelt listet i denne meldingen inkluderes på bildesiden mens metadatatabellen er slått sammen.
+'metadata-fields' => 'Bildemetadatafelt listet i denne meldingen inkluderes på bildesiden når metadatatabellen er slått sammen.
Andre vil skjules som standard.
* make
* model
@@ -2897,7 +3030,13 @@ Andre vil skjules som standard.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Bredde',
@@ -2912,13 +3051,11 @@ Andre vil skjules som standard.
'exif-ycbcrpositioning' => 'Y- og C-posisjonering',
'exif-xresolution' => 'Horisontal oppløsning',
'exif-yresolution' => 'Vertikal oppløsning',
-'exif-resolutionunit' => 'Enhet for X- og Y-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-transferfunction' => 'Overføringsfunksjon',
'exif-whitepoint' => 'Hvitpunktkromatisitet',
'exif-primarychromaticities' => 'Primærfargenes renhet',
'exif-ycbcrcoefficients' => 'Koeffisienter fr fargeromstransformasjonsmatrise',
@@ -2937,7 +3074,6 @@ Andre vil skjules som standard.
'exif-compressedbitsperpixel' => 'Bildekompresjonsmodus',
'exif-pixelydimension' => 'Bildebredde',
'exif-pixelxdimension' => 'Bildehøyde',
-'exif-makernote' => 'Fabrikkmerknader',
'exif-usercomment' => 'Brukerkommentarer',
'exif-relatedsoundfile' => 'Relatert lydfil',
'exif-datetimeoriginal' => 'Dato og tid for datagenerering',
@@ -2951,7 +3087,6 @@ Andre vil skjules som standard.
'exif-exposureprogram' => 'Eksponeringsprogram',
'exif-spectralsensitivity' => 'Spektralsensitivitet',
'exif-isospeedratings' => 'Filmhastighet (ISO)',
-'exif-oecf' => 'Optoelektronisk konversjonsfaktor',
'exif-shutterspeedvalue' => 'APEX lukkerhastighet',
'exif-aperturevalue' => 'APEX blenderåpning',
'exif-brightnessvalue' => 'APEX lysstyrke',
@@ -2964,7 +3099,6 @@ Andre vil skjules som standard.
'exif-focallength' => 'Linsens brennvidde',
'exif-subjectarea' => 'Motivområde',
'exif-flashenergy' => 'Blitsenergi',
-'exif-spatialfrequencyresponse' => 'Romslig frekvensrespons',
'exif-focalplanexresolution' => 'Oppløsning i fokalplan X',
'exif-focalplaneyresolution' => 'Oppløsning i fokalplan Y',
'exif-focalplaneresolutionunit' => 'Enhet for oppløsning i fokalplan',
@@ -2973,7 +3107,6 @@ Andre vil skjules som standard.
'exif-sensingmethod' => 'Avkjenningsmetode',
'exif-filesource' => 'Filkilde',
'exif-scenetype' => 'Scenetype',
-'exif-cfapattern' => 'CFA-mønster',
'exif-customrendered' => 'Tilpasset bildebehandling',
'exif-exposuremode' => 'Eksponeringsmodus',
'exif-whitebalance' => 'Hvit balanse',
@@ -3018,10 +3151,79 @@ Andre vil skjules som standard.
'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',
@@ -3039,6 +3241,8 @@ Rotert 90° mot klokka og vridd vertikalt',
'exif-planarconfiguration-1' => 'chunkformat',
'exif-planarconfiguration-2' => 'planærformat',
+'exif-colorspace-65535' => 'Ukalibrert',
+
'exif-componentsconfiguration-0' => 'finnes ikke',
'exif-exposureprogram-0' => 'Ikke angitt',
@@ -3152,6 +3356,10 @@ Rotert 90° mot klokka og vridd vertikalt',
'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',
@@ -3163,21 +3371,73 @@ Rotert 90° mot klokka og vridd vertikalt',
'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 [http://www.mediawiki.org/wiki/Manual:External_editors oppsettsinstruksjonene] for mer informasjon)',
+'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
-'recentchangesall' => 'alle',
-'imagelistall' => 'alle',
-'watchlistall2' => 'alle',
-'namespacesall' => 'alle',
-'monthsall' => 'alle',
-'limitall' => 'alle',
+'watchlistall2' => 'alle',
+'namespacesall' => 'alle',
+'monthsall' => 'alle',
+'limitall' => 'alle',
# E-mail address confirmation
'confirmemail' => 'Bekreft e-postadresse',
@@ -3248,15 +3508,22 @@ $1',
'trackbackdeleteok' => 'Tilbakesporingen ble slettet.',
# 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.',
-'recreate' => 'Gjenopprett',
+'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;',
@@ -3299,7 +3566,7 @@ Prøv vanlig forhåndsvisning.',
'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:Watchlist/raw|redigere den rå overvåkningslisten]].',
+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',
@@ -3307,7 +3574,7 @@ Du kan også [[Special:Watchlist/raw|redigere den rå overvåkningslisten]].',
'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:Watchlist/edit|bruke standardverktøyet]].',
+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.',
@@ -3354,33 +3621,33 @@ Du kan også [[Special:Watchlist/edit|bruke standardverktøyet]].',
'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-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-skin-extension-functions' => 'Skalltilleggsfunksjoner',
-'version-hook-name' => 'Navn',
-'version-hook-subscribedby' => 'Brukes av',
-'version-version' => '(versjon $1)',
-'version-license' => 'Lisens',
-'version-poweredby-credits' => "Denne wikien er drevet av '''[http://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.
+'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 [http://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',
+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',
@@ -3390,21 +3657,22 @@ Du skal ha mottatt [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopi av GNU General Publ
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.
-
-Skriv inn filnavn uten «{{ns:file}}:»-prefikset.',
-'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' => '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-note' => '----
-* <strong class="mw-specialpagerestricted">Markerte spesialsider har begrenset tilgang.</strong>',
+* Normale spesialsider.
+* <span class="mw-specialpagerestricted">Spesialsider med begrenset tilgang.</span>
+* <span class="mw-specialpagecached">Spesialsider som oppdateres periodisk (kan være foreldede).</span>',
'specialpages-group-maintenance' => 'Vedlikeholdsrapporter',
'specialpages-group-other' => 'Andre spesialsider',
'specialpages-group-login' => 'Innlogging / registrering',
diff --git a/languages/messages/MessagesNov.php b/languages/messages/MessagesNov.php
index 8f310c01..b03b364e 100644
--- a/languages/messages/MessagesNov.php
+++ b/languages/messages/MessagesNov.php
@@ -104,7 +104,6 @@ $messages = array(
'searcharticle' => 'Vada',
'history' => 'Historie del pagine',
'history_short' => 'Historie',
-'info_short' => 'Informatione',
'printableversion' => 'Printindi versione',
'permalink' => 'Permananti linke',
'print' => 'Printa',
@@ -349,7 +348,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
'mywatchlist' => 'Men liste de observos',
'nowatchlist' => 'Vu have nuli koses in vun liste de observos.',
'watchnologin' => 'Non ensignatat',
-'addedwatch' => 'Adit a observa-liste',
'addedwatchtext' => "Li pagine \"[[:\$1]]\" ha bli adi a vun [[Special:Watchlist|observa-liste]].
Futuri chanjos a disi pagine e lun asosiati Parla-pagine sal bli lista tilok, e li pagine sal apari '''diki''' in li [[Special:RecentChanges|liste de resenti chanjos]] por ke on trova lu plu fasilim.
@@ -429,9 +427,6 @@ Si vu voli plu tardim ekarta li pagine fro vun observa-liste, klikta \"Desobserv
'tooltip-pt-logout' => 'Eksignata',
'tooltip-p-logo' => 'Chefi pagine',
-# Info page
-'infosubtitle' => 'Informatione pri pagine',
-
# Special:NewFiles
'ilsubmit' => 'Sercha',
'bydate' => 'segun date',
@@ -442,9 +437,6 @@ Si vu voli plu tardim ekarta li pagine fro vun observa-liste, klikta \"Desobserv
'exif-imagedescription' => 'Title de imaje',
'exif-imageuniqueid' => 'Unik imaje ID',
-# 'all' in various places, this might be different for inflected languages
-'imagelistall' => 'omnes',
-
# Auto-summaries
'autosumm-replace' => "Remplasant pagine kun '$1'",
'autoredircomment' => 'Ri-adresant a [[$1]]',
diff --git a/languages/messages/MessagesNso.php b/languages/messages/MessagesNso.php
index 03ef69b3..47f994f0 100644
--- a/languages/messages/MessagesNso.php
+++ b/languages/messages/MessagesNso.php
@@ -66,7 +66,7 @@ $messages = array(
'tog-enotifrevealaddr' => 'Bonagatša email atrese go temošo tša poso',
'tog-shownumberswatching' => 'Laetša palo bašomiši bao ba tlhapetšego',
'tog-fancysig' => 'Tsaeno ya gose fihliwe',
-'tog-externaleditor' => 'Šomiša sengwadi sa kantle (bašumiši bao banalego botsibi fela. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaleditor' => 'Šomiša sengwadi sa kantle (bašumiši bao banalego botsibi fela. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
'tog-forceeditsummary' => 'Ntaetše ge kesa tsenye mongwalo go kakaretšo ya dithetogo',
'tog-watchlisthideown' => 'Fihla diphetogo tšeo di direlego ke nna go lenano la ditlhapetšo.',
'tog-watchlisthideminor' => 'Fihla diphetogo tše nyenyane tšeo di direlego ke nna go lenano la ditlhapetšo',
@@ -156,7 +156,7 @@ $messages = array(
'qbedit' => 'Fetola',
'qbpageoptions' => 'Letlakala le',
'qbmyoptions' => 'Matlakala a ka',
-'qbspecialpages' => 'Matlakala a itšego',
+'qbspecialpages' => 'Matlakala a kgethegilego',
'faq' => '"FAQ"',
# Vector skin
@@ -184,7 +184,6 @@ $messages = array(
'history' => 'Histori ya letlakala',
'history_short' => 'Histori',
'updatedmarker' => 'fetotšwe esale ketelo yaka ya mafelelo',
-'info_short' => 'Sedi',
'printableversion' => "''Version'' ya go gatišega",
'permalink' => 'Hlomaganyo yao e tiišeditšwego',
'edit' => 'Fetola',
@@ -279,7 +278,7 @@ $messages = array(
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Letlakala',
'nstab-user' => 'Letlakala la mošomiši',
-'nstab-special' => 'Letlakala le itšeng',
+'nstab-special' => 'Letlakala le le kgethegilego',
'nstab-project' => 'Letlakala la tirotherwa',
'nstab-image' => 'Faele',
'nstab-mediawiki' => 'Molaetša',
@@ -338,6 +337,7 @@ TÅ¡hupaleloko (''account'') ya gago e tlhodilwe. O seke wa lebala go fetola [[Sp
'createaccount' => 'Bula tšhupaleloko',
'gotaccount' => "O šetše o nale tšhupaleloko? '''$1'''.",
'gotaccountlink' => 'Tsena',
+'userlogin-resetlink' => 'O lebetše dintlha tšago tsena?',
'createaccountmail' => 'ka e-mail',
'createaccountreason' => 'Lebaka:',
'badretype' => 'Ditlhaka-tša-siphiri tše o di šomišitšego ga di swane.',
@@ -347,7 +347,7 @@ TÅ¡hupaleloko (''account'') ya gago e tlhodilwe. O seke wa lebala go fetola [[Sp
'nosuchuser' => 'Ga gona mošomiši wa leina la "$1".
Maina a huduetša ke ditlhaka.
Lebele mopeleto wa gago goba [[Special:UserLogin/signup|o tlhome mošomiši yo mophsa]].',
-'nosuchusershort' => 'Ga gona mošomiši wa leina la "<nowiki>$1</nowiki>". Hlokomela mopeleto wa gago.',
+'nosuchusershort' => 'Ga gona mošomiši wa leina la "$1". Hlokomela mopeleto wa gago.',
'nouserspecified' => 'O swanela ke go fana ka leina la mošomiši.',
'wrongpassword' => 'O loketše ditlhaka-tša-siphiri tšeo e sego tšona. Ka kgopelo, leka gape.',
'wrongpasswordempty' => 'Ga wa lokela ditlhaka-tša-siphiri. Ka kgopelo, leka gape.',
@@ -382,7 +382,7 @@ Ga wa dumelwa go tlhoma tše dingwe.',
'accountcreatedtext' => 'TÅ¡hupaleloko (account) ya modiri $1 e tlhodilwe.',
'loginlanguagelabel' => 'Polelo: $1',
-# Password reset dialog
+# Change password dialog
'resetpass_text' => '<!-- Tsenya ditlhaka mo -->',
'oldpassword' => 'Ditlhaka-tša-siphiri tša kgale:',
'newpassword' => 'Ditlhaka-tša-siphiri tše mpsha:',
@@ -400,8 +400,6 @@ Ga wa dumelwa go tlhoma tše dingwe.',
'extlink_tip' => 'Hlomaganyo ya ka ntle (gopola go thoma ka http://)',
'headline_sample' => 'Tlhaka ya hlogotaba',
'headline_tip' => 'Hlogotaba ya boemo ba 2',
-'math_sample' => "Lokela ''formula'' mo",
-'math_tip' => 'Formula ya dipalo (LaTeX)',
'nowiki_sample' => "Tsenya ditlhaka tša go sebe le ''format'' mo",
'nowiki_tip' => "Hlokomologa tselangwalo (''formatting'') ya wiki",
'image_sample' => 'Mohlala.jpg',
@@ -633,6 +631,9 @@ Leka go fetleka ka go ngwala ''all:'' go fetleka mateng ka moka, goba o šumiše
'badsiglength' => 'Leina la boreelo le letelele kudu.
Le swanela goba fase ga $1 {{PLURAL:$1|ya tlhaka|tša ditlhaka}}',
'prefs-help-realname' => 'Leina la nnete gale gapeletšwe, efela ge o kgetha go fana ka lona, le tla šomišwa go bontšha diabe mešomong ya gago.',
+'prefs-help-email' => 'Aterese ya E-poso gae hlokagale, efela e ka hlokagala ge dihlaka tša sephiri di fetolwa, ge o ka lebala dihlaka tša gago tša sephiri',
+'prefs-help-email-others' => 'O ka kgetha gore batho ba bangwe ba bolele le wena ka e-poso ga kgokaganyo letlakala la gago goba letlakala la dipoledišano.
+Ga re fane ka e-poso ya gago go bašumiši ba bangwe ge ba polela le wena ka yona.',
'prefs-help-email-required' => 'E-mail atrese eya nyakega.',
# User rights
@@ -896,12 +897,10 @@ Matlakala ago ba [[Special:Watchlist|lenanong la gago la matlakala ditlhapetšo]
'watchlist' => 'Lenano la ditlhapetšo tša ka',
'mywatchlist' => 'Lenano la ditlhapetšo tša ka',
'watchlistfor2' => 'Ya $1 $2',
-'addedwatch' => 'Loketšwe go lenano la ditlhapetšo',
'addedwatchtext' => "Letlakala \"[[:\$1]]\" le tsene go [[Special:Watchlist|watchlist]] ya gago.
Go tloga bjale, diphetogo letlakaleng le, le letlakaleng la dipoledišano la gona, di tla bontšhwa ka mongalo wa '''bold''' gare ga [[Special:RecentChanges|list of recent changes]] gore go be bonolo gore oa bone.
Ga eba o nyaka go hloša letlaka le go lenano la ditlhapetšo tša gago, šomiša \"Tloša tlhapetšo\" go sidebar.",
-'removedwatch' => 'Tlošitšwe go lenano la ditlhapetšo',
'removedwatchtext' => 'Letlakala "[[:$1]]" letlošitšwe go [[Special:Watchlist|lenano la gago la ditlhapetšo]].',
'watch' => 'Tlhapetša',
'watchthispage' => 'Tlhapetša letlakala le',
@@ -932,7 +931,7 @@ Ga eba o nyaka go hloša letlaka le go lenano la ditlhapetšo tša gago, šomiš
Ka kgopela sitlediša gore ke se o nyakago go sedira, le gore o kwešiša ditla morago tša se, le gore seo o se dirago se latela melawana le ditaelo go ya ka [[{{MediaWiki:Policy-url}}|polisi]].',
'actioncomplete' => 'Kgopelo e phetilwe ka katlego',
'actionfailed' => 'Tiro e padile',
-'deletedtext' => '"<nowiki>$1</nowiki>" e phumutšwe.
+'deletedtext' => '"$1" e phumutšwe.
Lebelela $2 go hweetša sedi ka diphulo tša bjale.',
'deletedarticle' => 'E phumutšwe "[[$1]]"',
'dellogpage' => "''Log'' yago phumula",
@@ -954,7 +953,7 @@ Lebelela $2 go hweetša sedi ka diphulo tša bjale.',
'protectexpiry' => 'Fetatšatši:',
'protect_expiry_invalid' => 'Fetatšatši, nako ye ga ya dumelwa.',
'protect_expiry_old' => 'Fetatšatši ke ya nako yeo e fetilego.',
-'protect-text' => "O ka lebelela lego fetola seemo sa go lota sa letlakala '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "O ka lebelela lego fetola seemo sa go lota sa letlakala '''$1'''.",
'protect-locked-access' => "TÅ¡hupaleloko ya gago ga ena tumello ya go fetola seemo sago lota ga letlakala.
Seemo sa go lota ga letlakala '''$1''':",
'protect-cascadeon' => 'Letlakala le lotegile ka ge le akeretšwa ke {{PLURAL:$1|letlakala, leo lenalego|matlakala, analego}} golotega ga kakaretšo. O ka fetola go lotega ga letlakala le.',
@@ -1032,7 +1031,6 @@ Seemo sa go lota ga letlakala '''$1''':",
# Block/unblock
'blockip' => 'Thibela mošomiši go tsena',
-'ipaddress' => 'IP Atrese:',
'ipbexpiry' => 'Fetatšatši:',
'ipbreason' => 'Lebaka:',
'ipbreasonotherlist' => 'Lebaka le lengwe',
@@ -1042,7 +1040,6 @@ Seemo sa go lota ga letlakala '''$1''':",
'ipbotheroption' => 'yengwe',
'ipblocklist' => "Bašumiši bao bathibilwego(''blocked'')",
'ipblocklist-submit' => 'Fetleka',
-'blocklistline' => '$1, $2 o thibile $3 ($4)',
'emailblock' => 'e-mail e thibilwe',
'blocklink' => 'thibela',
'unblocklink' => 'tloša thibelo',
@@ -1151,12 +1148,12 @@ Ka kgopelo, kgetha leina le lengwe.',
'tooltip-t-contributions' => 'Lebelela lenano la diabe tša mošomiši yo',
'tooltip-t-emailuser' => 'Romela molaetša go mošomiši yo',
'tooltip-t-upload' => 'Lokela senepe goba difaele',
-'tooltip-t-specialpages' => 'Lenano la matlakala kamoka a itšeng',
+'tooltip-t-specialpages' => 'Lenano la matlakala kamoka a kgethegilego',
'tooltip-t-print' => 'Seemo sa letlakala le seo se ka gatišwago',
'tooltip-t-permalink' => 'Hlomaganyo go poeletšo ye ya letlakala',
'tooltip-ca-nstab-main' => 'Nyakoretša boteng bja letlakala',
'tooltip-ca-nstab-user' => 'Lebelela letlakala la mošomiši',
-'tooltip-ca-nstab-special' => 'Letlakala le le "special", gago kgonege go le fetola',
+'tooltip-ca-nstab-special' => 'Letlakala le le kgethegile, gago kgonege go le fetola',
'tooltip-ca-nstab-project' => 'Lebelela letlakala la tirotherwa',
'tooltip-ca-nstab-image' => 'Lebelela letlakala',
'tooltip-ca-nstab-template' => "Lebelela ''template''",
@@ -1178,14 +1175,6 @@ Ka kgopelo, kgetha leina le lengwe.',
'others' => 'tše dingwe',
'siteusers' => '{{SITENAME}} mošumiši/bašumiši $1',
-# Info page
-'numedits' => 'Palo ya diphetogo (letlakala): $1',
-'numwatchers' => 'Palo ya batlhapedi: $1',
-
-# Math errors
-'math_unknown_error' => 'Phošo ya gose tsebege',
-'math_syntax_error' => 'phošo ya popafoko',
-
# Patrol log
'patrol-log-line' => 'maraka $1 ya $2 "patrolwa" ke $3',
'patrol-log-diff' => 'Pušeletšo $1',
@@ -1202,12 +1191,11 @@ $1',
'nextdiff' => 'Diphapano tše dimpšha →',
# Media information
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|letlakala|matlakala}}',
-'file-info-size' => '$1 × $2 pixel, bogolo ba faele: $3, Mohuta wa MIME: $4',
-'file-nohires' => "<small>Gago ''resolution'' ya go feta mo.</small>",
-'svg-long-desc' => 'SVG faele, nominally $1 × $2 pixels, bogolo ba faele: $3',
-'show-big-image' => "''resolution'' ya gofella",
-'show-big-image-thumb' => '<small>Bogolo ba pono: $1 × $2 pixels</small>',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|letlakala|matlakala}}',
+'file-info-size' => '$1 × $2 pixel, bogolo ba faele: $3, Mohuta wa MIME: $4',
+'file-nohires' => "<small>Gago ''resolution'' ya go feta mo.</small>",
+'svg-long-desc' => 'SVG faele, nominally $1 × $2 pixels, bogolo ba faele: $3',
+'show-big-image' => "''resolution'' ya gofella",
# Special:NewFiles
'newimages' => "''Gallery'' ya difaele tše mpsha",
@@ -1226,7 +1214,7 @@ Dihlomaganyo tše dilatelago mothalong o tee di tšewa bjalo ka maarogi, ka mant
'metadata-help' => "Faele enale sedi yengwe, yeo ekabago e tšwa go khamera goba ''scanner'' tšeo di šumišitšwego go bopa faele ye. Sedi ye itsego ga ego goba gona go faele ye e fetolwago.",
'metadata-expand' => 'Bontšha sedi ya gotlala(extended)',
'metadata-collapse' => "Fihla sedi ya gotlala(''extended'')",
-'metadata-fields' => "EXIF metadata ''fields'' tšao dilego go molaetša wo, di tla tsenywa go
+'metadata-fields' => " metadata ''fields'' tšao dilego go molaetša wo, di tla tsenywa go
letlakala la seswantšho ge tafola ya metadata e bulwa. Tše dingwe tša di ''fields'' di tla fihliwa.
* make
* model
@@ -1234,7 +1222,13 @@ letlakala la seswantšho ge tafola ya metadata e bulwa. Tše dingwe tša di ''fi
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Bophara',
@@ -1249,14 +1243,12 @@ letlakala la seswantšho ge tafola ya metadata e bulwa. Tše dingwe tša di ''fi
# External editor support
'edit-externally' => 'Fetola faele ye o šumiša thulusi ya ka ntle',
-'edit-externally-help' => '(Lebelela [http://www.mediawiki.org/wiki/Manual:External_editors Taelo ya go thoma] go humana sedi)',
+'edit-externally-help' => '(Lebelela [//www.mediawiki.org/wiki/Manual:External_editors Taelo ya go thoma] go humana sedi)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ka moka',
-'imagelistall' => 'ka moka',
-'watchlistall2' => 'ka moka',
-'namespacesall' => 'ka moka',
-'monthsall' => 'ka moka',
+'watchlistall2' => 'ka moka',
+'namespacesall' => 'ka moka',
+'monthsall' => 'ka moka',
# Multipage image navigation
'imgmultipageprev' => '↠letlakala la go feta',
@@ -1294,7 +1286,7 @@ letlakala la seswantšho ge tafola ya metadata e bulwa. Tše dingwe tša di ''fi
'fileduplicatesearch-submit' => 'Fetleka',
# Special:SpecialPages
-'specialpages' => 'Matlakala a itšeng',
+'specialpages' => 'Matlakala a kgethegilego',
# External image whitelist
'external_image_whitelist' => ' #Tlogela letlakale ka mokgwa wo<pre>
diff --git a/languages/messages/MessagesNv.php b/languages/messages/MessagesNv.php
index a1326e09..8de19b0a 100644
--- a/languages/messages/MessagesNv.php
+++ b/languages/messages/MessagesNv.php
@@ -370,7 +370,7 @@ $3',
# External editor support
'edit-externally' => "''external application''ígíí choinishʼįįhgo díí eʼelyaaígíí łahgo áshłééh nisin.",
-'edit-externally-help' => '([http://www.mediawiki.org/wiki/Manual:External_editors anáʼálwoʼ] (Bilagáanakʼehjí))',
+'edit-externally-help' => '([//www.mediawiki.org/wiki/Manual:External_editors anáʼálwoʼ] (Bilagáanakʼehjí))',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tʼáá ałtso',
diff --git a/languages/messages/MessagesOc.php b/languages/messages/MessagesOc.php
index 07f8310a..2fc01a2f 100644
--- a/languages/messages/MessagesOc.php
+++ b/languages/messages/MessagesOc.php
@@ -56,92 +56,92 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Redireccions_doblas', 'RedireccionsDoblas' ),
+ 'Allmessages' => array( 'Messatge_sistèma', 'Messatge_del_sistèma' ),
+ 'Allpages' => array( 'Totas_las_paginas' ),
+ 'Ancientpages' => array( 'Paginas_ancianas' ),
+ 'Blankpage' => array( 'Pagina_blanca', 'PaginaBlanca' ),
+ 'Block' => array( 'Blocar', 'Blocatge' ),
+ 'Blockme' => array( 'Blocatz_me', 'Blocatz-me' ),
+ 'Booksources' => array( 'Obratge_de_referéncia', 'Obratges_de_referéncia' ),
'BrokenRedirects' => array( 'Redireccions_copadas', 'RedireccionsCopadas' ),
- 'Disambiguations' => array( 'Omonimia', 'Omonimias', 'Paginas_d\'omonimia' ),
- 'Userlogin' => array( 'Nom_d\'utilizaire' ),
- 'Userlogout' => array( 'Desconnexion' ),
+ 'Categories' => array( 'Categorias' ),
+ 'ChangePassword' => array( 'Reïnicializacion_del_senhal', 'Reinicializaciondelsenhal' ),
+ 'Confirmemail' => array( 'Confirmar_lo_corrièr_electronic', 'Confirmarlocorrièrelectronic', 'ConfirmarCorrièrElectronic' ),
+ 'Contributions' => array( 'Contribucions' ),
'CreateAccount' => array( 'Crear_un_compte', 'CrearUnCompte', 'CrearCompte' ),
- 'Preferences' => array( 'Preferéncias' ),
- 'Watchlist' => array( 'Lista_de_seguit', 'ListraDeSeguit', 'Seguit', 'Lista_de_seguiment', 'ListraDeSeguiment', 'Seguiment' ),
- 'Recentchanges' => array( 'Darrièrs_cambiaments', 'DarrièrsCambiaments', 'Darrièras_Modificacions' ),
- 'Upload' => array( 'Telecargament', 'Telecargaments' ),
+ 'Deadendpages' => array( 'Paginas_sul_camin_d\'enlòc' ),
+ 'DeletedContributions' => array( 'Contribucions_escafadas', 'ContribucionsEscafadas' ),
+ 'Disambiguations' => array( 'Omonimia', 'Omonimias', 'Paginas_d\'omonimia' ),
+ 'DoubleRedirects' => array( 'Redireccions_doblas', 'RedireccionsDoblas' ),
+ 'Emailuser' => array( 'Corrièr_electronic', 'Email', 'Emèl', 'Emèil' ),
+ 'Export' => array( 'Exportar', 'Exportacion' ),
+ 'Fewestrevisions' => array( 'Mens_de_revisions' ),
+ 'FileDuplicateSearch' => array( 'Recèrca_fichièr_en_doble', 'RecèrcaFichièrEnDoble' ),
+ 'Filepath' => array( 'Camin_del_Fichièr', 'CamindelFichièr', 'CaminFichièr' ),
+ 'Import' => array( 'Impòrt', 'Importacion' ),
+ 'Invalidateemail' => array( 'Invalidar_Corrièr_electronic', 'InvalidarCorrièrElectronic' ),
+ 'BlockList' => array( 'Utilizaires_blocats' ),
+ 'LinkSearch' => array( 'Recèrca_de_ligams', 'RecèrcaDeLigams' ),
+ 'Listadmins' => array( 'Lista_dels_administrators', 'Listadelsadministrators', 'Lista_dels_admins', 'Listadelsadmins', 'Lista_admins', 'Listaadmins' ),
+ 'Listbots' => array( 'Lista_dels_Bòts', 'ListadelsBòts', 'Lista_dels_Bots', 'ListadelsBots' ),
'Listfiles' => array( 'Lista_dels_imatges', 'ListaDelsImatges' ),
- 'Newimages' => array( 'Imatges_novèls', 'ImatgesNovèls' ),
- 'Listusers' => array( 'Lista_dels_utilizaires', 'ListaDelsUtilizaires' ),
'Listgrouprights' => array( 'Lista_dels_gropes_utilizaire', 'ListadelsGropesUtilizaire', 'ListaGropesUtilizaire', 'Tièra_dels_gropes_utilizaire', 'TièradelsGropesUtilizaire', 'TièraGropesUtilizaire' ),
- 'Statistics' => array( 'Estatisticas', 'Stats' ),
- 'Randompage' => array( 'Pagina_a_l\'azard' ),
+ 'Listredirects' => array( 'Lista_de_las_redireccions', 'Listadelasredireccions', 'Lista_dels_redirects', 'Listadelsredirects', 'Lista_redireccions', 'Listaredireccions', 'Lista_redirects', 'Listaredirects' ),
+ 'Listusers' => array( 'Lista_dels_utilizaires', 'ListaDelsUtilizaires' ),
+ 'Lockdb' => array( 'Varrolhar_la_banca' ),
+ 'Log' => array( 'Jornal', 'Jornals' ),
'Lonelypages' => array( 'Paginas_orfanèlas' ),
- 'Uncategorizedpages' => array( 'Paginas_sens_categoria' ),
- 'Uncategorizedcategories' => array( 'Categorias_sens_categoria' ),
- 'Uncategorizedimages' => array( 'Imatges_sens_categoria' ),
- 'Uncategorizedtemplates' => array( 'Modèls_sens_categoria' ),
- 'Unusedcategories' => array( 'Categorias_inutilizadas' ),
- 'Unusedimages' => array( 'Imatges_inutilizats' ),
- 'Wantedpages' => array( 'Paginas_demandadas' ),
- 'Wantedcategories' => array( 'Categorias_demandadas' ),
- 'Wantedfiles' => array( 'Fichièrs_demandats', 'FichièrsDemandats' ),
- 'Wantedtemplates' => array( 'Modèls_demandats', 'ModèlsDemandats' ),
+ 'Longpages' => array( 'Articles_longs' ),
+ 'MergeHistory' => array( 'Fusionar_l\'istoric', 'Fusionarlistoric' ),
+ 'MIMEsearch' => array( 'Recèrca_MIME' ),
+ 'Mostcategories' => array( 'Mai_de_categorias' ),
+ 'Mostimages' => array( 'Mai_d\'imatges' ),
'Mostlinked' => array( 'Imatges_mai_utilizats' ),
'Mostlinkedcategories' => array( 'Categorias_mai_utilizadas', 'CategoriasMaiUtilizadas' ),
'Mostlinkedtemplates' => array( 'Modèls_mai_utilizats', 'ModèlsMaiUtilizats' ),
- 'Mostimages' => array( 'Mai_d\'imatges' ),
- 'Mostcategories' => array( 'Mai_de_categorias' ),
'Mostrevisions' => array( 'Mai_de_revisions' ),
- 'Fewestrevisions' => array( 'Mens_de_revisions' ),
- 'Shortpages' => array( 'Articles_brèus' ),
- 'Longpages' => array( 'Articles_longs' ),
+ 'Movepage' => array( 'Tornar_nomenar', 'Cambiament_de_nom' ),
+ 'Mycontributions' => array( 'Mas_contribucions', 'Mascontribucions' ),
+ 'Mypage' => array( 'Ma_pagina', 'Mapagina' ),
+ 'Mytalk' => array( 'Mas_discussions', 'Masdiscussions' ),
+ 'Newimages' => array( 'Imatges_novèls', 'ImatgesNovèls' ),
'Newpages' => array( 'Paginas_novèlas' ),
- 'Ancientpages' => array( 'Paginas_ancianas' ),
- 'Deadendpages' => array( 'Paginas_sul_camin_d\'enlòc' ),
+ 'Popularpages' => array( 'Paginas_mai_visitadas', 'Paginas_las_mai_visitadas', 'Paginasmaivisitadas' ),
+ 'Preferences' => array( 'Preferéncias' ),
+ 'Prefixindex' => array( 'Indèx' ),
'Protectedpages' => array( 'Paginas_protegidas' ),
'Protectedtitles' => array( 'Títols_protegits', 'TítolsProtegits' ),
- 'Allpages' => array( 'Totas_las_paginas' ),
- 'Prefixindex' => array( 'Indèx' ),
- 'Ipblocklist' => array( 'Utilizaires_blocats' ),
- 'Specialpages' => array( 'Paginas_especialas' ),
- 'Contributions' => array( 'Contribucions' ),
- 'Emailuser' => array( 'Corrièr_electronic', 'Email', 'Emèl', 'Emèil' ),
- 'Confirmemail' => array( 'Confirmar_lo_corrièr_electronic', 'Confirmarlocorrièrelectronic', 'ConfirmarCorrièrElectronic' ),
- 'Whatlinkshere' => array( 'Paginas_ligadas' ),
+ 'Randompage' => array( 'Pagina_a_l\'azard' ),
+ 'Randomredirect' => array( 'Redireccion_a_l\'azard', 'Redirect_a_l\'azard' ),
+ 'Recentchanges' => array( 'Darrièrs_cambiaments', 'DarrièrsCambiaments', 'Darrièras_Modificacions' ),
'Recentchangeslinked' => array( 'Seguit_dels_ligams' ),
- 'Movepage' => array( 'Tornar_nomenar', 'Cambiament_de_nom' ),
- 'Blockme' => array( 'Blocatz_me', 'Blocatz-me' ),
- 'Booksources' => array( 'Obratge_de_referéncia', 'Obratges_de_referéncia' ),
- 'Categories' => array( 'Categorias' ),
- 'Export' => array( 'Exportar', 'Exportacion' ),
- 'Allmessages' => array( 'Messatge_sistèma', 'Messatge_del_sistèma' ),
- 'Log' => array( 'Jornal', 'Jornals' ),
- 'Blockip' => array( 'Blocar', 'Blocatge' ),
+ 'Revisiondelete' => array( 'Versions_suprimidas' ),
+ 'Search' => array( 'Recèrca', 'Recercar', 'Cercar' ),
+ 'Shortpages' => array( 'Articles_brèus' ),
+ 'Specialpages' => array( 'Paginas_especialas' ),
+ 'Statistics' => array( 'Estatisticas', 'Stats' ),
+ 'Tags' => array( 'Balisas' ),
+ 'Uncategorizedcategories' => array( 'Categorias_sens_categoria' ),
+ 'Uncategorizedimages' => array( 'Imatges_sens_categoria' ),
+ 'Uncategorizedpages' => array( 'Paginas_sens_categoria' ),
+ 'Uncategorizedtemplates' => array( 'Modèls_sens_categoria' ),
'Undelete' => array( 'Restablir', 'Restabliment' ),
- 'Import' => array( 'Impòrt', 'Importacion' ),
- 'Lockdb' => array( 'Varrolhar_la_banca' ),
'Unlockdb' => array( 'Desvarrolhar_la_banca' ),
- 'Userrights' => array( 'Dreches', 'Permission' ),
- 'MIMEsearch' => array( 'Recèrca_MIME' ),
- 'FileDuplicateSearch' => array( 'Recèrca_fichièr_en_doble', 'RecèrcaFichièrEnDoble' ),
- 'Unwatchedpages' => array( 'Paginas_pas_seguidas' ),
- 'Listredirects' => array( 'Lista_de_las_redireccions', 'Listadelasredireccions', 'Lista_dels_redirects', 'Listadelsredirects', 'Lista_redireccions', 'Listaredireccions', 'Lista_redirects', 'Listaredirects' ),
- 'Revisiondelete' => array( 'Versions_suprimidas' ),
+ 'Unusedcategories' => array( 'Categorias_inutilizadas' ),
+ 'Unusedimages' => array( 'Imatges_inutilizats' ),
'Unusedtemplates' => array( 'Modèls_inutilizats', 'Modèlsinutilizats', 'Models_inutilizats', 'Modelsinutilizats', 'Modèls_pas_utilizats', 'Modèlspasutilizats', 'Models_pas_utilizats', 'Modelspasutilizats' ),
- 'Randomredirect' => array( 'Redireccion_a_l\'azard', 'Redirect_a_l\'azard' ),
- 'Mypage' => array( 'Ma_pagina', 'Mapagina' ),
- 'Mytalk' => array( 'Mas_discussions', 'Masdiscussions' ),
- 'Mycontributions' => array( 'Mas_contribucions', 'Mascontribucions' ),
- 'Listadmins' => array( 'Lista_dels_administrators', 'Listadelsadministrators', 'Lista_dels_admins', 'Listadelsadmins', 'Lista_admins', 'Listaadmins' ),
- 'Listbots' => array( 'Lista_dels_Bòts', 'ListadelsBòts', 'Lista_dels_Bots', 'ListadelsBots' ),
- 'Popularpages' => array( 'Paginas_mai_visitadas', 'Paginas_las_mai_visitadas', 'Paginasmaivisitadas' ),
- 'Search' => array( 'Recèrca', 'Recercar', 'Cercar' ),
- 'Resetpass' => array( 'Reïnicializacion_del_senhal', 'Reinicializaciondelsenhal' ),
+ 'Unwatchedpages' => array( 'Paginas_pas_seguidas' ),
+ 'Upload' => array( 'Telecargament', 'Telecargaments' ),
+ 'Userlogin' => array( 'Nom_d\'utilizaire' ),
+ 'Userlogout' => array( 'Desconnexion' ),
+ 'Userrights' => array( 'Dreches', 'Permission' ),
+ 'Wantedcategories' => array( 'Categorias_demandadas' ),
+ 'Wantedfiles' => array( 'Fichièrs_demandats', 'FichièrsDemandats' ),
+ 'Wantedpages' => array( 'Paginas_demandadas' ),
+ 'Wantedtemplates' => array( 'Modèls_demandats', 'ModèlsDemandats' ),
+ 'Watchlist' => array( 'Lista_de_seguit', 'ListraDeSeguit', 'Seguit', 'Lista_de_seguiment', 'ListraDeSeguiment', 'Seguiment' ),
+ 'Whatlinkshere' => array( 'Paginas_ligadas' ),
'Withoutinterwiki' => array( 'Sens_interwiki', 'Sensinterwiki', 'Sens_interwikis', 'Sensinterwikis' ),
- 'MergeHistory' => array( 'Fusionar_l\'istoric', 'Fusionarlistoric' ),
- 'Filepath' => array( 'Camin_del_Fichièr', 'CamindelFichièr', 'CaminFichièr' ),
- 'Invalidateemail' => array( 'Invalidar_Corrièr_electronic', 'InvalidarCorrièrElectronic' ),
- 'Blankpage' => array( 'Pagina_blanca', 'PaginaBlanca' ),
- 'LinkSearch' => array( 'Recèrca_de_ligams', 'RecèrcaDeLigams' ),
- 'DeletedContributions' => array( 'Contribucions_escafadas', 'ContribucionsEscafadas' ),
- 'Tags' => array( 'Balisas' ),
);
$magicWords = array(
@@ -287,7 +287,7 @@ $dateFormats = array(
$separatorTransformTable = array( ',' => "\xc2\xa0", '.' => ',' );
-$linkTrail = "/^([a-zàâçéèêîôû]+)(.*)\$/sDu";
+$linkTrail = "/^([a-zàâçéèêîôû]+)(.*)$/sDu";
$messages = array(
# User preference toggles
@@ -419,15 +419,7 @@ $messages = array(
'listingcontinuesabbrev' => '(seguida)',
'index-category' => 'Paginas indexadas',
'noindex-category' => 'Paginas pas indexadas',
-
-'mainpagetext' => "'''MediaWiki es estat installat amb succès.'''",
-'mainpagedocfooter' => "Consultatz lo [http://meta.wikimedia.org/wiki/Ajuda:Contengut Guida de l'utilizaire] per mai d'entresenhas sus l'utilizacion d'aqueste logicial.
-
-== Començar amb MediaWiki ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista dels paramètres de configuracion]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/fr FAQ MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discussions de las parucions de MediaWiki]",
+'broken-file-category' => 'Paginas amb ligams copats',
'about' => 'A prepaus',
'article' => 'Article',
@@ -478,10 +470,10 @@ $messages = array(
'history' => 'Istoric',
'history_short' => 'Istoric',
'updatedmarker' => 'modificat dempuèi ma darrièra visita',
-'info_short' => 'Entresenhas',
'printableversion' => 'Version imprimibla',
'permalink' => 'Ligam istoric',
'print' => 'Imprimir',
+'view' => 'Veire',
'edit' => 'Modificar',
'create' => 'Crear',
'editthispage' => 'Modificar aquesta pagina',
@@ -489,6 +481,7 @@ $messages = array(
'delete' => 'Suprimir',
'deletethispage' => 'Suprimir aquesta pagina',
'undelete_short' => 'Restablir {{PLURAL:$1|1 modificacion| $1 modificacions}}',
+'viewdeleted_short' => 'Veire {{PLURAL:$1|una edicion escafada|$1 edicions escafadas}}',
'protect' => 'Protegir',
'protect_change' => 'modificar',
'protectthispage' => 'Protegir aquesta pagina',
@@ -570,6 +563,8 @@ $1",
'toc' => 'Somari',
'showtoc' => 'afichar',
'hidetoc' => 'amagar',
+'collapsible-collapse' => 'Rebatre',
+'collapsible-expand' => 'Desplegar',
'thisisdeleted' => 'Desiratz afichar o restablir $1?',
'viewdeleted' => 'Veire $1?',
'restorelink' => '{{PLURAL:$1|una edicion escafada|$1 edicions escafadas}}',
@@ -581,6 +576,8 @@ $1",
'page-rss-feed' => 'Flux RSS de "$1"',
'page-atom-feed' => 'Flux Atom de "$1"',
'red-link-title' => '$1 (la pagina existís pas)',
+'sort-descending' => 'Botar en òrdre creissent',
+'sort-ascending' => 'Botar en òrdre descreissent',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Article',
@@ -663,12 +660,13 @@ Requèsta : $2',
'protectedpagetext' => 'Aquesta pagina es estada protegida per empachar sa modificacion.',
'viewsourcetext' => 'Podètz veire e copiar lo contengut de l’article per poder trabalhar dessús :',
'protectedinterface' => 'Aquesta pagina provesís de tèxte d’interfàcia pel logicial e es protegida per evitar los abuses.',
-'editinginterface' => "'''Atencion :''' sètz a editar una pagina utilizada per crear lo tèxte de l’interfàcia del logicial. Los cambiaments se repercutaràn, segon lo contèxte, sus totas o d'unas paginas visiblas pels autres utilizaires. Per las traduccions, vos convidam a utilizar lo projècte MediaWiki d'internacionalizacion dels messatges [http://translatewiki.net/wiki/Main_Page?setlang=oc translatewiki.net].",
+'editinginterface' => "'''Atencion :''' sètz a editar una pagina utilizada per crear lo tèxte de l’interfàcia del logicial. Los cambiaments se repercutaràn, segon lo contèxte, sus totas o d'unas paginas visiblas pels autres utilizaires. Per las traduccions, vos convidam a utilizar lo projècte MediaWiki d'internacionalizacion dels messatges [//translatewiki.net/wiki/Main_Page?setlang=oc translatewiki.net].",
'sqlhidden' => '(Requèsta SQL amagada)',
'cascadeprotected' => "Aquesta pagina es actualament protegida perque es inclusa dins {{PLURAL:$1|la pagina seguenta|las paginas seguentas}}, {{PLURAL:$1|qu'es estada protegida|que son estadas protegidas}} amb l’opcion « proteccion en cascada » activada :
$2",
'namespaceprotected' => "Avètz pas la permission de modificar las paginas de l’espaci de noms « '''$1''' ».",
-'customcssjsprotected' => "Avètz pas la permission d'editar aquesta pagina perque conten de preferéncias d’autres utilizaires.",
+'customcssprotected' => "Avètz pas la permission d'editar aquesta pagina CSS perque conten de preferéncias d’autres utilizaires.",
+'customjsprotected' => "Avètz pas la permission d'editar aquesta pagina JavaScript perque conten de preferéncias d’autres utilizaires.",
'ns-specialprotected' => 'Las paginas dins l’espaci de noms « {{ns:special}} » pòdon pas èsser modificadas',
'titleprotected' => "Aqueste títol es estat protegit a la creacion per [[User:$1|$1]].
Lo motiu avançat es « ''$2'' ».",
@@ -705,6 +703,7 @@ Doblidetz pas de personalizar vòstras [[Special:Preferences|{{SITENAME}} prefer
'createaccount' => 'Crear un compte novèl',
'gotaccount' => "Ja avètz un compte ? '''$1'''.",
'gotaccountlink' => 'Identificatz-vos',
+'userlogin-resetlink' => 'Vos doblidèretz las informacions de conneccion?',
'createaccountmail' => 'per corrièr electronic',
'createaccountreason' => 'Motiu :',
'badretype' => "Los senhals qu'avètz picats son pas identics.",
@@ -720,7 +719,7 @@ Causissètz-ne un autre.",
'nosuchuser' => "L'utilizaire « $1 » existís pas.
Lo nom d'utilizaire es sensible a la cassa.
Verificatz qu'avètz plan ortografiat lo nom, o [[Special:UserLogin/signup|creatz-vos un compte novèl]].",
-'nosuchusershort' => 'I a pas de contributor amb lo nom « <nowiki>$1</nowiki> ». Verificatz l’ortografia.',
+'nosuchusershort' => 'I a pas de contributor amb lo nom « $1 ». Verificatz l’ortografia.',
'nouserspecified' => "Vos cal especificar vòstre nom d'utilizaire.",
'login-userblocked' => 'Aqueste utilizaire es blocat. Connexion pas autorizada.',
'wrongpassword' => 'Lo senhal es incorrècte. Ensajatz tornarmai.',
@@ -768,7 +767,7 @@ Esperatz abans d’ensajar tornamai.',
'loginlanguagelabel' => 'Lenga: $1',
'suspicious-userlogout' => 'Vòstra demanda de desconnexion es estada refusada perque sembla qu’es estada mandada per un navigador copat o la mesa en escondedor d’un proxy.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Cambiar lo senhal del compte',
'resetpass_announce' => 'Vos sètz enregistrat amb un senhal temporari mandat per corrièr electronic. Per acabar l’enregistrament, vos cal picar un senhal novèl aicí :',
'resetpass_text' => '<!-- Apondètz lo tèxte aicí -->',
@@ -786,6 +785,16 @@ Esperatz abans d’ensajar tornamai.',
Benlèu ja avètz modificat vòstre senhal o demandat un senhal temporari novèl.',
'resetpass-temp-password' => 'Senhal temporari :',
+# Special:PasswordReset
+'passwordreset' => 'Remesa a zèro del senhal',
+'passwordreset-legend' => 'Reïnicializar lo senhal',
+'passwordreset-username' => "Nom d'utilizaire :",
+'passwordreset-domain' => 'Domeni:',
+'passwordreset-email' => 'Adreça de corrièr electronic :',
+'passwordreset-emailtitle' => "Detailhs d'un compte per {{SITENAME}}",
+'passwordreset-emailelement' => 'Utilizaire: $1
+Senhal temporari: $2',
+
# Edit page toolbar
'bold_sample' => 'Tèxte en gras',
'bold_tip' => 'Tèxte en gras',
@@ -797,8 +806,6 @@ Benlèu ja avètz modificat vòstre senhal o demandat un senhal temporari novèl
'extlink_tip' => 'Ligam extèrne (doblidetz pas lo prefixe http://)',
'headline_sample' => 'Tèxte de sostítol',
'headline_tip' => 'Sostítol nivèl 2',
-'math_sample' => 'Picatz vòstra formula aicí',
-'math_tip' => 'Formula matematica (LaTeX)',
'nowiki_sample' => 'Picatz lo tèxte pas formatat aicí',
'nowiki_tip' => 'Ignorar la sintaxi wiki',
'image_sample' => 'Exemple.jpg',
@@ -883,7 +890,7 @@ o [{{fullurl:{{FULLPAGENAME}}|action=edit}} crear aquesta pagina]</span>.',
'noarticletext-nopermission' => 'Actualament i a pas cap de tèxte dins aquesta pagina.
Podètz [[Special:Search/{{PAGENAME}}|far una recèrca sul títol de la pagina]] dins las autras paginas,
o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} recercar dins los jornals associats]</span>.',
-'userpage-userdoesnotexist' => "Lo compte d'utilizaire « $1 » es pas enregistrat. Indicatz se volètz crear o editar aquesta pagina.",
+'userpage-userdoesnotexist' => "Lo compte d'utilizaire « <nowiki>$1</nowiki> » es pas enregistrat. Indicatz se volètz crear o editar aquesta pagina.",
'userpage-userdoesnotexist-view' => "Lo compte d'utilizaire « $1 » es pas enregistrat.",
'blocked-notice-logextract' => 'Aqueste utilizaire es actualament blocat.
La darrièra entrada del jornal dels blocatges es indicada çaijós a títol d’informacion :',
@@ -1260,9 +1267,10 @@ Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
'changepassword' => 'Modificacion del senhal',
'prefs-skin' => 'Aparéncia',
'skin-preview' => 'Previsualizar',
-'prefs-math' => 'Rendut de las matas',
'datedefault' => 'Cap de preferéncia',
+'prefs-beta' => 'Foncionalitats bèta',
'prefs-datetime' => 'Data e ora',
+'prefs-labs' => 'Foncionalitats « labs »',
'prefs-personal' => 'Entresenhas personalas',
'prefs-rc' => 'Darrièrs cambiaments',
'prefs-watchlist' => 'Lista de seguiment',
@@ -1284,8 +1292,6 @@ Atencion, lor indexacion de contengut {{SITENAME}} benlèu es pas a jorn.',
'columns' => 'Colomnas :',
'searchresultshead' => 'Recèrca',
'resultsperpage' => 'Nombre de responsas per pagina :',
-'contextlines' => 'Nombre de linhas per responsa :',
-'contextchars' => 'Nombre de caractèrs de contèxte per linha :',
'stub-threshold' => 'Limit superior pels <a href="#" class="stub">ligams cap als esbòsses</a> (octets) :',
'stub-threshold-disabled' => 'Desactivat',
'recentchangesdays' => "Nombre de jorns d'afichar dins los darrièrs cambiaments :",
@@ -1298,7 +1304,7 @@ Vaquí una valor generada aleatòriament que podètz utilizar : $1',
'savedprefs' => 'Las preferéncias son estadas salvadas.',
'timezonelegend' => 'Fus orari :',
'localtime' => 'Ora locala :',
-'timezoneuseserverdefault' => 'Utilizar la valor del servidor',
+'timezoneuseserverdefault' => 'Utilizar la valor del servidor ($1)',
'timezoneuseoffset' => 'Autre (especificar lo descalatge)',
'timezoneoffset' => 'Decalatge orari¹ :',
'servertime' => 'Ora del servidor :',
@@ -1345,8 +1351,8 @@ Deu aver, al maximum $1 caractèr{{PLURAL:$1||s}}.',
'prefs-help-gender' => "Opcional : utilizat pels acòrdis dins l'interfàcia del logicial. Aquesta informacion serà publica.",
'email' => 'Corrièr electronic',
'prefs-help-realname' => "(facultatiu) : se l'especificatz, serà utilizat per vos atribuir vòstras contribucions.",
-'prefs-help-email' => "L’adreça de corrièr electronic es facultativa mas permet de vos far adreçar vòstre senhal s'o doblidatz.
-Tanben podètz causir de permetre a d’autres de vos contactar amb l'ajuda de vòstra pagina d’utilizaire principala o la de discussion sens aver besonh de revelar vòstra idenditat.",
+'prefs-help-email' => 'L’adreça de corrièr electronic es facultativa mas vos permet de reçaupre lo senhal se lo doblidatz.
+Tanben podètz causir de permetre a d’autres de vos contactar per vòstra pagina d’utilizaire o la de discussion sens sofracha de desvelar vòstra idenditat.',
'prefs-help-email-required' => 'Una adreça de corrièr electronic es requesa.',
'prefs-info' => 'Informacion de basa',
'prefs-i18n' => 'Internationalizacion',
@@ -1471,7 +1477,6 @@ Tanben podètz causir de permetre a d’autres de vos contactar amb l'ajuda de v
'right-userrights' => "Modificar totes los dreches d'un utilizaire",
'right-userrights-interwiki' => "Modificar los dreches d'utilizaires que son sus un autre wiki",
'right-siteadmin' => 'Varrolhar e desvarrolhar la banca de donadas',
-'right-reset-passwords' => "Cambiar lo senhal d'autres utilizaires",
'right-override-export-depth' => 'Exportar las paginas en incluent las paginas ligadas fins a una prigondor de 5 nivèls',
'right-sendemail' => 'Mandar un corrièl als autres utilizaires',
@@ -1666,9 +1671,6 @@ S'o volètz importar tornamai, tornatz en rèire e importatz-lo jos un autre nom
'upload-options' => 'Opcions de telecargament',
'watchthisupload' => 'Seguir aqueste fichièr',
'filewasdeleted' => 'Un fichièr amb aqueste nom ja es estat copiat, puèi suprimit. Vos caldriá verificar lo $1 abans de procedir a una còpia novèla.',
-'upload-wasdeleted' => "'''Atencion : Sètz a importar un fichièr que ja es estat suprimit deperabans.'''
-
-Deuriatz considerar se es oportun de contunhar l'impòrt d'aqueste fichièr. Lo jornal de las supressions vos donarà los elements d'informacion.",
'filename-bad-prefix' => "Lo nom del fichièr qu'importatz comença per '''\"\$1\"''' qu'es un nom generalament donat pels aparelhs de fòto numerica e que decritz pas lo fichièr. Causissetz un nom de fichièr descrivent vòstre fichièr.",
'filename-prefix-blacklist' => ' #<!-- daissatz aquesta linha coma es --> <pre>
# La sintaxi es la seguenta :
@@ -1782,7 +1784,6 @@ La tièra seguenta aficha {{PLURAL:$1|lo primièr ligam de pagina|los $1 primiè
Una [[Special:WhatLinksHere/$2|tièra completa]] es disponibla.',
'nolinkstoimage' => 'Cap de pagina compòrta pas de ligam cap a aqueste imatge.',
'morelinkstoimage' => 'Vejatz [[Special:WhatLinksHere/$1|mai de ligams]] cap a aqueste imatge.',
-'redirectstofile' => '{{PLURAL:$1|Lo fichièr seguent redirigís|Los fichièrs seguents redirigisson}} cap a aqueste fichièr :',
'duplicatesoffile' => "{{PLURAL:$1|Lo fichièr seguent es un duplicata|Los fichièrs seguents son de duplicatas}} d'aqueste fichièr ([[Special:FileDuplicateSearch/$2|mai de detalhs]]):",
'sharedupload' => 'Aqueste fichièr proven de $1 e pòt èsser utilizat per d’autres projèctes.',
'sharedupload-desc-there' => "Aqueste fichièr proven de $1 e pòt èsser utilizat per d'autres projèctes. Vejatz [$2 sa pagina de descripcion] per mai d'entresenhas.",
@@ -2074,6 +2075,8 @@ L'adreça electronica qu'avètz indicada dins [[Special:Preferences|vòstras pre
'noemailtext' => "Aqueste utilizaire a pas especificat d'adreça electronica valida.",
'nowikiemailtitle' => 'Pas de corrièr electronic autorizat',
'nowikiemailtext' => "Aqueste utilizaire a causit de recebre pas de corrièr electronic de la part d'autres utilizaires.",
+'emailusername' => "Nom d'utilizaire :",
+'emailusernamesubmit' => 'Sometre',
'email-legend' => 'Mandar un corrièr electronic a un autre utilizaire de {{SITENAME}}',
'emailfrom' => 'Expeditor :',
'emailto' => 'Destinatari :',
@@ -2099,10 +2102,8 @@ L'adreça electronica qu'avètz indicada dins [[Special:Preferences|vòstras pre
'watchnologin' => 'Vos sètz pas identificat(ada)',
'watchnologintext' => 'Vos cal èsser [[Special:UserLogin|connectat(ada)]]
per modificar vòstra lista de seguiment.',
-'addedwatch' => 'Apondut a la tièra',
'addedwatchtext' => 'La pagina "[[:$1]]" es estada aponduda a vòstra [[Special:Watchlist|lista de seguiment]].
Las modificacions venentas d\'aquesta pagina e de la pagina de discussion associada seràn repertoriadas aicí, e la pagina apareisserà <b>en gras</b> dins la [[Special:RecentChanges|tièra dels darrièrs cambiaments]] per èsser localizada mai aisidament.',
-'removedwatch' => 'Suprimida de la lista de seguiment',
'removedwatchtext' => 'La pagina « [[:$1]] » es estada levada de vòstra [[Special:Watchlist|lista de seguiment]].',
'watch' => 'Seguir',
'watchthispage' => 'Seguir aquesta pagina',
@@ -2155,13 +2156,13 @@ Podètz tanben reïnicializar las bandièras de notificacion per totas las pagin
--
Per modificar los paramètres de vòstra lista de seguiment, visitatz
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Per suprimir la pagina de vòstra lista de seguiment, visitatz
$UNWATCHURL
Retorn e assisténcia :
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Suprimir la pagina',
@@ -2177,7 +2178,7 @@ Retorn e assisténcia :
Confirmatz qu'es plan çò que volètz far, que ne comprenètz las consequéncias e que fasètz aquò en acòrdi amb las [[{{MediaWiki:Policy-url}}|règlas intèrnas]].",
'actioncomplete' => 'Accion efectuada',
'actionfailed' => 'L’accion a fracassat',
-'deletedtext' => '"<nowiki>$1</nowiki>" es estat suprimit.
+'deletedtext' => '"$1" es estat suprimit.
Vejatz $2 per una lista de las supressions recentas.',
'deletedarticle' => 'a escafat «[[$1]]»',
'suppressedarticle' => 'amagat « [[$1]] »',
@@ -2235,7 +2236,7 @@ Clicatz sus « Precedent » e tornatz cargar la pagina d’ont venètz, puèi en
'protect_expiry_invalid' => 'Lo temps d’expiracion es invalid',
'protect_expiry_old' => 'Lo temps d’expiracion ja es passat.',
'protect-unchain-permissions' => "Desvarrolhar ancara mai d'opcions de proteccion",
-'protect-text' => "Podètz consultar e modificar lo nivèl de proteccion de la pagina '''<nowiki>$1</nowiki>'''. Asseguratz-vos que seguissètz las règlas intèrnas.",
+'protect-text' => "Podètz consultar e modificar lo nivèl de proteccion de la pagina '''$1'''. Asseguratz-vos que seguissètz las règlas intèrnas.",
'protect-locked-blocked' => "Podètz pas modificar lo nivèl de proteccion tant que sètz blocat. Vaquí los reglatges actuals de la pagina '''$1''' :",
'protect-locked-dblock' => "Lo nivèl de proteccion pòt pas èsser modificat perque la banca de donadas es blocada. Vaquí los reglatges actuals de la pagina '''$1''' :",
'protect-locked-access' => "Avètz pas los dreches necessaris per modificar la proteccion de la pagina. Vaquí los reglatges actuals de la pagina '''$1''' :",
@@ -2329,9 +2330,10 @@ $1",
'undelete-show-file-submit' => 'Ã’c',
# Namespace form on various pages
-'namespace' => 'Espaci de noms :',
-'invert' => 'Inversar la seleccion',
-'blanknamespace' => '(Principal)',
+'namespace' => 'Espaci de noms :',
+'invert' => 'Inversar la seleccion',
+'namespace_association' => 'Espaci de nom associat',
+'blanknamespace' => '(Principal)',
# Contributions
'contributions' => "Contribucions d'aqueste contributor",
@@ -2380,13 +2382,14 @@ La darrièra intrada del jornal dels blocatges es indicada çaijós a títol dâ€
'whatlinkshere-filters' => 'Filtres',
# Block/unblock
+'block' => 'Blocar un utilizaire',
+'unblock' => 'Desblocar un utilizaire',
'blockip' => 'Blocar en escritura',
'blockip-title' => 'Blocar l’utilizaire',
'blockip-legend' => 'Blocar en escritura',
'blockiptext' => "Utilizatz lo formulari çaijós per blocar l'accès a las modificacions a partir d'una adreça IP especifica o d'un nom d'utilizaire.
Una tala mesura deu pas èsser presa pas que per empachar lo vandalisme e en acòrdi amb las [[{{MediaWiki:Policy-url}}|règlas intèrnas]].
Donatz çaijós un motiu precís (per exemple en citant las paginas que son estadas vandalizadas).",
-'ipaddress' => 'Adreça IP :',
'ipadressorusername' => 'Adreça IP o nom d’utilizaire :',
'ipbexpiry' => 'Durada del blocatge :',
'ipbreason' => 'Motiu :',
@@ -2400,7 +2403,6 @@ Donatz çaijós un motiu precís (per exemple en citant las paginas que son esta
** Temptativa d’intimidacion o agarriment
** Abús d’utilizacion de comptes multiples
** Nom d’utilizaire inacceptable, injuriós o difamant',
-'ipbanononly' => 'Blocar unicament los utilizaires anonims',
'ipbcreateaccount' => 'Empachar la creacion de compte',
'ipbemailban' => 'Empachar l’utilizaire de mandar de corrièrs electronics',
'ipbenableautoblock' => 'Blocar automaticament las adreças IP utilizadas per aqueste utilizaire',
@@ -2411,8 +2413,8 @@ Donatz çaijós un motiu precís (per exemple en citant las paginas que son esta
'ipbotherreason' => 'Motiu diferent o suplementari',
'ipbhidename' => 'Amagar lo nom d’utilizaire de las modificacions e de las listas',
'ipbwatchuser' => "Seguir las paginas d'utilizaire e de discussion d'aqueste utilizaire",
-'ipballowusertalk' => 'Permet a aqueste utilizaire de modificar sa pròpria pagina de discussion pendent son periòde de blocatge',
'ipb-change-block' => 'Tornar blocar aqueste utilizaire amb aquestes paramètres',
+'ipb-confirm' => 'Confirmar lo blocatge',
'badipaddress' => "L'adreça IP es incorrècta",
'blockipsuccesssub' => 'Blocatge capitat',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] es estat blocat.<br />
@@ -2428,16 +2430,12 @@ a partir d'una adreça IP precedentament blocada.",
'ipusubmit' => 'Suprimir aqueste blocatge',
'unblocked' => '[[User:$1|$1]] es estat desblocat',
'unblocked-id' => 'Lo blocatge $1 es estat levat',
+'blocklist' => 'Utilizaires o adreças IP blocats',
'ipblocklist' => 'Utilizaires o adreças IP blocats',
'ipblocklist-legend' => 'Cercar un utilizaire blocat',
-'ipblocklist-username' => 'Nom de l’utilizaire o adreça IP :',
-'ipblocklist-sh-userblocks' => '$1 los comptes blocats',
-'ipblocklist-sh-tempblocks' => '$1 los blocatges temporaris',
-'ipblocklist-sh-addressblocks' => "$1 los blocatges d'una sola adreça IP",
'ipblocklist-submit' => 'Recercar',
'ipblocklist-localblock' => 'Blocatge local',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Autre blocatge|Autres blocatges}}',
-'blocklistline' => '$1, $2 a blocat $3 ($4)',
'infiniteblock' => 'permanent',
'expiringblock' => 'expira lo $1 a $2',
'anononlyblock' => 'utilizaire anonim unicament',
@@ -2458,7 +2456,7 @@ La rason balhada per $1 es : « $2 ».',
'blocklog-showsuppresslog' => 'Aqueste utilizaire es estat blocat e amagat precedentament. Lo jornal de las supressions es disponible çaijós :',
'blocklogentry' => 'a blocat « [[$1]] » - durada : $2 $3',
'reblock-logentry' => 'a modificat los parametratge de blocatge per [[$1]] amb una durada d’expiracion de $2 $3',
-'blocklogtext' => "Aquò es l'istoric dels blocatges e desblocatges dels utilizaires. Las adreças IP automaticament blocadas son pas listadas. Consultatz la [[Special:IPBlockList|lista dels utilizaires blocats]] per veire qui es actualament efectivament blocat.",
+'blocklogtext' => "Aquò es l'istoric dels blocatges e desblocatges dels utilizaires. Las adreças IP automaticament blocadas son pas listadas. Consultatz la [[Special:BlockList|lista dels utilizaires blocats]] per veire qui es actualament efectivament blocat.",
'unblocklogentry' => 'a desblocat « $1 »',
'block-log-flags-anononly' => 'utilizaires anonims solament',
'block-log-flags-nocreate' => 'creacion de compte interdicha',
@@ -2472,8 +2470,7 @@ La rason balhada per $1 es : « $2 ».',
'ipb_expiry_temp' => 'Las plajas dels utilizaires amagats deurián èsser permanentas.',
'ipb_hide_invalid' => "Impossible de suprimir aqueste compte ; sembla qu'a tròp de modificacions.",
'ipb_already_blocked' => '« $1 » ja es blocat',
-'ipb-needreblock' => '== Ja blocat ==
-$1 ja es blocat. Volètz modificar los paramètres ?',
+'ipb-needreblock' => '$1 ja es blocat. Volètz modificar los paramètres ?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Autre blocatge|Autres blocatges}}',
'ipb_cant_unblock' => 'Error : Lo blocatge d’ID $1 existís pas. Es possible qu’un desblocatge ja siá estat efectuat.',
'ipb_blocked_as_range' => "Error : L'adreça IP $1 es pas estada blocada dirèctament e doncas pòt pas èsser deblocada. Çaquelà, es estada blocada per la plaja $2 la quala pòt èsser deblocada.",
@@ -2616,7 +2613,7 @@ Dins aqueste darrièr cas, podètz tanben utilizar un ligam, coma [[{{#Special:E
'allmessagesdefault' => 'Messatge per defaut',
'allmessagescurrent' => 'Messatge actual',
'allmessagestext' => 'Aquò es la lista de totes los messatges disponibles dins l’espaci MediaWiki.
-Visitatz la [http://www.mediawiki.org/wiki/Localisation Localizacion MediaWiki] e [http://translatewiki.net translatewiki.net] se desiratz contribuir a la localizacion MediaWiki generica.',
+Visitatz la [//www.mediawiki.org/wiki/Localisation Localizacion MediaWiki] e [//translatewiki.net translatewiki.net] se desiratz contribuir a la localizacion MediaWiki generica.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' es pas disponible perque '''\$wgUseDatabaseMessages''' es desactivat.",
'allmessages-filter-legend' => 'Filtre',
'allmessages-filter' => 'Filtrar per estat de modificacion :',
@@ -2779,9 +2776,7 @@ Totas las accions d’importacion interwiki son conservadas dins lo [[Special:Lo
'vector.js' => '/* Tot JavaScript aicí serà cargat amb las paginas accedidas pels utilizaires de l’abilhatge Vector unicament. */',
# Metadata
-'nodublincore' => 'Las metadonadas « Dublin Core RDF » son desactivadas sus aqueste servidor.',
-'nocreativecommons' => 'Las metadonadas « Creative Commons RDF » son desactivadas sus aqueste servidor.',
-'notacceptable' => 'Aqueste servidor wiki pòt pas fornir las donadas dins un format que vòstre client es capable de legir.',
+'notacceptable' => 'Aqueste servidor wiki pòt pas fornir las donadas dins un format que vòstre client es capable de legir.',
# Attribution
'anonymous' => '{{PLURAL:$1|Utilizaire anonim|Utilizaires anonims}} de {{SITENAME}}',
@@ -2804,14 +2799,6 @@ Aquò es probablament causat per un ligam sus lista negra que punta cap a un sit
'spam_reverting' => 'Restabliment de la darrièra version que conten pas de ligam cap a $1',
'spam_blanking' => 'Totas las versions que contenon de ligams cap a $1 son blanquidas',
-# Info page
-'infosubtitle' => 'Entresenhas per la pagina',
-'numedits' => 'Nombre de modificacions : $1',
-'numtalkedits' => 'Nombre de modificacions (pagina de discussion) : $1',
-'numwatchers' => "Nombre de contributors qu'an la pagina dins lor lista de seguiment : $1",
-'numauthors' => 'Nombre d’autors distints : $1',
-'numtalkauthors' => 'Nombre d’autors distints (pagina de discussion) : $1',
-
# Skin names
'skinname-standard' => 'Estandard',
'skinname-nostalgia' => 'Nostalgia',
@@ -2822,25 +2809,6 @@ Aquò es probablament causat per un ligam sus lista negra que punta cap a un sit
'skinname-simple' => 'Simple',
'skinname-modern' => 'Modèrne',
-# Math options
-'mw_math_png' => 'Totjorn produire un imatge PNG',
-'mw_math_simple' => 'HTML se plan simpla, si que non PNG',
-'mw_math_html' => 'HTML se possible, si que non PNG',
-'mw_math_source' => "Daissar lo còde TeX d'origina",
-'mw_math_modern' => 'Pels navigadors modèrnes',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'Error matas',
-'math_unknown_error' => 'error indeterminada',
-'math_unknown_function' => 'foncion desconeguda',
-'math_lexing_error' => 'error lexicala',
-'math_syntax_error' => 'error de sintaxi',
-'math_image_error' => 'La conversion en PNG a pas capitat ; verificatz l’installacion de Latex, dvips, gs e convert',
-'math_bad_tmpdir' => 'Impossible de crear o d’escriure dins lo repertòri math temporari',
-'math_bad_output' => 'Impossible de crear o d’escriure dins lo repertòri math de sortida',
-'math_notexvc' => 'L’executable « texvc » es introbable. Legissètz math/README per lo configurar.',
-
# Patrolling
'markaspatrolleddiff' => 'Marcar coma essent pas un vandalisme',
'markaspatrolledtext' => 'Marcar aqueste article coma pas vandalizat',
@@ -2886,7 +2854,6 @@ Se l'executatz, vòstre sistèma pòt èsser compromés.",
'file-nohires' => '<small>Pas de resolucion mai nauta disponibla.</small>',
'svg-long-desc' => 'Fichièr SVG, resolucion de $1 × $2 pixèls, talha : $3',
'show-big-image' => 'Imatge en resolucion mai nauta',
-'show-big-image-thumb' => "<small>Talha d'aqueste apercebut : $1 × $2 pixèls</small>",
'file-info-gif-looped' => 'en bocla',
'file-info-gif-frames' => '$1 {{PLURAL:$1|imatge|imatges}}',
@@ -2919,14 +2886,20 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
'metadata-help' => "Aqueste fichièr conten d'entresenhas suplementàrias probablament apondudas per l’aparelh de fòto numeric o l'escanèr que las a aquesas. Se lo fichièr es estat modificat dempuèi son estat original, d'unes detalhs pòdon reflectir pas entièrament l’imatge modificat.",
'metadata-expand' => 'Far veire las entresenhas detalhadas',
'metadata-collapse' => 'Amagar las entresenhas detalhadas',
-'metadata-fields' => 'Los camps de metadonadas d’EXIF listats dins aqueste message seràn encluses dins la pagina de descripcion de l’imatge quand la taula de metadonadas serà reduccha. Los autres camps seràn amagats per defaut.
+'metadata-fields' => 'Los camps de metadonadas d’EXIF listats dins aqueste message seràn incluses dins la pagina de descripcion de l’imatge quand la taula de metadonadas serà reducha. Los autres camps seràn amagats per manca.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Largor',
@@ -2941,13 +2914,11 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
'exif-ycbcrpositioning' => 'Posicionament YCbCr',
'exif-xresolution' => 'Resolucion orizontala',
'exif-yresolution' => 'Resolucion verticala',
-'exif-resolutionunit' => 'Unitats de resolucion X e Y',
'exif-stripoffsets' => 'Emplaçament de las donadas de l’imatge',
'exif-rowsperstrip' => 'Nombre de linhas per benda',
'exif-stripbytecounts' => 'Talha en octets per benda',
'exif-jpeginterchangeformat' => 'Posicion del SOI JPEG',
'exif-jpeginterchangeformatlength' => 'Talha en octet de las donadas JPEG',
-'exif-transferfunction' => 'Foncion de transferiment',
'exif-whitepoint' => 'Cromaticitat del punt blanc',
'exif-primarychromaticities' => 'Cromaticitats de las colors primàrias',
'exif-ycbcrcoefficients' => 'Coeficients de la matritz de transformacion de l’espaci colorimetric (YCbCr)',
@@ -2966,7 +2937,6 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
'exif-compressedbitsperpixel' => 'Mòde de compression de l’imatge',
'exif-pixelydimension' => 'Largor d’imatge valida',
'exif-pixelxdimension' => 'Nautor d’imatge valida',
-'exif-makernote' => 'Nòtas del fabricant',
'exif-usercomment' => "Comentaris de l'utilizaire",
'exif-relatedsoundfile' => 'Fichièr àudio associat',
'exif-datetimeoriginal' => 'Data e ora de la generacion de donadas',
@@ -2980,7 +2950,6 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
'exif-exposureprogram' => 'Programa d’exposicion',
'exif-spectralsensitivity' => 'Sensibilitat espectrala',
'exif-isospeedratings' => 'Sensibilitat ISO',
-'exif-oecf' => 'Factor de conversion optoelectronic',
'exif-shutterspeedvalue' => 'Velocitat d’obturacion',
'exif-aperturevalue' => 'Dobertura',
'exif-brightnessvalue' => 'Luminositat',
@@ -2993,7 +2962,6 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
'exif-focallength' => 'Longor de focala',
'exif-subjectarea' => 'Emplaçament del subjècte',
'exif-flashenergy' => 'Energia del flash',
-'exif-spatialfrequencyresponse' => 'Responsa en frequéncia espaciala',
'exif-focalplanexresolution' => 'Resolucion orizontala focala plana',
'exif-focalplaneyresolution' => 'Resolucion verticala focala plana',
'exif-focalplaneresolutionunit' => 'Unitat de resolucion de focala plana',
@@ -3002,7 +2970,6 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
'exif-sensingmethod' => 'Tipe de captador',
'exif-filesource' => 'Font del fichièr',
'exif-scenetype' => 'Tipe de scèna',
-'exif-cfapattern' => 'Matritz de filtratge de color',
'exif-customrendered' => 'Tractament d’imatge personalizat',
'exif-exposuremode' => 'Mòde d’exposicion',
'exif-whitebalance' => 'Balança dels blancs',
@@ -3065,7 +3032,7 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
'exif-planarconfiguration-1' => 'Donadas atenentas',
'exif-planarconfiguration-2' => 'Donadas separadas',
-'exif-colorspace-ffff.h' => 'Pas calibrat',
+'exif-colorspace-65535' => 'Pas calibrat',
'exif-componentsconfiguration-0' => 'existís pas',
'exif-componentsconfiguration-5' => 'V',
@@ -3192,21 +3159,33 @@ Los autres ligams sus la meteissa linha son considerats coma d'excepcions, per e
'exif-gpsspeed-m' => 'Miles per ora',
'exif-gpsspeed-n' => 'Noses',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Quilomètres',
+'exif-gpsdestdistance-m' => 'Milas anglesas',
+'exif-gpsdestdistance-n' => 'Milas nauticas',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Direccion vertadièra',
'exif-gpsdirection-m' => 'Nòrd magnetic',
+'exif-iimcategory-edu' => 'Educacion',
+'exif-iimcategory-hth' => 'Santat',
+'exif-iimcategory-lab' => 'Tribailh',
+'exif-iimcategory-pol' => 'Politic',
+'exif-iimcategory-rel' => 'Religion e cresenças',
+'exif-iimcategory-sci' => 'Sciéncia e tecnologia',
+'exif-iimcategory-spo' => 'Espòrts',
+'exif-iimcategory-war' => 'Guèrra, conflictes',
+
# External editor support
'edit-externally' => 'Modificar aqueste fichièr en utilizant una aplicacion extèrna',
-'edit-externally-help' => "(Consultatz [http://www.mediawiki.org/wiki/Manual:External_editors/oc las instruccions d'installacion] per mai d’entresenhas)",
+'edit-externally-help' => "(Consultatz [//www.mediawiki.org/wiki/Manual:External_editors/oc las instruccions d'installacion] per mai d’entresenhas)",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'totes',
-'imagelistall' => 'totes',
-'watchlistall2' => 'tot',
-'namespacesall' => 'Totes',
-'monthsall' => 'totes',
-'limitall' => 'totes',
+'watchlistall2' => 'tot',
+'namespacesall' => 'Totes',
+'monthsall' => 'totes',
+'limitall' => 'totes',
# E-mail address confirmation
'confirmemail' => "Confirmar l'adreça de corrièr electronic",
@@ -3283,6 +3262,12 @@ Confirmatz que desiratz tornar crear aqueste article.",
'confirm-purge-top' => "Volètz refrescar aquesta pagina (purgar l'amagatal) ?",
'confirm-purge-bottom' => "Purgar una pagina vioda l'amagatal e fòrça la darrièra version a èsser afichada.",
+# action=watch/unwatch
+'confirm-watch-button' => 'Confirmar',
+'confirm-watch-top' => 'Apondre aquesta pagina a vòstra lista de seguiment?',
+'confirm-unwatch-button' => 'Confirmar',
+'confirm-unwatch-top' => 'Levar aquesta pagina de vòstra lista de seguiment?',
+
# Separators for various lists, etc.
'colon-separator' => '&nbsp;:&#32;',
'autocomment-prefix' => '-',
@@ -3333,12 +3318,12 @@ Ensajatz la previsualizacion normala.',
'watchlistedit-noitems' => 'Vòstra lista de seguiment conten pas cap de pagina.',
'watchlistedit-normal-title' => 'Modificacion de la lista de seguiment',
'watchlistedit-normal-legend' => 'Levar de paginas de la lista de seguiment',
-'watchlistedit-normal-explain' => 'Las paginas que seguissètz son visiblas çaijós, classadas per espaci de noms. Per levar una pagina (e sa pagina de discussion) de la lista, seleccionatz la casa al costat puèi clicatz sul boton en bas. Tanben la podètz [[Special:Watchlist/raw|modificar en mòde brut]].',
+'watchlistedit-normal-explain' => 'Las paginas que seguissètz son visiblas çaijós, classadas per espaci de noms. Per levar una pagina (e sa pagina de discussion) de la lista, seleccionatz la casa al costat puèi clicatz sul boton en bas. Tanben la podètz [[Special:EditWatchlist/raw|modificar en mòde brut]].',
'watchlistedit-normal-submit' => 'Levar las paginas seleccionadas',
'watchlistedit-normal-done' => '{{PLURAL:$1|Una pagina es estada levada|$1 paginas son estadas levadas}} de vòstra lista de seguiment :',
'watchlistedit-raw-title' => 'Modificacion de la lista de seguiment (mòde brut)',
'watchlistedit-raw-legend' => 'Modificacion de la lista de seguiment en mòde brut',
-'watchlistedit-raw-explain' => '!!FLa lista de las paginas que seguissètz es afichada çaijós, sens las paginas de discussion (enclusas automaticament) e triadas per espaci de noms. Podètz modificar la lista, apondètz las paginas que volètz seguir (pauc impòrta ont), una pagina per linha, e levatz las paginas que volètz pas mai seguir. Tanlèu acabat, clicatz sul boton en bas per metre la lista a jorn. Tanben podètz utilizar [[Special:Watchlist/edit|l’editor normal]].',
+'watchlistedit-raw-explain' => '!!FLa lista de las paginas que seguissètz es afichada çaijós, sens las paginas de discussion (enclusas automaticament) e triadas per espaci de noms. Podètz modificar la lista, apondètz las paginas que volètz seguir (pauc impòrta ont), una pagina per linha, e levatz las paginas que volètz pas mai seguir. Tanlèu acabat, clicatz sul boton en bas per metre la lista a jorn. Tanben podètz utilizar [[Special:EditWatchlist|l’editor normal]].',
'watchlistedit-raw-titles' => 'Títols :',
'watchlistedit-raw-submit' => 'Metre la lista a jorn',
'watchlistedit-raw-done' => 'Vòstra lista de seguiment es estada mesa a jorn.',
@@ -3355,27 +3340,26 @@ Ensajatz la previsualizacion normala.',
'duplicate-defaultsort' => 'Atencion : La clau de triada per defaut « $2 » espotís la mai recenta « $1 ».',
# Special:Version
-'version' => 'Version',
-'version-extensions' => 'Extensions installadas',
-'version-specialpages' => 'Paginas especialas',
-'version-parserhooks' => 'Extensions del parser',
-'version-variables' => 'Variablas',
-'version-skins' => 'Abilhatges',
-'version-other' => 'Divèrs',
-'version-mediahandlers' => 'Supòrts mèdia',
-'version-hooks' => 'Croquets',
-'version-extension-functions' => 'Foncions de las extensions',
-'version-parser-extensiontags' => 'Balisas suplementàrias del parser',
-'version-parser-function-hooks' => 'Croquets de las foncions del parser',
-'version-skin-extension-functions' => "Foncions d'extension de l'interfàcia",
-'version-hook-name' => 'Nom del croquet',
-'version-hook-subscribedby' => 'Definit per',
-'version-version' => '(Version $1)',
-'version-license' => 'Licéncia',
-'version-poweredby-others' => 'autres',
-'version-software' => 'Logicial installat',
-'version-software-product' => 'Produch',
-'version-software-version' => 'Version',
+'version' => 'Version',
+'version-extensions' => 'Extensions installadas',
+'version-specialpages' => 'Paginas especialas',
+'version-parserhooks' => 'Extensions del parser',
+'version-variables' => 'Variablas',
+'version-skins' => 'Abilhatges',
+'version-other' => 'Divèrs',
+'version-mediahandlers' => 'Supòrts mèdia',
+'version-hooks' => 'Croquets',
+'version-extension-functions' => 'Foncions de las extensions',
+'version-parser-extensiontags' => 'Balisas suplementàrias del parser',
+'version-parser-function-hooks' => 'Croquets de las foncions del parser',
+'version-hook-name' => 'Nom del croquet',
+'version-hook-subscribedby' => 'Definit per',
+'version-version' => '(Version $1)',
+'version-license' => 'Licéncia',
+'version-poweredby-others' => 'autres',
+'version-software' => 'Logicial installat',
+'version-software-product' => 'Produch',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath' => "Camin d'accès d'un fichièr",
@@ -3387,9 +3371,7 @@ Picatz lo nom del fichièr sens lo prefix « {{ns:file}}: »",
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Recèrca dels fichièrs en doble',
-'fileduplicatesearch-summary' => 'Recèrca per de fichièrs en doble sus la banca de valors fragmentàrias.
-
-Picatz lo nom del fichièr sens lo prefix « {{ns:file}}: ».',
+'fileduplicatesearch-summary' => 'Recèrca per de fichièrs en doble sus la banca de valors fragmentàrias.',
'fileduplicatesearch-legend' => 'Recèrca d’un doble',
'fileduplicatesearch-filename' => 'Nom del fichièr :',
'fileduplicatesearch-submit' => 'Recercar',
diff --git a/languages/messages/MessagesOr.php b/languages/messages/MessagesOr.php
index 442d6ef7..5e1a684c 100644
--- a/languages/messages/MessagesOr.php
+++ b/languages/messages/MessagesOr.php
@@ -9,10 +9,13 @@
*
* @author Ansumang
* @author Jayantanth
+ * @author Jnanaranjan Sahu
* @author Jose77
+ * @author MKar
* @author Odisha1
* @author Psubhashish
* @author Sambiwiki
+ * @author Shijualex
* @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
*/
@@ -29,6 +32,217 @@ $digitTransformTable = array(
'9' => 'à­¯', # &#x0b6f;
);
+/** namespace translations from translatewiki.net
+ * @author Shijualex
+ * @author Psubhashish
+ */
+$namespaceNames = array(
+ NS_MEDIA => 'ମାଧà­à­Ÿà¬®',
+ NS_SPECIAL => 'ବିଶେଷ',
+ NS_TALK => 'ଆଲୋଚନା',
+ NS_USER => 'ବà­à­Ÿà¬¬à¬¾à¬¹à¬¾à¬°à¬•à¬¾à¬°à­€',
+ NS_USER_TALK => 'ବà­à­Ÿà¬¬à¬¾à¬¹à¬¾à¬°à¬•à¬¾à¬°à­€à¬™à­à¬•_ଆଲୋଚନା',
+ NS_PROJECT_TALK => 'ଉଇକିପିଡ଼ିଆ_ଆଲୋଚନା',
+ NS_FILE => 'ଫାଇଲ',
+ NS_FILE_TALK => 'ଫାଇଲ_ଆଲୋଚନା',
+ NS_MEDIAWIKI => 'ମିଡ଼ିଆଉଇକି',
+ NS_MEDIAWIKI_TALK => 'ମିଡ଼ିଆଉଇକି_ଆଲୋଚନା',
+ NS_TEMPLATE => 'ଟେମà­à¬ªà¬²à­‡à¬Ÿ',
+ NS_TEMPLATE_TALK => 'ଟେମà­à¬ªà¬²à­‡à¬Ÿ_ଆଲୋଚନା',
+ NS_HELP => 'ସାହାଯà­à­Ÿ',
+ NS_HELP_TALK => 'ସାହାଯà­à­Ÿ_ଆଲୋଚନା',
+ NS_CATEGORY => 'ଶà­à¬°à­‡à¬£à­€',
+ NS_CATEGORY_TALK => 'ଶà­à¬°à­‡à¬£à­€_ଆଲୋଚନା',
+);
+
+$namespaceAliases = array(
+ 'ବà­à­Ÿà¬¬à¬¹à¬¾à¬°à¬•à¬¾à¬°à¬¿' => NS_USER,
+ 'ବà­à­Ÿà¬¬à¬¹à¬¾à¬°à¬•à¬¾à¬°à¬¿à¬à¬•_ଆଲୋଚନା' => NS_USER_TALK,
+ 'ଟେà¬à¬ªà¬²à­‡à¬Ÿ' => NS_TEMPLATE,
+ 'ଟେà¬à¬ªà¬²à­‡à¬Ÿ_ଆଲୋଚନା' => NS_TEMPLATE_TALK,
+ 'ବିଭାଗ' => NS_CATEGORY,
+ 'ବିଭାଗିୟ_ଆଲୋଚନା' => NS_CATEGORY_TALK,
+);
+
+$specialPageAliases = array(
+ 'Activeusers' => array( 'ସଚଳ_ଇଉଜର' ),
+ 'Allmessages' => array( 'ସବà­_ମେସେଜ' ),
+ 'Allpages' => array( 'ସବà­_ପୃଷà­à¬ à¬¾' ),
+ 'Ancientpages' => array( 'ପà­à¬°à­à¬£à¬¾_' ),
+ 'Blankpage' => array( 'ଖାଲି_ପୃଷà­à¬ à¬¾' ),
+ 'Block' => array( 'ଅଟକାଇଦେବେ', 'ଆଇପି_ଅଟକାଇଦେବେ', 'ଇଉଜରକà­_ଅଟକାଇଦେବେ' ),
+ 'Blockme' => array( 'ମୋତେ_ଅଟକାଇଦିଅନà­à¬¤à­' ),
+ 'Booksources' => array( 'ଲେଖା_ନିଆଯାଇଥିବା_ବହି' ),
+ 'BrokenRedirects' => array( 'ଭଙà­à¬—ା_ଲେଉଟାଣି' ),
+ 'Categories' => array( 'ଶà­à¬°à­‡à¬£à­€' ),
+ 'ChangeEmail' => array( 'ଇମେଲ_ବଦଳାଇବେ' ),
+ 'ChangePassword' => array( 'ପାସବାରà­à¬¡à¬¼_ବଦଳାଇବେ' ),
+ 'ComparePages' => array( 'ପୃଷà­à¬ à¬¾à¬•à­_ତଉଲ' ),
+ 'Confirmemail' => array( 'ଇମେଲ_ଥୟ_କରିବେ' ),
+ 'Contributions' => array( 'ଅବଦାନ' ),
+ 'CreateAccount' => array( 'ଖାତା_ଖୋଲିବେ' ),
+ 'Deadendpages' => array( 'ଆଗକà­_ରାହା_ନଥିବା_ପୃଷà­à¬ à¬¾' ),
+ 'DeletedContributions' => array( 'ହଟାଇ_ଦିଆଯାଇଥିବା_ଅବଦାନ' ),
+ 'Disambiguations' => array( 'ଆବà­à¬°à­à¬œà¬¾à¬¬à­à¬°à­_କଥା' ),
+ 'DoubleRedirects' => array( 'ଦà­à¬‡à¬¥à¬°_ଲେଉଟାଣି' ),
+ 'Emailuser' => array( 'ସଭà­à­Ÿà¬™à­à¬•à­_ମେଲ_କରନà­à¬¤à­' ),
+ 'Export' => array( 'ରପà­à¬¤à¬¾à¬¨à¬¿_କରିବା' ),
+ 'Fewestrevisions' => array( 'ସବà­à¬ à­_କମ_ସଙà­à¬•à¬³à¬¨' ),
+ 'FileDuplicateSearch' => array( 'ନକଲି_ଫାଇଲ_ଖୋଜା' ),
+ 'Filepath' => array( 'ଫାଇଲରାସà­à¬¤à¬¾' ),
+ 'Import' => array( 'ଆମଦାନି' ),
+ 'Invalidateemail' => array( 'କାମକରà­à¬¨à¬¥à¬¿à¬¬à¬¾_ଇମେଲ' ),
+ 'BlockList' => array( 'ତାଲିକାକà­__ଅଟକାଇଦେବା' ),
+ 'LinkSearch' => array( 'ଲିଙà­à¬•_ଖୋଜା' ),
+ 'Listadmins' => array( 'ପରିଛା_ତାଲିକା' ),
+ 'Listbots' => array( 'ବଟ_ମାନଙà­à¬•_ତାଲିକା' ),
+ 'Listfiles' => array( 'ଫାଇଲ_ତାଲିକା' ),
+ 'Listgrouprights' => array( 'ଗୋଠ_ନିୟମ_ତାଲିକା' ),
+ 'Listredirects' => array( 'ଲେଉଟାଣି_ତାଲିକା' ),
+ 'Listusers' => array( 'ଇଉଜର_ତାଲିକା' ),
+ 'Lockdb' => array( 'ଡାଟାବେସ‌_କିଳିଦେବା' ),
+ 'Log' => array( 'ଲଗ' ),
+ 'Lonelypages' => array( 'à¬à¬•à­à¬Ÿà¬¿à¬†_ପୃଷà­à¬ à¬¾' ),
+ 'Longpages' => array( 'ଲମà­à¬¬à¬¾_ପୃଷà­à¬ à¬¾' ),
+ 'MergeHistory' => array( 'ଇତିହାସକà­_ମିଶାଇଦେବା' ),
+ 'MIMEsearch' => array( 'MIME_ଖୋଜା' ),
+ 'Mostcategories' => array( 'ଅଧିକ_ଶà­à¬°à­‡à¬£à­€' ),
+ 'Mostimages' => array( 'ଅଧିକ_ଯୋଡ଼ା_ଫାଇଲ' ),
+ 'Mostlinked' => array( 'ଅଧିକ_ଯୋଡ଼ା_ପୃଷà­à¬ à¬¾' ),
+ 'Mostlinkedcategories' => array( 'ଅଧିକ_ଯୋଡ଼ା_ଶà­à¬°à­‡à¬£à­€' ),
+ 'Mostlinkedtemplates' => array( 'ଅଧିକ_ଯୋଡ଼ା_ଟେମà­à¬ªà¬²à­‡à¬Ÿ' ),
+ 'Mostrevisions' => array( 'ବେଶି_ସଙà­à¬•à¬³à¬¨' ),
+ 'Movepage' => array( 'ପୃଷà­à¬ à¬¾à¬•à­_ଘà­à¬žà­à¬šà¬¾à¬‡à¬¬à¬¾' ),
+ 'Mycontributions' => array( 'ମୋ_ଅବଦାନ' ),
+ 'Mypage' => array( 'ମୋ_ପୃଷà­à¬ à¬¾' ),
+ 'Mytalk' => array( 'ମୋ_ଆଲୋଚନା' ),
+ 'Myuploads' => array( 'ମୋ_ଅପଲୋଡ' ),
+ 'Newimages' => array( 'ନୂଆ_ଫାଇଲ' ),
+ 'Newpages' => array( 'ନୂଆ_ପୃଷà­à¬ à¬¾' ),
+ 'PermanentLink' => array( 'ଚିରକାଳର_ଲିଙà­à¬•' ),
+ 'Popularpages' => array( 'ଜଣାଶà­à¬£à¬¾_ପୃଷà­à¬ à¬¾' ),
+ 'Preferences' => array( 'ପସନà­à¬¦à¬¸à¬¬à­' ),
+ 'Prefixindex' => array( 'ଆଗରେ_ଯୋଡ଼ାହେବା_ଇଣà­à¬¡à­‡à¬•à­à¬¸' ),
+ 'Protectedpages' => array( 'କିଳାଯାଇଥିବା_ପୃଷà­à¬ à¬¾' ),
+ 'Protectedtitles' => array( 'କିଳାଯାଇଥିବା_ନାଆà¬' ),
+ 'Randompage' => array( 'ଇଆଡà­_ଇଆଡà­' ),
+ 'Randomredirect' => array( 'ଜାହିତାହି_ଫେରଣା' ),
+ 'Recentchanges' => array( 'ନଗଦ_ବଦଳ' ),
+ 'Recentchangeslinked' => array( 'ଜୋଡ଼ାଥିବା_ନଗଦ_ବଦଳ' ),
+ 'Revisiondelete' => array( 'ସଙà­à¬•à¬³à¬¨à¬²à¬¿à¬­à¬¾à¬‡à¬¦à¬¿à¬…' ),
+ 'RevisionMove' => array( 'ସଙà­à¬•à¬³à¬¨' ),
+ 'Search' => array( 'ଖୋଜନà­à¬¤à­' ),
+ 'Shortpages' => array( 'ଛୋଟ_ପୃଷà­à¬ à¬¾' ),
+ 'Specialpages' => array( 'ବିଶେଷ_ପୃଷà­à¬ à¬¾' ),
+ 'Statistics' => array( 'ଗଣନା' ),
+ 'Tags' => array( 'ଟାଗ' ),
+ 'Unblock' => array( 'ଫିଟାଇଦିଅ' ),
+ 'Uncategorizedcategories' => array( 'ଅସଜଡ଼ା_ଶà­à¬°à­‡à¬£à­€' ),
+ 'Uncategorizedimages' => array( 'ସଜଡ଼ା_ଶà­à¬°à­‡à¬£à­€à¬°_ଫାଇଲ' ),
+ 'Uncategorizedpages' => array( 'ଅସଜଡ଼ା_ଫାଇଲସବà­' ),
+ 'Uncategorizedtemplates' => array( 'ଅସଜଡ଼ା_ଟେମà­à¬ªà¬²à­‡à¬Ÿ' ),
+ 'Undelete' => array( 'ଲିଭାଅ_ନାହିà¬' ),
+ 'Unlockdb' => array( 'DBଖୋଲିବା' ),
+ 'Unusedcategories' => array( 'ବà­à­Ÿà¬¬à¬¹à¬¾à¬°_ହୋଇନଥିବା_ଶà­à¬°à­‡à¬£à­€' ),
+ 'Unusedimages' => array( 'ବà­à­Ÿà¬¬à¬¹à¬¾à¬°_ହୋଇନଥିବା_ଫାଇଲ' ),
+ 'Unusedtemplates' => array( 'ବà­à­Ÿà¬¬à¬¹à¬¾à¬°_ହୋଇନଥିବା_ଟେମà­à¬ªà¬²à­‡à¬Ÿ' ),
+ 'Unwatchedpages' => array( 'ଦେଖାଯାଇନଥିବା_ପୃଷà­à¬ à¬¾à¬¸à¬¬à­' ),
+ 'Upload' => array( 'ଅପଲୋଡ଼' ),
+ 'UploadStash' => array( 'ଷà­à¬Ÿà¬¾à¬¸_ଅପଲୋଡ଼_କରନà­à¬¤à­' ),
+ 'Userlogin' => array( 'ଇଉଜର_ଲଗ_ଇନ' ),
+ 'Userlogout' => array( 'ଇଉଜର_ଲଗ_ଆଉଟ' ),
+ 'Userrights' => array( 'ଇଉଜର_ଅଧିକାର' ),
+ 'Version' => array( 'ଭରସନ' ),
+ 'Wantedcategories' => array( 'ଦରକାରି_ଶà­à¬°à­‡à¬£à­€' ),
+ 'Wantedfiles' => array( 'ଦରକାରି_ଫାଇଲ' ),
+ 'Wantedpages' => array( 'ଦରକାରି_ପୃଷà­à¬ à¬¾' ),
+ 'Wantedtemplates' => array( 'ଦରକାରି_ଟେମà­à¬ªà¬²à­‡à¬Ÿ' ),
+ 'Watchlist' => array( 'ଦେଖଣା_ତାଲିକା' ),
+ 'Whatlinkshere' => array( 'à¬à¬ à¬¾à¬°à­‡_କଣ_ଲିà¬à¬•_ଅଛି' ),
+ 'Withoutinterwiki' => array( 'ଇଣà­à¬Ÿà¬°à¬‰à¬‡à¬•à¬¿_ବିନା' ),
+);
+
+$magicWords = array(
+ 'redirect' => array( '0', '#ଲେଉଟାଣି', '#REDIRECT' ),
+ 'noeditsection' => array( '0', '_ବଦଳା_ନହେବାଶà­à¬°à­‡à¬£à­€_', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', 'à¬à¬¬à­‡à¬•à¬¾à¬°_ମାସ', 'à¬à¬¬à­‡à¬°_ମାସ୨', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'à¬à¬¬à­‡à¬°_ମାସ', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'à¬à¬¬à­‡à¬•à¬¾à¬°_ମାସ_ନାଆà¬', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'à¬à¬¬à­‡à¬•à¬¾à¬°_ମାସ_ନାଆà¬_ସାଧାରଣ', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'à¬à¬¬à­‡à¬•à¬¾à¬°_ମାସ_ନାଆà¬_ସଂକà­à¬·à¬¿à¬ªà­à¬¤', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'à¬à¬¬à­‡à¬•à¬¾à¬°_ଦିନ', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'à¬à¬¬à­‡à¬•à¬¾à¬°_ଦିନ୨', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'à¬à¬¬à­‡à¬•à¬¾à¬°_ଦିନ_ନାଆà¬', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'à¬à¬¬à­‡à¬•à¬¾à¬°_ବରà­à¬·', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'à¬à¬¬à­‡à¬•à¬¾à¬°_ସମୟ', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'à¬à¬¬à­‡à¬•à¬¾à¬°_ଘଣà­à¬Ÿà¬¾', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'à¬à¬¬à­‡à¬°_ମାସ୧', 'ସà­à¬¥à¬¾à¬¨à­€à­Ÿ_ମାସ୨', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'à¬à¬¬à­‡à¬•à¬¾à¬°_ମାସ୧', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'ମାସ୧ର_ନାଆà¬', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'ସà­à¬¥à¬¾à¬¨à­€à­Ÿ_ମାସ୧_ନାଆà¬_ସାଧାରଣ', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'ସà­à¬¥à¬¾à¬¨à­€à­Ÿ_ମାସର୧_ନାଆà¬_ସଂକà­à¬·à¬¿à¬ªà­à¬¤', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'Local_ଦିନ', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'ସà­à¬¥à¬¾à¬¨à­€à­Ÿ_ଦିନ୨', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'ଦିନ', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'ସà­à¬¥à¬¾à¬¨à­€à­Ÿ_ବରà­à¬·', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'ସà­à¬¥à¬¾à¬¨à­€à­Ÿ_ସମୟ', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'ସà­à¬¥à¬¾à¬¨à­€à­Ÿ_ଘଣà­à¬Ÿà¬¾', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'ପୃଷà­à¬ à¬¾_ସଂଖà­à­Ÿà¬¾', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'ଲେଖା_ସଂଖà­à­Ÿà¬¾', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'ଫାଇଲ_ସଂଖà­à­Ÿà¬¾', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'ବà­à­Ÿà¬¬à¬¾à¬¹à¬¾à¬°à¬•à¬¾à¬°à­€_ସଂଖà­à­Ÿà¬¾', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'ସଚଳ_ବà­à­Ÿà¬¬à¬¾à¬¹à¬¾à¬°à¬•à¬¾à¬°à­€à¬™à­à¬•_ସଂଖà­à­Ÿà¬¾', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'ବଦଳ_ସଂଖà­à­Ÿà¬¾', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'କେତେଥର_ଦେଖାଯାଇଛି', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'ପୃଷà­à¬ à¬¾_ନାଆà¬', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'ପୃଷà­à¬ à¬¾_ନାମକାରଣକାରୀ', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'ନେମସà­à¬ªà­‡à¬¸', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'ନେମସà­à¬ªà­‡à¬¸à¬•à¬¾à¬°à­€', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'ଟକସà­à¬ªà­‡à¬¸', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'ଟକସà­à¬ªà­‡à¬¸à¬•à¬¾à¬°à­€', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'ବିଷୟସà­à¬ªà­‡à¬¸', 'ଲେଖାସà­à¬ªà­‡à¬¸', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'msg' => array( '0', 'ମେସେଜ:', 'MSG:' ),
+ 'img_manualthumb' => array( '1', 'ନଖଦେଖଣା=$1', 'ଦେଖଣା=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'ଡାହାଣ', 'right' ),
+ 'img_left' => array( '1', 'ବାଆà¬', 'left' ),
+ 'img_none' => array( '1', 'କିଛି_ନà­à¬¹à­‡à¬', 'none' ),
+ 'img_width' => array( '1', '$1_ପିକସେଲ', '$1px' ),
+ 'img_center' => array( '1', 'କେନà­à¬¦à­à¬°', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'ଫà­à¬°à­‡à¬®à¬•à¬°à¬¾', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'ଫà­à¬°à­‡à¬®à¬¨à¬¥à¬¿à¬¬à¬¾', 'frameless' ),
+ 'img_border' => array( '1', 'ବରà­à¬¡à¬°', 'border' ),
+ 'img_baseline' => array( '1', 'ବେସଲାଇନ', 'baseline' ),
+ 'img_top' => array( '1', 'ଉପର', 'top' ),
+ 'img_text_top' => array( '1', 'ଲେଖା-ଉପର', 'text-top' ),
+ 'img_middle' => array( '1', 'ମà¬à¬¿', 'middle' ),
+ 'img_bottom' => array( '1', 'ତଳ', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'ଲେଖା-ତଳ', 'text-bottom' ),
+ 'img_link' => array( '1', 'ଲିଙà­à¬•=$1', 'link=$1' ),
+ 'articlepath' => array( '0', 'ଲେଖାର_ପଥ', 'ARTICLEPATH' ),
+ 'server' => array( '0', 'ସରà­à¬­à¬°', 'SERVER' ),
+ 'grammar' => array( '0', 'ବà­à­Ÿà¬¾à¬•à¬°à¬£', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'ଲିଙà­à¬—', 'GENDER:' ),
+ 'plural' => array( '0', 'ବହà­à¬¬à¬šà¬¨:', 'PLURAL:' ),
+ 'raw' => array( '0', 'କଞà­à¬šà¬¾', 'RAW:' ),
+ 'displaytitle' => array( '1', 'ଦେଖଣାନାଆà¬', 'DISPLAYTITLE' ),
+ 'newsectionlink' => array( '1', '_ନୂଆବିଭାଗଲିଙà­à¬•_', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '_ନୂଆ_ବିଭାଗ_ନକରିବା_ଲିଙà­à¬•_', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'ନଗଦ_ରିଭିଜନ', 'CURRENTVERSION' ),
+ 'numberofadmins' => array( '1', 'ପରିଛାମାନଙà­à¬•à¬¤à¬¾à¬²à¬¿à¬•à¬¾', 'NUMBEROFADMINS' ),
+ 'padleft' => array( '0', 'ବାଆà¬à¬ªà­à­Ÿà¬¾à¬¡à¬¼', 'PADLEFT' ),
+ 'padright' => array( '0', 'ଡାହାଣପà­à­Ÿà¬¾à¬¡à¬¼', 'PADRIGHT' ),
+ 'special' => array( '0', 'ବିଶେଷ', 'special' ),
+ 'filepath' => array( '0', 'ଫାଇଲରାହା:', 'FILEPATH:' ),
+ 'tag' => array( '0', 'ଟାଗ', 'tag' ),
+ 'hiddencat' => array( '1', '_ଲà­à¬šà¬¿à¬¥à¬¿à¬¬à¬¾à¬¬à¬¿à¬­à¬¾à¬—_', '__HIDDENCAT__' ),
+ 'pagesize' => array( '1', 'ଫରଦଆକାର', 'PAGESIZE' ),
+ 'protectionlevel' => array( '1', 'ପà­à¬°à¬¤à¬¿à¬°à¬•à­à¬·à¬¾à¬¸à­à¬¤à¬°', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'ତାରିଖରପà­à¬°à¬•à¬¾à¬°', 'formatdate', 'dateformat' ),
+ 'url_path' => array( '0', 'ବାଟ', 'PATH' ),
+ 'url_wiki' => array( '0', 'ଉଇକି', 'WIKI' ),
+ 'url_query' => array( '0', 'ପà­à¬°à¬¶à­à¬¨', 'QUERY' ),
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'ତଳେ ଥିବା ଲିଙà­à¬•:',
@@ -61,8 +275,8 @@ $messages = array(
'tog-shownumberswatching' => 'ଦେଖà­à¬¥à¬¿à¬¬à¬¾ ବà­à­Ÿà¬¬à¬¹à¬¾à¬°à¬•à¬¾à¬°à­€à¬™à­à¬• ସଂଖà­à­Ÿà¬¾ ଦେଖାଇବେ',
'tog-oldsig' => 'à¬à¬¬à­‡ ଥିବା ନାମ:',
'tog-fancysig' => 'ଦସà­à¬¤à¬–ତକୠଉଇକିଟେକà­à¬¸à¬Ÿ ଭାବରେ ଗଣିବେ (ଆପେଆପେ ଥିବା ଲିଙà­à¬• ବିନା)',
-'tog-externaleditor' => 'ବାହାର ସମà­à¬ªà¬¾à¬¦à¬•à¬Ÿà¬¿ ଆପଣାଛାà¬à¬ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରିବେ (କେବଳ ପଟୠସଭà­à­Ÿà¬™à­à¬• ପାଇà¬, à¬à¬¥à¬¿ ନିମନà­à¬¤à­‡ ଆପଣଙà­à¬• କମà­à¬ªà­à¬Ÿà¬°à¬°à­‡ ବିଶେଷ ସଜାଣି ଲୋଡ଼ା । [http://www.mediawiki.org/wiki/Manual:External_editors ଅଧିକ ସୂଚନା])',
-'tog-externaldiff' => 'ବାହାର ବାଛିବା (external diff) ଆପଣାଛାà¬à¬ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରିବେ (କେବଳ ପଟୠସଭà­à­Ÿà¬™à­à¬• ପାଇà¬, à¬à¬¥à¬¿ ନିମନà­à¬¤à­‡ ଆପଣଙà­à¬• କମà­à¬ªà­à¬Ÿà¬°à¬°à­‡ ବିଶେଷ ସଜାଣି ଲୋଡ଼ା । [http://www.mediawiki.org/wiki/Manual:External_editors ଅଧିକ ସୂଚନା])',
+'tog-externaleditor' => 'ବାହାର ସମà­à¬ªà¬¾à¬¦à¬•à¬Ÿà¬¿ ଆପଣାଛାà¬à¬ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରିବେ (କେବଳ ପଟୠସଭà­à­Ÿà¬™à­à¬• ପାଇà¬, à¬à¬¥à¬¿ ନିମନà­à¬¤à­‡ ଆପଣଙà­à¬• କମà­à¬ªà­à¬Ÿà¬°à¬°à­‡ ବିଶେଷ ସଜାଣି ଲୋଡ଼ା । [//www.mediawiki.org/wiki/Manual:External_editors ଅଧିକ ସୂଚନା])',
+'tog-externaldiff' => 'ବାହାର ବାଛିବା (external diff) ଆପଣାଛାà¬à¬ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରିବେ (କେବଳ ପଟୠସଭà­à­Ÿà¬™à­à¬• ପାଇà¬, à¬à¬¥à¬¿ ନିମନà­à¬¤à­‡ ଆପଣଙà­à¬• କମà­à¬ªà­à¬Ÿà¬°à¬°à­‡ ବିଶେଷ ସଜାଣି ଲୋଡ଼ା । [//www.mediawiki.org/wiki/Manual:External_editors ଅଧିକ ସୂଚନା])',
'tog-showjumplinks' => '"ଡେଇà¬à¬¯à¬¿à¬¬à­‡" ଲିଙà­à¬•à¬¸à¬¬à­à¬•à­ ସଚଳ କରିବେ',
'tog-uselivepreview' => 'ସାଥେ ସାଥେ ଚାଲିଥିବା ଦେଖଣା ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରିବେ (ଜାଭାସà­à¬•à­à¬°à¬¿à¬ªà­à¬Ÿ ଲୋଡ଼ା)',
'tog-forceeditsummary' => 'ଖାଲି ସମà­à¬ªà¬¾à¬¦à¬¨à¬¾ ସାରକଥାକୠଯିବା ବେଳେ ମୋତେ ଜଣାଇବେ',
@@ -104,7 +318,7 @@ $messages = array(
'fri' => 'ଶà­à¬•à­à¬°à¬¬à¬¾à¬°',
'sat' => 'ଶନିବାର',
'january' => 'ଜାନà­à¬†à¬°à¬¿',
-'february' => 'ଫେବà­à¬°à­à¬†à¬°à¬¿',
+'february' => 'ଫେବୃଆ ରି',
'march' => 'ମାରà­à¬š',
'april' => 'à¬à¬ªà­à¬°à¬¿à¬²',
'may_long' => 'ମେ',
@@ -157,6 +371,7 @@ $messages = array(
'listingcontinuesabbrev' => 'ଆହà­à¬°à¬¿ ଅଛି..',
'index-category' => 'ସୂଚୀଥିବା ପୃଷà­à¬ à¬¾à¬¸à¬¬à­',
'noindex-category' => 'ସୂଚୀହୀନ ପୃଷà­à¬ à¬¾à¬¸à¬¬à­',
+'broken-file-category' => 'ଭଙà­à¬—ା ଫାଇଲ ଲିଙà­à¬• ଥିବା ପୃଷà­à¬ à¬¾à¬¸à¬®à­‚ହ',
'about' => 'ବାବଦରେ',
'article' => 'ସୂଚୀପତà­à¬°',
@@ -208,10 +423,10 @@ $messages = array(
'history' => 'ଫାଇଲ ଇତିହାସ',
'history_short' => 'ଇତିହାସ',
'updatedmarker' => 'ମୋ ଶେଷ ଆସିବା ପରେ ଅପଡେଟ କରାଯାଇଅଛି',
-'info_short' => 'ସୂଚନା',
'printableversion' => 'ଛପାହୋଇପାରିବା ପୃଷà­à¬ à¬¾',
'permalink' => 'ସବà­à¬¦à¬¿à¬¨à¬¿à¬† ଲିଙà­à¬•',
'print' => 'ପà­à¬°à¬¿à¬£à­à¬Ÿ କରିବେ',
+'view' => 'ଦେଖଣା',
'edit' => 'ବଦଳାଇବେ',
'create' => 'ତିଆରି କରିବେ',
'editthispage' => 'à¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿à¬•à­ ବଦଳାଇବା',
@@ -219,6 +434,7 @@ $messages = array(
'delete' => 'ଲିଭେଇବେ',
'deletethispage' => 'à¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿ ଲିଭାଇବେ',
'undelete_short' => '{{PLURAL:$1|ଗୋଟିଠବଦଳ|$1ଟି ବଦଳ}} ଯାହା ଲିଭାସରିଛି ତାହାକୠପଛକୠଫେରାଇଦେବା',
+'viewdeleted_short' => '{{PLURAL:$1|ଗୋଟିଠଲିଭାଯାଇଥିବା ବଦଳ|$1ଟି ଲିଭାଯାଇଥିବା ବଦଳ}} ଦେଖାଇବେ',
'protect' => 'କିଳିବେ',
'protect_change' => 'ବଦଳାଇବା',
'protectthispage' => 'à¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿à¬•à­ କିଳିବେ',
@@ -302,6 +518,8 @@ $1',
'toc' => 'ଭିତର ଚିଜ',
'showtoc' => 'ଦେଖାଇବେ',
'hidetoc' => 'ଲà­à¬šà¬¾à¬‡à¬¬à­‡',
+'collapsible-collapse' => 'ଚାପିଦେବେ',
+'collapsible-expand' => 'ବଢ଼ାଇବେ',
'thisisdeleted' => '$1 କୠଦେଖିବେ ଅବା ପà­à¬¨à¬¸à­à¬¥à¬¾à¬ªà¬¨ କରିବେ?',
'viewdeleted' => 'ଦେଖିବା $1?',
'restorelink' => '{{PLURAL:$1|ଗୋଟିଠଲିଭାଯାଇଥିବା ବଦଳ|$1ଟି ଲିଭାଯାଇଥିବା ବଦଳ}}',
@@ -313,6 +531,8 @@ $1',
'page-rss-feed' => '$1 ଟି ଆରେସେସ ଫିଡ଼',
'page-atom-feed' => '$1 ଟି ଆଟମ ଫିଡ଼',
'red-link-title' => ' $1 (ପୃଷà­à¬ à¬¾à¬Ÿà¬¿ ନାହିà¬)',
+'sort-descending' => 'ବଡ଼ରୠସାନ କà­à¬°à¬®à­‡ ସଜାନà­à¬¤à­',
+'sort-ascending' => 'ସାନରୠବଡ଼ କà­à¬°à¬®à­‡ ସଜାନà­à¬¤à­',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'ପୃଷà­à¬ à¬¾',
@@ -399,11 +619,13 @@ $1',
'protectedinterface' => 'à¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿ ସଫà­à¬Ÿà¬¬à­‡à¬° ନିମନà­à¬¤à­‡ ଇଣà­à¬Ÿà¬°à¬«à­‡à¬¸ ଲେଖା ଯୋଗାଇଥାଠଓ à¬à¬¹à¬¾ ଅବà­à­Ÿà¬¬à¬¹à¬¾à¬°à¬•à­ ରୋକିବା ନିମନà­à¬¤à­‡ କିଳାଯାଇଅଛି ।',
'editinginterface' => "'''ଚେତାବନୀ:''' ଆପଣ ସଫà­à¬Ÿà¬¬à­‡à¬°à¬° ଇଣà­à¬Ÿà¬°à¬«à­‡à¬¸ ଲେଖା ଯୋଗାଇବା ନିମନà­à¬¤à­‡ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରାଯାଉଥିବା à¬à¬• ପୃଷà­à¬ à¬¾à¬° ସମà­à¬ªà¬¾à¬¦à¬¨à¬¾ କରà­à¬…ଛନà­à¬¤à¬¿ ।
à¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾à¬° କିଛି ବି ବଦଳ ବାକି ସଭà­à­Ÿà¬®à¬¾à¬¨à¬™à­à¬• ଇଣà­à¬Ÿà¬°à¬«à­‡à¬¸à¬° ଦେଖଣାକୠପà­à¬°à¬­à¬¾à¬¬à¬¿à¬¤ କରିବ ।
-ଅନà­à¬¬à¬¾à¬¦ ନିମନà­à¬¤à­‡, ଦୟାକରି ମିଡ଼ିଆଉଇକିର ସà­à¬¥à¬¾à¬¨à­€à­Ÿà¬•à¬°à¬£ ପà­à¬°à¬•à¬³à­à¬ª [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରନà­à¬¤à­ ।",
+ଅନà­à¬¬à¬¾à¬¦ ନିମନà­à¬¤à­‡, ଦୟାକରି ମିଡ଼ିଆଉଇକିର ସà­à¬¥à¬¾à¬¨à­€à­Ÿà¬•à¬°à¬£ ପà­à¬°à¬•à¬³à­à¬ª [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରନà­à¬¤à­ ।",
'sqlhidden' => '(SQL ପà­à¬°à¬¶à­à¬¨ ଲà­à¬šà¬¾à¬¯à¬¾à¬‡à¬…ଛି)',
'cascadeprotected' => 'à¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾ ସମà­à¬ªà¬¾à¬¦à¬¨à¬¾ କରିବାରୠକିଳାଯାଇଅଛି, କାରଣ à¬à¬¥à¬¿à¬°à­‡ ତଳଲିଖିତ {{PLURAL:$1|ପୃଷà­à¬ à¬¾à¬Ÿà¬¿à¬ ଅଛି|ଟି ପୃଷà­à¬ à¬¾ ଅଛି}} ଯାହା "କà­à­Ÿà¬¾à¬¸à¬•à­‡à¬¡à¬¼ କରା" ସà­à¬¬à¬¿à¬§à¬¾ ଦେଇ କିଳାଯାଇଅଛି ।:
$2',
'namespaceprotected' => "ଆପଣଙà­à¬•à­ à¬à¬¹à¬¿ '''$1''' ନେମସà­à¬ªà­‡à¬¸ ଥିବା ପୃଷà­à¬ à¬¾à¬°à­‡ ସମà­à¬ªà¬¾à¬¦à¬¨à¬¾ କରିବା ନିମନà­à¬¤à­‡ ଅନà­à¬®à¬¤à¬¿ ମିଳିନାହିଠ।",
+'customcssprotected' => 'ଆପଣଙà­à¬•à­ à¬à¬¹à¬¿ CSS ପୃଷà­à¬ à¬¾à¬° ସମà­à¬ªà¬¾à¬¦à¬¨à¬¾ ନିମନà­à¬¤à­‡ ଅନà­à¬®à¬¤à¬¿ ମିଳିନାହିà¬, କାରଣ à¬à¬¥à¬¿à¬°à­‡ ଆଉଜଣେ ସଭà­à­Ÿà¬™à­à¬•à¬° ବà­à­Ÿà¬•à­à¬¤à¬¿à¬—ତ ସଜାଣି ରହିଅଛି ।',
+'customjsprotected' => 'ଆପଣଙà­à¬•à­ à¬à¬¹à¬¿ ଜାଭାସà­à¬•à­à¬°à¬¿à¬ªà­à¬Ÿ ପୃଷà­à¬ à¬¾à¬° ସମà­à¬ªà¬¾à¬¦à¬¨à¬¾ ନିମନà­à¬¤à­‡ ଅନà­à¬®à¬¤à¬¿ ମିଳିନାହିà¬, କାରଣ à¬à¬¥à¬¿à¬°à­‡ ଆଉଜଣେ ସଭà­à­Ÿà¬™à­à¬•à¬° ବà­à­Ÿà¬•à­à¬¤à¬¿à¬—ତ ସଜାଣି ରହିଅଛି ।',
'ns-specialprotected' => 'ବିଶେଷ ପୃଷà­à¬ à¬¾à¬¸à¬¬à­à¬•à­ ବଦଳାଯାଇପାରିବ ନାହିଠ।',
'titleprotected' => 'à¬à¬¹à¬¿ ନାମଟି [[User:$1|$1]]ଙà­à¬• ଦେଇ ନୂଆ ତିଆରିହେବାରୠକିଳାଯାଇଅଛି ।
à¬à¬¹à¬¾à¬° କାରଣ ହେଲା "\'\'$2\'\'" ।',
@@ -440,6 +662,7 @@ $2',
'createaccount' => 'ନà­à¬† ଖାତା ଖୋଲିବା',
'gotaccount' => 'ଆଗରୠଖାତାଟିଠଅଛି କି? $1.',
'gotaccountlink' => 'ଲଗଇନ',
+'userlogin-resetlink' => 'ଲଗଇନ ତଥà­à­Ÿ ସବୠଭà­à¬²à¬¿à¬—େଲେକି?',
'createaccountmail' => 'ଇ-ମେଲ ରà­',
'createaccountreason' => 'କାରଣ:',
'badretype' => 'ଆପଣ ଦେଇଥିବା ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿ ମେଳଖାଉନାହିଠ।',
@@ -453,12 +676,16 @@ $2',
'nocookieslogin' => '{{SITENAME}} ସଭà­à­Ÿ ମାନଙà­à¬•à­ ଲଗ ଇନ କରାଇବା ପାଇଠକà­à¬•à¬¿ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରିଥାଠ।
ଆପଣଙà­à¬•à¬° କà­à¬•à¬¿ ଅଚଳ ହୋଇଅଛି ।
ଦୟାକରି ତାହାକୠସଚଳ କରି ଆଉଥରେ ଚେଷà­à¬Ÿà¬¾ କରନà­à¬¤à­ ।',
+'nocookiesfornew' => 'ଯେହେତୠଆମà­à¬­à­‡ à¬à¬¹à¬¾à¬° ମୂଳାଧାର ଜାଣିପାରିଲୠନାହିଠà¬à¬¹à¬¿ ଇଉଜର ଖାତାଟି ତିଆରି କରାଗଲା ନାହିଠ।
+ଥୟ କରନà­à¬¤à­ କି ଆପଣ କà­à¬•à¬¿ ସଚଳ କରିଅଛନà­à¬¤à¬¿, ପୃଷà­à¬ à¬¾à¬Ÿà¬¿à¬•à­ ଆଉଥରେ ଲୋଡ଼ କରି ଚେଷà­à¬Ÿà¬¾ କରନà­à¬¤à­ ।',
'noname' => 'ଆପଣ ଗୋଟିଠବୈଧ ଇଉଜର ନାମ ଦେଇନାହାନà­à¬¤à¬¿ ।',
'loginsuccesstitle' => 'ଠିକଭାବେ ଲଗଇନ ହେଲା',
'loginsuccess' => "'''ଆପଣ {{SITENAME}}ରେ \"\$1\" ଭାବରେ ଲଗଇନ କରିଛନà­à¬¤à¬¿ ।'''",
'nosuchuser' => '"$1" ନାମରେ କେହି ଜଣେ ବି ସଭà­à­Ÿ ନାହାନà­à¬¤à¬¿ ।
ଇଉଜର ନାମ ଇଂରାଜୀ ଛୋଟ ଓ ବଡ଼ ଅକà­à¬·à¬° ପà­à¬°à¬¤à¬¿ ସମà­à¬¬à­‡à¬¦à¬¨à¬¶à­€à¬³ ।
ଆପଣ ନିଜର ବନାନ ପରଖି ନିଅନà­à¬¤à­, ଅଥବା [[Special:UserLogin/signup|ନୂଆ ଖାତାଟିଠତିଆରି କରନà­à¬¤à­]] ।',
+'nosuchusershort' => '"$1" ନାମରେ କେହି ଜଣେ ବି ସଭà­à­Ÿ ନାହାନà­à¬¤à¬¿ ।
+ଆପଣ ବନାନ ପରଖି ନିଅନà­à¬¤à­ ।',
'nouserspecified' => 'ଆପଣଙà­à¬•à­ ଇଉଜର ନାମଟିଠଦେବାକୠପଡ଼ିବ ।',
'login-userblocked' => 'à¬à¬¹à¬¿ ସଭà­à­Ÿà¬™à­à¬•à­ ଅଟକାଯାଇଛି । ଲଗ ଇନ କରିବାକୠଅନà­à¬®à¬¤à¬¿ ନାହିଠ।',
'wrongpassword' => 'ଦିଆଯାଇଥିବା ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿ ଭà­à¬² ଅଟେ ।
@@ -508,13 +735,14 @@ continue using your old password.',
'usernamehasherror' => 'ଇଉଜର ନାମରେ ହାସ ଅକà­à¬·à¬° (hash characters) ରହି ପାରିବନାହିà¬',
'login-throttled' => 'ଆପଣ ବହୠଥର ଲଗ ଇନ କରିବାର ଉଦà­à­Ÿà¬® କରିଅଛନà­à¬¤à¬¿ ।
ଦୟାକରି ଆଉଥରେ ଚେଷà­à¬Ÿà¬¾ କରିବା ଆଗରୠକିଛି କାଳ ଅପେକà­à¬· କରନà­à¬¤à­ ।',
+'login-abort-generic' => 'ଆପଣଙà­à¬• ଲଗ ଇନ ଅସଫଳ ହେଲା - ନାକଚ କରିଦିଆଗଲା',
'loginlanguagelabel' => 'ଭାଷା: $1',
'suspicious-userlogout' => 'ଲଗ ଆଉଟ କରିବା ନିମନà­à¬¤à­‡ ଆପଣ କରିଥିବା ଆବେଦନ ନାକଚ କରିଦିଆଗଲା କାରଣ ଲାଗà­à¬…ଛି ଯେ à¬à¬¹à¬¾ à¬à¬• ଅସà­à¬¥à¬¿à¬° ବà­à¬°à¬¾à¬‰à¬œà¬°à¬°à­ ପଠାଯାଇଅଛି ଅବା ପà­à¬°à¬•à­à¬¸à¬¿ ଧରାଯାଇଅଛି ।',
# E-mail sending
'php-mail-error-unknown' => 'PHP ର ମେଲ() କାମରେ ଅଜଣା ଅସà­à¬¬à¬¿à¬§à¬¾ ।',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ପାସବାରà­à¬¡à¬¼ ବଦଳାନà­à¬¤à­',
'resetpass_announce' => 'ଆପଣ à¬à¬• ଅସà­à¬¥à¬¾à­Ÿà­€ ଇ-ମେଲରେ ଯାଇଥିବା କୋଡ଼ ସହାୟତାରେ ଲଗ ଇନ କରିଅଛନà­à¬¤à¬¿ ।
ଲଗ ଇନ ଶେଷ କରିବା ନିମନà­à¬¤à­‡ ଆପଣଙà­à¬•à­ à¬à¬¹à¬¿à¬ à¬¾à¬°à­‡ ନୂଆ ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿à¬ ଦେବାକୠପଡ଼ିବ:',
@@ -533,6 +761,37 @@ continue using your old password.',
ଆପଣ ବୋଧ ହà­à¬ ଆଗରୠସଫଳ ଭାବରେ ନିଜର ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿ ବଦଳାଇଦେଇଛନà­à¬¤à¬¿ ବା ନୂଆ ଅସà­à¬¥à¬¾à­Ÿà­€ ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿à¬ ପାଇଠଆବେଦନ କରିଅଛନà­à¬¤à¬¿ ।',
'resetpass-temp-password' => 'ଅସà­à¬¥à¬¾à­Ÿà­€ ପାସବାରà­à¬¡à¬¼:',
+# Special:PasswordReset
+'passwordreset' => 'ପାସୱିରà­à¬¡ ପà­à¬¨à¬ƒ ସà­à¬¥à¬¾à¬ªà¬¨ କରନà­à¬¤à­',
+'passwordreset-text' => 'ନିଜ ଖାତାର ସବିଶେଷ ବିବରଣୀ à¬à¬• ଇ-ମେଲରେ ପାଇବା ପାଇଠà¬à¬¹à¬¿ ଆବେଦନ ପତà­à¬°à¬Ÿà¬¿ ପୂରଣ କରନà­à¬¤à­ ।',
+'passwordreset-legend' => 'ପାସୱିରà­à¬¡ ପà­à¬¨à¬ƒ ସà­à¬¥à¬¾à¬ªà¬¨ କରନà­à¬¤à­',
+'passwordreset-disabled' => 'ପାସବାରà­à¬¡à¬¼à¬•à­ ପà­à¬°à¬¾à¬ªà­à¬°à¬¿ ମୂଳକୠଫେରାଇବା à¬à¬¹à¬¿ ଉଇକିରେ ଅଚଳ କରାଯାଇଅଛି ।',
+'passwordreset-pretext' => '{{PLURAL:$1||ତଳେ ଥିବା ତଥà­à­Ÿà¬¸à¬®à­‚ହରୠକୌଣସି ଗୋଟିଠଦିଅନà­à¬¤à­}}',
+'passwordreset-username' => 'ବà­à­Ÿà¬¬à¬¾à¬¹à¬°à¬•à¬¾à¬°à­€à¬™à­à¬•à¬° ନାଆà¬:',
+'passwordreset-domain' => 'ଡୋମେନ:',
+'passwordreset-email' => 'ଇ-ମେଲ ଠିକଣା:',
+'passwordreset-emailtitle' => '{{SITENAME}} ର ଖାତା ସବିଶେଷ',
+'passwordreset-emailtext-ip' => 'କେହି ଜଣେ (ବୋଧେ ଆପଣ, $1 IP ଠିକଣାରà­)
+{{SITENAME}} ($4) ସାଇଟରେ ଥିବା ଆପଣଙà­à¬• ଖାତାର ସବିଶେଷ ଜାଣିବାକୠଅନà­à¬°à­‹à¬§ କରିଛନà­à¬¤à¬¿ । à¬à¬¹à¬¿ ଇମେଲ ଠିକଣା ସହିତ ତଳଲିଖିତ ବà­à­Ÿà¬¬à¬¹à¬¾à¬°à¬•à¬¾à¬°à­€à¬™à­à¬• {{PLURAL:$3|ଖାତା|ଖାତାସମୂହ}} ଯୋଡ଼ା:
+
+$2
+
+{{PLURAL:$3|à¬à¬¹à¬¿ ଅସà­à¬¥à¬¾à­Ÿà­€ ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿|à¬à¬¹à¬¿ ଅସà­à¬¥à¬¾à­Ÿà­€ ପାସବାରà­à¬¡à¬¼à¬¸à¬¬à­}} {{PLURAL:$5|ଦିନକରେ|$5 ଦିନରେ ଅଚଳ}} ହୋଇଯିବ ।
+ଆପଣ à¬à¬¬à­‡ ଲଗ ଇନ କରି ନୂଆ ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿à¬ ବାଛନà­à¬¤à­ । ଯହି ଆଉ କେହି ଜଣେ à¬à¬¹à¬¿ ଅନà­à¬°à­‹à¬§ କରିଥାନà­à¬¤à¬¿
+କିମà­à¬¬à¬¾ ଆପଣ à¬à¬¬à­‡ ନିଜର ମୂଳ ପାସବାରà­à¬¡à¬¼ ମନେ ପକାଇ ପାରିଥାନà­à¬¤à¬¿ ତେବେ à¬à¬¹à¬¿ ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿à¬•à­ ଆଉ ବଦଳାଇବା ଲୋଡ଼ା ନାହିଠ।
+ଆପଣ ନିଜ ପà­à¬°à­à¬£à¬¾ ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿ ଆଗପରି ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରିପାରନà­à¬¤à¬¿ ।',
+'passwordreset-emailtext-user' => '{{SITENAME}}ରେ ଥିବା ବà­à­Ÿà­Ÿà¬¬à¬¹à¬¾à¬°à¬•à¬¾à¬°à­€ $1 {{SITENAME}} ($4) ସାଇଟରେ ଥିବା ଆପଣଙà­à¬• ଖାତାର ସବିଶେଷ ଜାଣିବାକୠଅନà­à¬°à­‹à¬§ କରିଛନà­à¬¤à¬¿ । à¬à¬¹à¬¿ ଇମେଲ ଠିକଣା ସହିତ ତଳଲିଖିତ ବà­à­Ÿà¬¬à¬¹à¬¾à¬°à¬•à¬¾à¬°à­€à¬™à­à¬• {{PLURAL:$3|ଖାତା|ଖାତାସମୂହ}} ଯୋଡ଼ା:
+
+$2
+
+{{PLURAL:$3|à¬à¬¹à¬¿ ଅସà­à¬¥à¬¾à­Ÿà­€ ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿|à¬à¬¹à¬¿ ଅସà­à¬¥à¬¾à­Ÿà­€ ପାସବାରà­à¬¡à¬¼à¬¸à¬¬à­}} {{PLURAL:$5|ଦିନକରେ|$5 ଦିନରେ ଅଚଳ}} ହୋଇଯିବ ।
+ଆପଣ à¬à¬¬à­‡ ଲଗ ଇନ କରି ନୂଆ ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿à¬ ବାଛନà­à¬¤à­ । ଯହି ଆଉ କେହି ଜଣେ à¬à¬¹à¬¿ ଅନà­à¬°à­‹à¬§ କରିଥାନà­à¬¤à¬¿
+କିମà­à¬¬à¬¾ ଆପଣ à¬à¬¬à­‡ ନିଜର ମୂଳ ପାସବାରà­à¬¡à¬¼ ମନେ ପକାଇ ପାରିଥାନà­à¬¤à¬¿ ତେବେ à¬à¬¹à¬¿ ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿à¬•à­ ଆଉ ବଦଳାଇବା ଲୋଡ଼ା ନାହିଠ।
+ଆପଣ ନିଜ ପà­à¬°à­à¬£à¬¾ ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿ ଆଗପରି ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରିପାରନà­à¬¤à¬¿ ।',
+'passwordreset-emailelement' => 'ଇଉଜର ନାମ: $1
+ଅସà­à¬¥à¬¾à­Ÿà­€ ପାସବାରà­à¬¡à¬¼: $2',
+'passwordreset-emailsent' => 'à¬à¬• ମନେପକାଇବା ଇ-ମେଲ ପଠାଇଦିଆଯାଇଅଛି ।',
+
# Edit page toolbar
'bold_sample' => 'ମୋଟା ଲେଖା',
'bold_tip' => 'ମୋଟା ଲେଖା',
@@ -544,8 +803,6 @@ continue using your old password.',
'extlink_tip' => 'ବାହାର ଲିଙà­à¬• (http:// ଆଗରେ ଲଗାଇବାକୠମନେରଖିଥିବେ)',
'headline_sample' => 'ଶିରୋନାମା ଲେଖା',
'headline_tip' => '୨କ ଆକାରର ମୂଳଧାଡ଼ି',
-'math_sample' => 'à¬à¬ à¬¿ ଫରମà­à¬²à¬¾ ପà­à¬°à¬¾à¬…',
-'math_tip' => 'ଗାଣିତିକ ସà­à¬¤à¬° (ଲାଟେକà­à¬¸)',
'nowiki_sample' => 'ଅସଜଡ଼ା ଲେଖା à¬à¬ à¬¾à¬°à­‡ ଭରିବେ',
'nowiki_tip' => 'ଉଇକି ସଜାଣି ବିନା',
'image_tip' => 'à¬à¬®à¬¬à­‡à¬¡à¬¼ ହୋଇ ଥିବା ଫାଇଲ',
@@ -607,6 +864,8 @@ continue using your old password.',
ଆପଣ [[Special:Search/{{PAGENAME}}|à¬à¬¹à¬¿ ଲେଖାଟିର ନାଆà¬]] ବାକି ପୃଷà­à¬ à¬¾à¬®à¬¾à¬¨à¬™à­à¬•à¬°à­‡ ଖୋଜି ପାରନà­à¬¤à¬¿,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}ରେ ଯୋଡ଼ାଯାଇଥିବା ବାକି ପୃଷà­à¬ à¬¾à¬¸à¬¬à­à¬•à­ ଖୋଜି ପାରନà­à¬¤à¬¿],
କିମà­à¬¬à¬¾ [{{fullurl:{{FULLPAGENAME}}|action=edit}} à¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿à¬•à­ ବଦଳାଇ ପାରନà­à¬¤à¬¿]</span> ।',
+'userpage-userdoesnotexist' => 'ଇଉଜର ଖାତା "$1" ଟି ତିଆରି କରାଯାଇନାହିଠ।
+ଆପଣ à¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿à¬•à­ ତିଆରି କରିବାକୠଚାହାନà­à¬¤à¬¿ କି ନାହିଠଦୟାକରି ପରଖି ନିଅନà­à¬¤à­ ।',
'userpage-userdoesnotexist-view' => 'ଇଉଜର ନାମ "$1"ଟି ତିଆରି କରାଯାଇ ନାହିଠ।',
'blocked-notice-logextract' => 'à¬à¬¹à¬¿ ସଭà­à­Ÿà¬™à­à¬•à­ à¬à¬¬à­‡ ପାଇଠଅଟକାଯାଇଅଛି ।
ଆପଣଙà­à¬• ଜାଣିବା ନିମନà­à¬¤à­‡ ନଗଦ ଲଗ ଇତିହାସ ତଳେ ଦିଆଗଲା ।',
@@ -908,12 +1167,13 @@ $1",
'search-external' => 'ବାହାରେ ଖୋଜା',
# Quickbar
-'qbsettings' => 'ସହଳ ପଟି (Quickbar)',
-'qbsettings-none' => 'କିଛି ନାହିà¬',
-'qbsettings-fixedleft' => 'ବାମକୠଥୟ କରାଗଲା',
-'qbsettings-fixedright' => 'ଡାହାଣକୠଥୟ କରାଗଲା',
-'qbsettings-floatingleft' => 'ବାମରେ ଭାସନà­à¬¤à¬¾',
-'qbsettings-floatingright' => 'ଡାହାଣରେ ଭାସନà­à¬¤à¬¾',
+'qbsettings' => 'ସହଳ ପଟି (Quickbar)',
+'qbsettings-none' => 'କିଛି ନାହିà¬',
+'qbsettings-fixedleft' => 'ବାମକୠଥୟ କରାଗଲା',
+'qbsettings-fixedright' => 'ଡାହାଣକୠଥୟ କରାଗଲା',
+'qbsettings-floatingleft' => 'ବାମରେ ଭାସନà­à¬¤à¬¾',
+'qbsettings-floatingright' => 'ଡାହାଣରେ ଭାସନà­à¬¤à¬¾',
+'qbsettings-directionality' => 'ଆପଣଙà­à¬• ଭାଷାର ବାମ-ଡାହାଣ ଲିଖନ ଶୈଳୀ ଅନà­à¬¸à¬¾à¬°à­‡ ସଜାଡ଼ି ଦିଆଗଲା',
# Preferences page
'preferences' => 'ପସନà­à¬¦',
@@ -925,7 +1185,9 @@ $1",
'prefs-skin' => 'ବାହାର ଆବରଣ',
'skin-preview' => 'ଦେଖଣା',
'datedefault' => 'କୌଣସି ପସନà­à¬¦ ନାହିà¬',
+'prefs-beta' => 'Beta କାମସବà­à¬¨à­',
'prefs-datetime' => 'ତାରିଖ ଓ ସମୟ',
+'prefs-labs' => 'ପରଖଶାଳା ସà­à¬¬à¬¿à¬§à¬¾à¬¸à¬¬à­',
'prefs-personal' => 'ସଭà­à­Ÿ ପà­à¬°à¬«à¬¾à¬‡à¬²',
'prefs-rc' => 'ନଗଦ ବଦଳ',
'prefs-watchlist' => 'ଦେଖଣା ତାଲିକା',
@@ -947,8 +1209,6 @@ $1",
'columns' => 'ସà­à¬¤à¬®à­à¬­à¬¸à¬¬à­:',
'searchresultshead' => 'ଖୋଜିବା',
'resultsperpage' => 'ପୃଷà­à¬ à¬¾ ପà­à¬°à¬¤à¬¿ ହିଟ:',
-'contextlines' => 'ଧାଡ଼ି ପà­à¬°à¬¤à¬¿ ହିଟ :',
-'contextchars' => 'ଧାଡ଼ି ପà­à¬°à¬¤à¬¿ ପà­à¬°à¬¸à¬™à­à¬—:',
'stub-threshold' => '<a href="#" class="stub">ମà­à¬£à­à¬¡à¬¿à¬† ପୃଷà­à¬ à¬¾ ଲିଙà­à¬•</a> ସଜାଣି (ବାଇଟ) ପାଇଠସୀମା:',
'stub-threshold-disabled' => 'ଅଚଳ କରିଦିଆଯାଇଛି',
'recentchangesdays' => 'ନଗଦ ବଦଳରେ ଦେଖାଇବା ପାଇଠବାକିଥିବା ଦିନ:',
@@ -958,6 +1218,7 @@ $1",
'savedprefs' => 'ଆପଣଙà­à¬• ପସନà­à¬¦à¬¸à¬¬à­ ସାଇତାଗଲା ।',
'timezonelegend' => 'ସମୟ ମଣà­à¬¡à¬³:',
'localtime' => 'ସà­à¬¥à¬¾à¬¨à­€à­Ÿ ସମୟ:',
+'timezoneuseserverdefault' => 'ଉଇକିର ଆପେଆପେ ଆସà­à¬¥à¬¿à¬¬à¬¾ ($1) ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରିବେ',
'timezoneuseoffset' => 'ବାକି (ଅଫସେଟ ସà­à¬¥à¬¿à¬° କରନà­à¬¤à­)',
'timezoneoffset' => 'ଅଫସେଟ¹:',
'servertime' => 'ସରà­à¬­à¬° ସମୟ:',
@@ -1008,6 +1269,9 @@ HTML ଟାଗ ପରଖିନିଅନà­à¬¤à­ ।',
'email' => 'ଇ-ମେଲ',
'prefs-help-realname' => 'ପà­à¬°à¬•à­ƒà¬¤ ନାମ ଦେବା ଆପଣଙà­à¬• ଉପରେ ନିରà­à¬­à¬° କରେ ।
ଯଦି ଆପଣ à¬à¬¹à¬¾ ଦିଅନà­à¬¤à¬¿, ତେବେ à¬à¬¹à¬¾ ଆପଣଙà­à¬• କାମ ପାଇଠଶà­à¬°à­‡à­Ÿ ଦେବାରେ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରାଯାଇପାରିବ ।',
+'prefs-help-email' => 'ଇ-ମେଲ ଠିକଣାଟି ଇଚà­à¬›à¬¾à¬§à­€à¬¨, କିନà­à¬¤à­ ଆପଣ ପାସବାରà­à¬¡à¬¼à¬Ÿà¬¿ ଯଦି ଭà­à¬²à¬¿à¬—ଲେ ତାହା ଆଉଥରେ ତିଆରିବା ପାଇଠà¬à¬¹à¬¾ କାମରେ ଲାଗିବ ।',
+'prefs-help-email-others' => 'ଆପଣ ନିଜର ଇ-ମେଲଟିଠନିଜର ସଭà­à­Ÿ ବା ଆଲୋଚନା ପୃଷà­à¬ à¬¾à¬°à­‡ ଦେଇ ଅନà­à­Ÿà¬®à¬¾à¬¨à¬™à­à¬•à­ ଇ-ମେଲରେ ଯୋଗଯୋଗ କରିବାର ସà­à¬¬à¬¿à¬§à¬¾ ଦେଇପାରିବେ ।
+ଆପଣଙà­à¬•à­ କେହି ମେଲ କଲେ ଆପଣଙà­à¬• ଇ-ମେଲ ତାହାଙà­à¬•à­ ଦେଖାଯିବ ନାହିଠ।',
'prefs-help-email-required' => 'ଇ-ମେଲ ଠିକଣାଟି ଲୋଡ଼ା ।',
'prefs-info' => 'ସାଧାରଣ ଜାଣିବା କଥା',
'prefs-i18n' => 'ଜଗତୀକରଣ',
@@ -1026,7 +1290,7 @@ HTML ଟାଗ ପରଖିନିଅନà­à¬¤à­ ।',
# User preference: e-mail validation using jQuery
'email-address-validity-valid' => 'ଇ-ମେଲ ଠିକଣା ବୈଧ ଭଳି ଲାଗà­à¬…ଛି',
-'email-address-validity-invalid' => 'à¬à¬• ବୈଧ ଇ-ମେଲ ଠିକଣା ଦିଅନà­à¬¤à­',
+'email-address-validity-invalid' => 'à¬à¬• ସଠିକ ଇ-ମେଲ ଠିକଣା ଦିଅନà­à¬¤à­',
# User rights
'userrights' => 'ସଭà­à­Ÿ ଅଧିକାର ପରିଚାଳନା',
@@ -1131,10 +1395,11 @@ HTML ଟାଗ ପରଖିନିଅନà­à¬¤à­ ।',
'right-sendemail' => 'ବାକି ସଭà­à­Ÿ ମାନଙà­à¬•à­ ଇ-ମେଲ ପଠାଇବେ',
# User rights log
-'rightslog' => 'ସଭà­à­Ÿà¬™à­à¬• ଅଧିକାରର ଲଗ',
-'rightslogtext' => 'ସଭà­à­Ÿà¬™à­à¬• ଅଧିକାରର ବଦଳର à¬à¬¹à¬¾ à¬à¬• ଇତିହାସ ।',
-'rightslogentry' => '$1 ପାଇଠଗୋଠ ସଭà­à­Ÿà¬ªà¬¦à¬° ଅବସà­à¬¥à¬¾ $2 ରୠ$3କୠବଦଳାଇଦିଆଗଲା',
-'rightsnone' => '(କିଛି ନାହିà¬)',
+'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' => 'à¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿ ପଢ଼ିବେ',
@@ -1249,6 +1514,7 @@ HTML ଟାଗ ପରଖିନିଅନà­à¬¤à­ ।',
'illegalfilename' => '"$1" ନାମରେ ଥିବା ଫାଇଲର ନାମରେ ଥିବା ଅକà­à¬·à¬° ପୃଷà­à¬ à¬¾ ଶିରୋନାମାରେ ରଖିବା ପାଇଠଅନà­à¬®à­‹à¬¦à¬¿à¬¤ ନà­à¬¹à­‡à¬ ।
ଦୟାକରି ଫାଇଲର ନାମଟି ବଦଳାନà­à¬¤à­ ଓ ଆଉଥରେ ଅପଲୋଡ଼ କରନà­à¬¤à­ ।',
'badfilename' => 'ଫାଇଲ ନାମ "$1"କୠବଦଳାଇ ଦିଆଯାଇଛି ।',
+'filetype-mime-mismatch' => 'ଫାଇଲ à¬à¬•à­à¬¸à¬Ÿà­‡à¬¨à¬¸à¬¨ ".$1" ଚିହà­à¬¨à¬Ÿ ହୋଇଥିବା MIME ଫାଇଲ ପà­à¬°à¬•à¬¾à¬° ସଙà­à¬—à­‡ ମେଳ ଖାଉନାହିଠ($2) ।',
'filetype-badmime' => '"$1" MIME ପà­à¬°à¬•à¬¾à¬°à¬° ଫାଇଲ ଅପଲୋଡ଼ କରିବା ଅନà­à¬®à­‹à¬¦à¬¿à¬¤ ନà­à¬¹à­‡à¬ ।',
'filetype-bad-ie-mime' => 'à¬à¬¹à¬¿ ଫାଇଲଟି ଅପଲୋଡ଼ କରାଯାଇପାରିବ ନାହିଠକାରଣ ଇଣà­à¬Ÿà¬°à¬¨à­‡à¬Ÿ à¬à¬•à­à¬¸à¬ªà­à¬²à­‹à¬°à¬° à¬à¬¹à¬¾à¬•à­ "$1" ବୋଲି ଚିହà­à¬¨à¬Ÿ କରିବ, ଯାହାକି à¬à¬• ଅନନà­à¬®à­‹à¬¦à¬¿à¬¤ ଓ ସମà­à¬­à¬¾à¬¬à¬¿à¬¤ ବିପଦଜନକ ଫାଇଲ ପà­à¬°à¬•à¬¾à¬° ।',
'filetype-unwanted-type' => "'''\".\$1\"''' à¬à¬• ଅଦରକାରୀ ଫାଇଲ ପà­à¬°à¬•à¬¾à¬° ।
@@ -1271,6 +1537,7 @@ HTML ଟାଗ ପରଖିନିଅନà­à¬¤à­ ।',
'emptyfile' => 'ଆପଣ ଅପଲୋଡ଼ କରିଥିବା ଫାଇଲଟି ଫାଙà­à¬•à¬¾ ବୋଲି ବୋଧ ହà­à¬ ।
à¬à¬¹à¬¾ ହà­à¬à¬¤ ଫାଇଲ ନାମରେ କିଛି ଭà­à¬² ଜନିତ ହୋଇଥାଇପାରେ ।
ସତରେ ଆପଣ à¬à¬¹à¬¿ ଫାଇଲଟି ଅପଲୋଡ଼ କରିବାକୠଚାହାନà­à¬¤à¬¿ କି ନାଠଠାରେ ପରଖି ନିଅନà­à¬¤à­ ।',
+'windows-nonascii-filename' => 'à¬à¬¹à¬¿ ଉଇକି ବିଶେଷ ସଂକେତ ଥିବା ଫାଇଲ ନାମକୠଅନà­à¬®à¬¤à¬¿ ଦିଠନାହିଠ।',
'fileexists' => "à¬à¬¹à¬¿ à¬à¬•à¬¾ ନାଆà¬à¬°à­‡ ଆଗରୠଫାଇଲଟିଠଅଛି , ସତରେ ଆପଣ à¬à¬¹à¬¾à¬•à­ ଅପଲୋଡ଼ କରିବାକୠଚାହାନà­à¬¤à¬¿ କି ନାଠଦୟାକରି '''<tt>[[:$1]]</tt>''' ପରଖି ନିଅନà­à¬¤à­ ।
[[$1|thumb]]",
'filepageexists' => "à¬à¬¹à¬¿ ଫାଇଲର ବିବରଣୀ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿ '''<tt>[[:$1]]</tt>''' ଠାରେ ତିଆରି କରାଯାଇଅଛି, କିନà­à¬¤à­ à¬à¬¹à¬¿ ନାମରେ ଗୋଟିଠବି ଫାଇଲ ନାହିଠ।
@@ -1331,6 +1598,22 @@ $1',
'upload-unknown-size' => 'ଅଜଣା ଆକାର',
'upload-http-error' => 'HTTP ଅସà­à¬¬à¬¿à¬§à¬¾à¬Ÿà¬¿à¬ ଘଟିଲା: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'ZIP ପରଖିବା ପାଇଠଫାଇଲଟି ଖୋଲିଲା ବେଳେ ଅସà­à¬¬à¬¿à¬§à¬¾à¬Ÿà¬¿à¬ ଘଟିଲା ।',
+'zip-wrong-format' => 'ଦିଆଯାଇଥିବା ଫାଇଲଟି à¬à¬• ZIP ଫାଇଲ ନà­à¬¹à­‡à¬ ।',
+'zip-bad' => 'à¬à¬¹à¬¾ à¬à¬• ବିଗିଡ଼ି ଯାଇଥିବା ଫାଇଲ ବା ପଢ଼ାଯାଇପାରà­à¬¨à¬¥à¬¿à¬¬à¬¾ ZIP ଫାଇଲ ।
+à¬à¬¹à¬¾à¬•à­ ପà­à¬°à¬¤à¬¿à¬°à¬•à­à¬·à¬¾ ନିମନà­à¬¤à­‡ ଠିକ ଭାବେ ପରଖା ଯାଇପାରିବ ନାହିଠ।',
+'zip-unsupported' => 'à¬à¬¹à¬¾ à¬à¬• ZIP ଫାଇଲ ଯାହା ZIP ବିଶେଷତା ସବୠବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରିଥାଠଓ ମିଡ଼ିଆଉଇକି ଦେଇ ଅନà­à¬®à­‹à¬¦à¬¿à¬¤ ନà­à¬¹à­‡à¬ ।
+à¬à¬¹à¬¾ ଠିକ ଭାବେ ପà­à¬°à¬¤à¬¿à¬°à¬•à­à¬·à¬¾ ପାଇଠପରଖା ଯାଇପାରିବ ନାହିଠ।',
+
+# Special:UploadStash
+'uploadstash' => 'ଭଣà­à¬¡à¬¾à¬° ଅପଲୋଡ଼ କରିବେ',
+'uploadstash-clear' => 'ଲà­à¬šà¬¾à¬¯à¬¾à¬‡à¬¥à¬¿à¬¬à¬¾ ଭଣà­à¬¡à¬¾à¬° ଫାଇଲ ସବà­à¬•à­ ସଫା କରିଦେବେ',
+'uploadstash-nofiles' => 'ଆପଣଙà­à¬• ପାଖରେ ଗୋଟିଠବି ଲà­à¬šà¬¾à¬¯à¬¾à¬‡à¬¥à¬¿à¬¬à¬¾ ଭଣà­à¬¡à¬¾à¬°à¬° ଫାଇଲ ନାହିଠ।',
+'uploadstash-badtoken' => 'ସେହି କାମଟି କରିବାରେ ଅସଫଳ ହେଲà­, ବୋଧେ ଆପଣଙà­à¬• ଇଉଜର ନାମ ଓ ପାସବାରà­à¬¡à¬¼ ଆଦିର ମିଆଦ ପà­à¬°à¬¿à¬—ଲାଣି । ଆଉଥରେ ଚେଷà­à¬Ÿà¬¾ କରନà­à¬¤à­ ।',
+'uploadstash-errclear' => 'ଫାଇଲମାନଙà­à¬•à¬° ଲିଭାଇବା ଅସଫଳ ରହିଲା ।',
+'uploadstash-refresh' => 'ଫାଇଲମାନଙà­à¬•à¬° ତାଲିକାକୠସତେଜ କରିବେ',
+
# img_auth script messages
'img-auth-accessdenied' => 'ଭିତରକୠପଶିବାକୠବାରଣ କରାଗଲା',
'img-auth-nopathinfo' => 'PATH_INFO ମିଳà­à¬¨à¬¾à¬¹à¬¿à¬ ।
@@ -1403,6 +1686,7 @@ URLଟି ଠିକ ଅଚିକି କି ନାଠଓ ସାଇଟଟି ସà
'linkstoimage' => 'à¬à¬¹à¬¿ ସବà­{{PLURAL:$1|ପୃଷà­à¬ à¬¾|$1 ପୃଷà­à¬ à¬¾à¬¸à¬¬à­}} à¬à¬¹à¬¿ ଫାଇଲଟିକୠଯୋଡ଼ିଥାନà­à¬¤à¬¿:',
'nolinkstoimage' => 'à¬à¬¹à¬¿ ଫାଇଲ ସହିତ ଯୋଡ଼ା ଗୋଟିଠବି ପୃଷà­à¬ à¬¾ ନାହିଠ।',
'morelinkstoimage' => 'à¬à¬¹à¬¿ ଫାଇଲ ସହିତ ଯୋଡ଼ା [[Special:WhatLinksHere/$1|ଆହà­à¬°à¬¿ ଅଧିକ ଲିଙà­à¬•]] ଦେଖନà­à¬¤à­ ।',
+'linkstoimage-redirect' => '$1 (ଫାଇଲ ଅନà­à¬ªà­à¬°à­‡à¬°à¬£) $2',
'duplicatesoffile' => 'ତଳଲିଖିତ {{PLURAL:$1|ଫାଇଲଟି à¬à¬¹à¬¿ ଫାଇଲର à¬à¬• ନକଲ|$1 ଫାଇଲସବୠà¬à¬¹à¬¿ ଫାଇଲର ନକଲ ଅଟନà­à¬¤à¬¿}} ([[Special:FileDuplicateSearch/$2|ଅଧିକ ସବିଶେଷ]]):',
'sharedupload' => 'à¬à¬¹à¬¿ ଫାଇଲଟି $1 ରୠଆଉ ବାକି ପà­à¬°à¬•à¬³à­à¬ªà¬°à­‡ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରାଯାଇପାରିବ .',
'sharedupload-desc-there' => 'à¬à¬¹à¬¿ ଫାଇଲଟି $1 ଠାରୠଓ ବାକି ପà­à¬°à¬•à¬³à­à¬ªà¬°à­‡ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° ହୋଇପାରେ ।
@@ -1491,10 +1775,11 @@ URLଟି ଠିକ ଅଚିକି କି ନାଠଓ ସାଇଟଟି ସà
'disambiguations' => 'ବହà­à¬¬à¬¿à¬•à¬³à­à¬ª ପୃଷà­à¬ à¬¾à¬®à¬¾à¬¨',
'disambiguationspage' => 'Template:ବହà­à¬¬à¬¿à¬•à¬³à­à¬ª',
-'doubleredirects' => 'ଯୋଡ଼ା ପà­à¬¨à¬ªà­à¬°à­‡à¬°à¬£',
-'double-redirect-fixed-move' => '[[$1]]କୠଘà­à¬žà­à¬šà¬¾à¬¯à¬¾à¬‡à¬…ଛି ।
+'doubleredirects' => 'ଯୋଡ଼ା ପà­à¬¨à¬ªà­à¬°à­‡à¬°à¬£',
+'double-redirect-fixed-move' => '[[$1]]କୠଘà­à¬žà­à¬šà¬¾à¬¯à¬¾à¬‡à¬…ଛି ।
à¬à¬¬à­‡ à¬à¬¹à¬¾ [[$2]]କୠପà­à¬¨à¬ªà­à¬°à­‡à¬°à¬¿à¬¤ ହୋଇଥାଠ।',
-'double-redirect-fixer' => 'ପà­à¬¨à¬ªà­à¬°à­‡à¬°à¬£ ସà­à¬§à¬¾à¬°à¬•',
+'double-redirect-fixed-maintenance' => '[[$1]] ରୠ[[$2]] କୠଦà­à¬‡à¬Ÿà¬¿ ପà­à¬¨à¬ªà­à¬°à­‡à¬°à¬£à¬°à­‡ ଥିବା ଅସà­à¬¬à¬¿à¬§à¬¾ ସà­à¬§à¬¾à¬°à¬¿à¬¦à­‡à¬²à­à¬ ।',
+'double-redirect-fixer' => 'ପà­à¬¨à¬ªà­à¬°à­‡à¬°à¬£ ସà­à¬§à¬¾à¬°à¬•',
'brokenredirects' => 'ଭଙà­à¬—ା ପà­à¬¨à¬ªà­à¬°à­‡à¬°à¬£',
'brokenredirectstext' => 'ତଳଲିଖିତ ପà­à¬¨à¬ªà­à¬°à­‡à¬°à¬£ ସବୠସà­à¬¥à¬¿à¬¤à¬¿à¬¹à¬¿à¬¨ ପୃଷà­à¬ à¬¾à¬®à¬¾à¬¨à¬™à­à¬•à­ ପà­à¬¨à¬ªà­à¬°à­‡à¬°à¬¿à¬¤ ହୋଇଥାଠ:',
@@ -1522,7 +1807,7 @@ URLଟି ଠିକ ଅଚିକି କି ନାଠଓ ସାଇଟଟି ସà
'lonelypagestext' => 'ତଲାଲିଖିତ ପୃଷà­à¬ à¬¾à¬®à¬¾à¬¨ {{SITENAME}}ରେ ଥିବା ବାକି ପୃଷà­à¬ à¬¾à¬®à¬¾à¬¨à¬™à­à¬• ସହ ଯୋଡ଼ାଯାଇନାହିଠବା କେବଳ ସେଥିରେ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରାଯାଇନାହିଠ।',
'uncategorizedpages' => 'ଶà­à¬°à­‡à¬£à­€à¬¹à¬¿à¬¨ ପୃଷà­à¬ à¬¾à¬¸à¬®à­‚ହ',
'uncategorizedcategories' => 'ଶà­à¬°à­‡à¬£à­€à¬¹à¬¿à¬¨ ଶà­à¬°à­‡à¬£à­€à¬¸à¬®à­‚ହ',
-'uncategorizedimages' => 'ଶà­à¬°à­‡à¬£à­€à¬¹à¬¿à¬¨ ଫାଇଲସମୂହ',
+'uncategorizedimages' => 'ଶà­à¬°à­‡à¬£à­€à¬¹à­€à¬¨ ଫାଇଲସମୂହ',
'uncategorizedtemplates' => 'ଶà­à¬°à­‡à¬£à­€à¬¹à¬¿à¬¨ ଛାଞà­à¬šà¬¸à¬¬à­',
'unusedcategories' => 'ବà­à­Ÿà¬¬à¬¹à¬¾à¬° ହେଉନଥିବା ଶà­à¬°à­‡à¬£à­€à¬¸à¬®à­‚ହ',
'unusedimages' => 'ବà­à­Ÿà¬¬à¬¹à¬¾à¬° ହେଉନଥିବା ଫାଇଲସମୂହ',
@@ -1571,6 +1856,7 @@ URLଟି ଠିକ ଅଚିକି କି ନାଠଓ ସାଇଟଟି ସà
'pager-newer-n' => '{{PLURAL:$1|ନୂଆ 1|ନୂଆ $1}}',
'pager-older-n' => '{{PLURAL:$1|ପà­à¬°à­à¬£à¬¾ 1|ପà­à¬°à­à¬£à¬¾ $1}}',
'suppress' => 'ଅଜାଣତ ଅଣଦେଖା',
+'querypage-disabled' => 'à¬à¬¹à¬¿ ବିଶେଷ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿ ଦେଖଣା କାରଣରୠଅଚଳ କରାଯାଇଅଛି ।',
# Book sources
'booksources' => 'ବହିର ମà­à¬³à¬¾à¬§à¬¾à¬°',
@@ -1685,6 +1971,10 @@ URLଟି ଠିକ ଅଚିକି କି ନାଠଓ ସାଇଟଟି ସà
'noemailtext' => 'ସଭà­à­Ÿà¬œà¬£à¬• à¬à¬• ସଠିକ ଇ-ମେଲ ଠିକଣା ଦେଇନାହାନà­à¬¤à¬¿ ।',
'nowikiemailtitle' => 'ଇ-ମେଲ ଦେବା ଅନà­à¬®à­‹à¬¦à¬¿à¬¤ ନà­à¬¹à­‡à¬',
'nowikiemailtext' => 'à¬à¬¹à¬¿ ସଭà­à­Ÿ ବାକିମାନଙà­à¬• ଠାରୠଇ-ମେଲ ପାଇବା ବାଚିଛନà­à¬¤à¬¿ ।',
+'emailnotarget' => 'ପà­à¬°à¬¾à¬ªà¬• ନିମନà­à¬¤à­‡ ସà­à¬¥à¬¿à¬¤à¬¿à¬¹à­€à¬¨ ବା ଅବୈଧ ଇଉଜର ନାମ ।',
+'emailtarget' => 'ପà­à¬°à¬¾à¬ªà¬•à¬° ଇଉଜର ନାମ ଦିଅନà­à¬¤à­',
+'emailusername' => 'ବà­à­Ÿà¬¬à¬¾à¬¹à¬°à¬•à¬¾à¬°à­€à¬™à­à¬•à¬° ନାଆà¬:',
+'emailusernamesubmit' => 'ଦାଖଲକରିବା',
'email-legend' => 'ଆଉ à¬à¬• {{SITENAME}}କୠଇ-ମେଲଟିଠପଠାଇବେ',
'emailfrom' => 'କାହାଠାରà­:',
'emailto' => 'କାହାକà­:',
@@ -1709,6 +1999,8 @@ URLଟି ଠିକ ଅଚିକି କି ନାଠଓ ସାଇଟଟି ସà
'watchlistanontext' => 'ଆପଣା ଦେଖଣାତାଲିକାରେ କିଛି ସମà­à¬ªà¬¾à¬¦à¬¨à¬¾ କରିବା ନିମନà­à¬¤à­‡ ଦୟାକରି $1 କରନà­à¬¤à­ ।',
'watchnologin' => 'ଲଗ‌‌ ଇନ କରିନାହାନà­à¬¤à¬¿',
'watchnologintext' => 'ଆପଣା ଦେଖଣାତାଲିକା ବଦଳାଇବା ନିମନà­à¬¤à­‡ ଆପଣଙà­à¬•à­ [[Special:UserLogin|ଲଗ ଇନ]] କରିବାକୠପଡ଼ିବ ।',
+'addwatch' => 'ଦେଖଣାତାଲିକାରେ ଯୋଡ଼ିବେ',
+'removewatch' => 'ଦେଖଣା ତାଲିକାରୠହଟାଇବେ',
'removedwatchtext' => '"[[:$1]]" ପୃଷà­à¬ à¬¾à¬Ÿà¬¿ [[Special:Watchlist|ଆପଣଙà­à¬• ଦେଖଣାତାଳିକା]]ରୠହଟାଗଲା ।',
'watch' => 'ଦେଖିବେ',
'watchthispage' => 'à¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿à¬•à­ ଦେଖିବେ',
@@ -1729,8 +2021,9 @@ URLଟି ଠିକ ଅଚିକି କି ନାଠଓ ସାଇଟଟି ସà
'watchlist-options' => 'ଦେଖଣା ବିକଳà­à¬ªà¬¸à¬¬à­',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'ଦେଖà­à¬›à¬¿...',
-'unwatching' => 'ଦେଖà­à¬¨à¬¾à¬¹à¬¿à¬...',
+'watching' => 'ଦେଖà­à¬›à¬¿...',
+'unwatching' => 'ଦେଖà­à¬¨à¬¾à¬¹à¬¿à¬...',
+'watcherrortext' => '"$1" ପାଇଠଆପଣଙà­à¬• ଦେଖଣାତାଲିକା ସଜାଣି ବଦଳାଇବା ବେଳେ à¬à¬• ଅସà­à¬¬à¬¿à¬§à¬¾ ହେଲା ।',
'enotif_mailer' => '{{SITENAME}} ସୂଚନା ମେଲ ପà­à¬°à­‡à¬°à¬•',
'enotif_reset' => 'ସବà­à¬¯à¬¾à¬• ଦେଖାଯାଇଥିବା ପୃଷà­à¬ à¬¾à¬•à­ ଚିହà­à¬¨à¬¿à¬¤ କରିବେ',
@@ -1742,6 +2035,36 @@ URLଟି ଠିକ ଅଚିକି କି ନାଠଓ ସାଇଟଟି ସà
'enotif_lastvisited' => 'ଆପଣଙà­à¬• ଶେଷ ଦେଖଣା ପରେ ହୋଇଥିବା ବଦଳସବà­à¬•à­ ଦେଖିବା ନିମନà­à¬¤à­‡ $1 ଦେଖନà­à¬¤à­ ।',
'enotif_lastdiff' => 'à¬à¬¹à¬¿ ବଦଳ ଦେଖିବା ପାଇଠ$1 ଦେଖନà­à¬¤à­ ।',
'enotif_anon_editor' => 'ବେନାମି ସଭà­à­Ÿ $1',
+'enotif_body' => 'ପà­à¬°à¬¿à­Ÿ $WATCHINGUSERNAME,
+
+
+à¬à¬¹à¬¿ {{SITENAME}} $PAGETITLE ପୃଷà­à¬ à¬¾à¬Ÿà¬¿ $PAGEEDITOR ଙà­à¬• ଦେଇ $PAGEEDITDATE ବେଳେ $CHANGEDORCREATE, ନଗଦ ସଂସà­à¬•à¬°à¬£ ପାଇଠ$PAGETITLE_URL ଦେଖନà­à¬¤à­ ।
+
+$NEWPAGE
+
+ସମà­à¬ªà¬¾à¬¦à¬•à¬™à­à¬• ସାରକଥା: $PAGESUMMARY $PAGEMINOREDIT
+
+ସମà­à¬ªà¬¾à¬¦à¬•à¬™à­à¬• ସହିତ ଯୋଗାଯୋଗ:
+mail: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
+
+ଆପଣ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿à¬•à­ ଯାଇ ନ ଦେଖିଲେ କିଛି ବି ସୂଚନା ରହିବ ନାହିଠ।
+ଆପଣା ଦେଖଣାତାଲିକାରୠଆପଣ ସବà­à¬¯à¬¾à¬• ସୂଚନା ଫଳକକୠମୂଳ ଅବସà­à¬¥à¬¾à¬•à­ ଫେରାଇ ଦେଇପାରିବେ ।
+
+ ଆପଣଙà­à¬•à¬° ହିତକାରୀ {{SITENAME}} ସୂଚନା ପà­à¬°à¬£à¬¾à¬³à­€
+
+--
+ଆପଣା ଇ-ମେଲ ସୂଚନା ସଜାଣି ଦେଖିବା ନିମନà­à¬¤à­‡
+{{canonicalurl:{{#special:Preferences}}}} ଦେଖନà­à¬¤à­
+
+ଆପଣା ଦେଖଣାତାଲିକା ସଜାଣି ବଦଳାଇବା ନିମନà­à¬¤à­‡,
+{{canonicalurl:{{#special:EditWatchlist}}}} ଦେଖନà­à¬¤à­
+
+ଆପଣା ଦେଖଣାତାଲିକାରୠà¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿ ଲିଭାଇବା ନିମନà­à¬¤à­‡,
+$UNWATCHURL ଦେଖନà­à¬¤à­
+
+ମତାମତ ଓ ଅଧିକ ସହଯୋଗ:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'ପୃଷà­à¬ à¬¾à¬Ÿà¬¿ ଲିଭାଇଦେବେ',
@@ -1757,7 +2080,7 @@ URLଟି ଠିକ ଅଚିକି କି ନାଠଓ ସାଇଟଟି ସà
à¬à¬¹à¬¾ ଥୟ କରନà­à¬¤à­ ଯେ ଆପଣ à¬à¬¹à¬¾à¬° ପରିଣତି ଜାଣିଛନà­à¬¤à¬¿ ଓ à¬à¬¹à¬¾ [[{{MediaWiki:Policy-url}}|ମିଡ଼ିଆଉଇକିର ନିୟମ]] ଅନà­à¬¸à¬¾à¬°à­‡ କରà­à¬›à¬¨à­à¬¤à¬¿ ।',
'actioncomplete' => 'କାମଟି ପà­à¬°à¬¾ ହେଲା',
'actionfailed' => 'କାମଟି ଅସଫଳ ହୋଇଗଲା',
-'deletedtext' => '"<nowiki>$1</nowiki>"କୠଲିଭାଇ ଦିଆଗଲା ।
+'deletedtext' => '"$1"କୠଲିଭାଇ ଦିଆଗଲା ।
ନଗଦ ଲିଭାଯାଇଥିବା ଫାଇଲର ଇତିହାସ $2ରେ ଦେଖନà­à¬¤à­ ।',
'deletedarticle' => '"[[$1]]" ଟି ଉଡ଼ିଗଲା',
'dellogpage' => 'ଲିଭାଇବା ଇତିହାସ',
@@ -1871,9 +2194,10 @@ $1',
'undelete-show-file-submit' => 'ହà¬',
# Namespace form on various pages
-'namespace' => 'ନେମସà­à¬ªà­‡à¬¸',
-'invert' => 'ବଛାଯାଇଥିବା ଲେଖାକୠଓଲଟାଇଦେବେ',
-'blanknamespace' => '(ମୂଳ)',
+'namespace' => 'ନେମସà­à¬ªà­‡à¬¸',
+'invert' => 'ବଛାଯାଇଥିବା ଲେଖାକୠଓଲଟାଇଦେବେ',
+'namespace_association' => 'ସମà­à¬­à¬¨à­à¬§à¬¿à¬¤ ନେମସà­à¬ªà­‡à¬¸',
+'blanknamespace' => '(ମୂଳ)',
# Contributions
'contributions' => 'ବà­à­Ÿà¬¬à¬¹à¬¾à¬°à¬•à¬¾à¬°à­€à¬™à­à¬• ଦାନ',
@@ -1919,6 +2243,9 @@ $1',
'whatlinkshere-filters' => 'ଛଣା',
# Block/unblock
+'autoblockid' => '#$1ଙà­à¬•à­ ଆପେଆପେ ଅଟକାଇଦେବେ',
+'block' => 'ସଭà­à­Ÿà¬™à­à¬•à­ ଅଟକାଇବେ',
+'unblock' => 'ବାସନà­à¬¦ ହୋଇଥିବା ସଭà­à­Ÿà¬™à­à¬•à­ ମà­à¬•à­à¬³à¬¾à¬‡à¬¬à­‡',
'blockip' => 'ସଭà­à­Ÿà¬™à­à¬•à­ ଅଟକାଇବେ',
'blockip-title' => 'ସଭà­à­Ÿà¬™à­à¬•à­ ବାସନà­à¬¦ କରିବେ',
'blockip-legend' => 'ସଭà­à­Ÿà¬™à­à¬•à­ ବାସନà­à¬¦ କରିବେ',
@@ -1934,6 +2261,7 @@ $1',
** ଧମକାଣି/ଅପମାନ
** à¬à¬•à¬¾à¬§à¬¿à¬• ଖାତାରେ ଅସଦାଆଚରଣ
** ଗà­à¬°à¬¹à¬£ ଅଯୋଗà­à­Ÿ ଇଉଜର ନାମ',
+'ipb-hardblock' => 'à¬à¬¹à¬¿ IP ଠିକଣାରୠଲଗ ଇନ କରିଥିବା ସଭà­à­Ÿà¬®à¬¾à¬¨à¬™à­à¬•à­ ସମà­à¬ªà¬¾à¬¦à¬¨à¬¾ କରିବାରୠବାଟ ଓଗାଳନà­à¬¤à­',
'ipbcreateaccount' => 'ନୂଆ ଖାତା ଖୋଲାକୠଅଟକାଗଲା',
'ipbemailban' => 'ଇ-ମେଲ ପଠାଇବାରୠଜଣେ ସଭà­à­Ÿà¬™à­à¬•à­ ବାରଣ କରିବେ',
'ipbsubmit' => 'ସଭà­à­Ÿà¬™à­à¬•à­ ଅଟକାଇଦେବେ',
@@ -1943,9 +2271,14 @@ $1',
'ipbotherreason' => 'ବାକି/ଅଧିକ କାରଣ:',
'ipbhidename' => 'ଇଉଜର ନାମକୠସମà­à¬ªà¬¾à¬¦à¬¨à¬¾ ଓ ତାଲିକାରୠଲà­à¬šà¬¾à¬‡à¬¬à­‡',
'ipbwatchuser' => 'ସଭà­à­Ÿà¬™à­à¬• ପୃଷà­à¬ à¬¾ ଓ ତାହାଙà­à¬•à¬° ଆଲୋଚନା ପୃଷà­à¬ à¬•à­ ଦେଖିବେ',
+'ipb-disableusertalk' => 'ଅଟକାଯାଇଥିବା ବେଳେ à¬à¬¹à¬¿ ସଭà­à­Ÿà¬™à­à¬•à­ ତାହାଙà­à¬• ନିଜ ଆଲୋଚନା ପୃଷà­à¬ à¬¾à¬•à­ ବଦଳାଇବାକୠବାରଣ କରନà­à¬¤à­',
'ipb-change-block' => 'ସଭà­à­Ÿà¬œà¬£à¬™à­à¬•à­ à¬à¬¹à¬¿ ସଜାଣିରେ ଆଉଥରେ ଅଟକାନà­à¬¤à­',
+'ipb-confirm' => 'ଅଟକ ଥୟ କରିବେ',
'badipaddress' => 'ଭà­à¬² IP ଠିକଣା',
'blockipsuccesssub' => 'ବାସନà­à¬¦ ସଫଳ ହେଲା',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ଅଟକାଯାଇଛନà­à¬¤à¬¿.<br />
+ଅଟକ ବାବଦରେ ଟିପà­à¬ªà¬£à­€ ଦେବା ନିମନà­à¬¤à­‡ [[Special:BlockList|IP ତାଲିକା]] ଦେଖନà­à¬¤à­ ।',
+'ipb-blockingself' => 'ଆପଣ ନିଜକୠଅଟକାଇବାକୠଯାଉଛନà­à¬¤à¬¿ ! ଆପଣ ପà­à¬°à¬¾à¬ªà­à¬°à¬¿ ନିଶà­à¬šà¬¿à¬¤ ତ?',
'ipb-edit-dropdown' => 'ସମà­à¬ªà¬¾à¬¦à¬¨à¬¾ ଅଟକ କାରଣମାନ',
'ipb-unblock-addr' => '$1ଙà­à¬•à­ କିଳିବେ ନାହି',
'ipb-unblock' => 'à¬à¬• ଇଉଜର ନାମ ବା IP ଠିକଣାକୠବାସନà­à¬¦à¬°à­ ମà­à¬•à­à¬³à¬¾à¬‡à¬¬à­‡',
@@ -1955,9 +2288,20 @@ $1',
'unblockiptext' => 'ଆଗରୠବାସନà­à¬¦ କରାଯାଇଥିବା ଇଉଜର ନାମ ବା IP ଠିକଣା ମà­à¬•à­à¬³à¬¾à¬‡à¬¬à¬¾ ନିମନà­à¬¤à­‡ ତଳେ ଥିବା ଫରà­à¬® ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରନà­à¬¤à­ ।',
'ipusubmit' => 'à¬à¬¹à¬¿ ବାସନà­à¬¦à¬Ÿà¬¿à¬•à­ ଉଠାଇଦେବେ',
'unblocked' => '[[User:$1|$1]] ନାମକ ସଭà­à­Ÿà¬œà¬£à¬• ବାସନà­à¬¦à¬°à­ ମà­à¬•à­à¬³à¬¿à¬—ଲେ',
+'unblocked-range' => '$1 ଅଟକରୠବାହାର କରିଦିଆଗଲା',
'unblocked-id' => '$1 ଅଟକଟି ହଟାଇଦିଆଗଲା',
+'blocklist' => 'ବାସନà­à¬¦ କରାଯାଇଥିବା ସଭà­à­Ÿ',
'ipblocklist' => 'ଅଟକାଯାଇଥିବା ସଭà­à­Ÿà¬¸à¬®à­‚ହ',
'ipblocklist-legend' => 'ଜଣେ ଅଟକାଯାଇଥିବା ସଭà­à­Ÿ ଖୋଜିବେ',
+'blocklist-userblocks' => 'ଅଟକାଯାଇଥିବା ଖାତାସବୠଖୋଜିବେ',
+'blocklist-tempblocks' => 'ଅସà­à¬¥à¬¾à­Ÿà­€ ଅଟକସବୠଲà­à¬šà¬¾à¬‡à¬¦à­‡à¬¬à­‡',
+'blocklist-addressblocks' => 'ଗୋଟିକିଆ IP ଅଟକସବୠଲà­à¬šà¬¾à¬‡à¬¬à­‡',
+'blocklist-timestamp' => 'ସମୟଚିହà­à¬¨',
+'blocklist-target' => 'ଲକà­à¬·',
+'blocklist-expiry' => 'ଅଚଳ ହେବ',
+'blocklist-by' => 'ଅଟକାଇବା ପରିଛା',
+'blocklist-params' => 'ଅଟକାଇବା ପାରାମିଟର',
+'blocklist-reason' => 'କାରଣ',
'ipblocklist-submit' => 'ଖୋଜିବା',
'ipblocklist-localblock' => 'ସà­à¬¥à¬¾à¬¨à­€à­Ÿ ଅଟକ',
'ipblocklist-otherblocks' => 'ବାକି {{PLURAL:$1|ଗୋଟି ଅଟକ|ଗୋଟି ଅଟକ}}',
@@ -1992,6 +2336,7 @@ $1ର ଅଟକ ପାଇଠଦିଆଯାଇଥିବା କାରଣଟି à
'ipb_expiry_invalid' => 'ଅଚଳ ହେବାର ବେଳା ଭà­à¬² ।',
'ipb_expiry_temp' => 'ଲà­à¬šà¬¾à¬¯à¬¾à¬‡à¬¥à¬¿à¬¬à¬¾ ବà­à­Ÿà¬¬à¬¹à¬¾à¬°à¬•à¬¾à¬°à­€ ନାମ ଅଟକ ସବୠସà­à¬¥à¬¾à­Ÿà­€ ହେବ ଉଚିତ ।',
'ipb_already_blocked' => '"$1" ଆଗରୠଅଟକାଯାଇଅଛି',
+'ipb-needreblock' => '"$1" ଆଗରୠଅଟକାଯାଇଅଛି । ଆପଣ ସଜାଣିସବୠବଦଳାଇବାକୠଚାହାନà­à¬¤à¬¿ କି?',
'ipb-otherblocks-header' => 'ବାକି {{PLURAL:$1|ଗୋଟି ଅଟକ|ଗୋଟି ଅଟକ}}',
'ip_range_invalid' => 'ଅଚଳ IP ସୀମା ।',
'ip_range_toolarge' => '/$1 ଠାରୠବଡ଼ ସୀମା ଅଟକ ଅନà­à¬®à­‹à¬¦à¬¿à¬¤ ନà­à¬¹à­‡à¬ ।',
@@ -2201,6 +2546,19 @@ $1ର ଅଟକ ପାଇଠଦିଆଯାଇଥିବା କାରଣଟି à
'spam_reverting' => '$1 ସହ ଯୋଡ଼ା ନଥିବା ଶେଷ ସଂସà­à¬•à¬°à¬£à¬•à­ ଲେଉଟାଇ ଦେଉଅଛà­à¬',
'spam_blanking' => '$1 ସହ ଯୋଡ଼ାଥିବା ସବà­à¬¯à¬¾à¬• ସଂସà­à¬•à¬°à¬£ ଖାଲି କରିଦିଆଗଲା',
+# Info page
+'pageinfo-title' => '"$1"ର ବିବରଣୀ',
+'pageinfo-header-edits' => 'ବଦଳସବà­',
+'pageinfo-header-watchlist' => 'ଦେଖଣା ତାଲିକା',
+'pageinfo-header-views' => 'ଦେଖଣା',
+'pageinfo-subjectpage' => 'ପୃଷà­à¬ à¬¾',
+'pageinfo-talkpage' => 'ଆଲୋଚନା ପୃଷà­à¬ à¬¾',
+'pageinfo-watchers' => 'ଦେଖଣାହାରି ସଂଖà­à­Ÿà¬¾',
+'pageinfo-edits' => 'ସମà­à¬ªà¬¾à¬¦à¬¨à¬¾ ସଂଖà­à­Ÿà¬¾:',
+'pageinfo-authors' => 'ନିଆରା ଲେଖକଙà­à¬• ସଂଖà­à­Ÿà¬¾',
+'pageinfo-views' => 'ଦେଖଣା ସଂଖà­à­Ÿà¬¾',
+'pageinfo-viewsperedit' => 'ସମà­à¬ªà¬¾à¬¦à¬¨à¬¾ ପà­à¬°à¬¤à¬¿ ଦେଖା',
+
# Patrolling
'markaspatrolleddiff' => 'ଜଗାଯାଇଅଛି ବୋଲି ଚିହà­à¬¨à¬¿à¬¤ କରାଗଲା',
'markaspatrolledtext' => 'à¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿à¬•à­ ଜଗାଯାଇଅଛି ବୋଲି ଚିହà­à¬¨à¬¿à¬¤ କରିବେ',
@@ -2232,7 +2590,7 @@ $1ର ଅଟକ ପାଇଠଦିଆଯାଇଥିବା କାରଣଟି à
'file-nohires' => '<small>ବଡ଼ ରେଜୋଲà­à¬¸à¬¨ ନାହିଠ।</small>',
'svg-long-desc' => 'SVG ଫାଇଲ, ସାଧାରଣ ମାପ $1 × $2 ପିକà­à¬¸à­‡à¬², ଫାଇଲ ଆକାର: $3',
'show-big-image' => 'ପà­à¬°à¬¾ ବଡ଼ ଆକାରରେ',
-'show-big-image-thumb' => '<small>ଦେଖଣା ଚିତà­à¬°à¬° ଆକାର: $1 × $2 ପିକସେଲ</small>',
+'show-big-image-size' => '$1 × $2 ପିକà­à¬¸à­‡à¬²',
'file-info-gif-looped' => 'ଲà­à¬ª',
'file-info-png-looped' => 'ଲà­à¬ª ଥିବା',
@@ -2257,6 +2615,21 @@ $1ର ଅଟକ ପାଇଠଦିଆଯାଇଥିବା କାରଣଟି à
'metadata-help' => 'à¬à¬¹à¬¿ ଫରଦଟିରେ ଗà­à¬¡à¬¼à¬¾à¬ ଅଧିକ କଥା ଅଛି, ବୋଧହà­à¬ ଡିଜିଟାଲ କାମେରା କିମà­à¬¬à¬¾ ସà­à¬•à¬¾à¬¨à¬°à¬°à­‡ ନିଆଯାଇଛି । ଯଦି ଫାଇଲଟି ତାର ମୂଳ ଭାଗଠୠବଦଳାଜାଇଥାଠତେବେ କିଛି ଅà¬à¬¶ ଠିକ ଭାବେ ଦେଖାଯାଇ ନପାରେ ।',
'metadata-expand' => 'ଆହà­à¬°à¬¿ ଖୋଲିକରି ଦେଖାଇବେ',
'metadata-collapse' => 'ଖୋଲାଯାଇଥିବା ଭାଗକୠବà­à¬œà¬¿à¬¦à­‡à¬¬à­‡',
+'metadata-fields' => 'ମେଟାଡାଟା ସାରଣୀଟି ବନà­à¬¦ ହୋଇରହିଥିଲେ à¬à¬¹à¬¿ ମେସେଜରେ ଥିବା ଛବି ମେଟାଡାଟାସବୠଛବିର ପୃଷà­à¬ à¬¾à¬°à­‡ ରହିଥିବ ।
+ବାକିସବୠଆପେଆପେ ଲà­à¬šà¬¿ ରହିଥିବ ।
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'ଓସାର',
@@ -2318,6 +2691,26 @@ $1ର ଅଟକ ପାଇଠଦିଆଯାଇଥିବା କାରଣଟି à
'exif-gpsspeed' => 'ଜି.ପି.à¬à¬¸. ଗà­à¬°à¬¹à¬£à¬•à¬¾à¬°à­€à¬° ବେଗ',
'exif-gpstrackref' => 'ଗତିର ଦିଗ ନିମନà­à¬¤à­‡ ଆଧାର',
'exif-gpstrack' => 'ଗତିର ଦିଗ',
+'exif-keywords' => 'ସୂଚକ ଶବà­à¬¦',
+'exif-source' => 'ମୂଳାଧାର',
+'exif-writer' => 'ଲେଖକ',
+'exif-languagecode' => 'ଭାଷା',
+'exif-iimcategory' => 'ଶà­à¬°à­‡à¬£à­€',
+'exif-datetimeexpires' => 'à¬à¬¹à¬¾à¬ªà¬°à­‡ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରିବେନି',
+'exif-datetimereleased' => 'ଦିନ ବାହାରିଛି',
+'exif-originaltransmissionref' => 'ପà­à¬°à¬¾à¬¥à¬®à¬¿à¬• ଅବସà­à¬¥à¬¿à¬¤à¬¿ ସଞà­à¬šà¬¾à¬°à¬£ ହୋଇଥିବା ବà­à­Ÿà¬¬à¬¸à­à¬¥à¬¾à¬¸à¬®à­‚ହ',
+'exif-identifier' => 'ସୂଚକ',
+'exif-lens' => 'ଯବକାଚ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° ହୋଇଛି',
+'exif-serialnumber' => 'ଫଟୋଉଠା ଯନà­à¬¤à­à¬°à¬° କà­à¬°à¬®à¬¿à¬• ସଂଖà­à­Ÿà¬¾',
+'exif-cameraownername' => 'କà­à­Ÿà¬¾à¬®à­‡à¬°à¬¾à¬° ମାଲିକ',
+'exif-label' => 'ଛାପ',
+'exif-datetimemetadata' => 'ଶେଷଥର ବଦଳାଇଯାଇଥିବା ମେଟାଡାଟାର ତାରିଖ ଦେବେ',
+'exif-nickname' => 'ଛବିର ସାଧାରଣ ନାମ',
+'exif-rating' => 'ବରà­à¬—ୀକରଣ ( à­« ରୠ)',
+'exif-rightscertificate' => 'ଅଧିକାର ପରିଚାଳନା ପà­à¬°à¬®à¬¾à¬£à¬ªà¬¤à­à¬°',
+'exif-copyrighted' => 'ପà­à¬°à¬¤à¬¿à¬²à­‡à¬– ଅଧିକାର ଅବସà­à¬¥à¬¾',
+'exif-copyrightowner' => 'ପà­à¬°à¬¤à¬¿à¬²à­‡à¬– ଅଧିକାରୀ',
+'exif-usageterms' => 'ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରିବା ନିମନà­à¬¤à­‡ ସରà­à¬¤',
'exif-orientation-1' => 'ସାଧାରଣ',
@@ -2349,17 +2742,19 @@ $1ର ଅଟକ ପାଇଠଦିଆଯାଇଥିବା କାରଣଟି à
'exif-subjectdistancerange-0' => 'ଅଜଣା',
'exif-subjectdistancerange-3' => 'ଦୂରର ଦେଖଣା',
+'exif-dc-rights' => 'ଅଧିକାର',
+
+'exif-urgency-normal' => 'ସାଧାରଣ ($1)',
+
# External editor support
'edit-externally' => 'à¬à¬• ବାହାର ଆପà­à¬²à¬¿à¬•à­‡à¬¸à¬¨ ବà­à­Ÿà¬¬à¬¹à¬¾à¬° କରି à¬à¬¹à¬¿ ଫାଇଲଟିକୠବଦଳାଇବା',
-'edit-externally-help' => '(ଆହà­à¬°à¬¿ ବି [http://www.mediawiki.org/wiki/Manual:External_editors ସଜାଡିବା ନିରà­à¬¦à­‡à¬¶] ଦେଖନà­à¬¤à­)',
+'edit-externally-help' => '(ଆହà­à¬°à¬¿ ବି [//www.mediawiki.org/wiki/Manual:External_editors ସଜାଡିବା ନିରà­à¬¦à­‡à¬¶] ଦେଖନà­à¬¤à­)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ସବà­',
-'imagelistall' => 'ସବà­',
-'watchlistall2' => 'ସବà­',
-'namespacesall' => 'ସବà­',
-'monthsall' => 'ସବà­',
-'limitall' => 'ସବà­',
+'watchlistall2' => 'ସବà­',
+'namespacesall' => 'ସବà­',
+'monthsall' => 'ସବà­',
+'limitall' => 'ସବà­',
# E-mail address confirmation
'confirmemail_needlogin' => 'ଆପଣଙà­à¬•à­ ନିଜ ଇମେଲଟିକୠଥୟ କରିବା ପାଇଠ$1 କରିବାକୠପଡ଼ିବ ।',
@@ -2387,6 +2782,11 @@ $5
'confirm-purge-top' => 'à¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿à¬° ନଗଦ ସଙà­à¬•à¬³à¬¨à¬Ÿà¬¿à¬•à­ ଦେଖାଇବେ?',
'confirm-purge-bottom' => 'ପà­à¬°à­à¬£à¬¾ ସà­à¬®à­ƒà¬¤à¬¿à¬¸à¬¬à­à¬•à­ ସଫା କରିଦେଲେ ତାହା ପୃଷà­à¬ à¬¾à¬Ÿà¬¿à¬° ନଗଦ ସଙà­à¬•à¬³à¬¨à¬Ÿà¬¿ ଦେଖାଇଥାଠ।',
+# action=watch/unwatch
+'confirm-watch-button' => 'ଠିକ ଅଛି',
+'confirm-unwatch-button' => 'ଠିକ ଅଛି',
+'confirm-unwatch-top' => 'ନିଜ ଦେଖଣାତାଲିକାରୠà¬à¬¹à¬¿ ପୃଷà­à¬ à¬¾à¬Ÿà¬¿ ବାହାର କରିଦେବେ କି?',
+
# Multipage image navigation
'imgmultipageprev' => 'ଆଗ ପୃଷà­à¬ à¬¾',
'imgmultipagenext' => 'ପର ପୃଷà­à¬ à¬¾ →',
diff --git a/languages/messages/MessagesOs.php b/languages/messages/MessagesOs.php
index 20fc82c5..d71ae908 100644
--- a/languages/messages/MessagesOs.php
+++ b/languages/messages/MessagesOs.php
@@ -19,22 +19,33 @@ $fallback = 'ru';
$namespaceNames = array(
NS_MEDIA => 'Media',
NS_SPECIAL => 'Сæрмагонд',
- NS_TALK => 'ДиÑкуÑÑи',
+ NS_TALK => 'Тæрхон',
NS_USER => 'Ðрхайæг',
- NS_USER_TALK => 'Ðрхайæджы_диÑкуÑÑи',
+ NS_USER_TALK => 'Ðрхайæджы_ныхаÑ',
NS_PROJECT_TALK => 'ДиÑкуÑÑи_$1',
NS_FILE => 'Ðыв',
- NS_FILE_TALK => 'Ðывы_тыххæй_диÑкуÑÑи',
+ NS_FILE_TALK => 'Ðывы_тæрхон',
NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'ДиÑкуÑÑи_MediaWiki',
+ NS_MEDIAWIKI_TALK => 'Тæрхон_MediaWiki',
NS_TEMPLATE => 'Шаблон',
- NS_TEMPLATE_TALK => 'Шаблоны_тыххæй_диÑкуÑÑи',
+ NS_TEMPLATE_TALK => 'Шаблоны_тæрхон',
NS_HELP => 'ÆххуыÑ',
- NS_HELP_TALK => 'ÆххуыÑÑ‹_тыххæй_диÑкуÑÑи',
+ NS_HELP_TALK => 'ÆххуыÑÑ‹_тæрхон',
NS_CATEGORY => 'Категори',
- NS_CATEGORY_TALK => 'Категорийы_тыххæй_диÑкуÑÑи',
+ NS_CATEGORY_TALK => 'Категорийы_тæрхон',
);
+$namespaceAliases = array(
+ 'ДиÑкуÑÑи' => NS_TALK,
+ 'Ðрхайæджы_диÑкуÑÑи' => NS_USER_TALK,
+ 'Ðывы_тыххæй_диÑкуÑÑи' => NS_FILE_TALK,
+ 'ДиÑкуÑÑи_MediaWiki' => NS_MEDIAWIKI_TALK,
+ 'Шаблоны_тыххæй_диÑкуÑÑи' => NS_TEMPLATE_TALK,
+ 'ÆххуыÑÑ‹_тыххæй_диÑкуÑÑи' => NS_HELP_TALK,
+ 'Категорийы_тыххæй_диÑкуÑÑи' => NS_CATEGORY_TALK,
+);
+
+
$magicWords = array(
'redirect' => array( '0', '#РÐРВЫСТ', '#перенаправление', '#перенапр', '#REDIRECT' ),
'img_right' => array( '1', 'рахиз', 'Ñправа', 'right' ),
@@ -151,8 +162,7 @@ $messages = array(
'listingcontinuesabbrev' => '(дарддæргонд)',
'index-category' => 'ИндекÑгонд фæрÑтæ',
'noindex-category' => 'ÐæиндекÑгонд фæрÑтæ',
-
-'mainpagetext' => "'''Вики-Ñкрипт «MediaWiki» æнтыÑтджынæй æвæрд æрцыд.'''",
+'broken-file-category' => 'Файлтæм ÑаÑÑ‚ æрвитæнтæ кæм иÑ, ахæм фæрÑтæ',
'about' => 'ÐÑ„Ñ‹ÑÑ‚',
'article' => 'СтатьÑ',
@@ -199,10 +209,10 @@ $messages = array(
'searcharticle' => 'Ðгурын',
'history' => 'ФарÑÑ‹ иÑтори',
'history_short' => 'ИÑтори',
-'info_short' => 'Информаци',
'printableversion' => 'Мыхурмæ верÑи',
'permalink' => 'Ðцы верÑимæ æрвитæн',
'print' => 'Мыхуыр',
+'view' => 'ÆркæÑÑ‚',
'edit' => 'Ивын',
'create' => 'Скæнын',
'editthispage' => 'Ивын ацы фарÑ',
@@ -352,6 +362,7 @@ $messages = array(
'createaccount' => 'РегиÑтраци кæнын',
'gotaccount' => 'РегиÑтрацигонд дæ? $1.',
'gotaccountlink' => 'Бахизын',
+'userlogin-resetlink' => 'Ферох дæ ÑÑ‚Ñ‹ дæ бахизæнтæ?',
'createaccountmail' => 'адриÑмæ гæÑгæ',
'badretype' => 'Дыууæ хатты иу пароль хъуамæ ныффыÑтаиÑ',
'loginsuccess' => "'''ÐÑ‹Ñ€ ды дæ Ñ…Ñ‹ÑÑ‚ {{grammar:genitive|{{SITENAME}}}} куыд \"\$1\".'''",
@@ -366,7 +377,7 @@ $messages = array(
'emailconfirmlink' => 'Дæ Ñлектронон поÑÑ‚Ñ‹ Ð°Ð´Ñ€Ð¸Ñ Ñфидар кæн',
'loginlanguagelabel' => 'Æвзаг: $1',
-# Password reset dialog
+# Change password dialog
'resetpass_text' => '<!-- БахæÑÑ Ð´Ã¦ текÑÑ‚ ам -->',
'oldpassword' => 'Раздæры пароль:',
'newpassword' => 'Ðæуæг пароль:',
@@ -375,6 +386,12 @@ $messages = array(
'resetpass-submit-cancel' => 'Ðыууадзын',
'resetpass-temp-password' => 'РæÑтæгмæ пароль:',
+# Special:PasswordReset
+'passwordreset-username' => 'Ðрхайæджы ном:',
+'passwordreset-email' => 'Электрон поÑÑ‚Ñ‹ адриÑ:',
+'passwordreset-emailelement' => 'Ðрхайæджы ном: $1
+РæÑтæгмæ пароль: $2',
+
# Edit page toolbar
'bold_sample' => 'Бæзджын текÑÑ‚',
'bold_tip' => 'Бæзджын текÑÑ‚',
@@ -386,8 +403,6 @@ $messages = array(
'extlink_tip' => 'Æддаг æрвитæн (Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ http:// ма рох кæн)',
'headline_sample' => 'Сæргонд текÑÑ‚',
'headline_tip' => 'Бæрц 2 Ñæргонд',
-'math_sample' => 'ÐÑ‹Ñ„Ñ„Ñ‹ÑÑ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»Ã¦',
-'math_tip' => 'Математикон формулæ (формат LaTeX)',
'nowiki_sample' => 'БатыÑÑ Ð½Ã¦Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð³Ð¾Ð½Ð´ текÑÑ‚ ардæм',
'nowiki_tip' => 'Ðицæмæ дарын вики формат',
'image_tip' => 'Æфтыд файл',
@@ -586,6 +601,7 @@ $messages = array(
'gender-male' => 'нæлгоймаг',
'gender-female' => 'Ñылгоймаг',
'email' => 'Эл. поÑÑ‚Ñ‹ адриÑ',
+'prefs-help-email' => 'E-mail Ð°Ð´Ñ€ÐµÑ Ñ„Ã¦Ð½Ð´Ð¾Ð½Ã¦Ð¹ у, фæлæ дæ дæ пароль куы ферох уа, уæд Ñ…ÑŠÃ¦ÑƒÐ´Ð¶Ã¦Ð½Ð¸Ñ Ð½Ã¦ÑƒÃ¦Ð³ пароль æвæрынæн.',
'prefs-help-email-required' => 'Электронон поÑÑ‚Ñ‹ Ð°Ð´Ñ€Ð¸Ñ Ñ…ÑŠÃ¦ÑƒÑ‹.',
# User rights
@@ -645,7 +661,7 @@ $messages = array(
'rclistfrom' => 'РавдиÑын ивдтытæ амæй фæÑтæ: $1',
'rcshowhideminor' => '$1 чыÑыл ивдтытæ',
'rcshowhidebots' => '$1 роботты куыÑÑ‚',
-'rcshowhideliu' => '$1 ырбахизгæ архайджыты',
+'rcshowhideliu' => '$1, йæхи чи бацамыдта, уыцы архайджыты',
'rcshowhideanons' => '$1 æнæном архайджыты',
'rcshowhidemine' => '$1 мæ ивдтытæ',
'rclinks' => 'ФæÑтаг $1 ивдтытæ (афæÑтаг $2 боны дæргъы чи ’рцыдыÑÑ‚Ñ‹) равдиÑ;
@@ -826,8 +842,6 @@ $3',
'nowatchlist' => 'Иу ÑтатьÑмæ дæр дæ цæÑÑ‚ нæ дарыÑ.',
'watchnologin' => 'СиÑтемæйæн дæхи нæ бацамыдтай',
'watchnologintext' => 'Ðцы номхыгъд ивынмæ [[Special:UserLogin|хъуамæ дæхи бацамонай ÑиÑтемæйæн]].',
-'addedwatch' => 'Дæ цæÑÑ‚ кæмæ дарыÑ, уыцы ÑтатьÑтæм бафтыд.',
-'removedwatch' => 'Ðал Ð´Ð°Ñ€Ñ‹Ñ Ð´Ã¦ цæÑÑ‚',
'removedwatchtext' => 'ФарÑмæ «[[:$1]]» нал [[Special:Watchlist|Ð´Ð°Ñ€Ñ‹Ñ Ð´Ã¦ цæÑÑ‚]].',
'watch' => 'ЦæÑÑ‚ æрдарын',
'watchthispage' => 'ЦæÑÑ‚ дарын ацы фарÑмæ',
@@ -938,7 +952,6 @@ $3',
'ipb-blocklist-contribs' => '$1, зæгъгæ, уыцы архайæджы бавæрд',
'ipblocklist' => 'Хъодыгонд архайджытæ',
'ipblocklist-legend' => 'Хъодыгонд архайæджы ацагур',
-'blocklistline' => '$1, $2 бахъоды кодта $3 ($4)',
'ipblocklist-empty' => 'Хъодыгæндты номхыгъд афтид у.',
'blocklink' => 'бахъоды кæн',
'unblocklink' => 'хъоды айÑ',
@@ -1054,10 +1067,6 @@ $3',
'skinname-myskin' => 'Мæхи',
'skinname-chick' => 'Карк',
-# Math errors
-'math_unknown_function' => 'нæзонгæ функци',
-'math_syntax_error' => 'ÑинтакÑиÑÑ‹ рæдыд',
-
# Patrol log
'patrol-log-line' => 'баныÑан кодта $1 $2 фарÑæй патрулгондæй $3',
'patrol-log-auto' => '(автоматон)',
@@ -1092,22 +1101,21 @@ $3',
'metadata-expand' => 'Фылдæр детальтæ равдиÑ',
# EXIF tags
-'exif-imagewidth' => 'Уæрх',
-'exif-imagelength' => 'Бæрзæнд',
-'exif-artist' => 'Чи йæ ÑиÑта',
+'exif-imagewidth' => 'Уæрх',
+'exif-imagelength' => 'Бæрзæнд',
+'exif-artist' => 'Чи йæ ÑиÑта',
+'exif-languagecode' => 'Æвзаг',
'exif-gaincontrol-0' => 'Ðæй',
# External editor support
'edit-externally' => 'Ивын ацы файл æддаг программæйæ',
-'edit-externally-help' => '(ÐšÃ¦Ñ [http://www.mediawiki.org/wiki/Manual:External_editors Ñывæрыны уагæвæрдтæ] фылдæр базонынæн)',
+'edit-externally-help' => '(ÐšÃ¦Ñ [//www.mediawiki.org/wiki/Manual:External_editors Ñывæрыны уагæвæрдтæ] фылдæр базонынæн)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'æппæт',
-'imagelistall' => 'æппæт',
-'watchlistall2' => 'иууылдæр',
-'namespacesall' => 'иууылдæр',
-'monthsall' => 'иууылдæр',
+'watchlistall2' => 'иууылдæр',
+'namespacesall' => 'иууылдæр',
+'monthsall' => 'иууылдæр',
# action=purge
'confirm_purge_button' => 'Ðфтæ уæд!',
diff --git a/languages/messages/MessagesPa.php b/languages/messages/MessagesPa.php
index 9e58c2fc..1a59fb1b 100644
--- a/languages/messages/MessagesPa.php
+++ b/languages/messages/MessagesPa.php
@@ -130,8 +130,6 @@ $messages = array(
'category-media-header' => 'ਕੈਟਾਗਰੀ "$1" ਵਿੱਚ ਮੀਡਿਆ',
'category-empty' => "''ਇਹ ਕੈਟਾਗਰੀ ਵਿੱਚ ਇਸ ਵੇਲੇ ਕੋਈ ਲੇਖ (ਆਰਟੀਕਲ) ਜਾਂ ਮੀਡਿਆ ਨਹੀਂ ਹੈ।''",
-'mainpagetext' => "'''ਮੀਡਿਆਵਿਕਿ ਠੀਕ ਤਰà©à¨¹à¨¾à¨‚ ਇੰਸਟਾਲ ਹੋ ਗਿਆ ਹੈ।'''",
-
'about' => 'ਇਸ ਬਾਰੇ',
'article' => 'ਸਮੱਗਰੀ ਪੇਜ',
'newwindow' => '(ਨਵੀਂ ਵਿੰਡੋ ਵਿੱਚ ਖੋਲà©à¨¹à©‹)',
@@ -159,7 +157,7 @@ $messages = array(
'vector-action-move' => 'ਭੇਜੋ',
'vector-action-protect' => 'ਸà©à¨°à©±à¨–ਿਅਤ',
'vector-action-undelete' => 'ਹਟਾਉਣਾ ਵਾਪਸ',
-'vector-action-unprotect' => 'ਅਣ-ਸà©à¨°à©±à¨–ਿਅਤ',
+'vector-action-unprotect' => 'ਸà©à¨°à©±à¨–ਿਆ ਬਦਲੋ',
'vector-view-create' => 'ਬਣਾਓ',
'vector-view-edit' => 'ਸੋਧ',
'vector-view-history' => 'ਅਤੀਤ ਵੇਖੋ',
@@ -167,6 +165,7 @@ $messages = array(
'vector-view-viewsource' => 'ਸਰੋਤ ਵੇਖੋ',
'actions' => 'ਕਾਰਵਾਈ',
'namespaces' => 'ਨਾਂ-ਥਾਂ:',
+'variants' => 'ਬਦਲ',
'errorpagetitle' => 'ਗਲਤੀ',
'returnto' => '$1 ਤੇ ਵਾਪਸ ਜਾਓ',
@@ -179,10 +178,10 @@ $messages = array(
'history' => 'ਸਫ਼ਾ ਅਤੀਤ',
'history_short' => 'ਅਤੀਤ',
'updatedmarker' => 'ਮੇਰੇ ਆਖਰੀ ਖੋਲà©à¨¹à¨£ ਬਾਦ ਅੱਪਡੇਟ',
-'info_short' => 'ਜਾਣਕਾਰੀ',
'printableversion' => 'ਪਰਿੰਟਯੋਗ ਵਰਜਨ',
'permalink' => 'ਪੱਕਾ ਲਿੰਕ',
'print' => 'ਪਰਿੰਟ ਕਰੋ',
+'view' => 'ਵੇਖੋ',
'edit' => 'ਬਦਲੋ',
'create' => 'ਬਣਾਓ',
'editthispage' => 'ਇਹ ਪੇਜ ਸੋਧੋ',
@@ -336,7 +335,7 @@ Note that some pages may continue to be displayed as if you were still logged in
'loginsuccesstitle' => 'ਲਾਗਇਨ ਸਫ਼ਲ ਰਿਹਾ',
'loginsuccess' => "'''ਤà©à¨¸à©€à¨‚ {{SITENAME}} ਉੱਤੇ \"\$1\" ਵਾਂਗ ਲਾਗਇਨ ਕਰ ਚà©à©±à¨•à©‡ ਹੋ।'''",
'nosuchuser' => '"$1" ਨਾਂ ਨਾਲ ਕੋਈ ਯੂਜ਼ਰ ਨਹੀਂ ਹੈ। ਆਪਣੇ ਸ਼ਬਦ ਧਿਆਨ ਨਾਲ ਚੈੱਕ ਕਰੋ ਜਾਂ ਨਵਾਂ ਅਕਾਊਂਟ ਬਣਾਓ।',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" ਨਾਂ ਨਾਲ ਕੋਈ ਵੀ ਯੂਜ਼ਰ ਨਹੀਂ ਹੈ। ਆਪਣੇ ਸ਼ਬਦ ਧਿਆਨ ਨਾਲ ਚੈੱਕ ਕਰੋ।',
+'nosuchusershort' => '"$1" ਨਾਂ ਨਾਲ ਕੋਈ ਵੀ ਯੂਜ਼ਰ ਨਹੀਂ ਹੈ। ਆਪਣੇ ਸ਼ਬਦ ਧਿਆਨ ਨਾਲ ਚੈੱਕ ਕਰੋ।',
'nouserspecified' => 'ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਕ ਯੂਜ਼ਰ-ਨਾਂ ਦੇਣਾ ਪਵੇਗਾ।',
'wrongpassword' => 'ਗਲਤ ਪਾਸਵਰਡ ਦਿੱਤਾ ਹੈ। ਮà©à©œ-ਟਰਾਈ ਕਰੋ ਜੀ।',
'wrongpasswordempty' => 'ਖਾਲੀ ਪਾਸਵਰਡ ਦਿੱਤਾ ਹੈ। ਮà©à©œ-ਟਰਾਈ ਕਰੋ ਜੀ।',
@@ -370,7 +369,7 @@ $1 ਘੰਟੇ ਵਿੱਚ। ਨà©à¨•à¨¸à¨¾à¨¨ ਤੋਂ ਬਚਣ ਲਈ, $
'createaccount-title' => '{{SITENAME}} ਲਈ ਅਕਾਊਂਟ ਬਣਾਉਣਾ',
'loginlanguagelabel' => 'ਭਾਸ਼ਾ: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ਪਾਸਵਰਡ ਬਦਲੋ',
'resetpass_announce' => 'ਤà©à¨¸à©€à¨‚ ਇੱਕ ਆਰਜ਼ੀ ਈ-ਮੇਲ ਕੀਤੇ ਕੋਡ ਨਾਲ ਲਾਗਇਨ ਕੀਤਾ ਹੈ। ਲਾਗਇਨ ਪੂਰਾ ਕਰਨ ਲਈ, ਤà©à¨¹à¨¾à¨¨à©‚à©° ਇੱਥੇ ਨਵਾਂ ਪਾਸਵਰਡ ਦੇਣਾ ਪਵੇਗਾ:',
'resetpass_header' => 'ਅਕਾਊਂਟ ਪਾਸਵਰਡ ਬਦਲੋ',
@@ -393,7 +392,6 @@ $1 ਘੰਟੇ ਵਿੱਚ। ਨà©à¨•à¨¸à¨¾à¨¨ ਤੋਂ ਬਚਣ ਲਈ, $
'link_tip' => 'ਅੰਦਰੂਨੀ ਲਿੰਕ',
'extlink_sample' => 'http://www.example.com ਲਿੰਕ ਟਾਈਟਲ',
'headline_sample' => 'ਹੈੱਡਲਾਈਨ ਟੈਕਸਟ',
-'math_tip' => 'ਗਣਿਤ ਫਾਰਮੂਲਾ (LaTeX)',
'image_tip' => 'ਇੰਬੈੱਡ ਚਿੱਤਰ',
'media_tip' => 'ਮੀਡਿਆ ਫਾਇਲ ਲਿੰਕ',
'sig_tip' => 'ਟਾਈਮ-ਸਟੈਂਪ ਨਾਲ ਤà©à¨¹à¨¾à¨¡à©‡ ਦਸਤਖਤ',
@@ -493,35 +491,43 @@ $1 ਘੰਟੇ ਵਿੱਚ। ਨà©à¨•à¨¸à¨¾à¨¨ ਤੋਂ ਬਚਣ ਲਈ, $
'editundo' => 'ਵਾਪਸ(undo)',
# Search results
-'searchresults' => 'ਖੋਜ ਨਤੀਜੇ',
-'searchresults-title' => '"$1" ਲਈ ਖੋਜ ਨਤੀਜੇ',
-'searchresulttext' => '{{SITENAME}} ਖੋਜ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਲਵੋ, ਵੇਖੋ [[{{MediaWiki:Helppage}}|{{int:help}}]].',
-'searchsubtitle' => 'ਤà©à¨¸à©€à¨‚ \'\'\'[[:$1]]\'\'\' ਲਈ ਖੋਜ ਕੀਤੀ ([[Special:Prefixindex/$1|"$1" ਨਾਲ ਸ਼à©à¨°à©‚ ਹà©à©°à¨¦à©‡ ਸਭ ਸਫ਼ੇ]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ਨਾਲ ਲਿੰਕ ਹੋਠਸਭ ਸਫ਼ੇ]])',
-'searchsubtitleinvalid' => "ਤà©à¨¸à©€à¨‚'''$1''' ਲਈ ਖੋਜ ਕੀਤੀ।",
-'titlematches' => 'ਆਰਟੀਕਲ ਟੈਕਸਟ ਮਿਲਦਾ',
-'notitlematches' => 'ਕੋਈ ਪੇਜ ਟਾਇਟਲ ਨਹੀਂ ਮਿਲਦਾ',
-'textmatches' => 'ਪੇਜ ਟੈਕਸਟ ਮਿਲਦਾ',
-'notextmatches' => 'ਕੋਈ ਪੇਜ ਟੈਕਸਟ ਨਹੀਂ ਮਿਲਦਾ',
-'prevn' => 'ਪਿੱਛੇ {{PLURAL:$1|$1}}',
-'nextn' => 'ਅੱਗੇ {{PLURAL:$1|$1}}',
-'viewprevnext' => 'ਵੇਖੋ ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:ਸਮੱਗਰੀ',
-'searchprofile-advanced' => 'ਤਕਨੀਕੀ',
-'searchprofile-articles-tooltip' => "$1 'ਚ ਖੋਜ",
-'search-result-size' => '$1 ({{PLURAL:$2|੧ ਸ਼ਬਦ|$2 ਸ਼ਬਦ}})',
-'search-redirect' => '($1 ਰੀ-ਡਿਰੈਕਟ)',
-'search-section' => '(ਭਾਗ $1)',
-'search-suggest' => 'ਕੀ ਤà©à¨¹à¨¾à¨¡à¨¾ ਮਤਲਬ ਸੀ: $1',
-'search-interwiki-default' => '$1 ਨਤੀਜੇ:',
-'search-interwiki-more' => '(ਹੋਰ)',
-'search-mwsuggest-enabled' => 'ਸà©à¨à¨¾à¨†à¨µà¨¾à¨‚ ਨਾਲ',
-'search-mwsuggest-disabled' => 'ਕੋਈ ਸà©à¨à¨¾à¨… ਨਹੀਂ',
-'searchall' => 'ਸਭ',
-'powersearch' => 'ਖੋਜ',
-'powersearch-legend' => 'ਤਕਨੀਕੀ ਖੋਜ',
-'powersearch-ns' => 'ਨੇਮ-ਸਪੇਸ ਵਿੱਚ ਖੋਜ:',
-'powersearch-redir' => 'ਰੀ-ਡਿਰੈਕਟ ਲਿਸਟ',
-'powersearch-field' => 'ਇਸ ਲਈ ਖੋਜ',
+'searchresults' => 'ਖੋਜ ਨਤੀਜੇ',
+'searchresults-title' => '"$1" ਲਈ ਖੋਜ ਨਤੀਜੇ',
+'searchresulttext' => '{{SITENAME}} ਖੋਜ ਬਾਰੇ ਹੋਰ ਜਾਣਕਾਰੀ ਲਵੋ, ਵੇਖੋ [[{{MediaWiki:Helppage}}|{{int:help}}]].',
+'searchsubtitle' => 'ਤà©à¨¸à©€à¨‚ \'\'\'[[:$1]]\'\'\' ਲਈ ਖੋਜ ਕੀਤੀ ([[Special:Prefixindex/$1|"$1" ਨਾਲ ਸ਼à©à¨°à©‚ ਹà©à©°à¨¦à©‡ ਸਭ ਸਫ਼ੇ]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ਨਾਲ ਲਿੰਕ ਹੋਠਸਭ ਸਫ਼ੇ]])',
+'searchsubtitleinvalid' => "ਤà©à¨¸à©€à¨‚'''$1''' ਲਈ ਖੋਜ ਕੀਤੀ।",
+'titlematches' => 'ਆਰਟੀਕਲ ਟੈਕਸਟ ਮਿਲਦਾ',
+'notitlematches' => 'ਕੋਈ ਪੇਜ ਟਾਇਟਲ ਨਹੀਂ ਮਿਲਦਾ',
+'textmatches' => 'ਪੇਜ ਟੈਕਸਟ ਮਿਲਦਾ',
+'notextmatches' => 'ਕੋਈ ਪੇਜ ਟੈਕਸਟ ਨਹੀਂ ਮਿਲਦਾ',
+'prevn' => 'ਪਿੱਛੇ {{PLURAL:$1|$1}}',
+'nextn' => 'ਅੱਗੇ {{PLURAL:$1|$1}}',
+'shown-title' => 'ਪà©à¨°à¨¤à©€ ਪੇਜ਼ $1 {{PLURAL:$1|ਨਤੀਜਾ|ਨਤੀਜੇ}} ਵੇਖਾਓ',
+'viewprevnext' => 'ਵੇਖੋ ($1 {{int:pipe-separator}} $2) ($3)',
+'searchhelp-url' => 'Help:ਸਮੱਗਰੀ',
+'searchprofile-articles' => 'ਸਮੱਗਰੀ ਪੇਜ',
+'searchprofile-project' => 'ਮੱਦਦ ਅਤੇ ਪà©à¨°à©‹à¨œà©ˆà¨•à¨Ÿ ਸਫ਼ੇ',
+'searchprofile-images' => 'ਮਲਟੀਮੀਡਿਆ',
+'searchprofile-everything' => 'ਹਰ ਚੀਜ਼',
+'searchprofile-advanced' => 'ਤਕਨੀਕੀ',
+'searchprofile-articles-tooltip' => "$1 'ਚ ਖੋਜ",
+'searchprofile-project-tooltip' => "$1 'ਚ ਖੋਜ",
+'searchprofile-images-tooltip' => 'ਫਾਇਲਾਂ ਲਈ ਖੋਜ',
+'searchprofile-everything-tooltip' => 'ਸਭ ਸਮੱਗਰੀ ਦੀ ਖੋਜ (ਟਾਕ ਸਫ਼ਿਆਂ ਸਮੇਤ)',
+'search-result-size' => '$1 ({{PLURAL:$2|੧ ਸ਼ਬਦ|$2 ਸ਼ਬਦ}})',
+'search-redirect' => '($1 ਰੀ-ਡਿਰੈਕਟ)',
+'search-section' => '(ਭਾਗ $1)',
+'search-suggest' => 'ਕੀ ਤà©à¨¹à¨¾à¨¡à¨¾ ਮਤਲਬ ਸੀ: $1',
+'search-interwiki-default' => '$1 ਨਤੀਜੇ:',
+'search-interwiki-more' => '(ਹੋਰ)',
+'search-mwsuggest-enabled' => 'ਸà©à¨à¨¾à¨†à¨µà¨¾à¨‚ ਨਾਲ',
+'search-mwsuggest-disabled' => 'ਕੋਈ ਸà©à¨à¨¾à¨… ਨਹੀਂ',
+'searchall' => 'ਸਭ',
+'powersearch' => 'ਖੋਜ',
+'powersearch-legend' => 'ਤਕਨੀਕੀ ਖੋਜ',
+'powersearch-ns' => 'ਨੇਮ-ਸਪੇਸ ਵਿੱਚ ਖੋਜ:',
+'powersearch-redir' => 'ਰੀ-ਡਿਰੈਕਟ ਲਿਸਟ',
+'powersearch-field' => 'ਇਸ ਲਈ ਖੋਜ',
# Quickbar
'qbsettings' => 'ਤà©à¨°à©°à¨¤ ਬਾਰ',
@@ -536,7 +542,6 @@ $1 ਘੰਟੇ ਵਿੱਚ। ਨà©à¨•à¨¸à¨¾à¨¨ ਤੋਂ ਬਚਣ ਲਈ, $
'changepassword' => 'ਪਾਸਵਰਡ ਬਦਲੋ',
'prefs-skin' => 'ਸਕਿਨ',
'skin-preview' => 'à¨à¨²à¨•',
-'prefs-math' => 'ਗਣਿਤ',
'datedefault' => 'ਕੋਈ ਪਸੰਦ ਨਹੀਂ',
'prefs-datetime' => 'ਮਿਤੀ ਅਤੇ ਸਮਾਂ',
'prefs-personal' => 'ਯੂਜ਼ਰ ਪਰੋਫਾਇਲ',
@@ -603,22 +608,26 @@ $1 ਘੰਟੇ ਵਿੱਚ। ਨà©à¨•à¨¸à¨¾à¨¨ ਤੋਂ ਬਚਣ ਲਈ, $
'rightsnone' => '(ਕੋਈ ਨਹੀਂ)',
# Recent changes
-'recentchanges' => 'ਤਾਜ਼ਾ ਬਦਲਾਅ',
-'rcshowhideminor' => '$1 ਛੋਟੀਆਂ ਸੋਧਾਂ',
-'rcshowhidebots' => '$1 ਬੋਟ',
-'rcshowhideliu' => '$1 ਲਾਗਇਨ ਹੋਠਯੂਜ਼ਰ',
-'rcshowhideanons' => '$1 ਅਗਿਆਤ ਯੂਜ਼ਰ',
-'rcshowhidemine' => '$1 ਮੇਰਾ à¨à¨¡à¨¿à¨Ÿ',
-'diff' => 'ਅੰਤਰ',
-'hist' => 'ਅਤੀਤ',
-'hide' => 'ਓਹਲੇ',
-'show' => 'ਵੇਖੋ',
-'minoreditletter' => 'ਛ',
-'newpageletter' => 'ਨ',
-'boteditletter' => 'ਬ',
-'rc_categories_any' => 'ਕੋਈ ਵੀ',
-'rc-enhanced-expand' => 'ਵੇਰਵਾ ਵੇਖੋ (ਜਾਵਾਸਕà©à¨°à¨¿à¨ªà¨Ÿ ਲੋੜੀਦੀ ਹੈ)',
-'rc-enhanced-hide' => 'ਵੇਰਵਾ ਓਹਲੇ',
+'recentchanges' => 'ਤਾਜ਼ਾ ਬਦਲਾਅ',
+'recentchanges-legend' => 'ਤਾਜ਼ਾ ਬਦਲਾਅ ਚੋਣਾਂ',
+'recentchanges-label-newpage' => 'ਇਹ ਸੋਧ ਨੇ ਨਵਾਂ ਸਫ਼ਾ ਬਣਾਇਆ ਹੈ',
+'recentchanges-label-minor' => 'ਇਹ ਛੋਟੀ ਸੋਧ ਹੈ',
+'recentchanges-label-bot' => 'ਇਹ ਸੋਧ ਨੂੰ ਬੋਟ ਵਲੋਂ ਕੀਤਾ ਗਿਆ ਹੈ',
+'rcshowhideminor' => '$1 ਛੋਟੀਆਂ ਸੋਧਾਂ',
+'rcshowhidebots' => '$1 ਬੋਟ',
+'rcshowhideliu' => '$1 ਲਾਗਇਨ ਹੋਠਯੂਜ਼ਰ',
+'rcshowhideanons' => '$1 ਅਗਿਆਤ ਯੂਜ਼ਰ',
+'rcshowhidemine' => '$1 ਮੇਰਾ à¨à¨¡à¨¿à¨Ÿ',
+'diff' => 'ਅੰਤਰ',
+'hist' => 'ਅਤੀਤ',
+'hide' => 'ਓਹਲੇ',
+'show' => 'ਵੇਖੋ',
+'minoreditletter' => 'ਛ',
+'newpageletter' => 'ਨ',
+'boteditletter' => 'ਬ',
+'rc_categories_any' => 'ਕੋਈ ਵੀ',
+'rc-enhanced-expand' => 'ਵੇਰਵਾ ਵੇਖੋ (ਜਾਵਾਸਕà©à¨°à¨¿à¨ªà¨Ÿ ਲੋੜੀਦੀ ਹੈ)',
+'rc-enhanced-hide' => 'ਵੇਰਵਾ ਓਹਲੇ',
# Recent changes linked
'recentchangeslinked' => 'ਸਬੰਧਿਤ ਬਦਲਾਅ',
@@ -716,6 +725,9 @@ to upload files.',
'mimetype' => 'MIME ਕਿਸਮ:',
'download' => 'ਡਾਊਨਲੋਡ',
+# Random page
+'randompage' => 'ਰਲਵਾਂ ਪੇਜ਼',
+
# Statistics
'statistics' => 'ਅੰਕੜੇ',
'statistics-header-pages' => 'ਸਫ਼ਾ ਅੰਕੜੇ',
@@ -801,7 +813,6 @@ to upload files.',
'watchlist' => 'ਮੇਰੀ ਵਾਚ-ਲਿਸਟ',
'mywatchlist' => 'ਮੇਰੀ ਵਾਚ-ਲਿਸਟ',
'watchnologin' => 'ਲਾਗਇਨ ਨਹੀਂ',
-'addedwatch' => 'ਵਾਚ-ਲਿਸਟ ਵਿੱਚ ਸ਼ਾਮਲ',
'watch' => 'ਵਾਚ',
'watchthispage' => 'ਇਹ ਪੇਜ ਵਾਚ ਕਰੋ',
'unwatch' => 'ਅਣ-ਵਾਚ',
@@ -890,34 +901,30 @@ to upload files.',
'whatlinkshere-filters' => 'ਫਿਲਟਰ',
# Block/unblock
-'blockip' => 'ਯੂਜ਼ਰ ਬਲਾਕ ਕਰੋ',
-'ipaddress' => 'IP à¨à¨¡à¨°à©ˆà©±à¨¸:',
-'ipadressorusername' => 'IP à¨à¨¡à¨°à©ˆà¨¸ ਜਾਂ ਯੂਜ਼ਰ ਨਾਂ:',
-'ipbexpiry' => 'ਮਿਆਦ:',
-'ipbreason' => 'ਕਾਰਨ:',
-'ipbreasonotherlist' => 'ਹੋਰ ਕਾਰਨ',
-'ipbanononly' => 'ਕੇਵਲ ਅਗਿਆਤ(anonymous) ਯੂਜ਼ਰਾਂ ਲਈ ਪਾਬੰਦੀ',
-'ipbsubmit' => 'ਇਹ ਯੂਜ਼ਰ ਲਈ ਪਾਬੰਦੀ',
-'ipbother' => 'ਹੋਰ ਟਾਈਮ:',
-'ipbotheroption' => 'ਹੋਰ',
-'ipbotherreason' => 'ਹੋਰ/ਆਮ ਕਾਰਨ:',
-'badipaddress' => 'ਗਲਤ IP à¨à¨¡à¨°à©ˆà©±à¨¸',
-'ipb-unblock-addr' => '$1 ਅਣ-ਬਲਾਕ',
-'ipb-unblock' => 'ਇੱਕ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ IP à¨à¨¡à¨°à©ˆà©±à¨¸ ਅਣ-ਬਲਾਕ ਕਰੋ',
-'unblockip' => 'ਯੂਜ਼ਰ ਅਣ-ਬਲਾਕ ਕਰੋ',
-'ipblocklist-username' => 'ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ IP à¨à¨¡à¨°à©ˆà©±à¨¸:',
-'ipblocklist-submit' => 'ਖੋਜ',
-'blocklistline' => '$1, $2 ਬਲਾਕ $3 ($4)',
-'infiniteblock' => 'ਬੇਅੰਤ',
-'expiringblock' => '$1 $2 ਮਿਆਦ ਖਤਮ',
-'anononlyblock' => 'anon. ਹੀ',
-'emailblock' => 'ਈਮੇਲ ਬਲਾਕ ਹੈ',
-'blocklink' => 'ਬਲਾਕ',
-'unblocklink' => 'ਅਣ-ਬਲਾਕ',
-'change-blocklink' => 'ਬਲਾਕ ਬਦਲੋ',
-'contribslink' => 'ਯੋਗਦਾਨ',
-'unblocklogentry' => '$1 ਤੋਂ ਪਾਬੰਦੀ ਹਟਾਈ',
-'proxyblocksuccess' => 'ਪੂਰਾ ਹੋਇਆ',
+'blockip' => 'ਯੂਜ਼ਰ ਬਲਾਕ ਕਰੋ',
+'ipadressorusername' => 'IP à¨à¨¡à¨°à©ˆà¨¸ ਜਾਂ ਯੂਜ਼ਰ ਨਾਂ:',
+'ipbexpiry' => 'ਮਿਆਦ:',
+'ipbreason' => 'ਕਾਰਨ:',
+'ipbreasonotherlist' => 'ਹੋਰ ਕਾਰਨ',
+'ipbsubmit' => 'ਇਹ ਯੂਜ਼ਰ ਲਈ ਪਾਬੰਦੀ',
+'ipbother' => 'ਹੋਰ ਟਾਈਮ:',
+'ipbotheroption' => 'ਹੋਰ',
+'ipbotherreason' => 'ਹੋਰ/ਆਮ ਕਾਰਨ:',
+'badipaddress' => 'ਗਲਤ IP à¨à¨¡à¨°à©ˆà©±à¨¸',
+'ipb-unblock-addr' => '$1 ਅਣ-ਬਲਾਕ',
+'ipb-unblock' => 'ਇੱਕ ਯੂਜ਼ਰ ਨਾਂ ਜਾਂ IP à¨à¨¡à¨°à©ˆà©±à¨¸ ਅਣ-ਬਲਾਕ ਕਰੋ',
+'unblockip' => 'ਯੂਜ਼ਰ ਅਣ-ਬਲਾਕ ਕਰੋ',
+'ipblocklist-submit' => 'ਖੋਜ',
+'infiniteblock' => 'ਬੇਅੰਤ',
+'expiringblock' => '$1 $2 ਮਿਆਦ ਖਤਮ',
+'anononlyblock' => 'anon. ਹੀ',
+'emailblock' => 'ਈਮੇਲ ਬਲਾਕ ਹੈ',
+'blocklink' => 'ਬਲਾਕ',
+'unblocklink' => 'ਅਣ-ਬਲਾਕ',
+'change-blocklink' => 'ਬਲਾਕ ਬਦਲੋ',
+'contribslink' => 'ਯੋਗਦਾਨ',
+'unblocklogentry' => '$1 ਤੋਂ ਪਾਬੰਦੀ ਹਟਾਈ',
+'proxyblocksuccess' => 'ਪੂਰਾ ਹੋਇਆ',
# Developer tools
'lockdb' => 'ਡਾਟਾਬੇਸ ਲਾਕ',
@@ -1028,9 +1035,6 @@ to upload files.',
# Spam protection
'spamprotectiontitle' => 'Spam ਸà©à¨°à©±à¨–ਿਆ ਫਿਲਟਰ',
-# Info page
-'infosubtitle' => 'ਸਫ਼ੇ ਦੀ ਜਾਣਕਾਰੀ',
-
# Skin names
'skinname-standard' => 'ਕਲਾਸਿਕ',
'skinname-monobook' => 'ਮੋਨੋਬà©à©±à¨•',
@@ -1038,13 +1042,6 @@ to upload files.',
'skinname-chick' => 'ਚੀਚਕ',
'skinname-simple' => 'ਸੈਂਪਲ',
-# Math errors
-'math_failure' => 'ਪਾਰਸ ਕਰਨ ਲਈ ਫੇਲà©à¨¹',
-'math_unknown_error' => 'ਅਣਜਾਣ ਗਲਤੀ',
-'math_unknown_function' => 'ਅਣਜਾਣ ਫੰਕਸ਼ਨ',
-'math_lexing_error' => 'lexing ਗਲਤੀ',
-'math_syntax_error' => 'ਸੰਟੈਕਸ ਗਲਤੀ',
-
# Patrol log
'patrol-log-auto' => '(ਆਟੋਮੈਟਿਕ)',
@@ -1053,13 +1050,12 @@ to upload files.',
'nextdiff' => 'ਅੰਤਰ ਅੱਗੇ →',
# Media information
-'thumbsize' => 'ਥੰਮਨੇਲ ਆਕਾਰ:',
-'widthheightpage' => '$1×$2, $3 ਪੇਜ਼',
-'file-info' => 'ਫਾਇਲ ਆਕਾਰ: $1, MIME ਕਿਸਮ: $2',
-'file-info-size' => '$1 × $2 ਪਿਕਸਲ, ਫਾਇਲ ਆਕਾਰ: $3, MIME ਕਿਸਮ: $4',
-'svg-long-desc' => 'SVG ਫਾਇਲ, nominally $1 × $2 pixels, file size: $3',
-'show-big-image' => 'ਪੂਰਾ ਰੈਜ਼ੋਲੇਸ਼ਨ',
-'show-big-image-thumb' => '<small>ਇਹ à¨à¨²à¨• ਦਾ ਆਕਾਰ: $1 × $2 ਪਿਕਸਲ</small>',
+'thumbsize' => 'ਥੰਮਨੇਲ ਆਕਾਰ:',
+'widthheightpage' => '$1×$2, $3 ਪੇਜ਼',
+'file-info' => 'ਫਾਇਲ ਆਕਾਰ: $1, MIME ਕਿਸਮ: $2',
+'file-info-size' => '$1 × $2 ਪਿਕਸਲ, ਫਾਇਲ ਆਕਾਰ: $3, MIME ਕਿਸਮ: $4',
+'svg-long-desc' => 'SVG ਫਾਇਲ, nominally $1 × $2 pixels, file size: $3',
+'show-big-image' => 'ਪੂਰਾ ਰੈਜ਼ੋਲੇਸ਼ਨ',
# Special:NewFiles
'newimages' => 'ਨਵੀਆਂ ਫਾਇਲਾਂ ਦੀ ਗੈਲਰੀ',
@@ -1071,7 +1067,6 @@ to upload files.',
'exif-imagewidth' => 'ਚੌੜਾਈ',
'exif-imagelength' => 'ਉਚਾਈ',
'exif-samplesperpixel' => 'ਭਾਗਾਂ ਦੀ ਗਿਣਤੀ',
-'exif-transferfunction' => 'ਟਰਾਂਸਫਰ ਫੰਕਸ਼ਨ',
'exif-imagedescription' => 'ਚਿੱਤਰ ਟਾਇਟਲ',
'exif-make' => 'ਕੈਮਰਾ ਨਿਰਮਾਤਾ',
'exif-model' => 'ਕੈਮਰਾ ਮਾਡਲ',
@@ -1109,11 +1104,9 @@ to upload files.',
'exif-gpsspeed-m' => 'ਮੀਲ ਪà©à¨°à¨¤à©€ ਘੰਟਾ',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ਸਭ',
-'imagelistall' => 'ਸਭ',
-'watchlistall2' => 'ਸਭ',
-'namespacesall' => 'ਸਭ',
-'monthsall' => 'ਸਭ',
+'watchlistall2' => 'ਸਭ',
+'namespacesall' => 'ਸਭ',
+'monthsall' => 'ਸਭ',
# E-mail address confirmation
'confirmemail' => 'ਈਮੇਲ à¨à¨¡à¨°à©ˆà©±à¨¸ ਪà©à¨¸à¨¼à¨Ÿà©€',
diff --git a/languages/messages/MessagesPag.php b/languages/messages/MessagesPag.php
index 96987e01..07292047 100644
--- a/languages/messages/MessagesPag.php
+++ b/languages/messages/MessagesPag.php
@@ -109,7 +109,7 @@ $messages = array(
'accountcreated' => 'Agawa so account',
'accountcreatedtext' => 'Agawa la so user account para $1.',
-# Password reset dialog
+# Change password dialog
'newpassword' => 'Balon password:',
# Edit page toolbar
@@ -263,7 +263,6 @@ San ipropromisam met ya insulat mo yan dili o kinopyam ya manlapo ed sakey ya pu
# Watchlist
'mywatchlist' => 'Listaan na babantayan ko',
'watchnologin' => 'Agka ni akaloob',
-'addedwatch' => 'Enyarom ed listaan na bantayan',
'addedwatchtext' => "Impila so bolong ya \"[[:\$1]]\" diad [[Special:Watchlist|listaan na babantayan]] mo. Isulat diman so saray ontombok ran idagdag o panagbalo ed sayan bolong san diad bolong na tongtongan. San akasulat ran '''mapatnag''' (bolded) ed [[Special:RecentChanges|listaan na saray sampot ran binalo]] umpian mas maganom ya nanengneng.
No labay mon ekalen may bolong diad listaan na babantayan, tapik mo labat so \"ekalen ed babantayan\" (unwatch) diad gilig ya bar.",
@@ -282,7 +281,7 @@ No labay mon ekalen may bolong diad listaan na babantayan, tapik mo labat so \"e
'confirm' => 'Paletan',
'exblank' => 'Anggapoy laman na bolong',
'actioncomplete' => 'Asumpal lan agawa',
-'deletedtext' => 'Abural lay "<nowiki>$1</nowiki>".
+'deletedtext' => 'Abural lay "$1".
Pinengneng so $2 para ed listaan na saray abural ran balo.',
'deletedarticle' => 'binural so "[[$1]]"',
'deletecomment' => 'Katonongan',
@@ -365,9 +364,6 @@ Pinengneng so $2 para ed listaan na saray abural ran balo.',
# Attribution
'lastmodifiedatby' => 'Sampot ya binalo yan bolong nen agew ya $2, $1 nen $3.',
-# Math errors
-'math_unknown_error' => 'aga-antan error',
-
# Special:NewFiles
'ilsubmit' => 'Anapen',
@@ -375,7 +371,6 @@ Pinengneng so $2 para ed listaan na saray abural ran balo.',
'exif-filesource' => 'File na pinanlapuan',
# 'all' in various places, this might be different for inflected languages
-'imagelistall' => 'amin',
'watchlistall2' => 'amin',
'namespacesall' => 'amin',
'monthsall' => 'amin',
diff --git a/languages/messages/MessagesPam.php b/languages/messages/MessagesPam.php
index b08d1057..69028a84 100644
--- a/languages/messages/MessagesPam.php
+++ b/languages/messages/MessagesPam.php
@@ -131,14 +131,6 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
'category-file-count-limited' => '{{PLURAL:$1|Ing makatuking simpan kayabe ya|Deng makatuking $1 simpan kayabe la}} king salukuyang kategoriya.',
'listingcontinuesabbrev' => 'katuglung.',
-'mainpagetext' => "'''Melaus ing pamipalyari ning MediaWiki.'''",
-'mainpagedocfooter' => "Basan me ing [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] para king impormasiun keng pamangamit ning wiki software.
-
-== Pamagumpisa ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-
'about' => 'Tungkul',
'article' => 'Kalamnan ning bulung',
'newwindow' => '(mibusni ya king bayung awang)',
@@ -178,7 +170,6 @@ Pabusten ing pamanaliling dake kapamilatan [alilan] ning suglung',
'history' => 'Amlat ning bulung',
'history_short' => 'Amlat',
'updatedmarker' => 'mibayuan manibat inyang tauli kung migbisita',
-'info_short' => 'Impormasiun',
'printableversion' => 'Kopiang malyaring i-print',
'permalink' => 'Suglung a permanenti',
'print' => 'I-print',
@@ -354,13 +345,11 @@ Pakisubukan mung pasibayu kaibat ning mapilang minutu.',
'protectedpagetext' => 'Ining bulung a iti misusi ya para eya ma-edit',
'viewsourcetext' => 'Malyari meng lon at kopian ing pikuanan (source) ning bulung a ini:',
'protectedinterface' => 'Maki interface text ya para king software ing bulung a iti. Makasara ya ba yang e mayabusu.',
-'editinginterface' => "'''Babala:''' Babie yang interface text para king software ing bulung a i-edit mu. Makayapektu la king itsura ning user interface para kareng aliwang gagamit deng pamagbayu keti. Malyari lang munta king [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] deng bisang sumaup king pamaglikas.",
+'editinginterface' => "'''Babala:''' Babie yang interface text para king software ing bulung a i-edit mu. Makayapektu la king itsura ning user interface para kareng aliwang gagamit deng pamagbayu keti. Malyari lang munta king [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] deng bisang sumaup king pamaglikas.",
'sqlhidden' => '(makasalikut ya ing SQL query)',
'cascadeprotected' => 'Makaprotekta ya king pamag-edit ing bulung a ini uling kayabe ya king makatuking {{PLURAL:$1|bulung, a|bulung, a}} a maki proteksiun uling makasalangi ya ing "tuki-tuki" o "cascading" option:
$2',
'namespaceprotected' => "Ala kang paintulut a mag-edit bulung king pirinan lagyung (namespace a) '''$1'''.",
-'customcssjsprotected' => "You do not have permission to edit this page, because it contains another user's personal settings.
-Ala kang paintulut a i-edit ya ing bulung a ini, uling atin yang personal setting ning aliwang talagamit.",
'ns-specialprotected' => 'E la malyaring i-edit deng bulung a makabukud.',
'titleprotected' => "Pinrotekta ne king pamaglalang [[User:$1|$1]] ining pamagat.
Iti ing binie nang sangkan: ''$2''.",
@@ -407,7 +396,7 @@ Pakisalangi mu la, at subukan mung pasibayu.',
'loginsuccesstitle' => 'Melaus ya ing pamag login',
'loginsuccess' => "'''Maka login na ka king {{SITENAME}} lalam ning lagyung \"\$1\".'''",
'nosuchuser' => 'Alang talagamit a maku lagyung "$1". Pakalon me pangasulat o maglalang kang bayung account.',
-'nosuchusershort' => 'Alang talagamit a maki lagyung "<nowiki>$1</nowiki>". Lon mu nung ustu ya pangasulat.',
+'nosuchusershort' => 'Alang talagamit a maki lagyung "$1". Lon mu nung ustu ya pangasulat.',
'nouserspecified' => 'Kailangan mung mamieng lagyung talagamit (username).',
'wrongpassword' => 'E ustu ing binie mung password. Pakisulat meng pasibayu.',
'wrongpasswordempty' => 'Blangku ya ing binie mung password. Pakisulat meng pasibayu.',
@@ -449,7 +438,7 @@ Kailangan mung mag-login ngeni ba meng ayalilan ing kekang password.
Malyari meng e pansinan ining mensahi, nung pamagkamali ing pamaglalang na niting account.',
'loginlanguagelabel' => 'Amanu: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Alilan ya ing account password',
'resetpass_announce' => 'Gagamit kang pansamantalang code a me e-mail keka aniang mig-login ka.
Bang mayari ing kekang pamag-login, kailangan mung mangibiling bayung password keni:',
@@ -472,8 +461,6 @@ Bang mayari ing kekang pamag-login, kailangan mung mangibiling bayung password k
'extlink_tip' => 'Suglung a palwal (tandanan me ing http:// prefix)',
'headline_sample' => 'Letra ning pamagat (headline text)',
'headline_tip' => 'Pamagat a level 2',
-'math_sample' => 'Isingit me ing formula keni',
-'math_tip' => 'Formulang pang-matematika (LaTeX)',
'nowiki_sample' => 'Keti mu isingit ing sulat a e makaayus (non-formatted text)',
'nowiki_tip' => 'E papansinan ing pamanayus a pang-wiki (wiki formatting)',
'image_tip' => 'Simpan a makalangkap (Embedded file)',
@@ -548,7 +535,7 @@ Nung migkamali kang minta keni, i-click me mu ing '''back''' (mibalik) button ni
Maliari meng [[Special:Search/{{PAGENAME}}|paintunan ining bansag ning bulung]] kareng aliwang bulung,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs],
o [{{fullurl:{{FULLPAGENAME}}|action=edit}} i-edit ing bulung a ini]</span>.',
-'userpage-userdoesnotexist' => 'E makarehistru ing account ning talagamit (user account) a "$1". Pakilawe mu nung buri meng lalangan o i-edit ing bulung a ini.',
+'userpage-userdoesnotexist' => 'E makarehistru ing account ning talagamit (user account) a "<nowiki>$1</nowiki>". Pakilawe mu nung buri meng lalangan o i-edit ing bulung a ini.',
'clearyourcache' => "'''Kapabaluan:''' Kaibat mung mig-save, maliari meng lakton ing simpan (cache) ning kekang browser ba mong akit deng miyalilan. '''Mozilla / Firefox / Safari:''' timid me ing ''Shift'' kabang ki-click me ing ''Reload'', o timid me ing ''Ctrl-Shift-R'' (''Cmd-Shift-R'' king Apple Mac); '''IE:''' timid me ing ''Ctrl'' kabang ki-click me ing ''Refresh'', o timid me ing ''Ctrl-F5''; '''Konqueror:''': i-click me mu ing ''Reload'' button, o timid me ing ''F5''; deng talagamit ning '''Opera''', mapaliaring kailangan deng laganas a linisan (i-clear) ing karelang simpan (cache) king ''Tools→Preferences''.",
'usercssyoucanpreview' => "'''Tip:''' Gamitan me ing button a 'Pakit ya ing preview' ('Show preview') ba yang subukan ing kekang bayung CSS bayu ka mag-save.",
'userjsyoucanpreview' => "'''Tip:''' Gamitan me ing button a 'Pakit ya ing preview' ('Show preview') ba yang subukan ing kekang bayung JS bayu ka mag-save.",
@@ -836,8 +823,6 @@ Pakitandanan mung maliaring e no makapanaun deng karelang index king kalamnan ni
'columns' => 'Ding asias:',
'searchresultshead' => 'Maintun',
'resultsperpage' => 'Tinud (hits) balang bulung:',
-'contextlines' => 'Gulis balang tinud:',
-'contextchars' => 'Kontekstu (patulug) balang gulis:',
'stub-threshold' => 'Angganan ning <a href="#" class="stub">stub link</a> formatting (byte):',
'recentchangesdays' => 'Deng aldong ipalto king bayung mengayalili:',
'recentchangescount' => 'Bilang da reng me-edit a ipalto king bayung mengayalili:',
@@ -1085,10 +1070,6 @@ mibalik ka at ilulan (upload) me king lalam ning bayung lagyu. [[File:$1|thumb|c
'watchthisupload' => 'Banten ya ing bulung a ini',
'filewasdeleted' => 'Ating simpan (file) a makanian lagyu a sadiang milulan, at mebura kaibat na nita.
Pakilawe me ing $1 bayu mu isundu ing pamaglulan kaniti.',
-'upload-wasdeleted' => "'''Babala: Sadia neng mebura ing simpan (file) a kekang lululan.'''
-
-Pakaisipan mu sa nung ustu ing isundu mu ing pamaglulan kaniti.
-Makabili ya keni ing tala da reng mengabura ba meng asuri:",
'filename-bad-prefix' => "Magumpisa ya king '''\"\$1\"''' ing lagyu ning simpan (file) a kekang lululan. Iti metung yang lagyung tambing dang bibie deng digital camera, at ala yang kaugnayan ketang letratu.
Mamili ka sanang lagyung mas maglarawan keng kekang simpan.",
'upload-success-subj' => 'Melaus ing pamaglulan',
@@ -1375,14 +1356,12 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlistanontext' => 'Paki $1 ba mong akit o a-edit deng laman ning kekang tala ring babanten (watchlist).',
'watchnologin' => 'E maka-login',
'watchnologintext' => 'Kailangan kang [[Special:UserLogin|maka-login]] ba meng abayu ing kekang tala ding babanten (watchlist).',
-'addedwatch' => 'Midagdag king babanten a tala.',
'addedwatchtext' => "Miragdag ya ing bulung a \"[[:\$1]]\" king kekang [[Special:Watchlist|watchlist]].
Mitala la karin deng miyalilan king bulung a iti ampo ing kayang Talk page. Lunto ya
muring '''pepakapal''' ing bulung ketang [[Special:RecentChanges|tala da reng bayung miyalilan]] ba kang e magkasakit maintun kaniti.
Nung buri meng idayu potang kayi itang bulung ketang tala da reng babanten mu, paki
click me ing \"Tuknangan ing pamagbante\" (Unwatch) king gilid na ning bulung.",
-'removedwatch' => 'Milako ya king tala da reng babanten',
'removedwatchtext' => "Ing bulung a \"[[:\$1]]\" milako ya king [[Special:Watchlist|kekang listaan da reng babanten (''watchlist'')]].",
'watch' => 'Banten',
'watchthispage' => 'Banten ya ining bulung',
@@ -1435,10 +1414,10 @@ Maliari mo muring isubli king sadia (reset) deng markang pamipabalu (notificatio
Ing talabie kapabaluan ning {{SITENAME}} a magmalasakit keka
--
Ba mong ayalilan deng pakatuldu king kekang tala ring babanten (watchlist settings), munta ka king
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Keni ka magparalang puna/komentu at maniad karagdagang saup:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Buran ya ing bulung',
@@ -1453,7 +1432,7 @@ Keni ka magparalang puna/komentu at maniad karagdagang saup:
'confirmdeletetext' => 'Buburan mu ne ing metung a bulung, kayabe na ing mabilug nang amlat/kasalesayan.
Pakikumpirma nung ini pin ing buri mung gawan, nung aintindian mu ing eganaganang kabaldugan na niti, at nung daraptan mu iti agpang king [[{{MediaWiki:Policy-url}}|patakaran]].',
'actioncomplete' => 'Ing dapat mebuu ne.',
-'deletedtext' => 'Mebura ya ing "<nowiki>$1</nowiki>".
+'deletedtext' => 'Mebura ya ing "$1".
Makasulat la king $2 deng pekabayung mebura.',
'deletedarticle' => 'mebura ne ing "[[$1]]"',
'suppressedarticle' => 'mesabat ya ing "[[$1]]"',
@@ -1510,7 +1489,7 @@ Lon me ing [[Special:ProtectedPages|tala ring bulung a protektadu/makakambil]] p
'protectexpiry' => 'Mayari ya keng:',
'protect_expiry_invalid' => 'E matatanggap ing panaun nung kapilan ya mayari.',
'protect_expiry_old' => 'Keta ya pang milabas ing panaun a miyari ya.',
-'protect-text' => "Malyari meng lon at alilan ing sikan ning proteksiun (protection level) para king bulung keti '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Malyari meng lon at alilan ing sikan ning proteksiun (protection level) para king bulung keti '''$1'''.",
'protect-locked-blocked' => "E mo maliaring alilan deng sikan/lebel ning proteksiun kabang makasabat ka.
Deni reng kasalungsungan a makatuldu (settings) para king bulung '''$1''':",
'protect-locked-dblock' => "E la maliaring alilan deng sikan/lebel ning proteksiun uling kasalungsungan yang makasara ing database. Deni reng pakatuldu (settings) para king bulung '''$1''':",
@@ -1655,7 +1634,6 @@ mu nung sanu retang bulung a sinira da).',
** Mamatakut o maniaul
** Mamabusu kareng dakal a account
** E katanggap-tanggap a lagyungtalagamit (username)',
-'ipbanononly' => 'Den mung talagamit a pepakilala ing sabatan',
'ipbcreateaccount' => 'Sabatan ing pamaglalang account',
'ipbemailban' => 'Sabatan ing pamagparla nang e-mail ning talagamit',
'ipbenableautoblock' => 'Tambing yang sabatan ing tauling IP address a ginamit ning talagamit a ini, at deng IP nung nu na pa subukang mag-edit',
@@ -1680,9 +1658,7 @@ mu nung sanu retang bulung a sinira da).',
'unblocked-id' => 'Milako ing Sabat (Block) $1',
'ipblocklist' => "Deng IP address ampong lagiungtalagamit (''username'') a makasabat",
'ipblocklist-legend' => 'Maintun talagamit a makasabat',
-'ipblocklist-username' => 'Lagyungtalagamit (username) o IP address:',
'ipblocklist-submit' => 'Manintun',
-'blocklistline' => '$1, $2 mesabat $3 ($4)',
'infiniteblock' => 'alang kapupusan',
'expiringblock' => 'mayari ya keng $1 $2',
'anononlyblock' => 'anon. bukud tangi',
@@ -1700,7 +1676,7 @@ mu nung sanu retang bulung a sinira da).',
'blocklogentry' => 'Mesabat ya ing "[[$1]]" a mapupus kilub ning $2 $3',
'blocklogtext' => 'Ini tala (log) de reng pamaniabat ampong pamaglako pangasabat kareng talagamit.
E la makabili deng IP address a tambing nang makasabat.
-Lon me ing [[Special:IPBlockList|IP block list]] para king tala da reng kasalungsungan a makabawal o makasabat.',
+Lon me ing [[Special:BlockList|IP block list]] para king tala da reng kasalungsungan a makabawal o makasabat.',
'unblocklogentry' => 'milako pangasabat $1',
'block-log-flags-anononly' => 'den mung gagamit a e pepakilala',
'block-log-flags-nocreate' => 'pamilalang account e malyari',
@@ -1941,9 +1917,7 @@ Paintulutan na ing pamandagdag king sangkan king sampulung (''summary'').",
'common.js' => '/* Agiang nanung JavaScript a atiu keni misampa la kareng eganaganang gagamit balang misampang bulung. */',
# Metadata
-'nodublincore' => 'Makapatda ya ing Dublin Core RDF metadata para king server a ini.',
-'nocreativecommons' => 'Makapatda ya ing Creative Commons RDF metadata para king server a ini.',
-'notacceptable' => 'E makapamieng data king ayus (format) a abasa ning kekang client ing wiki server.',
+'notacceptable' => 'E makapamieng data king ayus (format) a abasa ning kekang client ing wiki server.',
# Attribution
'anonymous' => 'Ing/Deng gagamit king {{SITENAME}} a e pepakilala.',
@@ -1965,35 +1939,6 @@ Mapaliaring ing sangkan metung yang suglung king karinan king kilual (link to an
'spam_reverting' => 'Misusubli ya king tauling bersion a yalang suglung king $1',
'spam_blanking' => 'Deng anggang pamagbayung maki suglung king $1, magblangku',
-# Info page
-'infosubtitle' => 'Impormasiun king bulung',
-'numedits' => 'Bilang da reng me-edit (bulung): $1',
-'numtalkedits' => 'Bilang da reng me-edit (bulung pamisabi-sabi): $1',
-'numwatchers' => 'Bilang da reng talabante: $1',
-'numauthors' => 'Taganang bilang da reng talasulat (bulung): $1',
-'numtalkauthors' => 'Taganang bilang da reng talasulat (bulung pamisabi-sabi): $1',
-
-# Math options
-'mw_math_png' => 'Pane yang pakit king ayus/format a PNG',
-'mw_math_simple' => 'HTML nung simpli yang tagana, at nung ali, PNG',
-'mw_math_html' => 'HTML nung maliari, at nung ali, PNG',
-'mw_math_source' => 'Paburen yang TeX (para kareng text browser)',
-'mw_math_modern' => 'Rerekomenda de kareng makabayung browser',
-'mw_math_mathml' => 'MathML nung maliari (susubukan da pamu [experimental])',
-
-# Math errors
-'math_failure' => 'E melaus ing pamag-parse',
-'math_unknown_error' => 'e makikilalang pamagkamali',
-'math_unknown_function' => 'e makikilalang gamit (unknown function)',
-'math_lexing_error' => 'pamagkamali king lexing',
-'math_syntax_error' => 'pamagkamali king pamituki-tuki (syntax error)',
-'math_image_error' => 'E melaus ing pamanalis king PNG;
-siguraduan mu ing ustung pamag-install king latex, dvips, gs, at kaibat iyalis (i-convert) me',
-'math_bad_tmpdir' => 'E makasulat king o makapaglalang piyakitan (directory) a math temp',
-'math_bad_output' => 'E makasulat king o makapaglalang piyakitan (directory) a math output',
-'math_notexvc' => 'Mawawala ya ing texvc executable;
-pakilawe me ing math/README ba meng i-configure.',
-
# Patrolling
'markaspatrolleddiff' => 'Tatakan yang babanten (patrolled)',
'markaspatrolledtext' => 'Tatakan yang babanten da (patrolled) ing bulung a ini',
@@ -2025,16 +1970,15 @@ $1',
'nextdiff' => 'Mas bayung edit/pamanalili →',
# Media information
-'mediawarning' => "'''Kapiadian''': Mapaliaring atin yang code a makarok (malicious) ing simpan (file) a ini, at nung paganan me, maliari yang masira ing kekang system.",
-'imagemaxsize' => 'E la dapat migit king bilang a iti deng larawan kareng bulung pamilarawan simpan (file description pages):',
-'thumbsize' => 'Kasindagul kuku (thumbnail size):',
-'widthheightpage' => '$1×$2, $3 bulung',
-'file-info' => 'dagul ning simpan [file]: $1, MIME type: $2',
-'file-info-size' => '$1 × $2 pixel, sukad ning simpan: $3, MIME type: $4',
-'file-nohires' => '<small>Ala nang mas malino pa.</small>',
-'svg-long-desc' => 'SVG file, masasabing $1 × $2 pixels, dagul ning simpan: $3',
-'show-big-image' => 'Pekamalino',
-'show-big-image-thumb' => '<small>Dagul na niting preview: $1 × $2 pixels</small>',
+'mediawarning' => "'''Kapiadian''': Mapaliaring atin yang code a makarok (malicious) ing simpan (file) a ini, at nung paganan me, maliari yang masira ing kekang system.",
+'imagemaxsize' => 'E la dapat migit king bilang a iti deng larawan kareng bulung pamilarawan simpan (file description pages):',
+'thumbsize' => 'Kasindagul kuku (thumbnail size):',
+'widthheightpage' => '$1×$2, $3 bulung',
+'file-info' => 'dagul ning simpan [file]: $1, MIME type: $2',
+'file-info-size' => '$1 × $2 pixel, sukad ning simpan: $3, MIME type: $4',
+'file-nohires' => '<small>Ala nang mas malino pa.</small>',
+'svg-long-desc' => 'SVG file, masasabing $1 × $2 pixels, dagul ning simpan: $3',
+'show-big-image' => 'Pekamalino',
# Special:NewFiles
'newimages' => 'Pirinan kareng bayung simpan (new files)',
@@ -2067,7 +2011,13 @@ Detang aliwa tambing (by default) lang makasalikut.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Lapad',
@@ -2082,7 +2032,6 @@ Detang aliwa tambing (by default) lang makasalikut.
'exif-yresolution' => 'Linong patikdo (vertical resolution)',
'exif-stripoffsets' => 'Pangabili ning data tungkul king larawan (image data location)',
'exif-jpeginterchangeformatlength' => 'Byte ning JPEG data',
-'exif-transferfunction' => 'Gamit a pamanalis (transfer function)',
'exif-primarychromaticities' => 'Chromaticities da reng primarities',
'exif-referenceblackwhite' => 'Paris da reng maputi ampong matuling a reference value',
'exif-datetime' => 'Petsa ampong oras ning pamanaliling simpan (file change)',
@@ -2099,7 +2048,6 @@ Detang aliwa tambing (by default) lang makasalikut.
'exif-compressedbitsperpixel' => 'Paralan/ayus pamamitpit larawan (image compression mode)',
'exif-pixelydimension' => 'Ustung lapad ning larawan',
'exif-pixelxdimension' => 'Ustung katas ning larawan',
-'exif-makernote' => 'Kapabaluan ibat king ginawa (manufacturer notes)',
'exif-usercomment' => 'Komentu da ring talagamit',
'exif-relatedsoundfile' => 'Makaugneng simpan a katni (audio file)',
'exif-datetimeoriginal' => 'Petsa ampong oras ning pamaglalang king data (data generation)',
@@ -2258,14 +2206,12 @@ Detang aliwa tambing (by default) lang makasalikut.
# External editor support
'edit-externally' => 'I-edit me ing simpan a ini kapamilatan ning aplikasiun o program a ibat king kilual.',
-'edit-externally-help' => '(Lon me ing [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] para king karagdagang informacion)',
+'edit-externally-help' => '(Lon me ing [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] para king karagdagang informacion)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'eganagana',
-'imagelistall' => 'eganagana',
-'watchlistall2' => 'eganagana',
-'namespacesall' => 'ila ngan',
-'monthsall' => 'eganagana',
+'watchlistall2' => 'eganagana',
+'namespacesall' => 'ila ngan',
+'monthsall' => 'eganagana',
# E-mail address confirmation
'confirmemail' => 'Patutwan mung keka ya itang e-mail address',
diff --git a/languages/messages/MessagesPap.php b/languages/messages/MessagesPap.php
index c23ff5bb..58259697 100644
--- a/languages/messages/MessagesPap.php
+++ b/languages/messages/MessagesPap.php
@@ -74,7 +74,6 @@ $messages = array(
'search' => 'Buska',
'history' => 'Historia di página',
'history_short' => 'Historia',
-'info_short' => 'Informashon',
'edit' => 'Editá',
'editthispage' => 'Editá e página aki',
'delete' => 'Kita',
@@ -298,14 +297,12 @@ Bo e-mail adrès (manera ta pará den bo preferensianan) lo aparesé den e e-mai
'watchlist' => 'Mi lista di observashon',
'nowatchlist' => 'Bo lista di observashon ta bashí.',
'watchnologintext' => 'Bo mester [[Special:UserLogin|outentiká bo mes]] pa modifiká bo lista di observashon.',
-'addedwatch' => 'Añadí na lista di observashon',
'addedwatchtext' => "E página \"[[:\$1]]\" tabata añadí na bo [[Special:Watchlist|lista di observashon]].
Lo lista kambionan hasí na e página aki i su página di diskushon einan,
i e página lo aparesé '''vet''' den e [[Special:RecentChanges|lista di kambionan resien]] pa
e ta mas fásil pa bo mira.
Si despues bo ke kita e página for di bo lista di observashon, primi \"Stop di observá\" den e menú ariba.",
-'removedwatch' => 'Kitá for di lista di observashon',
'watch' => 'Observá',
'watchthispage' => 'Observá e página aki',
'unwatch' => 'Stop di observá',
@@ -368,17 +365,13 @@ Por fabor skohe un otro título.',
# Attribution
'anonymous' => 'Uzadó(nan) anonimo di {{SITENAME}}',
-# Info page
-'infosubtitle' => 'Informashon pa página',
-
# Browsing diffs
'previousdiff' => '↠Diferensia anterior',
'nextdiff' => 'Siguiente diferensia →',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tur',
-'watchlistall2' => 'tur',
-'namespacesall' => 'tur',
+'watchlistall2' => 'tur',
+'namespacesall' => 'tur',
# E-mail address confirmation
'confirmemail' => 'Konfirmá e-mail adrès',
diff --git a/languages/messages/MessagesPcd.php b/languages/messages/MessagesPcd.php
index 02a94ad5..2895b5aa 100644
--- a/languages/messages/MessagesPcd.php
+++ b/languages/messages/MessagesPcd.php
@@ -122,8 +122,6 @@ $messages = array(
'category-file-count-limited' => "{{PLURAL:$1|Ech fichié d'apré est|Chés $1 fichiés d'apré sont}} dins l'catégorie-lo.",
'listingcontinuesabbrev' => 'cont.',
-'mainpagetext' => "'''MediaWiki o té instalé aveuc victoère.'''",
-
'about' => 'À pérpos',
'article' => 'Étnu del pache',
'newwindow' => '(ouvrir din eune nouvèle fernéte)',
@@ -174,10 +172,10 @@ $messages = array(
'history' => 'Historique deul pache',
'history_short' => 'Histoère',
'updatedmarker' => 'Cangé édpui em darinne visite',
-'info_short' => 'Informachion',
'printableversion' => 'Imprimabe vérchon',
'permalink' => 'Loïen pérmanint',
'print' => 'Imprimer',
+'view' => 'Vir',
'edit' => 'Éditer',
'create' => 'Créer',
'editthispage' => "Éditer chl'pache-lo",
@@ -185,6 +183,7 @@ $messages = array(
'delete' => 'Défacer',
'deletethispage' => "Défacer chl'pache lo",
'undelete_short' => 'Déface poin {{PLURAL:$1|un édite|$1 édites}}',
+'viewdeleted_short' => '{{PLURAL:$1|eune édition défacée|$1 éditions défacées}}',
'protect' => 'Garantir',
'protect_change' => 'canger',
'protectthispage' => "Défènner l'pache",
@@ -347,7 +346,7 @@ j'm'escuse mais i feut prinde un aute nom.",
'accountcreatedtext' => "Ech conpte d'uzeu pou $1 o té créé.",
'loginlanguagelabel' => 'Langache: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => "Canger ch'mot d'passe",
'resetpass_header' => "Canger ch'mot d'passe dech conpte",
'oldpassword' => "Anthiu mot d'passe:",
@@ -366,8 +365,6 @@ j'm'escuse mais i feut prinde un aute nom.",
'extlink_tip' => "Éstérne loïen ( n'obliez mie ech préfix http:// )",
'headline_sample' => 'Teske dechl in-téte',
'headline_tip' => 'In-téte nivieu 2',
-'math_sample' => "Mètte l'formule ichi",
-'math_tip' => 'Formule matématike (LaTeX)',
'nowiki_sample' => "Placher ch'teske non-formaté ichi",
'nowiki_tip' => "Poin d'format wiki",
'image_tip' => 'fichié incorporé',
@@ -613,9 +610,7 @@ Ale doét mie éte pu longue éq $1 {{PLURAL:$1|caracter|caractéres}}.',
# Watchlist
'watchlist' => 'Em lisse à suire',
'mywatchlist' => "M'lisse à suire",
-'addedwatch' => "Rajouté su l'lisse à suire",
'addedwatchtext' => "L' pache « [[:$1]] » o té rajoutée à vote [[Special:Watchlist|lisse à suire]].<br /> Chés canjemints à vnir del pache-lo pi del page éd pérlache sront mis din l'lisse. L'pache sro '''in cros''' din el [[Special:RecentChanges|lisse d'chés darins canjemints]] pou les értreuver fachilmint. Pou értirer chol pache del ''lisse à suire'', bukez su « {{MediaWiki:Unwatch}} ».",
-'removedwatch' => 'Értiré del lisse à suire',
'removedwatchtext' => "L'pache « [[:$1]] » o té értirée éd vote [[Special:Watchlist|lisse à suire]].",
'watch' => 'Suire',
'watchthispage' => "Suire l'pache-lo",
@@ -632,7 +627,7 @@ Ale doét mie éte pu longue éq $1 {{PLURAL:$1|caracter|caractéres}}.',
'deletepage' => "Défacer l'pache",
'confirmdeletetext' => "Vos alez défacer eune pache ou un fichié aveuc toutes chés antieusses vérchons.<br /> Confreumer éq ch'est cho éq vos voulez foaire, éq vos conprindez chés consécanches et pi éq ch'est bin s'lon el [[{{MediaWiki:Policy-url}}|politique éd MédiaWiki]].",
'actioncomplete' => 'Plònne acchon',
-'deletedtext' => "« <nowiki>$1</nowiki> » o té défacé.
+'deletedtext' => "« $1 » o té défacé.
Vir $2 pou eune lisse d'chés darinnes défachons.",
'deletedarticle' => 'défacé "[[$1]]"',
'dellogpage' => 'jornal éd chés défacions',
@@ -658,7 +653,7 @@ L' passèie édition del pache étoait par [[User:$3|$3]] ([[User talk:$3|Talk]
'protectexpiry' => "Date d'éspirachon:",
'protect_expiry_invalid' => "L'date d'éspirachon ale n'est mie possibe.",
'protect_expiry_old' => "L'date d'éspirachon ale est déjo érpassée.",
-'protect-text' => "Os pouvez vir pi canger ech nivieu d'protécchon ichi pou l'pache-lo '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Os pouvez vir pi canger ech nivieu d'protécchon ichi pou l'pache-lo '''$1'''.",
'protect-locked-access' => "Vos n’avez poin chés droés pou canger chés nivieus d'protécchon des paches.<br />
Vlo chés réglages del pache '''$1''' à ch'momint-chi:",
'protect-cascadeon' => "L'pache-lo ale est garantie ker ale est incluse din {{PLURAL:$1|eune pache qu'o té garantie|des paches éq ont té garanties}} aveuc l'option « protécchon in cascate» écanillée. <br /> Os povez canger ch'nivieu d'garantie del pache mais el garantie in cascate n'sro poin cangée.",
@@ -829,19 +824,15 @@ Os pouvez vir l'source",
'tooltip-undo' => "« Undo » ( ''démangler'' ) értire ch'canjemint-lo pi ouvre l' fénéte d'édichon din ch'mode ''prévir''. <br /> In put mette un motif din ch'résumé.",
'tooltip-preferences-save' => 'Warder chés préférinches.',
-# Info page
-'numedits' => 'Nombe ed canjemints (pache) : $1',
-
# Browsing diffs
'previousdiff' => '↠Pu vieille édition',
'nextdiff' => 'Nouvèle édichon →',
# Media information
-'file-info-size' => '$1 × $2 picséls, diminchon dech fichié: $3, MIME tipe: $4',
-'file-nohires' => '<small>Poin éd pu grande résoluchon possibe.</small>',
-'svg-long-desc' => 'Fichié SVG, résoluchon éd $1 × $2 picsels, diminchon: $3',
-'show-big-image' => 'Plinne résoluchon',
-'show-big-image-thumb' => '<small>Diminchon del intérvue-lo : $1 × $2 picséls</small>',
+'file-info-size' => '$1 × $2 picséls, diminchon dech fichié: $3, MIME tipe: $4',
+'file-nohires' => '<small>Poin éd pu grande résoluchon possibe.</small>',
+'svg-long-desc' => 'Fichié SVG, résoluchon éd $1 × $2 picsels, diminchon: $3',
+'show-big-image' => 'Plinne résoluchon',
# Bad image list
'bad_image_list' => "Ch'format ch'est:
@@ -861,11 +852,17 @@ Chés eutes cans is s'ront muchés pèr défeut.
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# External editor support
'edit-externally' => "Éditer ch'fichié-lo aveuc eune éstérne aplicachon",
-'edit-externally-help' => '(Vir [http://www.mediawiki.org/wiki/Manual:External_editors/fr chés instruccions d’installachon] pou pus d’informachons)',
+'edit-externally-help' => '(Vir [//www.mediawiki.org/wiki/Manual:External_editors/fr chés instruccions d’installachon] pou pus d’informachons)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tertous',
diff --git a/languages/messages/MessagesPdc.php b/languages/messages/MessagesPdc.php
index 9a6a1f55..1e7dca5d 100644
--- a/languages/messages/MessagesPdc.php
+++ b/languages/messages/MessagesPdc.php
@@ -13,6 +13,47 @@
$fallback = 'de';
+$namespaceNames = array(
+ NS_TALK => 'Dischbedutt',
+ NS_USER => 'Yuuser',
+ NS_USER_TALK => 'Yuuser_Dischbedutt',
+ NS_PROJECT_TALK => '$1_Dischbedutt',
+ NS_FILE => 'Feil',
+ NS_FILE_TALK => 'Feil_Dischbedutt',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_Dischbedutt',
+ NS_TEMPLATE => 'Moddel',
+ NS_TEMPLATE_TALK => 'Moddel_Dischbedutt',
+ NS_HELP => 'Hilf',
+ NS_HELP_TALK => 'Hilf_Dischbedutt',
+ NS_CATEGORY => 'Abdeeling',
+ NS_CATEGORY_TALK => 'Abdeeling_Dischbedutt',
+);
+
+$namespaceAliases = array(
+ # German namespaces
+ 'Medium' => NS_MEDIA,
+ 'Spezial' => NS_SPECIAL,
+ 'Diskussion' => NS_TALK,
+ 'Benutzer' => NS_USER,
+ 'Benutzer_Diskussion' => NS_USER_TALK,
+ '$1_Diskussion' => NS_PROJECT_TALK,
+ 'Datei' => NS_FILE,
+ 'Datei_Diskussion' => NS_FILE_TALK,
+ 'MediaWiki_Diskussion' => NS_MEDIAWIKI_TALK,
+ 'Vorlage' => NS_TEMPLATE,
+ 'Vorlage_Diskussion' => NS_TEMPLATE_TALK,
+ 'Hilfe' => NS_HELP,
+ 'Hilfe_Diskussion' => NS_HELP_TALK,
+ 'Kategorie' => NS_CATEGORY,
+ 'Kategorie_Diskussion' => NS_CATEGORY_TALK,
+);
+
+$specialPageAliases = array(
+ 'Listadmins' => array( 'Verwalter', 'Administratoren' ),
+ 'Listbots' => array( 'Waddefresser', 'Bots' ),
+ 'Search' => array( 'Uffgucke', 'Suche' ),
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'Gleecher unnerleine:',
@@ -83,18 +124,11 @@ $messages = array(
'category_header' => 'Bledder in Abdeeling „$1“',
'subcategories' => 'Unnerabdeeling',
'category-media-header' => 'Media in Abdeeling „$1“',
+'category-empty' => "''Die Abdeeling hot zu daere Zeit kene Bledder oder Feils.''",
'category-article-count-limited' => '{{PLURAL:$1|Sell Blatt iss|Selle $1 Bledder sin}} in daer Abdeeling drin:',
'category-file-count-limited' => '{{PLURAL:$1|Sell Feil iss|Selle $1 Feils sin}} in daer Abdeeling drin:',
'listingcontinuesabbrev' => '(weider)',
-'mainpagedocfooter' => "Hilf fer's Yuuse unn Konfiguriere vun de Wiki-Software kansch finne im [http://meta.wikimedia.org/wiki/Help:Contents Handbuch fer Yuuser].
-
-== Hilf zum Schtaerte ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lischt vun Gnepp zum Konfiguriere]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Eposchde-Lischt fer neie MediaWiki-Versione]",
-
'about' => 'Iwwer',
'article' => 'Blatt',
'newwindow' => '(in em nei Fenschder)',
@@ -117,7 +151,7 @@ $messages = array(
'faqpage' => 'Project:FAQ',
# Vector skin
-'vector-action-delete' => 'Lösche',
+'vector-action-delete' => 'Lesche',
'vector-action-move' => 'Ziehe',
'vector-action-protect' => 'Schitze',
'vector-view-create' => 'Schtaerte',
@@ -136,15 +170,15 @@ $messages = array(
'searcharticle' => 'Blatt',
'history' => 'Gschicht',
'history_short' => 'Gschicht',
-'info_short' => 'Information',
'printableversion' => 'Version zum Drucke',
'permalink' => 'Permanent Gleecher',
'print' => 'Drucke',
+'view' => 'Aagucke',
'edit' => 'Ennere/Tscheensche',
'create' => 'Schtaerte',
'editthispage' => 'Des Blatt ennere',
'create-this-page' => 'Blatt schtaerte',
-'delete' => 'Lösche',
+'delete' => 'Lesche',
'deletethispage' => 'Des Blatt lösche',
'protect' => 'Schitze',
'protect_change' => 'tscheensche',
@@ -159,6 +193,7 @@ $messages = array(
'views' => 'Aasichte',
'toolbox' => 'Gscharr',
'userpage' => 'Yuuserblatt zeige',
+'projectpage' => 'Projekt-Blatt aagucke',
'imagepage' => 'Feils zeige',
'templatepage' => 'Moddle zeige',
'categorypage' => 'Abeelingsblatt zeige',
@@ -206,6 +241,8 @@ Guck aa [[Special:Version|Versionsblatt]]',
'toc' => 'Lischt vum Inhalt',
'showtoc' => 'Zeige',
'hidetoc' => 'Verschwinne losse',
+'collapsible-collapse' => 'Zuklappe',
+'collapsible-expand' => 'Uffklappe',
'viewdeleted' => '$1 zeige?',
'feedlinks' => 'Feed:',
'site-rss-feed' => 'RSS-Feed fer $1',
@@ -215,15 +252,16 @@ Guck aa [[Special:Version|Versionsblatt]]',
'red-link-title' => '$1 (Blatt gebt es net)',
# Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Blatt',
-'nstab-user' => 'Yuuser-Blatt',
-'nstab-media' => 'Media-Blatt',
-'nstab-special' => 'Besunneres Blatt',
-'nstab-project' => 'Project-Blatt',
-'nstab-image' => 'Feil',
-'nstab-template' => 'Moddel',
-'nstab-help' => 'Hilf',
-'nstab-category' => 'Abdeeling',
+'nstab-main' => 'Blatt',
+'nstab-user' => 'Yuuser-Blatt',
+'nstab-media' => 'Media-Blatt',
+'nstab-special' => 'Besunneres Blatt',
+'nstab-project' => 'Project-Blatt',
+'nstab-image' => 'Feil',
+'nstab-mediawiki' => 'Melding vum System',
+'nstab-template' => 'Moddel',
+'nstab-help' => 'Hilf',
+'nstab-category' => 'Abdeeling',
# General errors
'error' => 'Mischteek',
@@ -259,13 +297,20 @@ Wenns des net iss, hoscht verleicht en Fehler in de Daadebank gfunne. Bitte meld
'noemail' => 'Yuuser „$1“ hot ken E-Mail aagewwe.',
'loginlanguagelabel' => 'Schprooch: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Paesswatt ennere',
'oldpassword' => 'Aldes Paesswatt:',
'newpassword' => 'Neies Paesswatt:',
'resetpass_forbidden' => 'Paesswatt iss net zu ennere',
'resetpass-submit-loggedin' => 'Paesswatt ennere',
+# Special:PasswordReset
+'passwordreset' => 'Paesswatt zerricksetze',
+'passwordreset-legend' => 'Paesswatt zerricksetze',
+'passwordreset-username' => 'Yuuser-Naame:',
+'passwordreset-emailelement' => 'Yuusernaame: $1
+Paesswatt fer nau: $2',
+
# Edit page toolbar
'bold_sample' => 'Wadde fett gmarrickt',
'bold_tip' => 'Wadde fett gmarrickt',
@@ -275,7 +320,6 @@ Wenns des net iss, hoscht verleicht en Fehler in de Daadebank gfunne. Bitte meld
'extlink_tip' => 'Gewebbgleecher (acht uff http://)',
'headline_sample' => 'Iwwerschrift',
'headline_tip' => 'Iwwerschrift Level 2',
-'math_sample' => 'Formula hier eigewwe',
'image_sample' => 'Beeschpiel.jpg',
'media_sample' => 'Beeschpiel.ogg',
'media_tip' => 'Gleecher fer Feil',
@@ -433,7 +477,7 @@ Wenns des net iss, hoscht verleicht en Fehler in de Daadebank gfunne. Bitte meld
'right-movefile' => 'Feils ziehe',
'right-upload' => 'Feils ufflaade',
'right-writeapi' => 'Yuus vun write API',
-'right-delete' => 'Bledder lösche',
+'right-delete' => 'Bledder lesche',
# User rights log
'rightsnone' => '(ken)',
@@ -493,6 +537,7 @@ Wenns des net iss, hoscht verleicht en Fehler in de Daadebank gfunne. Bitte meld
# Special:ListFiles
'imgfile' => 'Feil',
'listfiles' => 'Lischt vun Feils',
+'listfiles_date' => 'Datum',
'listfiles_name' => 'Naame',
'listfiles_user' => 'Yuuser',
'listfiles_size' => 'Grees',
@@ -510,7 +555,7 @@ Wenns des net iss, hoscht verleicht en Fehler in de Daadebank gfunne. Bitte meld
'filehist-dimensions' => 'Grees',
'filehist-filesize' => 'Grees vum Feil',
'filehist-comment' => 'Aamaericking',
-'imagelinks' => 'Gleecher fer es Feil',
+'imagelinks' => 'Yuus vun dem Feil',
'shared-repo-from' => 'vun $1',
# File reversion
@@ -520,7 +565,7 @@ Wenns des net iss, hoscht verleicht en Fehler in de Daadebank gfunne. Bitte meld
# File deletion
'filedelete' => 'Lösche „$1“',
'filedelete-comment' => 'Grund:',
-'filedelete-submit' => 'Lösche',
+'filedelete-submit' => 'Lesche',
'filedelete-nofile' => "'''„$1“''' gebt es net.",
'filedelete-otherreason' => 'Annere Grind dezu:',
'filedelete-reason-otherlist' => 'Annerer Gund',
@@ -558,6 +603,8 @@ Wenns des net iss, hoscht verleicht en Fehler in de Daadebank gfunne. Bitte meld
'nbytes' => '$1 {{PLURAL:$1|Byte|Bytes}}',
'ncategories' => '$1 {{PLURAL:$1|Abdeeling|Abdeelinge}}',
'nlinks' => '{{PLURAL:$1|1 Gleecher|$1 Gleecher}}',
+'nimagelinks' => 'Gyuust uff $1 {{PLURAL:$1|Blatt|Bledder}}',
+'ntransclusions' => 'gyuust uff $1 {{PLURAL:$1|Blatt|Bledder}}',
'shortpages' => 'Glee Bledder',
'longpages' => 'Grosse Bledder',
'listusers' => 'Lischt vun Yuuser',
@@ -595,7 +642,7 @@ Wenns des net iss, hoscht verleicht en Fehler in de Daadebank gfunne. Bitte meld
'categories' => 'Abdeelinge',
# Special:LinkSearch
-'linksearch' => 'Gewebbgleecher',
+'linksearch' => 'Gewebbgleecher uffgucke',
'linksearch-ns' => 'Blatznaame:',
'linksearch-ok' => 'Uffgucke',
@@ -622,6 +669,7 @@ Wenns des net iss, hoscht verleicht en Fehler in de Daadebank gfunne. Bitte meld
# E-mail user
'emailuser' => 'E-Poschd fer den Yuuser',
'defemailsubject' => '{{SITENAME}}-E-Poschde',
+'emailusername' => 'Yuuser-Naame:',
'emailfrom' => 'Vun:',
'emailto' => 'Fer:',
'emailsend' => 'Schicke',
@@ -630,7 +678,7 @@ Wenns des net iss, hoscht verleicht en Fehler in de Daadebank gfunne. Bitte meld
# Watchlist
'watchlist' => 'Mei Watsch-Lischt',
'mywatchlist' => 'Mei Watsch-Lischt',
-'addedwatch' => 'Zu de Watsch-Lischt dezu geduh',
+'watchlistfor2' => 'Vun $1 $2',
'watch' => 'watsche',
'watchthispage' => 'watsch des Blatt',
'unwatch' => 'Nimmi watsche',
@@ -649,11 +697,11 @@ Wenns des net iss, hoscht verleicht en Fehler in de Daadebank gfunne. Bitte meld
'changed' => 'gennert',
# Delete
-'deletepage' => 'Blatt lösche',
+'deletepage' => 'Blatt lesche',
'exblank' => 'Blatt war leer',
-'delete-confirm' => 'Lösche vun „$1“',
-'delete-legend' => 'Lösche',
-'deletedtext' => '"<nowiki>$1</nowiki>" iss gelescht warre.
+'delete-confirm' => 'Lesche vun „$1“',
+'delete-legend' => 'Lesche',
+'deletedtext' => '"$1" iss gelescht warre.
Guck $2 fer e Lischt vun de letscht Leschunge.',
'deletedarticle' => 'hot „[[$1]]“ gelöscht',
'dellogpage' => 'Lischt vun gelöschte Bledder',
@@ -663,6 +711,7 @@ Guck $2 fer e Lischt vun de letscht Leschunge.',
'delete-edit-reasonlist' => "Grind fer's Lesche ennere",
# Protect
+'prot_1movedto2' => 'hot „[[$1]]“ nooch „[[$2]]“ gezoge',
'protectcomment' => 'Grund:',
'protect-default' => 'All Yuuser',
'protect-level-sysop' => 'Nur Verwalter',
@@ -684,6 +733,7 @@ Guck $2 fer e Lischt vun de letscht Leschunge.',
'restriction-upload' => 'Ufflaade',
# Undelete
+'undeleteviewlink' => 'aagucke',
'undeletecomment' => 'Grund:',
'undelete-search-submit' => 'Guck uff',
'undelete-show-file-submit' => 'Ya',
@@ -710,24 +760,33 @@ Guck $2 fer e Lischt vun de letscht Leschunge.',
'whatlinkshere' => 'Was doher zeigt',
'whatlinkshere-page' => 'Blatt:',
'isredirect' => 'Weiderleidingsblatt',
-'isimage' => 'Feilgleecher',
+'isimage' => 'Gleecher fer Feil',
'whatlinkshere-prev' => '{{PLURAL:$1|letscht|letscht $1}}',
'whatlinkshere-next' => '{{PLURAL:$1|neegschter|neegschte $1}}',
'whatlinkshere-links' => '↠Gleecher',
'whatlinkshere-hideredirs' => 'Weiderleidinge $1',
'whatlinkshere-hidelinks' => 'Gleecher $1',
+'whatlinkshere-hideimages' => 'Feil Gleecher $1',
# Block/unblock
+'block' => 'Yuuser aabinne',
+'blockip' => 'Yuuser aabinne',
+'blockip-title' => 'Yuuser aabinne',
+'blockip-legend' => 'Yuuser aabinne',
'ipadressorusername' => 'IP-Adress odder Yuusernaame:',
'ipbreason' => 'Grund:',
'ipbreasonotherlist' => 'Annerer Grund',
+'ipbsubmit' => 'Daen Yuuser aabinne',
'ipbother' => 'Annere Zeit (englisch):',
'ipboptions' => '2 Schtund:2 hours,1 Daag:1 day,3 Daag:3 days,1 Woch:1 week,2 Woche:2 weeks,1 Munet:1 month,3 Munede:3 months,6 Monate:6 months,1 Yaar:1 year,Fer immer:infinite',
'ipbotheroption' => 'Anneres',
+'ipbotherreason' => 'Annerer Grund:',
+'blocklist-reason' => 'Grund',
'ipblocklist-submit' => 'Guck uff',
'infiniteblock' => 'fer immer',
'blocklink' => 'Aabinne',
'contribslink' => 'Ardickele',
+'proxyblocksuccess' => 'Geduh.',
# Move page
'move-page' => '„$1“ ziehe',
@@ -762,7 +821,7 @@ Guck $2 fer e Lischt vun de letscht Leschunge.',
# Special:Import
'import-upload-filename' => 'Feilnaame:',
-'import-comment' => 'Anmaerricking:',
+'import-comment' => 'Aamaerricking:',
'import-revision-count' => '– {{PLURAL:$1|1 Version|$1 Versione}}',
# Import log
@@ -813,6 +872,12 @@ Guck $2 fer e Lischt vun de letscht Leschunge.',
'others' => 'annere',
'siteusers' => '{{SITENAME}}-{{PLURAL:$2|Yuuser|Yuuser}} $1',
+# Info page
+'pageinfo-header-edits' => 'Enneringe',
+'pageinfo-header-watchlist' => 'Watsch-Lischt',
+'pageinfo-subjectpage' => 'Blatt',
+'pageinfo-talkpage' => 'Gschwetz-Blatt',
+
# Browsing diffs
'nextdiff' => 'Zum neegschte Versionsunnerschidd →',
@@ -829,10 +894,12 @@ Guck $2 fer e Lischt vun de letscht Leschunge.',
'metadata' => 'Metadaade',
# EXIF tags
-'exif-imagelength' => 'Leng',
-'exif-software' => 'Geyuust Software',
-'exif-usercomment' => 'Anmaerrickinge vun Yuuser',
-'exif-gpsaltitude' => 'Heech',
+'exif-imagelength' => 'Leng',
+'exif-software' => 'Geyuust Software',
+'exif-usercomment' => 'Anmaerrickinge vun Yuuser',
+'exif-gpsaltitude' => 'Heech',
+'exif-writer' => 'Schreiwer',
+'exif-languagecode' => 'Schprooch',
'exif-subjectdistance-value' => '$1 Meter',
@@ -841,12 +908,10 @@ Guck $2 fer e Lischt vun de letscht Leschunge.',
'exif-gaincontrol-0' => 'Ken',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'all',
-'imagelistall' => 'all',
-'watchlistall2' => 'all',
-'namespacesall' => 'all',
-'monthsall' => 'all',
-'limitall' => 'all',
+'watchlistall2' => 'all',
+'namespacesall' => 'all',
+'monthsall' => 'all',
+'limitall' => 'all',
# Scary transclusion
'scarytranscludetoolong' => '[URL iss zu lang]',
@@ -857,6 +922,10 @@ Guck $2 fer e Lischt vun de letscht Leschunge.',
# action=purge
'confirm_purge_button' => 'OK',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-unwatch-button' => 'OK',
+
# Separators for various lists, etc.
'ellipsis' => '…',
'percent' => '$1&nbsp;%',
@@ -901,7 +970,8 @@ Guck $2 fer e Lischt vun de letscht Leschunge.',
'filepath-submit' => 'Geh',
# Special:FileDuplicateSearch
-'fileduplicatesearch-submit' => 'Uffgucke',
+'fileduplicatesearch-filename' => 'Feilnaame:',
+'fileduplicatesearch-submit' => 'Uffgucke',
# Special:SpecialPages
'specialpages' => 'Besunnere Bledder',
diff --git a/languages/messages/MessagesPdt.php b/languages/messages/MessagesPdt.php
index d1cbb764..c9f0fee0 100644
--- a/languages/messages/MessagesPdt.php
+++ b/languages/messages/MessagesPdt.php
@@ -122,7 +122,6 @@ $messages = array(
'history' => "Siedeje'schijchte",
'history_short' => 'Jeschicht',
'updatedmarker' => 'fresch jemoakt',
-'info_short' => 'Informatioon',
'printableversion' => 'Drekdoastalinj',
'permalink' => 'Bestendja Link',
'print' => 'Drek',
@@ -266,6 +265,9 @@ Bitte schriew eene Notiz aun [[Special:ListUsers/sysop|administrator]], en lot d
Bitte nemm eenen aundren.',
'loginlanguagelabel' => 'Sproak: $1',
+# Special:PasswordReset
+'passwordreset-username' => 'Bruckernome:',
+
# Edit page toolbar
'media_tip' => 'Datei-Link',
@@ -419,7 +421,6 @@ Bitte nemm eenen aundren.',
# Watchlist
'mywatchlist' => 'Miene Oppaussied',
-'addedwatch' => "No Oppausssied bieje'done",
'watch' => 'Oppausse',
'watchthispage' => 'Op dise Sied oppausse',
'unwatch' => 'Nijch mea oppausse',
@@ -574,9 +575,7 @@ Dee Grunt es: "$2"',
'modern.js' => '/* Daut neachste JavaScript woat fe Brucka mett Modern-Skin jelode. */',
# Metadata
-'nodublincore' => 'Dublin-Core-RDF-Metadote send fe disem Server nich aktiv.',
-'nocreativecommons' => 'Creative-Commons-RDF-Metadote send fe disem Server nich aktiv.',
-'notacceptable' => 'Dee Wiki-Server kaun dee Dote nich soo reedmoake, daut dien Jereetschauft dee lese kaun.',
+'notacceptable' => 'Dee Wiki-Server kaun dee Dote nich soo reedmoake, daut dien Jereetschauft dee lese kaun.',
# Attribution
'anonymous' => 'Onbekaunda Brucka {{PLURAL:$1|user|users}} von {{SITENAME}}',
@@ -597,22 +596,6 @@ Daut woat aun eenem Link lidje, woona no eene externe Sied wiest.',
'spam_reverting' => 'Latste Versioon ohne Links no $1 wada trajcht jemoakt.',
'spam_blanking' => 'Aule Versioone haude Links no $1, reed jemoakt',
-# Info page
-'infosubtitle' => 'Siedeinformatioon',
-'numedits' => 'Zohl von Endanisse (Sied): $1',
-'numtalkedits' => 'Zohl von Endanisse (Diskussioonssied): $1',
-'numwatchers' => 'Zohl von Beoobachta: $1',
-'numauthors' => 'Zohl von Autore (Sied): $1',
-'numtalkauthors' => 'Zohl von Autore (Diskussioonssied): $1',
-
-# Math options
-'mw_math_png' => 'Emma aus PNG wiese',
-'mw_math_simple' => 'HTML es zimlich eenfach, sonst PNG',
-'mw_math_html' => 'Wan meajlich aus HTML wiese, sonst PNG',
-'mw_math_source' => 'Aus TeX lote (fe Tatjstbrowser)',
-'mw_math_modern' => 'Goot fe moderne Browser',
-'mw_math_mathml' => 'MathML wan meajlich (experimental)',
-
# Patrolling
'markaspatrolleddiff' => 'Aus kontrolliet markere',
'markaspatrolledtext' => 'Dise Sied aus kontrolliet markere',
diff --git a/languages/messages/MessagesPfl.php b/languages/messages/MessagesPfl.php
index a0b896ce..7fd42134 100644
--- a/languages/messages/MessagesPfl.php
+++ b/languages/messages/MessagesPfl.php
@@ -206,8 +206,6 @@ S kann sai, dass es ää odder meh Zaiche drin hot, wu im Titel vun de Said nid
'extlink_tip' => 'Externer Link (uff http:// Acht gewwe)',
'headline_sample' => 'Abschnitts-Iwwerschrift',
'headline_tip' => 'Iwwerschrift Ewene 2',
-'math_sample' => 'Do Formel aigewwe',
-'math_tip' => 'Mathematische Formel (LaTeX)',
'nowiki_sample' => 'Gebb do en Text ai, wu nit formatiert wird',
'nowiki_tip' => 'Wiki-Formatierunge ignoriere',
'image_tip' => 'Bildverwais',
@@ -454,10 +452,8 @@ Saide uff [[Special:Watchlist|Dainer Beowachdungslischt]] sin '''fett'''.",
# Watchlist
'watchlist' => 'Beowachdungslischd',
'mywatchlist' => 'Mai Beowachdungslischd',
-'addedwatch' => 'Zu de Beowachdungslischt zufieche',
'addedwatchtext' => "Die Said \"[[:\$1]]\" isch zu Dainer [[Special:Watchlist|Beowachdungslischt]] zugefiecht worre.
Zukimftiche Ännerunge an derre Said un de Dischbediersaid, wu dezu ghert, werre doo aagezaicht, un d Said werd '''fett''' aagezaicht in de [[Special:RecentChanges|Letschte Ännerunge]] fer dass es ääfacher isch zum finne.",
-'removedwatch' => 'Aus de Beowachdungslischt rausgenumme',
'removedwatchtext' => 'D Said "[[:$1]]" isch aus [[Special:Watchlist|Dainer Beowachdungslischt]] rausgenumme worre.',
'watch' => 'Beowachde',
'watchthispage' => 'Die Said beowachde',
@@ -479,7 +475,7 @@ Zukimftiche Ännerunge an derre Said un de Dischbediersaid, wu dezu ghert, werre
'confirmdeletetext' => 'Du bisch debai e Said z lesche mid alle Versione.
Bitte du bstätiche, dass Du des wllscht du, dass Du verstehsch, was des hääßt, un dass Du des machscht in Iwweraistimmung mit de [[{{MediaWiki:Policy-url}}|Richtline]].',
'actioncomplete' => 'Aktion fertich',
-'deletedtext' => '"<nowiki>$1</nowiki>" isch gelescht worre.
+'deletedtext' => '"$1" isch gelescht worre.
Guck $2 fer e Lischt vun de letschte Leschunge.',
'deletedarticle' => 'hot "[[$1]]" glescht',
'dellogpage' => 'Leschlogbuch',
@@ -498,7 +494,7 @@ Guck $2 fer e Lischt vun de letschte Leschunge.',
'protectexpiry' => 'Bis:',
'protect_expiry_invalid' => 'Zaidraum isch nid gildich.',
'protect_expiry_old' => 'Zaidraum licht in de Vergangehääd.',
-'protect-text' => "Du kannscht de Schutzstatus vun de Said '''<nowiki>$1</nowiki>''' aagucke un ännere.",
+'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.
@@ -693,11 +689,10 @@ Du kannscht e Grund in dr Zammfassung aagewwe',
'nextdiff' => 'Naiere Bearwaidung →',
# Media information
-'file-info-size' => '$1 × $2 Pixels, Dateigreß: $3, MIME-Type: $4',
-'file-nohires' => '<small>Ke hechere Ufflesung verfiechbar.</small>',
-'svg-long-desc' => 'SVG-Datei, Basisgreß $1 × $2 Pixels, Dateigreß: $3',
-'show-big-image' => 'Gsamte Ergebnis',
-'show-big-image-thumb' => '<small>Greß vun derre Vorschau: $1 × $2 Pixels</small>',
+'file-info-size' => '$1 × $2 Pixels, Dateigreß: $3, MIME-Type: $4',
+'file-nohires' => '<small>Ke hechere Ufflesung verfiechbar.</small>',
+'svg-long-desc' => 'SVG-Datei, Basisgreß $1 × $2 Pixels, Dateigreß: $3',
+'show-big-image' => 'Gsamte Ergebnis',
# Special:NewFiles
'showhidebots' => '(Bots $1)',
@@ -724,20 +719,24 @@ Annere Metadate sinn standardmäßig versteckelt.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
'exif-gaincontrol-0' => 'Kään',
# External editor support
'edit-externally' => 'Die Datei bearwaide mit ener externe Aawendung',
-'edit-externally-help' => '(Guck uff [http://www.mediawiki.org/wiki/Manual:External_editors Installationsaawisige] fer meh Informatione)',
+'edit-externally-help' => '(Guck uff [//www.mediawiki.org/wiki/Manual:External_editors Installationsaawisige] fer meh Informatione)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'alle',
-'imagelistall' => 'alle',
-'watchlistall2' => 'alle',
-'namespacesall' => 'alle',
-'monthsall' => 'alle',
+'watchlistall2' => 'alle',
+'namespacesall' => 'alle',
+'monthsall' => 'alle',
# Watchlist editing tools
'watchlisttools-view' => 'Die wichdiche Ännerunge aagucke',
diff --git a/languages/messages/MessagesPi.php b/languages/messages/MessagesPi.php
index f9169323..f2b4ae55 100644
--- a/languages/messages/MessagesPi.php
+++ b/languages/messages/MessagesPi.php
@@ -10,6 +10,25 @@
* @author Vibhijain
*/
+$namespaceNames = array(
+ NS_MEDIA => 'मीडिया',
+ NS_SPECIAL => 'विसेस',
+ NS_TALK => 'समà¥à¤­à¤¾à¤¸à¤¿à¤¤',
+ NS_USER => 'अवयव',
+ NS_USER_TALK => 'अवयव_समà¥à¤­à¤¾à¤¸à¤¿à¤¤',
+ NS_PROJECT_TALK => '$1_समà¥à¤­à¤¾à¤¸à¤¿à¤¤',
+ NS_FILE => 'पटिमा',
+ NS_FILE_TALK => 'पटिमा_समà¥à¤­à¤¾à¤¸à¤¿à¤¤',
+ NS_MEDIAWIKI => 'मीडियाविकि',
+ NS_MEDIAWIKI_TALK => 'मीडियाविकि_समà¥à¤­à¤¾à¤¸à¤¿à¤¤',
+ NS_TEMPLATE => 'पटिरूप',
+ NS_TEMPLATE_TALK => 'पटिरूप_समà¥à¤­à¤¾à¤¸à¤¿à¤¤',
+ NS_HELP => 'अवसà¥à¤¸à¤¯',
+ NS_HELP_TALK => 'अवसà¥à¤¸à¤¯_समà¥à¤­à¤¾à¤¸à¤¿à¤¤',
+ NS_CATEGORY => 'विभाग',
+ NS_CATEGORY_TALK => 'विभाग_समà¥à¤­à¤¾à¤¸à¤¿à¤¤',
+);
+
$digitTransformTable = array(
'0' => '०', # &#x0966;
'1' => '१', # &#x0967;
diff --git a/languages/messages/MessagesPl.php b/languages/messages/MessagesPl.php
index 23657511..96cae201 100644
--- a/languages/messages/MessagesPl.php
+++ b/languages/messages/MessagesPl.php
@@ -24,6 +24,7 @@
* @author McMonster
* @author Mikołka
* @author Nux
+ * @author Odder
* @author Remember the dot
* @author Saper
* @author Sp5uhe
@@ -90,95 +91,98 @@ $separatorTransformTable = array(
$linkTrail = '/^([a-zęóąśłżźćńĘÓĄŚÅŻŹĆŃ]+)(.*)$/sDu';
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Podwójne_przekierowania' ),
+ 'Activeusers' => array( 'Aktywni_użytkownicy' ),
+ 'Allmessages' => array( 'Wszystkie_komunikaty' ),
+ 'Allpages' => array( 'Wszystkie_strony' ),
+ 'Ancientpages' => array( 'Stare_strony' ),
+ 'Blankpage' => array( 'Pusta_strona' ),
+ 'Block' => array( 'Blokuj' ),
+ 'Blockme' => array( 'Zablokuj_mnie' ),
+ 'Booksources' => array( 'Książki' ),
'BrokenRedirects' => array( 'Zerwane_przekierowania' ),
- 'Disambiguations' => array( 'Ujednoznacznienia' ),
- 'Userlogin' => array( 'Zaloguj' ),
- 'Userlogout' => array( 'Wyloguj' ),
+ 'Categories' => array( 'Kategorie' ),
+ 'ChangePassword' => array( 'Zmień_hasło', 'Resetuj_hasło' ),
+ 'ComparePages' => array( 'Porównywanie_stron' ),
+ 'Confirmemail' => array( 'Potwierdź_e-mail' ),
+ 'Contributions' => array( 'Wkład' ),
'CreateAccount' => array( 'Stwórz_konto' ),
- 'Preferences' => array( 'Preferencje' ),
- 'Watchlist' => array( 'Obserwowane' ),
- 'Recentchanges' => array( 'Ostatnie_zmiany', 'OZ' ),
- 'Upload' => array( 'Prześlij' ),
+ 'Deadendpages' => array( 'Bez_linków' ),
+ 'DeletedContributions' => array( 'Usunięty_wkład' ),
+ 'Disambiguations' => array( 'Ujednoznacznienia' ),
+ 'DoubleRedirects' => array( 'Podwójne_przekierowania' ),
+ 'Emailuser' => array( 'E-mail' ),
+ 'Export' => array( 'Eksport' ),
+ 'Fewestrevisions' => array( 'Najmniej_edycji' ),
+ 'FileDuplicateSearch' => array( 'Szukaj_duplikatu_pliku' ),
+ 'Filepath' => array( 'Ścieżka_do_pliku' ),
+ 'Invalidateemail' => array( 'Anuluj_e-mail' ),
+ 'BlockList' => array( 'Zablokowani' ),
+ 'LinkSearch' => array( 'Wyszukiwarka_linków' ),
+ 'Listadmins' => array( 'Administratorzy' ),
+ 'Listbots' => array( 'Boty' ),
'Listfiles' => array( 'Pliki' ),
- 'Newimages' => array( 'Nowe_pliki' ),
- 'Listusers' => array( 'Użytkownicy' ),
'Listgrouprights' => array( 'Grupy_użytkowników', 'Uprawnienia_grup_użytkowników' ),
- 'Statistics' => array( 'Statystyka', 'Statystyki' ),
- 'Randompage' => array( 'Losowa_strona', 'Losowa' ),
+ 'Listredirects' => array( 'Przekierowania' ),
+ 'Listusers' => array( 'Użytkownicy' ),
+ 'Lockdb' => array( 'Zablokuj_bazÄ™' ),
+ 'Log' => array( 'Rejestr', 'Logi' ),
'Lonelypages' => array( 'Porzucone_strony' ),
- 'Uncategorizedpages' => array( 'Nieskategoryzowane_strony' ),
- 'Uncategorizedcategories' => array( 'Nieskategoryzowane_kategorie' ),
- 'Uncategorizedimages' => array( 'Nieskategoryzowane_pliki' ),
- 'Uncategorizedtemplates' => array( 'Nieskategoryzowane_szablony' ),
- 'Unusedcategories' => array( 'Nieużywane_kategorie' ),
- 'Unusedimages' => array( 'Nieużywane_pliki' ),
- 'Wantedpages' => array( 'Potrzebne_strony' ),
- 'Wantedcategories' => array( 'Potrzebne_kategorie' ),
- 'Wantedfiles' => array( 'Potrzebne_pliki' ),
- 'Wantedtemplates' => array( 'Potrzebne_szablony' ),
+ 'Longpages' => array( 'Najdłuższe_strony' ),
+ 'MergeHistory' => array( 'Połącz_historię' ),
+ 'MIMEsearch' => array( 'Wyszukiwanie_MIME' ),
+ 'Mostcategories' => array( 'Najwięcej_kategorii' ),
+ 'Mostimages' => array( 'Najczęściej_linkowane_pliki' ),
'Mostlinked' => array( 'Najczęściej_linkowane' ),
'Mostlinkedcategories' => array( 'Najczęściej_linkowane_kategorie' ),
'Mostlinkedtemplates' => array( 'Najczęściej_linkowane_szablony' ),
- 'Mostimages' => array( 'Najczęściej_linkowane_pliki' ),
- 'Mostcategories' => array( 'Najwięcej_kategorii' ),
'Mostrevisions' => array( 'Najwięcej_edycji', 'Najczęściej_edytowane' ),
- 'Fewestrevisions' => array( 'Najmniej_edycji' ),
- 'Shortpages' => array( 'Najkrótsze_strony' ),
- 'Longpages' => array( 'Najdłuższe_strony' ),
+ 'Movepage' => array( 'PrzenieÅ›' ),
+ 'Mycontributions' => array( 'Mój_wkład' ),
+ 'Mypage' => array( 'Moja_strona' ),
+ 'Mytalk' => array( 'Moja_dyskusja' ),
+ 'Myuploads' => array( 'Moje_pliki' ),
+ 'Newimages' => array( 'Nowe_pliki' ),
'Newpages' => array( 'Nowe_strony' ),
- 'Ancientpages' => array( 'Stare_strony' ),
- 'Deadendpages' => array( 'Bez_linków' ),
+ 'PasswordReset' => array( 'Wyczyść_hasło' ),
+ 'Popularpages' => array( 'Popularne_strony' ),
+ 'Preferences' => array( 'Preferencje' ),
+ 'Prefixindex' => array( 'Strony_według_prefiksu' ),
'Protectedpages' => array( 'Zabezpieczone_strony' ),
'Protectedtitles' => array( 'Zabezpieczone_nazwy_stron' ),
- 'Allpages' => array( 'Wszystkie_strony' ),
- 'Prefixindex' => array( 'Strony_według_prefiksu' ),
- 'Ipblocklist' => array( 'Zablokowani' ),
- 'Unblock' => array( 'Odblokuj' ),
- 'Specialpages' => array( 'Strony_specjalne' ),
- 'Contributions' => array( 'Wkład' ),
- 'Emailuser' => array( 'E-mail' ),
- 'Confirmemail' => array( 'Potwierdź_e-mail' ),
- 'Whatlinkshere' => array( 'LinkujÄ…ce' ),
+ 'Randompage' => array( 'Losowa_strona', 'Losowa' ),
+ 'Randomredirect' => array( 'Losowe_przekierowanie' ),
+ 'Recentchanges' => array( 'Ostatnie_zmiany', 'OZ' ),
'Recentchangeslinked' => array( 'Zmiany_w_linkujÄ…cych' ),
- 'Movepage' => array( 'PrzenieÅ›' ),
- 'Blockme' => array( 'Zablokuj_mnie' ),
- 'Booksources' => array( 'Książki' ),
- 'Categories' => array( 'Kategorie' ),
- 'Export' => array( 'Eksport' ),
- 'Version' => array( 'Wersja' ),
- 'Allmessages' => array( 'Wszystkie_komunikaty' ),
- 'Log' => array( 'Rejestr', 'Logi' ),
- 'Blockip' => array( 'Blokuj' ),
+ 'Revisiondelete' => array( 'Usuń_wersję' ),
+ 'RevisionMove' => array( 'Przenoszenie_wersji' ),
+ 'Search' => array( 'Szukaj' ),
+ 'Shortpages' => array( 'Najkrótsze_strony' ),
+ 'Specialpages' => array( 'Strony_specjalne' ),
+ 'Statistics' => array( 'Statystyka', 'Statystyki' ),
+ 'Tags' => array( 'Znaczniki' ),
+ 'Unblock' => array( 'Odblokuj' ),
+ 'Uncategorizedcategories' => array( 'Nieskategoryzowane_kategorie' ),
+ 'Uncategorizedimages' => array( 'Nieskategoryzowane_pliki' ),
+ 'Uncategorizedpages' => array( 'Nieskategoryzowane_strony' ),
+ 'Uncategorizedtemplates' => array( 'Nieskategoryzowane_szablony' ),
'Undelete' => array( 'Odtwórz' ),
- 'Lockdb' => array( 'Zablokuj_bazÄ™' ),
'Unlockdb' => array( 'Odblokuj_bazÄ™' ),
- 'Userrights' => array( 'Uprawnienia', 'Uprawnienia_użytkowników', 'Prawa_użytkowników' ),
- 'MIMEsearch' => array( 'Wyszukiwanie_MIME' ),
- 'FileDuplicateSearch' => array( 'Szukaj_duplikatu_pliku' ),
- 'Unwatchedpages' => array( 'Nieobserwowane_strony' ),
- 'Listredirects' => array( 'Przekierowania' ),
- 'Revisiondelete' => array( 'Usuń_wersję' ),
+ 'Unusedcategories' => array( 'Nieużywane_kategorie' ),
+ 'Unusedimages' => array( 'Nieużywane_pliki' ),
'Unusedtemplates' => array( 'Nieużywane_szablony' ),
- 'Randomredirect' => array( 'Losowe_przekierowanie' ),
- 'Mypage' => array( 'Moja_strona' ),
- 'Mytalk' => array( 'Moja_dyskusja' ),
- 'Mycontributions' => array( 'Mój_wkład' ),
- 'Listadmins' => array( 'Administratorzy' ),
- 'Listbots' => array( 'Boty' ),
- 'Popularpages' => array( 'Popularne_strony' ),
- 'Search' => array( 'Szukaj' ),
- 'Resetpass' => array( 'Zmień_hasło', 'Resetuj_hasło' ),
+ 'Unwatchedpages' => array( 'Nieobserwowane_strony' ),
+ 'Upload' => array( 'Prześlij' ),
+ 'Userlogin' => array( 'Zaloguj' ),
+ 'Userlogout' => array( 'Wyloguj' ),
+ 'Userrights' => array( 'Uprawnienia', 'Uprawnienia_użytkowników', 'Prawa_użytkowników' ),
+ 'Version' => array( 'Wersja' ),
+ 'Wantedcategories' => array( 'Potrzebne_kategorie' ),
+ 'Wantedfiles' => array( 'Potrzebne_pliki' ),
+ 'Wantedpages' => array( 'Potrzebne_strony' ),
+ 'Wantedtemplates' => array( 'Potrzebne_szablony' ),
+ 'Watchlist' => array( 'Obserwowane' ),
+ 'Whatlinkshere' => array( 'LinkujÄ…ce' ),
'Withoutinterwiki' => array( 'Strony_bez_interwiki' ),
- 'MergeHistory' => array( 'Połącz_historię' ),
- 'Filepath' => array( 'Ścieżka_do_pliku' ),
- 'Invalidateemail' => array( 'Anuluj_e-mail' ),
- 'Blankpage' => array( 'Pusta_strona' ),
- 'LinkSearch' => array( 'Wyszukiwarka_linków' ),
- 'DeletedContributions' => array( 'Usunięty_wkład' ),
- 'Tags' => array( 'Znaczniki' ),
- 'Activeusers' => array( 'Aktywni_użytkownicy' ),
- 'ComparePages' => array( 'Porównywanie_stron' ),
);
$magicWords = array(
@@ -371,14 +375,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cd.',
'index-category' => 'Strony indeksowane',
'noindex-category' => 'Strony nieindeksowane',
-
-'mainpagetext' => "'''Instalacja MediaWiki powiodła się.'''",
-'mainpagedocfooter' => 'Zobacz [http://meta.wikimedia.org/wiki/Help:Contents przewodnik użytkownika] w celu uzyskania informacji o działaniu oprogramowania wiki.
-
-== Na poczÄ…tek ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista ustawień konfiguracyjnych]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Komunikaty o nowych wersjach MediaWiki]',
+'broken-file-category' => 'Strony z odwołaniami do nieistniejących plików',
'about' => 'O {{GRAMMAR:MS.lp|{{SITENAME}}}}',
'article' => 'artykuł',
@@ -430,10 +427,10 @@ $messages = array(
'history' => 'Historia strony',
'history_short' => 'Historia i autorzy',
'updatedmarker' => 'zmienione od ostatniej wizyty',
-'info_short' => 'Informacja',
'printableversion' => 'Wersja do druku',
'permalink' => 'Link do tej wersji',
'print' => 'Drukuj',
+'view' => 'PodglÄ…d',
'edit' => 'Edytuj',
'create' => 'Utwórz',
'editthispage' => 'Edytuj tÄ™ stronÄ™',
@@ -441,6 +438,7 @@ $messages = array(
'delete' => 'Usuń',
'deletethispage' => 'Usuń tę stronę',
'undelete_short' => 'odtwórz {{PLURAL:$1|1 wersję|$1 wersje|$1 wersji}}',
+'viewdeleted_short' => 'Podgląd {{PLURAL:$1|usuniętej|$1 usuniętych}} wersji',
'protect' => 'Zabezpiecz',
'protect_change' => 'zmień',
'protectthispage' => 'Zabezpiecz tÄ™ stronÄ™',
@@ -525,6 +523,8 @@ $1',
'toc' => 'Spis treści',
'showtoc' => 'pokaż',
'hidetoc' => 'ukryj',
+'collapsible-collapse' => 'Zwiń',
+'collapsible-expand' => 'Rozwiń',
'thisisdeleted' => 'Pokazać lub odtworzyć $1?',
'viewdeleted' => 'Zobacz $1',
'restorelink' => '{{PLURAL:$1|jedną usuniętą wersję|$1 usunięte wersje|$1 usuniętych wersji}}',
@@ -536,6 +536,8 @@ $1',
'page-rss-feed' => 'KanaÅ‚ RSS „$1â€',
'page-atom-feed' => 'KanaÅ‚ Atom „$1â€',
'red-link-title' => '$1 (strona nie istnieje)',
+'sort-descending' => 'Sortuj malejÄ…co',
+'sort-ascending' => 'Sortuj rosnÄ…co',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Strona',
@@ -619,12 +621,13 @@ Zapytanie: $2',
'protectedinterface' => 'Ta strona zawiera tekst interfejsu oprogramowania, dlatego możliwość jej edycji została zablokowana.',
'editinginterface' => "'''Ostrzeżenie:''' Edytujesz stronę, która zawiera tekst interfejsu oprogramowania.
Zmiany na tej stronie zmienią wygląd interfejsu dla innych użytkowników.
-Rozważ wykonanie tłumaczenia na [http://translatewiki.net/wiki/Main_Page?setlang=pl translatewiki.net], specjalizowanym projekcie lokalizacji oprogramowania MediaWiki.",
+Rozważ wykonanie tłumaczenia na [//translatewiki.net/wiki/Main_Page?setlang=pl translatewiki.net], specjalizowanym projekcie lokalizacji oprogramowania MediaWiki.",
'sqlhidden' => '(ukryto zapytanie SQL)',
'cascadeprotected' => 'Ta strona została zabezpieczona przed edycją, ponieważ jest ona zawarta na {{PLURAL:$1|następującej stronie, która została zabezpieczona|następujących stronach, które zostały zabezpieczone}} z włączoną opcją dziedziczenia:
$2',
'namespaceprotected' => "Nie masz uprawnień do edytowania stron w przestrzeni nazw '''$1'''.",
-'customcssjsprotected' => 'Nie możesz edytować tej strony, ponieważ zawiera ona ustawienia osobiste innego użytkownika.',
+'customcssprotected' => 'Nie jesteś uprawniony do edytowania tej strony CSS, ponieważ zawiera ona ustawienia osobiste innego użytkownika.',
+'customjsprotected' => 'Nie jesteś uprawniony do edytowania tej strony JavaScript, ponieważ zawiera ona ustawienia osobiste innego użytkownika.',
'ns-specialprotected' => 'Stron specjalnych nie można edytować.',
'titleprotected' => "Utworzenie strony o tej nazwie zostało zablokowane przez [[User:$1|$1]].
Uzasadnienie blokady: ''$2''.",
@@ -662,6 +665,7 @@ Nie zapomnij dostosować [[Special:Preferences|preferencji dla {{GRAMMAR:D.lp|{{
'createaccount' => 'Załóż nowe konto',
'gotaccount' => "Masz już konto? '''$1'''.",
'gotaccountlink' => 'Zaloguj siÄ™',
+'userlogin-resetlink' => 'Zapomniałeś danych do zalogowania się?',
'createaccountmail' => 'poprzez eâ€mail',
'createaccountreason' => 'Powód',
'badretype' => 'Wprowadzone hasła różnią się między sobą.',
@@ -676,13 +680,15 @@ Masz obecnie w przeglądarce wyłączoną obsługę ciasteczek.
'nocookieslogin' => '{{SITENAME}} wykorzystuje ciasteczka do przechowywania informacji o zalogowaniu się przez użytkownika.
Masz obecnie w przeglądarce wyłączoną obsługę ciasteczek.
Spróbuj ponownie po ich odblokowaniu.',
+'nocookiesfornew' => 'Konto użytkownika nie zostało utworzone, ponieważ nie można było potwierdzić jego źródła.
+Upewnij się, że masz włączoną obsługę ciasteczek, przeładuj stronę i spróbuj ponownie.',
'noname' => 'To nie jest poprawna nazwa użytkownika.',
'loginsuccesstitle' => 'Zalogowano pomyślnie',
'loginsuccess' => "'''{{GENDER:|ZalogowaÅ‚eÅ› siÄ™|ZalogowaÅ‚aÅ› siÄ™|Zalogowano}} do {{GRAMMAR:D.lp|{{SITENAME}}}} jako „$1â€.'''",
'nosuchuser' => 'Brak użytkownika o nazwie „$1â€.
W nazwie użytkownika ma znaczenie wielkość znaków.
Sprawdź pisownię lub [[Special:UserLogin/signup|utwórz nowe konto]].',
-'nosuchusershort' => 'Brak użytkownika o nazwie „<nowiki>$1</nowiki>â€.
+'nosuchusershort' => 'Brak użytkownika o nazwie „$1â€.
Sprawdź poprawność pisowni.',
'nouserspecified' => 'Musisz podać nazwę użytkownika.',
'login-userblocked' => 'Ten użytkownik jest zablokowany. Zalogowanie się jest niemożliwe.',
@@ -729,13 +735,14 @@ Możesz zignorować tÄ™ wiadomość, jeÅ›li konto zostaÅ‚o utworzone przez pomyÅ
'usernamehasherror' => 'Nazwa użytkownika nie może zawierać znaków kratki „#â€',
'login-throttled' => 'Zbyt wiele razy próbowałeś zalogować się na to konto.
Odczekaj chwilę zanim ponowisz próbę.',
+'login-abort-generic' => 'Logowanie nieudane – przerwano',
'loginlanguagelabel' => 'Język: $1',
'suspicious-userlogout' => 'Żądanie wylogowania zostało odrzucone ponieważ wygląda na to, że zostało wysłane przez uszkodzoną przeglądarkę lub buforujący serwer proxy.',
# E-mail sending
'php-mail-error-unknown' => 'Wystąpił nieznany błąd w funkcji PHP mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Zmień hasło',
'resetpass_announce' => '{{GENDER:|ZalogowaÅ‚eÅ›|ZalogowaÅ‚aÅ›}} siÄ™, wykorzystujÄ…c tymczasowe hasÅ‚o otrzymane poprzez eâ€mail.
Aby zakończyć proces logowania, musisz ustawić nowe hasło:',
@@ -754,6 +761,32 @@ Aby zakończyć proces logowania, musisz ustawić nowe hasło:',
Być może wÅ‚aÅ›nie zmieniÅ‚{{GENDER:|eÅ›|aÅ›|eÅ›(â€aÅ›)}} swoje hasÅ‚o lub poprosiÅ‚{{GENDER:|eÅ›|aÅ›|eÅ›(â€aÅ›)}} o nowe tymczasowe hasÅ‚o.',
'resetpass-temp-password' => 'Tymczasowe hasło:',
+# Special:PasswordReset
+'passwordreset' => 'Wyczyść hasło',
+'passwordreset-text' => 'WypeÅ‚nij formularz, aby otrzymać eâ€mail z przypomnieniem danych Twojego konta.',
+'passwordreset-legend' => 'Zresetuj hasło',
+'passwordreset-disabled' => 'Na tej wiki wyłączono możliwość resetowania haseł.',
+'passwordreset-pretext' => '{{PLURAL:$1||Wprowadź jedną z danych poniżej}}',
+'passwordreset-username' => 'Nazwa użytkownika:',
+'passwordreset-domain' => 'Domena',
+'passwordreset-email' => 'Adres eâ€mail',
+'passwordreset-emailtitle' => 'Dane konta w {{GRAMMAR:MS.lp|{{SITENAME}}}}',
+'passwordreset-emailtext-ip' => 'KtoÅ› (prawdopodobnie Ty, spod adresu IP $1) poprosiÅ‚ o przypomnienie szczegółów dotyczÄ…cych Twojego konta w {{GRAMMAR:MS.lp{{SITENAME}}}} ($4). Z tym adresem eâ€mailowym powiÄ…zane {{PLURAL:$3|jest konto użytkownika|sÄ… nastÄ™pujÄ…ce konta użytkowników:}}
+
+$2
+
+{{PLURAL:$3|Tymczasowego hasła|Tymczasowych haseł}} można użyć w ciągu {{PLURAL:$5|jednego dnia|$5 dni}}.
+Powinieneś zalogować się i zmienić hasło na nowe. Jeśli to ktoś inni poprosił o wysłanie przypomnienia lub jeśli pamiętasz aktualne hasło i nie chce go zmieniać wystarczy, że zignorujesz tę wiadomość i będziesz nadal korzystał ze swojego starego hasła.',
+'passwordreset-emailtext-user' => 'Użytkownik $1 poprosiÅ‚ o przypomnienie szczegółów dotyczÄ…cych Twojego konta w {{GRAMMAR:MS.lp{{SITENAME}}}} ($4). Z tym adresem eâ€mailowym powiÄ…zane {{PLURAL:$3|jest konto użytkownika|sÄ… nastÄ™pujÄ…ce konta użytkowników:}}
+
+$2
+
+{{PLURAL:$3|Tymczasowego hasła|Tymczasowych haseł}} można użyć w ciągu {{PLURAL:$5|jednego dnia|$5 dni}}.
+Powinieneś zalogować się i zmienić hasło na nowe. Jeśli to ktoś inni poprosił o wysłanie przypomnienia lub jeśli pamiętasz aktualne hasło i nie chce go zmieniać wystarczy, że zignorujesz tę wiadomość i będziesz nadal korzystał ze swojego starego hasła.',
+'passwordreset-emailelement' => 'Nazwa użytkownika – $1
+Tymczasowe hasło – $2',
+'passwordreset-emailsent' => 'PrzypominajÄ…cy eâ€mail zostaÅ‚ wysÅ‚any.',
+
# Edit page toolbar
'bold_sample' => 'Tekst tłustą czcionką',
'bold_tip' => 'Tekst tłustą czcionką',
@@ -765,8 +798,6 @@ Być może wÅ‚aÅ›nie zmieniÅ‚{{GENDER:|eÅ›|aÅ›|eÅ›(â€aÅ›)}} swoje hasÅ‚o lub po
'extlink_tip' => 'Link zewnętrzny (pamiętaj o przedrostku http:// )',
'headline_sample' => 'Tekst nagłówka',
'headline_tip' => 'Nagłówek 2. poziomu',
-'math_sample' => 'Tutaj wprowadź wzór',
-'math_tip' => 'Wzór matematyczny (LaTeX)',
'nowiki_sample' => 'Tutaj wstaw niesformatowany tekst',
'nowiki_tip' => 'Zignoruj formatowanie wiki',
'image_sample' => 'Przykład.jpg',
@@ -856,7 +887,7 @@ Możesz [[Special:Search/{{PAGENAME}}|poszukać „{{PAGENAME}}†na innych str
'noarticletext-nopermission' => 'Na tej stronie nie ma jeszcze artykułu.
Możesz [[Special:Search/{{PAGENAME}}|wyszukać ten tytuł]] w treści innych stron
lub <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} przeszukać powiązane logi].</span>',
-'userpage-userdoesnotexist' => 'Użytkownik „$1†nie jest zarejestrowany.
+'userpage-userdoesnotexist' => 'Użytkownik „<nowiki>$1</nowiki>†nie jest zarejestrowany.
Upewnij się, czy na pewno zamierza{{GENDER:|łeś|łaś|sz}} utworzyć lub zmodyfikować właśnie tę stronę.',
'userpage-userdoesnotexist-view' => 'Konto użytkownika „$1†nie jest zarejestrowane.',
'blocked-notice-logextract' => '{{GENDER:$1|Ten użytkownik|Ta użytkowniczka}} jest obecnie {{GENDER:$1|zablokowany|zablokowana}}.
@@ -893,6 +924,7 @@ Jeśli to nie pomoże – [[Special:UserLogout|wyloguj się]] i zaloguj ponownie
'token_suffix_mismatch' => "'''Twoja edycja została odrzucona, ponieważ twój klient pomieszał znaki interpunkcyjne w żetonie edycyjnym.
Twoja edycja została odrzucona by zapobiec zniszczeniu tekstu strony.
Takie problemy zdarzają się w wypadku korzystania z wadliwych anonimowych sieciowych usług proxy.'''",
+'edit_form_incomplete' => "'''Niektóre informacje wprowadzone do formularza nie dotarły do serwera. Upewnij się, że wprowadzone dane nie uległy uszkodzeniu i spróbuj ponownie.'''",
'editing' => 'Edytujesz „$1â€',
'editingsection' => 'Edytujesz „$1†(fragment)',
'editingcomment' => 'Edytujesz „$1†(nowa sekcja)',
@@ -1125,10 +1157,10 @@ Proszę sprawdzić rejestr operacji.',
# Suppression log
'suppressionlog' => 'Rejestr utajniania',
'suppressionlogtext' => 'Poniżej znajduje się lista usunięć i blokad utajnionych przed administratorami.
-Zobacz [[Special:IPBlockList|rejestr blokowania adresów IP]], jeśli chcesz sprawdzić aktualne zakazy i blokady.',
+Zobacz [[Special:BlockList|rejestr blokowania adresów IP]], jeśli chcesz sprawdzić aktualne zakazy i blokady.',
# History merging
-'mergehistory' => 'Scal historiÄ™ zmian stron',
+'mergehistory' => 'Scalanie historii stron',
'mergehistory-header' => 'Ta strona pozwala na scalenie historii zmian jednej strony z historiÄ… innej, nowszej strony.
Upewnij się, że zmiany będą zapewniać ciągłość historyczną edycji strony.',
'mergehistory-box' => 'Scal historię zmian dwóch stron:',
@@ -1236,12 +1268,13 @@ W międzyczasie możesz skorzystać z wyszukiwania Google.
Jednak informacje o treści {{GRAMMAR:D.lp|{{SITENAME}}}} mogą być w Google nieaktualne.',
# Quickbar
-'qbsettings' => 'Pasek szybkiego dostępu',
-'qbsettings-none' => 'Brak',
-'qbsettings-fixedleft' => 'Stały, z lewej',
-'qbsettings-fixedright' => 'Stały, z prawej',
-'qbsettings-floatingleft' => 'UnoszÄ…cy siÄ™, z lewej',
-'qbsettings-floatingright' => 'UnoszÄ…cy siÄ™, z prawej',
+'qbsettings' => 'Pasek szybkiego dostępu',
+'qbsettings-none' => 'Brak',
+'qbsettings-fixedleft' => 'Stały, z lewej',
+'qbsettings-fixedright' => 'Stały, z prawej',
+'qbsettings-floatingleft' => 'UnoszÄ…cy siÄ™, z lewej',
+'qbsettings-floatingright' => 'UnoszÄ…cy siÄ™, z prawej',
+'qbsettings-directionality' => 'Ustawione na stałe, zgodnie z kierunkiem zapisywania w wybranym języku',
# Preferences page
'preferences' => 'Preferencje',
@@ -1252,9 +1285,10 @@ Jednak informacje o treści {{GRAMMAR:D.lp|{{SITENAME}}}} mogą być w Google ni
'changepassword' => 'Zmiana hasła',
'prefs-skin' => 'Skórka',
'skin-preview' => 'podglÄ…d',
-'prefs-math' => 'Wzory',
'datedefault' => 'Domyślny',
+'prefs-beta' => 'Funkcje testowe',
'prefs-datetime' => 'Data i czas',
+'prefs-labs' => 'Funkcje doświadczalne',
'prefs-personal' => 'Dane użytkownika',
'prefs-rc' => 'Ostatnie zmiany',
'prefs-watchlist' => 'Obserwowane',
@@ -1276,8 +1310,6 @@ Jednak informacje o treści {{GRAMMAR:D.lp|{{SITENAME}}}} mogą być w Google ni
'columns' => 'Kolumny',
'searchresultshead' => 'Wyszukiwanie',
'resultsperpage' => 'Liczba wyników na stronie',
-'contextlines' => 'Pierwsze wiersze stron',
-'contextchars' => 'Litery kontekstu w linijce',
'stub-threshold' => 'Maksymalny (w bajtach) rozmiar strony oznaczanej jako <a href="#" class="stub">zalążek (stub)</a>',
'stub-threshold-disabled' => 'Wyłączone',
'recentchangesdays' => 'Liczba dni prezentowanych w ostatnich zmianach',
@@ -1290,7 +1322,7 @@ Wygenerowany losowo klucz, którego możesz użyć to $1',
'savedprefs' => 'Twoje preferencje zostały zapisane.',
'timezonelegend' => 'Strefa czasowa',
'localtime' => 'Czas lokalny',
-'timezoneuseserverdefault' => 'Użyj domyślnego ustawienia serwera',
+'timezoneuseserverdefault' => 'Użyj domyślnej dla tej wiki ($1)',
'timezoneuseoffset' => 'Inna (określ różnicę czasu)',
'timezoneoffset' => 'Różnica¹',
'servertime' => 'Czas serwera',
@@ -1339,8 +1371,8 @@ Dopuszczalna długość to $1 {{PLURAL:$1|znak|znaki|znaków}}.',
'email' => 'Eâ€mail',
'prefs-help-realname' => 'Wpisanie imienia i nazwiska nie jest obowiÄ…zkowe.
Jeśli zdecydujesz się je podać, zostaną użyte, by udokumentować Twoje autorstwo.',
-'prefs-help-email' => 'Podanie adresu eâ€mail nie jest obowiÄ…zkowe, lecz jest konieczne do zresetowania hasÅ‚a, jeÅ›li je zapomnisz.
-Umożliwi również innym użytkownikom skontaktowanie się z Tobą poprzez odpowiedni formularz (bez ujawniania Twojego adresu).',
+'prefs-help-email' => 'Podanie adresu eâ€mail nie jest obowiÄ…zkowe, lecz jest konieczne do zresetowania zapomnianego hasÅ‚a.',
+'prefs-help-email-others' => 'Możesz również umożliwić innym użytkownikom wysÅ‚anie do Ciebie eâ€maila poprzez TwojÄ… stronÄ™ użytkownika lub stronÄ™ dyskusji (bez ujawniania Twojego adresu).',
'prefs-help-email-required' => 'Wymagany jest adres eâ€mail.',
'prefs-info' => 'Podstawowe informacje',
'prefs-i18n' => 'Ustawienia międzynarodowe',
@@ -1451,7 +1483,7 @@ Umożliwi również innym użytkownikom skontaktowanie się z Tobą poprzez odpo
'right-editusercssjs' => 'Edycja plików CSS i JS innych użytkowników',
'right-editusercss' => 'Edycja plików CSS innych użytkowników',
'right-edituserjs' => 'Edycja plików JS innych użytkowników',
-'right-rollback' => 'Szybkie cofnięcie edycji użytkownika, który jako ostatni edytował jakąś stronę',
+'right-rollback' => 'Szybkie wycofanie zmian wprowadzonych przez użytkownika, który jako ostatni edytował jakąś stronę',
'right-markbotedits' => 'Oznaczanie rewertu jako edycji bota',
'right-noratelimit' => 'Brak ograniczeń przepustowości',
'right-import' => 'Import stron z innych wiki',
@@ -1465,15 +1497,15 @@ Umożliwi również innym użytkownikom skontaktowanie się z Tobą poprzez odpo
'right-userrights' => 'Edycja uprawnień wszystkich użytkowników',
'right-userrights-interwiki' => 'Edycja uprawnień użytkowników innych witryn wiki',
'right-siteadmin' => 'Blokowanie i odblokowywanie bazy danych',
-'right-reset-passwords' => 'Zerowanie haseł innych użytkowników',
'right-override-export-depth' => 'Eksport stron wraz z linkowanymi do głębokości 5 linków',
'right-sendemail' => 'WysyÅ‚anie eâ€maili do innych użytkowników',
# User rights log
-'rightslog' => 'Uprawnienia',
-'rightslogtext' => 'Rejestr zmian uprawnień użytkowników.',
-'rightslogentry' => 'zmienił przynależność $1 do grup ($2 → $3)',
-'rightsnone' => 'brak',
+'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)',
+'rightsnone' => 'brak',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'przeglÄ…dania tej strony',
@@ -1596,11 +1628,12 @@ Przejdź na stronę [[Special:NewFiles|galerii nowych plików]], by zobaczyć pl
'illegalfilename' => 'Nazwa pliku „$1†zawiera znaki niedozwolone w tytułach stron.
Zmień nazwę pliku i prześlij go ponownie.',
'badfilename' => 'Nazwa pliku zostaÅ‚a zmieniona na „$1â€.',
-'filetype-mime-mismatch' => 'Rozszerzenie pliku nie pasuje do typu MIME.',
+'filetype-mime-mismatch' => 'Rozszerzenie pliku „.$1“ nie pasuje do wykrytego typu MIME $2.',
'filetype-badmime' => 'Przesyłanie plików z typem MIME „$1†jest niedozwolone.',
'filetype-bad-ie-mime' => 'Nie można zaÅ‚adować tego pliku, ponieważ Internet Explorer wykryje go jako „$1â€, a taki typ pliku jest zabronioniony jako potencjalnie niebezpieczny.',
'filetype-unwanted-type' => "'''„.$1â€''' nie jest zalecanym typem pliku. Pożądane sÄ… pliki w {{PLURAL:$3|formacie|formatach}} $2.",
-'filetype-banned-type' => "'''„.$1â€''' jest niedozwolonym typem pliku. Dopuszczalne sÄ… pliki w {{PLURAL:$3|formacie|formatach}} $2.",
+'filetype-banned-type' => "'''„.$1â€''' nie {{PLURAL:$4|jest dozwolonym typem pliku|sÄ… dozwolonymi typami plików}}.
+Dopuszczalne sÄ… pliki w {{PLURAL:$3|formacie|formatach}} $2.",
'filetype-missing' => 'Plik nie ma rozszerzenia (np. „.jpgâ€).',
'empty-file' => 'Przesłany przez Ciebie plik jest pusty.',
'file-too-large' => 'Przesłany przez Ciebie plik jest zbyt duży.',
@@ -1618,6 +1651,7 @@ Plik ma rozmiar {{PLURAL:$2|1 bajt|$2 bajty|$2 bajtów}}.',
'largefileserver' => 'Plik jest większy niż maksymalny dozwolony rozmiar.',
'emptyfile' => 'Przesłany plik wydaje się być pusty. Może być to spowodowane literówką w nazwie pliku.
Sprawdź, czy nazwa jest prawidłowa.',
+'windows-nonascii-filename' => 'Na tej wiki nie można używać znaków specjalnych w nazwach plików.',
'fileexists' => "Plik o takiej nazwie już istnieje.
Sprawdź '''<tt>[[:$1]]</tt>''', jeśli nie jesteś pewien czy chcesz go zastąpić.
[[$1|thumb]]",
@@ -1654,6 +1688,8 @@ Sprawdź historię usunięć tamtego pliku zanim prześlesz go ponownie.',
'php-uploaddisabledtext' => 'PrzesyÅ‚anie plików PHP zostaÅ‚o zablokowane. Sprawdź ustawienie „file_uploadsâ€.',
'uploadscripted' => 'Plik zawiera kod HTML lub skrypt, który może zostać błędnie zinterpretowany przez przeglądarkę internetową.',
'uploadvirus' => 'W pliku jest wirus! Szczegóły: $1',
+'uploadjava' => 'Ten plik zawiera deklaracjÄ™ klasy Java skompresowanÄ… ZIP.
+Przesyłanie plików Java nie jest dozwolone, ponieważ mogłoby zostać użyte do obchodzenia zabezpieczeń.',
'upload-source' => 'Plik źródłowy',
'sourcefilename' => 'Nazwa pierwotna',
'sourceurl' => 'Źródłowy adres URL',
@@ -1664,10 +1700,6 @@ Sprawdź historię usunięć tamtego pliku zanim prześlesz go ponownie.',
'watchthisupload' => 'Obserwuj ten plik',
'filewasdeleted' => 'Plik o tej nazwie istniał, ale został usunięty.
Zanim załadujesz go ponownie, sprawdź $1.',
-'upload-wasdeleted' => "'''Uwaga! Przesyłasz plik, który został usunięty.'''
-
-Zastanów się, czy powinno się przesyłać ten plik ponownie.
-Poniżej znajduje się historia usunięć tego pliku.",
'filename-bad-prefix' => "Nazwa pliku, który przesyÅ‚asz, zaczyna siÄ™ od '''„$1â€'''. Jest to nazwa zazwyczaj przypisywana automatycznie przez cyfrowe aparaty fotograficzne, która nie informuje o zawartoÅ›ci pliku.
Zmień nazwę pliku na bardziej opisową.",
'filename-prefix-blacklist' => ' #<!-- nie modyfikuj tej linii --> <pre>
@@ -1706,12 +1738,29 @@ Jeśli problem będzie się powtarzał, skontaktuj się z [[Special:ListUsers/sy
'upload-unknown-size' => 'Nieznany rozmiar',
'upload-http-error' => 'Wystąpił błąd protokołu HTTP – $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Wystąpił błąd podczas otwierania pliku ZIP, aby go sprawdzić.',
+'zip-wrong-format' => 'Wybrany plik nie jest w formacie ZIP.',
+'zip-bad' => 'Plik ZIP jest uszkodzony lub w inny sposób niemożliwy do odczytania.
+Nie może zostać odpowiednio sprawdzony pod kątem bezpieczeństwa.',
+'zip-unsupported' => 'Plik jest w formacie ZIP ale wykorzystuje funkcje, które nie są obsługiwane przez MediaWiki.
+Plik nie może zostać odpowiednio sprawdzony pod kątem bezpieczeństwa.',
+
+# Special:UploadStash
+'uploadstash' => 'Schowek z przesłanymi plikami',
+'uploadstash-summary' => 'Ta strona umożliwia dostęp do przesłanych lub właśnie przesyłanych plików, ale jeszcze nie opublikowanych na wiki. Pliki widzi wyłącznie użytkownik, które je przesłał.',
+'uploadstash-clear' => 'Wyczyść schowek z plikami',
+'uploadstash-nofiles' => 'Nie masz żadnych ukrytych plików.',
+'uploadstash-badtoken' => 'Operacja nie powiodła się. Możliwą przyczyną jest, że Twoje upoważnienie do edytowania wygasło. Spróbuj ponownie.',
+'uploadstash-errclear' => 'Czyszczenie plików nie powiodło się.',
+'uploadstash-refresh' => 'Odśwież listę plików',
+
# img_auth script messages
'img-auth-accessdenied' => 'Odmowa dostępu',
'img-auth-nopathinfo' => 'Brak PATH_INFO.
Serwer nie został skonfigurowany, tak aby przekazywał tę informację.
Możliwe, że jest oparty na CGI i nie może obsługiwać img_auth.
-Zobacz http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Zobacz informacje o autoryzacji grafik.]',
'img-auth-notindir' => 'Żądana ścieżka nie jest w obrębie katalogu skonfigurowanego do przesyłania plików.',
'img-auth-badtitle' => 'Nie można wygenerować prawidÅ‚owego tytuÅ‚ z „$1â€.',
'img-auth-nologinnWL' => 'Nie jesteś zalogowany, a „$1†nie jest na białej liście.',
@@ -1787,7 +1836,7 @@ Poniższa lista pokazuje jedynie {{PLURAL:$1|pierwszy link|pierwsze $1 linki|pie
Dostępna jest też [[Special:WhatLinksHere/$2|pełna lista]].',
'nolinkstoimage' => 'Żadna strona nie odwołuje się do tego pliku.',
'morelinkstoimage' => 'Pokaż [[Special:WhatLinksHere/$1|więcej odnośników]] do tego pliku.',
-'redirectstofile' => '{{PLURAL:$1|Następujący plik przekierowuje|Następujące pliki przekierowują}} do tego pliku:',
+'linkstoimage-redirect' => '$1 (przekierowanie do pliku) $2',
'duplicatesoffile' => '{{PLURAL:$1|Następujący plik jest kopią|Następujące pliki są kopiami}} pliku ([[Special:FileDuplicateSearch/$2|więcej informacji]]):',
'sharedupload' => 'Ten plik znajduje się na $1 i może być używany w innych projektach.',
'sharedupload-desc-there' => 'Ten plik znajduje się na $1 i może być używany w innych projektach.
@@ -1877,18 +1926,19 @@ Sprawdź inne linki do szablonów, zanim usuniesz tę stronę.',
'statistics-users-active-desc' => 'Użytkownicy, którzy byli aktywni w ciągu {{PLURAL:$1|ostatniego dnia|ostatnich $1 dni}}',
'statistics-mostpopular' => 'Najczęściej odwiedzane strony',
-'disambiguations' => 'Strony ujednoznaczniajÄ…ce',
+'disambiguations' => 'Strony linkujÄ…ce do stron ujednoznaczniajÄ…cych',
'disambiguationspage' => 'Template:disambig',
'disambiguations-text' => "Poniższe strony odwołują się do '''stron ujednoznaczniających''',
a powinny odwoływać się bezpośrednio do stron treści.<br />
Strona uznawana jest za ujednoznaczniającą, jeśli zawiera szablon linkowany przez stronę [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Podwójne przekierowania',
-'doubleredirectstext' => 'Lista zawiera strony z przekierowaniami do stron, które przekierowują do innej strony.
+'doubleredirects' => 'Podwójne przekierowania',
+'doubleredirectstext' => 'Lista zawiera strony z przekierowaniami do stron, które przekierowują do innej strony.
Każdy wiersz zawiera linki do pierwszego i drugiego przekierowania oraz link, do którego prowadzi drugie przekierowanie. Ostatni link prowadzi zazwyczaj do strony, do której powinna w rzeczywistości przekierowywać pierwsza strona.
<del>Skreślenie</del> oznacza naprawienie przekierowania.',
-'double-redirect-fixed-move' => 'Naprawa podwójnego przekierowania [[$1]] → [[$2]]',
-'double-redirect-fixer' => 'Naprawiacz przekierowań',
+'double-redirect-fixed-move' => 'Naprawa podwójnego przekierowania [[$1]] → [[$2]]',
+'double-redirect-fixed-maintenance' => 'Naprawiono podwójne przekierowanie z [[$1]] do [[$2]].',
+'double-redirect-fixer' => 'Naprawiacz przekierowań',
'brokenredirects' => 'Zerwane przekierowania',
'brokenredirectstext' => 'Poniższe przekierowania wskazują na nieistniejące strony.',
@@ -1965,6 +2015,7 @@ Inne witryny mogą odwoływać się do tych plików, używając bezpośrednich a
'pager-newer-n' => '{{PLURAL:$1|1 nowszy|$1 nowsze|$1 nowszych}}',
'pager-older-n' => '{{PLURAL:$1|1 starszy|$1 starsze|$1 starszych}}',
'suppress' => 'Rewizor',
+'querypage-disabled' => 'Ta strona specjalna została wyłączona ze względu na ograniczenia wydajności.',
# Book sources
'booksources' => 'Książki',
@@ -1974,8 +2025,8 @@ Inne witryny mogą odwoływać się do tych plików, używając bezpośrednich a
'booksources-invalid-isbn' => 'Podany numer ISBN został rozpoznany jako nieprawidłowy. Sprawdź czy podany numer zgadza się z numerem zaczerpniętym ze źródła.',
# Special:Log
-'specialloguserlabel' => 'Użytkownik',
-'speciallogtitlelabel' => 'Tytuł',
+'specialloguserlabel' => 'Kto',
+'speciallogtitlelabel' => 'Co (tytuł lub użytkownik)',
'log' => 'Rejestr operacji',
'all-logs-page' => 'Wszystkie publiczne operacje',
'alllogstext' => 'Wspólny rejestr wszystkich typów operacji dla {{GRAMMAR:D.lp|{{SITENAME}}}}.
@@ -2015,12 +2066,13 @@ Zobacz również [[Special:WantedCategories|brakujące kategorie]].',
'sp-deletedcontributions-contribs' => 'wkład',
# Special:LinkSearch
-'linksearch' => 'Linki zewnętrzne',
+'linksearch' => 'Wyszukiwarka linków zewnętrznych',
'linksearch-pat' => 'Wzorzec wyszukiwania',
'linksearch-ns' => 'Przestrzeń nazw',
'linksearch-ok' => 'Szukaj',
-'linksearch-text' => 'Można użyć symbolu wieloznacznego „*â€. Dla przykÅ‚adu „*.wikipedia.org†spowoduje wyszukanie wszystkich linków prowadzÄ…cych do domeny „wikipedia.org†i jej poddomen.<br />
-Obsługiwane protokoły: <tt>$1</tt>',
+'linksearch-text' => 'Można użyć symboli wieloznacznych jak „*.wikipedia.orgâ€.
+Wymaga podania co najmniej domeny najwyższego poziomu np. „*.orgâ€.<br />
+Obsługiwane protokoły: <tt>$1</tt> (nie podawaj ich podczas wyszukiwania).',
'linksearch-line' => '$1 link na stronie $2',
'linksearch-error' => 'Symbolu wieloznacznego można użyć wyłącznie na początku nazwy hosta.',
@@ -2081,6 +2133,10 @@ Adres eâ€mailowy, który zostaÅ‚ przez Ciebie wprowadzony w [[Special:Preferenc
'noemailtext' => 'Ten użytkownik nie podaÅ‚ poprawnego adresu eâ€mail.',
'nowikiemailtitle' => 'Brak zezwolenia na otrzymywanie eâ€maili',
'nowikiemailtext' => 'Ten użytkownik nie chce otrzymywać wiadomoÅ›ci eâ€mail od innych użytkowników.',
+'emailnotarget' => 'Adresat nie istnieje lub podana nazwa użytkownika jest nieprawidłowa.',
+'emailtarget' => 'Wpisz nazwę użytkownika, który jest adresatem',
+'emailusername' => 'Nazwa użytkownika',
+'emailusernamesubmit' => 'Wyślij',
'email-legend' => 'WyÅ›lij eâ€mail do innego użytkownika {{GRAMMAR:D.lp|{{SITENAME}}}}',
'emailfrom' => 'Od',
'emailto' => 'Do',
@@ -2105,10 +2161,10 @@ Adres eâ€mailowy, który zostaÅ‚ przez Ciebie wprowadzony w [[Special:Preferenc
'watchlistanontext' => '$1, aby obejrzeć lub edytować elementy listy obserwowanych.',
'watchnologin' => 'Nie jesteÅ› zalogowany',
'watchnologintext' => 'Musisz się [[Special:UserLogin|zalogować]] przed modyfikacją listy obserwowanych stron.',
-'addedwatch' => 'Dodana do listy obserwowanych',
+'addwatch' => 'Dodaj do listy obserwowanych',
'addedwatchtext' => "Strona „[[:$1|$1]]†została dodana do Twojej [[Special:Watchlist|listy obserwowanych]].
Każda zmiana treści tej strony lub związanej z nią strony dyskusji zostanie odnotowana na tej liście. Dodatkowo nazwa strony zostanie '''wytłuszczona''' na [[Special:RecentChanges|liście ostatnich zmian]], aby ułatwić Ci zauważenie faktu zmiany.",
-'removedwatch' => 'Usunięto z listy obserwowanych',
+'removewatch' => 'Usuń z listy obserwowanych',
'removedwatchtext' => 'Strona „[[:$1]]†została usunięta z Twojej [[Special:Watchlist|listy obserwowanych]].',
'watch' => 'Obserwuj',
'watchthispage' => 'Obserwuj',
@@ -2129,8 +2185,9 @@ Każda zmiana treści tej strony lub związanej z nią strony dyskusji zostanie
'watchlist-options' => 'Opcje obserwowanych',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'DodajÄ™ do obserwowanych...',
-'unwatching' => 'Przestaję obserwować...',
+'watching' => 'DodajÄ™ do obserwowanych...',
+'unwatching' => 'Przestaję obserwować...',
+'watcherrortext' => 'Wystąpił błąd podczas zmiany obecności „$1†na liście obserwowanych.',
'enotif_mailer' => 'Powiadomienie z {{GRAMMAR:D.lp|{{SITENAME}}}}',
'enotif_reset' => 'Zaznacz wszystkie strony jako odwiedzone',
@@ -2161,13 +2218,13 @@ Możesz także zresetować wszystkie flagi powiadomień na swojej liście stron
--
W celu zmiany ustawień swojej listy obserwowanych odwiedź
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Usunięcie strony z listy obserwowanych możliwe jest na stronie
$UNWATCHURL
Pomoc
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Usuń stronę',
@@ -2183,7 +2240,7 @@ Pomoc
Upewnij się, czy na pewno chcesz to zrobić, że rozumiesz konsekwencje i że robisz to w zgodzie z [[{{MediaWiki:Policy-url}}|zasadami]].',
'actioncomplete' => 'Operacja wykonana',
'actionfailed' => 'Działanie nie powiodło się',
-'deletedtext' => 'UsuniÄ™to „<nowiki>$1</nowiki>â€.
+'deletedtext' => 'UsuniÄ™to „$1â€.
Zobacz na stronie $2 rejestr ostatnio wykonanych usunięć.',
'deletedarticle' => 'usunÄ…Å‚ [[$1]]',
'suppressedarticle' => 'utajnił [[$1]]',
@@ -2242,7 +2299,7 @@ Wszystkie aktywne zabezpieczenia odnajdziesz na liście [[Special:ProtectedPages
'protect_expiry_invalid' => 'Podany czas automatycznego odbezpieczenia jest nieprawidłowy.',
'protect_expiry_old' => 'Podany czas automatycznego odblokowania znajduje się w przeszłości.',
'protect-unchain-permissions' => 'Odblokuj dodatkowe opcje zabezpieczania',
-'protect-text' => "Możesz tu sprawdzić i zmienić poziom zabezpieczenia strony '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Możesz tu sprawdzić i zmienić poziom zabezpieczenia strony '''$1'''.",
'protect-locked-blocked' => "Nie możesz zmienić poziomów zabezpieczenia, ponieważ jesteś zablokowany.
Obecne ustawienia dla strony '''$1''' to:",
'protect-locked-dblock' => "Nie można zmienić poziomu zabezpieczenia z powodu działającej blokady bazy danych. Obecne ustawienia dla strony '''$1''' to:",
@@ -2294,9 +2351,8 @@ Obecne ustawienia dla strony '''$1''' to:",
'undeletepagetext' => '{{PLURAL:$1|Następująca strona została usunięta, ale jej|Następujące $1 strony zostały usunięte, ale ich}} kopia wciąż znajduje się w archiwum.
Archiwum co jakiś czas może być oczyszczane.',
'undelete-fieldset-title' => 'Odtwarzanie wersji',
-'undeleteextrahelp' => "Jeśli chcesz odtworzyć całą stronę, pozostaw wszystkie pola niezaznaczone i kliknij '''''Odtwórz'''''.
-Częściowe odtworzenie możesz wykonać, zaznaczając odpowiednie pola, odpowiadające wersjom, które będą odtworzone, a następnie klikając '''''Odtwórz'''''.
-Naciśnięcie '''''Wyczyść''''' usunie wszystkie zaznaczenia i wyczyści pole komentarza.",
+'undeleteextrahelp' => "Jeśli chcesz odtworzyć całą historię edycji strony, pozostaw wszystkie pola niezaznaczone i kliknij '''''{{int:undeletebtn}}'''''.
+Wybiórcze odtworzenie możesz wykonać, zaznaczając pola odpowiadające wersjom, które mają zostać odtworzone, a następnie klikając '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|zarchiwizowana wersja|zarchiwizowane wersje|zarchiwizowanych wersji}}',
'undeletehistory' => 'Odtworzenie strony spowoduje przywrócenie także jej wszystkich poprzednich wersji.
Jeśli od czasu usunięcia ktoś utworzył nową stronę o tej samej nazwie, odtwarzane wersje znajdą się w jej historii, a obecna wersja pozostanie bez zmian.',
@@ -2342,9 +2398,12 @@ $1',
'undelete-show-file-submit' => 'Tak',
# Namespace form on various pages
-'namespace' => 'Przestrzeń nazw',
-'invert' => 'odwróć wybór',
-'blanknamespace' => '(główna)',
+'namespace' => 'Przestrzeń nazw',
+'invert' => 'odwróć wybór',
+'tooltip-invert' => 'Zaznacz to pole, aby ukryć zmiany na stronach w wybranych przestrzeniach nazw (oraz związanych z nimi innymi przestrzeniami nazw, jeśli zaznaczono)',
+'namespace_association' => 'powiązana przestrzeń nazw',
+'tooltip-namespace_association' => 'Zaznacz to pole, aby uwzględnić strony dyskusji i tematu związane z wybranymi przestrzeniami nazw',
+'blanknamespace' => '(główna)',
# Contributions
'contributions' => 'Wkład użytkownika',
@@ -2393,13 +2452,15 @@ Poniżej znajduje się ostatni wpis w rejestrze blokowania.',
'whatlinkshere-filters' => 'Filtry',
# Block/unblock
+'autoblockid' => 'Automatyczna blokada nr $1',
+'block' => 'Zablokuj użytkownika',
+'unblock' => 'Odblokuj użytkownika',
'blockip' => 'Zablokuj użytkownika',
'blockip-title' => 'Zablokowanie użytkownika',
'blockip-legend' => 'Zablokuj użytkownika',
'blockiptext' => 'Użyj poniższego formularza do zablokowania możliwości edycji spod określonego adresu IP lub konkretnemu użytkownikowi.
Blokować należy jedynie po to, by zapobiec wandalizmom, zgodnie z [[{{MediaWiki:Policy-url}}|przyjętymi zasadami]].
Podaj powód (np. umieszczając nazwy stron, na których dopuszczono się wandalizmu).',
-'ipaddress' => 'Adres IP',
'ipadressorusername' => 'Adres IP lub nazwa użytkownika',
'ipbexpiry' => 'Upływa',
'ipbreason' => 'Powód',
@@ -2414,7 +2475,7 @@ Podaj powód (np. umieszczając nazwy stron, na których dopuszczono się wandal
** Wprowadzanie fałszywych informacji
** Wulgaryzmy
** Wypisywanie bzdur na stronach',
-'ipbanononly' => 'Zablokuj tylko anonimowych użytkowników',
+'ipb-hardblock' => 'Zablokuj możliwość edytowania przez zalogowanych użytkowników z tego adresu IP.',
'ipbcreateaccount' => 'Zapobiegnij utworzeniu konta',
'ipbemailban' => 'Zablokuj możliwość wysyÅ‚ania eâ€mailów',
'ipbenableautoblock' => 'Zablokuj ostatni adres IP tego użytkownika i automatycznie wszystkie kolejne, z których będzie próbował edytować',
@@ -2425,12 +2486,15 @@ Podaj powód (np. umieszczając nazwy stron, na których dopuszczono się wandal
'ipbotherreason' => 'Inne lub dodatkowy powód',
'ipbhidename' => 'Ukryj nazwę użytkownika w edycjach i listach',
'ipbwatchuser' => 'Obserwuj stronę osobistą i stronę dyskusji tego użytkownika',
-'ipballowusertalk' => 'Pozwól temu użytkownikowi edytować własną stronę dyskusji, kiedy jest zablokowany',
+'ipb-disableusertalk' => 'Zablokuj możliwość edytowania przez tego użytkownika własnej strony dyskusji w czasie trwania blokady.',
'ipb-change-block' => 'Zmień ustawienia blokady',
+'ipb-confirm' => 'Potwierdzam blokadÄ™',
'badipaddress' => 'Niepoprawny adres IP',
'blockipsuccesssub' => 'Zablokowanie powiodło się',
'blockipsuccesstext' => '{{GENDER:$1|Użytkownik|Użytkowniczka}} [[Special:Contributions/$1|$1]] {{GENDER:$1|został zablokowany|została zablokowana}}.<br />
Przejdź do [[Special:IPBlockList|listy zablokowanych adresów IP]], by przejrzeć blokady.',
+'ipb-blockingself' => 'Usiłujesz zablokować siebie samego! Czy na pewno chcesz to zrobić?',
+'ipb-confirmhideuser' => 'Zamierzasz zablokować użytkownika z wÅ‚Ä…czonÄ… opcjÄ… „ukryj użytkownikaâ€. Spowoduje to pominiÄ™cie nazwy użytkownika we wszystkich listach i rejestrach. Czy na pewno chcesz to zrobić?',
'ipb-edit-dropdown' => 'Edytuj listÄ™ przyczyn blokady',
'ipb-unblock-addr' => 'Odblokuj $1',
'ipb-unblock' => 'Odblokuj użytkownika lub adres IP',
@@ -2440,17 +2504,23 @@ Przejdź do [[Special:IPBlockList|listy zablokowanych adresów IP]], by przejrze
'unblockiptext' => 'Użyj poniższego formularza, by przywrócić możliwość edycji z wcześniej zablokowanego adresu IP lub użytkownikowi.',
'ipusubmit' => 'Odblokuj',
'unblocked' => '[[User:$1|$1]] {{GENDER:$1|został odblokowany|została odblokowana|został odblokowany}}.',
+'unblocked-range' => '$1 został odblokowany',
'unblocked-id' => 'Blokada $1 została zdjęta',
+'blocklist' => 'Zablokowani użytkownicy',
'ipblocklist' => 'Zablokowani użytkownicy',
'ipblocklist-legend' => 'Znajdź zablokowanego użytkownika',
-'ipblocklist-username' => 'Nazwa użytkownika lub adres IP',
-'ipblocklist-sh-userblocks' => '$1 blokady kont',
-'ipblocklist-sh-tempblocks' => '$1 tymczasowe blokady',
-'ipblocklist-sh-addressblocks' => '$1 blokady pojedynczych adresów IP',
+'blocklist-userblocks' => 'Ukryj blokady konta',
+'blocklist-tempblocks' => 'Ukryj tymczasowe blokady',
+'blocklist-addressblocks' => 'Ukryj blokady pojedynczych adresów IP',
+'blocklist-timestamp' => 'Sygnatura czasowa',
+'blocklist-target' => 'Cel',
+'blocklist-expiry' => 'Upływa',
+'blocklist-by' => 'ZarzÄ…dzanie blokowaniem',
+'blocklist-params' => 'Parametry blokad',
+'blocklist-reason' => 'Powód',
'ipblocklist-submit' => 'Szukaj',
'ipblocklist-localblock' => 'Lokalna blokada',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Inna blokada|Inne blokady}}',
-'blocklistline' => '$1, $2 zablokował $3 ($4)',
'infiniteblock' => 'na zawsze',
'expiringblock' => 'wygasa $1 o $2',
'anononlyblock' => 'tylko niezalogowani',
@@ -2473,7 +2543,7 @@ Przyczyna blokady $1 to: „$2â€',
'reblock-logentry' => 'zmienił ustawienia blokady dla [[$1]], czas blokady: $2 $3',
'blocklogtext' => 'Poniżej znajduje się lista blokad założonych i zdjętych z poszczególnych adresów IP.
Na liście nie znajdą się adresy IP, które zablokowano w sposób automatyczny.
-By przejrzeć listę obecnie aktywnych blokad, przejdź na stronę [[Special:IPBlockList|zablokowanych adresów i użytkowników]].',
+By przejrzeć listę obecnie aktywnych blokad, przejdź na stronę [[Special:BlockList|zablokowanych adresów i użytkowników]].',
'unblocklogentry' => 'odblokował $1',
'block-log-flags-anononly' => 'tylko anonimowi',
'block-log-flags-nocreate' => 'blokada tworzenia konta',
@@ -2487,9 +2557,9 @@ By przejrzeć listę obecnie aktywnych blokad, przejdź na stronę [[Special:IPB
'ipb_expiry_temp' => 'Ukryte blokowanie nazwy użytkownika należy wykonać trwale.',
'ipb_hide_invalid' => 'Ukrycie konta tego użytkownika nie jest możliwe, prawdopodobnie wykonał on zbyt wiele edycji.',
'ipb_already_blocked' => '„$1†jest już zablokowany',
-'ipb-needreblock' => '== IstniejÄ…ca blokada ==
-$1 jest już zablokowany. Czy chcesz zmienić ustawienia blokady?',
+'ipb-needreblock' => '$1 jest już zablokowany. Czy chcesz zmienić ustawienia blokady?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Inna blokada|Inne blokady}}',
+'unblock-hideuser' => 'Nie można odblokować użytkownika, jeśli jego nazwa została ukryta.',
'ipb_cant_unblock' => 'Błąd: Blokada o ID $1 nie została znaleziona. Mogła ona zostać zdjęta wcześniej.',
'ipb_blocked_as_range' => 'Błąd – adres IP $1 nie został zablokowany bezpośrednio i nie może zostać odblokowany.
Należy on do zablokowanego zakresu adresów $2. Odblokować można tylko cały zakres.',
@@ -2528,6 +2598,7 @@ Pamiętaj by [[Special:UnlockDB|zdjąć blokadę]] po zakończeniu działań adm
'lockfilenotwritable' => 'Nie można zapisać pliku blokady bazy danych.
Blokowanie i odblokowywanie bazy danych, wymaga by plik mógł być zapisywany przez web serwer.',
'databasenotlocked' => 'Baza danych nie jest zablokowana.',
+'lockedbyandtime' => '(przez $1 dnia $2 o $3)',
# Move page
'move-page' => 'PrzenieÅ› $1',
@@ -2651,7 +2722,7 @@ Możesz również użyć linku, np. [[{{#Special:Export}}/{{MediaWiki:Mainpage}}
'allmessagesdefault' => 'Tekst domyślny',
'allmessagescurrent' => 'Tekst obecny',
'allmessagestext' => 'Lista wszystkich komunikatów systemowych dostępnych w przestrzeni nazw MediaWiki.
-Odwiedź [http://www.mediawiki.org/wiki/Localisation Tłumaczenie MediaWiki] oraz [http://translatewiki.net translatewiki.net], jeśli chcesz uczestniczyć w tłumaczeniu oprogramowania MediaWiki.',
+Odwiedź [//www.mediawiki.org/wiki/Localisation Tłumaczenie MediaWiki] oraz [//translatewiki.net translatewiki.net], jeśli chcesz uczestniczyć w tłumaczeniu oprogramowania MediaWiki.',
'allmessagesnotsupportedDB' => "Ta strona nie może być użyta, ponieważ zmienna '''\$wgUseDatabaseMessages''' jest wyłączona.",
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter' => 'Filtrowanie według stanu modyfikacji:',
@@ -2803,6 +2874,7 @@ Pozwala na wpisanie powodu w opisie zmian.',
'vector.css' => '/* Umieszczony tutaj kod CSS wpłynie na wygląd skórki Wektor */',
'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 */',
# Scripts
'common.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany przez każdego użytkownika, podczas każdego ładowania strony. */',
@@ -2817,9 +2889,7 @@ Pozwala na wpisanie powodu w opisie zmian.',
'vector.js' => '/* Umieszczony tutaj kod JavaScript zostanie załadowany wyłącznie przez użytkowników korzystających ze skórki Wektor */',
# Metadata
-'nodublincore' => 'Metadane zgodne z Dublin Core RDF zostały wyłączone dla tego serwera.',
-'nocreativecommons' => 'Metadane zgodne z Creative Commons RDF zostały wyłączone dla tego serwera.',
-'notacceptable' => 'Serwer wiki nie może dostarczyć danych w formacie, którego Twoja przeglądarka oczekuje.',
+'notacceptable' => 'Serwer wiki nie może dostarczyć danych w formacie, którego Twoja przeglądarka oczekuje.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonimowy użytkownik|Anonimowi użytkownicy}} {{GRAMMAR:D.lp|{{SITENAME}}}}',
@@ -2843,12 +2913,17 @@ Najprawdopodobniej zostało to spowodowane przez link do zewnętrznej strony int
'spam_blanking' => 'Wszystkie wersje zawierały odnośniki do $1. Czyszczenie strony.',
# Info page
-'infosubtitle' => 'Informacja o stronie',
-'numedits' => 'Liczba edycji (strona zawartości): $1',
-'numtalkedits' => 'Liczba edycji (strona dyskusji): $1',
-'numwatchers' => 'Liczba obserwujÄ…cych: $1',
-'numauthors' => 'Liczba autorów (strona zawartości): $1',
-'numtalkauthors' => 'Liczba autorów (strona dyskusji): $1',
+'pageinfo-title' => 'Informacje o „$1“',
+'pageinfo-header-edits' => 'Edycje',
+'pageinfo-header-watchlist' => 'Obserwowane',
+'pageinfo-header-views' => 'Odsłon',
+'pageinfo-subjectpage' => 'Strona',
+'pageinfo-talkpage' => 'Strona dyskusji',
+'pageinfo-watchers' => 'ObserwujÄ…cych',
+'pageinfo-edits' => 'Edycji',
+'pageinfo-authors' => 'Autorów',
+'pageinfo-views' => 'Odsłon',
+'pageinfo-viewsperedit' => 'Odsłon na edycję',
# Skin names
'skinname-standard' => 'Standardowa',
@@ -2861,26 +2936,6 @@ Najprawdopodobniej zostało to spowodowane przez link do zewnętrznej strony int
'skinname-modern' => 'Nowoczesna',
'skinname-vector' => 'Wektor',
-# Math options
-'mw_math_png' => 'Zawsze generuj grafikÄ™ PNG',
-'mw_math_simple' => 'HTML dla prostych, dla pozostałych grafika PNG',
-'mw_math_html' => 'Spróbuj HTML, a jeśli zawiedzie użyj grafiki PNG',
-'mw_math_source' => 'Pozostaw w TeXu (dla przeglÄ…darek tekstowych)',
-'mw_math_modern' => 'HTML – zalecane dla nowych przeglądarek',
-'mw_math_mathml' => 'MathML jeśli dostępny (eksperymentalne)',
-
-# Math errors
-'math_failure' => 'Parser nie mógł rozpoznać',
-'math_unknown_error' => 'nieznany błąd',
-'math_unknown_function' => 'nieznana funkcja',
-'math_lexing_error' => 'błędna nazwa',
-'math_syntax_error' => 'błąd składni',
-'math_image_error' => 'Konwersja z lub do formatu PNG nie powiodła się. Sprawdź, czy poprawnie zainstalowane są latex i dvipng (lub dvips, gs i convert)',
-'math_bad_tmpdir' => 'Nie można utworzyć lub zapisywać w tymczasowym katalogu dla wzorów matematycznych',
-'math_bad_output' => 'Nie można utworzyć lub zapisywać w wyjściowym katalogu dla wzorów matematycznych',
-'math_notexvc' => 'Brak programu texvc.
-Zapoznaj siÄ™ z math/README w celu konfiguracji.',
-
# Patrolling
'markaspatrolleddiff' => 'oznacz edycjÄ™ jako „sprawdzonÄ…â€',
'markaspatrolledtext' => 'Oznacz tÄ™ stronÄ™ jako „sprawdzonÄ…â€',
@@ -2916,22 +2971,25 @@ $1',
'nextdiff' => 'następna edycja →',
# Media information
-'mediawarning' => "'''Uwaga!''' Plik w tym formacie może zawierać złośliwy kod.
+'mediawarning' => "'''Uwaga!''' Plik w tym formacie może zawierać złośliwy kod.
Jeśli go otworzysz, możesz zarazić swój system.",
-'imagemaxsize' => "Ograniczenie wielkości obrazków<br />''(na stronach opisu plików)''",
-'thumbsize' => 'Rozmiar miniaturki',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|strona|strony|stron}}',
-'file-info' => 'rozmiar pliku: $1, typ MIME: $2',
-'file-info-size' => '$1 × $2 pikseli, rozmiar pliku: $3, typ MIME: $4',
-'file-nohires' => '<small>Grafika w wyższej rozdzielczości jest niedostępna.</small>',
-'svg-long-desc' => 'Plik SVG, nominalnie $1 × $2 pikseli, rozmiar pliku: $3',
-'show-big-image' => 'Pełna rozdzielczość',
-'show-big-image-thumb' => '<small>Rozmiar podglądu: $1 × $2 pikseli</small>',
-'file-info-gif-looped' => 'zapętlony',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|klatka|klatki|klatek}}',
-'file-info-png-looped' => 'zapętlony',
-'file-info-png-repeat' => 'powtarzany $1 {{PLURAL:$1|raz|razy}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|klatka|klatki|klatek}}',
+'imagemaxsize' => "Ograniczenie wielkości obrazków<br />''(na stronach opisu plików)''",
+'thumbsize' => 'Rozmiar miniaturki',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|strona|strony|stron}}',
+'file-info' => 'rozmiar pliku: $1, typ MIME: $2',
+'file-info-size' => '$1 × $2 pikseli, rozmiar pliku: $3, typ MIME: $4',
+'file-info-size-pages' => '$1 × $2 pikseli, rozmiar pliku: $3, typ MIME: $4, $5 {{PLURAL:$5|strona|strony|stron}}',
+'file-nohires' => '<small>Grafika w wyższej rozdzielczości jest niedostępna.</small>',
+'svg-long-desc' => 'Plik SVG, nominalnie $1 × $2 pikseli, rozmiar pliku: $3',
+'show-big-image' => 'Pełna rozdzielczość',
+'show-big-image-preview' => '<small>Rozmiar podglądu – $1.</small>',
+'show-big-image-other' => '<small>Inne rozmiary: $1.</small>',
+'show-big-image-size' => '$1 x $2 pikseli',
+'file-info-gif-looped' => 'zapętlony',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|klatka|klatki|klatek}}',
+'file-info-png-looped' => 'zapętlony',
+'file-info-png-repeat' => 'powtarzany $1 {{PLURAL:$1|raz|razy}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|klatka|klatki|klatek}}',
# Special:NewFiles
'newimages' => 'Najnowsze pliki',
@@ -2963,7 +3021,7 @@ Następne linki w linii są traktowane jako wyjątki – są to nazwy stron, na
Jeśli plik był modyfikowany, dane mogą być częściowo niezgodne z parametrami zmodyfikowanego pliku.',
'metadata-expand' => 'Pokaż szczegóły',
'metadata-collapse' => 'Ukryj szczegóły',
-'metadata-fields' => 'Wymienione poniżej pola EXIF będą prezentowane na stronie grafiki.
+'metadata-fields' => 'Wymienione poniżej pola metadanych będą wyświetlane na stronie grafiki po zwinięciu tabeli metadanych.
Pozostałe pola zostaną domyślnie ukryte.
* make
* model
@@ -2971,7 +3029,13 @@ Pozostałe pola zostaną domyślnie ukryte.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Szerokość',
@@ -2986,13 +3050,11 @@ Pozostałe pola zostaną domyślnie ukryte.
'exif-ycbcrpositioning' => 'Rozmieszczenie Y i C',
'exif-xresolution' => 'Rozdzielczość w poziomie',
'exif-yresolution' => 'Rozdzielczość w pionie',
-'exif-resolutionunit' => 'Jednostka rozdzielczości X i Y',
'exif-stripoffsets' => 'Przesunięcie pasów obrazu',
'exif-rowsperstrip' => 'Liczba wierszy na pas obrazu',
'exif-stripbytecounts' => 'Liczba bajtów na pas obrazu',
'exif-jpeginterchangeformat' => 'Położenie pierwszego bajtu miniaturki obrazu',
'exif-jpeginterchangeformatlength' => 'Liczba bajtów miniaturki JPEG',
-'exif-transferfunction' => 'Funkcja przejścia',
'exif-whitepoint' => 'Punkt bieli',
'exif-primarychromaticities' => 'Kolory trzech barw głównych',
'exif-ycbcrcoefficients' => 'Macierz współczynników transformacji barw z RGB na YCbCr',
@@ -3011,7 +3073,6 @@ Pozostałe pola zostaną domyślnie ukryte.
'exif-compressedbitsperpixel' => 'Skompresowanych bitów na piksel',
'exif-pixelydimension' => 'Prawidłowa szerokość obrazu',
'exif-pixelxdimension' => 'Prawidłowa wysokość obrazu',
-'exif-makernote' => 'Informacje producenta aparatu',
'exif-usercomment' => 'Komentarz użytkownika',
'exif-relatedsoundfile' => 'PowiÄ…zany plik audio',
'exif-datetimeoriginal' => 'Data i czas utworzenia oryginału',
@@ -3026,7 +3087,6 @@ Pozostałe pola zostaną domyślnie ukryte.
'exif-exposureprogram' => 'Program ekspozycji',
'exif-spectralsensitivity' => 'Czułość widmowa',
'exif-isospeedratings' => 'Czułość aparatu zgodnie z&nbsp;normą ISO&nbsp;12232',
-'exif-oecf' => 'Funkcja konwersji obrazu na dane zgodnie z ISO14524',
'exif-shutterspeedvalue' => 'Szybkość migawki',
'exif-aperturevalue' => 'Przysłona obiektywu',
'exif-brightnessvalue' => 'Jasność',
@@ -3040,7 +3100,6 @@ Pozostałe pola zostaną domyślnie ukryte.
'exif-focallength-format' => '$1&nbsp;mm',
'exif-subjectarea' => 'Położenie i obszar głównego motywu obrazu',
'exif-flashenergy' => 'Energia lampy błyskowej',
-'exif-spatialfrequencyresponse' => 'Odpowiedź częstotliwości przestrzennej zgodnie z ISO12233',
'exif-focalplanexresolution' => 'Rozdzielczość w poziomie płaszczyzny odwzorowania obiektywu',
'exif-focalplaneyresolution' => 'Rozdzielczość w pionie płaszczyzny odwzorowania obiektywu',
'exif-focalplaneresolutionunit' => 'Jednostka rozdzielczości płaszczyzny odwzorowania obiektywu',
@@ -3049,7 +3108,6 @@ Pozostałe pola zostaną domyślnie ukryte.
'exif-sensingmethod' => 'Metoda pomiaru (rodzaj przetwornika)',
'exif-filesource' => 'Typ źródła pliku',
'exif-scenetype' => 'Rodzaj sceny',
-'exif-cfapattern' => 'Wzór CFA',
'exif-customrendered' => 'Wstępnie przetworzony (poddany obróbce)',
'exif-exposuremode' => 'Tryb ekspozycji',
'exif-whitebalance' => 'Balans bieli',
@@ -3094,10 +3152,79 @@ Pozostałe pola zostaną domyślnie ukryte.
'exif-gpsareainformation' => 'Nazwa przestrzeni GPS',
'exif-gpsdatestamp' => 'Data GPS',
'exif-gpsdifferential' => 'Korekcja różnicy GPS',
+'exif-jpegfilecomment' => 'Komentarz pliku JPEG',
+'exif-keywords' => 'SÅ‚owa kluczowe',
+'exif-worldregioncreated' => 'Region świata, w którym zdjęcie zostało wykonane',
+'exif-countrycreated' => 'Kraj, w którym zdjęcie zostało wykonane',
+'exif-countrycodecreated' => 'Kod kraju, w którym zdjęcie zostało wykonane',
+'exif-provinceorstatecreated' => 'Województwo, prowincja lub stan, w którym zdjęcie zostało wykonane',
+'exif-citycreated' => 'Miasto, w którym zdjęcie zostało wykonane',
+'exif-sublocationcreated' => 'Lokalizacja w mieście, w której zdjęcie zostało wykonane',
+'exif-worldregiondest' => 'Ukazany region świata',
+'exif-countrydest' => 'Ukazany kraj',
+'exif-countrycodedest' => 'Kod ukazanego kraju',
+'exif-provinceorstatedest' => 'Ukazane województwo, prowincja lub stan',
+'exif-citydest' => 'Ukazane miasto',
+'exif-sublocationdest' => 'Ukazana lokalizacja w mieście',
'exif-objectname' => 'Krótki tytuł',
+'exif-specialinstructions' => 'Specjalne instrukcje',
+'exif-headline' => 'Nagłówek',
+'exif-credit' => 'Dostawca',
+'exif-source' => 'Źródło',
+'exif-editstatus' => 'Stan w procesie edycji obrazu',
+'exif-urgency' => 'Pilność',
+'exif-fixtureidentifier' => 'Tytuł działu',
+'exif-locationdest' => 'Pełna nazwa prezentowanej lokalizacji',
+'exif-locationdestcode' => 'Kod prezentowanej lokalizacji',
+'exif-objectcycle' => 'Pora dnia, w której wolno mediom prezentować zawartość',
+'exif-contact' => 'Kontakt',
+'exif-writer' => 'Autor',
+'exif-languagecode' => 'Język',
+'exif-iimversion' => 'Wersja IIM',
+'exif-iimcategory' => 'Kategoria',
+'exif-iimsupplementalcategory' => 'Dodatkowe kategorie',
+'exif-datetimeexpires' => 'Nie należy używać po',
+'exif-datetimereleased' => 'Wydany',
+'exif-originaltransmissionref' => 'Kod lokalizacji pierwotnej transmisji',
+'exif-identifier' => 'Identyfikator',
+'exif-lens' => 'Użyty obiektyw',
+'exif-serialnumber' => 'Numer seryjny aparatu',
+'exif-cameraownername' => 'Właściciel aparatu',
+'exif-label' => 'Etykieta',
+'exif-datetimemetadata' => 'Data ostatniej modyfikacji metadanych',
+'exif-nickname' => 'Nieformalna nazwa obrazu',
+'exif-rating' => 'Ocena (od 1 do 5)',
+'exif-rightscertificate' => 'Certyfikat zarzÄ…dzania prawami autorskimi',
+'exif-copyrighted' => 'Ochrona prawem autorskim',
+'exif-copyrightowner' => 'Właściciel praw autorskich',
+'exif-usageterms' => 'Warunki wykorzystania',
+'exif-webstatement' => 'Szczegółowe informacje o prawach autorskich dostępne online',
+'exif-originaldocumentid' => 'Unikalny identyfikator oryginalnego dokumentu',
+'exif-licenseurl' => 'Adres URL licencji',
+'exif-morepermissionsurl' => 'Informacja o użyciu na zasadach innych licencji',
+'exif-attributionurl' => 'Wykorzystując tę pracę należy zamieścić link do',
+'exif-preferredattributionname' => 'Wykorzystując tę pracę należy wskazać autora',
+'exif-pngfilecomment' => 'Komentarz pliku w formacie PNG',
+'exif-disclaimer' => 'Zrzeczenie się odpowiedzialności',
+'exif-contentwarning' => 'Ostrzeżenie dotyczące zawartości',
+'exif-giffilecomment' => 'Komentarz pliku w formacie GIF',
+'exif-intellectualgenre' => 'Typ elementu',
+'exif-subjectnewscode' => 'Kod IPTC tematu',
+'exif-scenecode' => 'Kod IPTC sceny',
+'exif-event' => 'Przedstawione wydarzenie',
+'exif-organisationinimage' => 'Przedstawiona organizacja',
+'exif-personinimage' => 'Przedstawiona osoba',
+'exif-originalimageheight' => 'Wysokość obrazu zanim został przycięty',
+'exif-originalimagewidth' => 'Szerokość obrazu zanim został przycięty',
# EXIF attributes
'exif-compression-1' => 'nieskompresowany',
+'exif-compression-2' => 'CCITT Grupa 3 Jednowymiarowe zmodyfikowane kodowanie długości algorytmem Huffmana',
+'exif-compression-3' => 'CCITT Grupa 3 kodowanie faksowe',
+'exif-compression-4' => 'CCITT Grupa 4 kodowanie faksowe',
+
+'exif-copyrighted-true' => 'Chronione prawem autorskim',
+'exif-copyrighted-false' => 'Domena publiczna',
'exif-unknowndate' => 'nieznana data',
@@ -3116,6 +3243,8 @@ Pozostałe pola zostaną domyślnie ukryte.
'exif-xyresolution-i' => '$1&nbsp;punktów na cal',
'exif-xyresolution-c' => '$1&nbsp;punktów na centymetr',
+'exif-colorspace-65535' => 'Nie skalibrowano',
+
'exif-componentsconfiguration-0' => 'nie istnieje',
'exif-exposureprogram-0' => 'niezdefiniowany',
@@ -3229,6 +3358,10 @@ Pozostałe pola zostaną domyślnie ukryte.
'exif-gpslongitude-e' => 'wschodnia',
'exif-gpslongitude-w' => 'zachodnia',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metr|metry|metrów}} nad poziomem morza',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metr|metry|metrów}} poniżej poziomu morza',
+
'exif-gpsstatus-a' => 'pomiar w trakcie',
'exif-gpsstatus-v' => 'wyniki pomiaru dostępne na bieżąco',
@@ -3240,21 +3373,73 @@ Pozostałe pola zostaną domyślnie ukryte.
'exif-gpsspeed-m' => 'mil na godzinÄ™',
'exif-gpsspeed-n' => 'węzłów',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometrów',
+'exif-gpsdestdistance-m' => 'Mil',
+'exif-gpsdestdistance-n' => 'Mil morskich',
+
+'exif-gpsdop-excellent' => 'Doskonała ($1)',
+'exif-gpsdop-good' => 'Dobra ($1)',
+'exif-gpsdop-moderate' => 'Umiarkowana ($1)',
+'exif-gpsdop-fair' => 'Akceptowalna ($1)',
+'exif-gpsdop-poor' => 'SÅ‚aba ($1)',
+
+'exif-objectcycle-a' => 'Tylko rano',
+'exif-objectcycle-p' => 'Tylko wieczorem',
+'exif-objectcycle-b' => 'Zarówno rano i wieczorem',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'kierunek geograficzny',
'exif-gpsdirection-m' => 'kierunek magnetyczny',
+'exif-ycbcrpositioning-1' => 'Wyśrodkowane',
+'exif-ycbcrpositioning-2' => 'Zbliżone',
+
+'exif-dc-contributor' => 'Autorzy',
+'exif-dc-coverage' => 'Przestrzenny lub czasowy zakres utworu',
+'exif-dc-date' => 'Data(-y)',
+'exif-dc-publisher' => 'Wydawca',
+'exif-dc-relation' => 'Podobne multimedia',
+'exif-dc-rights' => 'Prawa autorskie',
+'exif-dc-source' => 'Oryginalny utwór',
+'exif-dc-type' => 'Typ utworu',
+
+'exif-rating-rejected' => 'Odrzucony',
+
+'exif-isospeedratings-overflow' => 'Więcej niż 65535',
+
+'exif-iimcategory-ace' => 'Sztuka, kultura i rozrywka',
+'exif-iimcategory-clj' => 'Przestępczość i prawo',
+'exif-iimcategory-dis' => 'Katastrofy i wypadki',
+'exif-iimcategory-fin' => 'Gospodarka i biznes',
+'exif-iimcategory-edu' => 'Edukacja',
+'exif-iimcategory-evn' => 'Åšrodowisko',
+'exif-iimcategory-hth' => 'Zdrowie',
+'exif-iimcategory-hum' => 'Zainteresowania',
+'exif-iimcategory-lab' => 'Praca',
+'exif-iimcategory-lif' => 'Styl życia i czas wolny',
+'exif-iimcategory-pol' => 'Polityka',
+'exif-iimcategory-rel' => 'Religia i wiara',
+'exif-iimcategory-sci' => 'Nauka i technologia',
+'exif-iimcategory-soi' => 'Zagadnienia społeczne',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Wojny, konflikty i zamieszki',
+'exif-iimcategory-wea' => 'Pogoda',
+
+'exif-urgency-normal' => 'Normalny ($1)',
+'exif-urgency-low' => 'Niski ($1)',
+'exif-urgency-high' => 'Wysoki ($1)',
+'exif-urgency-other' => 'Priorytet zdefiniowany przez użytkownika ($1)',
+
# External editor support
'edit-externally' => 'Edytuj plik, używając zewnętrznej aplikacji',
-'edit-externally-help' => '(Więcej informacji o używaniu [http://www.mediawiki.org/wiki/Manual:External_editors zewnętrznych edytorów]).',
+'edit-externally-help' => '(Więcej informacji o używaniu [//www.mediawiki.org/wiki/Manual:External_editors zewnętrznych edytorów]).',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'wszystkie',
-'imagelistall' => 'wszystkich',
-'watchlistall2' => 'wszystkie',
-'namespacesall' => 'wszystkie',
-'monthsall' => 'wszystkie',
-'limitall' => 'wszystkie',
+'watchlistall2' => 'wszystkie',
+'namespacesall' => 'wszystkie',
+'monthsall' => 'wszystkie',
+'limitall' => 'wszystkie',
# E-mail address confirmation
'confirmemail' => 'Potwierdzanie adresu eâ€mail',
@@ -3339,17 +3524,24 @@ $1',
'trackbackdeleteok' => 'TrackBack został usunięty.',
# Delete conflict
-'deletedwhileediting' => "'''Uwaga!''' Ta strona zostaÅ‚a usuniÄ™ta po tym, jak rozpoczÄ…Å‚{{GENDER:|eÅ›|aÅ›|eÅ›(â€aÅ›)}} jej edycjÄ™!",
-'confirmrecreate' => "[[User:$1|$1]] ([[User talk:$1|dyskusja]]) usun{{GENDER:$1|Ä…Å‚|ęła|Ä…Å‚(â€Ä™Å‚a)}} tÄ™ stronÄ™ po tym, jak rozpoczÄ…Å‚{{GENDER:|eÅ›|aÅ›|eÅ›(â€aÅ›)}} jego edycjÄ™, podajÄ…c jako powód usuniÄ™cia:
+'deletedwhileediting' => "'''Uwaga!''' Ta strona zostaÅ‚a usuniÄ™ta po tym, jak rozpoczÄ…Å‚{{GENDER:|eÅ›|aÅ›|eÅ›(â€aÅ›)}} jej edycjÄ™!",
+'confirmrecreate' => "[[User:$1|$1]] ([[User talk:$1|dyskusja]]) usun{{GENDER:$1|Ä…Å‚|ęła|Ä…Å‚(â€Ä™Å‚a)}} tÄ™ stronÄ™ po tym, jak rozpoczÄ…Å‚{{GENDER:|eÅ›|aÅ›|eÅ›(â€aÅ›)}} jego edycjÄ™, podajÄ…c jako powód usuniÄ™cia:
: ''$2''
Czy na pewno chcesz ją ponownie utworzyć?",
-'recreate' => 'Utwórz ponownie',
+'confirmrecreate-noreason' => 'Użytkownik [[User:$1|$1]] ([[User talk:$1|dyskusja]]) usunął tę stronę po rozpoczęciu przez Ciebie edycji. Potwierdź, czy naprawdę chcesz, ponownie utworzyć tę stronę.',
+'recreate' => 'Utwórz ponownie',
# action=purge
'confirm_purge_button' => 'Wyczyść',
'confirm-purge-top' => 'Wyczyścić pamięć podręczną dla tej strony?',
'confirm-purge-bottom' => 'Odświeżenie strony wyczyści pamięć podręczną i wymusi pokazanie jej aktualnej wersji.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Dodać tę stronę do listy obserwowanych?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Usunąć tę stronę z listy obserwowanych?',
+
# Separators for various lists, etc.
'autocomment-prefix' => '–&#32;',
'percent' => '$1&nbsp;%',
@@ -3401,14 +3593,14 @@ Czy na pewno chcesz ją ponownie utworzyć?",
'watchlistedit-normal-legend' => 'Usuń strony z listy obserwowanych',
'watchlistedit-normal-explain' => 'Poniżej znajduje się lista obserwowanych przez Ciebie stron.
Aby usunąć stronÄ™ z listy zaznacz znajdujÄ…ce siÄ™ obok niej pole i naciÅ›nij „{{int:Watchlistedit-normal-submit}}â€.
-Możesz także skorzystać z [[Special:Watchlist/raw|tekstowego edytora listy obserwowanych]].',
+Możesz także skorzystać z [[Special:EditWatchlist/raw|tekstowego edytora listy obserwowanych]].',
'watchlistedit-normal-submit' => 'Usuń zaznaczone z listy',
'watchlistedit-normal-done' => 'Z Twojej listy obserwowanych {{PLURAL:$1|została usunięta 1 strona|zostały usunięte $1 strony|zostało usuniętych $1 stron}}:',
'watchlistedit-raw-title' => 'Tekstowy edytor listy obserwowanych',
'watchlistedit-raw-legend' => 'Tekstowy edytor listy obserwowanych',
'watchlistedit-raw-explain' => 'Poniżej wypisane zostały tytuły stron znajdujących się na Twojej liście obserwowanych. Możesz dodać lub usunąć dowolny tytuł z tej listy – jeden wiersz to jeden tytuł.
Aby zatwierdzić zmiany kliknij „{{int:Watchlistedit-raw-submit}}â€.
-Możesz także użyć [[Special:Watchlist/edit|standardowego edytora obserwowanych stron]].',
+Możesz także użyć [[Special:EditWatchlist|standardowego edytora obserwowanych stron]].',
'watchlistedit-raw-titles' => 'Obserwowane strony:',
'watchlistedit-raw-submit' => 'Uaktualnij listÄ™',
'watchlistedit-raw-done' => 'Lista obserwowanych stron została uaktualniona.',
@@ -3464,33 +3656,33 @@ Możesz także użyć [[Special:Watchlist/edit|standardowego edytora obserwowany
'duplicate-defaultsort' => 'Uwaga: DomyÅ›lnym kluczem sortowania bÄ™dzie „$2†i zastÄ…pi on wczeÅ›niej wykorzystywany klucz „$1â€.',
# Special:Version
-'version' => 'Wersja oprogramowania',
-'version-extensions' => 'Zainstalowane rozszerzenia',
-'version-specialpages' => 'Strony specjalne',
-'version-parserhooks' => 'Haki analizatora składni (ang. parser hooks)',
-'version-variables' => 'Zmienne',
-'version-skins' => 'Skórki',
-'version-other' => 'Pozostałe',
-'version-mediahandlers' => 'Wtyczki obsługi mediów',
-'version-hooks' => 'Haki (ang. hooks)',
-'version-extension-functions' => 'Funkcje rozszerzeń',
-'version-parser-extensiontags' => 'Znaczniki rozszerzeń dla analizatora składni',
-'version-parser-function-hooks' => 'Funkcje haków analizatora składni (ang. parser function hooks)',
-'version-skin-extension-functions' => 'Funkcje rozszerzeń skórek',
-'version-hook-name' => 'Nazwa haka (ang. hook name)',
-'version-hook-subscribedby' => 'Zapotrzebowany przez',
-'version-version' => '(Wersja $1)',
-'version-license' => 'Licencja',
-'version-poweredby-credits' => "To wiki korzysta z oprogramowania '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001â€$1 $2.",
-'version-poweredby-others' => 'inni',
-'version-license-info' => 'MediaWiki jest wolnym oprogramowaniem – możesz je dystrybuować i modyfikować zgodnie z warunkami licencji GNU General Public License opublikowanej przez Free Software Foundation w wersji 2 tej licencji lub (jeśli wolisz) dowolnej późniejszej.
+'version' => 'Wersja oprogramowania',
+'version-extensions' => 'Zainstalowane rozszerzenia',
+'version-specialpages' => 'Strony specjalne',
+'version-parserhooks' => 'Haki analizatora składni (ang. parser hooks)',
+'version-variables' => 'Zmienne',
+'version-antispam' => 'Ochrona przed spamem',
+'version-skins' => 'Skórki',
+'version-other' => 'Pozostałe',
+'version-mediahandlers' => 'Wtyczki obsługi mediów',
+'version-hooks' => 'Haki (ang. hooks)',
+'version-extension-functions' => 'Funkcje rozszerzeń',
+'version-parser-extensiontags' => 'Znaczniki rozszerzeń dla analizatora składni',
+'version-parser-function-hooks' => 'Funkcje haków analizatora składni (ang. parser function hooks)',
+'version-hook-name' => 'Nazwa haka (ang. hook name)',
+'version-hook-subscribedby' => 'Zapotrzebowany przez',
+'version-version' => '(Wersja $1)',
+'version-license' => 'Licencja',
+'version-poweredby-credits' => "To wiki korzysta z oprogramowania '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001â€$1 $2.",
+'version-poweredby-others' => 'inni',
+'version-license-info' => 'MediaWiki jest wolnym oprogramowaniem – możesz je dystrybuować i modyfikować zgodnie z warunkami licencji GNU General Public License opublikowanej przez Free Software Foundation w wersji 2 tej licencji lub (jeśli wolisz) dowolnej późniejszej.
MediaWiki jest dystrybuowane w nadziei, że okaże się użyteczne ale BEZ JAKIEJKOLWIEK GWARANCJI – nawet bez domyślnej gwarancji PRZYDATNOŚCI HANDLOWEJ lub PRZYDATNOŚCI DO OKREŚLONYCH ZASTOSOWAŃ. Więcej szczegółów znajdziesz w treści licencji GNU General Public License.
-Powinieneś otrzymać [{{SERVER}}{{SCRIPTPATH}}/COPYING kopię licencji GNU General Public License] wraz z niniejszym oprogramowaniem. Jeśli tak się nie stało, napisz do Free Software Foundation, Inc, 51 Franklin Street, Fifth Floor , Boston, MA 02110-1301, USA lub [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html przeczytaj licencję w Internecie].',
-'version-software' => 'Zainstalowane oprogramowanie',
-'version-software-product' => 'Nazwa',
-'version-software-version' => 'Wersja',
+Powinieneś otrzymać [{{SERVER}}{{SCRIPTPATH}}/COPYING kopię licencji GNU General Public License] wraz z niniejszym oprogramowaniem. Jeśli tak się nie stało, napisz do Free Software Foundation, Inc, 51 Franklin Street, Fifth Floor , Boston, MA 02110-1301, USA lub [//www.gnu.org/licenses/old-licenses/gpl-2.0.html przeczytaj licencję w Internecie].',
+'version-software' => 'Zainstalowane oprogramowanie',
+'version-software-product' => 'Nazwa',
+'version-software-version' => 'Wersja',
# Special:FilePath
'filepath' => 'Ścieżka do pliku',
@@ -3500,22 +3692,21 @@ Powinieneś otrzymać [{{SERVER}}{{SCRIPTPATH}}/COPYING kopię licencji GNU Gene
Grafiki są pokazywane w pełnej rozdzielczości. Inne typy plików są otwierane w skojarzonym z nimi programie.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Szukaj duplikatów pliku',
-'fileduplicatesearch-summary' => 'Szukaj duplikatów pliku na podstawie wartości funkcji skrótu.
-
-Wpisz nazwÄ™ pliku z pominiÄ™ciem prefiksu „{{ns:file}}:â€.',
-'fileduplicatesearch-legend' => 'Szukaj duplikatów pliku',
-'fileduplicatesearch-filename' => 'Nazwa pliku',
-'fileduplicatesearch-submit' => 'Szukaj',
-'fileduplicatesearch-info' => '$1 × $2 pikseli<br />Wielkość pliku: $3<br />Typ MIME: $4',
-'fileduplicatesearch-result-1' => 'Brak duplikatu pliku „$1â€.',
-'fileduplicatesearch-result-n' => 'W {{GRAMMAR:MS.lp|{{SITENAME}}}} {{PLURAL:$2|jest dodatkowa kopia|sÄ… $2 dodatkowe kopie|jest $2 dodatkowych kopii}} pliku „$1â€.',
+'fileduplicatesearch' => 'Szukaj duplikatów pliku',
+'fileduplicatesearch-summary' => 'Szukaj duplikatów pliku na podstawie wartości funkcji skrótu.',
+'fileduplicatesearch-legend' => 'Szukaj duplikatów pliku',
+'fileduplicatesearch-filename' => 'Nazwa pliku',
+'fileduplicatesearch-submit' => 'Szukaj',
+'fileduplicatesearch-info' => '$1 × $2 pikseli<br />Wielkość pliku: $3<br />Typ MIME: $4',
+'fileduplicatesearch-result-1' => 'Brak duplikatu pliku „$1â€.',
+'fileduplicatesearch-result-n' => 'W {{GRAMMAR:MS.lp|{{SITENAME}}}} {{PLURAL:$2|jest dodatkowa kopia|sÄ… $2 dodatkowe kopie|jest $2 dodatkowych kopii}} pliku „$1â€.',
+'fileduplicatesearch-noresults' => 'Brak pliku o nazwie „$1â€.',
# Special:SpecialPages
'specialpages' => 'Strony specjalne',
-'specialpages-note' => '----
-* Strony specjalne ogólnie dostępne.
-* <strong class="mw-specialpagerestricted">Strony specjalne o ograniczonym dostępie.</strong>',
+'specialpages-note' => '* Typowe strony specjalne.
+* <span class="mw-specialpagerestricted">Strony specjalne o ograniczonym dostępie.</span>
+* <span class="mw-specialpagecached">Buforowane strony specjalne (mogą być nieaktualne).</span>',
'specialpages-group-maintenance' => 'Raporty konserwacyjne',
'specialpages-group-other' => 'Inne strony specjalne',
'specialpages-group-login' => 'Logowanie i rejestracja',
diff --git a/languages/messages/MessagesPms.php b/languages/messages/MessagesPms.php
index 9bade737..27f41548 100644
--- a/languages/messages/MessagesPms.php
+++ b/languages/messages/MessagesPms.php
@@ -10,6 +10,7 @@
* @author Borichèt
* @author Bèrto 'd Sèra
* @author Dragonòt
+ * @author MaxSem
* @author SabineCretella
* @author Teak
* @author The Evil IP address
@@ -71,8 +72,8 @@ dj'artìcoj ancó pa scrit",
'tog-shownumberswatching' => "Smon ël nùmer d'utent che as ten-o la pàgina sot euj",
'tog-oldsig' => 'Firma esistenta:',
'tog-fancysig' => "Trata la firma com test wiki (sensa n'anliura automàtica)",
-'tog-externaleditor' => "Dovré coma stàndard n'editor estern (mach për espert, a-i é dabzògn d'ampostassion speciaj dzora a sò ordinator. [http://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 [http://www.mediawiki.org/wiki/Manual:External_editors Për savèjne ëd pi.])",
+'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-forceeditsummary' => "Ciama conferma se ël somari dla modìfica a l'é veujd",
@@ -169,14 +170,7 @@ dj'artìcoj ancó pa scrit",
'listingcontinuesabbrev' => ' anans',
'index-category' => 'Pàgine indicisà',
'noindex-category' => 'Pàgine pa indicisà',
-
-'mainpagetext' => "'''MediaWiki a l'é staita anstalà a la përfession.'''",
-'mainpagedocfooter' => "Che a varda la [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] për avèj dj'anformassion ant sël coma dovré ël programa dla wiki.
-
-== Për anandiesse a travajé ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista dij paràmeter ëd configurassion]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki Chestion frequente]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista ëd discussion an sla distribussion ëd MediaWiki]",
+'broken-file-category' => 'Pàgine con colegament pa giust a archivi',
'about' => 'A propòsit ëd',
'article' => 'Pàgina ëd contnù',
@@ -228,10 +222,10 @@ dj'artìcoj ancó pa scrit",
'history' => 'Version pì veje',
'history_short' => 'Stòria',
'updatedmarker' => "Agiornà da 'nt l'ùltima vira che i son passà",
-'info_short' => 'Anformassion',
'printableversion' => 'Version bon-a për stampé',
'permalink' => 'Anliura fissa',
'print' => 'Stampa',
+'view' => 'Vardé',
'edit' => 'Modìfica',
'create' => 'Creé',
'editthispage' => "Modìfica st'artìcol-sì",
@@ -239,6 +233,7 @@ dj'artìcoj ancó pa scrit",
'delete' => 'Scancela',
'deletethispage' => 'Scancela pàgina',
'undelete_short' => 'Disdëscancela {{PLURAL:$1|na modìfica|$1 modìfiche}}',
+'viewdeleted_short' => 'Vardé {{PLURAL:$1|na modìfica scancelà|$1 modìfiche scancelà}}',
'protect' => 'Protegg',
'protect_change' => 'cambia',
'protectthispage' => 'Protegg sta pàgina-sì',
@@ -322,6 +317,8 @@ $1",
'toc' => 'Contnù',
'showtoc' => 'smon',
'hidetoc' => 'stërma',
+'collapsible-collapse' => 'Sëré',
+'collapsible-expand' => 'Deurbe',
'thisisdeleted' => 'Veul-lo vardé ò ripristiné $1?',
'viewdeleted' => 'Veul-lo vardé $1?',
'restorelink' => '{{PLURAL:$1|na modìfica scancelà|$1 modìfiche scancelà}}',
@@ -333,6 +330,8 @@ $1",
'page-rss-feed' => 'Emission RSS "$1"',
'page-atom-feed' => 'Emission Atom "$1"',
'red-link-title' => "$1 (pàgina ch'a-i é ancor pa)",
+'sort-descending' => 'Ordinament an caland',
+'sort-ascending' => 'Órdina an chërsend',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Artìcol',
@@ -415,11 +414,12 @@ Arcesta: $2',
'protectedpagetext' => "Sta pàgina-sì a l'è stàita blocà për evité che a-j faso dle modìfiche.",
'viewsourcetext' => 'A peul vardé e copié la sorgiss dë sta pàgina:',
'protectedinterface' => "Costa pàgina-sì a l'ha andrinta un chèich-còs che a fa part d'antërfacia dël programa che a deuvro tùit; donca a l'é proteta për evité che a-i rivo dle ròbe brute.",
-'editinginterface' => "'''Dossman!''' A l'é dapress ch'a-i travaja ansima a na pàgina ch'as deuvra për generé ël test dl'antërfacia dël programa. Le modìfiche fàite ambelessì a-j bogio l'antërfacia a tuti j'utent. Se sò but a l'é col ëd fé na tradussion, për piasì ch'a considerà la possibilità dë dovré [http://translatewiki.net/wiki/Main_Page?setlang=pms translatewiki.net], ël proget ëd localisassion ëd MediaWiki.",
+'editinginterface' => "'''Dossman!''' A l'é dapress ch'a-i travaja ansima a na pàgina ch'as deuvra për generé ël test dl'antërfacia dël programa. Le modìfiche fàite ambelessì a-j bogio l'antërfacia a tuti j'utent. Se sò but a l'é col ëd fé na tradussion, për piasì ch'a considerà la possibilità dë dovré [//translatewiki.net/wiki/Main_Page?setlang=pms translatewiki.net], ël proget ëd localisassion ëd MediaWiki.",
'sqlhidden' => "(l'anterogassion SQL a l'é stërmà)",
'cascadeprotected' => 'Ant sta pàgina-sì as peulo pa fé ëd modìfiche, përché a-i intra ant {{PLURAL:$1|la pàgina|le pàgine}} butà sot a protession con la fonsion "a tombé" viscà ansima a: $2',
'namespaceprotected' => "A l'ha nen ël përmess dë feje dle modìfiche a le pàgine dlë spassi nominal '''$1'''.",
-'customcssjsprotected' => "Ch'a varda ch'a l'ha pa ël përmess ëd modifiché sta pàgina-sì, për via ch'a l'ha andrinta ij gust ëd n'àotr utent.",
+'customcssprotected' => "Ch'a varda ch'a l'ha pa ël përmess ëd modifiché sta pàgina ëd CSS, për via ch'a l'ha andrinta ij gust ëd n'àutr utent.",
+'customjsprotected' => "Ch'a varda ch'a l'ha pa ël përmess ëd modifiché sta pàgina ëd JavaScript, për via ch'a l'ha andrinta ij gust ëd n'àutr utent.",
'ns-specialprotected' => 'As peulo nen modifichesse le pàgine dlë spassi nominal {{ns:special}}.',
'titleprotected' => "La creassion ëd pàgine con ës tìtol-sì a l'é stàita proibìa da [[User:$1|$1]].
Coma rason a l'ha butà: ''$2''.",
@@ -457,6 +457,7 @@ Che as dësmentia pa ëd cambié ij [[Special:Preferences|"sò gust" an {{SITENA
'createaccount' => 'Crea un cont neuv',
'gotaccount' => "Ha-lo già un sò cont? '''$1'''.",
'gotaccountlink' => 'Rintré ant ël sistema',
+'userlogin-resetlink' => "A l'ha dësmentià ij sò detaj për intré ant ël sistema?",
'createaccountmail' => 'për pòsta eletrònica',
'createaccountreason' => 'Rason:',
'badretype' => "Le doe ciav che a l'ha scrivù a resto diferente antra lor, e a venta che a sio mideme.",
@@ -468,13 +469,15 @@ Për piasì sern në stranòm diferent.",
{{SITENAME}} a deuvra ij cookies për fé rintré la gent ant sò sistema. Belavans chiel a l'ha pa ij cookies abilità.
Për piasì, che as j'abìlita e peuj che a preuva torna a rintré con sò stranòm e soa ciav.",
'nocookieslogin' => "{{SITENAME}} a deuvra ij cookies për fé rintré la gent ant sò sistema. Belavans chiel a l'ha pa ij cookies abilità. Për piasì, che a j'abìlita e peuj che a preuva torna.",
+'nocookiesfornew' => "Ël cont utent a l'é pa stàit creà, antlora i podoma pa confirmé soa sorgiss.
+Ch'a contròla d'avèj ij bëscotin abilità, ch'a caria torna la pàgina e ch'a preuva torna.",
'noname' => "Lë stranòm che a l'ha batù as peul pa dovresse, as peul nen creésse un cont Utent con ës nòm-sì.",
'loginsuccesstitle' => "Compliment! A l'é pen-a rintrà ant ël sistema. A-i é pa staje gnun eror.",
'loginsuccess' => 'A l\'ha avù ël përmess ëd conession al servent ëd {{SITENAME}} con lë stranòm utent ëd "$1".',
'nosuchuser' => 'A-i é pa gnun utent con ël nòm "$1".
Ij nòm ëd j\'utent a son sensìbij a le majùscole.
Controla ël nòm che it l\'has batù, o [[Special:UserLogin/signup|fà un neuv cont]].',
-'nosuchusershort' => 'A-i é pa gnun utent che as ciama "<nowiki>$1</nowiki>". Për piasì, che a contròla se a l\'ha scrit tut giust.',
+'nosuchusershort' => 'A-i é pa gnun utent che as ciama "$1". Për piasì, che a contròla se a l\'ha scrit tut giust.',
'nouserspecified' => 'A venta che a specìfica në stranòm utent',
'login-userblocked' => "St'utent-sì a l'é blocà. A peul pa intré ant ël sistema.",
'wrongpassword' => "La ciav batùa a l'é pa giusta.<br /><br />Che a preuva torna, për piasì.",
@@ -519,13 +522,14 @@ Se sòn a l\'é rivà për eror, a peul lassé sté e fe gnente sensa problema.'
'usernamehasherror' => "Un nòm utent a peul pa conten-e caràter ciapulà (''hash'')",
'login-throttled' => "It l'has fàit tròpi tentativ recent d'intré.
Për piasì speta prima ëd prové torna.",
+'login-abort-generic' => "Sò tentitiv d'intré ant ël sistema a l'é falì - Abortì",
'loginlanguagelabel' => 'Lenga: $1',
'suspicious-userlogout' => "Soa arcesta ëd seurte dal sistema a l'é stàita arfudà përchè a smija com s'a fussa stàita mandà da 'n navigador scolegà o da l'archiviassion an local d'un proxy.",
# E-mail sending
'php-mail-error-unknown' => 'Eror pa conossù ant la funsion PHP mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Cambia la ciav',
'resetpass_announce' => "A l'é rintrà ant ël sistema con na ciav provisòria mandà via për pòsta eletrònica. Për podèj finì la procedura a l'ha da butesse na ciav neuva ambelessì:",
'resetpass_text' => '<!-- Gionté dël test ambelessì -->',
@@ -543,6 +547,33 @@ Për piasì speta prima ëd prové torna.",
Miraco it l'has già cambià la ciav o it l'has ciamà na neuva ciav a temp.",
'resetpass-temp-password' => 'Ciav a temp:',
+# Special:PasswordReset
+'passwordreset' => 'Cambi ëd ciav',
+'passwordreset-text' => "Ch'a completa 's formolari për arsèive un mëssagi ëd pòsta eletrònica con ij detaj ëd sò cont.",
+'passwordreset-legend' => 'Cambié la ciav',
+'passwordreset-disabled' => 'Ij cangiament ëd ciav a son stàit disabilità su sta wiki.',
+'passwordreset-pretext' => "{{PLURAL:$1||Ch'a anserissa un dij tòch ëd dat sì-sota}}",
+'passwordreset-username' => 'Stranòm:',
+'passwordreset-domain' => 'Domini:',
+'passwordreset-email' => 'Adrëssa ëd pòsta eletrònica:',
+'passwordreset-emailtitle' => 'Detaj dël cont ansima {{SITENAME}}',
+'passwordreset-emailtext-ip' => "Quaidun (a l'é bel fé ch'a sia chiel, da l'adrëssa IP $1) a l'ha ciamà d'arcordé ij detaj ëd sò cont për {{SITENAME}} ($4). {{PLURAL:$3|Ël cont utent sì-sota a l'é|Ij cont utent sì-sota a son}}
+associà a st'adrëssa ëd pòsta eletrònica:
+
+$2
+
+{{PLURAL:$3|Costa ciav|Coste ciav}} a temp a scadran da sì {{PLURAL:$5|un di|$5 di}}.
+A dovrìa intré ant ël sistema e serne na ciav neuva adess. Se quaidun d'àutr a l'ha fàit costa arcesta, o s'a l'é arcordasse soa ciav original, e a veul pa pi cangela, a peule ignoré ës mëssagi e continué a dovré soa veja ciav.",
+'passwordreset-emailtext-user' => "L'utent $1 ansima a {{SITENAME}} a l'ha ciamà d'arcordé ij detaj ëd sò cont për {{SITENAME}} ($4). {{PLURAL:$3|Ël cont utent sì-sota a l'é|Ij cont utent sì-sota a son}} associà a st'adrëssa ëd pòsta eletrònica:
+
+$2
+
+{{PLURAL:$3|Costa ciav|Coste ciav}} a temp a scadran da sì {{PLURAL:$5|un di|$5 di}}.
+A dovrìa intré ant ël sistema e serne na ciav neuva adess. Se quaidun d'àutr a l'ha fàit costa arcesta, o s'a l'é arcordasse soa ciav original, e a veul pa pi cangela, a peul ignoré sto mëssagi e continué a dovré soa veja ciav.",
+'passwordreset-emailelement' => 'Stranòm: $1
+Ciav a temp: $2',
+'passwordreset-emailsent' => "Un mëssagi ëd pòsta eletrònica për giuté a arcordé a l'é stàit spedì.",
+
# Edit page toolbar
'bold_sample' => 'Test an grassèt',
'bold_tip' => 'Test an grassèt',
@@ -554,8 +585,6 @@ Miraco it l'has già cambià la ciav o it l'has ciamà na neuva ciav a temp.",
'extlink_tip' => 'Anliura esterna (che as visa dë buté ël prefiss http://)',
'headline_sample' => "Antestassion dl'artìcol",
'headline_tip' => 'Antestassion dë scond livel',
-'math_sample' => 'Che a buta la fòrmula ambelessì',
-'math_tip' => 'Fòrmula matemàtica (LaTeX)',
'nowiki_sample' => 'Che a buta ël test nen formatà ambelessì',
'nowiki_tip' => 'Lassé un tòch ëd test fòra dla formatassion dla wiki',
'image_sample' => 'Esempi.jpg',
@@ -639,7 +668,7 @@ o purament [{{fullurl:{{FULLPAGENAME}}|action=edit}} modìfiché la pàgina ades
'noarticletext-nopermission' => 'Al moment a-i é pa gnun test an sta pàgina-sì.
It peule [[Special:Search/{{PAGENAME}}|sërché sto tìtol ëd pàgina-sì]] an d\'àutre pàgine,
o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sërché j\'argistrassion colegà]</span>.',
-'userpage-userdoesnotexist' => 'Lë stranòm "$1" a l\'é pa registrà. Për piasì ch\'a varda se da bon a veul creé/modifiché sta pàgina.',
+'userpage-userdoesnotexist' => 'Lë stranòm "<nowiki>$1</nowiki>" a l\'é pa registrà. Për piasì ch\'a varda se da bon a veul creé/modifiché sta pàgina.',
'userpage-userdoesnotexist-view' => 'Ël cont utent "$1" a l\'é pa registrà.',
'blocked-notice-logextract' => "S'utent a l'é al moment blocà.
'Me arferiment, sì-sota a-i é la dariera anotassion da l'argistr dij blocagi.",
@@ -673,6 +702,7 @@ Për piasì che a preuva n'àutra vira. Se a dovèissa mai torna riveje sossì,
'token_suffix_mismatch' => "'''Soa modìfica a l'é nen stàita acetà përché sò navigator a l'hai fàit ciadel con ij pont e le vìrgole
ant ël quàder ëd modìfica. La rason che a l'é nen stàit acetà a l'é për evité ch'a-i fasa darmagi al
test ch'a-i é già. Sossì dle vire a riva quand un a deuvra un programa proxy ëd coj un pòch dla Bajòna.'''",
+'edit_form_incomplete' => "'''Quàich part dël formolari ëd modìfica a l'é pa rivà al sërvent; contròla doe vire che toe modìfiche a-i sio anco' e preuva torna.'''",
'editing' => 'Modìfica ëd $1',
'editingsection' => 'I soma dapress a modifiché $1 (session)',
'editingcomment' => 'I soma dapress a modifiché $1 (neuva session)',
@@ -906,8 +936,8 @@ It peule pa vëddlo.',
# Suppression log
'suppressionlog' => 'Registr ëd le scancelassion',
-'suppressionlogtext' => "Sota a-i é na lista djë scancelament e dij blocagi che a rësguardo contnù stërmà a j'aministrator.
-Beiché la [[Special:IPBlockList|lista dj'IP blocà]] për la lista dij blocagi ativ.",
+'suppressionlogtext' => "Sì-sota a-i é na lista djë scancelament e dij blocagi che a rësguardo dij contnù stërmà a j'aministrator.
+Beiché la [[Special:BlockList|lista dj'IP blocà]] për la lista dj'esclusion operassionaj e dij blocagi ativ.",
# History merging
'mergehistory' => 'Buté ansema je stòrie',
@@ -1015,12 +1045,13 @@ Ch'a preuva a gionté dnans a soa arserca ël prefiss ''all:'' për sërché an
'searchdisabled' => "L'arserca anterna ëd {{SITENAME}} a l'é nen abilità; për adess a peul prové a dovré un motor d'arserca estern coma Google. (Però che a ten-a da ment che ij contnù ëd {{SITENAME}} listà ant ij motor pùblich a podrìo ëdcò esse nen d'autut agiornà)",
# Quickbar
-'qbsettings' => 'Regolassion dla bara dij menù',
-'qbsettings-none' => 'Gnun',
-'qbsettings-fixedleft' => 'Fissà a la man ësnista',
-'qbsettings-fixedright' => 'Fissà a la man drita',
-'qbsettings-floatingleft' => 'Flotant a la man ësnista',
-'qbsettings-floatingright' => 'Flotant a la man drita',
+'qbsettings' => 'Regolassion dla bara dij menù',
+'qbsettings-none' => 'Gnun',
+'qbsettings-fixedleft' => 'Fissà a la man ësnista',
+'qbsettings-fixedright' => 'Fissà a la man drita',
+'qbsettings-floatingleft' => 'Flotant a la man ësnista',
+'qbsettings-floatingright' => 'Flotant a la man drita',
+'qbsettings-directionality' => 'A pòst, an dipendensa dla diressionalità dë scritura ëd soa lenga',
# Preferences page
'preferences' => 'Mè gust',
@@ -1031,9 +1062,10 @@ Ch'a preuva a gionté dnans a soa arserca ël prefiss ''all:'' për sërché an
'changepassword' => 'Cangé la ciav',
'prefs-skin' => 'Facia',
'skin-preview' => 'Preuva',
-'prefs-math' => 'Fòrmule ëd matemàtica',
'datedefault' => "Franch l'istess",
+'prefs-beta' => 'Caraterìstiche dla Beta',
'prefs-datetime' => 'Data e ora',
+'prefs-labs' => 'Caraterìstiche dël laboratòri',
'prefs-personal' => "Profil dl'utent",
'prefs-rc' => 'Ùltime modìfiche',
'prefs-watchlist' => 'Ròba che as ten sot euj',
@@ -1055,8 +1087,6 @@ Ch'a preuva a gionté dnans a soa arserca ël prefiss ''all:'' për sërché an
'columns' => 'Colòne:',
'searchresultshead' => "Specifiché soe preferense d'arserca",
'resultsperpage' => 'Arzultà da mostré për vira pàgina:',
-'contextlines' => 'Righe ëd test për minca arzultà:',
-'contextchars' => 'Caràter për riga:',
'stub-threshold' => 'Valor mìnim për j\'<a href="#" class="stub">anliure a jë sbòss</a>:',
'stub-threshold-disabled' => 'Disabilità',
'recentchangesdays' => "Vàire dì smon-e ant j'ùltime modìfiche:",
@@ -1069,7 +1099,7 @@ Ambelessì a-i é un valor generà a asar che a peul dovré: $1",
'savedprefs' => 'Ij sò gust a son ëstàit salvà.',
'timezonelegend' => 'Fus orari:',
'localtime' => 'Ora local:',
-'timezoneuseserverdefault' => 'Dovré lë stàndard dël servent',
+'timezoneuseserverdefault' => 'Dovré lë stàndard ëd la wiki ($1)',
'timezoneuseoffset' => 'Àutr (spessifiché la diferensa)',
'timezoneoffset' => 'Diferensa oraria¹:',
'servertime' => 'Ora dël servent:',
@@ -1120,8 +1150,8 @@ A deuv nen esse pì longh che $1 {{PLURAL:$1|caràter|caràter}}.",
Costa anformassion a sarà pùblica.",
'email' => 'Pòsta eletrònica',
'prefs-help-realname' => '* Nòm vèir (opsional): se i sërne da butelo ambelessì a sarà dovrà për deve mérit ëd vòstr travaj.',
-'prefs-help-email' => "L'adrëssa ëd pòsta eletrònica a l'é opsional: ma a lassa che na neuva ciav a sia spedìa se a dësmentia soa ciav.
-A peul ëdcò serne ëd lassé che j'àutri a lo contato an soa pàgina d'utent o ëd ciaciarade sensa dabzògn ëd rivelé soa identità.",
+'prefs-help-email' => "L'adrëssa ëd pòsta eletrònica a l'é opsional, ma a-i n'a j'é dabzògn për torna amposté la ciav, s'a dovèissa dësmentié soa ciav.",
+'prefs-help-email-others' => "A peul ëdcò serne ëd lassé che j'àutri a lo contato a travers soa pàgina utent o ëd ciaciarada sensa ch'a-i sia da manca d'arvelé soa identità.",
'prefs-help-email-required' => "A-i va l'adrëssa ëd pòsta eletrònica.",
'prefs-info' => 'Anformassion ëd base',
'prefs-i18n' => 'Antërnassionalisassion',
@@ -1247,15 +1277,15 @@ A peul ëdcò serne ëd lassé che j'àutri a lo contato an soa pàgina d'utent
'right-userrights' => "Modifiché tùit ij drit ëd n'utent",
'right-userrights-interwiki' => "Modifiché ij drit utent dj'utent ansima a d'àutre wiki",
'right-siteadmin' => 'Bloché e dësbloché la base ëd dàit',
-'right-reset-passwords' => "Modifiché le ciav d'àutri utent",
'right-override-export-depth' => 'Esporté le pàgine ancludend le pàgine colegà fin-a a na profondeur ëd 5',
'right-sendemail' => "Mandé un mëssagi an pòsta eletrònica a j'àutri 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",
-'rightsnone' => '(gnun)',
+'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",
+'rightsnone' => '(gnun)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'lese sta pàgina-sì',
@@ -1377,13 +1407,13 @@ Beiché la [[Special:NewFiles|galarìa dj'archivi neuv]] për na presentassion p
'minlength1' => "Ij nòm ëd j'archivi a devo esse longh almanch un caràter.",
'illegalfilename' => 'Ël nòm d\'archivi "$1" a l\'ha andrinta dij caràter che as peulo pa dovresse ant ij tìtoj dle pàgine. Për piasì che a-j cangia \'d nòm e peui che a torna a carielo.',
'badfilename' => 'Ël nòm dl\'archivi a l\'é stait cambià an "$1".',
-'filetype-mime-mismatch' => "L'estension dl'archivi a rispeta pa la sòrt ëd MIME.",
+'filetype-mime-mismatch' => 'L\'estension dl\'archivi ".$1" a rispeta pa la sòrt ëd MIME trovà për l\'archivi ($2).',
'filetype-badmime' => 'J\'archivi dla sòrt MIME "$1" as peulo pa carié.',
'filetype-bad-ie-mime' => 'As peul pa carié st\'archivi-sì përchè Internet Explorer a podrìa considerelo com "$1", che a l\'é na rassa d\'archivi vietà e potensialment pericolos.',
'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\"''' a l'é na sòrt d'archivi proibìa.
-{{PLURAL:\$3|Cola consentìa a l'é|Cole consentì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.",
'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.",
@@ -1401,6 +1431,7 @@ Beiché la [[Special:NewFiles|galarìa dj'archivi neuv]] për na presentassion p
'emptyfile' => "L'archivi che a l'ha pen-a carià a smija veujd.
Sòn a podrìa esse rivà përchè che chiel a l'ha scrivù mal ël nòm dl'archivi midem.
Për piasì che a contròla se a l'é pro cost l'archivi che a veul carié.",
+'windows-nonascii-filename' => "Sta wiki-sì a manten pa ij nòm d'archivi con caràter speciaj.",
'fileexists' => "N'archivi con ës nòm-sì a-i é già, për piasì che a contròla '''<tt>[[:$1]]</tt>''' se a l'é pa sigur dë vorèj cangelo.
[[$1|thumb]]",
'filepageexists' => "La pàgina ëd descrission për st'archivi-sì a l'é già stàita creà an '''<tt>[[:$1]]</tt>''', mach ch'a-i é gnun archivi ch'as ciama parèj.
@@ -1437,6 +1468,8 @@ A dovrìa controlé la stòria djë scancelament ëd l'archivi prima ëd carielo
Për piasì, ch'a controla l'ampostassion file_uploads.",
'uploadscripted' => "St'archivi-sì a l'ha andrinta chèich-còs (dël còdes HTML ò pura un senari) che a podrìa esse travajà mal da chèich programa ëd navigassion.",
'uploadvirus' => "St'archivi-sì a l'han andrinta un '''vìrus!''' Detaj: $1",
+'uploadjava' => "L'archivi a l'é n'archivi ZIP ch'a conten n'archivi Java .class.
+As peulo pa cariesse dj'archivi Java, përché a peulo causé l'agirament ëd le restrission ëd sicurëssa.",
'upload-source' => 'Archivi sorgiss',
'sourcefilename' => "Nòm dl'archivi sorgiss:",
'sourceurl' => "Adrëssa dl'aragnà sorgiss:",
@@ -1446,10 +1479,6 @@ Për piasì, ch'a controla l'ampostassion file_uploads.",
'upload-options' => 'Opsion për carié',
'watchthisupload' => "Ten-e d'euj s'archivi.",
'filewasdeleted' => "N'archivi con ës nòm-sì a l'é già stàit carià e peui scancelà. Për piasì, che a verìfica $1 anans che carielo n'àutra vira.",
-'upload-wasdeleted' => "'''Dossman: a l'é antramentr ch'a carìa torna n'archivi ch'a l'era dëscancelasse.'''
-
-Për piasì, ch'a contròla s'a val la pen-a dë felo.
-Për soa comodità, ambelessì a-i son ij dat dla scancelament:",
'filename-bad-prefix' => "Ël nòm dl'archivi ch'a l'é dapress a carié as anandia për '''\"\$1\"''', ch'a l'é un nòm sensa sust, për sòlit butà-lì n'aotomàtich da le màchine fotogràfiche digitaj, basta ch'a-i në sia un. Për piasì, ch'a-j daga a sò archivi un nòm ch'a disa lòn ch'a l'é.",
'filename-prefix-blacklist' => " #<!-- ch'a lassa sta riga-sì tanme ch'a l'é --> <pre>
# La sintassi a l'é:
@@ -1487,12 +1516,29 @@ Se a-i riva sossì n'àotra vira, ch'as buta an comunicassion con n'[[Special:Li
'upload-unknown-size' => 'Dimension pa conossùa',
'upload-http-error' => "A l'é staje n'eror HTTP: $1.",
+# ZipDirectoryReader
+'zip-file-open-error' => "N'eror a l'é capità an duvertand l'archivi për ij contròj ZIP.",
+'zip-wrong-format' => "L'archivi specificà a l'é pa n'archivi ZIP.",
+'zip-bad' => "L'archivi a l'é n'archivi ZIP danegià o comsëssìa pa lesìbil.
+A peul pa esse controlà për da bin për la sicurëssa.",
+'zip-unsupported' => "L'archivi a l'é n'archivi ZIP ch'a deuvra dle caraterìstiche ZIP nen mantnùe da MediaWiki.
+A peul pa esse controlà da bin për la sicurëssa.",
+
+# Special:UploadStash
+'uploadstash' => "Memorisassion d'amportassion",
+'uploadstash-summary' => "Sta pàgina a dà acess a d'archivi ch'a son carià (o an mente ch'as cario) ma a son pa anco' publicà an sla wiki. Costi archivi a son pa visìbij a gnun gavà a l'utent ch'a l'ha cariaje.",
+'uploadstash-clear' => "Scancelé j'archivi an memòria",
+'uploadstash-nofiles' => "A l'han gnun archivi an memòria d'amportassion.",
+'uploadstash-badtoken' => "L'esecussion dë st'assion a l'é pa andàita bin, miraco përchè toe credensiaj ëd modìfica a son scadùe. Preuva torna.",
+'uploadstash-errclear' => "La scancelassion ëd j'archivi a l'é falìa.",
+'uploadstash-refresh' => "Agiorné la lista dj'archivi",
+
# img_auth script messages
'img-auth-accessdenied' => 'Acess negà',
'img-auth-nopathinfo' => "PATH_INFO mancant.
Sò servent a l'é nen ampostà për passé costa anformassion.
Peul desse ch'a sia basà an sij CGI e a peul pa mantnì img_auth.
-Ch'a bèica http://www.mediawiki.org/wiki/Manual:Image_Authorization.",
+[http://www.mediawiki.org/wiki/Manual:Image_Authorization. Ch'a bèica l'autorisassion dla figura.]",
'img-auth-notindir' => "Ël senté ciamà a l'é pa ant ël dossié configurà për carié.",
'img-auth-badtitle' => 'As peul pa fesse un tìtol bon për "$1".',
'img-auth-nologinnWL' => 'A l\'é pa intrà ant ël sistema e "$1" a l\'é pa ant la lista bianca.',
@@ -1567,7 +1613,7 @@ La lista sì-sota a smon mach {{PLURAL:$1|la prima pàgina ch'a l'ha|le prime $1
A l'é disponìbil na [[Special:WhatLinksHere/$2|lista completa]].",
'nolinkstoimage' => "Pa gnun-a pàgina che a l'abia n'anliura a sta figura-sì.",
'morelinkstoimage' => "Vëdde [[Special:WhatLinksHere/$1|d'àutri colegament]] a s'archivi.",
-'redirectstofile' => "Sì-sota a-i {{PLURAL:$1|é n'archivi|son $1 archivi}} ch'a armando a cost-sì:",
+'linkstoimage-redirect' => "$1 (ridiression d'archivi) $2",
'duplicatesoffile' => "{{PLURAL:$1|L'archivi sì-dapress a l'é un|Ij $1 archivi sì-dapress a son dij}} duplicà ëd s'archivi ([[Special:FileDuplicateSearch/$2|pì ëd detaj]]):",
'sharedupload' => "St'archivi-sì a ven da $1 e a peul esse dovrà da d'àutri proget.",
'sharedupload-desc-there' => "Cost archivi a riva da $1 e a peul esse dovrà da d'àutri proget.
@@ -1657,18 +1703,19 @@ Ch'as visa ëd controlé che në stamp a-j serva nen a dj'àutri stamp anans che
'statistics-users-active-desc' => "Utent che a l'han fàit n'assion ant {{PLURAL:$1|l'ùltim di|j'ùltim $1 di}}",
'statistics-mostpopular' => "Pàgine ch'a 'ncontro dë pì",
-'disambiguations' => "Pàgine për la gestion dj'omonimìe",
+'disambiguations' => "Pàgine ch'a men-o vers dle pàgine d'omonimìe",
'disambiguationspage' => "Template:Gestion dj'omonimìe",
'disambiguations-text' => "Ste pàgine-sì a men-o a na '''pàgina ëd gestion dj'omònim''', mach che a dovrìo ëmné bele drit a n'artìcol.<br />
Na pàgina as trata coma \"pàgina ëd gestion dj'omònim\" se a deuvra në stamp dont l'anliura as treuva ant ël [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Ridiression dobie',
-'doubleredirectstext' => "Sta pàgina-sì a a lista dle pàgine ch'a armando a d'àutre pàgine ëd ridiression.
+'doubleredirects' => 'Ridiression dobie',
+'doubleredirectstext' => "Sta pàgina-sì a a lista dle pàgine ch'a armando a d'àutre pàgine ëd ridiression.
Vira riga a l'ha andrinta j'anliure a la prima e a la sconda ridiression, ant sël pat ëd la prima riga ëd test dla seconda ridiression, che për sòlit a l'ha andrinta l'artìcol ëd destinassion vèir, col andoa che a dovrìa ëmné ëdcò la prima ridiression.
Le ridiression <del>sganfà</del> a son stàite arzolvùe.",
-'double-redirect-fixed-move' => "[[$1]] a l'é stàit spostà.
+'double-redirect-fixed-move' => "[[$1]] a l'é stàit spostà.
Adess a l'é na ridiression a [[$2]].",
-'double-redirect-fixer' => 'Coretor ëd ridiression',
+'double-redirect-fixed-maintenance' => 'Rangé le ridiression dobie da [[$1]] a [[$2]].',
+'double-redirect-fixer' => 'Coretor ëd ridiression',
'brokenredirects' => 'Ridiression nen giuste',
'brokenredirectstext' => "Coste ridiression-sì a men-o a d'artìcoj ch'a-i son pa:",
@@ -1745,6 +1792,7 @@ Për piasì, ch'a nòta che d'àutri sit an sl'aragnà a peulo coleghesse a n'ar
'pager-newer-n' => '{{PLURAL:$1|1|$1}} pì neuv',
'pager-older-n' => '{{PLURAL:$1|1|$1}} pì vej',
'suppress' => 'Supervisor',
+'querypage-disabled' => "Sta pàgina special a l'é disabilità për dle rason ëd prestassion.",
# Book sources
'booksources' => 'Andoa trové dij lìber',
@@ -1795,11 +1843,13 @@ Ch'a bèica ëdcò [[Special:WantedCategories|le categorìe domandà]].",
'sp-deletedcontributions-contribs' => 'contribussion',
# Special:LinkSearch
-'linksearch' => 'Anliure an sla Ragnà',
+'linksearch' => 'Arserca ëd colegament estern',
'linksearch-pat' => "Schema d'arsërca:",
'linksearch-ns' => 'Spassi nominal:',
'linksearch-ok' => 'Sërché',
-'linksearch-text' => 'As peulo dovresse dij ciapatut coma "*.wikipedia.org".<br />Protocòj ch\'as peulo dovresse: <tt>$1</tt>',
+'linksearch-text' => 'As peulo dovresse dij ciapatut com "*.wikipedia.org".
+A-i é dabzògn almanch d\'un domini a livel pi àut, për esempi "*.org".<br />
+Protocòj ch\'as peulo dovresse: <tt>$1</tt> (ch\'a gionta gnun ëd costi an soa arserca).',
'linksearch-line' => "$1 a l'ha n'anliura ch'a-j riva dzora da $2",
'linksearch-error' => 'Ij ciapatut as peulo butesse mach an prinsipi dël nòm dël sërvent.',
@@ -1861,6 +1911,10 @@ L'adrëssa ëd pòsta eletrònica ch'a l'ha butà ant ij [[Special:Preferences|I
'noemailtext' => "Cost utent-sì a l'ha pa spessificà n'adrëssa ëd pòsta eletrònica vàlida.",
'nowikiemailtitle' => "Gnun mëssagi ëd pòsta eletrònica a l'é autorisà",
'nowikiemailtext' => "Cost utent a l'ha sërnù ëd nen arsèive dij mëssagi ëd pòsta eletrònica da j'àutri utent.",
+'emailnotarget' => 'Stranòm dël destinatari pa esistent o pa bon.',
+'emailtarget' => "Ch'a anserissa lë stranòm dël destinatari",
+'emailusername' => 'Stranòm:',
+'emailusernamesubmit' => 'Spedì',
'email-legend' => "Mandé un mëssagi ëd pòsta eletrònica a n'àutr utent ëd {{SITENAME}}",
'emailfrom' => 'Da:',
'emailto' => 'A:',
@@ -1886,10 +1940,10 @@ L'adrëssa ëd pòsta eletrònica ch'a l'ha butà ant ij [[Special:Preferences|I
'watchnologin' => "A l'é ancó nen rintrà ant ël sistema",
'watchnologintext' => "A l'ha da manca prima ëd tut ëd [[Special:UserLogin|rintré ant ël sistema]]
për podèj modifiché soa lista dla ròba dë tnì sot-euj.",
-'addedwatch' => "Sòn a l'é stait giontà a le pàgine che it ten-e sot euj",
+'addwatch' => "Gionté a la lista ëd lòn ch'as ten sot-euj",
'addedwatchtext' => 'La pàgina "[[:$1]]" a l\'é staita giontà a soa [[Special:Watchlist|lista dla ròba da tnì sot-euj]].
Le modìfiche che a-i vniran ant costa pàgina-sì e ant soa pàgina ëd discussion a saran listà ambelessì, e la pàgina a së s-ciairërà ën <b>grassèt</b> ant la pàgina ëd j\'[[Special:RecentChanges|ùltime modìfiche]] përchè che a resta belfé a ten-la d\'euj.',
-'removedwatch' => "Gavà via da 'nt la lista dla ròba da tnì sot euj",
+'removewatch' => "Gavé da la lista ëd lòn ch'as ten sot-euj",
'removedwatchtext' => "La pàgina «[[:$1]]» a l'è staita gavà via da [[Special:Watchlist|soa lista dla ròba da tnì sot-euj]].",
'watch' => 'ten-e sot-euj',
'watchthispage' => 'Ten-e sot-euj cost artìcol-sì',
@@ -1910,8 +1964,9 @@ Le modìfiche che a-i vniran ant costa pàgina-sì e ant soa pàgina ëd discuss
'watchlist-options' => "Opsion ëd la lista dla ròba ch'as ten sot-euj",
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Sot-euj...',
-'unwatching' => "Ën gavand da lòn ch'as ten sot-euj...",
+'watching' => 'Sot-euj...',
+'unwatching' => "Ën gavand da lòn ch'as ten sot-euj...",
+'watcherrortext' => "A l'é capitaje n'eror durant la modìfica ëd j'ampostassion ëd lòn ch'as ten sot-euj për «$1».",
'enotif_mailer' => '{{SITENAME}} - Servissi ëd Notìfica Postal',
'enotif_reset' => 'Marché tute le pàgine tanme visità',
@@ -1932,23 +1987,25 @@ $NEWPAGE
Resumé dl\'editor: $PAGESUMMARY $PAGEMINOREDIT
Për contaté l\'editor:
-Pòsta eletrònica: $PAGEEDITOR_EMAIL
+pòsta eletrònica: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-A-i sarà pì gnun-a notìfica ëd modìfiche se chiel a vìsita nen costa pàgina.
-Che as visa che a peul cangeje la configurassion dle notìfiche a le pàgine che as ten sot-euj ansima a soa lista dla ròba da ten-e sot euj.
+A-i sarà pì gnun-a notìfica ëd modìfiche se chiel a vìsita nen costa pàgina. Che as visa che a peul cangeje la configurassion dle notìfiche a le pàgine che as ten sot-euj ansima a soa lista dla ròba ch\'as ten sot-euj.
- Comunicassion dël sistema ëd notìfica da {{SITENAME}}
+Comunicassion dël sistema ëd notìfica da {{SITENAME}}
--
-Për cangé la configurassion ëd lòn che as ten sot euj che a vada ansima a
-{{fullurl:{{#special:Watchlist}}/edit}}
+Për cangé la configurassion ëd soe notìfiche an pòsta eletrònica, che a vada ansima a
+{{canonicalurl:{{#special:Preferences}}}}
+
+Për cangé la configurassion ëd lòn che as ten sot-euj che a vada ansima a
+{{canonicalurl:{{#special:EditWatchlist}}}}
-Për scancelé la pàgina da lòn ch\'a ten sot euj, ch\'a vìsita
+Për scancelé la pàgina da lòn ch\'a ten sot-euj, ch\'a vìsita
$UNWATCHURL
-Për fé dle comunicassion ëd servissi e avèj pì d\'agiut:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+Comunicassion ëd servissi e pì d\'agiut:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Scancelé la pàgina',
@@ -1964,8 +2021,8 @@ Për fé dle comunicassion ëd servissi e avèj pì d\'agiut:
Për piasì, che an conferma che sòn a l'é da bon sò but, che a as rend cont ëd le conseguense ëd lòn che a fa, e che sòn a resta an pien an régola con lòn che a l'é stabilì ant la [[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Travaj fait e finì',
'actionfailed' => 'Assion falìa',
-'deletedtext' => 'La pàgina "<nowiki>$1</nowiki>" a l\'é staita scancelà.
-Che a varda $2 për na lista dle pàgine scancelà ant j\'ùltim temp.',
+'deletedtext' => "La pàgina «$1» a l'é stàita scancelà.
+Che a varda $2 për na lista dle pàgine scancelà ant j'ùltim temp.",
'deletedarticle' => 'Scancelà "$1"',
'suppressedarticle' => 'a l\'ha scancelà "[[$1]]"',
'dellogpage' => 'Registr djë scancelament',
@@ -2021,7 +2078,7 @@ Ch'a varda la [[Special:ProtectedPages|Lista dle pàgine protegiùe]] për la li
'protect_expiry_invalid' => 'Scadensa pa bon-a.',
'protect_expiry_old' => 'Scadensa già passà.',
'protect-unchain-permissions' => "Sbloché d'àutre opsion ëd protession",
-'protect-text' => "Ambelessì a peul vardé e cangé ël livel ëd protession dla pàgina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Ambelessì a peul vardé e cangé ël livel ëd protession dla pàgina '''$1'''.",
'protect-locked-blocked' => "Un a peul pa modifiché ij livel ëd protession antramentr ch'a l'é blocà chiel. Ambelessì a-i son le regolassion corente për la pàgina '''$1''':",
'protect-locked-dblock' => "Ij livej ëd protession as peulo nen cambiesse antramentr che la base dat a l'é blocà.
Ambelessì a-i son le regolassion corente për la pàgina '''$1''':",
@@ -2071,39 +2128,38 @@ Ambelessì a-i son j'ampostassion atuaj për la pàgina '''$1''':",
'undeletepage' => 'Vëdde e pijé andaré le pàgine scancelà',
'undeletepagetitle' => "'''Lòn ch'a-i é ambelessì a son tute revision scancelà ëd [[:$1]]'''.",
'viewdeletedpage' => 'Smon-e le pàgine scancelà',
-'undeletepagetext' => "{{PLURAL:$1|La pàgina ambelessì sota a l'é staita scancelà, ma a resta|$1 Le pàgine ambelessì sota a son staite scancelà, ma a resto}} ancó memorisà ant l'archivi a as peulo pijesse andaré.
+'undeletepagetext' => "{{PLURAL:$1|La pàgina ambelessì-sota a l'é stàita scancelà, ma a resta|$1 Le pàgine ambelessì-sota a son stàite scancelà, ma a resto}} ancó memorisà ant l'archivi a as peulo pijesse andaré.
L'archivi a ven polidà passaje un pòch ëd temp.",
-'undelete-fieldset-title' => 'Arcùpera le revision',
-'undeleteextrahelp' => "Për ripristiné l'antrega stòria dla pàgina, che a lassa tute le casele nen selessionà e che a jë sgnaca ansima a '''''Buta coma a l'era'''''.
-Për ripristiné mach chèich-còs, che a selession-a le casele corispondente a le revision da ripristiné anans che sgnaché.
-Ën sgacand-je ansima a '''''Veujda casele''''' peul polidesse d'amblé tute le casele selessionà e dësvojdé ël coment.",
+'undelete-fieldset-title' => 'Pijé andré le revision',
+'undeleteextrahelp' => "Për ripristiné l'antrega stòria dla pàgina, che a lassa tute le casele nen selessionà e che a jë sgnaca ansima a '''''{{int:undeletebtn}}'''''.
+Për ripristiné mach chèich-còs, che a selession-a le casele corispondente a le revision da ripristiné, e che a sgnaca ansima a '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '{{PLURAL:$1|Na|$1}} revision memorisà',
-'undeletehistory' => "Se a pija andré st'articol-sì, ëdcò tute soe revision a saran pijaite andaré ansema a chiel ant soa cronologìa.
-Se a fussa mai staita creà na pàgina neuva con l'istess nòm dòp che la veja a l'era staita scancelà, le revision a saran buta ant la cronologìa ëd prima.",
+'undeletehistory' => "Se a pija andré st'articol-sì, ëdcò tute soe revision a saran pijàite andaré ansema a chiel ant soa cronologìa.
+Se a fussa mai stàita creà na pàgina neuva con l'istess nòm dòp che la veja a l'era stàita scancelà, le revision a saran butà ant la cronologìa ëd prima.",
'undeleterevdel' => "Ël dëscancelament as farà pa s'a-i intrèissa në scancelament parsial dla version corenta dla pàgina. Quand a-i riva lolì, un a dev gave-ie la crosëtta da 'nt la pì neuva dle version scancelà, ò pura gavela da stërmà.",
-'undeletehistorynoadmin' => "Sta pàgina-sì a l'é staita scancelà.
-Ël motiv che a l'é scancelasse as peul savejsse ën vardand ël somari ambelessì sota, andoa che a së s-ciàira ëdcò chi che a
-l'avìa travaje ansima anans che a la scancelèisso.
+'undeletehistorynoadmin' => "Sta pàgina-sì a l'é stàita scancelà.
+Ël motiv che a l'é scancelasse as peul savejsse ën vardand ël resumé ambelessì-sota, andoa che a së s-ciàira ëdcò chi che a
+l'avìa travajaje ansima anans che a la scancelèisso.
Ël test che a-i era ant le vàire version a peulo s-ciairelo mach j'aministrator.",
'undelete-revision' => 'Revision ëscancelà ëd $1 (dël $4, a $5) da $3:',
-'undeleterevision-missing' => "Revision nen bon-a ò ch'a-i é nen d'autut. A peul esse ch'a l'abia n'anliura cioca, ma a peul ëdcò esse che la revision a la sia staita dëscancelà ò gavà via da 'nt la base dat.",
+'undeleterevision-missing' => "Revision nen bon-a ò ch'a-i é nen d'autut. A peul esse ch'a l'abia n'anliura cioca, ma a peul ëdcò esse che la revision a la sia stàita torna butà ò gavà via da 'nt la base dij dat.",
'undelete-nodiff' => 'Pa gnun-a revision anans ëd costa.',
'undeletebtn' => 'Ripristiné',
-'undeletelink' => 'varda/buta andré',
-'undeleteviewlink' => 'varda',
-'undeletereset' => 'Gava tute le selession',
-'undeleteinvert' => 'Anvert la selession',
+'undeletelink' => 'vëdde/ripristiné',
+'undeleteviewlink' => 'vëdde',
+'undeletereset' => "Buté torna tut tanme 'l sòlit",
+'undeleteinvert' => 'Anvertì la selession',
'undeletecomment' => 'Rason:',
'undeletedarticle' => 'Pijaita andré "$1"',
-'undeletedrevisions' => '{{PLURAL:$1|Na revision pijaita|$1 revision pijaite}} andré',
-'undeletedrevisions-files' => "{{PLURAL:$1|Na|$1}} revision e {{PLURAL:$2|n'|$2&nbsp;}}archivi pijait andré",
-'undeletedfiles' => "{{PLURAL:$1|N'|$1&nbsp;}}archivi pijait andaré",
-'cannotundelete' => "Disdëscancelament falì; a peul esse che i fusse antra doi a felo ant l'istess temp e l'àutr a sia riva prima.",
-'undeletedpage' => "'''$1 a l'é stait pijait andaré'''
+'undeletedrevisions' => '{{PLURAL:$1|Na revision pijàita|$1 revision pijàite}} andré',
+'undeletedrevisions-files' => "{{PLURAL:$1|Na|$1}} revision e {{PLURAL:$2|n'|$2&nbsp;}}archivi pijàit andré",
+'undeletedfiles' => "{{PLURAL:$1|N'|$1&nbsp;}}archivi pijàit andaré",
+'cannotundelete' => "Riprìstin falì; a peul esse che i fusse antra doi a felo ant l'istess temp e l'àutr a sia riva prima.",
+'undeletedpage' => "'''$1 a l'é stàit pijait andaré'''
-Che as varda ël [[Special:Log/delete|Registr djë scancelament]] për ës-ciairé j'ùltim scancelament e disdëscancelament.",
+Che as varda ël [[Special:Log/delete|Registr djë scancelament]] për ës-ciairé j'ùltim scancelament e arcuperassion.",
'undelete-header' => "Ch'a varda [[Special:Log/delete|ël registr djë scancelament]] për ës-ciairé j'ùltim dëscancelament.",
-'undelete-search-box' => 'Arsërca ant le pàgine scancelà',
+'undelete-search-box' => 'Arserché dle pàgine scancelà',
'undelete-search-prefix' => "Smon le pàgine ch'as anandio për:",
'undelete-search-submit' => 'Sërca',
'undelete-no-results' => "A-i é pa gnun-a pàgina parej ant l'archivi djë scancelassion.",
@@ -2119,9 +2175,12 @@ $1",
'undelete-show-file-submit' => 'É!',
# Namespace form on various pages
-'namespace' => 'Spassi nominal:',
-'invert' => 'Anvert la selession',
-'blanknamespace' => '(Prinsipal)',
+'namespace' => 'Spassi nominal:',
+'invert' => 'Anvert la selession',
+'tooltip-invert' => 'Selession-a sta casela për stërmé ij cambi a le pàgine ant lë spassi nominal selessionà (e a lë spassi nominal associà se selessionà)',
+'namespace_association' => 'Spassi nominal assossià',
+'tooltip-namespace_association' => 'Selession-a sta casela për anserì ëdcò la discussion o lë spassi nominal dël soget associà con lë spassi nomina selessionà',
+'blanknamespace' => '(Prinsipal)',
# Contributions
'contributions' => "Contribussion dë st'Utent-sì",
@@ -2170,6 +2229,9 @@ L'ùltima intrada dël registr dij blocagi a l'é butà sì-sota për arferiment
'whatlinkshere-filters' => 'Filtr',
# Block/unblock
+'autoblockid' => 'Blocagi automàtich #$1',
+'block' => "Bloché l'utent",
+'unblock' => "Dësblòca l'utent",
'blockip' => "Blochè n'adrëssa IP",
'blockip-title' => "Bloché l'utent",
'blockip-legend' => "Bloché l'utent",
@@ -2178,7 +2240,6 @@ L'ùltima intrada dël registr dij blocagi a l'é butà sì-sota për arferiment
Ël blocagi a peul nen ën gnun-a manera esse dovrà për dle question d'ideologìa.
Che a scriva codì che st'adrëssa IP-sì a dev second chiel (chila) esse blocà (pr'esempi, che a buta ij tìtoj ëd pàgine che a l'abio già patì dj'at vandàlich da cost'adrëssa IP-sì).",
-'ipaddress' => 'Adrëssa IP',
'ipadressorusername' => 'Adrëssa IP ò stranòm',
'ipbexpiry' => 'Fin-a al',
'ipbreason' => 'Rason:',
@@ -2191,7 +2252,7 @@ Che a scriva codì che st'adrëssa IP-sì a dev second chiel (chila) esse blocà
** Avej un deuit da bërsach con la gent
** Avej dovrà vàire cont fòra dij deuit
** Stranòm ch'as peul nen acetesse",
-'ipbanononly' => "Blòca mach j'utent anònim",
+'ipb-hardblock' => "Proibiss a j'utent intrà ant ël sistema ëd modifiché da cost'adrëssa IP",
'ipbcreateaccount' => 'Lassa pa pi creé dij cont neuv',
'ipbemailban' => "Nen lassé che l'utent a peula mandé ëd messagi ëd pòsta eletrònica",
'ipbenableautoblock' => "Blòca an automàtich la dariera adrëssa IP dovrà da l'utent e tute cole dont peuj cheidun as preuva a fé dle modìfiche",
@@ -2202,12 +2263,15 @@ Che a scriva codì che st'adrëssa IP-sì a dev second chiel (chila) esse blocà
'ipbotherreason' => 'Àotri motiv/spiegon',
'ipbhidename' => "Stërma lë stranòm da 'nt le modìfiche e da 'nt j'elench.",
'ipbwatchuser' => "Ten d'euj le pàgine utent e ëd discussion dë st'utent-sì",
-'ipballowusertalk' => "Përmëtt a st'utent-sì ëd modifiché la soa pàgina ëd discussion an mente a l'é blocà",
+'ipb-disableusertalk' => "Proibiss a st'utent ëd modifiché soa pàgina ëd discussion quand a l'é blocà",
'ipb-change-block' => "Torna bloché l'utent con ste ampostassion-sì",
+'ipb-confirm' => 'Confermé ël blocagi',
'badipaddress' => "L'adrëssa IP che a l'ha dane a l'é nen giusta.",
'blockipsuccesssub' => 'Blocagi fait',
'blockipsuccesstext' => "[[Special:Contributions/$1|$1]] a l'é stàit blocà.<br />
Varda [[Special:IPBlockList|lista dj'IP blocà]] Për rivëdde ij blòch.",
+'ipb-blockingself' => "A l'é an camin ch'as blòca chiel-midem! É-lo sigur ëd vorèj fé lòn?",
+'ipb-confirmhideuser' => "A l'é an camin ch'a blòca n'utent con «stërmé l'utent» abilità. Sòn a gaverà lë stranòm ëd l'utent da tute le liste e le vos ëd registr. É-lo sigur ëd vorèj fé lòn?",
'ipb-edit-dropdown' => 'Motiv dël blòch',
'ipb-unblock-addr' => 'Dësbloché $1',
'ipb-unblock' => "Dësbloché n'utent ò n'adrëssa IP",
@@ -2217,17 +2281,23 @@ Varda [[Special:IPBlockList|lista dj'IP blocà]] Për rivëdde ij blòch.",
'unblockiptext' => "Che a dòvra ël mòdulo ëd domanda ambelessì sota për deje andé al drit dë scritura a n'adrëssa IP che a l'era staita blocà.",
'ipusubmit' => 'Gava sto blòch-sì',
'unblocked' => "[[User:$1|$1]] a l'é stait dësblocà",
+'unblocked-range' => "$1 a l'é stàit dësblocà",
'unblocked-id' => "Ël blòch $1 a l'é stait gavà via.",
+'blocklist' => 'Utent blocà',
'ipblocklist' => 'Utent blocà',
'ipblocklist-legend' => "Trové n'utent blocà",
-'ipblocklist-username' => 'Stranòm ò pura adrëssa IP:',
-'ipblocklist-sh-userblocks' => '$1 blòch dij cont',
-'ipblocklist-sh-tempblocks' => '$1 blòch a temp',
-'ipblocklist-sh-addressblocks' => "$1 blòch ëd j'IP",
+'blocklist-userblocks' => 'Stërmé ij blocagi dij cont',
+'blocklist-tempblocks' => 'Stërmé ij blocagi a temp',
+'blocklist-addressblocks' => "Stërmé ij blocagi d'adrësse IP ùniche",
+'blocklist-timestamp' => 'Stampin data e ora',
+'blocklist-target' => 'Bërsaj',
+'blocklist-expiry' => 'Scadensa',
+'blocklist-by' => "Aministrator ch'a l'ha blocà",
+'blocklist-params' => 'Paràmeter ëd blocage',
+'blocklist-reason' => 'Rason',
'ipblocklist-submit' => 'Arsërca',
'ipblocklist-localblock' => 'Blocagi local',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Àutr blocagi|Àutri blocagi}}',
-'blocklistline' => "$1, $2 a l'ha blocà $3 ($4)",
'infiniteblock' => 'për sempe',
'expiringblock' => 'a finiss ël $1 a $2',
'anononlyblock' => "mach j'utent anònim",
@@ -2249,7 +2319,7 @@ Varda [[Special:IPBlockList|lista dj'IP blocà]] Për rivëdde ij blòch.",
'reblock-logentry' => 'cambià le ampostassion dël blòch për [[$1]] con un temp ëd fin ëd $2 $3',
'blocklogtext' => "Sossì a l'é ël registr dij blocagi e dësblocagi dj'Utent. J'adrësse che
a son staite blocà n'automàtich ambelessì a së s-ciàiro nen.
-Che a varda la [[Special:IPBlockList|lista dj'adrësse IP blocà]] për vëdde
+Che a varda la [[Special:BlockList|lista dj'adrësse IP blocà]] për vëdde
coj che sio ij blocagi ativ al dì d'ancheuj.",
'unblocklogentry' => "a l'ha dësblocà $1",
'block-log-flags-anononly' => 'mach utent anònim',
@@ -2264,10 +2334,10 @@ coj che sio ij blocagi ativ al dì d'ancheuj.",
'ipb_expiry_temp' => "Ij blòch ëd j'utent stërmà a deuvo esse përmanent.",
'ipb_hide_invalid' => 'Ampossìbil scanselé sto cont-sì; a peul avèj tròpe modìfiche.',
'ipb_already_blocked' => '"$1" a l\'é già blocà',
-'ipb-needreblock' => "== Già blocà ==
-$1 a l'é già blocà.
+'ipb-needreblock' => "$1 a l'é già blocà.
It veule cambié le ampostassion?",
'ipb-otherblocks-header' => '{{PLURAL:$1|Àutr|Àutri}} blocagi',
+'unblock-hideuser' => "A peul pa dësbloché st'utent, da già che sò nòm a l'é stàit stërmà.",
'ipb_cant_unblock' => 'Eror: As treuva nen ël blòch con identificativ $1. A peul esse che a sia un blòch già gavà via.',
'ipb_blocked_as_range' => "Eror: L'adrëssa IP $1 a l'ha gnun blòch diret ansima e donca a peul pa esse dësblocà. A resta blocà mach për via ch'a l'é ciapà andrinta al ragg $2, e lolì as peul pa dësblochesse.",
'ip_range_invalid' => 'Nùmer IP nen bon.',
@@ -2303,6 +2373,7 @@ Për piasì, che an conferma che sòn a l'é da bon lòn che chiel (chila) a veu
'unlockdbsuccesstext' => " La base dat ëd {{SITENAME}} a l'è staita dësblocà.",
'lockfilenotwritable' => "As peul nen ëscrive ant sl'archivi ëd blòch dla base dat. A fa dë manca d'avej n'acess an scritura a st'archivi për podej bloché e dësbloché la base dat.",
'databasenotlocked' => "La base dat a l'é nen blocà.",
+'lockedbyandtime' => '(për {{GENDER:$1|$1}} ël $2 a $3)',
# Move page
'move-page' => 'Tramud ëd $1',
@@ -2429,7 +2500,7 @@ Se costa ùltima possibilità a fussa lòn che a-j serv, a podrìa ëdcò dovré
'allmessagesdefault' => "Test che a-i sarìa se a-i fusso pa 'd modìfiche",
'allmessagescurrent' => 'Test corent',
'allmessagestext' => "Costa-sì a l'é na lista ëd messagi disponìbij ëd sistema ant lë spassi nominal MediaWiki.
-Për piasì vìsita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisassion] e [http://translatewiki.net translatewiki.net] se it veule contribuì a la localisassion general ëd MediaWiki.",
+Për piasì vìsita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisassion] e [//translatewiki.net translatewiki.net] se it veule contribuì a la localisassion general ëd MediaWiki.",
'allmessagesnotsupportedDB' => "Sta pàgina-sì a peul pa esse dovrà përchè '''\$wgUseDatabaseMessages''' a l'é stàit disabilità.",
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter' => 'Filtra për stat ëd përsonalisassion:',
@@ -2577,9 +2648,7 @@ At lassa gionté na spiegassion ëd la modìfica.',
'monobook.js' => "/* Ës messagi-sì as dovrìa pa pì dovrelo; a sò pòst ch'a dòvra [[MediaWiki:common.js]] */",
# Metadata
-'nodublincore' => "Ij metadat dla sòrt '''Dublin Core RDF''' a son disabilità ansima a sta màchina-sì.",
-'nocreativecommons' => "Ij metadat dla sòrt '''Creative Commons RDF''' a son disabilità ansima a sta màchina-sì.",
-'notacceptable' => 'Ël server dla wiki a-i la fa pa a provëdde dij dat ant na forma che sò programa local a peula lese.',
+'notacceptable' => 'Ël server dla wiki a-i la fa pa a provëdde dij dat ant na forma che sò programa local a peula lese.',
# Attribution
'anonymous' => '{{PLURAL:$1|Utent|Utent}} anònim ëd {{SITENAME}}',
@@ -2603,31 +2672,17 @@ Sòn a l'é motobin belfé che a sia rivà përchè a-i era n'anliura a un sit e
'spam_blanking' => "Pàgina dësveujdà, che tute le version a l'avìo andrinta dj'anliure a $1",
# Info page
-'infosubtitle' => 'Anformassion për la pàgina',
-'numedits' => 'Nùmer ëd modìfiche (artìcol): $1',
-'numtalkedits' => 'Nùmer ëd modìfiche (pàgina ëd discussion): $1',
-'numwatchers' => "Nùmer d'utent che as ten-o sossì sot euj: $1",
-'numauthors' => "Nùmer d'autor diferent (artìcol): $1",
-'numtalkauthors' => "Nùmer d'autor distint (pàgina ëd discussion): $1",
-
-# Math options
-'mw_math_png' => 'Most-lo sempe coma PNG',
-'mw_math_simple' => "But-lo an HTML se a l'é motobin belfé a fesse, dësnò but-lo an PNG",
-'mw_math_html' => 'But-lo an HTML se as peul, dësnò an PNG',
-'mw_math_source' => 'Lass-lo coma TeX (për ij programa ëd navigassion testual)',
-'mw_math_modern' => 'As racomanda për ij programa ëd navigassion pì modern',
-'mw_math_mathml' => 'But-lo an MathML se as peul (sperimental)',
-
-# Math errors
-'math_failure' => 'Parsificassion falà',
-'math_unknown_error' => 'Eror nen conossù',
-'math_unknown_function' => 'funsion che as sa pa lòn che a la sia',
-'math_lexing_error' => 'eror ëd léssich',
-'math_syntax_error' => 'eror ëd sintassi',
-'math_image_error' => "La conversion an PNG a l'é falìa; che a contròla l'ùltima instalassion ëd latex e dvipng (o dvips + gs + convert)",
-'math_bad_tmpdir' => "Ël sistema a-i la fa pa a creé la diretriss '''math temp''', ò pura a-i la fa nen a scriv-je andrinta",
-'math_bad_output' => "Ël sistema a-i la fa pa a creé la diretriss '''math output''', ò pura a-i la fa nen a scriv-je andrinta",
-'math_notexvc' => 'Pa gnun texvc executable; për piasì, che a contròla math/README për la configurassion.',
+'pageinfo-title' => 'Anformassion për "$1"',
+'pageinfo-header-edits' => 'Modìfiche',
+'pageinfo-header-watchlist' => 'Ròba che as ten sot euj',
+'pageinfo-header-views' => 'Vìsite',
+'pageinfo-subjectpage' => 'Pàgina',
+'pageinfo-talkpage' => 'Pàgina ëd discussion',
+'pageinfo-watchers' => "Vàire ch'a ten-o sot-euj la pàgina",
+'pageinfo-edits' => 'Nùmer ëd modìfiche',
+'pageinfo-authors' => "Nùmer d'autor diferent",
+'pageinfo-views' => 'Nùmer ëd vìsite',
+'pageinfo-viewsperedit' => 'Visualisassion për modìfica',
# Patrolling
'markaspatrolleddiff' => 'Marca coma verificà',
@@ -2664,22 +2719,25 @@ $1",
'nextdiff' => 'Modìfica pì neuva →',
# Media information
-'mediawarning' => "'''Atension!''': st'archivi-sì a podrìa avèj andrinta dël còdes butà-lì da cheidun për fé ëd darmagi.
+'mediawarning' => "'''Atension!''': st'archivi-sì a podrìa avèj andrinta dël còdes butà-lì da cheidun për fé ëd darmagi.
An fasend-lo travajé ansima a sò ordinator chiel a podrìa porteje ëd dann a sò sistema.",
-'imagemaxsize' => "Lìmit ëd la dimension ëd la figura:<br /> ''(për pàgine ëd descrission dij file)''",
-'thumbsize' => 'Amzura dle figurin-e:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pàgina|pàgine}}',
-'file-info' => "amzura dl'archivi: $1, sòrt MIME: $2",
-'file-info-size' => '$1 × $2 pixel, amzure: $3, sòrt MIME: $4',
-'file-nohires' => '<small>Gnun-a risolussion pì bela disponibila.</small>',
-'svg-long-desc' => "archivi an forma SVG, amzure nominaj $1 × $2 pixel, amzura dl'archivi: $3",
-'show-big-image' => 'Version a amzura pijn-a',
-'show-big-image-thumb' => '<small>Amzure dë sta figurin-a: $1 × $2 pixel</small>',
-'file-info-gif-looped' => 'ciclà',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|fnesta|fneste}}',
-'file-info-png-looped' => 'an sìrcol',
-'file-info-png-repeat' => 'sonà $1 {{PLURAL:$1|vira|vire}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|quàder|quàder}}',
+'imagemaxsize' => "Lìmit ëd la dimension ëd la figura:<br /> ''(për pàgine ëd descrission dij file)''",
+'thumbsize' => 'Amzura dle figurin-e:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pàgina|pàgine}}',
+'file-info' => "amzura dl'archivi: $1, sòrt MIME: $2",
+'file-info-size' => '$1 × $2 pixel, amzure: $3, sòrt MIME: $4',
+'file-info-size-pages' => "$1 × $2 pontin, dimension ëd l'archivi: $3, sòrt MIME: $4, $5 {{PLURAL:$5|pàgina|pàgine}}",
+'file-nohires' => '<small>Gnun-a risolussion pì bela disponibila.</small>',
+'svg-long-desc' => "archivi an forma SVG, amzure nominaj $1 × $2 pixel, amzura dl'archivi: $3",
+'show-big-image' => 'Version a amzura pijn-a',
+'show-big-image-preview' => '<small>Amzure dë sta preuva: $1.</small>',
+'show-big-image-other' => '<small>Àutre arzolussion: $1.</small>',
+'show-big-image-size' => '$1 × $2 pontin',
+'file-info-gif-looped' => 'ciclà',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|fnesta|fneste}}',
+'file-info-png-looped' => 'an sìrcol',
+'file-info-png-repeat' => 'sonà $1 {{PLURAL:$1|vira|vire}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|quàder|quàder}}',
# Special:NewFiles
'newimages' => 'Galerìa ëd figure e son neuv',
@@ -2704,14 +2762,21 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
'metadata-help' => "Costi-sì a son dij dat adissionaj, che a l'é belfé che a sio stait giontà da la màchina fotogràfica digital ò pura da lë scanner che a l'é stiat dovrà për creé la figura digital. Se la figura a fussa mai staita modificà da 'nt soa forma original, a podrìa ëdcò riveje che chèich detaj a fussa ancò butà coma ant l'original, donca sensa pa ten-e cont ëd le modìfiche.",
'metadata-expand' => 'Most-me tùit ij dat',
'metadata-collapse' => 'Stërma ij dat adissionaj',
-'metadata-fields' => "Ij camp dij metadat EXIF lista ant ës messagi-sì a sarà smonù ant sla pàgina dla figura quand la tabela dij metadat a l'é scondùa. J'àotri a saran scondù.
+'metadata-fields' => "Ij camp dij metadat ëd la figura listà ant ës messagi-sì a saran ësmonù ant la visualisassion ëd la pàgina dla figura quand la tàula dij metadat a l'é stërmà.
+J'àutri a saran stërmà coma stàndard.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Larghëssa',
@@ -2726,13 +2791,11 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
'exif-ycbcrpositioning' => 'Posissionament Y e C',
'exif-xresolution' => 'Risolussion orizontal',
'exif-yresolution' => 'Risolussion vertical',
-'exif-resolutionunit' => "Unità d'amzura për le coordinà X e Y",
'exif-stripoffsets' => 'Posission dij dat dla figura',
'exif-rowsperstrip' => 'Nùmer ëd righe për banda',
'exif-stripbytecounts' => 'Bytes për banda compressa',
'exif-jpeginterchangeformat' => 'Diferensa posissional anvers al SOI dël JPEG',
'exif-jpeginterchangeformatlength' => 'Byte ëd dat an formà JPEG',
-'exif-transferfunction' => 'Funsion ëd trasferiment',
'exif-whitepoint' => 'Pont cromàtich dël bianch',
'exif-primarychromaticities' => 'Coordinà cromàtiche dij color primari',
'exif-ycbcrcoefficients' => 'Coeficent dla matriss ëd trasformassion dlë spassi color',
@@ -2751,7 +2814,6 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
'exif-compressedbitsperpixel' => 'Sistema ëd compression dle figure',
'exif-pixelydimension' => 'Larghëssa dla figura',
'exif-pixelxdimension' => 'Autëssa dla figura',
-'exif-makernote' => 'Nòte dël fabricant',
'exif-usercomment' => 'Nòte lìbere',
'exif-relatedsoundfile' => 'Archivi audio colegà',
'exif-datetimeoriginal' => 'Data e ora dla generassion dij dat',
@@ -2765,7 +2827,6 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
'exif-exposureprogram' => "Programa d'esposission",
'exif-spectralsensitivity' => 'Sensibilità dë spetro',
'exif-isospeedratings' => 'Sensibilità ISO',
-'exif-oecf' => 'Fator ëd conversion optoeletrònica',
'exif-shutterspeedvalue' => 'Temp dë scat APEX',
'exif-aperturevalue' => 'Diaframa APEX',
'exif-brightnessvalue' => 'Luminosità APEX',
@@ -2778,7 +2839,6 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
'exif-focallength' => 'Lunghëssa focal dle lent',
'exif-subjectarea' => "Spassi d'anquadratura dël soget",
'exif-flashenergy' => 'Potensa dël flash',
-'exif-spatialfrequencyresponse' => 'Arspòsta an frequensa spassial',
'exif-focalplanexresolution' => 'Resolussion dla coordinà X ant sël pian dla focal',
'exif-focalplaneyresolution' => 'Resolussion dla coordinà Y ant sël pian dla focal',
'exif-focalplaneresolutionunit' => "Unità d'amzura për ël pian dla focal",
@@ -2787,7 +2847,6 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
'exif-sensingmethod' => 'Metod ëd campionament',
'exif-filesource' => "Sorgiss dl'archivi",
'exif-scenetype' => "Sòrt d'anquadratura",
-'exif-cfapattern' => 'Schema CFA',
'exif-customrendered' => 'Process dla figura particolar',
'exif-exposuremode' => "Modalità dl'esposission",
'exif-whitebalance' => 'Balansa dël bianch',
@@ -2832,10 +2891,79 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
'exif-gpsareainformation' => 'Nòm dlë spassi GPS',
'exif-gpsdatestamp' => 'Data dël GPS',
'exif-gpsdifferential' => 'Coression diferensial dël GPS',
+'exif-jpegfilecomment' => "Coment ëd l'archivi JPEG",
+'exif-keywords' => 'Paròle ciav',
+'exif-worldregioncreated' => "Region dël mond anté che la fòto a l'é stàita pijà",
+'exif-countrycreated' => "Pais anté che la fòto a l'é stàita fàita",
+'exif-countrycodecreated' => "Còdes dëlpais anté che la fòto a l'é stàita pijà",
+'exif-provinceorstatecreated' => "Provinsa o stat anté che la fòto a l'é stàita pijà",
+'exif-citycreated' => "Sità anté che la fòto a l'é stàita pijà",
+'exif-sublocationcreated' => "Borgh ëd la sità anté che la fòto a l'é stàita pijà",
+'exif-worldregiondest' => 'Region dël mond mostrà',
+'exif-countrydest' => 'Pais mostrà',
+'exif-countrycodedest' => 'Còdes dël pais mostrà',
+'exif-provinceorstatedest' => 'Provinsa o stat mostrà',
+'exif-citydest' => 'Sità mostrà',
+'exif-sublocationdest' => 'Borgh ëd la sità mostrà',
'exif-objectname' => 'Tìtol curt',
+'exif-specialinstructions' => 'Istrussion speciaj',
+'exif-headline' => 'Antestassion',
+'exif-credit' => 'Arconossiment/Fornitor',
+'exif-source' => 'Sorgiss',
+'exif-editstatus' => 'Stat ëd modìfica dla figura',
+'exif-urgency' => 'Pressa',
+'exif-fixtureidentifier' => 'Nòm utiss',
+'exif-locationdest' => 'Locassion fotografà',
+'exif-locationdestcode' => 'Còdes ëd la locassion fotografà',
+'exif-objectcycle' => "Ora dël di ëd destinassion d'ës mojen",
+'exif-contact' => 'Anformassion ëd contat',
+'exif-writer' => 'Scritor',
+'exif-languagecode' => 'Lenga',
+'exif-iimversion' => 'version IIM',
+'exif-iimcategory' => 'Categorìa',
+'exif-iimsupplementalcategory' => 'Categorìa suplementar',
+'exif-datetimeexpires' => 'Dovré nen apress',
+'exif-datetimereleased' => 'Butà fòra ël',
+'exif-originaltransmissionref' => 'Còdes ëd locassion ëd la trasmission original',
+'exif-identifier' => 'Identificator',
+'exif-lens' => 'Lent dovrà',
+'exif-serialnumber' => 'Nùmer serial ëd la màchina fotogràfica',
+'exif-cameraownername' => 'Padron ëd la màchina fotogràfica',
+'exif-label' => 'Tichëtta',
+'exif-datetimemetadata' => "Quand ij metadat a son stàit modificà l'ùltima vira",
+'exif-nickname' => 'Nòm anformal ëd la figura',
+'exif-rating' => 'Vot (su 5)',
+'exif-rightscertificate' => 'Sertificà ëd gestion dij drit',
+'exif-copyrighted' => "Stat dël drit d'autor",
+'exif-copyrightowner' => "Titolar dël drit d'autor",
+'exif-usageterms' => "Termo d'usagi",
+'exif-webstatement' => "Diciarassion an linia dël drit d'autor",
+'exif-originaldocumentid' => 'ID unìvoch dël document original',
+'exif-licenseurl' => "Anliura ëd la licensa dij drit d'autor",
+'exif-morepermissionsurl' => 'Anformassion an sle license alternativa',
+'exif-attributionurl' => "Quand as deuvra torna cost travaj, për piasì ch'a-j buta l'anliura a",
+'exif-preferredattributionname' => "Quand as deuvra torna cost travaj, për piasì dé l'arconossiment a",
+'exif-pngfilecomment' => "Coment ëd l'archivi PNG",
+'exif-disclaimer' => 'Avis',
+'exif-contentwarning' => 'Avis an sël contnù',
+'exif-giffilecomment' => "Coment ëd l'archivi GIF",
+'exif-intellectualgenre' => "Sòrt d'element",
+'exif-subjectnewscode' => 'Còdes dël soget',
+'exif-scenecode' => 'Còdes ëd sena IPTC',
+'exif-event' => 'Event fotografà',
+'exif-organisationinimage' => 'Organisassion fotografà',
+'exif-personinimage' => 'Përson-a fotografà',
+'exif-originalimageheight' => "Autëssa dla figura prima ch'a sia ritajà",
+'exif-originalimagewidth' => "Larghëssa dla figura prima ch'a sia ritajà",
# EXIF attributes
'exif-compression-1' => 'Pa compress',
+'exif-compression-2' => "CCITT Partìa 3 longheur dla codìfica d'esecussion dla codìfica Huffman modificà ëd dimension 1",
+'exif-compression-3' => 'CCITT Partìa 3 codìfica dël fax',
+'exif-compression-4' => 'CCITT Partìa 4 codìfica dël fax',
+
+'exif-copyrighted-true' => "Con drit d'autor",
+'exif-copyrighted-false' => 'Domini pùblich',
'exif-unknowndate' => 'Data nen conossùa',
@@ -2854,7 +2982,7 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
'exif-xyresolution-i' => '$1 pont për pòles (dpi)',
'exif-xyresolution-c' => '$1 pont për centim (dpc)',
-'exif-colorspace-ffff.h' => 'Nen calibrà',
+'exif-colorspace-65535' => 'Nen calibrà',
'exif-componentsconfiguration-0' => 'a esist pa',
@@ -2973,6 +3101,10 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
'exif-gpslongitude-e' => 'Longitùdin oriental',
'exif-gpslongitude-w' => 'Longitùdin ossidental',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|méter|méter}} an sël livel dël mar',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|méter|méter}} sota ël livel dël mar',
+
'exif-gpsstatus-a' => 'Amzura antramentr che as fa',
'exif-gpsstatus-v' => "Interoperabilità dl'amzura",
@@ -2984,21 +3116,73 @@ J'anliure ch'a-i ven-o dapress, ant sla midema riga, as conto për ecession (vis
'exif-gpsspeed-m' => 'mija/h',
'exif-gpsspeed-n' => 'Grop (marin)',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Chilòmeter',
+'exif-gpsdestdistance-m' => 'Mija',
+'exif-gpsdestdistance-n' => 'Mija marin-e',
+
+'exif-gpsdop-excellent' => 'Ecelent ($1)',
+'exif-gpsdop-good' => 'Bon ($1)',
+'exif-gpsdop-moderate' => 'Moderà ($1)',
+'exif-gpsdop-fair' => 'Discret ($1)',
+'exif-gpsdop-poor' => 'Scadent ($1)',
+
+'exif-objectcycle-a' => 'Mach ëd matin',
+'exif-objectcycle-p' => 'Mach ëd dòp-mesdì',
+'exif-objectcycle-b' => 'Sia matin che dòp-mesdì',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Diression vèira',
'exif-gpsdirection-m' => 'Diression magnética',
+'exif-ycbcrpositioning-1' => 'Sentrà',
+'exif-ycbcrpositioning-2' => 'Postà ansema',
+
+'exif-dc-contributor' => 'Contributor',
+'exif-dc-coverage' => 'Camp spassial o temporal dël mojen',
+'exif-dc-date' => 'Data(e)',
+'exif-dc-publisher' => 'Editor',
+'exif-dc-relation' => 'Mojen relativ',
+'exif-dc-rights' => 'Drit',
+'exif-dc-source' => 'Mojen sorgiss',
+'exif-dc-type' => 'Sòrt ëd mojen',
+
+'exif-rating-rejected' => 'Arfudà',
+
+'exif-isospeedratings-overflow' => 'Pi gròss ëd 65535',
+
+'exif-iimcategory-ace' => 'Art, cultura e spetàcol',
+'exif-iimcategory-clj' => 'Sassin e lej',
+'exif-iimcategory-dis' => 'Disastr e assident',
+'exif-iimcategory-fin' => 'Economìa e afé',
+'exif-iimcategory-edu' => 'Educassion',
+'exif-iimcategory-evn' => 'Ambient',
+'exif-iimcategory-hth' => 'Salute',
+'exif-iimcategory-hum' => 'Anteressi uman',
+'exif-iimcategory-lab' => 'Travaj',
+'exif-iimcategory-lif' => 'Stil ëd vita e temp lìber',
+'exif-iimcategory-pol' => 'Polìtica',
+'exif-iimcategory-rel' => 'Religion e chërdense',
+'exif-iimcategory-sci' => 'Siensa e tecnologìa',
+'exif-iimcategory-soi' => 'Chestion sociaj',
+'exif-iimcategory-spo' => 'Spòrt',
+'exif-iimcategory-war' => 'Guèra, conflit e batibeuj',
+'exif-iimcategory-wea' => 'Temp',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Bass ($1)',
+'exif-urgency-high' => 'Àuta ($1)',
+'exif-urgency-other' => "Priorità definìa da l'utent ($1)",
+
# External editor support
'edit-externally' => "Modifiché st'archivi con un programa estern",
-'edit-externally-help' => "(Varda [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] për avej pì d'anformassion)",
+'edit-externally-help' => "(Varda [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] për avej pì d'anformassion)",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tute',
-'imagelistall' => 'tùit/tute',
-'watchlistall2' => 'tute',
-'namespacesall' => 'tùit',
-'monthsall' => 'tuti',
-'limitall' => 'tùit',
+'watchlistall2' => 'tute',
+'namespacesall' => 'tùit',
+'monthsall' => 'tuti',
+'limitall' => 'tùit',
# E-mail address confirmation
'confirmemail' => "Confermé l'adrëssa postal",
@@ -3083,17 +3267,24 @@ $1',
'trackbackdeleteok' => "J'anformassion për fé traciament a son staite gavà via.",
# Delete conflict
-'deletedwhileediting' => "'''Avertensa''': sta pàgina-sì a l'é staita scancelà quand che chiel (chila) a l'avìa già anandiasse a modifichela!",
-'confirmrecreate' => "L'utent [[User:$1|$1]] ([[User talk:$1|talk]]) a l'ha scancelà st'articol-sì quand che chiel (chila) a l'avia già anandiasse a modifichelo, dand coma motiv ëd la scancelament:
+'deletedwhileediting' => "'''Avertensa''': sta pàgina-sì a l'é staita scancelà quand che chiel (chila) a l'avìa già anandiasse a modifichela!",
+'confirmrecreate' => "L'utent [[User:$1|$1]] ([[User talk:$1|talk]]) a l'ha scancelà st'articol-sì quand che chiel (chila) a l'avia già anandiasse a modifichelo, dand coma motiv ëd la scancelament:
''$2''
Për piasì, che an conferma che da bon a veul torna creélo.",
-'recreate' => "Créa n'àutra vira",
+'confirmrecreate-noreason' => "L'utent [[User:$1|$1]] ([[User talk:$1|ciaciarade]]) a l'ha scancelà sta pàgina apress che chiel a l'ha ancaminà a modifiché. Për piasì, ch'a confirma ch'a veul pròpi torna creé sta pàgina.",
+'recreate' => "Créa n'àutra vira",
# action=purge
'confirm_purge_button' => 'Va bin',
'confirm-purge-top' => 'Veujdé la memorisassion dë sta pàgina-sì?',
'confirm-purge-bottom' => 'Spurghé na pàgina a scansela la "cache" e a fà aparì le revision pì neuve.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Va bin',
+'confirm-watch-top' => 'Gionté sta pàgina-sì a la lista dle ròbe che as ten-o sot euj?',
+'confirm-unwatch-button' => 'Va bin',
+'confirm-unwatch-top' => 'Gavé sta pàgina-sì da la lista dle ròbe che as ten-o sot euj?',
+
# Multipage image navigation
'imgmultipageprev' => '↠pàgina andré',
'imgmultipagenext' => 'pàgina anans →',
@@ -3142,14 +3333,14 @@ a podrìo ëdcò nen ess-ie ant sta lista -sì.",
'watchlistedit-noitems' => "A-i é pa gnun tìtol ch'as ten-a sot euj.",
'watchlistedit-normal-title' => "Modifiché la lista ëd lòn ch'as ten sot euj",
'watchlistedit-normal-legend' => "Gavé via ij tìtoj da 'nt la lista ëd lòn ch'as ten sot euj",
-'watchlistedit-normal-explain' => "Ij tìtoj ch'a ten sot euj a son ësmonù ambelessì-sota. Për gavene via un ch'a-i fasa la crosëtta ant la casela ch'a l'ha aranda, e peuj ch'ai bata ansima a «{{int:Watchlistedit-normal-submit}}». As peul ëdcò [[Special:Watchlist/raw|modifiché la lista ampressa]].",
+'watchlistedit-normal-explain' => "Ij tìtoj ch'a ten sot euj a son ësmonù ambelessì-sota. Për gavene via un ch'a-i fasa la crosëtta ant la casela ch'a l'ha aranda, e peuj ch'ai bata ansima a «{{int:Watchlistedit-normal-submit}}». As peul ëdcò [[Special:EditWatchlist/raw|modifiché la lista ampressa]].",
'watchlistedit-normal-submit' => 'Gavé via ij tìtoj',
'watchlistedit-normal-done' => "{{PLURAL:$1|1 tìtol a l'é|$1 tìtoj a son}} stait gavà via da 'nt la lista ëd lòn ch'as ten sot euj:",
'watchlistedit-raw-title' => "Modifiché ampressa la lista ëd lòn ch'as ten sot euj",
'watchlistedit-raw-legend' => "Modifiché ampressa la lista ëd lòn ch'as ten sot euj",
'watchlistedit-raw-explain' => "Ij tìtoj ch'a l'é antramentr ch'as ten sot euj a son ambelessì-sota, e a peulo modifichesse ën giontand-ne e gavand-ne via da 'nt la lista; un tìtol për riga.
Quand a l'ha finì, ch'a-i bata ansima a \"{{int:Watchlistedit-raw-submit}}\".
-As peul ëdcò [[Special:Watchlist/edit|dovré l'editor sòlit]].",
+As peul ëdcò [[Special:EditWatchlist|dovré l'editor sòlit]].",
'watchlistedit-raw-titles' => 'Tìtoj:',
'watchlistedit-raw-submit' => 'Agiorné la Lista',
'watchlistedit-raw-done' => "La lista ëd lòn ch'as ten sot euj a l'é staita agiornà.",
@@ -3180,33 +3371,33 @@ As peul ëdcò [[Special:Watchlist/edit|dovré l'editor sòlit]].",
'duplicate-defaultsort' => "'''Atension:''' La ciav d'ordinament ëd default \"\$2\" a ven al pòst ëd cola ëd prima \"\$1\"",
# Special:Version
-'version' => 'Version',
-'version-extensions' => 'Estension anstalà',
-'version-specialpages' => 'Pàgine speciaj',
-'version-parserhooks' => 'Gancio dlë scompositor',
-'version-variables' => 'Variàbij',
-'version-skins' => 'Pej',
-'version-other' => 'Àutr',
-'version-mediahandlers' => 'Gestor multimojen',
-'version-hooks' => 'Gancio',
-'version-extension-functions' => "Fonsion dj'estension",
-'version-parser-extensiontags' => "Tacolèt dj'estension conossùe da lë scompositor",
-'version-parser-function-hooks' => 'Gancio për le fonsion dlë scompositor',
-'version-skin-extension-functions' => "Fonsion për j'estension dle facie",
-'version-hook-name' => 'Nòm dël gancio',
-'version-hook-subscribedby' => 'A son scrivusse',
-'version-version' => '(Version $1)',
-'version-license' => 'Licensa',
-'version-poweredby-credits' => "Sta wiki-sì a l'é basà su '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'àutri',
-'version-license-info' => "MediaWiki a l'é un programa lìber; a peul passelo an gir e/o modifichelo sota le condission dla Licensa Pùblica General GNU coma publicà da la Free Software Foundation; o la version 2 dla licensa o (a soa decision) qualsëssìa version apress.
+'version' => 'Version',
+'version-extensions' => 'Estension anstalà',
+'version-specialpages' => 'Pàgine speciaj',
+'version-parserhooks' => 'Gancio dlë scompositor',
+'version-variables' => 'Variàbij',
+'version-antispam' => 'Prevension dla rumenta',
+'version-skins' => 'Pej',
+'version-other' => 'Àutr',
+'version-mediahandlers' => 'Gestor multimojen',
+'version-hooks' => 'Gancio',
+'version-extension-functions' => "Fonsion dj'estension",
+'version-parser-extensiontags' => "Tacolèt dj'estension conossùe da lë scompositor",
+'version-parser-function-hooks' => 'Gancio për le fonsion dlë scompositor',
+'version-hook-name' => 'Nòm dël gancio',
+'version-hook-subscribedby' => 'A son scrivusse',
+'version-version' => '(Version $1)',
+'version-license' => 'Licensa',
+'version-poweredby-credits' => "Sta wiki-sì a l'é basà su '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'àutri',
+'version-license-info' => "MediaWiki a l'é un programa lìber; a peul passelo an gir e/o modifichelo sota le condission dla Licensa Pùblica General GNU coma publicà da la Free Software Foundation; o la version 2 dla licensa o (a soa decision) qualsëssìa version apress.
MediaWiki a l'é distribuì ant la speransa che a sia ùtil, ma SENSA GNUN-A GARANSÌA; sensa gnanca la garansìa implìcita ëd COMERSIABILITA' o d'ADATAMENT A UN BUT PARTICOLAR. Ch'a lesa la Licensa General Pùblica GNU per pi 'd detaj.
-A dovrìa avèj arseivù [{{SERVER}}{{SCRIPTPATH}}/COPYING na còpia dla Licensa Pùblica General GNU] ansema a sto programa-sì; dësnò, ch'a scriva a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html ch'a la lesa an linia].",
-'version-software' => 'Programa anstalà',
-'version-software-product' => 'Prodot',
-'version-software-version' => 'Version',
+A dovrìa avèj arseivù [{{SERVER}}{{SCRIPTPATH}}/COPYING na còpia dla Licensa Pùblica General GNU] ansema a sto programa-sì; dësnò, ch'a scriva a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [//www.gnu.org/licenses/old-licenses/gpl-2.0.html ch'a la lesa an linia].",
+'version-software' => 'Programa anstalà',
+'version-software-product' => 'Prodot',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath' => "Përcors d'archivi",
@@ -3216,22 +3407,22 @@ A dovrìa avèj arseivù [{{SERVER}}{{SCRIPTPATH}}/COPYING na còpia dla Licensa
Le figure a së smon-o a amzura pijn-a, j'àotre sòrt d'archivi a ven-o fàite parte diretament da sò programa a pòsta.",
# Special:FileDuplicateSearch
-'fileduplicatesearch' => "Arsërca dj'archivi dobi",
-'fileduplicatesearch-summary' => "Arsërca dj'archivi dobi a parte dal valor d'ordinament.
-
-Ch'a bata 'l nòm dl'archivi sensa pa bute-ie 'l prefiss \"{{ns:file}}:\".",
-'fileduplicatesearch-legend' => 'Arsërca ëd na dobia',
-'fileduplicatesearch-filename' => "Nòm dl'archivi:",
-'fileduplicatesearch-submit' => 'Arsërca',
-'fileduplicatesearch-info' => '$1 × $2 pixel<br />Amzure: $3<br />Sòrt MIME: $4',
-'fileduplicatesearch-result-1' => 'Pa gnun-a dobia për l\'archivi "$1".',
-'fileduplicatesearch-result-n' => 'A-i {{PLURAL:$2|é \'n dobion midem|son $2 dobion midem}} ëd l\'archivi "$1".',
+'fileduplicatesearch' => "Arsërca dj'archivi dobi",
+'fileduplicatesearch-summary' => "Arsërca dj'archivi dobi a parte dal valor d'ordinament.",
+'fileduplicatesearch-legend' => 'Arsërca ëd na dobia',
+'fileduplicatesearch-filename' => "Nòm dl'archivi:",
+'fileduplicatesearch-submit' => 'Arsërca',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />Amzure: $3<br />Sòrt MIME: $4',
+'fileduplicatesearch-result-1' => 'Pa gnun-a dobia për l\'archivi "$1".',
+'fileduplicatesearch-result-n' => 'A-i {{PLURAL:$2|é \'n dobion midem|son $2 dobion midem}} ëd l\'archivi "$1".',
+'fileduplicatesearch-noresults' => 'Gnun archivi ciamà "$1" trovà.',
# Special:SpecialPages
'specialpages' => 'Pàgine Speciaj',
'specialpages-note' => '----
* Pàgine speciaj normaj.
-* <strong class="mw-specialpagerestricted">Pàgine speciaj riservà.</strong>',
+* <span class="mw-specialpagerestricted">Pàgine speciaj riservà.</span>
+* <span class="mw-specialpagecached">Pàgine speciaj mach an memòria local (a peulo esse veje).</span>',
'specialpages-group-maintenance' => 'Rapòrt ëd manutension',
'specialpages-group-other' => 'Àutre pàgine speciaj',
'specialpages-group-login' => 'Login / registrassion',
diff --git a/languages/messages/MessagesPnb.php b/languages/messages/MessagesPnb.php
index a4e42044..171867cc 100644
--- a/languages/messages/MessagesPnb.php
+++ b/languages/messages/MessagesPnb.php
@@ -17,12 +17,6 @@ $linkPrefixExtension = true;
$fallback8bitEncoding = 'windows-1256';
$rtl = true;
-$defaultUserOptionOverrides = array(
- # Swap sidebar to right side by default
- 'quickbar' => 2,
- # Underlines seriously harm legibility. Force off:
- 'underline' => 0,
-);
$messages = array(
# User preference toggles
@@ -32,7 +26,7 @@ $messages = array(
'tog-hideminor' => 'چھوٹیاں تبدیلیاں چھپاؤ',
'tog-hidepatrolled' => 'ویکھیاں تبدیلیاں لکاؤ',
'tog-newpageshidepatrolled' => 'نویاں صÙیاں توں ویکھیاں تبدیلیاں لکاؤ',
-'tog-extendwatchlist' => 'نظر تھلے رکھے صÙØ­Û’ نوں ودھاو, ØªØ§Ú©Û Ø§ÙˆÛ ØªØ¨Ø¯ÛŒÙ„ÛŒØ§Úº جیڑیاں Ú©Ù… دے قابل نیں ویکھیاں جا سکن',
+'tog-extendwatchlist' => 'نظر تھلے رکھے صÙØ­Û’ نوں ودھاو, تاں جے Ø§ÙˆÛ ØªØ¨Ø¯ÛŒÙ„ÛŒØ§Úº جیڑیاں Ú©Ù… دے قابل نیں ویکھیاں جا سکن',
'tog-usenewrc' => 'تھوڑا خر Ù¾ÛÙ„Û’ کیتیاں گیاں تبدیلیاں ورتو',
'tog-numberheadings' => 'آپ نمبر دین والیاں سرخیاں',
'tog-showtoolbar' => 'ایڈٹ ٹولبار وکھاؤ',
@@ -56,9 +50,9 @@ $messages = array(
'tog-shownumberswatching' => 'ویکھن آلے لوکاں دی گنتی وکھاؤ۔',
'tog-oldsig' => 'ÛÙ† والے دسخط:',
'tog-fancysig' => 'دستخط نوں وکی ٹیکسڈ ونگوں؎ ورتو(without an automatic link)',
-'tog-externaleditor' => 'ÛÙ…ÛŒØ´Û Ø¨Ø§Ø±Ù„Ø§ Ù„Ú©Ú¾Ù† والا ورتو (ماÛر لوکاں واسطے، اس واسطے تواڑے کمپیوٹر تے خاص تبدیلیاں چائیدیاں نیں۔ [http://www.mediawiki.org/wiki/Manual:External_editors مزید معلومات.])',
+'tog-externaleditor' => 'ÛÙ…ÛŒØ´Û Ø¨Ø§Ø±Ù„Ø§ Ù„Ú©Ú¾Ù† والا ورتو (ماÛر لوکاں واسطے، اس واسطے تواڑے کمپیوٹر تے خاص تبدیلیاں چائیدیاں نیں۔ [//www.mediawiki.org/wiki/Manual:External_editors مزید معلومات.])',
'tog-externaldiff' => '
-ÛÙ…ÛŒØ´Û Ø¨Ø§Ø±Ù„Ø§ تبدیلی کرن والا ورتو (ماÛر لوکاں واسطے، اس واسطے تواڑے کمپیوٹر تے خاص تبدیلیاں چائیدیاں نیں۔ [http://www.mediawiki.org/wiki/Manual:External_editors مزید معلومات۔])',
+ÛÙ…ÛŒØ´Û Ø¨Ø§Ø±Ù„Ø§ تبدیلی کرن والا ورتو (ماÛر لوکاں واسطے، اس واسطے تواڑے کمپیوٹر تے خاص تبدیلیاں چائیدیاں نیں۔ [//www.mediawiki.org/wiki/Manual:External_editors مزید معلومات۔])',
'tog-showjumplinks' => '"ایدر چلو" نوں رلن والے جوڑان نال جوڑو',
'tog-uselivepreview' => 'لائیو پریویو ورتو',
'tog-forceeditsummary' => 'مینون اوسے ویلے دسو جدوں خالی سمری تے آؤ۔',
@@ -153,6 +147,7 @@ $messages = array(
'listingcontinuesabbrev' => 'جاری',
'index-category' => 'انڈیکسڈ صÙÛ’',
'noindex-category' => 'نان انڈیکسڈ صÙÛ’',
+'broken-file-category' => 'ٹٹے ÛÙˆÛ“ جوڑاں آلے صÙØ­Û’',
'about' => 'بارے چ',
'article' => 'مضمون آلا صÙØ­Û',
@@ -204,10 +199,10 @@ $messages = array(
'history' => 'Ù¾Ú†Ú¾Ù„Û’ Ú©Ù…',
'history_short' => 'ریکارڈ',
'updatedmarker' => 'میرے پچھلی وار آن توں مگروں دیاں تبدیلیاں',
-'info_short' => 'معلومات',
'printableversion' => 'چھپن آلا صÙØ­Û',
'permalink' => 'پکا تعلق',
'print' => 'چھاپو',
+'view' => 'وکھالÛ',
'edit' => 'Ù„Ú©Ú¾Ùˆ',
'create' => 'بناؤ',
'editthispage' => 'اس صÙØ­Û ØªÛ’ Ù„Ú©Ú¾Ùˆ',
@@ -215,6 +210,7 @@ $messages = array(
'delete' => 'مٹاؤ',
'deletethispage' => 'اے صÙØ­Û Ù…Ù¹Ø§Ø¤',
'undelete_short' => 'مٹانا واپس {{انیک:$1|اکتبدیلی|$1 تبدیلی}}',
+'viewdeleted_short' => 'ویکھو {{PLURAL:$1|اک مٹائی گئی تبدیلی|$1 مٹائیاں گئیاں تبدیلیاں}}',
'protect' => 'بچاؤ',
'protect_change' => 'تبدیل کرو',
'protectthispage' => 'اے صÙØ­Û Ø¨Ú†Ø§Ø¤',
@@ -296,6 +292,8 @@ $messages = array(
'toc' => 'حصے',
'showtoc' => 'کھولو',
'hidetoc' => 'چپھاؤ',
+'collapsible-collapse' => 'ڈگنا',
+'collapsible-expand' => 'ودھاؤ',
'thisisdeleted' => '$1 ویکھو یا واپس لاؤ',
'viewdeleted' => 'ویکھو $1 ؟',
'restorelink' => '{{PLURAL:$1|اک مٹائی گئی تبدیلی|$1 مٹائیاں گئیاں تبدیلیاں}}',
@@ -307,6 +305,8 @@ $messages = array(
'page-rss-feed' => '"$1" RSS Feed',
'page-atom-feed' => '"$1" Atom Feed',
'red-link-title' => '$1 (اے صÙØ­Û Ø­Ù„Û’ تک نئیں بنایا گیا)',
+'sort-descending' => 'ونڈ تھلے ول',
+'sort-ascending' => 'ونڈ اتے ول',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'صÙØ­Û',
@@ -387,10 +387,12 @@ $messages = array(
'protectedpagetext' => 'اس صÙØ­Û’ دے اتے تبدیلی کرن نوں روکیا گیا اے۔',
'viewsourcetext' => 'تسی اس صÙØ­Û’ دی لکھائی نوں ویکھ تے نقل کر سکدے او:',
'protectedinterface' => 'اے صÙØ­Û’ ساÙٹویئر نوں ورتن دی تھاں دیندا اے تے ایدے غلط ورتن نوں روکن واسطے اینوں بچایا Ûویا اے۔',
-'editinginterface' => "'''خبردار:''' تسیں اک ایسا صÙÛ Ø¨Ø¯Ù„ رۓ او جیÛڑا Ù…Ú©Ú¾ÛŒ صÙÛ’ دے سوÙٹویر نوں لکھت دیندا اے۔ ایس صÙÛ’ ج تبدیلی ورتنن والیاں دے Ù…Ú©Ú¾ÛŒ صÙÛ’ دے وکھالے نوں بدل دے گی۔ بولی وٹاندرے لئی، Ù…Ûربانی کرکے میڈیاوکی بولی ویونت [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] ول ویکھو۔",
+'editinginterface' => "'''خبردار:''' تسیں اک ایسا صÙÛ Ø¨Ø¯Ù„ رۓ او جیÛڑا Ù…Ú©Ú¾ÛŒ صÙÛ’ دے سوÙٹویر نوں لکھت دیندا اے۔ ایس صÙÛ’ ج تبدیلی ورتنن والیاں دے Ù…Ú©Ú¾ÛŒ صÙÛ’ دے وکھالے نوں بدل دے گی۔ بولی وٹاندرے لئی، Ù…Ûربانی کرکے میڈیاوکی بولی ویونت [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] ول ویکھو۔",
'sqlhidden' => '(SQL کھوج چھپائی Ûوئي اے)',
'cascadeprotected' => 'ایس صÙÛ’ نوں تبدیلی توں بچایا گیا اے، کیوں جے Ø§ÛŒÛ ØªÚ¾Ù„Û’ دتے Ú¯Û“ {{انیک:$1|صÙÛ’|صÙÛ’}} Ú† Ûیگا اے تے اینوں کیسکیڈنگ چنوتی نال بچایا گیا اے: $2',
'namespaceprotected' => "'''$1''' ناں دے صÙØ­Û’ تسی نئیں Ù„Ú©Ú¾ سکدے۔",
+'customcssprotected' => 'تسی اے CSS صÙØ­Û’ نوں تبدیل نئیں کر سکدے کیونجے ایدے کسے دوجے ورتن آلے دیاں من پسند تانگاں نیں۔',
+'customjsprotected' => 'تسی اے JavaScript صÙØ­Û’ نوں تبدیل نئیں کر سکدے کیونجے ایدے کسے دوجے ورتن آلے دیاں من پسند تانگاں نیں۔',
'ns-specialprotected' => 'خاص صÙØ­Û’ تبدیل نئیں کیتے جاسکدے۔',
'titleprotected' => 'اس ناں نوں [[User:$1|$1]] نئیں بناسکدا۔
اس دی ÙˆØ¬Û Ø§Û’ دسی گئی اے: "\'\'$2\'\'"Û”',
@@ -428,6 +430,7 @@ Note that some pages may continue to be displayed as if you were still logged in
'createaccount' => 'Ú©Ú¾Ø§ØªÛ Ø¨Ù†Ø§Ø¤',
'gotaccount' => "تواڈا Ù¾ÛÙ„Û’ توں Ú©Ú¾Ø§ØªÛ ÛÛ’ØŸ '''$1'''",
'gotaccountlink' => 'اندر آؤ',
+'userlogin-resetlink' => 'اپنے لاگ ان Ûون دیاں شیواں پل Ú¯Û“ØŸ',
'createaccountmail' => 'ای میل دے نال',
'createaccountreason' => 'وجÛ:',
'badretype' => 'تواڈی کنجی صحیح نئیں۔',
@@ -442,12 +445,14 @@ Note that some pages may continue to be displayed as if you were still logged in
'nocookieslogin' => '{{SITENAME}} لاگ ان کرن واسطے cookies منگدی اے۔
تساں نیں cookies بند کیتیاں Ûوئیاں نیں۔
اوناں نوں آن کردو تے Ùیر اپنے ورتن ناں تے کنجی نال لاگ ان ÛÙˆ جاؤ۔',
+'nocookiesfornew' => 'کھاتا نئیں بنایا جا سکیا، کیونجے اسی اس کھاتے دی تھاں نئیں Ù¾ØªÛ Ú©Ø± سکے۔
+اے پکا کرلو Ú©Û’ تساں Ù†Û’ cookies آن کیتیاں Ûوئیاں نیں، Ùیر اے صÙØ­Û Ø¯ÙˆØ¨Ø§Ø±Û Ú©Ú¾ÙˆÙ„Ùˆ تے کوشش کرو۔',
'noname' => 'تسی کوئی پکا ورتن آلا ناں نئیں رکھ رۓ۔',
'loginsuccesstitle' => 'تسی لاگن ÛÙˆÚ¯Û“ او',
'loginsuccess' => "'''ÛÙ† تسی {{SITENAME}} تے \"\$1\" دے ناں توں لاگ ان او'''",
'nosuchuser' => 'اس $1 ناں نال کوئی ورتن آلا Ù†Ûیں۔
اپنی لکھائی درست کرو یا نیا [[Special:UserLogin/signup|Ú©Ú¾Ø§ØªÛ Ø¨Ù†Ø§Ø¤]]Û”',
-'nosuchusershort' => 'اس "<nowiki>$1</nowiki>" ناں دا کوئی ورتن آلا Ù†ÛÙŠÚº اے۔
+'nosuchusershort' => 'اس "$1" ناں دا کوئی ورتن آلا Ù†ÛÙŠÚº اے۔
اپنی الÙØŒ بے چیک کرو۔',
'nouserspecified' => 'توانوں اپنا ورتن آلا ناں دسنا ÛÙˆÛ“ گا۔',
@@ -490,13 +495,14 @@ Note that some pages may continue to be displayed as if you were still logged in
'usernamehasherror' => 'ورتن والے ناں Ú† Ûیش کیریکٹر نئیں Ûوسکدے۔',
'login-throttled' => 'تسی تھوڑا چر Ù¾ÛÙ„Û’ لاگ ان Ûون دی Ú†ÙˆÚ©Ú¾ÛŒ واری کوشش کرچکے او۔
تھوڑا صبر کرو تے Ùیر کوشش کرنا۔',
+'login-abort-generic' => 'تسی لاگ ان نئیں Ûوسکے۔',
'loginlanguagelabel' => 'بولی: $1',
'suspicious-userlogout' => 'تھواڈی لاگ آؤٹ ÛÙˆÚº دی کوشش رک گئی اینج لگدا اے جیویں اے ٹٹے براؤزر یا کیشنگ پراکسی توں پیجیا گیا سی۔',
# E-mail sending
'php-mail-error-unknown' => 'PHP میل دے کم چ کوئی انجانی غلطی۔',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'کنجی بدلو',
'resetpass_announce' => 'تسی اک Ú©Ú†Û’ ای-میل کود تے لاگ ان ÛÙˆÚ¯Û“ او۔
لاگ ان مکان لئی تھوانوں ایتھے اک نویں کنجی بنانی پوے گی:',
@@ -515,6 +521,30 @@ Note that some pages may continue to be displayed as if you were still logged in
تساں Ù†Û’ شاید اپنی کنجی بدل لئی ÛÙˆÛ“ یا عارضی کنجی دی درخواست کیتی ÛÙˆÛ“Û”',
'resetpass-temp-password' => 'عارضی کنجی:',
+# Special:PasswordReset
+'passwordreset' => 'کنجی واپس لیاؤ',
+'passwordreset-text' => 'اے Ùارم مکمل کرکے اپنے کھاتے دی معلومات اپنے ای-میل تے منگوالو۔',
+'passwordreset-legend' => 'کنجی واپس لیاؤ',
+'passwordreset-disabled' => 'اس وکی تے کنجی واپس نئیں لیائی جاسکدی۔',
+'passwordreset-pretext' => '{{PLURAL:$1||تھلے دتے ÛÙˆÛ“ ڈیٹا Ú†ÙˆÚº اک ایتھے دیو}}',
+'passwordreset-username' => 'ورتن ناں:',
+'passwordreset-domain' => 'ڈومین',
+'passwordreset-email' => 'ای-میل پتÛ:',
+'passwordreset-emailtitle' => '{{SITENAME}} دے اتے کھاتے دی معلومات:',
+'passwordreset-emailtext-ip' => 'کسے Ù†Û’ (خورے تساں آئی Ù¾ÛŒ پتے $1) تواڈے کھاتے دا ویروا منگیا اے {{سائیٹناں}} ($4) لئی۔ تھلے دتا گیا ورتنوالا {{انیک:$3|کھاتÛ|کھاتے}} ایس ای-میل پتے نال جوڑ رکھدا اے:
+
+2$
+
+{{انیک:$3|اے عاوضی کنجی|اے عارضی کنجیاں}} {{انیک:$5|اک دن|$5 دناں}} Ú† Ù…Ú© جاوے گی۔ تسیں لاگان Ûوو تے اپنی اک نويں کنجی چنو. اگر کسے Ûور Ù†Û’ اے کنجی والی Ú†Ù¹Ú¾ÛŒ پیجی اے یا توانوں پرانی کنجی یاد آگئی اے تے تسیں پرانی کنجی نال ای Ú©Ù… چلانا چاندے او تے تسیں ایس سنیعے نوں پل جاؤ تے پرانی کنجی ای ورتو۔',
+'passwordreset-emailtext-user' => 'ورتنوالے $1 Ù†Û’ {{سائیٹناں}} تے تواڈے کھاتے بارے پچھیا اے {{سائیٹناں}} لئی ($4)Û” تھلے دتا گیا ورتن {{انیک:$3|کھاتÛ|کھاتے}} ایس ای-میل نال جڑدا اے۔
+
+$2
+
+{{انیک:$3|Ø§ÛŒÛ Ø¹Ø§Ø±Ø¶ÛŒ کنجی|اے عارضی کنجیاں}} Ù…Ú© جائیگا {{انیک:$5|اک دن|$5 دن}}Û” تسیں ÛÙ† لاکان Ûوو تے نویں کنجی چنو۔ اگر کسے Ûور Ù†Û’ اے Ú†Ù¹Ú¾ÛŒ پیجی یا توانوں اپنی Ù¾ÛÙ„ÛŒ کنجی یاد آگئی اے تے تسیں اونوں بدلنا نئیں چاندے تے تسیں ایس سنیعے نوں Ù¾Ú¾Ù„ جاؤ تے پرانی کنجی نال ای Ú©Ù… چلاؤ۔',
+'passwordreset-emailelement' => 'ورتن ناں: $1
+عارضی کنجی: $2',
+'passwordreset-emailsent' => 'یاد کران واسطے اک ای-میل پیج دتی گئی اے۔',
+
# Edit page toolbar
'bold_sample' => 'موٹی لکھائی',
'bold_tip' => 'موٹی لکھائی',
@@ -526,8 +556,6 @@ Note that some pages may continue to be displayed as if you were still logged in
'extlink_tip' => 'بیرونی جوڑ (remember http:// prefix)',
'headline_sample' => 'Ø´Û Ø³Ø±Ø®ÛŒ',
'headline_tip' => 'دوسرے درجے دی سرخی',
-'math_sample' => 'ایتھے Ùارمولا لاؤ',
-'math_tip' => 'ریاضی دا Ùارمولا (LaTeX)',
'nowiki_sample' => 'Ùارمیٹ Ù†Û Ûوئی لکھائی ایتھے پاؤ',
'nowiki_tip' => 'ÙˆÚ©ÛŒ Ùارمیٹ رھندیو۔',
'image_tip' => 'وچ مورت لگاؤ',
@@ -608,6 +636,8 @@ Note that some pages may continue to be displayed as if you were still logged in
'noarticletext-nopermission' => 'ایس ویلے ایس صÙÛ’ تے کوئی لکھت نئیں۔
تسیں [[خاص:کھوج/{{صÙÛ Ù†Ø§Úº}}|صÙÛ Ø³Ø±Ù†Ø§ÙˆÛŒÚº لئی کھوجو]] دوسریاں صÙیاں تے،
یا <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} search the related logs]</span>',
+'userpage-userdoesnotexist' => 'ورتن Ú©Ú¾Ø§ØªÛ "$1" رجسٹر نئیں Ûویا۔
+Ù…Ûربانی کرکے دسو جے تسیں ای Ú¾Ùا بنانا/بدلنا چاندے او۔',
'userpage-userdoesnotexist-view' => "''$1'' کھاتا رجسٹرڈ نئیں اے۔",
'blocked-notice-logextract' => 'اے ورتن آلے تے روک اے۔
روکن دی ÙˆØ¬Û Ø§Û’ دسی گئی اے:',
@@ -643,6 +673,7 @@ Custom .css تے .js pages use a lowercase title, e.g. {{ns:user}}:Foo/vector.cs
'token_suffix_mismatch' => "'''تواڈی لکھت نئیں منی گئی کیوں جے تواڈے بندے نے پنکچوایشن کیریکٹر لکھت ٹوکن چ رلاۓ.'''
ایس تبدیلی نوں لکھت چ خرابی نوں روکن لئی روکیا گیا اے۔.
اے اودوں Ûوندا اے جدوں تسیں گمنام سرور ورتدے او۔.",
+'edit_form_incomplete' => "''' ایڈٹ Ùارم دے کج پاسے سرور تک نئيں اپڑے؛ دو واری چیک کرو جے تھواڈیاں تبدیلیاں بچیاں نیں تے Ùیر کوشش کرو'''",
'editing' => 'تسی "$1" Ù„Ú©Ú¾ رÛÛ’ او',
'editingsection' => '$1 دا Ø­ØµÛ Ù„Ú©Ú¾ رÛÛ’ او',
'editingcomment' => '$1 بدل ریاں (نواں پاسÛ)',
@@ -682,8 +713,8 @@ Custom .css تے .js pages use a lowercase title, e.g. {{ns:user}}:Foo/vector.cs
'titleprotectedwarning' => "'''خبردار: Ø§ÛŒÛ ØµÙÛ Ø¨Ú†Ø§ÛŒØ§ گیا اے[[خاص:ٹولی لسٹ حق|خاص حق]] دے بنان دی لوڑ اے.'''
تھلے نیڑے دی لاگ لکھت دتی Ú¯â€ÛŒ اے اتے پتے Ù„â€ÛŒ:",
'templatesused' => 'اس صÙØ­Û’ تے ورتے Ú¯Û“ {{PLURAL:$1|سانچے|سانچÛ}}:',
-'templatesusedpreview' => 'اس Ú©Ú†Û’ Ú©Ù… تے ورتے گئے {{PLURAL:$1|سانچے|سانچÛ}} :',
-'templatesusedsection' => 'اس ٹوٹے چ استعمال کیتے گۓ سچے:',
+'templatesusedpreview' => 'اس Ú©Ú†Û’ Ú©Ù… تے ورتے گئے {{انیک:$1|سانچے|سانچÛ}} :',
+'templatesusedsection' => '{{انیک:$1|سچÛ|سچے}} ایس ٹوٹے Ú† ورتے Ú¯Û“:',
'template-protected' => '(بچایا گیا)',
'template-semiprotected' => '(کج بچایا Ûویا)',
'hiddencategories' => 'اے صÙØ­Û {{PLURAL:$1|1 Ú†Ú¾Ù¾ÛŒ Ú¯Ù¹Ú¾|$1 Ú†Ù¾Ú¾ÛŒ گٹھیاں}} دا رکن اے:',
@@ -865,7 +896,9 @@ $1",
'revdelete-offender' => 'ریوین لکھاری',
# Suppression log
-'suppressionlog' => 'دبان لاگ',
+'suppressionlog' => 'دبان لاگ',
+'suppressionlogtext' => 'تھلے مٹان تے روکن دے Ú©Ù… دی لسٹ اے جیÛڑا مکھیاواں کولوں لکیا اے۔
+[[خاص:روک لسٹ|آئی Ù¾ÛŒ روک لسٹ]] ویکھو ÛÙ† دی اوپریشنل بنداں تے روکاں تے۔',
# History merging
'mergehistory' => 'رلے صÙÛ Ø±Ú©Ø§Ø±Úˆ',
@@ -942,7 +975,7 @@ $1",
'searchprofile-everything-tooltip' => 'سارا مواد لبو (Ú¯Ù„ بات والے صÙÛ’ ÙˆÛŒ)',
'searchprofile-advanced-tooltip' => 'کسٹم ناواں چ لبو',
'search-result-size' => '$1 ({{PLURAL:$2|1 Ù„Ùظ|$2 الÙاظ}})',
-'search-result-category-size' => '{{انیک:$1|1 سنگی|$1 سنگی}} ({{انیک:$2|1 نکیاں گٹھاں|$2 نکیاں گٹھاں}}, {{انیک:$3|1 Ùائل|$3 Ùائلاں}})',
+'search-result-category-size' => '{{PLURAL:$1|1 سنگی|$1 سنگی}} ({{PLURAL:$2|1 نکیاں گٹھاں|$2 نکیاں گٹھاں}}, {{PLURAL:$3|1 Ùائل|$3 Ùائلاں}})',
'search-result-score' => 'Ù…Ûاندرا: $1%',
'search-redirect' => '($1 ریڈائریکٹ)',
'search-section' => '($1 ٹوٹا)',
@@ -959,7 +992,7 @@ $1",
'searchall' => 'سارے',
'showingresults' => "تھلیوں دسے Ú¯Û“ {{انیک:$1|'''1''' نتیجÛ|'''$1''' نتیجے}} شروع #'''$2'''.",
'showingresultsnum' => "تھلے دسدا اے {{انیک:$3|'''1''' نتیجÛ|'''$3''' نتیجے}} #'''$2''' توں ٹرن والے۔",
-'showingresultsheader' => "{{انیک:$5|Ù†ØªÛŒØ¬Û '''$1''' دا '''$3'''|نتیجے '''$1 - $2''' دے '''$3'''}} لئی '''$4'''",
+'showingresultsheader' => "{{PLURAL:$5|Ù†ØªÛŒØ¬Û '''$1''' دا '''$3'''|نتیجے '''$1 - $2''' دے '''$3'''}} لئی '''$4'''",
'nonefound' => "'''صÙحیاں دے ناں ÚˆÛŒÙالٹ تے کھوجے جاندے نیں'''
اپنے Ù„Ùظ توں Ù¾Ûلاں ''all:'' لا Ú©Û’ کھوجو۔ اس نال گلاں باتاں آلے صÙØ­Û’ØŒ سچے ÙˆØºÛŒØ±Û Ø³Ø¨ Ú† تواڈا Ù„Ùظ کھوجیا جاۓ Ú¯Ù„Û”",
'search-nonefound' => 'سوال نال رلدے کوئی نتارے نئیں سن۔',
@@ -977,12 +1010,13 @@ $1",
اے Ú¯Ù„ یاد رکھنا جے انڈیکس {{SITENAME}} دے پرانے Ûون۔',
# Quickbar
-'qbsettings' => 'کوئکبار',
-'qbsettings-none' => 'کوئی نئیں',
-'qbsettings-fixedleft' => 'Ùکسڈ کھبے',
-'qbsettings-fixedright' => 'Ùکسڈ سجے',
-'qbsettings-floatingleft' => 'Ûلدا کھبے',
-'qbsettings-floatingright' => 'Ûلدا سجے',
+'qbsettings' => 'کوئکبار',
+'qbsettings-none' => 'کوئی نئیں',
+'qbsettings-fixedleft' => 'Ùکسڈ کھبے',
+'qbsettings-fixedright' => 'Ùکسڈ سجے',
+'qbsettings-floatingleft' => 'Ûلدا کھبے',
+'qbsettings-floatingright' => 'Ûلدا سجے',
+'qbsettings-directionality' => '!!!!Ùکسڈ، تھاڈی بولی تے لپی نال',
# Preferences page
'preferences' => 'تانگاں',
@@ -993,9 +1027,10 @@ $1",
'changepassword' => 'کنجی بدلو',
'prefs-skin' => 'Ú©Ú¾Ù„',
'skin-preview' => 'کچا کم',
-'prefs-math' => 'حساب کتاب',
'datedefault' => 'خاص پسند نئیں',
+'prefs-beta' => 'بیٹا Ùیچرز',
'prefs-datetime' => 'تاریخ تے ویلÛ',
+'prefs-labs' => 'لیبز Ùیچرز',
'prefs-personal' => 'ورتن آلے دا پروÙائل',
'prefs-rc' => 'نویاں تبدیلیاں',
'prefs-watchlist' => 'نظر تھلے صÙØ­Û’',
@@ -1028,6 +1063,7 @@ $1",
'savedprefs' => 'تواڈیاں تانگاں بچا لئیاں گئیاں نیں۔',
'timezonelegend' => 'ویلے دا علاقÛ',
'localtime' => 'مقامی ویلا:',
+'timezoneuseserverdefault' => 'ÙˆÚ©ÛŒ ÚˆÛŒÙالٹ ($1) ورتو۔',
'timezoneuseoffset' => 'دوجے (Ø¢Ùسٹ دسو)',
'timezoneoffset' => 'Ø¢Ùسیٹ:',
'servertime' => 'سرور دا ویلا:',
@@ -1080,6 +1116,9 @@ $1",
'email' => 'ای میل',
'prefs-help-realname' => 'اصل ناں تواڈی مرزی تے اے۔<br />
اگر تسی اینو دے دیو گۓ تے اے تواڈا کم اس ناں نال لکھیا جاۓ گا۔',
+'prefs-help-email' => 'ای-میل Ù¾ØªÛ Ø§ÙˆÙ¾Ø´Ù†Ù„ اے، پر کنجی ٹھیک کرن لئی ورتیا جاندا اے، کیا تسیں اپنی کنجی پعل جاؤگے۔',
+'prefs-help-email-others' => 'تسیں آپ Ú†Ù† سکدے او جے توانوں ملیا جاوے ای-میل توں تواڈے جوڑ توں تواڈے ورتن والے یا Ú¯Ù„ بات صÙÛ’ تے۔
+تواڈا ای-میل Ù¾ØªÛ Ù†Ø¦ÛŒÚº دسیا جاندا جدوں دوجے ورتن والے توانوں ملدے نیں۔',
'prefs-help-email-required' => 'ای میل Ù¾ØªÛ Ú†Ø§Ø¦ÛŒØ¯Ø§ اے۔',
'prefs-info' => 'مڈلی جانکاری',
'prefs-i18n' => 'انٹرنیشنلائزیشن',
@@ -1207,10 +1246,11 @@ $1",
'right-sendemail' => 'دوجے ورتن والیاں نوں ای-میل کرو',
# User rights log
-'rightslog' => 'ورتن والے دے حقاں دی لاگ',
-'rightslogtext' => 'ورتن حقاں چ تبدیلیاں دی اے لاگ اے۔',
-'rightslogentry' => 'ٹولی ممرشپ $1 لئی $2 توں $3 تک بدلو۔',
-'rightsnone' => '(کوئی وی نئیں)',
+'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' => 'اس صÙØ­Û’ نوں Ù¾Ú‘Ú¾Ùˆ',
@@ -1334,11 +1374,14 @@ $1",
'illegalfilename' => 'Ùائل ناں "$1" ÙˆÚ† کیریکٹر نیں جیÛÚ‘Û’ صÙÛ’ دے سرناویں لئی نئیں ورتے جاسکدے۔
Ù…Ûربانی کرکے Ùائل دا Ûور ناں رکھو تے اینون Ùیر چڑھاؤ۔',
'badfilename' => 'Ùائل ناں "$1" رکھ دتا گیا اے۔',
+'filetype-mime-mismatch' => 'Ùائل ایکسٹنشن ".$1" لبی Ûوئی مائم ٹائپ Ùائل ($2) نال میچ نئیں کر رئی۔',
'filetype-badmime' => 'مائم ٹائپ Ùائلز "$1" نوں خڑھان دی اجازت نئیں۔',
'filetype-bad-ie-mime' => 'ایس Ùائل نوں نئیں چڑھایا جاسکدا کیوں جے انٹرنیٹ ایکسپلورر نیں اینوں "$1" لئی کھوجیا اے،
جیدی اجازت نئیں تے Ø§ÛŒÛ ÙˆÚ†ÙˆÚº اک خراب Ùائل اے۔',
'filetype-unwanted-type' => "'''\".\$1\"''' اک نئیں چائیدی ٹائپ Ùائل اے۔
{{انیک:\$3|Ùائل ونڈ|Ùائل ونڈاں}} ودیا \$2Û”",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{انیک:$4|اینج دی Ùائل دی اجازت نئیں|اینج دیاں Ùائلاں دی اجازت نئیں}}
+اجازت دتی {{انیک:$3|Ùائل ٹائپ اے|Ùائل ٹائپ نیں}} 2$Û”',
'filetype-missing' => 'ایس Ùائل دی کوئی ایکسٹنشن نئیں (جیویں ".jpg")Û”',
'empty-file' => 'جیڑی Ùائل تسی دسی اے Ø§ÙˆÛ Ø­Ø§Ù„ÛŒ اے۔',
'file-too-large' => 'جیڑی Ùائل تسی دسی اے Ø§ÙˆÛ Ø¨ÙˆØª ÙˆÚˆÛŒ اے۔',
@@ -1356,6 +1399,7 @@ $1",
'emptyfile' => 'جیÛÚ‘ÛŒ Ùائل تساں چڑھائی اے خالی لکدی اے۔
اے Ûوسکدا اے Ùائل ناں Ú† کسے ٹائپو توں Ûووے۔
Ù…Ûربانی کرکے چیک کرو تسیں اصل Ú† ایس Ùائل نون چڑھاناں جاندے او؟',
+'windows-nonascii-filename' => 'اے ÙˆÚ©ÛŒ Ùائل ناں جناں Ú† کوئی خاص کیریکٹر Ûووے سپورٹ نئیں کردا۔',
'fileexists' => "اک Ùائل ایس ناں نال Ù¾ÛÙ„Û’ ای ÛÛ’ Ù…Ûربانی کرکے '''<tt>[[:$1]]</tt>''' ویکھو
اگر تھانوں یقین نئیں اگ تسیں اینون بدلنا چاندے اوÛÛ”
[[$1|thumb]]",
@@ -1396,6 +1440,8 @@ $1",
Ù…Ûربانی کرکے Ùائل چڑھان دی سیٹنک ویکھو۔',
'uploadscripted' => 'ایس Ùائل Ú† ایچ Ù¹ÛŒ ایم ایل یا سکرپٹ Ú©ÙˆÚˆ Ûیگا اے جینوں کسے ویب براؤزر Ù†Û’ غلط سمجیا Ûووے۔',
'uploadvirus' => 'اس Ùائل Ú† وائرس اے! تÙصیل: $1',
+'uploadjava' => 'Ø§ÛŒÛ Ùائل اک زپ Ùائل اے جیدے Ú† جاوا کلاس Ùائل اے۔
+جاوا Ùائلاں نوں چڑھان دی اجازت نئیں کیوں جے او بچاؤ ولاں توں بچ Ú©Û’ لنکدے نیں۔',
'upload-source' => 'سورس Ùائل',
'sourcefilename' => 'Ùائل دے ذریعے دا ناں:',
'sourceurl' => 'سورس یو آر ایل',
@@ -1427,6 +1473,24 @@ $1",
'upload-unknown-size' => 'انجان تاریخ',
'upload-http-error' => 'اک ایچ Ù¹ÛŒ Ù¹ÛŒ Ù¾ÛŒ غلطی Ûوئی:$1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'اک غلطی لبی زپ چیک لئی Ùائل کھولدیاں',
+'zip-wrong-format' => 'دسی گئی Ùائل زپ Ùائل نئین سی۔',
+'zip-bad' => 'قائل خراب اے یا Ùیر ناں Ù¾Ú‘Ú¾ÛŒ جان والی زپ Ùائل اے۔
+اے ٹھیک ول ناں سیکیورٹی لئی نئیں ویکھی جاےکدی۔',
+'zip-unsupported' => 'ÛŒÛ Ùائل اک زپ Ùائل اے جیدے Ú† ‌زپ Ùیچر نیں میڈیاوکی ولوں سÛارا ناں دتے Ú¯Û“Û”
+سیکیورٹی لئی اینوں ٹھیک چیک نئیں کیتا جاسکدا۔',
+
+# Special:UploadStash
+'uploadstash' => 'چڑھائیاں لکاؤ',
+'uploadstash-summary' => 'اے صÙÛ Ú†Ú‘Ú¾Ø§Ø¦ÛŒØ¢Úº Ùائلاۂ تک Ù„Û’ جاندا اے (یا چڑھان دے Ú©Ù… Ú† لگیا اے) پر Ûجے ÙˆÚ©ÛŒ تے نئیں چھپیا۔
+اے Ùائلاں کسے نوں نئیں دسدیاں پر اوس ورتن والے نوں جینے چڑھائیاں نیں۔',
+'uploadstash-clear' => 'لکائیاں Ùائلاں صا٠کرو۔',
+'uploadstash-nofiles' => 'تواڈے کول کوئی لکائیاں Ùائلاں نئیں۔',
+'uploadstash-badtoken' => 'اے Ú©Ù… نئیں Ûوسکیا، خورے تواڈے تبدیلی دے حق Ù…Ú© Ú¯Û“ نیں۔ Ùیر کوشش کرو۔',
+'uploadstash-errclear' => 'Ùائلاں نئیں مکایاں جاسکیاں۔',
+'uploadstash-refresh' => 'Ùائلاں دی لسٹ تازی کرو۔',
+
# img_auth script messages
'img-auth-accessdenied' => 'اپڑنن روک',
'img-auth-nopathinfo' => 'Ú¯Ù…ÛŒ Ø±Ø§Û Ø¨Ø§Ø±Û’ دس۔
@@ -1510,6 +1574,7 @@ $1",
اک خاص [[خاص:ایتھے Ú©ÛŒ جوڑ نیں/$2|پوری لسٹ]] Ûیگی اے۔',
'nolinkstoimage' => 'اس Ùائل نال جڑیا کوئی صÙØ­Û Ù†Ûیں۔',
'morelinkstoimage' => 'ایس Ùائل نوں [[خاص:Ú©ÛŒ جوڑ ایتھے/$1|Ûور جوڑ]] ویکھو',
+'linkstoimage-redirect' => '$1 (Ùائل ریڈائیدکٹ) $2',
'duplicatesoffile' => 'تھلے دتیاں گیاں {{انیک:$1Ùائل دوÛری اے|$1 Ùائلاں دوÛریاں نیں} ایس Ùائل دیاں ([[خاص:کاپی Ùائل کھوج/$2|Ûور گلاں]]) کاپی نیں۔',
'sharedupload' => 'اے Ùائل $1 Ù…Ø´ØªØ±Ú©Û Ø§Ù¾Ù„ÙˆÚˆ اے تے اے دوجے منصوبے ÙˆÛŒ استعمال کر سکدے Ù†Û’Û”',
'sharedupload-desc-there' => 'Ø§ÛŒÛ Ùائل $1 توں اے تے اینوں دوجے ویونت ÙˆÛŒ ورت سکدے نیں۔
@@ -1535,7 +1600,7 @@ $1",
# File deletion
'filedelete' => '$1 مٹاؤ',
'filedelete-legend' => 'Ùائل مٹاؤ',
-'filedelete-intro' => "تسی '''[[Media:$1|$1]]''' مٹا رۓ او۔",
+'filedelete-intro' => "تسی '''[[میڈیا:$1|$1]]''' مٹا رۓ او۔",
'filedelete-intro-old' => "تسیں '''[[Media:$1|$1]]''' دا ورین مٹا رۓ او [$4 $3, $2] توں۔",
'filedelete-comment' => 'وجÛ:',
'filedelete-submit' => 'مٹاؤ',
@@ -1604,13 +1669,14 @@ $1",
ایدے بجاۓ ایدا جوڑ کسے ٹھیک سرناویں نال جوڑو<br />
اک صÙÛ Ú¯Ù†Ø¬Ù„ کھول صÙÛ’ لئی منیا جائیگا اگر اے اک ٹمپلیٹ ورتدا جیدا جوڑ [[MediaWiki:Disambiguationspage]] نال Ûووے۔",
-'doubleredirects' => 'دوÛری ریڈیرکٹس',
-'doubleredirectstext' => 'ایس صÙÛ’ تے اوناں صÙیاں دی لسٹ اے جیÛÚ‘Û’ ریڈائرکٹ کردے نیں دوجے ریڈائرکٹ صÙیاں ول۔
+'doubleredirects' => 'دوÛری ریڈیرکٹس',
+'doubleredirectstext' => 'ایس صÙÛ’ تے اوناں صÙیاں دی لسٹ اے جیÛÚ‘Û’ ریڈائرکٹ کردے نیں دوجے ریڈائرکٹ صÙیاں ول۔
Ûر قطار Ú† جوڑ نیں Ù¾ÛÙ„Û’ تے دوجے ریڈائرکٹ نال ØŒ نال دوجے دیڑائرکٹ ول دا تارگٹ نیں جیÛڑا Ú©Û’ ٹھیک تارگٹ صÙÛ Ûوندا اے جیÛڑا Ú©Û Ù¾ÛÙ„Û’ ریڈائرکٹ نوں Ø§Ø´Ø§Ø±Û Ú©Ø±Ù†Ø§ چائیدا اے۔
<del>کراسڈ</del> اینٹریاں حل Ûوگیاں نیں۔',
-'double-redirect-fixed-move' => '[[$1]] نوں بدل دتا گیا اے۔
+'double-redirect-fixed-move' => '[[$1]] نوں بدل دتا گیا اے۔
اے ÛÙ† [[$2]] نوں ریڈائرکٹ اے۔',
-'double-redirect-fixer' => 'ریڈائرکٹ Ùکسر',
+'double-redirect-fixed-maintenance' => '[[$1]] توں [[$2]] تک دوÛرے ریڈائرکٹ ٹھیک کرنا۔',
+'double-redirect-fixer' => 'ریڈائرکٹ Ùکسر',
'brokenredirects' => 'ٹٹے ÛÙˆÛ“ ریڈائریکٹس',
'brokenredirectstext' => 'تھلے دتے Ú¯Û“ ریڈائریکس ناں Ûون والے صÙیاں نوں جڑدے نین:',
@@ -1687,6 +1753,7 @@ $1",
'pager-newer-n' => '{{PLURAL:$1|newer 1|Ø²ÛŒØ§Ø¯Û Ù†ÙˆØ§Úº $1}}',
'pager-older-n' => '{{PLURAL:$1|older 1|Ø²ÛŒØ§Ø¯Û Ù¾Ø±Ø§Ù†Ø§ $1}}',
'suppress' => 'چھڈیا گیا',
+'querypage-disabled' => 'اے صÙÛ Ù†Ø§Ú©Ø§Ø±Û Ú©ÛŒØªØ§ گیا پرÙارمنس ÙˆØ¬Û ØªÙˆÚºÛ”',
# Book sources
'booksources' => 'Ø­ÙˆØ§Ù„Û Ú©ØªØ§Ø¨',
@@ -1738,7 +1805,7 @@ $1",
'sp-deletedcontributions-contribs' => ' Ú©Ù…',
# Special:LinkSearch
-'linksearch' => 'باÛر دے جوڑ',
+'linksearch' => 'باÛر دے جوڑ دی کھوج',
'linksearch-pat' => 'کھوج راÛ:',
'linksearch-ns' => 'ناں دی جگÛ:',
'linksearch-ok' => 'کھوج',
@@ -1804,6 +1871,10 @@ $1",
'noemailtext' => 'ایس ورتن والے نیں کوئی پکا ای-میل Ù¾ØªÛ Ù†Ø¦ÛŒÚº دسیا۔',
'nowikiemailtitle' => 'ای-میل اجازت نئیں۔',
'nowikiemailtext' => 'ایس ورتن والے نیں دوجے ورتن والیاں کولوں ای-میل لین دا نئیں کیا۔',
+'emailnotarget' => 'لین والے ۂئی ناں Ûون والا ورتن ناں۔',
+'emailtarget' => 'لین والے دا ورتن ناں لکھو',
+'emailusername' => 'ورتن آلے دا ناں:',
+'emailusernamesubmit' => 'پیجو',
'email-legend' => 'دوجے ورتن والے نوں {{سائٹ ناں}} ای-میل پیجو',
'emailfrom' => 'توں:',
'emailto' => 'نوں:',
@@ -1828,10 +1899,10 @@ $1",
'watchlistanontext' => 'Ù…Ûربانی کرکے $1 نوں ویکھو یا اپنی اکھ تھلے رکھی لسٹ نوں بدلو۔',
'watchnologin' => 'لاگ ان نئیں ÛÙˆÛ“ او',
'watchnologintext' => 'توانوں لازمی [[خاص:ورتنلاگان|لاگان]] Ûونا پووے گا اپنی اکھ تھلے رکھی لسٹ نوں بدلن لئی۔',
-'addedwatch' => 'اکھ تھلے آگیا',
+'addwatch' => 'اکھ تھلے کرو',
'addedwatchtext' => 'اے صÙØ­Û "[[:$1]] تواڈیاں اکھاں تھلے آگیا اے۔<br />
مستقبل ÙˆÚ† اس صÙØ­Û ØªÛ’ ایدے بارے Ú† Ú¯Ù„ بات نویاں تبدیلیاں ÙˆÚ† موٹے نظر آن Ú¯Û’ تا Ú©Û Ø¢Ø³Ø§Ù†ÛŒ نال کھوجیا جا سکے۔',
-'removedwatch' => 'اکھ تھلیوں Ûٹا لیا گیا',
+'removewatch' => 'اکھ تھلیوں Ûٹاؤ',
'removedwatchtext' => 'Ø§ÛŒÛ ØµÙØ­Û "[[:$1]]" [[خاص:اکھ تھلے رکھی لسٹ|تÛاڈی اکھ ]]تھلوں Ûٹا لیتا گیا اے۔',
'watch' => 'نظر رکھو',
'watchthispage' => 'اس صÙØ­Û’ تے اکھ رکھو',
@@ -1852,8 +1923,9 @@ $1",
'watchlist-options' => 'نظر تھلے رکھن دیاں راÛواں',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'نظر تھلے۔۔۔۔',
-'unwatching' => 'نظروں اولے',
+'watching' => 'نظر تھلے۔۔۔۔',
+'unwatching' => 'نظروں اولے',
+'watcherrortext' => '"$1" دی سیٹنگ بد دیاں اک غلطی Ûوئی جے',
'enotif_mailer' => '{{سائٹ ناں}} نوٹینیکیشن میلر',
'enotif_reset' => 'سارے ویکھے Ú¯Û“ صÙحیاں تے نشان لاؤ',
@@ -1865,6 +1937,38 @@ $1",
'enotif_lastvisited' => '$1 تبدیلیاں ویکھو اپنے آخری واری آن مکروں',
'enotif_lastdiff' => '$1 ویکھو ایس تبدیلی نون ویکھن لئی۔',
'enotif_anon_editor' => 'گم نام ورتن آلا $1',
+'enotif_body' => ' $پیارے ورتن والے,
+
+
+The {{SITENAME}} page $PAGETITLE has been $CHANGEDORCREATED on $PAGEEDITDATE by $PAGEEDITOR, see $PAGETITLE_URL for the current revision.
+{{سائیٹناں}} صÙÛ $صÙÛ Ø³Ø±Ù†Ø§ÙˆØ§Úº نوں $بدلیابنادتاگیا جے $صÙÛتبدیلیتریخ نوں $صÙÛ Ù„Ú©Ú¾Ø§Ø±ÛŒ Ù†Û’ØŒ $صÙÛسرÙاواں_یو آر ایل ویکھو ÛÙ† دی ریوین لئی۔
+$نواںصÙÛ$
+
+لکھاری سمری: $صÙÛ Ø³Ù…Ø±ÛŒ $نکیصÙÛتبدیلی
+
+
+
+لکھن والے نوں لکھو:
+mail: $صÙÛلکھاری_ایمیل
+ÙˆÚ©ÛŒ: $صÙÛلکھاری_ÙˆÚ©ÛŒ
+
+Ûور گلاں ایس بارے نئیں دسیاں جان گیاں جد تک تسین ایتھے Ùیر نئیں آندے.
+تسیں Ùیر سیٹ کرسکدے اپنے اپنے سارے ویکھے صÙیاں لئی اپنی اکھ تھلے رکھی لسٹ Ú†Û”
+ تواڈا {{سائیٹناں}} بیلی نوٹیÙیکیشن پربندھ
+
+--
+اپنی ای-میل نوٹیÙیکیشن سیٹنگ ویکھن لئی، تھلے دسے Ú¯Û’ پتے تے جاؤ
+{{canonicalurl:{{#خاص:تانگاں}}}}
+
+اپنی اکھتھلے رکھی لسٹ چ تبدیلی لئی ویکھو
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+
+اپنی اکھ تھلے رکھی لسٹ Ú†ÙˆÚº صÙÛ’ نوں مٹان لئی
+$UNWATCHURL
+
+Ùیڈبیک تے Ûور مدد لئی:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'صÙØ­Û Ù…Ù¹Ø§Ø¤',
@@ -1875,12 +1979,12 @@ $1",
'exblank' => 'صÙØ­Û Ø®Ø§Ù„ÛŒ سی',
'delete-confirm' => '"$1" مٹاؤ',
'delete-legend' => 'مٹاؤ',
-'historywarning' => 'خوشیار: او صÙØ­Û Ø¬Ø³ نوں تسی مٹانے Ù„Ú¯Û’ او دا ریکارڈ موجود اے۔',
+'historywarning' => 'Ûوشیار: او صÙØ­Û Ø¬Ø³ نوں تسی مٹانے Ù„Ú¯Û’ او دی $1 {{انیک:$1|ریوین|ریویناں}}: دا ریکارڈ موجود اے۔',
'confirmdeletetext' => 'تسی اک صÙØ­Û Ø§Ø³Ø¯ÛŒ تاریخ دے نال مٹان Ù„Ú¯Û’ او۔
کیا تسی اے ای کرنا چاÛندے او کیا تسی اس دے نتیجے نوں جاندے او Ú©Û ØªØ³ÛŒ اے Ú©Ù… [[{{MediaWiki:Policy-url}}|پالیسی]] دے مطابق کر رÛÛ’ او۔',
'actioncomplete' => 'Ú©Ù… Ûوگیا',
'actionfailed' => 'Ú©Ù… ناں Ûویا',
-'deletedtext' => '"<nowiki>$1</nowiki>" مٹایا جا چکیا اے۔<br />
+'deletedtext' => '"$1" مٹایا جا چکیا اے۔<br />
نیڑے نیڑے مٹاۓ گۓ ریکارڈ نوں دیکن آسطے $2 ایتھے چلو۔',
'deletedarticle' => '"[[$1]]" مٹا دتا گیا',
'suppressedarticle' => '"[[$1]]" روک دتا۔',
@@ -1941,7 +2045,7 @@ $2 نے آخری ریوین تک واپس کیتا۔',
'protect_expiry_invalid' => 'اکسپائری ٹیم غلط اے۔',
'protect_expiry_old' => 'ایدا اکسپائری ٹائم گزر چکیا اے۔',
'protect-unchain-permissions' => 'Ûور بچت چنوتیاں کھولو',
-'protect-text' => "تسی اس صÙØ­Û’ دے Ø­Ùاظتی درجے نوں تک تے تبدیل کر سکدے او'''<nowiki>$1</nowiki>'''.",
+'protect-text' => "تسی اس صÙØ­Û’ دے Ø­Ùاظتی درجے نوں تک تے تبدیل کر سکدے او'''$1'''.",
'protect-locked-blocked' => "جدوں تھواڈے تے روک Ûووے تے تے تسیں بچاؤ پڈھر نئیں بدل سکدے۔
اے ÙˆÛ’ ÛÙ† دی سیٹنگ '''$1''' صÙÛ Ù„Ø¦ÛŒÛ”",
'protect-locked-dblock' => "اک ایکٹو ڈیٹا بیس تالے باجوں بچاؤ پدھر نوں بدلیا نئیں جاسکدا۔
@@ -1997,6 +2101,8 @@ $2 نے آخری ریوین تک واپس کیتا۔',
'undeletepagetext' => 'تھلے دتے Ú¯Û“ {{انیک:$1|صÙÛ Ù…Ù¹Ø§ دتا گیا اے پر|$1 صÙÛ’ مٹا دتے Ú¯Û“ نیں پر}} ÛÙ„Û’ ÙˆÛŒ آرکائیو ج نیں تے والس لیاۓ جاسکدے نیں۔
آرکئیو نوں صا٠کیتا جاسکدا اے۔',
'undelete-fieldset-title' => 'ریویین واپس',
+'undeleteextrahelp' => "صÙÛ’ دی ساری تریخ واپس لیاں لئی سارے چیکبوکسز دے ٹھیک مٹادیو تے '''''{{int:undeletebtn}}''''' تے Ú©Ù„Ú© کرو
+چونویں واپسی کرن لئی اوناں ڈبیاں نوں کلک کرو جناں نال جڑیاں ریویناں نوں واپس کرنا اے تے '''''{{int:undeletebtn}}''''' تے کلک کرو۔",
'undeleterevisions' => '$1 {{انیک:$1|ریوین|ریویناں}} آرکائیو چ',
'undeletehistory' => 'اگر تسیں صÙÛ ÙˆØ§Ù¾Ø³ کردے او، ساریاں ریویناں رکارڈ Ú† واپس Ûوجان گیاں۔
اگر اک نواں صÙÛ Ø§ÙˆØ³Û’ ناں نال مٹان دے مگروں، واپس کیتیاں ریویناں Ù¾ÛÙ„Û’ رکارڈ Ú† دسن گیاں۔',
@@ -2041,9 +2147,12 @@ $1',
'undelete-show-file-submit' => 'Ûاں جی',
# Namespace form on various pages
-'namespace' => 'ناں دی جگÛ:',
-'invert' => 'وچوں چناؤ',
-'blanknamespace' => '(خاص)',
+'namespace' => 'ناں دی جگÛ:',
+'invert' => 'وچوں چناؤ',
+'tooltip-invert' => 'ایس ڈبے نوں ویکھو تبدیلیاں چھپان لئی چونویں ناںتھاں تے (تے رلدے ناںتھاں اگر چیک کیتے جان)',
+'namespace_association' => 'رلدے ناں تھاں',
+'tooltip-namespace_association' => 'ایس ڈبے نون وی ویکھو گل بات یا ناںتھاں چونویں ناںتھاں نال رلدا۔',
+'blanknamespace' => '(خاص)',
# Contributions
'contributions' => 'ورتن آلے دا حصÛ',
@@ -2093,12 +2202,14 @@ $1',
'whatlinkshere-filters' => 'نتارے',
# Block/unblock
+'autoblockid' => 'اپنے آپ روک #$1',
+'block' => 'ورتن آلے نوں روکو',
+'unblock' => 'ورتن آلے تے روک بند کرو',
'blockip' => 'اس ورتن والے نو روکو',
'blockip-title' => 'ورتن آلے نوں روکو',
'blockip-legend' => 'ورتن آلے نوں روکو',
'blockiptext' => 'تھلے دتا گیا Ùارم ورتو کسے خاص آئی Ù¾ÛŒ پتے یا ورتن ناں نوں Ù„Ú©Ú¾Ù† روک لئی۔ Ø§ÛŒÛ ØµØ±Ù ÙˆÙ†ÚˆØ§Ù„Ø²Ù… توں بچن لئی اے، تے [[{{میڈیاوکیپولیسی:پولیسی-یوآر ایل}}|پولیسی]] دے نال اے۔
تھلے خاص وجÛاں دسو (ادھارن لئی خاص صÙیاں دی دس دیو جیÛÚ‘Û’ خراب کیتے Ú¯Û“Û”)',
-'ipaddress' => 'آئی Ù¾ÛŒ پتÛ:',
'ipadressorusername' => 'آئی Ù¾ÛŒ Ù¾ØªÛ ÛŒØ§ ورتن آلے دا ناں:',
'ipbexpiry' => 'انت:',
'ipbreason' => 'وجÛ:',
@@ -2111,7 +2222,7 @@ $1',
** دوجیاں نوں ڈرانا
** کھاتیاں نوں خراب کرنا
** ناں منیا جان والا ورتن ناں ورتنا',
-'ipbanononly' => 'انجان ورتن آلیاں نوں روکو',
+'ipb-hardblock' => 'لاگ ان Ûووے ورتن والیاں نوں ایس آئی Ù¾ÛŒ پتے نوں ورتن توں روکو',
'ipbcreateaccount' => 'Ú©Ú¾Ø§ØªÛ Ú©Ú¾ÙˆÙ„Ù†Ø§ روکو',
'ipbemailban' => 'ورتن آلے نوں ای میل پیجن توں روکو',
'ipbenableautoblock' => 'اپنے آپ ای ایس ورتن والے Ù†Û’ جیÛڑا آخری آئی Ù¾ÛŒ Ù¾ØªÛ ÙˆØ±ØªÛŒØ§ اے اونوں روکو، تے کوئی ÙˆÛŒ Ùیر ورتے جان والے آئی Ù¾ÛŒ پتے۔',
@@ -2122,9 +2233,15 @@ $1',
'ipbotherreason' => 'دوجیاں Ûور وجÛ:',
'ipbhidename' => 'ورتن ناں نوں تبدیلیاں تے لسٹاں توں بچاؤ',
'ipbwatchuser' => 'ایس ورتن والے دے ورتن تے Ú¯Ù„ بات صÙÛ’ تے اکھ رکھو۔',
+'ipb-disableusertalk' => 'ایس ورتن والے نوں جدوں تک ایدے تے روک اے اپنے گلبات صÙÛ’ Ú† تبدیلی کرن توں روکو',
'ipb-change-block' => 'ایناں تبدیلیاں نال ایس ورتن والے نوں Ùیر روکو',
+'ipb-confirm' => 'روک پکی کرو',
'badipaddress' => 'آئی Ù¾ÛŒ Ù¾ØªÛ Ù¹Ú¾ÛŒÚ© نئیں',
'blockipsuccesssub' => 'روک کامیاب',
+'blockipsuccesstext' => '[[خاص:کم/$1|$1]] روک دتے گۓ نیں.<br />
+ویکھو [[خاص:روک لسٹ|آئی پی روک لسٹ]] روکاں ویکھن لئی۔.',
+'ipb-blockingself' => 'تسیں اپنے آپ تے آپ روک لان والے او! توانوں یقین اے جے تسیں Ø§ÛŒÛ Ú©Ø±Ù†Ø§ جاندے او؟',
+'ipb-confirmhideuser' => "تسیں اک ورتن والے تے روک لان Ù„Ú¯Û’ 'لکیا ورتن والا' نال۔ Ø§ÛŒÛ Ø§ÛŒØ³ ورتن والے دا ناں ساریاں لسٹاں تے لاگاں Ú†ÙˆÚº دبالوے گا۔ کیا توانوں یقین اے جے تسیں ایÛÙˆ ای کرنا چاندے او۔",
'ipb-edit-dropdown' => 'روک دی ÙˆØ¬Û ØªØ¨Ø¯ÛŒÙ„ کرو',
'ipb-unblock-addr' => '$1 توں روک Ûٹاؤ',
'ipb-unblock' => 'ورتن والا یا آئی Ù¾ÛŒ Ù¾ØªÛ Ú©Ú¾ÙˆÙ„Ùˆ',
@@ -2134,10 +2251,20 @@ $1',
'unblockiptext' => 'تھلے دتا گیا Ùارم ورتو Ù„Ú©Ú¾Ù† دی ازادی لین لئی Ù¾Ûلاں توں روکے آئی Ù¾ÛŒ پتے یا ورتن ناں لئی۔',
'ipusubmit' => 'ایس روک نوں Ûٹاؤ',
'unblocked' => '[[ورتن والے:$1|$1]] توں روک Ûٹا دتی گئی۔',
+'unblocked-range' => '$1 توں روک Ûٹا دتی گئی اے',
'unblocked-id' => 'روک $1 Ûٹادتی گئی اے۔',
+'blocklist' => 'روکے گۓ ورتن والے',
'ipblocklist' => 'بند کیتے گۓ آئی پی پتے تے ورتن والیاں دے ناں',
'ipblocklist-legend' => 'روکیا گیا ورتن والا لبو',
-'ipblocklist-username' => 'ورتن آلے دا ناں یا آئی Ù¾ÛŒ پتÛ:',
+'blocklist-userblocks' => 'روکے کۓ کھاتے لکاؤ',
+'blocklist-tempblocks' => 'تھوڑے چر لئی روکے گۓ لکاؤ',
+'blocklist-addressblocks' => 'کلے آئی پی بلاکس لکاؤ',
+'blocklist-timestamp' => 'ویلے دی Ù…Ûر',
+'blocklist-target' => 'تارگٹ',
+'blocklist-expiry' => 'انت Ûوندا اے:',
+'blocklist-by' => 'روکن ایڈمن',
+'blocklist-params' => 'روک ولگن',
+'blocklist-reason' => 'وجÛ:',
'ipblocklist-submit' => 'کھوجو',
'ipblocklist-localblock' => 'لوکل روک',
'ipblocklist-otherblocks' => 'دوجیاں روکاں',
@@ -2162,6 +2289,10 @@ $1',
روک لاگ تھلے ویکھن لئی دتی گئی اے۔',
'blocklogentry' => 'روک دتا گیا تے اے رکاوٹ دا ویلا $2 $3 مک جاۓ گا [[$1]]',
'reblock-logentry' => 'روک سیٹنگ [[$1]] لئی بدل دتی گئی اے جیدا Ù…Ú©Ù† ÙˆÛŒÙ„Û $2 $3 اے۔',
+'blocklogtext' => 'اے کماں نوں روکن یا کھولن دا ورتن لاگ اے۔ اپنے آپ روکے گۓ آئی پی پتے لسٹ چ نئیں۔
+
+[[خاص:روک لسٹ|آئی Ù¾ÛŒ روک لسٹ]] ویکھو ÛÙ† دے روکے Ú¯Û“ یا بند کیتے پتیاں دی لسٹ لئی۔
+[[خاص:روکلسٹ|آئی Ù¾ÛŒ روک لسٹ]] دی لسٹ ویکھو ÛÙ† دے روکے Ú¯Û“ ورتن والیاں دی',
'unblocklogentry' => '$1 توں روک Ûٹا لئی گئی اے',
'block-log-flags-anononly' => 'گم نام ورتن آلا',
'block-log-flags-nocreate' => 'کھاتا کھولنے تے پابندی اے',
@@ -2175,7 +2306,9 @@ $1',
'ipb_expiry_temp' => 'Ù„Ú©Û’ ورتن والے تے روک Ù¾Ú©ÛŒ Ûونی چائیدی اے۔',
'ipb_hide_invalid' => 'ایس کھاتے نوں نئیں روکیا جاسکیا، ایدے Ú† کئی تبدیلیاں Ûوسکدیاں نئیں',
'ipb_already_blocked' => '"$1" Ù¾Ûلاں توں ÛÛŒ روکیا Ûویا اے۔',
+'ipb-needreblock' => '$1 Ù¾ÛÙ„Û’ ای روکیا Ûویا اے۔ تسیں سیٹنک بدلنا چاندے او۔',
'ipb-otherblocks-header' => 'دوجیاں {{انیک:$1|روک|روکاں}}',
+'unblock-hideuser' => 'تسین ایس ورتن والے تے لگی روک نئیں کھول سکدے ایدا ورتن ناں لکیا اے۔',
'ipb_cant_unblock' => 'غلطی: روکی آئی ÚˆÛŒ $1 نئیں لبی۔ ایدی روک Ù¾ÛÙ„Û’ ای کھول دتی گئی Ûووے۔',
'ipb_blocked_as_range' => 'غلطی: آئی Ù¾ÛŒ Ù¾ØªÛ $1 سدا نئیں روکیا گیا تے اینج نئیں کھولیا جاسکدا۔
اینوں $2 دی رینج چ روکیا گیا، جینوں کھولیا جاسکدا اے۔',
@@ -2216,6 +2349,7 @@ $1',
'lockfilenotwritable' => 'ڈیٹابیس Ùائل تے لکھت نئیں Ûوسکدی۔
ڈیٹابیس نوں کھولنا یا تالا لانا اے ویب سرور دی لکھت دی لوڑ اے۔',
'databasenotlocked' => 'ڈیٹابیس تے تالا نئیں لگیا۔',
+'lockedbyandtime' => '(توں {{جنس:$1|$1}} نوں $2 وجے $3)',
# Move page
'move-page' => '$1 لے چلو',
@@ -2330,7 +2464,7 @@ $1',
'allmessagesdefault' => 'ÚˆÛŒÙالٹ لکھائی',
'allmessagescurrent' => 'Ù…ÙˆØ¬ÙˆØ¯Û Ù„Ú©Ú¾Ø§Ø¦ÛŒ',
'allmessagestext' => 'Ø§ÛŒÛ Ù„Ø³Ù¹ اے پربندھ سنیعیاں دی جیÛÚ‘Û’ میڈیاوکی دی ناں تھاں تے Ûیگے نیں۔
-Ù…Ûربانی کرکے [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] تے [http://translatewiki.net translatewiki.net] تے جاؤ۔
+Ù…Ûربانی کرکے [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] تے [//translatewiki.net translatewiki.net] تے جاؤ۔
اگر تسیں میڈیا وکی دے بولی وٹاندرے چ کم کرنا چاندے او۔',
'allmessagesnotsupportedDB' => "اے صÙÛ Ù†Ø¦ÛŒÚº ورتیا جاسکدا کیوں جے '''\$wgUseDatabaseMessages''' روک دتا گیا اے۔",
'allmessages-filter-legend' => 'Ùلٹر',
@@ -2499,13 +2633,17 @@ $1',
'spam_blanking' => 'سارے ریوین جناں چ $1 نوں جوڑ نیں، طا٠کیتا جاریا اے۔',
# Info page
-'infosubtitle' => 'صÙØ­Û’ آسطے معلومات',
-'numedits' => 'لکھائی دی گنتی (صÙØ­Û): $1',
-'numwatchers' => 'ویکھنے آلیاں دی گنتی: $1',
-
-# Math errors
-'math_unknown_error' => 'انجان مسئلÛ',
-'math_unknown_function' => 'انجان کم',
+'pageinfo-title' => '"$1" لئی جانکاری',
+'pageinfo-header-edits' => 'تبدیلیاں',
+'pageinfo-header-watchlist' => 'اکھ تھلے رکھی لسٹ',
+'pageinfo-header-views' => 'وکھالے',
+'pageinfo-subjectpage' => 'صÙÛ',
+'pageinfo-talkpage' => 'Ú¯Ù„ بات صÙÛ',
+'pageinfo-watchers' => 'ویکھن والے',
+'pageinfo-edits' => 'تبدیلیاں گنتی',
+'pageinfo-authors' => 'وکھرے لکھاریاں دی گنتی',
+'pageinfo-views' => 'را‎ ۓ گنتی',
+'pageinfo-viewsperedit' => 'تبدیلی سعاب نال وکھالے',
# Patrolling
'markaspatrolleddiff' => 'ویکھے گۓ دا نشان لاؤ',
@@ -2548,10 +2686,11 @@ $1',
'widthheightpage' => '$1×$2, $3 {{انیک:$3|صÙÛ|ÙˆÙÛ’}}',
'file-info' => 'Ùائل ناپ: $1ØŒ MIME ٹائپ: $2',
'file-info-size' => 'پکسل:$1 × $2, Ùائل سائز: $3, مائم ٹائپ: $4',
+'file-info-size-pages' => '$1 × $2 پکسل, Ùائل ناپ: $3, مائم ٹائپ: $4, $5 {{انیک:$5|صÙÛ|صÙÛ’}}',
'file-nohires' => '<small>اس توں ÙˆÚˆÛŒ Ùوٹو موجود Ù†Ûیں۔</small>',
'svg-long-desc' => 'ایس ÙˆÛŒ جی Ùائل، پکسل:$1 × $2ØŒ Ùائل سائز: $3',
'show-big-image' => 'وڈی مورت',
-'show-big-image-thumb' => '<small>کچے کم دے پکسل:$1 × $2</small>',
+'show-big-image-size' => '$1 × $2 پکسلز',
'file-info-gif-looped' => 'لوپڈ',
'file-info-gif-frames' => '$1 {{انیک:$1|Ùریم|Ùریمز}}',
'file-info-png-looped' => 'لوپڈ',
@@ -2588,7 +2727,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'چوڑائی',
@@ -2703,10 +2848,79 @@ $1',
'exif-gpsareainformation' => 'جی پی ایس علاقے دا ناں',
'exif-gpsdatestamp' => 'جی پی ایس تریخ',
'exif-gpsdifferential' => 'جی Ù¾ÛŒ ایس ÚˆÙرینشیل کوریکشن',
+'exif-jpegfilecomment' => 'جے پی ای جی شائل کومنٹ',
+'exif-keywords' => 'خاص شبد',
+'exif-worldregioncreated' => 'دنیا دی تھاں جتھے اے مورت لئی گئی',
+'exif-countrycreated' => 'دیس جتھے اے مورت بنائی کئی',
+'exif-countrycodecreated' => 'دیس دا کوڈ جتھے اے مورت بنائی کئی',
+'exif-provinceorstatecreated' => 'ØµÙˆØ¨Û Ø¬ØªÚ¾Û’ اے مورت بنائی گئی',
+'exif-citycreated' => 'Ø´Ûر جتھے اے مورت بنائی کئی',
+'exif-sublocationcreated' => 'Ø´Ûر دی Ø§ÙˆÛ ØªÚ¾Ø§Úº جتھے اے مورت بنائی کئی',
+'exif-worldregiondest' => 'دنیا دے تھاں',
+'exif-countrydest' => 'دیس',
+'exif-countrycodedest' => 'دیس دا کوڈ دتا گیا اے',
+'exif-provinceorstatedest' => 'ØµÙˆØ¨Û Ø¯Ø³ÛŒØ§ گیا اے',
+'exif-citydest' => 'Ø´Ûر دےیا گیا اے۔',
+'exif-sublocationdest' => 'Ø´Ûر دی تھاں دسی گئی اے۔',
'exif-objectname' => 'نکی سرخی',
+'exif-specialinstructions' => 'خاص دساں',
+'exif-headline' => 'سرخی',
+'exif-credit' => 'کریڈٹ/دین والا',
+'exif-source' => 'سورس',
+'exif-editstatus' => 'مورت دا ایڈیٹوریل سٹیٹس',
+'exif-urgency' => 'جلدی',
+'exif-fixtureidentifier' => 'Ùکسچر ناں',
+'exif-locationdest' => 'تھاں بارے',
+'exif-locationdestcode' => 'تھاں کوڈ دتا گیا اے',
+'exif-objectcycle' => 'دن دا ÙˆÛŒÙ„Û Ø¬Ø³ لئی اے میڈیا بنایا گیا اے',
+'exif-contact' => 'پتÛ',
+'exif-writer' => 'لکھاری',
+'exif-languagecode' => 'بولی',
+'exif-iimversion' => 'آئی آئی ایم ورین',
+'exif-iimcategory' => 'Ú¯Ù¹Ú¾',
+'exif-iimsupplementalcategory' => 'Ûور گٹھاں',
+'exif-datetimeexpires' => 'ایس دے مگروں ناں ورتو',
+'exif-datetimereleased' => 'بنی',
+'exif-originaltransmissionref' => 'اصل ٹرن والی تھاں دا کوڈ',
+'exif-identifier' => 'لبن والا',
+'exif-lens' => 'لینز ورتے گۓ',
+'exif-serialnumber' => 'Ú©ÛŒÙ…Ø±Û Ù†Ù…Ø¨Ø±',
+'exif-cameraownername' => 'کیمرے دا مالک',
+'exif-label' => 'لیبل',
+'exif-datetimemetadata' => 'تریخ جدون میٹاڈیٹا بدلے گۓ۔',
+'exif-nickname' => 'مورت دا انÙورمل ناں',
+'exif-rating' => 'سعاب (5 چوں)',
+'exif-rightscertificate' => 'حق دے سعاب کتاب دا سرٹیÙیکیٹ',
+'exif-copyrighted' => 'کاپی رائٹ سٹیٹس',
+'exif-copyrightowner' => 'کاپی رائٹ مالک',
+'exif-usageterms' => 'ورتن شرطاں',
+'exif-webstatement' => 'اونلائن کاپی رائٹ لکھت',
+'exif-originaldocumentid' => 'اصل کاغذ دی خاص نشانی',
+'exif-licenseurl' => 'کاپی رائٹ لاغسنس لئی یوآرایل',
+'exif-morepermissionsurl' => 'لائسنس دی Ûور جانکاری',
+'exif-attributionurl' => 'جدون Ø¯ÙˆØ¨Ø§Ø±Û ÙˆØ±ØªÙˆ تے جوڑ دیو',
+'exif-preferredattributionname' => 'جدوں Ø¯ÙˆØ¨Ø§Ø±Û ÙˆØ±ØªÙˆ تے بنان والے دا ناں ÙˆÛŒ دسو',
+'exif-pngfilecomment' => 'Ù¾ÛŒ این جی Ùائل کومنٹ',
+'exif-disclaimer' => 'منکرنا',
+'exif-contentwarning' => 'لکھت توں خبردار',
+'exif-giffilecomment' => 'جی آئی ای٠شائل کومنٹ',
+'exif-intellectualgenre' => 'آئیٹم ٹائپ',
+'exif-subjectnewscode' => 'سبجیکٹ کوڈ',
+'exif-scenecode' => 'آئی پی ٹی سی سین کوڈ',
+'exif-event' => 'Ûوند دسی گئی۔',
+'exif-organisationinimage' => 'آرگنائزیشن دسی گئی',
+'exif-personinimage' => 'Ø¨Ù†Ø¯Û Ø¯Ø³ÛŒØ§ گیا',
+'exif-originalimageheight' => 'مورت دی اچائی کٹن توں Ù¾ÛÙ„Û’',
+'exif-originalimagewidth' => 'مورت دی چوڑائی کٹن توں Ù¾ÛÙ„Û’',
# EXIF attributes
'exif-compression-1' => 'کھولی گئی',
+'exif-compression-2' => 'سی سی آئی Ù¹ÛŒ Ù¹ÛŒ گروپ 3 1-ڈائمینشنل موڈیÙائیڈ ÛÙمین رن ÙÙ„ لنتھ انکوڈنگ',
+'exif-compression-3' => 'سی سی آئی Ù¹ÛŒ Ù¹ÛŒ گروپ 3 Ùیکس اینکوڈنگ',
+'exif-compression-4' => 'سی سی آئی Ù¹ÛŒ Ù¹ÛŒ گروپ 4 Ùیکس اینکوڈنگ',
+
+'exif-copyrighted-true' => 'حق بچاۓ',
+'exif-copyrighted-false' => 'لوکاں کول',
'exif-unknowndate' => 'انجان تاریخ',
@@ -2722,6 +2936,8 @@ $1',
'exif-planarconfiguration-1' => 'Ú†Ù†Ú©ÛŒ Ùارمیٹ',
'exif-planarconfiguration-2' => 'پلانر Ùارمیٹ',
+'exif-colorspace-65535' => 'ناں ناپیا گیا',
+
'exif-componentsconfiguration-0' => 'ÛÛ’ نئیں',
'exif-exposureprogram-0' => 'بیان نئیں کیتا گیا',
@@ -2835,6 +3051,10 @@ $1',
'exif-gpslongitude-e' => 'چڑھدا لونگیچیوڈ',
'exif-gpslongitude-w' => 'لیندا لونگیچیوڈ',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{انیک:$1|میٹر}} سمندر پدھر',
+'exif-gpsaltitude-below-sealevel' => '$1 {{انیک:$1|میٹر}} پدھر توں تھلے',
+
'exif-gpsstatus-a' => 'ناپیا جاریا',
'exif-gpsstatus-v' => 'ناپ انٹراوپریٹبلٹی',
@@ -2846,21 +3066,73 @@ $1',
'exif-gpsspeed-m' => 'میل ÙÛŒ کینٹÛ',
'exif-gpsspeed-n' => 'ناٹ',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'کلومیٹر',
+'exif-gpsdestdistance-m' => 'میل',
+'exif-gpsdestdistance-n' => 'سمندری میل',
+
+'exif-gpsdop-excellent' => 'شاندار ($1)',
+'exif-gpsdop-good' => 'اچھا ($1)',
+'exif-gpsdop-moderate' => 'Ø¯Ø±Ù…ÛŒØ§Ù†Û ($1)',
+'exif-gpsdop-fair' => 'سوÛنا ($1)',
+'exif-gpsdop-poor' => 'ماڑا ($1)',
+
+'exif-objectcycle-a' => 'صر٠سویرے',
+'exif-objectcycle-p' => 'صر٠شام',
+'exif-objectcycle-b' => 'صر٠شام تے سویرے',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'سدھا راÛ',
'exif-gpsdirection-m' => 'مقناطیسی راÛ',
+'exif-ycbcrpositioning-1' => 'وشکار',
+'exif-ycbcrpositioning-2' => 'رلیاں تھانواں',
+
+'exif-dc-contributor' => 'حصےدار',
+'exif-dc-coverage' => 'سپیٹیل یا ٹمپورل سکوپ آ٠میڈیا',
+'exif-dc-date' => 'تریخ',
+'exif-dc-publisher' => 'چھاپن والا',
+'exif-dc-relation' => 'رلدا میڈیا',
+'exif-dc-rights' => 'حق',
+'exif-dc-source' => 'سورس میڈیا',
+'exif-dc-type' => 'میڈیا منڈ',
+
+'exif-rating-rejected' => 'چھڈیا',
+
+'exif-isospeedratings-overflow' => '65535 نالوں وڈا',
+
+'exif-iimcategory-ace' => 'آرٹس، رÛتل تے مزے',
+'exif-iimcategory-clj' => 'جرم تے قنون',
+'exif-iimcategory-dis' => 'تباÛÛŒ تے حادسے',
+'exif-iimcategory-fin' => 'کم کاج تے کاروبار',
+'exif-iimcategory-edu' => 'پرھائی',
+'exif-iimcategory-evn' => 'محول',
+'exif-iimcategory-hth' => 'صحت',
+'exif-iimcategory-hum' => 'انسانی شوق',
+'exif-iimcategory-lab' => 'مزدور',
+'exif-iimcategory-lif' => 'جیون تے ارام',
+'exif-iimcategory-pol' => 'سیاست',
+'exif-iimcategory-rel' => 'موÛب تے یقین',
+'exif-iimcategory-sci' => 'سائینس تے ٹیکنالوجی',
+'exif-iimcategory-soi' => 'سماجی اشو',
+'exif-iimcategory-spo' => 'کھیڈاں',
+'exif-iimcategory-war' => 'لڑائی Ú†Ú¯Ú‘Û’ تے اÙراتÙری',
+'exif-iimcategory-wea' => 'موسم',
+
+'exif-urgency-normal' => 'نارمل ($1)',
+'exif-urgency-low' => 'تھلے کرکے ($1)',
+'exif-urgency-high' => 'اچا ($1)',
+'exif-urgency-other' => '($1) ورتن ÚˆÛŒÙائینڈ پراورٹی',
+
# External editor support
'edit-externally' => 'بارلا ساÙÙ¹ ویئر استعال کردے ÛÙˆÛ“ اے Ùائل Ù„Ú©Ú¾Ùˆ',
-'edit-externally-help' => 'Ø²ÛŒØ§Ø¯Û Ù…Ø¹Ù„ÙˆÙ…Ø§Øª آسطے اے [http://www.mediawiki.org/wiki/Manual:External_editors] ویکھو۔',
+'edit-externally-help' => 'Ø²ÛŒØ§Ø¯Û Ù…Ø¹Ù„ÙˆÙ…Ø§Øª آسطے اے [//www.mediawiki.org/wiki/Manual:External_editors] ویکھو۔',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'سارے',
-'imagelistall' => 'سارے',
-'watchlistall2' => 'سارے',
-'namespacesall' => 'سارے',
-'monthsall' => 'سارے',
-'limitall' => 'سارے',
+'watchlistall2' => 'سارے',
+'namespacesall' => 'سارے',
+'monthsall' => 'سارے',
+'limitall' => 'سارے',
# E-mail address confirmation
'confirmemail' => 'ای میل Ù¾ØªÛ Ù¾Ú©Ø§ کرو',
@@ -2937,17 +3209,25 @@ $1',
'trackbackdeleteok' => 'پچھلا Ø±Ø§Û Ù…Ù¹Ø§ دتا گیا',
# Delete conflict
-'deletedwhileediting' => "'''خبردار''': تھواڈے Ù„Ú©Ú¾Ù† مکرون اے صÙÛ Ù…Ù¹Ø§ دتا گیا!",
-'confirmrecreate' => "ورتن والا [[ورتن والا:$1|$1]]([[ورتن Ú¯Ù„ بات:$1|Ú¯Ù„ بات]]) Ø§ÛŒÛ ØµÙÛ Ù…Ù¹Ø§Ø¯ØªØ§ اے جدوں تساں ÙˆØ¬Û Ø¯Ø³ Ú©Û’ تبدیل کرن شروع کیتا:
+'deletedwhileediting' => "'''خبردار''': تھواڈے Ù„Ú©Ú¾Ù† مکرون اے صÙÛ Ù…Ù¹Ø§ دتا گیا!",
+'confirmrecreate' => "ورتن والا [[ورتن والا:$1|$1]]([[ورتن Ú¯Ù„ بات:$1|Ú¯Ù„ بات]]) Ø§ÛŒÛ ØµÙÛ Ù…Ù¹Ø§Ø¯ØªØ§ اے جدوں تساں ÙˆØ¬Û Ø¯Ø³ Ú©Û’ تبدیل کرن شروع کیتا:
: ''$2''
Ù…Ûربانی کرکے Ú©Ù†Ùرم کرو جے تسی اے صÙÛ ÙˆØ§Ù‚Ø¹ÛŒ بنانا چاندے او۔",
-'recreate' => 'Ø¯ÙˆØ¨Ø§Ø±Û Ø¨Ù†Ø§Ø¤',
+'confirmrecreate-noreason' => 'ورتن والا [[ورتن والا:$1|$1]] ([[ورتن Ú¯Ù„ بات:$1|Ú¯Ù„ بات]]) Ù†Û’ تواڈے تبدیلی کرن مگروں اے صÙÛ Ù…Ù¹Ø§ دتا اے۔
+Ù…Ûربانی کرکے اے Ú¯Ù„ Ù¾Ú©ÛŒ کرو جے تسی واقعی اے صÙÛ Ø¨Ù†Ø§Ù†Ø§ چاندے او۔',
+'recreate' => 'Ø¯ÙˆØ¨Ø§Ø±Û Ø¨Ù†Ø§Ø¤',
# action=purge
'confirm_purge_button' => 'ٹھیکھ ÛÛ’',
'confirm-purge-top' => 'ایس صÙÛ’ دا کاشے بدلو ØŸ',
'confirm-purge-bottom' => 'اک صÙÛ ØµØ§Ù Ú©Ø±Ù† نال نویاں تبدیلیاں دس پین گیاں۔',
+# action=watch/unwatch
+'confirm-watch-button' => 'اوکے',
+'confirm-watch-top' => 'اپنے اکھ تھلے رکھے صÙیاں Ú† ایس صÙÛ’ نوں رلاؤ۔',
+'confirm-unwatch-button' => 'اوکے',
+'confirm-unwatch-top' => 'ایس صÙÛ’ نوں اپنے اکھ تھلے رکھے صÙیاں Ú†ÙˆÚº Ûٹاؤ۔',
+
# Multipage image navigation
'imgmultipageprev' => '↠پچھلا صÙØ­Û',
'imgmultipagenext' => 'اگلا صÙØ­Û â†’',
@@ -2985,19 +3265,27 @@ $1',
'lag-warn-high' => 'تیز ڈیٹاسرور لاگ ØŒ $1 توں نویاں تبدیلیاں {{انیک:$1|سکنٹ|سکنٹ}} Ûوسکدا اے ایس لسٹ ناں دسے جان۔',
# Watchlist editor
-'watchlistedit-numitems' => 'تھواڈے اکھ تھلے رکھے صÙیاں Ú¯Ù„ بات والے صÙÛ’ Ú©ÚˆÚ©Û’ {{PLURAL:$1|1 سرخی|$1 سرخی}} نیں۔',
-'watchlistedit-noitems' => 'تھواڈی اکھ تھلے رکھے صÙیاں دی لسٹ خالی اے۔',
-'watchlistedit-normal-title' => ' اکھ تھلے رکھی Ûوئی نو تبدیل کرو',
-'watchlistedit-normal-legend' => 'اکھ تھلیوں Ûٹا لو',
-'watchlistedit-normal-submit' => 'ٹائیٹلز Ûٹاؤ',
-'watchlistedit-normal-done' => '{انیک:$1|1 سرناواں سی|$1 سرناویں سن}}',
-'watchlistedit-raw-title' => 'Ú©Ú†ÛŒ اکھ تھلے رکھی Ûوئی نو تبدیل کرو',
-'watchlistedit-raw-legend' => 'Ú©Ú†ÛŒ اکھ تھلے رکھی Ûوئی نو تبدیل کرو',
-'watchlistedit-raw-titles' => 'ناں:',
-'watchlistedit-raw-submit' => ' اکھ تھلے رکھی Ûوئی نو تبدیل کرو',
-'watchlistedit-raw-done' => 'تھواڈی اکھ تھلے رکھی لسٹ نویں کر دتی گئی اے۔',
-'watchlistedit-raw-added' => '{{انیک:$1|1 سرناواں|$1 سرناویں}} جوڑیا گیا:',
-'watchlistedit-raw-removed' => '{{انیک:$1|1 سرناواں|$1 سرناویں}} سرناواں:',
+'watchlistedit-numitems' => 'تھواڈے اکھ تھلے رکھے صÙیاں Ú¯Ù„ بات والے صÙÛ’ Ú©ÚˆÚ©Û’ {{PLURAL:$1|1 سرخی|$1 سرخی}} نیں۔',
+'watchlistedit-noitems' => 'تھواڈی اکھ تھلے رکھے صÙیاں دی لسٹ خالی اے۔',
+'watchlistedit-normal-title' => ' اکھ تھلے رکھی Ûوئی نو تبدیل کرو',
+'watchlistedit-normal-legend' => 'اکھ تھلیوں Ûٹا لو',
+'watchlistedit-normal-explain' => 'تواڈی اکھ تھلے رکھی لسٹ دے سرناویں تھلے دتے گۓ نیں۔
+اک سرناویں نوں Ûٹان لئی، اوس توں اگلے ڈبے نوں ویکھو تے
+"{{int:Watchlistedit-normal-submit}}" تے کلک کرو۔
+تسیں [[خاص:ایڈٹواچلسٹ/کچی|کچی لسٹ تبدیل کرو]]',
+'watchlistedit-normal-submit' => 'ٹائیٹلز Ûٹاؤ',
+'watchlistedit-normal-done' => '{انیک:$1|1 سرناواں سی|$1 سرناویں سن}}',
+'watchlistedit-raw-title' => 'Ú©Ú†ÛŒ اکھ تھلے رکھی Ûوئی نو تبدیل کرو',
+'watchlistedit-raw-legend' => 'Ú©Ú†ÛŒ اکھ تھلے رکھی Ûوئی نو تبدیل کرو',
+'watchlistedit-raw-explain' => 'سرناویں تواڈی اک تھلے رکھی لسٹ دے تھلے دتے نیں، تے ایناں چ وادا کعاٹا کرکے تبدیلی کیتی جاسکدی اے؛
+اک سرناواں اک لین چوں۔
+جدوں مک جاۓ تے "{{int:Watchlistedit-raw-submit}}" تے کلک کرو۔
+تسیں [[خاص:ایڈٹواچلسٹ|سٹینڈرڈ ایڈیٹر نوں چنو]]',
+'watchlistedit-raw-titles' => 'ناں:',
+'watchlistedit-raw-submit' => ' اکھ تھلے رکھی Ûوئی نو تبدیل کرو',
+'watchlistedit-raw-done' => 'تھواڈی اکھ تھلے رکھی لسٹ نویں کر دتی گئی اے۔',
+'watchlistedit-raw-added' => '{{انیک:$1|1 سرناواں|$1 سرناویں}} جوڑیا گیا:',
+'watchlistedit-raw-removed' => '{{انیک:$1|1 سرناواں|$1 سرناویں}} سرناواں:',
# Watchlist editing tools
'watchlisttools-view' => 'ملدیاں Ûوئیاں تبدیلیاں ویکھو',
@@ -3014,6 +3302,7 @@ $1',
'version-specialpages' => 'خاص صÙØ­Û’',
'version-parserhooks' => 'پارسر Ûکز',
'version-variables' => 'ویریایبلز',
+'version-antispam' => 'سپام بچاؤ',
'version-skins' => 'Ú©Ú¾Ù„',
'version-other' => 'دوجے',
'version-mediahandlers' => 'میڈیا Ûینڈلرز',
@@ -3025,14 +3314,14 @@ $1',
'version-hook-subscribedby' => 'جینے لئی',
'version-version' => '(ورین $1)',
'version-license' => 'لائیسنس',
-'version-poweredby-credits' => "ایس وکی نوں '''[http://www.mediawiki.org/ میڈیاوکی]''', copyright © 2001-$1 $2. چلاندا اے۔",
+'version-poweredby-credits' => "ایس وکی نوں '''[//www.mediawiki.org/ میڈیاوکی]''', copyright © 2001-$1 $2. چلاندا اے۔",
'version-poweredby-others' => 'دوجے',
'version-license-info' => 'میڈیاوکی اک Ù…Ùت سوÙٹویر اے؛ تسیں اینوں ونڈ سکدے Ø§ÙˆÛ ØªÛ’ گنو جنرل پبلک لسنس دیاں شرطاں تے جیÛڑیاں Ùری سوÙٹویر Ùاؤنڈیشن Ù†Û’ چھاپیاں نیں ایدے Ú† تبدیلی کرسکدے Ø§ÙˆÛ Ù„Ø³Ù†Ø³ دے ورین 2 نال، یا اپنی مرضی نال کسے ÙˆÛŒ Ûور ورین Ùیر بنن والے ورین نوں۔
میڈیاوکی ایس آس نال ونڈیا گیا اے جے Ø§ÛŒÛ Ùیدا دیوے گا پر ایدی کوئی وارنٹی نئیں Ø› کسے خاص Ú©Ù… لئی ٹھیک Ûون دی وارنٹی توں ÙˆÛŒ بنا۔ گنو جنرل پبلک لسنس ویکھو Ûور گلاں لئی۔
تسیں ایس پروکرام نال Ù„Û’ Ú†Ú©Û’ Ø§ÙˆÛ [{{سرور}}{{سکرپٹراÛ}}/جنرل پبلک لسنس دی کاپی] ایس Ú©Ù… نال Ø› اگر نئیں تے Ú†Ù¹Ú¾ÛŒ Ù„Ú©Ú¾Ùˆ
-the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA or [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html read it online]',
+the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA or [//www.gnu.org/licenses/old-licenses/gpl-2.0.html read it online]',
'version-software' => 'ساÙٹوئر Ú†Ú‘Ú¾ گیا۔',
'version-software-product' => 'پراڈکٹ',
'version-software-version' => 'ورژن',
@@ -3045,13 +3334,15 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
مورتاں پورے ریزولوشن Ú† دسیاں گیاں نئیں، دوجیاں Ùائل ٹائپ نوں نوں اوناں دے رلدے پروکراماں نال ٹوریا گیا اے۔',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'دوÛری Ùائلاں دی کھوج کرو',
-'fileduplicatesearch-legend' => 'دوÛری دی کھوج کرو۔',
-'fileduplicatesearch-filename' => 'Ùائل دا ناں',
-'fileduplicatesearch-submit' => 'کھوج',
-'fileduplicatesearch-info' => '$1 × $2 پکسل<br />Ùائل ناپ: $3<br />مائم ٹائپ: $4',
-'fileduplicatesearch-result-1' => '"$1" Ùائل ورگی رلدی Ùائل کوئی نیں۔',
-'fileduplicatesearch-result-n' => "Ùائل ''1$'' Ú† {{انیک:$2|1 رلدی نقل|$2 رلدیاں نقلں}} نیں۔",
+'fileduplicatesearch' => 'دوÛری Ùائلاں دی کھوج کرو',
+'fileduplicatesearch-summary' => 'دوÛریاں Ùائلاں دی کھوج Ûیش ویلیو تے اے۔',
+'fileduplicatesearch-legend' => 'دوÛری دی کھوج کرو۔',
+'fileduplicatesearch-filename' => 'Ùائل دا ناں',
+'fileduplicatesearch-submit' => 'کھوج',
+'fileduplicatesearch-info' => '$1 × $2 پکسل<br />Ùائل ناپ: $3<br />مائم ٹائپ: $4',
+'fileduplicatesearch-result-1' => '"$1" Ùائل ورگی رلدی Ùائل کوئی نیں۔',
+'fileduplicatesearch-result-n' => "Ùائل ''1$'' Ú† {{انیک:$2|1 رلدی نقل|$2 رلدیاں نقلں}} نیں۔",
+'fileduplicatesearch-noresults' => '"$1" ناں دی کوئی Ùائل نئیں لبی۔',
# Special:SpecialPages
'specialpages' => 'خاص صÙØ­Û’',
@@ -3084,7 +3375,7 @@ the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
# Special:Tags
'tags' => 'منے ÛÙˆÛ“ تبدیلی دے ٹیگ',
-'tag-filter' => '[[خاص:ٹیگ]] نتارا:',
+'tag-filter' => '[[Special:Tags]] نتارا:',
'tag-filter-submit' => 'Ùلٹر',
'tags-title' => 'ٹیگز',
'tags-intro' => 'ایس صÙÛ’ تے ٹیگ دی لسٹ اے جینوں سوÙٹوئیر تبدیلی دا نشان لا سکدا اے۔',
diff --git a/languages/messages/MessagesPnt.php b/languages/messages/MessagesPnt.php
index c0dd0449..bc7c2c1e 100644
--- a/languages/messages/MessagesPnt.php
+++ b/languages/messages/MessagesPnt.php
@@ -143,8 +143,6 @@ $messages = array(
'index-category' => 'Συντεταγμένα σελίδας',
'noindex-category' => 'ΑσÏντακτα σελίδας',
-'mainpagetext' => "'''To λογισμικόν MediaWiki εθέκεν.'''",
-
'about' => 'ΠεÏί',
'article' => 'Σελίδαν',
'newwindow' => "(ανοίγ' σ' άλλον παÏαθÏÏ)",
@@ -193,7 +191,6 @@ $messages = array(
'history' => 'ΙστοÏίαν τη σελίδας',
'history_short' => 'ΙστοÏίαν',
'updatedmarker' => 'αλλαγάς ασο τελευταίον το τέÏεμαμ κι αδά μεÏέαν',
-'info_short' => 'ΠληÏοφοÏίας',
'printableversion' => 'ΜοÏφή εκτÏπωσης',
'permalink' => 'ΣκιÏόν σÏνδεσμος',
'print' => 'ΤÏπωμαν',
@@ -335,7 +332,6 @@ $messages = array(
'viewsourcetext' => "ΕποÏείτε να τεÏείτε και ν' αντιγÏάφετε το κείμενον Ï„' ατεινές τη σελίδας:",
'protectedinterface' => "ΑβοÏτη σελίδαν έχ' απές κείμενον για το interface τη software και για Ï„' ατό εν ασπαλιγμένον.",
'namespaceprotected' => "'Κ εποÏείτε να αλλάζετε σελίδας σην πεÏιοχἠν ονοματίων '''$1'''.",
-'customcssjsprotected' => "'Κ εποÏείτε να αλλάζετε αβοÏτο τη σελίδαν. Ατουπές, άλλος χÏήστες έχ' τα Ï€Ïοσωπικά Ï„'αγαπεμένα Ï„'.",
'ns-specialprotected' => "Τα ειδικά τα σελίδας 'κ εποÏοÏν ν' επεξεÏγάσκουνταν.",
# Virus scanner
@@ -383,7 +379,7 @@ $messages = array(
'nosuchuser' => 'Αδαπές \'κ εχ\' χÏήστεν με Ï„\' όνομαν "$1".
ΤεÏέστεν τα γÏάμματα τη ονοματί, τεÏέστεν τα Ï„ÏανογÏάμματα και τα μικÏογÏάμματα να είναι τογÏία.
ΤεÏέστεν την οÏθογÏαφίαν ή [[Special:UserLogin/signup|ποισέστεν καινοÏÏεον λογαÏίαν]].',
-'nosuchusershort' => "Αδαπές 'κ εχ' χÏήστεν με Ï„' όνομαν \"<nowiki>\$1</nowiki>\".
+'nosuchusershort' => "Αδαπές 'κ εχ' χÏήστεν με Ï„' όνομαν \"\$1\".
Τ'όνομαν γÏαφέστεν ατο τογÏία.",
'nouserspecified' => "ΠÏέπ' να ψιλίζετε έναν όνεμαν.",
'login-userblocked' => "Το χÏήστεν έδεξαν ατον. Îα εμπαίν 'κ ίνεται.",
@@ -414,7 +410,7 @@ $messages = array(
'createaccount-title' => 'ΔημιουÏγίαν λογαÏίας για {{SITENAME}}',
'loginlanguagelabel' => 'Γλώσσαν: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Îέον σημάδιν',
'resetpass_header' => "Άλλαξον σημάδ'",
'oldpassword' => 'Παλαιόν σημάδιν:',
@@ -442,8 +438,6 @@ $messages = array(
'extlink_tip' => 'ΕξωτεÏικόν σÏνδεσμον (να μην ανασπάλλετε το Ï€Ïόθεμαν http:// )',
'headline_sample' => 'Κείμενον τίτλονος',
'headline_tip' => 'ΔεÏτεÏον τίτλος (επίπεδον 2)',
-'math_sample' => 'Αδά εισάγετε την φόÏμουλαν',
-'math_tip' => 'Μαθεματικόν φόÏμουλα (LaTeX)',
'nowiki_sample' => 'Αδακά πα να εισάγετε το μη μοÏφοποιημένον κείμενον.',
'nowiki_tip' => "Ξάι 'κ να τεÏείται η μοÏφοποίηση Wiki.",
'image_tip' => 'Ενσωματωμένον εικόνα',
@@ -642,7 +636,6 @@ $messages = array(
'changepassword' => 'Άλλαξον σημάδιν',
'prefs-skin' => 'Όψην',
'skin-preview' => 'ΠÏώτον τέÏεμαν',
-'prefs-math' => 'Απόδοσην μαθηματικίων',
'prefs-datetime' => 'ΗμεÏομηνίαν και ÏŽÏαν',
'prefs-rc' => 'ΥστεÏνά αλλαγάς',
'prefs-watchlist' => 'Κατάλογον ωÏιαγματί',
@@ -982,10 +975,8 @@ $messages = array(
'watchlist' => "Σελίδας ντ' ωÏιάζω",
'mywatchlist' => "Σελίδας ντ' ωÏιάζω",
'watchnologin' => "'Κ είστουν συνδεμένος",
-'addedwatch' => 'Εθέκεν σην λίσταν ωÏιαγματί',
'addedwatchtext' => "Η σελίδαν \"[[:\$1]]\" επήγεν σον [[Special:Watchlist|κατάλογον οÏιαγματί]] εσοÏν.
ΜελλοÏμενα αλλαγάς Ï„' ατεινές τη σελίδας θα γÏάφκουνταν καικά, και η σελίδαν θ' ευÏίεται με γÏάμματα '''χοντÏά''' σ' [[Special:RecentChanges|υστεÏνά Ï„' αλλαγάς]] για να τεÏείτετα καλίον.",
-'removedwatch' => 'Αση λίσταν επάÏθεν',
'removedwatchtext' => 'Η σελίδαν "[[:$1]]" ενεσβÏεν ασ\' [[Special:Watchlist|Ï„\'εσόν τον κατάλογον]].',
'watch' => 'ΩÏίαγμαν',
'watchthispage' => 'ΩÏίαν τη σελίδαν',
@@ -1013,7 +1004,7 @@ $messages = array(
'confirmdeletetext' => "Είστουν σουμά σο σβήσεμαν είνος σελίδας και οÏλ' Ï„' ιστοÏίασατς εντάμαν.
ΠαÏακαλοÏμε σας να δείτε το τελικόν τη βεβαίωσην το θέλετε να εφτάτε το σβήσεμαν, Ï„' εγÏοικάτε τα συνέπειας Ï„' ατεινές τη Ï€Ïάξης και Ï„' εφτάτ' ατεν με βάσην [[{{MediaWiki:Policy-url}}|τη πολιτικήν]].",
'actioncomplete' => 'Η ενέÏγειαν ετελέθεν',
-'deletedtext' => 'Το "<nowiki>$1</nowiki>" εσβήγανατο.
+'deletedtext' => 'Το "$1" εσβήγανατο.
ΤεÏέστεν το $2 και δεαβάστεν για τα υστεÏνά τα σβησίματα.',
'deletedarticle' => 'ενεσβÏεν η "[[$1]]"',
'dellogpage' => "Κατάλογον με Ï„' ατά ντ' ενεσβÏγαν",
@@ -1036,7 +1027,7 @@ $messages = array(
'protectexpiry' => 'Τελείται:',
'protect_expiry_invalid' => "Ο χÏόνον τελεματί 'κ εν σωστόν.",
'protect_expiry_old' => 'Ο χÏόνον τελεματί πέÏνιξον.',
-'protect-text' => "Αδά εποÏείτε να τεÏείτε και ν' αλλάζετε Ï„' επίπεδον τη Ï€Ïοστασίας για τη σελίδαν '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Αδά εποÏείτε να τεÏείτε και ν' αλλάζετε Ï„' επίπεδον τη Ï€Ïοστασίας για τη σελίδαν '''$1'''.",
'protect-locked-access' => "Η λογαÏίανεσουν 'κ έχ' το δικαίωμαν να αλλάζ' Ï„' ασπάλιγμαν τη σελίδας.
Αδά έχ' Ï„' ατωÏιζνά τα νομς για τη σελίδαν '''$1''':",
'protect-cascadeon' => "ΑβοÏτη η σελίδα ατώÏα εν ασπαλιγμένον: Εν απές {{PLURAL:$1|σ' ακόλουθουν τη σελίδαν, ντο έχ'|σ' ακόλουθα τα σελίδας, Ï„' έχνε}} ενεÏγοποιημένον το διαδοχικόν Ï„' ασπάλιγμαν. ΠοÏείτε ν' ελλάζετε το επίπεδον ασπαλιγματί τη σελίδας, άμα αβοÏτο ξάι 'κ θ' αλλάζ' το διαδοχικόν Ï„' ασπάλιγμαν.",
@@ -1117,7 +1108,6 @@ $messages = array(
'ipbexpiry' => 'Τέλεμαν:',
'ipbreason' => 'Αιτία:',
'ipbreasonotherlist' => 'Άλλον αιτία',
-'ipbanononly' => "Ασπάλισον Ï„'ανώνυμους τη χÏήστες μαναχόν",
'ipbsubmit' => 'Ασπάλισον τον χÏήστεν',
'ipbother' => 'Άλλον ÏŽÏα:',
'ipboptions' => '2 ÏŽÏας:2 hours,1 ημέÏα:1 day,3 ημέÏας:3 days,1 εβδομάδα:1 week,2 εβδομάδας:2 weeks,1 μήνα:1 month,3 μήνας:3 months,6 μήνας:6 months,1 χÏόνο:1 year,αόÏιστα:infinite',
@@ -1288,11 +1278,6 @@ $messages = array(
# Spam protection
'spamprotectiontitle' => 'ΦίλτÏον Ï€Ïοστασίας ασό σπαμ',
-# Math errors
-'math_unknown_function' => 'άγνωÏος συνάÏτησην',
-'math_lexing_error' => 'σφάλμαν λεξικής ανάλυσης',
-'math_syntax_error' => 'σφάλμαν σÏνταξης',
-
# Patrol log
'patrol-log-auto' => '(αυτόματον)',
@@ -1301,12 +1286,11 @@ $messages = array(
'nextdiff' => 'Άλλον διαφοÏά →',
# Media information
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|σελίδα|σελίδας}}',
-'file-info-size' => '$1 × $2 εικονοστοιχεία, μέγεθος αÏχείου: $3, MIME Ï„Ïπον: $4',
-'file-nohires' => "<small>'Κ εχ κι άλλο ψηλόν ανάλυσην.</small>",
-'svg-long-desc' => "ΑÏχείον SVG, κατ' όνομα $1 × $2 εικονοστοιχεία, μέγεθος αÏχεί: $3",
-'show-big-image' => 'Τζιπ Ï„Ïανόν ανάλυση',
-'show-big-image-thumb' => "<small>Μέγεθος τη Ï€ÏÏŽÏ„' τεÏεματί: $1 × $2 εικονοστοιχεία</small>",
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|σελίδα|σελίδας}}',
+'file-info-size' => '$1 × $2 εικονοστοιχεία, μέγεθος αÏχείου: $3, MIME Ï„Ïπον: $4',
+'file-nohires' => "<small>'Κ εχ κι άλλο ψηλόν ανάλυσην.</small>",
+'svg-long-desc' => "ΑÏχείον SVG, κατ' όνομα $1 × $2 εικονοστοιχεία, μέγεθος αÏχεί: $3",
+'show-big-image' => 'Τζιπ Ï„Ïανόν ανάλυση',
# Special:NewFiles
'newimages' => 'ΤεÏέστεν τα καινοÏÏεα φωτογÏαφίας',
@@ -1336,7 +1320,13 @@ $messages = array(
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Πλάτος',
@@ -1350,12 +1340,10 @@ $messages = array(
'exif-ycbcrpositioning' => 'ΡÏθμιζμαν φωτεινότητας και χÏωματί',
'exif-xresolution' => 'ΟÏιζόντιον ανάλυση',
'exif-yresolution' => 'ΚατακόÏυφον ανάλυση',
-'exif-resolutionunit' => 'Μονάδα μέτÏησης ανάλυσης X και Y',
'exif-stripoffsets' => 'Τοποθέτηση δογμενίων εικόνας',
'exif-stripbytecounts' => 'Bytes ανά συμπιεσμένον λωÏίδα',
'exif-jpeginterchangeformat' => 'Μετάθεση σε JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytes δογμενίων JPEG',
-'exif-transferfunction' => 'ΛειτουÏγία μεταφοÏάς',
'exif-whitepoint' => "ΧÏωματικόν Ï€ÏοσδιοÏισμός Ï„' άσπÏου",
'exif-primarychromaticities' => 'ΠÏωτεÏοντες χÏωματισμοί',
'exif-imagedescription' => 'Τίτλος εικόνας',
@@ -1392,14 +1380,12 @@ $messages = array(
# External editor support
'edit-externally' => "Αλλαγήν Ï„' αÏχείου με Ï€ÏογÏάμματα ασα εξ μεÏέα",
-'edit-externally-help' => '(ΤεÏέστεν τα [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] και θα ευÏίετε κι άλλα πληÏοφοÏίας)',
+'edit-externally-help' => '(ΤεÏέστεν τα [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] και θα ευÏίετε κι άλλα πληÏοφοÏίας)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'οÏλαι',
-'imagelistall' => 'οÏλαι',
-'watchlistall2' => 'οÏλαι',
-'namespacesall' => 'οÏλαι',
-'monthsall' => 'οÏλαι',
+'watchlistall2' => 'οÏλαι',
+'namespacesall' => 'οÏλαι',
+'monthsall' => 'οÏλαι',
# Trackbacks
'trackbackremove' => '([$1 Σβήσον])',
diff --git a/languages/messages/MessagesPrg.php b/languages/messages/MessagesPrg.php
index 069942b5..e507a479 100644
--- a/languages/messages/MessagesPrg.php
+++ b/languages/messages/MessagesPrg.php
@@ -16,46 +16,46 @@ $messages = array(
'tog-underline' => 'AutengÄ«nsenin paglaubasnÄ',
'tog-highlightbroken' => 'Ebzentlis <a href="" class="new">tÄ«t</a> autengÄ«nsenins prei nisÄtauwintins pÄusans (alternatÄ«wai: <a href="" class="internal">?</a>).',
'tog-justify' => 'IzlÄ«ginais tekstan prei abbans pÄusans',
-'tog-hideminor' => 'Kliptinais malkans tikrīsnans en panzdaumamans kitawīdisnans',
+'tog-hideminor' => 'Kliptinais malkans tikrisnans en panzdaumamans kitawīdinsnans',
'tog-hidepatrolled' => 'Kliptinais izbandÄtans redigÄ«senins en panzdaumamans kitawÄ«dinsnans',
'tog-newpageshidepatrolled' => 'Kliptinais izbandÄtans pÄusans iz listin stÄ“isan nÄunan pÄusan',
'tog-extendwatchlist' => 'Waidinnais en listin stēisan nadirītan wissans, ni tēr panzdaumans kitawīdinsnans',
'tog-usenewrc' => 'Tērpaus plattinsenin stēisan panzdauman kitawīdinsnan (izkīnina JavaScript)',
'tog-numberheadings' => 'AutÅmatiska sirzdatÄ«telin nummerinsna',
-'tog-showtoolbar' => 'Waidinnais sawīnzlin stēisan pagaptin (JavaScript)',
-'tog-editondblclick' => 'RedigÄ«s pÄusans pra dwiguban pellis gnesnan (JavaScript)',
+'tog-showtoolbar' => 'Waidinnais sawinzlin stēisan pagaptin (JavaScript)',
+'tog-editondblclick' => 'RedigÄ«s pÄusans pra dwigubban pellis gnesnan (JavaScript)',
'tog-editsection' => 'ErmazÄ«nginais redigÄ«snan stÄ“isan pÄusas sekciÅnin pra "[redigÄ«s]" autengÄ«nsenin',
'tog-editsectiononrightclick' => 'ErmazÄ«nginais redigÄ«snan stÄ“isan pÄusas sekciÅnin pra tikrÅman pellis knuppas gnesnan na tenesses tÄ«telin',
'tog-showtoc' => 'Waidinnais Ä“nturas listin (en pÄusamans sen tÅ«ls nikÄi 3 sirzdatÄ«telins)',
-'tog-rememberpassword' => 'Paminnais enÄ“isenes infÅrmaciÅnins en Å¡ismu kÅmputerin (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'tog-rememberpassword' => 'Pamennais enÄ“isenes infÅrmaciÅnins en Å¡ismu kÅmputerin (for a maximum of $1 {{PLURAL:$1|day|days}})',
'tog-watchcreations' => 'PreidÄis pÄusans kawÄ«dans as teÄ«ke prei majjan listin stÄ“isan nadirÄ«tan',
'tog-watchdefault' => 'PreidÄis pÄusans kawÄ«dans as redigijja prei majjan listin stÄ“isan nadirÄ«tan',
'tog-watchmoves' => 'PreidÄis pÄusans, kawÄ«dans as praskajjina prei majjan listin stÄ“isan nadirÄ«tan',
'tog-watchdeletion' => 'PreidÄis pÄusans kawÄ«dans as Äupausina prei majjan listin stÄ“isan nadirÄ«tan',
-'tog-minordefault' => 'Ebzentlis auprestaminai wissans kitawidÄ«nsnans kÄigi mÄlkans',
+'tog-minordefault' => 'Ebzentlis auprestaminai wissans kitawidÄ«nsnans kÄigi malkans',
'tog-previewontop' => 'Waidinnais pirmÄdiran pirzdau redigÄ«snas laÅ«kan',
'tog-previewonfirst' => 'Waidinnais pirmÄdiran prei pirman redigÄ«senin',
'tog-nocache' => 'IzklaÅ«jais rÄnkas minÄ«snan',
'tog-enotifwatchlistpages' => 'Tenginnais mi e-mail, ik pÄusan iz majjan listin stÄ“isan nadirÄ«tan ast kitawÄ«dintan',
'tog-enotifusertalkpages' => 'Iztenginnais mi e-mail, ik majjan diskusiÅnis pÄusan wÄ«rst bÅ«wun kitawÄ«dintan',
-'tog-enotifminoredits' => 'Tenginnais mi e-mail dÄ«gi kaddan kitawÄ«dinsnas as mÄlkan',
+'tog-enotifminoredits' => 'Tenginnais mi e-mail dīgi kaddan kitawīdinsnas as malkan',
'tog-enotifrevealaddr' => 'Ni kliptinais majjan e-mail adressin en pawakīsenins',
'tog-shownumberswatching' => 'Waidinnais gīrbin stēisan nadirīntin tērpautajan',
'tog-oldsig' => 'TwÄjs tÄ“ntiskas papeisÄsenis',
-'tog-fancysig' => 'LaikÄis papeisÄsenin per wikitekstan (Å¡lÄit autÅmatiskan sÄ“isnan)',
+'tog-fancysig' => 'Laikais papeisÄsenin per wikitekstan (Å¡lÄit autÅmatiskan sÄ“isnan)',
'tog-externaleditor' => 'Auprestaminai tÄ“rpaus izwinandan editÅran (tÄ“r per ekspertans, izkÄ«nina speciÄlins ensadÄ«nsenins en kÅmputeÅ—u)',
'tog-externaldiff' => 'Auprestaminai tÄ“rpaus izwinandan prÅgraman waidinnantin Å¡latÄ«ntans (tÄ“r per ekspertans, izkÄ«nina speciÄlins ensadÄ«nsenins en kÅmputeÅ—u)',
'tog-showjumplinks' => 'EnklaÅ«jais autengÄ«nsenins "sÄkais en"',
'tog-uselivepreview' => 'TÄ“rpaus dinÄmiskan pirmÄdiran (JavaScript) (eksperimentÄlin)',
-'tog-forceeditsummary' => 'PawakÄ“is mi nierpilninsenin stesse ebpeisÄsenin stÄ“isan kitawÄ«disnan',
+'tog-forceeditsummary' => 'PawakÄ“is mi nierpilninsenin stesse ebpeisÄsenin stÄ“isan kitawÄ«dinsnan',
'tog-watchlisthideown' => 'Kliptinais majjans redigīsenins en listei stēisan nadirītan',
'tog-watchlisthidebots' => 'Kliptinais redigÄ«senins stÄ“isan bÅtan en listei stÄ“isan nadirÄ«tan',
-'tog-watchlisthideminor' => 'Kliptinais mÄlkans redigÄ«senins en listei stÄ“isan nadirÄ«tan',
-'tog-watchlisthideliu' => 'Kiliptinais redigīsenins stēisan engūbin tērpautajan en listei stēisan nadirītan',
+'tog-watchlisthideminor' => 'Kliptinais malkans redigīsenins en listei stēisan nadirītan',
+'tog-watchlisthideliu' => 'Kliptinais redigīsenins stēisan engūbusin tērpautajan en listei stēisan nadirītan',
'tog-watchlisthideanons' => 'Kliptinais redigÄ«senins stÄ“isan anÅniman tÄ“rpautajan en listei stÄ“isan nadirÄ«tan',
'tog-watchlisthidepatrolled' => 'Kliptinais izbandÄtans redigÄ«senins en lÄ«stei stÄ“isan nadirÄ«tan',
'tog-ccmeonemails' => 'Tenginnais mi kÅpijans stÄ“isan waÄ«stin tengÄ«ntan pra min kitÄ“imans tÄ“rpautajans',
-'tog-diffonly' => 'Ni waidinnais Ä“nturan stÄ“isan pÄusan pa palÄ«ginsenins stÄ“isan kitawÄ«disnan',
+'tog-diffonly' => 'Ni waidinnais Ä“nturan stÄ“isan pÄusan pa palÄ«ginsenins stÄ“isan kitawÄ«dinsnan',
'tog-showhiddencats' => 'Waidinnais kliptans kategÅrijans',
'underline-always' => 'wisaddan',
@@ -130,24 +130,16 @@ PÄusai en kategÅrijai "$1"',
'category-subcat-count-limited' => 'Å Ä« kategÅrija turri {{PLURAL:$1|1 pÅkategÅrijan|$1 pÅkategÅrijans}}.',
'category-article-count' => '{{PLURAL:$2|En Å¡issei kategÅrijan ast tÄ“r aÄ«nan pÄusan.|Zemmais waidinnÄ di $1 iz wissans $2 pÄusans Å¡isses kategÅrijan.}}',
'category-article-count-limited' => 'En Å¡issei kategÅrijan {{PLURAL:$1|ast 1 pÄusan|ast $1 pÄusai}}.',
-'category-file-count' => '{{PLURAL:$2|En Å¡issei kategÅrijan ast tÄ“r aÄ«ns zÅ«rbrukis.|En Å¡issei kategÅrijan {{PLURAL:$1|ast aÄ«ns zÅ«rbrukis|ast $1 zÅ«rbrukei}} iz empirÄ«niskan gÄ«rbin stÄ“isan $2 zÅ«rbrukin.}}',
+'category-file-count' => '{{PLURAL:$2|En Å¡issei kategÅrijan ast tÄ“r aÄ«ns zÅ«rbrukis.|En Å¡issei kategÅrijan {{PLURAL:$1|ast aÄ«ns zÅ«rbrukis|ast $1 zÅ«rbrukei}} iz empÄ«riniskan gÄ«rbin stÄ“isan $2 zÅ«rbrukin.}}',
'category-file-count-limited' => 'En Å¡issei kategÅrijan ast {{PLURAL:$1|1 zÅ«rbrukis|ast $1 zÅ«rbrukei}}.',
'listingcontinuesabbrev' => 'Ä“.s.',
'index-category' => 'IndeksÄ«ntai pÄusai',
'noindex-category' => 'NiindeksÄ«ntai pÄusai',
-'mainpagetext' => "'''MediaWiki's instalaciÅni izpalla.'''",
-'mainpagedocfooter' => 'WÄ«dais [http://meta.wikimedia.org/wiki/Help:Contents przewodnik użytkownika] kÄi gaÅ«lai informaciÅnei ezze wiki prÅgramijas tÄ“rpausnan.
-
-== En pagaūseņu ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
-
'about' => 'Ezze',
'article' => 'PÄusas Ä“nturs',
'newwindow' => '(etwerre si en nÄunai langstan)',
-'cancel' => 'Naīkinais',
+'cancel' => 'Naikinnais',
'moredotdotdot' => 'TÅ«ls...',
'mypage' => 'Majjan pÄusan',
'mytalk' => 'MajÄ diskusiÅni',
@@ -191,7 +183,6 @@ PÄusai en kategÅrijai "$1"',
'history' => 'PÄusas istÅrija',
'history_short' => 'IstÅrija',
'updatedmarker' => 'KitawÄ«dintan ezze panzdaumasmu kÄimalukisenin',
-'info_short' => 'InfÅrmaciÅni',
'printableversion' => 'Drukkaumina wersiÅni',
'permalink' => 'Ainatīngis autengīnsenis',
'print' => 'Drukkaus',
@@ -212,7 +203,7 @@ PÄusai en kategÅrijai "$1"',
'talkpagelinktext' => 'DiskusiÅni',
'specialpage' => 'SpeciÄlin pÄusan',
'personaltools' => 'PersÅniskas pagaptis',
-'postcomment' => 'NÄuna sekciÅni',
+'postcomment' => 'NaunÄ sekciÅni',
'articlepage' => 'WÄ«dais Ä“nturas pÄusan',
'talk' => 'DiskusiÅni',
'views' => 'Pawīda',
@@ -229,7 +220,7 @@ PÄusai en kategÅrijai "$1"',
'redirectedfrom' => '(Prawestan iz $1)',
'redirectpagesub' => 'Prawesnas pÄusan',
'lastmodifiedat' => 'Å in pÄusan bÄ“i panzdaumai kitawÄ«dintan $2, $1',
-'viewcount' => 'Å in pÄusan bÄ“i dirÄ«tan {{PLURAL:$1|tylko ainawÄrst|$1 wÄrst}}',
+'viewcount' => 'Å in pÄusan bÄ“i dirÄ«tan {{PLURAL:$1|tÄ“r ainawÄrst|$1 wÄrst}}',
'protectedpage' => 'PakÅ«nstan pÄusan',
'jumpto' => 'SÄkais en:',
'jumptonavigation' => 'nawigaciÅni',
@@ -241,7 +232,7 @@ PÄusai en kategÅrijai "$1"',
'copyright' => 'Ēnturs preiēiminan pa $1 licēncin.',
'copyrightpage' => '{{ns:project}}:AutÅras tikrÅmis',
'currentevents' => 'BigÄntei audÄsenei',
-'currentevents-url' => 'Project: BÄ«gantai audÄsenei',
+'currentevents-url' => 'Project: BÄ«gantei audÄsenei',
'disclaimers' => 'EtrÄwingiskwas arÄikinsenei',
'disclaimerpage' => 'Project:EtrÄwingiskwas arÄikinsenei',
'edithelp' => 'Redigīsnas pagalba',
@@ -257,10 +248,10 @@ PÄusai en kategÅrijai "$1"',
'badaccess' => 'PreiwÄ“rpsenes blÄnda',
'badaccess-group0' => 'Ni assei enwarÄ«ntan kÄi izpilninlai Å¡in dÄ«lasenin.',
-'badaccess-groups' => 'Å isses dÄ«lasenes izpilninsna ast arÄikintan prei tÄ“rpautajans en {{PLURAL:$2|gruppei|ainassei iz gruppins}}: $1.',
+'badaccess-groups' => 'Å isses dÄ«lasenes izpilninsnÄ ast arÄikintan prei tÄ“rpautajans en {{PLURAL:$2|gruppei|ainassei iz gruppins}}: $1.',
'versionrequired' => 'IzkÄ«ninta Mediawikis $1 wersiÅni: $1.',
-'versionrequiredtext' => 'MediawÄ«kis $1 wersiÅni ast izkÄ«nintan, kÄi tÄ“rpaulai Å¡in pÄusan. WidÄis [[Special:Version|wersiÅni]]',
+'versionrequiredtext' => 'MediawÄ«kis $1 wersiÅni ast izkÄ«nintan, kÄi tÄ“rpaulai Å¡in pÄusan. WÄ«dais [[Special:Version|wersiÅni]]',
'ok' => 'Labbai',
'retrievedfrom' => 'Aps: "$1"',
@@ -334,7 +325,7 @@ DÄtanbazi etwÄrtai wartinna blÄndan "$3: $4".',
PerwaldÄ«tajs, kas ast izklaÅ«wuns dÄtanbazin, ast dÄwuns ripÄ«ntin eÄ«skinsnan: $1',
'missing-article' => 'Ni aupallÄ di en dÄtanbazei pÄusas tekstan "$1" $2.
-Sta ast jÄuku dÄ«lintan pra niaktuÄlin Å¡laitÄ«ntan anga istÅrijan autenginnantin prei pÄusan, kawÄ«dan pastÄi Äupausintan.
+Sta ast jÄuku dÄ«lintan pra niaktuÄlin Å¡laitÄ«ntan anga istÅrijan autenginÄntin prei pÄusan, kawÄ«dan pastÄi Äupausintan.
Ik sta ni ast brewÄ«nsli, mazÄ«ngi tÅ« aupalla blÄndan en prÅgraminimans.
Madli pawakÄ“is di [[Special:ListUsers/sysop|perwaldÄ«taju]], preidÄntei URL.',
@@ -351,14 +342,14 @@ Madli pawakÄ“is di [[Special:ListUsers/sysop|perwaldÄ«taju]], preidÄntei URL.',
'unexpected' => 'Nigēista wērtibi: "$1"="$2".',
'formerror' => 'BlÄnda: ni mazÄ«ngi tÄ“rpautun fÅrmularan',
'badarticleerror' => 'DÄ«lasenis ni mazzi bÅ«twei izpilnintan nÅ Å¡in pÄusan.',
-'cannotdelete' => 'Ni bÄ“i mazÄ«ngi Äupausintun etrÄ«nktan pÄusan anga grafÄ«kin "$1".
+'cannotdelete' => 'Ni bÄ“i mazÄ«ngi Äupausintun etrÄ«nktan pÄusan anga grÄfikin "$1".
MazÄ«ngi, kÄi pastÄi jÄu Äupausintan pra ainuntan kittan.',
'badtitle' => 'NitikrÅmiskas tÄ«tels',
-'badtitletext' => 'PadÄts pÄusas tÄ«tels ni ast tikrÅmiskan. DruwÄ«minai ast pÄustan anga turri Ä“n sen zentlins, kawÄ«dan tÄ“rpausna ast drÄ“uditan.',
-'perfcached' => 'Å in dÄtan ast rÄnkas mÄ«nisnas kÅpija be mazzi bÅ«twei niaktuÄlin.',
+'badtitletext' => 'PadÄts pÄusas tÄ«tels ni ast tikrÅmiskan. DruwÄ«minai ast pÄustan anga turri Ä“n sen zentlins, kawÄ«dan terpausnÄ ast drÄ“uditan.',
+'perfcached' => 'Å in dÄtan ast rÄnkas minÄ«snas kÅpija be mazzi bÅ«twei niaktuÄlin.',
'perfcachedts' => 'Å in dÄtan ast rÄnkas minÄ«snas kÅpija. Panzdaums ernaunÄ«nsenis bÄ“i en $1.',
-'querypage-no-updates' => 'Å isse pÄusan etnÄuninsna tÄ“ntiskai ast izklÄutan. SÄ“nti stwi dÄtan ni wÄ«rst pastÄwun etnÄunintan.',
-'wrong_wfQuery_params' => 'NitikrÅmiskai parÄmetrei perlaÄ«stan wfQuery()<br />
+'querypage-no-updates' => 'Å isse pÄusan etnaunÄ«nsna tÄ“ntiskai ast izklÄutan. SÄ“nti stwi dÄtan ni wÄ«rst pastÄwun etnaunÄ«ntan.',
+'wrong_wfQuery_params' => 'NitikrÅmiskai parÄmeterei perlaÄ«stan wfQuery()<br />
FunkciÅni: $1<br />
Prasīsenis: $2',
'viewsource' => 'WÄ«dais appun',
@@ -369,19 +360,18 @@ Prasīsenis: $2',
'protectedinterface' => 'Å in pÄusan turri Ä“n sen prÅgraminin interfÄcas tekstan, stesse paggan tenesses redigÄ«snas mazÄ«ngisku pastÄi blÅkitan.',
'editinginterface' => "'''Ä’mpirssergÄ«senis:''' Tu redigÄ«ja pÄusan, kawÄ«dan turri en sen prÅgraminin interfÄcas tekstan.
KitawÄ«dinsnas en Å¡ismu pÄusan wÄ«rts kitawÄ«dinuÅ¡as interfÄcas pawÄ«dan per kittans tÄ“rpautajans.
-Per tulkausnans, madli endirÄ“is tÄ“rpautun [http://translatewiki.net/wiki/Main_Page?setlang=prg translatewiki.net], - MediaWiki tulkausnan prÅjaktan.",
+Per tulkausnans, madli endirÄ“is tÄ“rpautun [//translatewiki.net/wiki/Main_Page?setlang=prg translatewiki.net], - MediaWiki tulkausnan prÅjaktan.",
'sqlhidden' => '(SQL prasīsenis kliptintan)',
'cascadeprotected' => 'Å in pÄusan ast pakÅ«nstan ezze redigÄ«snan, beggi ast ebÄ«mtan en {{PLURAL:$1|ripÄ«ntsmu pÄusan, kawÄ«dan|ripÄ«ntimans pÄusans, kawÄ«dai}} turri mazÄ«ngiskwan "pakÅ«nsnas weldÄ«snan" enklaÅ«tan:
$2',
'namespaceprotected' => "TÅ« ni assei preiwÄ“rptan, kÄi redigÄ«lai pÄusans en '''$1''' tÄ«telin plattibei.",
-'customcssjsprotected' => 'TÅ« ni mazzi redigÄ«tun Å¡in pÄusan, beggi tennan turri Ä“n sen persÅniskans ensadÄ«nsenins kitse tÄ“rpautajan.',
'ns-specialprotected' => 'SpeciÄlai pÄusai ni mazzi bÅ«twei redigÄ«tan.',
'titleprotected' => 'Å is tÄ«tels pastÄi drÄ“uditan pra [[User:$1|$1]].
Drēudisnas pagrintinsna: "$2".',
# Virus scanner
'virus-badscanner' => 'WÄrga kÅnfiguraciÅni: niwaÄ«sts antiwÄ«rusas skanÄ«tajs: "$1"',
-'virus-scanfailed' => 'skanÄ«sna niizpaltan (blÄnda $1)',
+'virus-scanfailed' => 'skanisnÄ niizpaltan (blÄnda $1)',
'virus-unknownscanner' => 'niwaīsts antiwīruss:',
# Login and logout pages
@@ -395,9 +385,9 @@ Ni izmīrstais kitawīdintun Twajjans [[Special:Preferences|pirminiskwans per {{
'yourname' => 'TwajÄ tÄ“rpautajas pabilisnÄ:',
'yourpassword' => 'TwÄjs kliptaswÄ«rds:',
'yourpasswordagain' => 'Āntrinais kliptaswīrdan',
-'remembermypassword' => 'Paminnais majjans enÄ“isnas infÅrmaciÅnins en Å¡ismu kÅmputerin (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'remembermypassword' => 'Pamennais majjans enÄ“isnas infÅrmaciÅnins en Å¡ismu kÅmputerin (for a maximum of $1 {{PLURAL:$1|day|days}})',
'yourdomainname' => 'TwajÄ dÅmeni:',
-'externaldberror' => 'Tikka izwinandas autentikÄntin dÄtanbazin blÄnda, anga ni assei enwarÄ«ntan kÄi etnÄuninlai twajjan izwinandan rekkenan.',
+'externaldberror' => 'Tikka izwinandas autentikÄntin dÄtanbazin blÄnda, anga ni assei enwarÄ«ntan kÄi etnaunÄ«nlai twajjan izwinandan rekkenan.',
'login' => 'Enjaīs',
'nav-login-createaccount' => 'Enjaīs / teīkeis rekkenan',
'loginprompt' => 'Tu turri turÄ«tun <i>cookies</i> enklaÅ«tan, kÄi enÄ“ilai en {{SITENAME}}.',
@@ -418,29 +408,29 @@ Etrīnkais kittan tērpautajas pabilīsnan.',
'loginerror' => 'EnÄ“isnas blÄnda',
'createaccounterror' => 'Ni mazīngi teīktun rekkenan: $1',
'nocookiesnew' => 'TÄ“rpautajs rekkens pastÄi teÄ«ktan, anga tÅ« ni assei engÅ«bun.
-{{SITENAME}} tÄ“rpaui <i>cookies</i> kÄi karwinlai informaciÅnin en tÄ“rpautajas enÄ“isnas prÅcesu.
+{{SITENAME}} tÄ“rpaui <i>cookies</i> kÄi karwinlai infÅrmaciÅnin en tÄ“rpautajas enÄ“isnas prÅcesu.
TwajÄ lasÄtla turri teinÅ« izklaÅ«tans <i>cookies</i>.
-Madli enklaÅ«jais tennans be bÄndais etkÅ«mps.',
-'nocookieslogin' => '{{SITENAME}} tÄ“rpaui <i>cookies</i> kÄi karwinlai informaciÅnin en tÄ“rpautajas enÄ“isnas prÅcesu.
+Madli enklaūjais tennans be bandais etkūmps.',
+'nocookieslogin' => '{{SITENAME}} tÄ“rpaui <i>cookies</i> kÄi karwinlai infÅrmaciÅnin en tÄ“rpautajas enÄ“isnas prÅcesu.
TwajÄ lasÄtla turri teinÅ« izklaÅ«tans <i>cookies</i>.
-Madli enklaÅ«jais tennans be bÄndais etkÅ«mps.',
+Madli enklaūjais tennans be bandais etkūmps.',
'noname' => 'Sta ni ast tikrÅmiska tÄ“rpautajas pabilisnÄ.',
'loginsuccesstitle' => 'Enēisenis izpalla',
'loginsuccess' => "'''Assei teinÅ« engÅ«bun {{SITENAME}} kÄigi \"\$1\".'''",
'nosuchuser' => 'Ni ast tērpautajs sen pabilīsnan "$1".
Zentlin debban en tērpautajas pabilīsnai ast zentlawingi.
Izbandais peisÄsnan anga [[Special:UserLogin/signup|teÄ«keis nÄunan rekkenan]].',
-'nosuchusershort' => 'Ni ast tērpautajs sen pabilīsnan "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Ni ast tērpautajs sen pabilīsnan "$1".
Izbandais peisÄsnan.',
'nouserspecified' => 'Tu turri enpeisÄtun tÄ“rpautajas pabilÄ«snan.',
-'wrongpassword' => 'NitikrÅmiskas kliptaswÄ«rds. BÄndais dabber rÄ“izan.',
-'wrongpasswordempty' => 'EnpeisÄts kliptaswÄ«rds ast pÄustan. BÄndais etkÅ«mps.',
+'wrongpassword' => 'NitikrÅmiskas kliptaswÄ«rds. Bandais dabber rÄ“izan.',
+'wrongpasswordempty' => 'EnpeisÄts kliptaswÄ«rds ast pÄustan. Bandais etkÅ«mps.',
'passwordtooshort' => 'TwÄjs kliptawÄ«rds ast per Ä«nsan.
TÄns turri turÄ«tun ukamazzais {{PLURAL:$1|zentlin|zentlai}}.',
'password-name-match' => 'TwÄjs kliptawÄ«rds turri kitawÄ«dintun si ezze twajasmu tÄ“rpautajas emnin.',
'mailmypassword' => 'Tenginnais mi nÄunan kliptaswÄ«rdan pra e-mail',
'passwordremindertitle' => 'NÄuns kÄ«smingiskas kliptaswÄ«rds per {{SITENAME}}',
-'passwordremindertext' => 'Ainunts (drÅ«wiminai tÅ«, iz IP adressin $1) ast madlÄ«wuns ezze nÄunas kliptaswÄ«rdas prei {{SITENAME}}($4) tengÄ«nsnan.
+'passwordremindertext' => 'Ainunts (druwÄ«minai tÅ«, iz IP adressin $1) ast madlÄ«wuns ezze nÄunas kliptaswÄ«rdas prei {{SITENAME}}($4) tengÄ«nsnan.
Per tÄ“rpautajan "$2" pastÄi generÄ«tan kÄ«smingiskas kliptaswÄ«rds: "$3".
Ik tu skatta din segÄ«tun, tebbei prawerru enÄ“itwei be enpeisÄtun nÄunan kliptaswÄ«rdan.
Å isse autÅmatiskai generÄ«tas kliptaswÄ«rdas swarewÄ«ngisku wÄ«rst wanginnusi si pa {{PLURAL:$5|aÄ«nan dÄ“inan|$5 dÄ“inans}}.
@@ -450,11 +440,11 @@ Ik ainunts kits ast tenginnuns šan madlin, anga assei etminītun si kliptaswīr
'noemailcreate' => 'Tebbei prawerru enwestun tikrÅmiskan e-mail adressin',
'passwordsent' => 'NÄuns kliptaswÄ«rds pastÄi tengÄ«ntan en e-mail adressin stesse tÄ“rpautajan" $1".
Panzdau gaūsenin, enjaīs etkūmps.',
-'blocked-mailpassword' => 'TwajÄ IP adressi ast blÅkitan ezze redigÄ«snai be stesse paggan ni assei enwarÄ«ntan tÄ“rpautun kliptaswÄ«rdas etgaÅ«snas funkciÅnin, kÄi pakÅ«nlai ezze wargaitÄ“rpausnai.',
+'blocked-mailpassword' => 'TwajÄ IP adressi ast blÅkitan ezze redigÄ«snai be stesse paggan ni assei enwarÄ«ntan tÄ“rpautun kliptaswÄ«rdas etgaÅ«snas funkciÅnin, kÄi pakÅ«ntlai ezze wargaitÄ“rpausnai.',
'eauthentsent' => 'PadrÅ«ktinsenis pastÄi tengÄ«ntan na e-mail adressin.
-Ä’mpirzdan ainuntkawÄ«das kittas waÄ«stis wÄ«rst bÅ«wuÅ¡as tengÄ«ntan na Å¡an adressin, prawerru izpilnintun instrukciÅnins papeisÄtans en e-mailu. TÄ«t tu wÄ«rst padrÅ«ktiwuns(si), kÄi Å¡Ä« e-mail adressi perlÄnke prei tin.',
+Ä’mpirzdan ainuntkawÄ«das kittas waÄ«stis wÄ«rst bÅ«wuÅ¡as tengÄ«ntan na Å¡an adressin, prawerru izpilnintun instrukciÅnins papeisÄtans en e-mailu. TÄ«t tu wÄ«rst padrÅ«ktinuns(si), kÄi Å¡Ä« e-mail adressi perlÄnke prei tin.',
'throttled-mailpassword' => 'KliptaswÄ«rdas preiminÄ«senis ast jÄu tengÄ«ntan en {{PLURAL:$1|panzdauman stÅ«ndin|panzdaumans $1 stÅ«ndins}}.
-KÄi pakÅ«nlai ezze wargaitÄ“rpausnai, tÄ“r aÄ«ns kliptaswÄ«rdas preiminÄ«senis ast tengÄ«ntan en {{PLURAL:$1|stÅ«ndin|$1 stÅ«ndins}}.',
+KÄi pakÅ«ntlai ezze wargaitÄ“rpausnai, tÄ“r aÄ«ns kliptaswÄ«rdas preiminÄ«senis ast tengÄ«ntan en {{PLURAL:$1|stÅ«ndin|$1 stÅ«ndins}}.',
'mailerror' => 'Prei e-mail pustis tengÄ«nsnan, tikka blÄnda $1',
'acct_creation_throttle_hit' => 'Iz IP adressin, kawÄ«dan tÅ« tÄ“rpaui teÄ«kÄ“ di jÄu Å¡andÄ“inan {{PLURAL:$1|rekkenan|rekkenans}}, ka ast maksimÄls preiwÄ“rpts gÄ«rbis en Å¡in kÄ“rdan.
Stesse paggan, tērpawintei šan adressin ni mazīngi teinū segītun ripīntin rekkenan.',
@@ -476,7 +466,7 @@ Tu mazzi ignÅritun Å¡in waÄ«stin, ik rekkens pastÄi teÄ«ktan blÄndas paggan.'
GÄ“ideis biskin, pirzdau tu wÄ«rst bandÄwuns etkÅ«mps.',
'loginlanguagelabel' => 'BilÄ: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Kitawīdinais kliptaswīrdan',
'resetpass_announce' => 'TÅ« assei engÅ«buns(si) sen kÄ«smingiskan kliptaswÄ«rdan gaÅ«tan pra e-mail. KÄi wangÄ«nlai enÄ“isenes prÅcesan, ensadinnais nÄunan kliptaswÄ«rdan stwi:',
'resetpass_header' => 'Kitawīdinais kliptaswīrdan per swajjan rekkenan',
@@ -484,7 +474,7 @@ GÄ“ideis biskin, pirzdau tu wÄ«rst bandÄwuns etkÅ«mps.',
'newpassword' => 'NÄuns kliptaswÄ«rds',
'retypenew' => 'Ä€ntrinais nÄunan kliptaswÄ«rdan',
'resetpass_submit' => 'Ensadinnais kliptaswīrdan be enjaīs',
-'resetpass_success' => 'TwÄjs kliptaswÄ«rds pastÄi izpalewÄ«ngi kitawÄ«dintan! EnÄ“isna wÄ“raui...',
+'resetpass_success' => 'TwÄjs kliptaswÄ«rds pastÄi izpalewÄ«ngi kitawÄ«dintan! EneisnÄ wÄ“raui...',
'resetpass_forbidden' => 'Kliptaswīrdai ni mazzi būtwei kitawīdintan',
'resetpass-no-info' => 'TÅ« turri bÅ«twei engÅ«bun, kÄi turÄ«lai entikriskan preiÄ“isenin prei Å¡in pÄusan.',
'resetpass-submit-loggedin' => 'Kitawīdinais kliptaswīrdan',
@@ -500,14 +490,12 @@ Mazzingi tÅ« assei ka tÄ“r kitawÄ«dinuns swajjan kliptaswÄ«rdan anga assei madlÄ
'link_sample' => 'Autengīnsenes tītels',
'link_tip' => 'Ēntrewingis autengīnsenis',
'extlink_sample' => 'http://www.example.com autengīnsenes tītels',
-'extlink_tip' => 'Izwinandas autengīnsenis (paminnais ezze prefiksan http:// )',
+'extlink_tip' => 'Izwinandas autengīnsenis (pamennais ezze prefiksan http:// )',
'headline_sample' => 'Sirzdatītelas teksts',
'headline_tip' => 'Āntras līgmenes sirzdatītelis',
-'math_sample' => 'EnpeisÄis matemÄtiskan izbilÄ«senin stwi',
-'math_tip' => 'MatemÄtiskas izbilÄ«senis (LaTeX)',
'nowiki_sample' => 'Stwi enpeisÄis nifÅrmatitan tekstan',
'nowiki_tip' => 'IgnÅris wiki fÅrmatisnan',
-'image_tip' => 'GrafÄ«ki anga kits endÄ«ts en pÄusu zÅ«rbrukis',
+'image_tip' => 'GrÄfiki anga kits endÄ«ts en pÄusu zÅ«rbrukis',
'media_tip' => 'Autengīnsenis prei zūrbrukin',
'sig_tip' => 'TwÄjs papeisÄsenis sen dÄtan be kÄ“rdan',
'hr_tip' => 'UricÅntali (tÄ“rpaus taupÄ«ngi)',
@@ -523,9 +511,9 @@ Mazzingi tÅ« assei ka tÄ“r kitawÄ«dinuns swajjan kliptaswÄ«rdan anga assei madlÄ
'showlivepreview' => 'DinÄmiska pirmÄdira',
'showdiff' => 'Waidinnais kitawīdinsnans',
'anoneditwarning' => "'''NÅda:''' TÅ« ni assei engÅ«bun. TwajÄ IP adressi wÄ«rst bÅ«wusi enpeisÄtan en Å¡isse pÄusas redigÄ«snas istÅrijan.",
-'missingsummary' => "'''NÅda:''' Ni assei enwedduns ebpeisÄsenin stÄ“isan kitawÄ«disnan.
+'missingsummary' => "'''NÅda:''' Ni assei enwedduns ebpeisÄsenin stÄ“isan kitawÄ«dinsnan.
Ik tÅ« ni kwaitÄ“i din enwestun, gnetteis etkÅ«mps knuppan \"EnpeisÄis\".",
-'missingcommenttext' => 'Madli, enpeisÄis kÅmentaran zemmais.',
+'missingcommenttext' => 'Madli, enpeisÄis kumentÄran zemmais.',
'missingcommentheader' => "'''NÅda:''' KumentÄras tÄ«tels ast pÄustan.
Kaddan tÅ« wÄ«rst gnettuns(si) \"EnpeisÄis\" etkÅ«mps, twÄjs kumentÄrs wÄ«rst bÅ«wuns enpeisÄtan Å¡lÄit tÄ«telin.",
'summary-preview' => 'EbpeisÄsenes pirmÄdira:',
@@ -542,7 +530,7 @@ Brewīnsli ast \'\'$2\'\'.
TÅ« mazzi kÅntaktitwei si sen $1 anga kittan [[{{MediaWiki:Grouppage-sysop}}|perwaldÄ«tajan]] kÄi diskutÄ«twei blÅkisenin.
TÅ« ni mazzi tÄ“rpautun "tenginnais e-mailin tÄ“rpautaju" mazÄ«ngiskwan, ik tikrÅmiska e-mail adressi ni ast padÄtan en twajÄmans [[Special:Preferences|rekkenas pirminiskwans]] anga ik Å¡Ä« mazÄ«ngisku ast blÅkitan.
-TwajÄ bigÄnta IP adressi ast $3 be blÅkisenes ID nummeri ast #$5.
+TwajÄ bigantÄ« IP adressi ast $3 be blÅkisenes ID nummeri ast #$5.
Madli ebimmais wissans Å¡ins malkans en wisÄ“imans prasÄ«senins ezze blÅkisenin.',
'autoblockedtext' => '<big>\'\'TwajÄ tÄ“rpautajas pabilisnÄ anga IP adressi pastÄi blÅkitan.\'\'\'</big>
@@ -555,14 +543,14 @@ Brewīnsli ast \'\'$2\'\'.
TÅ« mazzi kÅntaktitwei si sen $1 anga kittan [[{{MediaWiki:Grouppage-sysop}}|perwaldÄ«tajan]] kÄi diskutÄ«twei blÅkisenin.
TÅ« ni mazzi tÄ“rpautun "tenginnais e-mailin tÄ“rpautaju" mazÄ«ngiskwan, ik tikrÅmiska e-mail adressi ni ast padÄtan en twajÄmans [[Special:Preferences|rekkenas pirminiskwans]] anga ik Å¡Ä« mazÄ«ngisku ast blÅkitan.
-TwajÄ bigÄnta IP adressi ast $3 be blÅkisenes ID nummeri ast #$5.
+TwajÄ bigantÄ« IP adressi ast $3 be blÅkisenes ID nummeri ast #$5.
Madli ebimmais wissans Å¡ins malkans en wisÄ“imans prasÄ«senins ezze blÅkisenin.',
'blockednoreason' => 'ni padÄi di tikslin',
'blockedoriginalsource' => "Appun stesse '''$1''' ast waidīntan zemmais:",
'blockededitsource' => "Tekst stÄ“isan '''TwajÄi redigÄ«senei''' en '''$1''' ast waidÄ«ntan zemmais:",
'whitelistedittitle' => 'EnÄ“isenis ast izkÄ«nintan, kÄi redigÄ«lai',
'whitelistedittext' => 'Tu turri $1, kÄi redigÄ«lai pÄusans.',
-'confirmedittext' => 'Redigīsna ast mazīngi tēr pa e-mailas padrūktinsnan.
+'confirmedittext' => 'RedigisnÄ ast mazÄ«ngi tÄ“r pa e-mailas padrÅ«ktinsnan.
PadÄis e-mail adressi be padrÅ«ktinais din en swajÄmans [[Special:Preferences|tÄ“rpautajas pirminiskwans]].',
'nosuchsectiontitle' => 'Ni ast stawÄ«da sekciÅni',
'nosuchsectiontext' => 'TÅ« bandÄi redigÄ«tun sekciÅnin, kawÄ«da ni ekzistijja.',
@@ -575,56 +563,56 @@ PadÄis e-mail adressi be padrÅ«ktinais din en swajÄmans [[Special:Preferences|
KÄi teÄ«klai Å¡in pÄusan, pagaÅ«neis enpeisÄtun en zemmaiÅ¡asmu lÄukan (wÄ«dais [[{{MediaWiki:Helppage}}|help page]] per tÅ«ls infÅrmaciÅnis).
Ik tÅ« ni kwaitÄ«wuns(si) teÄ«ktun nÄunan pÄusan, gnetteis "EtwÄrtai" knuppan en twajjai lasÄtlin.',
'anontalkpagetext' => "----''Sta ast anÅnimas tÄ“rpautajas diskusiÅnis pÄusan - stawÄ«dan, kawÄ«ds ni turri dabber swajjan rekkenan anga ni tÄ“rpaui din.
-KÄi identificÄ«lai tennan, tÄ“rpauimai IP adressins.
+KÄi identificÄ«lai tennan, tÄ“rpawimai IP adressins.
Adder IP adressi mazzi būtwei dallautan pra tūlin tērpautajans.
-Ik tu assei anÅnims tÄ“rpautajs be tu mÄ«ri, kÄi kumentÄrai stwi ni ast wartÄ«ntan prei tin, [[Special:UserLogin/signup|teÄ«keis rekkenan]] anga [[Special:UserLogin|enÄ“is]] kÄi aulÄnktun perejÄ«ngiskans kurtÄ«senins sen kittans anÅnimans tÄ“rpautajs.''",
+Ik tu assei anÅnims tÄ“rpautajs be tu mÄ«ri, kÄi kumentÄrai stwi ni ast wartÄ«ntan prei tin, [[Special:UserLogin/signup|teÄ«keis rekkenan]] anga [[Special:UserLogin|enÄ“is]] kÄi aulÄnktun perejÄ«ngins kurtÄ«senins sen kittans anÅnimans tÄ“rpautajs.''",
'noarticletext' => 'TÄ“nti Å¡in pÄusan ni turri Ä“n sen tekstan.
Tu mazzi [[Special:Search/{{PAGENAME}}|laukÄ«tun Å¡isse pÄusas tÄ«telin]] en kitÄ“imans pÄusans,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pralaukītun registerin],
anga [{{fullurl:{{FULLPAGENAME}}|action=edit}} redigÄ«tun Å¡in pÄusan]</span>.',
-'userpage-userdoesnotexist' => 'Tērpautajs "$1" ni ast registrītan.
+'userpage-userdoesnotexist' => 'Tērpautajs "<nowiki>$1</nowiki>" ni ast registrītan.
IzbÄndais, anga tÅ« perarwi kwaitÄ«wuns teÄ«ktun/redigÄ«tun Å¡in pÄusan.',
'userpage-userdoesnotexist-view' => 'Tērpautajas rekkens "$1" ni ast registrītan.',
-'clearyourcache' => "'''NÅda: KitawÄ«disnas pa enpeisÄsnan stÄ“isan nÄunan ensadÄ«nsenin mazzi ni bÅ«twei widÄminan. Prawerru skÄ«stintun lasÄltas rÄnkas minÄ«snan.'''
-*'''Mozilla, Firefox anga Safari - ''' zabÄis \"Shift\" gnestan ne gnetteis \"EtnÄunais\" anga gnetteis \"Ctrl-F5\" anga \"Ctrl-R\" (\"Command-R\" en Macu);
+'clearyourcache' => "'''NÅda: KitawÄ«dinsnas pa enpeisÄsnan stÄ“isan nÄunan ensadÄ«nsenin mazzi ni bÅ«twei widÄminan. Prawerru skistÄ«ntun lasÄltas rÄnkas minÄ«snan.'''
+*'''Mozilla, Firefox anga Safari - ''' zabÄis \"Shift\" gnestan ne gnetteis \"Etnauninnais\" anga gnetteis \"Ctrl-F5\" anga \"Ctrl-R\" (\"Command-R\" en Macu);
*'''Konqueror:''' gnetteis '''EtwÄrtai kraÅ«neis\" anga \"F5\";
-'''Opera:''' skÄ«stinais rÄnkas minÄ«snan en \"Ä’nrankis-Pirminiskwas\";
-'''Internet Explorer:''' zabÄis \"Ctrl\" gnettintei \"EtnÄuninais\" anga gnetteis \"Ctrl-F5\".",
-'usercsspreview' => "'''Paminnais, kÄi sta ast tÄ“r twÄise CSS pirmÄdira - nika dabber ni pastÄi enpeisÄtan!'''",
-'userjspreview' => "'''Paminnais, kÄi sta ast tÄ“r twÄise JS kÅdas pirmÄdira - nika dabber ni pastÄi enpeisÄtan!'''",
+'''Opera:''' skistinnais rÄnkas minÄ«snan en \"Ä’nrankis-Pirminiskwas\";
+'''Internet Explorer:''' zabÄis \"Ctrl\" gnetÄ«ntei \"Etnauninnais\" anga gnetteis \"Ctrl-F5\".",
+'usercsspreview' => "'''Pamennais, kÄi sta ast tÄ“r twÄise CSS pirmÄdira - nika dabber ni pastÄi enpeisÄtan!'''",
+'userjspreview' => "'''Pamennais, kÄi sta ast tÄ“r twÄise JS kÅdas pirmÄdira - nika dabber ni pastÄi enpeisÄtan!'''",
'userinvalidcssjstitle' => "'''Ēmpirssergīsenis:''' Ni ast prusna \"\$1\".
-Paminnais kÄi tÄ“rpautajas .css be .js pÄusai turri pagaÅ«tun si sen lÄ«kutan litteran, p. e.g. {{ns:user}}:Foo/vector.css, ni {{ns:user}}:Foo/Vector.css.",
+Pamennais kÄi tÄ“rpautajas .css be .js pÄusai turri pagaÅ«tun si sen lÄ«kutan litteran, p. e.g. {{ns:user}}:Foo/vector.css, ni {{ns:user}}:Foo/Vector.css.",
'updated' => '(Ernaunīntan)',
'note' => "'''Endirīsenis:'''",
'previewnote' => "'''Sta ast tÄ“r pirmÄdira.'''
KitawÄ«dinsnas dabber ni pastÄi enpeisÄtan!\"",
'previewconflict' => 'PirmÄdira waidinna tekstan iz aÅ«ktan redigÄ«snas laÅ«kan. TÄ«t pawaidÄ«nlai pÄusan, ik tÅ« prestlai din enpeisÄtun.',
-'session_fail_preview' => "'''EtwÄ«nuis! Mes ni mazÄ“imai karwintun twajjan redigÄ«senin, sesiÅnis dÄtas izmÄitinsnas paggan.'''
-Madli bandÄis etkÅ«mps.
-Ik sta aÄ«nat ni dÄ«lilai, bÄndais [[Special:UserLogout|izÄ“itwei]] be etwÄrtai enÄ“itwei.",
-'session_fail_preview_html' => "'''EtwÄ«nuis! Mes ni mazÄ“imai karwintun twajjan redigÄ«senin, sesiÅnis dÄtas izmÄitinsnas paggan.'''
+'session_fail_preview' => "'''EtwinÅ«jais! Mes ni mazÄ“imai karwintun twajjan redigÄ«senin, sesiÅnis dÄtas izmÄitinsnas paggan.'''
+Madli bandais etkūmps.
+Ik sta aÄ«nat ni dÄ«lilai, bandais [[Special:UserLogout|izÄ“itwei]] be etwÄrtai enÄ“itwei.",
+'session_fail_preview_html' => "'''EtwinÅ«jais! Mes ni mazÄ“imai karwintun twajjan redigÄ«senin, sesiÅnis dÄtas izmÄitinsnas paggan.'''
'' Beggi {{SITENAME}} turri \"jÄls HTML\" enklaÅ«tan, pirmÄdira ast kliptintan, kai pakÅ«nslai si ezze JavaScript atakkimans.''
-'''Ik sta ast tikrÅmiskas redigÄ«senes bandÄsenis, madli bÄndais etkÅ«mps.'''
-Ik sta aÄ«nat ni dÄ«lilai, bÄndais [[Special:UserLogout|izÄ“itwei]] be etkÅ«mps enÄ“itwei.",
+'''Ik sta ast tikrÅmiskas redigÄ«senes bandÄsenis, madli bandais etkÅ«mps.'''
+Ik sta aīnat ni dīlilai, bandais [[Special:UserLogout|izēitwei]] be etkūmps enēitwei.",
'editing' => 'TÅ« redigijja $1',
'editingsection' => 'TÅ« redigijja $1 (sekciÅni)',
-'editingcomment' => 'TÅ« redigijja $1 (nÄuna sekciÅni)',
+'editingcomment' => 'TÅ« redigijja $1 (naunÄ sekciÅni)',
'editconflict' => 'RedigÄ«senin kÅnfliktan: $1',
'explainconflict' => "Ainunts kits ast kitawÄ«dinuns Å¡in pÄusan ezkÄ“rdai tÅ« pagaÅ«wa redigÄ«tun din.
Tekstas laÅ«ks aÅ«ktais turri Ä“n sen pÄusas tekstan, kawÄ«ds bigÄntei ekzistijja.
Twajjas kitawīdinsnas ast waidīntan en zemmaišasmu tekstas laūkan.
-Tebbei prawerru wīrstwei senlaīwuns(si) twajjans kitawīdinsnans sen ekzistīntin tekstan.
+Tebbei prawerru wīrstwei senlījuns(si) twajjans kitawīdinsnans sen ekzistīntin tekstan.
'''TÄ“r''' teksts en aÅ«ktaiÅ¡asmu tekstas laÅ«kan wÄ«rst bÅ«wuns enpeisÄtan, kaddan tu wÄ«rst gnettuns \"{{int:savearticle}}\".",
'yourtext' => 'TwÄjs teksts',
'storedversion' => 'EnpeisÄta wersiÅni',
'nonunicodebrowser' => '"EmpirssergÄ«senis: TwajÄ lasÄtla ni erzinna tikrÅmiskai UTF-8 kÅdisnan (Unicode).
Stesse paggan wisÄi zentlai pastÄi mainÄtan sen tenÄ“isan uÅ¡nadesimtiskan kÅdan.',
'editingold' => "'''Ä’mpirssergÄ«senis: TÅ« redigijja niaktuÄlin Å¡isse pÄusas wersiÅnin.'''
-Ik tÅ« enpeisÄlai di, wissas kitawÄ«disnas segÄ«tas ezze Å¡issei wersiÅnin wÄ«rst bÅ«wuÅ¡as naÄ«kintan.",
+Ik tÅ« enpeisÄlai di, wissas kitawÄ«dinsnas segÄ«tas ezze Å¡issei wersiÅnin wÄ«rst bÅ«wuÅ¡as naikÄ«ntan.",
'yourdiff' => 'Šlaitīntai',
-'copyrightwarning' => "Ä’ndija en {{SITENAME}} ast preiÄ“iminintan Å¡lÄit arÄikinsenins pa licÄ“ncin \$2 (widÄis malkans en \$1).
+'copyrightwarning' => "Ä’ndija en {{SITENAME}} ast preiÄ“iminintan Å¡lÄit arÄikinsenins pa licÄ“ncin \$2 (wÄ«dais malkans en \$1).
Ik tÅ« ni kwaitÄ“i, kÄi twÄjs teksts bÅ«lai ebwÄ«rpai kitawÄ«dintan, be paplattintan pra eraÄ«nan, ni endÄ«s din stwi.
TÅ« dÄ«gi pataÅ«kina, kÄi tÅ« peisÄi din subs, anga kÅpi iz \"public domain\" anga kittan pawÄ«rpan appun.
'''Ni endÄ«s materiÄlin kÅ«nstan pra autÅras tikrÅmin Å¡lÄit waldÄ«tajas preiwÄ“rpsenin!'''",
@@ -639,7 +627,7 @@ Teksts ni mazzi bÅ«twei enpeisÄtan.",
'cascadeprotectedwarning' => "'''Ä’mpirssergÄ«senis:''' Å in pÄusan pastÄi pakÅ«nstan. TÄ“r tÄ“rpautajai sen perwaldÄ«tajas enwarÄ«nsenin mazzi din redigÄ«tun. Å in pÄusan weldÄ“i pakÅ«nsenin pa {{PLURAL:$1|ripÄ«ntin pakÅ«nstan pÄusan|ripÄ«ntins pakÅ«nstans pÄusans}}:",
'titleprotectedwarning' => "'''Ä’mpirssergÄ«senis: Å in pÄusan pastÄi pakÅ«nstan be [[Special:ListGroupRights|swajÄ«ngei enwarÄ«nsenei]] ast izkÄ«nintan kÄi teÄ«klai din.'''",
'templatesused' => '{{PLURAL:$1|Template|Å ablÅnis}} tÄ“rpautas en Å¡ismu pÄusan:',
-'templatesusedpreview' => '{{PLURAL:$1|Template|Å ablÅnis}} tÄ“rpautas en Å¡issei pirzdiran:',
+'templatesusedpreview' => '{{PLURAL:$1|Template|Å ablÅnis}} tÄ“rpautas en Å¡ismu pirmÄdiran:',
'templatesusedsection' => '{{PLURAL:$1|Template|Å ablÅnis}} tÄ“rpautas en Å¡issei sekciÅnin:',
'template-protected' => '(pakūnstan)',
'template-semiprotected' => '(delīkiskai pakūnstan)',
@@ -652,9 +640,9 @@ TÅ« mazzi redigÄ«tun ekzistÄ«ntins pÄusans anga [[Special:UserLogin|enÄ“itwei a
'permissionserrorstext' => 'TÅ« ni turri preiwÄ“rpsenin, kÄi segÄ«lai stan, {{PLURAL:$1|stawÄ«dses brewÄ«nslis|stawÄ«dan brewÄ«nslin}} paggan:',
'permissionserrorstext-withaction' => 'Tū ni turri preiwērpsenin prei $2, {{PLURAL:$1|stawīdses brewīnslis|stawīdan brewīnslin}} paggan:',
'log-fulllog' => 'WÄ«dais pilnan registerin',
-'edit-hook-aborted' => 'RedigÄ«sna autÄ“nsta Änsas paggan.
+'edit-hook-aborted' => 'RedigisnÄ autÄ“nsta Änsas paggan.
TÄns tikka niwaÄ«stan paggan.',
-'edit-gone-missing' => 'Ni bÄ“i mazÄ«ngi etnÄunintun pÄusan.
+'edit-gone-missing' => 'Ni bÄ“i mazÄ«ngi etnaunÄ«ntun pÄusan.
PerwaidinnÄ di, kÄi tennan pastÄi Äupausintan.',
'edit-conflict' => 'RedigÄ«senin kÅnfliktan.',
'edit-no-change' => 'TwÄjs redigÄ«senis pastÄi ignÅritan, beggi tÄns ni kitawÄ«dina nika en tekstu.',
@@ -673,7 +661,7 @@ Ainuntas Å¡ablÅnis ni wÄ«rst pastÄwuns tÄ“rpautan.',
'parser-template-recursion-depth-warning' => 'Å ablÅnis rekursiÅni arÄikinsenis kÄ«rsa pratreptan ($1)',
# "Undo" feature
-'undo-success' => 'RedigÄ«senis mazzi bÅ«twei etwartÄ«ntan. PalÄ«ginais waidÄ«ntans Å¡laitÄ«ntans sirzdau wersiÅnins be enpeisÄis kitawÄ«disnans.',
+'undo-success' => 'RedigÄ«senis mazzi bÅ«twei etwartÄ«ntan. PalÄ«ginais waidÄ«ntans Å¡laitÄ«ntans sirzdau wersiÅnins be enpeisÄis kitawÄ«dinsnans.',
'undo-failure' => 'Ni mazÄ«ngi etwÄrtai wartÄ«ntun redigÄ«senin, kÅnfliktas sen persirzdausnas wersiÅnins paggan.',
'undo-norev' => 'RedigÄ«senis ni mazzi bÅ«twei etwÄrtai wartÄ«ntan, beggi ni ekzistijja anga pastÄi Äupausintan.',
'undo-summary' => 'EtwÄrtai wartÄ«nsna stÄ“isan wersiÅnin $1 teÄ«ktan pra [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusiÅni]])',
@@ -687,15 +675,15 @@ BrewÄ«nsli dÄtan pra $3 ast "$2"',
# History pages
'viewpagelogs' => 'WÄ«dais Å¡isse pÄusas regÄ«sterins',
'nohistory' => 'Ni ast redigÄ«snas istÅrija per Å¡in pÄusan.',
-'currentrev' => 'BigÄnta wersiÅni',
-'currentrev-asof' => 'BigÄnta wersiÅni iz $1',
+'currentrev' => 'BigantÄ« wersiÅni',
+'currentrev-asof' => 'BigantÄ« wersiÅni iz $1',
'revisionasof' => 'WersiÅni iz $1',
'revision-info' => 'WersiÅni stesse(s) $2 iz $1',
'previousrevision' => '↠Ānkstaisi wersiÅni',
'nextrevision' => 'NÄunaisi wersiÅni →',
-'currentrevisionlink' => 'BigÄnta wersiÅni',
+'currentrevisionlink' => 'BigantÄ« wersiÅni',
'cur' => 'big.',
-'next' => 'ripīntan',
+'next' => 'ripīntin',
'last' => 'pirzd.',
'page_first' => 'pagaūsenis',
'page_last' => 'wangÄ',
@@ -704,7 +692,7 @@ Lagendi: '''({{int:cur}})''' = Å¡laitÄ«ntan ezze bigÄntin wersiÅnin, '''({{int
'history-fieldset-title' => 'PradirÄ“is istÅrijan',
'history-show-deleted' => 'Ter Äupausintai',
'histfirst' => 'Ezze pagaūseņu',
-'histlast' => 'Ezze wÄngai',
+'histlast' => 'Ezze wangai',
'historysize' => '({{PLURAL:$1|1 bÄits|$1 bÄitai}})',
'historyempty' => '(pÄustan)',
@@ -714,7 +702,7 @@ Lagendi: '''({{int:cur}})''' = Å¡laitÄ«ntan ezze bigÄntin wersiÅnin, '''({{int
'history-feed-item-nocomment' => '$1 $2',
'history-feed-empty' => 'EtrÄ«nktan pÄusan ni ekzistijja.
Tennan mazÄ“i pastÄtwei Äupausintan anga tenesse tÄ«tels kitawÄ«dintan.
-BÄndais [[Special:Search|laukÄ«tun]] sirzdau nÄunans pÄusans en wiki',
+Bandais [[Special:Search|laukÄ«tun]] sirzdau nÄunans pÄusans en wiki',
# Revision deletion
'rev-deleted-comment' => '(kumentÄrs Äupausintan)',
@@ -730,7 +718,7 @@ BÄndais [[Special:Search|laukÄ«tun]] sirzdau nÄunans pÄusans en wiki',
'revdelete-nologid-title' => 'NitikrÅmiskas enpeisÄsenis en registerin',
'revdelete-no-file' => 'Etrīnkts zūrbrukis ni ekzistijja.',
'revdelete-show-file-submit' => 'JÄ',
-'revdelete-selected' => "{{PLURAL:$2|Pazentlita pÄusas [[:$1]] wersiÅni|Pazentlitas pÄusas [[:$1]] wersiÅnis}}:'''",
+'revdelete-selected' => "{{PLURAL:$2|PazentlitÄ pÄusas [[:$1]] wersiÅni|Pazentlitas pÄusas [[:$1]] wersiÅnis}}:'''",
'logdelete-selected' => "'''{{PLURAL:$1|Pazentlits registeres audÄsenis|Pazentlitai redigisenes audÄsenei}}:'''",
'revdelete-suppress-text' => 'Klipsnan prawerru tērpautun tēr prei:
* PersÅniskas dÄtas etkesnÄ
@@ -755,7 +743,7 @@ BÄndais [[Special:Search|laukÄ«tun]] sirzdau nÄunans pÄusans en wiki',
'logdelete-success' => "'''Registeres widÄminisku izpalewÄ«ngi ensadÄ«ntan.'''",
'revdel-restore' => 'kitawÄ«dinais widÄminiskwan',
'pagehist' => 'PÄusas istÅrija',
-'deletedhist' => 'Ä€upausinta istÅrija',
+'deletedhist' => 'AupausintÄ istÅrija',
'revdelete-content' => 'Ä“nturs',
'revdelete-summary' => 'kitawÄ«disnan ebpeisÄsenis',
'revdelete-uname' => 'tÄ“rpautajas pabilisnÄ',
@@ -764,7 +752,7 @@ BÄndais [[Special:Search|laukÄ«tun]] sirzdau nÄunans pÄusans en wiki',
'revdelete-hid' => 'kliptinais $1',
'revdelete-unhid' => 'ni kliptinais $1',
'revdelete-log-message' => '$1 - $2 {{PLURAL:$2|wersiÅni|wersiÅnis}}',
-'logdelete-log-message' => '$1 – $2 {{PLURAL:$2|preipalsenis|preipalsenei}}',
+'logdelete-log-message' => '$1 – $2 {{PLURAL:$2|prēipalis|prēipalai}}',
'revdelete-otherreason' => 'KitÄ/papilnimina brewÄ«nsli:',
'revdelete-reasonotherlist' => 'KitÄ brewÄ«nsli',
'revdelete-edit-reasonlist' => 'RedigÄ«s Äupausinsenes brewÄ«nslins',
@@ -777,20 +765,20 @@ WÄ«dais [[Special:IPBlockList|IP adressin blÅkisenin listin]], ik TÅ« kwaitÄ“i
# History merging
'mergehistory' => 'Senlajjais istÅrijans stÄ“isan pÄusan',
-'mergehistory-header' => 'Å in pÄusan preiwÄ“rpja ti senlaÄ«tun aÄ«nasse appus pÄusas wersiÅnins en nÄunan pÄusan.
-SeÄ«s auÅ¡audÄ«wingi, kÄi kitawÄ«disnas wÄ«rst erlaikÄwuÅ¡as pÄusas istÅriskan nistanÄ«ntiskwan.',
+'mergehistory-header' => 'Å in pÄusan preiwÄ“rpja ti senlaÄ«tun ainasse appus pÄusas wersiÅnins en nÄunan pÄusan.
+SeÄ«s auÅ¡audÄ«wingi, kÄi kitawÄ«dinsnas wÄ«rst erlaikÄwuÅ¡as pÄusas istÅriskan nistanÄ«ntiskwan.',
'mergehistory-box' => 'Senlajjais dwejjan pÄusan istÅrijans stÄ“isan kitawÄ«dinsnan:',
'mergehistory-from' => 'Appus pÄusan',
'mergehistory-into' => 'KakÄ«nslis pÄusan',
-'mergehistory-list' => 'SenlaÄ«mina kitawÄ«disnan istÅrija',
-'mergehistory-merge' => 'RipÄ«ntas [[:$1]] wersiÅnis mazzi pastÄtwei senlaÄ«tan en [[:$2]].
-Ebzentlis sen punktan en kÅlunei, kawÄ«da kitawÄ«disna turri bÅ«twei senlaÄ«tan sen Änkstaisins.
-NawigaciÅnis autengÄ«senin tÄ“rpausna naÄ«kina etrÄ«nksenin en kÅlunei.',
+'mergehistory-list' => 'SenlaÄ«mina kitawÄ«dinsnan istÅrija',
+'mergehistory-merge' => 'RipÄ«ntes [[:$1]] wersiÅnis mazzi pastÄtwei senlaÄ«tan en [[:$2]].
+Ebzentlis sen punktan en kÅlunei, kawÄ«da kitawÄ«dinsna turri bÅ«twei senlaÄ«tan sen Änkstaisins.
+NawigaciÅnis autengÄ«senin terpausnÄ naikinna etrÄ«nksenin en kÅlunei.',
'mergehistory-go' => 'Waidinnais senlaīminans kitawīdinsnans',
'mergehistory-submit' => 'Senlajjais istÅrijans stÄ“isan kitawÄ«dinsnan',
'mergehistory-empty' => 'Ni ast wersiÅnis, kawÄ«das mazÄ«lai bÅ«twei senlaÄ«tan.',
'mergehistory-success' => '$3 {{PLURAL:$3|kitawÄ«dinsna|kitawÄ«dinsnas}} en [[:$1]] pastÄi senlaÄ«tan sen [[:$2]].',
-'mergehistory-fail' => 'NimazÄ«ngi senlaÄ«tun istÅrijans stÄ“isan kitawÄ«dinsnan. KitawÄ«dinais ensadÄ«nsenins stÄ“isan parÄmetrin.',
+'mergehistory-fail' => 'NimazÄ«ngi senlaÄ«tun istÅrijans stÄ“isan kitawÄ«dinsnan. KitawÄ«dinais ensadÄ«nsenins stÄ“isan parÄmeterin.',
'mergehistory-no-source' => 'Appus pÄusan $1 ni ekzistijja',
'mergehistory-no-destination' => 'KakÄ«nslis pÄusan $1 ni ekzistijja.',
'mergehistory-invalid-source' => 'Appus pÄusan turri turÄ«tun tikrÅmiskan tÄ«telin.',
@@ -811,7 +799,7 @@ NawigaciÅnis autengÄ«senin tÄ“rpausna naÄ«kina etrÄ«nksenin en kÅlunei.',
'difference' => '(Å laitÄ«ntai sirzdau wersiÅnins)',
'lineno' => 'RindÄ $1:',
'compareselectedversions' => 'PaligÄ«nais etrÄ«nktans wersiÅnins',
-'editundo' => 'Naīkinais redigīsenin',
+'editundo' => 'Naikinnais redigīsenin',
'diff-multi' => '(Ni pawaidinnÄ di $1{{PLURAL:$1|wersiÅnin|wersiÅnins}} sirzdau Å¡ans)',
# Search results
@@ -820,9 +808,9 @@ NawigaciÅnis autengÄ«senin tÄ“rpausna naÄ«kina etrÄ«nksenin en kÅlunei.',
'searchresulttext' => 'TÅ«ls infÅrmaciÅnis ezze laukÄ«snan en {{SITENAME}} tÅ« mazzi aupaltun en [[{{MediaWiki:Helppage}}|{{int:help}}]].',
'searchsubtitle' => "RezultÄtai per prasÄ«senin '''[[:$1]]''' ([[Special:Prefixindex/$1|pÄusai, kawÄ«dai pagaÅ«ne si sen „$1â€]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|pÄusai, kawÄ«dai autenginna prei „$1â€]])",
'searchsubtitleinvalid' => "Per prasīsenin '''$1'''",
-'toomanymatches' => 'Per tÅ«lin etrÄsenei gaÅ«tan, bÄndais kittan prasÄ«senin',
-'titlematches' => 'AupalÄ di en tÄ«telimans',
-'notitlematches' => 'Ni aupalÄ di en tÄ«telimans',
+'toomanymatches' => 'Per tÅ«lin etrÄsenei gaÅ«tan, bandais kittan prasÄ«senin',
+'titlematches' => 'AupalÄ di en tÄ«telamans',
+'notitlematches' => 'Ni aupalÄ di en tÄ«telamans',
'textmatches' => 'AupalÄ di en pÄusan Ä“nturu',
'notextmatches' => 'Ni aupalÄ di en pÄusan Ä“nturu',
'prevn' => '{{PLURAL:$1|pirzdaums|pirzdaumai $1}}',
@@ -843,18 +831,18 @@ NawigaciÅnis autengÄ«senin tÄ“rpausna naÄ«kina etrÄ«nksenin en kÅlunei.',
'searchprofile-project-tooltip' => 'Laukīs en tītelin plattibimans $1',
'searchprofile-images-tooltip' => 'Laukīs zūrbrukins',
'searchprofile-everything-tooltip' => 'LaukÄ«s en pastippai Ä“nturan (dÄ«gi en diskusiÅnis pÄusamans)',
-'searchprofile-advanced-tooltip' => 'Laukīs en etrīnktamans tītelin plattibins',
+'searchprofile-advanced-tooltip' => 'Laukīs en etrinktammans tītelin plattibins',
'search-result-size' => '$1 ({{PLURAL:$2|1 wīrds|$2 wīrdai}})',
'search-result-score' => 'Ebtikewīngisku $1%',
'search-redirect' => '(prawessenis $1)',
'search-section' => '(sekciÅni $1)',
-'search-suggest' => 'Mirīwuns(si) tū ezze: $1',
-'search-interwiki-caption' => 'PalÄ«gwai prÅjaktai',
+'search-suggest' => 'Mīriwuns(si) tū ezze: $1',
+'search-interwiki-caption' => 'PaligwÄi prÅjaktai',
'search-interwiki-default' => 'RezultÄtai per $1:',
'search-interwiki-more' => '(tūls)',
'search-mwsuggest-enabled' => 'sen nadÄsnans',
'search-mwsuggest-disabled' => 'Å¡lÄit nadÄsnans',
-'search-relatedarticle' => 'RÄ«stan',
+'search-relatedarticle' => 'Ristan',
'mwsuggest-disable' => 'IzklaÅ«jais AJAX nadÄsnans',
'searcheverything-enable' => 'Laukīs en wisēimans tītelin plattibins',
'searchrelated' => 'gintawai',
@@ -862,27 +850,27 @@ NawigaciÅnis autengÄ«senin tÄ“rpausna naÄ«kina etrÄ«nksenin en kÅlunei.',
'showingresults' => "Zemmais ast listi {{PLURAL:$1|sen '''1''' rezultÄtan|stÄ“isan '''$1''' rezultÄtan}}, pagaÅ«nintei ezze '''$2'''-asmu rezutÄtan.",
'showingresultsnum' => "Zemmais ast listi {{PLURAL:$3|sen '''1''' rezultÄtan|stÄ“isan '''$3''' rezultÄtan}}, pagaÅ«nintei ezze '''$2'''-asmu rezutÄtan.",
'nonefound' => "'''NÅda''': Auprestaminai pralaukÄ«tan ast tÄ“r ainuntas tÄ«telin plattibis.
-BÄndais pagaÅ«tun laukÄ«tan frÄzin sen prefiksan \"all:\", kÄi pralaukÄ«lai pastippan Ä“nturan stesse {{SITENAME}} (Ä“mpiri sen diskusiÅnis pÄusans, Å¡ablÅnins, be t.t.), anga tÄ“rpaus palaipsÄ«tan tÄ«telin plattibin kÄigi prefiksan.",
-'search-nonefound' => 'NisÄtausna stÄ“isan rezultÄtan izpilnintan prasÄ«senes kritÄ“rijans.',
-'powersearch' => 'Paplattinta laukīsna',
-'powersearch-legend' => 'Paplattinta laukīsna',
+Bandais pagaÅ«tun laukÄ«tan frÄzin sen prefiksan \"all:\", kÄi pralaukÄ«lai pastippan Ä“nturan stesse {{SITENAME}} (Ä“mpiri sen diskusiÅnis pÄusans, Å¡ablÅnins, be t.t.), anga tÄ“rpaus palaipsÄ«tan tÄ«telin plattibin kÄigi prefiksan.",
+'search-nonefound' => 'NisatausnÄ stÄ“isan rezultÄtan izpilnintan prasÄ«senes kritÄ“rijans.',
+'powersearch' => 'PaplatintÄ laukÄ«sna',
+'powersearch-legend' => 'PaplatintÄ laukÄ«sna',
'powersearch-ns' => 'Laukīs en tītelin plattibimans:',
'powersearch-redir' => 'Waidinnais prawessenins',
'powersearch-field' => 'Laukīs',
'powersearch-toggleall' => 'WisÄi',
'powersearch-togglenone' => 'Nika',
-'search-external' => 'Izwinandauma laukīsna',
-'searchdisabled' => 'LaukÄ«sna en {{SITENAME}} pastÄi izklaÅ«tan.
+'search-external' => 'Izwinanda laukīsna',
+'searchdisabled' => 'LaukisnÄ en {{SITENAME}} pastÄi izklaÅ«tan.
En šissei kērdan tu mazzi laukītun sen Google.
-Paminnais, kÄi tenÄ“isan indeksai mazzi ni bÅ«twei aktuÄlin.',
+Pamennais, kÄi tenÄ“isan indeksai mazzi ni bÅ«twei aktuÄlin.',
# Quickbar
-'qbsettings' => 'Dīwas preiēisenes sawīnzli',
+'qbsettings' => 'Dīwas preiēisenes sawinzli',
'qbsettings-none' => 'NisatausnÄ',
'qbsettings-fixedleft' => 'PreidrÅ«ktintan prei kÄirai',
'qbsettings-fixedright' => 'Preidrūktintan prei tikrai',
-'qbsettings-floatingleft' => 'PlÅ«wints prei kÄirai',
-'qbsettings-floatingright' => 'Plūwints prei tikrai',
+'qbsettings-floatingleft' => 'PlÅ«jants prei kÄirai',
+'qbsettings-floatingright' => 'Plūjants prei tikrai',
# Preferences page
'preferences' => 'Pirminiskwas',
@@ -892,7 +880,6 @@ Paminnais, kÄi tenÄ“isan indeksai mazzi ni bÅ«twei aktuÄlin.',
'changepassword' => 'Kitawīdinais kliptaswīrdan',
'prefs-skin' => 'Prusna',
'skin-preview' => 'PirmÄdira',
-'prefs-math' => 'MatemÄtiki',
'datedefault' => 'Auprestaminan',
'prefs-datetime' => 'DÄtan be kerdÄ',
'prefs-personal' => 'TÄ“rpautajas dÄtan',
@@ -909,13 +896,11 @@ Paminnais, kÄi tenÄ“isan indeksai mazzi ni bÅ«twei aktuÄlin.',
'saveprefs' => 'EnpeisÄis',
'resetprefs' => 'Ausadinnais nienpeisÄtans kitawÄ«dinsnans',
'restoreprefs' => 'EtwÄrtai wartinnais wissans auprestaminans pirminiskwans',
-'prefs-edit-boxsize' => 'RedigÄ«snas lÄngstas debban.',
+'prefs-edit-boxsize' => 'Redigīsnas langstas debban.',
'rows' => 'RÄ«ndas:',
'columns' => 'KÅlunis:',
'searchresultshead' => 'Laukīs',
'resultsperpage' => 'RezultÄtan gÄ«rbis en pÄusu',
-'contextlines' => 'Pirmas rÄ«ndas stÄ“isan pÄusan',
-'contextchars' => 'KÅntekstas litteran gÄ«rbis en ainassei rÄ«ndan:',
'stub-threshold' => 'MaksimÄlin debban stesse pÄusan ebzentlitan kÄigi <a href="#" class="stub">daÄ«gan (stub)</a>',
'recentchangesdays' => 'Dēinan gīrbis, waidīnts en panzdaumamans kitawīdinsnans:',
'recentchangesdays-max' => 'MaksimÄlai $1 {{PLURAL:$1|deinÄ|dÄ“inas}}',
@@ -946,7 +931,7 @@ Paminnais, kÄi tenÄ“isan indeksai mazzi ni bÅ«twei aktuÄlin.',
'prefs-custom-css' => 'swÄjs CSS',
'prefs-custom-js' => 'swÄjs JavaScript',
'prefs-emailconfirm-label' => 'E-mailas padruktinsna:',
-'prefs-textboxsize' => 'RedigÄ«snas lÄngstas debban',
+'prefs-textboxsize' => 'Redigīsnas langstas debban',
'youremail' => 'TwajÄ e-mail adressi:',
'username' => 'TÄ“rpautajas pabilisnÄ:',
'uid' => 'TÄ“rpautajas ID:',
@@ -955,7 +940,7 @@ Paminnais, kÄi tenÄ“isan indeksai mazzi ni bÅ«twei aktuÄlin.',
'yourrealname' => 'Arwis emmens:',
'yourlanguage' => 'BilÄ:',
'yournick' => 'NÄuns papeisÄsenis:',
-'badsig' => "NitikrÅmiskas papeisÄsenis, izbÄndais HTML'as zentlÄ«ntajans.",
+'badsig' => "NitikrÅmiskas papeisÄsenis, izbandais HTML'as zentlÄ«ntajans.",
'badsiglength' => 'Twajs papeisÄsenis ast per ilgan.
Preiwērptan ilgan ast $1 {{PLURAL:$1|zentlin|zentlai}}.',
'yourgender' => 'Twajjan gīmtan:',
@@ -963,7 +948,7 @@ Preiwērptan ilgan ast $1 {{PLURAL:$1|zentlin|zentlai}}.',
'gender-male' => 'WÄ«rs',
'gender-female' => 'GenÄ',
'prefs-help-gender' => 'GÄ«mtas dasnÄ ni ast bÅ«tewingi. Ik tÅ« prestlai din zentlitun, prÅgrams wÄ«rst senkalsÄ«wuns si prei din.
-InformaciÅni ezze gÄ«mtan wÄ«rst bÅ«wusi widÄtan pra wissans.',
+InfÅrmaciÅni ezze gÄ«mtan wÄ«rst bÅ«wusi widÄtan pra wissans.',
'email' => 'E-mail',
'prefs-help-realname' => 'Arwis emmens ni ast būtewingi.
Ik tÅ« prestlai din dÄtun, tÄns wÄ«rst tÄ“rpautan kÄi papeisÄtun Twajjan dÄ«lin.',
@@ -991,8 +976,8 @@ TÅ« mazzi dÄ«gi etrÄ«nktun dÄtun kitÄ“imans drÄugautwei sen tin pra tÄ“rpautaj
'saveusergroups' => 'EnpeisÄis tÄ“rpautajas gruppins',
'userrights-groupsmember' => 'perlÄnke prei:',
'userrights-groups-help' => 'Tu mazzi kitawÄ«dintun gruppins, prei kawÄ«dans Å¡is tÄ“rpautajs perlÄnke:
-*Ebzentlints laÅ«ks zentli, kÄi tÄ“rpautajs perlÄnke prei Å¡an gruppin
-*Niebzentlints laÅ«ks zentli, kÄi tÄ“rpautajs ni perlÄnke prei Å¡an gruppin
+*Ebzentlits laÅ«ks zentli, kÄi tÄ“rpautajs perlÄnke prei Å¡an gruppin
+*Niebzentlits laÅ«ks zentli, kÄi tÄ“rpautajs ni perlÄnke prei Å¡an gruppin
*LÄuksna * zentli, kÄi ni mazÄ«ngi Äupausintun tÄ“rpautajan iz gruppin pa preidÄsenin anga preidÄtun pa Äupausinsenin.',
'userrights-reason' => 'Brewīnsli:',
'userrights-no-interwiki' => 'Ni assei enwarÄ«ntan kÄi kitawÄ«dinlai stÄ“isan enwarÄ«nsenin en kitÄ“imans wiki.',
@@ -1026,7 +1011,7 @@ TÅ« mazzi dÄ«gi etrÄ«nktun dÄtun kitÄ“imans drÄugautwei sen tin pra tÄ“rpautaj
'right-createpage' => 'TeÄ«keis pÄusans (ni sÄ“ntins diskusiÅnis pÄusans)',
'right-createtalk' => 'TeÄ«keis diskusiÅnis pÄusans',
'right-createaccount' => 'TÄ“rpautajan rekkenan teiksnÄ',
-'right-minoredit' => 'Ebzentlinais redigÄ«senins kÄigi malkans',
+'right-minoredit' => 'Ebzentlis redigÄ«senins kÄigi malkans',
'right-move' => 'Praskajjinais pÄusans',
'right-move-subpages' => 'Praskajjinais pÄusans Ä“mpiri sen tenÄ“isan pÅpausans',
'right-move-rootuserpages' => 'Praskajjinais tÄ“rpautajan pÄusans',
@@ -1034,55 +1019,54 @@ TÅ« mazzi dÄ«gi etrÄ«nktun dÄtun kitÄ“imans drÄugautwei sen tin pra tÄ“rpautaj
'right-suppressredirect' => 'PÄusan praskajjinsna Å¡lÄit prawessenes teÄ«ksnan en deÄ«ktu wÅ«ras tÄ«telas',
'right-upload' => 'Enkraūneis zūrbrukins na sērwerin',
'right-reupload' => 'KirsÄi peisÄis ekzistÄ«ntin zÅ«rbrukin',
-'right-reupload-own' => 'KirsÄi peisÄis ekzistÄ«ntins, ankstÄis enkraÅ«tans zÅ«rbrukins',
+'right-reupload-own' => 'KirsÄi peisÄis ekzistÄ«ntins, Änkstais enkraÅ«tans zÅ«rbrukins',
'right-reupload-shared' => 'LÅkalai kirsÄi peisÄis zÅ«rbrukins en dallautasmu repÅzitÅrijan',
'right-upload_by_url' => 'Enkraūneis zūrbrukins iz URL adressin',
'right-purge' => 'Skistinnais pÄusas rÄnkas minÄ«snan Å¡lÄit prasÄ«senin ezze padrÅ«ktinsenin',
'right-autoconfirmed' => 'RedigÄ«s delÄ«kiskai pakÅ«nstans pÄusans',
-'right-bot' => 'Ebzentlinais redigÄ«senins, kÄigi segÄ«tans autÅmatiskai',
-'right-nominornewtalk' => 'Malkas kitawÄ«disnas en tÄ“rpautajan diskusiÅnis pÄusamans ni dÄ«lina pawakÄ«senin ezze nÄunan waÄ«stin',
-'right-apihighlimits' => 'Tērpaus mūisesan līmitan en API prasīsenimans',
+'right-bot' => 'Ebzentlis redigÄ«senins, kÄigi segÄ«tans autÅmatiskai',
+'right-nominornewtalk' => 'Malkas kitawÄ«dinsnas en tÄ“rpautajan diskusiÅnis pÄusamans ni dÄ«lina pawakÄ«senin ezze nÄunan waÄ«stin',
+'right-apihighlimits' => 'Tērpaus mūisesan līmitan en API prasīsenemans',
'right-writeapi' => 'EnpeisÄis pra API interfÄcan',
'right-delete' => 'Ä€upausinais pÄusans',
'right-bigdelete' => 'Ä€upausinais pÄusans sen ilgan redigÄ«snas istÅrijan',
-'right-deleterevision' => 'Patikrintas pÄusas wersiÅnis Äupausinsna be etgaÅ«sna',
+'right-deleterevision' => 'Patikrintas pÄusas wersiÅnis Äupausinsna be etgausnÄ',
'right-deletedhistory' => 'WÄ«dais Äupausintans wersiÅnins, Å¡lÄit tenÄ“imans preipeisÄtan tekstan',
-'right-deletedtext' => 'WÄ«dais Äupausintan tekstan be Å¡laitÄ«ntans sirzdau Äupasintans wersiÅnins',
+'right-deletedtext' => 'WÄ«dais Äupausintan tekstan be Å¡laitÄ«ntans sirzdau Äupausintans wersiÅnins',
'right-browsearchive' => 'LaukÄ«s Äupausintan pÄusan',
'right-undelete' => 'EtgaÅ«neis Äupausintan pÄusan',
'right-suppressrevision' => 'PirmÄdira be etwÄrtai wartinsnÄ stÄ“isan wersiÅnin kliptintan ezze perwaldÄ«tajan',
'right-suppressionlog' => 'WÄ«dais priwÄtans registerins',
'right-block' => 'Drēudeis tērpautajamans redigītun',
-'right-blockemail' => 'Drēudeis tērpuatajamans e-mailan tengīntun',
+'right-blockemail' => 'Drēudeis tērpuatajamans e-mailin tengīntun',
'right-hideuser' => 'TÄ“rpautajas blÅkisna, niwidÄminan perÅnewingi',
'right-ipblock-exempt' => 'EbjaÄ«s blÅkisenins, autÅmatiskans blÅkisenins be blÅkisenins stÄ“isan IP adressin ebÄ«mtan',
'right-proxyunbannable' => 'EbjaÄ«s autÅmatiskans proxy blÅkisnans',
-'right-protect' => 'PakÅ«nsnas klÄdas kitawÄ«disna be preiÄ“isenis prei redigÄ«snan stÄ“isan pakÅ«nstan pÄusan',
+'right-protect' => 'PakÅ«nsnas klÄdas kitawÄ«dinsna be preiÄ“isenis prei redigÄ«snan stÄ“isan pakÅ«nstan pÄusan',
'right-editprotected' => 'RedigÄ«s pakÅ«nstans pÄusans (Å¡lÄit weldÄ«tan pakÅ«nsenin)',
'right-editinterface' => 'RedigÄ«s tÄ“rpautajas interfÄcan',
'right-editusercssjs' => 'Redigīs CSS be JavaScript zūrbrukins kitēisan tērpautajan',
'right-editusercss' => 'Redigīs CSS zūrbrukins kitēisan tērpautajan',
'right-edituserjs' => 'Redigīs JS zūrbrukins kitēisan tērpautajan',
'right-rollback' => 'DÄ«wai etwÄrtai wartinnais redigÄ«senin stesse tÄ“rpautajan, kawÄ«ds redigijja ainuntan pÄusan kÄigi panzdaums',
-'right-markbotedits' => 'Ebzentlis naÄ«kintans redigÄ«senins kÄigi bÅtas redigÄ«senins',
+'right-markbotedits' => 'Ebzentlis naikÄ«ntans redigÄ«senins kÄigi bÅtas redigÄ«senins',
'right-import' => 'ImpÅrtis pÄusans iz kittans wiki',
'right-importupload' => 'ImpÅrtis pÄusans tenginnantei zÅ«rbrukins',
'right-patrol' => 'Ebzentlis kitÄ“isan redigÄ«senins per izbandÄtans',
'right-autopatrol' => 'SwajÄi redigÄ«senei autÅmatiskai ebzentlitan per izbandÄtans',
'right-patrolmarks' => 'WÄ«dais izbandÄsnas zentlitajans stÄ“isan panzdauman kitawÄ«dinsnan',
-'right-unwatchedpages' => 'WidÄis listin stÄ“isan ninadirÄ«tan pÄusan',
+'right-unwatchedpages' => 'WÄ«dais listin stÄ“isan ninadirÄ«tan pÄusan',
'right-trackback' => 'Tenginnais "trackback"',
'right-mergehistory' => 'Senlajjais istÅrijans stÄ“isan pÄusan',
'right-userrights' => 'Redigīs enwarīnsenins wisēisan tērpautajan',
'right-userrights-interwiki' => 'Redigīs enwarīnsenins stēisan tērpautajan en kitēimans wiki',
-'right-siteadmin' => 'DÄtanbazin auklaÅ«sna be etklaÅ«sna',
-'right-reset-passwords' => 'Etkraūneis kliptaswīrdans kitēisan tērpautajan',
+'right-siteadmin' => 'DÄtanbazin auklausnÄ be etklausnÄ',
'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',
# User rights log
'rightslog' => 'Registerin stēisan tērpautajan enwarīnsenin',
-'rightslogtext' => 'Sta ast registerin stēisan tērpautajan ewarīnsenin kitawīdisnan.',
+'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)',
@@ -1092,14 +1076,14 @@ TÅ« mazzi dÄ«gi etrÄ«nktun dÄtun kitÄ“imans drÄugautwei sen tin pra tÄ“rpautaj
'action-createpage' => 'teÄ«ktun pÄusans',
'action-createtalk' => 'teÄ«ktun discusiÅnis pÄusans',
'action-createaccount' => 'teīktun šin tērpautajas rekkenan',
-'action-minoredit' => 'ebzentlitun Å¡in redigÄ«senin per mÄlkan',
+'action-minoredit' => 'ebzentlitun šin redigīsenin per malkan',
'action-move' => 'praskajjintun Å¡in pÄusan',
'action-move-subpages' => 'praskajjintun Å¡in pÄusan be tenesse pÅpausans',
'action-move-rootuserpages' => 'praskajjintun pÄusans stÄ“isan tÄ“rpautajan (Å¡lÄit pÅpausans)',
'action-movefile' => 'praskajjintun šin zūrbrukin',
'action-upload' => 'enkraūtun šin zūrbrukin',
'action-reupload' => 'kÄ«rsai peisÄis Å¡in ekzistÄ«ntin zÅ«rbrukin',
-'action-reupload-shared' => 'kirsÄis peisÄis Å¡in zÅ«rbrukin en dallautasmu repozitÅrijan',
+'action-reupload-shared' => 'kÄ«rsai peisÄis Å¡in zÅ«rbrukin en dallautasmu repozitÅrijan',
'action-upload_by_url' => 'enkraūtun šin zūrbrukin iz URL adressin',
'action-writeapi' => 'enpeisÄtun pra API interfÄcan',
'action-delete' => 'Äupausintun Å¡in pÄusan',
@@ -1113,7 +1097,7 @@ TÅ« mazzi dÄ«gi etrÄ«nktun dÄtun kitÄ“imans drÄugautwei sen tin pra tÄ“rpautaj
'action-protect' => 'kitawÄ«dintun Å¡isse pÄusan pakÅ«nsnas kladan',
'action-import' => 'impÅrtitun Å¡in pÄusan iz kittan wiki',
'action-importupload' => 'impÅrtitun Å¡in pÄusan pra zÅ«rbrukes enkraÅ«snan',
-'action-patrol' => 'ebzentlitun kitÄ“isan redigÄ«senin per zbandÄtan',
+'action-patrol' => 'ebzentlitun kitÄ“isan redigÄ«senin per izbandÄtan',
'action-autopatrol' => 'ebzentlitun swajjan redigÄ«senin per izbandÄtan',
'action-unwatchedpages' => 'widÄtun listin stÄ“isan ninadirÄ«tan pÄusan',
'action-trackback' => 'tengīntun "traceback"',
@@ -1123,7 +1107,7 @@ TÅ« mazzi dÄ«gi etrÄ«nktun dÄtun kitÄ“imans drÄugautwei sen tin pra tÄ“rpautaj
'action-siteadmin' => 'auklaÅ«tun anga izklaÅ«tun dÄtanbazin',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|kitawīdisna|kitawīdisnas}}',
+'nchanges' => '$1 {{PLURAL:$1|kitawīdinsna|kitawīdinsnas}}',
'recentchanges' => 'Panzdaumas kitawīdinsnas',
'recentchanges-legend' => 'Panzdauman kitawīdinsnan mazīngiskwas',
'recentchangestext' => 'Å in pÄusan waidinna listin stÄ“isan panzdauman kitawÄ«dinsnan en Å¡issei wiki.',
@@ -1134,7 +1118,7 @@ TÅ« mazzi dÄ«gi etrÄ«nktun dÄtun kitÄ“imans drÄugautwei sen tin pra tÄ“rpautaj
'recentchanges-label-unpatrolled' => 'Å is redigÄ«senis ni ast dabber izbandÄtan',
'rcnote' => "Zemmais ast {{PLURAL:$1|'''1''' kitawīdinsna segīta|panzdaumas '''$1''' kitawīdinsnas segītas}} en panzdaumamans {{PLURAL:$2|dēinan|'''$2''' dēinans}}, gīrbawintei ezze $5, $4.",
'rcnotefrom' => "Zemmais ast kitawīdisnas ezze '''$2''' (ērgi '''$1''' waidīntan).",
-'rclistfrom' => 'Waidinnais nÄunans kitawÄ«dinsnans pagaÅ«wintei ezze $1',
+'rclistfrom' => 'Waidinnais nÄunans kitawÄ«dinsnans pagaÅ«nintei ezze $1',
'rcshowhideminor' => '$1 malkas kitawīdisnas',
'rcshowhidebots' => '$1 bÅtai',
'rcshowhideliu' => '$1 engūbusis tērpautajai',
@@ -1152,18 +1136,18 @@ TÅ« mazzi dÄ«gi etrÄ«nktun dÄtun kitÄ“imans drÄugautwei sen tin pra tÄ“rpautaj
'number_of_watching_users_pageview' => '[$1 {{PLURAL:$1|nadirīnts tērpautajs|nadirīntei tērpautajai}}]',
'rc_categories' => 'ArÄikinais prei kategÅrijan (izsklaitinnais sen "|")',
'rc_categories_any' => 'WisÄi',
-'newsectionsummary' => '/* $1 */ nÄuna sekciÅni',
+'newsectionsummary' => '/* $1 */ naunÄ sekciÅni',
'rc-enhanced-expand' => 'Waidinnais malkans (izkīnina JavaScript)',
'rc-enhanced-hide' => 'Kliptinais malkans',
# Recent changes linked
-'recentchangeslinked' => 'Kitawīdinsnas en preirīstamans',
-'recentchangeslinked-title' => 'KitawÄ«dinsnas en pÄusans, prei kawÄ«dans "$1" autenginna',
-'recentchangeslinked-noresult' => 'Ni bÄ“i niainas kitawÄ«dinsnas en preirÄ«stamans anga autenginnantimans pÄusans en etrÄ«nktan kÄ“rdasetrapan.',
+'recentchangeslinked' => 'Kitawīdinsnas en preiristamans',
+'recentchangeslinked-title' => 'KitawÄ«dinsnas en pÄusamans, prei kawÄ«dans "$1" autenginna',
+'recentchangeslinked-noresult' => 'Ni bÄ“i niaÄ«nas kitawÄ«dinsnas en preiristamans anga autenginantimmans pÄusans en etrÄ«nktan kÄ“rdasetrapan.',
'recentchangeslinked-summary' => 'Zemmais ast listi stÄ“isan panzdauman kitawÄ«dinsnan en pÄusamans prei kawÄ«dans autenginna dÄtan pÄusan (anga en wisÄ“imans pÄusans perlÄnkintimans prei dÄtan kategÅrijan).
PÄusai iz [[Special:Watchlist|nadirÄ«tan listin]] ast pastarÄ«ntan.',
'recentchangeslinked-page' => 'PÄusas tÄ«tels',
-'recentchangeslinked-to' => 'Waidinnais kitawÄ«dinsnans en pÄusamans autenginnantins prei dÄtan pÄusan, ni en pÄusamans prei kawÄ«dans pÄusan autenginna',
+'recentchangeslinked-to' => 'Waidinnais kitawÄ«dinsnans en pÄusamans autenginÄntins prei dÄtan pÄusan, ni en pÄusamans prei kawÄ«dans pÄusan autenginna',
# Upload
'upload' => 'Enkraūneis zūrbrukin',
@@ -1176,7 +1160,7 @@ PÄusai iz [[Special:Watchlist|nadirÄ«tan listin]] ast pastarÄ«ntan.',
'upload_directory_read_only' => 'SÄ“rweris ni mazzi enpeisÄtun en fÅlderin ($1), palÄ«kitan per enkraÅ«tans zÅ«rbrukins.',
'uploaderror' => 'EnkraÅ«snas blÄnda',
'uploadtext' => "TÄ“rpaus ripÄ«ntin fÅrmularan kÄi enkraÅ«lai zÅ«rbrukin.
-KÄi widÄlai anga laukÄ«lai ankstÄis enkraÅ«tans zÅ«rbrukins jaÄ«s en [[Special:FileList|listin stÄ“isan enkraÅ«tan zÅ«rbrukin]]. EnkraÅ«senei ast enpeisÄtan en [[Special:Log/upload|enkraÅ«snas registeÅ—u]], Äupausinsenei en [[Special:Log/delete|Äupausinsnas registeÅ—u]].
+KÄi widÄlai anga laukÄ«lai Änkstais enkraÅ«tans zÅ«rbrukins jaÄ«s en [[Special:FileList|listin stÄ“isan enkraÅ«tan zÅ«rbrukin]]. EnkraÅ«senei ast enpeisÄtan en [[Special:Log/upload|enkraÅ«snas registeÅ—u]], Äupausinsenei en [[Special:Log/delete|Äupausinsnas registeÅ—u]].
ZÅ«rbrukis wÄ«rst tikkuns en pÄusu, ik tÅ« wÄ«rst tÄ“rpauwuns(si) aÄ«nan iz izbilÄ«senins:
* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>''' kÄi tÄ“rpaulai pilnan zÅ«rbrukes wersiÅnin
@@ -1199,79 +1183,75 @@ JaÄ«s en pÄusan [[Special:NewFiles|NÄunan zÅ«rbrukin galÄ“rija]], kÄi widÄtu
'ignorewarning' => 'IgnÅris Ä“mpirssergÄ«senins be kÄ«ninais zÅ«rbrukes enpeisÄsenin.',
'ignorewarnings' => 'IgnÅris wissans Ä“mpirssergÄ«snans',
'minlength1' => 'ZÅ«rbrukes pabilisnÄ turri turÄ«tun ukamazzan aÄ«nan litteran.',
-'illegalfilename' => 'ZÅ«rbrukes pabilisnÄ "$1" turri Ä“n sen zentlins drÄ“uditan en pÄusan tÄ«telimans.
+'illegalfilename' => 'ZÅ«rbrukes pabilisnÄ "$1" turri Ä“n sen zentlins drÄ“uditan en pÄusan tÄ«telamans.
Madli kitawīdinais zūrbrukes pabilīsnan be enkraūneis din etkūmps.',
'badfilename' => 'ZÅ«rbrukes pabilisnÄ pastÄi kitawÄ«dintan na "$1".',
'filetype-badmime' => 'Tengīnsna stēisan zūrbrukin stesse MIME tīpas "$1" ni ast prewērptan.',
-'filetype-bad-ie-mime' => 'Ni mazÄ«ngi enkraÅ«tun Å¡in zÅ«rbrukin, beggi Internet Explorer wÄ«rst serrÄ«puns din kÄigi "$1". StawÄ«ds zÅ«rbrukes tÄ«ps ast drÄ“udintan kÄigi pÅtencialai wÄrgingis.',
+'filetype-bad-ie-mime' => 'Ni mazÄ«ngi enkraÅ«tun Å¡in zÅ«rbrukin, beggi Internet Explorer wÄ«rst serrÄ«puns din kÄigi "$1". StawÄ«ds zÅ«rbrukes tÄ«ps ast drÄ“uditan kÄigi pÅtencialai wÄrgingis.',
'filetype-unwanted-type' => "'''\".\$1\"''' ni ast palaipsīts zūrbrukes tīps. {{PLURAL:\$3|pakwaitīts zūrbrukes tīps|pakwaitītai zūrbrukes tīpai}} ast \$2.",
'filetype-banned-type' => "'''\".\$1\"''' ast nipreiwērtpts zūrbrukes tīps. {{PLURAL:\$3|Preiwērpts zūrbrukes tīps|Preiwērptai zūrbrukes tīpai}} ast \$2.",
'filetype-missing' => 'ZÅ«rbrukis ni turri plattinsenin (perw. ".jpg").',
'large-file' => 'RÄditan ast, kÄi zÅ«rbrukes debban ni bÅ«lai mÅ«isesan nikÄi $1; Å¡isse zÅ«rbrukes debban ast $2.',
-'largefileserver' => 'ZÅ«rbrukes debban ast mÅ«isesan, nikÄi maksimÄlan preiwÄ“rptan.',
-'emptyfile' => 'EnkraÅ«ts zÅ«rbrukis perwaidinna bÅ«twei pÄustan. Sta mazzi bÅ«twei litteras blÄndas en zÅ«rbrukes pabilÄ«snai paggan. Madli izbÄndais anga zÅ«rbrukes pabilisnÄ ast tikrÅmiskan.',
-'fileexists' => "ZÅ«rbrukis sen Å¡in pabilÄ«snan jÄu ekzistijja. IzbÄndais '''<tt>[[:$1]]</tt>''', ik ni assei auÅ¡audÄ«wingi kÄi tÅ« kwaitÄ“i din kitawÄ«dintun.
+'largefileserver' => 'ZÅ«rbrukes debban ast mÅ«isesan, nikÄi maksimÄlin preiwÄ“rptan.',
+'emptyfile' => 'EnkraÅ«ts zÅ«rbrukis perwaidinna bÅ«twei pÄustan. Sta mazzi bÅ«twei litteras blÄndas en zÅ«rbrukes pabilÄ«snai paggan. Madli izbandais anga zÅ«rbrukes pabilisnÄ ast tikrÅmiskan.',
+'fileexists' => "ZÅ«rbrukis sen Å¡in pabilÄ«snan jÄu ekzistijja. Izbandais '''<tt>[[:$1]]</tt>''', ik ni assei auÅ¡audÄ«wingi kÄi tÅ« kwaitÄ“i din kitawÄ«dintun.
[[$1|thumb]]",
-'filepageexists' => "Å isse zÅ«rbrukes ebpeisÄsenes pÄusan ast jÄu teÄ«ktan: '''<tt>[[:$1]]</tt>''', adder tÄ“ntiskai niains zÅ«rbrukis sen Å¡an pabilÄ«snan ni ekzistijja.
-InformaciÅnis ezze zÅ«rbrukin, kawÄ«dans tÅ« assei enweddus, ni wÄ«rst tikkuÅ¡as en ebpeisÄsenes pÄusu.
+'filepageexists' => "Å isse zÅ«rbrukes ebpeisÄsenes pÄusan ast jÄu teÄ«ktan: '''<tt>[[:$1]]</tt>''', adder tÄ“ntiskai niaÄ«ns zÅ«rbrukis sen Å¡an pabilÄ«snan ni ekzistijja.
+InfÅrmaciÅnis ezze zÅ«rbrukin, kawÄ«dans tÅ« assei enweddus, ni wÄ«rst tikkuÅ¡as en ebpeisÄsenes pÄusu.
Ik tÅ« kwaitÄ“i, kÄi tennas pastÄlai waidÄ«ntan, tÅ« turri redigÄ«tun tennans rÄnkiskai.
[[$1|thumb]]",
'fileexists-extension' => "Zūrbrukis sen palīgun pabilīsnan ekzistijja: [[$2|thumb]]
*EnkraÅ«tas zÅ«rbrukes pabilisnÄ: '''<tt>[[:$1]]</tt>'''
*EkzistÄ«ntes zÅ«rbrukes pabilisnÄ: '''<tt>[[:$2]]</tt>'''
Etrīnkais kittan pabilīsnan.",
-'fileexists-thumbnail-yes' => "Zūrbrukis perwaidinna būtwei mazzinta grafīki \"(miniatūri)\".[[\$1|thumb]]
-IzbÄndais zÅ«rbrukin '''<tt>[[:\$1]]</tt>'''.
-Ik etrÄ«nkauts zÅ«rbrukis ast Å¡Ä« subÄ grafÄ«ki, kawÄ«da en Årginalu debban, tÅ« ni turri enkraÅ«tun papilniminan miniatÅ«rin.",
+'fileexists-thumbnail-yes' => "ZÅ«rbrukis perwaidinna bÅ«twei mazintÄ grÄfiki \"(miniatÅ«ri)\".[[\$1|thumb]]
+Izbandais zūrbrukin '''<tt>[[:\$1]]</tt>'''.
+Ik etrÄ«nkauts zÅ«rbrukis ast Å¡Ä« subÄ grÄfiki, kawÄ«da en Årginalu debban, tÅ« ni turri enkraÅ«tun papilniminan miniatÅ«rin.",
'file-thumbnail-no' => "ZÅ«rbrukes pabilisnÄ pagaÅ«ne si sen '''<tt>\$1</tt>'''.
-Perwaidinna di, kÄi sta ast mazzinta grafÄ«ki \"(thumbnail)\".
-Ik turri tū šan grafīkin en pilnasmu debban, enkraūneis din. Ik tū kwaitēi enkraūtun šan, kitawīdinais zūrbrukes pabilīsnan.",
+Perwaidinna di, kÄi sta ast mazintÄ grÄfiki \"(thumbnail)\".
+Ik turri tÅ« Å¡an grÄfikin en pilnasmu debban, enkraÅ«neis din. Ik tÅ« kwaitÄ“i enkraÅ«tun Å¡an, kitawÄ«dinais zÅ«rbrukes pabilÄ«snan.",
'fileexists-forbidden' => 'ZÅ«rbrukis sen stawÄ«dan pabilÄ«snan jÄu ekzistijja be ni mazzi bÅ«twei kirsÄi peisÄtan.
Ik tū kwaitēi enkraūtun zūrbrukin, ettreppais be enkraūneis tennan etkūmps sen kittan pabilīsnan. [[File:$1|thumb|center|$1]]',
'fileexists-shared-forbidden' => 'ZÅ«rbrukis sen Å¡in emnin jau ekzistijja en dallautan repÅzitÅrijan stÄ“isan zÅ«rbrukin.
Ik tÅ« ainatÄ«ngi kwaitÄ“i enkraÅ«tun Å¡in zÅ«rbrukin, ettreppais be tÄ“rpaus nÄunan emnin.
[[File:$1|thumb|center|$1]]',
'file-exists-duplicate' => 'Å is zÅ«rbrukis ast kÅpija {{PLURAL:$1|Å¡isse zÅ«rbrukin|Å¡Ä“isan zÅ«rbrukin}}:',
-'file-deleted-duplicate' => 'ZÅ«rbrukis idÄ“ntiskas sen Å¡in zÅ«rbrukin ([[:$1]]) pastÄi ankstÄis Äupausintan.
+'file-deleted-duplicate' => 'ZÅ«rbrukis idÄ“ntiskas sen Å¡in zÅ«rbrukin ([[:$1]]) pastÄi Änkstais Äupausintan.
Pirzdau tÄlis Ä“isnan, tebbei prawerru izbandÄtun Å¡isse zÅ«rbrukes Äupausinsenin istÅrijan.',
'uploadwarning' => 'Ēmpirssergīsenis ezze enkraūsnan',
'uploadwarning-text' => 'Madli kitawÄ«dinais zÅ«rbukes ebpeisÄsenis be bandais etkÅ«mps',
'savefile' => 'EnpeisÄis zÅ«rbrukin',
'uploadedimage' => 'ast enkraūwuns(si) "[[$1]]"',
'overwroteimage' => 'ast enkraÅ«wuns(si) nÄunan wersiÅnin stesse "[[$1]]"',
-'uploaddisabled' => 'Zūrbrukin enkraūsna izklaūtan',
-'uploaddisabledtext' => 'ZÅ«rbrukin enkraÅ«sna pastÄi izklaÅ«tan.',
-'php-uploaddisabledtext' => 'Zūrbrukin enkraūsna ast drēuditan en PHP.
-IzbÄndais ensadÄ«nsenin „file_uploadsâ€.',
+'uploaddisabled' => 'ZÅ«rbrukin enkrausnÄ izklaÅ«tan',
+'uploaddisabledtext' => 'ZÅ«rbrukin enkrausnÄ pastÄi izklaÅ«tan.',
+'php-uploaddisabledtext' => 'ZÅ«rbrukin enkrausnÄ ast drÄ“uditan en PHP.
+Izbandais ensadÄ«nsenin „file_uploadsâ€.',
'uploadscripted' => 'ZÅ«rbrukis turri Ä“n sen HTML anga skrÄ«ptan kÅdan, kawÄ«ds mazzi bÅ«twei blÄndewingi skaitÄtan pra lasÄtlin.',
'uploadvirus' => 'Šis zūrbrukis turri ēn sen wīrusan! Malkai: $1',
'upload-source' => 'Appus zūrbrukis',
-'sourcefilename' => 'WurÄ zÅ«rbrukes pabilÄ«sna:',
+'sourcefilename' => 'WurÄ zÅ«rbrukes pabilisnÄ:',
'sourceurl' => 'Appus URL:',
-'destfilename' => 'NÄuna zÅ«rbrukes pabilisnÄ:',
+'destfilename' => 'NaunÄ zÅ«rbrukes pabilisnÄ:',
'upload-maxfilesize' => 'MaksimÄlin zÅ«rbrukes debban: $1',
'upload-description' => 'ZÅ«rbrukes ebpeisÄsenis',
'upload-options' => 'EnkraÅ«snas opciÅnis',
'watchthisupload' => 'Nadirēis šin zūrbrukin',
'filewasdeleted' => 'ZÅ«rbrukis sen Å¡an pabilÄ«snan ekzistÄ«wuns, adder pastÄi Äupausintan.
-Pirzdau tÅ« wÄ«rst din etkÅ«mps enkraÅ«wuns(si), izbÄndais $1.',
-'upload-wasdeleted' => "'''Ä’mpirssergÄ«senis:''' Tu enkraÅ«ne zÅ«rbrukin, kawÄ«ds bÄ“i jÄu Äupausintan.'''
-
-Tebbei prawerru prestun, anga ast tikrÅmiskan Ä“mpirsin sadÄ«ntun enkraÅ«tun Å¡in zÅ«rbrukin.
-Å isse zÅ«rbrukes Äupausisnas registerin ast waidÄ«ntan zemmais.",
+Pirzdau tū wīrst din etkūmps enkraūwuns(si), izbandais $1.',
'filename-bad-prefix' => "EnkraÅ«tas zÅ«rbrukes pabilisnÄ pagaÅ«ne si sen '''\"\$1\"'''. Sta ast nidekskriptÄ«wa pabilisnÄ kawÄ«da ast preipeisÄtan autÅmatiskai pra digitÄlins kÄmerans.
Madli etrÄ«nkais swajasmu zÅ«rbrukin spÄrtais deskriptÄ«wan pabilÄ«snan.",
'upload-success-subj' => 'Zūrbrukes enkraūsenis izpalla',
'upload-proto-error' => 'NitikrÅmiskan prÅtokulin',
-'upload-proto-error-text' => 'IztÄliska enkraÅ«sna izkinina, kÄi URL adressi pagaÅ«lai si sen <code>http://</code> anga <code>ftp://</code>.',
+'upload-proto-error-text' => 'IztÄliska enkrausnÄ izkÄ«nina, kÄi URL adressi pagaÅ«lai si sen <code>http://</code> anga <code>ftp://</code>.',
'upload-file-error' => 'Ä’ntrewingi blÄnda',
-'upload-file-error-text' => 'Ä’ntrewingi blÄnda tikka prÄ“i kÄ«smingiskas zÅ«rbrukes teÄ«ksenes izbÄndasnan en sÄ“rweÅ—u.
-DrÄugaus sen [[Special:ListUsers/sysop|sÄ«stemas perwaldÄ«tajan]].',
-'upload-misc-error' => 'NiwaÄ«sta enkraÅ«snas blÄnda',
-'upload-misc-error-text' => 'Tikka niwaÄ«sta blÄnda enkÄ“rdas enkraÅ«senes.
-IzbandÄis, anga padÄta URL adressi ast tikrÅmiskan be preiÄ“iminan be bandÄis etkÅ«mps.
-Ik prÅblaman wÄ«rst Äntrinus, drÄugaus sen [[Special:ListUsers/sysop|sÄ«stemas perwaldÄ«tajan]].',
+'upload-file-error-text' => 'Ä’ntrewingi blÄnda tikka prÄ“i kÄ«smingiskas zÅ«rbrukes teÄ«ksenes izbandÄsnan en sÄ“rweÅ—u.
+DrÄugaus sen [[Special:ListUsers/sysop|sistÄ“mas perwaldÄ«tajan]].',
+'upload-misc-error' => 'NiwaistÄ enkraÅ«snas blÄnda',
+'upload-misc-error-text' => 'Tikka niwaistÄ blÄnda enkÄ“rdas enkraÅ«senes.
+Izbandais, anga padatÄ URL adressi ast tikrÅmiskan be preiÄ“iminan be bandais etkÅ«mps.
+Ik prÅblaman wÄ«rst Äntrinus, drÄugaus sen [[Special:ListUsers/sysop|sistÄ“mas perwaldÄ«tajan]].',
'upload-unknown-size' => 'Niwaīstan debban',
'upload-http-error' => 'HTTP blÄnda tikka: $1',
@@ -1281,10 +1261,10 @@ Ik prÅblaman wÄ«rst Äntrinus, drÄugaus sen [[Special:ListUsers/sysop|sÄ«stema
# Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>
'upload-curl-error6' => 'URL adressi ni kakīnaminan',
-'upload-curl-error6-text' => 'PadÄta URL adressi ni ast kakÄ«naminan. IzbÄndais anga padÄta URL adressi ast tikrÅminan be anga padÄtan pÄusan ast preiÄ“iminan.',
+'upload-curl-error6-text' => 'PadatÄ URL adressi ni ast kakÄ«naminan. Izbandais anga padatÄ URL adressi ast tikrÅminan be anga padÄtan pÄusan ast preiÄ“iminan.',
'upload-curl-error28' => 'Per ilgs enkraūsenis',
'upload-curl-error28-text' => 'Per ilgÄ sÄ“rweres etrÄsenes kerdÄ.
-IzbÄndais anga pÄusan dÄ«la, gÄ“ides delli minÅ«tins be izbÄndais etkÅ«mps.
+Izbandais anga pÄusan dÄ«la, gÄ“ides delli minÅ«tins be izbandais etkÅ«mps.
Tu mazzi dÄ«gi izbandÄtun kaddan sÄ“rweris ast mazzais ensegÄ«tan.',
'license' => 'Licēnci:',
@@ -1292,14 +1272,14 @@ Tu mazzi dÄ«gi izbandÄtun kaddan sÄ“rweris ast mazzais ensegÄ«tan.',
'nolicense' => 'Ni etrÄ«nkÄ di',
'license-nopreview' => '(PirmadirÄ ni preiÄ“iminan)',
'upload_source_url' => '(tikrÅmiska, perÅnewingi preiÄ“imina URL adressi)',
-'upload_source_file' => ' (zurbrÅ«kis en twÄise kÅmputeÅ—u)',
+'upload_source_file' => ' (zÅ«rbrkis en twÄise kÅmputeÅ—u)',
# Special:ListFiles
'listfiles-summary' => 'Å in speciÄlin pÄusan waidinna wissans enkraÅ«tans zÅ«rbrukins.
Auprestaminai panzdaumai enkraūtai zūrbrukei ast waidīntan en listis pagaūseņu.
Gnessenin na kÅlunis tÄ«telin kitawÄ«dina rÄ«kan.',
-'listfiles_search_for' => 'Laukīs zurbrūkin sen pabilīsnan:',
-'imgfile' => 'zurbrūkis',
+'listfiles_search_for' => 'Laukīs zūrbrukin sen pabilīsnan:',
+'imgfile' => 'zūrbrukis',
'listfiles' => 'ZÅ«rbrukin listi',
'listfiles_date' => 'DÄtan',
'listfiles_name' => 'Emmens',
@@ -1332,8 +1312,7 @@ Zemmaisi listi waidinna tēr {{PLURAL:$1|pirman autengīnsenin|pirmans $1 auteng
Preiēiminan ast dīgi [[Special:WhatLinksHere/$2|pilna listi]].',
'nolinkstoimage' => 'Nist pÄusai autengÄ«ntai prei Å¡in zÅ«rbrukin.',
'morelinkstoimage' => 'Waidinnais [[Special:WhatLinksHere/$1|tūls autengīnsenins]] prēi šin zūrbrukin.',
-'redirectstofile' => '{{PLURAL:$1|Šis zūrbrukis|Šai zūrbrukei}} prawedda prei šin zūrbrukin:',
-'duplicatesoffile' => '{{PLURAL:$1|Å is zÅ«rbrukis ast kÅpija|Å ai zÅ«rbrukei ast kÅpijas}} stesse zÅ«rbrukin ([[Special:FileDuplicateSearch/$2|tÅ«ls informaciÅnis]]):',
+'duplicatesoffile' => '{{PLURAL:$1|Å is zÅ«rbrukis ast kÅpija|Å ai zÅ«rbrukei ast kÅpijas}} stesse zÅ«rbrukin ([[Special:FileDuplicateSearch/$2|tÅ«ls infÅrmaciÅnis]]):',
'sharedupload' => 'Å is zÅ«rbrukis ast en $1 be mazzi bÅ«twei tÄ“rpautan en kitÄ“imans prÅjaktans.',
'filepage-nofile' => 'Zūrbrukis sen stawīdan pabilīsnan ni ekzistijja.',
'filepage-nofile-link' => 'Zūrbrukis sen stawīdan pabilīsnan ni ekzistijja, adder tu mazzi [$1 enkraūtun din].',
@@ -1348,20 +1327,20 @@ Preiēiminan ast dīgi [[Special:WhatLinksHere/$2|pilna listi]].',
'filerevert-comment' => 'KumentÄrs',
'filerevert-defaultcomment' => 'EtwÄrtai wartinnÄ di wersiÅnin iz $2, $1',
'filerevert-submit' => 'EtwÄrtai wartinnais',
-'filerevert-success' => "ZurbrÅ«kis '''[[Media:$1|$1]]''' pastÄi etwÄrtai wartÄ«ntan prei [$4 wersiÅnin iz $3, $2].",
+'filerevert-success' => "ZÅ«rbrukis '''[[Media:$1|$1]]''' pastÄi etwÄrtai wartÄ«ntan prei [$4 wersiÅnin iz $3, $2].",
'filerevert-badversion' => 'Nist pirzdauma lÅkala wersiÅni Å¡isse zÅ«rbrukin sen padÄtan dÄtan.',
# File deletion
'filedelete' => 'Ä€upausinais $1',
'filedelete-legend' => 'Āupausinais zūrbrukin',
'filedelete-intro' => "Tu skatta Äupausintun zÅ«rbrukin '''[[Media:$1|$1]]''' Ä“mpiri sen pastippan tenesse istÅrijan.",
-'filedelete-intro-old' => "TÅ« Äupausina zurbrÅ«kes '''[[Media:$1|$1]]''' wersiÅnin iz [$4 $3, $2].",
+'filedelete-intro-old' => "TÅ« Äupausina zÅ«rbrukes '''[[Media:$1|$1]]''' wersiÅnin iz [$4 $3, $2].",
'filedelete-comment' => 'Brewīnsli:',
'filedelete-submit' => 'Ä€upausinais',
'filedelete-success' => "'''$1''' ast Äupausintan.",
'filedelete-success-old' => "ZÅ«rbrukes '''[[Media:$1|$1]]''' wersiÅni iz $3, $2 ast Äupausintan.",
'filedelete-nofile' => "'''$1''' ni ekzistijja",
-'filedelete-nofile-old' => "Ni ast arkÄ«wita wersiÅni stesse '''$1''' sen padÄtans attributans.",
+'filedelete-nofile-old' => "Ni ast arkiwitÄ wersiÅni stesse '''$1''' sen padÄtans attributans.",
'filedelete-otherreason' => 'KitÄ (papilnimina) brewÄ«nsli:',
'filedelete-reason-otherlist' => 'KitÄ brewÄ«nsli',
'filedelete-reason-dropdown' => '*Ukadeznas brewÄ«nslis stesses Äupausinsnan
@@ -1371,10 +1350,10 @@ Preiēiminan ast dīgi [[Special:WhatLinksHere/$2|pilna listi]].',
# MIME search
'mimesearch' => 'MIME laukīsna',
-'mimesearch-summary' => 'Å in pÄusan wÄ“rpja laukÄ«snan stÄ“isan zurbrÅ«kin pa tenÄ“isan MIME tÄ«pan.
+'mimesearch-summary' => 'Å in pÄusan wÄ“rpja laukÄ«snan stÄ“isan zÅ«rbrukin pa tenÄ“isan MIME tÄ«pan.
TÄ“rpausna: Ä“nturas_tÄ«ps/pÅtips, perw. <tt>image/jpeg</tt>.',
'mimetype' => 'MIME tīps',
-'download' => 'kraūneis',
+'download' => 'izkraūneis',
# Unwatched pages
'unwatchedpages' => 'NinadirÄ«tai pÄusai',
@@ -1384,7 +1363,7 @@ TÄ“rpausna: Ä“nturas_tÄ«ps/pÅtips, perw. <tt>image/jpeg</tt>.',
# Unused templates
'unusedtemplates' => 'NitÄ“rpautai Å¡ablÅnai',
-'unusedtemplatestext' => 'Zemmais ast listi wisÄ“isan pÄusan en {{ns:template}} tÄ«telin plattibei, kawÄ«dai ni ast tÄ“rpautan pra kittans pÄusans. IzbÄndais kittans autengÄ«nsenins prei Å¡ablÅnins, pirzdau tÅ« wÄ«rst Äupausinuns Å¡in pÄusan',
+'unusedtemplatestext' => 'Zemmais ast listi wisÄ“isan pÄusan en {{ns:template}} tÄ«telin plattibei, kawÄ«dai ni ast tÄ“rpautan pra kittans pÄusans. Izbandais kittans autengÄ«nsenins prei Å¡ablÅnins, pirzdau tÅ« wÄ«rst Äupausinuns Å¡in pÄusan',
'unusedtemplateswlh' => 'kitÄi autengÄ«nsenei',
# Random page
@@ -1404,7 +1383,7 @@ TÄ“rpausna: Ä“nturas_tÄ«ps/pÅtips, perw. <tt>image/jpeg</tt>.',
'statistics-header-hooks' => 'KitÄ statistiki',
'statistics-articles' => 'Ä’nturas pÄusai',
'statistics-pages' => 'PÄusai',
-'statistics-pages-desc' => 'WisÄi pÄusai en wiki, ebimmantei diskusiÅnis pÄusai, prawessenei, be t.t.',
+'statistics-pages-desc' => 'WisÄi pÄusai en wiki, ebimÄntei diskusiÅnis pÄusai, prawessenei, be t.t.',
'statistics-files' => 'Enkraūtai zūrbrukei',
'statistics-edits' => 'PÄusas redigÄ«snas ezze tikseņu stesse {{SITENAME}}',
'statistics-edits-average' => 'Sirzds gÄ«rbis stÄ“isan redigÄ«senin per pÄusan',
@@ -1421,7 +1400,7 @@ TÄ“rpausna: Ä“nturas_tÄ«ps/pÅtips, perw. <tt>image/jpeg</tt>.',
TenÄ“imans prawerru autengÄ«ntun entikriskai prei pÄusas Ä“nturan. </br>
PÄusan ast laikÄtan per ainapreslinsnan pÄusan ik tennan tÄ“rpaui Å¡ablÅnin prei kawÄ«dan autenginna [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Dwiggubai prawessenei',
+'doubleredirects' => 'Dwigubbai prawessenei',
'doubleredirectstext' => 'Zemmais ast listi wisÄ“isan pÄusan sen prawessenins en pÄusans, kawÄ«dai prawedda en kittan pÄusan.
ErainÄ rindÄ turri Ä“n sen autengÄ«nsenins en pirman be Äntran prawessenin, tÄ«t dÄ«gi autengÄ«nsenin kwÄ“i wedda Äntars prawessenis. JÄuku panzdaums autengÄ«nsenin wedda en pÄusan, en kawÄ«dan prawerru prawestun pirmasmu pÄusan.
<del>PraglaubÄtai</del> prawessenei ast reparÄ«tan.',
@@ -1450,7 +1429,7 @@ Teinū tennan prawedda prei [[$2]].',
'nviews' => '$1 {{PLURAL:$1|kÄimalukisenis|kÄimalukisenei}}',
'specialpage-empty' => 'Ni ast rezultÄtai per Å¡in repÅrtan.',
'lonelypages' => 'AinaseÄ«lingis pÄusai',
-'lonelypagestext' => 'PrÄ“i zemaisins pÄusans ni autenginna niaÄ«nan kittan pÄusan anga tenÄ“i ni autenginna prei niaÄ«nan kittan pÄusan en {{SITENAME}}.',
+'lonelypagestext' => 'PrÄ“i zemmaisins pÄusans ni autenginna niaÄ«nan kittan pÄusan anga tenÄ“i ni autenginna prei niaÄ«nan kittan pÄusan en {{SITENAME}}.',
'uncategorizedpages' => 'NikategÅrizitai pÄusai',
'uncategorizedcategories' => 'NikategÅrizitas kategÅrijas',
'uncategorizedimages' => 'NikategÅrizitai zÅ«rbrukei',
@@ -1478,7 +1457,7 @@ Teinū tennan prawedda prei [[$2]].',
'protectedpages-indef' => 'TÄ“r pÄusai pakÅ«nstai per wisaddan',
'protectedpages-cascade' => 'TÄ“r pÄusai sen weldÄ«tan pakÅ«nsenin.',
'protectedpagestext' => 'Å Äi pÄusai ast pakÅ«nstan prÄ«ki praskajjinsnan anga redigÄ«snan.',
-'protectedpagesempty' => 'Ni ast tÄ“nti pÄusai pakÅ«nstan sen padÄtans parÄmetrins.',
+'protectedpagesempty' => 'Ni ast tÄ“nti pÄusai pakÅ«nstan sen padÄtans parÄmeterins.',
'protectedtitles' => 'PakÅ«stai pÄusan tÄ«telai',
'protectedtitlestext' => 'RipÄ«ntei pÄusan tÄ«telai ast pakÅ«nstan prÄ«ki teÄ«ksnan',
'protectedtitlesempty' => 'NiaÄ«nai tÄ«telai ast tÄ“ntiskai pakÅ«nstan sen Å¡ins parÄmeterins.',
@@ -1498,7 +1477,7 @@ KitÄi pÄusai mazzi autengÄ«ntun prei Å¡ins zÅ«rbrukins pra entikriskans URL ad
'notargettitle' => 'ÅŒbjaktan ni ekzistijja',
'notargettext' => 'Ni padÄi di pÄusan anga tÄ“rpautajan, nÅ kan dÄ«lalai Å¡is dÄ«lasenis.',
'nopagetitle' => 'Ni ast pÄusan sen stawÄ«dan adressin',
-'nopagetext' => 'PadÄta adressi ni ekzistijja.',
+'nopagetext' => 'PadatÄ adressi ni ekzistijja.',
'pager-newer-n' => '{{PLURAL:$1|nÄunaisis 1|nÄunaiÅ¡ai $1}}',
'pager-older-n' => '{{PLURAL:$1|wūraisis 1|wūraišai $1}}',
@@ -1506,8 +1485,8 @@ KitÄi pÄusai mazzi autengÄ«ntun prei Å¡ins zÅ«rbrukins pra entikriskans URL ad
'booksources' => 'LÄiskai',
'booksources-search-legend' => 'LaukÄ«s lÄiskiskans appuns',
'booksources-go' => 'Waidinnais',
-'booksources-text' => 'Zemmais ast listi stÄ“isan autengÄ«nsenin prei kittans pÄusans, kawÄ«dai perdÄst nÄunans be tÄ“rpautans lÄiskans be mazzi turÄ«tun talÄiÅ¡ins informaciÅnins ezze lÄiskan laukÄ«tan pra tin:',
-'booksources-invalid-isbn' => 'PadÄta ISBN nummeri ast erzinÄtan kÄigi nitikrÅmiska. IzbÄndais, anga padÄta nummeri preitÄra prei nummerin Ä«mtan iz appun.',
+'booksources-text' => 'Zemmais ast listi stÄ“isan autengÄ«nsenin prei kittans pÄusans, kawÄ«dai perdÄst nÄunans be tÄ“rpautans lÄiskans be mazzi turÄ«tun talÄisins infÅrmaciÅnins ezze lÄiskan laukÄ«tan pra tin:',
+'booksources-invalid-isbn' => 'PadatÄ ISBN nummeri ast erzinÄtan kÄigi nitikrÅmiska. Izbandais, anga padatÄ nummeri preitÄra prei nummerin Ä«mtan iz appun.',
# Special:Log
'specialloguserlabel' => 'TÄ“rpautajs:',
@@ -1516,15 +1495,15 @@ KitÄi pÄusai mazzi autengÄ«ntun prei Å¡ins zÅ«rbrukins pra entikriskans URL ad
'all-logs-page' => 'WisÄi perÅniskai preiÄ“iminai registerei',
'alllogstext' => 'DrÄugan registerin per wissans dÄ«lasenins en {{SITENAME}}.
Tu mazzi anzitun rezultÄtans etrÄ«nkantei registeres tÄ«pan, tÄ“rpautajas pabilÄ«snan anga pÄusas tÄ«telin.',
-'logempty' => 'Ni ast passauwintai registeres elÄmentai.',
+'logempty' => 'Ni ast passauwintei registeres elamēntai.',
'log-title-wildcard' => 'Laukīs tītelins pagauwīntins sen šin tekstan',
# Special:AllPages
'allpages' => 'WisÄi pÄusai',
'alphaindexline' => 'ezze $1 Ä“rgi $2',
-'nextpage' => 'RipÄ«ntan pÄusan ($1)',
+'nextpage' => 'RipÄ«ntin pÄusan ($1)',
'prevpage' => 'Pirzdauman pÄusan ($1)',
-'allpagesfrom' => 'Waidinnais pÄusans pagaÅ«wintins si sen:',
+'allpagesfrom' => 'Waidinnais pÄusans pagaÅ«nintins si sen:',
'allpagesto' => 'Waidinnais pÄusans wangÄ«ntans sen:',
'allarticles' => 'WisÄi pÄusai',
'allinnamespace' => 'WisÄi pÄusai (en tÄ«telin plattibei: $1)',
@@ -1532,19 +1511,19 @@ Tu mazzi anzitun rezultÄtans etrÄ«nkantei registeres tÄ«pan, tÄ“rpautajas pabil
'allpagesprev' => 'Panzdauman',
'allpagesnext' => 'Ripīntin',
'allpagessubmit' => 'Waidinnais',
-'allpagesprefix' => 'Waidinnais pÄusans sen tÄ«telins pagaÅ«wintins sen:',
-'allpagesbadtitle' => 'PadÄts tÄ«tels ast nitikrÅmiskan, turri Ä“n sen sirzdauprÅjaktiskan anga sirzdaubilliskan prefiksan. Tennan mazzi dÄ«gi turritun Ä“n sen aÄ«nan anga tÅ«ls zentlins, kawÄ«dan tÄ“rpausenis en tÄ«telimans ni ast preiwÄ“rptan.',
+'allpagesprefix' => 'Waidinnais pÄusans sen tÄ«telins pagaÅ«nintins sen:',
+'allpagesbadtitle' => 'PadÄts tÄ«tels ast nitikrÅmiskan, turri Ä“n sen sirzdauprÅjaktiskan anga sirzdaubilliskan prefiksan. Tennan mazzi dÄ«gi turritun Ä“n sen aÄ«nan anga tÅ«ls zentlins, kawÄ«dan tÄ“rpausenis en tÄ«telamans ni ast preiwÄ“rptan.',
'allpages-bad-ns' => 'En {{SITENAME}} ni ast tītelin plattibi "$1".',
# Special:Categories
'categories' => 'KategÅrijas',
-'categoriesfrom' => 'Waidinnais kategÅrijans pagaÅ«wintins sen:',
+'categoriesfrom' => 'Waidinnais kategÅrijans pagaÅ«nintins sen:',
'special-categories-sort-count' => 'rikaūjais pa gīrbin',
'special-categories-sort-abc' => 'rikaūjais pa alfabētan',
# Special:DeletedContributions
-'deletedcontributions' => 'Āupausinta tērpautajas ēndija',
-'deletedcontributions-title' => 'Āupausinta tērpautajas ēndija',
+'deletedcontributions' => 'AupausintÄ tÄ“rpautajas Ä“ndija',
+'deletedcontributions-title' => 'AupausintÄ tÄ“rpautajas Ä“ndija',
'sp-deletedcontributions-contribs' => 'Ä“ndija',
# Special:LinkSearch
@@ -1558,7 +1537,7 @@ EbÅ¡lÅ«zitai prÅtokulai: <tt>$1</tt>',
'linksearch-error' => 'MazÄ«ngi tÄ“rpautun tulapresliskan simbÅlin "*" tÄ“r en hostas pabilÄ«snas pagaÅ«seņu.',
# Special:ListUsers
-'listusersfrom' => 'Waidinnais tērpautajans pagaūwintei ezze:',
+'listusersfrom' => 'Waidinnais tērpautajans pagaūnintei ezze:',
'listusers-submit' => 'Waidinnais',
'listusers-noresult' => 'Ni aupalÄ di niaÄ«nan tÄ“rpautajan.',
'listusers-blocked' => '(blÅkitan)',
@@ -1566,7 +1545,7 @@ EbÅ¡lÅ«zitai prÅtokulai: <tt>$1</tt>',
# Special:ActiveUsers
'activeusers' => 'Aktīwan tērpautajan listi',
'activeusers-count' => '$1 {{PLURAL:$1|redigīsenis|redigīsenei}} en {{PLURAL:$3|panzdauman dēinan|$3 panzdaumans dēinans}}',
-'activeusers-from' => 'Waidinnais tērpautajans pagaūwintins sen:',
+'activeusers-from' => 'Waidinnais tērpautajans pagaūnintins sen:',
'activeusers-hidebots' => 'Kliptinais bÅtans',
'activeusers-hidesysops' => 'Kliptinais perwaldītajans',
'activeusers-noresult' => 'Ni aupalÄ di tÄ“rpautajans',
@@ -1582,7 +1561,7 @@ EbÅ¡lÅ«zitai prÅtokulai: <tt>$1</tt>',
# 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.
-IzbÄndais pÄausan sen [[{{MediaWiki:Listgrouprights-helppage}}|papilniminans informaciÅnins]] ezze enwarÄ«nsenins.',
+Izbandais pÄausan sen [[{{MediaWiki:Listgrouprights-helppage}}|papilniminans infÅrmaciÅnins]] ezze enwarÄ«nsenins.',
'listgrouprights-group' => 'Gruppi',
'listgrouprights-rights' => 'Enwarīnsenei',
'listgrouprights-helppage' => 'Help:Enwarīnsenei stēisan gruppin',
@@ -1607,7 +1586,7 @@ E-mail adressi kawÄ«dan tÅ« enpeisÄi en [[Special:Preferences|twajjans pirminis
'defemailsubject' => 'e-mail waīstis ezze {{SITENAME}}',
'noemailtitle' => 'Ni ast e-mail adressi',
'noemailtext' => 'Å is tÄ“rpautajs ni ast dÄwuns tikrÅmiskan e-mail adressin.',
-'nowikiemailtitle' => 'E-mailan gaūsna ni preiwērptan',
+'nowikiemailtitle' => 'E-mailin gausnÄ ni preiwÄ“rptan',
'nowikiemailtext' => 'Šis tērpautajs ni kwaitēi gaūtun e-mail waīstins ezze kitēimans tērpautajans.',
'email-legend' => 'Tenginnails e-mailin kitsmu {{SITENAME}} tērpautajan',
'emailfrom' => 'Ezze:',
@@ -1625,13 +1604,11 @@ E-mail adressi kawÄ«dan tÅ« enpeisÄi en [[Special:Preferences|twajjans pirminis
'watchlist' => 'Listi stēisan nadirītan',
'mywatchlist' => 'Listi stēisan nadirītan',
'nowatchlist' => 'TwajÄ listi stÄ“isan nadirÄ«tan pÄusan ast pÄustan.',
-'watchlistanontext' => 'Madli $1, kÄi widÄlai elÄmentans stesse listin stÄ“isan nadirÄ«tan.',
+'watchlistanontext' => 'Madli $1, kÄi widÄlai elamÄ“ntans stesse listin stÄ“isan nadirÄ«tan.',
'watchnologin' => 'Ni assei engūbun',
'watchnologintext' => 'TÅ« turri bÅ«twei[[Special:UserLogin|engÅ«bun]], kÄi kitawÄ«dintun listin stÄ“isan nadirÄ«tan.',
-'addedwatch' => 'PreidÄtan prei listin stÄ“isan nadirÄ«tan',
'addedwatchtext' => "PÄusan \"[[:\$1]]\" pastÄi preidÄtan prei twajjan [[Special:Watchlist|nadirÄ«tan listin]].
EraÄ«na Å¡isse pÄusas Ä“nturas kitawÄ«dinsna anga diskusiÅnis pÄusas sÄ“itan sen tennan kitawÄ«dinsna wÄ«rst bÅ«wusi enpeisÄtan en Å¡issei listin. PÄusas tÄ«tels wÄ«rst bÅ«wuns '''pastarÄ«ntan''' en [[Special:RecentChanges|listei stÄ“isan panzdauman kitawÄ«dinsnan]], kÄi lÄnginlai ti endirÄ«tun kitawÄ«dinsnan.",
-'removedwatch' => 'Āupausintan iz listin stēisan nadirītan',
'removedwatchtext' => 'PÄusan "[[:$1]]" pastÄi Äupausintan iz [[Special:Watchlist|twajjan listin stÄ“isan Äupausintan]].',
'watch' => 'Nadirēis',
'watchthispage' => 'NadirÄ“is Å¡in pÄusan',
@@ -1646,9 +1623,9 @@ EraÄ«na Å¡isse pÄusas Ä“nturas kitawÄ«dinsna anga diskusiÅnis pÄusas sÄ“itan
'watchmethod-recent' => 'IzbandasnÄ stÄ“isan panzdauman kitawÄ«disnan sirzdau nadirÄ«tans pÄusans',
'watchmethod-list' => 'IzbandasnÄ stÄ“isan nadirÄ«tan pÄusan laukÄ«ntei panzdaumans kitawÄ«disnans',
'watchlistcontains' => 'En twajjai listin stÄ“isan nadirÄ«tan ast $1 {{PLURAL:$1|pÄusan|pÄusai}}.',
-'iteminvalidname' => 'PrÅblamans sen elÄmentan "$1", nitikrÅmiska pabilisnÄ...',
+'iteminvalidname' => 'PrÅblamans sen elamÄ“ntan "$1", nitikrÅmiska pabilisnÄ...',
'wlnote' => "Zemmais pawaidinnÄ di {{PLURAL:$1|panzdauman kitawÄ«disnan|panzdaumans '''$1''' kitawidisnans}} en {{PLURAL:$2|panzdauman stundin|'''$2''' panzdaumans stundins}}.",
-'wlshowlast' => 'Waidinnais panzdaumans $1 stundins, $2 dēinans ($3)',
+'wlshowlast' => 'Waidinnais panzdaumans $1 stūndins, $2 dēinans ($3)',
'watchlist-options' => 'Nadirītan listis mazīngiskwas',
# Displayed when you click the "watch" button and it is in the process of watching
@@ -1656,7 +1633,7 @@ EraÄ«na Å¡isse pÄusas Ä“nturas kitawÄ«dinsna anga diskusiÅnis pÄusas sÄ“itan
'unwatching' => 'As wanginna nadirītwei...',
'enotif_mailer' => 'Pawakīsenis iz {{SITENAME}}',
-'enotif_reset' => 'Ebzentlinnais wissans pÄusans per kÄimalukitans',
+'enotif_reset' => 'Ebzentlis wissans pÄusans per kÄimalukitans',
'enotif_newpagetext' => 'Sta ast nÄunan pÄusan.',
'enotif_impersonal_salutation' => 'tērpautajs stesse {{SITENAME}}',
'changed' => 'kitawīdintan',
@@ -1676,11 +1653,11 @@ EraÄ«na Å¡isse pÄusas Ä“nturas kitawÄ«dinsna anga diskusiÅnis pÄusas sÄ“itan
'delete-confirm' => 'Ä€upausinais "$1"',
'delete-legend' => 'Ä€upausinais',
'historywarning' => "'''NÅda:''' PÄusan, kawÄ«dan tÅ« skatta Äupausintun, turri {{PLURAL:$1|wÅ«raisin wersiÅnin|$1 wÅ«raisins wersiÅnins}}:",
-'confirmdeletetext' => 'TÅ« skatta Äupausintun pÄusan Ä“mpiri sen pastippan tenesses istÅrijan.
-IzbÄndais, anga perarwi kwaitÄ“i tu stan segÄ«tun, kÄi tÅ« izpresta rÄ«plins, adder ka tÅ« segÄ“i ast preitarÄ«ngi sen [[{{MediaWiki:Policy-url}}pÅlitikin]].',
+'confirmdeletetext' => 'TÅ« skatta Äupausintun pÄusan Ä“mpiri sen pastippan tenesse istÅrijan.
+Izbandais, anga perarwi kwaitÄ“i tu stan segÄ«tun, kÄi tÅ« izpresta rÄ«plins, adder ka tÅ« segÄ“i ast preitarÄ«ngi sen [[{{MediaWiki:Policy-url}}pÅlitikin]].',
'actioncomplete' => 'DÄ«lasenis izpilnintan',
'actionfailed' => 'DÄ«lasenis ni izpalla',
-'deletedtext' => 'Ä€upausinÄ di "<nowiki>$1</nowiki>"
+'deletedtext' => 'Ä€upausinÄ di "$1"
WÄ«dais en $2 listin stÄ“isan panzdauman Äupausinsenin.',
'deletedarticle' => 'ast Äupausinuns(si) "[[$1]]"',
'suppressedarticle' => 'ast enkliptinuns(si) "[[$1]]"',
@@ -1707,7 +1684,7 @@ Tenesse Äupausinsenins mazÄ«lai dÄ«lintun Ärdisenins en dÄ«lasnan stesse {{SIT
'cantrollback' => 'Ni mazÄ«ngi etwÄrtai wartÄ«ntun redigÄ«senin, beggi ast tÄ“r aÄ«na Å¡isse pÄusas wersiÅni.',
'editcomment' => "RedigÄ«senes kumentÄrs: \"''\$1''\".",
'revertpage' => 'EtwÄrtai wartinnÄ di redigÄ«senins stesse tÄ“rpautajan [[Special:Contributions/$2|$2]] ([[User talk:$2|diskusiÅni]]). EtwÄrtai wartÄ«ntas wersiÅnis autÅrs ast [[User:$1|$1]]',
-'rollback-success' => 'NaÄ«kinÄ di redigÄ«senins stesse(s) $1.
+'rollback-success' => 'NaikinnÄ di redigÄ«senins stesse(s) $1.
EtwÄrtai wartinnÄ di panzdauman wersiÅnin, kawÄ«dse autÅrs ast $2.',
# Protect
@@ -1725,7 +1702,7 @@ KÄi widÄlai listin stÄ“isan tÄ“ntiskai pakÅ«nstan pÄusan, jaÄ«s en [[Special:
'protectexpiry' => 'WangÄ«nsnas kerdÄ:',
'protect_expiry_invalid' => 'WangÄ«nsnas kerdÄ ast nitikrÅmiskan.',
'protect_expiry_old' => 'WangÄ«nsnas kerdÄ ast en pragÅ«biniskwai.',
-'protect-text' => "Stwi tu mazzi izbandÄtwei be kitawÄ«dintun pÄusas '''<nowiki>$1</nowiki>''' pakÅ«nsnas lÄ«gmenin.",
+'protect-text' => "Stwi tu mazzi izbandÄtwei be kitawÄ«dintun pÄusas '''$1''' pakÅ«nsnas lÄ«gmenin.",
'protect-locked-blocked' => "Tu ni mazzi kitawÄ«dintun pakÅ«nsnas lÄ«gmenin, beggi assei blÅkitan.
TÄ“ntiskas ensadÄ«nsenei per pÄusan '''$1''':",
'protect-locked-dblock' => "Ni mazÄ«ngi kitawÄ«dintun pakÅ«nsnas lÄ«gmenin, dÄ«lantis dÄtanbazis blÅkisnas paggan.
@@ -1749,7 +1726,7 @@ Tu mazzi kitawÄ«dintun Å¡isse pÄusas pakÅ«nsnas lÄ«gmenin, adder sta ni wÄ«rst
'protect-otherreason' => 'KitÄ/papilnimina brewÄ«nsli:',
'protect-otherreason-op' => 'kitÄ/papilnimina brewÄ«nsli:',
'protect-edit-reasonlist' => 'Redigīs pakūnsenin līgmenin',
-'protect-expiry-options' => '1 stÅ«ndi:1 hour, 1 deinÄ:1 day,1 sawaÄ«ti:1 week,2 sawaÄ«tis:2 weeks,1 mÄ«nss:1 month,3 mÄ«nsai:3 months,6 mÄ«nsai:6 months,1 mettan:1 year,bewÄngiskai:infinite',
+'protect-expiry-options' => '1 stÅ«ndi:1 hour, 1 deinÄ:1 day,1 sawaÄ«ti:1 week,2 sawaÄ«tis:2 weeks,1 mÄ«nss:1 month,3 mÄ«nsei:3 months,6 mÄ«nsei:6 months,1 mettan:1 year,bewangiskai:infinite',
'restriction-type' => 'Preiwērpsenis:',
'restriction-level' => 'ArÄikinsnas lÄ«gmens:',
'minimum-size' => 'Min. debban',
@@ -1769,7 +1746,7 @@ Tu mazzi kitawÄ«dintun Å¡isse pÄusas pakÅ«nsnas lÄ«gmenin, adder sta ni wÄ«rst
# Undelete
'undelete' => 'WÄ«dais Äupausintans pÄusans',
-'undeletepage' => 'WÄ«dais be etwÄrai wartinnais Äupausintans pÄusans',
+'undeletepage' => 'WÄ«dais be etwÄrtai wartinnais Äupausintans pÄusans',
'undeletepagetitle' => "'''Zemmais ast Äupausintas wersiÅnis stesse pÄusan [[:$1]]'''.",
'viewdeletedpage' => 'WÄ«dais Äupausintans wersiÅnins',
'undeletepagetext' => '{{PLURAL:$1|RipÄ«ntin pÄusan|$1 RipÄ«ntei pÄusai}} pastÄi Äupausintan, adder aÄ«nat ast en arkÄ«wu be mazzi bÅ«twei etwÄrtai wartÄ«ntun.
@@ -1781,13 +1758,13 @@ Gnettintei '''''EtkraÅ«neis''''' tu wÄ«rst skÄ«stinuns/si kumentÄras laÅ«kan be
'undeleterevisions' => '$1 {{PLURAL:$1|wersiÅni|wersiÅnis}} arkÄ«witan',
'undeletehistory' => 'Kaddan tÅ« etwÄrtai wartinna pÄusan, wissas wersiÅnis ast etwÄrtai wartÄ«ntan en istÅrijan.
Ik nÄunan pÄusan sen stan subban emnin ast bÅ«wus teÄ«ktan ezze Äupausinseņu, etwÄrtai wartÄ«ntas wersiÅnis wÄ«rst waidinnuÅ¡as si en tenesses istÅrijan, adder tÄ“ntiska wersiÅni wÄ«rst palikkusi nikitawÄ«dintan.',
-'undeleterevdel' => 'EtteÄ«ksna ni wÄ«rst bÅ«wusi izplinintan ik sta dÄ«linlai Äupausinsenin stesse auktuÄlin pÄusan anga zÅ«rbrukin.
-En stawÄ«smu prÄ“ipalin prawerru etzentlitun anga etwÄrtai wartÄ«ntun widÄminiskwan stesses ukanÄunaisin Äupausintan wersiÅnin.',
+'undeleterevdel' => 'EtteiksnÄ ni wÄ«rst bÅ«wusi izpilnintan ik sta dÄ«linlai Äupausinsenin stesse auktuÄlin pÄusan anga zÅ«rbrukin.
+En stawÄ«dsmu prÄ“ipalin prawerru etzentlitun anga etwÄrtai wartÄ«ntun widÄminiskwan stesses ukanÄunaisin Äupausintan wersiÅnin.',
'undeletehistorynoadmin' => 'Å in pÄusan pastÄi Äupausintan.
Ä€upausinsnas brewÄ«nsli ast waidÄ«ntan en sentÄ“nsnan zemmais, Ä“mpiri sen dÄtan stesse tÄ“rpautajan, kawÄ«ds redigijja pÄusan pirzdau Äupausinsenin.
Ä€upausintan wersiÅnin teksts ast preiÄ“iminan tÄ“r perwaldÄ«tajamans.',
'undelete-revision' => 'Ä€upausinÄ di wersiÅnin $1 (iz $5, $4) (autÅrs $3):',
-'undeleterevision-missing' => 'NitikrÅmiska anga nisÄtawinta wersiÅni.
+'undeleterevision-missing' => 'NitikrÅmiska anga nisatawintÄ« wersiÅni.
Tu mazzi turÄ«tun wÄrgan autengÄ«nsnan anga wersiÅni pastÄi etwÄrtai wartÄ«ntan anga Äupausintan iz arkÄ«wan.',
'undelete-nodiff' => 'Ni aupalÄ di pirzdaumans wersiÅnins.',
'undeletebtn' => 'EtwÄrtai wartinnais',
@@ -1807,7 +1784,7 @@ Ainunts kits ast jÄu etgaÅ«wuns Å¡in pÄusan.',
JaÄ«s en [[Special:Log/delete|Äupausinsenin regÄ«sterin]], kÄi widÄlai panzdaumans Äupausinsenins be etteÄ«ksenins.",
'undelete-header' => 'JaÄ«s en [[Special:Log/delete|Äupausinsenin regÄ«sterin]], kÄi widÄlai panzdaumai Äupausintans pÄusans.',
'undelete-search-box' => 'LaukÄ«s Äupausintans pÄusans',
-'undelete-search-prefix' => 'LaukÄ«s pÄusans pagaÅ«wintins sen:',
+'undelete-search-prefix' => 'LaukÄ«s pÄusans pagaÅ«nintins sen:',
'undelete-search-submit' => 'Laukīs',
'undelete-no-results' => 'Ni ast preistalÄ«wingei pÄusai en Äupausisenin arkÄ«wu.',
'undelete-filename-mismatch' => 'Ni mazÄ«ngi etteÄ«ktun zÅ«rbrukes wersiÅnin sen dÄtan $1: zÅ«rbrukes pabilÄ«snas nisandÄ«nga',
@@ -1819,7 +1796,7 @@ MazÄ«ngi tÄns ast jÄu etgaÅ«tan.',
'undelete-error-long' => 'Tikka blÄndas prei zÅ«rbrukes etwÄrtai wartÄ«nsnan:
$1',
-'undelete-show-file-confirm' => 'Assei auÅ¡audÄ«wingi, kÄi tÅ« kwaitÄ“i widÄtun Äupasintan wersiÅnin stesse zÅ«rbrukin "<nowiki>$1</nowiki>" iz $2 $3?',
+'undelete-show-file-confirm' => 'Assei auÅ¡audÄ«wingi, kÄi tÅ« kwaitÄ“i widÄtun Äupausintan wersiÅnin stesse zÅ«rbrukin "<nowiki>$1</nowiki>" iz $2 $3?',
'undelete-show-file-submit' => 'TÄ«t',
# Namespace form on various pages
@@ -1832,16 +1809,16 @@ $1',
'contributions-title' => 'Tērpautajas endīja per $1',
'mycontris' => 'MajÄ endÄ«ja',
'contribsub2' => 'Per tērpautajan $1 ($2)',
-'nocontribs' => 'Ni aupallÄ di wersiÅnins izpilnintins Å¡ins kritÄ“rijans.',
+'nocontribs' => 'Ni aupallÄ di wersiÅnins izpilnintans Å¡ins kritÄ“rijans.',
'uctop' => '(panzdauma kitawīdinsna)',
-'month' => 'Pirzdau mÄ«nsan (be ankstÄis):',
-'year' => 'Pirzdau mettan (be ankstÄis):',
+'month' => 'Pirzdau mÄ«nsin (be Änkstais):',
+'year' => 'Pirzdau mettan (be Änkstais):',
'sp-contributions-newbies' => 'Waidinnais tÄ“r endÄ«jan stÄ“isan nÄunan tÄ“rpautajan',
'sp-contributions-newbies-sub' => 'Per nÄunans tÄ“rpautajans',
'sp-contributions-newbies-title' => 'NÄunan tÄ“rpautajan endÄ«ja',
'sp-contributions-blocklog' => 'blÅkisnas registerin',
-'sp-contributions-deleted' => 'Äupausinta tÄ“rpautajas Ä“ndija',
+'sp-contributions-deleted' => 'aupausintÄ tÄ“rpautajas Ä“ndija',
'sp-contributions-logs' => 'registerei',
'sp-contributions-talk' => 'diskusiÅni',
'sp-contributions-userrights' => 'TÄ“rpautajan tikrÅmin perwaldisnÄ',
@@ -1851,10 +1828,10 @@ $1',
# What links here
'whatlinkshere' => 'Ka autenginna stwi',
-'whatlinkshere-title' => 'PÄusan autenginnantei prei "$1"',
+'whatlinkshere-title' => 'PÄusan autenginÄntei prei "$1"',
'whatlinkshere-page' => 'PÄusan:',
'linkshere' => "RipÄ«ntei pÄusai autenginna prei '''[[:$1]]''':",
-'nolinkshere' => "Niainan pÄusan ni autenginna prei '''[[:$1]]'''.",
+'nolinkshere' => "NiaÄ«nan pÄusan ni autenginna prei '''[[:$1]]'''.",
'nolinkshere-ns' => "NiaÄ«nan pÄusan ni autenginna prei '''[[:$1]]''' en etrÄ«nktai tÄ«telin plattibin.",
'isredirect' => 'prawesnas pÄusan',
'istemplate' => 'entensīsenis',
@@ -1866,7 +1843,7 @@ $1',
'whatlinkshere-hidetrans' => '$1 entensīsenei',
'whatlinkshere-hidelinks' => '$1 autengīnsenei',
'whatlinkshere-hideimages' => '$1 autengīnsenei prei bildins',
-'whatlinkshere-filters' => 'Filtrai',
+'whatlinkshere-filters' => 'Filterei',
# Block/unblock
'blockip' => 'BlÅkis tÄ“rpautajan',
@@ -1875,23 +1852,20 @@ $1',
'blockiptext' => 'TÄ“rpaus zemmaisin fÅrmularan, kÄi blÅkilai enpeisÄsenes mazÄ«ngiskwan iz kÅnkretai IP adressin anga kÅnkretasmu tÄ“rpautajan.
BlÅkitun prawerru tÄ“r kÄi ebsergÄ«tun ezze wandalisman be preitarÄ«ngi sen [[{{MediaWiki:Policy-url}}|pÅlitikin]].
PadÄis brewÄ«nslin zemmais (p. endÄ«janei tÄ«telins stÄ“isan wandalizÄ«tan pÄusan).',
-'ipaddress' => 'IP adressi:',
'ipadressorusername' => 'IP adressi anga tÄ“rpautajas pabilisnÄ:',
'ipbexpiry' => 'BlÅkisenis wanginna:',
'ipbreason' => 'Brewīnsli:',
'ipbreasonotherlist' => 'KitÄ brewÄ«nsli',
-'ipbanononly' => 'BlÅkis tÄ“r anÅnimans tÄ“rpautajans',
'ipbcreateaccount' => 'Ebsergēis ezze rekkenas teīkseņu',
'ipbemailban' => 'Ebsergēis ezze e-mailas tengīnsnas mazīngiskwai',
'ipbenableautoblock' => 'BlÅkis panzdauman Å¡isse tÄ“rpautajas IP adressin be autÅmatiskai wissans ripÄ«ntins, iz kawÄ«dans tÄns wÄ«rst bandÄwuns redigÄ«tun',
'ipbsubmit' => 'BlÅkis Å¡in tÄ“rpautajan',
'ipbother' => 'KitÄ kerdÄ',
-'ipboptions' => '2 stÅ«ndis:2 hours, 1 deinÄ:1 day,3 dÄ“inas:3 days,1 sawaÄ«ti:1 week,2 sawaÄ«tis:2 weeks,1 mÄ«nss:1 month,3 mÄ«nsai:3 months,6 mÄ«nsai:6 months,1 mettan:1 year,bewÄngiskai:infinite',
+'ipboptions' => '2 stÅ«ndis:2 hours, 1 deinÄ:1 day,3 dÄ“inas:3 days,1 sawaÄ«ti:1 week,2 sawaÄ«tis:2 weeks,1 mÄ«nss:1 month,3 mÄ«nsei:3 months,6 mÄ«nsei:6 months,1 mettan:1 year,bewangiskai:infinite',
'ipbotheroption' => 'kits',
'ipbotherreason' => 'KitÄ/papilnimina brewÄ«nsli:',
'ipbhidename' => 'Kliptinais tērpautajas pabilīsnan en redigīsenimans be listimans',
'ipbwatchuser' => 'NadirÄ“is Å¡isse tÄ“rpautajas persÅniskan pÄusan be diskusiÅnis pÄusan',
-'ipballowusertalk' => 'PreiwÄ“rpjais Å¡ismu tÄ“rpautajan redigÄ«tun swajjan diskusiÅnis pÄusan, kaddan ast blÅkitan',
'ipb-change-block' => 'KitawÄ«dinais blÅkisenes ensadÄ«nsenins',
'badipaddress' => 'NitikrÅmiska IP adressi',
'blockipsuccesssub' => 'BlÅkisenis izpalla',
@@ -1903,20 +1877,15 @@ JaÄ«s en [[Special:IPBlockList|listin stÄ“isan IP adressin]] kai widÄlai blÅki
'ipb-blocklist' => 'WÄ«dais ekzistÄ«ntins blÅkisenins',
'ipb-blocklist-contribs' => '$1 endīja',
'unblockip' => 'EtblÅkis tÄ“rpautajan',
-'unblockiptext' => 'TÄ“rpaus zemmaisin fÅrmularan, kÄi etwÄrtai wartÄ«nlai redigÄ«snas mazÄ«ngiskwan iz ankstÄis blÅkitan IP adressin anga blÅkitasmu tÄ“rpautajan.',
+'unblockiptext' => 'TÄ“rpaus zemmaisin fÅrmularan, kÄi etwÄrtai wartÄ«nlai redigÄ«snas mazÄ«ngiskwan iz Änkstais blÅkitan IP adressin anga blÅkitasmu tÄ“rpautajan.',
'ipusubmit' => 'EtblÅkis Å¡an adressin',
'unblocked' => '[[User:$1|$1]] pastÄi etblÅkitan',
'unblocked-id' => 'BlÅkisenis $1 pastÄi izklaÅ«tan',
'ipblocklist' => 'Listi stÄ“isan blÅkitan IP adressin be tÄ“rpautajan pabilÄ«snan',
'ipblocklist-legend' => 'Aupallais blÅkitan tÄ“rpautajan',
-'ipblocklist-username' => 'TÄ“rpautajas pabilisnÄ anga IP adressi:',
-'ipblocklist-sh-userblocks' => '$1 rekkenan blÅkisenei',
-'ipblocklist-sh-tempblocks' => '$1 kÄ«smingiskai blÅkisenei',
-'ipblocklist-sh-addressblocks' => '$1 aÄ«nasses IP adressis blÅkisenei',
'ipblocklist-submit' => 'Laukīs',
'ipblocklist-localblock' => 'LÅkals blÅkisenis',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Kits blÅkisenis|KitÄi blÅkisenei}}',
-'blocklistline' => '$1, $2 blÅki $3 (blÅkisenes kÄ“rda: $4)',
'infiniteblock' => 'bewangiskai',
'expiringblock' => 'wanginna si $1 $2',
'anononlyblock' => 'tÄ“r anÅnimai',
@@ -1925,7 +1894,7 @@ JaÄ«s en [[Special:IPBlockList|listin stÄ“isan IP adressin]] kai widÄlai blÅki
'emailblock' => 'e-mail blÅkitan',
'blocklist-nousertalk' => 'ni mazzi redigÄ«tun swajjans diskusiÅnis pÄusans',
'ipblocklist-empty' => 'BlÅkisenin listi ast pÄustan',
-'ipblocklist-no-results' => 'PadÄta IP adressi anga tÄ“rpautajs ni ast blÅkitan.',
+'ipblocklist-no-results' => 'PadatÄ IP adressi anga tÄ“rpautajs ni ast blÅkitan.',
'blocklink' => 'blÅkis',
'unblocklink' => 'etblÅkis',
'change-blocklink' => 'kitawÄ«dinais blÅkisenin',
@@ -1937,24 +1906,23 @@ TÄ“rpautajas $1 blÅkisenes brewÄ«nsli ast: "$2"',
'reblock-logentry' => 'ast kitawÄ«dinuns blÅkisenes ensadÄ«nsnas stesse(s) [[$1]] sen blÅkisnas kÄ“rdan: $2 $3',
'blocklogtext' => 'Sta ast regÄ«sterin stÄ“isan blÅkisenin be etblÅkisenin stÄ“isan tÄ“rpautajan anga IP adressin.
AutÅmatiskai blÅkitas IP adressis ni ast waidÄ«ntan.
-JaÄ«s en [[Special:IPBlockList|IP blÅkisenin listin]] ki widÄlai wissans tÄ“nti aktÄ«wans blÅkisenins.',
+JaÄ«s en [[Special:BlockList|IP blÅkisenin listin]] ki widÄlai wissans tÄ“nti aktÄ«wans blÅkisenins.',
'unblocklogentry' => 'ast etblÅkiwuns(si) $1',
'block-log-flags-anononly' => 'tÄ“r anÅnimai tÄ“rpautajai',
-'block-log-flags-nocreate' => 'rekkenas teīksna izklaūtan',
+'block-log-flags-nocreate' => 'rekkenas teiksnÄ izklaÅ«tan',
'block-log-flags-noautoblock' => 'autÅmatiska blÅkisna izklaÅ«tan',
'block-log-flags-noemail' => 'e-mail blÅkitan',
'block-log-flags-nousertalk' => 'ni mazzi redigÄ«tun swajjan diskusiÅnis pÄusan',
-'block-log-flags-angry-autoblock' => 'paplattinta autÅmatiska blÅkisna enklaÅ«tan',
+'block-log-flags-angry-autoblock' => 'paplatintÄ autÅmatiska blÅkisna enklaÅ«tan',
'block-log-flags-hiddenname' => 'tÄ“rpautajas pabilisnÄ ast kliptintan',
'range_block_disabled' => 'PerwaldÄ«tajas mazÄ«ngisku, kÄi blÅkitun ebÄ«mtans stÄ“isan IP adressin pastÄi izklaÅ«tan.',
'ipb_expiry_invalid' => 'NitikrÅmiskas wangÄ«snas kerdÄ.',
'ipb_expiry_temp' => 'Kliptas tÄ“rpautajas pabilÄ«snas blÅkisenis turri bÅ«twei ainatÄ«ngi.',
-'ipb_hide_invalid' => 'Ni mazÄ«ngi kliptintun Å¡isse tÄ“rpautajas rekkenan, drÅ«wiminai tÄns ast segÄ«wuns per tÅ«lin redigÄ«senins.',
+'ipb_hide_invalid' => 'Ni mazÄ«ngi kliptintun Å¡isse tÄ“rpautajas rekkenan, druwÄ«minai tÄns ast segÄ«wuns per tÅ«lin redigÄ«senins.',
'ipb_already_blocked' => '"$1" ast jÄu blÅkitan',
-'ipb-needreblock' => '== JÄu blÅkitan ==
-$1 ast jÄu blÅkitan. KwÄitu kitawÄ«dintun blÅkisenes ensadÄ«nsenins?',
+'ipb-needreblock' => '$1 ast jÄu blÅkitan. KwÄitu kitawÄ«dintun blÅkisenes ensadÄ«nsenins?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Kits blÅkisenis|KitÄi blÅkisenei}}',
-'ipb_cant_unblock' => 'BlÄnda: BlÅkisenes ID $1 ni pastÄi aupaltan. MazÄ«ngi tÄns pastÄi ankstÄis izklaÅ«tan.',
+'ipb_cant_unblock' => 'BlÄnda: BlÅkisenes ID $1 ni pastÄi aupaltan. MazÄ«ngi tÄns pastÄi Änkstais izklaÅ«tan.',
'ipb_blocked_as_range' => 'BlÄnda: IP adressi $1 ni ast blÅkitan entikriskai be ni mazzi bÅ«twei etblÅkitan.
Sta ast, Å¡lÄit, blÅkitan kÄigi delÄ«ks stesse $2 ebÄ«mtan, kawÄ«dan mazzi bÅ«twei etblÅkitan.',
'ip_range_invalid' => 'NitikrÅmiskas IP ebÄ«mtan.',
@@ -1979,7 +1947,7 @@ Tū ni mazzi teīktun rekkenan',
'lockdbsuccesssub' => 'DÄtanbazis auklaÅ«senis izpalla',
'unlockdbsuccesssub' => 'DÄtanbazi etklaÅ«tan',
'lockdbsuccesstext' => 'DÄtanbazi pastÄi auklaÅ«tan. <br />
-Paminnais [[Special:UnlockDB|etklaÅ«tun]] dÄtanbazin, kaddan tu wÄ«rst wanginnuns(si) perwaldÄ«snas dÄ«lasenins.',
+Pamennais [[Special:UnlockDB|etklaÅ«tun]] dÄtanbazin, kaddan tu wÄ«rst wanginnuns(si) perwaldÄ«snas dÄ«lasenins.',
'unlockdbsuccesstext' => 'DÄtanbazin pastÄi etklaÅ«tan.',
'lockfilenotwritable' => 'Ni mazÄ«ngi peisÄtun en dÄtanbazis blÅkisenes zÅ«rbrukin.
DÄtanbazis auklaÅ«senis be etklaÅ«senis izkÄ«nina, kÄi zÅ«rbrukis bÅ«lai enpeisÄminan pra web sÄ“rwerin.',
@@ -1991,14 +1959,14 @@ DÄtanbazis auklaÅ«senis be etklaÅ«senis izkÄ«nina, kÄi zÅ«rbrukis bÅ«lai enpei
'movepagetext' => "TÄ“rpawintei Å¡in fÅrmularan mazÄ«ngi kitawÄ«dintun pÄusas tÄ«telin, praskajjinantei ainakÄ«smingiskai tenesse istÅrijan en nÄunan tÄ«telin.
WÅ«rs tÄ«telis wÄ«rst pastÄwuns pÄusan praweddantin en nÄunan tÄ«telin.
TÅ« mazzi autÅmatiskai aktualizÄ«tun prawessenins, kawÄ«dai prawedda en wÅ«ran tÄ«telin.
-Ik tÅ« etrÄ«nklai ni segÄ«tun stan autÅmatiskai, paminnais izbandÄtun [[Special:DoubleRedirects|dwigubans]] anga [[Special:BrokenRedirects|autÄ“nstans prawessenins]].
+Ik tÅ« etrÄ«nklai ni segÄ«tun stan autÅmatiskai, pamennais izbandÄtun [[Special:DoubleRedirects|dwigbubans]] anga [[Special:BrokenRedirects|autÄ“nstans prawessenins]].
TwajÄ etrawÄ«ngisku ast izbandÄtwei, kÄi autengÄ«nsenei autenginna prei deÄ«ktans, kwÄ“i tenÄ“imans prawerru autengÄ«ntun.
WaÄ«dais, kÄi pÄusan '''ni''' wÄ«rst bÅ«wusi praskajjintan, ik ekzistijja jÄu kittan pÄusan sen nÄunan tÄ«telin be ni ast pÄustan anga ni ast prawessenis be ni turri istÅrijan stÄ“isan redigÄ«senin.
Sta zentli, kÄi tÅ« mazzi kitawÄ«dintun etwÄrtai pÄusas tÄ«telin ik assei segÄ«wuns(si) stan blÄndas paggan be kÄi tu ni mazzi kirsÄi peisÄtun ekzistÄ«ntin pÄusan.
'''Ēmpirssergīsenis!'''
-Sta mazzi bÅ«twei drÄstiska be niggeista kitawÄ«disna per pÅpularin pÄusan;
+Sta mazzi bÅ«twei drÄstiska be niggeista kitawÄ«dinsna per pÅpularin pÄusan;
madli seÄ«s auÅ¡audÄ«wingi, kÄi tÅ« izpresta rÄ«plins pirzdau tÅ« Ä“ilai tÄlis.",
'movepagetalktext' => 'SÄ“itan diskusiÅnis pÄusan wÄ«rst bÅ«wun autÅmatiskai praskajjintan, ik tÄ“r:
*nipÄustan diskusiÅnis pÄusan dabber ni ekzistijja sen nÄunan tÄ«telin
@@ -2010,8 +1978,8 @@ En kitÄ“imans prÄ“ipalins tÅ« mazzi praskajjintun anga senlaÄ«tun pÄusan ter rÄ
'movenologintext' => 'Tu turri bÅ«twei registrÄ«tan be [[Special:UserLogin|engÅ«bun]] kÄi praskajjinlai pÄusan.',
'movenotallowed' => 'TÅ« ni assei enwarÄ«ntan, kÄi praskajjinlai pÄusans.',
'movenotallowedfile' => 'TÅ« ni assei enwarÄ«ntan, kÄi praskajjinlai zÅ«rbrukins.',
-'cant-move-user-page' => 'TÅ« ni assei enwarÄ«ntan kÄi praskajjinlai tÄ“rpautajan pÄusans (izimmantei pÅpausans).',
-'cant-move-to-user-page' => 'TÅ« ni assei enwarÄ«ntan, kÄi praskajjinlai pÄusan en tÄ“rpautajas pÄusan (izimmantei tÄ“rpautajas pÅpausan).',
+'cant-move-user-page' => 'TÅ« ni assei enwarÄ«ntan kÄi praskajjinlai tÄ“rpautajan pÄusans (izimÄntei pÅpausans).',
+'cant-move-to-user-page' => 'TÅ« ni assei enwarÄ«ntan, kÄi praskajjinlai pÄusan en tÄ“rpautajas pÄusan (izimÄntei tÄ“rpautajas pÅpausan).',
'newtitle' => 'NÄuns tÄ«tels:',
'move-watch' => 'NadirÄ“is Å¡in pÄusan',
'movepagebtn' => 'Praskajjinais pÄusan',
@@ -2058,12 +2026,12 @@ Ni mazÄ«ngi praskajjintun pÄusan en din subban.',
'imagenocrossnamespace' => 'Ni mazīngi praskajjintun zūrbrukin en tītelin plattibin ni per zūrbrukins',
'imagetypemismatch' => 'NÄuns plattinsenis ni prÄ“itara prei tenesse tÄ«pan',
'imageinvalidfilename' => 'KakÄ«nslis zÅ«rbrukes pabilisnÄ ast nitikrÅmiskan',
-'fix-double-redirects' => 'EtnÄunais wissans prawessenins prei wÅ«ran tÄ«telin',
+'fix-double-redirects' => 'Etnauninnais wissans prawessenins prei wūran tītelin',
'move-leave-redirect' => 'PalaÄ«deis prawessenin sen bigÄntin tÄ«telin',
# Export
'export' => 'EkspÅrtis pÄusans',
-'exportcuronly' => 'TÄ“r bigÄnta wersiÅni, Å¡lÄit istÅrijan',
+'exportcuronly' => 'TÄ“r bigantÄ« wersiÅni, Å¡lÄit istÅrijan',
'export-submit' => 'EkspÅrtis',
'export-addcattext' => 'PreidÄis pÄusans iz kategÅrijan:',
'export-addcat' => 'PreidÄis',
@@ -2074,12 +2042,12 @@ Ni mazÄ«ngi praskajjintun pÄusan en din subban.',
'export-pagelinks' => 'Ebimmais pÄusans prei kawÄ«dans Å¡in pÄusan autenginna Ä“rgi gilluwan:',
# Namespace 8 related
-'allmessages' => 'Sīstemas pawakīsenei',
+'allmessages' => 'Sistēmas pawakīsenei',
'allmessagesname' => 'Emmens',
'allmessagesdefault' => 'Auprestamins teksts',
'allmessagescurrent' => 'BigÄnts teksts',
'allmessagestext' => 'Sta ast listi wisēisan waīstin preiēiminan en MediaWikis tītelin plattibin.
-Madli kÄimalukeis [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] be [http://translatewiki.net translatewiki.net] ik tu kwaitÄ“i delÄ«kan Ä«mtun en MediaWikis prÅgraminin tulkausnai.',
+Madli kÄimalukeis [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] be [//translatewiki.net translatewiki.net] ik tu kwaitÄ“i delÄ«kan Ä«mtun en MediaWikis prÅgraminin tulkausnai.',
'allmessagesnotsupportedDB' => "Å Ä« pÄusan ni mazzi bÅ«twei tÄ“rpautan, beggi wariÄbli '''\$wgUseDatabaseMessages''' ast izklaÅ«tan.",
'allmessages-filter-legend' => 'Filtrīs',
'allmessages-filter' => 'Filtrīs pa būsenin:',
@@ -2096,7 +2064,7 @@ Madli kÄimalukeis [http://www.mediawiki.org/wiki/Localisation MediaWiki Localis
'thumbnail_error' => 'MiniatÅ«ris teÄ«ksnas blÄnda: $1',
'djvu_page_error' => 'DjVu pÄusan per ebÄ«mtan',
'djvu_no_xml' => 'Ni mazÄ«ngi kraÅ«tun XML dÄtan per DjVu zÅ«rbrukin',
-'thumbnail_invalid_params' => 'NitikrÅmiskai miniatÅ«ris parÄmetrei',
+'thumbnail_invalid_params' => 'NitikrÅmiskai miniatÅ«ris parÄmeterei',
'thumbnail_dest_directory' => 'Ni mazÄ«ngi teÄ«ktun kakÄ«nslis fÅlderin',
'thumbnail_image-missing' => 'ZÅ«rbrukis perwaidinna si nisÄtautwei: $1',
@@ -2123,22 +2091,22 @@ WisÄi transwikis impÅrtas dÄ«lasenei ast enpeisÄtan en [[Special:Log/import|i
'importbadinterwiki' => 'WÄrgs interwiki autengÄ«nsenis',
'importnotext' => 'PÄustan anga Å¡lÄit tekstan',
'importsuccess' => 'ImpÅrts wangÄ«ntan!',
-'importhistoryconflict' => 'Ast wersiÅnis kÅnfliktan (Å¡in pÄusan mazÄ“i bÅ«twei impÅrtitan jÄu ankstÄis)',
+'importhistoryconflict' => 'Ast wersiÅnis kÅnfliktan (Å¡in pÄusan mazÄ“i bÅ«twei impÅrtitan jÄu Änkstais)',
'importnosources' => 'Entikriskas istÅrijas impÅrtas mazÄ«ngisku pastÄi izklaÅ«tan, beggi aps ni ast definÄ«tan.',
'importnofile' => 'ImpÅrtits zÅ«rbrukis ni pastÄi enkraÅ«tan.',
'importuploaderrorsize' => 'ImpÅrtitas zÅ«rbrukes impÅrtisna ni izpalla.
Ast mÅ«isesan nikÄi enkraÅ«tan zÅ«rbrukin preiÄ“iminan debban.',
'importuploaderrorpartial' => 'Zūrbrukes enkraūsenis ni izpalla.
TÄns pastÄi enkraÅ«tan ter delÄ«kiskai.',
-'importuploaderrortemp' => 'ImpÅrtitas zÅ«rbrukes enkraÅ«sna ni izpalla.
+'importuploaderrortemp' => 'ImpÅrtitas zÅ«rbrukes enkraÅ«snÄ ni izpalla.
Ni ast fÅlderis per kÄ«smingiskans zÅ«rbrukins.',
'import-parse-failure' => 'ImpÅrtitas zÅ«rbrukis XML sÄ«ntaksi ni skaitÄminan.',
'import-noarticle' => 'Ni ast pÄusai, kÄi impÅrtilai dins!',
-'import-nonewrevisions' => 'WisÄi wersiÅnis pastÄi jÄu ankstÄis impÅrtitan.',
+'import-nonewrevisions' => 'WisÄi wersiÅnis pastÄi jÄu Änkstais impÅrtitan.',
'xml-error-string' => '$1 en lÄ«nijai $2, kÅl. $3 (bÄits $4): $5',
'import-upload' => 'EnkraÅ«neis XML dÄtan',
'import-token-mismatch' => 'IzmÄitinÄ di sesiÅnis dÄtan.
-Madli bÄndais etkÅ«mps.',
+Madli bandais etkūmps.',
'import-invalid-interwiki' => 'Ni mazÄ«ngi impÅritun iz padÄtan wiki.',
# Import log
@@ -2179,7 +2147,7 @@ Pirzdau enpeisÄsnan, tÄ“rpaus pirmÄdiras knuppan.',
'tooltip-p-logo' => 'Galwas pÄusan',
'tooltip-n-mainpage' => 'WÄ«dais galwas pÄusan',
'tooltip-n-mainpage-description' => 'JaÄ«s en galwas pÄusan',
-'tooltip-n-portal' => 'Ezze prÅjaktan, ka Tu mazzi segÄ«tun, kwÄ“i Tu mazzi aupaltun informaciÅnins',
+'tooltip-n-portal' => 'Ezze prÅjaktan, ka Tu mazzi segÄ«tun, kwÄ“i Tu mazzi aupaltun infÅrmaciÅnins',
'tooltip-n-currentevents' => 'InfÅrmaciÅnis ezze aktuÄlins audÄsenins',
'tooltip-n-recentchanges' => 'Listi stēisan panzdauman kitawīdisnan en šissei wiki',
'tooltip-n-randompage' => 'EnkraÅ«neis prÄ“ipalingin pÄusan',
@@ -2200,7 +2168,7 @@ Pirzdau enpeisÄsnan, tÄ“rpaus pirmÄdiras knuppan.',
'tooltip-ca-nstab-special' => 'Sta ast speciÄlin pÄusan. TÅ« ni mazzi redigÄ«tun din.',
'tooltip-ca-nstab-project' => 'WÄ«dais prÅjaktas pÄusan',
'tooltip-ca-nstab-image' => 'WÄ«dais zÅ«rbrukes pÄusan',
-'tooltip-ca-nstab-mediawiki' => 'Wīdais sīstemas waīstin',
+'tooltip-ca-nstab-mediawiki' => 'Wīdais sistēmas waīstin',
'tooltip-ca-nstab-template' => 'WÄ«dais Å¡ablÅnin',
'tooltip-ca-nstab-help' => 'WÄ«dais pagalbas pÄusan',
'tooltip-ca-nstab-category' => 'WÄ«dais kategÅrijas pÄusan',
@@ -2213,13 +2181,11 @@ Pirzdau enpeisÄsnan, tÄ“rpaus pirmÄdiras knuppan.',
'tooltip-recreate' => 'TeÄ«keis pÄusan prÅpaus tennan bÄ“i jÄu Äupausintan',
'tooltip-upload' => 'Pagaūneis enkraūsnan',
'tooltip-rollback' => '"EtwÄrtai wartinnais" sen ainan gnessenin etwartinna wissans Å¡isse pÄusas kitawÄ«disnans segÄ«tans pra panzdauman redigÄ«ntin.',
-'tooltip-undo' => '"NaÄ«kinais redigÄ«senin" etwÄrtai wartinna Å¡in redigÄ«senin be etwerre redigÄ«senes lÄngstan en pirmÄdiras wÄ«du.
+'tooltip-undo' => '"Naikinnais redigÄ«senin" etwÄrtai wartinna Å¡in redigÄ«senin be etwerre redigÄ«senes langstan en pirmÄdiras wÄ«du.
Sta preiwÄ“rpja enpeisÄtun brewÄ«nslin en kitawÄ«disnan ebpeisÄseņu.',
# Metadata
-'nodublincore' => 'MetadÄtan preitarÄ«ngi prei Dublin Core RDF pastÄi izklaÅ«tan per Å¡in sÄ“rwerin.',
-'nocreativecommons' => 'MetadÄtan preitarÄ«ngi prei Creative Commons RDF pastÄi izklaÅ«tan per Å¡in sÄ“rwerin.',
-'notacceptable' => 'Wiki sÄ“rwerin ni mazzi preistatÄ«ntun dÄtan en fÅrmatu palaÄ«psitasmu pra twajjan lasÄtlin.',
+'notacceptable' => 'Wiki sÄ“rwerin ni mazzi preistatÄ«ntun dÄtan en fÅrmatu palaipsÄ«tasmu pra twajjan lasÄtlin.',
# Attribution
'anonymous' => '{{PLURAL:$1|AnÅnims tÄ“rpautajs|AnÅnimai tÄ“rpautajai}} stesse {{SITENAME}}',
@@ -2236,41 +2202,12 @@ Sta preiwÄ“rpja enpeisÄtun brewÄ«nslin en kitawÄ«disnan ebpeisÄseņu.',
# Spam protection
'spamprotectiontitle' => 'Spamas filteris',
'spamprotectiontext' => 'PÄusan, kawÄ«dan tÅ« kwaitÄ“i enpeisÄtun pastÄi blÅkitan pra spamas filterin.
-Sta ast drÅ«wiminai dÄ«lintan pra autengÄ«nsenin prÄ“i izwinandan pÄusan iz kÄ«rsnan listin.',
+Sta ast druwÄ«minai dÄ«lintan pra autengÄ«nsenin prÄ“i izwinandan pÄusan iz kÄ«rsnan listin.',
'spamprotectionmatch' => 'Ripīnts teksts ast enskattinuns spamas filterin: $1',
-'spambot_username' => 'MediaWiki - spamas skīstinsna',
+'spambot_username' => 'MediaWiki - spamas skistīnsna',
'spam_reverting' => 'EtwÄrtai wartÄ«nsna stesses panzdauman wersiÅnin, ni turrintes Ä“n sin autengÄ«nsenins prei $1',
'spam_blanking' => 'Wissas wesiÅnis turÄ“i en sin autengÄ«nsenins prei $1. PÄusas skistÄ«nsna.',
-# Info page
-'infosubtitle' => 'InfÅrmaciÅni ezze pÄusan',
-'numedits' => 'RedigÄ«senin gÄ«rbis (pÄusan): $1',
-'numtalkedits' => 'RedigÄ«senin gÄ«rbis (diskusiÅnis pÄusan): $1',
-'numwatchers' => 'Nadirīntin gīrbis: $1',
-'numauthors' => 'AutÅran gÄ«rbis (pÄusan): $1',
-'numtalkauthors' => 'AutÅran gÄ«rbis (diskusiÅnis pÄusan): $1',
-
-# Math options
-'mw_math_png' => 'Wisaddan teÄ«keis PNG grÄfikin',
-'mw_math_simple' => 'HTML ik spÄrtai prastan, ik ni - PNG',
-'mw_math_html' => 'HTML ik mazīngi, ik ni - PNG',
-'mw_math_source' => 'PalaÄ«deis en TeX-as fÅrmatu (per tekstas lasÄtlins)',
-'mw_math_modern' => 'HTML - radÄ«tan per nÄunans lasÄtlins',
-'mw_math_mathml' => 'MathML ik mazÄ«ngi (eksperimentÄlai)',
-
-# Math errors
-'math_failure' => 'Parsers ni mazÄ“i skaitÄtun',
-'math_unknown_error' => 'niwaÄ«sta blÄnda',
-'math_unknown_function' => 'niwaÄ«sta funkciÅni',
-'math_lexing_error' => 'laksisis blÄnda',
-'math_syntax_error' => 'sÄ«ntaksis blÄnda',
-'math_image_error' => 'MainÄsna en PNG ni izpalla.
-IzbÄndais, anga latex, dvips, gs be convert ast instalÄ«tan tikrÅmiskai',
-'math_bad_tmpdir' => 'Ni mazÄ«ngi teÄ«ktun anga enpeisÄtun en kÄ«smingiskasmu matemÄtiskan fÅlderin',
-'math_bad_output' => 'Ni mazÄ«ngi teÄ«ktun anga enpeisÄtun en izÄ“iseniskasmu matemÄtiskan fÅlderin',
-'math_notexvc' => 'Ni ast texvc prÅgraman.
-WÄ«dais math/README kÄi kÅnfigurilai.',
-
# Patrolling
'markaspatrolleddiff' => 'Pazentlis kÄigi "izbandÄtan"',
'markaspatrolledtext' => 'Pazentlis Å¡in pÄusan kÄigi "izbandÄtan"',
@@ -2297,8 +2234,8 @@ WÄ«dais math/README kÄi kÅnfigurilai.',
$1',
'filedelete-missing' => 'ZÅ«rbrukis "$1" ni mazzi bÅ«twei Äupausintan, beggi ni ekzistijja',
-'filedelete-old-unregistered' => 'Ni ast palaÄ«psinta zÅ«rbrukes "$1" wersiÅni en dÄtanbazei.',
-'filedelete-current-unregistered' => 'Ni ast palaÄ«psints zÅ«rbrukis "$1" en dÄtanbazei.',
+'filedelete-old-unregistered' => 'Ni ast palaipsitÄ zÅ«rbrukes "$1" wersiÅni en dÄtanbazei.',
+'filedelete-current-unregistered' => 'Ni ast palaipsÄ«ts zÅ«rbrukis "$1" en dÄtanbazei.',
'filedelete-archive-read-only' => 'FÅlderis sen arkÄ«wans "$1" ni ast enpeisÄminan pra WWW sÄ“rwerin.',
# Browsing diffs
@@ -2316,7 +2253,6 @@ Enskattintei din, tÅ« mazzi Ärditun twajjan sistÄ“man.",
'file-nohires' => '<small>MÅ«isesa rezÅluciÅni ni ast preiÄ“iminan.</small>',
'svg-long-desc' => 'SVG zÅ«rbrukis, nÅminalai $1 × $2 pikselai, debban: $3',
'show-big-image' => 'PilnÄ rezÅluciÅni',
-'show-big-image-thumb' => '<small>PirmÄdiras debban: $1 × $2 pikselai</small>',
'file-info-gif-looped' => 'kalpenintan',
# Special:NewFiles
@@ -2329,19 +2265,19 @@ Enskattintei din, tÅ« mazzi Ärditun twajjan sistÄ“man.",
'noimages' => 'Nika per waidīnsnan.',
'ilsubmit' => 'Laukīs',
'bydate' => 'pa dÄtan',
-'sp-newimages-showfrom' => 'Waidinnai nÄunans zÅ«rbrukins pagaÅ«wintei ezze $2, $1',
+'sp-newimages-showfrom' => 'Waidinnai nÄunans zÅ«rbrukins pagaÅ«nintei ezze $2, $1',
# Bad image list
'bad_image_list' => 'FÅrmatan ast stawÄ«dan:
-TÄ“r listis elÄmentai (rÄ«ndas pagaÅ«wintas si sen *) ast endirÄ«tan.
+Tēr listis elamēntai (rīndas pagaūnintes si sen *) ast endirītan.
Pirmas autengīnsenis en rīndai turri būtwei autengīnsenis prei drēuditan zūrbrukin.
RipÄ«ntei autengÄ«nsenei en rÄ«ndai ast laikÄtan per izÄ«msenins, s.z. pÄusans en kawÄ«damans drÄ“udits zÅ«rbrukis mazzi bÅ«twei tÄ“rpautan.',
# Metadata
'metadata' => 'MetadÄtan',
-'metadata-help' => 'Å is zÅ«rbrukis turri Ä“n sen papilniminans infÅrmaciÅnins, drÅ«wiminai preidÄtan pra digitÄlin kÄmeran anga skanÄ«tajan teÄ«kun Å¡in zÅ«rbrukin.
-Ik zÅ«rbrukis bÄ“i kitawÄ«dintan, dÄtan mazzi delÄ«kiskai bÅ«twei nipreitarÄ«ngi sen kitawÄ«dintas zÅ«rbrukes parÄmetrins.',
+'metadata-help' => 'Å is zÅ«rbrukis turri Ä“n sen papilniminans infÅrmaciÅnins, druwÄ«minai preidÄtan pra digitÄlin kÄmeran anga skanÄ«tajan teÄ«kun Å¡in zÅ«rbrukin.
+Ik zÅ«rbrukis bÄ“i kitawÄ«dintan, dÄtan mazzi delÄ«kiskai bÅ«twei nipreitarÄ«ngi sen kitawÄ«dintas zÅ«rbrukes parÄmeterins.',
'metadata-expand' => 'Waidinnais malkans',
'metadata-collapse' => 'Kliptinais malkans',
'metadata-fields' => 'ZemmaiÅ¡ai EXIF metadÄtas laÅ«kai wÄ«rst bÅ«wusis waidÄ«ntan en grÄfikis pÄusu.
@@ -2352,7 +2288,13 @@ KitÄi wÄ«rst bÅ«wusis kliptan auprestaminai.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Plattu',
@@ -2366,13 +2308,11 @@ KitÄi wÄ«rst bÅ«wusis kliptan auprestaminai.
'exif-ycbcrpositioning' => 'Y be C poziciÅni',
'exif-xresolution' => 'UricÅntala rezoluciÅni',
'exif-yresolution' => 'WertikÄla rezoluciÅni',
-'exif-resolutionunit' => 'X be Y rezÅluciÅnis aÄ«nibi',
'exif-stripoffsets' => 'Bildis dÄtas deÄ«ktan',
-'exif-rowsperstrip' => 'Rīndas gīrbis per bildes sawīnzlin',
-'exif-stripbytecounts' => 'BÄitas gÄ«rbis per bildis sawÄ«nzlin',
+'exif-rowsperstrip' => 'Rīndas gīrbis per bildes sawinzlin',
+'exif-stripbytecounts' => 'BÄitas gÄ«rbis per bildis sawinzlin',
'exif-jpeginterchangeformat' => 'Pirmas JPEG SOI bÄitas poziciÅni',
'exif-jpeginterchangeformatlength' => 'JPEG dÄtas bÄitan gÄ«rbis',
-'exif-transferfunction' => 'Prawesnas funkciÅni',
'exif-whitepoint' => 'Gaīliskwas punkts',
'exif-primarychromaticities' => 'TrÄ«s galwas bÄrwis',
'exif-ycbcrcoefficients' => 'BÄrwin plattibis iz RGB en YCbCr prawartÄ«nsenes matrica',
@@ -2391,7 +2331,6 @@ KitÄi wÄ«rst bÅ«wusis kliptan auprestaminai.
'exif-compressedbitsperpixel' => 'Bildes kÅmpresiÅnis wÄ«ds',
'exif-pixelydimension' => 'TikrÅmiskan bildes plattu',
'exif-pixelxdimension' => 'TikrÅmiskan bildes aÅ«ktan',
-'exif-makernote' => 'Tikīntajas endirīsenei',
'exif-usercomment' => 'TÄ“rpautajas kumentÄrai',
'exif-relatedsoundfile' => 'Sēitan audiŠzūrbrukis',
'exif-datetimeoriginal' => 'ÅŒriginÄlas teÄ«ksnas dÄtan be kerdÄ',
@@ -2410,21 +2349,19 @@ KitÄi wÄ«rst bÅ«wusis kliptan auprestaminai.
'exif-meteringmode' => 'Mattausnas wīds',
'exif-lightsource' => 'SwÄikstas aps',
'exif-flash' => 'Bliccis',
-'exif-focallength' => 'Pellanas etÄlisku',
+'exif-focallength' => 'Pelannas etÄlisku',
'exif-subjectarea' => 'ÅŒbjaktas areÄlin',
'exif-flashenergy' => 'Blicces energīja',
-'exif-spatialfrequencyresponse' => 'Plattibiskas deznes etrÄsenis',
-'exif-focalplanexresolution' => 'Pellanas plassas X rezÅluciÅni',
-'exif-focalplaneyresolution' => 'Pellanas plassas Y rezÅluciÅni',
-'exif-focalplaneresolutionunit' => 'Pellanas plassas rezÅluciÅnis aÄ«nibi',
+'exif-focalplanexresolution' => 'Pelannas plassas X rezÅluciÅni',
+'exif-focalplaneyresolution' => 'Pelannas plassas Y rezÅluciÅni',
+'exif-focalplaneresolutionunit' => 'Pelannas plassas rezÅluciÅnis aÄ«nibi',
'exif-subjectlocation' => 'Ōbjaktas deīktan',
'exif-sensingmethod' => 'Mattausnas metÅdi',
'exif-filesource' => 'ZÅ«rbrukes aps',
'exif-scenetype' => 'WidÄklis tÄ«ps',
-'exif-cfapattern' => 'CFA Å¡ablÅni',
'exif-whitebalance' => 'Gaīliskwas balanss',
'exif-digitalzoomratio' => 'DigitÄlas mÅ«isesinsenes kÅeficiÄ“nts',
-'exif-focallengthin35mmfilm' => 'Pellanas etÄlisku per 35 mm filman',
+'exif-focallengthin35mmfilm' => 'Pelannas etÄlisku per 35 mm filman',
'exif-scenecapturetype' => 'WidÄklis gabsnas tÄ«ps',
'exif-gaincontrol' => 'WidÄklis kontrÅli',
'exif-contrast' => 'KÅntrasts',
@@ -2466,12 +2403,12 @@ KitÄi wÄ«rst bÅ«wusis kliptan auprestaminai.
'exif-unknowndate' => 'NiwaÄ«stan dÄtan',
'exif-orientation-1' => 'NÅrmala',
-'exif-orientation-2' => 'EtswÄikstintan uricÅntalai',
+'exif-orientation-2' => 'EtswÄikstitan uricÅntalai',
'exif-orientation-3' => 'Ebgrēnztan 180°',
-'exif-orientation-4' => 'EtswÄikstintan wertikÄlai',
-'exif-orientation-5' => 'EbgrÄ“nztan 90° prÄ«ki zÄ“gerin be wertikÄlai etswÄikstintan',
+'exif-orientation-4' => 'EtswÄikstitan wertikÄlai',
+'exif-orientation-5' => 'EbgrÄ“nztan 90° prÄ«ki zÄ“gerin be wertikÄlai etswÄikstitan',
'exif-orientation-6' => 'Ebgrēnztan 90° pa zēgerin',
-'exif-orientation-7' => 'EbgrÄ“nztan 90° pa zÄ“gerin be wertikÄlai etswÄikstintan',
+'exif-orientation-7' => 'EbgrÄ“nztan 90° pa zÄ“gerin be wertikÄlai etswÄikstitan',
'exif-orientation-8' => 'Ebgrēnztan 90° prīki zēgerin',
'exif-planarconfiguration-1' => 'stÄran fÅrmatan',
@@ -2489,7 +2426,7 @@ KitÄi wÄ«rst bÅ«wusis kliptan auprestaminai.
'exif-subjectdistance-value' => '$1 mētrai',
'exif-meteringmode-0' => 'Niwaīsts',
-'exif-meteringmode-1' => 'SÄ«rzda',
+'exif-meteringmode-1' => 'SirzdÄ',
'exif-meteringmode-2' => 'Swērtan sirdan',
'exif-meteringmode-3' => 'Punktiskas',
'exif-meteringmode-4' => 'Tulapunktiskas',
@@ -2518,9 +2455,9 @@ KitÄi wÄ«rst bÅ«wusis kliptan auprestaminai.
# Flash modes
'exif-flash-fired-0' => 'Å lait bliccin',
'exif-flash-fired-1' => 'Sen bliccin',
-'exif-flash-return-0' => 'Å¡lÄit etswÄikstintas swÄikstas serrÄ«psnas funkciÅnin',
-'exif-flash-return-2' => 'etswÄikstintan swÄikstan ni serrÄ«ptan',
-'exif-flash-return-3' => 'etswÄikstintan swÄikstan serrÄ«ptan',
+'exif-flash-return-0' => 'Å¡lÄit etswÄikstitas swÄikstas serrÄ«psnas funkciÅnin',
+'exif-flash-return-2' => 'etswÄikstitan swÄikstan ni serrÄ«ptan',
+'exif-flash-return-3' => 'etswÄikstitan swÄikstan serrÄ«ptan',
'exif-flash-mode-1' => 'PreispÄrtints bliccis',
'exif-flash-mode-2' => 'PreispÄrtinta blicces nisatausnÄ',
'exif-flash-mode-3' => 'autÅmatiskan prÅgraman',
@@ -2595,15 +2532,13 @@ KitÄi wÄ«rst bÅ«wusis kliptan auprestaminai.
# External editor support
'edit-externally' => 'RedigÄ«s Å¡in pÄusan tÄ“rpawintei izwinandan prÅgraman',
-'edit-externally-help' => '(SkaitÄis [http://www.mediawiki.org/wiki/Manual:External_editors instrukciÅnins], kÄi gaÅ«lai tÅ«ls infÅrmaciÅnins).',
+'edit-externally-help' => '(SkaitÄis [//www.mediawiki.org/wiki/Manual:External_editors instrukciÅnins], kÄi gaÅ«lai tÅ«ls infÅrmaciÅnins).',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'wisÄi',
-'imagelistall' => 'wisÄi',
-'watchlistall2' => 'wisÄi',
-'namespacesall' => 'wisÄi',
-'monthsall' => 'wisÄi',
-'limitall' => 'wisÄi',
+'watchlistall2' => 'wisÄi',
+'namespacesall' => 'wisÄi',
+'monthsall' => 'wisÄi',
+'limitall' => 'wisÄi',
# E-mail address confirmation
'confirmemail' => 'Padrūktinais e-mail adressin',
@@ -2611,15 +2546,15 @@ KitÄi wÄ«rst bÅ«wusis kliptan auprestaminai.
'confirmemail_text' => '{{SITENAME}} izkÄ«nina e-mailas adressis izbandÄsnan pirzdau e-mailas funkciÅnis tÄ“rpausnan.
Gnetteis knuppan zemmais, kÄi tengÄ«nlai en swajjan adressin padrÅ«ktinantin pÄ“ismenin.
PÄ“ismen wÄ«rst turÄ«wuns en sen auntengÄ«nsenin prei pÄusan sen identificÄ«snas kÅdan;
-Etwereis Å¡in autengÄ«nsenin en lasÄtlai, ka wÄ«rst padrÅ«ktiwus, kÄi tÅ« assei Å¡isses adressis tÄ“rpautajs.',
+Etwereis Å¡in autengÄ«nsenin en lasÄtlai, ka wÄ«rst padrÅ«ktinus, kÄi tÅ« assei Å¡isses adressis tÄ“rpautajs.',
'confirmemail_pending' => 'PadrÅ«ktinsnas kÅdan jÄu pastÄi tengÄ«ntan ti.
Ik tÅ« panzdaumai assei teÄ«kuns(si) rekkenan, gÄ“ideis delli minÅ«tins pirzdau ripÄ«ntin madlin ezze kÅdas tengÄ«nsnan.',
'confirmemail_send' => 'Tenginnais padrÅ«ktinsnas kÅdan',
'confirmemail_sent' => 'Padrūktinsnas e-mail tengīntan.',
'confirmemail_oncreate' => 'PadrÅ«ktinsas kÅdan pastÄi tengÄ«ntan en twajjan e-mail adressin.
-Å in kÅdan ni ast izkinintan kÄi enÄ“ilai, adder tebbei prawerru aktiwÄ«tun din (etwerrintei gaÅ«tan autengÄ«nsenin en lasÄtlai) pirzdau ainuntan e-mailas mazÄ«ngiskwan en wiki enklaÅ«snan.',
+Å in kÅdan ni ast izkÄ«nintan kÄi enÄ“ilai, adder tebbei prawerru aktÄ«witun din (etwerrintei gaÅ«tan autengÄ«nsenin en lasÄtlai) pirzdau ainuntan e-mailas mazÄ«ngiskwan en wiki enklaÅ«snan.',
'confirmemail_sendfailed' => '{{SITENAME}} ni mazēi tengīntun ti padrūktinsnas e-mail pēismenin.
-Madli izbÄndais swajjan e-mail adressin, ana ni turri Ä“n sen blÄndan.
+Madli izbandais swajjan e-mail adressin, ana ni turri Ä“n sen blÄndan.
Pustis sistÄ“man ast etwÄrtai wartÄ«wus pawakÄ«senin: $1',
'confirmemail_invalid' => 'TitikrÅmiskan padrÅ«ktinsnas kÅdan.
@@ -2630,12 +2565,12 @@ Tu mazzi jÄu [[Special:UserLogin|enÄ“itwei]] be tuldÄ«tun si sen wiki.',
'confirmemail_loggedin' => 'TwajÄ e-mail adressi pastÄi padrÅ«ktintan.',
'confirmemail_error' => 'Tikka blÄndas prei twÄise padrÅ«ktinsenes enpeisÄsnan.',
'confirmemail_subject' => '{{SITENAME}} e-mail adressis',
-'confirmemail_invalidated' => 'E-mailas adressis padrūktinsna naīkintan',
-'invalidateemail' => 'Naīkinais e-mail padrūktinsnan',
+'confirmemail_invalidated' => 'E-mailas adressis padrūktinsna naikīntan',
+'invalidateemail' => 'Naikinnais e-mail padrūktinsnan',
# Scary transclusion
-'scarytranscludedisabled' => '[Interwiki entensīsna ast izklaūtan]',
-'scarytranscludefailed' => '[Å ablÅnis augaÅ«sna iz $1 ni izpalla]',
+'scarytranscludedisabled' => '[Interwiki entensisnÄ ast izklaÅ«tan]',
+'scarytranscludefailed' => '[Å ablÅnis augausnÄ iz $1 ni izpalla]',
'scarytranscludetoolong' => '[per ilgÄ URL adressi]',
# Trackbacks
@@ -2653,21 +2588,21 @@ Madli padrÅ«ktinais, anga tÅ« perarwi kwaitÄ“i etteÄ«ktun Å¡in pÄusan.',
'recreate' => 'Etteīkeis',
# action=purge
-'confirm_purge_button' => 'Skīstinais',
-'confirm-purge-top' => 'SkÄ«stintun Å¡isse pÄusan rÄnkas minÄ«snan?',
-'confirm-purge-bottom' => 'PÄusas etnÄuninsna skÄ«stina pÄusas rÄnkas minÄ«snan be kÄ«nina ukaaktuÄlin wersiÅnin waidÄ«nsnan.',
+'confirm_purge_button' => 'Skistinnais',
+'confirm-purge-top' => 'SkistÄ«ntun Å¡isse pÄusan rÄnkas minÄ«snan?',
+'confirm-purge-bottom' => 'PÄusas etnaunÄ«nsna skistinna pÄusas rÄnkas minÄ«snan be kÄ«nina ukaaktuÄlin wersiÅnin waidÄ«nsnan.',
# Multipage image navigation
-'imgmultipageprev' => '↠ankstÄisin pÄusan',
+'imgmultipageprev' => '↠Änkstaisin pÄusan',
'imgmultipagenext' => 'ripÄ«ntin pÄusan →',
'imgmultigo' => 'Ä’is!',
'imgmultigoto' => 'Ä’is en pÄusan $1',
# Table pager
-'ascending_abbrev' => 'unzai Ä“ntei',
+'ascending_abbrev' => 'Å«nzai Ä“ntei',
'descending_abbrev' => 'zemmai Ä“ntei',
'table_pager_next' => 'RipÄ«ntin pÄusan',
-'table_pager_prev' => 'AnkstÄisin pÄusan',
+'table_pager_prev' => 'Ä€nkstaisin pÄusan',
'table_pager_first' => 'Pirman pÄusan',
'table_pager_last' => 'Panzdauman pÄusan',
'table_pager_limit' => 'Waidinnais $1 enpeisÄsenins en pÄusu',
@@ -2675,16 +2610,16 @@ Madli padrÅ«ktinais, anga tÅ« perarwi kwaitÄ“i etteÄ«ktun Å¡in pÄusan.',
'table_pager_empty' => 'Ni ast rezultÄtai',
# Auto-summaries
-'autosumm-blank' => 'PÄusas skÄ«stintan',
+'autosumm-blank' => 'PÄusan skistÄ«ntan',
'autoredircomment' => 'Prawessenis en [[$1]]',
'autosumm-new' => 'Ast teÄ«kuns(si) nÄunan pÄusan "$1"',
# Live preview
-'livepreview-loading' => 'Kraūsna...',
-'livepreview-ready' => 'Kraūsna...Gattawan!',
-'livepreview-failed' => 'DinÄmiska pirmÄdira ni dÄ«lai! BÄndais jÄukun pirmÄdiran.',
-'livepreview-error' => 'SÄ“isna ni izpalla: $1, "$2".
-BÄndais jÄukun pirmÄdiran.',
+'livepreview-loading' => 'KrausnÄ...',
+'livepreview-ready' => 'KrausnÄ...Gattawan!',
+'livepreview-failed' => 'DinÄmiska pirmÄdira ni dÄ«lai! Bandais jÄukun pirmÄdiran.',
+'livepreview-error' => 'SeisnÄ ni izpalla: $1, "$2".
+Bandais jÄukun pirmÄdiran.',
# Friendlier slave lag warnings
'lag-warn-normal' => 'KitawÄ«dinsnas nÄunaisis nikÄi $1{{PLURAL:$1|sekÅ«ndi|sekÅ«ndis}} mazzi ni bÅ«twei waidÄ«ntan en listei.',
@@ -2697,7 +2632,7 @@ BÄndais jÄukun pirmÄdiran.',
'watchlistedit-normal-legend' => 'Āupausinais tītelins iz listin stēisan nadirītan',
'watchlistedit-normal-explain' => 'Zemmais ast listi stÄ“isan pÄusan nadirÄ«tan prÅ tin.
Kai Äupausinlai nadirÄ«tan pÄusan iz listin, ebzentlis laÅ«kan pagÄr prei tÄ«telin be gnetteis "Ä€upausinais ebzentlitans".
-Tū mazzi dīgi tērpautun [[Special:Watchlist/raw|nadirītan listis tekstiskan pagaptin]].',
+Tū mazzi dīgi tērpautun [[Special:EditWatchlist/raw|nadirītan listis tekstiskan pagaptin]].',
'watchlistedit-normal-submit' => 'Āupausinais tītelins',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 tÄ«tels|$1 tÄ«telai}} pastÄi Äupausintan iz twajjan listin stÄ“isan nadirÄ«tan:',
'watchlistedit-raw-title' => 'Redigīs listis appun sen tekstas ēnrankin',
@@ -2705,10 +2640,10 @@ Tū mazzi dīgi tērpautun [[Special:Watchlist/raw|nadirītan listis tekstiskan
'watchlistedit-raw-explain' => 'Zemmais ast waidÄ«ntan tÄ«telai en twajjan nadirÄ«tan listin. Listi mazzi bÅ«twei redigÄ«tan preidÄntei be Äupausintei tÄ«telins;
aīnan tītelin per rīndan.
Wanginnantei, gnetteis "EtnÄuneis listin".
-Tu mazzi dÄ«gi [[Special:Watchlist/edit|tÄ“rpautun stÄndardiskan editÅran]].',
+Tu mazzi dÄ«gi [[Special:EditWatchlist|tÄ“rpautun stÄndardiskan editÅran]].',
'watchlistedit-raw-titles' => 'NadirÄ«tai pÄusai',
-'watchlistedit-raw-submit' => 'EtnÄuninais listin stÄ“isan nadirÄ«tan',
-'watchlistedit-raw-done' => 'TwajÄ nadirÄ«tan listi pastÄi etnÄunintan.',
+'watchlistedit-raw-submit' => 'Etnauninnais listin stēisan nadirītan',
+'watchlistedit-raw-done' => 'TwajÄ nadirÄ«tan listi pastÄi etnaunÄ«ntan.',
'watchlistedit-raw-added' => '{{PLURAL:$1|1 tÄ«tels|$1 tÄ«telai}} pastÄi preidÄtan:',
'watchlistedit-raw-removed' => '{{PLURAL:$1|1 tÄ«tels|$1 tÄ«telai}} pastÄi Äupausintan:',
@@ -2721,39 +2656,36 @@ Tu mazzi dÄ«gi [[Special:Watchlist/edit|tÄ“rpautun stÄndardiskan editÅran]].',
'unknown_extension_tag' => 'NIwaīsts plattinsenes zentlitajs "$1"',
# Special:Version
-'version' => 'WersiÅni',
-'version-extensions' => 'Instalītai plattinsenei',
-'version-specialpages' => 'SpeciÄlai pÄusai',
-'version-parserhooks' => 'Parseras Änsai',
-'version-variables' => 'WariÄblis',
-'version-other' => 'KitÄi',
-'version-hooks' => 'Ä€nsai',
-'version-extension-functions' => 'Plattinsenes funkciÅnis',
-'version-parser-extensiontags' => 'Parseras plattinsenes zentlitajai',
-'version-parser-function-hooks' => 'Parseras funkciÅnis Änsai',
-'version-skin-extension-functions' => 'Prusnas plattinsenes funkciÅnis',
-'version-hook-name' => 'Ä€nsas pabilisnÄ',
-'version-version' => '(WersiÅni $1)',
-'version-license' => 'Licēnci',
-'version-software' => 'InstalÄ«tas prÅgraminis',
-'version-software-version' => 'WersiÅni',
+'version' => 'WersiÅni',
+'version-extensions' => 'Instalītai plattinsenei',
+'version-specialpages' => 'SpeciÄlai pÄusai',
+'version-parserhooks' => 'Parseras Änsai',
+'version-variables' => 'WariÄblis',
+'version-other' => 'KitÄi',
+'version-hooks' => 'Ä€nsai',
+'version-extension-functions' => 'Plattinsenes funkciÅnis',
+'version-parser-extensiontags' => 'Parseras plattinsenes zentlitajai',
+'version-parser-function-hooks' => 'Parseras funkciÅnis Änsai',
+'version-hook-name' => 'Ä€nsas pabilisnÄ',
+'version-version' => '(WersiÅni $1)',
+'version-license' => 'Licēnci',
+'version-software' => 'InstalÄ«tas prÅgraminis',
+'version-software-version' => 'WersiÅni',
# Special:FilePath
'filepath' => 'Lunki en zūrbrukin',
'filepath-page' => 'ZÅ«rbrukis:',
'filepath-submit' => 'Lunki',
'filepath-summary' => 'Å in speciÄlin pÄusan wartinna pastippan lunkin prei zÅ«rbrukin.
-Bildei ast waÄ«dintan en pilnan rezÅluciÅnin, kitÄi zÅ«rbrukin tÄ«pai ast etwertan en prÅgramu preirÄ«stasmu prei tennans.
+Bildei ast waÄ«dintan en pilnan rezÅluciÅnin, kitÄi zÅ«rbrukin tÄ«pai ast etwertan en prÅgramu preiristasmu prei tennans.
EnpeisÄis zÅ«rbrukes pabilÄ«snan Å¡lÄit "{{ns:file}}:" prefiksan.',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Laukīs dwigubbintans zūrbrukins',
-'fileduplicatesearch-summary' => 'LaukÄ«s dwigubbintans zÅ«rbrukins pa tenÄ“isan kÅntrÅlingin summin.
-
-EnpeisÄis zÅ«rbrukes pabilÄ«snan Å¡lÄit "{{ns:file}}:" prefiksan.',
+'fileduplicatesearch-summary' => 'LaukÄ«s dwigubbintans zÅ«rbrukins pa tenÄ“isan kÅntrÅlingin summin.',
'fileduplicatesearch-legend' => 'Laukīs dwigubbintans zūrbrukins',
-'fileduplicatesearch-filename' => 'Zūrbrukes pabilīsna:',
+'fileduplicatesearch-filename' => 'ZÅ«rbrukes pabilisnÄ:',
'fileduplicatesearch-submit' => 'Laukīs',
'fileduplicatesearch-info' => '$1 × $2 pikselai<br />Zūrbrukis debban: $3<br />MIME tīps: $4',
'fileduplicatesearch-result-1' => 'ZÅ«rbrukis "$1" ni turri idÄ“ntiskan kÅpijan.',
@@ -2786,18 +2718,18 @@ EnpeisÄis zÅ«rbrukes pabilÄ«snan Å¡lÄit "{{ns:file}}:" prefiksan.',
#EnpeisÄis zemmais fragmentans stÄ“isan regulÄran izbilÄ«senin (tÄ“r ka Ä“it sirzdau //)
#Tenēi wīrst būwusis senkalsītan prei ULRans stēisan izwinandan bildins.
# Å Äi kawÄ«dai passaui wÄ«rst bÅ«wusis waidÄ«ntan kÄigi bildei, kitawÄ«dai tÄ“r autengÄ«nsenin wÄ«rst bÅ«wuns waidÄ«ntan
-# LÄ«nijas pagaÅ«wintis si sen # ast laikÄtan per kumentÄrans
+# LÄ«nijas pagaÅ«nintes si sen # ast laikÄtan per kumentÄrans
# En enpeisÄsenimans litteran debban ast zentlawingi.
# EnpeisÄis wissans izbilÄ«senins zemmais. Ni kitawÄ«dinais Å¡an lÄ«nijan</pre>',
# Special:Tags
-'tags' => 'IzbÄndais kitawÄ«disnans pa tagans',
+'tags' => 'Izbandais kitawīdisnans pa tagans',
'tag-filter' => '[[Special:Tags|Tagan]] filteris:',
'tag-filter-submit' => 'Filteris',
'tags-title' => 'Tagai',
'tags-intro' => 'En Å¡ismu pÄusan ast listi stÄ“isan tagan, sen kawÄ«dans prÅgraminis mazzi pazentlitun redigÄ«senins be tenÄ“isan zentlisnan.',
-'tags-tag' => 'Tagas pabilīsna',
+'tags-tag' => 'Tagas pabilisnÄ',
'tags-display-header' => 'Tiksenei en listimans stēisan kitawīdisnan',
'tags-description-header' => 'Pilns zentlisnas ebpeisÄsenis',
'tags-hitcount-header' => 'Pazentlitas kitawīdinsnas',
@@ -2806,7 +2738,7 @@ EnpeisÄis zÅ«rbrukes pabilÄ«snan Å¡lÄit "{{ns:file}}:" prefiksan.',
# Database error messages
'dberr-header' => 'Å Ä« wÄ«ki ni dÄ«lai tikrÅmiskai',
-'dberr-again' => 'BÄndais etkÅ«mps kraÅ«tun Å¡in pÄusan pa delli minÅ«tins.',
+'dberr-again' => 'Bandais etkÅ«mps kraÅ«tun Å¡in pÄusan pa delli minÅ«tins.',
'dberr-info' => '(Ni mazÄ«ngi sÄ“itun si sen dÄtanbazis sÄ“rwerin: $1)',
'dberr-usegoogle' => 'En šissei kērdan tu mazzi laukītun sen Google.',
'dberr-outofdate' => 'WaÄ«dais, kÄi tenÄ“i mazzi turÄ«tun niaktuÄlins nÅ«sas Ä“nturas indeksans.',
diff --git a/languages/messages/MessagesPs.php b/languages/messages/MessagesPs.php
index 30f723c8..44ccca83 100644
--- a/languages/messages/MessagesPs.php
+++ b/languages/messages/MessagesPs.php
@@ -37,60 +37,59 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Userlogin' => array( 'ننوتل' ),
- 'Userlogout' => array( 'وتل' ),
+ 'Allmessages' => array( 'ټول-پيغامونه' ),
+ 'Allpages' => array( 'ټول_مخونه' ),
+ 'Ancientpages' => array( 'لرغوني_مخونه' ),
+ 'Blankpage' => array( 'تش_مخ' ),
+ 'Block' => array( 'بنديز،_د_Ø¢ÛŒ_پي_بنديز،_بنديز_Ù„Ú«Ûدلی_کارن_Block' ),
+ 'Booksources' => array( 'د_کتاب_سرچينÛ' ),
+ 'Categories' => array( 'ÙˆÛشنيزÛ' ),
+ 'ChangePassword' => array( 'پټنوم_بدلول،_پټنوم_بيا_پر_Úای_کول،_د_بيا_پر_Úای_کولو_پاسپورټ' ),
+ 'Contributions' => array( 'ونډÛ' ),
'CreateAccount' => array( 'کارن-حساب_جوړول' ),
- 'Preferences' => array( 'غوره_توبونه' ),
- 'Watchlist' => array( 'کتنلړ' ),
- 'Recentchanges' => array( 'اوسني_بدلونونه' ),
- 'Upload' => array( 'پورته_کول' ),
+ 'DeletedContributions' => array( 'Ú“Ù†Ú«Û_شوي_ونډÛ' ),
+ 'Export' => array( 'صادرول' ),
+ 'BlockList' => array( 'د_بنديزلړليک' ),
+ 'LinkSearch' => array( 'د_تړنÛ_پلټنه' ),
'Listfiles' => array( 'د_انÚورونو_لړليک' ),
- 'Newimages' => array( 'نوي_انÚورونه' ),
'Listusers' => array( 'د_کارنانو_لړليک' ),
- 'Statistics' => array( 'شمار' ),
- 'Randompage' => array( 'ناټاکلی،_ناټاکلی_مخ' ),
+ 'Log' => array( 'يادښتونه،_يادښت' ),
'Lonelypages' => array( 'يتيم_مخونه' ),
- 'Uncategorizedpages' => array( 'ناوÛشلي_مخونه' ),
+ 'Longpages' => array( 'اوږده_مخونه' ),
+ 'Mycontributions' => array( 'زماونډÛ' ),
+ 'Mypage' => array( 'زما_پاڼه' ),
+ 'Mytalk' => array( 'زما_خبرÛ_اترÛ' ),
+ 'Newimages' => array( 'نوي_انÚورونه' ),
+ 'Newpages' => array( 'نوي_مخونه' ),
+ 'Popularpages' => array( 'نامتومخونه' ),
+ 'Preferences' => array( 'غوره_توبونه' ),
+ 'Prefixindex' => array( 'د_مختاړيو_ليکلړ' ),
+ 'Protectedpages' => array( 'ژغورلي_مخونه' ),
+ 'Protectedtitles' => array( 'ژغورلي_سرليکونه' ),
+ 'Randompage' => array( 'ناټاکلی،_ناټاکلی_مخ' ),
+ 'Recentchanges' => array( 'اوسني_بدلونونه' ),
+ 'Search' => array( 'پلټنه' ),
+ 'Shortpages' => array( 'لنډ_مخونه' ),
+ 'Specialpages' => array( 'Úانګړي_مخونه' ),
+ 'Statistics' => array( 'شمار' ),
+ 'Unblock' => array( 'بنديز_لرÛ_کول' ),
'Uncategorizedcategories' => array( 'ناوÛشلÛ_ÙˆÛشنيزÛ' ),
'Uncategorizedimages' => array( 'ناوÛشلي_انÚورونه،_ناوÛشلÛ_دوتنÛ' ),
+ 'Uncategorizedpages' => array( 'ناوÛشلي_مخونه' ),
'Uncategorizedtemplates' => array( 'ناوÛشلÛ_کينډÛ' ),
+ 'Undelete' => array( 'ناړنګول' ),
'Unusedcategories' => array( 'ناکارÛدلي_ÙˆÛشنيزÛ' ),
'Unusedimages' => array( 'ناکارÛدلÛ_دوتنÛ' ),
+ 'Unusedtemplates' => array( 'ناکارÛدلÛ_کينډÛ' ),
+ 'Unwatchedpages' => array( 'ناکتلي_مخونه' ),
+ 'Upload' => array( 'پورته_کول' ),
+ 'Userlogin' => array( 'ننوتل' ),
+ 'Userlogout' => array( 'وتل' ),
+ 'Version' => array( 'بڼه' ),
'Wantedcategories' => array( 'غوښتلÛ_ÙˆÛشنيزÛ' ),
'Wantedfiles' => array( 'غوښتلÛ_دوتنÛ' ),
'Wantedtemplates' => array( 'غوښتلÛ_کينډÛ' ),
- 'Shortpages' => array( 'لنډ_مخونه' ),
- 'Longpages' => array( 'اوږده_مخونه' ),
- 'Newpages' => array( 'نوي_مخونه' ),
- 'Ancientpages' => array( 'لرغوني_مخونه' ),
- 'Protectedpages' => array( 'ژغورلي_مخونه' ),
- 'Protectedtitles' => array( 'ژغورلي_سرليکونه' ),
- 'Allpages' => array( 'ټول_مخونه' ),
- 'Prefixindex' => array( 'د_مختاړيو_ليکلړ' ),
- 'Ipblocklist' => array( 'د_بنديزلړليک' ),
- 'Unblock' => array( 'بنديز_لرÛ_کول' ),
- 'Specialpages' => array( 'Úانګړي_مخونه' ),
- 'Contributions' => array( 'ونډÛ' ),
- 'Booksources' => array( 'د_کتاب_سرچينÛ' ),
- 'Categories' => array( 'ÙˆÛشنيزÛ' ),
- 'Export' => array( 'صادرول' ),
- 'Version' => array( 'بڼه' ),
- 'Allmessages' => array( 'ټول-پيغامونه' ),
- 'Log' => array( 'يادښتونه،_يادښت' ),
- 'Blockip' => array( 'بنديز،_د_Ø¢ÛŒ_پي_بنديز،_بنديز_Ù„Ú«Ûدلی_کارن_Block' ),
- 'Undelete' => array( 'ناړنګول' ),
- 'Unwatchedpages' => array( 'ناکتلي_مخونه' ),
- 'Unusedtemplates' => array( 'ناکارÛدلÛ_کينډÛ' ),
- 'Mypage' => array( 'زما_پاڼه' ),
- 'Mytalk' => array( 'زما_خبرÛ_اترÛ' ),
- 'Mycontributions' => array( 'زماونډÛ' ),
- 'Popularpages' => array( 'نامتومخونه' ),
- 'Search' => array( 'پلټنه' ),
- 'Resetpass' => array( 'پټنوم_بدلول،_پټنوم_بيا_پر_Úای_کول،_د_بيا_پر_Úای_کولو_پاسپورټ' ),
- 'Blankpage' => array( 'تش_مخ' ),
- 'LinkSearch' => array( 'د_تړنÛ_پلټنه' ),
- 'DeletedContributions' => array( 'Ú“Ù†Ú«Û_شوي_ونډÛ' ),
- 'Badtitle' => array( 'ناسم_سرليک،_Badtitle' ),
+ 'Watchlist' => array( 'کتنلړ' ),
);
$magicWords = array(
@@ -155,12 +154,6 @@ $magicWords = array(
);
$rtl = true;
-$defaultUserOptionOverrides = array(
- # Swap sidebar to right side by default
- 'quickbar' => 2,
- # Underlines seriously harm legibility. Force off:
- 'underline' => 0,
-);
$messages = array(
# User preference toggles
@@ -287,14 +280,7 @@ $messages = array(
'listingcontinuesabbrev' => 'پرله پسÛ',
'index-category' => 'ليکلړلرونکي مخونه',
'noindex-category' => 'Ø¨Û Ù„ÙŠÚ©Ù„Ú“Ù‡ مخونه',
-
-'mainpagetext' => "'''MediaWiki په برياليتوب سره نصب شو.'''",
-'mainpagedocfooter' => 'د ويکي Ø³Ø§ÙˆØªØ±Û Ø¯ کارولو د مالوماتو په اړه [http://meta.wikimedia.org/wiki/Help:Contents د کارن لارښود] سره سلا ÙˆÚ©Ú“Û.
-
-== پيلول ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings د امستنو د Ø³Ø§Ø²ÙˆÙ†Û Ù„Ú“Ù„ÙŠÚ©]
-* [http://www.mediawiki.org/wiki/Manual:FAQ د ميډياويکي Ú‰ÛرÚÙ„ÙŠØ²Û Ù¾ÙˆÚšØªÙ†Û]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce د Ù…Ûډياويکي د برÛښليکونو لړليک]',
+'broken-file-category' => 'د دوتنو د ماتو تړنو مخونه',
'about' => 'په اړه',
'article' => 'Ù…ÛÙ†Úپانګيز مخ',
@@ -344,10 +330,10 @@ $messages = array(
'history' => 'د مخ Ù¾Ûښليک',
'history_short' => 'Ù¾Ûښليک',
'updatedmarker' => 'زما د وروستي راتګ نه راپدÛخوا اوسمهاله شوی',
-'info_short' => 'مالومات',
'printableversion' => 'د چاپ بڼه',
'permalink' => 'ØªÙ„Ù¾Ø§ØªÛ ØªÚ“Ù†Ù‡',
'print' => 'چاپ',
+'view' => 'کتل',
'edit' => 'سمول',
'create' => 'جوړول',
'editthispage' => 'همدا مخ سمول',
@@ -355,6 +341,7 @@ $messages = array(
'delete' => 'ړنګول',
'deletethispage' => 'دا مخ ړنګ کړه',
'undelete_short' => '{{PLURAL:$1|يو سمون|$1 سمونÛ}} ناړنګول',
+'viewdeleted_short' => '{{PLURAL:$1|يو ړنګ شوی سمون|$1 ړنګ شوي سمونونه}} کتل',
'protect' => 'ژغورل',
'protect_change' => 'بدلون',
'protectthispage' => 'همدا مخ ژغورل',
@@ -438,6 +425,8 @@ $1',
'toc' => 'نيوليک',
'showtoc' => 'ښکاره کول',
'hidetoc' => 'پټول',
+'collapsible-collapse' => 'پرÚول',
+'collapsible-expand' => 'غÚول',
'thisisdeleted' => '$1 کتل او يا بيازÛرمل؟',
'viewdeleted' => '$1 کتل؟',
'restorelink' => '{{PLURAL:$1|يو ړنګ شوی سمون|$1 ړنګ شوي سمونونه}}',
@@ -448,6 +437,8 @@ $1',
'page-atom-feed' => 'د "$1" د اټوم کتنÛ',
'feed-rss' => 'آر اس اس',
'red-link-title' => '$1 (تر اوسه Ù¾ÙˆØ±Û Ù†Ù‡ شته)',
+'sort-descending' => 'مخښکته اوډل',
+'sort-ascending' => 'مخپورته اوډل',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'ليکنه',
@@ -511,10 +502,9 @@ $1',
'protectedinterface' => 'په Ù‡Ù…Ø¯Û Ù…Ø® Ú©Û Ø¯ پوستکالي د ليدنمخ متن دی او دا متن د ناسمو کارولو د مخنيوي په تکل تړل شوی.',
'editinginterface' => "'''ګواښنه:''' تاسو په يوه Ø¯Ø§Ø³Û Ù…Ø® Ú©Û Ø¨Ø¯Ù„ÙˆÙ† راولی کوم Ú†Û Ø¯ ÙŠÙˆÛ Ù¾ÙˆØ³ØªÚ©Ø§Ù„ÛŒ د ليدنمخ متن په توګه کارÛÚ–ÙŠ.
په Ù‡Ù…Ø¯Û Ù…Ø® Ú©Û Ø¨Ø¯Ù„ÙˆÙ† راوستل به د نورو کارنانو د ليدنمخ بڼه اغÛزمنه Ú©Ú“ÙŠ.
-د Ú˜Ø¨Ø§Ú“Û Ù„Ù¾Ø§Ø±Ù‡ØŒ مهرباني ÙˆÚ©Ú“ÛŒ د [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net]ØŒ ÙˆÛبÚÙŠ ته ولاړ Ø´ÛŒ. دا ÙˆÛبÚÛŒ د ميډياويکي د Úايتابه پروژه ده او د Ù‡Ù…Ø¯Û Ù¾Ø± کارولو غور ÙˆÚ©Ú“ÛŒ.",
+د Ú˜Ø¨Ø§Ú“Û Ù„Ù¾Ø§Ø±Ù‡ØŒ مهرباني ÙˆÚ©Ú“ÛŒ د [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net]ØŒ ÙˆÛبÚÙŠ ته ولاړ Ø´ÛŒ. دا ÙˆÛبÚÛŒ د ميډياويکي د Úايتابه پروژه ده او د Ù‡Ù…Ø¯Û Ù¾Ø± کارولو غور ÙˆÚ©Ú“ÛŒ.",
'sqlhidden' => '(د SQL پوښتن پټ دی)',
'namespaceprotected' => "ØªØ§Ø³Û Ø¯ '''$1''' په نوم-تشيال Ú©Û Ø¯ مخونو د سمولو اجازه نه لرÛ.",
-'customcssjsprotected' => 'ØªØ§Ø³Û Ø¯ Ø¯Û Ù…Ø® د سمولو اجازه نه لرÛØŒ دا ÚÚ©Ù‡ Ú†Û Ø¯Ø§ مخ د بل کارن شخصي Ø§Ù…Ø³ØªÙ†Û Ù„Ø±ÙŠ.',
'ns-specialprotected' => 'Úانګړي مخونو Ú©Û Ø³Ù…ÙˆÙ† او بدلون نه Ø´ÛŒ راوستلای.',
'titleprotected' => 'د [[User:$1|$1]] لخوا د Ø¯Û Ø³Ø±Ù„ÙŠÚ© د جوړÛدلو مخنيوی شوی.
او د Ø¯Û Ú©Ú“Ù†Û Ø³Ø¨Ø¨ "\'\'$2\'\'" ورکړ شوی.',
@@ -550,6 +540,7 @@ $1',
'createaccount' => 'ګڼون جوړول',
'gotaccount' => 'آيا وار Ø¯Ù…Ø®Û ÙŠÙˆ ګڼون لری؟ $1.',
'gotaccountlink' => 'ننوتل',
+'userlogin-resetlink' => 'د ننوتلو مالومات مو Ù‡Ûر شوي؟',
'createaccountmail' => 'د برÛښليک له مخÛ',
'createaccountreason' => 'سبب:',
'badretype' => 'دا پټنوم Ú†Û ØªØ§Ø³Û Ù„ÙŠÚ©Ù„ÛŒ د مخکني پټنوم سره ورته نه دی.',
@@ -570,7 +561,7 @@ $1',
'nosuchuser' => 'د "$1" په نوم Ù‡ÛÚ… کارن نشته.
د کارنانو نومونه د غټو او واړو تورو سره حساس دي.
خپل حجا وڅارÛØŒ او يا هم [[Special:UserLogin/signup|يو نوی ګڼون جوړ Ú©Ú“ÛŒ]].',
-'nosuchusershort' => 'د "<nowiki>$1</nowiki>" په نوم Ù‡ÛÚ… کوم ګڼون نشته. لطÙاً خپل د نوم Ù„ÙŠÚ©Ù„Û Ø¨Ú¼Û ØªÙ‡ Úير Ø´ÛŒ Ú†Û Ù¾Ú©Û ØªÛروتنه نه وي.',
+'nosuchusershort' => 'د "$1" په نوم Ù‡ÛÚ… کوم ګڼون نشته. لطÙاً خپل د نوم Ù„ÙŠÚ©Ù„Û Ø¨Ú¼Û ØªÙ‡ Úير Ø´ÛŒ Ú†Û Ù¾Ú©Û ØªÛروتنه نه وي.',
'nouserspecified' => 'ØªØ§Ø³Û Úان ته کوم کارن نوم نه دی Úانګړی Ú©Ú“ÛŒ.',
'login-userblocked' => 'په Ø¯Û Ú©Ø§Ø±Ù† بنديز Ù„Ú«Ûدلی. غونډال Ú©Û Ù†Ù†ÙˆØªÙ„Ùˆ ته Ù¾Ø±Û Ù†Ù‡ ښودلی شو.',
'wrongpassword' => 'ناسم پټنوم مو ليکلی. لطÙاً يو ÚÙ„ بيا ÙŠÛ ÙˆÙ„ÙŠÚ©Û.',
@@ -613,7 +604,7 @@ $1',
'usernamehasherror' => 'کارن-نوم نشي Ú©Ûدلای Ú†Û Ú©Ø±ÚšÚ©Û Ù„ÙˆÚšÛ ÙˆÙ„Ø±ÙŠ',
'loginlanguagelabel' => 'ژبه: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'پټنوم بدلول',
'resetpass_header' => 'د ګڼون پټنوم بدلول',
'oldpassword' => 'زوړ پټنوم:',
@@ -629,6 +620,18 @@ $1',
'resetpass-wrong-oldpass' => 'لنډمهال او يا هم اوسنی پټنوم مو ناسم دی',
'resetpass-temp-password' => 'لنډمهالی پټنوم:',
+# Special:PasswordReset
+'passwordreset' => 'پټنوم بياپرÚايول',
+'passwordreset-text' => 'د Ø¯Û Ù„Ù¾Ø§Ø±Ù‡ Ú†Û Ø³ØªØ§Ø³Û Ø¯ ګڼون Ø¨Ø´Ù¾Ú“Û Ú…Ø±Ú«Ù†Ø¯Ù†Û Ø¯Ø±Ø¨Ø±Ûښليک شي نو دا Ùورمه Ú‰Ú©Ù‡ Ú©Ú“Û.',
+'passwordreset-legend' => 'پټنوم بياپرÚايول',
+'passwordreset-username' => 'کارن-نوم:',
+'passwordreset-domain' => 'شپول:',
+'passwordreset-email' => 'برÛښليک پته:',
+'passwordreset-emailtitle' => 'د {{SITENAME}} د ګڼون څرګندنÛ',
+'passwordreset-emailelement' => 'کارن-نوم: $1
+لنډمهاله پټنوم: $2',
+'passwordreset-emailsent' => 'يو يادښتي برÛښليک ولÛÚ–Ù„ شو.',
+
# Edit page toolbar
'bold_sample' => 'زغرد متن',
'bold_tip' => 'زغرد متن',
@@ -640,8 +643,6 @@ $1',
'extlink_tip' => 'Ø¨Ø§Ù†Ø¯Ù†Û ØªÚ“Ù†Û (د http:// مختاړی مه Ù‡Ûروی)',
'headline_sample' => 'سرليک',
'headline_tip' => 'د Û² Ú©Ú†Û Ø³Ø±Ù„ÙŠÚ©',
-'math_sample' => 'Ùورمول دلته Úای Ú©Ú“ÛŒ',
-'math_tip' => 'شمÛرپوهنيز Ùورمول (LaTeX)',
'nowiki_sample' => 'دلته Ø¯Û Ø¨Û Ø¨Ú¼Û Ù…ØªÙ† Úای پر Úای شي',
'nowiki_tip' => 'د ويکي بڼه نيونه بابÛزه Ú«Ú¼Ù„',
'image_tip' => 'خښه Ø´ÙˆÛ Ø¯ÙˆØªÙ†Ù‡',
@@ -711,7 +712,7 @@ $1',
ØªØ§Ø³Û Ú©ÙˆÙ„Ø§ÛŒ Ø´ÛŒ Ú†Û Ù¾Ù‡ نورو مخونو Ú©Û [[Special:Search/{{PAGENAME}}|د Ø¯Û Ù…Ø® د سرليک پلټنه]] يا
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} د اړوندو يادښتونو پلټنه] وکړی.
او يا [{{fullurl:{{FULLPAGENAME}}|action=edit}} همدا مخ سم کړی]</span>.',
-'userpage-userdoesnotexist' => 'د "$1" ګڼون نه دی ثبت شوی.
+'userpage-userdoesnotexist' => 'د "<nowiki>$1</nowiki>" ګڼون نه دی ثبت شوی.
لطÙاً Úان ډاډه Ú©Ú“Û Ú†Û Ø¢ÙŠØ§ ØªØ§Ø³Û Ù¾Ù‡ رښتيا همدا مخ جوړول Ú©Ù‡ سمول غواړÛ.',
'userpage-userdoesnotexist-view' => 'د "$1" ګڼون نه دی ثبت شوی.',
'blocked-notice-logextract' => 'دم مهال په Ø¯Û Ú©Ø§Ø±Ù† بنديز Ù„Ú«Ûدلی.
@@ -930,6 +931,7 @@ $1',
'showingresultsheader' => "د «'''$4'''» لپاره {{PLURAL:$5|له '''$1''' نه تر '''$3''' پايله|له '''$1 نه تر $2''' پايلÛØŒ Ù¼ÙˆÙ„Û Ù¾Ø§ÙŠÙ„Û '''$3''' }}",
'nonefound' => "'''يادښت''': ÙŠÙˆØ§Ø²Û ÙŠÙˆ Ú…Ùˆ نوم-تشيالونو په تلواليزه توګه پلټل Ú©ÛÚ–ÙŠ.
د ''ټول:'' مختاړي په کارولو سره به Ø³ØªØ§Ø³Û Ø¯ Ù¾Ù„Ù¼Ù†Û Ù„Ù¾Ø§Ø±Ù‡ØŒ په ټوله Ù…ÛÙ†Úپانګه Ú©Û Ù¾Ù„Ù¼Ù†Ù‡ وشي (د خبرواترو، Ú©ÙŠÙ†Ú‰Û Ø§Ùˆ نورو مخونو په ګډون), او يا هم د Ø®Ù¾Ù„Û Ø®ÙˆÚšÛ Ù†ÙˆÙ…-تشيال د مختاړي په توګه وکاروÛ.",
+'search-nonefound' => 'د ØºÙˆÚšØªÙ†Û Ø³Ø±Ù‡ سم اړونده Ù¾Ø§ÙŠÙ„Û Ùˆ نه موندل شوÛ.',
'powersearch' => 'ژوره پلټنه',
'powersearch-legend' => 'ژوره پلټنه',
'powersearch-ns' => 'په نوم-تشيالونو Ú©Û Ù¾Ù„Ù¼Ù†Ù‡:',
@@ -957,9 +959,10 @@ $1',
'changepassword' => 'پټنوم بدلول',
'prefs-skin' => 'پوښÛ',
'skin-preview' => 'مخکتنه',
-'prefs-math' => 'شمÛرپوهنه',
'datedefault' => 'Ù‡ÛÚ… نه ټاکل',
+'prefs-beta' => 'د آزمÛښتي Ø¨Ú¼Û ÚانګړنÛ',
'prefs-datetime' => 'Ù†Ûټه او وخت',
+'prefs-labs' => 'د آزمÛنتون ÚانګړنÛ',
'prefs-personal' => 'د کارن Ù¾Ûژنليک',
'prefs-rc' => 'وروستي بدلونونه',
'prefs-watchlist' => 'کتنلړ',
@@ -986,7 +989,7 @@ $1',
'savedprefs' => 'ستاسو غوره توبونه خوندي شوه.',
'timezonelegend' => 'د وخت سيمه:',
'localtime' => 'سيمه ايز وخت:',
-'timezoneuseserverdefault' => 'د پالنګر تلواليزه بڼه کارول',
+'timezoneuseserverdefault' => 'د ويکي تلواليزه بڼه کارول ($1)',
'timezoneuseoffset' => 'بل (توپير Úانګړی Ú©Ú“ÛŒ)',
'timezoneoffset' => 'توپير¹:',
'servertime' => 'د پالنګر وخت:',
@@ -1028,8 +1031,9 @@ $1',
'gender-female' => 'ÚšÚÙ‡',
'email' => 'برÛښليک',
'prefs-help-realname' => 'د اصلي نوم ليکل ستاسو په خوښه دی خو Ú©Ù‡ تاسو خپل اصلي نوم ÙˆÙ¼Ø§Ú©Û Ù¾Ø¯Û Ø³Ø±Ù‡ به ستاسو ټول کارونه او ÙˆÙ†Ú‰Û Ø³ØªØ§Ø³Ùˆ د نوم په اړوندولو Ú©Û ÙˆÚ©Ø§Ø±ÛÚ–ÙŠ.',
-'prefs-help-email' => 'د برÛښليک ليکل Ø³ØªØ§Ø³Û Ù¾Ù‡ خوښه دی، خو په ÙˆØ±Ú©Ú“Û Ø³Ø±Ù‡ به ÙŠÛ Ø¯ يوه نوي پټنوم درلÛږلو چار آسانه Ú©Ú“ÙŠ هغه هم کله Ú†Û ØªØ§Ø³Û Ù†Ù‡ خپل پټنوم Ù‡Ûر شوی وي.
-دا هم Ø³ØªØ§Ø³Û Ø®Ù¾Ù„Ù‡ خوښه ده Ú†Û Ù†ÙˆØ±Ùˆ کارنانو ته اجازه ورکړی Ú†Û ØªØ§Ø³Û Ø³Ø±Ù‡ د کارن-نوم او يا هم د کارن د Ø®Ø¨Ø±Û Ø§ØªØ±Ùˆ لخوا، پرته له Ø¯Û Ú†Û Ø³ØªØ§Ø³Û Ù¾Ûژندنه وشي، Ø§Ú“ÙŠÚ©Û Ù¼ÙŠÙ†Ú«Û Ú©Ú“ÙŠ.',
+'prefs-help-email' => 'د برÛښليک ورکړه Ø³ØªØ§Ø³Û Ù¾Ù‡ خوښه ده، خو په ÙˆØ±Ú©Ú“Û Ø³Ø±Ù‡ به ÙŠÛ Ø¯ يوه نوي پټنوم د Ù„Ûږلو چار آسانه Ú©Ú“ÙŠ هغه هم کله Ú†Û ØªØ§Ø³Û Ù†Ù‡ خپل پټنوم Ù‡Ûر شوی وي.',
+'prefs-help-email-others' => 'ØªØ§Ø³Û Ø¯Ø§ هم کولای Ø´ÛŒ Ú†Û ÙˆÙ¼Ø§Ú©Û Ú†Û Ù†ÙˆØ± کارنان Ø³ØªØ§Ø³Û Ø¯ خبرو اترو او يا کارن مخ د ÙŠÙˆÛ ØªÚ“Ù†Û Ù„Ù‡ Ù„Ø§Ø±Û ØªØ§Ø³Û Ø³Ø±Ù‡ برÛښليکي اړيکه ونيسي.
+د اړيکو ټينګولو په وخت Ú©Û Ø¨Ù‡ Ø³ØªØ§Ø³Û Ø¨Ø±Ûښليک پته نورو کارنانو ته نه ښکاري.',
'prefs-help-email-required' => 'ستاسو د برÛښليک پته پکار ده.',
'prefs-info' => 'بنسټيزه مالومات',
'prefs-i18n' => 'Ù†Ú“Ûوالتوب',
@@ -1111,7 +1115,6 @@ $1',
'right-unwatchedpages' => 'د ناکتلو مخونو يو لړليک کتل',
'right-userrights' => 'د کارن Ù¼ÙˆÙ„Û Ø±ÚšØªÛ Ø³Ù…ÙˆÙ„',
'right-userrights-interwiki' => 'په نورو ويکي ګانو د نورو کارنانو کارن-Ø±ÚšØªÛ Ø³Ù…ÙˆÙ„',
-'right-reset-passwords' => 'د نورو کارنانو پټتوري بياامستل',
'right-sendemail' => 'نورو کارنانو ته برÛښليک Ù„ÛÚ–Ù„',
# User rights log
@@ -1296,6 +1299,8 @@ $1',
'nolinkstoimage' => 'Ø¯Ø§Ø³Û Ù‡ÛÚ… کوم مخ نه شته Ú†Û Ø¯ Ø¯ØºÛ Ø¯ÙˆØªÙ†Û Ø³Ø±Ù‡ ØªÚ“Ù†Û ÙˆÙ„Ø±ÙŠ.',
'duplicatesoffile' => 'دا Ù„Ø§Ù†Ø¯ÙŠÙ†Û {{PLURAL:$1| دوتنه د Ù‡Ù…Ø¯Û Ø¯ÙˆØªÙ†Û ØºØ¨Ø±Ú«ÙˆÙ†Û Ù„Ù…Ûسه ده|$1 Ø¯ÙˆØªÙ†Û Ø¯ Ù‡Ù…Ø¯Û Ø¯ÙˆØªÙ†Û ØºØ¨Ø±Ú«ÙˆÙ†Û Ù„Ù…ÛØ³Û Ø¯ÙŠ}} ([[Special:FileDuplicateSearch/$2|نور تÙصيل]]):',
'sharedupload' => 'دا دوتنه د $1 لخوا نه ده او Ú©Ûدای شي Ú†Û Ù†ÙˆØ±Û Ù¾Ø±ÙˆÚ˜Û Ø¨Ù‡ ÙŠÛ Ù‡Ù… کاروي.',
+'sharedupload-desc-here' => 'دا دوتنه د $1 لخوا خپرÛÚ–Û Ø§Ùˆ Ú©Ûدای شي Ú†Û Ø¯Ø§ په نورو پروژو هم کارÛØ¯Ù„Û ÙˆÙŠ.
+د Ø¯ÙˆØªÙ†Û Ø¯ کارÛØ¯Ù†Û Ù„Ø§ نور مالومات د [$2 Ø¯ÙˆØªÙ†Û Ø¯ څرګندنو په مخ] Ù„Ø§Ù†Ø¯Û ÚšÙˆØ¯Ù„ شوی.',
'filepage-nofile' => 'په Ø¯Û Ù†ÙˆÙ… کومه دوتنه نشته.',
'uploadnewversion-linktext' => 'د Ù‡Ù…Ø¯ØºÛ Ø¯ÙˆØªÙ†Û Ù†ÙˆÛ Ø¨Ú¼Ù‡ پورته کول',
'shared-repo-from' => 'د $1 لخوا',
@@ -1468,7 +1473,7 @@ $1',
'sp-deletedcontributions-contribs' => 'ونډÛ',
# Special:LinkSearch
-'linksearch' => 'Ø¨Ø§Ù†Ø¯Ù†Û ØªÚ“Ù†Û',
+'linksearch' => 'د باندنيو تړنو پلټنه',
'linksearch-pat' => 'د Ù¾Ù„Ù¼Ù†Û Ù…Ø®Ø¨ÛÙ„Ú«Ù‡:',
'linksearch-ns' => 'نوم-تشيال:',
'linksearch-ok' => 'پلټل',
@@ -1520,6 +1525,9 @@ $1',
'noemailtitle' => 'Ù‡ÛÚ… کومه برÛښليک پته نشته.',
'nowikiemailtitle' => 'د برÛښليک Ù„Ûږلو اجازه نشته',
'nowikiemailtext' => 'Ø¯Û Ú©Ø§Ø±Ù† د نورو کارنانو لخوا د برÛښليک د نه ترلاسه کولو چاره خوښه Ú©Ú“Û.',
+'emailtarget' => 'د ترلاسه کوونکي کارن-نوم وټاپÛ',
+'emailusername' => 'کارن-نوم:',
+'emailusernamesubmit' => 'سپارل',
'email-legend' => 'د {{SITENAME}} يو بل کارن ته يو برÛښليک ورلÛÚ–Ù„',
'emailfrom' => 'Ù„Ûږونکی',
'emailto' => 'اخيستونکی',
@@ -1544,13 +1552,12 @@ $1',
'watchlistanontext' => 'د خپل کتنلړ د توکو د سمولو او کتلو لپاره $1 ترسره Ú©Ú“Û.',
'watchnologin' => 'غونډال Ú©Û Ù†Ù‡ ياست ننوتي.',
'watchnologintext' => 'Ø¯Ø¯Û Ù„Ù¾Ø§Ø±Ù‡ Ú†Û Ø®Ù¾Ù„ کتل شوي لړليک Ú©Û Ø¨Ø¯Ù„ÙˆÙ† راولی نو تاسو ته پکار ده Ú†Û Ù„ÙˆÙ…Ú“ÛŒ غونډال Ú©Û [[Special:UserLogin|ننوتنه]] ترسره Ú©Ú“ÛŒ.',
-'addedwatch' => 'په کتنلړ Ú©Û ÙˆØ±Ú«Ú‰ شو.',
+'addwatch' => 'کتنلړ Ú©Û ÙˆØ±Ú«Ú‰ÙˆÙ„',
'addedwatchtext' => "د \"[[:\$1]]\" په نوم يو مخ Ø³ØªØ§Ø³Û [[Special:Watchlist|کتنلړ]] Ú©Û ÙˆØ±Ú«Ú‰ شو.
په Ø±Ø§ØªÙ„ÙˆÙ†Ú©Û Ú©Û Ú†Û Ù¾Ù‡ دغه مخ او د ده د خبرواترو مخ Ú©Û Ú©ÙˆÙ… بدلونونه راÚÙŠ نو هغه به Ø³ØªØ§Ø³Û Ú©ØªÙ†Ù„Ú“ Ú©Û ÚšÚ©Ø§Ø±Ù‡ شي،
او په Ù‡Ù…Ø¯Û ØªÙˆÚ«Ù‡ هغه مخونه به د [[Special:RecentChanges|وروستي بدلونونو]] په لړليک Ú©Û Ù¾Ù‡ '''روڼ''' ليک ښکاري ترڅو په Ø§Ø³Ø§Ù†Û Ø³Ø±Ù‡ Ú…ÙˆÚ© وپوهÛÚ–ÙŠ Ú†Û Ù¾Ù‡ کوم کوم مخونو Ú©Û Ø¨Ø¯Ù„ÙˆÙ†ÙˆÙ†Ù‡ ترسره شوي.
Ú©Ù‡ Ú†Ûرته ØªØ§Ø³Û Ø¨ÙŠØ§ وروسته ØºÙˆØ§Ú“Û Ú†Û Ú©ÙˆÙ… مخ د خپل کتنلړ نه Ù„ÙŠØ±Û Ú©Ú“ÛØŒ نو په \"نه کتل\" ØªÚ¼Û Ø¨Ø§Ù†Ø¯Û Ù¼Ú© ورکړÛ.",
-'removedwatch' => 'د کتنلړ نه Ù„Ø±Û Ø´Ùˆ',
'removedwatchtext' => 'د "[[:$1]]" مخ [[Special:Watchlist|Ø³ØªØ§Ø³Û Ú©ØªÙ†Ù„Ú“]] نه Ù„Ø±Û Ø´Ùˆ.',
'watch' => 'کتل',
'watchthispage' => 'همدا مخ کتل',
@@ -1600,13 +1607,13 @@ Contact the editor:
--
د خپل کتنلړ د امستنو د بدلون لپاره،
-{{fullurl:{{#special:Watchlist}}/edit}} نه ليدنه ÙˆÚ©Ú“Û
+{{canonicalurl:{{#special:EditWatchlist}}}} نه ليدنه ÙˆÚ©Ú“Û
د خپل کتنلړ د مخونو د ړنګولو لپاره،
$UNWATCHURL نه ليدنه ÙˆÚ©Ú“Û
انګÛØ±Ù†Û Ø§Ùˆ Ù†ÙˆØ±Û Ù…Ø±Ø³ØªÛ:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'پاڼه ړنګول',
@@ -1620,7 +1627,7 @@ $UNWATCHURL نه ليدنه ÙˆÚ©Ú“Û
'confirmdeletetext' => 'ØªØ§Ø³Û Ø¯ تل لپار يو مخ يا انÚور د هغه ټول Ù¾Ûښليک سره د دغه توکبنسټ نه Ú“Ù†Ú«ÙˆÛ. Ú©Ù‡ Ú†Ûرته ØªØ§Ø³Û Ø¯Ø¯Û Ú©Ú“Ù†Û Ù¾Ù‡ پايله پوه ياست او يا ستاسو همدا کړنه د Ø¯Û Ù¾Ø§Ú¼Û Ø¯ [[{{MediaWiki:Policy-url}}|تګلارÛ]] سره سمون خوري نو لطÙاً د Ø¯Û ØªØ§ÙŠÙŠØ¯ ÙˆÚ©Ú“ÛŒ.',
'actioncomplete' => 'بشپړه کړنه',
'actionfailed' => 'کړنه Ù†Ø§Ø¨Ø±ÙŠØ§Ù„Û Ø´ÙˆÙ‡',
-'deletedtext' => '"<nowiki>$1</nowiki>" ړنګ شوی.
+'deletedtext' => '"$1" ړنګ شوی.
د نوو Ú“Ù†Ú« شوو سوانحو لپاره $2 وګورÛ.',
'deletedarticle' => '"[[$1]]" ړنګ شو',
'dellogpage' => 'د ړنګولو يادښت',
@@ -1650,7 +1657,7 @@ $UNWATCHURL نه ليدنه ÙˆÚ©Ú“Û
'protectexpiry' => 'د پای Ù†Ûټه:',
'protect_expiry_invalid' => 'د پای وخت ناسم دی.',
'protect_expiry_old' => 'د پای وخت په تÛرمهال Ú©Û Ø¯ÛŒ.',
-'protect-text' => "ØªØ§Ø³Û Ú©ÙˆÙ„Ø§ÛŒ Ø´ÛŒ Ú†Û Ø¯ '''<nowiki>$1</nowiki>''' مخ لپاره د ژغورلو Ú©Ú†Ù‡ همدلته ÙˆÚ«ÙˆØ±Û Ø§Ùˆ بدلون Ù¾Ú©Û Ø±Ø§ÙˆÙ„ÛŒ.",
+'protect-text' => "ØªØ§Ø³Û Ú©ÙˆÙ„Ø§ÛŒ Ø´ÛŒ Ú†Û Ø¯ '''$1''' مخ لپاره د ژغورلو Ú©Ú†Ù‡ همدلته ÙˆÚ«ÙˆØ±Û Ø§Ùˆ بدلون Ù¾Ú©Û Ø±Ø§ÙˆÙ„ÛŒ.",
'protect-locked-access' => "Ø³ØªØ§Ø³Û Ú«Ú¼ÙˆÙ† دا اجازه نه لري Ú†Û Ø¯ پاڼو د Ú˜ØºÙˆØ±Ù†Û Ù¾Ù‡ Ú©Ú†Ù‡ Ú©Û Ø¨Ø¯Ù„ÙˆÙ† راولي.
دلته د '''$1''' مخ لپاره اوسني شته Ø§Ù…Ø³ØªÙ†Û Ø¯ÙŠ:",
'protect-cascadeon' => 'د اوسمهال لپاره همدا مخ ژغورل شوی دا ÚÚ©Ù‡ Ú†Û Ù‡Ù…Ø¯Ø§ مخ په {{PLURAL:$1|لانديني مخ|لانديني مخونو}} Ú©Û ÙˆØ±Ú«Ú‰ دی Ú†Û {{PLURAL:$1|Úوړاوبيزه ژغورنه ÙŠÛ Ú†Ø§Ø±Ù†Ù‡ ده|ÚÙˆÚ“Ø§ÙˆØ¨ÙŠØ²Û Ú˜ØºÙˆØ±Ù†Û ÙŠÛ Ú†Ø§Ø±Ù†Û Ø¯ÙŠ}}.
@@ -1753,10 +1760,11 @@ $UNWATCHURL نه ليدنه ÙˆÚ©Ú“Û
'whatlinkshere-filters' => 'چاڼګرونه',
# Block/unblock
+'block' => 'په کارن بنديز لګول',
+'unblock' => 'کارن له بنديزه ÙˆÛستل',
'blockip' => 'په کارن بنديز لګول',
'blockip-title' => 'په کارن بنديز لګول',
'blockip-legend' => 'په کارن بنديز لګول',
-'ipaddress' => 'IP پته',
'ipadressorusername' => 'IP پته يا کارن نوم',
'ipbexpiry' => 'د پای Ù†Ûټه:',
'ipbreason' => 'سبب:',
@@ -1788,15 +1796,17 @@ $UNWATCHURL نه ليدنه ÙˆÚ©Ú“Û
'unblockip' => 'کارن له بنديزه ÙˆÛستل',
'ipusubmit' => 'دا بنديز Ù„ÙŠØ±Û Ú©ÙˆÙ„',
'unblocked' => 'له [[User:$1|$1]] بنديز ليري شو',
+'blocklist' => 'بنديز Ù„Ú«Ûدلي کارنان',
'ipblocklist' => 'بنديز Ù„Ú«Ûدلي کارنان',
'ipblocklist-legend' => 'يو بنديز شوی کارن موندل',
-'ipblocklist-username' => 'کارن-نوم يا IP پته:',
-'ipblocklist-sh-userblocks' => 'د ګڼون بنديزونه $1',
-'ipblocklist-sh-tempblocks' => 'لنډمهاله بنديزونه $1',
+'blocklist-timestamp' => 'وخت ټاپه',
+'blocklist-target' => 'موخه',
+'blocklist-expiry' => 'پای Ù†Ûټه',
+'blocklist-by' => 'بنديز لګونکی پازوال',
+'blocklist-reason' => 'سبب',
'ipblocklist-submit' => 'پلټل',
'ipblocklist-localblock' => 'سيمه ايز بنديز',
'ipblocklist-otherblocks' => '{{PLURAL:$1|بل بنديز|نور بنديزونه}}',
-'blocklistline' => '$1, $2 په $3 بنديز ولګاوه ($4)',
'infiniteblock' => 'لامحدوده',
'expiringblock' => 'په $1 Ù†Ûټه، $2 بجو پای ته رسÛÚ–ÙŠ',
'anononlyblock' => 'يواÚÛ ÙˆØ±Ú©Ù†ÙˆÙ…ÛŒ',
@@ -1817,8 +1827,7 @@ $UNWATCHURL نه ليدنه ÙˆÚ©Ú“Û
'block-log-flags-noemail' => 'Ø¯Ø¯Û Ø¨Ø±Ûښليک مخه نيول شوی',
'block-log-flags-hiddenname' => 'پټ کارن-نوم',
'ipb_already_blocked' => 'پر "$1" د پخوا نه بنديز دی',
-'ipb-needreblock' => '== د پخوا نه بنديز Ù„Ú«Ûدلی ==
-پر $1 د پخوا نه بنديز Ù„Ú«Ûدلی.
+'ipb-needreblock' => 'پر $1 د پخوا نه بنديز Ù„Ú«Ûدلی.
آيا ØªØ§Ø³Û Ø¯ امستنو بدلول غواړÛØŸ',
'ipb-otherblocks-header' => '{{PLURAL:$1|بل بنديز|نور بنديزونه}}',
'blockme' => 'پر ما بنديز لګول',
@@ -1899,7 +1908,7 @@ $UNWATCHURL نه ليدنه ÙˆÚ©Ú“Û
'allmessagesdefault' => 'ټاکل شوی متن',
'allmessagescurrent' => 'اوسنی متن',
'allmessagestext' => 'دا د Ù…Ûډياويکي په نوم-تشيال Ú©Û Ø¯ غونډال د پيغامونو لړليک دی.
-Ú©Ù‡ Ú†Ûرته تاسو د ميډياويکي په Úايتابه Ú©Û ÙˆÙ†Ú‰Û ØªØ±Ø³Ø±Ù‡ کول ØºÙˆØ§Ú“Û Ù†Ùˆ لطÙاً [http://www.mediawiki.org/wiki/Localisation د ويډياويکي Úايتابه] او [http://translatewiki.net translatewiki.net] نه ليدنه ÙˆÚ©Ú“Û.',
+Ú©Ù‡ Ú†Ûرته تاسو د ميډياويکي په Úايتابه Ú©Û ÙˆÙ†Ú‰Û ØªØ±Ø³Ø±Ù‡ کول ØºÙˆØ§Ú“Û Ù†Ùˆ لطÙاً [//www.mediawiki.org/wiki/Localisation د ويډياويکي Úايتابه] او [//translatewiki.net translatewiki.net] نه ليدنه ÙˆÚ©Ú“Û.',
'allmessagesnotsupportedDB' => "'''Special:Allmessages''' ترÛنه کار نه اخيستل Ú©ÛÚ–ÙŠ ÚÚ©Ù‡ Ú†Û '''\$wgUseDatabaseMessages''' Ù…Ú“ دی.",
'allmessages-filter-legend' => 'چاڼګر',
'allmessages-filter-unmodified' => 'نابدلÛدلي',
@@ -1995,12 +2004,18 @@ $UNWATCHURL نه ليدنه ÙˆÚ©Ú“Û
'others' => 'نور',
'siteusers' => 'د {{SITENAME}} {{PLURAL:$2|کارن|کارنان}} $1',
'anonusers' => 'د {{SITENAME}} {{PLURAL:$2|ورکنومی کارن|ورکنومي کارنان}} $1',
+'creditspage' => 'د Ø¯Û Ù…Ø® کرÛډټونه',
# Info page
-'infosubtitle' => 'د مخ مالومات',
-'numedits' => 'د سمونونو شمÛر (مخ): $1',
-'numtalkedits' => 'د سمونونو شمÛر (د خبرو اترو مخ): $1',
-'numwatchers' => 'د کتونکو شمÛر: $1',
+'pageinfo-title' => 'د "$1" مالومات',
+'pageinfo-header-edits' => 'سمونونه',
+'pageinfo-header-watchlist' => 'کتنلړ',
+'pageinfo-header-views' => 'کتنÛ',
+'pageinfo-subjectpage' => 'مخ',
+'pageinfo-talkpage' => 'د خبرواترو مخ',
+'pageinfo-watchers' => 'د کتونکو شمÛر',
+'pageinfo-edits' => 'د سمونونو شمÛر',
+'pageinfo-views' => 'د کتنو شمÛر',
# Skin names
'skinname-standard' => 'کلاسيک',
@@ -2012,10 +2027,6 @@ $UNWATCHURL نه ليدنه ÙˆÚ©Ú“Û
'skinname-simple' => 'ساده',
'skinname-modern' => 'نوی',
-# Math errors
-'math_unknown_error' => 'ناجوته ستونزه',
-'math_unknown_function' => 'ناجوته کړنه',
-
# Patrolling
'markaspatrolledtext' => 'دا مخ څارل شوی په نخښه کول',
@@ -2037,7 +2048,6 @@ $UNWATCHURL نه ليدنه ÙˆÚ©Ú“Û
'file-nohires' => '<small>تر Ø¯Û Ú©Ú†Û Ù„ÙˆÚ“Û Ø¨Ûلن Ù†ÚšÛ Ù†Ø´ØªÙ‡.</small>',
'svg-long-desc' => 'SVG دوتنه، نومÛنلي $1 × $2 Ù¾Ûکسل، د Ø¯ÙˆØªÙ†Û Ú©Ú†Ù‡: $3',
'show-big-image' => 'بشپړ بÛلن Ù†ÚšÛ',
-'show-big-image-thumb' => '<small>د Ø¯Û Ù…Ø®Ù„ÙŠØ¯Ù†Û Ú©Ú†Ù‡: $1 × $2 pixels</small>',
'file-info-gif-frames' => '$1 {{PLURAL:$1|چوکاټ|چوکاټونه}}',
'file-info-png-frames' => '$1 {{PLURAL:$1|چوکاټ|چوکاټونه}}',
@@ -2069,14 +2079,21 @@ $UNWATCHURL نه ليدنه ÙˆÚ©Ú“Û
Ú©Ù‡ همدا دوتنه د خپل آرني Ø¯Ø±ÙŠÚ Ú…Ø®Ù‡ بدله Ø´ÙˆÛ ÙˆÙŠ نو ÚÙŠÙ†Û ØªÙصيلونه به په بدل شوي دوتنه Ú©Û Ù¾Ù‡ بشپړه توګه نه وي.',
'metadata-expand' => 'غÚÛدلی تÙصيل ښکاره Ú©Ú“ÛŒ',
'metadata-collapse' => 'غÚÛدلی تÙصيل پټ Ú©Ú“ÛŒ',
-'metadata-fields' => 'د EXIF ميټاډاټا ډګرونه Ú†Û Ù„Ú“Ù„ÙŠÚ© ÙŠÛ Ù¾Ù‡ Ù‡Ù…Ø¯Û Ù¾ÙŠØºØ§Ù… Ú©Û Ù¾Ù‡ Ù„Ø§Ù†Ø¯Û ØªÙˆÚ«Ù‡ راغلی د انÚوريز مخ په ښکارÛدنه Ú©Û Ø¨Ù‡ هغه وخت ورګډ شي کله Ú†Û Ø¯ Ù…Ûټاډاټا چوکاټ پرانيستل Ú©ÛÚ–ÙŠ.
+'metadata-fields' => 'د انÚور Ù…Ûټاډاټا ډګرونه Ú†Û Ù„Ú“Ù„ÙŠÚ© ÙŠÛ Ù¾Ù‡ Ù‡Ù…Ø¯Û Ù¾ÙŠØºØ§Ù… Ú©Û Ù¾Ù‡ Ù„Ø§Ù†Ø¯Û ØªÙˆÚ«Ù‡ راغلی د انÚور مخ په ښکارÛدنه Ú©Û Ø¨Ù‡ هغه وخت ورګډ شي کله Ú†Û Ø¯ Ù…Ûټاډاټا لښتيال غÚÛÚ–ÙŠ.
+نور Ú…Ù‡ به په تلواليزه توګه پټ Ù¾Ø§ØªÛ ÙˆÙŠ.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'سوروالی',
@@ -2101,7 +2118,25 @@ $UNWATCHURL نه ليدنه ÙˆÚ©Ú“Û
'exif-gpsimgdirection' => 'د انÚور لوری',
'exif-gpsareainformation' => 'د جي پي اس د Ø³ÙŠÙ…Û Ù†ÙˆÙ…',
'exif-gpsdatestamp' => 'د جي پي اس Ù†Ûټه',
+'exif-jpegfilecomment' => 'د JPEG Ø¯ÙˆØªÙ†Û ØªØ¨ØµØ±Û',
+'exif-worldregiondest' => 'د Ù†Ú“Û ÚšÚ©Ø§Ø±Ù‡ Ø´ÙˆÛ Ø³ÙŠÙ…Ù‡',
+'exif-countrydest' => 'ښکاره شوی Ù‡Ûواد',
+'exif-citydest' => 'ښکاره شوی ښار',
'exif-objectname' => 'لنډ سرليک',
+'exif-headline' => 'سرليک',
+'exif-source' => 'سرچينه',
+'exif-contact' => 'د Ø§Ú“ÙŠÚ©Û Ù…Ø§Ù„ÙˆÙ…Ø§Øª',
+'exif-writer' => 'ليکوال',
+'exif-languagecode' => 'ژبه',
+'exif-iimcategory' => 'ÙˆÛشنيزه',
+'exif-identifier' => 'Ù¾Ûژندنه',
+'exif-lens' => 'کارÛØ¯Ù„Û Ù„Ûنز',
+'exif-serialnumber' => 'د Ú©Ø§Ù…Ø±Û Ù¾Ø±Ù„Ù‡ Ù¾Ø³Û Ø´Ù…Ûره',
+'exif-cameraownername' => 'د Ú©Ø§Ù…Ø±Û Ø®Ø§ÙˆÙ†Ø¯',
+'exif-label' => 'Ù†ÚšÚ©Ù‡',
+'exif-pngfilecomment' => 'د PNG Ø¯ÙˆØªÙ†Û ØªØ¨ØµØ±Ù‡',
+'exif-disclaimer' => 'ردادعاليک',
+'exif-giffilecomment' => 'د GIF Ø¯ÙˆØªÙ†Û ØªØ¨ØµØ±Ù‡',
'exif-unknowndate' => 'نامالومه Ù†Ûټه',
@@ -2156,21 +2191,56 @@ $UNWATCHURL نه ليدنه ÙˆÚ©Ú“Û
'exif-gpsspeed-m' => 'مايل په ساعت Ú©Û',
'exif-gpsspeed-n' => 'غوټÛ',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'کيلومتر',
+'exif-gpsdestdistance-m' => 'مايلونه',
+'exif-gpsdestdistance-n' => 'سمندري مايلونه',
+
+'exif-objectcycle-a' => 'ÙŠÙˆØ§Ø²Û Ú«Ù‡ÙŠÚ',
+'exif-objectcycle-p' => 'ÙŠÙˆØ§Ø²Û Ù…Ø§ÚšØ§Ù…',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'سم لوری',
'exif-gpsdirection-m' => 'مقناطيسي لوری',
+'exif-dc-contributor' => 'ونډه وال',
+'exif-dc-date' => 'Ù†Ûټه (Ù†ÛÙ¼Û)',
+'exif-dc-publisher' => 'خپرونکی',
+'exif-dc-relation' => 'اړونده رسنÛ',
+'exif-dc-rights' => 'رښتÛ',
+'exif-dc-source' => 'د Ø³Ø±Ú†ÙŠÙ†Û Ø±Ø³Ù†Û',
+'exif-dc-type' => 'د Ø±Ø³Ù†Û Ú‰ÙˆÙ„',
+
+'exif-rating-rejected' => 'رد شوی',
+
+'exif-iimcategory-clj' => 'جنايت او قانون',
+'exif-iimcategory-dis' => 'ØºÙ…ÙŠØ²Û Ø§Ùˆ Ù¾ÛÚšÛ',
+'exif-iimcategory-fin' => 'وټپوهنه او سوداګري',
+'exif-iimcategory-edu' => 'زده Ú©Ú“Û',
+'exif-iimcategory-evn' => 'چاپÛريال',
+'exif-iimcategory-hth' => 'روغتيا',
+'exif-iimcategory-lif' => 'ژوندتوګه او Ùارغ وختونه',
+'exif-iimcategory-pol' => 'سياست',
+'exif-iimcategory-rel' => 'دين او ګروهه',
+'exif-iimcategory-sci' => 'ساينس او تخنيک',
+'exif-iimcategory-soi' => 'Ù¼ÙˆÙ„Ù†ÙŠØ²Û Ú†Ø§Ø±Û',
+'exif-iimcategory-spo' => 'سپورت',
+'exif-iimcategory-war' => 'جګړه، تاوتريخوالی، او نارامي',
+'exif-iimcategory-wea' => 'هوا',
+
+'exif-urgency-normal' => 'نورمال ($1)',
+'exif-urgency-low' => 'Ù„Ú– ($1)',
+'exif-urgency-high' => 'Ú‰Ûر ($1)',
+
# External editor support
'edit-externally' => 'د باندنيو پروګرامونو په کارولو سره دا دوتنه سمول',
-'edit-externally-help' => 'د نورو مالوماتو لپاره [http://www.mediawiki.org/wiki/Manual:External_editors د امستنو لارښوونÛ] وګورÛ.',
+'edit-externally-help' => 'د نورو مالوماتو لپاره [//www.mediawiki.org/wiki/Manual:External_editors د امستنو لارښوونÛ] وګورÛ.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ټول',
-'imagelistall' => 'ټول',
-'watchlistall2' => 'ټول',
-'namespacesall' => 'ټول',
-'monthsall' => 'ټول',
-'limitall' => 'ټول',
+'watchlistall2' => 'ټول',
+'namespacesall' => 'ټول',
+'monthsall' => 'ټول',
+'limitall' => 'ټول',
# E-mail address confirmation
'confirmemail' => 'د برÛښليک Ù¾ØªÛ Ù¾Ø®Ù„ÛŒ ÙˆÚ©Ú“ÛŒ',
@@ -2209,6 +2279,10 @@ $5
'confirm_purge_button' => 'ÚšÙ‡',
'confirm-purge-top' => 'په رښتيا د Ù‡Ù…Ø¯Û Ù…Ø® حاÙظه سپينول غواړÛØŸ',
+# action=watch/unwatch
+'confirm-watch-button' => 'ÚšÙ‡',
+'confirm-unwatch-button' => 'ÚšÙ‡',
+
# Multipage image navigation
'imgmultipageprev' => '↠پخوانی مخ',
'imgmultipagenext' => 'راتلونکی مخ →',
@@ -2278,13 +2352,13 @@ $5
'version-other' => 'بل',
'version-version' => '(بڼه $1)',
'version-license' => 'منښتليک',
-'version-poweredby-credits' => "دا ويکي د '''[http://www.mediawiki.org/ Ù…Ûډياويکي]''' په سÛÚ© Ú†Ù„ÛÚ–ÙŠØŒ Ù¼ÙˆÙ„Û Ø±ÚšØªÛ Ø®ÙˆÙ†Ø¯ÙŠ دي © 2001-$1 $2.",
+'version-poweredby-credits' => "دا ويکي د '''[//www.mediawiki.org/ Ù…Ûډياويکي]''' په سÛÚ© Ú†Ù„ÛÚ–ÙŠØŒ Ù¼ÙˆÙ„Û Ø±ÚšØªÛ Ø®ÙˆÙ†Ø¯ÙŠ دي © 2001-$1 $2.",
'version-poweredby-others' => 'نور',
'version-license-info' => 'Ù…Ûډياويکي يو وړيا ساوتری دی؛ ØªØ§Ø³Û ÙŠÛ Ù¾Ù‡ ډاډه زړه د GNU د ټولګړو کارÛدنو د منښتليک Ú†Û Ø¯ وړيا ساوتريو د بنسټ له Ù…Ø®Û Ø®Ù¾ÙˆØ± شوی، خپرولی او/يا بدلولی شی؛ د منښتليک Û² بڼه او يا (Ø³ØªØ§Ø³Û Ø¯ خوښÛ) هر يوه ÙˆØ±ÙˆØ³ØªÛ Ø¨Ú¼Ù‡.
Ù…Ûډياويکي د ÚšÙ‡ کارÛØ¯Ù†Û Ù¾Ù‡ نيت خپور شوی، خو د ضمني سوداګريز او يا د کوم Úانګړي کار د ضمانت نه پرته. د نورو مالوماتو لپاره د GNU د ټولګړو کارÛدنو منښتليک وګورÛ.
-ØªØ§Ø³Û Ø¨Ø§ÙŠØ¯ د Ø¯Û Ù¾Ø±ÙˆÚ«Ø±Ø§Ù… سره يو [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU General Public License] ترلاسه Ú©Ú“ÛŒ وي؛ Ú©Ù‡ Ø¯Ø§Ø³Û Ù†Ù‡ وي، نو د وړيا ساوتريو بنسټ، Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ته يو ليک وليکÛØŒ او يا ÙŠÛ [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html پرليکه ولولÛ].',
+ØªØ§Ø³Û Ø¨Ø§ÙŠØ¯ د Ø¯Û Ù¾Ø±ÙˆÚ«Ø±Ø§Ù… سره يو [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU General Public License] ترلاسه Ú©Ú“ÛŒ وي؛ Ú©Ù‡ Ø¯Ø§Ø³Û Ù†Ù‡ وي، نو د وړيا ساوتريو بنسټ، Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ته يو ليک وليکÛØŒ او يا ÙŠÛ [//www.gnu.org/licenses/old-licenses/gpl-2.0.html پرليکه ولولÛ].',
'version-software' => 'نصب شوی ساوتری',
'version-software-product' => 'اÛبره',
'version-software-version' => 'بڼه',
@@ -2294,18 +2368,20 @@ $5
'filepath-submit' => 'ورÚÙ‡',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'د دوه ګونو دوتنو پلټنه',
-'fileduplicatesearch-legend' => 'د دوه ګونو دوتنو پلټنه',
-'fileduplicatesearch-filename' => 'د Ø¯ÙˆØªÙ†Û Ù†ÙˆÙ…:',
-'fileduplicatesearch-submit' => 'پلټل',
-'fileduplicatesearch-info' => '<span dir="ltr">$1 × $2</span> Ù¾Ûکسل<br />د Ø¯ÙˆØªÙ†Û Ú©Ú†Ù‡: $3<br />ډول MIME: $4',
-'fileduplicatesearch-result-1' => '"$1" بله Ú©Ù¼ مټ ورته ØºØ¨Ø±Ú«ÙˆÙ†Û Ø¯ÙˆØªÙ†Ù‡ نلري.',
+'fileduplicatesearch' => 'د دوه ګونو دوتنو پلټنه',
+'fileduplicatesearch-legend' => 'د دوه ګونو دوتنو پلټنه',
+'fileduplicatesearch-filename' => 'د Ø¯ÙˆØªÙ†Û Ù†ÙˆÙ…:',
+'fileduplicatesearch-submit' => 'پلټل',
+'fileduplicatesearch-info' => '<span dir="ltr">$1 × $2</span> Ù¾Ûکسل<br />د Ø¯ÙˆØªÙ†Û Ú©Ú†Ù‡: $3<br />ډول MIME: $4',
+'fileduplicatesearch-result-1' => '"$1" بله Ú©Ù¼ مټ ورته ØºØ¨Ø±Ú«ÙˆÙ†Û Ø¯ÙˆØªÙ†Ù‡ نلري.',
+'fileduplicatesearch-noresults' => 'د "$1" په نوم دوتنه و نه موندل شوه.',
# Special:SpecialPages
'specialpages' => 'Úانګړي مخونه',
'specialpages-note' => '----
* نورماله Úانګړي مخونه.
-* <strong class="mw-specialpagerestricted">محدوده Úانګړي مخونه.</strong>',
+* <strong class="mw-specialpagerestricted">محدوده Úانګړي مخونه.</strong>
+* <span class="mw-specialpagecached">رانيولي Úانګړي مخونه (Ú©Ûدای شي منسوخ شوی وي).</span>',
'specialpages-group-other' => 'نور Úانګړي مخونه',
'specialpages-group-login' => 'ننوتل / ګڼون جوړول',
'specialpages-group-changes' => 'وروستي بدلونونه او يادښتونه',
diff --git a/languages/messages/MessagesPt.php b/languages/messages/MessagesPt.php
index 20b7f4af..7bf28287 100644
--- a/languages/messages/MessagesPt.php
+++ b/languages/messages/MessagesPt.php
@@ -7,13 +7,14 @@
* @ingroup Language
* @file
*
+ * @author Alchimista
* @author Capmo
* @author Crazymadlover
* @author Daemorris
* @author Giro720
+ * @author GoEThe
* @author Hamilton Abreu
* @author Helder.wiki
- * @author Heldergeovane
* @author Indech
* @author Jens Liebenau
* @author Jorge Morais
@@ -30,6 +31,7 @@
* @author Minh Nguyen
* @author Nuno Tavares
* @author Paulo Juntas
+ * @author Pedroca cerebral
* @author Rafael Vargas
* @author Rei-artur
* @author Remember the dot
@@ -73,6 +75,11 @@ $namespaceAliases = array(
'Arquivo_Discussão' => NS_FILE_TALK,
);
+$namespaceGenderAliases = array(
+ NS_USER => array( 'male' => 'Utilizador', 'female' => 'Utilizadora' ),
+ NS_USER_TALK => array( 'male' => 'Utilizador_Discussão', 'female' => 'Utilizadora_Discussão' ),
+);
+
$defaultDateFormat = 'dmy';
$dateFormats = array(
@@ -85,95 +92,95 @@ $separatorTransformTable = array( ',' => ' ', '.' => ',' );
$linkTrail = '/^([áâãàéêẽçíòóôõq̃úüűũa-z]+)(.*)$/sDu'; # Bug 21168, 27633
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Redireccionamentos_duplos', 'Redirecionamentos_duplos' ),
+ 'Activeusers' => array( 'Utilizadores_activos' ),
+ 'Allmessages' => array( 'Todas_as_mensagens', 'Todas_mensagens' ),
+ 'Allpages' => array( 'Todas_as_páginas', 'Todos_os_artigos', 'Todas_páginas', 'Todos_artigos' ),
+ 'Ancientpages' => array( 'Páginas_inactivas', 'Páginas_inativas', 'Artigos_inativos' ),
+ 'Blankpage' => array( 'Página_em_branco' ),
+ 'Block' => array( 'Bloquear', 'Bloquear_IP', 'Bloquear_utilizador', 'Bloquear_usuário' ),
+ 'Blockme' => array( 'Bloquear-me', 'Auto-bloqueio' ),
+ 'Booksources' => array( 'Fontes_de_livros' ),
'BrokenRedirects' => array( 'Redireccionamentos_quebrados', 'Redirecionamentos_quebrados' ),
- 'Disambiguations' => array( 'Desambiguações', 'Páginas_de_desambiguação', 'Desambiguar' ),
- 'Userlogin' => array( 'Entrar', 'Login' ),
- 'Userlogout' => array( 'Sair', 'Logout' ),
+ 'Categories' => array( 'Categorias' ),
+ 'ChangePassword' => array( 'Reiniciar_palavra-chave', 'Repor_senha', 'Zerar_senha' ),
+ 'Confirmemail' => array( 'Confirmar_correio_electrónico', 'Confirmar_e-mail', 'Confirmar_email' ),
+ 'Contributions' => array( 'Contribuições' ),
'CreateAccount' => array( 'Criar_conta' ),
- 'Preferences' => array( 'Preferências' ),
- 'Watchlist' => array( 'Páginas_vigiadas', 'Artigos_vigiados', 'Vigiados' ),
- 'Recentchanges' => array( 'Mudanças_recentes' ),
- 'Upload' => array( 'Carregar_imagem', 'Carregar_ficheiro', 'Carregar_arquivo', 'Enviar' ),
+ 'Deadendpages' => array( 'Páginas_sem_saída', 'Artigos_sem_saída' ),
+ 'DeletedContributions' => array( 'Contribuições_eliminadas', 'Edições_eliminadas' ),
+ 'Disambiguations' => array( 'Desambiguações', 'Páginas_de_desambiguação', 'Desambiguar' ),
+ 'DoubleRedirects' => array( 'Redireccionamentos_duplos', 'Redirecionamentos_duplos' ),
+ 'Emailuser' => array( 'Contactar_utilizador', 'Contactar_usuário', 'Contatar_usuário' ),
+ 'Export' => array( 'Exportar' ),
+ 'Fewestrevisions' => array( 'Páginas_com_menos_edições', 'Artigos_com_menos_edições', 'Artigos_menos_editados' ),
+ 'FileDuplicateSearch' => array( 'Busca_de_ficheiros_duplicados', 'Busca_de_arquivos_duplicados' ),
+ 'Filepath' => array( 'Directório_de_ficheiro', 'Diretório_de_ficheiro', 'Diretório_de_arquivo' ),
+ 'Import' => array( 'Importar' ),
+ 'Invalidateemail' => array( 'Invalidar_correio_electrónico', 'Invalidar_e-mail' ),
+ 'BlockList' => array( 'Registo_de_bloqueios', 'IPs_bloqueados', 'Utilizadores_bloqueados', 'Registro_de_bloqueios', 'Usuários_bloqueados' ),
+ 'LinkSearch' => array( 'Pesquisar_links' ),
+ 'Listadmins' => array( 'Administradores', 'Admins', 'Lista_de_administradores', 'Lista_de_admins' ),
+ 'Listbots' => array( 'Robôs', 'Lista_de_robôs', 'Bots', 'Lista_de_bots' ),
'Listfiles' => array( 'Lista_de_ficheiros', 'Lista_de_imagens', 'Lista_de_arquivos' ),
- 'Newimages' => array( 'Ficheiros_novos', 'Imagens_novas', 'Arquivos_novos' ),
- 'Listusers' => array( 'Lista_de_utilizadores', 'Lista_de_usuários' ),
'Listgrouprights' => array( 'Lista_de_privilégios_de_grupos', 'Listar_privilégios_de_grupos' ),
- 'Statistics' => array( 'Estatísticas' ),
- 'Randompage' => array( 'Aleatória', 'Aleatório', 'Página_aleatória', 'Artigo_aleatório' ),
+ 'Listredirects' => array( 'Redireccionamentos', 'Redirecionamentos', 'Lista_de_redireccionamentos', 'Lista_de_redirecionamentos' ),
+ 'Listusers' => array( 'Lista_de_utilizadores', 'Lista_de_usuários' ),
+ 'Lockdb' => array( 'Bloquear_base_de_dados', 'Bloquear_a_base_de_dados', 'Bloquear_banco_de_dados' ),
+ 'Log' => array( 'Registo', 'Registos', 'Registro', 'Registros' ),
'Lonelypages' => array( 'Páginas_órfãs', 'Páginas_sem_afluentes', 'Artigos_órfãos', 'Artigos_sem_afluentes' ),
- 'Uncategorizedpages' => array( 'Páginas_não_categorizadas', 'Páginas_sem_categorias', 'Artigos_sem_categorias' ),
- 'Uncategorizedcategories' => array( 'Categorias_não_categorizadas', 'Categorias_sem_categorias' ),
- 'Uncategorizedimages' => array( 'Ficheiros_não_categorizados', 'Imagens_não_categorizadas', 'Imagens_sem_categorias', 'Ficheiros_sem_categorias', 'Arquivos_sem_categorias' ),
- 'Uncategorizedtemplates' => array( 'Predefinições_não_categorizadas', 'Predefinições_sem_categorias' ),
- 'Unusedcategories' => array( 'Categorias_não_utilizadas', 'Categorias_sem_uso' ),
- 'Unusedimages' => array( 'Ficheiros_não_utilizados', 'Imagens_não_utilizadas' ),
- 'Wantedpages' => array( 'Páginas_pedidas', 'Páginas_em_falta', 'Artigos_em_falta', 'Artigos_pedidos' ),
- 'Wantedcategories' => array( 'Categorias_pedidas', 'Categorias_em_falta', 'Categorias_inexistentes' ),
- 'Wantedfiles' => array( 'Ficheiros_pedidos', 'Imagens_pedidas', 'Ficheiros_em_falta', 'Arquivos_em_falta', 'Imagens_em_falta' ),
- 'Wantedtemplates' => array( 'Predefinições_pedidas', 'Predefinições_em_falta' ),
+ 'Longpages' => array( 'Páginas_longas', 'Artigos_extensos' ),
+ 'MergeHistory' => array( 'Fundir_históricos', 'Fundir_edições' ),
+ 'MIMEsearch' => array( 'Busca_MIME' ),
+ 'Mostcategories' => array( 'Páginas_com_mais_categorias', 'Artigos_com_mais_categorias' ),
+ 'Mostimages' => array( 'Ficheiros_com_mais_afluentes', 'Imagens_com_mais_afluentes', 'Arquivos_com_mais_afluentes' ),
'Mostlinked' => array( 'Páginas_com_mais_afluentes', 'Artigos_com_mais_afluentes' ),
'Mostlinkedcategories' => array( 'Categorias_com_mais_afluentes', 'Categorias_mais_usadas' ),
'Mostlinkedtemplates' => array( 'Predefinições_com_mais_afluentes', 'Predefinições_mais_usadas' ),
- 'Mostimages' => array( 'Ficheiros_com_mais_afluentes', 'Imagens_com_mais_afluentes', 'Arquivos_com_mais_afluentes' ),
- 'Mostcategories' => array( 'Páginas_com_mais_categorias', 'Artigos_com_mais_categorias' ),
'Mostrevisions' => array( 'Páginas_com_mais_edições', 'Artigos_com_mais_edições' ),
- 'Fewestrevisions' => array( 'Páginas_com_menos_edições', 'Artigos_com_menos_edições', 'Artigos_menos_editados' ),
- 'Shortpages' => array( 'Páginas_curtas', 'Artigos_curtos' ),
- 'Longpages' => array( 'Páginas_longas', 'Artigos_extensos' ),
+ 'Movepage' => array( 'Mover_página', 'Mover', 'Mover_artigo' ),
+ 'Mycontributions' => array( 'Minhas_contribuições', 'Minhas_edições', 'Minhas_constribuições' ),
+ 'Mypage' => array( 'Minha_página' ),
+ 'Mytalk' => array( 'Minha_discussão' ),
+ 'Newimages' => array( 'Ficheiros_novos', 'Imagens_novas', 'Arquivos_novos' ),
'Newpages' => array( 'Páginas_novas', 'Artigos_novos' ),
- 'Ancientpages' => array( 'Páginas_inactivas', 'Páginas_inativas', 'Artigos_inativos' ),
- 'Deadendpages' => array( 'Páginas_sem_saída', 'Artigos_sem_saída' ),
+ 'Popularpages' => array( 'Páginas_populares', 'Artigos_populares' ),
+ 'Preferences' => array( 'Preferências' ),
+ 'Prefixindex' => array( 'Ãndice_por_prefixo', 'Ãndice_de_prefixo' ),
'Protectedpages' => array( 'Páginas_protegidas', 'Artigos_protegidos' ),
'Protectedtitles' => array( 'Títulos_protegidos' ),
- 'Allpages' => array( 'Todas_as_páginas', 'Todos_os_artigos', 'Todas_páginas', 'Todos_artigos' ),
- 'Prefixindex' => array( 'Ãndice_por_prefixo', 'Ãndice_de_prefixo' ),
- 'Ipblocklist' => array( 'Registo_de_bloqueios', 'IPs_bloqueados', 'Utilizadores_bloqueados', 'Registro_de_bloqueios', 'Usuários_bloqueados' ),
- 'Unblock' => array( 'Desbloquear' ),
- 'Specialpages' => array( 'Páginas_especiais' ),
- 'Contributions' => array( 'Contribuições' ),
- 'Emailuser' => array( 'Contactar_utilizador', 'Contactar_usuário', 'Contatar_usuário' ),
- 'Confirmemail' => array( 'Confirmar_correio_electrónico', 'Confirmar_e-mail', 'Confirmar_email' ),
- 'Whatlinkshere' => array( 'Páginas_afluentes', 'Artigos_afluentes' ),
+ 'Randompage' => array( 'Aleatória', 'Aleatório', 'Página_aleatória', 'Artigo_aleatório' ),
+ 'Randomredirect' => array( 'Redireccionamento_aleatório', 'Redirecionamento_aleatório' ),
+ 'Recentchanges' => array( 'Mudanças_recentes' ),
'Recentchangeslinked' => array( 'Alterações_relacionadas', 'Novidades_relacionadas', 'Mudanças_relacionadas' ),
- 'Movepage' => array( 'Mover_página', 'Mover', 'Mover_artigo' ),
- 'Blockme' => array( 'Bloquear-me', 'Auto-bloqueio' ),
- 'Booksources' => array( 'Fontes_de_livros' ),
- 'Categories' => array( 'Categorias' ),
- 'Export' => array( 'Exportar' ),
- 'Version' => array( 'Versão', 'Sobre' ),
- 'Allmessages' => array( 'Todas_as_mensagens', 'Todas_mensagens' ),
- 'Log' => array( 'Registo', 'Registos', 'Registro', 'Registros' ),
- 'Blockip' => array( 'Bloquear', 'Bloquear_IP', 'Bloquear_utilizador', 'Bloquear_usuário' ),
+ 'Revisiondelete' => array( 'Eliminar_edição', 'Eliminar_revisão', 'Apagar_edição', 'Apagar_revisão' ),
+ 'Search' => array( 'Pesquisar', 'Busca', 'Buscar', 'Procurar', 'Pesquisa' ),
+ 'Shortpages' => array( 'Páginas_curtas', 'Artigos_curtos' ),
+ 'Specialpages' => array( 'Páginas_especiais' ),
+ 'Statistics' => array( 'Estatísticas' ),
+ 'Tags' => array( 'Etiquetas' ),
+ 'Unblock' => array( 'Desbloquear' ),
+ 'Uncategorizedcategories' => array( 'Categorias_não_categorizadas', 'Categorias_sem_categorias' ),
+ 'Uncategorizedimages' => array( 'Ficheiros_não_categorizados', 'Imagens_não_categorizadas', 'Imagens_sem_categorias', 'Ficheiros_sem_categorias', 'Arquivos_sem_categorias' ),
+ 'Uncategorizedpages' => array( 'Páginas_não_categorizadas', 'Páginas_sem_categorias', 'Artigos_sem_categorias' ),
+ 'Uncategorizedtemplates' => array( 'Predefinições_não_categorizadas', 'Predefinições_sem_categorias' ),
'Undelete' => array( 'Restaurar', 'Restaurar_páginas_eliminadas', 'Restaurar_artigos_eliminados' ),
- 'Import' => array( 'Importar' ),
- 'Lockdb' => array( 'Bloquear_base_de_dados', 'Bloquear_a_base_de_dados', 'Bloquear_banco_de_dados' ),
'Unlockdb' => array( 'Desbloquear_base_de_dados', 'Desbloquear_a_base_de_dados', 'Desbloquear_banco_de_dados' ),
- 'Userrights' => array( 'Privilégios', 'Direitos', 'Estatutos' ),
- 'MIMEsearch' => array( 'Busca_MIME' ),
- 'FileDuplicateSearch' => array( 'Busca_de_ficheiros_duplicados', 'Busca_de_arquivos_duplicados' ),
- 'Unwatchedpages' => array( 'Páginas_não_vigiadas', 'Páginas_não-vigiadas', 'Artigos_não-vigiados', 'Artigos_não_vigiados' ),
- 'Listredirects' => array( 'Redireccionamentos', 'Redirecionamentos', 'Lista_de_redireccionamentos', 'Lista_de_redirecionamentos' ),
- 'Revisiondelete' => array( 'Eliminar_edição', 'Eliminar_revisão', 'Apagar_edição', 'Apagar_revisão' ),
+ 'Unusedcategories' => array( 'Categorias_não_utilizadas', 'Categorias_sem_uso' ),
+ 'Unusedimages' => array( 'Ficheiros_não_utilizados', 'Imagens_não_utilizadas' ),
'Unusedtemplates' => array( 'Predefinições_não_utilizadas', 'Predefinições_sem_uso' ),
- 'Randomredirect' => array( 'Redireccionamento_aleatório', 'Redirecionamento_aleatório' ),
- 'Mypage' => array( 'Minha_página' ),
- 'Mytalk' => array( 'Minha_discussão' ),
- 'Mycontributions' => array( 'Minhas_contribuições', 'Minhas_edições', 'Minhas_constribuições' ),
- 'Listadmins' => array( 'Administradores', 'Admins', 'Lista_de_administradores', 'Lista_de_admins' ),
- 'Listbots' => array( 'Robôs', 'Lista_de_robôs', 'Bots', 'Lista_de_bots' ),
- 'Popularpages' => array( 'Páginas_populares', 'Artigos_populares' ),
- 'Search' => array( 'Pesquisar', 'Busca', 'Buscar', 'Procurar', 'Pesquisa' ),
- 'Resetpass' => array( 'Reiniciar_palavra-chave', 'Repor_senha', 'Zerar_senha' ),
+ 'Unwatchedpages' => array( 'Páginas_não_vigiadas', 'Páginas_não-vigiadas', 'Artigos_não-vigiados', 'Artigos_não_vigiados' ),
+ 'Upload' => array( 'Carregar_imagem', 'Carregar_ficheiro', 'Carregar_arquivo', 'Enviar' ),
+ 'Userlogin' => array( 'Entrar', 'Login' ),
+ 'Userlogout' => array( 'Sair', 'Logout' ),
+ 'Userrights' => array( 'Privilégios', 'Direitos', 'Estatutos' ),
+ 'Version' => array( 'Versão', 'Sobre' ),
+ 'Wantedcategories' => array( 'Categorias_pedidas', 'Categorias_em_falta', 'Categorias_inexistentes' ),
+ 'Wantedfiles' => array( 'Ficheiros_pedidos', 'Imagens_pedidas', 'Ficheiros_em_falta', 'Arquivos_em_falta', 'Imagens_em_falta' ),
+ 'Wantedpages' => array( 'Páginas_pedidas', 'Páginas_em_falta', 'Artigos_em_falta', 'Artigos_pedidos' ),
+ 'Wantedtemplates' => array( 'Predefinições_pedidas', 'Predefinições_em_falta' ),
+ 'Watchlist' => array( 'Páginas_vigiadas', 'Artigos_vigiados', 'Vigiados' ),
+ 'Whatlinkshere' => array( 'Páginas_afluentes', 'Artigos_afluentes' ),
'Withoutinterwiki' => array( 'Páginas_sem_interwikis', 'Artigos_sem_interwikis' ),
- 'MergeHistory' => array( 'Fundir_históricos', 'Fundir_edições' ),
- 'Filepath' => array( 'Directório_de_ficheiro', 'Diretório_de_ficheiro', 'Diretório_de_arquivo' ),
- 'Invalidateemail' => array( 'Invalidar_correio_electrónico', 'Invalidar_e-mail' ),
- 'Blankpage' => array( 'Página_em_branco' ),
- 'LinkSearch' => array( 'Pesquisar_links' ),
- 'DeletedContributions' => array( 'Contribuições_eliminadas', 'Edições_eliminadas' ),
- 'Tags' => array( 'Etiquetas' ),
- 'Activeusers' => array( 'Utilizadores_activos' ),
);
$magicWords = array(
@@ -322,8 +329,8 @@ $messages = array(
'tog-shownumberswatching' => 'Mostrar o número de utilizadores a vigiar',
'tog-oldsig' => 'Assinatura existente:',
'tog-fancysig' => 'Tratar assinatura como texto wiki (sem link automático)',
-'tog-externaleditor' => 'Por omissão, utilizar um editor externo (só para utilizadores avançados, exige configurações adicionais no seu computador. [http://www.mediawiki.org/wiki/Manual:External_editors Mais informações.])',
-'tog-externaldiff' => 'Por omissão, utilizar diferenças externas (só para utilizadores avançados, exige configurações adicionais no seu computador. [http://www.mediawiki.org/wiki/Manual:External_editors Mais informações.])',
+'tog-externaleditor' => 'Por omissão, utilizar um editor externo (só para utilizadores avançados, exige configurações adicionais no seu computador. [//www.mediawiki.org/wiki/Manual:External_editors Mais informações.])',
+'tog-externaldiff' => 'Por omissão, utilizar diferenças externas (só para utilizadores avançados, exige configurações adicionais no seu computador. [//www.mediawiki.org/wiki/Manual:External_editors Mais informações.])',
'tog-showjumplinks' => 'Possibilitar links de acessibilidade "{{int:jumpto}}"',
'tog-uselivepreview' => 'Usar a antevisão ao vivo (requer JavaScript; é experimental)',
'tog-forceeditsummary' => 'Avisar-me se deixar o resumo da edição vazio',
@@ -420,15 +427,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Páginas indexadas',
'noindex-category' => 'Páginas não indexadas',
-
-'mainpagetext' => "'''MediaWiki instalado com sucesso.'''",
-'mainpagedocfooter' => 'Consulte o [http://meta.wikimedia.org/wiki/Help:Contents Guia de Utilizadores] para informações sobre o uso do software wiki.
-
-== Onde começar ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista de opções de configuração]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Perguntas e respostas frequentes sobre o MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Subscreva a lista de divulgação de novas versões do MediaWiki]',
+'broken-file-category' => 'Páginas com links quebrados para ficheiros',
'about' => 'Sobre',
'article' => 'Página de conteúdo',
@@ -480,10 +479,10 @@ $messages = array(
'history' => 'Histórico',
'history_short' => 'Histórico',
'updatedmarker' => 'actualizado desde a minha última visita',
-'info_short' => 'Informação',
'printableversion' => 'Versão para impressão',
'permalink' => 'Link permanente',
'print' => 'Imprimir',
+'view' => 'Ver',
'edit' => 'Editar',
'create' => 'Criar',
'editthispage' => 'Editar esta página',
@@ -491,6 +490,7 @@ $messages = array(
'delete' => 'Eliminar',
'deletethispage' => 'Eliminar esta página',
'undelete_short' => 'Restaurar {{PLURAL:$1|uma edição|$1 edições}}',
+'viewdeleted_short' => 'Ver {{PLURAL:$1|uma edição eliminada|$1 edições eliminadas}}',
'protect' => 'Proteger',
'protect_change' => 'alterar',
'protectthispage' => 'Proteger esta página',
@@ -575,6 +575,8 @@ Consulte a página da [[Special:Version|versão do sistema]].',
'toc' => 'Ãndice',
'showtoc' => 'mostrar',
'hidetoc' => 'esconder',
+'collapsible-collapse' => 'Ocultar',
+'collapsible-expand' => 'Expandir',
'thisisdeleted' => 'Ver ou restaurar $1?',
'viewdeleted' => 'Ver $1?',
'restorelink' => '{{PLURAL:$1|uma edição eliminada|$1 edições eliminadas}}',
@@ -586,6 +588,8 @@ Consulte a página da [[Special:Version|versão do sistema]].',
'page-rss-feed' => "''Feed'' RSS de \"\$1\"",
'page-atom-feed' => "''Feed'' Atom de \"\$1\"",
'red-link-title' => '$1 (página não existe)',
+'sort-descending' => 'Ordenar por ordem descendente',
+'sort-ascending' => 'Ordenar por ordem ascendente',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Página',
@@ -670,12 +674,13 @@ Consulta: $2',
'protectedpagetext' => 'Esta página foi protegida contra novas edições.',
'viewsourcetext' => 'Pode ver e copiar o conteúdo desta página:',
'protectedinterface' => 'Esta página fornece o texto da interface ao software e está protegida para prevenir abusos.',
-'editinginterface' => "'''Aviso:''' Está a editar uma página usada para fornecer texto de interface ao software. Alterações a esta página afectarão a aparência da interface de utilizador para os outros utilizadores. Para traduções, considere utilizar a [http://translatewiki.net/wiki/Main_Page?setlang=pt translatewiki.net], um projecto destinado à tradução do MediaWiki.",
+'editinginterface' => "'''Aviso:''' Está a editar uma página usada para fornecer texto de interface ao software. Alterações a esta página afectarão a aparência da interface de utilizador para os outros utilizadores. Para traduções, considere utilizar a [//translatewiki.net/wiki/Main_Page?setlang=pt translatewiki.net], um projecto destinado à tradução do MediaWiki.",
'sqlhidden' => '(Consulta SQL em segundo-plano)',
'cascadeprotected' => 'Esta página foi protegida contra edições por estar incluída {{PLURAL:$1|na página listada|nas páginas listadas}} a seguir, ({{PLURAL:$1|página essa que está protegida|páginas essas que estão protegidas}} com a opção de protecção "em cascata" activada):
$2',
'namespaceprotected' => "Não possui permissão para editar páginas no espaço nominal '''$1'''.",
-'customcssjsprotected' => 'Não tem permissão de editar esta página, porque ela contém as configurações pessoais de outro utilizador.',
+'customcssprotected' => 'Não tem permissões para editar esta página de CSS porque ela contém as configurações pessoais de outro utilizador.',
+'customjsprotected' => 'Não tem permissões para editar esta página de JavaScript porque ela contém as configurações pessoais de outro utilizador.',
'ns-specialprotected' => 'Não é possível editar páginas especiais',
'titleprotected' => 'Este título foi protegido contra criação por [[User:$1|$1]].
A justificação foi "\'\'$2\'\'".',
@@ -713,6 +718,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências na
'createaccount' => 'Criar conta',
'gotaccount' => "Já possui uma conta? '''$1'''.",
'gotaccountlink' => 'Autentique-se',
+'userlogin-resetlink' => 'Esqueceu-se do seu nome de utilizador ou da palavra-chave?',
'createaccountmail' => 'por correio electrónico',
'createaccountreason' => 'Motivo:',
'badretype' => 'As palavras-chave que introduziu não são iguais.',
@@ -727,13 +733,15 @@ Active-os e autentique-se com o seu nome de utilizador e a sua palavra-chave, po
'nocookieslogin' => "A {{SITENAME}} utiliza ''cookies'' para autenticar os utilizadores.
Os ''cookies'' estão desactivados no seu browser.
Active-os e tente novamente, por favor.",
+'nocookiesfornew' => 'A conta de utilizador não foi criada, porque não foi possível confirmar a sua origem.
+Certifique-se de que tem os cookies activados, recarregue esta página e tente novamente.',
'noname' => 'Não especificou um nome de utilizador válido.',
'loginsuccesstitle' => 'Login bem sucedido',
'loginsuccess' => "'''Encontra-se agora ligado à {{SITENAME}} como \"\$1\"'''.",
'nosuchuser' => 'Não existe nenhum utilizador com o nome "$1".
Os nomes de utilizador são sensíveis à capitalização.
Verifique a ortografia, ou [[Special:UserLogin/signup|crie uma nova conta]].',
-'nosuchusershort' => 'Não existe um utilizador com o nome "<nowiki>$1</nowiki>". Verifique o nome que introduziu.',
+'nosuchusershort' => 'Não existe um utilizador com o nome "$1". Verifique o nome que introduziu.',
'nouserspecified' => 'Precisa de especificar um nome de utilizador.',
'login-userblocked' => 'Este utilizador está bloqueado. Não é permitido o acesso.',
'wrongpassword' => 'A palavra-chave que introduziu é inválida. Tente novamente, por favor.',
@@ -778,13 +786,14 @@ Se a conta foi criada por engano, pode ignorar esta mensagem.',
'usernamehasherror' => 'O nome de utilizador não pode conter o símbolo de cardinal (#).',
'login-throttled' => 'Realizou demasiadas tentativas de autenticação com esta conta.
Aguarde antes de tentar novamente, por favor.',
+'login-abort-generic' => 'A sua autenticação não teve êxito - Abortada',
'loginlanguagelabel' => 'Língua: $1',
'suspicious-userlogout' => 'O seu pedido para sair foi negado porque parece ter sido enviado por um browser danificado ou por um proxy com cache.',
# E-mail sending
'php-mail-error-unknown' => 'Erro desconhecido na função mail() do PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Alterar palavra-chave',
'resetpass_announce' => 'Autenticou-se usando uma palavra-chave temporária enviada por correio electrónico.
Para prosseguir, será necessário definir uma nova palavra-chave.',
@@ -803,6 +812,30 @@ Para prosseguir, será necessário definir uma nova palavra-chave.',
Pode ter já alterado com sucesso a sua palavra-chave ou solicitado uma nova palavra-chave temporária.',
'resetpass-temp-password' => 'Palavra-chave temporária:',
+# Special:PasswordReset
+'passwordreset' => 'Repor palavra-chave',
+'passwordreset-text' => 'Preencha este formulário para recuperar os dados da sua conta por correio electrónico.',
+'passwordreset-legend' => 'Reiniciar a palavra-chave',
+'passwordreset-disabled' => 'Reiniciar a palavra-chave foi impossibilitado nesta wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Introduza um dos dados abaixo}}',
+'passwordreset-username' => 'Nome de utilizador:',
+'passwordreset-domain' => 'Domínio:',
+'passwordreset-email' => 'Correio electrónico:',
+'passwordreset-emailtitle' => 'Detalhes da conta na {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Alguém, provavelmente você a partir do endereço IP $1, pediu a recuperação dos detalhes da sua conta na {{SITENAME}} ($4). {{PLURAL:$3|A seguinte conta está associada|As seguintes contas estão associadas}} a este correio electrónico:
+
+$2
+
+{{PLURAL:$3|Esta palavra-chave temporária irá|Estas palavras-chave temporárias irão}} expirar dentro de {{PLURAL:$5|um dia|$5 dias}}. Deve autenticar-se e escolher uma palavra-chave nova agora. Se este pedido não foi feito por si, ou se entretanto se recordou da sua palavra-chave original e já não deseja alterá-la, pode ignorar esta mensagem e continuar a usar a palavra-chave antiga.',
+'passwordreset-emailtext-user' => 'O utilizador $1 da {{SITENAME}} pediu a recuperação dos detalhes da sua conta na {{SITENAME}} ($4). {{PLURAL:$3|A seguinte conta está associada|As seguintes contas estão associadas}} a este correio electrónico:
+
+$2
+
+{{PLURAL:$3|Esta palavra-chave temporária irá|Estas palavras-chave temporárias irão}} expirar dentro de {{PLURAL:$5|um dia|$5 dias}}. Deve autenticar-se e escolher uma palavra-chave nova agora. Se este pedido não foi feito por si, ou se entretanto se recordou da sua palavra-chave original e já não deseja alterá-la, pode ignorar esta mensagem e continuar a usar a palavra-chave antiga.',
+'passwordreset-emailelement' => 'Utilizador: $1
+Palavra-chave temporária: $2',
+'passwordreset-emailsent' => 'Foi enviado um correio electrónico de recuperação dos dados da conta.',
+
# Edit page toolbar
'bold_sample' => 'Texto a negrito',
'bold_tip' => 'Texto a negrito',
@@ -814,8 +847,6 @@ Pode ter já alterado com sucesso a sua palavra-chave ou solicitado uma nova pal
'extlink_tip' => 'Link externo (lembre-se do prefixo http://)',
'headline_sample' => 'Texto do cabeçalho',
'headline_tip' => 'Secção de nível 2',
-'math_sample' => 'Inserir fórmula aqui',
-'math_tip' => 'Fórmula matemática (LaTeX)',
'nowiki_sample' => 'Inserir texto não-formatado aqui',
'nowiki_tip' => 'Ignorar formatação wiki',
'image_sample' => 'Exemplo.jpg',
@@ -907,7 +938,7 @@ ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} editar esta página]</span>.',
'noarticletext-nopermission' => 'Ainda não existe texto nesta página.
Pode [[Special:Search/{{PAGENAME}}|pesquisar o título desta página]] noutras páginas
ou <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} procurar registos relacionados]</span>.',
-'userpage-userdoesnotexist' => 'A conta "$1" não se encontra registada.
+'userpage-userdoesnotexist' => 'A conta "<nowiki>$1</nowiki>" não se encontra registada.
Verifique se deseja realmente criar ou editar esta página, por favor.',
'userpage-userdoesnotexist-view' => 'A conta de utilizador "$1" não está registada.',
'blocked-notice-logextract' => 'Este utilizador encontra-se actualmente bloqueado.
@@ -946,6 +977,7 @@ Caso continue a não funcionar, tente [[Special:UserLogout|sair]] e voltar a ent
'token_suffix_mismatch' => "'''A edição foi rejeitada porque o seu browser alterou os sinais de pontuação no editor.'''
A edição foi rejeitada para evitar perdas no texto da página.
Isso acontece ocasionalmente quando se usa um serviço de proxy anonimizador mal configurado.'''",
+'edit_form_incomplete' => "'''Algumas partes do formulário de edição não chegaram ao servidor; verifique que a sua edição continua intacta e tente novamente, por favor.'''",
'editing' => 'A editar $1',
'editingsection' => 'A editar $1 (secção)',
'editingcomment' => 'A editar $1 (nova secção)',
@@ -1187,7 +1219,7 @@ Verifique os registos, por favor.',
# Suppression log
'suppressionlog' => 'Registo de supressões',
-'suppressionlogtext' => 'Abaixo está uma lista das remoções e bloqueios envolvendo conteúdo ocultado por administradores.
+'suppressionlogtext' => 'Abaixo está uma lista das eliminações e bloqueios envolvendo conteúdo ocultado por administradores.
Veja a [[Special:IPBlockList|lista de bloqueios]] para uma lista de banimentos e bloqueios em efeito neste momento.',
# History merging
@@ -1300,12 +1332,13 @@ Entretanto, pode realizar pesquisas através do Google.
Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode estar desactualizada.',
# Quickbar
-'qbsettings' => 'Barra Rápida',
-'qbsettings-none' => 'Nenhuma',
-'qbsettings-fixedleft' => 'Fixa à esquerda',
-'qbsettings-fixedright' => 'Fixa à direita',
-'qbsettings-floatingleft' => 'Flutuante à esquerda',
-'qbsettings-floatingright' => 'Flutuante à direita',
+'qbsettings' => 'Barra Rápida',
+'qbsettings-none' => 'Nenhuma',
+'qbsettings-fixedleft' => 'Fixa à esquerda',
+'qbsettings-fixedright' => 'Fixa à direita',
+'qbsettings-floatingleft' => 'Flutuante à esquerda',
+'qbsettings-floatingright' => 'Flutuante à direita',
+'qbsettings-directionality' => 'Fixado, a dependener da direccionalidade do script da sua língua',
# Preferences page
'preferences' => 'Preferências',
@@ -1316,9 +1349,10 @@ Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode es
'changepassword' => 'Alterar palavra-chave',
'prefs-skin' => 'Tema',
'skin-preview' => 'Antever tema',
-'prefs-math' => 'Matemática',
'datedefault' => 'Sem preferência',
+'prefs-beta' => 'Funcionalidades beta',
'prefs-datetime' => 'Data e hora',
+'prefs-labs' => 'Funcionalidades dos laboratórios',
'prefs-personal' => 'Perfil de utilizador',
'prefs-rc' => 'Mudanças recentes',
'prefs-watchlist' => 'Páginas vigiadas',
@@ -1338,10 +1372,8 @@ Note, no entanto, que a indexação da {{SITENAME}} neste motor de busca pode es
'prefs-edit-boxsize' => 'Dimensões da janela de edição.',
'rows' => 'Linhas:',
'columns' => 'Colunas:',
-'searchresultshead' => 'Pesquisa',
+'searchresultshead' => 'Pesquisar',
'resultsperpage' => 'Resultados por página:',
-'contextlines' => 'Linhas por resultado:',
-'contextchars' => 'Contexto por linha:',
'stub-threshold' => 'Links para páginas curtas terão <a href="#" class="stub">este formato</a> se elas ocuparem menos de (bytes):',
'stub-threshold-disabled' => 'Desactivado',
'recentchangesdays' => 'Dias a apresentar nas mudanças recentes:',
@@ -1354,7 +1386,7 @@ Eis um valor gerado aleatoriamente, que pode usar: $1",
'savedprefs' => 'As suas preferências foram gravadas.',
'timezonelegend' => 'Fuso horário:',
'localtime' => 'Hora local:',
-'timezoneuseserverdefault' => 'Usar padrão do servidor',
+'timezoneuseserverdefault' => 'Usar padrão da wiki ($1)',
'timezoneuseoffset' => 'Outro (especificar diferença)',
'timezoneoffset' => 'Diferença horária¹:',
'servertime' => 'Hora do servidor:',
@@ -1404,8 +1436,8 @@ Não deverá conter mais de $1 {{PLURAL:$1|carácter|caracteres}}.',
Esta informação será pública.',
'email' => 'Correio electrónico',
'prefs-help-realname' => 'Opcional: se optar por revelar o seu nome verdadeiro, este será utilizado para atribuir-lhe crédito pelo seu trabalho.',
-'prefs-help-email' => 'Opcional: o endereço de correio electrónico é opcional, mas permite-nos enviar-lhe uma nova palavra-chave caso esqueça a antiga.
-Também permite que outros entrem em contacto consigo através da sua página de utilizador ou de discussão sem lhes revelar a sua identidade.',
+'prefs-help-email' => 'Opcional: o endereço de correio electrónico é opcional, mas será necessário para reiniciar a palavra-chave caso esqueça a antiga.',
+'prefs-help-email-others' => 'Também pode optar por permitir que outros entrem em contacto consigo por correio electrónico, através de um link nas suas páginas de utilizador ou de discussão, sem revelar o seu endereço de correio electrónico.',
'prefs-help-email-required' => 'O endereço de correio electrónico é requerido.',
'prefs-info' => 'Informações básicas',
'prefs-i18n' => 'Internacionalização',
@@ -1530,15 +1562,15 @@ Também permite que outros entrem em contacto consigo através da sua página de
'right-userrights' => 'Editar todos os privilégios de utilizador',
'right-userrights-interwiki' => 'Editar privilégios de utilizadores noutras wikis',
'right-siteadmin' => 'Bloquear e desbloquear a base de dados',
-'right-reset-passwords' => 'Repor a palavra-chave de outros utilizadores',
'right-override-export-depth' => 'Exportar páginas incluindo páginas ligadas até uma profundidade de 5',
'right-sendemail' => 'Enviar correio electrónico a outros utilizadores',
# 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)',
-'rightsnone' => '(nenhum)',
+'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',
+'rightsnone' => '(nenhum)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'ler esta página',
@@ -1662,13 +1694,13 @@ Consulte a [[Special:NewFiles|galeria de novos ficheiros]] para visioná-los.',
'illegalfilename' => 'O nome do ficheiro "$1" contém caracteres que não são permitidos no título das páginas.
Altere o nome do ficheiro e tente enviá-lo novamente, por favor.',
'badfilename' => 'O nome do ficheiro foi alterado para "$1".',
-'filetype-mime-mismatch' => 'A extensão do ficheiro não corresponde ao tipo MIME.',
+'filetype-mime-mismatch' => 'A extensão ".$1" não corresponde ao tipo MIME do ficheiro ($2).',
'filetype-badmime' => 'Não é permitido carregar ficheiros do tipo MIME "$1".',
'filetype-bad-ie-mime' => 'Não é possível carregar este ficheiro porque o Internet Explorer o detectaria como "$1", que é um tipo de ficheiro não permitido e potencialmente perigoso.',
'filetype-unwanted-type' => "'''\".\$1\"''' não é um tipo de ficheiro desejado.
{{PLURAL:\$3|O tipo preferido é|Os tipos preferidos são}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' não é um tipo de ficheiro permitido.
-{{PLURAL:\$3|O tipo permitido é|Os tipos permitidos são}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|não é um tipo de ficheiro permitido|não são tipos de ficheiro permitidos}}.
+{{PLURAL:$3|O tipo de ficheiro permitido é|Os tipos de ficheiro permitidos são}} $2.',
'filetype-missing' => 'O ficheiro não possui uma extensão (como, por exemplo, ".jpg").',
'empty-file' => 'O ficheiro que enviou estava vazio.',
'file-too-large' => 'O ficheiro que enviou era demasiado grande.',
@@ -1687,6 +1719,7 @@ este tem $2.',
'emptyfile' => 'O ficheiro que enviou parece estar vazio.
Isto pode dever-se a um erro no nome do ficheiro.
Verifique se é realmente este o ficheiro que deseja carregar, por favor.',
+'windows-nonascii-filename' => 'A wiki não aceita nomes de ficheiros com caracteres especiais.',
'fileexists' => "Já existe um ficheiro com este nome.
Verifique '''<tt>[[:$1]]</tt>''' caso não tenha a certeza de que quer alterar o ficheiro actual, por favor.
[[$1|thumb]]",
@@ -1724,6 +1757,8 @@ Verifique o motivo da eliminação do ficheiro antes de prosseguir com o re-envi
Verifique a configuração file_uploads, por favor.',
'uploadscripted' => 'Este ficheiro contém HTML ou código que pode ser erradamente interpretado por um browser.',
'uploadvirus' => 'O ficheiro contém um vírus! Detalhes: $1',
+'uploadjava' => 'Este é um ficheiro ZIP que contém um ficheiro .class de Java.
+Não é permitido o upload de ficheiros Java, porque estes podem contornar as restrições de segurança.',
'upload-source' => 'Ficheiro de origem',
'sourcefilename' => 'Nome do ficheiro de origem:',
'sourceurl' => 'URL fonte:',
@@ -1734,10 +1769,6 @@ Verifique a configuração file_uploads, por favor.',
'watchthisupload' => 'Vigiar este ficheiro',
'filewasdeleted' => 'Um ficheiro com este nome foi carregado anteriormente e subsequentemente eliminado.
Deverá verificar o $1 antes de voltar a enviá-lo.',
-'upload-wasdeleted' => "'''Aviso: Está a enviar um ficheiro anteriormente eliminado.'''
-
-Verifique se é apropriado prosseguir este envio.
-Para sua conveniência, é apresentado de seguida o registo de eliminação do ficheiro:",
'filename-bad-prefix' => "O nome do ficheiro que está a enviar começa por '''\"\$1\"''', um nome pouco explicativo, normalmente originado de forma automática por câmaras digitais. Escolha um nome de ficheiro mais explicativo, por favor.",
'filename-prefix-blacklist' => ' #<!-- deixe esta linha exactamente como está --> <pre>
# A sintaxe é a seguinte:
@@ -1775,6 +1806,23 @@ Caso o problema persista, contacte um [[Special:ListUsers/sysop|administrador]].
'upload-unknown-size' => 'Tamanho desconhecido',
'upload-http-error' => 'Ocorreu um erro HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Foi encontrado um erro ao abrir o ficheiro ZIP para verificação.',
+'zip-wrong-format' => 'O ficheiro especificado não é um ficheiro ZIP.',
+'zip-bad' => 'O ficheiro ZIP encontra-se corrompido ou não é legível.
+A sua segurança não pode ser devidamente verificada.',
+'zip-unsupported' => 'Este ficheiro ZIP usa funcionalidades ZIP não suportadas pelo MediaWiki.
+A sua segurança não pode ser devidamente verificada.',
+
+# Special:UploadStash
+'uploadstash' => 'Ficheiros escondidos',
+'uploadstash-summary' => 'Esta página dá acesso aos ficheiros enviados (ou que estão no processo de envio) mas que ainda não foram publicados na wiki. Estes ficheiros não são visíveis para ninguém, excepto para o utilizador que os enviou.',
+'uploadstash-clear' => 'Apagar os ficheiros escondidos',
+'uploadstash-nofiles' => 'Não tem ficheiros escondidos.',
+'uploadstash-badtoken' => 'Não foi possível executar essa operação, talvez porque as suas credenciais de edição expiraram. Tente novamente.',
+'uploadstash-errclear' => 'Não foi possível apagar os ficheiros.',
+'uploadstash-refresh' => 'Actualizar a lista de ficheiros',
+
# img_auth script messages
'img-auth-accessdenied' => 'Acesso negado',
'img-auth-nopathinfo' => 'Falta PATH_INFO.
@@ -1856,7 +1904,7 @@ A lista abaixo apresenta apenas {{PLURAL:$1|a primeira página|as primeiras $1 p
Encontra-se disponível uma [[Special:WhatLinksHere/$2|lista completa]].',
'nolinkstoimage' => 'Nenhuma página contém links para este ficheiro.',
'morelinkstoimage' => 'Ver a [[Special:WhatLinksHere/$1|lista completa]] de páginas que contêm links para este ficheiro.',
-'redirectstofile' => '{{PLURAL:$1|O seguinte ficheiro redirecciona|Os seguintes ficheiros redireccionam}} para este ficheiro:',
+'linkstoimage-redirect' => '$1 (redireccionamento de ficheiro) $2',
'duplicatesoffile' => '{{PLURAL:$1|O seguinte ficheiro é duplicado|Os seguintes $1 ficheiros são duplicados}} deste ficheiro ([[Special:FileDuplicateSearch/$2|mais detalhes]]):',
'sharedupload' => 'Este ficheiro provém de $1 e pode ser usado por outros projectos.',
'sharedupload-desc-there' => 'Este ficheiro provém de $1 e pode ser usado por outros projectos.
@@ -1950,13 +1998,14 @@ A descrição na [$2 página de descrição] é mostrada abaixo.',
Estes links deviam ser desambiguados, apontando-os para a página apropriada.<br />
Considera-se que uma página é de desambiguação se nela for utilizada uma predefinição que esteja definida em [[MediaWiki:Disambiguationspage]].',
-'doubleredirects' => 'Redireccionamentos duplos',
-'doubleredirectstext' => 'Esta página lista todas as páginas que redireccionam para outras páginas de redireccionamento.
+'doubleredirects' => 'Redireccionamentos duplos',
+'doubleredirectstext' => 'Esta página lista todas as páginas que redireccionam para outras páginas de redireccionamento.
Cada linha contém links para o primeiro e segundo redireccionamentos, bem como o destino do segundo redireccionamento, geralmente contendo a verdadeira página de destino, que devia ser o destino do primeiro redireccionamento.
<del>Entradas cortadas</del> já foram solucionadas.',
-'double-redirect-fixed-move' => '[[$1]] foi movido.
+'double-redirect-fixed-move' => '[[$1]] foi movido.
Agora redirecciona para [[$2]].',
-'double-redirect-fixer' => 'Corrector de redireccionamentos',
+'double-redirect-fixed-maintenance' => 'A corrigir redireccionamento duplo de [[$1]] para [[$2]].',
+'double-redirect-fixer' => 'Corrector de redireccionamentos',
'brokenredirects' => 'Redireccionamentos quebrados',
'brokenredirectstext' => 'Os seguintes redireccionamentos ligam para páginas inexistentes:',
@@ -2033,6 +2082,7 @@ No entanto, outros sites na internet podem ter links para um ficheiro através d
'pager-newer-n' => '{{PLURAL:$1|posterior|$1 posteriores}}',
'pager-older-n' => '{{PLURAL:$1|1 anterior|$1 anteriores}}',
'suppress' => 'Supervisor',
+'querypage-disabled' => 'Esta página especial está desactivada para não prejudicar o desempenho.',
# Book sources
'booksources' => 'Fontes de livros',
@@ -2149,6 +2199,10 @@ O endereço de correio que introduziu nas suas [[Special:Preferences|preferênci
'noemailtext' => 'Este utilizador não especificou um endereço de correio electrónico válido.',
'nowikiemailtitle' => 'Correio electrónico não é permitido',
'nowikiemailtext' => 'Este utilizador optou por não receber correio electrónico de outros utilizadores.',
+'emailnotarget' => 'O nome do destinatário não existe ou é inválido.',
+'emailtarget' => 'Introduza o nome de utilizador do destinatário.',
+'emailusername' => 'Utilizador:',
+'emailusernamesubmit' => 'Enviar',
'email-legend' => 'Enviar correio electrónico para outro utilizador da {{SITENAME}}',
'emailfrom' => 'De:',
'emailto' => 'Para:',
@@ -2173,11 +2227,11 @@ O endereço de correio que introduziu nas suas [[Special:Preferences|preferênci
'watchlistanontext' => 'Precisa de $1 para ver ou editar a sua lista de páginas vigiadas, por favor.',
'watchnologin' => 'Não está autenticado',
'watchnologintext' => 'Precisa de estar [[Special:UserLogin|autenticado]] para modificar a sua lista de páginas vigiadas.',
-'addedwatch' => 'Adicionado à lista',
+'addwatch' => 'Adicionar às páginas vigiadas',
'addedwatchtext' => "A página \"[[:\$1]]\" foi adicionada à sua lista de [[Special:Watchlist|páginas vigiadas]], onde serão indicadas quaisquer
modificações futuras desta página e da respectiva página de discussão.
O nome desta página passará a aparecer a '''negrito''' na lista de [[Special:RecentChanges|mudanças recentes]], para que a encontre facilmente.",
-'removedwatch' => 'Removida da lista de páginas vigiadas',
+'removewatch' => 'Remover das páginas vigiadas',
'removedwatchtext' => 'A página "[[:$1]]" foi removida da sua lista de [[Special:Watchlist|páginas vigiadas]].',
'watch' => 'Vigiar',
'watchthispage' => 'Vigiar esta página',
@@ -2198,8 +2252,9 @@ O nome desta página passará a aparecer a '''negrito''' na lista de [[Special:R
'watchlist-options' => 'Opções da lista de páginas vigiadas',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'A vigiar...',
-'unwatching' => 'Deixando de vigiar...',
+'watching' => 'A vigiar...',
+'unwatching' => 'Deixando de vigiar...',
+'watcherrortext' => 'Ocorreu um erro ao alterar a configuração da sua lista de páginas vigiadas para "$1".',
'enotif_mailer' => 'Gerador de Notificações da {{SITENAME}}',
'enotif_reset' => 'Marcar todas as páginas como visitadas',
@@ -2231,16 +2286,16 @@ Pode também reactivar as notificações para todas páginas na sua lista de pá
--
Para alterar as suas preferências das notificações por correio electrónico, visite
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Para alterar as suas preferências das páginas vigiadas, visite
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Para retirar a página da lista de páginas vigiadas, visite
$UNWATCHURL
Para comentários e pedidos de ajuda:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Eliminar página',
@@ -2256,7 +2311,7 @@ Para comentários e pedidos de ajuda:
Confirme que é realmente esta a sua intenção, que compreende as consequências e que o faz de acordo com as [[{{MediaWiki:Policy-url}}|políticas e recomendações]] do projecto, por favor.',
'actioncomplete' => 'Operação executada',
'actionfailed' => 'Operação falhou',
-'deletedtext' => '"<nowiki>$1</nowiki>" foi eliminada.
+'deletedtext' => '"$1" foi eliminada.
Consulte $2 para um registo de eliminações recentes.',
'deletedarticle' => 'eliminou "[[$1]]"',
'suppressedarticle' => 'suprimiu "[[$1]]"',
@@ -2315,7 +2370,7 @@ Consulte a [[Special:ProtectedPages|lista de páginas protegidas]] para ver as p
'protect_expiry_invalid' => 'O tempo de expiração fornecido é inválido.',
'protect_expiry_old' => 'O tempo de expiração fornecido situa-se no passado.',
'protect-unchain-permissions' => 'Desbloquear outras opções de protecção',
-'protect-text' => "Pode ver e alterar aqui o nível de protecção da página '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Pode ver e alterar aqui o nível de protecção da página '''$1'''.",
'protect-locked-blocked' => "Não pode alterar níveis de protecção enquanto estiver bloqueado.
Esta é a configuração presente para a página '''$1''':",
'protect-locked-dblock' => "Não é possível alterar os níveis de protecção, porque a base de dados está bloqueada.
@@ -2369,9 +2424,8 @@ Pode alterar o nível de protecção desta página, mas isso não afectará a pr
'viewdeletedpage' => 'Ver páginas eliminadas',
'undeletepagetext' => '{{PLURAL:$1|A seguinte página foi eliminada|As seguintes páginas foram eliminadas}}, mas ainda {{PLURAL:$1|permanece|permanecem}} na base de dados e poderem ser restauradas. O arquivo pode ser limpo periodicamente.',
'undelete-fieldset-title' => 'Restaurar edições',
-'undeleteextrahelp' => "Para restaurar o histórico de edições completo desta página, desmarque todas as caixas de selecção e clique '''''Restaurar'''''.
-Para efectuar uma restauração selectiva, marque as caixas correspondentes às edições que pretende restaurar e clique em '''''Restaurar'''''.
-Clicar em '''''Limpar''''' irá limpar o campo de comentário e todas as caixas de selecção.",
+'undeleteextrahelp' => "Para restaurar o histórico de edições completo desta página, desmarque todas as caixas de selecção e clique '''''{{int:undeletebtn}}'''''.
+Para efectuar uma restauração selectiva, marque as caixas correspondentes às edições que pretende restaurar e clique '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|edição disponível|edições disponíveis}}',
'undeletehistory' => 'Se restaurar uma página, todas as edições serão restauradas para o histórico.
Se uma nova página foi criada com o mesmo nome desde a eliminação, as edições restauradas aparecerão no histórico anterior.',
@@ -2413,9 +2467,12 @@ $1',
'undelete-show-file-submit' => 'Sim',
# Namespace form on various pages
-'namespace' => 'Espaço nominal:',
-'invert' => 'Inverter selecção',
-'blanknamespace' => '(Principal)',
+'namespace' => 'Espaço nominal:',
+'invert' => 'Inverter selecção',
+'tooltip-invert' => 'Marque esta caixa para esconder as alterações a páginas no espaço nominal seleccionado (e no espaço nominal associado, se escolheu fazê-lo)',
+'namespace_association' => 'Espaço nominal associado',
+'tooltip-namespace_association' => 'Marque esta caixa para incluir também o espaço nominal de conteúdo ou de discussão associado à sua selecção',
+'blanknamespace' => '(Principal)',
# Contributions
'contributions' => 'Contribuições do utilizador',
@@ -2465,12 +2522,14 @@ Para sua referência, encontra abaixo a entrada mais recente no registo de bloqu
'whatlinkshere-filters' => 'Filtros',
# Block/unblock
+'autoblockid' => 'Bloqueio automático nº$1',
+'block' => 'Bloquear utilizador',
+'unblock' => 'Desbloquear utilizador',
'blockip' => 'Bloquear utilizador',
'blockip-title' => 'Bloquear utilizador',
'blockip-legend' => 'Bloquear utilizador',
'blockiptext' => 'Utilize o formulário abaixo para bloquear o acesso de escrita a um endereço IP específico ou a um nome de utilizador.
Isto só deve ser feito para prevenir vandalismo e de acordo com a [[{{MediaWiki:Policy-url}}|política]]. Indique a seguir um motivo de bloqueio específico (por exemplo, indicando as páginas que foram alvo de vandalismo).',
-'ipaddress' => 'Endereço IP:',
'ipadressorusername' => 'Endereço IP ou nome de utilizador:',
'ipbexpiry' => 'Expiração:',
'ipbreason' => 'Motivo:',
@@ -2483,7 +2542,7 @@ Isto só deve ser feito para prevenir vandalismo e de acordo com a [[{{MediaWiki
** Comportamento intimidador/inoportuno
** Uso abusivo de contas múltiplas
** Nome de utilizador inaceitável',
-'ipbanononly' => 'Bloquear apenas utilizadores anónimos',
+'ipb-hardblock' => 'Impedir que utilizadores autenticados editem a partir deste endereço IP',
'ipbcreateaccount' => 'Impedir criação de contas de utilizador',
'ipbemailban' => 'Impedir utilizador de enviar correio electrónico',
'ipbenableautoblock' => 'Bloquear automaticamente o endereço IP mais recente deste utilizador e todos os endereços IP subsequentes a partir dos quais ele tente editar',
@@ -2494,12 +2553,15 @@ Isto só deve ser feito para prevenir vandalismo e de acordo com a [[{{MediaWiki
'ipbotherreason' => 'Outro motivo/motivo adicional:',
'ipbhidename' => 'Ocultar nome de utilizador nas edições e listas',
'ipbwatchuser' => 'Vigiar as páginas de utilizador e de discussão deste utilizador',
-'ipballowusertalk' => 'Permitir que este utilizador edite a sua própria página de discussão mesmo estando bloqueado',
+'ipb-disableusertalk' => 'Impedir que este utilizador edite a sua página de discussão enquanto estiver bloqueado',
'ipb-change-block' => 'Voltar a bloquear o utilizador com estes parâmetros',
+'ipb-confirm' => 'Confirmar o bloqueio',
'badipaddress' => 'Endereço IP inválido',
'blockipsuccesssub' => 'Bloqueio bem sucedido',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] foi bloqueado.<br />
Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para rever os bloqueios.',
+'ipb-blockingself' => 'Está prestes a bloquear-se a si próprio. Tem a certeza de que pretende fazê-lo?',
+'ipb-confirmhideuser' => 'Está prestes a bloquear um utilizador com "Ocultar nome de utilizador/IP" activado. Isto irá suprimir o nome do utilizador de todas as listas e entradas dos registos. Tem a certeza de que pretende fazê-lo?',
'ipb-edit-dropdown' => 'Editar motivos de bloqueio',
'ipb-unblock-addr' => 'Desbloquear $1',
'ipb-unblock' => 'Desbloquear um utilizador ou endereço IP',
@@ -2509,17 +2571,23 @@ Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para rever os bloquei
'unblockiptext' => 'Utilize o formulário abaixo para restaurar o acesso de escrita de um endereço IP ou utilizador previamente bloqueado.',
'ipusubmit' => 'Remover este bloqueio',
'unblocked' => '[[User:$1|$1]] foi desbloqueado',
+'unblocked-range' => 'A gama $1 foi desbloqueada',
'unblocked-id' => 'O bloqueio de $1 foi removido com sucesso',
+'blocklist' => 'Utilizadores bloqueados',
'ipblocklist' => 'Utilizadores bloqueados',
'ipblocklist-legend' => 'Procurar um utilizador bloqueado',
-'ipblocklist-username' => 'Nome de utilizador ou endereço IP:',
-'ipblocklist-sh-userblocks' => '$1 bloqueios de contas',
-'ipblocklist-sh-tempblocks' => '$1 bloqueios temporários',
-'ipblocklist-sh-addressblocks' => '$1 bloqueios de IP único',
+'blocklist-userblocks' => 'Esconder bloqueios de contas',
+'blocklist-tempblocks' => 'Esconder bloqueios temporários',
+'blocklist-addressblocks' => 'Esconder bloqueios de IP único',
+'blocklist-timestamp' => 'Data e hora',
+'blocklist-target' => 'Destinatário',
+'blocklist-expiry' => 'Duração',
+'blocklist-by' => 'Administrador que realizou o bloqueio',
+'blocklist-params' => 'Parâmetros do bloqueio',
+'blocklist-reason' => 'Motivo',
'ipblocklist-submit' => 'Pesquisar',
'ipblocklist-localblock' => 'Bloqueio local',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Outro bloqueio|Outros bloqueios}}',
-'blocklistline' => '$1, $2 bloqueou $3 ($4)',
'infiniteblock' => 'infinito',
'expiringblock' => 'expira em $1 às $2',
'anononlyblock' => 'apenas anón.',
@@ -2543,7 +2611,7 @@ O registo de supressão é fornecido abaixo para referência:',
'reblock-logentry' => 'modificou parâmetros de bloqueio de [[$1]] com expiração em $2 $3',
'blocklogtext' => 'Este é um registo de acções de bloqueio e desbloqueio.
Endereços IP sujeitos a bloqueio automático não são listados.
-Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para obter a lista de bloqueios e banimentos actualmente válidos.',
+Consulte a [[Special:BlockList|lista de IPs bloqueados]] para obter a lista de bloqueios e banimentos actualmente válidos.',
'unblocklogentry' => 'desbloqueou $1',
'block-log-flags-anononly' => 'apenas utilizadores anónimos',
'block-log-flags-nocreate' => 'criação de contas impossibilitada',
@@ -2557,9 +2625,9 @@ Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para obter a lista de
'ipb_expiry_temp' => 'Bloqueios com nome de utilizador ocultado devem ser permanentes.',
'ipb_hide_invalid' => 'Não foi possível suprimir esta conta; ela poderá ter demasiadas edições.',
'ipb_already_blocked' => '"$1" já se encontra bloqueado',
-'ipb-needreblock' => '== Já se encontra bloqueado ==
-$1 já se encontra bloqueado. Deseja alterar as configurações?',
+'ipb-needreblock' => '$1 já se encontra bloqueado. Deseja alterar as configurações?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Outro bloqueio|Outros bloqueios}}',
+'unblock-hideuser' => 'Não pode desbloquear o utilizador, porque o nome deste utilizador foi ocultado.',
'ipb_cant_unblock' => 'Erro: O bloqueio com ID $1 não foi encontrado. Pode já ter sido desbloqueado.',
'ipb_blocked_as_range' => 'Erro: O IP $1 não se encontra bloqueado de forma directa e não pode ser desbloqueado deste modo. No entanto, está bloqueado como parte da gama $2, a qual pode ser desbloqueada.',
'ip_range_invalid' => 'Gama de IPs inválida.',
@@ -2597,6 +2665,7 @@ Lembre-se de [[Special:UnlockDB|remover o bloqueio]] após a manutenção.',
'lockfilenotwritable' => 'O ficheiro de bloqueio da base de dados não pode ser escrito.
Para bloquear ou desbloquear a base de dados, este precisa de poder ser escrito pelo servidor de internet.',
'databasenotlocked' => 'A base de dados não está bloqueada.',
+'lockedbyandtime' => '(por $1 em $2 às $3)',
# Move page
'move-page' => 'Mover $1',
@@ -2719,7 +2788,7 @@ Se desejar, pode utilizar um link (por exemplo, [[{{#Special:Export}}/{{MediaWik
'allmessagesdefault' => 'Texto padrão',
'allmessagescurrent' => 'Texto actual',
'allmessagestext' => 'Esta é a lista das mensagens de sistema disponíveis no espaço nominal MediaWiki.
-Se deseja colaborar na localização genérica do MediaWiki, visite [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e a [http://translatewiki.net translatewiki.net].',
+Se deseja colaborar na localização genérica do MediaWiki, visite [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e a [//translatewiki.net translatewiki.net].',
'allmessagesnotsupportedDB' => "Esta página não pode ser utilizada, uma vez que '''\$wgUseDatabaseMessages''' foi desativado.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtrar pelo estado de personalização:',
@@ -2888,9 +2957,7 @@ Permite colocar uma justificação no resumo da edição.',
'vector.js' => '/* Código Javascript colocado aqui será carregado para utilizadores do tema Vector */',
# Metadata
-'nodublincore' => 'O uso de metadados RDF para Dublin Core foi impossibilitado neste servidor.',
-'nocreativecommons' => 'O uso de metadados RDF da Creative Commons foi impossibilitado neste servidor.',
-'notacceptable' => 'O servidor não pode fornecer os dados num formato que o seu cliente possa ler.',
+'notacceptable' => 'O servidor não pode fornecer os dados num formato que o seu cliente possa ler.',
# Attribution
'anonymous' => '{{PLURAL:$1|Utilizador anónimo|Utilizadores anónimos}} da {{SITENAME}}',
@@ -2914,12 +2981,17 @@ Este bloqueio foi provavelmente causado por um link para um site externo que con
'spam_blanking' => 'Todas as revisões continham links para $1, limpando',
# Info page
-'infosubtitle' => 'Informação para página',
-'numedits' => 'Número de edições (página): $1',
-'numtalkedits' => 'Número de edições (página de discussão): $1',
-'numwatchers' => 'Número de vigilantes: $1',
-'numauthors' => 'Número de autores distintos (página): $1',
-'numtalkauthors' => 'Número de autores distintos (página de discussão): $1',
+'pageinfo-title' => 'Informações sobre "$1"',
+'pageinfo-header-edits' => 'Edições',
+'pageinfo-header-watchlist' => 'Páginas vigiadas',
+'pageinfo-header-views' => 'Visitas',
+'pageinfo-subjectpage' => 'Página',
+'pageinfo-talkpage' => 'Página de discussão',
+'pageinfo-watchers' => 'Número de vigilantes',
+'pageinfo-edits' => 'Número de edições',
+'pageinfo-authors' => 'Número de autores individuais',
+'pageinfo-views' => 'Número de visitas',
+'pageinfo-viewsperedit' => 'Visitas por edição',
# Skin names
'skinname-standard' => 'Clássico',
@@ -2932,26 +3004,6 @@ Este bloqueio foi provavelmente causado por um link para um site externo que con
'skinname-modern' => 'Moderno',
'skinname-vector' => 'Vector',
-# Math options
-'mw_math_png' => 'Gerar sempre como PNG',
-'mw_math_simple' => 'HTML caso seja simples, caso contrário, PNG',
-'mw_math_html' => 'HTML se possível, caso contrário, PNG',
-'mw_math_source' => 'Deixar como TeX (para browsers de texto)',
-'mw_math_modern' => 'Recomendado para browsers modernos',
-'mw_math_mathml' => 'MathML se possível (experimental)',
-
-# Math errors
-'math_failure' => 'Falhou ao verificar gramática',
-'math_unknown_error' => 'Erro desconhecido',
-'math_unknown_function' => 'Função desconhecida',
-'math_lexing_error' => 'Erro léxico',
-'math_syntax_error' => 'Erro de sintaxe',
-'math_image_error' => 'Falha na conversão para PNG;
-verifique que o latex, dvips, gs e convert foram correctamente instalados',
-'math_bad_tmpdir' => "Não foi possível criar o directório temporário ''math'' ou, se já existe, escrever nele",
-'math_bad_output' => "Não foi possível criar o directório de resultados ''math'' ou, se já existe, escrever nele",
-'math_notexvc' => 'O executável texvc não foi encontrado. Consulte math/README para instruções da configuração.',
-
# Patrolling
'markaspatrolleddiff' => 'Marcar como patrulhada',
'markaspatrolledtext' => 'Marcar esta página como patrulhada',
@@ -2987,22 +3039,25 @@ $1',
'nextdiff' => 'Edição posterior →',
# Media information
-'mediawarning' => "'''Aviso''': Este tipo de ficheiro pode conter código malicioso.
+'mediawarning' => "'''Aviso''': Este tipo de ficheiro pode conter código malicioso.
Executá-lo poderá comprometer a segurança do seu sistema.",
-'imagemaxsize' => "Limite de tamanho de imagens:<br />''(para páginas de descrição)''",
-'thumbsize' => 'Tamanho de miniaturas:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|página|páginas}}',
-'file-info' => 'tamanho: $1, tipo MIME: $2',
-'file-info-size' => '$1 × $2 pixels, tamanho: $3, tipo MIME: $4',
-'file-nohires' => '<small>Sem resolução maior disponível.</small>',
-'svg-long-desc' => 'ficheiro SVG, de $1 × $2 pixels, tamanho: $3',
-'show-big-image' => 'Resolução completa',
-'show-big-image-thumb' => '<small>Dimensões desta antevisão: $1 × $2 pixels</small>',
-'file-info-gif-looped' => 'cíclico',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|quadro|quadros}}',
-'file-info-png-looped' => 'ciclo infinito',
-'file-info-png-repeat' => 'reproduzido $1 {{PLURAL:$1|vez|vezes}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|fotograma|fotogramas}}',
+'imagemaxsize' => "Limite de tamanho de imagens:<br />''(para páginas de descrição)''",
+'thumbsize' => 'Tamanho de miniaturas:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|página|páginas}}',
+'file-info' => 'tamanho: $1, tipo MIME: $2',
+'file-info-size' => '$1 × $2 pixels, tamanho: $3, tipo MIME: $4',
+'file-info-size-pages' => '$1 × $2 pixels, tamanho do ficheiro: $3, tipo MIME: $4, $5 {{PLURAL:$5|página|páginas}}',
+'file-nohires' => '<small>Sem resolução maior disponível.</small>',
+'svg-long-desc' => 'ficheiro SVG, de $1 × $2 pixels, tamanho: $3',
+'show-big-image' => 'Resolução completa',
+'show-big-image-preview' => '<small>Tamanho desta antevisão: $1.</small>',
+'show-big-image-other' => '<small>Outras resoluções: $1.</small>',
+'show-big-image-size' => '$1 × $2 pixels',
+'file-info-gif-looped' => 'cíclico',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|quadro|quadros}}',
+'file-info-png-looped' => 'ciclo infinito',
+'file-info-png-repeat' => 'reproduzido $1 {{PLURAL:$1|vez|vezes}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|fotograma|fotogramas}}',
# Special:NewFiles
'newimages' => 'Galeria de novos ficheiros',
@@ -3029,14 +3084,20 @@ Quaisquer outros links nessa mesma linha são considerados excepções (ou seja,
Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns detalhes poderão não reflectir completamente as mudanças efectuadas.',
'metadata-expand' => 'Mostrar detalhes adicionais',
'metadata-collapse' => 'Esconder detalhes adicionais',
-'metadata-fields' => 'Os campos de metadados EXIF listados nesta mensagem serão incluídos na página de descrição da imagem quando a tabela de metadados não estiver no modo "expandida". Por omissão, outros campos estarão ocultos.
+'metadata-fields' => 'Os campos de metadados de imagens listados nesta mensagem serão incluídos na página de descrição da imagem quando a tabela de metadados estiver recolhida. Por omissão, outros campos estarão ocultos.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Largura',
@@ -3051,13 +3112,11 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
'exif-ycbcrpositioning' => 'Posicionamento Y e C',
'exif-xresolution' => 'Resolução horizontal',
'exif-yresolution' => 'Resolução vertical',
-'exif-resolutionunit' => 'Unidade de resolução X e Y',
'exif-stripoffsets' => 'Localização dos dados da imagem',
'exif-rowsperstrip' => 'Número de linhas por tira',
'exif-stripbytecounts' => 'Bytes por tira comprimida',
'exif-jpeginterchangeformat' => 'Desvio para SOI de JPEG',
'exif-jpeginterchangeformatlength' => 'Bytes de dados JPEG',
-'exif-transferfunction' => 'Função de transferência',
'exif-whitepoint' => 'Cromatismo do ponto branco',
'exif-primarychromaticities' => 'Cromatismo das cores primárias',
'exif-ycbcrcoefficients' => 'Coeficientes da matriz de transformação do espaço de cores',
@@ -3076,7 +3135,6 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
'exif-compressedbitsperpixel' => 'Modo de compressão da imagem',
'exif-pixelydimension' => 'Largura válida da imagem',
'exif-pixelxdimension' => 'Altura válida da imagem',
-'exif-makernote' => 'Anotações do fabricante',
'exif-usercomment' => 'Comentários de utilizadores',
'exif-relatedsoundfile' => 'Ficheiro áudio relacionado',
'exif-datetimeoriginal' => 'Data e hora de geração de dados',
@@ -3090,7 +3148,6 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
'exif-exposureprogram' => 'Programa de exposição',
'exif-spectralsensitivity' => 'Sensibilidade espectral',
'exif-isospeedratings' => 'Taxa de velocidade ISO',
-'exif-oecf' => 'Factor de conversão optoelectrónica',
'exif-shutterspeedvalue' => 'Velocidade do obturador',
'exif-aperturevalue' => 'Abertura',
'exif-brightnessvalue' => 'Brilho APEX',
@@ -3103,7 +3160,6 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
'exif-focallength' => 'Distância focal da lente',
'exif-subjectarea' => 'Ãrea do motivo',
'exif-flashenergy' => 'Energia do flash',
-'exif-spatialfrequencyresponse' => 'Resposta em frequência espacial',
'exif-focalplanexresolution' => 'Resolução do plano focal X',
'exif-focalplaneyresolution' => 'Resolução do plano focal Y',
'exif-focalplaneresolutionunit' => 'Unidade de resolução do plano focal',
@@ -3112,7 +3168,6 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
'exif-sensingmethod' => 'Tipo de sensor',
'exif-filesource' => 'Fonte do ficheiro',
'exif-scenetype' => 'Tipo de cena',
-'exif-cfapattern' => 'padrão CFA',
'exif-customrendered' => 'Processamento de imagem personalizado',
'exif-exposuremode' => 'Modo de exposição',
'exif-whitebalance' => 'Balanço de brancos',
@@ -3157,10 +3212,79 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
'exif-gpsareainformation' => 'Nome da área do GPS',
'exif-gpsdatestamp' => 'Data do GPS',
'exif-gpsdifferential' => 'Correcção do diferencial do GPS',
+'exif-jpegfilecomment' => 'Comentário de ficheiro JPEG',
+'exif-keywords' => 'Termos-chave',
+'exif-worldregioncreated' => 'Região do mundo onde a fotografia foi tirada',
+'exif-countrycreated' => 'País onde a fotografia foi tirada',
+'exif-countrycodecreated' => 'Código do país onde a fotografia foi tirada',
+'exif-provinceorstatecreated' => 'Concelho, província ou estado onde a fotografia foi tirada',
+'exif-citycreated' => 'Cidade onde a fotografia foi tirada',
+'exif-sublocationcreated' => 'Parte da cidade onde a fotografia foi tirada',
+'exif-worldregiondest' => 'Região do mundo fotografada',
+'exif-countrydest' => 'País fotografado',
+'exif-countrycodedest' => 'Código do país fotografado',
+'exif-provinceorstatedest' => 'Concelho, província ou estado fotografado',
+'exif-citydest' => 'Cidade fotografada',
+'exif-sublocationdest' => 'Parte da cidade fotografada',
'exif-objectname' => 'Título curto',
+'exif-specialinstructions' => 'Instruções especiais',
+'exif-headline' => 'Título',
+'exif-credit' => 'Atribuição/Fornecedor',
+'exif-source' => 'Fonte',
+'exif-editstatus' => 'Estatuto editorial da imagem',
+'exif-urgency' => 'Urgência',
+'exif-fixtureidentifier' => 'Nome da coluna',
+'exif-locationdest' => 'Localização representada',
+'exif-locationdestcode' => 'Código da localização representada',
+'exif-objectcycle' => 'Altura do dia para a qual o conteúdo está direccionado',
+'exif-contact' => 'Informação de contacto',
+'exif-writer' => 'Escritor',
+'exif-languagecode' => 'Língua',
+'exif-iimversion' => 'Versão IIM',
+'exif-iimcategory' => 'Categoria',
+'exif-iimsupplementalcategory' => 'Categorias suplementares',
+'exif-datetimeexpires' => 'Não utilizar após',
+'exif-datetimereleased' => 'Publicada a',
+'exif-originaltransmissionref' => 'Código original do local de transmissão',
+'exif-identifier' => 'Identificador',
+'exif-lens' => 'Lente usada',
+'exif-serialnumber' => 'Número de série da câmara',
+'exif-cameraownername' => 'Proprietário da câmara',
+'exif-label' => 'Etiqueta',
+'exif-datetimemetadata' => 'Data da última modificação dos metadados',
+'exif-nickname' => 'Nome informal da imagem',
+'exif-rating' => 'Classificação (max. 5)',
+'exif-rightscertificate' => 'Certificado de gestão dos direitos',
+'exif-copyrighted' => 'Estado dos direitos de autor:',
+'exif-copyrightowner' => 'Titular dos direitos de autor',
+'exif-usageterms' => 'Condições de uso',
+'exif-webstatement' => 'Declaração na internet dos direitos de autor',
+'exif-originaldocumentid' => 'Identificação exclusiva do documento original',
+'exif-licenseurl' => 'URL da licença',
+'exif-morepermissionsurl' => 'Informações para licenciamento alternativo',
+'exif-attributionurl' => 'Ao reutilizar esta obra, coloque um link para',
+'exif-preferredattributionname' => 'Ao reutilizar esta obra, faça a atribuição a',
+'exif-pngfilecomment' => 'Comentário de ficheiro PNG',
+'exif-disclaimer' => 'Exoneração de responsabilidade',
+'exif-contentwarning' => 'Aviso sobre o conteúdo',
+'exif-giffilecomment' => 'Comentário de ficheiro GIF',
+'exif-intellectualgenre' => 'Género de conteúdo',
+'exif-subjectnewscode' => 'Código do tema',
+'exif-scenecode' => 'Código de cena IPTC',
+'exif-event' => 'Evento retratado',
+'exif-organisationinimage' => 'Organização retratada',
+'exif-personinimage' => 'Pessoa retratada',
+'exif-originalimageheight' => 'Altura da imagem antes de ser cortada',
+'exif-originalimagewidth' => 'Largura da imagem antes de ser cortada',
# EXIF attributes
'exif-compression-1' => 'Descomprimido',
+'exif-compression-2' => 'CCITT Grupo 3 1-D Codificação Unidimensional Huffman Modificado e Run Length Encoding',
+'exif-compression-3' => 'CCITT Grupo 3 codificação de fax',
+'exif-compression-4' => 'CCITT Grupo 4 codificação de fax',
+
+'exif-copyrighted-true' => 'Direitos de autor reservados',
+'exif-copyrighted-false' => 'Domínio público',
'exif-unknowndate' => 'Data desconhecida',
@@ -3176,6 +3300,8 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
'exif-planarconfiguration-1' => 'formato irregular',
'exif-planarconfiguration-2' => 'formato plano',
+'exif-colorspace-65535' => 'Cor não calibrada',
+
'exif-componentsconfiguration-0' => 'não existe',
'exif-exposureprogram-0' => 'Não definido',
@@ -3289,6 +3415,10 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
'exif-gpslongitude-e' => 'Longitude Este',
'exif-gpslongitude-w' => 'Longitude Oeste',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metro|metros}} acima do nível do mar',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metro|metros}} abaixo do nível do mar',
+
'exif-gpsstatus-a' => 'Medição em progresso',
'exif-gpsstatus-v' => 'Interoperabilidade de medição',
@@ -3300,21 +3430,73 @@ Caso o ficheiro tenha sido modificado a partir do seu estado original, alguns de
'exif-gpsspeed-m' => 'Milhas por hora',
'exif-gpsspeed-n' => 'Nós',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Quilómetros',
+'exif-gpsdestdistance-m' => 'Milhas',
+'exif-gpsdestdistance-n' => 'Miles náuticas',
+
+'exif-gpsdop-excellent' => 'Excelente ($1)',
+'exif-gpsdop-good' => 'Bom ($1)',
+'exif-gpsdop-moderate' => 'Moderado ($1)',
+'exif-gpsdop-fair' => 'Aceitável ($1)',
+'exif-gpsdop-poor' => 'Fraco ($1)',
+
+'exif-objectcycle-a' => 'Só de manhã',
+'exif-objectcycle-p' => 'Só à tarde/noite',
+'exif-objectcycle-b' => 'De manhã e à tarde/noite',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Direcção real',
'exif-gpsdirection-m' => 'Direcção magnética',
+'exif-ycbcrpositioning-1' => 'Centradas',
+'exif-ycbcrpositioning-2' => 'Co-localizadas',
+
+'exif-dc-contributor' => 'Colaboradores',
+'exif-dc-coverage' => 'Âmbito espacial ou temporal do conteúdo',
+'exif-dc-date' => 'Data(s)',
+'exif-dc-publisher' => 'Editora',
+'exif-dc-relation' => 'Conteúdos relacionados',
+'exif-dc-rights' => 'Direitos',
+'exif-dc-source' => 'Imagem fonte',
+'exif-dc-type' => 'Tipo do conteúdo',
+
+'exif-rating-rejected' => 'Rejeitado',
+
+'exif-isospeedratings-overflow' => 'Superior a 65535',
+
+'exif-iimcategory-ace' => 'Artes, cultura e entretenimento',
+'exif-iimcategory-clj' => 'Lei e crime',
+'exif-iimcategory-dis' => 'Desastres e acidentes',
+'exif-iimcategory-fin' => 'Economia e negócios',
+'exif-iimcategory-edu' => 'Educação',
+'exif-iimcategory-evn' => 'Meio ambiente',
+'exif-iimcategory-hth' => 'Saúde',
+'exif-iimcategory-hum' => 'Interesse humano',
+'exif-iimcategory-lab' => 'Trabalho',
+'exif-iimcategory-lif' => 'Estilo de vida e lazer',
+'exif-iimcategory-pol' => 'Política',
+'exif-iimcategory-rel' => 'Religião e credo',
+'exif-iimcategory-sci' => 'Ciência e tecnologia',
+'exif-iimcategory-soi' => 'Questões sociais',
+'exif-iimcategory-spo' => 'Desporto',
+'exif-iimcategory-war' => 'Guerra, conflitos e agitação social',
+'exif-iimcategory-wea' => 'Tempo',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Baixa ($1)',
+'exif-urgency-high' => 'Alta ($1)',
+'exif-urgency-other' => 'Prioridade definida pelo utilizador ($1)',
+
# External editor support
'edit-externally' => 'Editar este ficheiro utilizando uma aplicação externa',
-'edit-externally-help' => '(Consulte as [http://www.mediawiki.org/wiki/Manual:External_editors instruções de instalação] para mais informações)',
+'edit-externally-help' => '(Consulte as [//www.mediawiki.org/wiki/Manual:External_editors instruções de instalação] para mais informações)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'todas',
-'imagelistall' => 'todas',
-'watchlistall2' => 'todas',
-'namespacesall' => 'todos',
-'monthsall' => 'todos',
-'limitall' => 'tudo',
+'watchlistall2' => 'todas',
+'namespacesall' => 'todos',
+'monthsall' => 'todos',
+'limitall' => 'tudo',
# E-mail address confirmation
'confirmemail' => 'Confirmar endereço de correio electrónico',
@@ -3401,17 +3583,24 @@ $1",
'trackbackdeleteok' => "O ''trackback'' foi eliminado com sucesso.",
# Delete conflict
-'deletedwhileediting' => "'''Aviso''': Esta página foi eliminada após ter começado a editá-la!",
-'confirmrecreate' => "Enquanto você editava esta página, o utilizador [[User:$1|$1]] ([[User talk:$1|Discussão]]) eliminou-a pelo seguinte motivo:
+'deletedwhileediting' => "'''Aviso''': Esta página foi eliminada após ter começado a editá-la!",
+'confirmrecreate' => "Enquanto você editava esta página, o utilizador [[User:$1|$1]] ([[User talk:$1|Discussão]]) eliminou-a pelo seguinte motivo:
: ''$2''
Confirme que deseja realmente recriar esta página, por favor.",
-'recreate' => 'Recriar',
+'confirmrecreate-noreason' => 'O utilizador [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou esta página depois de você ter começado a editá-la. Confirme que deseja recriar a página, por favor.',
+'recreate' => 'Recriar',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Limpar a memória cache desta página?',
'confirm-purge-bottom' => 'Purgar uma página, limpa a cache e força a sua versão mais recente a aparecer.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Adicionar esta página às suas páginas vigiadas?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Remover esta página das páginas vigiadas?',
+
# Multipage image navigation
'imgmultipageprev' => '↠página anterior',
'imgmultipagenext' => 'página seguinte →',
@@ -3455,7 +3644,7 @@ Tente a antevisão normal.',
'watchlistedit-normal-legend' => 'Remover páginas da lista de páginas vigiadas',
'watchlistedit-normal-explain' => 'As suas páginas vigiadas são listadas abaixo.
Para remover uma página, marque a caixa de selecção correspondente e clique o botão "{{int:Watchlistedit-normal-submit}}".
-Também pode [[Special:Watchlist/raw|editar a lista de páginas vigiadas em forma de texto]].',
+Também pode [[Special:EditWatchlist/raw|editar a lista de páginas vigiadas em forma de texto]].',
'watchlistedit-normal-submit' => 'Remover páginas',
'watchlistedit-normal-done' => '{{PLURAL:$1|Foi removida uma página|Foram removidas $1 páginas}} da sua lista de páginas vigiadas:',
'watchlistedit-raw-title' => 'Editar a lista de páginas vigiadas em forma de texto',
@@ -3463,7 +3652,7 @@ Também pode [[Special:Watchlist/raw|editar a lista de páginas vigiadas em form
'watchlistedit-raw-explain' => 'A lista de páginas vigiadas é apresentada abaixo.
Pode adicionar novas linhas ou remover linhas para aumentar ou reduzir a lista, desde que mantenha uma única página por linha.
Quando terminar, clique "{{int:Watchlistedit-raw-submit}}".
-Também pode [[Special:Watchlist/edit|editar a lista da maneira convencional]].',
+Também pode [[Special:EditWatchlist|editar a lista da maneira convencional]].',
'watchlistedit-raw-titles' => 'Páginas:',
'watchlistedit-raw-submit' => 'Actualizar a lista de páginas vigiadas',
'watchlistedit-raw-done' => 'A sua lista de páginas vigiadas foi actualizada.',
@@ -3480,33 +3669,33 @@ Também pode [[Special:Watchlist/edit|editar a lista da maneira convencional]].'
'duplicate-defaultsort' => 'Aviso: A chave de ordenação padrão "$2" sobrepõe-se à anterior chave de ordenação padrão "$1".',
# Special:Version
-'version' => 'Versão',
-'version-extensions' => 'Extensões instaladas',
-'version-specialpages' => 'Páginas especiais',
-'version-parserhooks' => "''Hooks'' do analisador sintáctico",
-'version-variables' => 'Variáveis',
-'version-skins' => 'Temas',
-'version-other' => 'Diversos',
-'version-mediahandlers' => 'Leitura e tratamento de multimédia',
-'version-hooks' => 'Hooks',
-'version-extension-functions' => 'Funções de extensão',
-'version-parser-extensiontags' => 'Extensões do analisador sintáctico',
-'version-parser-function-hooks' => "''Hooks'' das funções do analisador sintáctico",
-'version-skin-extension-functions' => 'Funções para extensão de temas',
-'version-hook-name' => 'Nome do hook',
-'version-hook-subscribedby' => 'Subscrito por',
-'version-version' => '(Versão $1)',
-'version-license' => 'Licença',
-'version-poweredby-credits' => "Esta é uma wiki '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'outros',
-'version-license-info' => 'O MediaWiki é software livre; pode redistribuí-lo e/ou modificá-lo nos termos da licença GNU General Public License, tal como publicada pela Free Software Foundation; tanto a versão 2 da Licença, como (por opção sua) qualquer versão posterior.
+'version' => 'Versão',
+'version-extensions' => 'Extensões instaladas',
+'version-specialpages' => 'Páginas especiais',
+'version-parserhooks' => "''Hooks'' do analisador sintáctico",
+'version-variables' => 'Variáveis',
+'version-antispam' => 'Prevenção contra spam',
+'version-skins' => 'Temas',
+'version-other' => 'Diversos',
+'version-mediahandlers' => 'Leitura e tratamento de multimédia',
+'version-hooks' => 'Hooks',
+'version-extension-functions' => 'Funções de extensão',
+'version-parser-extensiontags' => 'Extensões do analisador sintáctico',
+'version-parser-function-hooks' => "''Hooks'' das funções do analisador sintáctico",
+'version-hook-name' => 'Nome do hook',
+'version-hook-subscribedby' => 'Subscrito por',
+'version-version' => '(Versão $1)',
+'version-license' => 'Licença',
+'version-poweredby-credits' => "Esta é uma wiki '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'outros',
+'version-license-info' => 'O MediaWiki é software livre; pode redistribuí-lo e/ou modificá-lo nos termos da licença GNU General Public License, tal como publicada pela Free Software Foundation; tanto a versão 2 da Licença, como (por opção sua) qualquer versão posterior.
O MediaWiki é distribuído na esperança de que seja útil, mas SEM QUALQUER GARANTIA; inclusive, sem a garantia implícita da POSSIBILIDADE DE SER COMERCIALIZADO ou de ADEQUAÇÂO PARA QUALQUER FINALIDADE ESPECÃFICA. Consulte a licença GNU General Public License para mais detalhes.
-Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYING uma cópia da licença GNU General Public License]; se não a recebeu, peça-a por escrito para Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ou [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html leia-a na internet].',
-'version-software' => 'Software instalado',
-'version-software-product' => 'Produto',
-'version-software-version' => 'Versão',
+Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYING uma cópia da licença GNU General Public License]; se não a recebeu, peça-a por escrito para Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ou [//www.gnu.org/licenses/old-licenses/gpl-2.0.html leia-a na internet].',
+'version-software' => 'Software instalado',
+'version-software-product' => 'Produto',
+'version-software-version' => 'Versão',
# Special:FilePath
'filepath' => 'Endereço de ficheiro',
@@ -3516,22 +3705,22 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
Imagens serão apresentadas pelo browser na resolução máxima; ficheiros de outro tipo serão abertos pelo browser directamente no programa que lhes está associado no seu computador.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Ficheiros duplicados',
-'fileduplicatesearch-summary' => "Procure ficheiros duplicados tendo por base o seu resumo criptográfico ''(hash value)''.
-
-Introduza o nome do ficheiro sem o prefixo \"{{ns:file}}:\".",
-'fileduplicatesearch-legend' => 'Procurar duplicados',
-'fileduplicatesearch-filename' => 'Ficheiro:',
-'fileduplicatesearch-submit' => 'Procurar',
-'fileduplicatesearch-info' => '$1 × $2 pixels<br />Tamanho: $3<br />tipo MIME: $4',
-'fileduplicatesearch-result-1' => 'O ficheiro "$1" não possui cópias idênticas.',
-'fileduplicatesearch-result-n' => 'O ficheiro "$1" possui {{PLURAL:$2|uma cópia idêntica|$2 cópias idênticas}}.',
+'fileduplicatesearch' => 'Ficheiros duplicados',
+'fileduplicatesearch-summary' => "Procure ficheiros duplicados tendo por base o seu resumo criptográfico ''(hash value)''.",
+'fileduplicatesearch-legend' => 'Procurar duplicados',
+'fileduplicatesearch-filename' => 'Ficheiro:',
+'fileduplicatesearch-submit' => 'Procurar',
+'fileduplicatesearch-info' => '$1 × $2 pixels<br />Tamanho: $3<br />tipo MIME: $4',
+'fileduplicatesearch-result-1' => 'O ficheiro "$1" não possui cópias idênticas.',
+'fileduplicatesearch-result-n' => 'O ficheiro "$1" possui {{PLURAL:$2|uma cópia idêntica|$2 cópias idênticas}}.',
+'fileduplicatesearch-noresults' => 'Não foi encontrado nenhum ficheiro com o nome "$1".',
# Special:SpecialPages
'specialpages' => 'Páginas especiais',
'specialpages-note' => '----
-* Páginas especiais normais.
-* <strong class="mw-specialpagerestricted">Páginas especiais restritas.</strong>',
+*Páginas normais especiais
+* <span class="mw-specialpagerestricted">Restricted special pages.</span>
+* <span class="mw-specialpagecached">Cached special pages (might be obsolete).</span>',
'specialpages-group-maintenance' => 'Relatórios de manutenção',
'specialpages-group-other' => 'Outras páginas especiais',
'specialpages-group-login' => 'Entrar / registar-se',
diff --git a/languages/messages/MessagesPt_br.php b/languages/messages/MessagesPt_br.php
index 8546a7f5..d212d773 100644
--- a/languages/messages/MessagesPt_br.php
+++ b/languages/messages/MessagesPt_br.php
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author Alcali
* @author Bani
* @author Brion
* @author BrunaaAa
@@ -18,13 +19,13 @@
* @author Danielsouzat
* @author Diego Queiroz
* @author Eduardo.mps
+ * @author Everton137
* @author Francisco Leandro
* @author GKnedo
* @author Giro720
* @author GoEThe
* @author Hamilton Abreu
* @author Helder.wiki
- * @author Heldergeovane
* @author Jesielt
* @author Jorge Morais
* @author Leonardo.stabile
@@ -32,8 +33,10 @@
* @author Lijealso
* @author Luckas Blade
* @author Malafaya
+ * @author ManoDbo
* @author McDutchie
* @author MetalBrasil
+ * @author Pedroca cerebral
* @author Raylton P. Sousa
* @author Rodrigo Calanca Nishino
* @author Urhixidur
@@ -72,6 +75,10 @@ $namespaceAliases = array(
'Ficheiro_Discussão' => NS_FILE_TALK,
);
+$namespaceGenderAliases = array(
+ NS_USER => array( 'male' => 'Usuário', 'female' => 'Usuária' ),
+ NS_USER_TALK => array( 'male' => 'Usuário_Discussão', 'female' => 'Usuária_Discussão' ),
+);
$defaultDateFormat = 'dmy';
@@ -86,95 +93,95 @@ $dateFormats = array(
$separatorTransformTable = array( ',' => ' ', '.' => ',' );
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Redirecionamentos_duplos' ),
+ 'Activeusers' => array( 'Usuários_ativos' ),
+ 'Allmessages' => array( 'Todas_as_mensagens', 'Todas_mensagens' ),
+ 'Allpages' => array( 'Todas_as_páginas', 'Todos_os_artigos', 'Todas_páginas', 'Todos_artigos' ),
+ 'Ancientpages' => array( 'Páginas_inativas', 'Artigos_inativos' ),
+ 'Blankpage' => array( 'Página_em_branco' ),
+ 'Block' => array( 'Bloquear', 'Bloquear_IP', 'Bloquear_utilizador', 'Bloquear_usuário' ),
+ 'Blockme' => array( 'Bloquear-me', 'Auto-bloqueio' ),
+ 'Booksources' => array( 'Fontes_de_livros' ),
'BrokenRedirects' => array( 'Redirecionamentos_quebrados' ),
- 'Disambiguations' => array( 'Páginas_de_desambiguação', 'Desambiguar', 'Desambiguações' ),
- 'Userlogin' => array( 'Autenticar-se', 'Entrar', 'Login' ),
- 'Userlogout' => array( 'Sair', 'Logout' ),
+ 'Categories' => array( 'Categorias' ),
+ 'ChangePassword' => array( 'Trocar_senha', 'Repor_senha' ),
+ 'Confirmemail' => array( 'Confirmar_e-mail', 'Confirmar_email' ),
+ 'Contributions' => array( 'Contribuições' ),
'CreateAccount' => array( 'Criar_conta' ),
- 'Preferences' => array( 'Preferências' ),
- 'Watchlist' => array( 'Páginas_vigiadas', 'Artigos_vigiados', 'Vigiados' ),
- 'Recentchanges' => array( 'Mudanças_recentes', 'Recentes' ),
- 'Upload' => array( 'Carregar_arquivo', 'Carregar_imagem', 'Carregar_ficheiro', 'Enviar' ),
+ 'Deadendpages' => array( 'Páginas_sem_saída', 'Artigos_sem_saída' ),
+ 'DeletedContributions' => array( 'Contribuições_eliminadas', 'Edições_eliminadas' ),
+ 'Disambiguations' => array( 'Páginas_de_desambiguação', 'Desambiguar', 'Desambiguações' ),
+ 'DoubleRedirects' => array( 'Redirecionamentos_duplos' ),
+ 'Emailuser' => array( 'Contatar_usuário', 'Contactar_usuário', 'Contactar_utilizador' ),
+ 'Export' => array( 'Exportar' ),
+ 'Fewestrevisions' => array( 'Páginas_com_menos_edições', 'Artigos_com_menos_edições', 'Artigos_menos_editados' ),
+ 'FileDuplicateSearch' => array( 'Busca_de_arquivos_duplicados', 'Busca_de_ficheiros_duplicados' ),
+ 'Filepath' => array( 'Diretório_de_arquivo', 'Diretório_de_ficheiro' ),
+ 'Import' => array( 'Importar' ),
+ 'Invalidateemail' => array( 'Invalidar_e-mail' ),
+ 'BlockList' => array( 'Registro_de_bloqueios', 'IPs_bloqueados', 'Utilizadores_bloqueados', 'Usuários_bloqueados', 'Registo_de_bloqueios' ),
+ 'LinkSearch' => array( 'Pesquisar_links' ),
+ 'Listadmins' => array( 'Lista_de_administradores', 'Administradores', 'Admins', 'Lista_de_admins' ),
+ 'Listbots' => array( 'Lista_de_robôs', 'Bots', 'Lista_de_bots' ),
'Listfiles' => array( 'Lista_de_arquivos', 'Lista_de_imagens', 'Lista_de_ficheiros' ),
- 'Newimages' => array( 'Arquivos_novos', 'Imagens_novas', 'Ficheiros_novos' ),
- 'Listusers' => array( 'Lista_de_usuários', 'Lista_de_utilizadores' ),
'Listgrouprights' => array( 'Listar_privilégios_de_grupos' ),
- 'Statistics' => array( 'Estatísticas' ),
- 'Randompage' => array( 'Aleatória', 'Aleatório', 'Página_aleatória', 'Artigo_aleatório' ),
+ 'Listredirects' => array( 'Lista_de_redirecionamentos', 'Redirecionamentos' ),
+ 'Listusers' => array( 'Lista_de_usuários', 'Lista_de_utilizadores' ),
+ 'Lockdb' => array( 'Bloquear_banco_de_dados', 'Bloquear_a_base_de_dados' ),
+ 'Log' => array( 'Registro', 'Registos', 'Registros', 'Registo' ),
'Lonelypages' => array( 'Páginas_órfãs', 'Artigos_órfãos', 'Páginas_sem_afluentes', 'Artigos_sem_afluentes' ),
- 'Uncategorizedpages' => array( 'Páginas_sem_categorias', 'Artigos_sem_categorias' ),
- 'Uncategorizedcategories' => array( 'Categorias_sem_categorias' ),
- 'Uncategorizedimages' => array( 'Arquivos_sem_categorias', 'Imagens_sem_categorias', 'Ficheiros_sem_categorias' ),
- 'Uncategorizedtemplates' => array( 'Predefinições_não_categorizadas', 'Predefinições_sem_categorias' ),
- 'Unusedcategories' => array( 'Categorias_não_utilizadas', 'Categorias_sem_uso' ),
- 'Unusedimages' => array( 'Arquivos_sem_uso', 'Arquivos_não_utilizados', 'Imagens_sem_uso', 'Imagens_não_utilizadas', 'Ficheiros_sem_uso', 'Ficheiros_não_utilizados' ),
- 'Wantedpages' => array( 'Páginas_pedidas', 'Páginas_em_falta', 'Artigos_em_falta', 'Artigos_pedidos' ),
- 'Wantedcategories' => array( 'Categorias_pedidas', 'Categorias_em_falta', 'Categorias_inexistentes' ),
- 'Wantedfiles' => array( 'Arquivos_pedidos', 'Arquivos_em_falta', 'Ficheiros_em_falta', 'Imagens_em_falta' ),
- 'Wantedtemplates' => array( 'Predefinições_pedidas', 'Predefinições_em_falta' ),
+ 'Longpages' => array( 'Páginas_longas', 'Artigos_extensos' ),
+ 'MergeHistory' => array( 'Fundir_históricos', 'Fundir_edições' ),
+ 'MIMEsearch' => array( 'Busca_MIME' ),
+ 'Mostcategories' => array( 'Páginas_com_mais_categorias', 'Artigos_com_mais_categorias' ),
+ 'Mostimages' => array( 'Imagens_com_mais_afluentes', 'Ficheiros_com_mais_afluentes', 'Arquivos_com_mais_afluentes' ),
'Mostlinked' => array( 'Páginas_com_mais_afluentes', 'Artigos_com_mais_afluentes' ),
'Mostlinkedcategories' => array( 'Categorias_com_mais_afluentes' ),
'Mostlinkedtemplates' => array( 'Predefinições_com_mais_afluentes' ),
- 'Mostimages' => array( 'Imagens_com_mais_afluentes', 'Ficheiros_com_mais_afluentes', 'Arquivos_com_mais_afluentes' ),
- 'Mostcategories' => array( 'Páginas_com_mais_categorias', 'Artigos_com_mais_categorias' ),
'Mostrevisions' => array( 'Páginas_com_mais_edições', 'Artigos_com_mais_edições' ),
- 'Fewestrevisions' => array( 'Páginas_com_menos_edições', 'Artigos_com_menos_edições', 'Artigos_menos_editados' ),
- 'Shortpages' => array( 'Páginas_curtas', 'Artigos_curtos' ),
- 'Longpages' => array( 'Páginas_longas', 'Artigos_extensos' ),
+ 'Movepage' => array( 'Mover_página', 'Mover', 'Mover_artigo' ),
+ 'Mycontributions' => array( 'Minhas_contribuições', 'Minhas_edições' ),
+ 'Mypage' => array( 'Minha_página' ),
+ 'Mytalk' => array( 'Minha_discussão' ),
+ 'Newimages' => array( 'Arquivos_novos', 'Imagens_novas', 'Ficheiros_novos' ),
'Newpages' => array( 'Páginas_novas', 'Artigos_novos' ),
- 'Ancientpages' => array( 'Páginas_inativas', 'Artigos_inativos' ),
- 'Deadendpages' => array( 'Páginas_sem_saída', 'Artigos_sem_saída' ),
+ 'Popularpages' => array( 'Páginas_populares', 'Artigos_populares' ),
+ 'Preferences' => array( 'Preferências' ),
+ 'Prefixindex' => array( 'Ãndice_de_prefixo', 'Ãndice_por_prefixo' ),
'Protectedpages' => array( 'Páginas_protegidas', 'Artigos_protegidos' ),
'Protectedtitles' => array( 'Títulos_protegidos' ),
- 'Allpages' => array( 'Todas_as_páginas', 'Todos_os_artigos', 'Todas_páginas', 'Todos_artigos' ),
- 'Prefixindex' => array( 'Ãndice_de_prefixo', 'Ãndice_por_prefixo' ),
- 'Ipblocklist' => array( 'Registro_de_bloqueios', 'IPs_bloqueados', 'Utilizadores_bloqueados', 'Usuários_bloqueados', 'Registo_de_bloqueios' ),
- 'Unblock' => array( 'Desbloquear' ),
- 'Specialpages' => array( 'Páginas_especiais' ),
- 'Contributions' => array( 'Contribuições' ),
- 'Emailuser' => array( 'Contatar_usuário', 'Contactar_usuário', 'Contactar_utilizador' ),
- 'Confirmemail' => array( 'Confirmar_e-mail', 'Confirmar_email' ),
- 'Whatlinkshere' => array( 'Páginas_afluentes', 'Artigos_afluentes' ),
+ 'Randompage' => array( 'Aleatória', 'Aleatório', 'Página_aleatória', 'Artigo_aleatório' ),
+ 'Randomredirect' => array( 'Redirecionamento_aleatório' ),
+ 'Recentchanges' => array( 'Mudanças_recentes', 'Recentes' ),
'Recentchangeslinked' => array( 'Mudanças_relacionadas', 'Novidades_relacionadas' ),
- 'Movepage' => array( 'Mover_página', 'Mover', 'Mover_artigo' ),
- 'Blockme' => array( 'Bloquear-me', 'Auto-bloqueio' ),
- 'Booksources' => array( 'Fontes_de_livros' ),
- 'Categories' => array( 'Categorias' ),
- 'Export' => array( 'Exportar' ),
- 'Version' => array( 'Versão', 'Sobre' ),
- 'Allmessages' => array( 'Todas_as_mensagens', 'Todas_mensagens' ),
- 'Log' => array( 'Registro', 'Registos', 'Registros', 'Registo' ),
- 'Blockip' => array( 'Bloquear', 'Bloquear_IP', 'Bloquear_utilizador', 'Bloquear_usuário' ),
+ 'Revisiondelete' => array( 'Eliminar_edição', 'Eliminar_revisão', 'Apagar_edição', 'Apagar_revisão' ),
+ 'Search' => array( 'Busca', 'Buscar', 'Procurar', 'Pesquisar', 'Pesquisa' ),
+ 'Shortpages' => array( 'Páginas_curtas', 'Artigos_curtos' ),
+ 'Specialpages' => array( 'Páginas_especiais' ),
+ 'Statistics' => array( 'Estatísticas' ),
+ 'Tags' => array( 'Etiquetas' ),
+ 'Unblock' => array( 'Desbloquear' ),
+ 'Uncategorizedcategories' => array( 'Categorias_sem_categorias' ),
+ 'Uncategorizedimages' => array( 'Arquivos_sem_categorias', 'Imagens_sem_categorias', 'Ficheiros_sem_categorias' ),
+ 'Uncategorizedpages' => array( 'Páginas_sem_categorias', 'Artigos_sem_categorias' ),
+ 'Uncategorizedtemplates' => array( 'Predefinições_não_categorizadas', 'Predefinições_sem_categorias' ),
'Undelete' => array( 'Restaurar', 'Restaurar_páginas_eliminadas', 'Restaurar_artigos_eliminados' ),
- 'Import' => array( 'Importar' ),
- 'Lockdb' => array( 'Bloquear_banco_de_dados', 'Bloquear_a_base_de_dados' ),
'Unlockdb' => array( 'Desbloquear_banco_de_dados', 'Desbloquear_a_base_de_dados' ),
- 'Userrights' => array( 'Privilégios', 'Direitos', 'Estatutos' ),
- 'MIMEsearch' => array( 'Busca_MIME' ),
- 'FileDuplicateSearch' => array( 'Busca_de_arquivos_duplicados', 'Busca_de_ficheiros_duplicados' ),
- 'Unwatchedpages' => array( 'Páginas_não-vigiadas', 'Páginas_não_vigiadas', 'Artigos_não-vigiados', 'Artigos_não_vigiados' ),
- 'Listredirects' => array( 'Lista_de_redirecionamentos', 'Redirecionamentos' ),
- 'Revisiondelete' => array( 'Eliminar_edição', 'Eliminar_revisão', 'Apagar_edição', 'Apagar_revisão' ),
+ 'Unusedcategories' => array( 'Categorias_não_utilizadas', 'Categorias_sem_uso' ),
+ 'Unusedimages' => array( 'Arquivos_sem_uso', 'Arquivos_não_utilizados', 'Imagens_sem_uso', 'Imagens_não_utilizadas', 'Ficheiros_sem_uso', 'Ficheiros_não_utilizados' ),
'Unusedtemplates' => array( 'Predefinições_sem_uso', 'Predefinições_não_utilizadas' ),
- 'Randomredirect' => array( 'Redirecionamento_aleatório' ),
- 'Mypage' => array( 'Minha_página' ),
- 'Mytalk' => array( 'Minha_discussão' ),
- 'Mycontributions' => array( 'Minhas_contribuições', 'Minhas_edições' ),
- 'Listadmins' => array( 'Lista_de_administradores', 'Administradores', 'Admins', 'Lista_de_admins' ),
- 'Listbots' => array( 'Lista_de_robôs', 'Bots', 'Lista_de_bots' ),
- 'Popularpages' => array( 'Páginas_populares', 'Artigos_populares' ),
- 'Search' => array( 'Busca', 'Buscar', 'Procurar', 'Pesquisar', 'Pesquisa' ),
- 'Resetpass' => array( 'Trocar_senha', 'Repor_senha' ),
+ 'Unwatchedpages' => array( 'Páginas_não-vigiadas', 'Páginas_não_vigiadas', 'Artigos_não-vigiados', 'Artigos_não_vigiados' ),
+ 'Upload' => array( 'Carregar_arquivo', 'Carregar_imagem', 'Carregar_ficheiro', 'Enviar' ),
+ 'Userlogin' => array( 'Autenticar-se', 'Entrar', 'Login' ),
+ 'Userlogout' => array( 'Sair', 'Logout' ),
+ 'Userrights' => array( 'Privilégios', 'Direitos', 'Estatutos' ),
+ 'Version' => array( 'Versão', 'Sobre' ),
+ 'Wantedcategories' => array( 'Categorias_pedidas', 'Categorias_em_falta', 'Categorias_inexistentes' ),
+ 'Wantedfiles' => array( 'Arquivos_pedidos', 'Arquivos_em_falta', 'Ficheiros_em_falta', 'Imagens_em_falta' ),
+ 'Wantedpages' => array( 'Páginas_pedidas', 'Páginas_em_falta', 'Artigos_em_falta', 'Artigos_pedidos' ),
+ 'Wantedtemplates' => array( 'Predefinições_pedidas', 'Predefinições_em_falta' ),
+ 'Watchlist' => array( 'Páginas_vigiadas', 'Artigos_vigiados', 'Vigiados' ),
+ 'Whatlinkshere' => array( 'Páginas_afluentes', 'Artigos_afluentes' ),
'Withoutinterwiki' => array( 'Páginas_sem_interwikis', 'Artigos_sem_interwikis' ),
- 'MergeHistory' => array( 'Fundir_históricos', 'Fundir_edições' ),
- 'Filepath' => array( 'Diretório_de_arquivo', 'Diretório_de_ficheiro' ),
- 'Invalidateemail' => array( 'Invalidar_e-mail' ),
- 'Blankpage' => array( 'Página_em_branco' ),
- 'LinkSearch' => array( 'Pesquisar_links' ),
- 'DeletedContributions' => array( 'Contribuições_eliminadas', 'Edições_eliminadas' ),
- 'Tags' => array( 'Etiquetas' ),
- 'Activeusers' => array( 'Usuários_ativos' ),
);
$magicWords = array(
@@ -324,8 +331,8 @@ $messages = array(
'tog-shownumberswatching' => 'Mostrar o número de usuários que estão vigiando',
'tog-oldsig' => 'Assinatura existente:',
'tog-fancysig' => 'Tratar assinatura como wikitexto (sem link automático)',
-'tog-externaleditor' => 'Utilizar editor externo por padrão (apenas para usuários avançados; requer configurações adicionais em seu computador. [http://www.mediawiki.org/wiki/Manual:External_editors Mais informações.])',
-'tog-externaldiff' => 'Utilizar comparador de versões externo por padrão (apenas para usuários avançados; requer configurações adicionais em seu computador. [http://www.mediawiki.org/wiki/Manual:External_editors Mais informações.])',
+'tog-externaleditor' => 'Utilizar editor externo por padrão (apenas para usuários avançados; requer configurações adicionais em seu computador. [//www.mediawiki.org/wiki/Manual:External_editors Mais informações.])',
+'tog-externaldiff' => 'Utilizar comparador de versões externo por padrão (apenas para usuários avançados; requer configurações adicionais em seu computador. [//www.mediawiki.org/wiki/Manual:External_editors Mais informações.])',
'tog-showjumplinks' => 'Ativar hiperligações de acessibilidade "ir para"',
'tog-uselivepreview' => 'Utilizar pré-visualização em tempo real (JavaScript) (Experimental)',
'tog-forceeditsummary' => 'Avisar-me ao introduzir um sumário vazio',
@@ -422,15 +429,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Páginas indexadas',
'noindex-category' => 'Páginas não indexadas',
-
-'mainpagetext' => "'''MediaWiki instalado com sucesso.'''",
-'mainpagedocfooter' => 'Consulte o [http://meta.wikimedia.org/wiki/Help:Contents Manual de Usuário] para informações de como usar o software wiki.
-
-== Começando ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista de opções de configuração]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ do MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discussão com avisos de novas versões do MediaWiki]',
+'broken-file-category' => 'Páginas com links quebrados para imagens',
'about' => 'Sobre',
'article' => 'Página de conteúdo',
@@ -475,17 +474,17 @@ $messages = array(
'returnto' => 'Retornar para $1.',
'tagline' => 'De {{SITENAME}}',
'help' => 'Ajuda',
-'search' => 'Pesquisa',
+'search' => 'Pesquisar',
'searchbutton' => 'Pesquisa',
'go' => 'Ir',
'searcharticle' => 'Ir',
'history' => 'Histórico da página',
'history_short' => 'Histórico',
'updatedmarker' => 'atualizado desde a minha última visita',
-'info_short' => 'Informação',
'printableversion' => 'Versão para impressão',
'permalink' => 'Link permanente',
'print' => 'Imprimir',
+'view' => 'Ver',
'edit' => 'Editar',
'create' => 'Criar',
'editthispage' => 'Editar esta página',
@@ -493,6 +492,7 @@ $messages = array(
'delete' => 'Eliminar',
'deletethispage' => 'Eliminar esta página',
'undelete_short' => 'Restaurar {{PLURAL:$1|uma edição|$1 edições}}',
+'viewdeleted_short' => 'Ver {{PLURAL:$1|uma edição eliminada|$1 edições eliminadas}}',
'protect' => 'Proteger',
'protect_change' => 'alterar',
'protectthispage' => 'Proteger esta página',
@@ -577,6 +577,8 @@ Veja a [[Special:Version|página sobre a versão do sistema]].',
'toc' => 'Tabela de conteúdo',
'showtoc' => 'mostrar',
'hidetoc' => 'esconder',
+'collapsible-collapse' => 'Ocultar',
+'collapsible-expand' => 'Expandir',
'thisisdeleted' => 'Ver ou restaurar $1?',
'viewdeleted' => 'Ver $1?',
'restorelink' => '{{PLURAL:$1|uma edição eliminada|$1 edições eliminadas}}',
@@ -588,6 +590,8 @@ Veja a [[Special:Version|página sobre a versão do sistema]].',
'page-rss-feed' => 'Feed RSS de "$1"',
'page-atom-feed' => 'Feed Atom de "$1"',
'red-link-title' => '$1 (página inexistente)',
+'sort-descending' => 'Ordenar por ordem descendente',
+'sort-ascending' => 'Ordenar por ordem ascendente',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Página',
@@ -672,12 +676,13 @@ Tente novamente em alguns minutos.',
'protectedpagetext' => 'Esta página foi protegida contra novas edições.',
'viewsourcetext' => 'Você pode ver e copiar o código desta página:',
'protectedinterface' => 'Esta página fornece texto de interface ao software e encontra-se trancada para prevenir abusos.',
-'editinginterface' => "'''Aviso:''' Você se encontra prestes a editar uma página que é utilizada para fornecer texto de interface ao software. Alterações nesta página irão afetar a aparência da interface de usuário para outros usuários. Para traduções, considere utilizar a [http://translatewiki.net/wiki/Main_Page?setlang=pt-br translatewiki.net], um projeto destinado para a tradução do MediaWiki.",
+'editinginterface' => "'''Aviso:''' Você se encontra prestes a editar uma página que é utilizada para fornecer texto de interface ao software. Alterações nesta página irão afetar a aparência da interface de usuário para outros usuários. Para traduções, considere utilizar a [//translatewiki.net/wiki/Main_Page?setlang=pt-br translatewiki.net], um projeto destinado para a tradução do MediaWiki.",
'sqlhidden' => '(Consulta SQL em segundo-plano)',
'cascadeprotected' => 'Esta página foi protegida contra edições por estar incluída {{PLURAL:$1|na página listada|nas páginas listadas}} a seguir, ({{PLURAL:$1|página essa que está protegida|páginas essas que estão protegidas}} com a opção de "proteção progressiva" ativada):
$2',
'namespaceprotected' => "Você não possui permissão para editar páginas no espaço nominal '''$1'''.",
-'customcssjsprotected' => 'Você não possui permissão de editar esta página, já que ela contém configurações pessoais de outro usuário.',
+'customcssprotected' => 'Você não tem permissão para editar esta página CSS, porque ele contém configurações pessoais de outro usuário.',
+'customjsprotected' => 'Você não tem permissão para editar esta página de JavaScript, porque ele contém configurações pessoais de outro usuário.',
'ns-specialprotected' => 'Não é possível editar páginas especiais',
'titleprotected' => "Este título foi protegido, para que não seja criado.
Quem o protegeu foi [[User:$1|$1]], com a justificativa: ''$2''.",
@@ -715,6 +720,7 @@ Não se esqueça de personalizar as suas [[Special:Preferences|preferências na
'createaccount' => 'Criar conta',
'gotaccount' => "Já possui uma conta? '''$1'''.",
'gotaccountlink' => 'Autenticar-se',
+'userlogin-resetlink' => 'Esqueceu-se do seu nome de usuário ou da senha?',
'createaccountmail' => 'por e-mail',
'createaccountreason' => 'Razão:',
'badretype' => 'As senhas que você digitou não são iguais.',
@@ -727,13 +733,15 @@ Escolha um nome diferente, por favor.',
Você tem os ''cookies'' desativados no seu navegador.
Por favor ative-os, depois autentique-se com o seu novo nome de usuário e a sua senha.",
'nocookieslogin' => 'Você tem os <i>cookies</i> desativados no seu navegador, e a {{SITENAME}} utiliza <i>cookies</i> para ligar os usuários às suas contas. Por favor os ative e tente novamente.',
+'nocookiesfornew' => 'A conta de usuário não foi criada porque não foi possível confirmar a sua origem.
+Certifique-se de que tem os cookies ativados, recarregue esta página e tente novamente.',
'noname' => 'Você não colocou um nome de usuário válido.',
'loginsuccesstitle' => 'Login bem sucedido',
'loginsuccess' => "'''Agora você está ligado à {{SITENAME}} como \"\$1\"'''.",
'nosuchuser' => 'Não existe nenhum usuário com o nome "$1".
Os nomes de usuário são sensíveis à capitalização.
Verifique a ortografia, ou [[Special:UserLogin/signup|crie uma nova conta]].',
-'nosuchusershort' => 'Não existe um usuário com o nome "<nowiki>$1</nowiki>". Verifique o nome que introduziu.',
+'nosuchusershort' => 'Não existe um usuário com o nome "$1". Verifique o nome que introduziu.',
'nouserspecified' => 'Você precisa especificar um nome de usuário.',
'login-userblocked' => 'Este usuário está bloqueado. Entrada proibida.',
'wrongpassword' => 'A senha que introduziu é inválida. Por favor, tente novamente.',
@@ -773,13 +781,14 @@ Você pode ignorar esta mensagem caso a conta tenha sido criada por engano.',
'usernamehasherror' => 'Nome de usuário não pode conter o símbolo de cardinal (#).',
'login-throttled' => 'Você fez tentativas demais de se autenticar com esta conta recentemente.
Por favor aguarde antes de tentar novamente.',
+'login-abort-generic' => 'A sua autenticação não teve êxito - Abortada',
'loginlanguagelabel' => 'Língua: $1',
'suspicious-userlogout' => 'Sua solicitação para sair foi negada porque aparentemente foi enviada por um navegador danificado ou por um servidor proxy com cache.',
# E-mail sending
'php-mail-error-unknown' => 'Erro desconhecido na função mail() do PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Alterar senha',
'resetpass_announce' => 'Você foi autenticado através de uma senha temporária. Para prosseguir, será necessário definir uma nova senha.',
'resetpass_text' => '<!-- Adicionar texto aqui -->',
@@ -797,6 +806,31 @@ Por favor aguarde antes de tentar novamente.',
Você pode já ter alterado com sucesso a sua senha, ou solicitado uma nova senha temporária.',
'resetpass-temp-password' => 'Senha temporária:',
+# Special:PasswordReset
+'passwordreset' => 'Repor Palavra-chave',
+'passwordreset-text' => 'Preencha este formulário para recuperar os dados da sua conta pelo e-mail.',
+'passwordreset-legend' => 'Reiniciar a senha',
+'passwordreset-disabled' => 'Reiniciar a senha foi impossibilitado nesta wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Introduza um dos dados abaixo}}',
+'passwordreset-username' => 'Nome de usuário:',
+'passwordreset-domain' => 'Domínio:',
+'passwordreset-email' => 'Endereço de e-mail:',
+'passwordreset-emailtitle' => 'Detalhes da conta na {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Alguém (provavelmente você, do endereço IP $1) solicitou um lembrete do seu detalhes de conta para {{SITENAME}} ($4). O seguinte usuário {{PLURAL:$3|conta|são contas}} associado com este endereço de e-mail:
+
+$2
+
+{{PLURAL:$3|Esta senha temporária |Essas senhas temporárias}} vão expirar em {{PLURAL:$5|um dia|$5 dias}}.
+Você deve efetuar login e escolher uma nova senha agora. Se você conseguir lembrar da senha, ignore este e-mail e continue usando sua senha anterior, do contrário, prossiga com as instruções clicando no link.',
+'passwordreset-emailtext-user' => 'O usuário $1 da {{SITENAME}} pediu a recuperação dos detalhes da sua conta na {{SITENAME}} ($4). {{PLURAL:$3|A seguinte conta está associada|As seguintes contas estão associadas}} a este e-mail:
+
+$2
+
+{{PLURAL:$3|Esta senha temporária irá|Estas senhas temporárias irão}} expirar dentro de {{PLURAL:$5|um dia|$5 dias}}. Deve autenticar-se e escolher uma senha nova agora. Se este pedido não foi feito por si, ou se entretanto se recordou da sua senha original e já não deseja alterá-la, pode ignorar esta mensagem e continuar a usar a senha antiga.',
+'passwordreset-emailelement' => 'Usuário: $1
+Senha temporária: $2',
+'passwordreset-emailsent' => 'Foi enviado um e-mail de lembrete.',
+
# Edit page toolbar
'bold_sample' => 'Texto em negrito',
'bold_tip' => 'Texto em negrito',
@@ -808,8 +842,6 @@ Você pode já ter alterado com sucesso a sua senha, ou solicitado uma nova senh
'extlink_tip' => 'Link externo (lembre-se do prefixo http://)',
'headline_sample' => 'Texto do cabeçalho',
'headline_tip' => 'Seção de nível 2',
-'math_sample' => 'Inserir fórmula aqui',
-'math_tip' => 'Fórmula matemática (LaTeX)',
'nowiki_sample' => 'Inserir texto não-formatado aqui',
'nowiki_tip' => 'Ignorar formato wiki',
'image_sample' => 'Exemplo.jpg',
@@ -896,7 +928,7 @@ ou [{{fullurl:{{FULLPAGENAME}}|action=edit}} criar esta página]</span>.',
'noarticletext-nopermission' => 'Não há actualmente texto nesta página.
Você pode [[Special:Search/{{PAGENAME}}|procurar este título de página]] em outras páginas,
ou <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} procurar os registos relacionados] </span>.',
-'userpage-userdoesnotexist' => 'A conta "$1" não se encontra registrada.
+'userpage-userdoesnotexist' => 'A conta "<nowiki>$1</nowiki>" não se encontra registrada.
Verifique se deseja mesmo criar/editar esta página.',
'userpage-userdoesnotexist-view' => 'A conta de usuário "$1" não está registrada.',
'blocked-notice-logextract' => 'Este usuário está atualmente bloqueado.
@@ -933,6 +965,7 @@ Caso continue não funcionando, tente [[Special:UserLogout|sair]] e voltar a ent
Caso continue não funcionando, tente [[Special:UserLogout|desautenticar-se]] e voltar a entrar na sua conta.'''",
'token_suffix_mismatch' => "'''A sua edição foi rejeitada uma vez que seu software de navegação mutilou os sinais de pontuação do sinal de edição. A edição foi rejeitada para evitar perdas no texto da página.
Isso acontece ocasionalmente quando se usa um serviço de proxy anonimizador mal configurado.'''",
+'edit_form_incomplete' => "'''Algumas partes do formulário de edição não chegaram ao servidor; verifique que a sua edição continua intacta e tente novamente, por favor.'''",
'editing' => 'Editando $1',
'editingsection' => 'Editando $1 (seção)',
'editingcomment' => 'Editando $1 (nova seção)',
@@ -1078,16 +1111,16 @@ Você pode visualizá-la; podem existir mais detalhes no [{{fullurl:{{#Special:L
'rev-deleted-no-diff' => "Você não pode ver estas diferenças porque uma das revisões foi '''eliminada'''.
Poderá haver detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de eliminação].",
'rev-suppressed-no-diff' => "Você não pode ver esta comparação porque uma das revisões foi '''eliminada'''.",
-'rev-deleted-unhide-diff' => "Uma das revisões destas diferenças foi '''eliminada'''.
-Poderá haver detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de supressão].
-Por ser um administrador, você ainda pode [$1 ver estas diferenças], se desejar prosseguir.",
-'rev-suppressed-unhide-diff' => "Uma das revisões deste diferencial foi '''suprimido'''.
-Podem haver detalhes no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registo de supressão].
-Como administrador você pode ainda [$1 pode ver o diferencial] se desejar prosseguir.",
-'rev-deleted-diff-view' => "Uma das revisões desta comparação foi '''removida'''.
-Como administrador você ainda pode ver esta comparação; detalhes podem ser contrados no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registro de remoção].",
+'rev-deleted-unhide-diff' => "Uma das revisões desta diferença entre revisões foi '''eliminada'''.
+Podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].
+Pode mesmo assim [$1 ver estas diferenças] se deseja prosseguir.",
+'rev-suppressed-unhide-diff' => "Uma das revisões desta diferença entre revisões foi '''suprimida'''.
+Podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registo de supressões].
+Pode mesmo assim [$1 ver estas diferenças] se deseja prosseguir.",
+'rev-deleted-diff-view' => "Uma das revisões desta diferença entre revisões foi '''eliminada'''.
+Você pode ver a diferença entre revisões; podem existir mais detalhes no [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registo de eliminações].",
'rev-suppressed-diff-view' => "Uma das revisões desta comparação foi '''suprimida''''.
-Como administrador você pode ver esta comparação; detalhes podem ser encontradas no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supressão].",
+Você pode ver esta comparação; detalhes podem ser encontradas no [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registro de supressão].",
'rev-delundel' => 'mostrar/esconder',
'rev-showdeleted' => 'exibir',
'revisiondelete' => 'Eliminar/restaurar edições',
@@ -1166,8 +1199,8 @@ Por favor, verifique os registos.',
# Suppression log
'suppressionlog' => 'Registro de supressões',
-'suppressionlogtext' => 'Abaixo está uma lista das remoções e bloqueios envolvendo conteúdo ocultado por administradores.
-Veja a [[Special:IPBlockList|lista de bloqueios]] para uma lista de banimentos e bloqueios em efeito neste momento.',
+'suppressionlogtext' => 'Abaixo está uma lista das eliminações e bloqueios envolvendo conteúdo ocultado por administradores.
+Veja a [[Special:BlockList|lista de bloqueios]] para uma lista de banimentos e bloqueios em efeito neste momento.',
# History merging
'mergehistory' => 'Fundir histórico de páginas',
@@ -1276,12 +1309,13 @@ Você poderá pesquisar através do Google enquanto isso.
Note que os índices do sistema de busca externo poderão conter referências desatualizadas a {{SITENAME}}.',
# Quickbar
-'qbsettings' => 'Configurações da Barra Rápida',
-'qbsettings-none' => 'Nenhuma',
-'qbsettings-fixedleft' => 'Fixo à esquerda',
-'qbsettings-fixedright' => 'Fixo à direita',
-'qbsettings-floatingleft' => 'Flutuando à esquerda',
-'qbsettings-floatingright' => 'Flutuando à direita',
+'qbsettings' => 'Configurações da Barra Rápida',
+'qbsettings-none' => 'Nenhuma',
+'qbsettings-fixedleft' => 'Fixo à esquerda',
+'qbsettings-fixedright' => 'Fixo à direita',
+'qbsettings-floatingleft' => 'Flutuando à esquerda',
+'qbsettings-floatingright' => 'Flutuando à direita',
+'qbsettings-directionality' => 'Fixado, dependendo da direcionalidade do seu alfabeto e da sua língua',
# Preferences page
'preferences' => 'Preferências',
@@ -1292,9 +1326,10 @@ Note que os índices do sistema de busca externo poderão conter referências de
'changepassword' => 'Alterar senha',
'prefs-skin' => 'Tema',
'skin-preview' => 'Pré-visualização',
-'prefs-math' => 'Matemática',
'datedefault' => 'Sem preferência',
+'prefs-beta' => 'Características beta',
'prefs-datetime' => 'Data e hora',
+'prefs-labs' => 'Características de laboratório',
'prefs-personal' => 'Perfil de usuário',
'prefs-rc' => 'Mudanças recentes',
'prefs-watchlist' => 'Lista de páginas vigiadas',
@@ -1314,10 +1349,8 @@ Note que os índices do sistema de busca externo poderão conter referências de
'prefs-edit-boxsize' => 'Tamanho da janela de edição.',
'rows' => 'Linhas:',
'columns' => 'Colunas:',
-'searchresultshead' => 'Pesquisa',
+'searchresultshead' => 'Pesquisar',
'resultsperpage' => 'Resultados por página:',
-'contextlines' => 'Linhas por resultado:',
-'contextchars' => 'Contexto por linha:',
'stub-threshold' => 'Links para páginas de conteúdo aparecerão <a href="#" class="stub">desta forma</a> se elas possuírem menos de (bytes):',
'stub-threshold-disabled' => 'Desabilitado',
'recentchangesdays' => 'Dias a serem exibidos nas Mudanças recentes:',
@@ -1330,7 +1363,7 @@ Eis um valor gerado aleatoriamente que você pode usar: $1",
'savedprefs' => 'As suas preferências foram salvas.',
'timezonelegend' => 'Fuso horário:',
'localtime' => 'Horário local:',
-'timezoneuseserverdefault' => 'Usa padrão do servidor',
+'timezoneuseserverdefault' => 'Usar padrão da wiki ($1)',
'timezoneuseoffset' => 'Outro (especifique diferença horária)',
'timezoneoffset' => 'Diferença horária¹',
'servertime' => 'Horário do servidor:',
@@ -1379,7 +1412,8 @@ Ela deve ter menos de $1 {{PLURAL:$1|caractere|caracteres}}.',
'email' => 'E-mail',
'prefs-help-realname' => 'O fornecimento de seu nome verdadeiro é opcional.
Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu trabalho.',
-'prefs-help-email' => "O fornecimento de um endereço de ''e-mail'' é opcional, mas permite que uma nova senha lhe seja enviada caso você esqueça sua senha. Você pode ainda preferir deixar que os usuários entrem em contato consigo através de sua página de usuário ou discussão sem ter de revelar sua identidade.",
+'prefs-help-email' => 'O endereço de correio eletrônico é opcional, mas será necessário para recriar sua senha caso esqueça a antiga.',
+'prefs-help-email-others' => 'Você também pode optar por permitir que outros entrem em contato com você através de sua página de usuário ou de discussão sem ter de revelar seus dados pessoais.',
'prefs-help-email-required' => 'O endereço de e-mail é requerido.',
'prefs-info' => 'Informações básicas',
'prefs-i18n' => 'Internacionalização',
@@ -1504,15 +1538,15 @@ Caso decida fornecê-lo, este será utilizado para dar-lhe crédito pelo seu tra
'right-userrights' => 'Editar todos os direitos de usuário',
'right-userrights-interwiki' => 'Editar direitos de usuário de usuários outros sites wiki',
'right-siteadmin' => 'Bloquear e desbloquear o banco de dados',
-'right-reset-passwords' => 'Redefinir a senha de outros usuários',
'right-override-export-depth' => 'Exportar páginas incluindo páginas ligadas até uma profundidade de 5',
'right-sendemail' => 'Enviar email a outros usuários',
# 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' => 'foi alterado o grupo de acesso de $1 (de $2 para $3)',
-'rightsnone' => '(nenhum)',
+'rightslog' => 'Registro de privilégios de usuário',
+'rightslogtext' => 'Este é um registro de mudanças nos privilégios de usuários.',
+'rightslogentry' => 'foi alterado o grupo de acesso de $1 (de $2 para $3)',
+'rightslogentry-autopromote' => 'foi automaticamente promovido de $2 para $3',
+'rightsnone' => '(nenhum)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'ler esta página',
@@ -1634,13 +1668,13 @@ A [[Special:NewFiles|galeria de arquivos novos]] oferece uma listagem mais visua
'minlength1' => 'Os nomes de arquivos devem de ter pelo menos uma letra.',
'illegalfilename' => 'O arquivo "$1" possui caracteres que não são permitidos no título de uma página. Por favor, altere o nome do arquivo e tente carregar novamente.',
'badfilename' => 'O nome do arquivo foi alterado para "$1".',
-'filetype-mime-mismatch' => 'A extensão do arquivo não corresponde ao tipo MIME.',
+'filetype-mime-mismatch' => 'A extensão ".$1" não corresponde ao tipo MIME do arquivo ($2).',
'filetype-badmime' => 'Arquivos de tipo MIME "$1" não são permitidos de serem enviados.',
'filetype-bad-ie-mime' => 'Este arquivo não pode ser carregado porque o Internet Explorer o detectaria como "$1", que é um tipo de arquivo não permitido e potencialmente perigoso.',
'filetype-unwanted-type' => "'''\".\$1\"''' é um tipo de arquivo não desejado.
{{PLURAL:\$3|O tipo preferível é|Os tipos preferíveis são}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' é um tipo proibido de arquivo.
-{{PLURAL:\$3|O tipo permitido é|Os tipos permitidos são}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|não é um tipo de ficheiro permitido|não são tipos de ficheiro permitidos}}.
+{{PLURAL:$3|O tipo de ficheiro permitido é|Os tipos de ficheiro permitidos são}} $2.',
'filetype-missing' => 'O arquivo não possui uma extensão (como, por exemplo, ".jpg").',
'empty-file' => 'O arquivo que você enviou estava vazio.',
'file-too-large' => 'O arquivo que você enviou era demasiado grande.',
@@ -1656,6 +1690,7 @@ A [[Special:NewFiles|galeria de arquivos novos]] oferece uma listagem mais visua
'large-file' => 'É recomendável que os arquivos não sejam maiores que $1; este possui $2.',
'largefileserver' => 'O tamanho deste arquivo é superior ao qual o servidor encontra-se configurado para permitir.',
'emptyfile' => 'O arquivo que está tentando carregar parece encontrar-se vazio. Isto poderá ser devido a um erro na escrita do nome do arquivo. Por favor verifique se realmente deseja carregar este arquivo.',
+'windows-nonascii-filename' => 'A wiki não aceita nomes de arquivos com caracteres especiais.',
'fileexists' => "Já existe um arquivo com este nome.
Por favor, verifique '''<tt>[[:$1]]</tt>''' caso não tenha a certeza se deseja alterar o arquivo atual.
[[$1|thumb]]",
@@ -1690,6 +1725,8 @@ Se você ainda quer carregar o seu arquivo, por favor volte e use um novo nome.
'php-uploaddisabledtext' => 'O carregamento de arquivos via PHP está desativado. Por favor, verifique a configuração file_uploads.',
'uploadscripted' => 'Este arquivo contém HTML ou código que pode ser erradamente interpretado por um navegador web.',
'uploadvirus' => 'O arquivo contém vírus! Detalhes: $1',
+'uploadjava' => 'Este é um arquivo ZIP que contém um arquivo .class de Java.
+Não é permitido o upload de arquivos Java, porque estes podem contornar as restrições de segurança.',
'upload-source' => 'Arquivo de origem',
'sourcefilename' => 'Nome do arquivo de origem:',
'sourceurl' => 'URL de origem:',
@@ -1699,10 +1736,6 @@ Se você ainda quer carregar o seu arquivo, por favor volte e use um novo nome.
'upload-options' => 'Opções de envio',
'watchthisupload' => 'Vigiar este arquivo',
'filewasdeleted' => 'Um arquivo com este nome foi carregado anteriormente e subsequentemente eliminado. Você precisa verificar o $1 antes de proceder ao carregamento novamente.',
-'upload-wasdeleted' => "'''Atenção: Você está enviando um arquivo eliminado anteriormente.'''
-
-Verfique se é apropriado prosseguir enviando este arquivo.
-O registro de eliminação é exibido a seguir, para sua comodidade:",
'filename-bad-prefix' => "O nome do arquivo que você está enviando começa com '''\"\$1\"''', um nome pouco esclarecedor, comumente associado de forma automática por câmeras digitais. Por gentileza, escolha um nome de arquivo mais explicativo.",
'filename-prefix-blacklist' => ' #<!-- deixe esta linha exatamente como está --> <pre>
# A sintaxe é a seguinte:
@@ -1738,12 +1771,29 @@ Por gentileza, entre em contato com um [[Special:ListUsers/sysop|administrador]]
'upload-unknown-size' => 'Tamanho desconhecido',
'upload-http-error' => 'Ocorreu um erro HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Foi encontrado um erro ao abrir o arquivo ZIP para verificação.',
+'zip-wrong-format' => 'O arquivo especificado não é um arquivo ZIP.',
+'zip-bad' => 'O arquivo ZIP se encontra corrompido ou não é legível.
+A sua segurança não pode ser devidamente verificada.',
+'zip-unsupported' => 'Este arquivo ZIP usa funcionalidades ZIP não suportadas pelo MediaWiki.
+A sua segurança não pode ser devidamente verificada.',
+
+# Special:UploadStash
+'uploadstash' => 'Arquivos escondidos',
+'uploadstash-summary' => 'Esta página dá acesso aos arquivos enviados (ou que estão no processo de envio) mas que ainda não foram publicados na wiki. Estes arquivos não são visíveis para ninguém, exceto para o usuário que os enviou.',
+'uploadstash-clear' => 'Apagar os arquivos escondidos',
+'uploadstash-nofiles' => 'Você não tem nenhum arquivo escondido.',
+'uploadstash-badtoken' => 'Não foi possível executar essa operação, talvez porque as suas credenciais de edição expiraram. Tente novamente.',
+'uploadstash-errclear' => 'Não foi possível apagar os arquivos.',
+'uploadstash-refresh' => 'Atualizar a lista de arquivos',
+
# img_auth script messages
'img-auth-accessdenied' => 'Acesso negado',
'img-auth-nopathinfo' => 'Falta PATH_INFO
Seu servidor não está configurado para passar essa informação.
Pode ser baseado em CGI e não suportar img_auth.
-Veja http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Veja a autorização de imagem].',
'img-auth-notindir' => 'O caminho requerido não está no directório de carregamento configurado.',
'img-auth-badtitle' => 'Não é possível criar um título válido a partir de "$1".',
'img-auth-nologinnWL' => 'Você não está logado e "$1" não está na lista branca.',
@@ -1819,7 +1869,7 @@ A lista a seguir mostra apenas {{PLURAL:$1|o primeiro link|os $1 primeiros links
Uma [[Special:WhatLinksHere/$2|listagem completa]] está disponível.',
'nolinkstoimage' => 'Nenhuma página aponta para este arquivo.',
'morelinkstoimage' => 'Ver [[Special:WhatLinksHere/$1|mais links]] para este arquivo.',
-'redirectstofile' => '{{PLURAL:$1|O seguinte arquivo redireciona|Os seguintes arquivos redirecionam}} para este arquivo:',
+'linkstoimage-redirect' => '$1 (redirecionamento de arquivo) $2',
'duplicatesoffile' => '{{PLURAL:$1|O seguinte arquivo é duplicado|Os seguintes arquivos são duplicados}} deste arquivo ([[Special:FileDuplicateSearch/$2|mais detalhes]]):',
'sharedupload' => 'Este arquivo é do $1 e pode ser usado por outros projetos.',
'sharedupload-desc-there' => 'Este arquivo é do $1 e pode ser utilizado por outros projetos.
@@ -1907,17 +1957,18 @@ A descrição na sua [$2 página de descrição de arquivo] é exibida abaixo.',
'statistics-users-active-desc' => 'Usuários que efetuaram uma ação {{PLURAL:$1|no último dia|nos últimos $1 dias}}',
'statistics-mostpopular' => 'Páginas mais visitadas',
-'disambiguations' => 'Página de desambiguações',
+'disambiguations' => 'Páginas com links para páginas de desambiguação',
'disambiguationspage' => 'Template:disambig',
'disambiguations-text' => 'As páginas a seguir ligam a "páginas de desambiguação" ao invés de aos tópicos adequados.<br />
Uma página é considerada como de desambiguação se utilizar uma predefinição que esteja definida em [[MediaWiki:Disambiguationspage]]',
-'doubleredirects' => 'Redirecionamentos duplos',
-'doubleredirectstext' => 'Esta página lista as páginas que redirecionam para outros redirecionamentos.
+'doubleredirects' => 'Redirecionamentos duplos',
+'doubleredirectstext' => 'Esta página lista as páginas que redirecionam para outros redirecionamentos.
Cada linha contém ligações para o primeiro e o segundo redirecionamentos, juntamente com o alvo do segundo redirecionamento, que é geralmente a verdadeira página de destino, para a qual o primeiro redirecionamento deveria apontar.
Entradas <del>riscadas</del> foram resolvidas.',
-'double-redirect-fixed-move' => '[[$1]] foi movido e agora é um redirecionamento para [[$2]]',
-'double-redirect-fixer' => 'Corretor de redirecionamentos',
+'double-redirect-fixed-move' => '[[$1]] foi movido e agora é um redirecionamento para [[$2]]',
+'double-redirect-fixed-maintenance' => 'Corrigindo redirecionamento duplo de [[$1]] para [[$2]].',
+'double-redirect-fixer' => 'Corretor de redirecionamentos',
'brokenredirects' => 'Redirecionamentos quebrados',
'brokenredirectstext' => 'Os seguintes redirecionamentos ligam para páginas inexistentes:',
@@ -1994,6 +2045,7 @@ Por favor note que outros websites podem apontar para um arquivo através de um
'pager-newer-n' => '{{PLURAL:$1|1 recente|$1 recentes}}',
'pager-older-n' => '{{PLURAL:$1|1 antiga|$1 antigas}}',
'suppress' => 'Supervisor',
+'querypage-disabled' => 'Esta página especial está desativada para não prejudicar o desempenho.',
# Book sources
'booksources' => 'Fontes de livros',
@@ -2044,12 +2096,13 @@ Veja também [[Special:WantedCategories|categorias pedidas]].',
'sp-deletedcontributions-contribs' => 'contribuições',
# Special:LinkSearch
-'linksearch' => 'Ligações externas',
+'linksearch' => 'Pesquisa de ligações externas',
'linksearch-pat' => 'Procurar padrão:',
'linksearch-ns' => 'Espaço nominal:',
'linksearch-ok' => 'Pesquisar',
-'linksearch-text' => 'É possível utilizar "caracteres mágicos" como em "*.wikipedia.org".<br />
-Protocolos suportados: <tt>$1</tt>',
+'linksearch-text' => 'É possível usar caracteres curinga, como "*.wikipedia.org".
+É necessário, pelo menos, um domínio de nível superior, por exemplo "*.org".<br />
+Protocolos suportados: <tt>$1</tt> (não adicionado nenhum desses em sua pesquisa).',
'linksearch-line' => '$1 está lincado a partir de $2',
'linksearch-error' => "\"Caracteres mágicos\" (''wildcards'') só podem ser suados no início do endereço.",
@@ -2110,6 +2163,10 @@ O endereço eletrônico que você inseriu em [[Special:Preferences|suas preferê
'noemailtext' => 'Este usuário não especificou um endereço de e-mail válido.',
'nowikiemailtitle' => 'E-mail não permitido',
'nowikiemailtext' => 'Este usuário optou por não receber e-mail de outros usuários.',
+'emailnotarget' => 'O nome do destinatário não existe ou é inválido.',
+'emailtarget' => 'Insira o nome de usuário do destinatário',
+'emailusername' => 'Nome de usuário:',
+'emailusernamesubmit' => 'Enviar',
'email-legend' => 'Enviar uma mensagem eletrônica para outro usuário da {{SITENAME}}',
'emailfrom' => 'De:',
'emailto' => 'Para:',
@@ -2134,10 +2191,10 @@ O endereço eletrônico que você inseriu em [[Special:Preferences|suas preferê
'watchlistanontext' => 'Por favor $1 para ver ou editar os itens na sua lista de páginas vigiadas.',
'watchnologin' => 'Não está autenticado',
'watchnologintext' => 'Você precisa estar [[Special:UserLogin|autenticado]] para modificar a sua lista de páginas vigiadas.',
-'addedwatch' => 'Adicionado à lista',
+'addwatch' => 'Adicionar às páginas vigiadas',
'addedwatchtext' => "A página \"[[:\$1]]\" foi adicionada à sua [[Special:Watchlist|lista de páginas vigiadas]].
Modificações futuras em tal página e páginas de discussão a ela associadas serão listadas lá, e a página aparecerá em '''negrito''' na [[Special:RecentChanges|lista de mudanças recentes]], para que você possa encontrá-la com maior facilidade.",
-'removedwatch' => 'Removida da lista de páginas vigiadas',
+'removewatch' => 'Remover das páginas vigiadas',
'removedwatchtext' => 'A página "[[:$1]]" foi removida de sua [[Special:Watchlist|lista de páginas vigiadas]].',
'watch' => 'Vigiar',
'watchthispage' => 'Vigiar esta página',
@@ -2158,8 +2215,9 @@ Modificações futuras em tal página e páginas de discussão a ela associadas
'watchlist-options' => 'Opções da lista de páginas vigiadas',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Vigiando...',
-'unwatching' => 'Deixando de vigiar...',
+'watching' => 'Vigiando...',
+'unwatching' => 'Deixando de vigiar...',
+'watcherrortext' => 'Ocorreu um erro ao alterar a configuração da sua lista de páginas vigiadas para "$1".',
'enotif_mailer' => '{{SITENAME}} Email de Notificação',
'enotif_reset' => 'Marcar todas páginas como visitadas',
@@ -2174,30 +2232,33 @@ Modificações futuras em tal página e páginas de discussão a ela associadas
'enotif_body' => 'Caro(a) $WATCHINGUSERNAME,
-A página $PAGETITLE na {{SITENAME}} foi $CHANGEDORCREATED a $PAGEEDITDATE por $PAGEEDITOR; consulte $PAGETITLE_URL para a versão atual.
+A página $PAGETITLE da {{SITENAME}} foi $CHANGEDORCREATED a $PAGEEDITDATE por $PAGEEDITOR; consulte $PAGETITLE_URL para ver a versão atual.
$NEWPAGE
-Sumário de edição: $PAGESUMMARY $PAGEMINOREDIT
+Resumo da edição: $PAGESUMMARY $PAGEMINOREDIT
Contate o editor:
e-mail: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Não haverá mais notificações no caso de futuras alterações a não ser que visite esta página.
-Você pode também reativar as notificações para todas as suas páginas vigiadas na sua lista de páginas vigiadas.
+Até que visite esta página, você não receberá mais notificações das alterações futuras.
+Você pode também reativar as notificações para todas páginas na sua lista de páginas vigiadas.
- O seu sistema de notificação amigável da {{SITENAME}}
+O seu sistema de notificação amigável da {{SITENAME}}
--
-Para alterar as configurações de sua lista de páginas vigiadas, visite
-{{fullurl:Special:Watchlist/edit}}
+Para alterar as suas preferências das notificações por correio electrónico, visite
+{{canonicalurl:{{#special:Preferences}}}}
+
+Para alterar as suas preferências das páginas vigiadas, visite
+{{canonicalurl:{{#special:EditWatchlist}}}}
-Para retirar esta página de sua lista de páginas vigiadas, visite
+Para retirar a página da lista de páginas vigiadas, visite
$UNWATCHURL
-Comentários e assistência:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+Para comentários e pedidos de ajuda:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Eliminar página',
@@ -2213,7 +2274,7 @@ Comentários e assistência:
Por favor, confirme que possui a intenção de fazer isto, que compreende as consequências e que encontra-se a fazer isto de acordo com as [[{{MediaWiki:Policy-url}}|políticas]] do projeto.',
'actioncomplete' => 'Ação completada',
'actionfailed' => 'A ação falhou',
-'deletedtext' => '"<nowiki>$1</nowiki>" foi eliminada.
+'deletedtext' => '"$1" foi eliminada.
Consulte $2 para um registro de eliminações recentes.',
'deletedarticle' => 'apagou "[[$1]]"',
'suppressedarticle' => 'suprimiu "[[$1]]"',
@@ -2272,7 +2333,7 @@ Consulte a [[Special:ProtectedPages|lista de páginas protegidas]] para ver as p
'protect_expiry_invalid' => 'O tempo de expiração fornecido é inválido.',
'protect_expiry_old' => 'O tempo de expiração fornecido se situa no passado.',
'protect-unchain-permissions' => 'Desbloquear opções adicionais de proteção',
-'protect-text' => "Você pode, nesta página, alterar o nível de proteção para '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Você pode, nesta página, alterar o nível de proteção para '''$1'''.",
'protect-locked-blocked' => "Você não poderá alterar os níveis de proteção enquanto estiver bloqueado. Esta é a configuração atual para a página '''$1''':",
'protect-locked-dblock' => "Não é possível alterar os níveis de proteção, uma vez que a base de dados se encontra trancada.
Esta é a configuração atual para a página '''$1''':",
@@ -2325,9 +2386,8 @@ Esta é a configuração atual para a página '''$1''':",
'undeletepagetext' => '{{PLURAL:$1|A seguinte página foi eliminada|As $1 páginas seguintes foram eliminadas}}, mas ainda {{PLURAL:$1|permanece|permanecem}} no arquivo e poderem ser restauradas.
O arquivo pode ser limpo periodicamente.',
'undelete-fieldset-title' => 'Restaurar edições',
-'undeleteextrahelp' => "Para restaurar todo o histórico de edições desta página, deixe todas as caixas de seleção desmarcadas e clique em '''''Restaurar'''''.
-Para efetuar uma restauração seletiva, selecione as caixas correspondentes às edições a serem restauradas e clique em '''''Restaurar'''''.
-Clicar em '''''Limpar''''' irá limpar o campo de comentário e todas as caixas de seleção.",
+'undeleteextrahelp' => "Para restaurar o histórico de edições completo desta página, desmarque todas as caixas de seleção e clique '''''{{int:undeletebtn}}'''''.
+Para efectuar uma restauração seletiva, marque as caixas correspondentes às edições que pretende restaurar e clique '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|edição disponível|edições disponíveis}}',
'undeletehistory' => 'Se restaurar a página, todas as revisões serão restauradas para o histórico.
Se uma nova página foi criada com o mesmo nome desde a eliminação, as edições restauradas aparecerão no histórico anterior.',
@@ -2368,9 +2428,12 @@ $1',
'undelete-show-file-submit' => 'Sim',
# Namespace form on various pages
-'namespace' => 'Espaço nominal:',
-'invert' => 'Inverter seleção',
-'blanknamespace' => '(Principal)',
+'namespace' => 'Espaço nominal:',
+'invert' => 'Inverter seleção',
+'tooltip-invert' => 'Marque esta caixa para esconder as alterações a páginas no espaço nominal selecionado (e no espaço nominal associado, se escolheu fazê-lo)',
+'namespace_association' => 'Espaço nominal associado',
+'tooltip-namespace_association' => 'Marque esta caixa para incluir também o espaço nominal de conteúdo ou de discussão associado à sua seleção',
+'blanknamespace' => '(Principal)',
# Contributions
'contributions' => 'Contribuições do usuário',
@@ -2419,12 +2482,14 @@ Segue, para referência, a entrada mais recente no registro de bloqueios:',
'whatlinkshere-filters' => 'Filtros',
# Block/unblock
+'autoblockid' => 'Autobloqueio #$1',
+'block' => 'Bloquear usuário',
+'unblock' => 'Desbloquear usuário',
'blockip' => 'Bloquear usuário',
'blockip-title' => 'Bloquear usuário',
'blockip-legend' => 'Bloquear usuário',
'blockiptext' => 'Utilize o formulário abaixo para bloquear o acesso à escrita de um endereço específico de IP ou nome de usuário.
Isto só deve ser feito para prevenir vandalismo, e de acordo com a [[{{MediaWiki:Policy-url}}|política]]. Preencha com um motivo específico a seguir (por exemplo, citando páginas que sofreram vandalismo).',
-'ipaddress' => 'Endereço de IP:',
'ipadressorusername' => 'Endereço de IP ou nome de usuário:',
'ipbexpiry' => 'Expiração:',
'ipbreason' => 'Motivo:',
@@ -2437,7 +2502,7 @@ Isto só deve ser feito para prevenir vandalismo, e de acordo com a [[{{MediaWik
** Comportamento intimidador/inoportuno
** Uso abusivo de contas múltiplas
** Nome de usuário inaceitável',
-'ipbanononly' => 'Bloquear apenas usuário anônimos',
+'ipb-hardblock' => 'Impedir que usuários autenticados editem a partir deste endereço IP',
'ipbcreateaccount' => 'Prevenir criação de conta de usuário',
'ipbemailban' => 'Impedir usuário de enviar e-mail',
'ipbenableautoblock' => 'Bloquear automaticamente o endereço de IP mais recente usado por este usuário e todos os IPs subseqüentes dos quais ele tentar editar',
@@ -2448,12 +2513,15 @@ Isto só deve ser feito para prevenir vandalismo, e de acordo com a [[{{MediaWik
'ipbotherreason' => 'Outro motivo/motivo adicional:',
'ipbhidename' => 'Ocultar nome de usuário em edições e listas',
'ipbwatchuser' => 'Vigiar a página de usuário e a página de discussão deste usuário',
-'ipballowusertalk' => 'Permitir que este usuário edite sua própria página de discussão mesmo estando bloqueado',
+'ipb-disableusertalk' => 'Impedir que este usuário edite a sua página de discussão enquanto estiver bloqueado',
'ipb-change-block' => 'Bloquear o usuário novamente com estes parâmetros',
+'ipb-confirm' => 'Confirmar bloqueio',
'badipaddress' => 'Endereço de IP inválido',
'blockipsuccesssub' => 'Bloqueio bem sucedido',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] foi bloqueado.<br />
Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para rever os bloqueios.',
+'ipb-blockingself' => 'Você está prestes a bloquear-se a si próprio. Você tem a certeza de que pretende fazê-lo?',
+'ipb-confirmhideuser' => 'Você está prestes a bloquear um utilizador com "Ocultar nome de utilizador/IP" ativado. Isto irá suprimir o nome do usuário de todas as listas e entradas dos registos. Tem a certeza de que pretende fazê-lo?',
'ipb-edit-dropdown' => 'Editar motivos de bloqueio',
'ipb-unblock-addr' => 'Desbloquear $1',
'ipb-unblock' => 'Desbloquear um usuário ou endereço de IP',
@@ -2463,17 +2531,23 @@ Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para rever os bloquei
'unblockiptext' => 'Utilize o formulário a seguir para restaurar o acesso à escrita para um endereço de IP ou usuário previamente bloqueado.',
'ipusubmit' => 'Remover este bloqueio',
'unblocked' => '[[User:$1|$1]] foi desbloqueado',
+'unblocked-range' => '$1 foi desbloqueado',
'unblocked-id' => 'O bloqueio de $1 foi removido com sucesso',
+'blocklist' => 'Usuários bloqueados',
'ipblocklist' => 'Usuários bloqueados',
'ipblocklist-legend' => 'Procurar por um usuário bloqueado',
-'ipblocklist-username' => 'Usuário ou endereço de IP:',
-'ipblocklist-sh-userblocks' => '$1 bloqueios de contas',
-'ipblocklist-sh-tempblocks' => '$1 bloqueios temporários',
-'ipblocklist-sh-addressblocks' => '$1 bloqueios de IP único',
+'blocklist-userblocks' => 'Esconder bloqueios de contas',
+'blocklist-tempblocks' => 'Esconder bloqueios temporários',
+'blocklist-addressblocks' => 'Esconder bloqueios de IP único',
+'blocklist-timestamp' => 'Data e hora',
+'blocklist-target' => 'Destinatário',
+'blocklist-expiry' => 'Expira',
+'blocklist-by' => 'Administrador que realizou o bloqueio',
+'blocklist-params' => 'Parâmetros do bloqueio',
+'blocklist-reason' => 'Motivo',
'ipblocklist-submit' => 'Pesquisar',
'ipblocklist-localblock' => 'Bloqueio local',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Outro bloqueio|Outros bloqueios}}',
-'blocklistline' => '$1, $2 bloqueou $3 ($4)',
'infiniteblock' => 'infinito',
'expiringblock' => 'expira em $1 às $2',
'anononlyblock' => 'anôn. apenas',
@@ -2497,7 +2571,7 @@ O registro de supressão é fornecido abaixo para referência:',
'reblock-logentry' => 'modificou parâmetros de bloqueio para [[$1]] com um tempo de expiração de $2 $3',
'blocklogtext' => 'Este é um registro de ações de bloqueio e desbloqueio.
Endereços IP sujeitos a bloqueio automático não são listados.
-Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para obter a lista de bloqueios e banimentos atualmente válidos.',
+Consulte a [[Special:BlockList|lista de IPs bloqueados]] para obter a lista de bloqueios e banimentos atualmente válidos.',
'unblocklogentry' => 'desbloqueou $1',
'block-log-flags-anononly' => 'apenas usuários anônimos',
'block-log-flags-nocreate' => 'criação de contas desabilitada',
@@ -2511,9 +2585,9 @@ Consulte a [[Special:IPBlockList|lista de IPs bloqueados]] para obter a lista de
'ipb_expiry_temp' => 'Bloqueios com nome de usuário ocultado devem ser permanentes.',
'ipb_hide_invalid' => 'Não foi possível suprimir esta conta; ela poderá ter demasiadas edições.',
'ipb_already_blocked' => '"$1" já se encontra bloqueado',
-'ipb-needreblock' => '== Já se encontra bloqueado ==
-$1 já se encontra bloqueado. Deseja alterar as configurações?',
+'ipb-needreblock' => '$1 já se encontra bloqueado. Deseja alterar as configurações?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Outro bloqueio|Outros bloqueios}}',
+'unblock-hideuser' => 'Você não pode desbloquear este usuário, porque o nome de usuário dele foi ocultado.',
'ipb_cant_unblock' => 'Erro: Bloqueio com ID $1 não encontrado. Poderá já ter sido desbloqueado.',
'ipb_blocked_as_range' => 'Erro: O IP $1 não se encontra bloqueado de forma direta, não podendo ser desbloqueado deste modo. Se encontra bloqueado como parte do "range" $2, o qual pode ser desbloqueado.',
'ip_range_invalid' => 'Gama de IPs inválida.',
@@ -2549,6 +2623,7 @@ Por favor, confirme que realmente pretende fazer isso.',
'unlockdbsuccesstext' => 'O banco de dados foi desbloqueado.',
'lockfilenotwritable' => 'O arquivo de bloqueio da base de dados não pode ser escrito. Para bloquear ou desbloquear a base de dados, este precisa de poder ser escrito pelo servidor Web.',
'databasenotlocked' => 'A base de dados não encontra-se bloqueada.',
+'lockedbyandtime' => '(por $1 em $2 às $3)',
# Move page
'move-page' => 'Mover $1',
@@ -2665,7 +2740,7 @@ Se desejar, pode utilizar uma ligação (por exemplo, [[{{#Special:Export}}/{{Me
'allmessagesdefault' => 'Texto padrão',
'allmessagescurrent' => 'Texto atual',
'allmessagestext' => 'Esta é uma lista de todas as mensagens de sistema disponíveis no espaço nominal {{ns:mediawiki}}.
-Acesse [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] caso deseje contribuir para traduções do MediaWiki feitas para uso geral.',
+Acesse [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] caso deseje contribuir para traduções do MediaWiki feitas para uso geral.',
'allmessagesnotsupportedDB' => "Esta página não pode ser utilizada, uma vez que '''\$wgUseDatabaseMessages''' foi desativado.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtrar por estado de personalização:',
@@ -2819,9 +2894,7 @@ Salve o arquivo no seu computador e importe-o aqui.',
'vector.js' => '/* Qualquer JavaScript aqui colocado afetará os usuários do skin Vector */',
# Metadata
-'nodublincore' => 'Os metadados RDF para Dublin Core estão desabilitados neste servidor.',
-'nocreativecommons' => 'Os metadados RDF para Creative Commons estão desabilitados neste servidor.',
-'notacceptable' => 'O servidor não pode fornecer os dados em um formato que o seu cliente possa ler.',
+'notacceptable' => 'O servidor não pode fornecer os dados em um formato que o seu cliente possa ler.',
# Attribution
'anonymous' => '{{PLURAL:$1|Usuário anônimo|Usuários anônimos}} da {{SITENAME}}',
@@ -2845,12 +2918,17 @@ Tal bloqueio foi provavelmente causado por uma ligação para um ''website'' ext
'spam_blanking' => 'Todas revisões contendo hiperligações para $1, limpando',
# Info page
-'infosubtitle' => 'Informação para página',
-'numedits' => 'Número de edições (página): $1',
-'numtalkedits' => 'Número de edições (página de discussão): $1',
-'numwatchers' => 'Número de pessoas vigiando: $1',
-'numauthors' => 'Número de autores distintos (página): $1',
-'numtalkauthors' => 'Número de autores distintos (página de discussão): $1',
+'pageinfo-title' => 'Informações sobre "$1"',
+'pageinfo-header-edits' => 'Edições',
+'pageinfo-header-watchlist' => 'Páginas vigiadas',
+'pageinfo-header-views' => 'Visitas',
+'pageinfo-subjectpage' => 'Página',
+'pageinfo-talkpage' => 'Página de discussão',
+'pageinfo-watchers' => 'Número de pessoas vigiando',
+'pageinfo-edits' => 'Número de edições',
+'pageinfo-authors' => 'Número de autores individuais',
+'pageinfo-views' => 'Número de visitas',
+'pageinfo-viewsperedit' => 'Visitas por edição',
# Skin names
'skinname-standard' => 'Clássico',
@@ -2862,26 +2940,6 @@ Tal bloqueio foi provavelmente causado por uma ligação para um ''website'' ext
'skinname-simple' => 'Simples',
'skinname-modern' => 'Moderno',
-# Math options
-'mw_math_png' => 'Gerar sempre como PNG',
-'mw_math_simple' => 'HTML caso seja simples, caso contrário, PNG',
-'mw_math_html' => 'HTML se possível, caso contrário, PNG',
-'mw_math_source' => 'Deixar como TeX (para navegadores de texto)',
-'mw_math_modern' => 'Recomendado para navegadores modernos',
-'mw_math_mathml' => 'MathML se possível (experimental)',
-
-# Math errors
-'math_failure' => 'Falhou ao verificar gramática',
-'math_unknown_error' => 'Erro desconhecido',
-'math_unknown_function' => 'Função desconhecida',
-'math_lexing_error' => 'Erro léxico',
-'math_syntax_error' => 'Erro de sintaxe',
-'math_image_error' => 'Falha na conversão para PNG;
-verifique se o latex, dvips, gs e convert estão corretamente instalados',
-'math_bad_tmpdir' => 'Ocorreram problemas na criação ou escrita no diretório temporário math',
-'math_bad_output' => 'Ocorreram problemas na criação ou escrita no diretório de resultados math',
-'math_notexvc' => 'O executável texvc não foi encontrado. Consulte math/README para instruções da configuração.',
-
# Patrolling
'markaspatrolleddiff' => 'Marcar como verificado',
'markaspatrolledtext' => 'Marcar esta página como verificada',
@@ -2917,22 +2975,25 @@ $1',
'nextdiff' => 'Edição posterior →',
# Media information
-'mediawarning' => "'''Aviso''': Este tipo de arquivo pode conter código malicioso.
+'mediawarning' => "'''Aviso''': Este tipo de arquivo pode conter código malicioso.
Executá-lo poderá comprometer a segurança do seu sistema.",
-'imagemaxsize' => "Limite de tamanho de imagem:<br />''(para páginas de descrição de arquivos)''",
-'thumbsize' => 'Tamanho de miniaturas:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|página|páginas}}',
-'file-info' => 'tamanho: $1, tipo MIME: $2',
-'file-info-size' => '$1 × $2 pixels, tamanho: $3, tipo MIME: $4',
-'file-nohires' => '<small>Sem resolução maior disponível.</small>',
-'svg-long-desc' => 'arquivo SVG, de $1 × $2 pixels, tamanho: $3',
-'show-big-image' => 'Resolução completa',
-'show-big-image-thumb' => '<small>Tamanho desta previsão: $1 × $2 pixels</small>',
-'file-info-gif-looped' => 'cíclico',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|quadro|quadros}}',
-'file-info-png-looped' => 'cíclico',
-'file-info-png-repeat' => 'tocado $1 {{PLURAL:$1|vez|vezes}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|quadro|quadros}}',
+'imagemaxsize' => "Limite de tamanho de imagem:<br />''(para páginas de descrição de arquivos)''",
+'thumbsize' => 'Tamanho de miniaturas:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|página|páginas}}',
+'file-info' => 'tamanho: $1, tipo MIME: $2',
+'file-info-size' => '$1 × $2 pixels, tamanho: $3, tipo MIME: $4',
+'file-info-size-pages' => '$1 × $2 pixels, tamanho do arquivo: $3, tipo MIME: $4, $5 {{PLURAL:$5|página|páginas}}',
+'file-nohires' => '<small>Sem resolução maior disponível.</small>',
+'svg-long-desc' => 'arquivo SVG, de $1 × $2 pixels, tamanho: $3',
+'show-big-image' => 'Resolução completa',
+'show-big-image-preview' => '<small>Tamanho desta previsualização: $1.</small>',
+'show-big-image-other' => '<small>Outras resoluções: $1.</small>',
+'show-big-image-size' => '$1 × $2 pixels',
+'file-info-gif-looped' => 'cíclico',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|quadro|quadros}}',
+'file-info-png-looped' => 'cíclico',
+'file-info-png-repeat' => 'tocado $1 {{PLURAL:$1|vez|vezes}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|quadro|quadros}}',
# Special:NewFiles
'newimages' => 'Galeria de novos arquivos',
@@ -2959,14 +3020,20 @@ Qualquer ligação posterior na mesma linha são consideradas como exceções, o
Caso o arquivo tenha sido modificado a partir do seu estado original, alguns detalhes poderão não refletir completamente as mudanças efetuadas.",
'metadata-expand' => 'Mostrar detalhes adicionais',
'metadata-collapse' => 'Esconder detalhes restantes',
-'metadata-fields' => 'Os campos de metadados EXIF listados nesta mensagem poderão estar presente na exibição da página de imagem quando a tabela de metadados estiver no modo "expandida". Outros poderão estar escondidos por padrão.
+'metadata-fields' => 'Os campos de metadados de imagens listados nesta mensagem serão incluídos na página de descrição da imagem quando a tabela de metadados estiver recolhida. Por omissão, outros campos estarão ocultos.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Largura',
@@ -2981,13 +3048,11 @@ Caso o arquivo tenha sido modificado a partir do seu estado original, alguns det
'exif-ycbcrpositioning' => 'Posicionamento Y e C',
'exif-xresolution' => 'Resolução horizontal',
'exif-yresolution' => 'Resolução vertical',
-'exif-resolutionunit' => 'Unidade de resolução X e Y',
'exif-stripoffsets' => 'Localização de dados da imagem',
'exif-rowsperstrip' => 'Número de linhas por tira',
'exif-stripbytecounts' => 'Bytes por tira comprimida',
'exif-jpeginterchangeformat' => 'Desvio para SOI de JPEG',
'exif-jpeginterchangeformatlength' => 'Bytes de dados JPEG',
-'exif-transferfunction' => 'Função de transferência',
'exif-whitepoint' => 'Cromaticidade do ponto branco',
'exif-primarychromaticities' => 'Cromaticidades primárias',
'exif-ycbcrcoefficients' => 'Coeficientes da matriz de transformação do espaço de cores',
@@ -3006,7 +3071,6 @@ Caso o arquivo tenha sido modificado a partir do seu estado original, alguns det
'exif-compressedbitsperpixel' => 'Modo de compressão de imagem',
'exif-pixelydimension' => 'Largura da imagem',
'exif-pixelxdimension' => 'Altura da imagem',
-'exif-makernote' => 'Anotações do fabricante',
'exif-usercomment' => 'Comentários de usuários',
'exif-relatedsoundfile' => 'arquivo áudio relacionado',
'exif-datetimeoriginal' => 'Data e hora de geração de dados',
@@ -3020,7 +3084,6 @@ Caso o arquivo tenha sido modificado a partir do seu estado original, alguns det
'exif-exposureprogram' => 'Programa de exposição',
'exif-spectralsensitivity' => 'Sensibilidade espectral',
'exif-isospeedratings' => 'Taxa de velocidade ISO',
-'exif-oecf' => 'Fator de conversão optoeletrônica.',
'exif-shutterspeedvalue' => 'Velocidade do obturador (APEX)',
'exif-aperturevalue' => 'Abertura APEX',
'exif-brightnessvalue' => 'Brilho',
@@ -3033,7 +3096,6 @@ Caso o arquivo tenha sido modificado a partir do seu estado original, alguns det
'exif-focallength' => 'Comprimento de foco da lente',
'exif-subjectarea' => 'Ãrea de sujeito',
'exif-flashenergy' => 'Energia do flash',
-'exif-spatialfrequencyresponse' => 'Resposta em frequência espacial',
'exif-focalplanexresolution' => 'Resolução do plano focal X',
'exif-focalplaneyresolution' => 'Resolução do plano focal Y',
'exif-focalplaneresolutionunit' => 'Unidade de resolução do plano focal',
@@ -3042,7 +3104,6 @@ Caso o arquivo tenha sido modificado a partir do seu estado original, alguns det
'exif-sensingmethod' => 'Método de sensação',
'exif-filesource' => 'Fonte do arquivo',
'exif-scenetype' => 'Tipo de cena',
-'exif-cfapattern' => 'padrão CFA',
'exif-customrendered' => 'Processamento de imagem personalizado',
'exif-exposuremode' => 'Modo de exposição',
'exif-whitebalance' => 'Balanço do branco',
@@ -3087,10 +3148,79 @@ Caso o arquivo tenha sido modificado a partir do seu estado original, alguns det
'exif-gpsareainformation' => 'Nome da área do GPS',
'exif-gpsdatestamp' => 'Data do GPS',
'exif-gpsdifferential' => 'Correção do diferencial do GPS',
+'exif-jpegfilecomment' => 'Comentário de arquivo JPEG',
+'exif-keywords' => 'Palavras-chave',
+'exif-worldregioncreated' => 'Região do mundo onde a fotografia foi tirada',
+'exif-countrycreated' => 'País onde a fotografia foi tirada',
+'exif-countrycodecreated' => 'Código do país onde a fotografia foi tirada',
+'exif-provinceorstatecreated' => 'Província ou estado onde a fotografia foi tirada',
+'exif-citycreated' => 'Cidade onde a fotografia foi tirada',
+'exif-sublocationcreated' => 'Parte da cidade onde a fotografia foi tirada',
+'exif-worldregiondest' => 'Região do mundo fotografada',
+'exif-countrydest' => 'País fotografado',
+'exif-countrycodedest' => 'Código do país fotografado',
+'exif-provinceorstatedest' => 'Província ou estado fotografado',
+'exif-citydest' => 'Cidade fotografada',
+'exif-sublocationdest' => 'Parte da cidade fotografada',
'exif-objectname' => 'Título curto',
+'exif-specialinstructions' => 'Instruções especiais',
+'exif-headline' => 'Título',
+'exif-credit' => 'Atribuição/Fornecedor',
+'exif-source' => 'Fonte',
+'exif-editstatus' => 'Estatuto editorial da imagem',
+'exif-urgency' => 'Urgência',
+'exif-fixtureidentifier' => 'Nome da coluna',
+'exif-locationdest' => 'Localização representada',
+'exif-locationdestcode' => 'Código da localização representada',
+'exif-objectcycle' => 'Período do dia para a qual o conteúdo está direcionado',
+'exif-contact' => 'Informações para contato',
+'exif-writer' => 'Escritor',
+'exif-languagecode' => 'Língua',
+'exif-iimversion' => 'Versão IIM',
+'exif-iimcategory' => 'Categoria',
+'exif-iimsupplementalcategory' => 'Categorias suplementares',
+'exif-datetimeexpires' => 'Não utilizar após',
+'exif-datetimereleased' => 'Lançado em',
+'exif-originaltransmissionref' => 'Código original do local de transmissão',
+'exif-identifier' => 'Identificador',
+'exif-lens' => 'Lente usada',
+'exif-serialnumber' => 'Número de série da câmera',
+'exif-cameraownername' => 'Proprietário da câmara',
+'exif-label' => 'Etiqueta',
+'exif-datetimemetadata' => 'Data da última modificação dos metadados',
+'exif-nickname' => 'Nome informal da imagem',
+'exif-rating' => 'Classificação (max. 5)',
+'exif-rightscertificate' => 'Certificado de gestão de direitos',
+'exif-copyrighted' => 'Estado dos direitos autorais',
+'exif-copyrightowner' => 'Titular dos direitos autorais',
+'exif-usageterms' => 'Termos de uso',
+'exif-webstatement' => 'Declaração na internet dos direitos autorais',
+'exif-originaldocumentid' => 'Identificação exclusiva do documento original',
+'exif-licenseurl' => 'URL da licença',
+'exif-morepermissionsurl' => 'Informações para licenciamento alternativo',
+'exif-attributionurl' => 'Ao reutilizar esta obra, coloque um link para',
+'exif-preferredattributionname' => 'Ao reutilizar esta obra, faça a atribuição a',
+'exif-pngfilecomment' => 'Comentário de arquivo PNG',
+'exif-disclaimer' => 'Exoneração de responsabilidade',
+'exif-contentwarning' => 'Aviso sobre conteúdo',
+'exif-giffilecomment' => 'Comentário de arquivo GIF',
+'exif-intellectualgenre' => 'Tipo de item',
+'exif-subjectnewscode' => 'Código do tema',
+'exif-scenecode' => 'Código de cena IPTC',
+'exif-event' => 'Evento retratado',
+'exif-organisationinimage' => 'Organização retratada',
+'exif-personinimage' => 'Pessoa retratada',
+'exif-originalimageheight' => 'Altura da imagem antes de ser cortada',
+'exif-originalimagewidth' => 'Largura da imagem antes de ser cortada',
# EXIF attributes
'exif-compression-1' => 'Sem compressão',
+'exif-compression-2' => 'CCITT Grupo 3 Codificação run length de Huffman modificado unidimensional',
+'exif-compression-3' => 'CCITT Grupo 3 codificação de fax',
+'exif-compression-4' => 'CCITT Grupo 4 codificação de fax',
+
+'exif-copyrighted-true' => 'Direitos autorais reservados',
+'exif-copyrighted-false' => 'Domínio público',
'exif-unknowndate' => 'Data desconhecida',
@@ -3106,6 +3236,8 @@ Caso o arquivo tenha sido modificado a partir do seu estado original, alguns det
'exif-planarconfiguration-1' => 'formato irregular',
'exif-planarconfiguration-2' => 'formato plano',
+'exif-colorspace-65535' => 'Descalibrada',
+
'exif-componentsconfiguration-0' => 'não existe',
'exif-exposureprogram-0' => 'Não definido',
@@ -3219,6 +3351,10 @@ Caso o arquivo tenha sido modificado a partir do seu estado original, alguns det
'exif-gpslongitude-e' => 'Longitude Leste',
'exif-gpslongitude-w' => 'Longitude Oeste',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metro|metros}} acima do nível do mar',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metro|metros}} abaixo do nível do mar',
+
'exif-gpsstatus-a' => 'Medição em progresso',
'exif-gpsstatus-v' => 'Interoperabilidade de medição',
@@ -3230,21 +3366,73 @@ Caso o arquivo tenha sido modificado a partir do seu estado original, alguns det
'exif-gpsspeed-m' => 'Milhas por hora',
'exif-gpsspeed-n' => 'Nós',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Quilômetros',
+'exif-gpsdestdistance-m' => 'Milhas',
+'exif-gpsdestdistance-n' => 'Milhas náuticas',
+
+'exif-gpsdop-excellent' => 'Excelente ($1)',
+'exif-gpsdop-good' => 'Bom ($1)',
+'exif-gpsdop-moderate' => 'Satisfatório ($1)',
+'exif-gpsdop-fair' => 'Aceitável ($1)',
+'exif-gpsdop-poor' => 'Fraco ($1)',
+
+'exif-objectcycle-a' => 'Só de manhã',
+'exif-objectcycle-p' => 'Só à tarde/noite',
+'exif-objectcycle-b' => 'De manhã e à tarde/noite',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Direção real',
'exif-gpsdirection-m' => 'Direção magnética',
+'exif-ycbcrpositioning-1' => 'Centradas',
+'exif-ycbcrpositioning-2' => 'Co-localizada',
+
+'exif-dc-contributor' => 'Colaboradores',
+'exif-dc-coverage' => 'Âmbito espacial ou temporal do conteúdo',
+'exif-dc-date' => 'Data(s)',
+'exif-dc-publisher' => 'Editora',
+'exif-dc-relation' => 'Conteúdos relacionados',
+'exif-dc-rights' => 'Direitos',
+'exif-dc-source' => 'Imagem fonte',
+'exif-dc-type' => 'Tipo de mídia',
+
+'exif-rating-rejected' => 'Rejeitado',
+
+'exif-isospeedratings-overflow' => 'Maior que 65535',
+
+'exif-iimcategory-ace' => 'Artes, cultura e entretenimento',
+'exif-iimcategory-clj' => 'Lei e crime',
+'exif-iimcategory-dis' => 'Desastres e acidentes',
+'exif-iimcategory-fin' => 'Economia e negócios',
+'exif-iimcategory-edu' => 'Educação',
+'exif-iimcategory-evn' => 'Meio ambiente',
+'exif-iimcategory-hth' => 'Saúde',
+'exif-iimcategory-hum' => 'Interesse humano',
+'exif-iimcategory-lab' => 'Trabalho',
+'exif-iimcategory-lif' => 'Estilo de vida e lazer',
+'exif-iimcategory-pol' => 'Política',
+'exif-iimcategory-rel' => 'Religião e credo',
+'exif-iimcategory-sci' => 'Ciência e tecnologia',
+'exif-iimcategory-soi' => 'Questões sociais',
+'exif-iimcategory-spo' => 'Esportes',
+'exif-iimcategory-war' => 'Guerra, conflitos e agitação social',
+'exif-iimcategory-wea' => 'Tempo',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Baixa ($1)',
+'exif-urgency-high' => 'Alta ($1)',
+'exif-urgency-other' => 'Prioridade definida pelo usuário ($1)',
+
# External editor support
'edit-externally' => 'Editar este arquivo utilizando uma aplicação externa',
-'edit-externally-help' => '(Consulte as [http://www.mediawiki.org/wiki/Manual:External_editors instruções de instalação] para maiores informações)',
+'edit-externally-help' => '(Consulte as [//www.mediawiki.org/wiki/Manual:External_editors instruções de instalação] para maiores informações)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'todas',
-'imagelistall' => 'todas',
-'watchlistall2' => 'todas',
-'namespacesall' => 'todas',
-'monthsall' => 'todos',
-'limitall' => 'todas',
+'watchlistall2' => 'todas',
+'namespacesall' => 'todas',
+'monthsall' => 'todos',
+'limitall' => 'todas',
# E-mail address confirmation
'confirmemail' => 'Confirmar endereço de E-mail',
@@ -3326,17 +3514,24 @@ $1',
'trackbackdeleteok' => 'O trackback foi eliminado com sucesso.',
# Delete conflict
-'deletedwhileediting' => "'''Aviso''': Esta página foi eliminada após você ter começado a editar!",
-'confirmrecreate' => "O usuário [[User:$1|$1]] ([[User talk:$1|Discussão]]) eliminou esta página após você ter começado a editar, pelo seguinte motivo:
+'deletedwhileediting' => "'''Aviso''': Esta página foi eliminada após você ter começado a editar!",
+'confirmrecreate' => "O usuário [[User:$1|$1]] ([[User talk:$1|Discussão]]) eliminou esta página após você ter começado a editar, pelo seguinte motivo:
: ''$2''
Por favor, confirme que realmente deseja recriar esta página.",
-'recreate' => 'Recriar',
+'confirmrecreate-noreason' => 'O usuário [[User:$1|$1]] ([[User talk:$1|discussão]]) eliminou esta página depois de você ter começado a editá-la. Confirme que deseja recriar a página, por favor.',
+'recreate' => 'Recriar',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Limpar a memória cache desta página?',
'confirm-purge-bottom' => "Purgar uma página limpa o ''cache'' e força a sua versão mais recente a aparecer.",
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Adicionar esta página às suas páginas vigiadas?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Remover esta página das páginas vigiadas?',
+
# Multipage image navigation
'imgmultipageprev' => '↠página anterior',
'imgmultipagenext' => 'próxima página →',
@@ -3380,14 +3575,14 @@ Tente a previsão comum.',
'watchlistedit-normal-legend' => 'Remover títulos da lista de páginas vigiadas',
'watchlistedit-normal-explain' => 'Os títulos das páginas de sua lista de vigiadas são exibidos abaixo.
Para remover um título, marque a caixa ao lado do mesmo e clique "{{int:Watchlistedit-normal-submit}}".
-Você pode também [[Special:Watchlist/raw|editar a lista de páginas vigiadas em forma de texto]].',
+Você pode também [[Special:EditWatchlist/raw|editar a lista de páginas vigiadas em forma de texto]].',
'watchlistedit-normal-submit' => 'Remover Títulos',
'watchlistedit-normal-done' => '{{PLURAL:$1|um título foi removido|$1 títulos foram removidos}} de sua lista de páginas vigiadas:',
'watchlistedit-raw-title' => 'Edição crua da lista de páginas vigiadas',
'watchlistedit-raw-legend' => 'Edição crua da lista de páginas vigiadas',
'watchlistedit-raw-explain' => 'A lista de páginas vigiadas é apresentada abaixo. Você pode adicionar novas linhas ou remover linhas para aumentar ou reduzir a lista, desde que mantenha uma única página por linha.
Quando terminar, clique "{{int:Watchlistedit-raw-submit}}".
-Você também pode [[Special:Watchlist/edit|editar a lista da maneira convencional]].',
+Você também pode [[Special:EditWatchlist|editar a lista da maneira convencional]].',
'watchlistedit-raw-titles' => 'Títulos:',
'watchlistedit-raw-submit' => 'Atualizar a lista de páginas vigiadas',
'watchlistedit-raw-done' => 'Sua lista de páginas vigiadas foi atualizada.',
@@ -3404,33 +3599,33 @@ Você também pode [[Special:Watchlist/edit|editar a lista da maneira convencion
'duplicate-defaultsort' => 'Aviso: A chave de ordenação padrão "$2" sobrepõe-se à anterior chave de ordenação padrão "$1".',
# Special:Version
-'version' => 'Versão',
-'version-extensions' => 'Extensões instaladas',
-'version-specialpages' => 'Páginas especiais',
-'version-parserhooks' => 'Hooks do analisador (parser)',
-'version-variables' => 'Variáveis',
-'version-skins' => 'Temas',
-'version-other' => 'Diversos',
-'version-mediahandlers' => 'Executores de média',
-'version-hooks' => 'Hooks',
-'version-extension-functions' => 'Funções de extensão',
-'version-parser-extensiontags' => 'Etiquetas de extensões de tipo "parser"',
-'version-parser-function-hooks' => 'Funções "hooks" de "parser"',
-'version-skin-extension-functions' => 'Funções de extensão de temas',
-'version-hook-name' => 'Nome do hook',
-'version-hook-subscribedby' => 'Subscrito por',
-'version-version' => '(Versão $1)',
-'version-license' => 'Licença',
-'version-poweredby-credits' => "Esta é uma wiki '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'outros',
-'version-license-info' => 'O MediaWiki é software livre; pode redistribuí-lo e/ou modificá-lo nos termos da licença GNU General Public License, tal como publicada pela Free Software Foundation; tanto a versão 2 da Licença, como (por opção sua) qualquer versão posterior.
+'version' => 'Versão',
+'version-extensions' => 'Extensões instaladas',
+'version-specialpages' => 'Páginas especiais',
+'version-parserhooks' => 'Hooks do analisador (parser)',
+'version-variables' => 'Variáveis',
+'version-antispam' => 'Prevenção contra spam',
+'version-skins' => 'Temas',
+'version-other' => 'Diversos',
+'version-mediahandlers' => 'Executores de média',
+'version-hooks' => 'Hooks',
+'version-extension-functions' => 'Funções de extensão',
+'version-parser-extensiontags' => 'Etiquetas de extensões de tipo "parser"',
+'version-parser-function-hooks' => 'Funções "hooks" de "parser"',
+'version-hook-name' => 'Nome do hook',
+'version-hook-subscribedby' => 'Subscrito por',
+'version-version' => '(Versão $1)',
+'version-license' => 'Licença',
+'version-poweredby-credits' => "Esta é uma wiki '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'outros',
+'version-license-info' => 'O MediaWiki é software livre; pode redistribuí-lo e/ou modificá-lo nos termos da licença GNU General Public License, tal como publicada pela Free Software Foundation; tanto a versão 2 da Licença, como (por opção sua) qualquer versão posterior.
O MediaWiki é distribuído na esperança de que seja útil, mas SEM QUALQUER GARANTIA; inclusive, sem a garantia implícita da POSSIBILIDADE DE SER COMERCIALIZADO ou de ADEQUAÇÂO PARA QUALQUER FINALIDADE ESPECÃFICA. Consulte a licença GNU General Public License para mais detalhes.
-Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYING uma cópia da licença GNU General Public License]; se não a recebeu, peça-a por escrito para Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ou [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html leia-a na internet].',
-'version-software' => 'Software instalado',
-'version-software-product' => 'Produto',
-'version-software-version' => 'Versão',
+Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYING uma cópia da licença GNU General Public License]; se não a recebeu, peça-a por escrito para Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ou [//www.gnu.org/licenses/old-licenses/gpl-2.0.html leia-a na internet].',
+'version-software' => 'Software instalado',
+'version-software-product' => 'Produto',
+'version-software-version' => 'Versão',
# Special:FilePath
'filepath' => 'Diretório do arquivo',
@@ -3440,22 +3635,22 @@ Em conjunto com este programa deve ter recebido [{{SERVER}}{{SCRIPTPATH}}/COPYIN
As imagens serão exibidas em sua resolução máxima, outros tipos de arquivos serão abertos diretamente pelos programas associados.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Procurar por arquivos duplicados',
-'fileduplicatesearch-summary' => 'Procure por arquivos duplicados tendo por base seu valor "hash".
-
-Entre com o nome de arquivo sem fornecer o prefixo "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Procurar por duplicatas',
-'fileduplicatesearch-filename' => 'Nome do arquivo:',
-'fileduplicatesearch-submit' => 'Pesquisa',
-'fileduplicatesearch-info' => '$1 × $2 pixels<br />Tamanho: $3<br />tipo MIME: $4',
-'fileduplicatesearch-result-1' => 'O arquivo "$1" não possui cópias idênticas.',
-'fileduplicatesearch-result-n' => 'O arquivo "$1" possui {{PLURAL:$2|uma cópia idêntica|$2 cópias idênticas}}.',
+'fileduplicatesearch' => 'Procurar por arquivos duplicados',
+'fileduplicatesearch-summary' => 'Procure por arquivos duplicados tendo por base seu valor "hash".',
+'fileduplicatesearch-legend' => 'Procurar por duplicatas',
+'fileduplicatesearch-filename' => 'Nome do arquivo:',
+'fileduplicatesearch-submit' => 'Pesquisa',
+'fileduplicatesearch-info' => '$1 × $2 pixels<br />Tamanho: $3<br />tipo MIME: $4',
+'fileduplicatesearch-result-1' => 'O arquivo "$1" não possui cópias idênticas.',
+'fileduplicatesearch-result-n' => 'O arquivo "$1" possui {{PLURAL:$2|uma cópia idêntica|$2 cópias idênticas}}.',
+'fileduplicatesearch-noresults' => 'Não foi encontrado nenhum arquivo com o nome "$1".',
# Special:SpecialPages
'specialpages' => 'Páginas especiais',
'specialpages-note' => '----
* Páginas especiais normais.
-* <strong class="mw-specialpagerestricted">Páginas especiais restritas.</strong>',
+* <span class="mw-specialpagerestricted">Páginas especiais restritas.</span>
+* <span class="mw-specialpagecached">Páginas especiais com cache (podem estar obsoletas).</span>',
'specialpages-group-maintenance' => 'Relatórios de manutenção',
'specialpages-group-other' => 'Outras páginas especiais',
'specialpages-group-login' => 'Entrar / registrar-se',
diff --git a/languages/messages/MessagesQqq.php b/languages/messages/MessagesQqq.php
index 8df93417..31687a54 100644
--- a/languages/messages/MessagesQqq.php
+++ b/languages/messages/MessagesQqq.php
@@ -29,6 +29,7 @@
* @author Darth Kule
* @author Deadelf
* @author Dsvyas
+ * @author Emilkris33
* @author Erwin
* @author Erwin85
* @author EugeneZelenko
@@ -41,6 +42,7 @@
* @author Huji
* @author IAlex
* @author INkubusse
+ * @author Iniquity
* @author Iwan Novirion
* @author Jon Harald Søby
* @author Karduelis
@@ -80,6 +82,7 @@
* @author Purodha
* @author Rancher
* @author Raymond
+ * @author Robby
* @author Ryan Schmidt
* @author SPQRobin
* @author Sanbec
@@ -96,14 +99,17 @@
* @author Tedjuh10
* @author Tgr
* @author The Evil IP address
+ * @author Toliño
* @author UV
* @author Umherirrender
* @author Urhixidur
+ * @author Usarker
* @author Verdy p
* @author Vinhtantran
* @author Waldir
* @author Whym
* @author Yekrats
+ * @author Yuriy Apostol
* @author Yyy
* @author Žekřil71pl
* @author פוילישער
@@ -157,7 +163,8 @@ Is only shown if {{msg-mw|tog-enotifusertalkpages}} or/and {{msg-mw|tog-enotifwa
'tog-watchlisthideliu' => "Option in tab 'Watchlist' of [[Special:Preferences]]. {{Gender}}",
'tog-watchlisthideanons' => "Option in tab 'Watchlist' of [[Special:Preferences]]. {{Gender}}",
'tog-watchlisthidepatrolled' => 'Option in Watchlist tab of [[Special:Preferences]]. {{Gender}}',
-'tog-nolangconversion' => 'In user preferences.',
+'tog-nolangconversion' => '{{optional}}
+In user preferences.',
'tog-ccmeonemails' => 'Option in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}. {{Gender}}',
'tog-diffonly' => 'Toggle option used in [[Special:Preferences]]. {{Gender}}',
'tog-showhiddencats' => 'Toggle option used in [[Special:Preferences]]. {{Gender}}',
@@ -286,16 +293,14 @@ Is only shown if {{msg-mw|tog-enotifusertalkpages}} or/and {{msg-mw|tog-enotifwa
* $1: number of files shown',
'listingcontinuesabbrev' => 'Shown in contiuation of each first letter group.
See http://test.wikipedia.org/wiki/Category:Test_ko?uselang={{SUBPAGENAME}}, for example.',
-'index-category' => 'Name of the category where pages with the <nowiki>__INDEX__</nowiki> behaviour switch are listed. For description of this behaviour switch see [http://www.mediawiki.org/wiki/Help:Magic_words#Behavior_switches mediawiki].',
-'noindex-category' => 'Name of the category where pages with the <nowiki>__NOINDEX__</nowiki> behaviour switch are listed. For description of this behaviour switch see [http://www.mediawiki.org/wiki/Help:Magic_words#Behavior_switches mediawiki].',
+'index-category' => 'Name of the 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 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 category where pages that embed files that do not exist ("broken images") are listed.',
-'linkprefix' => '{{optional}}',
-'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.
-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.',
+'linkprefix' => '{{optional}}',
'about' => '{{Identical|About}}',
-'article' => "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 [http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Content_namespaces Mediawiki].
+'article' => "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].
Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
@@ -381,10 +386,12 @@ Also used as title of [[Special:Search]] page in [[Special:SpecialPages]].
{{Identical|History}}',
'updatedmarker' => 'Displayed in the page history (of a page you are [[Special:Watchlist|watching]]), when the page has been edited since the last time you visited it. This feature is used if [[mw:Manual:$wgShowUpdatedMarker|$wgShowUpdatedMarker]] is enabled.',
-'info_short' => '{{Identical|Information}}',
'printableversion' => 'Display name for link in wiki menu that leads to a printable version of a content page. Example: see one but last menu item on [[Main Page]].',
'permalink' => 'Display name for a permanent link to the current revision of a page. When the page is edited, permalink will still link to this revision. Example: Last menu link on [[{{MediaWiki:Mainpage}}]]',
'print' => '{{Identical|Print}}',
+'view' => 'The default text of the "View" or "Read" (Vector) views tab which represents the basic view for the page. Should be in the infinitive mood.
+
+{{Identical|View}}',
'edit' => 'The text of the tab going to the edit form. When the page is protected, you will see "[[MediaWiki:Viewsource/{{SUBPAGENAME}}|{{int:viewsource}}]]". Should be in the infinitive mood.
{{Identical|Edit}}',
@@ -400,6 +407,7 @@ Also used as title of [[Special:Search]] page in [[Special:SpecialPages]].
'deletethispage' => 'In the skins Classic/Standard, Cologne Blue and Nostalgia this is the text for link to delete the page in admin view.
{{Identical|Delete this page}}',
'undelete_short' => "It is tab label. It's really can be named ''nstab-undelete''.",
+'viewdeleted_short' => 'Tab label for the undelete button when the user has permission to view the deleted history but not undelete.',
'protect' => 'Name of protect tab displayed for admins. Should be in the infinitive mood.
{{Identical|Protect}}',
@@ -538,6 +546,8 @@ 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.)',
'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
@@ -557,6 +567,8 @@ HTML markup cannot be used.
'feed-atom' => '{{optional}}',
'feed-rss' => '{{optional}}',
'red-link-title' => 'Title for red hyperlinks. Indicates, that the page is empty, not written yet.',
+'sort-descending' => 'JavaScript message. Used by sortable table script.',
+'sort-ascending' => 'JavaScript message. Used by sortable table script.',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'The name for the tab of the main namespace. Example: [[Example]]
@@ -696,6 +708,9 @@ $1 is a filename, I think.',
* $1 is an error message',
'nocookiesnew' => "This message is displayed when a new account was successfully created, but the browser doesn't accept cookies.",
'nocookieslogin' => "This message is displayed when someone tried to login, but the browser doesn't accept cookies.",
+'nocookiesfornew' => "This message is displayed when the user tried to create a new account, but it failed the cross-site request forgery (CSRF) check. It could be blocking an attack, but most likely, the browser isn't accepting cookies.",
+'nocookiesforlogin' => "{{optional}}
+This message is displayed when someone tried to login and the CSRF failed (most likely, the browser doesn't accept cookies). Defaults to nocookieslogin",
'loginsuccesstitle' => 'The title of the page saying that you are logged in. The content of the page is the message "[[MediaWiki:Loginsuccess/{{SUBPAGENAME}}]]".',
'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.
@@ -742,13 +757,15 @@ Parameters:
*Parameter $3 is a password (randomly generated).
*Parameter $4 is a URL to the wiki',
'login-throttled' => 'Error message shown at [[Special:UserLogin]] after 5 wrong passwords. The hardcoded waiting time is 300 seconds.',
+'login-abort-generic' => 'The generic unsuccessful login message is used unless otherwise specified by hook writers',
'loginlanguagelabel' => 'Used on [[Special:UserLogin]] if $wgLoginLanguageSelector is true.
{{Identical|Language}}',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'The caption of [[Special:ChangePassword]]
{{Identical|Change password}}',
+'resetpass_text' => '{{optional}}',
'resetpass_header' => 'Header on box on special page [[Special:ChangePassword]].
{{Identical|Reset password}}',
@@ -765,6 +782,33 @@ Used on [[Special:ResetPass]]',
'resetpass-wrong-oldpass' => 'Error message shown on [[Special:ChangePassword]] when the old password is not valid.',
'resetpass-temp-password' => 'The label of the input box for the temporary password (received by e-mail) on the form displayed after logging in with a temporary password.',
+# Special:PasswordReset
+'passwordreset' => 'Title of [[Special:PasswordReset]].
+{{Identical|Reset password}}',
+'passwordreset-text' => 'Text on [[Special:PasswordReset]]',
+'passwordreset-legend' => '{{Identical|Reset password}}',
+'passwordreset-pretext' => '$1 is the number of password reset routes. Apparently, this is never 1, but always two or more. Thus, the first plural option is empty in English.',
+'passwordreset-username' => '{{Identical|Username}}',
+'passwordreset-domain' => 'A domain like used in Domain Name System (DNS) or more specifically like a domain component in the Lightweight Directory Access Protocol (LDAP)',
+'passwordreset-email' => '{{Identical|E-mail address}}',
+'passwordreset-emailtext-ip' => 'Be consistent with {{msg-mw|Passwordreset-emailtext-user|notext=y}}.
+
+Parameters:
+* $1 - an IP address
+* $2 - message {{msg-mw|passwordreset-emailelement|notext=1}} repeated $3 times
+* $3 - the number of repetitions in $2
+* $4 - base URL of the wiki',
+'passwordreset-emailtext-user' => 'Be consistent with {{msg-mw|Passwordreset-emailtext-ip|notext=y}}.
+
+Parameters:
+* $1 - a user name
+* $2 - message {{msg-mw|passwordreset-emailelement|notext=1}} repeated $3 times
+* $3 - the number of repetitions in $2
+* $4 - base URL of the wiki',
+'passwordreset-emailelement' => "This is a body of a reminder email to allow them into the system with a new password.
+$1 will be the user's login name.
+$2 will be the temporary password given by the system.",
+
# Edit page toolbar
'bold_sample' => 'This is the sample text that you get when you press the first button on the left on the edit toolbar.
@@ -788,13 +832,10 @@ Tip for internal links',
{{Identical|External link (remember http:// prefix)}}',
'headline_sample' => 'Sample of headline text.',
'headline_tip' => 'This is the text that appears when you hover the mouse over the fifth button from the left on the edit toolbar.',
-'math_sample' => 'The sample formula text that you get when you press the fourth button from the right on the edit toolbar.',
-'math_tip' => 'This is the text that appears when you hover the mouse over the fourth button from the right on the edit toolbar.',
'nowiki_sample' => 'Text inserted between nowiki tags',
'nowiki_tip' => 'This is the text that appears when you hover the mouse over the third button from the right on the edit toolbar.',
-'image_sample' => 'Used in text generated by Picture button in toolbar.
-
-{{optional}}',
+'image_sample' => '{{optional}}
+Used in text generated by Picture button in toolbar.',
'image_tip' => 'This is the text that appears when you hover the mouse over the sixth (middle) button on the edit toolbar.
{{Identical|Embedded file}}',
@@ -867,7 +908,8 @@ Parameters:
See also {{msg-mw|Noarticletext-nopermission}}.',
'noarticletext-nopermission' => 'See also {{msg-mw|Noarticletext}}.',
-'userpage-userdoesnotexist' => 'Error message displayed when trying to edit or create a page or a subpage that belongs to a user who is not registered on the wiki',
+'userpage-userdoesnotexist' => 'Error message displayed when trying to edit or create a page or a subpage that belongs to a user who is not registered on the wiki. Parameters:
+* $1 is a possible username that has not been registered.',
'userpage-userdoesnotexist-view' => 'Shown in user pages of non existing users. See for example [http://translatewiki.net/wiki/User:Foo User:Foo]. Parameters:
* $1 is a username.',
'blocked-notice-logextract' => 'Parameters:
@@ -897,7 +939,10 @@ See also {{msg-mw|Noarticletext-nopermission}}.',
'template-protected' => '{{Identical|Protected}}',
'template-semiprotected' => 'Used on [[Special:ProtectedPages]]. Appears in brackets after listed page titles which are semi-protected.',
'hiddencategories' => "This message is shown below the edit form, like you have a section ''\"Templates used on this page\"''.",
-'edittools' => 'This text will be shown below edit and upload forms. It can be used to offer special characters not present on most keyboards for copying/pasting, and also often makes them clickable for insertion via a javascript. Since these are seen as specific to a wiki, however, this message should not contain anything but an html comment explaining how it should be used once the wiki has been installed.',
+'edittools' => '{{optional}}
+This text will be shown below edit and upload forms. It can be used to offer special characters not present on most keyboards for copying/pasting, and also often makes them clickable for insertion via a javascript. Since these are seen as specific to a wiki, however, this message should not contain anything but an html comment explaining how it should be used once the wiki has been installed.',
+'edittools-upload' => '{{optional}}
+This text will be shown below upload forms. It will default to the contents of edittools.',
'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].',
'permissionserrorstext-withaction' => '* $1 is the number of reasons that were found why the action cannot be performed.
@@ -1189,6 +1234,7 @@ See also {{msg-mw|difference}}.',
* $2 is the number of users that were found, which was limited at 100.",
# Search results
+'searchresults' => '{{Identical|Search results}}',
'searchresults-title' => 'Appears as page title in the html header of the search result special page.',
'notitlematches' => 'Header of results page after a search for a title for which no page exists',
'textmatches' => 'When displaying search results',
@@ -1220,7 +1266,7 @@ Description: The URL of the search help page.
{{doc-important|Do not change the "<tt>Help:</tt>" part.}}',
'searchprofile-articles' => "A quick link in the advanced search box on [[Special:Search]]. Clicking on this link starts a search in the content pages of the wiki.
-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 [http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Content_namespaces Mediawiki].
+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].
Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
@@ -1278,8 +1324,9 @@ This is a search result (and I guess search engine) dependent messages. I do not
'searchdisabled' => '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.',
-'qbsettings-none' => '{{Identical|None}}',
+'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.',
+'qbsettings-none' => '{{Identical|None}}',
+'qbsettings-directionality' => '"Fixed", as in the position "fixed left or right". For left-to-right languages, the quickbar will be positioned at the left, for right-to-left languages at the right.',
# Preferences page
'preferences' => 'Title of the Special:Preferences page.
@@ -1297,8 +1344,9 @@ This is a search result (and I guess search engine) dependent messages. I do not
'skin-preview' => 'The link beside each skin name in [[Special:Preferences|your user preferences]], tab "skin".
{{Identical|Preview}}',
-'prefs-math' => 'Used in user preferences.',
+'prefs-beta' => "Header of a subsection at [[Special:Preferences]], tab ''{{int:prefs-editing}}'', listing features that are in beta but mostly suitable for general use",
'prefs-datetime' => '{{Identical|Date}}',
+'prefs-labs' => "Header of a subsection at [[Special:Preferences]], tab ''{{int:prefs-editing}}'', listing features that are experimental",
'prefs-personal' => 'Title of a tab in [[Special:Preferences]].',
'prefs-rc' => 'Used in user preferences.
@@ -1327,8 +1375,6 @@ When changing this message, please also update {{msg-mw|vector-editwarning-warni
{{Identical|Search}}',
'resultsperpage' => "Option on the 'Search options' tab of [[Special:Preferences]]",
-'contextlines' => "Option on the 'Search options' tab of [[Special:Preferences]]",
-'contextchars' => 'Used in Preferences/Search tab',
'stub-threshold' => 'Used in [[Special:Preferences]], tab "Misc".',
'stub-threshold-disabled' => 'Used in [[Special:Preferences]].',
'recentchangesdays' => 'Used in [[Special:Preferences]], tab "Recent changes".',
@@ -1338,6 +1384,9 @@ When changing this message, please also update {{msg-mw|vector-editwarning-warni
'prefs-help-watchlist-token' => 'Used in [[Special:Preferences]], tab Watchlist.',
'savedprefs' => 'This message appears after saving changes to your user preferences.',
'timezonelegend' => '{{Identical|Time zone}}',
+'timezoneuseserverdefault' => '[[Special:Preferences]] > Date and time > Time zone
+
+This option lets your time zone setting use the one that is used on the wiki (often UTC).',
'timezoneoffset' => "Text next to input box in [[Special:Preferences]], tab 'date and time', section 'timezone'.",
'allowemail' => 'Used in [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.',
'prefs-searchoptions' => '{{Identical|Search options}}',
@@ -1389,6 +1438,7 @@ Used in [[Special:Preferences]]. Parameters are:
'prefs-help-realname' => 'In user preferences.
{{Identical|Real name attribution}}',
'prefs-help-email' => 'Shown as explanation text on [[Special:Preferences]] > {{int:prefs-personal}} > {{int:email}}.',
+'prefs-help-email-others' => 'ВиводитьÑÑ Ñк підказка до Ð¿Ð¾Ð»Ñ Â«ÐдреÑа електронної пошти» (друге реченнÑ) в налаштуваннÑÑ…, на вкладці «ОÑобиÑÑ‚Ñ– дані». Someone translate this to English!!!',
'prefs-info' => "Header for the box giving basic information on the user account, displayed on the 'user profile' tab of the [[Special:Preferences|user preferences]] special page.",
'prefs-i18n' => 'Field set legend for user preferences regarding the interface language',
'prefs-signature' => '{{Identical|Signature}}',
@@ -1602,14 +1652,13 @@ An alternative wording for translators could be \'Get the wiki to accept a track
'right-userrights' => '{{doc-right|userrights}}',
'right-userrights-interwiki' => '{{doc-right|userrights-interwiki}}',
'right-siteadmin' => '{{doc-right|siteadmin}}',
-'right-reset-passwords' => '{{doc-right|reset-passwords}}',
'right-override-export-depth' => '{{doc-right|override-export-depth}}',
'right-sendemail' => '{{doc-right|sendemail}}',
# User rights log
-'rightslog' => '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.
+'rightslog' => '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}}
@@ -1617,7 +1666,12 @@ An alternative wording for translators could be \'Get the wiki to accept a track
The name of the bureaucrat who did this task appears before this message.
Similar to {{msg-mw|Gur-rightslog-entry}}',
-'rightsnone' => 'Default rights for registered users.
+'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',
+'rightsnone' => 'Default rights for registered users.
{{Identical|None}}',
@@ -1673,6 +1727,7 @@ This action allows editing of all of the "user rights", not just the rights of t
'recentchanges-label-bot' => 'Tooltip for {{msg-mw|boteditletter}}',
'recentchanges-label-unpatrolled' => 'Tooltip for {{msg-mw|unpatrolledletter}}',
'rcnote' => 'Used on [[Special:RecentChanges]].
+Shoulds looks like the message {{msg-mw|wlnote}} used similary but on [[Special:Watchlist]]
* $1 is the number of changes shown,
* $2 is the number of days for which the changes are shown,
* $3 is a date and time (deprecated),
@@ -1758,13 +1813,17 @@ Text displayed when uploading a file using [[Special:Upload]].",
{{Identical|Source}}',
'ignorewarnings' => 'In [[Special:Upload]]',
+'filetype-mime-mismatch' => 'Upload error. Parameters:
+* $1 is the extension of the uploaded file
+* $2 is the MIME type of the uploaded file',
'filetype-bad-ie-mime' => '$1 will contain a mime type like <tt>image/jpeg</tt> or <tt>application/zip</tt>',
'filetype-unwanted-type' => "* $1 is the extension of the file which cannot be uploaded
* $2 is the list of file extensions that can be uploaded (Example: ''png, gif, jpg, jpeg, ogg, pdf, svg.'')
* $3 is the number of allowed file formats (to be used for the PLURAL function)",
-'filetype-banned-type' => "* $1 is the extension of the file which cannot be uploaded
+'filetype-banned-type' => "* $1 is the extension(s) of the file which cannot be uploaded
* $2 is the list of file extensions that can be uploaded (Example: ''png, gif, jpg, jpeg, ogg, pdf, svg.'')
-* $3 is the number of allowed file formats (to be used for the PLURAL function)",
+* $3 is the number of allowed file formats (to be used for the PLURAL function)
+* $4 is the number of extensions that could not be uploaded (to be used for the PLURAL function)",
'filetype-missing' => 'Error when uploading a file with no extension',
'verification-error' => 'Error message shown when an uploaded file contents does not pass verification, i.e. the file is corrupted, it is not the type it claims to be etc.',
'large-file' => 'Variables $1 and $2 have appropriate unit symbols already. See for example [[Mediawiki:size-kilobytes]].',
@@ -1799,7 +1858,8 @@ $1 is the value in KB/MB/GB',
'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-prefix-blacklist' => "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.",
+'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-msg' => '$1 is the local file name after uploading
$2 is the url the file was uploaded from, when using upload-by-url.',
'upload-failure-msg' => '$1 is the specific error message
@@ -1817,6 +1877,9 @@ Extensions making use of it:
{{Identical|Internal error}}',
+# ZipDirectoryReader
+'zip-unsupported' => "Perhaps translations of 'software' can be used instead of 'features' and 'understood' or 'handled' instead of 'supported'.",
+
# img_auth script messages
'img-auth-accessdenied' => '[[mw:Manual:Image Authorization|Manual:Image Authorization]]: Access Denied
{{Identical|Access denied}}',
@@ -1910,7 +1973,9 @@ Example: [[:Image:Addon-icn.png]]',
* $1: limit. At the moment hardcoded at 100
* $2: filename',
'nolinkstoimage' => 'Displayed on image description pages, see for exampe [[:Image:Tournesol.png#filelinks]].',
-'redirectstofile' => 'Used on file description pages after the list of pages which used this file',
+'linkstoimage-redirect' => 'Item in the "the following pages link to this file" section on a file page if the item is a redirect.
+* $1: an HTML link to the file
+* $2: the list of files that link to the redirect (may be empty)',
'duplicatesoffile' => 'Shown on file description pages when a file is duplicated
* $1: Number of identical files
@@ -1990,6 +2055,7 @@ $1 is the name of the shared repository. On wikimedia sites, $1 is {{msg-mw|shar
'filedelete-edit-reasonlist' => 'Shown beneath the file deletion form on the right side. It is a link to [[MediaWiki:Filedelete-reason-dropdown]].
{{Identical|Edit delete reasons}}',
+'filedelete-maintenance' => 'Content of the error page when $wgUploadMaintenance is set to true.',
# MIME search
'mimesearch' => 'Title of [[Special:MIMESearch]].',
@@ -2026,7 +2092,7 @@ $1 is the name of the shared repository. On wikimedia sites, $1 is {{msg-mw|shar
'statistics-header-hooks' => 'Header of a section on [[Special:Statistics]] containing data provided by MediaWiki extensions',
'statistics-articles' => "Used in [[Special:Statistics]].
-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 [http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Content_namespaces Mediawiki].
+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].
Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
@@ -2056,10 +2122,11 @@ Possible alternatives to the word 'content' are 'subject matter' or 'wiki subjec
* '''Background information:''' Beyond telling about links going to disambiguation pages, that they are generally bad, it should explain which pages in the article namespace are seen as diambiguations: [[MediaWiki:Disambiguationspage]] usually holds a list of diambiguation templates of the local wiki. Pages linking to one of them (by transclusion) will count as disambiguation pages. Pages linking to these disambiguation pages, instead to the disambiguated article itself, are listed on [[:Special:Disambiguations]].",
-'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-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}}.",
+'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-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]]',
'brokenredirectstext' => 'Shown on top of [[Special:BrokenRedirects]].',
@@ -2119,8 +2186,8 @@ $1 is a page title",
'protectedpages-cascade' => 'Option in [[Special:ProtectedPages]]',
'protectedpagestext' => 'Shown on top of [[Special:ProtectedPages]]',
'protectedtitles' => 'Name of special page displayed in [[Special:SpecialPages]]',
-'protectedtitlestext' => 'Shown on top of list of titles on [[Special:ProtectedTitles]]. If the list is empty the message [[MediaWiki:Protectedtitlesempty]] appears instead of this. See the [http://www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] for more information.',
-'protectedtitlesempty' => 'Used on [[Special:ProtectedTitles]]. This text appears if the list of protected titles is empty. See the [http://www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] for more information.',
+'protectedtitlestext' => 'Shown on top of list of titles on [[Special:ProtectedTitles]]. If the list is empty the message [[MediaWiki:Protectedtitlesempty]] appears instead of this. See the [//www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] for more information.',
+'protectedtitlesempty' => 'Used on [[Special:ProtectedTitles]]. This text appears if the list of protected titles is empty. See the [//www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] for more information.',
'listusers' => 'Name of special page displayed in [[Special:SpecialPages]]',
'listusers-editsonly' => 'Option in [[Special:ListUsers]].',
'listusers-creationsort' => 'Option in [[Special:ListUsers]].',
@@ -2147,6 +2214,7 @@ The title is {{msg-mw|nopagetitle}}.',
'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-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).",
# Book sources
'booksources' => 'Name of special page displayed in [[Special:SpecialPages]]',
@@ -2158,12 +2226,8 @@ The title is {{msg-mw|nopagetitle}}.',
'booksources-invalid-isbn' => 'This message is displayed after an invalid ISBN is entered on Special:Booksources.',
# Special:Log
-'specialloguserlabel' => 'Used in [[Special:Log]].
-
-{{Identical|User}}',
-'speciallogtitlelabel' => 'Used in [[Special:Log]].
-
-{{Identical|Title}}',
+'specialloguserlabel' => "Used in [[Special:Log]] as a label for an input field with which the log can be filtered for entries describing actions ''performed'' by the specified user.",
+'speciallogtitlelabel' => 'Used in [[Special:Log]].',
'log' => 'Name of special page displayed in [[Special:SpecialPages]]',
'all-logs-page' => 'Title of [[Special:Log]].',
'alllogstext' => 'Header of [[Special:Log]]',
@@ -2307,41 +2371,50 @@ See also {{msg-mw|listgrouprights-addgroup-all}}.',
* $2 is the number of group names in $1.',
# E-mail user
-'emailuser' => 'Link in the sidebar and title of [[Special:EmailUser|special page]]',
-'emailpage' => "Title of special page [[Special:EmailUser]], when it is the destination of the sidebar link {{msg-mw|Emailuser}} on a user's page.",
-'emailpagetext' => 'This is the text that is displayed above the e-mail form on [[Special:EmailUser]].
+'emailuser' => 'Link in the sidebar and title of [[Special:EmailUser|special page]]',
+'emailpage' => "Title of special page [[Special:EmailUser]], when it is the destination of the sidebar link {{msg-mw|Emailuser}} on a user's page.",
+'emailpagetext' => 'This is the text that is displayed above the e-mail form on [[Special:EmailUser]].
Special:EmailUser appears when you click on the link "E-mail this user" in the sidebar, but only if there is an e-mail address in the recipient\'s user preferences. If there isn\'t then the message [[Mediawiki:Noemailtext]] will appear instead of Special:EmailUser.',
-'usermaildisabled' => 'Caption for an error message ({{msg-mw|Usermaildisabledtext}}) shown when the user-to-user e-mail feature is disabled on the wiki (see [[mw:Manual:$wgEnableEmail]], [[mw:Manual:$wgEnableUserEmail]]).',
-'noemailtitle' => 'The title of the message that appears instead of Special:EmailUser after clicking the "E-mail this user" link in the sidebar, if no e-mail can be sent to the user.',
-'noemailtext' => 'The text of the message that appears in [[Special:EmailUser]] after clicking the "E-mail this user" link in the sidebar, if no e-mail can be sent to the user because he has not specified or not confirmed an e-mail address.',
-'nowikiemailtext' => 'This is an error message used in [[Special:Emailuser]] when called with a target user not consenting to be an e-mail recipient.',
-'email-legend' => 'Title of the box in [[Special:EmailUser]]',
-'emailfrom' => 'Field in [[Special:EmailUser]].
+'usermaildisabled' => 'Caption for an error message ({{msg-mw|Usermaildisabledtext}}) shown when the user-to-user e-mail feature is disabled on the wiki (see [[mw:Manual:$wgEnableEmail]], [[mw:Manual:$wgEnableUserEmail]]).',
+'noemailtitle' => 'The title of the message that appears instead of Special:EmailUser after clicking the "E-mail this user" link in the sidebar, if no e-mail can be sent to the user.',
+'noemailtext' => 'The text of the message that appears in [[Special:EmailUser]] after clicking the "E-mail this user" link in the sidebar, if no e-mail can be sent to the user because he has not specified or not confirmed an e-mail address.',
+'nowikiemailtext' => 'This is an error message used in [[Special:Emailuser]] when called with a target user not consenting to be an e-mail recipient.',
+'emailnotarget' => 'This is an error message that may be used in [[Special:Emailuser]] when called without a (valid) target user for the e-mail.',
+'emailtarget' => 'This is an input group label being used in [[Special:Emailuser]] when called without a (valid) target user for the e-mail.',
+'emailusername' => 'This is a prompt being used in [[Special:Emailuser]] when called without a (valid) target user for the e-mail.
+
+{{Identical|Username}}',
+'emailusernamesubmit' => '{{Identical|Submit}}
+
+This is a button text used in [[Special:Emailuser]] when called without a (valid) target user for the e-mail.',
+'email-legend' => 'Title of the box in [[Special:EmailUser]]',
+'emailfrom' => 'Field in [[Special:EmailUser]].
{{Identical|From}}',
-'emailto' => 'Field in [[Special:EmailUser]].
+'emailto' => 'Field in [[Special:EmailUser]].
{{Identical|To}}',
-'emailsubject' => 'Field in [[Special:EmailUser]].
+'emailsubject' => 'Field in [[Special:EmailUser]].
{{Identical|Subject}}',
-'emailmessage' => 'Field in [[Special:EmailUser]].
+'emailmessage' => 'Field in [[Special:EmailUser]].
{{Identical|Message}}',
-'emailsend' => 'Button name in [[Special:EmailUser]].
+'emailsend' => 'Button name in [[Special:EmailUser]].
{{Identical|Send}}',
-'emailccme' => 'Used at [[Special:Preferences]] > E-mail',
-'emailccsubject' => 'Subject of the carbon-copied email for the sender sent through MediaWiki.',
-'emailsent' => 'Title of Special:Emailuser when it says you it sent an email',
-'emailsenttext' => 'When you send an e-mail, Special:Emailuser says you this (Your email has been sent).',
-'emailuserfooter' => 'This message is appended to every email sent through the "Email user" function.
+'emailccme' => 'Used at [[Special:Preferences]] > E-mail',
+'emailccsubject' => 'Subject of the carbon-copied email for the sender sent through MediaWiki.',
+'emailsent' => 'Title of Special:Emailuser when it says you it sent an email',
+'emailsenttext' => 'When you send an e-mail, Special:Emailuser says you this (Your email has been sent).',
+'emailuserfooter' => 'This message is appended to every email sent through the "Email user" function.
* $1: username of the sender
* $2: username of the recipient',
# User Messenger
-'usermessage-summary' => 'This message is used as an edit summary for any message that is posted because of a system event. Translate "leaving a message" in the sense of: to give a message to someone; to deliver a message somewhere; to deposit.',
-'usermessage-editor' => 'The user name for the user that is the editor of system messages. See [http://translatewiki.net/wiki/Thread:Support/Message_info_please discussion on Support].',
+'usermessage-summary' => 'This message is used as an edit summary for any message that is posted because of a system event. Translate "leaving a message" in the sense of: to give a message to someone; to deliver a message somewhere; to deposit.',
+'usermessage-editor' => 'The user name for the user that is the editor of system messages. See [http://translatewiki.net/wiki/Thread:Support/Message_info_please discussion on Support].',
+'usermessage-template' => '{{optional}}',
# Watchlist
'watchlist' => '{{Identical|My watchlist}}',
@@ -2356,14 +2429,13 @@ Special:EmailUser appears when you click on the link "E-mail this user" in the s
'nowatchlist' => 'Displayed when there is no pages in the watchlist.',
'watchlistanontext' => '* $1 is a link to [[Special:UserLogin]] with {{msg-mw|loginreqlink}} as link description',
'watchnologin' => '{{Identical|Not logged in}}',
-'addedwatch' => 'Page title displayed when clicking on {{msg|watch}} tab (only when not using the AJAX feauture which allows watching a page without reloading the page or such). See also {{msg|addedwatchtext}}.',
+'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}}.',
-'removedwatch' => 'Page title displayed when clicking on {{msg|unwatch}} tab (only when not using the AJAX feauture which allows watching a page without reloading the page or such). See also {{msg|removedwatchtext}}.',
'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.',
'watchthispage' => '{{Identical|Watch this page}}',
'unwatch' => 'Label of "Unwatch" tab.',
-'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 [http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Content_namespaces Mediawiki].
+'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].
Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
@@ -2374,8 +2446,9 @@ Possible alternatives to the word 'content' are 'subject matter' or 'wiki subjec
'watchlist-options' => 'Legend of the fieldset of [[Special:Watchlist]]',
# 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.',
+'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.',
'enotif_newpagetext' => 'Part of text of a notification e-mail sent when a watched page has been created. See [[File:Screenshot_MediaWiki_e-mail_notifier.PNG|150px|right]]',
'changed' => 'Possible value for $CHANGEDORCREATED in {{msg|enotif_subject}} and {{msg|enotif_body}}.',
@@ -2508,7 +2581,7 @@ This message was something like "unlock move protection" in the past.',
{{Identical|Infinite}}",
'restriction-type' => 'Used on [[Special:ProtectedPages]]. The text next to a drop-down box. See [[mw:Manual:Administrators|MediaWiki Manual]] for more information on protection.',
-'restriction-level' => 'Used on [[Special:ProtectedPages]] and [[Special:ProtectedTitles]]. The text next to a drop-down box. See the [http://www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] and on [http://meta.wikimedia.org/wiki/Protect Meta] for more information.',
+'restriction-level' => 'Used on [[Special:ProtectedPages]] and [[Special:ProtectedTitles]]. The text next to a drop-down box. See the [//www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] and on [http://meta.wikimedia.org/wiki/Protect Meta] for more information.',
'minimum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Maximum-size]]. There is an input box to specify the minimum bites of the projected pages listed.',
'maximum-size' => 'Used in [[Special:Protectedpages]] as a pair of radio buttons, with [[MediaWiki:Minimum-size]]. There is an input box to specify the maximum bites of the projected pages listed.',
'pagesize' => 'Used on [[Special:ProtectedPages]]. See the help page on [http://meta.wikimedia.org/wiki/Protect Meta] for more information on protection.',
@@ -2520,14 +2593,14 @@ This message was something like "unlock move protection" in the past.',
'restriction-move' => "Used on [[Special:ProtectedPages]]. Option in the 'permission' drop-down box.
{{Identical|Move}}",
-'restriction-create' => 'Used on [[Special:ProtectedPages]]. An option in a drop-down box. See the help pages on [http://www.mediawiki.org/wiki/Project:Protected_titles MediaWiki] and [http://meta.wikimedia.org/wiki/Protect Meta] for more information on protection.
+'restriction-create' => 'Used on [[Special:ProtectedPages]]. An option in a drop-down box. See the help pages on [//www.mediawiki.org/wiki/Project:Protected_titles MediaWiki] and [http://meta.wikimedia.org/wiki/Protect Meta] for more information on protection.
{{Identical|Create}}',
# 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 [http://www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] and on [http://meta.wikimedia.org/wiki/Protect Meta] for more information.",
-'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 [http://www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] and on [http://meta.wikimedia.org/wiki/Protect Meta] for more information.",
-'restriction-level-all' => "Used on [[Special:ProtectedPages]] and [[Special:ProtectedTitles]]. An option in the drop-down box 'Restriction level'. See the [http://www.mediawiki.org/wiki/Project:Protected_titles help page on Mediawiki] and on [http://meta.wikimedia.org/wiki/Protect Meta] for more information.",
+'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.",
+'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.",
+'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.",
# Undelete
'undelete' => 'Name of special page for admins as displayed in [[Special:SpecialPages]].
@@ -2537,7 +2610,7 @@ This message was something like "unlock move protection" in the past.',
'viewdeletedpage' => 'Title of the [[Special:Undelete]].
{{Identical|View deleted pages}}',
-'undeleteextrahelp' => "Help message displayed when restoring history of a page. In your language, ''Restore'' is called ''[[MediaWiki:Undeletebtn/{{SUBPAGENAME}}|{{int:Undeletebtn}}]]'' ({{msg|Undeletebtn}}), ''Reset'' button is called ''[[MediaWiki:Undeletereset/{{SUBPAGENAME}}|{{int:Undeletereset}}]]'' ({{msg|Undeletereset}}).",
+'undeleteextrahelp' => "Help message displayed when restoring history of a page. In your language, ''Restore'' is called ''[[MediaWiki:Undeletebtn/{{SUBPAGENAME}}|{{int:Undeletebtn}}]]'' ({{msg|Undeletebtn}}), The ''Reset'' button is called ''[[MediaWiki:Undeletereset/{{SUBPAGENAME}}|{{int:Undeletereset}}]]'' ({{msg|Undeletereset}}).",
'undelete-revision' => 'Shown in "View and restore deleted pages" ([[Special:Undelete/$1]]).
* $1: deleted page name
@@ -2568,11 +2641,14 @@ This message was something like "unlock move protection" in the past.',
'undelete-show-file-submit' => '{{Identical|Yes}}',
# Namespace form on various pages
-'namespace' => 'This message is located at [[Special:Contributions]].',
-'invert' => 'Displayed in [[Special:RecentChanges|RecentChanges]], [[Special:RecentChangesLinked|RecentChangesLinked]] and [[Special:Watchlist|Watchlist]]
+'namespace' => 'This message is located at [[Special:Contributions]].',
+'invert' => 'Displayed in [[Special:RecentChanges|RecentChanges]], [[Special:RecentChangesLinked|RecentChangesLinked]] and [[Special:Watchlist|Watchlist]]
{{Identical|Invert selection}}',
-'blanknamespace' => 'Name for main namespace (blank namespace) in drop-down menus at [[Special:RecentChanges]] and other special pages.',
+'tooltip-invert' => 'Used in [[Special:Recentchanges]] as a tooltip for the invert checkbox. See also the message {{msg-mw|invert}}',
+'namespace_association' => 'Used in [[Special:Recentchanges]] with a checkbox which selects the associated namespace to be added to the selected namespace, so that both are searched (or excluded depending on another checkbox selection). The association is between a namespace and its talk namespace.',
+'tooltip-namespace_association' => 'Used in [[Special:Recentchanges]] as a tooltip for the associated namespace checkbox. See also the message {{msg-mw|namespace_association}}',
+'blanknamespace' => 'Name for main namespace (blank namespace) in drop-down menus at [[Special:RecentChanges]] and other special pages.',
# Contributions
'contributions' => "Display name for the 'User contributions', shown in the sidebar menu of all user pages and user talk pages. Also the page name of the target page. The target page shows an overview of the most recent contributions by a user.",
@@ -2651,74 +2727,68 @@ Parameter $1 is the message "[[MediaWiki:Hide/{{SUBPAGENAME}}|hide]]" or "[[Medi
'whatlinkshere-filters' => '{{Identical|Filter}}',
# Block/unblock
-'blockip' => 'The title of the special page [[Special:BlockIP]].
+'block' => 'Name of the special page on [[Special:SpecialPages]]',
+'unblock' => 'Name of the special page on [[Special:SpecialPages]]',
+'blockip' => 'The title of the special page [[Special:BlockIP]].
{{Identical|Block user}}',
-'blockip-title' => '{{Identical|Block user}}',
-'blockip-legend' => 'Legend/Header for the fieldset around the input form of [[Special:BlockIP]].
+'blockip-title' => '{{Identical|Block user}}',
+'blockip-legend' => 'Legend/Header for the fieldset around the input form of [[Special:BlockIP]].
{{Identical|Block user}}',
-'ipaddress' => '{{Identical|IP Address}}',
-'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].
+'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].
{{Identical|Reason}}',
-'ipbreasonotherlist' => '{{Identical|Other reason}}',
-'ipbanononly' => '{{Identical|Block anonymous users only}}',
-'ipbcreateaccount' => '{{Identical|Prevent account creation}}',
-'ipbemailban' => '{{Identical|Prevent user from sending e-mail}}',
-'ipbenableautoblock' => '{{Identical|Automatically block ...}}',
-'ipbsubmit' => '{{Identical|Block this user}}',
-'ipbother' => '{{Identical|Other time}}',
-'ipboptions' => "* Description: Options for the duration of the block.
+'ipbreasonotherlist' => '{{Identical|Other reason}}',
+'ipbcreateaccount' => '{{Identical|Prevent account creation}}',
+'ipbemailban' => '{{Identical|Prevent user from sending e-mail}}',
+'ipbenableautoblock' => '{{Identical|Automatically block ...}}',
+'ipbsubmit' => '{{Identical|Block this user}}',
+'ipbother' => '{{Identical|Other time}}',
+'ipboptions' => "* Description: Options for the duration of the block.
* <font color=\"red\">Be careful:</font> '''1 translation:1 english''', so the first part is the translation and the second part should stay in English.
* Example: See e.g. [[MediaWiki:Ipboptions/nl]] if you still don't know how to do it.
{{Identical|Infinite}}",
-'ipbotheroption' => '{{Identical|Other}}',
-'ipbotherreason' => '{{Identical|Other/additional reason}}',
-'ipbhidename' => 'This is the label for a checkbox in the user block form on [[Special:Block]].',
-'ipbwatchuser' => 'This is an option on [[Special:BlockIP]] to watch the user page and talk page of the blocked user',
-'ipballowusertalk' => 'Option in [[Special:BlockIP]] that allows the blocked user to edit own talk page.',
-'ipb-change-block' => 'Confirmation checkbox required for blocks that would override an earlier block. Appears together with {{msg|ipb-needreblock}}.',
-'badipaddress' => 'An error message shown when one entered an invalid IP address in blocking page.',
-'blockipsuccesstext' => '<nowiki>{{</nowiki>[[Gender|GENDER]]<nowiki>}}</nowiki> is supported.',
-'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}}.',
-'ipusubmit' => 'Used as button text on Special:BlockList?action=unblock. To see the message:
+'ipbotheroption' => '{{Identical|Other}}',
+'ipbotherreason' => '{{Identical|Other/additional reason}}',
+'ipbhidename' => 'This is the label for a checkbox in the user block form on [[Special:Block]].',
+'ipbwatchuser' => 'This is an option on [[Special:BlockIP]] to watch the user page and talk page of the blocked user',
+'ipb-change-block' => 'Confirmation checkbox required for blocks that would override an earlier block. Appears together with {{msg|ipb-needreblock}}.',
+'badipaddress' => 'An error message shown when one entered an invalid IP address in blocking page.',
+'blockipsuccesstext' => '<nowiki>{{</nowiki>[[Gender|GENDER]]<nowiki>}}</nowiki> is supported.',
+'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}}.',
+'ipusubmit' => 'Used as button text on Special:BlockList?action=unblock. To see the message:
* Go to [[Special:BlockList]]
* 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' => 'Do not translate the namespace "User:". $1 - the IP address or username that was unblocked.',
-'ipblocklist' => 'Title of [[Special:Ipblocklist]].',
-'ipblocklist-sh-userblocks' => 'Top selection button at [[Special:IPBlockList]], which means Show/Hide indefinite blocks
-
-* $1 - word "{{msg|Hide}}" or "{{msg|Show}}"',
-'ipblocklist-sh-tempblocks' => 'Top selection button at [[Special:IPBlockList]]
+'unblocked' => 'Do not translate the namespace "User:". $1 - the IP address or username that was unblocked.',
+'unblocked-range' => 'Shown when successfully lifting a rangeblock, so do not link to contributions.
+* $1 - the range that was unblocked.',
+'ipblocklist' => 'Title of [[Special:Ipblocklist]].',
+'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]].',
+'blocklist-expiry' => 'This is a column header in the table on the page [[Special:BlockList]].',
+'blocklist-by' => 'This is a column header in the table on the page [[Special:BlockList]].',
+'blocklist-params' => 'This is a column header in the table on the page [[Special:BlockList]].',
+'blocklist-reason' => 'This is a column header in the table on the page [[Special:BlockList]].
-* $1 - word "{{msg|Hide}}" or "{{msg|Show}}"',
-'ipblocklist-sh-addressblocks' => 'Top selection button at [[Special:IPBlockList]]
-
-* $1 - word "{{msg|Hide}}" or "{{msg|Show}}"',
-'ipblocklist-submit' => '{{Identical|Search}}',
-'ipblocklist-localblock' => '[[File:Special IPBlockList new.png|thumb|Example]]
+{{Identical|Reason}}',
+'ipblocklist-submit' => '{{Identical|Search}}',
+'ipblocklist-localblock' => '[[File:Special IPBlockList new.png|thumb|Example]]
Used on [[Special:IPBlockList]] as header when global blocks exists too.',
-'ipblocklist-otherblocks' => '[[File:Special IPBlockList new.png|thumb|Example]]
+'ipblocklist-otherblocks' => '[[File:Special IPBlockList new.png|thumb|Example]]
Used on [[Special:IPBlockList]] as header for other blocks, i.e. from GlobalBlocking or TorBlocks.',
-'blocklistline' => 'This is the text of an entry in the [[Special:BlockList]].
-* $1 is the hour and date of the block.
-* $2 is the sysop.
-* $3 is the blocked user or IP (with link to contributions and talk)
-* $4 contains "hour and date of expiry" ({{msg-mw|Expiringblock}} or {{msg-mw|Infiniteblock}})
-
-See also {{msg-mw|Blocklogentry}}.',
-'infiniteblock' => "* contents of $4 in {{msg-mw|Blocklistline|notext=1}}: (''{{int:Blocklistline}}'')
+'infiniteblock' => "* contents of $4 in {{msg-mw|Blocklistline|notext=1}}: (''{{int:Blocklistline}}'')
* contents of $4 in {{msg-mw|Globalblocking-blocked|notext=1}}:
<blockquote>''{{int:Globalblocking-blocked}}''</blockquote>
*See also {{msg-mw|Expiringblock}}
{{Identical|Infinite}}",
-'expiringblock' => 'Parameters:
+'expiringblock' => 'Parameters:
* $1 is a date
* $2 is a time
@@ -2726,50 +2796,50 @@ Usage:
* Substituted as $4 in in {{msg-mw|Blocklistline|notext=1}}
* Substituted as $4 in in {{msg-mw|Globalblocking-blocked|notext=1}}
* See also {{msg-mw|Infiniteblock}}',
-'anononlyblock' => 'Part of the log entry of user block.
+'anononlyblock' => 'Part of the log entry of user block.
{{Identical|Anon only}}',
-'noautoblockblock' => '{{Identical|Autoblock disabled}}',
-'emailblock' => '{{Identical|E-mail blocked}}',
-'blocklist-nousertalk' => 'Used in [[Special:IPBlockList]] when "Allow this user to edit own talk page while blocked" option hasn\'t been flagged. See also {{msg-mw|Block-log-flags-nousertalk}}.',
-'ipblocklist-empty' => 'Shown on page [[Special:Blocklist]], if no blocks are to be shown.',
-'blocklink' => "Display name for a link that, when selected, leads to a form where a user can be blocked. Used in page history and recent changes pages. Example: \"''UserName (Talk | contribs | '''block''')''\".",
-'change-blocklink' => 'Used to name the link on Special:Log',
-'contribslink' => 'Short for "contributions". Used as display name for a link to user contributions on history pages, [[Special:RecentChanges]], [[Special:Watchlist]], etc.',
-'blocklogpage' => "The page name of [[Special:Log/block]]. Also appears in the drop down menu of [[Special:Log]] pages and in the action links of Special:Contributions/''Username'' pages (e.g. \"For Somebody (talk | block log | logs)\").
+'noautoblockblock' => '{{Identical|Autoblock disabled}}',
+'emailblock' => '{{Identical|E-mail blocked}}',
+'blocklist-nousertalk' => 'Used in [[Special:IPBlockList]] when "Allow this user to edit own talk page while blocked" option hasn\'t been flagged. See also {{msg-mw|Block-log-flags-nousertalk}}.',
+'ipblocklist-empty' => 'Shown on page [[Special:Blocklist]], if no blocks are to be shown.',
+'blocklink' => "Display name for a link that, when selected, leads to a form where a user can be blocked. Used in page history and recent changes pages. Example: \"''UserName (Talk | contribs | '''block''')''\".",
+'change-blocklink' => 'Used to name the link on Special:Log',
+'contribslink' => 'Short for "contributions". Used as display name for a link to user contributions on history pages, [[Special:RecentChanges]], [[Special:Watchlist]], etc.',
+'blocklogpage' => "The page name of [[Special:Log/block]]. Also appears in the drop down menu of [[Special:Log]] pages and in the action links of Special:Contributions/''Username'' pages (e.g. \"For Somebody (talk | block log | logs)\").
{{Identical|Block log}}",
-'blocklog-showlog' => 'Parameters:
+'blocklog-showlog' => 'Parameters:
* $1 is the blocked user. Can be used for GENDER (optional)',
-'blocklog-showsuppresslog' => 'Parameters:
+'blocklog-showsuppresslog' => 'Parameters:
* $1 is the blocked user. Can be used for GENDER (optional)',
-'blocklogentry' => 'This is the text of an entry in the Block log, and recent changes, after hour (and date, only in the Block log) and sysop name:
+'blocklogentry' => 'This is the text of an entry in the Block log, and recent changes, after hour (and date, only in the Block log) and sysop name:
* $1 is the blocked user or IP (with link to contributions and talk)
* $2 is the duration of the block (hours, days etc.) or the specified expiry date
* $3 contains "(details) (\'\'reason\'\')"
See also {{msg-mw|Blocklistline}}.',
-'reblock-logentry' => 'This is the text of an entry in the Block log (and Recent Changes), after hour (and date, only in the Block log) and sysop name:
+'reblock-logentry' => 'This is the text of an entry in the Block log (and Recent Changes), after hour (and date, only in the Block log) and sysop name:
* $1 is the user being reblocked
* $2 is the expiry time of the block
* $3 are extra parameters like "account creation blocked" (they are automatically between brackets)',
-'blocklogtext' => 'Appears on top of [[Special:Log/block]].',
-'unblocklogentry' => 'This is the text of an entry in the Block log (and Recent Changes), after hour (and date, only in the Block log) and sysop name:
+'blocklogtext' => 'Appears on top of [[Special:Log/block]].',
+'unblocklogentry' => 'This is the text of an entry in the Block log (and Recent Changes), after hour (and date, only in the Block log) and sysop name:
* $1 is the user being unblocked',
-'block-log-flags-noautoblock' => '{{Identical|Autoblock disabled}}',
-'block-log-flags-noemail' => "Log message for [[Special:Log/block]] to note that a user cannot use the 'email another user' option.
+'block-log-flags-noautoblock' => '{{Identical|Autoblock disabled}}',
+'block-log-flags-noemail' => "Log message for [[Special:Log/block]] to note that a user cannot use the 'email another user' option.
{{Identical|E-mail blocked}}",
-'block-log-flags-nousertalk' => 'Used in [[Special:Log/block]] when "Allow this user to edit own talk page while blocked" option hasn\'t been flagged. See also {{msg-mw|Blocklist-nousertalk}}.',
-'ipb_expiry_temp' => 'Warning message displayed on [[Special:BlockIP]] if the option "hide username" is selected but the expiry time is not infinite.',
-'ipb_already_blocked' => '{{Identical|$1 is already blocked}}',
-'ipb-otherblocks-header' => '[[File:Special.Block with other blocks from GlobalBlocking and TorBlocks.png|thumb|Example]]
+'block-log-flags-nousertalk' => 'Used in [[Special:Log/block]] when "Allow this user to edit own talk page while blocked" option hasn\'t been flagged. See also {{msg-mw|Blocklist-nousertalk}}.',
+'ipb_expiry_temp' => 'Warning message displayed on [[Special:BlockIP]] if the option "hide username" is selected but the expiry time is not infinite.',
+'ipb_already_blocked' => '{{Identical|$1 is already blocked}}',
+'ipb-otherblocks-header' => '[[File:Special.Block with other blocks from GlobalBlocking and TorBlocks.png|thumb|Example]]
Used on [[Special:Block]] as header for other blocks, i.e. from GlobalBlocking or TorBlocks',
-'blockme' => 'The page title of [[Special:Blockme]], a feature which is disabled by default.',
-'proxyblocksuccess' => '{{Identical|Done}}',
-'sorbs' => '{{optional}}',
-'cant-see-hidden-user' => 'Used as (red) error message on Special:Block when you try to change (as sysop w/o the hideuser right) the block of a hidden user.',
-'ipbblocked' => 'Error message shown when a user tries to alter block settings when they are themselves blocked.',
-'ipbnounblockself' => 'Error message shown when a user without the <tt>unblockself</tt> right tries to unblock themselves.',
+'blockme' => 'The page title of [[Special:Blockme]], a feature which is disabled by default.',
+'proxyblocksuccess' => '{{Identical|Done}}',
+'sorbs' => '{{optional}}',
+'cant-see-hidden-user' => 'Used as (red) error message on Special:Block when you try to change (as sysop w/o the hideuser right) the block of a hidden user.',
+'ipbblocked' => 'Error message shown when a user tries to alter block settings when they are themselves blocked.',
+'ipbnounblockself' => 'Error message shown when a user without the <tt>unblockself</tt> right tries to unblock themselves.',
# Developer tools
'lockdb' => 'The title of the special page [[Special:LockDB]].
@@ -2785,12 +2855,13 @@ Used on [[Special:Block]] as header for other blocks, i.e. from GlobalBlocking o
{{Identical|Unlock database}}',
'lockfilenotwritable' => "'No longer needed' on wikipedia.",
+'lockedbyandtime' => 'Used as part of the message when a database is locked through [[Special:LockDB]]. Parameters:
+* $1 is the user that locked the database.
+* $2 is the date on which the lock was made
+* $3 is the time at which the lock was made',
# Move page
'move-page' => 'Header of the special page to move pages. $1 is the name of the page to be moved.',
-'move-page-backlink' => '{{optional|Translate it only if you have to change it, i.e. for RTL wikis}}
-
-Shown as subtitle of [[Special:MovePage/testpage]]. $1 is the title of the page to be moved.',
'move-page-legend' => 'Legend of the fieldset around the input form of [[Special:MovePage/testpage]].
{{Identical|Move page}}',
@@ -2931,7 +3002,7 @@ Related messages: {{msg|right-importupload|pl=yes}} (the user right for this).',
{{Identical|Log out}}',
'tooltip-ca-talk' => "Tooltip shown when hovering over the \"[[MediaWiki:Talk/{{SUBPAGENAME}}|{{int:talk}}]]\" tab.
-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 a technical definition of 'content namespaces' see [http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Content_namespaces Mediawiki].
+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 a technical definition of 'content namespaces' see [//www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Content_namespaces Mediawiki].
Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
@@ -2965,7 +3036,7 @@ Possible alternatives to the word 'content' are 'subject matter' or 'wiki subjec
'tooltip-t-emailuser' => 'Tooltip shown when hovering over the {{msg|emailuser}} link in the toolbox (sidebar, below).',
'tooltip-t-upload' => 'Tooltip shown when hovering over the link to upload files shown in the side bar menu on all pages.',
'tooltip-t-specialpages' => 'The tooltip when hovering over the link "[[MediaWiki:Specialpages/{{SUBPAGENAME}}|{{int:specialpages}}]]" going to a list of all special pages available in the wiki.',
-'tooltip-ca-nstab-main' => "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 [http://www.mediawiki.org/wiki/Manual:Using_custom_namespaces#Content_namespaces Mediawiki].
+'tooltip-ca-nstab-main' => "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].
Possible alternatives to the word 'content' are 'subject matter' or 'wiki subject' or 'wiki purpose'.
@@ -2990,13 +3061,44 @@ If the length of the translated message is over 60 characters (including spaces)
{{Identical|Undo}}{{Identical|Revert}}',
# Stylesheets
-'common.css' => 'CSS applied to all users.',
-'monobook.css' => 'CSS applied to users using Monobook skin.',
-'handheld.css' => 'Style that can be applied on [[w:handheld devices|handheld devices]] (e.g. mobile phones), <code>$wgHandheldStyle</code> is an optional configuration variable which specifies a style sheet file for handheld devices.',
+'common.css' => '{{optional}}
+CSS applied to all users.',
+'standard.css' => '{{optional}}',
+'nostalgia.css' => '{{optional}}',
+'cologneblue.css' => '{{optional}}',
+'monobook.css' => '{{optional}}
+CSS applied to users using Monobook skin.',
+'myskin.css' => '{{optional}}',
+'chick.css' => '{{optional}}',
+'simple.css' => '{{optional}}',
+'modern.css' => '{{optional}}',
+'vector.css' => '{{optional}}',
+'print.css' => '{{optional}}',
+'handheld.css' => '{{optional}}
+Style that can be applied on [[w:handheld devices|handheld devices]] (e.g. mobile phones), <code>$wgHandheldStyle</code> is an optional configuration variable which specifies a style sheet file for handheld devices.',
+'noscript.css' => '{{optional}}',
+'group-autoconfirmed.css' => '{{optional}}',
+'group-bot.css' => '{{optional}}',
+'group-sysop.css' => '{{optional}}',
+'group-bureaucrat.css' => '{{optional}}',
# Scripts
-'common.js' => 'JS for all users.',
-'monobook.js' => 'JS for users using Monobook skin.',
+'common.js' => '{{optional}}
+JS for all users.',
+'standard.js' => '{{optional}}',
+'nostalgia.js' => '{{optional}}',
+'cologneblue.js' => '{{optional}}',
+'monobook.js' => '{{optional}}
+JS for users using Monobook skin.',
+'myskin.js' => '{{optional}}',
+'chick.js' => '{{optional}}',
+'simple.js' => '{{optional}}',
+'modern.js' => '{{optional}}',
+'vector.js' => '{{optional}}',
+'group-autoconfirmed.js' => '{{optional}}',
+'group-bot.js' => '{{optional}}',
+'group-sysop.js' => '{{optional}}',
+'group-bureaucrat.js' => '{{optional}}',
# Attribution
'anonymous' => 'This message is shown when viewing the credits of a page (example: {{fullurl:Main Page|action=credits}}). Note that this action is disabled by default (currently enabled on translatewiki.net).
@@ -3049,6 +3151,19 @@ See also {{msg-mw|Anonuser}} and {{msg-mw|Siteusers}}.',
# Spam protection
'spam_reverting' => '{{Identical|Revert}}',
+# Info page
+'pageinfo-title' => 'Page title for action=info.
+
+* $1 is the page name',
+'pageinfo-header-edits' => 'Table section header in action=info.
+{{Identical|Edit}}',
+'pageinfo-header-watchlist' => 'Table section header in action=info.',
+'pageinfo-header-views' => 'Table section header in action=info.
+{{Identical|View}}',
+'pageinfo-subjectpage' => 'Table header in action=info.
+{{Identical|Page}}',
+'pageinfo-talkpage' => 'Table header in action=info.',
+
# Skin names
'skinname-standard' => '{{optional}}',
'skinname-nostalgia' => '{{optional}}',
@@ -3058,17 +3173,7 @@ See also {{msg-mw|Anonuser}} and {{msg-mw|Siteusers}}.',
'skinname-chick' => '{{optional}}',
'skinname-simple' => '{{optional}}',
'skinname-modern' => '{{optional}}',
-
-# Math options
-'mw_math_png' => 'In user preferences. All mw_math_* messages MUST be different, things will break otherwise!',
-'mw_math_simple' => 'In [[Special:Preferences|user preferences]]. All mw_math_* messages MUST be different, things will break otherwise!',
-'mw_math_html' => 'In user preferences. All mw_math_* messages MUST be different, things will break otherwise!',
-'mw_math_source' => 'In user preferences (math). All mw_math_* messages MUST be different, things will break otherwise!',
-'mw_math_modern' => 'In user preferences (math). All mw_math_* messages MUST be different, things will break otherwise!',
-'mw_math_mathml' => 'In user preferences. All mw_math_* messages MUST be different, things will break otherwise!',
-
-# Math errors
-'math_syntax_error' => '{{Identical|Syntax error}}',
+'skinname-vector' => '{{optional}}',
# Patrolling
'markedaspatrolledtext' => '{{Identical|Markedaspatrolled}}',
@@ -3108,10 +3213,21 @@ Parameters:
* $2 is the height of the image(s) in pixels.
* $3 is the file size as a number followed by a unit — for example: 99 KB
* $4 is the MIME type, a formalized textual information — for example: <code>image/jpeg</code>',
+'file-info-size-pages' => 'File info displayed on file description page, when the file is a multi-page document, with at least two pages. Like {{msg-mw|file-info-size}} but $5 is the total number of pages in the document.
+
+Parameters:
+* $1 is the width of the image pages in pixels.
+* $2 is the height of the image pagess in pixels.
+* $3 is the file size as a number followed by a unit — for example: 99 KB
+* $4 is the MIME type, a formalized textual information — for example: <code>image/jpeg</code>
+* $5 is the total number of pages in the document.',
'file-nohires' => 'File info displayed on file description page. For example of message in use see [[:File:Mouse10.gif]].',
'svg-long-desc' => 'Displayed under an SVG image at the image description page. Note that argument 3 is a string that includes the file size unit symbol. See for example [[:File:Yes check.svg]].',
'show-big-image' => 'Displayed under an image at the image description page, when it is displayed smaller there than it was uploaded.',
-'show-big-image-thumb' => 'File info displayed on file description page.',
+'show-big-image-size' => '
+Parameters:
+* $1 is the width of the image(s) in pixels.
+* $2 is the height of the image(s) in pixels.',
'file-info-gif-looped' => 'Part of the information provided about a [http://en.wikipedia.org/wiki/Gif .gif file] on its file description page. Looped means repeating in the context of an animated gif. It is a sequence of images, each displayed after the other, and the first one displayed after the last, in a never ending loop. For example of message in use see [[:File:Mouse10.gif]].',
'file-info-gif-frames' => 'Part of the information provided about a [http://en.wikipedia.org/wiki/Gif .gif file] on its file description page.',
'file-info-png-looped' => 'Part of the information provided about a [http://en.wikipedia.org/wiki/APNG .apng file] on its file description page. Looped means repeating indefinetly in the context of an animated png. It is a sequence of images, each displayed after the other, and the first one displayed after the last, in a never ending loop.',
@@ -3231,15 +3347,26 @@ Varient Option for wikis with variants conversion enabled.',
'variantname-tg-latn' => '{{optional}}',
'variantname-tg' => '{{optional}}',
+# Variants for Inuktitut language
+'variantname-ike-cans' => '{{optional}}',
+'variantname-ike-latn' => '{{optional}}',
+'variantname-iu' => '{{optional}}',
+
# Metadata
-'metadata' => 'The title of a section on an image description page, with information and data about the image. For example of message in use see [http://commons.wikimedia.org/wiki/File:Titan-crystal_bar.JPG Commons].
+'metadata' => 'The title of a section on an image description page, with information and data about the image. For example of message in use see [http://commons.wikimedia.org/wiki/File:Titan-crystal_bar.JPG Commons].
{{Identical|Metadata}}',
-'metadata-expand' => 'On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on this link, you can see more data and information. For the link to hide back the less important data, see "[[MediaWiki:Metadata-collapse/{{SUBPAGENAME}}|{{int:metadata-collapse}}]]".',
-'metadata-collapse' => 'On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on the link "[[MediaWiki:Metadata-expand/{{SUBPAGENAME}}|{{int:metadata-expand}}]]", you can see more data and information. This message is for the link to hide back the less important data.',
-'metadata-fields' => "'''Warning:''' Do not translate list items, only translate the text! So leave \"<tt>* make</tt>\" and the other items exactly as they are.
+'metadata-expand' => 'On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on this link, you can see more data and information. For the link to hide back the less important data, see "[[MediaWiki:Metadata-collapse/{{SUBPAGENAME}}|{{int:metadata-collapse}}]]".',
+'metadata-collapse' => 'On an image description page, there is mostly a table containing data (metadata) about the image. The most important data are shown, but if you click on the link "[[MediaWiki:Metadata-expand/{{SUBPAGENAME}}|{{int:metadata-expand}}]]", you can see more data and information. This message is for the link to hide back the less important data.',
+'metadata-fields' => "'''Warning:''' Do not translate list items, only translate the text! So leave \"<tt>* make</tt>\" and the other items exactly as they are.
The sentences are for explanation only and are not shown to the user.",
+'metadata-langitem' => '{{optional}}
+This is used for constructing the list of translations when a metadata property is translated into multiple languages.
+
+$1 is the value of the property (in one language), $2 is the language name that this translation is for (or language code if language name cannot be determined), $3 is the language code.',
+'metadata-langitem-default' => '{{optional}}
+Similar to "metadata-langitem" but for the case where a multilingual property has a default specified that does not specify what language the default is in. $1 is the value of the property.',
# EXIF tags
'exif-imagewidth' => '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].
@@ -3266,13 +3393,11 @@ This is the horizontal resolution in either dots/inch or dots/cm.',
'exif-yresolution' => '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 vertical resolution in either dots/inch or dots/cm.',
-'exif-resolutionunit' => '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-stripoffsets' => '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-rowsperstrip' => '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-stripbytecounts' => '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-jpeginterchangeformat' => '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-jpeginterchangeformatlength' => '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-transferfunction' => '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-whitepoint' => '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-primarychromaticities' => 'The chromaticity of the three primary colours of the image. Normally this tag is not necessary, since colour space is specified in the colour space information tag. This should probably be translated it as "Chromaticity of primary colours".
@@ -3327,7 +3452,6 @@ This contains how the information in the picture is stored. This is most commonl
'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].',
-'exif-makernote' => '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-usercomment' => "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].
Comments by user. Sometimes used like ImageDescription when the ImageDescription contained non-ascii characters. (Technically ImageDescription is supposed to contain ascii characters. In practise utf-8 is used in ImageDescription, so this field isn't used too much.)",
@@ -3374,7 +3498,6 @@ How sensitive each channel (colour) of the photo is to light. This tag is almost
'exif-isospeedratings' => '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].
The iso speed of the film used in the camera. This is basically a measure of how sensitive the film in the camera is to light.',
-'exif-oecf' => '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-shutterspeedvalue' => '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].
[http://en.wikipedia.org/wiki/Shutter_speed Shutter speed] is the time that the camera shutter is open.
@@ -3418,9 +3541,6 @@ This exif property contains the position of the main subject. The first two numb
'exif-flashenergy' => '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 bright the flash is in beam candle power seconds.',
-'exif-spatialfrequencyresponse' => '[http://en.wikipedia.org/wiki/Spatial_frequency Spatial frequency] is the number of edges per degree of the visual angle. The human eye scans the viewed scenary for edges and uses these edges to detect what it sees. Few edges make it hard to recognize the seen objects, but many edges do so too. A rate of about 4 to 6 edges per degree of the viewing range is seen as optimal for the recognition of objects.
-
-Spatial frequency response is a measure for the capability of camera lenses to depict spatial frequencies.',
'exif-focalplanexresolution' => '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].
Indicates the number of pixels in the image width (X) direction per FocalPlaneResolutionUnit on the camera focal plane.',
@@ -3437,9 +3557,6 @@ Determines if the image was recorded by a digital camera adhering to DSC standar
'exif-scenetype' => '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].
If the image is directly photographed (taken by a digital camera).',
-'exif-cfapattern' => '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].
-
-CFA stands for [http://en.wikipedia.org/wiki/Color_filter_array color filter array].',
'exif-customrendered' => '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/Image_processing image processing].',
@@ -3475,12 +3592,120 @@ See also Wikipedia on [http://en.wikipedia.org/wiki/Focal_length#In_photography
{{Identical|Longitude}}',
'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}}.',
+'exif-keywords' => "List of keywords for the photograph (or other media).
+
+This can come from IPTC-iim 2:25 keyword field, or XMP's dc:subject field.",
+'exif-worldregioncreated' => "The world region (generally that means continent, but could also include 'World' as a whole) where the media was created.",
+'exif-countrycreated' => 'Country that the picture was taken in. Note this is where it was taken, not what country is depicted in the picture.',
+'exif-countrycodecreated' => 'ISO Code for the country that the picture was taken in. Note this is where it was taken, not what country is depicted in the picture.',
+'exif-provinceorstatecreated' => 'Province, state, territory, or other secondary political division (bigger than a city, smaller then a country) where that the picture was taken in. Note this is where it was taken, not what province/state is depicted in the picture.',
+'exif-citycreated' => 'City that the picture was taken in. Note this is where it was taken, not what city is depicted in the picture. This is generally only used if different from the city depicted in photo.',
+'exif-sublocationcreated' => 'Sub-location of the city that the picture was taken in. This might be a street, a part of town, etc. Note this is where it was taken, not what sub-location is depicted in the picture.',
+'exif-worldregiondest' => 'World region shown. This generally means the continent, but could have the value of world as well.',
+'exif-countrydest' => 'Country shown. See also {{msg-mw|exif-countrycreated}}.',
+'exif-countrycodedest' => 'ISO Code for country shown',
+'exif-provinceorstatedest' => 'Province, state, territory, or other secondary political division shown.',
+'exif-citydest' => 'City shown',
+'exif-sublocationdest' => 'Sub-location of city shown. This could be an address, a street, an area of town, etc.',
'exif-objectname' => "This is a short name for the image or other media. (As compared to {{msg-mw|exif-imagedescription}} which is a long description of the image). This is sometimes an id number used to identify the photo, or a (short) title of the photo.
This property is extracted based on XMP's dc:title property ( http://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart1.pdf ), PNG's title keyword ( http://www.w3.org/TR/PNG/#11keywords ), or IPTC-iim 2:05 Object name property ( http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf ).",
+'exif-specialinstructions' => 'Special instructions for how to use the image/media. This might include embargo notices, or other warnings.
+
+This is IPTC-iim property 2:40. See http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf for details.',
+'exif-headline' => 'A short version of the image caption. The IPTC4XMP standard is clear that "this is not the same thing as title [ {{msg-mw|exif-objectname}} ]".
+
+This is extracted from XMP\'s photoshop:headline ( http://www.iptc.org/std/photometadata/specification/IPTC-PhotoMetadata-201007_1.pdf ) and IPTC-iim: 2:105 Headline tag ( http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf ).',
+'exif-credit' => 'Provider/credit.
+
+Who gave us the image. This might be different from the creator of the image. This is IPTC-iim property 2:110',
+'exif-source' => 'See IPTC-iim standard 2:115 - http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf.
+
+This is who originally owned the image (a person, stock photo agency, etc). This does not refer to the image this image is based on.
+{{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.',
+'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 {{msg-mw|exif-objectcycle-a}}, {{msg-mw|exif-objectcycle-p}} and {{msg-mw|exif-objectcycle-b}} for the values that this message labels.',
+'exif-contact' => 'Contact information of the person responsible for the image.',
+'exif-writer' => 'The person who wrote the caption of the image. See Description Writer on page 18 of http://www.iptc.org/std/photometadata/specification/IPTC-PhotoMetadata-201007_1.pdf',
+'exif-languagecode' => "Language of image/media.
+
+This is taken from IPTC-iim 2:135 and XMP's dc:language.
+{{Identical|Language}}",
+'exif-iimversion' => 'IIM version number. Version of information interchange 2:xx records. 4 is current version. 2 is often seen as well. This is the value stored 2:00 field (Note, iptc-iim also stores a model version in 1:00. This version field displays the 2:00 record only)',
+'exif-iimcategory' => 'Primary Category of image (or other media). Technically supposed to be limited to 3 characters, however that is not always followed. Some common 3 letter category abbreviations are expanded by mediawiki. Similar to {{msg-mw|exif-keywords}}.
+{{identical|Category}}',
+'exif-iimsupplementalcategory' => 'Supplemental categories. Like {{msg-mw|exif-iimcategory}} but for categories beyond the main one.',
+'exif-datetimeexpires' => 'Date after which not to use the image (media). This is often used in news situations were certain things (like forecasts) should not be used after a specified date.',
+'exif-datetimereleased' => 'Earliest date the image (media) can be used. See 2:30 of http://www.iptc.org/std/IIM/4.1/specification/IIMV4.1.pdf',
+'exif-originaltransmissionref' => 'This is basically a job id. This could help an individual keep track of for what reason the image was created. See Job Id on page 19 of http://www.iptc.org/std/photometadata/specification/IPTC-PhotoMetadata-201007_1.pdf',
+'exif-identifier' => 'A formal identifier for the image. Often this is a URL.',
+'exif-lens' => 'Description of lens used. This is taken from aux:Lens XMP property. See http://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart2.pdf',
+'exif-serialnumber' => 'Serial number of camera. See aux:SerialNumber in http://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart2.pdf',
+'exif-cameraownername' => 'Who owns the camera.',
+'exif-label' => 'Label given to the image for organizational purposes. This is very similar to {{msg-mw|exif-keywords}}. Label is more used by a person to organize their media, where keywords are used to describe the photo contents itself.
+
+This property can come from xmp:Label in XMP ( http://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart1.pdf ) or the label textual chunk in PNG.
+{{Identical|Label}}',
+'exif-datetimemetadata' => 'Date metadata was last modified. Typically this refers to XMP metadata.',
+'exif-nickname' => 'Short informal name of image. See http://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart2.pdf',
+'exif-rating' => 'This is a rating for how good the image is. The range is between 1 to 5 (5 highest), with an additional option of "reject".',
+'exif-rightscertificate' => 'URL of Rights management certificate. This comes from XMPRights:Certificate property. See http://www.adobe.com/content/dam/Adobe/en/devnet/xmp/pdfs/XMPSpecificationPart1.pdf',
+'exif-copyrighted' => 'Copyright status. This is a true or false field showing either Copyrighted or Public Domain. It should be noted that Copyrighted includes freely-licensed works.',
+'exif-copyrightowner' => 'Copyright owner. Can have more than one person or entity.',
+'exif-usageterms' => "Terms under which you're allowed to use the image/media.",
+'exif-webstatement' => "URL detailing the copyright status of the image, and how you're allowed to use the image. Often this is a link to a creative commons license, however the creative commons people recommend using a page that generally contains specific information about the image, and recommend using {{msg-mw|exif-licenseurl}} for linking to the license. See http://wiki.creativecommons.org/XMP",
+'exif-originaldocumentid' => 'A unique id of the original document (image) that this document (image) is based on.',
+'exif-licenseurl' => 'URL for copyright license. This is almost always a creative commons license since this information comes from the creative commons namespace of XMP (but could be a link to any type of license). See also {{msg-mw|exif-webstatement}}',
+'exif-morepermissionsurl' => 'A url where you can "buy" (or otherwise negotiate) to get more rights for the image.',
+'exif-attributionurl' => "A url that you're supposed to use when re-using the image.",
+'exif-preferredattributionname' => 'The preferred name to give credit to when re-using this image.',
+'exif-disclaimer' => 'Disclaimer for the image.',
+'exif-contentwarning' => 'Content warning for the image. For example if the image/media contains violent, sexual or otherwise offensive content.
+
+This comes from the png warning textual chunk. See http://www.w3.org/TR/PNG/#11keywords',
+'exif-intellectualgenre' => 'The "intellectual genre" of the image/media item. This typically means the type of item it is, ignoring the actual content of the item. See http://cv.iptc.org/newscodes/genre/ for some examples of the types of values this field might have.',
+'exif-subjectnewscode' => 'A (or multiple) codes describing the content of the image/media. The code is an 8 digit number representing some sort of category. The code is hierarchical , with the first two digits being a broad category (this broad category is shown to the user. See {{msg-mw|exif-subjectnewscode-value}} for how the value this field labels is shown to user). See http://cv.iptc.org/newscodes/subjectcode for the full list of codes.',
+'exif-scenecode' => 'IPTC (numeric) scene code. Contains information on what type of scene it is (like panoramic scene, close-up, etc). See http://cv.iptc.org/newscodes/scene/',
+'exif-event' => 'The event depicted',
+'exif-organisationinimage' => 'Name of organisations shown in image',
+'exif-personinimage' => 'Name of person depicted in image',
+'exif-originalimageheight' => 'Height of image before it was cropped in pixels',
+'exif-originalimagewidth' => 'Width of image before it was cropped in pixels',
+
+# Make & model, can be wikified in order to link to the camera and model name
+'exif-contact-value' => '{{optional}}
+*$1 is email
+*$2 is URL of website
+*$3 is street address.
+*$4 is city
+*$5 is region
+*$6 is postal code
+*$7 is country
+*$8 is telephone number
+Note, not all fields are guaranteed to be present, some may be empty strings.',
+'exif-subjectnewscode-value' => '{{Optional}}
+
+*$1 is numeric IPTC subject news code (one of http://cv.iptc.org/newscodes/subjectcode )
+*$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-6' => '{{optional}}',
+'exif-compression-5' => '{{optional}}
+Lempel-Ziv & Welch algorithm',
+'exif-compression-6' => '{{optional}}',
+'exif-compression-7' => '{{optional}}',
+'exif-compression-8' => '{{optional}}',
+'exif-compression-32773' => '{{optional}}',
+'exif-compression-32946' => '{{optional}}',
+'exif-compression-34712' => '{{optional}}',
+
+'exif-copyrighted-true' => 'The image is under copyright (including if its copyrighted but freely licensed)',
+'exif-copyrighted-false' => 'The image is Public domain',
'exif-photometricinterpretation-2' => '{{optional}}',
'exif-photometricinterpretation-6' => '{{optional}}',
@@ -3506,8 +3731,8 @@ CW is an abbreviation for clockwise.',
'exif-xyresolution-i' => '{{Optional}} Used to format {{msg-mw|exif-xresolution}} and {{msg-mw|exif-yresolution}} if the unit is dots per inch. $1 is the number of dots/in.',
'exif-xyresolution-c' => '{{Optional}} Used to format {{msg-mw|exif-xresolution}} and {{msg-mw|exif-yresolution}} if the unit is dots per centimetre. $1 is the number of dots/cm.',
-'exif-colorspace-1' => '{{Optional}} If it uses the standard sRGB colour space.',
-'exif-colorspace-ffff.h' => '{{optional}}',
+'exif-colorspace-1' => '{{Optional}} If it uses the standard sRGB colour space.',
+'exif-colorspace-65535' => 'The photograph is not colour calibrated.',
'exif-componentsconfiguration-1' => '{{optional}}',
'exif-componentsconfiguration-2' => '{{optional}}',
@@ -3607,6 +3832,62 @@ Macro view is close-up photography. See [http://en.wikipedia.org/wiki/Macro_phot
# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-n' => "Knots: ''Knot'' is a unit of speed on water used for ships, etc., equal to one nautical mile per hour.",
+'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)',
+'exif-gpsdop-good' => '$1 is the actual HDOP/PDOP value (2-5 for good). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)',
+'exif-gpsdop-moderate' => '$1 is the actual HDOP/PDOP value (5-10 for moderate). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)',
+'exif-gpsdop-fair' => '$1 is the actual HDOP/PDOP value (10-20 for fair). See http://en.wikipedia.org/wiki/Dilution_of_precision_(GPS)',
+'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)',
+
+'exif-objectcycle-a' => 'Morning only (a is for AM). See also {{msg-mw|Exif-objectcycle}}.',
+'exif-objectcycle-p' => 'Evening only (p is for PM). See also {{msg-mw|Exif-objectcycle}}.',
+'exif-objectcycle-b' => 'Both morning and evening (b is for both). See also {{msg-mw|Exif-objectcycle}}.',
+
+'exif-ycbcrpositioning-1' => 'If the Chrominance samples are centered with respect to the Luminance samples.',
+'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',
+
+'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',
+'exif-dc-date' => 'One or more dates associated with the image. How they are associated is not really defined. From the dc:date XMP property.',
+'exif-dc-publisher' => 'One or more publisher of resource',
+'exif-dc-relation' => "Something related to this image. Often a list of url's to related images.",
+'exif-dc-rights' => 'Copyright information about the image/media given in informal language.',
+'exif-dc-source' => 'Source of the image. This is another image that this image is based on. This does not refer to the person who provided the image.',
+'exif-dc-type' => 'Type or genre of image/media. This might be something like painting or photograph.',
+
+'exif-rating-rejected' => 'If the rating field has a rating of -1 to mean that the file was totally "rejected"',
+
+'exif-isospeedratings-overflow' => "Exif can't store iso speed ratings beyond 65535. This message is shown if the iso speed is too big to be stored.",
+
+'exif-maxaperturevalue-value' => '{{Optional}}
+$1 is maxaperture in APEX units (APEX aperture units = 2log<sub>2</sub>(f-number) ). $2 is the value in the more traditional f-number units.',
+
+'exif-iimcategory-ace' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-clj' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-dis' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-fin' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-edu' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}.
+{{Identical|Education}}',
+'exif-iimcategory-evn' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-hth' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-hum' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-lab' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}
+
+"Labour" here refers to all news on labour issues; employment; unemployment; work relations; labour disputes; strikes; legislation; unions; job related issues; government policy. (at least, according to Reuters.)',
+'exif-iimcategory-lif' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-pol' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-rel' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-sci' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-soi' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-spo' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-war' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+'exif-iimcategory-wea' => 'Displayed as part of the iimcategory field if the 3 letter code is recognized, or as part {{msg-mw|exif-subjectnewscode-value}}',
+
+'exif-urgency-normal' => '$1 is numeric priority (aka 5 for normal)',
+'exif-urgency-low' => '$1 is numeric priority (6-8 for low)',
+'exif-urgency-high' => '$1 is numeric priority (1-4 for high)',
+'exif-urgency-other' => '$1 is 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.',
+
# External editor support
'edit-externally' => 'Displayed on image description pages. See for example [[:Image:Yes.png#filehistory]].',
'edit-externally-help' => 'Displayed on image description pages. See for example [[:Image:Yes.png#filehistory]].
@@ -3614,18 +3895,16 @@ Macro view is close-up photography. See [http://en.wikipedia.org/wiki/Macro_phot
Please leave the link http://www.mediawiki.org/wiki/Manual:External_editors exactly as it is.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => '{{Identical|All}}',
-'imagelistall' => '{{Identical|All}}',
-'watchlistall2' => 'Appears on [[Special:Watchlist]]. It is variable $3 in the text message [[Mediawiki:Wlshowlast]].
+'watchlistall2' => 'Appears on [[Special:Watchlist]]. It is variable $3 in the text message [[Mediawiki:Wlshowlast]].
{{Identical|All}}',
-'namespacesall' => 'In special page [[Special:WhatLinksHere]]. Drop-down box option for namespace.
+'namespacesall' => 'In special page [[Special:WhatLinksHere]]. Drop-down box option for namespace.
{{Identical|All}}',
-'monthsall' => 'Used in a drop-down box on [[Special:Contributions]] as an option for "all months". See also [[MediaWiki:Month/{{SUBPAGENAME}}]].
+'monthsall' => 'Used in a drop-down box on [[Special:Contributions]] as an option for "all months". See also [[MediaWiki:Month/{{SUBPAGENAME}}]].
{{Identical|All}}',
-'limitall' => 'Used on [[Special:AllMessages]] (and potentially other TablePager based tables) to display "all" the messages.
+'limitall' => 'Used on [[Special:AllMessages]] (and potentially other TablePager based tables) to display "all" the messages.
{{Identical|All}}',
@@ -3682,7 +3961,7 @@ See also [[MediaWiki:Confirmemail_body_changed]].
{{doc-important|Do not remove the linebreak. $1 has to be the first character on a new line because it contains wiki markup}}
-For information on trackback see [http://www.mediawiki.org/wiki/Manual:$wgUseTrackbacks mediawiki manual].',
+For information on trackback see [//www.mediawiki.org/wiki/Manual:$wgUseTrackbacks mediawiki manual].',
'trackback' => '{{optional}}
Do \'\'not\'\' change the leading ; and the first : as it is wiki markup.
@@ -3707,6 +3986,10 @@ Do ''not'' change the leading ; and the first : as it is wiki markup.
# action=purge
'confirm_purge_button' => '{{Identical|OK}}',
+# action=watch/unwatch
+'confirm-watch-button' => '{{Identical|OK}}',
+'confirm-unwatch-button' => '{{Identical|OK}}',
+
# Separators for various lists, etc.
'semicolon-separator' => '{{optional}}',
'comma-separator' => '{{optional}}',
@@ -3718,6 +4001,7 @@ Change it only if your language uses another character for ':' or it needs an ex
This is a string which is (usually) put between words of the language. It is used, e.g. when messages are concatenated (appended to each other). Note that you must express a space as html entity &amp;#32; because the editing and updating process strips leading and trailing spaces from messages.
Most languages use a space, but some Asian languages, such as Thai and Chinese, do not.',
+'ellipsis' => '{{optional}}',
'percent' => '{{optional}}',
'parentheses' => '{{optional}}',
@@ -3901,37 +4185,38 @@ Name of month in Hebrew calender.',
'duplicate-defaultsort' => 'Definition of [http://en.wikipedia.org/wiki/Sorting sort key] on Wikipedia.',
# Special:Version
-'version' => 'Name of special page displayed in [[Special:SpecialPages]]
+'version' => 'Name of special page displayed in [[Special:SpecialPages]]
{{Identical|Version}}',
-'version-extensions' => 'Header on [[Special:Version]].',
-'version-specialpages' => 'Part of [[Special:Version]].
+'version-extensions' => 'Header on [[Special:Version]].',
+'version-specialpages' => 'Part of [[Special:Version]].
{{Identical|Special pages}}',
-'version-parserhooks' => 'This message is a heading at [[Special:Version]] for extensions that modifies the parser of wikitext.',
-'version-variables' => '{{Identical|Variable}}',
-'version-skins' => '{{Identical|Skin}}',
-'version-other' => '{{Identical|Other}}',
-'version-mediahandlers' => 'Used in [[Special:Version]]. It is the title of a section for media handler extensions (e.g. [[mw:Extension:OggHandler]]).
+'version-parserhooks' => 'This message is a heading at [[Special:Version]] for extensions that modifies the parser of wikitext.',
+'version-variables' => '{{Identical|Variable}}',
+'version-skins' => '{{Identical|Skin}}',
+'version-api' => '{{optional}}',
+'version-other' => '{{Identical|Other}}',
+'version-mediahandlers' => 'Used in [[Special:Version]]. It is the title of a section for media handler extensions (e.g. [[mw:Extension:OggHandler]]).
There are no such extensions here, so look at [[wikipedia:Special:Version]] for an example.',
-'version-hooks' => 'Shown in [[Special:Version]]',
-'version-extension-functions' => 'Shown in [[Special:Version]]',
-'version-parser-function-hooks' => 'Shown in [[Special:Version]]',
-'version-skin-extension-functions' => 'Shown in [[Special:Version]]',
-'version-hook-name' => 'Shown in [[Special:Version]]',
-'version-hook-subscribedby' => 'Shown in [[Special:Version]]',
-'version-version' => '{{Identical|Version}}',
-'version-svn-revision' => 'This is being used in [[Special:Version]], preceeding the subversion revision numbers of the extensions loaded inside brackets, like this: "({{int:version-revision}} r012345")
+'version-hooks' => 'Shown in [[Special:Version]]',
+'version-extension-functions' => 'Shown in [[Special:Version]]',
+'version-parser-function-hooks' => 'Shown in [[Special:Version]]',
+'version-hook-name' => 'Shown in [[Special:Version]]',
+'version-hook-subscribedby' => 'Shown in [[Special:Version]]',
+'version-version' => '{{Identical|Version}}',
+'version-svn-revision' => '{{optional}}
+This is being used in [[Special:Version]], preceeding the subversion revision numbers of the extensions loaded inside brackets, like this: "({{int:version-revision}} r012345")
{{Identical|Revision}}',
-'version-license' => '{{Identical|License}}',
-'version-poweredby-credits' => 'Message shown on [[Special:Version]]. Parameters are:
+'version-license' => '{{Identical|License}}',
+'version-poweredby-credits' => 'Message shown on [[Special:Version]]. Parameters are:
*$1: the current year
*$2: a list of selected MediaWiki authors',
-'version-poweredby-others' => 'Used at the very end of {{msg-mw|version-poweredby-credits}} on [[Special:Version]]. First, there\'s a long list of selected MediaWiki authors, then the word "and" (from {{msg-mw|and}}) follows and then this translation, which is supposed to credit the many other people than developer helping with MediaWiki.',
-'version-license-info' => '[[wikipedia:GNU GPL|GNU GPL]] notice shown at [[Special:Version]]. See http://www.gnu.org/licenses/old-licenses/gpl-2.0-translations.html for available translations.',
-'version-software-product' => 'Shown in [[Special:Version]]',
-'version-software-version' => '{{Identical|Version}}',
+'version-poweredby-others' => 'Used at the very end of {{msg-mw|version-poweredby-credits}} on [[Special:Version]]. First, there\'s a long list of selected MediaWiki authors, then the word "and" (from {{msg-mw|and}}) follows and then this translation, which is supposed to credit the many other people than developer helping with MediaWiki.',
+'version-license-info' => '[[wikipedia:GNU GPL|GNU GPL]] notice shown at [[Special:Version]]. See //www.gnu.org/licenses/old-licenses/gpl-2.0-translations.html for available translations.',
+'version-software-product' => 'Shown in [[Special:Version]]',
+'version-software-version' => '{{Identical|Version}}',
# Special:FilePath
'filepath' => 'Legend of fieldset around input box in [[Special:FilePath]].',
@@ -3992,7 +4277,7 @@ $1 is the name of the requested file.',
Definition of [http://en.wikipedia.org/wiki/Regular_expression regular expression] on Wikipedia.",
# Special:Tags
-'tags' => "Shown on [[Special:Specialpages]] for page listing the tags that the software may mark an edit with, and their meaning. For more information on tags see [http://www.mediawiki.org/wiki/Manual:Tags Mediawiki].
+'tags' => "Shown on [[Special:Specialpages]] for page listing the tags that the software may mark an edit with, and their meaning. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].
It appears that the word 'valid' describes 'tags', not 'change'. It also appears that you could use the term 'defined' instead of 'valid', or perhaps use a phrase meaning 'Change tags in use'.",
'tag-filter' => 'Caption of a filter shown on lists of changes (e.g. [[Special:Log]], [[Special:Contributions]], [[Special:Newpages]], [[Special:Recentchanges]], [[Special:Recentchangeslinked]], page histories)',
@@ -4000,14 +4285,14 @@ It appears that the word 'valid' describes 'tags', not 'change'. It also appears
{{Identical|Filter}}',
'tags-title' => 'The title of [[Special:Tags]]',
-'tags-intro' => 'Explanation on top of [[Special:Tags]]. For more information on tags see [http://www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
-'tags-tag' => 'Caption of a column in [[Special:Tags]]. For more information on tags see [http://www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
-'tags-display-header' => 'Caption of a column in [[Special:Tags]]. For more information on tags see [http://www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
-'tags-description-header' => 'Caption of a column in [[Special:Tags]]. For more information on tags see [http://www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
-'tags-hitcount-header' => 'Caption of a column in [[Special:Tags]]. For more information on tags see [http://www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
+'tags-intro' => 'Explanation on top of [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
+'tags-tag' => 'Caption of a column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
+'tags-display-header' => 'Caption of a column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
+'tags-description-header' => 'Caption of a column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
+'tags-hitcount-header' => 'Caption of a column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].',
'tags-edit' => '{{Identical|Edit}}
Used on [[Special:Tags]]. Verb. Used as display text on a link to create/edit a description.',
-'tags-hitcount' => 'Shown in the “Tagged changes†column in [[Special:Tags]]. For more information on tags see [http://www.mediawiki.org/wiki/Manual:Tags Mediawiki].
+'tags-hitcount' => 'Shown in the “Tagged changes†column in [[Special:Tags]]. For more information on tags see [//www.mediawiki.org/wiki/Manual:Tags Mediawiki].
* <code>$1</code> is the number of changes marked with the tag',
diff --git a/languages/messages/MessagesQu.php b/languages/messages/MessagesQu.php
index 73c21875..a82c54e7 100644
--- a/languages/messages/MessagesQu.php
+++ b/languages/messages/MessagesQu.php
@@ -37,94 +37,97 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'IskayllaPusapuna' ),
+ 'Allmessages' => array( 'TukuyWillaykuna' ),
+ 'Allpages' => array( 'TukuyPanqakuna' ),
+ 'Ancientpages' => array( 'MawkaPanqa' ),
+ 'Blankpage' => array( 'PanqataChusaqchay' ),
+ 'Block' => array( 'Harkay', 'RuraqtaHarkay', 'IPHarkay' ),
+ 'Blockme' => array( 'Harkaway' ),
+ 'Booksources' => array( 'PukyuLiwru' ),
'BrokenRedirects' => array( 'PantaPusapuna', 'PitisqaPusapuna' ),
- 'Disambiguations' => array( 'SutichanaQillqa' ),
- 'Userlogin' => array( 'RuraqYaykuy' ),
- 'Userlogout' => array( 'RuraqLluqsiy' ),
+ 'Categories' => array( 'Katiguriyakuna' ),
+ 'ChangePassword' => array( 'YaykunaRimataKutichiy' ),
+ 'Confirmemail' => array( 'EChaskitaTakyachiy' ),
+ 'Contributions' => array( 'Rurasqakuna', 'Llamkapusqakuna' ),
'CreateAccount' => array( 'RakiqunaKamariy' ),
- 'Preferences' => array( 'Allinkachina', 'Allinkachinakuna' ),
- 'Watchlist' => array( 'Watiqasqa', 'Watiqasqakuna' ),
- 'Recentchanges' => array( 'NaqhaHukchasqa' ),
- 'Upload' => array( 'Churkuy' ),
+ 'Deadendpages' => array( 'Lluqsinannaq' ),
+ 'DeletedContributions' => array( 'QullusqaRurasqa', 'QullusqaLlamkapusqa' ),
+ 'Disambiguations' => array( 'SutichanaQillqa' ),
+ 'DoubleRedirects' => array( 'IskayllaPusapuna' ),
+ 'Emailuser' => array( 'EChaskitaManakuy' ),
+ 'Export' => array( 'HawamanQuy' ),
+ 'Fewestrevisions' => array( 'AsllaLlamkapusqa', 'AsllaKutiLlamkapusqa' ),
+ 'FileDuplicateSearch' => array( 'IskayllaWillaniqitaMaskay' ),
+ 'Filepath' => array( 'WillaniqiNan' ),
+ 'Import' => array( 'HawamantaChaskiy' ),
+ 'Invalidateemail' => array( 'EChaskitaManaallinchay' ),
+ 'BlockList' => array( 'HarkasqaRuraq', 'HarkasqaIP', 'HarkasqaRuraqkuna' ),
+ 'LinkSearch' => array( 'TinkitaMaskay', 'TinkikunataMaskay' ),
+ 'Listadmins' => array( 'Kamachiqkuna' ),
+ 'Listbots' => array( 'RuranaAntachakuna' ),
'Listfiles' => array( 'RikchaSutisuyu' ),
- 'Newimages' => array( 'MusuqRikcha', 'MusuqRikchakuna' ),
- 'Listusers' => array( 'Ruraqkuna', 'RuraqSutisuyu' ),
'Listgrouprights' => array( 'HunuHayni', 'HunupHaynin', 'RuraqkunapHayninkuna' ),
- 'Statistics' => array( 'Ranuy', 'Kanchachani' ),
- 'Randompage' => array( 'MayninpiPanqa' ),
+ 'Listredirects' => array( 'Pusapunakuna', 'TukuyPusapuna' ),
+ 'Listusers' => array( 'Ruraqkuna', 'RuraqSutisuyu' ),
+ 'Lockdb' => array( 'WillaniqintintaHarkay' ),
+ 'Log' => array( 'Hallcha', 'Hallchasqa' ),
'Lonelypages' => array( 'WakchaPanqa' ),
- 'Uncategorizedpages' => array( 'KatiguriyannaqPanqa' ),
- 'Uncategorizedcategories' => array( 'KatiguriyannaqKatiguriya' ),
- 'Uncategorizedimages' => array( 'KatiguriyannaqRikcha' ),
- 'Uncategorizedtemplates' => array( 'KatiguriyannaqPlantilla' ),
- 'Unusedcategories' => array( 'ChusaqKatiguriya', 'ManaLlamkachisqaKatiguriya' ),
- 'Unusedimages' => array( 'ManaLlamkachisqaRikcha' ),
- 'Wantedpages' => array( 'MunasqaPanqa', 'MunakusqaPanqa', 'MuchusqaPanqa' ),
- 'Wantedcategories' => array( 'MunasqaKatiguriya', 'MunakusqaKatiguriya', 'MuchusqaKatiguriya' ),
- 'Wantedfiles' => array( 'MunasqaWillaniqi', 'MunakusqaWillaniqi', 'MuchusqaWillaniqi' ),
- 'Wantedtemplates' => array( 'MunasqaPlantilla', 'MunakusqaPlantilla', 'MuchusqaPlantilla' ),
+ 'Longpages' => array( 'HatunPanqa' ),
+ 'MergeHistory' => array( 'WinayKawsaytaHunuy' ),
+ 'MIMEsearch' => array( 'MIMEkamaMaskay' ),
+ 'Mostcategories' => array( 'Katiguriyasapa' ),
+ 'Mostimages' => array( 'TinkimuqsapaRikcha' ),
'Mostlinked' => array( 'Tinkimuqsapa', 'LliwmantaAswanTinkimuqniyuq' ),
'Mostlinkedcategories' => array( 'TinkimuqsapaKatiguriya', 'AnchaLlamkachisqa', 'AchkaKutiLlamkachisqa' ),
'Mostlinkedtemplates' => array( 'TinkimuqsapaPlantilla' ),
- 'Mostimages' => array( 'TinkimuqsapaRikcha' ),
- 'Mostcategories' => array( 'Katiguriyasapa' ),
'Mostrevisions' => array( 'AnchaLlamkapusqa', 'AchkaKutiLlamkapusqa' ),
- 'Fewestrevisions' => array( 'AsllaLlamkapusqa', 'AsllaKutiLlamkapusqa' ),
- 'Shortpages' => array( 'UchuyPanqa' ),
- 'Longpages' => array( 'HatunPanqa' ),
+ 'Movepage' => array( 'PanqataAstay' ),
+ 'Mycontributions' => array( 'Rurasqaykuna', 'Llamkapusqaykuna' ),
+ 'Mypage' => array( 'Panqay', 'NuqapPanqay' ),
+ 'Mytalk' => array( 'Rimachinay', 'RimanakuyPanqay', 'NuqapRimachinay', 'NuqapRimanakuyPanqay' ),
+ 'Newimages' => array( 'MusuqRikcha', 'MusuqRikchakuna' ),
'Newpages' => array( 'MusuqPanqa' ),
- 'Ancientpages' => array( 'MawkaPanqa' ),
- 'Deadendpages' => array( 'Lluqsinannaq' ),
+ 'Popularpages' => array( 'WatukuqsapaPanqa', 'RikuqsapaPanqa', 'QhawaqsapaPanqa' ),
+ 'Preferences' => array( 'Allinkachina', 'Allinkachinakuna' ),
+ 'Prefixindex' => array( 'QallarinaKaskaSutisuyu' ),
'Protectedpages' => array( 'AmachasqaPanqa' ),
'Protectedtitles' => array( 'AmachasqaSuti' ),
- 'Allpages' => array( 'TukuyPanqakuna' ),
- 'Prefixindex' => array( 'QallarinaKaskaSutisuyu' ),
- 'Ipblocklist' => array( 'HarkasqaRuraq', 'HarkasqaIP', 'HarkasqaRuraqkuna' ),
- 'Specialpages' => array( 'SapaqPanqa', 'SapaqPanqakuna' ),
- 'Contributions' => array( 'Rurasqakuna', 'Llamkapusqakuna' ),
- 'Emailuser' => array( 'EChaskitaManakuy' ),
- 'Confirmemail' => array( 'EChaskitaTakyachiy' ),
- 'Whatlinkshere' => array( 'KaymanTinkimuq' ),
+ 'Randompage' => array( 'MayninpiPanqa' ),
+ 'Randomredirect' => array( 'KikinmantaPusapuna' ),
+ 'Recentchanges' => array( 'NaqhaHukchasqa' ),
'Recentchangeslinked' => array( 'HukchasqaTinkimuq' ),
- 'Movepage' => array( 'PanqataAstay' ),
- 'Blockme' => array( 'Harkaway' ),
- 'Booksources' => array( 'PukyuLiwru' ),
- 'Categories' => array( 'Katiguriyakuna' ),
- 'Export' => array( 'HawamanQuy' ),
- 'Version' => array( 'Musuqchasqa' ),
- 'Allmessages' => array( 'TukuyWillaykuna' ),
- 'Log' => array( 'Hallcha', 'Hallchasqa' ),
- 'Blockip' => array( 'Harkay', 'RuraqtaHarkay', 'IPHarkay' ),
+ 'Revisiondelete' => array( 'MusuqchasqaQulluy' ),
+ 'Search' => array( 'Maskay' ),
+ 'Shortpages' => array( 'UchuyPanqa' ),
+ 'Specialpages' => array( 'SapaqPanqa', 'SapaqPanqakuna' ),
+ 'Statistics' => array( 'Ranuy', 'Kanchachani' ),
+ 'Uncategorizedcategories' => array( 'KatiguriyannaqKatiguriya' ),
+ 'Uncategorizedimages' => array( 'KatiguriyannaqRikcha' ),
+ 'Uncategorizedpages' => array( 'KatiguriyannaqPanqa' ),
+ 'Uncategorizedtemplates' => array( 'KatiguriyannaqPlantilla' ),
'Undelete' => array( 'QullusqataPaqarichiy' ),
- 'Import' => array( 'HawamantaChaskiy' ),
- 'Lockdb' => array( 'WillaniqintintaHarkay' ),
'Unlockdb' => array( 'WillaniqintintaPaskay' ),
- 'Userrights' => array( 'RuraqpaHaynin' ),
- 'MIMEsearch' => array( 'MIMEkamaMaskay' ),
- 'FileDuplicateSearch' => array( 'IskayllaWillaniqitaMaskay' ),
- 'Unwatchedpages' => array( 'ManaWatiqasqa' ),
- 'Listredirects' => array( 'Pusapunakuna', 'TukuyPusapuna' ),
- 'Revisiondelete' => array( 'MusuqchasqaQulluy' ),
+ 'Unusedcategories' => array( 'ChusaqKatiguriya', 'ManaLlamkachisqaKatiguriya' ),
+ 'Unusedimages' => array( 'ManaLlamkachisqaRikcha' ),
'Unusedtemplates' => array( 'ManaLlamkachisqaPlantilla' ),
- 'Randomredirect' => array( 'KikinmantaPusapuna' ),
- 'Mypage' => array( 'Panqay', 'NuqapPanqay' ),
- 'Mytalk' => array( 'Rimachinay', 'RimanakuyPanqay', 'NuqapRimachinay', 'NuqapRimanakuyPanqay' ),
- 'Mycontributions' => array( 'Rurasqaykuna', 'Llamkapusqaykuna' ),
- 'Listadmins' => array( 'Kamachiqkuna' ),
- 'Listbots' => array( 'RuranaAntachakuna' ),
- 'Popularpages' => array( 'WatukuqsapaPanqa', 'RikuqsapaPanqa', 'QhawaqsapaPanqa' ),
- 'Search' => array( 'Maskay' ),
- 'Resetpass' => array( 'YaykunaRimataKutichiy' ),
+ 'Unwatchedpages' => array( 'ManaWatiqasqa' ),
+ 'Upload' => array( 'Churkuy' ),
+ 'Userlogin' => array( 'RuraqYaykuy' ),
+ 'Userlogout' => array( 'RuraqLluqsiy' ),
+ 'Userrights' => array( 'RuraqpaHaynin' ),
+ 'Version' => array( 'Musuqchasqa' ),
+ 'Wantedcategories' => array( 'MunasqaKatiguriya', 'MunakusqaKatiguriya', 'MuchusqaKatiguriya' ),
+ 'Wantedfiles' => array( 'MunasqaWillaniqi', 'MunakusqaWillaniqi', 'MuchusqaWillaniqi' ),
+ 'Wantedpages' => array( 'MunasqaPanqa', 'MunakusqaPanqa', 'MuchusqaPanqa' ),
+ 'Wantedtemplates' => array( 'MunasqaPlantilla', 'MunakusqaPlantilla', 'MuchusqaPlantilla' ),
+ 'Watchlist' => array( 'Watiqasqa', 'Watiqasqakuna' ),
+ 'Whatlinkshere' => array( 'KaymanTinkimuq' ),
'Withoutinterwiki' => array( 'Interwikinnaq', 'Wikipurannaq' ),
- 'MergeHistory' => array( 'WinayKawsaytaHunuy' ),
- 'Filepath' => array( 'WillaniqiNan' ),
- 'Invalidateemail' => array( 'EChaskitaManaallinchay' ),
- 'Blankpage' => array( 'PanqataChusaqchay' ),
- 'LinkSearch' => array( 'TinkitaMaskay', 'TinkikunataMaskay' ),
- 'DeletedContributions' => array( 'QullusqaRurasqa', 'QullusqaLlamkapusqa' ),
);
+#!!# Translation <b>HORA_ACTUAL</b> is used more than once for <a href="#mw-sp-magic-currenttime">currenttime</a> and <a href="#mw-sp-magic-currenthour">currenthour</a>.
+#!!# Translation <b>HORAACTUAL</b> is used more than once for <a href="#mw-sp-magic-currenttime">currenttime</a> and <a href="#mw-sp-magic-currenthour">currenthour</a>.
+#!!# Translation <b>HORALOCAL</b> is used more than once for <a href="#mw-sp-magic-localtime">localtime</a> and <a href="#mw-sp-magic-localhour">localhour</a>.
$magicWords = array(
'redirect' => array( '0', '#PUSAPUNA', '#REDIRECCIÓN', '#REDIRECCION', '#REDIRECT' ),
'notoc' => array( '0', '__YUYARINANNAQ__', '__NOTDC__', '__NOTOC__' ),
@@ -293,8 +296,8 @@ $messages = array(
'tog-shownumberswatching' => "Rikuchiy hayk'a watiqaq ruraqkuna",
'tog-oldsig' => "Kachkaqña silq'uyta ñawpaqta qhawallay:",
'tog-fancysig' => "Silq'uyta wiki qillqa hinata llamk'achiy (mana kikinmanta t'inkichaq silq'uy)",
-'tog-externaleditor' => "Kikinmanta hawa llamk'apunata llamk'achiy (kamayuqkunallapaq, antañiqiqniykipi sapaq allinkachinakuna kananmi. [http://www.mediawiki.org/wiki/Manual:External_editors Astawan ñawiriy.])",
-'tog-externaldiff' => "Kikinmanta hawa ''diff'' (wakin kay) nisqata llamk'achiy (kamayuqkunallapaq, antañiqiqniykipi sapaq allinkachinakuna kananmi. [http://www.mediawiki.org/wiki/Manual:External_editors Astawan ñawiriy.])",
+'tog-externaleditor' => "Kikinmanta hawa llamk'apunata llamk'achiy (kamayuqkunallapaq, antañiqiqniykipi sapaq allinkachinakuna kananmi. [//www.mediawiki.org/wiki/Manual:External_editors Astawan ñawiriy.])",
+'tog-externaldiff' => "Kikinmanta hawa ''diff'' (wakin kay) nisqata llamk'achiy (kamayuqkunallapaq, antañiqiqniykipi sapaq allinkachinakuna kananmi. [//www.mediawiki.org/wiki/Manual:External_editors Astawan ñawiriy.])",
'tog-showjumplinks' => "«Chayman phinkiy» aypanalla t'inkikunata saqillay",
'tog-uselivepreview' => "''Live preview'' nisqa ñawpaq qhawayta llamk'achiy (JavaScript) (llamiy aknaraq)",
'tog-forceeditsummary' => "Ch'usaq llamk'apuy waqaychasqa kachkaptinqa ch'itiyay.",
@@ -391,15 +394,7 @@ $messages = array(
'listingcontinuesabbrev' => 'qatiy',
'index-category' => "Yuyarinachasqa p'anqakuna",
'noindex-category' => "Mana yuyarinachasqa p'anqakuna",
-
-'mainpagetext' => "'''MediaWiki nisqa llamp'u kaqqa aypaylla takyachisqañam.'''",
-'mainpagedocfooter' => "Wiki llamp'u kaqmanta willasunaykipaqqa [http://meta.wikimedia.org/wiki/Help:Contents Ruraqpaq yanapana] ''(User's Guide)'' sutiyuq p'anqata qhaway.
-
-== Qallarichkaspa ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+'broken-file-category' => "P'akisqa willañiqi t'inkiyuq p'anqakuna",
'about' => "P'anqamanta",
'article' => 'Qillqa',
@@ -451,10 +446,10 @@ $messages = array(
'history' => "Wiñay kawsay p'anqa",
'history_short' => 'Wiñay kawsay',
'updatedmarker' => 'qayna watukamusqaymantapacha musuqchasqa',
-'info_short' => 'Willay',
'printableversion' => "Ch'ipachinapaq",
'permalink' => "Kakuq t'inki",
'print' => "Ch'ipachiy",
+'view' => 'Qhaway',
'edit' => 'qillqay',
'create' => 'Kamariy',
'editthispage' => "Kay p'anqata llamk'apuy",
@@ -462,6 +457,7 @@ $messages = array(
'delete' => 'Qulluy',
'deletethispage' => "Kay p'anqata qulluy",
'undelete_short' => "Paqarichiy {{PLURAL:$1|huk llamk'apusqa|$1 llamk'apusqa}}",
+'viewdeleted_short' => '{{PLURAL:$1|qullusqa hukchasqa|$1 qullusqa hukchasqa}} qhaway',
'protect' => 'Amachay',
'protect_change' => 'hukchay',
'protectthispage' => "Kay p'anqata amachay",
@@ -545,6 +541,8 @@ $1",
'toc' => 'Yuyarina',
'showtoc' => 'rikuchiy',
'hidetoc' => 'pakay',
+'collapsible-collapse' => 'Thuñichiy',
+'collapsible-expand' => "Mast'ariy",
'thisisdeleted' => '$1-ta rikuy icha paqarichiy?',
'viewdeleted' => "$1 p'anqata rikuyta munankichu?",
'restorelink' => '{{PLURAL:$1|qullusqa hukchasqa|$1 qullusqa hukchasqa}}',
@@ -556,6 +554,8 @@ $1",
'page-rss-feed' => '"$1" RSS feed',
'page-atom-feed' => '"$1" Atom Feed',
'red-link-title' => "$1 (manaraqmi p'anqachu)",
+'sort-descending' => 'Uraykuspa ñiqinchay',
+'sort-ascending' => 'Wichaykuspa ñiqinchay',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Qillqa',
@@ -636,12 +636,11 @@ Tapuna: $2',
'viewsourcetext' => "Kay p'anqatam qhawayta iskaychaytapas atinki:",
'protectedinterface' => "Kay p'anqapiqa wakichintinpa uyapuranpaq qillqam.
Wandalismu nisqamanta amachasqam kachkan.",
-'editinginterface' => "'''Paqtataq:''' Uyapura p'anqatam llamk'apuchkanki. Hukchaptiykiqa, chay uyapurap rikch'ayninqa hukyanqa huk ruraqkunapaqpas. Uyapurata t'ikrayta munaspaykiqa, [http://translatewiki.net/wiki/Main_Page?setlang=qu translatewiki.net] nisqa MediaWiki t'ikrana ruraykamay llika tiyaypi ruranaykimanta hamut'ariy.",
+'editinginterface' => "'''Paqtataq:''' Uyapura p'anqatam llamk'apuchkanki. Hukchaptiykiqa, chay uyapurap rikch'ayninqa hukyanqa huk ruraqkunapaqpas. Uyapurata t'ikrayta munaspaykiqa, [//translatewiki.net/wiki/Main_Page?setlang=qu translatewiki.net] nisqa MediaWiki t'ikrana ruraykamay llika tiyaypi ruranaykimanta hamut'ariy.",
'sqlhidden' => '(SQL tapunaqa pakasqam)',
'cascadeprotected' => "Kay p'anqaqa amachasqam kachkan, ''phaqcha'' nisqa kamachiwan amachasqa kay {{PLURAL:$1|p'anqapi|p'anqakunapi}} ch'aqtasqa kaspanmi:
$2",
'namespaceprotected' => "'''$1''' nisqa suti k'ititaqa llamk'apuyta manam saqillasunkichu.",
-'customcssjsprotected' => "Manam saqillasunkichu kay p'anqata llamk'apuyta, huk ruraqpa kikin tiyachisqankunayuq kaptinmi.",
'ns-specialprotected' => "{{ns:special}} suti k'itipi p'anqakunaqa manam llamk'apunallachu.",
'titleprotected' => "Kay p'anqa sutitaqa [[User:$1|$1]] sutiyuq ruraq kamariymanta hark'arqanmi, kayraykum nispa: ''$2''.",
@@ -677,6 +676,7 @@ Ama qunqaychu [[Special:Preferences|{{SITENAME}} allinkachinaykikunata]] kikinch
'createaccount' => 'Musuq rakiqunata kichariy',
'gotaccount' => "Rakiqunaykiñachu kachkan? '''$1'''.",
'gotaccountlink' => 'Rakiqunaykita willaway',
+'userlogin-resetlink' => 'Yaykuna willayniykikunatari qunqarqankichu?',
'createaccountmail' => 'chaskipaq',
'createaccountreason' => 'Kayrayku:',
'badretype' => 'Qusqayki yaykuna rimakunaqa manam kaqllachu.',
@@ -685,13 +685,15 @@ Ama qunqaychu [[Special:Preferences|{{SITENAME}} allinkachinaykikunata]] kikinch
'createaccounterror' => 'Manam atinichu rakiqunata kamariyta: $1',
'nocookiesnew' => "Ruraqpa rakiqunaykiqa kichasqañam, ichataq manaraqmi yaykurqankichu. {{SITENAME}}qa <em>kuki</em> nisqakunatam llamk'achin ruraqkunata kikinyachinapaq. Antañiqiqniykipiqa manam <em>kuki</em> nisqakuna atinchu. Ama hina kaspa, atichispa huk kutita yaykuykachay.",
'nocookieslogin' => "{{SITENAME}} <em>kuki</em> nisqakunata llamk'achin ruraqkunata kikinyachinapaq. Antañiqiqniykipiqa manam <em>kuki</em> nisqakuna atinchu. Ama hina kaspa, atichispa huk kutita ruraykachay.",
+'nocookiesfornew' => "Ruraqpa rakiqunantaqa manam kamariykuchu, pukyunta takyachiyta mana atispaykum.
+Qhawariy, ruraykachay ''cookie'' nisqata atichispa kay p'anqata musuqmanta chaqnamuspa.",
'noname' => 'Manam niwarqankichu ruraqpa allin sutinta.',
'loginsuccesstitle' => "Llamk'apuy tiyayqa qallarisqañam",
'loginsuccess' => 'Llamk\'apuy tiyayniykiqa qallarisqam {{SITENAME}}-pi "$1" sutiyuq kaspa.',
'nosuchuser' => 'Nisqayki "$1" sutiyuq ruraqqa manam kanchu.
Ruraqpa sutinqa uchuypas hatunpas sanampakunayuqmi kayta atin.
Allin qillqasqaykita llanchiriy, ichataq urapi kaq hunt\'ana p\'anqata llamk\'achiy [[Special:UserLogin/signup|musuq rakiqunata kicharinaykipaq]].',
-'nosuchusershort' => 'Nisqayki "<nowiki>$1</nowiki>" sutiyuq ruraqqa manam kanchu.
+'nosuchusershort' => 'Nisqayki "$1" sutiyuq ruraqqa manam kanchu.
Allin qillqasqaykita llanchiriy.',
'nouserspecified' => 'Ruraqpa sutiykitam qunayki.',
'login-userblocked' => "Kay ruraqqa hark'asqam. Manam yaykuyta atinchu.",
@@ -729,13 +731,14 @@ Ama hina kaspa, chaskispaykiqa ruraqpa sutiykita nispa musuqmanta yaykuy.',
Kay willay pantasqa kaptinqa, qhawarparillay.',
'usernamehasherror' => 'Ruraqpa sutinqa ama iskaychakana (<nowiki>#</nowiki>) sananchayuqchu kachun',
'login-throttled' => 'Nisyu kutitachá kay rakiqunapaq yaykuna rimawan ñaqha yaykuykachanki. Ama hina kaspa, suyariy manaraq musuqmanta yaykuykachaspa.',
+'login-abort-generic' => 'Yaykuykachaspayki manam ayparqankichu - Allqasqa',
'loginlanguagelabel' => 'Rimay: $1',
'suspicious-userlogout' => "Lluqsiy mañakuyniykiqa mananchasqam karqan, waqllisqa wamp'unamanta icha pakaq proksimanta kachasqa kaspanchá.",
# E-mail sending
'php-mail-error-unknown' => 'Mana riqsisqa pantasqa PHP mail() rurananpi',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Ruraqpa yaykuna rimanta hukchay',
'resetpass_announce' => "E-chaskiwan kachasqa mit'alla yaykuna rimawanmi yaykurqunki. Ama hina kaspa, musuq yaykuna rimaykita qillqamuy:",
'resetpass_text' => '<!-- Añada texto aquí -->',
@@ -753,6 +756,39 @@ Kay willay pantasqa kaptinqa, qhawarparillay.',
Yaykuna rimaykitaqa aypalla hukcharqunkiñachá icha huk mit'alla yaykuna rimata mañakurqunkiñachá.",
'resetpass-temp-password' => "Mit'alla yaykuna rima:",
+# Special:PasswordReset
+'passwordreset' => 'Yaykuna rimata kutichiy',
+'passwordreset-text' => "Kay hunt'ana p'anqata hunt'ay, rakiqunaykipaq willakunayuq e-chaskita chaskinaykipaq.",
+'passwordreset-legend' => 'Yaykuna rimata kutichiy',
+'passwordreset-disabled' => 'Kay wikipiqa yaykuna rimata manam kutichiyta atinkichu.',
+'passwordreset-pretext' => '{{PLURAL:$1||Qatiqpi kaq willa rakikunamanta huktam yaykuchiy}}',
+'passwordreset-username' => 'Ruraqpa sutin:',
+'passwordreset-email' => 'E-chaski imamayta:',
+'passwordreset-emailtitle' => '{{SITENAME}}-paq rakiqunamanta willakuna',
+'passwordreset-emailtext-ip' => "Pipas (qamchiki, $1 IP huchhayuq tiyaymanta) {{SITENAME}}-paq ($4)
+rakiqunaykipaq willakunayuq yuyachinatam mañakurqan. Kay qatiq ruraqpa {{PLURAL:$3|rakiqunanmi|rakiqunankunam}}
+kay e-chaski imamaytayuq kachkan:
+
+$2
+
+Kay mit'alla yaykuna {{PLURAL:$3|rimaqa|rimakunaqa}} kunanmanta {{PLURAL:$5|huk p'unchawpi|$5 p'unchawpi}} mawk'ayanqam.
+Yaykuspayki musuq yaykuna rimaykitam akllankiman. Pi wakiykipas kayta mañakurqaptinqa,
+icha qam ñawpaq yaykuna rimaykita yuyaspayki manaña wakinchayta munaspaykiqa,
+kay willayta mana qhawaspa mana imatapas ruraspa ñawpaq yaykuna rimaykiwanmi llamk'ayta atinki.",
+'passwordreset-emailtext-user' => "{{SITENAME}}-pi kaq $1 sutiyuq ruraqqa {{SITENAME}}-paq ($4)
+rakiqunaykipaq willakunayuq yuyachinatam mañakurqan. Kay qatiq ruraqpa {{PLURAL:$3|rakiqunanmi|rakiqunankunam}}
+kay e-chaski imamaytayuq kachkan:
+
+$2
+
+Kay mit'alla yaykuna {{PLURAL:$3|rimaqa|rimakunaqa}} kunanmanta {{PLURAL:$5|huk p'unchawpi|$5 p'unchawpi}} mawk'ayanqam.
+Yaykuspayki musuq yaykuna rimaykitam akllankiman. Pi wakiykipas kayta mañakurqaptinqa,
+icha qam ñawpaq yaykuna rimaykita yuyaspayki manaña wakinchayta munaspaykiqa,
+kay willayta mana qhawaspa mana imatapas ruraspa ñawpaq yaykuna rimaykiwanmi llamk'ayta atinki.",
+'passwordreset-emailelement' => "Ruraqpa sutin: $1
+Mit'alla yaykuna rima: $2",
+'passwordreset-emailsent' => 'Yuyachina e-chaskiqa kachasqañam.',
+
# Edit page toolbar
'bold_sample' => 'Yanasapa qillqa',
'bold_tip' => 'Yanasapa qillqa',
@@ -764,8 +800,6 @@ Yaykuna rimaykitaqa aypalla hukcharqunkiñachá icha huk mit'alla yaykuna rimata
'extlink_tip' => "Hawa t'inki (ñawpaqta http:// nisqata yapariy)",
'headline_sample' => "Uma siq'i qillqa",
'headline_tip' => "Iskay ñiqi hanaq siq'i qillqa",
-'math_sample' => 'Kayman minuywata qillqamuy',
-'math_tip' => 'Yupana minuywa (LaTeX)',
'nowiki_sample' => "Kayman mana wiki rikch'akuyniyuq qillqata yapamuy",
'nowiki_tip' => "Wiki rikch'akuy ama kachunchu",
'image_sample' => 'Qhawarichiy.jpg',
@@ -838,7 +872,7 @@ Yaykurqaspaqa ''[[Special:ChangePassword|yaykuna rima hukchana]]'' p'anqapi kay
'noarticletext-nopermission' => "Kay p'anqaqa ch'usaqmi.
Kay p'anqap sutintaqa [[Special:Search/{{PAGENAME}}|huk p'anqakunapi maskaytam atinki]],
icha payman kapuq <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} hallch'akunapi maskaykiman]</span>.",
-'userpage-userdoesnotexist' => '"$1" sutiyuq ruraqpa rakiqunanqa manam kanchu. Ama hina kaspa, llanchikuy kay p\'anqata kamarinaykimanta.',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" sutiyuq ruraqpa rakiqunanqa manam kanchu. Ama hina kaspa, llanchikuy kay p\'anqata kamarinaykimanta.',
'userpage-userdoesnotexist-view' => '"$1" sutiyuq rakiqunaqa manam hallch\'asqachu.',
'blocked-notice-logextract' => "Kay ruraqqa hark'asqam kachkan.
Hark'ay hallch'api qhipaq hark'asqataqa kaypim rikunki willasunaykipaq:",
@@ -865,6 +899,7 @@ Hark'ay hallch'api qhipaq hark'asqataqa kaypim rikunki willasunaykipaq:",
'''Allin sunquwan kamarirqaspaykiqa, musuqmanta ruraykachay. Mana atispaykiqa, [[Special:UserLogout|lluqsispa]] musuqmanta yaykuspa ruraykachay.'''",
'token_suffix_mismatch' => "'''Llamk'apusqaykimanqa ama nisqam, mink'akuqniyki llamk'apuy willaypi sapaq sananchakunata arwiptinmi. Ama nisqa karqanqa qillqata waqlliymantam amachanapaq.
Kayqa maykunapi tukukun, mana allin wakichisqa proxy sirwiytam llamk'achiptiyki.'''",
+'edit_form_incomplete' => "'''Llamk'apuna hunt'ana p'anqamanta huk willasqakunaqa sirwiqman manam chayarqanchu; llamk'apusqaykikuna allinlla kachkaymanta iskaylla llanchispa musuqmanta ruraykachay.'''",
'editing' => "Llamk'apuspa: $1",
'editingsection' => "Llamk'apuspa: $1 (raki)",
'editingcomment' => "Llamk'apuspa: $1 (musuq raki)",
@@ -1219,9 +1254,10 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
'changepassword' => 'Yaykuna rimata hukchay',
'prefs-skin' => 'Qara',
'skin-preview' => 'Ñawpaqta qhaway',
-'prefs-math' => 'Minuywa',
'datedefault' => 'Kikinmanta allinkachina',
+'prefs-beta' => 'Beta nisqap kaqninkuna',
'prefs-datetime' => "P'unchaw, pacha",
+'prefs-labs' => 'Laburaturyu nisqap kaqninkuna',
'prefs-personal' => 'Kikinpa willankuna',
'prefs-rc' => 'Ñaqha hukchasqakuna',
'prefs-watchlist' => "Watiqasqa p'anqakuna",
@@ -1243,8 +1279,6 @@ Takyachikuy kay hukchayqa allin wiñay kawsay ñiqita ama waqllichunchu chaylla.
'columns' => 'Wachukuna:',
'searchresultshead' => 'Maskay',
'resultsperpage' => "Huk p'anqapi hayk'a tarinakuna:",
-'contextlines' => "Siq'ikuna taripasqaman:",
-'contextchars' => "Ukhunpuray sananchakuna siq'iman:",
'stub-threshold' => 'Kay hatun kaykamam <a href="#" class="stub">t\'una qillqasqa t\'inki</a> nisqa kachun (byte):',
'stub-threshold-disabled' => 'Ama nisqa',
'recentchangesdays' => "Ñaqha hukchasqakunapi rikuchina p'unchawkuna:",
@@ -1256,7 +1290,7 @@ Pi kay k'itichapi llawiykita riqsiqpas watiqasqaykikunata ñawiriytam atinqa. Ch
'savedprefs' => "Allinkachinaykikunaqa hallch'asqañam.",
'timezonelegend' => "Pacha t'urpi:",
'localtime' => 'Tiyaylla pacha:',
-'timezoneuseserverdefault' => 'Sirwiqpa kikinmanta',
+'timezoneuseserverdefault' => "Wikip kikinmanta pachanta llamk'achiy ($1)",
'timezoneuseoffset' => 'Huk pacha (pachap wakin kayninta willay)',
'timezoneoffset' => 'Huk kay¹:',
'servertime' => 'Sirwiqpa pachan:',
@@ -1304,8 +1338,8 @@ $1 {{PLURAL:$1|sanampamanta|sanampakunamanta}} aswan pisi kananmi.',
'prefs-help-gender' => "Munaspaykiqa: llamp'u kaqpa allinlla warmi icha qhari nispa napaykusunaykipaq. Kay willayqa sapsim kanqa.",
'email' => 'E-chaski',
'prefs-help-realname' => "* Chiqap sutiyki (munaspaqa): quwaptiykiqa, llamk'apusqaykikunam paywan sananchasqa kanqa.",
-'prefs-help-email' => "E-chaskita munaspayki akllayta atinki. Arí nispaykiqa, yaykuna rimata qunqaspayki musuq yaykuna rimata e-chaski imamaytaykiman kachachikamuyta atinki.
-Huk ruraqkunata ruraqpa p'anqaykimanta icha rimachinaykimanta qamman qillqamusunaykiwan atichin qampa sutiykita mana rikuchispa.",
+'prefs-help-email' => 'E-chaskita munaspayki akllayta atinki. Arí nispaykiqa, yaykuna rimata qunqaspayki musuq yaykuna rimata e-chaski imamaytaykiman kachachikamuyta atinki.',
+'prefs-help-email-others' => "Huk ruraqkunata atichiykiman ruraqpa p'anqaykimanta icha rimanakuy p'anqaykimanta qamman qillqamusunaykiwan qampa sutiykita mana rikuchispa.",
'prefs-help-email-required' => 'E-chaski imamaytaykitam willaway.',
'prefs-info' => 'Tiksi willaykuna',
'prefs-i18n' => 'Mamallaqtapurapaq',
@@ -1430,7 +1464,6 @@ Huk ruraqkunata ruraqpa p'anqaykimanta icha rimachinaykimanta qamman qillqamusun
'right-userrights' => "Tukuy ruraqkunap hayñinkunata llamk'apuy",
'right-userrights-interwiki' => "Wakin wiki tiyaykunapi ruraqkunap hayñinkunata llamk'apuy",
'right-siteadmin' => "Willañiqintinta hark'ay, paskaypas",
-'right-reset-passwords' => 'Huk ruraqkunap yaykuna rimanta kutichiy',
'right-override-export-depth' => "P'anqakunata hawaman quy, t'inkisqa p'anqakunatapas pichqa ñiqin t'inkipayasqakama",
'right-sendemail' => 'Huk ruraqkunaman e-chaskita kachay',
@@ -1558,11 +1591,11 @@ Rikchata huk p'anqaman ch'aqtanaykipaqqa kay hunt'ana p'anqapi t'inkita llamk'ac
'minlength1' => 'Willañiqip sutinqa huk icha aswan sanampayuq kachun.',
'illegalfilename' => "«$1» nisqa williñiqip sutinqa p'anqa umallipaq mana allin sananchayuqmi. Ama hina kaspa, williñiqita sutincharaspa musuqmanta churkuykachay.",
'badfilename' => 'Rikchap sutinqa "$1"-man hukchasqam.',
-'filetype-mime-mismatch' => "Willañiqip chupanqa manam MIME rikch'aqchu.",
+'filetype-mime-mismatch' => 'Willañiqip chupanqa ".$1" manam taripasqa MIME rikch\'aqchu ($2).',
'filetype-badmime' => '"$1" MIME layayuq willañiqikunata churkuyqa manam saqillasqachu.',
'filetype-bad-ie-mime' => 'Manam atinichu willañiqita churkuyta, Internet Explorer "$1" hina riqsiptinman, mana saqillasqa willañiqi layam, chikim kanman.',
'filetype-unwanted-type' => "'''\".\$1\"''' nisqaqa manam munasqachu willañiqi laya. Astawan munasqa willañiqi {{PLURAL:\$3|layaqa|layakunaqa}} kaymi: \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' nisqaqa manam saqillasqachu willañiqi laya. Saqillasqa willañiqi {{PLURAL:\$3|layaqa|layakunaqa}} kaymi: \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' nisqaqa manam saqillasqachu willañiqi {{PLURAL:$4|laya|layakuna}}. Saqillasqa willañiqi {{PLURAL:$3|layaqa|layakunaqa}} kaymi: $2.',
'filetype-missing' => 'Manam kachkanchu willañiqip k\'askaqnin (".jpg" hina).',
'empty-file' => "Kachasqayki willañiqiqa ch'usaqmi.",
'file-too-large' => 'Kachasqayki willañiqiqa nisyu hatunmi.',
@@ -1578,6 +1611,7 @@ Rikchata huk p'anqaman ch'aqtanaykipaqqa kay hunt'ana p'anqapi t'inkita llamk'ac
'large-file' => 'Kamalliykiku, willañiqikunaqa ama $1-manta aswan hatun kachunchu; kay willañiqiqa $2 hatunmi.',
'largefileserver' => 'Kay willañiqiqa sirwiqpi allinkachisqakama saqillasqa chhikanmanta aswan hatunmi.',
'emptyfile' => "Churkusqayki willañiqiqa ch'usaqmi rikch'akun. Pantasqa sutinchá. Ama hina kaspa, llanchiy, churkuyman munasqayki willañiqichu.",
+'windows-nonascii-filename' => "Kay wikiqa sapaq sananchayuq willañiqi sutikunata manam q'iminchu.",
'fileexists' => "Kachkanñam kay sutiyuq willañiqi.
Ama hina kaspa, '''<tt>[[:$1]]</tt>''' nisqata llanchiy, huknachanaykimanta mana allin yachaspaykiqa.
[[$1|thumb]]",
@@ -1608,6 +1642,8 @@ Kay churkunayki rikcha hunt'a chhikan kayniyuq kaptinqa, chay hunt'atam churkuy,
'php-uploaddisabledtext' => "PHP-wan willañiqi churkuyqa hark'asqam. Ama hina kaspa, willañiqi churkuy allinkachinakunata llanchiy.",
'uploadscripted' => "Kay willañiqiqa wakichi icha HTML qillqayuqmi, llika wamp'unaqa pantalla unanchanmanchá.",
'uploadvirus' => 'Willañiqipiqa añawmi! Yuyay: $1',
+'uploadjava' => 'Kay ZIP willañiqiqa Java .class willañiqiyuqmi.
+Java churkuyqa manam saqillasqachu, qasikanapaq saywachasqa kanman karunchana tiyanman.',
'upload-source' => 'Pukyu willañiqi',
'sourcefilename' => 'Qallariy willañiqip sutin:',
'sourceurl' => 'Pukyu URL:',
@@ -1617,10 +1653,6 @@ Kay churkunayki rikcha hunt'a chhikan kayniyuq kaptinqa, chay hunt'atam churkuy,
'upload-options' => 'Churkuy akllanakuna',
'watchthisupload' => 'Kay willañiqita watiqay',
'filewasdeleted' => 'Kay sutiyuq willañiqi huk kutiña churkusqa karqaspa chaymanta qullusqam karqan. $1-ta llanchinaykim tiyanman manaraq musuqmanta churkuspayki.',
-'upload-wasdeleted' => "'''Paqtataq: Huk kutiña qullusqa willañiqitam churkuykachachkanki.'''
-
-Hamut'arinaykim tiyanman, kay willañiqita musuqmanta churkuyqa allinchu mana allinchu chaylla.
-Kay qatiqpiqa willañiqimanta qulluy hallch'atam rikunki:",
'filename-bad-prefix' => "Churkunayasqayki willañiqip sutinqa '''\"\$1\"''' nisqawanmi qallarin. Chay sutinqa iliktruniku rikcha hap'inap kamasqanmanmi rikch'akun. Ama hina kaspa, willañiqiykita astawan t'iktuq sutinta akllay.",
'upload-success-subj' => 'Aypalla churkusqañam',
'upload-success-msg' => '[$2]-manta churkusqaykiqa aypasqam. Kaypim tarinalla: [[:{{ns:file}}:$1]]',
@@ -1641,6 +1673,23 @@ $1',
'upload-unknown-size' => 'Mana riqsisqa chhikan',
'upload-http-error' => 'HTTP pantasqam tukusqa: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Willañiqita ZIP-kama llanchispa pantasqatam tarini.',
+'zip-wrong-format' => 'Akllasqa willañiqiqa manam ZIP willañiqichu.',
+'zip-bad' => 'Willañiqiqa manam allinchu, manam ñawirina ZIP willañiqichu.
+Manam allin ZIP-kama qasikanapaq llanchinachu.',
+'zip-unsupported' => "Willañiqi ZIP willañiqi kaptinpas, ZIP kaqninkunataqa MediaWiki manam q'iminchu.
+Manam allin qasikanapaq llanchinachu.",
+
+# Special:UploadStash
+'uploadstash' => 'Ñawpaqta waqaychaspa churkuy',
+'uploadstash-summary' => "Kay p'anqapiqa wikiman churkusqaña (icha churkusqa kachkaq), ichataq manaraq uyaychasqa willañiqikunatam rikunki. Kay willañiqikunataqa churkuqllam rikuyta atin, mana pi wakinpas rikunchu.",
+'uploadstash-clear' => 'Ñawpaqta waqaychasqa willañiqikunata qulluy',
+'uploadstash-nofiles' => 'Manam kanchu ñawpaqta waqaychasqa willañiqi.',
+'uploadstash-badtoken' => "Kay rurayqa manam aypasqachu, tiyachkayniykipaq willasqaykikuna mawk'ayaptinchá. Musuqmanta ruraykachay.",
+'uploadstash-errclear' => 'Willañiqi qulluyqa manam aypasqachu.',
+'uploadstash-refresh' => 'Willañiqi sutisuyuta musuqchay',
+
# img_auth script messages
'img-auth-accessdenied' => 'Manam chayman saqisqachu',
'img-auth-nopathinfo' => "Manam kanchu PATH_INFO.
@@ -1722,7 +1771,7 @@ Kay qatiq sutisuyupiqa {{PLURAL:$1|ñawpaqllam t'inkita|ñawpaqllam $1 t'inkikun
Munaspaykiqa, [[Special:WhatLinksHere/$2|hunt'a sutisuyuta]] qhaway.",
'nolinkstoimage' => "Kay rikchamanqa manam ima p'anqakunachu t'inkimun.",
'morelinkstoimage' => "Kay willañiqiman [[Special:WhatLinksHere/$1|aswan t'inkimuqkunata]] qhaway.",
-'redirectstofile' => "Kay qatiq {{PLURAL:$1|p'anqam|$1 p'anqakunam}} kay willañiqiman pusampun:",
+'linkstoimage-redirect' => '$1 (willañiqi pusapuna) $2',
'duplicatesoffile' => 'Kay willañiqimanta iskaychasqa {{PLURAL:$1|willañiqim|$1 willañiqikunam}} kay qatiqpi ([[Special:FileDuplicateSearch/$2|astawan willachikuy]]):',
'sharedupload' => "Kay p'anqaqa $1 nisqamantam. Huk ruraykamaykunapipas llamk'achinapaq kanman.",
'sharedupload-desc-there' => "Kay p'anqaqa $1 nisqamantam. Huk ruraykamaykunapipas llamk'achinapaq kanman.
@@ -1814,11 +1863,12 @@ Ama hina kaspa, [$2 willañiqi ch'uyanchana p'anqata] qhaway astawan willachikun
'disambiguationspage' => "Template:Sut'ichana qillqa",
'disambiguations-text' => "Kay qatiq p'anqakunam t'inkimun '''sut'ichana qillqaman'''. Chiqap, hukchanasqa p'anqaman t'inkichun.<br />Tukuy [[MediaWiki:Disambiguationspage]] plantillayuq p'anqakunaqa sut'ichana qillqam.",
-'doubleredirects' => 'Iskaylla pusapunakuna',
-'doubleredirectstext' => "Kay p'anqapiqa huk pusapuna p'anqaman pusapuq p'anqakunap sutinkunatam rikunki. Sapa sinrupiqa ñawpaq ñiqin, iskay ñiqinpas pusapunaman t'inkikunam, iskay ñiqin pusapunap taripananpa qallariyninpas, sapsilla \"chiqap\" allin taripana qillqam, maymanchus ñawpaq ñiqin pusapuna p'anqa pusachun.
+'doubleredirects' => 'Iskaylla pusapunakuna',
+'doubleredirectstext' => "Kay p'anqapiqa huk pusapuna p'anqaman pusapuq p'anqakunap sutinkunatam rikunki. Sapa sinrupiqa ñawpaq ñiqin, iskay ñiqinpas pusapunaman t'inkikunam, iskay ñiqin pusapunap taripananpa qallariyninpas, sapsilla \"chiqap\" allin taripana qillqam, maymanchus ñawpaq ñiqin pusapuna p'anqa pusachun.
<del>Chakapusqa</del> taripasqakunaqa paskasqañam.",
-'double-redirect-fixed-move' => '[[$1]] nisqaqa astasqam, kunantaq [[$2]] nisqaman pusapunam',
-'double-redirect-fixer' => 'Pusapuna allinchaq',
+'double-redirect-fixed-move' => '[[$1]] nisqaqa astasqam, kunantaq [[$2]] nisqaman pusapunam',
+'double-redirect-fixed-maintenance' => '[[$1]]-manta [[$2]]-man iskaylla pusapunata allinchaspa.',
+'double-redirect-fixer' => 'Pusapuna allinchaq',
'brokenredirects' => 'Panta pusapunakuna',
'brokenredirectstext' => "Kay pusapuna p'anqakunaqa mana kachkaq p'anqakunamanmi pusapuchkan:",
@@ -1895,6 +1945,7 @@ Ama hina kaspa musyariy, huk llika tiyaykunachá chiqalla t'inkimun huk rikchap
'pager-newer-n' => '{{PLURAL:$1|aswan musuq 1|aswan musuq $1}}',
'pager-older-n' => "{{PLURAL:$1|aswan mawk'a 1|aswan mawk'a $1}}",
'suppress' => 'Rikurpariy',
+'querypage-disabled' => "Kay sapaq p'anqamanqa ama nisqam allinta llamk'anapaq.",
# Book sources
'booksources' => 'Liwrukunapi pukyukuna',
@@ -2010,6 +2061,10 @@ Qampa [[Special:Preferences|allinkachinaykikunapi]] qillqakamachisqayki imamayta
'noemailtext' => 'Kay ruraqqa manam willawarqanchu chaniyuq imamaytata.',
'nowikiemailtitle' => 'E-chaskiqa manam saqillasqachu',
'nowikiemailtext' => 'Kay ruraqqa nirqan, huk ruraqkunamanta ama e-chaskita chaskisaqchu, nispa.',
+'emailnotarget' => 'Chaskiqpa rakiquna sutinqa manam kanchu icha manam allinchu.',
+'emailtarget' => 'Chaskiqpa rakiquna sutinta yaykuchiy',
+'emailusername' => 'Ruraqpa sutin:',
+'emailusernamesubmit' => 'Kachay',
'email-legend' => '{{SITENAME}}pi huk ruraqman e-chaskita kachay',
'emailfrom' => 'Kachaq:',
'emailto' => 'Chaskiq:',
@@ -2034,9 +2089,7 @@ Qampa [[Special:Preferences|allinkachinaykikunapi]] qillqakamachisqayki imamayta
'watchlistanontext' => 'Ama hina kaspa, $1 watiqana sutisuyuykipi imakunatapas qhawanaykipaq icha hukchanaykipaq.',
'watchnologin' => 'Manam yaykurqankichu',
'watchnologintext' => '[[Special:UserLogin|Yaykunaykim]] tiyan watiqana sutisuyuykita hukchanaykipaq.',
-'addedwatch' => 'Watiqasqaykunaman yapasqa',
'addedwatchtext' => "Kunanqa «[[:\$1]]» sutiyuq p'anqa [[Special:Watchlist|watiqanykipim]] kachkañam. Chay p'anqapi rimachinanpipas hukchanakunaqa kay watiqana p'anqapim rikunki. Watiqasqayki p'anqaqa [[Special:RecentChanges|ñaqha hukchasqakunapi]] '''yanasapa''' qillqasqa rikuchisqa kanqa aswan sikllalla tarinaykipaq. <p>Manaña watiqayta munaptiykiqa, uma siq'ipi \"amaña watiqaychu\" ñit'iy.",
-'removedwatch' => 'Watiqasqakunamanta qullusqa',
'removedwatchtext' => '"[[:$1]]" sutiyuq p\'anqaqa [[Special:Watchlist|watiqasqaykikunamanta]] qichusqam.',
'watch' => 'Watiqay',
'watchthispage' => "Kay p'anqata watiqay",
@@ -2088,16 +2141,16 @@ Kay p\'anqata mana musuqmanta watukamuptiykiqa, manam huk hukchasqakunamanta wil
--
E-chaski willaykuy allinkachinakunata hukchanaykipaqqa kay p\'anqatam qhaway:
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Watiqana sutisuyuykipaq allinkachinakunata hukchanaykipaqqa kay p\'anqatam qhaway:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
P\'anqata watiqana sutisuyuykimanta qichunaykipaqqa kay p\'anqatam qhaway:
$UNWATCHURL
Yanapasunaykipaq:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => "Kay p'anqata qulluy",
@@ -2113,7 +2166,7 @@ Yanapasunaykipaq:
Ama hina kaspa, takyachiy munayniykita, qatiqninkunata riqsiyniykita, [[{{MediaWiki:Policy-url}}|kawpaykama]] rurayniykitapas.",
'actioncomplete' => 'Rurasqañam',
'actionfailed' => 'Manam atinchu',
-'deletedtext' => '"<nowiki>$1</nowiki>" qullusqañam.
+'deletedtext' => '"$1" qullusqañam.
$2 nisqa p\'anqata qhaway ñaqha qullusqakunata rikunaykipaq.',
'deletedarticle' => 'qullusqa "[[$1]]"',
'suppressedarticle' => 'ñit\'ipasqa "[[$1]]"',
@@ -2167,7 +2220,7 @@ Ama hina kaspa, llika wamp'unaykipi \"Ñawpaqman\" (\"Back\") ñit'ispa ñawpaq
'protect_expiry_invalid' => 'Amachaypa puchukay pachanqa manam allinchu.',
'protect_expiry_old' => 'Amachaypa puchukay pachanqa ñawpa pachapim.',
'protect-unchain-permissions' => 'Yapa amachana akllanakunata paskay',
-'protect-text' => "'''<nowiki>$1</nowiki>''' sutiyuq p'anqap amachasqa kachkaynintaqa kaypim qhawayta hukchaytapas atinki.",
+'protect-text' => "'''$1''' sutiyuq p'anqap amachasqa kachkaynintaqa kaypim qhawayta hukchaytapas atinki.",
'protect-locked-blocked' => "Hark'asqa kaspayki manam atinkichu amachasqa kachkayninta hukchayta. Kay qatiqpiqa '''$1''' sutiyuq p'anqap kunan allinkachinankunatam rikunki:",
'protect-locked-dblock' => "Willañiqintin hark'asqa kachkaptinmi, manam atinkichu amachaypa kachkayninkunata hukchayta.
Kay qatiqpiqa '''$1''' sutiyuq p'anqap kunan allinkachinankunatam rikunki:",
@@ -2260,9 +2313,10 @@ $1',
'undelete-show-file-submit' => 'Arí',
# Namespace form on various pages
-'namespace' => "Suti k'iti:",
-'invert' => "Akllasqantinta t'ikrachiy",
-'blanknamespace' => '(Uma)',
+'namespace' => "Suti k'iti:",
+'invert' => "Akllasqantinta t'ikrachiy",
+'namespace_association' => "Huñupasqa suti k'iti",
+'blanknamespace' => '(Uma)',
# Contributions
'contributions' => "Ruraqpa llamk'apusqankuna",
@@ -2311,13 +2365,15 @@ Qhipaq hark'ay hallch'a yaykuchisqatam kay qatiqpi rikunki:",
'whatlinkshere-filters' => "Ch'illchinakuna",
# Block/unblock
+'autoblockid' => "Kikinmanta hark'ay #$1",
+'block' => "Ruraqta hark'ay",
+'unblock' => "Hark'asqa ruraqta qispichiy",
'blockip' => "Ruraqta hark'ay",
'blockip-title' => "Ruraqta hark'ay",
'blockip-legend' => "Ruraqta hark'ay",
'blockiptext' => "Kay qatiq hunt'ana p'anqata llamk'achiy huk sapaq IP huchhamanta icha ruraqpa rakiqunanmanta qillqay atiyta hark'anapaq.
Kayqa rurasqa kachun wandalismullatam hark'anapaq, [[{{MediaWiki:Policy-url}}|{{SITENAME}}pa kawpayninkamallam]].
Willariy imaraykum hark'anki (ahinataq: sapaq wandaluchasqa p'anqakunamanta willaspa).",
-'ipaddress' => 'IP huchha',
'ipadressorusername' => 'IP huchha icha ruraqpa sutin',
'ipbexpiry' => "Hark'ay kaykama:",
'ipbreason' => 'Kayrayku:',
@@ -2330,7 +2386,7 @@ Willariy imaraykum hark'anki (ahinataq: sapaq wandaluchasqa p'anqakunamanta will
** Huk ruraqkunata manchachiy icha k'amiy
** Achka rakiqunakunawan millayta ruray
** Mana chaskinalla ruraqpa sutin",
-'ipbanononly' => "Sutinnaq ruraqkunallata hark'ay",
+'ipb-hardblock' => "Yaykusqa ruraqkuna kay IP huchhayuq tiyaymanta ama llamk'apuchunchu",
'ipbcreateaccount' => "Rakiquna kichariyta hark'ay",
'ipbemailban' => "Ruraqta e-chaski kachaymanta hark'ay",
'ipbenableautoblock' => "Kay ruraqpa llamk'achisqan IP huchhata kikinmanta hark'ay, hinallataq ima qatiqlla llamk'achisqan IP huchhatapas",
@@ -2341,11 +2397,14 @@ Willariy imaraykum hark'anki (ahinataq: sapaq wandaluchasqa p'anqakunamanta will
'ipbotherreason' => 'Huk/aswan rayku:',
'ipbhidename' => "Ruraqpa sutinta llamk'apusqakunamanta, sutisuyukunamantapas pakay",
'ipbwatchuser' => "Kay ruraqpa p'anqanta rimachinantapas watiqay",
-'ipballowusertalk' => "Kay ruraqta kikinpa rimanakuy p'anqanta hukchayta saqillay, hark'asqa kaptinpas",
+'ipb-disableusertalk' => "Kay ruraq hark'asqa kaspa kikinpa rimanakuy p'anqanta ama llamk'apuchunchu",
'ipb-change-block' => "Ruraqta musuqmanta hark'ay kay allinchanakunata churaspa",
+'ipb-confirm' => "Hark'ayta takyachiy",
'badipaddress' => 'IP huchhaqa manam allinchu.',
'blockipsuccesssub' => "Ruraqqa hark'asqañam",
'blockipsuccesstext' => "[[Special:Contributions/$1|$1]] huchhayuq tiyayqa hark'asqañam. <br />[[Special:IPBlockList|Hark'asqakunamanta p'anqata]] qhaway hark'akunata hukchanaykipaq.",
+'ipb-blockingself' => "Kikiykitam hark'aykachachkanki! Chiqapta kayta rurayta munankichu?",
+'ipb-confirmhideuser' => 'Ruraqta hark\'aykachachkanki, payman "Ruraqta pakay" nisqam. Chaywanqa manam pipas chay ruraqpa sutinta ima sutisuyupipas hallch\'apipas rikunqachu. Chiqapta kayta rurayta munankichu?',
'ipb-edit-dropdown' => "Hark'aypa hamunta llamk'apuy",
'ipb-unblock-addr' => "Hark'asqa $1-ta qispichiy",
'ipb-unblock' => "Hark'asqa ruraqta icha IP huchhata qispichiy",
@@ -2355,17 +2414,23 @@ Willariy imaraykum hark'anki (ahinataq: sapaq wandaluchasqa p'anqakunamanta will
'unblockiptext' => "Kay qatiq hunt'ana p'anqata llamk'achiy ñawpaqta hark'asqa IP huchhaman icha ruraqman qillqana hayñinta kutichinapaq.",
'ipusubmit' => "Kay hark'asqata qispichiy",
'unblocked' => "Hark'asqa [[User:$1|$1]] qispisqañam",
+'unblocked-range' => "Hark'asqa $1 qispichisqam",
'unblocked-id' => "Hark'asqa $1-qa qispisqañam",
+'blocklist' => "Hark'asqa ruraqkuna",
'ipblocklist' => "Hark'asqa ruraqkuna",
'ipblocklist-legend' => "Hark'asqa ruraqta tariy",
-'ipblocklist-username' => 'Ruraqpa sutin icha IP huchha:',
-'ipblocklist-sh-userblocks' => "$1 rakiquna hark'asqakuna",
-'ipblocklist-sh-tempblocks' => "$1 mit'alla hark'asqakuna",
-'ipblocklist-sh-addressblocks' => "$1 sapaq IP-paq hark'asqakuna",
+'blocklist-userblocks' => "Rakiquna hark'asqakunata pakay",
+'blocklist-tempblocks' => "Mit'alla hark'asqakunata pakay",
+'blocklist-addressblocks' => "Sapaq IP-paq hark'asqakunata pakay",
+'blocklist-timestamp' => "Pacha q'illpay",
+'blocklist-target' => 'Taripana',
+'blocklist-expiry' => "Hark'aypa puchukaynin",
+'blocklist-by' => "Hark'aq kamachiq",
+'blocklist-params' => "Hark'ay kuskanachina tupukuna",
+'blocklist-reason' => 'Kayrayku',
'ipblocklist-submit' => 'Maskay',
'ipblocklist-localblock' => "Kayllapi hark'ay",
'ipblocklist-otherblocks' => "Huk {{PLURAL:$1|hark'ay|hark'aykuna}}",
-'blocklistline' => "$1, $2 hark'an kay ruraqtam: $3 ($4)",
'infiniteblock' => 'wiñaypaq',
'expiringblock' => "$1 p'unchawpi $2 pachapi puchukanqa",
'anononlyblock' => 'sutinnaqlla',
@@ -2385,7 +2450,7 @@ Willariy imaraykum hark'anki (ahinataq: sapaq wandaluchasqa p'anqakunamanta will
'blocklog-showsuppresslog' => "Kay ruraqqa ñawpaqta hark'asqam pakasqapas. Ñit'ipay hallch'ataqa kaypim rikunki willasunaykipaq:",
'blocklogentry' => "hark'an [[$1]]-ta kay pachakama: $2 $3",
'reblock-logentry' => "hukchan [[$1]]-paq hark'ana allinchanakunata kay pachakama hark'aspa: $2 $3",
-'blocklogtext' => "Kayqa ruraqta hark'asqakunap qispichisqakunappas hallch'anmi. Kikinmanta hark'asqa tiyaykunataqa manam kaypi rikunkichu. [[Special:IPBlockList|Hark'asqakunamanta p'anqata]] qhaway kunan hark'asqakunata rikunaykipaq.",
+'blocklogtext' => "Kayqa ruraqta hark'asqakunap qispichisqakunappas hallch'anmi. Kikinmanta hark'asqa tiyaykunataqa manam kaypi rikunkichu. [[Special:BlockList|Hark'asqakunamanta p'anqata]] qhaway kunan hark'asqakunata rikunaykipaq.",
'unblocklogentry' => 'paskan "$1"-ta hark\'asqa kaymanta',
'block-log-flags-anononly' => 'sutinnaqlla',
'block-log-flags-nocreate' => 'rakiquna kichariyman ama nisqa',
@@ -2399,9 +2464,9 @@ Willariy imaraykum hark'anki (ahinataq: sapaq wandaluchasqa p'anqakunamanta will
'ipb_expiry_temp' => "Pakasqa ruraqpa sutin hark'aykunaqa tiyaqllam kachun.",
'ipb_hide_invalid' => "Manam atinichu kay rakiqunata ñit'ipayta; nisyu llamk'apusqayuqñachá.",
'ipb_already_blocked' => '"$1" sutiyuqqa hark\'asqañam kachkan.',
-'ipb-needreblock' => "== Hark'asqaña ==
-$1 sutiyuqqa hark'asqañam. Allinchanakunata hukchayta munankichu?",
+'ipb-needreblock' => "$1 sutiyuqqa hark'asqañam. Allinchanakunata hukchayta munankichu?",
'ipb-otherblocks-header' => "Huk {{PLURAL:$1|hark'ay|hark'aykuna}}",
+'unblock-hideuser' => "Kay hark'asqa ruraqtaqa manam qispichiyta atinkichu, ruraqpa sutin pakasqa kaptinmi.",
'ipb_cant_unblock' => "'''Pantasqa''': Manam tarinichu ID $1 hark'ay huchhata. Qispisqañachá.",
'ipb_blocked_as_range' => "Pantasqa: IP $1 huchhaqa manam chiqallachu hark'asqa kaptinmi manam paskanallachu. Chaywanpas, $2 patayayku kaspataq hark'asqam kachkan. Chay patayaykuqa hark'asqamanta paskanallam.",
'ip_range_invalid' => "IP huchha k'itiqa manam chanichkanchu.",
@@ -2435,6 +2500,7 @@ $1 sutiyuqqa hark'asqañam. Allinchanakunata hukchayta munankichu?",
'unlockdbsuccesstext' => '{{SITENAME}}pi willañiqintinqa paskasqam.',
'lockfilenotwritable' => "Willañiqintinqa manam qillqanapaqchu. Willañiqintinta hark'anapaqqa icha paskanapaqqa, sirwiqpa qillqananpaq kananmi tiyan.",
'databasenotlocked' => "Willañiqintinqa manam hark'asqachu.",
+'lockedbyandtime' => "($1 sutiyuq $2 p'unchawpi $3 pachapi)",
# Move page
'move-page' => '$1-ta astay',
@@ -2554,7 +2620,7 @@ Qhipaqta munaspaykiqa, t'inkitapas llamk'achiyta atinki, ahinataq [[{{#Special:E
'allmessagesdefault' => 'Ñawpaq qillqa',
'allmessagescurrent' => 'Kunan kachkaq qillqa',
'allmessagestext' => "Kayqa MediaWiki suti k'itipi llamk'achinalla willaykunayuq sutisuyum.
-Ama hina kaspa, [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] nisqata, [http://translatewiki.net translatewiki.net] nisqatapas watukuy, MediaWiki nisqata t'ikraywan yanapayta munaspaykiqa.",
+Ama hina kaspa, [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] nisqata, [//translatewiki.net translatewiki.net] nisqatapas watukuy, MediaWiki nisqata t'ikraywan yanapayta munaspaykiqa.",
'allmessagesnotsupportedDB' => "Kay p'anqaqa manam llamk'achinallachu, '''\$wgUseDatabaseMessages''' nisqaman ama nisqa kaptinmi.",
'allmessages-filter-legend' => "Ch'illchina",
'allmessages-filter' => "Ch'illchina, allinchasqa kachkaykama:",
@@ -2715,9 +2781,7 @@ Tukuy hawa wikimanta chaskisqakunaqa [[Special:Log/import|hawamanta chaskiy hall
'modern.js' => "/* Ima kaypi qillqamusqa JavaScript nisqa wakichi qillqapas ''Modern skin'' nisqa qarata llamk'achiq ruraqkunapaq chaqnasqa kanqa */",
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata nisqamanqa kay sirwiqpi ama nisqam.',
-'nocreativecommons' => 'Creative Commons RDF metadata nisqamanqa kay sirwiqpi ama nisqam.',
-'notacceptable' => "Wiki sirwiqqa manam willakunata quyta atinchu mink'akuqniykip (wamp'unaykip) hap'iyta atisqan chantapi.",
+'notacceptable' => "Wiki sirwiqqa manam willakunata quyta atinchu mink'akuqniykip (wamp'unaykip) hap'iyta atisqan chantapi.",
# Attribution
'anonymous' => '{{SITENAME}}pi sutinnaq {{PLURAL:$1|ruraq|ruraqkuna}}',
@@ -2739,33 +2803,6 @@ Tukuy hawa wikimanta chaskisqakunaqa [[Special:Log/import|hawamanta chaskiy hall
'spam_reverting' => "Qhipaq kaq mana $1-man t'inkimuqniyuq llamk'apusqaman kutichispa",
'spam_blanking' => "Tukuy llamk'apusqakunaqa $1-manmi t'inkimuq, ch'usaqchaspa",
-# Info page
-'infosubtitle' => "P'anqamanta willay",
-'numedits' => "Hayk'a llamk'apusqakuna (qillqa p'anqa): $1",
-'numtalkedits' => "Hayk'a llamk'apusqakuna (rimanakuy p'anqa): $1",
-'numwatchers' => "Hayk'a watiqaqkuna: $1",
-'numauthors' => "Hayk'a sapaq llamk'apuqkuna (qillqa p'anqa): $1",
-'numtalkauthors' => "Hayk'a sapaq llamk'apuqkuna (rimanakuy p'anqa): $1",
-
-# Math options
-'mw_math_png' => "Hayk'appas PNG-ta ruray",
-'mw_math_simple' => 'Ancha sikllalla kaptinqa HTML, mana hinaptinqa PNG',
-'mw_math_html' => 'Paqtanayaptinqa HTML, mana hinaptinqa PNG',
-'mw_math_source' => "TeX hinatam saqiy (qillqa wamp'unapaq)",
-'mw_math_modern' => "Musuq wamp'unakunapaq kamallisqa",
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => "Manam hap'inichu",
-'math_unknown_error' => 'mana riqsisqa pantasqa',
-'math_unknown_function' => 'mana riqsisqa rurana',
-'math_lexing_error' => 'rima pantasqa',
-'math_syntax_error' => 'rimay ukhunpuray pantasqa',
-'math_image_error' => "Manam atinichu PNG-man t'ikrayta; latex nisqawan dvipng (icha dvips + gs + convert) nisqakunap tiyachisqa kayninta llanchiy",
-'math_bad_tmpdir' => "Manam atinichu <em>math</em> nisqapaq mit'alla willañiqi churanata kamayta icha qillqayta",
-'math_bad_output' => 'Manam atinichu <em>math</em> nisqapaq lluqsichina willañiqi churanata kamayta icha qillqayta',
-'math_notexvc' => 'Manam kanchu ruranalla <strong>texvc</strong>. Ama hina kaspa, <em>math/README</em> nisqata ñawiriy allinkachinaykipaq.',
-
# Patrolling
'markaspatrolleddiff' => 'Qhawakipasqaman sananchay',
'markaspatrolledtext' => "Kay p'anqata qhawakipasqam nispa sananchay",
@@ -2801,22 +2838,25 @@ $1",
'nextdiff' => "Qatiq llamk'apusqa →",
# Media information
-'mediawarning' => "'''Paqtataq''': Kay willañiqiqa millay wakichi qillqayuqchá.
+'mediawarning' => "'''Paqtataq''': Kay willañiqiqa millay wakichi qillqayuqchá.
Payta rurachiyqa antañiqiqniykita llikaykitapas waqllinqachá.",
-'imagemaxsize' => "Rikchap chhikan kayninta kaykama saywachay:<br />''(willañiqi ch'uyanchana p'anqakunapaq)''",
-'thumbsize' => "Ch'iñicha rikchachap chhikan kaynin:",
-'widthheightpage' => "$1×$2, $3 {{PLURAL:$3|p'anqa|p'anqakuna}}",
-'file-info' => 'willañiqip chhikan kaynin: $1; MIME laya: $2',
-'file-info-size' => '$1 × $2 iñu; willañiqip chhikan kaynin: $3; MIME laya: $4',
-'file-nohires' => '<small>Manam kanchu aswan huyakuyuq rikcha.</small>',
-'svg-long-desc' => 'SVG willañiqi, rimasqakama $1 × $2 iñuyuq, willañiqip chhikan kaynin: $3',
-'show-big-image' => 'Qallariy huyaku',
-'show-big-image-thumb' => '<small>Kay ñawpaq qhawariypa chhikan kaynin: $1 × $2 iñu</small>',
-'file-info-gif-looped' => 'muyupayachisqa',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|inchu|inchukuna}}',
-'file-info-png-looped' => 'muyupayachisqa',
-'file-info-png-repeat' => '$1 {{PLURAL:$1|kuti|kuti}} pukllasqa',
-'file-info-png-frames' => '$1 {{PLURAL:$1|inchu|inchukuna}}',
+'imagemaxsize' => "Rikchap chhikan kayninta kaykama saywachay:<br />''(willañiqi ch'uyanchana p'anqakunapaq)''",
+'thumbsize' => "Ch'iñicha rikchachap chhikan kaynin:",
+'widthheightpage' => "$1×$2, $3 {{PLURAL:$3|p'anqa|p'anqakuna}}",
+'file-info' => 'willañiqip chhikan kaynin: $1; MIME laya: $2',
+'file-info-size' => '$1 × $2 iñu; willañiqip chhikan kaynin: $3; MIME laya: $4',
+'file-info-size-pages' => "$1 × $2 iñu, willañiqip chhikan kaynin: $3; MIME laya: $4, $5 {{PLURAL:$5|p'anqa|p'anqa}}",
+'file-nohires' => '<small>Manam kanchu aswan huyakuyuq rikcha.</small>',
+'svg-long-desc' => 'SVG willañiqi, rimasqakama $1 × $2 iñuyuq, willañiqip chhikan kaynin: $3',
+'show-big-image' => 'Qallariy huyaku',
+'show-big-image-preview' => '<small>Kay ñawpaq qhawariypa chhikan kaynin: $1.</small>',
+'show-big-image-other' => '<small>Huk huyakukuna: $1.</small>',
+'show-big-image-size' => '$1 × $2 iñu',
+'file-info-gif-looped' => 'muyupayachisqa',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|inchu|inchukuna}}',
+'file-info-png-looped' => 'muyupayachisqa',
+'file-info-png-repeat' => '$1 {{PLURAL:$1|kuti|kuti}} pukllasqa',
+'file-info-png-frames' => '$1 {{PLURAL:$1|inchu|inchukuna}}',
# Special:NewFiles
'newimages' => 'Musuq rikchakunap suyu-suyun',
@@ -2841,14 +2881,20 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
'metadata-help' => "Kay willañiqipiqa aswan sapaqlla willaymi, iliktruniku rikchahap'inawanchá, iskanirwanchá icha rikcharurana wakichiwanchá yapasqa. Willañiqi chaymantapacha hukchasqa kaptinqa, huk sapaq samiqninkuna chinkasqachá.",
'metadata-expand' => 'Aswan sapaqlla willakunata rikuchiy',
'metadata-collapse' => 'Sapaqlla willakunata pakay',
-'metadata-fields' => "Kay willaypi rikuchisqa EXIF metadatapaq k'itichakunaqa rikcha p'anqapim ch'aqtasqa kanqa, metadata wachuchasqa mana rikch'akuptinpas. Huk k'itikunaqa kikinmantam pakasqa kanqa.
+'metadata-fields' => "Kay willaypi rikuchisqa rikch'a metadatapaq k'itichakunaqa rikcha p'anqapim ch'aqtasqa kanqa, metadata wachuchasqa mana rikch'akuptinpas. Huk k'itikunaqa kikinmantam pakasqa kanqa.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Suni kay',
@@ -2863,13 +2909,11 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
'exif-ycbcrpositioning' => 'Y-ta C-tapas churamuy',
'exif-xresolution' => "Siriqpa ch'irkukun",
'exif-yresolution' => "Sayaqpa ch'irkukun",
-'exif-resolutionunit' => "X, Y ch'irkukup tupun",
'exif-stripoffsets' => 'Rikcha willa churamuy',
'exif-rowsperstrip' => "Sinrukuna ch'imiman",
'exif-stripbytecounts' => "Bytekuna mat'isqa ch'imiman",
'exif-jpeginterchangeformat' => 'Ithiy JPEG SOI nisqaman',
'exif-jpeginterchangeformatlength' => 'JPEG willa bytekuna',
-'exif-transferfunction' => 'Wantuna rurana',
'exif-whitepoint' => 'Yuraq iñupi ñawra kay',
'exif-primarychromaticities' => 'Qallarina ñawra kaykuna',
'exif-ycbcrcoefficients' => "Llimphi suyu tukuchina mamap q'iminanchankuna",
@@ -2888,7 +2932,6 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
'exif-compressedbitsperpixel' => "Rikchap mat'isqa kaynin laya",
'exif-pixelydimension' => 'Rikchap suni kaynin',
'exif-pixelxdimension' => 'Rikchap hanaq kaynin',
-'exif-makernote' => 'Ruraqpa willasqankuna',
'exif-usercomment' => "Llamk'achiqpa willayninkuna",
'exif-relatedsoundfile' => 'Ninachiq ruqyay willañiqi',
'exif-datetimeoriginal' => "Willakunap kamaynin p'unchaw, pacha",
@@ -2902,7 +2945,6 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
'exif-exposureprogram' => 'Churapana wakichi',
'exif-spectralsensitivity' => 'Ispiktru musyaykuy',
'exif-isospeedratings' => 'ISO utqay chayninchay',
-'exif-oecf' => "Achkiy antañiqichana t'ikrana mink'aqi",
'exif-shutterspeedvalue' => "APEX wichq'aqpa utqaynin",
'exif-aperturevalue' => "APEX illa k'ichkina",
'exif-brightnessvalue' => "APEX k'anchay",
@@ -2915,7 +2957,6 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
'exif-focallength' => 'Lintip rawray karu kaynin',
'exif-subjectarea' => 'Rikchachasqap hawan',
'exif-flashenergy' => 'Illapup michan',
-'exif-spatialfrequencyresponse' => 'Ispasyal kutinchiqllap kutichiynin',
'exif-focalplanexresolution' => "Rawray p'alltap X ch'irkukun",
'exif-focalplaneyresolution' => "Rawray p'alltap Y ch'irkukun",
'exif-focalplaneresolutionunit' => "Rawray p'alltap ch'irkuku tupun",
@@ -2924,7 +2965,6 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
'exif-sensingmethod' => 'Musyachiq laya',
'exif-filesource' => 'Willañiqip pukyun',
'exif-scenetype' => 'Rikuypacha laya',
-'exif-cfapattern' => 'CFA qatinalla',
'exif-customrendered' => "Rikcha llamk'apuyta sapaqchay",
'exif-exposuremode' => 'Churapay laya',
'exif-whitebalance' => 'Yuraq paqtaku',
@@ -2969,10 +3009,79 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
'exif-gpsareainformation' => 'GPS suyu suti',
'exif-gpsdatestamp' => "GPS p'unchaw",
'exif-gpsdifferential' => 'GPS karuncha allinchay',
+'exif-jpegfilecomment' => 'JPEG willañiqi rimapuy',
+'exif-keywords' => 'Llawi rimakuna',
+'exif-worldregioncreated' => "Tiksimuyup mayqin rakinpi kay rikch'a hap'isqa",
+'exif-countrycreated' => "Mayqin mamallaqtapi kay rikch'a hap'isqa",
+'exif-countrycodecreated' => "Mamallaqtap tuyrun, mayqinpichus kay rikch'a hap'isqa",
+'exif-provinceorstatecreated' => "Mayqin suyupi kay rikch'a hap'isqa",
+'exif-citycreated' => "Mayqin llaqtapi kay rikch'a hap'isqa",
+'exif-sublocationcreated' => "Mayqin llaqta suyuchapi kay rikch'a hap'isqa",
+'exif-worldregiondest' => 'Tiksimuyup rakin rikuchisqa',
+'exif-countrydest' => 'Rikuchisqa mamallaqta',
+'exif-countrycodedest' => 'Rikuchisqa mamallaqtapaq tuyrun',
+'exif-provinceorstatedest' => 'Rikuchisqa suyu',
+'exif-citydest' => 'Rikuchisqa llaqta',
+'exif-sublocationdest' => 'Rikuchisqa llaqtasuyu',
'exif-objectname' => 'Uchuy suti',
+'exif-specialinstructions' => 'Sapaq kamachiykuna',
+'exif-headline' => "Uma siq'i",
+'exif-credit' => 'Rikchata quq',
+'exif-source' => 'Pukyu',
+'exif-editstatus' => "Rikcha p'anqachasqa kachkay",
+'exif-urgency' => 'Utqana',
+'exif-fixtureidentifier' => 'Takya kaqpa sutin',
+'exif-locationdest' => 'Rikuchisqa tiyay, maypim kan',
+'exif-locationdestcode' => 'Rikuchisqa tiyaypaq tuyrun',
+'exif-objectcycle' => "P'unchawpi mayqin pachapaq kay rikch'a",
+'exif-contact' => 'Ruraqwan willanakunapaq',
+'exif-writer' => 'Qillqaq',
+'exif-languagecode' => 'Rimay',
+'exif-iimversion' => 'IIM musuqchasqa',
+'exif-iimcategory' => 'Katiguriya',
+'exif-iimsupplementalcategory' => 'Yapana katiguriyakuna',
+'exif-datetimeexpires' => "Ama llamk'achiychu kaymanta qhipaq pacha",
+'exif-datetimereleased' => 'Kacharisqa',
+'exif-originaltransmissionref' => 'Qallariy karpana tiyay tuyru',
+'exif-identifier' => 'Kikinchaq',
+'exif-lens' => "Llamk'achisqa linti",
+'exif-serialnumber' => "Rikch'a hap'inap sinri huchhan",
+'exif-cameraownername' => "Rikch'a hap'inayuq kaq",
+'exif-label' => 'Huqari qillqa',
+'exif-datetimemetadata' => "Hayk'ap metadata qhipaqta hukchasqa karqan",
+'exif-nickname' => "Rikch'ap chutu sutin",
+'exif-rating' => 'Chaninchay (pichqamanta)',
+'exif-rightscertificate' => 'Hayñi kamachina illu',
+'exif-copyrighted' => 'Ima hina iskaychay hayñiyuq',
+'exif-copyrightowner' => "Ruraqpa hayñinkunata hap'iq",
+'exif-usageterms' => "Llamk'achina phatakuna",
+'exif-webstatement' => 'Llikapi iskaychay hayñi willay',
+'exif-originaldocumentid' => 'Qallariy qillqarimap sapaqlla kikinchakuynin',
+'exif-licenseurl' => 'Iskaychay hayñi saqillaypaq URL',
+'exif-morepermissionsurl' => 'Wakin kaq saqillay willay',
+'exif-attributionurl' => "Kayta musuqmanta llamk'achispa kayman t'inkimuy:",
+'exif-preferredattributionname' => "Kayta musuqmanta llamk'achispa kaymanta willay:",
+'exif-pngfilecomment' => 'PNG willañiqi rimapuy',
+'exif-disclaimer' => "Kay rikch'apaq chiqakunamanta rikuchiy",
+'exif-contentwarning' => 'Samiqmanta yuyampay',
+'exif-giffilecomment' => 'GIF willañiqi rimapuy',
+'exif-intellectualgenre' => "Rikch'apaq sumaq rimaysami",
+'exif-subjectnewscode' => 'Allwiy tuyru',
+'exif-scenecode' => 'IPTC qhawariylla tuyru',
+'exif-event' => 'Rikuchisqa tukusqa, imam tukukun',
+'exif-organisationinimage' => 'Rikuchisqa tantanakuy',
+'exif-personinimage' => 'Rikuchisqa runa, pim kan',
+'exif-originalimageheight' => "Manaraq rutusqa rikch'ap hanaq kaynin",
+'exif-originalimagewidth' => "Manaraq rutusqa rikch'ap suni kaynin",
# EXIF attributes
'exif-compression-1' => "Mana mat'isqa",
+'exif-compression-2' => 'CCITT Huñu 3 1-tupu wakinchasqa Huffman purina suni llawiy',
+'exif-compression-3' => 'CCITT Huñu 3 tilifaks llawiy',
+'exif-compression-4' => 'CCITT Huñu 4 tilifaks llawiy',
+
+'exif-copyrighted-true' => 'Iskaychay hayñi kan',
+'exif-copyrighted-false' => 'Sapsi kapuy',
'exif-unknowndate' => "Mana riqsisqa p'unchaw",
@@ -2988,6 +3097,8 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
'exif-planarconfiguration-1' => 'muyuqhawa chanta',
'exif-planarconfiguration-2' => "p'allta chanta",
+'exif-colorspace-65535' => 'Mana kaliwrasqa',
+
'exif-componentsconfiguration-0' => 'manam kachkanchu',
'exif-exposureprogram-0' => "Mana ch'uyanchasqa",
@@ -3101,6 +3212,10 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
'exif-gpslongitude-e' => 'Anti suni',
'exif-gpslongitude-w' => 'Kunti suni',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|mitru|mitru}} mama quchamanta aswan hanaq',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|mitru|mitru}} mama quchamanta aswan ura',
+
'exif-gpsstatus-a' => 'Tupuchkaspa',
'exif-gpsstatus-v' => 'Tupuy ruranakunalla kay',
@@ -3112,21 +3227,73 @@ Kikin siq'ipi ima qatiq t'inkillapas sapaqllatam hamut'arisqa, ahinataq siq'ipi
'exif-gpsspeed-m' => 'Milla uraman',
'exif-gpsspeed-n' => 'Muqukuna',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilumitru (waranqa thatki)',
+'exif-gpsdestdistance-m' => 'Milla',
+'exif-gpsdestdistance-n' => "Wamp'una milla",
+
+'exif-gpsdop-excellent' => 'Pawqarquri ($1)',
+'exif-gpsdop-good' => 'Sumaqlla ($1)',
+'exif-gpsdop-moderate' => 'Allinraq ($1)',
+'exif-gpsdop-fair' => 'Chaskinaraq ($1)',
+'exif-gpsdop-poor' => 'Mana chaskina ($1)',
+
+'exif-objectcycle-a' => 'Paqarinlla',
+'exif-objectcycle-p' => "Ch'isilla",
+'exif-objectcycle-b' => "Paqarinpas ch'isipas",
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Chiqap puririy',
'exif-gpsdirection-m' => 'Maqnitiku puririy',
+'exif-ycbcrpositioning-1' => 'Chawpichasqa',
+'exif-ycbcrpositioning-2' => 'Kuska saywachasqa',
+
+'exif-dc-contributor' => "Llamk'apuqkuna",
+'exif-dc-coverage' => "Maykamapas hayk'apkamapas midya haywakun",
+'exif-dc-date' => "P'unchaw(kuna)",
+'exif-dc-publisher' => 'Uyaychaq',
+'exif-dc-relation' => 'Ninachisqa midyakuna',
+'exif-dc-rights' => 'Hayñikuna',
+'exif-dc-source' => 'Pukyu rikcha',
+'exif-dc-type' => 'Midya laya',
+
+'exif-rating-rejected' => "Hat'asqa",
+
+'exif-isospeedratings-overflow' => '65535-manta aswan',
+
+'exif-iimcategory-ace' => 'Kapchiy, kawsay saphi, tunay',
+'exif-iimcategory-clj' => "Q'uma, chiqarimay",
+'exif-iimcategory-dis' => "Aquyrakikuna, ñak'ariykuna, llakiykuna",
+'exif-iimcategory-fin' => 'Musiku, qullqikamay',
+'exif-iimcategory-edu' => 'Yachachiy',
+'exif-iimcategory-evn' => 'Pachamama, muyuriq pacha',
+'exif-iimcategory-hth' => 'Qhali kay',
+'exif-iimcategory-hum' => "Rayk'uy",
+'exif-iimcategory-lab' => "Llamk'ay",
+'exif-iimcategory-lif' => 'Kawsay hamuy, hawkay',
+'exif-iimcategory-pol' => 'Kawpay (pulitika)',
+'exif-iimcategory-rel' => 'Iñiy',
+'exif-iimcategory-sci' => "Hamut'ay, allwiya kamay",
+'exif-iimcategory-soi' => 'Qutu kawsay, sapsi kay',
+'exif-iimcategory-spo' => 'Kurku kallpanchay',
+'exif-iimcategory-war' => 'Awqanakuy',
+'exif-iimcategory-wea' => "Mit'a",
+
+'exif-urgency-normal' => 'Sapsi kaq ($1)',
+'exif-urgency-low' => 'Aslla ($1)',
+'exif-urgency-high' => 'Hatun ($1)',
+'exif-urgency-other' => 'Ruraqpa churasqan ñawpaqchay ($1)',
+
# External editor support
'edit-externally' => "Kay willañiqita hawa rurana wakichiwan llamk'apuy",
-'edit-externally-help' => 'Astawan willasunaykipaqqa [http://www.mediawiki.org/wiki/Manual:External_editors tiyachina yanapata] (inlish simipi) ñawiriy.',
+'edit-externally-help' => 'Astawan willasunaykipaqqa [//www.mediawiki.org/wiki/Manual:External_editors tiyachina yanapata] (inlish simipi) ñawiriy.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tukuy',
-'imagelistall' => 'tukuy',
-'watchlistall2' => 'lliw',
-'namespacesall' => 'tukuy',
-'monthsall' => '(tukuy)',
-'limitall' => 'tukuy',
+'watchlistall2' => 'lliw',
+'namespacesall' => 'tukuy',
+'monthsall' => '(tukuy)',
+'limitall' => 'tukuy',
# E-mail address confirmation
'confirmemail' => 'E-chaski imamaytaykita takyachiy',
@@ -3197,11 +3364,12 @@ $1",
'trackbackdeleteok' => 'Ñawpaqman qatipay (Trackback) nisqaqa qullusqañam.',
# Delete conflict
-'deletedwhileediting' => "'''Paqtataq''': Kay p'anqataqa qullurqankum qam llamk'apuyta qallarirqaptiyki.",
-'confirmrecreate' => "Qam kay p'anqata llamk'apuyta qallarirqaptiyki, [[User:$1|$1]] sutiyuq ruraqmi ([[User talk:$1|rimanakuy]]) qullurqan, kayraykum nispa:
+'deletedwhileediting' => "'''Paqtataq''': Kay p'anqataqa qullurqankum qam llamk'apuyta qallarirqaptiyki.",
+'confirmrecreate' => "Qam kay p'anqata llamk'apuyta qallarirqaptiyki, [[User:$1|$1]] sutiyuq ruraqmi ([[User talk:$1|rimanakuy]]) qullurqan, kayraykum nispa:
: ''$2''
Ama hina kaspa, chiqapta kay p'anqatam musuqmanta kamayta munani nispa takyachiy.",
-'recreate' => 'Musuqta paqarichiy',
+'confirmrecreate-noreason' => "Qam kay p'anqata llamk'apuyta qallarirqaptiyki, [[User:$1|$1]] sutiyuq ruraqmi ([[User talk:$1|rimanakuy]]) qullurqan. Ama hina kaspa, chiqapta kay p'anqatam musuqmanta kamayta munani nispa takyachiy.",
+'recreate' => 'Musuqta paqarichiy',
# action=purge
'confirm_purge_button' => 'Arí niy',
@@ -3249,12 +3417,12 @@ Sapsilla ñawpaq qhawariyta tukuykachay.',
'watchlistedit-noitems' => "Manam ima p'anqatapas watiqachkankichu.",
'watchlistedit-normal-title' => "Watiqana sutisuyuta llamk'apuy",
'watchlistedit-normal-legend' => "P'anqa sutikunata watiqana sutisuyumanta qichuy",
-'watchlistedit-normal-explain' => "Kay qatiqpiqa watiqana sutisuyuykipi p'anqa sutikunatam rikunki. P'anqa sutita qichunaykipaqqa chay sutip kinrayninpi kaq k'itichata ñit'iywan sananchaspa \"{{int:Watchlistedit-normal-submit}}\" nisqata ñit'iy. [[Special:Watchlist/raw|Chawa watiqana sutisuyuta llamk'apuy]] nisqata ñit'iytapas atinkim.",
+'watchlistedit-normal-explain' => "Kay qatiqpiqa watiqana sutisuyuykipi p'anqa sutikunatam rikunki. P'anqa sutita qichunaykipaqqa chay sutip kinrayninpi kaq k'itichata ñit'iywan sananchaspa \"{{int:Watchlistedit-normal-submit}}\" nisqata ñit'iy. [[Special:EditWatchlist/raw|Chawa watiqana sutisuyuta llamk'apuy]] nisqata ñit'iytapas atinkim.",
'watchlistedit-normal-submit' => "P'anqa sutikunata qichuy",
'watchlistedit-normal-done' => '{{PLURAL:$1|1 página ha sido borrada|$1 páginas han sido borradas}} de tu lista de seguimiento:',
'watchlistedit-raw-title' => "Chawa watiqana sutisuyuta llamk'apuy",
'watchlistedit-raw-legend' => "Chawa watiqana sutisuyuta llamk'apuy",
-'watchlistedit-raw-explain' => "Kay qatiqpiqa watiqana sutisuyuykipi p'anqa sutikunatam rikunki. Sutisuyuta llamk'apuytam atinki sutikunata yapaspa icha qichuspa, huk sutim sapa siq'iman. Tukuspaykiqa, \"{{int:Watchlistedit-raw-submit}}\" nisqata ñit'iy. [[Special:Watchlist/edit|Sapsi llamk'apunaykitapas]] llamk'achiytam atinki.",
+'watchlistedit-raw-explain' => "Kay qatiqpiqa watiqana sutisuyuykipi p'anqa sutikunatam rikunki. Sutisuyuta llamk'apuytam atinki sutikunata yapaspa icha qichuspa, huk sutim sapa siq'iman. Tukuspaykiqa, \"{{int:Watchlistedit-raw-submit}}\" nisqata ñit'iy. [[Special:EditWatchlist|Sapsi llamk'apunaykitapas]] llamk'achiytam atinki.",
'watchlistedit-raw-titles' => "P'anqakuna:",
'watchlistedit-raw-submit' => 'Watiqana sutisuyuta musuqchay',
'watchlistedit-raw-done' => 'Watiqana sutisuyuykiqa musuqchasqañam.',
@@ -3271,33 +3439,33 @@ Sapsilla ñawpaq qhawariyta tukuykachay.',
'duplicate-defaultsort' => 'Paqtataq: Kikinmanta allinchana llawi «$2» ñawpaq kikinmanta allinchana llawitam «$1» huknachan.',
# Special:Version
-'version' => 'Musuqchasqa',
-'version-extensions' => "Tiyachisqa mast'arinakuna",
-'version-specialpages' => "Sapaq p'anqakuna",
-'version-parserhooks' => "T'ikrana ch'iwinakuna",
-'version-variables' => 'Hukchakuqkuna',
-'version-skins' => 'Qarakuna',
-'version-other' => 'Wakin',
-'version-mediahandlers' => "Midya llamk'apuq",
-'version-hooks' => "Ch'iwinakuna",
-'version-extension-functions' => "Mast'arina ruranakuna",
-'version-parser-extensiontags' => "T'ikrana mast'arina ruranakuna",
-'version-parser-function-hooks' => "T'ikrana rurana ch'iwinakuna",
-'version-skin-extension-functions' => "Qara mast'arina ruranakuna",
-'version-hook-name' => "Ch'iwinap sutin",
-'version-hook-subscribedby' => 'Kay runap mañaykusqan:',
-'version-version' => '(Musuqchasqa $1)',
-'version-license' => 'Saqillay',
-'version-poweredby-credits' => "Kay wikitaqa '''[http://www.mediawiki.org/ MediaWiki-m]''' atichin, copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'hukkuna',
-'version-license-info' => "MediaWiki llamp'u kaqqa qispim; mast'ariytam icha wakinchaytam atinki GNU General Public License nisqa saqillaypa kamachisqankama, Free Software Foundation nisqap uyaychasqan; saqillaypa iskay ñiqin musuqchasqan, munaspaykiqa aswan musuq musuqchasqan.
+'version' => 'Musuqchasqa',
+'version-extensions' => "Tiyachisqa mast'arinakuna",
+'version-specialpages' => "Sapaq p'anqakuna",
+'version-parserhooks' => "T'ikrana ch'iwinakuna",
+'version-variables' => 'Hukchakuqkuna',
+'version-antispam' => "Spam hark'ay",
+'version-skins' => 'Qarakuna',
+'version-other' => 'Wakin',
+'version-mediahandlers' => "Midya llamk'apuq",
+'version-hooks' => "Ch'iwinakuna",
+'version-extension-functions' => "Mast'arina ruranakuna",
+'version-parser-extensiontags' => "T'ikrana mast'arina ruranakuna",
+'version-parser-function-hooks' => "T'ikrana rurana ch'iwinakuna",
+'version-hook-name' => "Ch'iwinap sutin",
+'version-hook-subscribedby' => 'Kay runap mañaykusqan:',
+'version-version' => '(Musuqchasqa $1)',
+'version-license' => 'Saqillay',
+'version-poweredby-credits' => "Kay wikitaqa '''[//www.mediawiki.org/ MediaWiki-m]''' atichin, copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'hukkuna',
+'version-license-info' => "MediaWiki llamp'u kaqqa qispim; mast'ariytam icha wakinchaytam atinki GNU General Public License nisqa saqillaypa kamachisqankama, Free Software Foundation nisqap uyaychasqan; saqillaypa iskay ñiqin musuqchasqan, munaspaykiqa aswan musuq musuqchasqan.
MediaWikitaqa mast'ariyku runakunata yanapanapaqmi, ichataq MANAM FIYAKUYTA ATIYKUCHU; manapas ch'aqtasqa RURANALLA FIYAKUYTACHU manapas ima SAPAQ TUKUYNINPAQCHU. GNU General Public License nisqa saqillayta qhaway aswan yuyaykunapaq.
-[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License nisqa saqillaymanta iskaychasqata] chaskiykiman kay wakichinawan; manaqa, kayman qillqamuwayku: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA icha [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html internet llikapi ñawiriy].",
-'version-software' => "Tiyachisqa llamp'u kaq",
-'version-software-product' => 'Ruruchisqa',
-'version-software-version' => 'Musuqchasqa',
+[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License nisqa saqillaymanta iskaychasqata] chaskiykiman kay wakichinawan; manaqa, kayman qillqamuwayku: Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA icha [//www.gnu.org/licenses/old-licenses/gpl-2.0.html internet llikapi ñawiriy].",
+'version-software' => "Tiyachisqa llamp'u kaq",
+'version-software-product' => 'Ruruchisqa',
+'version-software-version' => 'Musuqchasqa',
# Special:FilePath
'filepath' => 'Willañiqi ñan',
@@ -3309,22 +3477,22 @@ Rikchakunatataq hunt'a ch'irkukupim rikunki. Huk willañiqi llayakunaqa tantapus
Willañiqi sutita yaykuchispaqa ama \"{{ns:file}}:\" ñawpaq k'askaqta qillqamuychu.",
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Iskaychasqa willañiqikunata maskay',
-'fileduplicatesearch-summary' => "Iskaychasqa willañiqikunata maskay ''hash'' chaninpi tiksispa.
-
-Mana “{{ns:file}}:†k'askaqniyuq willañiqip sutinta yaykuchiy.",
-'fileduplicatesearch-legend' => 'Iskaychasqata maskay',
-'fileduplicatesearch-filename' => 'Willañiqip sutin:',
-'fileduplicatesearch-submit' => 'Maskay',
-'fileduplicatesearch-info' => '$1 × $2 iñu<br />Willañiqip chhikan kaynin: $3<br />MIME laya: $4',
-'fileduplicatesearch-result-1' => '"$1" sutiyuq willañiqiqa manam kaqllalla iskaychasqayuqchu.',
-'fileduplicatesearch-result-n' => '"$1" sutiyuq willañiqiqa {{PLURAL:$2|1 kaqllalla iskaychasqayuqmi|$2 kaqllalla iskaychasqakunayuqmi}}.',
+'fileduplicatesearch' => 'Iskaychasqa willañiqikunata maskay',
+'fileduplicatesearch-summary' => "Iskaychasqa willañiqikunata maskay ''hash'' chaninpi tiksispa.",
+'fileduplicatesearch-legend' => 'Iskaychasqata maskay',
+'fileduplicatesearch-filename' => 'Willañiqip sutin:',
+'fileduplicatesearch-submit' => 'Maskay',
+'fileduplicatesearch-info' => '$1 × $2 iñu<br />Willañiqip chhikan kaynin: $3<br />MIME laya: $4',
+'fileduplicatesearch-result-1' => '"$1" sutiyuq willañiqiqa manam kaqllalla iskaychasqayuqchu.',
+'fileduplicatesearch-result-n' => '"$1" sutiyuq willañiqiqa {{PLURAL:$2|1 kaqllalla iskaychasqayuqmi|$2 kaqllalla iskaychasqakunayuqmi}}.',
+'fileduplicatesearch-noresults' => '"$1" sutiyuq willañiqiqa manam tarisqachu.',
# Special:SpecialPages
'specialpages' => "Sapaq p'anqakuna",
'specialpages-note' => '----
* Sapsipaq sapaq p\'anqakuna.
-* <strong class="mw-specialpagerestricted">Sapaqkunallapaq sapaq p\'anqakuna.</strong>',
+* <span class="mw-specialpagerestricted">Sapaqkunallapaq sapaq p\'anqakuna.</span>
+* <span class="mw-specialpagecached">Pakasqa hallch\'alla sapaq p\'anqakuna.</span>',
'specialpages-group-maintenance' => 'Hatalliy willaykuna',
'specialpages-group-other' => "Huk sapaq p'anqakuna",
'specialpages-group-login' => 'Yaykuy / rakiqunata kichariy',
diff --git a/languages/messages/MessagesQug.php b/languages/messages/MessagesQug.php
new file mode 100644
index 00000000..c4fcebf8
--- /dev/null
+++ b/languages/messages/MessagesQug.php
@@ -0,0 +1,761 @@
+<?php
+/** Runa shimi (Runa shimi)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author AlimanRuna
+ * @author Ebe123
+ * @author Sylvain2803
+ */
+
+$fallback = 'qu';
+
+$messages = array(
+# Dates
+'sunday' => 'Hawkay',
+'monday' => 'Sullka',
+'tuesday' => 'Kulla',
+'wednesday' => 'Haway',
+'thursday' => 'Patma',
+'friday' => 'Haycha',
+'saturday' => 'Tinki',
+'sun' => 'Dom',
+'mon' => 'Lun',
+'tue' => 'Mar',
+'wed' => 'Mie',
+'thu' => 'Jue',
+'fri' => 'Vie',
+'sat' => 'Sab',
+'january' => 'Kamay',
+'february' => 'Panchiy',
+'march' => 'Pawkar',
+'april' => 'Ayriwa',
+'may_long' => 'Aymuray',
+'june' => 'Inti',
+'july' => 'Purun',
+'august' => 'Chakmay',
+'september' => 'Kuya',
+'october' => 'Yaku',
+'november' => 'Ayar',
+'december' => 'Kapak',
+'january-gen' => 'Kamay',
+'february-gen' => 'Panchiy',
+'march-gen' => 'Pawkar',
+'april-gen' => 'Ayriwa',
+'may-gen' => 'Aymuray',
+'june-gen' => 'Inti',
+'july-gen' => 'Purun',
+'august-gen' => 'Chakmay',
+'september-gen' => 'Kuya',
+'october-gen' => 'Yaku',
+'november-gen' => 'Ayar',
+'december-gen' => 'Kapak',
+'jan' => 'Kam',
+'feb' => 'Pan',
+'mar' => 'Paw',
+'apr' => 'Ayri',
+'may' => 'Aymu',
+'jun' => 'Inti',
+'jul' => 'Pur',
+'aug' => 'Chak',
+'sep' => 'Kuya',
+'oct' => 'Yaku',
+'nov' => 'Ayar',
+'dec' => 'Kap',
+
+# Categories related messages
+'pagecategories' => '{{PLURAL:$1|Katiguriya|Katiguriyakuna}}',
+'category_header' => '"$1" katiguriyapi tiyak pankakuna',
+'subcategories' => 'Uchilla katikuriyakuna',
+'category-media-header' => '"$1" katiguriyapi tiyak archiwukuna',
+'category-empty' => "''Kay katiguriyapi nimata tiyanchu.''",
+'hidden-categories' => '{{PLURAL:$1|Pakashka katiguriya|Pakashka katiguriyakuna}}',
+'category-subcat-count' => '{{PLURAL:$2|Kay katikuriyaka shuklla ushi katikuriyata charin :|Kay katiguriyaka kay katik {{PLURAL:$1|ushi katikuriyata|$1 ushi katikuriyakunata}} charinmi, $2-pura.}}',
+'category-article-count' => '{{PLURAL:$2|Kay katiguriyapi shuklla pankaka tiyanmi.|Kay katiguriyapi kay katik {{PLURAL:$1|panka|$1 pankakunaka}} tiyanmi, $2-pura.}}',
+'category-file-count' => '{{PLURAL:$2|Kay katiguriyapi shuklla archiwuka tiyanmi.|Kay katiguriyapi kay katik {{PLURAL:$1|archiwu|$1 archiwukunaka}} tiyanmi, $2-pura.}}',
+'listingcontinuesabbrev' => 'katiy',
+'noindex-category' => 'Googlepak pakashka pankakuna (__NOINDEX__ charik pankakuna)',
+
+'about' => 'Pankamanta',
+'newwindow' => '(Shuk mushuk wintanapi pakan)',
+'cancel' => 'Ama nina',
+'mytalk' => 'Ñukapak rimanakuy',
+'navigation' => 'Wampuna',
+
+# Cologne Blue skin
+'qbfind' => 'Maskana',
+'faq' => 'Ashtawan tapushkaka tapunakuna',
+
+# Vector skin
+'vector-action-addsection' => 'Shuk mushuk rimanakuyta kallarina',
+'vector-action-delete' => 'Pichana',
+'vector-action-move' => 'Apakuna',
+'vector-action-protect' => 'Harkana',
+'vector-view-create' => 'Kamarina',
+'vector-view-edit' => 'Killkana',
+'vector-view-history' => 'Wiñay kawsayta rikuna',
+'vector-view-view' => 'Killkakatina',
+'vector-view-viewsource' => 'Pukyu killkata rikuna',
+'actions' => 'Ruraykuna',
+'namespaces' => 'Shutipak kitikuna',
+'variants' => 'Shuk rikuchiy shinakuna',
+
+'errorpagetitle' => 'Pantay',
+'returnto' => '$1-man tikramuna.',
+'tagline' => '{{SITENAME}}manta',
+'help' => 'Yanapa',
+'search' => 'Maskana',
+'searchbutton' => 'Maskana',
+'searcharticle' => 'Rina',
+'history' => 'Wiñay kawsay',
+'history_short' => 'Wiñay kawsay',
+'printableversion' => 'Impresoraman pankakuna',
+'permalink' => 'Enlace permanente',
+'edit' => 'killkana',
+'create' => 'Kamarina',
+'editthispage' => 'Kay pankapi killkana',
+'delete' => 'pichay',
+'protect' => 'Wichkana',
+'protect_change' => 'Shukchina',
+'newpage' => 'Mushuk panka',
+'talkpage' => 'Kay pankamanta rimanakuna',
+'talkpagelinktext' => 'Rimanakuy',
+'personaltools' => 'Kikinpak llankanaman yanapanakuna',
+'talk' => 'Rimanakuna',
+'views' => 'Rikunakuna',
+'toolbox' => 'Llankanakuna',
+'otherlanguages' => 'Shuk shimikunapi',
+'redirectedfrom' => '($1-manta pushashka)',
+'redirectpagesub' => 'pushashka panka',
+'lastmodifiedat' => 'Kay pankata $1 punchapi, $2 pachapi kutin llankashkami karka',
+'jumpto' => 'Chayman rina',
+'jumptonavigation' => 'Wampuna',
+'jumptosearch' => 'Maskana',
+
+# 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}}manta',
+'aboutpage' => 'Project:{{SITENAME}}manta',
+'copyright' => 'Kay panka hawapi, $1$ killkakunapak hayñikunaka tiyanmi',
+'copyrightpage' => '{{ns:project}}:Killkakpa hayñikuna',
+'currentevents' => 'Kunan pacha',
+'currentevents-url' => 'Project:Kunan pacha',
+'disclaimers' => 'Kamachikmanta willaykuna',
+'disclaimerpage' => 'Project:Kamachikmanta kapak willaykuna',
+'edithelp' => 'Llankanapaa yanapa',
+'edithelppage' => 'Help:Imashina killkankapa yanapana ?',
+'helppage' => 'Help:Yanapa',
+'mainpage' => 'Kapak Panka',
+'mainpage-description' => 'Kapak panka',
+'portal' => 'Ayllupak panka',
+'portal-url' => 'Project:Ayllupak panka',
+'privacy' => 'Willakunata amachaynin',
+'privacypage' => 'Project:Kampak willaykunawan imata ruranchik ?',
+
+'retrievedfrom' => '$1 pankamanta hapishka',
+'youhavenewmessages' => '$1 charipanki ($2).',
+'newmessageslink' => 'Mushuk willaymi',
+'newmessagesdifflink' => 'yalli mushuk killkay',
+'editsection' => 'Killkana',
+'editold' => 'Killkana',
+'viewsourceold' => 'Pukyu killkata rikuna',
+'editlink' => 'Killkana',
+'viewsourcelink' => 'Pukyu killkata rikuna',
+'editsectionhint' => '$1 Seccionpi llankana',
+'toc' => 'Tiyakkuna',
+'showtoc' => 'Rikuchina',
+'hidetoc' => 'Pakana',
+'site-rss-feed' => '$1 RSS pukyu',
+'site-atom-feed' => "$1 ''Atom'' pukuy",
+'page-rss-feed' => '$1 RSS pukyu',
+'page-atom-feed' => '$1 Atom feed',
+'red-link-title' => '$1 (illakmi panka)',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Panka',
+'nstab-user' => 'Rurakpa panka',
+'nstab-special' => 'Sapak pankakuna',
+'nstab-project' => 'Ruraykamaypa panka',
+'nstab-image' => 'Archivu',
+'nstab-template' => 'Plantilla',
+'nstab-category' => 'Uwarullkay',
+
+# General errors
+'missing-article' => "Hatun kamupi shuk killkayta mana tarin, shinapash chay killkayta tiyanami kan. Paypa chay shutima kan : «$1» $2.
+Icha shuk ñawpak pachamanta ''diff'' ñamana tiyanchu, icha kay tinkika shuk pichashka pankapa shutimi kan.
+Mana shina kakpi, shuk [[Special:ListUsers/sysop|kamachyik]]man willapay, payta URL killkata willapay.",
+'missingarticle-rev' => '(Killkay#: $1)',
+'badtitle' => 'Pankapa shutika mana allichu',
+'badtitletext' => 'Kay pankapa shutika mana allichu, icha illakmi kan. Icha mana alli llikata charin.',
+'viewsource' => 'Pukyu killkata rikuna',
+
+# Login and logout pages
+'yourname' => 'Rurak shuti:',
+'yourpassword' => 'Yaykunkapak rimay:',
+'yourpasswordagain' => 'Yaykunapak rimayta kutin killkapay:',
+'remembermypassword' => 'Kay Internet-wampunapi {{PLURAL:$1|shuk punchata|$1 punchakunata}} ñuka rurak shutiwan yaykushkami katichiwapay.',
+'login' => 'Yaykuna',
+'nav-login-createaccount' => 'Yaykuna',
+'loginprompt' => '{{SITENAME}}man yaykunkapak <i>cookies</i>-man ari ninami kapanki.',
+'userlogin' => 'Yaykuna',
+'logout' => 'Llukshina',
+'userlogout' => 'Llukshina',
+'nologin' => "Mana rurak shutita charinchu ? '''$1'''.",
+'nologinlink' => 'Shuk rurak shutita akllana',
+'createaccount' => 'Shuk rurak shutita akllana',
+'gotaccount' => "Ñachu rurak shutita charinchu ? '''$1'''.",
+'gotaccountlink' => 'Yaykuna',
+'userlogin-resetlink' => 'Kikinpa yaykunaman yuyaykunata kunkapankichu ?',
+'mailmypassword' => 'Musuq yaykunkapak rimayta e-chaskiwan kachawapay',
+'loginlanguagelabel' => 'Shimi: $1',
+
+# Edit page toolbar
+'bold_sample' => 'Yanayashka killka',
+'bold_tip' => 'Yanayashka killka',
+'italic_sample' => 'Wiksu killka',
+'italic_tip' => 'Wiksu qillqa',
+'link_sample' => 'Tinkipak uma rimay',
+'link_tip' => 'Ukuman tinki',
+'extlink_sample' => 'http://www.example.com tinkipa uma rimay',
+'extlink_tip' => 'Hawaman tinki (http:// llikakunawan kallarinami kan)',
+'headline_sample' => 'Uma rimaypa killka',
+'headline_tip' => 'Ishkay-niki hatun uma rimay',
+'nowiki_sample' => "Kaypi wiki-shimi illak (''sin formato'') killkaykunata churapay",
+'nowiki_tip' => 'wiki-shimi ama hapinchu',
+'image_tip' => 'Ukupi tiyak rikcha',
+'media_tip' => 'Archivuman tinkikuna',
+'sig_tip' => 'Kikinpa aspiyta, punchawan pachawanpash killkan',
+'hr_tip' => 'sirik aspi (paykunata ama ashtawan churapay)',
+
+# Edit pages
+'summary' => 'Uchilla rimay',
+'subject' => 'Imamanta/Uma rimay',
+'minoredit' => 'Kay killkayka uchillami kan',
+'watchthis' => 'Kay pankata rikukuna',
+'savearticle' => 'Pankata churana',
+'preview' => 'Ñawpak rikuy',
+'showpreview' => 'Ñawpak rikuchina',
+'showdiff' => 'Mushuk killkaykunata rikuchina',
+'anoneditwarning' => "'''Rikupay:''' kikinpa mana rurak shutiwan yaykurkapanki, shina kakpika kikinpa IP yupaykunaka kay pankapa wiñay kawsaypi tiyankami .",
+'newarticle' => '(Mushuk)',
+'newarticletext' => 'Shuk illak pankaman tinkita katirkapanki. Kay pankata kamankapak uraypi killkapay. Ashtawan yachakunkapak [[{{MediaWiki:Helppage}}|yanapana pankata]] rikupay. Mana chay pankata kamanata munakpika, ñawpa pankaman kutin ripay.',
+'noarticletext' => 'Kunan pachapi, kay pankaka mana killkaykunata charin.
+Pakpak shutita [[Special:Search/{{PAGENAME}}|shuk pankakunapi maskanata]], <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} registroskunapi maskanata]pash ushankimi, kutin [{{fullurl:{{FULLPAGENAME}}|action=edit}} kay pankata kamarinata] ushankimi',
+'noarticletext-nopermission' => 'Kunan pachapi kay pankaka mana killkashkakunata charinchu. Paypak shutita [[Special:Search/{{PAGENAME}}|shuk pankakunapi maskanata]] ushapankimi, shinalla <span class="plainlinks">pankakunapa wiñay kawsay kamupi [{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tinkishka shukchiykunaka] maskana</span>',
+'previewnote' => 'Rikupay: kay killkaykunata mana churapankichu !',
+'editing' => '$1 pankapi killkashpa',
+'editingsection' => '$1 rakipi killkashpa',
+'templatesused' => 'Kay pankaka {{PLURAL:$1|plantilla|plantillakuna}}ta llankachin:',
+'templatesusedpreview' => 'Kay ñawpak rikuchiyka {{PLURAL:$1|plantilla|plantillakuna}}ta llankachin:',
+'template-protected' => 'allichishka',
+'template-semiprotected' => 'chawpilla wichkashka',
+'hiddencategories' => 'Kay pankaka {{PLURAL:$1|shuk pakashka samiyachiypimi|$1 pakashka samiyachiykunapimi}} kan:',
+'permissionserrorstext-withaction' => 'Mana $2ta ushapankichu, {{PLURAL:$1|imamanta|imakunamanta}}:',
+'recreate-moveddeleted-warn' => "'''Rikupay''': shuk pichashkamari pankata kutin kamachikupanki !
+
+
+Tapuripay, kaypi killkanata allimi, mana allimi kanchu.
+Uraypi apakunakunapa pichanakunapa kamuta rikuchiwanchik:",
+'moveddeleted-notice' => 'Kaypankaka pichashkami kan.
+Uraypi apakuykunpa, pichaykunapa kamuta rikuchinchik:',
+
+# Parser/template warnings
+'post-expand-template-inclusion-warning' => 'Rikupay: plantillaskunaka ashtawan hatunmi kan. Wakin plantillakunata mana churashkami kanka.',
+'post-expand-template-inclusion-category' => 'Ashtawan plantillakunayuk pankakuna',
+'post-expand-template-argument-warning' => "'''Rikupay''': Kay pankaka shuk ashtawan llashak plantillaman kachashka rimayta charin.
+Kay (kaykunachu) kachashkakunaka cunkashkami kashka.",
+'post-expand-template-argument-category' => 'Cunkashka plantillaman kachashkakunata charishpaka pankakuna',
+
+# History pages
+'viewpagelogs' => 'Kay pankapa kamukunata rikuna',
+'currentrev-asof' => '$1 pachamanta kunan killkay',
+'revisionasof' => '$1-pa panka',
+'revision-info' => 'Kay pankaka $1-pi shinallami karka, $2 rurakka kayta rurarka.',
+'previousrevision' => 'Ñawpak pachapi panka',
+'nextrevision' => 'Katik killkay',
+'currentrevisionlink' => 'Kunan killkashka',
+'cur' => 'Kunan',
+'last' => 'ñawp',
+'histlegend' => "Shukchiykunata maskankapak, ishkay ñawpa pankakunata akllapay, chay kipa \"Enter\" teclata uraypi botontapash suchuchipay.<br />
+({{int:cur}}) = ñawpa pankapak kunan pankamanta imashpa shikanmi kan, ({{int:last}})=ashtawan ñawpak pankamanta imashpa shikanmi kan, '''{{int:minoreditletter}}''' = uchilla killkay.",
+'history-fieldset-title' => 'Wiñay kawsaypi maskana',
+'history-show-deleted' => 'Pichashkalla',
+'histfirst' => 'Ashtawan ñawpakkuna',
+'histlast' => 'Kipakkuna',
+
+# Revision feed
+'history-feed-item-nocomment' => '$1, $2-pi',
+
+# Revision deletion
+'rev-delundel' => 'Rikuchiy/pakay',
+'revdelete-logentry' => 'Pita [[$1]] ñawpa killkaykunata rikunata ushanchu kutin kamachirka.',
+'revdel-restore' => 'Rikuyukkunata shukchina',
+'revdel-restore-deleted' => 'pichashka shukchiykuna',
+'revdel-restore-visible' => 'Mana pakashka shukchiykuna',
+'revdelete-content' => 'Tiyakkuna',
+'revdelete-hid' => '$1-ta pakarka',
+'revdelete-log-message' => '$1, $2 {{PLURAL:$2|mushuk killkay|mushuk killkaykuna}}pak',
+
+# Merge log
+'revertmerge' => 'Shukllachiyta kutichina',
+
+# Diffs
+'history-title' => '"$1" pankapa killkaykunapa wiñay kawsay',
+'difference' => '(imashpa shikan shikanmi kan)',
+'lineno' => '$1 aspi',
+'compareselectedversions' => 'Kay akllashka pankakunaka imashpa mana shinami kapan willana',
+'editundo' => 'Kutichina',
+'diff-multi' => '({{PLURAL:$2|Shuk rurakpa|$2 rurakkunapa}} {{PLURAL:$1|chawpipi shuk mushuk killkayta mana rikuchishkachu|chawpipi $1 mushuk killkaykunata mana rikuchishkachu}})',
+
+# Search results
+'searchresults' => 'Maskaymanta pankakuna',
+'searchresults-title' => '"$1" maskaymanta pankakuna',
+'searchresulttext' => '{{SITENAME}}pi maskaymanta ashtawan yachaykunata rikunkapa, [[{{MediaWiki:Helppage}}|{{int:help}}]] rikuripay',
+'searchsubtitle' => '\'\'\'[[:$1]]\'\'\' pankata maskashkanki ([[Special:Prefixindex/$1|tukuy "$1" killkaywan kallarik pankakuna]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|tukuy "$1" killkaywan kallarik pankakuna]])',
+'searchsubtitleinvalid' => '"$1"-ta maskashkapanki',
+'notitlematches' => 'Mana shina pankata tiyanchu',
+'notextmatches' => 'Mana pankaka kay rimaykunata charin',
+'prevn' => '{{PLURAL:$1|$1}} ñawpak',
+'nextn' => '{{PLURAL:$1|$1}} katik',
+'prevn-title' => 'Ñawpak $1 {{PLURAL:$1|maskashka panka|Maskashka pankakuna}}',
+'nextn-title' => 'Katik $1 {{PLURAL:$1|maskashka panka|Maskashka pankakuna}}',
+'shown-title' => 'Shuk pankapi $1 {{PLURAL:$1|maskashka panka|maskashka pankakuna}} rikuchina',
+'viewprevnext' => 'Rikuna ($1 {{int:pipe-separator}} $2) ($3).',
+'searchmenu-exists' => 'Kay wikipi shuk "[[:$1]]" shutiyuk pankaka tiyanmi.',
+'searchmenu-new' => "'''Kay wikipi \"[[:\$1]]\" shutiyuk pankata kamariy!'''",
+'searchprofile-articles' => 'Yachaykunayuk pankakuna',
+'searchprofile-project' => 'Yanapana ruraykamaypash pankakuna',
+'searchprofile-images' => 'Multimidya',
+'searchprofile-everything' => 'Tukuy',
+'searchprofile-advanced' => 'Yachak rurakkunamanlla',
+'searchprofile-articles-tooltip' => '$1 kitikunapi maskana',
+'searchprofile-project-tooltip' => '$1 kitikunapi maskana',
+'searchprofile-images-tooltip' => 'Archiwukunata maskana',
+'searchprofile-everything-tooltip' => 'Tukuy pankakunapi maskana (rimanakuy pankakunapipashmi)',
+'searchprofile-advanced-tooltip' => 'Maykan shuti kitikunapi maskanami kanchikchu akllana',
+'search-result-size' => '$1 ({{PLURAL:$2|1 rimay|$2 rimaykuna}})',
+'search-result-category-size' => '{{PLURAL:$1|1 panka|$1 pankakuna}} ({{PLURAL:$2|1 ushi katikuriya|$2 ushi katikuriyakuna}}, {{PLURAL:$3|1 archiwu|$3 archiwukuna}})',
+'search-redirect' => '($1-manta pushashka)',
+'search-section' => '(raki $1)',
+'search-suggest' => '$1 maskankapa munankichu ?',
+'search-interwiki-caption' => 'Ñaña ruraykamaykuna',
+'search-interwiki-default' => '$1 tarishka imakuna:',
+'search-interwiki-more' => '(ashtawan)',
+'search-mwsuggest-enabled' => 'consejoskunawan',
+'search-mwsuggest-disabled' => 'Mana consejoskunawan',
+'searchrelated' => 'tinkishka',
+'searchall' => 'tukuy',
+'showingresultsheader' => "{{PLURAL:$5|Maskashka panka: '''$1''', '''$3'''-manta|Maskashka pankakuna: '''$1 - $2''', '''$3'''-manta}}, '''$4''' maskashpaka",
+'nonefound' => "'''Musyay''': kikinka mana shina rimakpika, mana tukuy shuti-suyupi maskapanki.
+Icha ''all:'' rimaywan (icha shuk shutisuyupa rimaywan) kikinpa killkata kallarikpika taripankimi.",
+'search-nonefound' => 'Kikinka maskashka rimaykunaka mana tiyanchu.',
+'powersearch' => 'Ashtawan alli maskana',
+'powersearch-legend' => 'Ashtawan alli maskana',
+'powersearch-ns' => 'Chay shutipak kitikunapi maskana :',
+'powersearch-redir' => 'Kutinpushaykunata rikuchiy',
+'powersearch-field' => 'Kayta maskana :',
+
+# Preferences page
+'preferences' => 'Akllaykuna',
+'mypreferences' => 'Ñukapak munaykuna',
+'youremail' => 'E-chaski:',
+'yourrealname' => 'Kikinka kikin shuti:',
+'prefs-help-email' => 'E-chaskita munakpilla ninami kanpanki, shinapash kikinka yaykunapak rimayta kunkakpika E-chaskiwanlla kutin yaykunata ushakripankimi.',
+'prefs-help-email-others' => "Kikinka munakpika, shuk rurakkunaka willaykunata shuk kampak rurak pankapi tinkiwan e-chaskita kachawanata ushanka.
+Shuk rurakkunaka kikinpa e-chaski ''dirección''ta mana yachankachu.",
+
+# Groups
+'group-sysop' => 'Kamachikkuna',
+
+'grouppage-sysop' => '{{ns:project}}:Kamachik',
+
+# User rights log
+'rightslog' => 'Rurakpa hayñikunapa kamu',
+
+# Associated actions - in the sentence "You do not have permission to X"
+'action-edit' => 'Kay pankapi killkana',
+
+# Recent changes
+'nchanges' => '$1 {{PLURAL:$1|killkay|killkaykuna}}',
+'recentchanges' => 'Mushuk killkaykuna',
+'recentchanges-legend' => 'Mushuk killkaykunamanta akllaykuna',
+'recentchangestext' => 'Kay pankapi tukuy mushuk killkaykunata rikukuna',
+'recentchanges-feed-description' => 'Kay willay mayupi ashtawan mushuk killkaykunata rikukuna',
+'recentchanges-label-newpage' => 'Kay killkayka shuk mushuk pankata kamachirka.',
+'recentchanges-label-minor' => 'Kay killkayka uchillami kan',
+'recentchanges-label-bot' => 'Kay killkata shuk killkachik-antakami rurarka',
+'recentchanges-label-unpatrolled' => 'Chay killkayka mana kutin rikushkachu kan',
+'rcnote' => "Kay uraypi {{PLURAL:$1|'''1''' mushuk killkay|'''$1''' mushuk killkaykuna}} kipak {{PLURAL:$2|punchapi|'''$2''' punchakunapi}} ($5, $4 rurashka).",
+'rcnotefrom' => "Katikka tukuy '''$2''' manta mushuk killkaykunata rikuchinchik ('''$1'''-kamanlla)",
+'rclistfrom' => '$1-manta mushuk killkaykunata rikuchiy',
+'rcshowhideminor' => 'uchilla killkaykunata $1',
+'rcshowhidebots' => "$1 rurana antakuna (''bots'')",
+'rcshowhideliu' => '$1 shutiyuk rurakkunaka kaypimi kan',
+'rcshowhideanons' => 'Mana shutiyuk rurakkunata $1',
+'rcshowhidepatr' => 'rikushka mushuk killkaykunata $1',
+'rcshowhidemine' => 'Ñukapa killkaykunata $1',
+'rclinks' => 'Ashtawan mushuk $1 killkaykunata, yallishka $2 punchapi rikuna.<br />$3',
+'diff' => 'dif',
+'hist' => 'wñka',
+'hide' => 'Pakana',
+'show' => 'Rikuchina',
+'minoreditletter' => 'u',
+'newpageletter' => 'M',
+'boteditletter' => 'r',
+'rc-enhanced-expand' => 'Uchilla imakukunata rikuchina (JavaScript-wanlla)',
+'rc-enhanced-hide' => 'Uchilla imakukunata pakachina',
+
+# Recent changes linked
+'recentchangeslinked' => 'Shukchishka mushuk killkaykuna',
+'recentchangeslinked-toolbox' => 'Tinkishka mushuk killkaykuna',
+'recentchangeslinked-title' => '"$1"-wan tinkishka mushuk killkaykuna',
+'recentchangeslinked-noresult' => 'Tinkishka pankakunaka kay akllashka pachipi mana kutin killkashkachu karka.',
+'recentchangeslinked-summary' => "Kay pankaka tukuy shuk pankamanta pushashka pankakunapi (icha tukuy shuk ayllupi tiyak pankakunapi) mushuk killkaykunata rikuchiy. Kikinka shuk pankata [[Special:Watchlist|rikukpika]], chay pankapi mushuk killkaykunata '''yanachishkami''' kanka.",
+'recentchangeslinked-page' => 'Pankapa shuti',
+'recentchangeslinked-to' => 'Ama pankata rikuchina, ranti tukuy kay pankaman tinkiyuk pankakunapi mushuk killkaykunatalla rikuchina',
+
+# Upload
+'upload' => 'Aichivutu apakuna',
+'uploadlogpage' => 'Apamushka archiwukunapa kamu',
+'filedesc' => 'Uchilla rimay',
+'uploadedimage' => '«[[$1]]» apakushka.',
+
+'license' => 'Licencia:',
+'license-header' => 'Licencia',
+
+# File description page
+'file-anchor-link' => 'Archiwu',
+'filehist' => 'Archivupak wiñay kawsay',
+'filehist-help' => "Shuk punchapi ''clic'' rurapay, chay punchapak arichivuta rikunkapa.",
+'filehist-revert' => 'kutichina',
+'filehist-current' => 'kunan',
+'filehist-datetime' => 'Puncha/Pacha',
+'filehist-thumb' => 'Uchilla rikuchiy',
+'filehist-thumbtext' => '$1-pak uchilla rikuchiy',
+'filehist-user' => 'Rurak',
+'filehist-dimensions' => 'Mashna hatun',
+'filehist-comment' => 'Willana',
+'imagelinks' => 'Archivuman tinkikuna',
+'linkstoimage' => 'Kay rikchaman {{PLURAL:$1|pankaka|pankakunaka}} tinkikunata charin:',
+'nolinkstoimage' => 'Nima pankaka kay rikchaman tinkikunchu.',
+'sharedupload' => 'Chay rikchaka $1-mantami kan, icha shuk ruraykamaykunaka paywan llankan',
+'sharedupload-desc-here' => 'Chay archiwuka $1-mantami kan, shuk ruraykamaykunaka paywan llankanata ushanmi. Paypa [$2 willanapak pankata] uraypi kutin killkashkami kan.',
+
+# Random page
+'randompage' => 'Chunkashpa panka',
+
+# Statistics
+'statistics' => 'Kay wikimanta yupaykuna',
+
+'disambiguationspage' => 'Template:Alli killkata akllankapak yanapa',
+
+# Miscellaneous special pages
+'nbytes' => '$1 {{PLURAL:$1|byte|byte}}',
+'nmembers' => '$1 {{PLURAL:$1|panka|pankakuna}}',
+'prefixindex' => 'Tukuy kallarikshutiyuk pankakunaka',
+'usercreated' => '$1 punchapi $2 pachapi kamashka',
+'newpages' => 'Mushuk pankakuna',
+'move' => 'Apakuy',
+'movethispage' => 'Kay pankaman shuk mushuk shutita karana',
+'pager-newer-n' => '{{PLURAL:$1|Ashtawan mushuk 1|ashtawan mushuk $1}}',
+'pager-older-n' => '{{PLURAL:$1|ashtawan ñawpak 1|ashtawan ñawpak $1}}',
+
+# Book sources
+'booksources' => 'Kamukunapi pukyukuna',
+'booksources-search-legend' => 'Kamukunapi pukyukunata maskana',
+'booksources-go' => 'Rina',
+
+# Special:Log
+'log' => 'Kamukuna',
+
+# Special:AllPages
+'allpages' => 'Tukuy pankakuna',
+'alphaindexline' => '$1-manta $2-man',
+'prevpage' => 'Ñawpak panka ($1)',
+'allpagesfrom' => 'Shinami kallarik pankakunata rikuchiy:',
+'allpagesto' => 'Kaywan tukurik pankakunata rikuchina:',
+'allarticles' => 'Tukuy pankakuna',
+'allpagessubmit' => 'Rina',
+
+# Special:Categories
+'categories' => 'Katiguriyakuna',
+
+# Special:LinkSearch
+'linksearch' => 'hawaman tinkikuna',
+'linksearch-line' => '$1 pankaka $2-manta tinkishkami kan',
+
+# Special:Log/newusers
+'newuserlogpage' => 'Rurakkununata kamaykunapa kamu',
+'newuserlog-create-entry' => 'Mushuk rurak',
+
+# Special:ListGroupRights
+'listgrouprights-members' => '(Kay tantanakuypa rurakkunapa shutikuna)',
+
+# E-mail user
+'emailuser' => 'Kay rurakman e-chaskita kachana',
+
+# Watchlist
+'watchlist' => 'Rikukushka pankakuna',
+'mywatchlist' => 'Imata rikukuni',
+'watchlistfor2' => '$1-pak $2',
+'watch' => 'rikupay',
+'watchthispage' => 'Kay pankata rikukuna',
+'unwatch' => 'Ñamana rikuna',
+'watchlist-details' => '{{PLURAL:$1|$1 pankata|$1 pankakunata}} rikukunki (rimanakuy pankakunata mana yupakpika).',
+'wlshowlast' => '$1 pachapi, $2 punchapi rurashka $3 mushuk killkaykunata rikuna',
+'watchlist-options' => 'rikukushka pankakuna pankapa akllaykuna',
+
+# Displayed when you click the "watch" button and it is in the process of watching
+'watching' => 'Ñami chay pankata rikukukripanki...',
+'unwatching' => 'Ñamana rikukuchishpa...',
+
+# Delete
+'deletepage' => 'kay pankata pichana',
+'actioncomplete' => 'Ñami rurashka',
+'actionfailed' => 'Mana ushanchu',
+'deletedtext' => '"$1" ñami pichashkami kan.
+$2 rikpika, ima pankakunaka pichashkami kan yachakupanki.',
+'deletedarticle' => '"[[$1]]" pankata picharka',
+'dellogpage' => 'Pichaykunapa kamu',
+'deletecomment' => 'Imashpa:',
+'deleteotherreason' => 'Yapa imashpa:',
+'deletereasonotherlist' => 'Yapa imashpa',
+
+# Rollback
+'rollbacklink' => 'Kutichina',
+
+# Protect
+'protectlogpage' => 'Wichkaykunapak kamu',
+'protectedarticle' => '[[$1]]-ta wichkachirka',
+'protectcomment' => 'Imashpa:',
+'protectexpiry' => 'Ima pachakaman:',
+'protect_expiry_invalid' => "''Ima pachakaman'' mana alli nishkami.",
+'protect_expiry_old' => "''Ima pachakaman'' mana alli nishkami : kay pachaka ñawpak pachapi kapanmi !",
+'protect-default' => 'Rukuy runakunaman ari nipay',
+'protect-fallback' => '«$1» hayñita mutsupanki',
+'protect-level-autoconfirmed' => 'Mushuk rurakkunata mana shutiyuk rurakkunatapash wichkana',
+'protect-level-sysop' => 'Kipukamayukkunalla',
+'protect-expiring' => '$1 (UTC) pachakaman',
+'restriction-type' => 'Hayñi:',
+
+# Undelete
+'undeletelink' => 'Rikuna/pakarina',
+'undeleteviewlink' => 'rikuna',
+'undeletedarticle' => '«[[$1]]» kutin kamarka',
+
+# Namespace form on various pages
+'namespace' => 'Shutipak kiti',
+'invert' => 'akllayta tikrachina',
+'blanknamespace' => 'Kapak',
+
+# Contributions
+'contributions' => 'Kay rurakpa killkaykuna',
+'contributions-title' => '$1 shutiyuq rurakpa killkaykuna',
+'mycontris' => 'Nukapak killkaykuna',
+'contribsub2' => '$1 ($2)',
+'uctop' => ' (kipak killkay)',
+'month' => 'Kay killamanta (ñawpakmantapash):',
+'year' => 'Kay watamanta (ñawpakmantapash) :',
+
+'sp-contributions-newbies' => 'Mushuk rurakkunapallami killkaykunata rikuchiy',
+'sp-contributions-blocklog' => 'Wichkaykunapa kamu',
+'sp-contributions-uploads' => 'apamuykuna',
+'sp-contributions-logs' => 'kamukuna',
+'sp-contributions-talk' => 'rimanakuy',
+'sp-contributions-search' => 'Killkachiykunata maskana',
+'sp-contributions-username' => 'IP yupay icha rurakpa shuti:',
+'sp-contributions-toponly' => 'Ashtawan mushuk killkaykunallatami rikuchina',
+'sp-contributions-submit' => 'Maskana',
+
+# What links here
+'whatlinkshere' => 'Kayman tinkikuna',
+'whatlinkshere-title' => '$1-man tinkiyuk pankakuna',
+'whatlinkshere-page' => 'Panka:',
+'linkshere' => "Chay pankakunaka '''[[:$1]]'''-man tinkiyukmi kan:",
+'nolinkshere' => "Mana pankaka '''[[:$1]]'''-man tinkikunchu.",
+'isredirect' => 'pushashka panka',
+'istemplate' => "Ukupi tiyak panka (''inclusión'')",
+'isimage' => 'rikcha tinki',
+'whatlinkshere-prev' => '{{PLURAL:$1|ñawpak|$1 ñawpak}}',
+'whatlinkshere-next' => '{{PLURAL:$1|katik|$1 katik}}',
+'whatlinkshere-links' => 'tinkikuna',
+'whatlinkshere-hideredirs' => '$1 kutinpushakkuna',
+'whatlinkshere-hidetrans' => '$1 plantillapa uku tiyakkunata',
+'whatlinkshere-hidelinks' => '$1 tinkikuna',
+'whatlinkshere-hideimages' => '$1 rikchaman tinkikuna',
+'whatlinkshere-filters' => 'Susunakuna',
+
+# Block/unblock
+'blockip' => 'Rurakta wichkana',
+'ipboptions' => '2 pacha:2 hours, 1 puncha:1 day, 3 puncha:3 days, 1 simana:1 week, 2 simana:2 weeks, 1 killa:1 month, 3 killa:3 months, 6 killa:6 months,1 pacha:1 year,Tukuy kawsayman:infinite',
+'ipblocklist' => 'Wichkashka rurakkuna',
+'blocklink' => 'Wichkana',
+'unblocklink' => 'Ñamana wichkana',
+'change-blocklink' => 'Wichkayta shukchisna',
+'contribslink' => 'llankaykuna',
+'blocklogpage' => 'Wichkaykunapa kamu',
+'blocklogentry' => '[[$1]]-ta chay pachakaman wichkarka: $2 $3',
+'unblocklogentry' => '$1 rurakpa wichkayta kishpichirka',
+'block-log-flags-nocreate' => 'Mushuk rurak shutipa kamayta wichkashkami',
+
+# Move page
+'movearticle' => 'Kay pankama mushuk shutita karapana:',
+'newtitle' => 'Kay mushuk shutiman',
+'move-watch' => 'Kay ishkay pankakunata rikukuna',
+'movepagebtn' => 'Kay pankaman mushuk shutita karapana:',
+'pagemovedsub' => 'Shutita ñami shukchishka',
+'movepage-moved' => '\'\'\'"$1" pankaka "$2"shutiman apakushka\'\'\'',
+'articleexists' => 'Shuk pankaka ñami kay shutita charin, icha kay shutiyuk man alli kan.
+Shuk shutita akllapay.',
+'talkexists' => 'Kay pankapa shutita ñami shukchishkami kan, shinapash paypa rimanakuyta shuk rimanakuyka ñami tiyakpika mana apamushkami kan : makillawan kay ishkay rimanakuykunata tantachipay.',
+'movedto' => 'Kayman apakushka :',
+'movetalk' => 'Tinkishka rimanakuyta shinalla apakuna',
+'1movedto2' => '«[[$1]]» «[[$2]]»-man apakushka',
+'1movedto2_redir' => '[[$1]] [[$2]]-man shuk pushayta pichashpami apakushka',
+'movelogpage' => 'Shutikunata shukchiykunapa kamu',
+'movereason' => 'Imashpa:',
+'revertmove' => 'Kutichina',
+
+# Export
+'export' => 'Pankakunata apakuna',
+
+# Namespace 8 related
+'allmessagesname' => 'Shuti',
+'allmessagesdefault' => 'Ñawpak killka',
+
+# Thumbnails
+'thumbnail-more' => 'hatunchina',
+'thumbnail_error' => 'Uchilla rikchata kamanata kaymanta mana usharkanchikchu: $1',
+
+# Tooltip help for the actions
+'tooltip-pt-userpage' => 'Kanpak rurak panka',
+'tooltip-pt-mytalk' => 'Kanpak rimanakuy',
+'tooltip-pt-preferences' => 'munaykuna',
+'tooltip-pt-watchlist' => 'Chay pankakunapa mushuk killkaykunata rikukupanki',
+'tooltip-pt-mycontris' => 'Tukuy kanpak killkaykuna',
+'tooltip-pt-login' => 'Ashtawan alli llankankapa, shuk rurak shutita akllanata ushankimi',
+'tooltip-pt-logout' => 'Llukshina',
+'tooltip-ca-talk' => 'Kay pankamanta rimanakuna',
+'tooltip-ca-edit' => 'Kay pankapi killkanata ushapanki. "Ñawpak rikuy" clic rurapay, chay kipa kikinpa killkaykunata churapay',
+'tooltip-ca-addsection' => 'Shuk mushuk rakita kamana',
+'tooltip-ca-viewsource' => 'Chay pankaka wichkashkami kan, rikunallata, mana killkanata ushapanki',
+'tooltip-ca-history' => 'Kay pankapak ñawpak killkanakuna, killkakkunapash',
+'tooltip-ca-protect' => 'Kay pankata wichkana',
+'tooltip-ca-delete' => 'Kay pankata pichana',
+'tooltip-ca-move' => 'Kay pankaman shuk mushuk shutita karana',
+'tooltip-ca-watch' => 'Kay pankata rikukuna',
+'tooltip-ca-unwatch' => 'Kay pankata ñamana rikukuna',
+'tooltip-search' => 'Kay wikipi maskana',
+'tooltip-search-go' => 'Shuk shinami shutiyuk panka tiyakpika, chayman rina',
+'tooltip-search-fulltext' => 'Kay rimaylunata pankakunapi maskana',
+'tooltip-p-logo' => 'Kapak pankaman rina',
+'tooltip-n-mainpage' => 'Kapak pankaman rina',
+'tooltip-n-mainpage-description' => 'Kapak pankaman rina',
+'tooltip-n-portal' => 'Proyectomanta, imata ruranata ushanki, maypi willaykunata tiyanchu',
+'tooltip-n-currentevents' => 'Kunan pachapi willaykuna',
+'tooltip-n-recentchanges' => 'Kay wikipi kunan llankaykuna',
+'tooltip-n-randompage' => 'Chunkashka pankaman rina',
+'tooltip-n-help' => 'Yachakunkapa uku',
+'tooltip-t-whatlinkshere' => 'Kay pankaman tutuy tinkiyuk pankakuna',
+'tooltip-t-recentchangeslinked' => 'kay pankaman tinkiyuk pankakunapi mushuk killkaykuna',
+'tooltip-feed-rss' => 'Kay pankapa RSS mikuchiy',
+'tooltip-feed-atom' => 'Sindicación Atom de esta página',
+'tooltip-t-contributions' => 'Kay rurakpa killkaykunata rikuna',
+'tooltip-t-emailuser' => 'Kay rurakman e-chaskita kachana',
+'tooltip-t-upload' => 'Rikchakunata, multimidiya archivukunata apakuna',
+'tooltip-t-specialpages' => 'Tukuy sapak pankakuna',
+'tooltip-t-print' => 'Kay pankata impresoraman tikrachinkapa',
+'tooltip-t-permalink' => 'Enlace permanente a esta versión de la página',
+'tooltip-ca-nstab-main' => 'Pankata rikuna',
+'tooltip-ca-nstab-user' => 'Chay rurakpa pankata rikuna',
+'tooltip-ca-nstab-special' => 'Kayka shuk sapak pankami kan, kaypi killkanata mana ushanki',
+'tooltip-ca-nstab-project' => 'Ruraykamay pankata rikuna',
+'tooltip-ca-nstab-image' => 'Kay rikchapak pankaman rina',
+'tooltip-ca-nstab-template' => 'Plantillata rikuna',
+'tooltip-ca-nstab-category' => 'Samiyachiymanta pankata rikuna',
+'tooltip-minoredit' => 'Kay killkayta uchillami nina',
+'tooltip-save' => 'Mushuk killkaykunata churana',
+'tooltip-preview' => 'Kikinpa mushuk killkaykuna : paykunata churankapak ñawpak rikupay ari !',
+'tooltip-diff' => 'Kay pankapi kikinpak mushuk killkaykunata rikuchina',
+'tooltip-compareselectedversions' => 'Kay ishkay akllashka pankunapura tukuy mana shinami imakunata rikuchiy',
+'tooltip-watch' => 'Kay pankata rikukuna',
+'tooltip-rollback' => '"Kutichina" nikpika, shuk rurakpa tukuy ashtawan kipa killkaykunata kutichipanki',
+'tooltip-undo' => '"Kutichina" nikpika, kay hapishka killkayta kutichipanki, shinalla killkana pankapa "ñawpak rikuchiy" rikupanki : chaymanta, imashpa kay killkayta kutichipankichu rimanata ushapanki',
+'tooltip-summary' => 'Uchilla willayta killkana',
+
+# Patrol log
+'patrol-log-line' => '$1 $2 pankamanta alli kachirka $3',
+'patrol-log-diff' => '$1 mushuk killkata',
+
+# Browsing diffs
+'previousdiff' => 'Yallik ñawpakmi killkay',
+'nextdiff' => 'Yalli mushukmi killkay',
+
+# Media information
+'file-info-size' => '$1 × $2 tawakukuna (pixelkuna); $3 llashakmi kan; MIME sami: $4',
+'file-nohires' => '<small>Kay rikchapa shuk yallik hatun rikuchiyka mana tiyanchu.</small>',
+'svg-long-desc' => 'SVG archiwuka, $1 × $2 tawakukunayuk rimashka, $3 llashakmi.',
+'show-big-image' => 'Yallik hatun rikuchipay',
+
+# Bad image list
+'bad_image_list' => 'Kay shina killkanami kapanki:
+Tukuy aspikunaka kuyllurwan (*) kallarinami kan
+Shuk aspipi, shukniki tinkika ima tinkita wichkashkami kanka nin, kay aspipi shuk tinkikunapi ima pankakunapi wichkashka tinkita charinata ushanmi nin.',
+
+# Metadata
+'metadata' => 'Metadata',
+'metadata-help' => 'Chay rikchaka yapa willaykunata charin, icha camara antamanta shinalla shuk suyuchik antamanta. Rikchata shukchishkami kakpika, icha kay willaykunaka mana alli kan.',
+'metadata-expand' => 'Uchilla willaykunata rikuchiy',
+'metadata-collapse' => 'Uchilla willaykunata pakay',
+'metadata-fields' => 'Kaypi killkashka rikchamanta willaykunaka wiñay paypa rikchawan rikuchishkami kanka. Shuk willaykunata pakashkami kanka. Shinapash shuk rurakka munakpika paykunaya rikunata ushanka.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
+# External editor support
+'edit-externally' => 'Kay archiwuta shuk hawa antanawan llankana',
+'edit-externally-help' => 'Ashtawan yachakunkakak [//www.mediawiki.org/wiki/Manual:External_editors kay yanapata] (inlish shimipi) killkakatipay',
+
+# 'all' in various places, this might be different for inflected languages
+'watchlistall2' => 'tukuy',
+'namespacesall' => 'tukuy',
+'monthsall' => 'tukuy',
+
+# Watchlist editing tools
+'watchlisttools-view' => 'Mushuk killkaykunata rikuna',
+'watchlisttools-edit' => 'Rikukushka pankakunata rikuna, shukchinapash',
+'watchlisttools-raw' => 'Mana yanapawan rikukushka pankakunata akllapay',
+
+# Core parser functions
+'duplicate-defaultsort' => "'''Rikupay''': Kikinmanta ordenankapak llawita «$2» ñawpak pachamanta «$1» llawita pichankami.",
+
+# Special:SpecialPages
+'specialpages' => 'Sapak pankakuna',
+
+# External image whitelist
+'external_image_whitelist' => " #Kay aspita kay shinallami sakipay<pre>
+#Uraypi ''regex'' samikunata churapay (// chawpipilla)
+#Kay samikunaka hawa rikchakunapa URLwan taripachishkami kanka.
+#Alli taripashkakunaka rikcha shinami rikushishkami kanka, shukkunaka tinki shinallami riksichinka,
+#«#» llikawan kallarik aspikunaka willaykunallami kanka
+#Uchilla, hatun llikakunatapash churanata ushapanki, kaypi shinallami kan
+
+#Tukuy regex samikunata kay aspi hawapi churapay. Kay aspita kay shinallami sakipay</pre>",
+
+# Special:Tags
+'tag-filter' => '[[Special:Tags|Wipalakunapa]] susuna:',
+
+);
diff --git a/languages/messages/MessagesRgn.php b/languages/messages/MessagesRgn.php
index eef081ec..d33979b3 100644
--- a/languages/messages/MessagesRgn.php
+++ b/languages/messages/MessagesRgn.php
@@ -142,8 +142,6 @@ $messages = array(
'index-category' => 'Pàgina indicizëda',
'noindex-category' => ' Pàgina non indicizëda',
-'mainpagetext' => "'''L'instalaziòn d'MediaWiki l'è andêda ben'''",
-
'about' => "A prupòsit d'",
'article' => 'Artècual',
'newwindow' => "(la s'avèra int'una fnèstra nova)",
@@ -283,8 +281,6 @@ Par piasé, fa raport a un [[Special:ListUsers/sysop|aministrador]] cun la nota
'extlink_tip' => 'Culegamént esteran (arcordat d\'scrivar dadnénz "http://")',
'headline_sample' => 'Intestaziòn',
'headline_tip' => "Intestaziòn d'e' sgond livèl",
-'math_sample' => 'Mèt aquè dentar una formula',
-'math_tip' => 'Formula metemètica (LaTeX)',
'nowiki_sample' => 'Mèt dentar i tu scrètt sìnza furmataziòn',
'nowiki_tip' => 'Làsa perdar la furmataziòn wiki',
'image_tip' => "Figura ch'la sta insèn a e' scrètt",
@@ -492,10 +488,8 @@ $1 {{PLURAL:$1|elemént|elemént}}',
# Watchlist
'watchlist' => "Pàgin ch'a ten d'öcc",
'mywatchlist' => "Pàgin ch'a ten d'öcc",
-'addedwatch' => "Mett insem a la lèsta d'pàgin sot öcc",
'addedwatchtext' => "La pàgina \"[[:\$1]]\" adès l'è int la lèsta dal [[Special:Watchlist|pàgin da tnì d'öcc]]. D'ôra inenz t'pù avdé tòt al mudèfic a sta pàgina e a la pàgina d'cunversaziòn int la [[Special:RecentChanges|lèsta d'j cambiamént rezent]], in '''gros''', acsè j 's'pò guardè mej.
Se in un sgond temp t'vu cavé la pàgina dala lèsta da tnì d'öcc, s-cjaza un'ètra volta sora e' butòn \"ten d'öcc\".",
-'removedwatch' => 'Cavé dala lèsta dal pàgin da tnì sot öcc',
'removedwatchtext' => 'La pàgina "[[:$1]]" l\'è stëda scanzlèda dala lèsta dal [[Special:Watchlist|pàgin da tnì sot öcc]].',
'watch' => "Tèn d'öcc",
'watchthispage' => "Ten d'öcc sta pagina",
@@ -513,7 +507,7 @@ Se in un sgond temp t'vu cavé la pàgina dala lèsta da tnì d'öcc, s-cjaza un
'confirmdeletetext' => "Oci! T'ste par scanzlè una pàgina cun tòta la storia d'j su cambiamént.
Par piasé, cunferma ch't'ê propri l'intenziòn d'fël, ch'at capèss al su conseguenzi e quel ch't fë adès l'è in regola cun al [[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Lavor fät e finì',
-'deletedtext' => 'La pàgina "<nowiki>$1</nowiki>" l\'è stëda scanzlèda.
+'deletedtext' => 'La pàgina "$1" l\'è stëda scanzlèda.
Guèrda $2 par avdé la lèsta daglj ultum scanzeladür.',
'deletedarticle' => 'l\'à scanzlé "[[$1]]"',
'dellogpage' => 'Regèstar dal scanzladùr',
@@ -532,7 +526,7 @@ Guèrda $2 par avdé la lèsta daglj ultum scanzeladür.',
'protectexpiry' => 'Scadenza:',
'protect_expiry_invalid' => "La scadenza la n'è piò bona.",
'protect_expiry_old' => "T'cì ariv tèrd! La dèda d'scadenza l'è zà pasëda.",
-'protect-text' => "Cun ste mudèl u s'pò guardè e u s'pò cambié ê livèl d'pruteziòn dla pàgina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Cun ste mudèl u s'pò guardè e u s'pò cambié ê livèl d'pruteziòn dla pàgina '''$1'''.",
'protect-locked-access' => "Oci! Ta n'ê miga i parmess par cambié i livel d'pruteziòn dla pàgina.
S't'vù vdë in dô ch'j è i parmess, guèrda '''$1''':",
'protect-cascadeon' => "Sta pàgina pr'adès l'è bluchëda parchè l'è stra l'{{PLURAL:$1|la pàgina aquè sota, ch'l'à|al pàgin aquè sota, ch'j'à}} la pruteziòn ricursiva.
@@ -702,11 +696,10 @@ Par piasé, met insem al du pàgin te, fasend copia e incola.",
'nextdiff' => 'Mudèfica piò nova →',
# Media information
-'file-info-size' => "$1 × $2 pixel, amsùra d'e' file: $3, tipo MIME: $4",
-'file-nohires' => "<small>U n' è pusèbil d'avdé cun òna risoluziòn piò élta. </small>",
-'svg-long-desc' => "file d'taja SVG, dimensiòn numinèli $1 × $2 pixel, dimensiòn d'e' file: $3",
-'show-big-image' => 'Versiòn ad amsura pina',
-'show-big-image-thumb' => "<small>Amsùra d'sta versiòn: $1 × $2 pixel</small>",
+'file-info-size' => "$1 × $2 pixel, amsùra d'e' file: $3, tipo MIME: $4",
+'file-nohires' => "<small>U n' è pusèbil d'avdé cun òna risoluziòn piò élta. </small>",
+'svg-long-desc' => "file d'taja SVG, dimensiòn numinèli $1 × $2 pixel, dimensiòn d'e' file: $3",
+'show-big-image' => 'Versiòn ad amsura pina',
# Bad image list
'bad_image_list' => "E' quèdar l'è quest'aquè:
@@ -728,11 +721,17 @@ Se parò un qvelcadon à lavurè sora sta figura, zerti infurmaziòn j n' curesp
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# External editor support
'edit-externally' => 'Mudèfica ste file cun un prugrama esteran',
-'edit-externally-help' => "(Guèrda e' [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] par avé d'j ètri infurmaziòn) (l'è in inglés)",
+'edit-externally-help' => "(Guèrda e' [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] par avé d'j ètri infurmaziòn) (l'è in inglés)",
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'tòt',
diff --git a/languages/messages/MessagesRif.php b/languages/messages/MessagesRif.php
index 77370423..9122044d 100644
--- a/languages/messages/MessagesRif.php
+++ b/languages/messages/MessagesRif.php
@@ -180,7 +180,7 @@ teqqad ad yilli days ca n usekkil war itwagg deg isem .',
'loginsuccess' => "'''Qac tudeffed di {{SITENAME}} s \"\$1\".'''",
'nosuchuser' => 'War illi ca n useqdac s isem a"$1".
xemm tirra , niÉ£ egg amiá¸an d amaynu.',
-'nosuchusershort' => 'War illi ca n useqdac s isem a "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'War illi ca n useqdac s isem a "$1".
xemm tirra.',
'nouserspecified' => 'ixessa ad tuced isem n useqdac.',
'wrongpassword' => 'Taguri n wadaf war tceni ca. Sideff tenni nican.',
@@ -201,7 +201,7 @@ adeff-d xmi ɣa teṭfed.',
'eauthentsent' => 'ijj n e-mail itwasekked ɣar e-mail nni.
zzat ma ca n e-mail nniá¸en ma ad itwasekk É£ar umiá¸an , ixessa ad tegged manayenni di e-mail, bac ad nessen ila qa amiá¸an a inec.',
-# Password reset dialog
+# Change password dialog
'retypenew' => 'Æawd arri Taguri n wadaf tamaynut:',
# Edit page toolbar
@@ -215,8 +215,6 @@ zzat ma ca n e-mail nniá¸en ma ad itwasekk É£ar umiá¸an , ixessa ad tegged man
'extlink_tip' => 'Tazdayt n baṛṛa (qa tettud http:// prefix)',
'headline_sample' => 'Aá¸ris n ixf-isem',
'headline_tip' => 'Aswir 2 n ixf-isem',
-'math_sample' => 'Egg ijj n formula da',
-'math_tip' => 'Mathematical formula (LaTeX)',
'nowiki_sample' => 'Sideff da tirra bla taseddast(formatting) n wiki',
'nowiki_tip' => 'Ur tawi x taseddast(formatting) n wiki',
'image_tip' => 'Afaylu war-itmesebá¸i',
@@ -505,9 +503,7 @@ Tasniwin di [[Special:Watchlist|your watchlist]] d '''tizurarin'''.",
# Watchlist
'watchlist' => 'Tabdart uḥṭṭu inu',
'mywatchlist' => 'Tabdart uḥṭṭu inu',
-'addedwatch' => 'Temmarni ɣar Tabdart uḥṭṭu',
'addedwatchtext' => 'Tasna "[[:$1]]" Temmarni ɣar [[Special:Watchlist|Tabdart uḥṭṭu]].',
-'removedwatch' => 'twakkes zi Tabdart uḥṭṭu',
'removedwatchtext' => 'Tasna "[[:$1]]" twakkes zi [[Special:Watchlist|Tabdart uḥṭṭu inec]].',
'watch' => 'Ḥá¸a',
'watchthispage' => 'Ḥá¸a tasna ya',
@@ -526,7 +522,7 @@ Tasniwin di [[Special:Watchlist|your watchlist]] d '''tizurarin'''.",
'confirmdeletetext' => 'Ur d ac iqqim walu a tsfá¸ed ict tasna ak marra amzruy nns.
Ma nican txsd a tggd manaya? Ma tssnd min ttggd? Ma ttggd manaya amc teqqaá¹› [[{{MediaWiki:Policy-url}}|tasrtit n Wiki]] ?',
'actioncomplete' => 'Tiggawt tsala',
-'deletedtext' => '"<nowiki>$1</nowiki>" Twakkes.
+'deletedtext' => '"$1" Twakkes.
Xemm $2 i tikkas timaynutin.',
'deletedarticle' => 'twakkes "[[$1]]"',
'dellogpage' => 'AÉ£mis n uá¹£faá¸',
@@ -544,7 +540,7 @@ Xemm $2 i tikkas timaynutin.',
'protectexpiry' => 'Itsala:',
'protect_expiry_invalid' => 'Akud n usali ur illi nican.',
'protect_expiry_old' => 'Akud usali izri, idwl d amzruy.',
-'protect-text' => "tzemred ad teẓṛed u atbedeld aswir n uḥeṭṭu n Tasna ya da '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "tzemred ad teẓṛed u atbedeld aswir n uḥeṭṭu n Tasna ya da '''$1'''.",
'protect-locked-access' => "Amiá¸an inecc war É£ars turagt bac ad ibeddel aswir n uḥeá¹­á¹­u n Tasna .
Aqa (settings) n Tasna '''$1''':",
'protect-cascadeon' => 'Tasna ya tẓarq ruxa mayenzi tudef di {{PLURAL:$1|Tasna, iɣa illa|Tasniwin, iɣa illa}} aḥeṭṭu n usmuzzar(cascading protection).
@@ -718,11 +714,10 @@ Bbeẓ x ufeskar n uzar-timeẓṛi zzat i gha txemmled min turid',
'nextdiff' => 'Amá¹£ebá¸i zzat →',
# Media information
-'file-info-size' => '$1 × $2 pixel, tiddisize n ufaylu: $3, anawtype n MIME: $4',
-'file-nohires' => '<small>walu ca n resolution yemɣa x wa.</small>',
-'svg-long-desc' => 'Afaylu n SVG, dis $1 × $2 pixel, Tiddi n ufaylu: $3',
-'show-big-image' => 'Resolution ameqran',
-'show-big-image-thumb' => '<small>Tiddi n uzar-ascan: $1 × $2 pixel </small>',
+'file-info-size' => '$1 × $2 pixel, tiddisize n ufaylu: $3, anawtype n MIME: $4',
+'file-nohires' => '<small>walu ca n resolution yemɣa x wa.</small>',
+'svg-long-desc' => 'Afaylu n SVG, dis $1 × $2 pixel, Tiddi n ufaylu: $3',
+'show-big-image' => 'Resolution ameqran',
# Special:NewFiles
'newimages' => 'Amewlaf n ifayluten imaynuten',
@@ -749,18 +744,22 @@ Inná¸ni ad twaffrn dg umzwar.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Ẓṛeg afaylu a s usnas zi baṛṛa',
-'edit-externally-help' => 'Xemm [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] i ktar n tilɣa(informations).',
+'edit-externally-help' => 'Xemm [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] i ktar n tilɣa(informations).',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'maṛṛa',
-'imagelistall' => 'maṛṛa',
-'watchlistall2' => 'marra',
-'namespacesall' => 'marra',
-'monthsall' => 'marra',
+'watchlistall2' => 'marra',
+'namespacesall' => 'marra',
+'monthsall' => 'marra',
# Multipage image navigation
'imgmultigo' => 'Raḥ ɣa!',
diff --git a/languages/messages/MessagesRm.php b/languages/messages/MessagesRm.php
index c934271f..b4ffcba0 100644
--- a/languages/messages/MessagesRm.php
+++ b/languages/messages/MessagesRm.php
@@ -65,8 +65,8 @@ $messages = array(
'tog-shownumberswatching' => "Mussar il dumber d'utilisaders che obervan questa pagina",
'tog-oldsig' => 'Prevista da la signatura actuala:',
'tog-fancysig' => "Suttascripziun senza link automatic tar la pagina da l'utilisader.",
-'tog-externaleditor' => 'Utilisar sco standard in editur extern (be per experts, basegna ina configuraziun speziala da des computer. [http://www.mediawiki.org/wiki/Manual:External_editors Dapli infurmaziuns.])',
-'tog-externaldiff' => 'Utilisar sco standard in program extern per visualisar differenzas tranter versiuns (be per experts, basegna ina configuraziun speziala da des computer. [http://www.mediawiki.org/wiki/Manual:External_editors Dapli infurmaziuns.])',
+'tog-externaleditor' => 'Utilisar sco standard in editur extern (be per experts, basegna ina configuraziun speziala da des computer. [//www.mediawiki.org/wiki/Manual:External_editors Dapli infurmaziuns.])',
+'tog-externaldiff' => 'Utilisar sco standard in program extern per visualisar differenzas tranter versiuns (be per experts, basegna ina configuraziun speziala da des computer. [//www.mediawiki.org/wiki/Manual:External_editors Dapli infurmaziuns.])',
'tog-showjumplinks' => 'Activar las colliaziuns "seglir a"',
'tog-uselivepreview' => 'Utilisar la prevista dinamica (basegna JavaScript) (experiment!)',
'tog-forceeditsummary' => 'Avertir durant memoriar sche la resumaziun manca',
@@ -161,14 +161,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cuntinuaziun',
'index-category' => 'Paginas inditgadas',
'noindex-category' => 'Paginas betg inditgadas',
-
-'mainpagetext' => "'''MediaWiki è vegnì installà cun success.'''",
-'mainpagedocfooter' => "Consultai il [http://meta.wikimedia.org/wiki/Help:Contents manual per utilisaders] per infurmaziuns davart l'utilisaziun da questa software da wiki.
-
-== Cumenzar ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Glista da las opziuns per la configuraziun]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Glista da mail da MediaWiki cun annunzias da novas versiuns]",
+'broken-file-category' => 'Paginas cun colliaziuns da datoteca che na funcziunan betg',
'about' => 'Surda',
'article' => 'artitgel',
@@ -220,10 +213,10 @@ $messages = array(
'history' => 'versiuns',
'history_short' => 'versiuns/auturs',
'updatedmarker' => "actualisà dapi mi'ultima visita",
-'info_short' => 'Infurmaziun',
'printableversion' => 'Versiun per stampar',
'permalink' => 'Colliaziun permanenta',
'print' => 'stampar',
+'view' => 'Leger',
'edit' => 'Modifitgar',
'create' => 'Crear',
'editthispage' => 'Modifitgar questa pagina',
@@ -231,6 +224,7 @@ $messages = array(
'delete' => 'Stizzar',
'deletethispage' => 'Stizzar questa pagina',
'undelete_short' => 'Revocar {{PLURAL:$1|ina modificaziun|$1 modificaziuns}}',
+'viewdeleted_short' => 'Guardar {{PLURAL:$1|ina modificaziun stizzada|$1 modificaziuns stizzadas}}',
'protect' => 'proteger',
'protect_change' => 'midar',
'protectthispage' => 'Proteger questa pagina',
@@ -314,6 +308,8 @@ $1',
'toc' => 'Cuntegn',
'showtoc' => 'mussar',
'hidetoc' => 'zuppentar',
+'collapsible-collapse' => 'Cumprimer',
+'collapsible-expand' => 'Extender',
'thisisdeleted' => 'Guardar u restaurar $1?',
'viewdeleted' => 'Mussa $1?',
'restorelink' => '{{PLURAL:$1|ina modificaziun stizzada|$1 modificaziuns stizzadas}}',
@@ -327,6 +323,8 @@ $1',
'feed-atom' => 'Atom',
'feed-rss' => 'RSS',
'red-link-title' => "$1 (n'exista betg)",
+'sort-descending' => 'Zavrar descendent',
+'sort-ascending' => 'Zavrar ascendent',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Artitgel',
@@ -412,12 +410,13 @@ Emprova danovamain en in per minutas.',
'protectedpagetext' => "Questa pagina è vegnida bloccada per evitar ch'ella vegn modifitgada.",
'viewsourcetext' => 'Ti pos guardar e copiar il code-fundamental da questa pagina:',
'protectedinterface' => "Questa pagina cuntegna text per l'interfatscha da la software ed è protegida per evitar abus.",
-'editinginterface' => "'''Attenziun:''' Questa pagina cuntegna text che vegn duvra da la software MediaWiki. Midadas influenzeschan directamain l'interfatscha da l'utilisader. Sche ti vuls far translaziuns u correcturas: Studegia da far quai sin [http://translatewiki.net/wiki/Main_Page?setlang=rm translatewiki.net], per che las midadas pon vegnidas surprendidas da tut ils projects.",
+'editinginterface' => "'''Attenziun:''' Questa pagina cuntegna text che vegn duvra da la software MediaWiki. Midadas influenzeschan directamain l'interfatscha da l'utilisader. Sche ti vuls far translaziuns u correcturas: Studegia da far quai sin [//translatewiki.net/wiki/Main_Page?setlang=rm translatewiki.net], per che las midadas pon vegnidas surprendidas da tut ils projects.",
'sqlhidden' => '(Zuppentà la dumonda da SQL)',
'cascadeprotected' => "Questa pagina è protegida da modificaziuns perquai ch'ella è integrada en suandanta{{PLURAL:$1| pagina, ch'è protegida|s paginas, ch'èn protegidas}} entras l'opziun «protecziun ertada»:
$2",
'namespaceprotected' => "Ti n'has betg la lubientscha da modifitgar paginas dal tip da pagina '''$1'''.",
-'customcssjsprotected' => "Ti n'has betg la lubientscha da midar questa pagina perquai ch'ella cuntegna preferenzas persunalas d'in auter utilisader.",
+'customcssprotected' => "Ti n'has betg la permissiun da modifitgar questa pagina da CSS, perquai ch'ella cuntegna configuraziuns persunalas d'in auter utilisader.",
+'customjsprotected' => "Ti n'has betg la permissiun da modifitgar questa pagina da JavaScript, perquai ch'ella cuntegna configuraziuns persunalas d'in auter utilisader.",
'ns-specialprotected' => 'Paginas spezialas no pon betg vegnir modifitgadas.',
'titleprotected' => 'Quest titel è vegnì protegì da la creaziun da [[User:$1|$1]].
Il motiv inditgà è "\'\'$2\'\'".',
@@ -454,6 +453,7 @@ Betg emblida da midar tias [[Special:Preferences|preferenzas da {{SITENAME}}]].'
'createaccount' => "Crear in conto d'utilisader",
'gotaccount' => "Gia in conto d'utilisader? '''$1'''.",
'gotaccountlink' => "T'annunziar",
+'userlogin-resetlink' => "Emblidà tias datas per s'annunziar?",
'createaccountmail' => 'per e-mail',
'createaccountreason' => 'Motiv:',
'badretype' => 'Ils dus pleds-clav na corrispundan betg.',
@@ -468,13 +468,15 @@ Als activescha per plaschair e lura t'annunzia cun tes nov num d'utilisader e pl
'nocookieslogin' => "{{SITENAME}} utilisescha cookies per ch'utilisaders pon s'annunziar.
Ti has deactivà tes cookies.
Activescha per plaschair ils cookis en tes navigatur ed emprova danovamain.",
+'nocookiesfornew' => "Quest conto d'utilisader n'ha betg pudì vegnir creà perquai che nus na pudevan betg confermar sia funtauna.
+Controllescha che ti has activà ils cookies, rechargia la pagina ed emprova danovamain.",
'noname' => "Ti n'has betg inditgà in num d'utilisader valid.",
'loginsuccesstitle' => "T'annunzià cun success",
'loginsuccess' => "'''Ti es t'annunzia tar {{SITENAME}} sco \"\$1\".'''",
'nosuchuser' => 'I exista nagin utilisader cun il num "$1".
Fa stim dad utilisar correctamain maiusclas e minusclas.
Curregia il num u [[Special:UserLogin/signup|creescha in nov conto]].',
-'nosuchusershort' => 'I dat nagin utilisader cun il num "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'I dat nagin utilisader cun il num "$1".
Curregia ti\'endataziun.',
'nouserspecified' => "Inditgescha per plaschair in num d'utilisader.",
'login-userblocked' => "Quest utilisader è bloccà. Betg pussaivel da t'annunziar.",
@@ -516,13 +518,14 @@ Sche ti na levas betg crear quest conto d'utilisader pos ti ignorar quest e-mail
'usernamehasherror' => "Il num d'utilisader na po betg cuntegnair il segn da rauta (#)",
'login-throttled' => "Ti has empruvà memia savens da t'annunziar.
Spetga per plaschair avant ch'empruvar anc ina giada.",
+'login-abort-generic' => 'Annunzia senza success - Annullà',
'loginlanguagelabel' => 'Lingua: $1',
'suspicious-userlogout' => "Tia dumonda per partir è vegnida refusada perquai ch'i para ch'ella è vegnida tramessa d'in navigatur che funcziuna betg correctamain u d'in proxy da cache.",
# E-mail sending
'php-mail-error-unknown' => 'Errur nunenconuschenta en la funcziun mail() da PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Midar il pled-clav',
'resetpass_announce' => "Ti ès t'annunzià cun in pled-clav temporar che ti has retschavì per e-mail.
Per finir da t'annunziar stos ti definir qua in nov pled-clav:",
@@ -541,6 +544,33 @@ Ti vegns annunzià…',
Eventualmain has ti gia midà cun success tes pled-clav u dumandà per in nov pled-clav temporar.',
'resetpass-temp-password' => 'Pled-clav temporar:',
+# Special:PasswordReset
+'passwordreset' => 'Redefinir il pled-clav',
+'passwordreset-text' => "Emplenescha quest formular per retschaiver in e-mail che cuntegna ils detagls per acceder tes conto d'utilisader.",
+'passwordreset-legend' => 'Redefinir il pled-clav',
+'passwordreset-disabled' => 'La pussaivladad da redefinir il pled-clav è vegnida deactivada sin questa wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Endatescha in dals tocs da data sutvart}}',
+'passwordreset-username' => "Num d'utilisader:",
+'passwordreset-email' => 'Adressa dad e-mail:',
+'passwordreset-emailtitle' => 'Detagls davart il conto sn {{SITENAME}}',
+'passwordreset-emailtext-ip' => "Insatgi (probablamain ti da l'adressa dad IP $1) ha dumandà in nov pled-clav per la pagina {{SITENAME}} ($4).
+{{PLURAL:$3|Il suandant conto d'utilisader è collià|Ils suandants contos d'utilisader èn colliads}} cun questa adressa dad e-mail:
+
+$2
+
+{{PLURAL:$3|Quest pled-clav temporar|Quests pleds-clav temporars}} èn valids {{PLURAL:$5|in di|$5 dis}}.
+Ti duessas t'annunziar e tscherner ussa in nov pled-clav. Sch'enzatgi auter ha empustà quests novs pleds-clav u sche ti ta regordas puspè da tes pled-clav original e na vuls betg pli midar il pled-clav pos ti ignorar quest messadi e cuntinuar dad utilisar tes pled-clav original.",
+'passwordreset-emailtext-user' => "L'utilisader $1 sin {{SITENAME}} ha dumandà in nov pled-clav per tes conto d'utilisader sin la pagina {{SITENAME}} ($4).
+{{PLURAL:$3|Il suandant conto d'utilisader è collià|Ils suandants contos d'utilisader èn colliads}} cun questa adressa dad e-mail:
+
+$2
+
+{{PLURAL:$3|Quest pled-clav temporar|Quests pled-clav temporars}} èn valids {{PLURAL:$5|in di|$5 dis}}.
+Ti duessas t'annunziar e tscherner ussa in nov pled-clav. Sche ti na levas betg quests novs pleds-clav u sche ti ta regordas puspè da tes pled-clav original e na vuls betg pli midar il pled-clav pos ti ignorar quest messadi e cuntinuar dad utilisar tes pled-clav original.",
+'passwordreset-emailelement' => "Num d'utilisader: $1
+Pled-clav temporar: $2",
+'passwordreset-emailsent' => 'In e-mail cun in nov pled-clav è vegnì tramess.',
+
# Edit page toolbar
'bold_sample' => 'Text grass',
'bold_tip' => 'Text grass',
@@ -552,8 +582,6 @@ Eventualmain has ti gia midà cun success tes pled-clav u dumandà per in nov pl
'extlink_tip' => 'Link extern (betg emblidar il prefix http:// )',
'headline_sample' => 'Titel',
'headline_tip' => 'Titel da segund livel',
-'math_sample' => 'Scriva qua tia furmla',
-'math_tip' => 'Furmla matematica (LaTeX)',
'nowiki_sample' => 'Scriva qua text che na duai betg vegnir formatà',
'nowiki_tip' => 'Ignorar las formataziuns vichi',
'image_sample' => 'Exempel.jpg',
@@ -639,7 +667,7 @@ u [{{fullurl:{{FULLPAGENAME}}|action=edit}} crear questa pagina]</span>.',
'noarticletext-nopermission' => 'Questa pagina cuntegna actualmain nagin text.
Ti pos [[Special:Search/{{PAGENAME}}|tschertgar il term]] sin in\'autra pagina,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tschertgar en ils logs]</span>.',
-'userpage-userdoesnotexist' => 'Il conto d\'utilisader "$1" n\'èxista betg.
+'userpage-userdoesnotexist' => 'Il conto d\'utilisader "<nowiki>$1</nowiki>" n\'èxista betg.
Controllescha sch ti vuls propi crear/modiftgar questa pagina.',
'userpage-userdoesnotexist-view' => 'Il conto d\'utilisader "$1" n\'exista betg.',
'blocked-notice-logextract' => "Quai utilisader è bloccà actualmain.
@@ -679,6 +707,7 @@ Sche quai na funcziuna anc adina betg, emprova da [[Special:UserLogout|partir]]
'token_suffix_mismatch' => "'''Tia modificaziun è vegnida refusada perquai che tes navigatur ha manizzà ils segns en il token da modifitgar.'''
La modificaziun è vegnida refusada per evitar ch'il cuntegn da la pagina vegnia destruì.
Quai po capitar sche ti utiliseschas in survetsch da proxy anonim che na funcziuna betg correctamain.",
+'edit_form_incomplete' => "'''Entginas parts dal formular da modifitgar n'èn betg arrivadas cumplattamain al server; controllescha p.pl. che tias midadas èn intactas ed emprova danovamain.'''",
'editing' => 'Modifitgar $1',
'editingsection' => 'Modifitgar $1 (secziun)',
'editingcomment' => 'Modifitgar $1 (nova secziun)',
@@ -992,7 +1021,6 @@ Considerescha che lur index da {{SITENAME}} po cuntegnair datas ch'èn betg pli
'changepassword' => 'Midar pled-clav',
'prefs-skin' => 'Skin',
'skin-preview' => 'Prevista',
-'prefs-math' => 'TeX',
'datedefault' => 'Nagina preferenza',
'prefs-datetime' => 'Data e temp',
'prefs-personal' => "Profil da l'utilisader",
@@ -1016,8 +1044,6 @@ Considerescha che lur index da {{SITENAME}} po cuntegnair datas ch'èn betg pli
'columns' => 'Colonnas:',
'searchresultshead' => 'Tschertga',
'resultsperpage' => 'resultats per pagina:',
-'contextlines' => 'Lingia per resultat:',
-'contextchars' => 'Segns per lingia:',
'stub-threshold-disabled' => 'Deactivà',
'recentchangesdays' => 'Dumber da dis che duain vegnir mussads en las ultimas midadas:',
'recentchangesdays-max' => 'Maximalmain $1 {{PLURAL:$1|di|dis}}',
@@ -1025,7 +1051,7 @@ Considerescha che lur index da {{SITENAME}} po cuntegnair datas ch'èn betg pli
'savedprefs' => 'Tias preferenzas èn vegnidas memorisadas.',
'timezonelegend' => "Zona d'urari:",
'localtime' => 'Temp local:',
-'timezoneuseserverdefault' => 'Utilisar il standard dil server',
+'timezoneuseserverdefault' => 'Utilisar il standard dal wiki ($1)',
'timezoneuseoffset' => 'Auter (inditgar la differenza)',
'timezoneoffset' => 'Differenza¹:',
'servertime' => 'Temp dal server:',
@@ -1074,7 +1100,7 @@ Ella na dastga betg esser pli lunga che $1 {{PLURAL:$1|caracter|caracters}}.',
Questa infurmaziun è publica.',
'email' => 'E-mail',
'prefs-help-realname' => "Opziun: Qua pos inditgar in surnum che vegn inditga empè da tes num d'utilisader en tias suttascripziuns cun '''<nowiki>--~~~~</nowiki>'''.",
-'prefs-help-email' => "L'adressa dad e-mail è opziunala, pussibilitescha dentant da trametter in nov pled-clav en cass da sperdita. Plinavant pussibilitescha ella ad auters utilisaders da contactar tai per e-mail senza che ti stos publitgar tia identitad.",
+'prefs-help-email' => "L'adressa dad e-mail è opziunala, pussibilitescha dentant da trametter in nov pled-clav en cass da sperdita.",
'prefs-help-email-required' => "Inditgar in'adressa dad e-mail è obligatoric.",
'prefs-info' => 'Infurmaziuns da basa',
'prefs-i18n' => 'Internaziunalisaziun',
@@ -1197,15 +1223,15 @@ Questa infurmaziun è publica.',
'right-userrights' => 'Modifitgar ils dretgs dals utilisaders',
'right-userrights-interwiki' => "Modifitgar ils dretgs d'utilisaders sin autras wikis",
'right-siteadmin' => 'Bloccar u debloccar la banca da datas',
-'right-reset-passwords' => "Redefinir pleds-clav d'auters utilisaders",
'right-override-export-depth' => 'Exportar paginas inclusivamain paginas colliadas fin ad ina profunditad da 5',
'right-sendemail' => 'Trametter e-mails ad auters utilisaders',
# 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',
-'rightsnone' => '(nagins)',
+'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',
+'rightsnone' => '(nagins)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'leger questa pagina',
@@ -1327,12 +1353,12 @@ Guarda era la [[Special:NewFiles|galleria da novas datotecas]] per ina survista
'minlength1' => 'Nums da datotecas ston esser almain in bustab lung.',
'illegalfilename' => 'Il num da datoteca "$1" cuntegna almain in segn betg lubì. Endatescha in\'auter num ed emprova danovamain da chargiar si la datoteca.',
'badfilename' => 'Midà num da la datoteca a "$1".',
-'filetype-mime-mismatch' => 'Extensiun dal num da datoteca na correspunda betg al tip MIME.',
+'filetype-mime-mismatch' => 'L\'extensiun dal num da datoteca ".$1" na correspunda betg al tip da MIME scuvrì en la datoteca ($2).',
'filetype-badmime' => 'Datotecas dal tip da MIME "$1" na dastgan betg vegnir chargiads si.',
'filetype-bad-ie-mime' => "Betg pussaivel da chargiar si questa datoteca perquai che l'Internet Explorar la determinass sco «$1», tge ch'è in tip betg lubì e potenzialmain privlus.",
'filetype-unwanted-type' => "'''\".\$1\"''' è in tip da datoteca nungiavischà.
Nus preferin datotecas {{PLURAL:\$3|dal tip|dals tips}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' è in tip da datoteca betg lubì.
+'filetype-banned-type' => "'''\".\$1\"''' {{PLURAL:\$4|n'è betg in tip da datoteca lubì|n'èn betg tips da datoteca lubids}}.
Lubidas èn datotecas {{PLURAL:\$3|dal tip|dals tips}} \$2.",
'filetype-missing' => 'La datoteca n\'ha nagina extensiun (p.ex. ".jpg").',
'empty-file' => 'La datoteca tramessa è vida.',
@@ -1469,7 +1495,6 @@ Sche la pagina vegn filtrada tenor utilisaders vegnan be datotecas nua che l'uti
'imagelinks' => 'Paginas che cuntegnan la datoteca',
'linkstoimage' => '{{PLURAL:$1|La suandanta pagina è colliada|Las suandantas $1 paginas èn colliadas}} cun questa datoteca:',
'nolinkstoimage' => 'Naginas paginas mussan sin questa datoteca.',
-'redirectstofile' => '{{PLURAL:$1|Suandanta datoteca renviescha|Suandantas $1 datotecas renvieschan}} a questa datoteca:',
'sharedupload' => 'Quai è ina datoteca da $1 e vegn eventualmain utilisada dad auters projects.',
'filepage-nofile' => "I n'exista nagina datoteca cun quest num.",
'filepage-nofile-link' => "I n'exista nagina datoteca cun quest num, ti la pos dentant [$1 chargiar si].",
@@ -1732,6 +1757,10 @@ L'adressa dad e-mail che ti has endatà en [[Special:Preferences|tias preferenza
'noemailtext' => "Quest utilisader n'ha betg inditgà ina adressa dad e-mail valida.",
'nowikiemailtitle' => 'Betg lubì da termetter e-mail',
'nowikiemailtext' => "Quest utilisader ha tschernì ch'el na vul betg reschaiver e-mails dad auters utilisaders.",
+'emailnotarget' => "Num d'utilisader nunexistent u nunvalid sco desinatur.",
+'emailtarget' => "Endatescha il num d'utilisader dal destinatur",
+'emailusername' => "Num d'utilisader:",
+'emailusernamesubmit' => 'Trametter',
'email-legend' => 'Trametter in e-mail ad in auter utilisader da {{SITENAME}}',
'emailfrom' => 'Da:',
'emailto' => 'A:',
@@ -1756,10 +1785,10 @@ L'adressa dad e-mail che ti has endatà en [[Special:Preferences|tias preferenza
'watchlistanontext' => "Ti stos $1 per vesair u modifitgar elements sin tia glista d'observaziun",
'watchnologin' => "Ti n'es betg t'annunzià!",
'watchnologintext' => "Ti stos [[Special:UserLogin|t'annunziar]] per midar tia glista d'observaziun.",
-'addedwatch' => 'Agiuntà a la glista dad observaziun',
+'addwatch' => "Agiuntar a la glista d'observaziun",
'addedwatchtext' => "L'artitgel \"[[:\$1]]\" è vegnì agiuntà a vossa [[Special:Watchlist|glista dad observaziun]].
Midadas futuras vid quai artitgel e la pagina da discussiun appertegnenta vegnan enumeradas là e l'artitgel vegn marcà '''grass''' en la [[Special:RecentChanges|glista da las ultimas midadas]].",
-'removedwatch' => "Allontanà da la glista d'observaziun",
+'removewatch' => "Allontanar da la glista d'observaziun",
'removedwatchtext' => 'La pagina "[[:$1]]" è vegnida stizzada da [[Special:Watchlist|tia glista d\'observaziun]].',
'watch' => 'Observar',
'watchthispage' => 'Observar questa pagina!',
@@ -1780,8 +1809,9 @@ Midadas futuras vid quai artitgel e la pagina da discussiun appertegnenta vegnan
'watchlist-options' => "Opziuns per la glista d'observaziun",
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'observ...',
-'unwatching' => 'observ betg pli...',
+'watching' => 'observ...',
+'unwatching' => 'observ betg pli...',
+'watcherrortext' => 'Ina errur è capitada durant midar tia configuraziun da tia glista d\'observaziun per "$1".',
'enotif_mailer' => "Servetsch d'infurmaziun per e-mail da {{SITENAME}}",
'enotif_reset' => 'Marcar tut las paginas sco visitadas.',
@@ -1793,6 +1823,36 @@ Midadas futuras vid quai artitgel e la pagina da discussiun appertegnenta vegnan
'enotif_lastvisited' => 'Visita $1 per vesair tut las midadas dapi tia ultima visita.',
'enotif_lastdiff' => 'Guarda $1 per vesair questa midada.',
'enotif_anon_editor' => 'utilisader anonim $1',
+'enotif_body' => 'Olla $WATCHINGUSERNAME,
+
+La pagina $PAGETITLE sin {{SITENAME}} è vegnida $CHANGEDORCREATED ils $PAGEEDITDATE da $PAGEEDITOR, guarda $PAGETITLE_URL per la versiun actuala.
+
+$NEWPAGE
+
+Resumaziun dal contribuent: $PAGESUMMARY $PAGEMINOREDIT
+
+Contactar il contribuent:
+mail: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
+
+Ti na retschaivas betg ulteriurs avis en cass dad ulteriuras midadas sche ti na visitas betg questa pagina.
+Ti has era la pussaivladad da redefinir tut ils flags d\'avis per tut las paginas sin tia glista d\'observaziun.
+
+Cun amiaivels salids,
+il sistem d\'avis da {{SITENAME}}
+
+--
+Per midar tia configuraziun per avis per e-mails, visita
+{{fullurl:{{#special:Preferences}}}}
+
+Per midar tia configuraziun da la glista d\'observaziun, visita
+{{fullurl:{{#special:EditWatchlist}}}}
+
+Per stizzar questa pagina da la glista d\'observaziun, visita
+$UNWATCHURL
+
+Resuns ed agid chattas qua:
+{{fullurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Stizzar la pagina',
@@ -1808,7 +1868,7 @@ Midadas futuras vid quai artitgel e la pagina da discussiun appertegnenta vegnan
Conferma per plaschair che ti ta es conscient da las consequenzas e che ti ageschas tenor las [[{{MediaWiki:Policy-url}}|directivas da {{SITENAME}}]].',
'actioncomplete' => "L' acziun è terminada.",
'actionfailed' => "L'acziun n'è betg reussida",
-'deletedtext' => '"<nowiki>$1</nowiki>" è vegnì stizzà.
+'deletedtext' => '"$1" è vegnì stizzà.
Sin $2 chattas ti ina glista dals davos artitgels stizzads.',
'deletedarticle' => 'ha stizzà "[[$1]]"',
'suppressedarticle' => 'supprimì "[[$1]]"',
@@ -1849,7 +1909,7 @@ L'ultima modificaziun vid questa pagina è da [[User:$3|$3]] ([[User talk:$3|tal
'protect_expiry_invalid' => "Il temp endatà n'è betg valid.",
'protect_expiry_old' => 'Il temp da proteger giascha en il passà.',
'protect-unchain-permissions' => 'Activar ulteriuras opziuns da protecziun',
-'protect-text' => "Qua pos ti contemplar ed midar il livel da protecziun per l'artitgel '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Qua pos ti contemplar ed midar il livel da protecziun per l'artitgel '''$1'''.",
'protect-locked-blocked' => "Ti na pos betg midar il livel da protecziun durant che ti es blocca.
Qua è la configuraziun actuala per la pagina '''$1''':",
'protect-locked-dblock' => "Il livel da protecziun na po betg vegnir midà perquai che la banca da datas è bloccada.
@@ -1904,6 +1964,8 @@ Ti pos midar il livel da protecziun da quest\'artitgel, quai na vegn dentant bet
'undeletepagetext' => "{{PLURAL:$1|La suandanta pagina è stizzada ma è|Las suandantas $1 èn stizzadas ma èn}} anc en l'archiv cun pussaivladad da restituir.
L'archiv vegn eventualmain svidà periodicamain.",
'undelete-fieldset-title' => 'Restituir las versiuns',
+'undeleteextrahelp' => "Per restituir l'entira cronologia d'ina pagina, lascha inactiv tut las chaschettas e cllicca sin '''''{{int:undeletebtn}}'''''.
+Per restituir be tschertgas part, activescha las chaschettas correspundentas per las versiuns che duain vegnir restituidas e clicca sin '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => 'Archivà $1 {{PLURAL:$1|versiun|versiuns}} archived',
'undelete-nodiff' => 'Chattà naginas versiuns anteriuras.',
'undeletebtn' => 'restituir',
@@ -1978,7 +2040,6 @@ L'ultima endataziun dal log da bloccar vegn mussà sutvart sco referenza:",
'blockiptext' => "Utilisescha il formular sutvart per bloccar ina adressa IP u in utilisader uschia ch'el na po betg pli far midadas.
Ti duessas be far quai per impedir vandalissem e en ina moda confurma a las [[{{MediaWiki:Policy-url}}|directivas]].
Inditgescha sutvart in motiv (per exempel pos ti inditgar paginas ch'èn vegnidas destruidas).",
-'ipaddress' => 'Adressa IP:',
'ipadressorusername' => "Adressa IP u num d'utilisader:",
'ipbexpiry' => 'Bloccà enfin:',
'ipbreason' => 'Motiv:',
@@ -1991,7 +2052,6 @@ Inditgescha sutvart in motiv (per exempel pos ti inditgar paginas ch'èn vegnida
** Sedepurtar nunconvegnent u mulestant
** Abus da plirs contos
** Num d'utilisader nunacceptabel",
-'ipbanononly' => 'Bloccar be utilisaders anonims',
'ipbcreateaccount' => "Impedir la creaziun da contos d'utilisader",
'ipbemailban' => 'Bloccar la funcziun da trametter e-mails',
'ipbenableautoblock' => "Bloccar automaticamain l'ultima adressa IP che quest utilisader ha utilisà e mintga adressa IP che succeda da la quala el emprova da far modificaziuns",
@@ -2002,7 +2062,6 @@ Inditgescha sutvart in motiv (per exempel pos ti inditgar paginas ch'èn vegnida
'ipbotherreason' => 'Auter/ulteriur motiv:',
'ipbhidename' => "Zuppentar il num d'utilisader en las modicaziuns e glistas",
'ipbwatchuser' => "Observar las paginas d'utilisader e da discussiun da quest utilisader",
-'ipballowusertalk' => "Lubir a quest utilisader da modifitgar l'atgna pagina da discussiun durant ch'el è bloccà",
'ipb-change-block' => "Re-bloccar l'utilisader cun las medemas configuraziuns",
'badipaddress' => "L'adressa IP è nunvalida",
'blockipsuccesssub' => 'Bloccà cun success',
@@ -2018,16 +2077,21 @@ Sin [[Special:IPBlockList|la glista dad IPs bliccadas]] pos ti repassar tut las
'ipusubmit' => 'Allontanar questa bloccada',
'unblocked' => '[[User:$1|$1]] è vegnì debloccà',
'unblocked-id' => 'La bloccada $1 è vegnida allontanada',
+'blocklist' => 'Utilisaders bloccads',
'ipblocklist' => 'Utilisaders bloccads',
'ipblocklist-legend' => 'Tschertgar in utilisader bloccà',
-'ipblocklist-username' => "Num d'utilisader u adressa IP:",
-'ipblocklist-sh-userblocks' => '$1 las bloccadas da contos',
-'ipblocklist-sh-tempblocks' => '$1 las bloccadas temporaras',
-'ipblocklist-sh-addressblocks' => '$1 las bloccadas da singulas adressas IP',
+'blocklist-userblocks' => 'zuppentar las bloccadas da contos',
+'blocklist-tempblocks' => 'Zuppentar bloccadas temporaras',
+'blocklist-addressblocks' => 'Zuppentar singuls blocs dad adressas dad IP',
+'blocklist-timestamp' => 'Bul da temp',
+'blocklist-target' => 'Destinaziun',
+'blocklist-expiry' => 'Scroda ils',
+'blocklist-by' => 'Administratur che ha bloccà',
+'blocklist-params' => 'Parameters da la bloccada',
+'blocklist-reason' => 'Motiv',
'ipblocklist-submit' => 'Tschertgar',
'ipblocklist-localblock' => 'Bloccadas localas',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Autra bloccada|Autras bloccadas}}',
-'blocklistline' => '$1, $2 ha bloccà $3 ($4)',
'infiniteblock' => 'permanent',
'expiringblock' => 'scroda ils $1 las $2 uras',
'anononlyblock' => 'be anonims',
@@ -2061,8 +2125,7 @@ Quai è il log da supprimer sco infurmaziun:',
'ipb_expiry_invalid' => 'La durada da la bloccada inditgada è nunvalaivla.',
'ipb_expiry_temp' => "Bloccadas cun zuppentar il num d'utilisader sont esser permanentas.",
'ipb_already_blocked' => '"$1" è gia bloccà',
-'ipb-needreblock' => '== Gia bloccà ==
-$1 è gia bloccà.
+'ipb-needreblock' => '$1 è gia bloccà.
Vuls ti midar las opziuns da la bloccada?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Autra bloccada|Autras bloccadas}}',
'ipb_cant_unblock' => "Errur: La bloccada cun lÎD $1 n'è betg vegnida chattada.
@@ -2215,7 +2278,7 @@ En cas che ti vul be exportar l'ultima versiun pos ti era utilisar in link, p.ex
'allmessagesdefault' => 'text original',
'allmessagescurrent' => 'text actual',
'allmessagestext' => 'Quai è ina glista da tut ils messadis dals differents tips da paginas da MediaWiki che vegnan utilisadas da la software MediaWiki.
-Fai ina visita sin [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] sche ti vuls gidar da translatar la software MediaWiki.',
+Fai ina visita sin [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] sche ti vuls gidar da translatar la software MediaWiki.',
'allmessagesnotsupportedDB' => "Questa pagina na po betg vegnir mussada, perquai che '''\$wgUseDatabaseMessages''' è vegnì deactivà.",
'allmessages-filter-legend' => 'Filtrar',
'allmessages-filter' => 'Filtrar tenor standi da modificaziun:',
@@ -2390,32 +2453,17 @@ Probablamien è quai capità pervia dad in link ad ina pagina externa ch'è sin
'spam_blanking' => 'Tut las versiuns cuntegnivan colliaziuns a $1, nettegià',
# Info page
-'infosubtitle' => 'Infurmaziuns per la pagina',
-'numedits' => 'Dumber da las versiuns da quest artitgel: $1',
-'numtalkedits' => 'Dumber da las versiuns da la pagina da discussiun: $1',
-'numwatchers' => 'dumber dals observaturs: $1',
-'numauthors' => 'Dumber dals auturs da quest artitgel: $1',
-'numtalkauthors' => 'dumber dals participants da la discussiun: $1',
-
-# Math options
-'mw_math_png' => 'Adina mussar sco PNG',
-'mw_math_simple' => 'HTML sche fitg simpel, uschiglio PNG',
-'mw_math_html' => 'HTML sche pussibel ed uschiglio PNG',
-'mw_math_source' => 'Laschar en furma da TeX (per navigaturs da text)',
-'mw_math_modern' => 'Recumandà per navigaturs moderns',
-'mw_math_mathml' => 'MathML sche pussibel (experimental)',
-
-# Math errors
-'math_failure' => 'Errur dal parser',
-'math_unknown_error' => 'errur nunenconuschenta',
-'math_unknown_function' => 'funcziun nunenconuschenta',
-'math_lexing_error' => 'Errur lexicala',
-'math_syntax_error' => 'Sbagl da la sintaxta',
-'math_image_error' => "La conversiun da PNG n'è betg reussida;
-controllescha l'installaziun correcta da latext, dvips, gs e convertescha lura",
-'math_bad_tmpdir' => "Betg pussaivel da scriver u crear l'ordinatur temporar math",
-'math_bad_output' => "Betg pussaivel da scriver u crear l'ordinatur da destinaziun math",
-'math_notexvc' => "Il program texvc n'è betg vegnì chattà. Legia math/README per al configurar.",
+'pageinfo-title' => 'Infurmaziuns per "$1"',
+'pageinfo-header-edits' => 'Midadas',
+'pageinfo-header-watchlist' => "Glista d'observaziun",
+'pageinfo-header-views' => 'Visitas',
+'pageinfo-subjectpage' => 'Pagina',
+'pageinfo-talkpage' => 'Pagina da discussiun',
+'pageinfo-watchers' => 'Dumber dad observaturs',
+'pageinfo-edits' => 'Dumber da midadas',
+'pageinfo-authors' => 'Dumber dad auturs differents',
+'pageinfo-views' => 'Dumber da visitas',
+'pageinfo-viewsperedit' => 'Visitas per midada',
# Patrolling
'markaspatrolleddiff' => 'Marcar sco controllà',
@@ -2459,10 +2507,11 @@ Cun exequir questa datoteca po tes sistem vegnir donnegià.",
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagina|paginas}}',
'file-info' => 'grondezza da datoteca: $1, tip da MIME: $2',
'file-info-size' => '$1 × $2 pixels, grondezza da datoteca: $3, tip da MIME: $4',
+'file-info-size-pages' => '$1 × $2 pixels, grondezza da datoteca: $3, tip da MIME: $4, $5 {{PLURAL:$5|pagina|paginas}}',
'file-nohires' => '<small>Nagina resuluziun pli auta disponibla.</small>',
'svg-long-desc' => 'datoteca da SVG, grondezza da basa $1 × $2 pixels, grondezza da datoteca: $3',
'show-big-image' => 'Resoluziun cumplaina',
-'show-big-image-thumb' => '<small>Grondezza da quest prevista: $1 × $2 pixels</small>',
+'show-big-image-size' => '$1 × $2 pixels',
'file-info-gif-looped' => 'marscha infinit',
'file-info-gif-frames' => '$1 {{PLURAL:$1|maletg|maletgs}}',
'file-info-png-looped' => 'marscha infinit',
@@ -2494,14 +2543,20 @@ Tut las colliaziuns che suandan sin la medema lingia vegnan risguardadas sco exc
Sche la datoteca è vegnida midada dal status original èn tscherts detagls eventualmain betg pli corrects.',
'metadata-expand' => 'Mussar detagls extendids',
'metadata-collapse' => 'Zuppentar detagls extendids',
-'metadata-fields' => 'Suandants champs da las EXIF-Metadata en quest text da sistem da MediaWiki vegnan mussads sin las paginas da descripziun dal maletg; uleriurs detagls zuppentads normalmain pon vegnir mussads.
+'metadata-fields' => "Las datas da meta da maletgs ch'èn inditgadas sin questa pagina vegnan mussads sin las paginas da descripziun dal maletg; uleriurs detagls zuppentads pon vegnir mussads.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Ladezza',
@@ -2516,13 +2571,11 @@ Sche la datoteca è vegnida midada dal status original èn tscherts detagls even
'exif-ycbcrpositioning' => 'Posiziunament da Y e C',
'exif-xresolution' => 'Resoluziun orizontala',
'exif-yresolution' => 'Resoluziun verticala',
-'exif-resolutionunit' => 'Unitad da mesira da la resoluziun',
'exif-stripoffsets' => 'Posiziun da las datas da maletg',
'exif-rowsperstrip' => 'Dumber lingias per strivla',
'exif-stripbytecounts' => 'Bytes per strivla cumprimida',
'exif-jpeginterchangeformat' => 'Offset al JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytes datas da JPEG',
-'exif-transferfunction' => 'Funcziun da transfer',
'exif-whitepoint' => 'Cromatissem dil punct alv',
'exif-primarychromaticities' => 'Cromatissem da las colurs primara�s',
'exif-ycbcrcoefficients' => 'Coeffizients YCbCr',
@@ -2541,7 +2594,6 @@ Sche la datoteca è vegnida midada dal status original èn tscherts detagls even
'exif-compressedbitsperpixel' => 'Modus da cumprimer',
'exif-pixelydimension' => 'Ladezza dal maletg',
'exif-pixelxdimension' => 'Autezza dal maletg',
-'exif-makernote' => 'Notiza dal fabricant',
'exif-usercomment' => "Commentari da l'utilisader",
'exif-relatedsoundfile' => "Datoteca d'audio appartegnenta",
'exif-datetimeoriginal' => 'Data e temp da la generaziun',
@@ -2555,7 +2607,6 @@ Sche la datoteca è vegnida midada dal status original èn tscherts detagls even
'exif-exposureprogram' => "Program d'exposiziun",
'exif-spectralsensitivity' => 'Sensibilitad spectrala',
'exif-isospeedratings' => 'Sensibilitad ISO',
-'exif-oecf' => 'Factur da conversiun optoelectronic',
'exif-shutterspeedvalue' => 'Sveltezza da la serradira APEX',
'exif-aperturevalue' => 'Cifra dal diafragma APEX',
'exif-brightnessvalue' => 'Luminusitad APEX',
@@ -2619,10 +2670,79 @@ Sche la datoteca è vegnida midada dal status original èn tscherts detagls even
'exif-gpsareainformation' => 'Num dal territori da GPS',
'exif-gpsdatestamp' => 'Data da GPS',
'exif-gpsdifferential' => 'Correctura da differenzial dal GPS',
+'exif-jpegfilecomment' => 'Commentari da la datoteca JPEG',
+'exif-keywords' => 'Chavazzins',
+'exif-worldregioncreated' => 'Regiun dal mund en la quala la fotografia è vegnida fatga',
+'exif-countrycreated' => 'Pajais en il qual la fotografia è vegnida fatga',
+'exif-countrycodecreated' => 'Code dal pajais en il qual la fotografia è vegnida fatga',
+'exif-provinceorstatecreated' => 'Provinza, stadi u chantun en il qual la fotografia è vegnida fatga',
+'exif-citycreated' => 'Citad/Lieu en il qual la fotografia è vegnida fatga',
+'exif-sublocationcreated' => 'Part da la citad/dal lieu en il qual la fotografia è vengida fatga',
+'exif-worldregiondest' => 'Regiun dal mund mussada',
+'exif-countrydest' => 'Pajais mussà',
+'exif-countrycodedest' => 'Code dal pajais mussà',
+'exif-provinceorstatedest' => 'Provinza, chantun u stadi mussà',
+'exif-citydest' => 'Citad/Lieu mussà',
+'exif-sublocationdest' => 'Part da la citad/dal lieu mussà',
'exif-objectname' => 'Titel curt',
+'exif-specialinstructions' => 'Instrucziuns spezialas',
+'exif-headline' => 'Titel',
+'exif-credit' => 'Numnar / publicatur',
+'exif-source' => 'Funtauna',
+'exif-editstatus' => 'Status redacziunal dal maletg',
+'exif-urgency' => 'Urgenza',
+'exif-fixtureidentifier' => 'Num da la columna',
+'exif-locationdest' => 'Lieu mussà',
+'exif-locationdestcode' => 'Code dal lieu mussà',
+'exif-objectcycle' => 'Temp dal di durant il qual quest med duess vegnir emess',
+'exif-contact' => 'Infurmaziuns da contact',
+'exif-writer' => 'Autur',
+'exif-languagecode' => 'Lingua',
+'exif-iimversion' => 'Versiun IIM',
+'exif-iimcategory' => 'Categoria',
+'exif-iimsupplementalcategory' => 'Categorias supplementaras',
+'exif-datetimeexpires' => 'Betg utilisar suenter',
+'exif-datetimereleased' => 'Public davent da',
+'exif-originaltransmissionref' => 'Code dal lieu danunder la transmissiun originala vegn',
+'exif-identifier' => 'Identificatur',
+'exif-lens' => 'Objectiv utilisà',
+'exif-serialnumber' => 'Numer da seria da la camera',
+'exif-cameraownername' => 'Possessur da la camera',
+'exif-label' => 'Etichetta',
+'exif-datetimemetadata' => 'Data da la davosa midada da las datas da meta',
+'exif-nickname' => 'Num informal dal maletg',
+'exif-rating' => 'Valitaziun (ord 5)',
+'exif-rightscertificate' => "Certificat per l'administraziun dals dretgs",
+'exif-copyrighted' => "Status dals dretgs d'autur",
+'exif-copyrightowner' => "Possessur dals dretgs d'autur",
+'exif-usageterms' => "Cundizius per l'utilisaziun",
+'exif-webstatement' => "Decleraziun online dals dretgs d'autur",
+'exif-originaldocumentid' => 'ID unica dal document original',
+'exif-licenseurl' => "URL da la lizenca dal dretg d'autur",
+'exif-morepermissionsurl' => 'Infurmaziuns alternativas davart la lizenza',
+'exif-attributionurl' => 'Sche questa ovra vegn reutilisada, far ina colliaziun a',
+'exif-preferredattributionname' => 'Sche questa ovra vegn reutilisada, p.pl. numnar',
+'exif-pngfilecomment' => 'Commentari da la datoteca PNG',
+'exif-disclaimer' => 'Exclusiun da responsabladad',
+'exif-contentwarning' => 'Avertiment davart il cuntegn',
+'exif-giffilecomment' => 'Commentari da la datoteca GIF',
+'exif-intellectualgenre' => "Tip da l'element",
+'exif-subjectnewscode' => 'Code dal subject',
+'exif-scenecode' => 'Code IPTC da la scena',
+'exif-event' => 'Occurrenza mussada',
+'exif-organisationinimage' => 'Organisaziun mussada',
+'exif-personinimage' => 'Persuna mussada',
+'exif-originalimageheight' => 'Autezza avant tagliar',
+'exif-originalimagewidth' => 'Ladezza avant tagliar',
# EXIF attributes
'exif-compression-1' => 'Betg cumprimà',
+'exif-compression-2' => 'GGITT gruppa 3 codaziun da lunghezza currenta Hufman modifitgada en 1 dimensiun',
+'exif-compression-3' => 'CCITT gruppa 3 codaziun da fax',
+'exif-compression-4' => 'CCITT gruppa 4 codaziun da fax',
+
+'exif-copyrighted-true' => "Protegì dal dretg d'auturs",
+'exif-copyrighted-false' => 'Domena publica',
'exif-unknowndate' => 'Data nunenconuschenta',
@@ -2638,6 +2758,8 @@ Sche la datoteca è vegnida midada dal status original èn tscherts detagls even
'exif-planarconfiguration-1' => 'Format grop (chunky)',
'exif-planarconfiguration-2' => 'Format planar',
+'exif-colorspace-65535' => 'Betg calibrà',
+
'exif-componentsconfiguration-0' => "n'exista betg",
'exif-exposureprogram-0' => 'Betg definì',
@@ -2722,6 +2844,10 @@ Sche la datoteca è vegnida midada dal status original èn tscherts detagls even
'exif-gpslongitude-e' => 'Longhituda ost',
'exif-gpslongitude-w' => 'Longhituda vest',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|meters}} sur il livel da la mar',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|meters}} sut il livel da la mar',
+
'exif-gpsstatus-a' => 'Mesiraziun en progress',
'exif-gpsstatus-v' => 'Interoperabilitad da la mesiraziun',
@@ -2733,21 +2859,70 @@ Sche la datoteca è vegnida midada dal status original èn tscherts detagls even
'exif-gpsspeed-m' => 'Miglias per ura',
'exif-gpsspeed-n' => 'Nuf',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometers',
+'exif-gpsdestdistance-m' => 'Miglias',
+'exif-gpsdestdistance-n' => 'Miglias nauticas',
+
+'exif-gpsdop-excellent' => 'Excellent ($1)',
+'exif-gpsdop-good' => 'Bun ($1)',
+'exif-gpsdop-moderate' => 'Mediocher ($1)',
+'exif-gpsdop-fair' => 'Passabel ($1)',
+'exif-gpsdop-poor' => 'Debel ($1)',
+
+'exif-objectcycle-a' => 'Be la damaun',
+'exif-objectcycle-p' => 'Be la saira',
+'exif-objectcycle-b' => 'Tant la dumaun sco la saira',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Direcziun reala',
'exif-gpsdirection-m' => 'Direcziun magnetica',
+'exif-dc-contributor' => 'Contribuents',
+'exif-dc-coverage' => 'Champ local u temporal dal med',
+'exif-dc-date' => 'Data(s)',
+'exif-dc-publisher' => 'Editur',
+'exif-dc-relation' => 'Meds sumegliants',
+'exif-dc-rights' => 'Dretgs',
+'exif-dc-source' => 'Funtauna dal med',
+'exif-dc-type' => 'Tip dal med',
+
+'exif-rating-rejected' => 'Refusà',
+
+'exif-isospeedratings-overflow' => 'Pli grond che 65535',
+
+'exif-iimcategory-ace' => 'Art, cultura e divertiment',
+'exif-iimcategory-clj' => 'Criminalitad e dretg',
+'exif-iimcategory-dis' => 'Catastrofas ed accidents',
+'exif-iimcategory-fin' => 'Economia ed affars',
+'exif-iimcategory-edu' => 'Furmaziun',
+'exif-iimcategory-evn' => 'Ambient',
+'exif-iimcategory-hth' => 'Sanadad',
+'exif-iimcategory-hum' => 'Interess umans',
+'exif-iimcategory-lab' => 'Lavur',
+'exif-iimcategory-lif' => 'Lifestyle e temp liber',
+'exif-iimcategory-pol' => 'Politica',
+'exif-iimcategory-rel' => 'Religiun e cardientscha',
+'exif-iimcategory-sci' => 'Scienza e tecnologia',
+'exif-iimcategory-soi' => 'Temas socials',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Guerra, conflicts e revoltas',
+'exif-iimcategory-wea' => 'Aura',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Bass ($1)',
+'exif-urgency-high' => 'Aut ($1)',
+'exif-urgency-other' => "Prioritad definida da l'utilisader ($1)",
+
# External editor support
'edit-externally' => 'Modifitgar questa datoteca cun in program extern',
-'edit-externally-help' => "(Legia [http://www.mediawiki.org/wiki/Manual:External_editors instrucziuns d'installaziun] per ulteriuras infurmaziuns)",
+'edit-externally-help' => "(Legia [//www.mediawiki.org/wiki/Manual:External_editors instrucziuns d'installaziun] per ulteriuras infurmaziuns)",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tuts',
-'imagelistall' => 'tuts',
-'watchlistall2' => 'tut',
-'namespacesall' => 'tuts',
-'monthsall' => 'tuts',
-'limitall' => 'tuts',
+'watchlistall2' => 'tut',
+'namespacesall' => 'tuts',
+'monthsall' => 'tuts',
+'limitall' => 'tuts',
# E-mail address confirmation
'confirmemail' => "Confermar l'adressa dad e-mail",
@@ -2831,16 +3006,23 @@ $1',
'trackbackdeleteok' => 'Il trackback è vegnì stizzà cun success.',
# Delete conflict
-'deletedwhileediting' => "'''Attenziun:''' Questa pagina è vegnida stizzada suenter che ti has cumanzà a la modifitgar.",
-'confirmrecreate' => "L'utilisader [[User:$1|$1]] ([[User talk:$1|talk]]) ha stizzà quest artitgel (motiv: ''$2'') suenter che ti as cumenzà a modifitgar l'artitgel.
+'deletedwhileediting' => "'''Attenziun:''' Questa pagina è vegnida stizzada suenter che ti has cumanzà a la modifitgar.",
+'confirmrecreate' => "L'utilisader [[User:$1|$1]] ([[User talk:$1|talk]]) ha stizzà quest artitgel (motiv: ''$2'') suenter che ti as cumenzà a modifitgar l'artitgel.
Conferma per plaschair che ti vuls propi crear danovamain quest artitgel.",
-'recreate' => 'Crear danovamain',
+'confirmrecreate-noreason' => "L'utilisader [[User:$1|$1]] ([[User talk:$1|discussiun]]) ha stizzà questa pagina suenter che ti has cumenzà da la modifitgar. Conferma per plaschair che ti vuls recrear questa pagina.",
+'recreate' => 'Crear danovamain',
# action=purge
'confirm_purge_button' => 'ok',
'confirm-purge-top' => 'Stizzar il cache da questa pagina?',
'confirm-purge-bottom' => 'Svida il cache dad ina pagina e sforza da mussar la versiun actuala.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => "Vuls ti agiuntar questa pagina a tia glista d'observaziun?",
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => "Vuls ti allontanar questa pagina da tia glista d'observaziun?",
+
# Multipage image navigation
'imgmultipageprev' => '↠ultima pagina',
'imgmultipagenext' => 'proxima pagina →',
@@ -2884,14 +3066,14 @@ Emprova cun la prevista normala',
'watchlistedit-normal-legend' => "Allontanar da la glista d'observaziun",
'watchlistedit-normal-explain' => 'Las endataziuns da tia glista d\'observaziun èn mussadas sutvart.
Per allontanar ina endataziun, tscherna il quadert dasperas e clicca sin "{{int:Watchlistedit-normal-submit}}".
-Ti pos era modifitgar tia glista d\'observaziun en il [[Special:Watchlist/raw|format da glistas]].',
+Ti pos era modifitgar tia glista d\'observaziun en il [[Special:EditWatchlist/raw|format da glistas]].',
'watchlistedit-normal-submit' => 'Allontanar endataziuns',
'watchlistedit-normal-done' => "{{PLURAL:$1|1 endataziun è vegnida|$1 endataziuns èn vegnidas}} allontanadas da la glista d'observaziun:",
'watchlistedit-raw-title' => "Modifitgar la glista d'observaziun en il format da la glista",
'watchlistedit-raw-legend' => "Modifitgar la glista d'observaziun en il format da la glista",
'watchlistedit-raw-explain' => 'Quai èn las endataziuns da tia glista d\'observaziun en il format da glista. Ti pos agiuntar ed allontanar endataziuns da la glista. Fa dentant attenziun che ti pos be inditgar ina endataziun per lingia.
Sche ti has terminà tia lavur, clicca sin "{{int:Watchlistedit-raw-submit}}".
-Ti pos era utilisar [[Special:Watchlist/edit|la pagina da standard]].',
+Ti pos era utilisar [[Special:EditWatchlist|la pagina da standard]].',
'watchlistedit-raw-titles' => 'Endataziuns:',
'watchlistedit-raw-submit' => "Actualisar la glista d'observaziun",
'watchlistedit-raw-done' => "Tia glista d'observaziun è vegnida actualisada.",
@@ -2913,6 +3095,7 @@ Ti pos era utilisar [[Special:Watchlist/edit|la pagina da standard]].',
'version-specialpages' => 'Paginas spezialas',
'version-parserhooks' => 'Hooks dal parser',
'version-variables' => 'Variablas',
+'version-antispam' => 'Prevenziun da spam',
'version-skins' => 'Skins',
'version-other' => 'Auter',
'version-mediahandlers' => 'Manipulaturs da meds',
@@ -2924,13 +3107,13 @@ Ti pos era utilisar [[Special:Watchlist/edit|la pagina da standard]].',
'version-hook-subscribedby' => 'Abonnà da',
'version-version' => '(Versiun $1)',
'version-license' => 'Licenza',
-'version-poweredby-credits' => "Questa wiki utilisescha '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-credits' => "Questa wiki utilisescha '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
'version-poweredby-others' => 'auters',
'version-license-info' => "MediaWiki è software liba; ti la pos redistribuir e/u la modifitgar tenor ils terms da la GNU General Public License sco ch'ella vegn publitgada da la Free Software Foundation; ti pos utilisar la versiun 2 da la licenza u (sche ti vul) mintga versiun che succeda.
MediaWiki vegn distribuì en la speranza che questa software saja utila, dentant SENZA MINTGA GARANZIA; era senza garanzia implizita da NEGOZIABILITAD u ADDATAZIUN PER IN INTENT SPECIAL. Guarda la GNU General Public License per ulteriurs detagls.
-Ti duessas avair retschavì [{{SERVER}}{{SCRIPTPATH}}/COPYING ina copia da la GNU General Public License] cun quest program; sche na betg, scriva a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA u [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html la legia online].",
+Ti duessas avair retschavì [{{SERVER}}{{SCRIPTPATH}}/COPYING ina copia da la GNU General Public License] cun quest program; sche na betg, scriva a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA u [//www.gnu.org/licenses/old-licenses/gpl-2.0.html la legia online].",
'version-software' => 'Software installada',
'version-software-product' => 'Product',
'version-software-version' => 'Versiun',
@@ -2945,19 +3128,22 @@ Maletgs vegnan mussads en resoluziun cumpletta, auters tips da datoteca vegnan a
Endatescha il num da datoteca senza il prefix "{{ns:file}}:".',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Tschertgar datotecas dublas',
-'fileduplicatesearch-legend' => 'Tschertgar duplicats',
-'fileduplicatesearch-filename' => 'Num da datoteca:',
-'fileduplicatesearch-submit' => 'Tschertgar',
-'fileduplicatesearch-info' => '$1 x $2 pixels<br />Grondezza da datoteca: $3<br />Tip da MIME: $4',
-'fileduplicatesearch-result-1' => 'La datoteca "$1" n\'ha nagin dublicat identic.',
-'fileduplicatesearch-result-n' => 'La datoteca "$1" ha {{PLURAL:$2|in dublicat identic|$2 dublicats identics}}.',
+'fileduplicatesearch' => 'Tschertgar datotecas dublas',
+'fileduplicatesearch-summary' => 'Tschertgar datotecas dublas a basa da valurs da hash.',
+'fileduplicatesearch-legend' => 'Tschertgar duplicats',
+'fileduplicatesearch-filename' => 'Num da datoteca:',
+'fileduplicatesearch-submit' => 'Tschertgar',
+'fileduplicatesearch-info' => '$1 x $2 pixels<br />Grondezza da datoteca: $3<br />Tip da MIME: $4',
+'fileduplicatesearch-result-1' => 'La datoteca "$1" n\'ha nagin dublicat identic.',
+'fileduplicatesearch-result-n' => 'La datoteca "$1" ha {{PLURAL:$2|in dublicat identic|$2 dublicats identics}}.',
+'fileduplicatesearch-noresults' => 'Betg chattà ina datoteca cun il num "$1".',
# Special:SpecialPages
'specialpages' => 'Paginas spezialas',
'specialpages-note' => '----
* Paginas spezialas normalas.
-* <strong class="mw-specialpagerestricted">Paginas spezialas restrenschidas.</strong>',
+* <span class="mw-specialpagerestricted">Paginas spezialas restrenschidas.</span>
+* <span class="mw-specialpagecached">Paginas spezialas en il cache (pon esser antiquadas).</span>',
'specialpages-group-maintenance' => 'Rapports da mantegnamant',
'specialpages-group-other' => 'Autras paginas spezialas',
'specialpages-group-login' => "T'annunziar / registrar",
diff --git a/languages/messages/MessagesRmy.php b/languages/messages/MessagesRmy.php
index f03220fa..374797a5 100644
--- a/languages/messages/MessagesRmy.php
+++ b/languages/messages/MessagesRmy.php
@@ -211,7 +211,7 @@ Mishto si te jas kai {{SITENAME}} thai te paruves tiro lav sigo.',
'accountcreated' => 'Akount kerdo',
'accountcreatedtext' => 'Kerdo o akonto le jenesko ko $1.',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Purano nakahvipnasko lav',
'newpassword' => 'Nevo nakhavipnasko lav:',
@@ -270,15 +270,12 @@ Kana avilyan kathe doshatar, ja palpale.',
'preferences' => 'Kamimata',
'changepassword' => 'Paruv o nakhavipnasko lav',
'prefs-skin' => 'Dikhimos',
-'prefs-math' => 'Matematika',
'datedefault' => 'Ni ekh kamipen',
'prefs-datetime' => 'Dives thai chaso',
'prefs-rc' => 'Neve paruvimata',
'saveprefs' => 'Uxtav le kamimata',
'resetprefs' => 'Thov le kamimata sar ko shirdipen',
'columns' => 'Uche vortorina:',
-'contextlines' => 'Vortorinyango gin pe avimos:',
-'contextchars' => 'Grafemengo gin pe ekh vortorin:',
'localtime' => 'Thanutno vaxt',
'timezoneoffset' => 'Ververipen',
'guesstimezone' => 'Le les katar o browser',
@@ -384,7 +381,6 @@ Kana avilyan kathe doshatar, ja palpale.',
# Watchlist
'watchlist' => 'Dikhipnaske lekha',
'mywatchlist' => 'Dikhipnaske lekha',
-'addedwatch' => 'Thovdi ando patrinipen le patrinyange so arakhav len',
'addedwatchtext' => 'I patrin "[[:$1]]" sas thovdi andi tiri lista [[Special:Watchlist|le artikolengi so dikhes len]].
Le neve paruvimata andar kadale patrya thai andar lenge vakyarimatenge patrya thona kathe, vi dikhena pen le <b>thule semnurenca</b> andi patrin le [[Special:RecentChanges|neve paruvimatenge]].
@@ -406,7 +402,7 @@ Kana kamesa te khoses kadaya patrin andar tiri lista le patryange so arakhes len
'exblank' => 'i patrin sas chuchi',
'historywarning' => 'Dikh! La patrya so kames to khoses la si la puranipen:',
'actioncomplete' => 'Agorisardi buti',
-'deletedtext' => '"<nowiki>$1</nowiki>" sas khosli.
+'deletedtext' => '"$1" sas khosli.
Dikh ando $2 ek patrinipen le palutne butyange khosle.',
'deletedarticle' => '"[[$1]]" sas khosli.',
@@ -521,13 +517,6 @@ Dikh ando $2 ek patrinipen le palutne butyange khosle.',
'others' => 'aver',
'siteusers' => 'Jeno/e kai {{SITENAME}} $1',
-# Math errors
-'math_unknown_error' => 'bijangli dosh',
-'math_unknown_function' => 'bijangli funkciya',
-'math_syntax_error' => 'sintaksaki dosh',
-'math_bad_output' => 'Nashti te kerel pes vai te lekhavel po matematikano direktoro kai del pes avri.',
-'math_notexvc' => 'Nai o kerditori (eksekutabilo) texvc; dikh math/README te labyares les.',
-
# Image deletion
'deletedrevision' => 'Khoslo o purano paruvipen $1',
@@ -540,10 +529,8 @@ Dikh ando $2 ek patrinipen le palutne butyange khosle.',
'ilsubmit' => 'Rod',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'sa',
-'imagelistall' => 'savore',
-'watchlistall2' => 'savore',
-'namespacesall' => 'savore',
+'watchlistall2' => 'savore',
+'namespacesall' => 'savore',
# Trackbacks
'trackbacklink' => 'Vurma',
diff --git a/languages/messages/MessagesRo.php b/languages/messages/MessagesRo.php
index 3171d99e..6e49d132 100644
--- a/languages/messages/MessagesRo.php
+++ b/languages/messages/MessagesRo.php
@@ -192,94 +192,95 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Redirectări_duble' ),
+ 'Activeusers' => array( 'Utilizatori_activi' ),
+ 'Allmessages' => array( 'Toate_mesajele' ),
+ 'Allpages' => array( 'Toate_paginile' ),
+ 'Ancientpages' => array( 'Pagini_vechi' ),
+ 'Blankpage' => array( 'Pagină_goală' ),
+ 'Block' => array( 'Blochează_IP' ),
+ 'Blockme' => array( 'Blochează-mă' ),
+ 'Booksources' => array( 'Referințe_în_cărți' ),
'BrokenRedirects' => array( 'Redirectări_invalide' ),
- 'Disambiguations' => array( 'Dezambiguizări' ),
- 'Userlogin' => array( 'Autentificare' ),
- 'Userlogout' => array( 'Ieșire' ),
+ 'Categories' => array( 'Categorii' ),
+ 'ChangePassword' => array( 'Resetează_parola' ),
+ 'Confirmemail' => array( 'Confirmă_email' ),
+ 'Contributions' => array( 'Contribuții' ),
'CreateAccount' => array( 'ÃŽnregistrare' ),
- 'Preferences' => array( 'Preferințe' ),
- 'Watchlist' => array( 'Pagini_urmărite' ),
- 'Recentchanges' => array( 'Schimbări_recente' ),
- 'Upload' => array( 'Încărcare' ),
+ 'Deadendpages' => array( 'Pagini_fără_legături' ),
+ 'DeletedContributions' => array( 'Contibuții_șterse' ),
+ 'Disambiguations' => array( 'Dezambiguizări' ),
+ 'DoubleRedirects' => array( 'Redirectări_duble' ),
+ 'Emailuser' => array( 'Email_utilizator' ),
+ 'Export' => array( 'Exportă' ),
+ 'Fewestrevisions' => array( 'Revizii_puține' ),
+ 'FileDuplicateSearch' => array( 'Căutare_fișier_duplicat' ),
+ 'Filepath' => array( 'Cale_fișier' ),
+ 'Import' => array( 'Importă' ),
+ 'Invalidateemail' => array( 'Invalidează_email' ),
+ 'BlockList' => array( 'Listă_IP_blocat' ),
+ 'LinkSearch' => array( 'Căutare_legături' ),
+ 'Listadmins' => array( 'Listă_administratori' ),
+ 'Listbots' => array( 'Listă_roboți' ),
'Listfiles' => array( 'Listă_fișiere' ),
- 'Newimages' => array( 'Imagini_noi' ),
- 'Listusers' => array( 'Listă_utilizatori' ),
'Listgrouprights' => array( 'Listă_drepturi_grup' ),
- 'Statistics' => array( 'Statistici' ),
- 'Randompage' => array( 'Aleatoriu', 'Pagină_aleatorie' ),
+ 'Listredirects' => array( 'Listă_redirectări' ),
+ 'Listusers' => array( 'Listă_utilizatori' ),
+ 'Lockdb' => array( 'Blochează_BD' ),
+ 'Log' => array( 'Jurnal', 'Jurnale' ),
'Lonelypages' => array( 'Pagini_orfane' ),
- 'Uncategorizedpages' => array( 'Pagini_necategorizate' ),
- 'Uncategorizedcategories' => array( 'Categorii_necategorizate' ),
- 'Uncategorizedimages' => array( 'Imagini_necategorizate' ),
- 'Uncategorizedtemplates' => array( 'Formate_necategorizate' ),
- 'Unusedcategories' => array( 'Categorii_nefolosite' ),
- 'Unusedimages' => array( 'Imagini_nefolosite' ),
- 'Wantedpages' => array( 'Pagini_dorite', 'Legături_invalide' ),
- 'Wantedcategories' => array( 'Categorii_dorite' ),
- 'Wantedfiles' => array( 'Fișiere_dorite' ),
- 'Wantedtemplates' => array( 'Formate_dorite' ),
+ 'Longpages' => array( 'Pagini_lungi' ),
+ 'MergeHistory' => array( 'Istoria_combinărilor' ),
+ 'MIMEsearch' => array( 'Căutare_MIME' ),
+ 'Mostcategories' => array( 'Categorii_multe' ),
+ 'Mostimages' => array( 'Imagini_multe' ),
'Mostlinked' => array( 'Legături_multe' ),
'Mostlinkedcategories' => array( 'Categorii_des_folosite' ),
'Mostlinkedtemplates' => array( 'Formate_des_folosite' ),
- 'Mostimages' => array( 'Imagini_multe' ),
- 'Mostcategories' => array( 'Categorii_multe' ),
'Mostrevisions' => array( 'Revizii_multe' ),
- 'Fewestrevisions' => array( 'Revizii_puține' ),
- 'Shortpages' => array( 'Pagini_scurte' ),
- 'Longpages' => array( 'Pagini_lungi' ),
+ 'Movepage' => array( 'Mută_pagina' ),
+ 'Mycontributions' => array( 'Contribuțiile_mele' ),
+ 'Mypage' => array( 'Pagina_mea' ),
+ 'Mytalk' => array( 'Discuțiile_mele' ),
+ 'Newimages' => array( 'Imagini_noi' ),
'Newpages' => array( 'Pagini_noi' ),
- 'Ancientpages' => array( 'Pagini_vechi' ),
- 'Deadendpages' => array( 'Pagini_fără_legături' ),
+ 'PasswordReset' => array( 'Resetare_parolă' ),
+ 'Popularpages' => array( 'Pagini_populare' ),
+ 'Preferences' => array( 'Preferințe' ),
+ 'Prefixindex' => array( 'Index' ),
'Protectedpages' => array( 'Pagini_protejate' ),
'Protectedtitles' => array( 'Titluri_protejate' ),
- 'Allpages' => array( 'Toate_paginile' ),
- 'Prefixindex' => array( 'Index' ),
- 'Ipblocklist' => array( 'Listă_IP_blocat' ),
- 'Specialpages' => array( 'Pagini_speciale' ),
- 'Contributions' => array( 'Contribuții' ),
- 'Emailuser' => array( 'Email_utilizator' ),
- 'Confirmemail' => array( 'Confirmă_email' ),
- 'Whatlinkshere' => array( 'Ce_se_leagă_aici' ),
+ 'Randompage' => array( 'Aleatoriu', 'Pagină_aleatorie' ),
+ 'Randomredirect' => array( 'Redirectare_aleatorie' ),
+ 'Recentchanges' => array( 'Schimbări_recente' ),
'Recentchangeslinked' => array( 'Modificări_corelate' ),
- 'Movepage' => array( 'Mută_pagina' ),
- 'Blockme' => array( 'Blochează-mă' ),
- 'Booksources' => array( 'Referințe_în_cărți' ),
- 'Categories' => array( 'Categorii' ),
- 'Export' => array( 'Exportă' ),
- 'Version' => array( 'Versiune' ),
- 'Allmessages' => array( 'Toate_mesajele' ),
- 'Log' => array( 'Jurnal', 'Jurnale' ),
- 'Blockip' => array( 'Blochează_IP' ),
+ 'Revisiondelete' => array( 'Åžterge_revizie' ),
+ 'Search' => array( 'Căutare' ),
+ 'Shortpages' => array( 'Pagini_scurte' ),
+ 'Specialpages' => array( 'Pagini_speciale' ),
+ 'Statistics' => array( 'Statistici' ),
+ 'Tags' => array( 'Etichete' ),
+ 'Uncategorizedcategories' => array( 'Categorii_necategorizate' ),
+ 'Uncategorizedimages' => array( 'Imagini_necategorizate' ),
+ 'Uncategorizedpages' => array( 'Pagini_necategorizate' ),
+ 'Uncategorizedtemplates' => array( 'Formate_necategorizate' ),
'Undelete' => array( 'Restaurează' ),
- 'Import' => array( 'Importă' ),
- 'Lockdb' => array( 'Blochează_BD' ),
'Unlockdb' => array( 'Deblochează_BD' ),
- 'Userrights' => array( 'Drepturi_utilizator' ),
- 'MIMEsearch' => array( 'Căutare_MIME' ),
- 'FileDuplicateSearch' => array( 'Căutare_fișier_duplicat' ),
- 'Unwatchedpages' => array( 'Pagini_neurmărite' ),
- 'Listredirects' => array( 'Listă_redirectări' ),
- 'Revisiondelete' => array( 'Åžterge_revizie' ),
+ 'Unusedcategories' => array( 'Categorii_nefolosite' ),
+ 'Unusedimages' => array( 'Imagini_nefolosite' ),
'Unusedtemplates' => array( 'Formate_nefolosite' ),
- 'Randomredirect' => array( 'Redirectare_aleatorie' ),
- 'Mypage' => array( 'Pagina_mea' ),
- 'Mytalk' => array( 'Discuțiile_mele' ),
- 'Mycontributions' => array( 'Contribuțiile_mele' ),
- 'Listadmins' => array( 'Listă_administratori' ),
- 'Listbots' => array( 'Listă_roboți' ),
- 'Popularpages' => array( 'Pagini_populare' ),
- 'Search' => array( 'Căutare' ),
- 'Resetpass' => array( 'Resetează_parola' ),
+ 'Unwatchedpages' => array( 'Pagini_neurmărite' ),
+ 'Upload' => array( 'Încărcare' ),
+ 'Userlogin' => array( 'Autentificare' ),
+ 'Userlogout' => array( 'Ieșire' ),
+ 'Userrights' => array( 'Drepturi_utilizator' ),
+ 'Version' => array( 'Versiune' ),
+ 'Wantedcategories' => array( 'Categorii_dorite' ),
+ 'Wantedfiles' => array( 'Fișiere_dorite' ),
+ 'Wantedpages' => array( 'Pagini_dorite', 'Legături_invalide' ),
+ 'Wantedtemplates' => array( 'Formate_dorite' ),
+ 'Watchlist' => array( 'Pagini_urmărite' ),
+ 'Whatlinkshere' => array( 'Ce_se_leagă_aici' ),
'Withoutinterwiki' => array( 'Fără_legături_interwiki' ),
- 'MergeHistory' => array( 'Istoria_combinărilor' ),
- 'Filepath' => array( 'Cale_fișier' ),
- 'Invalidateemail' => array( 'Invalidează_email' ),
- 'Blankpage' => array( 'Pagină_goală' ),
- 'LinkSearch' => array( 'Căutare_legături' ),
- 'DeletedContributions' => array( 'Contibuții_șterse' ),
- 'Tags' => array( 'Etichete' ),
- 'Activeusers' => array( 'Utilizatori_activi' ),
);
$datePreferences = false;
@@ -327,8 +328,8 @@ pe titlul secțiunii (JavaScript)',
'tog-shownumberswatching' => 'Arată numărul utilizatorilor care urmăresc',
'tog-oldsig' => 'Semnătură actuală:',
'tog-fancysig' => 'Tratează semnătura ca wikitext (fără o legătură automată)',
-'tog-externaleditor' => 'Utilizează, în mod implicit, un editor extern (Doar pentru experți; necesită setări speciale pe calculatorul dumneavoastră. [http://www.mediawiki.org/wiki/Manual:External_editors Mai multe informații.])',
-'tog-externaldiff' => 'Utilizează, în mod implicit, un program extern pentru diferențele între versiuni (Doar pentru experți; necesită setări speciale pe calculatorul dumneavoastră. [http://www.mediawiki.org/wiki/Manual:External_editors Mai multe informații.])',
+'tog-externaleditor' => 'Utilizează, în mod implicit, un editor extern (Doar pentru experți; necesită setări speciale pe calculatorul dumneavoastră. [//www.mediawiki.org/wiki/Manual:External_editors Mai multe informații.])',
+'tog-externaldiff' => 'Utilizează, în mod implicit, un program extern pentru diferențele între versiuni (Doar pentru experți; necesită setări speciale pe calculatorul dumneavoastră. [//www.mediawiki.org/wiki/Manual:External_editors Mai multe informații.])',
'tog-showjumplinks' => 'Activează legăturile de accesibilitate „sari laâ€',
'tog-uselivepreview' => 'Folosește previzualizarea în timp real (JavaScript) (experimental)',
'tog-forceeditsummary' => 'Avertizează-mă când uit să descriu modificările',
@@ -342,7 +343,7 @@ pe titlul secțiunii (JavaScript)',
'tog-ccmeonemails' => 'Doresc să primesc o copie a mesajelor e-mail pe care le trimit',
'tog-diffonly' => 'Nu arăta conținutul paginii sub dif',
'tog-showhiddencats' => 'Arată categoriile ascunse',
-'tog-noconvertlink' => 'Dezactivați conversia titlurilor',
+'tog-noconvertlink' => 'Dezactivează conversia titlurilor',
'tog-norollbackdiff' => 'Nu arăta diferența după efectuarea unei reveniri',
'underline-always' => 'ÃŽntotdeauna',
@@ -425,15 +426,9 @@ pe titlul secțiunii (JavaScript)',
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Pagini indexate',
'noindex-category' => 'Pagini neindexate',
+'broken-file-category' => 'Pagini cu legături invalide către fișiere',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''Programul Wiki a fost instalat cu succes.'''",
-'mainpagedocfooter' => 'Consultați [http://meta.wikimedia.org/wiki/Help:Contents Ghidul utilizatorului (en)] pentru informații despre utilizarea software-ului wiki.
-
-== Primii pași ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista parametrilor configurabili (en)]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Întrebări frecvente despre MediaWiki (en)]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista de discuții a MediaWiki (en)]',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Despre',
'article' => 'Articol',
@@ -485,10 +480,10 @@ pe titlul secțiunii (JavaScript)',
'history' => 'Istoricul paginii',
'history_short' => 'Istoric',
'updatedmarker' => 'încărcat de la ultima mea vizită',
-'info_short' => 'Informații',
'printableversion' => 'Versiune de tipărit',
'permalink' => 'Legătură permanentă',
'print' => 'Tipărire',
+'view' => 'Lectură',
'edit' => 'Modificare',
'create' => 'Creare',
'editthispage' => 'Modificați pagina',
@@ -496,6 +491,7 @@ pe titlul secțiunii (JavaScript)',
'delete' => 'Ștergere',
'deletethispage' => 'Șterge pagina',
'undelete_short' => 'Recuperarea {{PLURAL:$1|unei modificări|a $1 modificări|a $1 de modificări}}',
+'viewdeleted_short' => 'Vedeți {{PLURAL:$1|o modificare ștearsă|$1 (de) modificări șterse}}',
'protect' => 'Protejare',
'protect_change' => 'schimbă protecția',
'protectthispage' => 'Protejați această pagină',
@@ -579,6 +575,8 @@ $1',
'toc' => 'Cuprins',
'showtoc' => 'arată',
'hidetoc' => 'ascunde',
+'collapsible-collapse' => 'Restrânge',
+'collapsible-expand' => 'Extinde',
'thisisdeleted' => 'Vizualizare sau recuperare $1?',
'viewdeleted' => 'Vizualizează $1?',
'restorelink' => '{{PLURAL:$1|o modificare ștearsă|$1 modificări șterse|$1 de modificări șterse}}',
@@ -590,6 +588,8 @@ $1',
'page-rss-feed' => '„$1†Abonare RSS',
'page-atom-feed' => '„$1†Abonare Atom',
'red-link-title' => '$1 (pagină inexistentă)',
+'sort-descending' => 'Sortare descendentă',
+'sort-ascending' => 'Sortare ascendentă',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Pagină',
@@ -675,12 +675,15 @@ Vă rugăm să încercați din nou în câteva minute.',
'protectedpagetext' => 'Această pagină este protejată împotriva modificărilor.',
'viewsourcetext' => 'Se poate vizualiza și copia conținutul acestei pagini:',
'protectedinterface' => 'Această pagină asigură textul interfeței pentru software și este protejată pentru a preveni abuzurile.',
-'editinginterface' => "'''Avertizare''': Editezi o pagină care este folosită pentru a furniza textul interfeței pentru software. Modificările aduse acestei pagini vor afecta aspectul interfeței utilizatorului pentru alți utilizatori. Pentru traduceri, considerați utilizarea [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], proiectul MediaWiki de localizare.",
+'editinginterface' => "'''Avertizare''': Modificați o pagină care este folosită pentru a furniza textul interfeței software.
+Modificările aduse acestei pagini vor afecta aspectul interfeței pentru alți utilizatori.
+Pentru traduceri, considerați utilizarea [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], proiectul MediaWiki de localizare.",
'sqlhidden' => '(interogare SQL ascunsă)',
'cascadeprotected' => 'Această pagină a fost protejată la scriere deoarece este inclusă în {{PLURAL:$1|următoarea pagină|următoarele pagini}}, care {{PLURAL:$1|este protejată|sunt protejate}} în cascadă:
$2',
'namespaceprotected' => "Nu ai permisiunea de a edita pagini în spațiul de nume '''$1'''.",
-'customcssjsprotected' => 'Nu aveți permisiunea să editați această pagină, deoarece conține datele private ale unui alt utilizator.',
+'customcssprotected' => 'Nu aveți permisiunea de a modifica această pagină CSS, deoarece conține setările personale ale altui utilizator.',
+'customjsprotected' => 'Nu aveți permisiunea de a modifica această pagină JavaScript, deoarece conține setările personale ale altui utilizator.',
'ns-specialprotected' => 'Paginile din spațiul de nume {{ns:special}} nu pot fi editate.',
'titleprotected' => "Acest titlu a fos protejat la creare de [[User:$1|$1]].
Motivul invocat este ''$2''.",
@@ -715,6 +718,7 @@ Contul dumneavoatră a fost creat. Nu uitați să vă personalizați [[Special:P
'createaccount' => 'Creare cont',
'gotaccount' => "Aveți deja un cont de utilizator? '''$1'''.",
'gotaccountlink' => 'Autentificați-vă',
+'userlogin-resetlink' => 'Ați uitat datele de autentificare?',
'createaccountmail' => 'după e-mail',
'createaccountreason' => 'Motiv:',
'badretype' => 'Parolele pe care le-ați introdus diferă.',
@@ -724,13 +728,16 @@ Vă rugăm să alegeți un alt nume.',
'createaccounterror' => 'Nu pot crea contul: $1',
'nocookiesnew' => 'Contul a fost creat, dar dvs. nu sunteți autentificat(ă). {{SITENAME}} folosește cookie-uri pentru a reține utilizatorii autentificați. Browser-ul dvs. are modulele cookie dezactivate (disabled). Vă rugăm să le activați și să vă reautentificați folosind noul nume de utilizator și noua parolă.',
'nocookieslogin' => '{{SITENAME}} folosește module cookie pentru a autentifica utilizatorii. Browser-ul dvs. are cookie-urile dezactivate. Vă rugăm să le activați și să incercați din nou.',
+'nocookiesfornew' => 'Contul de utilizator nu a fost creat, deoarece nu am putut confirma sursa.
+Asigurați-vă că aveți cookie-urile activate, reîncărcați pagina și încercați din nou.',
'noname' => 'Numele de utilizator pe care l-ai specificat este invalid.',
'loginsuccesstitle' => 'Autentificare reușită',
'loginsuccess' => "'''AÈ›i fost autentificat la {{SITENAME}} ca „$1â€.'''",
'nosuchuser' => 'Nu există nici un utilizator cu numele „$1â€.
Numele de utilizatori sunt sensibile la majuscule.
Verifică dacă ai scris corect sau [[Special:UserLogin/signup|creează un nou cont de utilizator]].',
-'nosuchusershort' => 'Nu este nici un utilizator cu numele „<nowiki>$1</nowiki>â€. VerificaÈ›i dacă aÈ›i scris corect.',
+'nosuchusershort' => 'Nu există niciun utilizator cu numele „$1â€.
+Verificați ortografierea.',
'nouserspecified' => 'Trebuie să specificați un nume de utilizator.',
'login-userblocked' => 'Acest utilizator este blocat. Autentificarea nu este permisă.',
'wrongpassword' => 'Parola pe care ați introdus-o este incorectă. Vă rugăm să încercați din nou.',
@@ -772,13 +779,14 @@ Ignorați acest mesaj dacă crearea contului s-a produs în urma unei greșeli.'
'usernamehasherror' => 'Numele de utilizator nu poate conține caractere diez (#)',
'login-throttled' => 'Ați avut prea multe încercări de a vă autentifica.
Vă rugăm să așteptați până să mai încercați.',
+'login-abort-generic' => 'Procesul de autentificare a eșuat și a fost abandonat',
'loginlanguagelabel' => 'Limba: $1',
'suspicious-userlogout' => 'Cererea dumneavoastră de a închide sesiunea a fost refuzată întrucât pare că a fost trimisă printr-o eroare a navigatorului sau de un proxy memorat în cache.',
# E-mail sending
'php-mail-error-unknown' => 'Eroare necunoscută în funcția PHP mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Modifică parola',
'resetpass_announce' => 'Sunteți autentificat cu un cod temporar trimis pe e-mail. Pentru a termina acțiunea de autentificare, trebuie să setați o parolă nouă aici:',
'resetpass_text' => '<!-- Adăugați text aici -->',
@@ -796,6 +804,36 @@ Vă rugăm să așteptați până să mai încercați.',
Este posibil să fi reușit deja schimbarea parolei sau să fi cerut o parolă temporară nouă.',
'resetpass-temp-password' => 'Parolă temporară:',
+# Special:PasswordReset
+'passwordreset' => 'Resetare parolă',
+'passwordreset-text' => 'Completați acest formular pentru a primi un e-mail cu datele contului dumneavoastră.',
+'passwordreset-legend' => 'Resetare parolă',
+'passwordreset-disabled' => 'Resetarea parolei a fost dezactivată pe acest wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1| | Introduceți mai jos o parte din informații}}',
+'passwordreset-username' => 'Nume de utilizator:',
+'passwordreset-domain' => 'Domeniu:',
+'passwordreset-email' => 'Adresă de e-mail:',
+'passwordreset-emailtitle' => 'Detalii despre cont pe {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Cineva (probabil dumneavoastră, de la adresa IP $1) a cerut reamintirea detaliilor
+contului dumneavoastră pe {{SITENAME}} ($4). {{PLURAL:$3|Următorul cont este asociat|Următoarele conturi sunt asociate}}
+cu această adresă de e-mail:
+
+$2
+
+{{PLURAL:$3|Această parolă temporară va|Aceste parole temporare vor}} expira {{PLURAL:$5|într-o zi|în $5 zile}}.
+Ar trebui să vă autentificați și să schimbați parola acum. Dacă altcineva a făcut această cerere
+sau dacă v-ați reamintit parola inițială și nu mai doriți să o schimbați,
+puteți ignora acest mesaj, continuând să utilizați vechea parolă.',
+'passwordreset-emailtext-user' => 'Utilizatorul $1 de pe {{SITENAME}} a solicitat o reamintire a detaliilor contului dumneavoastră pentru {{SITENAME}} ($4). Următorul utilizator are {{PLURAL:$3|contul asociat|conturile asociate}} cu această adresă de e-mail:
+
+$2
+
+{{PLURAL:$3|Această parolă temporară va|Aceste parole temporare vor}} expira {{PLURAL:$5|într-o zi|în $5 zile}}.
+Ar trebui să vă autentificați și să alegeți acum o nouă parolă. Dacă altcineva a făcut această solicitare, ori dacă v-ați reamintit parola originală și nu mai doriți modificarea ei, puteți ignora acest mesaj, continuând cu vechea parolă.',
+'passwordreset-emailelement' => 'Nume de utilizator: $1
+Parolă temporară: $2',
+'passwordreset-emailsent' => 'A fost trimis un e-mail de reamintire.',
+
# Edit page toolbar
'bold_sample' => 'Text aldin',
'bold_tip' => 'Text aldin',
@@ -807,8 +845,6 @@ Este posibil să fi reușit deja schimbarea parolei sau să fi cerut o parolă t
'extlink_tip' => 'Legătură externă (nu uitați prefixul http://)',
'headline_sample' => 'Text de titlu',
'headline_tip' => 'Titlu de nivel 2',
-'math_sample' => 'Introduceți formula aici',
-'math_tip' => 'Formulă matematică (LaTeX)',
'nowiki_sample' => 'Introduceți text neformatat aici',
'nowiki_tip' => 'Ignoră formatarea wiki',
'image_sample' => 'Exemplu.jpg',
@@ -893,7 +929,8 @@ sau puteți [{{fullurl:{{FULLPAGENAME}}|action=edit}} crea această pagină]</sp
'noarticletext-nopermission' => 'Actualmente, această pagină este lipsită de conținut.
Puteți [[Special:Search/{{PAGENAME}}|căuta acest titlu]] în alte pagini
sau puteți <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} căuta înregistrări în jurnale]</span>.',
-'userpage-userdoesnotexist' => 'Contul de utilizator "$1" nu este înregistrat. Verificați dacă doriți să creați/modificați această pagină.',
+'userpage-userdoesnotexist' => 'Contul de utilizator „<nowiki>$1</nowiki>†nu este înregistrat.
+Asigurați-vă că doriți să creați/modificați această pagină.',
'userpage-userdoesnotexist-view' => 'Contul de utilizator „$1†nu este înregistrat.',
'blocked-notice-logextract' => 'Acest utilizator este momentan blocat.
Ultima intrare în jurnalul blocărilor este afișată mai jos pentru referință:',
@@ -930,6 +967,7 @@ Dacă tot nu funcționează, încercați să [[Special:UserLogout|închideți se
'token_suffix_mismatch' => "'''Modificarea ta a fost refuzată pentru că clientul tău a deformat caracterele de punctuatie în modificarea semnului.
Modificarea a fost respinsă pentru a preveni deformarea textului paginii.
Acest fapt se poate întâmpla atunci când folosești un serviciu proxy anonim.'''",
+'edit_form_incomplete' => "'''Unele părți ale formularului de modificare nu au ajuns la server; verificați dacă modificările dumneavoastră sunt intacte și reîncercați.'''",
'editing' => 'modificare $1',
'editingsection' => 'modificare $1 (secțiune)',
'editingcomment' => 'Modificare $1 (secțiune nouă)',
@@ -1163,7 +1201,7 @@ Nu ai acces asupra lui.',
# Suppression log
'suppressionlog' => 'Înlătură jurnalul',
'suppressionlogtext' => 'Mai jos este afișată o listă a ștergerilor și a blocărilor care implică conținutul ascuns de administratori.
-Vezi [[Special:IPBlockList|adresele IP blocate]] pentru o listă a interzicerilor operaționale sau a blocărilor.',
+Vedeți [[Special:BlockList|adresele IP blocate]] pentru o listă a interzicerilor operaționale sau a blocărilor.',
# History merging
'mergehistory' => 'Unește istoricul paginilor',
@@ -1273,12 +1311,13 @@ Folosirea linkurilor de navigare va reseta această coloană.',
'searchdisabled' => '<p>Ne pare rău! Căutarea după text a fost dezactivată temporar, din motive de performanță. Între timp puteți folosi căutarea prin Google mai jos, însă aceasta poate să dea rezultate învechite.</p>',
# Quickbar
-'qbsettings' => 'Setări pentru bara rapidă',
-'qbsettings-none' => 'Fără',
-'qbsettings-fixedleft' => 'Fixă, în stânga',
-'qbsettings-fixedright' => 'Fixă, în dreapta',
-'qbsettings-floatingleft' => 'Liberă',
-'qbsettings-floatingright' => 'Plutire la dreapta',
+'qbsettings' => 'Setări pentru bara rapidă',
+'qbsettings-none' => 'Fără',
+'qbsettings-fixedleft' => 'Fixă, în stânga',
+'qbsettings-fixedright' => 'Fixă, în dreapta',
+'qbsettings-floatingleft' => 'Liberă',
+'qbsettings-floatingright' => 'Plutire la dreapta',
+'qbsettings-directionality' => 'Fixat, în funcție de direcția în care se face scrierea în limba dumneavoastră',
# Preferences page
'preferences' => 'Preferințe',
@@ -1289,9 +1328,10 @@ Folosirea linkurilor de navigare va reseta această coloană.',
'changepassword' => 'Schimbă parola',
'prefs-skin' => 'Aspect',
'skin-preview' => 'Previzualizare',
-'prefs-math' => 'Aspect formule',
'datedefault' => 'Nici o preferință',
+'prefs-beta' => 'Opțiuni beta',
'prefs-datetime' => 'Data și ora',
+'prefs-labs' => 'OpÈ›iuni „labsâ€',
'prefs-personal' => 'Informații personale',
'prefs-rc' => 'Schimbări recente',
'prefs-watchlist' => 'Listă de urmărire',
@@ -1313,8 +1353,6 @@ Folosirea linkurilor de navigare va reseta această coloană.',
'columns' => 'Coloane:',
'searchresultshead' => 'Parametri căutare',
'resultsperpage' => 'Numărul de rezultate per pagină',
-'contextlines' => 'Numărul de linii per rezultat',
-'contextchars' => 'Numărul de caractere per linie',
'stub-threshold' => 'Valoarea minimă pentru un <a href="#" class="stub">ciot</a> (octeți):',
'stub-threshold-disabled' => 'Dezactivat',
'recentchangesdays' => 'Numărul de zile afișate în schimbări recente:',
@@ -1327,7 +1365,7 @@ Aici se află o combinație generată întâmplător pe care o puteți folosi: $
'savedprefs' => 'Preferințele dumneavoastră au fost salvate.',
'timezonelegend' => 'Fus orar:',
'localtime' => 'Ora locală:',
-'timezoneuseserverdefault' => 'Folosește ora server-ului',
+'timezoneuseserverdefault' => 'Folosește ora implicită a wikiului ($1)',
'timezoneuseoffset' => 'Altul (specifică diferența)',
'timezoneoffset' => 'Diferența¹:',
'servertime' => 'Ora serverului:',
@@ -1354,7 +1392,7 @@ Aici se află o combinație generată întâmplător pe care o puteți folosi: $
'prefs-reset-intro' => 'Poți folosi această pagină pentru a reseta preferințele la valorile implicite.
Acțiunea nu este reversibilă.',
'prefs-emailconfirm-label' => 'Confirmare e-mail:',
-'prefs-textboxsize' => 'Mărimea căsuței de modificare',
+'prefs-textboxsize' => 'Mărime căsuță de modificare',
'youremail' => 'Adresa de e-mail:',
'username' => 'Nume de utilizator:',
'uid' => 'ID utilizator:',
@@ -1377,7 +1415,8 @@ Această informație va fi publică.',
'email' => 'E-mail',
'prefs-help-realname' => 'Numele real este opțional.
Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.',
-'prefs-help-email' => '*Adresa de e-mail (opțional): Permite altor utilizatori să vă contacteze prin e-mail via {{SITENAME}}, fără a vă divulga identitatea. De asemenea, permite recuperarea parolei în cazul în care o uitați.',
+'prefs-help-email' => 'Adresa de e-mail este opțională, dar este necesară pentru recuperarea parolei în cazul în care o uitați.',
+'prefs-help-email-others' => 'Puteți de asemenea permite altora să vă contacteze prin intermediul paginii dumneavoastră de utilizator fără a vă divulga identitatea.',
'prefs-help-email-required' => 'Adresa de e-mail este necesară.',
'prefs-info' => 'Informații de bază',
'prefs-i18n' => 'Internaționalizare',
@@ -1488,7 +1527,7 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
'right-editusercssjs' => 'Modifică fișierele CSS și JS ale altor utilizatori',
'right-editusercss' => 'Modifică fișierele CSS ale altor utilizatori',
'right-edituserjs' => 'Modifică fișierele JS ale altor utilizatori',
-'right-rollback' => 'Revocarea rapidă a editărilor ultimului utilizator care a modificat o pagină particulară',
+'right-rollback' => 'Revocarea rapidă a modificărilor ultimului utilizator care a modificat o pagină particulară',
'right-markbotedits' => 'Marchează revenirea ca modificare efectuată de robot',
'right-noratelimit' => 'Neafectat de limitele raportului',
'right-import' => 'Importă pagini de la alte wiki',
@@ -1502,15 +1541,15 @@ Dacă decideți furnizarea sa, acesta va fi folosit pentru a vă atribui munca.'
'right-userrights' => 'Modifică toate permisiunile de utilizator',
'right-userrights-interwiki' => 'Modifică permisiunile de utilizator pentru utilizatorii de pe alte wiki',
'right-siteadmin' => 'Blochează și deblochează baza de date',
-'right-reset-passwords' => 'Resetarea parolelor altor utilizatori',
'right-override-export-depth' => 'Exportă inclusiv paginile legate până la o adâncime de 5',
'right-sendemail' => 'Trimite e-mail altor utilizatori',
# User rights log
-'rightslog' => 'Jurnal permisiuni de utilizator',
-'rightslogtext' => 'Acest jurnal cuprinde modificările permisiunilor utilizatorilor.',
-'rightslogentry' => 'a schimbat pentru $1 apartenența la un grup de la $2 la $3',
-'rightsnone' => '(niciunul)',
+'rightslog' => 'Jurnal permisiuni de utilizator',
+'rightslogtext' => 'Acest jurnal cuprinde modificările permisiunilor utilizatorilor.',
+'rightslogentry' => 'a schimbat pentru $1 apartenența la un grup de la $2 la $3',
+'rightslogentry-autopromote' => 'a fost promovat în mod automat de la $2 la $3',
+'rightsnone' => '(niciunul)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'citiți această pagină',
@@ -1636,13 +1675,13 @@ Vezi [[Special:NewFiles|galeria fișierelor noi]] pentru o mai bună vizualizare
'minlength1' => 'Numele fișierelor trebuie să fie cel puțin o literă.',
'illegalfilename' => 'Numele fișierului "$1" conține caractere care nu sunt permise în titlurile paginilor. Vă rugăm redenumiți fișierul și încercați să îl încărcați din nou.',
'badfilename' => 'Numele fiÈ™ierului a fost schimbat în „$1â€.',
-'filetype-mime-mismatch' => 'Extensia nu se potrivește cu tipul MIME.',
+'filetype-mime-mismatch' => 'Extensia „.$1†nu se potrivește cu tipul MIME al fișierului ($2).',
'filetype-badmime' => 'Nu este permisă încărcarea de fișiere de tipul MIME "$1".',
'filetype-bad-ie-mime' => 'Nu puteți încărca acest fișier deoarece Internet Explorer îl va detecta ca și "$1", care este nepermis și poate fi un format periculos.',
'filetype-unwanted-type' => "'''\".\$1\"''' este un tip de fișier nedorit.
{{PLURAL:\$3|Tipul de fișier preferat este|Tipurile de fișiere preferate sunt}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' este un tip de fișier nepermis.
-{{PLURAL:\$3|Tip de fișier permis:|Tipuri de fișiere permise:}} \$2.",
+'filetype-banned-type' => "'''„.$1â€''' {{PLURAL:$4|este un tip de fiÈ™ier nepermis|sunt tipuri de fiÈ™ier nepermise}}.
+{{PLURAL:$3|Tip de fișier permis:|Tipuri de fișier permise:}} $2.",
'filetype-missing' => 'Fișierul nu are extensie (precum ".jpg").',
'empty-file' => 'Fișierul pe care l-ați trimis este gol.',
'file-too-large' => 'Fișierul pe care l-ați trimis este prea mare.',
@@ -1658,6 +1697,7 @@ Vezi [[Special:NewFiles|galeria fișierelor noi]] pentru o mai bună vizualizare
'large-file' => 'Este recomandat ca fișierele să nu fie mai mari de $1; acest fișier are $2.',
'largefileserver' => 'Fișierul este mai mare decât este configurat serverul să permită.',
'emptyfile' => 'Fișierul pe care l-ați încărcat pare a fi gol. Aceasta poate fi datorită unei greșeli în numele fișierului. Verificați dacă într-adevăr doriți să încărcați acest fișier.',
+'windows-nonascii-filename' => 'Acest wiki nu acceptă nume de fișiere care conțin caractere speciale.',
'fileexists' => "Un fișier cu același nume există deja, vă rugăm verificați '''<tt>[[:$1]]</tt>''' dacă nu sunteți sigur dacă doriți să îl modificați.
[[$1|thumb]]",
'filepageexists' => "Pagina cu descrierea fișierului a fost deja creată la '''<tt>[[:$1]]</tt>''', dar niciun fișier cu acest nume nu există în acest moment.
@@ -1692,6 +1732,8 @@ Mergeți înapoi și încărcați acest fișier sub un nume nou. [[File:$1|thumb
Vă rugăm să verificați setările din file_uploads.',
'uploadscripted' => 'Fișierul conține HTML sau cod script care poate fi interpretat în mod eronat de un browser.',
'uploadvirus' => 'Fișierul conține un virus! Detalii: $1',
+'uploadjava' => 'Fișierul de față este o arhivă ZIP care conține un fișier de clasă Java.
+Încărcarea fișierelor Java nu este permisă, întrucât pot evita restricțiile de securitate.',
'upload-source' => 'Fișier sursă',
'sourcefilename' => 'Numele fișierului sursă:',
'sourceurl' => 'URL sursă:',
@@ -1701,10 +1743,6 @@ Vă rugăm să verificați setările din file_uploads.',
'upload-options' => 'Opțiuni de încărcare',
'watchthisupload' => 'Urmărește acest fișier',
'filewasdeleted' => 'Un fișier cu acest nume a fost anterior încărcat și apoi șters. Ar trebui să verificați $1 înainte să îl încărcați din nou.',
-'upload-wasdeleted' => "'''Atenție: Sunteți pe cale să încarcați un fișier șters anterior.'''
-
-Vă rugăm să aveți în vedere dacă este utilă reîncărcarea acestuia.
-Jurnalul pentru această ștergere este disponibil aici:",
'filename-bad-prefix' => "Numele fișierului pe care îl încărcați începe cu '''\"\$1\"''', care este un nume non-descriptiv alocat automat în general de camerele digitale.
Vă rugăm, alegeți un nume mai descriptiv pentru fișerul dumneavoastră.",
'upload-success-subj' => 'Fișierul a fost trimis',
@@ -1729,12 +1767,29 @@ Dacă problema persistă, contactați un [[Special:ListUsers/sysop|administrator
'upload-unknown-size' => 'Mărime necunoscută',
'upload-http-error' => 'A avut loc o eroare HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'A intervenit o eroare în momentul deschiderii fișierului ZIP pentru verificări.',
+'zip-wrong-format' => 'Fișierul specificat nu era un fișier de tip ZIP.',
+'zip-bad' => 'Fișierul este un fișier corupt de tip ZIP, fiind imposibil de citit.
+Nu poate fi verificat în mod corespunzător în vederea securității.',
+'zip-unsupported' => 'Fișierul este unul de tip ZIP cu caracteristici neacceptate de MediaWiki.
+Nu poate fi verificat în mod corespunzător în vederea securității.',
+
+# Special:UploadStash
+'uploadstash' => 'Fișiere trimise în așteptare',
+'uploadstash-summary' => 'Această pagină oferă acces la fișierele care sunt încărcate (sau în curs de încărcare) dar nu sunt încă publicate pe wiki. Aceste fișiere nu sunt vizibile nimănui cu excepția celui care le-a încărcat.',
+'uploadstash-clear' => 'Șterge fișierele în așteptare',
+'uploadstash-nofiles' => 'Nu aveți fișiere în lista de așteptare.',
+'uploadstash-badtoken' => 'Execuția acestei acțiuni nu a reușit, probabil deoarece informațiile dumneavoastră de identificare au expirat. Încercați din nou.',
+'uploadstash-errclear' => 'Golirea fișierelor nu a reușit.',
+'uploadstash-refresh' => 'Reîmprospătează lista de fișiere',
+
# img_auth script messages
'img-auth-accessdenied' => 'Acces interzis',
'img-auth-nopathinfo' => 'PATH_INFO lipsește.
Serverul dumneavoastră nu a fost setat pentru a trece aceste informații.
S-ar putea să fie bazat pe CGI și să nu suporte img_auth.
-Vedeți http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Vedeți autorizarea imaginilor.]',
'img-auth-notindir' => 'Adresa cerută nu este în directorul pentru încărcări configurat.',
'img-auth-badtitle' => 'Nu s-a putut construi un titlu valid din "$1".',
'img-auth-nologinnWL' => 'Nu sunteți autentificat și "$1" nu este pe lista albă.',
@@ -1812,7 +1867,7 @@ Următoarea listă arată {{PLURAL:$1|prima legătură|primele $1 legături}} cÄ
O [[Special:WhatLinksHere/$2|listă completă]] este disponibilă.',
'nolinkstoimage' => 'Nici o pagină nu utilizează această imagine.',
'morelinkstoimage' => 'Vedeți [[Special:WhatLinksHere/$1|mai multe legături]] către acest fișier.',
-'redirectstofile' => '{{PLURAL:$1|Următorul fișier|Următoarele $1 fișiere}} redirecționează către acest fișier:',
+'linkstoimage-redirect' => '$1 (redirecționare de fișier) $2',
'duplicatesoffile' => '{{PLURAL:$1|Fișierul următor este duplicat|Următoarele $1 fișiere sunt duplicate}} ale acestui fișier ([[Special:FileDuplicateSearch/$2|mai multe detalii]]):',
'sharedupload' => 'Acest fișier provine de la $1 și poate fi folosit și de alte proiecte.',
'sharedupload-desc-there' => 'Fișierul acesta este de la $1 și poate fi folosit de alte proiecte.
@@ -1913,18 +1968,19 @@ Lista tipurilor MIME recunoscute de MediaWiki poate fi găsită la [http://svn.w
'statistics-users-active-desc' => 'Utilizatori care au efectuat o acțiune în {{PLURAL:$1|ultima zi|ultimele $1 zile}}',
'statistics-mostpopular' => 'Paginile cele mai vizualizate',
-'disambiguations' => 'Pagini de dezambiguizare',
+'disambiguations' => 'Pagini care trimit către pagini de dezambiguizare',
'disambiguationspage' => 'Template:Dezambiguizare',
'disambiguations-text' => "Paginile următoare conțin legături către o '''pagină de dezambiguizare'''.
În locul acesteia ar trebui să conțină legături către un articol.<br />
O pagină este considerată o pagină de dezambiguizare dacă folosește formate care apar la [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Redirecționări duble',
-'doubleredirectstext' => 'Această listă conține pagini care redirecționează la alte pagini de redirecționare.
+'doubleredirects' => 'Redirecționări duble',
+'doubleredirectstext' => 'Această listă conține pagini care redirecționează la alte pagini de redirecționare.
Fiecare rând conține legături la primele două redirecționări, precum și ținta celei de-a doua redirecționări, care este de obicei pagina țintă "reală", către care ar trebui să redirecționeze prima pagină.
Intrările <del>tăiate</del> au fost rezolvate.',
-'double-redirect-fixed-move' => '[[$1]] a fost mutat, acum este un redirect către [[$2]]',
-'double-redirect-fixer' => 'Corector de redirecționări',
+'double-redirect-fixed-move' => '[[$1]] a fost mutat, acum este un redirect către [[$2]]',
+'double-redirect-fixed-maintenance' => 'Reparat dubla redirecționare de la [[$1]] înspre [[$2]].',
+'double-redirect-fixer' => 'Corector de redirecționări',
'brokenredirects' => 'Redirecționări greșite',
'brokenredirectstext' => 'Următoarele redirecționări conduc spre articole inexistente:',
@@ -2001,6 +2057,7 @@ Vă rugăm să aveți în vedere faptul că alte saituri web pot avea o legătur
'pager-newer-n' => '{{PLURAL:$1|1 mai nou|$1 mai noi}}',
'pager-older-n' => '{{PLURAL:$1|1|$1}} mai vechi',
'suppress' => 'Oversight',
+'querypage-disabled' => 'Această pagină specială este dezactivată din motive de performanță.',
# Book sources
'booksources' => 'Surse de cărți',
@@ -2010,8 +2067,8 @@ Vă rugăm să aveți în vedere faptul că alte saituri web pot avea o legătur
'booksources-invalid-isbn' => 'Codul ISBN oferit nu este valid; verificați dacă a fost copiat corect de la sursa originală.',
# Special:Log
-'specialloguserlabel' => 'Utilizator:',
-'speciallogtitlelabel' => 'Titlu:',
+'specialloguserlabel' => 'Executant:',
+'speciallogtitlelabel' => 'Destinație (titlu sau utilizator):',
'log' => 'Jurnale',
'all-logs-page' => 'Toate jurnalele publice',
'alllogstext' => 'Afișare combinată a tuturor jurnalelor {{SITENAME}}.
@@ -2051,12 +2108,13 @@ Vedeți și [[Special:WantedCategories|categoriile dorite]].',
'sp-deletedcontributions-contribs' => 'contribuții',
# Special:LinkSearch
-'linksearch' => 'Legături externe',
-'linksearch-pat' => 'Model de căutare:',
+'linksearch' => 'Căutare legături externe',
+'linksearch-pat' => 'De căutat:',
'linksearch-ns' => 'Spațiu de nume:',
'linksearch-ok' => 'Caută',
-'linksearch-text' => 'Pot fi folosite metacaractere precum "*.wikipedia.org".<br />
-Protocoale suportate: <tt>$1</tt>',
+'linksearch-text' => 'Pot fi folosite metacaractere precum „*.wikipedia.orgâ€.
+Necesită cel puÈ›in un domeniu de nivel superior, cum ar fi „*.orgâ€.<br />
+Protocoale suportate: <tt>$1</tt> (nu adăugați niciunul dintre acestea în câmpul de căutare).',
'linksearch-line' => '$1 este legat de $2',
'linksearch-error' => 'Metacaracterele pot să apară doar la începutul hostname-ului.',
@@ -2117,6 +2175,10 @@ Adresa de e-mail introdusă de tine în [[Special:Preferences|preferințele de u
'noemailtext' => 'Utilizatorul nu a specificat o adresă validă de e-mail.',
'nowikiemailtitle' => 'Nu este permis e-mail-ul',
'nowikiemailtext' => 'Acest utilizator a ales să nu primească e-mail-uri de la alți utilizatori.',
+'emailnotarget' => 'Destinatarul este un nume de utilizator inexistent sau invalid.',
+'emailtarget' => 'Introduceți numele de utilizator al destinatarului',
+'emailusername' => 'Nume de utilizator:',
+'emailusernamesubmit' => 'Trimite',
'email-legend' => 'Trimite e-mail altui utilizator de la {{SITENAME}}',
'emailfrom' => 'De la:',
'emailto' => 'Către:',
@@ -2141,10 +2203,10 @@ Adresa de e-mail introdusă de tine în [[Special:Preferences|preferințele de u
'watchlistanontext' => 'Te rugăm să $1 pentru a vizualiza sau edita itemii de pe lista ta de urmărire.',
'watchnologin' => 'Nu sunteți autentificat',
'watchnologintext' => 'Trebuie să fiți [[Special:UserLogin|autentificat]] pentru a vă modifica lista de pagini urmărite.',
-'addedwatch' => 'Adăugată la lista de pagini urmărite',
+'addwatch' => 'Adăugă la lista de pagini urmărite',
'addedwatchtext' => 'Pagina „[[:$1]]†a fost adăugată la lista dumneavoastră de [[Special:Watchlist|pagini urmărite]].
Modificările viitoare efectuate asupra acestei pagini dar și asupra paginii de discuție asociată vor fi listate acolo și, în plus, ele vor apărea cu <b>caractere îngroșate</b> în pagina cu [[Special:RecentChanges|schimbări recente]] pentru evidențiere.',
-'removedwatch' => 'Eliminată din lista de pagini urmărite',
+'removewatch' => 'Elimină din lista de pagini urmărite',
'removedwatchtext' => 'Pagina „[[:$1]]†a fost eliminată din [[Special:Watchlist|lista de pagini urmărite]].',
'watch' => 'Urmărire',
'watchthispage' => 'Urmărește pagina',
@@ -2165,8 +2227,9 @@ Modificările viitoare efectuate asupra acestei pagini dar și asupra paginii de
'watchlist-options' => 'Opțiuni listă de pagini urmărite',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Se urmărește...',
-'unwatching' => 'Așteptați...',
+'watching' => 'Se urmărește...',
+'unwatching' => 'Așteptați...',
+'watcherrortext' => 'A apărut o eroare în timp ce se modificau setările listei de pagini urmărite pentru „$1â€.',
'enotif_mailer' => 'Sistemul de notificare {{SITENAME}}',
'enotif_reset' => 'Marchează toate paginile vizitate',
@@ -2197,16 +2260,16 @@ PuteÈ›i de asemenea reseta notificările pentru toate pagini pe care le urmăriÈ
--
Pentru a modifica setările notificării prin e-mail, vizitați
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Pentru a modifica setările listei de pagini urmărite, vizitați
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Pentru a nu mai urmări pagina, vizitați
$UNWATCHURL
Asistență și suport:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Șterge pagina',
@@ -2221,7 +2284,8 @@ Asistență și suport:
'confirmdeletetext' => 'Sunteți pe cale să ștergeți permanent o pagină sau imagine din baza de date, împreună cu istoria asociată acesteia. Vă rugăm să confirmați alegerea făcută de dvs., faptul că înțelegeți consecințele acestei acțiuni și faptul că o faceți în conformitate cu [[{{MediaWiki:Policy-url}}|Politica oficială]].',
'actioncomplete' => 'Acțiune completă',
'actionfailed' => 'Acțiunea a eșuat',
-'deletedtext' => 'Pagina "<nowiki>$1</nowiki>" a fost ștearsă. Vedeți $2 pentru o listă a elementelor șterse recent.',
+'deletedtext' => 'Pagina „$1†a fost ștearsă.
+Accesați $2 pentru o listă cu elementele recent șterse.',
'deletedarticle' => 'a șters "[[$1]]"',
'suppressedarticle' => 'eliminate "[[$1]]"',
'dellogpage' => 'Jurnal ștergeri',
@@ -2277,7 +2341,7 @@ Consultați [[Special:ProtectedPages|indexul paginilor protejate]] pentru o list
'protect_expiry_invalid' => 'Timpul de expirare nu este valid.',
'protect_expiry_old' => 'Timpul de expirare este în trecut.',
'protect-unchain-permissions' => 'Deblochează mai multe opțiuni de protejare',
-'protect-text' => "Poți vizualiza sau modifica nivelul de protecție pentru pagina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Puteți vizualiza sau modifica nivelul de protecție al paginii '''$1'''.",
'protect-locked-blocked' => "Nu poți schimba nivelurile de protecție fiind blocat.
Iată configurația curentă a paginii '''$1''':",
'protect-locked-dblock' => "Nivelurile de protecție nu pot fi aplicate deoarece baza de date este închisă.
@@ -2331,7 +2395,8 @@ Puteți schimba nivelul de protejare al acestei pagini, dar asta nu va afecta pr
'viewdeletedpage' => 'Vezi paginile șterse',
'undeletepagetext' => '{{PLURAL:$1|Următoarea pagină a fost ștearsă, dar încă se află în arhivă și poate fi recuperată|Următoarele $1 pagini au fost șterse, dar încă se află în arhivă și pot fi recuperate|Următoarele $1 de pagini au fost șterse, dar încă se află în arhivă și pot fi recuperate}}. Arhiva ar putea fi ștearsă periodic.',
'undelete-fieldset-title' => 'Recuperează versiuni',
-'undeleteextrahelp' => "Pentru a recupera întreaga pagină lăsați toate căsuțele nebifate și apăsați butonul '''''Recuperează'''''. Pentru a realiza o recuperare selectivă bifați versiunile pe care doriți să le recuperați și apăsați butonul '''''Recuperează'''''. Butonul '''''Resetează''''' va șterge comentariul și toate bifările.",
+'undeleteextrahelp' => "Pentru a restaura întregul istoric al paginii lăsați toate căsuțele nebifate și apăsați butonul '''''{{int:undeletebtn}}'''''.
+Pentru a realiza o recuperare selectivă bifați versiunile pe care doriți să le recuperați și apăsați butonul '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|versiune arhivată|versiuni arhivate|de versiuni arhivate}}',
'undeletehistory' => 'Dacă recuperați pagina, toate versiunile asociate vor fi adăugate retroactiv în istorie. Dacă o pagină nouă cu același nume a fost creată de la momentul ștergerii acesteia, versiunile recuperate vor apărea în istoria paginii, iar versiunea curentă a paginii nu va fi înlocuită automat de către versiunea recuperată.',
'undeleterevdel' => 'Restaurarea unui revizii nu va fi efectuată dacă ea va apărea în capul listei de revizii parțial șterse.
@@ -2373,9 +2438,12 @@ $1',
'undelete-show-file-submit' => 'Da',
# Namespace form on various pages
-'namespace' => 'Spațiu de nume:',
-'invert' => 'Inversează selecția',
-'blanknamespace' => 'Articole',
+'namespace' => 'Spațiu de nume:',
+'invert' => 'Inversează selecția',
+'tooltip-invert' => 'Bifați această căsuță pentru a ascunde modificările efectuate asupra paginilor din spațiul de nume selectat (și din spațiile de nume asociate, dacă s-a bifat și această opțiune)',
+'namespace_association' => 'Spații de nume asociate',
+'tooltip-namespace_association' => 'Bifați această căsuță pentru a include și spațiul de nume destinat discuțiilor care este asociat cu spațiul de nume deja selectat',
+'blanknamespace' => 'Articole',
# Contributions
'contributions' => 'Contribuțiile utilizatorului',
@@ -2425,13 +2493,15 @@ Iată aici ultima înregistrare relevantă din jurnalul blocărilor:',
'whatlinkshere-filters' => 'Filtre',
# Block/unblock
+'autoblockid' => 'Autoblocare #$1',
+'block' => 'Blocare utilizator',
+'unblock' => 'Deblocare utilizator',
'blockip' => 'Blocare utilizator',
'blockip-title' => 'Blocare utilizator',
'blockip-legend' => 'Blocare utilizator/adresă IP',
'blockiptext' => "Pentru a bloca un utilizator completați rubricile de mai jos.<br />
'''Respectați [[{{MediaWiki:Policy-url}}|politica de blocare]].'''<br />
Precizați motivul blocării; de exemplu indicați paginile vandalizate de acest utilizator.",
-'ipaddress' => 'Adresă IP:',
'ipadressorusername' => 'Adresă IP sau nume de utilizator',
'ipbexpiry' => 'Expiră',
'ipbreason' => 'Motiv:',
@@ -2444,7 +2514,7 @@ Precizați motivul blocării; de exemplu indicați paginile vandalizate de acest
** Tentative de intimidare
** Abuz utilizare conturi multiple
** Nume de utilizator inacceptabil',
-'ipbanononly' => 'Blochează doar utilizatorii anonimi',
+'ipb-hardblock' => 'Se interzice utilizatorilor autentificați să contribuie folosind această adresă IP',
'ipbcreateaccount' => 'Nu permite crearea de conturi',
'ipbemailban' => 'Nu permite utilizatorului să trimită e-mail',
'ipbenableautoblock' => 'Blochează automat ultima adresă IP folosită de acest utilizator și toate adresele de la care încearcă să editeze în viitor',
@@ -2455,12 +2525,15 @@ Precizați motivul blocării; de exemplu indicați paginile vandalizate de acest
'ipbotherreason' => 'Motiv diferit/adițional:',
'ipbhidename' => 'Ascunde numele de utilizator la editare și afișare',
'ipbwatchuser' => 'Urmărește pagina sa de utilizator și de discuții',
-'ipballowusertalk' => 'Permite acestui utilizator să-și modifice propria pagină de discuție cât timp este blocat',
+'ipb-disableusertalk' => 'Se interzice acestui utilizator modificarea propriei pagini de discuții în timpul blocării',
'ipb-change-block' => 'Reblochează utilizatorul cu acești parametri',
+'ipb-confirm' => 'Confirmare blocare',
'badipaddress' => 'Adresa IP este invalidă.',
'blockipsuccesssub' => 'Utilizatorul a fost blocat',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] a fost blocată.<br />
Vezi [[Special:IPBlockList|lista de adrese IP și conturi blocate]] pentru a revizui adresele blocate.',
+'ipb-blockingself' => 'Sunteți pe cale să vă autoblocați! Sunteți sigur că doriți să continuați?',
+'ipb-confirmhideuser' => 'Sunteți pe cale să blocați un utilizator cu funcția „ascunde utilizator†activată. Acest lucru va înlătura numele său de utilizator din toate listele și jurnalele. Sunteți sigur că vreți să continuați?',
'ipb-edit-dropdown' => 'Modifică motivele blocării',
'ipb-unblock-addr' => 'Deblochează utilizatorul $1',
'ipb-unblock' => 'Deblocați un nume de utilizator sau o adresă IP',
@@ -2470,17 +2543,23 @@ Vezi [[Special:IPBlockList|lista de adrese IP și conturi blocate]] pentru a rev
'unblockiptext' => 'Folosiți formularul de mai jos pentru a restaura permisiunea de scriere pentru adrese IP sau nume de utilizator blocate anterior.',
'ipusubmit' => 'Elimină blocarea',
'unblocked' => '[[User:$1|$1]] a fost deblocat',
+'unblocked-range' => '$1 a fost deblocat',
'unblocked-id' => 'Blocarea $1 a fost eliminată',
+'blocklist' => 'Utilizatori blocați',
'ipblocklist' => 'Utilizatori blocați',
'ipblocklist-legend' => 'Găsire utilizator blocat',
-'ipblocklist-username' => 'Nume de utilizator sau adresă IP:',
-'ipblocklist-sh-userblocks' => '$1 blocări de conturi',
-'ipblocklist-sh-tempblocks' => '$1 blocări temporare',
-'ipblocklist-sh-addressblocks' => '$1 blocări de adrese IP',
+'blocklist-userblocks' => 'Ascunde conturile blocate',
+'blocklist-tempblocks' => 'Ascunde blocările temporare',
+'blocklist-addressblocks' => 'Ascunde adresele IP blocate',
+'blocklist-timestamp' => 'Data și ora',
+'blocklist-target' => 'Utilizator/adresă IP',
+'blocklist-expiry' => 'Expiră la',
+'blocklist-by' => 'Administratorul care a efectuat blocarea',
+'blocklist-params' => 'Parametrii blocării',
+'blocklist-reason' => 'Motiv',
'ipblocklist-submit' => 'Caută',
'ipblocklist-localblock' => 'Blocare locală',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Altă blocare|Alte $1 blocări}}',
-'blocklistline' => '$1, $2 a blocat $3 ($4)',
'infiniteblock' => 'termen nelimitat',
'expiringblock' => 'expiră în $1 la $2',
'anononlyblock' => 'doar anonimi',
@@ -2503,7 +2582,7 @@ Jurnalul blocărilor este indicat mai jos:',
Jurnalul suprimărilor este indicat mai jos:',
'blocklogentry' => 'a blocat utilizatorul „[[$1]]†pe o perioadă de $2 $3',
'reblock-logentry' => 'a fost schimbată blocarea pentru [[$1]] cu data expirării la $2 $3',
-'blocklogtext' => 'Acest jurnal cuprinde acțiunile de blocare și deblocare. Adresele IP blocate automat nu sunt afișate. Vizitați [[Special:IPBlockList|lista de adrese blocate]] pentru o listă explicită a adreselor blocate în acest moment.',
+'blocklogtext' => 'Acest jurnal cuprinde acțiunile de blocare și deblocare. Adresele IP blocate automat nu sunt afișate. Vizitați [[Special:BlockList|lista de adrese blocate]] pentru o listă explicită a adreselor blocate în acest moment.',
'unblocklogentry' => 'a deblocat utilizatorul $1',
'block-log-flags-anononly' => 'doar utilizatorii anonimi',
'block-log-flags-nocreate' => 'crearea de conturi dezactivată',
@@ -2517,9 +2596,9 @@ Jurnalul suprimărilor este indicat mai jos:',
'ipb_expiry_temp' => 'Blocarea numelor de utilizator ascunse trebuie să fie permanentă.',
'ipb_hide_invalid' => 'Imposibil de a suprima acest cont; acesta poate avea prea multe modificări.',
'ipb_already_blocked' => '„$1†este deja blocat',
-'ipb-needreblock' => '== Deja blocat ==
-$1 este deja blocat. Vrei să schimbi parametrii?',
+'ipb-needreblock' => '$1 este deja blocat. Doriți să modificați parametrii?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Altă blocare|Alte blocări}}',
+'unblock-hideuser' => 'Nu puteți debloca acest utilizator, întrucât numele său de utilizator a fost ascuns.',
'ipb_cant_unblock' => 'Eroare: nu găsesc identificatorul $1. Probabil a fost deja deblocat.',
'ipb_blocked_as_range' => 'Eroare: Adresa IP $1 nu este blocată direct deci nu poate fi deblocată.
Face parte din area de blocare $2, care nu poate fi deblocată.',
@@ -2562,6 +2641,7 @@ Nu uitați să o [[Special:UnlockDB|deblocați]] la terminarea operațiilor admi
'lockfilenotwritable' => 'Fișierul bazei de date închise nu poate fi scris.
Pentru a închide sau deschide baza de date, acesta trebuie să poată fi scris de serverul web.',
'databasenotlocked' => 'Baza de date nu este blocată.',
+'lockedbyandtime' => '(de $1, pe $2, la $3 )',
# Move page
'move-page' => 'Mută $1',
@@ -2688,7 +2768,7 @@ Pentru a exporta, introduceți titlurile în căsuța de mai jos, unul pe linie,
'allmessagesdefault' => 'Textul standard',
'allmessagescurrent' => 'Textul curent',
'allmessagestext' => 'Aceasta este lista completă a mesajelor disponibile în domeniul MediaWiki.
-Vă rugăm să vizitați [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] și [http://translatewiki.net translatewiki.net] dacă vreți să contribuiți la localizarea programului MediaWiki generic.',
+Vă rugăm să vizitați [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] și [//translatewiki.net translatewiki.net] dacă vreți să contribuiți la localizarea programului MediaWiki generic.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nu poate fi folosit deoarece '''\$wgUseDatabaseMessages''' este închisă.",
'allmessages-filter-legend' => 'Filtru',
'allmessages-filter' => 'Filtru după statutul de modificare:',
@@ -2841,9 +2921,7 @@ Permite adăugarea unui motiv în descrierea modificărilor',
'print.css' => '/* CSS plasate aici vor afecta modul în care paginile vor fi imprimate */',
# Metadata
-'nodublincore' => 'Metadatele Dublin Core RDF sunt dezactivate pentru acest server.',
-'nocreativecommons' => 'Metadatele Creative Commons RDF dezactivate pentru acest server.',
-'notacceptable' => 'Serverul wiki nu poate oferi date într-un format pe care clientul tău să-l poată citi.',
+'notacceptable' => 'Serverul wiki nu poate oferi date într-un format pe care clientul tău să-l poată citi.',
# Attribution
'anonymous' => '{{PLURAL:$1|Utilizator anonim|Utilizatori anonimi}} ai {{SITENAME}}',
@@ -2866,12 +2944,17 @@ Permite adăugarea unui motiv în descrierea modificărilor',
'spam_blanking' => 'Toate reviziile conținând legături către $1, au eșuat',
# Info page
-'infosubtitle' => 'Informații pentru pagină',
-'numedits' => 'Număr de modificări (articole): $1',
-'numtalkedits' => 'Număr de modificări (pagina de discuții): $1',
-'numwatchers' => 'Număr de utilizatori care urmăresc: $1',
-'numauthors' => 'Număr de autori distincți (articole): $1',
-'numtalkauthors' => 'Număr de autori distincți (pagini de discuții): $1',
+'pageinfo-title' => 'InformaÈ›ii pentru „$1â€',
+'pageinfo-header-edits' => 'Modificări',
+'pageinfo-header-watchlist' => 'Listă de urmărire',
+'pageinfo-header-views' => 'Vizualizări',
+'pageinfo-subjectpage' => 'Pagină',
+'pageinfo-talkpage' => 'Pagină de discuții',
+'pageinfo-watchers' => 'Număr de utilizatori care urmăresc pagina',
+'pageinfo-edits' => 'Număr de modificări',
+'pageinfo-authors' => 'Număr de autori distincți',
+'pageinfo-views' => 'Număr de vizualizări',
+'pageinfo-viewsperedit' => 'Vizualizări per modificare',
# Skin names
'skinname-standard' => 'Clasic',
@@ -2884,25 +2967,6 @@ Permite adăugarea unui motiv în descrierea modificărilor',
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vector',
-# Math options
-'mw_math_png' => 'Întodeauna afișează PNG',
-'mw_math_simple' => 'HTML pentru formule simple, altfel PNG',
-'mw_math_html' => 'HTML dacă este posibil, altfel PNG',
-'mw_math_source' => 'Lasă ca TeX (pentru browser-ele text)',
-'mw_math_modern' => 'Recomandat pentru browser-ele moderne',
-'mw_math_mathml' => 'MathML dacă este posibil (experimental)',
-
-# Math errors
-'math_failure' => 'Nu s-a putut interpreta',
-'math_unknown_error' => 'eroare necunoscută',
-'math_unknown_function' => 'funcție necunoscută',
-'math_lexing_error' => 'eroare lexicală',
-'math_syntax_error' => 'eroare de sintaxă',
-'math_image_error' => 'Conversiune în PNG eșuată; verificați corectitudinea instalării sistemelor LaTex sau dvipng (sau dvips + gs + convert)',
-'math_bad_tmpdir' => 'Nu se poate crea sau nu se poate scrie în directorul temporar pentru formule matematice',
-'math_bad_output' => 'Nu se poate crea sau nu se poate scrie în directorul de ieșire pentru formule matematice',
-'math_notexvc' => 'Lipsește executabilul texvc; vezi math/README pentru configurare.',
-
# Patrolling
'markaspatrolleddiff' => 'Marchează pagina ca verificată',
'markaspatrolledtext' => 'Marchează această pagină ca verificată',
@@ -2938,23 +3002,26 @@ $1',
'nextdiff' => 'Diferența următoare →',
# Media information
-'mediawarning' => "'''Atenție''': Acest tip de fișier poate conține cod periculos.
+'mediawarning' => "'''Atenție''': Acest tip de fișier poate conține cod periculos.
Executându-l, sistemul dvs. poate fi compromis.",
-'imagemaxsize' => "Limita mărimii imaginilor:<br />''(pentru paginile de descriere)''",
-'thumbsize' => 'Dimensiunea miniaturii:',
-'widthheight' => '$1x$2',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagină|pagini}}',
-'file-info' => 'mărime fișier: $1, tip MIME: $2',
-'file-info-size' => '$1 × $2 pixeli, mărime fișier: $3, tip MIME: $4',
-'file-nohires' => '<small>Rezoluții mai mari nu sunt disponibile.</small>',
-'svg-long-desc' => 'fișier SVG, cu dimensiunea nominală de $1 × $2 pixeli, mărime fișier: $3',
-'show-big-image' => 'Mărește rezoluția imaginii',
-'show-big-image-thumb' => '<small>Mărimea acestei previzualizări: $1 × $2 pixeli</small>',
-'file-info-gif-looped' => 'în buclă',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|imagine|imagini}}',
-'file-info-png-looped' => 'în buclă',
-'file-info-png-repeat' => 'redat {{PLURAL:$1|o dată|de $1 ori}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|cadru|cadre}}',
+'imagemaxsize' => "Limita mărimii imaginilor:<br />''(pentru paginile de descriere)''",
+'thumbsize' => 'Dimensiunea miniaturii:',
+'widthheight' => '$1x$2',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pagină|pagini}}',
+'file-info' => 'mărime fișier: $1, tip MIME: $2',
+'file-info-size' => '$1 × $2 pixeli, mărime fișier: $3, tip MIME: $4',
+'file-info-size-pages' => '$1 × $2 pixeli, mărime fișier: $3, tip MIME: $4, $5 {{PLURAL:$5|pagină|pagini}}',
+'file-nohires' => '<small>Rezoluții mai mari nu sunt disponibile.</small>',
+'svg-long-desc' => 'fișier SVG, cu dimensiunea nominală de $1 × $2 pixeli, mărime fișier: $3',
+'show-big-image' => 'Mărește rezoluția imaginii',
+'show-big-image-preview' => '<small>Mărimea acestei previzualizări: $1.</small>',
+'show-big-image-other' => '<small>Alte rezoluții: $1.</small>',
+'show-big-image-size' => '$1 × $2 pixeli',
+'file-info-gif-looped' => 'în buclă',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|imagine|imagini}}',
+'file-info-png-looped' => 'în buclă',
+'file-info-png-repeat' => 'redat {{PLURAL:$1|o dată|de $1 ori}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|cadru|cadre}}',
# Special:NewFiles
'newimages' => 'Galeria de imagini noi',
@@ -2968,6 +3035,10 @@ Executându-l, sistemul dvs. poate fi compromis.",
'bydate' => 'după dată',
'sp-newimages-showfrom' => 'Arată imaginile noi începând cu $1, ora $2',
+# Video information, used by Language::formatTimePeriod() to format lengths in the above messages
+'hours-abbrev' => 'o',
+'days-abbrev' => 'z',
+
# Bad image list
'bad_image_list' => 'Formatul este următorul:
@@ -2983,7 +3054,7 @@ Orice legături ce urmează pe aceeași linie sunt considerate excepții, adică
Dacă fișierul a fost modificat între timp, este posibil ca unele detalii să nu mai fie valabile.',
'metadata-expand' => 'Afișează detalii suplimentare',
'metadata-collapse' => 'Ascunde detalii suplimentare',
-'metadata-fields' => 'Datele suplimentare EXIF listate aici vor fi incluse în pagina dedicată imaginii când tabelul cu metadata este restrâns.
+'metadata-fields' => 'Câmpurile cu metadatele imaginii listate mai jos vor fi incluse în pagina de afișare a imaginii atunci când tabelul cu metadate este restrâns.
Altele vor fi ascunse implicit.
* make
* model
@@ -2991,7 +3062,13 @@ Altele vor fi ascunse implicit.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Lățime',
@@ -3006,13 +3083,11 @@ Altele vor fi ascunse implicit.
'exif-ycbcrpositioning' => 'Poziționarea Y și C',
'exif-xresolution' => 'Rezoluție orizontală',
'exif-yresolution' => 'Rezoluție verticală',
-'exif-resolutionunit' => 'Unitate de rezoluție pentru X și Y',
'exif-stripoffsets' => 'Locația datelor imaginii',
'exif-rowsperstrip' => 'Numărul de linii per bandă',
'exif-stripbytecounts' => 'Biți corespunzători benzii comprimate',
'exif-jpeginterchangeformat' => 'Offset pentru JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Biți de date JPEG',
-'exif-transferfunction' => 'Funcția de transfer',
'exif-whitepoint' => 'Cromaticitatea punctului alb',
'exif-primarychromaticities' => 'Coordonatele cromatice ale culorilor primare',
'exif-ycbcrcoefficients' => 'Tăria culorii coeficienților matricei de transformare',
@@ -3031,7 +3106,6 @@ Altele vor fi ascunse implicit.
'exif-compressedbitsperpixel' => 'Mod de comprimare a imaginii',
'exif-pixelydimension' => 'Lățimea imaginii',
'exif-pixelxdimension' => 'Înălțimea imaginii',
-'exif-makernote' => 'Observațiile producătorului',
'exif-usercomment' => 'Comentariile utilizatorilor',
'exif-relatedsoundfile' => 'Fișierul audio asemănător',
'exif-datetimeoriginal' => 'Data și ora producerii imaginii',
@@ -3045,7 +3119,6 @@ Altele vor fi ascunse implicit.
'exif-exposureprogram' => 'Program de expunere',
'exif-spectralsensitivity' => 'Sensibilitate spectrală',
'exif-isospeedratings' => 'Evaluarea vitezei ISO',
-'exif-oecf' => 'Factorul de conversie optoelectronic',
'exif-shutterspeedvalue' => 'Viteza obturatorului în APEX',
'exif-aperturevalue' => 'Diafragmă în APEX',
'exif-brightnessvalue' => 'Luminozitate în APEX',
@@ -3058,7 +3131,6 @@ Altele vor fi ascunse implicit.
'exif-focallength' => 'Distanța focală a obiectivului',
'exif-subjectarea' => 'Suprafața subiectului',
'exif-flashenergy' => 'Energie bliÈ›',
-'exif-spatialfrequencyresponse' => 'Răspunsul frecvenței spațiale',
'exif-focalplanexresolution' => 'Rezoluția focală plană X',
'exif-focalplaneyresolution' => 'Rezoluția focală plană Y',
'exif-focalplaneresolutionunit' => 'Unitatea de măsură pentru rezoluția focală plană',
@@ -3067,7 +3139,6 @@ Altele vor fi ascunse implicit.
'exif-sensingmethod' => 'Metoda sensibilă',
'exif-filesource' => 'Fișier sursă',
'exif-scenetype' => 'Tipul scenei',
-'exif-cfapattern' => 'Mozaic CFA (filtre color)',
'exif-customrendered' => 'Prelucrarea imaginii',
'exif-exposuremode' => 'Mod de expunere',
'exif-whitebalance' => 'Balanța albă',
@@ -3112,10 +3183,80 @@ Altele vor fi ascunse implicit.
'exif-gpsareainformation' => 'Numele domeniului GPS',
'exif-gpsdatestamp' => 'Data GPS',
'exif-gpsdifferential' => 'Corecția diferențială GPS',
+'exif-jpegfilecomment' => 'Comentarii la fișierul JPEG',
+'exif-keywords' => 'Cuvinte cheie',
+'exif-worldregioncreated' => 'Regiunea lumii în care a fost făcută fotografia',
+'exif-countrycreated' => 'Țara în care a fost făcută fotografia',
+'exif-countrycodecreated' => 'Codul țării în care a fost făcută fotografia',
+'exif-provinceorstatecreated' => 'Provincia sau statul în care a fost făcută fotografia',
+'exif-citycreated' => 'Orașul în care a fost făcută fotografia',
+'exif-sublocationcreated' => 'Partea orașului în care a fost făcută fotografia',
+'exif-worldregiondest' => 'Regiunea lumii ilustrată',
+'exif-countrydest' => 'Țara ilustrată',
+'exif-countrycodedest' => 'Codul țării ilustrate',
+'exif-provinceorstatedest' => 'Provincia sau statul ilustrat',
+'exif-citydest' => 'Orașul ilustrat',
+'exif-sublocationdest' => 'Partea orașului ilustrată',
'exif-objectname' => 'Titlu scurt',
+'exif-specialinstructions' => 'Instrucțiuni speciale',
+'exif-headline' => 'Titlu detaliat',
+'exif-credit' => 'Credit/Furnizor',
+'exif-source' => 'Sursă',
+'exif-editstatus' => 'Statutul editorial al imaginii',
+'exif-urgency' => 'Urgență',
+'exif-fixtureidentifier' => 'Articol',
+'exif-locationdest' => 'Locația ilustrată',
+'exif-locationdestcode' => 'Codul locației ilustrate',
+'exif-objectcycle' => 'Momentul zilei pentru care acest element media este destinat',
+'exif-contact' => 'Informații de contact',
+'exif-writer' => 'Autor',
+'exif-languagecode' => 'Limbă',
+'exif-iimversion' => 'Versiune IIM',
+'exif-iimcategory' => 'Categorie',
+'exif-iimsupplementalcategory' => 'Categorii suplimentare',
+'exif-datetimeexpires' => 'Nu utilizați după data de',
+'exif-datetimereleased' => 'Lansat pe',
+'exif-originaltransmissionref' => 'Codul locului transmisiei originale',
+'exif-identifier' => 'Identificator',
+'exif-lens' => 'Obiectiv utilizat',
+'exif-serialnumber' => 'Numărul de serie al aparatului fotografic',
+'exif-cameraownername' => 'Proprietarul aparatului fotografic',
+'exif-label' => 'Etichetă',
+'exif-datetimemetadata' => 'Data ultimei modificări a metadatelor',
+'exif-nickname' => 'Titlul neoficial al imaginii',
+'exif-rating' => 'Evaluare (până la 5)',
+'exif-rightscertificate' => 'Certificat de gestionare a drepturilor',
+'exif-copyrighted' => 'Statutul drepturilor de autor',
+'exif-copyrightowner' => 'Titularul drepturilor de autor',
+'exif-usageterms' => 'Termeni de utilizare',
+'exif-webstatement' => 'Declarația on-line privind drepturilor de autor',
+'exif-originaldocumentid' => 'ID-ul unic al documentului original',
+'exif-licenseurl' => 'Adresa URL pentru licența drepturilor de autor',
+'exif-morepermissionsurl' => 'Informații alternative despre licențiere',
+'exif-attributionurl' => 'Când reutilizați această operă, vă rugăm să adăugați o legătură către',
+'exif-preferredattributionname' => 'Când reutilizați această operă, vă rugăm ca acest nume să fie creditat',
+'exif-pngfilecomment' => 'Comentarii la fișierul PNG',
+'exif-disclaimer' => 'Termeni',
+'exif-contentwarning' => 'Avertisment asupra conținutului',
+'exif-giffilecomment' => 'Comentarii la fișierul GIF',
+'exif-intellectualgenre' => 'Tipul elementului',
+'exif-subjectnewscode' => 'Codul subiectului',
+'exif-scenecode' => 'Codul IPTC al scenei',
+'exif-event' => 'Evenimentul înfățișat',
+'exif-organisationinimage' => 'Organizația înfățișată',
+'exif-personinimage' => 'Persoana înfățișată',
+'exif-originalimageheight' => 'Înălțimea imaginii înainte de trunchiere',
+'exif-originalimagewidth' => 'Lățimea imaginii înainte de trunchiere',
# EXIF attributes
'exif-compression-1' => 'Necomprimată',
+'exif-compression-2' => 'CCITT Grupa 3 Lungimea codificării Huffman modificată de dimensiune 1',
+'exif-compression-3' => 'CCITT Grupa 3 codificare fax',
+'exif-compression-4' => 'CCITT Grupa 4 codificare fax',
+'exif-compression-6' => 'JPEG (vechi)',
+
+'exif-copyrighted-true' => 'Sub incidența drepturilor de autor',
+'exif-copyrighted-false' => 'Domeniu public',
'exif-unknowndate' => 'Dată necunoscută',
@@ -3131,6 +3272,8 @@ Altele vor fi ascunse implicit.
'exif-planarconfiguration-1' => 'format compact',
'exif-planarconfiguration-2' => 'format plat',
+'exif-colorspace-65535' => 'Necalibrată',
+
'exif-componentsconfiguration-0' => 'neprecizat',
'exif-exposureprogram-0' => 'Neprecizat',
@@ -3244,6 +3387,10 @@ Altele vor fi ascunse implicit.
'exif-gpslongitude-e' => 'longitudine estică',
'exif-gpslongitude-w' => 'longitudine vestică',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metru|metri}} deasupra nivelului mării',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metru|metri}} sub nivelului mării',
+
'exif-gpsstatus-a' => 'Măsurare în curs',
'exif-gpsstatus-v' => 'Măsurarea interoperabilității',
@@ -3255,21 +3402,73 @@ Altele vor fi ascunse implicit.
'exif-gpsspeed-m' => 'Mile pe oră',
'exif-gpsspeed-n' => 'Noduri',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometri',
+'exif-gpsdestdistance-m' => 'Mile',
+'exif-gpsdestdistance-n' => 'Mile marine',
+
+'exif-gpsdop-excellent' => 'Excelent ($1)',
+'exif-gpsdop-good' => 'Bun ($1)',
+'exif-gpsdop-moderate' => 'Moderat ($1)',
+'exif-gpsdop-fair' => 'Acceptabil ($1)',
+'exif-gpsdop-poor' => 'Slab ($1)',
+
+'exif-objectcycle-a' => 'Doar dimineața',
+'exif-objectcycle-p' => 'Doar seara',
+'exif-objectcycle-b' => 'Și dimineața și seara',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Direcția reală',
'exif-gpsdirection-m' => 'Direcție magnetică',
+'exif-ycbcrpositioning-1' => 'Centrat',
+'exif-ycbcrpositioning-2' => 'Co-amplasat',
+
+'exif-dc-contributor' => 'Contribuitori',
+'exif-dc-coverage' => 'Întinderea spațială sau temporală a elementului media',
+'exif-dc-date' => 'Data (datele)',
+'exif-dc-publisher' => 'Editor',
+'exif-dc-relation' => 'Conținut multimedia asociat',
+'exif-dc-rights' => 'Permisiuni',
+'exif-dc-source' => 'Conținutul multimedia sursă',
+'exif-dc-type' => 'Tipul conținutului media',
+
+'exif-rating-rejected' => 'Respins',
+
+'exif-isospeedratings-overflow' => 'Mai mare de 65535',
+
+'exif-iimcategory-ace' => 'Artă, cultură și divertisment',
+'exif-iimcategory-clj' => 'Criminalitate și lege',
+'exif-iimcategory-dis' => 'Dezastre și accidente',
+'exif-iimcategory-fin' => 'Economie și afaceri',
+'exif-iimcategory-edu' => 'Educație',
+'exif-iimcategory-evn' => 'Mediu înconjurător',
+'exif-iimcategory-hth' => 'Sănătate',
+'exif-iimcategory-hum' => 'Interes uman',
+'exif-iimcategory-lab' => 'Muncă',
+'exif-iimcategory-lif' => 'Stil de viață și timp liber',
+'exif-iimcategory-pol' => 'Politică',
+'exif-iimcategory-rel' => 'Religie și credință',
+'exif-iimcategory-sci' => 'Știință și tehnologie',
+'exif-iimcategory-soi' => 'Aspecte sociale',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Războaie, conflicte și tulburări',
+'exif-iimcategory-wea' => 'Vreme',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'Scăzut ($1)',
+'exif-urgency-high' => 'Ridicat ($1)',
+'exif-urgency-other' => 'Prioritate definită de utilizator ($1)',
+
# External editor support
'edit-externally' => 'Editează acest fișier folosind o aplicație externă.',
-'edit-externally-help' => '(Vedeți [http://www.mediawiki.org/wiki/Manual:External_editors instrucțiuni de instalare] pentru mai multe informații)',
+'edit-externally-help' => '(Vedeți [//www.mediawiki.org/wiki/Manual:External_editors instrucțiuni de instalare] pentru mai multe informații)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tot',
-'imagelistall' => 'toate',
-'watchlistall2' => 'toate',
-'namespacesall' => 'toate',
-'monthsall' => 'toate',
-'limitall' => 'toate',
+'watchlistall2' => 'toate',
+'namespacesall' => 'toate',
+'monthsall' => 'toate',
+'limitall' => 'toate',
# E-mail address confirmation
'confirmemail' => 'Confirmă adresa de e-mail',
@@ -3342,17 +3541,24 @@ $1',
'trackbackdeleteok' => 'Urmăritorul a fost șters cu succes.',
# Delete conflict
-'deletedwhileediting' => "'''Atenție''': Această pagină a fost ștearsă după ce ați început s-o modificați!",
-'confirmrecreate' => "Utilizatorul [[User:$1|$1]] ([[User talk:$1|discuție]]) a șters acest articol după ce ați început să contribuiți la el din motivul:
+'deletedwhileediting' => "'''Atenție''': Această pagină a fost ștearsă după ce ați început s-o modificați!",
+'confirmrecreate' => "Utilizatorul [[User:$1|$1]] ([[User talk:$1|discuție]]) a șters acest articol după ce ați început să contribuiți la el din motivul:
: ''$2''
Vă rugăm să confirmați faptul că într-adevăr doriți să recreați acest articol.",
-'recreate' => 'Recreează',
+'confirmrecreate-noreason' => 'Utilizatorul [[User:$1|$1]] ([[User talk:$1|discuție]]) a șters această pagină după ce dumneavoastră ați început să o modificați. Vă rugăm să confirmați faptul că într-adevăr doriți să recreați această pagină.',
+'recreate' => 'Recreează',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Doriți să reîncărcați pagina?',
'confirm-purge-bottom' => 'Actualizaea unei pagini șterge cache-ul și forțează cea mai recentă variantă să apară.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Adăugați această pagină la lista de pagini urmărite?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Eliminați această pagină din lista de pagini urmărite?',
+
# Multipage image navigation
'imgmultipageprev' => '↠pagina anterioară',
'imgmultipagenext' => 'pagina următoare →',
@@ -3395,14 +3601,14 @@ Vă rugăm să confirmați faptul că într-adevăr doriți să recreați acest
'watchlistedit-normal-legend' => 'Ștergere titluri din lista de urmărire',
'watchlistedit-normal-explain' => 'Lista de mai jos cuprinde paginile pe care le urmăriți.
Pentru a elimina un titlu, bifaÈ›i-l È™i apăsaÈ›i „{{int:Watchlistedit-normal-submit}}â€.
-Puteți edita și direct [[Special:Watchlist/raw|listă brută]].',
+Puteți modifica și direct [[Special:EditWatchlist/raw|lista brută]].',
'watchlistedit-normal-submit' => 'Șterge titluri',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 titlu a fost șters|$1 titluri au fost șterse}} din lista de urmărire:',
'watchlistedit-raw-title' => 'Modificarea listei brute a paginilor urmărite',
'watchlistedit-raw-legend' => 'Modifică lista brută de pagini urmărite',
'watchlistedit-raw-explain' => 'Lista de mai jos cuprinde paginile pe care le urmăriți. O puteți modifica adăugînd sau ștergînd titluri (cîte un titlu pe rînd).
După ce terminaÈ›i apăsaÈ›i „{{int:Watchlistedit-raw-submit}}â€.
-Puteți folosi în schimb [[Special:Watchlist/edit|editorul standard]].',
+Puteți folosi în schimb [[Special:EditWatchlist|editorul standard]].',
'watchlistedit-raw-titles' => 'Titluri:',
'watchlistedit-raw-submit' => 'Actualizează lista paginilor urmărite',
'watchlistedit-raw-done' => 'Lista paginilor urmărite a fost actualizată.',
@@ -3419,33 +3625,33 @@ Puteți folosi în schimb [[Special:Watchlist/edit|editorul standard]].',
'duplicate-defaultsort' => "'''AtenÈ›ie:''' Cheia de sortare implicită („$2â€) o înlocuieÈ™te pe precedenta („$1â€).",
# Special:Version
-'version' => 'Versiune',
-'version-extensions' => 'Extensii instalate',
-'version-specialpages' => 'Pagini speciale',
-'version-parserhooks' => 'Hook-uri parser',
-'version-variables' => 'Variabile',
-'version-skins' => 'Aspect',
-'version-other' => 'Altele',
-'version-mediahandlers' => 'Suport media',
-'version-hooks' => 'Hook-uri',
-'version-extension-functions' => 'Funcțiile extensiilor',
-'version-parser-extensiontags' => 'Taguri extensie parser',
-'version-parser-function-hooks' => 'Hook-uri funcții parser',
-'version-skin-extension-functions' => 'Funcțiile extensiei interfeței',
-'version-hook-name' => 'Nume hook',
-'version-hook-subscribedby' => 'Subscris de',
-'version-version' => '(Versiune $1)',
-'version-license' => 'Licență',
-'version-poweredby-credits' => "Acest wiki este dezvoltat de '''[http://www.mediawiki.org/ MediaWiki]''', drepturi de autor © 2001-$1 $2.",
-'version-poweredby-others' => 'alții',
-'version-license-info' => 'MediaWiki este un software liber pe care îl puteți redistribui și/sau modifica sub termenii Licenței Publice Generale GNU publicată de Free Software Foundation – fie a doua versiune a acesteia, fie, la alegerea dumneavoastră, orice altă versiune ulterioară.
+'version' => 'Versiune',
+'version-extensions' => 'Extensii instalate',
+'version-specialpages' => 'Pagini speciale',
+'version-parserhooks' => 'Hook-uri parser',
+'version-variables' => 'Variabile',
+'version-antispam' => 'Prevenirea spam-ului',
+'version-skins' => 'Aspect',
+'version-other' => 'Altele',
+'version-mediahandlers' => 'Suport media',
+'version-hooks' => 'Hook-uri',
+'version-extension-functions' => 'Funcțiile extensiilor',
+'version-parser-extensiontags' => 'Taguri extensie parser',
+'version-parser-function-hooks' => 'Hook-uri funcții parser',
+'version-hook-name' => 'Nume hook',
+'version-hook-subscribedby' => 'Subscris de',
+'version-version' => '(Versiune $1)',
+'version-license' => 'Licență',
+'version-poweredby-credits' => "Acest wiki este dezvoltat de '''[//www.mediawiki.org/ MediaWiki]''', drepturi de autor © 2001-$1 $2.",
+'version-poweredby-others' => 'alții',
+'version-license-info' => 'MediaWiki este un software liber pe care îl puteți redistribui și/sau modifica sub termenii Licenței Publice Generale GNU publicată de Free Software Foundation – fie a doua versiune a acesteia, fie, la alegerea dumneavoastră, orice altă versiune ulterioară.
MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GARANȚIE, nici măcar cea implicită de COMERCIALIZARE sau de ADAPTARE PENTRU UN UN SCOP ANUME. Vedeți Licența Publică Generală GNU pentru mai multe detalii.
-În cazul în care nu ați primit [{{SERVER}}{{SCRIPTPATH}}/COPYING o copie a Licenței Publice Generale GNU] împreună cu acest program, scrieți la Free Software Foundation, Inc, 51, Strada Franklin, etajul cinci, Boston, MA 02110-1301, Statele Unite ale Americii sau [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html citiți-o online].',
-'version-software' => 'Software instalat',
-'version-software-product' => 'Produs',
-'version-software-version' => 'Versiune',
+În cazul în care nu ați primit [{{SERVER}}{{SCRIPTPATH}}/COPYING o copie a Licenței Publice Generale GNU] împreună cu acest program, scrieți la Free Software Foundation, Inc, 51, Strada Franklin, etajul cinci, Boston, MA 02110-1301, Statele Unite ale Americii sau [//www.gnu.org/licenses/old-licenses/gpl-2.0.html citiți-o online].',
+'version-software' => 'Software instalat',
+'version-software-product' => 'Produs',
+'version-software-version' => 'Versiune',
# Special:FilePath
'filepath' => 'Cale fișier',
@@ -3455,22 +3661,22 @@ MediaWiki este distribuit în speranța că va fi folositor, dar FĂRĂ VREO GAR
Imaginile sunt afișate la rezoluția lor maximă, în timp ce alte tipuri de fișiere vor porni direct în programele asociate.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Căutare fișiere duplicate',
-'fileduplicatesearch-summary' => 'Caută fișiere duplicat bazate pe valoarea sa hash.
-
-Introdu numele fișierului fără prefixul "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Căutare duplicat',
-'fileduplicatesearch-filename' => 'Nume fișier:',
-'fileduplicatesearch-submit' => 'Caută',
-'fileduplicatesearch-info' => '$1 × $2 pixeli<br />Mărime fișier: $3<br />Tip MIME: $4',
-'fileduplicatesearch-result-1' => 'Fișierul „$1†nu are un duplicat identic.',
-'fileduplicatesearch-result-n' => 'Fișierul „$1†are {{PLURAL:$2|1 duplicat identic|$2 duplicate identice}}.',
+'fileduplicatesearch' => 'Căutare fișiere duplicate',
+'fileduplicatesearch-summary' => 'Căutarea fișierelor duplicate bazată pe valorile hash.',
+'fileduplicatesearch-legend' => 'Căutare duplicat',
+'fileduplicatesearch-filename' => 'Nume fișier:',
+'fileduplicatesearch-submit' => 'Caută',
+'fileduplicatesearch-info' => '$1 × $2 pixeli<br />Mărime fișier: $3<br />Tip MIME: $4',
+'fileduplicatesearch-result-1' => 'Fișierul „$1†nu are un duplicat identic.',
+'fileduplicatesearch-result-n' => 'Fișierul „$1†are {{PLURAL:$2|1 duplicat identic|$2 duplicate identice}}.',
+'fileduplicatesearch-noresults' => 'Nu s-a găsit niciun fiÈ™ier cu numele „$1â€.',
# Special:SpecialPages
'specialpages' => 'Pagini speciale',
'specialpages-note' => '----
* Pagini speciale normale.
-* <strong class="mw-specialpagerestricted">Pagini speciale restricționate.</strong>',
+* <span class="mw-specialpagerestricted">Pagini speciale restricționate.</span>
+* <span class="mw-specialpagecached">Pagini speciale aflate doar în memoria cache (pot fi neactualizate).</span>',
'specialpages-group-maintenance' => 'Întreținere',
'specialpages-group-other' => 'Alte pagini speciale',
'specialpages-group-login' => 'Autentificare / ÃŽnregistrare',
diff --git a/languages/messages/MessagesRoa_rup.php b/languages/messages/MessagesRoa_rup.php
index 1d49ad6a..d05aa0cf 100644
--- a/languages/messages/MessagesRoa_rup.php
+++ b/languages/messages/MessagesRoa_rup.php
@@ -1,224 +1,15 @@
<?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
*
- * @author Dumitrachi T. Fundu
- * @author Hakka
*/
-$messages = array(
-# Dates
-'sunday' => 'Dumãnicã',
-'monday' => 'Lune',
-'tuesday' => 'Martsã',
-'wednesday' => 'Njercure',
-'thursday' => 'Gioia',
-'friday' => 'Vinirã',
-'saturday' => 'Sãmbãtã',
-'january' => 'Yinar',
-'february' => 'Shcurtu',
-'march' => 'Martsu',
-'april' => 'Aprir',
-'may_long' => 'Mailu',
-'june' => 'Cirishar',
-'july' => 'Alunar',
-'august' => 'Avgustu',
-'september' => 'Yizmaciunjle',
-'october' => 'Xumedru',
-'november' => 'Brumar',
-'december' => 'Andreulu',
-'january-gen' => 'Yinar',
-'february-gen' => 'Shcurtu',
-'march-gen' => 'Martsu',
-'april-gen' => 'Aprir',
-'may-gen' => 'Mailu',
-'june-gen' => 'Cirishar',
-'july-gen' => 'Alunar',
-'august-gen' => 'Avgustu',
-'september-gen' => 'Yizmaciunjle',
-'october-gen' => 'Xumedru',
-'november-gen' => 'Brumar',
-'december-gen' => 'Andreulu',
-
-'article' => 'Articlu',
-'cancel' => 'Alasã',
-'mytalk' => 'Zburare-a mea',
-'navigation' => 'Navigatsia',
-
-# Cologne Blue skin
-'qbedit' => 'Alãxiri',
-'qbspecialpages' => 'Frãndzã spetsiale',
-
-'help' => 'Agiutor',
-'search' => 'Caftã',
-'searchbutton' => 'Caftã',
-'go' => 'Du-vã',
-'searcharticle' => 'Du-vã',
-'history_short' => 'Istoria',
-'printableversion' => 'Verzia ti tipuseare',
-'permalink' => 'Ligãtura permanentã',
-'edit' => 'Alãxiri',
-'delete' => 'Ashcirdzire',
-'protect' => 'Apurã',
-'talk' => 'Discusiur',
-'toolbox' => 'Cutia di hãlate',
-'otherlanguages' => 'Pi alte limbe',
-'jumptonavigation' => 'Navigatsia',
-'jumptosearch' => 'Caftã',
-
-# 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).
-'currentevents' => 'Evenimente di tora',
-'disclaimers' => 'Nipricunuschire',
-'edithelp' => 'Agiutor ti alãxire',
-'mainpage' => 'Prota frãndzã',
-'mainpage-description' => 'Prota frãndzã',
-'portal' => 'Portal-a comunitatiljei',
-
-'newmessageslink' => 'dimãndare nao',
-'youhavenewmessagesmulti' => 'Avets nãi dimãndãri pi $1',
-'editsection' => 'Alãxiri',
-'editold' => 'Alãxiri',
-
-# Short words for each namespace, by default used in the namespace tab in monobook
-'nstab-main' => 'Articlu',
-'nstab-user' => 'Frãndza-a ufilizitirolui',
-'nstab-template' => 'Shablon',
-
-# General errors
-'viewsource' => 'Videts-u fãntãnã',
-
-# Login and logout pages
-'welcomecreation' => '== Ghine vinish, $1 ==
-
-Isape a vostrã ira adratã. Nu agãrshits s-le alãxits alidzerle-a vostre ti {{SITENAME}}.',
-'yourname' => 'Numa di ufilizitor:',
-'yourpassword' => 'Cljao:',
-'yourpasswordagain' => 'Bãgats-u cljao iara:',
-'remembermypassword' => 'Apurã-u ligãtura-a mea pi compiuterlu aistu (for a maximum of $1 {{PLURAL:$1|day|days}})',
-'login' => 'Ligats-vã',
-'userlogin' => 'Ligats-vã / Fãtsets Isape',
-'logout' => 'Disligats-vã',
-'userlogout' => 'Disligats-vã',
-'notloggedin' => 'Nu hits ligats',
-'createaccount' => 'Fãtsets Isape',
-'gotaccountlink' => 'Ligats-vã',
-
-# Edit pages
-'summary' => 'Rezime:',
-'minoredit' => 'Aistã easte alãxire njicã',
-'watchthis' => 'Mutrits-u frãndzã aistã',
-'savearticle' => 'Avigljats-u frãndzã',
-'showpreview' => 'Spuni u-privideare',
-'showdiff' => 'Spuni le-alãxirle',
-'whitelistedittitle' => 'Lipseashce s-vã ligats ta s-alãxits',
-'loginreqlink' => 'Ligats-vã',
-
-# Search results
-'powersearch' => 'Caftã',
-
-# Preferences page
-'preferences' => 'Alidzerle-a meale',
-'mypreferences' => 'Alidzerle-a meale',
-'prefsnologin' => 'Nu hits ligats',
-'searchresultshead' => 'Caftã',
-'youremail' => 'E-mail:',
-'username' => 'Numa di ufilizitor:',
-
-# Recent changes
-'recentchanges' => 'Alãxiri',
-
-# Recent changes linked
-'recentchangeslinked' => 'Alãxiri ligate',
-'recentchangeslinked-feed' => 'Alãxiri ligate',
-'recentchangeslinked-toolbox' => 'Alãxiri ligate',
-
-# Upload
-'upload' => 'Pitritsets file',
-'uploadbtn' => 'Pitritsets file',
-'uploadnologin' => 'Nu hits ligats',
-'filedesc' => 'Rezime',
-'watchthisupload' => 'Mutrits-u frãndzã aistã',
-
-# Random page
-'randompage' => 'Frãndzã di nipandicã',
-
-'brokenredirects-edit' => 'Alãxiri',
-'brokenredirects-delete' => 'Ashcirdzire',
-
-# Miscellaneous special pages
-'newpages-username' => 'Numa di ufilizitor:',
-'move' => 'Tradzets',
-'movethispage' => 'Tradzets-u frãndza aistã',
-
-# Book sources
-'booksources-go' => 'Du-vã',
-
-# Special:AllPages
-'allpagessubmit' => 'Du-vã',
-
-# Watchlist
-'watchlist' => 'Lista-a mea di videare',
-'mywatchlist' => 'Lista-a mea di videare',
-'watchnologin' => 'Nu hits ligats',
-'watch' => 'Videts',
-'watchthispage' => 'Mutrits-u frãndzã aistã',
-'unwatch' => 'Azãptãsits videare',
-
-# Protect
-'prot_1movedto2' => '[[$1]] s-trãdzi tu [[$2]]',
-
-# Restrictions (nouns)
-'restriction-edit' => 'Alãxiri',
-'restriction-move' => 'Tradzets',
-
-# Undelete
-'undelete-search-submit' => 'Caftã',
-
-# Contributions
-'contributions' => 'Ufilizitor:Contributsiur',
-'mycontris' => 'Contributsiile-a meale',
-
-'sp-contributions-submit' => 'Caftã',
-
-# What links here
-'whatlinkshere' => 'Tsi s-leadze cu aistu',
-
-# Block/unblock
-'ipbreason' => 'Itia:',
-'ipblocklist-submit' => 'Caftã',
-
-# Move page
-'move-page-legend' => 'Tradzets-u frãndzã',
-'movearticle' => 'Tradzets-u frãndzã:',
-'move-watch' => 'Mutrits-u frãndzã aistã',
-'movepagebtn' => 'Tradzets-u frãndzã',
-'movedto' => 'tradzitã tu',
-'1movedto2' => '[[$1]] s-trãdzi tu [[$2]]',
-'movereason' => 'Itia:',
-
-# Namespace 8 related
-'allmessages' => 'Dimãndãri systemitse',
-
-# Tooltip help for the actions
-'tooltip-pt-preferences' => 'Alidzerle-a meale',
-'tooltip-pt-logout' => 'Disligats-vã',
-'tooltip-p-logo' => 'Prota frãndzã',
-
-# Special:NewFiles
-'ilsubmit' => 'Caftã',
-
-# Multipage image navigation
-'imgmultigo' => 'Du-vã!',
-
-# Table pager
-'table_pager_limit_submit' => 'Du-vã',
-
-# Special:SpecialPages
-'specialpages' => 'Frãndzã spetsiale',
-
-);
+$fallback = 'rup';
diff --git a/languages/messages/MessagesRoa_tara.php b/languages/messages/MessagesRoa_tara.php
index 5efa79a5..6dc76e21 100644
--- a/languages/messages/MessagesRoa_tara.php
+++ b/languages/messages/MessagesRoa_tara.php
@@ -12,13 +12,13 @@
*/
$specialPageAliases = array(
+ 'Allmessages' => array( 'TutteLeMessagge' ),
'Preferences' => array( 'Preferenze' ),
- 'Watchlist' => array( 'PàggeneCondrollete' ),
'Recentchanges' => array( 'UrtemeCangiaminde' ),
- 'Upload' => array( 'Carecaminde' ),
'Statistics' => array( 'Statisteche' ),
+ 'Upload' => array( 'Carecaminde' ),
'Version' => array( 'Versione' ),
- 'Allmessages' => array( 'TutteLeMessagge' ),
+ 'Watchlist' => array( 'PàggeneCondrollete' ),
);
$messages = array(
@@ -54,9 +54,9 @@ $messages = array(
'tog-oldsig' => 'Firme esistende:',
'tog-fancysig' => "Firma grezze cumme a 'nu teste de Uicchi (senza collegamende automatiche)",
'tog-externaleditor' => "Ause n'editore esterne pe default (sulamende pe l'esperte, abbesogne de 'na configurazione speciele sus a 'u combiuter tune. <br />
-[http://www.mediawiki.org/wiki/Manual:External_editors Pe cchiù 'mbormaziune.])",
+[//www.mediawiki.org/wiki/Manual:External_editors Pe cchiù 'mbormaziune.])",
'tog-externaldiff' => "Ause 'na differenze esterne pe default (sulamende pe l'esperte, abbesogne de 'na configuraziona speciele sus a 'u computer tune. <br />
-[http://www.mediawiki.org/wiki/Manual:External_editors More information.])",
+[//www.mediawiki.org/wiki/Manual:External_editors More information.])",
'tog-showjumplinks' => 'Abbilite "zumbe a" pe accedere a le collegaminde',
'tog-uselivepreview' => "Ause l'andeprime da 'u vive (JavaScript) (Sperimendele)",
'tog-forceeditsummary' => "Ciercheme conferme quanne stoche a 'nzerische 'nu riepighe vianghe",
@@ -151,14 +151,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cond.',
'index-category' => 'Pàggene indicizzate',
'noindex-category' => 'Pàggene none indicizzate',
-
-'mainpagetext' => "'''MediaUicchi ha state 'nstallete.'''",
-'mainpagedocfooter' => "Vè vide [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] pe l'mbormaziune sus a cumme s'ause 'u softuer wiki.
-
-== Pe accumenzà ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste pe le configuraziune]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ de MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Liste d'a poste de MediaWiki]",
+'broken-file-category' => 'Pàggene cu collegaminde a le file scuasciate',
'about' => 'Sus a',
'article' => 'Pàgene de le condenute',
@@ -210,10 +203,10 @@ $messages = array(
'history' => "Storie d'a pàgene",
'history_short' => 'Cunde',
'updatedmarker' => "aggiornete da l'urtema visite meje",
-'info_short' => "'Mbormazione",
'printableversion' => 'Versione ca se stambe',
'permalink' => 'Collegamende ca remane pe sembre',
'print' => 'Stambe',
+'view' => 'Vide',
'edit' => 'Cange',
'create' => 'Ccreje',
'editthispage' => 'Cange sta pàgene',
@@ -221,6 +214,7 @@ $messages = array(
'delete' => 'Scangìlle',
'deletethispage' => 'Scangille sta pàgene',
'undelete_short' => "Annulle {{PLURAL:$1|'nu camgiamende|$1 cangiaminde}}",
+'viewdeleted_short' => "Vide {{PLURAL:$1|'nu cangiamende scangellate|$1 cangiaminde scangellate}}",
'protect' => 'Prutette',
'protect_change' => 'cange',
'protectthispage' => 'Prutigge sta pàgene',
@@ -306,6 +300,8 @@ Vide [[Special:Version|Versione d'a pàgene]].",
'toc' => 'Condenute',
'showtoc' => 'fà vedè',
'hidetoc' => 'scunne',
+'collapsible-collapse' => 'Scunne',
+'collapsible-expand' => 'Spanne',
'thisisdeleted' => 'Vide o ripristine $1?',
'viewdeleted' => 'Vue ccu vide $1?',
'restorelink' => "{{PLURAL:$1|'nu cangiamende scangellete|$1 cangiaminde scangellete}}",
@@ -319,6 +315,8 @@ Vide [[Special:Version|Versione d'a pàgene]].",
'feed-atom' => 'Atom',
'feed-rss' => 'RSS',
'red-link-title' => "$1 (non g'esiste - addà essere scritte)",
+'sort-descending' => 'Ordenamende ca scenne',
+'sort-ascending' => "Ordenamende ca 'nghiane",
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Pàgene',
@@ -406,12 +404,13 @@ Pe piacere prueve cchiù tarde.",
'protectedinterface' => "Sta pàgene te dè l'inderfacce de teste pìu software e jè blocchete pe prevenì l'abbuse.",
'editinginterface' => "'''Fà attenziò:''' Tu ste cange 'na pàgene ca jè ausete pe dà 'n'inderfacce de teste p'u software.
Le cangiaminde de sta pàgene vonne a mettene mane sus a l'inderfacce utende pe l'otre utinde.
-Pe traduziune, pe piacere vide ce ause [http://translatewiki.net/wiki/Main_Page?setlang=roa-tara translatewiki.net], 'u pruggette de localizzazione de MediaUicchi.",
+Pe traduziune, pe piacere vide ce ause [//translatewiki.net/wiki/Main_Page?setlang=roa-tara translatewiki.net], 'u pruggette de localizzazione de MediaUicchi.",
'sqlhidden' => '(query SQL ascunnute)',
'cascadeprotected' => 'Sta pàgene ha state prutette da le cangiaminde, purcè jè ingluse jndr\'à {{PLURAL:$1|seguende pàgene, ca jè|le seguende pàggene, ca sonde}} prutette cu l\'opzione "a caschete":
$2',
'namespaceprotected' => "Non ge tine 'u permesse pe cangià pàggene d'u neimspeise '''$1'''.",
-'customcssjsprotected' => "Non ge tine 'u permesse pe cangià sta pàgene, purcè tène otre configurazione personele.",
+'customcssprotected' => "Non ge tine 'u permesse pe cangià sta pàgene de CSS, purcè tène otre configurazione personale.",
+'customjsprotected' => "Non ge tine 'u permesse pe cangià sta pàgene de Javascript, purcè tène otre configurazione personale.",
'ns-specialprotected' => 'Le pàgene speciale no ponne essere cangete.',
'titleprotected' => "Stu titele ha state prutette da 'a ccreazione da [[User:$1|$1]].
'U mutive jè ''$2''.",
@@ -449,6 +448,7 @@ No te sce scurdanne de cangià le [[Special:Preferences|{{SITENAME}} preferenze
'createaccount' => "Ccreje 'nu cunde",
'gotaccount' => "Tine già 'nu cunde? '''$1'''.",
'gotaccountlink' => 'Tràse',
+'userlogin-resetlink' => "T'è scurdate le dettaglie pe trasè?",
'createaccountmail' => 'pe e-mail',
'createaccountreason' => 'Mutive:',
'badretype' => 'Le passuord ca è scritte non ge sonde uguale.',
@@ -465,13 +465,15 @@ Pe piacere, ce vuè ccu trase, abilitesce le cookie e pò prueve a mettere 'a ''
Tu tine le cookie disabbilitete.
Pe piacere, vide ce l'abilitesce e pò prueve 'n'otra vote a mettere le date tue.",
+'nocookiesfornew' => "'U cunde de l'utende non g'ha state ccrejate, nuje non ge putime confermà da addò avène.
+Pe piacere vide ce tine le cookie abbilitate, recareche sta pàgene e pruève arrete.",
'noname' => "Non gìè specifichete 'nu nome utende valide.",
'loginsuccesstitle' => 'Tutte a poste, è trasute!',
'loginsuccess' => "'''Mò tu si colleghete jndr'à {{SITENAME}} cumme \"\$1\".'''",
'nosuchuser' => "Non g'esiste n'utende cu 'u nome \"\$1\".
Fà attenzione ca le nome de l'utinde so senzibbele a le lettere granne e piccenne.
Vide bbuene a cumme l'è scritte, o [[Special:UserLogin/signup|ccreje n'utende nuève]].",
-'nosuchusershort' => 'Non ge ste nisciune utende cu \'u nome "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Non ge ste nisciune utende cu \'u nome "$1".
Condrolle accume l\'è scritte.',
'nouserspecified' => "A scrivere pe forze 'u nome de l'utende.",
'login-userblocked' => 'Stu utende jè bloccate. Non ge puè trasè.',
@@ -519,13 +521,14 @@ Tu puè pure cacà stu messagge, ce stu cunde utende ha state ccrejete pe errore
'usernamehasherror' => "'U nome utende non ge pò tenè carattere hash",
'login-throttled' => "Urtemamende tu è pruvate troppe vote a trasè jndr'à Uicchipèdie
Pe piacere vide c'aspitte 'nu picche de timbe apprime de pruvà 'n'otra vote.",
+'login-abort-generic' => "Non g'è riuscite a trasè - Annullate",
'loginlanguagelabel' => 'Lénga: $1',
'suspicious-userlogout' => "'A richiesta toje de assè ha state bloccate purcè pare ca ha state mannate da 'nu browser scuasciate o da 'a cache de 'nu proxy.",
# E-mail sending
'php-mail-error-unknown' => "Errore scanusciute jndr'à funzione PHP mail()",
-# Password reset dialog
+# Change password dialog
'resetpass' => "Cange 'a password",
'resetpass_announce' => "Tu tè colleghete cu 'nu codece mannete pe e-mail temboranee.
Pe spiccià 'a procedure de collegamende, tu a 'mbostà 'na password nove aqquà:",
@@ -544,6 +547,33 @@ Pe spiccià 'a procedure de collegamende, tu a 'mbostà 'na password nove aqquà
Pò essere ca tu è già cangete 'a password toje o è richieste una temboranea nove.",
'resetpass-temp-password' => 'Password temboranea:',
+# Special:PasswordReset
+'passwordreset' => "Azzere 'a passuord",
+'passwordreset-text' => "Comblete stu module pe avè 'na mail pe arrecurdarte le dettaglie d'u cunde tune.",
+'passwordreset-legend' => "Azzere 'a passuord",
+'passwordreset-disabled' => "'U reset de le passuord ha state desabbilitate sus a sta uicchi.",
+'passwordreset-pretext' => '{{PLURAL:$1||Mitte une de le stuèzze de le date aqquà sotte}}',
+'passwordreset-username' => 'Nome utende:',
+'passwordreset-domain' => 'Dominie:',
+'passwordreset-email' => 'Indirizze e-mail:',
+'passwordreset-emailtitle' => "Dettaglie d'u cunde utende sus a {{SITENAME}}",
+'passwordreset-emailtext-ip' => "Quacchedune (pò essere tu, da 'u 'ndirizze IP $1) ha richieste 'na mail pe arrecurdarse de le dettaglie d'u cunde sue pe {{SITENAME}} ($4). {{PLURAL:$3|'U cunde utende seguende jè|le cunde utinde seguende sonde}} associate cu st'indirizze e-mail:
+
+$2
+
+{{PLURAL:$3|Sta passuord temboranèe scade|Ste passuord temboranèe scadene}} 'mbrà {{PLURAL:$5|'nu sciurne|$5 sciurne}}.
+Tu avissa trasè e scacchià 'na passuord nova. Ce quacchedun'otre ha fatte sta richieste, o ce tu t'è arrecurdate 'a passuord origgenale toje, e non g'a vuè ccu cange cchiù, tu puè ignorà stu messagge e condinuà ausanne 'a passuord vecchie.",
+'passwordreset-emailtext-user' => "L'utende $1 sus a {{SITENAME}} ave richieste 'na mail pe arrecurdarse le dettaglie d'u cunde sue pe {{SITENAME}}
+($4). {{PLURAL:$3|'U cunde utende seguende jè|le cunde utinde seguende sonde}} associate cu st'indirizze e-mail:
+
+$2
+
+{{PLURAL:$3|Sta passuord temboranèe scade|Ste passuord temboranèe scadene}} 'mbrà {{PLURAL:$5|'nu sciurne|$5 sciurne}}.
+Tu avissa trasè e scacchià 'na passuord nova. Ce quacchedun'otre ha fatte sta richieste, o ce tu t'è arrecurdate 'a passuord origgenale toje, e non g'a vuè ccu cange cchiù, tu puè ignorà stu messagge e condinuà ausanne 'a passuord vecchie.",
+'passwordreset-emailelement' => 'Nome utende: $1<br />
+Passuord temboranèe: $2',
+'passwordreset-emailsent' => "'N'e-mail pe arrecurdarte ha state mannate.",
+
# Edit page toolbar
'bold_sample' => 'Teste grascette',
'bold_tip' => 'Teste grascette',
@@ -555,8 +585,6 @@ Pò essere ca tu è già cangete 'a password toje o è richieste una temboranea
'extlink_tip' => "Collegamende de fore a Uicchipedie (arrecuerdete 'u prefisse http://)",
'headline_sample' => "Teste d'a Testete",
'headline_tip' => 'Levèlle 2 tèstete',
-'math_sample' => "Mitte 'a formule aqquà",
-'math_tip' => 'Formula matemateche (LaTeX)',
'nowiki_sample' => "Mitte 'u teste non formattate aqquà",
'nowiki_tip' => "No scè penzanne 'a formattazione de Uicchi",
'image_sample' => 'Esembie.jpg',
@@ -646,7 +674,7 @@ Tu puè [[Special:Search/{{PAGENAME}}|cercà pe quiste titele]] jndr\'à otre pÃ
'noarticletext-nopermission' => "Pe mò non ge stè teste jndr'à sta pàgene.
Tu puè [[Special:Search/{{PAGENAME}}|cercà pe stu titele]] jndr'à otre pàggene,
o <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} cirche jndr'à l'archivije cullegate]</span>.",
-'userpage-userdoesnotexist' => '\'U cunde utende "$1" non g\'è reggistrete.
+'userpage-userdoesnotexist' => '\'U cunde utende "<nowiki>$1</nowiki>" non g\'è reggistrete.
Pe piacere, condrolle ce tu vuè cu ccreje/cange sta pàgene.',
'userpage-userdoesnotexist-view' => '\'U cunde utende "$1" non g\'è reggistrate.',
'blocked-notice-logextract' => "Stu utende jè correndemende bloccate.<br />
@@ -686,6 +714,7 @@ Ce angore tìne probbleme, prueve a [[Special:UserLogout|assè]] e te recolleghe
'token_suffix_mismatch' => "''''U cangiamende tue ha state scettate purcè 'u ''client'' tue non ge tène le carattere de le punde jndr'à 'u gettone de cangiamende.'''
'U cangiamende ha state scettate pe prevenì corruzione d'u teste d'a pàgene.
Certe vote, stu fatte succede quanne tu ste ause 'nu servizie proxy cu le bochere e anonime.",
+'edit_form_incomplete' => "'''Quacche stuèzze d'u module de le cangiaminde non g'ha state ricevute da 'u server; verifeche arrete ca le cangiaminde tune sonde apposte e pruève arrete.'''",
'editing' => 'Cangiaminde de $1',
'editingsection' => 'Cangiaminde de $1 (sezione)',
'editingcomment' => 'Cangiaminde de $1 (seziona nove)',
@@ -922,8 +951,8 @@ Pe piacere condrolle l'archivije.",
# Suppression log
'suppressionlog' => 'Archivie de le soppressiune',
-'suppressionlogtext' => "Sotte stè 'na liste de scangellaminde e blocche sus a le condenute scunnute da l'amministrature.
-Vide 'a [[Special:IPBlockList|liste de le IP bloccate]] pa liste de le operazziune corrende de espulsione e blocche.",
+'suppressionlogtext' => "Sotte stè 'n'elenghe de scangellaminde e blocche sus a le condenute scunnute da l'amministrature.
+Vide l'[[Special:BlockList|elenghe de le IP bloccate]] pa liste de le operazziune corrende de espulsione e blocche.",
# History merging
'mergehistory' => "Scuagghie 'a storie de le pàggene",
@@ -1035,12 +1064,13 @@ Tu puè cercà ausanne Google.
Però fa attenzione purcè l'indice lore sus a {{SITENAME}} ponne condenè pàggene ca non ge sonde aggiornate.",
# Quickbar
-'qbsettings' => 'Barra veloce',
-'qbsettings-none' => 'Ninde',
-'qbsettings-fixedleft' => 'Fissete a sinistre (Fixed left)',
-'qbsettings-fixedright' => 'Fissete a destre (Fixed right)',
-'qbsettings-floatingleft' => 'Volanne a sinistre (Floating left)',
-'qbsettings-floatingright' => 'Volanne a destre (Floating right)',
+'qbsettings' => 'Barra veloce',
+'qbsettings-none' => 'Ninde',
+'qbsettings-fixedleft' => 'Fissete a sinistre (Fixed left)',
+'qbsettings-fixedright' => 'Fissete a destre (Fixed right)',
+'qbsettings-floatingleft' => 'Volanne a sinistre (Floating left)',
+'qbsettings-floatingright' => 'Volanne a destre (Floating right)',
+'qbsettings-directionality' => "Corrette, depende da 'a direzionalità d'u script tune e da 'a lènga toje",
# Preferences page
'preferences' => 'Me piece accussì',
@@ -1051,9 +1081,10 @@ Però fa attenzione purcè l'indice lore sus a {{SITENAME}} ponne condenè pàgg
'changepassword' => "Cange 'a password",
'prefs-skin' => 'Skin',
'skin-preview' => 'Andeprime',
-'prefs-math' => 'Math',
'datedefault' => 'Nisciuna preferenze',
+'prefs-beta' => 'Funziune de Beta',
'prefs-datetime' => 'Date e ore',
+'prefs-labs' => 'Funziune de Labs',
'prefs-personal' => "Profile de l'utende",
'prefs-rc' => 'Cangiaminde recende',
'prefs-watchlist' => 'Pàggene condrollete',
@@ -1075,8 +1106,6 @@ Però fa attenzione purcè l'indice lore sus a {{SITENAME}} ponne condenè pàgg
'columns' => 'Culonne:',
'searchresultshead' => 'Cirche',
'resultsperpage' => 'Trasute pe pàgene:',
-'contextlines' => 'Linne pe collegamende:',
-'contextchars' => 'Condeste pe linee:',
'stub-threshold' => 'Soglie pe <a href="#" class="stub">collegamende stub</a> de formattazione (byte):',
'stub-threshold-disabled' => 'Disabbilitate',
'recentchangesdays' => "Sciurne da fà vedè jndr'à le cangiaminde recende:",
@@ -1089,7 +1118,7 @@ Aqquà ste 'nu valore generate a uecchije ca tu puè ausà: $1",
'savedprefs' => 'Le preferenze tue onne state aggiornete.',
'timezonelegend' => "Orarie d'a zone:",
'localtime' => 'Orarie lochele:',
-'timezoneuseserverdefault' => "Ause 'u valore de default d'u server",
+'timezoneuseserverdefault' => "Ause 'u valore de default de uicchi ($1)",
'timezoneuseoffset' => "Otre (specifiche 'a distanze)",
'timezoneoffset' => 'Distanze¹:',
'servertime' => "Orarie d'u server:",
@@ -1139,8 +1168,8 @@ Addà essere assaje assaje sotte a $1 {{PLURAL:$1|carattere|carattere}}.",
'email' => 'Poste',
'prefs-help-realname' => "'U nome vere (quidde d'u munne reale) jè facoltative.
Ce tu 'u mitte, a fatje ca è fatte t'avène ricanusciute.",
-'prefs-help-email' => "L'indirizze e-mail jè facoltative ma te dè 'a possibbilità de mannarte 'na password nova nove ce tu te scuèrde quedde ca tenive.
-Tu puè pure scacchià de lassà otre condatte ausanne l'utende tue o le pàggene de le 'ngazzaminde senza ca abbesogne de fa canoscere l'idendità toje.",
+'prefs-help-email' => "L'indirizze e-mail jè facoltative ma te dè 'a possibbilità de mannarte 'na password nova nove ce tu te scuèrde quedde ca tenive.",
+'prefs-help-email-others' => "Tu puè pure scacchià de lassà a l'otre de condattarte ausanne 'a pàgene utende toje o quedde de le 'ngazzaminde senze ca onne abbesogne de dicere ce si tu.",
'prefs-help-email-required' => "L'indirizze e-mail jè obbligatorie.",
'prefs-info' => "'Mbormaziune nderra-nderre",
'prefs-i18n' => 'Indernazzionalizzazzione',
@@ -1266,15 +1295,15 @@ Tu puè pure scacchià de lassà otre condatte ausanne l'utende tue o le pàggen
'right-userrights' => 'Cange tutte le deritte utende',
'right-userrights-interwiki' => "Cange le deritte utende de le utinde sus a l'otre Uicchi",
'right-siteadmin' => "Blocche e sblocche 'u database",
-'right-reset-passwords' => "Azzere l'otre password de l'utinde",
'right-override-export-depth' => "L'esportazione de pàggene inglude pàggene collegate 'mbonde a 'na profonnetà de 5",
'right-sendemail' => "Manne 'a mail a otre 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",
-'rightsnone' => '(ninde)',
+'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',
+'rightsnone' => '(ninde)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'ligge sta pàgene',
@@ -1399,12 +1428,12 @@ Vide 'a [[Special:NewFiles|gallerie de le file nuève]] pe vedè l'otre andeprim
'illegalfilename' => "'U nome d'u file \"\$1\" tène carattere ca non ge sonde conzendite jndr'à le titele de le pàggene.
Pe piacere vide ce renomene 'u file e pruève a carecarle 'n'otra vote.",
'badfilename' => '\'U nome d\'u file ha state cangete jndr\'à "$1".',
-'filetype-mime-mismatch' => "L'estenzione d'u file non ge se iacchie cu 'u tipe MIME.",
+'filetype-mime-mismatch' => 'L\'estenzione d\'u file ".$1" non ge se iacchie cu \'u tipe MIME idendificate d\'u file ($2).',
'filetype-badmime' => 'Le file d\'u tipe MIME "$1" non ge se ponne carecà.',
'filetype-bad-ie-mime' => 'Non ge pozze carecò stu file purcè Internet Explorer \'u vole cumme "$1", e allore jidde se penze ca jè \'nu tipe de file potenzialmende pericolose.',
'filetype-unwanted-type' => "'''\".\$1\"''' ète 'nu tipe de file ca non ge vulime.
{{PLURAL:\$3|'U tipe de file preferite ète|Le tipe de file preferite sonde}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' ète 'nu tipe de file ca non g'è permesse.
+'filetype-banned-type' => "'''\".\$1\"''' {{PLURAL:\$4|ète 'nu tipe de file ca non g'è permesse|sonde tipe de file ca no sonde permesse}}.
{{PLURAL:\$3|'U tipe de file permesse ète|Le tipe de file permesse sonde}} \$2.",
'filetype-missing' => '\'U file non ge tène l\'estenzione (cumme a ".jpg").',
'empty-file' => "'U file ca tu è mannate ere vacande.",
@@ -1424,6 +1453,7 @@ Stu file jè $2.",
'emptyfile' => "'U file ca tu è carecate pare ca è vacande.
Pò essere ca è scritte male 'u nome d'u file e n'à carecate 'n'otre.
Pe piacere condrolle ce tu avveramende vuè cu careche stu file.",
+'windows-nonascii-filename' => 'Sta Uicchi non ge supporte le nome de le file cu le carattere speciale.',
'fileexists' => "'Nu file cu stu nome esiste già, pe piacere verifiche '''<tt>[[:$1]]</tt>''' ce tu non ge sì secure no 'u sce cangianne.
[[$1|thumb]]",
'filepageexists' => "'A pàgene de descrizione pe stu file ha state già ccreiate 'u '''<tt>[[:$1]]</tt>''', ma nisciune file cu stu nome osce a die esiste.
@@ -1460,6 +1490,8 @@ Avissa verificà 'a storie d'a scangellazzione d'u file apprime de condinuà a c
Pe piacere verifiche le 'mbostaziune d'u ''file_uploads''.",
'uploadscripted' => "Stu file condene HTML o codece de script ca ponne essere inderpretete jndr'à 'nu mode sbagliete da le browser.",
'uploadvirus' => "Alanga toje, 'u file condiene 'nu virus! Dettaglie: $1",
+'uploadjava' => "'U file jè 'nu file de tipe ZIP ca condene 'nu file de classe Java.
+'U carecamende de le file Java non g'è permesse, purcé lore ponne causà l'aggiramende de le restriziune de sicurezze.",
'upload-source' => 'File sorgende',
'sourcefilename' => "Nome d'u fail d'origgine:",
'sourceurl' => 'URL sorgende:',
@@ -1470,10 +1502,6 @@ Pe piacere verifiche le 'mbostaziune d'u ''file_uploads''.",
'watchthisupload' => 'Condrolle stu file',
'filewasdeleted' => "'Nu file ca se chiamave cumme a quidde tue ha state apprime carecate e pò ha state scangellete.
Tu avissa condrollà 'u $1 apprime ca condinue cu 'u carecamende.",
-'upload-wasdeleted' => "'''FA ATTENZIO': Tu ste careche 'nu file ca apprime ha state scangellete.'''
-
-Tu avissa considerà ce è proprie utile carecà stu file.
-L'archivije de le scangellaminde pe stu file 'u iacchije aqquà pe convenienze:",
'filename-bad-prefix' => "'U nome d'u file ca tu ste careche accumenze pe '''\"\$1\"''', ca normalmende jè 'u nome ca assegne a machena fotografeche e non 'nu nome descrittive d'u file ca vuè ccu careche.
Pe piacere scacchie 'n'otre nome ca jè cchiù descrittive.",
'upload-success-subj' => 'Carecamende sciute apposte',
@@ -1498,12 +1526,29 @@ Ce 'u probbleme angore jè presende, condatte 'n'[[Special:ListUsers/sysop|ammin
'upload-unknown-size' => 'Dimenziona scanusciute',
'upload-http-error' => "S'a verificate 'n'errore HTTP: $1",
+# ZipDirectoryReader
+'zip-file-open-error' => "'N'errore ha state acchiate quanne ste apreve 'u file pe le verifeche sus a 'u ZIP.",
+'zip-wrong-format' => "'U file specificate non g'ere 'nu file ZIP.",
+'zip-bad' => "'U file jè corrotte oppure jè 'nu file ZIP ca no se pò leggere.
+Non ge po essere verificate opportunamende pa securezze.",
+'zip-unsupported' => "'U file jè 'nu file de tipe ZIP ca ause servizie d'u ZIP ca non ge sonde supportate da MediaUicchi.
+Non g'è possibbele verificà pa securezze.",
+
+# Special:UploadStash
+'uploadstash' => "Careche 'u file scunnute",
+'uploadstash-summary' => "Sta pàgene dè l'accesse a le file ca avènene carecate (o sonde in fase de carecamende) ma non ge sonde angore pubblecate sus a Uicchi. Ste file non ge sonde vesibbele, a nisciune, sulamende a l'utende ca l'ha carecate.",
+'uploadstash-clear' => 'Pulizze le file scunnute',
+'uploadstash-nofiles' => 'Tu non ge tine file scunnute',
+'uploadstash-badtoken' => "L'esecuzione de sta azione non g'ha riuscite, pò essere purcé le credenziale pe le cangiaminde onne scadute. Pruève arrete.",
+'uploadstash-errclear' => "'A pulizie de le file non g'ha riuscite.",
+'uploadstash-refresh' => "Aggiorne l'elenghe de le file",
+
# img_auth script messages
'img-auth-accessdenied' => 'Accesse negate',
'img-auth-nopathinfo' => "No se iacchie PATH_INFO.
-'U server tue non g'è 'mbostate o non ge passe st'mbormazione.
+'U server tune non g'è 'mbostate o non ge passe st'mbormazione.
Pò essere ca jè basate sus a 'u CGI e non ge pò supportà img_auth.
-Vide http://www.mediawiki.org/wiki/Manual:Image_Authorization.",
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Vide autorizzazzione de le immaggine.]",
'img-auth-notindir' => "'U percorse richieste non ge stè jndr'à cartelle de carecamende configurate",
'img-auth-badtitle' => 'Non ge se pò costruì \'nu titele valide da "$1".',
'img-auth-nologinnWL' => 'Tu non ge sì collegate e "$1" non ge stè jndr\'à lista vianghe.',
@@ -1581,7 +1626,7 @@ Quanne jè filtrate da l'utende, sulamende le file ca quidde utende ave carecate
'Na [[Special:WhatLinksHere/$2|liste comblete]] è disponibbele.",
'nolinkstoimage' => 'Non ge stonne pàggene ca appodene a stu fail.',
'morelinkstoimage' => 'Vide [[Special:WhatLinksHere/$1|cchiù collegaminde]] a stu file.',
-'redirectstofile' => "{{PLURAL:$1|'U seguende file se ridirezione|Le seguende $1 file se ridirezionane}} a stu file:",
+'linkstoimage-redirect' => "$1 (redirezionamende d'u file) $2",
'duplicatesoffile' => "{{PLURAL:$1|'U seguende file ète 'nu|Le seguende $1 file sonde}} duplicate de stu file ([[Special:FileDuplicateSearch/$2|cchiù 'mbormaziune]]):",
'sharedupload' => 'Stu file avène da $1 e pò essere ausate da otre pruggette.',
'sharedupload-desc-there' => "Stu file è da $1 e pò essere ausate pe otre pruggette.<br />
@@ -1673,19 +1718,20 @@ Arrecuèrdete de condrollà pe otre collegaminde a le template apprime de scange
'statistics-users-active-desc' => "Sonde l'utinde ca onne fatte quacchecose jndr'à l'urteme {{PLURAL:$1|giurne|$1 giurne}}",
'statistics-mostpopular' => 'Pàggene cchiù visitete',
-'disambiguations' => 'Pàggene de disambiguazione',
+'disambiguations' => 'Pàggene collegate a le pàggene de disambiguazione',
'disambiguationspage' => 'Template:disambigue',
'disambiguations-text' => "Le pàggene seguende appondene a 'na '''pàgene de disambiguazione'''.
'Nvece avessere appondà a 'a temateca appropriate.<br />
'Na pàgene jè trattate cumme pàgene de disambiguazione ce tu ause 'nu template ca è appundate da [[MediaWiki:Disambiguationspage|Pàggene de disambiguazione]]",
-'doubleredirects' => 'Ridirezionaminde a doppie',
-'doubleredirectstext' => "Sta pàgene elenghe le pàggene ca se ridirezionane sus a otre pàggene de ridirezionaminde.
+'doubleredirects' => 'Ridirezionaminde a doppie',
+'doubleredirectstext' => "Sta pàgene elenghe le pàggene ca se ridirezionane sus a otre pàggene de ridirezionaminde.
Ogne righe condene 'nu collegamende a 'u prime e a 'u seconde ridirezionamende pe fà vedè addò arrive 'u seconde ridirezionamende, 'u quale jè normalmende 'a pàgena de destinaziona \"rèale\", addò 'u prime ridirezionamende avesse appondà.
Le situaziune de <del>ingrocie</del> onne state resolte.",
-'double-redirect-fixed-move' => "[[$1]] ha state spustate.
+'double-redirect-fixed-move' => "[[$1]] ha state spustate.
Mò s'avène redirette a [[$2]].",
-'double-redirect-fixer' => 'Correttore de redirezionaminde',
+'double-redirect-fixed-maintenance' => 'Aggiuste le doppie redirezionaminde da [[$1]] a [[$2]].',
+'double-redirect-fixer' => 'Correttore de redirezionaminde',
'brokenredirects' => 'Redirezionamninde scuasciete',
'brokenredirectstext' => "Le ridirezionaminde ca seguene appondene a pàggene ca non g'esistene:",
@@ -1762,6 +1808,7 @@ Pe piacere note ca otre site de Indernette ponne appondà a 'nu file cu 'na URL
'pager-newer-n' => '{{PLURAL:$1|cchiù nueve 1|cchiù nueve $1}}',
'pager-older-n' => '{{PLURAL:$1|cchiù vecchie 1|cchiù vicchie $1}}',
'suppress' => 'Supervisione',
+'querypage-disabled' => 'Sta pàgena speciale jè desabbilitate pe mutive de prestaziune.',
# Book sources
'booksources' => 'Sorgende de le libbre',
@@ -1814,12 +1861,13 @@ Vide pure [[Special:WantedCategories|Categorije cercate]].",
'sp-deletedcontributions-contribs' => 'condrebbute',
# Special:LinkSearch
-'linksearch' => 'Collegaminde fore a Uicchipèdie',
+'linksearch' => 'Ricerche de collegaminde fore a Uicchipèdie',
'linksearch-pat' => 'Cirche le cambiune:',
'linksearch-ns' => 'Neimspeise:',
'linksearch-ok' => 'Cirche',
'linksearch-text' => 'Le wildcard cumme a "*.wikipedia.org" ponne essere ausate.<br />
-Protocolle supportate: <tt>$1</tt>',
+Onne abbesogne almede de \'nu dominie de levèlle ierte, pe esembie "*.org". <br />
+Protocolle supportate: <tt>$1</tt> (no sce aggiungenne nisciune de chiste jndr\'à recerca toje).',
'linksearch-line' => '$1 jè pundete da $2',
'linksearch-error' => "Le wildcard ponne essere ausate sulamende a l'inzie de l'hostname.",
@@ -1880,6 +1928,10 @@ L'indirizze e-mail ca tu è 'nzerite jndr'à le [[Special:Preferences|preferenze
'noemailtext' => "Stu utende non g'à specificate 'n'indirizze e-mail valide.",
'nowikiemailtitle' => 'Nisciuna e-mail è permesse',
'nowikiemailtext' => 'Stu utende ha scacchiate de nò ricevere email da otre utinde.',
+'emailnotarget' => "Nome de l'utende ca non g'esiste o non g'è valide pu recipiende.",
+'emailtarget' => "Mitte 'u nome utende d'u recipiende",
+'emailusername' => 'Nome utende:',
+'emailusernamesubmit' => 'Conferme',
'email-legend' => "Manne 'na mail a n'otre utende de {{SITENAME}}",
'emailfrom' => 'Da:',
'emailto' => 'A:',
@@ -1904,10 +1956,10 @@ L'indirizze e-mail ca tu è 'nzerite jndr'à le [[Special:Preferences|preferenze
'watchlistanontext' => 'Pe piacere $1 pe vedè o cangià le vosce sus a liste de le pàggene condrollete.',
'watchnologin' => 'Non ge sinde colleghete',
'watchnologintext' => 'Tu a essere [[Special:UserLogin|colleghete]] pe cangià le pàggene condrollete tue.',
-'addedwatch' => "Mise jndr'à le pàggene condrollete",
+'addwatch' => "Mitte jndr'à le pàggene condrollate",
'addedwatchtext' => "'A pàgene \"[[:\$1]]\" ha state aggiunde jndr'à le [[Special:Watchlist|pàggene condrollete]].
Le cangiaminde future a sta pàgene e 'a pàgene de le 'ngazzaminde associete le puè acchià aqquà, e 'a pàgene avène signete cu 'u '''grascette''' jndr'à [[Special:RecentChanges|liste de le cangiaminde recende]] pe facilità l'identificazione.",
-'removedwatch' => 'Live da le pàggene condrollate',
+'removewatch' => 'Live da le pàggene condrollate',
'removedwatchtext' => '\'A pàgene "[[:$1]]" ha state scangillete da [[Special:Watchlist|le pàggene condrollete tue]].',
'watch' => 'Condrolle',
'watchthispage' => 'Condrolle sta pàgene',
@@ -1928,8 +1980,9 @@ Le cangiaminde future a sta pàgene e 'a pàgene de le 'ngazzaminde associete le
'watchlist-options' => "Opzione d'a liste de le pàggene condrollete",
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Fà vedè...',
-'unwatching' => 'No fà vedè...',
+'watching' => 'Fà vedè...',
+'unwatching' => 'No fà vedè...',
+'watcherrortext' => "'N'errore s'a verificate quanne ste cangiave le 'mbostaziune de le pàggene condrollate pe \"\$1\".",
'enotif_mailer' => '{{SITENAME}} Notificatore de email',
'enotif_reset' => 'Signe tutte le pàggene cumme visitete',
@@ -1961,16 +2014,16 @@ Tu puè pure azzerà \'a spunde de le notifiche pe tutte le pàggene condrollate
--
Pe cangià le \'mbostaziune de notifeche de l\'email toje, vè vide
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Pe cangià le \'mbostaziune de l\'elenghe de le pàggene condrollate tune, vè vide
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Pe scangellà \'a pàgene da \'a liste de le pàggene condrollate, vè vide
$UNWATCHURL
Segnalaziune e otre assistenze:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => "Scangille 'a pàgene",
@@ -1987,7 +2040,7 @@ Segnalaziune e otre assistenze:
Conferme quidde ca ste face, ce si sicure ca è capite quidde ca ste cumbine e ce è corrette rispette a [[{{MediaWiki:Policy-url}}|le regole de scangellazione]], ce no statte quiete.",
'actioncomplete' => 'Aziona Combletete',
'actionfailed' => 'Aziona fallite',
-'deletedtext' => '"<nowiki>$1</nowiki>" onne state scangillete.
+'deletedtext' => '"$1" onne state scangillete.
Vide $2 pe \'na reggistrazione de le scangellaziune recende.',
'deletedarticle' => 'scangillete "[[$1]]"',
'suppressedarticle' => 'soppresse "[[$1]]"',
@@ -2049,7 +2102,7 @@ Vide 'a [[Special:ProtectedPages|liste de le pàggene prutette]] pa liste de le
'protect_expiry_invalid' => 'Orarie de scadenze jè invalide.',
'protect_expiry_old' => "L'ore de scadenza jè jndr'à 'u passate.",
'protect-unchain-permissions' => 'Sbluecche otre opzione de protezzione',
-'protect-text' => "Tu puè vedè e cangià 'u levèlle de protezzione p'a pàgene '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Tu puè vedè e cangià 'u levèlle de protezzione p'a pàgene '''$1'''.",
'protect-locked-blocked' => "Tu non ge puè cangià le levèlle de protezzione quanne si bloccate.
Aqquà stonne le 'mbostaziune corrende pa pàgene '''$1''':",
'protect-locked-dblock' => "Le levèlle de protezzione non ge ponne essere cangete purcè stè 'nu blocche d'u database.
@@ -2104,9 +2157,8 @@ Tu puè cangià 'u levèlle de protezione de sta pàgene ma stu cangiamende non
'undeletepagetext' => "{{PLURAL:$1|'A seguende pàgene ha state scangellate ma ète|Le seguende $1 pàggene one state scangellate ma sonde}} angore in archivije e se pò reprocessà.<br />
L'archivije avène periodicamende sdevachete.",
'undelete-fieldset-title' => 'Repristine le revisiune',
-'undeleteextrahelp' => "Pe repristina totte 'a storie d'a pàgene, lasse tutte le caselle cu le spunde vacande e cazze '''''Repristine'''''.
-Pe fà 'nu repristine selettive, mitte 'a spunde jndr'à le caselle corrispondende a le revisiune ca vuè ccu repristine e pò cazze '''''Repristine'''''.
-Cazzanne '''''Azzera''''' avène pulezzate 'u cambe d'u commende e tutte le caselle cu 'a spunde.",
+'undeleteextrahelp' => "Pe repristina totte 'a storie d'a pàgene, lasse tutte le caselle cu le spunde vacande e cazze '''''{{int:undeletebtn}}'''''.
+Pe fà 'nu repristine selettive, mitte 'a spunde jndr'à le caselle corrispondende a le revisiune ca vuè ccu repristine e pò cazze '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|revisione|revisiune}} archiviete',
'undeletehistory' => "Ce tu repristine 'a pàgene, tutte le revisiune avènene repristinate jndr'à storie.
Ce 'na pàgena nove cu 'u stesse nome ha state ccrejate da 'a scangellazione, le revisiune repristinate iessène jndr'à storia prengepàle.",
@@ -2153,9 +2205,12 @@ $1",
'undelete-show-file-submit' => 'Sine',
# Namespace form on various pages
-'namespace' => 'Namespace:',
-'invert' => "Selezione 'a smerse",
-'blanknamespace' => '(Prengepàle)',
+'namespace' => 'Namespace:',
+'invert' => "Selezione 'a smerse",
+'tooltip-invert' => "Signe sta sckatele pe sconnere le cangiaminde a le pàggene cu 'u namespace scacchiate (e le namespace associate ce sonde signate)",
+'namespace_association' => 'Namespace associate',
+'tooltip-namespace_association' => "Signe sta sckatele pure pe 'ngludere le namespace de le 'ngazzaminde o le suggette associate cu 'u namespace scacchiate",
+'blanknamespace' => '(Prengepàle)',
# Contributions
'contributions' => "Condrebbute de l'utende",
@@ -2205,13 +2260,15 @@ L'urteme archivije de le bloccaminde se iacche aqquà sotte pe referimende:",
'whatlinkshere-filters' => 'Filtre',
# Block/unblock
+'autoblockid' => 'Autoblocche #$1',
+'block' => "Bluècche l'utende",
+'unblock' => "Sbluècche l'utende",
'blockip' => "Blocche l'utende",
'blockip-title' => "Bluecche l'utende",
'blockip-legend' => "Bluecche l'utende",
'blockiptext' => "Ause 'a schermata de sotte pe bloccà l'accesse in scritture de 'nu specifiche indirizze IP o utende.
Quiste avessa essere fatte sulamende pe prevenìe 'u vandalisme e in accorde cu [[{{MediaWiki:Policy-url}}|le reghele]].
Mitte pure 'nu mutive specifiche aqquà sotte (pe esembije, nnomene 'a pàgene addò è acchiate 'u vandalisme).",
-'ipaddress' => 'Indirizze IP:',
'ipadressorusername' => "Indirizze IP o nome de l'utende:",
'ipbexpiry' => 'More:',
'ipbreason' => 'Mutive:',
@@ -2224,7 +2281,7 @@ Mitte pure 'nu mutive specifiche aqquà sotte (pe esembije, nnomene 'a pàgene a
** Menacce e intimidaziune
** Abbuse de cunde utende multiple
** Nome de l'utende inaccettabbele",
-'ipbanononly' => "Blocche sulamende l'utinde anonime",
+'ipb-hardblock' => "Non ge face cangià l'utinde reggistrate da stu 'ndirizze IP",
'ipbcreateaccount' => 'No fà ccrejà le cunde utinde',
'ipbemailban' => "No fà mannà email a l'utinde",
'ipbenableautoblock' => "Automaticamende blocche l'urteme indirizze IP ausate da stu utende e tutte le sottosequenze de le IP ca onne state ausate pe cangià",
@@ -2235,12 +2292,15 @@ Mitte pure 'nu mutive specifiche aqquà sotte (pe esembije, nnomene 'a pàgene a
'ipbotherreason' => 'Otre mutive:',
'ipbhidename' => 'Scunne le nome utinde da le cangiaminde e da le liste',
'ipbwatchuser' => "Vide a pàgena utende e quedde de le 'ngazzaminde de stu utende",
-'ipballowusertalk' => "Permette a stu utende de cangià 'a propria pàgene de le 'ngazzaminde quanne ète bloccate",
+'ipb-disableusertalk' => "Non ge face cangià a stu utende 'a pàgena de le 'ngazzaminde sue fine ca jè bloccate",
'ipb-change-block' => "Blocche 'n'otra vote l'utende cu ste 'mbostaziune",
+'ipb-confirm' => "Conferme 'u blocche",
'badipaddress' => 'Indirizze IP invalide',
'blockipsuccesssub' => 'Blocche effettuate',
'blockipsuccesstext' => "[[Special:Contributions/$1|$1]] ha state bloccate.<br />
Vide [[Special:IPBlockList|'a liste de le IP bloccate]] pe revedè le blocche.",
+'ipb-blockingself' => "Te stè bluecche da sule, si secure ca 'u vuè ccu face?",
+'ipb-confirmhideuser' => "Tu ste bluècche 'n'utende cu l'opzione \"scunne utende\" abbilitate. St'operazione pò leve 'u nome de l'utende jndr'à tutte l'elenghe e le vôsce de l'archivije. Tu si secure ca 'u vuè ccu face?",
'ipb-edit-dropdown' => "Cange le mutive d'u blocche",
'ipb-unblock-addr' => 'Sblocche $1',
'ipb-unblock' => 'Sblocche nome utende o indirizze IP',
@@ -2250,17 +2310,23 @@ Vide [[Special:IPBlockList|'a liste de le IP bloccate]] pe revedè le blocche.",
'unblockiptext' => "Ause 'a maschera aqquà sotte pe repristinà l'accesse in scritture a le indirizze IP o a le cunde utinde ca apprime avèrene state bloccate.",
'ipusubmit' => 'Live stu blocche',
'unblocked' => '[[User:$1|$1]] ha state sblocchete',
+'unblocked-range' => '$1 ha state sbloccate',
'unblocked-id' => 'Blocche $1 ha state luvete',
+'blocklist' => 'Utinde bloccate',
'ipblocklist' => 'Utinde bloccate',
'ipblocklist-legend' => "Iacchije 'n'utende blocchete",
-'ipblocklist-username' => 'Nome utende o indirizze IP:',
-'ipblocklist-sh-userblocks' => '$1 le cunde utinde blocchete',
-'ipblocklist-sh-tempblocks' => '$1 le blocche temboranee',
-'ipblocklist-sh-addressblocks' => '$1 le blocche de le singhele indirizze IP',
+'blocklist-userblocks' => "Scunne le blocche sus a le cunde de l'utinde",
+'blocklist-tempblocks' => 'Scunne le blocche temboranèe',
+'blocklist-addressblocks' => 'Scunne le blocche de le IP singole',
+'blocklist-timestamp' => 'Orarie de stambe',
+'blocklist-target' => 'Destinazione',
+'blocklist-expiry' => 'Scade',
+'blocklist-by' => 'Amministrazioe de le blocche',
+'blocklist-params' => "Parametre d'u blocche",
+'blocklist-reason' => 'Mutive',
'ipblocklist-submit' => 'Cirche',
'ipblocklist-localblock' => 'Blocche locale',
'ipblocklist-otherblocks' => 'Otre {{PLURAL:$1|blocche|blocche}}',
-'blocklistline' => '$1, $2 blocchete $3 ($4)',
'infiniteblock' => 'quanne pisce a iaddine',
'expiringblock' => "more 'u $1 a le $2",
'anononlyblock' => "sulamende l'anonime",
@@ -2285,7 +2351,7 @@ L'archivije de le soppressiune 'u puè acchià aqquà sotte pe riferimende:",
'reblock-logentry' => "cangiate l'imbostazione de le blocche pe [[$1]] cu 'na data de scadenze de $2 $3",
'blocklogtext' => "Quiste è l'archivije de l'aziune de blocche e sblocche pe l'utinde.
L'indirizze IP automaticamende bloccate non ge stonne jndr'à liste.
-Vide 'a [[Special:IPBlockList|liste de le IP bloccate]] pa liste de le operaziune de ban e blocche ca stonne attive mò.",
+Vide 'a [[Special:BlockList|liste de le IP bloccate]] pa liste de le operaziune de ban e blocche ca stonne attive mò.",
'unblocklogentry' => 'sblocchete $1',
'block-log-flags-anononly' => "sulamende l'utinde anonime",
'block-log-flags-nocreate' => 'ccreazione de le cunde utinde disabbilitete',
@@ -2299,9 +2365,9 @@ Vide 'a [[Special:IPBlockList|liste de le IP bloccate]] pa liste de le operaziun
'ipb_expiry_temp' => "Le blocche sus a le nome de l'utinde scunnute onna essere permanende.",
'ipb_hide_invalid' => 'Non ge se pò scangellà stu cunde utende; tène troppe cangiaminde.',
'ipb_already_blocked' => '"$1" jè ggià blocchete',
-'ipb-needreblock' => "== Già blocchete ==
-$1 ha state già blocchete. Vuè cu cange le 'mbostaziune?",
+'ipb-needreblock' => "$1 ha state già blocchete. Vuè cu cange le 'mbostaziune?",
'ipb-otherblocks-header' => 'Otre {{PLURAL:$1|blocche|blocche}}',
+'unblock-hideuser' => "Tu non ge puè sbloccà st'utende, purcé 'u nome utende ha state ggià scunnute.",
'ipb_cant_unblock' => "Errore: L'ID $1 d'u blocche non ge se iacchie.
Pò essere ca ha state già sbloccate.",
'ipb_blocked_as_range' => "Errore: l'IP $1 non g'à state bloccate direttamende e non ge pò essere sbloccate.
@@ -2343,10 +2409,10 @@ Arrecuerdete de [[Special:UnlockDB|luvà 'u blocche]] apprrisse ca 'a manutenzio
'lockfilenotwritable' => "'U blocche sus a le file d'u database non g'è scrivibbile.
Pe bloccà o sbloccà 'u database quiste abbesogne de essere scritte da 'nu web server.",
'databasenotlocked' => "'U database non g'è blocchete.",
+'lockedbyandtime' => "(de $1 'u $2 a le $3)",
# Move page
'move-page' => 'Spuèste $1',
-'move-page-backlink' => '↠$1',
'move-page-legend' => "Spuèste 'a pàgene",
'movepagetext' => "Ausanne 'u form aqquà sotte ste cange 'u nome d'a pàgene, spustanne tutte a storia soje sus a 'u nome néve.
U' vecchie titele devènde 'nu ridirezionamende sus 'a pàgena nove.
@@ -2469,7 +2535,7 @@ Cumme urteme case, tu puè pure ausà 'nu collegamende, pe esembie [[{{#Special:
'allmessagesdefault' => 'Teste de default',
'allmessagescurrent' => 'Teste corrende',
'allmessagestext' => "Queste jè 'na liste de tutte le messagge d'u sisteme ca se ponne acchià jndr'à le namespace de MediaUicchi.
-Pe piacere vè vide [http://www.mediawiki.org/wiki/Localisation Localizzazione de MediaUicchi] e [http://translatewiki.net translatewiki.net] ce tu vuè ccu condrebbuisce a 'a localizzazione de MediaUicchi.",
+Pe piacere vè vide [//www.mediawiki.org/wiki/Localisation Localizzazione de MediaUicchi] e [//translatewiki.net translatewiki.net] ce tu vuè ccu condrebbuisce a 'a localizzazione de MediaUicchi.",
'allmessagesnotsupportedDB' => "Sta pàgene non ge pò essere ausate purcè '''\$wgUseDatabaseMessages''' ha state disabbilitate.",
'allmessages-filter-legend' => 'Filtre',
'allmessages-filter' => "Filtre cu 'nu state personalizzate:",
@@ -2613,9 +2679,7 @@ Permette de aggiungere 'nu mutive jndr'à 'u riepileghe",
'tooltip-summary' => "Mitte 'nu riepileghe piccinne",
# Metadata
-'nodublincore' => "'U metadata ''Dublin Core RDF'' ète disabbilitate pe stu server.",
-'nocreativecommons' => "'U metadata ''Creative Commons RDF'' ète disabilitate pe stu server.",
-'notacceptable' => "'U server Uicchi non ge pò vedè le date jndr'à 'u formate ca 'u cliende tue pò leggere.",
+'notacceptable' => "'U server Uicchi non ge pò vedè le date jndr'à 'u formate ca 'u cliende tue pò leggere.",
# Attribution
'anonymous' => '{{PLURAL:$1|utende|utinde}} anonime de {{SITENAME}}',
@@ -2639,33 +2703,17 @@ Stu fatte ha state causate da 'nu collegamende a 'nu site esterne ca appartene a
'spam_blanking' => 'Tutte le revisiune condènene collegaminde a $1, vacande',
# Info page
-'infosubtitle' => "'Mbormazione pe pàgene",
-'numedits' => 'Numere de cangiaminde (pàgene): $1',
-'numtalkedits' => "Numere de cangiaminde (pàgene de le 'ngazzaminde): $1",
-'numwatchers' => 'Numere de visitature: $1',
-'numauthors' => 'Numere de autore distinde (vôsce): $1',
-'numtalkauthors' => "Numere de autore distinde (pàgene de le 'ngazzaminde): $1",
-
-# Math options
-'mw_math_png' => "Fà sembre 'u render de le PNG",
-'mw_math_simple' => 'HTML ce jè avveramende facile oppure PNG',
-'mw_math_html' => 'HTML ce jè possibbile oppure PNG',
-'mw_math_source' => "Lassele cumme a 'nu TeX (pe le browser de teste)",
-'mw_math_modern' => 'Raccomandate pe le browser cchiù nuève',
-'mw_math_mathml' => 'MathML ce possibbile (sperimendele)',
-
-# Math errors
-'math_failure' => 'Analisi fallite',
-'math_unknown_error' => 'errore scanusciute',
-'math_unknown_function' => 'funziona scanusciute',
-'math_lexing_error' => 'errore de lessiche',
-'math_syntax_error' => 'errore de sintassi',
-'math_image_error' => "'A conversione d'u PNG ha fallite;
-condrolle ce l'installazione de latex e dvips (o dvipg + gs + convertitore) jè corrette",
-'math_bad_tmpdir' => "Non ge puè scrivere o ccrejà 'na cartelle temboranea de math",
-'math_bad_output' => "Non ge puè scrivere o ccrejà 'na cartelle de destinazzione de math",
-'math_notexvc' => 'texvc eseguibbele perdute;
-pe piacere vide math/README pe configurà.',
+'pageinfo-title' => '\'Mbormaziune pe "$1"',
+'pageinfo-header-edits' => 'Cangiaminde',
+'pageinfo-header-watchlist' => 'Pàggene condrollate',
+'pageinfo-header-views' => 'Visite',
+'pageinfo-subjectpage' => 'Pàgene',
+'pageinfo-talkpage' => "Pàgene de le 'ngazzaminde",
+'pageinfo-watchers' => 'Numere de visitature',
+'pageinfo-edits' => 'Numere de cangiaminde',
+'pageinfo-authors' => 'Numere de autore diverse',
+'pageinfo-views' => 'Numere de visite',
+'pageinfo-viewsperedit' => 'Visite pe cangiaminde',
# Patrolling
'markaspatrolleddiff' => 'Signe cumme condrollate',
@@ -2702,22 +2750,25 @@ $1",
'nextdiff' => 'Cangiaminde cchiù nuève →',
# Media information
-'mediawarning' => "'''Attenziò''': Stu file pò condenè codece viziuse.
+'mediawarning' => "'''Attenziò''': Stu file pò condenè codece viziuse.
Ce l'esegue sus a 'u sisteme tue pò essere ca se combromette.",
-'imagemaxsize' => "Limite d'a dimenzione e l'immaggine:<br />''(pe le pàggene de descrizione d'u file)''",
-'thumbsize' => "Dimenziona d'a miniature:",
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pàgene|pàggene}}',
-'file-info' => "dimenzione d'u fail: $1, tipe de MIME: $2",
-'file-info-size' => "$1 × $2 pixel, dimenzione d'u fail: $3, tipe de MIME: $4",
-'file-nohires' => "<small>Manghe 'a risoluzione ierta.</small>",
-'svg-long-desc' => "Fail SVG, nominalmende sonde $1 × $2 pixel, dimenzione d'u fail: $3",
-'show-big-image' => 'Risoluzione chiena chiena',
-'show-big-image-thumb' => '<small>Dimenziune de sta andeprime: $1 × $2 pixels</small>',
-'file-info-gif-looped' => 'infinite',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frame}}',
-'file-info-png-looped' => 'infinite',
-'file-info-png-repeat' => 'eseguite $1 {{PLURAL:$1|vote|vote}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|frame|frame}}',
+'imagemaxsize' => "Limite d'a dimenzione e l'immaggine:<br />''(pe le pàggene de descrizione d'u file)''",
+'thumbsize' => "Dimenziona d'a miniature:",
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pàgene|pàggene}}',
+'file-info' => "dimenzione d'u fail: $1, tipe de MIME: $2",
+'file-info-size' => "$1 × $2 pixel, dimenzione d'u fail: $3, tipe de MIME: $4",
+'file-info-size-pages' => "$1 × $2 pixel, dimenzione d'u file: $3, tipe de MIME: $4, $5 {{PLURAL:$5|pàgene|pàggene}}",
+'file-nohires' => "<small>Manghe 'a risoluzione ierta.</small>",
+'svg-long-desc' => "Fail SVG, nominalmende sonde $1 × $2 pixel, dimenzione d'u fail: $3",
+'show-big-image' => 'Risoluzione chiena chiena',
+'show-big-image-preview' => '<small>Dimenziune de sta andeprime: $1.</small>',
+'show-big-image-other' => '<small>Otre resoluziune: $1.</small>',
+'show-big-image-size' => '$1 x $2 pixel',
+'file-info-gif-looped' => 'infinite',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frame}}',
+'file-info-png-looped' => 'infinite',
+'file-info-png-repeat' => 'eseguite $1 {{PLURAL:$1|vote|vote}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|frame|frame}}',
# Special:NewFiles
'newimages' => 'Gallerie de le fail nuève',
@@ -2744,7 +2795,7 @@ Tutte le sottosequenze ca appondene a stessa linea sonde considerete eccezziune,
Ce 'u fail ha state cangete da 'u state origginale sue, certe dettaglie pò essere ca no se vèdene jndr'à 'u fail cangete.",
'metadata-expand' => 'Fa vedè le dettaglie estese',
'metadata-collapse' => 'Scunne le dettaglie estese',
-'metadata-fields' => "EXIF le cambe de metadata elenghete jndr'à quiste messagge verranne mise sus a 'na pàgene de immaggine quanne 'a taggella de metadata jè collassete.
+'metadata-fields' => "Le cambe de le immaggine metadata elengate jndr'à stu messagge onna essere mise sus a 'na pàgene de immaggine quanne 'a taggella de metadata jè collassate.
Otre avènene scunnute pe defolt.
* make
* model
@@ -2752,7 +2803,13 @@ Otre avènene scunnute pe defolt.
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Larghezze',
@@ -2767,13 +2824,11 @@ Otre avènene scunnute pe defolt.
'exif-ycbcrpositioning' => 'posizzionamende de Y e C',
'exif-xresolution' => 'Resoluzione orizzondale',
'exif-yresolution' => 'Resoluzione verticale',
-'exif-resolutionunit' => 'Resoluzione de aunità de X e Y',
'exif-stripoffsets' => "Locazione d'u date immaggine",
'exif-rowsperstrip' => 'Numere de righe pe strisce',
'exif-stripbytecounts' => 'Byte pe strisce combresse',
'exif-jpeginterchangeformat' => 'Distanze da JPEG SOI',
'exif-jpeginterchangeformatlength' => "Byte d'u date d'u JPEG",
-'exif-transferfunction' => 'Funzione de trasferimende',
'exif-whitepoint' => "Cromaticetà d'u punde vianghe",
'exif-primarychromaticities' => 'Cromaticetà de le primarie',
'exif-ycbcrcoefficients' => "Spazie d'u culore pe le coefficiende d'a matrice de trasformazione",
@@ -2792,7 +2847,6 @@ Otre avènene scunnute pe defolt.
'exif-compressedbitsperpixel' => "Mode de combressione de l'immaggine",
'exif-pixelydimension' => "Larghezze de l'immaggine",
'exif-pixelxdimension' => "Altezze de l'immaggine",
-'exif-makernote' => "Note d'u ccreatore",
'exif-usercomment' => "Commende de l'utende",
'exif-relatedsoundfile' => 'File audio collegate',
'exif-datetimeoriginal' => "Date e ore d'a generazione de le date",
@@ -2806,7 +2860,6 @@ Otre avènene scunnute pe defolt.
'exif-exposureprogram' => "Programme d'esposizione",
'exif-spectralsensitivity' => 'Senzitività spettrale',
'exif-isospeedratings' => 'Senzibbilità ISO',
-'exif-oecf' => 'Fattore de conversione optoelettroneche',
'exif-shutterspeedvalue' => 'Velocità de esposizione APEX',
'exif-aperturevalue' => 'Aperture de APEX',
'exif-brightnessvalue' => 'Lumenosità de APEX',
@@ -2819,7 +2872,6 @@ Otre avènene scunnute pe defolt.
'exif-focallength' => "Distanze focale de l'obbiettive",
'exif-subjectarea' => "Area d'u soggette",
'exif-flashenergy' => "Putenze d'u flash",
-'exif-spatialfrequencyresponse' => "Resposte jndr'à frequenze spaziale",
'exif-focalplanexresolution' => "Resoluzione X sus a 'u piane focale",
'exif-focalplaneyresolution' => "Resoluzione Y sus a 'u piane focale",
'exif-focalplaneresolutionunit' => "Aunità de resoluzione d'u piane focale",
@@ -2828,7 +2880,6 @@ Otre avènene scunnute pe defolt.
'exif-sensingmethod' => 'Metode de rivelazzione',
'exif-filesource' => "Sorgende d'u file",
'exif-scenetype' => 'Tipe de scene',
-'exif-cfapattern' => 'Cambione CFA',
'exif-customrendered' => "Elabborazzione de l'immaggine personalizzate",
'exif-exposuremode' => "Mode d'esposizione",
'exif-whitebalance' => "Ualanzamende d'u vianghe",
@@ -2873,10 +2924,79 @@ Otre avènene scunnute pe defolt.
'exif-gpsareainformation' => "Nome de l'area d'u GPS",
'exif-gpsdatestamp' => "Date d'u GPS",
'exif-gpsdifferential' => "Correzzione differenziale d'u GPS",
+'exif-jpegfilecomment' => "commende d'u file JPEG",
+'exif-keywords' => 'Parole chiave',
+'exif-worldregioncreated' => "Reggione d'u munne addò ha state scattate 'a fote",
+'exif-countrycreated' => "Paese addò ha state scattate 'a fote",
+'exif-countrycodecreated' => "Codece pu Paese addò ha state scattate 'a fote",
+'exif-provinceorstatecreated' => "Provinge o State addò ha state scattate 'a fote",
+'exif-citycreated' => "Cetate addò ha state scattate 'a fote",
+'exif-sublocationcreated' => "Sottelocazione d'a cetate addò ha state scattate 'a fote",
+'exif-worldregiondest' => "Reggione d'u munne fatte vedè",
+'exif-countrydest' => 'Paise fatte vedè',
+'exif-countrycodedest' => 'Codece pe le paise fatte vedè',
+'exif-provinceorstatedest' => 'Provinge o state fatte vedè',
+'exif-citydest' => 'Cetate fatte vedè',
+'exif-sublocationdest' => "Sottelocazione d'a cetate fatte vedè",
'exif-objectname' => 'Titele curte',
+'exif-specialinstructions' => "'Struziune speciale",
+'exif-headline' => 'Testate',
+'exif-credit' => 'Credite/Fornitore',
+'exif-source' => 'Sorgende',
+'exif-editstatus' => "State editoriale de l'immaggine",
+'exif-urgency' => 'Priorità',
+'exif-fixtureidentifier' => "Nome d'a correzione",
+'exif-locationdest' => 'Locazione raffigurate',
+'exif-locationdestcode' => "Code d'a locazione raffigurate",
+'exif-objectcycle' => "Orarie d'u sciurne jndr'à 'u quale ha state progettate 'u media",
+'exif-contact' => "'Mbormaziune d'u condatte",
+'exif-writer' => 'Scretture',
+'exif-languagecode' => 'Lènghe',
+'exif-iimversion' => 'versione IIM',
+'exif-iimcategory' => 'Categorije',
+'exif-iimsupplementalcategory' => 'Categorije supplemendare',
+'exif-datetimeexpires' => 'Non ausà dope',
+'exif-datetimereleased' => "Relasciate 'u",
+'exif-originaltransmissionref' => "Codece d'a locazione d'a trasmissione origgenale",
+'exif-identifier' => 'Identificatore',
+'exif-lens' => 'Lunghezze ausate',
+'exif-serialnumber' => "Numere seriale d'a maghena fotografeche",
+'exif-cameraownername' => "Titolare d'a maghena fotografeche",
+'exif-label' => 'Etichette',
+'exif-datetimemetadata' => "Date de l'urteme cangiamende a 'u metadata",
+'exif-nickname' => "Nome informale de l'immaggine",
+'exif-rating' => 'Pundegge (sus a 5)',
+'exif-rightscertificate' => 'Gestione de le certificate da le deritte',
+'exif-copyrighted' => "Stat s'u copyright",
+'exif-copyrightowner' => "Titolare d'u copyright",
+'exif-usageterms' => "Termine d'ause",
+'exif-webstatement' => "Affermazione d'u copyright on line",
+'exif-originaldocumentid' => "ID uneche d'u documende origgenale",
+'exif-licenseurl' => "URL pa licenze d'u copyright",
+'exif-morepermissionsurl' => "'Mbormaziune alternative d'a licenze",
+'exif-attributionurl' => "Quanne ausa 'n'otra vote sta fatìe, pe piacere appondele",
+'exif-preferredattributionname' => "Quanne ausa 'n'otra vote sta fatìe, pe piacere di ce l'ha fatte",
+'exif-pngfilecomment' => "commende d'u file PNG",
+'exif-disclaimer' => 'Scareca uarrile',
+'exif-contentwarning' => "Avverimende sus a 'u condenute",
+'exif-giffilecomment' => "commende d'u file GIF",
+'exif-intellectualgenre' => 'Tipe de elemende',
+'exif-subjectnewscode' => "Codece d'u suggette",
+'exif-scenecode' => 'codece de scene IPTC',
+'exif-event' => 'Fatte raffigurate',
+'exif-organisationinimage' => 'Organizzazione raffigurate',
+'exif-personinimage' => 'Crestiane raffigurate',
+'exif-originalimageheight' => "Altezze de l'immaggine apprime ca avenève retagghiate",
+'exif-originalimagewidth' => "Larghezze de l'immaggine apprime ca avenève retagghiate",
# EXIF attributes
'exif-compression-1' => 'No combresse',
+'exif-compression-2' => "Gruppe CCITT 3 Decodifeche de Esecuzione d'a lunghezze 1-Dimenzionale Cangiate de Huffman",
+'exif-compression-3' => "Gruppe CCITT 3 de decodifeche d'u fax",
+'exif-compression-4' => "Gruppe CCITT 4 de decodifeche d'u fax",
+
+'exif-copyrighted-true' => 'Sotte copyright',
+'exif-copyrighted-false' => 'Pubbleche dominie',
'exif-unknowndate' => 'Data scanusciute',
@@ -2892,6 +3012,8 @@ Otre avènene scunnute pe defolt.
'exif-planarconfiguration-1' => 'formate a blocche',
'exif-planarconfiguration-2' => 'formate lineare',
+'exif-colorspace-65535' => 'None calibbrate',
+
'exif-componentsconfiguration-0' => "non g'esiste",
'exif-exposureprogram-0' => 'Non definite',
@@ -3005,6 +3127,10 @@ Otre avènene scunnute pe defolt.
'exif-gpslongitude-e' => 'Longitudine est',
'exif-gpslongitude-w' => 'Longitudine ovest',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => "$1 {{PLURAL:$1|metre|metre}} sus a 'u levèlle d'u mare",
+'exif-gpsaltitude-below-sealevel' => "$1 {{PLURAL:$1|metre|metre}} sotte a 'u levèlle d'u mare",
+
'exif-gpsstatus-a' => 'Mesurazione in corse',
'exif-gpsstatus-v' => 'Mesurazione inderoperabbele',
@@ -3016,21 +3142,73 @@ Otre avènene scunnute pe defolt.
'exif-gpsspeed-m' => 'Miglie pe ore',
'exif-gpsspeed-n' => 'Knots',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Chilomètre',
+'exif-gpsdestdistance-m' => 'Miglia',
+'exif-gpsdestdistance-n' => 'Miglia nauteche',
+
+'exif-gpsdop-excellent' => "'A uerre probbie ($1)",
+'exif-gpsdop-good' => 'Bbuène ($1)',
+'exif-gpsdop-moderate' => 'Moderate ($1)',
+'exif-gpsdop-fair' => 'Discrete ($1)',
+'exif-gpsdop-poor' => 'Puveridde ($1)',
+
+'exif-objectcycle-a' => "Sulamende 'a matine",
+'exif-objectcycle-p' => "Sulamende 'a sere",
+'exif-objectcycle-b' => 'De matine e de sere',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Direziona vere',
'exif-gpsdirection-m' => 'Direziona magnetiche',
+'exif-ycbcrpositioning-1' => 'Cendrate',
+'exif-ycbcrpositioning-2' => 'Co-posizionate',
+
+'exif-dc-contributor' => 'Condrebbutore',
+'exif-dc-coverage' => "Purtate spaziale o temborale d'u media",
+'exif-dc-date' => 'Date',
+'exif-dc-publisher' => 'Pubblecatore',
+'exif-dc-relation' => 'Media collegate',
+'exif-dc-rights' => 'Deritte',
+'exif-dc-source' => 'Media sorgende',
+'exif-dc-type' => 'Tipe de media',
+
+'exif-rating-rejected' => 'Scettate',
+
+'exif-isospeedratings-overflow' => 'Cchiù granne de 65535',
+
+'exif-iimcategory-ace' => 'Arte, culture e devertimende',
+'exif-iimcategory-clj' => 'Crimine e legge',
+'exif-iimcategory-dis' => 'Disastre e ingidende',
+'exif-iimcategory-fin' => 'Economije e affare',
+'exif-iimcategory-edu' => 'Studie',
+'exif-iimcategory-evn' => 'Ambiende',
+'exif-iimcategory-hth' => 'Salute',
+'exif-iimcategory-hum' => 'Inderesse umane',
+'exif-iimcategory-lab' => 'Fatìe',
+'exif-iimcategory-lif' => 'Stile de vite e tiembe libbere',
+'exif-iimcategory-pol' => 'Politeche',
+'exif-iimcategory-rel' => 'Releggione e credenze',
+'exif-iimcategory-sci' => 'Scienze e tecnologgie',
+'exif-iimcategory-soi' => 'Teme sociale',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Uerre, conflitte e agitaziune',
+'exif-iimcategory-wea' => 'Tiembe',
+
+'exif-urgency-normal' => 'Normale ($1)',
+'exif-urgency-low' => 'Vasce ($1)',
+'exif-urgency-high' => 'Ierte ($1)',
+'exif-urgency-other' => "Priorità definite da l'utende ($1)",
+
# External editor support
'edit-externally' => "Cange stu fail usanne n'applicazione esterne",
-'edit-externally-help' => "(Vide le [http://www.mediawiki.org/wiki/Manual:External_editors 'struzione de configurazione] pe avèje cchiù dettaglie)",
+'edit-externally-help' => "(Vide le [//www.mediawiki.org/wiki/Manual:External_editors 'struzione de configurazione] pe avèje cchiù dettaglie)",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tutte',
-'imagelistall' => 'tutte',
-'watchlistall2' => 'tutte',
-'namespacesall' => 'tutte',
-'monthsall' => 'tutte',
-'limitall' => 'tutte',
+'watchlistall2' => 'tutte',
+'namespacesall' => 'tutte',
+'monthsall' => 'tutte',
+'limitall' => 'tutte',
# E-mail address confirmation
'confirmemail' => "Conferme l'indirizze e-mail",
@@ -3109,17 +3287,24 @@ $1',
'trackbackdeleteok' => "'U trackback ha state scangellete cu successe.",
# Delete conflict
-'deletedwhileediting' => "'''Fà attenziò''': Sta pàgene ha state scangellete apprime ca tu acumenzasse a fà 'u cangiamende!",
-'confirmrecreate' => "L'utende [[User:$1|$1]] ([[User talk:$1|'Ngazzaminde]]) ha scangellate sta pàgene apprisse ca tu è accumenzate a cangiarle, cu stu mutive:
+'deletedwhileediting' => "'''Fà attenziò''': Sta pàgene ha state scangellete apprime ca tu acumenzasse a fà 'u cangiamende!",
+'confirmrecreate' => "L'utende [[User:$1|$1]] ([[User talk:$1|'Ngazzaminde]]) ha scangellate sta pàgene apprisse ca tu è accumenzate a cangiarle, cu stu mutive:
: ''$2''
Pe piacere conferme ca tu vuè avveramende reccrejà sta pàgene.",
-'recreate' => "Ccreje n'otra vote",
+'confirmrecreate-noreason' => "L'utende [[User:$1|$1]] ([[User talk:$1|'ngazzaminde]]) ha scangellate sta pàgene apprisse ca tu l'è cangiate. Pe piacere conferme ca tu vuè avveramende reccrejà sta pàgene.",
+'recreate' => "Ccreje n'otra vote",
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => "Pulizze 'a cache de sta pàgene?",
'confirm-purge-bottom' => "Pulezzanne 'a cache d'a pàgene se pò vedè 'a versiona cchiù aggiornate d'a pàgene.",
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Vuè ccu mitte sta pàgene da chidde condrollate?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Vuè ccu live sta pàgene da chidde condrollate?',
+
# Multipage image navigation
'imgmultipageprev' => '↠pàgena precedende',
'imgmultipagenext' => 'pàgena successive →',
@@ -3162,7 +3347,7 @@ Prueve l\'andeprima normele.',
'watchlistedit-normal-legend' => "Live le titele da 'a liste de le pàggene condrollete",
'watchlistedit-normal-explain' => "Le titele sus a 'a liste de le pàggene condrollate avènene fatte vedè aqquà sotte. <br />
Pe luà 'nu titele, smarche 'a sckatele affianghe a jidde e cazze \"{{int:Watchlistedit-normal-submit}}\".<br />
-Tu puè pure [[Special:Watchlist/raw|cangià 'a liste a mane]].",
+Tu puè pure [[Special:EditWatchlist/raw|cangià 'a liste a mane]].",
'watchlistedit-normal-submit' => 'Live le titele',
'watchlistedit-normal-done' => "{{PLURAL:$1|1 titele ha state|$1 titele onne state}} scangellete da 'a liste de le pàggene condrollete toje:",
'watchlistedit-raw-title' => "Cange 'a liste de le pàggene condrollete grezze",
@@ -3170,7 +3355,7 @@ Tu puè pure [[Special:Watchlist/raw|cangià 'a liste a mane]].",
'watchlistedit-raw-explain' => "Le titele sus a liste de le pàggene condrollate avènene fatte vedè aqquà sotte e ponne essere cangiate aggiunggenne o luannele da 'a liste; <br />
'nu titele pe linèe.<br />
Quanne è spicciate, cazze sus a \"{{int:Watchlistedit-raw-submit}}\".<br />
-Tu puè pure [[Special:Watchlist/edit|ausà 'u cangiatore standàrd]].",
+Tu puè pure [[Special:EditWatchlist|ausà 'u cangiatore standàrd]].",
'watchlistedit-raw-titles' => 'Titele:',
'watchlistedit-raw-submit' => "Aggiorne 'a liste de le pàggene condrollete",
'watchlistedit-raw-done' => "'A liste de le pàggene condrollete ha state aggiornete.",
@@ -3187,33 +3372,33 @@ Tu puè pure [[Special:Watchlist/edit|ausà 'u cangiatore standàrd]].",
'duplicate-defaultsort' => "'''Attenziò:''' 'A chiave de arrangamende de default \"\$2\" sovrascrive quedda precedende \"\$1\".",
# Special:Version
-'version' => 'Versione',
-'version-extensions' => 'Estenziune installete',
-'version-specialpages' => 'Pàggene speciele',
-'version-parserhooks' => 'Hook analizzature',
-'version-variables' => 'Variabbele',
-'version-skins' => 'Skin',
-'version-other' => 'Otre',
-'version-mediahandlers' => 'Gestore de le Media',
-'version-hooks' => 'Hook',
-'version-extension-functions' => 'Funziune estese',
-'version-parser-extensiontags' => "Tag pe l'estenziune de l'analizzatore",
-'version-parser-function-hooks' => "Funziune hook de l'analizzatore",
-'version-skin-extension-functions' => 'Funziune estese pe le skin',
-'version-hook-name' => "Nome de l'hook",
-'version-hook-subscribedby' => 'Sottoscritte da',
-'version-version' => '(Versione $1)',
-'version-license' => 'Licenze',
-'version-poweredby-credits' => "Sta Uicchi jè fatte da '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'otre',
-'version-license-info' => "MediaUicchi jè 'nu softuare libbere, tu 'u puè redestribbuì e/o cangiarle sotte le termine d'a GNU (Licenze Pubbleche Generale) cumme pubblecate da 'a Free Software Foundation; endrambe le versiune 2 d'a Licenze, o (a scelta toje) 'le versiune cchiù nnove.
+'version' => 'Versione',
+'version-extensions' => 'Estenziune installete',
+'version-specialpages' => 'Pàggene speciele',
+'version-parserhooks' => 'Hook analizzature',
+'version-variables' => 'Variabbele',
+'version-antispam' => "Previzione d'u spam",
+'version-skins' => 'Skin',
+'version-other' => 'Otre',
+'version-mediahandlers' => 'Gestore de le Media',
+'version-hooks' => 'Hook',
+'version-extension-functions' => 'Funziune estese',
+'version-parser-extensiontags' => "Tag pe l'estenziune de l'analizzatore",
+'version-parser-function-hooks' => "Funziune hook de l'analizzatore",
+'version-hook-name' => "Nome de l'hook",
+'version-hook-subscribedby' => 'Sottoscritte da',
+'version-version' => '(Versione $1)',
+'version-license' => 'Licenze',
+'version-poweredby-credits' => "Sta Uicchi jè fatte da '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'otre',
+'version-license-info' => "MediaUicchi jè 'nu softuare libbere, tu 'u puè redestribbuì e/o cangiarle sotte le termine d'a GNU (Licenze Pubbleche Generale) cumme pubblecate da 'a Free Software Foundation; endrambe le versiune 2 d'a Licenze, o (a scelta toje) 'le versiune cchiù nnove.
Mediauicchi jè destribbuite cu 'a speranze ca jè utile, ma SENZE NISCIUNA GARANZIE; senze nemmanghe 'a garanzie imblicite de COMMERCIABBELETÀ o IDONIETÀ PE 'NU SCOPE PARTICOLARE. Vatte a vide 'a GNU (Licenze Pubbleche Generale) pe cchiù 'mbormaziune.
-Avisse avè ricevute [{{SERVER}}{{SCRIPTPATH}}/COPYING 'na copie d'a GNU (Licenze Pubbleche Generale)] 'nzieme a stu programme, ce none, scrive a 'a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor , Boston, MA 02110-1301, USA o [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html liggele sus a Indernette].",
-'version-software' => 'Softuer installete',
-'version-software-product' => 'Prodotte',
-'version-software-version' => 'Versione',
+Avisse avè ricevute [{{SERVER}}{{SCRIPTPATH}}/COPYING 'na copie d'a GNU (Licenze Pubbleche Generale)] 'nzieme a stu programme, ce none, scrive a 'a Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor , Boston, MA 02110-1301, USA o [//www.gnu.org/licenses/old-licenses/gpl-2.0.html liggele sus a Indernette].",
+'version-software' => 'Softuer installete',
+'version-software-product' => 'Prodotte',
+'version-software-version' => 'Versione',
# Special:FilePath
'filepath' => "Percorse d'u fail",
@@ -3223,22 +3408,22 @@ Avisse avè ricevute [{{SERVER}}{{SCRIPTPATH}}/COPYING 'na copie d'a GNU (Licenz
Le immaggine sonde fatte vedè jndr'à resoluziona megghie, otre tipe de file rechiamane 'u lore programme associate direttamende.",
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Cirche pe le file duplichete',
-'fileduplicatesearch-summary' => "Cirche pe file duplichete sus a base d'u valore hash.
-
-Mitte 'u nome d'u file senze 'u \"{{ns:file}}:\" prefisse.",
-'fileduplicatesearch-legend' => "Cirche pe 'nu duplichete",
-'fileduplicatesearch-filename' => "Nome d'u faile:",
-'fileduplicatesearch-submit' => 'Cirche',
-'fileduplicatesearch-info' => "$1 × $2 pixel<br />Dimenzione d'u file: $3<br />Tipe de MIME: $4",
-'fileduplicatesearch-result-1' => '\'U file "$1" non ge tène \'na duplicazione uguale uguale.',
-'fileduplicatesearch-result-n' => '\'U file "$1" tène {{PLURAL:$2|1 duplicazione|$2 duplicaziune}} uguale uguale.',
+'fileduplicatesearch' => 'Cirche pe le file duplichete',
+'fileduplicatesearch-summary' => "Cirche pe file duplichete sus a base d'u valore hash.",
+'fileduplicatesearch-legend' => "Cirche pe 'nu duplichete",
+'fileduplicatesearch-filename' => "Nome d'u faile:",
+'fileduplicatesearch-submit' => 'Cirche',
+'fileduplicatesearch-info' => "$1 × $2 pixel<br />Dimenzione d'u file: $3<br />Tipe de MIME: $4",
+'fileduplicatesearch-result-1' => '\'U file "$1" non ge tène \'na duplicazione uguale uguale.',
+'fileduplicatesearch-result-n' => '\'U file "$1" tène {{PLURAL:$2|1 duplicazione|$2 duplicaziune}} uguale uguale.',
+'fileduplicatesearch-noresults' => 'Nisciune file chiamate "$1" ha state acchiate.',
# Special:SpecialPages
'specialpages' => 'Pàggene speciele',
'specialpages-note' => '----
* Pàggene speciale normale.
-* <strong class="mw-specialpagerestricted">Pàggene speciale cu le restriziune.</strong>',
+* <span class="mw-specialpagerestricted">Pàggene speciale cu le restriziune.</span>
+* <span class="mw-specialpagecached">Pàggene speciale in memorie cache (ponne essere vecchie).</span>',
'specialpages-group-maintenance' => "Report d'a manutenzione",
'specialpages-group-other' => 'Otre pàggene speciele',
'specialpages-group-login' => 'Tràse / Reggistrete',
diff --git a/languages/messages/MessagesRu.php b/languages/messages/MessagesRu.php
index 60d99b54..c1ecbdcf 100644
--- a/languages/messages/MessagesRu.php
+++ b/languages/messages/MessagesRu.php
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author AVRS
* @author Ahonc
* @author Aleksandrit
* @author Alessandro
@@ -14,7 +15,6 @@
* @author Alexander Sigachov (alexander.sigachov@gmail.com)
* @author Alexandr Efremov
* @author Amikeco
- * @author Amire80
* @author Askarmuk
* @author Assele
* @author Chilin
@@ -29,9 +29,11 @@
* @author G0rn
* @author Gazeb
* @author Grigol
+ * @author Haffman
* @author HalanTul
* @author Huuchin
* @author Illusion
+ * @author Iniquity
* @author Innv
* @author JenVan
* @author Jl
@@ -40,6 +42,7 @@
* @author Kv75
* @author Lockal
* @author MaxSem
+ * @author Ole Yves
* @author Putnik
* @author Rave
* @author Rubin
@@ -212,6 +215,7 @@ $magicWords = array(
'nse' => array( '0', 'ПИК:', 'NSE:' ),
'localurl' => array( '0', 'ЛОКÐЛЬÐЫЙ_ÐДРЕС:', 'LOCALURL:' ),
'localurle' => array( '0', 'ЛОКÐЛЬÐЫЙ_ÐДРЕС_2:', 'LOCALURLE:' ),
+ 'articlepath' => array( '0', 'ПУТЬ_К_СТÐТЬЕ', 'ARTICLEPATH' ),
'server' => array( '0', 'СЕРВЕР', 'SERVER' ),
'servername' => array( '0', 'ÐÐЗВÐÐИЕ_СЕРВЕРÐ', 'SERVERNAME' ),
'scriptpath' => array( '0', 'ПУТЬ_К_СКРИПТУ', 'SCRIPTPATH' ),
@@ -315,8 +319,8 @@ $messages = array(
'tog-shownumberswatching' => 'Показывать чиÑло учаÑтников, включивших Ñтраницу в Ñвой ÑпиÑок наблюдениÑ',
'tog-oldsig' => 'CущеÑÑ‚Ð²ÑƒÑŽÑ‰Ð°Ñ Ð¿Ð¾Ð´Ð¿Ð¸Ñьь:',
'tog-fancysig' => 'СобÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ð²Ð¸ÐºÐ¸-разметка подпиÑи (без автоматичеÑкой ÑÑылки)',
-'tog-externaleditor' => 'ИÑпользовать по умолчанию внешний редактор (только Ð´Ð»Ñ ÑпециалиÑтов, необходима оÑÐ¾Ð±Ð°Ñ Ð½Ð°Ñтройка компьютера; [http://www.mediawiki.org/wiki/Manual:External_editors подробнее])',
-'tog-externaldiff' => 'ИÑпользовать по умолчанию внешнюю программу ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ (только Ð´Ð»Ñ ÑпециалиÑтов, необходима оÑÐ¾Ð±Ð°Ñ Ð½Ð°Ñтройка компьютера; [http://www.mediawiki.org/wiki/Manual:External_editors подробнее])',
+'tog-externaleditor' => 'ИÑпользовать по умолчанию внешний редактор (только Ð´Ð»Ñ ÑпециалиÑтов, необходима оÑÐ¾Ð±Ð°Ñ Ð½Ð°Ñтройка компьютера; [//www.mediawiki.org/wiki/Manual:External_editors подробнее])',
+'tog-externaldiff' => 'ИÑпользовать по умолчанию внешнюю программу ÑÑ€Ð°Ð²Ð½ÐµÐ½Ð¸Ñ (только Ð´Ð»Ñ ÑпециалиÑтов, необходима оÑÐ¾Ð±Ð°Ñ Ð½Ð°Ñтройка компьютера; [//www.mediawiki.org/wiki/Manual:External_editors подробнее])',
'tog-showjumplinks' => 'Включить вÑпомогательные ÑÑылки «перейти к»',
'tog-uselivepreview' => 'ИÑпользовать быÑтрый предварительный проÑмотр (JavaScript, ÑкÑпериментально)',
'tog-forceeditsummary' => 'Предупреждать, когда не заполнено поле опиÑÐ°Ð½Ð¸Ñ Ð¿Ñ€Ð°Ð²ÐºÐ¸',
@@ -412,14 +416,7 @@ $messages = array(
'listingcontinuesabbrev' => '(продолжение)',
'index-category' => 'ИндекÑируемые Ñтраницы',
'noindex-category' => 'ÐеиндекÑируемые Ñтраницы',
-
-'mainpagetext' => "'''Вики-движок «MediaWiki» уÑпешно уÑтановлен.'''",
-'mainpagedocfooter' => 'Информацию по работе Ñ Ñтой вики можно найти в [http://meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 Ñправочном руководÑтве].
-
-== Ðекоторые полезные реÑурÑÑ‹ ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings СпиÑок возможных наÑтроек];
-* [http://www.mediawiki.org/wiki/Manual:FAQ ЧаÑто задаваемые вопроÑÑ‹ и ответы по MediaWiki];
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce РаÑÑылка уведомлений о выходе новых верÑий MediaWiki].',
+'broken-file-category' => 'Страницы Ñ Ð½ÐµÑ€Ð°Ð±Ð¾Ñ‚Ð°ÑŽÑ‰Ð¸Ð¼Ð¸ файловыми ÑÑылками',
'about' => 'ОпиÑание',
'article' => 'СтатьÑ',
@@ -471,10 +468,10 @@ $messages = array(
'history' => 'иÑториÑ',
'history_short' => 'иÑториÑ',
'updatedmarker' => 'обновлено поÑле моего поÑледнего поÑещениÑ',
-'info_short' => 'ИнформациÑ',
'printableversion' => 'ВерÑÐ¸Ñ Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸',
'permalink' => 'ПоÑтоÑÐ½Ð½Ð°Ñ ÑÑылка',
'print' => 'Печать',
+'view' => 'ПроÑмотр',
'edit' => 'Править',
'create' => 'Создать',
'editthispage' => 'Править Ñту Ñтраницу',
@@ -482,6 +479,7 @@ $messages = array(
'delete' => 'Удалить',
'deletethispage' => 'Удалить Ñту Ñтраницу',
'undelete_short' => 'ВоÑÑтановить $1 {{PLURAL:$1|правку|правки|правок}}',
+'viewdeleted_short' => 'ПроÑмотр {{PLURAL:$1|$1 удалённой правки|$1 удалённых правок|$1 удалённых правок}}',
'protect' => 'Защитить',
'protect_change' => 'изменить',
'protectthispage' => 'Защитить Ñту Ñтраницу',
@@ -566,6 +564,8 @@ $1',
'toc' => 'Содержание',
'showtoc' => 'показать',
'hidetoc' => 'убрать',
+'collapsible-collapse' => 'Ñвернуть',
+'collapsible-expand' => 'развернуть',
'thisisdeleted' => 'ПроÑмотреть или воÑÑтановить $1?',
'viewdeleted' => 'ПроÑмотреть $1?',
'restorelink' => '{{PLURAL:$1|$1 удалённую правку|$1 удалённые правки|$1 удалённых правок}}',
@@ -577,6 +577,8 @@ $1',
'page-rss-feed' => '«$1» — RSS-лента',
'page-atom-feed' => '«$1» — Atom-лента',
'red-link-title' => '$1 (такой Ñтраницы не ÑущеÑтвует)',
+'sort-descending' => 'УпорÑдочить по убыванию',
+'sort-ascending' => 'УпорÑдочить по возраÑтанию',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'СтатьÑ',
@@ -662,12 +664,13 @@ $1',
'protectedinterface' => 'Эта Ñтраница Ñодержит интерфейÑное Ñообщение программного обеÑпечениÑ. Во избежание вандализма её изменение запрещено.',
'editinginterface' => "'''Внимание.''' Ð’Ñ‹ редактируете Ñтраницу, Ñодержащую текÑÑ‚ интерфейÑа программного обеÑпечениÑ.
Её изменение повлиÑет на внешний вид интерфейÑа Ð´Ð»Ñ Ð´Ñ€ÑƒÐ³Ð¸Ñ… пользователей.
-Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð¾Ð² лучше иÑпользовать [http://translatewiki.net/wiki/Main_Page?setlang=ru translatewiki.net], проект по локализации MediaWiki.",
+Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐ²Ð¾Ð´Ð¾Ð² лучше иÑпользовать [//translatewiki.net/wiki/Main_Page?setlang=ru translatewiki.net], проект по локализации MediaWiki.",
'sqlhidden' => '(SQL Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñкрыт)',
'cascadeprotected' => 'Страница защищена от изменений, поÑкольку она включена в {{PLURAL:$1|Ñледующую Ñтраницу, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð¹|Ñледующие Ñтраницы, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ñ‹Ñ…}} включена каÑÐºÐ°Ð´Ð½Ð°Ñ Ð·Ð°Ñ‰Ð¸Ñ‚Ð°:
$2',
'namespaceprotected' => 'У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñтраницы в проÑтранÑтве имён «$1».',
-'customcssjsprotected' => 'У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñту Ñтраницу, так как она Ñодержит личные наÑтройки другого учаÑтника.',
+'customcssprotected' => 'У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñту CSS-Ñтраницу, так как она Ñодержит личные наÑтройки другого учаÑтника.',
+'customjsprotected' => 'У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ñ‚ÑŒ Ñту JavaScript-Ñтраницу, так как она Ñодержит личные наÑтройки другого учаÑтника.',
'ns-specialprotected' => 'Страницы проÑтранÑтва имён «{{ns:special}}» не могут правитьÑÑ.',
'titleprotected' => "Создание Ñтраницы Ñ Ñ‚Ð°ÐºÐ¸Ð¼ заголовком было запрещено учаÑтником [[УчаÑтник:$1|$1]].
Указана ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð°: ''$2''.",
@@ -705,6 +708,7 @@ $2',
'createaccount' => 'ЗарегиÑтрировать нового учаÑтника',
'gotaccount' => "Ð’Ñ‹ уже зарегиÑтрированы? '''$1'''.",
'gotaccountlink' => 'ПредÑтавьтеÑÑŒ',
+'userlogin-resetlink' => 'Забыли данные Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ð°?',
'createaccountmail' => 'по Ñл. почте',
'createaccountreason' => 'Причина:',
'badretype' => 'Введённые вами пароли не Ñовпадают.',
@@ -714,13 +718,15 @@ $2',
'createaccounterror' => 'Ðевозможно Ñоздать учётную запиÑÑŒ: $1',
'nocookiesnew' => 'УчаÑтник зарегиÑтрирован, но не предÑтавлен. {{SITENAME}} иÑпользует «cookies» Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÑ‡Ð°Ñтников. У Ð²Ð°Ñ Â«cookies» запрещены. ПожалуйÑта, разрешите их, а затем предÑтавьтеÑÑŒ Ñ Ð²Ð°ÑˆÐ¸Ð¼ новым именем учаÑтника и паролем.',
'nocookieslogin' => '{{SITENAME}} иÑпользует «cookies» Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´ÑÑ‚Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÑ‡Ð°Ñтников. Ð’Ñ‹ их отключили. ПожалуйÑта, включите их и попробуйте Ñнова.',
+'nocookiesfornew' => 'Ð£Ñ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ учаÑтника не была Ñоздан из-за невозможноÑти проверить её иÑточник.
+УбедитеÑÑŒ, что включены «куки», обновите Ñтраницу и попробуйте ещё раз.',
'noname' => 'Ð’Ñ‹ не указали допуÑтимого имени учаÑтника.',
'loginsuccesstitle' => 'Опознание прошло уÑпешно',
'loginsuccess' => 'Теперь вы работаете под именем $1.',
'nosuchuser' => 'УчаÑтника Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ $1 не ÑущеÑтвует.
Имена учаÑтников чувÑтвительны к региÑтру букв.
Проверьте правильноÑÑ‚ÑŒ напиÑÐ°Ð½Ð¸Ñ Ð¸Ð¼ÐµÐ½Ð¸ или [[Special:UserLogin/signup|Ñоздайте новую учётную запиÑÑŒ]].',
-'nosuchusershort' => 'Ðе ÑущеÑтвует учаÑтника Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ <nowiki>$1</nowiki>. Проверьте напиÑание имени.',
+'nosuchusershort' => 'Ðе ÑущеÑтвует учаÑтника Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ $1. Проверьте напиÑание имени.',
'nouserspecified' => 'Ð’Ñ‹ должны указать Ð¸Ð¼Ñ ÑƒÑ‡Ð°Ñтника.',
'login-userblocked' => 'Этот учаÑтник заблокирован. Вход в ÑиÑтему не разрешён.',
'wrongpassword' => 'Введённый вами пароль неверен. Попробуйте ещё раз.',
@@ -766,13 +772,14 @@ $2',
'usernamehasherror' => 'Ð˜Ð¼Ñ ÑƒÑ‡Ð°Ñтника не может Ñодержать Ñимвол «решётки»',
'login-throttled' => 'Ð’Ñ‹ Ñделали Ñлишком много попыток предÑтавитьÑÑ ÑиÑтеме.
ПожалуйÑта, подождите, перед тем, как попробовать Ñнова.',
+'login-abort-generic' => 'ÐÐµÑƒÐ´Ð°Ñ‡Ð½Ð°Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° предÑтавитьÑÑ ÑиÑтеме',
'loginlanguagelabel' => 'Язык: $1',
'suspicious-userlogout' => 'Ваш Ð·Ð°Ð¿Ñ€Ð¾Ñ Ð½Ð° завершение ÑеанÑа отклонён, так как он похож на запроÑ, отправленный некорректным браузером или кÑширующим прокÑи.',
# E-mail sending
'php-mail-error-unknown' => 'ÐеизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ° в PHP-функции mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Изменение паролÑ',
'resetpass_announce' => 'Ð’Ñ‹ предÑтавилиÑÑŒ Ñ Ð¿Ð¾Ð¼Ð¾Ñ‰ÑŒÑŽ временного паролÑ, полученного по Ñлектронной почте. Ð”Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð²Ñ…Ð¾Ð´Ð° в ÑиÑтему, вы должны уÑтановить новый пароль.',
'resetpass_text' => '<!-- Добавьте Ñюда текÑÑ‚ -->',
@@ -790,6 +797,42 @@ $2',
Возможно, вы уже уÑпешно изменили пароль, или запроÑили новый временный пароль.',
'resetpass-temp-password' => 'Временный пароль:',
+# Special:PasswordReset
+'passwordreset' => 'Ð¡Ð±Ñ€Ð¾Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ',
+'passwordreset-text' => 'Заполните Ñту форму, чтобы получить в пиÑьме напоминание о параметрах вашей учётной запиÑи.',
+'passwordreset-legend' => 'ПереуÑтановить пароль',
+'passwordreset-disabled' => 'Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿ÐµÑ€ÐµÑƒÑтановки Ð¿Ð°Ñ€Ð¾Ð»Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ñ‹ на Ñтой вики.',
+'passwordreset-pretext' => '{{PLURAL:$1||введите один одну из чаÑтей данных, показанных ниже.}}',
+'passwordreset-username' => 'Ð˜Ð¼Ñ ÑƒÑ‡Ð°Ñтника:',
+'passwordreset-domain' => 'Домен:',
+'passwordreset-email' => 'ÐÐ´Ñ€ÐµÑ Ñлектронной почты:',
+'passwordreset-emailtitle' => 'Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¾Ð± учётной запиÑи {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Кто-то (возможно вы, Ñ IP-адреÑа $1) запроÑил напоминание о вашей
+учётной запиÑи в проекте {{SITENAME}} ($4).
+{{PLURAL:$3|Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ ÑвÑзана|Следующие учётные запиÑи ÑвÑзаны}} Ñ Ñтим адреÑом Ñлектронной почты:
+
+$2
+
+{{PLURAL:$3|Этот временный пароль будет|Эти временные пароли будут}} дейÑтвовать {{PLURAL:$5|$5 день|$5 днÑ|$5 дней}}.
+Ð’Ñ‹ должны предÑтавитьÑÑ ÑиÑтеме и выберите новый пароль.
+ЕÑли вы не делали Ñтого запроÑа, или вÑпомнили Ñвой иÑходный пароль
+и не желаете его менÑÑ‚ÑŒ, вы можете проигнорировать Ñто Ñообщение
+и продолжить иÑпользовать Ñвой Ñтарый пароль.',
+'passwordreset-emailtext-user' => 'УчаÑтник $1 из проекта {{SITENAME}} запроÑил напоминание о вашей
+учётной запиÑи в проекте {{SITENAME}} ($4).
+{{PLURAL:$3|Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ ÑвÑзана|Следующие учётные запиÑи ÑвÑзаны}} Ñ Ñтим адреÑом Ñлектронной почты:
+
+$2
+
+{{PLURAL:$3|Этот временный пароль будет|Эти временные пароли будут}} дейÑтвовать {{PLURAL:$5|$5 день|$5 днÑ|$5 дней}}.
+Ð’Ñ‹ должны предÑтавитьÑÑ ÑиÑтеме и выберите новый пароль.
+ЕÑли вы не делали Ñтого запроÑа, или вÑпомнили Ñвой иÑходный пароль
+и не желаете его менÑÑ‚ÑŒ, вы можете проигнорировать Ñто Ñообщение
+и продолжить иÑпользовать Ñвой Ñтарый пароль.',
+'passwordreset-emailelement' => 'Ð˜Ð¼Ñ ÑƒÑ‡Ð°Ñтника: $1
+Временный пароль: $2',
+'passwordreset-emailsent' => 'По Ñлектронной почте было отправлено напоминание.',
+
# Edit page toolbar
'bold_sample' => 'Полужирное начертание',
'bold_tip' => 'Полужирное начертание',
@@ -801,8 +844,6 @@ $2',
'extlink_tip' => 'ВнешнÑÑ ÑÑылка (помните о префикÑе http:// )',
'headline_sample' => 'ТекÑÑ‚ заголовка',
'headline_tip' => 'Заголовок 2-го уровнÑ',
-'math_sample' => 'Введите Ñюда формулу',
-'math_tip' => 'МатематичеÑÐºÐ°Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»Ð° (формат LaTeX)',
'nowiki_sample' => 'Ð’Ñтавьте Ñюда текÑÑ‚, который не нужно форматировать',
'nowiki_tip' => 'Игнорировать вики-форматирование',
'image_tip' => 'Ð’Ñтроенный файл',
@@ -889,11 +930,11 @@ $2',
'noarticletext-nopermission' => 'Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð½Ð° Ñтой Ñтранице нет текÑта.
Ð’Ñ‹ можете [[Special:Search/{{PAGENAME}}|найти упоминание данного названиÑ]] в других ÑтатьÑÑ…,
или <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} найти ÑоответÑтвующие запиÑи журналов].</span>',
-'userpage-userdoesnotexist' => 'Учётной запиÑи «$1» не ÑущеÑтвует. УбедитеÑÑŒ, что вы дейÑтвительно желаете Ñоздать или изменить Ñту Ñтраницу.',
+'userpage-userdoesnotexist' => 'Учётной запиÑи «<nowiki>$1</nowiki>» не ÑущеÑтвует. УбедитеÑÑŒ, что вы дейÑтвительно желаете Ñоздать или изменить Ñту Ñтраницу.',
'userpage-userdoesnotexist-view' => 'Ðе зарегиÑтрировано учётной запиÑи учаÑтника «$1».',
'blocked-notice-logextract' => 'Этот учаÑтник в данный момент заблокирован.
Ðиже приведена поÑледнÑÑ Ð·Ð°Ð¿Ð¸ÑÑŒ из журнала блокировок:',
-'clearyourcache' => "'''Замечание.''' Возможно, вам придётÑÑ Ð¾Ñ‡Ð¸Ñтите кеш Ñвоего браузера, чтобы увидеть изменениÑ.
+'clearyourcache' => "'''Замечание.''' Возможно, поÑле ÑÐ¾Ñ…Ñ€Ð°Ð½ÐµÐ½Ð¸Ñ Ð²Ð°Ð¼ придётÑÑ Ð¾Ñ‡Ð¸Ñтить кеш Ñвоего браузера, чтобы увидеть изменениÑ.
* '''Firefox / Safari.''' Ð£Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°Ñ ÐºÐ»Ð°Ð²Ð¸ÑˆÑƒ ''Shift'' нажмите на панели инÑтрументов ''Обновить'', или нажмите ''Ctrl-F5'' или ''Ctrl-R'' (''Command-R'' на Mac)
* '''Google Chrome.''' Ðажмите ''Ctrl-Shift-R'' (''Command-Shift-R'' на Mac)
* '''Internet Explorer.''' Ð£Ð´ÐµÑ€Ð¶Ð¸Ð²Ð°Ñ ''Ctrl'' нажмите ''Обновить'', или нажмите ''Ctrl-F5''
@@ -924,6 +965,7 @@ $2',
'token_suffix_mismatch' => "'''Ваша правка была отклонена, так как ваша программа неправильно обрабатывает знаки пунктуации
в окне редактированиÑ. Правка была отменена Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð¸ÑÐºÐ°Ð¶ÐµÐ½Ð¸Ñ Ñ‚ÐµÐºÑта Ñтатьи.
Подобные проблемы могут возникать при иÑпользовании анонимизирующих веб-прокÑи, Ñодержащих ошибки.'''",
+'edit_form_incomplete' => "'''Ðекоторые чаÑти формы Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð½Ðµ доÑтигли Ñервера. Внимательно проверьте, что ваши правки не повреждены, и попробуйте ещё раз.'''",
'editing' => 'Редактирование: $1',
'editingsection' => 'Редактирование: $1 (раздел)',
'editingcomment' => 'Редактирование $1 (новый раздел)',
@@ -1158,8 +1200,8 @@ $1",
# Suppression log
'suppressionlog' => 'Журнал Ñокрытий',
-'suppressionlogtext' => 'Ðиже предÑтавлен ÑпиÑок недавних удалений и блокировок, включающих Ñкрытые от админиÑтраторов материалы.
-См. [[Special:IPBlockList|ÑпиÑок IP-блокировок]], чтобы проÑмотреть ÑпиÑок текущих блокировок.',
+'suppressionlogtext' => 'Ðиже предÑтавлен ÑпиÑок удалений и блокировок, затрагивающих Ñкрытые от админиÑтраторов материалы.
+Ð’ [[Special:BlockList|ÑпиÑке блокировок]] можно найти перечень текущих блокировок.',
# History merging
'mergehistory' => 'Объединение иÑторий правок',
@@ -1266,12 +1308,13 @@ $1",
'searchdisabled' => 'Извините, но вÑтроенный полнотекÑтовый поиÑк выключен. Ð’Ñ‹ можете воÑпользоватьÑÑ Ð¿Ð¾Ð¸Ñком по Ñайту через поиÑковые ÑиÑтемы общего назначениÑ, однако имейте в виду, что ÐºÐ¾Ð¿Ð¸Ñ Ñайта в их кеше может быть неÑколько уÑтаревшей.',
# Quickbar
-'qbsettings' => 'Панель навигации',
-'qbsettings-none' => 'Ðе показывать',
-'qbsettings-fixedleft' => 'ÐÐµÐ¿Ð¾Ð´Ð²Ð¸Ð¶Ð½Ð°Ñ Ñлева',
-'qbsettings-fixedright' => 'ÐÐµÐ¿Ð¾Ð´Ð²Ð¸Ð¶Ð½Ð°Ñ Ñправа',
-'qbsettings-floatingleft' => 'ÐŸÐ»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ Ñлева',
-'qbsettings-floatingright' => 'ÐŸÐ»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ Ñправа',
+'qbsettings' => 'Панель навигации',
+'qbsettings-none' => 'Ðе показывать',
+'qbsettings-fixedleft' => 'ÐÐµÐ¿Ð¾Ð´Ð²Ð¸Ð¶Ð½Ð°Ñ Ñлева',
+'qbsettings-fixedright' => 'ÐÐµÐ¿Ð¾Ð´Ð²Ð¸Ð¶Ð½Ð°Ñ Ñправа',
+'qbsettings-floatingleft' => 'ÐŸÐ»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ Ñлева',
+'qbsettings-floatingright' => 'ÐŸÐ»Ð°Ð²Ð°ÑŽÑ‰Ð°Ñ Ñправа',
+'qbsettings-directionality' => 'ЗакреплённаÑ, в завиÑимоÑти от Ð½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ð¸ÑьменноÑти вашего Ñзыка',
# Preferences page
'preferences' => 'ÐаÑтройки',
@@ -1282,9 +1325,10 @@ $1",
'changepassword' => 'Изменение паролÑ',
'prefs-skin' => 'Тема оформлениÑ',
'skin-preview' => 'ПредпроÑмотр',
-'prefs-math' => 'Отображение формул',
'datedefault' => 'По умолчанию',
+'prefs-beta' => 'Бета-возможноÑти',
'prefs-datetime' => 'Дата и времÑ',
+'prefs-labs' => 'ЭкÑпериментальные возможноÑти',
'prefs-personal' => 'Личные данные',
'prefs-rc' => 'Свежие правки',
'prefs-watchlist' => 'СпиÑок наблюдениÑ',
@@ -1306,8 +1350,6 @@ $1",
'columns' => 'Столбцов:',
'searchresultshead' => 'ПоиÑк',
'resultsperpage' => 'КоличеÑтво найденных запиÑей на Ñтраницу:',
-'contextlines' => 'КоличеÑтво показываемых Ñтрок Ð´Ð»Ñ ÐºÐ°Ð¶Ð´Ð¾Ð¹ найденной:',
-'contextchars' => 'КоличеÑтво Ñимволов контекÑта на Ñтроку:',
'stub-threshold' => 'Порог Ð´Ð»Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»ÐµÐ½Ð¸Ñ Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ <a href="#" class="stub">ÑÑылок на заготовки</a> (в байтах):',
'stub-threshold-disabled' => 'Отключён',
'recentchangesdays' => 'КоличеÑтво дней, за которые показывать Ñвежие правки:',
@@ -1320,7 +1362,7 @@ $1",
'savedprefs' => 'Ваши наÑтройки Ñохранены.',
'timezonelegend' => 'ЧаÑовой поÑÑ:',
'localtime' => 'МеÑтное времÑ:',
-'timezoneuseserverdefault' => 'ИÑпользовать наÑтройки Ñервера',
+'timezoneuseserverdefault' => 'ИÑпользовать наÑтройки Ñервера ($1)',
'timezoneuseoffset' => 'Иное (укажите Ñмещение)',
'timezoneoffset' => 'Смещение¹:',
'servertime' => 'Ð’Ñ€ÐµÐ¼Ñ Ñервера:',
@@ -1370,8 +1412,8 @@ $1",
'email' => 'Ð­Ð»ÐµÐºÑ‚Ñ€Ð¾Ð½Ð½Ð°Ñ Ð¿Ð¾Ñ‡Ñ‚Ð°',
'prefs-help-realname' => 'ÐаÑтоÑщее Ð¸Ð¼Ñ (необÑзательное поле).
ЕÑли вы укажете его, то оно будет иÑпользовано Ð´Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы показать, кем была внеÑена правка Ñтраницы.',
-'prefs-help-email' => 'ÐÐ´Ñ€ÐµÑ Ñлектронной почты указывать необÑзательно, но он будет необходим в том Ñлучае, еÑли вы забудете пароль.
-Он также позволит другим учаÑтникам ÑвÑзатьÑÑ Ñ Ð²Ð°Ð¼Ð¸ через вашу Ñтраницу в вики без необходимоÑти раÑÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð°Ð´Ñ€ÐµÑа вашей Ñлектронной почты.',
+'prefs-help-email' => 'ÐÐ´Ñ€ÐµÑ Ñлектронной почты указывать необÑзательно, но он будет необходим в том Ñлучае, еÑли вы забудете пароль.',
+'prefs-help-email-others' => 'Он также позволит другим учаÑтникам ÑвÑзатьÑÑ Ñ Ð²Ð°Ð¼Ð¸ через ÑÑылку на вашей личной Ñтранице без необходимоÑти раÑÐºÑ€Ñ‹Ñ‚Ð¸Ñ Ð°Ð´Ñ€ÐµÑа вашей Ñлектронной почты.',
'prefs-help-email-required' => 'Ðеобходимо указать Ð°Ð´Ñ€ÐµÑ Ñлектронной почты.',
'prefs-info' => 'ОÑновные ÑведениÑ',
'prefs-i18n' => 'ИнтернационализациÑ',
@@ -1496,15 +1538,15 @@ $1",
'right-userrights' => 'изменение прав вÑех учаÑтников',
'right-userrights-interwiki' => 'изменение прав учаÑтников на других вики-Ñайтах',
'right-siteadmin' => 'блокировка и разблокировка базы данных',
-'right-reset-passwords' => 'ÑбраÑывание паролей других учаÑтников',
'right-override-export-depth' => 'ÑкÑпортирование Ñтраниц, Ð²ÐºÐ»ÑŽÑ‡Ð°Ñ ÑвÑзанные Ñтраницы Ñ Ð³Ð»ÑƒÐ±Ð¸Ð½Ð¾Ð¹ до 5',
'right-sendemail' => 'отправлÑÑ‚ÑŒ Ñлектронную почту другим учаÑтникам',
# User rights log
-'rightslog' => 'Журнал прав учаÑтника',
-'rightslogtext' => 'Это журнал изменений прав учаÑтника.',
-'rightslogentry' => 'изменил членÑтво в группах Ð´Ð»Ñ $1 Ñ $2 на $3',
-'rightsnone' => '(нет)',
+'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' => 'чтение Ñтой Ñтраницы',
@@ -1602,12 +1644,12 @@ $1",
'upload-recreate-warning' => "'''Внимание. Файл Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем был удален или переименован.''
Журнал удалений и переименований Ð´Ð»Ñ Ñтой Ñтранице приведён ниже:",
-'uploadtext' => "ИÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ñту форму вы можете загрузить на Ñервер файлы.
-Чтобы проÑмотреть ранее загруженные файлы, обратитеÑÑŒ к [[Special:FileList|ÑпиÑку загруженных файлов]]. Загрузка файлов также запиÑываетÑÑ Ð² [[Special:Log/upload|журнал загрузок]], ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð¾Ð² запиÑываютÑÑ Ð² [[Special:Log/delete|журнал удалений]].
+'uploadtext' => "ВоÑпользуйтеÑÑŒ Ñтой формой Ð´Ð»Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ¸ файлов на Ñервер.
+Чтобы проÑмотреть ранее загруженные файлы, обратитеÑÑŒ к [[Special:FileList|ÑпиÑку загруженных файлов]]. Загрузка файлов также запиÑываетÑÑ Ð² [[Special:Log/upload|журнал загрузок]], данные об удалённых файлах можно найти в [[Special:Log/delete|журнале удалений]].
Ð”Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÐ½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð° в Ñтатью вы можете иÑпользовать Ñтроки вида:
* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.jpg]]</nowiki></tt>''' Ð´Ð»Ñ Ð²Ñтавки полной верÑии файла;
-* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|опиÑание]]</nowiki></tt>''' Ð´Ð»Ñ Ð²Ñтавки уменьшенной до 200 пикÑелей по ширине верÑии файла Ñлева от текÑта Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð¾Ð¼ под ним указанного опиÑаниÑ;
+* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:File.png|200px|thumb|left|опиÑание]]</nowiki></tt>''' Ð´Ð»Ñ Ð²Ñтавки Ñлева от текÑта уменьшенной до 200 пикÑелей по ширине верÑии файла Ñ Ð²Ñ‹Ð²Ð¾Ð´Ð¾Ð¼ под ним указанного опиÑаниÑ;
* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:File.ogg]]</nowiki></tt>''' Ð´Ð»Ñ Ð²Ñтавки ÑÑылки на файл, без Ð¾Ñ‚Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ ÐµÐ³Ð¾ Ñодержимого на Ñтранице.",
'upload-permitted' => 'Разрешённые типы файлов: $1.',
'upload-preferred' => 'Предпочтительные типы файлов: $1.',
@@ -1628,13 +1670,13 @@ $1",
'minlength1' => 'Ðазвание файла должно Ñодержать Ñ…Ð¾Ñ‚Ñ Ð±Ñ‹ одну букву.',
'illegalfilename' => 'Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° «$1» Ñодержит Ñимволы, которые не разрешаетÑÑ Ð¸Ñпользовать в заголовках. ПожалуйÑта, переименуйте файл и попытайтеÑÑŒ загрузить его Ñнова.',
'badfilename' => 'Ðазвание файла было изменено на $1.',
-'filetype-mime-mismatch' => 'РаÑширение файла не ÑоответÑтвует его MIME-типу.',
+'filetype-mime-mismatch' => 'РаÑширение файла «.$1» не ÑоответÑтвует его MIME-типу ($2).',
'filetype-badmime' => 'Файлы, имеющие MIME-тип «$1», не могут быть загружены.',
'filetype-bad-ie-mime' => 'Ðевозможно загрузить Ñтот файл, так как Internet Explorer будет определÑÑ‚ÑŒ его как «$1», то еÑÑ‚ÑŒ неразрешённым и потенциально опаÑным типом файла.',
'filetype-unwanted-type' => "'''\".\$1\"''' — нежелательный тип файла.
{{PLURAL:\$3|Предпочтительным типом файла ÑвлÑетÑÑ|Предпочтительные типы файлов:}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' — запрещённый тип файла.
-{{PLURAL:\$3|Разрешённым типом файла ÑвлÑетÑÑ|Разрешённые типы файлов:}} \$2.",
+'filetype-banned-type' => "'''«.$1»''' — {{PLURAL:$4|запрещённый тип файла|запрещённые типы файлов}}.
+{{PLURAL:$3|Разрешённым типом файла ÑвлÑетÑÑ|Разрешённые типы файлов:}} $2.",
'filetype-missing' => 'ОтÑутÑтвует раÑширение у файла (например, «.jpg»).',
'empty-file' => 'Отправленный вами файл пуÑÑ‚.',
'file-too-large' => 'Отправленный вами файл Ñлишком велик.',
@@ -1650,6 +1692,7 @@ $1",
'large-file' => 'РекомендуетÑÑ Ð¸Ñпользовать файлы, размер которых не превышает $1 байт (размер загруженного файла ÑоÑтавлÑет $2 байт).',
'largefileserver' => 'Размер файла превышает макÑимально разрешённый.',
'emptyfile' => 'Загруженный вами файл вероÑтно пуÑтой. Возможно, Ñто произошло из-за ошибки при наборе имени файла. ПожалуйÑта, проверьте, дейÑтвительно ли вы хотите загрузить Ñтот файл.',
+'windows-nonascii-filename' => 'Эта вики не поддерживает имена файлов Ñ Ñимволами, отÑутÑтвующими в таблице ASCII.',
'fileexists' => "Файл Ñ Ñтим именем уже ÑущеÑтвует, пожалуйÑта, проверьте '''<tt>[[:$1]]</tt>''', еÑли вы не уверены, что хотите заменить его.
[[$1|thumb]]",
'filepageexists' => "Страница опиÑÐ°Ð½Ð¸Ñ Ð´Ð»Ñ Ñтого файла уже Ñоздана как '''<tt>[[:$1]]</tt>''', но файла Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем ÑÐµÐ¹Ñ‡Ð°Ñ Ð½ÐµÑ‚.
@@ -1684,6 +1727,8 @@ $1",
'php-uploaddisabledtext' => 'Загрузка файлов отключена в наÑтройках PHP. ПожалуйÑта, проверьте значение ÑвойÑтва file_uploads.',
'uploadscripted' => 'Файл Ñодержит HTML-код или Ñкрипт, который может быть ошибочно обработан браузером.',
'uploadvirus' => 'Файл Ñодержит вируÑ! См. $1',
+'uploadjava' => 'Файл предÑтавлÑет Ñобой ZIP-архив, Ñодержащий .class файл Java.
+Загрузка Java-файлов не допуÑкаетÑÑ Ð¸Ð·-за Ñоображений безопаÑноÑти.',
'upload-source' => 'ИÑходный файл',
'sourcefilename' => 'ИÑходный файл:',
'sourceurl' => 'URL-Ð°Ð´Ñ€ÐµÑ Ð¸Ñточника:',
@@ -1693,10 +1738,6 @@ $1",
'upload-options' => 'Параметры загрузки',
'watchthisupload' => 'Следить за Ñтим файлом',
'filewasdeleted' => 'Файл Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвовал ранее, но был удалён. ПожалуйÑта, проверьте $1 перед повторной загрузкой.',
-'upload-wasdeleted' => "'''Внимание: вы пытаетеÑÑŒ загрузить файл, который ранее удалÑлÑÑ.'''
-
-Проверьте, дейÑтвительно ли вам нужно загружать Ñтот файл.
-Ðиже приведён журнал удалений:",
'filename-bad-prefix' => "Ð˜Ð¼Ñ Ð·Ð°Ð³Ñ€ÑƒÐ¶Ð°ÐµÐ¼Ð¾Ð³Ð¾ файла начинаетÑÑ Ñ '''«$1»''' и вероÑтно ÑвлÑетÑÑ ÑˆÐ°Ð±Ð»Ð¾Ð½Ð½Ñ‹Ð¼ именем, которое Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð°Ñ Ñ„Ð¾Ñ‚Ð¾ÐºÐ°Ð¼ÐµÑ€Ð° даёт Ñнимкам. ПожалуйÑта, выберите Ð¸Ð¼Ñ Ð»ÑƒÑ‡ÑˆÐµ опиÑывающее Ñодержание файла.",
'filename-prefix-blacklist' => ' #<!-- оÑтавьте Ñту Ñтрочку как еÑÑ‚ÑŒ --> <pre>
# СинтакÑÐ¸Ñ Ñледующий:
@@ -1732,12 +1773,29 @@ $1',
'upload-unknown-size' => 'ÐеизвеÑтный размер',
'upload-http-error' => 'Произошла ошибка HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Произошла ошибка при открытии файла Ð´Ð»Ñ Ð¿Ñ€Ð¾Ð²ÐµÑ€ÐºÐ¸ архива.',
+'zip-wrong-format' => 'Указанный файл не ÑвлÑетÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ ZIP.',
+'zip-bad' => 'ZIP-файл повреждён, или не может быть прочитан.
+Он не может быть должным образом проверен.',
+'zip-unsupported' => 'Этот ZIP-файл иÑпользует возможноÑти, не поддерживаемые MediaWiki.
+Он не может быть должным образом проверен.',
+
+# Special:UploadStash
+'uploadstash' => 'Ð¡ÐºÑ€Ñ‹Ñ‚Ð½Ð°Ñ Ð·Ð°Ð³Ñ€ÑƒÐ·ÐºÐ°',
+'uploadstash-summary' => 'Ð”Ð°Ð½Ð½Ð°Ñ Ñтраница предоÑтавлÑет доÑтуп к файлам, которые были загружены (или находÑÑ‚ÑÑ Ð² процеÑÑе загрузки), но ещё не были опубликованы в вики. Эти файлы никому не видны, кроме загрузившего их учаÑтника.',
+'uploadstash-clear' => 'ОчиÑтить Ñкрытые файлы',
+'uploadstash-nofiles' => 'У Ð²Ð°Ñ Ð½ÐµÑ‚ Ñкрытых файлов.',
+'uploadstash-badtoken' => 'Ðе удалоÑÑŒ выполнить указанные дейÑтвиÑ. Возможно, иÑтёк Ñрок дейÑÑ‚Ð²Ð¸Ñ Ð²Ð°ÑˆÐµÐ³Ð¾ жетона безопаÑноÑти. Попробуйте ещё раз.',
+'uploadstash-errclear' => 'ОчиÑтка файлов не удалаÑÑŒ.',
+'uploadstash-refresh' => 'Обновить ÑпиÑок файлов',
+
# img_auth script messages
'img-auth-accessdenied' => 'ДоÑтуп запрещён',
'img-auth-nopathinfo' => 'ОтÑутÑтвует PATH_INFO.
Ваш Ñервер не наÑтроен, Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ð¸ Ñтих Ñведений.
Возможно, он работает на оÑнове CGI и не поддерживает img_auth.
-См. http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+См. [//www.mediawiki.org/wiki/Manual:Image_Authorization Разграничение доÑтупа к изображениÑм]',
'img-auth-notindir' => 'Запрашиваемый путь не отноÑитÑÑ Ðº наÑтроенной папке загрузок.',
'img-auth-badtitle' => 'Ðевозможно поÑтроить правильный заголовок из «$1».',
'img-auth-nologinnWL' => 'Ð’Ñ‹ не вошли в ÑиÑтему, а «$1» не входит в белый ÑпиÑок.',
@@ -1812,7 +1870,7 @@ $1',
ДоÑтупен также [[Special:WhatLinksHere/$2|полный ÑпиÑок]].',
'nolinkstoimage' => 'Ðет Ñтраниц, ÑÑылающихÑÑ Ð½Ð° данный файл.',
'morelinkstoimage' => 'ПроÑмотреть [[Special:WhatLinksHere/$1|оÑтальные ÑÑылки]] на Ñтот файл.',
-'redirectstofile' => 'Со {{PLURAL:$1|Ñледующего $1 файла уÑтановлено перенаправление|Ñледующих $1 файлов уÑтановлены перенаправлениÑ|Ñледующих $1 файлов уÑтановлены перенаправлениÑ}} на Ñтот файл:',
+'linkstoimage-redirect' => '$1 (файл-перенаправление) $2',
'duplicatesoffile' => '{{PLURAL:$1|Следующий $1 файл ÑвлÑетÑÑ Ð´ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ‚Ð¾Ð¼|Следующие $1 файла ÑвлÑÑŽÑ‚ÑÑ Ð´ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ‚Ð°Ð¼Ð¸|Следующие $1 файлов ÑвлÑÑŽÑ‚ÑÑ Ð´ÑƒÐ±Ð»Ð¸ÐºÐ°Ñ‚Ð°Ð¼Ð¸}} Ñтого файла ([[Special:FileDuplicateSearch/$2|подробноÑти]]):',
'sharedupload' => 'Этот файл из $1 и может иÑпользоватьÑÑ Ð² других проектах.',
'sharedupload-desc-there' => 'Этот файл из $1 и может иÑпользоватьÑÑ Ð² других проектах.
@@ -1902,18 +1960,19 @@ $1',
'statistics-users-active-desc' => 'УчаÑтники, Ñовершившие какое-либо дейÑтвие за {{PLURAL:$1|поÑледний $1 день|поÑледние $1 днÑ|поÑледние $1 дней}}',
'statistics-mostpopular' => 'Ðаиболее чаÑто проÑматриваемые Ñтраницы',
-'disambiguations' => 'Страницы Ñо ÑÑылками на многозначные термины',
+'disambiguations' => 'Страницы, ÑÑылающиеÑÑ Ð½Ð° Ñтраницы Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð½ÐµÐ¾Ð´Ð½Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð¾Ñти',
'disambiguationspage' => 'Template:ÐеоднозначноÑÑ‚ÑŒ',
'disambiguations-text' => "Следующие Ñтраницы ÑÑылаютÑÑ Ð½Ð° '''многозначные Ñтраницы'''.
ВмеÑто Ñтого они, вероÑтно, должны указывать на ÑоответÑтвующую конкретную Ñтатью.<br />
Страница ÑчитаетÑÑ Ð¼Ð½Ð¾Ð³Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð¾Ð¹, еÑли на ней размещён шаблон, Ð¸Ð¼Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ указано на Ñтранице [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Двойные перенаправлениÑ',
-'doubleredirectstext' => 'Ðа Ñтой Ñтранице предÑтавлен ÑпиÑок перенаправлений на другие перенаправлениÑ.
+'doubleredirects' => 'Двойные перенаправлениÑ',
+'doubleredirectstext' => 'Ðа Ñтой Ñтранице предÑтавлен ÑпиÑок перенаправлений на другие перенаправлениÑ.
ÐšÐ°Ð¶Ð´Ð°Ñ Ñтрока Ñодержит ÑÑылки на первое и второе перенаправлениÑ, а также целевую Ñтраницу второго перенаправлениÑ, в которой обычно указываетÑÑ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ðµ Ñтраницы, куда должно ÑÑылатьÑÑ Ð¿ÐµÑ€Ð²Ð¾Ðµ перенаправление.
<del>Зачёркнутые</del> запиÑи были иÑправлены.',
-'double-redirect-fixed-move' => 'Страница [[$1]] была переименована, ÑÐµÐ¹Ñ‡Ð°Ñ Ð¾Ð½Ð° перенаправлÑет на [[$2]]',
-'double-redirect-fixer' => 'ИÑправитель перенаправлений',
+'double-redirect-fixed-move' => 'Страница [[$1]] была переименована, ÑÐµÐ¹Ñ‡Ð°Ñ Ð¾Ð½Ð° перенаправлÑет на [[$2]]',
+'double-redirect-fixed-maintenance' => 'ИÑправление двойного Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ñ [[$1]] на [[$2]].',
+'double-redirect-fixer' => 'ИÑправитель перенаправлений',
'brokenredirects' => 'Разорванные перенаправлениÑ',
'brokenredirectstext' => 'Следующие Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ ÑƒÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‚ на неÑущеÑтвующие Ñтраницы:',
@@ -1990,6 +2049,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|более новаÑ|более новые|более новых}} $1',
'pager-older-n' => '{{PLURAL:$1|более ÑтараÑ|более Ñтарые|более Ñтарых}} $1',
'suppress' => 'Сокрытие',
+'querypage-disabled' => 'Эта ÑпецÑтраница отключена Ð´Ð»Ñ Ð¿Ð¾Ð²Ñ‹ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¾Ð¸Ð·Ð²Ð¾Ð´Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð¾Ñти.',
# Book sources
'booksources' => 'ИÑточники книг',
@@ -2000,8 +2060,8 @@ $1',
'booksources-invalid-isbn' => 'Указанный номер ISBN, ÑÑƒÐ´Ñ Ð¿Ð¾ вÑему, Ñодержит ошибку. ПожалуйÑта, проверьте, что при переноÑе номера из первоиÑточника не возникло иÑкажений.',
# Special:Log
-'specialloguserlabel' => 'УчаÑтник:',
-'speciallogtitlelabel' => 'Заголовок:',
+'specialloguserlabel' => 'ИÑполнитель:',
+'speciallogtitlelabel' => 'Цель (название или учаÑтник):',
'log' => 'Журналы',
'all-logs-page' => 'Ð’Ñе доÑтупные журналы',
'alllogstext' => 'Общий ÑпиÑок журналов Ñайта {{SITENAME}}.
@@ -2041,12 +2101,13 @@ $1',
'sp-deletedcontributions-contribs' => 'вклад',
# Special:LinkSearch
-'linksearch' => 'Внешние ÑÑылки',
+'linksearch' => 'ПоиÑк внешних ÑÑылок',
'linksearch-pat' => 'Шаблон Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка:',
'linksearch-ns' => 'ПроÑтранÑтво имён:',
'linksearch-ok' => 'Ðайти',
-'linksearch-text' => 'Можно иÑпользовать подÑтановочные Ñимволы, например, <code>*.wikipedia.org</code>.<br />
-Поддерживаемые протоколы: <tt>$1</tt>',
+'linksearch-text' => 'Можно иÑпользовать подÑтановочные Ñимволы, например, <code>*.wikipedia.org</code>.
+Ðеобходим по крайней мере домен верхнего уровнÑ, например <code>*.org</code><br />
+Поддерживаемые протоколы: <tt>$1</tt> (не добавлÑÑ‚ÑŒ любой из них в вашем поиÑке)',
'linksearch-line' => 'СÑылка на $1 из $2',
'linksearch-error' => 'ПодÑтановочные Ñимволы могут иÑпользоватьÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ в начале адреÑов.',
@@ -2107,6 +2168,10 @@ $1',
'noemailtext' => 'Этот учаÑтник не указал дейÑтвительный Ð°Ð´Ñ€ÐµÑ Ñлектронной почты.',
'nowikiemailtitle' => 'Ðет Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¿Ñ€Ð°Ð²Ð»ÑÑ‚ÑŒ пиÑьма',
'nowikiemailtext' => 'Этот учаÑтник указал, что не желает получать пиÑьма от других учаÑтников.',
+'emailnotarget' => 'ÐеÑущеÑтвующее или ошибочное Ð¸Ð¼Ñ ÑƒÑ‡Ð°Ñтника-получателÑ.',
+'emailtarget' => 'Введите Ð¸Ð¼Ñ ÑƒÑ‡Ð°Ñтника-получателÑ',
+'emailusername' => 'Ð˜Ð¼Ñ ÑƒÑ‡Ð°Ñтника:',
+'emailusernamesubmit' => 'Отправить',
'email-legend' => 'Отправить пиÑьмо другому учаÑтнику {{grammar:genitive|{{SITENAME}}}}',
'emailfrom' => 'От кого:',
'emailto' => 'Кому:',
@@ -2131,10 +2196,10 @@ $1',
'watchlistanontext' => 'Ð’Ñ‹ должны $1, чтобы проÑмотреть или отредактировать ÑпиÑок наблюдениÑ.',
'watchnologin' => 'Ðужно предÑтавитьÑÑ ÑиÑтеме',
'watchnologintext' => 'Ð’Ñ‹ должны [[Special:UserLogin|предÑтавитьÑÑ ÑиÑтеме]], чтобы иметь возможноÑÑ‚ÑŒ изменÑÑ‚ÑŒ Ñвой ÑпиÑок наблюдениÑ',
-'addedwatch' => 'Добавлена в ÑпиÑок наблюдениÑ',
+'addwatch' => 'Добавить в ÑпиÑок наблюдениÑ',
'addedwatchtext' => 'Страница «[[:$1]]» была добавлена в ваш [[Special:Watchlist|ÑпиÑок наблюдениÑ]].
ПоÑледующие Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ñтой Ñтраницы и ÑвÑзанной Ñ Ð½ÐµÐ¹ Ñтраницы обÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ð±ÑƒÐ´ÑƒÑ‚ отмечатьÑÑ Ð² Ñтом ÑпиÑке, а также будут выделены жирным шрифтом на Ñтранице Ñо [[Special:RecentChanges|ÑпиÑком Ñвежих изменений]], чтобы их было легче заметить.',
-'removedwatch' => 'Удалена из ÑпиÑка наблюдениÑ',
+'removewatch' => 'Удалить из ÑпиÑка наблюдениÑ',
'removedwatchtext' => 'Страница «[[:$1]]» была удалена из вашего [[Special:Watchlist|ÑпиÑка наблюдениÑ]].',
'watch' => 'Следить',
'watchthispage' => 'Ðаблюдать за Ñтой Ñтраницей',
@@ -2155,8 +2220,9 @@ $1',
'watchlist-options' => 'ÐаÑтройки ÑпиÑка наблюдениÑ',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Добавление в ÑпиÑок наблюдениÑ…',
-'unwatching' => 'Удаление из ÑпиÑка наблюдениÑ…',
+'watching' => 'Добавление в ÑпиÑок наблюдениÑ…',
+'unwatching' => 'Удаление из ÑпиÑка наблюдениÑ…',
+'watcherrortext' => 'Произошла ошибка при изменении наÑтройки Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Â«$1».',
'enotif_mailer' => '{{SITENAME}} Служба извещений по почте',
'enotif_reset' => 'Отметить вÑе Ñтраницы как проÑмотренные',
@@ -2187,16 +2253,16 @@ $NEWPAGE
--
Изменение наÑтройки уведомлений
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Изменение наÑтройки вашего ÑпиÑка наблюдениÑ
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Удалить Ñтраницы из вашего ÑпиÑка наблюдениÑ
$UNWATCHURL
ÐžÐ±Ñ€Ð°Ñ‚Ð½Ð°Ñ ÑвÑзь и помощь
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Удалить Ñтраницу',
@@ -2213,7 +2279,7 @@ $UNWATCHURL
и делаете Ñто в ÑоответÑтвии Ñ Ð¿Ñ€Ð°Ð²Ð¸Ð»Ð°Ð¼Ð¸, изложенными в разделе [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'ДейÑтвие выполнено',
'actionfailed' => 'ДейÑтвие не выполнено',
-'deletedtext' => '«<nowiki>$1</nowiki>» была удалена.
+'deletedtext' => '«$1» была удалена.
См. $2 Ð´Ð»Ñ Ð¿Ñ€Ð¾Ñмотра ÑпиÑка поÑледних удалений.',
'deletedarticle' => 'удалил «[[$1]]»',
'suppressedarticle' => 'Ñкрыл «[[$1]]»',
@@ -2272,7 +2338,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'Ðеправильное Ð²Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ Ð·Ð°Ñ‰Ð¸Ñ‚Ñ‹.',
'protect_expiry_old' => 'Ð’Ñ€ÐµÐ¼Ñ Ð¾ÐºÐ¾Ð½Ñ‡Ð°Ð½Ð¸Ñ â€” в прошлом.',
'protect-unchain-permissions' => 'Открыть дополнительные параметры защиты',
-'protect-text' => "ЗдеÑÑŒ вы можете проÑмотреть и изменить уровень защиты Ð´Ð»Ñ Ñтраницы '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "ЗдеÑÑŒ вы можете проÑмотреть и изменить уровень защиты Ð´Ð»Ñ Ñтраницы '''$1'''.",
'protect-locked-blocked' => "Ð’Ñ‹ не можете изменÑÑ‚ÑŒ уровень защиты Ñтраницы, пока ваша ÑƒÑ‡Ñ‘Ñ‚Ð½Ð°Ñ Ð·Ð°Ð¿Ð¸ÑÑŒ заблокирована.
Текущие уÑтановки Ð´Ð»Ñ Ñтраницы '''$1''':",
'protect-locked-dblock' => "Уровень защиты не может быть изменён, так как оÑÐ½Ð¾Ð²Ð½Ð°Ñ Ð±Ð°Ð·Ð° данных временно заблокирована.
@@ -2325,9 +2391,8 @@ $UNWATCHURL
'undeletepagetext' => '{{PLURAL:$1|Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ $1 Ñтраница была удалена|Следующие $1 Ñтраницы были удалены|Следующие $1 Ñтраниц были удалены}}, однако {{PLURAL:$1|она вÑÑ‘ ещё находÑÑ‚ÑÑ Ð² архиве, и поÑтому может быть воÑÑтановлена|они вÑÑ‘ ещё находÑÑ‚ÑÑ Ð² архиве, и поÑтому могут быть воÑÑтановлены}}.
Ðрхив может периодичеÑки очищатьÑÑ.',
'undelete-fieldset-title' => 'ВоÑÑтановить верÑии',
-'undeleteextrahelp' => "Ð”Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ñтории Ñтраницы оÑтавьте вÑе отметки пуÑтыми и нажмите '''«ВоÑÑтановить»'''.
-Ð”Ð»Ñ Ñ‡Ð°Ñтичного воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÑŒÑ‚Ðµ те верÑии Ñтраницы, которые нужно воÑÑтановить, и нажмите '''«ВоÑÑтановить»'''.
-Ðажмите '''«ОчиÑтить»''', чтобы ÑнÑÑ‚ÑŒ вÑе отметки и очиÑтить поле примечаниÑ.",
+'undeleteextrahelp' => "Ð”Ð»Ñ Ð¿Ð¾Ð»Ð½Ð¾Ð³Ð¾ воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¸Ñтории Ñтраницы оÑтавьте вÑе отметки пуÑтыми и нажмите '''«{{int:undeletebtn}}»'''.
+Ð”Ð»Ñ Ñ‡Ð°Ñтичного воÑÑÑ‚Ð°Ð½Ð¾Ð²Ð»ÐµÐ½Ð¸Ñ Ð¾Ñ‚Ð¼ÐµÑ‚ÑŒÑ‚Ðµ те верÑии Ñтраницы, которые нужно воÑÑтановить, и нажмите '''«{{int:undeletebtn}}»'''.",
'undeleterevisions' => 'в архиве $1 {{PLURAL:$1|верÑиÑ|верÑии|верÑий}}',
'undeletehistory' => 'При воÑÑтановлении Ñтраницы воÑÑтанавливаетÑÑ Ð¸ её иÑÑ‚Ð¾Ñ€Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¾Ðº.
ЕÑли поÑле ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð±Ñ‹Ð»Ð° Ñоздана Ð½Ð¾Ð²Ð°Ñ Ñтраница Ñ Ñ‚ÐµÐ¼ же названием, то воÑÑтановленные верÑии поÑвÑÑ‚ÑÑ Ð² иÑтории правок перед новыми верÑиÑми.',
@@ -2368,9 +2433,12 @@ $1',
'undelete-show-file-submit' => 'Да',
# Namespace form on various pages
-'namespace' => 'ПроÑтранÑтво имён:',
-'invert' => 'Обратить выбранное',
-'blanknamespace' => '(ОÑновное)',
+'namespace' => 'ПроÑтранÑтво имён:',
+'invert' => 'Обратить выбранное',
+'tooltip-invert' => 'УÑтановите Ñту отметку, чтобы Ñкрыть Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð½Ð° Ñтраницах, в пределах выбранного проÑтранÑтва имён (и ÑвÑзанных проÑтранÑтв имён, еÑли указано)',
+'namespace_association' => 'СвÑзанное проÑтранÑтво',
+'tooltip-namespace_association' => 'УÑтановите Ñту отметку, чтобы также включить проÑтранÑтво имён обÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ (или предметное), ÑвÑзанное Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ð¼ проÑтранÑтвом имён',
+'blanknamespace' => '(ОÑновное)',
# Contributions
'contributions' => 'Вклад учаÑтника',
@@ -2419,13 +2487,15 @@ $1',
'whatlinkshere-filters' => 'Фильтры',
# Block/unblock
+'autoblockid' => 'Ðвтоблокировка #$1',
+'block' => 'Блокировка учаÑтника',
+'unblock' => 'Разблокировка учаÑтника',
'blockip' => 'Заблокировать',
'blockip-title' => 'Блокирование учаÑтника',
'blockip-legend' => 'Блокировка учаÑтника',
'blockiptext' => 'ИÑпользуйте форму ниже, чтобы заблокировать возможноÑÑ‚ÑŒ запиÑи Ñ Ð¾Ð¿Ñ€ÐµÐ´ÐµÐ»Ñ‘Ð½Ð½Ð¾Ð³Ð¾ IP-адреÑа.
Это может быть Ñделано только Ð´Ð»Ñ Ð¿Ñ€ÐµÐ´Ð¾Ñ‚Ð²Ñ€Ð°Ñ‰ÐµÐ½Ð¸Ñ Ð²Ð°Ð½Ð´Ð°Ð»Ð¸Ð·Ð¼Ð° и только в ÑоответÑтвии Ñ [[{{MediaWiki:Policy-url}}|правилами]].
Ðиже укажите конкретную причину (к примеру, процитируйте некоторые Ñтраницы Ñ Ð¿Ñ€Ð¸Ð·Ð½Ð°ÐºÐ°Ð¼Ð¸ вандализма).',
-'ipaddress' => 'IP-адреÑ:',
'ipadressorusername' => 'IP-Ð°Ð´Ñ€ÐµÑ Ð¸Ð»Ð¸ Ð¸Ð¼Ñ ÑƒÑ‡Ð°Ñтника:',
'ipbexpiry' => 'ЗакончитÑÑ Ñ‡ÐµÑ€ÐµÐ·:',
'ipbreason' => 'Причина:',
@@ -2438,7 +2508,7 @@ $1',
** Угрозы, преÑледование учаÑтников
** Злоупотребление неÑколькими учётными запиÑÑми
** Ðеприемлемое Ð¸Ð¼Ñ ÑƒÑ‡Ð°Ñтника',
-'ipbanononly' => 'Блокировать только анонимных учаÑтников',
+'ipb-hardblock' => 'Запретить предÑтавившимÑÑ ÑƒÑ‡Ð°Ñтникам редактирование Ñ Ñтого IP-адреÑа',
'ipbcreateaccount' => 'Запретить Ñоздание новых учётных запиÑей',
'ipbemailban' => 'Запретить учаÑтнику отправлÑÑ‚ÑŒ пиÑьма по Ñлектронной почте',
'ipbenableautoblock' => 'ÐвтоматичеÑки блокировать иÑпользуемые учаÑтником IP-адреÑа',
@@ -2449,12 +2519,15 @@ $1',
'ipbotherreason' => 'Ð”Ñ€ÑƒÐ³Ð°Ñ Ð¿Ñ€Ð¸Ñ‡Ð¸Ð½Ð° / дополнение:',
'ipbhidename' => 'Скрыть Ð¸Ð¼Ñ ÑƒÑ‡Ð°Ñтника из правок и ÑпиÑков',
'ipbwatchuser' => 'Добавить в ÑпиÑок Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ñ Ð»Ð¸Ñ‡Ð½ÑƒÑŽ Ñтраницу учаÑтника и его Ñтраницу обÑуждениÑ',
-'ipballowusertalk' => 'Разрешить учаÑтнику править Ñвою Ñтраницу обÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸',
+'ipb-disableusertalk' => 'Запретить Ñтому учаÑтнику редактировать Ñвою Ñтраницу обÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ð²Ð¾ Ð²Ñ€ÐµÐ¼Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ¸',
'ipb-change-block' => 'Переблокировать учаÑтника Ñ Ñтими наÑтройками',
+'ipb-confirm' => 'Подтвердить блокировку',
'badipaddress' => 'IP-Ð°Ð´Ñ€ÐµÑ Ð·Ð°Ð¿Ð¸Ñан в неправильном формате, или учаÑтника Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем не ÑущеÑтвует.',
'blockipsuccesssub' => 'Блокировка произведена',
'blockipsuccesstext' => '[[Special:Contributions/$1|«$1»]] заблокирован.<br />
См. [[Special:IPBlockList|ÑпиÑок заблокированных IP-адреÑов]].',
+'ipb-blockingself' => 'Ð’Ñ‹ пытаетеÑÑŒ заблокировать ÑÐµÐ±Ñ Ñамого! Ð’Ñ‹ уверены, что вы хотите Ñто Ñделать?',
+'ipb-confirmhideuser' => 'Ð’Ñ‹ намереваетеÑÑŒ заблокировать учаÑтника и Ñкрыть его имÑ. Оно не будет отображатьÑÑ Ð² ÑпиÑках и журналах. Ð’Ñ‹ уверены, что хотите Ñто Ñделать?',
'ipb-edit-dropdown' => 'Править ÑпиÑок причин',
'ipb-unblock-addr' => 'Разблокировать $1',
'ipb-unblock' => 'Разблокировать учаÑтника или IP-адреÑ',
@@ -2464,17 +2537,23 @@ $1',
'unblockiptext' => 'ИÑпользуйте форму ниже, чтобы воÑÑтановить возможноÑÑ‚ÑŒ запиÑи Ñ Ñ€Ð°Ð½ÐµÐµ заблокированного IP-адреÑа или учётной запиÑи.',
'ipusubmit' => 'СнÑÑ‚ÑŒ Ñту блокировку',
'unblocked' => '[[User:$1|$1]] разблокирован.',
+'unblocked-range' => '$1 был разблокирован',
'unblocked-id' => 'Блокировка $1 была ÑнÑта',
+'blocklist' => 'Заблокированные учаÑтники',
'ipblocklist' => 'Заблокированные учаÑтники',
'ipblocklist-legend' => 'ПоиÑк заблокированного учаÑтника',
-'ipblocklist-username' => 'Ð˜Ð¼Ñ ÑƒÑ‡Ð°Ñтника или IP-адреÑ:',
-'ipblocklist-sh-userblocks' => '$1 блокировки учётных запиÑей',
-'ipblocklist-sh-tempblocks' => '$1 временные блокировки',
-'ipblocklist-sh-addressblocks' => '$1 блокировки отдельных IP',
+'blocklist-userblocks' => 'Скрыть блокировки учётных запиÑей',
+'blocklist-tempblocks' => 'Скрыть временные блокировки',
+'blocklist-addressblocks' => 'Скрыть блокировки отдельных IP',
+'blocklist-timestamp' => 'Дата/времÑ',
+'blocklist-target' => 'Цель',
+'blocklist-expiry' => 'ИÑтекает',
+'blocklist-by' => 'Блокирующий админиÑтратор',
+'blocklist-params' => 'Параметры блокировки',
+'blocklist-reason' => 'Причина',
'ipblocklist-submit' => 'Ðайти',
'ipblocklist-localblock' => 'Ð›Ð¾ÐºÐ°Ð»ÑŒÐ½Ð°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ°',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Ð”Ñ€ÑƒÐ³Ð°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ°|Другие блокировки}}',
-'blocklistline' => '$1, $2 заблокировал $3 ($4)',
'infiniteblock' => 'беÑÑÑ€Ð¾Ñ‡Ð½Ð°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ°',
'expiringblock' => 'завершитÑÑ $1 $2',
'anononlyblock' => 'только анонимов',
@@ -2498,7 +2577,7 @@ $1',
'reblock-logentry' => 'изменил наÑтройки блокировки Ð´Ð»Ñ [[$1]], иÑтекает $2 $3',
'blocklogtext' => 'Журнал Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð¸ Ñ€Ð°Ð·Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ ÑƒÑ‡Ð°Ñтников.
ÐвтоматичеÑки блокируемые IP-адреÑа здеÑÑŒ не указываютÑÑ.
-См. [[Special:IPBlockList|СпиÑок текущих запретов и блокировок]].',
+См. [[Special:BlockList|СпиÑок текущих запретов и блокировок]].',
'unblocklogentry' => 'разблокировал $1',
'block-log-flags-anononly' => 'только анонимные пользователи',
'block-log-flags-nocreate' => 'запрещена региÑÑ‚Ñ€Ð°Ñ†Ð¸Ñ ÑƒÑ‡Ñ‘Ñ‚Ð½Ñ‹Ñ… запиÑей',
@@ -2512,9 +2591,9 @@ $1',
'ipb_expiry_temp' => 'Блокировки Ñ Ñокрытием имени учаÑтника должны быть беÑÑрочными.',
'ipb_hide_invalid' => 'Ðевозможно Ñкрыть учётную запиÑÑŒ, возможно, Ñ Ð½ÐµÑ‘ Ñделано Ñлишком много правок.',
'ipb_already_blocked' => '«$1» уже заблокирован.',
-'ipb-needreblock' => '== Уже заблокирован ==
-УчаÑтник $1 уже заблокирован. Желаете ли вы изменить параметры блокировки?',
+'ipb-needreblock' => 'УчаÑтник $1 уже заблокирован. Желаете ли вы изменить параметры блокировки?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Ð”Ñ€ÑƒÐ³Ð°Ñ Ð±Ð»Ð¾ÐºÐ¸Ñ€Ð¾Ð²ÐºÐ°|Другие блокировки}}',
+'unblock-hideuser' => 'Ð’Ñ‹ не можете разблокировать Ñтого учаÑтника, так как его Ð¸Ð¼Ñ Ð±Ñ‹Ð»Ð¾ Ñкрыто.',
'ipb_cant_unblock' => 'Ошибка. Ðе найдена блокировка Ñ ID $1. Возможно, она уже была ÑнÑта.',
'ipb_blocked_as_range' => 'Ошибка: IP-Ð°Ð´Ñ€ÐµÑ $1 был заблокирован не напрÑмую и не может быть разблокирован. Однако, он принадлежит к заблокированному диапазону $2, который можно разблокировать.',
'ip_range_invalid' => 'ÐедопуÑтимый диапазон IP-адреÑов.',
@@ -2554,6 +2633,7 @@ $1',
'unlockdbsuccesstext' => 'База данных проекта была разблокирована.',
'lockfilenotwritable' => 'Ðет права на запиÑÑŒ в файл блокировки базы данных. Чтобы заблокировать или разблокировать БД, веб-Ñервер должен иметь разрешение на запиÑÑŒ в Ñтот файл.',
'databasenotlocked' => 'База данных не была заблокирована.',
+'lockedbyandtime' => '($1 $2 $3)',
# Move page
'move-page' => '$1 — переименование',
@@ -2677,7 +2757,7 @@ $1',
'allmessagesdefault' => 'ТекÑÑ‚ по умолчанию',
'allmessagescurrent' => 'Текущий текÑÑ‚',
'allmessagestext' => 'Это ÑпиÑок ÑиÑтемных Ñообщений, доÑтупных в проÑтранÑтве имён «MediaWiki».
-ЕÑли вы хотите внеÑти вклад в общую локализацию MediaWiki, пожалуйÑта, поÑетите Ñтраницу [http://www.mediawiki.org/wiki/Localisation опиÑÐ°Ð½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸] и проект [http://translatewiki.net translatewiki.net].',
+ЕÑли вы хотите внеÑти вклад в общую локализацию MediaWiki, пожалуйÑта, поÑетите Ñтраницу [//www.mediawiki.org/wiki/Localisation опиÑÐ°Ð½Ð¸Ñ Ð»Ð¾ÐºÐ°Ð»Ð¸Ð·Ð°Ñ†Ð¸Ð¸] и проект [//translatewiki.net translatewiki.net].',
'allmessagesnotsupportedDB' => "Эта Ñтраница недоÑтупна, так как отключена Ð¾Ð¿Ñ†Ð¸Ñ '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'Фильтр',
'allmessages-filter' => 'Фильтр по ÑтатуÑу изменениÑ:',
@@ -2814,18 +2894,23 @@ $1',
'tooltip-summary' => 'Введите краткое опиÑание',
# Stylesheets
-'common.css' => '/** Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ ÐºÐ¾ вÑем темам Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ */',
-'standard.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Standard */',
-'nostalgia.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Nostalgia */',
-'cologneblue.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Cologne Blue */',
-'monobook.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Monobook */',
-'myskin.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ MySkin */',
-'chick.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Chick */',
-'simple.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Simple */',
-'modern.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Modern */',
-'vector.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº векторной теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ */',
-'print.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº верÑии Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ */',
-'handheld.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ð´Ð»Ñ Ð¼Ð¾Ð±Ð¸Ð»ÑŒÐ½Ñ‹Ñ… уÑтройÑтв, иÑпользующих тему оформлениÑ, наÑтроенную в $wgHandheldStyle */',
+'common.css' => '/** Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ ÐºÐ¾ вÑем темам Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ */',
+'standard.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Standard */',
+'nostalgia.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Nostalgia */',
+'cologneblue.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Cologne Blue */',
+'monobook.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Monobook */',
+'myskin.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ MySkin */',
+'chick.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Chick */',
+'simple.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Simple */',
+'modern.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ Modern */',
+'vector.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº векторной теме Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ */',
+'print.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ðº верÑии Ð´Ð»Ñ Ð¿ÐµÑ‡Ð°Ñ‚Ð¸ */',
+'handheld.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ð´Ð»Ñ Ð¼Ð¾Ð±Ð¸Ð»ÑŒÐ½Ñ‹Ñ… уÑтройÑтв, иÑпользующих тему оформлениÑ, наÑтроенную в $wgHandheldStyle */',
+'noscript.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ð´Ð»Ñ ÑƒÑ‡Ð°Ñтников Ñ Ð¾Ñ‚ÐºÐ»ÑŽÑ‡ÐµÐ½Ð½Ñ‹Ð¼ JavaScript */',
+'group-autoconfirmed.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¿Ð¾Ð´Ñ‚Ð²ÐµÑ€Ð¶Ð´Ñ‘Ð½Ð½Ñ‹Ñ… учаÑтников */',
+'group-bot.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ð±Ð¾Ñ‚Ð¾Ð² */',
+'group-sysop.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ð°Ð´Ð¼Ð¸Ð½Ð¸Ñтраторов */',
+'group-bureaucrat.css' => '/* Размещённый здеÑÑŒ CSS будет применÑÑ‚ÑŒÑÑ Ñ‚Ð¾Ð»ÑŒÐºÐ¾ Ð´Ð»Ñ Ð±ÑŽÑ€Ð¾ÐºÑ€Ð°Ñ‚Ð¾Ð² */',
# Scripts
'common.js' => '/* Размещённый здеÑÑŒ JavaScript код будет загружатьÑÑ Ð²Ñем пользователÑм при обращении к каждой Ñтранице */',
@@ -2836,9 +2921,7 @@ $1',
'vector.js' => '/* Указанный здеÑÑŒ JavaScript будет загружен вÑем учаÑтникам, иÑпользующим векторную тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð¸Ñ */',
# Metadata
-'nodublincore' => 'Метаданные Dublin Core RDF запрещены Ð´Ð»Ñ Ñтого Ñервера.',
-'nocreativecommons' => 'Метаданные Creative Commons RDF запрещены Ð´Ð»Ñ Ñтого Ñервера.',
-'notacceptable' => "Вики-Ñервер не может предоÑтавить данные в формате, который мог бы прочитать ваш браузер.<br />
+'notacceptable' => "Вики-Ñервер не может предоÑтавить данные в формате, который мог бы прочитать ваш браузер.<br />
The wiki server can't provide data in a format your client can read.",
# Attribution
@@ -2863,12 +2946,17 @@ The wiki server can't provide data in a format your client can read.",
'spam_blanking' => 'Ð’Ñе верÑии Ñодержат ÑÑылки на $1, очиÑтка',
# Info page
-'infosubtitle' => 'Ð˜Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ Ð¾ Ñтранице',
-'numedits' => 'ЧиÑло правок (ÑтатьÑ): $1',
-'numtalkedits' => 'ЧиÑло правок (Ñтраница обÑуждениÑ): $1',
-'numwatchers' => 'ЧиÑло наблюдателей: $1',
-'numauthors' => 'ЧиÑло различных авторов (ÑтатьÑ): $1',
-'numtalkauthors' => 'ЧиÑло различных авторов (Ñтраница обÑуждениÑ): $1',
+'pageinfo-title' => 'Ð¡Ð²ÐµÐ´ÐµÐ½Ð¸Ñ Ð¿Ð¾ «$1»',
+'pageinfo-header-edits' => 'Правки',
+'pageinfo-header-watchlist' => 'СпиÑок наблюдениÑ',
+'pageinfo-header-views' => 'ПроÑмотры',
+'pageinfo-subjectpage' => 'Страница',
+'pageinfo-talkpage' => 'Страница обÑуждениÑ',
+'pageinfo-watchers' => 'ЧиÑло наблюдающих',
+'pageinfo-edits' => 'ЧиÑло правок',
+'pageinfo-authors' => 'КоличеÑтво различных авторов',
+'pageinfo-views' => 'КоличеÑтво проÑмотров',
+'pageinfo-viewsperedit' => 'ПроÑмотров на правку',
# Skin names
'skinname-standard' => 'КлаÑÑичеÑкое',
@@ -2880,25 +2968,6 @@ The wiki server can't provide data in a format your client can read.",
'skinname-modern' => 'Современное',
'skinname-vector' => 'Векторное',
-# Math options
-'mw_math_png' => 'Ð’Ñегда генерировать PNG',
-'mw_math_simple' => 'HTML в проÑÑ‚Ñ‹Ñ… ÑлучаÑÑ…, иначе PNG',
-'mw_math_html' => 'HTML, еÑли возможно, иначе PNG',
-'mw_math_source' => 'ОÑтавить в разметке ТеХ (Ð´Ð»Ñ Ñ‚ÐµÐºÑтовых браузеров)',
-'mw_math_modern' => 'Как рекомендуетÑÑ Ð´Ð»Ñ Ñовременных браузеров',
-'mw_math_mathml' => 'MathML, еÑли возможно (ÑкÑÐ¿ÐµÑ€Ð¸Ð¼ÐµÐ½Ñ‚Ð°Ð»ÑŒÐ½Ð°Ñ Ð¾Ð¿Ñ†Ð¸Ñ)',
-
-# Math errors
-'math_failure' => 'Ðевозможно разобрать выражение',
-'math_unknown_error' => 'неизвеÑÑ‚Ð½Ð°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°',
-'math_unknown_function' => 'неизвеÑÑ‚Ð½Ð°Ñ Ñ„ÑƒÐ½ÐºÑ†Ð¸Ñ',
-'math_lexing_error' => 'лекÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°',
-'math_syntax_error' => 'ÑинтакÑичеÑÐºÐ°Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ°',
-'math_image_error' => 'Преобразование в PNG прошло Ñ Ð¾ÑˆÐ¸Ð±ÐºÐ¾Ð¹ — проверьте правильноÑÑ‚ÑŒ уÑтановки latex и dvips (или dvips + gs + convert)',
-'math_bad_tmpdir' => 'Ðе удаётÑÑ Ñоздать или запиÑать во временный каталог математики',
-'math_bad_output' => 'Ðе удаётÑÑ Ñоздать или запиÑать в выходной каталог математики',
-'math_notexvc' => 'ВыполнÑемый файл texvc не найден; См. math/README — Ñправку по наÑтройке.',
-
# Patrolling
'markaspatrolleddiff' => 'Отметить как проверенную',
'markaspatrolledtext' => 'Отметить Ñту Ñтатью как проверенную',
@@ -2934,23 +3003,26 @@ $1',
'nextdiff' => 'Ð¡Ð»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ð¿Ñ€Ð°Ð²ÐºÐ° →',
# Media information
-'mediawarning' => "'''Внимание'''. Этот тип файла может Ñодержать вредоноÑный программный код.
+'mediawarning' => "'''Внимание'''. Этот тип файла может Ñодержать вредоноÑный программный код.
ПоÑле его запуÑка, ваша ÑиÑтема может быть подвержена риÑку.",
-'imagemaxsize' => "Ограничение на размер изображениÑ:<br />''(Ð´Ð»Ñ Ñтраницы опиÑÐ°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°)''",
-'thumbsize' => 'Размер уменьшенной верÑии изображениÑ:',
-'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|Ñтраница|Ñтраницы|Ñтраниц}}',
-'file-info' => 'размер файла: $1, MIME-тип: $2',
-'file-info-size' => '$1 × $2 {{PLURAL:$2|пикÑель|пикÑелÑ|пикÑелей}}, размер файла: $3, MIME-тип: $4',
-'file-nohires' => '<small>Ðет верÑии Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ разрешением.</small>',
-'svg-long-desc' => 'SVG-файл, номинально $1 × $2 {{PLURAL:$2|пикÑель|пикÑелÑ|пикÑелей}}, размер файла: $3',
-'show-big-image' => 'Изображение в более выÑоком разрешении',
-'show-big-image-thumb' => '<small>Размер при предпроÑмотре: $1 × $2 {{PLURAL:$2|пикÑель|пикÑелÑ|пикÑелей}}</small>',
-'file-info-gif-looped' => 'закольцованный',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|фрейм|фрейма|фреймов}}',
-'file-info-png-looped' => 'закольцованный',
-'file-info-png-repeat' => 'проигрываетÑÑ $1 {{PLURAL:$1|раз|раза|раз}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|кадр|кадра|кадров}}',
+'imagemaxsize' => "Ограничение на размер изображениÑ:<br />''(Ð´Ð»Ñ Ñтраницы опиÑÐ°Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð»Ð°)''",
+'thumbsize' => 'Размер уменьшенной верÑии изображениÑ:',
+'widthheight' => '$1 × $2',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|Ñтраница|Ñтраницы|Ñтраниц}}',
+'file-info' => 'размер файла: $1, MIME-тип: $2',
+'file-info-size' => '$1 × $2 {{PLURAL:$2|пикÑель|пикÑелÑ|пикÑелей}}, размер файла: $3, MIME-тип: $4',
+'file-info-size-pages' => '$1 × $2 пикÑелей, размер файла: $3, MIME-тип: $4, $5 {{PLURAL:$5|Ñтраница|Ñтраницы|Ñтраниц}}',
+'file-nohires' => '<small>Ðет верÑии Ñ Ð±Ð¾Ð»ÑŒÑˆÐ¸Ð¼ разрешением.</small>',
+'svg-long-desc' => 'SVG-файл, номинально $1 × $2 {{PLURAL:$2|пикÑель|пикÑелÑ|пикÑелей}}, размер файла: $3',
+'show-big-image' => 'Изображение в более выÑоком разрешении',
+'show-big-image-preview' => '<small>Размер при предпроÑмотре: $1.</small>',
+'show-big-image-other' => '<small>Другие разрешениÑ: $1.</small>',
+'show-big-image-size' => '$1 × $2 пикÑелей',
+'file-info-gif-looped' => 'закольцованный',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|фрейм|фрейма|фреймов}}',
+'file-info-png-looped' => 'закольцованный',
+'file-info-png-repeat' => 'проигрываетÑÑ $1 {{PLURAL:$1|раз|раза|раз}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|кадр|кадра|кадров}}',
# Special:NewFiles
'newimages' => 'Ð“Ð°Ð»ÐµÑ€ÐµÑ Ð½Ð¾Ð²Ñ‹Ñ… файлов',
@@ -2982,14 +3054,20 @@ $1',
'metadata-help' => 'Файл Ñодержит дополнительные данные, обычно добавлÑемые цифровыми камерами или Ñканерами. ЕÑли файл поÑле ÑÐ¾Ð·Ð´Ð°Ð½Ð¸Ñ Ñ€ÐµÐ´Ð°ÐºÑ‚Ð¸Ñ€Ð¾Ð²Ð°Ð»ÑÑ, то некоторые параметры могут не ÑоответÑтвовать текущему изображению.',
'metadata-expand' => 'Показать дополнительные данные',
'metadata-collapse' => 'Скрыть дополнительные данные',
-'metadata-fields' => 'ÐŸÐ¾Ð»Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð½Ñ‹Ñ…, перечиÑленные в Ñтом ÑпиÑке, будут показаны на Ñтранице Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ умолчанию, оÑтальные будут Ñкрыты.
+'metadata-fields' => 'ÐŸÐ¾Ð»Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð½Ñ‹Ñ… изображениÑ, перечиÑленные в Ñтом ÑпиÑке, будут показаны на Ñтранице Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð¸ Ñвёрнутой таблице метаданных. ОÑтальные Ð¿Ð¾Ð»Ñ Ð±ÑƒÐ´ÑƒÑ‚ по умолчанию Ñкрыты.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Ширина',
@@ -3004,13 +3082,11 @@ $1',
'exif-ycbcrpositioning' => 'ПорÑдок Ñ€Ð°Ð·Ð¼ÐµÑ‰ÐµÐ½Ð¸Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚ Y и C',
'exif-xresolution' => 'Горизонтальное разрешение',
'exif-yresolution' => 'Вертикальное разрешение',
-'exif-resolutionunit' => 'Единица Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ',
'exif-stripoffsets' => 'Положение блока данных',
'exif-rowsperstrip' => 'КоличеÑтво Ñтрок в 1 блоке',
'exif-stripbytecounts' => 'Размер Ñжатого блока',
'exif-jpeginterchangeformat' => 'Положение начала блока preview',
'exif-jpeginterchangeformatlength' => 'Размер данных блока preview',
-'exif-transferfunction' => 'Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ†Ð²ÐµÑ‚Ð¾Ð²Ð¾Ð³Ð¾ проÑтранÑтва',
'exif-whitepoint' => 'ЦветноÑÑ‚ÑŒ белой точки',
'exif-primarychromaticities' => 'ЦветноÑÑ‚ÑŒ оÑновных цветов',
'exif-ycbcrcoefficients' => 'КоÑффициенты Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ†Ð²ÐµÑ‚Ð¾Ð²Ð¾Ð¹ модели',
@@ -3029,7 +3105,6 @@ $1',
'exif-compressedbitsperpixel' => 'Глубина цвета поÑле ÑжатиÑ',
'exif-pixelydimension' => 'Ширина изображениÑ',
'exif-pixelxdimension' => 'Ð’Ñ‹Ñота изображениÑ',
-'exif-makernote' => 'Дополнительные данные производителÑ',
'exif-usercomment' => 'Дополнительный комментарий',
'exif-relatedsoundfile' => 'Файл звукового комментариÑ',
'exif-datetimeoriginal' => 'Оригинальные дата и времÑ',
@@ -3043,7 +3118,6 @@ $1',
'exif-exposureprogram' => 'Программа ÑкÑпозиции',
'exif-spectralsensitivity' => 'Ð¡Ð¿ÐµÐºÑ‚Ñ€Ð°Ð»ÑŒÐ½Ð°Ñ Ñ‡ÑƒÐ²ÑтвительноÑÑ‚ÑŒ',
'exif-isospeedratings' => 'СветочувÑтвительноÑÑ‚ÑŒ ISO',
-'exif-oecf' => 'OECF (коÑффициент оптоÑлектричеÑкого преобразованиÑ)',
'exif-shutterspeedvalue' => 'Выдержка в APEX',
'exif-aperturevalue' => 'Диафрагма в APEX',
'exif-brightnessvalue' => 'ЯркоÑÑ‚ÑŒ в APEX',
@@ -3057,7 +3131,6 @@ $1',
'exif-focallength-format' => '$1 мм',
'exif-subjectarea' => 'Положение и площадь объекта Ñъёмки',
'exif-flashenergy' => 'Ð­Ð½ÐµÑ€Ð³Ð¸Ñ Ð²Ñпышки',
-'exif-spatialfrequencyresponse' => 'ПроÑтранÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ñ‡Ð°ÑÑ‚Ð¾Ñ‚Ð½Ð°Ñ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñтика',
'exif-focalplanexresolution' => 'Разрешение по X в фокальной плоÑкоÑти',
'exif-focalplaneyresolution' => 'Разрешение по Y в фокальной плоÑкоÑти',
'exif-focalplaneresolutionunit' => 'Единица Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð² фокальной плоÑкоÑти',
@@ -3066,7 +3139,6 @@ $1',
'exif-sensingmethod' => 'Тип ÑенÑора',
'exif-filesource' => 'ИÑточник файла',
'exif-scenetype' => 'Тип Ñцены',
-'exif-cfapattern' => 'Тип цветового фильтра',
'exif-customrendered' => 'Ð”Ð¾Ð¿Ð¾Ð»Ð½Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ð°Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ°',
'exif-exposuremode' => 'Режим выбора ÑкÑпозиции',
'exif-whitebalance' => 'Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ð¾Ð³Ð¾',
@@ -3111,10 +3183,79 @@ $1',
'exif-gpsareainformation' => 'Ðазвание облаÑти GPS',
'exif-gpsdatestamp' => 'Дата',
'exif-gpsdifferential' => 'Ð”Ð¸Ñ„Ñ„ÐµÑ€ÐµÐ½Ñ†Ð¸Ð°Ð»ÑŒÐ½Ð°Ñ Ð¿Ð¾Ð¿Ñ€Ð°Ð²ÐºÐ°',
+'exif-jpegfilecomment' => 'Примечание JPEG-файла',
+'exif-keywords' => 'Ключевые Ñлова',
+'exif-worldregioncreated' => 'Регион мира, где была Ñделана фотографиÑ',
+'exif-countrycreated' => 'Страна, где была Ñделана фотографиÑ',
+'exif-countrycodecreated' => 'Код Ñтраны, где была Ñделана фотографиÑ',
+'exif-provinceorstatecreated' => 'ОблаÑÑ‚ÑŒ, Ð¿Ñ€Ð¾Ð²Ð¸Ð½Ñ†Ð¸Ñ Ð¸Ð»Ð¸ штат, где была Ñделана фотографиÑ',
+'exif-citycreated' => 'Город, где была Ñделана фотографиÑ',
+'exif-sublocationcreated' => 'Район города, где была Ñделана фоторафиÑ',
+'exif-worldregiondest' => 'Изображённый регион мира',
+'exif-countrydest' => 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ñтрана',
+'exif-countrycodedest' => 'Код изображённой Ñтраны',
+'exif-provinceorstatedest' => 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ð¾Ð±Ð»Ð°ÑÑ‚ÑŒ, Ð¿Ñ€Ð¾Ð²Ð¸Ð½Ñ†Ð¸Ñ Ð¸Ð»Ð¸ штат',
+'exif-citydest' => 'Изображённый город',
+'exif-sublocationdest' => 'Изображённый район города',
'exif-objectname' => 'Краткое название',
+'exif-specialinstructions' => 'ОÑобые указаниÑ',
+'exif-headline' => 'Заголовок',
+'exif-credit' => 'ПоÑтавщик, кто предоÑтавил изображение',
+'exif-source' => 'ИÑточник',
+'exif-editstatus' => 'Редакционный ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ',
+'exif-urgency' => 'ÐктуальноÑÑ‚ÑŒ',
+'exif-fixtureidentifier' => 'Ðазвание колонки',
+'exif-locationdest' => 'Изображённое меÑто',
+'exif-locationdestcode' => 'Код изображённого меÑта',
+'exif-objectcycle' => 'Ð’Ñ€ÐµÐ¼Ñ Ñуток, Ð´Ð»Ñ ÐºÐ¾Ñ‚Ð¾Ñ€Ð¾Ð³Ð¾ предназначено изображение',
+'exif-contact' => 'ÐšÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ',
+'exif-writer' => 'Ðвтор текÑта',
+'exif-languagecode' => 'Язык',
+'exif-iimversion' => 'ВерÑÐ¸Ñ IIM',
+'exif-iimcategory' => 'КатегориÑ',
+'exif-iimsupplementalcategory' => 'Дополнительные категории',
+'exif-datetimeexpires' => 'Ðе иÑпользовать поÑле',
+'exif-datetimereleased' => 'Дата выхода',
+'exif-originaltransmissionref' => 'Код иÑходного меÑта передачи',
+'exif-identifier' => 'Идентификатор',
+'exif-lens' => 'ИÑпользованный объектив',
+'exif-serialnumber' => 'Серийный номер камеры',
+'exif-cameraownername' => 'Владелец камеры',
+'exif-label' => 'Обозначение',
+'exif-datetimemetadata' => 'Дата поÑледнего Ð¸Ð·Ð¼ÐµÐ½ÐµÐ½Ð¸Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð½Ñ‹Ñ…',
+'exif-nickname' => 'Ðеформальное название изображениÑ',
+'exif-rating' => 'Оценка (из 5)',
+'exif-rightscertificate' => 'Сертификат ÑƒÐ¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸',
+'exif-copyrighted' => 'ÐвторÑко-правовой ÑтатуÑ:',
+'exif-copyrightowner' => 'Владелец авторÑких прав',
+'exif-usageterms' => 'УÑÐ»Ð¾Ð²Ð¸Ñ Ð¸ÑпользованиÑ',
+'exif-webstatement' => 'Положение об авторÑких правах в Интернете',
+'exif-originaldocumentid' => 'Уникальный идентификатор иÑходного документа',
+'exif-licenseurl' => 'URL авторÑкой лицензии',
+'exif-morepermissionsurl' => 'ÐÐ»ÑŒÑ‚ÐµÑ€Ð½Ð°Ñ‚Ð¸Ð²Ð½Ð°Ñ Ð»Ð¸Ñ†ÐµÐ½Ð·Ð¸Ð¾Ð½Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ',
+'exif-attributionurl' => 'При иÑпользовании Ñтой работы, пожалуйÑта, ÑÑылайтеÑÑŒ на',
+'exif-preferredattributionname' => 'При иÑпользовании Ñтой работы, пожалуйÑта, указывайте',
+'exif-pngfilecomment' => 'Примечание к PNG-файлу',
+'exif-disclaimer' => 'Отказ от ответÑтвенноÑти',
+'exif-contentwarning' => 'Предупреждение о Ñодержании',
+'exif-giffilecomment' => 'Примечание GIF-файла',
+'exif-intellectualgenre' => 'Тип объекта',
+'exif-subjectnewscode' => 'Код темы',
+'exif-scenecode' => 'Код Ñцены IPTC',
+'exif-event' => 'Изображённое Ñобытие',
+'exif-organisationinimage' => 'Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶Ñ‘Ð½Ð½Ð°Ñ Ð¾Ñ€Ð³Ð°Ð½Ð¸Ð·Ð°Ñ†Ð¸Ñ',
+'exif-personinimage' => 'Изображённый человек',
+'exif-originalimageheight' => 'Ð’Ñ‹Ñота Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð¾ кадрированиÑ',
+'exif-originalimagewidth' => 'Ширина Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð´Ð¾ кадрированиÑ',
# EXIF attributes
'exif-compression-1' => 'ÐеÑжатый',
+'exif-compression-2' => 'CCITT Group 3, 1-Ð¼ÐµÑ€Ð½Ð°Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ð¸Ð½ Ñерий Хаффмана',
+'exif-compression-3' => 'CCITT Group 3, факÑовое кодирование',
+'exif-compression-4' => 'CCITT Group 4, факÑовое кодирование',
+
+'exif-copyrighted-true' => 'ОхранÑетÑÑ Ð°Ð²Ñ‚Ð¾Ñ€Ñким правом',
+'exif-copyrighted-false' => 'ОбщеÑтвенное доÑтоÑние',
'exif-unknowndate' => 'ÐеизвеÑÑ‚Ð½Ð°Ñ Ð´Ð°Ñ‚Ð°',
@@ -3133,6 +3274,8 @@ $1',
'exif-xyresolution-i' => '$1 точек на дюйм',
'exif-xyresolution-c' => '$1 точек на Ñантиметр',
+'exif-colorspace-65535' => 'Ðекалиброванное',
+
'exif-componentsconfiguration-0' => 'не ÑущеÑтвует',
'exif-exposureprogram-0' => 'ÐеизвеÑтно',
@@ -3246,6 +3389,10 @@ $1',
'exif-gpslongitude-e' => 'воÑточной долготы',
'exif-gpslongitude-w' => 'западной долготы',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|метр|метра|метров}} над уровнем морÑ',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|метр|метра|метров}} ниже ÑƒÑ€Ð¾Ð²Ð½Ñ Ð¼Ð¾Ñ€Ñ',
+
'exif-gpsstatus-a' => 'Измерение не закончено',
'exif-gpsstatus-v' => 'Готов к передаче данных',
@@ -3257,21 +3404,73 @@ $1',
'exif-gpsspeed-m' => 'миль/чаÑ',
'exif-gpsspeed-n' => 'узлов',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Километров',
+'exif-gpsdestdistance-m' => 'Миль',
+'exif-gpsdestdistance-n' => 'МорÑких миль',
+
+'exif-gpsdop-excellent' => 'ÐžÑ‚Ð»Ð¸Ñ‡Ð½Ð°Ñ ($1)',
+'exif-gpsdop-good' => 'Ð¥Ð¾Ñ€Ð¾ÑˆÐ°Ñ ($1)',
+'exif-gpsdop-moderate' => 'СреднÑÑ ($1)',
+'exif-gpsdop-fair' => 'Ðиже Ñреднего ($1)',
+'exif-gpsdop-poor' => 'ÐŸÐ»Ð¾Ñ…Ð°Ñ ($1)',
+
+'exif-objectcycle-a' => 'Только утром',
+'exif-objectcycle-p' => 'Только вечером',
+'exif-objectcycle-b' => 'Утром и вечером',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'иÑтинный',
'exif-gpsdirection-m' => 'магнитный',
+'exif-ycbcrpositioning-1' => 'Центрированный',
+'exif-ycbcrpositioning-2' => 'CO-sited',
+
+'exif-dc-contributor' => 'Соавторы',
+'exif-dc-coverage' => 'ПроÑтранÑтвенные или временные рамки медиа',
+'exif-dc-date' => 'Дата(ы)',
+'exif-dc-publisher' => 'Издатель',
+'exif-dc-relation' => 'СвÑзанные медиа',
+'exif-dc-rights' => 'Права',
+'exif-dc-source' => 'ИÑходное медиа',
+'exif-dc-type' => 'Тип медиа',
+
+'exif-rating-rejected' => 'Отклонено',
+
+'exif-isospeedratings-overflow' => 'Более 65535',
+
+'exif-iimcategory-ace' => 'ИÑкуÑÑтво, культура и развлечениÑ',
+'exif-iimcategory-clj' => 'ПреÑтупноÑÑ‚ÑŒ и закон',
+'exif-iimcategory-dis' => 'КатаÑтрофы и аварии',
+'exif-iimcategory-fin' => 'Экономика и бизнеÑ',
+'exif-iimcategory-edu' => 'Образование',
+'exif-iimcategory-evn' => 'ÐžÐºÑ€ÑƒÐ¶Ð°ÑŽÑ‰Ð°Ñ Ñреда',
+'exif-iimcategory-hth' => 'Здоровье',
+'exif-iimcategory-hum' => 'Примечательные иÑтории',
+'exif-iimcategory-lab' => 'Труд',
+'exif-iimcategory-lif' => 'Образ жизни и доÑуг',
+'exif-iimcategory-pol' => 'Политика',
+'exif-iimcategory-rel' => 'Ð ÐµÐ»Ð¸Ð³Ð¸Ñ Ð¸ вера',
+'exif-iimcategory-sci' => 'Ðаука и техника',
+'exif-iimcategory-soi' => 'Социальные вопроÑÑ‹',
+'exif-iimcategory-spo' => 'Спорт',
+'exif-iimcategory-war' => 'Войны, конфликты и беÑпорÑдки',
+'exif-iimcategory-wea' => 'Погода',
+
+'exif-urgency-normal' => 'ÐžÐ±Ñ‹Ñ‡Ð½Ð°Ñ ($1)',
+'exif-urgency-low' => 'ÐÐ¸Ð·ÐºÐ°Ñ ($1)',
+'exif-urgency-high' => 'Ð’Ñ‹ÑÐ¾ÐºÐ°Ñ ($1)',
+'exif-urgency-other' => 'Определённый пользователем приоритет ($1)',
+
# External editor support
'edit-externally' => 'Редактировать Ñтот файл, иÑÐ¿Ð¾Ð»ÑŒÐ·ÑƒÑ Ð²Ð½ÐµÑˆÐ½ÑŽÑŽ программу',
-'edit-externally-help' => '(подробнее Ñм. в [http://www.mediawiki.org/wiki/Manual:External_editors руководÑтве по уÑтановке])',
+'edit-externally-help' => '(подробнее Ñм. в [//www.mediawiki.org/wiki/Manual:External_editors руководÑтве по уÑтановке])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'вÑе',
-'imagelistall' => 'вÑе',
-'watchlistall2' => 'вÑе',
-'namespacesall' => 'вÑе',
-'monthsall' => 'вÑе',
-'limitall' => 'вÑе',
+'watchlistall2' => 'вÑе',
+'namespacesall' => 'вÑе',
+'monthsall' => 'вÑе',
+'limitall' => 'вÑе',
# E-mail address confirmation
'confirmemail' => 'Подтверждение адреÑа Ñлектронной почты',
@@ -3356,11 +3555,12 @@ $1',
'trackbackdeleteok' => 'Trackback был удалён.',
# Delete conflict
-'deletedwhileediting' => "'''Внимание'''. Эта Ñтраница была удалена поÑле того, как вы начали её править!",
-'confirmrecreate' => "УчаÑтник [[User:$1|$1]] ([[User talk:$1|обÑуждение]]) удалил Ñту Ñтраницу поÑле того, как вы начали её редактировать, причина удалениÑ:
+'deletedwhileediting' => "'''Внимание'''. Эта Ñтраница была удалена поÑле того, как вы начали её править!",
+'confirmrecreate' => "УчаÑтник [[User:$1|$1]] ([[User talk:$1|обÑуждение]]) удалил Ñту Ñтраницу поÑле того, как вы начали её редактировать, причина удалениÑ:
: ''$2''
ПожалуйÑта, подтвердите, что вы хотите воÑÑтановить Ñту Ñтраницу.",
-'recreate' => 'Создать заново',
+'confirmrecreate-noreason' => 'УчаÑтник [[User:$1|$1]] ([[User talk:$1|обÑуждение]]) удалил Ñту Ñтраницу поÑле того, как вы начали её редактировать. ПожалуйÑта, подтвердите, что вы дейÑтвительно хотите воÑÑтановить Ñту Ñтраницу.',
+'recreate' => 'Создать заново',
'unit-pixel' => ' пикÑ.',
@@ -3369,6 +3569,12 @@ $1',
'confirm-purge-top' => 'ОчиÑтить кеш Ñтой Ñтраницы?',
'confirm-purge-bottom' => 'ПоÑле очиÑтки кеша Ñтраницы будет показана её поÑледнÑÑ Ð²ÐµÑ€ÑиÑ.',
+# action=watch/unwatch
+'confirm-watch-button' => 'ОК',
+'confirm-watch-top' => 'Добавить Ñту Ñтраницу в ваш ÑпиÑок наблюдениÑ?',
+'confirm-unwatch-button' => 'ОК',
+'confirm-unwatch-top' => 'Удалить Ñту Ñтраницу из вашего ÑпиÑка наблюдениÑ?',
+
# Multipage image navigation
'imgmultipageprev' => 'â† Ð¿Ñ€ÐµÐ´Ñ‹Ð´ÑƒÑ‰Ð°Ñ Ñтраница',
'imgmultipagenext' => 'ÑÐ»ÐµÐ´ÑƒÑŽÑ‰Ð°Ñ Ñтраница →',
@@ -3416,14 +3622,14 @@ $1',
'watchlistedit-normal-legend' => 'Удаление запиÑей из ÑпиÑка наблюдениÑ',
'watchlistedit-normal-explain' => 'Ðиже перечиÑлены Ñтраницы, находÑщиеÑÑ Ð² вашем ÑпиÑке наблюдениÑ.
Ð”Ð»Ñ ÑƒÐ´Ð°Ð»ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ð¸Ñей отметьте ÑоответÑтвующие позиции и нажмите кнопку «{{int:Watchlistedit-normal-submit}}».
-Ð’Ñ‹ также можете [[Special:Watchlist/raw|править ÑпиÑок как текÑÑ‚]].',
+Ð’Ñ‹ также можете [[Special:EditWatchlist/raw|править ÑпиÑок как текÑÑ‚]].',
'watchlistedit-normal-submit' => 'Удалить запиÑи',
'watchlistedit-normal-done' => '{{PLURAL:$1|$1 запиÑÑŒ была удалена|$1 запиÑи были удалены|$1 запиÑей были удалены}} из вашего ÑпиÑка наблюдениÑ:',
'watchlistedit-raw-title' => 'Изменение «Ñырого» ÑпиÑка наблюдениÑ',
'watchlistedit-raw-legend' => 'Изменение «Ñырого» ÑпиÑка наблюдениÑ',
'watchlistedit-raw-explain' => 'Ðиже перечиÑлены Ñтраницы, находÑщиеÑÑ Ð² вашем ÑпиÑке наблюдениÑ. Ð’Ñ‹ можете изменÑÑ‚ÑŒ Ñтот ÑпиÑок, добавлÑÑ Ð¸ удалÑÑ Ð¸Ð· него Ñтроки Ñ Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñми, по одному названию на Ñтроке.
ПоÑле Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð¸Ñ Ð¿Ñ€Ð°Ð²Ð¾Ðº нажмите кнопку «{{int:Watchlistedit-raw-submit}}».
-Ð’Ñ‹ также можете [[Special:Watchlist/edit|иÑпользовать Ñтандартный редактор]].',
+Ð’Ñ‹ также можете [[Special:EditWatchlist|иÑпользовать Ñтандартный редактор]].',
'watchlistedit-raw-titles' => 'ЗапиÑи:',
'watchlistedit-raw-submit' => 'Сохранить ÑпиÑок',
'watchlistedit-raw-done' => 'Ваш ÑпиÑок Ð½Ð°Ð±Ð»ÑŽÐ´ÐµÐ½Ð¸Ñ Ñохранён.',
@@ -3483,33 +3689,33 @@ $1',
'duplicate-defaultsort' => 'Внимание. Ключ Ñортировки по умолчанию «$2» переопределÑет прежний ключ Ñортировки по умолчанию «$1».',
# Special:Version
-'version' => 'ВерÑÐ¸Ñ MediaWiki',
-'version-extensions' => 'УÑтановленные раÑширениÑ',
-'version-specialpages' => 'Служебные Ñтраницы',
-'version-parserhooks' => 'Перехватчики ÑинтакÑичеÑкого анализатора',
-'version-variables' => 'Переменные',
-'version-skins' => 'Темы оформлениÑ',
-'version-other' => 'Иное',
-'version-mediahandlers' => 'Обработчики медиа',
-'version-hooks' => 'Перехватчики',
-'version-extension-functions' => 'Функции раÑширений',
-'version-parser-extensiontags' => 'Теги раÑширений ÑинтакÑичеÑкого анализатора',
-'version-parser-function-hooks' => 'Перехватчики функций ÑинтакÑичеÑкого анализатора',
-'version-skin-extension-functions' => 'Функции раÑширений тем оформлениÑ',
-'version-hook-name' => 'Ð˜Ð¼Ñ Ð¿ÐµÑ€ÐµÑ…Ð²Ð°Ñ‚Ñ‡Ð¸ÐºÐ°',
-'version-hook-subscribedby' => 'ПодпиÑан на',
-'version-version' => '(ВерÑÐ¸Ñ $1)',
-'version-license' => 'ЛицензиÑ',
-'version-poweredby-credits' => "Эта вики работает на движке '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'другие',
-'version-license-info' => 'MediaWiki ÑвлÑетÑÑ Ñвободным программным обеÑпечением, которое вы можете раÑпроÑтранÑÑ‚ÑŒ и/или изменÑÑ‚ÑŒ в ÑоответÑтвии Ñ ÑƒÑловиÑми лицензии GNU General Public License, опубликованной фондом Ñвободного программного обеÑпечениÑ; второй верÑии, либо любой более поздней верÑии.
+'version' => 'ВерÑÐ¸Ñ MediaWiki',
+'version-extensions' => 'УÑтановленные раÑширениÑ',
+'version-specialpages' => 'Служебные Ñтраницы',
+'version-parserhooks' => 'Перехватчики ÑинтакÑичеÑкого анализатора',
+'version-variables' => 'Переменные',
+'version-antispam' => 'ÐнтиÑпам',
+'version-skins' => 'Темы оформлениÑ',
+'version-other' => 'Иное',
+'version-mediahandlers' => 'Обработчики медиа',
+'version-hooks' => 'Перехватчики',
+'version-extension-functions' => 'Функции раÑширений',
+'version-parser-extensiontags' => 'Теги раÑширений ÑинтакÑичеÑкого анализатора',
+'version-parser-function-hooks' => 'Перехватчики функций ÑинтакÑичеÑкого анализатора',
+'version-hook-name' => 'Ð˜Ð¼Ñ Ð¿ÐµÑ€ÐµÑ…Ð²Ð°Ñ‚Ñ‡Ð¸ÐºÐ°',
+'version-hook-subscribedby' => 'ПодпиÑан на',
+'version-version' => '(ВерÑÐ¸Ñ $1)',
+'version-license' => 'ЛицензиÑ',
+'version-poweredby-credits' => "Эта вики работает на движке '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'другие',
+'version-license-info' => 'MediaWiki ÑвлÑетÑÑ Ñвободным программным обеÑпечением, которое вы можете раÑпроÑтранÑÑ‚ÑŒ и/или изменÑÑ‚ÑŒ в ÑоответÑтвии Ñ ÑƒÑловиÑми лицензии GNU General Public License, опубликованной фондом Ñвободного программного обеÑпечениÑ; второй верÑии, либо любой более поздней верÑии.
MediaWiki раÑпроÑтранÑетÑÑ Ð² надежде, что она будет полезной, но БЕЗ КÐКИХ-ЛИБО ГÐРÐÐТИЙ, даже без подразумеваемых гарантий КОММЕРЧЕСКОЙ ЦЕÐÐОСТИ или ПРИГОДÐОСТИ ДЛЯ ОПРЕДЕЛЕÐÐОЙ ЦЕЛИ. См. лицензию GNU General Public License Ð´Ð»Ñ Ð±Ð¾Ð»ÐµÐµ подробной информации.
-Ð’Ñ‹ должны были получить [{{SERVER}}{{SCRIPTPATH}}/COPYING копию GNU General Public License] вмеÑте Ñ Ñтой программой, еÑли нет, то напишите Free Software Foundation, Inc., по адреÑу: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA или [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html прочтите её онлайн].',
-'version-software' => 'УÑтановленное программное обеÑпечение',
-'version-software-product' => 'Продукт',
-'version-software-version' => 'ВерÑиÑ',
+Ð’Ñ‹ должны были получить [{{SERVER}}{{SCRIPTPATH}}/COPYING копию GNU General Public License] вмеÑте Ñ Ñтой программой, еÑли нет, то напишите Free Software Foundation, Inc., по адреÑу: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA или [//www.gnu.org/licenses/old-licenses/gpl-2.0.html прочтите её онлайн].',
+'version-software' => 'УÑтановленное программное обеÑпечение',
+'version-software-product' => 'Продукт',
+'version-software-version' => 'ВерÑиÑ',
# Special:FilePath
'filepath' => 'Путь к файлу',
@@ -3519,22 +3725,22 @@ MediaWiki раÑпроÑтранÑетÑÑ Ð² надежде, что она бу
Ð˜Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¿Ð¾ÐºÐ°Ð·Ñ‹Ð²Ð°ÑŽÑ‚ÑÑ Ð² полном разрешении, другие типы файлов открываютÑÑ Ð½Ð°Ð¿Ñ€Ñмую в ÑвÑзанных Ñ Ð½Ð¸Ð¼Ð¸ программах.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'ПоиÑк одинаковых файлов',
-'fileduplicatesearch-summary' => 'ПоиÑк одинаковых файлов по их Ñ…Ñш-коду.
-
-Введите Ð¸Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð° без приÑтавки «{{ns:file}}:».',
-'fileduplicatesearch-legend' => 'ПоиÑк дубликатов',
-'fileduplicatesearch-filename' => 'Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°:',
-'fileduplicatesearch-submit' => 'Ðайти',
-'fileduplicatesearch-info' => '$1 × $2 {{PLURAL:$2|пикÑель|пикÑелÑ|пикÑелей}}<br />Размер файла: $3<br />MIME-тип: $4',
-'fileduplicatesearch-result-1' => 'Файл «$1» не имеет идентичных дубликатов.',
-'fileduplicatesearch-result-n' => 'Файл «$1» имеет $2 {{PLURAL:$2|идентичный дубликат|идентичных дубликата|идентичных дубликатов}}.',
+'fileduplicatesearch' => 'ПоиÑк одинаковых файлов',
+'fileduplicatesearch-summary' => 'ПоиÑк одинаковых файлов по Ñ…Ñш-коду.',
+'fileduplicatesearch-legend' => 'ПоиÑк дубликатов',
+'fileduplicatesearch-filename' => 'Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°:',
+'fileduplicatesearch-submit' => 'Ðайти',
+'fileduplicatesearch-info' => '$1 × $2 {{PLURAL:$2|пикÑель|пикÑелÑ|пикÑелей}}<br />Размер файла: $3<br />MIME-тип: $4',
+'fileduplicatesearch-result-1' => 'Файл «$1» не имеет идентичных дубликатов.',
+'fileduplicatesearch-result-n' => 'Файл «$1» имеет $2 {{PLURAL:$2|идентичный дубликат|идентичных дубликата|идентичных дубликатов}}.',
+'fileduplicatesearch-noresults' => 'Ðе найден файл Ñ Ð¸Ð¼ÐµÐ½ÐµÐ¼ «$1».',
# Special:SpecialPages
'specialpages' => 'СпецÑтраницы',
'specialpages-note' => '----
* Обычные Ñлужебные Ñтраницы.
-* <strong class="mw-specialpagerestricted">Служебные Ñтраницы Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð½Ñ‹Ð¼ доÑтупом.</strong>',
+* <span class="mw-specialpagerestricted">Служебные Ñтраницы Ñ Ð¾Ð³Ñ€Ð°Ð½Ð¸Ñ‡ÐµÐ½Ð½Ñ‹Ð¼ доÑтупом.</span>
+* <span class="mw-specialpagecached">Закешированные Ñлужебные Ñтраницы (могут быть уÑтаревшими).</span>',
'specialpages-group-maintenance' => 'Отчёты техничеÑкого обÑлуживаниÑ',
'specialpages-group-other' => 'Другие Ñлужебные Ñтраницы',
'specialpages-group-login' => 'ПредÑтавитьÑÑ / ЗарегиÑтрироватьÑÑ',
diff --git a/languages/messages/MessagesRue.php b/languages/messages/MessagesRue.php
index 79ea9182..5e7c77d4 100644
--- a/languages/messages/MessagesRue.php
+++ b/languages/messages/MessagesRue.php
@@ -18,14 +18,14 @@ $fallback = 'uk';
$namespaceNames = array(
NS_MEDIA => 'Медіа',
NS_SPECIAL => 'Шпеціална',
- NS_TALK => 'ДіÑкузіа',
+ NS_TALK => 'ДіÑкузіÑ',
NS_USER => 'ХоÑнователь',
- NS_USER_TALK => 'ДіÑкузіа_з_хоÑнователём',
+ NS_USER_TALK => 'ДіÑкузіÑ_з_хоÑнователём',
NS_PROJECT_TALK => 'ДіÑкузіÑ_ку_{{grammar:3sg|$1}}',
NS_FILE => 'Файл',
NS_FILE_TALK => 'ДіÑкузіÑ_ку_файлу',
NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'ДізкузіÑ_ку_MediaWiki',
+ NS_MEDIAWIKI_TALK => 'ДіÑкузіÑ_ку_MediaWiki',
NS_TEMPLATE => 'Шаблона',
NS_TEMPLATE_TALK => 'ДіÑкузіÑ_ку_шаблонї',
NS_HELP => 'Поміч',
@@ -34,6 +34,12 @@ $namespaceNames = array(
NS_CATEGORY_TALK => 'ДіÑкузіÑ_ку_катеґорії',
);
+$namespaceAliases = array(
+ 'ДіÑкузіа' => NS_TALK,
+ 'ДіÑкузіа_з_хоÑнователём' => NS_USER_TALK,
+ 'ДізкузіÑ_ку_MediaWiki' => NS_MEDIAWIKI_TALK,
+);
+
$messages = array(
# User preference toggles
'tog-underline' => 'Підчарковати одказы:',
@@ -66,8 +72,8 @@ $messages = array(
'tog-shownumberswatching' => 'Вказати кілько хоÑнователїв придало Ñторінку до Ñвого ÑпиÑку Ñлїдованых',
'tog-oldsig' => 'ЕкзіÑтуючій підпиÑ:',
'tog-fancysig' => 'ХоÑновати про Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ð²Ñ–ÐºÑ–Ñ‚ÐµÐºÑÑ‚ (без автоматічного одказу)',
-'tog-externaleditor' => 'Імпліцітно хоÑновати екÑтерный едітор (лем про ÑкуÑеных, выжадує шпеціалне Ð½Ð°ÑˆÑ‚ÐµÐ»Ñ‘Ð²Ð°Ð½Ñ ÐºÐ¾Ð¼Ð¿ÑŽÑ‚ÐµÑ€Ð°; [http://www.mediawiki.org/wiki/Manual:External_editors далшы інформації])',
-'tog-externaldiff' => 'Імпліцітно хоÑновати проґрам про Ð¿Ð¾Ñ€Ñ–Ð²Ð½Ð°Ð²Ð°Ð½Ñ (лем про ÑкуÑеных, выжадує шпеціалне Ð½Ð°ÑˆÑ‚ÐµÐ»Ñ‘Ð²Ð°Ð½Ñ ÐºÐ¾Ð¼Ð¿ÑŽÑ‚ÐµÑ€Ð°; [http://www.mediawiki.org/wiki/Manual:External_editors далшы інформації])',
+'tog-externaleditor' => 'Імпліцітно хоÑновати екÑтерный едітор (лем про ÑкуÑеных, выжадує шпеціалне Ð½Ð°ÑˆÑ‚ÐµÐ»Ñ‘Ð²Ð°Ð½Ñ ÐºÐ¾Ð¼Ð¿ÑŽÑ‚ÐµÑ€Ð°; [//www.mediawiki.org/wiki/Manual:External_editors далшы інформації])',
+'tog-externaldiff' => 'Імпліцітно хоÑновати проґрам про Ð¿Ð¾Ñ€Ñ–Ð²Ð½Ð°Ð²Ð°Ð½Ñ (лем про ÑкуÑеных, выжадує шпеціалне Ð½Ð°ÑˆÑ‚ÐµÐ»Ñ‘Ð²Ð°Ð½Ñ ÐºÐ¾Ð¼Ð¿ÑŽÑ‚ÐµÑ€Ð°; [//www.mediawiki.org/wiki/Manual:External_editors далшы інформації])',
'tog-showjumplinks' => 'Ðктівізовати помічны одказы "перейти дo"',
'tog-uselivepreview' => 'ХоÑновати швыдкый наглÑд (JavaScript, екÑперіментално)',
'tog-forceeditsummary' => 'Упозорнити нÑ, кідь не Ñ” выповнене Ð·Ð³Ð¾Ñ€Ð½ÑƒÑ‚Ñ ÐµÐ´Ñ–Ñ‚Ð¾Ð²Ð°Ð½Ñ',
@@ -162,15 +168,7 @@ $messages = array(
'listingcontinuesabbrev' => '(дале)',
'index-category' => 'ІндекÑованы Ñторінкы',
'noindex-category' => 'ÐеіндекÑованы Ñторінкы',
-
-'mainpagetext' => "'''MediaWiki была уÑпішно наіншталована.'''",
-'mainpagedocfooter' => '[http://meta.wikimedia.org/wiki/Help:Contents МануÑл хоÑнователÑ] Вам порадить, Ñк хоÑновати MediaWiki.
-
-== Про початок ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings ÐаÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ ÐºÐ¾Ð½Ñ„Ñ–Ò‘ÑƒÑ€Ð°Ñ†Ñ–Ñ—]
-* [http://www.mediawiki.org/wiki/Manual:FAQ ЧаÑÑ‚Ñ‹ вопроÑÑ‹ о MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce РозоÑÑ‹Ð»Ð°Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»Ñ—Ð½ÑŒ про новы верзії MediaWiki]',
+'broken-file-category' => 'Сторінкы, што ÑÑ Ð¾Ð´ÐºÐ°Ð·ÑƒÑŽÑ‚ÑŒ на неекзіÑтуючі файлы',
'about' => 'О',
'article' => 'ОбÑÑгова Ñторінка',
@@ -222,10 +220,10 @@ $messages = array(
'history' => 'ІÑÑ‚Ð¾Ñ€Ñ–Ñ Ñторінкы',
'history_short' => 'ІÑторіÑ',
'updatedmarker' => 'змінено од поÑлїдный навщівы',
-'info_short' => 'ІнформаціÑ',
'printableversion' => 'Ð’ÐµÑ€Ð·Ñ–Ñ Ð¿Ñ€Ð¾ друк',
'permalink' => 'Перманентный одказ',
'print' => 'Друк',
+'view' => 'Видїти',
'edit' => 'Едітовати',
'create' => 'Створити',
'editthispage' => 'Едітовату тоту Ñторінку',
@@ -233,6 +231,7 @@ $messages = array(
'delete' => 'Вымазати',
'deletethispage' => 'Змазати тоту Ñторінку',
'undelete_short' => 'Обновити $1 {{PLURAL:$1|верзію|верзії|верзії}}',
+'viewdeleted_short' => 'Видїти {{PLURAL:$1|змазанов едітаціёв|$1 змазаны едітації|$1 змазаных едітацій}}',
'protect' => 'Хранити',
'protect_change' => 'змінити',
'protectthispage' => 'Хранити тоту Ñторінку',
@@ -316,6 +315,8 @@ $1',
'toc' => 'ОбÑÑг',
'showtoc' => 'вказати',
'hidetoc' => 'Ñховати',
+'collapsible-collapse' => 'Згорнути',
+'collapsible-expand' => 'Розгорнути',
'thisisdeleted' => 'ПереглÑднути ці обновити $1?',
'viewdeleted' => 'Зобразити $1?',
'restorelink' => '{{PLURAL:$1|змазанов едітаціёв|$1 змазаны едітації|$1 змазаных едітацій}}',
@@ -327,6 +328,8 @@ $1',
'page-rss-feed' => '"$1" RSS канал',
'page-atom-feed' => '"$1" Atom канал',
'red-link-title' => '$1 (така Ñторінка не екзіÑтує)',
+'sort-descending' => 'Сортовати зоÑтупно',
+'sort-ascending' => 'Сортовати взоÑтупно',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Сторінка',
@@ -410,12 +413,13 @@ $1',
'protectedpagetext' => 'Тота Ñторінка была замкнута, также ÑÑ Ð½Ðµ даÑÑ‚ÑŒ едітовати',
'viewsourcetext' => 'Можете видїти Ñ– копіровати код той Ñторінкы:',
'protectedinterface' => 'Тота Ñторінка Ñ” чаÑтинов інтрефейÑу проґрамового Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡Ñ–Ð½Ñ Ñ– єй можуть едітовати лем адмініÑтраторы проєкту.',
-'editinginterface' => "'''Увага:''' Едітуєте Ñторінку,котра Ñ” чаÑтинов текÑтового інтерфейÑу. Зміны той Ñторінкы выкличуть зміну інтерфейÑу про іншых хоÑнователїв. Про переклад ÑƒÐ²Ñ–Ð´Ð¾Ð¼Ð»Ñ—Ð½Ñ Ñ…Ð¾Ñнуйте [http://translatewiki.net/wiki/Main_Page?setlang=uk translatewiki.net] — проєкт, што ÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°Ñ” локалізаціёв MediaWiki.",
+'editinginterface' => "'''Увага:''' Едітуєте Ñторінку,котра Ñ” чаÑтинов текÑтового інтерфейÑу. Зміны той Ñторінкы выкличуть зміну інтерфейÑу про іншых хоÑнователїв. Про переклад ÑƒÐ²Ñ–Ð´Ð¾Ð¼Ð»Ñ—Ð½Ñ Ñ…Ð¾Ñнуйте [//translatewiki.net/wiki/Main_Page?setlang=uk translatewiki.net] — проєкт, што ÑÑ Ð·Ð°Ð½Ð¸Ð¼Ð°Ñ” локалізаціёв MediaWiki.",
'sqlhidden' => '(SQL Ð·Ð°Ð¿Ñ€Ð¾Ñ Ñкрытый)',
'cascadeprotected' => 'Сторінка Ñ” замнкута, бо Ñ” вложена до {{PLURAL:$1|наÑлїдуючой Ñторінкы замкнуты|наÑлїдуючіх Ñторінок замнкнутых|наÑлїдуючіх Ñторінок замнкнутых}} каÑкадовым замком:
$2',
'namespaceprotected' => 'Ðе маєте права едітовати Ñторінкы в проÑторї назв «$1».',
-'customcssjsprotected' => 'Ðе маєте права едітовати тоту Ñторінку, бо обÑÑгує перÑоналны наÑтавлїна іншого хоÑнователÑ.',
+'customcssprotected' => 'Ðе маєте права едітовати тоту Ñторінку з CSS, бо обÑÑгує перÑоналны наÑтавлїна іншого хоÑнователÑ.',
+'customjsprotected' => 'Ðе маєте права едітовати тоту Ñторінку з JavaScript-ом, бо обÑÑгує перÑоналны наÑтавлїна іншого хоÑнователÑ.',
'ns-specialprotected' => 'Шпеціалны Ñторінкы не Ñ” можне едітовати.',
'titleprotected' => "Ð¡Ñ‚Ð²Ð¾Ñ€Ñ—Ð½Ñ Ñторінкы з таков назвов было заборонене хоÑнователём [[User:$1|$1]] з причінов: ''$2''.",
@@ -451,6 +455,7 @@ $2',
'createaccount' => 'Вытворити конто',
'gotaccount' => "Уж Ñьте реґіÑтрованы? '''$1'''.",
'gotaccountlink' => 'ПриголошінÑ',
+'userlogin-resetlink' => 'Забыли Ñьте вашы дата про приголошінÑ?',
'createaccountmail' => 'електроничнов поштов',
'createaccountreason' => 'Причіна:',
'badretype' => 'Вами напиÑаны геÑла не ÑуглаÑÑÑ‚ÑŒ.',
@@ -462,11 +467,13 @@ $2',
{{SITENAME}} хоÑнує cookies про Ð¿Ñ€Ð¸Ð³Ð¾Ð»Ð¾ÑˆÑ–Ð½Ñ Ð°Ð»Ðµ вы маєте cookies выпнуты .
ПроÑиме ВаÑ, повольте Ñ—Ñ…, а потім ÑÑ Ð¿Ñ€Ð¸Ð³Ð¾Ð»Ð¾ÑˆÑ‚Ðµ знову з вашым новым меном Ñ– геÑлом.',
'nocookieslogin' => '{{SITENAME}} хоÑнує cookies про Ð¿Ñ€Ð¸Ð³Ð¾Ð»Ð¾ÑˆÑ–Ð½Ñ Ñ…Ð¾Ñнователїв. Ð’Ñ‹ маєте cookies выпнуты. ПроÑиме ВаÑ, повольте Ñ—Ñ… Ñ– Ñпобуйте знова.',
+'nocookiesfornew' => 'Конто хоÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ было Ñтворене, бо Ñьме не были годны підтветдити ёго походжінÑ.
+Утвердите ÑÑ, же маєте поволены cookies, обновте тоту Ñторінку Ñ– Ñпробуйте то знову.',
'noname' => 'МуÑите увеÑти мено Ñвого конта.',
'loginsuccesstitle' => 'УÑпішне приголошінÑ',
'loginsuccess' => "'''Теперь працуєте {{grammar:locative|{{SITENAME}}}} під меном $1.'''",
'nosuchuser' => 'Ðе екзіÑтує хоÑнователь з меном «$1». У хоÑновательÑкых мен ÑÑ Ñ€Ð¾Ð·Ð»Ð¸ÑˆÑƒÑŽÑ‚ÑŒ малы/великы пиÑмена. Сконтролюйте запиÑ, або Ñобі [[Special:UserLogin/signup|зареґіÑтруйте нове конто]].',
-'nosuchusershort' => 'ХоÑнователь з меном <nowiki>$1</nowiki> не екзіÑтує.
+'nosuchusershort' => 'ХоÑнователь з меном $1 не екзіÑтує.
Перевірте правилноÑÑ‚ÑŒ напиÑÐ°Ð½Ñ Ð¼ÐµÐ½Ð°.',
'nouserspecified' => 'МуÑите задати мено хоÑнователÑ.',
'login-userblocked' => 'Тот хоÑнователь Ñ” заблокованый. ÐŸÑ€Ð¸Ð³Ð¾Ð»Ð¾ÑˆÑ–Ð½Ñ Ð½Ðµ Ñ” доволене.',
@@ -511,13 +518,14 @@ $2',
'usernamehasherror' => 'Мено хоÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ Ñміє обÑÑговати Ñімбол мережка (#)',
'login-throttled' => 'Зробили Ñьте дуже много Ñпроб о приголошінÑ.
ПроÑиме ВаÑ, почекайте перед далшов Ñпробов.',
+'login-abort-generic' => 'Ðе подарило ÑÑ Ð²Ð¾Ð¹Ñ‚Ð¸ до ÑÑ–Ñтемы.',
'loginlanguagelabel' => 'Язык: $1',
'suspicious-userlogout' => 'Ваша пожадавка на Ð¾Ð´Ð³Ð¾Ð»Ð¾ÑˆÑ–Ð½Ñ Ð±Ñ‹Ð»Ð° одвергнута, бо вызерає то так, же была поÑлана розбитым переглÑдачом або кешуючім прокÑÑ–-Ñервером.',
# E-mail sending
'php-mail-error-unknown' => 'Ðезнама хыба у PHP mail() функції',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Змінити геÑло',
'resetpass_announce' => 'Приголошуєте ÑÑ Ð´Ð¾Ñ‡Ð°Ñным геÑлом, котре было поÑлане електронічнов поштов. Про Ð·Ð°ÐºÐ¾Ð½Ñ‡Ñ–Ð½Ñ Ð¿Ñ€Ð¸Ð³Ð¾Ð»Ð¾ÑˆÑ–Ð½Ñ Ñ‚Ñ€ÐµÐ±Ð° задати нове геÑло ту:',
'resetpass_header' => 'Зміна геÑла',
@@ -534,6 +542,38 @@ $2',
Може Ñьте Ñобі уж геÑло уÑпішно змінили, або Ñьте выжадали нове дочаÑне геÑло.',
'resetpass-temp-password' => 'ДочаÑне геÑло:',
+# Special:PasswordReset
+'passwordreset' => 'РеÑет геÑла',
+'passwordreset-text' => 'Выповньте тот формуларь, жебы обтримати припомÑÐ½ÑƒÑ‚Ñ Ð´ÐµÑ‚Ð°Ð¹Ð»Ñ–Ð² вашого конта',
+'passwordreset-legend' => 'Знову наÑтавити геÑло',
+'passwordreset-disabled' => 'ЗновунаÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ð³ÐµÑла Ñ” на тій вікі заказане',
+'passwordreset-pretext' => '{{PLURAL:$1||Задайте єден з дат ниже}}',
+'passwordreset-username' => 'Мено хоÑнователÑ:',
+'passwordreset-domain' => 'Домена:',
+'passwordreset-email' => 'ÐдреÑа електронічной пошты:',
+'passwordreset-emailtitle' => 'Детайлы конта на {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Дахто (аÑÑ– вы, з IP адреÑÑ‹ $1) пожадав о припомÑÐ½ÑƒÑ‚Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ð¹ ку вашому
+конту на {{grammar:6sg|{{SITENAME}}}} ($4). Ку тій адреÑÑ— {{PLURAL:$3|Ñ” ÑпрÑгнуте наÑтупне конто|Ñуть ÑпрÑгнуты наÑтупны конта}}:
+
+$2
+
+{{PLURAL:$3|Тот дочаÑне геÑло|Тоты дочаÑны геÑла}} кінчать{{PLURAL:$5|за єден день|за $5 днїв|за $5 днїв}}.
+Ðынї бы Ñьте ÑÑ Ð¼Ð°Ð²(а) приголоÑити Ñ– зволити нове геÑло. Як тоту пожадавку
+поÑлав дахто другый або Ñьте Ñобі на Ñвоє Ñтаре геÑло ÑпомÑнув(а), Ñ– не хочете го
+змінити, можете тото Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»Ñ—Ð½Ñ Ñ–Ò‘Ð½Ð¾Ñ€Ð¾Ð²Ð°Ñ‚Ð¸ Ñ– надале хоÑновати Ñтаре геÑло.',
+'passwordreset-emailtext-user' => '{{gender:$1|ХоÑнователь|ХоÑнователька|ХоÑнователь}} $1 {{grammar:2sg|{{SITENAME}}}} {{gender:$1|попроÑив|попроÑила|попроÑив}} о припомÑÐ½ÑƒÑ‚Ñ Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ð¹ ку вашому
+конту на {{grammar:6sg|{{SITENAME}}}} ($4). Ку тій адреÑÑ— {{PLURAL:$3|Ñ” ÑпрÑжене наÑтупне конто|Ñуть ÑпрÑжены наÑтупну конта}}:
+
+$2
+
+{{PLURAL:$3|Тото дочаÑне геÑло|Тоты дочаÑны геÑла}} кінчать {{PLURAL:$5|о єден день|о $5 днї|о $5 днїв}}.
+Ðынї бы Ñьте ÑÑ Ð¼Ð°Ð²(а) приголоÑити у зволити Ñобі нове геÑло. Кідь тоту пожадавку
+поÑлав дахто другый або Ñьте Ñобі на Ñвоє Ñтаре геÑло ÑпомÑнув(а),Ñ– не хочете го
+змінити, можете тото Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»Ñ—Ð½Ñ Ñ–Ò‘Ð½Ð¾Ñ€Ð¾Ð²Ð°Ñ‚Ð¸ Ñ– надале хоÑновати Ñтаре геÑло.',
+'passwordreset-emailelement' => 'Ð†Ð¼Ñ Ñ…Ð¾ÑнователÑ: $1
+ДочаÑне геÑло: $2',
+'passwordreset-emailsent' => 'Імейл з геÑлом быв поÑланый.',
+
# Edit page toolbar
'bold_sample' => 'Тучный текÑÑ‚',
'bold_tip' => 'Шырокый текÑÑ‚',
@@ -545,8 +585,6 @@ $2',
'extlink_tip' => 'ЕкÑтерный одказ (не забудьте http:// prefix)',
'headline_sample' => 'ТекÑÑ‚ надпиÑу',
'headline_tip' => 'ÐÐ°Ð´Ð¿Ð¸Ñ 2-го рівнÑ',
-'math_sample' => 'Вложте ту формулу',
-'math_tip' => 'Математічна формула (LaTeX)',
'nowiki_sample' => 'Вложте ту неформатованый текÑÑ‚',
'nowiki_tip' => 'Іґноровати вікі-форматованÑ',
'image_tip' => 'Файл',
@@ -627,7 +665,7 @@ $2',
'noarticletext-nopermission' => 'Теперь на тїй Ñторінцї не Ñ” текÑÑ‚.
Можете [[Special:Search/{{PAGENAME}}|глÑдати тоту назву]] в іншых Ñторінках,
або <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} глÑдати в лоґах]</span>.',
-'userpage-userdoesnotexist' => 'ХоÑновательÑке конто під назвов "$1" не Ñ” реґіÑтроване. Сконтролюйте ці хочете вытворити/едітовати тоту Ñторінку.',
+'userpage-userdoesnotexist' => 'ХоÑновательÑке конто під назвов "<nowiki>$1</nowiki>" не Ñ” реґіÑтроване. Сконтролюйте ці хочете вытворити/едітовати тоту Ñторінку.',
'userpage-userdoesnotexist-view' => 'ХоÑновательÑке конто „$1 не Ñ” реґіÑтроване.',
'blocked-notice-logextract' => 'Тот хоÑнователь Ñ” теперь блокованый.
ПоÑлїднїй Ð·Ð°Ð¿Ð¸Ñ Ð² лоґах блоковань Ñ” такый:',
@@ -662,6 +700,7 @@ $2',
'token_suffix_mismatch' => "'''Ваша ÐµÐ´Ñ–Ñ‚Ð°Ñ†Ñ–Ñ Ð½Ðµ была Ñхвалена, бо ваш вебовый переглÑдач комолить дакотры знакы в едітованім текÑÑ‚Ñ—.
Ð•Ð´Ñ–Ñ‚Ð°Ñ†Ñ–Ñ Ð½Ðµ была Ñхвалена, жебы ÑÑ Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½Ð¸Ð»Ð¾ пошкоджіню текÑту Ñторінкы.
Тото ÑÑ Ð¼Ð¾Ð¶Ðµ даколи Ñтати, кідь хоÑнуєте хыбный вебовый анонімізер.'''",
+'edit_form_incomplete' => "'''ЧаÑÑ‚ÑŒ едітачного Ñ„Ð¾Ñ€Ð¼ÑƒÐ»Ð°Ñ€Ñ Ñ–Ñ‰Ñ– не пришла не Ñервер; перевірьте комплетноÑÑ‚ÑŒ вашых змін Ñ– Ñпробуйте іщі раз.'''",
'editing' => 'Ð•Ð´Ñ–Ñ‚Ð¾Ð²Ð°Ð½Ñ $1',
'editingsection' => 'Ð•Ð´Ñ–Ñ‚Ð¾Ð²Ð°Ð½Ñ $1 (роздїл)',
'editingcomment' => 'Ð•Ð´Ñ–Ñ‚Ð¾Ð²Ð°Ð½Ñ $1 (нова ÑекціÑ)',
@@ -791,27 +830,26 @@ $3 зазначів тоту причіну: ''$2''",
Детайлы можуть быти зазначены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} книзї змазаных Ñторінок].",
'rev-deleted-text-unhide' => "Тота Ñ€ÐµÐ²Ñ–Ð·Ñ–Ñ Ð±Ñ‹Ð»Ð° '''змазана'''.
Детайлы можуть быти зазначены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} книзї змазаных Ñторінок].
-Як адмініÑтратор ÑÑ– але можете [$1 тоту ревізію поÑмотрити], кідь хочете.",
+Можете ÑÑ– вÑе [$1 тоту ревізію поÑмотрити], кідь хочете.",
'rev-suppressed-text-unhide' => "Тота Ñ€ÐµÐ²Ñ–Ð·Ñ–Ñ Ð±Ñ‹Ð»Ð° '''затаєна'''.
Детайлы можуть быти уведены в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} запиÑÑ— утаїнÑ].
-Як адмініÑтратор ÑÑ– але можете [$1 тоту ревізію поÑмотрити], кідь хочете.",
+Можете ÑÑ– [$1 тоту ревізію поÑмотрити], кідь хочете.",
'rev-deleted-text-view' => "Тота Ñ€ÐµÐ²Ñ–Ð·Ñ–Ñ Ð±Ñ‹Ð»Ð° '''змазана'''.
-Як адмініÑтратор ÑÑ– єй можете поÑмотрити; детайлы можуть быти зазначены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} книзї змазаных Ñторінок].",
+Можете ÑÑ– єй поÑмотрити; детайлы можуть быти зазначены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} книзї змазаных Ñторінок].",
'rev-suppressed-text-view' => "Тота Ð²ÐµÑ€Ð·Ñ–Ñ Ð±Ñ‹Ð»Ð° '''затаєна'''.
-Як адмініÑтратор ÑÑ– єй можете поÑмотрити; детайлы можуть быти зазначены в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} запиÑÑ— затаїнÑ].",
+Можете ÑÑ– єй поÑмотрити; детайлы можуть быти зазначены в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} запиÑÑ— затаїнÑ].",
'rev-deleted-no-diff' => "Тот розділ ÑÑ– не можете помоÑтрити, бо єдна з &nbsp;ревізій была '''змазана'''.
Детайлы можуть быти зазначены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} книзї змазаных Ñторінок].",
'rev-suppressed-no-diff' => "Тот роздїл ÑÑ– не можете поÑмотрити, бо єдна з ревізій была '''змазана'''.",
'rev-deleted-unhide-diff' => "Єдна з ревізій про тото Ð¿Ð¾Ñ€Ñ–Ð²Ð½Ð°Ð½Ñ Ð±Ñ‹Ð»Ð° '''змазана'''.
-Детайлы можуть быти зазначены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} книзї змазаных Ñторінок].
-Як адмініÑтратор ÑÑ– але можете [$1 тоту ревізію поÑмотрити], кідь хочете.",
+Можете ÑÑ– але [$1 тоту ревізію поÑмотрити], кідь хочете.",
'rev-suppressed-unhide-diff' => "Єдна з ревізій про тото Ð¿Ð¾Ñ€Ñ–Ð²Ð½Ð°Ð½Ñ Ð±Ñ‹Ð»Ð° '''затаєна'''.
Детайлы можуть быти уведены в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} запиÑÑ— утаїнÑ].
-Як адмініÑтратор ÑÑ– але можете [$1 тоту ревізію поÑмотрити], кідь хочете.",
+Можете ÑÑ– але [$1 тоту ревізію поÑмотрити], кідь хочете.",
'rev-deleted-diff-view' => "Єдна з ревізій про тото Ð¿Ð¾Ñ€Ñ–Ð²Ð½Ð°Ð½Ñ Ð±Ñ‹Ð»Ð° '''змазана'''.
-Як адмініÑтратор ÑÑ– єй можете поÑмотрити; детайлы можуть быти зазначены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} книзї змазаных Ñторінок].",
+Можете ÑÑ– єй поÑмотрити; детайлы можуть быти зазначены в [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} книзї змазаных Ñторінок].",
'rev-suppressed-diff-view' => "Єдна з ревізій про тото Ð¿Ð¾Ñ€Ñ–Ð²Ð½Ð°Ð½Ñ Ð±Ñ‹Ð»Ð° '''затаєна'''.
-Як адмініÑтратор ÑÑ– єй можете поÑмотрити; детайлы можуть быти зазначены в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} запиÑÑ— затаїнÑ].",
+Можете ÑÑ– єй поÑмотрити; детайлы можуть быти зазначены в [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} запиÑÑ— затаїнÑ].",
'rev-delundel' => 'вказати/Ñховати',
'rev-showdeleted' => 'вказати',
'revisiondelete' => 'Змазати/обновити ревізії',
@@ -892,7 +930,7 @@ $1",
# Suppression log
'suppressionlog' => 'Ð—Ð°Ð¿Ð¸Ñ Ð·Ð°Ñ‚Ð°Ñ—Ð½Ñ',
-'suppressionlogtext' => 'Тото Ñ” ÑпиÑок Ð·Ð¼Ð°Ð·Ð°Ð½Ñ Ñ– б Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ ÐºÐ¾Ñ‚Ñ€Ñ‹Ð¹ має обÑÑг Ñхованый перед адмініÑтраторами. Видьте тыж [[Special:IPBlockList|ÑпиÑок вшыткых блоковань]].',
+'suppressionlogtext' => 'Тото Ñ” ÑпиÑок Ð·Ð¼Ð°Ð·Ð°Ð½Ñ Ñ– Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ ÐºÐ¾Ñ‚Ñ€Ñ‹Ð¹ має обÑÑг Ñхованый перед адмініÑтраторами. Видьте тыж [[Special:BlockList|ÑпиÑок вшыткых блоковань]].',
# History merging
'mergehistory' => 'Ð—Ð»ÑƒÑ‡Ð¾Ð²Ð°Ð½Ñ Ñ–Ñторії Ñторінок',
@@ -1000,12 +1038,13 @@ $1",
'searchdisabled' => '<p>Перебачте. ПовнотекÑтове глÑÐ´Ð°Ð½Ñ Ñ” дочаÑно недоÑтупне. Ð—Ð°Ñ‚Ð»Ñ Ð¼Ð¾Ð¶ÐµÑ‚Ðµ Ñпробовати глÑÐ´Ð°Ð½Ñ Google; Ñ” але можне, же ёго резултаты не муÑÑÑ‚ÑŒ быти актуалны.</p>',
# Quickbar
-'qbsettings' => 'Панел навіґації',
-'qbsettings-none' => 'Жадный',
-'qbsettings-fixedleft' => 'Лежыть влїво',
-'qbsettings-fixedright' => 'Лежыть вправо',
-'qbsettings-floatingleft' => 'Плаваюча влїво',
-'qbsettings-floatingright' => 'Плаваюча вправо',
+'qbsettings' => 'Панел навіґації',
+'qbsettings-none' => 'Жадный',
+'qbsettings-fixedleft' => 'Лежыть влїво',
+'qbsettings-fixedright' => 'Лежыть вправо',
+'qbsettings-floatingleft' => 'Плаваюча влїво',
+'qbsettings-floatingright' => 'Плаваюча вправо',
+'qbsettings-directionality' => 'Певный, в залежноÑти на напрÑми вашого пиÑьма',
# Preferences page
'preferences' => 'ÐаÑтавлїнÑ',
@@ -1016,9 +1055,10 @@ $1",
'changepassword' => 'Змінити геÑло',
'prefs-skin' => 'ВзглÑд',
'skin-preview' => 'Попереднїй наглÑд',
-'prefs-math' => 'Математіка',
'datedefault' => 'Імпліцітный',
+'prefs-beta' => 'Бета-функції',
'prefs-datetime' => 'Датум Ñ– чаÑ',
+'prefs-labs' => 'ЕкÑперіменталны функції',
'prefs-personal' => 'Інформації о хоÑнователёві',
'prefs-rc' => 'ПоÑлїднї зміны',
'prefs-watchlist' => 'Слїдованы Ñторінкы',
@@ -1040,8 +1080,6 @@ $1",
'columns' => 'Колонкы:',
'searchresultshead' => 'ГлÑданÑ',
'resultsperpage' => 'ЧіÑло резултатів на Ñторінку:',
-'contextlines' => 'ЧіÑло Ñ€Ñдків на резултат',
-'contextchars' => 'ЧіÑло Ñімболів контекÑту на Ñ€Ñдок',
'stub-threshold' => 'Поріг про Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚Ð¾Ð²Ð°Ð½Ñ Ð¾Ð´ÐºÐ°Ð·Ñƒ Ñк <a href="#" class="stub">одказів на "stub"</a> (v bajtech):',
'stub-threshold-disabled' => 'Выпнуте',
'recentchangesdays' => 'Ðа кілько днїв вказовати новы едітованÑ',
@@ -1054,7 +1092,7 @@ $1",
'savedprefs' => 'Ваше наÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ð±Ñ‹Ð»Ð¾ уложене.',
'timezonelegend' => 'ЧаÑова зона:',
'localtime' => 'МіÑтный чаÑ:',
-'timezoneuseserverdefault' => 'ХоÑновати наÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ñервера',
+'timezoneuseserverdefault' => 'ХоÑновати штандартне наÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ð²Ñ–ÐºÑ– ($1)',
'timezoneuseoffset' => 'Інше (задайте поÑун)',
'timezoneoffset' => 'ПоÑун¹:',
'servertime' => 'Ð§Ð°Ñ Ñервера:',
@@ -1089,6 +1127,7 @@ $1",
'prefs-registration' => 'Ð§Ð°Ñ Ñ€ÐµÒ‘Ñ–Ñтрації:',
'yourrealname' => 'Скуточне мено:',
'yourlanguage' => 'Язык:',
+'yourvariant' => 'Варіант Ñзыка обÑÑгу:',
'yournick' => 'ПідпиÑ:',
'prefs-help-signature' => 'Коментарї на діÑкузіÑÑ… бы ÑÑ Ð¼Ð°Ð»Ð¸ підпиÑовати помочов „<nowiki>~~~~</nowiki>“, што ÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚ÑŒ на ваш Ð¿Ñ–Ð´Ð¿Ð¸Ñ Ñ– актуалный чаÑ.',
'badsig' => 'Ðеправилний підпиÑ.
@@ -1102,8 +1141,8 @@ $1",
'prefs-help-gender' => 'Волительне: хоÑноване Ñофтвером про правилне оÑÐ»Ð¾Ð²Ð¾Ð²Ð°Ð½Ñ Ð² залежноÑти на поглавю. Тота Ñ–Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ñ” публічна.',
'email' => 'Електронічна пошта',
'prefs-help-realname' => 'Скуточне мено (волительно): кідь го задаєте, буде поужыте про Ð¾Ð·Ð½Ð°Ñ‡Ñ–Ð½Ñ Ð°Ð²Ñ‚Ð¾Ñ€Ñтва вашой роботы на Ñторінцї.',
-'prefs-help-email' => 'ÐдреÑа електронічной пошты не Ñ” повинна, але Ñ” потрібна про заÑÑ‹Ð»Ð°Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ геÑла в припадї, же Ñьте Ñвоє геÑло забыли.
-Тыж можете доволити іншым хоÑнователÑм Ð²Ð°Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¾Ð²Ð°Ñ‚Ð¸ з помочов вашой Ñторінкы, без того жебы была ваша адреÑа прозраджена.',
+'prefs-help-email' => 'ÐдреÑа ел. пошты не Ñ” повинна, але уможнює заÑÐ»Ð°Ð½Ñ Ð½Ð¾Ð²Ð¾Ð³Ð¾ геÑла, кібы Ñьте забыли Ñвоє.',
+'prefs-help-email-others' => 'Тыж можете іншым хоÑнователÑм Ð²Ð°Ñ ÑредÑтвом хоÑновательÑкой Ñторінкы контактовати, без того жебы была ваша адреÑа прозраджена.',
'prefs-help-email-required' => 'ÐдреÑа електронічной пошты Ñ” потрібна.',
'prefs-info' => 'ОÑновны інформації',
'prefs-i18n' => 'ІнтернаціоналізаціÑ',
@@ -1228,15 +1267,15 @@ $1",
'right-userrights' => 'Зміна вшыткых прав оÑтатнім хоÑнователÑм',
'right-userrights-interwiki' => 'Зміна прав хоÑнователÑм на іншых вікі',
'right-siteadmin' => 'Замыкана Ñ– Ð¾Ð´Ð¾Ð¼Ñ‹ÐºÐ°Ð½Ñ Ð´Ð°Ñ‚Ð°Ð±Ð°Ð·Ñ‹',
-'right-reset-passwords' => 'ÐаÑÑ‚Ð°Ð²Ð¾Ð²Ð°Ð½Ñ Ð³ÐµÑел іншым хоÑнователÑм',
'right-override-export-depth' => 'ЕкÑпорт Ñторінок включаючі звÑзаны Ñторінкы з глубков до 5',
'right-sendemail' => 'ПоÑÑ‹Ð»Ð°Ð½Ñ Ð¿Ð¾ÑˆÑ‚Ñ‹ іншым хоÑнователÑм',
# User rights log
-'rightslog' => 'Лоґ хоÑновательÑкых прав',
-'rightslogtext' => 'Тото Ñ” протокол зміны прав хоÑнователїв',
-'rightslogentry' => 'змінив членÑтво в ґрупах про хоÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ $1 з $2 на $3',
-'rightsnone' => '(жадне)',
+'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' => 'прочітати тоту Ñторінку',
@@ -1356,11 +1395,12 @@ $1",
'minlength1' => 'Ðазва файлу муÑить мати холем єдну літеру.',
'illegalfilename' => 'Ðазва файлу "$1" обÑÑгує буквы, котры не Ñуть поволены в назвах Ñторінок. ПроÑиме, переменуйте файл Ñ– Ñпробуйте го награти зÑÑÑŒ.',
'badfilename' => 'Ðазва файлу была змінена на „$1“.',
-'filetype-mime-mismatch' => 'РоÑÑˆÑ‹Ñ€Ñ—Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ не одповідать ёго MIME тіпу.',
+'filetype-mime-mismatch' => 'РоÑÑˆÑ‹Ñ€Ñ—Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ ".$1" не одповідать ёго MIME тіпу ($2).',
'filetype-badmime' => 'Ðе Ñ” поволене начітати файлы MIME тіп „$1“.',
'filetype-bad-ie-mime' => 'Ðеможно начітати тот файл, бо Internet Explorer бы го поважовав за „$1“, што Ñ” не доволеный Ñ– потенціално небезпечный тіп файлу.',
'filetype-unwanted-type' => "„.$1“''' Ñ” нежеланый формат файлу. {{plural:$3|Желаный формат файлів Ñ”|Желаны форматы файлів Ñуть}} $2.",
-'filetype-banned-type' => "'''„.$1“''' Ñ” недоволеный формат файлів. {{plural:$3|Поволеный формат файлів Ñ”|Поволены форматы файлів Ñуть}} $2.",
+'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|Ñ” недоволеный формат файлів|Ñуть недоволены форматы файлів}}.
+{{PLURAL:$3|Доволеный формат фалів|Доволены форматы файлів Ñуть}} $2.",
'filetype-missing' => 'Файл не має роÑÑˆÑ‹Ñ€Ñ–Ð½Ñ (наприклад, «.jpg»).',
'empty-file' => 'Ðачітаный файл Ñ” порожнїй.',
'file-too-large' => 'Ðачітаный файл Ñ” барз великый.',
@@ -1376,6 +1416,7 @@ $1",
'large-file' => 'Ð¡Ñ Ñ€ÐµÐºÐ¾Ð¼ÐµÐ½Ð´ÑƒÑ”, жебы довжка файлу непереÑÑговала $1, тот файл має $2.',
'largefileserver' => 'Розмір файлу Ñ” векшый Ñк ліміт наÑтавленый на Ñервері.',
'emptyfile' => 'Файл, котрый Ñьте вложыли ÑÑ Ð²Ð¸Ð´Ð¸Ñ‚ÑŒ быти порожнїй. Могла то запричінити хыба в назві файлу. ПроÑиме, перевірте ці Ñьте Ñправды хотїли вложыти тот файл.',
+'windows-nonascii-filename' => 'Тота вікі не підпорує назвы файлів з шпеціалныма Ñімболами.',
'fileexists' => "Файл з тов назвов уж екзіÑтує, проÑиме поÑмотьте ÑÑ Ð½Ð° '''<tt>[[:$1]]</tt>''', покы не знаєте напевно, ці хочете тот файл нагородити.
[[$1|thumb]]",
'filepageexists' => "ПопиÑова Ñторінка про файл з тов назвов уж была на '''<tt>[[:$1]]</tt>''' Ñтворена, але одповідаючій файл дотеперь не екзіÑтує.
@@ -1409,6 +1450,8 @@ $1",
'php-uploaddisabledtext' => 'Ð’ PHP Ñ” выпнуте Ð½Ð°Ñ‡Ñ–Ñ‚Ð°Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð². ПроÑиме, перевірте наÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ file_uploads.',
'uploadscripted' => 'Тот файл обÑÑгує HTML-код або Ñкріпт, Ñкый може быти неправилно інтерпретованый вебовым переглÑдÑчом.',
'uploadvirus' => 'Файл обÑÑгує віруÑ! Детайлы: $1',
+'uploadjava' => 'Тот файл Ñ” ZIP архів, котрый обÑÑгує .class-файл Java.
+ÐÐ°Ñ‡Ñ–Ñ‚Ð°Ð½Ñ Java-файлів не Ñ” доволене, бо они можуть запричінити обход Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡Ñ–Ð½Ñ ÑÑ–Ñтемы.',
'upload-source' => 'Здройовый файл',
'sourcefilename' => 'Ðазва здройового файлу:',
'sourceurl' => 'Здройова URL-адреÑа:',
@@ -1418,10 +1461,6 @@ $1",
'upload-options' => 'Параметры начітанÑ',
'watchthisupload' => 'Слїдовати тот файл',
'filewasdeleted' => 'Файл з таков назвов уж екзіÑтовав а быв змазаный. Детайлы обÑÑгує $1.',
-'upload-wasdeleted' => "'''Увага: Ðачітаєте файл, котрый уж быв Ñкоре змазаный.'''
-
-Уважте ці Ñправды треба продовжовати в начітаню того файлу.
-Ту Ñ” даный Ð·Ð°Ð¿Ð¸Ñ Ð· книгы змазаных файлів:",
'filename-bad-prefix' => "Ðазва файлу, котрый начітавате ÑÑ Ð·Ð°Ñ‡Ñ–Ð½Ð°Ñ‚ÑŒ на '''„$1“''', што не Ñ” назва звычайно прирÑджована діґіталным фотоапаратом. Звольте іншу назву, котра ваш файл попише лїпше.",
'upload-success-subj' => 'ÐÐ°Ñ‡Ñ–Ñ‚Ð°Ð½Ñ Ð±Ñ‹Ð»Ð¾ уÑпішне',
'upload-success-msg' => 'Файл вами начітаный з [$2] Ñ” доÑтупный на [[:{{ns:file}}:$1]]',
@@ -1443,6 +1482,23 @@ $1',
'upload-unknown-size' => 'Ðезнамый розмір',
'upload-http-error' => 'Дішло ку хыбі HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'При одкрытю ZIP-архіву про ёго перевірку выникла хыба.',
+'zip-wrong-format' => 'Вказаный файл не є ZIP-файлом',
+'zip-bad' => 'ZIP-файл Ñ” пошкодженый ці в іншый ÑпоÑоб непридатный про чітанÑ.
+Ðе годен перевірити ёго безпечноÑÑ‚ÑŒ.',
+'zip-unsupported' => 'Файл хоÑнує такы можноÑти ZIP, Ñкы MediaWiki не підпорує.
+Ðе годен перевірити ёго безпечноÑÑ‚ÑŒ.',
+
+# Special:UploadStash
+'uploadstash' => 'Ðаграти Ñкрышу',
+'uploadstash-summary' => 'Тота Ñторінка додавать приÑтуп ку файлом котры Ñуть награты (або Ð½Ð°Ð³Ñ€Ð°Ð²Ð°Ð½Ñ Ñ–Ñ‰Ñ– не Ñкінчіло) але іщі не были пувлікованы на вікі. Тоты файлы не видить нихто окрем хоÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ ÑˆÑ‚Ð¾ Ñ—Ñ… награв.',
+'uploadstash-clear' => 'Змазати Ñхованы файлы',
+'uploadstash-nofiles' => 'Ðе маєте жадны Ñхованы файлы.',
+'uploadstash-badtoken' => 'Ð’Ñ‹ÐºÐ¾Ð½Ð°Ð½Ñ Ñ‚Ð¾Ð¹ дїї не было уÑпішне, може зато, же вашы Ð¿Ð¾Ð²Ñ–Ñ€Ñ—Ð½Ñ Ð¿Ñ€Ð¾ ÐµÐ´Ñ–Ñ‚Ð¾Ð²Ð°Ð½Ñ Ñкінчіли. Попробуйте знову.',
+'uploadstash-errclear' => 'Ð—Ð¼Ð°Ð·Ð°Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² не было уÑпішне.',
+'uploadstash-refresh' => 'Обновити ÑпиÑок файлів',
+
# img_auth script messages
'img-auth-accessdenied' => 'ПриÑтуп одопертый',
'img-auth-nopathinfo' => 'Хыбить PATH_INFO.
@@ -1516,14 +1572,14 @@ $1',
'filehist-filesize' => 'Розмір файлу',
'filehist-comment' => 'Коментарь',
'filehist-missing' => 'Файл хыбіть',
-'imagelinks' => 'Одказы на файл',
+'imagelinks' => 'Ð’Ñ‹ÑƒÐ¶Ñ‹Ñ‚Ñ Ñ„Ð°Ð¹Ð»Ñƒ',
'linkstoimage' => '{{PLURAL:$1|Далша Ñторінка ÑÑ Ð¾Ð´ÐºÐ°Ð·ÑƒÑ”|Далшы Ñторінкы ÑÑ Ð¾Ð´ÐºÐ°Ð·ÑƒÑŽÑ‚ÑŒ}} на тот файл:',
'linkstoimage-more' => 'Ðа тот файл {{PLURAL:$1|одказує веце Ñторінок|одказує веце Ñк $1 Ñторінок|одказує веце Ñк $1 Ñторінок}}.
ÐаÑлїдуючій ÑпиÑок зображує лем {{PLURAL:$1|тоту першу|першы $1|першых $1}}.
Можете Ñобі поÑмотрити [[Special:WhatLinksHere/$2|повный ÑпиÑок]].',
'nolinkstoimage' => 'Ðа тот файл не одказує жадна Ñторінка',
'morelinkstoimage' => 'Видїти [[Special:WhatLinksHere/$1|далшы одказы]] на тот файл.',
-'redirectstofile' => '{{plural:$1|ÐаÑлідуючій файл напрÑмлює|ÐаÑлїдуючі $1 файлы напрÑмлюють|ÐаÑлїдуючіх $1 файлів напрÑмлює}} на тот файл:',
+'linkstoimage-redirect' => '$1 (напрÑÐ¼Ð»Ñ—Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ) $2',
'duplicatesoffile' => '{{plural:$1|ÐаÑлїдуючій файл Ñ” дуплікат|ÐаÑлїдуючі $1 файлы Ñуть дуплікаты|ÐаÑлїдуючіх $1 файлів Ñ” дуплікатами}} того файлу ([[Special:FileDuplicateSearch/$2|детайлы]]):',
'sharedupload' => 'Тот файл Ñ” з $1 Ñ– Ñ” доÑтупным про іншы проекты.',
'sharedupload-desc-there' => 'Тот файл походить з {{grammar:2sg|$1}} Ñ– можуть го хоÑновати другы проєкты.
@@ -1616,12 +1672,13 @@ $1',
'disambiguationspage' => 'Template:disambig',
'disambiguations-text' => "Одказы на наÑлїдуючіх Ñторінках ведуть на '''богатозначны Ñторінкы'''. (Ñторінкы котры обÑÑгують дакотру з Ñ‚Ñ‹Ñ… шаблон на [[MediaWiki:Disambiguationspage|ÑпиÑку шаблон про богатозначны Ñторінкы]]) наміÑто на дану Ñтатю.",
-'doubleredirects' => 'Двоїты напрÑмлїнÑ',
-'doubleredirectstext' => 'Ðа тій Ñторінцї Ñ” ÑпиÑок напрÑмлїн ведучіх на далшы напрÑмлїнÑ.
+'doubleredirects' => 'Двоїты напрÑмлїнÑ',
+'doubleredirectstext' => 'Ðа тій Ñторінцї Ñ” ÑпиÑок напрÑмлїн ведучіх на далшы напрÑмлїнÑ.
Каждый Ñ€Ñдок обÑÑгує одказ на перше Ñ– друге напрÑÐ¼Ð»Ñ—Ð½Ñ Ñ– ку тому ціль другого напрÑмлїнÑ, котрый звычайно вказує мено „реалной“ цілёвой Ñторінкы, на котру бы ÑÑ Ð¼Ð°Ð»Ð¾ перше напрÑÐ¼Ð»Ñ—Ð½Ñ Ð¾Ð´ÐºÐ°Ð·Ð¾Ð²Ð°Ñ‚Ð¸.
<del>Перечаркнуты</del> положкы уж были вырїшены.',
-'double-redirect-fixed-move' => 'Сторінка [[$1]] была переменована, нынї напрÑмлює на [[$2]]',
-'double-redirect-fixer' => 'Оправарь напрÑмлїнь',
+'double-redirect-fixed-move' => 'Сторінка [[$1]] была переменована, нынї напрÑмлює на [[$2]]',
+'double-redirect-fixed-maintenance' => 'ÐšÐ¾Ñ€ÐµÐºÑ†Ñ–Ñ Ð´Ð²Ð¾Ñ—Ñ‚Ð¾Ð³Ð¾ напрÑÐ¼Ð»Ñ—Ð½Ñ Ð· [[$1]] на [[$2]].',
+'double-redirect-fixer' => 'Оправарь напрÑмлїнь',
'brokenredirects' => 'Перерваны напрÑмлїнÑ',
'brokenredirectstext' => 'Тоты напрÑÐ¼Ð»Ñ—Ð½Ñ Ð²ÐµÐ´ÑƒÑ‚ÑŒ на неекзіÑтуючі Ñторінкы:',
@@ -1698,6 +1755,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|новша|новшы|новшых}} $1',
'pager-older-n' => '{{PLURAL:$1|Ñтарша|Ñтаршы|Ñтаршых}} $1',
'suppress' => 'Ревізор',
+'querypage-disabled' => 'Тота шпеціална Ñторінка Ñ” заблокована про проблемы з выконом.',
# Book sources
'booksources' => 'Жрідла книг',
@@ -1748,7 +1806,7 @@ $1',
'sp-deletedcontributions-contribs' => 'приÑпевкы',
# Special:LinkSearch
-'linksearch' => 'ЕкÑтерны одказы',
+'linksearch' => 'ГлÑÐ´Ð°Ð½Ñ ÐµÐºÑтерных одказів',
'linksearch-pat' => 'Шаблона про ґлÑдÑнÑ:',
'linksearch-ns' => 'ПроÑтор назв:',
'linksearch-ok' => 'ГлÑдати',
@@ -1815,6 +1873,10 @@ $1',
'noemailtext' => 'Тот хоÑнователь не зазначів платну адреÑу ел. пошты.',
'nowikiemailtitle' => 'Ел. пошта не є доволена',
'nowikiemailtext' => 'Тот хоÑнователь Ñобі не желать діÑтавати пошту од іншых хоÑнователїв.',
+'emailnotarget' => 'ÐеекзіÑтуюче або некоректне Ñ–Ð¼Ñ Ñ…Ð¾ÑнователÑ.',
+'emailtarget' => 'Уведьте Ñ–Ð¼Ñ Ñ…Ð¾ÑнователÑ-адреÑата',
+'emailusername' => 'Ð†Ð¼Ñ Ñ…Ð¾ÑнователÑ:',
+'emailusernamesubmit' => 'ОдоÑлати',
'email-legend' => 'ОдоÑÑ‹Ð»Ð°Ð½Ñ ÐµÐ». пошты іншому хоÑнователёві {{GRAMMAR:2sg|{{SITENAME}}}}',
'emailfrom' => 'Од:',
'emailto' => 'Кому:',
@@ -1839,10 +1901,10 @@ $1',
'watchlistanontext' => 'Про Ð¿ÐµÑ€ÐµÐ·ÐµÑ€Ð°Ð½Ñ Ñ†Ñ– управу ÑпиÑку Ñлїдованых Ñторінок ÑÑ Ð¼ÑƒÑите $1.',
'watchnologin' => 'Ðе Ñьте приголошеный(а)',
'watchnologintext' => 'Про ÑÐ»Ñ—Ð´Ð¾Ð²Ð°Ð½Ñ Ñторінок ÑÑ Ð¼ÑƒÑите [[Special:UserLogin|приголоÑити]].',
-'addedwatch' => 'Придана до ÑпиÑку Ñлїдованых Ñторінок',
+'addwatch' => 'Придати до ÑпиÑку Ñлїдованых Ñторінок',
'addedwatchtext' => "Сторінка «[[:$1]]» была придана до вашого [[Special:Watchlist|ÑпиÑку Ñлїдованых]].
Будучі зміны той Ñтатї Ñ– з нёв повÑзаной Ñторінков діÑкузії будуть зображены у тім ÑпиÑку, а тыж будуть выдїлены '''тучнї''' на Ñторінцї із [[Special:RecentChanges|ÑпиÑком поÑлїднїх змін]], жебы Ñ—Ñ… было легше вшимнути.",
-'removedwatch' => 'Вымазана зо ÑпиÑок Ñлїдованых Ñторінок',
+'removewatch' => 'Вымазати зо ÑпиÑку Ñлїдованых Ñторінок',
'removedwatchtext' => 'Сторінка «[[:$1]]» вымазана з вашого [[Special:Watchlist|ÑпиÑку Ñлїдованых Ñторінок]].',
'watch' => 'Слїдовати',
'watchthispage' => 'Слїдовати тоту Ñторінку',
@@ -1863,8 +1925,9 @@ $1',
'watchlist-options' => 'ÐаÑтавлїна ÑпиÑку Ñлїдованых',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'ÐŸÑ€Ð¸Ð´Ð°Ð²Ð°Ð½Ñ Ð´Ð¾ ÑпиÑку ÑлїдованÑ...',
-'unwatching' => 'ÐžÐ´Ð¾Ð±Ñ€Ð°Ñ‚Ñ Ð·Ð¾ ÑпиÑку ÑлїдованÑ...',
+'watching' => 'ÐŸÑ€Ð¸Ð´Ð°Ð²Ð°Ð½Ñ Ð´Ð¾ ÑпиÑку ÑлїдованÑ...',
+'unwatching' => 'ÐžÐ´Ð¾Ð±Ñ€Ð°Ñ‚Ñ Ð·Ð¾ ÑпиÑку ÑлїдованÑ...',
+'watcherrortext' => 'При змінї Ñлїдованой Ñторінкы „$1“ дішло ку хыбі.',
'enotif_mailer' => 'ЗаÑылач нотіфікацій {{grammar:2sg|{{SITENAME}}}}',
'enotif_reset' => 'Означіти вшытко Ñк навщівене',
@@ -1878,7 +1941,7 @@ $1',
'enotif_anon_editor' => 'анонімный хоÑнователь $1',
'enotif_body' => 'Дорогый хоÑнователю $WATCHINGUSERNAME,
-У $PAGEEDITDATE $CHANGEDORCREATED $PAGEEDITOR Ñторінку $PAGETITLE, Ñмотьте актуалну верзію на $PAGETITLE_URL .
+У $PAGEEDITDATE была хоÑнователём $PAGEEDITOR $CHANGEDORCREATED Ñторінка $PAGETITLE, Ñмотьте актуалну верзію на $PAGETITLE_URL .
$NEWPAGE
Куртый Ð¾Ð¿Ð¸Ñ Ð·Ð¼Ñ–Ð½: $PAGESUMMARY $PAGEMINOREDIT
@@ -1894,16 +1957,16 @@ $NEWPAGE
--
Змінити наÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ñ–Ð¼ÐµÐ¹Ð»Ð¾Ð²Ñ‹Ñ… повідомлїнь можете на
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
ÐаÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ñлїдованых Ñторінок можете змінити на
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:Special:Watchlist/edit}}
Сторінку можете із Ñвоїх Ñлїдованых вылучіти на
$UNWATCHURL
Порада і контакт:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Змазати Ñторінку',
@@ -1919,7 +1982,7 @@ $UNWATCHURL
ПроÑиме ВаÑ, підтвердьте, же Ñправды тото хочете зробити, повно розумієте наÑлїдкы Ñ– же робите тото в одповідноÑти з [[{{MediaWiki:Policy-url}}|правилами]].',
'actioncomplete' => 'Ð”Ñ—Ñ Ð²Ñ‹ÐºÐ¾Ð½Ð°Ð½Ð°',
'actionfailed' => 'ÐžÐ¿ÐµÑ€Ð°Ñ†Ñ–Ñ ÑÑ Ð½Ðµ подарила',
-'deletedtext' => '"<nowiki>$1</nowiki>" было змазане.
+'deletedtext' => '"$1" было змазане.
Смоть $2 про ÑпиÑок поÑлїднїх змазань.',
'deletedarticle' => 'змазаный "[[$1]]"',
'suppressedarticle' => 'затаїв „[[$1]]“',
@@ -1974,7 +2037,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'Ðеправилный Ñ‡Ð°Ñ ÑƒÐºÐ¾Ð½Ñ‡Ñ–Ð½Ñ',
'protect_expiry_old' => 'Ð§Ð°Ñ Ñтраты платноÑти Ñ” в минулоÑти.',
'protect-unchain-permissions' => 'ЗприÑтупнити далшы наÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ð·Ð°Ð¼ÐºÑƒ',
-'protect-text' => "Ту можете видїти Ñ– змінити рівень охраны Ñторінкы '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Ту можете видїти Ñ– змінити рівень охраны Ñторінкы '''$1'''.",
'protect-locked-blocked' => "Ðе можете мінити наÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ð·Ð°Ð¼ÐºÑ–Ð² покы Ñьте заблокованый. СучаÑне наÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ð¿Ñ€Ð¾ тоту Ñторінку Ñ”: '''$1''':",
'protect-locked-dblock' => "ÐаÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ð·Ð°Ð¼ÐºÑ–Ð² ÑÑ Ð½Ðµ даÑÑ‚ÑŒ змінити про замкнуту датабазу.
СучаÑне наÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ð¿Ñ€Ð¾ тоту Ñторінку Ñ”: '''$1''':",
@@ -2027,7 +2090,8 @@ $UNWATCHURL
'undeletepagetext' => '{{PLURAL:$1|ÐаÑлїдуюча Ñторінка была змазана, але дотеперь Ñ” в архіві, также Ñ” можне єй обновити|ÐаÑлїдуючі $1 Ñторінкы были змазаны, але дотеперь Ñуть в архіві, также Ñ” може Ñ—Ñ… обновити|ÐаÑлїдуючіх $1 Ñторінок было змазаных, але дотеперь Ñуть в архіві, также Ñ” можне Ñ—Ñ… обновити}}.
Ðрхів може быти періодічно очіщаный.',
'undelete-fieldset-title' => 'Обновити ревізії',
-'undeleteextrahelp' => "Про повне Ð¾Ð±Ð½Ð¾Ð²Ð»Ñ—Ð½Ñ Ñторінкы з комплетнов Ñ–Ñторіов охабте вшыткы коцочкы незазначены Ñ– кликните на '''''Обновити'''''. Про чаÑточне Ð¾Ð±Ð½Ð¾Ð²Ð»Ñ—Ð½Ñ Ð·Ð°Ð·Ð½Ð°Ñ‡Ñ‚Ðµ коцочкы у обновованых ревізіÑÑ… Ñ– кликните на '''''Обновити'''''. ÐšÐ»Ð¸ÐºÐ½ÑƒÑ‚Ñ Ð½Ð° '''''РеÑет''''' вычіÑтить коментарь Ñ– зрушыть вшыткы зазначінÑ.",
+'undeleteextrahelp' => "Кідь хочете обновити комплетну Ñ–Ñторію Ñторінкы, зохабте вшыткы позначкы порожнї Ñ– кликните на '''''{{int:undeletebtn}}'''''.
+Про чаÑткове Ð¾Ð±Ð½Ð¾Ð²Ð»Ñ—Ð½Ñ Ð¾Ð·Ð½Ð°Ñ‡Ñ‚Ðµ позначкы у обновлёваных ревізій Ñ– кликните на '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|Ð²ÐµÑ€Ð·Ñ–Ñ Ñ” архівована|верзії Ñуть архівованы|верзій Ñ” архівованых}}',
'undeletehistory' => 'Кідь Ñторінку обновите, будуть в Ñ–Ñторії обновлены вшыткы верзії. Кідь была Ñтворена нова Ñторінка з такым Ñамым меном Ñк змазана, обновлена Ñторінка ÑÑ Ð·Ð°Ð¿Ð¸ÑˆÐµ на Ñтарше міÑце в Ñ–Ñторії новшой Ñторінкы.',
'undeleterevdel' => 'ÐžÐ±Ð½Ð¾Ð²Ð»Ñ—Ð½Ñ Ð½Ðµ буде выконане, кібы вело ку чаÑточному одÑтранїню актуалной верзії Ñторінкы. Ð’ такім припадї муÑите одзначіти або одкрыти найновшу змазану верзію.',
@@ -2066,9 +2130,12 @@ $1',
'undelete-show-file-submit' => 'Гей',
# Namespace form on various pages
-'namespace' => 'ПроÑтор назв:',
-'invert' => 'Окрем выбраного',
-'blanknamespace' => '(ОÑновный)',
+'namespace' => 'ПроÑтор назв:',
+'invert' => 'Окрем выбраного',
+'tooltip-invert' => 'зазнач тото поличко, жебы ÑÑ Ñкрыли зміны на Ñторінках у выбранім проÑторї назв (Ñ– ÑпрÑгнутый проÑтор назв Ñ” тыж зазначеный)',
+'namespace_association' => 'ПовÑзаный проÑтор назв',
+'tooltip-namespace_association' => 'Позначінём того поличка загорнете Ñ– діÑкузный ці обÑÑговый проÑтор назв приналежный ку вынраному проÑтору назв',
+'blanknamespace' => '(ОÑновный)',
# Contributions
'contributions' => 'ПриÑпевок хоÑнователÑ',
@@ -2118,13 +2185,15 @@ $1',
'whatlinkshere-filters' => 'Філтры',
# Block/unblock
+'autoblockid' => 'ÐÐ²Ñ‚Ð¾Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ #$1',
+'block' => 'Заблоковати хоÑнователÑ',
+'unblock' => 'Одблоковати хоÑнователÑ',
'blockip' => 'Заблоковати хоÑнователÑ',
'blockip-title' => 'Ð‘Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ Ñ…Ð¾ÑнователÑ',
'blockip-legend' => 'Ð‘Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ Ñ…Ð¾ÑнователÑ',
'blockiptext' => 'Тот формуларь Ñлужыть про Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ ÐµÐ´Ñ–Ñ‚Ð¾Ð²Ð°Ð½Ñ Ð· конкретной IP адреÑÑ‹ або мена хоÑнователÑ.
Тото бы мало быти хоÑноване лем в згодї з [[{{MediaWiki:Policy-url}}|правилами]].
Задайте причіну ниже (наприклад вкажте, котры Ñторінкы были пошкоджены).',
-'ipaddress' => 'IP-адреÑа:',
'ipadressorusername' => 'IP-адреÑа або мено хоÑнователÑ:',
'ipbexpiry' => 'Кінчіть:',
'ipbreason' => 'Причіна:',
@@ -2137,7 +2206,7 @@ $1',
** ЗаÑÑ‚Ñ€Ð°ÑˆÐ¾Ð²Ð°Ð½Ñ Ð°Ð±Ð¾ выгрожованÑ
** Ð—Ð½ÐµÑƒÐ¶Ñ‹Ð²Ð°Ð½Ñ Ð²ÐµÑ†Ðµ конт
** Ðевгодне мено хоÑнователÑ',
-'ipbanononly' => 'Заблоковати лем анонімных хоÑнователїв',
+'ipb-hardblock' => 'Заборонити приголошеным хоÑнователÑм едітовати з той IP-адреÑÑ‹',
'ipbcreateaccount' => 'Ðе доволити реґіÑтрацію новых хоÑнователїв',
'ipbemailban' => 'Заборонити хоÑнователёві поÑылати ел. пошту',
'ipbenableautoblock' => 'Ðвтоматічно блоковати IP адреÑÑ‹ хоÑнованы тым хоÑнователём',
@@ -2148,12 +2217,15 @@ $1',
'ipbotherreason' => 'Інша/додаткова причіна:',
'ipbhidename' => 'Сховати мено хоÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð² едітованÑÑ… Ñ– ÑпиÑках',
'ipbwatchuser' => 'Слїдовати хоÑновательÑку Ñ– діÑкузну Ñторінку того хоÑнователÑ',
-'ipballowusertalk' => 'Доволити тому хоÑнователёві Ð¿Ð¾Ñ‡Ð°Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ ÐµÐ´Ñ–Ñ‚Ð¾Ð²Ð°Ñ‚Ð¸ Ñвою діÑкузну Ñторінку',
+'ipb-disableusertalk' => 'Заборонити тому хоÑнователёви едітовати влаÑтну хоÑновательÑку діÑкузію по Ñ‡Ð°Ñ Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ',
'ipb-change-block' => 'Знову заблоковати хоÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð· тыма наÑтавлїнÑми',
+'ipb-confirm' => 'Потвердити блокованÑ',
'badipaddress' => 'Ðеправилна IP адреÑа',
'blockipsuccesssub' => 'Ð‘Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¾',
'blockipsuccesstext' => 'ХоÑнователь „[[Special:Contributions/$1|$1]]“ Ñ” блокованый.<br />
Можете Ñобі поÑмотрити [[Special:IPBlockList|ÑпиÑок блокованых хоÑнователїв]].',
+'ipb-blockingself' => 'Зберате ÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ñ‚Ð¸ {{gender:|Ñам|Ñама|Ñамы}} Ñебе! Сьте Ñобі {{gender:|певный|певна|певны}}, же тото хочете зробити?',
+'ipb-confirmhideuser' => 'Рыхтуєте ÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ñ‚Ð¸ хоÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð·Ð¾ запнутов вольбов "Ñховати Ñ–Ð¼Ñ Ñ…Ð¾ÑнователÑ". То запрічінить же Ñ–Ð¼Ñ Ñ…Ð¾ÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ñчезне зо вшыткых ÑпиÑків Ñ– протоколёвачіх запиÑів. Сьте Ñобі {{gender:|певный|певна|певны}}, же хочете тото зробити?',
'ipb-edit-dropdown' => 'Едітовати причіны блоковань',
'ipb-unblock-addr' => 'Одблоковати $1',
'ipb-unblock' => 'Одблоковати хоÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð°Ð±Ð¾ IP адреÑу',
@@ -2163,17 +2235,23 @@ $1',
'unblockiptext' => 'Тым формуларём Ñ” можне обновити права блокованой IP адреÑÑ‹ ці хоÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð·Ð½Ð¾Ð²Ñƒ приÑпівати до {{grammar:2sg|{{SITENAME}}}}.',
'ipusubmit' => 'ЗнÑти тото блокованÑ',
'unblocked' => '[[User:$1|$1]] одблокованый',
+'unblocked-range' => '$1 розблоковане',
'unblocked-id' => 'Ð‘Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ $1 было знÑте',
+'blocklist' => 'Заблокованы хоÑнователї',
'ipblocklist' => 'Заблокованы хоÑнователї',
'ipblocklist-legend' => 'ГлÑдати заблокованого хоÑнователÑ',
-'ipblocklist-username' => 'ХоÑнователь або IP-адреÑа:',
-'ipblocklist-sh-userblocks' => '$1 заблокованы конта',
-'ipblocklist-sh-tempblocks' => '$1 дочаÑны заблокованÑ',
-'ipblocklist-sh-addressblocks' => '$1 Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ Ñ”Ð´Ð½Ð¾Ð¹ IP адреÑÑ‹',
+'blocklist-userblocks' => 'Сховати заблокованы конта',
+'blocklist-tempblocks' => 'Сховати дочаÑны заблокованÑ',
+'blocklist-addressblocks' => 'Сховати Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ Ñ”Ð´Ð½Ð¾Ð¹ IP адреÑÑ‹',
+'blocklist-timestamp' => 'ЧаÑова значка',
+'blocklist-target' => 'Ціль',
+'blocklist-expiry' => 'Кінчіть',
+'blocklist-by' => 'Блокуючій адмін',
+'blocklist-params' => 'Параметры блокованÑ',
+'blocklist-reason' => 'Прічіна',
'ipblocklist-submit' => 'ГлÑдати',
'ipblocklist-localblock' => 'Локалне блокованÑ',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Інше блокованÑ|Іншы блокованÑ}}',
-'blocklistline' => '$1, $2 заблоковав $3 ($4)',
'infiniteblock' => 'до одволанÑ',
'expiringblock' => 'до $1, $2',
'anononlyblock' => 'лем анонімы',
@@ -2194,7 +2272,7 @@ $1',
'blocklog-showsuppresslog' => 'Тот хоÑнователь быв блокованый Ñ– Ñхованый. Ту Ñ” про переглÑд вказаный Ð²Ñ‹Ð¿Ð¸Ñ Ð· книгы блокованÑ:',
'blocklogentry' => 'заблокoвав [[$1]] на термін $2 $3',
'reblock-logentry' => 'змінив наÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ð±Ð»Ð¾ÐºÑƒ „[[$1]]“ з чаÑом екÑіпрації $2 $3',
-'blocklogtext' => 'Тото Ñ” книга Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ Ñ– Ð¾Ð´Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ Ñ…Ð¾Ñнователїв. Ðвтоматічно блокованы IP-адреÑÑ‹ не Ñуть выпиÑаны. Попозерайте ÑÑ Ð½Ð° [[Special:IPBlockList|ÑпиÑок Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ IP]] з выпиÑом актуалный заказів Ñ– блоковань.',
+'blocklogtext' => 'Тото Ñ” книга Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ Ñ– Ð¾Ð´Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ Ñ…Ð¾Ñнователїв. Ðвтоматічно блокованы IP-адреÑÑ‹ не Ñуть выпиÑаны. Попозерайте ÑÑ Ð½Ð° [[Special:BlockList|ÑпиÑок Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ IP]] з выпиÑом актуалный заказів Ñ– блоковань.',
'unblocklogentry' => 'одблоковав $1',
'block-log-flags-anononly' => 'лем анонімны хоÑнователї',
'block-log-flags-nocreate' => 'вытварÑÐ½Ñ ÐºÐ¾Ð½Ñ‚ не поволене',
@@ -2208,9 +2286,9 @@ $1',
'ipb_expiry_temp' => 'Ð‘Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ Ñхованых мен хоÑнователїв бы мало быти тырвале.',
'ipb_hide_invalid' => 'Тото конто ÑÑ Ð½Ðµ даÑÑ‚ÑŒ затаїти; може має дуже много едітацій.',
'ipb_already_blocked' => '„$1“ є уже заблокованый',
-'ipb-needreblock' => '== Уж заблокованый(а) ==
-$1 Ñ” уж заблокованый(а). Хочете змінити наÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ?',
+'ipb-needreblock' => '$1 Ñ” уж заблокованый(а). Хочете змінити наÑÑ‚Ð°Ð²Ð»Ñ—Ð½Ñ Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Інше блокованÑ|Іншы блокованÑ}}',
+'unblock-hideuser' => 'Того хоÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð½Ðµ можете одблоковати, бо ёго Ñ–Ð¼Ñ Ñ…Ð¾ÑÐ½Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ Ð±Ñ‹Ð»Ð¾ Ñховане.',
'ipb_cant_unblock' => 'Хыба: Ð‘Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ñ Ð· ID $1 не было найджене. ХоÑнователь уж може быв одблокованый.',
'ipb_blocked_as_range' => 'Хыба: IP-адреÑа $1 не Ñ” блокована прÑмо а так єй не Ñ” можне одблоковати. Є чаÑтёв заблокованого роÑÑÑгу $2, котрый може быти одблокованый.',
'ip_range_invalid' => 'Ðеплатный IP роÑÑÑг.',
@@ -2245,6 +2323,7 @@ $1 Ñ” уж заблокованый(а). Хочете змінити наÑтаÐ
'unlockdbsuccesstext' => 'Датабаза {{grammar:2sg|{{SITENAME}}}} є одомкнута.',
'lockfilenotwritable' => 'До файлу замку датабазы ÑÑ Ð½Ðµ даÑÑ‚ÑŒ запиÑовати. Про Ð·Ð°Ð¼ÐºÐ½ÑƒÑ‚Ñ Ñ†Ñ– Ð¾Ð´Ð¾Ð¼ÐºÐ½ÑƒÑ‚Ñ Ð´Ð°Ñ‚Ð°Ð±Ð°Ð·Ñ‹ муÑить мати вебовый Ñервер права запиÑу до того файлу.',
'databasenotlocked' => 'Датабаза не є замкнута.',
+'lockedbyandtime' => '({{gender:$1|замкнув|замкла|замкнув}} $1 $2 v $3)',
# Move page
'move-page' => 'Переменовати „$1“',
@@ -2368,7 +2447,7 @@ $1 Ñ” уж заблокованый(а). Хочете змінити наÑтаÐ
'allmessagesdefault' => 'Штандартный текÑÑ‚',
'allmessagescurrent' => 'Ðктуалный текÑÑ‚',
'allmessagestext' => 'Тото Ñ” ÑпиÑок вшыткых повідомлїнь доÑтупных в проÑторї назв «MediaWiki».
-Кідь хочете приÑпівати ку локалізації Ñофтверу MediaWiki, навщівте [http://www.mediawiki.org/wiki/Localisation локалізачну Ñторінку на mediawiki.org] Ñ– [http://translatewiki.net Ñервер server translatewiki.net].',
+Кідь хочете приÑпівати ку локалізації Ñофтверу MediaWiki, навщівте [//www.mediawiki.org/wiki/Localisation локалізачну Ñторінку на mediawiki.org] Ñ– [//translatewiki.net Ñервер server translatewiki.net].',
'allmessagesnotsupportedDB' => '{{ns:special}}:AllMessages не є підпороване, бо wgUseDatabaseMessages є выпнуте.',
'allmessages-filter-legend' => 'Філтер',
'allmessages-filter' => 'Філтер Ð¿Ð¾Ð´Ð»Ñ Ñтаву:',
@@ -2504,9 +2583,7 @@ $1 Ñ” уж заблокованый(а). Хочете змінити наÑтаÐ
'tooltip-summary' => 'Задайте курте згорнутÑ',
# Metadata
-'nodublincore' => 'Ðа тім Ñервері Ñ” выпнуте Ò‘ÐµÐ½ÐµÑ€Ð¾Ð²Ð°Ð½Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ñ‚ Dublin Core RDF.',
-'nocreativecommons' => 'Ðа тім Ñервері Ñ” выпнуте Ò‘ÐµÐ½ÐµÑ€Ð¾Ð²Ð°Ð½Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ñ‚ Creative Commons RDF.',
-'notacceptable' => 'Тот вікі Ñервер не годен подати дата у форматї, котрый бы ваш кліент быв годен прочітати.',
+'notacceptable' => 'Тот вікі Ñервер не годен подати дата у форматї, котрый бы ваш кліент быв годен прочітати.',
# Attribution
'anonymous' => 'анонімный {{PLURAL:$1|хоÑнователь|хоÑнователÑ|хоÑнователї}} {{GRAMMAR:2sg|{{SITENAME}}}}',
@@ -2529,31 +2606,17 @@ $1 Ñ” уж заблокованый(а). Хочете змінити наÑтаÐ
'spam_blanking' => 'Вшыткы ревізії обÑÑговали одказы на $1, выпорожнєны',
# Info page
-'infosubtitle' => 'Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ Ñторінку',
-'numedits' => 'ЧіÑло едітовань (Ñторінка): $1',
-'numtalkedits' => 'ЧіÑло едітацій (Ñторінка діÑкузії): $1',
-'numwatchers' => 'ЧіÑло Ñлїдуючіх хоÑнователїв: $1',
-'numauthors' => 'ЧіÑло різных авторів (Ñторінка): $1',
-'numtalkauthors' => 'ЧіÑло різных авторів (діÑкузна Ñторінка): $1',
-
-# Math options
-'mw_math_png' => 'Ð’Ñе ґенеровати PNG',
-'mw_math_simple' => 'ПроÑте Ñк HTML, інакше PNG',
-'mw_math_html' => 'HTML кідь ÑÑ Ð´Ð°ÑÑ‚ÑŒ, інакше PNG',
-'mw_math_source' => 'Зохабити Ñк TeX (про текÑтовы переглÑдачі)',
-'mw_math_modern' => 'Рекомендоване про ÑучаÑны переглÑдачі',
-'mw_math_mathml' => 'MathML, кідь Ñ” підпороване (екÑперіменталне)',
-
-# Math errors
-'math_failure' => 'Ðе даÑÑ‚ÑŒ ÑÑ Ñ€Ð¾Ð·Ð¾Ð±Ñ€Ð°Ñ‚Ð¸ выраз',
-'math_unknown_error' => 'незнама хыба',
-'math_unknown_function' => 'незнама функціÑ',
-'math_lexing_error' => 'лекÑічна хыба',
-'math_syntax_error' => 'ÑінтакÑічна хыба',
-'math_image_error' => 'Злигала ÐºÐ¾Ð½Ð²ÐµÑ€Ð·Ñ–Ñ Ð´Ð¾ PNG; перевірте правилну іншталацію latex, dvips (або dvips + gs + convert)',
-'math_bad_tmpdir' => 'Ðе даÑÑ‚ÑŒ ÑÑ Ð·Ð°Ð¿Ð¸Ñати або Ñтворити дочаÑный адреÑарь про математіку',
-'math_bad_output' => 'Ðе даÑÑ‚ÑŒ ÑÑ Ð·Ð°Ð¿Ð¸Ñати або Ñтворити дочаÑный адреÑарь про выÑтуп математіку',
-'math_notexvc' => 'Хыбить ÑпуÑтительный texvc; поÑмотьте ÑÑ Ð´Ð¾ math/README на конфіґурацію.',
+'pageinfo-title' => 'Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ "$1"',
+'pageinfo-header-edits' => 'ЕдітованÑ',
+'pageinfo-header-watchlist' => 'Слїдованы Ñторінкы',
+'pageinfo-header-views' => 'ПереглÑды',
+'pageinfo-subjectpage' => 'Сторінка',
+'pageinfo-talkpage' => 'Сторінка діÑкузії',
+'pageinfo-watchers' => 'ЧіÑло Ñлїдуючіх',
+'pageinfo-edits' => 'ЧіÑло едітовань',
+'pageinfo-authors' => 'ЧіÑло різных авторів',
+'pageinfo-views' => 'ЧіÑло переглÑдів',
+'pageinfo-viewsperedit' => 'ЧіÑло зображінь на едітованÑ',
# Patrolling
'markaspatrolleddiff' => 'Означіти Ñк перевірене',
@@ -2590,23 +2653,26 @@ $1',
'nextdiff' => 'Ðовше ÐµÐ´Ñ–Ñ‚Ð¾Ð²Ð°Ð½Ñ â†’',
# Media information
-'mediawarning' => "'''Увага''': Тот тіп файлу може обÑÑговати шкодливый код.
+'mediawarning' => "'''Увага''': Тот тіп файлу може обÑÑговати шкодливый код.
Отворінём файлу можете огрозити Ñвій компютер.",
-'imagemaxsize' => "МакÑімалный розмір образку:<br />
+'imagemaxsize' => "МакÑімалный розмір образку:<br />
''(на Ñторінцї з попиÑом файлу)''",
-'thumbsize' => 'ВеликоÑÑ‚ÑŒ наглÑду:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Ñторінка|Ñторінкы|Ñторінок}}',
-'file-info' => 'розмір файлу: $1, MIME-тіп: $2',
-'file-info-size' => '$1 × $2 пікÑелів, розмір файлу: $3, MIME-тип: $4',
-'file-nohires' => '<small>Ðе Ñ” Ð²ÐµÑ€Ð·Ñ–Ñ Ð· векшым розлишінём.</small>',
-'svg-long-desc' => 'SVG-файл, номінално $1 × $2 пікÑелів, розмір файлу: $3',
-'show-big-image' => 'Повне розлишінÑ',
-'show-big-image-thumb' => '<small>Розмір переглÑду: $1 × $2 пікÑелів</small>',
-'file-info-gif-looped' => 'в Ñлючцї',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|Ñнимок|Ñнимкы|Ñнимків}}',
-'file-info-png-looped' => 'в Ñлючцї',
-'file-info-png-repeat' => 'повторÑне $1{{PLURAL:$1|раз|разы}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|Ñнимок|Ñнимкы|Ñнимків}}',
+'thumbsize' => 'ВеликоÑÑ‚ÑŒ наглÑду:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Ñторінка|Ñторінкы|Ñторінок}}',
+'file-info' => 'розмір файлу: $1, MIME-тіп: $2',
+'file-info-size' => '$1 × $2 пікÑелів, розмір файлу: $3, MIME-тип: $4',
+'file-info-size-pages' => '$1 × $2 пікÑелів, великоÑÑ‚ÑŒ файлу: $3, MIME тіп: $4, $5 {{PLURAL:$5|Ñторінка|Ñторінкы|Ñторінок}}',
+'file-nohires' => '<small>Ðе Ñ” Ð²ÐµÑ€Ð·Ñ–Ñ Ð· векшым розлишінём.</small>',
+'svg-long-desc' => 'SVG-файл, номінално $1 × $2 пікÑелів, розмір файлу: $3',
+'show-big-image' => 'Повне розлишінÑ',
+'show-big-image-preview' => '<small>Розмір того наглÑду: $1.</small>',
+'show-big-image-other' => '<small>Іншы розлишінÑ: $1.</small>',
+'show-big-image-size' => '$1 × $2 пікÑелів',
+'file-info-gif-looped' => 'в Ñлючцї',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|Ñнимок|Ñнимкы|Ñнимків}}',
+'file-info-png-looped' => 'в Ñлючцї',
+'file-info-png-repeat' => 'повторÑне $1{{PLURAL:$1|раз|разы}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|Ñнимок|Ñнимкы|Ñнимків}}',
# Special:NewFiles
'newimages' => 'ÒÐ°Ð»ÐµÑ€Ñ–Ñ Ð½Ð¾Ð²Ñ‹Ñ… файлів',
@@ -2634,14 +2700,20 @@ $1',
Кідь ÑÑ Ñ„Ð°Ð¹Ð» зедітовав по вытворїню, даÑкы параметры можуть не одповідати тому образку.',
'metadata-expand' => 'Вказати додатковы детайлы',
'metadata-collapse' => 'Сховати додатковы детайлы',
-'metadata-fields' => 'ÐŸÐ¾Ð»Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ñ‚, перерахованы у тім ÑпиÑку, будуть автоматічно зображены на Ñторінцї зображінÑ, вшыткы іншы будуть Ñхованы.
+'metadata-fields' => 'Положкы метадат образчіків зазначены у тім повідомлїню будуть на Ñторінцї з попиÑом выпиÑаны вÑе. Про Ð·Ð¾Ð±Ñ€Ð°Ð¶Ñ–Ð½Ñ Ð´Ñ€ÑƒÐ³Ñ‹Ñ… буде треба кликнути на „зобразити детайлы“.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Шырька',
@@ -2656,13 +2728,11 @@ $1',
'exif-ycbcrpositioning' => 'Ð£Ð¼Ñ–Ñ‰Ñ–Ð½Ñ Y Ñ– C',
'exif-xresolution' => 'Ð Ð¾Ð·Ð»Ð¸ÑˆÑ–Ð½Ñ Ð¾Ð±Ñ€Ð°Ð·ÐºÐ° на шырку',
'exif-yresolution' => 'Ð Ð¾Ð·Ð»Ð¸ÑˆÑ–Ð½Ñ Ð¾Ð±Ñ€Ð°Ð·ÐºÐ° на вышку',
-'exif-resolutionunit' => 'Єдиніцї X Ñ– Y розлишінÑ',
'exif-stripoffsets' => 'Ð£Ð¼Ñ–Ñ‰Ñ–Ð½Ñ Ð´Ð°Ñ‚ образка',
'exif-rowsperstrip' => 'ЧіÑло Ñ€Ñдків на 1 блок',
'exif-stripbytecounts' => 'ЧіÑло байтів на компрімованый блок',
'exif-jpeginterchangeformat' => 'ОфÑет ку JPEG SOI',
'exif-jpeginterchangeformatlength' => 'ЧіÑло байтів JPEG дат',
-'exif-transferfunction' => 'ТранÑферова функціÑ',
'exif-whitepoint' => 'Хромаціта білой точкы',
'exif-primarychromaticities' => 'Хромаціта прімарных фарб',
'exif-ycbcrcoefficients' => 'Коефіціенты матіцї про транÑÑ„Ð¾Ñ€Ð¼Ð¾Ð²Ð°Ð½Ñ Ñ„Ð°Ñ€ÐµÐ±Ð½Ñ‹Ñ… проÑторів',
@@ -2681,7 +2751,6 @@ $1',
'exif-compressedbitsperpixel' => 'Компрімачный режім',
'exif-pixelydimension' => 'Шырка образчіка',
'exif-pixelxdimension' => 'Вышка образчіка',
-'exif-makernote' => 'Позначкы выробника',
'exif-usercomment' => 'Додатковый коментарь',
'exif-relatedsoundfile' => 'ЗвÑзаный звуковый файл',
'exif-datetimeoriginal' => 'Оріґіналный датум Ñ– чаÑ',
@@ -2695,7 +2764,6 @@ $1',
'exif-exposureprogram' => 'ЕкÑпозічный проґрам',
'exif-spectralsensitivity' => 'Спектрална чутливоÑÑ‚ÑŒ',
'exif-isospeedratings' => 'СвітлочутливоÑÑ‚ÑŒ ISO',
-'exif-oecf' => 'OECF (коефіцієнт оптікоелектрічного перетворїнÑ)',
'exif-shutterspeedvalue' => 'ЕкÑпозічный Ñ‡Ð°Ñ (APEX)',
'exif-aperturevalue' => 'Цлона (APEX)',
'exif-brightnessvalue' => 'Ð¯Ñ (APEX)',
@@ -2708,7 +2776,6 @@ $1',
'exif-focallength' => 'ФокуÑна довжка',
'exif-subjectarea' => 'ÐŸÐ¾Ð»Ð¾Ð¶Ñ–Ð½Ñ Ð¾Ð±Ñ”ÐºÑ‚Ñƒ',
'exif-flashenergy' => 'Ð•Ð½ÐµÑ€Ò‘Ñ–Ñ Ð±Ð»ÐµÑку',
-'exif-spatialfrequencyresponse' => 'Одозва проÑторовой фреквенції',
'exif-focalplanexresolution' => 'X Ñ€Ð¾Ð·Ð»Ð¸ÑˆÑ–Ð½Ñ Ð¾Ð³Ð½Ñ–Ñковой ровины',
'exif-focalplaneyresolution' => 'Y Ñ€Ð¾Ð·Ð»Ð¸ÑˆÑ–Ð½Ñ Ð¾Ð³Ð½Ñ–Ñковой ровіны',
'exif-focalplaneresolutionunit' => 'Ð„Ð´Ð¸Ð½Ñ–Ñ†Ñ Ñ€Ð¾Ð·Ð»Ð¸ÑˆÑ–Ð½Ñ Ð¾Ð³Ð½Ñ–Ñковой ровины',
@@ -2717,7 +2784,6 @@ $1',
'exif-sensingmethod' => 'Тіп Ñензора',
'exif-filesource' => 'Жрідло файлу',
'exif-scenetype' => 'Тіп Ñцены',
-'exif-cfapattern' => 'Тіп фаребного філтра',
'exif-customrendered' => 'ХоÑновательÑка обробка',
'exif-exposuremode' => 'Режім екÑпозіції',
'exif-whitebalance' => 'Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾',
@@ -2762,10 +2828,79 @@ $1',
'exif-gpsareainformation' => 'Ðазва облаÑти GPS',
'exif-gpsdatestamp' => 'GPS датум',
'exif-gpsdifferential' => 'Діференціална ÐºÐ¾Ñ€ÐµÐºÑ†Ñ–Ñ GPS',
+'exif-jpegfilecomment' => 'Позначкы ку файлу JPEG',
+'exif-keywords' => 'Ключовы Ñлова',
+'exif-worldregioncreated' => 'ЧаÑÑ‚ÑŒ Ñвіту, де быв образчік зазначеный',
+'exif-countrycreated' => 'Країна, де быв образчік зазначеный',
+'exif-countrycodecreated' => 'Код країны, де быв образчік зазначеный',
+'exif-provinceorstatecreated' => 'ÐŸÑ€Ð¾Ð²Ñ–Ð½Ñ†Ñ–Ñ Ð°Ð±Ð¾ штат, де быв образчік зазначеный',
+'exif-citycreated' => 'МіÑто, де быв образчік зазначеный',
+'exif-sublocationcreated' => 'ЧаÑÑ‚ÑŒ міÑта, де быв образчік зазначеный',
+'exif-worldregiondest' => 'Вказана чаÑÑ‚ÑŒ Ñвіта',
+'exif-countrydest' => 'Вказана країна',
+'exif-countrycodedest' => 'Код вказаной країны',
+'exif-provinceorstatedest' => 'Вказана Ð¿Ñ€Ð¾Ð²Ñ–Ð½Ñ†Ñ–Ñ Ð°Ð±Ð¾ штат',
+'exif-citydest' => 'Вказане міÑто',
+'exif-sublocationdest' => 'Вказана чаÑÑ‚ÑŒ міÑта',
'exif-objectname' => 'Курта назва',
+'exif-specialinstructions' => 'Шпеціалны інштрукції',
+'exif-headline' => 'ÐадпиÑ',
+'exif-credit' => 'Ждідло/Додаватель',
+'exif-source' => 'Жрідло',
+'exif-editstatus' => 'Редакчный ÑÑ‚Ð°Ñ‚ÑƒÑ Ð¾Ð±Ñ€Ð°Ð·Ñ‡Ñ–ÐºÐ°',
+'exif-urgency' => 'УрґенціÑ',
+'exif-fixtureidentifier' => 'Ðазва Ñталого обєкту',
+'exif-locationdest' => 'Вказане міÑце',
+'exif-locationdestcode' => 'Код вказаного міÑцÑ',
+'exif-objectcycle' => 'Денный чаÑ, про котрый Ñ” файл Ñтановленый',
+'exif-contact' => 'Контактна інформаціÑ',
+'exif-writer' => 'Ðвтор попиÑу',
+'exif-languagecode' => 'Язык',
+'exif-iimversion' => 'IIM верзіÑ',
+'exif-iimcategory' => 'КатеґоріÑ',
+'exif-iimsupplementalcategory' => 'Додатковы катеґорії',
+'exif-datetimeexpires' => 'Ðе хоÑновати по',
+'exif-datetimereleased' => 'Про хоÑÐ½Ð¾Ð²Ð°Ð½Ñ Ð¾Ð´',
+'exif-originaltransmissionref' => 'Код про доглÑÐ´Ð°Ð½Ñ Ð¾Ñ€Ñ–Ò‘Ñ–Ð½Ð°Ð»Ð½Ð¾Ð¹ транÑміÑÑ–Ñ—',
+'exif-identifier' => 'Ідентіфікатор',
+'exif-lens' => 'ХоÑнованый обєктів',
+'exif-serialnumber' => 'Серіове чіÑло апарату',
+'exif-cameraownername' => 'ВлаÑтник апарату',
+'exif-label' => 'Ðалепка',
+'exif-datetimemetadata' => 'Датум поÑлїднёй управы метадат',
+'exif-nickname' => 'Ðеформална назва образчіка',
+'exif-rating' => 'Рейтінґ (1–5)',
+'exif-rightscertificate' => 'Цертіфікат Ñ€ÑÐ´Ð¶Ñ–Ð½Ñ Ð¿Ñ€Ð°Ð²',
+'exif-copyrighted' => 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð°Ð²Ñ‚Ð¾Ñ€ÑŒÑкых прав',
+'exif-copyrightowner' => 'ВлаÑтник авторьÑкых прав',
+'exif-usageterms' => 'УÑÐ»Ð¾Ð²Ñ–Ñ Ñ…Ð¾ÑнованÑ',
+'exif-webstatement' => 'Онлайн інформації о авторьÑкых правах',
+'exif-originaldocumentid' => 'Унікатне ID оріґіналного документу',
+'exif-licenseurl' => 'URL ліценції',
+'exif-morepermissionsurl' => 'Інформації о другім ліценцованю',
+'exif-attributionurl' => 'Кідь хоÑнуєте тото дїло, зазначте одказ',
+'exif-preferredattributionname' => 'Кідь хоÑнуєте тото дїло, зазначте автора',
+'exif-pngfilecomment' => 'Позначкы ку файлу PNG',
+'exif-disclaimer' => 'Ð’Ñ‹Ð»ÑƒÑ‡Ñ–Ð½Ñ Ð·Ð¾Ð´Ð¿Ð¾Ð²Ñ–Ð´Ð½Ð¾Ñти',
+'exif-contentwarning' => 'Ð£Ð¿Ð¾Ð·Ð¾Ñ€Ð½Ñ—Ð½Ñ ÐºÑƒ обÑÑгу',
+'exif-giffilecomment' => 'Позначкы ку файлу GIF',
+'exif-intellectualgenre' => 'Тіп положкы',
+'exif-subjectnewscode' => 'Код предмету',
+'exif-scenecode' => 'IPTC код Ñцены',
+'exif-event' => 'Зображена подїÑ',
+'exif-organisationinimage' => 'Зображена орґанізаціÑ',
+'exif-personinimage' => 'Зображена оÑоба',
+'exif-originalimageheight' => 'Вышка образчіка перед орїзанём',
+'exif-originalimagewidth' => 'Шырка образчіка перед орїзанём',
# EXIF attributes
'exif-compression-1' => 'ÐеÑтиÑнутый',
+'exif-compression-2' => '1-дімензіоналне Гуффманове ÐºÐ¾Ð´Ð¾Ð²Ð°Ð½Ñ Ð´Ð¾Ð²Ð¶ÐºÑ‹ бігу CCITT Group 3',
+'exif-compression-3' => 'ÐšÐ¾Ð´Ð¾Ð²Ð°Ð½Ñ Ñ„Ð°ÐºÑів CCITT Group 3',
+'exif-compression-4' => 'ÐšÐ¾Ð´Ð¾Ð²Ð°Ð½Ñ Ñ„Ð°ÐºÑів CCITT Group 4',
+
+'exif-copyrighted-true' => 'Хранене авторьÑкым правом',
+'exif-copyrighted-false' => 'Вольне дїло',
'exif-unknowndate' => 'Ðезнамый датум',
@@ -2781,6 +2916,8 @@ $1',
'exif-planarconfiguration-1' => 'формат «chunky»',
'exif-planarconfiguration-2' => 'формат «planar»',
+'exif-colorspace-65535' => 'Ðекаліброване',
+
'exif-componentsconfiguration-0' => 'не екзіÑтує',
'exif-exposureprogram-0' => 'Ðедефіноване',
@@ -2894,6 +3031,10 @@ $1',
'exif-gpslongitude-e' => 'Выходна довжка',
'exif-gpslongitude-w' => 'Западна довжка',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|метр|метра|метрів}} над уровнёв морÑ',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|метр|метра|метрів}} під уровнёв морÑ',
+
'exif-gpsstatus-a' => 'Ð’Ñ‹Ð¼Ñ–Ñ€Ñ‘Ð²Ð°Ð½Ñ Ð½Ðµ Ñ” закінчене',
'exif-gpsstatus-v' => 'МірÑÐ½Ñ Ð¼Ñ–Ð¼Ð¾ роботу',
@@ -2905,21 +3046,73 @@ $1',
'exif-gpsspeed-m' => 'міль/год',
'exif-gpsspeed-n' => 'узлів',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Кілометры',
+'exif-gpsdestdistance-m' => 'Мілї',
+'exif-gpsdestdistance-n' => 'МорьÑкы мілї',
+
+'exif-gpsdop-excellent' => 'ВынÑткова ($1)',
+'exif-gpsdop-good' => 'Добра ($1)',
+'exif-gpsdop-moderate' => 'Ð¡ÐµÑ€ÐµÐ´Ð½Ñ ($1)',
+'exif-gpsdop-fair' => 'Ðиже Ñереднёй ($1)',
+'exif-gpsdop-poor' => 'Бідна ($1)',
+
+'exif-objectcycle-a' => 'Лем дообіда',
+'exif-objectcycle-p' => 'Лем вечур',
+'exif-objectcycle-b' => 'Рано і вечур',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Справный курз',
'exif-gpsdirection-m' => 'Маґнетічный курз',
+'exif-ycbcrpositioning-1' => 'Центрованый',
+'exif-ycbcrpositioning-2' => 'У Ñебе',
+
+'exif-dc-contributor' => 'ПриÑпівателї',
+'exif-dc-coverage' => 'ПроÑторовы або чаÑовы роÑÑÑгы медіÑ',
+'exif-dc-date' => 'Датум (датумы)',
+'exif-dc-publisher' => 'Выдаватель',
+'exif-dc-relation' => 'ПовÑзаны медіÑ',
+'exif-dc-rights' => 'Права',
+'exif-dc-source' => 'Оріґіналне медіюм',
+'exif-dc-type' => 'Тіп медіÑ',
+
+'exif-rating-rejected' => 'Завергнуте',
+
+'exif-isospeedratings-overflow' => 'Понад 65535',
+
+'exif-iimcategory-ace' => 'Култура, ÑƒÐ¼ÐµÐ½Ñ Ñ– забава',
+'exif-iimcategory-clj' => 'Злочін і право',
+'exif-iimcategory-dis' => 'Гаварії Ñ– напаÑÑ‚ÑŒ',
+'exif-iimcategory-fin' => 'Економіка Ñ– бізніÑ',
+'exif-iimcategory-edu' => 'ЕдукаціÑ',
+'exif-iimcategory-evn' => 'Жывотне Ñередовище',
+'exif-iimcategory-hth' => 'ЗдоровÑ',
+'exif-iimcategory-hum' => 'ЛюдьÑкы залюбы',
+'exif-iimcategory-lab' => 'Праца',
+'exif-iimcategory-lif' => 'Вольный Ñ‡Ð°Ñ Ñ– жывотный штіл',
+'exif-iimcategory-pol' => 'Політіка',
+'exif-iimcategory-rel' => 'Віра Ñ– реліґіÑ',
+'exif-iimcategory-sci' => 'Ðаука Ñ– технолоґії',
+'exif-iimcategory-soi' => 'Соціална проблематіка',
+'exif-iimcategory-spo' => 'Шпорт',
+'exif-iimcategory-war' => 'Войны, конфлікты і непокої',
+'exif-iimcategory-wea' => 'ХвілÑ',
+
+'exif-urgency-normal' => 'Ðормалне ($1)',
+'exif-urgency-low' => 'Ðизка ($1)',
+'exif-urgency-high' => 'Ð’Ñ‹Ñока ($1)',
+'exif-urgency-other' => 'ХоÑнователём дефінована пріоріта ($1)',
+
# External editor support
'edit-externally' => 'Едітовати тот файл хоÑнувчі екÑтерну аплікацію',
-'edit-externally-help' => '(Вецей інформації найдете в [http://www.mediawiki.org/wiki/Manual:External_editors інштрукції про наÑтавлїнÑ].)',
+'edit-externally-help' => '(Вецей інформації найдете в [//www.mediawiki.org/wiki/Manual:External_editors інштрукції про наÑтавлїнÑ].)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'вшыткы',
-'imagelistall' => 'вшыткы',
-'watchlistall2' => 'вшыткы',
-'namespacesall' => 'вшыткы',
-'monthsall' => 'вшыткы',
-'limitall' => 'вшыткы',
+'watchlistall2' => 'вшыткы',
+'namespacesall' => 'вшыткы',
+'monthsall' => 'вшыткы',
+'limitall' => 'вшыткы',
# E-mail address confirmation
'confirmemail' => 'ÐŸÑ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶Ñ–Ð½Ñ Ð°Ð´Ñ€ÐµÑÑ‹ ел. пошты',
@@ -2994,17 +3187,25 @@ $1',
'trackbackdeleteok' => 'Trackback быв уÑпішно змазаный.',
# Delete conflict
-'deletedwhileediting' => "'''Увага:''' Ð¿Ð¾Ñ‡Ð°Ñ Ð²Ð°ÑˆÐ¾Ð¹ едітації была тота Ñторінка змазана!",
-'confirmrecreate' => 'ХоÑнователь [[User:$1|$1]] ([[User talk:$1|діÑкузіÑ]]) тоту Ñторінку змазав потім, Ñк Ñьте зачали едітовати з причінов:
+'deletedwhileediting' => "'''Увага:''' Ð¿Ð¾Ñ‡Ð°Ñ Ð²Ð°ÑˆÐ¾Ð¹ едітації была тота Ñторінка змазана!",
+'confirmrecreate' => 'ХоÑнователь [[User:$1|$1]] ([[User talk:$1|діÑкузіÑ]]) тоту Ñторінку змазав потім, Ñк Ñьте зачали едітовати з причінов:
: „$2“
Справды Ñобі хочете знову тоту Ñторінку Ñтворити?',
-'recreate' => 'Повторно Ñтворити',
+'confirmrecreate-noreason' => 'ХоÑнователь [[User:$1|$1]] ([[User talk:$1|діÑкузіÑ]]) тоту Ñторінку змазав потім, Ñк Ñьте зачали едітовати з причінов.
+ДоÑправды Ñобі хочете знову тоту Ñторінку обновити?',
+'recreate' => 'Повторно Ñтворити',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'ОчіÑтити кеш той Ñторінкы?',
'confirm-purge-bottom' => 'ÐÐºÑ‚ÑƒÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ Ñторінкы вымаже кеш Ñ– буде вказана найактуалнїша верзіÑ',
+# action=watch/unwatch
+'confirm-watch-button' => 'ОК',
+'confirm-watch-top' => 'Придати тоту Ñторінку до ÑпиÑку Ñлїдованых?',
+'confirm-unwatch-button' => 'ОК',
+'confirm-unwatch-top' => 'ВынÑти тоту Ñторінку зо Ñлїдованых?',
+
# Multipage image navigation
'imgmultipageprev' => 'â† Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ñторінка',
'imgmultipagenext' => 'далша Ñторінка →',
@@ -3046,14 +3247,14 @@ $1',
'watchlistedit-normal-legend' => 'Ð’Ñ‹Ð¼Ð°Ð·Ð°Ð½Ñ Ð½Ð°Ð´Ð¿Ð¸Ñів зо ÑпиÑок Ñлїдованых Ñторінок',
'watchlistedit-normal-explain' => 'Положкы вашого ÑпиÑка Ñлїдованых Ñторінок Ñуть вказаны ниже.
Тоту Ñторінку можете із ÑпиÑка одÑтранити так, же означіте єй коцочку Ñ– кликнете "{{int:Watchlistedit-normal-submit}}".
-Тыж можете [[Special:Watchlist/raw|едітовати ÑпиÑок в текÑтовій формі]].',
+Тыж можете [[Special:EditWatchlist/raw|едітовати ÑпиÑок в текÑтовій формі]].',
'watchlistedit-normal-submit' => 'ОдÑтранити положкы',
'watchlistedit-normal-done' => '{{PLURAL:$1|Была одÑтранена 1 положка|Были одÑтранены $1 положкы|Было одÑтранено $1 положок}} з Вашого ÑпиÑка Ñлїдованых Ñторінок:',
'watchlistedit-raw-title' => 'Едітовати Ñк текÑÑ‚',
'watchlistedit-raw-legend' => 'Ð•Ð´Ñ–Ñ‚Ð¾Ð²Ð°Ð½Ñ ÑпиÑку Ñлїдованых Ñторінок Ñк текÑту',
'watchlistedit-raw-explain' => 'Положкы на вашім ÑпиÑку Ñлїдованых Ñторінок Ñуть вказаны ниже. Можете Ñ—Ñ… придавати, одÑтранёвати ці мінити у вказанім ÑпиÑку - єден Ñ€Ñдок Ñ” єдна положка.
Про ÑƒÐ»Ð¾Ð¶Ñ–Ð½Ñ Ð·Ð¼Ñ–Ð½ ÑтиÑните ґомбічку „{{int:Watchlistedit-raw-submit}}“.
-СпиÑок едітованых Ñторінок можете тыж [[Special:Watchlist/edit|едітовати в штандартнім едіторі]].',
+СпиÑок едітованых Ñторінок можете тыж [[Special:EditWatchlist|едітовати в штандартнім едіторі]].',
'watchlistedit-raw-titles' => 'Положкы:',
'watchlistedit-raw-submit' => 'Ðктуалізовати ÑпиÑок',
'watchlistedit-raw-done' => 'Ваш ÑпиÑок Ñлїдованых Ñторінок быв актуалізованый.',
@@ -3070,33 +3271,33 @@ $1',
'duplicate-defaultsort' => 'Увага: Імпліцітный ключ ÑÐ¾Ñ€Ñ‚Ð¾Ð²Ð°Ð½Ñ (DEFAULTSORTKEY) „$2“ перепиÑує Ñкоре наÑтавлену годноту „$1“.',
# Special:Version
-'version' => 'ВерзіÑ',
-'version-extensions' => 'Ðаіншталованы роÑшырїнÑ',
-'version-specialpages' => 'Шпеціалны Ñторінкы',
-'version-parserhooks' => 'Припойны пункты парÑера',
-'version-variables' => 'Перемінны',
-'version-skins' => 'ВзглÑды',
-'version-other' => 'Інше',
-'version-mediahandlers' => 'ОбÑлуга медії',
-'version-hooks' => 'Припойны пункты',
-'version-extension-functions' => 'Функції розшыринÑ',
-'version-parser-extensiontags' => 'Приданы Ñінтактічны значкы',
-'version-parser-function-hooks' => 'Функціа парÑера',
-'version-skin-extension-functions' => 'РоÑшыруючі функції взглÑду',
-'version-hook-name' => 'Ðазва припойного пункту',
-'version-hook-subscribedby' => 'ПідпиÑаный на',
-'version-version' => '(Ð’ÐµÑ€Ð·Ñ–Ñ $1)',
-'version-license' => 'ЛіценціÑ',
-'version-poweredby-credits' => "Тота вікі біжыть на '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
-'version-poweredby-others' => 'іншы',
-'version-license-info' => 'MediaWiki Ñ” Ñлободный Ñофтвер; можете го шырити або управлÑти Ð¿Ð¾Ð´Ð»Ñ ÑƒÑловій GNU General Public License, выдаваной Free Software Foundation; будь Ð²ÐµÑ€Ð·Ñ–Ñ 2 той ліценції або (Ð¿Ð¾Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ уважінÑ) будьÑка пізнїша верзіÑ.
+'version' => 'ВерзіÑ',
+'version-extensions' => 'Ðаіншталованы роÑшырїнÑ',
+'version-specialpages' => 'Шпеціалны Ñторінкы',
+'version-parserhooks' => 'Припойны пункты парÑера',
+'version-variables' => 'Перемінны',
+'version-antispam' => 'Охрана перед Ñпамом',
+'version-skins' => 'ВзглÑды',
+'version-other' => 'Інше',
+'version-mediahandlers' => 'ОбÑлуга медії',
+'version-hooks' => 'Припойны пункты',
+'version-extension-functions' => 'Функції розшыринÑ',
+'version-parser-extensiontags' => 'Приданы Ñінтактічны значкы',
+'version-parser-function-hooks' => 'Функціа парÑера',
+'version-hook-name' => 'Ðазва припойного пункту',
+'version-hook-subscribedby' => 'ПідпиÑаный на',
+'version-version' => '(Ð’ÐµÑ€Ð·Ñ–Ñ $1)',
+'version-license' => 'ЛіценціÑ',
+'version-poweredby-credits' => "Тота вікі біжыть на '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001–$1 $2.",
+'version-poweredby-others' => 'іншы',
+'version-license-info' => 'MediaWiki Ñ” Ñлободный Ñофтвер; можете го шырити або управлÑти Ð¿Ð¾Ð´Ð»Ñ ÑƒÑловій GNU General Public License, выдаваной Free Software Foundation; будь Ð²ÐµÑ€Ð·Ñ–Ñ 2 той ліценції або (Ð¿Ð¾Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ уважінÑ) будьÑка пізнїша верзіÑ.
MediaWiki Ñ” діÑтрібуована в надїї, же буде хоÑновна, але БЕЗ БУДЬЯКОЙ ЗÐРУКЫ; не давають ÑÑ Ð°Ð½Ð¸ зарукы ПРОДÐЙÐОСТИ або Ð’ÐЛУШÐОСТИ ПРО СТÐÐОВЛЕÐЫЙ ЦІЛЬ. Детайлы ÑÑ Ð´Ð¾Ñ‡Ñ–Ñ‚Ð°Ñ‚Ðµ в текÑÑ‚Ñ— GNU General Public License.
-[{{SERVER}}{{SCRIPTPATH}}/COPYING Kopii GNU General Public License] Ñьте мали обтримати вєдно з тым проґрамом, кідь нїт, напиште на Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA або [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html ÑÑ– єй прочітайте онлайн].',
-'version-software' => 'Іншталованый Ñофтвер',
-'version-software-product' => 'Продукт',
-'version-software-version' => 'ВерзіÑ',
+[{{SERVER}}{{SCRIPTPATH}}/COPYING Kopii GNU General Public License] Ñьте мали обтримати вєдно з тым проґрамом, кідь нїт, напиште на Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA або [//www.gnu.org/licenses/old-licenses/gpl-2.0.html ÑÑ– єй прочітайте онлайн].',
+'version-software' => 'Іншталованый Ñофтвер',
+'version-software-product' => 'Продукт',
+'version-software-version' => 'ВерзіÑ',
# Special:FilePath
'filepath' => 'Стежка ку файлу',
@@ -3107,22 +3308,22 @@ MediaWiki Ñ” діÑтрібуована в надїї, же буде хоÑноÐ
Ðазву файлу вложте без Ð¾Ð·Ð½Ð°Ñ‡Ñ–Ð½Ñ "{{ns:file}}:" .',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'ГлÑÐ´Ð°Ð½Ñ Ð´ÑƒÐ¿Ð»Ñ–ÐºÐ°Ñ‚Ð½Ñ‹Ñ… файлів',
-'fileduplicatesearch-summary' => 'ГлÑÐ´Ð°Ð½Ñ Ð´ÑƒÐ¿Ð»Ñ–Ñ†Ñ–Ñ‚Ð½Ñ‹Ñ… файлів ÑÑ Ð±Ð°Ð·ÑƒÑ” на Ñ—Ñ… геш функції.
-
-Уведьте назву файлу без Ð¾Ð·Ð½Ð°Ñ‡Ñ–Ð½Ñ "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'ГлÑÐ´Ð°Ð½Ñ Ð´ÑƒÐ¿Ð»Ñ–ÐºÐ°Ñ‚Ñ–Ð²',
-'fileduplicatesearch-filename' => 'Ðазва файлу:',
-'fileduplicatesearch-submit' => 'ГлÑдати',
-'fileduplicatesearch-info' => '$1 × $2 пікÑелів<br />Розмір файлу: $3<br />MIME-тіп: $4',
-'fileduplicatesearch-result-1' => 'Файл «$1» не має ідентичных файлів.',
-'fileduplicatesearch-result-n' => 'Файл «$1» має {{PLURAL:$2|1 ідентичный дуплікат|$2 ідентичных дуплікатів}}.',
+'fileduplicatesearch' => 'ГлÑÐ´Ð°Ð½Ñ Ð´ÑƒÐ¿Ð»Ñ–ÐºÐ°Ñ‚Ð½Ñ‹Ñ… файлів',
+'fileduplicatesearch-summary' => 'ГлÑÐ´Ð°Ð½Ñ Ð´ÑƒÐ¿Ð»Ñ–Ñ†Ñ–Ñ‚Ð½Ñ‹Ñ… файлів ÑÑ Ð±Ð°Ð·ÑƒÑ” на Ñ—Ñ… геш функції.',
+'fileduplicatesearch-legend' => 'ГлÑÐ´Ð°Ð½Ñ Ð´ÑƒÐ¿Ð»Ñ–ÐºÐ°Ñ‚Ñ–Ð²',
+'fileduplicatesearch-filename' => 'Ðазва файлу:',
+'fileduplicatesearch-submit' => 'ГлÑдати',
+'fileduplicatesearch-info' => '$1 × $2 пікÑелів<br />Розмір файлу: $3<br />MIME-тіп: $4',
+'fileduplicatesearch-result-1' => 'Файл «$1» не має ідентичных файлів.',
+'fileduplicatesearch-result-n' => 'Файл «$1» має {{PLURAL:$2|1 ідентичный дуплікат|$2 ідентичных дуплікатів}}.',
+'fileduplicatesearch-noresults' => 'Файл з назвов «$1» ненайдженый.',
# Special:SpecialPages
'specialpages' => 'Шпеціалны Ñторінкы',
'specialpages-note' => '----
-* Ðормалны шпеціалны Ñторінкы.
-* <strong class="mw-specialpagerestricted">Шпеціалны Ñторінкы з&nbsp;обмедженым приÑтупом</strong>',
+* Звычайны шпеціалны Ñторінкы.
+* <span class="mw-specialpagerestricted">Шпеціалны Ñторінкы з&nbsp;обмедженым приÑтупом</span>
+* <span class="mw-specialpagecached">Кешованы шпеціалны Ñторінкы</span>',
'specialpages-group-maintenance' => 'Технічны репорты',
'specialpages-group-other' => 'Іншы',
'specialpages-group-login' => 'ÐŸÑ€Ð¸Ð³Ð¾Ð»Ð¾ÑˆÑ–Ð½Ñ / реґіÑтраціÑ',
diff --git a/languages/messages/MessagesRup.php b/languages/messages/MessagesRup.php
new file mode 100644
index 00000000..1d49ad6a
--- /dev/null
+++ b/languages/messages/MessagesRup.php
@@ -0,0 +1,224 @@
+<?php
+/** Aromanian (Armãneashce)
+ *
+ * See MessagesQqq.php for message documentation incl. usage of parameters
+ * To improve a translation please visit http://translatewiki.net
+ *
+ * @ingroup Language
+ * @file
+ *
+ * @author Dumitrachi T. Fundu
+ * @author Hakka
+ */
+
+$messages = array(
+# Dates
+'sunday' => 'Dumãnicã',
+'monday' => 'Lune',
+'tuesday' => 'Martsã',
+'wednesday' => 'Njercure',
+'thursday' => 'Gioia',
+'friday' => 'Vinirã',
+'saturday' => 'Sãmbãtã',
+'january' => 'Yinar',
+'february' => 'Shcurtu',
+'march' => 'Martsu',
+'april' => 'Aprir',
+'may_long' => 'Mailu',
+'june' => 'Cirishar',
+'july' => 'Alunar',
+'august' => 'Avgustu',
+'september' => 'Yizmaciunjle',
+'october' => 'Xumedru',
+'november' => 'Brumar',
+'december' => 'Andreulu',
+'january-gen' => 'Yinar',
+'february-gen' => 'Shcurtu',
+'march-gen' => 'Martsu',
+'april-gen' => 'Aprir',
+'may-gen' => 'Mailu',
+'june-gen' => 'Cirishar',
+'july-gen' => 'Alunar',
+'august-gen' => 'Avgustu',
+'september-gen' => 'Yizmaciunjle',
+'october-gen' => 'Xumedru',
+'november-gen' => 'Brumar',
+'december-gen' => 'Andreulu',
+
+'article' => 'Articlu',
+'cancel' => 'Alasã',
+'mytalk' => 'Zburare-a mea',
+'navigation' => 'Navigatsia',
+
+# Cologne Blue skin
+'qbedit' => 'Alãxiri',
+'qbspecialpages' => 'Frãndzã spetsiale',
+
+'help' => 'Agiutor',
+'search' => 'Caftã',
+'searchbutton' => 'Caftã',
+'go' => 'Du-vã',
+'searcharticle' => 'Du-vã',
+'history_short' => 'Istoria',
+'printableversion' => 'Verzia ti tipuseare',
+'permalink' => 'Ligãtura permanentã',
+'edit' => 'Alãxiri',
+'delete' => 'Ashcirdzire',
+'protect' => 'Apurã',
+'talk' => 'Discusiur',
+'toolbox' => 'Cutia di hãlate',
+'otherlanguages' => 'Pi alte limbe',
+'jumptonavigation' => 'Navigatsia',
+'jumptosearch' => 'Caftã',
+
+# 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).
+'currentevents' => 'Evenimente di tora',
+'disclaimers' => 'Nipricunuschire',
+'edithelp' => 'Agiutor ti alãxire',
+'mainpage' => 'Prota frãndzã',
+'mainpage-description' => 'Prota frãndzã',
+'portal' => 'Portal-a comunitatiljei',
+
+'newmessageslink' => 'dimãndare nao',
+'youhavenewmessagesmulti' => 'Avets nãi dimãndãri pi $1',
+'editsection' => 'Alãxiri',
+'editold' => 'Alãxiri',
+
+# Short words for each namespace, by default used in the namespace tab in monobook
+'nstab-main' => 'Articlu',
+'nstab-user' => 'Frãndza-a ufilizitirolui',
+'nstab-template' => 'Shablon',
+
+# General errors
+'viewsource' => 'Videts-u fãntãnã',
+
+# Login and logout pages
+'welcomecreation' => '== Ghine vinish, $1 ==
+
+Isape a vostrã ira adratã. Nu agãrshits s-le alãxits alidzerle-a vostre ti {{SITENAME}}.',
+'yourname' => 'Numa di ufilizitor:',
+'yourpassword' => 'Cljao:',
+'yourpasswordagain' => 'Bãgats-u cljao iara:',
+'remembermypassword' => 'Apurã-u ligãtura-a mea pi compiuterlu aistu (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'login' => 'Ligats-vã',
+'userlogin' => 'Ligats-vã / Fãtsets Isape',
+'logout' => 'Disligats-vã',
+'userlogout' => 'Disligats-vã',
+'notloggedin' => 'Nu hits ligats',
+'createaccount' => 'Fãtsets Isape',
+'gotaccountlink' => 'Ligats-vã',
+
+# Edit pages
+'summary' => 'Rezime:',
+'minoredit' => 'Aistã easte alãxire njicã',
+'watchthis' => 'Mutrits-u frãndzã aistã',
+'savearticle' => 'Avigljats-u frãndzã',
+'showpreview' => 'Spuni u-privideare',
+'showdiff' => 'Spuni le-alãxirle',
+'whitelistedittitle' => 'Lipseashce s-vã ligats ta s-alãxits',
+'loginreqlink' => 'Ligats-vã',
+
+# Search results
+'powersearch' => 'Caftã',
+
+# Preferences page
+'preferences' => 'Alidzerle-a meale',
+'mypreferences' => 'Alidzerle-a meale',
+'prefsnologin' => 'Nu hits ligats',
+'searchresultshead' => 'Caftã',
+'youremail' => 'E-mail:',
+'username' => 'Numa di ufilizitor:',
+
+# Recent changes
+'recentchanges' => 'Alãxiri',
+
+# Recent changes linked
+'recentchangeslinked' => 'Alãxiri ligate',
+'recentchangeslinked-feed' => 'Alãxiri ligate',
+'recentchangeslinked-toolbox' => 'Alãxiri ligate',
+
+# Upload
+'upload' => 'Pitritsets file',
+'uploadbtn' => 'Pitritsets file',
+'uploadnologin' => 'Nu hits ligats',
+'filedesc' => 'Rezime',
+'watchthisupload' => 'Mutrits-u frãndzã aistã',
+
+# Random page
+'randompage' => 'Frãndzã di nipandicã',
+
+'brokenredirects-edit' => 'Alãxiri',
+'brokenredirects-delete' => 'Ashcirdzire',
+
+# Miscellaneous special pages
+'newpages-username' => 'Numa di ufilizitor:',
+'move' => 'Tradzets',
+'movethispage' => 'Tradzets-u frãndza aistã',
+
+# Book sources
+'booksources-go' => 'Du-vã',
+
+# Special:AllPages
+'allpagessubmit' => 'Du-vã',
+
+# Watchlist
+'watchlist' => 'Lista-a mea di videare',
+'mywatchlist' => 'Lista-a mea di videare',
+'watchnologin' => 'Nu hits ligats',
+'watch' => 'Videts',
+'watchthispage' => 'Mutrits-u frãndzã aistã',
+'unwatch' => 'Azãptãsits videare',
+
+# Protect
+'prot_1movedto2' => '[[$1]] s-trãdzi tu [[$2]]',
+
+# Restrictions (nouns)
+'restriction-edit' => 'Alãxiri',
+'restriction-move' => 'Tradzets',
+
+# Undelete
+'undelete-search-submit' => 'Caftã',
+
+# Contributions
+'contributions' => 'Ufilizitor:Contributsiur',
+'mycontris' => 'Contributsiile-a meale',
+
+'sp-contributions-submit' => 'Caftã',
+
+# What links here
+'whatlinkshere' => 'Tsi s-leadze cu aistu',
+
+# Block/unblock
+'ipbreason' => 'Itia:',
+'ipblocklist-submit' => 'Caftã',
+
+# Move page
+'move-page-legend' => 'Tradzets-u frãndzã',
+'movearticle' => 'Tradzets-u frãndzã:',
+'move-watch' => 'Mutrits-u frãndzã aistã',
+'movepagebtn' => 'Tradzets-u frãndzã',
+'movedto' => 'tradzitã tu',
+'1movedto2' => '[[$1]] s-trãdzi tu [[$2]]',
+'movereason' => 'Itia:',
+
+# Namespace 8 related
+'allmessages' => 'Dimãndãri systemitse',
+
+# Tooltip help for the actions
+'tooltip-pt-preferences' => 'Alidzerle-a meale',
+'tooltip-pt-logout' => 'Disligats-vã',
+'tooltip-p-logo' => 'Prota frãndzã',
+
+# Special:NewFiles
+'ilsubmit' => 'Caftã',
+
+# Multipage image navigation
+'imgmultigo' => 'Du-vã!',
+
+# Table pager
+'table_pager_limit_submit' => 'Du-vã',
+
+# Special:SpecialPages
+'specialpages' => 'Frãndzã spetsiale',
+
+);
diff --git a/languages/messages/MessagesRuq_cyrl.php b/languages/messages/MessagesRuq_cyrl.php
index 4eedb40a..30653f5a 100644
--- a/languages/messages/MessagesRuq_cyrl.php
+++ b/languages/messages/MessagesRuq_cyrl.php
@@ -155,8 +155,6 @@ $messages = array(
'extlink_tip' => 'Легајтул ÑœÑтернул (вец Ð¿Ñ€ÐµÑ„Ð¸ÐºÑ http://)',
'headline_sample' => 'ЕÑкрире Ñ-титлуÑ',
'headline_tip' => 'Титлу де нивел 2',
-'math_sample' => 'Интродуца формула иÑи',
-'math_tip' => 'Формула Ñ-Ð¼Ð°Ñ‚ÐµÐ¼Ð°Ñ‚Ð¸ÐºÑ (LaTeX)',
'nowiki_sample' => 'Интродуца но-Вики иÑи',
'nowiki_tip' => 'Ðо-Бики клашу',
'image_tip' => 'Сантигул инÑерат',
diff --git a/languages/messages/MessagesRuq_latn.php b/languages/messages/MessagesRuq_latn.php
index 6240a271..82f83d55 100644
--- a/languages/messages/MessagesRuq_latn.php
+++ b/languages/messages/MessagesRuq_latn.php
@@ -155,8 +155,6 @@ $messages = array(
'extlink_tip' => 'Legătul ķsternul (vec prefiks http://)',
'headline_sample' => "Eskrire s'titlus",
'headline_tip' => 'Titlu de nivel 2',
-'math_sample' => 'Introduca formula isi',
-'math_tip' => "Formula s'matematiks (LaTeX)",
'nowiki_sample' => 'Intorduca no-Wiki isi',
'nowiki_tip' => 'No-Wiki klaÅŸu',
'image_tip' => 'Santigul inserat',
diff --git a/languages/messages/MessagesSa.php b/languages/messages/MessagesSa.php
index 14571b65..8188f934 100644
--- a/languages/messages/MessagesSa.php
+++ b/languages/messages/MessagesSa.php
@@ -1,5 +1,5 @@
<?php
-/** Sanskrit (संसà¥à¤•à¥ƒà¤¤)
+/** Sanskrit (संसà¥à¤•à¥ƒà¤¤à¤®à¥)
*
* See MessagesQqq.php for message documentation incl. usage of parameters
* To improve a translation please visit http://translatewiki.net
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author Abhirama
* @author Bharata
* @author Bhawani Gautam
* @author Hemant wikikosh1
@@ -76,92 +77,93 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨à¤¦à¥à¤µà¤‚दà¥à¤µ' ),
+ 'Allmessages' => array( 'सरà¥à¤µà¤ªà¥à¤°à¤£à¤¾à¤²à¥€-संदेश' ),
+ 'Allpages' => array( 'सरà¥à¤µà¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
+ 'Ancientpages' => array( 'पूरà¥à¤µà¤¤à¤¨à¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
+ 'Blankpage' => array( 'रिकà¥à¤¤à¤ªà¥ƒà¤·à¥à¤ ' ),
+ 'Block' => array( 'सदसà¥à¤¯à¤ªà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§' ),
+ 'Blockme' => array( 'मदरà¥à¤¥à¥‡à¤ªà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§' ),
+ 'Booksources' => array( 'पà¥à¤¸à¥à¤¤à¤•à¤¸à¥à¤°à¥‹à¤¤' ),
'BrokenRedirects' => array( 'खणà¥à¤¡à¥€à¤¤à¤ªà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨' ),
- 'Disambiguations' => array( 'नि:संदिगà¥à¤§à¥€à¤•à¤°à¤£' ),
- 'Userlogin' => array( 'सदसà¥à¤¯à¤ªà¥à¤°à¤µà¥‡à¤¶à¤¨' ),
- 'Userlogout' => array( 'सदसà¥à¤¯à¤¬à¤¹à¤¿à¤°à¥à¤—मन' ),
+ 'Categories' => array( 'वरà¥à¤—ः' ),
+ 'ChangePassword' => array( 'सङà¥à¤•à¥‡à¤¤à¤¶à¤¬à¥à¤¦à¤ªà¥à¤¨:पà¥à¤°à¤¯à¥à¤•à¥à¤¤à¤¾' ),
+ 'Confirmemail' => array( 'विपतà¥à¤°à¤ªà¥à¤·à¥à¤Ÿà¤¿à¤•à¥ƒà¤¤à¥‡' ),
+ 'Contributions' => array( 'योगदानमà¥' ),
'CreateAccount' => array( 'सृजà¥à¤‰à¤ªà¤¯à¥‹à¤œà¤•à¤¸à¤‚जà¥à¤žà¤¾' ),
- 'Preferences' => array( 'इषà¥à¤Ÿà¤¤à¤®à¤¾à¤¨à¤¿' ),
- 'Watchlist' => array( 'निरीकà¥à¤·à¤¾_सूची' ),
- 'Recentchanges' => array( 'नवीनतम_परिवरà¥à¤¤à¤¨' ),
- 'Upload' => array( 'भारंनà¥à¤¯à¤¸à¥à¤¯à¤¤à¤¿' ),
+ 'Deadendpages' => array( 'निरागà¥à¤°à¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
+ 'DeletedContributions' => array( 'परितà¥à¤¯à¤¾à¤—ितयोगदान' ),
+ 'Disambiguations' => array( 'नि:संदिगà¥à¤§à¥€à¤•à¤°à¤£' ),
+ 'DoubleRedirects' => array( 'पà¥à¤¨à¤°à¥à¤¨à¤¿à¤°à¥à¤¦à¥‡à¤¶à¤¨à¤¦à¥à¤µà¤‚दà¥à¤µ' ),
+ 'Emailuser' => array( 'विपतà¥à¤°à¤¯à¥‹à¤œà¤•' ),
+ 'Export' => array( 'निरà¥à¤¯à¤¾à¤¤' ),
+ 'Fewestrevisions' => array( 'सà¥à¤µà¤²à¥à¤ªà¤ªà¤°à¤¿à¤µà¤°à¥à¤¤à¤¨' ),
+ 'FileDuplicateSearch' => array( 'अनà¥à¤•à¥ƒà¤¤à¤¸à¤‚चिकाशोध' ),
+ 'Filepath' => array( 'संचिकापथ' ),
+ 'Import' => array( 'आयात' ),
+ 'Invalidateemail' => array( 'अमानà¥à¤¯à¤µà¤¿à¤ªà¤¤à¥à¤°' ),
+ 'BlockList' => array( 'पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¸à¥‚ची' ),
+ 'LinkSearch' => array( 'समà¥à¤¬à¤¨à¥à¤§à¤¨à¥â€Œà¤¶à¥‹à¤§' ),
+ 'Listadmins' => array( 'पà¥à¤°à¤šà¤¾à¤²à¤•à¤¸à¥‚ची' ),
+ 'Listbots' => array( 'सà¥à¤µà¤¯à¤‚अनà¥à¤•à¥ƒà¤¸à¥‚ची' ),
'Listfiles' => array( 'चितà¥à¤°à¤¸à¥‚ची', 'संचिकासूचि' ),
- 'Newimages' => array( 'नूतनसंचिका', 'नूतनचितà¥à¤°à¤¾à¤¨à¤¿' ),
- 'Listusers' => array( 'सदसà¥à¤¯à¤¾à¤¸à¥‚ची' ),
'Listgrouprights' => array( 'गटअधिकारसूची' ),
- 'Statistics' => array( 'सांखà¥à¤¯à¤¿à¤•à¥€' ),
- 'Randompage' => array( 'अविशीषà¥à¤Ÿà¤ªà¥ƒà¤·à¥à¤ à¤®à¥' ),
+ 'Listredirects' => array( 'विचालनà¥â€Œà¤¸à¥‚ची' ),
+ 'Listusers' => array( 'सदसà¥à¤¯à¤¾à¤¸à¥‚ची' ),
+ 'Lockdb' => array( 'विदादà¥à¤µà¤¾à¤°à¤‚बनà¥à¤§à¥' ),
+ 'Log' => array( 'अङà¥à¤•à¤¨' ),
'Lonelypages' => array( 'अकलपृषà¥à¤Ÿà¤¾à¤¨à¤¿' ),
- 'Uncategorizedpages' => array( 'अवरà¥à¤—ीकृतपृषà¥à¤Ÿà¤¾à¤¨à¤¿' ),
- 'Uncategorizedcategories' => array( 'अवरà¥à¤—ीकृतवरà¥à¤—' ),
- 'Uncategorizedimages' => array( 'अवरà¥à¤—ीकृतसंचिका', 'अवरà¥à¤—ीकृतचितà¥à¤°à¤¾à¤¨à¤¿' ),
- 'Uncategorizedtemplates' => array( 'अवरà¥à¤—ीकृतफलकानि' ),
- 'Unusedcategories' => array( 'अपà¥à¤°à¤¯à¥‚कà¥à¤¤à¤µà¤°à¥à¤—' ),
- 'Unusedimages' => array( 'अपà¥à¤°à¤¯à¥‚कà¥à¤¤à¤¸à¤‚चिका' ),
- 'Wantedpages' => array( 'पà¥à¤°à¤¾à¤°à¥à¤¥à¤¿à¤¤à¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
- 'Wantedcategories' => array( 'पà¥à¤°à¤¾à¤°à¥à¤¥à¤¿à¤¤à¤µà¤°à¥à¤—' ),
- 'Wantedfiles' => array( 'पà¥à¤°à¤¾à¤°à¥à¤¥à¤¿à¤¤à¤¸à¤‚चिका' ),
- 'Wantedtemplates' => array( 'पà¥à¤°à¤¾à¤°à¥à¤¥à¤¿à¤¤à¤«à¤²à¤•à¤¾à¤¨à¤¿' ),
+ 'Longpages' => array( 'दीरà¥à¤˜à¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
+ 'MergeHistory' => array( 'इतिहाससंयोग' ),
+ 'MIMEsearch' => array( 'विविधामाप_(माईम)_शोधसि' ),
+ 'Mostcategories' => array( 'अधिकतमवरà¥à¤—' ),
+ 'Mostimages' => array( 'अधिकतमसमà¥à¤­à¤¨à¥à¤¦à¤¿à¤¨à¥_संचिका' ),
'Mostlinked' => array( 'अधिकतमसमà¥à¤­à¤¨à¥à¤¦à¤¿à¤¨à¥_पृषà¥à¤Ÿà¤¾à¤¨à¤¿', 'अधिकतमसमà¥à¤­à¤¨à¥à¤¦à¤¿à¤¨à¥' ),
'Mostlinkedcategories' => array( 'अधिकतमसमà¥à¤­à¤¨à¥à¤¦à¤¿à¤¨à¥_वरà¥à¤—' ),
'Mostlinkedtemplates' => array( 'अधिकतमसमà¥à¤­à¤¨à¥à¤¦à¤¿à¤¨à¥_फलकानि' ),
- 'Mostimages' => array( 'अधिकतमसमà¥à¤­à¤¨à¥à¤¦à¤¿à¤¨à¥_संचिका' ),
- 'Mostcategories' => array( 'अधिकतमवरà¥à¤—' ),
'Mostrevisions' => array( 'अधिकतमपरिवरà¥à¤¤à¤¨' ),
- 'Fewestrevisions' => array( 'सà¥à¤µà¤²à¥à¤ªà¤ªà¤°à¤¿à¤µà¤°à¥à¤¤à¤¨' ),
- 'Shortpages' => array( 'लघà¥à¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
- 'Longpages' => array( 'दीरà¥à¤˜à¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
+ 'Movepage' => array( 'पृषà¥à¤ à¤¸à¥à¤¥à¤¾à¤¨à¤¾à¤¨à¥à¤¤à¤°' ),
+ 'Mycontributions' => array( 'मदीययोगदानमà¥' ),
+ 'Mypage' => array( 'मम_पृषà¥à¤Ÿà¤®à¥' ),
+ 'Mytalk' => array( 'मदीयसंवादमà¥' ),
+ 'Newimages' => array( 'नूतनसंचिका', 'नूतनचितà¥à¤°à¤¾à¤¨à¤¿' ),
'Newpages' => array( 'नूतनपृषà¥à¤Ÿà¤¾à¤¨à¤¿' ),
- 'Ancientpages' => array( 'पूरà¥à¤µà¤¤à¤¨à¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
- 'Deadendpages' => array( 'निरागà¥à¤°à¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
+ 'PasswordReset' => array( 'सङà¥à¤•à¥‡à¤¤à¤¶à¤¬à¥à¤¦à¤ªà¥à¤¨:पà¥à¤°à¤¯à¥à¥à¤•à¥à¤¤à¤¾' ),
+ 'Popularpages' => array( 'लोकपà¥à¤°à¤¿à¤¯à¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
+ 'Preferences' => array( 'इषà¥à¤Ÿà¤¤à¤®à¤¾à¤¨à¤¿' ),
+ 'Prefixindex' => array( 'उपसरà¥à¤—अनà¥à¤•à¥à¤°à¤®à¤£à¥€' ),
'Protectedpages' => array( 'सà¥à¤°à¤•à¥à¤·à¤¿à¤¤à¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
'Protectedtitles' => array( 'सà¥à¤°à¤•à¥à¤·à¤¿à¤¤à¤¶à¤¿à¤°à¥à¤·à¤•à¤®à¥' ),
- 'Allpages' => array( 'सरà¥à¤µà¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
- 'Prefixindex' => array( 'उपसरà¥à¤—अनà¥à¤•à¥à¤°à¤®à¤£à¥€' ),
- 'Ipblocklist' => array( 'पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¸à¥‚ची' ),
- 'Specialpages' => array( 'विशेषपृषà¥à¤Ÿà¤¾à¤¨à¤¿' ),
- 'Contributions' => array( 'योगदानमà¥' ),
- 'Emailuser' => array( 'विपतà¥à¤°à¤¯à¥‹à¤œà¤•' ),
- 'Confirmemail' => array( 'विपतà¥à¤°à¤ªà¥à¤·à¥à¤Ÿà¤¿à¤•à¥ƒà¤¤à¥‡' ),
- 'Whatlinkshere' => array( 'किमपृषà¥à¤ _समà¥à¤¬à¤¦à¥à¤§à¤‚करोति' ),
+ 'Randompage' => array( 'अविशीषà¥à¤Ÿà¤ªà¥ƒà¤·à¥à¤ à¤®à¥' ),
+ 'Randomredirect' => array( 'अविशीषà¥à¤Ÿà¤µà¤¿à¤šà¤¾à¤²à¤¨à¥â€Œ' ),
+ 'Recentchanges' => array( 'नवीनतम_परिवरà¥à¤¤à¤¨' ),
'Recentchangeslinked' => array( 'नवीनतमसमà¥à¤­à¤¨à¥à¤¦à¤¿à¤¨_परिवरà¥à¤¤' ),
- 'Movepage' => array( 'पृषà¥à¤ à¤¸à¥à¤¥à¤¾à¤¨à¤¾à¤¨à¥à¤¤à¤°' ),
- 'Blockme' => array( 'मदरà¥à¤¥à¥‡à¤ªà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§' ),
- 'Booksources' => array( 'पà¥à¤¸à¥à¤¤à¤•à¤¸à¥à¤°à¥‹à¤¤' ),
- 'Categories' => array( 'वरà¥à¤—ः' ),
- 'Export' => array( 'निरà¥à¤¯à¤¾à¤¤' ),
- 'Version' => array( 'आवृतà¥à¤¤à¥€' ),
- 'Allmessages' => array( 'सरà¥à¤µà¤ªà¥à¤°à¤£à¤¾à¤²à¥€-संदेश' ),
- 'Log' => array( 'अङà¥à¤•à¤¨' ),
- 'Blockip' => array( 'सदसà¥à¤¯à¤ªà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§' ),
+ 'Revisiondelete' => array( 'आवृतà¥à¤¤à¥€à¤ªà¤°à¤¿à¤¤à¥à¤¯à¤¾à¤—' ),
+ 'Search' => array( 'शोध' ),
+ 'Shortpages' => array( 'लघà¥à¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
+ 'Specialpages' => array( 'विशेषपृषà¥à¤Ÿà¤¾à¤¨à¤¿' ),
+ 'Statistics' => array( 'सांखà¥à¤¯à¤¿à¤•à¥€' ),
+ 'Uncategorizedcategories' => array( 'अवरà¥à¤—ीकृतवरà¥à¤—' ),
+ 'Uncategorizedimages' => array( 'अवरà¥à¤—ीकृतसंचिका', 'अवरà¥à¤—ीकृतचितà¥à¤°à¤¾à¤¨à¤¿' ),
+ 'Uncategorizedpages' => array( 'अवरà¥à¤—ीकृतपृषà¥à¤Ÿà¤¾à¤¨à¤¿' ),
+ 'Uncategorizedtemplates' => array( 'अवरà¥à¤—ीकृतफलकानि' ),
'Undelete' => array( 'पà¥à¤°à¤¤à¥à¤¯à¤¾à¤¦à¤¿à¤¶à¥_परितà¥à¤¯à¤¾à¤—' ),
- 'Import' => array( 'आयात' ),
- 'Lockdb' => array( 'विदादà¥à¤µà¤¾à¤°à¤‚बनà¥à¤§à¥' ),
'Unlockdb' => array( 'विवृतविदादà¥à¤µà¤¾à¤°à¤‚तालक' ),
- 'Userrights' => array( 'योजकआधिकार' ),
- 'MIMEsearch' => array( 'विविधामाप_(माईम)_शोधसि' ),
- 'FileDuplicateSearch' => array( 'अनà¥à¤•à¥ƒà¤¤à¤¸à¤‚चिकाशोध' ),
- 'Unwatchedpages' => array( 'अनिरिकà¥à¤·à¥€à¤¤à¤ªà¥ƒà¤·à¥à¤ ' ),
- 'Listredirects' => array( 'विचालनà¥â€Œà¤¸à¥‚ची' ),
- 'Revisiondelete' => array( 'आवृतà¥à¤¤à¥€à¤ªà¤°à¤¿à¤¤à¥à¤¯à¤¾à¤—' ),
+ 'Unusedcategories' => array( 'अपà¥à¤°à¤¯à¥‚कà¥à¤¤à¤µà¤°à¥à¤—' ),
+ 'Unusedimages' => array( 'अपà¥à¤°à¤¯à¥‚कà¥à¤¤à¤¸à¤‚चिका' ),
'Unusedtemplates' => array( 'अपà¥à¤°à¤¯à¥‚कà¥à¤¤à¤¬à¤¿à¤‚बधर' ),
- 'Randomredirect' => array( 'अविशीषà¥à¤Ÿà¤µà¤¿à¤šà¤¾à¤²à¤¨à¥â€Œ' ),
- 'Mypage' => array( 'मम_पृषà¥à¤Ÿà¤®à¥' ),
- 'Mytalk' => array( 'मदीयसंवादमà¥' ),
- 'Mycontributions' => array( 'मदीययोगदानमà¥' ),
- 'Listadmins' => array( 'पà¥à¤°à¤šà¤¾à¤²à¤•à¤¸à¥‚ची' ),
- 'Listbots' => array( 'सà¥à¤µà¤¯à¤‚अनà¥à¤•à¥ƒà¤¸à¥‚ची' ),
- 'Popularpages' => array( 'लोकपà¥à¤°à¤¿à¤¯à¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
- 'Search' => array( 'शोध' ),
- 'Resetpass' => array( 'सङà¥à¤•à¥‡à¤¤à¤¶à¤¬à¥à¤¦à¤ªà¥à¤¨:पà¥à¤°à¤¯à¥à¤•à¥à¤¤à¤¾' ),
+ 'Unwatchedpages' => array( 'अनिरिकà¥à¤·à¥€à¤¤à¤ªà¥ƒà¤·à¥à¤ ' ),
+ 'Upload' => array( 'भारंनà¥à¤¯à¤¸à¥à¤¯à¤¤à¤¿' ),
+ 'Userlogin' => array( 'सदसà¥à¤¯à¤ªà¥à¤°à¤µà¥‡à¤¶à¤¨' ),
+ 'Userlogout' => array( 'सदसà¥à¤¯à¤¬à¤¹à¤¿à¤°à¥à¤—मन' ),
+ 'Userrights' => array( 'योजकआधिकार' ),
+ 'Version' => array( 'आवृतà¥à¤¤à¥€' ),
+ 'Wantedcategories' => array( 'पà¥à¤°à¤¾à¤°à¥à¤¥à¤¿à¤¤à¤µà¤°à¥à¤—' ),
+ 'Wantedfiles' => array( 'पà¥à¤°à¤¾à¤°à¥à¤¥à¤¿à¤¤à¤¸à¤‚चिका' ),
+ 'Wantedpages' => array( 'पà¥à¤°à¤¾à¤°à¥à¤¥à¤¿à¤¤à¤ªà¥ƒà¤·à¥à¤Ÿà¤¾à¤¨à¤¿' ),
+ 'Wantedtemplates' => array( 'पà¥à¤°à¤¾à¤°à¥à¤¥à¤¿à¤¤à¤«à¤²à¤•à¤¾à¤¨à¤¿' ),
+ 'Watchlist' => array( 'निरीकà¥à¤·à¤¾_सूची' ),
+ 'Whatlinkshere' => array( 'किमपृषà¥à¤ _समà¥à¤¬à¤¦à¥à¤§à¤‚करोति' ),
'Withoutinterwiki' => array( 'आनà¥à¤¤à¤°à¤µà¤¿à¤•à¤¿à¤¹à¥€à¤¨' ),
- 'MergeHistory' => array( 'इतिहाससंयोग' ),
- 'Filepath' => array( 'संचिकापथ' ),
- 'Invalidateemail' => array( 'अमानà¥à¤¯à¤µà¤¿à¤ªà¤¤à¥à¤°' ),
- 'Blankpage' => array( 'रिकà¥à¤¤à¤ªà¥ƒà¤·à¥à¤ ' ),
- 'LinkSearch' => array( 'समà¥à¤¬à¤¨à¥à¤§à¤¨à¥â€Œà¤¶à¥‹à¤§' ),
- 'DeletedContributions' => array( 'परितà¥à¤¯à¤¾à¤—ितयोगदान' ),
);
$magicWords = array(
@@ -301,7 +303,7 @@ $messages = array(
'tog-shownumberswatching' => 'निरीकà¥à¤·à¤®à¤¾à¤£à¤¾à¤¨à¤¾à¤‚ योजकानां संखà¥à¤¯à¤¾ दरà¥à¤¶à¥à¤¯à¤¤à¤¾à¤®à¥',
'tog-oldsig' => 'विदà¥à¤¯à¤®à¤¾à¤¨à¤‚ हसà¥à¤¤à¤¾à¤™à¥à¤•à¤¨à¤®à¥:',
'tog-fancysig' => 'हसà¥à¤¤à¤¾à¤•à¥à¤·à¤°à¤¾à¤£à¤¿ विकिपाठवतॠसनà¥à¤¤à¥ (सà¥à¤µà¤šà¤¾à¤²à¤¿à¤¤-संबंधनेभà¥à¤¯à¤ƒ रहितानि)।',
-'tog-externaleditor' => 'Use external editor by default (for experts only, needs special settings on your computer. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaleditor' => 'Use external editor by default (for experts only, needs special settings on your computer. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
'tog-externaldiff' => 'अकथिते (बाइ डिफालà¥à¤Ÿà¥ इति), बाहà¥à¤¯ अंतरकà¥à¤°à¤®à¤¾à¤¦à¥‡à¤¶à¤‚ पà¥à¤°à¤¯à¥‹à¤œà¤¯à¤¤à¥ (केवलेभà¥à¤¯à¤ƒ निपà¥à¤£à¥‡à¤­à¥à¤¯à¤ƒ, भवतः संगणके विशेषाः नà¥à¤¯à¤¾à¤¸à¤¾à¤ƒ आवशà¥à¤¯à¤•à¤¾à¤ƒ)।',
'tog-showjumplinks' => '"इतà¥à¤¯à¥‡à¤¤à¤¤à¥ पà¥à¤°à¤¤à¤¿ कूरà¥à¤¦à¤¯à¤¤à¥" इति संबंधनानि समरà¥à¤¥à¤¯à¤¤à¥à¥¤',
'tog-uselivepreview' => 'संपादनेन सहैव पà¥à¤°à¤¾à¤—à¥à¤¦à¥ƒà¤¶à¥à¤¯à¤‚ दरà¥à¤¶à¤¯à¤¤à¥ (जावालिपिः अपेकà¥à¤·à¥à¤¯à¤¤à¥‡) (पà¥à¤°à¤¯à¥‹à¤—ातà¥à¤®à¤•à¤®à¥)।',
@@ -398,13 +400,12 @@ The following {{PLURAL:$1|file is|$1 files are}} in the current category.',
'listingcontinuesabbrev' => 'आगामि.',
'index-category' => 'सूचकांकितानि पृषà¥à¤ à¤¾à¤£à¤¿',
'noindex-category' => 'असूचकांकितानि पृषà¥à¤ à¤¾à¤£à¤¿',
-
-'mainpagetext' => 'मीडियाविकि तॠसफलतया अनà¥à¤¤à¤ƒà¤¸à¥à¤¥à¤¾à¤ªà¤¿à¤¤à¤®à¤¸à¥à¤¤à¤¿',
+'broken-file-category' => 'भगà¥à¤¨à¥‡à¤­à¥à¤¯à¤ƒ संबनà¥à¤§à¤¨à¥‡à¤­à¥à¤¯à¤ƒ यà¥à¤•à¥à¤¤à¤¾à¤¨à¤¿ पृषà¥à¤ à¤¾à¤£à¤¿',
'about' => 'इतà¥à¤¯à¤¸à¥à¤®à¤¿à¤¨à¥ विषये:',
-'article' => 'लेखनमà¥',
+'article' => 'लेखः',
'newwindow' => '(नवे गवाकà¥à¤·à¥‡ इदमॠउदà¥à¤˜à¤¾à¤Ÿà¥à¤¯à¤¤à¥‡)',
-'cancel' => 'निरसनमà¥',
+'cancel' => 'निरसà¥à¤¯à¤¤à¤¾à¤®à¥',
'moredotdotdot' => 'अपि च...',
'mypage' => 'मम पृषà¥à¤ à¤®à¥',
'mytalk' => 'मम समà¥à¤­à¤¾à¤·à¤£à¤®à¥',
@@ -451,10 +452,10 @@ The following {{PLURAL:$1|file is|$1 files are}} in the current category.',
'history' => 'पृषà¥à¤ à¤¸à¥à¤¯ इतिहासः',
'history_short' => 'इतिहासः',
'updatedmarker' => 'मम पौरà¥à¤µà¤¿à¤•-आगमन-पशà¥à¤šà¤¾à¤¤à¥ परिवरà¥à¤¤à¤¿à¤¤à¤¾à¤¨à¤¿',
-'info_short' => 'समाचारः',
'printableversion' => 'मà¥à¤¦à¥à¤°à¤£à¤¯à¥‹à¤—à¥à¤¯à¤¾ आवृतà¥à¤¤à¤¿à¤ƒ',
'permalink' => 'सà¥à¤¥à¤¿à¤°à¤¸à¤®à¥à¤ªà¤°à¥à¤•à¤¤à¤¨à¥à¤¤à¥à¤ƒ',
'print' => 'मà¥à¤¦à¥à¤°à¥à¤¯à¤¤à¤¾à¤®à¥',
+'view' => 'दृशà¥à¤¯à¤¤à¤¾à¤®à¥',
'edit' => 'समà¥à¤ªà¤¾à¤¦à¥à¤¯à¤¤à¤¾à¤®à¥',
'create' => 'सृजà¥à¤¯à¤¤à¤¾à¤®à¥',
'editthispage' => 'इदं पृषà¥à¤ à¤‚ समà¥à¤ªà¤¾à¤¦à¥à¤¯à¤¤à¤¾à¤®à¥',
@@ -462,6 +463,7 @@ The following {{PLURAL:$1|file is|$1 files are}} in the current category.',
'delete' => 'विलà¥à¤ªà¥à¤¯à¤¤à¤¾à¤®à¥',
'deletethispage' => 'इदं पृषà¥à¤ à¤®à¥ अपाकà¥à¤°à¤¿à¤¯à¤¤à¤¾à¤®à¥',
'undelete_short' => '{{PLURAL:$1|à¤à¤•à¤‚ समà¥à¤ªà¤¾à¤¦à¤¨à¤‚|$1 समà¥à¤ªà¤¾à¤¦à¤¨à¤¾à¤¨à¤¿}} अनपाकरोतà¥',
+'viewdeleted_short' => 'दरà¥à¤¶à¥à¤¯à¤¤à¤¾à¤®à¥ {{PLURAL:$1|à¤à¤•à¥‹ विलà¥à¤ªà¥à¤¤à¤‚ समà¥à¤ªà¤¾à¤¦à¤¨à¤®à¥|$1 विलà¥à¤ªà¥à¤¤à¤¾à¤¨à¤¿ समà¥à¤ªà¤¾à¤¦à¤¨à¤¾à¤¨à¤¿}}',
'protect' => 'संरकà¥à¤·à¥à¤¯à¤¤à¤¾à¤®à¥',
'protect_change' => 'परिवरà¥à¤¤à¥à¤¯à¤¤à¤¾à¤®à¥',
'protectthispage' => 'इदं पृषà¥à¤ à¤‚ संरकà¥à¤·à¥à¤¯à¤¤à¤¾à¤®à¥',
@@ -545,6 +547,8 @@ $1',
'toc' => 'अनà¥à¤¤à¤°à¥à¤µà¤¿à¤·à¤¯à¤¾à¤ƒ',
'showtoc' => 'दरà¥à¤¶à¥à¤¯à¤¤à¤¾à¤®à¥',
'hidetoc' => 'गोपà¥à¤¯à¤¤à¤¾à¤®à¥',
+'collapsible-collapse' => 'संकोचà¥à¤¯à¤¤à¤¾à¤®à¥',
+'collapsible-expand' => 'विसà¥à¤¤à¥€à¤°à¥à¤¯à¤¤à¤¾à¤®à¥',
'thisisdeleted' => '$1 दरà¥à¤¶à¤¯à¥‡à¤¤à¥ वा पà¥à¤°à¤¤à¥à¤¯à¤¾à¤¨à¤¯à¥‡à¤¤à¥ वा?',
'viewdeleted' => '$1 दृशà¥à¤¯à¤¤à¤¾à¤®à¥ ?',
'restorelink' => '{{PLURAL:$1|à¤à¤•à¤®à¥ अपाकृतं संपादनमॠ|$1 अपाकृतानि संपादनानि}}',
@@ -555,6 +559,8 @@ $1',
'page-rss-feed' => '"$1" आरà¤à¤¸à¤à¤¸-पूरणमà¥',
'page-atom-feed' => '"$1" अणà¥à¤ªà¥‚रणमà¥',
'red-link-title' => '$1 (पृषà¥à¤ à¤®à¥ इदानीं यावतॠन रचितमà¥)',
+'sort-descending' => 'अवरोहिकà¥à¤°à¤®à¥‡à¤£ सजà¥à¤œà¤¯à¤¤à¥',
+'sort-ascending' => 'आरोहिकà¥à¤°à¤®à¥‡à¤£ सजà¥à¤œà¤¯à¤¤à¥',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'पृषà¥à¤ à¤®à¥',
@@ -591,6 +597,7 @@ $1',
"$1"
"$2" इति फलनातà¥à¥¤
समंकाधारे "$3:$4" इति तà¥à¤°à¥à¤Ÿà¤¿à¤°à¥à¤œà¤¾à¤¤à¤¾à¥¤',
+'laggedslavemode' => 'पà¥à¤°à¤¾à¤•à¥à¤ªà¥à¤°à¤¬à¥‹à¤§à¤¨à¤®à¥:असà¥à¤®à¤¿à¤¨à¥ पृषà¥à¤ à¥‡ सदà¥à¤¯à¥‹à¤œà¤¾à¤¤à¤¾à¤¨à¤¿ परिशोधनानि न सà¥à¤¯à¥à¤ƒ ।',
'readonly' => 'दतà¥à¤¤à¤§à¤¾à¤°à¤ƒ कीलितः',
'enterlockreason' => 'तनà¥à¤¤à¥à¤°à¤¿à¤¤à¥€à¤•à¤°à¤£à¤¸à¥à¤¯ कारणं ददातà¥, अपि च आकलितं ददातॠयतॠतनà¥à¤¤à¥à¤°à¤£à¤‚ कदा उदà¥à¤˜à¤¾à¤Ÿà¥à¤¯à¤¿à¤·à¥à¤¯à¤¤à¥‡à¥¤',
'readonlytext' => 'समंकाधारं वरà¥à¤¤à¤®à¤¾à¤¨à¤•à¤¾à¤²à¥‡ तनà¥à¤¤à¥à¤°à¤¿à¤¤à¤®à¤¸à¥à¤¤à¤¿ नूतनानॠपà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¥€à¤¨à¥ विरà¥à¤§à¥à¤¯ तथा च अनà¥à¤¯à¤¾à¤¨à¤¿ परिवरà¥à¤¤à¤¨à¤¾à¤¨à¤¿ विरà¥à¤§à¥à¤¯à¥¤ इदं नियमिततया समंकाधार परिचरà¥à¤¯à¤¾à¤½à¤°à¥à¤¥à¤‚ तथा सà¥à¤¯à¤¾à¤¤à¥à¥¤ ततà¥à¤ªà¤¶à¥à¤šà¤¾à¤¦à¤¿à¤¦à¤‚ सामानà¥à¤¯à¤¤à¤¾à¤‚ संपà¥à¤°à¤¾à¤ªà¥à¤¸à¥à¤¯à¤¤à¤¿à¥¤
@@ -612,7 +619,7 @@ $1',
'filerenameerror' => '$1 इति संचिकायाः $2 इति पà¥à¤¨à¤°à¥à¤¨à¤¾à¤®à¤•à¤°à¤£à¤‚ करà¥à¤¤à¥à¤‚ नाशकà¥à¤¨à¥‹à¤¤à¥à¥¤',
'filedeleteerror' => '$1 इति सञà¥à¤šà¤¿à¤•à¤¾à¤®à¥ अपाकरà¥à¤¤à¥à¤‚ नाशकà¥à¤¨à¥‹à¤¤à¥à¥¤',
'directorycreateerror' => '$1 इति निरà¥à¤¦à¥‡à¤¶à¤¿à¤•à¤¾à¤‚ सà¥à¤°à¤·à¥à¤Ÿà¥à¤‚ न अपारयतà¥',
-'filenotfound' => '"$1" इति संचिका न लबà¥à¤§à¤¾à¥¤',
+'filenotfound' => '"$1" इति सञà¥à¤šà¤¿à¤•à¤¾ न लबà¥à¤§à¤¾à¥¤',
'fileexistserror' => '$1 इति संचिकायां लिखितà¥à¤®à¥ अशकà¥à¤¤à¥‹à¤½à¤¸à¥à¤¤à¤¿à¥¤ संचिका वरà¥à¤¤à¤¤à¥‡ à¤à¤µà¥¤',
'unexpected' => 'अपà¥à¤°à¤¤à¥€à¤•à¥à¤·à¤¿à¤¤à¤®à¥‚लà¥à¤¯à¤®à¥ : "$1"="$2"।',
'formerror' => 'तà¥à¤°à¥à¤Ÿà¤¿à¤ƒ : पà¥à¤°à¤¾à¤°à¥‚पं समरà¥à¤ªà¤¯à¤¿à¤¤à¥à¤‚ न अपारयतà¥',
@@ -623,15 +630,23 @@ $1',
'badtitletext' => 'पà¥à¤°à¤¾à¤°à¥à¤¥à¤¿à¤¤à¤‚ पृषà¥à¤ -शीरà¥à¤·à¤•à¤‚ अमानà¥à¤¯à¤‚ वा, रिकà¥à¤¤à¤‚ वा, अथवा अशà¥à¤¦à¥à¤§à¤¤à¤¯à¤¾ संबंदà¥à¤§à¤‚ आंतरà¥à¤­à¤¾à¤·à¤¿à¤•à¤‚, आंतरà¥à¤µà¤¿à¤•à¥€à¤¯à¤‚ वा शीरà¥à¤·à¤•à¤®à¤¸à¥à¤¤à¤¿à¥¤ असà¥à¤®à¤¿à¤¨à¥ à¤à¤•à¤‚ à¤à¤•à¤¾à¤§à¤¿à¤•à¤¾à¤¨à¤¿ वा à¤à¤¤à¤¾à¤¦à¥ƒà¤¶à¤¾à¤£à¤¿ अकà¥à¤·à¤°à¤¾à¤£à¤¿ विदà¥à¤¯à¤¨à¥à¤¤à¥‡ येषां पà¥à¤°à¤¯à¥‹à¤—ं शीरà¥à¤·à¤•à¥‡à¤·à¥ अशकà¥à¤¯à¤®à¥à¥¤',
'perfcached' => 'अनà¥à¤ªà¤¦à¥‹à¤•à¥à¤¤à¤‚ समंकं कैशॠइतà¥à¤¯à¥‡à¤¤à¤¸à¥à¤®à¤¾à¤¦à¥ असà¥à¤¤à¤¿, अतः अदà¥à¤¯à¤¤à¤¨à¤‚ न सà¥à¤¯à¤¾à¤¤à¥à¥¤',
'perfcachedts' => 'अनà¥à¤ªà¤¦à¥‹à¤•à¥à¤¤à¤‚ समंकं कैशॠइतà¥à¤¯à¥‡à¤¤à¤¸à¥à¤®à¤¿à¤¨à¥ विदà¥à¤¯à¤¤à¥‡, तथा च $1 इतà¥à¤¯à¥‡à¤¤à¤¤à¥à¤¸à¤®à¤¯à¥‡ अनà¥à¤¤à¤¿à¤®à¤‚ वारं परिवरà¥à¤¤à¤¿à¤¤à¤®à¥à¥¤',
+'querypage-no-updates' => 'असà¥à¤¯ पृषà¥à¤ à¤¸à¥à¤¯ परिशोधनं विफलीकृतमसà¥à¤¤à¤¿ ।
+सदà¥à¤¯à¤ƒ अतà¥à¤°à¤¤à¥à¤¯à¤ƒ विषयः न नवीकà¥à¤°à¤¿à¤¯à¤¤à¥‡ ।',
+'wrong_wfQuery_params' => 'wfQuery() इतà¥à¤¯à¥‡à¤¤à¤¸à¥à¤¯ अशà¥à¤¦à¥à¤§à¤ƒ मानदणà¥à¤¡à¤ƒ दतà¥à¤¤à¤ƒ असà¥à¤¤à¤¿<br />
+कारà¥à¤¯à¤®à¥: $1<br />
+पृचà¥à¤›à¤¾: $2',
'viewsource' => 'सà¥à¤°à¥‹à¤¤à¤ƒ दृशà¥à¤¯à¤¤à¤¾à¤®à¥',
'viewsourcefor' => '$1 कृते',
+'actionthrottled' => 'कारà¥à¤¯à¤®à¥ अवरà¥à¤¦à¥à¤§à¤®à¥ असà¥à¤¤à¤¿',
+'actionthrottledtext' => "'सà¥à¤ªà¥à¤¯à¤¾à¤®à¥'इतà¥à¤¯à¥‡à¤¤à¤¸à¥à¤¯ अवरोधाय अलà¥à¤ªà¥‡ काले अतà¥à¤¯à¤§à¤¿à¤•à¤µà¤¾à¤°à¤®à¥ असà¥à¤¯ कारà¥à¤¯à¤•à¤°à¤£à¤®à¥ अवरà¥à¤¦à¥à¤§à¤®à¥ असà¥à¤¤à¤¿ ।
+कृपया किञà¥à¤šà¤¿à¤¤à¥à¤•à¤¾à¤²à¤¾à¤¨à¤¨à¥à¤¤à¤°à¤‚ पà¥à¤¨à¤ƒ पà¥à¤°à¤¯à¤¤à¥à¤¨à¤ƒ कà¥à¤°à¤¿à¤¯à¤¤à¤¾à¤®à¥ ।",
+'protectedpagetext' => 'समà¥à¤ªà¤¾à¤¦à¤¨à¤¸à¥à¤¯ अवरोधाय इदं पृषà¥à¤ à¤‚ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤à¤®à¤¸à¥à¤¤à¤¿ ।',
'viewsourcetext' => 'भवानॠà¤à¤¤à¤¸à¥à¤¯ पृषà¥à¤ à¤¸à¥à¤¯ सà¥à¤°à¥‹à¤¤à¤ƒ दà¥à¤°à¤·à¥à¤Ÿà¥à¤‚ तसà¥à¤¯ पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿à¤‚ करà¥à¤¤à¥à¤®à¥ अरà¥à¤¹à¤¤à¤¿à¥¤',
-'protectedinterface' => 'इदं पृषà¥à¤ à¤‚ तंतà¥à¤°à¤¾à¤‚शाय अनà¥à¤¤à¤°à¤¾à¤«à¤²à¤•à¤‚ ददाति, तथा च दà¥à¤°à¥à¤ªà¤¯à¥‹à¤—ातॠवारयितà¥à¤‚ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤à¥€à¤•à¥ƒà¤¤à¤®à¥à¥¤',
+'protectedinterface' => 'इदं पृषà¥à¤ à¤‚ तंतà¥à¤°à¤¾à¤‚शाय अनà¥à¤¤à¤°à¤¾à¤«à¤²à¤•à¤‚ ददाति, तथा च दà¥à¤°à¥à¤ªà¤¯à¥‹à¤—ातॠवारणाय सà¥à¤°à¤•à¥à¤·à¤¿à¤¤à¤®à¤¸à¥à¤¤à¤¿ ।',
'sqlhidden' => '(निगूढा à¤à¤¸à¤•à¥à¤¯à¥‚à¤à¤²à¥- पृचà¥à¤›à¤¾)',
'cascadeprotected' => 'इदं पृषà¥à¤ à¤‚ संपादनातॠसà¥à¤°à¤•à¥à¤·à¤¿à¤¤à¤®à¤¸à¥à¤¤à¤¿, यतः इदं अधोलिखितानां {{PLURAL:$1| पृषà¥à¤ à¤¸à¥à¤¯|पृषà¥à¤ à¤¾à¤£à¤¾à¤‚}} सà¥à¤°à¤•à¥à¤·à¤¾-सोपाने समाहितं वरà¥à¤¤à¤¤à¥‡à¥¤
$2',
'namespaceprotected' => 'भवानॠ"$1" इति नामाकाशे विदà¥à¤¯à¤®à¤¾à¤¨à¤¾à¤¨à¥ पृषà¥à¤ à¤¾à¤¨à¥ परिवरà¥à¤¤à¤¿à¤¤à¥à¤‚ अनà¥à¤®à¤¤à¤¿à¤‚ न धारयति।',
-'customcssjsprotected' => 'भवानॠइदं पृषà¥à¤ à¤‚ संपादयितà¥à¤‚ अनà¥à¤®à¤¤à¤¿à¤‚ न धारयसि, यतो हि असà¥à¤®à¤¿à¤¨à¥ अनà¥à¤¯à¤¸à¥à¤¯ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¥à¤ƒ वैयकà¥à¤¤à¤¿à¤•à¤¾à¤¨à¤¿ वरीयांसि सनà¥à¤¤à¤¿à¥¤',
'ns-specialprotected' => 'विशिषà¥à¤Ÿà¤¾à¤¨à¤¿ पृषà¥à¤ à¤¾à¤¨à¤¿ परिवरà¥à¤¤à¤¯à¤¿à¤¤à¥à¤‚ न शकà¥à¤¯à¤¨à¥à¤¤à¥‡à¥¤',
'titleprotected' => 'सदसà¥à¤¯ [[User:$1|$1]] इतà¥à¤¯à¤¨à¥‡à¤¨ à¤à¤¤à¤¤à¥-शीरà¥à¤·à¤•à¥€à¤¯à¤‚ पृषà¥à¤ à¤‚ सृजनातॠवारितमसà¥à¤¤à¤¿à¥¤
à¤à¤¤à¤¦à¤°à¥à¤¥à¤‚ पà¥à¤°à¤¦à¤¤à¥à¤¤à¤‚ कारणमॠ"$2"।',
@@ -669,6 +684,7 @@ $2',
'createaccount' => 'सदसà¥à¤¯à¤¤à¤¾ पà¥à¤°à¤¾à¤ªà¥à¤¯à¤¤à¤¾à¤®à¥',
'gotaccount' => 'पूरà¥à¤µà¤®à¥‡à¤µ योजकः असà¥à¤¤à¤¿ किमॠ? $1।',
'gotaccountlink' => 'पà¥à¤°à¤µà¤¿à¤¶à¥à¤¯à¤¤à¤¾à¤®à¥',
+'userlogin-resetlink' => 'पà¥à¤°à¤µà¥‡à¤¶à¤µà¤¿à¤µà¤°à¤£à¤¾à¤¨à¤¿ विसà¥à¤®à¥ƒà¤¤à¤¾à¤¨à¤¿ किमॠ?',
'createaccountmail' => 'ईपतà¥à¤°à¤¦à¥à¤µà¤¾à¤°à¤¾',
'createaccountreason' => 'कारणमà¥',
'badretype' => 'भवता पà¥à¤°à¤¦à¤¤à¥à¤¤à¥‡ कूटशबà¥à¤¦à¥‡ न खलॠसमाने सà¥à¤¤à¤ƒà¥¤ कृपया पà¥à¤¨à¤ƒ लिखतà¥à¥¤',
@@ -688,7 +704,7 @@ $2',
'nosuchuser' => 'ततà¥à¤° $1 इति नामà¥à¤¨à¤¾ न कोऽपि पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ विदà¥à¤¯à¤¤à¥‡à¥¤
पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¥ƒà¤¨à¤¾à¤®à¥à¤¨à¤¿ आंगà¥à¤²à¤²à¤¿à¤ªà¥‡à¤ƒ लघà¥à¤­à¤¿à¤ƒ दीरà¥à¤˜à¥ˆà¤¶à¥à¤š अकà¥à¤·à¤°à¥ˆà¤ƒ भिनà¥à¤¨à¤¤à¤¾ गणà¥à¤¯à¤¤à¥‡à¥¤
सà¥à¤µà¤•à¥€à¤¯à¤¾à¤‚ वरà¥à¤¤à¤¨à¥€à¤‚ पà¥à¤¨à¤°à¥€à¤•à¥à¤·à¤¤à¤¾à¤‚, अथवा [[Special:UserLogin/signup|नूतनां लेखां सृजतà¥]]।',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" इति नामà¥à¤¨à¤¾ न कोऽपि पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ वरà¥à¤¤à¤¤à¥‡à¥¤
+'nosuchusershort' => '"$1" इति नामà¥à¤¨à¤¾ न कोऽपि पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ विदà¥à¤¯à¤¤à¥‡à¥¤
सà¥à¤µà¤•à¥€à¤¯à¤¾à¤‚ वरà¥à¤¤à¤¨à¥€à¤‚ पà¥à¤¨à¤°à¥€à¤•à¥à¤·à¤¤à¤¾à¤®à¥à¥¤',
'nouserspecified' => 'भवता à¤à¤•à¤‚ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¥ƒà¤¨à¤¾à¤® अवशà¥à¤¯à¤®à¥‡à¤µ दातवà¥à¤¯à¤®à¥à¥¤',
'login-userblocked' => 'à¤à¤·à¤ƒ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ पà¥à¤°à¤¤à¤¿à¤¬à¤¨à¥à¤§à¤¿à¤¤à¤ƒ असà¥à¤¤à¤¿à¥¤ सतà¥à¤°à¤¾à¤°à¤®à¥à¤­à¤¾à¤¯ अनà¥à¤®à¤¤à¤¿à¤ƒ नासà¥à¤¤à¤¿à¥¤',
@@ -736,13 +752,14 @@ You may ignore this message, if this account was created in error.',
'usernamehasherror' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¥ƒà¤¨à¤¾à¤®à¥à¤¨à¤¿ हेशॠइतà¥à¤¯à¤•à¥à¤·à¤°à¤‚ (#) न अनà¥à¤¤à¤°à¥à¤­à¤µà¤¿à¤¤à¥à¤‚ शकà¥à¤¨à¥‹à¤¤à¤¿à¥¤',
'login-throttled' => 'भवता सदà¥à¤¯ à¤à¤µ पà¥à¤°à¤­à¥‚ततया पà¥à¤°à¤µà¥‡à¤¶à¤ªà¥à¤°à¤¯à¤¾à¤¸à¤¾à¤ƒ कृताः।
कृपया पà¥à¤¨à¤ƒ पà¥à¤°à¤¯à¤¾à¤¸à¤¾à¤°à¥à¤¥à¤‚ किंचितॠपà¥à¤°à¤¤à¥€à¤•à¥à¤·à¤¤à¤¾à¤®à¥à¥¤',
+'login-abort-generic' => 'भवतः पà¥à¤°à¤µà¥‡à¤¶à¤ªà¥à¤°à¤¯à¤¾à¤¸à¤ƒ विफलीभूतः - परितà¥à¤¯à¤•à¥à¤¤à¤ƒ',
'loginlanguagelabel' => 'भाषा : $1',
'suspicious-userlogout' => 'भवतः सतà¥à¤°à¤¾à¤¦à¥ बहिरà¥à¤—मनसà¥à¤¯ अनà¥à¤°à¥‹à¤§à¤ƒ असà¥à¤µà¥€à¤•à¥ƒà¤¤à¥‹à¤½à¤¸à¥à¤¤à¤¿, यसà¥à¤®à¤¾à¤¦à¥‡à¤¤à¤¤à¥ भगà¥à¤¨à¤¾à¤¦à¥‡à¤•à¤¸à¥à¤®à¤¾à¤¤à¥ बà¥à¤°à¤¾à¤‰à¤œà¤¼à¤°à¥à¤¤à¤ƒ अथवा सà¥à¤µà¤²à¥à¤ªà¤¸à¤žà¥à¤šà¤¯à¤¿-पà¥à¤°à¥‰à¤•à¥à¤¸à¤¿à¤¤à¤ƒ पà¥à¤°à¥‡à¤·à¤¿à¤¤ आसीतà¥à¥¤',
# E-mail sending
'php-mail-error-unknown' => 'पीà¤à¤šà¥à¤ªà¥€ इतà¥à¤¯à¥‡à¤¤à¤¸à¥à¤¯ mail() फलने अजà¥à¤žà¤¾à¤¤à¤¾ काऽपि तà¥à¤°à¥à¤Ÿà¤¿à¤°à¥à¤œà¤¾à¤¤à¤¾à¥¤',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'कूटशबà¥à¤¦à¤ƒ परिवरà¥à¤¤à¥à¤¯à¤¤à¤¾à¤®à¥',
'resetpass_announce' => 'भवानॠतातà¥à¤•à¤¾à¤²à¤¿à¤•-ईपतà¥à¤°à¤¦à¥à¤µà¤¾à¤°à¤¾ अतà¥à¤° पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤ƒ असà¥à¤¤à¤¿ ।
पà¥à¤°à¤µà¥‡à¤¶à¤¨à¤¸à¥à¤¯ समापनाय भवता अतà¥à¤° नूतनः कूटशबà¥à¤¦à¤ƒ दातवà¥à¤¯à¤ƒ:',
@@ -762,6 +779,18 @@ You may ignore this message, if this account was created in error.',
भवता पूरà¥à¤µà¥‡ à¤à¤µ सफलतया सà¥à¤µà¤•à¥€à¤¯à¤ƒ कूटशबà¥à¤¦à¤ƒ परिवरà¥à¤¤à¤¿à¤¤à¤ƒ सà¥à¤¯à¤¾à¤¤à¥, अथवा à¤à¤•à¤ƒ नूतनः अलà¥à¤ªà¤•à¤¾à¤²à¥€à¤¨à¤ƒ कूटशबà¥à¤¦à¤ƒ पà¥à¤°à¤¾à¤°à¥à¤¥à¤¿à¤¤à¤ƒ सà¥à¤¯à¤¾à¤¤à¥à¥¤',
'resetpass-temp-password' => 'असà¥à¤¥à¤¿à¤° रहसà¥à¤¯à¤µà¤¾à¤•à¥ :',
+# Special:PasswordReset
+'passwordreset' => 'कूटशबà¥à¤¦ पà¥à¤¨à¤ƒà¤¸à¥à¤¥à¤¾à¤ªà¤¨à¤®à¥',
+'passwordreset-legend' => 'कूटशबà¥à¤¦ पà¥à¤¨à¤ƒà¤¸à¥à¤¥à¤¾à¤ªà¤¨à¤®à¥',
+'passwordreset-disabled' => 'असà¥à¤®à¤¿à¤¨à¥ विकà¥à¤¯à¤¾à¤‚ कूटशबà¥à¤¦ पà¥à¤¨à¤ƒà¤¸à¥à¤¥à¤¾à¤ªà¤¨à¤‚ असमरà¥à¤¥à¥€à¤•à¥ƒà¤¤à¤®à¤¸à¥à¤¤à¤¿à¥¤',
+'passwordreset-pretext' => '{{PLURAL:$1| |समंकेषॠà¤à¤•à¤®à¥ अधसà¥à¤¯à¤¾à¤¤à¥ पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¥€à¤•à¤°à¥‹à¤¤à¥à¥¤}}',
+'passwordreset-username' => 'योजकनामनà¥:',
+'passwordreset-email' => 'परमाणà¥à¤ªà¤¤à¥à¤°à¤¸à¤™à¥à¤—ेत:',
+'passwordreset-emailtitle' => '{{SITENAME}} इतà¥à¤¯à¤¤à¥à¤° लेखा-विवरणमà¥',
+'passwordreset-emailelement' => 'पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¥ƒà¤¨à¤¾à¤®: $1
+अलà¥à¤ªà¤•à¤¾à¤²à¤¿à¤•à¤ƒ कूटशबà¥à¤¦à¤ƒ : $2',
+'passwordreset-emailsent' => 'à¤à¤•à¤ƒ सà¥à¤®à¤¾à¤°à¤•à¤ƒ विदà¥à¤¯à¥à¤¤à¥à¤¸à¤¨à¥à¤¦à¥‡à¤¶à¤ƒ पà¥à¤°à¥‡à¤·à¤¿à¤¤à¥‹à¤½à¤¸à¥à¤¤à¤¿à¥¤',
+
# Edit page toolbar
'bold_sample' => 'सà¥à¤¥à¥‚लाकà¥à¤·à¤°à¥ˆà¤ƒ यà¥à¤•à¥à¤¤à¤ƒ भागः',
'bold_tip' => 'सà¥à¤¥à¥‚लाकà¥à¤·à¤°à¥ˆà¤ƒ यà¥à¤•à¥à¤¤à¤ƒ भागः',
@@ -773,8 +802,6 @@ You may ignore this message, if this account was created in error.',
'extlink_tip' => 'बाहà¥à¤¯-संबंधनमॠ(अवशà¥à¤¯à¤®à¥‡à¤µ http:// इति पूरà¥à¤µà¤²à¤—à¥à¤¨à¤‚ योकà¥à¤¤à¤µà¥à¤¯à¤®à¥)',
'headline_sample' => 'शीरà¥à¤·à¤•à¤®à¥',
'headline_tip' => 'दà¥à¤µà¤¿à¤¤à¥€à¤¯à¤¸à¥à¤¤à¤°à¥€à¤¯à¤‚ शीरà¥à¤·à¤•à¤®à¥',
-'math_sample' => 'सूतà¥à¤°à¤µà¤¾à¤•à¥à¤¯à¤‚ अतà¥à¤° निवेशयतà¥',
-'math_tip' => 'गणितीयसूतà¥à¤°à¤®à¥ (LaTeX)',
'nowiki_sample' => 'अपà¥à¤°à¤¾à¤°à¥‚पीकृतं पाठं अतà¥à¤° निवेशयतà¥',
'nowiki_tip' => 'विकिपà¥à¤°à¤¾à¤°à¥‚पणं अवगणना कà¥à¤°à¥',
'image_sample' => 'उदाहरणमà¥.jpg',
@@ -827,10 +854,10 @@ You may ignore this message, if this account was created in error.',
'nosuchsectiontitle' => 'à¤à¤¤à¤¾à¤¦à¥ƒà¤¶à¤ƒ कोपà¥à¤¯à¤¨à¥à¤­à¤¾à¤—ः न लबà¥à¤§à¤ƒ',
'nosuchsectiontext' => 'भवता à¤à¤¤à¤¾à¤¦à¥ƒà¤¶ à¤à¤•à¥‹à¤½à¤¨à¥à¤­à¤¾à¤—ः समà¥à¤ªà¤¾à¤¦à¤¿à¤¤à¥à¤‚ चेषà¥à¤Ÿà¤¿à¤¤à¤‚, यनà¥à¤¨ हि विदà¥à¤¯à¤¤à¥‡à¥¤
ततà¥à¤¤à¥ पशà¥à¤¯à¤¤à¤¿ भवति à¤à¤µ पà¥à¤°à¤šà¤¾à¤²à¤¿à¤¤à¤®à¥ अथवा अपाकृतं सà¥à¤¯à¤¾à¤¤à¥à¥¤',
-'loginreqtitle' => 'पà¥à¤°à¤µà¥‡à¤¶à¤¨à¤®à¥ आविशà¥à¤¯à¤•à¤®à¥',
-'loginreqlink' => 'पà¥à¤°à¤µà¤¿à¤¶à¤¤à¥',
-'loginreqpagetext' => 'अनà¥à¤¯à¤¾à¤¨à¤¿ पृषà¥à¤ à¤¾à¤£à¤¿ दà¥à¤°à¤·à¥à¤Ÿà¥à¤‚ भवता $1 इति अवशà¥à¤¯à¤®à¥‡à¤µ करà¥à¤¤à¥à¤¤à¤µà¥à¤¯à¤®à¥à¥¤',
-'accmailtitle' => 'पासà¥à¤µà¥‡à¤¡à¥ पपà¥à¤°à¥‡à¤·à¤¿à¤¤à¤®à¥',
+'loginreqtitle' => 'पà¥à¤°à¤µà¥‡à¤¶à¤ƒ अपेकà¥à¤·à¤¿à¤¤à¤ƒ',
+'loginreqlink' => 'पà¥à¤°à¤µà¤¿à¤¶à¥à¤¯à¤¤à¤¾à¤®à¥',
+'loginreqpagetext' => 'अनà¥à¤¯à¤¾à¤¨à¤¿ पृषà¥à¤ à¤¾à¤¨à¤¿ दà¥à¤°à¤·à¥à¤Ÿà¥à¤‚ भवता $1 इतà¥à¤¯à¥‡à¤¤à¤¤à¥ अवशà¥à¤¯à¤®à¥‡à¤µ करà¥à¤¤à¥à¤¤à¤µà¥à¤¯à¤®à¥à¥¤',
+'accmailtitle' => 'कूटसङà¥à¤•à¥‡à¤¤à¤ƒ पà¥à¤°à¥‡à¤·à¤¿à¤¤à¤ƒ',
'accmailtext' => "[[User talk:$1|$1]] इतà¥à¤¯à¥‡à¤¤à¤¦à¤°à¥à¤¥à¤‚ à¤à¤•à¤ƒ यादृचà¥à¤›à¤¿à¤•à¤¤à¤¯à¤¾ उतà¥à¤ªà¤¾à¤¦à¤¿à¤¤à¤ƒ कूटशबà¥à¤¦à¤ƒ $2 इतà¥à¤¯à¥‡à¤¤à¤¤à¥ पà¥à¤°à¤¤à¤¿ पà¥à¤°à¥‡à¤·à¤¿à¤¤à¥‹à¤½à¤¸à¥à¤¤à¤¿à¥¤
सतà¥à¤°à¤¾à¤°à¤®à¥à¤­à¤ªà¤¶à¥à¤šà¤¾à¤¤à¥ नूतनायाः असà¥à¤¯à¤¾à¤ƒ लेखायाः कूटशबà¥à¤¦à¤ƒ '''[[Special:ChangePassword|कूटशबà¥à¤¦à¤‚ परिवरà¥à¤¤à¤¤à¤¾à¤®à¥]]'' इति पृषà¥à¤ à¥‡ परिवरà¥à¤¤à¤¿à¤¤à¥à¤‚ शकà¥à¤¯à¤¤à¥‡à¥¤",
'newarticle' => '(नूतनमà¥)',
@@ -845,6 +872,8 @@ You may ignore this message, if this account was created in error.',
'noarticletext-nopermission' => 'असà¥à¤®à¤¿à¤¨à¥ पृषà¥à¤ à¥‡ अधà¥à¤¨à¤¾ किमपि न विदà¥à¤¯à¤¤à¥‡à¥¤ भवानॠविकिपीडियावरà¥à¤¤à¤¿à¤·à¥ अनà¥à¤¯à¥‡à¤·à¥ पृषà¥à¤ à¥‡à¤·à¥ इदं [[Special:Search/{{PAGENAME}}|शीरà¥à¤·à¤•à¤®à¥ अनà¥à¤µà¥‡à¤·à¥à¤Ÿà¥à¤®à¥ अरà¥à¤¹à¤¤à¤¿]]
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} related logs अनà¥à¤µà¥‡à¤·à¥à¤Ÿà¥à¤®à¥ अरà¥à¤¹à¤¤à¤¿],
अथवा [{{fullurl:{{FULLPAGENAME}}|action=edit}} इदं पृषà¥à¤ à¤‚ सà¥à¤°à¤·à¥à¤Ÿà¥à¤®à¥ अरà¥à¤¹à¤¤à¤¿]</span>.',
+'userpage-userdoesnotexist' => '"$1" इति पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¥ƒà¤²à¥‡à¤–ा पञà¥à¤œà¥€à¤•à¥ƒà¤¤à¤¾ नासà¥à¤¤à¤¿à¥¤
+चेदà¥à¤­à¤µà¤¾à¤¨à¥ à¤à¤¤à¤¤à¥à¤ªà¥ƒà¤·à¥à¤ à¤‚ सà¥à¤°à¤·à¥à¤Ÿà¥à¤®à¤¿à¤šà¥à¤›à¤¤à¤¿ समà¥à¤ªà¤¾à¤¦à¤¯à¤¿à¤¤à¥à¤®à¤¿à¤šà¥à¤›à¤¤à¤¿ वा तदा कृपया पà¥à¤¨à¤°à¥€à¤•à¥à¤·à¤¤à¤¾à¤®à¥à¥¤',
'userpage-userdoesnotexist-view' => '"$1" इति पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¥ƒà¤²à¥‡à¤–ा पञà¥à¤œà¥€à¤•à¥ƒà¤¤à¤¾ नासà¥à¤¤à¤¿à¥¤',
'blocked-notice-logextract' => 'अयं पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¤¾ समà¥à¤ªà¥à¤°à¤¤à¤¿ अवरà¥à¤¦à¥à¤§à¤ƒ वरà¥à¤¤à¤¤à¥‡à¥¤
नूतनतमा अवरोधाभिलेख-पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿà¤¿à¤ƒ सनà¥à¤¦à¤°à¥à¤­à¤¾à¤°à¥à¤¥à¤®à¥ अधसà¥à¤¤à¤¾à¤¤à¥ पà¥à¤°à¤¦à¤¤à¥à¤¤à¤¾à¤½à¤¸à¥à¤¤à¤¿:',
@@ -875,7 +904,7 @@ You may ignore this message, if this account was created in error.',
'storedversion' => 'रकà¥à¤·à¤¿à¤¤à¤¾ आवृतà¥à¤¤à¤¿à¤ƒ',
'nonunicodebrowser' => "'''पूरà¥à¤µà¤¸à¥‚चना: भवतः विचरकं यूनीकोडà¥-अनà¥à¤•à¥‚लमॠनासà¥à¤¤à¤¿à¥¤'''
भवानॠसà¥à¤°à¤•à¥à¤·à¤¿à¤¤à¤¤à¤¯à¤¾ समà¥à¤ªà¤¾à¤¦à¤¨à¤‚ करोतॠइतà¥à¤¯à¥‡à¤¤à¤¦à¤°à¥à¤¥à¤‚ à¤à¤•à¤¾ यà¥à¤•à¥à¤¤à¤¿à¤ƒ कृताऽसà¥à¤¤à¤¿: आसà¥à¤•à¥€-इतराणि अकà¥à¤·à¤°à¤¾à¤£à¤¿ समà¥à¤ªà¤¾à¤¦à¤¨à¤ªà¤¿à¤Ÿà¤•à¥‡ षौडशिक(hexadecimal) कूटेषॠदà¥à¤°à¤•à¥à¤·à¥à¤¯à¤¨à¥à¤¤à¥‡à¥¤",
-'yourdiff' => 'अनà¥à¤¤à¤°à¤¾à¤¨à¤¿',
+'yourdiff' => 'भेदाः',
'copyrightwarning' => "कृपया संसà¥à¤®à¤°à¥à¤¤à¤µà¥à¤¯à¤‚ यतॠ{{SITENAME}} इतà¥à¤¯à¥‡à¤¤à¤¦à¥ पà¥à¤°à¤¤à¤¿ कृतानि सरà¥à¤µà¤¾à¤£à¤¿ योगदानानि $2 इतà¥à¤¯à¤¸à¥à¤¯ पà¥à¤°à¤¤à¤¿à¤¬à¤‚धांतरà¥à¤—तानि सनà¥à¤¤à¤¿ (अधिकाय जà¥à¤žà¤¾à¤¨à¤¾à¤¯ $1 इतà¥à¤¯à¥‡à¤¤à¤¦à¥ पशà¥à¤¯à¤¤à¥)।
यदि भवानॠसà¥à¤µà¤•à¥€à¤¯à¤¾à¤¨à¤¿ लिखितानि परिवरà¥à¤¤à¤®à¤¨à¥à¤¤à¤¶à¥à¤š, पà¥à¤¨à¤ƒ वितरà¥à¤¯à¤®à¤¨à¥à¤¤à¤¶à¥à¤š न दà¥à¤°à¤·à¥à¤Ÿà¥à¤®à¤¿à¤šà¥à¤›à¤¤à¤¿ तदा मा कृपया माऽतà¥à¤° योगदानं करोतà¥à¥¤ <br />
@@ -908,7 +937,7 @@ You may ignore this message, if this account was created in error.',
इदं पूरà¥à¤µà¥‡ à¤à¤µ विदà¥à¤¯à¤¤à¥‡à¥¤',
# Parser/template warnings
-'expensive-parserfunction-warning' => "'''पूरà¥à¤µà¤¸à¥‚चना :''' असà¥à¤®à¤¿à¤¨à¥ पृषà¥à¤ à¥‡ पà¥à¤°à¤­à¥‚तानि जटिलानि पारà¥à¤¸à¤°à¥-फ़ंकà¥à¤¶à¤¨à¥-आहà¥à¤µà¤¾à¤¨à¤¾à¤¨à¤¿ सनà¥à¤¤à¤¿à¥¤
+'expensive-parserfunction-warning' => "'''पà¥à¤°à¤¬à¥‹à¤§à¤ƒ :''' असà¥à¤®à¤¿à¤¨à¥ पृषà¥à¤ à¥‡ पà¥à¤°à¤­à¥‚तानि जटिलानि पारà¥à¤¸à¤°à¥-फ़ंकà¥à¤¶à¤¨à¥-आहà¥à¤µà¤¾à¤¨à¤¾à¤¨à¤¿ सनà¥à¤¤à¤¿à¥¤
अतà¥à¤° $2 संखà¥à¤¯à¤¾à¤¤à¤ƒ {{PLURAL:$2|नà¥à¤¯à¥‚नं आहà¥à¤µà¤¾à¤¨à¤‚|नà¥à¤¯à¥‚नानि आहà¥à¤µà¤¾à¤¨à¤¾à¤¨à¤¿}} भवितवà¥à¤¯à¤¾à¤¨à¤¿, सदà¥à¤¯à¤ƒ ततà¥à¤° {{PLURAL:$1 $1 आहà¥à¤µà¤¾à¤¨à¤‚ विदà¥à¤¯à¤¤à¥‡|$1 आहà¥à¤µà¤¾à¤¨à¤¾à¤¨à¤¿ विदà¥à¤¯à¤¨à¥à¤¤à¥‡}}।",
'expensive-parserfunction-category' => 'पà¥à¤°à¤­à¥‚तेभà¥à¤¯à¤ƒ जटिलेभà¥à¤¯à¤ƒ पारà¥à¤¸à¤°à¥-फंकà¥à¤¶à¤¨à¥-आहà¥à¤µà¤¾à¤¨à¥‡à¤­à¥à¤¯à¤ƒ यà¥à¤•à¥à¤¤à¤¾à¤¨à¤¿ पृषà¥à¤ à¤¾à¤£à¤¿à¥¤',
'post-expand-template-inclusion-warning' => "'''पà¥à¤°à¤¬à¥‹à¤§à¤ƒ:''' फलकानां योजनसà¥à¤¯ आकारः अतिविशालः वरà¥à¤¤à¤¤à¥‡ ।
@@ -969,7 +998,7 @@ You may ignore this message, if this account was created in error.',
'rev-deleted-event' => '(अभिलेखन-कà¥à¤°à¤¿à¤¯à¤¾ अपाकृताऽसà¥à¤¤à¤¿)',
'rev-deleted-user-contribs' => '[पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¥ƒà¤¨à¤¾à¤® अथवा आइपीसंकेतः अपाकृतः - समà¥à¤ªà¤¾à¤¦à¤¨à¤‚ योगदानेभà¥à¤¯à¤ƒ निगूढमसà¥à¤¤à¤¿]',
'rev-delundel' => 'दरà¥à¤¶à¥à¤¯à¤¨à¥à¤¤à¤¾à¤®à¥/गोपà¥à¤¯à¤¨à¥à¤¤à¤¾à¤®à¥',
-'rev-showdeleted' => 'दरà¥à¤¶à¤¯à¤¤à¥',
+'rev-showdeleted' => 'दरà¥à¤¶à¥à¤¯à¤¤à¤¾à¤®à¥',
'revdelete-nooldid-title' => 'लकà¥à¤·à¥à¤¯à¤°à¥‚पा आवृतà¥à¤¤à¤¿à¤ƒ अमानà¥à¤¯à¤¾à¤½à¤¸à¥à¤¤à¤¿à¥¤',
'revdelete-nologtype-title' => 'अभिलेखसà¥à¤¯ पà¥à¤°à¤•à¤¾à¤°à¤ƒ न पà¥à¤°à¤¦à¤¤à¥à¤¤à¤ƒ',
'revdelete-nologtype-text' => 'असà¥à¤¯à¥ˆ कà¥à¤°à¤¿à¤¯à¤¾à¤¯à¥ˆ भवता न कोऽपि अभिलेखपà¥à¤°à¤•à¤¾à¤°à¤ƒ निरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤ƒà¥¤',
@@ -989,7 +1018,7 @@ You may ignore this message, if this account was created in error.',
'revdel-restore-deleted' => 'अपासà¥à¤¤à¤¾à¤¨à¤¿ संसà¥à¤•à¤°à¤£à¤¾à¤¨à¤¿',
'revdel-restore-visible' => 'दृषà¥à¤Ÿà¤¿à¤—ोचराणि संसà¥à¤•à¤°à¤£à¤¾à¤¨à¤¿',
'pagehist' => 'पृषà¥à¤ à¤¸à¥à¤¯ इतिहासः',
-'revdelete-content' => 'विषय',
+'revdelete-content' => 'विषयः',
'revdelete-summary' => 'समà¥à¤ªà¤¾à¤¦à¤¨à¤¸à¤¾à¤‚कà¥à¤·à¥‡à¤ªà¤¿à¤•',
'revdelete-uname' => 'उपयोकà¥à¤¤à¥ƒ-नाम',
'revdelete-hid' => 'आवृत $1',
@@ -997,7 +1026,7 @@ You may ignore this message, if this account was created in error.',
** पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿à¤…धिकारअतिकà¥à¤°à¤®
** अयोगà¥à¤¯à¤µà¥ˆà¤¯à¤•à¥à¤¤à¤¿à¤•à¤µà¤¿à¤œà¥à¤žà¤ªà¥à¤¤à¤¿',
'revdelete-otherreason' => 'अनà¥à¤¯à¤¤à¥/सङà¥à¤•à¤²à¤¿à¤¤à¤‚ कारणमॠ:',
-'revdelete-reasonotherlist' => 'अनà¥à¤¯ कारणानि',
+'revdelete-reasonotherlist' => 'अनà¥à¤¯à¤¾à¤¨à¤¿ कारणानि',
'revdelete-edit-reasonlist' => 'समà¥à¤ªà¤¾à¤¦à¤¨à¤¸à¥à¤¯ अपाकरणाय कारणानि',
# History merging
@@ -1058,12 +1087,12 @@ You may ignore this message, if this account was created in error.',
'search-nonefound' => 'भवतः अपेकà¥à¤·à¤¾à¤¨à¥à¤—à¥à¤£à¤‚ फलितं न किमपि विदà¥à¤¯à¤¤à¥‡ ।',
'powersearch' => 'पà¥à¤°à¤—तमॠअनà¥à¤µà¥‡à¤·à¤£à¤®à¥',
'powersearch-legend' => 'पà¥à¤°à¤—तमॠअनà¥à¤µà¥‡à¤·à¤£à¤®à¥',
-'powersearch-ns' => 'नामाकाशेषॠअनà¥à¤µà¤¿à¤·à¥à¤¯à¤¤à¥ :',
-'powersearch-redir' => 'अनà¥à¤ªà¥à¤°à¥‡à¤·à¤£à¤¾à¤¨à¤¾à¤‚ सूचिकां दरà¥à¤¶à¤¯à¤¤à¥à¥¤',
-'powersearch-field' => 'इतà¥à¤¯à¤¸à¥à¤®à¥ˆ अनà¥à¤µà¤¿à¤·à¥à¤¯à¤¤à¥',
+'powersearch-ns' => 'नामाकाशेषॠअनà¥à¤µà¤¿à¤·à¥à¤¯à¤¤à¤¾à¤®à¥:',
+'powersearch-redir' => 'अनà¥à¤ªà¥à¤°à¥‡à¤·à¤£à¤¾à¤¨à¤¾à¤‚ सूचिका दरà¥à¤¶à¥à¤¯à¤¤à¤¾à¤®à¥',
+'powersearch-field' => 'इतà¥à¤¯à¤¸à¥à¤®à¥ˆ अनà¥à¤µà¤¿à¤·à¥à¤¯à¤¤à¤¾à¤®à¥',
'powersearch-toggleall' => 'सरà¥à¤µà¤®à¥',
'powersearch-togglenone' => 'नासà¥à¤¤à¤¿',
-'search-external' => 'वाहà¥à¤¯ अनà¥à¤µà¥‡à¤·à¤£à¤®à¥',
+'search-external' => 'बाहà¥à¤¯à¤¾à¤¨à¥à¤µà¥‡à¤·à¤£à¤®à¥',
'searchdisabled' => '{{SITENAME}} अनà¥à¤µà¥‡à¤·à¤£à¤‚ निषà¥à¤•à¥à¤°à¤¿à¤¯à¤®à¥
अशà¥à¤®à¤¿à¤¨à¥ समये भवानॠगूगल माधà¥à¤¯à¤®à¥‡à¤¨ अनà¥à¤µà¥‡à¤·à¤£à¤‚ करà¥à¤¤à¥à¤‚ शकà¥à¤¨à¥‹à¤¤à¤¿
सà¥à¤®à¤°à¤¯à¤¤à¥ यतॠ{{SITENAME}} इति सà¥à¤¥à¤²à¤¸à¥à¤¯ कà¥à¤°à¤®à¤¾à¤™à¥à¤•à¤¾ नैव अदà¥à¤¯à¤¾à¤¤à¤¨à¤¾ इति सोचà¥à¤¯à¤¤à¥‡à¥¤',
@@ -1079,7 +1108,7 @@ You may ignore this message, if this account was created in error.',
'mypreferences' => 'मम इषà¥à¤Ÿà¤¤à¤®à¤¾à¤¨à¤¿',
'prefs-edits' => 'समà¥à¤ªà¤¾à¤¦à¤¨à¤¾à¤¨à¤¾à¤‚ सखà¥à¤¯à¤¾à¤ƒ',
'prefsnologin' => 'नैव पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ',
-'changepassword' => 'पà¥à¤°à¤µà¥‡à¤¶ शवà¥à¤¦à¤‚ परिवरà¥à¤¤à¤¯à¤¤à¥',
+'changepassword' => 'कूटशबà¥à¤¦à¤ƒ परिवरà¥à¤¤à¥à¤¯à¤¤à¤¾à¤®à¥',
'prefs-skin' => 'तà¥à¤µà¤•à¥',
'skin-preview' => 'पà¥à¤°à¤¾à¤—à¥à¤¦à¥ƒà¤¶à¥à¤¯à¤®à¥',
'datedefault' => 'वरीयांसि नासà¥à¤¤à¤¿',
@@ -1091,13 +1120,13 @@ You may ignore this message, if this account was created in error.',
'prefs-watchlist-days-max' => 'अधिकतम ७ दिवसानि',
'prefs-watchlist-edits-max' => 'अधिकतम संखà¥à¤¯à¤¾: १०००',
'prefs-misc' => 'विविधः',
-'prefs-resetpass' => 'पà¥à¤°à¤µà¥‡à¤¶ शवà¥à¤¦à¤‚ परिवरà¥à¤¤à¤¯à¤¤à¥',
+'prefs-resetpass' => 'कूटशबà¥à¤¦à¤ƒ परिवरà¥à¤¤à¥à¤¯à¤¤à¤¾à¤®à¥',
'prefs-email' => 'इमेल वैकलà¥à¤ªà¤¿à¤•à¤¾à¤ƒ',
'prefs-rendering' => 'सà¥à¤µà¤°à¥à¤ªà¤ƒ',
-'saveprefs' => 'संरकà¥à¤·à¤¤à¥',
-'resetprefs' => 'असंरकà¥à¤·à¤¿à¤¤ परिवरà¥à¤¤à¤¨à¤¾à¤¨à¤¿ विलोपयतà¥',
-'restoreprefs' => 'समगà¥à¤°à¤¾à¤ƒ वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤¦à¤¯ वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤¨à¥à¤¸à¤¾à¤°à¥‡ पà¥à¤¨à¤ƒ संरकà¥à¤·à¤¤à¥',
-'prefs-editing' => 'समà¥à¤ªà¤¾à¤¦à¤¨à¤¶à¥€à¤²:',
+'saveprefs' => 'संरकà¥à¤·à¥à¤¯à¤¤à¤¾à¤®à¥',
+'resetprefs' => 'असंरकà¥à¤·à¤¿à¤¤à¤¾à¤¨à¤¿ परिवरà¥à¤¤à¤¨à¤¾à¤¨à¤¿ विलà¥à¤ªà¥à¤¯à¤¨à¥à¤¤à¤¾à¤®à¥',
+'restoreprefs' => 'समगà¥à¤°à¤¾à¤ƒ वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤¦à¤¯ वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤¨à¥à¤¸à¤¾à¤°à¤‚ पà¥à¤¨à¤ƒ संरकà¥à¤·à¥à¤¯à¤¤à¤¾à¤®à¥',
+'prefs-editing' => 'समà¥à¤ªà¤¾à¤¦à¤¨à¤®à¥',
'rows' => 'पंकà¥à¤¤à¤¿',
'columns' => 'अध: पंकà¥à¤¤à¥à¤¯à¤¾à¤ƒ',
'searchresultshead' => 'अनà¥à¤µà¥‡à¤·à¤£à¤®à¥',
@@ -1121,6 +1150,9 @@ You may ignore this message, if this account was created in error.',
'yourgender' => 'लिंगमॠ(Gender):',
'gender-unknown' => 'अनिरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤®à¥',
'email' => 'विदà¥à¤¯à¥à¤¤à¥à¤ªà¤¤à¥à¤°à¤µà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾',
+'prefs-help-email' => 'ईपतà¥à¤°à¤¸à¤™à¥à¤•à¥‡à¤¤à¤ƒ अनिवारà¥à¤¯à¤ƒ नासà¥à¤¤à¤¿ । किनà¥à¤¤à¥ कूटशबà¥à¤¦à¤ƒ विसà¥à¤®à¤°à¥à¤¯à¤¤à¥‡ चेतॠतसà¥à¤¯ परिवरà¥à¤¤à¤¨à¤¾à¤¯ अवशà¥à¤¯à¤•à¤ƒ भवति ।',
+'prefs-help-email-others' => 'अनà¥à¤¯à¥‡ योजकाः ईपतà¥à¤°à¤®à¤¾à¤§à¥à¤¯à¤®à¥‡à¤¨ भवतः समà¥à¤ªà¤°à¥à¤•à¤‚ यथा कà¥à¤°à¥à¤¯à¥à¤ƒ तथा भवदीये योजकपृषà¥à¤ à¥‡ समà¥à¤­à¤¾à¤·à¤£à¤ªà¥ƒà¤·à¥à¤ à¥‡ वा समà¥à¤ªà¤°à¥à¤•à¤¤à¤¨à¥à¤¤à¥à¤ƒ योजयितà¥à¤‚ शकà¥à¤¯à¤ƒ ।
+भवतः समà¥à¤ªà¤°à¥à¤•à¤‚ कृतवदà¥à¤­à¤¿à¤ƒ योजकैः भवदीयः ईपतà¥à¤°à¤¸à¤™à¥à¤•à¥‡à¤¤à¤ƒ अभिजà¥à¤žà¤¾à¤¤à¤ƒ न भवति ।',
# Groups
'group-sysop' => 'पà¥à¤°à¤¬à¤‚धकाः',
@@ -1177,11 +1209,11 @@ You may ignore this message, if this account was created in error.',
# Upload
'upload' => 'सञà¥à¤šà¤¿à¤•à¤¾ आरोपà¥à¤¯à¤¤à¤¾à¤®à¥',
-'uploadbtn' => 'संचिकामॠउदà¥à¤­à¤¾à¤°à¤¯à¤¤à¥',
+'uploadbtn' => 'सञà¥à¤šà¤¿à¤•à¤¾ आरोपà¥à¤¯à¤¤à¤¾à¤®à¥',
'uploadlogpage' => 'आरोपितानां सूची',
'filedesc' => 'सारांशः :',
'fileuploadsummary' => 'संगà¥à¤°à¤¹à¤ƒ :',
-'uploadedfiles' => 'उदà¥à¤­à¤¾à¤°à¤¿à¤¤à¤¸à¤žà¥à¤šà¤¿à¤•à¤¾à¤ƒ',
+'uploadedfiles' => 'आरोपिताः सञà¥à¤šà¤¿à¤•à¤¾à¤ƒ',
'uploadedimage' => '"[[$1]]" इतà¥à¤¯à¥‡à¤¤à¤¦à¥ आरोपितमसà¥à¤¤à¤¿',
'license' => 'अनà¥à¤®à¤¤à¤¿à¤¦à¤¾à¤¨à¤®à¥',
@@ -1207,6 +1239,8 @@ You may ignore this message, if this account was created in error.',
'linkstoimage' => '{{PLURAL:$1|अधोलिखितं पृषà¥à¤ à¤‚| अधोलिखितानि $1 पृषà¥à¤ à¤¾à¤£à¤¿}} इदं संचिकां पà¥à¤°à¤¤à¤¿ संबंधनं {{PLURAL:$1|करोति| कà¥à¤°à¥à¤µà¤¨à¥à¤¤à¤¿}}।',
'nolinkstoimage' => 'à¤à¤¤à¤¦ चितà¥à¤°à¤¾à¤¤à¥ न पृषà¥à¤ à¤¾ समà¥à¤¬à¤¦à¥à¤§à¤‚ करोनà¥à¤¤à¤¿à¥¤',
'sharedupload' => 'इयं संचिका $1 इतà¥à¤¯à¤¸à¥à¤®à¤¾à¤¦à¤¸à¥à¤¤à¤¿, à¤à¤·à¤¾ खलॠअनà¥à¤¯à¥‡à¤·à¥à¤µà¤ªà¤¿ पà¥à¤°à¤•à¤²à¥à¤ªà¥‡à¤·à¥ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¥à¤‚ शकà¥à¤¯à¤¤à¥‡à¥¤',
+'sharedupload-desc-here' => 'à¤à¤·à¤¾ सञà¥à¤šà¤¿à¤•à¤¾ $1 इतà¥à¤¯à¤¤à¤ƒ उदà¥à¤§à¥ƒà¤¤à¤¾ अनà¥à¤¯à¤¾à¤¸à¥ योजनासॠउपयोगारà¥à¤¹à¤¾ ।
+असà¥à¤¯à¤¾à¤ƒ सञà¥à¤šà¤¿à¤•à¤¾à¤¯à¤¾à¤ƒ [$2 सञà¥à¤šà¤¿à¤•à¤¾à¤µà¤¿à¤µà¤°à¤£à¤ªà¥ƒà¤·à¥à¤ à¤®à¥]] इतà¥à¤¯à¤¤à¥à¤° उपलभà¥à¤¯à¤®à¤¾à¤¨à¤‚ विवरणमॠअधोलिखितं यथा ।',
'uploadnewversion-linktext' => 'असà¥à¤¯ पृषà¥à¤ à¤¸à¥à¤¯ नूतनामॠआवृतà¥à¤¤à¤¿à¤‚ उदà¥à¤­à¤¾à¤°à¤¯à¤¤à¥',
# File reversion
@@ -1219,7 +1253,7 @@ You may ignore this message, if this account was created in error.',
'statistics' => 'सà¥à¤¥à¤¿à¤¤à¤¿à¤—णितमà¥',
'statistics-pages' => 'पृषà¥à¤ à¤¾à¤¨à¤¿',
'statistics-files' => 'उदà¥à¤­à¤¾à¤°à¤¿à¤¤à¤¸à¤žà¥à¤šà¤¿à¤•à¤¾à¤ƒ',
-'statistics-users-active' => 'सकà¥à¤°à¤¿à¤¯ सदसà¥à¤¯',
+'statistics-users-active' => 'सकà¥à¤°à¤¿à¤¯à¤¾à¤ƒ सदसà¥à¤¯à¤¾à¤ƒ',
'disambiguationspage' => 'Template:असनà¥à¤¦à¤¿à¤—à¥à¤§à¤®à¥',
@@ -1233,12 +1267,12 @@ You may ignore this message, if this account was created in error.',
'nbytes' => '$1 {{PLURAL:$1|बैटà¥|बैटà¥à¤¸à¥}}',
'nmembers' => '$1 {{PLURAL:$1|सदसà¥à¤¯à¤ƒ|सदसà¥à¤¯à¤¾à¤ƒ}}',
'prefixindex' => 'उपसरà¥à¤—यà¥à¤•à¥à¤¤à¤¾à¤¨à¤¿ सरà¥à¤µà¤¾à¤£à¤¿ पृषà¥à¤ à¤¾à¤¨à¤¿',
-'longpages' => 'दीरà¥à¤˜à¤¾à¤£à¤¿ पृषà¥à¤ à¤¾à¤£à¤¿',
+'longpages' => 'दीरà¥à¤˜à¤¾à¤£à¤¿ पृषà¥à¤ à¤¾à¤¨à¤¿',
'usercreated' => '$1 दिने $2 समये रचितमà¥',
'newpages' => 'नवीनपृषà¥à¤ à¤®à¥',
-'ancientpages' => 'पà¥à¤°à¤¾à¤šà¥€à¤¨à¤¤à¤®à¥ पृषà¥à¤ à¤¾',
+'ancientpages' => 'पà¥à¤°à¤¾à¤šà¥€à¤¨à¤¤à¤®à¤¾à¤¨à¤¿ पृषà¥à¤ à¤¾à¤¨à¤¿',
'move' => 'चालà¥à¤¯à¤¤à¤¾à¤®à¥',
-'movethispage' => 'इदं पृषà¥à¤ à¤‚ चालयतà¥',
+'movethispage' => 'इदं पृषà¥à¤ à¤‚ चालà¥à¤¯à¤¤à¤¾à¤®à¥',
'pager-newer-n' => '{{PLURAL:$1|नूतनतरमॠ1|नूतनतराणि $1}}',
'pager-older-n' => '{{PLURAL:$1|पà¥à¤°à¤¾à¤¤à¤¨à¤¤à¤°à¤®à¥ 1|पà¥à¤°à¤¾à¤¤à¤¨à¤¤à¤°à¤¾à¤£à¤¿ $1}}',
@@ -1254,8 +1288,8 @@ You may ignore this message, if this account was created in error.',
'allpages' => 'सरà¥à¤µà¤¾à¤£à¤¿ पृषà¥à¤ à¤¾à¤¨à¤¿',
'alphaindexline' => '$1 तः $2 परà¥à¤¯à¤¨à¥à¤¤à¤®à¥',
'prevpage' => 'पूरà¥à¤µà¤ªà¥ƒà¤·à¥à¤ à¤®à¥ ($1)',
-'allpagesfrom' => 'इतà¥à¤¯à¤¸à¥à¤®à¤¾à¤¤à¥ आरभमनà¥à¤¤à¤ƒ पृषà¥à¤ à¤¾à¤£à¤¿ दरà¥à¤¶à¤¯à¤¤à¥ :',
-'allpagesto' => 'दरà¥à¤¶à¤¯à¤¤à¥ पृषà¥à¤ à¤¾à¤£à¤¿ येषामॠअंतमॠà¤à¤µà¤®à¥ :',
+'allpagesfrom' => 'इतà¥à¤¯à¤¸à¥à¤®à¤¾à¤¤à¥ आरभà¥à¤¯à¤®à¤¾à¤£à¤¾à¤¨à¤¿ पृषà¥à¤ à¤¾à¤¨à¤¿ दरà¥à¤¶à¥à¤¯à¤¨à¥à¤¤à¤¾à¤®à¥:',
+'allpagesto' => 'तानि पृषà¥à¤ à¤¾à¤¨à¤¿ दरà¥à¤¶à¥à¤¯à¤¨à¥à¤¤à¤¾à¤‚ येषामॠअनà¥à¤¤à¥à¤¯à¤®à¥ à¤à¤µà¤®à¥ :',
'allarticles' => 'सरà¥à¤µà¤¾à¤£à¤¿ पृषà¥à¤ à¤¾à¤¨à¤¿',
'allpagessubmit' => 'गमà¥à¤¯à¤¤à¤¾à¤®à¥',
@@ -1263,7 +1297,7 @@ You may ignore this message, if this account was created in error.',
'categories' => 'वरà¥à¤—ाः',
# Special:LinkSearch
-'linksearch' => 'बाहà¥à¤¯-संबंधनानि',
+'linksearch' => 'बाहà¥à¤¯à¤¸à¤®à¥à¤ªà¤°à¥à¤•à¤¤à¤¨à¥à¤¤à¥‚नामॠअनà¥à¤µà¥‡à¤·à¤£à¤®à¥',
'linksearch-line' => '$2 पृषà¥à¤ à¤‚ $1 तः समà¥à¤ªà¥ƒà¤•à¥à¤¤à¤®à¥ असà¥à¤¤à¤¿à¥¤',
# Special:Log/newusers
@@ -1275,6 +1309,8 @@ You may ignore this message, if this account was created in error.',
# E-mail user
'emailuser' => 'à¤à¤¤à¤¸à¥à¤®à¥ˆ योजकाय ईपतà¥à¤°à¤‚ पà¥à¤°à¥‡à¤·à¥à¤¯à¤¤à¤¾à¤®à¥',
+'emailfrom' => 'सकाशातà¥',
+'emailto' => 'सविधे:',
'emailsubject' => 'विषयः',
'emailmessage' => 'सनà¥à¤¦à¥‡à¤¶à¤ƒ :',
@@ -1282,10 +1318,8 @@ You may ignore this message, if this account was created in error.',
'watchlist' => 'मम अवेकà¥à¤·à¤£à¤¸à¥‚ची',
'mywatchlist' => 'मम अवेकà¥à¤·à¤£à¤¸à¥‚ची',
'watchlistfor2' => 'हि $1 $2',
-'addedwatch' => 'निरीकà¥à¤·à¤¾à¤¸à¥‚चिकायां योजितमà¥',
'addedwatchtext' => 'भवतः [[Special:Watchlist|धà¥à¤¯à¤¾à¤¨à¤¸à¥‚चिकायां]] "[[:$1]]" इतà¥à¤¯à¥‡à¤¤à¤¤à¥ योजितमसà¥à¤¤à¤¿à¥¤
इदानींपà¥à¤°à¤­à¥ƒà¤¤à¤¿ असà¥à¤®à¤¿à¤¨à¥ पृषà¥à¤ à¥‡ तथा असà¥à¤¯ चरà¥à¤šà¤¾à¤ªà¥ƒà¤·à¥à¤ à¥‡ सनà¥à¤¤à¤ƒ परिवरà¥à¤¤à¤¨à¤¾à¤¨à¤¿ भवतः निरीकà¥à¤·à¤¾à¤¸à¥‚चिकायां दà¥à¤°à¤•à¥à¤·à¥à¤¯à¤¨à¥à¤¤à¥‡ तथा च [[Special:RecentChanges|सदà¥à¤¯à¤ƒà¤ªà¤°à¤¿à¤µà¤°à¥à¤¤à¤¿à¤¤à¤¾à¤¨à¤¾à¤‚ सूचिकायां]] इदं पृषà¥à¤ à¤‚ सà¥à¤¥à¥‚लाकà¥à¤·à¤°à¥ˆà¤ƒ दà¥à¤°à¤•à¥à¤·à¥à¤¯à¤¤à¥‡, यसà¥à¤®à¤¾à¤¤à¥ भवानॠसरलतया इदं पशà¥à¤¯à¤¤à¥ <p>निरीकà¥à¤·à¤¾à¤¸à¥‚चिकातः निराकरà¥à¤¤à¥à¤®à¤¿à¤šà¥à¤›à¤¤à¤¿ चेतà¥, "मा निरीकà¥à¤·à¤¤à¤¾à¤®à¥" इतà¥à¤¯à¤¸à¤®à¤¿à¤¨à¥ नोदयतà¥à¥¤',
-'removedwatch' => 'निरीकà¥à¤·à¤¾à¤¸à¥‚चिकातः निराकृतमà¥à¥¤',
'removedwatchtext' => '"[[:$1]]" इति पृषà¥à¤ à¤‚ [[Special:Watchlist|भवतः निरीकà¥à¤·à¤¾à¤¸à¥‚चिकातः]] निराकृतमसà¥à¤¤à¤¿à¥¤',
'watch' => 'निरीकà¥à¤·à¤¤à¤¾à¤®à¥',
'watchthispage' => 'इदं पृषà¥à¤ à¤‚ निरीकà¥à¤·à¤¤à¤¾à¤®à¥',
@@ -1306,7 +1340,7 @@ You may ignore this message, if this account was created in error.',
'confirmdeletetext' => 'भवानॠà¤à¤•à¤‚ पृषà¥à¤ à¤‚ तसà¥à¤¯ अखिलेन इतिहासेन सहितं अपाकरà¥à¤¤à¥à¤‚ पà¥à¤°à¤µà¥ƒà¤¤à¥à¤¤à¥‹à¤½à¤¸à¥à¤¤à¤¿à¥¤ कृपया सà¥à¤ªà¥à¤·à¥à¤Ÿà¥€à¤•à¤°à¥‹à¤¤à¥ यतॠभवतः à¤à¤¤à¤¦à¥‡à¤µ आशयः, यदॠभवता असà¥à¤¯ परिणामाः सà¥à¤µà¤¿à¤œà¥à¤žà¤¾à¤¤à¤¾à¤ƒ सनà¥à¤¤à¤¿ तथा च भवता कà¥à¤°à¤¿à¤¯à¥ˆà¤·à¤¾ [[{{MediaWiki:Policy-url}}| यथानीति]] समà¥à¤ªà¤¾à¤¦à¥à¤¯à¤¤à¥‡à¥¤',
'actioncomplete' => 'कारà¥à¤¯à¤‚ समà¥à¤ªà¤¨à¥à¤¨à¤®à¥',
'actionfailed' => 'करà¥à¤®à¤¨à¥ रिषà¥à¤Ÿ',
-'deletedtext' => '"<nowiki>$1</nowiki>" इतà¥à¤¯à¥‡à¤¤à¤¦à¥ अपाकृतमसà¥à¤¤à¤¿à¥¤
+'deletedtext' => '"$1" इतà¥à¤¯à¥‡à¤¤à¤¦à¥ अपाकृतमसà¥à¤¤à¤¿à¥¤
सदà¥à¤¯à¤ƒà¤•à¥ƒà¤¤à¤¾à¤¨à¤¾à¤‚ अपाकरणानामॠअभिलेखः $2 इतà¥à¤¯à¤¸à¥à¤®à¤¿à¤¨à¥ पशà¥à¤¯à¤¤à¥à¥¤',
'deletedarticle' => '"[[$1]]" अपाकृतमसà¥à¤¤à¤¿à¥¤',
'dellogpage' => 'अपाकरणानां सूचिका',
@@ -1325,7 +1359,7 @@ You may ignore this message, if this account was created in error.',
'protectexpiry' => 'अवसानमॠ:',
'protect_expiry_invalid' => 'अवसान-समयः अमानà¥à¤¯à¥‹à¤½à¤¸à¥à¤¤à¤¿à¥¤',
'protect_expiry_old' => 'अवसान-समयः अतीतोऽसà¥à¤¤à¤¿à¥¤',
-'protect-text' => "'''<nowiki>$1</nowiki>''' इति पृषà¥à¤ à¤¸à¥à¤¯ कृते सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤°à¤‚ भवानॠअतà¥à¤° दृषà¥à¤Ÿà¥à¤‚ शकà¥à¤¨à¥‹à¤¤à¤¿, तथा च तं परिवरà¥à¤¤à¤¯à¤¿à¤¤à¥à¤‚ शकà¥à¤¨à¥‹à¤¤à¤¿à¥¤",
+'protect-text' => "'''$1''' इति पृषà¥à¤ à¤¸à¥à¤¯ कृते सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤°à¤‚ भवानॠअतà¥à¤° दृषà¥à¤Ÿà¥à¤‚ शकà¥à¤¨à¥‹à¤¤à¤¿, तथा च तं परिवरà¥à¤¤à¤¯à¤¿à¤¤à¥à¤‚ शकà¥à¤¨à¥‹à¤¤à¤¿à¥¤",
'protect-locked-access' => "भवानॠअसà¥à¤¯ पृषà¥à¤ à¤¸à¥à¤¯ सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤°à¤‚ परिवरà¥à¤¤à¤¯à¤¿à¤¤à¥à¤®à¥ अनà¥à¤œà¥à¤žà¤¾à¤‚ न धारयति। '''$1''' इति पृषà¥à¤ à¤¸à¥à¤¯ अधà¥à¤¨à¤¾à¤¤à¤¨à¤ƒ सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤°à¤ƒ :",
'protect-cascadeon' => 'इदं पृषà¥à¤ à¤‚ वरà¥à¤¤à¤®à¤¤à¥à¤•à¤¾à¤²à¥‡ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤à¤®à¤¸à¥à¤¤à¤¿, यत इदं {{PLURAL:$1|निमà¥à¤¨à¤²à¤¿à¤–िते पृषà¥à¤ à¥‡ |निमà¥à¤¨à¤²à¤¿à¤–ितेषॠपृषà¥à¤ à¥‡à¤·à¥}} समाहितमसà¥à¤¤à¤¿ {{PLURAL:$1|यसà¥à¤®à¤¿à¤¨à¥|येषà¥}} सोपानातà¥à¤®à¤¿à¤•à¤¾ सà¥à¤°à¤•à¥à¤·à¤¾ पà¥à¤°à¤­à¤¾à¤µà¤¿à¤¨à¥€ असà¥à¤¤à¤¿à¥¤ भवानॠअसà¥à¤¯ पृषà¥à¤ à¤¸à¥à¤¯ सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤°à¤‚ परिवरà¥à¤¤à¤¯à¤¿à¤¤à¥à¤‚ शकà¥à¤¨à¥‹à¤¤à¤¿, परं तेन सोपानातà¥à¤®à¤¿à¤•à¤¾-सà¥à¤°à¤•à¥à¤·à¤¾ न परिवरà¥à¤¤à¤¯à¤¿à¤·à¥à¤¯à¤¤à¤¿à¥¤',
'protect-default' => 'सरà¥à¤µà¤¾à¤¨à¥ पà¥à¤°à¤¯à¥‹à¤•à¥à¤¤à¥„नॠअनà¥à¤œà¥à¤žà¤¾à¤ªà¤¯à¤¤à¥à¥¤',
@@ -1342,11 +1376,12 @@ You may ignore this message, if this account was created in error.',
'restriction-level' => 'सà¥à¤°à¤•à¥à¤·à¤¾-सà¥à¤¤à¤°à¤ƒ :',
# Restrictions (nouns)
-'restriction-create' => 'सृजतà¥',
+'restriction-create' => 'सृजà¥à¤¯à¤¤à¤¾à¤®à¥',
+'restriction-upload' => 'आरोपà¥à¤¯à¤¤à¤¾à¤®à¥',
# Restriction levels
-'restriction-level-sysop' => 'पूरà¥à¤£ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤',
-'restriction-level-autoconfirmed' => 'अरà¥à¤§ सà¥à¤°à¤•à¥à¤·à¤¿à¤¤',
+'restriction-level-sysop' => 'पूरà¥à¤£à¤¤à¤¯à¤¾ संरकà¥à¤·à¤¿à¤¤à¤®à¥',
+'restriction-level-autoconfirmed' => 'अरà¥à¤§à¤¸à¤‚रकà¥à¤·à¤¿à¤¤à¤®à¥',
# Undelete
'undeletelink' => 'दृशà¥à¤¯à¤¤à¤¾à¤®à¥/पà¥à¤°à¤¤à¥à¤¯à¤¾à¤¨à¥€à¤¯à¤¤à¤¾à¤®à¥',
@@ -1410,8 +1445,8 @@ You may ignore this message, if this account was created in error.',
'block-log-flags-nocreate' => 'सदसà¥à¤¯à¤¤à¤¾ पà¥à¤°à¤¾à¤ªà¥à¤¤à¤¿à¤ƒ अवरà¥à¤¦à¥à¤§à¤¾ असà¥à¤¤à¤¿',
# Move page
-'move-page-legend' => 'पृषà¥à¤ à¤‚ चालयतà¥à¥¤',
-'movearticle' => 'पृषà¥à¤ à¤‚ चालयतॠ:',
+'move-page-legend' => 'पृषà¥à¤ à¤‚ रकà¥à¤·à¥à¤¯à¤¤à¤¾à¤®à¥',
+'movearticle' => 'पृषà¥à¤ à¤‚ चालà¥à¤¯à¤¤à¤¾à¤®à¥',
'newtitle' => 'नूतनं शीरà¥à¤·à¤•à¤‚ पà¥à¤°à¤¤à¤¿ :',
'move-watch' => 'इदं पृषà¥à¤ à¤‚ निरीकà¥à¤·à¤¤à¤¾à¤®à¥à¥¤',
'movepagebtn' => 'पृषà¥à¤ à¤‚ चालयतà¥à¥¤',
@@ -1428,16 +1463,16 @@ You may ignore this message, if this account was created in error.',
'revertmove' => 'पà¥à¤°à¤¤à¤¿à¤¨à¤¿à¤µà¤°à¥à¤¤à¥à¤¯à¤¤à¤¾à¤®à¥',
# Export
-'export' => 'पृषà¥à¤ à¤¾à¤£à¤¾à¤‚ निरà¥à¤¯à¤¾à¤¤à¤‚ करोतà¥',
+'export' => 'पृषà¥à¤ à¤¾à¤¨à¤¾à¤‚ निरà¥à¤¯à¤¾à¤¤à¤‚ करोतà¥',
# Namespace 8 related
'allmessages' => 'वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾ सनà¥à¤¦à¥‡à¤¶à¤¾à¤ƒ',
'allmessagesname' => 'नाम',
'allmessagesdefault' => 'डिफॉलà¥à¤Ÿà¤¸à¤¨à¥à¤¦à¥‡à¤¶à¤ªà¤¾à¤ ',
'allmessages-filter-all' => 'अखिलमà¥',
-'allmessages-filter-modified' => 'परिवरà¥à¤¤à¤¿à¤¤',
+'allmessages-filter-modified' => 'परिवरà¥à¤¤à¤¿à¤¤à¤®à¥',
'allmessages-language' => 'भाषा:',
-'allmessages-filter-submit' => 'गचà¥à¤›à¤¤à¥',
+'allmessages-filter-submit' => 'गमà¥à¤¯à¤¤à¤¾à¤®à¥',
# Thumbnails
'thumbnail-more' => 'विसà¥à¤¤à¥€à¤°à¥à¤¯à¤¤à¤¾à¤®à¥',
@@ -1495,7 +1530,7 @@ You may ignore this message, if this account was created in error.',
'tooltip-minoredit' => 'इदं परिवरà¥à¤¤à¤¨à¤‚ लघà¥à¤ªà¤°à¤¿à¤µà¤°à¥à¤¤à¤¨à¤°à¥‚पेण अङà¥à¤•à¥à¤¯à¤¤à¤¾à¤®à¥',
'tooltip-save' => 'परिवरà¥à¤¤à¤¨à¤¾à¤¨à¤¿ रकà¥à¤·à¥à¤¯à¤¨à¥à¤¤à¤¾à¤®à¥',
'tooltip-preview' => 'भवता कृतानां परिवरà¥à¤¤à¤¨à¤¾à¤¨à¤¾à¤‚ पà¥à¤°à¤¾à¤—à¥à¤¦à¥ƒà¤¶à¥à¤¯à¤‚ दृशà¥à¤¯à¤¤à¤¾à¤®à¥, रकà¥à¤·à¤£à¤¾à¤¤à¥à¤ªà¥‚रà¥à¤µà¤‚ कृपया इदमॠउपयà¥à¤œà¥à¤¯à¤¤à¤¾à¤®à¥à¥¤',
-'tooltip-diff' => 'पाठे भवता कृतानि परिवरà¥à¤¤à¤¨à¤¾à¤¨à¤¿ दृशà¥à¤¯à¤¤à¤¾à¤®à¥à¥¤',
+'tooltip-diff' => 'पाठे भवता कृतानि परिवरà¥à¤¤à¤¨à¤¾à¤¨à¤¿ दृशà¥à¤¯à¤¨à¥à¤¤à¤¾à¤®à¥à¥¤',
'tooltip-compareselectedversions' => 'पृषà¥à¤ à¤¸à¥à¤¯ दà¥à¤µà¤¯à¥‹à¤ƒ चितयोः आवृतà¥à¤¤à¥à¤¯à¥‹à¤ƒ भेदः दृशà¥à¤¯à¤¤à¤¾à¤®à¥',
'tooltip-watch' => 'इदं पृषà¥à¤ à¤‚ भवतः अवेकà¥à¤·à¤£à¤¸à¥‚चà¥à¤¯à¤¾à¤‚ योजà¥à¤¯à¤¤à¤¾à¤®à¥',
'tooltip-rollback' => '"पूरà¥à¤£-पà¥à¤°à¤¤à¤¿à¤—मनं(रोलबैकॠइतà¥à¤¯à¥‡à¤¤à¤¦à¥)" असà¥à¤¯ पृषà¥à¤ à¤¸à¥à¤¯ संपादनानि अंतिम-योगदातृकृतानि विपरीतीकरोति à¤à¤•à¥‡à¤¨ कà¥à¤²à¤¿à¤•à¥à¤•à¤¾à¤°à¥‡à¤£',
@@ -1520,11 +1555,10 @@ You may ignore this message, if this account was created in error.',
'nextdiff' => 'नवतरं समà¥à¤ªà¤¾à¤¦à¤¨à¤®à¥ →',
# Media information
-'file-info-size' => '$1 × $2 पिकà¥à¤¸à¥‡à¤²à¤¾à¤¨à¤¿, संचिकायाः आकारः: $3, MIME-पà¥à¤°à¤•à¤¾à¤°à¤ƒ: $4',
-'file-nohires' => '<small>उचà¥à¤šà¤¤à¤°à¤‚ विभेदनं नोपलबà¥à¤§à¤®à¥</small>',
-'svg-long-desc' => 'SVG संचिका, साधारणतया $1 × $2 पिकà¥à¤¸à¥‡à¤²à¤¾à¤¨à¤¿, संचिकायाः आकारः : $3',
-'show-big-image' => 'पूरà¥à¤£à¤‚ विभेदनमà¥',
-'show-big-image-thumb' => '<small>असà¥à¤¯ पà¥à¤°à¤¾à¤—à¥à¤¦à¥ƒà¤¶à¥à¤¯à¤¸à¥à¤¯ आकारः : $1 × $2 पिकà¥à¤¸à¥‡à¤²à¤¾à¤¨à¤¿</small>',
+'file-info-size' => '$1 × $2 पिकà¥à¤¸à¥‡à¤²à¤¾à¤¨à¤¿, संचिकायाः आकारः: $3, MIME-पà¥à¤°à¤•à¤¾à¤°à¤ƒ: $4',
+'file-nohires' => '<small>उचà¥à¤šà¤¤à¤°à¤‚ विभेदनं नोपलबà¥à¤§à¤®à¥</small>',
+'svg-long-desc' => 'SVG संचिका, साधारणतया $1 × $2 पिकà¥à¤¸à¥‡à¤²à¤¾à¤¨à¤¿, संचिकायाः आकारः : $3',
+'show-big-image' => 'पूरà¥à¤£à¤‚ विभेदनमà¥',
# Special:NewFiles
'newimages' => 'नूतन-संचिकानां वीथिका',
@@ -1545,16 +1579,20 @@ You may ignore this message, if this account was created in error.',
'metadata-expand' => 'विसà¥à¤¤à¤¾à¤°à¤¿à¤¤à¤¾à¤¨à¤¿ विवरणानि दरà¥à¤¶à¤¯à¤¤à¥',
'metadata-collapse' => 'विसà¥à¤¤à¤¾à¤°à¤¿à¤¤à¤¾à¤¨à¤¿ विवरणानि लोपयतà¥',
'metadata-fields' => 'असà¥à¤®à¤¿à¤¨à¥ तालिकायां दरà¥à¤¶à¤¿à¤¤à¤¾ सूचना संचिकायाः अधसà¥à¤¤à¤¾à¤¤à¥ मेटाडाटा इतà¥à¤¯à¤¸à¥à¤®à¤¿à¤¨à¥ सदा दरà¥à¤¶à¤¿à¤¤à¤¾ भविषà¥à¤¯à¤¤à¤¿à¥¤
-
अवशिषà¥à¤Ÿà¤¾ सूचना सदा निगूढा भविषà¥à¤¯à¤¤à¤¿à¥¤
-
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'विसà¥à¤¤à¤¾à¤°à¤ƒ',
@@ -1562,17 +1600,48 @@ You may ignore this message, if this account was created in error.',
'exif-flash' => 'सà¥à¤«à¥à¤°à¤£à¤®à¥',
'exif-gpsspeedref' => 'गती à¤à¤•à¤•',
+'exif-iimcategory-edu' => 'विदà¥à¤¯à¤¾à¤­à¥à¤¯à¤¾à¤¸à¤ƒ',
+'exif-iimcategory-evn' => 'परिसरः',
+'exif-iimcategory-hth' => 'सà¥à¤µà¤¾à¤¸à¥à¤¥à¥à¤¯à¤®à¥',
+'exif-iimcategory-spo' => 'कà¥à¤°à¥€à¤¡à¤¾à¤ƒ',
+
# External editor support
'edit-externally' => 'बाहà¥à¤¯à¤¾à¤‚ पà¥à¤°à¤£à¤¾à¤²à¥€à¤®à¥ उपयà¥à¤œà¥à¤¯ इयं सञà¥à¤šà¤¿à¤•à¤¾ समà¥à¤ªà¤¾à¤¦à¥à¤¯à¤¤à¤¾à¤®à¥ ।',
-'edit-externally-help' => '(अधिकासूचनारà¥à¤¥à¤‚ [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] इतà¥à¤¯à¥‡à¤¤à¤¤à¥ दृशà¥à¤¯à¤¤à¤¾à¤®à¥)',
+'edit-externally-help' => '(अधिकासूचनारà¥à¤¥à¤‚ [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] इतà¥à¤¯à¥‡à¤¤à¤¤à¥ दृशà¥à¤¯à¤¤à¤¾à¤®à¥)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'सरà¥à¤µà¤¾à¤£à¤¿',
'namespacesall' => 'सरà¥à¤µà¤¾à¤£à¤¿',
'monthsall' => 'सरà¥à¤µà¤¾à¤£à¤¿',
+'limitall' => 'सरà¥à¤µà¤¾à¤£à¤¿',
+
+# E-mail address confirmation
+'confirmemail' => 'ईपतà¥à¤°à¤¸à¤™à¥à¤•à¥‡à¤¤à¤ƒ पà¥à¤°à¤®à¤¾à¤£à¥€à¤•à¥à¤°à¤¿à¤¯à¤¤à¤¾à¤®à¥',
+
+# action=purge
+'confirm_purge_button' => 'असà¥à¤¤à¥',
+
+# action=watch/unwatch
+'confirm-watch-button' => 'असà¥à¤¤à¥',
+'confirm-watch-top' => 'इदं पृषà¥à¤ à¤‚ भवतः अवेकà¥à¤·à¤£à¤¸à¥‚चà¥à¤¯à¤¾à¤‚ योजयाम ?',
+'confirm-unwatch-button' => 'असà¥à¤¤à¥',
+
+# Multipage image navigation
+'imgmultipagenext' => 'अगà¥à¤°à¤¿à¤®à¤‚ पृषà¥à¤ à¤®à¥',
+'imgmultigo' => 'गमà¥à¤¯à¤¤à¤¾à¤®à¥ !',
+'imgmultigoto' => '$1 पृषà¥à¤ à¤‚ गमà¥à¤¯à¤¤à¤¾à¤®à¥',
+
+# Table pager
+'table_pager_next' => 'अगà¥à¤°à¤¿à¤®à¤‚ पृषà¥à¤ à¤®à¥',
+'table_pager_prev' => 'पूरà¥à¤µà¤¤à¤¨à¤‚ पृषà¥à¤ à¤®à¥',
+'table_pager_first' => 'पà¥à¤°à¤¥à¤®à¤‚ पृषà¥à¤ à¤®à¥',
+'table_pager_last' => 'अनà¥à¤¤à¤¿à¤®à¤‚ पृषà¥à¤ à¤®à¥',
+'table_pager_limit_submit' => 'गमà¥à¤¯à¤¤à¤¾à¤®à¥',
+'table_pager_empty' => 'फलितानि न सनà¥à¤¤à¤¿',
# Auto-summaries
-'autosumm-new' => '$1 नवीन पृषà¥à¤ à¤‚ निरà¥à¤®à¥€à¤¤ असà¥à¤¤à¥€',
+'autosumm-blank' => 'पृषà¥à¤ à¤‚ रिकà¥à¤¤à¥€à¤•à¥ƒà¤¤à¤®à¥',
+'autosumm-new' => '$1 नवीन पृषà¥à¤ à¤‚ निरà¥à¤®à¥€à¤¤ असà¥à¤¤à¥€',
# Watchlist editing tools
'watchlisttools-view' => 'उचितानि परिवरà¥à¤¤à¤¨à¤¾à¤¨à¤¿ दृशà¥à¤¯à¤¨à¥à¤¤à¤¾à¤®à¥',
@@ -1585,8 +1654,27 @@ You may ignore this message, if this account was created in error.',
# Special:Version
'version' => 'आवृतà¥à¤¤à¤¿à¤ƒ',
+# Special:FilePath
+'filepath-page' => 'सञà¥à¤šà¤¿à¤•à¤¾:',
+'filepath-submit' => 'गमà¥à¤¯à¤¤à¤¾à¤®à¥',
+
+# Special:FileDuplicateSearch
+'fileduplicatesearch-filename' => 'सञà¥à¤šà¤¿à¤•à¤¾à¤¨à¤¾à¤®:',
+'fileduplicatesearch-submit' => 'अनà¥à¤µà¥‡à¤·à¤£à¤®à¥',
+
# Special:SpecialPages
-'specialpages' => 'विशेषपृषà¥à¤ à¤¾à¤¨à¤¿',
+'specialpages' => 'विशेषपृषà¥à¤ à¤¾à¤¨à¤¿',
+'specialpages-group-login' => 'पà¥à¤°à¤µà¤¿à¤¶à¥à¤¯à¤¤à¤¾à¤®à¥ / हसà¥à¤¤à¤¾à¤™à¥à¤•à¤¨à¤‚ कà¥à¤°à¤¿à¤¯à¤¤à¤¾à¤®à¥',
+'specialpages-group-changes' => 'सदà¥à¤¯à¥‹à¤œà¤¾à¤¤à¤¾à¤¨à¤¿ परिवरà¥à¤¤à¤¨à¤¾à¤¨à¤¿ आवलà¥à¤¯à¤¶à¥à¤š',
+'specialpages-group-media' => 'माधà¥à¤¯à¤®à¤¸à¥à¤¯ इतिवृतà¥à¤¤à¤®à¥ आरोपणानि च',
+'specialpages-group-users' => 'योजकाः अधिकाराशà¥à¤š',
+'specialpages-group-highuse' => 'अधिकोपयोगीनि पृषà¥à¤ à¤¾à¤¨à¤¿',
+'specialpages-group-pages' => 'पृषà¥à¤ à¤¾à¤¨à¤¾à¤®à¥ आवली',
+'specialpages-group-pagetools' => 'पृषà¥à¤ à¥‹à¤ªà¤•à¤°à¤£à¤¾à¤¨à¤¿',
+
+# Special:BlankPage
+'blankpage' => 'रिकà¥à¤¤à¤¾à¤¨à¤¿ पृषà¥à¤ à¤¾à¤¨à¤¿',
+'intentionallyblankpage' => 'इदं पृषà¥à¤ à¤‚ बà¥à¤¦à¥à¤§à¥à¤¯à¤¾ à¤à¤µ रिकà¥à¤¤à¤‚ रकà¥à¤·à¤¿à¤¤à¤®à¤¸à¥à¤¤à¤¿ ।',
# External image whitelist
'external_image_whitelist' => ' #इयं पङà¥à¤•à¥à¤¤à¤¿à¤ƒ यथावदॠभवतà¥<pre>
@@ -1599,6 +1687,26 @@ You may ignore this message, if this account was created in error.',
#सभी मानक अभिवà¥à¤¯à¤•à¥à¤¤à¤¿ अंश इस पंकà¥à¤¤à¤¿ के ऊपर डालें। इस पकà¥à¤¤à¤¿ को जस का तस छोड़ दें</pre>',
# Special:Tags
-'tag-filter' => '[[Special:Tags|Tag]] शोधनी:',
+'tag-filter' => '[[Special:Tags|Tag]] शोधनी:',
+'tags-edit' => 'समà¥à¤ªà¤¾à¤¦à¥à¤¯à¤¤à¤¾à¤®à¥',
+'tags-hitcount' => '$1 {{PLURAL:$1|परिवरà¥à¤¤à¤¨à¤®à¥|परिवरà¥à¤¤à¤¨à¤¾à¤¨à¤¿}}',
+
+# Special:ComparePages
+'comparepages' => 'पृषà¥à¤ à¤¾à¤¨à¤¿ तोलà¥à¤¯à¤¨à¥à¤¤à¤¾à¤®à¥',
+'compare-page1' => 'पृषà¥à¤ à¤®à¥ १',
+'compare-page2' => 'पृषà¥à¤ à¤®à¥ २',
+'compare-rev1' => 'संसà¥à¤•à¤°à¤£à¤®à¥ 1',
+'compare-rev2' => 'संसà¥à¤•à¤°à¤£à¤®à¥ २',
+'compare-submit' => 'तोलà¥à¤¯à¤¤à¤¾à¤®à¥',
+
+# Database error messages
+'dberr-header' => 'असà¥à¤®à¤¿à¤¨à¥ विकिमधà¥à¤¯à¥‡ काचितॠसमसà¥à¤¯à¤¾ विदà¥à¤¯à¤¤à¥‡',
+'dberr-problems' => 'कà¥à¤·à¤®à¥à¤¯à¤¤à¤¾à¤®à¥ ! असà¥à¤®à¤¿à¤¨à¥ जालपà¥à¤Ÿà¥‡ तानà¥à¤¤à¥à¤°à¤¿à¤•à¤¸à¤®à¤¸à¥à¤¯à¤¾à¤ƒ अनà¥à¤­à¥‚यमानाः सनà¥à¤¤à¤¿ ।',
+
+# HTML forms
+'htmlform-invalid-input' => 'भवता आरोपितेषॠअंशेषॠकाचन समसà¥à¤¯à¤¾ विदà¥à¤¯à¤¤à¥‡ ।',
+'htmlform-select-badoption' => 'भवता निरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤‚ मौलà¥à¤¯à¤‚ यà¥à¤•à¥à¤¤à¤µà¤¿à¤•à¤²à¥à¤ªà¤ƒ न ।',
+'htmlform-int-invalid' => 'भवता निरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤‚ मौलà¥à¤¯à¤‚ पूरà¥à¤£à¤¾à¤™à¥à¤•à¤ƒ न ।',
+'htmlform-float-invalid' => 'भवता निरà¥à¤¦à¤¿à¤·à¥à¤Ÿà¤‚ मौलà¥à¤¯à¤‚ संखà¥à¤¯à¤¾ न ।',
);
diff --git a/languages/messages/MessagesSah.php b/languages/messages/MessagesSah.php
index a9fd4081..12e3625b 100644
--- a/languages/messages/MessagesSah.php
+++ b/languages/messages/MessagesSah.php
@@ -69,8 +69,8 @@ $messages = array(
'tog-shownumberswatching' => 'СирÑйи кÑÑ‚ÑÑн көрөр дьон ахÑаанын көрдөр',
'tog-oldsig' => 'Баар илии баттааһын:',
'tog-fancysig' => 'БÑÐ¹Ñ Ð¸Ð»Ð¸Ð¸ баттааһына (ыйынньыга Ñуох)',
-'tog-externaleditor' => 'Ðтын ÑтиллибÑÑ‚ÑÒ•Ð¸Ð½Ñ Ñ‚Ð°Ñ ÑÑ€ÑдÑÑктÑри туһан (билÑÑ€ дьоҥҥо аналлаах, Ñиһилии [http://www.mediawiki.org/wiki/Manual:External_editors манна] көр)',
-'tog-externaldiff' => 'Ðтын ÑтиллибÑÑ‚ÑÒ•Ð¸Ð½Ñ Ð±Ð°Ñ€Ñ‹Ð»Ð»Ð°Ñ€Ñ‹ Ñ‚Ñҥниир Ñ‚Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°Ð½Ñ‹ туһан (билÑÑ€ дьоҥҥо аналлаах, Ñиһилии [http://www.mediawiki.org/wiki/Manual:External_editors манна] көр)',
+'tog-externaleditor' => 'Ðтын ÑтиллибÑÑ‚ÑÒ•Ð¸Ð½Ñ Ñ‚Ð°Ñ ÑÑ€ÑдÑÑктÑри туһан (билÑÑ€ дьоҥҥо аналлаах, Ñиһилии [//www.mediawiki.org/wiki/Manual:External_editors манна] көр)',
+'tog-externaldiff' => 'Ðтын ÑтиллибÑÑ‚ÑÒ•Ð¸Ð½Ñ Ð±Ð°Ñ€Ñ‹Ð»Ð»Ð°Ñ€Ñ‹ Ñ‚Ñҥниир Ñ‚Ð°Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°Ð½Ñ‹ туһан (билÑÑ€ дьоҥҥо аналлаах, Ñиһилии [//www.mediawiki.org/wiki/Manual:External_editors манна] көр)',
'tog-showjumplinks' => '"Манна бар" ыйынньыктары көрдөр',
'tog-uselivepreview' => 'Тутатына хайдах буоларын көрүү (JavaScript, тургутуу быһыытынан)',
'tog-forceeditsummary' => 'Тугу уларыппытым туһунан Ñуруйбатахпына ÑÑÑ€ÑÑ‚',
@@ -166,15 +166,7 @@ $messages = array(
'listingcontinuesabbrev' => '(Ñалгыыта)',
'index-category' => 'ИндекÑтаммыт ÑирÑйдÑÑ€',
'noindex-category' => 'ИндекÑктаммыт ÑирÑйдÑÑ€ Ñуохтар',
-
-'mainpagetext' => "'''«MediaWiki» Ñөпкө туруорулунна.'''",
-'mainpagedocfooter' => 'Биики программатын туһунан [http://meta.wikimedia.org/wiki/Help:Contents Ñправочникка] көрүөххүн Ñөп.
-
-== Саҕаланыыта ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings ÐšÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ñ ÑƒÐ»Ð°Ñ€Ñ‹Ñ‚Ñ‹Ñ‹Ñ‚Ñ‹Ð½ параметрдара]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki релизтарын почтовай иÑпииһÑгÑ]',
+'broken-file-category' => 'БилÑÒ•Ñ ÑигÑлÑÑ€Ñ Ð°Ð»Ò•Ð°Ñтаах ÑирÑйдÑÑ€',
'about' => 'Бу туһунан',
'article' => 'ЫÑтатыйа',
@@ -226,10 +218,10 @@ $messages = array(
'history' => 'ИÑториÑта',
'history_short' => 'ИÑториÑ',
'updatedmarker' => 'КÑнники киириим кÑнниттÑн уларыйыылар',
-'info_short' => 'ИнформациÑ',
'printableversion' => 'БÑчÑÑÑ‚Ñ‚Ð¸Ð¸Ñ€Ð³Ñ Ð°Ð½Ð°Ð°Ð½ көрүү',
'permalink' => 'Куруук баар ыйынньык',
'print' => 'БÑчÑÑÑ‚Ñ‚ÑÑ',
+'view' => 'Көрүү',
'edit' => 'Уларыт',
'create' => 'Саҥаны айыы',
'editthispage' => 'Бу ÑирÑйи уларыт',
@@ -237,6 +229,7 @@ $messages = array(
'delete' => 'Соттор',
'deletethispage' => 'Бу ÑирÑйи Ñоттор',
'undelete_short' => 'Төттөрү аҕал {{PLURAL:$1|биир уларытыыны|$1 уларытыылары}}',
+'viewdeleted_short' => '{{PLURAL:$1|Соҕотох Ñотторуллубут көннөрүүнү|$1 Ñотторуллубут көннөрүүнү}} көрүү',
'protect' => 'Уларыппат гын',
'protect_change' => 'уларытыы',
'protectthispage' => 'Бу ÑирÑйи уларыппат гын',
@@ -320,6 +313,8 @@ $1',
'toc' => 'Ð˜Ñ Ñ…Ð¾Ò»Ð¾Ð¾Ð½Ð¾',
'showtoc' => 'көрдөр',
'hidetoc' => 'көрдөрүмÑ',
+'collapsible-collapse' => 'Сабыы',
+'collapsible-expand' => 'ТÑнитии',
'thisisdeleted' => '$1 көрдөрөбүн ÑбÑÑ‚ÑÑ€ хоÑтуубун дуу?',
'viewdeleted' => '$1 көрдөрөбүн?',
'restorelink' => '{{PLURAL:$1|биир Ñотторуллубут көннөрүү|$1 Ñотторуллубут көннөрүүлÑÑ€}}',
@@ -331,6 +326,8 @@ $1',
'page-rss-feed' => '"$1" RSS биÑрии',
'page-atom-feed' => '"$1" Atom биÑрии',
'red-link-title' => '$1 (маннык ÑирÑй Ñуох)',
+'sort-descending' => 'Кыччыырынан наардаа',
+'sort-ascending' => 'Улаатарынан наардаа',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'ЫÑтатыйа',
@@ -410,12 +407,13 @@ $1',
'protectedpagetext' => 'Бу ÑирÑй уларытыллыбат.',
'viewsourcetext' => 'Эн бу ÑирÑй төрдүн көрүөххүн уонна төгүллүөххүн Ñөп:',
'protectedinterface' => 'Бу ÑирÑй бырагыраамма холбуурун хааччыйар, онон моһуогурууттан халытан хатанан турар',
-'editinginterface' => "'''Болҕой:''' Быраҕыраамма Ñ‚Ð°Ñ ÐºÓ©Ñтүүтүн (интерфейÑын) хааччыйар тиÑкиһи уларытаары гынан ÑÑ€Ñҕин. Бу ÑирÑйи уларыттаххына атын кыттааччылар көрөллөрүгÑÑ€ бырагыраамма көÑÑ‚Ò¯Ò¯Ñ‚Ñ ÑƒÐ»Ð°Ñ€Ñ‹Ð¹Ñ‹Ð°. ТылбааÑÑ‚Ñ‹Ñ‹Ñ€ буоллаххына Медиавики бырайыактарын Ñахалыы тылбааһын [http://translatewiki.net/wiki/Main_Page?setlang=sah translatewiki.net] туһан.",
+'editinginterface' => "'''Болҕой:''' Быраҕыраамма Ñ‚Ð°Ñ ÐºÓ©Ñтүүтүн (интерфейÑын) хааччыйар тиÑкиһи уларытаары гынан ÑÑ€Ñҕин. Бу ÑирÑйи уларыттаххына атын кыттааччылар көрөллөрүгÑÑ€ бырагыраамма көÑÑ‚Ò¯Ò¯Ñ‚Ñ ÑƒÐ»Ð°Ñ€Ñ‹Ð¹Ñ‹Ð°. ТылбааÑÑ‚Ñ‹Ñ‹Ñ€ буоллаххына Медиавики бырайыактарын Ñахалыы тылбааһын [//translatewiki.net/wiki/Main_Page?setlang=sah translatewiki.net] туһан.",
'sqlhidden' => '(SQL ыйытык киÑÑ‚Ñммит)',
'cascadeprotected' => 'Бу ÑирÑй уларыйар кыаҕа Ñуох, тоҕо диÑÑ‚ÑÑ…Ñ…Ñ ÑƒÐ»Ð°Ñ€Ñ‹Ð¹Ð°Ñ€Ð° бобуллубут (каÑкаднай көмүÑкÑл холбоммут) {{PLURAL:$1|ÑирÑй бөлөҕөр|ÑирÑйдÑÑ€ бөлөхтөрүгÑÑ€}} киирÑÑ€:
$2',
'namespaceprotected' => "Эн '''$1''' аат ÑйгÑтигÑÑ€ киирÑÑ€ ÑирÑйдÑри уларытар кыаҕыҥ Ñуох.",
-'customcssjsprotected' => 'Эн бу ÑирÑйи уларытар кыаҕыҥ Ñуох, тоҕо диÑÑ‚ÑÑ…Ñ…Ñ Ð¾Ð½Ñ‚ÑƒÒ¥ атын киһи Ñ‚ÑƒÑ Ð±ÑйÑтин туруорууларын таарыйар.',
+'customcssprotected' => 'Эн бу CSS-ÑирÑйи уларытар кыаҕыҥ Ñуох, тоҕо диÑÑ‚ÑÑ…Ñ…Ñ Ð¾Ð½Ñ‚ÑƒÒ¥ атын киһи Ñ‚ÑƒÑ Ð±ÑйÑтин туруорууларын таарыйар.',
+'customjsprotected' => 'Эн бу JavaScript-ÑирÑйи уларытар кыаҕыҥ Ñуох, тоҕо диÑÑ‚ÑÑ…Ñ…Ñ Ð¾Ð½Ñ‚ÑƒÒ¥ атын киһи Ñ‚ÑƒÑ Ð±ÑйÑтин туруорууларын таарыйар.',
'ns-specialprotected' => '{{ns:special}} ааттаах ÑирÑйдÑÑ€ уларытыллыбаттар.',
'titleprotected' => "Бу Ð±Ð°Ñ Ñ‚Ñ‹Ð» оҥоһулларын [[User:$1|$1]] боппут.
Ð¢Ó©Ñ€Ò¯Ó©Ñ‚Ñ - ''$2''",
@@ -454,6 +452,7 @@ $2',
'createaccount' => 'БÑлиÑÑ‚Ñнии',
'gotaccount' => "БÑлиÑÑ‚Ñммитиҥ дуо? '''$1'''.",
'gotaccountlink' => 'Ðатыҥ',
+'userlogin-resetlink' => 'КиирÑÑ€ тылгын умнубуккун дуо?',
'createaccountmail' => 'e-mail-ынан',
'createaccountreason' => 'ТөрүөтÑ:',
'badretype' => 'Киирии тылларыҥ Ñөп түбÑÑпÑтилÑÑ€.',
@@ -463,13 +462,15 @@ $2',
'createaccounterror' => 'Саҥа аат бÑлиÑтиир кыах Ñуох: $1',
'nocookiesnew' => 'Маннык ааттаах кыттааччы баар буолла гынан баран, ÑиÑтиÑмÑÒ•Ñ ÐºÐ¸Ð¸Ñ€Ñ Ð¸Ð»Ð¸Ðº. {{SITENAME}} «cookies» туттар, оттон Ñн көмпүүтÑргÑÑ€ ону туһанар бобуллубут. Бука диÑн «cookies» холбоо, онтон Ó©ÑÑÓ© киирÑн көр.',
'nocookieslogin' => '{{SITENAME}} дьону билÑÑ€Ð³Ñ Â«cookies» туттар. Эн көмпүүтÑргÑÑ€ «cookies» бобуллубут. Ону холбоон баран Ó©ÑÑÓ© киирÑн көр.',
+'nocookiesfornew' => 'Ðат кыайан бÑлиÑÑ‚ÑниллибÑÑ‚Ñ. ТөрүөтүнÑн атын Ñаайка ÑибидиÑÐ½Ð½ÑŒÑ Ð±Ð¸Ñрии (CSRF) бобуллубута буолуон Ñөп.
+Куукилар холбоно Ñылдьалларын көрөн баран Ó©ÑÑÓ© Ð±Ð¸Ð¸Ñ€Ð´Ñ Ð±Ð¾Ñ€ÑƒÐ¾Ð±Ð°Ð»Ð°Ð°.',
'noname' => 'Эн тиһилик билÑÑ€ аатын киллÑрбÑÑ‚Ñххин.',
'loginsuccesstitle' => 'Киирдиҥ',
'loginsuccess' => "'''Билигин бу аатынан үлÑлиигин: \"\$1\".'''",
'nosuchuser' => 'Маннык - "$1" - ааттаах кыттааччы Ñуох.
Улахан кыра буукубалар атыннаахтар.
Ðатыҥ Ñөпкө Ñуруллубутун көр ÑбÑÑ‚ÑÑ€ [[Special:UserLogin/signup|Ñаҥаттан бÑлиÑÑ‚Ñн]].',
-'nosuchusershort' => 'Маннык - "<nowiki>$1</nowiki>" - ааттаах кыттааччы Ñуох. Ðатыҥ Ñөпкө Ñуруллубутун көр.',
+'nosuchusershort' => 'Маннык - "$1" - ааттаах кыттааччы Ñуох. Ðатыҥ Ñөпкө Ñуруллубутун көр.',
'nouserspecified' => 'Кыттааччы аатын киллÑриÑÑ…Ñ‚ÑÑххин.',
'login-userblocked' => 'Бу кыттааччы бобуллубут. Ð¢Ð¸Ò»Ð¸ÐºÐºÑ ÐºÐ¸Ð¸Ñ€Ð¸Ð¸ көҥүллÑммÑÑ‚.',
'wrongpassword' => 'Киирии тылыҥ Ñыыһалаах. Ó¨ÑÑÓ© киллÑÑ€Ñн көр.',
@@ -517,13 +518,14 @@ $2',
'usernamehasherror' => 'Ðакка ÑÑ€ÑһиÑÐºÐºÑ Ð±ÑлиÑтин туттар Ñатаммат',
'login-throttled' => 'Ðаһаа ÑлбÑхтик бÑйÑÒ¥ ааккын билиһиннÑÑ€Ñ Ñатаатыҥ.
Бука диÑн кыратык тохтуу Ñ‚Ò¯Ò»Ñн баран Ó©ÑÑÓ© боруобалаа.',
+'login-abort-generic' => 'Бу аатынан Ñатаан киирбÑтиҥ - быÑтан хаалла',
'loginlanguagelabel' => 'Омугун тыла: $1',
'suspicious-userlogout' => 'СеанÑÑ‹ түмүктүүр ыйытыгыҥ ылыныллыбата, тоҕо диÑÑ‚ÑÑ…Ñ…Ñ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€ ÑбÑÑ‚ÑÑ€ кÑÑштыыр прокÑи Ð°Ð»Ò•Ð°Ñ Ñ‹Ñ‹Ð¿Ð¿Ñ‹Ñ‚ ыйытыктарыгар майгынныыр.',
# E-mail sending
'php-mail-error-unknown' => 'mail() PHP-функциÑтыгар туох ÑÑ€Ñ Ð°Ð»Ò•Ð°Ñ Ñ‚Ð°Ñ…Ñыбыт',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Киирии тылы уларытыы',
'resetpass_announce' => 'Бу быÑтах кÑÐ¼Ò¥Ñ Ñ‚ÑƒÑ‚Ñ‚ÑƒÐ»Ð»Ð°Ñ€ киирии тылынан киирдиҥ. Ð¢Ò¯Ð¼Ò¯ÐºÐºÑ Ñаҥа киирии тылла Ñуруй:',
'resetpass_text' => '<!-- ТиÑкиһи манна ÑбÑн Ñуруйуҥ -->',
@@ -542,6 +544,40 @@ $2',
Баҕар уларыппытыҥ буолуо ÑбÑÑ‚ÑÑ€ быÑтах кÑÐ¼Ò¥Ñ Ñ‚ÑƒÑ‚Ñ‚ÑƒÐ»Ð»Ð°Ñ€ киирии тылы оҥотторбутуҥ буолуо.',
'resetpass-temp-password' => 'БыÑтах кÑÐ¼Ò¥Ñ Ñ‚ÑƒÑ‚Ñ‚ÑƒÐ»Ð»Ð°Ñ€ киирии тыл:',
+# Special:PasswordReset
+'passwordreset' => 'Киирии тылы Ñаҥаттан',
+'passwordreset-text' => 'Бу форманы толорон аккааунуҥ туһунан Ñурук тутуоххун Ñөп.',
+'passwordreset-legend' => 'Киирии тылы Ñаҥаттан',
+'passwordreset-disabled' => 'Бу Ð±Ð¸Ð¸ÐºÐ¸Ð³Ñ ÐºÐ¸Ð¸Ñ€Ð¸Ð¸ тылы Ñаҥардыы бобуллубут.',
+'passwordreset-pretext' => '{{PLURAL:$1||Ðллара көÑÑ‚Ó©Ñ€ дааннайдартан биирин талан Ñуруй}}',
+'passwordreset-username' => 'Кыттааччы:',
+'passwordreset-domain' => 'Домен:',
+'passwordreset-email' => 'Электроннай почтата:',
+'passwordreset-emailtitle' => '{{SITENAME}} бырайыакка аатын туһунан',
+'passwordreset-emailtext-ip' => 'Ким ÑÑ€Ñ (баҕар Ñн буолуо, бу IP-ттан $1) {{SITENAME}} ($4) бырайыакка бÑлиÑÑ‚Ñнииҥ туһунан ÑибидиÑнньÑни көрдөөбүт.
+Бу Ñлектрон аадырыһы кытта бу {{PLURAL:$3|аат ÑитимнÑÑÑ…|ааттар ÑитимнÑÑÑ…Ñ‚ÑÑ€}}
+
+$2
+
+Бу быÑтах кÑÐ¼Ò¥Ñ Ð°Ð½Ð°Ð»Ð»Ð°Ð°Ñ… {{PLURAL:$3|киирии тыл|кирии тыллар}} {{PLURAL:$5|биир күн үлÑлиÑÒ•Ñ|$5 күн үлÑлиÑÑ…Ñ‚ÑÑ€Ñ}}.
+Эн Ñ‚Ð¸Ò»Ð¸Ð»Ð¸ÐºÐºÑ Ð°Ð°ÐºÐºÑ‹Ð½ ÑÑ‚Ñн Ñаҥа киирии тылы киллÑриÑÑ…Ñ‚ÑÑххин.
+Ó¨Ñкө бу ыйытыгы ыыппатах буоллаххына, ÑбÑÑ‚ÑÑ€ урукку киирии тылгын өйдөөн кÑлбит буоллаххына
+бу биллÑриини аахайыа Ñуоххун Ñөп.
+Оччоҕо урукку киирии тылыҥ оннунан хаалыа.',
+'passwordreset-emailtext-user' => '$1 диÑн кыттааччы {{SITENAME}} ($4) бырайыакка бÑлиÑÑ‚Ñнииҥ туһунан ÑибидиÑнньÑни көрдөөбүт.
+Бу Ñлектрон аадырыһы кытта бу {{PLURAL:$3|аат ÑитимнÑÑÑ…|ааттар ÑитимнÑÑÑ…Ñ‚ÑÑ€}}
+
+$2
+
+Бу быÑтах кÑÐ¼Ò¥Ñ Ð°Ð½Ð°Ð»Ð»Ð°Ð°Ñ… {{PLURAL:$3|киирии тыл|кирии тыллар}} {{PLURAL:$5|биир күн үлÑлиÑÒ•Ñ|$5 күн үлÑлиÑÑ…Ñ‚ÑÑ€Ñ}}.
+Эн Ñ‚Ð¸Ò»Ð¸Ð»Ð¸ÐºÐºÑ Ð°Ð°ÐºÐºÑ‹Ð½ ÑÑ‚Ñн Ñаҥа киирии тылы киллÑриÑÑ…Ñ‚ÑÑххин.
+Ó¨Ñкө бу ыйытыгы ыыппатах буоллаххына, ÑбÑÑ‚ÑÑ€ урукку киирии тылгын өйдөөн кÑлбит буоллаххына
+бу биллÑриини аахайыа Ñуоххун Ñөп.
+Оччоҕо урукку киирии тылыҥ оннунан хаалыа.',
+'passwordreset-emailelement' => 'Кыттааччы: $1
+БыÑтах киирии тыл: $2',
+'passwordreset-emailsent' => 'Санатыы ыытылынна.',
+
# Edit page toolbar
'bold_sample' => 'Модьу бичик',
'bold_tip' => 'Модьу бичик',
@@ -553,8 +589,6 @@ $2',
'extlink_tip' => 'Ð¢Ð°Ñ Ñ‹Ð¹Ñ‹Ð½Ð½ÑŒÑ‹Ðº (http:// префикÑÑ‹ умнума)',
'headline_sample' => 'Ð‘Ð°Ñ Ñ‚Ñ‹Ð»',
'headline_tip' => '2-Ñ Ñ‚Ð°Ò»Ñ‹Ð¼ Ð±Ð°Ñ Ñ‚Ñ‹Ð»Ð°',
-'math_sample' => 'Формуланы манна киллÑÑ€',
-'math_tip' => 'Математика формулата (LaTeX)',
'nowiki_sample' => 'Манна форматтамматах Ñуругу киллÑриҥ',
'nowiki_tip' => 'Биики формаатын билинимÑ',
'image_sample' => 'Холобур.jpg',
@@ -641,7 +675,7 @@ IP-аадырыһа ÑÑ€Ñ ÐºÓ©ÑÑ‚Ó©Ñ€.
'noarticletext-nopermission' => 'Билигин бу ÑирÑй кураанах.
Бу [[Special:Search/{{PAGENAME}}|тылы атын ÑирÑйдÑÑ€Ð³Ñ ÐºÓ©Ñ€Ð´Ó©Ó©Ð½ көрүөххүн]] Ñөп,
ÑбÑÑ‚ÑÑ€ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} Ñурунаалларга манна Ñыһыаннаах Ñуруктары булуоххун Ñөп].</span>',
-'userpage-userdoesnotexist' => '"$1" аат бÑлиÑÑ‚ÑммÑÑ‚ÑÑ…. Бу ÑирÑйи оҥорор/уларытар баҕалааххын дуо?',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" аат бÑлиÑÑ‚ÑммÑÑ‚ÑÑ…. Бу ÑирÑйи оҥорор/уларытар баҕалааххын дуо?',
'userpage-userdoesnotexist-view' => '"$1" кыттааччы аата бÑлиÑÑ‚ÑниллибÑÑ‚ÑÑ….',
'blocked-notice-logextract' => 'Бу кыттааччы билигин бобуллубут.
Манна бобуу Ñурунаалын бүтÑһик Ñуруга көÑÑ‚Ó©Ñ€:',
@@ -676,6 +710,7 @@ IP-аадырыһа ÑÑ€Ñ ÐºÓ©ÑÑ‚Ó©Ñ€.
'token_suffix_mismatch' => "'''Эн уларытыыҥ киирбÑÑ‚Ñ, тоҕо диÑÑ‚ÑÑ…Ñ…Ñ Ñн бырагырааммаҥ Ñорох Ñурук бÑлиÑлÑрин Ñыыһа көрөр Ñбит.
ЫÑтатыйаны буорту гынымаары уларытыыҥ ылыныллыбата.
Итинник Ñыыһалар үкÑүн прокÑи-ÑиÑрбÑрдÑри туһаннахха тахÑааччылар.'''",
+'edit_form_incomplete' => "'''Уларытыы Ñорҕото ÑиÑрбÑÑ€Ð³Ñ Ñ‚Ð¸Ð¸Ð¹Ð±ÑÑ‚Ñ. ҮчүгÑйдик Ñыныйан көр, Эн уларытыыларыҥ туох да омÑото Ñуохтар дуо. Онтон Ó©ÑÑÓ© боруобалаа.'''",
'editing' => 'Уларытыы $1',
'editingsection' => 'Уларытыы $1 (раздел)',
'editingcomment' => 'Уларытыы $1 (Ñаҥа Ñалаа)',
@@ -912,8 +947,8 @@ $1",
# Suppression log
'suppressionlog' => 'КиÑÑ‚ÑÑһин Ñурунаала',
-'suppressionlogtext' => 'Ðллара Ñоторутааҥҥы Ñотуулар уонна хааччахтааһыннар тиһиктÑÑ€Ñ Ð±ÑриллÑÑ€ (админиÑтраатардарга көÑтүбÑÑ‚ ÑÑÑкÑйдÑÑ€ ÑмиÑ).
-Билигин баар хааччахтар тиһиктÑрин көрөргө [[Special:IPBlockList|IP хааччахтааһынын тиһигÑÑ€]] киир.',
+'suppressionlogtext' => 'Ðллара даһабылларга көÑтүбÑти таарыйар Ñотуулар уонна хааччахтааһыннар тиһиктÑÑ€Ñ Ð±ÑриллÑÑ€.
+Билигин баар хааччахтары көрөргө [[Special:BlockList|IP хааччахтааһынын тиһигÑÑ€]] киир.',
# History merging
'mergehistory' => 'СилбÑһии ÑирÑйин хронологиÑта',
@@ -1020,12 +1055,13 @@ $1",
'searchdisabled' => '{{SITENAME}} көрдүүр Ñ‚ÑÑ€Ð¸Ð»Ñ Ð°Ñ€Ð°Ð°Ñ€Ñ‹Ð»Ð»Ñ‹Ð±Ñ‹Ñ‚. Ðтын көрдүүр ÑиÑтемаларынан наадыйар ÑирÑйдÑргитин көрдөтүөххүтүн Ñөп. Ол гынан баран поиÑковик кÑÑһигÑÑ€ баар торум ÑргÑрбит буолуон Ñөп.',
# Quickbar
-'qbsettings' => 'ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð¿Ð°Ð½ÐµÐ»Ð°',
-'qbsettings-none' => 'КөрдөрүмÑ',
-'qbsettings-fixedleft' => 'Ð¥Ð°Ò¥Ð°Ñ Ó©Ñ‚Ñ‚Ó© хамÑаабат',
-'qbsettings-fixedright' => 'Уҥа Ó©Ñ‚Ñ‚Ó© хамÑаабат',
-'qbsettings-floatingleft' => 'Ð¥Ð°Ò¥Ð°Ñ Ó©Ñ‚Ñ‚Ó© уÑтаҥныыр',
-'qbsettings-floatingright' => 'Уҥа Ó©Ñ‚Ñ‚Ó© уÑтаҥныыр',
+'qbsettings' => 'ÐÐ°Ð²Ð¸Ð³Ð°Ñ†Ð¸Ñ Ð¿Ð°Ð½ÐµÐ»Ð°',
+'qbsettings-none' => 'КөрдөрүмÑ',
+'qbsettings-fixedleft' => 'Ð¥Ð°Ò¥Ð°Ñ Ó©Ñ‚Ñ‚Ó© хамÑаабат',
+'qbsettings-fixedright' => 'Уҥа Ó©Ñ‚Ñ‚Ó© хамÑаабат',
+'qbsettings-floatingleft' => 'Ð¥Ð°Ò¥Ð°Ñ Ó©Ñ‚Ñ‚Ó© уÑтаҥныыр',
+'qbsettings-floatingright' => 'Уҥа Ó©Ñ‚Ñ‚Ó© уÑтаҥныыр',
+'qbsettings-directionality' => 'Туттарыллыбыт, тылыҥ Ñуругун-бичигин хайыÑхатыттан тутулуктаах',
# Preferences page
'preferences' => 'Уларытыылар',
@@ -1036,9 +1072,10 @@ $1",
'changepassword' => 'Киирии тылы уларытарга',
'prefs-skin' => 'Ð¢Ð°Ñ ÐºÓ©ÑÑ‚Ò¯Ò¯',
'skin-preview' => 'Хайдах буолара',
-'prefs-math' => 'Фуормулалар',
'datedefault' => 'Көннөрү көÑтүүтÑ',
+'prefs-beta' => 'Бета-туруоруулар',
'prefs-datetime' => 'КүнÑ-дьыла уонна кÑмÑ',
+'prefs-labs' => 'Тургутуллар туруоруулар',
'prefs-personal' => 'Кыттааччы туруоруулара',
'prefs-rc' => 'КÑлиҥҥи уларытыылар',
'prefs-watchlist' => 'КÑÑ‚ÑÑһин',
@@ -1060,8 +1097,6 @@ $1",
'columns' => 'Колонкалара:',
'searchresultshead' => 'Көрдөөһүн түмүгÑ',
'resultsperpage' => 'СирÑÐ¹Ð³Ñ Ð±ÑƒÐ»ÑƒÐ»Ð»ÑƒÐ±ÑƒÑ‚ Ñуруктар ахÑааннара:',
-'contextlines' => 'Булуллубут ÑирÑй Ñ…Ð°Ñ Ñтрокатын көрдөрөрө:',
-'contextchars' => 'Строкааҕа контекÑÑ‚ бÑлиÑлÑрин ахÑаана:',
'stub-threshold' => '<a href="#" class="stub">омооннорго ыйынньыктары</a> оҥоруу боруога:',
'stub-threshold-disabled' => 'ÐрахÑыбыт',
'recentchangesdays' => 'Ð¥Ð°Ñ Ñ…Ð¾Ð½ÑƒÐº иһинÑн уларытыылары көрдөрөргө:',
@@ -1074,7 +1109,7 @@ $1",
'savedprefs' => 'Эн туруорууларыҥ олохтоннулар.',
'timezonelegend' => 'Олохтоох кÑм:',
'localtime' => 'Олохтоох кÑмим:',
-'timezoneuseserverdefault' => 'СиÑрбÑÑ€ туруоруутунан',
+'timezoneuseserverdefault' => 'СиÑрбÑÑ€ туруоруутунан ($1)',
'timezoneuseoffset' => 'Ðтын (Ñыҕарыйыытын көрдөр)',
'timezoneoffset' => 'Сыҕарыйыы¹:',
'servertime' => 'СиÑрбÑÑ€ бириÑмÑÑ‚Ñ:',
@@ -1123,8 +1158,8 @@ $1 {{PLURAL:$1|бÑлиÑÑ‚Ñ‚Ñн|бÑлиÑÑ‚Ñ‚Ñн (буукубаттан)}}
'prefs-help-gender' => 'Булгуччута Ñуох. Бырагыраамма Ñорох дьоҥҥо туһаайыллыбыт биллÑриилÑригÑÑ€ ÑбÑÑ‚ÑÑ€ кинилÑÑ€Ð³Ñ Ñыһыаннаах ÑтиилÑригÑÑ€ кытааччы дьахтарыттан ÑÑ€ киһититтÑн көрөн Ñтии тутулун уларытан биÑриÑн Ñөп. Туора дьоҥҥо көÑÑ‚Ó©Ñ€ бÑлиÑÑ‚ÑÑһин.',
'email' => 'Почта',
'prefs-help-realname' => 'Сурукка киирбит аатыҥ (булгуччута Ñуох): ким бу ÑирÑйи уларыппытын көрдөрөргө туттуллар',
-'prefs-help-email' => 'Электроннай аадырыһыҥ булгуччута Ñуох, ол ÑÑ€ÑÑри киирии тылгын умуннаххына Ñанатарга көмөлөһүө.
-Эбиитин атын кыттааччылар ÑйиÑÑ…Ñ Ð±ÑйÑҕин билбÑÐºÐºÑ ÑÑ€Ñ Ñурук Ñуруйалларын көҥүллүөххүн Ñөп.',
+'prefs-help-email' => 'Электроннай аадырыһы Ñуруйар булгуччута Ñуох, ол ÑÑ€ÑÑри киирии тылгын умуннаххына Ñанатарга көмөлөһүө.',
+'prefs-help-email-others' => 'Эбии. Ðтын кыттааччылар Эйигин кытта Ñлектроннай почтаҕын билбÑÐºÐºÑ ÑÑ€Ñ ÑуруйÑар кыахтаныахтара.',
'prefs-help-email-required' => 'E-mail баар буолуохтаах.',
'prefs-info' => 'Сүрүн ÑибидиÑнньÑлÑÑ€',
'prefs-i18n' => 'ИнтернационализациÑ',
@@ -1249,15 +1284,15 @@ $1 {{PLURAL:$1|бÑлиÑÑ‚Ñ‚Ñн|бÑлиÑÑ‚Ñ‚Ñн (буукубаттан)}}
'right-userrights' => 'Кытааччылар бырааптарын барытын уларытыы',
'right-userrights-interwiki' => 'Ðтын биики-Ñаайтарга кыттааччылар бырааптарын уларытыы',
'right-siteadmin' => 'Ð‘Ð¸Ð»Ñ Ð¾Ð»Ð¾Ò•Ð¾Ñ€ (database) киирÑри бобуу уонна көҥүллÑÑһин',
-'right-reset-passwords' => 'атын кыттааччылар киирии тылларын уларытыы',
'right-override-export-depth' => 'ÑирÑйдÑри таһаарааһын (ÑкÑпортааһын), ÑитимнÑÑÑ… ÑирÑйдÑри 5-Ñ Ñ‚Ð°Ò»Ñ‹Ð¼Ò¥Ð° дылы холбоон туран',
'right-sendemail' => 'Ðтын кыттааччыларга Ñл. почтаны ыытарга',
# User rights log
-'rightslog' => 'Кыттаачы бырааптарын Ñурунаала',
-'rightslogtext' => 'Бу кыттааччы бырааптарын уларыйыытын көрдөрөр Ñурунаал.',
-'rightslogentry' => '$1 кыттаачы киирÑÑ€ бырааба $2-тан $3 уларыйда',
-'rightsnone' => '(Ñуох)',
+'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' => 'бу ÑирÑйи ааҕыы',
@@ -1378,13 +1413,13 @@ $1 {{PLURAL:$1|бÑлиÑÑ‚Ñ‚Ñн|бÑлиÑÑ‚Ñ‚Ñн (буукубаттан)}}
'minlength1' => 'Ð‘Ð¸Ð»Ñ Ð°Ð°Ñ‚Ð° биир Ñуругунан буолуохтаах.',
'illegalfilename' => '«$1» Ð±Ð¸Ð»Ñ Ð°Ð°Ñ‚Ð° аакка туттуллубат бÑлиÑлÑрдÑÑÑ…. Уларыт уонна Ó©ÑÑÓ© киллÑÑ€Ñн көр.',
'badfilename' => 'Ð‘Ð¸Ð»Ñ Ð°Ð°Ñ‚Ð° маннык буолла: "$1".',
-'filetype-mime-mismatch' => 'Ð‘Ð¸Ð»Ñ ÐºÑтирÑÑÒ»Ð¸Ð½Ñ MIME-көрүҥÑÑ€ Ñөп түбÑÑпÑÑ‚.',
+'filetype-mime-mismatch' => '«.$1» Ð±Ð¸Ð»Ñ ÐºÑтирÑÑÒ»Ð¸Ð½Ñ MIME-көрүҥÑÑ€ ($2) Ñөп түбÑÑпÑÑ‚.',
'filetype-badmime' => 'MIME-типтÑÑÑ… "$1" билÑлÑÑ€ кыайан манна Ñуруллубаттар.',
'filetype-bad-ie-mime' => 'Бу билÑни хачайдыыр табыллыбат, тоҕо диÑÑ‚ÑÑ…Ñ…Ñ Internet Explorer кинини «$1» быһыытынан көрүө, ол аата бобуллубут уонна кутталлаах Ð±Ð¸Ð»Ñ ÐºÓ©Ñ€Ò¯Ò¥Ò¯Ð½ курдук.',
'filetype-unwanted-type' => "'''\".\$1\"''' — Ð±Ð¸Ð»Ñ Ð¾Ñ‡Ñ‡Ð¾ ÑөбүлÑммÑÑ‚ көрүҥÑ.
Маннык {{PLURAL:\$3|көрүҥү|көрүҥнÑри}} туһанар ордук: \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' — Ð±Ð¸Ð»Ñ Ð±Ð¾Ð±ÑƒÐ»Ð»ÑƒÐ±ÑƒÑ‚ көрүҥÑ.
-КөҥүллÑммит Ð±Ð¸Ð»Ñ {{PLURAL:\$3|көрүҥÑ|көрүҥнÑÑ€Ñ}}: \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|Ð±Ð¸Ð»Ñ Ð±Ð¾Ð±ÑƒÐ»Ð»ÑƒÐ±ÑƒÑ‚ көрүҥÑ|Ð±Ð¸Ð»Ñ Ð±Ð¾Ð±ÑƒÐ»Ð»ÑƒÐ±ÑƒÑ‚ көрүҥнÑÑ€Ñ}}..
+КөҥүллÑммит Ð±Ð¸Ð»Ñ {{PLURAL:$3|ÐºÓ©Ñ€Ò¯Ò¥Ñ Ð¼Ð°Ð½Ð½Ñ‹Ðº|көрүҥнÑÑ€Ñ Ð¼Ð°Ð½Ð½Ñ‹ÐºÑ‚Ð°Ñ€}}: $2.',
'filetype-missing' => 'Ð‘Ð¸Ð»Ñ Ñ€Ð°ÑширениÑта Ñуох (холобур ".jpg").',
'empty-file' => 'Ыыппыт билÑÒ¥ кураанах.',
'file-too-large' => 'Ыыппыт билÑÒ¥ наһаа улахан Ñбит.',
@@ -1400,6 +1435,7 @@ $1 {{PLURAL:$1|бÑлиÑÑ‚Ñ‚Ñн|бÑлиÑÑ‚Ñ‚Ñн (буукубаттан)}}
'large-file' => 'Манна $1 байт аннынан ыйааһыннаах ойуулары туттар ордук (Ñн Ñуруйбут билÑÒ¥ $2 байтаах).',
'largefileserver' => 'Ð‘Ð¸Ð»Ñ Ñ‹Ð¹Ð°Ð°Ò»Ñ‹Ð½Ð° көҥүллÑммиттÑн ордук.',
'emptyfile' => 'Суруйбут билÑÒ¥ арааһа кураанах быһылаах. Баҕар Ð±Ð¸Ð»Ñ Ð°Ð°Ñ‚Ñ‹Ð½ Ñыыһа Ñуруйбутуҥ буолаарай. Ó¨ÑÑÓ© төгүл көр.',
+'windows-nonascii-filename' => 'Бу биики ASCII табылыыÑÑатыгар Ñуох бÑлиÑлÑри өйөөбөт..',
'fileexists' => "Инник ааттаах Ð±Ð¸Ð»Ñ Ð±ÑлиÑÑ€ баар Ñбит, ону уларытыаххын Ñаарбахтыыр буоллаххына - маны көр '''<tt>[[:$1]]</tt>'''.
[[$1|thumb]]",
'filepageexists' => "Бу билÑни быһаарар ÑирÑй урут бу аатынан оҥоһуллубут Ñбит: '''<tt>[[:$1]]</tt>''', ол гынан баран маннык ааттаах ÑирÑй Ñуох.
@@ -1435,6 +1471,8 @@ $1 {{PLURAL:$1|бÑлиÑÑ‚Ñ‚Ñн|бÑлиÑÑ‚Ñ‚Ñн (буукубаттан)}}
'php-uploaddisabledtext' => 'PHP туруорууларыгар билÑни киллÑрии араарыллыбыт. Бука диÑн, file_uploads туруоруутун көр.',
'uploadscripted' => 'Бу Ð±Ð¸Ð»Ñ HTML ÑбÑÑ‚ÑÑ€ Ñкрипт куодтаах Ñбит. ИнтÑриниÑÑ‚ көрдөрөр бырагыраамма ону Ñыыһа ааҕыан Ñөп.',
'uploadvirus' => 'Бу Ð±Ð¸Ð»Ñ Ð²Ð¸Ñ€ÑƒÑтаах! Көр: $1',
+'uploadjava' => 'Ð‘Ð¸Ð»Ñ Java .class билÑлÑÑÑ… ZIP-архыып Ñбит.
+Куттал Ñуох буолбатын диÑн Java-билÑÑ€Ñри манна угар бобуллар.',
'upload-source' => 'Ð‘Ð¸Ð»Ñ Ð±Ð°Ñтакы торума',
'sourcefilename' => 'Ð‘Ð¸Ð»Ñ Ñытар ÑирÑ:',
'sourceurl' => 'Сытар Ñирин URL аадырыһа:',
@@ -1444,9 +1482,6 @@ $1 {{PLURAL:$1|бÑлиÑÑ‚Ñ‚Ñн|бÑлиÑÑ‚Ñ‚Ñн (буукубаттан)}}
'upload-options' => 'Хачайдааһын туруоруулара',
'watchthisupload' => 'БилÑни кÑтииргÑ',
'filewasdeleted' => 'Маннык ааттаах Ð±Ð¸Ð»Ñ ÑƒÑ€ÑƒÑ‚ баар Ñбит, ону Ñоппуттар. $1 Ñуруттарыах Ð¸Ð½Ð½Ð¸Ð½Ñ Ó©ÑÑÓ© Ð±Ð¸Ð¸Ñ€Ð´Ñ Ñ‚Ð¾Ð»ÐºÑƒÐ¹Ð´Ð°Ð°.',
-'upload-wasdeleted' => "'''СÑÑ€Ñтии: Эн Ñуох оҥоһуллубут биÑни Ñаҥаттан Ñуруйан ÑÑ€Ñҕин.'''
-
-Бу билÑни Ñуруттарар тоҕооÑтооҕун ырыҥалаан көр. Суох оҥорууну (Ñотторууну) региÑтрациÑлыыр файл манна баар:",
'filename-bad-prefix' => "КиллÑÑ€ÑÑри гынар билÑÒ¥ аата '''\"\$1\"''' фотоаппарат аптамаатынан ааттыыр аатыгар майгынныыр. Бука диÑн атыннык, арыый Ñиһилии ааттаан киллÑÑ€Ñриҥ буоллар.",
'filename-prefix-blacklist' => ' #<!-- Бу Ñтроканы оннунан хааллар --> <pre>
# СинтакÑииһа маннык:
@@ -1484,12 +1519,29 @@ $1',
'upload-unknown-size' => 'БиллибÑÑ‚ кÑÑмÑй',
'upload-http-error' => 'HTTP алҕаһа таҕыÑта: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Ðрхыыбы тургутуу кÑмигÑÑ€ билÑни арыйарга Ð°Ð»Ò•Ð°Ñ Ñ‚Ð°Ò•Ñ‹Ñта.',
+'zip-wrong-format' => 'Бу Ð±Ð¸Ð»Ñ ZIP Ð±Ð¸Ð»Ñ Ð±ÑƒÐ¾Ð»Ð±Ð°Ñ‚Ð°Ñ… Ñбит.',
+'zip-bad' => 'ZIP-Ð±Ð¸Ð»Ñ Ð°Ð»Ð´ÑŒÐ°Ð½Ñ‹Ñ‹Ð»Ð°Ð°Ñ… дуу Ñатаан ааҕыллыбат дуу.
+Кыайан тургутуллар кыаҕа Ñуох.',
+'zip-unsupported' => 'Бу ZIP-Ð±Ð¸Ð»Ñ MediaWiki туттубат кыахтарын туттар Ñбит.
+Тургутуллар кыаҕа Ñуох.',
+
+# Special:UploadStash
+'uploadstash' => 'КөÑтүбÑÑ‚ хачайдааһын',
+'uploadstash-summary' => 'Бу ÑирÑй Ð±Ð¸Ð¸ÐºÐ¸Ð³Ñ ÐºÐ¸Ð»Ð»Ñриллибит (ÑбÑÑ‚ÑÑ€ киллÑÑ€Ð¸Ð»Ð»Ñ Ñ‚ÑƒÑ€Ð°Ñ€) ол гынан баран Ð°Ò»Ð°Ò•Ð°Ñ ÐºÓ©Ñ€Ò¯Ò¯Ð³Ñ Ñ‚Ð°Ñ…Ñа илик билÑлÑри көрөргө аналлаах. Бу билÑлÑÑ€ ааптартан ураты кимиÑÑ…Ñ Ð´Ð° көÑтүбÑÑ‚Ñ‚ÑÑ€.',
+'uploadstash-clear' => 'КиÑÑ‚Ñммит билÑлÑри Ñуох оҥорорго',
+'uploadstash-nofiles' => 'КиÑÑ‚Ñммит билÑлÑриҥ Ñуохтар.',
+'uploadstash-badtoken' => 'Ыйбыт дьайыыгын оҥорор табыллыбата. Ðрааһа болдьоҕо бүппүт быһыылаах. Ó¨ÑÑÓ© боруобалаа.',
+'uploadstash-errclear' => 'БилÑлÑри Ñотор табыллыбата.',
+'uploadstash-refresh' => 'БилÑлÑÑ€ тиһиктÑрин Ñаҥардан биÑÑ€',
+
# img_auth script messages
'img-auth-accessdenied' => 'Киирии бобуллубут',
'img-auth-nopathinfo' => 'PATH_INFO Ñуох.
-Эн ÑиÑбÑрин маннык ÑибидиÑнньÑни ыытар курдук туруоруута Ñуох.
+Эн ÑиÑбÑриҥ маннык ÑибидиÑнньÑни ыытар курдук туруоруута Ñуох.
Баҕар кини CGI олоҕурара буолуо ол иһин img_auth өйөөбөтө буолуо.
-Көр http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[http://www.mediawiki.org/wiki/Manual:Image_Authorization Ойууну бигÑргÑтиини] көр.',
'img-auth-notindir' => 'Көрдөөбүт Ñуолуҥ ÑрдÑÑ‚Ñ‚Ñн туруоруллубут хачайдыыр паапкаҕа Ñыһыана Ñуох.',
'img-auth-badtitle' => 'Мантан «$1» Ñөптөөх ааты оҥорор кыах Ñуох.',
'img-auth-nologinnWL' => 'Эн Ñ‚Ð¸Ò»Ð¸Ð»Ð¸ÐºÐºÑ ÐºÐ¸Ð¸Ñ€Ð±ÑÑ‚Ñххин, уонна «$1» үрүҥ (көҥүллÑммит) Ñ‚Ð¸Ò»Ð¸ÐºÐºÑ ÐºÐ¸Ð¸Ñ€Ð±ÑÑ‚ Ñбит.',
@@ -1564,7 +1616,7 @@ $1',
Ó¨ÑÑÓ© [[Special:WhatLinksHere/$2|толору тиһиги]] көрүөххүн Ñөп.',
'nolinkstoimage' => 'Ðтын ÑирÑйдÑÑ€ бу билÑÒ•Ñ ÑигÑммÑÑ‚Ñ‚ÑÑ€.',
'morelinkstoimage' => 'Бу билÑÒ•Ñ [[Special:WhatLinksHere/$1|атын ÑигÑлÑри]] көрөргө.',
-'redirectstofile' => 'БилÑÒ•Ñ Ð±Ñƒ {{PLURAL:$1|билÑÑ‚Ñ‚Ñн ÑÐ¸Ð³Ñ Ð¾Ð»Ð¾Ñ…Ñ‚Ð¾Ð¼Ð¼ÑƒÑ‚|$1 билÑлÑртÑн ÑигÑлÑÑ€ олохтоммуттар}}:',
+'linkstoimage-redirect' => '$1 (утаарыы-билÑ) $2',
'duplicatesoffile' => 'Бу Ð±Ð¸Ð»Ñ {{PLURAL:$1|дубликаата манна көÑÑ‚Ó©Ñ€|$1 дубликаата манна көÑтөллөр}} ([[Special:FileDuplicateSearch/$2|Ñиһилии]]):',
'sharedupload' => 'Бу Ð±Ð¸Ð»Ñ Ð¼Ð°Ð½Ð½Ð° $1 Ñытар, атын бырайыактарга туттуллуон Ñөп.',
'sharedupload-desc-there' => '$1 бу билÑÑ‚Ñ Ð°Ñ‚Ñ‹Ð½ бырайыактарга ÑÐ¼Ð¸Ñ Ñ‚ÑƒÑ‚Ñ‚ÑƒÐ»Ð»ÑƒÐ¾Ð½ Ñөп.
@@ -1653,16 +1705,17 @@ $1',
'statistics-users-active-desc' => 'ÐаÑпыт {{PLURAL:$1|биир хонук иһигÑÑ€|$1 хонукка}} тугу ÑÐ¼Ñ Ð¾Ò¥Ð¾Ñ€Ð±ÑƒÑ‚ кыттааччылар',
'statistics-mostpopular' => 'Саамай ÑлбÑхтик көрүллÑÑ€ Ñ‹Ñтатыйалар',
-'disambiguations' => 'ЭлбÑÑ… Ñуолталаах өйдөбүллÑÑ€ ÑирÑйдÑÑ€Ñ',
+'disambiguations' => 'ЭлбÑÑ… Ñуолталаах өйдөбүллÑÑ€Ð³Ñ ÑигÑнÑÑ€ ÑирÑйдÑÑ€',
'disambiguationspage' => 'Template:ÑлбÑÑ… Ñуолталаах өйдөбүллÑÑ€',
'disambiguations-text' => "Маннык ÑирÑйдÑÑ€ '''омонимнар ÑирÑйдÑрин''' кытта ÑибÑÑÑÑ‚ÑÑÑ…Ñ‚ÑÑ€. Ол оннугар чуолаан теманы кытта ÑибÑÑÑÑ‚ÑһиÑÑ…Ñ‚ÑÑÑ…Ñ‚ÑÑ€.<br />Ó¨Ñкө бу халыыбы [[MediaWiki:Disambiguationspage]] туттубут буоллахтарына, ÑирÑй омонимнары Ñуох оҥоруу курдук обработкаламмыт.",
-'doubleredirects' => 'Ð¥Ð¾Ñ ÐºÓ©Ò»Ó©Ñ€Ó©Ó©Ò»Ò¯Ð½',
-'doubleredirectstext' => 'Бу ÑирÑÐ¹Ð³Ñ Ð°Ñ‚Ñ‹Ð½ ÑÐ¸Ñ€Ð³Ñ ÑƒÑ‚Ð°Ð°Ñ€Ð°Ñ€ Ñ…Ð¾Ñ ÑƒÑ‚Ð°Ð°Ñ€Ñ‹Ñ‹Ð»Ð°Ñ€ тиһиктÑÑ€Ñ ÐºÓ©ÑÑ‚Ó©Ñ€.
+'doubleredirects' => 'Ð¥Ð¾Ñ ÐºÓ©Ò»Ó©Ñ€Ó©Ó©Ò»Ò¯Ð½',
+'doubleredirectstext' => 'Бу ÑирÑÐ¹Ð³Ñ Ð°Ñ‚Ñ‹Ð½ ÑÐ¸Ñ€Ð³Ñ ÑƒÑ‚Ð°Ð°Ñ€Ð°Ñ€ Ñ…Ð¾Ñ ÑƒÑ‚Ð°Ð°Ñ€Ñ‹Ñ‹Ð»Ð°Ñ€ тиһиктÑÑ€Ñ ÐºÓ©ÑÑ‚Ó©Ñ€.
Ð¥Ð°Ñ ÑƒÑтуруока аайы баÑтакы уонна Ð¸ÐºÐºÐ¸Ñ ÑƒÑ‚Ð°Ð°Ñ€Ñ‹Ð³Ð° ÑÐ¸Ð³Ñ Ð±Ð°Ð°Ñ€, ону таһынан Ð¸ÐºÐºÐ¸Ñ ÑƒÑ‚Ð°Ð°Ñ€Ñ‹Ñ‹Ð³Ð° баар ÑирÑй аадырыһа (аата) баар, ол аата баÑтакы утаарыы дьиҥинÑн ханна утаарыахтааҕа көÑÑ‚Ó©Ñ€.
<del>Сотуллубут</del> Ñуруктар көннөрүллүбүттÑÑ€.',
-'double-redirect-fixed-move' => '[[$1]] ÑирÑй аата уларытыллыбыт, билигин манна утаарар [[$2]]',
-'double-redirect-fixer' => 'Утаарыылары көннөрөөччү',
+'double-redirect-fixed-move' => '[[$1]] ÑирÑй аата уларытыллыбыт, билигин манна утаарар [[$2]]',
+'double-redirect-fixed-maintenance' => '[[$1]] ÑирÑйтÑн [[$2]] ÑирÑÐ¹Ð³Ñ Ñ…Ð¾Ñ ÑƒÑ‚Ð°Ð°Ñ€Ñ‹Ñ‹Ð½Ñ‹ көннөрүү.',
+'double-redirect-fixer' => 'Утаарыылары көннөрөөччү',
'brokenredirects' => 'БыÑтыбыт көһөрүүлÑÑ€',
'brokenredirectstext' => 'Бу утаарыы ÑирÑйдÑÑ€Ñ Ñуох Ñ‹Ñтатыйаларга ÑигÑнÑллÑÑ€ (ыыталлар):',
@@ -1739,6 +1792,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|Ñаҥа 1|Ñаҥа $1}}',
'pager-older-n' => '{{PLURAL:$1|аҕа 1|аҕа $1}}',
'suppress' => 'КиÑÑ‚ÑÑһин',
+'querypage-disabled' => 'Бу анал ÑирÑй тиһилик үлÑтин түргÑÑ‚ÑÑ‚ÑÑри араарыллыбыт.',
# Book sources
'booksources' => 'КинигÑлÑÑ€ иÑточниктара',
@@ -1748,8 +1802,8 @@ $1',
'booksources-invalid-isbn' => 'ISBN, арааһа, Ñыыһалаах. ÐүөмÑÑ€ көһөрөргө Ð°Ð»Ò•Ð°Ñ Ñ‚Ð°Ñ…Ñыбатаҕын хат көр ÑÑ€Ñ.',
# Special:Log
-'specialloguserlabel' => 'Кыттааччы:',
-'speciallogtitlelabel' => 'Баһа:',
+'specialloguserlabel' => 'Толорооччу:',
+'speciallogtitlelabel' => 'Сорук (тиÑÐºÐ¸Ñ ÑбÑÑ‚ÑÑ€ киһи аата)',
'log' => 'Сурунааллар',
'all-logs-page' => 'КөÑÑ‚Ó©Ñ€ Ñурунааллар барыта',
'alllogstext' => '{{SITENAME}} Ñурунаалларын уопÑай иÑпииһÑгÑ.
@@ -1789,7 +1843,7 @@ $1',
'sp-deletedcontributions-contribs' => 'киллÑÑ€Ð¸Ð¸Ñ‚Ñ (Ñуруйуута)',
# Special:LinkSearch
-'linksearch' => 'Ð¢Ð°Ñ ÑигÑлÑÑ€',
+'linksearch' => 'Ð¢Ð°Ñ ÑигÑлÑри көрдөөһүн',
'linksearch-pat' => 'Көрдөөһүн халыыба:',
'linksearch-ns' => 'Ðат хочото (namespace):',
'linksearch-ok' => 'Бул',
@@ -1857,6 +1911,10 @@ $1',
'noemailtext' => 'Бу кыттааччы e-mail аадырыһын ÑппÑÑ‚ÑÑ….',
'nowikiemailtitle' => 'Сурук ыытар кыах Ñуох',
'nowikiemailtext' => 'Бу кыттааччы Ñурук тутуон баҕарбат.',
+'emailnotarget' => 'Суруйбут кыттааччыҥ Ñуох ÑбÑÑ‚ÑÑ€ аата алҕаÑтаах.',
+'emailtarget' => 'Суруйар киһиҥ аатын киллÑÑ€',
+'emailusername' => 'Кыттааччы:',
+'emailusernamesubmit' => 'Ыыт',
'email-legend' => '{{SITENAME}} атын кыттааччытыгар Ñурук ыытарга',
'emailfrom' => 'КимтÑн:',
'emailto' => 'КимиÑÑ…Ñ:',
@@ -1881,10 +1939,10 @@ $1',
'watchlistanontext' => 'КÑÑ‚Ñбилиҥ ÑирÑйин көрөргөр ÑбÑÑ‚ÑÑ€ уларытаргар маны оҥор: $1.',
'watchnologin' => 'БÑйÑҕин билиһиннÑÑ€',
'watchnologintext' => 'БÑйÑҕин [[Special:UserLogin|билиһиннÑрдÑххинÑ]] кÑÑ‚Ñбил ÑирÑйгин уларытыаххын Ñөп.',
-'addedwatch' => 'КÑÑ‚ÑÐ±Ð¸Ð»Ð³Ñ ÐºÐ¸Ð¸Ñ€Ð´Ñ',
+'addwatch' => 'КÑÑ‚Ñбил тиһигÑÑ€ киллÑÑ€',
'addedwatchtext' => '«[[:$1]]» ÑирÑй [[Special:Watchlist|кÑÑ‚ÑбилгÑ]] киирдÑ.
СирÑй уларытыылара бүгүҥҥүттÑн манна көÑÑ‚Ó©Ñ€ буолуохтара, Ñбиитин [[Special:RecentChanges|Ñаҥа уларытыылар иÑпииһÑктÑригÑÑ€]] модьу бичигинÑн бÑлиÑÑ‚ÑнÑн көÑÑ‚Ò¯Ó©Ñ…Ñ‚ÑÑ€Ñ.',
-'removedwatch' => 'КÑÑ‚ÑбилтÑн Ñотулунна',
+'removewatch' => 'КÑÑ‚Ñбил тиһигиттÑн Ñот',
'removedwatchtext' => '[[:$1]]" ÑирÑй [[Special:Watchlist|кÑÑ‚Ñбилиҥ тиһигиттÑн]] Ñотулунна.',
'watch' => 'КÑÑ‚ÑÑ',
'watchthispage' => 'Бу ÑирÑйи кÑÑ‚ÑÑ',
@@ -1905,8 +1963,9 @@ $1',
'watchlist-options' => 'КÑÑ‚ÑÑн көрүү туруоруутун уларытыы',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'КÑÑ‚ÑÑ...',
-'unwatching' => 'КÑÑ‚ÑÑмÑ...',
+'watching' => 'КÑÑ‚ÑÑ...',
+'unwatching' => 'КÑÑ‚ÑÑмÑ...',
+'watcherrortext' => 'КÑÑ‚ÑÑн көрүү тиһигин уларытыы кÑмигÑÑ€ Ð°Ð»Ò•Ð°Ñ Ñ‚Ð°Ò•Ñ‹Ñта ("$1" ÑирÑÐ¹Ð³Ñ Ñыһыаннаах).',
'enotif_mailer' => '{{SITENAME}} БиллÑÑ€ÑÑ€ СулууÑпата',
'enotif_reset' => 'Бары ÑирÑйдÑри көрбүтүм курдук бÑлиÑÑ‚ÑÑ',
@@ -1936,13 +1995,13 @@ $NEWPAGE
--
КÑтиир ÑирÑйдÑриҥ тиһигин уларытарга маны көр:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Бу ÑирÑйи кÑÑ‚Ñбил тиһигиттÑн Ñоторго манна киир:
$UNWATCHURL
КөмөлөһүннÑÑ€ÑÑ€ уонна быһаартарар Ñир:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'СирÑйи Ñот',
@@ -1960,7 +2019,7 @@ $UNWATCHURL
уонна [[{{MediaWiki:Policy-url}}]] ÑиÑрин кÑÑпÑккин бигÑргÑÑ‚.',
'actioncomplete' => 'Дьайыы оҥоһулунна',
'actionfailed' => 'Дьайыы оҥоһуллубата',
-'deletedtext' => '«<nowiki>$1</nowiki>» Ñотуллубут.
+'deletedtext' => '«$1» Ñотуллубут.
БүтÑһик Ñотуулар иÑпииһÑктÑрин манна: $2 көр.',
'deletedarticle' => '"[[$1]]" Ñотуллубут',
'suppressedarticle' => '"[[$1]]" киÑÑ‚ÑÑбит',
@@ -2014,7 +2073,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'Уларытыыны хааччахтааһын болдьоҕун кÑÐ¼Ñ Ñатаан турбата.',
'protect_expiry_old' => 'Болдьох кÑÐ¼Ñ Ñыыһа ааÑпыт кÑÐ¼Ò¥Ñ Ñ‚ÑƒÑ€Ð±ÑƒÑ‚.',
'protect-unchain-permissions' => 'КөмүÑкÑÑһин Ñбии туруорууларын арый',
-'protect-text' => "Эн '''<nowiki>$1</nowiki>''' ÑирÑй уларытыытын таһымын көрүөххүн уонна уларытыаххын Ñөп.",
+'protect-text' => "Эн '''$1''' ÑирÑй уларытыытын таһымын көрүөххүн уонна уларытыаххын Ñөп.",
'protect-locked-blocked' => "Уларытыы таһымын учуотунай Ñуругуҥ бобуллубут кÑмигÑÑ€ уларытар кыаҕыҥ Ñуох.
'''$1''' ÑирÑй уларытыытын таһыма:",
'protect-locked-dblock' => "Уларытыы таһыма уларыйар кыаҕа Ñуох - дааннайдар баазаларын уларытар бобулунна.
@@ -2068,9 +2127,8 @@ $UNWATCHURL
'undeletepagetext' => 'Манна ыйыллыбыт {{PLURAL:$1|ÑирÑй Ñотуллубут|$1 ÑирÑй Ñотуллубуттар}} гынан баран архыыпка Ñыталлар.
Онон оннуларыгар төннөрүөххүн Ñөп. Ðрхыып кÑмиттÑн кÑмигÑÑ€ ырааÑтанар.',
'undelete-fieldset-title' => 'Торумнары төнүннÑÑ€',
-'undeleteextrahelp' => "СирÑйи барытын оннугар төннөрөргө тугу да бÑлиÑÑ‚ÑÑÐ¼Ñ ÑƒÐ¾Ð½Ð½Ð° '''''Төннөр''''' тимÑҕи баттаа.
-СирÑй Ñороҕун ÑÑ€Ñ Ñ‚Ó©Ð½Ð½Ó©Ñ€Ó©Ñ€ буоллаххына Ñорох ÑÑ€Ñ Ñ‚Ð¾Ñ€ÑƒÐ¼Ð½Ð°Ñ€Ñ‹Ð½ бÑлиÑÑ‚ÑÑ ÑƒÐ¾Ð½Ð½Ð° '''''Төннөр''''' тимÑҕи баттаа.
-'''''ЫрааÑтаа''''' тимÑҕи баттаатаххына бÑлиÑлÑÑ€ уонна Ñ…Ð¾Ñ Ð±Ñ‹Ò»Ð°Ð°Ñ€Ñ‹Ñ‹ ÑүтүөхтÑÑ€Ñ.",
+'undeleteextrahelp' => "СирÑйи барытын оннугар төннөрөргө тугу да бÑлиÑÑ‚ÑÑÐ¼Ñ ÑƒÐ¾Ð½Ð½Ð° '''''{{int:undeletebtn}}''''' тимÑҕи баттаа.
+СирÑй Ñороҕун ÑÑ€Ñ Ñ‚Ó©Ð½Ð½Ó©Ñ€Ó©Ñ€ буоллаххына ÑирÑй төннөрүллүөхтÑÑÑ… барылларын бÑлиÑÑ‚ÑÑ ÑƒÐ¾Ð½Ð½Ð° '''''{{int:undeletebtn}}''''' тимÑҕи баттаа.",
'undeleterevisions' => 'Ðрхыыпка $1 {{PLURAL:$1|барыллаах|барыл баар}}',
'undeletehistory' => 'СирÑйи Ñ‚Ó©Ð½Ð½Ó©Ñ€Ð´Ó©Ñ…Ñ…Ò¯Ð½Ñ ÑƒÐ»Ð°Ñ€Ñ‹Ñ‚Ñ‹Ñ‹Ñ‚Ñ‹Ð½ уÑтуоруйата барыта төннөрүллүө.
Сотуллубутун кÑÐ½Ð½Ñ Ð¼Ð°Ð½Ð½Ñ‹Ðº ааттаах атын ÑирÑй оҥоһуллубут түбÑлтÑтигÑÑ€ төннөрүллүбүт торумнар уларытыы Ñурунаалыгар Ñаҥа Ñуруктар иннилÑригÑÑ€ Ñуруллуохтара.',
@@ -2114,9 +2172,12 @@ $1',
'undelete-show-file-submit' => 'Сөп',
# Namespace form on various pages
-'namespace' => 'Ðат дала (ПроÑтранÑтво имён):',
-'invert' => 'БÑлиÑÑ‚Ñниллибити таҥнары тут',
-'blanknamespace' => '(Сүрүн)',
+'namespace' => 'Ðат дала (ПроÑтранÑтво имён):',
+'invert' => 'БÑлиÑÑ‚Ñниллибити таҥнары тут',
+'tooltip-invert' => 'Бу бÑлиÑни туруоран талбыт аат далгар баар ÑирÑйдÑри уларытыыны көÑтүбÑÑ‚ оҥор (уонна анаан ыйыллыбыт буоллаҕына ÑитимнÑÑÑ… аат далларыгар)',
+'namespace_association' => 'СитимнÑÑÑ… аат даллара',
+'tooltip-namespace_association' => 'Бу бÑлиÑни туруордаххына талбыт аат далгын кытта ÑитимнÑÑÑ… аат даллара ÑÐ¼Ð¸Ñ Ñ…Ð¾Ð»Ð±Ð¾Ò»ÑƒÐ¾Ñ…Ñ‚Ð°Ñ€Ð°',
+'blanknamespace' => '(Сүрүн)',
# Contributions
'contributions' => 'Кыттааччы Ñуруйуута (вклад)',
@@ -2165,6 +2226,9 @@ $1',
'whatlinkshere-filters' => 'Фильтрдар',
# Block/unblock
+'autoblockid' => 'Ðптамаатынан хааччахтааһын #$1',
+'block' => 'Кыттааччыны хааччахтааһын',
+'unblock' => 'Кытааччы хааччаҕын уÑтуу',
'blockip' => 'IP аадырыÑтан киириини бобуу',
'blockip-title' => 'Кыттааччыны бобуу',
'blockip-legend' => 'Кыттааччыны хааччахтааһын',
@@ -2173,7 +2237,6 @@ $1',
быраабылалрын тутуһан ÑÑ€Ñ Ð±Ð¾Ð±ÑƒÐ¾Ñ…Ñ‚Ð°Ð°Ñ…Ñ…Ñ‹Ð½.
Хайаан да бобуу төрүөтүн кÑпÑÑÑ (холобур, вандализм баар ÑирÑйдÑриттÑн
быһа тардан манна көрдөр).',
-'ipaddress' => 'IP аадырыһа:',
'ipadressorusername' => 'IP аадырыһа ÑбÑÑ‚ÑÑ€ кыттааччы аата:',
'ipbexpiry' => 'ТүмүктÑниÑ:',
'ipbreason' => 'ТөрүөтÑ:',
@@ -2186,7 +2249,7 @@ $1',
** Кыттааччыларга Ñуоһурҕаныы, күөмчүлÑÑһин
** Ð¥Ð°Ñ Ð´Ð° аатынан киирÑн куһаҕаны оҥоруу
** Ð‘Ò¯Ñ€Ò¯ÐºÒ¯Ñ‚Ñ Ñуох ааттаныы',
-'ipbanononly' => 'Ðаттамахтар уларыталларын ÑÑ€Ñ Ð±Ð¾Ð¿',
+'ipb-hardblock' => 'Бу IP-ттан киирбит дьон Ñ‹Ñтатыйалары уларыталларын хааччахтааһын',
'ipbcreateaccount' => 'Саҥа кытааччылары оҥорума',
'ipbemailban' => 'Кыттааччы Ñл. Ñуругу Ñуруйарын боборго',
'ipbenableautoblock' => 'Кыттааччы туһаммыт IP-аадырыÑтарын боборго',
@@ -2197,12 +2260,15 @@ $1',
'ipbotherreason' => 'Ðтын/Ñбии биричиинÑлÑÑ€:',
'ipbhidename' => 'Кыттааччы аатын көннөрүүлÑÑ€Ð³Ñ ÑƒÐ¾Ð½Ð½Ð° иÑпииһÑктÑÑ€Ð³Ñ ÐºÓ©Ñ€Ð´Ó©Ñ€Ò¯Ð¼Ñ',
'ipbwatchuser' => 'Кыттааччы бÑйÑтин туһунан ÑирÑйин уонна ырытыытын ÑирÑйин кÑтииргÑ',
-'ipballowusertalk' => 'Кыттааччы манна үлÑлиирин боппут кÑÐ¼Ò¥Ñ Ð±ÑйÑтин ÑирÑйигÑÑ€ Ñуруйарын көҥүллүүргÑ',
+'ipb-disableusertalk' => 'Бу кыттааччы бÑйÑтин ырытыы ÑирÑйигÑÑ€ Ñуруйарын хааччахтааһын',
'ipb-change-block' => 'Бу туруорууларынан кыттааччыны хат хааччахтаа',
+'ipb-confirm' => 'Хааччаҕы бигÑргÑÑ‚',
'badipaddress' => 'IP аадырыһа Ñыыһа',
'blockipsuccesssub' => 'Тохтотулунна',
'blockipsuccesstext' => '[[Special:Contributions/$1|«$1»]] бобуллубут/тохтотуллубут.<br />
[[Special:IPBlockList|Бобуллубут IP-лар иÑпииһÑктÑрин]] көр.',
+'ipb-blockingself' => 'Эн бÑйÑҕин хааччахтаан ÑÑ€Ñҕин! Ону өйдүүгүн дуо?',
+'ipb-confirmhideuser' => 'Кытааччыны хааччахтаан уонна аатын киÑÑ‚ÑÑн ÑÑ€Ñҕин. Ðата мантан Ð¸Ð½Ð½ÑŒÑ Ñ‚Ð¸Ò»Ð¸ÐºÑ‚ÑÑ€Ð³Ñ ÑƒÐ¾Ð½Ð½Ð° Ñурунаалларга көÑтүбÑÑ‚ буолуо. БигÑргÑÑ‚Ñҕин дуо?',
'ipb-edit-dropdown' => 'Бобуу биричиинÑтин уларыт',
'ipb-unblock-addr' => '$1 бобуутун Ñуох гын',
'ipb-unblock' => 'Кыттаачыны ÑбÑÑ‚ÑÑ€ IP-ны бобуллубуттар иÑпииһÑктÑриттÑн таһаар',
@@ -2212,17 +2278,23 @@ $1',
'unblockiptext' => 'IP ÑбÑÑ‚ÑÑ€ кыттааччы көннөрөр/уларытар быраабын манна баар форманы туһанан төннөр.',
'ipusubmit' => 'Хааччаҕын уһул',
'unblocked' => '[[User:$1|$1]] хааччахтаныыта уһулунна',
+'unblocked-range' => '$1 хааччаҕа уһулунна',
'unblocked-id' => '$1 хааччахтаныыта уһулунна',
+'blocklist' => 'Бобуллубут кыттааччылар',
'ipblocklist' => 'Хааччахтаммыт кыттааччылар',
'ipblocklist-legend' => 'Хааччахтаммыт/бобуллубут кыттааччыны көрдөөһүн',
-'ipblocklist-username' => 'Кыттааччы аата ÑбÑÑ‚ÑÑ€ IP-та:',
-'ipblocklist-sh-userblocks' => '$1 ааты хааччахтааһын',
-'ipblocklist-sh-tempblocks' => '$1 быÑтах хааччахтааһын',
-'ipblocklist-sh-addressblocks' => 'IP-ны $1 хааччахтааһын',
+'blocklist-userblocks' => 'Хааччахтаммыт кыттааччылары көрдөрүмÑ',
+'blocklist-tempblocks' => 'БыÑтаах кÑÐ¼Ò¥Ñ Ñ…Ð°Ð°Ñ‡Ñ‡Ð°Ñ…Ñ‚Ð°Ñ€Ñ‹ көрдөрүмÑ',
+'blocklist-addressblocks' => 'БиирдиилÑÑн IP-лары хааччахтааһыны көрдөрүмÑ',
+'blocklist-timestamp' => 'КүнÑ-дьыла',
+'blocklist-target' => 'Сыал-Ñорук',
+'blocklist-expiry' => 'Болдьоҕо',
+'blocklist-by' => 'Дьаһабыл хааччахатааһына',
+'blocklist-params' => 'Туруоруулары хааччахтааһын',
+'blocklist-reason' => 'ТөрүөтÑ',
'ipblocklist-submit' => 'Бул',
'ipblocklist-localblock' => 'Соҕотох бырайыакка хааччахтааһын',
'ipblocklist-otherblocks' => 'Ðтын {{PLURAL:$1|хааччахтааһын|хааччахтааһыннар}}',
-'blocklistline' => '$1, $2 хааччахтаабыт/боппут: $3 ($4)',
'infiniteblock' => 'болдьоҕо Ñуох',
'expiringblock' => 'болдьоҕо: $1 $2',
'anononlyblock' => 'ааттамматахтары ÑÑ€Ñ',
@@ -2244,7 +2316,7 @@ $1',
'reblock-logentry' => 'манна [[$1]] аналлаах хааччахтааһын туруоруулара уларыйда, болдьоҕо $2 $3',
'blocklogtext' => 'Кыттааччылары хааччахтааһын уонна ол хааччахтааһыннарын Ñуох гыныы Ñурунаала.
Ðптамаатынан хааччахтаммыт IP-лар манна көÑтүбÑÑ‚Ñ‚ÑÑ€.
-[[Special:IPBlockList|Билигин баар хааччахтаныылар иÑпииһÑктÑрин]] көр.',
+[[Special:BlockList|Билигин баар хааччахтаныылар иÑпииһÑктÑрин]] көр.',
'unblocklogentry' => '$1 хааччахтааһыны уһулла',
'block-log-flags-anononly' => 'ааттамматах кыттааччылар ÑÑ€Ñ',
'block-log-flags-nocreate' => 'Ñаҥа бÑлиÑÑ‚Ñнии бобуллубут',
@@ -2258,9 +2330,9 @@ $1',
'ipb_expiry_temp' => 'Ðатын киÑтиÑһиннÑÑÑ… бобуу больдьоҕо Ñуох буолуохтаах.',
'ipb_hide_invalid' => 'Бу ааты киÑтиир табыллыбата, баҕар кини аатыттан наһаа ÑлбÑÑ… көннөрүү оҥоһуллубута буолуо.',
'ipb_already_blocked' => '"$1" номнуо бобуллубут',
-'ipb-needreblock' => '== Хааччахтаммыт Ñбит ==
-$1 бÑлиÑÑ€ хааччахтаммыт. Хааччахтааһын туруорууларын уларытыаххын баҕараҕын дуо?',
+'ipb-needreblock' => '$1 бÑлиÑÑ€ хааччахтаммыт. Хааччахтааһын туруорууларын уларытыаххын баҕараҕын дуо?',
'ipb-otherblocks-header' => 'Ðтын {{PLURAL:$1|хааччахтааһын|хааччахтааһыннар}}',
+'unblock-hideuser' => 'Эн бу кыттааччыттан хааччаҕын уһулар кыаҕыҥ Ñуох Ñбит, тоҕо диÑÑ‚ÑÑ…Ñ…Ñ ÐºÐ¸Ð½Ð¸ аата киÑÑ‚Ñммит.',
'ipb_cant_unblock' => 'ÐлҕаÑ: $1 нүөмÑрдÑÑÑ… бобуу булуллубата. Баҕар кыттааччы хааччаҕын уÑтубуттара буолуо.',
'ipb_blocked_as_range' => 'Сыыһа: $1 IP-та чопчу бобуллубатах (не блокирован), онон аһыллар кыаҕа Ñуох. Ол гынан баран IP бу $2 диапазон Ñорҕотун быһыытынан бобуллубут, ону арыйыахха (бобуутун уÑтуохха) Ñөп.',
'ip_range_invalid' => 'IP-лар диапазоннара Ñатаммат.',
@@ -2296,6 +2368,7 @@ $1 бÑлиÑÑ€ хааччахтаммыт. Хааччахтааһын туруÐ
'unlockdbsuccesstext' => 'Билии олоҕун (database) уларытар көҥүллÑннÑ.',
'lockfilenotwritable' => 'Бобуу билÑтигÑÑ€ Ñуруйар кыаҕыҥ Ñуох. БД уларытары ÐºÓ©Ò¥Ò¯Ð»Ð»Ò¯Ò¯Ñ€Ð³Ñ ÑбÑÑ‚ÑÑ€ боборго веб-Ñервер бу билÑни уларытар бырааптаах буолуохтаах.',
'databasenotlocked' => 'БД уларытааһын бобуллубата.',
+'lockedbyandtime' => '($1 $2 $3)',
# Move page
'move-page' => '$1 - аатын уларытыы',
@@ -2424,7 +2497,7 @@ $1 бÑлиÑÑ€ хааччахтаммыт. Хааччахтааһын туруÐ
'allmessagesdefault' => 'ТуÑпа ÑтиллибÑÑ‚ÑÒ•Ð¸Ð½Ñ Ñуруллар тиÑкиÑ',
'allmessagescurrent' => 'Билиҥҥи тиÑкиÑ',
'allmessagestext' => 'Манна MediaWiki биллÑриилÑрин иÑпииһÑÐ³Ñ ÐºÓ©ÑÑ‚Ó©Ñ€.
-Эн MediaWiki движогун тылбааÑтыырга көмөлөһүөххүн баҕарар буоллаххына манна [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] уонна манна [http://translatewiki.net translatewiki.net] киир.',
+Эн MediaWiki движогун тылбааÑтыырга көмөлөһүөххүн баҕарар буоллаххына манна [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] уонна манна [//translatewiki.net translatewiki.net] киир.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' туттуллар кыаҕа Ñуох, тоҕо диÑÑ‚ÑÑ…Ñ…Ñ '''\$wgUseDatabaseMessages''' араарыллыбыт.",
'allmessages-filter-legend' => 'СиидÑ',
'allmessages-filter' => 'Уларытыы көрүҥүнÑн наардыыр ÑиидÑ:',
@@ -2571,9 +2644,7 @@ $1 бÑлиÑÑ€ хааччахтаммыт. Хааччахтааһын туруÐ
'monobook.js' => '/* ЭргÑрбит; маны туһан:[[MediaWiki:common.js]] */',
# Metadata
-'nodublincore' => 'Dublin Core RDF метадааннайдар бу ÑиÑрбÑÑ€Ð³Ñ Ð±Ð¾Ð±ÑƒÐ»Ð»ÑƒÐ±ÑƒÑ‚Ñ‚Ð°Ñ€.',
-'nocreativecommons' => 'Creative Commons RDF метадааннайдар бу ÑиÑрбÑÑ€Ð³Ñ Ð±Ð¾Ð±ÑƒÐ»Ð»ÑƒÐ±ÑƒÑ‚Ñ‚Ð°Ñ€.',
-'notacceptable' => "Биики-ÑиÑрбÑÑ€ Ñн браузерыҥ ааҕар формаатын кыайан көрдөрбөт.<br /> The wiki server can't provide data in a format your client can read.",
+'notacceptable' => "Биики-ÑиÑрбÑÑ€ Ñн браузерыҥ ааҕар формаатын кыайан көрдөрбөт.<br /> The wiki server can't provide data in a format your client can read.",
# Attribution
'anonymous' => '{{SITENAME}} ааттамматах {{PLURAL:$1|кыттааччыта|кыттааччылара}}',
@@ -2597,12 +2668,17 @@ $1 бÑлиÑÑ€ хааччахтаммыт. Хааччахтааһын туруÐ
'spam_blanking' => 'Бары торумнар манна "$1" ыйынньыктаахтар, барытын Ñуох оҥоруу',
# Info page
-'infosubtitle' => 'СирÑй туһунан',
-'numedits' => 'Уларытыы ахÑаана (Ñ‹Ñтатыйа): $1',
-'numtalkedits' => 'Уларытыы ахÑаана (ырытыы): $1',
-'numwatchers' => 'КÑÑ‚ÑÑччилÑÑ€ ахÑааннара: $1',
-'numauthors' => 'Ð¢ÑƒÑ Ñ‚ÑƒÑпа ааптардар ахÑааннара (Ñ‹Ñтатыйа): $1',
-'numtalkauthors' => 'Ð¢ÑƒÑ Ñ‚ÑƒÑпа ааптардар ахÑааннара (ырытыы): $1',
+'pageinfo-title' => '"$1" туһунан',
+'pageinfo-header-edits' => 'Уларытыылар',
+'pageinfo-header-watchlist' => 'КÑÑ‚ÑÑһин тиһигÑ',
+'pageinfo-header-views' => 'КөрүүлÑÑ€',
+'pageinfo-subjectpage' => 'СирÑй',
+'pageinfo-talkpage' => 'Ырытыы ÑирÑйÑ',
+'pageinfo-watchers' => 'КÑÑ‚ÑÑччилÑÑ€ ахÑааннара',
+'pageinfo-edits' => 'Көннөрүү ахÑаана',
+'pageinfo-authors' => 'ÐÑ€Ð°Ð°Ñ Ð°Ð°Ð¿Ñ‚Ð°Ñ€Ð´Ð°Ñ€ ахÑааннара',
+'pageinfo-views' => 'Көрүү ахÑаана',
+'pageinfo-viewsperedit' => 'Биир уларытыыга тикÑÑÑ€ көрүү ахÑаана',
# Skin names
'skinname-standard' => 'КлаÑÑика',
@@ -2612,25 +2688,6 @@ $1 бÑлиÑÑ€ хааччахтаммыт. Хааччахтааһын туруÐ
'skinname-simple' => 'Судургу',
'skinname-modern' => 'Билиҥҥи',
-# Math options
-'mw_math_png' => 'Куруук PNG таһаарарга (туһанарга)',
-'mw_math_simple' => 'көннөрү түбÑлтÑÒ•Ñ HTML, атын буоллаҕына PNG',
-'mw_math_html' => 'Ñатанаҕына HTML, Ñатамматаҕына PNG',
-'mw_math_source' => 'TeX бÑлиÑтин (разметкатын) хааллар (тиÑкиһинÑн ÑÑ€Ñ Ò¯Ð»Ñлиир браузерга)',
-'mw_math_modern' => 'Ðныгы браузердарга анаан',
-'mw_math_mathml' => 'Сатаннаҕына MathML туһан (experimental)',
-
-# Math errors
-'math_failure' => 'Сатаан ааҕыллыбата',
-'math_unknown_error' => 'биллибÑÑ‚ алҕаÑ',
-'math_unknown_function' => 'биллибÑÑ‚ дьайыы (функциÑ)',
-'math_lexing_error' => 'лекÑиката алҕаÑтаах',
-'math_syntax_error' => 'ÑинтакÑÐ¸Ñ Ð°Ð»Ò•Ð°Ò»Ð°',
-'math_image_error' => 'PNG-га уларытыы Ñатаммата; latex, dvips, gs, уонна convert туруоруулара Ñөбүн көр',
-'math_bad_tmpdir' => 'Математика быÑтах кÑмнÑÑҕи директориÑта Ñатаан оҥоһуллубута',
-'math_bad_output' => 'Математика таһынааҕы директориÑта Ñатаан оҥоһуллубата',
-'math_notexvc' => 'texvc кыайан толоруллубата; маны math/README көр.',
-
# Patrolling
'markaspatrolleddiff' => 'БÑÑ€ÑбиÑркÑлÑммит курдук бÑлиÑÑ‚ÑÑ',
'markaspatrolledtext' => 'Бу Ñ‹Ñтатыйаны бÑÑ€ÑбиÑркÑлÑммит курдук бÑлиÑÑ‚ÑÑ',
@@ -2666,22 +2723,25 @@ $1',
'nextdiff' => 'КÑннинÑÑҕи уларытыыга →',
# Media information
-'mediawarning' => "'''СÑÑ€Ñтии''': Бу Ð±Ð¸Ð»Ñ Ð¸Ò»Ð¸Ð³ÑÑ€ бырагыраамма куода баар.
+'mediawarning' => "'''СÑÑ€Ñтии''': Бу Ð±Ð¸Ð»Ñ Ð¸Ò»Ð¸Ð³ÑÑ€ бырагыраамма куода баар.
Куһаҕан буоллаҕына ÑиÑтиÑмÑни алдьатыан Ñөп.",
-'imagemaxsize' => "Ойуу улаханын хааччахтааһын:<br />''(Ð±Ð¸Ð»Ñ Ñ‚ÑƒÒ»ÑƒÐ½Ð°Ð½ ÑирÑÐ¹Ð³Ñ Ð°Ð½Ð°Ð»Ð»Ð°Ð°Ñ…)''",
-'thumbsize' => 'Кыра ойуу (миниатюра) кÑÑмÑйÑ:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|ÑирÑй|ÑирÑй}}',
-'file-info' => 'Ð±Ð¸Ð»Ñ ÐºÑÑмÑйÑ: $1, MIME тиибÑ: $2',
-'file-info-size' => '$1 × $2 пиикÑÑл, Ð±Ð¸Ð»Ñ ÐºÑÑмÑйÑ: $3, MIME тиибÑ: $4',
-'file-nohires' => '<small>Бу ойуу маннааҕар улахан торума Ñуох.</small>',
-'svg-long-desc' => 'SVG билÑ, номинальнай кÑÑмÑÐ¹Ñ $1 × $2 пиикÑÑл, Ð±Ð¸Ð»Ñ ÐºÑÑмÑйÑ: $3',
-'show-big-image' => 'Ойуу бÑйÑтин толору кÑÑмÑйÑ',
-'show-big-image-thumb' => '<small>Хачайдыах Ð¸Ð½Ð½Ð¸Ð½Ñ ÐºÓ©Ñ€Ò¯Ò¯ кÑÑмÑйÑ: $1 × $2 пиикÑÑл</small>',
-'file-info-gif-looped' => 'хатаммыт (бобуллубут)',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|фреймнаах|фреймнардаах}}',
-'file-info-png-looped' => 'Ñ‚Ó©Ñ‚Ñ‚Ó©Ñ€Ò¯ ÑргийÑÑ€',
-'file-info-png-repeat' => '{{PLURAL:$1|биирдÑ|төгүл}} оонньонор $1',
-'file-info-png-frames' => '$1 {{PLURAL:$1|фреймнаах|фреймнардаах}}',
+'imagemaxsize' => "Ойуу улаханын хааччахтааһын:<br />''(Ð±Ð¸Ð»Ñ Ñ‚ÑƒÒ»ÑƒÐ½Ð°Ð½ ÑирÑÐ¹Ð³Ñ Ð°Ð½Ð°Ð»Ð»Ð°Ð°Ñ…)''",
+'thumbsize' => 'Кыра ойуу (миниатюра) кÑÑмÑйÑ:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|ÑирÑй|ÑирÑй}}',
+'file-info' => 'Ð±Ð¸Ð»Ñ ÐºÑÑмÑйÑ: $1, MIME тиибÑ: $2',
+'file-info-size' => '$1 × $2 пиикÑÑл, Ð±Ð¸Ð»Ñ ÐºÑÑмÑйÑ: $3, MIME тиибÑ: $4',
+'file-info-size-pages' => '$1 × $2 пикÑель, Ð±Ð¸Ð»Ñ ÐºÑÑмÑйÑ: $3, MIME-көрүҥ: $4, $5 ÑирÑйдÑÑÑ…',
+'file-nohires' => '<small>Бу ойуу маннааҕар улахан торума Ñуох.</small>',
+'svg-long-desc' => 'SVG билÑ, номинальнай кÑÑмÑÐ¹Ñ $1 × $2 пиикÑÑл, Ð±Ð¸Ð»Ñ ÐºÑÑмÑйÑ: $3',
+'show-big-image' => 'Ойуу бÑйÑтин толору кÑÑмÑйÑ',
+'show-big-image-preview' => '<small>БигÑргÑтиÑÑ… Ð¸Ð½Ð½Ð¸Ð½Ñ ÐºÓ©Ñ€Ò¯Ò¯ улахана: $1.</small>',
+'show-big-image-other' => '<small>Ðтын түмүктÑÑ€: $1.</small>',
+'show-big-image-size' => '$1 × $2 пиикÑÑл',
+'file-info-gif-looped' => 'хатаммыт (бобуллубут)',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|фреймнаах|фреймнардаах}}',
+'file-info-png-looped' => 'Ñ‚Ó©Ñ‚Ñ‚Ó©Ñ€Ò¯ ÑргийÑÑ€',
+'file-info-png-repeat' => '{{PLURAL:$1|биирдÑ|төгүл}} оонньонор $1',
+'file-info-png-frames' => '$1 {{PLURAL:$1|фреймнаах|фреймнардаах}}',
# Special:NewFiles
'newimages' => 'Саҥа билÑлÑÑ€ галереÑлара',
@@ -2710,14 +2770,20 @@ $1',
'metadata-help' => 'Бу билÑÒ•Ñ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¾Ð¹ камералар уонна Ñканердар ÑбÑÑ€ ойуу туһунан информациÑлара баар. Ð‘Ð¸Ð»Ñ ÐºÑлин уларытыллыбыт буоллаҕына Ñорох кÑÑмÑйдÑÑ€ билиҥҥи ойууга Ñөп түбÑÒ»Ð¸Ñ Ñуохтарын Ñөп.',
'metadata-expand' => 'Эбии информациÑны көрдөр',
'metadata-collapse' => 'Эбии информациÑны көрдөрүмÑ',
-'metadata-fields' => 'Манна баар метадааннайдар ойуу ÑирÑйигÑÑ€ куруук көÑÑ‚Ò¯Ó©Ñ…Ñ‚ÑÑ€Ñ, атыттара көÑÑ‚Ò¯Ó©Ñ…Ñ‚ÑÑ€Ñ Ñуоҕа.
+'metadata-fields' => 'Манна баар метадааннайдар ойуу кыччатыллыбыт ÑирÑйигÑÑ€ куруук көÑÑ‚Ò¯Ó©Ñ…Ñ‚ÑÑ€Ñ, атыттара көрдөрүллүөхтÑÑ€Ñ Ñуоҕа.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'КÑтитÑ',
@@ -2732,13 +2798,11 @@ $1',
'exif-ycbcrpositioning' => 'Y уонна C ханан тураллара',
'exif-xresolution' => 'Сытыары разрешениета',
'exif-yresolution' => 'Туруору разрешениета',
-'exif-resolutionunit' => 'Разрешениены тугунан кÑÑмÑйдиÑÑ…Ñ…Ñ',
'exif-stripoffsets' => 'Ойуу дааннайдара ханна баар буолара',
'exif-rowsperstrip' => 'Биир блокка Ñ‚Ó©Ò»Ó© Ñтрока баар буолара',
'exif-stripbytecounts' => 'Хам тутуллубут блок кÑÑмÑйÑ',
'exif-jpeginterchangeformat' => 'JPEG SOI аналлаах ÑиригÑÑ€ көһүү',
'exif-jpeginterchangeformatlength' => 'JPEG дааннайдарын кÑÑмÑйÑ',
-'exif-transferfunction' => 'Ð¤ÑƒÐ½ÐºÑ†Ð¸Ñ Ð¿Ñ€ÐµÐ¾Ð±Ñ€Ð°Ð·Ð¾Ð²Ð°Ð½Ð¸Ñ Ñ†Ð²ÐµÑ‚Ð¾Ð²Ð¾Ð³Ð¾ проÑтранÑтва',
'exif-whitepoint' => 'Үрүҥ өҥ цветноһа',
'exif-primarychromaticities' => 'Сүрүн өҥнөр цветноÑтара',
'exif-ycbcrcoefficients' => 'Ó¨Ò¥ уларыйыытын коÑфициеннара',
@@ -2757,7 +2821,6 @@ $1',
'exif-compressedbitsperpixel' => 'Ойууну хам тутуу ньымата',
'exif-pixelydimension' => 'Ойуу кÑтитÑ',
'exif-pixelxdimension' => 'Ойуу үрдүгÑ',
-'exif-makernote' => 'Оҥорооччу Ñ…Ð¾Ñ Ð±Ñ‹Ò»Ð°Ð°Ñ€Ñ‹Ñ‹Ñ‚Ð°',
'exif-usercomment' => 'Кыттааччы Ñ…Ð¾Ñ Ð±Ñ‹Ò»Ð°Ð°Ñ€Ñ‹Ñ‹Ñ‚Ð°',
'exif-relatedsoundfile' => 'Ðудио-билÑÒ•Ñ Ñыһыаннаах',
'exif-datetimeoriginal' => 'Оҥоһуллубут кÑмÑ',
@@ -2771,7 +2834,6 @@ $1',
'exif-exposureprogram' => 'ЭкÑÐ¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð±Ñ‹Ñ€Ð°Ð³Ñ‹Ñ€Ð°Ð°Ð¼Ð¼Ð°Ñ‚Ð°',
'exif-spectralsensitivity' => 'Спектр чувÑтвительноһа',
'exif-isospeedratings' => 'ISO кÑÑмÑйÑ',
-'exif-oecf' => 'OECF (коÑффициент оптоÑлектричеÑкого преобразованиÑ)',
'exif-shutterspeedvalue' => 'Объективы арыйыы түргÑÐ½Ñ (APEX выдержката)',
'exif-aperturevalue' => 'Диафрагма (APEX улахана)',
'exif-brightnessvalue' => 'Сырдыга (APEX Ñркоһа)',
@@ -2785,7 +2847,6 @@ $1',
'exif-focallength-format' => '$1 мм',
'exif-subjectarea' => 'ТүһÑриллибит объект иÑнÑ',
'exif-flashenergy' => 'Ð’Ñпышка күүһÑ',
-'exif-spatialfrequencyresponse' => 'ПроÑтранÑÑ‚Ð²ÐµÐ½Ð½Ð°Ñ Ñ‡Ð°ÑÑ‚Ð¾Ñ‚Ð½Ð°Ñ Ñ…Ð°Ñ€Ð°ÐºÑ‚ÐµÑ€Ð¸Ñтика',
'exif-focalplanexresolution' => 'Разрешение по X в фокальной плоÑкоÑти',
'exif-focalplaneyresolution' => 'Разрешение по Y в фокальной плоÑкоÑти',
'exif-focalplaneresolutionunit' => 'Единица Ð¸Ð·Ð¼ÐµÑ€ÐµÐ½Ð¸Ñ Ñ€Ð°Ð·Ñ€ÐµÑˆÐµÐ½Ð¸Ñ Ð² фокальной плоÑкоÑти',
@@ -2794,7 +2855,6 @@ $1',
'exif-sensingmethod' => 'СенÑор тиибÑ',
'exif-filesource' => 'Ð‘Ð¸Ð»Ñ Ñ…Ð°Ð½Ñ‚Ð°Ð½ ылыллыбыта',
'exif-scenetype' => 'Сцена көрүҥÑ',
-'exif-cfapattern' => 'Ó¨Ò¥ фильтрын ÐºÓ©Ñ€Ò¯Ò¥Ñ (CFA pattern)',
'exif-customrendered' => 'Ойууну Ñбии тупÑарыы',
'exif-exposuremode' => 'ЭкÑÐ¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ ÐºÓ©Ñ€Ò¯Ò¥Ñ',
'exif-whitebalance' => 'Үрүҥ баланÑата',
@@ -2839,10 +2899,79 @@ $1',
'exif-gpsareainformation' => 'GPS оройуонун аата',
'exif-gpsdatestamp' => 'GPS ыйа-күнÑ',
'exif-gpsdifferential' => 'GPS көннөрүүтүн дифференциала',
+'exif-jpegfilecomment' => 'JPEG Ð±Ð¸Ð»Ñ Ð±Ñ‹Ò»Ð°Ð°Ñ€Ñ‹Ñ‹Ñ‚Ð°',
+'exif-keywords' => 'ÐšÒ¯Ð»Ò¯Ò¯Ñ Ñ‚Ñ‹Ð»Ð»Ð°Ñ€',
+'exif-worldregioncreated' => 'ХаартыÑка оҥоһуллубут аан дойду муннуга',
+'exif-countrycreated' => 'ХаартыÑка оҥоһуллубут дойдута',
+'exif-countrycodecreated' => 'ХаартыÑка Ñ‚Ò¯Ò»Ñриллибит дойдутун куода',
+'exif-provinceorstatecreated' => 'ХаартыÑка Ñ‚Ò¯Ò»Ñриллбит региона, уобалаһа, провинциÑта, штаата',
+'exif-citycreated' => 'ХаартыÑка Ñ‚Ò¯Ò»Ñриллибит куората',
+'exif-sublocationcreated' => 'ХаартыÑка Ñ‚Ò¯Ò»Ñриллибит куоратын оройуона',
+'exif-worldregiondest' => 'Ойууга көÑÑ‚Ó©Ñ€ дойду',
+'exif-countrydest' => 'Ойууга көÑÑ‚Ó©Ñ€ дойду',
+'exif-countrycodedest' => 'Ойууга көÑÑ‚Ó©Ñ€ дойду куода',
+'exif-provinceorstatedest' => 'Ойууламмыт регион, ÑƒÐ¾Ð±Ð°Ð»Ð°Ñ ÑбÑÑ‚ÑÑ€ штаат',
+'exif-citydest' => 'Ойууламмыт куорат',
+'exif-sublocationdest' => 'Ойууламмыт куорат оройуона',
'exif-objectname' => 'ÐšÑ‹Ð»Ð³Ð°Ñ Ð°Ð°Ñ‚Ð°',
+'exif-specialinstructions' => 'Эбии ыйыылар-кÑрдиилÑÑ€',
+'exif-headline' => 'Баһа',
+'exif-credit' => 'Ойууну биÑÑ€ÑÑччи',
+'exif-source' => 'Хантан ылыллыбыта',
+'exif-editstatus' => 'Ойууну уларытыы туһунан',
+'exif-urgency' => 'Ðктуальноһа',
+'exif-fixtureidentifier' => 'Колонка аата',
+'exif-locationdest' => 'Ойууламмыт Ñир',
+'exif-locationdestcode' => 'Ойууламмыт Ñир куода',
+'exif-objectcycle' => 'Ойуу Ñуукка ханнык кÑмигÑÑ€ ананара',
+'exif-contact' => 'СитимнÑһии туһунан',
+'exif-writer' => 'Ðаптар',
+'exif-languagecode' => 'Омугун тыла',
+'exif-iimversion' => 'IIM барыла',
+'exif-iimcategory' => 'КатегориÑ',
+'exif-iimsupplementalcategory' => 'Эбии категориÑлар',
+'exif-datetimeexpires' => 'Бу кÑнниттÑн туһаныллыбат',
+'exif-datetimereleased' => 'ТахÑыбыт күнÑ-ыйа',
+'exif-originaltransmissionref' => 'Ылыллыбыт Ñирин куода',
+'exif-identifier' => 'Идентификатора',
+'exif-lens' => 'Туттуллубут объектив',
+'exif-serialnumber' => 'Камера Ñерийнай нүөмÑÑ€Ñ',
+'exif-cameraownername' => 'Ð‘Ð°Ñ Ð±Ð¸Ð»ÑÑччитÑ',
+'exif-label' => 'БÑлиÑ',
+'exif-datetimemetadata' => 'Метадааннайдарын бүтÑһик уларытыытын ыйа-күнÑ',
+'exif-nickname' => 'Ойуу ÐºÑ‹Ð»Ð³Ð°Ñ Ð°Ð°Ñ‚Ð°',
+'exif-rating' => 'Сыанабыл (5-Ñ‚Ñн)',
+'exif-rightscertificate' => 'Быраабы Ñалайыы Ñертификаата',
+'exif-copyrighted' => 'Ðаптар быраабын туруга:',
+'exif-copyrightowner' => 'Ð‘Ð°Ñ Ð±Ð¸Ð»ÑÑччи',
+'exif-usageterms' => 'Туһаныы уÑулуобуйата',
+'exif-webstatement' => 'ИнтÑриниÑÐºÐºÑ Ñ‚Ð°Ñ€Ò•Ð°Ð½Ñ‹Ñ‹Ñ‚Ñ‹Ð½ туһунан',
+'exif-originaldocumentid' => 'Оригинаалын идентификатора',
+'exif-licenseurl' => 'Ð‘Ð°Ñ Ð±Ð¸Ð»Ð¸Ð¸ лиÑиÑнÑийÑтин URL-ла',
+'exif-morepermissionsurl' => 'ЛиÑÑиÑнÑÐ¸Ð¹Ñ Ñ‚ÑƒÒ»ÑƒÐ½Ð°Ð½ атын информациÑ',
+'exif-attributionurl' => 'Бу үлÑни туһанаргытыгар, бука диÑн, манна ÑигÑнÑÑриҥ:',
+'exif-preferredattributionname' => 'Бу үлÑни туһанаргытыгар, бука диÑн, маны ыйаарыҥ:',
+'exif-pngfilecomment' => 'PNG-Ð±Ð¸Ð»Ñ Ð±Ñ‹Ò»Ð°Ð°Ñ€Ñ‹Ñ‹Ñ‚Ð°',
+'exif-disclaimer' => 'Бүк охÑунуу',
+'exif-contentwarning' => 'СÑÑ€Ñтии',
+'exif-giffilecomment' => 'GIF-Ð±Ð¸Ð»Ñ Ð±Ñ‹Ò»Ð°Ð°Ñ€Ñ‹Ñ‹Ñ‚Ð°',
+'exif-intellectualgenre' => 'КөрүҥÑ',
+'exif-subjectnewscode' => 'ТиÑÐ¼Ñ ÐºÑƒÐ¾Ð´Ð°',
+'exif-scenecode' => 'IPTC куода',
+'exif-event' => 'Ойууламмыт түбÑлтÑ',
+'exif-organisationinimage' => 'Ойууламмыт Ñ‚ÑрилтÑ',
+'exif-personinimage' => 'Ойууламмыт киһи',
+'exif-originalimageheight' => 'Ойуу быһылла илигинÑÑҕи үрдүгÑ',
+'exif-originalimagewidth' => 'Ойуу быһылла илигинÑÑҕи кÑтитÑ',
# EXIF attributes
'exif-compression-1' => 'Хам тутуллубатах',
+'exif-compression-2' => 'CCITT Group 3, 1-Ð¼ÐµÑ€Ð½Ð°Ñ Ð¼Ð¾Ð´Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ ÐºÐ¾Ð´Ð¸Ñ€Ð¾Ð²Ð°Ð½Ð¸Ñ Ð´Ð»Ð¸Ð½ Ñерий Хаффмана',
+'exif-compression-3' => 'CCITT Group 3, Ñ„Ð°ÐºÑ ÐºÑƒÐ¾Ð´Ñ‚Ð°Ð°Ò»Ñ‹Ð½Ð°',
+'exif-compression-4' => 'CCITT Group 4, Ñ„Ð°ÐºÑ ÐºÑƒÐ¾Ð´Ñ‚Ð°Ð°Ò»Ñ‹Ð½Ð°',
+
+'exif-copyrighted-true' => 'Ðаптар быраабынан араҥаччыланар',
+'exif-copyrighted-false' => 'Бар-дьон Ð±Ð°Ñ Ð±Ð¸Ð»Ð¸Ð¸Ñ‚Ñ',
'exif-unknowndate' => 'КүнÑ-ыйа биллибÑÑ‚',
@@ -2858,6 +2987,8 @@ $1',
'exif-planarconfiguration-1' => '"chunky" формат',
'exif-planarconfiguration-2' => '"planar" формат',
+'exif-colorspace-65535' => 'Калибрдамматах',
+
'exif-componentsconfiguration-0' => 'Ñуох',
'exif-exposureprogram-0' => 'БиллибÑÑ‚',
@@ -2971,6 +3102,10 @@ $1',
'exif-gpslongitude-e' => 'Илиҥҥи уÑталааһын',
'exif-gpslongitude-w' => 'Ðрҕааҥы уÑталааһын',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => 'Муора таһымыттан {{PLURAL:$1|биир миÑÑ‚ÑÑ€Ñ|$1 миÑÑ‚ÑÑ€Ñ}} үрдүк',
+'exif-gpsaltitude-below-sealevel' => 'Муора таһымыттан {{PLURAL:$1|биир миÑÑ‚ÑÑ€Ñ|$1 миÑÑ‚ÑÑ€Ñ}} намыһах',
+
'exif-gpsstatus-a' => 'КÑÑмÑйдÑÑһин Ð±Ò¯Ñ‚Ñ Ð¸Ð»Ð¸Ðº',
'exif-gpsstatus-v' => 'КÑÑмÑйдÑÑһин бÑлÑм',
@@ -2982,21 +3117,73 @@ $1',
'exif-gpsspeed-m' => 'МилÑны чааÑка',
'exif-gpsspeed-n' => 'Узел',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Километр',
+'exif-gpsdestdistance-m' => 'МиилÑ',
+'exif-gpsdestdistance-n' => 'Байҕал миилÑÑ‚Ñ',
+
+'exif-gpsdop-excellent' => 'Уһулуччу ($1)',
+'exif-gpsdop-good' => 'ҮчүгÑй ($1)',
+'exif-gpsdop-moderate' => 'Орто ($1)',
+'exif-gpsdop-fair' => 'Орто аннынан ($1)',
+'exif-gpsdop-poor' => 'Мөлтөх ($1)',
+
+'exif-objectcycle-a' => 'СарÑыарда ÑÑ€Ñ',
+'exif-objectcycle-p' => 'КиÑÒ»Ñ ÑÑ€Ñ',
+'exif-objectcycle-b' => 'СарÑыарда уонна киÑÒ»Ñ',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'ДьиҥнÑÑÑ…',
'exif-gpsdirection-m' => 'Магнитнай',
+'exif-ycbcrpositioning-1' => 'КииннÑммит',
+'exif-ycbcrpositioning-2' => 'Co-sited',
+
+'exif-dc-contributor' => 'ОҥорÑооччулар',
+'exif-dc-coverage' => 'Медиа-Ð±Ð¸Ð»Ñ Ñ…Ð°Ð½Ð½Ð°, хаһан оҥоһуллубута',
+'exif-dc-date' => 'КүнÑ-дьыла',
+'exif-dc-publisher' => 'БÑчÑÑÑ‚Ñ‚ÑÑччи',
+'exif-dc-relation' => 'СитимнÑÑÑ… медиа',
+'exif-dc-rights' => 'Бырааптар',
+'exif-dc-source' => 'Ðан баÑтакы медиа',
+'exif-dc-type' => 'Медиа көрүҥÑ',
+
+'exif-rating-rejected' => 'БигÑргÑтиллибÑÑ‚ÑÑ…',
+
+'exif-isospeedratings-overflow' => '65535 тахÑа',
+
+'exif-iimcategory-ace' => 'УÑкууÑтуба, култуура уонна Ñаататыы',
+'exif-iimcategory-clj' => 'ТүөкүннÑÑһин уонна Ñокуон',
+'exif-iimcategory-dis' => 'Саахал',
+'exif-iimcategory-fin' => 'ЭкÑниÑÐ¼Ð¸ÐºÑ ÑƒÐ¾Ð½Ð½Ð° урбаан',
+'exif-iimcategory-edu' => 'Ò®Ó©Ñ€ÑÑ…',
+'exif-iimcategory-evn' => 'Тулалыыр ÑйгÑ',
+'exif-iimcategory-hth' => 'Эт-хаан туруга',
+'exif-iimcategory-hum' => 'Киһи ÑÑргиирÑ',
+'exif-iimcategory-lab' => 'ҮлÑ',
+'exif-iimcategory-lif' => 'Олоххо Ñыһыан уонна иллÑÒ¥ кÑм',
+'exif-iimcategory-pol' => 'БÑлиитикÑ',
+'exif-iimcategory-rel' => 'ИтÑÒ•Ñл уонна кут-Ñүр',
+'exif-iimcategory-sci' => 'Билим уонна тиÑхинньикÑ',
+'exif-iimcategory-soi' => 'УопÑаÑтыбаҕа Ñыһыаннар',
+'exif-iimcategory-spo' => 'КүрÑÑ',
+'exif-iimcategory-war' => 'СÑрии уонна утарыта туруу',
+'exif-iimcategory-wea' => 'Халлаан туруга',
+
+'exif-urgency-normal' => 'Көннөрү ($1)',
+'exif-urgency-low' => 'Ðамыһах ($1)',
+'exif-urgency-high' => 'Үрдүк ($1)',
+'exif-urgency-other' => 'Кыттааччы Ñппит приоритета ($1)',
+
# External editor support
'edit-externally' => 'Бу билÑни таһынааҕы бырагыраамма көмөтүнÑн уларытарга',
-'edit-externally-help' => 'Сиһилии бу ыйынньыгынан баран көр: [http://www.mediawiki.org/wiki/Manual:External_editors туруоруулар туһунан].',
+'edit-externally-help' => 'Сиһилии бу ыйынньыгынан баран көр: [//www.mediawiki.org/wiki/Manual:External_editors туруоруулар туһунан].',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'бары',
-'imagelistall' => 'бары',
-'watchlistall2' => 'бары',
-'namespacesall' => 'бары',
-'monthsall' => 'бары',
-'limitall' => 'бары',
+'watchlistall2' => 'бары',
+'namespacesall' => 'бары',
+'monthsall' => 'бары',
+'limitall' => 'бары',
# E-mail address confirmation
'confirmemail' => 'Электроннай аадырыһы бигÑргÑтии',
@@ -3075,17 +3262,24 @@ $1',
'trackbackdeleteok' => 'trackback Ñотулунна.',
# Delete conflict
-'deletedwhileediting' => "'''Болҕой''': СирÑйи көннөрө олордоххуна ким ÑÑ€Ñ Ñотон кÑбиÑÑ‚Ñ!",
-'confirmrecreate' => "[[User:$1|$1]] ([[User talk:$1|ырытыыта]]) бу ÑирÑйи Ñн уларыта олордоххуна Ñотон кÑбиÑÑ‚Ñ, Ñ‚Ó©Ñ€Ò¯Ó©Ñ‚Ñ:
+'deletedwhileediting' => "'''Болҕой''': СирÑйи көннөрө олордоххуна ким ÑÑ€Ñ Ñотон кÑбиÑÑ‚Ñ!",
+'confirmrecreate' => "[[User:$1|$1]] ([[User talk:$1|ырытыыта]]) бу ÑирÑйи Ñн уларыта олордоххуна Ñотон кÑбиÑÑ‚Ñ, Ñ‚Ó©Ñ€Ò¯Ó©Ñ‚Ñ:
: ''$2''
Бука диÑн ÑирÑйи төннөрөргүн бигÑргÑÑ‚.",
-'recreate' => 'Саҥаттан оҥоруу',
+'confirmrecreate-noreason' => '[[User:$1|$1]] ([[User talk:$1|ырытыыта]]) бу ÑирÑйи Ñн уларыта олордоххуна Ñотон кÑбиÑпит. Бука диÑн ÑирÑйи кырдьык төннөрүөххүн баҕараргын бигÑргÑÑ‚.',
+'recreate' => 'Саҥаттан оҥоруу',
# action=purge
'confirm_purge_button' => 'Сөп',
'confirm-purge-top' => 'Бу ÑирÑй кÑÑһин Ñотоору гынаҕын дуо?',
'confirm-purge-bottom' => 'КÑÑһин ырааÑтаабыт кÑÐ½Ð½Ñ ÑирÑй бүтÑһик торума көÑÑ‚Ò¯Ó©.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Сөп',
+'confirm-watch-top' => 'Бу ÑирÑйи кÑÑ‚ÑÑһин тиһигÑÑ€ киллÑÑ€Ñҕин дуо?',
+'confirm-unwatch-button' => 'Сөп',
+'confirm-unwatch-top' => 'Бу ÑирÑйи кÑÑ‚ÑÑһин тиһигиттÑн Ñотоҕун дуо?',
+
# Multipage image navigation
'imgmultipageprev' => '↠инники ÑирÑй',
'imgmultipagenext' => 'аныгыÑкы ÑирÑй →',
@@ -3130,14 +3324,14 @@ $1',
'watchlistedit-normal-legend' => 'КÑÑ‚Ñбил тиһигиттÑн пууннары Ñотуу',
'watchlistedit-normal-explain' => 'Манна кÑтиир ÑирÑйдÑриҥ Ñ‚Ð¸Ò»Ð¸Ð³Ñ ÐºÓ©ÑÑ‚Ó©Ñ€.
Биири Ñмит Ñотоору гынар буоллаххына кинини бÑлиÑÑ‚ÑÑ, онтон "{{int:Watchlistedit-normal-submit}}" тимÑҕи баттаа.
-Ó¨ÑÑÓ© манна [[Special:Watchlist/raw|тиһиги тиÑÐºÐ¸Ñ Ð±Ñ‹Ò»Ñ‹Ñ‹Ñ‚Ñ‹Ð½Ð°Ð½ уларытыаххын]] Ñөп.',
+Ó¨ÑÑÓ© манна [[Special:EditWatchlist/raw|тиһиги тиÑÐºÐ¸Ñ Ð±Ñ‹Ò»Ñ‹Ñ‹Ñ‚Ñ‹Ð½Ð°Ð½ уларытыаххын]] Ñөп.',
'watchlistedit-normal-submit' => 'Пууннары Ñот',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 Ñурук|$1 пуун}} Ñн кÑÑ‚ÑÑн көрүүҥ тиһигиттÑн Ñотулунна:',
'watchlistedit-raw-title' => '"СиикÑй" кÑÑ‚ÑÑн көрүү иÑпииһÑгин уларытыы',
'watchlistedit-raw-legend' => '"СиикÑй" кÑÑ‚ÑÑн көрүү иÑпииһÑгин уларытыы',
'watchlistedit-raw-explain' => 'Манна кÑÑ‚ÑÑн көрөр ÑирÑйдÑриҥ көÑтөллөр. Тиһиги уÑтуруокатын ÑбÑн-көҕүрÑÑ‚Ñн уларытыаххын Ñөп (биирдии уÑтуруокаҕа биирдии аат).
Уларытан бүтÑн баран «{{int:Watchlistedit-raw-submit}}» тимÑҕи баттаа.
-Ó¨ÑÑÓ© тиһиги [[Special:Watchlist/edit|уларытыы ÑÑ€ÑдÑÑктÑрин]] туһанан уларытаххын Ñөп.',
+Ó¨ÑÑÓ© тиһиги [[Special:EditWatchlist|уларытыы ÑÑ€ÑдÑÑктÑрин]] туһанан уларытаххын Ñөп.',
'watchlistedit-raw-titles' => 'Пууннар:',
'watchlistedit-raw-submit' => 'ИÑпииһÑги бигÑргÑÑ‚',
'watchlistedit-raw-done' => 'Саҥа иÑпииһÑк бигÑргÑтилиннÑ.',
@@ -3154,33 +3348,33 @@ $1',
'duplicate-defaultsort' => 'Болҕой: Ðаардааһын «$2» ÐºÒ¯Ð»Ò¯Ò¯Ò»Ñ ÑƒÑ€ÑƒÐºÐºÑƒ «$1» күлүүһү Ñабар (Ключ Ñортировки переопределÑет прежний ключ).',
# Special:Version
-'version' => 'MediaWiki барыла (биÑÑ€ÑийÑÑ‚Ñ)',
-'version-extensions' => 'Туруоруллубут раÑширениÑлар',
-'version-specialpages' => 'Ðналлаах ÑирÑйдÑÑ€',
-'version-parserhooks' => 'ÑинтакÑичеÑкай анализатор перехватчиктара',
-'version-variables' => 'Уларыйар дааннайдар (переменнайдар)',
-'version-skins' => 'Ð¢Ð°Ñ ÐºÓ©ÑÑ‚Ò¯Ò¯ барыллара',
-'version-other' => 'Ðтын',
-'version-mediahandlers' => 'Медиа уларытааччылар',
-'version-hooks' => 'Перехватчиктар',
-'version-extension-functions' => 'РаÑширениÑлар функциÑлара',
-'version-parser-extensiontags' => 'СинтакÑииһы анаалыÑÑ‚Ñ‹Ñ‹Ñ€ Ñ‚Ñрил раÑширениÑтын тиÑктÑÑ€Ñ',
-'version-parser-function-hooks' => 'СинтакÑииһы анаалыÑÑ‚Ñ‹Ñ‹Ñ€ Ñ‚Ñрил функциÑтын перехватчиктара',
-'version-skin-extension-functions' => 'Оформление темаларын раÑширениÑларын функциÑта',
-'version-hook-name' => 'Перехватчик аата',
-'version-hook-subscribedby' => 'Суруттарыыта:',
-'version-version' => '(Торум $1)',
-'version-license' => 'ЛиÑÑиÑнзийÑ',
-'version-poweredby-credits' => "Бу биики бу движокка олоҕурар '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'атыттар',
-'version-license-info' => 'MediaWiki көҥүл тарҕанар бырагырааммаларга киирÑÑ€, кинини көмпүүтÑÑ€ Ð°Ò»Ð°Ò•Ð°Ñ Ð±Ñ‹Ñ€Ð°Ð³Ñ‹Ñ€Ð°Ð°Ð¼Ð¼Ð°Ð»Ð°Ñ€Ñ‹Ð½ пуондатын GNU General Public License уÑулуобуйатынан көҥүл тарҕатаргыт уонна/ÑбÑÑ‚ÑÑ€ уларытаргыт көҥүллÑнÑÑ€; Ð¸ÐºÐºÐ¸Ñ ÑбÑÑ‚ÑÑ€ онтон хойукку ханнык баҕарар барылыттан Ñаҕалаан.
+'version' => 'MediaWiki барыла (биÑÑ€ÑийÑÑ‚Ñ)',
+'version-extensions' => 'Туруоруллубут раÑширениÑлар',
+'version-specialpages' => 'Ðналлаах ÑирÑйдÑÑ€',
+'version-parserhooks' => 'ÑинтакÑичеÑкай анализатор перехватчиктара',
+'version-variables' => 'Уларыйар дааннайдар (переменнайдар)',
+'version-antispam' => 'Спаамтан көмүÑкÑнии',
+'version-skins' => 'Ð¢Ð°Ñ ÐºÓ©ÑÑ‚Ò¯Ò¯ барыллара',
+'version-other' => 'Ðтын',
+'version-mediahandlers' => 'Медиа уларытааччылар',
+'version-hooks' => 'Перехватчиктар',
+'version-extension-functions' => 'РаÑширениÑлар функциÑлара',
+'version-parser-extensiontags' => 'СинтакÑииһы анаалыÑÑ‚Ñ‹Ñ‹Ñ€ Ñ‚Ñрил раÑширениÑтын тиÑктÑÑ€Ñ',
+'version-parser-function-hooks' => 'СинтакÑииһы анаалыÑÑ‚Ñ‹Ñ‹Ñ€ Ñ‚Ñрил функциÑтын перехватчиктара',
+'version-hook-name' => 'Перехватчик аата',
+'version-hook-subscribedby' => 'Суруттарыыта:',
+'version-version' => '(Торум $1)',
+'version-license' => 'ЛиÑÑиÑнзийÑ',
+'version-poweredby-credits' => "Бу биики бу движокка олоҕурар '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'атыттар',
+'version-license-info' => 'MediaWiki көҥүл тарҕанар бырагырааммаларга киирÑÑ€, кинини көмпүүтÑÑ€ Ð°Ò»Ð°Ò•Ð°Ñ Ð±Ñ‹Ñ€Ð°Ð³Ñ‹Ñ€Ð°Ð°Ð¼Ð¼Ð°Ð»Ð°Ñ€Ñ‹Ð½ пуондатын GNU General Public License уÑулуобуйатынан көҥүл тарҕатаргыт уонна/ÑбÑÑ‚ÑÑ€ уларытаргыт көҥүллÑнÑÑ€; Ð¸ÐºÐºÐ¸Ñ ÑбÑÑ‚ÑÑ€ онтон хойукку ханнык баҕарар барылыттан Ñаҕалаан.
MediaWiki туһалаах буоллун диÑн тарҕатыллар, ол ÑÑ€ÑÑри ÐТЫЫЛÐÐÐР СЫÐÐÐÐҺРÑбÑÑ‚ÑÑ€ Ð¥ÐÐÐЫК ЭРЭ ЧОПЧУ СОРУККРСӨП ТҮБЭҺИИТЭ бигÑргÑтиллибÑÑ‚ (гарантиÑта Ñуох). Сиһилии GNU General Public License уÑулуобуйатын көрүҥ.
-[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License копиÑтын] бу бырагыраамманы кытта ылыахтаах Ñтигит, ол Ñатамматах буоллаҕына Free Software Foundation, Inc. Ñ‚ÑрилтÑÒ•Ñ Ñурукта Ñуруйуҥ, бу аадырыÑка: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ÑбÑÑ‚ÑÑ€ [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html Ñаайка киирÑн ааҕыҥ].',
-'version-software' => 'Туруоруллубут бырагырааммалар',
-'version-software-product' => 'Бородуукта',
-'version-software-version' => 'Барыл (торум)',
+[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License копиÑтын] бу бырагыраамманы кытта ылыахтаах Ñтигит, ол Ñатамматах буоллаҕына Free Software Foundation, Inc. Ñ‚ÑрилтÑÒ•Ñ Ñурукта Ñуруйуҥ, бу аадырыÑка: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ÑбÑÑ‚ÑÑ€ [//www.gnu.org/licenses/old-licenses/gpl-2.0.html Ñаайка киирÑн ааҕыҥ].',
+'version-software' => 'Туруоруллубут бырагырааммалар',
+'version-software-product' => 'Бородуукта',
+'version-software-version' => 'Барыл (торум)',
# Special:FilePath
'filepath' => 'Ð‘Ð¸Ð»Ñ Ñуола',
@@ -3190,22 +3384,22 @@ MediaWiki туһалаах буоллун диÑн тарҕатыллар, ол
Ойуулар толору көрдөрүллÑллÑÑ€, атын билÑлÑÑ€ ÑитимнÑÑÑ… бырагырааммаларыгар тута арыллаллар.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Ð¥Ð¾Ñ Ð±Ð¸Ð»ÑлÑри көрдөөһүн',
-'fileduplicatesearch-summary' => 'ТÑÒ¥ билÑлÑри Ñ…Ñш-куодтарынан көрдөөһүн.
-
-Ð‘Ð¸Ð»Ñ Ð°Ð°Ñ‚Ñ‹Ð½ "{{ns:file}}:" префикÑа Ñуох киллÑÑ€.',
-'fileduplicatesearch-legend' => 'Хатылааһыннары көрдөөһүн',
-'fileduplicatesearch-filename' => 'Ð‘Ð¸Ð»Ñ Ð°Ð°Ñ‚Ð°:',
-'fileduplicatesearch-submit' => 'Бул',
-'fileduplicatesearch-info' => '$1 × $2 пиикÑÑл<br />Ð‘Ð¸Ð»Ñ ÐºÑÑмÑйÑ: $3<br />MIME-тиип: $4',
-'fileduplicatesearch-result-1' => '"$1" Ð±Ð¸Ð»Ñ Ñ…Ð°Ñ‚Ñ‹Ð»Ð°Ð°Ò»Ñ‹Ð½Ð½Ð°Ñ€Ð° Ñуох Ñбит.',
-'fileduplicatesearch-result-n' => '"$1" Ð±Ð¸Ð»Ñ {{PLURAL:$2|1 хатылааһыннаах Ñбит|$2 хатылааһыннардаах Ñбит}}.',
+'fileduplicatesearch' => 'Ð¥Ð¾Ñ Ð±Ð¸Ð»ÑлÑри көрдөөһүн',
+'fileduplicatesearch-summary' => 'ТÑÒ¥ билÑлÑри Ñ…Ñш-куодтарынан көрдөөһүн.',
+'fileduplicatesearch-legend' => 'Хатылааһыннары көрдөөһүн',
+'fileduplicatesearch-filename' => 'Ð‘Ð¸Ð»Ñ Ð°Ð°Ñ‚Ð°:',
+'fileduplicatesearch-submit' => 'Бул',
+'fileduplicatesearch-info' => '$1 × $2 пиикÑÑл<br />Ð‘Ð¸Ð»Ñ ÐºÑÑмÑйÑ: $3<br />MIME-тиип: $4',
+'fileduplicatesearch-result-1' => '"$1" Ð±Ð¸Ð»Ñ Ñ…Ð°Ñ‚Ñ‹Ð»Ð°Ð°Ò»Ñ‹Ð½Ð½Ð°Ñ€Ð° Ñуох Ñбит.',
+'fileduplicatesearch-result-n' => '"$1" Ð±Ð¸Ð»Ñ {{PLURAL:$2|1 хатылааһыннаах Ñбит|$2 хатылааһыннардаах Ñбит}}.',
+'fileduplicatesearch-noresults' => '«$1» диÑн Ð±Ð¸Ð»Ñ Ñуох Ñбит.',
# Special:SpecialPages
'specialpages' => 'Ðнал ÑирÑйдÑÑ€',
'specialpages-note' => '----
* Көннөрү анал ÑирÑйдÑÑ€.
-* <strong class="mw-specialpagerestricted">КиирÑÑ€Ð³Ñ Ñ…Ð°Ð°Ñ‡Ñ‡Ð°Ñ…Ñ‚Ð°Ñ€Ð´Ð°Ð°Ñ… анал ÑирÑйдÑÑ€.</strong>',
+* <strong class="mw-specialpagerestricted">Хааччахтардаах анал ÑирÑйдÑÑ€.</strong>
+* <span class="mw-specialpagecached">КÑÑÑÑ‚Ñммит анал ÑирÑйдÑÑ€ (ÑргÑрбит буолуохтарын Ñөп).</span>',
'specialpages-group-maintenance' => 'ТехничеÑкÑй отчуоттар',
'specialpages-group-other' => 'Ðтын аналлаах ÑирÑйдÑÑ€',
'specialpages-group-login' => 'Киирии / бÑлиÑÑ‚Ñнии',
diff --git a/languages/messages/MessagesSc.php b/languages/messages/MessagesSc.php
index 708aeb38..09df764b 100644
--- a/languages/messages/MessagesSc.php
+++ b/languages/messages/MessagesSc.php
@@ -53,7 +53,7 @@ $dateFormats = array(
'ymd both' => 'H:i, Y M j',
);
-$linkTrail = "/^([a-z]+)(.*)\$/sD";
+$linkTrail = "/^([a-z]+)(.*)$/sD";
$messages = array(
# User preference toggles
@@ -178,8 +178,7 @@ $messages = array(
'index-category' => 'Pàginas indicizadas',
'noindex-category' => 'Pàginas no indicitzadas',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''MediaWiki est stadu installadu in modu currègidu.'''",
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'A propòsitu de',
'article' => 'Artìculu',
@@ -229,7 +228,6 @@ $messages = array(
'history' => 'Istòria de sa pàgina',
'history_short' => 'Istòria',
'updatedmarker' => "agiornada dae s'ùrtima bìsita mia",
-'info_short' => 'Informatziones',
'printableversion' => 'Versione de imprenta',
'permalink' => 'Acàpiu fitianu',
'print' => 'Imprenta',
@@ -456,7 +454,7 @@ Pro praxere, cando dda retzis identìfica·ti torra.',
'createaccount-title' => 'Creatzione de unu account pro {{SITENAME}}',
'loginlanguagelabel' => 'Limba: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Càmbia sa password',
'resetpass_header' => 'Càmbia sa password de su account',
'oldpassword' => 'Password betza:',
@@ -480,8 +478,6 @@ Pro praxere, cando dda retzis identìfica·ti torra.',
'extlink_tip' => 'Acàpiu a foras (ammenta su prefissu http://)',
'headline_sample' => 'Testu de su tìtulu',
'headline_tip' => 'Tìtulu de su de duos livellu',
-'math_sample' => 'Inserta sa fòrmula inoghe',
-'math_tip' => 'Fòrmula matemàtica (LaTeX)',
'nowiki_sample' => 'Inserta su testu non-formatadu inoghe',
'nowiki_tip' => 'Ignora sa formatatzione wiki',
'image_sample' => 'Esèmpiu.jpg',
@@ -535,7 +531,7 @@ Si ses intradu inoghe pro sbàlliu, carca in su browser tuo su butone '''back/in
'anontalkpagetext' => "----''Custa est sa pàgina de cuntierra de unu usuàriu anònimu ki no at creadu unu account galu, o ki non dd'usat. Pro custu impreamus su nùmeru de indiritzos IP pro ddu identificare. Is indiritzos IP podent però èsser cundivìdidos dae unos cantos usuàrios. Si ses unu usuàriu anònimu e ritenes ki custos cummentos non sunt diretos a tue, pro praxere [[Special:UserLogin/signup|crea unu account]] o [[Special:UserLogin|identifica·ti (log in)]] pro evitare cunfusione cun àteros usuàrios anònimos.''",
'noarticletext' => 'In custu momentu sa pàgina est bùida.
Podes [[Special:Search/{{PAGENAME}}|chircare custu tìtulu]] in àteras pàginas, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} chircare in is registros ligados] oppuru [{{fullurl:{{FULLPAGENAME}}|action=edit}} acontzare sa pàgina]</span>.',
-'userpage-userdoesnotexist' => 'S\'account de s\'usuàriu "$1" no est stadu registradu.
+'userpage-userdoesnotexist' => 'S\'account de s\'usuàriu "<nowiki>$1</nowiki>" no est stadu registradu.
Pro praxere abbàida si boles creare/acontzare custa pàgina.',
'userpage-userdoesnotexist-view' => 'S\'account de s\'usuàriu "$1" no est stadu registradu.',
'updated' => '(Agiornadu)',
@@ -699,7 +695,6 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
'changepassword' => 'Càmbia password',
'prefs-skin' => 'Bisura',
'skin-preview' => 'Antiprima',
-'prefs-math' => 'Fòrmulas matemàticas',
'prefs-datetime' => 'Data e ora',
'prefs-personal' => 'Datos personales',
'prefs-rc' => 'Ùrtimas mudàntzias',
@@ -713,8 +708,6 @@ Prova a seberare ''totu:'' pro chircare in totu su cuntènnidu (inclùdidas pàg
'columns' => 'Colunnas:',
'searchresultshead' => 'Settaggio delle preferenze per la ricerca',
'resultsperpage' => 'Risultati da visualizzare per pagina',
-'contextlines' => 'Righe di testo da mostrare per ciascun risultato',
-'contextchars' => 'Caratteri per linea',
'stub-threshold-disabled' => 'Disativadu',
'recentchangescount' => 'Nùmeru de acontzos de amostare pro definidura:',
'savedprefs' => 'Is preferèntzias tuas sunt stadas sarbadas.',
@@ -1076,10 +1069,8 @@ S'indiritzu chi as insertadu in is [[Special:Preferences|preferèntzias usuàriu
'watchnologin' => 'No intrau (log in)',
'watchnologintext' => 'Devi prima fare il [[Special:UserLogin|login]]
per modificare la tua lista di osservati speciali.',
-'addedwatch' => 'Agiuntu a sa watchlist tua',
'addedwatchtext' => "Sa pàgina \"[[:\$1]]\" est istada aciunta a sa [[Special:Watchlist|watchlist]] tua.
Is mudàntzias de custa pàgina e de sa pàgina de cuntierras sua ant a bennere elencadas inoe, e su tìtulu at a aparire in '''grassetto''' in sa pàgina de is [[Special:RecentChanges|ùrtimas mudàntzias]] pro du bidere mengius.",
-'removedwatch' => 'Bogadu dae sa watchlist tua',
'removedwatchtext' => 'Sa pàgina "[[:$1]]" est istada tirada dae sa [[Special:Watchlist|watchlist tua]].',
'watch' => 'Pone in sa watchlist',
'watchthispage' => 'Pone ogru a custu artìculu',
@@ -1111,7 +1102,7 @@ Is mudàntzias de custa pàgina e de sa pàgina de cuntierras sua ant a bennere
Pro praxere, cunfirma ca est intentzione tua fàgher custu, ca connosches is cosseguèntzias de s'atzione tua, a ca custa est cunforma a is [[{{MediaWiki:Policy-url}}|lìnias polìticas]].",
'actioncomplete' => "Acabada s'atzione",
'actionfailed' => 'Atzione faddida',
-'deletedtext' => 'Sa pàgina "<nowiki>$1</nowiki>" est istada fuliada.
+'deletedtext' => 'Sa pàgina "$1" est istada fuliada.
Càstia su log $2 pro unu registru de is ùrtimas fuliaduras.',
'deletedarticle' => 'at fuliadu "[[$1]]"',
'dellogpage' => 'Burraduras',
@@ -1138,7 +1129,7 @@ s'ùrtimu contribuidore est s'ùnicu autore de custa pàgina.",
'protectexpiry' => 'Iscadèntzia:',
'protect_expiry_invalid' => "S'iscadèntzia est imbàlida.",
'protect_expiry_old' => 'Iscadentzia giai passada.',
-'protect-text' => "Custu modulu serbit pro castiari e cambiari su livellu de amparadura de sa pàgina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Custu modulu serbit pro castiari e cambiari su livellu de amparadura de sa pàgina '''$1'''.",
'protect-locked-access' => "Non tenes su permissu pro cambiare is livellus de amparadura de sa pàgina.
Is impostatziones atuales pro sa pàgina '''$1''':",
'protect-cascadeon' => "A su momentu custa pàgina est bloccada pro ite est inclùdia {{PLURAL:$1|in sa pàgina indicada a suta, pro sa cali|in is pàginas indicadas a suta, pro is calis}} est ativa s'amparadura ricorsiva. Est possìbile cambiare su livellu de amparadura de custa pàgina, ma is impostatziones derivadas dae s'amparadura ricorsiva non ant a èssere mudadas.",
@@ -1237,7 +1228,6 @@ Chi est istada creada una pàgina cun su matessi tìtulu, is revisiones recupera
'blockip-legend' => 'Blocca usuàriu',
'blockiptext' => "Usa il modulo sottostante per bloccare l'accesso con diritto di scrittura da uno specifico indirizzo IP. Questo blocco deve essere operato SOLO per prevenire atti di vandalismo, ed in stretta osservanza dei principi tutti della [[{{MediaWiki:Policy-url}}|policy di {{SITENAME}}]]. Il blocco non può in nessun caso essere applicato per motivi ideologici.
Scrivi un motivo specifico per il quale questo indirizzo IP dovrebbe a tuo avviso essere bloccato (per esempio, cita i titoli di pagine eventualmente già oggetto di vandalismo editoriale).",
-'ipaddress' => 'Indiritzu IP:',
'ipadressorusername' => 'Indiritzu IP o nùmene usuàriu:',
'ipbexpiry' => 'Scadèntzia:',
'ipbreason' => 'Motivu:',
@@ -1257,9 +1247,7 @@ Abbàida sa [[Special:IPBlockList|lista de IP bloccados]] pro bìder sas bloccad
'unblockiptext' => 'Usa il modulo sottostante per restituire il diritto di scrittura ad un indirizzo IP precedentemente bloccato.',
'ipusubmit' => 'Boga custu bloccu',
'ipblocklist' => 'Usuàrios e indiritzos bloccados',
-'ipblocklist-username' => 'Nùmene usuàriu o indiritzu IP:',
'ipblocklist-submit' => 'Chirca',
-'blocklistline' => '$1, $2 ha bloccato $3 ($4)',
'infiniteblock' => 'infinitu',
'expiringblock' => 'scadit su $1 a is $2',
'blocklink' => 'blocca',
@@ -1295,7 +1283,6 @@ Per cortesia, conferma che questo è effettivamente quanto tu intendi ora effett
# Move page
'move-page' => 'Movimentu de $1',
-'move-page-backlink' => '↠$1',
'move-page-legend' => 'Movimentu pàgina',
'movepagetext' => "Cun custu mòdellu podes renumenare una pàgina, movende totu sa stòria sua a sa pàgina noa.
Su tìtulu bèciu at a diventare una pàgina de reindiritzamentu a su tìtulu nou.
@@ -1425,24 +1412,15 @@ Podes agiùnger unu motivu in s\'ogetu de s\'acontzu.',
'anonusers' => '$1, {{PLURAL:$2|usuàriu anònimu|usuàrios anònimos}} de {{SITENAME}}',
'creditspage' => 'Autores de sa pàgina',
-# Info page
-'infosubtitle' => 'Informatziones pro sa pàgina',
-'numedits' => 'Nùmeru de acontzos (pàgina): $1',
-'numtalkedits' => 'Nùmeru de acontzos (pàgina de cuntierra): $1',
-
-# Math errors
-'math_unknown_error' => 'faddina disconnota',
-
# Browsing diffs
'previousdiff' => '↠Acontzu in antis',
'nextdiff' => 'Acontzu in fatu →',
# Media information
-'file-info-size' => '$1 × $2 pixels, mannesa de su file: $3, tipu de MIME: $4',
-'file-nohires' => '<small>Non si tenent risolutziones prus artas.</small>',
-'svg-long-desc' => 'file in formadu SVG, mannesa nominale $1 × $2 pixel, mannesa de su file: $3',
-'show-big-image' => 'Versione a risolutzione arta',
-'show-big-image-thumb' => '<small>Mannesa de custa antiprima: $1 × $2 pixels</small>',
+'file-info-size' => '$1 × $2 pixels, mannesa de su file: $3, tipu de MIME: $4',
+'file-nohires' => '<small>Non si tenent risolutziones prus artas.</small>',
+'svg-long-desc' => 'file in formadu SVG, mannesa nominale $1 × $2 pixel, mannesa de su file: $3',
+'show-big-image' => 'Versione a risolutzione arta',
# Special:NewFiles
'imagelisttext' => "Innoe sighendi du est una lista de '''$1''' {{PLURAL:$1|file|files}} ordinada $2.",
@@ -1474,7 +1452,13 @@ Is acàpius chi sighint in sa matessi lìnia sunt cunsideraus comente eccetzione
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-artist' => 'Autore',
@@ -1494,8 +1478,8 @@ Is acàpius chi sighint in sa matessi lìnia sunt cunsideraus comente eccetzione
'exif-xyresolution-i' => '$1 dpi',
'exif-xyresolution-c' => '$1 dpc',
-'exif-colorspace-1' => 'sRGB',
-'exif-colorspace-ffff.h' => 'FFFF.H',
+'exif-colorspace-1' => 'sRGB',
+'exif-colorspace-65535' => 'FFFF.H',
'exif-componentsconfiguration-1' => 'Y',
'exif-componentsconfiguration-2' => 'Cb',
@@ -1513,15 +1497,13 @@ Is acàpius chi sighint in sa matessi lìnia sunt cunsideraus comente eccetzione
# External editor support
'edit-externally' => 'Acontza custu file usendi unu programma de foras',
-'edit-externally-help' => '(Pro àteras informatziones càstia is [http://www.mediawiki.org/wiki/Manual:External_editors istrutziones])',
+'edit-externally-help' => '(Pro àteras informatziones càstia is [//www.mediawiki.org/wiki/Manual:External_editors istrutziones])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'totu',
-'imagelistall' => 'totu',
-'watchlistall2' => 'totu',
-'namespacesall' => 'totu',
-'monthsall' => 'totu',
-'limitall' => 'totu',
+'watchlistall2' => 'totu',
+'namespacesall' => 'totu',
+'monthsall' => 'totu',
+'limitall' => 'totu',
# E-mail address confirmation
'confirmemail' => "Cunfirma s'indiritzu e-mail",
diff --git a/languages/messages/MessagesScn.php b/languages/messages/MessagesScn.php
index bb64cd55..479944fc 100644
--- a/languages/messages/MessagesScn.php
+++ b/languages/messages/MessagesScn.php
@@ -49,89 +49,89 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'RinnirizzamentiDuppi' ),
+ 'Allmessages' => array( 'Missaggi' ),
+ 'Allpages' => array( 'TuttiLiPàggini' ),
+ 'Ancientpages' => array( 'PàgginiMenuNovi' ),
+ 'Blankpage' => array( 'PàgginaVacanti' ),
+ 'Block' => array( 'Blocca' ),
+ 'Blockme' => array( 'BloccaProxy' ),
+ 'Booksources' => array( 'RicercaISBN' ),
'BrokenRedirects' => array( 'RinnirizzamentiSbagghiati' ),
- 'Disambiguations' => array( 'Disambiguazzioni' ),
- 'Userlogin' => array( 'Tràsi', 'Login' ),
- 'Userlogout' => array( 'Nesci', 'Logout' ),
+ 'Categories' => array( 'Catigurìi' ),
+ 'ChangePassword' => array( 'RimpostaPassword' ),
+ 'Confirmemail' => array( 'CunfermaEmail' ),
+ 'Contributions' => array( 'Cuntribbuti', 'CuntribbutiUtenti' ),
'CreateAccount' => array( 'CrìatiNuCuntu' ),
- 'Preferences' => array( 'Prifirenzi' ),
- 'Watchlist' => array( 'ArtìculiTaliati' ),
- 'Recentchanges' => array( 'ÙrtimiCanciamenti' ),
- 'Upload' => array( 'Càrrica' ),
+ 'Deadendpages' => array( 'PàgginiSenzaNisciuta' ),
+ 'DeletedContributions' => array( 'CuntribbutiScancillati' ),
+ 'Disambiguations' => array( 'Disambiguazzioni' ),
+ 'DoubleRedirects' => array( 'RinnirizzamentiDuppi' ),
+ 'Emailuser' => array( 'MannaEmail' ),
+ 'Export' => array( 'Esporta' ),
+ 'Fewestrevisions' => array( 'PàgginiCuCchiùPiccaRivisioni' ),
+ 'Import' => array( 'Mporta' ),
+ 'BlockList' => array( 'IPBluccati' ),
+ 'LinkSearch' => array( 'CercaCullicamenti' ),
+ 'Listadmins' => array( 'Amministratura' ),
+ 'Listbots' => array( 'ListaBot' ),
'Listfiles' => array( 'Mmàggini' ),
- 'Newimages' => array( 'MmàgginiRicenti' ),
- 'Listusers' => array( 'Utilizzatura', 'ListaUtilizzatura' ),
'Listgrouprights' => array( 'AlencuPirmessiGruppi' ),
- 'Statistics' => array( 'Statìstichi' ),
- 'Randompage' => array( 'PàgginaAmmuzzu' ),
+ 'Listredirects' => array( 'Rinnirizzamenti', 'ListaRinnirizzamenti' ),
+ 'Listusers' => array( 'Utilizzatura', 'ListaUtilizzatura' ),
+ 'Lockdb' => array( 'BloccaDB', 'BloccaDatabase' ),
+ 'Log' => array( 'Riggistri', 'Riggistru' ),
'Lonelypages' => array( 'PàgginiOrfani' ),
- 'Uncategorizedpages' => array( 'PàgginiSenzaCatigurìi' ),
- 'Uncategorizedcategories' => array( 'CatigurìiSenzaCatigurìi' ),
- 'Uncategorizedimages' => array( 'MmàgginiSenzaCatigurìi' ),
- 'Uncategorizedtemplates' => array( 'TemplateSenzaCatigurìi' ),
- 'Unusedcategories' => array( 'CatigurìiNonUsati' ),
- 'Unusedimages' => array( 'MmàgginiNonUsati' ),
- 'Wantedpages' => array( 'PàgginiAddumannati' ),
- 'Wantedcategories' => array( 'CatigurìiAddumannati' ),
- 'Wantedfiles' => array( 'FileAddumannati' ),
- 'Wantedtemplates' => array( 'TemplateAddumannati' ),
+ 'Longpages' => array( 'PàgginiCchiùLonghi' ),
+ 'MergeHistory' => array( 'UnìficaCrunuluggìa' ),
+ 'MIMEsearch' => array( 'RicercaMIME' ),
+ 'Mostcategories' => array( 'PàgginiCuCchiossaiCatigurìi' ),
+ 'Mostimages' => array( 'MmàgginiCchiùRichiamati' ),
'Mostlinked' => array( 'PàgginiCchiùRichiamati' ),
'Mostlinkedcategories' => array( 'CatigurìiCchiùRichiamati' ),
'Mostlinkedtemplates' => array( 'TemplateCchiùRichiamati' ),
- 'Mostimages' => array( 'MmàgginiCchiùRichiamati' ),
- 'Mostcategories' => array( 'PàgginiCuCchiossaiCatigurìi' ),
'Mostrevisions' => array( 'PàgginiCuCchiossaiRivisioni' ),
- 'Fewestrevisions' => array( 'PàgginiCuCchiùPiccaRivisioni' ),
- 'Shortpages' => array( 'PàgginiCchiùCurti' ),
- 'Longpages' => array( 'PàgginiCchiùLonghi' ),
+ 'Movepage' => array( 'Sposta', 'Rinòmina' ),
+ 'Mycontributions' => array( 'CuntribbutiMei' ),
+ 'Mypage' => array( 'MèPàgginaUtenti' ),
+ 'Mytalk' => array( 'DiscussioniMei' ),
+ 'Newimages' => array( 'MmàgginiRicenti' ),
'Newpages' => array( 'PàgginiCchiùNovi' ),
- 'Ancientpages' => array( 'PàgginiMenuNovi' ),
- 'Deadendpages' => array( 'PàgginiSenzaNisciuta' ),
+ 'Popularpages' => array( 'PàgginiCchiùVisitati' ),
+ 'Preferences' => array( 'Prifirenzi' ),
+ 'Prefixindex' => array( 'Prifissi' ),
'Protectedpages' => array( 'PàgginiPrutiggiuti' ),
'Protectedtitles' => array( 'TìtuliPrutiggiuti' ),
- 'Allpages' => array( 'TuttiLiPàggini' ),
- 'Prefixindex' => array( 'Prifissi' ),
- 'Ipblocklist' => array( 'IPBluccati' ),
- 'Specialpages' => array( 'PàgginiSpiciali' ),
- 'Contributions' => array( 'Cuntribbuti', 'CuntribbutiUtenti' ),
- 'Emailuser' => array( 'MannaEmail' ),
- 'Confirmemail' => array( 'CunfermaEmail' ),
- 'Whatlinkshere' => array( 'ChiPuntaCcà' ),
+ 'Randompage' => array( 'PàgginaAmmuzzu' ),
+ 'Randomredirect' => array( 'RedirectAmmuzzu' ),
+ 'Recentchanges' => array( 'ÙrtimiCanciamenti' ),
'Recentchangeslinked' => array( 'CanciamentiCurrilati' ),
- 'Movepage' => array( 'Sposta', 'Rinòmina' ),
- 'Blockme' => array( 'BloccaProxy' ),
- 'Booksources' => array( 'RicercaISBN' ),
- 'Categories' => array( 'Catigurìi' ),
- 'Export' => array( 'Esporta' ),
- 'Version' => array( 'Virsioni' ),
- 'Allmessages' => array( 'Missaggi' ),
- 'Log' => array( 'Riggistri', 'Riggistru' ),
- 'Blockip' => array( 'Blocca' ),
+ 'Revisiondelete' => array( 'ScancellaRivisioni' ),
+ 'Search' => array( 'Ricerca', 'Cerca' ),
+ 'Shortpages' => array( 'PàgginiCchiùCurti' ),
+ 'Specialpages' => array( 'PàgginiSpiciali' ),
+ 'Statistics' => array( 'Statìstichi' ),
+ 'Uncategorizedcategories' => array( 'CatigurìiSenzaCatigurìi' ),
+ 'Uncategorizedimages' => array( 'MmàgginiSenzaCatigurìi' ),
+ 'Uncategorizedpages' => array( 'PàgginiSenzaCatigurìi' ),
+ 'Uncategorizedtemplates' => array( 'TemplateSenzaCatigurìi' ),
'Undelete' => array( 'Riprìstina' ),
- 'Import' => array( 'Mporta' ),
- 'Lockdb' => array( 'BloccaDB', 'BloccaDatabase' ),
'Unlockdb' => array( 'SbloccaDB', 'SbloccaDatabase' ),
- 'Userrights' => array( 'PirmessiUtenti' ),
- 'MIMEsearch' => array( 'RicercaMIME' ),
- 'Unwatchedpages' => array( 'PàgginiNunTaliati' ),
- 'Listredirects' => array( 'Rinnirizzamenti', 'ListaRinnirizzamenti' ),
- 'Revisiondelete' => array( 'ScancellaRivisioni' ),
+ 'Unusedcategories' => array( 'CatigurìiNonUsati' ),
+ 'Unusedimages' => array( 'MmàgginiNonUsati' ),
'Unusedtemplates' => array( 'TemplateNunUsati' ),
- 'Randomredirect' => array( 'RedirectAmmuzzu' ),
- 'Mypage' => array( 'MèPàgginaUtenti' ),
- 'Mytalk' => array( 'DiscussioniMei' ),
- 'Mycontributions' => array( 'CuntribbutiMei' ),
- 'Listadmins' => array( 'Amministratura' ),
- 'Listbots' => array( 'ListaBot' ),
- 'Popularpages' => array( 'PàgginiCchiùVisitati' ),
- 'Search' => array( 'Ricerca', 'Cerca' ),
- 'Resetpass' => array( 'RimpostaPassword' ),
+ 'Unwatchedpages' => array( 'PàgginiNunTaliati' ),
+ 'Upload' => array( 'Càrrica' ),
+ 'Userlogin' => array( 'Tràsi', 'Login' ),
+ 'Userlogout' => array( 'Nesci', 'Logout' ),
+ 'Userrights' => array( 'PirmessiUtenti' ),
+ 'Version' => array( 'Virsioni' ),
+ 'Wantedcategories' => array( 'CatigurìiAddumannati' ),
+ 'Wantedfiles' => array( 'FileAddumannati' ),
+ 'Wantedpages' => array( 'PàgginiAddumannati' ),
+ 'Wantedtemplates' => array( 'TemplateAddumannati' ),
+ 'Watchlist' => array( 'ArtìculiTaliati' ),
+ 'Whatlinkshere' => array( 'ChiPuntaCcà' ),
'Withoutinterwiki' => array( 'SenzaInterwiki' ),
- 'MergeHistory' => array( 'UnìficaCrunuluggìa' ),
- 'Blankpage' => array( 'PàgginaVacanti' ),
- 'LinkSearch' => array( 'CercaCullicamenti' ),
- 'DeletedContributions' => array( 'CuntribbutiScancillati' ),
);
$messages = array(
@@ -264,14 +264,6 @@ $messages = array(
'index-category' => 'Pàggini nnicizzati',
'noindex-category' => 'Pàggini nun nnicizzati',
-'mainpagetext' => "'''Nstallazzioni di MediaWiki cumplitata currettamenti.'''",
-'mainpagedocfooter' => "Pi favuri taliari [http://meta.wikimedia.org/wiki/Help:Contents Guida utenti] pi aiutu supra l'usu e la cunfigurazzioni di stu software wiki.
-
-== P'accuminzari ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Alencu di mpustazzioni di cunfigurazzioni]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list dî rilassi di MediaWiki]",
-
'about' => 'pàggina',
'article' => 'artìculu',
'newwindow' => '(grapi na finestra nova)',
@@ -321,7 +313,6 @@ $messages = array(
'history' => 'cronuluggìa',
'history_short' => 'storia',
'updatedmarker' => 'canciata dâ mè ùrtima vìsita',
-'info_short' => 'Nfurmazzioni',
'printableversion' => 'Virsioni stampàbbili',
'permalink' => 'Liami pirmanenti',
'print' => 'Stampa',
@@ -501,12 +492,11 @@ Query: $2',
'protectedpagetext' => 'Sta pàggina fu bluccata pi privèniri li canciamenti.',
'viewsourcetext' => 'È pussìbbili visualizzari e cupiari lu còdici surgenti di sta pàggina:',
'protectedinterface' => "Sta pàggina cunteni un elementu ca fà parti dâ nterfaccia utenti dû software; è quinni prutetta p'evitari pussìbbili abbusi.",
-'editinginterface' => "'''Accura:''' Lu testu di sta pàggina fà parti dî interfaccia utenti dû situ. Tutti li canciamenti appurtati a sta pàggina si riflèttinu supra li missaggi visualizzati pi tutti l'utenti. Pi li traduzioni, cunsidira â pussibilità di usari [http://translatewiki.net/wiki/Main_Page?setlang=scn translatewiki.net], u prugettu di localizzazioni MediaWiki.",
+'editinginterface' => "'''Accura:''' Lu testu di sta pàggina fà parti dî interfaccia utenti dû situ. Tutti li canciamenti appurtati a sta pàggina si riflèttinu supra li missaggi visualizzati pi tutti l'utenti. Pi li traduzioni, cunsidira â pussibilità di usari [//translatewiki.net/wiki/Main_Page?setlang=scn translatewiki.net], u prugettu di localizzazioni MediaWiki.",
'sqlhidden' => '(la query SQL hà statu ammucciata)',
'cascadeprotected' => 'Supra sta pàggina nun è pussìbbili effittuari canciamenti pirchì veni nclusa nt{{PLURAL:$1|â pàggina siquenti, ca fu prutetta|ê pàggini siquenti, ca foru prutetti}} silizziunannu la prutizzioni "ricursiva":
$2',
'namespaceprotected' => "Nun hai lu pirmissu pi canciari li pàggini ntô namespace '''$1'''.",
-'customcssjsprotected' => "Nun hai lu pirmissu di canciari sta pàggina, picchì cunteni li mpustazzioni pirsunali di n'àutru utenti.",
'ns-specialprotected' => 'Li pàggini ntô namespace {{ns:special}} non ponnu èssiri canciati.',
'titleprotected' => "La criazzioni di sta pàggina cu stu tìtulu fu bluccata da [[User:$1|$1]].
La mutivazzioni è chista: ''$2''.",
@@ -557,7 +547,7 @@ L'account hà statu criatu currettamenti. Nun ti scurdari di pirsunalizzari li [
'nosuchuser' => 'Nun è riggistratu nuddu utenti di nomu "$1".
Li nnomi utenti sunu sinsitivi ê maiusculi.
Virificari lu nomu nziritu o [[Special:UserLogin/signup|criari un novu accessu]].',
-'nosuchusershort' => 'Nun c\'è nuddu utenti di nomu "<nowiki>$1</nowiki>". Cuntrolla l\'ortugrafìa.',
+'nosuchusershort' => 'Nun c\'è nuddu utenti di nomu "$1". Cuntrolla l\'ortugrafìa.',
'nouserspecified' => 'È nicissariu spicificari un nomu utenti.',
'login-userblocked' => "St'utilizzaturi è bluccatu. Nun è pussibbili di tràsiri",
'wrongpassword' => "La ''password'' chi mittisti nun è giusta. Prova n'àutra vota.",
@@ -596,7 +586,7 @@ Aspetta tanticchia prima di pruvari n'àutra vota.",
'loginlanguagelabel' => 'Lingua: $1',
'suspicious-userlogout' => 'La tò dumanna di discunnissioni fu niàta prichì pari ca veni di nu browser nun funziunanti o nu proxy di caching.',
-# Password reset dialog
+# Change password dialog
'resetpass' => "Scrivi n'àutra vota la password",
'resetpass_announce' => "Hai effittuatu l'accessu cu na password timpurània ca t'hà statu mannata via email. Pi tirminari l'accessu, hai a nziriri na password nova ccà:",
'resetpass_text' => '<!-- Agghiunci lu testu ccà -->',
@@ -625,8 +615,6 @@ Pò èssiri ca ggià canciasti cu successu la tò password o c'addumannasti na n
'extlink_tip' => 'Culligamentu sternu (nutari lu prifissu http:// )',
'headline_sample' => 'Ntistazzioni',
'headline_tip' => 'Suttantistazzioni',
-'math_sample' => 'Nzirisci ccà na fòrmula',
-'math_tip' => 'Fòrmula matimàtica (LaTeX)',
'nowiki_sample' => 'Nzirisci ccà lu testu nun furmattatu',
'nowiki_tip' => 'Gnora la furmattazzioni wiki',
'image_sample' => 'Asempiu.jpg',
@@ -709,7 +697,7 @@ P’idintificàrilu è pirciò nicissariu usari lu nùmmiru di lu sò nnirizzu I
Li nnirizzi IP ponnu pirò èssiri spartuti di cchiù utenti.
Siddu sî n’utenti anònimu e riteni ca li cummenti prisenti nta sta pàggina nun si rifirìscinu a tia, [[Special:UserLogin/signup|crea n’accessu novu]] o [[Special:UserLogin|trasi]] cu chiddu ca già hai p’evitari d’èssiri cunfusu cu àutri utenti anònimi ‘n futuru.''",
'noarticletext' => "Nta stu mumentu la pàggina addumannata è vacanti. È pussìbbili [[Special:Search/{{PAGENAME}}|circari stu tìtulu]] nta l'àutri pàggini dû situ oppuru [{{fullurl:{{FULLPAGENAME}}|action=edit}} canciari la pàggina ora].",
-'userpage-userdoesnotexist' => 'L\'account "$1" nun currispunni a n\'utenti riggistratu. Virificari si si voli criari o canciari sta pàggina.',
+'userpage-userdoesnotexist' => 'L\'account "<nowiki>$1</nowiki>" nun currispunni a n\'utenti riggistratu. Virificari si si voli criari o canciari sta pàggina.',
'clearyourcache' => "'''Nota:''' doppu aviri sarvatu è nicissariu puliri la cache dû propiu browser pi vìdiri li canciamenti. Pi '''Mozilla / Firefox / Safari''': fari clic supra ''Ricarica'' tinnennu primutu lu tastu dî maiùsculi, oppuru prèmiri ''Ctrl-Maiusc-R'' (''Cmd-Maiusc-R'' supra Mac); pi '''Internet Explorer:''' mantèniri primutu lu tastu ''Ctrl'' mentri si premi lu pulsanti ''Aggiorna'' o prèmiri ''Ctrl-F5''; pi '''Konqueror''': prèmiri lu pulsanti ''Ricarica'' o lu tastu ''F5''; pi '''Opera''' pò èssiri nicissariu svacantari cumpletamenti la cache dû menu ''Strumenti → Preferenze''.",
'usercssyoucanpreview' => "'''Suggirimentu:''' Usa lu tastu 'Visualizza antiprima' pi pruvari li novi css/js prima di sarvàrili.",
'userjsyoucanpreview' => "'''Suggirimentu:''' Usa lu tastu 'Visualizza antiprima' pi pruvari li novi css/js prima di sarvàrili.",
@@ -1043,9 +1031,10 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
'changepassword' => 'Cancia la password',
'prefs-skin' => 'Aspettu',
'skin-preview' => 'Antiprima',
-'prefs-math' => 'Fòrmuli',
'datedefault' => 'Nudda prifirenza',
+'prefs-beta' => 'Funzioni beta',
'prefs-datetime' => 'Data e ura',
+'prefs-labs' => 'Funziunalità dî labboratoria',
'prefs-personal' => 'Prufilu utenti',
'prefs-rc' => 'Ùrtimi canciamenti',
'prefs-watchlist' => 'Ossirvati spiciali',
@@ -1067,8 +1056,6 @@ S'havi accirtari ca la cuntinuità storica di la pàggina nun veni altirata.",
'columns' => 'Culonni:',
'searchresultshead' => 'Circata',
'resultsperpage' => 'Nùmmiru di risurtati pi pàggina:',
-'contextlines' => 'Righi di testu pi ognunu risurtatu:',
-'contextchars' => 'Nùmmaru di caràttiri di cuntestu:',
'stub-threshold' => 'Valuri minimu pî <a href="#" class="stub">liami a li stub</a>:',
'stub-threshold-disabled' => 'Disabbìlitatu',
'recentchangesdays' => "Nùmmuru di jorna a ammustrari nte l'urtimi cancaiamenti:",
@@ -1241,7 +1228,6 @@ L'operazioni nun pò èssiri annullata.",
'right-userrights' => "Cancia tutti li diritta di l'utilizzaturi",
'right-userrights-interwiki' => "Cancia li diritti di l'utilizzatura di àutri wiki",
'right-siteadmin' => 'Blocca a sblocca lu databasi',
-'right-reset-passwords' => 'Reimposta la password di autri utenti',
'right-override-export-depth' => 'Esporta pàggini cumpresi li pàggini culligati finu ô quintu liveddu',
# User rights log
@@ -1405,10 +1391,6 @@ Siddu si disponi dâ mmàggini ntâ risuluzzioni urigginali, si prega di carricÃ
'upload-maxfilesize' => 'Diminzioni màssima dû file: $1',
'watchthisupload' => 'Talìa stu file',
'filewasdeleted' => 'Nu file cu stu nomu hà statu già carricatu e cancillatu n passatu. Virificari $1 prima di carricàrilu di novu.',
-'upload-wasdeleted' => "'''Accura: stai carricannu nu file chi fu già cancillatu.'''
-
-Virifica pi favuri la nicissitati di continuari cu lu carricamentu di chistu file.
-Pi tua cumoditati cca c'è la riggistrazioni dâ cancillazioni:",
'filename-bad-prefix' => "Lu nomu dô file chi stai carricannu ncigna cu '''\"\$1\"''', chi è nu nomu non descrittivu assignatu, di solitu, automaticamenti dê màchini fotugràfici diggitali. Pi favuri scegghia nu nomu cchiù descrtittivu pi lu tò file.",
'filename-prefix-blacklist' => ' #<!-- dassa sta lìnia comu è già --> <pre>
# Chista di sèquitu è la sintassi:
@@ -1489,7 +1471,6 @@ Di sècutu sunnu alincati sulu {{PLURAL:$1|la prima pàggina ca punta|li primi $
È dispunìbbilu nu [[Special:WhatLinksHere/$2|alencu cumpretu]].',
'nolinkstoimage' => 'Nudda pàggina cunteni sta mmàggini.',
'morelinkstoimage' => 'Visualizza [[Special:WhatLinksHere/$1|àutri link]] a stu file.',
-'redirectstofile' => '{{PLURAL:$1|Chistu|Chisti $1}} file {{PLURAL:$1|è|sunnu}} nu redirect a stu file:',
'duplicatesoffile' => '{{PLURAL:$1|Chistu|Chisti $1}} file {{PLURAL:$1|è nu dupppiuni|sunnu duppiuni}} di stu file ([[Special:FileDuplicateSearch/$2|cchiù dittagli]]):',
'sharedupload' => 'Stu file veni di $1 e pò èssiri utilizzatu di àutri pruggetti wiki.',
'sharedupload-desc-there' => "Stu file pruvieni da $1 e pò èssiri usatu da l'autri prugetti.
@@ -1790,9 +1771,7 @@ Protucolli suppurtati: <tt>$1</tt>',
'watchlistanontext' => "Pi visualizzari e canciari l'alencu di l'ossirvati spiciali è nicissariu $1.",
'watchnologin' => 'Nun hai effittuatu lu login',
'watchnologintext' => 'Hai a fari prima lu [[Special:UserLogin|login]] pi canciari la tò lista di ossirvati spiciali.',
-'addedwatch' => "Pàggina agghiunciuta â lista di l'ossirvati spiciali",
'addedwatchtext' => "La pàggina \"[[:\$1]]\" è stata agghiunciuta â propia [[Special:Watchlist|lista di l'ossirvati spiciali]]. D'ora n poi, li mudìfichi appurtati â pàggina e â sò discussioni vèninu alincati n chidda sedi; lu tìtulu dâ pàggina appari n '''grassettu''' ntâ pàggina di l' [[Special:RecentChanges|ùrtimi canciamenti]] pi rinnìrilu cchiù visìbbili. Siddu n un secunnu tempu s'addisìa eliminari la pàggina dâ lista di l'ossirvati spiciali, fari clic supra \"nun sèquiri\" ntâ barra n àutu.",
-'removedwatch' => 'Livata dâ lista dî pàggini di cuntrullari',
'removedwatchtext' => 'La pàggina "[[:$1]]" hà statu eliminata dâ lista di l\'ossirvati spiciali.',
'watch' => 'talìa',
'watchthispage' => 'talìa sta pàggina',
@@ -1844,10 +1823,10 @@ Nun vèninu mannati àutri canciamenti \'n caso di ultiriuri canciamenti, a menu
--
Pi mudificari li mpustazzioni dâ lista di l\'ussirvati spiciali, vìsita
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Pi dari lu tò feedback e arricèviri ultiriuri assistenza:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Elìmina la pàggina',
@@ -1862,7 +1841,7 @@ Pi dari lu tò feedback e arricèviri ultiriuri assistenza:
'confirmdeletetext' => "Stai cancillannu dû databbasi na pàggina o na mmàggini cu tutta la sò storia di manera pirmanenti. Pi fauri, cunferma ca tu ntenni fari sta cosa, ca tu hai caputu li cunziquenzi, e chi lu fai secunnu li linìi guida stabbiliti 'n [[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Azzioni cumpritata',
'actionfailed' => 'Azioni fallita',
-'deletedtext' => '"<nowiki>$1</nowiki>" ha statu cancillatu.
+'deletedtext' => '"$1" ha statu cancillatu.
Talìa $2 pi na lista di cancillazzioni ricenti.',
'deletedarticle' => 'Hà cancillatu "[[$1]]"',
'suppressedarticle' => 'suppressu "[[$1]]"',
@@ -1913,7 +1892,7 @@ Pi favuri utilizza lu tastu "\'n arreri" dû tò browser, ricàrrica la pàggina
'protectexpiry' => 'Scadenza',
'protect_expiry_invalid' => 'Scadenza nun vàlida.',
'protect_expiry_old' => 'Scadenza già trascursa.',
-'protect-text' => "Ccà poi vìdiri e canciari lu liveddu di prutezzioni pi la pàggina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Ccà poi vìdiri e canciari lu liveddu di prutezzioni pi la pàggina '''$1'''.",
'protect-locked-blocked' => "Nun pò canciari li liveddi di prutizzioni quannu sî bloccatu. Li mpostazzioni correnti pâ pàggina sugnu '''$1''':",
'protect-locked-dblock' => "Mpussibbili canciari li liveddi di prutizzioni pi nu bloccu dô database.
Li mpostazzioni correnti pâ pàggina sugnu '''$1''':",
@@ -2051,7 +2030,6 @@ $1',
'blockip' => "Blocca l'utenti",
'blockip-legend' => "Blocca l'utenti",
'blockiptext' => "Usa lu mòdulu cassutta pi bluccari la pussibbilità di scrìviri pi n'utenti o pi nu ndirizzu IP spicìficu. Chistu s'havi a fari sulu pi privèniri lu vannalismu e secunnu la [[{{MediaWiki:Policy-url}}|pulìtica di {{SITENAME}}]]. Scrivi na raggiùni valida ccà sutta (pi asempiu, cita li pàggini chi foru vannalizzati).",
-'ipaddress' => 'Ndirizzu IP:',
'ipadressorusername' => 'Ndirizzu IP o nomu utenti:',
'ipbexpiry' => 'Durata dû bloccu:',
'ipbreason' => 'Mutivu:',
@@ -2064,7 +2042,6 @@ $1',
** Cumportamenti ntimidatori o molestie
** Usu ndebitu di cchiù cunti
** Nomu utenti nun accittabbili',
-'ipbanononly' => "Blocca sulu l'utenti anònimi (l'utenti riggistrati ca cundivìdinu lu stissu IP nun vèninu bluccati)",
'ipbcreateaccount' => 'Mpidisci la criazzioni di àutri account',
'ipbemailban' => "Mpedisci a l'utenti l'inviu di email",
'ipbenableautoblock' => "Blocca automaticamenti l'ùrtimu ndirizzu IP usatu di l'utenti e li succissivi cu cui vèninu tintati canciamenti",
@@ -2075,7 +2052,6 @@ $1',
'ipbotherreason' => 'Àutri mutivi/dittagghi:',
'ipbhidename' => 'Ammuccia lu nomu utenti dê canciamenti e dê listi',
'ipbwatchuser' => "Talìa li pàggini e li discussioni utenti di st'utenti",
-'ipballowusertalk' => "Pirmetti a l'utenti di putìrisi canciari la sò pàggina di discussioni ntô mentri ca è bluccatu",
'ipb-change-block' => "Ri-blocca l'utilizzaturi cu sti mpustazzioni",
'badipaddress' => 'Ndirizzu IP nun vàlidu.',
'blockipsuccesssub' => 'Bloccu esiquitu',
@@ -2093,12 +2069,7 @@ Pi maggiuri nfurmazzioni, talìa la [[Special:IPBlockList|lista di l'IP bluccati
'unblocked-id' => 'Lu bloccu $1 hà statu cacciatu',
'ipblocklist' => 'Utenti e nnirizzi IP bluccati',
'ipblocklist-legend' => "Atrova n'utenti bluccatu",
-'ipblocklist-username' => 'Nomu utenti o nnirizzu IP:',
-'ipblocklist-sh-userblocks' => "$1 li blocchi di l'utenti riggistrati",
-'ipblocklist-sh-tempblocks' => '$1 li blocchi timpurànii',
-'ipblocklist-sh-addressblocks' => '$1 li blocchi di li sìnguli IP',
'ipblocklist-submit' => 'Ricerca',
-'blocklistline' => '$1, $2 hà bluccatu $3 ($4)',
'infiniteblock' => 'nfinitu',
'expiringblock' => 'scadi lu $1 ê $2',
'anononlyblock' => 'sulu anònimi',
@@ -2116,7 +2087,7 @@ Pi maggiuri nfurmazzioni, talìa la [[Special:IPBlockList|lista di l'IP bluccati
'blocklogpage' => 'Blocchi',
'blocklogentry' => 'hà bluccatu [[$1]]; scadenza $2 $3',
'reblock-logentry' => 'Canciau li mpustazzioni dû bloccu pi [[$1]] cu na scadenza di $2 $3',
-'blocklogtext' => "Chistu è l'alencu di l'azzioni di bloccu e sbloccu utenti. Li ndirizzi IP bluccati automaticamenti nun sunu alincati. Cunzurtari l'[[Special:IPBlockList|alencu IP bluccati]] pi l'alencu dî ndirizzi e noma utenti lu cui bloccu è opirativu.",
+'blocklogtext' => "Chistu è l'alencu di l'azzioni di bloccu e sbloccu utenti. Li ndirizzi IP bluccati automaticamenti nun sunu alincati. Cunzurtari l'[[Special:BlockList|alencu IP bluccati]] pi l'alencu dî ndirizzi e noma utenti lu cui bloccu è opirativu.",
'unblocklogentry' => 'hà sbluccatu "$1"',
'block-log-flags-anononly' => 'sulu utenti anònimi',
'block-log-flags-nocreate' => 'criazzioni account bluccata',
@@ -2130,8 +2101,7 @@ Pi maggiuri nfurmazzioni, talìa la [[Special:IPBlockList|lista di l'IP bluccati
'ipb_expiry_temp' => 'Li blocchi dê nomi utenti ammucciati avìssiru èssiri nfiniti',
'ipb_hide_invalid' => "Impussibili cancillari l'account; putissi aviri troppi canciamenti.",
'ipb_already_blocked' => 'L\'utenti "$1" è già bluccatu',
-'ipb-needreblock' => '== Già bluccatu ==
-$1 è già bluccatu. Vòi caciari li mpustazzioni?',
+'ipb-needreblock' => '$1 è già bluccatu. Vòi caciari li mpustazzioni?',
'ipb_cant_unblock' => 'Erruri: Mpussìbbili attruvari lu bloccu cu ID $1. Putissi aviri già statu sbluccatu.',
'ipb_blocked_as_range' => 'Sbagghiu: Lu ndirizzu IP $1 nun è suggettu a bloccu ndividuali e non pò èssiri sbloccatu. Lu bloccu è attivu mmeci a liveddu dû ntirvallu $2, ca pò èssiri sbluccatu.',
'ip_range_invalid' => 'Ntervallu di ndirizzi IP nun vàlidu.',
@@ -2258,7 +2228,7 @@ Nta st'ùrtimu casu si pò macari utilizzari un culligamentu, p'asempiu [[{{#Spe
'allmessagesdefault' => 'Testu pridifinitu',
'allmessagescurrent' => 'Testu attuali',
'allmessagestext' => "Chista è na lista di missaggi di sistema chi s'attròvanu sutta MediaWiki:''nomu''.
-Visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] si voi cuntribbuiri â localizzazioni generica di MediaWiki.",
+Visita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] si voi cuntribbuiri â localizzazioni generica di MediaWiki.",
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' nun è suppurtatu pirchì lu flag '''\$wgUseDatabaseMessages''' nun è attivu.",
'allmessages-filter-legend' => 'Filtru',
'allmessages-filter' => 'Filtru pi statu di canciamentu:',
@@ -2398,9 +2368,7 @@ Visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [ht
'monobook.js' => "/* Lu còdici JavaScript nzirutu ccà veni carricatu di l'utenti c'ùsanu la skin MonoBook */",
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata disabbilitatu pi stu server.',
-'nocreativecommons' => 'Creative Commons RDF metadata disabbilitatu pi stu server.',
-'notacceptable' => 'Lu server wiki nun pò furniri dati nta un furmatu liggìbbili dû tò client.',
+'notacceptable' => 'Lu server wiki nun pò furniri dati nta un furmatu liggìbbili dû tò client.',
# Attribution
'anonymous' => '{{PLURAL:$1|Utenti anònimu|Utenti anònimi}} di {{SITENAME}}',
@@ -2420,14 +2388,6 @@ Visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [ht
'spam_reverting' => "Ripristinata l'ùrtima virsioni priva di culligamenti a $1",
'spam_blanking' => 'Pàggina svacantata, tutti li virsioni cuntinìanu culligamenti a $1',
-# Info page
-'infosubtitle' => 'Nfurmazzioni pi la pàggina',
-'numedits' => 'Nùmmuru di canciamenti (artìculu): $1',
-'numtalkedits' => 'Nùmmuru di canciamenti (pàggina di discussioni): $1',
-'numwatchers' => "Nùmmuru d'ossirvatura: $1",
-'numauthors' => "Nùmmuru d'autura distinti (artìculu): $1",
-'numtalkauthors' => "Nùmmuru d'autura distinti (pàggina di discussioni): $1",
-
# Skin names
'skinname-standard' => 'Classicu',
'skinname-nostalgia' => 'Nustargìa',
@@ -2438,25 +2398,6 @@ Visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [ht
'skinname-simple' => 'Sìmprici',
'skinname-modern' => 'Mudernu',
-# Math options
-'mw_math_png' => "Ammustra sempri 'n PNG",
-'mw_math_simple' => 'HTML siddu veru sìmplici, oppuru PNG',
-'mw_math_html' => 'HTML siddu pussìbbili, oppuru PNG',
-'mw_math_source' => 'Lassa comu TeX (pi browser tistuali)',
-'mw_math_modern' => 'Raccumannatu pi li browser muderni',
-'mw_math_mathml' => 'MathML siddu pussìbbili (spirimintali)',
-
-# Math errors
-'math_failure' => "S'hà virificatu un erruri ntô parsing",
-'math_unknown_error' => 'erruri scanusciutu',
-'math_unknown_function' => 'funzioni scanusciuta',
-'math_lexing_error' => 'erruri lissicali',
-'math_syntax_error' => 'erruri di sintassi',
-'math_image_error' => "Cunvirsioni 'n PNG fallita; virificati la curretta nstallazzioni dî siquenti prugrammi: latex, dvips, gs e convert.",
-'math_bad_tmpdir' => 'Mpussìbbili scrìviri o criari la directory timpurània pi math',
-'math_bad_output' => 'Mpussìbbili scrìviri o criari la directory di output pi math',
-'math_notexvc' => 'Esiquìbbili texvc mancanti; pi favuri cunzurtari math/README pi la cunfigurazzioni.',
-
# Patrolling
'markaspatrolleddiff' => 'Segna lu canciamentu comu virificatu',
'markaspatrolledtext' => 'Segna sta pàggina comu virificata',
@@ -2501,7 +2442,6 @@ $1',
'file-nohires' => '<small>Nun sunnu dispunìbbili virsioni a risuluzzioni cchiù elivata.</small>',
'svg-long-desc' => 'file SVG, dimensioni nominali $1 × $2 pixel, dimensioni dô file: $3',
'show-big-image' => 'Virsioni a àuta risuluzzioni',
-'show-big-image-thumb' => "<small>Diminzioni di st'antiprima: $1 × $2 pixel</small>",
'file-info-gif-looped' => 'luppatu',
'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frame}}',
@@ -2535,7 +2475,13 @@ Li lijami succissivi, supra la stissa riga, sunnu cunzidirati comu eccizzioni (p
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Larghizza',
@@ -2550,13 +2496,11 @@ Li lijami succissivi, supra la stissa riga, sunnu cunzidirati comu eccizzioni (p
'exif-ycbcrpositioning' => 'Pusizziunamentu cumpunenti Y e C',
'exif-xresolution' => 'Risuluzzioni urizzuntali',
'exif-yresolution' => 'Risuluzzioni virticali',
-'exif-resolutionunit' => 'Unitati di misura risuluzzioni X e Y',
'exif-stripoffsets' => 'Pusizzioni dî dati mmàggini',
'exif-rowsperstrip' => 'Nùmmiru righi pi striscia',
'exif-stripbytecounts' => 'Nùmmiru di byte pi striscia cumpressa',
'exif-jpeginterchangeformat' => 'Pusizzioni byte SOI JPEG',
'exif-jpeginterchangeformatlength' => 'Nùmmuru di byte di dati JPEG',
-'exif-transferfunction' => 'Funzioni di trasfirimentu',
'exif-whitepoint' => 'Cuurdinati crumàtichi dû puntu di jancu',
'exif-primarychromaticities' => 'Cuurdinati crumàtichi dî culuri primari',
'exif-ycbcrcoefficients' => 'Cuefficienti matrici di trasfurmazzioni spazzi dî culuri',
@@ -2575,7 +2519,6 @@ Li lijami succissivi, supra la stissa riga, sunnu cunzidirati comu eccizzioni (p
'exif-compressedbitsperpixel' => 'Mudalitati di cumprissioni dâ mmàggini',
'exif-pixelydimension' => 'Larghizza effittiva mmàggini',
'exif-pixelxdimension' => 'Autizza effittiva mmàggini',
-'exif-makernote' => 'Noti dû prudutturi',
'exif-usercomment' => "Noti di l'utenti",
'exif-relatedsoundfile' => 'File audiu culligatu',
'exif-datetimeoriginal' => 'Data e ura di criazzioni dî dati',
@@ -2589,7 +2532,6 @@ Li lijami succissivi, supra la stissa riga, sunnu cunzidirati comu eccizzioni (p
'exif-exposureprogram' => "Prugramma d'espusizzioni",
'exif-spectralsensitivity' => 'Sinzibbilitati spittrali',
'exif-isospeedratings' => 'Sinzibbilitati ISO',
-'exif-oecf' => 'Fatturi di cunvirsioni optoalittrònica',
'exif-shutterspeedvalue' => "Tempu d'espusizzioni",
'exif-aperturevalue' => 'Apirtura',
'exif-brightnessvalue' => 'Luminusitati',
@@ -2602,7 +2544,6 @@ Li lijami succissivi, supra la stissa riga, sunnu cunzidirati comu eccizzioni (p
'exif-focallength' => 'Distanza fucali obbittivu',
'exif-subjectarea' => 'Ària nquatranti lu suggettu',
'exif-flashenergy' => 'Putenza dû flash',
-'exif-spatialfrequencyresponse' => 'Risposta n friquenza spazziali',
'exif-focalplanexresolution' => 'Risuluzzioni X supra lu chianu fucali',
'exif-focalplaneyresolution' => 'Risuluzzioni Y supra lu chianu fucali',
'exif-focalplaneresolutionunit' => 'Unitati di misura risuluzzioni supra lu chianu fucali',
@@ -2611,7 +2552,6 @@ Li lijami succissivi, supra la stissa riga, sunnu cunzidirati comu eccizzioni (p
'exif-sensingmethod' => 'Mètudu di rilivazzioni',
'exif-filesource' => 'Orìggini dû file',
'exif-scenetype' => 'Tipu di nquatratura',
-'exif-cfapattern' => 'Dispusizzioni filtru culuri',
'exif-customrendered' => 'Elabburazzioni pirsunalizzata',
'exif-exposuremode' => "Mudalitati d'espusizzioni",
'exif-whitebalance' => 'Valanzamentu dû jancu',
@@ -2677,7 +2617,7 @@ Li lijami succissivi, supra la stissa riga, sunnu cunzidirati comu eccizzioni (p
'exif-xyresolution-i' => '$1 punti pi puseri (dpi)',
'exif-xyresolution-c' => '$1 punti pi cintìmitru (dpc)',
-'exif-colorspace-ffff.h' => 'Nun calibbratu',
+'exif-colorspace-65535' => 'Nun calibbratu',
'exif-componentsconfiguration-0' => 'assenti',
@@ -2811,14 +2751,12 @@ Li lijami succissivi, supra la stissa riga, sunnu cunzidirati comu eccizzioni (p
# External editor support
'edit-externally' => 'Cancia stu file usannu un prugramma sternu',
-'edit-externally-help' => "Pi chiossai nfurmazzioni cunzurtari l'[http://www.mediawiki.org/wiki/Manual:External_editors istruzzioni] ('n ngrisi)",
+'edit-externally-help' => "Pi chiossai nfurmazzioni cunzurtari l'[//www.mediawiki.org/wiki/Manual:External_editors istruzzioni] ('n ngrisi)",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tutti',
-'imagelistall' => 'tutti',
-'watchlistall2' => 'tutti',
-'namespacesall' => 'Tutti',
-'monthsall' => 'tutti',
+'watchlistall2' => 'tutti',
+'namespacesall' => 'Tutti',
+'monthsall' => 'tutti',
# E-mail address confirmation
'confirmemail' => 'Cunferma ndirizzu e-mail',
@@ -2913,12 +2851,12 @@ $1',
'watchlistedit-noitems' => 'La lista dê pàggini taliati è vacanti.',
'watchlistedit-normal-title' => 'Cancia pàggini taliati',
'watchlistedit-normal-legend' => 'Eliminazzioni di pàggini dâ lista dê pàggini taliati',
-'watchlistedit-normal-explain' => "Ccà sutta sugnu alincati tutti li pàggine taliati. Pi eliminari una o cchiù pàggini dâ lista, silizziunari li casiddi accantu e fari clic supra lu buttuni 'Elìmina pàggini' 'n fundu all'alencu. Accura ca è puru possibbili [[Special:Watchlist/raw|canciari la lista 'n forma testuali]].",
+'watchlistedit-normal-explain' => "Ccà sutta sugnu alincati tutti li pàggine taliati. Pi eliminari una o cchiù pàggini dâ lista, silizziunari li casiddi accantu e fari clic supra lu buttuni 'Elìmina pàggini' 'n fundu all'alencu. Accura ca è puru possibbili [[Special:EditWatchlist/raw|canciari la lista 'n forma testuali]].",
'watchlistedit-normal-submit' => 'Elìmina pàggini',
'watchlistedit-normal-done' => 'Dâ lista dê pàggini taliati hà{{PLURAL:$1|&nbsp;stata eliminata na pàggina|nnu stati eliminati $1 pàggini}}:',
'watchlistedit-raw-title' => "Cancia li pàggini taliati 'n forma testuali",
'watchlistedit-raw-legend' => 'Canciamentu testuali pàggini taliati',
-'watchlistedit-raw-explain' => "Ccà sutta sugnu alincati tutti li pàggine taliati. Pi canciari la lista agghiunciri o rimòviri li rispettivi tituli, unu pi riga. Quannu funisci, fà clic supra 'Aggiorna la lista' 'n fundu all'alencu. Accura ca è puru possibbili [[Special:Watchlist/edit|canciari la lista câ 'nterfaccia standard]].",
+'watchlistedit-raw-explain' => "Ccà sutta sugnu alincati tutti li pàggine taliati. Pi canciari la lista agghiunciri o rimòviri li rispettivi tituli, unu pi riga. Quannu funisci, fà clic supra 'Aggiorna la lista' 'n fundu all'alencu. Accura ca è puru possibbili [[Special:EditWatchlist|canciari la lista câ 'nterfaccia standard]].",
'watchlistedit-raw-titles' => 'Pàggini:',
'watchlistedit-raw-submit' => 'Aggiorna la lista',
'watchlistedit-raw-done' => 'La tò lista dê pàggini taliati vinni aggiurnata.',
@@ -2940,25 +2878,24 @@ $1',
'duplicate-defaultsort' => 'Accura: la chiavi priddifinuta d\'urdinamentu "$2" si sciarrìa cu chidda d\'antura "$1".',
# Special:Version
-'version' => 'virsioni',
-'version-extensions' => 'Estenzioni nstallati',
-'version-specialpages' => 'Pàggini spiciali',
-'version-parserhooks' => 'Hook dû parser',
-'version-variables' => 'Variabili',
-'version-other' => 'Àutru',
-'version-mediahandlers' => 'Gistori di cuntinuti multimediali',
-'version-hooks' => 'Hook',
-'version-extension-functions' => 'Funzioni ntrudotti di estenzioni',
-'version-parser-extensiontags' => 'Tag canusciuti dô parser ntrudotti di estenzioni',
-'version-parser-function-hooks' => 'Hook pi funzioni dû parser',
-'version-skin-extension-functions' => 'Funzioni lijati a la furma gràfica (skin) ntrudotti di estenzioni',
-'version-hook-name' => "Nomu di l'hook",
-'version-hook-subscribedby' => 'Suttascrizzioni',
-'version-version' => '(Virsioni $1)',
-'version-license' => 'Licenza',
-'version-software' => 'Software nstallatu',
-'version-software-product' => 'Prodottu',
-'version-software-version' => 'Virsioni',
+'version' => 'virsioni',
+'version-extensions' => 'Estenzioni nstallati',
+'version-specialpages' => 'Pàggini spiciali',
+'version-parserhooks' => 'Hook dû parser',
+'version-variables' => 'Variabili',
+'version-other' => 'Àutru',
+'version-mediahandlers' => 'Gistori di cuntinuti multimediali',
+'version-hooks' => 'Hook',
+'version-extension-functions' => 'Funzioni ntrudotti di estenzioni',
+'version-parser-extensiontags' => 'Tag canusciuti dô parser ntrudotti di estenzioni',
+'version-parser-function-hooks' => 'Hook pi funzioni dû parser',
+'version-hook-name' => "Nomu di l'hook",
+'version-hook-subscribedby' => 'Suttascrizzioni',
+'version-version' => '(Virsioni $1)',
+'version-license' => 'Licenza',
+'version-software' => 'Software nstallatu',
+'version-software-product' => 'Prodottu',
+'version-software-version' => 'Virsioni',
# Special:FilePath
'filepath' => 'Pircorsu di nu file',
@@ -2970,9 +2907,7 @@ Mèttiri lu nomu dû file senza lu prifissu "{{ns:file}}:"',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Circata dê file duppiuni',
-'fileduplicatesearch-summary' => "Circata di pussìbbili dupppiuni dû file 'n basi ô valuri di ''hash''.
-
-Nziriri lu nomu di lu file senza lu prifissu \"{{ns:file}}:\"",
+'fileduplicatesearch-summary' => "Circata di pussìbbili dupppiuni dû file 'n basi ô valuri di ''hash''.",
'fileduplicatesearch-legend' => 'Circata di nu duppiuni',
'fileduplicatesearch-filename' => 'Nomu dû file:',
'fileduplicatesearch-submit' => 'Circata',
diff --git a/languages/messages/MessagesSco.php b/languages/messages/MessagesSco.php
index bc40a47e..7e283675 100644
--- a/languages/messages/MessagesSco.php
+++ b/languages/messages/MessagesSco.php
@@ -144,15 +144,6 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'noindex-category' => 'Noindexed pages',
-'mainpagetext' => "'''MediaWiki haes been installit wi speed.'''",
-'mainpagedocfooter' => "Aks the [http://meta.wikimedia.org/wiki/Help:Contents Uiser's Manual] for speirins aboot using the wiki saftware.
-
-== Gettin startit ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settins leet]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki releese mailin leet]",
-
'about' => 'Aboot',
'article' => 'Content page',
'newwindow' => '(opens in new windae)',
@@ -200,7 +191,6 @@ $messages = array(
'history' => 'Page history',
'history_short' => 'History',
'updatedmarker' => 'chynged sin ma hindermast visit',
-'info_short' => 'Wittins',
'printableversion' => 'Prent version',
'permalink' => 'Permanent airtin',
'print' => 'Prent',
@@ -373,7 +363,6 @@ Aks: $2',
'cascadeprotected' => 'This page haes been protectit fra editin, acause it is includit in the followin {{PLURAL:$1|page|pages}}, that are protectit wi the "cascading" option turnit on:
$2',
'namespaceprotected' => "Ye dinna hae permeession tae edit pages in the '''$1''' namespace.",
-'customcssjsprotected' => "Ye dinna hae permeession tae edit this page, sin it hauds anither uiser's personal settins.",
'ns-specialprotected' => 'Byordinar pages canna be editit.',
'titleprotected' => "This teetle haes been protectit frae bein makkit by [[User:$1|$1]].
The grunds for this are: ''$2''.",
@@ -405,6 +394,7 @@ Mynd an chynge yer [[Special:Preferences|{{SITENAME}} preferences]].',
'createaccount' => 'Mak new accoont',
'gotaccount' => "Got an accoont afore? '''$1'''.",
'gotaccountlink' => 'Log in',
+'userlogin-resetlink' => 'Forgotten yer login details?',
'createaccountmail' => 'bi email',
'badretype' => 'The passwords ye entered disna match.',
'userexists' => 'The uiser name ye entered is in uiss. Please chuise a different name.',
@@ -417,7 +407,7 @@ Mynd an chynge yer [[Special:Preferences|{{SITENAME}} preferences]].',
'nosuchuser' => 'The\'r nae sic uiser as "$1".
Uiser names are case-sensitive.
Check yer spellin, or uise [[Special:UserLogin/signup|mak a new accoont]].',
-'nosuchusershort' => 'The\'r nae sic uiser as "<nowiki>$1</nowiki>". Check yer spellin.',
+'nosuchusershort' => 'The\'r nae sic uiser as "$1". Check yer spellin.',
'nouserspecified' => 'Ye hae tae merk up a uisername.',
'wrongpassword' => 'The password ye entered is wrang. Please gie it anither shot.',
'wrongpasswordempty' => 'The password ye entered is blank. Please gie it anither shot.',
@@ -461,7 +451,7 @@ Ye shuid log in an chynge yer password nou.
Ye dinna hae tae heed this message, if this accoont wis creatit by mistak.',
'loginlanguagelabel' => 'Leid: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Chynge passwaird',
'resetpass_announce' => 'Ye loggit in wi a short term e-mailed code. To be duin logging in, ye hae tae mak a new passwaird here:',
'resetpass_header' => 'Chynge accoont password',
@@ -485,8 +475,6 @@ Ye dinna hae tae heed this message, if this accoont wis creatit by mistak.',
'extlink_tip' => 'Airtin tae an outby steid (mynd the http:// prefix)',
'headline_sample' => 'Heidline text',
'headline_tip' => 'Level 2 heidline',
-'math_sample' => 'Pit yer formula here',
-'math_tip' => 'Mathematical formula (LaTeX)',
'nowiki_sample' => 'Insert non-formattit text here',
'nowiki_tip' => 'Ignore wiki formattin',
'image_sample' => 'Exemplar.jpg',
@@ -562,7 +550,7 @@ Ye can [[Special:Search/{{PAGENAME}}|rake for this page teitle]] in ither pages,
'noarticletext-nopermission' => 'The\'r nae text on this page the nou.
Ye ken [[Special:Search/{{PAGENAME}}|rake for this page teitle]] in ither pages,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} rake th\' related logs].',
-'userpage-userdoesnotexist' => 'Uiser accoont "$1" hasnae been registerit. Please check gin ye wint tae mak or edit this page.',
+'userpage-userdoesnotexist' => 'Uiser accoont "<nowiki>$1</nowiki>" hasnae been registerit. Please check gin ye wint tae mak or edit this page.',
'clearyourcache' => "'''Tak tent:''' Efter hainin, ye micht hae tae bypass yer brouser's cache for tae see the chynges. '''Mozilla / Firefox / Safari:''' haud doun ''Shift'' while dabbin on ''Reload'', or press ''Ctrl-Shift-R'' (''Cmd-Shift-R'' on Apple Mac); '''IE:''' haud doun ''Ctrl'' while dabbin on ''Refresh'', or press ''Ctrl-F5''; '''Konqueror:''' juist dab on the ''Reload'' button, or press ''F5''; '''Opera''' users micht hae tae haillie dicht thair cache in ''Tools&rarr;Preferences''.",
'usercssyoucanpreview' => "'''Tip:''' Uise the 'Show preview' button tae proof yer new CSS afore savin.",
'userjsyoucanpreview' => "'''Tip:''' Uise the 'Show preview' button tae proof yer new JS afore savin.",
@@ -777,7 +765,6 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
'changepassword' => 'Chynge password',
'prefs-skin' => 'Huil',
'skin-preview' => 'First Leuk',
-'prefs-math' => 'Renderin math',
'datedefault' => 'Nae preference',
'prefs-datetime' => 'Date an time',
'prefs-personal' => 'Uiser data',
@@ -789,8 +776,6 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
'prefs-editing' => 'Editin',
'searchresultshead' => 'Rake result settins',
'resultsperpage' => 'Hits tae shaw per page',
-'contextlines' => 'Lines tae shaw per hit',
-'contextchars' => 'Characters o context per line',
'stub-threshold-disabled' => 'Tuckie',
'recentchangescount' => 'Nummer o teitles in recent chynges',
'savedprefs' => 'Yer preferences haes been hained.',
@@ -815,7 +800,9 @@ there micht be parteeculars in the [{{fullurl:{{#Special:Log}}/suppress|page={{F
'badsiglength' => 'Yer nickname is ower lang; it haes tae be $1 {{PLURAL:$1|character|characters}} or less.',
'email' => 'E-mail',
'prefs-help-realname' => 'Rael name is optional an gin ye chuise tae provide it this will be uised tae gie ye attreibution for yer wark.',
-'prefs-help-email' => 'Email is optional, an lats ithers contact ye throu yer uiser or uiser_collogue page athoot you haein tae reveal yer identity.',
+'prefs-help-email' => 'E-mail is optional, bit is needed fur password resets, shuid ye forget yer password.',
+'prefs-help-email-others' => "Ye kin an choose tae let others contact ye by e-mail thro' a link oan yer uiser or collogue page.
+Yer e-mail address insae revealed whin ither uisers contact ye.",
'prefs-help-email-required' => 'Yer e-mail address is needit.',
'prefs-diffs' => 'Diffs',
@@ -1105,9 +1092,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'nowatchlist' => 'Ye hivna onie eitems on yer watchleet.',
'watchnologin' => 'Nae loggit in',
'watchnologintext' => 'Ye maun be [[Special:UserLogin|loggit in]] tae modify yer watchleet.',
-'addedwatch' => 'Eikit ti watchleet',
'addedwatchtext' => "The page \"<nowiki>\$1</nowiki>\" haes been eikit ti yer [[Special:Watchlist|watchleet]]. Futur chynges ti this page an its associate Collogue page will be leetit thare, an the page will kythe '''bauldit''' in the [[Special:RecentChanges|leet o recent chynges]] ti mak it mair eith tae pick oot. <p>Gin ye want ti remuve the page frae yer watchleet later, dab \"Stop watching\" in the sidebar.",
-'removedwatch' => 'Remuved frae watchleet',
'removedwatchtext' => 'The page "[[:$1]]" haes been remuved frae yer watchleet.',
'watch' => 'Watch',
'watchthispage' => 'Leuk ower this page',
@@ -1145,7 +1130,7 @@ Please confirm that ye intend tae dae this, that ye unnerstaun the consequences,
an that ye'r daein this in accord wi [[{{MediaWiki:Policy-url}}]].",
'actioncomplete' => 'Action duin',
'actionfailed' => 'Action failed',
-'deletedtext' => '"<nowiki>$1</nowiki>" haes been delete. See $2 for a record o recent deletions.',
+'deletedtext' => '"$1" haes been delete. See $2 for a record o recent deletions.',
'deletedarticle' => 'deletit "[[$1]]"',
'dellogpage' => 'Deletion log',
'dellogpagetext' => 'Ablo is a leet o the maist recent deletions.',
@@ -1173,7 +1158,7 @@ an that ye'r daein this in accord wi [[{{MediaWiki:Policy-url}}]].",
'prot_1movedto2' => '[[$1]] flittit til [[$2]]',
'protectcomment' => 'Raeson:',
'protectexpiry' => 'Expires:',
-'protect-text' => "Ye can see an chynge the protection level here for the page '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Ye can see an chynge the protection level here for the page '''$1'''.",
'protect-default' => 'Allow aw uisers',
'protect-level-autoconfirmed' => 'Baur new and unregistered uisers',
'protect-level-sysop' => 'Juist administrators',
@@ -1250,7 +1235,6 @@ afore it wis delete. The actual text o thir deletit reveisions is available tae
# Block/unblock
'blockip' => 'Block uiser',
'blockiptext' => 'Uise the form ablo tae block write access frae a specific IP address or uisername. This shuid be duin juist tae prevent vandalism, and in accord wi [[{{MediaWiki:Policy-url}}|policy]]. Fill in a specific raeson ablo (for exemplar, citin parteicular pages that wis damaged).',
-'ipaddress' => 'IP Address',
'ipadressorusername' => 'IP Address or uisername',
'ipbreason' => 'Raeson:',
'ipbsubmit' => 'Block this uiser',
@@ -1266,7 +1250,6 @@ afore it wis delete. The actual text o thir deletit reveisions is available tae
'unblockiptext' => 'Uise the form ablo tae restore screivin richts
tae an afore-blockit IP address or uisername.',
'ipblocklist' => 'Blockit uisers',
-'blocklistline' => '$1, $2 blockit $3 (expires $4)',
'anononlyblock' => 'anon. juist',
'createaccountblock' => 'accoont-makkin blockit',
'blocklink' => 'block',
@@ -1276,7 +1259,7 @@ tae an afore-blockit IP address or uisername.',
'autoblocker' => 'Autaematically blockit syne yer IP address haes been uised recently bi "[[User:$1|$1]]". The raeson gien for $1\'s block is "\'\'$2\'\'"',
'blocklogpage' => 'Block log',
'blocklogentry' => 'blockit [[$1]] wi an expiry time o $2 $3',
-'blocklogtext' => 'This is a log o uiser blockin an unblockin actions. Autaematically blockit IP addresses isna leetit. See the [[Special:IPBlockList|IP block leet]] for the leet o bans and blocks on the gae the nou.',
+'blocklogtext' => 'This is a log o uiser blockin an unblockin actions. Autaematically blockit IP addresses isna leetit. See the [[Special:BlockList|IP block leet]] for the leet o bans and blocks on the gae the nou.',
'unblocklogentry' => 'unblockit $1',
'block-log-flags-nocreate' => 'accoont-makkin blockit',
'range_block_disabled' => 'The administrator abeility tae mak range blocks is disabled.',
@@ -1437,22 +1420,6 @@ You ken view its source',
'spamprotectiontext' => 'The page ye wanted tae save wis blockit bi the spam filter. This is maist likely caused bi an airtin til an outby site.',
'spamprotectionmatch' => 'The follaein text is whit triggered wir spam filter: $1',
-# Info page
-'infosubtitle' => 'Wittins for page',
-'numedits' => 'Nummer o edits (airticle): $1',
-'numtalkedits' => 'Nummer o edits (collogue page): $1',
-'numwatchers' => 'Nummer o watchers: $1',
-'numauthors' => 'Nummer o distinct authors (airticle): $1',
-'numtalkauthors' => 'Nummer o distinct authors (collogue page): $1',
-
-# Math options
-'mw_math_png' => 'Aye render PNG',
-'mw_math_simple' => "HTML gin it's gey simple else PNG",
-'mw_math_html' => 'HTML gin the possibility else PNG',
-'mw_math_source' => 'Leave it as TeX (for text brousers)',
-'mw_math_modern' => 'Recommendit for modren brousers',
-'mw_math_mathml' => 'MathML gin the possibility (experimental)',
-
# Patrolling
'markaspatrolleddiff' => 'Merk as patrolled',
'markaspatrolledtext' => 'Merk this airticle as patrolled',
@@ -1492,9 +1459,23 @@ You ken view its source',
Ainlie list items (lines starting wi' *) are considered. Th' foremaist link oan a line mist be a link tae a ill image. Ony subsequent links oan th' same line are considered tae be exceptions, i,e., pages whaur th' image kin occur inline.",
# Metadata
-'metadata' => 'Metadata',
-'metadata-help' => "This file contains additional speirins, likelie added frae th' digital camera or scanner used tae create or digitize it.
+'metadata' => 'Metadata',
+'metadata-help' => "This file contains additional speirins, likelie added frae th' digital camera or scanner used tae create or digitize it.
If th' file haes bin modified frae tis original state, some details kin nae fully reflect th' modified file.",
+'metadata-fields' => "Image metadata fields listed in this message wull be included oan image page display whin th' metadata buird is collapsed. Others wull be hidden by default.
+*mak
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyricht
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-copyright' => 'Copyricht hauder',
@@ -1511,15 +1492,13 @@ If th' file haes bin modified frae tis original state, some details kin nae full
# External editor support
'edit-externally' => 'Edit this file uisin an external application',
-'edit-externally-help' => '(See the [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] for mair guidance.)',
+'edit-externally-help' => '(See the [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] for mair guidance.)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'aa',
-'imagelistall' => 'aa',
-'watchlistall2' => 'aw',
-'namespacesall' => 'aa',
-'monthsall' => 'aw',
-'limitall' => 'aw',
+'watchlistall2' => 'aw',
+'namespacesall' => 'aa',
+'monthsall' => 'aw',
+'limitall' => 'aw',
# E-mail address confirmation
'confirmemail_noemail' => 'Ye dinna hae a valid email address set in yer [[Special:Preferences|uiser preferences]].',
diff --git a/languages/messages/MessagesSd.php b/languages/messages/MessagesSd.php
index 2a4ec705..d201f0ec 100644
--- a/languages/messages/MessagesSd.php
+++ b/languages/messages/MessagesSd.php
@@ -33,74 +33,74 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ٻٽا چورڻا' ),
+ 'Allmessages' => array( 'سڀ نياپا' ),
+ 'Allpages' => array( 'سڀ صÙحا' ),
+ 'Ancientpages' => array( 'قديم صÙحا' ),
+ 'Block' => array( 'آء٠پي بندش' ),
+ 'Blockme' => array( 'مونکي بندشيو' ),
'BrokenRedirects' => array( 'ٽٽل چورڻا' ),
- 'Disambiguations' => array( 'سلجھائپ' ),
- 'Userlogin' => array( 'يوزر لاگ اÙÙ†' ),
- 'Userlogout' => array( 'يوزر لاگ آئوٽ' ),
+ 'Categories' => array( 'زمرا' ),
+ 'Confirmemail' => array( 'برقٽپال تصديقيو' ),
+ 'Contributions' => array( 'ڀاڱيداريون' ),
'CreateAccount' => array( 'کاتو کوليو' ),
- 'Preferences' => array( 'ترجيحات' ),
- 'Watchlist' => array( 'ٽيٽ Ùهرست' ),
- 'Recentchanges' => array( 'تازيون تبديليون' ),
- 'Upload' => array( 'چاڙهيو' ),
+ 'Disambiguations' => array( 'سلجھائپ' ),
+ 'DoubleRedirects' => array( 'ٻٽا چورڻا' ),
+ 'Emailuser' => array( 'برقٽپال يوزر' ),
+ 'Export' => array( 'برآمد' ),
+ 'FileDuplicateSearch' => array( 'ساڳيا Ùائيل ڳولا' ),
+ 'Filepath' => array( 'Ùائيل Úس' ),
+ 'Import' => array( 'درآمد' ),
+ 'Invalidateemail' => array( 'ناقابلڪار برقٽپال' ),
+ 'BlockList' => array( 'آء٠پي بندش Ùهرست' ),
+ 'Listadmins' => array( 'منتظمين Ùهرست' ),
+ 'Listbots' => array( 'بوٽس Ùهرست' ),
'Listfiles' => array( 'عڪس Ùهرست' ),
- 'Newimages' => array( 'نوان عڪس' ),
+ 'Listredirects' => array( 'چورڻا Ùهرست' ),
'Listusers' => array( 'يوزر Ùهرست' ),
- 'Statistics' => array( 'انگ اکر' ),
- 'Randompage' => array( 'بلا ترتيب' ),
+ 'Lockdb' => array( 'اعدادخانو بند' ),
+ 'Log' => array( 'لاگس' ),
'Lonelypages' => array( 'يتيم صÙحا' ),
- 'Uncategorizedpages' => array( 'اڻزمرايل صÙحا' ),
- 'Uncategorizedcategories' => array( 'اڻ زمرايل زمرا' ),
- 'Uncategorizedimages' => array( 'اڻ زمرايل عڪس' ),
- 'Uncategorizedtemplates' => array( 'اڻ زمرايل سانچا' ),
- 'Unusedcategories' => array( 'اڻ استعماليل زمرا' ),
- 'Unusedimages' => array( 'اڻ استعماليل عڪس' ),
- 'Wantedpages' => array( 'گھربل صÙحا' ),
- 'Wantedcategories' => array( 'گھربل زمرا' ),
- 'Shortpages' => array( 'مختصر صÙحا' ),
'Longpages' => array( 'طويل صÙحا' ),
+ 'MergeHistory' => array( 'سوانح ضماءÙ' ),
+ 'MIMEsearch' => array( 'مائيم ڳولا' ),
+ 'Movepage' => array( 'صÙحو چوريو' ),
+ 'Mycontributions' => array( 'منهنجون ڀاڱيداريون' ),
+ 'Mypage' => array( 'منهنجو صÙحو' ),
+ 'Mytalk' => array( 'مون سان ڳالهه' ),
+ 'Newimages' => array( 'نوان عڪس' ),
'Newpages' => array( 'نوان صÙحا' ),
- 'Ancientpages' => array( 'قديم صÙحا' ),
+ 'Popularpages' => array( 'مقبول صÙحا' ),
+ 'Preferences' => array( 'ترجيحات' ),
+ 'Prefixindex' => array( 'اڳياڙي Úسڻي' ),
'Protectedpages' => array( 'تحÙظيل صÙحا' ),
'Protectedtitles' => array( 'تحÙظيل عنوان' ),
- 'Allpages' => array( 'سڀ صÙحا' ),
- 'Prefixindex' => array( 'اڳياڙي Úسڻي' ),
- 'Ipblocklist' => array( 'آء٠پي بندش Ùهرست' ),
+ 'Randompage' => array( 'بلا ترتيب' ),
+ 'Randomredirect' => array( 'بلا ترتيب چورڻو' ),
+ 'Recentchanges' => array( 'تازيون تبديليون' ),
+ 'Search' => array( 'ڳولا' ),
+ 'Shortpages' => array( 'مختصر صÙحا' ),
'Specialpages' => array( 'خاص صÙحا' ),
- 'Contributions' => array( 'ڀاڱيداريون' ),
- 'Emailuser' => array( 'برقٽپال يوزر' ),
- 'Confirmemail' => array( 'برقٽپال تصديقيو' ),
- 'Whatlinkshere' => array( 'هتان Ú³Ù†Úيل صÙحا' ),
- 'Movepage' => array( 'صÙحو چوريو' ),
- 'Blockme' => array( 'مونکي بندشيو' ),
- 'Categories' => array( 'زمرا' ),
- 'Export' => array( 'برآمد' ),
- 'Version' => array( 'ورزن' ),
- 'Allmessages' => array( 'سڀ نياپا' ),
- 'Log' => array( 'لاگس' ),
- 'Blockip' => array( 'آء٠پي بندش' ),
+ 'Statistics' => array( 'انگ اکر' ),
+ 'Uncategorizedcategories' => array( 'اڻ زمرايل زمرا' ),
+ 'Uncategorizedimages' => array( 'اڻ زمرايل عڪس' ),
+ 'Uncategorizedpages' => array( 'اڻزمرايل صÙحا' ),
+ 'Uncategorizedtemplates' => array( 'اڻ زمرايل سانچا' ),
'Undelete' => array( 'اڻ ڊاهيو' ),
- 'Import' => array( 'درآمد' ),
- 'Lockdb' => array( 'اعدادخانو بند' ),
'Unlockdb' => array( 'اعدادخانو کول' ),
- 'Userrights' => array( 'يوزر حق' ),
- 'MIMEsearch' => array( 'مائيم ڳولا' ),
- 'FileDuplicateSearch' => array( 'ساڳيا Ùائيل ڳولا' ),
- 'Unwatchedpages' => array( 'اڻٽيٽيل صÙحا' ),
- 'Listredirects' => array( 'چورڻا Ùهرست' ),
+ 'Unusedcategories' => array( 'اڻ استعماليل زمرا' ),
+ 'Unusedimages' => array( 'اڻ استعماليل عڪس' ),
'Unusedtemplates' => array( 'اڻ استعماليل سانچا' ),
- 'Randomredirect' => array( 'بلا ترتيب چورڻو' ),
- 'Mypage' => array( 'منهنجو صÙحو' ),
- 'Mytalk' => array( 'مون سان ڳالهه' ),
- 'Mycontributions' => array( 'منهنجون ڀاڱيداريون' ),
- 'Listadmins' => array( 'منتظمين Ùهرست' ),
- 'Listbots' => array( 'بوٽس Ùهرست' ),
- 'Popularpages' => array( 'مقبول صÙحا' ),
- 'Search' => array( 'ڳولا' ),
+ 'Unwatchedpages' => array( 'اڻٽيٽيل صÙحا' ),
+ 'Upload' => array( 'چاڙهيو' ),
+ 'Userlogin' => array( 'يوزر لاگ اÙÙ†' ),
+ 'Userlogout' => array( 'يوزر لاگ آئوٽ' ),
+ 'Userrights' => array( 'يوزر حق' ),
+ 'Version' => array( 'ورزن' ),
+ 'Wantedcategories' => array( 'گھربل زمرا' ),
+ 'Wantedpages' => array( 'گھربل صÙحا' ),
+ 'Watchlist' => array( 'ٽيٽ Ùهرست' ),
+ 'Whatlinkshere' => array( 'هتان Ú³Ù†Úيل صÙحا' ),
'Withoutinterwiki' => array( 'ري بين الوڪي' ),
- 'MergeHistory' => array( 'سوانح ضماءÙ' ),
- 'Filepath' => array( 'Ùائيل Úس' ),
- 'Invalidateemail' => array( 'ناقابلڪار برقٽپال' ),
);
$magicWords = array(
@@ -271,7 +271,6 @@ $messages = array(
'searcharticle' => 'کوليو',
'history' => 'صÙحي جي سوانح',
'history_short' => 'سوانح',
-'info_short' => 'معلومات',
'printableversion' => 'ڇپائتو پرت',
'permalink' => 'مسقتل Ú³Ù†ÚÚ»Ùˆ',
'print' => 'ڇاپيو',
@@ -407,7 +406,7 @@ $messages = array(
'loginsuccesstitle' => 'لاگ اÙÙ† ڪامياب',
'loginsuccess' => "'''هاڻي توهان {{SITENAME}} تي بطور \"\$1\" لاگ اÙÙ† ٿيل آهيو.'''",
'nosuchuser' => '"$1" نالي سان ÚªÙˆ به يوزر نه آهي. Ù‡Ùجي چڪاسيو، يا نئون کاتو کوليو.',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" نالي ÚªÙˆ به ÙŠÙوزر ناهي.
+'nosuchusershort' => '"$1" نالي ÚªÙˆ به ÙŠÙوزر ناهي.
Ù‡Ùجي جي Ù¾Úª ڪندا.',
'nouserspecified' => 'توهان کي ڪو يوزرنانء٠ڄاڻائڻو پوندو.',
'wrongpassword' => 'Úنل ڳجھو Ù„Ùظ غير درست آهي. مهرباني ڪري ٻيهر ڪوشش ڪندا.',
@@ -427,7 +426,7 @@ $messages = array(
'accountcreated' => 'کاتو کلي چڪو',
'accountcreatedtext' => '$1 نالي يوزر کاتو کلي چڪو آھي.',
-# Password reset dialog
+# Change password dialog
'retypenew' => 'نئون ڳجھو Ù„Ùظ ٻيهر ٽائيپ ڪندا:',
# Edit page toolbar
@@ -441,8 +440,6 @@ $messages = array(
'extlink_tip' => 'خارجي Ú³Ù†ÚÚ»Ùˆ (اڳياڙي http:// نه وساريندا)',
'headline_sample' => 'سرخي',
'headline_tip' => 'سطح 2 جي سرخي',
-'math_sample' => 'هتي Ùارمولو وجھو',
-'math_tip' => 'رياضياتي مساوات (LaTeX)',
'image_tip' => 'جَڙيل Ùائيل',
'media_tip' => 'Ùائيل جو Ú³Ù†ÚÚ»Ùˆ',
'sig_tip' => 'توهان جي صحيح بمع اوقاتي مهر',
@@ -703,9 +700,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننÚÙŠ هوڻ گھرجي.',
# Watchlist
'watchlist' => 'منهنجي ٽيٽ Ùهرست',
'mywatchlist' => 'منهنجي ٽيٽ Ùهرست',
-'addedwatch' => 'ٽيٽ Ùھرست Û¾ شامل ڪيو ويو.',
'addedwatchtext' => "صÙحو بعنوان \"[[:\$1]]\" اوهان جي [[Special:Watchlist|ٽيٽ Ùهرست]] Û¾ شامل ٿي ويو. استقبالي تبديليون هتي درج ٿينديون وينديون. اهو صÙحو [[Special:RecentChanges|تازين تبديلين]] واري صÙحي تي '''گهرن''' اکرن Û¾ نمايان ڪري Úيکاريو ويندو. جيڪÚهن اوهان اهو سڀ نه ٿا چاهيو ته '''اڻ ٽيٽيو''' تي ÚªÙ„Úª ڪريو.",
-'removedwatch' => 'ٽيٽ Ùهرست مان هٽايو ويو',
'removedwatchtext' => 'صÙحو بعنوان "[[:$1]]" توهان جي ٽيٽ Ùهرست مان هٽي Ú†ÚªÙˆ آهي.',
'watch' => 'ٽيٽيو',
'watchthispage' => 'هيء٠صÙحو ٽيٽيو',
@@ -728,7 +723,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننÚÙŠ هوڻ گھرجي.',
'historywarning' => 'خبردار: جيڪو صÙحو توهان ڊاهڻ وارا آهيو، تنهن جي Ù‡Úª سوانح آهي:',
'confirmdeletetext' => 'توهان Ù‡Úª صÙحي Ú©ÙŠ ان جي سموري سوانح سميت ڊاهڻ وارا آهيو. مهرباني ڪري Ù¾Úª ڪندا ته توهان اهو ئي ڪرڻ گھرو ٿا، Û½ اهو ته توهان ان جي نتيجن کان واق٠آهيو، Û½ اهو Ù¾Ú» ته توهان اهو ÚªÙ… [[{{MediaWiki:Policy-url}}|پاليسي]]Ø¡ÙŽ مطابق ڪري رهيا آهيو.',
'actioncomplete' => 'ÚªÙ… Ù¾Ùورو',
-'deletedtext' => '"<nowiki>$1</nowiki>" ڊهي چڪو آهي.
+'deletedtext' => '"$1" ڊهي چڪو آهي.
تازو ڊاٺل صÙحن جي Ùهرست لاء٠$2 Úسندا.',
'deletedarticle' => '"[[$1]]" ڊهي چڪو',
'dellogpage' => 'ڊاٺ لاگ',
@@ -747,7 +742,7 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننÚÙŠ هوڻ گھرجي.',
'protectexpiry' => 'اختتام:',
'protect_expiry_invalid' => 'انجامي مدو ناقابلڪار آهي.',
'protect_expiry_old' => 'انجامي مدو ماضيءَ ۾ آهي.',
-'protect-text' => "توهان '''<nowiki>$1</nowiki>''' صÙحي جي تحÙظاتي سطح Úسي Û½ بدلائي سگھو ٿا.",
+'protect-text' => "توهان '''$1''' صÙحي جي تحÙظاتي سطح Úسي Û½ بدلائي سگھو ٿا.",
'protect-locked-access' => "توهان جو کاتو صÙحن جي تحÙظاتي سطح تبديلي ڪرڻ جا اختيار نه ٿو رکي. هيٺ صÙحي جون وقوعات (سيٽڱس) پيش ڪجن ٿيون '''$1''':",
'protect-cascadeon' => 'هيء٠صÙحو ÙÙŠ الوقت تحÙظيل آهي، ڇاڪاڻ ته اهو هيٺين {{PLURAL:$1|صÙحي|صÙحن}} جو حصو آهي، جنهن تي تحÙظ در تحÙظ لاڳو ٿيل آهي.',
'protect-fallback' => '"$1" جي اجازت گھرجي',
@@ -905,11 +900,10 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننÚÙŠ هوڻ گھرجي.',
'nextdiff' => 'نئون تÙاوت -->',
# Media information
-'file-info-size' => '$1 × $2 عڪسلون، Ùائيل سائيز: $3ØŒ MIME ٽائيپ: $4',
-'file-nohires' => '<small>اڃا سنهو تحلل ميسر ناهي.</small>',
-'svg-long-desc' => 'ايس وي جي Ùائيل، اٽڪل $1 × $2 عڪسلون، Ùائيل سائيز: $3',
-'show-big-image' => 'سنهو ترين تحلل',
-'show-big-image-thumb' => '<small>هن پيش نگاهه جي ماپ: $1 × $2 عڪسلون</small>',
+'file-info-size' => '$1 × $2 عڪسلون، Ùائيل سائيز: $3ØŒ MIME ٽائيپ: $4',
+'file-nohires' => '<small>اڃا سنهو تحلل ميسر ناهي.</small>',
+'svg-long-desc' => 'ايس وي جي Ùائيل، اٽڪل $1 × $2 عڪسلون، Ùائيل سائيز: $3',
+'show-big-image' => 'سنهو ترين تحلل',
# Special:NewFiles
'newimages' => 'نون Ùائيلن جي گيلري',
@@ -968,14 +962,12 @@ $1 {{PLURAL:$1|اکر|اکرن}} کان ننÚÙŠ هوڻ گھرجي.',
# External editor support
'edit-externally' => 'هيء٠Ùائيل ڪنهن خارجي منتقڪريءَ سان سنواريو',
-'edit-externally-help' => 'وڌيڪ معلومات لاء٠[http://www.mediawiki.org/wiki/Manual:External_editors هدايتون براء٠تنصيبڪاري] Úسندا.',
+'edit-externally-help' => 'وڌيڪ معلومات لاء٠[//www.mediawiki.org/wiki/Manual:External_editors هدايتون براء٠تنصيبڪاري] Úسندا.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'سڀ',
-'imagelistall' => 'سڀ',
-'watchlistall2' => 'سڀ',
-'namespacesall' => 'سڀ',
-'monthsall' => 'سڀ',
+'watchlistall2' => 'سڀ',
+'namespacesall' => 'سڀ',
+'monthsall' => 'سڀ',
# E-mail address confirmation
'confirmemail_success' => 'توھان جي برق ٽپال جي پڪ ڪئي وئي آھي. ھاڻ٠توھان لاگ ان ٿي وڪيءَ جو مزو وٺي سگھو ٿا',
diff --git a/languages/messages/MessagesSdc.php b/languages/messages/MessagesSdc.php
index 991b312a..836e6981 100644
--- a/languages/messages/MessagesSdc.php
+++ b/languages/messages/MessagesSdc.php
@@ -30,77 +30,77 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'RinviiDoppi' ),
+ 'Allmessages' => array( 'Imbasciaddi' ),
+ 'Allpages' => array( 'TuttiLiPàgini' ),
+ 'Ancientpages' => array( 'PàginiMancuRizzenti' ),
+ 'Block' => array( 'Brocca' ),
+ 'Blockme' => array( 'BroccaProxy' ),
+ 'Booksources' => array( 'ZirchaISBN' ),
'BrokenRedirects' => array( 'RinviiIbbagliaddi' ),
+ 'Categories' => array( 'Categuri' ),
+ 'ChangePassword' => array( 'RimpusthàParàuraDÓrdhini' ),
+ 'Contributions' => array( 'Cuntributi', 'CuntributiUtente' ),
+ 'Deadendpages' => array( 'PàginiChenaIscidda' ),
'Disambiguations' => array( 'CuLuMatessiInnommu' ),
- 'Userlogin' => array( 'Intra', 'Login', 'Accesso' ),
- 'Userlogout' => array( 'Isci', 'Logout', 'Uscita' ),
- 'Preferences' => array( 'Prifirènzi' ),
- 'Watchlist' => array( 'AbbaidaddiIppiziari' ),
- 'Recentchanges' => array( 'UlthimiMudìfigghi' ),
- 'Upload' => array( 'Carrigga' ),
+ 'DoubleRedirects' => array( 'RinviiDoppi' ),
+ 'Emailuser' => array( 'InviaPosthaErettrònica' ),
+ 'Export' => array( 'Ippurtha' ),
+ 'Fewestrevisions' => array( 'PàginiCunMancuRibisioni' ),
+ 'Import' => array( 'Impurtha' ),
+ 'BlockList' => array( 'IPBroccaddi' ),
+ 'Listadmins' => array( 'Amministhradori' ),
'Listfiles' => array( 'Immagini' ),
- 'Newimages' => array( 'ImmaginiRizzenti' ),
+ 'Listredirects' => array( 'Rinvii' ),
'Listusers' => array( 'Utenti', 'ErencuUtenti' ),
- 'Statistics' => array( 'Sthatisthigghi' ),
- 'Randompage' => array( 'PàginaCasuari' ),
+ 'Lockdb' => array( 'BroccaDB' ),
+ 'Log' => array( 'Rigisthru', 'Rigisthri', 'Registro', 'Registri' ),
'Lonelypages' => array( 'PàginaÒiffana' ),
- 'Uncategorizedpages' => array( 'PàginiChenaCateguri' ),
- 'Uncategorizedcategories' => array( 'CateguriNòCategurizzaddi' ),
- 'Uncategorizedimages' => array( 'ImmaginiChenaCateguri' ),
- 'Uncategorizedtemplates' => array( 'MudelliChenaCateguri' ),
- 'Unusedcategories' => array( 'CateguriInutirizaddi' ),
- 'Unusedimages' => array( 'FileInutirizaddi' ),
- 'Wantedpages' => array( 'PàginiPiùDumandaddi' ),
- 'Wantedcategories' => array( 'CateguriDumandaddi' ),
+ 'Longpages' => array( 'PàginiPiùLonghi' ),
+ 'MIMEsearch' => array( 'ZirchaMIME' ),
+ 'Mostcategories' => array( 'PàginiCunPiùCateguri' ),
+ 'Mostimages' => array( 'ImmaginiPiùRiciamaddi' ),
'Mostlinked' => array( 'PàginiPiùRiciamaddi' ),
'Mostlinkedcategories' => array( 'CateguriPiùRiciamaddi' ),
'Mostlinkedtemplates' => array( 'MudelliPiùRiciamaddi' ),
- 'Mostimages' => array( 'ImmaginiPiùRiciamaddi' ),
- 'Mostcategories' => array( 'PàginiCunPiùCateguri' ),
'Mostrevisions' => array( 'PàginiCunPiùRibisioni' ),
- 'Fewestrevisions' => array( 'PàginiCunMancuRibisioni' ),
- 'Shortpages' => array( 'PàginiPiùCorthi' ),
- 'Longpages' => array( 'PàginiPiùLonghi' ),
+ 'Movepage' => array( 'Ippustha', 'Rinumina' ),
+ 'Mycontributions' => array( 'MéCuntributi' ),
+ 'Mypage' => array( 'MeaPàginaUtenti' ),
+ 'Mytalk' => array( 'MéDischussioni' ),
+ 'Newimages' => array( 'ImmaginiRizzenti' ),
'Newpages' => array( 'PàginiPiùRizzenti' ),
- 'Ancientpages' => array( 'PàginiMancuRizzenti' ),
- 'Deadendpages' => array( 'PàginiChenaIscidda' ),
- 'Protectedpages' => array( 'PàginiPrutiggiddi' ),
- 'Allpages' => array( 'TuttiLiPàgini' ),
+ 'Popularpages' => array( 'PàginiPiùVisitaddi' ),
+ 'Preferences' => array( 'Prifirènzi' ),
'Prefixindex' => array( 'Prefissi' ),
- 'Ipblocklist' => array( 'IPBroccaddi' ),
- 'Specialpages' => array( 'PàginiIppiziari' ),
- 'Contributions' => array( 'Cuntributi', 'CuntributiUtente' ),
- 'Emailuser' => array( 'InviaPosthaErettrònica' ),
- 'Whatlinkshere' => array( 'PuntaniInogghi' ),
+ 'Protectedpages' => array( 'PàginiPrutiggiddi' ),
+ 'Randompage' => array( 'PàginaCasuari' ),
+ 'Randomredirect' => array( 'RinviuCasuari' ),
+ 'Recentchanges' => array( 'UlthimiMudìfigghi' ),
'Recentchangeslinked' => array( 'MudìfigghiLiaddi' ),
- 'Movepage' => array( 'Ippustha', 'Rinumina' ),
- 'Blockme' => array( 'BroccaProxy' ),
- 'Booksources' => array( 'ZirchaISBN' ),
- 'Categories' => array( 'Categuri' ),
- 'Export' => array( 'Ippurtha' ),
- 'Version' => array( 'Versioni' ),
- 'Allmessages' => array( 'Imbasciaddi' ),
- 'Log' => array( 'Rigisthru', 'Rigisthri', 'Registro', 'Registri' ),
- 'Blockip' => array( 'Brocca' ),
+ 'Revisiondelete' => array( 'CanzillaRibisioni' ),
+ 'Search' => array( 'Zircha', 'Ricerca' ),
+ 'Shortpages' => array( 'PàginiPiùCorthi' ),
+ 'Specialpages' => array( 'PàginiIppiziari' ),
+ 'Statistics' => array( 'Sthatisthigghi' ),
+ 'Uncategorizedcategories' => array( 'CateguriNòCategurizzaddi' ),
+ 'Uncategorizedimages' => array( 'ImmaginiChenaCateguri' ),
+ 'Uncategorizedpages' => array( 'PàginiChenaCateguri' ),
+ 'Uncategorizedtemplates' => array( 'MudelliChenaCateguri' ),
'Undelete' => array( 'TurraChePrimma' ),
- 'Import' => array( 'Impurtha' ),
- 'Lockdb' => array( 'BroccaDB' ),
'Unlockdb' => array( 'IbbruccaDB' ),
- 'Userrights' => array( 'PrimmissiUtenti' ),
- 'MIMEsearch' => array( 'ZirchaMIME' ),
- 'Unwatchedpages' => array( 'PàginiNòAbbaidaddi' ),
- 'Listredirects' => array( 'Rinvii' ),
- 'Revisiondelete' => array( 'CanzillaRibisioni' ),
+ 'Unusedcategories' => array( 'CateguriInutirizaddi' ),
+ 'Unusedimages' => array( 'FileInutirizaddi' ),
'Unusedtemplates' => array( 'MudelliInutirizaddi' ),
- 'Randomredirect' => array( 'RinviuCasuari' ),
- 'Mypage' => array( 'MeaPàginaUtenti' ),
- 'Mytalk' => array( 'MéDischussioni' ),
- 'Mycontributions' => array( 'MéCuntributi' ),
- 'Listadmins' => array( 'Amministhradori' ),
- 'Popularpages' => array( 'PàginiPiùVisitaddi' ),
- 'Search' => array( 'Zircha', 'Ricerca' ),
- 'Resetpass' => array( 'RimpusthàParàuraDÓrdhini' ),
+ 'Unwatchedpages' => array( 'PàginiNòAbbaidaddi' ),
+ 'Upload' => array( 'Carrigga' ),
+ 'Userlogin' => array( 'Intra', 'Login', 'Accesso' ),
+ 'Userlogout' => array( 'Isci', 'Logout', 'Uscita' ),
+ 'Userrights' => array( 'PrimmissiUtenti' ),
+ 'Version' => array( 'Versioni' ),
+ 'Wantedcategories' => array( 'CateguriDumandaddi' ),
+ 'Wantedpages' => array( 'PàginiPiùDumandaddi' ),
+ 'Watchlist' => array( 'AbbaidaddiIppiziari' ),
+ 'Whatlinkshere' => array( 'PuntaniInogghi' ),
'Withoutinterwiki' => array( 'PàginiChenaInterwiki' ),
);
@@ -215,16 +215,6 @@ $messages = array(
'category-article-count' => "{{PLURAL:$2|Chistha categuria cunteni un'unica pagina, indicadda inogghi.|Chistha categuria cunteni {{PLURAL:$1|la pagina indicadda|li $1 pagini indicaddi}} inogghi, i' un tutari di $2.}}",
'listingcontinuesabbrev' => '(séguiddu)',
-'mainpagetext' => "'''Isthallazioni di MediaWiki accabadda currentementi.'''",
-'mainpagedocfooter' => "Cunsultha la [http://meta.wikimedia.org/wiki/Aggiuddu:Summàriu Ghia utenti] pa maggiori infuimmazioni i l'usu di chisthu software wiki.
-
-== Pa ischuminzà ==
-Li sighenti cullegamenti so in linga ingrese:
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Impusthazioni di cunfigurazioni]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Prigonti friquenti i MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list annùnzii MediaWiki]",
-
'about' => 'Infuimmazioni',
'article' => 'Pagina',
'newwindow' => "(s'abbri in d'unu nobu balchoni)",
@@ -265,7 +255,6 @@ Li sighenti cullegamenti so in linga ingrese:
'history' => 'Versioni prizzidenti',
'history_short' => 'Cronologia',
'updatedmarker' => "mudìfiggadda di la me' ulthima vìsita",
-'info_short' => 'Infuimmazioni',
'printableversion' => 'Versioni sthampabiri',
'permalink' => 'Cullegamentu peimmanenti',
'print' => 'Sthampa',
@@ -436,12 +425,11 @@ Interrogazioni: $2",
'protectedpagetext' => 'Chistha pàgina è isthadda prutiggidda pa impidinni la mudìfigga.',
'viewsourcetext' => 'È pussìbiri visuarizzà e cupià lu còdizi di chistha pàgina:',
'protectedinterface' => "Chistha pàgina cunteni un'erementu chi fazzi parthi di l'interfàccia utenti di lu software; è dunca prutiggidda pa evità pussìbiri abusi.",
-'editinginterface' => "'''Attinzioni:''' Lu testhu di chistha pàgina fazzi parthi di l'interfàccia utenti di lu situ. Tutti li mudìfigghi arriggaddi a chistha pàgina si rifrèttini i' l'imbasciaddi visuarizzaddi pa tutti l'utenti. Pa li traduzioni, pa piazeri utirizà [http://translatewiki.net/wiki/Main_Page?setlang=sdc translatewiki.net], lu prugettu di lucarizazioni MediaWiki.",
+'editinginterface' => "'''Attinzioni:''' Lu testhu di chistha pàgina fazzi parthi di l'interfàccia utenti di lu situ. Tutti li mudìfigghi arriggaddi a chistha pàgina si rifrèttini i' l'imbasciaddi visuarizzaddi pa tutti l'utenti. Pa li traduzioni, pa piazeri utirizà [//translatewiki.net/wiki/Main_Page?setlang=sdc translatewiki.net], lu prugettu di lucarizazioni MediaWiki.",
'sqlhidden' => "(l'interrogazioni SQL è isthadda cuadda)",
'cascadeprotected' => 'In chistha pàgina nò è pussìbiri effettuà mudìfigghi parchí è isthadda incrusa {{PLURAL:$1|i la sighenti pàgina indicadda, ch\'è isthadda prutiggidda|i li sighenti pàgini indicaddi, chi so isthaddi prutiggiddi}} chirriendi la prutizioni "ricussiba":
$2',
'namespaceprotected' => "Nò si diponi di li pimmissi nezzessàri pa mudifiggà li pagini di lu tipu di pagina '''$1'''.",
-'customcssjsprotected' => "Nò si diponi di li pimmissi nezzessàri pa mudifiggà la pàgina, parchí cunteni l'impusthazioni passunari di un althru utenti.",
'ns-specialprotected' => 'No è pussìbiri mudifiggà li pàgini ippiziari.',
'titleprotected' => "Chisthu tìturu è isthaddu prutiggiddu da la criazioni da [[User:$1|$1]].
La rasgioni frunidda è ''$2''.",
@@ -482,7 +470,7 @@ La registhrazioni è isthadda criadda currettamenti. No dimintiggà di passunari
'loginsuccesstitle' => 'Intradda effettuadda',
'loginsuccess' => "'''Lu cullegamentu a lu server di {{SITENAME}} cu l'innòmu utenti \"\$1\" è attibu.'''",
'nosuchuser' => 'Nò è registhraddu caschunu utenti d\'innòmu "$1". Verifiggà l\'innòmu insiriddu o crià una noba registhrazioni.',
-'nosuchusershort' => 'Nò è registhraddu caschunu utenti d\'innòmu "<nowiki>$1</nowiki>". Verifiggà l\'innòmu insiriddu.',
+'nosuchusershort' => 'Nò è registhraddu caschunu utenti d\'innòmu "$1". Verifiggà l\'innòmu insiriddu.',
'nouserspecified' => "È nezzessàriu ippizzificà un'innòmu utenti.",
'wrongpassword' => "La paràura d'órdhini insiridda nò è curretta. Riprubà.",
'wrongpasswordempty' => "La paràura d'órdhini insiridda è biodda. Riprubà.",
@@ -519,7 +507,7 @@ Insirì un'indirizzu vàriddu o ibbiudà la casella.",
Si la registhrazioni è isthadda criadda pa un\'errori, pói ignorà chisth\'imbasciadda.',
'loginlanguagelabel' => 'Linga: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => "Ciamba paràura d'órdhini",
'resetpass_announce' => "L'intradda è isthadda effettuadda cun un còdizi timpuràniu, inviaddu via postha erettrònica.
@@ -544,8 +532,6 @@ Pa cumprità la registhrazioni è nezzessàriu impusthà una noba paràura d'ór
'extlink_tip' => 'Cullegamentu esthernu (nota lu prefissu http:// )',
'headline_sample' => 'Intisthazioni',
'headline_tip' => 'Sottu-intisthazioni',
-'math_sample' => 'Insirì la fòimmura inogghi',
-'math_tip' => 'Fòimmura matemàtigga (LaTeX)',
'nowiki_sample' => 'Insirì lu testhu nò fuimmaddaddu inogghi',
'nowiki_tip' => 'Ignora la fuimmaddazioni wiki',
'image_sample' => 'Esempiu.jpg',
@@ -622,7 +608,7 @@ Si vói crià la pàgina abà, pói sùbidu ischribì in giossu (abbaidda li [[{
S'ài sighiddu lu cullegamentu pa un'errori, è suffizenti incalchà lu buttoni '''Indareddu''' i' lu propriu nabiggadori.",
'anontalkpagetext' => "----''Chistha è la pàgina di dischussioni di un'utenti anònimu, chi no ha ancora criaddu una registhrazioni o, in dugna modu, no la usa. Pa identifiggallu è dunca nezzessàriu usà lu sóiu nùmaru di l'indirizzu IP. L'indirizzi IP, parò, poni assé cundibisi da più utenti. Si sei un'utenti anònimu e vói chi li cummenti prisenti in chistha pàgina no si rifèrini a te, [[Special:UserLogin|crea una noba registhrazion o intra]] cu' chidda ch'hai già pa evità d'assé confusu cu' althri utenti anònimi in futuru.''",
'noarticletext' => "Abà chistha pàgina è biodda. È pussìbiri [[Special:Search/{{PAGENAME}}|zirchà chistu tituru]] i' l'althri pàgini di lu situ, <span class=\"plainlinks\">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} zirchà i' li rigisthri curriraddi] oppuru [{{fullurl:{{FULLPAGENAME}}|action=edit}} mudifiggà la pagina abà]</span>.",
-'userpage-userdoesnotexist' => 'La registhrazioni "$1" nò curripundi a un\'utenti rigisthraddu. Verifiggà chi s\'aggia avveru gana di crià o mudìfiggà chistha pàgina.',
+'userpage-userdoesnotexist' => 'La registhrazioni "<nowiki>$1</nowiki>" nò curripundi a un\'utenti rigisthraddu. Verifiggà chi s\'aggia avveru gana di crià o mudìfiggà chistha pàgina.',
'clearyourcache' => "'''Nota:''' daboi abé saivaddu è nezzessàriu pulì la mimória cache di lu propriu nabiggadori pà vidé li ciambamenti. Pa '''Mozilla / Firefox / Safari''': fà clic i Ricàrrigga incalchendi lu buttoni di li maiuschuri, oppuru incalchà ''Ctrl-Maiusc-R'' (''Cmd-Maiusc-R'' i Mac); pa '''Internet Explorer:''' mantinì incalchaddu lu tasthu ''Ctrl'' mentri s'incalcha lu buttoni ''Aggiorna'' o incalchà ''Ctrl-F5''; pa '''Konqueror''': incalchà lu buttoni ''Ricarica'' o lu tasthu ''F5''; pa '''Opera''' pò assé nezzessàriu ibbuiddà cumpretamenti la mimória cache da lu menù ''Strumenti → Preferenze''.",
'usercssyoucanpreview' => "'''Suggerimentu:''' Usa lu buttoni '''Visuarizza antiprimma''' pa prubà li nobi CSS primma di sàivvaddi.",
'userjsyoucanpreview' => "'''Suggerimentu:''' Usa lu buttoni '''Visuarizza antiprimma''' pa prubà li nobi JS primma di sàivvaddi.",
@@ -851,7 +837,6 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
'changepassword' => "Ciamba paràura d'órdhini",
'prefs-skin' => 'Aipettu gràficu',
'skin-preview' => 'antiprimma',
-'prefs-math' => 'Fòimmuri matemàtigghi',
'datedefault' => 'Nisciuna prifirènzia',
'prefs-datetime' => 'Data e ora',
'prefs-personal' => 'Profiru utenti',
@@ -867,8 +852,6 @@ Cunsulthà lu [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} rigi
'columns' => 'Curonni:',
'searchresultshead' => 'Zercha',
'resultsperpage' => 'Nùmaru di risulthaddi pa pàgina:',
-'contextlines' => 'Righi di testhu pa dugnunu risulthaddu:',
-'contextchars' => 'Nùmaru di caràtteri di cuntesthu:',
'stub-threshold' => 'Varori mìminu pa i <a href="#" class="stub">cullegamenti a li sàgumi</a>:',
'recentchangesdays' => 'Nùmaru di dì da musthrà i li ulthimi mudìfigghi:',
'recentchangescount' => 'Numaru pridifiniddu di mudifigghi da musthrà:',
@@ -1058,9 +1041,6 @@ Si si diponi di l'immàgina i' la risoruzioni originari, pa piazeri carriggalla.
'destfilename' => 'Nommu di lu file di disthinazioni:',
'watchthisupload' => "Aggiungi a l'abbaidaddi ippiziari",
'filewasdeleted' => "Un file cun chist'innòmmu è già isthaddu cariggaddu e canzilladdu. Verifiggà $1 primma di turrà a cariggallu.",
-'upload-wasdeleted' => "'''Attenzioni: sei carrigghendi un file chi prizzidentementi è già isthaddu canzilladdu.'''
-
-Pa piazeri verifigga si vói carriggà avveru chisthu file; inogghi v'è lu rigisthru cu' la mutibazioni di la canzilladdura:",
'filename-bad-prefix' => "L'innòmmu di lu file chi sei carrigghendi ischumenza cun '''\"\$1\"''', ch'è un'innòmmu nò dischrittibu assignaddu automatiggamenti da li fotocameri. Pa piazieri sciubarà un'innòmmu più dischrittibu pa lu file tóiu.",
'upload-success-subj' => 'Carriggamentu cumpritaddu',
@@ -1315,12 +1295,10 @@ Also see [[Special:WantedCategories|wanted categories]].",
'watchlistanontext' => "Pa visuarizzà e mudìfiggà l'erencu di l'abbaidaddi ippiziari è nezzessàriu $1.",
'watchnologin' => 'Intradda nò effettuadda',
'watchnologintext' => "Pa mudìfiggà la listha di l'abbaidaddi ippiziari è nezzessàriu primma [[Special:UserLogin|intrà]].",
-'addedwatch' => "Pàgina aggiunta a la listha di l'abbaidaddi ippiziari",
'addedwatchtext' => "La pàgina \"[[:\$1]]\" è isthadda aggiunta a la propria [[Special:Watchlist|listha di l'abbaidaddi ippiziari]]. D'abà innanzi, tutti li mudìfigghi arriggaddi a la pàgina e a la sóia dischussioni sarani erencaddi in chidda listha; lu tìturu di la pàgina apparirà in '''grasseddu''' i' la pàgina
di l'[[Special:RecentChanges|ulthimi mudìfigghi]] pa rindiru più visìbiri.
Si daboi s'à gana d'eliminà la pàgina da la listha di l'abbaidaddi ippiziarii, fà clic i' \"nò sighì\" i' la barra in althu.",
-'removedwatch' => "Pàgina eliminadda da la listha di l'abbaidaddi ippiziari",
'removedwatchtext' => 'La pàgina "[[:$1]]" è isthadda eliminadda da la listha di l\'abbaidaddi ippiziari.',
'watch' => 'Sighi',
'watchthispage' => 'Sighi chistha pàgina',
@@ -1373,10 +1351,10 @@ Nò sarani inviaddi althri nutìfichi in casu d\'althri ciambamenti, arumancu ch
--
Pa mudìfiggà l\'impusthazioni di la listha di l\'abbaidaddi ippiziari, visita
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Pa dì cosa ni pensi e dumandà assisthènzia:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Canzella pàgina',
@@ -1391,7 +1369,7 @@ Pa dì cosa ni pensi e dumandà assisthènzia:
'confirmdeletetext' => "Sei canzillendi pa sempri da la bancati una pàgina o un'immàgina, umpari a la cronologia d'edda.
Pa piazzeri, cunfèimma chi vói canzillà avveru, ch'ài cumpresu li cunsiguènzi di l'azioni tóia e ch'edda è cunfòimmi a li [[{{MediaWiki:Policy-url}}|lìni ghia]].",
'actioncomplete' => 'Azioni cumpritadda',
-'deletedtext' => 'La pàgina "<nowiki>$1</nowiki>" è isthadda canzilladda. Cunsultha lu $2 pa un\'erencu di li pàgini canzilladdi da poggu tempu.',
+'deletedtext' => 'La pàgina "$1" è isthadda canzilladda. Cunsultha lu $2 pa un\'erencu di li pàgini canzilladdi da poggu tempu.',
'deletedarticle' => 'ha canzilladdu "[[$1]]"',
'suppressedarticle' => 'eliminaddu "[[$1]]"',
'dellogpage' => 'Canzilladduri',
@@ -1432,7 +1410,7 @@ Pa piazzeri, cunfèimma chi vói canzillà avveru, ch'ài cumpresu li cunsiguèn
'protectexpiry' => 'Ischadènzia:',
'protect_expiry_invalid' => 'Ischadènzia invàridda.',
'protect_expiry_old' => 'Ischadènzia già passadda.',
-'protect-text' => "Chisthu mòdulu cunsenti di vidé e mudìfiggà lu libellu di prutizioni pa la pàgina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Chisthu mòdulu cunsenti di vidé e mudìfiggà lu libellu di prutizioni pa la pàgina '''$1'''.",
'protect-locked-blocked' => "Nò è pussìbiri mudìfiggà i libelli di prutizioni cand'è attibu un broccu. L'impusthazioni currenti pa la pàgina so '''$1''':",
'protect-locked-access' => "Nò si diponi di li primmissi nezzessàri pa mudìfiggà lu libellu di prutizioni di la pàgina.
L'impusthazioni currenti pa la pàgina so '''$1''':",
@@ -1538,12 +1516,10 @@ $1",
# Block/unblock
'blockip' => 'Brocca utenti',
-'ipaddress' => 'Indirizzu IP:',
'ipadressorusername' => 'Indirizzu IP o innòmu utenti:',
'ipbexpiry' => 'Ischadènzia di lu broccu:',
'ipbreason' => 'Mutibu di lu broccu:',
'ipbreasonotherlist' => 'Althra mutibazioni',
-'ipbanononly' => 'Brocca soru utenti anònimi',
'ipbcreateaccount' => "Impidisci la criazioni d'althri registhrazioni",
'ipbemailban' => "Impidisci a l'utenti l'inviu di postha erettrònica",
'ipbenableautoblock' => "Brocca automatiggamenti l'ulthimu indirizzu IP usaddu da l'utenti e l'althri chi zerchani di fà mudìfigghi",
@@ -1568,9 +1544,7 @@ $1",
'unblocked-id' => 'Lu broccu $1 è isthaddu buggaddu',
'ipblocklist' => 'Utenti e indirizzi IP broccaddi',
'ipblocklist-legend' => "Acciappa un'utenti broccaddu",
-'ipblocklist-username' => 'Innòmmu utenti o indirizzu IP:',
'ipblocklist-submit' => 'Zercha',
-'blocklistline' => '$1, $2 à broccaddu $3 ($4)',
'infiniteblock' => 'chena ischadènzia',
'expiringblock' => "finz'a lu $1 a li $2",
'anononlyblock' => 'soru anònimi',
@@ -1586,7 +1560,7 @@ $1",
'autoblocker' => "Broccaddu automatiggamenti parchí l'indirizzu IP è cundibisu cu' l'utenti \"[[User:\$1|\$1]]\". Lu broccu di l'utenti \$1 è isthaddu impusthaddu pa lu sighenti mutibu: \"'''\$2'''\".",
'blocklogpage' => 'Brocchi',
'blocklogentry' => "à broccaddu [[$1]] cu' l'ischadènzia $2 $3",
-'blocklogtext' => "Chisthu è l'erencu di l'azioni di broccu e ibbruccu utenti. Li indirizzi IP broccaddi automatiggamenti nò so erencaddi. Cunsulthà la [[Special:IPBlockList|listha di l'IP broccaddi]] pa l'erencu di l'indirizzi e innòmmi utenti chi so broccaddi abà.",
+'blocklogtext' => "Chisthu è l'erencu di l'azioni di broccu e ibbruccu utenti. Li indirizzi IP broccaddi automatiggamenti nò so erencaddi. Cunsulthà la [[Special:BlockList|listha di l'IP broccaddi]] pa l'erencu di l'indirizzi e innòmmi utenti chi so broccaddi abà.",
'unblocklogentry' => 'à ibbruccaddu $1',
'block-log-flags-anononly' => 'soru utenti anònimi',
'block-log-flags-nocreate' => 'criazioni registhrazioni broccadda',
@@ -1687,7 +1661,7 @@ In chisth'ulthimu casu si pó utilizzà puru un cullegamentu, pa esempiu [[{{#Sp
'allmessagesdefault' => 'Testhu pridifiniddu',
'allmessagescurrent' => 'Testhu attuari',
'allmessagestext' => "Chistha è la listha di tutti l'imbasciaddi di sisthema dipunìbiri i' lu tipu di pàgina MediaWiki.
-Pa piazeri utirizà [http://www.mediawiki.org/wiki/Localisation MediaWiki Lucarizazioni] e [http://translatewiki.net translatewiki.net] pa l'althri traduzioni.",
+Pa piazeri utirizà [//www.mediawiki.org/wiki/Localisation MediaWiki Lucarizazioni] e [//translatewiki.net translatewiki.net] pa l'althri traduzioni.",
'allmessagesnotsupportedDB' => "Chistha pàgina nò è supporthadda parchí l'indicadori '''\$wgUseDatabaseMessages''' nò è attibuu.",
'allmessages-filter-unmodified' => 'Nò mudifiggaddi',
'allmessages-filter-all' => 'Tutti',
@@ -1803,9 +1777,7 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
'tooltip-undo' => "\"Annulla\" pilmitti d'annullà chistha mudifigga e abbri lu modulu di mudifigga d'antiprimma. Pilmitti d'insirì una mutibazioni i' l'oggettu di la mudifigga.",
# Metadata
-'nodublincore' => "Metadati Dublin Core RDF nò attibi i' chisthu server.",
-'nocreativecommons' => "Metadati Commons RDF nò attibi i' chisthu server.",
-'notacceptable' => "Lu server wiki nò è bonu a frunì li dati i' un fuimmaddu liggìbiri da lu nabiggadori utirizaddu.",
+'notacceptable' => "Lu server wiki nò è bonu a frunì li dati i' un fuimmaddu liggìbiri da lu nabiggadori utirizaddu.",
# Attribution
'anonymous' => '{{PLURAL:$1|Utenti anonimu|utenti anonimi}} di {{SITENAME}}',
@@ -1825,33 +1797,6 @@ Tutti l'operazioni d'impurthazioni trans-wiki so rigisthraddi i' lu [[Special:Lo
'spam_reverting' => "Turradda a l'ulthima versioni chena cullegamenti a $1",
'spam_blanking' => 'Pàgina ibbiuddadda, tutti li ribisioni abìani cullegamenti a $1',
-# Info page
-'infosubtitle' => 'Infuimmazioni pa la pàgina',
-'numedits' => 'Nùmaru di mudìfigghi (pàgina): $1',
-'numtalkedits' => 'Nùmaru di mudìfigghi (pàgina di dischussioni): $1',
-'numwatchers' => "Nùmaru d'osseivvadori: $1",
-'numauthors' => "Nùmaru d'autori disthinti (pàgina): $1",
-'numtalkauthors' => "Nùmaru d'autori disthinti (pàgina di dischussioni): $1",
-
-# Math options
-'mw_math_png' => 'Musthra sempri in PNG',
-'mw_math_simple' => 'HTML si umbè sémprizi, sinnò PNG',
-'mw_math_html' => 'HTML si pussìbiri, sinnò PNG',
-'mw_math_source' => 'Lassa in fuimmaddu TeX (pa nabiggadori testhuari)',
-'mw_math_modern' => 'Fuimmaddu cunsigliaddu pa li nabiggadori muderni',
-'mw_math_mathml' => 'Usa MathML si pussìbiri (ippirimintari)',
-
-# Math errors
-'math_failure' => "Errori i'l'anàrisi sintàttigga",
-'math_unknown_error' => 'errori ischunisciddu',
-'math_unknown_function' => 'funzioni ischuniscidda',
-'math_lexing_error' => 'errori di lingàggiu',
-'math_syntax_error' => 'errori di sintassi',
-'math_image_error' => 'Cunvirthimentu in PNG nò ridisciddu; verifiggà chi siani isthalladdi currentementi i sighenti prugrammi: latex, dvips, gs, e convert.',
-'math_bad_tmpdir' => "Impussìbiri ischribì o crià la carthella timpurània pa ''math''",
-'math_bad_output' => "Impussìbiri ischribì o crià la carthella d'iscidda pa ''math''",
-'math_notexvc' => "Fattìbiri ''texvc'' mancanti; pa piazeri cunsulthà ''math/README'' pa la cunfigurazioni.",
-
# Patrolling
'markaspatrolleddiff' => 'Signa la mudìffiga cumenti verifiggadda',
'markaspatrolledtext' => 'Signa chistha pàgina cumenti verifiggadda',
@@ -1884,16 +1829,15 @@ $1",
'nextdiff' => 'Diffarènzia sighenti →',
# Media information
-'mediawarning' => "'''Attinzioni''': Chisthu file pó cuntinì còdizi marignu, chi si eseguiddu pó danniggià lu propriu sisthema infuimmatigu.",
-'imagemaxsize' => "Misura màssima di l'immàgini i'li reratibi pàgini di dischussioni:",
-'thumbsize' => 'Mannària di li miniadduri:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pàgina|pàgini}}',
-'file-info' => 'Misuri: $1, tipu MIME: $2',
-'file-info-size' => '$1 × $2 punti, misuri: $3, tipu MIME: $4',
-'file-nohires' => '<small>Nò so dipunìbiri versioni a risoruzioni maggiori.</small>',
-'svg-long-desc' => 'file in fuimmaddu SVG, misuri nominari $1 × $2 punti, misuri di lu file: $3',
-'show-big-image' => 'Versioni a altha risoruzioni',
-'show-big-image-thumb' => "<small>Misuri di chisth'antiprimma: $1 × $2 punti</small>",
+'mediawarning' => "'''Attinzioni''': Chisthu file pó cuntinì còdizi marignu, chi si eseguiddu pó danniggià lu propriu sisthema infuimmatigu.",
+'imagemaxsize' => "Misura màssima di l'immàgini i'li reratibi pàgini di dischussioni:",
+'thumbsize' => 'Mannària di li miniadduri:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pàgina|pàgini}}',
+'file-info' => 'Misuri: $1, tipu MIME: $2',
+'file-info-size' => '$1 × $2 punti, misuri: $3, tipu MIME: $4',
+'file-nohires' => '<small>Nò so dipunìbiri versioni a risoruzioni maggiori.</small>',
+'svg-long-desc' => 'file in fuimmaddu SVG, misuri nominari $1 × $2 punti, misuri di lu file: $3',
+'show-big-image' => 'Versioni a altha risoruzioni',
# Special:NewFiles
'newimages' => 'Galleria di li file nobi',
@@ -1921,7 +1865,13 @@ So cunsidaraddi soru l'erenchi puntaddi (righi ch'ischumenzani cu' lu caràtteri
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Larghèzia',
@@ -1987,14 +1937,12 @@ So cunsidaraddi soru l'erenchi puntaddi (righi ch'ischumenzani cu' lu caràtteri
# External editor support
'edit-externally' => 'Mudìfigga chistu file usendi un prugramma esthernu',
-'edit-externally-help' => "Pa maggiori infuimmazioni cunsulthà l'[http://www.mediawiki.org/wiki/Manual:External_editors isthruzioni] (in ingresu).",
+'edit-externally-help' => "Pa maggiori infuimmazioni cunsulthà l'[//www.mediawiki.org/wiki/Manual:External_editors isthruzioni] (in ingresu).",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tutti',
-'imagelistall' => 'tutti',
-'watchlistall2' => 'tutti',
-'namespacesall' => 'Tutti',
-'monthsall' => 'tutti',
+'watchlistall2' => 'tutti',
+'namespacesall' => 'Tutti',
+'monthsall' => 'tutti',
# E-mail address confirmation
'confirmemail' => 'Cunfèimma indirizzu di postha erettrònica',
@@ -2086,12 +2034,12 @@ Pa piazeri, cunfèimma chi vòi ricrià avveru chistha pàgina.",
'watchlistedit-noitems' => "La listha di l'abbaidaddi ippiziari è biodda.",
'watchlistedit-normal-title' => 'Mudìfigga abbaidaddi ippiziari',
'watchlistedit-normal-legend' => "Eliminiazioni di pàgini da l'abbaidaddi ippiziari",
-'watchlistedit-normal-explain' => "Inogghi so erencaddi tutti li pàgini abbaidaddi. Pà canzellà una o più pàgini di la listha, isciubarà li caselli reratibi e fà clic i' lu buttoni '''Elimina pàgini''' in giossu a l'erencu. Pói puru [[Special:Watchlist/raw|mudìfiggalla in fuimmaddu testhu]].",
+'watchlistedit-normal-explain' => "Inogghi so erencaddi tutti li pàgini abbaidaddi. Pà canzellà una o più pàgini di la listha, isciubarà li caselli reratibi e fà clic i' lu buttoni '''Elimina pàgini''' in giossu a l'erencu. Pói puru [[Special:EditWatchlist/raw|mudìfiggalla in fuimmaddu testhu]].",
'watchlistedit-normal-submit' => 'Elimina pàgini',
'watchlistedit-normal-done' => "Da la listha di l'abbaidaddi ippiziari {{PLURAL:$1|è isthadda eliminadda una pàgina|so isthaddi eliminaddi $1 pàgini}}:",
'watchlistedit-raw-title' => "Mudìfigga l'abbaidaddi ippiziari in fuimmaddu testhu",
'watchlistedit-raw-legend' => 'Mudìfigga testhuari abbaidaddi ippiziari',
-'watchlistedit-raw-explain' => "Inogghi so erencaddi tutti li pàgini abbaidaddi. Pà mudìfiggà la listha aggiugnì o buggà li tìturi, unu pa riga. Cand'ài finiddu, fa clic i' '''Aggiorna la listha''' in giossu a l'erencu. Pói puru [[Special:Watchlist/edit|mudìfiggà la listha cu' l'interfàccia standard]].",
+'watchlistedit-raw-explain' => "Inogghi so erencaddi tutti li pàgini abbaidaddi. Pà mudìfiggà la listha aggiugnì o buggà li tìturi, unu pa riga. Cand'ài finiddu, fa clic i' '''Aggiorna la listha''' in giossu a l'erencu. Pói puru [[Special:EditWatchlist|mudìfiggà la listha cu' l'interfàccia standard]].",
'watchlistedit-raw-titles' => 'Pàgini:',
'watchlistedit-raw-submit' => 'Aggiorna la listha',
'watchlistedit-raw-done' => "La listha di l'abbaidaddi ippiziari è isthadda aggiornadda.",
diff --git a/languages/messages/MessagesSe.php b/languages/messages/MessagesSe.php
index 97fed16d..92ac03a7 100644
--- a/languages/messages/MessagesSe.php
+++ b/languages/messages/MessagesSe.php
@@ -14,6 +14,8 @@
* @author לערי ריינה×רט
*/
+$linkTrail = '/^(:?[a-zàáâçÄʒǯđðéèêëǧǥȟíìîïıǩŋñóòôõßšŧúùûýÿüžþæøåäö]+)(.*)$/sDu';
+
$messages = array(
# User preference toggles
'tog-underline' => 'Liŋkkaid vuolláisárgun',
@@ -146,7 +148,6 @@ $messages = array(
'history' => 'Historjá',
'history_short' => 'Historjá',
'updatedmarker' => 'beaiváduvvon du ovddit fitnama maŋŋá',
-'info_short' => 'Diđoštus',
'printableversion' => 'Prentenveršuvdna',
'permalink' => 'Bissovaš liŋka',
'print' => 'Prente',
@@ -300,7 +301,7 @@ Du geavaheaddjidovddaldat lea dál anus.
'loginsuccesstitle' => 'SisaÄállin lihkosmuvai',
'loginsuccess' => 'Leat Äálligoahtan sisa geavaheaddjidovddaldagain $1.',
'nosuchuser' => 'Geavaheaddjidovddaldat â€$1†ii dihtto. Dárkis Äálletgo dovddaldaga riekta dahke geavat skovi vuolábealde ja ráhkat oÄ‘Ä‘a geavaheaddjidovddaldaga.',
-'nosuchusershort' => 'Geavaheaddjidovddaldat â€<nowiki>$1</nowiki>†ii dihtto. Čálletgo dovddaldaga riekta?',
+'nosuchusershort' => 'Geavaheaddjidovddaldat â€$1†ii dihtto. Čálletgo dovddaldaga riekta?',
'nouserspecified' => 'Geavaheaddjidovddaldat ii leat meroštallojuvvon.',
'wrongpassword' => 'Suollemassátni, man Äállet, ii leat riekta. Leage buorre ja iska oÄ‘Ä‘asit.',
'wrongpasswordempty' => 'It Äállán suollemassáni. Iska oÄ‘Ä‘asit.',
@@ -324,7 +325,7 @@ Du geavaheaddjidovddaldat lea dál anus.
'accountcreatedtext' => 'Geavaheaddji $1 geavaheaddjidovddaldat ráhkaduvvui.',
'loginlanguagelabel' => 'Giella: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Suollemassáni gurren',
'resetpass_announce' => 'Čálligohtet sisa e-poasttain sáddejuvvon suollemassánin. Fertet addit ođđa suollemassáni dasa:',
'resetpass_text' => '<!-- Lasit dasa teavstta -->',
@@ -348,7 +349,6 @@ Du geavaheaddjidovddaldat lea dál anus.
'extlink_tip' => 'Wiki olggobeal liŋka (muite http:// ovddas)',
'headline_sample' => 'BájilÄálateaksta',
'headline_tip' => 'BajilÄála',
-'math_sample' => 'Lasit dasa formula',
'nowiki_sample' => 'Lasit rievdatkeahtes teavstta dasa',
'nowiki_tip' => 'Teaksta, man wiki ii rievdda',
'image_sample' => 'Ovdamearka.jpg',
@@ -501,7 +501,6 @@ $1 {{int:pipe-separator}} $2',
'changepassword' => 'Suollemassáni molson',
'prefs-skin' => 'Olggosoaidnu',
'skin-preview' => 'ovdalgihtii geahÄÄan...',
-'prefs-math' => 'Matematihkká',
'datedefault' => 'Eai válljemat',
'prefs-datetime' => 'Ãigi ja beaivemearri',
'prefs-personal' => 'Geavaheaddjidieđut',
@@ -516,8 +515,6 @@ $1 {{int:pipe-separator}} $2',
'columns' => 'Kolumnat',
'searchresultshead' => 'Ohcan',
'resultsperpage' => 'Bohtosa juohke siiddus',
-'contextlines' => 'Bohtosa gurgadasaid mearri',
-'contextchars' => 'Sisdoalu mearkkaid mearri juohke gurgadasas',
'recentchangescount' => 'Siiddui mearri varas rievdadusain',
'savedprefs' => 'Du ásahusid vurken lihkosmuvai.',
'timezonelegend' => 'Ãigeavádat',
@@ -853,9 +850,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlistanontext' => 'Don fertet $1, jus hálidat geavahit Äuovvunlisttu.',
'watchnologin' => 'It leat Äálligoahtán sisa',
'watchnologintext' => 'Don fertet [[Special:UserLogin|Äálligoahtit sisa]], jus hálidat geavahit du Äuovvunlisttu.',
-'addedwatch' => 'Lasihuvvon Äuovvunlistui',
'addedwatchtext' => "Siidu '''<nowiki>$1</nowiki>''' lea lasihuvvon [[Special:Watchlist|Äuovvunlisttui]]. BoahtevuoÄ‘as siiddu ja siiddu ságastallansiiddu rievdadusat almmuhuvvo dáppe. Siidu lea '''buidon''' [[Special:RecentChanges|varas rievdadusat -listtus]], vai fuomaÅ¡at dan álkit. Jus hálidat heaiti Äuovvumis dan siiddu, deaddil liÅ‹kka ''heaite Äuovvumis'' siiddu ravddas.",
-'removedwatch' => 'Sihkojuvvon Äuovvunlisttus',
'removedwatchtext' => "Siidu '''[[:$1]]''' lea sihkojuvvon du Äuovvunlisttus.",
'watch' => 'ÄŒuovo',
'watchthispage' => 'Čuovo dán siiddu',
@@ -897,7 +892,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'historywarning' => 'Siiddu, man aiggot sihkut, lea rievdaduvvon dávjit go oktii:',
'confirmdeletetext' => 'Leat sihkumin siiddu dahje fiilla ja buot dan historjjá. Ãdde dagu váikkuhsaid ja sihko {{GRAMMAR:genitive|{{SITENAME}}}} [[{{MediaWiki:Policy-url}}|geavahaid]] mielde.',
'actioncomplete' => 'Doaibma lea dahkkon',
-'deletedtext' => '"<nowiki>$1</nowiki>" lea sihkojuvvon.
+'deletedtext' => '"$1" lea sihkojuvvon.
Siiddus $2 lea listu maŋimus sihkomiin.',
'deletedarticle' => 'sihkoi siiddu [[$1]]',
'dellogpage' => 'Sihkkunlogga',
@@ -1000,13 +995,12 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
'whatlinkshere-links' => 'liŋkkat',
# Block/unblock
-'blockip' => 'Eastte rievdadusaid',
-'ipaddress' => 'IP-Äujuhus',
-'ipadressorusername' => 'IP-Äujuhus dahje geavaheaddjidovddaldat',
-'ipbexpiry' => 'Guhkkodat',
-'ipbreason' => 'Sivva',
-'ipbreasonotherlist' => 'Eará sivva',
-'ipbreason-dropdown' => '*Dábálas cakkastallansivat
+'blockip' => 'Eastte rievdadusaid',
+'ipadressorusername' => 'IP-Äujuhus dahje geavaheaddjidovddaldat',
+'ipbexpiry' => 'Guhkkodat',
+'ipbreason' => 'Sivva',
+'ipbreasonotherlist' => 'Eará sivva',
+'ipbreason-dropdown' => '*Dábálas cakkastallansivat
** Boasto dieđuid lasiheapmi
** Sisdoalu sihkkun
** Reklámaliŋkkaid lasiheapmi
@@ -1014,27 +1008,25 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
** Hehtten
** Maŋgga geavaheaddjidovddaldaga geaveaheapmi boastut
** Fasttes geavaheaddjidovddaldat',
-'ipbanononly' => 'Easte beare anonyma geavaheddjiid',
-'ipbcreateaccount' => 'Eastte dovddaldagaid ráhkadeami',
-'ipbemailban' => 'Eastte geavaheaddji sáddemis e-poastta',
-'ipbenableautoblock' => 'Eastte maÅ‹imus IP-Äujuhus, mas geavaheaddji lea ráhkadan rievdadusaid, ja maid daid Äujuhusaid, main son vel iska rievdadit.',
-'ipbsubmit' => 'Eastte',
-'ipbother' => 'Eará áigi',
-'ipboptions' => '2 diimma:2 hours,1 beaivi:1 day,3 beaivve:3 days,1 vahkku:1 week,2 vahkku:2 weeks,1 mánotbádji:1 month,3 mánotbaji:3 months,6 mánotbaji:6 months,1 jahki:1 year,bissovaš:infinite',
-'ipbotheroption' => 'Eará',
-'ipbotherreason' => 'Eará sivva',
-'badipaddress' => 'IP-Äujuhus lea boastut.',
-'blockipsuccesssub' => 'Easttan lihkosmuvai',
-'blockipsuccesstext' => "Geavaheaddji dahje IP-Äujuhus '''$1''' lea eston.<br />Dálá easttut gávdnot [[Special:IPBlockList|easttolisttus]].",
-'ipb-edit-dropdown' => 'Rievdat siivaid',
-'ipb-unblock-addr' => 'Sihko geavaheaddji $1 estema',
-'ipb-unblock' => 'Sihko geavaheaddji dahje IP-Äujuhusa rievdadaneasttu',
-'ipblocklist-username' => 'Geavaheaddjidovddaldat dahje IP-Äujuhus:',
-'ipblocklist-submit' => 'Oza',
-'infiniteblock' => 'bissovaÄÄat',
-'expiringblock' => 'boarásnuvvá $1 $2',
-'contribslink' => 'rievdadusat',
-'proxyblocksuccess' => 'Gárvvis.',
+'ipbcreateaccount' => 'Eastte dovddaldagaid ráhkadeami',
+'ipbemailban' => 'Eastte geavaheaddji sáddemis e-poastta',
+'ipbenableautoblock' => 'Eastte maÅ‹imus IP-Äujuhus, mas geavaheaddji lea ráhkadan rievdadusaid, ja maid daid Äujuhusaid, main son vel iska rievdadit.',
+'ipbsubmit' => 'Eastte',
+'ipbother' => 'Eará áigi',
+'ipboptions' => '2 diimma:2 hours,1 beaivi:1 day,3 beaivve:3 days,1 vahkku:1 week,2 vahkku:2 weeks,1 mánotbádji:1 month,3 mánotbaji:3 months,6 mánotbaji:6 months,1 jahki:1 year,bissovaš:infinite',
+'ipbotheroption' => 'Eará',
+'ipbotherreason' => 'Eará sivva',
+'badipaddress' => 'IP-Äujuhus lea boastut.',
+'blockipsuccesssub' => 'Easttan lihkosmuvai',
+'blockipsuccesstext' => "Geavaheaddji dahje IP-Äujuhus '''$1''' lea eston.<br />Dálá easttut gávdnot [[Special:IPBlockList|easttolisttus]].",
+'ipb-edit-dropdown' => 'Rievdat siivaid',
+'ipb-unblock-addr' => 'Sihko geavaheaddji $1 estema',
+'ipb-unblock' => 'Sihko geavaheaddji dahje IP-Äujuhusa rievdadaneasttu',
+'ipblocklist-submit' => 'Oza',
+'infiniteblock' => 'bissovaÄÄat',
+'expiringblock' => 'boarásnuvvá $1 $2',
+'contribslink' => 'rievdadusat',
+'proxyblocksuccess' => 'Gárvvis.',
# Developer tools
'lockdb' => 'Gidde diehtovuođu',
@@ -1145,19 +1137,6 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
'siteusers' => '{{GRAMMAR:genitive|{{SITENAME}}}} geavaheaddji(t) $1',
'creditspage' => 'Siiddu dahkkit',
-# Info page
-'infosubtitle' => 'Dieđut siiddus',
-'numedits' => 'Siiddu rievdadusaid mearri: $1',
-'numtalkedits' => 'Ságastallansiiddu rievdadusaid mearri: $1',
-'numwatchers' => 'ÄŒuovvujeddjiid mearri: $1',
-
-# Math options
-'mw_math_png' => 'Čájet álo PNG:n',
-
-# Math errors
-'math_unknown_error' => 'Dovdameahtun feaila',
-'math_unknown_function' => 'Dovdameahtun funkšuvdna',
-
# Patrolling
'markaspatrolleddiff' => 'Merke dárkistuvvon',
'markaspatrolledtext' => 'Merke, ahte rievdadus lea dárkistuvvon',
@@ -1237,11 +1216,9 @@ Siiddus $2 lea listu maŋimus sihkomiin.',
'exif-gpsspeed-n' => 'Äuolmma',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'buot',
-'imagelistall' => 'buot',
-'watchlistall2' => ', olles historjjá',
-'namespacesall' => 'buot',
-'monthsall' => 'buot',
+'watchlistall2' => ', olles historjjá',
+'namespacesall' => 'buot',
+'monthsall' => 'buot',
# E-mail address confirmation
'confirmemail' => 'Sihkaraste e-poastaÄujuhusa',
diff --git a/languages/messages/MessagesSei.php b/languages/messages/MessagesSei.php
index c716fb09..35b454b8 100644
--- a/languages/messages/MessagesSei.php
+++ b/languages/messages/MessagesSei.php
@@ -118,8 +118,6 @@ $messages = array(
'category-empty' => "''Cayliib danjobam nihíl''",
'listingcontinuesabbrev' => 'korb.',
-'mainpagetext' => "'''MediaWiki coccebj installöx successua zo mii.'''",
-
'about' => 'Miixaz',
'article' => 'Artículo',
'newwindow' => '(dansinám precquen)',
@@ -153,7 +151,6 @@ $messages = array(
'history' => 'Historiám páhina',
'history_short' => 'Historiám',
'updatedmarker' => 'Par hiineditar visitua ciónsam',
-'info_short' => 'Informacion',
'printableversion' => 'Cabjöxino printino',
'permalink' => 'Link permanentöj',
'print' => 'Printom',
@@ -316,7 +313,6 @@ Query: $2',
'cascadeprotected' => 'Jan páhina coccebj protectöxde ticpatlöx, zo coccebj cascadande jan {{PLURAL:$1|páhina|páhinám}}, jan coccebj protëctox cascadanöx opcion zo mii:
$2',
'namespaceprotected' => "Me necoccebj permiccion ticpatlöx páhinám '''$1''' ipartuatl zo iti.",
-'customcssjsprotected' => 'Me necoccebj permiccion ticpatlöx jan páhina, zo coccebj diijömde caitom quáatlaác.',
'ns-specialprotected' => 'Páhinámde {{ns:special}} zo iti neticpatlöx.',
# Login and logout pages
@@ -355,7 +351,7 @@ Mecaitom coccebj creatöx. Quiix hequáatlaácde {{SITENAME}} pos-poop.",
'loginsuccesstitle' => 'Caápo tampua',
'loginsuccess' => "'''Me coccebj caápo {{SITENAME}} itide \"\$1\".'''",
'nosuchuser' => 'Jan caitom necoccebj zo, ID "$1". Cohuatlöx mecuáxiit jöx creatom huncaitom.',
-'nosuchusershort' => 'Jan caitom necoccebj zo, ID "<nowiki>$1</nowiki>". Cohuatlöx mecuáxiit.',
+'nosuchusershort' => 'Jan caitom necoccebj zo, ID "$1". Cohuatlöx mecuáxiit.',
'nouserspecified' => 'Me coccebj IDde caitom caápo.',
'wrongpassword' => 'Römjde quimx canj. Vanquimx canj.',
'wrongpasswordempty' => 'Quimx canj blankanj. Vanquimx canj.',
@@ -386,7 +382,7 @@ confirmom account zo coccebj de'me.",
'accountcreatedtext' => 'Jönneram $1 mii puo.',
'loginlanguagelabel' => 'Itom: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => "Account quimx canj'reset",
'resetpass_announce' => "Me caápo code temp e-iitomöx mii. Fini caápo, me reset' hunquimx canj cmaadexepe:",
'resetpass_header' => "Reset'quimx canj",
@@ -408,8 +404,6 @@ confirmom account zo coccebj de'me.",
'extlink_tip' => 'Link extern (¡hajbazxo http:// ö!)',
'headline_sample' => 'Text corridor',
'headline_tip' => 'Text corridor 2',
-'math_sample' => 'Heformula cuerte damir',
-'math_tip' => 'Formula mathematatl (LaTeX)',
'nowiki_sample' => 'Neformattám cuerte damir',
'nowiki_tip' => 'Neformatöxde wiki',
'image_sample' => 'Cuáxiit.jpg',
@@ -611,7 +605,6 @@ Informacion: (curt) = quiíxde vercion currentua,
'changepassword' => "Reset'quimx canj",
'prefs-skin' => 'Zuláugaum',
'skin-preview' => 'Cuáxiit',
-'prefs-math' => 'HTML-cuat',
'datedefault' => 'Diiquáatlaac',
'prefs-datetime' => 'Datum ö xepe',
'prefs-personal' => 'Caitom profile',
@@ -891,8 +884,6 @@ iitom e-iitomde diijömde caitóm.',
'nowatchlist' => 'Hecoccebj 0 itémii helistade cáminot iti.',
'watchnologin' => 'Necaápo',
'watchnologintext' => 'Zo coccebj Neces [[Special:UserLogin|caápo]] ticpatlöx helistade cáminot.',
-'addedwatch' => 'Plusöxaj listade cáminot',
-'removedwatch' => 'Delatajde he listade cáminot',
'removedwatchtext' => 'Páhina zo "[[:$1]]" coccebj delataj me listade cáminot.',
'watch' => 'Cáminot',
'watchthispage' => 'Cáminot jan páhina',
@@ -946,7 +937,6 @@ iitom e-iitomde diijömde caitóm.',
# Block/unblock
'blockip' => 'Block caitom',
-'ipaddress' => 'Addressade IP:',
'ipadressorusername' => 'Addressade IP jöx caitom ID:',
'ipbreason' => 'Ra:',
'ipbreasonotherlist' => "Ra pac'de",
@@ -961,7 +951,6 @@ iitom e-iitomde diijömde caitóm.',
'unblockip' => 'Diiblockom caitom',
'ipusubmit' => 'Diiblockom jan adressa',
'ipblocklist-legend' => 'Yahöx caimát blockát pac',
-'ipblocklist-username' => 'Caitom ID jöx addressade IP:',
'ipblocklist-submit' => 'Yahöx',
'anononlyblock' => 'Anonytiit',
'emailblock' => "e-iitom c'blockan",
@@ -1041,15 +1030,6 @@ iitom e-iitomde diijömde caitóm.',
# Spam protection
'spambot_username' => 'MediaWiki nespam',
-# Info page
-'infosubtitle' => 'Informacionde páhina',
-
-# Math errors
-'math_unknown_error' => 'römj ác',
-'math_unknown_function' => 'functión ác',
-'math_lexing_error' => 'römjde lexám',
-'math_syntax_error' => 'römjde syntáx',
-
# Media information
'widthheightpage' => '$1×$2, $3 páhinám',
@@ -1069,11 +1049,9 @@ iitom e-iitomde diijömde caitóm.',
'exif-focalplaneresolutionunit-2' => 'inchám',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'jöxdem',
-'imagelistall' => 'jöxdem',
-'watchlistall2' => 'jöxdem',
-'namespacesall' => 'jöxdem',
-'monthsall' => 'jöxdem',
+'watchlistall2' => 'jöxdem',
+'namespacesall' => 'jöxdem',
+'monthsall' => 'jöxdem',
# action=purge
'confirm_purge_button' => 'ton',
diff --git a/languages/messages/MessagesSg.php b/languages/messages/MessagesSg.php
index 2c845151..4070b037 100644
--- a/languages/messages/MessagesSg.php
+++ b/languages/messages/MessagesSg.php
@@ -120,6 +120,7 @@ $messages = array(
'listingcontinuesabbrev' => '(pekô nî)',
'index-category' => 'Âlêmbëtï sô akpo nî',
'noindex-category' => 'Âlêmbëtï sô a kpö nî pëpe',
+'broken-file-category' => 'Âlêmbëtï sô ayeke na âfängö gbê tî kuru',
'about' => 'Na ndö tî...',
'article' => 'Lêmbëtï tî münä',
@@ -159,36 +160,38 @@ $messages = array(
'namespaces' => 'Pöpö tî âïrï',
'variants' => 'Âmbênî marä nî',
-'errorpagetitle' => 'Yûndo',
-'returnto' => 'Kîri na ndö tî lêmbëtï $1.',
-'tagline' => 'Alöndö na {{SITENAME}}',
-'help' => 'Za mbï',
-'search' => 'Gi',
-'searchbutton' => 'Gi',
-'go' => 'Bâa',
-'searcharticle' => 'Dîko',
-'history' => 'Mbai tî lêmbëtï nî',
-'history_short' => 'mbai',
-'updatedmarker' => 'afinima ngbêreyê sô mbï sï daä sô',
-'printableversion' => 'Mbâlê tî pete na sasango',
-'permalink' => 'Kpengü gbê tî lêmbëtï nî',
-'print' => 'Pete na sasango',
-'edit' => 'Sepe',
-'create' => 'Seka',
-'editthispage' => 'Sepe lêmbëtï sô',
-'create-this-page' => 'Seka lêmbëtï sô',
-'delete' => 'Lungûla',
-'deletethispage' => 'Lungûla lêmbëtï sô',
-'undelete_short' => 'Kîri na {{PLURAL:$1|sepesû ôko|âsepesû $1}}',
-'talkpagelinktext' => 'tene tënë',
-'personaltools' => 'Âyêkua tî wanî',
-'talk' => 'Lisoro',
-'views' => 'Tändä',
-'toolbox' => 'Gbâyêkua',
-'otherlanguages' => 'Na mbênî âyângâ',
-'jumpto' => 'Gue na:',
-'jumptonavigation' => 'Simba',
-'jumptosearch' => 'Gi',
+'errorpagetitle' => 'Yûndo',
+'returnto' => 'Kîri na ndö tî lêmbëtï $1.',
+'tagline' => 'Alöndö na {{SITENAME}}',
+'help' => 'Za mbï',
+'search' => 'Gi',
+'searchbutton' => 'Gi',
+'go' => 'Bâa',
+'searcharticle' => 'Dîko',
+'history' => 'Mbai tî lêmbëtï nî',
+'history_short' => 'mbai',
+'updatedmarker' => 'afinima ngbêreyê sô mbï sï daä sô',
+'printableversion' => 'Mbâlê tî pete na sasango',
+'permalink' => 'Kpengü gbê tî lêmbëtï nî',
+'print' => 'Pete na sasango',
+'view' => 'Tändä',
+'edit' => 'Sepe',
+'create' => 'Seka',
+'editthispage' => 'Sepe lêmbëtï sô',
+'create-this-page' => 'Seka lêmbëtï sô',
+'delete' => 'Lungûla',
+'deletethispage' => 'Lungûla lêmbëtï sô',
+'undelete_short' => 'Kîri na {{PLURAL:$1|sepesû ôko|âsepesû $1}}',
+'viewdeleted_short' => 'Bâa {{PLURAL:$1|sepsesû| âsepesû $1}} sô awoza nî awe sô.',
+'talkpagelinktext' => 'tene tënë',
+'personaltools' => 'Âyêkua tî wanî',
+'talk' => 'Lisoro',
+'views' => 'Tändä',
+'toolbox' => 'Gbâyêkua',
+'otherlanguages' => 'Na mbênî âyângâ',
+'jumpto' => 'Gue na:',
+'jumptonavigation' => 'Simba',
+'jumptosearch' => 'Gi',
# 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' => 'Na ndö tî {{SITENAME}}',
diff --git a/languages/messages/MessagesSgs.php b/languages/messages/MessagesSgs.php
index b2bff279..7ee70aa8 100644
--- a/languages/messages/MessagesSgs.php
+++ b/languages/messages/MessagesSgs.php
@@ -220,7 +220,6 @@ $messages = array(
'history' => 'PoslapÄ— istuorÄ—jÄ—',
'history_short' => 'IstuorÄ—jÄ—',
'updatedmarker' => 'atnaujėnta nu paskotėnė mona apsėlonkīma',
-'info_short' => 'InfuormacÄ—jÄ—',
'printableversion' => 'VersÄ—jÄ— spausdintÄ—',
'permalink' => 'Nulatėnė nūruoda',
'print' => 'SpausdÄ—ntÄ—',
@@ -367,7 +366,7 @@ Ožklausėms: $2',
'protectedpagetext' => 'Šėts poslapis īr ožrakints, saugont anū nū redagavėma.',
'viewsourcetext' => 'Tomsta galÄ—t veizietÄ— Ä—r kopÄ—joutÄ— poslapÄ— kuoda:',
'protectedinterface' => 'Šėtom poslapi īr pruogramėnės ironguos sasajuos teksts katros īr apsauguots, kū neprietelē anū nasogadėntu.',
-'editinginterface' => "'''DiemesÄ—:''' Tamsta keitat poslapi, katros Ä«r nauduojams programÄ—nÄ—s irongas sÅsajÄ—s tekstÄ—. PakeitÄ—mÄ tamÄ— poslapÅ« tÄ“puogi pakeis nauduotuojÄ— sÅsajÄ—s Ä—Å¡ruoda Ä— kÄ—tÄ—ims nauduotujams. JÄ“go nuorÄ—t pargoldÄ«tÄ—, siÅ«luom pasÄ—nauduotÄ— [http://translatewiki.net/wiki/Main_Page?setlang=bat-smg „translatewiki.net“], „MediaWiki“ lokalÄ—zacÄ—jÄ—s pruojÄ—ktu.",
+'editinginterface' => "'''DiemesÄ—:''' Tamsta keitat poslapi, katros Ä«r nauduojams programÄ—nÄ—s irongas sÅsajÄ—s tekstÄ—. PakeitÄ—mÄ tamÄ— poslapÅ« tÄ“puogi pakeis nauduotuojÄ— sÅsajÄ—s Ä—Å¡ruoda Ä— kÄ—tÄ—ims nauduotujams. JÄ“go nuorÄ—t pargoldÄ«tÄ—, siÅ«luom pasÄ—nauduotÄ— [//translatewiki.net/wiki/Main_Page?setlang=bat-smg „translatewiki.net“], „MediaWiki“ lokalÄ—zacÄ—jÄ—s pruojÄ—ktu.",
'sqlhidden' => '(SQL ožklausa pakavuota)',
'namespaceprotected' => "Tamsta netorėt teisiu keistė poslapiu '''$1''' srėtī.",
'ns-specialprotected' => 'Specēlė̅ jė poslapē negal būtė keitamė.',
@@ -397,6 +396,7 @@ Tamstas paskīra bova sokorta. Neožmėrškėt pakeistė sava {{SITENAME}} nusta
'createaccount' => 'Sokortė paskīra',
'gotaccount' => "Jau torėt paskīra? '''$1'''.",
'gotaccountlink' => 'PrisÄ—jonkÄ—t',
+'userlogin-resetlink' => 'Ožmiršat sava prisėjongėma doumenis?',
'badretype' => 'Ivestė slaptažuodē nesotamp.',
'userexists' => 'Irašīts nauduotuojė vards jau īr nauduojams.
Prašuom pasėrėnktė kėtuoki varda.',
@@ -442,7 +442,7 @@ nebus siontamas ni vÄ—inam žemiau Ä—Å¡vardÄ—ntam puoslaugiÅ.',
'createaccount-title' => '{{SITENAME}} paskīruos kūrėms',
'loginlanguagelabel' => 'Kalba: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Keistė slaptažuodi',
'resetpass_header' => 'Keistė paskīruos slaptažuodi',
'oldpassword' => 'Sens slaptažuodis:',
@@ -463,8 +463,6 @@ nebus siontamas ni vÄ—inam žemiau Ä—Å¡vardÄ—ntam puoslaugiÅ.',
'extlink_tip' => 'Ėšuorėnė nūruoda (nepamėrškėt http:// priraša)',
'headline_sample' => 'Skīrė pavadėnėms',
'headline_tip' => 'Ontra līgė skīrė pavadėnėms',
-'math_sample' => 'IveskÄ—t fuormolÄ—',
-'math_tip' => 'MatematinÄ— fuormolÄ— (LaTeX fuormato)',
'nowiki_sample' => 'IterpkÄ—t nefuormouta teksta ÄÄ—',
'nowiki_tip' => 'Ä–gnoroutÄ— wiki fuormata',
'image_sample' => 'Pavīzdīs.jpg',
@@ -543,7 +541,7 @@ aba [{{fullurl:{{FULLPAGENAME}}|action=edit}} keistÄ— ta poslapi]</span>.',
'noarticletext-nopermission' => 'Tuo Äiesu tamÄ— poslapÄ« nier juokÄ— teksta.
Tamsta galėt [[Special:Search/{{PAGENAME}}|ėiškuotė šėta poslapė pavadėnėma]] kėtūs poslapiūs,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ėiškuotė sosėjosiu regėstru]</span>.',
-'userpage-userdoesnotexist' => 'Nauduotuojė paskīra „$1“ nier ožregėstrouta. Prašuom patikrėntė, a Tamsta nuorėt kortė/keistė ta poslapi.',
+'userpage-userdoesnotexist' => 'Nauduotuojė paskīra „<nowiki>$1</nowiki>“ nier ožregėstrouta. Prašuom patikrėntė, a Tamsta nuorėt kortė/keistė ta poslapi.',
'clearyourcache' => "'''DiemesÄ—:''' Ä—Å¡sauguojus TamstÄ gal prireiktÄ— Ä—Å¡valÄ«tÄ— Tamstas narÅ¡Ä«klÄ—s rÄ—nktovÄ—, kÅ« paveizÄ—tomÄ—t pakeitÄ—mus. '''Mozilla / Safari / Konqueror:''' laikÄ«dami ''Shift'' pasÄ—rinkÄ—t ''AtsiÅstÄ— Ä—Å¡ nauja'', a paspauskÄ—t ''Ctrl-Shift-R'' (sÄ—stemuo Apple Mac ''Cmd-Shift-R''); '''IE:''' laikÄ«damÄ— ''Ctrl'' paspauskÄ—t ''AtnaujÄ—ntÄ—'', o paspauskÄ—t ''Ctrl-F5''; '''Konqueror:''' paprastiausÄ“ paspauskÄ—t ''PerkrautÄ—'' mÄ«gtoka, o paspauskÄ—t ''F5''; '''Opera''' nauduotuojam gal prireiktÄ— pÄ—lnÄ Ä—Å¡valÄ«tÄ— anÅ« rÄ—nktovÄ— ''RakondÄ→NustatÄ«mÄ''.",
'usercssyoucanpreview' => "'''Patarėms:''' Nauduokit „Ruodītė parvaiza“ mīgtoka, kū ėšmiegintomiet sava naujaji CSS priš ėšsaugont.",
'userjsyoucanpreview' => "'''Patarėms:''' Nauduokit „Ruodītė parvaiza“ mīgtoka, kū ėšmiegintomiet sava naujaji JS priš ėšsaugont.",
@@ -757,7 +755,6 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
'changepassword' => 'Pakeistė slaptažuodė',
'prefs-skin' => 'Ä–Å¡ruoda',
'skin-preview' => 'Parveiza',
-'prefs-math' => 'MatematÄ—ka',
'datedefault' => 'JuokÄ— pasÄ—rÄ—nkÄ—ma',
'prefs-datetime' => 'Data Ä— Äiesos',
'prefs-personal' => 'NauduotuojÄ— pruopilis',
@@ -778,8 +775,6 @@ Kėtė admėnėstratuorē šėtom pruojekte vėsdar galės pasėiktė pasliepta
'columns' => 'Štolpalē:',
'searchresultshead' => 'PaÄ—iÅ¡kuos nostatÄ«mÄ',
'resultsperpage' => 'Rezoltatu poslapie:',
-'contextlines' => 'Eilotiu rezoltatÄ—:',
-'contextchars' => 'Konteksta sÄ—mbuoliu eilotie:',
'stub-threshold' => 'Minimums <a href="#" class="stub">nabÄ—ngta poslapÄ—</a> fuormatavÄ—mÅ:',
'recentchangesdays' => 'Ruodomas dÄ—inas vielÄ«bÅ«ju pakeitÄ—mu sÄraÅ¡Ä—:',
'recentchangesdays-max' => '(daugiausē $1 {{PLURAL:$1|dėina|dėinū|dėinas}})',
@@ -967,10 +962,6 @@ Prašuom ėšsėrėnktė kėta varda.",
'destfilename' => 'Nuorims faila pavadinims',
'upload-maxfilesize' => 'DÄ—dliausias faila dÄ—doms: $1',
'watchthisupload' => 'KeravuotÄ— Å¡Ä—ta poslapÄ—',
-'upload-wasdeleted' => "'''ParspiejÄ—ms: Tamsta ikeliat faila, katros unkstiau bova Ä—Å¡trÄ—nts.'''
-
-Tamsta torietomiet nusprēstė, a īr naudėnga tuoliau ikeldinietė ta faila.
-Tuo faila pašalinėma istuorėjė īr pateikta dielē patuogoma:",
'upload-success-subj' => 'Ikelt siekmÄ—ngÄ',
'upload-proto-error' => 'NateisÄ—ngs protuokols',
@@ -1251,12 +1242,10 @@ kÅ« siÅstomiet el. gruomatas kÄ—tÄ—m nauduotuojam.',
'watchlistanontext' => 'PraÅ¡uom $1, ka parveizietomÄ—t a pakeistomiet elementus sava keravuojamu sÄraÅ¡Ä—.',
'watchnologin' => 'NeprisÄ—jongÄ—s',
'watchnologintext' => 'TamstÄ rÄ“k bÅ«tÄ— [[Special:UserLogin|prisÄ—jongosiam]], ka pakeistomiet sava keravuojamu sÄraÅ¡a.',
-'addedwatch' => 'Pridieta pri keravuojamu',
'addedwatchtext' => "Poslapis \"[[\$1]]\" idiets i [[Special:Watchlist|keravuojamu sÄraÅ¡a]].
BÅ«santÄ«s poslapÄ— Ä—r atÄ—tinkama aptarÄ—ma poslapÄ— pakeitÄ—mÄ bus paruoduomÄ— keravuojamu poslapiu sÄraÅ¡Ä—,
tÄ“puogi bus '''parÄ«Å¡kintÄ—''' [[Special:RecentChanges|vielÄ«bÅ«ju pakeitÄ—mu sÄraÅ¡Ä—]], kÅ« Ä—Å¡sÄ—skÄ—rtom Ä—Å¡ kÄ—tÅ« straipsniu.
Jēgo bikumet ožsėnuorietomiet liautėis keravuotė straipsnė, spauskat \"nebkeravuotė\" vėršotėniam meniū.",
-'removedwatch' => 'Pašalėntė ėš keravuojamu',
'removedwatchtext' => 'Poslapis „[[:$1]]“ paÅ¡alÄ—nts Ä—Å¡ [[Special:Watchlist|Tamstas keravuojamu sÄraÅ¡a]].',
'watch' => 'KeravuotÄ—',
'watchthispage' => 'KeravuotÄ— Å¡Ä—ta poslapÄ—',
@@ -1482,7 +1471,6 @@ ParveizÄ—kiet [[Special:Log/delete|trÄ«nimu sÄraÅ¡a]], nuoriedamÄ— rastÄ— pasko
'blockip-legend' => 'BlokoutÄ— nauduotuoja',
'blockiptext' => 'Nauduokėt šėta fuorma noriedamė oždraustė redagavėma teises nuruodīto IP adreso a nauduotuojo. Tas torietu būt atlėikama tam, kū sostabdītomiet vandalėzma, ė vagol [[{{ns:project}}:Puolitėka|puolitėka]].
Žemiau nuruodīkėt tėkslē prižastė.',
-'ipaddress' => 'IP adresos',
'ipadressorusername' => 'IP adresos a nauduotuojÄ— vards',
'ipbexpiry' => 'GaliuojÄ—ma Äiesos',
'ipbreason' => 'Prīžastis:',
@@ -1495,7 +1483,6 @@ ParveizÄ—kiet [[Special:Log/delete|trÄ«nimu sÄraÅ¡a]], nuoriedamÄ— rastÄ— pasko
** GondinÄ—mÄ/PÄ—ktžuodiavÄ—mÄ
** Pėktnaudžiavėms paskėruomis
** NetÄ—nkams nauduotuojÄ— vards',
-'ipbanononly' => 'BlokoutÄ— tÄ—ktÄs anuonimÄ—nius nauduotuojus',
'ipbcreateaccount' => 'Nelaistė kortė paskīrū',
'ipbemailban' => 'NelaistÄ— nauduotuojÅ siÅstÄ— el. gruomatas',
'ipbenableautoblock' => 'AutuomatÄ—Å¡kÄ blokoutÄ— tuo nauduotuojÄ— paskiausÄ“ nauduota IP adresa, Ä— bikuokius paskesnius IP adresus, Ä—Å¡ katrÅ« ons miegin redagoutÄ—',
@@ -1523,9 +1510,7 @@ onkstiau ožbluokoutam IP adresÅ a nauduotuojÅ.',
'unblocked-id' => 'Bluokavėms $1 bova pašalėnts',
'ipblocklist' => 'Ožblokoutė nauduotuojē',
'ipblocklist-legend' => 'Rastė ožblokouta nauduotuoja',
-'ipblocklist-username' => 'Nauduotuos a IP adresos:',
'ipblocklist-submit' => 'Ėiškuotė',
-'blocklistline' => '$1, $2 ožblokava $3 ($4)',
'infiniteblock' => 'neribuotÄ',
'expiringblock' => 'beng galiuotÄ— $1 $2',
'anononlyblock' => 'vÄ—n anuonÄ—mÄ',
@@ -1542,7 +1527,7 @@ onkstiau ožbluokoutam IP adresÅ a nauduotuojÅ.',
'blocklogpage' => 'Ožblokavėmu istuorėjė',
'blocklogentry' => 'ožblokava „[[$1]]“, blokavÄ—ma Äiesos - $2 $3',
'reblock-logentry' => 'pakeistÄ— [[$1]] bluokavÄ—ma nustatÄ«mÄ, naus bluokavÄ—ma Äiesos Ä«r $2 $3',
-'blocklogtext' => 'Čė Ä«r nauduotuoju blokavÄ—ma Ä—r atblokavÄ—ma sÄraÅ¡os. AutuomatÄ—Å¡kÄ blokoutÄ— IP adresÄ nier Ä—Å¡vardÄ—ntÄ—. Jeigu nuorÄ—t paveizÄ—tÄ— nÅ«nÄ blokoujamus adresus, veizÄ—kÄ—t [[Special:IPBlockList|IP ožbluokavÄ—mu istuorÄ—jÄ—]].',
+'blocklogtext' => 'Čė Ä«r nauduotuoju blokavÄ—ma Ä—r atblokavÄ—ma sÄraÅ¡os. AutuomatÄ—Å¡kÄ blokoutÄ— IP adresÄ nier Ä—Å¡vardÄ—ntÄ—. Jeigu nuorÄ—t paveizÄ—tÄ— nÅ«nÄ blokoujamus adresus, veizÄ—kÄ—t [[Special:BlockList|IP ožbluokavÄ—mu istuorÄ—jÄ—]].',
'unblocklogentry' => 'atbluokava $1',
'block-log-flags-anononly' => 'vėn anonėmėnē nauduotuojē',
'block-log-flags-nocreate' => 'privėlėju kūrėms ėšjungts',
@@ -1550,8 +1535,7 @@ onkstiau ožbluokoutam IP adresÅ a nauduotuojÅ.',
'block-log-flags-noemail' => 'e-pašts bluokouts īr',
'ipb_expiry_invalid' => 'GaliuojÄ—ma Äiesos nelaistÄ—ns.',
'ipb_already_blocked' => '„$1“ jau ožblokouts',
-'ipb-needreblock' => '== Jau ožblokouts ==
-$1 jau īr ožblokouts. A nuorėt pakeistė nustatīmus?',
+'ipb-needreblock' => '$1 jau īr ožblokouts. A nuorėt pakeistė nustatīmus?',
'proxyblocksuccess' => 'Padarīt.',
# Developer tools
@@ -1715,24 +1699,6 @@ Paskėrties straipsnis „[[:$1]]“ jau īr. A nuorėt ana ėštrintė, kū gal
'spam_reverting' => 'Atkoriama i onkstesne versėje, katra nator nūruodu i $1',
'spam_blanking' => 'Vėsos versėjės toriejė nūruodu i $1. Ėšvaluoma',
-# Info page
-'numedits' => 'Pakeitimu skaitlius (straipsnis): $1',
-'numtalkedits' => 'PakeitÄ—mu skaitlius (aptarÄ—ma poslapis): $1',
-'numwatchers' => 'Keravuojantiu skaitlius: $1',
-
-# Math options
-'mw_math_png' => 'VÄ—sumet fuormuotÄ— PNG',
-'mw_math_simple' => 'HTML paprastÄs atvejÄs, kÄ—tÄ“p - PNG',
-'mw_math_html' => 'HTML kumet imanuoma, kėtēp - PNG',
-'mw_math_source' => 'Paliktė TeX fuormata (tekstinems naršīklems)',
-'mw_math_modern' => 'Rekomendounama muodernioms naršīklems',
-'mw_math_mathml' => 'MathML jēgo imanuoma (ekspermentinis)',
-
-# Math errors
-'math_failure' => 'Nepavīka apdoruotė',
-'math_unknown_error' => 'nežinuoma klaida',
-'math_unknown_function' => 'nežinuoma funkcėjė',
-
# Patrolling
'markaspatrolleddiff' => 'Žīmietė, kū patikrėnta',
'markaspatrolledtext' => 'Pažīmietė, ka poslapis patėkrėnts īr',
@@ -1755,16 +1721,15 @@ Paskėrties straipsnis „[[:$1]]“ jau īr. A nuorėt ana ėštrintė, kū gal
'nextdiff' => 'Paskesinis pakeitėms →',
# Media information
-'mediawarning' => "'''Diemesė''': Šėts fails gal torietė kenksmėnga kuoda, anū palaidus Tamstas sėstėma gal būtė sogadinta.",
-'imagemaxsize' => 'Rėbuotė abruozdieliu dėdoma anū aprašīma poslapī lėgė:',
-'thumbsize' => 'Somažėntu pavēkslieliu didums:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|poslapis|poslapē|poslapiu}}',
-'file-info' => 'faila dÄ—doms: $1, MIME tips: $2',
-'file-info-size' => '$1 × $2 taškū, faila dėdoms: $3, MIME tips: $4',
-'file-nohires' => '<small>Geresnis ėšraiškėms negalėms.</small>',
-'svg-long-desc' => 'SVG fails, fuormalē $1 × $2 puškiu, faila dėdoms: $3',
-'show-big-image' => 'Pėlns ėšraiškėms',
-'show-big-image-thumb' => '<small>Šėtuos parvaizos dėdums: $1 × $2 puškiu</small>',
+'mediawarning' => "'''Diemesė''': Šėts fails gal torietė kenksmėnga kuoda, anū palaidus Tamstas sėstėma gal būtė sogadinta.",
+'imagemaxsize' => 'Rėbuotė abruozdieliu dėdoma anū aprašīma poslapī lėgė:',
+'thumbsize' => 'Somažėntu pavēkslieliu didums:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|poslapis|poslapē|poslapiu}}',
+'file-info' => 'faila dÄ—doms: $1, MIME tips: $2',
+'file-info-size' => '$1 × $2 taškū, faila dėdoms: $3, MIME tips: $4',
+'file-nohires' => '<small>Geresnis ėšraiškėms negalėms.</small>',
+'svg-long-desc' => 'SVG fails, fuormalē $1 × $2 puškiu, faila dėdoms: $3',
+'show-big-image' => 'Pėlns ėšraiškėms',
# Special:NewFiles
'newimages' => 'Naujausiu abruozdieliu galerÄ—jÄ—',
@@ -1786,14 +1751,20 @@ Vėsas kėtas nūoruodas tuo patiuo eilotie īr laikomas ėšėmtim, tas rēšk
'metadata-help' => 'Å Ä—tom failÄ— Ä«r papÄ—lduomos infuormacÄ—jÄ—s, tikriausÄ“ pridietos skaitmeninÄ—s kameruos a skanÄ—rÄ—, katros bova nauduots anam sokortÄ— a parkeltÄ— i skaitmenÄ—ni fuormata. JÄ“go fails bova pakeists Ä—Å¡ pradÄ—nÄ—s versÄ—jÄ—s, katruos nekatruos datalÄ—s gal nepÄ—lnÄ atspÄ—ndietÄ— nauja faila.',
'metadata-expand' => 'Ruodītė ėšpliestinė infuormacėjė',
'metadata-collapse' => 'KavuotÄ— Ä—Å¡pliestinÄ— infuormacÄ—jÄ—',
-'metadata-fields' => 'EXIF metadoumenÅ« laukÄ, nuruodÄ«tÄ— tamÄ— praneÅ¡Ä—mÄ—, bus itrauktÄ— i abruozdielÄ— poslapi, kumet metadoumenÅ« lentelÄ— bus suskleista. PalÄ“ nutÄ«liejÄ—ma kÄ—tÄ— laukÄ bus pakavuotÄ—.
+'metadata-fields' => 'AbruozdielÄ— metadoumenÅ« laukÄ, nuruodÄ«tÄ— tamÄ— praneÅ¡Ä—mÄ—, bus itrauktÄ— i abruozdielÄ— poslapi, kumet metadoumenÅ« lentelÄ— bus suskleista. PalÄ“ nutÄ«liejÄ—ma kÄ—tÄ— laukÄ bus pakavuotÄ—.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Platoms',
@@ -1831,14 +1802,12 @@ Vėsas kėtas nūoruodas tuo patiuo eilotie īr laikomas ėšėmtim, tas rēšk
# External editor support
'edit-externally' => 'Atdarītė ėšuoriniam redaktuorio',
-'edit-externally-help' => 'NuoriedamÄ— gautÄ— daugiau infuormacÄ—jÄ—s, veiziekÄ—t [http://www.mediawiki.org/wiki/Manual:External_editors kruovÄ—ma instrokcÄ—jÄ—s].',
+'edit-externally-help' => 'NuoriedamÄ— gautÄ— daugiau infuormacÄ—jÄ—s, veiziekÄ—t [//www.mediawiki.org/wiki/Manual:External_editors kruovÄ—ma instrokcÄ—jÄ—s].',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'vÄ—sos',
-'imagelistall' => 'vÄ—sÄ—',
-'watchlistall2' => 'vÄ—sos',
-'namespacesall' => 'vÄ—sas',
-'monthsall' => 'vÄ—sÄ—',
+'watchlistall2' => 'vÄ—sos',
+'namespacesall' => 'vÄ—sas',
+'monthsall' => 'vÄ—sÄ—',
# E-mail address confirmation
'confirmemail' => 'Patvirtėnkėt el. pašta adresa',
@@ -1914,12 +1883,12 @@ PatvirtÄ—nÄ—ma kods bengs galiuotÄ— $4.',
'watchlistedit-normal-legend' => 'Å alÄ—ntÄ— poslapios Ä—Å¡ keravuojamu sÄraÅ¡a',
'watchlistedit-normal-explain' => 'Žemiau Ä«r ruodomÄ— poslapÄ“ Tamstas keravuojamu sÄraÅ¡Ä—.
Nuoriedamė pašalėntė poslapi, pri anuo oždiekėt varnale ė paspauskėt „Šalėntė poslapios“.
-Tamsta tÄ“puogi galÄ—t [[Special:Watchlist/raw|redagoutÄ— grÄ«naji keravuojamu sÄraÅ¡a]].',
+Tamsta tÄ“puogi galÄ—t [[Special:EditWatchlist/raw|redagoutÄ— grÄ«naji keravuojamu sÄraÅ¡a]].',
'watchlistedit-normal-submit' => 'Å alÄ—ntÄ— poslapios',
'watchlistedit-normal-done' => '$1 {{PLURAL:$1|poslapis bova pašalėnts|poslapē bova pašalėntė|poslapiu bova pašalėnta}} ėš Tamstas keravuojamu saraša:',
'watchlistedit-raw-title' => 'KeistÄ— grÄ«nÅjÄ— keravuojamu sÄraÅ¡a',
'watchlistedit-raw-legend' => 'KeistÄ— grÄ«nÅjÄ— keravuojamu sÄraÅ¡a',
-'watchlistedit-raw-explain' => 'Žemiau ruodomÄ— poslapÄ“ Tamstas keravuojamu sÄraÅ¡Ä—, Ä— gal bÅ«tÄ— pridietÄ— i a paÅ¡alÄ—ntÄ— Ä—Å¡ sÄraÅ¡a; vÄ—ins poslapis eilotie. BÄ—ngÄ— paspauskÄ—t „AtnaujÄ—ntÄ— keravuojamu sÄraÅ¡a“. Tamsta tÄ“puogi galÄ—t [[Special:Watchlist/edit|nauduotÄ— standartÄ—ni radaktuoriu]].',
+'watchlistedit-raw-explain' => 'Žemiau ruodomÄ— poslapÄ“ Tamstas keravuojamu sÄraÅ¡Ä—, Ä— gal bÅ«tÄ— pridietÄ— i a paÅ¡alÄ—ntÄ— Ä—Å¡ sÄraÅ¡a; vÄ—ins poslapis eilotie. BÄ—ngÄ— paspauskÄ—t „AtnaujÄ—ntÄ— keravuojamu sÄraÅ¡a“. Tamsta tÄ“puogi galÄ—t [[Special:EditWatchlist|nauduotÄ— standartÄ—ni radaktuoriu]].',
'watchlistedit-raw-titles' => 'Poslapē:',
'watchlistedit-raw-submit' => 'AtnaujÄ—ntÄ— keravuojamu sÄraÅ¡a',
'watchlistedit-raw-done' => 'Tamstas keravuojamu sÄroÅ¡os bova atnaujÄ—nts.',
diff --git a/languages/messages/MessagesSh.php b/languages/messages/MessagesSh.php
index cd315a03..9b4bb05c 100644
--- a/languages/messages/MessagesSh.php
+++ b/languages/messages/MessagesSh.php
@@ -12,12 +12,14 @@
*/
$namespaceNames = array(
+ NS_SPECIAL => 'Posebno',
NS_TALK => 'Razgovor',
NS_USER => 'Korisnik',
NS_USER_TALK => 'Razgovor_sa_korisnikom',
NS_PROJECT_TALK => 'Razgovor_o_$1',
NS_FILE => 'Datoteka',
NS_FILE_TALK => 'Razgovor_o_datoteci',
+ NS_MEDIAWIKI_TALK => 'Mediawiki_razgovor',
NS_TEMPLATE => 'Å ablon',
NS_TEMPLATE_TALK => 'Razgovor_o_Å¡ablonu',
NS_HELP => 'Pomoć',
@@ -26,6 +28,182 @@ $namespaceNames = array(
NS_CATEGORY_TALK => 'Razgovor_o_kategoriji',
);
+$specialPageAliases = array(
+ 'Activeusers' => array( 'Aktivni_korisnici' ),
+ 'Allmessages' => array( 'Sve_poruke' ),
+ 'Allpages' => array( 'Sve_stranice' ),
+ 'Ancientpages' => array( 'Najstarije_stranice' ),
+ 'Blankpage' => array( 'Prazna_stranica' ),
+ 'Blockme' => array( 'Blokiraj_me' ),
+ 'Booksources' => array( 'Traži_ISBN' ),
+ 'BrokenRedirects' => array( 'Kriva_preusmjerenja' ),
+ 'Categories' => array( 'Kategorije' ),
+ 'Confirmemail' => array( 'E-mail_potvrda' ),
+ 'Contributions' => array( 'Doprinosi' ),
+ 'CreateAccount' => array( 'Stvori_raÄun' ),
+ 'Deadendpages' => array( 'Mrtve_stranice' ),
+ 'DeletedContributions' => array( 'Obrisani_doprinosi' ),
+ 'Disambiguations' => array( 'Razvrstavanja' ),
+ 'DoubleRedirects' => array( 'Dvostruka_preusmjerenja' ),
+ 'Emailuser' => array( 'E-mail', 'Elektronska_pošta' ),
+ 'Export' => array( 'Izvezi' ),
+ 'Fewestrevisions' => array( 'Najmanje_uređivane_stranice' ),
+ 'FileDuplicateSearch' => array( 'Traži_kopije_datoteka' ),
+ 'Filepath' => array( 'Putanja_datoteke' ),
+ 'Import' => array( 'Uvezi' ),
+ 'LinkSearch' => array( 'Traži_poveznice', 'Traži_linkove' ),
+ 'Listadmins' => array( 'Popis_administratora' ),
+ 'Listbots' => array( 'Popis_botova' ),
+ 'Listgrouprights' => array( 'Popis_korisniÄkih_prava' ),
+ 'Listredirects' => array( 'Popis_preusmjerenja' ),
+ 'Listusers' => array( 'Popis_korisnika', 'KorisniÄki_popis' ),
+ 'Lockdb' => array( 'ZakljuÄaj_bazu' ),
+ 'Log' => array( 'Evidencije', 'Registri' ),
+ 'Lonelypages' => array( 'Usamljene_stranice', 'SiroÄad' ),
+ 'Longpages' => array( 'Duge_stranice' ),
+ 'MergeHistory' => array( 'Spoji_historiju' ),
+ 'MIMEsearch' => array( 'MIME_pretraga' ),
+ 'Mostcategories' => array( 'Najviše_kategorija' ),
+ 'Mostimages' => array( 'Najviše_povezane_datoteke', 'Najviše_povezane_slike' ),
+ 'Mostlinked' => array( 'Najviše_povezane_stranice' ),
+ 'Mostlinkedcategories' => array( 'Najviše_povezane_kategorije', 'Najviše_korištene_kategorije' ),
+ 'Mostlinkedtemplates' => array( 'Najviše_povezani_šabloni', 'Najviše_korišteni_šabloni' ),
+ 'Mostrevisions' => array( 'Najviše_uređivane_stranice' ),
+ 'Movepage' => array( 'Premjesti_stranicu' ),
+ 'Mycontributions' => array( 'Moji_doprinosi' ),
+ 'Mypage' => array( 'Moja_stranica' ),
+ 'Mytalk' => array( 'Moj_razgovor' ),
+ 'Myuploads' => array( 'Moje_postavljene_datoteke' ),
+ 'Newimages' => array( 'Nove_datoteke', 'Nove_slike' ),
+ 'Newpages' => array( 'Nove_stranice' ),
+ 'Popularpages' => array( 'Popularne_stranice' ),
+ 'Preferences' => array( 'Postavke' ),
+ 'Prefixindex' => array( 'Prefiks_indeks', 'Stranice_po_prefiksu' ),
+ 'Protectedpages' => array( 'Zaštićene_stranice' ),
+ 'Protectedtitles' => array( 'Zaštićeni_naslovi' ),
+ 'Randompage' => array( 'SluÄajna_stranica' ),
+ 'Randomredirect' => array( 'SluÄajno_preusmjerenje' ),
+ 'Recentchanges' => array( 'Nedavne_izmjene' ),
+ 'Recentchangeslinked' => array( 'Povezane_izmjene' ),
+ 'Revisiondelete' => array( 'Brisanje_izmjene' ),
+ 'Search' => array( 'Traži' ),
+ 'Shortpages' => array( 'Kratke_stranice' ),
+ 'Specialpages' => array( 'Posebne_stranice' ),
+ 'Statistics' => array( 'Statistike' ),
+ 'Unblock' => array( 'Odblokiraj' ),
+ 'Uncategorizedcategories' => array( 'Nekategorizirane_kategorije' ),
+ 'Uncategorizedimages' => array( 'Nekategorizirane_datoteke', 'Nekategorizirane_slike' ),
+ 'Uncategorizedpages' => array( 'Nekategorizirane_stranice' ),
+ 'Uncategorizedtemplates' => array( 'Nekategorizirani_Å¡abloni' ),
+ 'Undelete' => array( 'Vrati' ),
+ 'Unlockdb' => array( 'OtkljuÄaj_bazu' ),
+ 'Unusedcategories' => array( 'Nekorištene_kategorije' ),
+ 'Unusedimages' => array( 'Nekorištene_datoteke', 'Nekorištene_slike' ),
+ 'Unusedtemplates' => array( 'Nekorišteni_šabloni' ),
+ 'Unwatchedpages' => array( 'Negledane_stranice' ),
+ 'Upload' => array( 'Postavi_datoteku' ),
+ 'Userrights' => array( 'KorisniÄka_prava' ),
+ 'Version' => array( 'Verzija' ),
+ 'Wantedcategories' => array( 'Tražene_kategorije' ),
+ 'Wantedfiles' => array( 'Tražene_datoteke' ),
+ 'Wantedpages' => array( 'Tražene_stranice' ),
+ 'Wantedtemplates' => array( 'Traženi_šabloni' ),
+ 'Watchlist' => array( 'Spisak_praćenja' ),
+ 'Whatlinkshere' => array( 'Å to_vodi_ovdje' ),
+ 'Withoutinterwiki' => array( 'Bez_interwikija' ),
+);
+
+$magicWords = array(
+ 'redirect' => array( '0', '#PREUSMJERI', '#PREUSMERI', '#REDIRECT' ),
+ 'notoc' => array( '0', '__BEZSADRŽAJA__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__BEZGALERIJE__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__FORSIRANISADRŽAJ__', '__UKLJUČISADRŽAJ__', '__FORCETOC__' ),
+ 'toc' => array( '0', '__SADRŽAJ__', '__TOC__' ),
+ 'noeditsection' => array( '0', '__BEZ_IZMJENA__', '__BEZIZMJENA__', '__BEZ_IZMENA__', '__BEZIZMENA__', '__NOEDITSECTION__' ),
+ 'noheader' => array( '0', '__BEZ_ZAGLAVLJA__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'TRENUTNIMJESEC', 'TRENUTNIMESEC', 'TRENUTAÄŒNIMJESEC', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'TRENUTNIMJESEC1', 'TRENUTNIMESEC1', 'TRENUTAÄŒNIMJESEC1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'TRENUTNIMJESECIME', 'TRENUTNIMESECIME', 'TRENUTAÄŒNIMJESECIME', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'TRENUTNIMJESECROD', 'TRENUTNIMESECROD', 'TRENUTAÄŒNIMJESECROD', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'TRENUTNIMJESECSKR', 'TRENUTNIMESECSKR', 'TRENUTAÄŒNIMJESECSKR', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'TRENUTNIDAN', 'TRENUTAÄŒNIDAN', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'TRENUTNIDAN2', 'TRENUTAÄŒNIDAN2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'TRENUTNIDANIME', 'TRENUTAÄŒNIDANIME', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'TRENUTNAGODINA', 'TRENUTAÄŒNAGODINA', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'TRENUTNOVRIJEME', 'TRENUTNOVREME', 'TRENUTAÄŒNOVRIJEME', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'TRENUTNISAT', 'TRENUTAÄŒNISAT', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'LOKALNIMJESEC', 'LOKALNIMESEC', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'LOKALNIMJESEC1', 'LOKALNIMESEC1', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'LOKALNIMJESECIME', 'LOKALNIMESECIME', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'LOKALNIMJESECROD', 'LOKALNIMESECROD', 'LOKALNIMJESECGEN', 'LOKALNIMESECGEN', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'LOKALNIMJESECSKR', 'LOKALNIMESECSKR', 'LOKALNIMJESECKRAT', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'LOKALNIDAN', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'LOKALNIDAN2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'LOKALNIDANIME', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'LOKALNAGODINA', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'LOKALNOVRIJEME', 'LOKALNOVREME', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'LOKALNISAT', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'BROJSTRANICA', 'BROJSTRANA', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'BROJÄŒLANAKA', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'BROJDATOTEKA', 'BROJFAJLOVA', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'BROJKORISNIKA', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'BROJAKTIVNIHKORISNIKA', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'BROJIZMJENA', 'BROJIZMENA', 'BROJUREÄIVANJA', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'BROJPREGLEDA', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'STRANICA', 'IMESTRANICE', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'STRANICE', 'IMESTRANICEE', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'IMENSKIPROSTOR', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'IMENSKIPROSTORI', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'PROSTORZARAZGOVOR', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'PROSTORIZARAZGOVOR', 'TALKSPACEE' ),
+ 'fullpagename' => array( '1', 'PUNOIMESTRANE', 'PUNOIMESTRANICE', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'PUNOIMESTRANEE', 'PUNOIMESTRANICEE', 'FULLPAGENAMEE' ),
+ 'msg' => array( '0', 'POR:', 'MSG:' ),
+ 'subst' => array( '0', 'ZAMJENI:', 'ZAMENI:', 'ZAMJENA:', 'SUBST:' ),
+ 'msgnw' => array( '0', 'NVPOR:', 'MSGNW:' ),
+ 'img_thumbnail' => array( '1', 'minijatura', 'mini', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'minijatura=$1', 'mini=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_right' => array( '1', 'desno', 'right' ),
+ 'img_left' => array( '1', 'lijevo', 'levo', 'left' ),
+ 'img_none' => array( '1', 'n', 'bez', 'ništa', 'none' ),
+ 'img_center' => array( '1', 'centar', 'središte', 'c', 'center', 'centre' ),
+ 'img_framed' => array( '1', 'okvir', 'ram', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'bez_okvira', 'bezokvira', 'frameless' ),
+ 'img_page' => array( '1', 'stranica=$1', 'stranica_$1', 'strana=$1', 'strana_$1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'na_gore', 'na_gore=$1', 'na_gore_$1', 'uspravno', 'uspravno=$1', 'uspravno_$1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'granica', 'obrub', 'border' ),
+ 'img_baseline' => array( '1', 'osnovnacrta', 'pocetna_linija', 'baseline' ),
+ 'img_top' => array( '1', 'vrh', 'top' ),
+ 'img_text_top' => array( '1', 'vrh_teksta', 'tekst_vrh', 'text-top' ),
+ 'img_middle' => array( '1', 'sredina', 'middle' ),
+ 'img_bottom' => array( '1', 'dno', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'tekst-dno', 'text-bottom' ),
+ 'localurl' => array( '0', 'LOKALNIURL:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'LOKALNIURLE:', 'LOCALURLE:' ),
+ 'notitleconvert' => array( '0', '__BEZTC__', '__BEZKN__', '__BPN__', '__NOTITLECONVERT__', '__NOTC__' ),
+ 'nocontentconvert' => array( '0', '__BEZCC__', '__BPS__', '__NOCONTENTCONVERT__', '__NOCC__' ),
+ 'currentweek' => array( '1', 'TRENUTNASEDMICA', 'TRENUTAÄŒNITJEDAN', 'TRENUTNANEDELJA', 'TRENUTNITJEDAN', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'TRENUTNIDANSEDMICE', 'TRENUTAÄŒNIDANTJEDNA', 'TRENUTNIDANNEDELJE', 'TRENUTNIDANTJEDNA', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'LOKALNASEDMICA', 'LOKALNITJEDAN', 'LOKALNANEDELJA', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'LOKALNIDANSEDMICE', 'LOKALNIDANTJEDNA', 'LOKALNIDANNEDELJE', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'IDIZMJENE', 'IDIZMENE', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'IZMJENEDANA', 'IZMENEDANA', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'IZMJENEDANA2', 'IZMENEDANA2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'MJESECIZMJENE', 'MESECIZMENE', 'REVISIONMONTH' ),
+ 'revisionmonth1' => array( '1', 'MJESECIZMJENE1', 'MESECIZMENE1', 'REVISIONMONTH1' ),
+ 'revisionyear' => array( '1', 'GODINAIZMJENE', 'GODINAIZMENE', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'OZNAKAVREMENAIZMJENE', 'OZNAKAVREMENAIZMENE', 'REVISIONTIMESTAMP' ),
+ 'plural' => array( '0', 'MNOŽINA:', 'PLURAL:' ),
+ 'fullurl' => array( '0', 'PUNIURL:', 'PUNURL:', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'PUNIURLE:', 'PUNURLE:', 'FULLURLE:' ),
+ 'currenttimestamp' => array( '1', 'TRENUTNAOZNAKAVREMENA', 'TRENUTAÄŒNAOZNAKAVREMENA', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'LOKALNAOZNAKAVREMENA', 'LOCALTIMESTAMP' ),
+ 'special' => array( '0', 'posebno', 'special' ),
+ 'hiddencat' => array( '1', '__SAKRIVENAKATEGORIJA__', 'SKRIVENAKAT', '__SAKRIVENAKAT__', '__HIDDENCAT__' ),
+ 'pagesize' => array( '1', 'VELICINASTRANICE', 'VELIÄŒINASTRANICE', 'VELIÄŒINASTRANE', 'VELICINASTRANE', 'PAGESIZE' ),
+ 'formatdate' => array( '0', 'formatdatuma', 'formatdate', 'dateformat' ),
+);
+
$linkTrail = '/^([a-zÄćđžš]+)(.*)$/sDu';
$messages = array(
@@ -58,10 +236,10 @@ $messages = array(
'tog-enotifminoredits' => 'Pošalji mi e-poštu takođe za male izmjene stranica',
'tog-enotifrevealaddr' => 'Otkrij adresu moje e-pošte u porukama obaviještenja',
'tog-shownumberswatching' => 'Prikaži broj korisnika koji prate',
-'tog-oldsig' => 'Pregled postojećeg potpisa:',
+'tog-oldsig' => 'Postojeći potpis:',
'tog-fancysig' => 'Smatraj potpis kao wikitekst (bez automatskog linka)',
'tog-externaleditor' => 'Redovno koristite eksterni editor (samo za naprednije korisnike, potrebne su posebne postavke na vaÅ¡em raÄunaru)',
-'tog-externaldiff' => 'Redovno koristi vanjski (diff) program za prikaz razlika (samo za naprednije korisnike, potrebne posebne postavke na vaÅ¡em raÄunaru [http://www.mediawiki.org/wiki/Manual:External_editors ViÅ¡e informacija.])',
+'tog-externaldiff' => 'Redovno koristi vanjski (diff) program za prikaz razlika (samo za naprednije korisnike, potrebne posebne postavke na vaÅ¡em raÄunaru [//www.mediawiki.org/wiki/Manual:External_editors ViÅ¡e informacija.])',
'tog-showjumplinks' => 'Omogući opciju "skoÄi na" linkove',
'tog-uselivepreview' => 'Koristite pretpregled uživo (potreban JavaScript) (eksperimentalno)',
'tog-forceeditsummary' => 'Opomeni me pri unosu praznog sažetka',
@@ -156,14 +334,7 @@ $messages = array(
'listingcontinuesabbrev' => 'nast.',
'index-category' => 'Indeksirane stranice',
'noindex-category' => 'Neindeksirane stranice',
-
-'mainpagetext' => "'''MediaWiki softver is uspješno instaliran.'''",
-'mainpagedocfooter' => 'Kontaktirajte [http://meta.wikimedia.org/wiki/Help:Contents uputstva za korisnike] za informacije o upotrebi wiki programa.
-
-== PoÄetak ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista postavki]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki najÄešće postavljana pitanja]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Lista E-Mail adresa MediaWiki]',
+'broken-file-category' => 'Stranice sa neispravnim linkovima do datoteka',
'about' => 'O...',
'article' => 'Stranica sadržaja (Älanak)',
@@ -215,10 +386,10 @@ $messages = array(
'history' => 'Historija stranice',
'history_short' => 'Historija',
'updatedmarker' => 'promjene od moje zadnje posjete',
-'info_short' => 'Informacija',
'printableversion' => 'Verzija za ispis',
'permalink' => 'Trajni link',
'print' => 'Å tampa',
+'view' => 'Vidi',
'edit' => 'Uredi',
'create' => 'Napravi',
'editthispage' => 'Uredite ovu stranicu',
@@ -226,6 +397,7 @@ $messages = array(
'delete' => 'Obriši',
'deletethispage' => 'Obriši ovu stranicu',
'undelete_short' => 'Vrati obrisanih {{PLURAL:$1|$1 izmjenu|$1 izmjene|$1 izmjena}}',
+'viewdeleted_short' => 'Pogledaj {{PLURAL:$1|jednu obrisanu izmjenu|$1 obrisane izmjene|$1 obrisanih izmjena}}',
'protect' => 'Zaštiti',
'protect_change' => 'promijeni',
'protectthispage' => 'Zaštiti ovu stranicu',
@@ -309,6 +481,8 @@ $1',
'toc' => 'Sadržaj',
'showtoc' => 'prikaži',
'hidetoc' => 'sakrij',
+'collapsible-collapse' => 'Sakrij',
+'collapsible-expand' => 'Proširi',
'thisisdeleted' => 'Pogledaj ili vrati $1?',
'viewdeleted' => 'Pogledaj $1?',
'restorelink' => '{{PLURAL:$1|$1 izbrisana izmjena|$1 izbrisanih izmjena}}',
@@ -320,6 +494,8 @@ $1',
'page-rss-feed' => '"$1" RSS fid',
'page-atom-feed' => '"$1" Atom fid',
'red-link-title' => '$1 (stranica ne postoji)',
+'sort-descending' => 'Poredaj opadajuće',
+'sort-ascending' => 'Poredaj rastuće',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Stranica',
@@ -406,12 +582,13 @@ Pretraga: $2',
'protectedinterface' => 'Ova stranica sadrži tekst interfejsa za softver, pa je zakljuÄana kako bi se sprijeÄile zloupotrebe.',
'editinginterface' => "'''Upozorenje:''' Mijenjate stranicu koja se koristi za tekst interfejsa za softver.
Promjene na ovoj stranici dovode i do promjena interfejsa za druge korisnike.
-Za prijevode, molimo Vas koristite [http://translatewiki.net/wiki/Main_Page?setlang=bs translatewiki.net], projekt prijevoda za MediaWiki.",
+Za prijevode, molimo Vas koristite [//translatewiki.net/wiki/Main_Page?setlang=bs translatewiki.net], projekt prijevoda za MediaWiki.",
'sqlhidden' => '(SQL pretraga sakrivena)',
'cascadeprotected' => 'Ova stranica je zaÅ¡tićena od ureÄ‘ivanja, jer je ukljuÄena u {{PLURAL:$1|stranicu zaÅ¡tićenu|stranice zaÅ¡tićene}} od ureÄ‘ivanja sa ukljuÄenom kaskadnom opcijom:
$2',
'namespaceprotected' => "Nemate dozvolu uređivati stranice imenskog prostora '''$1'''.",
-'customcssjsprotected' => 'Nemate dozvolu za mijenjanje ove stranice jer sadrži osobne postavke nekog drugog korisnika.',
+'customcssprotected' => 'Nemate dozvolu za mijenjanje ove CSS stranice jer sadrži osobne postavke nekog drugog korisnika.',
+'customjsprotected' => 'Nemate dozvolu za mijenjanje ove JavaScript stranice jer sadrži osobne postavke nekog drugog korisnika.',
'ns-specialprotected' => 'Posebne stranice se ne mogu uređivati.',
'titleprotected' => 'Naslov stranice je zaštićen od postavljanja od strane korisnika [[User:$1|$1]].
Kao razlog je naveden "\'\'$2\'\'".',
@@ -449,6 +626,7 @@ Ne zaboravite izmijeniti vlastite [[Special:Preferences|{{SITENAME}} postavke]].
'createaccount' => 'Napravi korisniÄki raÄun',
'gotaccount' => "Imate raÄun? '''$1'''.",
'gotaccountlink' => 'Prijavi se',
+'userlogin-resetlink' => 'Zaboravili ste detalje vaše prijave?',
'createaccountmail' => 'e-mailom',
'createaccountreason' => 'Razlog:',
'badretype' => 'Lozinke koje ste unijeli se ne poklapaju.',
@@ -463,13 +641,15 @@ Molimo Vas da ih omogućite, a onda se prijavite sa svojim novim korisniÄkim im
'nocookieslogin' => "{{SITENAME}} koristi kolaÄiće (''cookies'') da bi se korisnici prijavili.
Vi ste onemogućili kolaÄiće na VaÅ¡em kompjuteru.
Molimo Vas da ih omogućite i da pokušate ponovo sa prijavom.",
+'nocookiesfornew' => 'KorisniÄki raÄun nije napravljen, jer nismo mogli da potvrdimo njegov izvor.
+Provjerite da li su cookies omogućeni, ponovo uÄitajte ovu stranicu i pokuÅ¡ajte ponovo.',
'noname' => 'Niste izabrali ispravno korisniÄko ime.',
'loginsuccesstitle' => 'Prijavljivanje uspješno',
'loginsuccess' => "'''Sad ste prijavljeni na {{SITENAME}} kao \"\$1\".'''",
'nosuchuser' => 'Ne postoji korisnik sa imenom "$1".
KorisniÄka imena razlikuju velika i mala slova.
Provjerite vaÅ¡e kucanje ili [[Special:UserLogin/signup|napravite novi korisniÄki raÄun]].',
-'nosuchusershort' => 'Ne postoji korisnik sa imenom "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Ne postoji korisnik sa imenom "$1".
Provjerite da li ste dobro ukucali.',
'nouserspecified' => 'Morate izabrati korisniÄko ime.',
'login-userblocked' => 'Ovaj korisnik je blokiran. Prijava nije dozvoljena.',
@@ -515,13 +695,14 @@ Možete ignorisati ovu poruku, ako je korisniÄki raÄun napravljen greÅ¡kom.',
'usernamehasherror' => 'KorisniÄko ime ne može sadržavati haÅ¡ znakove',
'login-throttled' => 'Previše puta ste se pokušali prijaviti.
Molimo Vas da saÄekate prije nego Å¡to pokuÅ¡ate ponovo.',
+'login-abort-generic' => 'Vaša prijava nije bila uspješna – Prekinuto',
'loginlanguagelabel' => 'Jezik: $1',
'suspicious-userlogout' => 'Vaš zahtjev za odjavu je odbijen jer je poslan preko pokvarenog preglednika ili keširanog proksija.',
# E-mail sending
'php-mail-error-unknown' => 'Nepoznata greška u PHP funkciji mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Promijeni korisniÄku Å¡ifru',
'resetpass_announce' => 'Prijavili ste se sa privremenim kodom koji ste dobili na e-mail.
Da biste završili prijavu, morate unijeti novu šifru ovdje:',
@@ -539,6 +720,39 @@ Da biste završili prijavu, morate unijeti novu šifru ovdje:',
Možda ste već uspješno promijenili Vašu lozinku ili ste tražili novu privremenu lozinku.',
'resetpass-temp-password' => 'Privremena lozinka:',
+# Special:PasswordReset
+'passwordreset' => 'Ponovno postavi lozinku',
+'passwordreset-text' => 'Ispunite ovaj obrazac da biste dobili e-mail podsjetnik o vaÅ¡im detaljima raÄuna.',
+'passwordreset-legend' => 'Ponovno postavi lozinku',
+'passwordreset-disabled' => 'Ponovno postavljanje lozinke je onemogućeno na ovom wikiju.',
+'passwordreset-pretext' => '{{PLURAL:$1||Unesite jedan dio podataka ispod}}',
+'passwordreset-username' => 'KorisniÄko ime:',
+'passwordreset-domain' => 'Domena:',
+'passwordreset-email' => 'E-mail adresa:',
+'passwordreset-emailtitle' => 'Detalji raÄuna na {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Netko (vjerovatno Vi, s IP adrese $1) je zatražio podsjetnik VaÅ¡ih detalja raÄuna
+za {{SITENAME}} ($4). Sljedeći {{PLURAL:$3|raÄun korisnika je|raÄuni korisnika su}}
+povezani s ovom e-mail adresom:
+
+$2
+
+{{PLURAL:$3|Ova privremena lozinka|Ove privremene lozinke}} će isteći za {{PLURAL:$5|jedan dan|$5 dana}}.
+Trebate se prijaviti i odabrati novu lozinku. Ako je neko drugi napravio ovaj
+zahtjev, ili ako ste se sjetili VaÅ¡e poÄetne lozinke, a ne želite je promijeniti,
+možete zanemariti ovu poruku i nastaviti koristiti staru lozinku.',
+'passwordreset-emailtext-user' => 'Korisnik $1 na {{SITENAME}} je zatražio podsjetnik o detaljima VaÅ¡eg raÄuna za {{SITENAME}}
+($4). Sljedeći {{PLURAL:$3|korisniÄki raÄun je|korisniÄki raÄuni su}} povezani s ovom e-mail adresom:
+
+$2
+
+{{PLURAL:$3|Ova privremena lozinka|Ove privremene lozinke}} će isteći za {{PLURAL:$5|jedan dan|$5 dana}}.
+Trebate se prijaviti i odabrati novu lozinku. Ako je neko drugi napravio ovaj
+zahtjev, ili ako ste se sjetili Vaše originalne lozinke, a ne želite je više promijeniti,
+možete zanemariti ovu poruku i nastaviti koristiti staru lozinku.',
+'passwordreset-emailelement' => 'KorisniÄko ime: $1
+Privremena Å¡ifra: $2',
+'passwordreset-emailsent' => 'E-mail podsjetnik je poslan.',
+
# Edit page toolbar
'bold_sample' => 'Podebljan tekst',
'bold_tip' => 'Podebljan tekst',
@@ -550,8 +764,6 @@ Možda ste već uspješno promijenili Vašu lozinku ili ste tražili novu privre
'extlink_tip' => 'Eksterni link (zapamti prefiks http:// )',
'headline_sample' => 'Tekst naslova',
'headline_tip' => 'Podnaslov',
-'math_sample' => 'Unesite formulu ovdje',
-'math_tip' => 'MatematiÄka formula (LaTeX)',
'nowiki_sample' => 'Dodaj neformatirani tekst ovdje',
'nowiki_tip' => 'Ignoriraj wiki formatiranje',
'image_tip' => 'Uklopljena datoteka/fajl',
@@ -640,7 +852,7 @@ Možete [[Special:Search/{{PAGENAME}}|tražiti naslov ove stranice]] u drugim st
ili [{{fullurl:{{FULLPAGENAME}}|action=edit}} urediti ovu stranicu]</span>.',
'noarticletext-nopermission' => 'Trenutno nema teksta na ovoj stranici.
Možete [[Special:Search/{{PAGENAME}}|tražiti ovaj naslov stranice]] na drugim stranicama ili <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti povezane registre]</span>.',
-'userpage-userdoesnotexist' => 'KorisniÄki raÄun "$1" nije registrovan.
+'userpage-userdoesnotexist' => 'KorisniÄki raÄun "<nowiki>$1</nowiki>" nije registrovan.
Molimo provjerite da li želite napraviti/izmijeniti ovu stranicu.',
'userpage-userdoesnotexist-view' => 'KorisniÄki raÄun "$1" nije registrovan.',
'blocked-notice-logextract' => 'Ovaj korisnik je trenutno blokiran.
@@ -678,6 +890,7 @@ kako će izgledati ako pritisnete "Snimi stranicu".',
'token_suffix_mismatch' => "'''Vaša izmjena nije prihvaćena jer je Vaš web preglednik ubacio znakove interpunkcije u token uređivanja.'''
Izmjena je odbaÄena da bi se sprijeÄilo uniÅ¡tavanje teksta stranice.
To se dogaÄ‘a ponekad kad korisite problematiÄni anonimni proxy koji je baziran na web-u.",
+'edit_form_incomplete' => "'''Neki dijelovi ureÄ‘ivaÄkog obrasca nisu doÅ¡li do servera; dvaput provjerite da su vaÅ¡e izmjene nepromjenjene i pokuÅ¡ajte ponovno.'''",
'editing' => 'Uređujete $1',
'editingsection' => 'Uređujete $1 (sekciju)',
'editingcomment' => 'Uređujete $1 (nova sekcija)',
@@ -813,29 +1026,29 @@ PokuÅ¡ajte [[Special:Search|pretražiti wiki]] za sliÄne stranice.',
'rev-deleted-user-contribs' => '[korisniÄko ime ili IP adresa uklonjeni - izmjena sakrivena u spisku doprinosa]',
'rev-deleted-text-permission' => "Revizija ove stranice je '''obrisana'''.
Detalje možete vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].",
-'rev-deleted-text-unhide' => "Revizija ove stranice je '''obrisana'''.
-Detalje o tome možer vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].
-Kao administrator još je uvijek možete [$1 vidjeti ovu reviziju] ako želite.",
-'rev-suppressed-text-unhide' => "Ova revizija stranice je '''uklonjena'''.
-Možete pogledati detalje u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registru uklanjanja].
-Kao administrator Vi je i dalje možete [$1 vidjeti ovu reviziju] ako želite.",
-'rev-deleted-text-view' => "Revizija ove stranice je '''obrisana'''.
-Kao administrator, Vi je možete vidjeti; detalji o tome se mogu vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].",
-'rev-suppressed-text-view' => "Ova revizija stranice je '''uklonjena'''.
-Kao administrator Vi je možete vidjeti; možete pogledati detalje u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registru uklanjanja].",
+'rev-deleted-text-unhide' => "Izmhena ove stranice je '''obrisana'''.
+Detalje možete vidjeti u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].
+Ipak možete [$1 vidjeti ovu izmenu] ako želite nastaviti.",
+'rev-suppressed-text-unhide' => "Izmjena ove stranice je '''sakrivena'''.
+Detalje možete vidjeti u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registru sakrivanja].
+Ipak možete da [$1 vidjeti ovu izmjenu] ako želite nastaviti.",
+'rev-deleted-text-view' => "Izmjena ove stranice je '''obrisana'''.
+Možete je pogledati; više detalja možete naći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].",
+'rev-suppressed-text-view' => "Izmena ove stranice je '''sakrivena'''.
+Možete je pogledati; više detalja možete naći u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registru sakrivanja].",
'rev-deleted-no-diff' => "Ne možete vidjeti ove razlike jer je jedna od revizija '''obrisana'''.
Možete pregledati detalje u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registrima brisanja].",
'rev-suppressed-no-diff' => "Ne možete vidjeti ove razlike jer je jedna od revizija '''obrisana'''.",
-'rev-deleted-unhide-diff' => "Jedna od revizija u ovom pregledu razlika je '''obrisana'''.
-Možete pregledati detalje u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].
-Kao administrator Vi još uvijek možete [$1 vidjeti ove razlike] ako želite da nastavite.",
-'rev-suppressed-unhide-diff' => "Jedna od revizija ove razlike je '''uklonjena'''.
-Postoji mnogo detalja u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registru uklanjanja].
-Kao administrator i dalje možete [$1 vidjeti ove razlike] ako želite da nastavite.",
-'rev-deleted-diff-view' => "Jedna od revizija u ovoj razlici je '''obrisana'''.
-Kao administrator možete vidjeti ovu razliku, možda ima još detalja u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].",
-'rev-suppressed-diff-view' => "Jedna od revizija u ovoj razlici je '''sakrivena'''.
-Kao administrator možete vidjeti ovu razliku, možda ima još detalja u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru sakrivanja].",
+'rev-deleted-unhide-diff' => "Jedna od izmena u ovom pregledu razlika je '''obrisana'''.
+Detalji se mogu naći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].
+Ipak možete da [$1 vidjeti ovu razliku] ako želite nastaviti.",
+'rev-suppressed-unhide-diff' => "Jedna od izmjena ove razlike je '''sakrivena'''.
+Detalji se nalaze u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registru sakrivanja].
+Ipak možete [$1 vidjeti ovu razliku] ako želite nastaviti.",
+'rev-deleted-diff-view' => "Izmjena ove stranice je '''obrisana'''.
+Možete je pogledati; više detalja možete naći u [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} registru brisanja].",
+'rev-suppressed-diff-view' => "Izmena ove stranice je '''sakrivena'''.
+Možete je pogledati; više detalja možete naći u [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} registru sakrivanja].",
'rev-delundel' => 'pokaži/sakrij',
'rev-showdeleted' => 'Pokaži',
'revisiondelete' => 'Obriši/vrati revizije',
@@ -915,7 +1128,7 @@ Molimo provjerite zapise.',
# Suppression log
'suppressionlog' => 'Registri sakrivanja',
-'suppressionlogtext' => 'Ispod je spisak brisanja i blokiranja koja su povezana sa sadržajem koji je sakriven od administratora. Vidi [[Special:IPBlockList|spisak IP blokiranja]] za pregled trenutno važećih blokada.',
+'suppressionlogtext' => 'Ispod je spisak brisanja i blokiranja koja su povezana sa sadržajem koji je sakriven od administratora. Vidi [[Special:IPBlockList|spisak IP blokiranja]] za pregled trenutno važećih zabrana i blokada.',
# History merging
'mergehistory' => 'Spoji historije stranice',
@@ -1026,12 +1239,13 @@ U međuvremenu možete pretraživati preko Googlea.
Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
# Quickbar
-'qbsettings' => 'Podešavanja brze palete',
-'qbsettings-none' => 'Nikakva',
-'qbsettings-fixedleft' => 'Fiksirana lijevo',
-'qbsettings-fixedright' => 'Fiksirana desno',
-'qbsettings-floatingleft' => 'Plutajuća lijevo',
-'qbsettings-floatingright' => 'Plutajuća desno',
+'qbsettings' => 'Podešavanja brze palete',
+'qbsettings-none' => 'Nikakva',
+'qbsettings-fixedleft' => 'Fiksirana lijevo',
+'qbsettings-fixedright' => 'Fiksirana desno',
+'qbsettings-floatingleft' => 'Plutajuća lijevo',
+'qbsettings-floatingright' => 'Plutajuća desno',
+'qbsettings-directionality' => 'Fiksno, ovisno o smjeru pisma Vašeg jezika',
# Preferences page
'preferences' => 'Postavke',
@@ -1042,9 +1256,10 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
'changepassword' => 'Promijeni lozinku',
'prefs-skin' => 'Izgled (skin)',
'skin-preview' => 'Pretpregled',
-'prefs-math' => 'Prikazivanje matematike',
'datedefault' => 'Bez preferenci',
+'prefs-beta' => 'Beta mogućnosti',
'prefs-datetime' => 'Datum i vrijeme',
+'prefs-labs' => 'Eksperimentalne mogućnosti',
'prefs-personal' => 'KorisniÄki profil',
'prefs-rc' => 'Podešavanje nedavnih izmjena',
'prefs-watchlist' => 'Praćene stranice',
@@ -1066,8 +1281,6 @@ Uzmite u obzir da njegovi indeksi za ovu Wiki ne moraju biti ažurirani.',
'columns' => 'Kolona:',
'searchresultshead' => 'Postavke rezultata pretrage',
'resultsperpage' => 'Pogodaka po stranici:',
-'contextlines' => 'Linija po pogotku:',
-'contextchars' => 'Karaktera konteksta po liniji:',
'stub-threshold' => 'Formatiranje <a href="#" class="stub">linkova stranica u zaÄetku</a> (bajtova):',
'stub-threshold-disabled' => 'IskljuÄen/a',
'recentchangesdays' => 'Broj dana za prikaz u nedavnim izmjenama:',
@@ -1080,7 +1293,7 @@ Ovdje su navedene neke nasumiÄno odabrane vrijednosti koje možete koristiti: $
'savedprefs' => 'Vaša postavke su snimljene.',
'timezonelegend' => 'Vremenska zona:',
'localtime' => 'Lokalno vrijeme:',
-'timezoneuseserverdefault' => 'Koristi postavke servera',
+'timezoneuseserverdefault' => 'Koristi postavke wikija ($1)',
'timezoneuseoffset' => 'Ostalo (odredi odstupanje)',
'timezoneoffset' => 'Odstupanje¹:',
'servertime' => 'Vrijeme na serveru:',
@@ -1115,6 +1328,7 @@ Ovo se ne može vratiti unazad.',
'prefs-registration' => 'Vrijeme registracije:',
'yourrealname' => 'Vaše pravo ime:',
'yourlanguage' => 'Jezik:',
+'yourvariant' => 'Varijanta jezika:',
'yournick' => 'Nadimak (za potpise):',
'prefs-help-signature' => 'Komentari na stranicama za razgovor trebaju biti potpisani sa "<nowiki>~~~~</nowiki>" koje će biti pretvoreno u vaš potpis i vrijeme.',
'badsig' => 'Loš sirovi potpis.
@@ -1130,8 +1344,8 @@ Ova informacija će biti javna.',
'email' => 'E-mail',
'prefs-help-realname' => 'Pravo ime nije obavezno.
Ako izaberete da date ime, biće korišteno za pripisivanje Vašeg rada.',
-'prefs-help-email' => 'E-mail adresa je opcionalna, unesena adresa Vam omogućava da Vam se poÅ¡alje nova Å¡ifra u sluÄaju da je izgubite ili zaboravite.
-TakoÄ‘er omogućuje drugim korisnicima da vas kontaktiraju preko VaÅ¡e korisniÄke stranice ili stranice za razgovor bez otkrivanja VaÅ¡eg identiteta.',
+'prefs-help-email' => 'E-mail adresa je opcionalna, ali Vam omogućava da Vam se poÅ¡alje nova Å¡ifra u sluÄaju da je izgubite ili zaboravite.',
+'prefs-help-email-others' => 'TakoÄ‘er možete da odaberete da vas drugi kontaktiraju putem vaÅ¡e korisniÄke stranice ili stranice za razgovor bez otkrivanja vaÅ¡eg identiteta.',
'prefs-help-email-required' => 'Neophodno je navesti e-mail adresu.',
'prefs-info' => 'Osnovne informacije',
'prefs-i18n' => 'Internacionalizacije',
@@ -1256,15 +1470,15 @@ TakoÄ‘er omogućuje drugim korisnicima da vas kontaktiraju preko VaÅ¡e korisniÄ
'right-userrights' => 'UreÄ‘ivanje svih korisniÄkih prava',
'right-userrights-interwiki' => 'UreÄ‘ivanje korisniÄkih prava korisnika na drugim wikijima',
'right-siteadmin' => 'ZakljuÄavanje i otkljuÄavanje baze podataka',
-'right-reset-passwords' => 'Resetiranje lozinke drugih korisnika',
'right-override-export-depth' => 'Izvoz stranica ukljuÄujući povezane stranice do dubine od 5 linkova',
'right-sendemail' => 'Slanje e-maila drugim korisnicima',
# 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',
-'rightsnone' => '(nema)',
+'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',
+'rightsnone' => '(nema)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'Äitanje ove stranice',
@@ -1387,13 +1601,13 @@ Vidi [[Special:NewFiles|galeriju novih datoteka]] za slikovitiji pregled.',
'illegalfilename' => 'Ime datoteke "$1" sadrži simbol koji nije dozvoljen u imenu datoteke.
Molimo Vas da promijenite ime datoteke i pokušate da je ponovo postavite.',
'badfilename' => 'Ime datoteke je promijenjeno u "$1".',
-'filetype-mime-mismatch' => 'Proširenje datoteke ne odgovara MIME tipu.',
+'filetype-mime-mismatch' => 'Proširenje datoteke ".$1" ne odgovara MIME tipu ($2).',
'filetype-badmime' => 'Datoteke MIME vrste "$1" nije dopušteno postavljati.',
'filetype-bad-ie-mime' => 'Ne može se postaviti ova datoteka jer je Internet Explorer prepoznaje kao "$1", što je nedozvoljena i potencijalno opasna vrsta datoteke.',
'filetype-unwanted-type' => "'''\".\$1\"''' je nepoželjna vrsta datoteke.
{{PLURAL:\$3|PreporuÄena vrsta|PreporuÄene vrste}} datoteke su \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' nije dopuštena vrsta datoteke.
-{{PLURAL:\$3|Dopuštena vrsta datoteke je|Dopuštene vrste datoteka su}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|nije dopušten tip datoteke|nisu dopušteni tipovi datoteka}}.
+{{PLURAL:$3|Dopuštena vrsta datoteke je|Dopuštene vrste datoteka su}} $2.',
'filetype-missing' => 'Datoteka nema ekstenziju (poput ".jpg").',
'empty-file' => 'Datoteka koju ste poslali je bila prazna.',
'file-too-large' => 'Datoteka koju ste poslali je bila prevelika.',
@@ -1412,6 +1626,7 @@ Ova datoteka je velika $2.',
'emptyfile' => 'Datoteka koju ste poslali je prazna.
Ovo je moguće zbog greške u imenu datoteke.
Molimo Vas da provjerite da li stvarno želite da pošaljete ovu datoteku.',
+'windows-nonascii-filename' => 'Ova wiki ne podržava imena datoteka sa posebnim znacima.',
'fileexists' => "Datoteka sa ovim imenom već postoji.
Molimo Vas da provjerite '''<tt>[[:$1]]</tt>''' ako niste sigurni da li želite da je promjenite.
[[$1|thumb]]",
@@ -1447,6 +1662,8 @@ Ako i dalje želite da postavite ovu datoteku, molimo Vas da se vratite i pošal
Molimo provjerite postavku za postavljanje datoteka.',
'uploadscripted' => 'Ova datoteka sadrži HTML ili skriptni kod koji može izazvati grešku kod internet preglednika.',
'uploadvirus' => 'Fajl sadrži virus! Detalji: $1',
+'uploadjava' => 'Datoteka je ZIP datoteka koja sadrži Java .class datoteku.
+Postavljanje Java datoteka nije dopuÅ¡teno, jer one mogu prouzrokovati zaobilaženje sigurnosnih ograniÄenja.',
'upload-source' => 'Izvorna datoteka',
'sourcefilename' => 'Ime izvorišne datoteke:',
'sourceurl' => 'URL izvora:',
@@ -1457,10 +1674,6 @@ Molimo provjerite postavku za postavljanje datoteka.',
'watchthisupload' => 'Prati ovu datoteku',
'filewasdeleted' => 'Datoteka s ovim nazivom je ranije postavljana i nakon toga obrisana.
Prije nego Å¡to nastavite da je ponovno postavite trebate provjeriti $1.',
-'upload-wasdeleted' => "''Upozorenje: Postavljate datoteku koja je ranije obrisana.'''
-
-Potrebno je da razmotrite da li je u redu nastaviti sa postavljanjem ove datoteke.
-Registar brisanja za ovu datoteku je prikazan ovdje kao referenca:",
'filename-bad-prefix' => "Naziv datoteke koju postavljate poÄinje sa '''\"\$1\"''', Å¡to je naziv koji obiÄno automatski dodjeljuju digitalni fotoaparati i kamere.
Molimo Vas da odaberete naziv datoteke koji opisuje njen sadržaj.",
'upload-success-subj' => 'Uspješno slanje',
@@ -1485,12 +1698,29 @@ Ako se problem ne riješi, kontaktirajte [[Special:ListUsers/sysop|administrator
'upload-unknown-size' => 'Nepoznata veliÄina',
'upload-http-error' => 'Desila se HTTP greška: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Desila se greška pri otvaranju datoteke za provjere ZIP-a.',
+'zip-wrong-format' => 'Navedena datoteka nije ZIP datoteka.',
+'zip-bad' => 'Datoteka je oÅ¡tećena ili je na drugi naÄin neÄitljiva ZIP datoteka.
+Ne može se dobro provjeriti u vezi sigurnosti.',
+'zip-unsupported' => 'Datoteka je ZIP datoteka koja koristi ZIP osobine koje nisu podržane od strane MediaWiki.
+Ne može se dobro provjeriti u vezi sigurnosti.',
+
+# Special:UploadStash
+'uploadstash' => 'Snimi niz datoteka',
+'uploadstash-summary' => 'Ova stranica daje pristup datotekama koje su postavljene (ili su u postupku postavljanja) ali još nisu objavljene na wiki. Ove datoteke nisu vidljive nikom osim korisniku koji ih je postavio.',
+'uploadstash-clear' => 'OÄisti niz datoteka',
+'uploadstash-nofiles' => 'Nemate neobjavljenih datoteka',
+'uploadstash-badtoken' => 'IzvrÅ¡avanje ove akcije je bilo neuspjeÅ¡no, možda zato Å¡to su vaÅ¡a ureÄ‘ivaÄka odobrenja istekla. PokuÅ¡ajte ponovo.',
+'uploadstash-errclear' => 'Brisanje neobjavljenih datoteka nije uspjelo.',
+'uploadstash-refresh' => 'Osvježi spisak datoteka',
+
# img_auth script messages
'img-auth-accessdenied' => 'Pristup onemogućen',
'img-auth-nopathinfo' => 'Nedostaje PATH_INFO.
-Vaš server nije postavljen da daje ovu informaciju.
-On je zasnovan na CGI i ne može podržavati img_auth.
-Pogledajte http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+Vaš server nije podešen da daje ovakve informacije.
+Možda je zasnovan na CGI-ju koji ne podržava img_auth.
+Pogledajte [//www.mediawiki.org/wiki/Manual:Image_Authorization?uselang=sh odobravanje slika.]',
'img-auth-notindir' => 'Zahtjevana putanja nije u direktorijumu podešenom za postavljanje.',
'img-auth-badtitle' => 'Ne mogu napraviti valjani naslov iz "$1".',
'img-auth-nologinnWL' => 'Niste prijavljeni i "$1" nije na spisku dozvoljenih.',
@@ -1561,14 +1791,14 @@ Kad je filtriran po korisniku, popis prikazuje samo one datoteke Äiju je poslje
'filehist-filesize' => 'VeliÄina datoteke',
'filehist-comment' => 'Komentar',
'filehist-missing' => 'Datoteka nedostaje',
-'imagelinks' => 'Linkovi datoteke',
+'imagelinks' => 'Upotreba datoteke',
'linkstoimage' => '{{PLURAL:$1|Sljedeća stranica koristi|Sljedećih $1 stranica koriste}} ovu sliku:',
'linkstoimage-more' => 'Više od $1 {{PLURAL:$1|stranice povezuje|stranica povezuje}} na ovu datoteku.
Slijedeći popis prikazuje {{PLURAL:$1|stranice koje|prvih $1 stranica koje}} vode na ovu datoteku.
[[Special:WhatLinksHere/$2|Ovdje se nalazi]] potpuni popis.',
'nolinkstoimage' => 'Nema stranica koje koriste ovu datoteku.',
'morelinkstoimage' => 'Vidi [[Special:WhatLinksHere/$1|ostale linkove]] prema ovoj datoteci.',
-'redirectstofile' => '{{PLURAL:$1|Slijedeća datoteka|Slijedeće $1 datoteke|Slijedećih $1 datoteka}} preusmjerava prema ovoj datoteci:',
+'linkstoimage-redirect' => '$1 (preusmjerenje datoteke) $2',
'duplicatesoffile' => '{{PLURAL:$1|Slijedeća datoteka je dvojnik|Slijedeće $1 datoteke su dvojnici}} ove datoteke ([[Special:FileDuplicateSearch/$2|detaljnije]]):',
'sharedupload' => 'Ova datoteka/fajl je sa $1 i mogu je koristiti ostali projekti.',
'sharedupload-desc-there' => 'Ova datoteka je sa $1 i može se koristiti i na drugim projektima.
@@ -1658,18 +1888,19 @@ Prije brisanja provjerite da li druge stranice vode na te Å¡ablone.',
'statistics-users-active-desc' => 'Korisnici koju su izvršili akciju u toku {{PLURAL:$1|zadnjeg dana|zadnja $1 dana|zadnjih $1 dana}}',
'statistics-mostpopular' => 'Najviše pregledane stranice',
-'disambiguations' => 'Stranice za razvrstavanje',
+'disambiguations' => 'Stranice do viÅ¡eznaÄnih odrednica',
'disambiguationspage' => 'Template:ViÅ¡eznaÄna odrednica',
'disambiguations-text' => "Slijedeće stranice su povezane sa '''stranicom za razvrstavanje'''.
Po pravilu, one se trebaju povezati sa konkretnim Älankom.<br />
Stranica se smatra stranicom za razvrstavanje, ukoliko koristi Å¡ablon koji je povezan sa spiskom [[MediaWiki:Disambiguationspage|stranica za razvrstavanje]]",
-'doubleredirects' => 'Dvostruka preusmjerenja',
-'doubleredirectstext' => 'Ova stranica prikazuje stranice koje preusmjeravaju na druga preusmjerenja.
+'doubleredirects' => 'Dvostruka preusmjerenja',
+'doubleredirectstext' => 'Ova stranica prikazuje stranice koje preusmjeravaju na druga preusmjerenja.
Svaki red sadrži veze na prvo i drugo preusmjerenje, kao i na prvu liniju teksta drugog preusmjerenja, Å¡to obiÄno daje "pravi" ciljni Älanak, na koji bi prvo preusmjerenje i trebalo da pokazuje.
<del>Precrtane</del> stavke su riješene.',
-'double-redirect-fixed-move' => '[[$1]] je premješten, sada je preusmjerenje na [[$2]]',
-'double-redirect-fixer' => 'PopravljaÄ preusmjerenja',
+'double-redirect-fixed-move' => '[[$1]] je premješten, sada je preusmjerenje na [[$2]]',
+'double-redirect-fixed-maintenance' => 'Popravak dvostrukih datoteka od [[$1]] do [[$2]].',
+'double-redirect-fixer' => 'PopravljaÄ preusmjerenja',
'brokenredirects' => 'Pokvarena preusmjerenja',
'brokenredirectstext' => 'Slijedeća preusmjerenja vode na nepostojeće stranice:',
@@ -1747,6 +1978,7 @@ na kome bi se izvela ova funkcija.',
'pager-newer-n' => '{{PLURAL:$1|novija 1|novije $1}}',
'pager-older-n' => '{{PLURAL:$1|starija 1|starije $1}}',
'suppress' => 'Nazdor',
+'querypage-disabled' => 'Ova posebna stranica je onemogućena jer smanjuje performanse.',
# Book sources
'booksources' => 'Književni izvori',
@@ -1756,8 +1988,8 @@ na kome bi se izvela ova funkcija.',
'booksources-invalid-isbn' => 'Navedeni ISBN broj nije validan; molimo da provjerite da li je došlo do greške pri kopiranju iz prvobitnog izvora.',
# Special:Log
-'specialloguserlabel' => 'Korisnik:',
-'speciallogtitlelabel' => 'Naslov:',
+'specialloguserlabel' => 'Izvršilac:',
+'speciallogtitlelabel' => 'Cilj (naslov ili korisnik):',
'log' => 'Registri',
'all-logs-page' => 'Svi javni registri',
'alllogstext' => 'ZajedniÄki prikaz svih dostupnih evidencija sa {{SITENAME}}.
@@ -1798,12 +2030,13 @@ Vidi također [[Special:WantedCategories|zatražene kategorije]].',
'sp-deletedcontributions-contribs' => 'doprinosi',
# Special:LinkSearch
-'linksearch' => 'Vanjski/spoljašni linkovi',
+'linksearch' => 'Pretraga vanjskih/spoljašnih linkova',
'linksearch-pat' => 'Å ema pretrage:',
'linksearch-ns' => 'Imenski prostor:',
'linksearch-ok' => 'Traži',
-'linksearch-text' => 'Općeniti izrazi poput "*.wikipedia.org" se mogu koristiti.<br />
-Podržani protokoli: <tt>$1</tt>',
+'linksearch-text' => 'Mogu se koristiti džokeri poput „*.wikipedia.org“.<br />
+Potreban je najviši domen, kao „*.org“.<br />
+Podržani protokoli: <tt>$1</tt> (ne stavljajte u pretragu)',
'linksearch-line' => '$1 je povezan od $2',
'linksearch-error' => 'Džokeri se mogu pojavljivati samo na poÄetku naziva servera.',
@@ -1864,6 +2097,10 @@ E-mail adresa koju ste unijeli u [[Special:Preferences|VaÅ¡im korisniÄkim posta
'noemailtext' => 'Ovaj korisnik nije naveo ispravnu adresu e-pošte.',
'nowikiemailtitle' => 'E-mail nije dozvoljen',
'nowikiemailtext' => 'Ovaj korisnik je odabrao da ne prima e-mail poštu od drugih korisnika.',
+'emailnotarget' => 'Neodgovarajuće ili nevaljano korisniÄko ime za primanje e-maillova.',
+'emailtarget' => 'Unesite korisnika za primanje e-mailova',
+'emailusername' => 'KorisniÄko ime:',
+'emailusernamesubmit' => 'Unesi',
'email-legend' => 'Slanje e-maila drugom {{SITENAME}} korisniku',
'emailfrom' => 'Od:',
'emailto' => 'Za:',
@@ -1888,10 +2125,10 @@ E-mail adresa koju ste unijeli u [[Special:Preferences|VaÅ¡im korisniÄkim posta
'watchlistanontext' => 'Molimo da $1 da možete vidjeti ili urediti stavke na Vašem spisku praćenja.',
'watchnologin' => 'Niste prijavljeni',
'watchnologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]] da bi ste mijenjali spisak praćenih Älanaka.',
-'addedwatch' => 'Dodano na listu praćenih stranica',
+'addwatch' => 'Dodaj u popis praćenja',
'addedwatchtext' => "Stranica \"[[:\$1]]\" je dodana [[Special:Watchlist|vašoj listi praćenih stranica]].
Buduće promjene ove stranice i njoj pridružene stranice za razgovor će biti navedene ovdje, te će stranica izgledati '''podebljana''' u [[Special:RecentChanges|listi nedavnih]] izmjena kako bi se lakÅ¡e uoÄila.",
-'removedwatch' => 'Uklonjeno s liste praćenja',
+'removewatch' => 'Ukloni sa spiska praćenja',
'removedwatchtext' => 'Stranica "[[:$1]]" je uklonjena s [[Special:Watchlist|vaše liste praćenja]].',
'watch' => 'Prati',
'watchthispage' => 'Prati ovu stranicu',
@@ -1912,8 +2149,9 @@ Buduće promjene ove stranice i njoj pridružene stranice za razgovor će biti n
'watchlist-options' => 'Opcije liste praćenja',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Pratim…',
-'unwatching' => 'Ne pratim…',
+'watching' => 'Pratim…',
+'unwatching' => 'Ne pratim…',
+'watcherrortext' => 'Desila se greška pri promjeni postavki vašeg spiska praćenja za "$1".',
'enotif_mailer' => '{{SITENAME}} obavještenje o pošti',
'enotif_reset' => 'OznaÄi sve strane kao posjećene',
@@ -1927,31 +2165,34 @@ Buduće promjene ove stranice i njoj pridružene stranice za razgovor će biti n
'enotif_anon_editor' => 'anonimni korisnik $1',
'enotif_body' => 'Poštovani $WATCHINGUSERNAME,
-{{SITENAME}} stranica $PAGETITLE je bila $CHANGEDORCREATED $PAGEEDITDATE od strane $PAGEEDITOR,
-pogledajte $PAGETITLE_URL za trenutnu verziju.
+
+Stranica {{SITENAME}} sa naslovom $PAGETITLE je bila $CHANGEDORCREATED dana $PAGEEDITDATE od strane $PAGEEDITOR, pogledajte $PAGETITLE_URL za trenutnu reviziju.
$NEWPAGE
-Sažetak editora: $PAGESUMMARY $PAGEMINOREDIT
+Sažetak urednika: $PAGESUMMARY $PAGEMINOREDIT
-Kontaktirajte editora:
-pošta: $PAGEEDITOR_EMAIL
+Kontaktirajte urednika:
+mail: $PAGEEDITOR_EMAIL
wiki: $PAGEEDITOR_WIKI
-Neće biti drugih obavijeÅ¡tenja u sluÄaju daljih izmjena ukoliko ne posjetite ovu stranu.
-TakoÄ‘er možete da resetujete zastavice za obavijeÅ¡tenja za sve VaÅ¡e praćene stranice na vaÅ¡em spisku praćenih Älanaka.
+Neće biti drugih obavjeÅ¡tenja u sluÄaju daljnjih izmjena osima ako posjetite stranicu.
+Također možete poništiti oznake obavijesti za sve praćene stranice koje imate na vašem spisku praćenja.
- Vaš prijateljski {{SITENAME}} sistem obaviještavanja
+ Vaš prijateljski {{SITENAME}} sistem obavještavanja
--
-Da promjenite podeÅ¡avanja vezana za spisak praćenih Älanaka posjetite
-{{fullurl:{{#special:Watchlist}}/edit}}
+Za promjenu vaših postavki e-mail obavijesti, posjetite
+{{canonicalurl:{{#special:Preferences}}}}
+
+Za promjenu postavki vašeg praćenja, posjetite
+{{canonicalurl:{{#special:EditWatchlist}}}}
-Da obrišete stranicu iz Vašeg spiska praćenja posjetite
+Da obrišete stranicu sa vašeg spiska praćenja, posjetite
$UNWATCHURL
-Fidbek i dalja pomoć:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+Povratne informacije i daljnja pomoć:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Izbrišite stranicu',
@@ -1967,7 +2208,7 @@ Fidbek i dalja pomoć:
Molimo da potvrdite da ćete to uÄiniti, da razumijete posljedice te da to Äinite u skladu sa [[{{MediaWiki:Policy-url}}|pravilima]].',
'actioncomplete' => 'Akcija završena',
'actionfailed' => 'Akcija nije uspjela',
-'deletedtext' => '"<nowiki>$1</nowiki>" je obrisan/a.
+'deletedtext' => '"$1" je obrisan/a.
V. $2 za registar nedavnih brisanja.',
'deletedarticle' => 'obrisan "[[$1]]"',
'suppressedarticle' => 'promijeni vidljivost od "[[$1]]"',
@@ -2025,7 +2266,7 @@ Pogledajte [[Special:ProtectedPages|spisak zaštićenih stranica]] za pregled tr
'protect_expiry_invalid' => 'Upisani vremenski rok nije valjan.',
'protect_expiry_old' => 'Upisani vremenski rok je u prošlosti.',
'protect-unchain-permissions' => 'OtkljuÄaj daljnje opcije zaÅ¡tite',
-'protect-text' => "Ovdje možete gledati i izmijeniti nivo zaštite za stranicu '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Ovdje možete gledati i izmijeniti nivo zaštite za stranicu '''$1'''.",
'protect-locked-blocked' => "Ne možete promijeniti nivo zaštite dok ste blokirani.
Ovo su trenutne postavke za stranicu '''$1''':",
'protect-locked-dblock' => "Nivoi zaÅ¡tite se ne mogu mijenjati jer je aktivna baza podataka zakljuÄana.
@@ -2080,9 +2321,8 @@ Možete promijeniti stepen zaštite ove stranice, ali to neće uticati na prenos
'undeletepagetext' => '{{PLURAL:$1|Slijedeća $1 stranica je obrisana|Slijedeće $1 stranice su obrisane|Slijedećih $1 je obrisano}} ali su još uvijek u arhivi i mogu biti vraćene.
Arhiva moÅ¡e biti periodiÄno Äišćena.',
'undelete-fieldset-title' => 'Vraćanje revizija',
-'undeleteextrahelp' => "Da vratite cijelu historijus stranice, ostavite sve kutijice neoznaÄene i kliknite '''''Vrati'''''.
-Da bi izvrÅ¡ili selektivno vraćanje Älanaka, odaberite kutijice koje odgovaraju revizijama koje želite vratiti, i kliknite '''''Vrati'''''.
-Klikom na '''''OÄisti''''' ćete oÄistiti polje za komentar i sve kutijice.",
+'undeleteextrahelp' => "Da vratite cijelu historiju Älanka, ostavite sve kutijice neoznaÄene i kliknite '''''{{int:undeletebtn}}'''''.
+Da bi izvršili selektivno vraćanje, odaberite kutijice koje odgovaraju revizijama koje želite vratiti, i kliknite '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '{{PLURAL:$1|$1 revizija arhivirana|$1 revizije arhivirane|$1 revizija arhivirano}}',
'undeletehistory' => 'Ako vratite stranicu, sve revizije će biti vraćene njenoj historiji.
Ako je nova stranica istog imena napravljena od brisanja, vraćene revizije će se pojaviti u njenoj ranijoj historiji.',
@@ -2128,9 +2368,12 @@ $1',
'undelete-show-file-submit' => 'Da',
# Namespace form on various pages
-'namespace' => 'Imenski prostor:',
-'invert' => 'Sve osim odabranog',
-'blanknamespace' => '(Glavno)',
+'namespace' => 'Imenski prostor:',
+'invert' => 'Sve osim odabranog',
+'tooltip-invert' => 'OznaÄite ovu kutiju za sakrivanje promjena na stranicama u odabranom imenskom prostoru (i povezanim imenskim prostorima ako je oznaÄeno)',
+'namespace_association' => 'Povezan imenski prostor',
+'tooltip-namespace_association' => 'OznaÄite ovu kutiju da takoÄ‘er ukljuÄite razgovor ili imenski prostor teme koja je povezana sa odabranim imenskim prostorom',
+'blanknamespace' => '(Glavno)',
# Contributions
'contributions' => 'Doprinosi korisnika',
@@ -2180,13 +2423,15 @@ Posljednje stavke zapisnika blokiranja možete pogledati ispod:',
'whatlinkshere-filters' => 'Filteri',
# Block/unblock
+'autoblockid' => 'Automatska blokada #$1',
+'block' => 'Blokiraj korisnika',
+'unblock' => 'Odblokiraj korisnika',
'blockip' => 'Blokiraj korisnika',
'blockip-title' => 'Blokiraj korisnika',
'blockip-legend' => 'Blokiranje korisnika',
'blockiptext' => 'Upotrebite donji upitnik da biste uklonili prava pisanja sa odreÄ‘ene IP adrese ili korisniÄkog imena.
Ovo bi trebalo da bude uraÄ‘eno samo da bi se sprijeÄio vandalizam, i u skladu sa [[{{MediaWiki:Policy-url}}|smjernicama]].
Unesite konkretan razlog ispod (na primjer, navodeći koje konkretne stranice su vandalizovane).',
-'ipaddress' => 'IP adresa:',
'ipadressorusername' => 'IP adresa ili korisniÄko ime:',
'ipbexpiry' => 'IstiÄe:',
'ipbreason' => 'Razlog:',
@@ -2199,7 +2444,7 @@ Unesite konkretan razlog ispod (na primjer, navodeći koje konkretne stranice su
**Osobni napadi (ili napadaÄko ponaÅ¡anje)
**ÄŒarapare (zloupotreba viÅ¡e korisniÄkih raÄuna)
**Neprihvatljivo korisniÄko ime',
-'ipbanononly' => 'Blokiraj samo anonimne korisnike',
+'ipb-hardblock' => 'Onemogući prijavljene korisnike da uređuju sa ove IP adrese',
'ipbcreateaccount' => 'Onemogući stvaranje raÄuna',
'ipbemailban' => 'Onemogući korisnika da šalje e-mail',
'ipbenableautoblock' => 'Automatski blokiraj zadnju IP adresu koju je koristio ovaj korisnik i sve druge IP adrese s kojih je on pokušao uređivati',
@@ -2210,12 +2455,15 @@ Unesite konkretan razlog ispod (na primjer, navodeći koje konkretne stranice su
'ipbotherreason' => 'Ostali/dodatni razlog/zi:',
'ipbhidename' => 'Sakrij korisniÄko ime iz ureÄ‘ivanja i spiskova',
'ipbwatchuser' => 'Prati korisniÄku stranicu i stranicu za razgovor ovog korisnika',
-'ipballowusertalk' => 'Dopusti ovom korisniku da mijenja vlastitu stranicu za razgovor dok je blokiran',
+'ipb-disableusertalk' => 'Onemogući ovog korisnika da uređuje svoju vlastitu stranicu za razgovor dok je blokiran',
'ipb-change-block' => 'Ponovno blokiraj korisnika sa ovim postavkama',
+'ipb-confirm' => 'Potvrdite blokiranje',
'badipaddress' => 'Nevaljana IP adresa',
'blockipsuccesssub' => 'Blokiranje je uspjelo',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] je blokiran.
<br />Pogledajte [[Special:IPBlockList|IP spisak blokiranih korisnika]] za pregled blokiranja.',
+'ipb-blockingself' => 'Ovom akcijom ćete blokirati sebe! Da li ste sigurni da to želite?',
+'ipb-confirmhideuser' => "Upravo ćete blokirati korisnika sa ukljuÄenom opcijom ''sakrij korisnika''. Ovim će korisniÄko ime biti sakriveno u svim spiskovima i stavkama zapisnika. Da li ste sigurni da to želite?",
'ipb-edit-dropdown' => 'Uredi razloge blokiranja',
'ipb-unblock-addr' => 'Deblokiraj $1',
'ipb-unblock' => 'Deblokiraj korisniÄko ime ili IP adresu',
@@ -2225,17 +2473,23 @@ Unesite konkretan razlog ispod (na primjer, navodeći koje konkretne stranice su
'unblockiptext' => 'Upotrebite donji upitnik da bi ste vratili pravo pisanja ranije blokiranoj IP adresi ili korisniÄkom imenu.',
'ipusubmit' => 'Ukloni ovu blokadu',
'unblocked' => '[[User:$1|$1]] je deblokiran',
+'unblocked-range' => '$1 je deblokiran',
'unblocked-id' => 'Blokada ID oznake $1 je uklonjena',
+'blocklist' => 'Blokirani korisnici',
'ipblocklist' => 'Blokirani korisnici',
'ipblocklist-legend' => 'Traži blokiranog korisnika',
-'ipblocklist-username' => 'KorisniÄko ime ili IP adresa:',
-'ipblocklist-sh-userblocks' => '$1 blokade raÄuna',
-'ipblocklist-sh-tempblocks' => '$1 privremene blokade',
-'ipblocklist-sh-addressblocks' => '$1 pojedinaÄne IP blokade',
+'blocklist-userblocks' => 'Sakrij blokade raÄuna',
+'blocklist-tempblocks' => 'Sakrij privremene blokade',
+'blocklist-addressblocks' => 'Sakrij pojedinaÄne IP blokade',
+'blocklist-timestamp' => 'Vremenska oznaka',
+'blocklist-target' => 'Cilj',
+'blocklist-expiry' => 'IstiÄe',
+'blocklist-by' => 'Administrator koji je blokirao',
+'blocklist-params' => 'Parametri blokade',
+'blocklist-reason' => 'Razlog',
'ipblocklist-submit' => 'Traži',
'ipblocklist-localblock' => 'Lokalna blokada',
'ipblocklist-otherblocks' => 'Ostale {{PLURAL:$1|blokada|blokade}}',
-'blocklistline' => '$1, $2 blokirao korisnika $3 ($4)',
'infiniteblock' => 'nije ograniÄena',
'expiringblock' => 'istiÄe dana $1 u $2',
'anononlyblock' => 'samo anonimni korisnici',
@@ -2260,7 +2514,7 @@ Evidencija sakrivanja je prikazana ispod kao referenca:',
'reblock-logentry' => 'promjena postavki blokiranja za [[$1]] sa vremenom isteka u $2 $3',
'blocklogtext' => 'Ovo je historija akcija blokiranja i deblokiranja korisnika.
Automatsko blokirane IP adrese nisu uspisane ovde.
-Pogledajte [[Special:IPBlockList|blokirane IP adrese]] za spisak trenutnih zabrana i blokiranja.',
+Pogledajte [[Special:BlockList|blokirane IP adrese]] za spisak trenutnih zabrana i blokiranja.',
'unblocklogentry' => 'deblokiran $1',
'block-log-flags-anononly' => 'samo anonimni korisnici',
'block-log-flags-nocreate' => 'pravljenje raÄuna onemogućeno',
@@ -2274,10 +2528,10 @@ Pogledajte [[Special:IPBlockList|blokirane IP adrese]] za spisak trenutnih zabra
'ipb_expiry_temp' => 'Sakrivene blokade korisniÄkih imena moraju biti stalne.',
'ipb_hide_invalid' => 'Ne može se onemogućiti ovaj raÄun; možda ima isuviÅ¡e izmjena.',
'ipb_already_blocked' => '"$1" je već blokiran',
-'ipb-needreblock' => '== Već blokirano ==
-$1 je već blokiran.
+'ipb-needreblock' => '$1 je već blokiran.
Da li želite promijeniti postavke?',
'ipb-otherblocks-header' => 'Ostale {{PLURAL:$1|blokada|blokade}}',
+'unblock-hideuser' => 'Ne možete deblokirati ovog korisnika jer je njegovo korisniÄko ime sakriveno.',
'ipb_cant_unblock' => 'Greška: Blokada sa ID oznakom $1 nije pronađena.
Možda je već deblokirana.',
'ipb_blocked_as_range' => 'Greška: IP adresa $1 nije direktno blokirana i ne može se deblokirati.
@@ -2319,6 +2573,7 @@ Sjetite se da je [[Special:UnlockDB|otkljuÄate]] nakon Å¡to dovrÅ¡ite održavan
'lockfilenotwritable' => 'Datoteka zakljuÄavanja baze je zaÅ¡tićena za pisanje.
Ako želite otkljuÄati ili zakljuÄati bazu, ova datoteka mora biti omogućena za pisanje od strane web servera.',
'databasenotlocked' => 'Baza podataka nije zakljuÄana.',
+'lockedbyandtime' => '(od $1 dana $2 u $3)',
# Move page
'move-page' => 'Preusmjeravanje $1',
@@ -2441,7 +2696,7 @@ U drugom sluÄaju možete koristiti i vezu, npr. [[{{#Special:Export}}/{{MediaWi
'allmessagesdefault' => 'UobiÄajeni tekst',
'allmessagescurrent' => 'Trenutni tekst',
'allmessagestext' => 'Ovo je spisak svih sistemskih poruka u dostupnih u MediaWiki imenskom prostoru.
-Molimo posjetite [http://www.mediawiki.org/wiki/Localisation MediaWiki lokalizaciju] i [http://translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.',
+Molimo posjetite [//www.mediawiki.org/wiki/Localisation MediaWiki lokalizaciju] i [//translatewiki.net translatewiki.net] ako želite doprinijeti općoj lokalizaciji MediaWikija.',
'allmessagesnotsupportedDB' => "Ova stranica ne može biti koriÅ¡tena jer je '''\$wgUseDatabaseMessages''' iskljuÄen.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter po stanju podešavanja:',
@@ -2586,9 +2841,7 @@ Dozvoljava unošenje razloga za to u sažetku.',
'tooltip-summary' => 'Unesite kratki sažetak',
# Metadata
-'nodublincore' => 'Dublin Core RDF metapodaci onemogućeni za ovaj server.',
-'nocreativecommons' => 'Creative Commons RDF metapodaci onemogućeni za ovaj server.',
-'notacceptable' => 'Viki server ne može da pruži podatke u onom formatu koji VaÅ¡ klijent može da proÄita.',
+'notacceptable' => 'Viki server ne može da pruži podatke u onom formatu koji VaÅ¡ klijent može da proÄita.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonimni korisnik|$1 anonimna korisnika|$1 anonimnih korisnika}} projekta {{SITENAME}}',
@@ -2612,31 +2865,17 @@ Ovo je vjerovatno izazvano vezom ka vanjskoj nepoželjnoj stranici.',
'spam_blanking' => 'Sve revizije koje sadrže linkove ka $1, oÄisti',
# Info page
-'infosubtitle' => 'Informacije za stranicu',
-'numedits' => 'Broj izmjena (stranica): $1',
-'numtalkedits' => 'Broj izmjena (stranice za razgovor): $1',
-'numwatchers' => 'Broj onih koji pregledaju: $1',
-'numauthors' => 'Broj razliÄitih autora (stranice): $1',
-'numtalkauthors' => 'Broj razliÄitih autora (stranice za razgovor): $1',
-
-# Math options
-'mw_math_png' => 'Uvijek prikaži kao PNG',
-'mw_math_simple' => 'HTML ako je jednostavno, inaÄe PNG',
-'mw_math_html' => 'HTML ako je moguće, inaÄe PNG',
-'mw_math_source' => 'Ostavi kao TeX (za tekstualne preglednike)',
-'mw_math_modern' => 'PreporuÄeno za moderne preglednike',
-'mw_math_mathml' => 'MathML ako je moguće (eksperimentalno)',
-
-# Math errors
-'math_failure' => 'Neuspjeh pri parsiranju',
-'math_unknown_error' => 'nepoznata greška',
-'math_unknown_function' => 'nepoznata funkcija',
-'math_lexing_error' => 'rijeÄniÄka greÅ¡ka',
-'math_syntax_error' => 'sintaksna greška',
-'math_image_error' => 'PNG konverzija neuspjeÅ¡na; provjerite taÄnu instalaciju latex-a i dvipng-a (ili dvips + gs + convert)',
-'math_bad_tmpdir' => 'Ne može se napisati ili napraviti privremeni matematiÄki direktorijum',
-'math_bad_output' => 'Ne može se napisati ili napraviti direktorijum za matematiÄki izvjeÅ¡taj.',
-'math_notexvc' => 'Nedostaje izvršno texvc; molimo Vas da pogledate math/README da podesite.',
+'pageinfo-title' => 'Informacije za "$1"',
+'pageinfo-header-edits' => 'Izmjene',
+'pageinfo-header-watchlist' => 'Praćene stranice',
+'pageinfo-header-views' => 'Pregledi',
+'pageinfo-subjectpage' => 'Stranica',
+'pageinfo-talkpage' => 'Stranica za razgovor',
+'pageinfo-watchers' => 'Broj onih koji pregledaju',
+'pageinfo-edits' => 'Broj izmjena',
+'pageinfo-authors' => 'Broj specifiÄnih autora',
+'pageinfo-views' => 'Broj pregleda',
+'pageinfo-viewsperedit' => 'Pregleda po izmjeni',
# Patrolling
'markaspatrolleddiff' => 'OznaÄi kao patrolirano',
@@ -2673,22 +2912,25 @@ $1',
'nextdiff' => 'Novija izmjena →',
# Media information
-'mediawarning' => "'''Upozorenje''': Ova datoteka sadrži loš kod.
+'mediawarning' => "'''Upozorenje''': Ova datoteka sadrži loš kod.
Njegovim izvršavanjem možete da ugrozite Vaš sistem.",
-'imagemaxsize' => "OgraniÄenje veliÄine slike:<br />''(za stranice opisa datoteke)''",
-'thumbsize' => 'VeliÄina umanjenog prikaza:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stranica|stranice|stranica}}',
-'file-info' => 'veliÄina datoteke: $1, MIME tip: $2',
-'file-info-size' => '$1 × $2 piksela, veliÄina datoteke/fajla: $3, MIME tip: $4',
-'file-nohires' => '<small>Veća rezolucija nije dostupna.</small>',
-'svg-long-desc' => 'SVG fajl, nominalno $1 × $2 piksela, veliÄina fajla: $3',
-'show-big-image' => 'Puna rezolucija',
-'show-big-image-thumb' => '<small>VeliÄina ovog prikaza: $1 × $2 piksela</small>',
-'file-info-gif-looped' => 'stalno iznova',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|sliÄica|sliÄice|sliÄica}}',
-'file-info-png-looped' => 'stalno iznova',
-'file-info-png-repeat' => 'pregledano $1 {{PLURAL:$1|put|puta}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|sliÄica|sliÄice|sliÄica}}',
+'imagemaxsize' => "OgraniÄenje veliÄine slike:<br />''(za stranice opisa datoteke)''",
+'thumbsize' => 'VeliÄina umanjenog prikaza:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stranica|stranice|stranica}}',
+'file-info' => 'veliÄina datoteke: $1, MIME tip: $2',
+'file-info-size' => '$1 × $2 piksela, veliÄina datoteke/fajla: $3, MIME tip: $4',
+'file-info-size-pages' => '$1 × $2 piksela, veliÄina datoteke: $3, MIME vrsta: $4, $5 {{PLURAL:$5|stranica|stranice|stranica}}',
+'file-nohires' => '<small>Veća rezolucija nije dostupna.</small>',
+'svg-long-desc' => 'SVG fajl, nominalno $1 × $2 piksela, veliÄina fajla: $3',
+'show-big-image' => 'Puna rezolucija',
+'show-big-image-preview' => '<small>VeliÄina ovog prikaza: $1.</small>',
+'show-big-image-other' => '<small>Ostale rezolucije: $1.</small>',
+'show-big-image-size' => '$1 × $2 piksela',
+'file-info-gif-looped' => 'stalno iznova',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|sliÄica|sliÄice|sliÄica}}',
+'file-info-png-looped' => 'stalno iznova',
+'file-info-png-repeat' => 'pregledano $1 {{PLURAL:$1|put|puta}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|sliÄica|sliÄice|sliÄica}}',
# Special:NewFiles
'newimages' => 'Galerija novih slika',
@@ -2714,14 +2956,21 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'metadata-help' => 'Ova datoteka/fajl sadržava dodatne podatke koje je vjerojatno dodala digitalna kamera ili skener u procesu snimanja odnosno digitalizacije. Ako je datoteka/fajl mijenjana u odnosu na prvotno stanje, neki detalji možda nisu u skladu s trenutnim stanjem.',
'metadata-expand' => 'Pokaži dodatne detalje',
'metadata-collapse' => 'Sakrij dodatne detalje',
-'metadata-fields' => "Sljedeći EXIF metapodaci će biti prikazani ispod slike u tablici s metapodacima. Ostali će biti sakriveni (možete ih vidjeti ako kliknete na link ''Pokaži sve detalje'').
+'metadata-fields' => 'Polja metapodataka slika su prikazani ispod slike će biti ukljuÄeni u prikaz stranice slike kada je sakrivena tabela metapodataka. U suprotnom će biti sakrivena po postavkama.
+
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Å irina',
@@ -2736,13 +2985,11 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-ycbcrpositioning' => 'Pozicioniranje Y i C',
'exif-xresolution' => 'Horizontalna rezolucija',
'exif-yresolution' => 'Vertikalna rezolucija',
-'exif-resolutionunit' => 'Jedinice X i Y rezolucije',
'exif-stripoffsets' => 'Lokacija podataka slike',
'exif-rowsperstrip' => 'Broj redaka po liniji',
'exif-stripbytecounts' => 'Bita po kompresovanoj liniji',
'exif-jpeginterchangeformat' => 'Presijek do JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bita JPEG podataka',
-'exif-transferfunction' => 'Transferna funkcija',
'exif-whitepoint' => 'Hromiranost bijele taÄke',
'exif-primarychromaticities' => 'Hromaticitet primarnih boja',
'exif-ycbcrcoefficients' => 'Koeficijenti transformacije matrice prostora boja',
@@ -2761,7 +3008,6 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-compressedbitsperpixel' => 'NaÄin kompresije slike',
'exif-pixelydimension' => 'Å irina slike',
'exif-pixelxdimension' => 'Visina slike',
-'exif-makernote' => 'BiljeÅ¡ke proizvoÄ‘aÄa',
'exif-usercomment' => 'KorisniÄki komentari',
'exif-relatedsoundfile' => 'Povezana zvuÄna datoteka',
'exif-datetimeoriginal' => 'Datum i vrijeme generisanja podataka',
@@ -2776,7 +3022,6 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-exposureprogram' => 'Program ekspozicije',
'exif-spectralsensitivity' => 'Spektralna osjetljivost',
'exif-isospeedratings' => 'Rejting ISO brzine',
-'exif-oecf' => 'Optoelektronski faktor konvezije',
'exif-shutterspeedvalue' => 'Brzina APEX okidaÄa',
'exif-aperturevalue' => 'APEX otvor',
'exif-brightnessvalue' => 'APEX osvijetljenost',
@@ -2790,7 +3035,6 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-focallength-format' => '$1 mm',
'exif-subjectarea' => 'Površina objekta',
'exif-flashenergy' => 'Energija bljeska',
-'exif-spatialfrequencyresponse' => 'Prostorna frekvencija odgovora',
'exif-focalplanexresolution' => 'Rezolucija fokusne ravni X',
'exif-focalplaneyresolution' => 'Rezolucija fokusne ravni Y',
'exif-focalplaneresolutionunit' => 'Jedinica rezolucije fokusne ravni',
@@ -2799,7 +3043,6 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-sensingmethod' => 'Vrsta senzora',
'exif-filesource' => 'Izvor datoteke',
'exif-scenetype' => 'Vrsta scene',
-'exif-cfapattern' => 'CFA Å¡ema',
'exif-customrendered' => 'Podešeno uređivanje slike',
'exif-exposuremode' => 'Vrsta ekspozicije',
'exif-whitebalance' => 'Bijeli balans',
@@ -2844,10 +3087,79 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-gpsareainformation' => 'Naziv GPS podruÄja',
'exif-gpsdatestamp' => 'GPS datum',
'exif-gpsdifferential' => 'GPS diferencijalna korekcija',
+'exif-jpegfilecomment' => 'JPEG komentar datoteke',
+'exif-keywords' => 'KljuÄne rijeÄi',
+'exif-worldregioncreated' => 'Regija svijeta gdje je slika naÄinjena',
+'exif-countrycreated' => 'Zemlja gdje je slika naÄinjena',
+'exif-countrycodecreated' => 'Kod države gdje je slika naÄinjena',
+'exif-provinceorstatecreated' => 'Provincija ili država gdje je slika naÄinjena',
+'exif-citycreated' => 'Grad gdje je slika naÄinjena',
+'exif-sublocationcreated' => 'Podlokacija grada gdje je slika naÄinjena',
+'exif-worldregiondest' => 'Prikazana regija svijeta',
+'exif-countrydest' => 'Prikazana zemlja',
+'exif-countrycodedest' => 'Kod prikazane države',
+'exif-provinceorstatedest' => 'Prikazana provincija ili država',
+'exif-citydest' => 'Prikazani grad',
+'exif-sublocationdest' => 'Podlokacija grada koja je prikazana',
'exif-objectname' => 'Kratki naslov',
+'exif-specialinstructions' => 'Posebne upute',
+'exif-headline' => 'Naslov',
+'exif-credit' => 'Pripisivanje/Pružalac usluga',
+'exif-source' => 'Izvor',
+'exif-editstatus' => 'UredniÄki status slike',
+'exif-urgency' => 'Hitnost',
+'exif-fixtureidentifier' => 'Naziv rubrike',
+'exif-locationdest' => 'Prikazana lokacija',
+'exif-locationdestcode' => 'Kod prikazane lokacije',
+'exif-objectcycle' => 'Vrijeme dana za koga je namijenjen medij',
+'exif-contact' => 'Kontaktna informacija',
+'exif-writer' => 'Pisac',
+'exif-languagecode' => 'Jezik',
+'exif-iimversion' => 'IIM verzija',
+'exif-iimcategory' => 'Kategorija',
+'exif-iimsupplementalcategory' => 'Dodatne kategorije',
+'exif-datetimeexpires' => 'Ne koristite iza',
+'exif-datetimereleased' => 'Uzdano na',
+'exif-originaltransmissionref' => 'Originalni transmisijski lokacijski kod',
+'exif-identifier' => 'Oznaka',
+'exif-lens' => 'Korišteni objektiv',
+'exif-serialnumber' => 'Serijski broj kamere',
+'exif-cameraownername' => 'Vlasnik kamere',
+'exif-label' => 'Oznaka',
+'exif-datetimemetadata' => 'Datum kada su metapodaci posljednji put modificirani',
+'exif-nickname' => 'Informalni naslov slike',
+'exif-rating' => 'Rejting (1 do 5)',
+'exif-rightscertificate' => 'Certifikat upravljanja pravima',
+'exif-copyrighted' => 'Status autorskih prava:',
+'exif-copyrightowner' => 'Vlasnik autorskih prava',
+'exif-usageterms' => 'Pravila korištenja',
+'exif-webstatement' => 'Online izjava o autorskim pravima',
+'exif-originaldocumentid' => 'Jedinstveni ID originalnog dokumenta',
+'exif-licenseurl' => 'URL za licencu autorskih prava',
+'exif-morepermissionsurl' => 'Informacija o alternativnoj licenci',
+'exif-attributionurl' => 'Kada ponovno koristite ovaj rad, molimo povežite ga na',
+'exif-preferredattributionname' => 'Kada ponovno koristite ovaj rad, molimo pripišite ga na',
+'exif-pngfilecomment' => 'PNG komentar datoteke',
+'exif-disclaimer' => 'Odricanje odgovornosti',
+'exif-contentwarning' => 'Upozorenje o sadržaju',
+'exif-giffilecomment' => 'GIF komentar datoteke',
+'exif-intellectualgenre' => 'Tip predmeta',
+'exif-subjectnewscode' => 'Kod predmeta',
+'exif-scenecode' => 'IPTC kod scene',
+'exif-event' => 'Prikazani događaj',
+'exif-organisationinimage' => 'Prikazana organizacija',
+'exif-personinimage' => 'Prikazana osoba',
+'exif-originalimageheight' => 'Visina slike prije nego Å¡to je odrezana',
+'exif-originalimagewidth' => 'Å irina slike prije nego Å¡to je odrezana',
# EXIF attributes
'exif-compression-1' => 'Nekompresovano',
+'exif-compression-2' => 'CCITT Grupa 3 1 — Dimenzionalno izmijenjeo Huffmanovo šifriranje po dužini',
+'exif-compression-3' => 'CCITT Group 3 faks kodiranje',
+'exif-compression-4' => 'CCITT Group 4 faks kodiranje',
+
+'exif-copyrighted-true' => 'Pod autorskim pravima',
+'exif-copyrighted-false' => 'Javno vlasništvo',
'exif-unknowndate' => 'Nepoznat datum',
@@ -2856,9 +3168,9 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-orientation-3' => 'Rotirano 180°',
'exif-orientation-4' => 'Vertikalno preokrenuto',
'exif-orientation-5' => 'Rotirano 90° suprotno kazaljke i vertikalno obrnuto',
-'exif-orientation-6' => 'Rotirano 90° u smjeru kazaljke',
+'exif-orientation-6' => 'Zaokrenuto 90° suprotno od smjera kazaljke',
'exif-orientation-7' => 'Rotirano 90° u smjeru kazaljke i preokrenuto vertikalno',
-'exif-orientation-8' => 'Rotirano 90° suprotno od kazaljke',
+'exif-orientation-8' => 'Rotirano 90° u smjeru kazaljke',
'exif-planarconfiguration-1' => 'grubi format',
'exif-planarconfiguration-2' => 'format u ravni',
@@ -2866,8 +3178,8 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-xyresolution-i' => '$1 dpi',
'exif-xyresolution-c' => '$1 dpc',
-'exif-colorspace-1' => 'sRGB',
-'exif-colorspace-ffff.h' => 'FFFF.H',
+'exif-colorspace-1' => 'sRGB',
+'exif-colorspace-65535' => 'Nekalibrirana',
'exif-componentsconfiguration-0' => 'ne postoji',
@@ -2983,6 +3295,10 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-gpslongitude-e' => 'IstoÄna dužina',
'exif-gpslongitude-w' => 'Zapadna dužina',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metar|metara}} nadmorske visine',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metar|metara}} ispod morske razine',
+
'exif-gpsstatus-a' => 'Mjerenje u toku',
'exif-gpsstatus-v' => 'Mjerenje van funkcije',
@@ -2994,21 +3310,73 @@ Svi drugi linkovi u istoj liniji se smatraju izuzecima, npr. kod stranica gdje s
'exif-gpsspeed-m' => 'Milja na sat',
'exif-gpsspeed-n' => 'ÄŒvorova',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometara',
+'exif-gpsdestdistance-m' => 'Milja',
+'exif-gpsdestdistance-n' => 'NautiÄkih milja',
+
+'exif-gpsdop-excellent' => 'OdliÄno ($1)',
+'exif-gpsdop-good' => 'Dobro ($1)',
+'exif-gpsdop-moderate' => 'Osrednje ($1)',
+'exif-gpsdop-fair' => 'Pristojno ($1)',
+'exif-gpsdop-poor' => 'Loše ($1)',
+
+'exif-objectcycle-a' => 'Samo ujutro',
+'exif-objectcycle-p' => 'Samo naveÄer',
+'exif-objectcycle-b' => 'I ujutro i naveÄer',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Stvarni pravac',
'exif-gpsdirection-m' => 'Magnetski smjer',
+'exif-ycbcrpositioning-1' => 'Centrirano',
+'exif-ycbcrpositioning-2' => 'Uporedo',
+
+'exif-dc-contributor' => 'Kontributori',
+'exif-dc-coverage' => 'Prostorni i vremenski opseg medija',
+'exif-dc-date' => 'Datum(i)',
+'exif-dc-publisher' => 'IzdavaÄ',
+'exif-dc-relation' => 'Srodni mediji',
+'exif-dc-rights' => 'Prava',
+'exif-dc-source' => 'Izvor medija',
+'exif-dc-type' => 'Tip medija',
+
+'exif-rating-rejected' => 'Odbijeno',
+
+'exif-isospeedratings-overflow' => 'Veće od 65535',
+
+'exif-iimcategory-ace' => 'Umjetnost, kultura i zabava',
+'exif-iimcategory-clj' => 'Kriminal i pravo',
+'exif-iimcategory-dis' => 'Katastrofe i udesi',
+'exif-iimcategory-fin' => 'Ekonomija i posao',
+'exif-iimcategory-edu' => 'Obrazovanje',
+'exif-iimcategory-evn' => 'Okolina',
+'exif-iimcategory-hth' => 'Zdravlje',
+'exif-iimcategory-hum' => 'Ljudski interesi',
+'exif-iimcategory-lab' => 'Rad',
+'exif-iimcategory-lif' => 'Životni stil i razonoda',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Religija i vjerovanja',
+'exif-iimcategory-sci' => 'Nauka i tehnologija',
+'exif-iimcategory-soi' => 'Društvena pitanja',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Rat, sukob i nemiri',
+'exif-iimcategory-wea' => 'Vrijeme',
+
+'exif-urgency-normal' => 'Normalno ($1)',
+'exif-urgency-low' => 'Nisko ($1)',
+'exif-urgency-high' => 'Visoko ($1)',
+'exif-urgency-other' => 'Priorite definiran od korisnika ($1)',
+
# External editor support
'edit-externally' => 'Izmijeni ovu datoteku/fajl koristeći eksternu aplikaciju',
-'edit-externally-help' => '(Pogledajte [http://www.mediawiki.org/wiki/Manual:External_editors instrukcije za podešavanje] za više informacija)',
+'edit-externally-help' => '(Pogledajte [//www.mediawiki.org/wiki/Manual:External_editors instrukcije za podešavanje] za više informacija)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'sve',
-'imagelistall' => 'sve',
-'watchlistall2' => 'sve',
-'namespacesall' => 'sve',
-'monthsall' => 'sve',
-'limitall' => 'sve',
+'watchlistall2' => 'sve',
+'namespacesall' => 'sve',
+'monthsall' => 'sve',
+'limitall' => 'sve',
# E-mail address confirmation
'confirmemail' => 'Potvrdite adresu e-pošte',
@@ -3087,18 +3455,25 @@ $1',
'trackbackdeleteok' => 'Trackback je uspješno obrisan.',
# Delete conflict
-'deletedwhileediting' => "'''Upozorenje''': Ova stranica je obrisana prije nego Å¡to ste poÄeli ureÄ‘ivati!",
-'confirmrecreate' => "Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovaj Älanak poÅ¡to ste poÄeli ureÄ‘ivanje sa razlogom:
+'deletedwhileediting' => "'''Upozorenje''': Ova stranica je obrisana prije nego Å¡to ste poÄeli ureÄ‘ivati!",
+'confirmrecreate' => "Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovaj Älanak poÅ¡to ste poÄeli ureÄ‘ivanje sa razlogom:
: ''$2''
Molimo Vas da potvrdite da stvarno želite da ponovo napravite ovaj Älanak.",
-'recreate' => 'Ponovno napravi',
+'confirmrecreate-noreason' => 'Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovaj Älanak poÅ¡to ste ga poÄeli ureÄ‘ivati. Molimo Vas da potvrdite da stvarno želite da ponovo napravite ovaj Älanak.',
+'recreate' => 'Ponovno napravi',
# action=purge
'confirm_purge_button' => 'U redu',
'confirm-purge-top' => "Da li želite obrisati keš (''cache'') ove stranice?",
'confirm-purge-bottom' => 'Ispražnjava keš stranice i prikazuje najsvježiju verziju.',
+# action=watch/unwatch
+'confirm-watch-button' => 'U redu',
+'confirm-watch-top' => 'Dodati ovu stranicu na Vaš spisak praćenja?',
+'confirm-unwatch-button' => 'U redu',
+'confirm-unwatch-top' => 'Izbrisati ovu stranicu sa Vašeg spiska praćenja?',
+
# Multipage image navigation
'imgmultipageprev' => '↠prethodna stranica',
'imgmultipagenext' => 'sljedeća stranica →',
@@ -3141,14 +3516,14 @@ Pokušajte normalni pregled.',
'watchlistedit-normal-legend' => 'Ukloni naslove iz spiska praćenja',
'watchlistedit-normal-explain' => 'Naslovi na Vašem spisku praćenja su prikazani ispod.
Da bi ste uklonili naslov, oznaÄite kutiju pored naslova, i kliknite "{{int:Watchlistedit-normal-submit}}".
-Također možete [[Special:Watchlist/raw|napredno urediti spisak]].',
+Također možete [[Special:EditWatchlist/raw|napredno urediti spisak]].',
'watchlistedit-normal-submit' => 'Ukloni naslove',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 naslov|$1 naslova}} je uklonjeno iz Vašeg spiska praćenja:',
'watchlistedit-raw-title' => 'Napredno uređivanje spiska praćenja',
'watchlistedit-raw-legend' => 'Napredno uređivanje spiska praćenja',
'watchlistedit-raw-explain' => 'Naslovi u Vašem spisku praćenja su prikazani ispod, i mogu biti uređeni dodavanjem ili brisanjem sa spiska; jedan naslov u svakom redu.
Kada završite, kliknite "{{int:Watchlistedit-raw-submit}}".
-TakoÄ‘er možete [[Special:Watchlist/edit|koristiti standardni ureÄ‘ivaÄ]].',
+TakoÄ‘er možete [[Special:EditWatchlist|koristiti standardni ureÄ‘ivaÄ]].',
'watchlistedit-raw-titles' => 'Naslovi:',
'watchlistedit-raw-submit' => 'Ažuriraj spisak praćenja',
'watchlistedit-raw-done' => 'Vaš spisak praćenja je ažuriran.',
@@ -3165,60 +3540,58 @@ TakoÄ‘er možete [[Special:Watchlist/edit|koristiti standardni ureÄ‘ivaÄ]].',
'duplicate-defaultsort' => '\'\'\'Upozorenje\'\'\': Postavljeni kljuÄ sortiranja "$2" zamjenjuje raniji kljuÄ "$1".',
# Special:Version
-'version' => 'Verzija',
-'version-extensions' => 'Instalirana proširenja (ekstenzije)',
-'version-specialpages' => 'Posebne stranice',
-'version-parserhooks' => 'Kuke parsera',
-'version-variables' => 'Promjenjive',
-'version-skins' => 'Izgledi (skinovi)',
-'version-other' => 'Ostalo',
-'version-mediahandlers' => 'UpravljaÄi medije',
-'version-hooks' => 'Kuke',
-'version-extension-functions' => 'Funkcije proširenja (ekstenzije)',
-'version-parser-extensiontags' => "Parser proširenja (''tagovi'')",
-'version-parser-function-hooks' => 'Kuke parserske funkcije',
-'version-skin-extension-functions' => 'Funkcije proširenja skina',
-'version-hook-name' => 'Naziv kuke',
-'version-hook-subscribedby' => 'Pretplaćeno od',
-'version-version' => '(Verzija $1)',
-'version-license' => 'Licenca',
-'version-poweredby-credits' => "Ova wiki je zasnovana na '''[http://www.mediawiki.org/ MediaWiki]''', autorska prava zadržana © 2001-$1 $2.",
-'version-poweredby-others' => 'ostali',
-'version-license-info' => 'Mediawiki je slobodni softver, možete ga redistribuirati i/ili mijenjati pod uslovima GNU opće javne licence kao što je objavljeno od strane Fondacije Slobodnog Softvera, bilo u verziji 2 licence, ili (po vašoj volji) nekoj od kasniji verzija.
+'version' => 'Verzija',
+'version-extensions' => 'Instalirana proširenja (ekstenzije)',
+'version-specialpages' => 'Posebne stranice',
+'version-parserhooks' => 'Kuke parsera',
+'version-variables' => 'Promjenjive',
+'version-antispam' => 'SpreÄavanje spama',
+'version-skins' => 'Izgledi (skinovi)',
+'version-other' => 'Ostalo',
+'version-mediahandlers' => 'UpravljaÄi medije',
+'version-hooks' => 'Kuke',
+'version-extension-functions' => 'Funkcije proširenja (ekstenzije)',
+'version-parser-extensiontags' => "Parser proširenja (''tagovi'')",
+'version-parser-function-hooks' => 'Kuke parserske funkcije',
+'version-hook-name' => 'Naziv kuke',
+'version-hook-subscribedby' => 'Pretplaćeno od',
+'version-version' => '(Verzija $1)',
+'version-license' => 'Licenca',
+'version-poweredby-credits' => "Ova wiki je zasnovana na '''[//www.mediawiki.org/ MediaWiki]''', autorska prava zadržana © 2001-$1 $2.",
+'version-poweredby-others' => 'ostali',
+'version-license-info' => 'Mediawiki je slobodni softver, možete ga redistribuirati i/ili mijenjati pod uslovima GNU opće javne licence kao što je objavljeno od strane Fondacije Slobodnog Softvera, bilo u verziji 2 licence, ili (po vašoj volji) nekoj od kasniji verzija.
Mediawiki se distriburia u nadi da će biti korisna, ali BEZ IKAKVIH GARANCIJA, Äak i bez ikakvih posrednih garancija o KOMERCIJALNOSTI ili DOSTUPNOSTI ZA ODREÄENU SVRHU. Pogledajte GNU opću javnu licencu za viÅ¡e detalja.
-Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] zajedno s ovim programom, ako niste, piÅ¡ite Fondaciji Slobodnog Softvera na adresu Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ili je proÄitajte [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html online].',
-'version-software' => 'Instalirani softver',
-'version-software-product' => 'Proizvod',
-'version-software-version' => 'Verzija',
+Trebali biste dobiti [{{SERVER}}{{SCRIPTPATH}}/KOPIJU GNU opće javne licence] zajedno s ovim programom, ako niste, piÅ¡ite Fondaciji Slobodnog Softvera na adresu Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ili je proÄitajte [//www.gnu.org/licenses/old-licenses/gpl-2.0.html online].',
+'version-software' => 'Instalirani softver',
+'version-software-product' => 'Proizvod',
+'version-software-version' => 'Verzija',
# Special:FilePath
'filepath' => 'Putanja datoteke',
'filepath-page' => 'Datoteka:',
'filepath-submit' => 'Idi',
'filepath-summary' => 'Ova posebna stranica prikazuje potpunu putanju za datoteku.
-Slike su prikazane u punoj veliÄini, ostale vrste datoteka su prikazane direktno sa, s njima povezanim, programom.
-
-Unesite ime datoteke bez "{{ns:file}}:" prefiksa.',
+Slike su prikazane u punoj veliÄini, ostale vrste datoteka su prikazane direktno sa, s njima povezanim, programom.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Potraga za duplim datotekama',
-'fileduplicatesearch-summary' => 'Pretraga duplih datoteka na bazi njihove haš vrijednosti.
-
-Unesite ime datoteke bez "{{ns:file}}:" prefiksa.',
-'fileduplicatesearch-legend' => 'Pretraga dvojnika',
-'fileduplicatesearch-filename' => 'Ime datoteke:',
-'fileduplicatesearch-submit' => 'Traži',
-'fileduplicatesearch-info' => '$1 × $2 piksel<br />VeliÄina datoteke: $3<br />MIME vrsta: $4',
-'fileduplicatesearch-result-1' => 'Datoteka "$1" nema identiÄnih dvojnika.',
-'fileduplicatesearch-result-n' => 'Datoteka "$1" ima {{PLURAL:$2|1 identiÄnog|$2 identiÄna|$2 identiÄnih}} dvojnika.',
+'fileduplicatesearch' => 'Potraga za duplim datotekama',
+'fileduplicatesearch-summary' => 'Pretraga duplih datoteka na bazi njihove haš vrijednosti.',
+'fileduplicatesearch-legend' => 'Pretraga dvojnika',
+'fileduplicatesearch-filename' => 'Ime datoteke:',
+'fileduplicatesearch-submit' => 'Traži',
+'fileduplicatesearch-info' => '$1 × $2 piksel<br />VeliÄina datoteke: $3<br />MIME vrsta: $4',
+'fileduplicatesearch-result-1' => 'Datoteka "$1" nema identiÄnih dvojnika.',
+'fileduplicatesearch-result-n' => 'Datoteka "$1" ima {{PLURAL:$2|1 identiÄnog|$2 identiÄna|$2 identiÄnih}} dvojnika.',
+'fileduplicatesearch-noresults' => 'Nije pronađena datoteka sa imenom "$1".',
# Special:SpecialPages
'specialpages' => 'Posebne stranice',
'specialpages-note' => '----
* Normalne posebne stranice.
-* <strong class="mw-specialpagerestricted">Zaštićene posebne stranice.</strong>',
+* <span class="mw-specialpagerestricted">OgraniÄene posebne stranice.</span>
+* <span class="mw-specialpagecached">Keširane posebne stranice (mogu biti zastarjele).</span>',
'specialpages-group-maintenance' => 'Izvještaji za održavanje',
'specialpages-group-other' => 'Ostale posebne stranice',
'specialpages-group-login' => 'Prijava / Otvaranje raÄuna',
diff --git a/languages/messages/MessagesShi.php b/languages/messages/MessagesShi.php
index 7d5d2c1b..ac281146 100644
--- a/languages/messages/MessagesShi.php
+++ b/languages/messages/MessagesShi.php
@@ -139,14 +139,7 @@ $messages = array(
'listingcontinuesabbrev' => 'Attfr',
'index-category' => 'Tisniwin su umatar',
'noindex-category' => 'Tisniwin bla amatar',
-
-'mainpagetext' => "'''MediaWiki tǧizn (tsrbk) bla tamukrist.'''",
-'mainpagedocfooter' => 'Ẓr taǧttnn [http://meta.wikimedia.org/wiki/Aide:Contenu Guide de l’utilisateur] bac ad tawit inÉ£misn yaá¸n f manik sa tswwurt asɣẓan ad.
-
-== Izwir d MediaWiki ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Umuɣ n iɣwwarn n usgadda ]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/fr Isqqsitn f MidyWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce UmuÉ£ n imsgdaln f imbá¸itn n MidyaWiki]',
+'broken-file-category' => 'Tisniwin ɣ llan izdayn rzanin',
'about' => 'F',
'article' => 'Mayllan ɣ tasna',
@@ -198,7 +191,6 @@ $messages = array(
'history' => 'Amzruy n tasna',
'history_short' => 'Amzruy',
'updatedmarker' => 'Tuybddal z tizrink li iÄŸuran',
-'info_short' => 'Inɣmisn',
'printableversion' => 'Tasna nu sugz',
'permalink' => 'Azday Bdda illan',
'print' => 'Siggz',
@@ -294,6 +286,8 @@ $1',
'toc' => 'Mayllan',
'showtoc' => 'Mel',
'hidetoc' => 'ḥbu',
+'collapsible-collapse' => 'Smnuá¸u',
+'collapsible-expand' => 'Sfruri',
'thisisdeleted' => 'Mel niɣd rard $1?',
'viewdeleted' => 'Mel $1?',
'restorelink' => '{{PLURAL:$1|Ambddel lli imḥin|imbddel lli imḥin}}',
@@ -396,6 +390,7 @@ lcont nek tuyskar .
'createaccount' => 'Murzm amidan nek (lkunt)..',
'gotaccount' => 'Is nit dark amidan(lkunt)? $1.',
'gotaccountlink' => 'Kcm',
+'userlogin-resetlink' => 'Ttut ismnk d tasarut n ukccum nk',
'createaccountmail' => 'S tirawt taliktunant',
'createaccountreason' => 'Maɣ:',
'badretype' => 'Tasarut lin tgit ur dis tucka.',
@@ -407,7 +402,7 @@ lcont nek tuyskar .
'nosuchuser' => 'Asqdac « $1 » ur illi.
Ussaɣ n isqdacn ḥiln hlli.
Ẓṛ daÉ£ ist turit mzyan mayad, niÉ£d [[Special:UserLogin/signup|tmmurẓmt amiá¸an amaynu]].',
-'nosuchusershort' => 'Ur illa umsaws lli ilan assaɣ « <nowiki>$1</nowiki> ». Ẓṛ ist turit mzyan mayad.',
+'nosuchusershort' => 'Ur illa umsaws lli ilan assaɣ « $1 ». Ẓṛ ist turit mzyan mayad.',
'nouserspecified' => 'Illa fllak ad tarat assaɣ nk.',
'login-userblocked' => 'Asqdac ad ur as yufi ad ikcm. Tazdayt ɣ ifalan uras ttuyskar',
'mailmypassword' => 'sifd yi awal ihdan yadni',
@@ -418,7 +413,7 @@ Ussaɣ n isqdacn ḥiln hlli.
# E-mail sending
'php-mail-error-unknown' => 'Kra ur igadda tasɣnt btbratin() n PHP.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'bddl taguri n uzray',
'resetpass_announce' => 'Tkcmt {{GENDER:||e|(e)}} s yat tangalt lli kin ilkmt s tbrat emeil . tangaltad ur tgi abla tin yat twalt. Bac ad tkmlt tqqiyyidank kcm tangalt tamaynut nk ɣid:',
'resetpass_header' => 'Sbadl taguri n tangalt n umiá¸al (compte)',
@@ -446,8 +441,6 @@ Han irwas is yad tsbadlt awal n uzri niÉ£d is á¸albt yan yaá¸n n yat tklit.',
'extlink_tip' => 'Azday n brra (af ur ttut amzwir http://prefix)',
'headline_sample' => 'Aá¸á¹›iá¹£ n ddu uzwl',
'headline_tip' => 'Ddu-uzwl taskfalt 2',
-'math_sample' => 'Skcm talɣat ɣid',
-'math_tip' => 'Talɣiwt tusnakt (LaTeX)',
'nowiki_sample' => 'Kcm aá¸á¹›iá¹£ li ur imzln É£id',
'nowiki_tip' => 'Zri Taseddast n wiki',
'image_tip' => 'Asdaw n illan',
@@ -692,7 +685,6 @@ Izdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .',
'changepassword' => 'bdl awal ihdan',
'prefs-skin' => 'odm',
'skin-preview' => 'Ammal',
-'prefs-math' => 'mat',
'datedefault' => 'Timssusmin',
'prefs-datetime' => 'waqt d tarikh',
'prefs-personal' => 'milf n umsxdam',
@@ -714,8 +706,6 @@ Izdar ad urtili ɣ isbidn n mayllan ɣ {{SITENAME}} .',
'columns' => 'aamida:',
'searchresultshead' => 'Cabba',
'resultsperpage' => 'adad nataij gh sfha:',
-'contextlines' => 'stour gh natija',
-'contextchars' => 'lhrof gh natija',
'stub-threshold' => 'wasla n <a href="#" class="stub">do amzdoy</a> itforma (bytes):',
'stub-threshold-disabled' => 'moattal',
'recentchangesdays' => 'adad liyam lmroda gh ahdat tghyirat',
@@ -928,9 +918,7 @@ Mel imbddeln z tisniwin li ittuyzdayni bla tasna li trit.',
'watchlist' => 'Umuɣ n imtfrn',
'mywatchlist' => 'Umuɣ inu lli tsaggaɣ',
'watchlistfor2' => 'I $1 $2',
-'addedwatch' => 'Zayd tin i umuɣ n umtfr',
'addedwatchtext' => 'tasna « [[:$1]] » tllan É£ [[Special:Watchlist|umuÉ£ n umtfr]]. Imbdln lli dyuckan d tasna lli dis iá¹­á¹­uzn rad asn nskr agmmaḠnsn. Tasna radd ttbayan s "uá¸nay" É£ [[Special:RecentChanges|UmuÉ£ n imbddeln imaynutn]]',
-'removedwatch' => 'Kkist s umuɣ n umtfr',
'removedwatchtext' => 'Tasna "[[:$1]]" ḥra ttuykkas z [[Special:Watchlist|your watchlist]].',
'watch' => 'zaydtin i tochwafin-niw',
'watchthispage' => 'Ṭfr tasna yad',
@@ -949,7 +937,7 @@ Mel imbddeln z tisniwin li ittuyzdayni bla tasna li trit.',
illa fllak ad ni tẓrt is trit ast tkkist d is tssnt marad igguṛu iɣt tkkist d is iffaɣ mayad i [[{{MediaWiki:Policy-url}}|tasrtit]].',
'actioncomplete' => 'tigawt tummidt',
'actionfailed' => 'Tawwuri i xsrn',
-'deletedtext' => '"<nowiki>$1</nowiki>" ttuykkas.
+'deletedtext' => '"$1" ttuykkas.
Ẓṛ $2 inɣmas imggura n ma ittuykkasn',
'deletedarticle' => 'Kkiss "[[$1]]"',
'dellogpage' => 'Qqiyd akkas ad',
@@ -968,7 +956,7 @@ illa fllak ad ni tẓrt is trit ast tkkist d is tssnt marad igguṛu iɣt tkkist
'protectexpiry' => 'Tizi nu uzri n umzruy:',
'protect_expiry_invalid' => 'Tizi n uzri n umzruy urtti tga.',
'protect_expiry_old' => 'Tizi n uzri n umzruy n zrit.',
-'protect-text' => "Tzá¸aá¹›t ad tẓṛt niÉ£ tbudlt taskflt n ugdal (protection) n tasna '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Tzá¸aá¹›t ad tẓṛt niÉ£ tbudlt taskflt n ugdal (protection) n tasna '''$1'''.",
'protect-locked-access' => "Ur tẓdart wala ittuyskarak ad tbadlt tiskfal n ugdal n tisniwin.
Ha riglaj n ɣila lli f tlla tasna '''$1''' :",
'protect-cascadeon' => 'Tasna yad tgddl (protégé) t llan É£ {{PLURAL:$1|Tasna llid yuckan, talli igddln| Tillid yuckan, lli igddln}} s tamatart ad « Agdl s imuzzar ». Tzá¸art ad tsbadlt iswirn n ugdlns bla irza mayad aǧdl s imuzzar',
@@ -1045,7 +1033,6 @@ Ha riglaj n ɣila lli f tlla tasna '''$1''' :",
'ipbotheroption' => 'wayya',
'ipbhidename' => 'ḥbu assaɣ n umsqdac ɣ imbdln d umuɣn',
'ipbwatchuser' => 'Tfr tisniwin d imsgdaln n umqdac',
-'ipballowusertalk' => 'Yufa umsqdac ad ad isbddl tasna ns n umsgdal ɣ tizi lliɣas ttuyqqan tins',
'ipblocklist' => 'Imsqdacn ttuẓnin',
'blocklink' => 'Adur tajt',
'unblocklink' => 'kkis agdal',
@@ -1175,11 +1162,10 @@ Maya Iẓá¸ar ad iglb zzu uzddar ar aflla tasna yad lli bdda n nttagga. Illa fl
'nextdiff' => 'Ambdl d ittfrn →',
# Media information
-'file-info-size' => '$1 × $2 piksil, asdaw tugut: $3, MIME anaw: $4',
-'file-nohires' => '↓<small>Ur tlli tabudut tamqrant.</small>',
-'svg-long-desc' => 'Asdaw SVG, Tabadut n $1 × $2 ifrdan, Tiddi : $3',
-'show-big-image' => 'balak',
-'show-big-image-thumb' => '<small>Size of this preview: $1 × $2 pixels</small>',
+'file-info-size' => '$1 × $2 piksil, asdaw tugut: $3, MIME anaw: $4',
+'file-nohires' => '↓<small>Ur tlli tabudut tamqrant.</small>',
+'svg-long-desc' => 'Asdaw SVG, Tabadut n $1 × $2 ifrdan, Tiddi : $3',
+'show-big-image' => 'balak',
# Bad image list
'bad_image_list' => 'zud ghikad :
@@ -1191,15 +1177,21 @@ ghir lhwayj n lista (stour libdounin s *) karaytyo7asab',
'metadata-help' => 'Asdaw ad llan gis inÉ£misn yaá¸nin lli tfl lkamira tuá¹­unit niÉ£d aá¹£fḠn uxddam lliÉ£ ay sgadda asdaw ad',
'metadata-expand' => 'Ml ifruriyn lluzzanin',
'metadata-collapse' => 'Aḥbu n ifruriyn lluzzanin',
-'metadata-fields' => 'Igran EXIF n isfkan nmita lin illan ɣ tabratad ran ilin ɣ tawlaf n tasna iɣ mzzin tiflut n isfka n mita
-WiyyaḠraggis ḥbun s ɣiklli sttin kkan gantn
+'metadata-fields' => 'Igran n isfkan n metadata li illan ɣ tabratad ran ilin ɣ tawlaf n tasna iɣ mzzin tiflut n isfka n mita
+WiyyaḠraggis ḥbun s ɣiklli sttin kkan gantn.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
'exif-exposureprogram-1' => 'w-ofoss',
@@ -1252,15 +1244,13 @@ WiyyaḠraggis ḥbun s ɣiklli sttin kkan gantn
# External editor support
'edit-externally' => 'Bddl asdaw ad s wasnas abrrani',
-'edit-externally-help' => '(Ẓṛ [http://www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] bac ad taf uggar n inɣmisn)',
+'edit-externally-help' => '(Ẓṛ [//www.mediawiki.org/wiki/Manual:External_editors/fr les instructions d’installation] bac ad taf uggar n inɣmisn)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Kullu',
-'imagelistall' => 'Kullu',
-'watchlistall2' => 'kraygat (kullu)',
-'namespacesall' => 'kullu',
-'monthsall' => 'kullu',
-'limitall' => 'Kullu',
+'watchlistall2' => 'kraygat (kullu)',
+'namespacesall' => 'kullu',
+'monthsall' => 'kullu',
+'limitall' => 'Kullu',
# Trackbacks
'trackbackremove' => '([$1 mhi])',
diff --git a/languages/messages/MessagesSi.php b/languages/messages/MessagesSi.php
index 2a8ff11c..aa33c963 100644
--- a/languages/messages/MessagesSi.php
+++ b/languages/messages/MessagesSi.php
@@ -55,96 +55,95 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ද්විත්ව_යළි-යොමුකිරීම්' ),
+ 'Activeusers' => array( 'ක්â€à¶»à·’යà·à¶šà·à¶»à·“_පරිà·à·“ලකයන්' ),
+ 'Allmessages' => array( 'සියළු_පණිවුඩ' ),
+ 'Allpages' => array( 'සියළු_පිටු' ),
+ 'Ancientpages' => array( 'පුරà·à¶­à¶±_පිටු' ),
+ 'Blankpage' => array( 'හිස්_පිටුව' ),
+ 'Block' => array( 'à·€à·à¶»à¶«à¶º_කරන්න', 'IP_à·€à·à¶»à¶«à¶º_කරන්න', 'පරිà·à·“ලක_à·€à·à¶»à¶«à¶º_කරන්න' ),
+ 'Blockme' => array( 'මà·_à·€à·à¶»à¶«à¶º_කරන්න' ),
+ 'Booksources' => array( 'ග්â€à¶»à¶±à·Šà¶®_මූලà·à·à·Šâ€à¶»' ),
'BrokenRedirects' => array( 'භින්න_යළි-යොමුකිරීම්' ),
- 'Disambiguations' => array( 'වක්â€à¶»à·à¶­à·Šà¶­à·’හරණයන්' ),
- 'Userlogin' => array( 'පරිà·à·“ලක_ප්â€à¶»à·€à·’ෂ්ටය' ),
- 'Userlogout' => array( 'පරිà·à·“ලක_නිෂ්ක්â€à¶»à¶¸à¶«à¶º' ),
+ 'Categories' => array( 'ප්â€à¶»à·€à¶»à·Šà¶œ' ),
+ 'ChangePassword' => array( 'මුරපදය_වෙනස්_කරන්න', 'මුරපදය_ප්â€à¶»à¶­à·’ස්ථà·à¶´à¶±à¶º_කරන්න' ),
+ 'Confirmemail' => array( 'විද්â€à¶ºà·”ත්-තà·à¶´à·‘ල_තහවුරු_කරන්න' ),
+ 'Contributions' => array( 'දà·à¶ºà¶šà¶­à·Šà·€' ),
'CreateAccount' => array( 'ගිණුම_තà·à¶±à·“මට' ),
- 'Preferences' => array( 'අභිරුචියන්' ),
- 'Watchlist' => array( 'මුර_ලà·à¶ºà·’ස්තුව' ),
- 'Recentchanges' => array( 'මෑත_වෙනස්වීම්' ),
- 'Upload' => array( 'උඩුගත_කිරීම' ),
+ 'Deadendpages' => array( 'අග_ඇවුරුණු_පිටුව' ),
+ 'DeletedContributions' => array( 'මකà·à¶¯à·à¶¸à·”ණු_දà·à¶ºà¶šà¶­à·Šà·€à¶ºà¶±à·Š' ),
+ 'Disambiguations' => array( 'වක්â€à¶»à·à¶­à·Šà¶­à·’හරණයන්' ),
+ 'DoubleRedirects' => array( 'ද්විත්ව_යළි-යොමුකිරීම්' ),
+ 'Emailuser' => array( 'පරිà·à·“ලකට_විද්â€à¶ºà·”ත්-තà·à¶´à·à¶½à¶šà·Š_යà·à·€à·’ම' ),
+ 'Export' => array( 'නිර්යà·à¶­à¶šà¶»à¶±à·Šà¶±' ),
+ 'Fewestrevisions' => array( 'අතිස්වල්ප_සංà·à·à¶°à¶±' ),
+ 'FileDuplicateSearch' => array( 'ගොනු_අනුපිටපත්_ගවේෂණය' ),
+ 'Filepath' => array( 'ගොනු_පෙත' ),
+ 'Import' => array( 'ආයà·à¶­_කරන්න' ),
+ 'Invalidateemail' => array( 'විද්â€à¶ºà·”ත්_තà·à¶´à·‘ල_අනීතික_කරන්න' ),
+ 'BlockList' => array( 'à·€à·à¶»à¶«_ලà·à¶ºà·’ස්තුව', 'à·€à·à¶»à¶«_ලයිස්තුගතකරන්න_', 'IP_à·€à·à¶»à¶«_ලà·à¶ºà·’ස්තුව' ),
+ 'LinkSearch' => array( 'සබà·à¶³à·’_ගවේෂණය' ),
+ 'Listadmins' => array( 'පරිපà·à¶½à¶šà¶ºà¶±à·Š_ලà·à¶ºà·’ස්තුගත_කරන්න' ),
+ 'Listbots' => array( 'රොබà·à·€à¶±à·Š_ලà·à¶ºà·’ස්තුගත_කරන්න' ),
'Listfiles' => array( 'රූප_ලà·à¶ºà·’ස්තුව' ),
- 'Newimages' => array( 'නව_ගොනු', 'නව_රූප' ),
- 'Listusers' => array( 'පරිà·à·“ලකයන්_ලà·à¶ºà·’ස්තු_ගත_කරන්න', 'පරිà·à·“ලක_ලà·à¶ºà·’ස්තුව' ),
'Listgrouprights' => array( 'කණ්ඩà·à¶ºà¶¸à·Š_හිමිකම්_ලà·à¶ºà·’ස්තුගතකරන්න' ),
- 'Statistics' => array( 'සංඛ්â€à¶ºà·à¶±_දත්ත' ),
- 'Randompage' => array( 'අහඹු', 'අහඹු_පිටුව' ),
+ 'Listredirects' => array( 'යළි-යොමුකිරීම්_ලà·à¶ºà·’ස්තුගතකරන්න' ),
+ 'Listusers' => array( 'පරිà·à·“ලකයන්_ලà·à¶ºà·’ස්තු_ගත_කරන්න', 'පරිà·à·“ලක_ලà·à¶ºà·’ස්තුව' ),
+ 'Lockdb' => array( 'දත්ත_සංචිතය_අවුරන්න' ),
+ 'Log' => array( 'ලà¶à·”_සටහන', 'ලà¶à·”_සටහන්' ),
'Lonelypages' => array( 'හුදකලà·_පිටු' ),
- 'Uncategorizedpages' => array( 'ප්â€à¶»à·€à¶»à·Šà¶œà·“කරනය_නොකල_පිටු' ),
- 'Uncategorizedcategories' => array( 'ප්â€à¶»à·€à¶»à·Šà¶œà·“කරනය_නොකල_ප්â€à¶»à·€à¶»à·Šà¶œ' ),
- 'Uncategorizedimages' => array( 'ප්â€à¶»à·€à¶»à·Šà¶œà·“කරනය_නොකල_රූප' ),
- 'Uncategorizedtemplates' => array( 'ප්â€à¶»à·€à¶»à·Šà¶œà·“කරනය_නොකල_à·ƒà·à¶šà·’ලි' ),
- 'Unusedcategories' => array( 'à·„à·à·€à·’තà·_නොවන_ප්â€à¶»à·€à¶»à·Šà¶œ' ),
- 'Unusedimages' => array( 'à·„à·à·€à·’තà·_නොවන_රූප' ),
- 'Wantedpages' => array( 'අවà·à·Šâ€à¶º_පිටු' ),
- 'Wantedcategories' => array( 'අවà·à·Šâ€à¶º_ප්â€à¶»à·€à¶»à·Šà¶œ' ),
- 'Wantedfiles' => array( 'අවà·à·Šâ€à¶º_ගොනු' ),
- 'Wantedtemplates' => array( 'අවà·à·Šâ€à¶º_à·ƒà·à¶šà·’ලි' ),
+ 'Longpages' => array( 'දිගු_පිටු' ),
+ 'MergeHistory' => array( 'ඒකà·à¶¶à¶¯à·Šà¶°_ඉතිහà·à·ƒà¶º' ),
+ 'MIMEsearch' => array( 'MIME_ගවේෂණය' ),
+ 'Mostcategories' => array( 'බොහà·_ප්â€à¶»à·€à¶»à·Šà¶œ' ),
+ 'Mostimages' => array( 'බෙහෙවින්_සබà·à¶³à·’_ගොනු', 'බොහà·_ගොනු', 'බොහà·_රූප' ),
'Mostlinked' => array( 'බෙහෙවින්_සබà·à¶³à·’_පිටු', 'බෙහෙවින්_සබà·à¶³à·’' ),
'Mostlinkedcategories' => array( 'බෙහෙවින්_සබà·à¶³à·’_ප්â€à¶»à·€à¶»à·Šà¶œ', 'බෙහෙවින්_භà·à·€à·’ත_ප්â€à¶»à·€à¶»à·Šà¶œ' ),
'Mostlinkedtemplates' => array( 'බෙහෙවින්_සබà·à¶³à·’_à·ƒà·à¶šà·’ලි', 'බෙහෙවින්_භà·à·€à·’ත_à·ƒà·à¶šà·’ලි' ),
- 'Mostimages' => array( 'බෙහෙවින්_සබà·à¶³à·’_ගොනු', 'බොහà·_ගොනු', 'බොහà·_රූප' ),
- 'Mostcategories' => array( 'බොහà·_ප්â€à¶»à·€à¶»à·Šà¶œ' ),
'Mostrevisions' => array( 'බොහà·_සංà·à·à¶°à¶±' ),
- 'Fewestrevisions' => array( 'අතිස්වල්ප_සංà·à·à¶°à¶±' ),
- 'Shortpages' => array( 'කෙටි_පිටු' ),
- 'Longpages' => array( 'දිගු_පිටු' ),
+ 'Movepage' => array( 'පිටුව_ගෙන_යන්න' ),
+ 'Mycontributions' => array( 'මගේ_දà·à¶ºà¶šà¶­à·Šà·€à¶º' ),
+ 'Mypage' => array( 'මගේ_පිටුව' ),
+ 'Mytalk' => array( 'මගේ_à·ƒà·à¶šà¶ à·Šà¶¡à·à·€' ),
+ 'Newimages' => array( 'නව_ගොනු', 'නව_රූප' ),
'Newpages' => array( 'නව_පිටුව' ),
- 'Ancientpages' => array( 'පුරà·à¶­à¶±_පිටු' ),
- 'Deadendpages' => array( 'අග_ඇවුරුණු_පිටුව' ),
+ 'Popularpages' => array( 'ජනප්â€à¶»à·’ය_පිටු' ),
+ 'Preferences' => array( 'අභිරුචියන්' ),
+ 'Prefixindex' => array( 'උපසර්ග_සූචිය' ),
'Protectedpages' => array( 'ආරක්â€à·‚ිත_පිටුව' ),
'Protectedtitles' => array( 'ආරක්â€à·‚ිත_à·à·“ර්ෂයන්' ),
- 'Allpages' => array( 'සියළු_පිටු' ),
- 'Prefixindex' => array( 'උපසර්ග_සූචිය' ),
- 'Ipblocklist' => array( 'à·€à·à¶»à¶«_ලà·à¶ºà·’ස්තුව', 'à·€à·à¶»à¶«_ලයිස්තුගතකරන්න_', 'IP_à·€à·à¶»à¶«_ලà·à¶ºà·’ස්තුව' ),
- 'Unblock' => array( 'à·€à·à¶»à¶«à¶º_ඉවත්කල' ),
- 'Specialpages' => array( 'විà·à·šà·‚_පිටු' ),
- 'Contributions' => array( 'දà·à¶ºà¶šà¶­à·Šà·€' ),
- 'Emailuser' => array( 'පරිà·à·“ලකට_විද්â€à¶ºà·”ත්-තà·à¶´à·à¶½à¶šà·Š_යà·à·€à·’ම' ),
- 'Confirmemail' => array( 'විද්â€à¶ºà·”ත්-තà·à¶´à·‘ල_තහවුරු_කරන්න' ),
- 'Whatlinkshere' => array( 'මෙහි_කුමක්_සබà·à¶³à·“_ඇතිද' ),
+ 'Randompage' => array( 'අහඹු', 'අහඹු_පිටුව' ),
+ 'Randomredirect' => array( 'අහඹු_යළි-යොමුකිරිම' ),
+ 'Recentchanges' => array( 'මෑත_වෙනස්වීම්' ),
'Recentchangeslinked' => array( 'සබà·à¶³à·”නු_මෑත_වෙනස්කිරීම්', 'මෑත_වෙනස්කිරීම්' ),
- 'Movepage' => array( 'පිටුව_ගෙන_යන්න' ),
- 'Blockme' => array( 'මà·_à·€à·à¶»à¶«à¶º_කරන්න' ),
- 'Booksources' => array( 'ග්â€à¶»à¶±à·Šà¶®_මූලà·à·à·Šâ€à¶»' ),
- 'Categories' => array( 'ප්â€à¶»à·€à¶»à·Šà¶œ' ),
- 'Export' => array( 'නිර්යà·à¶­à¶šà¶»à¶±à·Šà¶±' ),
- 'Version' => array( 'සංà·à·à¶°à¶±à¶º' ),
- 'Allmessages' => array( 'සියළු_පණිවුඩ' ),
- 'Log' => array( 'ලà¶à·”_සටහන', 'ලà¶à·”_සටහන්' ),
- 'Blockip' => array( 'à·€à·à¶»à¶«à¶º_කරන්න', 'IP_à·€à·à¶»à¶«à¶º_කරන්න', 'පරිà·à·“ලක_à·€à·à¶»à¶«à¶º_කරන්න' ),
+ 'Revisiondelete' => array( 'සංà·à·à¶°à¶±_මකà·à¶¯à¶¸à¶±à·Šà¶±' ),
+ 'Search' => array( 'ගවේෂණය' ),
+ 'Shortpages' => array( 'කෙටි_පිටු' ),
+ 'Specialpages' => array( 'විà·à·šà·‚_පිටු' ),
+ 'Statistics' => array( 'සංඛ්â€à¶ºà·à¶±_දත්ත' ),
+ 'Tags' => array( 'ටà·à¶œ' ),
+ 'Unblock' => array( 'à·€à·à¶»à¶«à¶º_ඉවත්කල' ),
+ 'Uncategorizedcategories' => array( 'ප්â€à¶»à·€à¶»à·Šà¶œà·“කරනය_නොකල_ප්â€à¶»à·€à¶»à·Šà¶œ' ),
+ 'Uncategorizedimages' => array( 'ප්â€à¶»à·€à¶»à·Šà¶œà·“කරනය_නොකල_රූප' ),
+ 'Uncategorizedpages' => array( 'ප්â€à¶»à·€à¶»à·Šà¶œà·“කරනය_නොකල_පිටු' ),
+ 'Uncategorizedtemplates' => array( 'ප්â€à¶»à·€à¶»à·Šà¶œà·“කරනය_නොකල_à·ƒà·à¶šà·’ලි' ),
'Undelete' => array( 'මකà·à¶¯à·à¶¸à·“ම_අවලංගු_කරන්න' ),
- 'Import' => array( 'ආයà·à¶­_කරන්න' ),
- 'Lockdb' => array( 'දත්ත_සංචිතය_අවුරන්න' ),
'Unlockdb' => array( 'දත්ත_සංචිතය_ඇවුරුම_අවලංගු_කරන්න' ),
- 'Userrights' => array( 'පරිà·à·“ලක_හිමිකම්' ),
- 'MIMEsearch' => array( 'MIME_ගවේෂණය' ),
- 'FileDuplicateSearch' => array( 'ගොනු_අනුපිටපත්_ගවේෂණය' ),
- 'Unwatchedpages' => array( 'මුර_නොකල_පිටු' ),
- 'Listredirects' => array( 'යළි-යොමුකිරීම්_ලà·à¶ºà·’ස්තුගතකරන්න' ),
- 'Revisiondelete' => array( 'සංà·à·à¶°à¶±_මකà·à¶¯à¶¸à¶±à·Šà¶±' ),
+ 'Unusedcategories' => array( 'à·„à·à·€à·’තà·_නොවන_ප්â€à¶»à·€à¶»à·Šà¶œ' ),
+ 'Unusedimages' => array( 'à·„à·à·€à·’තà·_නොවන_රූප' ),
'Unusedtemplates' => array( 'භà·à·€à·’ත_නොකල_à·ƒà·à¶šà·’ලි' ),
- 'Randomredirect' => array( 'අහඹු_යළි-යොමුකිරිම' ),
- 'Mypage' => array( 'මගේ_පිටුව' ),
- 'Mytalk' => array( 'මගේ_à·ƒà·à¶šà¶ à·Šà¶¡à·à·€' ),
- 'Mycontributions' => array( 'මගේ_දà·à¶ºà¶šà¶­à·Šà·€à¶º' ),
- 'Listadmins' => array( 'පරිපà·à¶½à¶šà¶ºà¶±à·Š_ලà·à¶ºà·’ස්තුගත_කරන්න' ),
- 'Listbots' => array( 'රොබà·à·€à¶±à·Š_ලà·à¶ºà·’ස්තුගත_කරන්න' ),
- 'Popularpages' => array( 'ජනප්â€à¶»à·’ය_පිටු' ),
- 'Search' => array( 'ගවේෂණය' ),
- 'Resetpass' => array( 'මුරපදය_වෙනස්_කරන්න', 'මුරපදය_ප්â€à¶»à¶­à·’ස්ථà·à¶´à¶±à¶º_කරන්න' ),
+ 'Unwatchedpages' => array( 'මුර_නොකල_පිටු' ),
+ 'Upload' => array( 'උඩුගත_කිරීම' ),
+ 'Userlogin' => array( 'පරිà·à·“ලක_ප්â€à¶»à·€à·’ෂ්ටය' ),
+ 'Userlogout' => array( 'පරිà·à·“ලක_නිෂ්ක්â€à¶»à¶¸à¶«à¶º' ),
+ 'Userrights' => array( 'පරිà·à·“ලක_හිමිකම්' ),
+ 'Version' => array( 'සංà·à·à¶°à¶±à¶º' ),
+ 'Wantedcategories' => array( 'අවà·à·Šâ€à¶º_ප්â€à¶»à·€à¶»à·Šà¶œ' ),
+ 'Wantedfiles' => array( 'අවà·à·Šâ€à¶º_ගොනු' ),
+ 'Wantedpages' => array( 'අවà·à·Šâ€à¶º_පිටු' ),
+ 'Wantedtemplates' => array( 'අවà·à·Šâ€à¶º_à·ƒà·à¶šà·’ලි' ),
+ 'Watchlist' => array( 'මුර_ලà·à¶ºà·’ස්තුව' ),
+ 'Whatlinkshere' => array( 'මෙහි_කුමක්_සබà·à¶³à·“_ඇතිද' ),
'Withoutinterwiki' => array( 'අන්තර්_විකි_නොමà·à¶­à·’à·€' ),
- 'MergeHistory' => array( 'ඒකà·à¶¶à¶¯à·Šà¶°_ඉතිහà·à·ƒà¶º' ),
- 'Filepath' => array( 'ගොනු_පෙත' ),
- 'Invalidateemail' => array( 'විද්â€à¶ºà·”ත්_තà·à¶´à·‘ල_අනීතික_කරන්න' ),
- 'Blankpage' => array( 'හිස්_පිටුව' ),
- 'LinkSearch' => array( 'සබà·à¶³à·’_ගවේෂණය' ),
- 'DeletedContributions' => array( 'මකà·à¶¯à·à¶¸à·”ණු_දà·à¶ºà¶šà¶­à·Šà·€à¶ºà¶±à·Š' ),
- 'Tags' => array( 'ටà·à¶œ' ),
- 'Activeusers' => array( 'ක්â€à¶»à·’යà·à¶šà·à¶»à·“_පරිà·à·“ලකයන්' ),
- 'Badtitle' => array( 'නුසුසුදු_මà·à¶­à·˜à¶šà·à·€' ),
);
$magicWords = array(
@@ -222,8 +221,8 @@ $messages = array(
'tog-shownumberswatching' => 'මුර කරනු ලබන පරිà·à·“ලකයන් සංඛ්â€à¶ºà·à·€ පෙන්වන්න',
'tog-oldsig' => 'පවතින අත්සන:',
'tog-fancysig' => 'අත්සන විකිපෙළ (ස්වයංක්â€à¶»à·“ය සබà·à¶³à·’යක් විරහිතව) ලෙසින් සලකන්න',
-'tog-externaleditor' => 'බà·à·„ිර සම්පà·à¶¯à¶šà¶ºà¶šà·ŠÂ à¶·à·à·€à·’ත කරන්න (ප්â€à¶»à·€à·“ණයන් සඳහ෠පමණි, ඔබගේ පරිගණකයේ විà·à·šà·‚ිත වූ සà·à¶šà·ƒà·”ම් අවà·à·Šâ€à¶ºÂ à·€à·š. [http://www.mediawiki.org/wiki/Manual:External_editors තවත් තොරතුරු.])',
-'tog-externaldiff' => 'බà·à·„ිර ප්â€à¶»à¶·à·šà¶¯à¶ºà¶šà·ŠÂ à¶·à·à·€à·’ත කරන්න (ප්â€à¶»à·€à·“ණයන් සඳහ෠පමණි, ඔබගේ පරිගණකයේ විà·à·šà·‚ිත වූ සà·à¶šà·ƒà·”ම් අවà·à·Šâ€à¶ºÂ à·€à·š. [http://www.mediawiki.org/wiki/Manual:External_editors තවත් තොරතුරු.])',
+'tog-externaleditor' => 'බà·à·„ිර සම්පà·à¶¯à¶šà¶ºà¶šà·ŠÂ à¶·à·à·€à·’ත කරන්න (ප්â€à¶»à·€à·“ණයන් සඳහ෠පමණි, ඔබගේ පරිගණකයේ විà·à·šà·‚ිත වූ සà·à¶šà·ƒà·”ම් අවà·à·Šâ€à¶ºÂ à·€à·š. [//www.mediawiki.org/wiki/Manual:External_editors තවත් තොරතුරු.])',
+'tog-externaldiff' => 'බà·à·„ිර ප්â€à¶»à¶·à·šà¶¯à¶ºà¶šà·ŠÂ à¶·à·à·€à·’ත කරන්න (ප්â€à¶»à·€à·“ණයන් සඳහ෠පමණි, ඔබගේ පරිගණකයේ විà·à·šà·‚ිත වූ සà·à¶šà·ƒà·”ම් අවà·à·Šâ€à¶ºÂ à·€à·š. [//www.mediawiki.org/wiki/Manual:External_editors තවත් තොරතුරු.])',
'tog-showjumplinks' => '"වෙත පනින්න" යන ප්â€à¶»à·€à·šà·à¶­à· සබà·à¶³à·’යන් සක්â€à¶»à·“ය කරන්න',
'tog-uselivepreview' => 'තත්කà·à¶½ පෙර-දසුන භà·à·€à·’ත෠කරන්න (ජà·à·€à·à·ƒà·Šà¶šà·Šâ€à¶»à·’ප්ට්) (පරීක්ෂණà·à¶­à·Šà¶¸à¶š)',
'tog-forceeditsummary' => 'හිස් සංස්කරණ à·ƒà·à¶»à·à¶‚à·à¶ºà¶šà¶§ ම෠ඇතුළු වන විට මà·à·„ට ඉඟි කරන්න',
@@ -320,15 +319,9 @@ $messages = array(
'listingcontinuesabbrev' => 'ඉතිරිය.',
'index-category' => 'සූචිගත පිටු',
'noindex-category' => 'සූචිගත නොකළ පිටු',
+'broken-file-category' => 'භින්න වූ ගොනු සබà·à¶³à·’ සහිත පිටු',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''මà·à¶°à·Šâ€à¶ºà·€à·’කි à·ƒà·à¶»à·Šà¶®à¶š ලෙස ස්ථà·à¶´à¶±à¶º කරන ලදි.'''",
-'mainpagedocfooter' => 'විකි මෘදුකà·à¶‚ග භà·à·€à·’ත෠කිරීම පිළිබඳ තොරතුරු සඳහ෠[http://meta.wikimedia.org/wiki/Help:Contents පරිà·à·“ලකයන් සඳහ෠නියමුව] හදà·à¶»à¶±à·Šà¶±.
-
-== ඇරඹුම ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings වින්â€à¶ºà·à·ƒ පරිස්ථිතීන් ලà·à¶ºà·’ස්තුව]
-* [http://www.mediawiki.org/wiki/Manual:FAQ මà·à¶°à·Šâ€à¶ºà·€à·’කි නිතර-අසන-පà·à¶±]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce මà·à¶°à·Šâ€à¶ºà·€à·’කි නිකුතුව තà·à¶´à·à¶½à·Š ලà·à¶ºà·’ස්තුව]',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'පිළිබඳ',
'article' => 'පටුන',
@@ -380,10 +373,10 @@ $messages = array(
'history' => 'පිටුවේ ඉතිහà·à·ƒà¶º',
'history_short' => 'ඉතිහà·à·ƒà¶º',
'updatedmarker' => 'මà·à¶œà·š අවසà·à¶± පිවිසුමෙන් පසුව යà·à·€à¶­à·Šà¶šà·à¶½à·“න කරඇත',
-'info_short' => 'තොරතුරු',
'printableversion' => 'මුද්â€à¶»à¶«à¶ºà¶šà¶½à·„à·à¶šà·’ සංස්කරණය',
'permalink' => 'ස්ථà·à·€à¶» සබà·à¶³à·”ම',
'print' => 'මුද්â€à¶»à¶«à¶º කරන්න',
+'view' => 'දසුන',
'edit' => 'සංස්කරණය කරන්න',
'create' => 'තනන්න',
'editthispage' => 'මෙම පිටුව සංස්කරණය කරන්න',
@@ -391,6 +384,7 @@ $messages = array(
'delete' => 'මකන්න',
'deletethispage' => 'මෙම පිටුව මකන්න',
'undelete_short' => '{{PLURAL:$1|එක් සංස්කරණයක|සංස්කරණ $1 ක}} මක෠දà·à¶¸à·“ම ප්â€à¶»à¶­à·’ලà·à¶¸ කරන්න',
+'viewdeleted_short' => 'මක෠දමනු ලà·à¶¶à·– {{PLURAL:$1|එක් සංස්කරණයක්|සංස්කරණ $1 ක්}} බලන්න',
'protect' => 'ආරක්â€à·‚ණය කරන්න',
'protect_change' => 'වෙනස් කරන්න',
'protectthispage' => 'මෙම පිටුව ආරක්â€à·‚ණය කරන්න',
@@ -476,6 +470,8 @@ $1",
'toc' => 'පටුන',
'showtoc' => 'පෙන්වන්න',
'hidetoc' => 'සඟවන්න',
+'collapsible-collapse' => 'හකුලන්න',
+'collapsible-expand' => 'විදහන්න',
'thisisdeleted' => 'අවà·à·Šâ€à¶ºà¶­à·à·€à¶º $1 නà·à¶»à¶¹à·“මද නà·à¶­à·„ොත් ප්â€à¶»à¶­à·’ෂ්ඨà·à¶´à¶±à¶ºà¶¯?',
'viewdeleted' => '$1 නà·à¶»à¶¹à·“ම අවà·à·Šâ€à¶ºà¶ºà¶¯?',
'restorelink' => 'මක෠දමනු ලà·à¶¶à·– {{PLURAL:$1| එක් සංස්කරණයක්| සංස්කරණ $1 ක්}}',
@@ -489,6 +485,8 @@ $1",
'feed-atom' => 'Atom',
'feed-rss' => 'RSS',
'red-link-title' => '$1 (පිටුව නොපවතියි)',
+'sort-descending' => 'අවරà·à·„ණ වර්ගය',
+'sort-ascending' => 'ආරà·à·„ණ වර්ගය',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'පිටුව',
@@ -576,12 +574,13 @@ URL සඳහන් කරමින්, මෙම කරුණ [[Special:ListUs
'protectedinterface' => 'මෙම පිටුව විසින්, මෘදුකà·à¶‚ගය සඳහ෠අතුරුමුව පෙළ සපයන අතර එබà·à·€à·’න් අපයෙදුම à·€à·à¶½à·à¶šà·Šà·€à·“ම සඳහ෠එය අවුර෠ඇත.',
'editinginterface' => "'''අවවà·à¶¯à¶ºà¶ºà·’:''' මෘදුකà·à¶‚ගයට අතුරුමුව පෙළ à·ƒà·à¶´à¶ºà·“මට භà·à·€à·’ත෠වන පිටුවක් ඔබ විසින් සංස්කරණය කරනු ලබයි.
මෙම පිටුවට සිදු කරන වෙනස්වීම් විසින් අනෙකුත් පරිà·à·“ලකයන්ගේ පරිà·à·“ලක අතුරුමුවෙහි පෙනුමට බලපෑම් එල්ල කෙරෙනු ඇත.
-පරිවර්තන සඳහà·, මà·à¶°à·Šâ€à¶ºà·€à·’කි ප්â€à¶»à·à¶¯à·šà·à·“යකරන ව්â€à¶ºà·à¶´à·˜à¶­à·’ය, [http://translatewiki.net/wiki/Main_Page?setlang=si translatewiki.net], භà·à·€à·’ත෠කිරීම සලක෠බà·à¶½à·“මට කà·à¶»à·”ණික වන්න.",
+පරිවර්තන සඳහà·, මà·à¶°à·Šâ€à¶ºà·€à·’කි ප්â€à¶»à·à¶¯à·šà·à·“යකරන ව්â€à¶ºà·à¶´à·˜à¶­à·’ය, [//translatewiki.net/wiki/Main_Page?setlang=si translatewiki.net], භà·à·€à·’ත෠කිරීම සලක෠බà·à¶½à·“මට කà·à¶»à·”ණික වන්න.",
'sqlhidden' => '(එස්කිවුඑල් විපරම සඟව෠ඇත)',
'cascadeprotected' => '"තීරු දර්à·à¶±" විකල්පය සක්â€à¶»à·“යනය කොට එමගින් ආරක්â€à·‚ණය කල පහත දà·à¶šà·Šà·€à·™à¶± {{PLURAL:$1|පිටුව|පිටු}} අඩංගු කර ඇති බà·à·€à·’න්, මෙම පිටුව සංස්කරණය කිරීමෙන් වලක෠ඇත:
$2',
'namespaceprotected' => "'''$1''' නà·à¶¸à¶…වකà·à·à¶ºà·™à·„à·’ පිටු සංස්කරණය කිරීමට ඔබහට අවසර නොමà·à¶­.",
-'customcssjsprotected' => 'තවත් පරිà·à·“ලකයෙකුගේ පෞද්ගලික පරිස්ථිතිය අඩංගු වන බà·à·€à·’න්, මෙම පිටුව සංස්කරණය කිරීමට ඔබ හට අවසර නොමà·à¶­.',
+'customcssprotected' => 'මෙම CSS පිටුව සංස්කරණය කිරීමට ඔබට අවසර නොමà·à¶­à·Šà¶­à·š එහි අනෙකුත් පරිà·à·“ලකයෙකුගේ පුද්ගලික පරිස්ථිතීන් අඩංගු බà·à·€à·’නි.',
+'customjsprotected' => 'මෙම ජà·à·€à·à·ƒà·Šà¶šà·Šâ€à¶»à·’ට් පිටුව සංස්කරණය කිරීමට ඔබට අවසර නොමà·à¶­à·Šà¶­à·š එහි අනෙකුත් පරිà·à·“ලකයෙකුගේ පුද්ගලික පරිස්ථිතීන් අඩංගු බà·à·€à·’නි.',
'ns-specialprotected' => 'විà·à·šà·‚ පිටු සංස්කරණය කිරීම සිදු කල නොහà·à¶š.',
'titleprotected' => "මෙම à·à·“ර්ෂ-නà·à¶¸à¶º තà·à¶±à·“ම [[User:$1|$1]] විසින් à·€à·à¶»à¶«à¶º කොට ඇත.
මේ සඳහ෠''$2'' හේතුව දක්ව෠ඇත.",
@@ -619,7 +618,8 @@ $2',
'nologinlink' => 'ගිණුමක් තනන්න',
'createaccount' => 'ගිණුම තනන්න',
'gotaccount' => "දà·à¶±à¶§à¶¸à¶­à·Š ගිණුමක් තිබේද? '''$1'''.",
-'gotaccountlink' => 'ප්â€à¶»à·€à·’ෂ්ට වන්න',
+'gotaccountlink' => 'පිවිසෙන්න',
+'userlogin-resetlink' => 'ඔබගේ ප්â€à¶»à·€à·’සුම් තොරතුරු අමතකද?',
'createaccountmail' => 'විද්â€à¶ºà·”ත් තà·à¶´à·‘ල මගින්',
'createaccountreason' => 'හේතුව:',
'badretype' => 'ඔබ ඇතුළු කල මුරපදය නොගà·à¶½à¶´à·š.',
@@ -634,13 +634,15 @@ $2',
'nocookieslogin' => 'පරිà·à·“ලකයන් ප්â€à¶»à·€à·’ෂ්ට කර ගà·à¶±à·“ම සඳහà·, {{SITENAME}} විසින් කුකී භà·à·€à·’ත෠කරනු ලà·à¶¶à·š.
ඔබ විසින් කුකී අක්â€à¶»à·“ය නොට ඇත.
කරුණà·à¶šà¶», ඒව෠සක්â€à¶»à·“ය කොට, නà·à·€à¶­ උත්සà·à·„ â€à¶šà¶»à¶±à·Šà¶±.',
+'nocookiesfornew' => 'මූලà·à·à·Šâ€à¶»à¶º තහවුරු කරගත නොහà·à¶šà·’ වුනු බà·à·€à·’න් පරිà·à·“ලක ගිණුම නොතà·à¶±à·’නි.
+කුකීස් සක්â€à¶»à·“ය බව තහවුරු කරගෙන, මෙම පිටුව ප්â€à¶»à¶­à·’පූරණය කර නà·à·€à¶­ උත්සà·à·„ කරන්න.',
'noname' => 'වලංගු පරිà·à·“ලක-නà·à¶¸à¶ºà¶šà·Š සඳහන් කිරීමට ඔබ අසමත් වී ඇත.',
'loginsuccesstitle' => 'පිවිසුම à·ƒà·à¶»à·Šà¶®à¶šà¶ºà·’!',
'loginsuccess' => "'''ඔබ දà·à¶±à·Š, \"\$1\" ලෙස, {{SITENAME}} වෙත ප්â€à¶»à·€à·’ෂ්ට විමට සමත් වී ඇත.'''",
'nosuchuser' => '"$1" යන නමà·à¶­à·’ පරිà·à·“ලකයෙකු නොමà·à¶­.
පරිà·à·“ලක නà·à¶¸à¶ºà¶±à·Šà·„à·’ මහà·à¶´à·Šâ€à¶»à·à¶« ආදිය à·ƒà·à¶½à¶šà·š (case sensitive).
ඔබගේ අක්ෂර-වින්â€à¶ºà·à·ƒà¶º පිරික්ස෠බà·à¶½à·“ම à·„à·, [[Special:UserLogin/signup|නව ගිණුමක් තà·à¶±à·“ම]] හ෠සිදුකරන්න.',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" නමින් පරිà·à·“ලකයෙකු නොමà·à¶­.
+'nosuchusershort' => '"$1" නමින් පරිà·à·“ලකයෙකු නොමà·à¶­.
අක්â€à·‚ර-වින්â€à¶ºà·à·ƒà¶º පිරික්ස෠බලන්න.',
'nouserspecified' => 'ඔබ විසින් පරිà·à·“ලක-නà·à¶¸à¶ºà¶šà·Š සඳහන් කල යුතු වේ.',
'login-userblocked' => 'මෙම පරිà·à·“ලකය෠වà·à¶»à¶«à¶º කොට ඇත. පිවිසීමට ඉඩ දෙනු නොලà·à¶¶à·š.',
@@ -685,13 +687,14 @@ $2',
'usernamehasherror' => 'පරිà·à·“ලක නà·à¶¸à¶ºà·š පූරක අනුලකුණු අඩංගු විය නොහà·à¶šà·’ය',
'login-throttled' => 'ඔබ විසින් මෑතදී පමණට වඩ෠වà·à¶» ගණනක් ප්â€à¶»à·€à·’ෂ්ට වීමට උත්සà·à·„ දර෠ඇත.
යළි උත්සà·à·„ කිරීමට පෙර කරුණà·à¶šà¶» මදක් පොරොත්තු වන්න.',
+'login-abort-generic' => 'ඔබගේ පිවිසීම අසà·à¶»à·Šà¶®à¶šà¶ºà·’ - අතහà·à¶» දමනලදී',
'loginlanguagelabel' => 'භà·à·‚à·à·€: $1',
'suspicious-userlogout' => 'නිෂ්ක්â€à¶»à¶¸à¶«à¶º සඳහ෠ඔබගේ අයà·à¶¯à·”ම නිෂ්ප්â€à¶»à¶·à· කෙරුනේ එය යොමු කොට ඇත්තේ භින්න(කà·à¶©à·”නු) බ්â€à¶»à·€à·”සරයකින් හ෠නිවේෂණය කෙරෙමින් පවතින ප්â€à¶»à·œà¶šà·Šà·ƒà·’යක් වෙතින් යà·à¶ºà·’ බà·à¶½à·– බà·à¶½à·Šà¶¸à¶§ පෙනෙන බà·à·€à·’නි.',
# E-mail sending
'php-mail-error-unknown' => 'php mail() à·à·Šâ€à¶»à·’තයේ හඳුනà·à¶±à·œà¶œà¶­à·Š ගà·à¶§à·…ුවකි',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'මුරපදය වෙනස් කරන්න',
'resetpass_announce' => 'විද්â€à¶ºà·”ත්-තà·à¶´à·‘ලෙන් එවනු ලà·à¶¶à·– තà·à·€à¶šà·à¶½à·’ක කේතයක් උපයà·à¶œà·“කර ඔබ පිවිසීඇත.
පිවිසීම නිසි ලෙස නිමකිරීමට ඔබ නව මුර-පදයක් මෙහි බහà·à¶½à·’ය යුතුය:',
@@ -710,6 +713,27 @@ $2',
ඔබ දà·à¶±à¶§à¶¸à¶­à·Š à·ƒà·à¶»à·Šà¶®à¶š ලෙස ඔබගේ මුර-පදය වෙනස් කොට හ෠නව තà·à·€à¶šà·à¶½à·’ක මුර-පදයක් ඉල්ල෠සිට හ෠ඇතිව෠විය à·„à·à¶š.',
'resetpass-temp-password' => 'තà·à·€à¶šà·à¶½à·’ක මුර-පදය:',
+# Special:PasswordReset
+'passwordreset' => 'මුරපදය වෙනස් කරන්න',
+'passwordreset-text' => 'ඔබගේ ගිණුම් තොරතුරුවල විද්â€à¶ºà·”ත් තà·à¶´à·à¶½à·ŠÂ à¶¸à¶­à¶šà·Šà¶šà·’රීමක් ලබà·Â à¶œà·à¶±à·“ම සදහà·Â à¶¸à·™à¶¸Â à¶†à¶šà·˜à¶­à·’පත්â€à¶»à¶ºÂ à·ƒà¶¸à·Šà¶´à·–ර්ණ කරන්න.',
+'passwordreset-legend' => 'මුරපදය යළි පිහිටුවන්න',
+'passwordreset-disabled' => 'මෙම විකියෙහි මුර පද ප්â€à¶»à¶­à·Šâ€à¶ºà·à¶»à¶¸à·Šà¶·Â à¶šà·’රීම් අක්â€à¶»à·“ය කොට ඇත.',
+'passwordreset-pretext' => '{{PLURAL:$1||පහත දà·à¶šà·Šà·€à·™à¶± දත්ත කණ්ඩ වලින් එකක් ඇතුල් කරන්න}}',
+'passwordreset-username' => 'පරිà·à·“ලක නà·à¶¸à¶º:',
+'passwordreset-domain' => 'වසම:',
+'passwordreset-email' => 'විද්â€à¶ºà·”ත්-තà·à¶´à·à¶½à·Š ලිපිනය:',
+'passwordreset-emailtitle' => '{{SITENAME}}යෙහි ගිණුම් තොරතුරු',
+'passwordreset-emailtext-ip' => 'කවුරුන්හ෠(බොහà·à·€à·’ට ඔබ, $1 අන්තර්ජà·à¶½ ලිපිනය භà·à·€à·’තයෙන්) {{SITENAME}} ($4) සඳහ෠ඔබගේ ගිණුම් විස්තර සිහිකà·à¶³à·€à·“මක් ඉල්ල෠ඇත. පහත පරිà·à·“ලක {{PLURAL:$3|ගිණුම|ගිණුම්}}
+මෙම විද්â€à¶ºà·”ත් තà·à¶´à·à¶½à·Š ලිපිනය හ෠සමගින් ආà·à·Šâ€à¶»à¶º වෙයි.
+
+$2
+
+{{PLURAL:$3|මෙම තà·à·€à¶šà·à¶½à·’ක මුරපදය|මෙම තà·à·€à¶šà·à¶½à·’ක මුරපද}} {{PLURAL:$5|එක් දිනයක්|දින $5 ක්}} ගෙවුනු විට ඉකුත් වනු ඇත.
+ඔබ දà·à¶±à·Š ප්â€à¶»à·€à·’ෂ්ට වී නව මුරපදයක් තà·à¶»à·à¶œà¶­ යුතුයි. වෙන යම් අයෙක් මෙම ඉල්ලීම කර ඇත්නම් à·„à·, ඔබගේ මුල් මුරපදය ඔබගේ මතකයට පà·à¶¸à·’ණ ඇති නම් à·„à·, එය වෙනස් කිරීමට ඔබ හට තවදුරටත් අවà·à·Šâ€à¶º නොවේ නම්, ඔබ විසින් මෙම පණිවුඩය නොසලක෠හà·à¶» පà·à¶»à¶«à·’ මුරපදය තවදුරටත් පà·à·€à·’ච්චි කළ à·„à·à¶š.',
+'passwordreset-emailelement' => 'පරිà·à·“ලක නà·à¶¸à¶º: $1
+තà·à·€à¶šà·à¶½à·’ක මුරපදය: $2',
+'passwordreset-emailsent' => 'විද්â€à¶ºà·”ත් තà·à¶´à·à¶½à·ŠÂ à¶¸à¶­à¶šà·Šà¶šà·’රීමක් යවන ලදී.',
+
# Edit page toolbar
'bold_sample' => 'තදකුරු පෙළ',
'bold_tip' => 'තදකුරු පෙළ',
@@ -721,8 +745,6 @@ $2',
'extlink_tip' => 'බà·à·„ිර සබà·à¶³à·’ය ( http:// උපසර්ගය සිහි තබà·à¶œà¶±à·Šà¶±)',
'headline_sample' => 'සිරස්තල පෙළ',
'headline_tip' => '2 වන මට්ටමෙහි සිරස්තලය',
-'math_sample' => 'සූත්â€à¶»à¶º මෙහි රුවන්න',
-'math_tip' => 'ගණිත සූත්â€à¶»à¶º (LaTeX)',
'nowiki_sample' => 'ආකෘතිකරණය-නොකල පෙළ මෙහි රුවන්න',
'nowiki_tip' => 'විකි ආකෘතිකරණය නොසලකà·à·„රින්න',
'image_sample' => 'නිදසුන.jpg',
@@ -812,7 +834,7 @@ $2',
à·„à· [{{fullurl:{{FULLPAGENAME}}|action=edit}} මෙම පිටුව සංස්කරණය කිරීම] හ෠ඔබ විසින් සිදු කල à·„à·à¶š</span>.',
'noarticletext-nopermission' => 'දà·à¶±à¶§ මෙම පිටුවෙහි කිසිදු පෙළක් නොමà·à¶­.
අනෙකුත් පිටුවල [[Special:Search/{{PAGENAME}}|මෙම පිටු à·à·“ර්ෂය සඳහ෠ගවේà·à¶±à¶º කිරීම]] à·„à·, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}අදà·à·… ලà¶à·”-සටහන් සඳහ෠ගවේෂණය කිරීම]</span>, හ෠මෙම පිටුව සංස්කරණය කිරීම හ෠ඔබට කල à·„à·à¶š.',
-'userpage-userdoesnotexist' => '"$1" යන පරිà·à·“ලක ගිණුම ලේඛනගත කොට නොමà·à¶­.
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" යන පරිà·à·“ලක ගිණුම ලේඛනගත කොට නොමà·à¶­.
ඔබ හට මෙම පිටුව තà·à¶±à·“මට/සංස්කරණය කිරීමට ඇවà·à·ƒà·’ද යන බව විමස෠බලන්න.',
'userpage-userdoesnotexist-view' => '"$1" පරිà·à·“ලක ගිණුම ලියà·à¶´à¶¯à·’ංචි කර නොමà·à¶­.',
'blocked-notice-logextract' => 'මෙම පරිà·à·“ලකය෠දà·à¶±à¶§ අවහිර කරනු ලà·à¶¶ ඇත.
@@ -966,7 +988,7 @@ $3 විසින් සපය෠ඇති හේතුව ''$2'' වේ",
ආඛ්â€à¶ºà·à¶ºà·’කà·à·€: '''({{int:cur}})''' = වත්මන් අනුවà·à¶¯à¶º හ෠සමග වෙනස,
'''({{int:last}})''' = පෙර අනුවà·à¶¯à¶º හ෠සමග වෙනස, '''{{int:minoreditletter}}''' = සුළු සංස්කරණය.",
'history-fieldset-title' => 'ඉතිහà·à·ƒà¶º පිරික්සන්න',
-'history-show-deleted' => 'මකනු ලà·à¶¶à·– ඒව෠පමණයි',
+'history-show-deleted' => 'මà·à¶šà·– ඒව෠පමණී',
'histfirst' => 'පà·à¶»à¶«à·’තම',
'histlast' => 'නවතම',
'historysize' => '({{PLURAL:$1|බයිට්1 |බයිට් $1 ගණනක්}})',
@@ -1212,9 +1234,10 @@ $1",
'changepassword' => 'මුරපදය වෙනස් කරන්න',
'prefs-skin' => 'ඡවිය',
'skin-preview' => 'පෙරදසුන',
-'prefs-math' => 'ගණිත',
'datedefault' => 'අභිරුචියක් නොමà·à¶­',
+'prefs-beta' => 'බීට෠අනුවà·à¶¯à¶ºà·š ලක්ෂණ',
'prefs-datetime' => 'දිනය සහ වේලà·à·€',
+'prefs-labs' => 'Labs features',
'prefs-personal' => 'පරිà·à·“ලක පà·à¶­à·’කඩ',
'prefs-rc' => 'â€à¶±à·€ වෙනස්වීම්',
'prefs-watchlist' => 'මුර-ලà·à¶ºà·’ස්තුව',
@@ -1237,8 +1260,6 @@ $1",
'columns' => 'තීරු:',
'searchresultshead' => 'ගවේෂණය',
'resultsperpage' => 'පිටුවකට හිට් ගණන:',
-'contextlines' => 'හිට් එකකට පේළි ගණන:',
-'contextchars' => 'එක් පේළියකට සන්දර්භය:',
'stub-threshold' => '<a href="#" class="stub">කොට සබà·à¶³à·’</a> ආකෘතිකරණය සඳහ෠සීමකය (බයිට්):',
'stub-threshold-disabled' => 'අක්â€à¶»à·’ය කෙරිණි',
'recentchangesdays' => 'මෑත වෙනස්වීම්හි පෙන්විය යුතු දිනයන්:',
@@ -1251,7 +1272,7 @@ $1",
'savedprefs' => 'අභිරුචීන් සුරà·à¶šà·’නි.',
'timezonelegend' => 'වේල෠කලà·à¶´à¶º:',
'localtime' => 'ප්â€à¶»à·à¶¯à·šà·à·“ය වේලà·à·€:',
-'timezoneuseserverdefault' => 'සේවà·à¶¯à·à¶ºà¶š පෙරනිමිය භà·à·€à·’ත෠කරන්න',
+'timezoneuseserverdefault' => 'විකියෙහි à·ƒà·à¶¸à·à¶±à·Šâ€à¶º විදිහ භà·à·€à·’ත කරන්න ($1)',
'timezoneuseoffset' => 'වෙනත් (හිලව්ව නියමà·à¶šà·à¶»à¶ºà·™à¶±à·Š දක්වන්න)',
'timezoneoffset' => 'Offset¹:',
'servertime' => 'සර්වරයේ වේලà·à·€:',
@@ -1302,8 +1323,9 @@ HTML ටà·à¶œà¶ºà¶±à·Š පිරික්සන්න.',
'email' => 'විද්â€à¶ºà·”ත් තà·à¶´à·‘ල',
'prefs-help-realname' => 'à·ƒà·à¶¶à·‘ නà·à¶¸à¶º හෙළි කිරීම වෛකල්පිකයි.
ඔබ විසින් එය හෙළි කල හොත්, ඔබගේ කෘතීන් සඳහ෠ඔබහට කතෘ-බුහුමන් පිරිනà·à¶¸à·“මට එය භà·à·€à·’ත෠කරනු ඇත.',
-'prefs-help-email' => 'විද්â€à¶ºà·”ත්-තà·à¶´à·‘ල ලිපිනය à·ƒà·à¶´à¶ºà·“ම වෛකල්පිකයි, එනමුදු ඔබගේ මුර-පදය ඔබහට අමතක වූ විටෙක නව මුර-පදයක් ඔබහට විද්â€à¶ºà·”ත්-තà·à¶´à·à¶½à·Šà¶œà¶­ කිරීමට එය ප්â€à¶»à¶ºà·à¶¢à¶±à·€à¶­à·Š විය à·„à·à¶š.
-අනෙක් අතට, ඔබගේ පරිà·à·“ලක පිටුව හ෠පරිà·à·“ලක_à·ƒà·à¶šà¶ à·Šà¶¡à· පිටුව හ෠තුලින් අනෙකුන් හට ඔබ හ෠සම්බන්ධ වීමට ඉඩ à·ƒà·à¶½à·ƒà·“මෙන්, ඔබගේ අනන්â€à¶ºà¶­à·à·€à¶º හෙළි නොකර සිටීමට ඔබහට à·„à·à¶šà·’ය.',
+'prefs-help-email' => 'විද්â€à¶ºà·”ත් තà·à¶´à·‘ල් ලිපිනය අත්â€à¶ºà·à·€à·à·Šâ€à¶º නොවේ, එහෙත් මුර පද ප්â€à¶»à¶­à·Šâ€à¶ºà·à¶»à¶¸à·Šà¶· කිරීමට එය අවà·à·Šâ€à¶º වේ (ඔබගේ මුර පදය අමතක වූ විට).',
+'prefs-help-email-others' => 'ඔබගේ පරිà·à·“ලක හ෠පරිà·à·“ලක à·ƒà·à¶šà¶ à·Šà¶¡à· පිටුවෙහි සබà·à¶³à·’යක් ඔස්සේ විද්â€à¶ºà·”ත් තà·à¶´à·‘ල මගින් අනෙක් අයට ඔබව සම්බන්ධ කර ගà·à¶±à·“ම පිණිස තේරිමක් සිදු කල à·„à·à¶š.
+අනෙකුත් පරිà·à·“ලකයන් ඔබව අමතන විට ඔබගේ විද්â€à¶ºà·”ත් තà·à¶´à·à¶½à·Š ලිපිනය à·à·Šâ€à¶»à·à¶­à·’මය නොවේ.',
'prefs-help-email-required' => 'විද්â€à¶ºà·”ත්-ලිපිනය අවà·à·Šâ€à¶ºà¶ºà·’.',
'prefs-info' => 'මූලික තොරතුරු',
'prefs-i18n' => 'ජà·à¶­à·Šâ€à¶ºà¶±à·Šà¶­à¶»à¶šà¶»à¶«à¶º',
@@ -1429,15 +1451,15 @@ HTML ටà·à¶œà¶ºà¶±à·Š පිරික්සන්න.',
'right-userrights' => 'පරිà·à·“ලක හිමිකම් සියල්ල සංස්කරණය කරන්න',
'right-userrights-interwiki' => 'අනෙකුත් විකියන්හි පරිà·à·“ලකයන්ගේ හිමිකම් සංස්කරණය කරන්න',
'right-siteadmin' => 'දත්ත-ගබඩà·à·€ අවුරන්න හ෠ඇවුරුම ඉවත් කරන්න',
-'right-reset-passwords' => 'අනෙක් පරිà·à·“ලකගේ මුරපදය ප්â€à¶»à¶­à·’ෂ්ඨà·à¶´à¶±à¶º කරන්න',
'right-override-export-depth' => '5වන මට්ටම දක්ව෠සබà·à¶³à·’ පිටු ද සහිතව පිටු නිර්යà·à¶­ කරන්න',
'right-sendemail' => 'අනෙක් පරිà·à·“ලකයන්ට ඊ-ලිපි යවන්න',
# User rights log
-'rightslog' => 'පරිà·à·“ලක හිමිකම් සටහන',
-'rightslogtext' => 'මෙය පරිà·à·“ලකයන්ගේ හිමිකම් වෙනස්වීම් පිළිබඳ ලà¶à·”-සටහනකි.',
-'rightslogentry' => '$1 සඳහ෠කණ්ඩà·à¶ºà¶¸à·Š à·ƒà·à¶¸à·à¶¢à·’කත්වය $2 සිට $3 දක්ව෠වෙනස්කෙරිණි',
-'rightsnone' => '(කිසිවක් නොමà·à¶­)',
+'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' => 'මෙම පිටුව කියවන්න',
@@ -1562,13 +1584,13 @@ HTML ටà·à¶œà¶ºà¶±à·Š පිරික්සන්න.',
'illegalfilename' => 'à·à·“ර්ෂයන්හි භà·à·€à·’ත කිරීමට ඉඩ නොදෙන යම් අක්ෂරයන් "$1" ගොනු නà·à¶¸à¶ºà·™à·„à·’ අඩංගුය.
කරුණà·à¶šà¶» ගොනුව යළිනම් කොට එය නà·à·€à¶­ උඩුගත කිරීමට උත්සà·à·„ කරන්න.',
'badfilename' => 'ගොනු නම "$1" බවට වෙනස් කර ඇත.',
-'filetype-mime-mismatch' => 'ගොනු දිගුව MIME වර්ගය හ෠නොගà·à·…පේ.',
+'filetype-mime-mismatch' => '".$1" යන ගොනු දිගුව ($2) ගොනුවෙහි අනà·à·€à¶»à·’ත MIME වර්ගය හ෠නොගà·à¶½à¶´à·š.',
'filetype-badmime' => '"$1" MIME වර්ගයෙහි ගොනු උඩුගත කිරීමට ඉඩ දෙනු නොලà·à¶¶à·š.',
'filetype-bad-ie-mime' => 'මෙම ගොනුව උඩුගත කල නොහà·à¶šà·’ වන්නේ ඉන්ටනෙට් එක්ස්ප්ලà·à¶»à¶»à·Š විසින් එය, ප්â€à¶»à¶­à·’ක්â€à·‚ේප කෙරෙන හ෠භව්â€à¶º ලෙසින් අනතුරුදà·à¶ºà¶š ගොනු මà·à¶¯à·’ලියක් වන, "$1" ලෙසින් හඳුනà·à¶œà·à¶±à·™à¶± බà·à·€à·’නි.',
'filetype-unwanted-type' => "'''\".\$1\"''' යනු අනවà·à·Šâ€à¶º ගොනු වර්ගයකි.
රුචිකර {{PLURAL:\$3|ගොනු වර්ගය|ගොනු වර්ගයන්}} වන්නේ \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' යනු අවසරලත් ගොනු වර්ගයක් නොවේ.
-අවසරලත් {{PLURAL:\$3|ගොනු වර්ගය|ගොනු වර්ගයන්}} වන්නේ \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' යනු {{PLURAL:$4|අවසරලත් ගොනු වර්ගයක්|අවසරලත් ගොනු වර්ගයන්}} නොවේ.
+අවසරලත් {{PLURAL:$3|ගොනු වර්ගය|ගොනු වර්ගයන්}} වන්නේ $2.',
'filetype-missing' => 'ගොනුවට (".jpg" à·€à·à¶±à·’) ප්â€à¶»à·ƒà¶»à·Šà¶¢à¶±à¶ºà¶šà·Š නොමà·à¶­.',
'empty-file' => 'ඔබ ඉදිරිපත්කල ගොනුව හිස් එකකි.',
'file-too-large' => 'ඔබ විසින් යොමන ලද ගොනුව පමණට වඩ෠විà·à·˜à¶½à¶º.',
@@ -1587,6 +1609,7 @@ HTML ටà·à¶œà¶ºà¶±à·Š පිරික්සන්න.',
'emptyfile' => 'ඔබ විසින් උඩුගත කරන ලද ගොනුව හිස් බවක් පෙනේ.
මෙය සමහරවිට ගොනු නà·à¶¸à¶ºà·š මුද්â€à¶»à¶« දà·à·‚යක් නිස෠විය à·„à·à¶š.
ඔබට නිසà·à¶šà·€à¶¸ මෙම ගොනුව උඩුගත කිරීමට අවà·à·Šâ€à¶ºà¶ºà¶¯ යන්න පරික්â€à·‚෠කර බලන්න.',
+'windows-nonascii-filename' => 'විà·à·šà·‚ අක්ෂර සහිත ගොනු නà·à¶¸ සදහ෠මෙම විකිය සහය නොදක්වයි.',
'fileexists' => "මෙම නම සහිත ගොනුවක් දà·à¶±à¶§à¶¸à¶­à·Š පවතියි, මෙය වෙනස් කල යුතු බවට ඔබට නිසà·à¶š නොවේ නම්, කරුණà·à¶šà¶» '''<tt>[[:$1]]</tt>''' පරික්ෂ෠කර බලන්න .
[[$1|thumb]]",
'filepageexists' => "මෙම ගොනුව සඳහ෠විස්තර පිටුව දà·à¶±à¶§à¶¸à¶­à·Š '''<tt>[[:$1]]</tt>''' à·„à·’ තන෠ඇති නමුත්, මෙම නම ඇති කිසිදු ගොනුවක් දà·à¶±à¶§ නොපවතියි.
@@ -1623,6 +1646,8 @@ HTML ටà·à¶œà¶ºà¶±à·Š පිරික්සන්න.',
කරුණà·à¶šà¶» ගොනු_උඩුගතකිරීම් පරිස්ථිතිය පරික්ෂ෠කර බලන්න.',
'uploadscripted' => 'වෙබ් බ්â€à¶»à·€à·”සරයක් මගින් à·ƒà·à·€à¶¯à·Šâ€à¶º ලෙස අර්ථ පà·à·„à·à¶¯à·’ය à·„à·à¶šà·’ HTML හ෠ලේඛන ක්â€à¶»à¶¸ තේතයක් මෙම ගොනුවේ අඩංගු වේ.',
'uploadvirus' => 'මෙම ගොනුවෙහි වයිරසයක් අඩංගුය! විස්තර: $1',
+'uploadjava' => 'මෙය ZIP ගොනුවක් වන අතර ජà·à·€à· .class ගොනු අඩංගු වෙයි.
+ජà·à·€à· ගොනු උඩුගත කිරීම සදහ෠අවසර ලබ෠නොදේ, මන්ද ඒව෠ආරක්ෂිත අවහිරත෠මගහà·à¶» යà·à¶¸à¶§ හේතු විය à·„à·à¶š.',
'upload-source' => 'මූලà·à·à·Šâ€à¶» ගොනුව',
'sourcefilename' => 'මූල ගොනුනà·à¶¸à¶º:',
'sourceurl' => 'මූලà·à·à·Šâ€à¶» URL:',
@@ -1633,10 +1658,6 @@ HTML ටà·à¶œà¶ºà¶±à·Š පිරික්සන්න.',
'watchthisupload' => 'මෙම ගොනුව මුර-කරන්න',
'filewasdeleted' => 'මෙම නම ඇති ගොනුව මින් පෙර උඩුගත කොට අනතුරුව මකà·à¶¯à¶¸à· ඇත.
එය නà·à·€à¶­ උඩුගතකිරීමට උත්සà·à·„ කිරීමට පෙර ඔබ විසින් $1 පරික්â€à·‚෠කර බà·à¶½à·’ය යුතුය.',
-'upload-wasdeleted' => "'''අවවà·à¶¯à¶ºà¶ºà·’: මින්පෙර මකà·à¶¯à·à¶¸à·”ණු ගොනුවක් ඔබ විසින් උඩුගත කෙරෙමින් පවතියි.'''
-
-මෙම ගොනුව උඩුගත කිරීම සිදුකරගෙනයà·à¶¸ යà·à¶œà·Šâ€à¶ºà¶¯ යන බව ඔබ විසින් සලක෠බà·à¶½à·’ය යුතුය.
-ඔබගේ පහසුව සඳහ෠මකà·à¶¯à·à¶¸à·”ම් ලà¶à·”-සටහන මෙහි දක්ව෠ඇත:",
'filename-bad-prefix' => "ඔබ උඩුගත කරන ගොනුවේ නම, à·ƒà·à¶¸à·à¶±à·Šâ€à¶ºà¶ºà·™à¶±à·Š ස්වයංක්â€à¶»à·“ය ලෙස ඩිජිටල් කà·à¶¸à¶»à· විසින් අනුගත කෙරෙන අව්â€à¶ºà·à¶šà·Šâ€à¶ºà·à¶­à·Šà¶¸à¶š නමක් වන '''\"\$1\"''' යන්නෙන් ආරම්භ වෙයි,.
වඩà·à¶­à·Š ව්â€à¶ºà·à¶šà·à¶­à·Šà¶¸à¶š නමක් ඔබගේ ගොනුව සඳහ෠තà·à¶»à·à¶œà·à¶±à·”මට කà·à¶»à·”ණික වන්න.",
'filename-prefix-blacklist' => '#<!-- මෙම පේළිය මෙලෙසම පà·à·€à¶­à·“මට ඉඩදෙන්න --> <pre>
@@ -1675,6 +1696,23 @@ $1',
'upload-unknown-size' => 'ප්â€à¶»à¶¸à·à¶«à¶º නොදනී',
'upload-http-error' => 'HTTP දà·à·‚යක් හට ගà·à¶±à·’ණි: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'ZIP පිරික්සුම් සඳහ෠ගොනුව විවෘත කරද්දී දà·à·‚යක් ඇති විය.',
+'zip-wrong-format' => 'සඳහන් ගොනුව ZIP ගොනුවෙහි නොතිබිණි.',
+'zip-bad' => 'ගොනුව එක්ක෠දූෂිත හ෠නà·à¶­à·Šà¶±à¶¸à·Š කියවිය-නොහà·à¶šà·’ ZIP ගොනුවකි.
+එය නියමà·à¶šà·à¶»à¶ºà·™à¶±à·Š ආරක්ෂණය සඳහ෠පරික්ෂ෠කල නොහà·à¶šà·’ විය.',
+'zip-unsupported' => 'මෙම ගොනුව, මà·à¶°à·Šâ€à¶º විතී විසින් උද්වහනය නොකෙරෙන ZIP ගුණà·à¶‚ග භà·à·€à·’ත෠කරන ZIP ගොනුවකි.
+එය නියමà·à¶šà·à¶»à¶ºà·™à¶±à·Š ආරක්ෂණය සඳහ෠පරික්ෂ෠කල නොහà·à¶šà·’ විය.',
+
+# Special:UploadStash
+'uploadstash' => 'පà·à¶§à·€à·”ම් à·ƒà·à¶Ÿà·€à·”ම',
+'uploadstash-summary' => 'මෙම පිටුව දà·à¶±à¶§ විකියේ ප්â€à¶»à¶šà·à·à¶±à¶ºà¶§ පත් කර නà·à¶­à·’ මුත් පටවනු ලà·à¶¶à·– (හ෠පà·à¶§à·€à·™à¶¸à·’න් පවතින) ගොනු වලට ප්â€à¶»à·€à·šà·à¶º ලබ෠දෙයි. මෙම ගොනු ඒව෠පà·à¶§à·€à·– පරිà·à·“ලකයà·à¶§ à·„à·à¶» අනෙකුත් අයට දà·à¶šà¶œà¶­ නොහà·à¶š.',
+'uploadstash-clear' => 'à·ƒà·à¶Ÿà·€à·”නු ගොනු මකන්න',
+'uploadstash-nofiles' => 'ඔබ සතුව à·ƒà·à¶Ÿà·€à·”නු ගොනු කිසිවක් නà·à¶­.',
+'uploadstash-badtoken' => 'එම ක්â€à¶»à·’යà·à·€ කිරීම à·ƒà·à¶»à·Šà¶®à¶š නොවිනි, ඇතà·à¶¸à·Šà·€à·’ට ඔබේ සංස්කරණ අක්තපත්â€à¶» කල්ඉකුත්වී තිබිය à·„à·à¶š. නà·à·€à¶­ උත්සà·à·„ කරන්න.',
+'uploadstash-errclear' => 'ගොනු පවිත්â€à¶» කිරීම අසà·à¶»à·Šà¶®à¶š විය.',
+'uploadstash-refresh' => 'ගොනු ලà·à¶ºà·’ස්තුව යළි-පුබුදුවන්න',
+
# img_auth script messages
'img-auth-accessdenied' => 'ප්â€à¶»à·€à·šà·à¶º තහනම් කර ඇත',
'img-auth-nopathinfo' => 'PATH_INFO à·€à·à¶»à¶¯à·“ ඇත.
@@ -1758,7 +1796,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization බලන්න.',
[[Special:WhatLinksHere/$2|සම්පූර්ණ ලà·à¶ºà·’ස්තුව]]ක්ද තිබේ.',
'nolinkstoimage' => 'මෙම ගොනුවට සබà·à¶³à·™à¶± පිටු කිසිවක් නොමà·à¶­.',
'morelinkstoimage' => 'මෙම ගොනුව සඳහ෠[[Special:WhatLinksHere/$1|තවත් සබà·à¶³à·’]] තිබේදà·à¶ºà·’ නරඹන්න.',
-'redirectstofile' => 'පහත {{PLURAL:$1|ගොනුව මෙම ගොනුව කර෠යළි-යොමුවේ|ගොනු $1 මෙම ගොනුව කර෠යළි-යොමුවෙති}} :',
+'linkstoimage-redirect' => '$1 (ගොනු යලි යොමුව) $2',
'duplicatesoffile' => 'පහත {{PLURAL:$1|ගොනුව |ගොනු $1 }} මෙම ගොනුවේ {{PLURAL:$1|අනුපිටපත |අනුපිටපත් }} වේ ([[Special:FileDuplicateSearch/$2|à·€à·à¶©à·’ විස්තර සඳහà·]]):',
'sharedupload' => 'මෙම ගොනුව $1 වෙතින් වන අතර අනෙකුත් ව්â€à¶ºà·à¶´à·˜à¶­à·’න් සඳහà·à¶¯ භà·à·€à·’ත෠කල à·„à·à¶šà·’ වෙයි.',
'sharedupload-desc-there' => 'මෙම ගොනුව $1 වෙතින් වන අතර අනෙකුත් ව්â€à¶ºà·à¶´à·˜à¶­à·“න් විසින්ද භà·à·€à·’ත෠කල à·„à·à¶š.
@@ -1856,11 +1894,12 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization බලන්න.',
ඒව෠ඒ වෙනුවට අනුරූප මà·à¶­à·˜à¶šà·à·€à¶§ සබà·à¶³à·’ය යුතුය.<br />
යම් පිටුවක් වක්â€à¶»à·à¶­à·Šà¶­à·’හරණ පිටුවක් ලෙස සලකනුයේ එය [[MediaWiki:Disambiguationspage]] වෙතින් සබà·à¶³à·”නු à·ƒà·à¶šà·’ල්ලක් භà·à·€à·’ත෠කරන්නේ නම්ය",
-'doubleredirects' => 'ද්විත්ව යළි-යොමුකිරීම්',
-'doubleredirectstext' => 'අනෙකුත් යළි-යොමුවීම් පිටුවලට යළි-යොමුවන පිටුවල ලà·à¶ºà·’ස්තුවක් මෙම පිටුවේ දà·à¶šà·Šà·€à·š.
+'doubleredirects' => 'ද්විත්ව යළි-යොමුකිරීම්',
+'doubleredirectstext' => 'අනෙකුත් යළි-යොමුවීම් පිටුවලට යළි-යොමුවන පිටුවල ලà·à¶ºà·’ස්තුවක් මෙම පිටුවේ දà·à¶šà·Šà·€à·š.
එක් එක් පේළියක අඩංගු වන්නේ පළමු හ෠දෙවන යළි-යොමුවීම් වලට සබà·à¶³à·’ හ෠ඒ සමග පළමු යළි-යොමුව එල්ල වන්නà·à·€à·–, à·ƒà·à¶¸à·à¶±à·Šâ€à¶ºà¶ºà·™à¶±à·Š "සත්â€à¶º" ඉලක්ක පිටුව වන, දෙවන යළි-යොමුවේ ඉලක්කයයි.<del>කප෠හà·à¶»à·’</del> නිවේà·à·’තයන් පිලිබඳ ගà·à¶§à·…à·” විසඳ෠ඇත.',
-'double-redirect-fixed-move' => '[[$1]] ගෙන ගොස් ඇත, එය දà·à¶±à·Š [[$2]] වෙතට යළි-යොමුවකි',
-'double-redirect-fixer' => 'යළි-යොමුවීම් උපස්ථà·à¶ºà¶š',
+'double-redirect-fixed-move' => '[[$1]] ගෙන ගොස් ඇත, එය දà·à¶±à·Š [[$2]] වෙතට යළි-යොමුවකි',
+'double-redirect-fixed-maintenance' => '[[$1]] සිට [[$2]] දක්ව෠ද්විත්ව යළි-යොමුකිරීමක් පිළිසකර කරමිනි.',
+'double-redirect-fixer' => 'යළි-යොමුවීම් උපස්ථà·à¶ºà¶š',
'brokenredirects' => 'භින්න වූ ආපසු à·„à·à¶»à·€à·”ම්',
'brokenredirectstext' => 'මෙහි පහත දà·à¶šà·Šà·€à·™à¶± යළි-යොමුවීම් නොපවතින පිටු වලට සබà·à¶³à·š:',
@@ -1937,6 +1976,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization බලන්න.',
'pager-newer-n' => '{{PLURAL:$1|නවීන 1|නවීන $1}}',
'pager-older-n' => '{{PLURAL:$1|පà·à¶»à¶«à·’ 1|පà·à¶»à¶«à·’ $1}}',
'suppress' => 'ප්â€à¶»à¶¸à·à¶¯ දà·à·‚ය',
+'querypage-disabled' => 'ක්â€à¶»à·’යà·à¶šà·à¶»à·“ත්ව හේතූන්මත මෙම විà·à·šà·‚ පිටුව අක්â€à¶»à·“ය කර ඇත.',
# Book sources
'booksources' => 'මූලà·à·à·Šâ€à¶» පොත්',
@@ -2055,6 +2095,10 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization බලන්න.',
'noemailtext' => 'මෙම පරිà·à·“ලකය෠නීතික විද්â€à¶ºà·”ත්-තà·à¶´à·à¶½à·Š ලිපිනයක් සඳහන් කර නà·à¶­.',
'nowikiemailtitle' => 'විද්â€à¶ºà·”ත්-තà·à¶´à·‘ලයන් කිසිවක් සඳහ෠අවසර නොමà·à¶­',
'nowikiemailtext' => 'අනෙකුත් පරිà·à·“ලකයන්ගෙන් විද්â€à¶ºà·”ත්-තà·à¶´à·à¶½à·Š ලà·à¶¶ නොගà·à¶±à·”ම මෙම පරිà·à·’ලකය෠විසින් තà·à¶»à·à¶œà·™à¶± ඇත.',
+'emailnotarget' => 'ලà·à¶·à·’ය෠සඳහ෠නොපවතින හ෠අනීතික පරිà·à·“ලක නà·à¶¸à¶ºà¶šà·’.',
+'emailtarget' => 'ලබන්නà·à¶œà·š පරිà·à·“ලක නà·à¶¸à¶º ඇතුල් කරන්න',
+'emailusername' => 'පරිà·à·“ලක නà·à¶¸à¶º:',
+'emailusernamesubmit' => 'යොමුකරන්න',
'email-legend' => 'වෙනත් {{SITENAME}} පරිà·à·“ලකයෙකුට විද්â€à¶ºà·”ත්-තà·à¶´à·‘ලක් යවන්න',
'emailfrom' => 'වෙතින්:',
'emailto' => 'වෙතට:',
@@ -2079,10 +2123,10 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization බලන්න.',
'watchlistanontext' => 'ඔබගේ මුර-ලà·à¶ºà·’ස්තුවෙහි අයිතම නà·à¶»à¶¹à·“මට හ෠සංස්කරණය කිරීමට හ෠කරුණà·à¶šà¶» $1 සපුරන්න.',
'watchnologin' => 'ප්â€à¶»à·€à·’ෂ්ට වී නොමà·à¶­',
'watchnologintext' => 'ඔබගේ මුරලà·à¶ºà·’ස්තුව විකරණය කිරීමට පෙරà·à¶­à·”à·€ ඔබ [[Special:UserLogin|ප්â€à¶»à·€à·’ෂ්ට වී]] සිටිය යුතුය.',
-'addedwatch' => 'මුර-ලà·à¶ºà·’ස්තුවට එක් කරන ලදි',
+'addwatch' => 'මුර ලà·à¶ºà·’ස්තුවට එක් කරන්න',
'addedwatchtext' => "\"[[:\$1]]\" පිටුව ඔබගේ [[Special:Watchlist|මුර-ලà·à¶ºà·’ස්තුවට]] එක් කොට ඇත.
මෙම පිටුවට සහ එයට අදà·à·… à·ƒà·à¶šà¶ à·Šà¶¡à· පිටුවට ඉදිරියෙහිදී සිදු කෙරෙන වෙනස්කිරීම් ලයිස්තුගත වන අතර, â€à¶­à·à¶»à·à¶œà·à¶±à·“මේගà·à¶±à·“මෙහි පහසුව තකà·, [[Special:RecentChanges|මෑත වෙනස්වීම් ලà·à¶ºà·’ස්තුව]] තුල මෙම පිටුව '''තදකුරු''' වලින් දක්වනු ඇත.",
-'removedwatch' => 'මුර-ලà·à¶ºà·’ස්තුවෙන් ඉවත් කරන ලදි',
+'removewatch' => 'මුරලà·à¶ºà·’ස්තුවෙන් ඉවත් කරන්න',
'removedwatchtext' => 'මෙම "[[:$1]]" පිටුව [[Special:Watchlist|ඔබගේ මුර-ලà·à¶ºà·’ස්තුවෙන්]] ඉවත් කරන ලදි.',
'watch' => 'මුර කරන්න',
'watchthispage' => 'මෙම පිටුව මුර කරන්න',
@@ -2103,8 +2147,9 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization බලන්න.',
'watchlist-options' => 'මුර-ලà·à¶ºà·’ස්තු විකල්ප',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'මුර කරමින්...',
-'unwatching' => 'මුර නොකරමින්...',
+'watching' => 'මුර කරමින්...',
+'unwatching' => 'මුර නොකරමින්...',
+'watcherrortext' => 'මුර-ලà·à¶ºà·’ස්තු à·ƒà·à¶šà·ƒà·”ම් වෙනස් කිරීමේදී "$1"හට අපහසුතà·à·€à¶šà·Š හට ගà·à¶«à·’නි.',
'enotif_mailer' => '{{SITENAME}}à·„à·’ නිවේදන යවන්නà·',
'enotif_reset' => 'පිවිසුනු සියළු පිටු සලකුණු කරන්න',
@@ -2136,16 +2181,16 @@ You could also reset the notification flags for all your watched pages on your w
--
To change your email notification settings, visit
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
To change your watchlist settings, visit
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
To delete the page from your watchlist, visit
$UNWATCHURL
Feedback and further assistance:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'පිටුව මක෠දමන්න',
@@ -2162,7 +2207,7 @@ Feedback and further assistance:
ඔබගේ අභිමතය මෙයමදà·à¶ºà·’ තහවුරුකර, මෙහි ප්â€à¶»à¶­à·’ඵල ඔබ විසින් අවබà·à¶° කරගෙන ඇති බවට සෑහීමට පත්ව හ෠ඔබ මෙය සිදුකරන්නේ [[{{MediaWiki:Policy-url}}|ප්â€à¶»à¶­à·’පත්තියට]] අනුකූලවදà·à¶ºà·’ විමස෠මෙය සිදුකරන්න.',
'actioncomplete' => 'ක්â€à¶»à·’යà·à·€ සමà·à¶´à·Šà¶­à¶ºà·’',
'actionfailed' => 'කà·à¶»à·Šà¶ºà¶º අසà·à¶»à·Šà¶®à¶š විය',
-'deletedtext' => '"<nowiki>$1</nowiki>" මක෠දම෠ඇත.
+'deletedtext' => '"$1" මක෠දම෠ඇත.
මෑත මකà·à¶¯à·à¶¸à·“ම් පිළිබඳ à·€à·à¶»à·Šà¶­à·à·€à¶šà·Š සඳහ෠$2 බලන්න.',
'deletedarticle' => '"[[$1]]" මක෠දමන ලදි',
'suppressedarticle' => '"[[$1]]" යටපත් කෙරිණි',
@@ -2224,7 +2269,7 @@ $2 ගේ අවසන් අනුවà·à¶¯à¶º වෙතට යළි වෙන
'protect_expiry_invalid' => 'අනීතික ඉකුත් වීමේ කà·à¶½à¶ºà¶šà·’.',
'protect_expiry_old' => 'ඉකුත් වීමේ කà·à¶½à¶º දà·à¶±à¶§à¶¸à¶­à·Š ඉක්ම ගොස් ඇත.',
'protect-unchain-permissions' => 'තවදුරටත් ඇති ආරක්ෂක විකල්ප අගුළු අරින්න',
-'protect-text' => "'''<nowiki>$1</nowiki>''' පිටුව සඳහ෠ආරක්ෂණ මට්ටම නà·à¶»à¶¹à·“ම හ෠වෙනස් කිරීම මෙහිදී ඔබ විසින් සිදු කල à·„à·à¶š.",
+'protect-text' => "'''$1''' පිටුව සඳහ෠ආරක්ෂණ මට්ටම නà·à¶»à¶¹à·“ම හ෠වෙනස් කිරීම මෙහිදී ඔබ විසින් සිදු කල à·„à·à¶š.",
'protect-locked-blocked' => "à·€à·à¶»à¶«à¶ºà¶§ ලක්ව සිටියදී ඔබ හට ආරක්ෂණ මට්ටම් වෙනස්කල නොහà·à¶š.
'''$1''' පිටුව සඳහ෠වත්මන් පරිස්ථිතීන් මෙලෙස වේ:",
'protect-locked-dblock' => "සක්â€à¶»à·“ය දත්ත-ගබඩà·à·€ ඇවුරුමක් හේතුවෙන්, ආරක්ෂණ මට්ටම් වෙනස් කිරීම සිදු කල නොහà·à¶šà·’ තත්ත්වයක් උද්ගත වී ඇත.
@@ -2327,17 +2372,18 @@ $1',
'undelete-show-file-submit' => 'ඔව්',
# Namespace form on various pages
-'namespace' => 'නà·à¶¸à¶…වකà·à·à¶º:',
-'invert' => 'තà·à¶»à·à¶œà·à¶±à·”ම ප්â€à¶»à¶­à·’ලà·à¶¸ කරන්න',
-'blanknamespace' => '(ප්â€à¶»à¶°à·à¶±)',
+'namespace' => 'නà·à¶¸à¶…වකà·à·à¶º:',
+'invert' => 'තà·à¶»à·à¶œà·à¶±à·”ම ප්â€à¶»à¶­à·’ලà·à¶¸ කරන්න',
+'namespace_association' => 'ආà·à·Šâ€à¶»à·’ත නà·à¶¸ අවකà·à·à¶º',
+'blanknamespace' => '(ප්â€à¶»à¶°à·à¶±)',
# Contributions
-'contributions' => 'මේ පරිà·à·“ලකයà·à¶œà·š දà·à¶ºà¶šà¶­à·Šà·€',
+'contributions' => 'මෙම පරිà·à·“ලකගේ දà·à¶ºà¶šà¶­à·Šà·€à¶ºà¶±à·Š',
'contributions-title' => ' $1 සඳහ෠පරිà·à·“ලක දà·à¶ºà¶šà¶­à·Šà·€à¶ºà¶±à·Š',
'mycontris' => 'මගේ දà·à¶ºà¶šà¶­à·Šà·€',
'contribsub2' => '$1 සඳහ෠($2)',
'nocontribs' => 'මෙම උපමà·à¶±à¶ºà¶±à·Š හ෠ගà·à¶½à¶´à·™à¶± වෙනස්වීම් හමුනොවිණි.',
-'uctop' => '(පෙරටු)',
+'uctop' => '(ඉහලම)',
'month' => 'මෙම මස (හ෠ඉන් පෙර) සිට:',
'year' => 'මෙම වසර (හ෠ඉන් පෙරà·à¶­à·”à·€) සිට:',
@@ -2380,13 +2426,15 @@ $1',
'whatlinkshere-filters' => 'පෙරහන්',
# Block/unblock
+'autoblockid' => 'ස්වයංවà·à¶»à¶«à¶º #$1',
+'block' => 'පරිà·à·“ලකය෠වà·à¶»à¶«à¶º කරන්න',
+'unblock' => 'පරිà·à·“ලකයà·à¶œà·š à·€à·à¶»à¶«à¶º අත්හිටුවන්න',
'blockip' => 'පරිà·à·“ලකය෠වà·à¶»à¶«à¶º කරන්න',
'blockip-title' => 'පරිà·à·“ලකය෠වà·à¶»à¶«à¶º කරන්න',
'blockip-legend' => 'à·€à·à¶»à¶«à¶ºà¶šà¶½ පරිà·à·“ලක',
'blockiptext' => 'විà·à·šà·‚ිත අන්තර්ජà·à¶½ ලිපිනයකින් හ෠ප්â€à¶»à¶­à·’à·à·“ලක නà·à¶¸à¶ºà¶šà·’න් ලිවීම් ප්â€à¶»à·€à·šà·à¶º à·€à·à¶»à¶«à¶º කෙරුමට පහත ආකෘති පත්â€à¶»à¶º භà·à·€à·’ත෠කරන්න.
වන්ධල්â€à¶ºà¶º à·€à·à¶½à·à¶šà·Šà·€à·“මේ හුදු අභිලà·à·‚යෙන් à·„à·, [[{{MediaWiki:Policy-url}}|ප්â€à¶»à¶­à·’පත්ති]] ප්â€à¶»à¶šà·à¶»à·€ මෙය සිදුකල යුත්තේය.
විà·à·šà·‚ිත හේතුවක් මෙහි පහත ඇතුලත් කරන්න (නිදසුනක් ලෙස, වන්ධල්â€à¶ºà·Šâ€à¶ºà¶§ ලක්වුනු විà·à·šà·‚ිත පිටු හඳුන්වමින්).',
-'ipaddress' => 'IP ලිපිනය:',
'ipadressorusername' => 'පරිà·à·“ලක නà·à¶¸à¶º à·„à· IP ලිපිනය:',
'ipbexpiry' => 'කල් ඉකුත්වීම:',
'ipbreason' => 'හේතුව:',
@@ -2399,7 +2447,7 @@ $1',
** තà·à¶­à·’ගන්වනසුළු à·„à·à·ƒà·’රීම/හිරිහà·à¶»à¶šà·’රීම
** බහුගණ ගිනුම් අපයෙදුම
** නොපිළිගතහà·à¶šà·’ පරිà·à·“ලකනà·à¶¸à¶º',
-'ipbanononly' => 'නිර්නà·à¶¸à·’ක පරිà·à·“ලකයන් පමණක් à·€à·à¶»à¶«à¶º කරන්න',
+'ipb-hardblock' => 'ප්â€à¶»à·€à·’ෂ්ට වූ පරිà·à·“ලකයන්ට මෙම අන්තර්ජà·à¶½ ලිපිනයෙන් සංස්කරණය කිරීම වලන්වන්න',
'ipbcreateaccount' => 'ගිණුම් තà·à¶±à·“ම වලක්වන්න',
'ipbemailban' => 'පරිà·à·“ලක විසින් විද්â€à¶ºà·”ත්-තà·à¶´à·à¶½à·Š යà·à·€à·“ම වලක්වන්න',
'ipbenableautoblock' => 'මෙම පරිà·à·“ලකය෠විසින් භà·à·€à·’ත෠කරන අන්තර්ජà·à¶½ ලිපිනයද, මෙයින් පසුව සංස්කරණය සඳහ෠ඔවුන් භà·à·€à·’ත෠කිරීමට ඉඩ ඇති අන්තර්ජà·à¶½ ලිපිනයන්ද ස්වයංක්â€à¶»à·“ය ලෙස à·€à·à¶»à¶«à¶º කරන්න',
@@ -2410,8 +2458,9 @@ $1',
'ipbotherreason' => 'අනෙකුත්/අමතර හේතුව:',
'ipbhidename' => 'පරිà·à·“ලක-නà·à¶¸à¶º සංස්තරණයන් ගෙන් හ෠ලà·à¶ºà·’ස්තු වලින් සඟවන්න',
'ipbwatchuser' => 'මෙම පරිà·à·“ලකයà·à¶œà·š පරිà·à·“ලක à·„à· à·ƒà·à¶šà¶ à·Šà¶¡à· පිටු මුර-කරන්න',
-'ipballowusertalk' => 'à·€à·à¶»à¶«à¶º පà·à·€à¶­à·’යදී ස්වීය à·ƒà·à¶šà¶ à·Šà¶¡à· පිටුව සංස්කරණය කිරීමට මෙම පරිà·à·“ලකයà·à¶§ ඉඩදෙන්න',
+'ipb-disableusertalk' => 'මෙම පරිà·à·“ලකය෠වà·à¶»à¶«à¶º කර තà·à¶¶à·™à¶± විට ඔවුන්ගේම à·ƒà·à¶šà¶ à·Šà¶¡à· පිටුව සංස්කරණය කිරීම වලක්වන්න',
'ipb-change-block' => 'මෙම පරිස්ථිතීන් සහිතව පරිà·à·“ලකය෠යළි-à·€à·à¶»à¶«à¶º කරන්න',
+'ipb-confirm' => 'à·€à·à¶»à¶«à¶º සනà·à¶® කරන්න',
'badipaddress' => 'අනීතික අන්තර්ජà·à¶½ ලිපිනයකි',
'blockipsuccesssub' => 'à·€à·à¶»à¶«à¶º à·ƒà·à¶»à·Šà¶®à¶š විය',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] à·€à·à¶»à¶«à¶ºà¶§ ලක් කර ඇත.<br />
@@ -2425,17 +2474,23 @@ $1',
'unblockiptext' => 'පෙරදී à·€à·à¶»à¶«à¶ºà¶§ ලක්වූ අන්තර්ජà·à¶½ ලිපිනය හ෠පරිà·à·“ලක නà·à¶¸à¶º හ෠වෙත ලිවීමේ බලය ප්â€à¶»à¶­à·’ෂ්ඨà·à¶´à¶±à¶º කෙරුමට පහත ආකෘතිය භà·à·€à·’ත කරන්න.',
'ipusubmit' => 'මෙම à·€à·à¶»à¶«à¶º කිරීම අත්හිටුවන්න',
'unblocked' => '[[User:$1|$1]] à·€à·à¶»à¶«à¶º අත්හිටුව෠ඇත',
+'unblocked-range' => '$1 ගේ à·€à·à¶»à¶«à¶º අවලංගු කර ඇත',
'unblocked-id' => '$1 à·€à·à¶»à¶«à¶º ඉවත් කරගන්න෠ලදි',
+'blocklist' => 'à·€à·à¶»à¶«à¶º කල පරිà·à·“ලකයන්',
'ipblocklist' => 'à·€à·à¶»à¶«à¶º කල පරිà·à·“ලකයන්',
'ipblocklist-legend' => 'à·€à·à¶»à¶«à¶º කෙරුනු පරිà·à·“ලකය෠සොයන්න',
-'ipblocklist-username' => 'පරිà·à·“ලක නà·à¶¸à¶º à·„à· IP ලිපිනය:',
-'ipblocklist-sh-userblocks' => 'ගිණුම් à·€à·à¶»à¶«à¶ºà¶±à·Š $1',
-'ipblocklist-sh-tempblocks' => 'තà·à·€à¶šà·à¶½à·’ක à·€à·à¶»à¶«à¶ºà¶±à·Š $1',
-'ipblocklist-sh-addressblocks' => 'ඒක IP ලිපින à·€à·à¶»à¶«à¶ºà¶±à·Š $1',
+'blocklist-userblocks' => 'ගිණුම් à·€à·à¶»à¶« සඟවන්න',
+'blocklist-tempblocks' => 'තà·à·€à¶šà·à¶½à·’ක à·€à·à¶»à¶« සඟවන්න',
+'blocklist-addressblocks' => 'ඒක IP ලිපින à·€à·à¶»à¶« සඟවන්න',
+'blocklist-timestamp' => 'කà·à¶½à¶¸à·”ද්â€à¶»à·à·€',
+'blocklist-target' => 'ඉලක්කය',
+'blocklist-expiry' => 'ඉකුත් වන්නේ',
+'blocklist-by' => 'à·€à·à¶»à¶«à¶º සිදු කල පරිපà·à¶½à¶š',
+'blocklist-params' => 'පරà·à¶¸à·’තියන් අවහිර කරන්න',
+'blocklist-reason' => 'හේතුව',
'ipblocklist-submit' => 'ගවේෂණය',
'ipblocklist-localblock' => 'පෙදෙසි අවහිරය',
'ipblocklist-otherblocks' => 'අනෙක් {{PLURAL:$1|අවහිර කිරීම|අවහිර කිරීම්}}',
-'blocklistline' => '$1 දී, $2 විසින් $3 ($4) à·€à·à¶»à¶«à¶º කෙරිණි',
'infiniteblock' => 'අනන්තය',
'expiringblock' => '$1 දිනදී $2 වේලà·à·€à·šà¶¯à·“ කල් ඉකුත්වේ',
'anononlyblock' => 'නිර්නà·à¶¸à·’කයන් පමණි',
@@ -2460,7 +2515,7 @@ $1 ගේ à·€à·à¶»à¶«à¶ºà¶§ හේතුව මෙය වේ: "$2"',
'reblock-logentry' => '$2 $3 කල්ඉකුත්වීමේ වේලà·à·€à¶§ යටත්ව [[$1]] සඳහ෠වà·à¶»à¶« පරිස්ථිතීන් වෙනස්කරන ලදි',
'blocklogtext' => 'පරිà·à·“ලකයන් à·€à·à¶»à¶«à¶º කිරීමේ à·„à· à·€à·à¶»à¶«à¶ºà¶±à·Š අත්හිටුවීමේ කà·à¶»à·Šà¶ºà¶ºà¶±à·Š දà·à¶šà·Šà·€à·™à¶± ලà¶à·” සටහන මෙහි දà·à¶šà·Šà·€à·š.
ස්වයංක්â€à¶»à·“යව à·€à·à¶»à¶«à¶º කල අන්තර්ජà·à¶½ ලිපිනයන් ලà·à¶ºà·’ස්තුගත කොට නොමà·à¶­.
-වර්තමà·à¶±à¶ºà·™à·„à·’ ක්â€à¶»à·’යà·à¶­à·Šà¶¸à¶š වන තහනම් à·„à· à·€à·à¶»à¶« සඳහ෠[[Special:IPBlockList|අන්තර්ජà·à¶½ ලිපිනයන් à·€à·à¶»à¶« ලà·à¶ºà·’ස්තුව]] බලන්න.',
+වර්තමà·à¶±à¶ºà·™à·„à·’ ක්â€à¶»à·’යà·à¶­à·Šà¶¸à¶š වන තහනම් à·„à· à·€à·à¶»à¶« සඳහ෠[[Special:BlockList|අන්තර්ජà·à¶½ ලිපිනයන් à·€à·à¶»à¶« ලà·à¶ºà·’ස්තුව]] බලන්න.',
'unblocklogentry' => '$1 à·„à·’ à·€à·à¶»à¶«à¶º අත්හිටුවන ලදි',
'block-log-flags-anononly' => 'නිර්නà·à¶¸à·’ක පරිà·à·“ලකයන් පමණි',
'block-log-flags-nocreate' => 'ගිණුම් තà·à¶±à·“ම අක්â€à¶»à·“ය කර ඇත',
@@ -2474,10 +2529,10 @@ $1 ගේ à·€à·à¶»à¶«à¶ºà¶§ හේතුව මෙය වේ: "$2"',
'ipb_expiry_temp' => 'à·ƒà·à¶Ÿà·€à·”නු පරිà·à·“ලක-නà·à¶¸ à·€à·à¶»à¶«à¶ºà¶±à·Š ස්ථීර ඒව෠විය යුතුය.',
'ipb_hide_invalid' => 'මෙම ගිණුම යටපත්කිරීම කල නොහà·à¶šà·’යි; පමණට වඩ෠සංස්කරණ සිදු කර ඇතිව෠විය à·„à·à¶š.',
'ipb_already_blocked' => '"$1" දà·à¶±à¶§à¶¸à¶­à·Š à·€à·à¶»à¶«à¶ºà¶§ ලක් කර ඇත',
-'ipb-needreblock' => '== දà·à¶±à¶§à¶¸à¶­à·Š à·€à·à¶»à¶«à¶º කොට ඇත ==
-$1 දà·à¶±à¶§à¶¸à¶­à·Š à·€à·à¶»à¶«à¶º කොට ඇත.
+'ipb-needreblock' => '$1 දà·à¶±à¶§à¶¸à¶­à·Š à·€à·à¶»à¶«à¶º කොට ඇත.
ඔබට à·ƒà·à¶šà·ƒà·”ම් වෙනස්කිරීම අවà·à·Šâ€à¶ºà¶¯?',
'ipb-otherblocks-header' => 'අනෙකුත් {{PLURAL:$1|à·€à·à¶»à¶«à¶º|à·€à·à¶»à¶«à¶ºà¶±à·Š}}',
+'unblock-hideuser' => 'මෙම පරිà·à·“ලකයà·à¶œà·š à·€à·à¶»à¶«à¶º අවලංගු කිරීමට ඔබට නොහà·à¶šà·’ වන්නේ ඔවුන්ගේ පරිà·à·“ලක නà·à¶¸à¶º සඟව෠ඇති බà·à·€à·’ණි',
'ipb_cant_unblock' => 'දà·à·‚ය: à·€à·à¶»à¶« අනන්â€à¶ºà¶±à·à¶‚කය $1 සොය෠ගත නොහà·à¶šà·’ විය.
මෙය දà·à¶±à¶§à¶¸à¶­à·Š à·€à·à¶»à¶« අත්හිටුවීමකට භà·à¶¢à¶±à¶º වී ඇතිව෠විය à·„à·à¶š.',
'ipb_blocked_as_range' => 'දà·à·‚ය: $1 අන්තර්ජà·à¶½ ලිපිනය සෘජුව à·€à·à¶»à¶«à¶º කොට නොමà·à¶­à·’ අතර එහි à·€à·à¶»à¶«â€à¶º අත්හිටුවිය නොහà·à¶š.
@@ -2522,7 +2577,6 @@ $1 දà·à¶±à¶§à¶¸à¶­à·Š à·€à·à¶»à¶«à¶º කොට ඇත.
# Move page
'move-page' => ' $1 ගෙනයන්න',
-'move-page-backlink' => '↠$1',
'move-page-legend' => 'පිටුව ගෙනයන්න',
'movepagetext' => "පහත ආකෘතිය භà·à·€à·’ත෠කිරීමෙන්, එහි සියළු ඉතිහà·à·ƒà¶º නව නà·à¶¸à¶ºà¶§ අනුයුක්ත කරමින්, පිටුවක නම-වෙනස් කිරීම සිදුවේ.
නව නà·à¶¸à¶º වෙත යළි-යොමු පිටුවක් බවට පà·à¶»à·à¶«à·’ නà·à¶¸à¶º පත් වෙයි.
@@ -2645,7 +2699,7 @@ $1 දà·à¶±à¶§à¶¸à¶­à·Š à·€à·à¶»à¶«à¶º කොට ඇත.
'allmessagesdefault' => 'පෙරනිමි පෙළ',
'allmessagescurrent' => 'වත්මන් පෙළ',
'allmessagestext' => 'මේ මà·à¶°à·Šâ€à¶ºà·€à·’කි නà·à¶¸à¶…වකà·à·à¶ºà·™à·„ිදී හමුවන පද්ධති පණිවුඩයන් ලà·à¶ºà·’ස්තුවකි.
-වර්ගීය මà·à¶°à·Šâ€à¶ºà·€à·’කි ප්â€à¶»à·à¶¯à·šà·à·“යකරණයට දà·à¶ºà¶š වීමට ඔබ රිසි නම් කරුණà·à¶šà¶» [http://www.mediawiki.org/wiki/Localisation මà·à¶°à·Šâ€à¶ºà·€à·’කි ප්â€à¶»à·à¶¯à·šà·à·“යකරණය] සහ [http://translatewiki.net බීටà·à·€à·’කි] වෙත පිවිසෙන්න.',
+වර්ගීය මà·à¶°à·Šâ€à¶ºà·€à·’කි ප්â€à¶»à·à¶¯à·šà·à·“යකරණයට දà·à¶ºà¶š වීමට ඔබ රිසි නම් කරුණà·à¶šà¶» [//www.mediawiki.org/wiki/Localisation මà·à¶°à·Šâ€à¶ºà·€à·’කි ප්â€à¶»à·à¶¯à·šà·à·“යකරණය] සහ [//translatewiki.net බීටà·à·€à·’කි] වෙත පිවිසෙන්න.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' අක්â€à¶»à·“ය කොට ඇති බà·à·€à·’න්, මෙම පිටුව භà·à·€à·’ත෠කල නොහà·à¶š.",
'allmessages-filter-legend' => 'පෙරහන',
'allmessages-filter' => 'පà·à¶»à·’භà·à¶œà·“කරණ තත්ත්වය අනුව පෙරීම:',
@@ -2814,9 +2868,7 @@ $1 දà·à¶±à¶§à¶¸à¶­à·Š à·€à·à¶»à¶«à¶º කොට ඇත.
'modern.js' => '/* මෙහි ඕනෑම ජà·à·€à·à·ƒà·Šà¶šà·Šâ€à¶»à·’ප්ට් එකක් නූතන ඡවිය භà·à·€à·’ත෠කරන පරිà·à·“ලකයන්හට ප්â€à¶»à·€à·šà·à¶±à¶º කෙරේ */',
# Metadata
-'nodublincore' => 'ඩබ්ලින් කොර් RDF පà·à¶»à¶¯à¶­à·Šà¶­ මෙම සේවà·à¶¯à·à¶ºà¶šà¶ºà·™à·„à·’ අක්â€à¶»à·“ය කොට ඇත.',
-'nocreativecommons' => 'ක්â€à¶»à·’යේටිව් කොමන්ස් RDF පà·à¶»à¶¯à¶­à·Šà¶­ මෙම සේවà·à¶¯à·à¶ºà¶šà¶ºà·™à·„à·’ අක්â€à¶»à·“ය කොට ඇත.',
-'notacceptable' => 'ඔබගේ සේවà·à¶½à·à¶·à·’යà·à¶§ කියà·à·€à·’ය à·„à·à¶šà·’ ආකෘතියකින් දත්ත à·ƒà·à¶´à·à¶ºà·“මට විකි සේවà·à¶¯à·à¶ºà¶šà¶ºà¶§ නොහà·à¶š.',
+'notacceptable' => 'ඔබගේ සේවà·à¶½à·à¶·à·’යà·à¶§ කියà·à·€à·’ය à·„à·à¶šà·’ ආකෘතියකින් දත්ත à·ƒà·à¶´à·à¶ºà·“මට විකි සේවà·à¶¯à·à¶ºà¶šà¶ºà¶§ නොහà·à¶š.',
# Attribution
'anonymous' => '{{SITENAME}} à·„à·’ නිර්නà·à¶¸à·’ක {{PLURAL:$1|පරිà·à·“ලකයà·|පරිà·à·“ලකයà·}}',
@@ -2840,32 +2892,17 @@ $1 දà·à¶±à¶§à¶¸à¶­à·Š à·€à·à¶»à¶«à¶º කොට ඇත.
'spam_blanking' => 'සියළු සංà·à·à¶°à¶±à¶ºà¶±à·Šà·„à·’ $1 වෙතවූ සබà·à¶³à·’යන් අඩංගු විය, හිස්කරමින්',
# Info page
-'infosubtitle' => 'පිටුව සඳහ෠විස්තර',
-'numedits' => 'සංස්කරණ ගණන (පිටුව): $1',
-'numtalkedits' => 'සංස්කරණ ගණන (සංවà·à¶¯ පිටුව): $1',
-'numwatchers' => 'මුරකරන්නන් ගණන: $1',
-'numauthors' => 'ප්â€à¶»à¶·à·’න්න කතෘවරුන් ගණන (පිටුව): $1',
-'numtalkauthors' => 'ප්â€à¶»à¶·à·’න්න කතෘවරුන් ගණන (සංවà·à¶¯ පිටුව): $1',
-
-# Math options
-'mw_math_png' => 'à·ƒà·à¶¸à·€à·’ට PNG ලෙසට විදà·à·„න්න',
-'mw_math_simple' => 'ඉත෠සරල නම් HTML එසේ නොමà·à¶­à·’ නම් PNG',
-'mw_math_html' => 'à·„à·à¶šà·’ නම් HTML එසේ නොමà·à¶­à·’ නම් PNG',
-'mw_math_source' => 'TeX ලෙසින් පà·à·€à·à¶­à·“මට හරින්න(පෙළ බ්â€à¶»à·€à·”සරයන් සඳහà·)',
-'mw_math_modern' => 'නවීන බ්â€à¶»à·€à·”සරයන් සඳහ෠නිර්දේ෠කෙරේ',
-'mw_math_mathml' => 'à·„à·à¶šà·’ නම් MathML (පරීක්ෂණà·à¶­à·Šà¶¸à¶š)',
-
-# Math errors
-'math_failure' => 'ව්â€à¶ºà·à¶šà¶»à¶« විග්â€à¶»à·„ය අසමත් විය',
-'math_unknown_error' => 'හඳුන෠නොගත් දà·à·‚ය',
-'math_unknown_function' => 'හඳුන෠නොගත් à·à·Šâ€à¶»à·’තය',
-'math_lexing_error' => 'රීතිමය දà·à·‚යකි',
-'math_syntax_error' => 'කà·à¶»à¶š-රීති දà·à·‚ය',
-'math_image_error' => 'PNG අන්වර්තනය අසà·à¶»à·Šà¶®à¶šà·€à·’ය;latex, සහ dvipng (à·„à· dvips + gs + convert) à·„à·“ නිදොස් ස්ථà·à¶´à¶±à¶º සිදුවී ඇතිදà·à¶ºà·’ පිරික්සන්න',
-'math_bad_tmpdir' => 'තà·à·€à¶šà·à¶½à·’ක ගණිත ඩිරෙක්ටරිය තà·à¶±à·“මට හ෠එහි ලිවීමට නොහà·à¶š',
-'math_bad_output' => 'ගණිත ප්â€à¶»à¶­à·’දà·à¶± ඩිරෙක්ටරිය තà·à¶±à·“මට හ෠එයට ලිවීමට නොහà·à¶š',
-'math_notexvc' => 'texvc අභිවà·à·„කය දක්නට නොමà·à¶­;
-වින්â€à¶ºà·à·ƒ කෙරුමට කරුණà·à¶šà¶» math/README බලන්න.',
+'pageinfo-title' => '"$1" සඳහ෠තොරතුරු',
+'pageinfo-header-edits' => 'සංස්කරණ',
+'pageinfo-header-watchlist' => 'මුර-ලà·à¶ºà·’ස්තුව',
+'pageinfo-header-views' => 'නà·à¶»à¶¹à·”ම්',
+'pageinfo-subjectpage' => 'පිටුව',
+'pageinfo-talkpage' => 'à·ƒà·à¶šà¶ à·Šà¶¡à· පිටුව',
+'pageinfo-watchers' => 'මුරකරන්නන් සංඛ්â€à¶ºà·à·€',
+'pageinfo-edits' => 'සංස්කරණයන් සංඛ්â€à¶ºà·à·€',
+'pageinfo-authors' => 'ප්â€à¶»à¶·à·’න්න කර්තෘවරුන් සංඛ්â€à¶ºà·à·€',
+'pageinfo-views' => 'නà·à¶»à¶¹à·”ම් සංඛ්â€à¶ºà·à·€',
+'pageinfo-viewsperedit' => 'එක් සංස්කරණයකට නà·à¶»à¶¹à·”ම් ගණන',
# Patrolling
'markaspatrolleddiff' => 'පරික්ෂà·à¶šà¶» බà·à¶½à·– ලෙස සලකුණු කරන්න',
@@ -2909,10 +2946,11 @@ $1',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|පිටුව|පිටු}}',
'file-info' => 'ගොනු විà·à·à¶½à¶­à·Šà·€à¶º: $1, MIME වර්ගය: $2',
'file-info-size' => '$1 × $2 පික්සල, ගොනු විà·à·à¶½à¶­à·Šà·€à¶º: $3, MIME à·à·›à¶½à·’ය: $4',
+'file-info-size-pages' => '$1 × $2 පික්සල, ගොනු තරම: $3, MIME වර්ගය: $4, $5 {{PLURAL:$5|පිටුව|පිටු}}',
'file-nohires' => '<small>මෙයට ඉහල විසර්ජනයක්(resolution) දක්ව෠එළඹිය නොහà·à¶š.</small>',
'svg-long-desc' => 'SVG ගොනුව, නà·à¶¸à¶¸à·à¶­à·Šâ€à¶»à·’කව $1 × $2 පික්සල්, ගොනු විà·à·à¶½à¶­à·Šà·€à¶º: $3',
'show-big-image' => 'පූර්ණ විභේදනය (Full resolution)',
-'show-big-image-thumb' => '<small>පෙර නà·à¶»à¶¹à·”මෙහි විà·à·à¶½à¶­à·Šà·€à¶º: $1 × $2 පික්සල</small>',
+'show-big-image-size' => '$1 × $2 පික්සල',
'file-info-gif-looped' => 'වලිත',
'file-info-gif-frames' => '$1 {{PLURAL:$1රà·à¶¸à·”à·€|රà·à¶¸à·”}}',
'file-info-png-looped' => 'ලුපගත වී ඇත',
@@ -2990,15 +3028,21 @@ Variants for Chinese language
ගොනුව මුලින්ම පà·à·€à·à¶­à·’ තත්ත්වයෙහි සිට විකරණය කොට තිබේ නම්, සමහරක් තොරතුරු විකරිත ගොනුව පූර්ණ à·€à·à¶ºà·™à¶±à·Š පිළිඹිමු නොකරනු ඇත.',
'metadata-expand' => 'විස්තීරණය කරන ලද විස්තර පෙන්වන්න',
'metadata-collapse' => 'විස්තීරණය කරන ලද විස්තර සඟවන්න',
-'metadata-fields' => 'පà·à¶»à¶¯à¶­à·Šà¶­ වගුව බිඳවà·à¶§à·™à¶± විට, මෙම පණිවුඩයෙහි ලà·à¶ºà·’ස්තු ගත කොට ඇති EXIF පà·à¶»à¶¯à¶­à·Šà¶­ ක්ෂේත්â€à¶»à¶ºà¶±à·Š රූප පිටු ප්â€à¶»à¶¯à¶»à·Šà·à¶±à¶ºà·™à·„à·’ ඇතුළත් කෙරෙයි.
-අනෙක්ව෠â€â€ පෙරනිමියෙන් සඟවනු ලà·à¶¶à·š.
+'metadata-fields' => 'Image metadata fields listed in this message will be included on image page display when the metadata table is collapsed.
+Others will be hidden by default.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'පළල',
@@ -3013,13 +3057,11 @@ Variants for Chinese language
'exif-ycbcrpositioning' => 'Y හ෠C පිහිටුම්',
'exif-xresolution' => 'තිරස් විභේදනය',
'exif-yresolution' => 'සිරස් විභේදනය',
-'exif-resolutionunit' => 'X හ෠Y විභේදනයන්හි ඒකක',
'exif-stripoffsets' => 'රූප දත්ත පරිස්ථà·à¶±à¶º',
'exif-rowsperstrip' => 'එක් තීරයකට පේළි ගණන',
'exif-stripbytecounts' => 'එක් සම්පීඩිත පේළියකට බයිට් ගණන',
'exif-jpeginterchangeformat' => 'JPEG SOI වෙත හිලව්ව',
'exif-jpeginterchangeformatlength' => 'JPEG දත්ත බයිට් ගණන',
-'exif-transferfunction' => 'සමර්පණ à·à·Šâ€à¶»à·’තය',
'exif-whitepoint' => 'à·à·Šà·€à·šà¶­ ලක්ෂ්â€à¶ºà¶º වර්ණවත්භà·à·€à¶º',
'exif-primarychromaticities' => 'ප්â€à¶»à·à¶®à¶¸à·’ක වර්ණයන්ගේ වර්ණවත්භà·à·€à¶ºà¶±à·Š',
'exif-ycbcrcoefficients' => 'වර්ණ අවකà·à· පරිණà·à¶¸à¶« න්â€à¶ºà·à·ƒ සංගුණක',
@@ -3038,7 +3080,6 @@ Variants for Chinese language
'exif-compressedbitsperpixel' => 'රූප සම්පීඩන මà·à¶¯à·’ලිය',
'exif-pixelydimension' => 'ප්â€à¶»à¶­à·’බිම්බයෙහි පළල',
'exif-pixelxdimension' => 'ප්â€à¶»à¶­à·’බිම්බයෙහි උස',
-'exif-makernote' => 'නිෂ්පà·à¶¯à¶šà¶œà·š සටහන්',
'exif-usercomment' => 'පරිà·à·“ලක පරිකථනයන්',
'exif-relatedsoundfile' => 'සහසම්බන්ධිත à·à·Šâ€à¶»à·€à·Šâ€à¶º ගොනුව',
'exif-datetimeoriginal' => 'දත්ත ජනන දිනය හ෠වේලà·à·€',
@@ -3053,7 +3094,6 @@ Variants for Chinese language
'exif-exposureprogram' => 'නිරà·à·€à¶»à¶« à·€à·à¶©à·ƒà¶§à·„න',
'exif-spectralsensitivity' => 'වර්ණà·à·€à¶½à·“ සංවේදිතà·à·€à¶º',
'exif-isospeedratings' => 'ISO වේග ඇගà·à¶ºà·”ම',
-'exif-oecf' => 'ප්â€à¶»à¶šà·à·à·€à·’ද්â€à¶ºà·”ත් අනුවර්තන à·ƒà·à¶°à¶šà¶º',
'exif-shutterspeedvalue' => 'APEX à·à¶§à¶» වේගය',
'exif-aperturevalue' => 'APEX විවරය',
'exif-brightnessvalue' => 'APEX දීප්තිය',
@@ -3067,7 +3107,6 @@ Variants for Chinese language
'exif-focallength-format' => '$1 මි.මී.',
'exif-subjectarea' => 'විෂයය සරිය',
'exif-flashenergy' => 'à·ƒà·à¶«à·™à·…à·’ à·à¶šà·Šà¶­à·’ය',
-'exif-spatialfrequencyresponse' => 'අවකà·à·à·“ය සංඛ්â€à¶ºà·à¶­ ප්â€à¶»à¶­à·’චà·à¶»à¶º',
'exif-focalplanexresolution' => 'නà·à¶·à·“ය තලය X විසර්ජනය',
'exif-focalplaneyresolution' => 'නà·à¶·à·“ය තලය Y විසර්ජනය',
'exif-focalplaneresolutionunit' => 'නà·à¶·à·“ය තලය විසර්ජනය ඒකකය',
@@ -3076,7 +3115,6 @@ Variants for Chinese language
'exif-sensingmethod' => 'සංවේදන ක්â€à¶»à¶¸à¶º',
'exif-filesource' => 'ගොනු මූලය',
'exif-scenetype' => 'දර්à·à¶± වර්ගය',
-'exif-cfapattern' => 'CFA රටà·à·€',
'exif-customrendered' => 'උපයà·à¶œà·Šâ€à¶º රූප à·ƒà·à¶šà·à·ƒà·”ම',
'exif-exposuremode' => 'නිරà·à·€à¶»à¶« මà·à¶¯à·’ලිය',
'exif-whitebalance' => 'සුදුපà·à¶§ තුලනයකිරීම',
@@ -3121,12 +3159,74 @@ Variants for Chinese language
'exif-gpsareainformation' => 'GPS සරියෙහි නම',
'exif-gpsdatestamp' => 'GPS දිනය',
'exif-gpsdifferential' => 'GPS ආන්තරීක à·à·à¶°à¶±à¶º',
+'exif-jpegfilecomment' => 'JPEG ගොනු පරිකථනය',
+'exif-keywords' => 'මූලපද',
+'exif-worldregioncreated' => 'රූපය ගන්න෠ලද ලà·à¶š ප්â€à¶»à¶¯à·šà·à¶º',
+'exif-countrycreated' => 'රූපය ගන්න෠ලද රට',
+'exif-countrycodecreated' => 'රූපය ගන්න෠ලද රටෙහි කේතය',
+'exif-provinceorstatecreated' => 'රූපය ගන්න෠ලද පළà·à¶­ හ෠ප්â€à¶»à·à¶±à·Šà¶­à¶º',
+'exif-citycreated' => 'රූපය ගන්න෠ලද නගරය',
+'exif-sublocationcreated' => 'රූපය ගන්න෠ලද නගර උප-ස්ථà·à¶±à¶º',
+'exif-worldregiondest' => 'ලà·à¶š ප්â€à¶»à¶¯à·šà·à¶º දක්ව෠ඇත',
+'exif-countrydest' => 'පෙන්වනලද රට',
+'exif-countrycodedest' => 'රට සඳහ෠කේතය දක්ව෠ඇත',
+'exif-provinceorstatedest' => 'පළà·à¶­ හ෠ප්â€à¶»à·à¶±à·Šà¶­à¶º දක්ව෠ඇත',
+'exif-citydest' => 'පෙන්වනලද නගරය',
+'exif-sublocationdest' => 'නගර උප-ස්ථà·à¶±à¶º දක්ව෠ඇත',
'exif-objectname' => 'කෙටි මà·à¶­à·˜à¶šà·à·€',
+'exif-specialinstructions' => 'විà·à·šà·‚ උපදෙස්',
+'exif-headline' => 'à·à·’රස්තලය',
+'exif-credit' => 'විà·à·Šà·€à·à·ƒà¶º/ප්â€à¶»à¶­à·’පà·à¶¯à¶šà¶ºà·',
+'exif-source' => ' මූලà·à·à·Šâ€à¶»à¶º',
+'exif-editstatus' => 'රූපයේ සංස්කරණ තත්ත්වය',
+'exif-urgency' => 'අවà·à·Šâ€à¶ºà¶­à·à·€',
+'exif-fixtureidentifier' => 'සවිකුරු නà·à¶¸à¶º',
+'exif-locationdest' => 'විස්තර දක්වන ලද පිහිටීම',
+'exif-locationdestcode' => 'ස්ථà·à¶±à¶ºà·™à·„à·’ කේතය විස්තර කර දක්ව෠ඇත',
+'exif-contact' => 'සම්බන්ධ කර ගà·à¶±à·“ම් තොරතුරු',
+'exif-writer' => 'රචකයà·',
+'exif-languagecode' => 'භà·à·‚à·à·€',
+'exif-iimversion' => 'IIM අනුවà·à¶¯à¶º',
+'exif-iimcategory' => 'ප්â€à¶»à·€à¶»à·Šà¶œà¶º',
+'exif-iimsupplementalcategory' => 'අතිරේක ප්â€à¶»à·€à¶»à·Šà¶œà¶ºà¶±à·Š',
+'exif-datetimeexpires' => 'මෙයින් පසු භà·à·€à·’ත නොකරන්න',
+'exif-datetimereleased' => 'වුහුටු වූයේ',
+'exif-originaltransmissionref' => 'මුල් සම්ප්â€à¶»à·šà·‚ණ ස්ථà·à¶± කේතය',
+'exif-identifier' => 'හඳුන්වනය',
+'exif-lens' => 'භà·à·€à·’ත කරන ලද කà·à¶ à¶º',
+'exif-serialnumber' => 'කà·à¶¸à¶»à·à·€à·š අනුක්â€à¶»à¶¸à·’ක අංකය',
+'exif-cameraownername' => 'කà·à¶¸à¶»à·à·€à·š අයිතිකරු',
+'exif-label' => 'ලේබලය',
+'exif-datetimemetadata' => 'පà·à¶»à¶¯à¶­à·Šà¶­ අවසන් වරට වෙනස්කල දිනය',
+'exif-nickname' => 'රූපයේ අවිධිමත් නම',
+'exif-rating' => 'ඇගà·à¶ºà·”ම (5 න් උපන්)',
+'exif-rightscertificate' => 'හිමිකම් කළමනà·à¶šà¶»à¶« සහතිකය',
+'exif-copyrighted' => 'හිමිකම් තත්ත්වය',
+'exif-copyrightowner' => 'හිමිකම් දරන්නà·',
+'exif-usageterms' => 'භà·à·€à·’තයේ කොන්දේසි',
+'exif-webstatement' => 'මà·à¶»à·Šà¶œà¶œà¶­ ප්â€à¶»à¶šà·à·à¶± හිමිකම් ප්â€à¶»à¶šà·à·à¶º',
+'exif-originaldocumentid' => 'මුල් ලියවිල්ලේ අතුල්â€à¶º අනන්â€à¶º',
+'exif-licenseurl' => 'හිමිකම් වරපතේහි URL',
+'exif-morepermissionsurl' => 'විකල්ප බලපත් තොරතුරු',
+'exif-pngfilecomment' => 'PNG ගොනු නිදර්à·à¶±à¶º',
+'exif-disclaimer' => 'වියà·à¶ à¶±à¶º',
+'exif-contentwarning' => 'තෘප්ති අවවà·à¶¯à¶º',
+'exif-giffilecomment' => 'GIF ගොනු නිදර්à·à¶±à¶º',
+'exif-intellectualgenre' => 'අයිතමයේ වර්ගය',
+'exif-subjectnewscode' => 'විෂය කේතය',
+'exif-scenecode' => 'IPTC දර්à·à¶± කේතය',
+'exif-event' => 'විස්තර දක්වන ලද සිද්ධිය',
+'exif-organisationinimage' => 'විස්තර දක්වන ලද සංවිධà·à¶±à¶º',
+'exif-personinimage' => 'පුද්ගලික වචනයෙන් විස්තර කරන ලද',
+'exif-originalimageheight' => 'කà·à¶´à·”මට පෙර රූපයෙහි උස',
# EXIF attributes
'exif-compression-1' => 'අසංක්ෂිප්ත',
'exif-compression-6' => 'JPEG',
+'exif-copyrighted-true' => 'කර්තෘ හිමිකම් තබà·à¶œà¶­à·Š',
+'exif-copyrighted-false' => 'පොදු හිමිකම්',
+
'exif-photometricinterpretation-2' => 'RGB',
'exif-photometricinterpretation-6' => 'YCbCr',
@@ -3147,8 +3247,8 @@ Variants for Chinese language
'exif-xyresolution-i' => '$1 dpi',
'exif-xyresolution-c' => '$1 dpc',
-'exif-colorspace-1' => 'sRGB',
-'exif-colorspace-ffff.h' => 'FFFF.H',
+'exif-colorspace-1' => 'sRGB',
+'exif-colorspace-65535' => 'අක්â€à¶»à¶¸à·à¶‚කිත',
'exif-componentsconfiguration-0' => 'නොපවතියි',
'exif-componentsconfiguration-1' => 'Y',
@@ -3273,6 +3373,10 @@ Variants for Chinese language
'exif-gpslongitude-e' => 'නà·à¶œà·™à¶±à·„ිර දේà·à·à¶‚à·à¶º',
'exif-gpslongitude-w' => 'බටහිර දේà·à·à¶‚à·à¶º',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => 'මුහුදු මට්ටමට ඉහළ $1 {{PLURAL:$1|මීටරය|මීටර}}',
+'exif-gpsaltitude-below-sealevel' => 'මුහුදු මට්ටමට පහළ $1 {{PLURAL:$1|මීටරය|මීටර}}',
+
'exif-gpsstatus-a' => 'මිනුම සිදුවෙමින් පවතියි',
'exif-gpsstatus-v' => 'මිනුම් අන්කර්ක්â€à¶»à·’යà·à¶­à·Šà¶¸à¶šà¶·à·à·€à¶º',
@@ -3284,21 +3388,72 @@ Variants for Chinese language
'exif-gpsspeed-m' => 'පà·à¶ºà¶§ à·ƒà·à¶­à¶´à·”ම්',
'exif-gpsspeed-n' => 'නà·à·€à·’ක à·ƒà·à¶­à¶´à·”ම්',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'කිලà·à¶¸à·“ටර',
+'exif-gpsdestdistance-m' => 'à·„à·à¶­à·à¶´à·Šà¶¸',
+'exif-gpsdestdistance-n' => 'නà·à·€à·’ක à·ƒà·à¶­à¶´à·”ම්',
+
+'exif-gpsdop-excellent' => 'අනර්à¶à¶ºà·’ ($1)',
+'exif-gpsdop-good' => 'හොඳයි ($1)',
+'exif-gpsdop-moderate' => 'මධ්â€à¶ºà·ƒà·Šà¶­à¶ºà·’ ($1)',
+'exif-gpsdop-fair' => 'සතුටුදà·à¶ºà¶šà¶ºà·’ ($1)',
+'exif-gpsdop-poor' => 'දුර්වලයි ($1)',
+
+'exif-objectcycle-a' => 'උදෑසන පමණි',
+'exif-objectcycle-p' => 'à·ƒà·à¶±à·Šà¶¯à·‘à·€ පමණි',
+'exif-objectcycle-b' => 'උදෑසන සහ à·ƒà·à¶±à·Šà¶¯à·‘à·€ යන දෙකම',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'සත්â€à¶º දිà·à·à·€',
'exif-gpsdirection-m' => 'චුම්භක දිà·à·à·€',
+'exif-ycbcrpositioning-1' => 'මධ්â€à¶ºà·ƒà·Šà¶­à·’ත',
+'exif-ycbcrpositioning-2' => 'සම-පිහිටීම',
+
+'exif-dc-contributor' => 'දà·à¶ºà¶šà¶ºà·’න්',
+'exif-dc-date' => 'දිනය(න්)',
+'exif-dc-publisher' => 'ප්â€à¶»à¶šà·à·à¶šà¶ºà·',
+'exif-dc-relation' => 'ආà·à·Šâ€à¶»à·’ත මà·à¶°à·Šâ€à¶º',
+'exif-dc-rights' => 'හිමිකම්',
+'exif-dc-source' => 'මූලà·à·à·Šâ€à¶» මà·à¶°à·Šâ€à¶º',
+'exif-dc-type' => 'මà·à¶°à·Šâ€à¶º වර්ගය',
+
+'exif-rating-rejected' => 'ප්â€à¶»à¶­à·’ක්ෂිප්ත',
+
+'exif-isospeedratings-overflow' => '65535 ට වඩ෠විà·à·à¶½à¶­à¶»',
+
+'exif-iimcategory-ace' => 'කල෠à·à·’ල්ප, සංස්කෘතිය සහ විනà·à¶¯à¶º',
+'exif-iimcategory-clj' => 'අපරà·à¶° සහ නීතිය',
+'exif-iimcategory-dis' => 'විපත් සහ හදිසි අනතුරු',
+'exif-iimcategory-fin' => 'ආර්ථිකය සහ ව්â€à¶ºà·à¶´à·à¶»',
+'exif-iimcategory-edu' => 'අධ්â€à¶ºà·à¶´à¶±à¶º',
+'exif-iimcategory-evn' => 'වටපිටà·à·€',
+'exif-iimcategory-hth' => 'සෞඛ්â€à¶ºà¶º',
+'exif-iimcategory-hum' => 'මà·à¶±à·€ අයිතිය',
+'exif-iimcategory-lab' => 'කම්කරු',
+'exif-iimcategory-lif' => 'ජීවන ක්â€à¶»à¶¸ සහ විවේකය',
+'exif-iimcategory-pol' => 'දේà·à¶´à·à¶½à¶±à¶º',
+'exif-iimcategory-rel' => 'ආගම සහ විà·à·Šà·€à·à·ƒ',
+'exif-iimcategory-sci' => 'විද්â€à¶ºà·à·€ හ෠තà·à¶šà·Šà·‚ණය',
+'exif-iimcategory-soi' => 'සමà·à¶¢à·“ය à·€à·à¶¯à¶´à¶¯',
+'exif-iimcategory-spo' => 'ක්â€à¶»à·“ඩà·',
+'exif-iimcategory-war' => 'යුද්ධ, ගà·à¶§à·”ම් සහ කලබල සහිත බව',
+'exif-iimcategory-wea' => 'කà·à¶½à¶œà·”ණය',
+
+'exif-urgency-normal' => 'à·ƒà·à¶¸à·à¶±à·Šâ€à¶ºà¶ºà·’ ($1)',
+'exif-urgency-low' => 'අඩුයි ($1)',
+'exif-urgency-high' => 'ඉහළයි ($1)',
+'exif-urgency-other' => 'පරිà·à·“ලක-අර්ථ දà·à¶šà·Šà·€à·– ප්â€à¶»à¶¸à·”ඛත්වය ($1)',
+
# External editor support
'edit-externally' => 'බà·à·„ිර උපයà·à¶œà¶ºà¶šà·Š භà·à·€à·’ත෠කරමින් මෙම ගොනුව සංස්කරණය කරන්න',
-'edit-externally-help' => '(à·€à·à¶©à·’දුර තොරතුරු සඳහ෠[http://www.mediawiki.org/wiki/Manual:External_editors පිහිටුවීම් උපදෙස්] බලන්න.)',
+'edit-externally-help' => '(à·€à·à¶©à·’දුර තොරතුරු සඳහ෠[//www.mediawiki.org/wiki/Manual:External_editors පිහිටුවීම් උපදෙස්] බලන්න.)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'සියල්ල',
-'imagelistall' => 'සියල්ල',
-'watchlistall2' => 'සියල්ල',
-'namespacesall' => 'සියල්ල',
-'monthsall' => 'සියළු',
-'limitall' => 'සියල්ලම',
+'watchlistall2' => 'සියල්ල',
+'namespacesall' => 'සියල්ල',
+'monthsall' => 'සියළු',
+'limitall' => 'සියල්ලම',
# E-mail address confirmation
'confirmemail' => 'විද්â€à¶ºà·”ත්-තà·à¶´à·à¶½à·Š ලිපිනය තහවුරු කරන්න',
@@ -3396,6 +3551,12 @@ $1',
'confirm-purge-top' => 'මෙම පිටුවෙහි පූර්වà·à¶´à·šà¶šà·Šâ€à·‚à·“ සංචිතය (කෑෂය) හිස් කල යුතුද?',
'confirm-purge-bottom' => 'පිටුවක් විමà·à¶ à¶±à¶º කිරීම විසින් පූර්වà·à¶´à·šà¶šà·Šâ€à·‚ිත සංචිතය (කෑෂය) හිස් කොට ඉතà·à¶¸à¶­à·Š මෑත අනුවà·à¶¯à¶º පෙන්නුම් කිරීමට බල කරයි.',
+# action=watch/unwatch
+'confirm-watch-button' => 'හරි',
+'confirm-watch-top' => 'මෙම පිටුව ඔබගේ මුර-ලà·à¶ºà·’ස්තුවට එක් කරන්නද?',
+'confirm-unwatch-button' => 'හරි',
+'confirm-unwatch-top' => 'මෙම පිටුව ඔබගේ මුර-ලà·à¶ºà·’ස්තුවෙන් ඉවත් කරන්නද?',
+
# Multipage image navigation
'imgmultipageprev' => '↠පෙර පිටුව',
'imgmultipagenext' => 'ඊළඟ පිටුව →',
@@ -3444,14 +3605,14 @@ $1',
'watchlistedit-normal-legend' => 'මුර-ලà·à¶ºà·’ස්තුවෙන් à·à·“ර්ෂයන් ඉවත් කරන්න',
'watchlistedit-normal-explain' => 'ඔබගේ මුර-ලà·à¶ºà·’ස්තුවෙහි සිරස්තලයන් පහත දක්ව෠ඇත.
සිරස්තලයක් ඉවත් කිරීමට, එයâ€à¶§ යà·à¶¶à¶¯ කොටුව තà·à¶»à·à¶œà·™à¶±, සිරස්තල ඉවත්කරන්න යන්න මත ක්ලික් කරන්න.
-[[Special:Watchlist/raw|නොනිමි ලà·à¶ºà·’ස්තුව සංස්කරණය කිරීම]] වුවද ඔබ විසින් සිදු කල à·„à·à¶š.',
+[[Special:EditWatchlist/raw|නොනිමි ලà·à¶ºà·’ස්තුව සංස්කරණය කිරීම]] වුවද ඔබ විසින් සිදු කල à·„à·à¶š.',
'watchlistedit-normal-submit' => 'à·à·“ර්ෂයන් ඉවත් කරන්න',
'watchlistedit-normal-done' => 'ඔබගේ මුර-ලà·à¶ºà·’ස්තුවෙන් {{PLURAL:$1|එක් à·à·“ර්ෂයක්|à·à·“ර්ෂයන් $1 ක්}} ඉවත් කරන ලදි:',
'watchlistedit-raw-title' => 'නොනිමි මුර-ලà·à¶ºà·’ස්තුව සංස්කරණය කරන්න',
'watchlistedit-raw-legend' => 'නොනිමි මුර-ලà·à¶ºà·’ස්තුව සංස්කරණය කරන්න',
'watchlistedit-raw-explain' => 'ඔබගේ මුර-ලà·à¶ºà·’ස්තුවෙහි à·à·“ර්ෂයන් මෙහි පහත දà·à¶šà·Šà·€à·™à¶± අතර, එක් පේළියකට එක් à·à·“ර්ෂයක් වන ලෙස, එම ලà·à¶ºà·’ස්තුවට එක් කිරීමෙන් හ෠ලà·à¶ºà·’ස්තුවෙන් ඉවත් කිරීමෙන් එය සංස්කරණය කල à·„à·à¶š.
මෙය නිමවූ විට, මුර-ලà·à¶ºà·’ස්තුව යà·à·€à¶­à·Šà¶šà·à¶½à¶šà·’රීම යන්න මත ක්ලික් කරන්න.
- [[Special:Watchlist/edit|සම්මත සංස්කà·à¶»à¶šà¶º භà·à·€à·’ත෠කිරීමද]] ඔබ විසින් සිදු කල à·„à·à¶š.',
+ [[Special:EditWatchlist|සම්මත සංස්කà·à¶»à¶šà¶º භà·à·€à·’ත෠කිරීමද]] ඔබ විසින් සිදු කල à·„à·à¶š.',
'watchlistedit-raw-titles' => 'à·à·“ර්ෂයන්:',
'watchlistedit-raw-submit' => 'මුර-ලà·à¶ºà·’ස්තුව යà·à·€à¶­à·Šà¶šà·à¶½à·“න කරන්න',
'watchlistedit-raw-done' => 'ඔබගේ මුර-ලà·à¶ºà·’ස්තුව යà·à·€à¶­à·Šà¶šà·à¶½à·“න කරන ලදි.',
@@ -3529,33 +3690,33 @@ $1',
'duplicate-defaultsort' => 'අවවà·à¶¯à¶ºà¶ºà·’: "$2" පෙරනිමි සුබෙදුම් යතුර විසින් â€à¶´à·–ර්ව පෙරනිමි සුබෙදුම් යතුර වූ "$1" අතික්â€à¶»à¶¸à¶«à¶º කරයි.',
# Special:Version
-'version' => 'අනුවà·à¶¯à¶º',
-'version-extensions' => 'ස්ථà·à¶´à·’ත ප්â€à¶»à·ƒà¶»à·Šà¶¢à¶±à¶ºà¶±à·Š',
-'version-specialpages' => 'විà·à·šà·‚ පිටු',
-'version-parserhooks' => 'ව්â€à¶ºà·à¶šà¶»à¶« විග්â€à¶»à·„ක හසුරු',
-'version-variables' => 'විචල්â€à¶ºà¶ºà¶±à·Š',
-'version-skins' => 'ඡවිය',
-'version-other' => 'වෙනත්',
-'version-mediahandlers' => 'මà·à¶°à·Šâ€à¶º හසුරුවනය',
-'version-hooks' => 'හසුරු',
-'version-extension-functions' => 'ප්â€à¶»à·ƒà¶»à·Šà¶¢à·’ත කà·à¶»à·Šà¶ºà¶ºà¶±à·Š',
-'version-parser-extensiontags' => 'ව්â€à¶ºà·à¶šà¶»à¶« විග්â€à¶»à·„ක ප්â€à¶»à·ƒà¶»à·Šà¶¢à¶± ටà·à¶œà¶ºà¶±à·Š',
-'version-parser-function-hooks' => 'වයà·à¶šà¶»à¶« විග්â€à¶»à·„ක à·à·Šâ€à¶»à·’ත හසුරු',
-'version-skin-extension-functions' => 'ඡවි ප්â€à¶»à·ƒà¶»à·Šà¶¢à¶± à·à·Šâ€à¶»à·“ත',
-'version-hook-name' => 'හසුරු නම',
-'version-hook-subscribedby' => 'දà·à¶ºà¶šà·€à·“ ඇත්තේ',
-'version-version' => '(අනුවà·à¶¯à¶º $1)',
-'version-license' => 'බලපත්â€à¶»à¶º',
-'version-poweredby-credits' => "මෙම විකිය '''[http://www.mediawiki.org/ MediaWiki]''' මගින් බලගන්ව෠ඇත, copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'අනෙකුත්',
-'version-license-info' => 'MediaWiki යනු නිදහස් මෘදුකà·à¶‚ගයකි; නිදහස් මෘදුකà·à¶‚ග පදනමේ (Free Software Foundation) à·„à·’ GNU General Public License නම් බලපත්â€à¶»à¶ºà·š වගන්තිවලට අනුව ඔබට එය නà·à·€à¶­ බෙදà·à·„à·à¶»à·“ම සහ/හ෠සංස්කරණය කළ à·„à·à¶š; ඒ, එම බලපත්â€à¶»à¶ºà·š 2වන à·„à· (ඔබට කà·à¶¸à¶­à·’ නම්) ඉන්පසු එන සංස්කරණයකට අනුවය.
+'version' => 'අනුවà·à¶¯à¶º',
+'version-extensions' => 'ස්ථà·à¶´à·’ත ප්â€à¶»à·ƒà¶»à·Šà¶¢à¶±à¶ºà¶±à·Š',
+'version-specialpages' => 'විà·à·šà·‚ පිටු',
+'version-parserhooks' => 'ව්â€à¶ºà·à¶šà¶»à¶« විග්â€à¶»à·„ක හසුරු',
+'version-variables' => 'විචල්â€à¶ºà¶ºà¶±à·Š',
+'version-antispam' => 'ස්පෑම à·€à·à¶½à·à¶šà·Šà·€à·”ම',
+'version-skins' => 'ඡවිය',
+'version-other' => 'වෙනත්',
+'version-mediahandlers' => 'මà·à¶°à·Šâ€à¶º හසුරුවනය',
+'version-hooks' => 'හසුරු',
+'version-extension-functions' => 'ප්â€à¶»à·ƒà¶»à·Šà¶¢à·’ත කà·à¶»à·Šà¶ºà¶ºà¶±à·Š',
+'version-parser-extensiontags' => 'ව්â€à¶ºà·à¶šà¶»à¶« විග්â€à¶»à·„ක ප්â€à¶»à·ƒà¶»à·Šà¶¢à¶± ටà·à¶œà¶ºà¶±à·Š',
+'version-parser-function-hooks' => 'වයà·à¶šà¶»à¶« විග්â€à¶»à·„ක à·à·Šâ€à¶»à·’ත හසුරු',
+'version-hook-name' => 'හසුරු නම',
+'version-hook-subscribedby' => 'දà·à¶ºà¶šà·€à·“ ඇත්තේ',
+'version-version' => '(අනුවà·à¶¯à¶º $1)',
+'version-license' => 'බලපත්â€à¶»à¶º',
+'version-poweredby-credits' => "මෙම විකිය '''[//www.mediawiki.org/ MediaWiki]''' මගින් බලගන්ව෠ඇත, copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'අනෙකුත්',
+'version-license-info' => 'MediaWiki යනු නිදහස් මෘදුකà·à¶‚ගයකි; නිදහස් මෘදුකà·à¶‚ග පදනමේ (Free Software Foundation) à·„à·’ GNU General Public License නම් බලපත්â€à¶»à¶ºà·š වගන්තිවලට අනුව ඔබට එය නà·à·€à¶­ බෙදà·à·„à·à¶»à·“ම සහ/හ෠සංස්කරණය කළ à·„à·à¶š; ඒ, එම බලපත්â€à¶»à¶ºà·š 2වන à·„à· (ඔබට කà·à¶¸à¶­à·’ නම්) ඉන්පසු එන සංස්කරණයකට අනුවය.
MediaWiki බෙදà·à·„à·à¶» ඇත්තේ එය ප්â€à¶»à¶ºà·à¶¢à¶±à·€à¶­à·Šà·€à·šà¶º යන බලà·à¶´à·œà¶»à·œà¶­à·Šà¶­à·”à·€ ඇතිවය, නමුත් *කිසිදු වගකීමක් රහිතව*ය; අඩු තරමේ *විකිණිය à·„à·à¶šà·’බව* à·„à· *කිසියම් කà·à¶»à·Šà¶ºà¶ºà¶šà¶§ ප්â€à¶»à¶ºà·à¶¢à¶±à¶ºà¶§ ගත à·„à·à¶šà·’බව* යන්න පිළිබඳ වගකීමක් හ෠රහිතවය. à·€à·à¶©à·’ විස්තර සඳහ෠GNU General Public License බලන්න.
-ඔබට මෙම මෘදුකà·à¶‚ගය සමග [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License à·„à·’ පිටපතක්] ලà·à¶¶à·“ තිබිය යුතුය; නà·à¶­à·’නම්, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA වෙත ලියන්න à·„à· [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html එය මà·à¶»à·Šà¶œà¶œà¶­à·€ කියවන්න].',
-'version-software' => 'ස්ථà·à¶´à·’ත මෘදුකà·à¶‚ග',
-'version-software-product' => 'නිෂ්පà·à¶¯à¶±à¶º',
-'version-software-version' => 'අනුවà·à¶¯à¶º',
+ඔබට මෙම මෘදුකà·à¶‚ගය සමග [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License à·„à·’ පිටපතක්] ලà·à¶¶à·“ තිබිය යුතුය; නà·à¶­à·’නම්, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA වෙත ලියන්න à·„à· [//www.gnu.org/licenses/old-licenses/gpl-2.0.html එය මà·à¶»à·Šà¶œà¶œà¶­à·€ කියවන්න].',
+'version-software' => 'ස්ථà·à¶´à·’ත මෘදුකà·à¶‚ග',
+'version-software-product' => 'නිෂ්පà·à¶¯à¶±à¶º',
+'version-software-version' => 'අනුවà·à¶¯à¶º',
# Special:FilePath
'filepath' => 'ගොනු පෙත',
@@ -3567,22 +3728,22 @@ MediaWiki බෙදà·à·„à·à¶» ඇත්තේ එය ප්â€à¶»à¶ºà·à¶¢à¶±à
"{{ns:file}}:" උපසර්ගය විරහිතව ගොනු නà·à¶¸à¶º ඇතුලත් කරන්න.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'අනුපිටපත් ගොනු සඳහ෠ගවේෂණය කරන්න',
-'fileduplicatesearch-summary' => 'එහි පූරක අගය පà·à¶¯à¶š කර ගෙන අනුපිටපත් ගොනු සඳහ෠ගවේෂණය කරන්න.
-
-"{{ns:file}}:" උපසර්ගය රහිතව ගොනු නà·à¶¸à¶º ඇතුළත් කරන්න.',
-'fileduplicatesearch-legend' => 'අනුපිටපතක් සඳහ෠ගවේෂණය කරන්න',
-'fileduplicatesearch-filename' => 'ගොනු-නà·à¶¸à¶º:',
-'fileduplicatesearch-submit' => 'ගවේෂණය',
-'fileduplicatesearch-info' => '$1 × $2 පික්සල<br />ගොනු විà·à·à¶½à¶­à·Šà·€à¶º: $3<br />MIME à·à·›à¶½à·’ය: $4',
-'fileduplicatesearch-result-1' => '"$1" ගොනුවට සර්වසම අනුපිටපතක් නොමà·à¶­.',
-'fileduplicatesearch-result-n' => '"$1" ගොනුවට {{PLURAL:$2|සර්වසම අනුපිටපතක්|සර්වසම අනුපිටපත් $2 ක්}} ඇත.',
+'fileduplicatesearch' => 'අනුපිටපත් ගොනු සඳහ෠ගවේෂණය කරන්න',
+'fileduplicatesearch-summary' => 'එහි පූරක අගය පà·à¶¯à¶š කර ගෙන අනුපිටපත් ගොනු සඳහ෠ගවේෂණය කරන්න.',
+'fileduplicatesearch-legend' => 'අනුපිටපතක් සඳහ෠ගවේෂණය කරන්න',
+'fileduplicatesearch-filename' => 'ගොනු-නà·à¶¸à¶º:',
+'fileduplicatesearch-submit' => 'ගවේෂණය',
+'fileduplicatesearch-info' => '$1 × $2 පික්සල<br />ගොනු විà·à·à¶½à¶­à·Šà·€à¶º: $3<br />MIME à·à·›à¶½à·’ය: $4',
+'fileduplicatesearch-result-1' => '"$1" ගොනුවට සර්වසම අනුපිටපතක් නොමà·à¶­.',
+'fileduplicatesearch-result-n' => '"$1" ගොනුවට {{PLURAL:$2|සර්වසම අනුපිටපතක්|සර්වසම අනුපිටපත් $2 ක්}} ඇත.',
+'fileduplicatesearch-noresults' => '"$1" නමින් ගොනුවක් හමු නොවුණි',
# Special:SpecialPages
'specialpages' => 'විà·à·šà·‚ පිටු',
'specialpages-note' => '----
* à·ƒà·à¶¸à·à¶±à·Šâ€à¶º විà·à·šà·‚ පිටු.
-* <strong class="mw-specialpagerestricted">සීමිත විà·à·šà·‚ පිටු.</strong>',
+* <span class="mw-specialpagerestricted">සීමිත විà·à·šà·‚ පිටු.</span>
+* <span class="mw-specialpagecached">කෑෂිත විâ€à·à·šà·‚ පිටු (යල් පà·à¶± ගිය විය à·„à·à¶š).</span>',
'specialpages-group-maintenance' => 'නඩත්තු à·€à·à¶»à·Šà¶­à·',
'specialpages-group-other' => 'අනෙකුත් විà·à·šà·‚ පිටු',
'specialpages-group-login' => 'ප්â€à¶»à·€à·’ෂ්ට වන්න / ගිණුමක් තනන්න',
diff --git a/languages/messages/MessagesSk.php b/languages/messages/MessagesSk.php
index b2cf2787..69ddebe2 100644
--- a/languages/messages/MessagesSk.php
+++ b/languages/messages/MessagesSk.php
@@ -27,92 +27,92 @@
*/
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'DvojitéPresmerovania' ),
+ 'Activeusers' => array( 'AktívniPoužívatelia' ),
+ 'Allmessages' => array( 'VšetkySprávy' ),
+ 'Allpages' => array( 'VšetkyStránky' ),
+ 'Ancientpages' => array( 'StaréStránky' ),
+ 'Blankpage' => array( 'PrázdnaStránka' ),
+ 'Block' => array( 'Blokovanie' ),
+ 'Blockme' => array( 'ZablokovaťMa' ),
+ 'Booksources' => array( 'KnižnéZdroje' ),
'BrokenRedirects' => array( 'PokazenéPresmerovania' ),
- 'Disambiguations' => array( 'RozlišovacieStránky' ),
- 'Userlogin' => array( 'PrihláseniePoužívateľa' ),
- 'Userlogout' => array( 'OdhláseniePoužívateľa' ),
+ 'Categories' => array( 'Kategórie' ),
+ 'ChangePassword' => array( 'ZmenaHesla' ),
+ 'Confirmemail' => array( 'PotvrdiťEmail' ),
+ 'Contributions' => array( 'Príspevky' ),
'CreateAccount' => array( 'VytvorenieÚÄtu' ),
- 'Preferences' => array( 'Nastavenia' ),
- 'Watchlist' => array( 'ZoznamSledovaných' ),
- 'Recentchanges' => array( 'PoslednéÚpravy' ),
- 'Upload' => array( 'NahranieSúboru' ),
+ 'Deadendpages' => array( 'StránkyBezOdkazov' ),
+ 'DeletedContributions' => array( 'ZmazanéPríspevky' ),
+ 'Disambiguations' => array( 'RozlišovacieStránky' ),
+ 'DoubleRedirects' => array( 'DvojitéPresmerovania' ),
+ 'Emailuser' => array( 'EmailPoužívateľovi' ),
+ 'Fewestrevisions' => array( 'NajmenejRevízií' ),
+ 'FileDuplicateSearch' => array( 'HľadanieDuplicitnýchSúborov' ),
+ 'Filepath' => array( 'CestaKSúboru' ),
+ 'Invalidateemail' => array( 'ZneplatniťEmail' ),
+ 'BlockList' => array( 'ZoznamBlokovaní' ),
+ 'LinkSearch' => array( 'HľadanieOdkazov' ),
+ 'Listadmins' => array( 'ZoznamSprávcov' ),
+ 'Listbots' => array( 'ZoznamBotov' ),
'Listfiles' => array( 'ZoznamSúborov' ),
- 'Newimages' => array( 'NovéSúbory' ),
- 'Listusers' => array( 'ZoznamPoužívateľov' ),
'Listgrouprights' => array( 'ZoznamSkupinovýchPráv' ),
- 'Statistics' => array( 'Å tatistika' ),
- 'Randompage' => array( 'Náhodná', 'NáhodnáStránka' ),
+ 'Listredirects' => array( 'ZoznamPresmerovaní' ),
+ 'Listusers' => array( 'ZoznamPoužívateľov' ),
+ 'Lockdb' => array( 'ZamknutieDB' ),
+ 'Log' => array( 'Záznamy' ),
'Lonelypages' => array( 'OsirotenéStránky' ),
- 'Uncategorizedpages' => array( 'NekategorizovanéStránky' ),
- 'Uncategorizedcategories' => array( 'NekategorizovanéKategórie' ),
- 'Uncategorizedimages' => array( 'NekategorizovanéSúbory' ),
- 'Uncategorizedtemplates' => array( 'NekategorizovanéŠablóny' ),
- 'Unusedcategories' => array( 'NepoužívanéKategórie' ),
- 'Unusedimages' => array( 'NepoužívanéSúbory' ),
- 'Wantedpages' => array( 'ŽiadanéStránky' ),
- 'Wantedcategories' => array( 'ŽiadanéKategórie' ),
- 'Wantedfiles' => array( 'ŽiadanéSúbory' ),
- 'Wantedtemplates' => array( 'ŽiadanéŠablóny' ),
+ 'Longpages' => array( 'DlhéStránky' ),
+ 'MergeHistory' => array( 'HistóriaZlúÄení' ),
+ 'MIMEsearch' => array( 'HľadanieMIME' ),
+ 'Mostcategories' => array( 'NajviacKategórií' ),
+ 'Mostimages' => array( 'NajodkazovanejšieSúbory' ),
'Mostlinked' => array( 'NajodkazovanejšieStránky' ),
'Mostlinkedcategories' => array( 'NajodkazovanejšieKategórie' ),
'Mostlinkedtemplates' => array( 'NajodkazovanejšieŠablóny' ),
- 'Mostimages' => array( 'NajodkazovanejšieSúbory' ),
- 'Mostcategories' => array( 'NajviacKategórií' ),
'Mostrevisions' => array( 'NajviacRevízií' ),
- 'Fewestrevisions' => array( 'NajmenejRevízií' ),
- 'Shortpages' => array( 'KrátkeStránky' ),
- 'Longpages' => array( 'DlhéStránky' ),
+ 'Movepage' => array( 'PresunúťStránku' ),
+ 'Mycontributions' => array( 'MojePríspevky' ),
+ 'Mypage' => array( 'MojaStránka' ),
+ 'Mytalk' => array( 'MojaDiskusia' ),
+ 'Newimages' => array( 'NovéSúbory' ),
'Newpages' => array( 'NovéStránky' ),
- 'Ancientpages' => array( 'StaréStránky' ),
- 'Deadendpages' => array( 'StránkyBezOdkazov' ),
+ 'Popularpages' => array( 'PopulárneStránky' ),
+ 'Preferences' => array( 'Nastavenia' ),
+ 'Prefixindex' => array( 'IndexPredpon' ),
'Protectedpages' => array( 'ZamknutéStránky' ),
'Protectedtitles' => array( 'ZamknutéNázvy' ),
- 'Allpages' => array( 'VšetkyStránky' ),
- 'Prefixindex' => array( 'IndexPredpon' ),
- 'Ipblocklist' => array( 'ZoznamBlokovaní' ),
- 'Specialpages' => array( 'ŠpeciálneStránky' ),
- 'Contributions' => array( 'Príspevky' ),
- 'Emailuser' => array( 'EmailPoužívateľovi' ),
- 'Confirmemail' => array( 'PotvrdiťEmail' ),
- 'Whatlinkshere' => array( 'ÄŒoOdkazujeSem' ),
+ 'Randompage' => array( 'Náhodná', 'NáhodnáStránka' ),
+ 'Randomredirect' => array( 'NáhodnéPresmerovanie' ),
+ 'Recentchanges' => array( 'PoslednéÚpravy' ),
'Recentchangeslinked' => array( 'SúvisiacePoslednéÚpravy' ),
- 'Movepage' => array( 'PresunúťStránku' ),
- 'Blockme' => array( 'ZablokovaťMa' ),
- 'Booksources' => array( 'KnižnéZdroje' ),
- 'Categories' => array( 'Kategórie' ),
- 'Version' => array( 'Verzia' ),
- 'Allmessages' => array( 'VšetkySprávy' ),
- 'Log' => array( 'Záznamy' ),
- 'Blockip' => array( 'Blokovanie' ),
+ 'Revisiondelete' => array( 'ZmazaťRevíziu' ),
+ 'Search' => array( 'Hľadanie' ),
+ 'Shortpages' => array( 'KrátkeStránky' ),
+ 'Specialpages' => array( 'ŠpeciálneStránky' ),
+ 'Statistics' => array( 'Å tatistika' ),
+ 'Tags' => array( 'ZnaÄky' ),
+ 'Uncategorizedcategories' => array( 'NekategorizovanéKategórie' ),
+ 'Uncategorizedimages' => array( 'NekategorizovanéSúbory' ),
+ 'Uncategorizedpages' => array( 'NekategorizovanéStránky' ),
+ 'Uncategorizedtemplates' => array( 'NekategorizovanéŠablóny' ),
'Undelete' => array( 'Obnovenie' ),
- 'Lockdb' => array( 'ZamknutieDB' ),
'Unlockdb' => array( 'OdomknutieDB' ),
- 'Userrights' => array( 'PrávaPoužívateľa' ),
- 'MIMEsearch' => array( 'HľadanieMIME' ),
- 'FileDuplicateSearch' => array( 'HľadanieDuplicitnýchSúborov' ),
- 'Unwatchedpages' => array( 'NesledovanéStránky' ),
- 'Listredirects' => array( 'ZoznamPresmerovaní' ),
- 'Revisiondelete' => array( 'ZmazaťRevíziu' ),
+ 'Unusedcategories' => array( 'NepoužívanéKategórie' ),
+ 'Unusedimages' => array( 'NepoužívanéSúbory' ),
'Unusedtemplates' => array( 'NepoužitéŠablóny' ),
- 'Randomredirect' => array( 'NáhodnéPresmerovanie' ),
- 'Mypage' => array( 'MojaStránka' ),
- 'Mytalk' => array( 'MojaDiskusia' ),
- 'Mycontributions' => array( 'MojePríspevky' ),
- 'Listadmins' => array( 'ZoznamSprávcov' ),
- 'Listbots' => array( 'ZoznamBotov' ),
- 'Popularpages' => array( 'PopulárneStránky' ),
- 'Search' => array( 'Hľadanie' ),
- 'Resetpass' => array( 'ZmenaHesla' ),
+ 'Unwatchedpages' => array( 'NesledovanéStránky' ),
+ 'Upload' => array( 'NahranieSúboru' ),
+ 'Userlogin' => array( 'PrihláseniePoužívateľa' ),
+ 'Userlogout' => array( 'OdhláseniePoužívateľa' ),
+ 'Userrights' => array( 'PrávaPoužívateľa' ),
+ 'Version' => array( 'Verzia' ),
+ 'Wantedcategories' => array( 'ŽiadanéKategórie' ),
+ 'Wantedfiles' => array( 'ŽiadanéSúbory' ),
+ 'Wantedpages' => array( 'ŽiadanéStránky' ),
+ 'Wantedtemplates' => array( 'ŽiadanéŠablóny' ),
+ 'Watchlist' => array( 'ZoznamSledovaných' ),
+ 'Whatlinkshere' => array( 'ÄŒoOdkazujeSem' ),
'Withoutinterwiki' => array( 'BezInterwiki' ),
- 'MergeHistory' => array( 'HistóriaZlúÄení' ),
- 'Filepath' => array( 'CestaKSúboru' ),
- 'Invalidateemail' => array( 'ZneplatniťEmail' ),
- 'Blankpage' => array( 'PrázdnaStránka' ),
- 'LinkSearch' => array( 'HľadanieOdkazov' ),
- 'DeletedContributions' => array( 'ZmazanéPríspevky' ),
- 'Tags' => array( 'ZnaÄky' ),
- 'Activeusers' => array( 'AktívniPoužívatelia' ),
);
$datePreferences = array(
@@ -308,8 +308,8 @@ $messages = array(
'tog-shownumberswatching' => 'ZobraziÅ¥ poÄet používateľov sledujúcich stránku',
'tog-oldsig' => 'SúÄasný podpis:',
'tog-fancysig' => 'Považovať podpisy za wikitext (bez automatických odkazov)',
-'tog-externaleditor' => 'PoužívaÅ¥ Å¡tandardne externý editor (iba pre expertov, vyžaduje Å¡peciálne nastavenie vášho poÄítaÄa. [http://www.mediawiki.org/wiki/Manual:External_editors ÄŽalÅ¡ie informácie.])',
-'tog-externaldiff' => 'PoužívaÅ¥ Å¡tandardne externý diff (iba pre expertov, vyžaduje Å¡peciálne nastavenie vášho poÄítaÄa. [http://www.mediawiki.org/wiki/Manual:External_editors ÄŽalÅ¡ie informácie.])',
+'tog-externaleditor' => 'PoužívaÅ¥ Å¡tandardne externý editor (iba pre expertov, vyžaduje Å¡peciálne nastavenie vášho poÄítaÄa. [//www.mediawiki.org/wiki/Manual:External_editors ÄŽalÅ¡ie informácie.])',
+'tog-externaldiff' => 'PoužívaÅ¥ Å¡tandardne externý diff (iba pre expertov, vyžaduje Å¡peciálne nastavenie vášho poÄítaÄa. [//www.mediawiki.org/wiki/Manual:External_editors ÄŽalÅ¡ie informácie.])',
'tog-showjumplinks' => 'PoužívaÅ¥ odkazy „skoÄiÅ¥ na“ pre lepÅ¡iu dostupnosÅ¥',
'tog-uselivepreview' => 'Používať živý náhľad (JavaScript) (experimentálna funkcia)',
'tog-forceeditsummary' => 'UpozoriÅ¥ ma, keÄ nevyplním zhrnutie úprav',
@@ -406,15 +406,7 @@ $messages = array(
'listingcontinuesabbrev' => 'pokraÄ.',
'index-category' => 'Indexované stránky',
'noindex-category' => 'neindexované stránky',
-
-'mainpagetext' => "'''Softvér MediaWiki bol úspešne nainštalovaný.'''",
-'mainpagedocfooter' => 'Informácie ako používaÅ¥ wiki softvér nájdete v [http://meta.wikimedia.org/wiki/Help:Contents Používateľskej príruÄke].
-
-== ZaÄíname ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Zoznam konfiguraÄných nastavení]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce mailing list nových verzií MediaWiki]',
+'broken-file-category' => 'Stránky s poškodenými odkazmi súbor',
'about' => 'Projekt',
'article' => 'Stránka s obsahom',
@@ -466,10 +458,10 @@ $messages = array(
'history' => 'História stránky',
'history_short' => 'História',
'updatedmarker' => 'aktualizované od mojej poslednej návštevy',
-'info_short' => 'Informácie',
'printableversion' => 'Verzia na tlaÄ',
'permalink' => 'Trvalý odkaz',
'print' => 'TlaÄ',
+'view' => 'Zobraziť',
'edit' => 'upraviť',
'create' => 'Vytvoriť',
'editthispage' => 'Upraviť túto stránku',
@@ -477,6 +469,7 @@ $messages = array(
'delete' => 'Vymazať',
'deletethispage' => 'Vymazať túto stránku',
'undelete_short' => 'Obnoviť {{PLURAL:$1|jednu úpravu|$1 úpravy|$1 úprav}}',
+'viewdeleted_short' => 'Zobraziť {{PLURAL:$1|jednu zmazanú úpravu|$1 zmazané úpravy|$1 zmazaných úprav}}',
'protect' => 'Zamknúť',
'protect_change' => 'Zmeniť',
'protectthispage' => 'Zamknúť túto stránku',
@@ -560,6 +553,8 @@ $1',
'toc' => 'Obsah',
'showtoc' => 'zobraziť',
'hidetoc' => 'skryť',
+'collapsible-collapse' => 'zbaliť',
+'collapsible-expand' => 'rozbaliť',
'thisisdeleted' => 'Zobraziť alebo obnoviť $1?',
'viewdeleted' => 'Zobraziť $1?',
'restorelink' => '{{PLURAL:$1|jednu zmazanú úpravu|$1 zmazané úpravy|$1 zmazaných úprav}}',
@@ -571,6 +566,8 @@ $1',
'page-rss-feed' => 'RSS kanál „$1“',
'page-atom-feed' => 'Atom kanál „$1“',
'red-link-title' => '$1 (stránka neexistuje)',
+'sort-descending' => 'Usporiadať zostupne',
+'sort-ascending' => 'Usporiadať vzostupne',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Stránka',
@@ -653,12 +650,13 @@ Požiadavka: $2',
'protectedpagetext' => 'Táto stránka bola zamknutá aby sa zamedzilo úpravám.',
'viewsourcetext' => 'Môžete si zobraziť a kopírovať zdroj tejto stránky:',
'protectedinterface' => 'Táto stránka poskytuje text používateľského rozhrania a je zamknutá, aby sa predišlo jej zneužitiu.',
-'editinginterface' => "'''Upozornenie:''' Upravujete stránku, ktorá poskytuje text používateľského rozhrania. Zmeny tejto stránky ovplyvnia vzhľad používateľského rozhrania ostatných používateľov. Zmeny prosím vykonávajte prostredníctvom [http://translatewiki.net/wiki/Main_Page?setlang=sk translatewiki.net], projektu pre lokalizáciu MediaWiki.",
+'editinginterface' => "'''Upozornenie:''' Upravujete stránku, ktorá poskytuje text používateľského rozhrania. Zmeny tejto stránky ovplyvnia vzhľad používateľského rozhrania ostatných používateľov. Zmeny prosím vykonávajte prostredníctvom [//translatewiki.net/wiki/Main_Page?setlang=sk translatewiki.net], projektu pre lokalizáciu MediaWiki.",
'sqlhidden' => '(SQL príkaz je skrytý)',
'cascadeprotected' => 'Táto stránka bola zamknutá proti úpravám, pretože je použitá na {{PLURAL:$1|nasledovnej stránke, ktorá je zamknutá|nasledovných stránkach, ktoré sú zamknuté}} voľbou „kaskádového zamknutia“:
$2',
'namespaceprotected' => "Nemáte povolenie upravovať stránky v mennom priestore '''$1'''.",
-'customcssjsprotected' => 'Nemáte povolenie na úpravu tejto stránky, pretože obsahuje osobné nastavenia iného používateľa.',
+'customcssprotected' => 'Nemáte právo upravovať túto CSS stránku, pretože obsahuje osobné nastavenie iného užívateľa.',
+'customjsprotected' => 'Nemáte právo upravovať túto JavaScript stránku, pretože obsahuje osobné nastavenie iného užívateľa.',
'ns-specialprotected' => 'Stránky v mennom pristore {{ns:special}} nie je možné upravovať.',
'titleprotected' => "Používateľ [[User:$1|$1]] zabránil vytváraniu stránky s týmto názvom.
Udaný dôvod: ''$2''.",
@@ -697,6 +695,7 @@ Nezabudnite si nastaviť svoje [[Special:Preferences|používateľské nastaveni
'createaccount' => 'VytvoriÅ¥ nový úÄet',
'gotaccount' => "Máte už vytvorený úÄet? '''$1'''.",
'gotaccountlink' => 'Prihlásiť',
+'userlogin-resetlink' => 'Zabudli ste svoje prihlasovacie údaje?',
'createaccountmail' => 'e-mailom',
'createaccountreason' => 'Dôvod:',
'badretype' => 'Zadané heslá nie sú rovnaké.',
@@ -706,13 +705,15 @@ Zvoľte si prosím iné meno.',
'createaccounterror' => 'Nepodarilo sa vytvoriÅ¥ úÄet: $1',
'nocookiesnew' => 'Používateľské konto bolo vytvorené, ale nie ste prihlásený. {{SITENAME}} používa cookies na prihlásenie. Máte cookies vypnuté. Zapnite ich a potom sa prihláste pomocou vášho nového používateľského mena a hesla.',
'nocookieslogin' => '{{SITENAME}} používa cookies na prihlásenie. Vy máte cookies vypnuté. Prosíme, zapnite ich a skúste znovu.',
+'nocookiesfornew' => 'Používateľský úÄet nebol vytvorený, pretože sme nemohli potvrdiÅ¥ jeho zdroj.
+UbezpeÄte sa, že máte povolené cookies, obnovte túto stránku a skúste to znova.',
'noname' => 'Nezadali ste platné používateľské meno.',
'loginsuccesstitle' => 'Prihlásenie úspešné',
'loginsuccess' => "'''Teraz ste prihlásený do {{GRAMMAR:genitív|{{SITENAME}}}} ako „$1“.'''",
'nosuchuser' => 'Používateľské meno „$1“ neexistuje.
V používateľských menách sa rozlišuje veľkosť písmen.
Skontrolujte preklepy alebo sa [[Special:UserLogin/signup|zaregistrujte ako nový používateľ]].',
-'nosuchusershort' => 'V súÄasnosti neexistuje používateľ s menom „<nowiki>$1</nowiki>“. Skontrolujte preklepy.',
+'nosuchusershort' => 'V súÄasnosti neexistuje používateľ s menom „$1“. Skontrolujte preklepy.',
'nouserspecified' => 'Musíte uviesť meno používateľa.',
'login-userblocked' => 'Tento používateľ je zablokovaný. Nie je mu dovolené prihlásiť sa.',
'wrongpassword' => 'Zadané heslo je nesprávne. Skúste znovu.',
@@ -758,13 +759,14 @@ Ak bol úÄet vytvorený omylom, túto správu môžete ignorovaÅ¥.',
'usernamehasherror' => 'Používateľské meno nemôže obsahovať znak mriežky.',
'login-throttled' => 'Nedávno ste uskutoÄnili príliÅ¡ mnoho neúspeÅ¡ných pokusov o prihlásenie.
Prosím, poÄkajte predtým, než to skúsite znova.',
+'login-abort-generic' => 'Vaše prihlásenie nebolo úspešné - zrušené',
'loginlanguagelabel' => 'Jazyk: $1',
'suspicious-userlogout' => 'VaÅ¡a požiadavka odhlásiÅ¥ sa bola zamietnutá, pretože to vyzerá, že ju poslal pokazený prehliadaÄ alebo proxy server.',
# E-mail sending
'php-mail-error-unknown' => 'Neznáma chyba vo funkcii PHP mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Zmeniť heslo',
'resetpass_announce' => 'Prishlásili ste sa pomocou doÄasného emailom zaslaného kódu. Pre dokonÄenie prihlásenia je potrebné tu nastaviÅ¥ nové heslo:',
'resetpass_text' => '<!-- Sem pridajte text -->',
@@ -782,6 +784,40 @@ Prosím, poÄkajte predtým, než to skúsite znova.',
Je možné, že sa vám už podarilo úspeÅ¡ne zmeniÅ¥ svoje heslo alebo ste si vyžiadali nové doÄasné heslo.',
'resetpass-temp-password' => 'DoÄasné heslo:',
+# Special:PasswordReset
+'passwordreset' => 'Reset hesla',
+'passwordreset-text' => 'Po vyplnení tohto formulára dostanete emailom podrobnosti o vaÅ¡om úÄte.',
+'passwordreset-legend' => 'Obnoviť heslo',
+'passwordreset-disabled' => 'Obnovenie hesla bolo na tejto wiki zakázané.',
+'passwordreset-pretext' => '{{PLURAL:$1|Zadajte nižšie uvedený údaj|Zadajte jeden z nižšie uvedených údajov}}',
+'passwordreset-username' => 'Používateľské meno:',
+'passwordreset-domain' => 'Doména:',
+'passwordreset-email' => 'Emailová adresa:',
+'passwordreset-emailtitle' => 'Podrobnosti o úÄte na {{GRAMMAR:lokál|{{SITENAME}}}}',
+'passwordreset-emailtext-ip' => 'Niekto (pravdepodobne vy z IP adresy $1) požiadal pripomenutie podrobností o vašom
+úÄtu na {{GRAMMAR:genitív|{{SITENAME}}}} ($4). {{PLURAL:$3|Nasledujúci používateľský úÄet je spojený|Nasledujúce používateľské úÄty sú spojené}}
+s touto emailovou adresou:
+
+$2
+
+{{PLURAL:$3|PlatnosÅ¥ tohto doÄasného hesla vyprší|PlatnosÅ¥ týchto doÄasných hesiel vyprší}} o {{PLURAL:$5|jeden deň|$5 dni|$5 dní}}.
+Mali by ste sa prihlásiť teraz a zvoliť nové heslo. Ak túto žiadosť podal niekto iný alebo
+ak ste si spomenuli svoje pôvodné heslo a už ho chcete zmeniť, môžete túto správu
+ignorovaÅ¥ a Äalej používaÅ¥ vaÅ¡e staré heslo.',
+'passwordreset-emailtext-user' => 'Používateľ $1 na {{GRAMMAR:genitív|{{SITENAME}}}} požiadal pripomenutie podrobností o vašom
+úÄtu na {{GRAMMAR:genitív|{{SITENAME}}}} ($4). {{PLURAL:$3|Nasledujúci používateľský úÄet je spojený|Nasledujúce používateľské úÄty sú spojené}}
+s touto emailovou adresou:
+
+$2
+
+{{PLURAL:$3|PlatnosÅ¥ tohto doÄasného hesla vyprší|PlatnosÅ¥ týchto doÄasných hesiel vyprší}} o {{PLURAL:$5|jeden deň|$5 dni|$5 dní}}.
+Mali by ste sa prihlásiť teraz a zvoliť nové heslo. Ak túto žiadosť podal niekto iný alebo
+ak ste si spomenuli svoje pôvodné heslo a už ho chcete zmeniť, môžete túto správu
+ignorovaÅ¥ a Äalej používaÅ¥ vaÅ¡e staré heslo.',
+'passwordreset-emailelement' => 'Používateľské meno: $1
+DoÄasné heslo:$2',
+'passwordreset-emailsent' => 'Email s heslom bol odoslaný.',
+
# Edit page toolbar
'bold_sample' => 'TuÄný text',
'bold_tip' => 'TuÄný text',
@@ -793,8 +829,6 @@ Je možné, že sa vám už podarilo úspešne zmeniť svoje heslo alebo ste si
'extlink_tip' => 'Externý odkaz (nezabudnite na predponu http://)',
'headline_sample' => 'Text nadpisu',
'headline_tip' => 'Text nadpisu úrovne 2',
-'math_sample' => 'Sem vložte vzorec',
-'math_tip' => 'Matematický vzorec (LaTeX)',
'nowiki_sample' => 'Sem vložte neformátovaný text',
'nowiki_tip' => 'Ignoruj wiki formátovanie',
'image_sample' => 'Príklad.jpg',
@@ -884,7 +918,7 @@ alebo [{{fullurl:{{FULLPAGENAME}}|action=edit}} upravovať túto stránku]</span
'noarticletext-nopermission' => 'Táto stránka momentálne neobsahuje žiadny text.
Môžete [[Special:Search/{{PAGENAME}}|hľadať názov tejto stránky]] v texte iných stránok
alebo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} si pozrieť súvisiace záznamy]</span>.',
-'userpage-userdoesnotexist' => 'Používateľský úÄet „$1“ nie je registrovaný. Prosím, skontrolujte, Äi naozaj chcete vytvoriÅ¥/upravovaÅ¥ túto stránku.',
+'userpage-userdoesnotexist' => 'Používateľský úÄet „<nowiki>$1</nowiki>“ nie je registrovaný. Prosím, skontrolujte, Äi naozaj chcete vytvoriÅ¥/upravovaÅ¥ túto stránku.',
'userpage-userdoesnotexist-view' => 'Používateľský úÄet „$1“ nie je registrovaný.',
'blocked-notice-logextract' => 'Tento používateľ je momentálne zablokovaný.
Dolu je pre informáciu posledná položka zo záznamu blokovaní:',
@@ -917,6 +951,7 @@ Ak to nebude fungovať, skúste sa [[Special:UserLogout|odhlásiť]] a znovu pri
'''Ak je toto legitímny pokus o úpravu, skúste to prosím znova. Ak to stále nefunguje, skúste sa [[Special:UserLogout|odhlásiť]] a znovu prihlásiť.'''",
'token_suffix_mismatch' => "'''VaÅ¡a úprava bola zamietnutá, pretože váš klient pokazil znaky s diakritikou v editaÄnom symbole (token). Úprava bola zamietnutá, aby sa zabránilo poÅ¡kodeniu textu stránky. Toto sa obÄas stáva, keÄ používate chybnú anonymnú proxy službu cez webové rozhranie.'''",
+'edit_form_incomplete' => "'''Niektoré Äasti editaÄného formulára nedosiahli server. Prosím, znova skontrolujte, že vaÅ¡e úpravy sú nepoÅ¡kodené a skúste to znova.'''",
'editing' => 'Úprava stránky $1',
'editingsection' => 'Úprava stránky $1 (sekcia)',
'editingcomment' => 'Úprava stránky $1 (nová sekcia)',
@@ -1059,7 +1094,7 @@ Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE
Ako správca máte stále možnosť [$1 zobraziť túto revíziu] ak chcete.",
'rev-deleted-text-view' => "Táto revízia stránky bola '''zmazaná'''.
Ako správca {{GRAMMAR:genitív|{{SITENAME}}}} si ju môžete prezrieť;
-podrobnosti môžu byť v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].",
+podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].",
'rev-suppressed-text-view' => "Táto revízia stránky bola '''potlaÄená'''.
Podrobnosti nájdete v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zázname potlaÄení].",
'rev-deleted-no-diff' => "Tento rozdiel nemôžete zobraziť, pretože bol '''zmazaný'''.
@@ -1071,12 +1106,10 @@ Ako správca {{GRAMMAR:genitív|{{SITENAME}}}} si [$1 tento rozdiel môžete pre
'rev-suppressed-unhide-diff' => "Jedna z revízií tohto rozdielu bola '''potlaÄená'''.
Podrobnosti môžete nájsÅ¥ v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zázname potlaÄení].
Ako správca {{GRAMMAR:genitív|{{SITENAME}}}} si [$1 tento rozdiel môžete prezrieť].",
-'rev-deleted-diff-view' => "jedna z revízií tohto rozdielu bola '''zmazaná'''.
-Ako správca si môžete tento rozdiel zobraziť.
-Podrobnosti môžete nájsť v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].",
-'rev-suppressed-diff-view' => "jedna z revízií tohto rozdielu bola '''potlaÄená'''.
-Ako správca si môžete tento rozdiel zobraziť.
-Podrobnosti môžete nájsÅ¥ v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zázname potlaÄení].",
+'rev-deleted-diff-view' => "Jedna z revízií tohto rozdielu bola '''zmazaná'''.
+Ako správca si môžete tento rozdiel zobraziť; podrobnosti môžete nájsť v [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} zázname mazaní].",
+'rev-suppressed-diff-view' => "Jedna z revízií tohto rozdielu bola '''potlaÄená'''.
+Ako správca si môžete tento rozdiel zobraziÅ¥; podrobnosti môžete nájsÅ¥ v [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} zázname potlaÄení].",
'rev-delundel' => 'zobraziť/skryť',
'rev-showdeleted' => 'zobraziť',
'revisiondelete' => 'Zmazať/obnoviť revízie',
@@ -1154,7 +1187,7 @@ Pozrite sa prosím do záznamov.',
# Suppression log
'suppressionlog' => 'Záznam potlaÄení',
-'suppressionlogtext' => 'Toto je zoznam zmazaní a blokovaní vrátane obsahu, ktorý je skrytý pred správcami. Zoznam momentálne úÄinných blokovaní nájdete na [[Special:IPBlockList|Zoznam blokovaní IP]].',
+'suppressionlogtext' => 'Toto je zoznam zmazaní a blokovaní vrátane obsahu, ktorý je skrytý pred správcami. Pozrite si [[Special:BlockList|zoznam momentálne úÄinných blokovaní]].',
# History merging
'mergehistory' => 'ZlúÄiÅ¥ histórie stránok',
@@ -1261,12 +1294,13 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
'searchdisabled' => 'PrepáÄte! Fulltextové vyhľadávanie bolo doÄasne vypnuté z dôvodu preÅ¥aženia. Zatiaľ môžete použiÅ¥ hľadanie pomocou Google, ktoré vÅ¡ak nemusí byÅ¥ aktuálne.',
# Quickbar
-'qbsettings' => 'NavigaÄný panel',
-'qbsettings-none' => 'Žiadne',
-'qbsettings-fixedleft' => 'Ukotvené vľavo',
-'qbsettings-fixedright' => 'Ukotvené vpravo',
-'qbsettings-floatingleft' => 'Plávajúce vľavo',
-'qbsettings-floatingright' => 'Plávajúce vpravo',
+'qbsettings' => 'NavigaÄný panel',
+'qbsettings-none' => 'Žiadne',
+'qbsettings-fixedleft' => 'Ukotvené vľavo',
+'qbsettings-fixedright' => 'Ukotvené vpravo',
+'qbsettings-floatingleft' => 'Plávajúce vľavo',
+'qbsettings-floatingright' => 'Plávajúce vpravo',
+'qbsettings-directionality' => 'Pevný, v závislosti na smerovosti písma vášho jazyka',
# Preferences page
'preferences' => 'Nastavenia',
@@ -1277,9 +1311,10 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
'changepassword' => 'Zmeniť heslo',
'prefs-skin' => 'Vzhľad',
'skin-preview' => 'Náhľad',
-'prefs-math' => 'Vykreslenie matematiky',
'datedefault' => 'štandardný',
+'prefs-beta' => 'Nové funkcie',
'prefs-datetime' => 'Dátum a Äas',
+'prefs-labs' => 'Laboratórne funkcie',
'prefs-personal' => 'Profil',
'prefs-rc' => 'Posledné úpravy',
'prefs-watchlist' => 'Sledované stránky',
@@ -1301,8 +1336,6 @@ Uistite sa, že táto zmena zachová historickú kontinuitu zmien stránky.',
'columns' => 'Stĺpce:',
'searchresultshead' => 'Vyhľadávanie',
'resultsperpage' => 'PoÄet vyhovujúcich výsledkov zobrazených na stránku:',
-'contextlines' => 'PoÄet zobrazených riadkov z každej nájdenej stránky:',
-'contextchars' => 'PoÄet kontextových znakov v riadku',
'stub-threshold' => 'Prah formátovania <a href="#" class="stub">výhonkov</a> (v bajtoch):',
'stub-threshold-disabled' => 'Vypnuté',
'recentchangesdays' => 'Koľko dní zobrazovať v posledných úpravách:',
@@ -1314,7 +1347,7 @@ Tu je náhodne vytvorená hodnota, ktorú môžete použiť: $1',
'savedprefs' => 'Vaše nastavenia boli uložené.',
'timezonelegend' => 'Časové pásmo:',
'localtime' => 'Miestny Äas:',
-'timezoneuseserverdefault' => 'Použiť nastavenie servera',
+'timezoneuseserverdefault' => 'Použiť predvoľby wiki ($1)',
'timezoneuseoffset' => 'Iné (uvedením rozdielu)',
'timezoneoffset' => 'Rozdiel¹:',
'servertime' => 'Aktuálny Äas na serveri:',
@@ -1349,7 +1382,7 @@ Túto operáciu nemožno vrátiť.',
'prefs-registration' => 'Čas registrácie:',
'yourrealname' => 'SkutoÄné meno *:',
'yourlanguage' => 'Jazyk:',
-'yourvariant' => 'Variant jazyka:',
+'yourvariant' => 'Variant jazyka obsahu:',
'yournick' => 'Podpis:',
'prefs-help-signature' => 'Komentáre na diskusných stránkach by ste mali podpisovaÅ¥ pomocou „<nowiki>~~~~</nowiki>“, Äo sa prevedie na váš podpis a Äasovú známku.',
'badsig' => 'Neplatný podpis v pôvodnom tvare; skontrolujte HTML znaÄky.',
@@ -1362,7 +1395,8 @@ Musí obsahovať menej ako $1 {{PLURAL:$1|znak|znaky|znakov}}.',
'prefs-help-gender' => 'Nepovinné: používa softvér na správne oslovenie v závislosti od rodu. Táto informácia bude verejná.',
'email' => 'E-mail',
'prefs-help-realname' => '¹ SkutoÄné meno (nepovinné): ak sa rozhodnete ho poskytnúť, bude použité na oznaÄenie vaÅ¡ej práce.',
-'prefs-help-email' => '² E-mail (nepovinné): Umožní iným ľuÄom kontaktovaÅ¥ vás pomocou odkazu z vaÅ¡ej používateľskej a diskusnej stránky (bez potreby uverejňovania vaÅ¡ej e-mailovej adresy) a môže naň byÅ¥ poslané nové heslo ak zabudnete pôvodné.',
+'prefs-help-email' => 'Emailová adresa je nepovinný údaj, ale je potrebná v prípade, že ak zabudnete heslo, môžete si na email vyžiadať nové.',
+'prefs-help-email-others' => 'Môžete tiež umožniť ostatným kontaktovať vás prostredníctvom vašej používateľskej alebo diskusnej stránky bez nutnosti odhaliť vašu identitu.',
'prefs-help-email-required' => 'Vyžaduje sa e-mailová adresa.',
'prefs-info' => 'Základné informácie',
'prefs-i18n' => 'Internacionalizácia',
@@ -1487,15 +1521,15 @@ Musí obsahovať menej ako $1 {{PLURAL:$1|znak|znaky|znakov}}.',
'right-userrights' => 'Upravovať oprávnenia ostatných používateľov',
'right-userrights-interwiki' => 'Upravovať oprávnenia používateľov na iných wiki stránkach',
'right-siteadmin' => 'Zamykať a odomykať databázu',
-'right-reset-passwords' => 'Zmeniť heslo iných používateľov',
'right-override-export-depth' => 'Exportovať stránky vrátane okdazovaných stránok do hĺbky 5 odkazov',
'right-sendemail' => 'Posielať e-mail ostatným používateľom',
# 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',
-'rightsnone' => '(žiadne)',
+'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',
+'rightsnone' => '(žiadne)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'ÄítaÅ¥ túto stránku',
@@ -1618,12 +1652,12 @@ Vizuálny prehľad nájdete v [[Special:NewFiles|galérii novo nahraných súbor
'minlength1' => 'Názvy súborov musia mať aspoň jedno písmeno.',
'illegalfilename' => 'Názov súboru „$1“ obsahuje znaky, ktoré nie sú povolené v názvoch stránok. Prosím premenujte súbor a skúste ho nahrať znovu.',
'badfilename' => 'Názov obrázka bol zmenený na „$1“.',
-'filetype-mime-mismatch' => 'Prípona súboru nezodpovedá typu MIME.',
+'filetype-mime-mismatch' => 'Prípona súboru „.$1“ nezodpovedá zistenému typu MIME súboru ($2).',
'filetype-badmime' => 'Nie je povolené nahrávať súbory s MIME typom „$1“.',
'filetype-bad-ie-mime' => 'Nie je možné nahraÅ¥ tento typ súboru, pretože Internet Explorer by ho rozpoznal ako „$1“, Äo je nepovolený a potenciálne nebezpeÄný typ súboru.',
'filetype-unwanted-type' => "„.$1“''' je nežiadúci typ súboru.
{{PLURAL:$3|Uprednostňovaný typ súborov je|Uprednostňované typy súborov sú}} $2.",
-'filetype-banned-type' => "„.$1“''' nie je povolený typ súboru.
+'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|nie je povolený typ súboru|nie sú povolené typy súboru}}.
{{PLURAL:$3|Povolený typ súborov je|Povolené typy súborov sú}} $2.",
'filetype-missing' => 'Súbor nemá príponu (ako „.jpg“).',
'empty-file' => 'Súbor, ktorý ste poslali bol prázdny.',
@@ -1640,6 +1674,7 @@ Vizuálny prehľad nájdete v [[Special:NewFiles|galérii novo nahraných súbor
'large-file' => 'OdporúÄa sa aby veľkosÅ¥ súborov neprekraÄovala $1; tento súbor má $2.',
'largefileserver' => 'Tento súbor je väÄší ako je možné nahraÅ¥ na server (z dôvodu obmedzenia veľkosti súboru v konfigurácii servera).',
'emptyfile' => 'Zdá sa, že súbor, ktorý ste nahrali je prázdny. Mohlo sa staÅ¥, že ste urobili v názve súboru preklep. Prosím, skontrolujte, Äi skutoÄne chcete nahraÅ¥ tento súbor.',
+'windows-nonascii-filename' => 'Táto wiki nepodporuje názvy súborov so špeciálnymi znakmi.',
'fileexists' => "Súbor s týmto názvom už existuje, prosím skontrolujte '''<tt>[[:$1]]</tt>''' ak nie ste si istý, Äi ho chcete zmeniÅ¥.
[[$1|thumb]]",
'filepageexists' => "Popisná stránka pre tento súbor už bola vytvorená na '''<tt>[[:$1]]</tt>''', ale žiadny súbor s týmto názvom momentálne neexistuje.
@@ -1674,6 +1709,8 @@ Ak ho chcete aj napriek tomu nahraÅ¥, choÄte prosím späť a použite iný ná
'php-uploaddisabledtext' => 'Nahrávanie PHP súborov je vypnuté. Prosím, skontrolujte nastavenie file_uploads.',
'uploadscripted' => 'Tento súbor obsahuje kód HTML alebo skript, ktorý može byÅ¥ chybne interpretovaný prehliadaÄom.',
'uploadvirus' => 'Súbor obsahuje vírus! Podrobnosti: $1',
+'uploadjava' => 'Súbor je vo formáte ZIP, ktorý obsahuje Java súbor .class.
+Nahrávanie súborov Java nie je povolené, pretože môžu spôsobiÅ¥ obídenie bezpeÄnostných obmedzení.',
'upload-source' => 'Zdrojový súbor',
'sourcefilename' => 'Názov zdrojového súboru:',
'sourceurl' => 'Zdrojový URL:',
@@ -1683,10 +1720,6 @@ Ak ho chcete aj napriek tomu nahraÅ¥, choÄte prosím späť a použite iný ná
'upload-options' => 'Možnosti nahrávania',
'watchthisupload' => 'Sledovať tento súbor',
'filewasdeleted' => 'Súbor s týmto názvom bol už nahraný a následne zmazaný. Mali by ste skontrolovaÅ¥ $1 predtým, ako budete pokraÄovaÅ¥ na opätovné nahranie.',
-'upload-wasdeleted' => "'''Upozornenie: Nahrávate súbor, ktorý bol predtým zmazaný.'''
-
-Mali by ste zvážiÅ¥, Äi je vhodné pokraÄovaÅ¥ v nahrávaní tohto súboru.
-Tu je na záznam zmazaní tohto súboru:",
'filename-bad-prefix' => "Názov súboru, ktorý nahrávate, zaÄína '''„$1“''', Äo nie je popisné meno. Takýto názov typicky priraÄujú digitálne fotoaparáty automaticky. Prosím, dajte vášmu súboru popisnejší názov.",
'filename-prefix-blacklist' => ' #<!-- tento riadok ponechajte bez zmeny --> <pre>
# Syntax sa používa nasledovne:
@@ -1724,6 +1757,23 @@ Ak problém pretrváva, kontaktujte [[Special:ListUsers/sysop|správcu systému]
'upload-unknown-size' => 'Neznáma veľkosť',
'upload-http-error' => 'Vyskytla sa chyba HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Vyskytla sa chyba pri kontrole otvárania súboru ZIP.',
+'zip-wrong-format' => 'Uvedený súbor nebol súbor ZIP.',
+'zip-bad' => 'Súbor je poÅ¡kodený alebo inak neÄitateľný súbor ZIP.
+Nie je možné správne skontrolovaÅ¥ jeho bezpeÄnosÅ¥.',
+'zip-unsupported' => 'Súbor je vo formáte ZIP a používa možnosti ZIP, ktoré MediaWiki nepodporuje.
+Nie je možné správne skontrolovaÅ¥ jeho bezpeÄnosÅ¥.',
+
+# Special:UploadStash
+'uploadstash' => 'Skrýša nahraných súborov',
+'uploadstash-summary' => 'Táto stránka poskytuje prístup k súborom nahraným (alebo práve nahrávaným), ktoré zatiaľ nie sú zverejnené na wiki. Tieto súbory nevidí nikto iný okrem používateľa, ktorý ich nahral.',
+'uploadstash-clear' => 'Vymazať skrýšu nahraných súborov',
+'uploadstash-nofiles' => 'Nemáte žiadne súbory v skrýši nahraných súborov.',
+'uploadstash-badtoken' => 'Vykonanie operácie sa nepodarilo, možno preto, že platnosť vašich prihlasovacích údajov vypršala. Skúste to znova.',
+'uploadstash-errclear' => 'Vymazanie súborov bolo neúspešné.',
+'uploadstash-refresh' => 'Obnoviť zoznam súborov',
+
# img_auth script messages
'img-auth-accessdenied' => 'Prístup zamietnutý',
'img-auth-nopathinfo' => 'Chýba PATH_INFO.
@@ -1804,7 +1854,7 @@ Nasledovný zoznam zobrazuje {{PLURAL:$1|prvú stránku odkazujúcu|prvé $1 str
Môžete si pozrieť [[Special:WhatLinksHere/$2|úplný zoznam]].',
'nolinkstoimage' => 'Žiadne stránky neobsahujú odkazy na tento obrázok.',
'morelinkstoimage' => 'ZobraziÅ¥ [[Special:WhatLinksHere/$1|ÄalÅ¡ie odkazy]] na tento súbor.',
-'redirectstofile' => '{{PLURAL:$1|Nasledujúci súbor presmerúva|Nasledujúce $1 súbory presmerúvajú|Nasledujúcich $1 súborov presmerúva}} na tento súbor:',
+'linkstoimage-redirect' => '$1 (presmerovanie súboru) $2',
'duplicatesoffile' => '{{PLURAL:$1|Nasledujúci súbor je duplikát|Nasledujúce $1 súbory sú duplikáty||Nasledujúcich $1 súborov sú duplikáty}} tohto súboru ([[Special:FileDuplicateSearch/$2|podrobnosti]]):',
'sharedupload' => 'Tento zdieľaný súbor je z $1 a je možné ho používať na iných projektoch.',
'sharedupload-desc-there' => 'Tento zdieľaný súbor je z $1 a je možné ho používať na iných projektoch. Ďalšie informácie nájdete na [$2 popisnej stránke súboru].',
@@ -1896,12 +1946,13 @@ Môžete si pozrieť [[Special:WhatLinksHere/$2|úplný zoznam]].',
Mali by však odkazovať priamo na príslušnú tému.<br />
Stránka sa považuje za rozliÅ¡ovaciu, keÄ používa Å¡ablónu, na ktorú odkazuje [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Dvojité presmerovania',
-'doubleredirectstext' => 'Táto stránka obsahuje zoznam stránok, ktoré presmerovávajú na iné presmerovacie stránky.
+'doubleredirects' => 'Dvojité presmerovania',
+'doubleredirectstext' => 'Táto stránka obsahuje zoznam stránok, ktoré presmerovávajú na iné presmerovacie stránky.
Každý riadok obsahuje odkaz na prvé a druhé presmerovanie a tiež prvý riadok z textu na ktorý odkazuje druhé presmerovanie, ktoré zvyÄajne odkazuje na „skutoÄný“ cieľ, na ktorý má odkazovaÅ¥ prvé presmerovanie.
<del>PreÄiarknuté</del> položky boli vyrieÅ¡ené.',
-'double-redirect-fixed-move' => 'Stránka [[$1]] bola presunutá, teraz je presmerovaním na [[$2]]',
-'double-redirect-fixer' => 'Korektor presmerovaní',
+'double-redirect-fixed-move' => 'Stránka [[$1]] bola presunutá, teraz je presmerovaním na [[$2]]',
+'double-redirect-fixed-maintenance' => 'Opravuje sa dvojité presmerovanie z [[$1]] na [[$2]].',
+'double-redirect-fixer' => 'Korektor presmerovaní',
'brokenredirects' => 'Pokazené presmerovania',
'brokenredirectstext' => 'Nasledovné presmerovania odkazujú na neexistujúce stránky:',
@@ -1979,6 +2030,7 @@ na ktorý/-ého chcete aplikovať túto funkciu.',
'pager-newer-n' => '{{PLURAL:$1|1 novší|$1 novšie|$1 novších}}',
'pager-older-n' => '{{PLURAL:$1|1 starší|$1 staršie|$1 starších}}',
'suppress' => 'Dozor',
+'querypage-disabled' => 'Táto špeciálna stránka bola zakázaná z výkonnostných dôvodov.',
# Book sources
'booksources' => 'Knižné zdroje',
@@ -2029,7 +2081,7 @@ Pozri aj [[Special:WantedCategories|žiadané kategórie]].',
'sp-deletedcontributions-contribs' => 'príspevky',
# Special:LinkSearch
-'linksearch' => 'Externé odkazy',
+'linksearch' => 'Vyhľadávanie externých odkazov',
'linksearch-pat' => 'Vyhľadávací vzor:',
'linksearch-ns' => 'Menný priestor:',
'linksearch-ok' => 'Hľadať',
@@ -2096,6 +2148,10 @@ Emailová adresa, ktorú ste zadali vo svojich [[Special:Preferences|nastaveniac
'noemailtext' => 'Tento používateľ neuviedol svoju platnú e-mailovú adresu.',
'nowikiemailtitle' => 'Posielanie emailov nie je umožnené',
'nowikiemailtext' => 'Tento používateľ sa rozhodol, že si neželá prijímať emaily od ostatných používateľov.',
+'emailnotarget' => 'Neexistujúce alebo neplatné používateľské meno príjemcu.',
+'emailtarget' => 'Zadajte používateľské meno príjemcu',
+'emailusername' => 'Používateľské meno:',
+'emailusernamesubmit' => 'Odoslať',
'email-legend' => 'Poslať email používateľovi {{GRAMMAR:genitív|{{SITENAME}}}}',
'emailfrom' => 'Od:',
'emailto' => 'Komu:',
@@ -2120,11 +2176,11 @@ Emailová adresa, ktorú ste zadali vo svojich [[Special:Preferences|nastaveniac
'watchlistanontext' => 'Prosím $1 pre prezeranie alebo úpravu vášho zoznamu sledovaných stránok.',
'watchnologin' => 'Nie ste prihlásený/á',
'watchnologintext' => 'Musíte byť [[Special:UserLogin|prihlásený/á]], aby ste mohli modifikovať vaše sledované stránky.',
-'addedwatch' => 'Pridaná do zoznamu sledovaných stránok',
+'addwatch' => 'Pridať do zoznamu sledovaných stránok',
'addedwatchtext' => "Stránka [[$1]] bola pridaná do [[Special:Watchlist|sledovaných stránok]]. Budú tam uvedené ÄalÅ¡ie úpravy tejto stránky a jej diskusie a stránka bude zobrazená '''tuÄne''' v [[Special:RecentChanges|zozname posledných úprav]], aby ste ju ľahÅ¡ie naÅ¡li.
Ak budete chcieť neskôr stránku odstrániť zo sledovaných stránok, kliknite na „{{int:unwatch}}“ v záložkách na vrchu.",
-'removedwatch' => 'Odstránená zo zoznamu sledovaných stránok',
+'removewatch' => 'Odstrániť zo zoznamu sledovaných',
'removedwatchtext' => 'Stránka „[[:$1]]“ bola odstránená z vášho [[Special:Watchlist|zoznamu sledovaných stránok]].',
'watch' => 'Sledovať',
'watchthispage' => 'Sledovať túto stránku',
@@ -2145,8 +2201,9 @@ Ak budete chcieť neskôr stránku odstrániť zo sledovaných stránok, kliknit
'watchlist-options' => 'Nastavenia zoznamu sledovaných',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Pridávam do zoznamu sledovaných...',
-'unwatching' => 'Odoberám zo zoznamu sledovaných...',
+'watching' => 'Pridávam do zoznamu sledovaných...',
+'unwatching' => 'Odoberám zo zoznamu sledovaných...',
+'watcherrortext' => 'Vyskytla sa chyba poÄas zmeny nastavenia vášho zoznamu sledovaných pre „$1“.',
'enotif_mailer' => 'UpozorňovaÄ {{GRAMMAR:genitív|{{SITENAME}}}}',
'enotif_reset' => 'OznaÄiÅ¥ vÅ¡etky stránky ako „navÅ¡tívené“',
@@ -2160,28 +2217,29 @@ Ak budete chcieť neskôr stránku odstrániť zo sledovaných stránok, kliknit
'enotif_anon_editor' => 'anonymný používateľ $1',
'enotif_body' => 'Drahý $WATCHINGUSERNAME,
-na {{GRAMMAR:lokál|{{SITENAME}}}} došlo $PAGEEDITDATE k $CHANGEDORCREATED stránky $PAGETITLE používateľom $PAGEEDITOR, pozrite si aktuálnu verziu $PAGETITLE_URL .
+na {{GRAMMAR:lokál|{{SITENAME}}}} $CHANGEDORCREATED používateľ $PAGEEDITOR stránku $PAGETITLE, pozrite si aktuálnu verziu $PAGETITLE_URL .
$NEWPAGE
-Zhrnutie: $PAGESUMMARY $PAGEMINOREDIT
+Zhrnutie redaktora: $PAGESUMMARY $PAGEMINOREDIT
Kontaktujte používateľa:
-mail $PAGEEDITOR_EMAIL
-wiki $PAGEEDITOR_WIKI
+mail: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
-Nedostanete ÄalÅ¡ie upozornenia, aj ak bude stránka znovu upravovaná, kým nenavÅ¡tívíte túto stránku. Možete tiež vynulovaÅ¥ upozornenia pre vÅ¡etky vaÅ¡e sledované stránky.
+Nedostanete ÄalÅ¡ie upozornenia, aj ak bude stránka znovu upravovaná, kým nenavÅ¡tívite túto stránku.
+Možete tiež vynulovať upozornenia pre všetky vaše sledované stránky.
- Váš upozorňovací systém {{GRAMMAR:genitív|{{SITENAME}}}}
+Váš upozorňovací systém {{GRAMMAR:genitív|{{SITENAME}}}}
--
Zmeniť nastavenia vašich sledovaných stránok môžete na
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:Special:Watchlist/edit}}
Zmazať stránku z vášho zoznamu sledovaných môžete na
$UNWATCHURL
Návrhy a ÄalÅ¡ia pomoc:
-{{fullurl:{{int:Helppage}}}}',
+{{canonicalurl:{{int:Helppage}}}}',
# Delete
'deletepage' => 'Zmazať stránku',
@@ -2196,7 +2254,7 @@ Návrhy a ÄalÅ¡ia pomoc:
'confirmdeletetext' => 'Chystáte sa trvalo zmazaÅ¥ z databázy stránku alebo obrázok spolu so vÅ¡etkými jeho/jej predoÅ¡lými verziami. PotvrÄte, že máte v úmysle tak urobiÅ¥, že ste si vedomý následkov, a že to robíte v súlade so [[{{MediaWiki:Policy-url}}|zásadami a smernicami {{GRAMMAR:genitív|{{SITENAME}}}}]].',
'actioncomplete' => 'Úloha bola dokonÄená',
'actionfailed' => 'Operácia sa nepodarila',
-'deletedtext' => '"<nowiki>$1</nowiki>" bol zmazaný.
+'deletedtext' => '"$1" bol zmazaný.
Na $2 nájdete zoznam posledných zmazaní.',
'deletedarticle' => '„[[$1]]“ zmazaná',
'suppressedarticle' => 'potlaÄil „[[$1]]“',
@@ -2251,7 +2309,7 @@ Môžete si pozrieť aj [[Special:ProtectedPages|zoznam momentálne platných oc
'protect_expiry_invalid' => 'Neplatný Äas vyprÅ¡ania.',
'protect_expiry_old' => 'Čas vypršania je v minulosti.',
'protect-unchain-permissions' => 'Odomknúť ÄalÅ¡ie možnosti ochrany',
-'protect-text' => "Tu si môžete pozrieť a zmeniť úroveň ochrany stránky '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Tu si môžete pozrieť a zmeniť úroveň ochrany stránky '''$1'''.",
'protect-locked-blocked' => "Nemôžete meniť úroveň ochrany, kým ste zablokovaný.
Tu sú aktuálne nastavenia stránky '''$1''':",
'protect-locked-dblock' => "Nie je možné zmeniť úroveň ochrany z dôvodu aktívneho zámku databázy.
@@ -2306,9 +2364,8 @@ Tu sú aktuálne nastavenia stránky '''$1''':",
možno ju obnoviť|Tieto stránky boli zmazané, ale sú stále v archíve a
možno ich obnoviť}}. Archív môže byť pravidelne vyprázdnený.',
'undelete-fieldset-title' => 'Obnoviť revízie',
-'undeleteextrahelp' => "Ak chcete obnoviť celú stránku, nechajte všetky zaškrtávacie polia nezaškrtnuté a kliknite na '''''Obnoviť'''''.
-Ak chcete vykonať selektívnu obnovu, zašktrnite polia zodpovedajúce revíziám, ktoré sa majú obnoviť a kliknite na '''''Obnoviť'''''.
-Kliknutie na '''''Reset''''' vyÄistí pole s komentárom a vÅ¡etky zaÅ¡krtávacie polia.",
+'undeleteextrahelp' => "Ak chcete obnoviť celú stránku, nechajte všetky zaškrtávacie polia nezaškrtnuté a kliknite na '''''{{int:undeletebtn}}'''''.
+Ak chcete vykonať selektívnu obnovu, zašktrnite polia zodpovedajúce revíziám, ktoré sa majú obnoviť a kliknite na '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:verzia je archivovaná|verzie sú archivované|verzií je archivovaných}}',
'undeletehistory' => 'Ak obnovíte túto stránku, obnovia sa aj všetky predchádzajúce verzie do histórie predchádzajúcich verzií.
Ak bola od zmazania vytvorená nová stránka s rovnakým názvom, obnovené revízie sa objavia v histórii stránky.',
@@ -2348,9 +2405,12 @@ $1',
'undelete-show-file-submit' => 'Ãno',
# Namespace form on various pages
-'namespace' => 'Menný priestor:',
-'invert' => 'Invertovať výber',
-'blanknamespace' => '(Hlavný)',
+'namespace' => 'Menný priestor:',
+'invert' => 'Invertovať výber',
+'tooltip-invert' => 'Zaškrtnite, ak chcete skryť zmeny na stránkach vo vybranom mennom priestore (a súvisiaci menný priestor ak je zaškrtnuté)',
+'namespace_association' => 'Asociovaný menný priestor',
+'tooltip-namespace_association' => 'Zaškrtnite, ak chcete zahrnúť aj diskusné stránky alebo predmetový menný priestor spojený s vybraným menným priestorom',
+'blanknamespace' => '(Hlavný)',
# Contributions
'contributions' => 'Príspevky používateľa',
@@ -2399,13 +2459,15 @@ Nižšie si môžete pozrieť najnovšiu položku záznamu blokovaní:',
'whatlinkshere-filters' => 'Filtre',
# Block/unblock
+'autoblockid' => 'Autoblokovanie #$1',
+'block' => 'Zablokovať používateľa',
+'unblock' => 'Odblokovať používateľa',
'blockip' => 'Zablokovať používateľa',
'blockip-title' => 'Zablokovať používateľa',
'blockip-legend' => 'Zablokovať používateľa',
'blockiptext' => 'Použite tento formulár na zablokovanie možnosti zápisov uskutoÄnených z konkrétnej IP adresy alebo od používateľa.
Mali by ste to urobiť len v prípade bránenia vandalizmu a v súlade so [[{{MediaWiki:Policy-url}}|zásadami a smernicami {{GRAMMAR:genitív|{{SITENAME}}}}]].
Nižšie uveÄte konkrétny dôvod (napríklad uveÄte konkrétne stránky, ktoré padli za obeÅ¥ vandalizmu).',
-'ipaddress' => 'IP adresa:',
'ipadressorusername' => 'IP adresa/meno používateľa:',
'ipbexpiry' => 'UkonÄenie:',
'ipbreason' => 'Dôvod:',
@@ -2418,7 +2480,7 @@ Nižšie uveÄte konkrétny dôvod (napríklad uveÄte konkrétne stránky, ktor
** Zastrašujúce správanie/obťažovanie
** Zneužívanie viacerých úÄtov
** Neprípustné používateľské meno',
-'ipbanononly' => 'Blokovať iba anonymných používateľov.',
+'ipb-hardblock' => 'Zabrániť prihláseným používateľom upravovať z tejto IP adresy',
'ipbcreateaccount' => 'ZabrániÅ¥ vytváraniu úÄtov',
'ipbemailban' => 'Zabrániť používateľovi posielať emaily',
'ipbenableautoblock' => 'Automaticky blokovaÅ¥ poslednú IP adresu, ktorú tento používateľ použil, a vÅ¡etky ÄalÅ¡ie adresy, z ktorých sa pokúsi upravovaÅ¥.',
@@ -2429,12 +2491,15 @@ Nižšie uveÄte konkrétny dôvod (napríklad uveÄte konkrétne stránky, ktor
'ipbotherreason' => 'Iný/Äalší dôvod',
'ipbhidename' => 'Skryť meno používateľa z úprav a zoznamov',
'ipbwatchuser' => 'Sledovať používateľskú a diskusnú stránku tohto používateľa',
-'ipballowusertalk' => 'UmožniÅ¥ tomuto používateľovi upravovaÅ¥ vlastnú diskusnú stránku aj keÄ je zablokovaný.',
+'ipb-disableusertalk' => 'Zabrániť tomuto používateľovi upravovať vlastnú diskusnú stránku, kým je zablokovaný',
'ipb-change-block' => 'Znovu zablokovať používateľa s týmito voľbami',
+'ipb-confirm' => 'Potvrdiť blokovanie',
'badipaddress' => 'IP adresa má nesprávny formát.',
'blockipsuccesssub' => 'Zablokovanie bolo úspešné',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] bol zablokovaný.<br />
[[Special:IPBlockList|IP block list]] obsahuje zoznam blokovaní.',
+'ipb-blockingself' => 'Chystáte sa zablokovať sám seba! Ste si istí, že to chcete urobiť?',
+'ipb-confirmhideuser' => 'Chystáte sa zablokovaÅ¥ používateľa so zapnutou funkciou „skryÅ¥ používateľa“. Tým sa potlaÄí meno používateľa vo vÅ¡etkých zoznamoch a záznamoch. Ste si istí, že chcete urobiÅ¥?',
'ipb-edit-dropdown' => 'Upraviť dôvody pre blokovanie',
'ipb-unblock-addr' => 'Odblokovať $1',
'ipb-unblock' => 'Odblokovať používateľa alebo IP adresu',
@@ -2445,17 +2510,23 @@ Nižšie uveÄte konkrétny dôvod (napríklad uveÄte konkrétne stránky, ktor
z/od momentálne zablokovanej IP adresy/používateľa.',
'ipusubmit' => 'Zrušiť toto blokovanie',
'unblocked' => '[[User:$1|$1]] bol odblokovaný',
+'unblocked-range' => '$1 bol odblokovaný',
'unblocked-id' => 'Blokovanie $1 bolo odstránené',
+'blocklist' => 'Zablokovaní používatelia',
'ipblocklist' => 'Zablokovaní používatelia',
'ipblocklist-legend' => 'Nájsť zablokovaného používateľa',
-'ipblocklist-username' => 'Používateľské meno alebo IP adresa:',
-'ipblocklist-sh-userblocks' => '$1 zablokovaných úÄtov',
-'ipblocklist-sh-tempblocks' => '$1 doÄasných zablokovaní',
-'ipblocklist-sh-addressblocks' => '$1 zablokovaní jednotlivej IP adresy',
+'blocklist-userblocks' => 'SkryÅ¥ blokovania úÄtov',
+'blocklist-tempblocks' => 'SkryÅ¥ doÄasné blokovania',
+'blocklist-addressblocks' => 'Skryť blokovania jednotlivých IP',
+'blocklist-timestamp' => 'Časová známka',
+'blocklist-target' => 'Cieľ',
+'blocklist-expiry' => 'Vyprší',
+'blocklist-by' => 'Blokujúci správca',
+'blocklist-params' => 'Parametre blokovania',
+'blocklist-reason' => 'Dôvod',
'ipblocklist-submit' => 'Hľadať',
'ipblocklist-localblock' => 'Lokálne blokovanie',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Iný blok|Iné blokovania}}',
-'blocklistline' => '$1, $2 zablokoval $3 (ukonÄenie $4)',
'infiniteblock' => 'na neurÄito',
'expiringblock' => 'vyprší $1 $2',
'anononlyblock' => 'iba anon.',
@@ -2478,7 +2549,7 @@ Uvedený dôvod zablokovania používateľa $2 bol: „$2“',
'reblock-logentry' => 'zmenené voľby zablokovania používateľa [[$1]] s Äasom vyprÅ¡ania $2, $3',
'blocklogtext' => 'Toto je zoznam blokovaní a odblokovaní používateľov. Automaticky
blokované IP adresy nie sú zahrnuté. Pozri zoznam
-[[Special:IPBlockList|aktuálnych blokovaní]].',
+[[Special:BlockList|aktuálnych blokovaní]].',
'unblocklogentry' => 'odblokoval/a $1',
'block-log-flags-anononly' => 'iba anonymní používatelia',
'block-log-flags-nocreate' => 'možnosÅ¥ vytvoriÅ¥ si úÄet bola vypnutá',
@@ -2492,9 +2563,9 @@ blokované IP adresy nie sú zahrnuté. Pozri zoznam
'ipb_expiry_temp' => 'Blokovania skrytých používateľských mien by mali byť trvalé.',
'ipb_hide_invalid' => 'Nepodarilo sa potlaÄiÅ¥ tento úÄet; je možné, že má príliÅ¡ veľa úprav.',
'ipb_already_blocked' => '„$1“ je už zablokovaný',
-'ipb-needreblock' => '== Už je zablokovaný ==
-$1 je už zablokovaný. Chcete zmeniť voľby blokovania?',
+'ipb-needreblock' => '$1 je už zablokovaný. Chcete zmeniť voľby blokovania?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Iný blok|Iné blokovania}}',
+'unblock-hideuser' => 'Nemôžete odblokovať tohto používateľa, pretože jeho meno bolo skryté.',
'ipb_cant_unblock' => 'Chyba: ID bloku $1 nenájdený. Možno už bol odblokovaný.',
'ipb_blocked_as_range' => 'Chyba: IP adresa $1 nie je blokovaná priamo a nie je ju teda možné odblokovať. Je však blokovaná v rámci rozsahu $2, ktorý je možné odblokovať.',
'ip_range_invalid' => 'Neplatný IP rozsah.',
@@ -2535,6 +2606,7 @@ Nezabudnite po dokonÄení údržby [[Special:UnlockDB|odstrániÅ¥ zámok]].',
'unlockdbsuccesstext' => 'Databáza {{GRAMMAR:genitív|{{SITENAME}}}} bola odomknutá.',
'lockfilenotwritable' => 'Súbor, ktorý zamyká databázu nie je zapisovateľný. Aby bolo možné zamknúť Äi odomknúť databázu, je potrebné, aby doňho mohol web server zapisovaÅ¥.',
'databasenotlocked' => 'Databáza nie je zamknutá.',
+'lockedbyandtime' => '({{GENDER:$1|$1}}, $2 $3 )',
# Move page
'move-page' => 'Presunúť $1',
@@ -2665,7 +2737,7 @@ V druhom prípade môžete tiež použiť odkaz, napr. [[{{#Special:Export}}/{{M
'allmessagesdefault' => 'štandardný text',
'allmessagescurrent' => 'aktuálny text',
'allmessagestext' => 'Toto je zoznam všetkých správ dostupných v mennom priestore MediaWiki.
-Prosím, navštívte [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] a [http://translatewiki.net translatewiki.net] ak chcete prispieť k všeobecnej lokalizácii MediaWiki.',
+Prosím, navštívte [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] a [//translatewiki.net translatewiki.net] ak chcete prispieť k všeobecnej lokalizácii MediaWiki.',
'allmessagesnotsupportedDB' => "Túto stránku nemožno použiť, pretože '''\$wgUseDatabaseMessages''' je vypnuté.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filter podľa stavu prispôsobenia:',
@@ -2830,9 +2902,7 @@ Umožnuje do zhrnutia pridanie dôvodu.',
'vector.js' => '/* Tu sa nachádzajúci JavaScript sa naÄíta používateľom vzhľadu Vector */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadáta pre tento server vypnuté.',
-'nocreativecommons' => 'Creative Commons RDF metadata pre tento server vypnuté.',
-'notacceptable' => 'Wiki server nedokáže poskytovaÅ¥ dáta vo formáte, v akom ich váš klient vie ÄítaÅ¥.',
+'notacceptable' => 'Wiki server nedokáže poskytovaÅ¥ dáta vo formáte, v akom ich váš klient vie ÄítaÅ¥.',
# Attribution
'anonymous' => '$1 {{PLURAL:$1|anonymný používateľ|anonymní používatelia|anonymných používateľov}} {{GRAMMAR:genitív|{{SITENAME}}}}',
@@ -2856,12 +2926,17 @@ Pravdepodobne to spôsobil odkaz na externú internetovú lokalitu, ktorá sa na
'spam_blanking' => 'Všetky revízie obsahovali odkaz na $1, odstraňujem obsah',
# Info page
-'infosubtitle' => 'Informácie o stránke',
-'numedits' => 'PoÄet úprav (stránka): $1',
-'numtalkedits' => 'PoÄet úprav (diskusná stránka): $1',
-'numwatchers' => 'PoÄet zobrazení: $1',
-'numauthors' => 'PoÄet odliÅ¡ných autorov (stránka): $1',
-'numtalkauthors' => 'PoÄet odliÅ¡ných autorov (diskusná stránka): $1',
+'pageinfo-title' => 'Informácie o „$1“',
+'pageinfo-header-edits' => 'Úpravy',
+'pageinfo-header-watchlist' => 'Sledované stránky',
+'pageinfo-header-views' => 'Zobrazení',
+'pageinfo-subjectpage' => 'Stránka',
+'pageinfo-talkpage' => 'Diskusná stránka',
+'pageinfo-watchers' => 'PoÄet sledovateľov',
+'pageinfo-edits' => 'PoÄet úprav',
+'pageinfo-authors' => 'PoÄet rôznych autorov',
+'pageinfo-views' => 'PoÄet zobrazení',
+'pageinfo-viewsperedit' => 'Zobrazení na úpravu',
# Skin names
'skinname-standard' => 'Klasický',
@@ -2873,25 +2948,6 @@ Pravdepodobne to spôsobil odkaz na externú internetovú lokalitu, ktorá sa na
'skinname-simple' => 'Jednoduchý',
'skinname-modern' => 'Moderný',
-# Math options
-'mw_math_png' => 'Vždy vykresľovať PNG',
-'mw_math_simple' => 'Na jednoduché použiť HTML, inak PNG',
-'mw_math_html' => 'Ak sa dá, použiť HTML, inak PNG',
-'mw_math_source' => 'PonechaÅ¥ TeX (pre textové prehliadaÄe)',
-'mw_math_modern' => 'OdporúÄané pre moderné prehliadaÄe',
-'mw_math_mathml' => 'MathML (experimentálne)',
-
-# Math errors
-'math_failure' => 'Syntaktická analýza (parsing) neúspešná',
-'math_unknown_error' => 'neznáma chyba',
-'math_unknown_function' => 'neznáma funkcia',
-'math_lexing_error' => 'lexikálna chyba',
-'math_syntax_error' => 'syntaktická chyba',
-'math_image_error' => 'PNG konverzia neúspešná; skontrolujte správnosť inštalácie programov: latex a dvipng (alebo dvips + gs + convert)',
-'math_bad_tmpdir' => 'Nemožno zapisovaÅ¥ alebo vytvoriÅ¥ doÄasný matematický adresár',
-'math_bad_output' => 'Nemožno zapisovať alebo vytvoriť výstupný matematický adresár',
-'math_notexvc' => 'Chýbajúci program texvc; konfigurácia je popísaná v math/README.',
-
# Patrolling
'markaspatrolleddiff' => 'OznaÄiÅ¥ ako stráženú',
'markaspatrolledtext' => 'OznaÄiÅ¥ túto stránku ako stráženú',
@@ -2927,22 +2983,25 @@ $1',
'nextdiff' => 'Ďalšia úprava →',
# Media information
-'mediawarning' => "'''Upozornenie''': Tento súbor môže obsahovaÅ¥ nebezpeÄný programový kód.
+'mediawarning' => "'''Upozornenie''': Tento súbor môže obsahovaÅ¥ nebezpeÄný programový kód.
Jeho spustením môžete kompromitovať svoj systém.",
-'imagemaxsize' => "Obmedziť veľkosť obrázka:<br />''(na popisnej stránke súboru)''",
-'thumbsize' => 'Veľkosť náhľadu:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stránka|stránky|stránok}}',
-'file-info' => 'veľkosť súboru: $1, MIME typ: $2',
-'file-info-size' => '$1 × $2 pixelov, veľkosť súboru: $3, MIME typ: $4',
-'file-nohires' => '<small>Nie je dostupné vyššie rozlíšenie.</small>',
-'svg-long-desc' => 'SVG súbor, $1 × $2 pixelov, veľkosť súboru: $3',
-'show-big-image' => 'Obrázok vo vyššom rozlíšení',
-'show-big-image-thumb' => '<small>Veľkosť tohto náhľadu: $1 × $2 pixelov</small>',
-'file-info-gif-looped' => 'v cykle',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|rámec|rámce|rámcov}}',
-'file-info-png-looped' => 'opakované',
-'file-info-png-repeat' => 'prehrané $1-krát{{PLURAL:$1|||}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|rámec|rámce|rámcov}}',
+'imagemaxsize' => "Obmedziť veľkosť obrázka:<br />''(na popisnej stránke súboru)''",
+'thumbsize' => 'Veľkosť náhľadu:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stránka|stránky|stránok}}',
+'file-info' => 'veľkosť súboru: $1, MIME typ: $2',
+'file-info-size' => '$1 × $2 pixelov, veľkosť súboru: $3, MIME typ: $4',
+'file-info-size-pages' => '$1 × $2 pixlov, veľkosť súboru: $3, typ MIME: $4, $5 {{PLURAL:$5|stránka|stránky|stránok}}',
+'file-nohires' => '<small>Nie je dostupné vyššie rozlíšenie.</small>',
+'svg-long-desc' => 'SVG súbor, $1 × $2 pixelov, veľkosť súboru: $3',
+'show-big-image' => 'Obrázok vo vyššom rozlíšení',
+'show-big-image-preview' => '<small>Veľkosť tohto náhľadu: $1.</small>',
+'show-big-image-other' => '<small>Iné rozlíšenia: $1.</small>',
+'show-big-image-size' => '$1 × $2 pixlov',
+'file-info-gif-looped' => 'v cykle',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|rámec|rámce|rámcov}}',
+'file-info-png-looped' => 'opakované',
+'file-info-png-repeat' => 'prehrané $1-krát{{PLURAL:$1|||}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|rámec|rámce|rámcov}}',
# Special:NewFiles
'newimages' => 'Galéria nových obrázkov',
@@ -2967,14 +3026,21 @@ Každý Äalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. Älánk
'metadata-help' => 'Tento súbor obsahuje ÄalÅ¡ie informácie, pravdepodobne pochádzajúce z digitálneho fotoaparátu Äi skenera, ktorý ho vytvoril alebo digitalizoval. Ak bol súbor zmenený, niektoré podrobnosti sa nemusia plne zhodovaÅ¥ so zmeneným súborom.',
'metadata-expand' => 'Zobraziť detaily EXIF',
'metadata-collapse' => 'Skryť detaily EXIF',
-'metadata-fields' => 'Polia EXIF metadát uvedených v tejto správe sa zobrazia na stránke obrázka vtedy, keÄ je tabuľka metadát zbalená. Ostatné sa Å¡tandardne nezobrazia.
+'metadata-fields' => 'Metadáta obrázka uvedené v tejto správe budú zahrnuté na stránke obrázka, keÄ je tabuľka metadát zbalená.
+Ostatné budú predvolene skryté.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Šírka',
@@ -2989,13 +3055,11 @@ Každý Äalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. Älánk
'exif-ycbcrpositioning' => 'Poloha Y a C',
'exif-xresolution' => 'Horizontálne rozlíšenie',
'exif-yresolution' => 'Vertikálne rozlíšenie',
-'exif-resolutionunit' => 'Jednotky horizontálneho a verikálneho rozlíšenia',
'exif-stripoffsets' => 'Umiestnenie obrazových dát',
'exif-rowsperstrip' => 'PoÄet riadkov na pás',
'exif-stripbytecounts' => 'Bajtov na komprimovaný prúžok',
'exif-jpeginterchangeformat' => 'Offset k JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytov JPEG dát',
-'exif-transferfunction' => 'Prenosová funkcia',
'exif-whitepoint' => 'Chromaticita bieleho bodu',
'exif-primarychromaticities' => 'Chromaticity primárností',
'exif-ycbcrcoefficients' => 'Koeficienty transformaÄnej matice farebného priestoru',
@@ -3014,7 +3078,6 @@ Každý Äalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. Älánk
'exif-compressedbitsperpixel' => 'Komprimované bity na pixel',
'exif-pixelydimension' => 'Šírka obrázka',
'exif-pixelxdimension' => 'Výška obrázka',
-'exif-makernote' => 'Poznámka výrobcu',
'exif-usercomment' => 'Komentár používateľa',
'exif-relatedsoundfile' => 'Súvisiaci zvukový súbor',
'exif-datetimeoriginal' => 'Dátum a Äas vytvorenia dát',
@@ -3028,7 +3091,6 @@ Každý Äalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. Älánk
'exif-exposureprogram' => 'ExpoziÄný program',
'exif-spectralsensitivity' => 'Spektrálna citlivosť',
'exif-isospeedratings' => 'Rýchlostné ohodnotenie ISO',
-'exif-oecf' => 'Optoelektronický konverzný Äiniteľ',
'exif-shutterspeedvalue' => 'Rýchlosť uzávierky APEX',
'exif-aperturevalue' => 'Clona APEX',
'exif-brightnessvalue' => 'Jas APEX',
@@ -3041,7 +3103,6 @@ Každý Äalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. Älánk
'exif-focallength' => 'Ohnisková vzdialenosť objektívu',
'exif-subjectarea' => 'Oblasť subjektu',
'exif-flashenergy' => 'Energia blesku',
-'exif-spatialfrequencyresponse' => 'Priestorová frekvenÄná odozva',
'exif-focalplanexresolution' => 'Horizontálne rozlíšenie ohniskovej roviny',
'exif-focalplaneyresolution' => 'Vertikálne rozlíšenie ohniskovej roviny',
'exif-focalplaneresolutionunit' => 'Jednotka rozlíšenia v ohniskovej rovine',
@@ -3050,7 +3111,6 @@ Každý Äalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. Älánk
'exif-sensingmethod' => 'Snímacia metóda',
'exif-filesource' => 'Zdroj súboru',
'exif-scenetype' => 'Typ scény',
-'exif-cfapattern' => 'Vzor CFA',
'exif-customrendered' => 'RuÄné spracovanie obrazu',
'exif-exposuremode' => 'ExpoziÄný režim',
'exif-whitebalance' => 'Vyváženie bielej',
@@ -3095,10 +3155,79 @@ Každý Äalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. Älánk
'exif-gpsareainformation' => 'Názov GPS oblasti',
'exif-gpsdatestamp' => 'Dátum GPS',
'exif-gpsdifferential' => 'Diferenciálna korekcia GPS',
+'exif-jpegfilecomment' => 'Komentár súboru JPEG',
+'exif-keywords' => 'KľúÄové slová',
+'exif-worldregioncreated' => 'Oblasť sveta, kde snímka bola zhotovená',
+'exif-countrycreated' => 'Krajina, v ktorej snímka bola zhotovená',
+'exif-countrycodecreated' => 'Kód krajiny, v ktorej snímka bola zhotovená',
+'exif-provinceorstatecreated' => 'Štát alebo región, v ktorom snímka bola zhotovená',
+'exif-citycreated' => 'Mesto, v ktorom snímka bola zhotovená',
+'exif-sublocationcreated' => 'Časť mesta, v ktorej snímka bola zhotovená',
+'exif-worldregiondest' => 'Oblasť sveta zobrazená',
+'exif-countrydest' => 'Krajina zobrazená',
+'exif-countrycodedest' => 'Kód krajiny zobrazený',
+'exif-provinceorstatedest' => 'Štát alebo región zobrazený',
+'exif-citydest' => 'Mesto zobrazené',
+'exif-sublocationdest' => 'Časť mesta zobrazená',
'exif-objectname' => 'Krátky názov',
+'exif-specialinstructions' => 'Osobitné pokyny',
+'exif-headline' => 'Nadpis',
+'exif-credit' => 'Autor/poskytovateľ',
+'exif-source' => 'Zdroj',
+'exif-editstatus' => 'RedakÄný stav obrázka',
+'exif-urgency' => 'Naliehavosť',
+'exif-fixtureidentifier' => 'Názov pevného umiestnenia',
+'exif-locationdest' => 'Zobrazené miesto',
+'exif-locationdestcode' => 'Kód zobrazeného miesta',
+'exif-objectcycle' => 'Denná doba, pre ktorú je médium urÄené',
+'exif-contact' => 'Kontaktné informácie',
+'exif-writer' => 'Autor nadpisu',
+'exif-languagecode' => 'Jazyk',
+'exif-iimversion' => 'Verzia IIM',
+'exif-iimcategory' => 'Kategória',
+'exif-iimsupplementalcategory' => 'Doplnkové kategórie',
+'exif-datetimeexpires' => 'Nepoužívať po',
+'exif-datetimereleased' => 'Najskoršie uvoľnenie',
+'exif-originaltransmissionref' => 'Pôvodný kód miesta prenosu',
+'exif-identifier' => 'Identifikátor',
+'exif-lens' => 'Použitý objektív',
+'exif-serialnumber' => 'Sériové Äíslo fotoaparátu',
+'exif-cameraownername' => 'Vlastník fotoaparátu',
+'exif-label' => 'OznaÄenie',
+'exif-datetimemetadata' => 'Dátum poslednej úpravy metadát',
+'exif-nickname' => 'Neformálny názov obrázka',
+'exif-rating' => 'Hodnotenie (z 5)',
+'exif-rightscertificate' => 'Certifikát riadenia oprávnení',
+'exif-copyrighted' => 'Stav autorských práv',
+'exif-copyrightowner' => 'Držiteľ autorských práv',
+'exif-usageterms' => 'Podmienky použitia',
+'exif-webstatement' => 'Vyhlásenie o autorských právach online',
+'exif-originaldocumentid' => 'JedineÄný identifikátor pôvodného dokumentu',
+'exif-licenseurl' => 'URL licencie podľa autorského práva',
+'exif-morepermissionsurl' => 'Informácie o alternatívnom licencovaní',
+'exif-attributionurl' => 'Pri opätovnom použití tohto diela, prosím, uvádzajte odkaz na',
+'exif-preferredattributionname' => 'Pri opätovnom použití tohto diela, prosím, uveÄte ako autora',
+'exif-pngfilecomment' => 'Komentár súboru PNG',
+'exif-disclaimer' => 'VylúÄenie zodpovednosti',
+'exif-contentwarning' => 'Upozornenie o obsahu',
+'exif-giffilecomment' => 'Komentár súboru GIF',
+'exif-intellectualgenre' => 'Typ položky',
+'exif-subjectnewscode' => 'Kód predmetu',
+'exif-scenecode' => 'IPTC kód scény',
+'exif-event' => 'Zobrazená udalosť',
+'exif-organisationinimage' => 'Zobrazená organizácia',
+'exif-personinimage' => 'Zobrazená osoba',
+'exif-originalimageheight' => 'Výška obrázka pred orezaním',
+'exif-originalimagewidth' => 'Šírka obrázka pred orezaním',
# EXIF attributes
'exif-compression-1' => 'Bez kompresie',
+'exif-compression-2' => 'CCITT Group 3 1-rozmerné modifikované Huffmanovo kódovanie RLE',
+'exif-compression-3' => 'CCITT Group 3 faxové kódovanie',
+'exif-compression-4' => 'CCITT Group 4 faxové kódovanie',
+
+'exif-copyrighted-true' => 'Chránené autorským právom',
+'exif-copyrighted-false' => 'Voľné dielo',
'exif-unknowndate' => 'Neznámy dátum',
@@ -3114,6 +3243,8 @@ Každý Äalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. Älánk
'exif-planarconfiguration-1' => 'masívny formát',
'exif-planarconfiguration-2' => 'rovinný formát',
+'exif-colorspace-65535' => 'Nekalibrované',
+
'exif-componentsconfiguration-0' => 'neexistuje',
'exif-exposureprogram-0' => 'Nedefinovaný',
@@ -3227,6 +3358,10 @@ Každý Äalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. Älánk
'exif-gpslongitude-e' => 'Východná dĺžka',
'exif-gpslongitude-w' => 'Západná dĺžka',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|metre|metrov}} nad hladinou mora',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|metre|metrov}} pod hladinou mora',
+
'exif-gpsstatus-a' => 'Prebieha meranie',
'exif-gpsstatus-v' => 'Interoperabilita merania',
@@ -3238,21 +3373,73 @@ Každý Äalší odkaz na rovnakom riadku sa považuje za výnimku, t.j. Älánk
'exif-gpsspeed-m' => 'Míľ za hodinu',
'exif-gpsspeed-n' => 'Uzlov',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometrov',
+'exif-gpsdestdistance-m' => 'Míľ',
+'exif-gpsdestdistance-n' => 'Námorných míľ',
+
+'exif-gpsdop-excellent' => 'Vynikajúca ($1)',
+'exif-gpsdop-good' => 'Dobrá ( $1 )',
+'exif-gpsdop-moderate' => 'Stredná ( $1 )',
+'exif-gpsdop-fair' => 'DostatoÄná ($1)',
+'exif-gpsdop-poor' => 'Slabá ($1)',
+
+'exif-objectcycle-a' => 'Iba dopoludnia',
+'exif-objectcycle-p' => 'Iba popoludní',
+'exif-objectcycle-b' => 'Dopoludnia aj popoludní',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'SkutoÄný smer',
'exif-gpsdirection-m' => 'Magnetický smer',
+'exif-ycbcrpositioning-1' => 'Vystrednené',
+'exif-ycbcrpositioning-2' => 'Umiestnené spolu',
+
+'exif-dc-contributor' => 'Prispievatelia',
+'exif-dc-coverage' => 'Priestorový alebo Äasový rozsah média',
+'exif-dc-date' => 'Dátum(y)',
+'exif-dc-publisher' => 'Vydavateľ',
+'exif-dc-relation' => 'Súvisiace médiá',
+'exif-dc-rights' => 'Práva',
+'exif-dc-source' => 'Zdrojové médiá',
+'exif-dc-type' => 'Typ média',
+
+'exif-rating-rejected' => 'Odmietnuté',
+
+'exif-isospeedratings-overflow' => 'VäÄÅ¡ia ako 65535',
+
+'exif-iimcategory-ace' => 'Umenie, kultúra a zábava',
+'exif-iimcategory-clj' => 'ZloÄin a zákon',
+'exif-iimcategory-dis' => 'Katastrofy a nehody',
+'exif-iimcategory-fin' => 'Ekonómia a podnikanie',
+'exif-iimcategory-edu' => 'Vzdelávanie',
+'exif-iimcategory-evn' => 'Životné prostredie',
+'exif-iimcategory-hth' => 'Zdravie',
+'exif-iimcategory-hum' => 'Ľudské záujmy',
+'exif-iimcategory-lab' => 'Práca',
+'exif-iimcategory-lif' => 'Životný Å¡týl a voľný Äas',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Náboženstvo a viera',
+'exif-iimcategory-sci' => 'Veda a technika',
+'exif-iimcategory-soi' => 'Sociálne otázky',
+'exif-iimcategory-spo' => 'Å port',
+'exif-iimcategory-war' => 'Vojny, konflikty a nepokoje',
+'exif-iimcategory-wea' => 'PoÄasie',
+
+'exif-urgency-normal' => 'Normálna ($1)',
+'exif-urgency-low' => 'Nízka ( $1 )',
+'exif-urgency-high' => 'Vysoká ( $1 )',
+'exif-urgency-other' => 'Používateľom definovaná priorita ($1)',
+
# External editor support
'edit-externally' => 'Upraviť tento súbor pomocou externého programu',
-'edit-externally-help' => '(Viac informácií poskytnú inštrukcie pre nastavenie [http://www.mediawiki.org/wiki/Manual:External_editors externého editora])',
+'edit-externally-help' => '(Viac informácií poskytnú inštrukcie pre nastavenie [//www.mediawiki.org/wiki/Manual:External_editors externého editora])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'všetky',
-'imagelistall' => 'všetky',
-'watchlistall2' => 'všetky',
-'namespacesall' => 'všetky',
-'monthsall' => 'všetky',
-'limitall' => 'všetky',
+'watchlistall2' => 'všetky',
+'namespacesall' => 'všetky',
+'monthsall' => 'všetky',
+'limitall' => 'všetky',
# E-mail address confirmation
'confirmemail' => 'Potvrdiť e-mailovú adresu',
@@ -3338,17 +3525,24 @@ $1',
'trackbackdeleteok' => 'Trackback úspešne zmazaný.',
# Delete conflict
-'deletedwhileediting' => "'''Upozornenie''': Táto stránka bola zmazaná potom ako ste zaÄali s jej úpravami!",
-'confirmrecreate' => "Používateľ [[User:$1|$1]] ([[User talk:$1|diskusia]]) zmazal túto stránku potom, ako ste ju zaÄali upravovaÅ¥, s odôvodnením:
+'deletedwhileediting' => "'''Upozornenie''': Táto stránka bola zmazaná potom ako ste zaÄali s jej úpravami!",
+'confirmrecreate' => "Používateľ [[User:$1|$1]] ([[User talk:$1|diskusia]]) zmazal túto stránku potom, ako ste ju zaÄali upravovaÅ¥, s odôvodnením:
: ''$2''
Prosím, potvrÄte, že túto stránku chcete skutoÄne znovu vytvoriÅ¥.",
-'recreate' => 'Znova vytvoriť',
+'confirmrecreate-noreason' => 'Používateľ [[User:$1|$1]] ([[User talk:$1|diskusia]]) zmazal túto stránku potom, ako ste ju zaÄali upravovaÅ¥. Prosím, potvrÄte, že túto stránku chcete skutoÄne znovu vytvoriÅ¥.',
+'recreate' => 'Znova vytvoriť',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'VyÄistiÅ¥ vyrovnávaciu pamäť (cache) tejto stránky?',
'confirm-purge-bottom' => 'VyÄistenie stránky vymaže vyrovnávaciu pamäť a vynúti zobrazenie najnovÅ¡ej verzie.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Pridať túto stránku do vášho zoznamu sledovaných?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Odstrániť túto stránku z vášho zoznamu sledovaných?',
+
# Multipage image navigation
'imgmultipageprev' => '&larr; predošlá stránka',
'imgmultipagenext' => 'ÄalÅ¡ia stránka &rarr;',
@@ -3391,7 +3585,7 @@ Skúste obyÄajný náhľad.',
'watchlistedit-normal-title' => 'Upraviť zoznam sledovaných stránok',
'watchlistedit-normal-legend' => 'Odstrániť všetky stránky zo zoznamu sledovaných stránok',
'watchlistedit-normal-explain' => 'Nižšie sú zobrazené stránky z vášho zoznamu sledovaných stránok.
-Ak chcete odstrániÅ¥ položku, zaÄiarknite políÄko vedľa nej a kliknite na „{{int:Watchlistedit-normal-submit}}“. Tiež môžete [[Special:Watchlist/raw|upravovaÅ¥ nespracovaný zoznam]].',
+Ak chcete odstrániÅ¥ položku, zaÄiarknite políÄko vedľa nej a kliknite na „{{int:Watchlistedit-normal-submit}}“. Tiež môžete [[Special:EditWatchlist/raw|upravovaÅ¥ nespracovaný zoznam]].',
'watchlistedit-normal-submit' => 'Odstrániť položky',
'watchlistedit-normal-done' => '{{PLURAL:$1|jedna položka bola odstránená|$1 položky boli odstránené|$1 položiek bolo odstránených}} z vášho zoznamu sledovaných stránok:',
'watchlistedit-raw-title' => 'Upravovať nespracovaný zoznam sledovaných stránok',
@@ -3399,7 +3593,7 @@ Ak chcete odstrániÅ¥ položku, zaÄiarknite políÄko vedľa nej a kliknite na
'watchlistedit-raw-explain' => 'Nižšie sú zobrazené stránky z vášho zoznamu sledovaných stránok.
Ak chcete upravovať položky, pridajte alebo odstráňte ich zo zoznamu tak, aby na každom riadku bola práve jedna.
Po skonÄení kliknite na „{{int:Watchlistedit-raw-submit}}“.
-Tiež môžete [[Special:Watchlist/edit|použiť štandardný editor]].',
+Tiež môžete [[Special:EditWatchlist|použiť štandardný editor]].',
'watchlistedit-raw-titles' => 'Stránky:',
'watchlistedit-raw-submit' => 'Aktualizovať zoznam sledovaných stránok',
'watchlistedit-raw-done' => 'Váš zoznam sledovaných stránok bol aktualizovaný.',
@@ -3419,60 +3613,58 @@ Tiež môžete [[Special:Watchlist/edit|použiť štandardný editor]].',
'duplicate-defaultsort' => 'Upozornenie: Å tandardný kláves na zoraÄovanie „$2“ nahrádza starý kláves „$1“.',
# Special:Version
-'version' => 'Verzia',
-'version-extensions' => 'Nainštalované rozšírenia',
-'version-specialpages' => 'Špeciálne stránky',
-'version-parserhooks' => 'Prípojné body syntaktického analyzátora',
-'version-variables' => 'Premenné',
-'version-skins' => 'Témy vzhľadu',
-'version-other' => 'Iné',
-'version-mediahandlers' => 'Obsluha multimédií',
-'version-hooks' => 'Prípojné body',
-'version-extension-functions' => 'Rozširujúce funkcie',
-'version-parser-extensiontags' => 'RozÅ¡irujúce znaÄky syntaxe',
-'version-parser-function-hooks' => 'Prípojné body funkcií syntaktického analyzátora',
-'version-skin-extension-functions' => 'Rozširujúce funkcie vzhľadu',
-'version-hook-name' => 'Názov prípojného bodu',
-'version-hook-subscribedby' => 'Pripojené',
-'version-version' => '(Verzia $1)',
-'version-license' => 'Licencia',
-'version-poweredby-credits' => "Táto wiki beží na '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'Äalší',
-'version-license-info' => 'MediaWiki je slobodný softvér; môžete ho šíriÅ¥ a / alebo modifikovaÅ¥ podľa podmienok GNU General Public License, ktorú vydala Free Software Foundation; a to buÄ verzie 2 tejto licencie alebo (podľa vášho uváženia) ktorejkoľvek neskorÅ¡ej verzie.
+'version' => 'Verzia',
+'version-extensions' => 'Nainštalované rozšírenia',
+'version-specialpages' => 'Špeciálne stránky',
+'version-parserhooks' => 'Prípojné body syntaktického analyzátora',
+'version-variables' => 'Premenné',
+'version-antispam' => 'Ochranu proti spamu',
+'version-skins' => 'Témy vzhľadu',
+'version-other' => 'Iné',
+'version-mediahandlers' => 'Obsluha multimédií',
+'version-hooks' => 'Prípojné body',
+'version-extension-functions' => 'Rozširujúce funkcie',
+'version-parser-extensiontags' => 'RozÅ¡irujúce znaÄky syntaxe',
+'version-parser-function-hooks' => 'Prípojné body funkcií syntaktického analyzátora',
+'version-hook-name' => 'Názov prípojného bodu',
+'version-hook-subscribedby' => 'Pripojené',
+'version-version' => '(Verzia $1)',
+'version-license' => 'Licencia',
+'version-poweredby-credits' => "Táto wiki beží na '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'Äalší',
+'version-license-info' => 'MediaWiki je slobodný softvér; môžete ho šíriÅ¥ a / alebo modifikovaÅ¥ podľa podmienok GNU General Public License, ktorú vydala Free Software Foundation; a to buÄ verzie 2 tejto licencie alebo (podľa vášho uváženia) ktorejkoľvek neskorÅ¡ej verzie.
MediaWiki je šírený v nádeji, že bude užitoÄný, avÅ¡ak BEZ AKEJKOĽVEK ZÃRUKY; neposkytujú sa ani implicitné záruky PREDAJNOSTI alebo VHODNOSTI NA URÄŒITà ÚČEL. ÄŽalÅ¡ie informácie nájdete v GNU General Public License.
-Spolu s týmto programom by ste obdržaÅ¥ [{{SERVER}}{{SCRIPTPATH}}/COPYING kópiu GNU General Public License]. Ak nie, napíšte na adresu Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA alebo [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html si ju preÄítajte online].',
-'version-software' => 'Nainštalovaný softvér',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Verzia',
+Spolu s týmto programom by ste obdržaÅ¥ [{{SERVER}}{{SCRIPTPATH}}/COPYING kópiu GNU General Public License]. Ak nie, napíšte na adresu Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA alebo [//www.gnu.org/licenses/old-licenses/gpl-2.0.html si ju preÄítajte online].',
+'version-software' => 'Nainštalovaný softvér',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Verzia',
# Special:FilePath
'filepath' => 'Cesta k súboru',
'filepath-page' => 'Súbor:',
'filepath-submit' => 'Vykonať',
'filepath-summary' => 'Táto špeciálna stránka vráti úplnú cestu k súboru.
-Obrázky sa zobrazia v plnom rozlíšení, ostatné typy súborov sa spustia v príslušnom priradenom programe.
-
-Zadajte názov súboru bez predpony „{{ns:file}}:“.',
+Obrázky sa zobrazia v plnom rozlíšení, ostatné typy súborov sa spustia v príslušnom priradenom programe.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Hľadať duplicitné súbory',
-'fileduplicatesearch-summary' => 'Hľadanie duplicitných súborov na základe ich haš hodnôt.
-
-Zadajte názov súboru bez predpony „{{ns:file}}:“.',
-'fileduplicatesearch-legend' => 'Hľadať duplicity',
-'fileduplicatesearch-filename' => 'Názov súboru:',
-'fileduplicatesearch-submit' => 'Hľadať',
-'fileduplicatesearch-info' => '$1 × $2 pixelov<br />Veľkosť súboru: $3<br />Typ MIME: $4',
-'fileduplicatesearch-result-1' => 'Súbor „$1“ nemá žiadny identický duplikát.',
-'fileduplicatesearch-result-n' => 'Súbor „$1“ má {{PLURAL:$2|1 identický duplikát|$2 identické duplikáty|$2 identických duplikátov}}.',
+'fileduplicatesearch' => 'Hľadať duplicitné súbory',
+'fileduplicatesearch-summary' => 'Hľadanie duplicitných súborov na základe ich haš hodnôt.',
+'fileduplicatesearch-legend' => 'Hľadať duplicity',
+'fileduplicatesearch-filename' => 'Názov súboru:',
+'fileduplicatesearch-submit' => 'Hľadať',
+'fileduplicatesearch-info' => '$1 × $2 pixelov<br />Veľkosť súboru: $3<br />Typ MIME: $4',
+'fileduplicatesearch-result-1' => 'Súbor „$1“ nemá žiadny identický duplikát.',
+'fileduplicatesearch-result-n' => 'Súbor „$1“ má {{PLURAL:$2|1 identický duplikát|$2 identické duplikáty|$2 identických duplikátov}}.',
+'fileduplicatesearch-noresults' => 'Súbor s názvom „$1“ nebol nájdený.',
# Special:SpecialPages
'specialpages' => 'Špeciálne stránky',
'specialpages-note' => '----
* Bežné špeciálne stránky.
-* <strong class="mw-specialpagerestricted">Špeciálne stránky s obmedzeným prístupom.</strong>',
+* <strong class="mw-specialpagerestricted">Špeciálne stránky s obmedzeným prístupom.</strong>
+* <span class="mw-specialpagecached">Špeciálne stránky vo vyrovnávacej pamäti (môže byť neaktuálne).</span>',
'specialpages-group-maintenance' => 'Údržbové správy',
'specialpages-group-other' => 'Iné špeciálne stránky',
'specialpages-group-login' => 'Prihlásenie / registrácia',
diff --git a/languages/messages/MessagesSl.php b/languages/messages/MessagesSl.php
index 4240b97f..21a39e0f 100644
--- a/languages/messages/MessagesSl.php
+++ b/languages/messages/MessagesSl.php
@@ -37,78 +37,78 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'DvojnePreusmeritve' ),
+ 'Activeusers' => array( 'AktivniUporabniki' ),
+ 'Allmessages' => array( 'VsaSporoÄila' ),
+ 'Allpages' => array( 'VseStrani' ),
+ 'Ancientpages' => array( 'StarodavneStrani' ),
+ 'Blankpage' => array( 'PraznaStran' ),
+ 'Block' => array( 'Blokiraj', 'BlokirajIP', 'BlokirajUporabnika' ),
+ 'Blockme' => array( 'BlokirajMe' ),
+ 'Booksources' => array( 'ViriKnjig' ),
'BrokenRedirects' => array( 'PretrganePreusmeritve' ),
- 'Disambiguations' => array( 'RazloÄitve' ),
- 'Userlogin' => array( 'Prijava' ),
- 'Userlogout' => array( 'Odjava' ),
+ 'Categories' => array( 'Kategorije' ),
+ 'ChangePassword' => array( 'SpremeniGeslo', 'PonastaviGeslo' ),
+ 'Contributions' => array( 'Prispevki' ),
'CreateAccount' => array( 'Registracija' ),
- 'Preferences' => array( 'Nastavitve' ),
- 'Watchlist' => array( 'SpisekNadzorov' ),
- 'Recentchanges' => array( 'ZadnjeSpremembe' ),
- 'Upload' => array( 'Nalaganje' ),
+ 'DeletedContributions' => array( 'IzbrisaniPrispevki' ),
+ 'Disambiguations' => array( 'RazloÄitve' ),
+ 'DoubleRedirects' => array( 'DvojnePreusmeritve' ),
+ 'Export' => array( 'Izvozi' ),
+ 'Fewestrevisions' => array( 'NajmanjRedakcij' ),
+ 'Filepath' => array( 'PotDatoteke' ),
+ 'Import' => array( 'Uvoz' ),
+ 'Listadmins' => array( 'SeznamAdministratorjev' ),
+ 'Listbots' => array( 'SeznamBotov' ),
'Listfiles' => array( 'SeznamDatotek', 'SeznamSlik' ),
- 'Newimages' => array( 'NoveDatoteke', 'NoveSlike' ),
- 'Listusers' => array( 'SeznamUporabnikov' ),
'Listgrouprights' => array( 'SeznamPravicSkupin' ),
- 'Statistics' => array( 'Statistika' ),
- 'Randompage' => array( 'NakljuÄno', 'NakljuÄnaStran' ),
+ 'Listusers' => array( 'SeznamUporabnikov' ),
+ 'Log' => array( 'Dnevnik', 'Dnevniki' ),
'Lonelypages' => array( 'OsiroteleStrani' ),
- 'Uncategorizedpages' => array( 'NekategoriziraneStrani' ),
- 'Uncategorizedcategories' => array( 'NekategoriziraneKategorije' ),
- 'Uncategorizedimages' => array( 'NekategoriziraneDatoteke', 'NekategoriziraneSlike' ),
- 'Uncategorizedtemplates' => array( 'NekategoriziranePredloge' ),
- 'Unusedcategories' => array( 'NeuporabljeneKategorije' ),
- 'Unusedimages' => array( 'NeuporabljeneDatoteke', 'NeuporabljeneSlike' ),
- 'Wantedpages' => array( 'ŽeleneStrani' ),
- 'Wantedcategories' => array( 'ŽeleneKategorije' ),
- 'Wantedfiles' => array( 'ŽeleneDatoteke' ),
- 'Wantedtemplates' => array( 'ŽelenePredloge' ),
+ 'Longpages' => array( 'DolgeStrani' ),
+ 'MergeHistory' => array( 'ZdružiZgodovino' ),
+ 'MIMEsearch' => array( 'IskanjeMIME' ),
+ 'Mostcategories' => array( 'NajveÄKategorij' ),
+ 'Mostimages' => array( 'NajboljPovezaneDatoteke' ),
'Mostlinked' => array( 'NajboljPovezaneStrani' ),
'Mostlinkedcategories' => array( 'NajboljPovezaneKategorije' ),
'Mostlinkedtemplates' => array( 'NajboljPovezanePredloge' ),
- 'Mostimages' => array( 'NajboljPovezaneDatoteke' ),
- 'Mostcategories' => array( 'NajveÄKategorij' ),
'Mostrevisions' => array( 'NajveÄRedakcij' ),
- 'Fewestrevisions' => array( 'NajmanjRedakcij' ),
- 'Shortpages' => array( 'KratkeStrani' ),
- 'Longpages' => array( 'DolgeStrani' ),
+ 'Movepage' => array( 'PrestaviStran', 'PremakniStran' ),
+ 'Mycontributions' => array( 'MojiPrispevki' ),
+ 'Mypage' => array( 'MojaStran' ),
+ 'Mytalk' => array( 'MojPogovor' ),
+ 'Newimages' => array( 'NoveDatoteke', 'NoveSlike' ),
'Newpages' => array( 'NoveStrani' ),
- 'Ancientpages' => array( 'StarodavneStrani' ),
+ 'Popularpages' => array( 'PriljubljeneStrani' ),
+ 'Preferences' => array( 'Nastavitve' ),
'Protectedpages' => array( 'ZaÅ¡ÄiteneStrani' ),
'Protectedtitles' => array( 'ZaÅ¡ÄiteniNaslovi' ),
- 'Allpages' => array( 'VseStrani' ),
- 'Unblock' => array( 'Odblokiraj' ),
+ 'Randompage' => array( 'NakljuÄno', 'NakljuÄnaStran' ),
+ 'Recentchanges' => array( 'ZadnjeSpremembe' ),
+ 'Search' => array( 'Iskanje' ),
+ 'Shortpages' => array( 'KratkeStrani' ),
'Specialpages' => array( 'PosebneStrani' ),
- 'Contributions' => array( 'Prispevki' ),
- 'Whatlinkshere' => array( 'KajSePovezujeSem' ),
- 'Movepage' => array( 'PrestaviStran', 'PremakniStran' ),
- 'Blockme' => array( 'BlokirajMe' ),
- 'Booksources' => array( 'ViriKnjig' ),
- 'Categories' => array( 'Kategorije' ),
- 'Export' => array( 'Izvozi' ),
- 'Version' => array( 'RazliÄica', 'Verzija' ),
- 'Allmessages' => array( 'VsaSporoÄila' ),
- 'Log' => array( 'Dnevnik', 'Dnevniki' ),
- 'Blockip' => array( 'Blokiraj', 'BlokirajIP', 'BlokirajUporabnika' ),
+ 'Statistics' => array( 'Statistika' ),
+ 'Unblock' => array( 'Odblokiraj' ),
+ 'Uncategorizedcategories' => array( 'NekategoriziraneKategorije' ),
+ 'Uncategorizedimages' => array( 'NekategoriziraneDatoteke', 'NekategoriziraneSlike' ),
+ 'Uncategorizedpages' => array( 'NekategoriziraneStrani' ),
+ 'Uncategorizedtemplates' => array( 'NekategoriziranePredloge' ),
'Undelete' => array( 'Obnovi' ),
- 'Import' => array( 'Uvoz' ),
- 'MIMEsearch' => array( 'IskanjeMIME' ),
+ 'Unusedcategories' => array( 'NeuporabljeneKategorije' ),
+ 'Unusedimages' => array( 'NeuporabljeneDatoteke', 'NeuporabljeneSlike' ),
'Unwatchedpages' => array( 'NespremljaneStrani' ),
- 'Mypage' => array( 'MojaStran' ),
- 'Mytalk' => array( 'MojPogovor' ),
- 'Mycontributions' => array( 'MojiPrispevki' ),
- 'Listadmins' => array( 'SeznamAdministratorjev' ),
- 'Listbots' => array( 'SeznamBotov' ),
- 'Popularpages' => array( 'PriljubljeneStrani' ),
- 'Search' => array( 'Iskanje' ),
- 'Resetpass' => array( 'SpremeniGeslo', 'PonastaviGeslo' ),
+ 'Upload' => array( 'Nalaganje' ),
+ 'Userlogin' => array( 'Prijava' ),
+ 'Userlogout' => array( 'Odjava' ),
+ 'Version' => array( 'RazliÄica', 'Verzija' ),
+ 'Wantedcategories' => array( 'ŽeleneKategorije' ),
+ 'Wantedfiles' => array( 'ŽeleneDatoteke' ),
+ 'Wantedpages' => array( 'ŽeleneStrani' ),
+ 'Wantedtemplates' => array( 'ŽelenePredloge' ),
+ 'Watchlist' => array( 'SpisekNadzorov' ),
+ 'Whatlinkshere' => array( 'KajSePovezujeSem' ),
'Withoutinterwiki' => array( 'BrezInterwikijev' ),
- 'MergeHistory' => array( 'ZdružiZgodovino' ),
- 'Filepath' => array( 'PotDatoteke' ),
- 'Blankpage' => array( 'PraznaStran' ),
- 'DeletedContributions' => array( 'IzbrisaniPrispevki' ),
- 'Activeusers' => array( 'AktivniUporabniki' ),
);
$magicWords = array(
@@ -214,8 +214,8 @@ $messages = array(
'tog-shownumberswatching' => 'Prikaži število uporabnikov, ki spremljajo temo',
'tog-oldsig' => 'ObstojeÄi podpis:',
'tog-fancysig' => 'Obravnavaj podpis kot wikibesedilo (brez samodejne povezave)',
-'tog-externaleditor' => 'Po privzetem uporabljaj zunanji urejevalnik (samo za strokovnjake; potrebuje posebne nastavitve na vaÅ¡em raÄunalniku; [http://www.mediawiki.org/wiki/Manual:External_editors veÄ informacij])',
-'tog-externaldiff' => 'Po privzetem uporabljaj zunanje primerjanje (samo za strokovnjake; potrebuje posebne nastavitve na vaÅ¡em raÄunalniku; [http://www.mediawiki.org/wiki/Manual:External_editors veÄ informacij])',
+'tog-externaleditor' => 'Po privzetem uporabljaj zunanji urejevalnik (samo za strokovnjake; potrebuje posebne nastavitve na vaÅ¡em raÄunalniku; [//www.mediawiki.org/wiki/Manual:External_editors veÄ informacij])',
+'tog-externaldiff' => 'Po privzetem uporabljaj zunanje primerjanje (samo za strokovnjake; potrebuje posebne nastavitve na vaÅ¡em raÄunalniku; [//www.mediawiki.org/wiki/Manual:External_editors veÄ informacij])',
'tog-showjumplinks' => 'Prikaži pomožni povezavi »SkoÄi na«',
'tog-uselivepreview' => 'Uporabi hitri predogled (zahteva JavaScript) (preizkusno)',
'tog-forceeditsummary' => 'Ob vpisu praznega povzetka urejanja me opozori',
@@ -310,10 +310,7 @@ $messages = array(
'listingcontinuesabbrev' => 'nadalj.',
'index-category' => 'Indeksirane strani',
'noindex-category' => 'Neindeksirane strani',
-
-'mainpagetext' => "'''Programje MediaWiki je bilo uspeÅ¡no nameÅ¡Äeno.'''",
-'mainpagedocfooter' => 'Za uporabo in pomoÄ pri nastavitvi, prosimo, preglejte [http://meta.wikimedia.org/wiki/MediaWiki_localisation dokumentacijo za prilagajanje vmesnika]
-in [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide UporabniÅ¡ki priroÄnik].',
+'broken-file-category' => 'Strani s pretrganimi povezavami do datotek',
'about' => 'O projektu',
'article' => 'ÄŒlanek',
@@ -365,10 +362,10 @@ in [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide UporabniÅ¡ki priroÄ
'history' => 'Zgodovina strani',
'history_short' => 'Zgodovina strani',
'updatedmarker' => 'Posodobljeno od mojega zadnjega obiska',
-'info_short' => 'SporoÄilo',
'printableversion' => 'RazliÄica za tisk',
'permalink' => 'Trajna povezava',
'print' => 'Tisk',
+'view' => 'Ogled',
'edit' => 'Uredi stran',
'create' => 'Ustvari',
'editthispage' => 'Uredi stran',
@@ -376,6 +373,7 @@ in [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide UporabniÅ¡ki priroÄ
'delete' => 'Briši',
'deletethispage' => 'Briši stran',
'undelete_short' => 'Vrni $1 {{PLURAL:$1|izbrisano urejanje|izbrisani urejanji|izbrisana urejanja|izbrisanih urejanj|izbrisanih urejanj}}',
+'viewdeleted_short' => 'Ogled {{PLURAL:$1|enega izbrisanega urejanja|$1 izbrisanih urejanj}}',
'protect' => 'ZaÅ¡Äiti',
'protect_change' => 'spremeni zaÅ¡Äito',
'protectthispage' => 'ZaÅ¡Äiti stran',
@@ -460,6 +458,8 @@ $1',
'toc' => 'Vsebina',
'showtoc' => 'prikaži',
'hidetoc' => 'skrij',
+'collapsible-collapse' => 'SkrÄi',
+'collapsible-expand' => 'Razširi',
'thisisdeleted' => 'Prikažem ali vrnem $1?',
'viewdeleted' => 'Prikažem $1?',
'restorelink' => '$1 {{PLURAL:$1|izbrisano redakcijo|izbrisani redakciji|izbrisane redakcije|izbrisanih redakcij}}',
@@ -471,6 +471,8 @@ $1',
'page-rss-feed' => '»$1« RSS vir',
'page-atom-feed' => '»$1« Atom vir',
'red-link-title' => '$1 (stran ne obstaja)',
+'sort-descending' => 'Razvrsti padajoÄe',
+'sort-ascending' => 'Razvrsti naraÅ¡ÄajoÄe',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Stran',
@@ -553,16 +555,17 @@ Poizvedba: $2',
'actionthrottledtext' => 'Kot ukrep proti smetju, je Å¡tevilo izvajanj tega dejanja v Äasovnem obdobju omejeno, in vi ste ta limit presegli.
Prosimo, poskusite znova Äez nekaj minut.',
'protectedpagetext' => 'Ta stran je bila zaklenjena za prepreÄitev urejanja.',
-'viewsourcetext' => 'Lahko si ogledujete in kopirate vsebino te stran:',
+'viewsourcetext' => 'Lahko si ogledate in kopirate vsebino te strani:',
'protectedinterface' => 'Prikazana stran vsebuje besedilo vmesnika programja in je zaradi prepreÄevanja zlorabe zaÅ¡Äitena.',
'editinginterface' => "'''Opozorilo:''' Urejate stran, ki vsebuje besedilo ali drug element uporabniškega vmesnika programja.
Spremembe te strani bodo vplivale na podobo uporabniškega vmesnika.
-Za prevajanje vmesnika se prijavite na [http://translatewiki.net/wiki/Main_Page?setlang=sl&useskin=monobook translatewiki.net].",
+Za prevajanje vmesnika se prijavite na [//translatewiki.net/wiki/Main_Page?setlang=sl&useskin=monobook translatewiki.net].",
'sqlhidden' => '(Poizvedba SQL je skrita)',
'cascadeprotected' => 'Ta stran je bila zaÅ¡Äitena pred urejanji, ker je vkljuÄena na {{PLURAL:$1|sledeÄo stran, ki je bila zaÅ¡Äitena|sledeÄi strani, ki sta bili zaÅ¡Äiteni|sledeÄe strani, ki so bile zaÅ¡Äitene}} z vkljuÄeno kaskadno možnostjo:
$2',
'namespaceprotected' => "Nimate dovoljenja urejati strani v imenskem prostoru '''$1'''.",
-'customcssjsprotected' => 'Nimate pravice urejati te strani, ker vsebuje osebne nastavitve drugega uporabnika.',
+'customcssprotected' => 'Nimate pravice urejati te strani CSS, ker vsebuje osebne nastavitve drugega uporabnika.',
+'customjsprotected' => 'Nimate pravice urejati te strani JavaScript, ker vsebuje osebne nastavitve drugega uporabnika.',
'ns-specialprotected' => 'Posebnih strani ni mogoÄe urejati.',
'titleprotected' => "Uporabnik [[User:$1|$1]] je prepreÄil ustvarjanje strani s takim naslovom.
Podani razlog je bil »''$2''«.",
@@ -580,8 +583,8 @@ Morda bodo nekatere strani Å¡e naprej prikazane, kot da ste prijavljeni, dokler
'welcomecreation' => '== Dobrodošli, $1! ==
Ustvarili ste raÄun.
Ne pozabite si prilagoditi vaših [[Special:Preferences|nastavitev {{GRAMMAR:rodilnik|{{SITENAME}}}}]].',
-'yourname' => 'Uporabniško ime',
-'yourpassword' => 'Geslo',
+'yourname' => 'Uporabniško ime:',
+'yourpassword' => 'Geslo:',
'yourpasswordagain' => 'Ponovno vpišite geslo',
'remembermypassword' => 'Zapomni si me na tem raÄunalniku (za najveÄ $1 {{PLURAL:$1|dan|dneva|dni}})',
'securelogin-stick-https' => 'Po prijavi ostani povezan preko HTTPS',
@@ -600,6 +603,7 @@ Ne pozabite si prilagoditi vaših [[Special:Preferences|nastavitev {{GRAMMAR:rod
'createaccount' => 'Ustvari raÄun',
'gotaccount' => 'RaÄun že imate? $1.',
'gotaccountlink' => 'Prijavite se',
+'userlogin-resetlink' => 'Ste pozabili svoje podatke za prijavo?',
'createaccountmail' => 'Po e-pošti',
'createaccountreason' => 'Razlog:',
'badretype' => 'Gesli, ki ste ju vnesli, se ne ujemata.',
@@ -612,13 +616,15 @@ Prosimo, izberite drugo.',
Prosimo, omogoÄite jih, nato pa se s svojim uporabniÅ¡kim imenom in geslom ponovno prijavite.',
'nocookieslogin' => '{{SITENAME}} za prijavljanje uporabnikov uporablja piškotke.
Ker jih imate onemogoÄene, vas prosimo, da jih omogoÄite in se ponovno prijavite.',
+'nocookiesfornew' => 'UporabniÅ¡ki raÄun ni bil ustvarjen, ker nismo mogli potrditi njegovega izvora.
+Poskrbite, da imate omogoÄene piÅ¡kotke, osvežite to stran in poskusite znova.',
'noname' => 'Niste vnesli veljavnega uporabniškega imena.',
'loginsuccesstitle' => 'Uspešno ste se prijavili',
'loginsuccess' => "'''Sedaj ste prijavljeni v {{GRAMMAR:tožilnik|{{SITENAME}}}} kot »$1«.'''",
'nosuchuser' => 'Uporabnik z imenom »$1« ne obstaja.
UporabniÅ¡ka imena so obÄutljiva na velikost Ärk.
Preverite Ärkovanje ali pa si [[Special:UserLogin/signup|ustvarite nov uporabniÅ¡ki raÄun]].',
-'nosuchusershort' => 'Uporabnik z imenom »<nowiki>$1</nowiki>« ne obstaja.
+'nosuchusershort' => 'Uporabnik z imenom »$1« ne obstaja.
Preverite Ärkovanje.',
'nouserspecified' => 'Prosimo, vpišite uporabniško ime.',
'login-userblocked' => 'Ta uporabnik je blokiran. Prijava ni dovoljena.',
@@ -669,13 +675,14 @@ To sporoÄilo lahko prezrete, Äe je bil raÄun ustvarjen pomotoma.',
'usernamehasherror' => "Uporabniško ime ne sme vsebovati ''hash'' znakov",
'login-throttled' => 'Nedavno ste izvedli preveÄ poskusov prijave.
Prosimo poÄakajte, preden poskusite znova.',
+'login-abort-generic' => 'Vaša prijava ni bila uspešna – Prekinjeno',
'loginlanguagelabel' => 'Jezik: $1',
'suspicious-userlogout' => 'Vaša zahteva za odjavo je bila zavrnjena, saj kaže, da je bila poslana iz pokvarjenega brskalnika ali proxyja s predpomnilnikom.',
# E-mail sending
'php-mail-error-unknown' => 'Neznana napaka v funkciji PHP mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Spremeni geslo',
'resetpass_announce' => 'Trenutno ste prijavljeni z zaÄasno e-poÅ¡tno kodo.
Za zakljuÄitev prijave, morate tukaj nastaviti novo geslo:',
@@ -694,6 +701,41 @@ Za zakljuÄitev prijave, morate tukaj nastaviti novo geslo:',
Morda ste že uspeÅ¡no spremenili geslo ali pa ste zahtevali novo zaÄasno geslo.',
'resetpass-temp-password' => 'ZaÄasno geslo:',
+# Special:PasswordReset
+'passwordreset' => 'Ponastavitev gesla',
+'passwordreset-text' => 'Izpolnite obrazec, da prejmete e-poÅ¡tni opomnik s podrobnostmi vaÅ¡ega raÄuna.',
+'passwordreset-legend' => 'Ponastavitev gesla',
+'passwordreset-disabled' => 'Ponastavljanje gesla je na tem wikiju onemogoÄeno.',
+'passwordreset-pretext' => '{{PLURAL:$1||Vnesite enega od dela podatkov spodaj}}',
+'passwordreset-username' => 'Uporabniško ime:',
+'passwordreset-domain' => 'Domena:',
+'passwordreset-email' => 'E-poštni naslov:',
+'passwordreset-emailtitle' => 'Podrobnosti raÄuna na {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Nekdo (verjetno vi, z IP-naslova $1) je zahteval opomnik vaših
+podatkov o raÄunu na {{SITENAME}} ($4). S tem e-poÅ¡tnim naslovom
+{{PLURAL:$3|je povezan naslednji uporabniÅ¡ki raÄun|sta povezana naslednja uporabniÅ¡ka raÄuna|so povezani naslednji uporabniÅ¡ki raÄuni}}:
+
+$2
+
+{{PLURAL:$3|ZaÄasno geslo bo poteklo|ZaÄasni gesli bosta potekli|ZaÄasna gesla bodo potekla}} v {{PLURAL:$5|enem dnevu|$5 dneh}}.
+Prijavite se in izberite novo geslo sedaj. ÄŒe je zahtevo podal
+nekdo drug ali pa ste se spomnili svojega prvotnega gesla in ga veÄ
+ne želite spremeniti, lahko to sporoÄilo prezrete in nadaljujete z uporabo
+svojega starega gesla.',
+'passwordreset-emailtext-user' => 'Uporabnik $1 na {{SITENAME}} je zahteval opomnik vaÅ¡ih podatkov o raÄunu na {{SITENAME}}
+($4). S tem e-poÅ¡tnim naslovom {{PLURAL:$3|je povezan naslednji uporabniÅ¡ki raÄun|sta povezana naslednja uporabniÅ¡ka raÄuna|so povezani naslednji uporabniÅ¡ki raÄuni}}:
+
+$2
+
+{{PLURAL:$3|ZaÄasno geslo bo poteklo|ZaÄasni gesli bosta potekli|ZaÄasna gesla bodo potekla}} v {{PLURAL:$5|enem dnevu|$5 dneh}}.
+Prijavite se in izberite novo geslo sedaj. ÄŒe je zahtevo podal
+nekdo drug ali pa ste se spomnili svojega prvotnega gesla in ga veÄ
+ne želite spremeniti, lahko to sporoÄilo prezrete in nadaljujete z uporabo
+svojega starega gesla.',
+'passwordreset-emailelement' => 'Uporabniško ime: $1
+ZaÄasno geslo: $2',
+'passwordreset-emailsent' => 'Opomnilna e-pošta je bila poslana.',
+
# Edit page toolbar
'bold_sample' => 'Krepko besedilo',
'bold_tip' => 'Krepko besedilo',
@@ -705,8 +747,6 @@ Morda ste že uspeÅ¡no spremenili geslo ali pa ste zahtevali novo zaÄasno geslo
'extlink_tip' => 'Zunanja povezava (ne pozabite na predpono http://)',
'headline_sample' => 'Besedilo naslovne vrstice',
'headline_tip' => 'Naslovna vrstica druge ravni',
-'math_sample' => 'Tu vnesite enaÄbo',
-'math_tip' => 'MatematiÄna enaÄba (LaTeX)',
'nowiki_sample' => 'Tu vnesite neoblikovano besedilo',
'nowiki_tip' => 'Prezri wikioblikovanje',
'image_sample' => 'Zgled.jpg',
@@ -788,7 +828,7 @@ Da bi stran ustvarili, vnesite v spodnji obrazec besedilo
'noarticletext' => 'Na tej strani ni trenutno nobenega besedila. Naslov strani lahko poskusite [[Special:Search/{{PAGENAME}}|poiskati]] na drugih straneh, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} v dnevniških zapisih] ali pa [{{fullurl:{{FULLPAGENAME}}|action=edit}} stran uredite]</span>.',
'noarticletext-nopermission' => 'Na tej strani ni trenutno nobenega besedila.
Lahko poskusite [[Special:Search/{{PAGENAME}}|poiskati naslov te strani]] v drugih straneh, ali <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} poiskati v povezanih dnevniških zapisih]</span>.',
-'userpage-userdoesnotexist' => 'UporabniÅ¡ki raÄun »$1« ni registriran.
+'userpage-userdoesnotexist' => 'UporabniÅ¡ki raÄun »<nowiki>$1</nowiki>« ni registriran.
Prosimo preverite, ali res želite ustvariti/urediti to stran.',
'userpage-userdoesnotexist-view' => 'UporabniÅ¡ki raÄun »$1« ni registriran.',
'blocked-notice-logextract' => 'Ta uporabnik je trenutno blokiran.
@@ -827,6 +867,7 @@ Prosimo, poskusite znova.
'token_suffix_mismatch' => "'''VaÅ¡e urejanje je bilo zavrnjeno, ker je vaÅ¡ odjemalec pokvaril loÄila v urejevalnem zahtevku.'''
Urejanje je bilo zavrnjeno z namenom prepreÄitve okvare v besedilu strani.
NajveÄkrat je razlog uporaba hroÅ¡Äato spletno anonimizacijsko storitev.",
+'edit_form_incomplete' => "'''Nekateri deli urejevalnega obrazca niso dosegli strežnika; prepriÄajte se, da so vaÅ¡a urejanja neokrnjena in poskusite znova.'''",
'editing' => 'Urejanje $1',
'editingsection' => 'Urejanje $1 (razdelek)',
'editingcomment' => 'Urejanje $1 (nov razdelek)',
@@ -1171,12 +1212,13 @@ Medtem lahko iÅ¡Äete preko Googla.
Upoštevajte, da so njihovi podatki vsebine {{GRAMMAR:rodilnik|{{SITENAME}}}} morda zastareli.',
# Quickbar
-'qbsettings' => 'Nastavitve hitre vrstice',
-'qbsettings-none' => 'Brez',
-'qbsettings-fixedleft' => 'Levo nepomiÄno',
-'qbsettings-fixedright' => 'Desno nepomiÄno',
-'qbsettings-floatingleft' => 'Levo leteÄe',
-'qbsettings-floatingright' => 'Desno leteÄe',
+'qbsettings' => 'Nastavitve hitre vrstice',
+'qbsettings-none' => 'Brez',
+'qbsettings-fixedleft' => 'Levo nepomiÄno',
+'qbsettings-fixedright' => 'Desno nepomiÄno',
+'qbsettings-floatingleft' => 'Levo leteÄe',
+'qbsettings-floatingright' => 'Desno leteÄe',
+'qbsettings-directionality' => 'Stalno, odvisno od usmerjenosti pisave vašega jezika',
# Preferences page
'preferences' => 'Nastavitve',
@@ -1187,9 +1229,10 @@ Upoštevajte, da so njihovi podatki vsebine {{GRAMMAR:rodilnik|{{SITENAME}}}} mo
'changepassword' => 'Zamenjava gesla',
'prefs-skin' => 'Koža',
'skin-preview' => 'Predogled',
-'prefs-math' => 'Prikaz matematiÄnega besedila',
'datedefault' => 'Kakor koli',
+'prefs-beta' => 'Betafunkcije',
'prefs-datetime' => 'Datum in Äas',
+'prefs-labs' => 'Funkcije laboratorija',
'prefs-personal' => 'Podatki o uporabniku',
'prefs-rc' => 'Zadnje spremembe',
'prefs-watchlist' => 'Spisek nadzorov',
@@ -1211,8 +1254,6 @@ Upoštevajte, da so njihovi podatki vsebine {{GRAMMAR:rodilnik|{{SITENAME}}}} mo
'columns' => 'Stolpcev:',
'searchresultshead' => 'Nastavitve poizvedovanja',
'resultsperpage' => 'Prikazanih zadetkov na stran:',
-'contextlines' => 'Vrstic na zadetek:',
-'contextchars' => 'Znakov na vrstico:',
'stub-threshold' => 'Prag oznaÄevanja <a href="#" class="stub">Å¡krbin</a> (v bajtih):',
'stub-threshold-disabled' => 'OnemogoÄeno',
'recentchangesdays' => 'Å tevilo dni prikazanih v zadnjih spremembah:',
@@ -1225,7 +1266,7 @@ Tukaj je nakljuÄno ustvarjena vrednost, ki jo lahko uporabite: $1',
'savedprefs' => 'Spremembe so bile uspešno shranjene.',
'timezonelegend' => 'ÄŒasovni pas',
'localtime' => 'Krajevni Äas:',
-'timezoneuseserverdefault' => 'Uporabi privzeti strežniÅ¡ki Äas',
+'timezoneuseserverdefault' => 'Uporabi privzeti wiki Äas ($1)',
'timezoneuseoffset' => 'Drugo (navedite izravnavo)',
'timezoneoffset' => 'Izravnava¹:',
'servertime' => 'StrežniÅ¡ki Äas:',
@@ -1276,8 +1317,8 @@ Podatek bo javno prikazan.',
'email' => 'E-pošta',
'prefs-help-realname' => 'Pravo ime je neobvezno.
ÄŒe se ga odloÄite navesti, bo uporabljeno za priznavanje vaÅ¡ega dela.',
-'prefs-help-email' => 'E-poÅ¡tni naslov ni obvezen, vendar vam omogoÄa, da vam v primeru pozabljenega gesla poÅ¡ljemo novo.
-Poleg tega vpisan e-poÅ¡tni naslov omogoÄa drugim, da vam lahko poÅ¡iljajo elektronsko poÅ¡to brez razkritja vaÅ¡e istovetnosti.',
+'prefs-help-email' => 'E-poÅ¡tni naslov ni obvezen, vendar vam omogoÄa, da vam v primeru pozabljenega gesla poÅ¡ljemo novo.',
+'prefs-help-email-others' => 'Poleg tega vpisan e-poÅ¡tni naslov omogoÄa drugim, da vam lahko poÅ¡iljajo elektronsko poÅ¡to brez razkritja vaÅ¡e istovetnosti.',
'prefs-help-email-required' => 'E-poštni naslov je obvezen.',
'prefs-info' => 'Osnovni podatki',
'prefs-i18n' => 'Internacionalizacija',
@@ -1388,7 +1429,7 @@ Poleg tega vpisan e-poÅ¡tni naslov omogoÄa drugim, da vam lahko poÅ¡iljajo elek
'right-editusercssjs' => 'Urejanje CSS- in JS-datotek drugih uporabnikov',
'right-editusercss' => 'Uredi CSS datotek drugih uporabnikov',
'right-edituserjs' => 'Uredi JS datotek drugih uporabnikov',
-'right-rollback' => 'Hitro vraÄanje urejanj od zadnjega uporabnika, ki je urejal doloÄeno stran',
+'right-rollback' => 'Hitro vraÄanje urejanj zadnjega uporabnika, ki je urejal doloÄeno stran',
'right-markbotedits' => 'OznaÄi vrnjena urejanja kot urejanja botov',
'right-noratelimit' => 'Omejitve dejavnosti ne veljajo',
'right-import' => 'Uvoz strani iz drugih wikijev',
@@ -1402,15 +1443,15 @@ Poleg tega vpisan e-poÅ¡tni naslov omogoÄa drugim, da vam lahko poÅ¡iljajo elek
'right-userrights' => 'Urejanje vseh uporabniških pravic',
'right-userrights-interwiki' => 'Urejanje uporabniških pravic uporabnikov na drugih wikijih',
'right-siteadmin' => 'Zaklepanje in odklepanje baze podatkov',
-'right-reset-passwords' => 'Ponastavljanje gesla drugih uporabnikov',
'right-override-export-depth' => 'Izvoz strani, vkljuÄno s povezaimi straneh do globine 5',
'right-sendemail' => 'Pošiljanje e-pošte drugim uporabnikom',
# User rights log
-'rightslog' => 'Dnevnik uporabniških pravic',
-'rightslogtext' => 'Prikazan je dnevnik sprememb uporabniških pravic.',
-'rightslogentry' => '- sprememba pravic uporabnika $1 iz $2 v $3',
-'rightsnone' => '(nobeno)',
+'rightslog' => 'Dnevnik uporabniških pravic',
+'rightslogtext' => 'Prikazan je dnevnik sprememb uporabniških pravic.',
+'rightslogentry' => '- sprememba pravic uporabnika $1 iz $2 v $3',
+'rightslogentry-autopromote' => 'je bil(-a) samodejno povišan(-a) z $2 na $3',
+'rightsnone' => '(nobeno)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'branje te strani',
@@ -1532,12 +1573,12 @@ Za grafiÄni pogled obiÅ¡Äite [[Special:NewFiles|galerijo novih datotek]].',
'minlength1' => 'Imena datotek morajo biti dolga vsaj eno Ärko.',
'illegalfilename' => 'Ime datoteke »$1« vsebuje v naslovih strani prepovedane znake. Prosimo, poskusite datoteko naložiti pod drugim imenom.',
'badfilename' => 'Ime datoteke se je samodejno popravilo v »$1«.',
-'filetype-mime-mismatch' => 'KonÄnica datoteke ne ustreza vrsti MIME.',
+'filetype-mime-mismatch' => 'DatoteÄna konÄnica ».$1« se ne ujema z zaznano MIME-vrsto datoteke ($2).',
'filetype-badmime' => 'Datoteke MIME-vrste »$1« ni dovoljeno nalagati.',
'filetype-bad-ie-mime' => 'Ne morem naložiti datoteke, ker bi jo Internet Explorer zaznal kot »$1« in jo zavrnil kot potencialno nevarno vrsto datoteke.',
'filetype-unwanted-type' => "'''».$1«''' je nezaželena datoteÄna vrsta.
{{PLURAL:$3|Dovoljena datoteÄna vrsta je|Dovoljena datoteÄni vrsti sta|Dovoljene datoteÄne vrste so|Dovoljene datoteÄne vrste so}} $2.",
-'filetype-banned-type' => "'''».$1«''' ni dovoljena datoteÄna vrsta.
+'filetype-banned-type' => "'''».$1«''' {{PLURAL:$4|ni dovoljena datoteÄna vrsta|nista dovoljeni datoteÄni vrsti|niso dovoljene datoteÄne vrste}}.
{{PLURAL:$3|Dovoljena datoteÄna vrsta je|Dovoljeni datoteÄni vrsti sta|Dovoljene datoteÄne vrste so|Dovoljene datoteÄne vrste so}} $2.",
'filetype-missing' => 'Datoteka nima konÄnice (kot ».jpg«).',
'empty-file' => 'Datoteka, ki ste jo poslali, je prazna',
@@ -1556,6 +1597,7 @@ Za grafiÄni pogled obiÅ¡Äite [[Special:NewFiles|galerijo novih datotek]].',
'emptyfile' => 'Kaže, da je aložena datoteka prazna.
Do tega bi lahko prišlo zaradi tipkarske napake v imenu.
Ali datoteko resniÄno želite naložiti?',
+'windows-nonascii-filename' => 'Ta wiki ne podpira imen datotek s posebnimi znaki.',
'fileexists' => "Datoteka s tem imenom že obstaja. Preden jo povozite, preverite stran '''<tt>[[:$1]]</tt>'''.
[[$1|thumb]]",
'filepageexists' => "Opisna stran za to datoteko je bila že ustvarjena na '''<tt>[[:$1]]</tt>''', vendar datoteka s tem imenom trenutno ne obstaja.
@@ -1595,6 +1637,8 @@ Prosimo preverite file_uploads nastavitev.',
'uploadscripted' => 'Datoteka vsebuje HTML- ali skriptno kodo, ki bi jo lahko brskalnik razlagal napaÄno.',
'uploadvirus' => 'Datoteka vsebuje virus!
Podrobnosti: $1',
+'uploadjava' => 'Datoteka je datoteka ZIP, ki vsebuje javansko datoteko .class.
+Nalaganje javanskih datotek ni dovoljeno, ker je z njimi mogoÄe obiti varnostne omejitve.',
'upload-source' => 'Izvorna datoteka',
'sourcefilename' => 'Ime izvorne datoteke:',
'sourceurl' => 'Izvorni URL:',
@@ -1604,10 +1648,6 @@ Podrobnosti: $1',
'upload-options' => 'Možnosti nalaganja',
'watchthisupload' => 'Opazuj to datoteko',
'filewasdeleted' => 'Datoteka s tem imenom je bila nekoÄ Å¾e naložena in potem izbrisana. Preden jo znova naložite, preverite $1.',
-'upload-wasdeleted' => "'''Opozorilo: Nalagate datoteko, ki je bila predhodno že izbrisana.'''
-
-Premislite ali je nadaljevanje nalaganja primerno.
-Za lažjo presojo je spodaj izpisek iz dnevnika brisanj:",
'filename-bad-prefix' => "Ime datoteke, ki jo nalagate, se zaÄne z '''»$1«''', ki je neopisno ime, ponavadi dodeljeno samodejno s strani digitalnih fotoaparatov.
Prosimo, izberite bolj opisno ime vaše datoteke.",
'filename-prefix-blacklist' => ' #<!-- pustite to vrstico takšno, kot je --> <pre>
@@ -1646,12 +1686,29 @@ Prosimo, preverite veljavnost in dostopnost naslova URL ter poskusite ponovno.
'upload-unknown-size' => 'Neznana velikost',
'upload-http-error' => 'Prišlo je do napake HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Med odpiranjem datoteke za preverjanja ZIP je prišlo do napake.',
+'zip-wrong-format' => 'Navedena datoteka ni bila datoteka ZIP.',
+'zip-bad' => 'Datoteka je pokvarjena ali kako drugaÄe neberljiva datoteka ZIP.
+Ni mogoÄe ustrezno preveriti njene varnosti.',
+'zip-unsupported' => 'Datoteka je datoteka ZIP, ki uporablja funkcije ZIP, katere MediaWiki ne podpira.
+Ni mogoÄe ustrezno preveriti njene varnosti.',
+
+# Special:UploadStash
+'uploadstash' => 'Skrite naložene datoteke',
+'uploadstash-summary' => 'Ta stran omogoÄa dostop do datotek, ki so naložene (oziroma v postopku nalaganja), vendar Å¡e niso objavljene na wikiju. Te datoteke so vidne samo uporabniku, ki jih je naložil, in nikomur drugemu.',
+'uploadstash-clear' => 'PoÄisti skrite datoteke',
+'uploadstash-nofiles' => 'Nimate skritih datotek.',
+'uploadstash-badtoken' => 'Izvedba dejanja ni bila uspešna, morda zaradi izteklih poverilnic za urejanje. Poskusite znova.',
+'uploadstash-errclear' => 'ÄŒiÅ¡Äenje datotek ni bilo uspeÅ¡no.',
+'uploadstash-refresh' => 'Osveži seznam datotek',
+
# img_auth script messages
'img-auth-accessdenied' => 'Dostop zavrnjen',
'img-auth-nopathinfo' => 'Manjka PATH_INFO.
Vaš strežnik ne poda te informacije.
Morda temelji na CGI in ne more podpirati img_auth.
-Oglejte si http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Oglejte si slikovno avtorizacijo.]',
'img-auth-notindir' => 'Zahtevana pot ni v konfigurirani mapi za nalaganje.',
'img-auth-badtitle' => 'Ni mogoÄe sestaviti veljavnega naslova iz »$1«.',
'img-auth-nologinnWL' => 'Niste prijavljeni in »$1« ni na seznamu dovoljenih datotek.',
@@ -1729,7 +1786,7 @@ Naslednji seznam obsega samo {{PLURAL:$1|prvo stran, ki se povezuje|prvi $1 stra
Na voljo je tudi [[Special:WhatLinksHere/$2|celotni seznam]].',
'nolinkstoimage' => 'Z datoteko se ne povezuje nobena stran.',
'morelinkstoimage' => 'Preglejte [[Special:WhatLinksHere/$1|veÄ povezav]] na to datoteko.',
-'redirectstofile' => 'Na to datoteko {{PLURAL:$1|preusmerja naslednja datoteka|preusmerjata naslednji datoteki|preusmerjajo naslednje $1 datoteke|preusmerja naslednjih $1 datotek|preusmerja naslednjih $1 datotek}}:',
+'linkstoimage-redirect' => '$1 (preusmeritev datoteke) $2',
'duplicatesoffile' => '{{PLURAL:$1|SledeÄa datoteka je dvojnik|SledeÄi datoteki sta dvojnika|SledeÄe $1 datoteke so dvojniki|SledeÄih $1 datotek so dvojniki}} te datoteke ([[Special:FileDuplicateSearch/$2|veÄ podrobnosti]]):',
'sharedupload' => 'Datoteka je del $1 in se lahko uporabi v drugih projektih.',
'sharedupload-desc-there' => 'Ta datoteka je iz $1 in se lahko uporablja v drugih projektih.
@@ -1820,19 +1877,20 @@ Preden jih izbrišete, preverite še druge povezave nanje.',
'statistics-users-active-desc' => 'Uporabniki, ki so izvedli dejanje v {{PLURAL:$1|zadnjem dnevu|zadnjih $1 dneh}}',
'statistics-mostpopular' => 'Strani z najveÄ ogledi',
-'disambiguations' => 'RazloÄitvene strani',
+'disambiguations' => 'Strani s povezavami na razloÄitvene strani',
'disambiguationspage' => 'Template:RazloÄitev',
'disambiguations-text' => "Naslednje strani se povezujejo na '''razloÄitvene strani'''.
Namesto tega bi se naj povezovale na primerno temo.<br />
Stran se obravnava kot razloÄitvena, Äe uporablja predloge povezane iz [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Dvojne preusmeritve',
-'doubleredirectstext' => 'Ta stran navaja strani, ki se preusmerjajo na druge preusmeritvene strani.
+'doubleredirects' => 'Dvojne preusmeritve',
+'doubleredirectstext' => 'Ta stran navaja strani, ki se preusmerjajo na druge preusmeritvene strani.
Vsaka vrstica vsebuje povezavo do prve in druge preusmeritve, kakor tudi do cilja druge preusmeritve, ki je po navadi »prava« ciljna stran, na katero naj bi kazala prva preusmeritev.
<del>PreÄrtani</del> vnosi so bili razreÅ¡eni.',
-'double-redirect-fixed-move' => 'Stran [[$1]] je bil premaknjen.
+'double-redirect-fixed-move' => 'Stran [[$1]] je bil premaknjen.
Sedaj je preusmeritev na [[$2]].',
-'double-redirect-fixer' => 'Popravljalec preusmeritev',
+'double-redirect-fixed-maintenance' => 'Popravljanje dvojne preusmeritve z [[$1]] na [[$2]].',
+'double-redirect-fixer' => 'Popravljalec preusmeritev',
'brokenredirects' => 'Pretrgane preusmeritve',
'brokenredirectstext' => 'Naslednje preusmeritve kažejo na neobstojeÄe strani:',
@@ -1909,6 +1967,7 @@ Prosimo, upoštevajte, da se lahko druge spletne strani povezujejo na datoteko z
'pager-newer-n' => '{{PLURAL:$1|novejši|novejša|novejši|novejših}} $1',
'pager-older-n' => '{{PLURAL:$1|starejši|starejša|starejši|starejših}} $1',
'suppress' => 'Nadzor',
+'querypage-disabled' => 'Ta posebna stran je onemogoÄena iz zmogljivostnih razlogov.',
# Book sources
'booksources' => 'Viri knjig',
@@ -1918,8 +1977,8 @@ Prosimo, upoštevajte, da se lahko druge spletne strani povezujejo na datoteko z
'booksources-invalid-isbn' => 'Za dani ISBN se ne zdi, da je veljaven; preverite za morebitne napake pri kopiranju iz prvotnega vira.',
# Special:Log
-'specialloguserlabel' => 'Uporabnik:',
-'speciallogtitlelabel' => 'Naslov:',
+'specialloguserlabel' => 'Izvajalec:',
+'speciallogtitlelabel' => 'Cilj (naslov ali uporabnik):',
'log' => 'Dnevniki',
'all-logs-page' => 'Vsi javni dnevniki',
'alllogstext' => 'Združeno so prikazani dnevniki sprememb uporabniÅ¡kih pravic, preimenovanj uporabnikov, nalaganja predstavnostnih datotek, prestavljanja in zaÅ¡Äite strani, brisanja, registracij uporabnikov, sprememb položaja botov ter blokiranja in deblokiranja uporabnikov na strani {{SITENAME}}. Pogled lahko zožite z izbiro dnevnika, uporabniÅ¡kega imena ali strani. Vedite, da polje »Uporabnik« razlikuje med malimi in velikimi Ärkami.',
@@ -1959,12 +2018,13 @@ Glej tudi [[Special:WantedCategories|želene kategorije]].',
'sp-deletedcontributions-contribs' => 'prispevki',
# Special:LinkSearch
-'linksearch' => 'Zunanje povezave',
+'linksearch' => 'Iskanje zunanjih povezav',
'linksearch-pat' => 'Iskalni vzorec:',
'linksearch-ns' => 'Imenski prostor:',
'linksearch-ok' => 'IÅ¡Äi',
-'linksearch-text' => 'Jokerje, kot je »*.wikipedia.org«, se lahko uporablja.<br />
-Podprti protokoli: <tt>$1</tt>',
+'linksearch-text' => 'Nadomestne znake, kot je »*.wikipedia.org«, lahko uporabljate.
+Zahtevana je vsaj najvišja domena, na primer »*.org«.<br />
+Podprti protokoli: <tt>$1</tt> (teh ne dodajte v svoje iskanje).',
'linksearch-line' => '$1 povezano iz $2',
'linksearch-error' => 'Jokerji se lahko pojavijo le na zaÄetku gostiteljskega imena.',
@@ -2025,6 +2085,10 @@ E-poštni naslov, ki ste ga vpisali v [[Special:Preferences|uporabniških nastav
'noemailtext' => 'Uporabnik ni navedel veljavnega e-poštnega naslova.',
'nowikiemailtitle' => 'E-pošta ni dovoljena',
'nowikiemailtext' => 'Ta uporabnik se je odloÄil, da ne bo prejmal e-poÅ¡te od drugih uporabnikov.',
+'emailnotarget' => 'NeobstojeÄe ali neveljavno uporabniÅ¡ko ime prejemnika.',
+'emailtarget' => 'Vnesite uporabniško ime prejemnika',
+'emailusername' => 'Uporabniško ime:',
+'emailusernamesubmit' => 'Potrdi',
'email-legend' => 'Pošlji e-pošto drugemu uporabniku {{GRAMMAR:akuzativ|{{SITENAME}}}}',
'emailfrom' => 'Od:',
'emailto' => 'Za:',
@@ -2049,10 +2113,10 @@ E-poštni naslov, ki ste ga vpisali v [[Special:Preferences|uporabniških nastav
'watchlistanontext' => 'Za pregled ali urejanje vsebine vašega spiska nadzorov se morate $1.',
'watchnologin' => 'Niste prijavljeni',
'watchnologintext' => 'Za urejanje spiska nadzorov morate biti [[Special:UserLogin|prijavljeni]].',
-'addedwatch' => 'Dodano na spisek nadzorov',
+'addwatch' => 'Dodaj na spisek nadzorov',
'addedwatchtext' => "Stran »[[:$1]]« je bila dodana na vaš [[Special:Watchlist|spisek nadzorov]].
Morebitne spremembe te strani in pripadajoÄe pogovorne strani bodo navedene tukaj, v [[Special:RecentChanges|seznamu zadnjih sprememb]] pa bodo za lažjo izbiro oznaÄene '''krepko'''.",
-'removedwatch' => 'Odstranjeno s spiska nadzorov',
+'removewatch' => 'Odstrani s spiska nadzorov',
'removedwatchtext' => 'Stran »[[:$1]]« je bila odstranjena z vašega [[Special:Watchlist|spiska nadzorov]].',
'watch' => 'Opazuj',
'watchthispage' => 'Opazuj stran',
@@ -2073,8 +2137,9 @@ Morebitne spremembe te strani in pripadajoÄe pogovorne strani bodo navedene tuk
'watchlist-options' => 'Možnosti spiska nadzorov',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Nadziranje ...',
-'unwatching' => 'Nenadziranje ...',
+'watching' => 'Nadziranje ...',
+'unwatching' => 'Nenadziranje ...',
+'watcherrortext' => 'Med spreminjanjem vaših nastavitev spiska nadzora za »$1« je prišlo do napake.',
'enotif_mailer' => 'Obvestilni poštar {{GRAMMAR:rodilnik|{{SITENAME}}}}',
'enotif_reset' => 'OznaÄi vse strani kot prebrane',
@@ -2105,14 +2170,17 @@ Na spisku nadzorov lahko tudi ponastavite zastavice obveÅ¡Äanj za vse spremljan
Vaš opozorilni sistem {{GRAMMAR:rodilnik|{{SITENAME}}}}
--
+Za spremembo nastavitev e-poÅ¡tnih obvestil obiÅ¡Äite
+{{canonicalurl:{{#special:Preferences}}}}
+
Za spremembo nastavitev spiska nadzorov obiÅ¡Äite
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Za odstranitev strani z vaÅ¡ega spiska nadzorov obiÅ¡Äite
$UNWATCHURL
-Povratne informacije in nadaljnja pomoÄ:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+Povratna sporoÄila in pomoÄ:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Briši stran',
@@ -2128,7 +2196,7 @@ Povratne informacije in nadaljnja pomoÄ:
Prosimo, '''potrdite''', da to resniÄno želite, da razumete posledice dejanja in da se ravnate po [[{{MediaWiki:Policy-url}}|pravilih]].",
'actioncomplete' => 'Poseg je konÄan',
'actionfailed' => 'Dejanje spodletelo',
-'deletedtext' => 'Stran »<nowiki>$1</nowiki>« je izbrisana.
+'deletedtext' => 'Stran »$1« je izbrisana.
Za zapise nedavnih brisanj glej $2.',
'deletedarticle' => 'je izbrisal(-a) »[[$1]]«',
'suppressedarticle' => 'skril »[[$1]]«',
@@ -2186,7 +2254,7 @@ Oglejte si [[Special:ProtectedPages|seznam zaÅ¡Äitenih strani]] za seznam trenu
'protect_expiry_invalid' => 'ÄŒas izteka je neveljaven.',
'protect_expiry_old' => 'ÄŒas izteka je v preteklosti.',
'protect-unchain-permissions' => 'Odkleni nadaljnje možnosti zaÅ¡Äite',
-'protect-text' => "Tu si lahko ogledate in spremenite raven zaÅ¡Äitenosti strani '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Tu si lahko ogledate in spremenite raven zaÅ¡Äitenosti strani '''$1'''.",
'protect-locked-blocked' => "Med blokado ne morete spreminjati stopenj zaÅ¡Äite.
To so trenutne nastavitve za stran '''$1''':",
'protect-locked-dblock' => "Stopnje zaÅ¡Äite ni mogoÄe spremeniti zaradi aktivnega zaklepa zbirke podatkov.
@@ -2241,9 +2309,8 @@ Stopnjo zaÅ¡Äite te strani lahko spremenite, vendar to ne bo vplivalo na kaskad
'undeletepagetext' => '{{PLURAL:$1|Naslednja stran je bila izbrisana, vendar je Å¡e vedno v arhivu in jo lahko obnovite.|Naslednji $1 strani sta bili izbrisani, vendar sta Å¡e vedno v arhivu in ju lahko obnovite.|Naslednje $1 strani so bile izbrisane, vendar so Å¡e vedno v arhivu in jih lahko obnovite.|Naslednjih $1 strani je bilo izbrisanih, vendar so Å¡e vedno v arhivu in jih lahko obnovite.}}
Arhiv je treba obÄasno poÄistiti.',
'undelete-fieldset-title' => 'Obnovi redakcije',
-'undeleteextrahelp' => "Da bi obnovili celotno stran z vso njeno zgodovino, pustite vsa potrditvena polja prazna in kliknite '''''{{int:undeletebtn}}'''''.
-ÄŒe želite obnoviti le doloÄene redakcije strani, pred klikom gumba '''''{{int:undeletebtn}}''''' oznaÄite ustrezna potrditvena polja.
-Klik gumba '''''{{int:undeletereset}}''''' bo izpraznil polje za vnos razloga in vsa potrditvena polja.",
+'undeleteextrahelp' => "Da bi obnovili celotno stran z vso njeno zgodovino, pustite vsa potrditvena polja prazna in kliknite '''''Obnovi'''''.
+ÄŒe želite obnoviti le doloÄene redakcije strani, pred klikom gumba '''''Obnovi''''' oznaÄite ustrezna potrditvena polja.",
'undeleterevisions' => '{{PLURAL:$1|Arhivirana je|Arhivirani sta|Arhivirane so|Arhiviranih je|Arhiviranih ni}} $1 {{PLURAL:$1|redakcija|redakciji|redakcije|redakcij|redakcij}}',
'undeletehistory' => 'ÄŒe obnovite stran, bodo v zgodovino obnovljene vse redakcije.
Če je bila po brisanju ustvarjena nova stran z enakim imenom, bodo obnovljene redakcije prikazane v prejšnji zgodovini.',
@@ -2289,9 +2356,12 @@ $1',
'undelete-show-file-submit' => 'Da',
# Namespace form on various pages
-'namespace' => 'Imenski prostor:',
-'invert' => 'Obrni izbor',
-'blanknamespace' => '(Osnovno)',
+'namespace' => 'Imenski prostor:',
+'invert' => 'Obrni izbor',
+'tooltip-invert' => 'OznaÄite to polje, da skrijete spremembe v izbranem imenskem prostoru (in povezanih imenskih prostorih, Äe je oznaÄeno)',
+'namespace_association' => 'Povezan imenski prostor',
+'tooltip-namespace_association' => 'OznaÄite to polje, da vkljuÄite tudi pogovor ali predmetni imenski prostor, povezan z izbranim imenskim prostorom',
+'blanknamespace' => '(Osnovno)',
# Contributions
'contributions' => 'Uporabnikovi prispevki',
@@ -2341,13 +2411,15 @@ Najnovejši vnos v dnevniku blokad je naveden spodaj:',
'whatlinkshere-filters' => 'Filtri',
# Block/unblock
+'autoblockid' => 'Samodejna blokada Å¡t. $1',
+'block' => 'Blokiraj uporabnika',
+'unblock' => 'Odblokiraj uporabnika',
'blockip' => 'Blokiranje IP-naslova ali uporabniškega imena',
'blockip-title' => 'Blokiraj uporabnika',
'blockip-legend' => 'Blokiraj uporabnika',
'blockiptext' => "Naslednji obrazec vam omogoÄa, da doloÄenemu IP-naslovu ali uporabniÅ¡kemu imenu prepreÄite urejanje.
To storimo le zaradi zaÅ¡Äite pred nepotrebnim uniÄevanjem in po [[{{MediaWiki:Policy-url}}|pravilih]].
Vnesite tudi razlog (''na primer'' seznam strani, ki jih je uporabnik po nepotrebnem kvaril).",
-'ipaddress' => 'IP-naslov',
'ipadressorusername' => 'IP-naslov ali uporabniško ime',
'ipbexpiry' => 'Pretek',
'ipbreason' => 'Razlog:',
@@ -2360,7 +2432,7 @@ Vnesite tudi razlog (''na primer'' seznam strani, ki jih je uporabnik po nepotre
** dodajanje neumnosti v besedilo
** nadlegovanje/osebni napadi
** neprimerno uporabniško ime',
-'ipbanononly' => 'Blokiraj le brezimne uporabnike',
+'ipb-hardblock' => 'PrepreÄi prijavljenim uporabnikom urejati s tega IP-naslova',
'ipbcreateaccount' => 'PrepreÄi ustvarjanje raÄunov',
'ipbemailban' => 'Uporabniku prepreÄi poÅ¡iljanje e-poÅ¡te',
'ipbenableautoblock' => 'Samodejno blokiraj zadnji IP-naslov tega uporabnika in vse naslednje naslove, ki jih bodo hoteli uporabiti',
@@ -2371,12 +2443,15 @@ Vnesite tudi razlog (''na primer'' seznam strani, ki jih je uporabnik po nepotre
'ipbotherreason' => 'Drug/dodaten razlog:',
'ipbhidename' => 'Skrij uporabniško ime iz urejanja in seznamov',
'ipbwatchuser' => 'Nadzoruj uporabnikovo uporabniško in pogovorno stran',
-'ipballowusertalk' => 'Dovoli temu uporabniku, da med blokado ureja svojo pogovorno stran',
+'ipb-disableusertalk' => 'Med blokado prepreÄi temu uporabniku urejati lastno pogovorno stran',
'ipb-change-block' => 'Ponovno blokiraj uporabnika s temi nastavitvami',
+'ipb-confirm' => 'Potrdi blokado',
'badipaddress' => 'Neveljaven IP-naslov ali uporabniško ime.',
'blockipsuccesssub' => 'Blokiranje je uspelo',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] je {{GENDER:$1|blokiran|blokirana|blokiran(-a)}}.<br />
-Oglejte si [[Special:BlockList|seznam blokiranih IP-naslovov]] za pregled blokad.',
+Oglejte si [[Special:IPBlockList|seznam blokiranih IP-naslovov]] za pregled blokad.',
+'ipb-blockingself' => 'Nameravate se blokirati! Ste prepriÄani, da želite to storiti?',
+'ipb-confirmhideuser' => 'Nameravate blokirati uporabnika z omogoÄeno možnostjo »skrij uporabnika«. To bo skrilo uporabnikovo ime na vseh seznamih in dnevniÅ¡kih vnosih. Ste prepriÄani, da želite to storiti?',
'ipb-edit-dropdown' => 'Uredi razloge blokade',
'ipb-unblock-addr' => 'Deblokiraj $1',
'ipb-unblock' => 'Odblokirajte uporabniško ime ali IP-naslov',
@@ -2386,17 +2461,23 @@ Oglejte si [[Special:BlockList|seznam blokiranih IP-naslovov]] za pregled blokad
'unblockiptext' => 'Z naslednjim obrazcem obnovite možnost urejanja z blokiranega IP-naslova ali uporabniÅ¡kega raÄuna.',
'ipusubmit' => 'Odstrani blokado',
'unblocked' => '[[User:$1|$1]] je bil odblokiran',
+'unblocked-range' => '$1 so odblokirani',
'unblocked-id' => 'Blokada $1 je odstranjena',
+'blocklist' => 'Blokirani uporabniki',
'ipblocklist' => 'Blokirani uporabniki',
'ipblocklist-legend' => 'Najdi blokiranega uporabnika',
-'ipblocklist-username' => 'Uporabniško ime ali IP-naslov:',
-'ipblocklist-sh-userblocks' => '$1 blokade raÄunov',
-'ipblocklist-sh-tempblocks' => '$1 zaÄasne blokade',
-'ipblocklist-sh-addressblocks' => '$1 blokade enega IP-naslova',
+'blocklist-userblocks' => 'Skrij blokade raÄunov',
+'blocklist-tempblocks' => 'Skrij zaÄasne blokade',
+'blocklist-addressblocks' => 'Skrij blokade enega IP-naslova',
+'blocklist-timestamp' => 'Časovni žig',
+'blocklist-target' => 'Cilj',
+'blocklist-expiry' => 'PoteÄe',
+'blocklist-by' => 'Administrator, ki je izvedel blokado',
+'blocklist-params' => 'Parametri blokade',
+'blocklist-reason' => 'Razlog',
'ipblocklist-submit' => 'IÅ¡Äi',
'ipblocklist-localblock' => 'Lokalna blokada',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Druga blokada|Drugi blokadi|Druge blokade}}',
-'blocklistline' => '$1, $2 je blokiral(-a) $3 ($4)',
'infiniteblock' => 'neomejen Äas',
'expiringblock' => 'preteÄe $1 ob $2',
'anononlyblock' => 'samo brezim.',
@@ -2433,10 +2514,10 @@ Dnevnik skrivanja je na voljo spodaj:',
'ipb_expiry_temp' => 'Blokade skritih uporabniških imen morajo biti trajne.',
'ipb_hide_invalid' => 'Ne morem skriti tega raÄuna; morda ima preveÄ urejanj.',
'ipb_already_blocked' => '"$1" je že blokiran',
-'ipb-needreblock' => '== Uporabnik je že blokiran ==
-$1 je že blokiran.
+'ipb-needreblock' => '$1 je že blokiran.
Ali želite spremeniti nastavitve blokade?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Druga blokada|Drugi blokadi|Druge blokade}}',
+'unblock-hideuser' => 'Ne morete odblokirati tega uporabnika, ker je njegovo uporabniško ime skrito.',
'ipb_cant_unblock' => 'Napaka: blokade Å¡t. $1 ni moÄ najti. Morda je bila že odstranjena.',
'ipb_blocked_as_range' => 'Napaka: IP-naslov $1 ni blokiran direktno in ga zato ni mogoÄe odblokirati.
Je pa blokiran kot del obmoÄja $2, ki ga lahko odblokirate.',
@@ -2477,6 +2558,7 @@ Ne pozabite je [[Special:UnlockDB|odkleniti]], ko boste konÄali z vzdrževanjem
'lockfilenotwritable' => 'Datoteka zaklepanja zbirke podatkov ni zapisljiva.
Za zaklepanje in odklepanje zbirke podatkov mora biti ta datoteka zapisljiva s strani spletnega strežnika.',
'databasenotlocked' => 'Zbirka podatkov ni zaklenjena.',
+'lockedbyandtime' => '($1 dne $2 ob $3)',
# Move page
'move-page' => 'Prestavi $1',
@@ -2601,7 +2683,7 @@ stran »[[{{MediaWiki:Mainpage}}]]«.',
'allmessagesdefault' => 'Prednastavljeno besedilo',
'allmessagescurrent' => 'Trenutno besedilo',
'allmessagestext' => 'Navedena so v imenskem prostoru MediaWiki dostopna sistemska sporoÄila.
-Za lokalizacijo in prevajanje obiÅ¡Äite [http://www.mediawiki.org/wiki/Localisation MediaWiki] in [http://translatewiki.net translatewiki.net] ter tako prispevajte k sploÅ¡nemu prevodu programja.',
+Za lokalizacijo in prevajanje obiÅ¡Äite [//www.mediawiki.org/wiki/Localisation MediaWiki] in [//translatewiki.net translatewiki.net] ter tako prispevajte k sploÅ¡nemu prevodu programja.',
'allmessagesnotsupportedDB' => "Te strani ni mogoÄe uporabljati, ker je bilo '''\$wgUseDatabaseMessages''' izkljuÄeno.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filtriraj po prilagoditvenem stanju:',
@@ -2744,9 +2826,7 @@ OmogoÄa vnos pojasnila v povzetku urejanja.',
'tooltip-summary' => 'Vnesite kratek povzetek',
# Metadata
-'nodublincore' => 'Metapodatki Dublin Core RDF so na tem strežniku onemogoÄeni.',
-'nocreativecommons' => 'Metapodatki Creative Commons RDF so za ta strežnik onemogoÄeni.',
-'notacceptable' => 'V obliki, ki jo lahko bere vaš odjemalec, wikistrežnik podatkov ne more ponuditi.',
+'notacceptable' => 'V obliki, ki jo lahko bere vaš odjemalec, wikistrežnik podatkov ne more ponuditi.',
# Attribution
'anonymous' => '{{PLURAL:$1|Brezimni uporabnik|Brezimna uporabnika|Brezimni uporabniki}} {{GRAMMAR:rodilnik|{{SITENAME}}}}',
@@ -2769,32 +2849,17 @@ OmogoÄa vnos pojasnila v povzetku urejanja.',
'spam_blanking' => 'Vse redakcije so vsebovale povezave na $1, izpraznjujem',
# Info page
-'infosubtitle' => 'Podatki o strani',
-'numedits' => 'Å tevilo urejanj (stran): $1',
-'numtalkedits' => 'Å tevilo urejanj (pogovorna stran): $1',
-'numwatchers' => 'Å tevilo oseb, ki spremljajo stran: $1',
-'numauthors' => 'Å tevilo razliÄnih avtorjev (stran): $1',
-'numtalkauthors' => 'Å tevilo razliÄnih avtorjev (pogovorna stran): $1',
-
-# Math options
-'mw_math_png' => 'Vedno prikaži PNG',
-'mw_math_simple' => 'Kadar je dovolj preprosto, uporabi HTML, sicer pa PNG',
-'mw_math_html' => 'Kadar je mogoÄe, uporabi HTML, sicer pa PNG',
-'mw_math_source' => 'Pusti v TeX-ovi obliki (za besedilne brskalnike)',
-'mw_math_modern' => 'PriporoÄeno za sodobne brskalnike',
-'mw_math_mathml' => 'ÄŒe je le mogoÄe, uporabi MathML (preizkusno)',
-
-# Math errors
-'math_failure' => 'Ni mi uspelo razÄleniti',
-'math_unknown_error' => 'neznana napaka',
-'math_unknown_function' => 'neznana funkcija',
-'math_lexing_error' => 'slovarska napaka',
-'math_syntax_error' => 'skladenjska napaka',
-'math_image_error' => 'Pretvarjanje v PNG ni uspelo; preverite, ali sta latex in dvips (ali dvips + gs + convert) pravilno nameÅ¡Äena.',
-'math_bad_tmpdir' => 'ZaÄasne mape za math ne morem ustvariti ali pisati vanjo.',
-'math_bad_output' => 'Izhodne mape za math ne morem ustvariti ali pisati vanjo.',
-'math_notexvc' => 'Manjka izvedbena datoteka texvc;
-za njeno namestitev si poglejte math/README.',
+'pageinfo-title' => 'Informacije o »$1«',
+'pageinfo-header-edits' => 'Urejanja',
+'pageinfo-header-watchlist' => 'Spisek nadzorov',
+'pageinfo-header-views' => 'Ogledi',
+'pageinfo-subjectpage' => 'Stran',
+'pageinfo-talkpage' => 'Pogovorna stran',
+'pageinfo-watchers' => 'Å tevilo spremljevalcev',
+'pageinfo-edits' => 'Å tevilo urejanj',
+'pageinfo-authors' => 'Å tevilo razliÄnih avtorjev',
+'pageinfo-views' => 'Å tevilo ogledov',
+'pageinfo-viewsperedit' => 'Razmerje med ogledi in urejanji',
# Patrolling
'markaspatrolleddiff' => 'OznaÄite kot nadzorovano',
@@ -2831,23 +2896,26 @@ $1',
'nextdiff' => 'Novejše urejanje →',
# Media information
-'mediawarning' => "'''Opozorilo''': Tovrstni tip datotek lahko vsebuje zlonamerno kodo.
+'mediawarning' => "'''Opozorilo''': Tovrstni tip datotek lahko vsebuje zlonamerno kodo.
Z njenim zagonom lahko ogrozite vaš sistem.",
-'imagemaxsize' => "Omejitev velikosti slik:<br />''(za opisne strani datotek)''",
-'thumbsize' => 'Velikost sliÄice (thumbnail):',
-'widthheight' => '$1&nbsp;×&nbsp;$2',
-'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|stran|strani}}',
-'file-info' => 'Velikost datoteke: $1, MIME-vrsta: <code>$2</code>',
-'file-info-size' => '$1 × $2 toÄk, velikost datoteke: $3, vrsta MIME: $4',
-'file-nohires' => '<small>Slika viÅ¡je loÄljivosti ni na voljo.</small>',
-'svg-long-desc' => 'datoteka SVG, v izvirniku $1 × $2 slikovnih toÄk, velikost datoteke: $3',
-'show-big-image' => 'Slika v viÅ¡ji loÄljivosti',
-'show-big-image-thumb' => '<small>Velikost predogleda: $1 × $2 toÄk</small>',
-'file-info-gif-looped' => 'ponavljajoÄe',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|sliÄica|sliÄici|sliÄice|sliÄic}}',
-'file-info-png-looped' => 'ponavljajoÄe',
-'file-info-png-repeat' => 'predvajano {{PLURAL:$1|$1-krat}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|sliÄica|sliÄici|sliÄice|sliÄic}}',
+'imagemaxsize' => "Omejitev velikosti slik:<br />''(za opisne strani datotek)''",
+'thumbsize' => 'Velikost sliÄice (thumbnail):',
+'widthheight' => '$1&nbsp;×&nbsp;$2',
+'widthheightpage' => '$1 × $2, $3 {{PLURAL:$3|stran|strani}}',
+'file-info' => 'Velikost datoteke: $1, MIME-vrsta: <code>$2</code>',
+'file-info-size' => '$1 × $2 toÄk, velikost datoteke: $3, vrsta MIME: $4',
+'file-info-size-pages' => '$1 × $2 toÄk, velikost datoteke: $3, vrsta MIME: $4, $5 {{PLURAL:$5|stran|strani}}',
+'file-nohires' => '<small>Slika viÅ¡je loÄljivosti ni na voljo.</small>',
+'svg-long-desc' => 'datoteka SVG, v izvirniku $1 × $2 slikovnih toÄk, velikost datoteke: $3',
+'show-big-image' => 'Slika v viÅ¡ji loÄljivosti',
+'show-big-image-preview' => '<small>Velikost predogleda: $1.</small>',
+'show-big-image-other' => '<small>Druge loÄljivosti: $1.</small>',
+'show-big-image-size' => '$1 × $2 toÄk',
+'file-info-gif-looped' => 'ponavljajoÄe',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|sliÄica|sliÄici|sliÄice|sliÄic}}',
+'file-info-png-looped' => 'ponavljajoÄe',
+'file-info-png-repeat' => 'predvajano {{PLURAL:$1|$1-krat}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|sliÄica|sliÄici|sliÄice|sliÄic}}',
# Special:NewFiles
'newimages' => 'Galerija novih datotek',
@@ -2876,7 +2944,7 @@ Vse nadaljnje povezave v isti vrstici se Å¡tejejo za izjeme, tj. za strani, kjer
'metadata-help' => 'Datoteka vsebuje Å¡e druge podatke, ki jih je verjetno dodal za njeno ustvaritev oziroma digitalizacijo uporabljeni fotografski aparat ali optiÄni bralnik. ÄŒe je bila datoteka pozneje spremenjena, podatki sprememb morda ne izražajo popolnoma.',
'metadata-expand' => 'Razširi seznam',
'metadata-collapse' => 'SkrÄi seznam',
-'metadata-fields' => 'V skrÄeni razpredelnici metapodatkov bodo prikazana le v tem sporoÄilu naÅ¡teta polja.
+'metadata-fields' => 'V skrÄeni razpredelnici metapodatkov slike bodo prikazana le v tem sporoÄilu naÅ¡teta polja.
Druga bodo po privzetem skrita.
* make
* model
@@ -2884,7 +2952,13 @@ Druga bodo po privzetem skrita.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Å irina',
@@ -2899,13 +2973,11 @@ Druga bodo po privzetem skrita.
'exif-ycbcrpositioning' => 'Razmestitev Y in C',
'exif-xresolution' => 'Vodoravna loÄljivost',
'exif-yresolution' => 'NavpiÄna loÄljivost',
-'exif-resolutionunit' => 'Enota loÄljivosti X in Y',
'exif-stripoffsets' => 'Mesto podatkov slike',
'exif-rowsperstrip' => 'Å tevilo vrstic na pas',
'exif-stripbytecounts' => 'Zlogov na pas stiskanja',
'exif-jpeginterchangeformat' => 'Odtis na JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Zlogov JPEG-podatkov',
-'exif-transferfunction' => 'Funkcija prenosa',
'exif-whitepoint' => 'KromatiÄnost bele toÄke',
'exif-primarychromaticities' => 'KromatiÄnosti osnovnih barv',
'exif-ycbcrcoefficients' => 'Koeficient matrice transformacije barvnega prostora',
@@ -2924,7 +2996,6 @@ Druga bodo po privzetem skrita.
'exif-compressedbitsperpixel' => 'Velikost toÄke po stiskanju (v bitih)',
'exif-pixelydimension' => 'Å irina slike',
'exif-pixelxdimension' => 'Višina slike',
-'exif-makernote' => 'Opombe proizvajalca',
'exif-usercomment' => 'Uporabniške pripombe',
'exif-relatedsoundfile' => 'PripadajoÄa zvoÄna datoteka',
'exif-datetimeoriginal' => 'Datum in Äas ustvaritve podatkov',
@@ -2938,7 +3009,6 @@ Druga bodo po privzetem skrita.
'exif-exposureprogram' => 'Program osvetlitve',
'exif-spectralsensitivity' => 'Spektralna obÄutljivost',
'exif-isospeedratings' => 'ObÄutljivost filma ali tipala (ISO)',
-'exif-oecf' => 'Optoelektronski pretvorbeni faktor',
'exif-shutterspeedvalue' => 'Hitrost zaklopa APEX',
'exif-aperturevalue' => 'Zaslonka APEX',
'exif-brightnessvalue' => 'Svetlost APEX',
@@ -2951,7 +3021,6 @@ Druga bodo po privzetem skrita.
'exif-focallength' => 'GoriÅ¡Äna razdalja leÄ',
'exif-subjectarea' => 'Površina predmeta',
'exif-flashenergy' => 'Energija bliskavice',
-'exif-spatialfrequencyresponse' => 'Odziv prostorske frekvence',
'exif-focalplanexresolution' => 'LoÄljivost goriÅ¡Äne ravnine X',
'exif-focalplaneyresolution' => 'LoÄljivost goriÅ¡Äne ravnine Y',
'exif-focalplaneresolutionunit' => 'Enota loÄljivosti goriÅ¡Äne ravnine',
@@ -2960,7 +3029,6 @@ Druga bodo po privzetem skrita.
'exif-sensingmethod' => 'Zaznavni postopek',
'exif-filesource' => 'Vir datoteke',
'exif-scenetype' => 'Vrsta prizora',
-'exif-cfapattern' => 'Matrica filtracije barv',
'exif-customrendered' => 'Obdelava slike po meri',
'exif-exposuremode' => 'Nastavitev osvetlitve',
'exif-whitebalance' => 'Ravnotežje belega',
@@ -3005,10 +3073,79 @@ Druga bodo po privzetem skrita.
'exif-gpsareainformation' => 'Ime GPS-obmoÄja',
'exif-gpsdatestamp' => 'GPS-datum',
'exif-gpsdifferential' => 'Diferencialni popravek GPS',
+'exif-jpegfilecomment' => 'Komentar datoteke JPEG',
+'exif-keywords' => 'KljuÄne besede',
+'exif-worldregioncreated' => 'PodroÄje sveta, v katerem je bila fotografija posneta',
+'exif-countrycreated' => 'Država, v kateri je bila fotografija posneta',
+'exif-countrycodecreated' => 'Šifra države, v kateri je bila fotografija posneta',
+'exif-provinceorstatecreated' => 'Provinca ali dežela, v kateri je bila fotografija posneta',
+'exif-citycreated' => 'Mesto, v katerem je bila fotografija posneta',
+'exif-sublocationcreated' => 'Podlokacija mesta, v kateri je bila fotografija posneta',
+'exif-worldregiondest' => 'Prikazano podroÄje sveta',
+'exif-countrydest' => 'Prikazana država',
+'exif-countrycodedest' => 'Šifra prikazane države',
+'exif-provinceorstatedest' => 'Prikazana provinca ali dežela',
+'exif-citydest' => 'Prikazano mesto',
+'exif-sublocationdest' => 'Prikazana podlokacija mesta',
'exif-objectname' => 'Kratek naslov',
+'exif-specialinstructions' => 'Posebna navodila',
+'exif-headline' => 'Naslov',
+'exif-credit' => 'Zasluge/Ponudnik',
+'exif-source' => 'Vir',
+'exif-editstatus' => 'Uredniško stanje slike',
+'exif-urgency' => 'Nujnost',
+'exif-fixtureidentifier' => 'Ime stalnice',
+'exif-locationdest' => 'Upodobljena lokacija',
+'exif-locationdestcode' => 'Å ifra upodobljene lokacije',
+'exif-objectcycle' => 'ÄŒas dneva, kateremu je predstavnost namenjena',
+'exif-contact' => 'Kontaktni podatki',
+'exif-writer' => 'Pisatelj',
+'exif-languagecode' => 'Jezik',
+'exif-iimversion' => 'RazliÄica IIM',
+'exif-iimcategory' => 'Kategorija',
+'exif-iimsupplementalcategory' => 'Dodatne kategorije',
+'exif-datetimeexpires' => 'Ne uporabljajte po',
+'exif-datetimereleased' => 'SproÅ¡Äeno',
+'exif-originaltransmissionref' => 'Å ifra prvotne lokacije prenosa',
+'exif-identifier' => 'OznaÄevalnik',
+'exif-lens' => 'Uporabljen objektiv',
+'exif-serialnumber' => 'Serijska Å¡tevilka fotoaparata',
+'exif-cameraownername' => 'Lastnik fotoaparata',
+'exif-label' => 'Oznaka',
+'exif-datetimemetadata' => 'Datum zadnje spremembe metapodatkov',
+'exif-nickname' => 'Neuradno ime slike',
+'exif-rating' => 'Ocena (od 5)',
+'exif-rightscertificate' => 'Certifikat upravljanja s pravicami',
+'exif-copyrighted' => 'Položaj avtorskih pravic',
+'exif-copyrightowner' => 'Imetnik avtorskih pravic',
+'exif-usageterms' => 'Pogoji uporabe',
+'exif-webstatement' => 'Izjava o avtorskih pravicah na spletu',
+'exif-originaldocumentid' => 'EnoliÄen ID izvirnega dokumenta',
+'exif-licenseurl' => 'URL dovoljenja za avtorske pravice',
+'exif-morepermissionsurl' => 'Informacije o alternativnem licenciranju',
+'exif-attributionurl' => 'Ko ponovno uporabljate delo, prosim, dodajte povezavo do',
+'exif-preferredattributionname' => 'Ko ponovno uporabljate delo, prosim, navedite',
+'exif-pngfilecomment' => 'Komentar datoteke PNG',
+'exif-disclaimer' => 'Zanikanje odgovornosti',
+'exif-contentwarning' => 'Opozorilo o vsebini',
+'exif-giffilecomment' => 'Komentar datoteke GIF',
+'exif-intellectualgenre' => 'Vrsta postavke',
+'exif-subjectnewscode' => 'Å ifra predmeta',
+'exif-scenecode' => 'Koda prizora IPTC',
+'exif-event' => 'Prikazan dogodek',
+'exif-organisationinimage' => 'Prikazana organizacija',
+'exif-personinimage' => 'Prikazana oseba',
+'exif-originalimageheight' => 'Višina slike, preden je bila obrezana',
+'exif-originalimagewidth' => 'Å irina slike, preden je bila obrezana',
# EXIF attributes
'exif-compression-1' => 'Nestisnjeno',
+'exif-compression-2' => 'Kodiranje CCITT skupina 3 1-razsežnostna spremenjena dolžina teka Huffman',
+'exif-compression-3' => 'Kodiranje CCITT skupina 3 faks',
+'exif-compression-4' => 'Kodiranje CCITT skupina 4 faks',
+
+'exif-copyrighted-true' => 'Avtorsko zaÅ¡Äiteno',
+'exif-copyrighted-false' => 'Javna last',
'exif-unknowndate' => 'Neznan datum',
@@ -3027,6 +3164,8 @@ Druga bodo po privzetem skrita.
'exif-xyresolution-i' => '$1 dpi ({{plural:$1|toÄka/palec|toÄki/palec|toÄke/palec|toÄk/palec|toÄk/palec}})',
'exif-xyresolution-c' => '$1 dpc ({{plural:$1|toÄka/centimeter|toÄki/centimeter|toÄke/centimeter|toÄk/centimeter|toÄk/centimeter}})',
+'exif-colorspace-65535' => 'Neumerjeno',
+
'exif-componentsconfiguration-0' => 'ne obstaja',
'exif-exposureprogram-0' => 'Ni doloÄen',
@@ -3140,6 +3279,10 @@ Druga bodo po privzetem skrita.
'exif-gpslongitude-e' => 'Vzhodna zemljepisna dolžina',
'exif-gpslongitude-w' => 'Zahodna zemljepisna dolžina',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|metra|metre|metrov}} nad morsko gladino',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|metra|metre|metrov}} pod morsko gladino',
+
'exif-gpsstatus-a' => 'Merjenje poteka',
'exif-gpsstatus-v' => 'Interoperabilnost merjenja',
@@ -3151,21 +3294,73 @@ Druga bodo po privzetem skrita.
'exif-gpsspeed-m' => 'Milje na uro',
'exif-gpsspeed-n' => 'Vozli',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometrov',
+'exif-gpsdestdistance-m' => 'Milj',
+'exif-gpsdestdistance-n' => 'NavtiÄnih milj',
+
+'exif-gpsdop-excellent' => 'Izvrstno ($1)',
+'exif-gpsdop-good' => 'Dobro ($1)',
+'exif-gpsdop-moderate' => 'Zmerno ($1)',
+'exif-gpsdop-fair' => 'Pošteno ($1)',
+'exif-gpsdop-poor' => 'Slabo ($1)',
+
+'exif-objectcycle-a' => 'Samo zjutraj',
+'exif-objectcycle-p' => 'Samo popoldne',
+'exif-objectcycle-b' => 'Tako zjutraj kot popoldne',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Pravi azimut',
'exif-gpsdirection-m' => 'Magnetni azimut',
+'exif-ycbcrpositioning-1' => 'Usredinjeno',
+'exif-ycbcrpositioning-2' => 'Vzporedno',
+
+'exif-dc-contributor' => 'Sodelavci',
+'exif-dc-coverage' => 'Prostorski ali Äasovni okvir predstavnosti',
+'exif-dc-date' => 'Datum(i)',
+'exif-dc-publisher' => 'Založnik',
+'exif-dc-relation' => 'Sorodna predstavnost',
+'exif-dc-rights' => 'Pravice',
+'exif-dc-source' => 'Izvorna predstavnost',
+'exif-dc-type' => 'Vrsta predstavnosti',
+
+'exif-rating-rejected' => 'Zavrnjeno',
+
+'exif-isospeedratings-overflow' => 'VeÄje od 65535',
+
+'exif-iimcategory-ace' => 'Umetnost, kultura in zabava',
+'exif-iimcategory-clj' => 'Kriminal in pravo',
+'exif-iimcategory-dis' => 'NesreÄe in nezgode',
+'exif-iimcategory-fin' => 'Ekonomija in poslovanje',
+'exif-iimcategory-edu' => 'Izobraževanje',
+'exif-iimcategory-evn' => 'Okolje',
+'exif-iimcategory-hth' => 'Zdravje',
+'exif-iimcategory-hum' => 'Zanimanja ljudi',
+'exif-iimcategory-lab' => 'Delo',
+'exif-iimcategory-lif' => 'Življenjski slog in prosti Äas',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Vera in prepriÄanja',
+'exif-iimcategory-sci' => 'Znanost in tehnologija',
+'exif-iimcategory-soi' => 'Družbena vprašanja',
+'exif-iimcategory-spo' => 'Å porti',
+'exif-iimcategory-war' => 'Vojne, spori in nemiri',
+'exif-iimcategory-wea' => 'Vreme',
+
+'exif-urgency-normal' => 'Navadno ($1)',
+'exif-urgency-low' => 'Nizko ($1)',
+'exif-urgency-high' => 'Visoko ($1)',
+'exif-urgency-other' => 'UporabniÅ¡ko doloÄena prednost ($1)',
+
# External editor support
'edit-externally' => 'Uredite datoteko z uporabo zunanjega orodja',
-'edit-externally-help' => '(Za veÄ informacij glejte [http://www.mediawiki.org/wiki/Manual:External_editors navodila za namestitev])',
+'edit-externally-help' => '(Za veÄ informacij glejte [//www.mediawiki.org/wiki/Manual:External_editors navodila za namestitev])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'vse',
-'imagelistall' => 'vse',
-'watchlistall2' => 'vse',
-'namespacesall' => 'vse',
-'monthsall' => 'vse',
-'limitall' => 'vse',
+'watchlistall2' => 'vse',
+'namespacesall' => 'vse',
+'monthsall' => 'vse',
+'limitall' => 'vse',
# E-mail address confirmation
'confirmemail' => 'Potrditev naslova elektronske pošte',
@@ -3246,11 +3441,12 @@ $1',
'trackbackdeleteok' => 'Sledilnik je uspešno izbrisan.',
# Delete conflict
-'deletedwhileediting' => "'''Opozorilo''': Med vašim urejanjem je bila stran izbrisana!",
-'confirmrecreate' => "Medtem ko ste stran urejali, jo je uporabnik [[User:$1|$1]] ([[User talk:$1|pogovor]]) izbrisal z razlogom:
+'deletedwhileediting' => "'''Opozorilo''': Med vašim urejanjem je bila stran izbrisana!",
+'confirmrecreate' => "Medtem ko ste stran urejali, jo je uporabnik [[User:$1|$1]] ([[User talk:$1|pogovor]]) izbrisal z razlogom:
:''$2''
Prosimo, potrdite, da jo resniÄno želite znova ustvariti.",
-'recreate' => 'Ponovno ustvari',
+'confirmrecreate-noreason' => 'Uporabnik [[User:$1|$1]] ([[User talk:$1|pogovor]]) je izbrisal to stran po zaÄetku vaÅ¡ega urejanja. Potrdite, da jo resniÄno želite znova ustvariti.',
+'recreate' => 'Ponovno ustvari',
'unit-pixel' => ' toÄk',
@@ -3259,6 +3455,12 @@ Prosimo, potrdite, da jo resniÄno želite znova ustvariti.",
'confirm-purge-top' => 'Osvežim predpomnjenje strani?',
'confirm-purge-bottom' => 'Osvežitev strani poÄisti predpomnilnik in prisili prikaz najnovejÅ¡e razliÄice.',
+# action=watch/unwatch
+'confirm-watch-button' => 'V redu',
+'confirm-watch-top' => 'Dodam stran na vaš spisek nadzorov?',
+'confirm-unwatch-button' => 'V redu',
+'confirm-unwatch-top' => 'Odstranim stran z vašega spiska nadzorov?',
+
# Multipage image navigation
'imgmultipageprev' => '↠prejšnja stran',
'imgmultipagenext' => 'naslednja stran →',
@@ -3302,15 +3504,14 @@ Poskusite normalni predogled.',
'watchlistedit-normal-legend' => 'Odstrani strani iz spiska nadzorov',
'watchlistedit-normal-explain' => 'Strani na vašem spisku nadzorov so prikazane spodaj.
Da odstranite stran, oznaÄite kvadratek poleg nje in kliknite »{{int:Watchlistedit-normal-submit}}«.
-Lahko tudi [[Special:Watchlist/raw|uredite gol spisek]].',
+Lahko tudi [[Special:EditWatchlist/raw|uredite gol spisek]].',
'watchlistedit-normal-submit' => 'Odstrani strani',
'watchlistedit-normal-done' => 'Iz vašega spiska nadzorov {{PLURAL:$1|je bila odstranjena $1 stran|sta bili odstranjeni $1 strani|so bile odstranjene $1 strani|je bilo odstranjenih $1 strani}}:',
'watchlistedit-raw-title' => 'Uredi gol spisek nadzorov',
'watchlistedit-raw-legend' => 'Uredi gol spisek nadzorov',
-'watchlistedit-raw-explain' => 'Strani na vašem spisku nadzorov so prikazane spodaj in jih lahko urejate z dodajanjem in odstranjevanjem s seznama;
-vsak naslov je v svoji vrstici.
+'watchlistedit-raw-explain' => 'Strani na vašem spisku nadzorov so prikazane spodaj in jih lahko urejate z dodajanjem in odstranjevanjem s seznama; vsak naslov je v svoji vrstici.
Ko konÄate, kliknite »{{int:Watchlistedit-raw-submit}}«.
-Uporabite lahko tudi [[Special:Watchlist/edit|standardni urejevalnik]].',
+Uporabite lahko tudi [[Special:EditWatchlist|standardni urejevalnik]].',
'watchlistedit-raw-titles' => 'Strani:',
'watchlistedit-raw-submit' => 'Posodobi spisek nadzorov',
'watchlistedit-raw-done' => 'Vaš spisek nadzorov je bil posodobljen.',
@@ -3327,33 +3528,33 @@ Uporabite lahko tudi [[Special:Watchlist/edit|standardni urejevalnik]].',
'duplicate-defaultsort' => "'''Opozorilo:''' Privzeti kljuÄ razvrÅ¡Äanja »$2« prepiÅ¡e prejÅ¡nji privzeti kljuÄ razvrÅ¡Äanja »$1«.",
# Special:Version
-'version' => 'RazliÄica',
-'version-extensions' => 'NameÅ¡Äene razÅ¡iritve',
-'version-specialpages' => 'Posebne strani',
-'version-parserhooks' => 'RazÅ¡iritve razÄlenjevalnika',
-'version-variables' => 'Spremenljivke',
-'version-skins' => 'Kože',
-'version-other' => 'Ostalo',
-'version-mediahandlers' => 'Upravljavci predstavnostnih vsebin',
-'version-hooks' => 'Razširitve',
-'version-extension-functions' => 'Funkcije razširitev',
-'version-parser-extensiontags' => 'Etikete razÅ¡iritev razÄlenjevalnika',
-'version-parser-function-hooks' => 'Funkcije razÅ¡iritev razÄlenjevalnika',
-'version-skin-extension-functions' => 'Funkcije razširitve kože',
-'version-hook-name' => 'Ime razširitve',
-'version-hook-subscribedby' => 'NaroÄen s strani',
-'version-version' => '(RazliÄica $1)',
-'version-license' => 'Dovoljenje',
-'version-poweredby-credits' => "Ta wiki poganja '''[http://www.mediawiki.org/ MediaWiki]''', vse pravice pridržave © 2001-$1 $2.",
-'version-poweredby-others' => 'drugi',
-'version-license-info' => 'MediaWiki je prosto programje; lahko ga razÅ¡irjate in / ali spreminjate pod pogoji GNU General Public License, kot ga je objavila Free Software Foundation; bodisi License razliÄice 2 ali (po vaÅ¡i izbiri) katere koli poznejÅ¡e razliÄice.
+'version' => 'RazliÄica',
+'version-extensions' => 'NameÅ¡Äene razÅ¡iritve',
+'version-specialpages' => 'Posebne strani',
+'version-parserhooks' => 'RazÅ¡iritve razÄlenjevalnika',
+'version-variables' => 'Spremenljivke',
+'version-antispam' => 'PrepreÄevanje smetja',
+'version-skins' => 'Kože',
+'version-other' => 'Ostalo',
+'version-mediahandlers' => 'Upravljavci predstavnostnih vsebin',
+'version-hooks' => 'Razširitve',
+'version-extension-functions' => 'Funkcije razširitev',
+'version-parser-extensiontags' => 'Etikete razÅ¡iritev razÄlenjevalnika',
+'version-parser-function-hooks' => 'Funkcije razÅ¡iritev razÄlenjevalnika',
+'version-hook-name' => 'Ime razširitve',
+'version-hook-subscribedby' => 'NaroÄen s strani',
+'version-version' => '(RazliÄica $1)',
+'version-license' => 'Dovoljenje',
+'version-poweredby-credits' => "Ta wiki poganja '''[//www.mediawiki.org/ MediaWiki]''', vse pravice pridržave © 2001-$1 $2.",
+'version-poweredby-others' => 'drugi',
+'version-license-info' => 'MediaWiki je prosto programje; lahko ga razÅ¡irjate in / ali spreminjate pod pogoji GNU General Public License, kot ga je objavila Free Software Foundation; bodisi License razliÄice 2 ali (po vaÅ¡i izbiri) katere koli poznejÅ¡e razliÄice.
MediaWiki je razÅ¡irjan v upanju, da bo uporaben, vendar BREZ KAKRÅ NEGA KOLI ZAGOTOVILA; tudi brez posrednega jamstva PRODAJNE VREDNOSTI ali PRIMERNOSTI ZA DOLOÄŒEN NAMEN. Oglejte si GNU General Public License za veÄ podrobnosti.
-Skupaj s programom bi morali bi prejeti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopijo GNU General Public License]; Äe je niste, piÅ¡ite Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ali jo [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html preberite na spletu].',
-'version-software' => 'NameÅ¡Äena programska oprema',
-'version-software-product' => 'Izdelek',
-'version-software-version' => 'RazliÄica',
+Skupaj s programom bi morali bi prejeti [{{SERVER}}{{SCRIPTPATH}}/COPYING kopijo GNU General Public License]; Äe je niste, piÅ¡ite Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA ali jo [//www.gnu.org/licenses/old-licenses/gpl-2.0.html preberite na spletu].',
+'version-software' => 'NameÅ¡Äena programska oprema',
+'version-software-product' => 'Izdelek',
+'version-software-version' => 'RazliÄica',
# Special:FilePath
'filepath' => 'Pot do datoteke',
@@ -3365,22 +3566,22 @@ Slike so prikazane v polni loÄljivosti, druge vrste datotek pa se zaženejo v z
Vnesite ime datoteke brez predpone »{{ns:file}}:«.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Iskanje podvojenih datotek',
-'fileduplicatesearch-summary' => 'Iskanje podvojenih datotek temelji na podlagi njenih hashvrednosti.
-
-Vnesite ime datoteke brez predpone »{{ns:file}}:«.',
-'fileduplicatesearch-legend' => 'PoiÅ¡Äi dvojnik',
-'fileduplicatesearch-filename' => 'Ime datoteke:',
-'fileduplicatesearch-submit' => 'Iskanje',
-'fileduplicatesearch-info' => '$1 × $2 pik<br />Velikost datoteke: $3<br />Vrsta MIME: $4',
-'fileduplicatesearch-result-1' => 'Datoteka »$1« nima identiÄnih dvojnikov.',
-'fileduplicatesearch-result-n' => 'Datoteka »$1« ima $2 {{PLURAL:$2|identiÄni dvojnik|identiÄna dvojnika|identiÄne dvojnike|identiÄnih dvojnikov}}.',
+'fileduplicatesearch' => 'Iskanje podvojenih datotek',
+'fileduplicatesearch-summary' => 'Iskanje podvojenih datotek, ki temelji na podlagi njenih hashvrednosti.',
+'fileduplicatesearch-legend' => 'PoiÅ¡Äi dvojnik',
+'fileduplicatesearch-filename' => 'Ime datoteke:',
+'fileduplicatesearch-submit' => 'Iskanje',
+'fileduplicatesearch-info' => '$1 × $2 pik<br />Velikost datoteke: $3<br />Vrsta MIME: $4',
+'fileduplicatesearch-result-1' => 'Datoteka »$1« nima identiÄnih dvojnikov.',
+'fileduplicatesearch-result-n' => 'Datoteka »$1« ima $2 {{PLURAL:$2|identiÄni dvojnik|identiÄna dvojnika|identiÄne dvojnike|identiÄnih dvojnikov}}.',
+'fileduplicatesearch-noresults' => 'Datoteke imenovane »$1« ni mogoÄe najti.',
# Special:SpecialPages
'specialpages' => 'Posebne strani',
'specialpages-note' => '----
* Navadne posebne strani.
-* <strong class="mw-specialpagerestricted">Omejene posebne strani.</strong>',
+* <span class="mw-specialpagerestricted">Omejene posebne strani.</span>
+* <span class="mw-specialpagecached">Predpomnjene posebne strani (morda so zastarele).</span>',
'specialpages-group-maintenance' => 'Vzdrževalna poroÄila',
'specialpages-group-other' => 'Ostale posebne strani',
'specialpages-group-login' => 'Prijavite se / registrirajte se',
diff --git a/languages/messages/MessagesSli.php b/languages/messages/MessagesSli.php
index 5b404b55..ee175a6b 100644
--- a/languages/messages/MessagesSli.php
+++ b/languages/messages/MessagesSli.php
@@ -146,15 +146,6 @@ $messages = array(
'index-category' => 'Indizierte Seyta',
'noindex-category' => 'Neindizierte Seyta',
-'mainpagetext' => "'''MediaWiki wourde erfolgreich installiert.'''",
-'mainpagedocfooter' => 'Hilfe zur Benutzung und Konfiguration der Wiki-Software fendest du eim [http://meta.wikimedia.org/wiki/Help:Contents Benutzerhandbichl].
-
-== Stoarthilfa ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Liste der Konfigurationsvariablen]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki-FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailingliste neuer MediaWiki-Versionen]',
-
'about' => 'Ieber',
'article' => 'Seyte',
'newwindow' => '(wird ei annem neua Fanster geöffnet)',
@@ -356,12 +347,11 @@ Abfroage: $2',
'protectedinterface' => 'Diese Seyte enthält Text fier doas Sproach-Interface der Software und ies gesperrt, im Missbrauch zu verhindern.',
'editinginterface' => "'''Warnung:''' Diese Seyte enthält vu dar MediaWiki-Software benutzta Text.
Änderunga wirka siech uff de Benutzeroberfläche aus.
-Fier Iebersetzunga ziehe bitte ei Betracht, diese eim [http://translatewiki.net/wiki/Main_Page?setlang=de Translatewiki], damm MediaWiki-Lokalisierungsprojekt, durchzufiehra.",
+Fier Iebersetzunga ziehe bitte ei Betracht, diese eim [//translatewiki.net/wiki/Main_Page?setlang=de Translatewiki], damm MediaWiki-Lokalisierungsprojekt, durchzufiehra.",
'sqlhidden' => '(SQL-Abfroage versteckt)',
'cascadeprotected' => 'Diese Seyte ies zur Beoarbeetung gesperrt. Se ies ei de {{PLURAL:$1|folgende Seyte|folgenda Seyta}} eengebunda, de mittels dar Kaskadensperroption geschietzt {{PLURAL:$1|ies|sein}}:
$2',
'namespaceprotected' => "Du host kenne Berechtigung, de Seyte eim '''$1'''-Noamensraum zu beorbeeta.",
-'customcssjsprotected' => 'Du biest ne berechtigt, diese Seyte zu beoarbeeta, do se zu dann persenlicha Eenstellunga annes andern Benutzers gehiert.',
'ns-specialprotected' => 'Spezialseyta kinna nicht beoarbeet warn.',
'titleprotected' => "Enne Seyte miet dam della Noama koan nicht oageläat warn.
De Sperre wurde durch [[User:$1|$1]] miet der Begrindung ''„$2“'' eigerichtet.",
@@ -398,6 +388,7 @@ Vergiss nä, denne [[Special:Preferences|{{SITENAME}}-Eistellunga]] oazupoassa.'
'createaccount' => 'Benutzerkonto oanlega',
'gotaccount' => "Du hast bereits a Benutzerkonto? '''$1'''.",
'gotaccountlink' => 'Oanmelda',
+'userlogin-resetlink' => 'Die Anmeldedaten vergessen?',
'createaccountmail' => 'ieber E-Mail',
'badretype' => 'De beida Passwörter stimma nä ieberein.',
'userexists' => 'Dar delle Benutzernoame ies schunt vergahn. Bitte wähle enn andern.',
@@ -410,7 +401,7 @@ Vergiss nä, denne [[Special:Preferences|{{SITENAME}}-Eistellunga]] oazupoassa.'
'loginsuccess' => 'Du biest jitz ols „$1“ bei {{SITENAME}} oagemeldet.',
'nosuchuser' => 'Dar Nutzernoame „$1“ existiert ne.
Ieberpriefe de Schreibweise (Gruß-/Kleenschreibung beachta) oder [[Special:UserLogin/signup|melde diech ols neuer Benutzer oa]].',
-'nosuchusershort' => 'Dar Nutzernoame „<nowiki>$1</nowiki>“ existiert ne. Bitte ieberpriefe de Schreibweise.',
+'nosuchusershort' => 'Dar Nutzernoame „$1“ existiert ne. Bitte ieberpriefe de Schreibweise.',
'nouserspecified' => 'Bitte gieb enn Benutzernoamen oa.',
'wrongpassword' => 'Doas Passwurt ies foalsch (oder fehlt). Bitte versuche is erneut.',
'wrongpasswordempty' => 'Is wurde kei Poaßwurt eigegahn. Bitte versuchs nuch amool.',
@@ -455,7 +446,7 @@ Foalls doas Nutzerkonto irrtümlich oagelagt wurde, koast du diese Noachricht ig
Bitte warte, bevor du is erneut probierst.',
'loginlanguagelabel' => 'Sproache: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Passwurt ändern',
'resetpass_announce' => "Anmeldung mi'm per E-Mail zugesandten Code. Im de Anmeldung abzuschließa, mußt du jitz a neues Poaßwurt wähla.",
'resetpass_header' => 'Passwurt ändern',
@@ -482,7 +473,6 @@ Meeglicherweise host du dei Poaßwurt bereits erfolgreich geändert oder a neues
'extlink_tip' => 'Externe Verknipfung (http:// beoachta)',
'headline_sample' => 'Ieberschreft (Ebene 2)',
'headline_tip' => 'Ebene 2 Ieberschreft',
-'math_sample' => 'Formel hier eifiega',
'nowiki_sample' => 'unformatierta Text hier eifiega',
'nowiki_tip' => 'unformatierter Text (nowiki)',
'image_tip' => 'Verknipfung miet Datei',
@@ -556,7 +546,7 @@ Du koast diesen Tittel uffa andern Seyta [[Special:Search/{{PAGENAME}}|sucha]],
'noarticletext-nopermission' => 'Diese Seyte enthält momentan noo kenn Text.
Du koast diesen Tittel uff dann andern Seyta [[Special:Search/{{PAGENAME}}|sicha]]
oder ei dann zugehieriga <span class="plainlinks">[{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbichern sicha].</span>',
-'userpage-userdoesnotexist' => 'Doas Nutzerkonto „$1“ ies ne vurhanda. Bitte priefe, ob du diese Seyte wirklich erstalla/beoarbeeta wielst.',
+'userpage-userdoesnotexist' => 'Doas Nutzerkonto „<nowiki>$1</nowiki>“ ies ne vurhanda. Bitte priefe, ob du diese Seyte wirklich erstalla/beoarbeeta wielst.',
'userpage-userdoesnotexist-view' => 'Nutzerkonto „$1“ existiert ne.',
'clearyourcache' => "'''Hinweis - Laare noach damm Speichern dann Browser-Cache, im de Änderungen sahn zu kinna:''' '''Mozilla/Firefox/Safari:''' ''Shift'' gedrückt halten und uff ''Aktualisiera'' klicka oder alternativ entweder ''Strg-F5'' oder ''Strg-R'' (''Befehlstaste-R'' bei Mac) dricka; '''Konqueror: '''Uff ''Aktualisiera'' klicka oder ''F5'' dricka; '''Opera:''' Cache under ''Extras → Eenstellunga'' laara; '''Internet Explorer:''' ''Strg-F5'' dricka oder ''Strg'' gedrickt halta und dabei ''Aktualisiera'' oaklicka.",
'usercssyoucanpreview' => "'''Tipp:''' Benutze dann Vurschau-Button, im dei neues CSS vur damm Speichern zu testa.",
@@ -864,8 +854,6 @@ Stelle secher, doaß de Versionsgeschichte a'r Seyte historisch korrekt ies.",
'rows' => 'Zeila:',
'columns' => 'Spalta:',
'resultsperpage' => 'Treffer pro Seyte:',
-'contextlines' => 'Zeila pro Treffer:',
-'contextchars' => 'Zeecha pro Zeile:',
'stub-threshold' => 'Linkformatierung <a href="#" class="stub">klenner Seyta</a> (ei Byte):',
'recentchangesdays' => 'Oazoahl dar Tage, de de Liste dar „Letzta Änderunga“ standardmäßig imfassa sull:',
'recentchangescount' => 'Oazoahl dar standardmäßig oagezeigta Beoarbeetunga:',
@@ -893,8 +881,8 @@ Stelle secher, doaß de Versionsgeschichte a'r Seyte historisch korrekt ies.",
'badsiglength' => 'Ihre Underschrift derf ne länger sein als wie $1 {{PLURAL:$1|character|Zeecha}}.',
'gender-unknown' => 'ne oagagahn',
'prefs-help-realname' => 'Optional. Dei echter Noame werd denn Beiträga zugeordnet.',
-'prefs-help-email' => "De Angabe a'r E-Mail ies optional, ermeeglicht oaber de Zusendung annes Ersatzpoaßwurtes, wenn du dei Poaßwurt vergessen host.
-Miet andern Nutzern koast du au ieber de Nutzerdischkurseyta Kontakt uffnahma, ohne doaß du denne Identität uffelähn mußt.",
+'prefs-help-email' => 'Die Angabe einer E-Mail-Adresse ist optional, ermöglicht aber die Zusendung eines Ersatzpasswortes, sofern du dein Passwort vergessen hast.',
+'prefs-help-email-others' => 'Mit anderen Benutzern kannst du auch über die Benutzerdiskussionsseiten Kontakt aufnehmen, ohne dass du deine Identität offenlegen musst.',
'prefs-help-email-required' => 'Is werd anne giltige E-Mail-Atresse benetigt.',
'prefs-signature' => 'Underschrift',
'prefs-dateformat' => 'Datumsfurmat',
@@ -989,7 +977,6 @@ Miet andern Nutzern koast du au ieber de Nutzerdischkurseyta Kontakt uffnahma, o
'right-userrights' => 'Nutzerrechte beoarbeeta',
'right-userrights-interwiki' => 'Nutzerrechte ei andern Wikis beoarbeeta',
'right-siteadmin' => 'Datenbank sperra und entsperra',
-'right-reset-passwords' => 'Poaßwurt annes andern Nutzers zerrickesetza',
'right-sendemail' => 'E-Mails oa andere Nutzer senda',
# User rights log
@@ -1123,10 +1110,6 @@ Bitte priefe, ob du doas Bild ei voller Ufflesung vorliegen host und loade diese
'upload-options' => 'Huchloade-Optionen',
'watchthisupload' => 'Diese Datei beobachta',
'filewasdeleted' => 'Anne Datei miet diesem Noama wurde schunnt eemoll huchgeloada und zwischenzeitlich wieder geläscht. Bitte priefe zuerst dann Eintrag eim $1, bevor du de Datei wirklich speicherst.',
-'upload-wasdeleted' => "'''Ochtiche: Du lädst anne Datei huch, de bereits frieher geläscht wurde.'''
-
-Bitte priefe sorgfältig, ob doas erneute Huchloada dann Richtlinien entspricht.
-Zu denner Information folgt doas Läsch-Logbuch miet dar Begrindung fier de vorhergehende Läschung:",
'filename-bad-prefix' => "Dar Dateinoame beginnt miet '''„$1“'''. Dies ies eim allgemeena dar vu a'r Digitalkamera vorgegebene Dateinoame und daher ne sehr aussagekräftig.
Bitte gieb dar Datei an'n Noama, dar dann Inhalt besser beschreibt.",
'upload-success-subj' => 'Erfolgreich huchgeloada',
@@ -1190,7 +1173,6 @@ De folgende Liste zeigt ock {{PLURAL:$1|dann erschta Link|de erschta $1 Links}}
Anne [[Special:WhatLinksHere/$2|vullständige Liste]] ies verfiegbar.',
'nolinkstoimage' => 'Kenne Seyte nutzt diese Datei.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Weitere Links]] fier diese Datei.',
-'redirectstofile' => 'De {{PLURAL:$1|folgende Datei leitet|folgenda $1 Dateien leiten}} uff diese Datei wetter:',
'duplicatesoffile' => 'De {{PLURAL:$1|folgende Datei ies a Duplikat|folgenda $1 Dateien sein Duplikate}} dieser Datei ([[Special:FileDuplicateSearch/$2|wettere Details]]):',
'sharedupload' => 'Diese Datei stommt ous $1 on dorf voo andern Projekta verwendet waan.',
'sharedupload-desc-here' => 'Diese Datei stammt aus $1 und darf von anderen Projekten verwendet werden. Die Beschreibung der [$2 Dateibeschreibungsseite] wird unten angezeigt.',
@@ -1449,14 +1431,12 @@ Ols Obsender werd de E-Mail-Adtresse aus denn [[Special:Preferences|Einstellunga
'watchlistanontext' => 'Du mußt diech $1, im denne Beobachtungsliste zu sahn oder Einträge uff ihr zu beoarbeeta.',
'watchnologin' => 'Du best ne oagemeldet',
'watchnologintext' => 'Du mußt [[Special:UserLogin|oagemeldet]] sei, im denne Beobachtungsliste zu beoarbeeta.',
-'addedwatch' => 'Zerr Beobachtungsliste hinzugefiegt',
'addedwatchtext' => 'De Seyte „<nowiki>$1</nowiki>“ wurde zu denner [[Special:Watchlist|Beobachtungsliste]] hinzugefiegt.
Spätere Änneronga oa dieser Seyte on dar dazugeheeriga Dischkursseite waan durt gelistet on
ei dar Iebersicht dar [[Special:RecentChanges|letzta Änneronga]] ei Fettschrift dargestellt.
Wenn du de Seyte wieder voo denner Beobachtungsliste entferna mechtest, klicke uff dar jeweiligen Seyte uff „nee meh beobachta“.',
-'removedwatch' => 'Vun dar Beobachtungsliste entfernt',
'removedwatchtext' => 'De Seyte „[[:$1]]“ wurde vun denner [[Special:Watchlist|Beobachtungsliste]] entfernt.',
'watch' => 'Beobachta',
'watchthispage' => 'Seyte beobachta',
@@ -1506,9 +1486,9 @@ Is waan sulange kenne wettera Benachrichtigungs-E-Mails gesendet, bis du de Seyt
Dei freindliches {{SITENAME}}-Benoachrichtigungssystem
--
-Im de Einstellunga denner Beobachtungsliste oazupoaßa, besiche: {{fullurl:{{#special:Watchlist}}/edit}}
+Im de Einstellunga denner Beobachtungsliste oazupoaßa, besiche: {{canonicalurl:{{#special:EditWatchlist}}}}
-Rickmeldungen und wettere Helfe: {{fullurl:{{MediaWiki:Helppage}}}}',
+Rickmeldungen und wettere Helfe: {{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Seyte läscha',
@@ -1523,7 +1503,7 @@ Rickmeldungen und wettere Helfe: {{fullurl:{{MediaWiki:Helppage}}}}',
'confirmdeletetext' => 'Du best dabei, eene Seyte miet olla zugeheeriga ältera Versiona zu läscha. Bite bestätige dazu, dass du dir dar Konsequenza bewusst best, on dass du ei Iebereinstimmung miet dan [[{{MediaWiki:Policy-url}}|Richtlinia]] handelst.',
'actioncomplete' => 'Aksjonn beendet',
'actionfailed' => 'Aksjonn fahlgeschlaga',
-'deletedtext' => '„<nowiki>$1</nowiki>“ wurde geläscht. Eim $2 findest du eene Liste dar letzta Läschunga.',
+'deletedtext' => '„$1“ wurde geläscht. Eim $2 findest du eene Liste dar letzta Läschunga.',
'deletedarticle' => 'hoot „[[$1]]“ geläscht',
'suppressedarticle' => 'veränderte de Sechtbarkeet vu „[[$1]]“',
'dellogpage' => 'Läsch-Logbuch',
@@ -1700,16 +1680,15 @@ $1",
'whatlinkshere-filters' => 'Filter',
# Block/unblock
-'blockip' => 'IP-Atresse/Benutzer sperra',
-'blockip-legend' => 'IP-Atresse/Benutzer sperra',
-'blockiptext' => "Mit diesem Formular sperrst du anne IP-Atresse oder an'n Nutzernoama, su doaß vu dort kenne Änderunga meh vorgenumma waan kinna.
+'blockip' => 'IP-Atresse/Benutzer sperra',
+'blockip-legend' => 'IP-Atresse/Benutzer sperra',
+'blockiptext' => "Mit diesem Formular sperrst du anne IP-Atresse oder an'n Nutzernoama, su doaß vu dort kenne Änderunga meh vorgenumma waan kinna.
Dies sullte ock erfolga, im Vandalismus zu verhindern und ei Iebereinstimmung miet dann [[{{MediaWiki:Policy-url}}|Richtlinien]].
Bitte gib dann Grund fier de Sperre oa.",
-'ipaddress' => 'IP-Atresse oder Benutzernoame:',
-'ipadressorusername' => 'IP-Atresse oder Benutzernoame:',
-'ipbreason' => 'Begriendung:',
-'ipbreasonotherlist' => 'Andere Begrindung',
-'ipbreason-dropdown' => '* Allgemeene Sperrgrinde
+'ipadressorusername' => 'IP-Atresse oder Benutzernoame:',
+'ipbreason' => 'Begriendung:',
+'ipbreasonotherlist' => 'Andere Begrindung',
+'ipbreason-dropdown' => '* Allgemeene Sperrgrinde
** Eenfiega foalscher Informationa
** Laara vu Seyta
** Fiegt massenweise externe Links a
@@ -1717,79 +1696,71 @@ Bitte gib dann Grund fier de Sperre oa.",
** bedrohliches Verhaala/Belästigung
** Missbrauch durch mehrere Nutzerkonten
** Ungeeigneter Nutzernoame',
-'ipbanononly' => 'Ock anonyme Nutzer sperra',
-'ipbcreateaccount' => 'Erstellung vu Nutzerkonten verhindern',
-'ipbemailban' => 'E-Mail-Versand sperra',
-'ipbenableautoblock' => 'Sperre de aktuell vu diesem Benutzer genutzte IP-Atresse suwie automatisch olle folgenda, vu denen aus ar Beoarbeetunga oder doas Oalega vu Benutzeraccounts versucht',
-'ipbsubmit' => 'IP-Atresse/Benutzer sperra',
-'ipbother' => 'Ondere Dauer (englsch):',
-'ipboptions' => '2 Stonda:2 hours,1 Taag:1 day,3 Taage:3 days,1 Wuche:1 week,2 Wucha:2 weeks,1 Moonat:1 month,3 Moonate:3 months,6 Moonate:6 months,1 Joahr:1 year,Unbeschränkt:infinite',
-'ipbotheroption' => 'Oandere Dauer',
-'ipbotherreason' => 'Andere/ergänzende Begrindung:',
-'ipbhidename' => 'Nutzernoame ei Beoarbeetunga und Listen verstecka',
-'ipbwatchuser' => 'Nutzer(dischkur)seyte beobachta',
-'ipballowusertalk' => 'Nutzer darf eegene Dischkurseyta während senner Sperre beoarbeeta',
-'ipb-change-block' => 'Sperre miet diesen Sperrparametern erneuern',
-'badipaddress' => 'De IP-Atresse hoot a foalsches Furmat.',
-'blockipsuccesstext' => 'Dar Nutzer/de IP-Atresse [[Special:Contributions/$1|$1]] wurde gesperrt.<br />
+'ipbcreateaccount' => 'Erstellung vu Nutzerkonten verhindern',
+'ipbemailban' => 'E-Mail-Versand sperra',
+'ipbenableautoblock' => 'Sperre de aktuell vu diesem Benutzer genutzte IP-Atresse suwie automatisch olle folgenda, vu denen aus ar Beoarbeetunga oder doas Oalega vu Benutzeraccounts versucht',
+'ipbsubmit' => 'IP-Atresse/Benutzer sperra',
+'ipbother' => 'Ondere Dauer (englsch):',
+'ipboptions' => '2 Stonda:2 hours,1 Taag:1 day,3 Taage:3 days,1 Wuche:1 week,2 Wucha:2 weeks,1 Moonat:1 month,3 Moonate:3 months,6 Moonate:6 months,1 Joahr:1 year,Unbeschränkt:infinite',
+'ipbotheroption' => 'Oandere Dauer',
+'ipbotherreason' => 'Andere/ergänzende Begrindung:',
+'ipbhidename' => 'Nutzernoame ei Beoarbeetunga und Listen verstecka',
+'ipbwatchuser' => 'Nutzer(dischkur)seyte beobachta',
+'ipb-change-block' => 'Sperre miet diesen Sperrparametern erneuern',
+'badipaddress' => 'De IP-Atresse hoot a foalsches Furmat.',
+'blockipsuccesstext' => 'Dar Nutzer/de IP-Atresse [[Special:Contributions/$1|$1]] wurde gesperrt.<br />
Zur Uffhebung dar Sperre siehe ie [[Special:IPBlockList|Liste oller aktiven Sperra]].',
-'ipb-edit-dropdown' => 'Sperrgrinde beoarbeeta',
-'ipb-unblock-addr' => '„$1“ freigahn',
-'ipb-unblock' => 'IP-Atresse/Nutzer freigahn',
-'ipb-blocklist' => 'Olle aktuellen Sperra oazeiga',
-'ipb-blocklist-contribs' => 'Nutzerbeiträge fier „$1“',
-'unblockip' => 'IP-Atresse freigahn',
-'unblockiptext' => "Miet diesem Formular koast du anne IP-Atresse oder an'n Nutzer freigahn.",
-'ipusubmit' => 'Freigahn',
-'unblocked' => '[[User:$1|$1]] wurde freigegahn',
-'unblocked-id' => 'Sperr-ID $1 wurde freigegahn',
-'ipblocklist' => 'Gesperrte Benutzer',
-'ipblocklist-legend' => "Siche noach a'm gesperrta Nutzer",
-'ipblocklist-username' => 'Nutzernoame oder IP-Atresse:',
-'ipblocklist-sh-userblocks' => 'Benutzersperra $1',
-'ipblocklist-sh-tempblocks' => 'Befristete Sperra $1',
-'ipblocklist-sh-addressblocks' => 'IP-Sperra $1',
-'ipblocklist-submit' => 'Sucha',
-'ipblocklist-otherblocks' => 'Andere {{PLURAL:$1|Sperre|Sperra}}',
-'blocklistline' => '$1, $2 sperrte $3 (bis $4)',
-'expiringblock' => 'endet oam $1 im $2 Seeger',
-'anononlyblock' => 'ocke Anonyme',
-'createaccountblock' => 'Erstellung vu Nutzerkonten gesperrt',
-'blocklist-nousertalk' => 'darf eegene Dischkurseyte ne beoarbeeta',
-'ipblocklist-empty' => 'De Liste enthält kenne Eenträge.',
-'ipblocklist-no-results' => 'De gesuchte IP-Atresse/dar Nutzernoame ies ne gesperrt.',
-'blocklink' => 'Sperra',
-'unblocklink' => 'freigahn',
-'change-blocklink' => 'Sperre ändern',
-'contribslink' => 'Beiträge',
-'autoblocker' => 'Automatische Sperre, do du anne gemeinsame IP-Atresse miet [[User:$1|$1]] benutzt. Grund dar Nutzersperre: „$2“.',
-'blocklogpage' => 'Benutzersperr-Logbuch',
-'blocklogentry' => 'sperrte „[[$1]]“ fier dan Zeitraum: $2 $3',
-'reblock-logentry' => 'änderte de Sperre fier „[[$1]]“ fier dann Zeitraum: $2 $3',
-'blocklogtext' => 'Dies ies doas Logbuch ieber Sperrunga und Entsperrunga vu Nutzern und IP-Atressa.
+'ipb-edit-dropdown' => 'Sperrgrinde beoarbeeta',
+'ipb-unblock-addr' => '„$1“ freigahn',
+'ipb-unblock' => 'IP-Atresse/Nutzer freigahn',
+'ipb-blocklist' => 'Olle aktuellen Sperra oazeiga',
+'ipb-blocklist-contribs' => 'Nutzerbeiträge fier „$1“',
+'unblockip' => 'IP-Atresse freigahn',
+'unblockiptext' => "Miet diesem Formular koast du anne IP-Atresse oder an'n Nutzer freigahn.",
+'ipusubmit' => 'Freigahn',
+'unblocked' => '[[User:$1|$1]] wurde freigegahn',
+'unblocked-id' => 'Sperr-ID $1 wurde freigegahn',
+'ipblocklist' => 'Gesperrte Benutzer',
+'ipblocklist-legend' => "Siche noach a'm gesperrta Nutzer",
+'ipblocklist-submit' => 'Sucha',
+'ipblocklist-otherblocks' => 'Andere {{PLURAL:$1|Sperre|Sperra}}',
+'expiringblock' => 'endet oam $1 im $2 Seeger',
+'anononlyblock' => 'ocke Anonyme',
+'createaccountblock' => 'Erstellung vu Nutzerkonten gesperrt',
+'blocklist-nousertalk' => 'darf eegene Dischkurseyte ne beoarbeeta',
+'ipblocklist-empty' => 'De Liste enthält kenne Eenträge.',
+'ipblocklist-no-results' => 'De gesuchte IP-Atresse/dar Nutzernoame ies ne gesperrt.',
+'blocklink' => 'Sperra',
+'unblocklink' => 'freigahn',
+'change-blocklink' => 'Sperre ändern',
+'contribslink' => 'Beiträge',
+'autoblocker' => 'Automatische Sperre, do du anne gemeinsame IP-Atresse miet [[User:$1|$1]] benutzt. Grund dar Nutzersperre: „$2“.',
+'blocklogpage' => 'Benutzersperr-Logbuch',
+'blocklogentry' => 'sperrte „[[$1]]“ fier dan Zeitraum: $2 $3',
+'reblock-logentry' => 'änderte de Sperre fier „[[$1]]“ fier dann Zeitraum: $2 $3',
+'blocklogtext' => 'Dies ies doas Logbuch ieber Sperrunga und Entsperrunga vu Nutzern und IP-Atressa.
Automatisch gesperrte IP-Atressa waan ne erfasst.
-Siehe de [[Special:IPBlockList|Liste dar gesperrta IP-Atressa und Nutzernoama]] fier olle aktiven Sperra.',
-'unblocklogentry' => 'hoot de Sperre voo „$1“ uffgehoba',
-'block-log-flags-anononly' => 'ock Anonyme',
-'block-log-flags-nocreate' => 'Erstellung voo Benutzerkonta gesperrt',
-'block-log-flags-nousertalk' => 'darf eegene Dischkurseyte ne beoarbeeta',
-'block-log-flags-hiddenname' => 'Nutzernoame versteckt',
-'range_block_disabled' => 'De Meeglichkeit, ganze Atressräume zu sperra, ies ne aktiviert.',
-'ipb_expiry_invalid' => 'De eingegebene Dauer ies ungiltig.',
-'ipb_expiry_temp' => 'Versteckte Nutzernoamas-Sperra sulla permanent sei.',
-'ipb-needreblock' => '== Sperre vurhanda ==
-„$1“ ies bereits gesperrt. Mechtest du de Sperrparameter ändern?',
-'ipb-otherblocks-header' => 'Andere {{PLURAL:$1|Sperre|Sperra}}',
-'ipb_cant_unblock' => 'Fahler: Sperr-ID $1 ne gefunda. De Sperre wurde bereits uffgehuba.',
-'ipb_blocked_as_range' => 'Fahler: De IP-Atresse $1 wurde ols Teel dar Bereichssperre $2 indirekt gesperrt. Anne Entsperrung vu $1 alleene ies ne meeglich.',
-'ip_range_invalid' => 'Ungiltiger IP-Atressbereich.',
-'blockme' => 'Sperre miech',
-'proxyblocker-disabled' => 'Diese Funksjonn ies deaktiviert.',
-'proxyblockreason' => 'Denne IP-Atresse wurde gesperrt, do se a offener Proxy ies. Bitte kontaktiere denn Internet-Provider oder denne Systemadministratoren und informiere se ieber dieses meegliche Sicherheetsproblem.',
-'proxyblocksuccess' => 'Fattich',
-'sorbsreason' => 'De IP-Atresse ies ei dar DNSBL vu {{SITENAME}} ols offener PROXY gelistet.',
-'sorbs_create_account_reason' => 'De IP-Atresse ies ei dar DNSBL vu {{SITENAME}} ols offener PROXY gelistet. Doas Oalega neuer Nutzer ies ne meeglich.',
-'cant-block-while-blocked' => 'Du koast kenne andern Nutzer sperra, während du selbst gesperrt best',
+Siehe de [[Special:BlockList|Liste dar gesperrta IP-Atressa und Nutzernoama]] fier olle aktiven Sperra.',
+'unblocklogentry' => 'hoot de Sperre voo „$1“ uffgehoba',
+'block-log-flags-anononly' => 'ock Anonyme',
+'block-log-flags-nocreate' => 'Erstellung voo Benutzerkonta gesperrt',
+'block-log-flags-nousertalk' => 'darf eegene Dischkurseyte ne beoarbeeta',
+'block-log-flags-hiddenname' => 'Nutzernoame versteckt',
+'range_block_disabled' => 'De Meeglichkeit, ganze Atressräume zu sperra, ies ne aktiviert.',
+'ipb_expiry_invalid' => 'De eingegebene Dauer ies ungiltig.',
+'ipb_expiry_temp' => 'Versteckte Nutzernoamas-Sperra sulla permanent sei.',
+'ipb-needreblock' => '„$1“ ies bereits gesperrt. Mechtest du de Sperrparameter ändern?',
+'ipb-otherblocks-header' => 'Andere {{PLURAL:$1|Sperre|Sperra}}',
+'ipb_cant_unblock' => 'Fahler: Sperr-ID $1 ne gefunda. De Sperre wurde bereits uffgehuba.',
+'ipb_blocked_as_range' => 'Fahler: De IP-Atresse $1 wurde ols Teel dar Bereichssperre $2 indirekt gesperrt. Anne Entsperrung vu $1 alleene ies ne meeglich.',
+'ip_range_invalid' => 'Ungiltiger IP-Atressbereich.',
+'blockme' => 'Sperre miech',
+'proxyblocker-disabled' => 'Diese Funksjonn ies deaktiviert.',
+'proxyblockreason' => 'Denne IP-Atresse wurde gesperrt, do se a offener Proxy ies. Bitte kontaktiere denn Internet-Provider oder denne Systemadministratoren und informiere se ieber dieses meegliche Sicherheetsproblem.',
+'proxyblocksuccess' => 'Fattich',
+'sorbsreason' => 'De IP-Atresse ies ei dar DNSBL vu {{SITENAME}} ols offener PROXY gelistet.',
+'sorbs_create_account_reason' => 'De IP-Atresse ies ei dar DNSBL vu {{SITENAME}} ols offener PROXY gelistet. Doas Oalega neuer Nutzer ies ne meeglich.',
+'cant-block-while-blocked' => 'Du koast kenne andern Nutzer sperra, während du selbst gesperrt best',
# Developer tools
'lockdb' => 'Datenbank sperra',
@@ -1896,7 +1867,7 @@ Alternativ ies dar Export au miet dar Syntax [[{{#Special:Export}}/{{MediaWiki:M
'allmessagesname' => 'Noame',
'allmessagesdefault' => 'Standardtext',
'allmessagestext' => 'Dies ies anne Liste dar MediaWiki-Systemtexte.
-Besiche de Seyta [http://www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [http://translatewiki.net translatewiki.net], wenn du diech oa dar Lokalisierung vu MediaWiki beteiliga mechtest.',
+Besiche de Seyta [//www.mediawiki.org/wiki/Localisation MediaWiki-Lokalisierung] und [//translatewiki.net translatewiki.net], wenn du diech oa dar Lokalisierung vu MediaWiki beteiliga mechtest.',
'allmessagesnotsupportedDB' => 'Diese Spezialseyte stieht ne zur Verfigung, do se ieber dann Parameter <tt>$wgUseDatabaseMessages</tt> deaktiviert wurde.',
'allmessages-filter-all' => 'Olle',
'allmessages-language' => 'Sproache:',
@@ -2017,9 +1988,7 @@ Olle Transwiki-Import-Aksjonna waan eim [[Special:Log/import|Import-Logbuch]] pr
'tooltip-summary' => 'Gib eine kurze Zusammenfassung ein',
# Metadata
-'nodublincore' => 'Dublin-Core-RDF-Metadaten sein fier diesen Server deaktiviert.',
-'nocreativecommons' => 'Creative-Commons-RDF-Metadaten sein fier diesen Server deaktiviert.',
-'notacceptable' => 'Dar Wiki-Server koan de Daten ne fier dei Ausgabegerät uffbereita.',
+'notacceptable' => 'Dar Wiki-Server koan de Daten ne fier dei Ausgabegerät uffbereita.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonymer Nutzer|Anonyme Nutzer}} uff {{SITENAME}}',
@@ -2036,32 +2005,6 @@ Olle Transwiki-Import-Aksjonna waan eim [[Special:Log/import|Import-Logbuch]] pr
'spamprotectionmatch' => "'''Dar folgende Text wurde vum Spamfilter gefunda: ''$1'''''",
'spam_blanking' => 'Olle Versionen enthielta Links zu $1, bereinigt.',
-# Info page
-'infosubtitle' => 'Seytainformation',
-'numedits' => 'Oazoahl dar Seyta änderunga: $1',
-'numtalkedits' => 'Oazoahl dar Dischkuränderunga: $1',
-'numwatchers' => 'Oazoahl dar Beobachter: $1',
-'numauthors' => 'Oazoahl dar Autoren: $1',
-'numtalkauthors' => 'Oazoahl dar Dischkurteelnahmer: $1',
-
-# Math options
-'mw_math_png' => 'Emmer ols PNG darstalla',
-'mw_math_simple' => 'Einfaches TeX ols HTML darstella, sunst PNG',
-'mw_math_html' => 'Wenn meeglich ols HTML darstella, sunst PNG',
-'mw_math_source' => 'Ols TeX belassen (fier Textbrowser)',
-'mw_math_modern' => 'Empfehlenswert fier moderne Browser',
-
-# Math errors
-'math_failure' => 'Parser-Fahler',
-'math_unknown_error' => 'Unbekennter Fahler',
-'math_unknown_function' => 'Unbekennte Funksjonn',
-'math_lexing_error' => '„Lexing“-Fahler',
-'math_syntax_error' => 'Syntaxfahler',
-'math_image_error' => 'de PNG-Konvertierung schlug fehl',
-'math_bad_tmpdir' => 'Doas temporäre Verzeichnis fier mathematische Formeln koan ne oagelagt oder beschrieba waan.',
-'math_bad_output' => 'Doas Zielverzeichnis fier mathematische Formeln koan ne oagelegt oder beschrieba waan.',
-'math_notexvc' => 'Doas texvc-Programm wurde ne gefunda. Bitte math/README beachten.',
-
# Patrolling
'markaspatrolleddiff' => 'Ols kontrolliert markiern',
'markaspatrolledtext' => 'Diese Seyte ols kontrolliert markiernn',
@@ -2095,17 +2038,16 @@ $1',
'nextdiff' => 'Zim nächsta Versionsunderschied →',
# Media information
-'mediawarning' => "'''Warnung:''' Dieser Dateityp koan beswilligen Programmcode enthalta.
+'mediawarning' => "'''Warnung:''' Dieser Dateityp koan beswilligen Programmcode enthalta.
Durch doas Herunderloada und Effna dar Datei koan dei Computer beschädigt waan.",
-'imagemaxsize' => "Maximale Bildgrieße:<br />''(fier Dateibeschreibungsseyta)''",
-'thumbsize' => 'Standardgriße dar Vurschaubilder (Thumbnails):',
-'widthheightpage' => '$1×$2, {{PLURAL:$3|1 Seyte|$3 Seyta}}',
-'file-info' => 'Dateigreeße: $1, MIME-Typ: $2',
-'file-info-size' => '$1 × $2 Pixel, Dateigreeße: $3, MIME-Typ: $4',
-'file-nohires' => '<small>Kenne hiehere Uffleesung vurhanda.</small>',
-'svg-long-desc' => 'SVG-Datei, Basisgreeße: $1 × $2 Pixel, Dateigreeße: $3',
-'show-big-image' => 'Version ei hieherer Uffleesung',
-'show-big-image-thumb' => 'small>Greeße dar Vuroasicht: $1 × $2 Pixel</small>',
+'imagemaxsize' => "Maximale Bildgrieße:<br />''(fier Dateibeschreibungsseyta)''",
+'thumbsize' => 'Standardgriße dar Vurschaubilder (Thumbnails):',
+'widthheightpage' => '$1×$2, {{PLURAL:$3|1 Seyte|$3 Seyta}}',
+'file-info' => 'Dateigreeße: $1, MIME-Typ: $2',
+'file-info-size' => '$1 × $2 Pixel, Dateigreeße: $3, MIME-Typ: $4',
+'file-nohires' => '<small>Kenne hiehere Uffleesung vurhanda.</small>',
+'svg-long-desc' => 'SVG-Datei, Basisgreeße: $1 × $2 Pixel, Dateigreeße: $3',
+'show-big-image' => 'Version ei hieherer Uffleesung',
# Special:NewFiles
'imagelisttext' => "Hier ies anne Liste vu '''$1''' {{PLURAL:$1|Datei|Dateien}}, sortiert $2.",
@@ -2127,14 +2069,21 @@ Darauf folgende Seitalinks ei derselba Zeile definiera Ausnahma, ei deren Kontex
'metadata-help' => 'Diese Datei enthält weitere Informationa, de ei dar Regel voo dar Digitalkamera oder dam verwendeta Scanner stoamma. Dorch noachträgliche Bearbeitung der Originaldatei kinna eenige Details verändert worden sein.',
'metadata-expand' => 'Erweiterte Details eenblenda',
'metadata-collapse' => 'Erweiterte Details oausblenda',
-'metadata-fields' => 'De folgenden Felder derr EXIF-Metadata ei diesem MediaWiki-Systemtext waan uff Bildbeschreibungsseita oagezäat; weitere standardmäßig „eingeklappte“ Details kinna oagezäat waan.
+'metadata-fields' => 'Die folgenden Felder der EXIF-Metadaten, die in diesem MediaWiki-Systemtext angegeben sind, werden auf Bildbeschreibungsseiten mit eingeklappter Metadatentabelle angezeigt.
+Weitere werden standardmäßig nicht angezeigt.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagelength' => 'Länge',
@@ -2145,11 +2094,9 @@ Darauf folgende Seitalinks ei derselba Zeile definiera Ausnahma, ei deren Kontex
'exif-ycbcrsubsampling' => 'Subsampling Rate vu Y bis C',
'exif-xresolution' => 'Horizontale Ufflesung',
'exif-yresolution' => 'Vertikale Ufflesung',
-'exif-resolutionunit' => 'Maßeinheet dar Ufflesung',
'exif-rowsperstrip' => 'Oazoahl Zeila pro Streifa',
'exif-stripbytecounts' => 'Bytes pro komprimiertem Streifa',
'exif-jpeginterchangeformatlength' => 'Griße dar JPEG-Daten ei Bytes',
-'exif-transferfunction' => 'Iebertragungsfunksjonn',
'exif-whitepoint' => 'Manuell miet Messung',
'exif-primarychromaticities' => 'Primäre Forboart',
'exif-referenceblackwhite' => 'Schworz/Weeß-Referenzpunkte',
@@ -2159,7 +2106,6 @@ Darauf folgende Seitalinks ei derselba Zeile definiera Ausnahma, ei deren Kontex
'exif-colorspace' => 'Forbraum',
'exif-pixelydimension' => 'Giltige Bildbreite',
'exif-pixelxdimension' => 'Giltige Bildhiehe',
-'exif-makernote' => 'Herstallernotiz',
'exif-usercomment' => 'Nutzerkommentare',
'exif-relatedsoundfile' => 'Zugehierige Tondatei',
'exif-exposuretime-format' => '$1 Sekunda ($2)',
@@ -2261,15 +2207,13 @@ Darauf folgende Seitalinks ei derselba Zeile definiera Ausnahma, ei deren Kontex
# External editor support
'edit-externally' => 'Diese Datei miet eenem externen Programm beorbeeta',
-'edit-externally-help' => '(Siehe de [http://www.mediawiki.org/wiki/Manual:External_editors Installationsanweisunga] fier weitere Informationa)',
+'edit-externally-help' => '(Siehe de [//www.mediawiki.org/wiki/Manual:External_editors Installationsanweisunga] fier weitere Informationa)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'olle',
-'imagelistall' => 'olle',
-'watchlistall2' => 'olle',
-'namespacesall' => 'olle',
-'monthsall' => 'olle',
-'limitall' => 'olle',
+'watchlistall2' => 'olle',
+'namespacesall' => 'olle',
+'monthsall' => 'olle',
+'limitall' => 'olle',
# E-mail address confirmation
'confirmemail' => 'E-Mail-Atresse bestätiga (Authentifizierung)',
@@ -2368,14 +2312,14 @@ Bitte bestätige, doß du diese Seyte wirklich neu erstalla mechta.",
'watchlistedit-noitems' => 'Denne Beobachtungsliste ies laar.',
'watchlistedit-normal-title' => 'Beobachtungsliste beoarbeeta',
'watchlistedit-normal-legend' => 'Einträge vu dar Beobachtungsliste entferna',
-'watchlistedit-normal-explain' => 'Dies sein de Einträge denner Beobachtungsliste. Im Einträge zu entferna, markiere de Kästchen neben dann Einträga und klicke oam Ende dar Seyte uff „Einträge entferna“. Du koast denne Beobachtungsliste au eim [[Special:Watchlist/raw|Listenfurmat beoarbeeta]].',
+'watchlistedit-normal-explain' => 'Dies sein de Einträge denner Beobachtungsliste. Im Einträge zu entferna, markiere de Kästchen neben dann Einträga und klicke oam Ende dar Seyte uff „Einträge entferna“. Du koast denne Beobachtungsliste au eim [[Special:EditWatchlist/raw|Listenfurmat beoarbeeta]].',
'watchlistedit-normal-submit' => 'Einträge entferna',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 Eintrag wurde|$1 Einträge wurden}} vu denner Beobachtungsliste entfernt:',
'watchlistedit-raw-title' => 'Beobachtungsliste eim Listenfurmat beoarbeeta',
'watchlistedit-raw-legend' => 'Beobachtungsliste eim Listenfurmat beoarbeeta',
'watchlistedit-raw-explain' => 'Dies sein de Einträge denner Beobachtungsliste eim Listenfurmat. De Einträge kinna zeilaweise geläscht oder hinzugefiegt waan.
Pro Zeile ies a Eintrag erlaubt. Wenn du fattig best, klicke uff „Beobachtungsliste speichern“.
-Du koast au de [[Special:Watchlist/edit|Standard-Beoarbeetungsseyte]] benutza.',
+Du koast au de [[Special:EditWatchlist|Standard-Beoarbeetungsseyte]] benutza.',
'watchlistedit-raw-submit' => 'Beobachtungsliste speichern',
'watchlistedit-raw-done' => 'Denne Beobachtungsliste wurde gespeichert.',
'watchlistedit-raw-added' => '{{PLURAL:$1|1 Eintrag wurde|$1 Einträge wurden}} hinzugefiegt:',
@@ -2390,15 +2334,14 @@ Du koast au de [[Special:Watchlist/edit|Standard-Beoarbeetungsseyte]] benutza.',
'duplicate-defaultsort' => 'Ochtiche: Dar Sortierungsschlissel „$2“ ieberschreibt dann vorher verwendeta Schlissel „$1“.',
# Special:Version
-'version-specialpages' => 'Spezialseyta',
-'version-other' => 'Oanderes',
-'version-hooks' => "Schnittstalla ''(Hooks)''",
-'version-extension-functions' => 'Funksjonnsuffruffe',
-'version-parser-extensiontags' => "Parser-Erweiterunga ''(tags)''",
-'version-parser-function-hooks' => 'Parser-Funksjonna',
-'version-skin-extension-functions' => 'Skin-Erweiterungs-Funksjonna',
-'version-hook-name' => 'Schnittstallanoame',
-'version-hook-subscribedby' => 'Uffruff vu',
+'version-specialpages' => 'Spezialseyta',
+'version-other' => 'Oanderes',
+'version-hooks' => "Schnittstalla ''(Hooks)''",
+'version-extension-functions' => 'Funksjonnsuffruffe',
+'version-parser-extensiontags' => "Parser-Erweiterunga ''(tags)''",
+'version-parser-function-hooks' => 'Parser-Funksjonna',
+'version-hook-name' => 'Schnittstallanoame',
+'version-hook-subscribedby' => 'Uffruff vu',
# Special:FilePath
'filepath-submit' => 'Pfad sucha',
@@ -2407,9 +2350,7 @@ Du koast au de [[Special:Watchlist/edit|Standard-Beoarbeetungsseyte]] benutza.',
De Eengabe muuß ohne dann Zusatz „{{ns:file}}:“ erfolga.',
# Special:FileDuplicateSearch
-'fileduplicatesearch-summary' => 'Siche noach Datei-Duplikaten uff Basis ihres Hash-Wertes.
-
-De Eengabe muuß ohne dann Zusatz „{{ns:file}}:“ erfolga.',
+'fileduplicatesearch-summary' => 'Siche noach Datei-Duplikaten uff Basis ihres Hash-Wertes.',
'fileduplicatesearch-legend' => 'Suche noach Duplikata',
'fileduplicatesearch-filename' => 'Dateinoame:',
'fileduplicatesearch-submit' => 'Sucha',
diff --git a/languages/messages/MessagesSm.php b/languages/messages/MessagesSm.php
index 4c08d0a2..2a462185 100644
--- a/languages/messages/MessagesSm.php
+++ b/languages/messages/MessagesSm.php
@@ -210,10 +210,8 @@ $messages = array(
'ilsubmit' => "Su'e",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => "mea 'uma",
-'imagelistall' => "mea 'uma",
-'watchlistall2' => "mea 'uma",
-'namespacesall' => "mea 'uma",
+'watchlistall2' => "mea 'uma",
+'namespacesall' => "mea 'uma",
# Multipage image navigation
'imgmultigo' => 'Alu!',
diff --git a/languages/messages/MessagesSma.php b/languages/messages/MessagesSma.php
index 8b635505..fd2dfcfb 100644
--- a/languages/messages/MessagesSma.php
+++ b/languages/messages/MessagesSma.php
@@ -111,7 +111,6 @@ $messages = array(
'searcharticle' => 'Vaadtsa',
'history' => 'Histovrije',
'history_short' => 'Histovrije',
-'info_short' => 'Bïevnesh',
'printableversion' => 'Tjaelije bielie',
'permalink' => 'Permanente lïenghke',
'print' => 'Tjaeledh olkese',
@@ -223,7 +222,7 @@ $messages = array(
'loginsuccesstitle' => 'Dov lea daelie sïjse logge',
'loginsuccess' => "'''Dov lea daelie sïjselogge nille {{SITENAME}} goh \"\$1\".'''",
'nosuchuser' => 'Dïhte gååvnese ijje nuhtjien goh nomme "$1". Gïehtjedidh dov baakoehtidh, jallh skaepede orre nuhtjien.',
-'nosuchusershort' => 'Dïhte gååvnese ijje nuhtjien goh nomme "<nowiki>$1</nowiki>". Gïehtjedidh baakoehtidh.',
+'nosuchusershort' => 'Dïhte gååvnese ijje nuhtjien goh nomme "$1". Gïehtjedidh baakoehtidh.',
'nouserspecified' => 'Dov galkedh tjaeledh nuhtjiennomme.',
'wrongpassword' => 'Loevesbaakoe lea gåarhmede. Vuejnedh vihth.',
'wrongpasswordempty' => 'Loevesbaakoe lea gåaroes. Vuejnedh vihth.',
@@ -237,7 +236,7 @@ Gïemhpes logge sïjse vihth männgan datne åtna låhka dïhte.',
'accountcreated' => 'Nuhtjien skaepede',
'loginlanguagelabel' => 'Gïele: $1',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'BÃ¥eries loevesbaakoe:',
'newpassword' => 'Orre loevesbaakoe:',
'retypenew' => 'Odhasit orre loevesbaakoe:',
@@ -253,8 +252,6 @@ Gïemhpes logge sïjse vihth männgan datne åtna låhka dïhte.',
'extlink_tip' => 'Ehkstäärne lïenghke (måjhtajidh http:// prefihkse)',
'headline_sample' => 'Rubriike tjaalege',
'headline_tip' => 'Daltese 2 rubriike',
-'math_sample' => 'Bïejedh fårmele daesnie',
-'math_tip' => 'Ryökneme fårmele (LaTeX)',
'nowiki_sample' => 'Bïejedh ijje-hammode tjaalege daesnie',
'nowiki_tip' => 'Rievdde wikïhammode',
'image_tip' => 'Lååtje guvvie',
@@ -552,8 +549,6 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge sÃ
# Watchlist
'watchlist' => 'Mov sïektjedhlästoe',
'mywatchlist' => 'Mov sïektjedhlästoe',
-'addedwatch' => 'Lissiehtidh gåajkoe sïektjedhlästoe',
-'removedwatch' => 'Sihkojuvvon raejeste sïektjedhlästoe',
'removedwatchtext' => 'Bielie "[[:$1]]" lea sihkojuvvon raejeste [[Special:Watchlist|dov sïektjedhlästoe]].',
'watch' => 'Sïektjedh',
'watchthispage' => 'Sïektjedh dïhte bielie',
@@ -573,7 +568,7 @@ Dov dorje värrhtoedimmie gååvnese bielieh, jallh [[Special:UserLogin|logge sÃ
'deletepage' => 'Tjåegkedh bielie',
'historywarning' => 'Vaaroehtidh: Bielie datne gïehtele ahte sihkut åtna histovrije:',
'actioncomplete' => 'Deahpadimmie voerkes',
-'deletedtext' => '"<nowiki>$1</nowiki>" lea sihkojuvvon.
+'deletedtext' => '"$1" lea sihkojuvvon.
Vuajna $2 ihke galtege bïjre männgan sihkojuvvonh.',
'deletedarticle' => 'sihkoj "[[$1]]"',
'dellogpage' => 'Sihkkun logge',
@@ -592,7 +587,7 @@ Vuajna $2 ihke galtege bïjre männgan sihkojuvvonh.',
'protectexpiry' => 'Boarasnuvve:',
'protect_expiry_invalid' => 'Ov-jiltiige buaorasjnuvvenaigi.',
'protect_expiry_old' => 'Boarasnuvvenaigi lea vaesedh.',
-'protect-text' => "Daesnie dorje datne vuajna jih värrhtoedimmie vaarjelidhdaltese dejstie bielie '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Daesnie dorje datne vuajna jih värrhtoedimmie vaarjelidhdaltese dejstie bielie '''$1'''.",
'protect-locked-access' => "Dov nuhtjien åtna ijje luhpie gåajkoe värrhtoedimmie tjaeleste-vaarjelidh.
Daaletje tjaeleste-vaarjelidh sïjsestäälninge ihke bielie '''$1''' lea:",
'protect-default' => '(Ã¥vte-veeljeme)',
@@ -652,20 +647,18 @@ Daaletje tjaeleste-vaarjelidh sïjsestäälninge ihke bielie '''$1''' lea:",
'whatlinkshere-links' => '↠lïenghkeh',
# Block/unblock
-'blockip' => 'Tjöödtjehtidh nuhtjien',
-'ipaddress' => 'IP Tjaalesijjie:',
-'ipadressorusername' => 'IP Tjaalesijjie jallh nuhtjiennomme:',
-'ipbother' => 'Jeatjebh tïjje:',
-'ipboptions' => '2 täjmoe:2 hours,1 biejjie:1 day,3 biejjie:3 days,1 våhkoe:1 week,2 våhkoe:2 weeks,1 aske:1 month,3 aske:3 months,6 aske:6 months,1 jaepie:1 year,gietjieloeves:infinite',
-'ipbotheroption' => 'jeatjebh',
-'ipblocklist' => 'Lästoe bijjelen tjöödtjehtidh IP tjaalesijjieh jih nuhtjiennommeh',
-'ipblocklist-username' => 'Nuhtjiennomme jallh IP tjaalesijjie:',
-'ipblocklist-submit' => 'Ohtsedh',
-'blocklink' => 'tjöödtjehtidh',
-'unblocklink' => 'ov-tjöödtjehtidh',
-'contribslink' => 'dåarjoeh',
-'blocklogpage' => 'Tjöödtjehtidh logge',
-'blocklogentry' => 'blåhkedidh "[[$1]]" $2 $3',
+'blockip' => 'Tjöödtjehtidh nuhtjien',
+'ipadressorusername' => 'IP Tjaalesijjie jallh nuhtjiennomme:',
+'ipbother' => 'Jeatjebh tïjje:',
+'ipboptions' => '2 täjmoe:2 hours,1 biejjie:1 day,3 biejjie:3 days,1 våhkoe:1 week,2 våhkoe:2 weeks,1 aske:1 month,3 aske:3 months,6 aske:6 months,1 jaepie:1 year,gietjieloeves:infinite',
+'ipbotheroption' => 'jeatjebh',
+'ipblocklist' => 'Lästoe bijjelen tjöödtjehtidh IP tjaalesijjieh jih nuhtjiennommeh',
+'ipblocklist-submit' => 'Ohtsedh',
+'blocklink' => 'tjöödtjehtidh',
+'unblocklink' => 'ov-tjöödtjehtidh',
+'contribslink' => 'dåarjoeh',
+'blocklogpage' => 'Tjöödtjehtidh logge',
+'blocklogentry' => 'blåhkedidh "[[$1]]" $2 $3',
# Developer tools
'lockdb' => 'Tjuevtedh daatabaase',
@@ -765,14 +758,6 @@ Gïemhpes veeljeme jeatjebh nomme.',
'siteuser' => '{{SITENAME}} nuhtjien $1',
'siteusers' => '{{SITENAME}} nuhtjien(h) $1',
-# Info page
-'infosubtitle' => 'Bïevnesh ihke bielie',
-'numedits' => 'Låhkoe värrhtoedimmieh (bielie): $1',
-'numtalkedits' => 'Låhkoe värrhtoedimmieh (dïjvaldidh bielie): $1',
-
-# Math errors
-'math_unknown_error' => 'ammes båajhtede',
-
# Patrol log
'patrol-log-auto' => '(jïjtsistie)',
@@ -781,12 +766,11 @@ Gïemhpes veeljeme jeatjebh nomme.',
'nextdiff' => 'Minngebe joekehts →',
# Media information
-'file-info' => 'baalka stoerre: $1, MIME-vuekie: $2',
-'file-info-size' => '$1 × $2 pixel, baalka stoerre: $3, MIME-vuekie: $4',
-'file-nohires' => '<small>Ijje jïlle bäjjeselöösninge jaksoes.</small>',
-'svg-long-desc' => 'SVG baalka, maadth-stoerre $1 × $2 pixel, baalka stoerre: $3',
-'show-big-image' => 'Dïeves stoerre',
-'show-big-image-thumb' => '<small>Stoerre ihke dïhte vuesiehtidh: $1 × $2 pixel</small>',
+'file-info' => 'baalka stoerre: $1, MIME-vuekie: $2',
+'file-info-size' => '$1 × $2 pixel, baalka stoerre: $3, MIME-vuekie: $4',
+'file-nohires' => '<small>Ijje jïlle bäjjeselöösninge jaksoes.</small>',
+'svg-long-desc' => 'SVG baalka, maadth-stoerre $1 × $2 pixel, baalka stoerre: $3',
+'show-big-image' => 'Dïeves stoerre',
# Special:NewFiles
'newimages' => 'Gallerije dejstie orre baalkah',
@@ -804,7 +788,13 @@ Jeatjebh dajveh lea gaptjedh goh sïejhme, bine vuesehte gåessie taabelle stoer
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Gamte',
@@ -843,14 +833,12 @@ Jeatjebh dajveh lea gaptjedh goh sïejhme, bine vuesehte gåessie taabelle stoer
# External editor support
'edit-externally' => 'Värrhtoedimmie dïhte baalka meatan ehksteerne applikasjovne',
-'edit-externally-help' => 'Vuajna [http://www.mediawiki.org/wiki/Manual:External_editors instalasjovne instruksjovne] ihke vielie bïevnesh.',
+'edit-externally-help' => 'Vuajna [//www.mediawiki.org/wiki/Manual:External_editors instalasjovne instruksjovne] ihke vielie bïevnesh.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'gaajhke',
-'imagelistall' => 'gaajhke',
-'watchlistall2' => 'gaajhke',
-'namespacesall' => 'gaajhke',
-'monthsall' => 'gaajhke',
+'watchlistall2' => 'gaajhke',
+'namespacesall' => 'gaajhke',
+'monthsall' => 'gaajhke',
# Scary transclusion
'scarytranscludetoolong' => '[URL lea ihke guhkie; gaatelassjedh]',
diff --git a/languages/messages/MessagesSo.php b/languages/messages/MessagesSo.php
index 40ee5d1d..ead65b86 100644
--- a/languages/messages/MessagesSo.php
+++ b/languages/messages/MessagesSo.php
@@ -139,13 +139,6 @@ $messages = array(
'index-category' => 'Maqaalada indeksed',
'noindex-category' => 'Maqaalada noindeksed',
-'mainpagetext' => "'''MediaWiki Si fiican oo kuugu install gareeyay.'''",
-'mainpagedocfooter' => "Meeshaan ka akhriso sidii aad u isticmaali leheed brogramka wiki [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] .
-== Bilaaw ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
-
'about' => 'Ku saabsan',
'article' => 'Qoraalka bogga oo kooban',
'newwindow' => '(dariishad cusub aa furmeeyso)',
@@ -195,10 +188,10 @@ $messages = array(
'history' => 'Taariikhda bogga',
'history_short' => 'Taariikh',
'updatedmarker' => 'Wax laga bedelay ilaa booqoshadaydii ugu dambeysay',
-'info_short' => 'Warbixin',
'printableversion' => 'Nooc la daabicikaro',
'permalink' => 'Linkiga daaimka ah',
'print' => 'Daabac',
+'view' => 'Itusi',
'edit' => 'Wax ka bedel',
'create' => 'Sameey',
'editthispage' => 'Boggaan wax ka bedel',
@@ -206,6 +199,7 @@ $messages = array(
'delete' => 'Tirtir',
'deletethispage' => 'Tirtir bogaan',
'undelete_short' => 'Inta la tirtirin {{PLURAL:$1|hal bedel|$1 wax laga bedelay}}',
+'viewdeleted_short' => 'Itusi {{PLURAL:$1|halxabo oo bedelkii la tirtiray edit|$1 bedelyadii la tirtiray}}',
'protect' => 'Difaac',
'protect_change' => 'Wax ka bedel',
'protectthispage' => 'Difaac boggaan',
@@ -238,12 +232,12 @@ $messages = array(
'jumpto' => 'U bood:',
'jumptonavigation' => 'gooshitaan',
'jumptosearch' => 'raadi',
-'view-pool-error' => 'Naga raali noqo, kombiyutarkaan hadda woo buuxsamay.
-Dad badan ayaa waqtigaan xaadirka ah fiirinooyo boggaan.
-Fadlan sug intii aad markale ka soo gali kartid.
+'view-pool-error' => 'Naga raali noqo, kombiyutarkaan hadda wuu buuxsamay.
+Isticmaaleyaal aad u badan ayaa fiirinooyo boggaan.
+Fadlan sug xoogaa intii aadan soo gelin boggaan.
$1',
-'pool-timeout' => 'Waqtiga woo ka dhamaaday xiritaanka',
+'pool-timeout' => 'Waqtiga wuu ka dhamaaday xiritaanka',
'pool-queuefull' => 'Safka shaqeenta Pool woo buuxsamay',
'pool-errorunknown' => 'Qalad la aqoon',
@@ -290,6 +284,8 @@ fiiri [[Special:Version|nooca bogga]].',
'toc' => 'Qoraalka gudaha oo kooban',
'showtoc' => "I'tus",
'hidetoc' => 'qari',
+'collapsible-collapse' => 'woo halaabay',
+'collapsible-expand' => 'Sii balaari',
'thisisdeleted' => 'Fiiri ama dib u sooceli $1?',
'viewdeleted' => 'Fiiri $1?',
'restorelink' => '{{PLURAL:$1|halxabo oo bedelkii la tirtiray edit|$1 wax bedelyadii la tirtiray}}',
@@ -341,7 +337,7 @@ Fadlan u sheek [[Special:ListUsers/sysop|maamulaha]], kana digtooneesii URL-ka.'
'filedeleteerror' => 'Ma tirtiri karin faylka "$1".',
'directorycreateerror' => 'Ma sameyn karin maktabad "$1".',
'filenotfound' => 'Ma oo san helin faylka "$1".',
-'fileexistserror' => 'Ma ku qori karin faylka "$1": faylkan woo jiraa.',
+'fileexistserror' => 'Ma ku qori karin faylka "$1": faylkan wuu jiraa.',
'unexpected' => 'Qiimo loo maleeneenin: "$1"="$2".',
'badarticleerror' => 'Shaqadaan ma lagu sameyn karo boggaan.',
'cannotdelete' => 'Boggaan ama file\'ka "$1" mala tirtiri karo.
@@ -358,8 +354,7 @@ fadlan waxyar kadib ku soo noqo.',
'viewsourcetext' => 'Waad fiirin kartaa waana koobi gareen kartaa xogta boggaan:',
'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',
-'namespaceprotected' => "Ma laguu ogolo in aad wax ka bedesho maqaalada ku jirto '''$1''' meesha magacyada.",
-'customcssjsprotected' => 'Ma laguu ogolo in aad wax ka badashid boggaan, sababtoo ah waxaa ku jiro isticmaalo kale waxyaabo u shaqsi ah.',
+'namespaceprotected' => "Ma laguu ogolo in aad wax ka bedesho maqaalada ku jirto '''$1''' qolka magacyada.",
'ns-specialprotected' => 'Bogyaasha gaarka ah wax malaga bedeli karo.',
'titleprotected' => 'Qoraalkaan aad qortay waxaa difaacay [[User:$1|$1]] si loo sameynin.
Sababta neh waxaa waaye "\'\'$2\'\'".',
@@ -393,27 +388,30 @@ Ha' hilmaamin in aad wax ka bedesho [[Special:Preferences|{{SITENAME}} dooqyadaa
'createaccount' => 'Sameey gudagale',
'gotaccount' => "Waan heystaa gudagale? '''$1'''.",
'gotaccountlink' => 'Gudaha gal',
+'userlogin-resetlink' => 'Ma ilaawday tafaasiisha gudagalahaada?',
'createaccountmail' => 'E-mail ahaan',
'createaccountreason' => 'Sababta:',
'badretype' => 'Ereyada sirta ah oo qortay ma islahan.',
-'userexists' => 'Magaca isticmaalaha aad qortay woo jiraa.
+'userexists' => 'Magaca isticmaalaha aad qortay wuu jiraa.
Fadlan dooro magac kale.',
'loginerror' => 'Qalad gudagalista',
'createaccounterror' => 'Ma sameeyn karin akoon: $1',
'nocookiesnew' => "Akoonka isticmaalahaan waa la sameeyay, laakiin adiga gudaha uma soo gelin.
{{SITENAME}} wuxuu isticmaalaa cookies si ee gudaha u galaan isticmaale yaasha.
-Adiga cookies'kaaga woo dansanyahay .
+Adiga cookies'kaaga wuu dansanyahay .
Fadlan shid, kadib neh gudaha ku gal magacaaga isticmaalaha cusub iyo ereygaaga sirta ah.",
'nocookieslogin' => "{{SITENAME}} wuxuu isticmaalaa cookies si ee isticmaaleyaasha u gudagalaan.
Cookies'kaaga woo dansanyahay.
Fadlan shid markale neh ku noqo.",
-'noname' => "Magaca gudagalaha sax ma'aha.",
+'nocookiesfornew' => "Magacaan isticmaalaha lama sameyn, waana diiwan galin weynay ereykoodkiisa.
+Waa in aad hubsataa in aad shiday cookies'kaaga, ku soo noqo boggaan markale neh baroobeey.",
+'noname' => 'Ma jiro magaca isticmaalaha aad qortay',
'loginsuccesstitle' => 'Gudagalida waa la dhamaystiray',
'loginsuccess' => "'''Waxaa hadda gudaha ugu soo gashay {{SITENAME}} sida \"\$1\".'''",
'nosuchuser' => 'Ma jiro isticmaalo leh magacaan "$1".
Magacyada way kala waaweyn yihiin.
Sax hingaada, ama [[Special:UserLogin/signup|samayso magac gudagale ah]].',
-'nosuchusershort' => 'Majiro isticmaale leh magacaan "<nowiki>$1</nowiki>". Sax qoraalkaaga.',
+'nosuchusershort' => 'Majiro isticmaale leh magacaan "$1". Sax qoraalkaaga.',
'nouserspecified' => 'Waa in aad magac gudagale heshaa.',
'login-userblocked' => 'Isticmaalahaan waa la mamnuucay. Lama ogolo in oo gudaha u galo',
'wrongpassword' => 'Ereyga sirta ah waa qalad. Fadlan iskuday markale.',
@@ -453,9 +451,10 @@ Waa in aad hadda gudaha u gashaa oo bedeshaa ereygaada sirka ah.
Waa iska dhago tiri kartaa fariintaan, hadii akoonkaan oo ku sameysmay qalad.',
'login-throttled' => 'wax badan ayaa isku dayday in aad soo gasho.
Fadlan waxyar sug intii aadan soo gelin.',
+'login-abort-generic' => 'Ma u soo gali karin gudaha - waa la noqay',
'loginlanguagelabel' => 'Luqada: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Bedel ereysirka',
'resetpass_announce' => 'waxaa ku soo geshay eraysir ku meelgaar ah oo e-mail laguugu soo diray.
Hadii aad rabtid in aad dhameestirtid gudagelkaaga, waa in aad meeshaan ku qortaa eraysir oo cusub:',
@@ -472,6 +471,28 @@ Hadda gudaha ku gal',
'resetpass-submit-cancel' => 'Iska xir',
'resetpass-temp-password' => 'Ereysir ku meel gaar ah:',
+# Special:PasswordReset
+'passwordreset' => 'Bedel ereysirka',
+'passwordreset-legend' => 'Bedel ereysirka',
+'passwordreset-username' => 'Magaca gudagalka',
+'passwordreset-email' => 'Ciwaanka e-mailka',
+'passwordreset-emailtext-ip' => "(Qof laga yaabo in ee tahay adi, oo ka socdo ciwaanka IP'ka $1) ayaa codsaday xasuus tafaasiil akoonkaada {{SITENAME}}
+($4). Isticmaaladaan soo socota {{PLURAL:$3|akoonkooda waxee|akoonkooda waxee}} la xiriiraan ciwaankaan e-mailka ah:
+
+$2
+
+{{PLURAL:$3|eraysirkaan kumeel gaarka ah|Eraysiryadaan kumeel gaarka ah}} waxee dhacaayaan {{PLURAL:$5|hal maalin|$5 maalmood}}.
+Waa in aad gudaha gashaa oo e-mail cusub doorataa hadda. Hadii ee qof kale codsigaan sameysay, ama hadii aad soo xasuusatay eraysirkaagii hore, oo aadna u baahneen in aad badashid, iska ilaaw fariintaan siina isticmaal eraysirkaagii duqi ahaa.",
+'passwordreset-emailtext-user' => 'Isticmaale $1 ee {{SITENAME}} wuxuu codsaday xasuus tafaasiil akoonkaada {{SITENAME}}
+($4). Isticmaaladaan soo socota {{PLURAL:$3|akoonkooda waxee|akoonkooda waxee}} la xiriiraan ciwaankaan e-mailka ah:
+
+$2
+
+{{PLURAL:$3|eraysirkaan kumeel gaarka ah|Eraysiryadaan kumeel gaarka ah}} waxee dhacaayaan {{PLURAL:$5|hal maalin|$5 maalmood}}.
+Waa in aad gudaha gashaa oo e-mail cusub doorataa hadda. Hadii ee qof kale codsigaan sameysay, ama hadii aad soo xasuusatay eraysirkaagii hore, oo aadna u baahneen in aad badashid, iska ilaaw fariintaan siina isticmaal eraysirkaagii duqi ahaa.',
+'passwordreset-emailelement' => 'Magaca gudagalka: $1
+Ereysirka kumeelgaarka ah: $2',
+
# Edit page toolbar
'bold_sample' => 'Far butac ah',
'bold_tip' => 'Far butac ah',
@@ -501,7 +522,7 @@ Hadda gudaha ku gal',
'anonpreviewwarning' => "''Ma soo gelin. Hadii aad keydisid waxaa ciwaankaada IP:ka lagu duubaa taariikhda bedelka boggaan.''",
'missingcommenttext' => 'Fadlan ku qor hoostaan hadalkaaga.',
'blockedtitle' => 'Isticmaalaha waa la mamnuucay',
-'blockedtext' => "'''Magacaaga gudagalaha ama ciwaanka IP'ka waa la mamnuucay.'''
+'blockedtext' => "'''Magacaaga isticmaalaha ama ciwaanka IP'ka waa la mamnuucay.'''
Mamnuucida waxaa sameeyay $1.
Sababta neh waxaa waaye ''$2''.
@@ -512,7 +533,7 @@ Sababta neh waxaa waaye ''$2''.
Waxaa la xiriiri kartaa $1 ama mid ka mid ah [[{{MediaWiki:Grouppage-sysop}}|maamulada]] kale si aad uula muranto mamnuucida.
Ma isticmaali kartid 'e-mailka isticmaalahaan' soo diray hadii aad heesato maa hinee ciwaan e-mail oo kuugu jiro [[Special:Preferences|koontadaada]] oona lagaa mamnuucin in aad isticmaasho.
-Ciwaankaada IP'ka waa $3, gudagalahaaga la mamnuucay neh waa #$5.
+Ciwaankaada IP'ka waa $3, ID'ga la mamnuucay neh waa #$5.
fadlan ku soo dar su'aalahaaga waxa kor ku qoran.",
'blockednoreason' => 'wax sabab ah kama bixin',
'blockedoriginalsource' => "Xogta '''$1''' hoos aad ka arki kartaa:",
@@ -527,20 +548,23 @@ Waxaa laga yaabaa in la wareejiyay ama la tirtiray adiga oo fiirinaayo bogga.',
'loginreqlink' => 'Gudaha gal',
'loginreqpagetext' => 'Waa in aad $1 si aad u fiirisid bogyaasha kale.',
'accmailtitle' => "Ereysirka waa la'diray.",
-'accmailtext' => 'Ereysirka "$1" waxaa loo diray $2.',
+'accmailtext' => "Ereysir loogu tala galay [[User talk:$1|$1]] waxaa loogu diray $2.
+
+Akoonkaan cusub eraysirkiisa waxaa ku badali kartaa bogga ''[[Special:ChangePassword|bedel eraysirka]]'' si aad u soo gashid.",
'newarticle' => '(Cusub)',
'newarticletext' => "Waxaa soo raacday link kula soo xiriiriyay bog oo hadda wali jirin.
Hadii aad rabto in aad sameyso bogga, hoos ka bilaaw qoraalkaada (fiiri [[{{MediaWiki:Helppage}}|bogga caawinaada]] wax war ah oo kale).
hadii aad meeshaan ku soo qaldantay, riix batoonka barowsahaaga '''gadaal uuga noqo''' .",
'anontalkpagetext' => "----''Meeshaan waa bogga wadahadalka isticmaalayaasha la aqoon oo aanan weli sameysanin akoon, ama wali isticmaalin.
-Sidaas darteed, waa in aan isticmaalnaa lambar cinwaaneedka IP:ga. Cinwaanka IP:ga waxaa suurto gal ah in ay wada isticmaalaan dad badan. Hadii aad tahay isticmaale aanan la'aqoonsanin oo aad dareemaysid in laguu gafay, fadlan [[Special:UserLogin/signup|sameyso akoon]] ama [[Special:UserLogin|gudaha gal]] si aad u dhowrsatid in hadhowdi laguugu qaldo isticmaalada kale oo aann la'aqoonsanin.''",
+Sidaas darteed, waa in aan isticmaalnaa lambar cinwaaneedka IP:ga si aan u ogaano asiga/ayada. Cinwaanka IP:ga waxaa suurto gal ah in ay qeybsadaan isticmaaleyaal badan.
+Hadii aad tahay isticmaale aanan la'aqoonsanin oo aad dareemaysid in laguu gafay, fadlan [[Special:UserLogin/signup|sameyso akoon]] ama [[Special:UserLogin|gudaha gal]] si aad u dhowrsatid in hadhowdi laguugu qaldo isticmaalada kale oo aann la'aqoonsanin.''",
'noarticletext' => 'Boggaan hadda wax qoraal ah kuma qorno.
Waxaa [[Special:Search/{{PAGENAME}}|magaca boggaan]] ka raadin kartaa bogyaasha kale,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} raadi kuwo la mid ah],
ama [{{fullurl:{{FULLPAGENAME}}|action=edit}} wax ka bedel boggaan]</span>.',
'noarticletext-nopermission' => 'Hadda boggaan wax qoraal ah kuma qorno.
Waxaa [[Special:Search/{{PAGENAME}}|magaca boggaan ka raadin kartaa]] boggaga kale ama <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ka raadi gudagalayaasha kale]</span>.',
-'userpage-userdoesnotexist' => 'Isticmaalahan "$1" ma diiwaangashno.
+'userpage-userdoesnotexist' => 'Isticmaalahan "<nowiki>$1</nowiki>" ma diiwaangashno.
Fadlan fiiri hadii aad rabto in aad sameeyso/wax ka bedesho boggaan.',
'userpage-userdoesnotexist-view' => 'Isticmaalahaan "$1" ma diiwaangashno.',
'blocked-notice-logextract' => 'Isticmaalahaan hadda waa la mamnuucay.
@@ -699,7 +723,7 @@ sababteeda neh waxaa laga heli kartaa [{{fullurl:{{#Special:Log}}/delete|page={
'search-nonefound' => 'Wax natiijo oo ka soo baxay ma jirto wixii aad raadisay',
'powersearch' => 'Sidii aad wax uugu raadin laheed',
'powersearch-legend' => 'Sidii aad wax uugu raadin laheed',
-'powersearch-ns' => 'ka raadi meesha magacyada:',
+'powersearch-ns' => 'ka raadi qolka magacyada:',
'powersearch-redir' => 'liiska inta la sii toosiyay',
'powersearch-field' => 'Raadi',
'powersearch-togglelabel' => 'Fiiri',
@@ -716,7 +740,6 @@ sababteeda neh waxaa laga heli kartaa [{{fullurl:{{#Special:Log}}/delete|page={
'prefsnologintext' => 'Waa in aad <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} Gudaha ku jirtaa]</span> si aad dooqyadaada u dalbatid.',
'prefs-skin' => 'Jirka',
'skin-preview' => 'Horfiirin',
-'prefs-math' => 'Xisaab',
'datedefault' => "Ma'jiro dooq",
'prefs-datetime' => 'Taariikhda iyo waqtiga',
'prefs-rc' => 'Isbedelada dhow',
@@ -752,7 +775,9 @@ Waa in aysan ka badanin $1 {{PLURAL:$1|eray|erayo}}.',
'gender-female' => 'Dhedig',
'email' => 'E-mail',
'prefs-help-realname' => 'Optional: if you choose to provide it this will be used for giving you attribution for your work.',
-'prefs-help-email' => 'Optional: Enables others to contact you through your user or user_talk page without needing to reveal your identity.',
+'prefs-help-email' => 'E-mail waa wax aad xor u leedahay. laakiin waa loo baahanyahay hadii aad eraysirka badaleesid, hadii aad ilaawdo eraygaaga sirta ah',
+'prefs-help-email-others' => 'Waxaa kale oo aad u isticmaali kartaa in ee dadka kale kugula soo xiriiraan e-mail ayaga oo isticmaalaayo linki isticmaalahaada ama bogga wadahadalka.
+E-mailkaada mala sheegaayo markii ee dadka kale kula soo xiriirayaan.',
'prefs-help-email-required' => 'Waxaa loo baahanyahay e-mail.',
# User rights
@@ -859,7 +884,7 @@ Boggaga ku jiro [[Special:Watchlist|liiskaaga waardiyaha]] waa '''butac'''.",
file'kaan waa $2.",
'uploadwarning' => 'Digniin waxa aad soo gelineesid',
'savefile' => 'Faylka kaydi',
-'uploadedimage' => 'waxaa la soo galiyay "[[$1]]"',
+'uploadedimage' => 'la soo galiyay "[[$1]]"',
'overwroteimage' => 'waxaa la soo galiyay nuuc cusub oo ah "[[$1]]"',
'uploaddisabled' => 'wax soo gelinta waa la xiray.',
'copyuploaddisabled' => 'wax soo gelinta dhinaca URL:ka waa la xiray',
@@ -895,17 +920,17 @@ ku saabsan: $1',
'filehist-help' => 'Riix taariikhda/waqtiga si aad u argto faylka sida oo ahaa markiisa hore.',
'filehist-deleteall' => 'dirtir dhamaantood',
'filehist-deleteone' => 'tirtir',
-'filehist-revert' => 'soo celin',
+'filehist-revert' => 'celi',
'filehist-current' => 'kan hadda',
'filehist-datetime' => 'Taariikhda/Waqtiga',
'filehist-thumb' => 'Sawir yar',
'filehist-thumbtext' => 'Sawirka yar nuuciisa ahaa $1',
'filehist-user' => 'Isticmaale',
'filehist-comment' => 'Ka hadalka',
-'imagelinks' => 'Faylka la xiriira',
-'linkstoimage' => 'Waxyaabahaan soo socota ee {{PLURAL:$1|bog ah waxey la xiriiraan|$1 boggag ah waxey la xiriiraan}} faylkan:',
+'imagelinks' => 'Faylka lagu isticmaalay',
+'linkstoimage' => 'Boggagaan soo socota ee {{PLURAL:$1|ah waxey la xiriiraan|$1 ah waxey la xiriiraan}} faylkan:',
'nolinkstoimage' => "Ma'ay jiraan beyjaj ku xiran faylkaan.",
-'sharedupload-desc-here' => 'Faylkaan waxoo ka socdaa $1 waxaana laga yaabaa in lagu isticmaalay mashruucyada kale.
+'sharedupload-desc-here' => 'Faylkaan wuxuu ka socdaa $1 waxaana laga yaabaa in lagu isticmaalay mashruucyada kale.
Tafaasiishiisa waxee ku qorantahay [$2 bogga tafaasiisha faylka] oo ka arki kartid hoostaan.',
# File reversion
@@ -915,9 +940,9 @@ Tafaasiishiisa waxee ku qorantahay [$2 bogga tafaasiisha faylka] oo ka arki kart
'filedelete' => 'Tirtir $1',
'filedelete-legend' => 'Tirtit faylka',
'filedelete-intro' => "Waxaad tirtireysaa '''[[Media:$1|$1]]'''.",
-'filedelete-comment' => 'Sababta loo tirtiray:',
+'filedelete-comment' => 'Sababta:',
'filedelete-submit' => 'Tirtir',
-'filedelete-success' => "'''$1''' waala tirtiray.",
+'filedelete-success' => "'''$1''' waa la tirtiray.",
'filedelete-reason-otherlist' => 'sababaha kale',
'filedelete-edit-reasonlist' => 'Wax ka bedel sababta loo tirtiray',
@@ -978,7 +1003,7 @@ Tafaasiishiisa waxee ku qorantahay [$2 bogga tafaasiisha faylka] oo ka arki kart
'special-categories-sort-count' => 'xisaabi marka aad tirisid',
# Special:LinkSearch
-'linksearch-ns' => 'Meesha magacyada:',
+'linksearch-ns' => 'Qolka magacyada:',
'linksearch-ok' => 'Raadi',
'linksearch-line' => '$1 wuxuu ka socdaa $2',
@@ -1020,14 +1045,12 @@ si aad ugu dirto E-boosto isticmaalayaasha kale.',
'watchlistanontext' => 'Fadlan $1 si aad u fiirisid ama wax uga bedeshid qoraalada ku jira liiska waardiyeyska.',
'watchnologin' => 'Gudaha kuma jirtid',
'watchnologintext' => 'Waa ina aad [[Special:UserLogin|gudaha ku jirtaa]] si aad wax uga bedeshid liiskaaga waardiyeynta.',
-'addedwatch' => 'Kudar liiska-waardiyaha',
'addedwatchtext' => "Bogga \"[[:\$1]]\" waxaa lagudaray [[Special:Watchlist|liiska-waardiyahaaga]].
Isbedelka mustaqbalka ku dhaca boggan iyo bogga wadahadalka la'xiriira waxaa lagu soo qoridoonaa inta,
boggana wuxuu noqonaayaa mid la' '''nuuriyey''' dhinaca [[Special:RecentChanges|Liiska isbedelada show]] si
ay u fududdayso sidii loo dalbanlahaa.
Hadii aad rabootid in aad boggan ka saartid wardiyeynta, dhagsii \"Ha' wardiyeynin\" oo ku yaala dhinaca.",
-'removedwatch' => 'Ka tirtir liiska-waardiyaha',
'removedwatchtext' => 'Bogga "[[:$1]]" waa laga tirtiray liiskaaga waardiyeynta.',
'watch' => 'Waardiyey',
'watchthispage' => 'Boggaan waardiyeey',
@@ -1051,20 +1074,20 @@ Hadii aad rabootid in aad boggan ka saartid wardiyeynta, dhagsii \"Ha' wardiyeyn
'historywarning' => '<strong>Digniin:</strong> Bogga aad tirtirirabtid wuxuu leeyahay taariikkh hore:',
'actioncomplete' => "Amarka waa la'dhamaystiray",
'actionfailed' => 'Shaqada waad ku guul dareesatay',
-'deletedarticle' => 'tirtiray "[[$1]]"',
+'deletedarticle' => 'la tirtiray "[[$1]]"',
'dellogpage' => 'Tirtiraha guda galaheeda',
# Rollback
'rollback_short' => 'Dib u soo celi',
'rollbacklink' => 'dib u soo celi',
-'revertpage' => 'Waxoo dib u noqay badalkii oo sameeyay [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) kuna celiyay badalkii ka danbeeyay oo sameeyay [[User:$1|$1]]',
+'revertpage' => 'Wuxuu dib u noqay badalkii oo sameeyay [[Special:Contributions/$2|$2]] ([[User talk:$2|talk]]) kuna celiyay badalkii ka danbeeyay oo sameeyay [[User:$1|$1]]',
'revertpage-nouser' => 'Wuxuu dib u noqay bedelyada (magaca isticmaalaha waa laga saaray) kuna celiyay [[User:$1|$1]]',
-'rollback-success' => 'Waxoo dib u noqay bedelaadka $1;
-waxoo dib ugu celiyay bedelaadka $2.',
+'rollback-success' => 'Wuxuu dib u noqay bedelka oo sameeyay $1;
+Wuxuu ku badalay bedelkii ka danbeeyay oo sameeyay $2.',
# Protect
'protectlogpage' => 'Difaacida gudagalaheeda',
-'protectedarticle' => 'wuxuu difaacay "[[$1]]"',
+'protectedarticle' => 'la difaacay "[[$1]]"',
'protect-title' => 'Ka badal heerka difaacida "$1"',
'prot_1movedto2' => '[[$1]] waxaa loo wareejiyey [[$2]]',
'protect-legend' => 'Xaqiiji difaacida',
@@ -1107,9 +1130,10 @@ waxoo dib ugu celiyay bedelaadka $2.',
'undelete-search-submit' => 'Raadi',
# Namespace form on various pages
-'namespace' => 'Meesha magacyada:',
-'invert' => 'Dabagedi dalabka',
-'blanknamespace' => '(Bogga hore)',
+'namespace' => 'Qolka magacyada:',
+'invert' => 'Dabagedi dalabka',
+'namespace_association' => 'La xiriira qolka magacyada',
+'blanknamespace' => '(Bogga hore)',
# Contributions
'contributions' => 'Isticmaalada wax ku darsaday',
@@ -1143,7 +1167,7 @@ waxoo dib ugu celiyay bedelaadka $2.',
'whatlinkshere-next' => '{{PLURAL:$1|kan ku xiga|kan ku xiga $1}}',
'whatlinkshere-links' => '↠kuwa la xiriiro',
'whatlinkshere-hideredirs' => '$1 loo sii toosiyay',
-'whatlinkshere-hidelinks' => '$1 waxoo la xiriiraa',
+'whatlinkshere-hidelinks' => '$1 wuxuu la xiriiraa',
'whatlinkshere-hideimages' => '$1 sawirka inta oo la xiriiro',
# Block/unblock
@@ -1157,10 +1181,12 @@ waxoo dib ugu celiyay bedelaadka $2.',
'contribslink' => 'ku darsasho',
'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' => 'mamnuucay [[$1]] wuxuuna mamnuucida ku egyahay $2 $3',
+'blocklogentry' => 'la mamnuucay [[$1]] Waqtiga uu dhacaayo neh waa $2 $3',
'unblocklogentry' => 'lama mamnuucin $1',
'block-log-flags-anononly' => "Isticmaalayaasha aanan la'aqoonsanin oo kaliya",
'block-log-flags-nocreate' => 'sameynta gudagalah lamaogola',
+'block-log-flags-noemail' => 'e-mailka laga mamnuucay',
+'ipb-needreblock' => '$1 mar hore aa la mamnuucay. marabtaa in aad wax ka bedesho habka?',
'blockme' => 'I mamnuuc',
'proxyblocksuccess' => 'waa la sameeyay.',
@@ -1171,7 +1197,7 @@ waxoo dib ugu celiyay bedelaadka $2.',
'1movedto2' => '[[$1]] waxaa loo wareejiyey [[$2]]',
'1movedto2_redir' => '[[$1]] waxaa loo wareejiyey [[$2]] si loo sii toosiyo',
'movelogpage' => 'Wareejinta guda galaheeda',
-'revertmove' => 'soo celi',
+'revertmove' => 'celi',
# Export
'export' => 'Dhoofi boggag',
@@ -1184,7 +1210,7 @@ waxoo dib ugu celiyay bedelaadka $2.',
'allmessagesdefault' => "Qoraalka la'isku ogyahay",
'allmessagescurrent' => 'Qoraalka hada qoran',
'allmessagestext' => 'Liiskan waxaa ku qoran dhamaan fariimaha lagahelikaro xarun magaceedka MediaWiki.
-Fadlan booqo [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] hadii aad rabto in aad wax ku darsatid MediaWiki si aad gabi ahaanbo afkaaga ugu fasirtid.',
+Fadlan booqo [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] hadii aad rabto in aad wax ku darsatid MediaWiki si aad gabi ahaanbo afkaaga ugu fasirtid.',
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' la'ma isticmaalikaro, '''\$wgUseDatabaseMessages''' oo dansan daraadeed.",
'allmessages-language' => 'Luqad:',
'allmessages-filter-submit' => 'Soco',
@@ -1203,13 +1229,13 @@ Fadlan booqo [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation]
'tooltip-pt-logout' => 'Ka bax',
'tooltip-ca-talk' => 'Wadahadal ku saabsan bogga qoraalka',
'tooltip-ca-edit' => 'Boggaan wax waad ka bedelikartaa. Intii aadan kaydinin fadlan isticmaal batoonka horfiirinta.',
-'tooltip-ca-addsection' => 'Ku darso fikrad wadahadalkaan.',
+'tooltip-ca-addsection' => 'Bilaaw qeyb cusub',
'tooltip-ca-viewsource' => 'Boggaan waa la difaacay.
Waxaa fiiri kartaa cadaadkiisa',
'tooltip-ca-history' => 'Noocyadii hore ee boggaan.',
'tooltip-ca-protect' => 'Difaac boggaan',
'tooltip-ca-delete' => 'Bogaan tirtir',
-'tooltip-ca-undelete' => "Sooceli qoraaladii lagu sameeyay boggaan intii aanan la'tirtirin ka hor",
+'tooltip-ca-undelete' => "Soo celi waxyaabihii laga badalay boggaan intii aanan la'tirtirin",
'tooltip-ca-move' => 'Wareeji boggaan',
'tooltip-ca-watch' => 'Boggaan ku dar liiskaaga waardiyaha',
'tooltip-ca-unwatch' => 'Boggaan ka saar liiskaaga waardiyaha',
@@ -1238,7 +1264,7 @@ Waxaa fiiri kartaa cadaadkiisa',
'tooltip-ca-nstab-media' => 'Fiiri bogga saxaafada',
'tooltip-ca-nstab-special' => 'Kani bogg khaas ah, waxba kama bedelikartid boggaan',
'tooltip-ca-nstab-project' => 'Itusi bogga mashruuca',
-'tooltip-ca-nstab-image' => 'Fiiri bogga faylka',
+'tooltip-ca-nstab-image' => 'Fiiri faylka bogga',
'tooltip-ca-nstab-mediawiki' => 'Fiiri bogga fariimaha sistamka',
'tooltip-ca-nstab-template' => 'Fiiri tusmada',
'tooltip-ca-nstab-help' => 'Fiiri bogga caawinaad',
@@ -1249,8 +1275,8 @@ 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-rollback' => '"Dib u soo celi" waxoo gadaal u soo celinaa bedel (yadii) boogaan oo sameeyay kii ugu danbeeyay oo ku darsaday adiga oo isticmaalaaya hal riix',
-'tooltip-undo' => '"ka noqo" waxoo dib u noqaa badalkaan waxoona furaa badalkii ka horeey. waxoo kuu fasaxaa in aad ku dartid sababta.',
+'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-summary' => 'ku qor qoraal kooban',
# Attribution
@@ -1259,9 +1285,6 @@ 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
-'numwatchers' => 'Tirada waardiyeyaasha: $1',
-
# Patrol log
'patrol-log-line' => 'waxa la calaamadeeyay $1 ee $2 waxaa la waardiyeeyay $3',
'patrol-log-diff' => 'bedelaadka $1',
@@ -1280,19 +1303,34 @@ Waxaa fiiri kartaa cadaadkiisa',
'bydate' => 'hab taariikheed',
# Metadata
-'metadata-help' => 'Faylkaan waxoo leeyahay tafaasiil dheeraad ah,waxaa laga yaabaa in lagu isticmaalay digital camera ama scanner oo lagu sameeyo sawir ama lagu digitilays gareeyay.
+'metadata-help' => 'Faylkaan wuxuu leeyahay tafaasiil dheeraad ah,waxaa laga yaabaa in lagu isticmaalay digital kaamiro ama skanner oo lagu sameeyo sawir ama lagu digitilays gareeyay.
Hadii faylka wax laga badalay sida oo markiisa hore ahaa, waxaa laga yaabaa in ee tafaasiisha faylkaan ee dhameestirneen.',
+'metadata-fields' => 'Sawirka qeybihiisa metadata oo ku tixan fariintaan waxaa lagu dari doonaa bogga sawirka meesha laga arko markii miiska metadata la qariyo.Kuwa kale waxaa loo qarinaa sida default.
+* make
+* model
+* datetimeoriginal
+* exposuretime
+* fnumber
+* isospeedratings
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+
+# EXIF tags
+'exif-iimcategory' => 'Qeybta',
# External editor support
'edit-externally' => 'wax ka bedel faylkaan adiga oo isticmaalaya brogram dheeraad ah',
-'edit-externally-help' => '(Ka fiiri wax war ah oo kale [http://www.mediawiki.org/wiki/Manual:External_editors sidii oo wax ugu habeysmi lahaa] )',
+'edit-externally-help' => '(Ka fiiri wax war ah oo kale [//www.mediawiki.org/wiki/Manual:External_editors sidii oo wax ugu habeysmi lahaa] )',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'dhamaan',
-'imagelistall' => 'dhamaan',
-'watchlistall2' => 'dhamaan',
-'namespacesall' => 'dhamaan',
-'monthsall' => 'Dhamaan',
+'watchlistall2' => 'dhamaan',
+'namespacesall' => 'dhamaan',
+'monthsall' => 'Dhamaan',
# E-mail address confirmation
'confirmemail_noemail' => 'Kuma haysatid cinwaan E-boosto sax [[Special:Preferences|isticmaala dooqiisa]].',
@@ -1306,7 +1344,9 @@ Hadii faylka wax laga badalay sida oo markiisa hore ahaa, waxaa laga yaabaa in e
'table_pager_last' => 'Bogga ugu danbeeyo',
# Auto-summaries
-'autosumm-new' => 'Bog cusub: $1',
+'autosumm-blank' => 'Masaxay bogga',
+'autosumm-replace' => 'Wuxuu qoraalka ku badalay "$1"',
+'autosumm-new' => 'Bog cusub: $1',
# Watchlist editing tools
'watchlisttools-view' => 'Itusi isbedelada jiro',
diff --git a/languages/messages/MessagesSq.php b/languages/messages/MessagesSq.php
index 7aebbd87..3050bc61 100644
--- a/languages/messages/MessagesSq.php
+++ b/languages/messages/MessagesSq.php
@@ -9,6 +9,7 @@
*
* @author Andejkendej
* @author Cradel
+ * @author Dashohoxha
* @author Dori
* @author Eagleal
* @author Ergon
@@ -54,64 +55,64 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Userlogin' => array( 'HyrjePërdoruesi' ),
- 'Userlogout' => array( 'DaljePërdoruesi' ),
+ 'Allmessages' => array( 'TëgjithaMesazhet' ),
+ 'Allpages' => array( 'TëgjithaFaqet' ),
+ 'Ancientpages' => array( 'FaqetAntike' ),
+ 'Blankpage' => array( 'FaqeBosh' ),
+ 'Block' => array( 'BllokoIP' ),
+ 'Blockme' => array( 'BllokomMua' ),
+ 'Booksources' => array( 'BurimeteLibrave' ),
+ 'Categories' => array( 'Kategori' ),
+ 'ChangePassword' => array( 'NdryshoFjalëkalimin' ),
+ 'Confirmemail' => array( 'KonfirmoEmail' ),
+ 'Contributions' => array( 'Kontributet' ),
'CreateAccount' => array( 'HapLlogari' ),
- 'Preferences' => array( 'Preferencat' ),
- 'Recentchanges' => array( 'NdryshimeSëFundmi' ),
- 'Upload' => array( 'Ngarko' ),
+ 'DeletedContributions' => array( 'GrisKontributet' ),
+ 'Emailuser' => array( 'EmailPërdoruesit' ),
+ 'Export' => array( 'Eksporto' ),
+ 'Import' => array( 'Importo' ),
+ 'Listadmins' => array( 'RreshtoAdmin' ),
+ 'Listbots' => array( 'RreshtoBotët' ),
'Listfiles' => array( 'ListaSkedave' ),
- 'Newimages' => array( 'SkedaTëReja' ),
'Listusers' => array( 'RreshtoPërdoruesit' ),
- 'Statistics' => array( 'Statistika' ),
+ 'Lockdb' => array( 'MbyllDB' ),
+ 'Longpages' => array( 'FaqeteGjata' ),
+ 'Movepage' => array( 'LëvizFaqe' ),
+ 'Mycontributions' => array( 'KontributetëMiat' ),
+ 'Mypage' => array( 'FaqjaIme' ),
+ 'Mytalk' => array( 'DiskutimiImë' ),
+ 'Myuploads' => array( 'NgarkimeteMia' ),
+ 'Newimages' => array( 'SkedaTëReja' ),
+ 'Newpages' => array( 'FaqeteReja' ),
+ 'Popularpages' => array( 'FaqetëFamshme' ),
+ 'Preferences' => array( 'Preferencat' ),
+ 'Protectedpages' => array( 'FaqeteMbrojtura' ),
+ 'Protectedtitles' => array( 'TitujteMbrojtur' ),
'Randompage' => array( 'Rastësishme', 'FaqeRastësishme' ),
- 'Uncategorizedpages' => array( 'FaqeTëpakategorizuara' ),
+ 'Recentchanges' => array( 'NdryshimeSëFundmi' ),
+ 'Search' => array( 'Kërkim' ),
+ 'Shortpages' => array( 'FasheteShkurta' ),
+ 'Specialpages' => array( 'FaqetSpeciale' ),
+ 'Statistics' => array( 'Statistika' ),
+ 'Unblock' => array( 'Zhblloko' ),
'Uncategorizedcategories' => array( 'KategoriTëpakategorizuara' ),
'Uncategorizedimages' => array( 'SkedaTëpakategorizuara' ),
+ 'Uncategorizedpages' => array( 'FaqeTëpakategorizuara' ),
'Uncategorizedtemplates' => array( 'StampaTëpakategorizuara' ),
+ 'Undelete' => array( 'Rikthe' ),
+ 'Unlockdb' => array( 'HapDB' ),
'Unusedcategories' => array( 'KategoriTëpapërdorura' ),
'Unusedimages' => array( 'SkedaTëpapërdorura' ),
- 'Wantedpages' => array( 'FaqeteDëshiruara' ),
+ 'Upload' => array( 'Ngarko' ),
+ 'Userlogin' => array( 'HyrjePërdoruesi' ),
+ 'Userlogout' => array( 'DaljePërdoruesi' ),
+ 'Version' => array( 'Verzioni' ),
'Wantedcategories' => array( 'KaetgoritëeDëshiruara' ),
'Wantedfiles' => array( 'SkedateDëshiruara' ),
+ 'Wantedpages' => array( 'FaqeteDëshiruara' ),
'Wantedtemplates' => array( 'StampateDëshiruara' ),
- 'Shortpages' => array( 'FasheteShkurta' ),
- 'Longpages' => array( 'FaqeteGjata' ),
- 'Newpages' => array( 'FaqeteReja' ),
- 'Ancientpages' => array( 'FaqetAntike' ),
- 'Protectedpages' => array( 'FaqeteMbrojtura' ),
- 'Protectedtitles' => array( 'TitujteMbrojtur' ),
- 'Allpages' => array( 'TëgjithaFaqet' ),
- 'Unblock' => array( 'Zhblloko' ),
- 'Specialpages' => array( 'FaqetSpeciale' ),
- 'Contributions' => array( 'Kontributet' ),
- 'Emailuser' => array( 'EmailPërdoruesit' ),
- 'Confirmemail' => array( 'KonfirmoEmail' ),
'Whatlinkshere' => array( 'LidhjetKëtu' ),
- 'Movepage' => array( 'LëvizFaqe' ),
- 'Blockme' => array( 'BllokomMua' ),
- 'Booksources' => array( 'BurimeteLibrave' ),
- 'Categories' => array( 'Kategori' ),
- 'Export' => array( 'Eksporto' ),
- 'Version' => array( 'Verzioni' ),
- 'Allmessages' => array( 'TëgjithaMesazhet' ),
- 'Blockip' => array( 'BllokoIP' ),
- 'Undelete' => array( 'Rikthe' ),
- 'Import' => array( 'Importo' ),
- 'Lockdb' => array( 'MbyllDB' ),
- 'Unlockdb' => array( 'HapDB' ),
- 'Mypage' => array( 'FaqjaIme' ),
- 'Mytalk' => array( 'DiskutimiImë' ),
- 'Mycontributions' => array( 'KontributetëMiat' ),
- 'Myuploads' => array( 'NgarkimeteMia' ),
- 'Listadmins' => array( 'RreshtoAdmin' ),
- 'Listbots' => array( 'RreshtoBotët' ),
- 'Popularpages' => array( 'FaqetëFamshme' ),
- 'Search' => array( 'Kërkim' ),
- 'Resetpass' => array( 'NdryshoFjalëkalimin' ),
'Withoutinterwiki' => array( 'PaInterwiki' ),
- 'Blankpage' => array( 'FaqeBosh' ),
- 'DeletedContributions' => array( 'GrisKontributet' ),
);
$magicWords = array(
@@ -319,14 +320,7 @@ $messages = array(
'listingcontinuesabbrev' => 'vazh.',
'index-category' => 'Faqe të indeksuara',
'noindex-category' => 'Faqe jo të indeksuara',
-
-'mainpagetext' => "'''MediaWiki software u instalua me sukses.'''",
-'mainpagedocfooter' => 'Për më shumë informata rreth përdorimit të softwerit wiki , ju lutem shikoni [http://meta.wikimedia.org/wiki/Help:Contents dokumentacionin përkatës].
-
-== Sa për fillim==
-* [http://www.mediawiki.org/wiki/Help:Configuration_settings Parazgjedhjet e MediaWiki-t]
-* [http://www.mediawiki.org/wiki/Help:FAQ Pyetjet e shpeshta rreth MediaWiki-t]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Njoftime rreth MediaWiki-t]',
+'broken-file-category' => 'Faqet me lidhjet file thyer',
'about' => 'Rreth',
'article' => 'Artikulli',
@@ -378,10 +372,10 @@ $messages = array(
'history' => 'Historiku i faqes',
'history_short' => 'Historiku',
'updatedmarker' => 'ndryshuar nga vizita e fundit',
-'info_short' => 'Informacion',
'printableversion' => 'Version shtypi',
'permalink' => 'Lidhja e përhershme',
'print' => 'Shtype',
+'view' => 'Shiko',
'edit' => 'Redaktoni',
'create' => 'Krijo',
'editthispage' => 'Redaktoni faqen',
@@ -389,6 +383,7 @@ $messages = array(
'delete' => 'grise',
'deletethispage' => 'Grise faqen',
'undelete_short' => 'Restauro {{PLURAL:$1|një redaktim|$1 redaktime}}',
+'viewdeleted_short' => 'Shikoni {{PLURAL:$1|një redaktim të grisur|$1 redaktime të grisura}}',
'protect' => 'Mbroje',
'protect_change' => 'ndrysho',
'protectthispage' => 'Mbroje faqen',
@@ -473,6 +468,8 @@ Edit section: $1',
'toc' => 'Tabela e përmbajtjeve',
'showtoc' => 'trego',
'hidetoc' => 'fshih',
+'collapsible-collapse' => 'Ngushtoje',
+'collapsible-expand' => 'Zgjeroje',
'thisisdeleted' => 'Shikoni ose restauroni $1?',
'viewdeleted' => 'Do ta shikosh $1?',
'restorelink' => '{{PLURAL:$1|një redaktim i grisur|$1 redaktime të grisura}}',
@@ -484,6 +481,8 @@ Edit section: $1',
'page-rss-feed' => '"$1" RSS Feed',
'page-atom-feed' => '"$1" Burim Atom',
'red-link-title' => '$1 (faqja nuk ekziston)',
+'sort-descending' => 'Sort zbritës',
+'sort-ascending' => 'Lloj ngjitje',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Artikulli',
@@ -567,12 +566,13 @@ Ju lutem provojeni përsëri pas disa minutash.',
'protectedpagetext' => 'Kjo faqe është mbyllur për të ndaluar redaktimin.',
'viewsourcetext' => 'Ju mund të shikoni dhe kopjoni tekstin burimor të kësaj faqe:',
'protectedinterface' => 'Kjo faqe përmban tekst për pamjen gjuhësorë të softuerit dhe është e mbrojtur për të penguar keqpërdorimet.',
-'editinginterface' => "'''Kujdes:''' Po redaktoni një faqe që përdoret për tekstin ose pamjen e softuerit. Ndryshimet e kësaj faqeje do të prekin tekstin ose pamjen për të gjithë përdoruesit e tjerë. Për përkthime, ju lutem konsideroni përdorimin e [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], projektit të përkthimit të MediaWiki-it.",
+'editinginterface' => "'''Kujdes:''' Po redaktoni një faqe që përdoret për tekstin ose pamjen e softuerit. Ndryshimet e kësaj faqeje do të prekin tekstin ose pamjen për të gjithë përdoruesit e tjerë. Për përkthime, ju lutem konsideroni përdorimin e [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], projektit të përkthimit të MediaWiki-it.",
'sqlhidden' => '(Pyetje SQL e fshehur)',
'cascadeprotected' => 'Kjo faqe është mbrojtur nga redaktimi pasi është përfshirë në {{PLURAL:$1|faqen|faqet}} e mëposhtme që {{PLURAL:$1|është|janë}} mbrojtur sipas metodës "ujëvarë":
$2',
'namespaceprotected' => "Nuk ju lejohet redaktimi i faqeve të hapësirës '''$1'''.",
-'customcssjsprotected' => 'Nuk keni leje ta ndryshoni këtë faqe sepse përmban informata personale të një përdoruesi tjetër',
+'customcssprotected' => "Ju nuk keni leje për të redaktuar këtë faqe CSS, sepse ai përmban cilësimet personale tjetër user's.",
+'customjsprotected' => "Ju nuk keni leje për të redaktuar këtë faqe JavaScript, sepse ai përmban cilësimet personale tjetër user's.",
'ns-specialprotected' => "Faqet speciale s'mund të redaktohen.",
'titleprotected' => "Ky titull është mbrojtur nga [[User:$1|$1]] dhe s'mund të krijohet një faqe nën të.
Arsyeja e dhënë është ''$2''.",
@@ -610,6 +610,7 @@ Arsyeja e dhënë është ''$2''.",
'createaccount' => 'Hap një llogari',
'gotaccount' => "Keni një llogari? '''$1'''.",
'gotaccountlink' => 'Hyni',
+'userlogin-resetlink' => '↓ Keni harruar të dhënat tuaja të identifikohem?',
'createaccountmail' => 'me email',
'createaccountreason' => 'Arsyeja:',
'badretype' => 'Fjalëkalimet nuk janë njësoj.',
@@ -618,12 +619,14 @@ Arsyeja e dhënë është ''$2''.",
'createaccounterror' => 'Nuk mund të hapni një llogari: $1',
'nocookiesnew' => 'Llogaria e përdoruesit u hap, por nuk keni hyrë brenda akoma. {{SITENAME}} përdor "biskota" për të futur brenda përdoruesit. Prandaj, duhet të pranoni biskota dhe të provoni përsëri me nofkën dhe fjalëkalimin tuaj.',
'nocookieslogin' => '{{SITENAME}} përdor "biskota" për të futur brenda përdoruesit. Prandaj, duhet të pranoni "biskota" dhe të provoni përsëri.',
+'nocookiesfornew' => 'Përdoruesi i llogarisë nuk u krijua, si ne nuk mund të konfirmojmë burimin e tij.
+Sigurohuni që ju pranoni "biskota" (cookise), rifreskoni këtë faqe dhe provojen përsëri.',
'noname' => 'Nuk keni dhënë një emër të pranueshëm.',
'loginsuccesstitle' => 'Hyrje me sukses',
'loginsuccess' => 'Keni hyrë brënda në {{SITENAME}} si "$1".',
'nosuchuser' => 'Nuk ka ndonjë përdorues me emrin "$1".
Kontrolloni shkrimin ose [[Special:UserLogin/signup|hapni një llogari të re]].',
-'nosuchusershort' => 'Nuk ka asnjë përdorues me emrin "<nowiki>$1</nowiki>".',
+'nosuchusershort' => 'Nuk ka asnjë përdorues me emrin "$1".',
'nouserspecified' => 'Ju duhet të jepni një nofkë',
'login-userblocked' => 'Ky përdorues është bllokuar. Identifikimi nuk lejohet.',
'wrongpassword' => 'Fjalëkalimi që futët nuk është i saktë. Provoni përsëri!',
@@ -658,13 +661,14 @@ Ju lutemi ndiqni këshillat në eMailin e pranuar.',
Duhet të hyni brenda dhe të ndërroni fjalëkalimin tani nëse ky person jeni ju. Përndryshe shpërfilleni këtë mesazh.',
'usernamehasherror' => 'Emri i përdoruesit nuk mund të përmbajë karaktere',
'login-throttled' => 'Keni bërë shumë tentime të njëpasnjëshme në fjalëkalimin e kësaj llogarie. Ju lutemi prisni para tentimit përsëri.',
+'login-abort-generic' => 'login juaj ishte i pasuksesshëm - Ndërpre',
'loginlanguagelabel' => 'Gjuha: $1',
'suspicious-userlogout' => 'Kërkesa juaj për të shkëputet u mohua sepse duket sikur është dërguar nga një shfletues të thyer ose caching proxy.',
# E-mail sending
'php-mail-error-unknown' => 'Gabim i panjohur në funksionin e postës PHP ()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Ndrysho fjalëkalimin',
'resetpass_announce' => 'Ju keni hyrë me një kod të përkohshëm.
Për të hyrë tërësisht duhet të vendosni një fjalëkalim të ri këtu:',
@@ -681,6 +685,33 @@ Për të hyrë tërësisht duhet të vendosni një fjalëkalim të ri këtu:',
'resetpass-wrong-oldpass' => 'Fjalëkalimi momental ose i përkohshëm nuk është i vlefshëm. Ndoshta tanimë me sukses keni ndërruar fjalëkalimin, ose keni kërkuar fjalëkalim të përkohshëm.',
'resetpass-temp-password' => 'Fjalëkalimi i përkohshëm:',
+# Special:PasswordReset
+'passwordreset' => 'Ndrysho fjalkalimin',
+'passwordreset-text' => 'Plotësoni këtë formular për të marrë një këshillë e-mail të dhënat e llogarisë suaj.',
+'passwordreset-legend' => 'Ndrysho fjalkalimin',
+'passwordreset-disabled' => 'Rivendosja e fjalëkalimit është deaktivizuar në këtë wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1| | Shkruani një nga pjesët e të dhënave më poshtë}}',
+'passwordreset-username' => 'Nofka:',
+'passwordreset-email' => 'Posta elektronike',
+'passwordreset-emailtitle' => 'Detajet e llogarisë në {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Dikush (ndoshta ju, nga IP adresa $1) kërkoi një kujtesë për
+detajet e llogarisë suaj {{SITENAME}} ($4).Përdoruesi në vijim {{PLURAL: $3 | llogari është | llogaritë janë}} të lidhur me këtë postë elektronike:
+
+$2
+
+{{PLURAL: $ 3 | Ky fjalëkalim i përkohshëm | Këto fjalëkalime të përkohshme}} do të përfundojë për {{PLURAL: $5 | një ditë | $5 ditë}}.
+
+Ju duhet të kyçeni dhe të zgjidhni një fjalëkalim të ri tani. Nëse dikush tjetër e ka bërë këtë kërkesës, ose në qoftë se ju mbani mend fjalëkalimin tuaj origjinal, dhe ju nuk dëshirojni të ndryshoni atë, ju mund të injoroni këtë mesazh dhe do të vazhdoni përdorimin e fjalëkalimit tuaj të vjetër.',
+'passwordreset-emailtext-user' => 'Përdoruesi $1 në {{SITENAME }} ka kërkuar një kujtesë për të dhënat e llogarisë suaj për {{SITENAME }} ($4). Përdoruesi në vijim {{PLURAL: $3 | llogaria është | llogaritë janë}} të lidhur me këtë postë elektronike:
+
+$2
+
+{{PLURAL: $3 | Ky fjalëkalim i përkohshëm | Këto fjalëkalime të përkohshme}} do të përfundojë në {{PLURAL: $5 | një ditë | $5 ditë}}.
+Ju duhet të kyçeni dhe të zgjidhni një fjalëkalim të ri tani. Nëse dikush tjetër e ka bërë këtë kërkesës, ose në qoftë se ju mbani mend fjalëkalimin tuaj origjinal, dhe ju nuk dëshirojni të ndryshoni atë, ju mund të injoroni këtë mesazh dhe do të vazhdoni përdorimin e fjalëkalimit tuaj të vjetër.',
+'passwordreset-emailelement' => 'Nofka: $1
+Fjalëkalimi i përkohshëm: $2',
+'passwordreset-emailsent' => 'Një korrespondencë kujtese është dërguar',
+
# Edit page toolbar
'bold_sample' => 'Tekst i trashë',
'bold_tip' => 'Tekst i trashë',
@@ -692,8 +723,6 @@ Për të hyrë tërësisht duhet të vendosni një fjalëkalim të ri këtu:',
'extlink_tip' => 'Lidhje e jashtme (most harro prefiksin http://)',
'headline_sample' => 'Titull shembull',
'headline_tip' => 'Titull i nivelit 2',
-'math_sample' => 'Vendos formulen ketu',
-'math_tip' => 'Formulë matematike (LaTeX)',
'nowiki_sample' => 'Vendos tekst që nuk duhet të formatohet',
'nowiki_tip' => 'Mos përdor format wiki',
'image_sample' => 'Shembull.jpg',
@@ -782,7 +811,7 @@ apo [{{fullurl:{{FULLPAGENAME}}|action=edit}} me redaktue këtë faqe]</span>.',
Ju mundeni [[Special:Search/{{PAGENAME}}|me kërku këtë titull]] në faqe tjera,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} me kërku në regjistrat tematikisht të afërm],
apo [{{fullurl:{{FULLPAGENAME}}|action=edit}} me redaktu këtë faqe]</span>.',
-'userpage-userdoesnotexist' => 'Llogaria e përdoruesit "$1" nuk është hapur. Ju lutem mendohuni mirë nëse dëshironi të krijoni/redaktoni këtë faqe.',
+'userpage-userdoesnotexist' => 'Llogaria e përdoruesit "<nowiki>$1</nowiki>" nuk është hapur. Ju lutem mendohuni mirë nëse dëshironi të krijoni/redaktoni këtë faqe.',
'userpage-userdoesnotexist-view' => 'Profili i përdoruesit "$1" nuk është i regjistruar.',
'blocked-notice-logextract' => 'Ky përdorues është bllokuar aktualisht.
Regjistri i bllokuar hyrjen e fundit është më poshtë, për referencë:',
@@ -808,6 +837,7 @@ Regjistri i bllokuar hyrjen e fundit është më poshtë, për referencë:',
'''Nëse ky është një redaktim i vlefshëm, ju lutem provojeni përsëri. Nëse s'punon përsëri atëherë provoni të dilni dhe të hyni përsëri nga llogaria juaj.'''",
'token_suffix_mismatch' => "'''Redaktimi s'është pranuar pasi shfletuesi juaj ka prishur përmbajtjen e shkronjave. Redaktimi është shpërfilluar për të ruajtur përmbajtjen e tekstit.
Kjo ndodh ndonjëherë kur përdoren shërbime ndërjmetësash anonim.'''",
+'edit_form_incomplete' => "'''Disa pjesë të formës së redaktimit nuk e arritit serverin; rikontrolloni që redaktimiet tuaja janë të paprekura dhe provoni përsëri.'''",
'editing' => 'Duke redaktuar $1',
'editingsection' => 'Duke redaktuar $1 (seksion)',
'editingcomment' => 'Duke redaktuar (sekcionin e ri) $1',
@@ -1141,12 +1171,13 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
'searchdisabled' => '<p>Kërkimi me tekst të plotë është bllokuar tani për tani ngaqë shërbyesi është shumë i ngarkuar; shpresojmë ta nxjerrim prapë në gjendje normale pas disa punimeve. Deri atëherë mund të përdorni Google-in për kërkime:</p>',
# Quickbar
-'qbsettings' => 'Vendime të shpejta',
-'qbsettings-none' => 'Asnjë',
-'qbsettings-fixedleft' => 'Lidhur majtas',
-'qbsettings-fixedright' => 'Lidhur djathtas',
-'qbsettings-floatingleft' => 'Pezull majtas',
-'qbsettings-floatingright' => 'Pezull djathtas',
+'qbsettings' => 'Vendime të shpejta',
+'qbsettings-none' => 'Asnjë',
+'qbsettings-fixedleft' => 'Lidhur majtas',
+'qbsettings-fixedright' => 'Lidhur djathtas',
+'qbsettings-floatingleft' => 'Pezull majtas',
+'qbsettings-floatingright' => 'Pezull djathtas',
+'qbsettings-directionality' => 'Fikse, në varësi të skriptës së drejtuar në gjuhën tuaj',
# Preferences page
'preferences' => 'Parapëlqimet',
@@ -1157,9 +1188,10 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
'changepassword' => 'Ndërroni fjalëkalimin',
'prefs-skin' => 'Pamja',
'skin-preview' => 'Parapamje',
-'prefs-math' => 'Formula',
'datedefault' => 'Parazgjedhje',
+'prefs-beta' => 'Karakteristikat Beta',
'prefs-datetime' => 'Data dhe Ora',
+'prefs-labs' => 'Karakteristikat laboratorik',
'prefs-personal' => 'Përdoruesi',
'prefs-rc' => 'Ndryshime së fundmi',
'prefs-watchlist' => 'Lista mbikqyrëse',
@@ -1181,8 +1213,6 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
'columns' => 'Kollona:',
'searchresultshead' => 'Kërkimi',
'resultsperpage' => 'Sa përputhje të tregohen për faqe:',
-'contextlines' => 'Sa rreshta të tregohen për përputhje:',
-'contextchars' => 'Sa germa të tregohen për çdo rresht:',
'stub-threshold' => 'Kufiri për formatin e <a href="#" class="stub">lidhjeve cung</a> (B):',
'stub-threshold-disabled' => 'Çaktivizuar',
'recentchangesdays' => 'Numri i ditëve të treguara në ndryshime së fundmi:',
@@ -1195,7 +1225,7 @@ Kini kujdes se përdorimi i lidhjeve të shfletimit do të ndryshojë përzgjedh
'savedprefs' => 'Parapëlqimet tuaja janë ruajtur.',
'timezonelegend' => 'Zona kohore:',
'localtime' => 'Ora lokale:',
-'timezoneuseserverdefault' => 'Përdor serverin e parazgjedhur',
+'timezoneuseserverdefault' => 'wiki default Përdorimi ( $1 )',
'timezoneuseoffset' => 'Tjera (zgjidh rajonin)',
'timezoneoffset' => 'Ofset¹:',
'servertime' => 'Ora e shërbyesit:',
@@ -1245,6 +1275,7 @@ Kjo informatë është publike.',
'email' => 'Email',
'prefs-help-realname' => '* Emri i vërtetë nuk është i domosdoshëm: Nëse e jipni do të përmendeni si kontribues për punën që ke bërë.',
'prefs-help-email' => "Posta elektronike është zgjedhore, por ju mundëson që fjalëkalimi i ri të ju dërgohet nëse e harroni atë. Gjithashtu mund të zgjidhni nëse doni të tjerët t'ju shkruajnë ose jo përmes faqes suaj të diskutimit pa patur nevojë të zbulojnë identitetin tuaj.",
+'prefs-help-email-others' => 'Mundeni gjithashtu të zgjidhni të kontaktoheni nga të tjerët përmes faqeve tuaja të diskutimit ose përdoruesit pa e treguar identitetin.',
'prefs-help-email-required' => 'Nevojitet e-mail adresa .',
'prefs-info' => 'Informatat bazike',
'prefs-i18n' => 'Internacionalizimi',
@@ -1369,15 +1400,15 @@ Kjo informatë është publike.',
'right-userrights' => 'Redakto të gjitha të drejtat e përdoruesit',
'right-userrights-interwiki' => 'Ndrysho të drejtat e përdoruesve në wiki të tjera',
'right-siteadmin' => 'Mbyll ose hap bazën e të dhënave',
-'right-reset-passwords' => 'Rivendos fjalëkalimet e përdoruesit të tjerë',
'right-override-export-depth' => 'Eksoprto faqet duke përfshirë e lidhura deri në një thellësi prej 5',
'right-sendemail' => 'Dërgo e-mail tek përdoruesit e tjerë',
# User rights log
-'rightslog' => 'Regjistri i privilegjeve',
-'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ë)',
+'rightslog' => 'Regjistri i privilegjeve',
+'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',
+'rightslogentry-autopromote' => 'U promovua automatikisht nga $2 në $3',
+'rightsnone' => '(asgjë)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'lexo këtë faqe',
@@ -1500,13 +1531,13 @@ Të gjithë orët janë me orën e shërbyesit.',
'minlength1' => 'Emri i dosjes duhet të jetë së paku një fjalë',
'illegalfilename' => 'Skeda "$1" përmban gërma që nuk lejohen tek titujt e faqeve. Ju lutem ndërrojani emrin dhe provoni ta ngarkoni përsëri.',
'badfilename' => 'Emri i skedës është ndërruar në "$1".',
-'filetype-mime-mismatch' => 'Prapashtesa e skedarit nuk përshtatet me tipin MIME.',
+'filetype-mime-mismatch' => 'Prapashtesa .$1 e skedarit ($2) nuk përshtatet me tipin MIME.',
'filetype-badmime' => 'Skedat e llojit MIME "$1" nuk lejohen për ngarkim.',
'filetype-bad-ie-mime' => 'Nuk mund të ngarkoni këtë skedë sepse Internet Explorer do ta zbulonte si "$1", që është një lloj skede e papranuar dhe potencialisht e rrezikshme.',
'filetype-unwanted-type' => "'''\".\$1\"''' është një lloj skede i padëshiruar.
Parapëlqehet {{PLURAL:\$3|skeda të jetë e |skedat të jenë të}} llojit \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' nuk është lloj i lejuar i skedave.
-Si {{PLURAL:\$3|i lejuar është lloji i skedës|të lejuara janë llojet e skedave}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|nuk është një lloj i skedës së lejuar|nuk janë lloje të lejuara të skedave}}.
+{{PLURAL:$3|Lloji i lejuar i skedës është|Llojet e lejuara të skedave janë}} $2.',
'filetype-missing' => 'Skeda nuk ka mbaresë (si p.sh. ".jpg").',
'empty-file' => 'Skeda që paraqitët ishte bosh.',
'file-too-large' => 'Skeda që paraqitët ishte shumë e madhe.',
@@ -1523,6 +1554,7 @@ Si {{PLURAL:\$3|i lejuar është lloji i skedës|të lejuara janë llojet e sked
kjo skedë është $2.',
'largefileserver' => 'Skeda është më e madhe se sa serveri e lejon këtë.',
'emptyfile' => 'Skeda që keni dhënë është bosh ose mbi madhësinë e lejushme. Kjo gjë mund të ndodhi nëse shtypni emrin gabim, prandaj kontrolloni nëse dëshironi të jepni skedën me këtë emër.',
+'windows-nonascii-filename' => 'Ky wiki nuk e mbështet emrin e dokumentit me karaktere të veçanta.',
'fileexists' => "Ekziston një skedë me atë emër, ju lutem kontrolloni '''<tt>[[:$1]]</tt>''' në qoftë se nuk jeni të sigurt nëse dëshironi ta zëvendësoni.
[[$1|thumb]]",
'filepageexists' => "Përshkrimi i faqes për këtë skedë është krijuar tek '''<tt>[[:$1]]</tt>''', por asnjë skedë me këtë emër nuk ekziston.
@@ -1559,6 +1591,8 @@ Ju duhet të kontrolloni historikun e grisjes të asaj skede përpara se ta ri-n
Ju lutemi kontrolloni parametrat e ngarkimeve të skedave.',
'uploadscripted' => 'Skeda përmban HTML ose kode të tjera që mund të interpretohen gabimisht nga një shfletues.',
'uploadvirus' => 'Skeda përmban një virus! Detaje: $1',
+'uploadjava' => 'Dokumenti është në formatin ZIP i cili përmban Java. class dokumente.
+Ngarkimi i Java dokumenteve nuk është i lejuar, sepse ato mund të shkaktojnë kufizime të sigurisë për ti anashkaluar.',
'upload-source' => 'Burimi i skedës',
'sourcefilename' => 'Emri i skedës:',
'sourceurl' => 'Burimi URL:',
@@ -1568,10 +1602,6 @@ Ju lutemi kontrolloni parametrat e ngarkimeve të skedave.',
'upload-options' => 'Opsionet e ngarkimit',
'watchthisupload' => 'Mbikqyre këtë skedë',
'filewasdeleted' => 'Një skedë më këtë emër është ngarkuar një here dhe pastaj është grisur. Duhet të shikoni $1 përpara se ta ngarkoni përsëri.',
-'upload-wasdeleted' => "'''Vini re: Po ngarkoni një skedë që është grisur më parë.'''
-
-Duhet të mendoheni nëse është e pranueshme ngarkimi i kësaj skede.
-Regjistri i grisjes së skedës jepet më poshtë:",
'filename-bad-prefix' => "Emri i skedës që po ngarkoni fillon me '''\"\$1\"''' dhe nuk është veçantisht përshkrues pasi përdoret nga shumë kamera.
Ju lutem zgjidhni një emër më përshkrues për skedën tuaj.",
'upload-success-subj' => 'Dhënie e sukseshme',
@@ -1596,6 +1626,23 @@ Nëse problemi vazhdon atëherë kontaktoni një [[Special:ListUsers/sysop|admin
'upload-unknown-size' => 'Madhësia e panjohur',
'upload-http-error' => 'Ndodhi një gabim HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Një gabim është hasur gjatë hapjes së dokumentit për ZIP kontrollimin.',
+'zip-wrong-format' => 'Dokumenti i specifikuar nuk ishte ZIP dokument.',
+'zip-bad' => 'Dokumenti është i korruptuar ose përndryshe dokument ZIP i palexueshëm.
+Ajo nuk mund të kontrollohet siç duhet për sigurinë',
+'zip-unsupported' => 'Dokumenti është ZIP format i cili përdorë ZIP karakteristikat që nuk mbështeten nga MediaWiki.
+Ajo nuk mund të kontrollohet siç duhet për sigurinë.',
+
+# Special:UploadStash
+'uploadstash' => 'Fshehje ngarkimi',
+'uploadstash-summary' => 'Kjo faqe ofron qasje tek skedat të cilat janë ngarkuar (ose janë në proçes ngarkimi) por që nuk janë publikuat akoma në wiki. Këto skeda nuk janë të dukshme për këdo përveç për përdoruesin që i ka ngarkuar ato.',
+'uploadstash-clear' => 'Spastro skedat e fshehura',
+'uploadstash-nofiles' => 'Ju nuk keni skeda të fshehura.',
+'uploadstash-badtoken' => 'Kryerja e këtij veprimi ishte e pasuksesshme, ndoshta sepse kredencialet redaktuese tuaja kanë skaduar. Provoni përsëri.',
+'uploadstash-errclear' => 'Spastrimi i skedave ishte i pasuksesshëm.',
+'uploadstash-refresh' => 'Rifreskoni listën e skedave',
+
# img_auth script messages
'img-auth-accessdenied' => 'Refuzohet hyrja',
'img-auth-nopathinfo' => 'Mungon PATH_INFO.
@@ -1673,14 +1720,14 @@ Shtypni kolonat e tjera për të ndryshuar radhitjen.',
'filehist-filesize' => 'Madhësia e skedës',
'filehist-comment' => 'Koment',
'filehist-missing' => 'Mungon skeda',
-'imagelinks' => 'Lidhje skedash',
+'imagelinks' => 'Përdorimi i skedës',
'linkstoimage' => '{{PLURAL:$1|faqe lidhet|$1 faqe lidhen}} tek kjo skedë:',
'linkstoimage-more' => 'Më shumë se $1 {{PLURAL:$1|lidhje faqeje|lidhje faqesh}} tek kjo skedë.
Lista e mëposhtme tregon {{PLURAL:$1|lidhjen e parë të faqes|lidhjet e para $1 të faqeve}} vetëm tek kjo skedë.
Një [[Special:WhatLinksHere/$2|listë e plotë]] është e mundur.',
'nolinkstoimage' => 'Asnjë faqe nuk lidhet tek kjo skedë.',
'morelinkstoimage' => 'Shikoni [[Special:WhatLinksHere/$1|më shumë lidhje]] tek kjo skedë.',
-'redirectstofile' => 'Skeda vijuese {{PLURAL:$1|file redirects|$1 ridrejtohet}} tek kjo skedë:',
+'linkstoimage-redirect' => '$1 (dokument përcjellës) $2',
'duplicatesoffile' => 'Në vijim {{PLURAL:$1|skeda është identike|$1 janë idnetike}} me këtë skedë
([[Special:FileDuplicateSearch/$2|më shumë detaje]]):',
'sharedupload' => 'Kjo skedë është nga $1 dhe mund të përdoret në projekte të tjera.',
@@ -1776,12 +1823,13 @@ Mos harroni të shihni nyje tjera të stampave para grisjes së tyre.',
Ato duhet të kenë lidhje të drejtpërdrejtë tek artikujt e nevojshëm.<br />
Një faqe trajtohet si faqe kthjelluese nëse përdor stampat e lidhura nga [[MediaWiki:Disambiguationspage]]",
-'doubleredirects' => 'Përcjellime dopjo',
-'doubleredirectstext' => "Kjo faqe liston faqet përcjellëse tek faqet e tjera përcjellëse.
+'doubleredirects' => 'Përcjellime dopjo',
+'doubleredirectstext' => "Kjo faqe liston faqet përcjellëse tek faqet e tjera përcjellëse.
Secili rresht përmban lidhjet tek përcjellimi i parë dhe përcjellimi i dytë, gjithashtu synimin e përcjellimit të dytë, që është zakonisht faqja synuese '''e vërtetë''', që faqja w parë duhej të ishte përcjellëse e kësaj faqeje.
<del>Kalimet nga</del> hyrjet janë zgjidhur.",
-'double-redirect-fixed-move' => '[[$1]] u zhvendos, tani është gjendet në [[$2]]',
-'double-redirect-fixer' => 'Rregullues zhvendosjesh',
+'double-redirect-fixed-move' => '[[$1]] u zhvendos, tani është gjendet në [[$2]]',
+'double-redirect-fixed-maintenance' => 'Duke zgjidhur përcjellimin e dyfishtë nga [[$1]] tek [[$2]].',
+'double-redirect-fixer' => 'Rregullues zhvendosjesh',
'brokenredirects' => 'Përcjellime të prishura',
'brokenredirectstext' => "Përcjellimet që vijojnë lidhen tek një artikull që s'ekziston:",
@@ -1858,6 +1906,7 @@ Ju lutemi, vini re se faqe të tjera në rrjet si mund të lidhin një figurë m
'pager-newer-n' => '{{PLURAL:$1|1 më i reja|$1 më të reja}}',
'pager-older-n' => '{{PLURAL:$1|1 më i vjetër|$1 më të vjetra}}',
'suppress' => 'Kujdestari',
+'querypage-disabled' => 'Kjo faqe speciale është çaktivizuar për arsye të performancës.',
# Book sources
'booksources' => 'Burime librash',
@@ -1974,6 +2023,10 @@ Adresa e email-it që shkruat tek [[Special:Preferences|preferencat tuaja]] do t
'noemailtext' => 'Ky përdorues nuk ka përcaktuar një adresë të vlefshme e-mail.',
'nowikiemailtitle' => 'Nuk lejohet postë elektronike',
'nowikiemailtext' => 'Ky përdorues ka zgjedhur të mos pranojë porosi elektronike nga përdoruesit tjerë.',
+'emailnotarget' => 'Nofka jo ekzistuese ose e pavlefshme për marrësin',
+'emailtarget' => 'Shkruani nofkën e marrësit',
+'emailusername' => 'Nofka:',
+'emailusernamesubmit' => 'Paraqit',
'email-legend' => 'Dërgoni porosi elektronike një përdoruesi të {{SITENAME}}',
'emailfrom' => 'Nga:',
'emailto' => 'Për:',
@@ -1998,11 +2051,11 @@ Adresa e email-it që shkruat tek [[Special:Preferences|preferencat tuaja]] do t
'watchlistanontext' => 'Ju lutemi $1 për të parë redaktimet e artikujve në listë tuaj mbikqyrëse.',
'watchnologin' => 'Nuk keni hyrë brënda',
'watchnologintext' => 'Duhet të keni [[Special:UserLogin|hyrë brenda]] për të ndryshuar listën mbikqyrëse.',
-'addedwatch' => 'U shtua tek lista mbikqyrëse',
+'addwatch' => 'Shto tek lista mbikqyrëse',
'addedwatchtext' => "Faqja \"[[:\$1]]\" i është shtuar [[Special:Watchlist|listës mbikqyrëse]] tuaj. Ndryshimet e ardhshme të kësaj faqeje dhe faqes së diskutimit të saj do të jepen më poshtë, dhe emri i faqes do të duket i '''trashë''' në [[Special:RecentChanges|listën e ndryshimeve së fundmi]] për t'i dalluar më kollaj.
Në qoftë se dëshironi të hiqni një faqe nga lista mbikqyrëse më vonë, shtypni \"çmbikqyre\" në tabelën e sipërme.",
-'removedwatch' => 'U hoq nga lista mibkqyrëse',
+'removewatch' => 'Largo nga lista mbikqyrëse',
'removedwatchtext' => 'Faqja "[[:$1]]" është hequr nga [[Special:Watchlist|lista mbikqyrëse e juaj]].',
'watch' => 'Mbikqyre',
'watchthispage' => 'Mbikqyre këtë faqe',
@@ -2023,8 +2076,9 @@ Në qoftë se dëshironi të hiqni një faqe nga lista mbikqyrëse më vonë, sh
'watchlist-options' => 'Mundësitë e listës mbikqyrëse',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Duke mbikqyrur...',
-'unwatching' => 'Duke çmbikqyrur...',
+'watching' => 'Duke mbikqyrur...',
+'unwatching' => 'Duke çmbikqyrur...',
+'watcherrortext' => 'Është paraqitur një gabim përderisa ndryshuat parametrat e listës suaj mbikqyrëse për "$1".',
'enotif_mailer' => 'Postieri Njoftues i {{SITENAME}}',
'enotif_reset' => 'Shëno të gjitha faqet e vizituara',
@@ -2036,7 +2090,35 @@ Në qoftë se dëshironi të hiqni një faqe nga lista mbikqyrëse më vonë, sh
'enotif_lastvisited' => 'Shikoni $1 për të gjitha ndryshimet që prej vizitës tuaj të fundit.',
'enotif_lastdiff' => 'Shikoni $1 për ndryshime.',
'enotif_anon_editor' => 'përdorues anonim $1',
-'enotif_body' => 'I/E dashur $WATCHINGUSERNAME,
+'enotif_body' => 'I Nderuar $WATCHINGUSERNAME,
+
+
+Kjo {{SITENAME}} faqe $PAGETITLE eshte $CHANGEDORCREATED on $PAGEEDITDATE by $PAGEEDITOR, see $PAGETITLE_URL per versioni mo i ri.
+
+$NEWPAGE
+
+Editor\'s summary: $PAGESUMMARY $PAGEMINOREDIT
+Kontakto:
+mail: $PAGEEDITOR_EMAIL
+wiki: $PAGEEDITOR_WIKI
+
+There will be no other notifications in case of further changes unless you visit this page.
+You could also reset the notification flags for all your watched pages on your watchlist.
+
+Your friendly {{SITENAME}} notification system
+
+--
+To change your email notification settings, visit
+{{canonicalurl:{{#special:Preferences}}}}
+
+To change your watchlist settings, visit
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+To delete the page from your watchlist, visit
+$UNWATCHURL
+
+Feedback and further assistance:
+{{canonicalurl:{{MediaWiki:Helppage}}}}
Faqja $PAGETITLE tek {{SITENAME}} është $CHANGEDORCREATED më $PAGEEDITDATE nga $PAGEEDITOR, shikoni $PAGETITLE_URL për versionin e tanishëm.
@@ -2053,13 +2135,13 @@ Nuk do të ketë njoftime të tjera për ndryshimet e ardhshme përveç nëse e
Miku juaj njoftues nga {{SITENAME}}
--
-Për të ndryshuar parapëlqimet e mbikqyrjes shikoni {{fullurl:Special:Watchlist/edit}}
+Për të ndryshuar parapëlqimet e mbikqyrjes shikoni {{canonicalurl:Special:Watchlist/edit}}
Për të larguar faqen nga lista juaj mbikqyrëse, shikoni
$UNWATCHURL
Për të na dhënë përshtypjet tuaja ose për ndihmë të mëtejshme:
-{{fullurl:{{MediaWiki:Helpage}}}}',
+{{canonicalurl:{{MediaWiki:Helpage}}}}',
# Delete
'deletepage' => 'Grise faqen',
@@ -2075,7 +2157,7 @@ Për të na dhënë përshtypjet tuaja ose për ndihmë të mëtejshme:
'confirmdeletetext' => 'Jeni duke grisur një faqe me tërë historinë e saj. Ju lutemi konfirmoni që po e bëni qëllimisht, që i kuptoni pasojat, dhe që po veproni në përputhje me [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Veprimi u krye',
'actionfailed' => 'Veprimi dështoi',
-'deletedtext' => '"<nowiki>$1</nowiki>" është grisur nga regjistri. Shikoni $2 për një pasqyrë të grisjeve së fundmi.',
+'deletedtext' => '"$1" është grisur nga regjistri. Shikoni $2 për një pasqyrë të grisjeve së fundmi.',
'deletedarticle' => 'grisi "[[$1]]"',
'suppressedarticle' => '"[[$1]]" i shtypur',
'dellogpage' => 'Regjistri i grisjeve',
@@ -2131,7 +2213,7 @@ Shih listën e [[Special:ProtectedPages|faqeve të mbrojtura]] nga lista e mbroj
'protect_expiry_invalid' => 'Data e skadimit është e gabuar.',
'protect_expiry_old' => 'Data e skadencës është në të shkuarën.',
'protect-unchain-permissions' => 'Zhbllokoni opsionet e mëtejshme të mbrojtjes',
-'protect-text' => "Këtu mund të shikoni dhe ndryshoni nivelin e mbrojtjes për faqen '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Këtu mund të shikoni dhe ndryshoni nivelin e mbrojtjes për faqen '''$1'''.",
'protect-locked-blocked' => "Nuk mund të ndryshoni nivelet e mbrojtjes duke qenë i bllokuar. Kufizimet e kësaj faqeje janë '''$1''':",
'protect-locked-dblock' => "Nivelet e mbrojtjes nuk mund të ndryshohen pasi regjistri është i bllokuar. Kufizimet e kësaj faqeje janë '''$1''':",
'protect-locked-access' => "Llogaria juaj nuk ka privilegjet e nevojitura për të ndryshuar nivelin e mbrojtjes. Kufizimet e kësaj faqeje janë '''$1''':",
@@ -2183,10 +2265,8 @@ Mund të ndryshoni nivelin e mbrojtjes të kësaj faqeje por kjo nuk do të ndry
'undeletepagetext' => '{{PLURAL:$1|Faqja në vazhdim është grisur, por akoma është|$1 Faqet në vazhdim janë grisur, por akoma janë}} në arkiv dhe mund të rikthehen.
Arkivi, kohëpaskohe është e mundur të pastrohet.',
'undelete-fieldset-title' => 'Rikthe revizionet',
-'undeleteextrahelp' => "Për të restauruar të gjithë historikun e faqes, lërini të gjitha kutizat të paselektuara dhe klikoni
-'''''{{int:undeletebtn}}'''''.
-Për të bërë një restaurim të pjesshëm zgjidhni kutizat koresponduese të versioneve që doni të restauroni dhe klikoni '''''{{int:undeletebtn}}'''''.
-Klikimi i '''''{{int:undeletereset}}''''' do të pastrojë fushat e komenteve dhe kutizat.",
+'undeleteextrahelp' => "Per tu rregeluar histori, zbardh gjith kutit '''''{{int:undeletebtn}}'''''.
+To perform a selective restoration, check the boxes corresponding to the revisions to be restored, and click '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|version u fut|versione u futën}} në arkiv',
'undeletehistory' => 'Nëse restauroni një faqe, të gjitha versionet do të restaurohen në histori.
Nëse një faqe e re me të njëjtin titull është krijuar pas grisjes, versionet e restauruara do të paraqiten më mbrapa në histori.',
@@ -2229,9 +2309,12 @@ $1',
'undelete-show-file-submit' => 'Po',
# Namespace form on various pages
-'namespace' => 'Hapësira:',
-'invert' => 'Kundër zgjedhjes',
-'blanknamespace' => '(Artikujt)',
+'namespace' => 'Hapësira:',
+'invert' => 'Kundër zgjedhjes',
+'tooltip-invert' => 'Shëno këtë kuti për të fshehur ndryshimet në faqet përbrenfa hapsirës së selektuar (dhe hapsirës së lidhur nëse e shënuar)',
+'namespace_association' => 'Hapsira e lidhur',
+'tooltip-namespace_association' => 'Shëno këtë kuti për të përfshijnë gjithashtu diskutimin apo hapsirën e subjektit e lidhur me hapësirën e zgjedhur',
+'blanknamespace' => '(Artikujt)',
# Contributions
'contributions' => 'Kontributet',
@@ -2281,13 +2364,15 @@ Bllokimi i funditë është më poshtë për referencë:',
'whatlinkshere-filters' => 'Filtra',
# Block/unblock
+'autoblockid' => 'Autobllokim #$1',
+'block' => 'Blloko përdoruesin',
+'unblock' => 'Zhblloko përdoruesin',
'blockip' => 'Blloko përdorues',
'blockip-title' => 'Përdorues i Bllokuar',
'blockip-legend' => 'Blloko përdoruesin',
'blockiptext' => 'Përdorni formularin e mëposhtëm për të hequr lejen e shkrimit për një përdorues ose IP specifike.
Kjo duhet bërë vetëm në raste vandalizmi, dhe në përputhje me [[{{MediaWiki:Policy-url}}|rregullat e {{SITENAME}}-s]].
Plotësoni arsyen specifike më poshtë (p.sh., tregoni faqet specifike që u vandalizuan).',
-'ipaddress' => 'IP Adresë/përdorues',
'ipadressorusername' => 'Adresë IP ose emër përdoruesi',
'ipbexpiry' => 'Afati',
'ipbreason' => 'Arsyeja:',
@@ -2300,7 +2385,7 @@ Plotësoni arsyen specifike më poshtë (p.sh., tregoni faqet specifike që u va
** Sjellje arrogante/perverze
** Përdorimi i më shumë llogarive të përdoruesve
** Nofkë të papranueshme',
-'ipbanononly' => 'Blloko vetëm përdoruesin anonim',
+'ipb-hardblock' => 'Parandalo përdoruesit e kyçur për të redaktuar nga kjo IP adresë',
'ipbcreateaccount' => 'Mbroje krijimin e llogarive',
'ipbemailban' => 'Pa mundëso dërgimin e porosive elektronike nga përdoruesit',
'ipbenableautoblock' => 'Blloko edhe IP adresën që ka përdor ky përdorues deri tash, si dhe të gjitha subadresat nga të cilat mundohet ky përdorues të editoj.',
@@ -2311,12 +2396,15 @@ Plotësoni arsyen specifike më poshtë (p.sh., tregoni faqet specifike që u va
'ipbotherreason' => 'Arsye tjetër/shtesë',
'ipbhidename' => 'Fshih emrat e përdorueseve nga redaktimet dhe listat',
'ipbwatchuser' => 'Shiko faqen e prezantimit dhe diskutimit të këtij përdoruesi',
-'ipballowusertalk' => 'Lejoni këtë përdorues të redaktojë faqen e diskutimit të tij kur është i bllokuar',
+'ipb-disableusertalk' => 'Parandalo këtë përdorues për të redaktuar faqe-diskutimin e tyre përderisa janë të bllokkuar',
'ipb-change-block' => 'Ri-blloko përdorues me këta parametra',
+'ipb-confirm' => 'Konfirmo bllokimin',
'badipaddress' => 'Nuk ka asnjë përdorues me atë emër',
'blockipsuccesssub' => 'Bllokimi u bë me sukses',
'blockipsuccesstext' => 'Përdoruesi/IP-Adresa [[Special:Contributions/$1|$1]] u bllokua.<br />
Shiko te [[Special:IPBlockList|Lista e përdoruesve dhe e IP adresave të bllokuara]] për të çbllokuar Përdorues/IP.',
+'ipb-blockingself' => 'Ju jeni duke bllokuar vetëveten ! Jeni te sigurte qe doni te bëni këtë?',
+'ipb-confirmhideuser' => 'Ju jeni gati për të bllokuar një përdorues me "përdorues të fshehur" të aktivizuar. Kjo do të shtypur emrin e përdoruesit në të gjitha listat dhe aktivitetet hyrëse. Jeni te sigurte qe doni ta bëni këtë ?',
'ipb-edit-dropdown' => 'Redakto arsyet e bllokimit',
'ipb-unblock-addr' => 'Çblloko $1',
'ipb-unblock' => 'Çblloko përdorues dhe IP të bllokuara',
@@ -2327,17 +2415,23 @@ Shiko te [[Special:IPBlockList|Lista e përdoruesve dhe e IP adresave të blloku
një përdoruesi ose IP adreseje të bllokuar.",
'ipusubmit' => 'Hiqni këtë bllokim',
'unblocked' => '[[User:$1|$1]] është çbllokuar',
+'unblocked-range' => '$1 është zhbllokuar',
'unblocked-id' => 'Bllokimi $1 është hequr',
+'blocklist' => 'Përdorues i Bllokuar',
'ipblocklist' => 'Përdorues i Bllokuar',
'ipblocklist-legend' => 'Gjej një përdorues të bllokuar',
-'ipblocklist-username' => 'Adresa IP ose nofka e përdoruesit:',
-'ipblocklist-sh-userblocks' => '$1 bllokimet e llogarisë',
-'ipblocklist-sh-tempblocks' => '$1 bllokimet e përkohshme',
-'ipblocklist-sh-addressblocks' => '$1 bllokimet e IP',
+'blocklist-userblocks' => 'Fsheh bllokimin e llogarisë',
+'blocklist-tempblocks' => 'Fsheh bllokimin e përkohshëm',
+'blocklist-addressblocks' => 'Fsheh bllokimin e IP vetanake',
+'blocklist-timestamp' => 'Kohë-caktimi',
+'blocklist-target' => 'Objektivi',
+'blocklist-expiry' => 'Skadon',
+'blocklist-by' => 'Administratori i bllokimit',
+'blocklist-params' => 'Parametrat e Bllokimit',
+'blocklist-reason' => 'Arsyeja',
'ipblocklist-submit' => 'Kërko',
'ipblocklist-localblock' => 'Bllokim lokal',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Bllokim tjetër|Bllokime të tjera}}',
-'blocklistline' => '$1, $2 bllokoi $3 ($4)',
'infiniteblock' => 'pakufi',
'expiringblock' => 'skadon më $1 në $2',
'anononlyblock' => 'vetëm anonimët',
@@ -2360,7 +2454,7 @@ Regjistri i bllokimeve është poshtë për referncë:',
Regjistri i bllokimeve është poshtë për referncë:',
'blocklogentry' => 'bllokoi [[$1]] për një kohë prej: $2 $3',
'reblock-logentry' => 'ndryshoi parametrat e bllokimit për [[$1]] me një kohë prej $2 $3',
-'blocklogtext' => 'Ky është një regjistër bllokimesh dhe çbllokimesh të përdoruesve. IP-të e bllokuara automatikisht nuk janë të dhëna. Shikoni dhe [[Special:IPBlockList|listën e IP-ve të bllokuara]] për një listë të bllokimeve të tanishme.',
+'blocklogtext' => 'Ky është një regjistër bllokimesh dhe çbllokimesh të përdoruesve. IP-të e bllokuara automatikisht nuk janë të dhëna. Shikoni dhe [[Special:BlockList|listën e IP-ve të bllokuara]] për një listë të bllokimeve të tanishme.',
'unblocklogentry' => 'çbllokoi "$1"',
'block-log-flags-anononly' => 'vetëm anonimët',
'block-log-flags-nocreate' => 'krijimi i kontove është pamundësuar',
@@ -2374,10 +2468,10 @@ Regjistri i bllokimeve është poshtë për referncë:',
'ipb_expiry_temp' => 'Bllokimet e përdoruesve të fshehur duhet të jenë të përhershme.',
'ipb_hide_invalid' => 'Nuk mund ta prishni këtë llogari; mund të ketë shumë redaktime.',
'ipb_already_blocked' => '"$1" është i bllokuar',
-'ipb-needreblock' => "== I bllokuar ==
-$1 është i bllokuar.
+'ipb-needreblock' => "$1 është i bllokuar.
Dëshironi t'i ndryshoni parametrat?",
'ipb-otherblocks-header' => '{{PLURAL:$1|Bllokim tjetër|Bllokime të tjera}}',
+'unblock-hideuser' => 'Ju nuk mund të zhbllokoni këtë përdorues, përderisa nofka e tij është fshehur.',
'ipb_cant_unblock' => 'Gabim: Bllokimi ID $1 nuk u gjet.
Mund të jetë zhbllokuar.',
'ipb_blocked_as_range' => 'Gabim: Adresa IP $1 nuk është bllokuar direkt dhe nuk mund të zhbllokohet.
@@ -2417,6 +2511,7 @@ Kujtohuni ta [[Special:UnlockDB|çbllokoni]] pasi të keni mbaruar mirëmbajtjen
'lockfilenotwritable' => "Skeda për bllokimin e regjistrit s'mund të shkruhet.
Shërbyesi i rrjetit duhet të jetë në gjendje të shkruaj këtë skedë për të bllokuar ose çbllokuar regjistrin.",
'databasenotlocked' => 'Regjistri nuk është bllokuar.',
+'lockedbyandtime' => '(nga {{GENDER:$1|$1}} më $2 në $3)',
# Move page
'move-page' => 'Zhvendose $1',
@@ -2534,7 +2629,7 @@ Për të eksportuar faqe, thjesht shtypni një emër për çdo rresht, ose krijo
'allmessagesdefault' => 'Teksti i parazgjedhur',
'allmessagescurrent' => 'Teksti i tanishëshm',
'allmessagestext' => 'Kjo është një listë e të gjitha faqeve në hapësirën MediaWiki:
-Ju lutemi vizitoni [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] dhe [http://translatewiki.net translatewiki.net] nëse dëshironi të kontribuoni në lokalizimin e përgjithshëm MediaWiki',
+Ju lutemi vizitoni [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] dhe [//translatewiki.net translatewiki.net] nëse dëshironi të kontribuoni në lokalizimin e përgjithshëm MediaWiki',
'allmessagesnotsupportedDB' => "Kjo faqe nuk mund të përdoret sepse '''\$wgUseDatabaseMessages''' është çaktivizuar.",
'allmessages-filter-legend' => 'Filtër',
'allmessages-filter' => 'Filtroni nga shteti',
@@ -2678,9 +2773,7 @@ Ju lutemi provoni përsëri.',
'monobook.css' => '/* redaktoni këtë faqe për të përshtatur pamjen Monobook për tëra faqet tuaja */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata nuk është i mundshëm për këtë server.',
-'nocreativecommons' => 'Creative Commons RDF metadata nuk është i mundshëm për këtë server.',
-'notacceptable' => 'Wiki server nuk mundet ti përgatit të dhënat për klintin tuaj.',
+'notacceptable' => 'Wiki server nuk mundet ti përgatit të dhënat për klintin tuaj.',
# Attribution
'anonymous' => '{{PLURAL:$1|Përdoruesi anonim|Përdoruesit anonimë}} të {{SITENAME}}',
@@ -2703,37 +2796,23 @@ Ju lutemi provoni përsëri.',
'spam_blanking' => 'U boshatis sepse të gjitha versionet kanë lidhje tek $1',
# Info page
-'infosubtitle' => 'Informacion për faqen',
-'numedits' => 'Numri i versioneve të artikullit: $1',
-'numtalkedits' => 'Numrii versioneve të diskutimit të artikullit: $1',
-'numwatchers' => 'Numri i mbikqyrësve: $1',
-'numauthors' => 'Numri i autorëve të artikullit: $1',
-'numtalkauthors' => 'Numri i diskutuesve për artikullin: $1',
+'pageinfo-title' => 'Informacion për " $1 "',
+'pageinfo-header-edits' => 'Redaktimet',
+'pageinfo-header-watchlist' => 'Lista mbikqyrëse',
+'pageinfo-header-views' => 'Shikime',
+'pageinfo-subjectpage' => 'Faqe',
+'pageinfo-talkpage' => 'Faqe diskutimi',
+'pageinfo-watchers' => 'Numri i mbikqyrësve',
+'pageinfo-edits' => 'Numri i redaktimeve',
+'pageinfo-authors' => 'Numri i autorëve të veçantë',
+'pageinfo-views' => 'Numri i shikimeve',
+'pageinfo-viewsperedit' => 'Shikime për redaktim',
# Skin names
'skinname-standard' => 'Standarte',
'skinname-nostalgia' => 'Nostalgjike',
'skinname-cologneblue' => 'Kolonjë Blu',
-# Math options
-'mw_math_png' => 'Gjithmonë PNG',
-'mw_math_simple' => 'HTML në qoftë se është e thjeshtë ose ndryshe PNG',
-'mw_math_html' => 'HTML në qoftë se është e mundur ose ndryshe PNG',
-'mw_math_source' => 'Lëre si TeX (për shfletuesit tekst)',
-'mw_math_modern' => 'E rekomanduar për shfletuesit modern',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'Nuk e kuptoj',
-'math_unknown_error' => 'gabim i panjohur',
-'math_unknown_function' => 'funksion i panjohur',
-'math_lexing_error' => 'gabim leximi',
-'math_syntax_error' => 'Gabim sintakse',
-'math_image_error' => 'Konversioni PNG dështoi; kontrolloni për ndonjë gabim instalimi të latex-it, dvips-it, gs-it, dhe convert-it.',
-'math_bad_tmpdir' => 'Nuk munda të shkruaj ose krijoj dosjen e përkohshme për matematikë',
-'math_bad_output' => 'Nuk munda të shkruaj ose të krijoj prodhimin matematik në dosjen',
-'math_notexvc' => 'Mungon zbatuesi texvc; ju lutem shikoni math/README për konfigurimin.',
-
# Patrolling
'markaspatrolleddiff' => 'Shënoje si të patrulluar',
'markaspatrolledtext' => 'Shënoje këtë artikull të patrulluar',
@@ -2776,10 +2855,11 @@ Duke e përdorur sistemi juaj mund të rrezikohet.",
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|faqe|faqe}}',
'file-info' => 'madhësia skedës: $1, lloji MIME: $2',
'file-info-size' => '$1 × $2 pixela, madhësia e skedës: $3, tipi MIME: $4',
+'file-info-size-pages' => '$1 × $2 pixel, madhësia e dokumentit: $3 , MIME tipi: $4 , $5 {{PLURAL:$5| faqe | faqet}}',
'file-nohires' => '<small>Nuk ka rezolucion më të madh.</small>',
'svg-long-desc' => 'skedë SVG, fillimisht $1 × $2 pixel, madhësia e skedës: $3',
'show-big-image' => 'Rezolucion i plotë',
-'show-big-image-thumb' => '<small>Madhësia e këtij shikimi: $1 × $2 pixel</small>',
+'show-big-image-size' => '$1 × $2 pixel',
'file-info-gif-looped' => 'kthyer',
'file-info-gif-frames' => '$1 {{PLURAL:$1|kornizë|korniza}}',
'file-info-png-looped' => 'kthyer',
@@ -2811,15 +2891,20 @@ Lidhja e parë nërresht duhet të lidhet tek një skedë e keqe.<br />
Në qoftë se skeda është ndryshuar nga gjendja origjinale, disa hollësira mund të mos pasqyrojnë versionin e tanishëm.',
'metadata-expand' => 'Trego detajet',
'metadata-collapse' => 'Fshih detajet',
-'metadata-fields' => 'Të dhënat EXIF që tregohen mëposhtë do të përfshihen tek faqja përshkruese e figurës kur tabela e të dhënave të jetë palosur.
-Të tjerat do të fshihen.
+'metadata-fields' => 'Imetadata fusha Image të listuara në këtë mesazh do të përfshihen në faqen shfaqur imazhin kur tryezë metadata është shembur
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Gjerësia',
@@ -2834,13 +2919,11 @@ Të tjerat do të fshihen.
'exif-ycbcrpositioning' => 'Pozicioni Y dhe C',
'exif-xresolution' => 'Rezolucioni horizontal',
'exif-yresolution' => 'Rezolucioni vertikal',
-'exif-resolutionunit' => 'Madhësia e njësisë se X dhe Y',
'exif-stripoffsets' => 'Vendi i figurave',
'exif-rowsperstrip' => 'Numri i rreshtave për shirit',
'exif-stripbytecounts' => 'Bajt për shirit të ngjeshur',
'exif-jpeginterchangeformat' => 'Çvendos tek JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bajtët të dhënave JPEG',
-'exif-transferfunction' => 'Funksioni i transferit',
'exif-whitepoint' => 'Pikët e bardha kromatike',
'exif-primarychromaticities' => 'Kromatikët e primareve',
'exif-ycbcrcoefficients' => 'Koeficentët e transformimit të hapësirave të ngjyrave të matricës',
@@ -2859,7 +2942,6 @@ Të tjerat do të fshihen.
'exif-compressedbitsperpixel' => 'Lloji i ngjeshjes së figurës',
'exif-pixelydimension' => 'Gjerësia Image',
'exif-pixelxdimension' => 'lartësi Image',
-'exif-makernote' => 'Shënimet e prodhuesit',
'exif-usercomment' => 'Vërejtjet e përdoruesit',
'exif-relatedsoundfile' => 'Skeda audio shoqëruese',
'exif-datetimeoriginal' => 'Data dhe koha e prodhimit të të dhënave',
@@ -2873,7 +2955,6 @@ Të tjerat do të fshihen.
'exif-exposureprogram' => 'Zbuloni programin',
'exif-spectralsensitivity' => 'Ndjeshmëria spektrale',
'exif-isospeedratings' => 'Vlerësimi i shpejtësisë ISO',
-'exif-oecf' => 'Faktori i konvertimit optoelektronik',
'exif-shutterspeedvalue' => 'shpejtësi APEX qepen',
'exif-aperturevalue' => 'aperture APEX',
'exif-brightnessvalue' => 'shkëlqim APEX',
@@ -2886,7 +2967,6 @@ Të tjerat do të fshihen.
'exif-focallength' => 'Gjatësia e vatrës',
'exif-subjectarea' => 'Hapësira e subjektit',
'exif-flashenergy' => 'Energjia e blicit',
-'exif-spatialfrequencyresponse' => 'Përgjigje e frekuencës hapësinore',
'exif-focalplanexresolution' => 'Rezelucioni i planit fokal X',
'exif-focalplaneyresolution' => 'Rezelucioni i planit fokal Y',
'exif-focalplaneresolutionunit' => 'Rezolucioni i njësisë së planit fokal',
@@ -2895,7 +2975,6 @@ Të tjerat do të fshihen.
'exif-sensingmethod' => 'Metoda Sensing',
'exif-filesource' => 'Burimi i skedës',
'exif-scenetype' => 'Lloji Scene',
-'exif-cfapattern' => 'Modeli CFA',
'exif-customrendered' => 'Përpunim i fotografisë Costum',
'exif-exposuremode' => 'Mënyra e ekspozimit',
'exif-whitebalance' => 'Balanca e bardhë',
@@ -2940,10 +3019,79 @@ Të tjerat do të fshihen.
'exif-gpsareainformation' => 'Emri i zonës GPS',
'exif-gpsdatestamp' => 'E dhënë GPS',
'exif-gpsdifferential' => 'Korrigjim diferencial i GPS',
+'exif-jpegfilecomment' => 'Komenti i JPEG dokumentit',
+'exif-keywords' => 'Fjalët kyçe',
+'exif-worldregioncreated' => 'Rajoni botërorë ku është marrë fotografia',
+'exif-countrycreated' => 'Shteti ku është marrë fotografia',
+'exif-countrycodecreated' => 'Kodi për shtetin ku është marrë fotografia',
+'exif-provinceorstatecreated' => 'Provinca apo shteti ku është marrë fotografia',
+'exif-citycreated' => 'Qyteti ku është marrë fotografia',
+'exif-sublocationcreated' => 'Nën-Lokacioni i qytetit ku është marrë fotografia',
+'exif-worldregiondest' => 'Rajoni botërorë i treguar',
+'exif-countrydest' => 'Shteti i treguar',
+'exif-countrycodedest' => 'Kodi për vendin e treguar',
+'exif-provinceorstatedest' => 'Provinca ose të shteti i treguar',
+'exif-citydest' => 'Qyteti i treguar',
+'exif-sublocationdest' => 'Nën-Lokacioni i qytetit të treguar',
'exif-objectname' => 'Titull i shkurtër',
+'exif-specialinstructions' => 'Udhëzime të veçanta',
+'exif-headline' => 'Mbishkrimi',
+'exif-credit' => 'Atribues / Furnizues',
+'exif-source' => 'Burimi',
+'exif-editstatus' => 'Statusi editorial i fotografisë',
+'exif-urgency' => 'Urgjencë',
+'exif-fixtureidentifier' => 'Emri i shtojcës',
+'exif-locationdest' => 'Vendndodhja e përshkruar',
+'exif-locationdestcode' => 'Kodi i lokacionit të përshkruar',
+'exif-objectcycle' => 'Koha e ditës që media është menduar për',
+'exif-contact' => 'Informatat e kontaktit',
+'exif-writer' => 'Shkrimtari',
+'exif-languagecode' => 'Gjuha',
+'exif-iimversion' => 'IIM versioni',
+'exif-iimcategory' => 'Kategoria',
+'exif-iimsupplementalcategory' => 'Kategoritë plotësuese',
+'exif-datetimeexpires' => 'Mos përdorni më pas',
+'exif-datetimereleased' => 'Lëshuar më',
+'exif-originaltransmissionref' => 'Kodi origjinal i vendit të transmetimit',
+'exif-identifier' => 'Identifikuesi',
+'exif-lens' => 'Lentja e përdorur',
+'exif-serialnumber' => 'Numri serik i kamerës',
+'exif-cameraownername' => 'Pronari i kamerës',
+'exif-label' => 'Etiketa',
+'exif-datetimemetadata' => 'Data e ndryshimit të fundit të të dhënave',
+'exif-nickname' => 'Emri joformal i fotografisë',
+'exif-rating' => 'Vlerësimi (nga 5)',
+'exif-rightscertificate' => 'Certifikatë e të drejtave të menaxhmentit',
+'exif-copyrighted' => 'Statusi i të drejtës së autorit',
+'exif-copyrightowner' => 'Pronari i të drejtës së autorit',
+'exif-usageterms' => 'Mënyra e përdorimit',
+'exif-webstatement' => 'Deklarata e të drejtës së autorit në-linjë',
+'exif-originaldocumentid' => 'ID-ja unike e dokumentit origjinal',
+'exif-licenseurl' => 'URL-ja për licencën e të drejtës së autorit',
+'exif-morepermissionsurl' => 'Informacion alternativ i licencimit',
+'exif-attributionurl' => 'Kur ri-shfrytëzoni këtë punë, ju lutem lidheni tek',
+'exif-preferredattributionname' => 'Kur ri-shfrytëzoni këtë punë, ju lutem atribuoni',
+'exif-pngfilecomment' => 'Komenti i PGN dokumentit',
+'exif-disclaimer' => 'Shfajësimet',
+'exif-contentwarning' => 'Paralajmërim i përmbajtjes',
+'exif-giffilecomment' => 'Komenti i GIF dokumentit',
+'exif-intellectualgenre' => 'Lloji i artikullit',
+'exif-subjectnewscode' => 'Kodi i subjektit',
+'exif-scenecode' => 'Kodi i IPTC skenës',
+'exif-event' => 'Ngjarja e përshkruar',
+'exif-organisationinimage' => 'Organizata e përshkruar',
+'exif-personinimage' => 'Personi i përshkruar',
+'exif-originalimageheight' => 'Lartësia e fotografisë para se të shkurtohej',
+'exif-originalimagewidth' => 'Gjerësia e fotografisë para se të shkurtohej',
# EXIF attributes
'exif-compression-1' => 'E pangjeshur',
+'exif-compression-2' => 'CCITT Grupi 3 1-Dimensional Kodimi i Modifikuar Huffman i linjës së gjatësisë',
+'exif-compression-3' => 'CCITT Grupi 3 faks kodimi',
+'exif-compression-4' => 'CCITT Grupi 4 faks kodimi',
+
+'exif-copyrighted-true' => 'E drejtë e autorit',
+'exif-copyrighted-false' => 'Sferë publike',
'exif-unknowndate' => 'E dhënë e pa njohur',
@@ -2959,6 +3107,8 @@ Të tjerat do të fshihen.
'exif-planarconfiguration-1' => 'formati copë',
'exif-planarconfiguration-2' => 'formati planar',
+'exif-colorspace-65535' => 'e pa kalibruar',
+
'exif-componentsconfiguration-0' => 'nuk ekziston',
'exif-exposureprogram-0' => 'e padefinuar',
@@ -3072,6 +3222,10 @@ Të tjerat do të fshihen.
'exif-gpslongitude-e' => 'Gjatësi lindore',
'exif-gpslongitude-w' => 'Gjatësi perëndimore',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metër|metra}} mbi nivelin detar',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metër|metra}} nën nivelin detar',
+
'exif-gpsstatus-a' => 'Duke bërë matje',
'exif-gpsstatus-v' => 'Matja e nderveprimit',
@@ -3083,21 +3237,73 @@ Të tjerat do të fshihen.
'exif-gpsspeed-m' => 'Milje në orë',
'exif-gpsspeed-n' => 'Nyje',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometra',
+'exif-gpsdestdistance-m' => 'Milje',
+'exif-gpsdestdistance-n' => 'Milje detare',
+
+'exif-gpsdop-excellent' => 'Shkëlqyeshëm ($1)',
+'exif-gpsdop-good' => 'Mirë ( $1 )',
+'exif-gpsdop-moderate' => 'Mesatar ( $1 )',
+'exif-gpsdop-fair' => 'Mjaftueshëm ( $1 )',
+'exif-gpsdop-poor' => 'Dobët ( $1 )',
+
+'exif-objectcycle-a' => 'Vetëm në Mëngjes',
+'exif-objectcycle-p' => 'Vetëm në Mbrëmje',
+'exif-objectcycle-b' => 'Të dy në mëngjes dhe në mbrëmje',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Drejtimi i vërtetë',
'exif-gpsdirection-m' => 'Drejtimi magnetik',
+'exif-ycbcrpositioning-1' => 'Qendër',
+'exif-ycbcrpositioning-2' => 'Bashkë-Faqet',
+
+'exif-dc-contributor' => 'Kontribuesit',
+'exif-dc-coverage' => 'Shtrirje hapsinore apo e përkohshme e mediave',
+'exif-dc-date' => 'Datë (at)',
+'exif-dc-publisher' => 'Botuesi',
+'exif-dc-relation' => 'Mediat e lidhura',
+'exif-dc-rights' => 'Privilegjet',
+'exif-dc-source' => 'Burimi i medias',
+'exif-dc-type' => 'Lloji i mediave',
+
+'exif-rating-rejected' => 'Refuzuar',
+
+'exif-isospeedratings-overflow' => 'Më e madhe se 65.535',
+
+'exif-iimcategory-ace' => 'Art, kulturë dhe argëtim',
+'exif-iimcategory-clj' => 'Krimi dhe Ligji',
+'exif-iimcategory-dis' => 'Fatkeqësit dhe aksidentet',
+'exif-iimcategory-fin' => 'Ekonomi dhe biznes',
+'exif-iimcategory-edu' => 'Arsim',
+'exif-iimcategory-evn' => 'Mjedis',
+'exif-iimcategory-hth' => 'Shëndetësi',
+'exif-iimcategory-hum' => 'Interes njerëzor',
+'exif-iimcategory-lab' => 'Punë',
+'exif-iimcategory-lif' => 'Stil-Jete dhe kohë e lirë',
+'exif-iimcategory-pol' => 'Politikë',
+'exif-iimcategory-rel' => 'Religjioni dhe besimi',
+'exif-iimcategory-sci' => 'Shkencë dhe teknologji',
+'exif-iimcategory-soi' => 'Çështje sociale',
+'exif-iimcategory-spo' => 'Sporti',
+'exif-iimcategory-war' => 'Lufta, konflikte dhe trazira',
+'exif-iimcategory-wea' => 'Moti',
+
+'exif-urgency-normal' => 'Normale ( $1 )',
+'exif-urgency-low' => 'Ulët ( $1 )',
+'exif-urgency-high' => 'E Lartë ( $1 )',
+'exif-urgency-other' => 'Prioritet i përcaktuar nga përdoruesi ( $1 )',
+
# External editor support
'edit-externally' => 'Ndryshoni këtë skedë me një mjet të jashtëm',
-'edit-externally-help' => '(Shikoni [http://www.mediawiki.org/wiki/Manual:External_editors udhëzimet e instalimit] për më shumë informacion)',
+'edit-externally-help' => '(Shikoni [//www.mediawiki.org/wiki/Manual:External_editors udhëzimet e instalimit] për më shumë informacion)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'të gjitha',
-'imagelistall' => 'të gjitha',
-'watchlistall2' => 'të gjitha',
-'namespacesall' => 'të gjitha',
-'monthsall' => 'të gjitha',
-'limitall' => 'Të gjitha',
+'watchlistall2' => 'të gjitha',
+'namespacesall' => 'të gjitha',
+'monthsall' => 'të gjitha',
+'limitall' => 'Të gjitha',
# E-mail address confirmation
'confirmemail' => 'Vërtetoni adresën tuaj',
@@ -3176,17 +3382,24 @@ $1',
'trackbackdeleteok' => 'Lidhja ndjekëse u hoq.',
# Delete conflict
-'deletedwhileediting' => 'Kujdes! Kjo faqe është grisur pasi keni filluar redaktimin!',
-'confirmrecreate' => "Përdoruesi [[User:$1|$1]] ([[User talk:$1|diskutime]]) grisi këtë artikull mbasi ju filluat ta redaktoni për arsyen:
+'deletedwhileediting' => 'Kujdes! Kjo faqe është grisur pasi keni filluar redaktimin!',
+'confirmrecreate' => "Përdoruesi [[User:$1|$1]] ([[User talk:$1|diskutime]]) grisi këtë artikull mbasi ju filluat ta redaktoni për arsyen:
: ''$2''
Ju lutem konfirmoni nëse dëshironi me të vertetë ta rikrijoni këtë artikull.",
-'recreate' => 'Rikrijo',
+'confirmrecreate-noreason' => 'Përdoruesi [[User:$1|$1]] ([[User talk:$1|talk]]) ka fshirë këtë faqe pasi ju filluat ta redaktoni. Ju lutem konfirmoni që ju vërtet doni të ri-krijoni këtë faqe.',
+'recreate' => 'Rikrijo',
# action=purge
'confirm_purge_button' => 'Shko',
'confirm-purge-top' => "Pastro ''cache''-in për këtë faqe?",
'confirm-purge-bottom' => "Spastrimi i një faqeje pastron ''cache''-in dhe detyron shfaqjen e verzionit më të fundit të faqes.",
+# action=watch/unwatch
+'confirm-watch-button' => 'Në rregull',
+'confirm-watch-top' => 'Shto këtë faqe në listën mbikqyrëse tuajen?',
+'confirm-unwatch-button' => 'Në rregull',
+'confirm-unwatch-top' => 'Largo këtë faqe nga lista juaj mbikqyrëse ?',
+
# Multipage image navigation
'imgmultipageprev' => '↠faqja e kaluar',
'imgmultipagenext' => 'faqja tjetër →',
@@ -3228,14 +3441,14 @@ Ju lutem konfirmoni nëse dëshironi me të vertetë ta rikrijoni këtë artikul
'watchlistedit-normal-legend' => 'Largo titujt nga lista mbikqyrëse',
'watchlistedit-normal-explain' => 'Titujt në listën mbikëqyrëse janë treguar poshtë.
Largo titullin duke shënuar kutizën dhe pastaj shtype butonin Largoj titujt.
-Ju gjithashtu mundeni ta redaktoni listën [[Special:Watchlist/raw|këtu]].',
+Ju gjithashtu mundeni ta redaktoni listën [[Special:EditWatchlist/raw|këtu]].',
'watchlistedit-normal-submit' => 'Largo Titujt',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 titull u larguan|$1 tituj u larguan}} u larguan nga lista mbikëqyrëse e juaj:',
'watchlistedit-raw-title' => 'Redakto listën mbikëqyrëse të papërpunuar',
'watchlistedit-raw-legend' => 'Redakto listën mbikëqyrëse të papërpunuar',
'watchlistedit-raw-explain' => 'Titujt në listën tuaj mbikqyrëse janë të treguar poshtë dhe mund të redaktohen duke i shtuar ose duke i hequr nga lista; një titull pë rresht.
Kur të mbaroni, klikoni "{{int:Watchlistedit-raw-submit}}".
-Ju gjithashtu mund [[Special:Watchlist/edit|të përdorni redaktuesin standart]].',
+Ju gjithashtu mund [[Special:EditWatchlist|të përdorni redaktuesin standart]].',
'watchlistedit-raw-titles' => 'Titujt:',
'watchlistedit-raw-submit' => 'Aktualizoje listën',
'watchlistedit-raw-done' => 'Lista mbikëqyrëse u aktualizua.',
@@ -3252,33 +3465,33 @@ Ju gjithashtu mund [[Special:Watchlist/edit|të përdorni redaktuesin standart]]
'duplicate-defaultsort' => '\'\'\'Kujdes:\'\'\' Renditja kryesore e çelësit "$2" refuzon renditjen e mëparshme kryesore të çelësit "$1".',
# Special:Version
-'version' => 'Versioni',
-'version-extensions' => 'Zgjerime të instaluara',
-'version-specialpages' => 'Faqe speciale',
-'version-parserhooks' => 'Parser goditje',
-'version-variables' => 'Variabël',
-'version-skins' => 'Pamjet',
-'version-other' => 'Të tjera',
-'version-mediahandlers' => 'Mbajtesit e Media-s',
-'version-hooks' => 'Goditjet',
-'version-extension-functions' => 'Funksionet shtese',
-'version-parser-extensiontags' => 'Parser etiketat shtese',
-'version-parser-function-hooks' => 'Parser goditjet e funksionit',
-'version-skin-extension-functions' => 'Funksionet shtese te pamjes',
-'version-hook-name' => 'Emri i goditjes',
-'version-hook-subscribedby' => 'Abonuar nga',
-'version-version' => '(Versioni $1)',
-'version-license' => 'Licensa',
-'version-poweredby-credits' => "Ky wiki është mundësuar nga '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'të tjerë',
-'version-license-info' => 'MediaWiki është një softuer i lirë; ju mund ta shpërndani dhe redakatoni atë nën kushtet GNU General Public License si e publikuar nga fondacioni Free Software; ose versioni 2 i licensës, ose çdo version më i vonshëm.
+'version' => 'Versioni',
+'version-extensions' => 'Zgjerime të instaluara',
+'version-specialpages' => 'Faqe speciale',
+'version-parserhooks' => 'Parser goditje',
+'version-variables' => 'Variabël',
+'version-antispam' => 'Spam',
+'version-skins' => 'Pamjet',
+'version-other' => 'Të tjera',
+'version-mediahandlers' => 'Mbajtesit e Media-s',
+'version-hooks' => 'Goditjet',
+'version-extension-functions' => 'Funksionet shtese',
+'version-parser-extensiontags' => 'Parser etiketat shtese',
+'version-parser-function-hooks' => 'Parser goditjet e funksionit',
+'version-hook-name' => 'Emri i goditjes',
+'version-hook-subscribedby' => 'Abonuar nga',
+'version-version' => '(Versioni $1)',
+'version-license' => 'Licensa',
+'version-poweredby-credits' => "Ky wiki është mundësuar nga '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'të tjerë',
+'version-license-info' => 'MediaWiki është një softuer i lirë; ju mund ta shpërndani dhe redakatoni atë nën kushtet GNU General Public License si e publikuar nga fondacioni Free Software; ose versioni 2 i licensës, ose çdo version më i vonshëm.
MediaWiki është shpërndarë me shpresën se do të jetë i dobishëm, por PA ASNJË GARANCI; as garancinë e shprehur të SHITJES apo PËRDORIMIT PËR NJË QËLLIM TË CAKTUAR. Shikoni GNU General Public License për më shumë detaje.
-Ju duhet të keni marrë [{{SERVER}}{{SCRIPTPATH}}/COPYING një kopje të GNU General Public License] së bashku me këtë program; nëse jo, shkruani tek Free Software Foundation, Inc., 51 Rruga Franklin, Kati i pestë, Boston, MA 02110-1301, ShBA ose [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html lexojeni atë online].',
-'version-software' => 'Softuerët e instaluar',
-'version-software-product' => 'Produkti',
-'version-software-version' => 'Versioni',
+Ju duhet të keni marrë [{{SERVER}}{{SCRIPTPATH}}/COPYING një kopje të GNU General Public License] së bashku me këtë program; nëse jo, shkruani tek Free Software Foundation, Inc., 51 Rruga Franklin, Kati i pestë, Boston, MA 02110-1301, ShBA ose [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lexojeni atë online].',
+'version-software' => 'Softuerët e instaluar',
+'version-software-product' => 'Produkti',
+'version-software-version' => 'Versioni',
# Special:FilePath
'filepath' => 'Vendndodhja e skedave',
@@ -3289,22 +3502,21 @@ Ju duhet të keni marrë [{{SERVER}}{{SCRIPTPATH}}/COPYING një kopje të GNU Ge
Shtypni emrin e skedës pa parashtesën "Figura:".',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Kërkoni për skeda të dyfishta',
-'fileduplicatesearch-summary' => 'Kërkoni për dyfishime të skedave në bazë të vlerës përmbledhëse («hash»).
-
-Vendosni emrin e skedës pa parashtesën "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Kërko për dyfishime',
-'fileduplicatesearch-filename' => 'Emri i skedës:',
-'fileduplicatesearch-submit' => 'Kërko',
-'fileduplicatesearch-info' => '$1 × $2 pixel<br />Madhësia e skedës: $3<br />Lloji MIME: $4',
-'fileduplicatesearch-result-1' => 'Skeda "$1" nuk ka kopje të njëjta',
-'fileduplicatesearch-result-n' => 'Skeda "$1" ka {{PLURAL:$2|1 dyfishim|$2 dyfishime}}.',
+'fileduplicatesearch' => 'Kërkoni për skeda të dyfishta',
+'fileduplicatesearch-summary' => 'Kërkoni për dyfishime të skedave në bazë të vlerës përmbledhëse («hash»).',
+'fileduplicatesearch-legend' => 'Kërko për dyfishime',
+'fileduplicatesearch-filename' => 'Emri i skedës:',
+'fileduplicatesearch-submit' => 'Kërko',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />Madhësia e skedës: $3<br />Lloji MIME: $4',
+'fileduplicatesearch-result-1' => 'Skeda "$1" nuk ka kopje të njëjta',
+'fileduplicatesearch-result-n' => 'Skeda "$1" ka {{PLURAL:$2|1 dyfishim|$2 dyfishime}}.',
+'fileduplicatesearch-noresults' => 'Nuk u gjet asnjë skedë me emrin "$1".',
# Special:SpecialPages
'specialpages' => 'Faqet speciale',
-'specialpages-note' => '---
-Faqet speciale normale.
-<strong class="mw-specialpagerestricted">Faqet speciale të kufizuara.</strong>',
+'specialpages-note' => '* Faqet speciale normale.
+* <strong class="mw-specialpagerestricted">Faqet speciale të kufizuara.</strong>
+* <span class="mw-specialpagecached">Faqet speciale të fshehtat (mund të jenë vjetëruar).</span>',
'specialpages-group-maintenance' => 'Përmbledhje mirëmbajtjeje',
'specialpages-group-other' => 'Faqe speciale të tjera',
'specialpages-group-login' => 'Hyrje dhe hapje llogarie',
diff --git a/languages/messages/MessagesSr.php b/languages/messages/MessagesSr.php
index 406c6f89..4fd8913b 100644
--- a/languages/messages/MessagesSr.php
+++ b/languages/messages/MessagesSr.php
@@ -18,7 +18,7 @@ $linkTrail = '/^([abvgdÄ‘ežzijklljmnnjoprstćufhcÄdžšабвгдђежзијÐ
$messages = array(
# Vector skin
-'vector-view-viewsource' => 'Изворник',
+'vector-view-viewsource' => 'Погледај код',
# Special:LinkSearch
'linksearch' => 'Претрага интернет веза',
diff --git a/languages/messages/MessagesSr_ec.php b/languages/messages/MessagesSr_ec.php
index 86f49a33..3e98245e 100644
--- a/languages/messages/MessagesSr_ec.php
+++ b/languages/messages/MessagesSr_ec.php
@@ -34,10 +34,10 @@ $namespaceNames = array(
NS_USER => 'КориÑник',
NS_USER_TALK => 'Разговор_Ñа_кориÑником',
NS_PROJECT_TALK => 'Разговор_о_$1',
- NS_FILE => 'Слика',
- NS_FILE_TALK => 'Разговор_о_Ñлици',
- NS_MEDIAWIKI => 'МедијаВики',
- NS_MEDIAWIKI_TALK => 'Разговор_о_МедијаВикију',
+ NS_FILE => 'Датотека',
+ NS_FILE_TALK => 'Разговор_о_датотеци',
+ NS_MEDIAWIKI => 'Медијавики',
+ NS_MEDIAWIKI_TALK => 'Разговор_о_Медијавикију',
NS_TEMPLATE => 'Шаблон',
NS_TEMPLATE_TALK => 'Разговор_о_шаблону',
NS_HELP => 'Помоћ',
@@ -46,8 +46,8 @@ $namespaceNames = array(
NS_CATEGORY_TALK => 'Разговор_о_категорији',
);
-# Aliases to latin namespaces
$namespaceAliases = array(
+ # Aliases for Latin script namespaces
"Medija" => NS_MEDIA,
"Posebno" => NS_SPECIAL,
"Razgovor" => NS_TALK,
@@ -61,9 +61,14 @@ $namespaceAliases = array(
'Å ablon' => NS_TEMPLATE,
'Razgovor_o_Å¡ablonu' => NS_TEMPLATE_TALK,
'Pomoć' => NS_HELP,
- 'Razgovor_o_pomoći' => NS_HELP_TALK,
+ 'Razgovor_o_pomoći' => NS_HELP_TALK,
'Kategorija' => NS_CATEGORY,
'Razgovor_o_kategoriji' => NS_CATEGORY_TALK,
+
+ 'Слика' => NS_FILE,
+ 'Разговор_о_Ñлици' => NS_FILE_TALK,
+ 'МедијаВики' => NS_MEDIAWIKI,
+ 'Разговор_о_МедијаВикију' => NS_MEDIAWIKI_TALK,
);
@@ -88,64 +93,82 @@ $datePreferenceMigrationMap = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ДвоÑтрука_преуÑмерења' ),
- 'BrokenRedirects' => array( 'Покварена_преуÑмерења' ),
+ 'Activeusers' => array( 'ÐктивниКориÑници', 'Ðктивни_кориÑници' ),
+ 'Allmessages' => array( 'СвеПоруке', 'Све_поруке' ),
+ 'Allpages' => array( 'Све_Ñтранице' ),
+ 'Ancientpages' => array( 'ÐајÑтаријиЧланци' ),
+ 'Block' => array( 'Блокирај', 'БлокирајИП', 'БлокирајКориÑника' ),
+ 'Blockme' => array( 'БлокирајМе', 'Блокирај_ме' ),
+ 'BrokenRedirects' => array( 'Покварена_преуÑмерења', 'ÐеиÑправна_преуÑмерења' ),
+ 'Categories' => array( 'Категорије' ),
+ 'ComparePages' => array( 'Упореди_Ñтранице' ),
+ 'Confirmemail' => array( 'ПотврдиЕ-пошту', 'Потврда_е-поште' ),
+ 'Contributions' => array( 'ДоприноÑи', 'Прилози' ),
+ 'CreateAccount' => array( 'ОтвориÐалог', 'Отвори_налог' ),
'Disambiguations' => array( 'Вишезначне_одреднице' ),
- 'CreateAccount' => array( 'ОтвориÐалог' ),
- 'Preferences' => array( 'Подешавања' ),
- 'Watchlist' => array( 'СпиÑакÐадгледања' ),
- 'Recentchanges' => array( 'СкорашњеИзмене' ),
- 'Upload' => array( 'Пошаљи' ),
- 'Listfiles' => array( 'СпиÑакСлика' ),
- 'Newimages' => array( 'ÐовиФајлови', 'ÐовеСлике' ),
- 'Listusers' => array( 'СпиÑакКориÑника', 'КориÑничкиСпиÑак' ),
- 'Listgrouprights' => array( 'СпиÑакКориÑничкихПрава' ),
- 'Statistics' => array( 'СтатиÑтике' ),
- 'Randompage' => array( 'СлучајнаСтрана' ),
+ 'DoubleRedirects' => array( 'ДвоÑтрука_преуÑмерења' ),
+ 'Export' => array( 'Извези' ),
+ 'Fewestrevisions' => array( 'ЧланциСаÐајмањеРевизија' ),
+ 'Filepath' => array( 'Путања_датотеке' ),
+ 'Import' => array( 'Увези' ),
+ 'Listadmins' => array( 'ПопиÑÐдминиÑтратора', 'СпиÑак_админиÑтратора' ),
+ 'Listbots' => array( 'ПопиÑБотова', 'СпиÑак_ботова' ),
+ 'Listfiles' => array( 'СпиÑакСлика', 'СпиÑак_датотека' ),
+ 'Listgrouprights' => array( 'СпиÑакКориÑничкихПрава', 'СпиÑак_кориÑничких_права' ),
+ 'Listredirects' => array( 'СпиÑакПреуÑмерења', 'СпиÑак_преуÑмерења' ),
+ 'Listusers' => array( 'СпиÑакКориÑника', 'КориÑничкиСпиÑак', 'СпиÑак_кориÑника', 'КориÑнички_ÑпиÑак' ),
+ 'Lockdb' => array( 'ЗакључајБазу', 'Закључај_базу' ),
+ 'Log' => array( 'Извештај', 'Извештаји' ),
'Lonelypages' => array( 'Сирочићи' ),
- 'Uncategorizedpages' => array( 'ЧланциБезКатегорија' ),
- 'Uncategorizedcategories' => array( 'КатегоријеБезКатегорија' ),
+ 'Longpages' => array( 'ДугачкеСтране' ),
+ 'MergeHistory' => array( 'Споји_иÑторију' ),
+ 'MIMEsearch' => array( 'MIME_претрага' ),
+ 'Mostcategories' => array( 'ЧланциСаÐајвишеКатегорија' ),
+ 'Mostimages' => array( 'ÐајповезанијеСлике' ),
+ 'Mostlinked' => array( 'ÐајповезанијеСтране' ),
+ 'Mostlinkedcategories' => array( 'ÐајповезанијеКатегорије' ),
+ 'Mostlinkedtemplates' => array( 'ÐајповезанијиШаблони' ),
+ 'Mostrevisions' => array( 'ЧланциСаÐајвишеРевизија' ),
+ 'Movepage' => array( 'ПреуÑмери', 'ПремеÑти_Ñтраницу' ),
+ 'Mycontributions' => array( 'МојиДоприноÑи', 'Моји_доприноÑи', 'Моји_прилози' ),
+ 'Mypage' => array( 'МојаСтраница', 'Моја_Ñтраница' ),
+ 'Mytalk' => array( 'МојРазговор', 'Мој_разговор' ),
+ 'Myuploads' => array( 'Моја_Ñлања' ),
+ 'Newimages' => array( 'ÐовиФајлови', 'Ðове_датотеке', 'ÐовеСлике' ),
+ 'Newpages' => array( 'ÐовеСтране' ),
+ 'PermanentLink' => array( 'Привремена_веза' ),
+ 'Popularpages' => array( 'Популарне_Ñтранице' ),
+ 'Preferences' => array( 'Подешавања', 'ПоÑтавке' ),
+ 'Protectedpages' => array( 'ЗаштићенеСтранице', 'Заштићене_Ñтранице' ),
+ 'Protectedtitles' => array( 'Заштићени_наÑлови' ),
+ 'Randompage' => array( 'СлучајнаСтрана', 'ÐаÑумична_Ñтраница' ),
+ 'Recentchanges' => array( 'СкорашњеИзмене', 'Скорашње_измене' ),
+ 'RevisionMove' => array( 'ПремеÑти_измену' ),
+ 'Search' => array( 'Претражи' ),
+ 'Shortpages' => array( 'КраткиЧланци' ),
+ 'Specialpages' => array( 'СпецијалнеСтране', 'ПоÑебне_Ñтранице' ),
+ 'Statistics' => array( 'СтатиÑтике' ),
+ 'Tags' => array( 'Ознаке' ),
+ 'Uncategorizedcategories' => array( 'КатегоријеБезКатегорија', 'ÐеÑврÑтане_категорије' ),
'Uncategorizedimages' => array( 'СликеБезКатегорија', 'ФајловиБезКатегорија' ),
+ 'Uncategorizedpages' => array( 'ЧланциБезКатегорија', 'Чланци_без_категорија' ),
'Uncategorizedtemplates' => array( 'ШаблониБезКатегорија' ),
+ 'Undelete' => array( 'Врати' ),
+ 'Unlockdb' => array( 'ОткључајБазу', 'Откључај_базу' ),
'Unusedcategories' => array( 'ÐеиÑкоришћенеКатегорије' ),
'Unusedimages' => array( 'ÐеиÑкоришћенеСлике', 'ÐеиÑкоришћениФајлови' ),
- 'Wantedpages' => array( 'ТраженеСтране' ),
+ 'Upload' => array( 'Пошаљи' ),
+ 'UploadStash' => array( 'Складиште' ),
+ 'Userlogin' => array( 'КориÑничка_пријава' ),
+ 'Userlogout' => array( 'КориÑничка_одјава' ),
+ 'Version' => array( 'Верзија', 'Издање' ),
'Wantedcategories' => array( 'ТраженеКатегорије' ),
'Wantedfiles' => array( 'ТраженеСлике' ),
+ 'Wantedpages' => array( 'ТраженеСтране' ),
'Wantedtemplates' => array( 'ТражениШаблони' ),
- 'Mostlinked' => array( 'ÐајповезанијеСтране' ),
- 'Mostlinkedcategories' => array( 'ÐајповезанијеКатегорије' ),
- 'Mostlinkedtemplates' => array( 'ÐајповезанијиШаблони' ),
- 'Mostimages' => array( 'ÐајповезанијеСлике' ),
- 'Mostcategories' => array( 'ЧланциСаÐајвишеКатегорија' ),
- 'Mostrevisions' => array( 'ЧланциСаÐајвишеРевизија' ),
- 'Fewestrevisions' => array( 'ЧланциСаÐајмањеРевизија' ),
- 'Shortpages' => array( 'КраткиЧланци' ),
- 'Longpages' => array( 'ДугачкеСтране' ),
- 'Newpages' => array( 'ÐовеСтране' ),
- 'Ancientpages' => array( 'ÐајÑтаријиЧланци' ),
- 'Protectedpages' => array( 'ЗаштићенеСтранице' ),
- 'Specialpages' => array( 'СпецијалнеСтране' ),
- 'Contributions' => array( 'ДоприноÑи' ),
- 'Confirmemail' => array( 'ПотврдиЕ-пошту' ),
- 'Movepage' => array( 'ПреуÑмери' ),
- 'Blockme' => array( 'БлокирајМе' ),
- 'Categories' => array( 'Категорије' ),
- 'Export' => array( 'Извези' ),
- 'Version' => array( 'Верзија' ),
- 'Allmessages' => array( 'СвеПоруке' ),
- 'Blockip' => array( 'Блокирај', 'БлокирајИП', 'БлокирајКориÑника' ),
- 'Import' => array( 'Увези' ),
- 'Lockdb' => array( 'ЗакључајБазу' ),
- 'Unlockdb' => array( 'ОткључајБазу' ),
- 'Listredirects' => array( 'СпиÑакПреуÑмерења' ),
- 'Mypage' => array( 'МојаСтраница' ),
- 'Mytalk' => array( 'МојРазговор' ),
- 'Mycontributions' => array( 'МојиДоприноÑи' ),
- 'Listadmins' => array( 'ПопиÑÐдминиÑтратора' ),
- 'Listbots' => array( 'ПопиÑБотова' ),
- 'Search' => array( 'Претражи' ),
- 'Activeusers' => array( 'ÐктивниКориÑници' ),
+ 'Watchlist' => array( 'СпиÑакÐадгледања', 'СпиÑак_надгледања' ),
+ 'Whatlinkshere' => array( 'Шта_је_повезано_овде' ),
+ 'Withoutinterwiki' => array( 'Без_међувикије' ),
);
$datePreferences = array(
@@ -225,59 +248,150 @@ $dateFormats = array(
/* NOT USED IN STABLE VERSION */
$magicWords = array(
- 'redirect' => array( '0', '#ПреуÑмери', '#redirect', '#преуÑмери', '#ПРЕУСМЕРИ', '#REDIRECT' ),
- 'notoc' => array( '0', '__БЕЗСÐДРЖÐЈÐ__', '__NOTOC__' ),
- 'forcetoc' => array( '0', '__ФОРСИРÐÐИСÐДРЖÐЈ__', '__FORCETOC__' ),
+ 'redirect' => array( '0', '#ПреуÑмери', '#преуÑмери', '#ПРЕУСМЕРИ', '#ПреуÑмјери', '#преуÑмјери', '#ПРЕУСМЈЕРИ', '#redirect', '#REDIRECT' ),
+ 'notoc' => array( '0', '__БЕЗСÐДРЖÐЈÐ__', '__БЕЗ_СÐДРЖÐЈÐ__', '__NOTOC__' ),
+ 'nogallery' => array( '0', '__БЕЗГÐЛЕРИЈЕ__', '__БЕЗ_ГÐЛЕРИЈЕ__', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '__ФОРСИРÐÐИСÐДРЖÐЈ__', '__ФОРСИРÐÐИ_СÐДРЖÐЈ__', '__ПРИМОРÐÐИСÐДРЖÐЈ__', '__ПРИМОРÐÐИ_СÐДРЖÐЈ__', '__FORCETOC__' ),
'toc' => array( '0', '__СÐДРЖÐЈ__', '__TOC__' ),
- 'noeditsection' => array( '0', '__БЕЗ_ИЗМЕÐÐ__', '__БЕЗИЗМЕÐÐ__', '__NOEDITSECTION__' ),
- 'currentmonth' => array( '1', 'ТРЕÐУТÐИМЕСЕЦ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
- 'currentmonthname' => array( '1', 'ТРЕÐУТÐИМЕСЕЦИМЕ', 'CURRENTMONTHNAME' ),
- 'currentmonthnamegen' => array( '1', 'ТРЕÐУТÐИМЕСЕЦГЕÐ', 'CURRENTMONTHNAMEGEN' ),
- 'currentmonthabbrev' => array( '1', 'ТРЕÐУТÐИМЕСЕЦСКР', 'CURRENTMONTHABBREV' ),
- 'currentday' => array( '1', 'ТРЕÐУТÐИДÐÐ', 'CURRENTDAY' ),
- 'currentdayname' => array( '1', 'ТРЕÐУТÐИДÐÐИМЕ', 'CURRENTDAYNAME' ),
- 'currentyear' => array( '1', 'ТРЕÐУТÐÐГОДИÐÐ', 'CURRENTYEAR' ),
- 'currenttime' => array( '1', 'ТРЕÐУТÐОВРЕМЕ', 'CURRENTTIME' ),
- 'numberofarticles' => array( '1', 'БРОЈЧЛÐÐÐКÐ', 'NUMBEROFARTICLES' ),
- 'numberoffiles' => array( '1', 'БРОЈДÐТОТЕКÐ', 'БРОЈФÐЈЛОВÐ', 'NUMBEROFFILES' ),
- 'pagename' => array( '1', 'СТРÐÐИЦÐ', 'PAGENAME' ),
- 'pagenamee' => array( '1', 'СТРÐÐИЦЕ', 'PAGENAMEE' ),
- 'namespace' => array( '1', 'ИМЕÐСКИПРОСТОР', 'NAMESPACE' ),
- 'namespacee' => array( '1', 'ИМЕÐСКИПРОСТОРИ', 'NAMESPACEE' ),
- 'fullpagename' => array( '1', 'ПУÐОИМЕСТРÐÐЕ', 'FULLPAGENAME' ),
- 'fullpagenamee' => array( '1', 'ПУÐОИМЕСТРÐÐЕЕ', 'FULLPAGENAMEE' ),
+ 'noeditsection' => array( '0', '__БЕЗИЗМЕÐÐ__', '__БЕЗ_ИЗМЕÐÐ__', '__БЕЗИЗМЈЕÐÐ__', '__БЕЗ_ИЗМЈЕÐÐ__', '__NOEDITSECTION__' ),
+ 'noheader' => array( '0', '__БЕЗЗÐГЛÐВЉÐ__', '__БЕЗ_ЗÐГЛÐВЉÐ__', '__NOHEADER__' ),
+ 'currentmonth' => array( '1', 'ТРЕÐУТÐИМЕСЕЦ', 'ТРЕÐУТÐИ_МЕСЕЦ', 'ТЕКУЋИМЕСЕЦ', 'ТЕКУЋИ_МЕСЕЦ', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', 'ТРЕÐУТÐИМЕСЕЦ1', 'ТРЕÐУТÐИ_МЕСЕЦ1', 'ТЕКУЋИМЕСЕЦ1', 'ТЕКУЋИ_МЕСЕЦ1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', 'ТРЕÐУТÐИМЕСЕЦИМЕ', 'ИМЕТЕКУЋЕГМЕСЕЦÐ', 'ИМЕ_ТЕКУЋЕГ_МЕСЕЦÐ', 'CURRENTMONTHNAME' ),
+ 'currentmonthnamegen' => array( '1', 'ТРЕÐУТÐИМЕСЕЦГЕÐ', 'ТЕКУЋИМЕСЕЦГЕÐ', 'ТЕКУЋИ_МЕСЕЦ_ГЕÐ', 'CURRENTMONTHNAMEGEN' ),
+ 'currentmonthabbrev' => array( '1', 'ТРЕÐУТÐИМЕСЕЦСКР', 'ТЕКУЋИМЕСЕЦСКР', 'ТЕКУЋИ_МЕСЕЦ_СКР', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', 'ТРЕÐУТÐИДÐÐ', 'ТЕКУЋИДÐÐ', 'ТЕКУЋИ_ДÐÐ', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', 'ТЕКУЋИДÐÐ2', 'ТЕКУЋИ_ДÐÐ_2', 'CURRENTDAY2' ),
+ 'currentdayname' => array( '1', 'ТРЕÐУТÐИДÐÐИМЕ', 'ИМЕТЕКУЋЕГДÐÐÐ', 'ИМЕ_ТЕКУЋЕГ_ДÐÐÐ', 'CURRENTDAYNAME' ),
+ 'currentyear' => array( '1', 'ТРЕÐУТÐÐГОДИÐÐ', 'ТЕКУЋÐГОДИÐÐ', 'ТЕКУЋÐ_ГОДИÐÐ', 'CURRENTYEAR' ),
+ 'currenttime' => array( '1', 'ТРЕÐУТÐОВРЕМЕ', 'ТЕКУЋЕВРЕМЕ', 'ТЕКУЋЕ_ВРЕМЕ', 'CURRENTTIME' ),
+ 'currenthour' => array( '1', 'ТЕКУЋИСÐТ', 'ТЕКУЋИ_СÐТ', 'CURRENTHOUR' ),
+ 'localmonth' => array( '1', 'ЛОКÐЛÐИМЕСЕЦ', 'ЛОКÐЛÐИ_МЕСЕЦ', 'LOCALMONTH', 'LOCALMONTH2' ),
+ 'localmonth1' => array( '1', 'ЛОКÐЛÐИМЕСЕЦ2', 'ЛОКÐЛÐИ_МЕСЕЦ2', 'LOCALMONTH1' ),
+ 'localmonthname' => array( '1', 'ИМЕЛОКÐЛÐОГМЕСЕЦÐ', 'ИМЕ_ЛОКÐЛÐОГ_МЕСЕЦÐ', 'LOCALMONTHNAME' ),
+ 'localmonthnamegen' => array( '1', 'ЛОКÐЛÐИМЕСЕЦГЕÐ', 'ЛОКÐЛÐИ_МЕСЕЦ_ГЕÐ', 'LOCALMONTHNAMEGEN' ),
+ 'localmonthabbrev' => array( '1', 'ЛОКÐЛÐИМЕСЕЦСКР', 'ЛОКÐЛÐИ_МЕСЕЦ_СКР', 'LOCALMONTHABBREV' ),
+ 'localday' => array( '1', 'ЛОКÐЛÐИДÐÐ', 'ЛОКÐЛÐИ_ДÐÐ', 'LOCALDAY' ),
+ 'localday2' => array( '1', 'ЛОКÐЛÐИДÐÐ2', 'ЛОКÐЛÐИ_ДÐÐ2', 'LOCALDAY2' ),
+ 'localdayname' => array( '1', 'ИМЕЛОКÐЛÐОГДÐÐÐ', 'ИМЕ_ЛОКÐЛÐОГ_ДÐÐÐ', 'LOCALDAYNAME' ),
+ 'localyear' => array( '1', 'ЛОКÐЛÐÐГОДИÐÐ', 'ЛОКÐЛÐÐ_ГОДИÐÐ', 'LOCALYEAR' ),
+ 'localtime' => array( '1', 'ЛОКÐЛÐОВРЕМЕ', 'ЛОКÐЛÐО_ВРЕМЕ', 'LOCALTIME' ),
+ 'localhour' => array( '1', 'ЛОКÐЛÐИСÐТ', 'ЛОКÐЛÐИ_СÐТ', 'LOCALHOUR' ),
+ 'numberofpages' => array( '1', 'БРОЈСТРÐÐИЦÐ', 'БРОЈ_СТРÐÐИЦÐ', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'БРОЈЧЛÐÐÐКÐ', 'БРОЈ_ЧЛÐÐÐКÐ', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', 'БРОЈДÐТОТЕКÐ', 'БРОЈ_ДÐТОТЕКÐ', 'БРОЈФÐЈЛОВÐ', 'БРОЈ_ФÐЈЛОВÐ', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', 'БРОЈКОРИСÐИКÐ', 'БРОЈ_КОРИСÐИКÐ', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', 'БРОЈÐКТИВÐИХКОРИСÐИКÐ', 'БРОЈ_ÐКТИВÐИХ_КОРИСÐИКÐ', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', 'БРОЈИЗМЕÐÐ', 'БРОЈ_ИЗМЕÐÐ', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', 'БРОЈПРЕГЛЕДÐ', 'БРОЈ_ПРЕГЛЕДÐ', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', 'ИМЕСТРÐÐИЦЕ', 'ИМЕ_СТРÐÐИЦЕ', 'СТРÐÐИЦÐ', 'PAGENAME' ),
+ 'pagenamee' => array( '1', 'ИМЕÐÐСТРÐÐИЦÐ', 'ИМЕÐÐ_СТРÐÐИЦÐ', 'СТРÐÐИЦЕ', 'PAGENAMEE' ),
+ 'namespace' => array( '1', 'ИМЕÐСКИПРОСТОР', 'ИМЕÐСКИ_ПРОСТОР', 'NAMESPACE' ),
+ 'namespacee' => array( '1', 'ИМЕÐСКИПРОСТОРИ', 'ИМЕÐСКИ_ПРОСТОРИ', 'NAMESPACEE' ),
+ 'talkspace' => array( '1', 'РÐЗГОВОР', 'TALKSPACE' ),
+ 'talkspacee' => array( '1', 'РÐЗГОВОРИ', 'TALKSPACEE' ),
+ 'subjectspace' => array( '1', 'ИМЕÐСКИПРОСТОРЧЛÐÐКÐ', 'ИМЕÐСКИ_ПРОСТОР_ЧЛÐÐКÐ', 'SUBJECTSPACE', 'ARTICLESPACE' ),
+ 'subjectspacee' => array( '1', 'ИМЕÐСКИПРОСТОРЧЛÐÐÐКÐ', 'ИМЕÐСКИ_ПРОСТОР_ЧЛÐÐÐКÐ', 'SUBJECTSPACEE', 'ARTICLESPACEE' ),
+ 'fullpagename' => array( '1', 'ПУÐОИМЕСТРÐÐИЦЕ', 'ПУÐОИМЕСТРÐÐЕ', 'ПУÐО_ИМЕ_СТРÐÐИЦЕ', 'ПУÐО_ИМЕ_СТРÐÐЕ', 'FULLPAGENAME' ),
+ 'fullpagenamee' => array( '1', 'ПУÐÐИМЕÐÐСТРÐÐИЦÐ', 'ПУÐÐИМЕÐÐСТРÐÐÐ', 'ПУÐÐ_ИМЕÐÐ_СТРÐÐИЦÐ', 'ПУÐÐ_ИМЕÐÐ_СТРÐÐÐ', 'FULLPAGENAMEE' ),
+ 'subpagename' => array( '1', 'ИМЕПОДСТРÐÐИЦЕ', 'ИМЕПОДСТРÐÐЕ', 'ИМЕ_ПОДСТРÐÐИЦЕ', 'ИМЕ_ПОДСТРÐÐЕ', 'SUBPAGENAME' ),
+ 'subpagenamee' => array( '1', 'ИМЕÐÐПОДСТРÐÐИЦÐ', 'ИМЕÐÐПОДСТРÐÐÐ', 'ИМЕÐÐ_ПОДСТРÐÐИЦÐ', 'ИМЕÐÐ_ПОДСТРÐÐÐ', 'SUBPAGENAMEE' ),
+ 'basepagename' => array( '1', 'ИМЕОСÐОВЕ', 'ИМЕ_ОСÐОВЕ', 'BASEPAGENAME' ),
+ 'basepagenamee' => array( '1', 'ИМЕÐÐОСÐОВÐ', 'ИМЕÐÐ_ОСÐОВÐ', 'BASEPAGENAMEE' ),
+ 'talkpagename' => array( '1', 'ИМЕРÐЗГОВОРÐ', 'ИМЕ_РÐЗГОВОРÐ', 'TALKPAGENAME' ),
+ 'talkpagenamee' => array( '1', 'ИМЕÐÐРÐЗГОВОРÐ', 'ИМЕÐÐ_РÐЗГОВОРÐ', 'TALKPAGENAMEE' ),
+ 'subjectpagename' => array( '1', 'ИМЕЧЛÐÐКÐ', 'ИМЕ_ЧЛÐÐКÐ', 'SUBJECTPAGENAME', 'ARTICLEPAGENAME' ),
+ 'subjectpagenamee' => array( '1', 'ИМЕÐÐЧЛÐÐÐКÐ', 'ИМЕÐÐ_ЧЛÐÐÐКÐ', 'SUBJECTPAGENAMEE', 'ARTICLEPAGENAMEE' ),
'msg' => array( '0', 'ПОР:', 'MSG:' ),
- 'subst' => array( '0', 'ЗÐМЕÐИ:', 'SUBST:' ),
+ 'subst' => array( '0', 'ЗÐМЕÐИ:', 'ЗÐМЕÐÐ:', 'SUBST:' ),
+ 'safesubst' => array( '0', 'БЕЗБЕДÐÐЗÐМЕÐÐ', 'БЕЗБЕДÐÐ_ЗÐМЕÐÐ', 'SAFESUBST:' ),
'msgnw' => array( '0', 'ÐВПОР:', 'MSGNW:' ),
- 'img_thumbnail' => array( '1', 'мини', 'thumbnail', 'thumb' ),
- 'img_manualthumb' => array( '1', 'мини=$1', 'thumbnail=$1', 'thumb=$1' ),
+ 'img_thumbnail' => array( '1', 'мини', 'умањено', 'thumbnail', 'thumb' ),
+ 'img_manualthumb' => array( '1', 'мини=$1', 'умањено=$1', 'thumbnail=$1', 'thumb=$1' ),
'img_right' => array( '1', 'деÑно', 'д', 'right' ),
'img_left' => array( '1', 'лево', 'л', 'left' ),
- 'img_none' => array( '1', 'н', 'без', 'none' ),
+ 'img_none' => array( '1', 'без', 'н', 'none' ),
'img_width' => array( '1', '$1пиÑкел', '$1п', '$1px' ),
'img_center' => array( '1', 'центар', 'ц', 'center', 'centre' ),
'img_framed' => array( '1', 'оквир', 'рам', 'framed', 'enframed', 'frame' ),
+ 'img_frameless' => array( '1', 'безоквира', 'без_оквира', 'безрама', 'без_рама', 'frameless' ),
+ 'img_page' => array( '1', 'Ñтраница=$1', 'Ñтрана=$1', 'Ñтраница_$1', 'Ñтрана_$1', 'page=$1', 'page $1' ),
+ 'img_upright' => array( '1', 'уÑправно', 'уÑправно=$1', 'уÑправно_$1', 'upright', 'upright=$1', 'upright $1' ),
+ 'img_border' => array( '1', 'ивица', 'border' ),
+ 'img_baseline' => array( '1', 'оÑнова', 'baseline' ),
+ 'img_sub' => array( '1', 'под', 'sub' ),
+ 'img_super' => array( '1', 'Ñупер', 'super', 'sup' ),
+ 'img_top' => array( '1', 'врх', 'top' ),
+ 'img_text_top' => array( '1', 'врхтекÑта', 'врх_текÑта', 'text-top' ),
+ 'img_middle' => array( '1', 'Ñредина', 'middle' ),
+ 'img_bottom' => array( '1', 'дно', 'bottom' ),
+ 'img_text_bottom' => array( '1', 'ÑрединатекÑта', 'Ñредина_текÑта', 'text-bottom' ),
+ 'img_link' => array( '1', 'веза=$1', 'link=$1' ),
+ 'img_alt' => array( '1', 'алт=$1', 'alt=$1' ),
'int' => array( '0', 'ИÐТ:', 'INT:' ),
'sitename' => array( '1', 'ИМЕСÐЈТÐ', 'SITENAME' ),
'ns' => array( '0', 'ИП:', 'NS:' ),
- 'localurl' => array( '0', 'ЛОКÐЛÐÐÐДРЕСÐ:', 'LOCALURL:' ),
- 'localurle' => array( '0', 'ЛОКÐЛÐЕÐДРЕСЕ:', 'LOCALURLE:' ),
+ 'localurl' => array( '0', 'ЛОКÐЛÐÐÐДРЕСÐ:', 'ЛОКÐЛÐÐ_ÐДРЕСÐ:', 'LOCALURL:' ),
+ 'localurle' => array( '0', 'ЛОКÐЛÐЕÐДРЕСЕ:', 'ЛОКÐЛÐЕ_ÐДРЕСЕ:', 'LOCALURLE:' ),
+ 'articlepath' => array( '0', 'ПУТÐЊÐЧЛÐÐКÐ', 'ПУТÐЊÐ_ЧЛÐÐКÐ', 'ARTICLEPATH' ),
'server' => array( '0', 'СЕРВЕР', 'SERVER' ),
- 'servername' => array( '0', 'ИМЕСЕРВЕРÐ', 'SERVERNAME' ),
+ 'servername' => array( '0', 'ИМЕСЕРВЕРÐ', 'ИМЕ_СЕРВЕРÐ', 'SERVERNAME' ),
'scriptpath' => array( '0', 'СКРИПТÐ', 'SCRIPTPATH' ),
+ 'stylepath' => array( '0', 'ПУТÐЊÐСТИЛÐ', 'ПУТÐЊÐ_СТИЛÐ', 'STYLEPATH' ),
'grammar' => array( '0', 'ГРÐÐœÐТИКÐ:', 'GRAMMAR:' ),
+ 'gender' => array( '0', 'РОД:', 'ЛИЦЕ:', 'GENDER:' ),
'notitleconvert' => array( '0', '__БЕЗКÐ__', '__BEZKN__', '__NOTITLECONVERT__', '__NOTC__' ),
'nocontentconvert' => array( '0', '__БЕЗЦЦ__', '__NOCONTENTCONVERT__', '__NOCC__' ),
- 'currentweek' => array( '1', 'ТРЕÐУТÐÐÐЕДЕЉÐ', 'CURRENTWEEK' ),
- 'currentdow' => array( '1', 'ТРЕÐУТÐИДОВ', 'CURRENTDOW' ),
- 'revisionid' => array( '1', 'ИДРЕВИЗИЈЕ', 'REVISIONID' ),
+ 'currentweek' => array( '1', 'ТРЕÐУТÐÐÐЕДЕЉÐ', 'ТРЕÐУТÐÐ_ÐЕДЕЉÐ', 'ТЕКУЋÐÐЕДЕЉÐ', 'ТЕКУЋÐ_ÐЕДЕЉÐ', 'CURRENTWEEK' ),
+ 'currentdow' => array( '1', 'ТРЕÐУТÐИДОВ', 'ТЕКУЋИДУÐ', 'CURRENTDOW' ),
+ 'localweek' => array( '1', 'ЛОКÐЛÐÐÐЕДЕЉÐ', 'ЛОКÐЛÐÐ_ÐЕДЕЉÐ', 'LOCALWEEK' ),
+ 'localdow' => array( '1', 'ЛОКÐЛÐИДУÐ', 'LOCALDOW' ),
+ 'revisionid' => array( '1', 'ИДРЕВИЗИЈЕ', 'ИД_РЕВИЗИЈЕ', 'REVISIONID' ),
+ 'revisionday' => array( '1', 'ДÐÐИЗМЕÐЕ', 'ДÐÐ_ИЗМЕÐЕ', 'REVISIONDAY' ),
+ 'revisionday2' => array( '1', 'ДÐÐИЗМЕÐЕ2', 'ДÐÐ_ИЗМЕÐЕ2', 'REVISIONDAY2' ),
+ 'revisionmonth' => array( '1', 'МЕСЕЦИЗМЕÐЕ', 'МЕСЕЦ_ИЗМЕÐЕ', 'REVISIONMONTH' ),
+ 'revisionmonth1' => array( '1', 'МЕСЕЦИЗМЕÐЕ1', 'МЕСЕЦ_ИЗМЕÐЕ1', 'REVISIONMONTH1' ),
+ 'revisionyear' => array( '1', 'ГОДИÐÐИЗМЕÐЕ', 'ГОДИÐÐ_ИЗМЕÐЕ', 'REVISIONYEAR' ),
+ 'revisiontimestamp' => array( '1', 'ВРЕМЕИЗМЕÐЕ', 'ВРЕМЕ_ИЗМЕÐЕ', 'REVISIONTIMESTAMP' ),
+ 'revisionuser' => array( '1', 'КОРИСÐИКИЗМЕÐЕ', 'КОРИСÐИК_ИЗМЕÐЕ', 'REVISIONUSER' ),
'plural' => array( '0', 'ÐœÐОЖИÐÐ:', 'PLURAL:' ),
- 'fullurl' => array( '0', 'ПУÐУРЛ:', 'FULLURL:' ),
- 'fullurle' => array( '0', 'ПУÐУРЛЕ:', 'FULLURLE:' ),
+ 'fullurl' => array( '0', 'ПУÐУРЛ:', 'ЦЕЛÐÐДРЕСÐ', 'ЦЕЛÐ_ÐДРЕСÐ', 'FULLURL:' ),
+ 'fullurle' => array( '0', 'ПУÐУРЛЕ:', 'ЦЕЛЕÐДРЕСЕ', 'ЦЕЛЕ_ÐДРЕСЕ', 'FULLURLE:' ),
'lcfirst' => array( '0', 'ЛЦПРВИ:', 'LCFIRST:' ),
'ucfirst' => array( '0', 'УЦПРВИ:', 'UCFIRST:' ),
'lc' => array( '0', 'ЛЦ:', 'LC:' ),
'uc' => array( '0', 'УЦ:', 'UC:' ),
+ 'raw' => array( '0', 'ЧИСТ:', 'RAW:' ),
+ 'displaytitle' => array( '1', 'ÐÐЗИВПРИКÐЗÐ', 'ÐÐЗИВ_ПРИКÐЗÐ', 'DISPLAYTITLE' ),
+ 'rawsuffix' => array( '1', 'Р', 'R' ),
+ 'newsectionlink' => array( '1', '__ÐОВÐВЕЗÐОДЕЉКÐ__', '__ÐОВÐ_ВЕЗÐ_ОДЕЉКÐ__', '__NEWSECTIONLINK__' ),
+ 'nonewsectionlink' => array( '1', '__БЕЗÐОВЕВЕЗЕОДЕЉКÐ__', '__БЕЗ_ÐОВЕ_ВЕЗЕ_ОДЕЉКÐ__', '__NONEWSECTIONLINK__' ),
+ 'currentversion' => array( '1', 'ТЕКУЋЕИЗДÐЊЕ', 'ТЕКУЋЕ_ИЗДÐЊЕ', 'CURRENTVERSION' ),
+ 'urlencode' => array( '0', 'КОДИРÐЊЕÐДРЕСЕ', 'КОДИРÐЊЕ_ÐДРЕСЕ', 'URLENCODE:' ),
+ 'anchorencode' => array( '0', 'КОДИРÐЊЕВЕЗЕ', 'КОДИРÐЊЕ_ВЕЗЕ', 'ANCHORENCODE' ),
+ 'currenttimestamp' => array( '1', 'ТЕКУЋИОТИСÐКВРЕМЕÐÐ', 'ТЕКУЋИ_ОТИСÐК_ВРЕМЕÐÐ', 'CURRENTTIMESTAMP' ),
+ 'localtimestamp' => array( '1', 'ОТИСÐКВРЕМЕÐÐ', 'ОТИСÐК_ВРЕМЕÐÐ', 'LOCALTIMESTAMP' ),
+ 'directionmark' => array( '1', 'СМЕРОЗÐÐКЕ', 'СМЕР _ОЗÐÐКЕ', 'DIRECTIONMARK', 'DIRMARK' ),
+ 'contentlanguage' => array( '1', 'ЈЕЗИКСÐДРЖÐЈÐ', 'ЈЕЗИК_СÐДРЖÐЈÐ', 'CONTENTLANGUAGE', 'CONTENTLANG' ),
+ 'pagesinnamespace' => array( '1', 'СТРÐÐИЦÐУИМЕÐСКОМПРОСТОРУ', 'СТРÐÐÐУИМЕÐСКОМПРОСТОРУ', 'СТРÐÐИЦÐ_У_ИМЕÐСКОМ_ПРОСТОРУ', 'СТРÐÐÐ_У_ИМЕÐСКОМ_ПРОСТОРУ', 'PAGESINNAMESPACE:', 'PAGESINNS:' ),
+ 'numberofadmins' => array( '1', 'БРОЈÐДМИÐÐ', 'БРОЈ_ÐДМИÐÐ', 'NUMBEROFADMINS' ),
+ 'padleft' => array( '0', 'ПОРÐÐ’ÐÐЈЛЕВО', 'ПОРÐÐ’ÐÐЈ_ЛЕВО', 'PADLEFT' ),
+ 'padright' => array( '0', 'ПОРÐÐ’ÐÐЈДЕСÐО', 'ПОРÐÐ’ÐÐЈ_ДЕСÐО', 'PADRIGHT' ),
+ 'special' => array( '0', 'поÑебно', 'special' ),
+ 'filepath' => array( '0', 'ПУТÐЊÐДÐТОТЕКЕ', 'ПУТÐЊÐ_ДÐТОТЕКЕ', 'FILEPATH:' ),
+ 'tag' => array( '0', 'ознака', 'tag' ),
+ 'hiddencat' => array( '1', '__СÐКРИВЕÐÐКÐТ__', '__HIDDENCAT__' ),
+ 'pagesincategory' => array( '1', 'СТРÐÐИЦÐУКÐТЕГОРИЈИ', 'СТРÐÐÐУКÐТЕГОРИЈИ', 'СТРÐÐИЦÐ_У_КÐТЕГОРИЈИ', 'СТРÐÐÐ_У_КÐТЕГОРИЈИ', 'PAGESINCATEGORY', 'PAGESINCAT' ),
+ 'pagesize' => array( '1', 'ВЕЛИЧИÐÐСТРÐÐИЦЕ', 'ВЕЛИЧИÐÐСТРÐÐЕ', 'ВЕЛИЧИÐÐ_СТРÐÐИЦЕ', 'ВЕЛИЧИÐÐ_СТРÐÐЕ', 'PAGESIZE' ),
+ 'index' => array( '1', '__ИÐДЕКС__', '__INDEX__' ),
+ 'noindex' => array( '1', '__БЕЗИÐДЕКСÐ__', '__БЕЗ_ИÐДЕКСÐ__', '__NOINDEX__' ),
+ 'numberingroup' => array( '1', 'БРОЈУГРУПИ', 'БРОЈ_У_ГРУПИ', 'NUMBERINGROUP', 'NUMINGROUP' ),
+ 'staticredirect' => array( '1', '__СТÐТИЧКОПРЕУСМЕРЕЊЕ__', 'СТÐТИЧКО_ПРЕУСМЕРЕЊЕ', '__STATICREDIRECT__' ),
+ 'protectionlevel' => array( '1', 'ÐИВОЗÐШТИТЕ', 'ÐИВО_ЗÐШТИТЕ', 'PROTECTIONLEVEL' ),
+ 'formatdate' => array( '0', 'форматдатума', 'формат_датума', 'formatdate', 'dateformat' ),
+ 'url_path' => array( '0', 'ПУТÐЊÐ', 'PATH' ),
+ 'url_wiki' => array( '0', 'ВИКИ', 'WIKI' ),
+ 'url_query' => array( '0', 'РЕДОСЛЕД', 'QUERY' ),
);
$separatorTransformTable = array( ',' => '.', '.' => ',' );
@@ -411,15 +525,9 @@ $messages = array(
'listingcontinuesabbrev' => 'наÑÑ‚.',
'index-category' => 'ПопиÑане Ñтранице',
'noindex-category' => 'ÐепопиÑане Ñтранице',
+'broken-file-category' => 'Странице Ñ Ð½ÐµÐ¸Ñправним везама до датотека',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''Медијавики је уÑпешно инÑталиран.'''",
-'mainpagedocfooter' => 'Погледајте [http://meta.wikimedia.org/wiki/Help:Contents кориÑнички водич] за коришћење програма.
-
-== Увод ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Помоћ у вези Ñа подешавањима]
-* [http://www.mediawiki.org/wiki/Manual:FAQ ЧеÑто поÑтављена питања]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ДопиÑна лиÑта о издањима Медијавикија]',
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'О нама',
'article' => 'Страница Ñа Ñадржајем',
@@ -471,10 +579,10 @@ $messages = array(
'history' => 'ИÑторија Ñтранице',
'history_short' => 'ИÑторија',
'updatedmarker' => 'ажурирано од моје поÑледње поÑете',
-'info_short' => 'Подаци',
'printableversion' => 'Издање за штампу',
'permalink' => 'Трајна веза',
'print' => 'Штампај',
+'view' => 'Погледај',
'edit' => 'Уреди',
'create' => 'Ðаправи',
'editthispage' => 'Уреди ову Ñтраницу',
@@ -482,6 +590,7 @@ $messages = array(
'delete' => 'Обриши',
'deletethispage' => 'Обриши ову Ñтраницу',
'undelete_short' => 'Врати {{PLURAL:$1|једну обриÑану измену|$1 обриÑане измене|$1 обриÑаних измена}}',
+'viewdeleted_short' => 'Погледај {{PLURAL:$1|обриÑану измену|$1 обриÑане измене|$1 обриÑаних измена}}',
'protect' => 'Заштити',
'protect_change' => 'промени',
'protectthispage' => 'Заштити ову Ñтраницу',
@@ -569,6 +678,8 @@ $1',
'toc' => 'Садржај',
'showtoc' => 'прикажи',
'hidetoc' => 'Ñакриј',
+'collapsible-collapse' => 'Ñкупи',
+'collapsible-expand' => 'прошири',
'thisisdeleted' => 'Погледати или вратити $1?',
'viewdeleted' => 'Погледати $1?',
'restorelink' => '{{PLURAL:$1|обриÑану измену|$1 обриÑане измене|$1 обриÑаних измена}}',
@@ -582,6 +693,8 @@ $1',
'feed-atom' => 'Ðтом',
'feed-rss' => 'RSS',
'red-link-title' => '$1 (Ñтраница не поÑтоји)',
+'sort-descending' => 'Поређај опадајуће',
+'sort-ascending' => 'Поређај раÑтуће',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Страница',
@@ -668,12 +781,13 @@ $1',
'protectedinterface' => 'Ова Ñтраница је заштићена јер Ñадржи текÑÑ‚ кориÑничког Ñучеља програма.',
'editinginterface' => "'''Упозорење:''' уређујете Ñтраницу која Ñе кориÑти за приказивање текÑта Ñучеља.
Измене на овој Ñтраници ће утицати на Ñве кориÑнике.
-ПоÑетите [http://translatewiki.net/wiki/Main_Page?setlang=sr_ec ТранÑлејтвики], пројекат намењен за превођење Медијавикија.",
+ПоÑетите [//translatewiki.net/wiki/Main_Page?setlang=sr_ec ТранÑлејтвики], пројекат намењен за превођење Медијавикија.",
'sqlhidden' => '(SQL упит је Ñакривен)',
'cascadeprotected' => 'Ова Ñтраница је закључана јер Ñадржи {{PLURAL:$1|Ñледећу Ñтраницу која је заштићена|Ñледеће Ñтранице које Ñу заштићене}} „преноÑивом“ заштитом:
$2',
'namespaceprotected' => "Ðемате дозволу да уређујете Ñтранице у именÑком проÑтору '''$1'''.",
-'customcssjsprotected' => 'Ðемате дозволу да мењате ову Ñтраницу јер Ñадржи личне поÑтавке другог кориÑника.',
+'customcssprotected' => 'Ðемате дозволу да мењате ову CSS Ñтраницу јер Ñадржи личне поÑтавке другог кориÑника.',
+'customjsprotected' => 'Ðемате дозволу да мењате ову Ñтраницу јаваÑкрипта јер Ñадржи личне поÑтавке другог кориÑника.',
'ns-specialprotected' => 'ПоÑебне Ñтранице Ñе не могу уређивати.',
'titleprotected' => "Овај наÑлов је {{GENDER:$1|заштитио кориÑник|заштитила кориÑница|заштитио кориÑник}} [[User:$1|$1]].
Ðаведени разлог: ''$2''.",
@@ -712,6 +826,7 @@ $2',
'createaccount' => 'Отвори налог',
'gotaccount' => "Имате налог? Идите на Ñтраницу ''$1''.",
'gotaccountlink' => 'Пријава',
+'userlogin-resetlink' => 'Заборавили Ñте податке за пријаву?',
'createaccountmail' => 'Е-поштом',
'createaccountreason' => 'Разлог:',
'badretype' => 'Лозинке које Ñте унели Ñе не поклапају.',
@@ -723,13 +838,16 @@ $2',
Омогућите их, па Ñе онда пријавите Ñа Ñвојим кориÑничким именом и лозинком.',
'nocookieslogin' => 'Овај вики кориÑти колачиће за пријављивање чланова.
Вама Ñу колачићи онемогућени. Омогућите их и покушајте поново.',
+'nocookiesfornew' => 'КориÑнички налог није отворен јер његов извор није потврђен.
+Омогућите колачиће на прегледачу и поново учитајте Ñтраницу.',
+'nocookiesforlogin' => '{{int:nocookieslogin}}',
'noname' => 'ÐиÑте изабрали иÑправно кориÑничко име.',
'loginsuccesstitle' => 'УÑпешно пријављивање',
'loginsuccess' => "'''Пријављени Ñте као „$1“.'''",
'nosuchuser' => 'Ðе поÑтоји кориÑник Ñ Ð¸Ð¼ÐµÐ½Ð¾Ð¼ „$1“.
КориÑничка имена Ñу оÑетљива на мала и велика Ñлова.
Проверите да ли Ñте га добро унели или [[Special:UserLogin/signup|отворите нови налог]].',
-'nosuchusershort' => 'КориÑник Ñ Ð¸Ð¼ÐµÐ½Ð¾Ð¼ „<nowiki>$1</nowiki>“ не поÑтоји.
+'nosuchusershort' => 'КориÑник Ñ Ð¸Ð¼ÐµÐ½Ð¾Ð¼ „$1“ не поÑтоји.
Проверите да ли Ñте га добро унели.',
'nouserspecified' => 'Морате навеÑти кориÑничко име.',
'login-userblocked' => '{{GENDER:$1|Овај кориÑник је блокиран|Ова кориÑница је блокирана|Овај кориÑник је блокиран}}. Пријава није дозвољена.',
@@ -775,13 +893,14 @@ $2',
'usernamehasherror' => 'КориÑничко име не може Ñадржати тарабе',
'login-throttled' => 'Превише пута Ñте покушали да Ñе пријавите.
Сачекајте неколико минута и покушајте поново.',
+'login-abort-generic' => 'ÐеуÑпешна пријава – прекинуто',
'loginlanguagelabel' => 'Језик: $1',
'suspicious-userlogout' => 'Ваш захтев за одјаву је одбијен јер је поÑлат од Ñтране неиÑправног прегледача или поÑредника.',
# E-mail sending
'php-mail-error-unknown' => 'Ðепозната грешка у функцији PHP mail().',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Промена лозинке',
'resetpass_announce' => 'Пријављени Ñте Ñ Ð¿Ñ€Ð¸Ð²Ñ€ÐµÐ¼ÐµÐ½Ð¾Ð¼ лозинком.
Да биÑте завршили пријаву, подеÑите нову лозинку овде:',
@@ -801,6 +920,34 @@ $2',
Можда Ñте већ променили лозинку или Ñте затражили нову привремену лозинку.',
'resetpass-temp-password' => 'Привремена лозинка:',
+# Special:PasswordReset
+'passwordreset' => 'Обнављање лозинке',
+'passwordreset-text' => 'Попуните овај образац да биÑте примили е-поруку Ñа Ñвојим подацима за пријаву.',
+'passwordreset-legend' => 'Поништи лозинку',
+'passwordreset-disabled' => 'Обнављање лозинке је онемогућено на овом викију.',
+'passwordreset-pretext' => '{{PLURAL:$1||УнеÑите један од делова података иÑпод}}',
+'passwordreset-username' => 'КориÑничко име:',
+'passwordreset-domain' => 'Домен:',
+'passwordreset-email' => 'Е-адреÑа:',
+'passwordreset-emailtitle' => 'Детаљи налога на викију {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Ðеко, вероватно ви, Ñа ИП адреÑе $1 је затражио нову лозинку на викију {{SITENAME}} ($4).
+Следећи {{PLURAL:$3|кориÑнички налог је повезан|кориÑнички налози Ñу повезани}} Ñ Ð¾Ð²Ð¾Ð¼ е-адреÑом:
+
+$2
+
+{{PLURAL:$3|Привремена лозинка иÑтиче|Привремене лозинке иÑтичу}} за {{PLURAL:$5|један дан|$5 дана|$5 дана}}.
+Пријавите Ñе и изаберите нову лозинку. Ðко је неко други захтевао ову радњу или Ñте Ñе Ñетили лозинке и не желите да је мењате, занемарите ову поруку.',
+'passwordreset-emailtext-user' => '{{GENDER:$1|КориÑник|КориÑница|КориÑник}} $1 је затражио подÑетник о подацима за пријаву на викију {{SITENAME}} ($4).
+Следећи {{PLURAL:$3|кориÑнички налог је повезан|кориÑнички налози Ñу повезани}} Ñ Ð¾Ð²Ð¾Ð¼ е-адреÑом:
+
+$2
+
+{{PLURAL:$3|Привремена лозинка иÑтиче|Привремене лозинке иÑтичу}} за {{PLURAL:$5|један дан|$5 дана|$5 дана}}.
+Пријавите Ñе и изаберите нову лозинку. Ðко је неко други захтевао ову радњу или Ñте Ñе Ñетили лозинке и не желите да је мењате, занемарите ову поруку.',
+'passwordreset-emailelement' => 'КориÑничко име: $1
+Привремена лозинка: $2',
+'passwordreset-emailsent' => 'ПодÑетник о лозинци је поÑлат на вашу адреÑу.',
+
# Edit page toolbar
'bold_sample' => 'Подебљан текÑÑ‚',
'bold_tip' => 'Подебљан текÑÑ‚',
@@ -812,8 +959,6 @@ $2',
'extlink_tip' => "Спољна веза (Ñ Ð¿Ñ€ÐµÐ´Ð¼ÐµÑ‚ÐºÐ¾Ð¼ ''http://'')",
'headline_sample' => 'ÐаÑлов',
'headline_tip' => 'ПоднаÑлов',
-'math_sample' => 'Овде унеÑите формулу',
-'math_tip' => 'Математичка формула (LaTeX)',
'nowiki_sample' => 'Убаците необликован текÑÑ‚ овде',
'nowiki_tip' => 'Занемари вики обликовање',
'image_sample' => 'Пример.jpg',
@@ -902,7 +1047,7 @@ $2',
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} претражити Ñродне извештаје] или [{{fullurl:{{FULLPAGENAME}}|action=edit}} уредити Ñтраницу]</span>.',
'noarticletext-nopermission' => 'Ðа овој Ñтраници тренутно нема Ñадржаја.
Можете [[Special:Search/{{PAGENAME}}|потражити овај наÑлов]] на другим Ñтраницама или <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} претражити Ñродне извештаје]</span>.',
-'userpage-userdoesnotexist' => 'Ðалог „$1“ није отворен.
+'userpage-userdoesnotexist' => 'Ðалог „<nowiki>$1</nowiki>“ није отворен.
РазмиÑлите да ли желите да направите или измените ову Ñтраницу.',
'userpage-userdoesnotexist-view' => 'КориÑнички налог „$1“ није отворен.',
'blocked-notice-logextract' => 'Овај кориÑник је тренутно блокиран.
@@ -941,6 +1086,7 @@ $2',
Ðко и даље не ради, покушајте да Ñе [[Special:UserLogout|одјавите]] и поново пријавите.'''",
'token_suffix_mismatch' => "'''Ваша измена је одбачена јер је ваш прегледач убацио знакове интерпункције у новчић уређивања.
То Ñе понекад догађа када Ñе кориÑти неиÑправан поÑредник.'''",
+'edit_form_incomplete' => "'''Ðеки делови обраÑца за уређивање ниÑу доÑтигли до Ñервера. Проверите да ли Ñу измене промењене и покушајте поново.'''",
'editing' => 'Уређујете $1',
'editingsection' => 'Уређујете $1 (одељак)',
'editingcomment' => 'Уређујете $1 (нови одељак)',
@@ -984,6 +1130,7 @@ $2',
'template-semiprotected' => '(полузаштићено)',
'hiddencategories' => 'Ова Ñтраница је члан {{PLURAL:$1|једне Ñкривене категорије|$1 Ñкривене категорије|$1 Ñкривених категорија}}:',
'edittools' => '<!-- Овај текÑÑ‚ ће бити приказан иÑпод обраÑца за уређивање и отпремање. -->',
+'edittools-upload' => '-',
'nocreatetitle' => 'Прављење Ñтранице је ограничено',
'nocreatetext' => 'Ðа овом викију је ограничено прављење нових Ñтраница.
Можете Ñе вратити и уредити поÑтојећу Ñтраницу, или Ñе [[Special:UserLogin|пријавите или отворите налог]].',
@@ -1151,8 +1298,8 @@ $1",
'revdelete-content' => 'Ñадржај',
'revdelete-summary' => 'Ð¾Ð¿Ð¸Ñ Ð¸Ð·Ð¼ÐµÐ½Ðµ',
'revdelete-uname' => 'кориÑничко име',
-'revdelete-restricted' => 'ограничења за админиÑтраторе Ñу примењена',
-'revdelete-unrestricted' => 'ограничења за админиÑтраторе Ñу уклоњена',
+'revdelete-restricted' => 'примењена ограничења за админиÑтраторе',
+'revdelete-unrestricted' => 'уклоњена ограничења за админиÑтраторе',
'revdelete-hid' => 'Ñакривено: $1',
'revdelete-unhid' => 'откривено: $1',
'revdelete-log-message' => '$1 за $2 {{PLURAL:$2|измену|измене|измена}}',
@@ -1179,7 +1326,7 @@ $1",
# Suppression log
'suppressionlog' => 'ИÑторија Ñакривања',
-'suppressionlogtext' => 'ИÑпод Ñе налази ÑпиÑак блокова и обриÑаних Ñтраница који Ñу Ñакривени од админиÑтратора. Погледај [[Special:IPBlockList|ÑпиÑак блокираних ИП адреÑа]] за ÑпиÑак тренутно важећих банова и блокова.',
+'suppressionlogtext' => 'ИÑпод Ñе налази ÑпиÑак бриÑања и блокирања који укључује Ñадржај Ñакривен од админиÑтратора. Погледајте [[Special:BlockList|ÑпиÑак блокираних IP адреÑа]] за преглед важећих забрана и блокирања.',
# History merging
'mergehistory' => 'Споји иÑторије Ñтраница',
@@ -1291,12 +1438,13 @@ $1",
Упамтите да његови попиÑи овог викија могу бити заÑтарели.',
# Quickbar
-'qbsettings' => 'Бочна палета',
-'qbsettings-none' => 'Ðишта',
-'qbsettings-fixedleft' => 'Причвршћена лево',
-'qbsettings-fixedright' => 'Причвршћена деÑно',
-'qbsettings-floatingleft' => 'Плутајућа лево',
-'qbsettings-floatingright' => 'Плутајућа деÑно',
+'qbsettings' => 'Бочна палета',
+'qbsettings-none' => 'Ðишта',
+'qbsettings-fixedleft' => 'Причвршћена лево',
+'qbsettings-fixedright' => 'Причвршћена деÑно',
+'qbsettings-floatingleft' => 'Плутајућа лево',
+'qbsettings-floatingright' => 'Плутајућа деÑно',
+'qbsettings-directionality' => 'ФикÑно, у завиÑноÑти од Ñмера пиÑања вашег језика',
# Preferences page
'preferences' => 'Подешавања',
@@ -1307,9 +1455,10 @@ $1",
'changepassword' => 'Промени лозинку',
'prefs-skin' => 'Тема',
'skin-preview' => 'Прегледај',
-'prefs-math' => 'Приказ математичких формула',
'datedefault' => 'Свеједно',
+'prefs-beta' => 'Бета могућноÑти',
'prefs-datetime' => 'Датум и време',
+'prefs-labs' => 'Пробне могућноÑти',
'prefs-personal' => 'Профил',
'prefs-rc' => 'Скорашње измене',
'prefs-watchlist' => 'СпиÑак надгледања',
@@ -1331,8 +1480,6 @@ $1",
'columns' => 'Колона',
'searchresultshead' => 'Претрага',
'resultsperpage' => 'Погодака по Ñтраници:',
-'contextlines' => 'Линија по поготку:',
-'contextchars' => 'Знакова по линији:',
'stub-threshold' => 'Праг за обликовање <a href="#" class="stub">везе као клице</a> (у бајтовима):',
'stub-threshold-disabled' => 'Онемогућено',
'recentchangesdays' => 'Број дана у Ñкорашњим изменама:',
@@ -1345,7 +1492,7 @@ $1",
'savedprefs' => 'Ваша подешавања Ñу Ñачувана.',
'timezonelegend' => 'ВременÑка зона:',
'localtime' => 'Локално време:',
-'timezoneuseserverdefault' => 'подразумеване вредноÑти',
+'timezoneuseserverdefault' => 'подразумеване вредноÑти ($1)',
'timezoneuseoffset' => 'друго (унеÑите одÑтупање)',
'timezoneoffset' => 'ОдÑтупање¹:',
'servertime' => 'Време на Ñерверу:',
@@ -1398,7 +1545,8 @@ $1",
'email' => 'Е-адреÑа',
'prefs-help-realname' => 'Право име није обавезно.
Ðко изаберете да га унеÑете, оно ће бити коришћено за припиÑивање вашег рада.',
-'prefs-help-email' => 'Е-пошта је опциона, али омогућује оÑталима да Ð²Ð°Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ˜Ñƒ преко ваше кориÑничке Ñтране или Ñтране разговора Ñа кориÑником без потребе да одајете Ñвој идентитет.',
+'prefs-help-email' => 'Е-адреÑа није обавезна, али је потребна у Ñлучају да заборавите лозинку.',
+'prefs-help-email-others' => 'Можете је кориÑтити и да омогућите другима да Ð²Ð°Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ð¸Ñ€Ð°Ñ˜Ñƒ преко кориÑничке Ñтранице или Ñтранице за разговор, без откривања Ñвог идентитета.',
'prefs-help-email-required' => 'Е-адреÑа је потребна.',
'prefs-info' => 'ОÑновни подаци',
'prefs-i18n' => 'Интернационализација',
@@ -1524,19 +1672,19 @@ $1",
'right-userrights' => 'уређивање Ñвих кориÑничких права',
'right-userrights-interwiki' => 'уређивање кориÑничких права на другим викијима',
'right-siteadmin' => 'закључавање и откључавање базе података',
-'right-reset-passwords' => 'поништавање туђих лозинки',
'right-override-export-depth' => 'извоз Ñтраница укључујући и повазене Ñтранице до дубине од пет веза',
'right-sendemail' => 'Ñлање е-порука другим кориÑницима',
# User rights log
-'rightslog' => 'ИÑторија кориÑничких права',
-'rightslogtext' => 'Ово је иÑторија измена кориÑничких права.',
-'rightslogentry' => '{{GENDER:|је променио|је променила|је променио}} права за члана $1 из $2 у $3',
-'rightsnone' => '(ништа)',
+'rightslog' => 'ИÑторија кориÑничких права',
+'rightslogtext' => 'Ово је иÑторија измена кориÑничких права.',
+'rightslogentry' => '{{GENDER:|је променио|је променила|је променио}} права за члана $1 из $2 у $3',
+'rightslogentry-autopromote' => 'је унапређен из $2 у $3',
+'rightsnone' => '(ништа)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'читање ове Ñтранице',
-'action-edit' => 'прављење ове Ñтранице',
+'action-edit' => 'уређивање ове Ñтранице',
'action-createpage' => 'прављење Ñтраница',
'action-createtalk' => 'прављење Ñтраница за разговор',
'action-createaccount' => 'прављење овог кориÑничког налога',
@@ -1659,13 +1807,13 @@ $1",
'illegalfilename' => 'Датотека „$1“ Ñадржи знакове који ниÑу дозвољени у називима Ñтраница.
Промените назив датотеке и поново је пошаљите.',
'badfilename' => 'Ðазив датотеке је промењен у „$1“.',
-'filetype-mime-mismatch' => 'ЕкÑтензија датотеке не одговара MIME типу.',
+'filetype-mime-mismatch' => 'ЕкÑтензија „.$1“ не одговара препознатој врÑти MIME датотеке ($2).',
'filetype-badmime' => 'Датотеке MIME врÑте „$1“ није дозвољено Ñлати.',
'filetype-bad-ie-mime' => 'Ова датотека Ñе не може поÑлати зато што би је Интернет екÑплорер уочио као „$1“, а то је забрањена и опаÑна врÑта датотеке.',
'filetype-unwanted-type' => '„.$1“ је непожељна врÑта датотеке.
{{PLURAL:$3|Пожељна врÑта датотеке је|Пожељне врÑте датотека Ñу}} $2.',
-'filetype-banned-type' => '„.$1“ је забрањен тип датотеке.
-{{PLURAL:$3|Пожељна врÑта датотеке је|Пожељне врÑте датотека Ñу}} $2.',
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|је забрањена врÑта датотеке|Ñу забрањене врÑте датотека}}.
+{{PLURAL:$3|Дозвољена врÑта датотеке је|Дозвољене врÑте датотека Ñу}} $2.',
'filetype-missing' => 'Ова датотека нема екÑтензију.',
'empty-file' => 'ПоÑлата датотека је празна.',
'file-too-large' => 'ПоÑлата датотека је превелика.',
@@ -1683,6 +1831,7 @@ $1",
'emptyfile' => 'Датотека коју Ñте поÑлали је празна.
Узрок може бити грешка у називу датотеке.
Проверите да ли заиÑта желите да је пошаљете.',
+'windows-nonascii-filename' => 'Овај вики не подржава називе датотека Ñ Ð¿Ð¾Ñебним знацима.',
'fileexists' => "Датотека Ñ Ð¾Ð²Ð¸Ð¼ називом већ поÑтоји. Погледајте '''<tt>[[:$1]]</tt>''' ако ниÑте Ñигурни да ли желите да је промените.
[[$1|thumb]]",
'filepageexists' => "Страница Ñ Ð¾Ð¿Ð¸Ñом ове датотеке је већ направљена овде '''<tt>[[:$1]]</tt>''', иако датотека не поÑтоји.
@@ -1723,6 +1872,8 @@ $1",
'uploadscripted' => 'Датотека Ñадржи HTML или Ñкриптни код који може бити погрешно протумачен од Ñтране прегледача.',
'uploadvirus' => 'Датотека Ñадржи вируÑ!
Детаљи: $1',
+'uploadjava' => 'Датотека је формата ZIP који Ñадржи јава .class елемент.
+Слање јава датотека није дозвољено јер оне могу изазвати заобилажење ÑигурноÑних ограничења.',
'upload-source' => 'Изворна датотека',
'sourcefilename' => 'Ðазив изворне датотеке:',
'sourceurl' => 'ÐдреÑа извора:',
@@ -1733,10 +1884,6 @@ $1",
'watchthisupload' => 'Ðадгледај ову датотеку',
'filewasdeleted' => 'Датотека Ñ Ð¾Ð²Ð¸Ð¼ називом је раније поÑлата, али је обриÑана.
Проверите $1 пре него што наÑтавите Ñ Ð¿Ð¾Ð½Ð¾Ð²Ð½Ð¸Ð¼ Ñлањем.',
-'upload-wasdeleted' => "'''Упозорење: шаљете датотеку која је претходно обриÑана.'''
-
-Размотрите да ли желите да наÑтавите Ñа Ñлањем.
-Разлог бриÑања ове датотеке:",
'filename-bad-prefix' => "Ðазив датотеке коју шаљете почиње Ñа '''\"\$1\"''', а њега обично додељују дигитални фотоапарати.
Изаберите назив датотеке који опиÑује њен Ñадржај.",
'filename-prefix-blacklist' => ' #<!-- оÑтавите овај ред онаквим какав јеÑте --> <pre>
@@ -1775,12 +1922,29 @@ $1',
'upload-unknown-size' => 'Ðепозната величина',
'upload-http-error' => 'Дошло је до HTTP грешке: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Дошло је до грешке при отварању датотеке за проверу ZIP архиве.',
+'zip-wrong-format' => 'Ðаведена датотека није формата ZIP.',
+'zip-bad' => 'Датотека је оштећена или је нечитљива ZIP датотека.
+БезбедноÑна провера не може да Ñе изврши како треба.',
+'zip-unsupported' => 'Датотека је формата ZIP који кориÑти могућноÑти које не подржава Медијавики.
+БезбедноÑна провера не може да Ñе изврши како треба.',
+
+# Special:UploadStash
+'uploadstash' => 'Тајно Ñкладиште',
+'uploadstash-summary' => 'Ова Ñтраница пружа приÑтуп датотекама које Ñу поÑлате (или Ñе шаљу), али још ниÑу објављене. Ове датотеке Ñу видљиве Ñамо кориÑнику који га је поÑлао.',
+'uploadstash-clear' => 'ОчиÑти Ñакривене датотеке',
+'uploadstash-nofiles' => 'Ðемате Ñакривене датотеке.',
+'uploadstash-badtoken' => 'Извршавање дате радње није уÑпело. Разлог томе може бити иÑтек времена за уређивање. Покушајте поново.',
+'uploadstash-errclear' => 'Чишћење датотека није уÑпело.',
+'uploadstash-refresh' => 'ОÑвежи ÑпиÑак датотека',
+
# img_auth script messages
'img-auth-accessdenied' => 'ПриÑтуп је одбијен',
'img-auth-nopathinfo' => 'ÐедоÑтаје PATH_INFO.
Ваш Ñервер није подешен да проÑлеђује овакве податке.
Можда је заÑнован на CGI-ју који не подржава img_auth.
-Погледајте http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+Погледајте [//www.mediawiki.org/wiki/Manual:Image_Authorization?uselang=sr-ec одобравање Ñлика.]',
'img-auth-notindir' => 'Захтевана путања није у подешеној фаÑцикли за Ñлање.',
'img-auth-badtitle' => 'Ðе могу да Ñтворим иÑправан наÑлов за „$1“.',
'img-auth-nologinnWL' => 'ÐиÑте пријављени и „$1“ није на ÑпиÑку дозвољених.',
@@ -1845,7 +2009,7 @@ $1',
'filehist-datetime' => 'Датум/време',
'filehist-thumb' => 'Умањени приказ',
'filehist-thumbtext' => 'Умањени приказ за издање од $1',
-'filehist-nothumb' => 'Без умањеног приказа',
+'filehist-nothumb' => 'Ðема минијатуре',
'filehist-user' => 'КориÑник',
'filehist-dimensions' => 'Димензије',
'filehist-filesize' => 'Величина датотеке',
@@ -1858,7 +2022,7 @@ $1',
ДоÑтупан је и [[Special:WhatLinksHere/$2|потпуни ÑпиÑак]].',
'nolinkstoimage' => 'Ðема Ñтраница које кориÑте ову датотеку.',
'morelinkstoimage' => 'Погледајте [[Special:WhatLinksHere/$1|више веза]] до ове датотеке.',
-'redirectstofile' => '{{PLURAL:$1|Следећа датотека Ñе преуÑмерава|Следеће $1 датотеке Ñе преуÑмеравају|Следећих $1 датотека Ñе преуÑмерава}} до ове датотеке:',
+'linkstoimage-redirect' => '$1 (преуÑмерење датотеке) $2',
'duplicatesoffile' => '{{PLURAL:$1|Следећа датотека је дупликат|Следеће $1 датотеке Ñу дупликати|Следећих $1 датотека Ñу дупликати}} ове датотеке ([[Special:FileDuplicateSearch/$2|детаљније]]):',
'sharedupload' => 'Ова датотека Ñе налази на $1 и може Ñе кориÑтити и на другим пројектима.',
'sharedupload-desc-there' => 'Ова датотека Ñе налази на $1 и може Ñе кориÑтити и на другим пројектима.
@@ -1952,19 +2116,20 @@ $1',
'statistics-users-active-desc' => 'КориÑници који Ñу извршили бар једну радњу {{PLURAL:$1|претходни дан|у поÑледња $1 дана|у поÑледњих $1 дана}}',
'statistics-mostpopular' => 'ÐајпоÑећеније Ñтранице',
-'disambiguations' => 'Странице за вишезначне одреднице',
+'disambiguations' => 'Странице до вишезначних одредница',
'disambiguationspage' => 'Template:Вишезначна одредница',
'disambiguations-text' => "Следеће Ñтранице Ñу повезане Ñ '''вишезначном одредницом'''.
Оне би требало бити упућене ка одговарајућем чланку.
Страница Ñе Ñматра вишезначном одредницом ако кориÑти шаблон који је повезан Ñа ÑпиÑком [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'ДвоÑтрука преуÑмерења',
-'doubleredirectstext' => 'Ова Ñтраница приказује Ñтранице које преуÑмеравају на друга преуÑмерења.
+'doubleredirects' => 'ДвоÑтрука преуÑмерења',
+'doubleredirectstext' => 'Ова Ñтраница приказује Ñтранице које преуÑмеравају на друга преуÑмерења.
Сваки ред Ñадржи везе према првом и другом преуÑмерењу, као и одредишну Ñтраницу другог преуÑмерења која је обично „прави“ чланак на кога прво преуÑмерење треба да упућује.
<del>Прецртани</del> уноÑи Ñу већ решени.',
-'double-redirect-fixed-move' => '[[$1]] је премештен.
+'double-redirect-fixed-move' => '[[$1]] је премештен.
Сада је преуÑмерење на [[$2]].',
-'double-redirect-fixer' => 'ИÑправљач преуÑмерења',
+'double-redirect-fixed-maintenance' => 'ИÑправљање двоÑтруких преуÑмерења из [[$1]] у [[$2]].',
+'double-redirect-fixer' => 'ИÑправљач преуÑмерења',
'brokenredirects' => 'Покварена преуÑмерења',
'brokenredirectstext' => 'Следећа преуÑмерења упућују на непоÑтојеће Ñтранице:',
@@ -2041,6 +2206,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|новији 1|новија $1|новијих $1}}',
'pager-older-n' => '{{PLURAL:$1|Ñтарији 1|Ñтарија $1|Ñтаријих $1}}',
'suppress' => 'Ревизор',
+'querypage-disabled' => 'Ова поÑебна Ñтраница је онемогућена ради побољшања перформанÑи.',
# Book sources
'booksources' => 'Штампани извори',
@@ -2051,8 +2217,8 @@ $1',
'booksources-invalid-isbn' => 'Ðаведени ISBN број није иÑправан. Проверите да није дошло до грешке при умножавању из првобитног извора.',
# Special:Log
-'specialloguserlabel' => 'КориÑник:',
-'speciallogtitlelabel' => 'ÐаÑлов:',
+'specialloguserlabel' => 'Извршилац:',
+'speciallogtitlelabel' => 'Циљ (наÑлов или кориÑник):',
'log' => 'Протоколи',
'all-logs-page' => 'Све јавне иÑторије',
'alllogstext' => 'Скупни приказ Ñвих доÑтупних иÑторија овог викија.
@@ -2093,12 +2259,13 @@ $1',
'sp-deletedcontributions-contribs' => 'прилози',
# Special:LinkSearch
-'linksearch' => 'Спољне везе',
+'linksearch' => 'Претрага Ñпољних веза',
'linksearch-pat' => 'Образац претраге:',
'linksearch-ns' => 'ИменÑки проÑтор:',
'linksearch-ok' => 'Претражи',
-'linksearch-text' => 'Ðокери попут „*.wikipedia.org“ Ñе могу кориÑтити.<br />
-Подржани протоколи: <tt>$1</tt>',
+'linksearch-text' => 'Могу Ñе кориÑтити џокери попут „*.wikipedia.org“.<br />
+Потребан је највиши домен, као „*.org“.<br />
+Подржани протоколи: <tt>$1</tt> (не Ñтављајте у претрагу)',
'linksearch-line' => 'Ñтраница $1 је повезана Ñа Ñтранице $2',
'linksearch-error' => 'Ðокери Ñе могу појавити Ñамо на почетку адреÑе.',
@@ -2161,6 +2328,10 @@ $1',
'noemailtext' => 'Овај кориÑник није навео иÑправну е-адреÑу.',
'nowikiemailtitle' => 'Е-пошта није дозвољена',
'nowikiemailtext' => 'Овај кориÑник је одлучио да не прима е-поруке од других кориÑника.',
+'emailnotarget' => 'ÐепоÑтојеће или неиÑправно кориÑничко име примаоца.',
+'emailtarget' => 'Ð£Ð½Ð¾Ñ ÐºÐ¾Ñ€Ð¸Ñничког имена примаоца',
+'emailusername' => 'КориÑничко име:',
+'emailusernamesubmit' => 'Пошаљи',
'email-legend' => 'Слање е-порука другом кориÑнику',
'emailfrom' => 'Од:',
'emailto' => 'За:',
@@ -2186,12 +2357,12 @@ $1',
'watchlistanontext' => 'Морате бити $1 да биÑте гледали и уређивали Ñтавке на вашем ÑпиÑку надгледања.',
'watchnologin' => 'ÐиÑте пријављени',
'watchnologintext' => 'Морате бити [[Special:UserLogin|пријављени]] да биÑте мењали ÑпиÑак надгледања.',
-'addedwatch' => 'Додато на ÑпиÑак надгледања',
+'addwatch' => 'Додај на ÑпиÑак надгледања',
'addedwatchtext' => 'Страница „[[:$1]]“ је додата на ваш [[Special:Watchlist|ÑпиÑак надгледања]].
Будуће измене ове Ñтранице и њене Ñтранице за разговор биће наведене овде, а Ñтраница ће бити <b>подебљана</b> у [[Special:RecentChanges|ÑпиÑку Ñкорашњих измена]] да би Ñе лакше уочила.
Уколико будете желели да уклоните Ñтраницу Ñа ÑпиÑка надгледања, кликните опет на звездицу у горњој палети.',
-'removedwatch' => 'Уклоњено Ñа ÑпиÑка надгледања',
+'removewatch' => 'Уклони Ñа ÑпиÑка надгледања',
'removedwatchtext' => 'Страница „[[:$1]]“ је уклоњена Ñ Ð²Ð°ÑˆÐµÐ³ [[Special:Watchlist|ÑпиÑка надгледања]].',
'watch' => 'Ðадгледај',
'watchthispage' => 'Ðадгледај ову Ñтраницу',
@@ -2212,8 +2383,9 @@ $1',
'watchlist-options' => 'ПоÑтавке ÑпиÑка надгледања',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Ðадгледање…',
-'unwatching' => 'Прекидање надгледања…',
+'watching' => 'Ðадгледање…',
+'unwatching' => 'Прекидање надгледања…',
+'watcherrortext' => 'Дошло је до грешке при промени поÑтавки вашег ÑпиÑка надгледања за „$1“.',
'enotif_mailer' => '{{SITENAME}} е-обавештење',
'enotif_reset' => 'Означи Ñве Ñтранице као поÑећене',
@@ -2232,7 +2404,7 @@ $1',
$NEWPAGE
-Сажетак: $PAGESUMMARY $PAGEMINOREDIT
+ОпиÑ: $PAGESUMMARY $PAGEMINOREDIT
Контакт:
е-адреÑа: $PAGEEDITOR_EMAIL
@@ -2244,17 +2416,17 @@ $NEWPAGE
Срдачан поздрав, {{SITENAME}}
--
-Да биÑте променили поÑтавке у вези Ñ Ðµ-обавештењима, поÑетите
-{{fullurl:{{#special:Preferences}}}}
+Да биÑте променили поÑтавке у вези Ñа е-обавештењима, поÑетите
+{{canonicalurl:{{#special:Preferences}}}}
Да биÑте променили поÑтавке у вези Ñа ÑпиÑком надгледања, поÑетите
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Да биÑте уклонили ову Ñтраницу Ñа ÑпиÑка надгледања, поÑетите
$UNWATCHURL
Подршка и даља помоћ:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Обриши Ñтраницу',
@@ -2271,8 +2443,8 @@ $UNWATCHURL
Потврдите Ñвоју намеру, да разумете поÑледице и да ово радите у Ñкладу Ñ [[{{MediaWiki:Policy-url}}|правилима]].',
'actioncomplete' => 'Ðкција је завршена',
'actionfailed' => 'Ðкција није уÑпела',
-'deletedtext' => "Страница „<nowiki>$1</nowiki>“ је обриÑана.
-Погледајте Ñтраницу ''$2'' за више детаља.",
+'deletedtext' => "Страница „$1“ је обриÑана.
+Погледајте ''$2'' за више детаља.",
'deletedarticle' => 'је обриÑао „[[$1]]“',
'suppressedarticle' => '{{GENDER:|је Ñакрио|је Ñакрила|је Ñакрио}} „[[$1]]“',
'dellogpage' => 'иÑторија бриÑања',
@@ -2331,7 +2503,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'Време иÑтека није иÑправно.',
'protect_expiry_old' => 'Време иÑтека је у прошлоÑти.',
'protect-unchain-permissions' => 'Откључај даљње поÑтавке заштите',
-'protect-text' => "Овде можете погледати и променити Ñтепен заштите Ñтранице '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Овде можете погледати и променити Ñтепен заштите Ñтранице '''$1'''.",
'protect-locked-blocked' => "Ðе можете мењати Ñтепене заштите док Ñте блокирани.
Ово Ñу тренутне поÑтавке Ñтранице '''$1''':",
'protect-locked-dblock' => "Степени заштите Ñе не могу мењати јер је активна база података закључана.
@@ -2387,8 +2559,7 @@ $UNWATCHURL
Ðрхива Ñе повремено чиÑти од оваквих Ñтраница.',
'undelete-fieldset-title' => 'Враћање измена',
'undeleteextrahelp' => "Да биÑте вратили целу иÑторију Ñтранице, оÑтавите Ñве кућице неозначене и кликните на дугме '''''{{int:undeletebtn}}'''''.
-Ðко желите да вратите одређене измене, означите их и кликните на '''''{{int:undeletebtn}}'''''.
-Дугме '''''{{int:undeletereset}}''''' ће очиÑтити поље за коментар и Ñве кућице.",
+Ðко желите да вратите одређене измене, означите их и кликните на '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|измена је архивирана|измене Ñу архивиране|измена је архивирано}}',
'undeletehistory' => 'Ðко вратите Ñтраницу, Ñве измене ће бити враћене њеној иÑторији.
Ðко је у међувремену направљена нова Ñтраница Ñ Ð¸Ñтим називом, враћене измене ће Ñе појавити у ранијом иÑторији.',
@@ -2433,9 +2604,12 @@ $1',
'undelete-show-file-submit' => 'Да',
# Namespace form on various pages
-'namespace' => 'ИменÑки проÑтор:',
-'invert' => 'Обрни избор',
-'blanknamespace' => '(Главно)',
+'namespace' => 'ИменÑки проÑтор:',
+'invert' => 'Обрни избор',
+'tooltip-invert' => 'Означите ову кућицу да биÑте Ñакрили измене на Ñтраницама у одабраном именÑком проÑтору (и повезаним именÑким проÑторима, ако је означено)',
+'namespace_association' => 'Повезани именÑки проÑтор',
+'tooltip-namespace_association' => 'Означите ову кућицу да биÑте укључили и разговор или именÑки проÑтор теме која је повезана Ñ Ð¾Ð´Ð°Ð±Ñ€Ð°Ð½Ð¸Ð¼ именÑким проÑтором',
+'blanknamespace' => '(Главно)',
# Contributions
'contributions' => 'Прилози кориÑника',
@@ -2486,6 +2660,9 @@ $1',
'whatlinkshere-filters' => 'Филтери',
# Block/unblock
+'autoblockid' => 'Самоблокирање #$1',
+'block' => 'Блокирај кориÑника',
+'unblock' => 'Деблокирај кориÑника',
'blockip' => 'Блокирај кориÑника',
'blockip-title' => 'Блокирај кориÑника',
'blockip-legend' => 'Блокирај кориÑника',
@@ -2495,7 +2672,6 @@ $1',
Ñа [[{{MediaWiki:Policy-url}}|Ñмерницама]].
УнеÑите конкретан разлог иÑпод (на пример, наводећи које
Ñтранице Ñу вандализоване).',
-'ipaddress' => 'IP адреÑа:',
'ipadressorusername' => 'ИП адреÑа или кориÑничко име:',
'ipbexpiry' => 'Трајање',
'ipbreason' => 'Разлог:',
@@ -2508,7 +2684,7 @@ $1',
** Ðепожељно понашање
** Употреба више налога
** Ðепожељно кориÑничко име',
-'ipbanononly' => 'Блокирај Ñамо анонимне кориÑнике',
+'ipb-hardblock' => 'Забрани пријављеним кориÑницима да уређују Ñ Ð¾Ð²Ðµ ИП адреÑе',
'ipbcreateaccount' => 'Спречи прављење налога',
'ipbemailban' => 'Забрани члану Ñлање е-порука',
'ipbenableautoblock' => 'ÐутоматÑки блокирај поÑледњу ИП адреÑу овог кориÑника, и Ñваку Ñледећу адреÑу Ñа које Ñе покуша уређивање.',
@@ -2519,12 +2695,15 @@ $1',
'ipbotherreason' => 'Други/додатни разлог:',
'ipbhidename' => 'Сакриј кориÑничко име Ñа измена и ÑпиÑкова',
'ipbwatchuser' => 'надгледање кориÑничке Ñтранице и Ñтранице за разговор овог кориÑника',
-'ipballowusertalk' => 'Омогућите овом кориÑнику да мења ÑопÑтвену Ñтрану за разговор током блока',
+'ipb-disableusertalk' => 'Забрани овом кориÑнику да уређује Ñвоју Ñтраницу за разговор док је блокиран',
'ipb-change-block' => 'Поново блокирај кориÑника Ñ Ð¾Ð²Ð¸Ð¼ поÑтавкама',
+'ipb-confirm' => 'Потврди блокирање',
'badipaddress' => 'ÐеиÑправна IP адреÑа',
'blockipsuccesssub' => 'Блокирање је уÑпело',
-'blockipsuccesstext' => '"[[Special:Contributions/$1|$1]]" је {{GENDER:|блокиран|блокирана|блокиран}}.<br />
-Погледајте [[Special:IPBlockList|ÑпиÑак блокираних ИП адреÑа]] за преглед блокирања.',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] је {{GENDER:$1|блокиран|блокирана|блокиран}}.<br />
+Погледајте [[Special:BlockList|ÑпиÑак блокираних ИП адреÑа]] за преглед блокирања.',
+'ipb-blockingself' => 'Овом радњом ћете блокирати Ñебе! ЈеÑте ли Ñигурни да то желите?',
+'ipb-confirmhideuser' => 'Управо ћете блокирати кориÑника Ñ ÑƒÐºÑ™ÑƒÑ‡ÐµÐ½Ð¾Ð¼ могућношћу „Ñакриј кориÑника“. Овим ће кориÑничко име бити Ñакривено у Ñвим ÑпиÑковима и извештајима. Желите ли то да урадите?',
'ipb-edit-dropdown' => 'Уреди разлоге блокирања',
'ipb-unblock-addr' => 'Деблокирај $1',
'ipb-unblock' => 'Деблокирај кориÑничко име или IP адреÑу',
@@ -2534,17 +2713,23 @@ $1',
'unblockiptext' => 'КориÑтите образац иÑпод да биÑте вратили право пиÑања блокираној IP адреÑи или кориÑничком имену.',
'ipusubmit' => 'Деблокирај',
'unblocked' => '[[User:$1|$1]] је деблокиран',
+'unblocked-range' => '$1 је {{GENDER:$1|деблокиран|деблокирана|деблокиран}}',
'unblocked-id' => 'Блокирање $1 је уклоњено',
+'blocklist' => 'Блокирани кориÑници',
'ipblocklist' => 'Блокирани кориÑници',
'ipblocklist-legend' => 'Проналажење блокираног кориÑника',
-'ipblocklist-username' => 'КориÑничко име или ИП адреÑа:',
-'ipblocklist-sh-userblocks' => '$1 забрањене налоге',
-'ipblocklist-sh-tempblocks' => '$1 привремене забране',
-'ipblocklist-sh-addressblocks' => '$1 IP забране',
+'blocklist-userblocks' => 'Сакриј блокирања налога',
+'blocklist-tempblocks' => 'Сакриј привремена блокирања',
+'blocklist-addressblocks' => 'Сакриј појединачна блокирања ИП адреÑе',
+'blocklist-timestamp' => 'Време',
+'blocklist-target' => 'КориÑник',
+'blocklist-expiry' => 'ИÑтиче',
+'blocklist-by' => 'Блокирао',
+'blocklist-params' => 'Забрањене радње',
+'blocklist-reason' => 'Разлог',
'ipblocklist-submit' => 'Претражи',
'ipblocklist-localblock' => 'Локално блокирање',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Друго блокирање|Друга блокирања}}',
-'blocklistline' => '$1, $2 је {{GENDER:$2|блокирао|блокирала|је блокирао}} {{GENDER:$3|кориÑника|кориÑницу|кориÑника}} $3 (иÑтиче $4)',
'infiniteblock' => 'никада',
'expiringblock' => 'иÑтиче дана $1 у $2',
'anononlyblock' => 'Ñамо анонимни',
@@ -2569,7 +2754,7 @@ $1',
'reblock-logentry' => 'је променио подешавања блока за [[$1]] Ñа временом иÑтека $2 ($3)',
'blocklogtext' => 'Ово је иÑторија блокирања кориÑника.
ÐутоматÑки забрањене IP адреÑе ниÑу иÑпиÑане овде.
-Погледајте [[Special:IPBlockList|забрањене IP адреÑе]] за ÑпиÑак тренутних блокова.',
+Погледајте [[Special:BlockList|забрањене IP адреÑе]] за ÑпиÑак тренутних блокова.',
'unblocklogentry' => '{{GENDER:|је деблокирао|је деблокирала|је деблокирао}} „$1“',
'block-log-flags-anononly' => 'Ñамо анонимни кориÑници',
'block-log-flags-nocreate' => 'онемогућено отварање налога',
@@ -2583,9 +2768,9 @@ $1',
'ipb_expiry_temp' => 'Сакривени блокови кориÑничких имена морају бити Ñтални.',
'ipb_hide_invalid' => 'Ðије било могуће Ñакрити овај налог; Мора да има превише измена.',
'ipb_already_blocked' => '"$1" је већ блокиран',
-'ipb-needreblock' => '== Већ блокиран ==
-$1 је већ блокиран. Да ли желите да промените подешавања?',
+'ipb-needreblock' => '$1 је већ блокиран. Да ли желите да промените подешавања?',
'ipb-otherblocks-header' => 'Други {{PLURAL:$1|блок|блокови}}',
+'unblock-hideuser' => 'Ðе можете деблокирати овог кориÑника јер је његово кориÑничко име Ñакривено.',
'ipb_cant_unblock' => 'Грешка: ID блока $1 није нађен.
Могуће је да је већ деблокиран.',
'ipb_blocked_as_range' => 'Грешка: IP $1 није директно блокиран и не може бити деблокиран.
@@ -2631,6 +2816,7 @@ $1 је већ блокиран. Да ли желите да промените
'lockfilenotwritable' => 'Датотека за закључавање базе није отворена за пиÑање.
Да биÑте закључали и откључали базу, датотека мора бити доÑтупна за пиÑање од Ñтране мрежног Ñервера.',
'databasenotlocked' => 'База података није закључана.',
+'lockedbyandtime' => '(од $1 дана $2 у $3)',
# Move page
'move-page' => 'Премештање „$1“',
@@ -2756,7 +2942,7 @@ $1 је већ блокиран. Да ли желите да промените
'allmessagesdefault' => 'Стандардни текÑÑ‚',
'allmessagescurrent' => 'ТекÑÑ‚ поруке',
'allmessagestext' => 'Ово је ÑпиÑак ÑиÑтемÑких порука доÑтупних у именÑком проÑтору Медијавикија.
-ПоÑетите [http://translatewiki.net TranslateWiki] уколико желите да помогнете у превођењу.',
+ПоÑетите [//translatewiki.net TranslateWiki] уколико желите да помогнете у превођењу.',
'allmessagesnotsupportedDB' => "Ова Ñтраница не може бити употребљена зато што је '''\$wgUseDatabaseMessages''' иÑкључен.",
'allmessages-filter-legend' => 'Филтер',
'allmessages-filter' => 'Филтрирај по Ñтању:',
@@ -2896,35 +3082,42 @@ $1 је већ блокиран. Да ли желите да промените
'tooltip-summary' => 'УнеÑите кратак опиÑ',
# Stylesheets
-'common.css' => '/** CSS поÑтављен овде ће Ñе одразити на Ñве теме */',
-'standard.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „Стандардно“ */',
-'nostalgia.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „ÐоÑталгија“ */',
-'cologneblue.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „КелнÑко плава“ */',
-'monobook.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „Монобук“ */',
-'myskin.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „Моја тема“ */',
-'chick.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „Шик“ */',
-'simple.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „ПроÑто“ */',
-'modern.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „Савремено“ */',
-'vector.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „ВекторÑко“ */',
-'print.css' => '/* CSS поÑтављен овде ће утицати на издање за штампу */',
-'handheld.css' => '/* CSS поÑтављен овде ће утицати на ручне уређаје Ñ Ñ‚ÐµÐ¼Ð¾Ð¼ прилагођеном у $wgHandheldStyle */',
+'common.css' => '/** CSS поÑтављен овде ће Ñе одразити на Ñве теме */',
+'standard.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „Стандардно“ */',
+'nostalgia.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „ÐоÑталгија“ */',
+'cologneblue.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „КелнÑко плава“ */',
+'monobook.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „Монобук“ */',
+'myskin.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „Моја тема“ */',
+'chick.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „Шик“ */',
+'simple.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „ПроÑто“ */',
+'modern.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „Савремено“ */',
+'vector.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике теме „ВекторÑко“ */',
+'print.css' => '/* CSS поÑтављен овде ће утицати на издање за штампу */',
+'handheld.css' => '/* CSS поÑтављен овде ће утицати на ручне уређаје Ñ Ñ‚ÐµÐ¼Ð¾Ð¼ прилагођеном у $wgHandheldStyle */',
+'noscript.css' => '/* CSS поÑтављен овде ће утицати на Ñве кориÑнике којима је онемогућен јаваÑкрипт */',
+'group-autoconfirmed.css' => '/* CSS поÑтављен овде ће утицати на Ñамопотврђене кориÑнике */',
+'group-bot.css' => '/* CSS поÑтављен овде ће утицати Ñамо на ботове */',
+'group-sysop.css' => '/* CSS поÑтављен овде ће утицати Ñамо на ÑиÑтемÑке операторе */',
+'group-bureaucrat.css' => '/* CSS поÑтављен овде ће утицати Ñамо на бирократе */',
# Scripts
-'common.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе кориÑтити за Ñве кориÑнике при отварању Ñваке Ñтранице. */',
-'standard.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „Стандардно“ */',
-'nostalgia.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „ÐоÑталгија“ */',
-'cologneblue.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „КелнÑко плава“ */',
-'monobook.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „Монобук“ */',
-'myskin.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте „Моју тему“ */',
-'chick.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „Шик“ */',
-'simple.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „ПроÑто“ */',
-'modern.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „Савремено“ */',
-'vector.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „ВекторÑко“ */',
+'common.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе кориÑтити за Ñве кориÑнике при отварању Ñваке Ñтранице. */',
+'standard.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „Стандардно“ */',
+'nostalgia.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „ÐоÑталгија“ */',
+'cologneblue.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „КелнÑко плава“ */',
+'monobook.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „Монобук“ */',
+'myskin.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте „Моју тему“ */',
+'chick.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „Шик“ */',
+'simple.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „ПроÑто“ */',
+'modern.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „Савремено“ */',
+'vector.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñве оне који кориÑте тему „ВекторÑко“ */',
+'group-autoconfirmed.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати за Ñамопотврђене кориÑнике */',
+'group-bot.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати Ñамо за ботове */',
+'group-sysop.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати Ñамо за ÑиÑтемÑке операторе */',
+'group-bureaucrat.js' => '/* ЈаваÑкрипт поÑтављен овде ће Ñе учитати Ñамо за бирократе */',
# Metadata
-'nodublincore' => 'Dublin Core RDF метаподаци онемогућени за овај Ñервер.',
-'nocreativecommons' => 'Creative Commons RDF метаподаци онемогућени за овај Ñервер.',
-'notacceptable' => 'Вики Ñервер не може да пружи податке у оном формату који ваш клијент може да прочита.',
+'notacceptable' => 'Вики Ñервер не може да пружи податке у оном формату који ваш клијент може да прочита.',
# Attribution
'anonymous' => 'Ðнонимни {{PLURAL:$1|кориÑник|кориÑници}} на {{SITENAME}}',
@@ -2948,12 +3141,17 @@ $1 је већ блокиран. Да ли желите да промените
'spam_blanking' => 'Све измене које Ñадрже везе до $1, бришем',
# Info page
-'infosubtitle' => 'Подаци о Ñтраници',
-'numedits' => 'Број промена (чланак): $1',
-'numtalkedits' => 'Број промена (Ñтраница за разговор): $1',
-'numwatchers' => 'Број кориÑника који надгледају: $1',
-'numauthors' => 'Број различитих аутора (чланак): $1',
-'numtalkauthors' => 'Број различитих аутора (Ñтраница за разговор): $1',
+'pageinfo-title' => 'Подаци о „$1“',
+'pageinfo-header-edits' => 'Измена',
+'pageinfo-header-watchlist' => 'СпиÑак надгледања',
+'pageinfo-header-views' => 'Прегледа',
+'pageinfo-subjectpage' => 'Страница',
+'pageinfo-talkpage' => 'Страница за разговор',
+'pageinfo-watchers' => 'Број прегледача',
+'pageinfo-edits' => 'Број измена',
+'pageinfo-authors' => 'Број различитих аутора',
+'pageinfo-views' => 'Број прегледа',
+'pageinfo-viewsperedit' => 'Прегледа по измени',
# Skin names
'skinname-standard' => 'КлаÑично',
@@ -2966,25 +3164,6 @@ $1 је већ блокиран. Да ли желите да промените
'skinname-modern' => 'Савремено',
'skinname-vector' => 'ВекторÑко',
-# Math options
-'mw_math_png' => 'Увек прикажи као PNG',
-'mw_math_simple' => 'Ðко је једноÑтавно – HTML, иначе PNG',
-'mw_math_html' => 'Ðко је могуће – HTML, иначе PNG',
-'mw_math_source' => 'ОÑтави у формату ТеХ (за текÑтуалне прегледаче)',
-'mw_math_modern' => 'Препоручено за Ñавремене прегледаче',
-'mw_math_mathml' => 'Ðко је могуће, MathML (пробна фаза)',
-
-# Math errors
-'math_failure' => 'Рашчлањивање није уÑпело',
-'math_unknown_error' => 'непозната грешка',
-'math_unknown_function' => 'непозната функција',
-'math_lexing_error' => 'речничка грешка',
-'math_syntax_error' => 'ÑинтакÑна грешка',
-'math_image_error' => 'Претварање у формат PNG није уÑпело. Проверите да ли Ñу добро инÑталирани latex, dvips, gs и convert',
-'math_bad_tmpdir' => 'Стварање или пиÑање у привремену фаÑциклу за математику није уÑпело',
-'math_bad_output' => 'Стварање или пиÑање у одредишној фаÑцикли за математику није уÑпело',
-'math_notexvc' => 'ÐедоÑтаје извршна датотека texvc-а. Погледајте math/README за подешавање.',
-
# Patrolling
'markaspatrolleddiff' => 'Означи као патролиран',
'markaspatrolledtext' => 'Означи овај чланак као патролиран',
@@ -3020,23 +3199,26 @@ $1',
'nextdiff' => 'Ðовија измена →',
# Media information
-'mediawarning' => "'''Упозорење''': ова врÑта датотеке може Ñадржати штетан код.
+'mediawarning' => "'''Упозорење''': ова врÑта датотеке може Ñадржати штетан код.
Ðко га покренете, ваш рачунар може бити угрожен.",
-'imagemaxsize' => "Ограничење величине Ñлике:<br />''(на Ñтраницама за Ð¾Ð¿Ð¸Ñ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°)''",
-'thumbsize' => 'Величина умањеног приказа :',
-'widthheight' => '$1×$2',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Ñтраница|Ñтранице|Ñтраница}}',
-'file-info' => 'величина: $1, MIME тип: $2',
-'file-info-size' => '$1×$2 пикÑела, величина: $3, MIME тип: $4',
-'file-nohires' => '<small>Ðије доÑтупна већа величина.</small>',
-'svg-long-desc' => 'SVG датотека, номинално $1×$2 тачака, величина: $3',
-'show-big-image' => 'Пуна величина',
-'show-big-image-thumb' => '<small>Величина овог приказа: $1×$2 пикÑела</small>',
-'file-info-gif-looped' => 'петља',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|кадар|кадра|кадрова}}',
-'file-info-png-looped' => 'петља',
-'file-info-png-repeat' => 'поновљено $1 {{PLURAL:$1|пут|пута|пута}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|кадар|кадра|кадрова}}',
+'imagemaxsize' => "Ограничење величине Ñлике:<br />''(на Ñтраницама за Ð¾Ð¿Ð¸Ñ Ð´Ð°Ñ‚Ð¾Ñ‚ÐµÐºÐ°)''",
+'thumbsize' => 'Величина умањеног приказа :',
+'widthheight' => '$1×$2',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Ñтраница|Ñтранице|Ñтраница}}',
+'file-info' => 'величина: $1, MIME тип: $2',
+'file-info-size' => '$1×$2 пикÑела, величина: $3, MIME тип: $4',
+'file-info-size-pages' => '$1 × $2 пикÑела, величина: $3, MIME врÑта: $4, $5 {{PLURAL:$5|Ñтраница|Ñтранице|Ñтраница}}',
+'file-nohires' => '<small>Ðије доÑтупна већа величина.</small>',
+'svg-long-desc' => 'SVG датотека, номинално $1×$2 тачака, величина: $3',
+'show-big-image' => 'Пуна величина',
+'show-big-image-preview' => '<small>Величина овог приказа: $1.</small>',
+'show-big-image-other' => '<small>ОÑтале величине: $1.</small>',
+'show-big-image-size' => '$1×$2 пикÑела',
+'file-info-gif-looped' => 'петља',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|кадар|кадра|кадрова}}',
+'file-info-png-looped' => 'петља',
+'file-info-png-repeat' => 'поновљено $1 {{PLURAL:$1|пут|пута|пута}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|кадар|кадра|кадрова}}',
# Special:NewFiles
'newimages' => 'Галерија нових Ñлика',
@@ -3105,20 +3287,33 @@ Variants for Chinese language
'variantname-tg-latn' => 'tg-Latn',
'variantname-tg' => 'tg',
+# Variants for Inuktitut language
+'variantname-ike-cans' => 'ike-Cans',
+'variantname-ike-latn' => 'ike-Latn',
+'variantname-iu' => 'iu',
+
# Metadata
-'metadata' => 'Метаподаци',
-'metadata-help' => 'Ова датотека Ñадржи додатне податке који вероватно долазе од дигигалних фотоапарата или Ñкенера.
+'metadata' => 'Метаподаци',
+'metadata-help' => 'Ова датотека Ñадржи додатне податке који вероватно долазе од дигигалних фотоапарата или Ñкенера.
Ðко је првобитно Ñтање датотеке промењено, могуће је да неки детаљи не опиÑују измењену датотеку.',
-'metadata-expand' => 'Прикажи детаље',
-'metadata-collapse' => 'Сакриј детаље',
-'metadata-fields' => 'Поља EXIF метаподатака наведена у овој поруци ће бити убачена на Ñтрану о Ñлици када Ñе рашири табела за метаподатке. ОÑтала ће бити Ñакривена по подразумеваном.
+'metadata-expand' => 'Прикажи детаље',
+'metadata-collapse' => 'Сакриј детаље',
+'metadata-fields' => 'Поља за метаподатке Ñлике наведена у овој поруци ће бити укључена на Ñтраници за Ñлике када Ñе Ñкупи табела метаподатака. ОÑтала поља ће бити Ñакривена по подразумеваним поÑтавкама.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+'metadata-langitem' => "'''$2:''' $1",
+'metadata-langitem-default' => '$1',
# EXIF tags
'exif-imagewidth' => 'Ширина',
@@ -3133,13 +3328,11 @@ Variants for Chinese language
'exif-ycbcrpositioning' => 'Размештај компонената Y и C',
'exif-xresolution' => 'Хоризонатална резолуција',
'exif-yresolution' => 'Вертикална резолуција',
-'exif-resolutionunit' => 'Јединица резолуције',
'exif-stripoffsets' => 'Положај блока података',
'exif-rowsperstrip' => 'Број редова по линији',
'exif-stripbytecounts' => 'Величина компреÑованог блока',
'exif-jpeginterchangeformat' => 'Почетак JPEG прегледа',
'exif-jpeginterchangeformatlength' => 'Бајтови JPEG података',
-'exif-transferfunction' => 'Функција преобликовања колор проÑтора',
'exif-whitepoint' => 'Хромацитет беле тачке',
'exif-primarychromaticities' => 'Хромацитет примарних боја',
'exif-ycbcrcoefficients' => 'Матрични коефицијенти транÑформације колор проÑтора',
@@ -3158,7 +3351,6 @@ Variants for Chinese language
'exif-compressedbitsperpixel' => 'Мод компреÑије Ñлике',
'exif-pixelydimension' => 'Ширина Ñлике',
'exif-pixelxdimension' => 'ВиÑина Ñлике',
-'exif-makernote' => 'Ðапомене произвођача',
'exif-usercomment' => 'КориÑнички коментар',
'exif-relatedsoundfile' => 'Повезани звучни запиÑ',
'exif-datetimeoriginal' => 'Датум и време Ñликања',
@@ -3173,7 +3365,6 @@ Variants for Chinese language
'exif-exposureprogram' => 'Програм екÑпозиције',
'exif-spectralsensitivity' => 'Спектрална оÑетљивоÑÑ‚',
'exif-isospeedratings' => 'ИСО вредноÑÑ‚',
-'exif-oecf' => 'ОптоелектронÑки фактор конверзије',
'exif-shutterspeedvalue' => 'Брзина затварача',
'exif-aperturevalue' => 'Отвор бленде',
'exif-brightnessvalue' => 'ОÑветљеноÑÑ‚',
@@ -3187,7 +3378,6 @@ Variants for Chinese language
'exif-focallength-format' => '$1 мм',
'exif-subjectarea' => 'Положај и површина објекта Ñнимка',
'exif-flashenergy' => 'Енергија блица',
-'exif-spatialfrequencyresponse' => 'ПроÑторна фреквенцијÑка карактериÑтика',
'exif-focalplanexresolution' => 'Водоравна резолуција фокуÑне равни',
'exif-focalplaneyresolution' => 'Хоризонатлна резолуција фокуÑне равни',
'exif-focalplaneresolutionunit' => 'Јединица резолуције фокуÑне равни',
@@ -3196,7 +3386,6 @@ Variants for Chinese language
'exif-sensingmethod' => 'Тип Ñензора',
'exif-filesource' => 'Изворна датотека',
'exif-scenetype' => 'Тип Ñцене',
-'exif-cfapattern' => 'CFA шаблон',
'exif-customrendered' => 'Прилагођена обрада Ñлика',
'exif-exposuremode' => 'Режим екÑпозиције',
'exif-whitebalance' => 'Ð‘Ð°Ð»Ð°Ð½Ñ Ð±ÐµÐ»Ðµ боје',
@@ -3241,11 +3430,99 @@ Variants for Chinese language
'exif-gpsareainformation' => 'Име GPS подручја',
'exif-gpsdatestamp' => 'GPS датум',
'exif-gpsdifferential' => 'GPS диференцијална иÑправка',
+'exif-coordinate-format' => '$1° $2′ $3″ $4',
+'exif-jpegfilecomment' => 'Коментар на датотеку JPEG',
+'exif-keywords' => 'Кључне речи',
+'exif-worldregioncreated' => 'ОблаÑÑ‚ Ñвета где је Ñликана фотографија',
+'exif-countrycreated' => 'Земља где је Ñликана фотографија',
+'exif-countrycodecreated' => 'Код земље где је Ñлика направљена',
+'exif-provinceorstatecreated' => 'Покрајина или држава где је Ñликана фотографија',
+'exif-citycreated' => 'Град где је Ñликана фотографија',
+'exif-sublocationcreated' => 'ОблаÑÑ‚ града где је Ñликана фотографија',
+'exif-worldregiondest' => 'Приказана облаÑÑ‚ Ñвета',
+'exif-countrydest' => 'Приказана земља',
+'exif-countrycodedest' => 'Код приказане земље',
+'exif-provinceorstatedest' => 'Приказана покрајина или држава',
+'exif-citydest' => 'Приказани град',
+'exif-sublocationdest' => 'Приказана облаÑÑ‚ града',
'exif-objectname' => 'Кратак наÑлов',
+'exif-specialinstructions' => 'ПоÑебна упутÑтва',
+'exif-headline' => 'ÐаÑлов',
+'exif-credit' => 'ЗаÑлуге/пружалац уÑлуга',
+'exif-source' => 'Извор',
+'exif-editstatus' => 'Уреднички ÑÑ‚Ð°Ñ‚ÑƒÑ Ñлике',
+'exif-urgency' => 'ХитноÑÑ‚',
+'exif-fixtureidentifier' => 'Ðазив рубрике',
+'exif-locationdest' => 'Приказана локација',
+'exif-locationdestcode' => 'Код приказаног меÑта',
+'exif-objectcycle' => 'Доба дана за који је медиј намењен',
+'exif-contact' => 'Подаци за контакт',
+'exif-writer' => 'ПиÑац',
+'exif-languagecode' => 'Језик',
+'exif-iimversion' => 'IIM издање',
+'exif-iimcategory' => 'Категорија',
+'exif-iimsupplementalcategory' => 'ДопунÑке категорије',
+'exif-datetimeexpires' => 'Ðе кориÑти након',
+'exif-datetimereleased' => 'Објављено',
+'exif-originaltransmissionref' => 'Изворни Ð¿Ñ€ÐµÐ½Ð¾Ñ ÐºÃ´Ð´Ð° локације',
+'exif-identifier' => 'Ознака',
+'exif-lens' => 'Коришћени објектив',
+'exif-serialnumber' => 'СеријÑки број камере',
+'exif-cameraownername' => 'ВлаÑник камере',
+'exif-label' => 'Ðазив',
+'exif-datetimemetadata' => 'Датум поÑледње измене метаподатака',
+'exif-nickname' => 'Ðеформалан назив Ñлике',
+'exif-rating' => 'Оцена (од 1 до 5)',
+'exif-rightscertificate' => 'Потврда за управљање правима',
+'exif-copyrighted' => 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð°ÑƒÑ‚Ð¾Ñ€Ñког права',
+'exif-copyrightowner' => 'ÐоÑилац ауторÑког права',
+'exif-usageterms' => 'Правила коришћења',
+'exif-webstatement' => 'Изјава о ауторÑком праву',
+'exif-originaldocumentid' => 'ЈединÑтвени ИБ изворног документа',
+'exif-licenseurl' => 'ÐдреÑа лиценце за ауторÑка права',
+'exif-morepermissionsurl' => 'Резервни подаци о лиценцирању',
+'exif-attributionurl' => 'При поновном коришћењу овог рада, кориÑтите везу до',
+'exif-preferredattributionname' => 'При поновном коришћењу овог рада, поÑтавите заÑлуге',
+'exif-pngfilecomment' => 'Коментар на датотеку PNG',
+'exif-disclaimer' => 'Одрицање одговорноÑти',
+'exif-contentwarning' => 'Упозорење о Ñадржају',
+'exif-giffilecomment' => 'Коментар на датотеку GIF',
+'exif-intellectualgenre' => 'Ð’Ñ€Ñта Ñтавке',
+'exif-subjectnewscode' => 'Код предмета',
+'exif-scenecode' => 'IPTC код Ñцене',
+'exif-event' => 'Приказани догађај',
+'exif-organisationinimage' => 'Приказана организација',
+'exif-personinimage' => 'Приказана оÑоба',
+'exif-originalimageheight' => 'ВиÑина Ñлике пре иÑецања',
+'exif-originalimagewidth' => 'Ширина Ñлике пре иÑецања',
+
+# Make & model, can be wikified in order to link to the camera and model name
+'exif-contact-value' => '$1
+
+$2
+<div class="adr">
+$3
+
+$4, $5, $6 $7
+</div>
+$8',
+'exif-subjectnewscode-value' => '$2 ($1)',
# EXIF attributes
-'exif-compression-1' => 'ÐеÑажето',
-'exif-compression-6' => 'JPEG',
+'exif-compression-1' => 'ÐеÑажето',
+'exif-compression-2' => 'CCITT Group 3 1 – Димензионално измењено Хафманово кодирање по дужини',
+'exif-compression-3' => 'CCITT Group 3 Ñ„Ð°ÐºÑ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÐµ',
+'exif-compression-4' => 'CCITT Group 4 Ñ„Ð°ÐºÑ ÐºÐ¾Ð´Ð¸Ñ€Ð°ÑšÐµ',
+'exif-compression-5' => 'LZW',
+'exif-compression-6' => 'JPEG (Ñтари)',
+'exif-compression-7' => 'JPEG',
+'exif-compression-8' => 'Deflate (Ðдоби)',
+'exif-compression-32773' => 'PackBits (Макинтош RLE)',
+'exif-compression-32946' => 'Deflate (PKZIP)',
+'exif-compression-34712' => 'JPEG2000',
+
+'exif-copyrighted-true' => 'Заштићено ауторÑким правом',
+'exif-copyrighted-false' => 'Јавно влаÑништво',
'exif-photometricinterpretation-2' => 'RGB',
'exif-photometricinterpretation-6' => 'YCbCr',
@@ -3267,7 +3544,8 @@ Variants for Chinese language
'exif-xyresolution-i' => '$1 тпи',
'exif-xyresolution-c' => '$1 тпц',
-'exif-colorspace-1' => 'sRGB',
+'exif-colorspace-1' => 'sRGB',
+'exif-colorspace-65535' => 'Дештеловано',
'exif-componentsconfiguration-0' => 'не поÑтоји',
'exif-componentsconfiguration-1' => 'Y',
@@ -3392,6 +3670,10 @@ Variants for Chinese language
'exif-gpslongitude-e' => 'ИÑток',
'exif-gpslongitude-w' => 'Запад',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|метар|метра|метара}} надморÑке виÑине',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|метар|метра|метара}} иÑпод нивоа мора',
+
'exif-gpsstatus-a' => 'Мерење у току',
'exif-gpsstatus-v' => 'Спреман за преноÑ',
@@ -3403,21 +3685,75 @@ Variants for Chinese language
'exif-gpsspeed-m' => 'Миље на чаÑ',
'exif-gpsspeed-n' => 'Чворови',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Километара',
+'exif-gpsdestdistance-m' => 'Миља',
+'exif-gpsdestdistance-n' => 'Ðаутичких миља',
+
+'exif-gpsdop-excellent' => 'Одлично ($1)',
+'exif-gpsdop-good' => 'Добро ($1)',
+'exif-gpsdop-moderate' => 'Умерено ($1)',
+'exif-gpsdop-fair' => 'Задовољавајуће ($1)',
+'exif-gpsdop-poor' => 'Лоше ($1)',
+
+'exif-objectcycle-a' => 'Само ујутру',
+'exif-objectcycle-p' => 'Само увече',
+'exif-objectcycle-b' => 'И ујутру и увече',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Прави правац',
'exif-gpsdirection-m' => 'Магнетни правац',
+'exif-ycbcrpositioning-1' => 'Центрирано',
+'exif-ycbcrpositioning-2' => 'Упоредо',
+
+'exif-dc-contributor' => 'ДоприноÑиоци',
+'exif-dc-coverage' => 'ПроÑторни или временÑки опÑег медија',
+'exif-dc-date' => 'Датум',
+'exif-dc-publisher' => 'Издавач',
+'exif-dc-relation' => 'Сродни медији',
+'exif-dc-rights' => 'Права',
+'exif-dc-source' => 'Извор медија',
+'exif-dc-type' => 'Ð’Ñ€Ñта медија',
+
+'exif-rating-rejected' => 'Одбијено',
+
+'exif-isospeedratings-overflow' => 'Веће од 65535',
+
+'exif-maxaperturevalue-value' => '$1 APEX (f/$2)',
+
+'exif-iimcategory-ace' => 'УметноÑÑ‚, култура и забава',
+'exif-iimcategory-clj' => 'Криминал и закон',
+'exif-iimcategory-dis' => 'КатаÑтрофе и неÑреће',
+'exif-iimcategory-fin' => 'Економија и поÑао',
+'exif-iimcategory-edu' => 'Образовање',
+'exif-iimcategory-evn' => 'Околина',
+'exif-iimcategory-hth' => 'Здравље',
+'exif-iimcategory-hum' => 'Занимање',
+'exif-iimcategory-lab' => 'Рад',
+'exif-iimcategory-lif' => 'Ðачин живота и Ñлободно време',
+'exif-iimcategory-pol' => 'Политика',
+'exif-iimcategory-rel' => 'Религија и веровања',
+'exif-iimcategory-sci' => 'Ðаука и технологија',
+'exif-iimcategory-soi' => 'Друштвена питања',
+'exif-iimcategory-spo' => 'Спорт',
+'exif-iimcategory-war' => 'Рат, Ñукоби и немири',
+'exif-iimcategory-wea' => 'Време',
+
+'exif-urgency-normal' => 'Ðормално ($1)',
+'exif-urgency-low' => 'ÐиÑко ($1)',
+'exif-urgency-high' => 'ВиÑоко ($1)',
+'exif-urgency-other' => 'Прилагођени приоритет ($1)',
+
# External editor support
'edit-externally' => 'Измени ову датотеку кориÑтећи Ñпољашњи програм',
-'edit-externally-help' => '(Погледајте [http://www.mediawiki.org/wiki/Manual:External_editors упутÑтво за подешавање] за више информација)',
+'edit-externally-help' => '(Погледајте [//www.mediawiki.org/wiki/Manual:External_editors упутÑтво за подешавање] за више информација)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Ñве',
-'imagelistall' => 'Ñве',
-'watchlistall2' => 'Ñве',
-'namespacesall' => 'Ñви',
-'monthsall' => 'Ñве',
-'limitall' => 'Ñве',
+'watchlistall2' => 'Ñве',
+'namespacesall' => 'Ñви',
+'monthsall' => 'Ñве',
+'limitall' => 'Ñве',
# E-mail address confirmation
'confirmemail' => 'Потврда е-адреÑе',
@@ -3495,11 +3831,12 @@ $1',
'trackbackdeleteok' => 'Повратна тачка је уÑпешно обриÑана.',
# Delete conflict
-'deletedwhileediting' => "'''Упозорење''': ова Ñтраница је обриÑана након што Ñте почели Ñ ÑƒÑ€ÐµÑ’Ð¸Ð²Ð°ÑšÐµÐ¼!",
-'confirmrecreate' => "[[User:$1|$1]] ([[User talk:$1|разговор]]) {{GENDER:$1|је обриÑао|је обриÑала|обриÑа}} ову Ñтраницу након што Ñте почели да је уређујете, Ñа Ñледећим разлогом:
+'deletedwhileediting' => "'''Упозорење''': ова Ñтраница је обриÑана након што Ñте почели Ñ ÑƒÑ€ÐµÑ’Ð¸Ð²Ð°ÑšÐµÐ¼!",
+'confirmrecreate' => "[[User:$1|$1]] ([[User talk:$1|разговор]]) {{GENDER:$1|је обриÑао|је обриÑала|обриÑа}} ову Ñтраницу након што Ñте почели да је уређујете, Ñа Ñледећим разлогом:
: ''$2''
Потврдите да Ñтварно желите да направите Ñтраницу.",
-'recreate' => 'Поново направи',
+'confirmrecreate-noreason' => 'КориÑник [[User:$1|$1]] ([[User talk:$1|разговор]]) је обриÑао ову Ñтраницу након што Ñте почели да га уређујете. Потврдите да Ñтварно желите да поново направите ову Ñтраницу.',
+'recreate' => 'Поново направи',
'unit-pixel' => 'px',
@@ -3508,6 +3845,12 @@ $1',
'confirm-purge-top' => 'ОчиÑтити привремену меморију ове Ñтране?',
'confirm-purge-bottom' => 'Ова радња чиÑти привремену меморију и приказује најновију измену.',
+# action=watch/unwatch
+'confirm-watch-button' => 'У реду',
+'confirm-watch-top' => 'Додати ову Ñтраницу у ÑпиÑак надгледања?',
+'confirm-unwatch-button' => 'У реду',
+'confirm-unwatch-top' => 'Уклонити ову Ñтраницу Ñа ÑпиÑка надгледања?',
+
# Separators for various lists, etc.
'semicolon-separator' => ';&#32;',
'comma-separator' => ',&#32;',
@@ -3568,7 +3911,7 @@ $1',
'watchlistedit-normal-legend' => 'Уклањање наÑлова Ñа ÑпиÑка надгледања',
'watchlistedit-normal-explain' => 'ÐаÑлови на вашем ÑпиÑку надгледања Ñу приказани иÑпод.
Да биÑте уклонили наÑлов, означите кућицу до њега и кликните на „{{int:Watchlistedit-normal-submit}}“.
-Можете и да [[Special:Watchlist/raw|измените Ñиров ÑпиÑак]].',
+Можете и да [[Special:EditWatchlist/raw|измените Ñиров ÑпиÑак]].',
'watchlistedit-normal-submit' => 'Уклони наÑлове',
'watchlistedit-normal-done' => '{{PLURAL:$1|Једна Ñтраница је уклоњена|$1 Ñтранице Ñу уклоњене|$1 Ñтраница је уклоњено}} Ñ Ð²Ð°ÑˆÐµÐ³ ÑпиÑка надгледања:',
'watchlistedit-raw-title' => 'Ðапредно уређивање ÑпиÑка надгледања',
@@ -3576,7 +3919,7 @@ $1',
'watchlistedit-raw-explain' => 'ÐаÑлови Ñа ÑпиÑка надгледања Ñу приказани иÑпод и могу Ñе мењати додавањем или уклањањем;
УноÑите један наÑлов по линији.
Када завршите, кликните на „{{int:Watchlistedit-raw-submit}}“.
-Можете и да [[Special:Watchlist/edit|кориÑтите Ñтандардан уређивач ÑпиÑка]].',
+Можете и да [[Special:EditWatchlist|кориÑтите Ñтандардан уређивач ÑпиÑка]].',
'watchlistedit-raw-titles' => 'ÐаÑлови:',
'watchlistedit-raw-submit' => 'Ðжурирај ÑпиÑак',
'watchlistedit-raw-done' => 'Ваш ÑпиÑак надгледања је ажуриран.',
@@ -3654,34 +3997,35 @@ $1',
'duplicate-defaultsort' => "'''Упозорење:''' подразумевани кључ ÑврÑтавања „$2“ мења некадашњи кључ „$1“.",
# Special:Version
-'version' => 'Издање',
-'version-extensions' => 'ИнÑталирана проширења',
-'version-specialpages' => 'ПоÑебне Ñтранице',
-'version-parserhooks' => 'Куке рашчлањивача',
-'version-variables' => 'Променљиве',
-'version-skins' => 'Теме',
-'version-other' => 'ОÑтало',
-'version-mediahandlers' => 'Руководиоци медијима',
-'version-hooks' => 'Куке',
-'version-extension-functions' => 'Функције',
-'version-parser-extensiontags' => 'Ознаке',
-'version-parser-function-hooks' => 'Куке',
-'version-skin-extension-functions' => 'Функције прикључка теме',
-'version-hook-name' => 'Ðазив куке',
-'version-hook-subscribedby' => 'Пријављен од',
-'version-version' => '(издање $1)',
-'version-svn-revision' => '(изм. $2)',
-'version-license' => 'Лиценца',
-'version-poweredby-credits' => "Овај вики покреће '''[http://www.mediawiki.org/ Медијавики]''', ауторÑка права © 2001-$1 $2.",
-'version-poweredby-others' => 'оÑтали',
-'version-license-info' => 'Медијавики је Ñлободан Ñофтвер; можете га раÑподељивати и мењати под уÑловима ГÐУ-ове опште јавне лиценце (ОЈЛ) коју је објавила Задужбина за Ñлободан Ñофтвер, било да је у питању друго или новије издање лиценце.
+'version' => 'Издање',
+'version-extensions' => 'ИнÑталирана проширења',
+'version-specialpages' => 'ПоÑебне Ñтранице',
+'version-parserhooks' => 'Куке рашчлањивача',
+'version-variables' => 'Променљиве',
+'version-antispam' => 'Спречавање непожељних порука',
+'version-skins' => 'Теме',
+'version-api' => 'ÐПИ',
+'version-other' => 'ОÑтало',
+'version-mediahandlers' => 'Руководиоци медијима',
+'version-hooks' => 'Куке',
+'version-extension-functions' => 'Функције',
+'version-parser-extensiontags' => 'Ознаке',
+'version-parser-function-hooks' => 'Куке',
+'version-hook-name' => 'Ðазив куке',
+'version-hook-subscribedby' => 'Пријављен од',
+'version-version' => '(издање $1)',
+'version-svn-revision' => '(изм. $2)',
+'version-license' => 'Лиценца',
+'version-poweredby-credits' => "Овај вики покреће '''[//www.mediawiki.org/ Медијавики]''', ауторÑка права © 2001-$1 $2.",
+'version-poweredby-others' => 'оÑтали',
+'version-license-info' => 'Медијавики је Ñлободан Ñофтвер; можете га раÑподељивати и мењати под уÑловима ГÐУ-ове опште јавне лиценце (ОЈЛ) коју је објавила Задужбина за Ñлободан Ñофтвер, било да је у питању друго или новије издање лиценце.
Медијавики Ñе раÑподељује у нади да ће бити кориÑтан, али БЕЗ ИКÐКВЕ ГÐРÐÐЦИЈЕ; чак и без имплицитне гаранције о ПРОДÐЈИ или ПОГОДÐОСТИ ЗРОДРЕЂЕÐЕ ÐÐМЕÐЕ. Погледајте ГÐУ-ову општу јавну лиценцу за више детаља.
-Требало би да Ñте примили [{{SERVER}}{{SCRIPTPATH}}/COPYING примерак ГÐУ-ове опште јавне лиценце] заједно Ñ Ð¾Ð²Ð¸Ð¼ програмом. Ðко ниÑте, пишите Задужбини за Ñлободан Ñофтвер, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA или [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html прочитајте на мрежи].',
-'version-software' => 'ИнÑталиран Ñофтвер',
-'version-software-product' => 'Производ',
-'version-software-version' => 'Издање',
+Требало би да Ñте примили [{{SERVER}}{{SCRIPTPATH}}/COPYING примерак ГÐУ-ове опште јавне лиценце] заједно Ñ Ð¾Ð²Ð¸Ð¼ програмом. Ðко ниÑте, пишите Задужбини за Ñлободан Ñофтвер, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA или [//www.gnu.org/licenses/old-licenses/gpl-2.0.html прочитајте на мрежи].',
+'version-software' => 'ИнÑталиран Ñофтвер',
+'version-software-product' => 'Производ',
+'version-software-version' => 'Издање',
# Special:FilePath
'filepath' => 'Путања датотеке',
@@ -3691,22 +4035,22 @@ $1',
Слике Ñу приказане у пуној величини, а друге врÑте датотека Ñе покрећу помоћу њима придруженим програмима.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Претрага дупликата',
-'fileduplicatesearch-summary' => 'Тражење дупликата датотека према њихових вредноÑтима диÑперзије.
-
-УнеÑите назив датотеке без „{{ns:file}}:“ префикÑа.',
-'fileduplicatesearch-legend' => 'Претрага дупликата',
-'fileduplicatesearch-filename' => 'Ðазив датотеке:',
-'fileduplicatesearch-submit' => 'Претражи',
-'fileduplicatesearch-info' => '$1×$2 пикÑела<br />Величина: $3<br />MIME тип: $4',
-'fileduplicatesearch-result-1' => 'Датотека „$1“ нема идентичних дупликата.',
-'fileduplicatesearch-result-n' => 'Датотека „$1“ има {{PLURAL:$2|идентичан дупликат|$2 идентична дупликата|$2 идентичних дупликата}}.',
+'fileduplicatesearch' => 'Претрага дупликата',
+'fileduplicatesearch-summary' => 'Тражење дупликата датотека према њихових вредноÑтима диÑперзије.',
+'fileduplicatesearch-legend' => 'Претрага дупликата',
+'fileduplicatesearch-filename' => 'Ðазив датотеке:',
+'fileduplicatesearch-submit' => 'Претражи',
+'fileduplicatesearch-info' => '$1×$2 пикÑела<br />Величина: $3<br />MIME тип: $4',
+'fileduplicatesearch-result-1' => 'Датотека „$1“ нема идентичних дупликата.',
+'fileduplicatesearch-result-n' => 'Датотека „$1“ има {{PLURAL:$2|идентичан дупликат|$2 идентична дупликата|$2 идентичних дупликата}}.',
+'fileduplicatesearch-noresults' => 'Датотека под називом „$1“ није пронађена.',
# Special:SpecialPages
'specialpages' => 'ПоÑебне Ñтранице',
'specialpages-note' => '----
* обичне поÑебне Ñтранице
-* <strong class="mw-specialpagerestricted">ограничене поÑебне Ñтранице</strong>',
+* <span class="mw-specialpagerestricted">ограничене поÑебне Ñтранице</span>
+* <span class="mw-specialpagecached">привремено мемориÑане поÑебне Ñтранице</span>',
'specialpages-group-maintenance' => 'Извештаји одржавања',
'specialpages-group-other' => 'ОÑтале поÑебне Ñтранице',
'specialpages-group-login' => 'Отварање налога и пријављивање',
@@ -3735,11 +4079,11 @@ $1',
#Додајте Ñве одломке регуларних израза изнад овог реда. Овај ред не дирајте</pre>',
# Special:Tags
-'tags' => 'Дозвољене ознаке измена',
+'tags' => 'Важеће ознаке измена',
'tag-filter' => 'Филтер за [[Special:Tags|ознаке]]:',
'tag-filter-submit' => 'Филтрирај',
'tags-title' => 'Ознаке',
-'tags-intro' => 'СпиÑак и значење ознака којима Ñофтвер може да означи неку измену.',
+'tags-intro' => 'Ðа овој Ñтраници је наведен ÑпиÑак ознака Ñ ÐºÐ¾Ñ˜Ð¸Ð¼Ð° програм може да означи измене и његово значење.',
'tags-tag' => 'Ðазив ознаке',
'tags-display-header' => 'Изглед на ÑпиÑковима измена',
'tags-description-header' => 'ÐžÐ¿Ð¸Ñ Ð·Ð½Ð°Ñ‡ÐµÑšÐ°',
@@ -3757,10 +4101,10 @@ $1',
'compare-submit' => 'Упореди',
# Database error messages
-'dberr-header' => 'Овај вики има проблем',
+'dberr-header' => 'Овај вики не ради како треба',
'dberr-problems' => 'Дошло је до техничких проблема.',
'dberr-again' => 'Сачекајте неколико минута пре него што поново учитате Ñтраницу.',
-'dberr-info' => '(приÑтуп Ñерверу базе података није уÑпоÑтављен: $1)',
+'dberr-info' => '(не могу да Ñе повежем Ñа Ñервером базе: $1)',
'dberr-usegoogle' => 'У међувремену, покушајте да претражите помоћу Гугла.',
'dberr-outofdate' => 'Имајте на уму да њихови примерци нашег Ñадржаја могу бити заÑтарели.',
'dberr-cachederror' => 'Ово је привремено мемориÑан примерак Ñтране који можда није ажуран.',
@@ -3772,13 +4116,13 @@ $1',
'htmlform-float-invalid' => 'Ðаведена вредноÑÑ‚ није број.',
'htmlform-int-toolow' => 'Ðаведена вредноÑÑ‚ је иÑпод минимума од $1',
'htmlform-int-toohigh' => 'Ðаведена вредноÑÑ‚ је изнад макÑимума од $1',
-'htmlform-required' => 'Ова вредноÑÑ‚ Ñе мора навеÑти',
+'htmlform-required' => 'Ова вредноÑÑ‚ је обавезна',
'htmlform-submit' => 'Пошаљи',
'htmlform-reset' => 'Врати измене',
'htmlform-selectorother-other' => 'Друго',
# SQLite database support
-'sqlite-has-fts' => '$1 Ñ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐ¾Ð¼ претраге пуног текÑта',
-'sqlite-no-fts' => '$1 без подршке претраге пуног текÑта',
+'sqlite-has-fts' => '$1 Ñ Ð¿Ð¾Ð´Ñ€ÑˆÐºÐ¾Ð¼ претраге целог текÑта',
+'sqlite-no-fts' => '$1 без подршке претраге целог текÑта',
);
diff --git a/languages/messages/MessagesSr_el.php b/languages/messages/MessagesSr_el.php
index be4b162e..acbaf658 100644
--- a/languages/messages/MessagesSr_el.php
+++ b/languages/messages/MessagesSr_el.php
@@ -340,14 +340,7 @@ $messages = array(
'listingcontinuesabbrev' => 'nast.',
'index-category' => 'Indeksirane stranice',
'noindex-category' => 'Neindeksirane stranice',
-
-'mainpagetext' => "'''MedijaViki je uspešno instaliran.'''",
-'mainpagedocfooter' => 'Molimo vidite [http://meta.wikimedia.org/wiki/Help:Contents korisniÄki vodiÄ] za informacije o upotrebi viki softvera.
-
-== Za poÄetak ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Pomoć u vezi sa podešavanjima]
-* [http://www.mediawiki.org/wiki/Manual:FAQ NajÄešće postavljena pitanja]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mejling lista o izdanjima MedijaVikija]',
+'broken-file-category' => 'Stranice s neispravnim vezama do datoteka',
'about' => 'O...',
'article' => 'ÄŒlanak',
@@ -399,10 +392,10 @@ $messages = array(
'history' => 'Istorija stranice',
'history_short' => 'istorija',
'updatedmarker' => 'ažurirano od moje poslednje posete',
-'info_short' => 'Informacije',
'printableversion' => 'Verzija za Å¡tampu',
'permalink' => 'Permalink',
'print' => 'Å tampa',
+'view' => 'Pogledaj',
'edit' => 'Uredi',
'create' => 'Napravi',
'editthispage' => 'Uredi ovu stranicu',
@@ -410,6 +403,7 @@ $messages = array(
'delete' => 'obriši',
'deletethispage' => 'Obriši ovu stranicu',
'undelete_short' => 'vrati {{PLURAL:$1|jednu obrisanu izmenu|$1 obrisane izmene|$1 obrisanih izmena}}',
+'viewdeleted_short' => 'Pogledaj {{PLURAL:$1|obrisanu izmenu|$1 obrisane izmene|$1 obrisanih izmena}}',
'protect' => 'zaštiti',
'protect_change' => 'izmeni',
'protectthispage' => 'Zaštiti ovu stranicu',
@@ -494,6 +488,8 @@ Pogledajte stranicu za [[Special:Version|izdanje]].',
'toc' => 'Sadržaj',
'showtoc' => 'prikaži',
'hidetoc' => 'sakrij',
+'collapsible-collapse' => 'Skupi',
+'collapsible-expand' => 'Proširi',
'thisisdeleted' => 'Pogledaj ili vrati $1?',
'viewdeleted' => 'Pogledaj $1?',
'restorelink' => '{{PLURAL:$1|jedna obrisana izmena|$1 obrisane izmene|$1 obrisanih izmena}}',
@@ -506,6 +502,8 @@ Pogledajte stranicu za [[Special:Version|izdanje]].',
'page-atom-feed' => '"$1" Atom fid',
'feed-atom' => 'Atom',
'red-link-title' => '$1 (stranica ne postoji)',
+'sort-descending' => 'Poređaj opadajuće',
+'sort-ascending' => 'Poređaj rastuće',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'ÄŒlanak',
@@ -593,12 +591,13 @@ Pretraga: $2',
'protectedinterface' => 'Ova stranica pruža tekst interfejsa za softver i zakljuÄana je kako bi se spreÄila zloupotreba.',
'editinginterface' => "'''Upozorenje:''' Uređujete stranu koja se koristi da pruži tekst za interfejs ovog softvera.
Izmene na ovoj strani će uticati na prikaz izgleda korisniÄkog interfejsa za sve korisnike.
-Za prevode, posetite [http://translatewiki.net/wiki/Main_Page?setlang=sr_ec translatewiki.net], projekat lokalizacije MedijaViki softvera.",
+Za prevode, posetite [//translatewiki.net/wiki/Main_Page?setlang=sr_ec translatewiki.net], projekat lokalizacije MedijaViki softvera.",
'sqlhidden' => '(SQL pretraga sakrivena)',
'cascadeprotected' => 'Ova stranica je zakljuÄana i njeno ureÄ‘ivanje je onemogućeno jer je ukljuÄena u sadržaj {{PLURAL:$1|sledeće stranice|sledećih stranica}}, koji je zaÅ¡tićen sa opcijom „prenosive“ zaÅ¡tite:
$2',
'namespaceprotected' => "Nemate ovlašćenja da uređujete stranice u '''$1''' imenskom prostoru.",
-'customcssjsprotected' => 'Nemate ovlašćenja da ureÄ‘ujete ovu stranicu jer sadrži liÄna podeÅ¡avanja drugog korisnika.',
+'customcssprotected' => 'Nemate dozvolu da menjate ovu CSS stranicu jer sadrži liÄne postavke drugog korisnika.',
+'customjsprotected' => 'Nemate dozvolu da menjate ovu stranicu javaskripta jer sadrži liÄne postavke drugog korisnika.',
'ns-specialprotected' => 'Stranice u {{ns:special}} imenskom prostoru ne mogu se uređivati.',
'titleprotected' => "Ovaj naslov je blokiran za pravljenje.
Blokirao ga je [[User:$1|$1]] a dati razlog je ''$2''.",
@@ -637,6 +636,7 @@ Ne zaboravite da prilagodite svoja [[Special:Preferences|podešavanja]].',
'createaccount' => 'Napravi nalog',
'gotaccount' => "Imate nalog? Idite na stranicu ''$1''.",
'gotaccountlink' => 'Prijavi me',
+'userlogin-resetlink' => 'Zaboravili ste podatke za prijavu?',
'createaccountmail' => 'E-poštom',
'createaccountreason' => 'Razlog:',
'badretype' => 'Lozinke koje ste uneli se ne poklapaju.',
@@ -645,13 +645,15 @@ Ne zaboravite da prilagodite svoja [[Special:Preferences|podešavanja]].',
'createaccounterror' => 'Nije moguće napraviti nalog: $1',
'nocookiesnew' => "KorisniÄki nalog je napravljen, ali niste prijavljeni. {{SITENAME}} koristi kolaÄiće (''cookies'') da bi se korisnici prijavili. Vi ste onemogućili kolaÄiće na svom raÄunaru. Molimo omogućite ih, a onda se prijavite sa svojim novim korisniÄkim imenom i lozinkom.",
'nocookieslogin' => "{{SITENAME}} koristi kolaÄiće (''cookies'') da bi se korisnici prijavili. Vi ste onemogućili kolaÄiće na svom raÄunaru. Molimo omogućite ih i pokuÅ¡ajte ponovo sa prijavom.",
+'nocookiesfornew' => 'KorisniÄki nalog nije otvoren jer njegov izvor nije potvrÄ‘en.
+Omogućite kolaÄiće na pregledaÄu i ponovo uÄitajte stranicu.',
'noname' => 'Niste izabrali ispravno korisniÄko ime.',
'loginsuccesstitle' => 'Uspešno prijavljivanje',
'loginsuccess' => "'''Sada ste prijavljeni na {{SITENAME}} kao \"\$1\".'''",
'nosuchuser' => 'Ne postoji korisnik pod imenom "$1".
Kod korisniÄkih imena se pravi razlika izmeÄ‘u malog i velikog slova.
Proverite da li ste ga dobro ukucali, ili [[Special:UserLogin/signup|napravite novi korisniÄki nalog]].',
-'nosuchusershort' => 'Ne postoji korisnik sa imenom "<nowiki>$1</nowiki>". Proverite da li ste dobro napisali.',
+'nosuchusershort' => 'Ne postoji korisnik sa imenom "$1". Proverite da li ste dobro napisali.',
'nouserspecified' => 'Morate da naznaÄite korisniÄko ime.',
'login-userblocked' => 'Ovaj korisnik je blokiran. Logovanje nije dozvoljeno.',
'wrongpassword' => 'Lozinka koju ste uneli je neispravna. Molimo pokušajte ponovo.',
@@ -697,13 +699,14 @@ Možete igronisati ovu poruku, ukoliko je nalog napravljen greškom.',
'usernamehasherror' => 'KorisniÄko ime ne može sadržati znake tarabe (#).',
'login-throttled' => 'Uradili ste previše skorih pokušaja da se ulogujete.
Molimo vas da saÄekate par minuta i pokuÅ¡ate opet.',
+'login-abort-generic' => 'Prijavljivanje nije uspelo.',
'loginlanguagelabel' => 'Jezik: $1',
'suspicious-userlogout' => 'Vaš zahtev za izlogovanje nije izvršen zato što izgleda da je poslat iz neispravnog brauzera ili preko keširanog proksija.',
# E-mail sending
'php-mail-error-unknown' => 'Nepoznata greška u funkciji PHP mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Promeni lozinku',
'resetpass_announce' => 'Prijavili ste se sa temporalnim kodom koji Vam je poslat preko e-pošte.
Kako biste dovršili prijavljivanje, morate uneti novu lozinku:',
@@ -722,6 +725,34 @@ Kako biste dovršili prijavljivanje, morate uneti novu lozinku:',
Možda ste već uspešno promenili lozinku ili zatražili novu privremenu.',
'resetpass-temp-password' => 'Privremena Å¡ifra:',
+# Special:PasswordReset
+'passwordreset' => 'Obnavljanje lozinke',
+'passwordreset-text' => 'Popunite ovaj obrazac da biste primili e-poruku sa svojim podacima za prijavu.',
+'passwordreset-legend' => 'Poništi lozinku',
+'passwordreset-disabled' => 'Poništavanje lozinke je onemogućeno na ovom vikiju.',
+'passwordreset-pretext' => '{{PLURAL:$1||Unesite jedan od delova podataka ispod}}',
+'passwordreset-username' => 'KorisniÄko ime:',
+'passwordreset-domain' => 'Domen:',
+'passwordreset-email' => 'E-adresa:',
+'passwordreset-emailtitle' => 'Detalji naloga na vikiju {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Neko, verovatno vi, sa IP adrese $1 je zatražio novu lozinku na vikiju {{SITENAME}} ($4).
+Sledeći {{PLURAL:$3|korisniÄki nalog je povezan|korisniÄki nalozi su povezani}} s ovom e-adresom:
+
+$2
+
+{{PLURAL:$3|Privremena lozinka istiÄe|Privremene lozinke istiÄu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
+Prijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku.',
+'passwordreset-emailtext-user' => '{{GENDER:$1|Korisnik|Korisnica|Korisnik}} $1 je zatražio podsetnik o podacima za prijavu na vikiju {{SITENAME}} ($4).
+Sledeći {{PLURAL:$3|korisniÄki nalog je povezan|korisniÄki nalozi su povezani}} s ovom e-adresom:
+
+$2
+
+{{PLURAL:$3|Privremena lozinka istiÄe|Privremene lozinke istiÄu}} za {{PLURAL:$5|jedan dan|$5 dana|$5 dana}}.
+Prijavite se i izaberite novu lozinku. Ako je neko drugi zahtevao ovu radnju ili ste se setili lozinke i ne želite da je menjate, zanemarite ovu poruku.',
+'passwordreset-emailelement' => 'KorisniÄko ime: $1
+Privremena lozinka: $2',
+'passwordreset-emailsent' => 'Podsetnik o lozinci je poslat na vašu adresu.',
+
# Edit page toolbar
'bold_sample' => 'podebljan tekst',
'bold_tip' => 'podebljan tekst',
@@ -733,8 +764,6 @@ Možda ste već uspešno promenili lozinku ili zatražili novu privremenu.',
'extlink_tip' => 'spoljašnja veza (ne zaboravite prefiks http://)',
'headline_sample' => 'Naslov',
'headline_tip' => 'Naslov drugog nivoa',
-'math_sample' => 'Ovde unesite formulu',
-'math_tip' => 'MatematiÄka formula (LaTeX)',
'nowiki_sample' => 'Dodaj neformatirani tekst ovde',
'nowiki_tip' => 'Ignoriši viki formatiranje',
'image_sample' => 'ime_slike.jpg',
@@ -822,7 +851,7 @@ Možete [[Special:Search/{{PAGENAME}}|tražiti ovu stranicu]] u drugim Älancima
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti srodne istorije zapisa], ili je [{{fullurl:{{FULLPAGENAME}}|action=edit}} urediti]</span>.',
'noarticletext-nopermission' => 'Na ovoj stranici trenutno nema sadržaja.
Možete [[Special:Search/{{PAGENAME}}|potražiti ovaj naslov]] na drugim stranicama ili <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pretražiti srodne izveštaje]</span>.',
-'userpage-userdoesnotexist' => 'Nalog "$1" nije registrovan. Proverite da li želite da pravite/uređujete ovu stranicu.',
+'userpage-userdoesnotexist' => 'Nalog "<nowiki>$1</nowiki>" nije registrovan. Proverite da li želite da pravite/uređujete ovu stranicu.',
'userpage-userdoesnotexist-view' => 'KorisniÄki nalog "$1" nije registrovan.',
'blocked-notice-logextract' => 'Ovaj korisnik je trenutno blokiran.
Podaci o poslednjem blokiranju su priloženi ispod kao dodatna informacija:',
@@ -853,6 +882,7 @@ tekstualnom polju izgledati ako se odluÄite da ga snimite.',
'''Ako ste pokušali da napravite legitimnu izmenu, molimo pokušajte ponovo. Ako i dalje ne radi, pokušajte da se [[Special:UserLogout|odjavite]] i ponovo prijavite.'''",
'token_suffix_mismatch' => "'''Vaša izmena je odbijena zato što je vaš klijent okrnjio interpunkcijske znake na kraju tokena. Ova izmena je odbijena zbog zaštite konzistentnosti teksta strane. Ponekad se ovo događa kad se koristi bagovit proksi servis.'''",
+'edit_form_incomplete' => "'''Neki delovi obrasca za uređivanje nisu dostigli do servera. Proverite da li su izmene promenjene i pokušajte ponovo.'''",
'editing' => 'Uređujete $1',
'editingsection' => 'Uređujete $1 (deo)',
'editingcomment' => 'Uređujete $1 (novi odeljak)',
@@ -1085,7 +1115,7 @@ Pogledajte istoriju.',
# Suppression log
'suppressionlog' => 'Log sakrivanja',
-'suppressionlogtext' => 'Ispod se nalazi spisak blokova i obrisanih stranica koji su sakriveni od administratora. Pogledaj [[Special:IPBlockList|spisak blokiranih IP adresa]] za spisak trenutno važećih banova i blokova.',
+'suppressionlogtext' => 'Ispod se nalazi spisak brisanja i blokiranja koji ukljuÄuje sadržaj sakriven od administratora. Pogledajte [[Special:BlockList|spisak blokiranih IP adresa]] za pregled važećih zabrana i blokiranja.',
# History merging
'mergehistory' => 'Spoji istorije stranica',
@@ -1192,12 +1222,13 @@ PokuÅ¡ajte sa prefiksom '''sve:''' da pretražite ceo sadržaj (ukljuÄujući st
'searchdisabled' => 'Pretraga za sajt {{SITENAME}} je onemogućena. U međuvremenu, možete koristiti Gugl pretragu. Imajte na umu da indeksi Gugla za sajt {{SITENAME}} mogu biti zastareli.',
# Quickbar
-'qbsettings' => 'Brza paleta',
-'qbsettings-none' => 'Nikakva',
-'qbsettings-fixedleft' => 'PriÄvršćena levo',
-'qbsettings-fixedright' => 'PriÄvršćena desno',
-'qbsettings-floatingleft' => 'Plutajuća levo',
-'qbsettings-floatingright' => 'Plutajuća desno',
+'qbsettings' => 'Brza paleta',
+'qbsettings-none' => 'Nikakva',
+'qbsettings-fixedleft' => 'PriÄvršćena levo',
+'qbsettings-fixedright' => 'PriÄvršćena desno',
+'qbsettings-floatingleft' => 'Plutajuća levo',
+'qbsettings-floatingright' => 'Plutajuća desno',
+'qbsettings-directionality' => 'Fiksno, u zavisnosti od smera pisanja vašeg jezika',
# Preferences page
'preferences' => 'Podešavanja',
@@ -1208,9 +1239,10 @@ PokuÅ¡ajte sa prefiksom '''sve:''' da pretražite ceo sadržaj (ukljuÄujući st
'changepassword' => 'Promeni lozinku',
'prefs-skin' => 'Koža',
'skin-preview' => 'Pregled',
-'prefs-math' => 'Matematike',
'datedefault' => 'Nije bitno',
+'prefs-beta' => 'Beta funkcije',
'prefs-datetime' => 'Datum i vreme',
+'prefs-labs' => 'Probne mogućnosti',
'prefs-personal' => 'KorisniÄka podeÅ¡avanja',
'prefs-rc' => 'Skorašnje izmene',
'prefs-watchlist' => 'Spisak nadgledanja',
@@ -1232,8 +1264,6 @@ PokuÅ¡ajte sa prefiksom '''sve:''' da pretražite ceo sadržaj (ukljuÄujući st
'columns' => 'Kolona',
'searchresultshead' => 'Pretraga',
'resultsperpage' => 'Pogodaka po stranici:',
-'contextlines' => 'Linija po pogotku:',
-'contextchars' => 'Karaktera konteksta po liniji:',
'stub-threshold' => 'Prag za formatiranje <a href="#" class="stub">linka kao klice</a> (u bajtovima):',
'stub-threshold-disabled' => 'Onemogućeno',
'recentchangesdays' => 'Broj dana u skorašnjim izmenama:',
@@ -1246,7 +1276,7 @@ Na primer: $1',
'savedprefs' => 'VaÅ¡a podeÅ¡avanja su saÄuvana.',
'timezonelegend' => 'Vremenska zona:',
'localtime' => 'Lokalno vreme:',
-'timezoneuseserverdefault' => 'Koristi osnovna podešavanja',
+'timezoneuseserverdefault' => 'podrazumevane vrednosti ($1)',
'timezoneuseoffset' => 'Drugo (odredi odstupanje)',
'timezoneoffset' => 'Odstupanje¹:',
'servertime' => 'Vreme na serveru:',
@@ -1295,8 +1325,8 @@ Mora biti ispod $1 {{PLURAL:$1|karakter|karaktera}}.',
Ova informacija će biti javna.',
'email' => 'E-pošta',
'prefs-help-realname' => '* Pravo ime (opciono): ako izaberete da date ime, ovo će biti korišćeno za pripisivanje za vaš rad.',
-'prefs-help-email' => 'Adresa e-poÅ¡te je opciona, ali vam omogućava da zatražite novu lozinku u sluÄaju da je zaboravite.
-TakoÄ‘e možete podesiti da drugi mogu da vas kontaktiraju preko vaÅ¡e korisniÄke strane ili strane za razgovor, bez potrebe da odajete svoj identitet.',
+'prefs-help-email' => 'E-adresa nije obavezna, ali je potrebna u sluÄaju da zaboravite lozinku.',
+'prefs-help-email-others' => 'Možete je koristiti i da omogućite drugima da vas kontaktiraju preko korisniÄke stranice ili stranice za razgovor, bez otkrivanja svog identiteta.',
'prefs-help-email-required' => 'Neophodna je adresa e-pošte.',
'prefs-info' => 'Osnovne informacije',
'prefs-i18n' => 'Internacionalizacija',
@@ -1421,15 +1451,15 @@ TakoÄ‘e možete podesiti da drugi mogu da vas kontaktiraju preko vaÅ¡e korisniÄ
'right-userrights' => 'UreÄ‘ivanje svih korisniÄkih prava',
'right-userrights-interwiki' => 'izmena prava korisnika na drugim vikijima',
'right-siteadmin' => 'zakljuÄavanje i otkljuÄavanje baze podataka',
-'right-reset-passwords' => 'Obnavljanje lozinki drugih korisnika',
'right-override-export-depth' => 'Izvezi strane, ukljuÄujući povezane strane, do dubine 5',
'right-sendemail' => 'Pošalji e-poštu ostalim korisnicima',
# User rights log
-'rightslog' => 'Istorija korisniÄkih prava',
-'rightslogtext' => 'Ovo je istorija izmena korisniÄkih prava.',
-'rightslogentry' => 'je promenio prava za $1 sa $2 na $3',
-'rightsnone' => '(nema)',
+'rightslog' => 'Istorija korisniÄkih prava',
+'rightslogtext' => 'Ovo je istorija izmena korisniÄkih prava.',
+'rightslogentry' => 'je promenio prava za $1 sa $2 na $3',
+'rightslogentry-autopromote' => 'je unapređen iz $2 u $3',
+'rightsnone' => '(nema)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'Äitanje ove strane',
@@ -1550,13 +1580,13 @@ Datoteku dodajete na željenu stranicu koristeći sledeće obrasce:
'minlength1' => 'Imena fajlova moraju imati najmanje jedan karakter.',
'illegalfilename' => 'Fajl "$1" sadrži karaktere koji nisu dozvoljeni u nazivima stranica. Molimo Vas promenite ime fajla i ponovo ga pošaljite.',
'badfilename' => 'Ime slike je promenjeno u "$1".',
-'filetype-mime-mismatch' => 'Ekstenzija fajla ne odgovara MIME tipu.',
+'filetype-mime-mismatch' => 'Ekstenzija „.$1“ ne odgovara prepoznatoj vrsti MIME datoteke ($2).',
'filetype-badmime' => 'Nije dozvoljeno slati datoteke MIME tipa „$1“.',
'filetype-bad-ie-mime' => 'Ovaj fajl ne može biti poslat zato što bi Internet Eksplorer mogao da ga detektuje "$1", što je onemogućen i potencijalno opasan tip fajla.',
'filetype-unwanted-type' => "'''\".\$1\"''' nije poželjan tip fajla.
Poželjni {{PLURAL:\$3|tip fajla je|tipovi fajlova su}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' je zabranjen tip fajla.
-Poželjni {{PLURAL:\$3|tip fajla je|tipovi fajlova su}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|je zabranjena vrsta datoteke|su zabranjene vrste datoteka}}.
+{{PLURAL:$3|Dozvoljena vrsta datoteke je|Dozvoljene vrste datoteka su}} $2.',
'filetype-missing' => 'Ovaj fajl nema ekstenziju (npr ".jpg").',
'empty-file' => 'Poslata datoteka je prazna.',
'file-too-large' => 'Poslata datoteka je prevelika.',
@@ -1572,6 +1602,7 @@ Poželjni {{PLURAL:\$3|tip fajla je|tipovi fajlova su}} \$2.",
'large-file' => 'PreporuÄljivo je da fajlovi ne budu veći od $1; ovaj fajl je $2.',
'largefileserver' => 'Ovaj fajl je veći nego što je podešeno da server dozvoli.',
'emptyfile' => 'Fajl koji ste poslali deluje da je prazan. Ovo je moguće zbog greške u imenu fajla. Molimo proverite da li stvarno želite da pošaljete ovaj fajl.',
+'windows-nonascii-filename' => 'Ovaj viki ne podržava nazive datoteka s posebnim znacima.',
'fileexists' => "Fajl sa ovim imenom već postoji.
Molimo proverite '''<tt>[[:$1]]</tt>''' ako niste sigurni da li želite da ga promenite.
[[$1|thumb]]",
@@ -1609,6 +1640,8 @@ Trebalo bi da proverite istoriju brisanja fajla pre ponovnog slanja.',
Molimo, proverite podešavanja file_uploads.',
'uploadscripted' => 'Ovaj fajl sadrži HTML ili kod skripte koje internet brauzer može pogrešno da interpretira.',
'uploadvirus' => 'Fajl sadrži virus! Detalji: $1',
+'uploadjava' => 'Datoteka je formata ZIP koji sadrži java .class element.
+Slanje java datoteka nije dozvoljeno jer one mogu izazvati zaobilaženje sigurnosnih ograniÄenja.',
'upload-source' => 'Izvorna datoteka',
'sourcefilename' => 'Ime fajla izvora:',
'sourceurl' => 'Izvorna adresa:',
@@ -1618,10 +1651,6 @@ Molimo, proverite podešavanja file_uploads.',
'upload-options' => 'Opcije slanja',
'watchthisupload' => 'Nadgledaj ovaj fajl',
'filewasdeleted' => 'Fajl sa ovim imenom je ranije poslat, a kasnije obrisan. Trebalo bi da proverite $1 pre nego Å¡to nastavite sa ponovnim slanjem.',
-'upload-wasdeleted' => "'''Pažnja: Šaljete fajl koji je prethodno obrisan.'''
-
-Razmislite da li ste sigurni da želite poslati ovaj fajl.
-Razlog brisanja ovog fajla ranije je:",
'filename-bad-prefix' => "Ime ovog fajla poÄinje sa '''\"\$1\"''', Å¡to nije opisno ime, najÄešće je nazvan automatski sa digitalnim fotoaparatom. Molimo izaberite opisnije ime za vaÅ¡ fajl.",
'upload-success-subj' => 'Uspešno slanje',
'upload-success-msg' => 'Datoteka iz [$2] je poslata. Dostupna je ovde: [[:{{ns:file}}:$1]]',
@@ -1643,12 +1672,29 @@ Kontaktirajte [[Special:ListUsers/sysop|administratora]].',
'upload-unknown-size' => 'Nepoznata veliÄina',
'upload-http-error' => 'Došlo je do HTTP greške: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Došlo je do greške pri otvaranju datoteke za proveru ZIP arhive.',
+'zip-wrong-format' => 'Navedena datoteka nije formata ZIP.',
+'zip-bad' => 'Datoteka je oÅ¡tećena ili je neÄitljiva ZIP datoteka.
+Ne može se ispravno proveriti u vezi sa sigurnošću.',
+'zip-unsupported' => 'Datoteka je formata ZIP koji koristi mogućnosti koje ne podržava Medijaviki.
+Ona se ne može ispravno proveriti u vezi sa sigurnošću.',
+
+# Special:UploadStash
+'uploadstash' => 'Tajno skladište',
+'uploadstash-summary' => 'Ova stranica pruža pristup datotekama koje su poslate (ili se šalju), ali još uvek nisu objavljene. Ove datoteke su vidljive samo korisniku koji ga je poslao.',
+'uploadstash-clear' => 'OÄisti sakrivene datoteke',
+'uploadstash-nofiles' => 'Nemate sakrivene datoteke.',
+'uploadstash-badtoken' => 'Izvršavanje date radnje nije uspelo. Razlog tome može biti istek vremena za uređivanje. Pokušajte ponovo.',
+'uploadstash-errclear' => 'Čišćenje datoteka nije uspelo.',
+'uploadstash-refresh' => 'Osveži spisak datoteka',
+
# img_auth script messages
'img-auth-accessdenied' => 'Pristup onemogućen',
'img-auth-nopathinfo' => 'Nedostaje PATH_INFO.
Vaš server nije podešen da prosleđuje ovakve podatke.
Možda je zasnovan na CGI-ju koji ne podržava img_auth.
-Pogledajte http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+Pogledajte [//www.mediawiki.org/wiki/Manual:Image_Authorization?uselang=sr-el odobravanje slika.]',
'img-auth-notindir' => 'Zahtevana putanja nije u podešenoj fascikli za slanje.',
'img-auth-badtitle' => 'Stvaranje ispravnog naslova za „$1“ nije uspelo.',
'img-auth-nologinnWL' => 'Niste prijavljeni i „$1“ nije na spisku dozvoljenih.',
@@ -1723,7 +1769,7 @@ Sledeći spisak pokazuje stranice koje se vežu za ovaj fajl
[[Special:WhatLinksHere/$2|Potpuni spisak]] je dostupan takođe.',
'nolinkstoimage' => 'Nema stranica koje koriste ovaj fajl.',
'morelinkstoimage' => 'Vidi [[Special:WhatLinksHere/$1|više veza]] prema ovom fajlu.',
-'redirectstofile' => 'Sledeći {{PLURAL:$1|fajl se preusmerava|$1 fajla se preusmeravaju|$1 fajlova se preusmerava}} na ovaj fajl:',
+'linkstoimage-redirect' => '$1 (preusmerenje datoteke) $2',
'duplicatesoffile' => 'Sledeći {{PLURAL:$1|fajl je duplikat|$1 fajla su duplikati|$1 fajlova su duplikati}} ovog fajla ([[Special:FileDuplicateSearch/$2|više detalja]]):',
'sharedupload' => 'Ovaj fajl je sa $1, i može se koristiti na drugim projektima.',
'sharedupload-desc-there' => 'Ova datoteka se nalazi na $1 i može se koristiti i na drugim projektima.
@@ -1812,18 +1858,19 @@ Ne zaboravite da proverite ostale poveznice ka Å¡ablonima pre nego Å¡to ih obriÅ
'statistics-users-active-desc' => 'Korisnici koji su izvršili makar jednu akciju tokom {{PLURAL:$1|zadnjeg dana|$1 zadnjih dana}}',
'statistics-mostpopular' => 'Najposećenije stranice',
-'disambiguations' => 'Stranice za viÅ¡eznaÄne odrednice',
+'disambiguations' => 'Stranice do viÅ¡eznaÄnih odrednica',
'disambiguationspage' => '{{ns:template}}:ViÅ¡eznaÄna odrednica',
'disambiguations-text' => "Sledeće stranice imaju veze ka '''viÅ¡eznaÄnim odrednicama'''. Potrebno je da upućuju na odgovarajući Älanak.
Stranica se smatra viÅ¡eznaÄnom odrednicom ako koristi Å¡ablon koji je upućen sa stranice [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Dvostruka preusmerenja',
-'doubleredirectstext' => 'Ova stranica pokazuje spisak stranica koje preusmeravaju na druge stranice preusmerenja.
+'doubleredirects' => 'Dvostruka preusmerenja',
+'doubleredirectstext' => 'Ova stranica pokazuje spisak stranica koje preusmeravaju na druge stranice preusmerenja.
Svaki red sadrži veze prema prvom i drugom preusmerenju, kao i ciljanu stranicu drugog preusmerenja, koja je obiÄno „pravi“ Älanak, na koga prvo preusmerenje treba da pokazuje.
<del>Precrtani unosi</del> su već rešeni.',
-'double-redirect-fixed-move' => '[[$1]] je premešten, sada je preusmerenje na [[$2]]',
-'double-redirect-fixer' => 'PopravljaÄ preusmerenja',
+'double-redirect-fixed-move' => '[[$1]] je premešten, sada je preusmerenje na [[$2]]',
+'double-redirect-fixed-maintenance' => 'Ispravljanje dvostrukih preusmerenja iz [[$1]] u [[$2]].',
+'double-redirect-fixer' => 'PopravljaÄ preusmerenja',
'brokenredirects' => 'Pokvarena preusmerenja',
'brokenredirectstext' => 'Sledeća preusmerenja povezuju na nepostojeće strane:',
@@ -1901,6 +1948,7 @@ na kome bi se izvela ova funkcija.',
'pager-newer-n' => '{{PLURAL:$1|noviji 1|novija $1|novijih $1}}',
'pager-older-n' => '{{PLURAL:$1|stariji 1|starija $1|starijih $1}}',
'suppress' => 'Revizor',
+'querypage-disabled' => 'Ova posebna stranica je onemogućena radi poboljšanja performansi.',
# Book sources
'booksources' => 'Å tampani izvori',
@@ -1910,8 +1958,8 @@ na kome bi se izvela ova funkcija.',
'booksources-invalid-isbn' => 'Naveden ISBN ne izgleda ispravno; proverite da nije došlo do greške prilikom kopiranja iz originalnog izvora.',
# Special:Log
-'specialloguserlabel' => 'Korisnik:',
-'speciallogtitlelabel' => 'Naslov:',
+'specialloguserlabel' => 'Izvršilac:',
+'speciallogtitlelabel' => 'Cilj (naslov ili korisnik):',
'log' => 'Protokoli',
'all-logs-page' => 'Sve javne istorije',
'alllogstext' => 'Kombinovani prikaz svih dostupnih istorija za {{SITENAME}}.
@@ -1951,12 +1999,13 @@ Takođe pogledajte [[Special:WantedCategories|tražene kategorije]].',
'sp-deletedcontributions-contribs' => 'doprinosi',
# Special:LinkSearch
-'linksearch' => 'Veb linkovi',
+'linksearch' => 'Pretraga spoljnih veza',
'linksearch-pat' => 'Obrazac pretrage:',
'linksearch-ns' => 'Imenski prostor:',
'linksearch-ok' => 'Pretraga',
-'linksearch-text' => 'Džokeri poput „*.wikipedia.org“ mogu biti korišćeni.<br />
-Podržani protokoli: <tt>$1</tt>',
+'linksearch-text' => 'Mogu se koristiti džokeri poput „*.wikipedia.org“.<br />
+Potreban je najviši domen, kao „*.org“.<br />
+Podržani protokoli: <tt>$1</tt> (ne stavljajte u pretragu)',
'linksearch-line' => 'stranica $1 je povezana sa stranice $2',
'linksearch-error' => 'Džokeri se mogu pojaviti samo na poÄetku imena hosta.',
@@ -2018,6 +2067,10 @@ Adresa e-poÅ¡te koju ste vi uneli u svojim [[Special:Preferences|korisniÄkim po
'noemailtext' => 'Ovaj korisnik nije naveo ispravnu adresu e-pošte.',
'nowikiemailtitle' => 'Nije omogućeno slanje mejlova',
'nowikiemailtext' => 'Ovaj korisnik je onemogućio slanje imejlova od drugih korisnika.',
+'emailnotarget' => 'Nepostojeće ili neispravno korisniÄko ime primaoca.',
+'emailtarget' => 'Unos korisniÄkog imena primaoca',
+'emailusername' => 'KorisniÄko ime:',
+'emailusernamesubmit' => 'Pošalji',
'email-legend' => 'Pošaljite mejl drugom korisniku na {{SITENAME}}',
'emailfrom' => 'Od:',
'emailto' => 'Za:',
@@ -2042,12 +2095,12 @@ Adresa e-poÅ¡te koju ste vi uneli u svojim [[Special:Preferences|korisniÄkim po
'watchlistanontext' => 'Morate biti $1 da biste gledali ili menjali stavke na vašem spisku nadgledanja.',
'watchnologin' => 'Niste prijavljeni',
'watchnologintext' => 'Morate biti [[Special:UserLogin|prijavljeni]] da biste menjali spisak nadgledanja.',
-'addedwatch' => 'Dodato spisku nadgledanja',
+'addwatch' => 'Dodaj na spisak nadgledanja',
'addedwatchtext' => 'Stranica „[[:$1]]“ je dodata na vaš [[Special:Watchlist|spisak nadgledanja]].
Buduće izmene ove stranice i njene stranice za razgovor biće navedene ovde, a stranica će biti <b>podebljana</b> u [[Special:RecentChanges|spisku skoraÅ¡njih izmena]] da bi se lakÅ¡e uoÄila.
Ukoliko budete želeli da uklonite stranicu sa spiska nadgledanja, kliknite opet na zvezdicu u gornjoj paleti.',
-'removedwatch' => 'Uklonjeno sa spiska nadgledanja',
+'removewatch' => 'Ukloni sa spiska nadgledanja',
'removedwatchtext' => 'Stranica „[[:$1]]“ je obrisana sa [[Special:Watchlist|Vašeg spiska nadgledanja]].',
'watch' => 'nadgledaj',
'watchthispage' => 'Nadgledaj ovu stranicu',
@@ -2068,8 +2121,9 @@ Ukoliko budete želeli da uklonite stranicu sa spiska nadgledanja, kliknite opet
'watchlist-options' => 'Podešavanja spiska nadgledanja',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Nadgledam...',
-'unwatching' => 'Uklanjanje nadgledanja...',
+'watching' => 'Nadgledam...',
+'unwatching' => 'Uklanjanje nadgledanja...',
+'watcherrortext' => 'Došlo je do greške pri promeni postavki vašeg spiska nadgledanja za „$1“.',
'enotif_mailer' => '{{SITENAME}} pošta obaveštenja',
'enotif_reset' => 'OznaÄi sve stranice kao posećene',
@@ -2081,34 +2135,36 @@ Ukoliko budete želeli da uklonite stranicu sa spiska nadgledanja, kliknite opet
'enotif_lastvisited' => 'Pogledajte $1 za sve promene od vaše poslednje posete.',
'enotif_lastdiff' => 'Pogledajte $1 da vidite ovu izmenu.',
'enotif_anon_editor' => 'anonimni korisnik $1',
-'enotif_body' => 'Dragi $WATCHINGUSERNAME,
+'enotif_body' => 'Poštovani $WATCHINGUSERNAME,
-Strana $PAGETITLE na {{SITENAME}} je bila $CHANGEDORCREATED dana $PAGEEDITDATE od strane $PAGEEDITOR,
-pogledajte $PAGETITLE_URL za trenutnu verziju.
+Stranica $PAGETITLE na vikiju {{SITENAME}} je $CHANGEDORCREATED dana $PAGEEDITDATE od strane {{GENDER:$PAGEEDITOR|korisnika|korisnice|korisnika}} $PAGEEDITOR. Pogledajte $PAGETITLE_URL za tekuću izmenu.
$NEWPAGE
-Rezime urednika: $PAGESUMMARY $PAGEMINOREDIT
+Sažetak: $PAGESUMMARY $PAGEMINOREDIT
-Kontaktirajte urednika:
-pošta $PAGEEDITOR_EMAIL
-viki $PAGEEDITOR_WIKI
+Kontakt:
+e-adresa: $PAGEEDITOR_EMAIL
+viki: $PAGEEDITOR_WIKI
-Neće biti drugih obaveÅ¡tenja u sluÄaju daljih promena ukoliko ne posetite ovu stranu.
-Takođe možete da resetujete zastavice za obaveštenja za sve vaše nadgledane strane na vašem spisku nadgledanja.
+Neće biti drugih obaveÅ¡tenja u sluÄaju daljih izmena ukoliko ne posetite ovu stranicu.
+Možete i da poništite postavke obaveštenja za sve stranice u vašem spisku nadgledanja.
- SrdaÄno, {{SITENAME}} sistem obaveÅ¡tavanja
+SrdaÄan pozdrav, {{SITENAME}}
--
-Da biste promenili podešavanja vezana za spisak nadgledanja, posetite
-{{fullurl:{{#special:Watchlist}}/edit}}
+Da biste promenili postavke u vezi s e-obaveštenjima, posetite
+{{canonicalurl:{{#special:Preferences}}}}
-Da biste uklonili ovu stranu sa Vašeg spiska nadgledanja, posetite
+Da biste promenili postavke u vezi sa spiskom nadgledanja, posetite
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+Da biste uklonili ovu stranicu sa spiska nadgledanja, posetite
$UNWATCHURL
Podrška i dalja pomoć:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Obriši stranicu',
@@ -2127,7 +2183,7 @@ posledice, i da ovo radite u skladu sa
[[{{MediaWiki:Policy-url}}|pravilima]] {{SITENAME}}.',
'actioncomplete' => 'Akcija je završena',
'actionfailed' => 'Akcija nije uspela',
-'deletedtext' => 'ÄŒlanak "<nowiki>$1</nowiki>" je obrisan.
+'deletedtext' => 'ÄŒlanak "$1" je obrisan.
Pogledajte $2 za zapis o skorašnjim brisanjima.',
'deletedarticle' => 'je obrisao „[[$1]]“',
'suppressedarticle' => 'saktiveno: "[[$1]]"',
@@ -2185,7 +2241,7 @@ Pogledajte [[Special:ProtectedPages|spisak zaštićenih stranica]] za više deta
'protect_expiry_invalid' => 'Vreme isteka nije odgovarajuće.',
'protect_expiry_old' => 'Vreme isteka je u prošlosti.',
'protect-unchain-permissions' => 'OtkljuÄaj daljnje postavke zaÅ¡tite',
-'protect-text' => "Ovde možete pogledati i menjati nivo zaštite za stranicu '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Ovde možete pogledati i menjati nivo zaštite za stranicu '''$1'''.",
'protect-locked-blocked' => "Ne možete menjati nivoe zaštite dok ste blokirani.
Ovo su trenutna podešavanja za stranicu '''$1''':",
'protect-locked-dblock' => "Nivoi zaÅ¡tite ne mogu biti promenjeni zbog aktivnog zakljuÄavanja baze.
@@ -2240,9 +2296,8 @@ Možete promeniti stepen zaštite ove stranice, ali on neće uticati na prenosiv
'undeletepagetext' => '{{PLURAL:$1|Sledeća stranica je obrisana, ali je još uvek u arhivi i može biti vraćena|Sledeće $1 stranice su obrisane, ali su još uvek u arhivi i mogu biti vraćene|Sledećih $1 stranica je obrisano, ali su još uvek u arhivi i mogu biti vraćene}}.
Arhiva se povremeno Äisti od ovakvih stranica.',
'undelete-fieldset-title' => 'vraćanje verzija',
-'undeleteextrahelp' => "Da biste vratili istoriju cele strane, ostavite sve kućice neotkaÄenim i kliknite na '''''Vrati'''''.
-Da izvrÅ¡ite selektivno vraćanje, otkaÄite kućice koje odgovaraju reviziji koja treba da se vrati i kliknite na '''''Vrati'''''.
-Klikom na '''''Poništi''''' ćete obrisati polje za komentar i sve kućice.",
+'undeleteextrahelp' => "Da biste vratili celu istoriju stranice, ostavite sve kućice neoznaÄene i kliknite na dugme '''''{{int:undeletebtn}}'''''.
+Ako želite da vratite odreÄ‘ene izmene, oznaÄite ih i kliknite na '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|izmena je arhivirana|izmene su arhivirane|izmena je arhivirano}}',
'undeletehistory' => 'Ako vratite stranicu, sve revizije će biti vraćene njenoj istoriji.
Ako je nova stranica istog imena napravljena od brisanja, vraćene revizije će se pojaviti u ranijoj istoriji.',
@@ -2284,9 +2339,12 @@ $1',
'undelete-show-file-submit' => 'Da',
# Namespace form on various pages
-'namespace' => 'Imenski prostor:',
-'invert' => 'Obrni izbor',
-'blanknamespace' => '(Glavno)',
+'namespace' => 'Imenski prostor:',
+'invert' => 'Obrni izbor',
+'tooltip-invert' => 'OznaÄite ovu kućicu da biste sakrili izmene na stranicama u odabranom imenskom prostoru (i povezanim imenskim prostorima, ako je oznaÄeno)',
+'namespace_association' => 'Povezani imenski prostor',
+'tooltip-namespace_association' => 'OznaÄite ovu kućicu da biste ukljuÄili i razgovor ili imenski prostor teme koja je povezana s odabranim imenskim prostorom',
+'blanknamespace' => '(Glavno)',
# Contributions
'contributions' => 'Prilozi korisnika',
@@ -2336,6 +2394,9 @@ Izveštaj o blokiranim korisnicima se nalazi ispod:',
'whatlinkshere-filters' => 'Filteri',
# Block/unblock
+'autoblockid' => 'Samoblokiranje #$1',
+'block' => 'Blokiraj korisnika',
+'unblock' => 'Deblokiraj korisnika',
'blockip' => 'Blokiraj korisnika',
'blockip-title' => 'Blokiraj korisnika',
'blockip-legend' => 'Blokiraj korisnika',
@@ -2345,7 +2406,6 @@ Ovo bi trebalo da bude uraÄ‘eno samo da bi se spreÄio vandalizam, i u skladu
sa [[{{MediaWiki:Policy-url}}|politikom]].
Unesite konkretan razlog ispod (na primer, navodeći koje
stranice su vandalizovane).',
-'ipaddress' => 'IP adresa',
'ipadressorusername' => 'IP adresa ili korisniÄko ime',
'ipbexpiry' => 'Trajanje',
'ipbreason' => 'Razlog:',
@@ -2358,7 +2418,7 @@ stranice su vandalizovane).',
** Nepoželjno ponašanje
** Upotreba više naloga
** Nepoželjno korisniÄko ime',
-'ipbanononly' => 'Blokiraj samo anonimne korisnike',
+'ipb-hardblock' => 'Zabrani prijavljenim korisnicima da uređuju s ove IP adrese',
'ipbcreateaccount' => 'SpreÄi pravljenje naloga',
'ipbemailban' => 'Zabranite korisniku da šalje e-poštu',
'ipbenableautoblock' => 'Automatski blokiraj poslednju IP adresu ovog korisnika, i svaku sledeću adresu sa koje se pokuša uređivanje.',
@@ -2369,12 +2429,15 @@ stranice su vandalizovane).',
'ipbotherreason' => 'Drugi/dodatni razlog:',
'ipbhidename' => 'Sakrij korisniÄko ime sa izmena i spiskova',
'ipbwatchuser' => 'nadgledanje korisniÄke stranice i stranice za razgovor ovog korisnika',
-'ipballowusertalk' => 'Omogućite ovom korisniku da menja sopstvenu stranu za razgovor tokom bloka',
+'ipb-disableusertalk' => 'Zabrani ovom korisniku da uređuje svoju stranicu za razgovor dok je blokiran',
'ipb-change-block' => 'Blokirajte korisnika ponovo sa ovim podešavanjima',
+'ipb-confirm' => 'Potvrdi blokiranje',
'badipaddress' => 'Loša IP adresa',
'blockipsuccesssub' => 'Blokiranje je uspelo',
-'blockipsuccesstext' => '[[{{ns:special}}:Contributions/$1|$1]] je blokiran.
-<br />Vidite [[{{ns:special}}:Ipblocklist|spisak blokiranja]] da biste pregledali blokiranja.',
+'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] je {{GENDER:$1|blokiran|blokirana|blokiran}}.<br />
+Pogledajte [[Special:BlockList|spisak blokiranih IP adresa]] za pregled blokiranja.',
+'ipb-blockingself' => 'Ovom radnjom ćete blokirati sebe! Jeste li sigurni da to želite?',
+'ipb-confirmhideuser' => 'Upravo ćete blokirati korisnika s ukljuÄenom mogućnošću „sakrij korisnika“. Ovim će korisniÄko ime biti sakriveno u svim spiskovima i izveÅ¡tajima. Želite li to da uradite?',
'ipb-edit-dropdown' => 'Menjajte razloge bloka',
'ipb-unblock-addr' => 'Deblokiraj $1',
'ipb-unblock' => 'Deblokiraj korisniÄko ime ili IP adresu',
@@ -2385,17 +2448,23 @@ stranice su vandalizovane).',
ranije blokiranoj IP adresi ili korisniÄkom imenu.',
'ipusubmit' => 'Deblokiraj',
'unblocked' => '[[User:$1|$1]] je deblokiran',
+'unblocked-range' => '$1 je {{GENDER:$1|deblokiran|deblokirana|deblokiran}}',
'unblocked-id' => 'Blok $1 je uklonjen',
+'blocklist' => 'Blokirani korisnici',
'ipblocklist' => 'Blokirani korisnici',
'ipblocklist-legend' => 'Pronađi blokiranog korisnika',
-'ipblocklist-username' => 'Korisnik ili IP adresa:',
-'ipblocklist-sh-userblocks' => '$1 blokiranja naloga',
-'ipblocklist-sh-tempblocks' => '$1 privremene blokove',
-'ipblocklist-sh-addressblocks' => '$1 pojedinaÄne IP blokove',
+'blocklist-userblocks' => 'Sakrij blokiranja naloga',
+'blocklist-tempblocks' => 'Sakrij privremena blokiranja',
+'blocklist-addressblocks' => 'Sakrij pojedinaÄna blokiranja IP adrese',
+'blocklist-timestamp' => 'Vreme',
+'blocklist-target' => 'Korisnik',
+'blocklist-expiry' => 'IstiÄe',
+'blocklist-by' => 'Blokirao',
+'blocklist-params' => 'Zabranjene radnje',
+'blocklist-reason' => 'Razlog',
'ipblocklist-submit' => 'Pretraga',
'ipblocklist-localblock' => 'Lokalni blok',
'ipblocklist-otherblocks' => 'Drugi {{PLURAL:$1|blok|blokovi}}',
-'blocklistline' => '$1, $2 blokirao korisnika [[User:$3|$3]], (istiÄe $4)',
'infiniteblock' => 'beskonaÄan',
'expiringblock' => 'IstiÄe na $1 u $2',
'anononlyblock' => 'samo anonimni',
@@ -2419,7 +2488,7 @@ Istorija sakrivanja se nalazi ispod:',
'reblock-logentry' => 'je promenio podešavanja bloka za [[$1]] sa vremenom isteka $2 ($3)',
'blocklogtext' => 'Ovo je istorija blokiranja korisnika.
Automatski zabranjene IP adrese nisu ispisane ovde.
-Pogledajte [[Special:IPBlockList|zabranjene IP adrese]] za spisak trenutnih blokova.',
+Pogledajte [[Special:BlockList|zabranjene IP adrese]] za spisak trenutnih blokova.',
'unblocklogentry' => '{{GENDER:|je deblokirao|je deblokirala|je deblokirao}} „$1“',
'block-log-flags-anononly' => 'samo anonimni korisnici',
'block-log-flags-nocreate' => 'onemogućeno otvaranje naloga',
@@ -2433,9 +2502,9 @@ Pogledajte [[Special:IPBlockList|zabranjene IP adrese]] za spisak trenutnih blok
'ipb_expiry_temp' => 'Sakriveni blokovi korisniÄkih imena moraju biti stalni.',
'ipb_hide_invalid' => 'Nije bilo moguće sakriti ovaj nalog; Mora da ima previše izmena.',
'ipb_already_blocked' => '"$1" je već blokiran',
-'ipb-needreblock' => '== Već blokiran ==
-$1 je već blokiran. Da li želite da promenite podešavanja?',
+'ipb-needreblock' => '$1 je već blokiran. Da li želite da promenite podešavanja?',
'ipb-otherblocks-header' => 'Drugi {{PLURAL:$1|blok|blokovi}}',
+'unblock-hideuser' => 'Ne možete deblokirati ovog korisnika jer je njegovo korisniÄko ime sakriveno.',
'ipb_cant_unblock' => 'Greška: ID bloka $1 nije nađen.
Moguće je da je već deblokiran.',
'ipb_blocked_as_range' => 'Greška: IP $1 nije direktno blokiran i ne može biti deblokiran.
@@ -2479,6 +2548,7 @@ Setite se da je [[Special:UnlockDB|otkljuÄate]] kada zavrÅ¡ite sa održavanjem.
'unlockdbsuccesstext' => 'Baza podataka je otkljuÄana.',
'lockfilenotwritable' => 'Po fajlu za zakljuÄavanje baze podataka ne može da se piÅ¡e. Da biste zakljuÄali ili otkljuÄali bazu, po ovom fajlu mora da bude omogućeno pisanje od strane veb servera.',
'databasenotlocked' => 'Baza podataka nije zakljuÄana.',
+'lockedbyandtime' => '(od $1 dana $2 u $3)',
# Move page
'move-page' => 'Premesti $1',
@@ -2604,7 +2674,7 @@ U drugom sluÄaju, možete koristiti i vezu, na primer [[{{#Special:Export}}/{{M
'allmessagesdefault' => 'Standardni tekst',
'allmessagescurrent' => 'Trenutni tekst',
'allmessagestext' => 'Ovo je spisak sistemskih poruka koje su u MedijaViki imenskom prostoru.
-Posetite [http://translatewiki.net translatewiki.net] ukoliko želite da pomognete u lokalizaciji.',
+Posetite [//translatewiki.net translatewiki.net] ukoliko želite da pomognete u lokalizaciji.',
'allmessagesnotsupportedDB' => "Ova stranica ne može biti upotrebljena zato Å¡to je '''\$wgUseDatabaseMessages''' iskljuÄen.",
'allmessages-filter-legend' => 'Filter',
'allmessages-filter' => 'Filtriraj po stanju prilagođenosti:',
@@ -2745,9 +2815,7 @@ Molimo Vas da opet pokušate.',
'monobook.css' => '/* CSS stavljen ovde će se odnositi na korisnike Monobuk kože */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metapodaci onemogućeni za ovaj server.',
-'nocreativecommons' => 'Creative Commons RDF metapodaci onemogućeni za ovaj server.',
-'notacceptable' => 'Viki server ne može da pruži podatke u onom formatu koji vaÅ¡ klijent može da proÄita.',
+'notacceptable' => 'Viki server ne može da pruži podatke u onom formatu koji vaÅ¡ klijent može da proÄita.',
# Attribution
'anonymous' => 'Anonimni {{PLURAL:$1|korisnik|korisnici}} na {{SITENAME}}',
@@ -2771,31 +2839,17 @@ Ovo je verovatno izazvano blokiranom vezom ka spoljašnjem sajtu.',
'spam_blanking' => 'Sve revizije su sadržale veze ka $1, pražnjenje',
# Info page
-'infosubtitle' => 'Informacije za stranicu',
-'numedits' => 'Broj promena (Älanak): $1',
-'numtalkedits' => 'Broj promena (stranica za razgovor): $1',
-'numwatchers' => 'Broj korisnika koji nadgledaju: $1',
-'numauthors' => 'Broj razliÄitih autora (Älanak): $1',
-'numtalkauthors' => 'Broj razliÄitih autora (stranica za razgovor): $1',
-
-# Math options
-'mw_math_png' => 'Uvek prikaži PNG',
-'mw_math_simple' => 'HTML ako je vrlo jednostavno, inaÄe PNG',
-'mw_math_html' => 'HTML ako je moguće, inaÄe PNG',
-'mw_math_source' => 'Ostavi kao TeH (za tekstualne brauzere)',
-'mw_math_modern' => 'PreporuÄeno za savremene brauzere',
-'mw_math_mathml' => 'MathML ako je moguće (eksperimentalno)',
-
-# Math errors
-'math_failure' => 'Neuspeh pri parsiranju',
-'math_unknown_error' => 'nepoznata greška',
-'math_unknown_function' => 'nepoznata funkcija',
-'math_lexing_error' => 'reÄniÄka greÅ¡ka',
-'math_syntax_error' => 'sintaksna greška',
-'math_image_error' => 'PNG konverzija neuspeÅ¡na; proverite taÄnu instalaciju latex-a, dvips-a, gs-a i convert-a',
-'math_bad_tmpdir' => 'Ne mogu da napišem ili napravim privremeni math direktorijum',
-'math_bad_output' => 'Ne mogu da napišem ili napravim direktorijum za math izlaz.',
-'math_notexvc' => 'Nedostaje izvršno texvc; molimo pogledajte math/README da biste podesili.',
+'pageinfo-title' => 'Podaci o „$1“',
+'pageinfo-header-edits' => 'Izmena',
+'pageinfo-header-watchlist' => 'Spisak nadgledanja',
+'pageinfo-header-views' => 'Pregleda',
+'pageinfo-subjectpage' => 'Stranica',
+'pageinfo-talkpage' => 'Stranica za razgovor',
+'pageinfo-watchers' => 'Broj pregledaÄa',
+'pageinfo-edits' => 'Broj izmena',
+'pageinfo-authors' => 'Broj razliÄitih autora',
+'pageinfo-views' => 'Broj pregleda',
+'pageinfo-viewsperedit' => 'Pregleda po izmeni',
# Patrolling
'markaspatrolleddiff' => 'OznaÄi kao patroliran',
@@ -2832,22 +2886,25 @@ $1',
'nextdiff' => 'Novija izmena →',
# Media information
-'mediawarning' => "'''Upozorenje''': Ovaj tip fajla bi mogao da sadrži štetan kod.
+'mediawarning' => "'''Upozorenje''': Ovaj tip fajla bi mogao da sadrži štetan kod.
Njegovim izvršavanjem biste mogli da oštetite Vaš sistem.",
-'imagemaxsize' => "OgraniÄenje veliÄine slike:<br />''(za strane opisa fajlova)''",
-'thumbsize' => 'VeliÄina umanjenog prikaza :',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stranica|stranice|stranica}}',
-'file-info' => 'veliÄina fajla: $1, MIME tip: $2',
-'file-info-size' => '$1 × $2 piksela, veliÄina fajla: $3, MIME tip: $4',
-'file-nohires' => '<small>Nije dostupna veća rezolucija</small>',
-'svg-long-desc' => 'SVG fajl, nominalno $1 × $2 piksela, veliÄina fajla: $3',
-'show-big-image' => 'Puna rezolucija',
-'show-big-image-thumb' => '<small>VeliÄina ovog prikaza: $1 × $2 piksela</small>',
-'file-info-gif-looped' => 'petlja',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|frejm|frejmova}}',
-'file-info-png-looped' => 'petlja',
-'file-info-png-repeat' => 'ponovljeno $1 {{PLURAL:$1|put|puta|puta}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|kadar|kadra|kadrova}}',
+'imagemaxsize' => "OgraniÄenje veliÄine slike:<br />''(za strane opisa fajlova)''",
+'thumbsize' => 'VeliÄina umanjenog prikaza :',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|stranica|stranice|stranica}}',
+'file-info' => 'veliÄina fajla: $1, MIME tip: $2',
+'file-info-size' => '$1 × $2 piksela, veliÄina fajla: $3, MIME tip: $4',
+'file-info-size-pages' => '$1 × $2 piksela, veliÄina: $3, MIME vrsta: $4, $5 {{PLURAL:$5|stranica|stranice|stranica}}',
+'file-nohires' => '<small>Nije dostupna veća rezolucija</small>',
+'svg-long-desc' => 'SVG fajl, nominalno $1 × $2 piksela, veliÄina fajla: $3',
+'show-big-image' => 'Puna rezolucija',
+'show-big-image-preview' => '<small>VeliÄina ovog prikaza: $1.</small>.</small>',
+'show-big-image-other' => '<small>Ostale veliÄine: $1.</small>',
+'show-big-image-size' => '$1×$2 piksela',
+'file-info-gif-looped' => 'petlja',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|frejm|frejmova}}',
+'file-info-png-looped' => 'petlja',
+'file-info-png-repeat' => 'ponovljeno $1 {{PLURAL:$1|put|puta|puta}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|kadar|kadra|kadrova}}',
# Special:NewFiles
'newimages' => 'Galerija novih slika',
@@ -2878,14 +2935,20 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. Älanci u kojima se slik
'metadata-help' => 'Ovaj fajl sadrži dodatne informacije, koje su verovatno dodali digitalni fotoaparat ili skener koji su korišćeni da bi se napravila ili digitalizovala slika. Ako je prvobitno stanje fajla promenjeno, moguće je da neki detalji ne opisuju u potpunosti izmenjenu sliku.',
'metadata-expand' => 'Pokaži detalje',
'metadata-collapse' => 'Sakrij detalje',
-'metadata-fields' => 'Polja EXIF metapodataka navedena u ovoj poruci će biti ubaÄena na stranu o slici kada se raÅ¡iri tabela za metapodatke. Ostala će biti sakrivena po podrazumevanom.
+'metadata-fields' => 'Polja za metapodatke slike navedena u ovoj poruci će biti ukljuÄena na stranici za slike kada se skupi tabela metapodataka. Ostala polja će biti sakrivena po podrazumevanim postavkama.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Å irina',
@@ -2900,13 +2963,11 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. Älanci u kojima se slik
'exif-ycbcrpositioning' => 'Razmeštaj komponenata Y i C',
'exif-xresolution' => 'Horizonatalna rezolucija',
'exif-yresolution' => 'Vertikalna rezolucija',
-'exif-resolutionunit' => 'Jedinica rezolucije',
'exif-stripoffsets' => 'Položaj bloka podataka',
'exif-rowsperstrip' => 'Broj redova u bloku',
'exif-stripbytecounts' => 'VeliÄina kompresovanog bloka',
'exif-jpeginterchangeformat' => 'Udaljenost JPEG pregleda od poÄetka fajla',
'exif-jpeginterchangeformatlength' => 'KoliÄina bajtova JPEG pregleda',
-'exif-transferfunction' => 'Funkcija preoblikovanja kolor prostora',
'exif-whitepoint' => 'Hromacitet bele taÄke',
'exif-primarychromaticities' => 'Hromacitet primarnih boja',
'exif-ycbcrcoefficients' => 'MatriÄni koeficijenti transformacije kolor prostora',
@@ -2925,7 +2986,6 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. Älanci u kojima se slik
'exif-compressedbitsperpixel' => 'Mod kompresije slike',
'exif-pixelydimension' => 'Å irina slike',
'exif-pixelxdimension' => 'Visina slike',
-'exif-makernote' => 'Napomene proizvoÄ‘aÄa',
'exif-usercomment' => 'KorisniÄki komentar',
'exif-relatedsoundfile' => 'Povezani zvuÄni zapis',
'exif-datetimeoriginal' => 'Datum i vreme slikanja',
@@ -2939,7 +2999,6 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. Älanci u kojima se slik
'exif-exposureprogram' => 'Program ekspozicije',
'exif-spectralsensitivity' => 'Spektralna osetljivost',
'exif-isospeedratings' => 'ISO vrednost',
-'exif-oecf' => 'Optoelektronski faktor konverzije',
'exif-shutterspeedvalue' => 'Brzina zatvaraÄa',
'exif-aperturevalue' => 'Otvor blende',
'exif-brightnessvalue' => 'Osvetljenost',
@@ -2952,7 +3011,6 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. Älanci u kojima se slik
'exif-focallength' => 'Fokusna daljina soÄiva',
'exif-subjectarea' => 'Položaj i površina objekta snimka',
'exif-flashenergy' => 'Energija blica',
-'exif-spatialfrequencyresponse' => 'Prostorna frekvencijska karakteristika',
'exif-focalplanexresolution' => 'Vodoravna rezolucija fokusne ravni',
'exif-focalplaneyresolution' => 'Horizonatlna rezolucija fokusne ravni',
'exif-focalplaneresolutionunit' => 'Jedinica rezolucije fokusne ravni',
@@ -2961,7 +3019,6 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. Älanci u kojima se slik
'exif-sensingmethod' => 'Tip senzora',
'exif-filesource' => 'Izvorni fajl',
'exif-scenetype' => 'Tip scene',
-'exif-cfapattern' => 'CFA Å¡ablon',
'exif-customrendered' => 'Dodatna obrada slike',
'exif-exposuremode' => 'Režim izbora ekspozicije',
'exif-whitebalance' => 'Balans bele boje',
@@ -3006,12 +3063,81 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. Älanci u kojima se slik
'exif-gpsareainformation' => 'Ime GPS podruÄja',
'exif-gpsdatestamp' => 'GPS datum',
'exif-gpsdifferential' => 'GPS diferencijalna korekcija',
+'exif-jpegfilecomment' => 'Komentar na datoteku JPEG',
+'exif-keywords' => 'KljuÄne reÄi',
+'exif-worldregioncreated' => 'Oblast sveta gde je slikana fotografija',
+'exif-countrycreated' => 'Zemlja gde je slikana fotografija',
+'exif-countrycodecreated' => 'Kôd zemlje gde je slikana fotografija',
+'exif-provinceorstatecreated' => 'Pokrajina ili država gde je slikana fotografija',
+'exif-citycreated' => 'Grad gde je slikana fotografija',
+'exif-sublocationcreated' => 'Oblast grada gde je slikana fotografija',
+'exif-worldregiondest' => 'Prikazana oblast sveta',
+'exif-countrydest' => 'Prikazana zemlja',
+'exif-countrycodedest' => 'Prikazani kôd zemlje',
+'exif-provinceorstatedest' => 'Prikazana pokrajina ili država',
+'exif-citydest' => 'Prikazani grad',
+'exif-sublocationdest' => 'Prikazana oblast grada',
'exif-objectname' => 'Kratak naslov',
+'exif-specialinstructions' => 'Posebna uputstva',
+'exif-headline' => 'Naslov',
+'exif-credit' => 'Zasluge/pružalac usluga',
+'exif-source' => 'Izvor',
+'exif-editstatus' => 'UredniÄki status slike',
+'exif-urgency' => 'Hitnost',
+'exif-fixtureidentifier' => 'Naziv rubrike',
+'exif-locationdest' => 'Prikazana lokacija',
+'exif-locationdestcode' => 'Kôd prikazane lokacije',
+'exif-objectcycle' => 'Doba dana za koji je medij namenjen',
+'exif-contact' => 'Podaci za kontakt',
+'exif-writer' => 'Pisac',
+'exif-languagecode' => 'Jezik',
+'exif-iimversion' => 'IIM izdanje',
+'exif-iimcategory' => 'Kategorija',
+'exif-iimsupplementalcategory' => 'Dopunske kategorije',
+'exif-datetimeexpires' => 'Ne koristi nakon',
+'exif-datetimereleased' => 'Objavljeno',
+'exif-originaltransmissionref' => 'Izvorni prenos kôda lokacije',
+'exif-identifier' => 'Oznaka',
+'exif-lens' => 'Korišćeni objektiv',
+'exif-serialnumber' => 'Serijski broj kamere',
+'exif-cameraownername' => 'Vlasnik kamere',
+'exif-label' => 'Naziv',
+'exif-datetimemetadata' => 'Datum poslednje izmene metapodataka',
+'exif-nickname' => 'Neformalni naziv slike',
+'exif-rating' => 'Ocena (od 1 do 5)',
+'exif-rightscertificate' => 'Potvrda za upravljanje pravima',
+'exif-copyrighted' => 'Status autorskog prava',
+'exif-copyrightowner' => 'Nosilac autorskog prava',
+'exif-usageterms' => 'Pravila korišćenja',
+'exif-webstatement' => 'Izjava o autorskom pravu',
+'exif-originaldocumentid' => 'Jedinstveni IB izvornog dokumenta',
+'exif-licenseurl' => 'Adresa licence za autorska prava',
+'exif-morepermissionsurl' => 'Rezervni podaci o licenciranju',
+'exif-attributionurl' => 'Pri ponovnom korišćenju ovog rada, koristite vezu do',
+'exif-preferredattributionname' => 'Pri ponovnom korišćenju ovog rada, postavite zasluge',
+'exif-pngfilecomment' => 'Komentar na datoteku PNG',
+'exif-disclaimer' => 'Odricanje odgovornosti',
+'exif-contentwarning' => 'Upozorenje o sadržaju',
+'exif-giffilecomment' => 'Komentar na datoteku GIF',
+'exif-intellectualgenre' => 'Vrsta stavke',
+'exif-subjectnewscode' => 'Kôd predmeta',
+'exif-scenecode' => 'IPTC kôd scene',
+'exif-event' => 'Prikazani događaj',
+'exif-organisationinimage' => 'Prikazana organizacija',
+'exif-personinimage' => 'Prikazana osoba',
+'exif-originalimageheight' => 'Visina slike pre isecanja',
+'exif-originalimagewidth' => 'Å irina slike pre isecanja',
# EXIF attributes
'exif-compression-1' => 'Nekompresovan',
+'exif-compression-2' => 'CCITT Group 3 1 – Dimenzionalno izmenjeno Hafmanovo kodiranje po dužini',
+'exif-compression-3' => 'CCITT Group 3 faks kodiranje',
+'exif-compression-4' => 'CCITT Group 4 faks kodiranje',
'exif-compression-6' => 'JPEG',
+'exif-copyrighted-true' => 'Zaštićeno autorskim pravom',
+'exif-copyrighted-false' => 'Javno vlasništvo',
+
'exif-unknowndate' => 'Nepoznat datum',
'exif-orientation-1' => 'Normalno',
@@ -3026,6 +3152,8 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. Älanci u kojima se slik
'exif-planarconfiguration-1' => 'delimiÄni format',
'exif-planarconfiguration-2' => 'planarni format',
+'exif-colorspace-65535' => 'Deštelovano',
+
'exif-componentsconfiguration-0' => 'ne postoji',
'exif-exposureprogram-0' => 'Nepoznato',
@@ -3139,6 +3267,10 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. Älanci u kojima se slik
'exif-gpslongitude-e' => 'Istok',
'exif-gpslongitude-w' => 'Zapad',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metar|metra|metara}} nadmorske visine',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metar|metra|metara}} ispod nivoa mora',
+
'exif-gpsstatus-a' => 'Merenje u toku',
'exif-gpsstatus-v' => 'Spreman za prenos',
@@ -3150,21 +3282,73 @@ Sve druge veze u istoj liniji se smatraju izuzecima tj. Älanci u kojima se slik
'exif-gpsspeed-m' => 'Milje na Äas',
'exif-gpsspeed-n' => 'ÄŒvorovi',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometara',
+'exif-gpsdestdistance-m' => 'Milja',
+'exif-gpsdestdistance-n' => 'NautiÄkih milja',
+
+'exif-gpsdop-excellent' => 'OdliÄno ($1)',
+'exif-gpsdop-good' => 'Dobro ($1)',
+'exif-gpsdop-moderate' => 'Umereno ($1)',
+'exif-gpsdop-fair' => 'Zadovoljavajuće ($1)',
+'exif-gpsdop-poor' => 'Loše ($1)',
+
+'exif-objectcycle-a' => 'Samo ujutru',
+'exif-objectcycle-p' => 'Samo uveÄe',
+'exif-objectcycle-b' => 'I ujutru i uveÄe',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Pravi pravac',
'exif-gpsdirection-m' => 'Magnetni pravac',
+'exif-ycbcrpositioning-1' => 'Centrirano',
+'exif-ycbcrpositioning-2' => 'Uporedo',
+
+'exif-dc-contributor' => 'Doprinosioci',
+'exif-dc-coverage' => 'Prostorni ili vremenski opseg medija',
+'exif-dc-date' => 'Datum',
+'exif-dc-publisher' => 'IzdavaÄ',
+'exif-dc-relation' => 'Srodni mediji',
+'exif-dc-rights' => 'Prava',
+'exif-dc-source' => 'Izvor medija',
+'exif-dc-type' => 'Vrsta medija',
+
+'exif-rating-rejected' => 'Odbijeno',
+
+'exif-isospeedratings-overflow' => 'Veće od 65535',
+
+'exif-iimcategory-ace' => 'Umetnost, kultura i zabava',
+'exif-iimcategory-clj' => 'Kriminal i zakon',
+'exif-iimcategory-dis' => 'Katastrofe i nesreće',
+'exif-iimcategory-fin' => 'Ekonomija i posao',
+'exif-iimcategory-edu' => 'Obrazovanje',
+'exif-iimcategory-evn' => 'Okolina',
+'exif-iimcategory-hth' => 'Zdravlje',
+'exif-iimcategory-hum' => 'Zanimanje',
+'exif-iimcategory-lab' => 'Rad',
+'exif-iimcategory-lif' => 'NaÄin života i slobodno vreme',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Religija i verovanja',
+'exif-iimcategory-sci' => 'Nauka i tehnologija',
+'exif-iimcategory-soi' => 'Društvena pitanja',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Rat, sukobi i nemiri',
+'exif-iimcategory-wea' => 'Vreme',
+
+'exif-urgency-normal' => 'Normalno ($1)',
+'exif-urgency-low' => 'Nisko ($1)',
+'exif-urgency-high' => 'Visoko ($1)',
+'exif-urgency-other' => 'Prilagođeni prioritet ($1)',
+
# External editor support
'edit-externally' => 'Izmenite ovaj fajl koristeći spoljašnju aplikaciju',
-'edit-externally-help' => '(Pogledajte [http://www.mediawiki.org/wiki/Manual:External_editors uputstvo za podešavanje] za više informacija)',
+'edit-externally-help' => '(Pogledajte [//www.mediawiki.org/wiki/Manual:External_editors uputstvo za podešavanje] za više informacija)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'sve',
-'imagelistall' => 'sve',
-'watchlistall2' => 'sve',
-'namespacesall' => 'svi',
-'monthsall' => 'sve',
-'limitall' => 'sve',
+'watchlistall2' => 'sve',
+'namespacesall' => 'svi',
+'monthsall' => 'sve',
+'limitall' => 'sve',
# E-mail address confirmation
'confirmemail' => 'Potvrdite adresu e-pošte',
@@ -3237,17 +3421,24 @@ $1',
'trackbackdeleteok' => 'Vraćanje je uspešno obrisano.',
# Delete conflict
-'deletedwhileediting' => "'''Upozorenje''': Ova stranica je obrisana nakon Å¡to ste poÄeli ureÄ‘ivanje!",
-'confirmrecreate' => "[[User:$1|$1]] ([[User talk:$1|razgovor]]) {{GENDER:$1|je obrisao|je obrisala|obrisa}} ovu stranicu nakon Å¡to ste poÄeli da je ureÄ‘ujete, sa sledećim razlogom:
+'deletedwhileediting' => "'''Upozorenje''': Ova stranica je obrisana nakon Å¡to ste poÄeli ureÄ‘ivanje!",
+'confirmrecreate' => "[[User:$1|$1]] ([[User talk:$1|razgovor]]) {{GENDER:$1|je obrisao|je obrisala|obrisa}} ovu stranicu nakon Å¡to ste poÄeli da je ureÄ‘ujete, sa sledećim razlogom:
: ''$2''
Potvrdite da stvarno želite da napravite stranicu.",
-'recreate' => 'Ponovo napravi',
+'confirmrecreate-noreason' => 'Korisnik [[User:$1|$1]] ([[User talk:$1|razgovor]]) je obrisao ovu stranicu nakon Å¡to ste poÄeli da ga ureÄ‘ujete. Potvrdite da stvarno želite da ponovo napravite ovu stranicu.',
+'recreate' => 'Ponovo napravi',
# action=purge
'confirm_purge_button' => 'Da',
'confirm-purge-top' => 'Da li želite oÄistiti keÅ¡ ove stranice?',
'confirm-purge-bottom' => 'Čišćenje keša strane primorava softver da prikaže njenu najnoviju verziju.',
+# action=watch/unwatch
+'confirm-watch-button' => 'U redu',
+'confirm-watch-top' => 'Dodati ovu stranicu u spisak nadgledanja?',
+'confirm-unwatch-button' => 'U redu',
+'confirm-unwatch-top' => 'Ukloniti ovu stranicu sa spiska nadgledanja?',
+
# Multipage image navigation
'imgmultipageprev' => '&larr; prethodna stranica',
'imgmultipagenext' => 'sledeća stranica &rarr;',
@@ -3287,9 +3478,9 @@ Potvrdite da stvarno želite da napravite stranicu.",
'watchlistedit-noitems' => 'Nema naslova u vašem spisku nadgledanja.',
'watchlistedit-normal-title' => 'Uredi spisak nadgledanja',
'watchlistedit-normal-legend' => 'Ukloni naslove sa spiska nadgledanja',
-'watchlistedit-normal-explain' => 'Naslovi na vašem spisku nadgledanja su prikazani ispod. Da biste uklonili naslov, obeležite
- kutijicu do njega, i kliknite na Ukloni naslove. Takođe, možete da [[Special:Watchlist/raw|izmenite sirov spisak]],
- ili [[Special:Watchlist/clear|uklonite sve naslove]].',
+'watchlistedit-normal-explain' => 'Naslovi na vašem spisku nadgledanja su prikazani ispod.
+Da biste uklonili naslov, oznaÄite kućicu do njega i kliknite na „{{int:Watchlistedit-normal-submit}}“.
+Možete i da [[Special:EditWatchlist/raw|izmenite sirov spisak]].',
'watchlistedit-normal-submit' => 'Ukloni naslove',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 Älanak je uklonjen|$1 Älanka su uklonjena|$1 Älanaka je uklonjeno}} sa vaÅ¡eg spiska nadgledanja:',
'watchlistedit-raw-title' => 'Izmeni sirov spisak nadgledanja',
@@ -3297,7 +3488,7 @@ Potvrdite da stvarno želite da napravite stranicu.",
'watchlistedit-raw-explain' => 'Naslovi sa Vašeg spiska nadgledanja su prikazani ispod i mogu se menjati dodavanjem ili oduzimanjem;
Pišite jedan naslov po liniji.
Kada završite, kliknite "{{int:Watchlistedit-raw-submit}}".
-TakoÄ‘e, možete [[Special:Watchlist/edit|koristiti standardan ureÄ‘ivaÄ spiska]].',
+TakoÄ‘e, možete [[Special:EditWatchlist|koristiti standardan ureÄ‘ivaÄ spiska]].',
'watchlistedit-raw-titles' => 'Naslovi:',
'watchlistedit-raw-submit' => 'Osvežite spisak nadgledanja',
'watchlistedit-raw-done' => 'Vaš spisak nadgledanja je osvežen.',
@@ -3314,33 +3505,33 @@ TakoÄ‘e, možete [[Special:Watchlist/edit|koristiti standardan ureÄ‘ivaÄ spiska
'duplicate-defaultsort' => "'''Upozorenje:''' Podrazumevani kljuÄ sortiranja „$2“ prepisuje ranije podrazumevani kljuÄ sortiranja „$1“.",
# Special:Version
-'version' => 'Verzija',
-'version-extensions' => 'Instalisane ekstenzije',
-'version-specialpages' => 'Posebne stranice',
-'version-parserhooks' => 'zakaÄke parsera',
-'version-variables' => 'Varijable',
-'version-skins' => 'Teme',
-'version-other' => 'Ostalo',
-'version-mediahandlers' => 'rukovaoci medijima',
-'version-hooks' => 'zakaÄke',
-'version-extension-functions' => 'Funkcije dodatka',
-'version-parser-extensiontags' => 'tagovi ekstenzije Parser',
-'version-parser-function-hooks' => 'zakaÄke parserove funkcije',
-'version-skin-extension-functions' => 'ekstenzije funkcije kože',
-'version-hook-name' => 'ime zakaÄke',
-'version-hook-subscribedby' => 'prijavljeni',
-'version-version' => '(Verzija $1)',
-'version-license' => 'Licenca',
-'version-poweredby-credits' => "Ovaj viki pokreće '''[http://www.mediawiki.org/ Medijaviki]''', autorska prava © 2001-$1 $2.",
-'version-poweredby-others' => 'ostali',
-'version-license-info' => 'Medijaviki je slobodan softver; možete ga raspodeljivati i menjati pod uslovima GNU-ove opšte javne licence (OJL) koju je objavila Zadužbina za slobodan softver, bilo da je u pitanju drugo ili novije izdanje licence.
+'version' => 'Verzija',
+'version-extensions' => 'Instalisane ekstenzije',
+'version-specialpages' => 'Posebne stranice',
+'version-parserhooks' => 'zakaÄke parsera',
+'version-variables' => 'Varijable',
+'version-antispam' => 'SpreÄavanje nepoželjnih poruka',
+'version-skins' => 'Teme',
+'version-other' => 'Ostalo',
+'version-mediahandlers' => 'rukovaoci medijima',
+'version-hooks' => 'zakaÄke',
+'version-extension-functions' => 'Funkcije dodatka',
+'version-parser-extensiontags' => 'tagovi ekstenzije Parser',
+'version-parser-function-hooks' => 'zakaÄke parserove funkcije',
+'version-hook-name' => 'ime zakaÄke',
+'version-hook-subscribedby' => 'prijavljeni',
+'version-version' => '(Verzija $1)',
+'version-license' => 'Licenca',
+'version-poweredby-credits' => "Ovaj viki pokreće '''[//www.mediawiki.org/ Medijaviki]''', autorska prava © 2001-$1 $2.",
+'version-poweredby-others' => 'ostali',
+'version-license-info' => 'Medijaviki je slobodan softver; možete ga raspodeljivati i menjati pod uslovima GNU-ove opšte javne licence (OJL) koju je objavila Zadužbina za slobodan softver, bilo da je u pitanju drugo ili novije izdanje licence.
Medijaviki se raspodeljuje u nadi da će biti koristan, ali BEZ IKAKVE GARANCIJE; Äak i bez implicitne garancije o PRODAJI ili POGODNOSTI ZA ODREÄENE NAMENE. Pogledajte GNU-ovu opÅ¡tu javnu licencu za viÅ¡e detalja.
-Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove opÅ¡te javne licence] zajedno s ovim programom. Ako niste, piÅ¡ite Zadužbini za slobodan softver, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ili [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html proÄitajte na mreži].',
-'version-software' => 'Instaliran softver',
-'version-software-product' => 'Proizvod',
-'version-software-version' => 'Verzija',
+Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove opÅ¡te javne licence] zajedno s ovim programom. Ako niste, piÅ¡ite Zadužbini za slobodan softver, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA ili [//www.gnu.org/licenses/old-licenses/gpl-2.0.html proÄitajte na mreži].',
+'version-software' => 'Instaliran softver',
+'version-software-product' => 'Proizvod',
+'version-software-version' => 'Verzija',
# Special:FilePath
'filepath' => 'Putanja fajla',
@@ -3350,22 +3541,22 @@ Trebalo bi da ste primili [{{SERVER}}{{SCRIPTPATH}}/COPYING primerak GNU-ove opÅ
Slike su prikazane u punoj veliÄini, a druge vrste datoteka se pokreću pomoću njima pridruženim programima.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Pretražite duplikate fajlova',
-'fileduplicatesearch-summary' => 'Pretraga za duplikatima fajlova na bazi njihovih heš vrednosti.
-
-Unesite ime fajla bez prefiksa "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Pretražite duplikate',
-'fileduplicatesearch-filename' => 'Naziv datoteke:',
-'fileduplicatesearch-submit' => 'Pretraga',
-'fileduplicatesearch-info' => '$1 × $2 poksel<br />VeliÄina fajla: $3<br />MIME tip: $4',
-'fileduplicatesearch-result-1' => 'Datoteka „$1“ nema identiÄnih duplikata.',
-'fileduplicatesearch-result-n' => 'Datoteka "$1" ima {{PLURAL:$2|1 identiÄan duplikat|$2 identiÄna duplikata|$2 identiÄnih duplikata}}.',
+'fileduplicatesearch' => 'Pretražite duplikate fajlova',
+'fileduplicatesearch-summary' => 'Pretraga za duplikatima fajlova na bazi njihovih heš vrednosti.',
+'fileduplicatesearch-legend' => 'Pretražite duplikate',
+'fileduplicatesearch-filename' => 'Naziv datoteke:',
+'fileduplicatesearch-submit' => 'Pretraga',
+'fileduplicatesearch-info' => '$1 × $2 poksel<br />VeliÄina fajla: $3<br />MIME tip: $4',
+'fileduplicatesearch-result-1' => 'Datoteka „$1“ nema identiÄnih duplikata.',
+'fileduplicatesearch-result-n' => 'Datoteka "$1" ima {{PLURAL:$2|1 identiÄan duplikat|$2 identiÄna duplikata|$2 identiÄnih duplikata}}.',
+'fileduplicatesearch-noresults' => 'Datoteka pod nazivom „$1“ nije pronađena.',
# Special:SpecialPages
'specialpages' => 'Posebne stranice',
'specialpages-note' => '----
-* ObiÄne posebne stranice
-* <strong class="mw-specialpagerestricted">Zaštićene posebne stranice.</strong>',
+* obiÄne posebne stranice
+* <span class="mw-specialpagerestricted">ograniÄene posebne stranice</span>
+* <span class="mw-specialpagecached">privremeno memorisane posebne stranice</span>',
'specialpages-group-maintenance' => 'Izveštaji',
'specialpages-group-other' => 'Ostale posebne stranice',
'specialpages-group-login' => 'Prijavi se / registruj se',
diff --git a/languages/messages/MessagesSrn.php b/languages/messages/MessagesSrn.php
index 33ccb266..ee931b34 100644
--- a/languages/messages/MessagesSrn.php
+++ b/languages/messages/MessagesSrn.php
@@ -51,62 +51,62 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Tustirpeprewoysi' ),
+ 'Allmessages' => array( 'Boskopu' ),
+ 'Allpages' => array( 'AlaPeprewoysi' ),
+ 'Ancientpages' => array( 'PasaOwruPeprewoysi' ),
+ 'Blockme' => array( 'SpikriMi' ),
'BrokenRedirects' => array( 'BrokoStirpeprewoysi' ),
+ 'Categories' => array( 'Guru' ),
+ 'Contributions' => array( 'Kenki' ),
+ 'Deadendpages' => array( 'NoSkakiPeprewoysi' ),
'Disambiguations' => array( 'PeprewoysiFuKumakriki' ),
- 'Userlogin' => array( 'Kon' ),
- 'Userlogout' => array( 'Gwe' ),
- 'Watchlist' => array( 'Sirey' ),
- 'Recentchanges' => array( 'BakaseywanKenki' ),
- 'Upload' => array( 'Uploti' ),
+ 'DoubleRedirects' => array( 'Tustirpeprewoysi' ),
+ 'Emailuser' => array( 'EmailMasyin' ),
+ 'Fewestrevisions' => array( 'MenaKenki' ),
+ 'Listadmins' => array( 'Sesopurey' ),
+ 'Listbots' => array( 'Botrey' ),
'Listfiles' => array( 'Gefrerey' ),
- 'Newimages' => array( 'NyunGefre' ),
+ 'Listredirects' => array( 'Stirpeprewoysirey' ),
'Listusers' => array( 'Masyinrey' ),
- 'Randompage' => array( 'SomaPapira' ),
+ 'Log' => array( 'Buku' ),
'Lonelypages' => array( 'WawanPeprewoysi' ),
- 'Uncategorizedpages' => array( 'OguruPeprewoysi' ),
- 'Uncategorizedcategories' => array( 'OguruGuru' ),
- 'Uncategorizedimages' => array( 'OguruGefre' ),
- 'Uncategorizedtemplates' => array( 'OguruAnkra' ),
- 'Unusedcategories' => array( 'OtekiGuru' ),
- 'Unusedimages' => array( 'OtekiGefre' ),
- 'Wantedpages' => array( 'WinsiPeprewoysi' ),
- 'Wantedcategories' => array( 'WinsiGuru' ),
+ 'Longpages' => array( 'LangaPeprewoysi' ),
+ 'MIMEsearch' => array( 'MIMEsuku' ),
+ 'Mostcategories' => array( 'PasaGuru' ),
+ 'Mostimages' => array( 'PasaGefre' ),
'Mostlinked' => array( 'PasatekiPeprewoysi' ),
'Mostlinkedcategories' => array( 'PasatekiGuru' ),
'Mostlinkedtemplates' => array( 'PasatekiAnkra' ),
- 'Mostimages' => array( 'PasaGefre' ),
- 'Mostcategories' => array( 'PasaGuru' ),
'Mostrevisions' => array( 'PasaKenki' ),
- 'Fewestrevisions' => array( 'MenaKenki' ),
- 'Shortpages' => array( 'SyartuPeprewoysi' ),
- 'Longpages' => array( 'LangaPeprewoysi' ),
+ 'Movepage' => array( 'PapiraDribi' ),
+ 'Mycontributions' => array( 'MiKenki' ),
+ 'Mypage' => array( 'MiPapira' ),
+ 'Mytalk' => array( 'MiTaki' ),
+ 'Newimages' => array( 'NyunGefre' ),
'Newpages' => array( 'NyunPeprewoysi' ),
- 'Ancientpages' => array( 'PasaOwruPeprewoysi' ),
- 'Deadendpages' => array( 'NoSkakiPeprewoysi' ),
'Protectedpages' => array( 'TapuPeprewoysi' ),
- 'Allpages' => array( 'AlaPeprewoysi' ),
+ 'Randompage' => array( 'SomaPapira' ),
+ 'Randomredirect' => array( 'SomaStirpapira' ),
+ 'Recentchanges' => array( 'BakaseywanKenki' ),
+ 'Search' => array( 'Suku' ),
+ 'Shortpages' => array( 'SyartuPeprewoysi' ),
'Specialpages' => array( 'SpesyalPeprewoysi' ),
- 'Contributions' => array( 'Kenki' ),
- 'Emailuser' => array( 'EmailMasyin' ),
- 'Movepage' => array( 'PapiraDribi' ),
- 'Blockme' => array( 'SpikriMi' ),
- 'Categories' => array( 'Guru' ),
- 'Version' => array( 'Si' ),
- 'Allmessages' => array( 'Boskopu' ),
- 'Log' => array( 'Buku' ),
+ 'Uncategorizedcategories' => array( 'OguruGuru' ),
+ 'Uncategorizedimages' => array( 'OguruGefre' ),
+ 'Uncategorizedpages' => array( 'OguruPeprewoysi' ),
+ 'Uncategorizedtemplates' => array( 'OguruAnkra' ),
'Undelete' => array( 'Otrowe' ),
- 'Userrights' => array( 'Masyinlesi' ),
- 'MIMEsearch' => array( 'MIMEsuku' ),
- 'Listredirects' => array( 'Stirpeprewoysirey' ),
+ 'Unusedcategories' => array( 'OtekiGuru' ),
+ 'Unusedimages' => array( 'OtekiGefre' ),
'Unusedtemplates' => array( 'OtekiAnkra' ),
- 'Randomredirect' => array( 'SomaStirpapira' ),
- 'Mypage' => array( 'MiPapira' ),
- 'Mytalk' => array( 'MiTaki' ),
- 'Mycontributions' => array( 'MiKenki' ),
- 'Listadmins' => array( 'Sesopurey' ),
- 'Listbots' => array( 'Botrey' ),
- 'Search' => array( 'Suku' ),
+ 'Upload' => array( 'Uploti' ),
+ 'Userlogin' => array( 'Kon' ),
+ 'Userlogout' => array( 'Gwe' ),
+ 'Userrights' => array( 'Masyinlesi' ),
+ 'Version' => array( 'Si' ),
+ 'Wantedcategories' => array( 'WinsiGuru' ),
+ 'Wantedpages' => array( 'WinsiPeprewoysi' ),
+ 'Watchlist' => array( 'Sirey' ),
'Withoutinterwiki' => array( 'NoInterwiki' ),
);
@@ -263,15 +263,6 @@ $messages = array(
'category-file-count-limited' => '{{PLURAL:$1|A file disi|Den $1 file disi}} de ini a grupu disi.',
'listingcontinuesabbrev' => 'moro',
-'mainpagetext' => "'''MediaWiki seti kon bun.'''",
-'mainpagedocfooter' => 'Luku na ini a [http://meta.wikimedia.org/wiki/Help:Yepi yepibuku] fu si fa fu kebrouki a wikisoftware.
-
-== Moro yepi ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Den seti]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Sani di ben aksi furu (FAQ)]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Boskopu grupu gi nyun meki]',
-
'about' => 'Abra',
'article' => 'Papira',
'newwindow' => '(o opo ini wan nyun fensre)',
@@ -305,7 +296,6 @@ $messages = array(
'history' => 'Historia fu a papira',
'history_short' => 'Historia',
'updatedmarker' => 'kenki sensi mi laste fisiti',
-'info_short' => 'Infrumasie',
'printableversion' => 'Print',
'permalink' => 'Permalink',
'print' => 'Kwinsi',
@@ -445,7 +435,6 @@ A kan taki a abi wan noso moro karakter san no bun fu kebroiki gi nen.',
'viewsourcefor' => 'fu $1',
'protectedpagetext' => 'A papira disi sroto gi kenki.',
'viewsourcetext' => 'Yu kan luku nanga kopi a source fu a papira disi:',
-'customcssjsprotected' => 'Yu no kan kenki a papira disi, bika a abi seti fu wan tra kebroikiman.',
'ns-specialprotected' => 'Spesrutu papira no kan kenki.',
'titleprotected' => "[[User:$1|$1]] sroto a meki fu wan papira nanga a nen disi
Fu san ede: ''$2''.",
@@ -490,7 +479,7 @@ Kenki den seti fu yu browser so dati a kan kisi den cookies disi, én pruberi ba
'loginsuccesstitle' => 'Yu psa kon now.',
'loginsuccess' => "'''Now yu de na tapu {{SITENAME}} leki \"\$1\".'''",
'nosuchuser' => 'No wan kebroikiman de san nen "$1".<br />Luku efu yu skrifi a nen bun, noso meki an nyun account.',
-'nosuchusershort' => 'No wan kebroikiman de di nen "<nowiki>$1</nowiki>".<br />Luku efu yu skrifi a nen bun.',
+'nosuchusershort' => 'No wan kebroikiman de di nen "$1".<br />Luku efu yu skrifi a nen bun.',
'nouserspecified' => 'Yu musu gi wan kebroikiman nen.',
'wrongpassword' => 'Psa wortu no bun.<br />
Pruberi baka.',
@@ -515,7 +504,7 @@ Bifo tra e-mail kan seni go na a account, yu musu du san skrifi ini a e-mail fu
'createaccount-title' => 'Masyin skopu fu {{SITENAME}}',
'loginlanguagelabel' => 'Tongo: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Kenki yu waktiwortu',
'resetpass_header' => 'Kenki yu waktiwortu',
'oldpassword' => 'Owru waktiwortu:',
@@ -534,8 +523,6 @@ Bifo tra e-mail kan seni go na a account, yu musu du san skrifi ini a e-mail fu
'extlink_tip' => 'Miti go na dorosey (no fergiti fu poti http:// fosi)',
'headline_sample' => 'Pisi ede nen',
'headline_tip' => 'Pisi ede nen',
-'math_sample' => 'Poti formula dyaso',
-'math_tip' => 'Formula fu teri (LaTeX)',
'nowiki_sample' => 'Skrifi sondro wiki skrifi-fasi dyaso',
'nowiki_tip' => 'Skotu a wiki skrifi-fasi',
'image_tip' => 'Media file',
@@ -677,7 +664,6 @@ A kan ben trowe efu dribi.
'changepassword' => 'Kenki yu waktiwortu',
'prefs-skin' => 'Buba',
'skin-preview' => 'Si-na-fesi',
-'prefs-math' => 'Fomula',
'datedefault' => 'No wana',
'prefs-datetime' => 'Datum nanga ten',
'prefs-personal' => 'Masyinmasi',
@@ -693,8 +679,6 @@ A kan ben trowe efu dribi.
'columns' => 'Kolum:',
'searchresultshead' => 'Suku',
'resultsperpage' => 'Ris ies papira:',
-'contextlines' => 'Lina ies ris:',
-'contextchars' => 'Kontekst ies lina:',
'stub-threshold' => 'Dupolo fu seti <a href="#" class="stub">stub</a>:',
'recentchangesdays' => 'Teki fu dey tu libi si ini bakaseywan kenki:',
'recentchangescount' => 'Teki fu peprewoysi ini bakaseywan kenki:',
@@ -981,11 +965,9 @@ Papira ini [[Special:Watchlist|yu Tan Luku réy]] '''fatu'''.",
# Watchlist
'watchlist' => 'Mi Tan Luku réy',
'mywatchlist' => 'Mi Tan luku réy',
-'addedwatch' => 'Presi a yu sirey',
'addedwatchtext' => "A papira \"[[:\$1]]\" ben presi a yu [[Special:Watchlist|sirey]]. Folo kenki fu disi papira nanga a taki sey opo [[Special:Watchlist|yu sirey]] nanga sey '''deku''' ini a [[Special:RecentChanges|rey fu bakseywan kenki]].
Iksi yu wan papira no langar wana si, go na a papira nanga du opo \"No si\" ini a menu.",
-'removedwatch' => 'Trowe fu yu sirey',
'removedwatchtext' => 'A papira "[[:$1]]" ben trowe fu yu sirey.',
'watch' => 'Tan luku',
'watchthispage' => 'Tan luku a papira disi',
@@ -1002,7 +984,7 @@ Iksi yu wan papira no langar wana si, go na a papira nanga du opo \"No si\" ini
'historywarning' => 'Warskow: a papira di yu wani puru abi wan historia:',
'confirmdeletetext' => 'Yu wanaefru ben trowen wan papira, nanga si stori. Gi klari a dyaso-ondro ini a box taki disi we fuli yu miki ben, taki yu den folo luku nanga taki a trowe gu ben nanga a [[{{MediaWiki:Policy-url}}|polisi]].',
'actioncomplete' => 'Aksi e du',
-'deletedtext' => '"<nowiki>$1</nowiki>" ben e trowe. Si a $2 fu wan sibuku fu bakaseywan trowe.',
+'deletedtext' => '"$1" ben e trowe. Si a $2 fu wan sibuku fu bakaseywan trowe.',
'deletedarticle' => 'puru "[[$1]]"',
'dellogpage' => 'Log buku fu puru',
'deletecomment' => 'Yesikrari:',
@@ -1020,7 +1002,7 @@ Iksi yu wan papira no langar wana si, go na a papira nanga du opo \"No si\" ini
'protectexpiry' => 'Lasi:',
'protect_expiry_invalid' => 'A lasi ben fowtu.',
'protect_expiry_old' => 'A lasi ben ini iksini.',
-'protect-text' => "Dyaso ben yu kan tu kenki nanga aluku a tapunivo fu a papira '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Dyaso ben yu kan tu kenki nanga aluku a tapunivo fu a papira '''$1'''.",
'protect-locked-access' => "'''Yu masyin abi no lesi tu kenki a tapunivo.'''
Disi ben a tapunivo fu a papira '''[[$1]]''' now:",
'protect-cascadeon' => 'Disi papira ben tapu sins a ini den folo {{PLURAL:$1|papira|peprewoysi}} ben e presi, dy tapu ben nanga a kaskade-opsi. A tapunivo kenki abi no efekti.',
@@ -1184,21 +1166,16 @@ Yu ka luku a source.',
'siteuser' => '{{SITENAME}}-masyin $1',
'siteusers' => '{{SITENAME}}-masyin $1',
-# Math errors
-'math_lexing_error' => 'leksikografi fowtu',
-'math_syntax_error' => 'sintaki fowtu',
-
# Browsing diffs
'previousdiff' => '↠A psa kenki',
'nextdiff' => "A kenki d'e kon →",
# Media information
-'widthheightpage' => '$1×$2, $3 peprewoysi',
-'file-info-size' => '$1 × $2 pixel, file marki: $3, MIME-type: $4',
-'file-nohires' => '<small>Moro srapu no de.</small>',
-'svg-long-desc' => 'SVG file, marki $1 × $2 pixel, bigi: $3',
-'show-big-image' => 'Moro srapu',
-'show-big-image-thumb' => '<small>Bigi fu a luku-na-fesi disi: $1 × $2 pixel</small>',
+'widthheightpage' => '$1×$2, $3 peprewoysi',
+'file-info-size' => '$1 × $2 pixel, file marki: $3, MIME-type: $4',
+'file-nohires' => '<small>Moro srapu no de.</small>',
+'svg-long-desc' => 'SVG file, marki $1 × $2 pixel, bigi: $3',
+'show-big-image' => 'Moro srapu',
# Special:NewFiles
'newimages' => 'Nyun file',
@@ -1227,18 +1204,22 @@ Trawan o kibri.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Kenki a file disi ini wan dorosey wrokosani.',
-'edit-externally-help' => 'Luku ini a [http://www.mediawiki.org/wiki/Manual:External_editors skorobuku fu den seti] gi moro yepi.',
+'edit-externally-help' => 'Luku ini a [//www.mediawiki.org/wiki/Manual:External_editors skorobuku fu den seti] gi moro yepi.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ala',
-'imagelistall' => 'ala',
-'watchlistall2' => 'ala',
-'namespacesall' => 'ala',
-'monthsall' => 'ala',
+'watchlistall2' => 'ala',
+'namespacesall' => 'ala',
+'monthsall' => 'ala',
# action=purge
'confirm_purge_button' => 'oki',
diff --git a/languages/messages/MessagesSs.php b/languages/messages/MessagesSs.php
index 56c4439f..65314818 100644
--- a/languages/messages/MessagesSs.php
+++ b/languages/messages/MessagesSs.php
@@ -75,8 +75,6 @@ $messages = array(
'index-category' => 'Makhasi lacokelelwe',
'noindex-category' => 'Makhasi lasabalele',
-'mainpagetext' => "'''i-MediaWiki seyifakeke ngalokuphelele.'''",
-
'about' => 'Kabanti',
'article' => 'Likhasi lentfo',
'newwindow' => '(kuvulekela tukweli-window lelisha)',
@@ -111,7 +109,6 @@ $messages = array(
'searcharticle' => 'Hamba',
'history' => 'Umlandvo walelikhasi',
'history_short' => 'Umlandvo',
-'info_short' => 'Lwati',
'print' => 'Print',
'edit' => 'Hlela',
'create' => 'Yakha',
diff --git a/languages/messages/MessagesSt.php b/languages/messages/MessagesSt.php
index a69697e9..9c7e960e 100644
--- a/languages/messages/MessagesSt.php
+++ b/languages/messages/MessagesSt.php
@@ -60,7 +60,6 @@ $messages = array(
'search' => 'Fuputsa',
'history' => 'Nalane',
'history_short' => 'Nalane',
-'info_short' => 'Tlhahiso-leseding',
'newpage' => 'Leqephe le letjha',
'talkpage' => 'Qoqa ka leqephe lena',
'talk' => 'Moqoqo',
@@ -93,7 +92,7 @@ $messages = array(
'badretype' => 'Mapetjo a mabedi o a ngotseng ha a tshwane.',
'mailmypassword' => 'Nthomele password ya ka ka email',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Lepetjo la kgale:',
'newpassword' => 'Lepetjo le letjha:',
'retypenew' => 'Ngola lepetjo le letjha hape:',
@@ -161,7 +160,4 @@ Also see [[Special:WantedCategories|wanted categories]].',
'allmessagesdefault' => 'Se neng se ngotswe pele',
'allmessagescurrent' => 'Se ngotsweng hona jwale',
-# Info page
-'infosubtitle' => 'Tlhahiso-leseding ka leqephe',
-
);
diff --git a/languages/messages/MessagesStq.php b/languages/messages/MessagesStq.php
index ab93721a..defeb16a 100644
--- a/languages/messages/MessagesStq.php
+++ b/languages/messages/MessagesStq.php
@@ -46,7 +46,7 @@ $messages = array(
'tog-newpageshidepatrolled' => 'Kontrollierde Sieden ap ju Lieste „Näie Sieden“ ferbierge',
'tog-extendwatchlist' => 'Uutgediende Beooboachtengslieste tou Anwiesenge fon aal Annerengen',
'tog-usenewrc' => 'Fermeerde Deerstaalenge fon do "Lääste Annerengen" (bruukt Javascript)',
-'tog-numberheadings' => 'Uurschrifte automatisk nuumerierje',
+'tog-numberheadings' => 'Uurskrifte automatisk nuumerierje',
'tog-showtoolbar' => 'Beoarbaidengs-Reewen anwiese',
'tog-editondblclick' => 'Sieden mäd Dubbeldklik beoarbaidje (JavaScript)',
'tog-editsection' => 'Links toun Beoarbaidjen fon eenpelde Ousatse anwiese',
@@ -69,9 +69,9 @@ $messages = array(
'tog-oldsig' => 'Foarbekiek fon ju aktuälle Signatuur:',
'tog-fancysig' => 'Unnerskrift as Wikitext behonnelje (sunner automatiske Ferlinkenge)',
'tog-externaleditor' => 'Externen Editor as Standoard benutsje (bloot foar Experte, der mouten spezielle Ienstaalengen ap dän oaine Computer moaked wäide.
-[http://www.mediawiki.org/wiki/Manual:External_editors Moor Information hiertou.])',
+[//www.mediawiki.org/wiki/Manual:External_editors Moor Information hiertou.])',
'tog-externaldiff' => 'Extern Diff-Program as Standoard benutsje (bloot foar Experte, der mouten spezielle Ienstaalengen ap dän oaine Computer moaked wäide.
- [http://www.mediawiki.org/wiki/Manual:External_editors Wiedere Informatione hiertou.])',
+ [//www.mediawiki.org/wiki/Manual:External_editors Wiedere Informatione hiertou.])',
'tog-showjumplinks' => '"Wikselje tou"-Links muugelk moakje',
'tog-uselivepreview' => 'Live-Foarbekiek nutsje (JavaScript) (experimentell)',
'tog-forceeditsummary' => 'Woarskauje, wan bie dät Spiekerjen ju Touhoopefoatenge failt',
@@ -168,9 +168,6 @@ $messages = array(
'index-category' => 'Indizierde Sieden',
'noindex-category' => 'Nit indizierde Sieden',
-'mainpagetext' => "'''Ju MediaWiki Software wuude mäd Ärfoulch installierd.'''",
-'mainpagedocfooter' => 'Sjuch ju [http://meta.wikimedia.org/wiki/MediaWiki_localization Dokumentation tou de Anpaasenge fon dän Benutseruurfläche] un dät [http://meta.wikimedia.org/wiki/Help:Contents Benutserhondbouk] foar Hälpe tou ju Benutsenge un Konfiguration.',
-
'about' => 'Uur',
'article' => 'Inhoold Siede',
'newwindow' => '(eepent in näi Finster)',
@@ -221,10 +218,10 @@ $messages = array(
'history' => 'Versione',
'history_short' => 'Geskichte',
'updatedmarker' => '(annerd)',
-'info_short' => 'Information',
'printableversion' => 'Drukversion',
'permalink' => 'Permanentlink',
'print' => 'drukke',
+'view' => 'Leese',
'edit' => 'Siede beoarbaidje',
'create' => 'Moakje',
'editthispage' => 'Siede beoarbaidje',
@@ -232,6 +229,7 @@ $messages = array(
'delete' => 'Läskje',
'deletethispage' => 'Disse Siede läskje',
'undelete_short' => '{{PLURAL:$1|1 Version|$1 Versione}} wier häärstaale',
+'viewdeleted_short' => '{{PLURAL:$1|1 läskeden Beoarbaidengsfoargang|$1 läskede Beoarbaidengsfoargange}} bekiekje',
'protect' => 'skutsje',
'protect_change' => 'annerje',
'protectthispage' => 'Siede skutsje',
@@ -315,6 +313,8 @@ $1',
'toc' => 'Inhooldsferteeknis',
'showtoc' => 'Anwiese',
'hidetoc' => 'ferbierge',
+'collapsible-collapse' => 'Ienklapje',
+'collapsible-expand' => 'Uutklapje',
'thisisdeleted' => '$1 ankiekje of wier häärstaale?',
'viewdeleted' => '$1 anwiese?',
'restorelink' => '{{PLURAL:$1|1 läskede Beoarbaidengsfoargang|$1 läskede Beoarbaidengsfoargange}}',
@@ -408,12 +408,11 @@ Oufroage: $2',
'protectedinterface' => 'Disse Siede änthaalt Text foar dät Sproak-Interface fon ju Software un is speerd, uum Misbruuk tou ferhinnerjen.',
'editinginterface' => "'''Woarskauenge:''' Du beoarbaidest ne Siede ju der bruukt wäd, Interface-Text foar ju Software tou lääwerjen.
Annerengen ap disse Siede wirkje sik uut ap ju Benutseruurfläche foar uur Bruukere.
-Foar Uursättengen koast du fielicht beeter [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] bruuke, dät is dät MediaWiki Lokalisierengsprojekt.",
+Foar Uursättengen koast du fielicht beeter [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net] bruuke, dät is dät MediaWiki Lokalisierengsprojekt.",
'sqlhidden' => '(SQL-Oufroage ferbierged)',
'cascadeprotected' => 'Disse Siede is tou Beoarbaidenge speerd. Ju is in do {{PLURAL:$1|foulgjende Siede|foulgjende Sieden}} ienbuunen, do der middels ju Kaskadenspeeroption skutsed {{PLURAL:$1|is|sunt}}:
$2',
'namespaceprotected' => "Du hääst neen Begjuchtigenge, ju Siede in dän '''$1'''-Noomensruum tou beoarbaidjen.",
-'customcssjsprotected' => 'Du bäst nit begjuchtiged disse Siede tou beoarbaidjen, deer ju tou do persöönelke Ienstaalengen fon n uur Benutser heert.',
'ns-specialprotected' => 'Spezioalsieden konnen nit beoarbaided wäide.',
'titleprotected' => "Ne Siede mäd dissen Noome kon nit moaked wäide.
Ju Speere wuude truch [[User:$1|$1]] mäd ju Begruundenge ''$2'' ienroat.",
@@ -460,12 +459,14 @@ Ferjeet nit, dien [[Special:Preferences|{{SITENAME}}-Ienstaalengen]] antoupaasje
'createaccounterror' => 'Benutserkonto kuud nit moaked wäide: $1',
'nocookiesnew' => 'Dien Benutsertougong wuude kloor moaked, man du bäst nit anmälded. {{SITENAME}} benutset Cookies toun Anmäldjen fon do Benutsere. Du hääst in dien Browser-Ienstaalengen Cookies deaktivierd. Uum dien näie Benutsertougong tou bruuken, läit jädden dien Browser Cookies foar {{SITENAME}} annieme un mäldje die dan mäd dien juust iengjuchten Benutsernoome un Paaswoud an.',
'nocookieslogin' => '{{SITENAME}} benutset Cookies toun Anmäldjen fon dän Benutser. Du hääst in dien Browser-Ienstaalengen Cookies deaktivierd, jädden aktivierje do un fersäik et fonnäien.',
+'nocookiesfornew' => 'Dät Benutserkonto wuud nit moaked, deer ju Doatenhäärkumst nit uutfuunen wäide kuude.
+Dät mout sicher moaked wäide, dät Cookies aktivierd sunt. Deerätter diissen Siede wiere leede un et wier fersäike.',
'noname' => 'Du moast n Benutsernoome anreeke.',
'loginsuccesstitle' => 'Anmäldenge mäd Ärfoulch',
'loginsuccess' => "'''Du bäst nu as \"\$1\" bie {{SITENAME}} anmälded.'''",
'nosuchuser' => 'Die Benutsernoome "$1" bestoant nit.
Uurpröif ju Skrieuwwiese (Groot-/Littekskrieuwenge beoachtje) of [[Special:UserLogin/signup|mäld die as näien Benutser an]].',
-'nosuchusershort' => 'Die Benutsernooome "<nowiki>$1</nowiki>" bestoant nit. Uurpröif ju Skrieuwwiese.',
+'nosuchusershort' => 'Die Benutsernooome "$1" bestoant nit. Uurpröif ju Skrieuwwiese.',
'nouserspecified' => 'Reek jädden n Benutsernoome an.',
'login-userblocked' => 'Dissen Benutser is speerd. Anmäldenge nit ferlööwed.',
'wrongpassword' => 'Dät Paaswoud is falsk. Fersäik dät jädden fonnäien.',
@@ -480,7 +481,7 @@ Uurpröif ju Skrieuwwiese (Groot-/Littekskrieuwenge beoachtje) of [[Special:User
Ignorier disse E-Mail, in dän Fal du ju nit sälwen anfoarderd hääst of wan du dien oold Paaswoud wier betoanke kuust. Dät oolde Paaswoud blift dan wieders gultich.',
'noemail' => 'Benutser "$1" häd neen Email-Adrässe anroat of häd ju E-Mail-Funktion deaktivierd.',
'noemailcreate' => 'Du moast ne gultige E-Mail-Adresse anreeke',
-'passwordsent' => 'N näi temporär Paaswoud wuude an ju Email-Adrässe fon Benutser "$1" soand. Mäldje die jädden deermäd, soo gau as du dät kriegen hääst. Dät oolde Paaswoud blift uk ätters gultich.',
+'passwordsent' => 'N näi temporär Paaswoud wuude an ju Email-Adrässe fon Benutser "$1" soand. Mäldje die jädden deermäd, so gau as du dät kriegen hääst. Dät oolde Paaswoud blift uk ätters gultich.',
'blocked-mailpassword' => 'Ju fon die ferwoande IP-Adresse is foar dät Annerjen fon Sieden speerd. Uum n Misbruuk tou ferhinnerjen, wuude ju Muugelkhaid tou ju Anfoarderenge fon n näi Paaswoud ieuwenfals speerd.',
'eauthentsent' => 'Ne Bestäätigengs-Email wuude an ju anroate Adrässe fersoand. Aleer n Email fon uur
Benutsere uur ju {{SITENAME}}-Mailfunktion ämpfangd wäide kon, mout ju Adrässe un hiere
@@ -506,13 +507,14 @@ In dän Fal dät Benutserkonto uut Fersjoon anlaid wuude, koast du disse Ätterg
'usernamehasherror' => 'Benutsernoomen duuren neen Ruuten-Teekene änthoolde',
'login-throttled' => 'Du hääst tou oafte fersoacht, die antoumäldjen.
Täif, eer du fon näien fersäkst.',
+'login-abort-generic' => 'Dien Ounmäldenge waas nit ärffoulchriek - oubreeken',
'loginlanguagelabel' => 'Sproake: $1',
'suspicious-userlogout' => 'Dien Oumälde-Anfroage wuud ferwäigerd, deer ju fermoudelk fon n defekten Browser of n Cache-Proxy soand wuud.',
# E-mail sending
'php-mail-error-unknown' => 'Uunbekoanden Failer mäd ju Funktion mail() fon PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Paaswoud annerje',
'resetpass_announce' => 'Anmäldenge mäd dän uur E-Mail tousoande Code. Uum ju Anmäldenge outousluuten, moast du nu n näi Paaswoud wääle.',
'resetpass_header' => 'Paaswoud annerje',
@@ -529,6 +531,10 @@ Täif, eer du fon näien fersäkst.',
Muugelkerwiese hääst du dien Paaswoud al mäd Ärfoulch annerd of n näi tiedelk Paaswoud fräiged.',
'resetpass-temp-password' => 'Tiedelk Paaswoud:',
+# Special:PasswordReset
+'passwordreset' => 'Paaswoud touräächsätte',
+'passwordreset-username' => 'Benutsernoome:',
+
# Edit page toolbar
'bold_sample' => 'Fatten Text',
'bold_tip' => 'Fatten Text',
@@ -540,8 +546,6 @@ Muugelkerwiese hääst du dien Paaswoud al mäd Ärfoulch annerd of n näi tiede
'extlink_tip' => 'Externen Link (http:// beoachtje)',
'headline_sample' => 'Ieuwene 2 Uurskrift',
'headline_tip' => 'Ieuwene 2 Uurskrift',
-'math_sample' => 'Formel hier ienföigje',
-'math_tip' => 'Mathematiske Formel (LaTeX)',
'nowiki_sample' => 'Uunformattierden Text hier ienföigje',
'nowiki_tip' => 'Uunformattierden Text',
'image_sample' => 'Biespil.jpg',
@@ -631,7 +635,7 @@ Du koast dissen Tittel ap do uur Sieden [[Special:Search/{{PAGENAME}}|säike]],
'noarticletext-nopermission' => 'Der is apstuuns noch naan Text ap disse Siede.
Du koast dissen Tittel ap do uur Sieden [[Special:Search/{{PAGENAME}}|säike]]
of <span class="plainlinks">in do touheerige [{{fullurl:{{#special:Log}}|page={{FULLPAGENAMEE}}}} Logbouke säike].</span>',
-'userpage-userdoesnotexist' => 'Dät Benutserkonto „$1“ is nit deer. Pröif, of du disse Siede wuddelk moakje/beoarbaidje wolt.',
+'userpage-userdoesnotexist' => 'Dät Benutserkonto „<nowiki>$1</nowiki>“ is nit deer. Pröif, of du disse Siede wuddelk moakje/beoarbaidje wolt.',
'userpage-userdoesnotexist-view' => 'Benutserkonto „$1“ bestoant nit.',
'blocked-notice-logextract' => 'Dissen Benutser is apstuuns speerd.
Foar Information foulget n aktuellen Iendraach uut dät Benutser-Logbouk:',
@@ -662,6 +666,7 @@ Skuul dät Problem bestounden blieuwe, [[Special:UserLogout|mäldje die ou]] un
'''Fersäik et fonnäien, wan du unner ju foulgjende Textfoarskau noch moal ap „Siede spiekerje“ klikst. Skuul dät Problem bestounden blieuwe, [[Special:UserLogout|mäld die ou]] un deerätter wier an.'''",
'token_suffix_mismatch' => "'''Dien Beoarbaidenge wuude touräächwiesd, deer dien Browser Teekene in dät Beoarbaidje-Token ferstummeld häd.
Ne Spiekerenge kon dän Siedeninhoold fernäile. Dit geböärt bietiede truch ju Benutsenge fon n anonymen Proxy-Tjoonst, die der failerhaft oarbaidet.'''",
+'edit_form_incomplete' => "'''Die Inhoold fon dät Beoarbaidengsformular häd dän Server nit fulboodich beloanged. Pröif dien Beoarbaidengen ap Fulständegaid un fersäik dät noch insen.",
'editing' => 'Beoarbaidjen fon $1',
'editingsection' => 'Beoarbaidje fon $1 (Apsats)',
'editingcomment' => 'Beoarbaidjen fon $1 (Näi Stuk)',
@@ -837,7 +842,7 @@ Uur Administratore ap {{SITENAME}} hääbe Tougriep ap dän ferstatte Inhoold un
'revdelete-radio-set' => 'Jee',
'revdelete-radio-unset' => 'Noa',
'revdelete-suppress' => 'Gruund fon ju Läskenge uk foar Administratore ferstopped',
-'revdelete-unsuppress' => 'Ienschränkengen foar wier häärstoalde Versione aphieuwje',
+'revdelete-unsuppress' => 'Ienskränkengen foar wier häärstoalde Versione aphieuwje',
'revdelete-log' => 'Gruund:',
'revdelete-submit' => 'Ap uutwäälde {{PLURAL:$1|Version|Versione}} anweende',
'revdelete-logentry' => 'Versionsansicht annerd foar [[$1]]',
@@ -933,7 +938,7 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
'searchsubtitle' => 'Dien Säikanfroage: „[[:$1|$1]]“ ([[Special:Prefixindex/$1|aal mäd „$1“ ounfangende Sieden]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|aal Sieden, do ätter „$1“ ferlinkje]])',
'searchsubtitleinvalid' => 'Foar dien Säikanfroage „$1“.',
'toomanymatches' => 'Ju Antaal fon Säikresultoate is tou groot, fersäik ne näie Oufroage.',
-'titlematches' => 'Uureenstämmengen mäd Uurschrifte',
+'titlematches' => 'Uureenstämmengen mäd Uurskrifte',
'notitlematches' => 'Neen Uureenstimmengen',
'textmatches' => 'Uureenstämmengen mäd Texte',
'notextmatches' => 'Neen Uureenstimmengen',
@@ -1007,7 +1012,6 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
'changepassword' => 'Paaswoud annerje',
'prefs-skin' => 'Skin',
'skin-preview' => 'Foarskau',
-'prefs-math' => 'TeX',
'datedefault' => 'Neen Preferenz',
'prefs-datetime' => 'Doatum un Tied',
'prefs-personal' => 'Benutserdoaten',
@@ -1031,8 +1035,6 @@ Staal deertruch sicher, dät ju Versionsgeskichte fon n Artikkel historisk akroa
'columns' => 'Spalten',
'searchresultshead' => 'Säike (010)',
'resultsperpage' => 'Träffere pro Siede:',
-'contextlines' => 'Teekene pro Träffer:',
-'contextchars' => 'Teekene pro Riege:',
'stub-threshold' => '<a href="#" class="stub">Kuute Artikkele</a> markierje bi (in Byte):',
'stub-threshold-disabled' => 'Deaktivierd',
'recentchangesdays' => 'Antaal fon Deege, do ju Lieste fon „Lääste Annerengen“ standoardmäitich uumfoatje skäl:',
@@ -1045,7 +1047,7 @@ Hier n toufällich generierden Wäid, dän du ferweende koast: $1',
'savedprefs' => 'Dien Ienstaalengen wuuden spiekerd.',
'timezonelegend' => 'Tiedzone:',
'localtime' => 'Tied bie Jou:',
-'timezoneuseserverdefault' => 'Standoardtied fon dän Server',
+'timezoneuseserverdefault' => 'Standoardtied fon dän Server ($1)',
'timezoneuseoffset' => 'Uur (Unnerskeed anreeke)',
'timezoneoffset' => 'Unnerskeed¹:',
'servertime' => 'Tied ap dän Server:',
@@ -1093,8 +1095,8 @@ Ju duur maximoal $1 {{PLURAL:$1|Teeken|Teekene}} loang weese.',
'prefs-help-gender' => 'Optionoal: Wäd foar ju geslächtskorrekte Anrääde fonsieden ju Software benutsed. Disse Information is eepentelk.',
'email' => 'E-Mail',
'prefs-help-realname' => 'Optional. Foar dät anärkaanende Naamen fon dien Noome in Touhoopehong mäd dien Biedraagen.',
-'prefs-help-email' => 'Ju Angoawe fon ne E-Mail-Adresse is optionoal, moaket oawers je Touseendenge muugelk fon n Ärsats-Paaswoud, wan du dien Paaswoud ferjeeten hääst.
-Mäd uur Benutsere koast du uk uur do Benutserdiskussionssieden Kontakt apnieme, sunner dät du dien Identität eepenlääse hougest.',
+'prefs-help-email' => 'Ju Angoawe fon ne E-Mail-Adresse is optionoal, moaket oawers je Touseendenge muugelk fon n Ärsats-Paaswoud, wan du dien Paaswoud ferjeeten hääst.',
+'prefs-help-email-others' => 'Mäd uur Benutsere koast du uk uur do Benutserdiskussionssieden Kontakt apnieme, sunner dät du dien Identität eepenpenlääse hougest.',
'prefs-help-email-required' => 'N gultige Email-Adrässe is nöödich.',
'prefs-info' => 'Basisinformatione',
'prefs-i18n' => 'Internationalisierenge',
@@ -1218,7 +1220,6 @@ Mäd uur Benutsere koast du uk uur do Benutserdiskussionssieden Kontakt apnieme,
'right-userrights' => 'Benutsergjuchte beoarbaidje',
'right-userrights-interwiki' => 'Benutsergjuchte in uur Wikis beoarbaidje',
'right-siteadmin' => 'Doatenboank speere un äntspeere',
-'right-reset-passwords' => 'Dät Paaswoud fon n uur Benutser touräächsätte',
'right-override-export-depth' => 'Exportier Sieden touhoope mäd ferlinkede Sieden bit tou ne Djüpte fon 5',
'right-sendemail' => 'E-Mails an uur Benutsere seende',
@@ -1319,9 +1320,9 @@ Mäd uur Benutsere koast du uk uur do Benutserdiskussionssieden Kontakt apnieme,
'upload_directory_missing' => 'Dät Upload-Ferteeknis ($1) failt un kuud truch dän Webserver uk nit moaked wäide.',
'upload_directory_read_only' => 'Die Webserver häd neen Skrieuwgjuchte foar dät Upload-Ferteeknis ($1).',
'uploaderror' => 'Failer bie dät Hoochleeden',
-'upload-recreate-warning' => "'''Woarschauenge: ne Doatäi fon dissen Noome wuud al läsked of ferschäuwen.'''
+'upload-recreate-warning' => "'''Woarskauenge: ne Doatäi fon dissen Noome wuud al läsked of ferskäuwen.'''
-Der foulget n Uutsuch uut dät Läsk- un Ferschuuwengs-Logbouk fon disse Doatäi.",
+Der foulget n Uutsuch uut dät Läsk- un Ferskuuwengs-Logbouk fon disse Doatäi.",
'uploadtext' => "Bruuk dit Formular uum näie Doatäie hoochtouleeden.
Gung tou ju [[Special:FileList|Lieste fon hoochleedene Doatäie]], uum foarhoundene Doatäie tou säiken un antouwiesen. Sjuch uk dät [[Special:Log/upload|Doatäi-]] un [[Special:Log/delete|Läsk-Logbouk]].
@@ -1355,15 +1356,15 @@ Beoachtje, dät, juust as bie normoale Sieden-Inhoolde, uur Benutsere dien DoatÃ
'uploadedfiles' => 'Hoochleedene Doatäie',
'ignorewarning' => 'Woarskauenge ignorierje un Doatäi daach spiekerje',
'ignorewarnings' => 'Woarskauengen ignorierje',
-'minlength1' => 'Bieldedoatäien mouten mindestens tjoo Bouksteeuwen foar dän (eersten) Punkt hääbe.',
+'minlength1' => 'Bieldedoatäien mouten mindestens tjo Bouksteeuwen foar dän (eersten) Punkt hääbe.',
'illegalfilename' => 'Die Doatäinoome "$1" änthaalt ap minste een nit toulät Teeken. Benaam jädden ju Doatäi uum un fersäik, hier fon näien hoochtouleeden.',
'badfilename' => 'Die Datäi-Noome is automatisk annerd tou "$1".',
-'filetype-mime-mismatch' => 'Doatäi-Fergratterenge stimt nit mäd dän MIME-Typ uureen.',
+'filetype-mime-mismatch' => 'Doatäi-Fergratterenge „.$1“ stimt nit mäd dän MIME-Typ ($2) uureen.',
'filetype-badmime' => 'Doatäie mäd dän MIME-Typ „$1“ duuren nit hoochleeden wäide.',
'filetype-bad-ie-mime' => 'Disse Doatäi kon nit hoochleeden wäide, deer die Internet Explorer ju as „$1“ ärkoant, wät n nit ferlööweden potentiell gefoarelken Doatäityp is.',
'filetype-unwanted-type' => "'''„.$1“''' is n nit wonsked Doateiformoat.
{{PLURAL:$3|Ferlööwed Doatäiformoat is|Ferlööwede Doatäiformoate sunt}} $2.",
-'filetype-banned-type' => "'''„.$1“''' is n nit ferlööwed Doatäiformoat.
+'filetype-banned-type' => "'''„.$1“''' {{PLURAL:$4|is n nit ferlööwed Doatäiformoat|sunt nit ferlööwed Doatäiformoate}}.
Ferlööwed {{PLURAL:$3|is|sunt}} $2.",
'filetype-missing' => 'Ju hoochtouleedende Doatäi häd neen Fergratterenge (t. B. „.jpg“).',
'empty-file' => 'Ju uurdraine Doatäi is loos',
@@ -1414,6 +1415,8 @@ Wan du ju Doatäi daach hoochleede moatest, gung dan tourääch un leed dien Doa
'php-uploaddisabledtext' => 'PHP-Doatäi-Uploads wuuden deaktivierd. Wröich ju file_uploads-Ienstaalenge.',
'uploadscripted' => 'Disse Doatäi änthaalt HTML- of Scriptcode, ju bie Fersjoon fon aan Webbrowser apfierd wäide kuude.',
'uploadvirus' => 'Disse Doatäi änthaalt n Virus! Details: $1',
+'uploadjava' => 'Dit is ne ZIP-Doatäi, ju der ne CLASS-Doatäi fon Java änthaalt.
+Dät Hoochleeden fon Java-Doatäie is nit toulät, deer do dät Uumgungen fon Sicherhaidsienskränkengen muugelk moakje kuuden.',
'upload-source' => 'Wälledoatäi',
'sourcefilename' => 'Wälledoatäi:',
'sourceurl' => 'Wälle-URL:',
@@ -1423,10 +1426,6 @@ Wan du ju Doatäi daach hoochleede moatest, gung dan tourääch un leed dien Doa
'upload-options' => 'Hoochleede-Optione',
'watchthisupload' => 'Disse Doatäi beooboachtje',
'filewasdeleted' => 'Ne Doatäi mäd dissen Noome wuude al moal hoochleeden un intwisken wier läsked. Pröif toueerst dän Iendraach in $1, eer du ju Doatäi wuddelk spiekerst.',
-'upload-wasdeleted' => "'''Woarskauenge: Du laatst ne Doatäi hooch, ju der al fröier läsked wuude.'''
-
-Pröif suurgfooldich, of dät fernäide Hoochleeden do Gjuchtlienjen äntspräkt.
-Tou Dien Information foulget dät Läsk-Logbouk mäd ju Begründenge foar ju foargungende Läskenge:",
'filename-bad-prefix' => "Die Doatäinoome begint mäd '''„$1“'''. Dit is in algemeenen die fon ne Digitoalkamera foarroate Doatäinoome un deeruum nit gjucht uurtjuugend.
Reek ju Doatäi n Noome, die dän Inhoold beeter beskrift.",
'upload-success-subj' => 'Mäd Ärfoulch hoochleeden',
@@ -1450,6 +1449,23 @@ Wan dät Problem fääre bestoant, informier n [[Special:ListUsers/sysop|System-
'upload-unknown-size' => 'Uunbekoande Grööte',
'upload-http-error' => 'N HTTP-Failer is aptreeden: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Der is n Failder aptreeden bie dät eepenjen fon ju Doatäi foar ZIP-Wröige.',
+'zip-wrong-format' => 'Ju anroate Doatäi is neen ZIP-Doatäi.',
+'zip-bad' => 'Ju Doatäi is stukken of ne uurwiese nit leesboare ZIP-Doatäi.
+Ju kon deeruum nit ap Sicherhaid wröiged wäide.',
+'zip-unsupported' => 'Disse ZIP-Doatäi häd Komprimierengsoainskuppe, do der nit fon MediaWiki stöänd wäide.
+Ju kon deeruum nit ap Sicherhaid wröiged wäide.',
+
+# Special:UploadStash
+'uploadstash' => 'Foarouspiekerenge bie dät Hoochleeden',
+'uploadstash-summary' => 'Disse Siede moaket dät Tougriep muugelk ap Doatäie, do der hoochleeden wuuden, blw. juust hoochleeden wäide, man noch nit ap dän Wiki publisierd wuuden. Disse Doatäie sunt, dän hoochleedende Benutser uutgenuumen, noch nit eepentelk ientoukiekjen.',
+'uploadstash-clear' => 'Do foaruut spiekerde Doatäie wächhoalje',
+'uploadstash-nofiles' => 'Dät rakt neen foaruut spiekerde Doatäite.',
+'uploadstash-badtoken' => 'Dät Wächhoaljen fon foaruut spiekerde Doatäie hied naan Ärfoulch, fielicht deeruum dät do Sittengsdoaten ouron sunt. Fersäik nochmoal.',
+'uploadstash-errclear' => 'Dät Wächhoaljen fon in foaruut spiekerde Doatäie hied naan Ärfoulch.',
+'uploadstash-refresh' => 'Lieste fon Doatäie aktualisierje.',
+
# img_auth script messages
'img-auth-accessdenied' => 'Tougriep ferwäigerd',
'img-auth-nopathinfo' => 'PATH_INFO failt.
@@ -1528,7 +1544,6 @@ Ju foulgjende Lieste wiest bloot {{PLURAL:$1|dän eerste Link|do eerste $1 Linke
Ne [[Special:WhatLinksHere/$2|fulständige Lieste]] is ferföigboar.',
'nolinkstoimage' => 'Naan Artikkel benutset disse Bielde.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Wiedere Ferbiendengen]] foar disse Doatäi.',
-'redirectstofile' => '{{PLURAL:$1|Ju foulgjende Doatäi laitet|Do foulgjende $1 Doatäie laitje}} ap disse Doatäi fääre:',
'duplicatesoffile' => '{{PLURAL:$1|Ju foulgjende Doatäi is n Duplikoat|Do foulgjende $1 Doatäie sunt Duplikoate}} fon disse Doatäi ([[Special:FileDuplicateSearch/$2|wiedere Details]]):',
'sharedupload' => 'Disse Doatäi stamt uut $1 un duur fon uur Projekte ferwoand wäide.',
'sharedupload-desc-there' => 'Disse Doatäi stamt uut $1 un duur fon uur Projekte ferwoand wäide. Sjuch ap ju [$2 Doatäibeskrieuwengssiede] ätter wiedere Informatione.',
@@ -1620,12 +1635,13 @@ Ne [[Special:WhatLinksHere/$2|fulständige Lieste]] is ferföigboar.',
Jie skuulen insteede deerfon ap ju eegentelk meende Siede ferlinkje.<br />
Ne Siede wäd as Begriepskläärengssiede behonneld, wan [[MediaWiki:Disambiguationspage]] ap ju ferlinket.",
-'doubleredirects' => 'Dubbelde Fäärelaitengen',
-'doubleredirectstext' => 'Disse Lieste änthoalt Fääreleedengen, do der ap wiedere Fääreleedengen ferlinkje.
+'doubleredirects' => 'Dubbelde Fäärelaitengen',
+'doubleredirectstext' => 'Disse Lieste änthoalt Fääreleedengen, do der ap wiedere Fääreleedengen ferlinkje.
Älke Riege änthoalt Links tou ju eerste un twäide Fääreleedenge as uk dät Siel fon ju twäide Fääreleedenge, wät foar gewöönelk ju wonskede Sielsiede is, ap ju al ju eerste Fääreleedenge wiese skuul.
<del>Truchstriekene</del> Iendraage wuuden al oumoaked.',
-'double-redirect-fixed-move' => 'dubbelde Fäärelaitenge aplöösd: [[$1]] → [[$2]]',
-'double-redirect-fixer' => 'RedirectBot',
+'double-redirect-fixed-move' => 'dubbelde Fäärelaitenge aplöösd: [[$1]] → [[$2]]',
+'double-redirect-fixed-maintenance' => 'Foarnunner moakjen fon ju dubbelde Fääreleedenge fon [[$1]] ätter [[$2]].',
+'double-redirect-fixer' => 'RedirectBot',
'brokenredirects' => 'Ferkierde Fäärelaitengen',
'brokenredirectstext' => 'Disse Spezioalsiede liestet Truchferwiese ap nit existierjende Sieden:',
@@ -1703,6 +1719,7 @@ Deeruum konnen do hier noch aptäld weese, wan do uk aktiv benutsed wäide.',
'pager-newer-n' => '{{PLURAL:$1|naisten|naiste $1}}',
'pager-older-n' => '{{PLURAL:$1|foarigen|foarige $1}}',
'suppress' => 'Uursicht',
+'querypage-disabled' => 'Disse Spezialsiede wuud deaktivierd uum ju Laistenge tou behoolden.',
# Book sources
'booksources' => 'ISBN-Säike',
@@ -1842,13 +1859,11 @@ As Ouseender wäd ju E-Mail-Adresse uut dien [[Special:Preferences|Ienstaalengen
'watchlistanontext' => 'Du moast die $1, uum dien Beooboachtengslieste tou sjoon of Iendraage ap hier tou beoarbaidjen.',
'watchnologin' => 'Du bäst nit anmälded',
'watchnologintext' => 'Du moast [[Special:UserLogin|anmälded]] weese, uum dien Beooboachtengslieste tou beoarbaidjen.',
-'addedwatch' => 'An Foulgelieste touföiged.',
'addedwatchtext' => "Die Artikkel \"[[:\$1]]\" wuude an dien [[Special:Watchlist|Foulgelieste]] touföiged.
Leetere Annerengen an dissen Artikkel un ju touheerende Diskussionssiede wäide deer liested
un die Artikkel wäd in ju [[Special:RecentChanges|fon do lääste Annerengen]] in '''Fatskrift''' anroat.
Wan du die Artikkel wier fon ju Foulgelieste ou hoalje moatest, klik ap ju Siede ap \"Ferjeet disse Siede\".",
-'removedwatch' => 'Fon ju Beooboachtengsslieste ou hoald',
'removedwatchtext' => 'Ju Siede „[[:$1]]“ wuude fon dien [[Special:Watchlist|Beooboachtengslieste]] wächhoald.',
'watch' => 'Beooboachtje',
'watchthispage' => 'Siede beooboachtje',
@@ -1901,12 +1916,12 @@ Dien früntelk {{SITENAME}} Becheedtälsystem
--
Uum do Ienstaalengen fon dien Beooboachtengslieste antoupaasjen, besäik
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Uum ju Siede fon dien Kontrollieste tou läskjen, besäik
$UNWATCHURL
-Touräächmäldengen un wiedere Hälpe: {{fullurl:{{MediaWiki:Helppage}}}}',
+Touräächmäldengen un wiedere Hälpe: {{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Siede läskje',
@@ -1921,7 +1936,7 @@ Touräächmäldengen un wiedere Hälpe: {{fullurl:{{MediaWiki:Helppage}}}}',
'confirmdeletetext' => 'Jie sunt deerbie, n Artikkel of ne Bielde un aal allere Versione foar altied uut dän Doatenboank tou läskjen. Bitte bestäätigje Jie Jou Apsicht, dät tou dwoon, dät Jie Jou do Konsekwänsen bewust sunt, un dät Jie in Uureenstämmenge mäd uus [[{{MediaWiki:Policy-url}}]] honnelje.',
'actioncomplete' => 'Aktion be-eended',
'actionfailed' => 'Aktion misglukked',
-'deletedtext' => '"<nowiki>$1</nowiki>" wuude läsked.
+'deletedtext' => '"$1" wuude läsked.
In $2 fiende Jie ne Lieste fon do lääste Läskengen.',
'deletedarticle' => '"[[$1]]" wuude läsked',
'suppressedarticle' => 'feranderde ju Sichtboarhaid fon „[[$1]]“',
@@ -1974,7 +1989,7 @@ Sjuch [[Special:ProtectedPages|Skutsede Siede]] foar moor Informatione.',
'protect_expiry_invalid' => 'Ju ienroate Duur is uungultich.',
'protect_expiry_old' => 'Ju Speertied lait in ju fergeene Tied.',
'protect-unchain-permissions' => 'Fröiere Speeroptione aphieuwje',
-'protect-text' => "Hier koast du dän Skutsstoatus foar ju Siede '''<nowiki>$1</nowiki>''' ienkiekje un annerje.",
+'protect-text' => "Hier koast du dän Skutsstoatus foar ju Siede '''$1''' ienkiekje un annerje.",
'protect-locked-blocked' => "Du koast dän Siedenskuts nit annerje, deer dien Benutserkonto speerd is. Hier sunt do aktuelle Siedenskuts-Ienstaalengen foar ju Siede '''„$1“:'''",
'protect-locked-dblock' => "Ju Doatenboank is speerd, die Siedenskuts kon deeruum nit annerd wäide. Hier sunt do aktuelle Siedenskuts-Ienstaalengen foar ju Siede '''„$1“:'''",
'protect-locked-access' => "Du bäst nit begjuchtiged, dän Siedenskutsstoatus tou annerjen. Hier is die aktuälle Skutsstoatus fon ju Siede '''$1''':",
@@ -2068,9 +2083,10 @@ $1',
'undelete-show-file-submit' => 'Jee',
# Namespace form on various pages
-'namespace' => 'Noomensruum:',
-'invert' => 'Uutwoal uumekiere',
-'blanknamespace' => '(Sieden)',
+'namespace' => 'Noomensruum:',
+'invert' => 'Uutwoal uumekiere',
+'namespace_association' => 'Touoardende Noomensruum',
+'blanknamespace' => '(Sieden)',
# Contributions
'contributions' => 'Benutserbiedraage',
@@ -2119,13 +2135,15 @@ Foar Information foulget die aktuelle Iendraach uut dät Speer-Logbouk:',
'whatlinkshere-filters' => 'Filtere',
# Block/unblock
+'autoblockid' => 'Automatiske Speerenge #$1',
+'block' => 'Benutser speere',
+'unblock' => 'Benutser fräireeke',
'blockip' => 'Blokkierje Benutser',
'blockip-title' => 'Benutser speere',
'blockip-legend' => 'IP-Adresse/Benutser speere',
'blockiptext' => 'Mäd dit Formular speerst du ne IP-Adresse of n Benutsernoome, so dät fon deer neen Annerengen moor foarnuumen wäide konnen.
Dit skuul bloot geböäre, uum Vandalismus tou ferhinnerjen un in Uureenstimmenge mäd do [[{{MediaWiki:Policy-url}}|Gjuchtlienjen]].
Reek dän Gruund foar ju Speere oun.',
-'ipaddress' => 'IP-Adrässe:',
'ipadressorusername' => 'IP-Adresse of Benutsernoome:',
'ipbexpiry' => 'Oulooptied (Speerduur):',
'ipbreason' => 'Begruundenge:',
@@ -2138,7 +2156,7 @@ Reek dän Gruund foar ju Speere oun.',
** betruujend Ferhoolden/Belästigenge
** Misbruuk truch moorere Benutserkonten
** Uungoadelge Benutsernoome',
-'ipbanononly' => 'Bloot anonyme Benutsere speere',
+'ipb-hardblock' => 'Anmäldede Benutsere deeran hinderje, Beoarbaidengen unner disse IP-Adtässe foartouniemen',
'ipbcreateaccount' => 'Dät Moakjen fon Benutserkonten ferhinnerje',
'ipbemailban' => 'E-Mail-Fersoand speere',
'ipbenableautoblock' => 'Speer ju aktuell fon dissen Benutser nutsede IP-Adresse as uk automatisk aal foulgjende, fon do uut hie Beoarbaidengen of dät Anlääsen fon Benutseraccounts fersäkt',
@@ -2149,12 +2167,15 @@ Reek dän Gruund foar ju Speere oun.',
'ipbotherreason' => 'Uur/additionelle Begründenge:',
'ipbhidename' => 'Benutsernoome in Beoarbaidengen un Liesten ferstopje.',
'ipbwatchuser' => 'Benutser(diskussions)siede beooboachtje',
-'ipballowusertalk' => 'Benutser duur oaine Diskussionssieden unner sien Speere beoarbaidje',
+'ipb-disableusertalk' => 'Dissen Benutser deeran hinderje sien oaine Diskussionssiede tou beoarbaidjen, soloange hie speerd is',
'ipb-change-block' => 'Speere mäd disse Speerparametere fernäierje',
+'ipb-confirm' => 'Speerenge bestäätigje',
'badipaddress' => 'Dissen Benutser bestoant nit, d.h. die Noome is falsk',
'blockipsuccesssub' => 'Blokkoade geloangen',
'blockipsuccesstext' => 'Ju IP-Adrässe [[Special:Contributions/$1|$1]] wuude blokkierd.
<br />[[Special:IPBlockList|Lieste fon Blokkoaden]].',
+'ipb-blockingself' => 'Du bäst tougong, die sälwen tou speeren! Moatest dät wuudelk dwo?',
+'ipb-confirmhideuser' => 'Du bäst tougong n Benutser in dän Modus "Benutser fersteete" tou speeren. Dät fiert deertou, dät die Benutsernoome in aal Liesten un Logbouke unnerdrukt wäd. Moatest dät wuudelk dwo?',
'ipb-edit-dropdown' => 'Speergruunde beoarbaidje',
'ipb-unblock-addr' => '"$1" fräireeke',
'ipb-unblock' => 'IP-Adrässe/Benutser fräireeke',
@@ -2164,17 +2185,23 @@ Reek dän Gruund foar ju Speere oun.',
'unblockiptext' => 'Benutsje dät Formular, uum ne blokkierde IP-Adrässe fräitoureeken.',
'ipusubmit' => 'Disse Speerenge wächhoalje',
'unblocked' => '[[User:$1|$1]] wuude fräiroat',
+'unblocked-range' => 'Speere foar $1 wuud aphäiwed',
'unblocked-id' => 'Speer-ID $1 wuude fräiroat',
+'blocklist' => 'Speerden Benutser',
'ipblocklist' => 'Speerde Benutsere',
'ipblocklist-legend' => 'Säik ätter n speerden Benutser',
-'ipblocklist-username' => 'Benutsernoome of IP-Adrässe:',
-'ipblocklist-sh-userblocks' => '$1 Benutserspeeren',
-'ipblocklist-sh-tempblocks' => '$1 tiedwiese Speeren',
-'ipblocklist-sh-addressblocks' => '$1 IP-Speeren',
+'blocklist-userblocks' => 'Benutserspeeren fersteete',
+'blocklist-tempblocks' => 'Tiedwiese Speeren fersteete',
+'blocklist-addressblocks' => 'Speeren fon eenpelde IP-Adrässen fersteete',
+'blocklist-timestamp' => 'Tiedstämpel',
+'blocklist-target' => 'Siel',
+'blocklist-expiry' => 'Speerduur bit',
+'blocklist-by' => 'Speerd fon',
+'blocklist-params' => 'Speerparametere',
+'blocklist-reason' => 'Gruund',
'ipblocklist-submit' => 'Säike (015)',
'ipblocklist-localblock' => 'Lokoale Speere',
'ipblocklist-otherblocks' => 'Uur {{PLURAL:$1|Speere|Speeren}}',
-'blocklistline' => '$1, $2 blokkierde $3 ($4)',
'infiniteblock' => 'uunbegränsed',
'expiringblock' => 'eendet an dän $1 uum $2 Uure',
'anononlyblock' => 'bloot Anonyme',
@@ -2197,7 +2224,7 @@ Hier foulget die Iendraach uut dät Unnerdrukkengs-Logbouk:',
'reblock-logentry' => 'annerde ju Speere foar „[[$1]]“ foar dän Tiedruum: $2 $3',
'blocklogtext' => 'Dit is n Logbouk fon Speerengen un Äntspeerengen fon Benutsere un IP-Adrässe.
Automatisk speerde IP-Adrässe sunt nit apnuumen.
-Sjuch ju [[Special:IPBlockList|Lieste fon de speerde IP-Adrässe un Benutsernoomen]] foar aal aktive Speeren.',
+Sjuch ju [[Special:BlockList|Lieste fon de speerde IP-Adrässe un Benutsernoomen]] foar aal aktive Speeren.',
'unblocklogentry' => 'Blokkade fon $1 aphieuwed',
'block-log-flags-anononly' => 'bloot Anonyme',
'block-log-flags-nocreate' => 'Dät Moakjen fon Benutserkonten speerd',
@@ -2211,9 +2238,9 @@ Sjuch ju [[Special:IPBlockList|Lieste fon de speerde IP-Adrässe un Benutsernoom
'ipb_expiry_temp' => 'Ferstatte Benutsernoomen-Speeren skällen permanent weese.',
'ipb_hide_invalid' => 'Dit Konto kon nit unnerdrukt wäide, deer dät toufuul Beoarbaidengen apwiest.',
'ipb_already_blocked' => '„$1“ wuude al speerd.',
-'ipb-needreblock' => '== Speere is al deer ==
-„$1“ is al speerd. Moatest du do Speerparametere annerje?',
+'ipb-needreblock' => '„$1“ is al speerd. Moatest du do Speerparametere annerje?',
'ipb-otherblocks-header' => 'Uur {{PLURAL:$1|Speere|Speeren}}',
+'unblock-hideuser' => 'Disssen Benutser kon nit speerd wäide, deer sin Benutsernoome ferstat wuude.',
'ipb_cant_unblock' => 'Failer: Speer-ID $1 nit fuunen. Ju Speere wuude al aphieuwed.',
'ipb_blocked_as_range' => 'Failer: Ju IP-Adresse $1 wuude as Deel fon ju Beräksspeere $2 indirekt speerd. Ne Äntspeerenge fon $1 alleene is nit muugelk.',
'ip_range_invalid' => 'Uungultige IP-Adräsberäk.',
@@ -2267,7 +2294,7 @@ Die oolde Tittel wäd deerätter tou dän näie fäärelaitje.
Staal sicher, dät di in n Anslus aal [[Special:DoubleRedirects|dubbelde]] of [[Special:BrokenRedirects|breekene Fäärelaitengen]] wröigest.
Du bäst deerfoar feroantwoudelk, dät Links uk fääre ap dät korrekte Siel ferwiese.
-Ju Siede wäd ‘’‘nit’‘’ferschäuwen, sowied et al ne Siede mäd dän foarsäine Tittel rakt, of ju moaste loos weese of ne Fäärelaitenge sunner Versionsgeskichte.
+Ju Siede wäd ‘’‘nit’‘’ferskäuwen, sowied et al ne Siede mäd dän foarsäine Tittel rakt, of ju moaste loos weese of ne Fäärelaitenge sunner Versionsgeskichte.
Dät betjut, dät du ju Uumenaamenge tourääch traale koast, wan du n Failer moaked hääst. Du koast deerjuun neen Siede uurskrieuwe.
'''WOARSKAUENGE!'''
@@ -2366,7 +2393,7 @@ Alternativ is die Export uk mäd de Syntax [[{{#Special:Export}}/{{MediaWiki:Mai
'allmessagesdefault' => 'Standardtext',
'allmessagescurrent' => 'Dissen Text',
'allmessagestext' => 'Dit is ne Lieste fon aal System-Ättergjuchte do in dän MediaWiki-Noomenruum tou Ferföigenge stounde.
-Besäik jädden [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] un [http://translatewiki.net translatewiki.net], wan du mee-oarbaidje wolt an ju MediaWiki-Sortierenge.',
+Besäik jädden [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] un [//translatewiki.net translatewiki.net], wan du mee-oarbaidje wolt an ju MediaWiki-Sortierenge.',
'allmessagesnotsupportedDB' => 'Disse Spezioalsiede stoant nit tou Ferföigenge, deer ju uur dän Parameter <tt>$wgUseDatabaseMessages</tt> deaktivierd wuude.',
'allmessages-filter-legend' => 'Sieuwe',
'allmessages-filter' => 'Sieuwe foar anpaaseden Toustand:',
@@ -2512,9 +2539,7 @@ Do ap dän lokoale Reekener spiekerje un deerätter hier hoochleede.',
'monobook.js' => '/* Ferallerd; benutsje insteede deerfon [[MediaWiki:common.js]] */',
# Metadata
-'nodublincore' => 'Dublin-Core-RDF-Metadoaten sunt foar dissen Server deaktivierd.',
-'nocreativecommons' => 'Creative-Commons-RDF-Metadoaten sunt foar dissen Server deaktivierd.',
-'notacceptable' => 'Die Wiki-Server kon do Doaten foar dien Uutgoawe-Reewe nit apberaitje.',
+'notacceptable' => 'Die Wiki-Server kon do Doaten foar dien Uutgoawe-Reewe nit apberaitje.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonymen Benutser|Anonyme Benutsere}} ap {{SITENAME}}',
@@ -2536,33 +2561,6 @@ Do ap dän lokoale Reekener spiekerje un deerätter hier hoochleede.',
'spam_reverting' => 'Lääste Version sunner Links tou $1 wier häärstoald.',
'spam_blanking' => 'Aal Versione äntheelden Links tou $1, skeenmoaked.',
-# Info page
-'infosubtitle' => 'Siedeninformation',
-'numedits' => 'Antaal fon do Artikkelversione: $1',
-'numtalkedits' => 'Antaal fon do Diskussionsversione: $1',
-'numwatchers' => 'Antaal fon do Beooboachtere: $1',
-'numauthors' => 'Antaal fon do Artikkelautore: $1',
-'numtalkauthors' => 'Antaal fon do Diskutante: $1',
-
-# Math options
-'mw_math_png' => 'Altied as PNG deerstaale',
-'mw_math_simple' => 'Eenfache TeX as HTML deerstaale, uurs PNG',
-'mw_math_html' => 'Wan muugelk as HTML deerstaale, uurs PNG',
-'mw_math_source' => 'As TeX beläite (foar Textbrowsere)',
-'mw_math_modern' => 'Antouräiden foar moderne Browsere',
-'mw_math_mathml' => 'MathML',
-
-# Math errors
-'math_failure' => 'Parser-Failer',
-'math_unknown_error' => 'Uunbekoande Failer',
-'math_unknown_function' => 'Uunbekoande Funktion',
-'math_lexing_error' => "'Lexing'-Failer",
-'math_syntax_error' => 'Syntaxfailer',
-'math_image_error' => 'ju PNG-Konvertierenge sluuch fail; korrekte Installation fon LaTeX un dvipng wröigje (of dvips + gs + convert)',
-'math_bad_tmpdir' => 'Kon dät Temporärferteeknis foar mathematiske Formeln nit anlääse of beskrieuwe.',
-'math_bad_output' => 'Kon dät Sielferteeknis foar mathematiske Formeln nit anlääse of beskrieuwe.',
-'math_notexvc' => 'Dät texvc-Program kon nit fuunen wäide. Beoachte jädden math/README.',
-
# Patrolling
'markaspatrolleddiff' => 'As pröiwed markierje',
'markaspatrolledtext' => 'Dissen Artikkel as pröiwed markierje',
@@ -2598,21 +2596,23 @@ $1',
'nextdiff' => 'Tou ne näiere Version →',
# Media information
-'mediawarning' => "'''Woarskauenge:''' Disse Oard fon Doatäi kon n skoadelken Programcode änthoolde. Truch dät Deelleeden un Eepenjen fon disse Doatäi kon dän Computer Skoade toubroacht wäide.",
-'imagemaxsize' => "Maximoale Bieldegrööte:<br />''(foar Doatäibeskrieuwengssieden)''",
-'thumbsize' => 'Grööte fon do Foarskaubielden (thumbnails):',
-'widthheightpage' => '$1×$2, {{PLURAL:$3|1 Siede|$3 Sieden}}',
-'file-info' => 'Doatäigrööte: $1, MIME-Typ: $2',
-'file-info-size' => '$1 × $2 Pixel, Doatäigrööte: $3, MIME-Typ: $4',
-'file-nohires' => '<small>Neen haagere Aplöösenge foarhounden.</small>',
-'svg-long-desc' => 'SVG-Doatäi, Basisgrööte: $1 × $2 Pixel, Doatäigrööte: $3',
-'show-big-image' => 'Bielde in hooge Aplöösenge',
-'show-big-image-thumb' => '<small>Grööte fon disse Foarschau: $1 × $2 Pixel</small>',
-'file-info-gif-looped' => 'Eendloos-Strik',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|Bielde|Bielden}}',
-'file-info-png-looped' => 'Eendloos-Strik',
-'file-info-png-repeat' => '$1-{{PLURAL:$1|Moal|Moale}} ouspield',
-'file-info-png-frames' => '$1 {{PLURAL:$1|Bielde|Bielden}}',
+'mediawarning' => "'''Woarskauenge:''' Disse Oard fon Doatäi kon n skoadelken Programcode änthoolde. Truch dät Deelleeden un Eepenjen fon disse Doatäi kon dän Computer Skoade toubroacht wäide.",
+'imagemaxsize' => "Maximoale Bieldegrööte:<br />''(foar Doatäibeskrieuwengssieden)''",
+'thumbsize' => 'Grööte fon do Foarskaubielden (thumbnails):',
+'widthheightpage' => '$1×$2, {{PLURAL:$3|1 Siede|$3 Sieden}}',
+'file-info' => 'Doatäigrööte: $1, MIME-Typ: $2',
+'file-info-size' => '$1 × $2 Pixel, Doatäigrööte: $3, MIME-Typ: $4',
+'file-nohires' => '<small>Neen haagere Aplöösenge foarhounden.</small>',
+'svg-long-desc' => 'SVG-Doatäi, Basisgrööte: $1 × $2 Pixel, Doatäigrööte: $3',
+'show-big-image' => 'Bielde in hooge Aplöösenge',
+'show-big-image-preview' => '<small>Grööte fon dissen Foarbekiek: $1.</small>',
+'show-big-image-other' => '<small>uur Aplöösengen: $1.</small>',
+'show-big-image-size' => '$1 × $2 Pixele',
+'file-info-gif-looped' => 'Eendloos-Strik',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|Bielde|Bielden}}',
+'file-info-png-looped' => 'Eendloos-Strik',
+'file-info-png-repeat' => '$1-{{PLURAL:$1|Moal|Moale}} ouspield',
+'file-info-png-frames' => '$1 {{PLURAL:$1|Bielde|Bielden}}',
# Special:NewFiles
'newimages' => 'Näie Bielden',
@@ -2650,7 +2650,13 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
* isospeedratings
* datetimeoriginal
* exposuretime
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Bratte',
@@ -2665,13 +2671,11 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
'exif-ycbcrpositioning' => 'Y un C Positionierenge',
'exif-xresolution' => 'Horizontoale Aplöösenge',
'exif-yresolution' => 'Vertikoale Aplöösenge',
-'exif-resolutionunit' => 'Mäite-Eenhaid fon ju Aplöösenge',
'exif-stripoffsets' => 'Bieldedoatenfersät',
'exif-rowsperstrip' => 'Antaal Riegen pro Striepe',
'exif-stripbytecounts' => 'Bytes pro komprimierten Striep',
'exif-jpeginterchangeformat' => 'Offset tou JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Gratte fon do JPEG SOI-Doaten in Bytes',
-'exif-transferfunction' => 'Uurdreegengsfunktion',
'exif-whitepoint' => 'Manuell mäd Meetenge',
'exif-primarychromaticities' => 'Chromatizitäte fon primäre Faawen',
'exif-ycbcrcoefficients' => 'YCbCr-Koeffiziente',
@@ -2690,7 +2694,6 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
'exif-compressedbitsperpixel' => 'Komprimierde Bits pro Pixel',
'exif-pixelydimension' => 'Gultige Bieldebratte',
'exif-pixelxdimension' => 'Gultige Bieldehöchte',
-'exif-makernote' => 'Häärstaalernotiz',
'exif-usercomment' => 'Benutserkommentoare',
'exif-relatedsoundfile' => 'Touheerige Toondoatäi',
'exif-datetimeoriginal' => 'Ärfoatengstiedpunkt',
@@ -2704,7 +2707,6 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
'exif-exposureprogram' => 'Beljuchtengsprogram',
'exif-spectralsensitivity' => 'Beljoachtengstiedwäid',
'exif-isospeedratings' => 'Film- of Sensorämpfiendelkaid (ISO)',
-'exif-oecf' => 'Optoelektroniske Uumreekenengsfaktor',
'exif-shutterspeedvalue' => 'Beluchtengstiedwäid',
'exif-aperturevalue' => 'Bländenwäid',
'exif-brightnessvalue' => 'Ljoachtegaidswäid',
@@ -2717,7 +2719,6 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
'exif-focallength' => 'Baadenwiete',
'exif-subjectarea' => 'Beräk',
'exif-flashenergy' => 'Blitsstäärke',
-'exif-spatialfrequencyresponse' => 'Ruumelke Frequenz-Reaktion',
'exif-focalplanexresolution' => 'Sensoraplöösenge horizontoal',
'exif-focalplaneyresolution' => 'Sensoraplöösenge vertikoal',
'exif-focalplaneresolutionunit' => 'Eenhaid fon Sensoraplöösenge',
@@ -2726,7 +2727,6 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
'exif-sensingmethod' => 'Meetmethode',
'exif-filesource' => 'Wälle fon ju Doatäi',
'exif-scenetype' => 'Scenetyp',
-'exif-cfapattern' => 'CFA-Muster',
'exif-customrendered' => 'Benutserdefinierde Bieldeferoarbaidenge',
'exif-exposuremode' => 'Beljuchtengsmodus',
'exif-whitebalance' => 'Wiet-Ougliek',
@@ -2918,15 +2918,13 @@ wiedere standdoardmäitich "ienklapte" Details konnen anwiesd wäide.
# External editor support
'edit-externally' => 'Disse Doatäi mäd n extern Program beoarbaidje',
-'edit-externally-help' => '(Sjuch do [http://www.mediawiki.org/wiki/Manual:External_editors Installationsanwiesengen] foar wiedere Informatione)',
+'edit-externally-help' => '(Sjuch do [//www.mediawiki.org/wiki/Manual:External_editors Installationsanwiesengen] foar wiedere Informatione)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'aal',
-'imagelistall' => 'aal',
-'watchlistall2' => 'aal',
-'namespacesall' => 'aal',
-'monthsall' => 'aal',
-'limitall' => 'aal',
+'watchlistall2' => 'aal',
+'namespacesall' => 'aal',
+'monthsall' => 'aal',
+'limitall' => 'aal',
# E-mail address confirmation
'confirmemail' => 'Email-Adrässe bestäätigje',
@@ -3005,13 +3003,15 @@ $1',
'trackbackdeleteok' => 'Trackback wuude mäd Ärfoulch läsked.',
# Delete conflict
-'deletedwhileediting' => 'Oachtenge: Disse Siede wuude al läsked, ätter dät du anfangd hiedest, hier tou beoarbaidjen!
+'deletedwhileediting' => 'Oachtenge: Disse Siede wuude al läsked, ätter dät du anfangd hiedest, hier tou beoarbaidjen!
Kiekje in dät [{{fullurl:Special:Log|type=delete&page=}}{{FULLPAGENAMEE}} Läsk-Logbouk] ätter,
wieruum ju Siede läsked wuude. Wan du ju Siede spiekerst, wäd ju näi anlaid.',
-'confirmrecreate' => "Benutser [[User:$1|$1]] ([[User talk:$1|Diskussion]]) häd disse Siede läsked, ätter dät du ounfangd hääst, ju tou beoarbaidjen. Ju Begruundenge lutte:
+'confirmrecreate' => "Benutser [[User:$1|$1]] ([[User talk:$1|Diskussion]]) häd disse Siede läsked, ätter dät du ounfangd hääst, ju tou beoarbaidjen. Ju Begruundenge lutte:
''$2''.
Bestäätigje, dät du disse Siede wuddelk näi moakje moatest.",
-'recreate' => 'Wierhäärstaale',
+'confirmrecreate-noreason' => 'Benutser [[User:$1|$1]] ([[User talk:$1|Diskussion]]) häd disse Siede läsked, ätter dät du ounfangd hääst, ju tou beoarbaidjen.
+Bestäätigje, dät du disse Siede wuddelk näi moakje moatest.',
+'recreate' => 'Wierhäärstaale',
# action=purge
'confirm_purge_button' => 'OK',
@@ -3058,14 +3058,14 @@ Bestäätigje, dät du disse Siede wuddelk näi moakje moatest.",
'watchlistedit-normal-title' => 'Beooboachtengslieste beoarbaidje',
'watchlistedit-normal-legend' => 'Iendraage fon ju Beooboachtengslieste wächhoalje',
'watchlistedit-normal-explain' => 'Dit sunt do Iendraage fon dien Beooboachtengslieste. Uum Iendraage wächtouhoaljen, markier do litje Kasten ieuwenske do Iendraage un klik ap dät Eende fon ju Siede ap „{{int:Watchlistedit-normal-submit}}“.
-Du koast dien Beooboachtengslieste uk in dät [[Special:Watchlist/raw|Liestenformoat beoarbaidje]].',
+Du koast dien Beooboachtengslieste uk in dät [[Special:EditWatchlist/raw|Liestenformoat beoarbaidje]].',
'watchlistedit-normal-submit' => 'Iendraage wächhoalje',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 Iendraach wuude|$1 Iendraage wuuden}} fon dien Beooboachtengslieste wächhoald:',
'watchlistedit-raw-title' => 'Beooboachtengslieste in Liestenformoat beoarbaidje',
'watchlistedit-raw-legend' => 'Beooboachtengslieste in Liestenformoat beoarbaidje',
'watchlistedit-raw-explain' => 'Dit sunt do Iendraage fon dien Beooboachtengslieste in dät Liestenformoat. Do Iendraage konnen riegenwiese läsked of bietouföiged wäide.
Pro Riege is aan Iendraach ferlööwed. Wan du kloor bäst, klik ap „{{int:Watchlistedit-raw-submit}}“.
- Du koast uk ju [[Special:Watchlist/edit|Standard-Beoarbaidengssiede]] benutsje.',
+ Du koast uk ju [[Special:EditWatchlist|Standard-Beoarbaidengssiede]] benutsje.',
'watchlistedit-raw-titles' => 'Iendraage:',
'watchlistedit-raw-submit' => 'Beooboachtengslieste spiekerje',
'watchlistedit-raw-done' => 'Dien Beooboachtengslieste wuude spiekerd.',
@@ -3082,33 +3082,33 @@ Du koast dien Beooboachtengslieste uk in dät [[Special:Watchlist/raw|Liestenfor
'duplicate-defaultsort' => 'Paas ap: Die Sortierengskoai „$2“ uurskrift dän toufoarne ferwoanden Koai „$1“.',
# Special:Version
-'version' => 'Version',
-'version-extensions' => 'Installierde Ärwiederengen',
-'version-specialpages' => 'Spezioalsieden',
-'version-parserhooks' => 'Parser-Hooks',
-'version-variables' => 'Variablen',
-'version-skins' => 'Benutseruurflächen',
-'version-other' => 'Uurswät',
-'version-mediahandlers' => 'Medien-Handlere',
-'version-hooks' => "Snitsteeden ''(Hooks)''",
-'version-extension-functions' => 'Funktionsaproupe',
-'version-parser-extensiontags' => "Parser-Ärwiederengen ''(tags)''",
-'version-parser-function-hooks' => 'Parser-Funktione',
-'version-skin-extension-functions' => 'Skin-Ärwiederengs-Funktione',
-'version-hook-name' => 'Snitsteedennoome',
-'version-hook-subscribedby' => 'Aproup fon',
-'version-version' => '(Version $1)',
-'version-license' => 'Lizenz',
-'version-poweredby-credits' => "Disse Website nutset '''[http://www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
-'version-poweredby-others' => 'uur',
-'version-license-info' => "MediaWiki is fräie Software, dät hat dät ju ätter do Bedingengen fon ju truch de Free Software Foundation fereepenlikede ''GNU General Public License'', fääreferdeeld un/ of modifizierd wäide kon. Deerbie kon ju version 2, of ätter oainen Uurdeel, älke näiere Version fon ju Lizenz ferwoand wäide.
+'version' => 'Version',
+'version-extensions' => 'Installierde Ärwiederengen',
+'version-specialpages' => 'Spezioalsieden',
+'version-parserhooks' => 'Parser-Hooks',
+'version-variables' => 'Variablen',
+'version-antispam' => 'Spamskuts',
+'version-skins' => 'Benutseruurflächen',
+'version-other' => 'Uurswät',
+'version-mediahandlers' => 'Medien-Handlere',
+'version-hooks' => "Snitsteeden ''(Hooks)''",
+'version-extension-functions' => 'Funktionsaproupe',
+'version-parser-extensiontags' => "Parser-Ärwiederengen ''(tags)''",
+'version-parser-function-hooks' => 'Parser-Funktione',
+'version-hook-name' => 'Snitsteedennoome',
+'version-hook-subscribedby' => 'Aproup fon',
+'version-version' => '(Version $1)',
+'version-license' => 'Lizenz',
+'version-poweredby-credits' => "Disse Website nutset '''[//www.mediawiki.org/wiki/MediaWiki/de MediaWiki]''', Copyright © 2001–$1 $2.",
+'version-poweredby-others' => 'uur',
+'version-license-info' => "MediaWiki is fräie Software, dät hat dät ju ätter do Bedingengen fon ju truch de Free Software Foundation fereepenlikede ''GNU General Public License'', fääreferdeeld un/ of modifizierd wäide kon. Deerbie kon ju version 2, of ätter oainen Uurdeel, älke näiere Version fon ju Lizenz ferwoand wäide.
MediaWiki wäd ferdeeld in ju Hoopenge, dät et nutselk weese skäl, man SUNNER EENIGE GARANTIE un sogoar sunner ju implizierde Garantie fon ne MÄÄRKEDGÄNGEGAID of OAINENGE FOAR N BESTIMDEN TSWÄK. Hiertou sunt wiedere Waiwiesengen in ju ''GNU General Public License'' äntheelden.
-Ne [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie fon ju ''GNU General Public License''] skuul touhoope mäd dissen Program ferdeeld wuuden weese. Insofier dät nit dän Fal waas, kon ne Kopie bie ju Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, skriftlek anfoarderd of ap do hiere Website [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html online leesen] wäide.",
-'version-software' => 'Installierde Software',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Version',
+Ne [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie fon ju ''GNU General Public License''] skuul touhoope mäd dissen Program ferdeeld wuuden weese. Insofier dät nit dän Fal waas, kon ne Kopie bie ju Free Software Foundation Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA, skriftlek anfoarderd of ap do hiere Website [//www.gnu.org/licenses/old-licenses/gpl-2.0.html online leesen] wäide.",
+'version-software' => 'Installierde Software',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath' => 'Doatäipaad',
@@ -3117,22 +3117,22 @@ Ne [{{SERVER}}{{SCRIPTPATH}}/COPYING Kopie fon ju ''GNU General Public License''
'filepath-summary' => 'Mäd disse Spezialsiede lät sik die komplette Paad fon ju aktuelle Version fon ne Doatäi sunner Uumwai oufräigje. Ju anfräigede Doatäi wäd fluks deerstoald blw. mäd ju ferknätte Anweendenge started.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Doatäi-Duplikoat-Säike',
-'fileduplicatesearch-summary' => 'Säike ätter Doatäi-Duplikoate ap Basis fon hieren Hash-Wäid.
-
-Ju Iengoawe mout sunner dän Tousats „{{ns:file}}:“ geböäre.',
-'fileduplicatesearch-legend' => 'Säike ätter Duplikoate',
-'fileduplicatesearch-filename' => 'Doatäinoome:',
-'fileduplicatesearch-submit' => 'Säike (016)',
-'fileduplicatesearch-info' => '$1 × $2 Pixel<br />Doatäigrööte: $3<br />MIME-Typ: $4',
-'fileduplicatesearch-result-1' => 'Ju Doatäi „$1“ häd neen identiske Duplikoate.',
-'fileduplicatesearch-result-n' => 'Ju Doatäi „$1“ häd {{PLURAL:$2|1 identisk Duplikoat|$2 identiske Duplikoate}}.',
+'fileduplicatesearch' => 'Doatäi-Duplikoat-Säike',
+'fileduplicatesearch-summary' => 'Säike ätter Doatäi-Duplikoate ap Basis fon hieren Hash-Wäid.',
+'fileduplicatesearch-legend' => 'Säike ätter Duplikoate',
+'fileduplicatesearch-filename' => 'Doatäinoome:',
+'fileduplicatesearch-submit' => 'Säike (016)',
+'fileduplicatesearch-info' => '$1 × $2 Pixel<br />Doatäigrööte: $3<br />MIME-Typ: $4',
+'fileduplicatesearch-result-1' => 'Ju Doatäi „$1“ häd neen identiske Duplikoate.',
+'fileduplicatesearch-result-n' => 'Ju Doatäi „$1“ häd {{PLURAL:$2|1 identisk Duplikoat|$2 identiske Duplikoate}}.',
+'fileduplicatesearch-noresults' => 'Der wuud neen Doatäi mäd Noome "$1" fuunen.',
# Special:SpecialPages
'specialpages' => 'Spezioalsieden',
'specialpages-note' => '----
-* Spezioalsieden foar Älkuneen
-* <strong class="mw-specialpagerestricted">Spezioalsieden foar Benutsere mäd ärwiederde Gjuchte</strong>',
+* Reguläre Spezioalsieden
+* <span class="mw-specialpagerestricted">Tougriepsbeskränkede Spezioalsieden</span>
+* <span class="mw-specialpagecached">Cachegenerierde Spezioalsieden</span>',
'specialpages-group-maintenance' => 'Fersuurgengsliesten',
'specialpages-group-other' => 'Uur Spezioalsieden',
'specialpages-group-login' => 'Anmäldje',
diff --git a/languages/messages/MessagesSu.php b/languages/messages/MessagesSu.php
index d3a4de7c..1be14abc 100644
--- a/languages/messages/MessagesSu.php
+++ b/languages/messages/MessagesSu.php
@@ -42,88 +42,88 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'AlihanGanda' ),
+ 'Allmessages' => array( 'SadayaTalatah' ),
+ 'Allpages' => array( 'SadayaKaca' ),
+ 'Ancientpages' => array( 'KacaKolot' ),
+ 'Blankpage' => array( 'KacaKosong' ),
+ 'Block' => array( 'PeungpeukIP' ),
+ 'Blockme' => array( 'PeungpeukKuring' ),
+ 'Booksources' => array( 'SumberPustaka' ),
'BrokenRedirects' => array( 'AlihanPegat' ),
- 'Disambiguations' => array( 'Disambiguasi' ),
- 'Userlogin' => array( 'AsupLog' ),
- 'Userlogout' => array( 'KaluarLog' ),
+ 'Categories' => array( 'Kategori' ),
+ 'ChangePassword' => array( 'GantiSandi' ),
+ 'Confirmemail' => array( 'KonfirmasiSurelek' ),
+ 'Contributions' => array( 'Kontribusi' ),
'CreateAccount' => array( 'NyieunRekening' ),
- 'Preferences' => array( 'Preferensi' ),
- 'Watchlist' => array( 'Awaskeuneun' ),
- 'Recentchanges' => array( 'AnyarRobah' ),
- 'Upload' => array( 'Kunjal' ),
+ 'Deadendpages' => array( 'KacaBuntu' ),
+ 'Disambiguations' => array( 'Disambiguasi' ),
+ 'DoubleRedirects' => array( 'AlihanGanda' ),
+ 'Emailuser' => array( 'SurelekPamake' ),
+ 'Export' => array( 'Ekspor' ),
+ 'Fewestrevisions' => array( 'PangjarangnaRevisi' ),
+ 'FileDuplicateSearch' => array( 'SungsiGambarDuplikat' ),
+ 'Filepath' => array( 'JalurKoropak' ),
+ 'Import' => array( 'Impor' ),
+ 'Invalidateemail' => array( 'SurelekTeuKaci' ),
+ 'BlockList' => array( 'IPDipeungpeuk' ),
+ 'Listadmins' => array( 'DaptarKuncen' ),
+ 'Listbots' => array( 'DaptarBot' ),
'Listfiles' => array( 'DaptarGambar' ),
- 'Newimages' => array( 'GambarAnyar' ),
- 'Listusers' => array( 'DaptarPamake' ),
'Listgrouprights' => array( 'DaptarHakPamake' ),
- 'Statistics' => array( 'Statistika' ),
- 'Randompage' => array( 'Acak', 'KacaAcak' ),
+ 'Listredirects' => array( 'DaptarAlihan' ),
+ 'Listusers' => array( 'DaptarPamake' ),
+ 'Lockdb' => array( 'KonciDB' ),
'Lonelypages' => array( 'KacaNyorangan' ),
- 'Uncategorizedpages' => array( 'KacaTanpaKategori' ),
- 'Uncategorizedcategories' => array( 'KategoriTanpaKategori' ),
- 'Uncategorizedimages' => array( 'GambarTanpaKategori' ),
- 'Uncategorizedtemplates' => array( 'CitakanTanpaKategori' ),
- 'Unusedcategories' => array( 'KategoriNganggur' ),
- 'Unusedimages' => array( 'GambarNganggur' ),
- 'Wantedpages' => array( 'KacaDiteang', 'TumbuPegat' ),
- 'Wantedcategories' => array( 'KategoriDiteang' ),
+ 'Longpages' => array( 'KacaPanjang' ),
+ 'MergeHistory' => array( 'GabungJujutan' ),
+ 'MIMEsearch' => array( 'SungsiMIME' ),
+ 'Mostcategories' => array( 'KategoriPalingLoba' ),
+ 'Mostimages' => array( 'GambarPalingKapake' ),
'Mostlinked' => array( 'PalingDitumbu' ),
'Mostlinkedcategories' => array( 'KategoriPalingDitumbu', 'KategoriPalingKapake' ),
'Mostlinkedtemplates' => array( 'CitakanPalingDitumbu', 'CitakanPalingKapake' ),
- 'Mostimages' => array( 'GambarPalingKapake' ),
- 'Mostcategories' => array( 'KategoriPalingLoba' ),
'Mostrevisions' => array( 'PalingRevisi' ),
- 'Fewestrevisions' => array( 'PangjarangnaRevisi' ),
- 'Shortpages' => array( 'KacaPondok' ),
- 'Longpages' => array( 'KacaPanjang' ),
+ 'Movepage' => array( 'PindahkeunKaca' ),
+ 'Mycontributions' => array( 'KontribusiKuring' ),
+ 'Mypage' => array( 'KacaKuring' ),
+ 'Mytalk' => array( 'ObrolanKuring' ),
+ 'Newimages' => array( 'GambarAnyar' ),
'Newpages' => array( 'KacaAnyar' ),
- 'Ancientpages' => array( 'KacaKolot' ),
- 'Deadendpages' => array( 'KacaBuntu' ),
+ 'Popularpages' => array( 'KacaPayu' ),
+ 'Preferences' => array( 'Preferensi' ),
+ 'Prefixindex' => array( 'IndeksAwalan' ),
'Protectedpages' => array( 'KacaDikonci' ),
'Protectedtitles' => array( 'JudulDikonci' ),
- 'Allpages' => array( 'SadayaKaca' ),
- 'Prefixindex' => array( 'IndeksAwalan' ),
- 'Ipblocklist' => array( 'IPDipeungpeuk' ),
- 'Specialpages' => array( 'KacaHusus' ),
- 'Contributions' => array( 'Kontribusi' ),
- 'Emailuser' => array( 'SurelekPamake' ),
- 'Confirmemail' => array( 'KonfirmasiSurelek' ),
- 'Whatlinkshere' => array( 'NumbuKaDieu' ),
+ 'Randompage' => array( 'Acak', 'KacaAcak' ),
+ 'Randomredirect' => array( 'AlihanAcak' ),
+ 'Recentchanges' => array( 'AnyarRobah' ),
'Recentchangeslinked' => array( 'ParobahanPatali' ),
- 'Movepage' => array( 'PindahkeunKaca' ),
- 'Blockme' => array( 'PeungpeukKuring' ),
- 'Booksources' => array( 'SumberPustaka' ),
- 'Categories' => array( 'Kategori' ),
- 'Export' => array( 'Ekspor' ),
- 'Version' => array( 'Versi' ),
- 'Allmessages' => array( 'SadayaTalatah' ),
- 'Blockip' => array( 'PeungpeukIP' ),
+ 'Revisiondelete' => array( 'HapusRevisi' ),
+ 'Search' => array( 'Sungsi' ),
+ 'Shortpages' => array( 'KacaPondok' ),
+ 'Specialpages' => array( 'KacaHusus' ),
+ 'Statistics' => array( 'Statistika' ),
+ 'Tags' => array( 'Tag' ),
+ 'Uncategorizedcategories' => array( 'KategoriTanpaKategori' ),
+ 'Uncategorizedimages' => array( 'GambarTanpaKategori' ),
+ 'Uncategorizedpages' => array( 'KacaTanpaKategori' ),
+ 'Uncategorizedtemplates' => array( 'CitakanTanpaKategori' ),
'Undelete' => array( 'BolayHapus' ),
- 'Import' => array( 'Impor' ),
- 'Lockdb' => array( 'KonciDB' ),
'Unlockdb' => array( 'BukaKonciDB' ),
- 'Userrights' => array( 'HakPamake' ),
- 'MIMEsearch' => array( 'SungsiMIME' ),
- 'FileDuplicateSearch' => array( 'SungsiGambarDuplikat' ),
- 'Unwatchedpages' => array( 'KacaTeuDiawaskeun' ),
- 'Listredirects' => array( 'DaptarAlihan' ),
- 'Revisiondelete' => array( 'HapusRevisi' ),
+ 'Unusedcategories' => array( 'KategoriNganggur' ),
+ 'Unusedimages' => array( 'GambarNganggur' ),
'Unusedtemplates' => array( 'CitakanNganggur' ),
- 'Randomredirect' => array( 'AlihanAcak' ),
- 'Mypage' => array( 'KacaKuring' ),
- 'Mytalk' => array( 'ObrolanKuring' ),
- 'Mycontributions' => array( 'KontribusiKuring' ),
- 'Listadmins' => array( 'DaptarKuncen' ),
- 'Listbots' => array( 'DaptarBot' ),
- 'Popularpages' => array( 'KacaPayu' ),
- 'Search' => array( 'Sungsi' ),
- 'Resetpass' => array( 'GantiSandi' ),
+ 'Unwatchedpages' => array( 'KacaTeuDiawaskeun' ),
+ 'Upload' => array( 'Kunjal' ),
+ 'Userlogin' => array( 'AsupLog' ),
+ 'Userlogout' => array( 'KaluarLog' ),
+ 'Userrights' => array( 'HakPamake' ),
+ 'Version' => array( 'Versi' ),
+ 'Wantedcategories' => array( 'KategoriDiteang' ),
+ 'Wantedpages' => array( 'KacaDiteang', 'TumbuPegat' ),
+ 'Watchlist' => array( 'Awaskeuneun' ),
+ 'Whatlinkshere' => array( 'NumbuKaDieu' ),
'Withoutinterwiki' => array( 'TanpaInterwiki' ),
- 'MergeHistory' => array( 'GabungJujutan' ),
- 'Filepath' => array( 'JalurKoropak' ),
- 'Invalidateemail' => array( 'SurelekTeuKaci' ),
- 'Blankpage' => array( 'KacaKosong' ),
- 'Tags' => array( 'Tag' ),
);
$messages = array(
@@ -158,8 +158,8 @@ $messages = array(
'tog-shownumberswatching' => 'Témbongkeun jumlah nu ngawaskeun',
'tog-oldsig' => 'Paraf nu geus aya:',
'tog-fancysig' => 'Témbongkeun paraf salaku wikitext (tanpa tumbu otomatis)',
-'tog-externaleditor' => 'Paké éditor éxternal dumasar asalna (ukur pikeun nu ahli, perlu sétingan husus dina komputer anjeun. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
-'tog-externaldiff' => 'Paké diff éxternal dumasar asalna (ukur pikeun nu ahli, perlu sétingan husus dina komputer anjeun. [http://www.mediawiki.org/wiki/Manual:External_editors Émbaran lengkep.])',
+'tog-externaleditor' => 'Paké éditor éxternal dumasar asalna (ukur pikeun nu ahli, perlu sétingan husus dina komputer anjeun. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaldiff' => 'Paké diff éxternal dumasar asalna (ukur pikeun nu ahli, perlu sétingan husus dina komputer anjeun. [//www.mediawiki.org/wiki/Manual:External_editors Émbaran lengkep.])',
'tog-showjumplinks' => 'Aktifkeun tumbu panyambung "luncat ka"',
'tog-uselivepreview' => 'Paké pramidang saharita (JavaScript) (ujicoba)',
'tog-forceeditsummary' => 'Mun kotak ringkesan éditan masih kosong, béjaan!',
@@ -256,9 +256,7 @@ $messages = array(
'listingcontinuesabbrev' => '(samb.)',
'index-category' => 'Kaca nu diindéks',
'noindex-category' => 'Kaca nu teu diindéks',
-
-'mainpagetext' => "'''''Software'' MediaWiki geus diinstal.'''",
-'mainpagedocfooter' => "Mangga tingal ''[http://meta.wikimedia.org/wiki/MediaWiki_localisation documentation on customizing the interface]'' jeung [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide Tungtunan Pamaké] pikeun pitulung maké jeung konfigurasi.",
+'broken-file-category' => 'Kaca anu ngandung tutumbu buntu',
'about' => 'Ngeunaan',
'article' => 'Kaca eusi',
@@ -310,10 +308,10 @@ $messages = array(
'history' => 'Jujutan kaca',
'history_short' => 'Jujutan',
'updatedmarker' => 'dirobah saprak pamungkas datangna kuring',
-'info_short' => 'Iber',
'printableversion' => 'Vérsi citakeun',
'permalink' => 'Tutumbu permanén',
'print' => 'Citak',
+'view' => 'Tempo',
'edit' => 'Édit',
'create' => 'Jieun',
'editthispage' => 'Édit kaca ieu',
@@ -321,6 +319,7 @@ $messages = array(
'delete' => 'Hapus',
'deletethispage' => 'Hapus kaca ieu',
'undelete_short' => 'Bolaykeun ngahapus {{PLURAL:$1|hiji éditan|$1 éditan}}',
+'viewdeleted_short' => 'Témbongkeun {{PLURAL:$1|hiji éditan nu dihapus|$1 éditan nu dihapus}}',
'protect' => 'Konci',
'protect_change' => 'robah',
'protectthispage' => 'Konci kaca ieu',
@@ -404,6 +403,8 @@ $1',
'toc' => 'Daptar eusi',
'showtoc' => 'témbongkeun',
'hidetoc' => 'sumputkeun',
+'collapsible-collapse' => 'Tilepkeun',
+'collapsible-expand' => 'Amparkeun',
'thisisdeleted' => 'Témbongkeun atawa simpen deui $1?',
'viewdeleted' => 'Témbongkeun $1?',
'restorelink' => '$1 {{PLURAL:$1|éditan|éditan}} dihapus',
@@ -415,6 +416,8 @@ $1',
'page-rss-feed' => 'Eupan RSS "$1"',
'page-atom-feed' => 'Eupan Atom "$1"',
'red-link-title' => '$1 (kaca can aya)',
+'sort-descending' => 'Éntépkeun mudun',
+'sort-ascending' => 'Éntépkeun nanjak',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Kaca',
@@ -496,11 +499,12 @@ Sigana geus dihapus ku nu séjén.',
'protectedinterface' => 'Kaca ieu eusina teks antarmuka pikeun dipaké ku pakakas beyé sarta geus dikunci pikeun ngahindar ti kasalahan.',
'editinginterface' => "'''Awas:''' Anjeun keur ngédit kaca nu dipaké pikeun nyadiakeun téks antarmuka pikeun sopwérna.
Parobahan kana ieu kaca bakal mangaruhan pidangan antarmuka pikeun pamaké séjén.
-Pikeun alihbasa, mangga sumping ka [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], proyék lokalisasi MediaWiki.",
+Pikeun alihbasa, mangga sumping ka [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], proyék lokalisasi MediaWiki.",
'sqlhidden' => '(Pamenta SQL disumputkeun)',
'cascadeprotected' => 'Kaca ieu geus dikonci ti éditan alatan disartakeun di {{PLURAL:$1|kaca|kaca-kaca}} katut anu geus dikonci kalawan pilihan "runtun": $2',
'namespaceprotected' => "Anjeun teu ngabogaan hak pikeun ngédit kaca di ngaranspasi '''$1'''.",
-'customcssjsprotected' => 'Anjeun teu ngabogaan hak ngédit kaca ieu, alatan ngandung pangaturan pribadi pamaké séjén.',
+'customcssprotected' => 'Anjeun teu teu diwenangkeun pikeun ngédit ieu kaca CSS, sabab ngandung setélan pribadi kontributor séjén.',
+'customjsprotected' => 'Anjeun teu teu diwenangkeun pikeun ngédit ieu kaca JavaScript, sabab ngandung setélan pribadi kontributor séjén.',
'ns-specialprotected' => 'Kaca dina ngaranspasi {{ns:special}} teu bisa di édit.',
'titleprotected' => "Ieu judul dikonci ku [[User:$1|$1]] kalawan alesan ''$2''.",
@@ -537,6 +541,7 @@ Tong hilap ngarobih [[Special:Preferences|{{SITENAME}} préferénsi]] anjeun.',
'createaccount' => 'Jieun akun',
'gotaccount' => "Geus boga akun? '''$1'''.",
'gotaccountlink' => 'Asup log',
+'userlogin-resetlink' => 'Poho akun sorangan?',
'createaccountmail' => 'ku surélék',
'createaccountreason' => 'Alesan:',
'badretype' => 'Sandi nu diasupkeun teu cocog.',
@@ -546,13 +551,15 @@ Mangga pilih sandiasma nu séjén.',
'createaccounterror' => 'Teu bisa nyieun rekening: $1',
'nocookiesnew' => "Rekening pamaké geus dijieun, tapi anjeun can asup log. {{SITENAME}} maké ''cookies'' pikeun ngasupkeun log pamaké. Anjeun boga ''cookies'' nu ditumpurkeun. Mangga fungsikeun, teras asup log migunakeun ngaran pamaké sarta sandi nu anyar.",
'nocookieslogin' => "{{SITENAME}} migunakeun ''cookies'' pikeun ngasupkeun pamaké kana log. Anjeun boga ''cookies'' nu ditumpurkeun. Mangga pungsikeun sarta cobian deui.",
+'nocookiesfornew' => 'Akun pamaké teu bisa dijieun, kusabab sumberna teu bisa dipastikeun.
+Pariksa kukisna bisi tumpur, terus cobaan muat ulang ieu kaca.',
'noname' => 'Anjeun teu nuliskeun ngaran pamaké nu sah.',
'loginsuccesstitle' => 'Asup log geus hasil',
'loginsuccess' => 'Anjeun ayeuna geus asup log ka {{SITENAME}} salaku "$1".',
'nosuchuser' => 'Euweuh pamaké nu ngaranna "$1".
Ngaran pamaké ngabedakeun hurup kapital.
Pariksa éjahanana, atawa paké formulir di handap pikeun [[Special:UserLogin/signup|nyieun rekening anyar]].',
-'nosuchusershort' => 'Taya pamaké nu ngaranna "<nowiki>$1</nowiki>", pariksa éjahanana!',
+'nosuchusershort' => 'Taya pamaké nu ngaranna "$1", pariksa éjahanana!',
'nouserspecified' => 'Anjeun kudu ngeusian ngaran landihan.',
'login-userblocked' => 'Ieu pamaké keur dipeungpeuk, teu diwenangkeun asup log.',
'wrongpassword' => 'Sandi nu diasupkeun teu cocog. Mangga cobian deui.',
@@ -591,13 +598,14 @@ Mun ieu rekening balukar ayana éror, teu kudu diwaro.',
'usernamehasherror' => "Landihan teu kaci maké karakter pager (''hash'')",
'login-throttled' => 'Anjeun geus loba teuing nyobaan asup log.
Tungguan heula sakeudeung, laju cobaan deui.',
+'login-abort-generic' => 'Login gagal - Dibolaykeun',
'loginlanguagelabel' => 'Basa: $1',
'suspicious-userlogout' => "Pamundut anjeun pikeun kaluar log ditolak ku sabab sigana dikirim ku pangaprak buntu atawa ''cache'' proxi.",
# E-mail sending
'php-mail-error-unknown' => 'Kasalahan nu teu kanyahoan dina fungsi PHP surélék().',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Ganti kecap sandi rekening',
'resetpass_announce' => 'Anjeun asup log migunakeun sandi samentara. Salajengna, mangga gentos ku sandi anyar di dieu:',
'resetpass_text' => '<!-- Tambahkeun téks di dieu -->',
@@ -615,6 +623,35 @@ Tungguan heula sakeudeung, laju cobaan deui.',
Bisa jadi anjeun geus ngaganti sandina atawa ménta sandi saheulaanan anu anyar.',
'resetpass-temp-password' => 'Sandi samentara:',
+# Special:PasswordReset
+'passwordreset' => 'Setél ulang sandi',
+'passwordreset-text' => 'Lengkepan ieu formulir pikeun nampa surélék pangéling ngeunaan wincikan akun anjeun.',
+'passwordreset-legend' => 'Setél ulang sandi',
+'passwordreset-disabled' => 'Dina ieu wiki, sandi teu bisa disetél ulang.',
+'passwordreset-pretext' => '{{PLURAL:$1||Asupkeun salah sahiji data di handap ieu}}',
+'passwordreset-username' => 'Sandiasma:',
+'passwordreset-domain' => 'Domain:',
+'passwordreset-email' => 'Alamat surélék:',
+'passwordreset-emailtitle' => 'Wincikan akun di {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Aya (bisa jadi Anjeun, ti alamat IP $1) ménta dibéjaan ngeunaan akun di {{SITENAME}} ($4). {{PLURAL:$3|Akun|Akun-akun}} di handap patali jeung alamat ieu surélék:
+
+$2
+
+{{PLURAL:$3|Ieu sandi saheulaanan|Ieu sandi saheulaanan}} anu bakal kadaluwarsa dina témpo {{PLURAL:$5|sapoé|$5 poé}}.
+Anjeun kudu asup sarta milih sandi anyar ayeuna. Lamun nu séjén nyieun ieu paménta, atawa lamun Anjeun geus inget sandi aslina sarta moal dirobah, ieu surat teu kudu diwaro.',
+'passwordreset-emailtext-user' => 'Hiji jalma (bisa jadi Anjeun, ti alamat IP $1) ménta pangéling-ngéling nu wincik tina akun pikeun {{SITENAME}} ($4).
+{{PLURAL:$3|Akun|Akun-akun}} di handap patali jeung alamat surélék ieu:
+
+$2
+
+{{PLURAL:$3|Sandi saheulaanan|Sandi saheulaanan}} ieu bakal kadaluwarsa dina témpo {{PLURAL:$5|sapoé|$5 poé}}.
+Anjeun kudu asup sarta milih sandi anyar ayeuna. Lamun jalma séjén nyieun
+ieu pamundut atawa lamun Anjeun inget sandi asli sarta moal
+ngarobah deui, Anjeun bisa teu maliré ieu talatah sarta terus ngagunakeun sandi heubeul.',
+'passwordreset-emailelement' => 'Sandiasma: $1
+Sandi saheulaanan: $2',
+'passwordreset-emailsent' => 'Surélék pangéling geus dikirim.',
+
# Edit page toolbar
'bold_sample' => 'Téks kandel',
'bold_tip' => 'Téks kandel',
@@ -626,8 +663,6 @@ Bisa jadi anjeun geus ngaganti sandina atawa ménta sandi saheulaanan anu anyar.
'extlink_tip' => 'Tutumbu kaluar (inget awalan http://)',
'headline_sample' => 'Téks judul',
'headline_tip' => 'Judul tingkat 2',
-'math_sample' => 'Asupkeun rumus di dieu',
-'math_tip' => 'Rumus matematis (LaTeX)',
'nowiki_sample' => 'Asupkeun téks nu teu diformat di dieu',
'nowiki_tip' => 'Format wiki tong diwaro',
'image_sample' => 'Conto.jpg',
@@ -714,7 +749,7 @@ atawa [{{fullurl:{{FULLPAGENAME}}|action=edit}} ngédit ieu kaca]</span>.',
'noarticletext-nopermission' => 'Kiwari ieu kaca euweuh eusian.
Anjeun bisa [[Special:Search/{{PAGENAME}}|milari judul ieu kaca]] di kaca séjén,
atawa <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} pilari log nu tumali]</span>.',
-'userpage-userdoesnotexist' => 'Rekening pamaké "$1" tacan kadaptar. Mangga tilikan lamun anjeun hoyong ngadamel/ngédit kaca ieu.',
+'userpage-userdoesnotexist' => 'Rekening pamaké "<nowiki>$1</nowiki>" tacan kadaptar. Mangga tilikan lamun anjeun hoyong ngadamel/ngédit kaca ieu.',
'userpage-userdoesnotexist-view' => 'Rekening pamaké "$1" teu aya dina daptar.',
'blocked-notice-logextract' => 'Ieu pamaké keur dipeungpeuk.
Pikeun rujukan, éntri log panungtung dipidangkeun di handap:',
@@ -741,6 +776,7 @@ Pikeun rujukan, éntri log panungtung dipidangkeun di handap:',
'''Mun ieu éditan bener, mangga cobian deui. Mun tetep teu metu, cobi [[Special:UserLogout|kaluar log]] heula, lajeng lebet deui.'''",
'token_suffix_mismatch' => "'''Éditan anjeun ditolak sabab aplikasi klien Anjeun ngarobah karakter tanda baca dina éditan. Éditan kasebut ditolak keur nyegah kasalahan dina artikel téks. Hal ieu kadang-kadang kajadian lamun Anjeun maké proksi anonim basis web nu masalah.'''",
+'edit_form_incomplete' => "'''Sawatara bagian tina wangun éditan teu nepi ka sérver; pariksa deui naha éditan Anjeun tetep gembleng sarta cobaan deui.'''",
'editing' => 'Ngédit $1',
'editingsection' => 'Ngédit $1 (bagian)',
'editingcomment' => 'Ngédit $1 (bagian anyar)',
@@ -1077,9 +1113,10 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
'changepassword' => 'Robah sandi',
'prefs-skin' => 'Kulit',
'skin-preview' => 'Pramidang',
-'prefs-math' => 'Maté',
'datedefault' => 'Tanpa préferénsi',
+'prefs-beta' => 'Fitur béta',
'prefs-datetime' => 'Titimangsa jeung wanci',
+'prefs-labs' => 'Fitur Labs',
'prefs-personal' => 'Data pamaké',
'prefs-rc' => 'Panémbong robahan anyar jeung tukung',
'prefs-watchlist' => 'Awaskeuneun',
@@ -1099,8 +1136,6 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
'columns' => 'Kolom',
'searchresultshead' => 'Aturan hasil néang',
'resultsperpage' => 'Hasil nu ditémbongkeun per kaca',
-'contextlines' => 'Jumlah baris sakali némbongan',
-'contextchars' => 'Karakter kontéks per baris',
'stub-threshold' => 'Wates ambang pikeun format <a href="#" class="stub">tumbu taratas</a> (bit):',
'stub-threshold-disabled' => 'Tumpur',
'recentchangesdays' => 'Jumlah poé nu dipidangkeun dina Nu anyar robah:',
@@ -1110,7 +1145,7 @@ Coba susud dimimitian ku ''all:'' pikeun nyusud sakabéh kandunganana (kaasup ka
'savedprefs' => 'Préferénsi anjeun geus disimpen.',
'timezonelegend' => 'Wewengkon wanci:',
'localtime' => 'Wanci satempat:',
-'timezoneuseserverdefault' => 'Paké bawaan server',
+'timezoneuseserverdefault' => 'Paké bawaan wiki ($1)',
'timezoneuseoffset' => 'Lianna (tangtukeun bédana)',
'timezoneoffset' => 'Béda¹:',
'servertime' => 'Wanci server:',
@@ -1156,7 +1191,8 @@ Mun geus anggeus teu bisa dibolaykeun.',
'gender-female' => 'Awéwé',
'email' => 'Surélék',
'prefs-help-realname' => '* Ngaran asli (pilihan): mun anjeun milih ngeusian, bakal dipaké pikeun nandaan kontribusi anjeun.',
-'prefs-help-email' => 'Surélék sipatna pilihan, tapi ngawenangkeun hiji sandi anyar pikeun dikirimkeun ka anjeun lamun anjeun poho kana sandi anjeun. Anjeung ogé bisa milih pikeun ngawenangkeun batur bisa ngontak anjeun tina kaca pamaké atawa obrolanana tanpa kudu nyebutkeun idéntitas anjeun.',
+'prefs-help-email' => 'Surélék sipatna pilihan, tapi diperlukeun pikeun nyetél ulang sandi lamun anjeun poho.',
+'prefs-help-email-others' => 'Anjeun ogé bisa milih sangkan bisa disuratan ngaliwatan kaca pamaké atawa obrolan tanpa kudu ngedalkeun saha anjeun sabenerna.',
'prefs-help-email-required' => 'Alamat surélék dibutuhkeun.',
'prefs-info' => 'Émbaran dasar',
'prefs-i18n' => 'Internasionalisasi',
@@ -1270,10 +1306,11 @@ Mun geus anggeus teu bisa dibolaykeun.',
'right-sendemail' => 'Kirim surélék ka pamaké séjén',
# 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',
-'rightsnone' => '(euweuh)',
+'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',
@@ -1394,6 +1431,7 @@ Catet yén salaku kaca wiki, nu séjén bisa ngarobah atawa ngahapus muatan anje
'minlength1' => 'Ngaran koropak sahanteuna kudu diwangun ku hiji aksara.',
'illegalfilename' => 'Ngaran koropak "$1" ngandung aksara nu teu diwenangkeun pikeun judul kaca. Mangga gentos ngaranna tur cobi muatkeun deui.',
'badfilename' => 'Ngaran gambar geus dirobah jadi "$1".',
+'filetype-mime-mismatch' => 'Éksténsi berkas ".$1" teu luyu jeung tipeu MIME anu kadetéksi ti berkas ($2).',
'filetype-badmime' => 'Koropak tipeu MIME "$1" teu meunang dimuatkeun.',
'filetype-bad-ie-mime' => 'Ieu berkas teu bisa dimuat sabab ku Internet Explorer dianggap "$1" anu dipahing sarta tipeu berkas anu pibahyaeun.',
'filetype-unwanted-type' => "'''\".\$1\"''' kaasup tipeu koropak nu teu dipiharep.
@@ -1411,6 +1449,7 @@ Catet yén salaku kaca wiki, nu séjén bisa ngarobah atawa ngahapus muatan anje
'large-file' => 'Hadéna mah koropak nu dimuat téh teu leuwih ti $1 bit; ieu koropak gedéna $2 bit.',
'largefileserver' => 'Ieu koropak badag teuing, ngaleuwihan wates nu diwenangkeun ku server.',
'emptyfile' => "Koropak nu dimuatkeun ku anjeun jigana kosong. Hal ieu bisa jadi alatan sarupaning ''typo'' na ngaran koropakna. Mangga parios deui yén anjeun leres-leres hoyong ngamuat koropak éta.",
+'windows-nonascii-filename' => 'Ieu wiki teu ngarojong ngaran berkas anu maké aksara husus.',
'fileexists' => "Koropak nu ngaranna kieu geus aya, mangga parios '''<tt>[[:$1]]</tt>''' mun anjeun teu yakin rék ngaganti.
[[$1|thumb]]",
'fileexists-extension' => "Geus aya berkas anu ngaranna sarupa: [[$2|thumb]]
@@ -1492,7 +1531,7 @@ Pilih ngaran séjén.",
'filehist-filesize' => 'Ukuran koropak',
'filehist-comment' => 'Kamandang',
'filehist-missing' => 'Berkas leungit',
-'imagelinks' => 'Tutumbu koropak',
+'imagelinks' => 'Pamakéan berkas',
'linkstoimage' => 'Kaca ieu {{PLURAL:$1|numbu|$1 numbu}} ka gambar ieu :',
'nolinkstoimage' => 'Teu aya kaca nu numbu ka gambar ieu.',
'sharedupload' => 'Ieu koropak téh ti $1 nu bisa jadi dipaké ku proyék-proyék lianna.',
@@ -1582,10 +1621,11 @@ Saméméh ngahapus, pariksa heula bisi aya tumbu ka ieu citakan.',
Kaca eta sakuduna numbu ka topik-topik anu luyu.<br />
Sahiji kaca dianggap minangka kaca disambiguasi lamun kaca kasebut ngagunakeun citakan anu nyambung ka [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Alihan ganda',
-'doubleredirectstext' => 'Ieu kaca ngabéréndélkeun kaca-kaca alihan ka kaca alihan lianna. Unggal baris ngandung tutumbu ka alihan kahiji jeung kadua, ogé tujul alihan kadua anu biasana tujul kaca anu "bener", anu sakuduna dituju ku alihan kahiji. Ëntri nu <del>dicorét</del> geus diropéa.',
-'double-redirect-fixed-move' => '[[$1]] geus pindah, dialihkeun ka [[$2]].',
-'double-redirect-fixer' => 'Pangomé alihan',
+'doubleredirects' => 'Alihan ganda',
+'doubleredirectstext' => 'Ieu kaca ngabéréndélkeun kaca-kaca alihan ka kaca alihan lianna. Unggal baris ngandung tutumbu ka alihan kahiji jeung kadua, ogé tujul alihan kadua anu biasana tujul kaca anu "bener", anu sakuduna dituju ku alihan kahiji. Ëntri nu <del>dicorét</del> geus diropéa.',
+'double-redirect-fixed-move' => '[[$1]] geus pindah, dialihkeun ka [[$2]].',
+'double-redirect-fixed-maintenance' => 'Ngoméan alihan ganda ti [[$1]] ka [[$2]].',
+'double-redirect-fixer' => 'Pangomé alihan',
'brokenredirects' => 'Alihan buntu',
'brokenredirectstext' => 'Alihan di handap numbu ka kaca nu teu aya:',
@@ -1660,6 +1700,7 @@ Najan kitu, inget yén raramat loka séjén bisa numbu ka berkas maké URL langs
'pager-newer-n' => '{{PLURAL:$1|leuwih anyar 1|leuwih anyar $1}}',
'pager-older-n' => '{{PLURAL:$1|leuwih heubeul 1|leuwih heubeul $1}}',
'suppress' => 'Oversight',
+'querypage-disabled' => 'Ieu kaca husus ditumpurkeun ku alesan kinerja.',
# Book sources
'booksources' => 'Sumber pustaka',
@@ -1773,6 +1814,8 @@ Alamat surélék nu diasupkeun kana [[Special:Preferences|préferénsi pamaké a
'noemailtitle' => 'Teu aya alamat surélék',
'noemailtext' => 'Ieu pamaké ieu teu méré alamat surélék nu sah.',
'nowikiemailtext' => 'Ieu kontributor milih teu nampa surélék ti kontributor séjén.',
+'emailusername' => 'Sandiasma:',
+'emailusernamesubmit' => 'Kirim',
'email-legend' => 'Kirim surélék ka kontributor {{SITENAME}} lianna',
'emailfrom' => 'Ti:',
'emailto' => 'Ka:',
@@ -1793,12 +1836,10 @@ Alamat surélék nu diasupkeun kana [[Special:Preferences|préferénsi pamaké a
'watchlistanontext' => 'Mangga $1 pikeun némbongkeun atawa ngarobah béréndélan awaskeuneun anjeun.',
'watchnologin' => 'Can asup log',
'watchnologintext' => 'Anjeun kudu [[Special:UserLogin|asup log]] pikeun ngarobah awaskeuneun.',
-'addedwatch' => 'Geus ditambahkeun ka awaskeuneun',
'addedwatchtext' => "Kaca \"[[:\$1]]\" geus ditambahkeun ka [[Special:Watchlist|awaskeuneun]] anjeun.
Jaga, parobahan na kaca ieu katut kaca obrolanana bakal dibéréndélkeun di dinya, sarta kacana bakal katémbong '''dikandelan''' dina kaca [[Special:RecentChanges|Nu anyar robah]] sangkan leuwih gampang ngawaskeunana.
<p>Mun jaga anjeun moal deui ngawaskeun parobahan na kaca éta, klik tumbu \"Eureun ngawaskeun\" na lajursisi.",
-'removedwatch' => 'Dikaluarkeun ti awaskeuneun',
'removedwatchtext' => 'Kaca "[[:$1]]" geus dikaluarkeun tina [[Special:Watchlist|daptar awaskeuneun]] anjeun.',
'watch' => 'awaskeun',
'watchthispage' => 'Awaskeun kaca ieu',
@@ -1852,7 +1893,7 @@ Mun anjeun teu sindang deui ka ieu kaca, parobahan salajengna moal diémbarkeun.
Pikeun ngarobah setélan dabtar awaseun anjeun, sindang ka {{SERVER}}{{localurl:Husus:Watchlist|edit=yes}}
Asupan jeung bantuan salajengna:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Hapus kaca',
@@ -1867,7 +1908,7 @@ Asupan jeung bantuan salajengna:
'confirmdeletetext' => 'Anjeun rék ngahapus hiji kaca atawa gambar katut jujutanana tina pangkalan data, mangga yakinkeun yén anjeun mémang niat midamel ieu, yén anjeun ngartos kana sagala konsékuénsina, sarta yén anjeun ngalakukeun ieu saluyu jeung [[{{MediaWiki:Policy-url}}|kawijakan {{SITENAME}}]].',
'actioncomplete' => 'Tarékah geus hasil',
'actionfailed' => 'Tarékah gagal',
-'deletedtext' => '"<nowiki>$1</nowiki>" geus dihapus. Tempo $2 pikeun rékaman hapusan anyaran ieu.',
+'deletedtext' => '"$1" geus dihapus. Tempo $2 pikeun rékaman hapusan anyaran ieu.',
'deletedarticle' => 'ngahapus "[[$1]]"',
'dellogpage' => 'Log_hapusan',
'dellogpagetext' => 'Di handap ieu daptar hapusan nu ahir-ahir, sakabéh wanci dumasar wanci server.',
@@ -2046,16 +2087,16 @@ Pikeun rujukan, éntri log panungtung dipidangkeun di handap:',
'whatlinkshere-filters' => 'Saringan',
# Block/unblock
+'block' => 'Peungpeuk kontributor',
+'unblock' => 'Buka peungpeuk kontributor',
'blockip' => 'Peungpeuk pamaké',
'blockip-title' => 'Peungpeuk pamaké',
'blockip-legend' => 'Peungpeuk pamaké',
'blockiptext' => 'Paké formulir di handap pikeun meungpeuk aksés nulis ti alamat IP atawa ngaran pamaké husus. Ieu sakuduna ditujukeun pikeun nyegah vandalisme, sarta saluyu jeung [[{{MediaWiki:Policy-url}}|kawijakan]]. Eusi alesan nu jéntré (misal, ngarujuk kaca tinangtu nu geus diruksak).',
-'ipaddress' => 'Alamat IP/ngaran pamaké',
'ipadressorusername' => 'Alamat IP atawa ngaran pamaké',
'ipbexpiry' => 'Kadaluarsa',
'ipbreason' => 'Alesan:',
'ipbreasonotherlist' => 'Alesan séjén',
-'ipbanononly' => 'Ngan dipeungpeuk pamake teu daptar',
'ipbcreateaccount' => 'Tong bisa nyieun rekening',
'ipbemailban' => 'Henteu kaci pamaké ngirimkeun surélék',
'ipbenableautoblock' => 'Peungpeuk sacara otomatis alamat IP anu panungtungan dipaké ku pamaké sarta sakabéh alamat IP anu kungsi dipaké.',
@@ -2079,13 +2120,16 @@ Pikeun rujukan, éntri log panungtung dipidangkeun di handap:',
'unblockiptext' => 'Paké formulir di handap pikeun mulangkeun aksés nulis ka alamat IP atawa ngaran pamaké nu saméméhna dipeungpeuk.',
'ipusubmit' => 'Buka peungpeuk pikeun pamaké ieu',
'unblocked' => 'peungpeuk ka [[User:$1|$1]] geus dicabut',
+'unblocked-range' => '$1 geus teu dipeungpeuk',
'unblocked-id' => 'peungpeuk $1 geus dicabut',
+'blocklist' => 'Kontributor nu dipeungpeuk',
'ipblocklist' => 'Pamaké nu dipeungpeuk',
'ipblocklist-legend' => 'Téang pamaké nu dipeungpeuk',
-'ipblocklist-username' => 'Landihan pamaké atawa alamat IP:',
+'blocklist-timestamp' => 'Cap titimangsa',
+'blocklist-by' => 'Kuncén nu meungpeuk',
+'blocklist-reason' => 'Alesan',
'ipblocklist-submit' => 'Téang',
'ipblocklist-localblock' => 'Blok lokal',
-'blocklistline' => '$1, $2 dipeungpeuk $3 (kadaluwarsa $4)',
'infiniteblock' => 'tanpa wates',
'expiringblock' => 'kadaluwarsa $1 jam $2',
'anononlyblock' => 'ngan nu teu daptar',
@@ -2105,7 +2149,7 @@ Alesan: "$2"',
'blocklog-showlog' => 'Ieu pamaké saméméhna geus kungsi dipeungpeuk.
Pikeun rujukan, logna dipidangkeun di handap ieu:',
'blocklogentry' => 'meungpeuk [[$1]] nepi ka $2 $3',
-'blocklogtext' => 'Ieu mangrupa log peta meungpeuk jeung muka peungpeuk pamaké, teu kaasup alamat IP nu dipeungpeukna otomatis. Tempo [[Special:IPBlockList|daptar peungpeuk IP]] pikeun daptar cegahan jeung peungpeuk.',
+'blocklogtext' => 'Ieu mangrupa log peta meungpeuk jeung muka peungpeuk pamaké, teu kaasup alamat IP nu dipeungpeukna otomatis. Tempo [[Special:BlockList|daptar peungpeuk IP]] pikeun daptar cegahan jeung peungpeuk.',
'unblocklogentry' => 'peungpeuk dibuka "$1"',
'block-log-flags-anononly' => 'pamaké anonim wungkul',
'block-log-flags-nocreate' => 'teu bisa nyieun akun',
@@ -2116,7 +2160,9 @@ Pikeun rujukan, logna dipidangkeun di handap ieu:',
'range_block_disabled' => 'Pangabisa kuncén pikeun nyieun sarupaning peungpeuk geus ditumpurkeun.',
'ipb_expiry_invalid' => 'Wanci daluwarsa teu bener.',
'ipb_already_blocked' => '"$1" geus dipeungpeuk',
+'ipb-needreblock' => '$1 geus dipeungpeuk. Rék dirobah sétinganana?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Peungpeuk|Peungpeuk}} lianna',
+'unblock-hideuser' => 'Anjeun teu bisa muka peungpeuk ieu pamaké, kusabab landihanan keur disumputkeun.',
'ipb_cant_unblock' => 'Éror: ID peungpeuk $1 teu kapanggih. Sigana mah geus dibuka.',
'ip_range_invalid' => 'Angka IP teu bener.',
'blockme' => 'Peungpeuk kuring',
@@ -2389,30 +2435,13 @@ Cara kieu bisa nambahkeun alesan dina ringkesanana.',
Sigana mah ieu téh alatan tumbu ka loka luar.',
# Info page
-'infosubtitle' => 'Iber pikeun kaca',
-'numedits' => 'Jumlah éditan (artikel): $1',
-'numtalkedits' => 'Jumlah éditan (kaca sawala): $1',
-'numwatchers' => 'Jumlah nu ngawaskeun: $1',
-'numauthors' => 'Jumlah pangarang nu béda (artikel): $1',
-'numtalkauthors' => 'Jumlah pangarang nu béda (kaca sawala): $1',
-
-# Math options
-'mw_math_png' => 'Jieun wae PNG',
-'mw_math_simple' => 'Mun basajan HTML, mun henteu PNG',
-'mw_math_html' => 'Mun bisa HTML, mun henteu PNG',
-'mw_math_source' => 'Antep salaku TeX (pikeun panyungsi tulisan)',
-'mw_math_modern' => 'Dianjurkeun pikeun panyungsi modérn',
-'mw_math_mathml' => 'Mun bisa MathML (uji coba)',
-
-# Math errors
-'math_failure' => "Peta ''parse'' gagal",
-'math_unknown_error' => 'Kasalahan teu kanyahoan',
-'math_unknown_function' => 'fungsi teu kanyahoan',
-'math_lexing_error' => 'kasalahan lexing',
-'math_syntax_error' => 'Kasalahan rumpaka',
-'math_image_error' => 'Konversi PNG gagal; pastikeun yén latex, dvips, gs, jeung convert geus bener nginstalna',
-'math_bad_tmpdir' => 'Henteu bisa nulis atawa nyieun direktori samentara math',
-'math_bad_output' => 'Henteu bisa nulisikeun atawa nyieun direktori keluaran math',
+'pageinfo-title' => 'Émbaran pikeun "$1"',
+'pageinfo-header-edits' => 'Éditan',
+'pageinfo-subjectpage' => 'Kaca',
+'pageinfo-talkpage' => 'Kaca sawala',
+'pageinfo-watchers' => 'Jumlah nu ngawaskeun',
+'pageinfo-edits' => 'Jumlah éditan',
+'pageinfo-authors' => 'Jumlah kontributor nu béda',
# Patrolling
'markaspatrolleddiff' => 'Tandaan salaku geus diriksa',
@@ -2452,10 +2481,11 @@ $1',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|kaca|kaca}}',
'file-info' => 'ukuran koropak: $1, tipeu MIME: $2',
'file-info-size' => '$1 × $2 piksel, ukuran koropak: $3, tipeu MIME: $4',
+'file-info-size-pages' => '$1 × $2 pixel, ukuran berkas: $3, tipeu MIME: $4, $5 {{PLURAL:$5|kaca|kaca}}',
'file-nohires' => '<small>Euweuh résolusi nu leuwih luhur.</small>',
'svg-long-desc' => 'Koropak SVG, nominalna $1 × $2 piksel, ukuranana $3',
'show-big-image' => 'Résolusi pinuh',
-'show-big-image-thumb' => '<small>Ukuran ieu pidangan: $1 × $2 piksel</small>',
+'show-big-image-size' => '$1 × $2 pixel',
# Special:NewFiles
'newimages' => 'Galeri gambar anyar',
@@ -2480,14 +2510,21 @@ Tutumbu sanggeusna dina baris anu sarua dianggap bener, nyaéta artikel anu mida
'metadata-help' => 'Ieu koropak ngandung émbaran tambahan, nu sigana asalna tina kaméra digital atawa paminday nu dipaké pikeun ngadigitalkeunana. Mun ieu koropak geus dirobah tina bentuk aslina, datana bisa jadi teu bener.',
'metadata-expand' => 'Témbongkeun wincikan panambah',
'metadata-collapse' => 'Sumputkeun wincikan panambah',
-'metadata-fields' => 'Widang métadata EXIF nu dibéréndélkeun di handap bakal dipidangkeun dina kaca gambar mun tabél métadata nyumput. Nu séjénna bakal disumputkeun luyu jeung buhunna (default).
+'metadata-fields' => 'Widang métadata gambar nu dibéréndélkeun di handap bakal dipidangkeun dina kaca gambar mun tabél métadata disumputkeun.
+Nu séjénna bakal disumputkeun sakumaha asalna.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Lega',
@@ -2500,11 +2537,9 @@ Tutumbu sanggeusna dina baris anu sarua dianggap bener, nyaéta artikel anu mida
'exif-ycbcrpositioning' => 'Perenah Y jeung C',
'exif-xresolution' => 'Résolusi horizontal',
'exif-yresolution' => 'Résolusi tangtung',
-'exif-resolutionunit' => 'Satuan résolusi X jeung Y',
'exif-stripoffsets' => 'Perenah data gambar',
'exif-jpeginterchangeformat' => 'Ofset ka JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bit data JPEG',
-'exif-transferfunction' => 'Fungsi transfer',
'exif-referenceblackwhite' => 'Pasangan ajen rujukan hideung jeung bodas',
'exif-datetime' => 'Wanci jeung titimangsa parobahan koropak',
'exif-imagedescription' => 'Judul gambar',
@@ -2519,7 +2554,6 @@ Tutumbu sanggeusna dina baris anu sarua dianggap bener, nyaéta artikel anu mida
'exif-compressedbitsperpixel' => 'Mode komprési gambar',
'exif-pixelydimension' => 'Lébar gambar',
'exif-pixelxdimension' => 'Jangkung gambar',
-'exif-makernote' => 'Catétan produsen',
'exif-usercomment' => 'Koméntar pamaké',
'exif-datetimeoriginal' => 'Titimangsa jeung wanci dijieunna data',
'exif-datetimedigitized' => 'Titimangsa jeung wanci digitisasi',
@@ -2533,7 +2567,6 @@ Tutumbu sanggeusna dina baris anu sarua dianggap bener, nyaéta artikel anu mida
'exif-subjectdistance' => 'Jarak subjék',
'exif-lightsource' => 'Sumber cahya',
'exif-focallength' => 'Panjang fokus lénsa',
-'exif-spatialfrequencyresponse' => 'Réspons frékuénsi wawaréhan',
'exif-focalplanexresolution' => 'Résolusi X datar fokus',
'exif-focalplaneyresolution' => 'Résolusi Y datar fokus',
'exif-focalplaneresolutionunit' => 'Unit résolusi datar fokus',
@@ -2559,7 +2592,65 @@ Tutumbu sanggeusna dina baris anu sarua dianggap bener, nyaéta artikel anu mida
'exif-gpsareainformation' => 'Ngaran wewengkon GPS',
'exif-gpsdatestamp' => 'Titimangsa GPS',
'exif-gpsdifferential' => 'Koréksi diferensial GPS',
+'exif-keywords' => 'Kecap konci',
+'exif-worldregioncreated' => 'Wewengkon dunya tempat moto',
+'exif-countrycreated' => 'Nagara tempat moto',
+'exif-countrycodecreated' => 'Kodeu nagara tempat moto',
+'exif-provinceorstatecreated' => 'Propinsi atawa nagara bagian tempat moto',
+'exif-citycreated' => 'Kota tempat moto',
+'exif-sublocationcreated' => 'Sublokasi kota tempat moto',
+'exif-worldregiondest' => 'Wewengkon dunya nu ditémbongkeun',
+'exif-countrydest' => 'Nagara nu ditémbongkeun',
+'exif-countrycodedest' => 'Kodeu nagara nu ditémbongkeun',
+'exif-provinceorstatedest' => 'Propinsi atawa nagara bagian nu ditémbongkeun',
+'exif-citydest' => 'Kota nu ditémbongkeun',
+'exif-sublocationdest' => 'Sublokasi kota nu ditémbongkeun',
'exif-objectname' => 'Judul pondok',
+'exif-specialinstructions' => 'Paréntah husus',
+'exif-source' => 'Sumber',
+'exif-editstatus' => 'Status éditorial gambar',
+'exif-urgency' => 'Urgensi',
+'exif-locationdest' => 'Lokasi nu digambarkeun',
+'exif-locationdestcode' => 'Kodeu lokasi nu digambarkeun',
+'exif-writer' => 'Nu nulis',
+'exif-languagecode' => 'Basa',
+'exif-iimversion' => 'Vérsi IIM',
+'exif-iimcategory' => 'Katégori',
+'exif-iimsupplementalcategory' => 'Katégori tambahan',
+'exif-datetimeexpires' => 'Ulah dipaké sanggeus',
+'exif-datetimereleased' => 'Dirilis ping',
+'exif-originaltransmissionref' => 'Kodeu lokasi transmisi asli',
+'exif-lens' => 'Lénsa nu dipaké',
+'exif-serialnumber' => 'Nomer séri kaméra',
+'exif-cameraownername' => 'Nu boga kaméra',
+'exif-label' => 'Labél',
+'exif-datetimemetadata' => 'Titimangsa panungtungan métadata dirobah',
+'exif-nickname' => 'Ngaran informal gambar',
+'exif-rating' => 'Peunteun (ti 5)',
+'exif-rightscertificate' => 'Sértipikat manajemén hak',
+'exif-copyrighted' => 'Status hak cipta',
+'exif-copyrightowner' => 'Nu nyepeng hak cipta',
+'exif-usageterms' => 'Katangtuan pamakéan',
+'exif-webstatement' => 'Pertélaan hak salin onlén',
+'exif-originaldocumentid' => 'ID unik dokumén asli',
+'exif-licenseurl' => 'URL pikeun lisénsi hak cipta',
+'exif-morepermissionsurl' => 'Ëmbaran lisénsi lianna',
+'exif-attributionurl' => 'Nalika migunakeun ieu karya, mangga tumbukeun ka',
+'exif-preferredattributionname' => 'Nalika migunakeun ieu karya, mangga dugikeun pangajén ka',
+'exif-pngfilecomment' => 'Koméntar berkas PNG',
+'exif-disclaimer' => 'Bantahan',
+'exif-contentwarning' => 'Pépéling eusi',
+'exif-giffilecomment' => 'Koméntar berkas GIF',
+'exif-intellectualgenre' => 'Jenis objék',
+'exif-subjectnewscode' => 'Kodeu subjék',
+'exif-scenecode' => 'Sandi adegan IPTC',
+'exif-event' => 'Kajaadian anu ditémbongkan',
+'exif-organisationinimage' => 'Organisasi nu digambarkeun',
+'exif-personinimage' => 'Jalma nu digambarkeun',
+'exif-originalimageheight' => 'Jangkung gambar saméméh diteukteuk',
+'exif-originalimagewidth' => 'Lébar gambar saméméh diteukteuk',
+
+'exif-copyrighted-false' => 'Domain publik',
'exif-unknowndate' => 'Titimangsa teu kanyahoan',
@@ -2667,15 +2758,13 @@ Tutumbu sanggeusna dina baris anu sarua dianggap bener, nyaéta artikel anu mida
# External editor support
'edit-externally' => 'Édit koropak ieu migunakeun aplikasi éksternal',
-'edit-externally-help' => 'Baca [http://www.mediawiki.org/wiki/Manual:External_editors pituduh ngatur] pikeun émbaran leuwih jéntré.',
+'edit-externally-help' => 'Baca [//www.mediawiki.org/wiki/Manual:External_editors pituduh ngatur] pikeun émbaran leuwih jéntré.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'sadaya',
-'imagelistall' => 'kabéh',
-'watchlistall2' => 'sadaya',
-'namespacesall' => 'kabéh',
-'monthsall' => 'kabéh',
-'limitall' => 'kabéh',
+'watchlistall2' => 'sadaya',
+'namespacesall' => 'kabéh',
+'monthsall' => 'kabéh',
+'limitall' => 'kabéh',
# E-mail address confirmation
'confirmemail' => 'Konfirmasi alamat surélék',
@@ -2789,23 +2878,22 @@ Coba ku sawangan normal.',
'duplicate-defaultsort' => '\'\'\'Awas\'\'\': Konci runtuyan asal "$2" ngalindih konci runtuyan asal "$1" anu saméméhna.',
# Special:Version
-'version' => 'Vérsi',
-'version-extensions' => 'Éksténsi nu diinstal',
-'version-specialpages' => 'Kaca husus',
-'version-parserhooks' => 'Kait parser',
-'version-variables' => 'Variabel',
-'version-other' => 'Séjén',
-'version-hooks' => 'Kait',
-'version-extension-functions' => 'Fungsi éksténsi',
-'version-parser-extensiontags' => 'Tag éksténsi parser',
-'version-skin-extension-functions' => 'Fungsi éksténsi kulit',
-'version-hook-name' => 'Ngaran kait',
-'version-hook-subscribedby' => 'Didaptarkeun ku',
-'version-version' => '(Vérsi $1)',
-'version-license' => 'Lisénsi',
-'version-software' => 'Sopwér nu geus diinstal',
-'version-software-product' => 'Produk',
-'version-software-version' => 'Vérsi',
+'version' => 'Vérsi',
+'version-extensions' => 'Éksténsi nu diinstal',
+'version-specialpages' => 'Kaca husus',
+'version-parserhooks' => 'Kait parser',
+'version-variables' => 'Variabel',
+'version-other' => 'Séjén',
+'version-hooks' => 'Kait',
+'version-extension-functions' => 'Fungsi éksténsi',
+'version-parser-extensiontags' => 'Tag éksténsi parser',
+'version-hook-name' => 'Ngaran kait',
+'version-hook-subscribedby' => 'Didaptarkeun ku',
+'version-version' => '(Vérsi $1)',
+'version-license' => 'Lisénsi',
+'version-software' => 'Sopwér nu geus diinstal',
+'version-software-product' => 'Produk',
+'version-software-version' => 'Vérsi',
# Special:FilePath
'filepath' => 'Jalur koropak',
diff --git a/languages/messages/MessagesSv.php b/languages/messages/MessagesSv.php
index 38d2909c..fe292c7b 100644
--- a/languages/messages/MessagesSv.php
+++ b/languages/messages/MessagesSv.php
@@ -17,6 +17,7 @@
* @author Grillo
* @author Habj
* @author Habjchen
+ * @author Hannibal
* @author Jon Harald Søby
* @author LPfi
* @author Lejonel
@@ -75,91 +76,93 @@ $namespaceAliases = array(
#!!# Translation <b>Prefixindex</b> for <a href="#mw-sp-magic-Prefixindex">Prefixindex</a> is not in normalised form, which is <b>PrefixIndex</b>
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Dubbla_omdirigeringar' ),
+ 'Allmessages' => array( 'Systemmeddelanden' ),
+ 'Allpages' => array( 'Alla_sidor' ),
+ 'Ancientpages' => array( 'Gamla_sidor' ),
+ 'Blankpage' => array( 'Tom_sida' ),
+ 'Block' => array( 'Blockera' ),
+ 'Blockme' => array( 'Blockera_mig' ),
+ 'Booksources' => array( 'Bokkällor' ),
'BrokenRedirects' => array( 'Trasiga_omdirigeringar', 'DÃ¥liga_omdirigeringar' ),
- 'Disambiguations' => array( 'Förgreningssidor' ),
- 'Userlogin' => array( 'Inloggning' ),
- 'Userlogout' => array( 'Utloggning' ),
+ 'Categories' => array( 'Kategorier' ),
+ 'ChangePassword' => array( 'Återställ_lösenord' ),
+ 'Confirmemail' => array( 'Bekräfta_epost' ),
+ 'Contributions' => array( 'Bidrag' ),
'CreateAccount' => array( 'Skapa_konto' ),
- 'Preferences' => array( 'Inställningar' ),
- 'Watchlist' => array( 'Bevakningslista', 'Övervakningslista' ),
- 'Recentchanges' => array( 'Senaste_ändringar' ),
- 'Upload' => array( 'Uppladdning' ),
+ 'Deadendpages' => array( 'Sidor_utan_länkar', 'Sidor_utan_länkar_från' ),
+ 'DeletedContributions' => array( 'Raderade_bidrag' ),
+ 'Disambiguations' => array( 'Förgreningssidor' ),
+ 'DoubleRedirects' => array( 'Dubbla_omdirigeringar' ),
+ 'Emailuser' => array( 'E-mail' ),
+ 'Export' => array( 'Exportera' ),
+ 'Fewestrevisions' => array( 'Minst_versioner' ),
+ 'FileDuplicateSearch' => array( 'Dublettfilsökning' ),
+ 'Filepath' => array( 'Filsökväg' ),
+ 'Import' => array( 'Importera' ),
+ 'Invalidateemail' => array( 'Ogiltigförklara_epost' ),
+ 'BlockList' => array( 'Blockeringslista' ),
+ 'LinkSearch' => array( 'Länksökning' ),
+ 'Listadmins' => array( 'Administratörer' ),
+ 'Listbots' => array( 'Robotlista' ),
'Listfiles' => array( 'Fillista', 'Bildlista' ),
- 'Newimages' => array( 'Nya_bilder' ),
- 'Listusers' => array( 'Användare', 'Användarlista' ),
'Listgrouprights' => array( 'Grupprättighetslista' ),
- 'Statistics' => array( 'Statistik' ),
- 'Randompage' => array( 'Slumpsida' ),
+ 'Listredirects' => array( 'Omdirigeringar' ),
+ 'Listusers' => array( 'Användare', 'Användarlista' ),
+ 'Lockdb' => array( 'LÃ¥s_databasen' ),
+ 'Log' => array( 'Logg' ),
'Lonelypages' => array( 'Föräldralösa_sidor', 'Övergivna_sidor', 'Sidor_utan_länkar_till' ),
- 'Uncategorizedpages' => array( 'Okategoriserade_sidor' ),
- 'Uncategorizedcategories' => array( 'Okategoriserade_kategorier' ),
- 'Uncategorizedimages' => array( 'Okategoriserade_filer', 'Okategoriserade_bilder' ),
- 'Uncategorizedtemplates' => array( 'Okategoriserade_mallar' ),
- 'Unusedcategories' => array( 'Oanvända_kategorier' ),
- 'Unusedimages' => array( 'Oanvända_filer', 'Oanvända_bilder' ),
- 'Wantedpages' => array( 'Önskade_sidor', 'Trasiga_länkar' ),
- 'Wantedcategories' => array( 'Önskade_kategorier' ),
- 'Wantedfiles' => array( 'Önskade_filer' ),
- 'Wantedtemplates' => array( 'Önskade_mallar' ),
+ 'Longpages' => array( 'LÃ¥nga_sidor' ),
+ 'MergeHistory' => array( 'Slå_ihop_historik' ),
+ 'MIMEsearch' => array( 'MIME-sökning' ),
+ 'Mostcategories' => array( 'Flest_kategorier' ),
+ 'Mostimages' => array( 'Mest_länkade_filer', 'Flest_bilder' ),
'Mostlinked' => array( 'Mest_länkade_sidor' ),
'Mostlinkedcategories' => array( 'Största_kategorier' ),
'Mostlinkedtemplates' => array( 'Mest_använda_mallar' ),
- 'Mostimages' => array( 'Mest_länkade_filer', 'Flest_bilder' ),
- 'Mostcategories' => array( 'Flest_kategorier' ),
'Mostrevisions' => array( 'Flest_versioner' ),
- 'Fewestrevisions' => array( 'Minst_versioner' ),
- 'Shortpages' => array( 'Korta_sidor' ),
- 'Longpages' => array( 'LÃ¥nga_sidor' ),
+ 'Movepage' => array( 'Flytta' ),
+ 'Mycontributions' => array( 'Mina_bidrag' ),
+ 'Mypage' => array( 'Min_sida' ),
+ 'Mytalk' => array( 'Min_diskussion' ),
+ 'Myuploads' => array( 'Mina_uppladdningar' ),
+ 'Newimages' => array( 'Nya_bilder' ),
'Newpages' => array( 'Nya_sidor' ),
- 'Ancientpages' => array( 'Gamla_sidor' ),
- 'Deadendpages' => array( 'Sidor_utan_länkar', 'Sidor_utan_länkar_från' ),
+ 'Popularpages' => array( 'Populära_sidor' ),
+ 'Preferences' => array( 'Inställningar' ),
'Protectedpages' => array( 'Skyddade_sidor' ),
'Protectedtitles' => array( 'Skyddade_titlar' ),
- 'Allpages' => array( 'Alla_sidor' ),
- 'Ipblocklist' => array( 'Blockeringslista' ),
- 'Specialpages' => array( 'Specialsidor' ),
- 'Contributions' => array( 'Bidrag' ),
- 'Emailuser' => array( 'E-mail' ),
- 'Confirmemail' => array( 'Bekräfta_epost' ),
- 'Whatlinkshere' => array( 'Länkar_hit' ),
+ 'Randompage' => array( 'Slumpsida' ),
+ 'Randomredirect' => array( 'Slumpomdirigering' ),
+ 'Recentchanges' => array( 'Senaste_ändringar' ),
'Recentchangeslinked' => array( 'Senaste_relaterade_ändringar' ),
- 'Movepage' => array( 'Flytta' ),
- 'Blockme' => array( 'Blockera_mig' ),
- 'Booksources' => array( 'Bokkällor' ),
- 'Categories' => array( 'Kategorier' ),
- 'Export' => array( 'Exportera' ),
- 'Allmessages' => array( 'Systemmeddelanden' ),
- 'Log' => array( 'Logg' ),
- 'Blockip' => array( 'Blockera' ),
+ 'Revisiondelete' => array( 'Radera_version' ),
+ 'Search' => array( 'Sök' ),
+ 'Shortpages' => array( 'Korta_sidor' ),
+ 'Specialpages' => array( 'Specialsidor' ),
+ 'Statistics' => array( 'Statistik' ),
+ 'Tags' => array( 'Märken', 'Taggar' ),
+ 'Unblock' => array( 'Avblockera' ),
+ 'Uncategorizedcategories' => array( 'Okategoriserade_kategorier' ),
+ 'Uncategorizedimages' => array( 'Okategoriserade_filer', 'Okategoriserade_bilder' ),
+ 'Uncategorizedpages' => array( 'Okategoriserade_sidor' ),
+ 'Uncategorizedtemplates' => array( 'Okategoriserade_mallar' ),
'Undelete' => array( 'Återställ' ),
- 'Import' => array( 'Importera' ),
- 'Lockdb' => array( 'LÃ¥s_databasen' ),
'Unlockdb' => array( 'LÃ¥s_upp_databasen' ),
- 'Userrights' => array( 'Rättigheter' ),
- 'MIMEsearch' => array( 'MIME-sökning' ),
- 'FileDuplicateSearch' => array( 'Dublettfilsökning' ),
- 'Unwatchedpages' => array( 'Obevakade_sidor' ),
- 'Listredirects' => array( 'Omdirigeringar' ),
- 'Revisiondelete' => array( 'Radera_version' ),
+ 'Unusedcategories' => array( 'Oanvända_kategorier' ),
+ 'Unusedimages' => array( 'Oanvända_filer', 'Oanvända_bilder' ),
'Unusedtemplates' => array( 'Oanvända_mallar' ),
- 'Randomredirect' => array( 'Slumpomdirigering' ),
- 'Mypage' => array( 'Min_sida' ),
- 'Mytalk' => array( 'Min_diskussion' ),
- 'Mycontributions' => array( 'Mina_bidrag' ),
- 'Listadmins' => array( 'Administratörer' ),
- 'Listbots' => array( 'Robotlista' ),
- 'Popularpages' => array( 'Populära_sidor' ),
- 'Search' => array( 'Sök' ),
- 'Resetpass' => array( 'Återställ_lösenord' ),
+ 'Unwatchedpages' => array( 'Obevakade_sidor' ),
+ 'Upload' => array( 'Uppladdning' ),
+ 'Userlogin' => array( 'Inloggning' ),
+ 'Userlogout' => array( 'Utloggning' ),
+ 'Userrights' => array( 'Rättigheter' ),
+ 'Wantedcategories' => array( 'Önskade_kategorier' ),
+ 'Wantedfiles' => array( 'Önskade_filer' ),
+ 'Wantedpages' => array( 'Önskade_sidor', 'Trasiga_länkar' ),
+ 'Wantedtemplates' => array( 'Önskade_mallar' ),
+ 'Watchlist' => array( 'Bevakningslista', 'Övervakningslista' ),
+ 'Whatlinkshere' => array( 'Länkar_hit' ),
'Withoutinterwiki' => array( 'Utan_interwikilänkar' ),
- 'MergeHistory' => array( 'Slå_ihop_historik' ),
- 'Filepath' => array( 'Filsökväg' ),
- 'Invalidateemail' => array( 'Ogiltigförklara_epost' ),
- 'Blankpage' => array( 'Tom_sida' ),
- 'LinkSearch' => array( 'Länksökning' ),
- 'DeletedContributions' => array( 'Raderade_bidrag' ),
- 'Tags' => array( 'Märken', 'Taggar' ),
);
$magicWords = array(
@@ -338,9 +341,9 @@ $messages = array(
'tog-shownumberswatching' => 'Visa antalet användare som bevakar',
'tog-oldsig' => 'Nuvarande signatur:',
'tog-fancysig' => 'Rå signatur som wikitext (utan en automatisk länk)',
-'tog-externaleditor' => 'Använd extern editor som standard (endast för avancerade användare, speciella inställningar på din dator krävs. [http://www.mediawiki.org/wiki/Manual:External_editors Mer information.])',
+'tog-externaleditor' => 'Använd extern editor som standard (endast för avancerade användare, speciella inställningar på din dator krävs. [//www.mediawiki.org/wiki/Manual:External_editors Mer information.])',
'tog-externaldiff' => 'Använd externt diff-verktyg som förval (endast för avancerade användare, kräver speciella inställningar i din dator.
-[http://www.mediawiki.org/wiki/Manual:External_editors Mer information.])',
+[//www.mediawiki.org/wiki/Manual:External_editors Mer information.])',
'tog-showjumplinks' => 'Aktivera "hoppa till"-tillgänglighetslänkar',
'tog-uselivepreview' => 'Använd direktuppdaterad förhandsgranskning (Javascript, på försöksstadiet)',
'tog-forceeditsummary' => 'PÃ¥minn mig om jag inte fyller i en redigeringskommentar',
@@ -437,15 +440,7 @@ $messages = array(
'listingcontinuesabbrev' => 'forts.',
'index-category' => 'Indexerade sidor',
'noindex-category' => 'Icke-indexerade sidor',
-
-'mainpagetext' => "'''MediaWiki har installerats utan problem.'''",
-'mainpagedocfooter' => 'Information om hur wiki-programvaran används finns i [http://meta.wikimedia.org/wiki/Help:Contents användarguiden].
-
-== Att komma igång ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista över konfigurationsinställningar]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mail list]',
+'broken-file-category' => 'Sidor med trasiga fillänkar',
'about' => 'Om',
'article' => 'Innehållssida',
@@ -497,10 +492,10 @@ $messages = array(
'history' => 'Versionshistorik',
'history_short' => 'Historik',
'updatedmarker' => 'uppdaterad sedan senaste besöket',
-'info_short' => 'Information',
'printableversion' => 'Utskriftsvänlig version',
'permalink' => 'Permanent länk',
'print' => 'Skriv ut',
+'view' => 'Visa',
'edit' => 'Redigera',
'create' => 'Skapa',
'editthispage' => 'Redigera denna sida',
@@ -508,6 +503,7 @@ $messages = array(
'delete' => 'Radera',
'deletethispage' => 'Radera denna sida',
'undelete_short' => 'Återställ {{PLURAL:$1|en version|$1 versioner}}',
+'viewdeleted_short' => 'Visa {{PLURAL:$1|en raderad redigering|$1 raderade redigeringar}}',
'protect' => 'Skrivskydda',
'protect_change' => 'ändra',
'protectthispage' => 'Skrivskydda denna sida',
@@ -591,6 +587,8 @@ $1',
'toc' => 'Innehåll',
'showtoc' => 'visa',
'hidetoc' => 'göm',
+'collapsible-collapse' => 'Göm',
+'collapsible-expand' => 'Expandera',
'thisisdeleted' => 'Visa eller återställ $1?',
'viewdeleted' => 'Visa $1?',
'restorelink' => '{{PLURAL:$1|en raderad version|$1 raderade versioner}}',
@@ -602,6 +600,8 @@ $1',
'page-rss-feed' => '"$1" RSS-matning',
'page-atom-feed' => '"$1" Atom-matning',
'red-link-title' => '$1 (sidan existerar inte)',
+'sort-descending' => 'Sortera fallande',
+'sort-ascending' => 'Sortera stigande',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Sida',
@@ -684,12 +684,13 @@ Den kan innehålla ett eller flera tecken som inte får användas i sidtitlar.',
'viewsourcetext' => 'Du kan se och kopiera denna sidas källtext:',
'protectedinterface' => 'Denna sida innehåller text för mjukvarans gränssnitt, och är skrivskyddad för att förebygga missbruk.',
'editinginterface' => "'''Varning:''' Du redigerar en sida som används till texten i gränssnittet. Ändringar på denna sida kommer att påverka gränssnittets utseende för alla användare.
-För översättningar, använd gärna [http://translatewiki.net/wiki/Main_Page?setlang=sv translatewiki.net], översättningsprojektet för MediaWiki.",
+För översättningar, använd gärna [//translatewiki.net/wiki/Main_Page?setlang=sv translatewiki.net], översättningsprojektet för MediaWiki.",
'sqlhidden' => '(gömd SQL-förfrågan)',
'cascadeprotected' => 'Den här sidan har skyddats från redigering eftersom den inkluderas på följande {{PLURAL:$1|sida|sidor}} som skrivskyddats med "kaskaderande skydd":
$2',
'namespaceprotected' => "Du har inte behörighet att redigera sidor i namnrymden '''$1'''.",
-'customcssjsprotected' => 'Du har inte behörighet att redigera den här sidan eftersom den innehåller en annan användares personliga inställningar.',
+'customcssprotected' => 'Du har inte behörighet att redigera denna CSS-sidan eftersom den innehåller en annan användares personliga inställningar.',
+'customjsprotected' => 'Du har inte behörighet att redigera denna JavaScript-sidan eftersom den innehåller en annan användares personliga inställningar.',
'ns-specialprotected' => 'Specialsidor kan inte redigeras.',
'titleprotected' => 'Denna sidtitel har skyddats från att skapas av [[User:$1|$1]].
Den uppgivna anledningen är "\'\'$2\'\'".',
@@ -727,6 +728,7 @@ Glöm inte att justera dina [[Special:Preferences|{{SITENAME}}-inställningar]].
'createaccount' => 'Skapa ett konto',
'gotaccount' => "Har du redan ett användarkonto? '''$1'''.",
'gotaccountlink' => 'Logga in',
+'userlogin-resetlink' => 'Har du glömt dina inloggningsuppgifter?',
'createaccountmail' => 'med e-post',
'createaccountreason' => 'Orsak:',
'badretype' => 'De lösenord du uppgett överenstämmer inte med varandra.',
@@ -739,13 +741,15 @@ Var god välj ett annat namn.',
Du har cookies avaktiverade.
Aktivera dem, och logga sen in med ditt nya användarnamn och lösenord.',
'nocookieslogin' => '{{SITENAME}} använder cookies för att logga in användare. Du har stängt av cookies i din webbläsare. Försök igen med stöd för cookies aktiverat.',
+'nocookiesfornew' => 'Användarkontot skapades inte, eftersom vi inte kunde bekräfta dess källa.
+Se till att du har aktiverat cookies, ladda om denna sida och försök igen.',
'noname' => 'Du har angett ett ogiltigt användarnamn.',
'loginsuccesstitle' => 'Inloggningen lyckades',
'loginsuccess' => "'''Du är nu inloggad på {{SITENAME}} som \"\$1\".'''",
'nosuchuser' => 'Det finns ingen användare med namnet "$1".
Användarnamn är skiftlägeskänsliga.
Kontrollera din stavning, eller [[Special:UserLogin/signup|skapa ett nytt konto]].',
-'nosuchusershort' => 'Det finns ingen användare som heter "<nowiki>$1</nowiki>". Kontrollera att du stavat rätt.',
+'nosuchusershort' => 'Det finns ingen användare som heter "$1". Kontrollera att du stavat rätt.',
'nouserspecified' => 'Du måste ange ett användarnamn.',
'login-userblocked' => 'Denna användare är blockerad. Login inte tillåtet.',
'wrongpassword' => 'Lösenordet du angav är felaktigt. Försök igen',
@@ -786,13 +790,14 @@ Du kan ignorera detta meddelande om kontot skapats av misstag.',
'usernamehasherror' => 'Användarnamnet får inte innehålla #.',
'login-throttled' => 'Du har gjort för många misslyckade inloggningsförsök till det här kontot.
Vänta innan du försöker igen.',
+'login-abort-generic' => 'Din inloggning misslyckades - Avbröts',
'loginlanguagelabel' => 'Språk: $1',
'suspicious-userlogout' => 'Din begäran om att logga ut nekades eftersom det ser ut som det skickades av en trasig webbläsare eller cachande proxy.',
# E-mail sending
'php-mail-error-unknown' => "Okänt fel i PHP's mail()-funktion",
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Ändra lösenord',
'resetpass_announce' => 'Du loggade in med ett temporärt lösenord. För att slutföra inloggningen måste du välja ett nytt lösenord.',
'resetpass_text' => '<!-- Lägg till text här -->',
@@ -810,6 +815,32 @@ Vänta innan du försöker igen.',
Du kanske redan har lyckats ändra ditt lösenord eller begärt ett nytt tillfälligt lösenord.',
'resetpass-temp-password' => 'Tillfälligt lösenord:',
+# Special:PasswordReset
+'passwordreset' => 'Lösenordsåterställning',
+'passwordreset-text' => 'Fyll i detta formulär för att få en påminnelse om dina kontouppgifter via e-post.',
+'passwordreset-legend' => 'Återställ lösenord',
+'passwordreset-disabled' => 'Lösenordsåterställning har inaktiverats på denna wiki.',
+'passwordreset-pretext' => '{{PLURAL:$1||Ange en av datadelarna nedan}}',
+'passwordreset-username' => 'Användarnamn:',
+'passwordreset-domain' => 'Domän:',
+'passwordreset-email' => 'E-postadress:',
+'passwordreset-emailtitle' => 'Kontouppgifter på {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Någon (förmodligen du, från IP-adressen $1) begärde en påminnelse av dina kontodetaljer för {{SITENAME}} ($4). Följande användar{{PLURAL:$3|konto är förknippad|konton är förknippade}} med denna e-postadress:
+
+$2
+
+{{PLURAL:$3|Detta|Dessa}} tillfälliga lösenord kommer att gå ut om {{PLURAL:$5|en dag|$5 dagar}}.
+Du bör logga in och välja ett nytt lösenord nu. Om någon annan gjorde denna begäran, eller om du kommer ihåg ditt ursprungliga lösenord, och du önskar inte att ändra det, kan du ignorera detta meddelande och fortsätta använda ditt gamla lösenord.',
+'passwordreset-emailtext-user' => 'Användaren $1 på {{SITENAME}} begärde en påminnelse om dina kontodetaljer för {{SITENAME}} ($4). Följande användar{{PLURAL:$3|konto är förknippad|konton är förknippade}} med denna e-postadress:
+
+$2
+
+{{PLURAL:$3|Detta|Dessa}} tillfälliga lösenord kommer att gå ut om {{PLURAL:$5|en dag|$5 dagar}}.
+Du bör logga in och välja ett nytt lösenord nu. Om någon annan gjorde denna begäran, eller om du kommer ihåg ditt ursprungliga lösenord, och du önskar inte att ändra det, kan du ignorera detta meddelande och fortsätta använda ditt gamla lösenord.',
+'passwordreset-emailelement' => 'Användarnamn: $1
+Tillfälligt lösenord: $2',
+'passwordreset-emailsent' => 'En påminnelse via e-post har skickats.',
+
# Edit page toolbar
'bold_sample' => 'Fet text',
'bold_tip' => 'Fet stil',
@@ -821,8 +852,6 @@ Du kanske redan har lyckats ändra ditt lösenord eller begärt ett nytt tillfä
'extlink_tip' => 'Extern länk (kom ihåg prefixet http://)',
'headline_sample' => 'Rubriktext',
'headline_tip' => 'Rubrik i nivå 2',
-'math_sample' => 'Skriv formeln här',
-'math_tip' => 'Matematisk formel (LaTeX)',
'nowiki_sample' => 'Skriv in oformaterad text här',
'nowiki_tip' => 'Ignorera wikiformatering',
'image_sample' => 'Exempel.jpg',
@@ -908,7 +937,7 @@ Du kan [[Special:Search/{{PAGENAME}}|söka efter denna sidtitel]] på andra sido
'noarticletext-nopermission' => 'Det finns för tillfället ingen text på denna sida.
Du kan [[Special:Search/{{PAGENAME}}|söka efter denna sidas titel]] i andra sidor,
eller <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} söka i relevanta loggar]</span>.',
-'userpage-userdoesnotexist' => '"$1" är inte ett registrerat användarkonto. Tänk efter om du vill skapa/redigera den här sidan.',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" är inte ett registrerat användarkonto. Tänk efter om du vill skapa/redigera den här sidan.',
'userpage-userdoesnotexist-view' => 'Kontot "$1" är inte registrerat.',
'blocked-notice-logextract' => 'Användaren är blockerad.
Orsaken till senaste blockeringen kan ses nedan:',
@@ -947,6 +976,7 @@ Om det fortfarande inte fungerar, pröva att [[Special:UserLogout|logga ut]] och
'token_suffix_mismatch' => "'''Din redigering har stoppats eftersom din klient har ändrat tecknen
i redigeringens \"edit token\". Redigeringen stoppades för att förhindra att sidtexten skadas.
Detta händer ibland om du använder buggiga webbaserade anonyma proxytjänster.'''",
+'edit_form_incomplete' => "'''Vissa delar av redigeringen kunde inte nå servern, dubbelkolla att dina ändringar är intakta och försök igen.'''",
'editing' => 'Redigerar $1',
'editingsection' => 'Redigerar $1 (avsnitt)',
'editingcomment' => 'Redigerar $1 (nytt avsnitt)',
@@ -1181,7 +1211,7 @@ Vänligen kontrollera loggarna.',
# Suppression log
'suppressionlog' => 'Undanhållandelogg',
'suppressionlogtext' => 'Nedan visas en lista över raderingar och blockeringar som berör innehåll dolt för administratörer.
-Se [[Special:IPBlockList|blockeringslistan]] för listan över gällande blockeringar.',
+Se [[Special:BlockList|IP-blockeringslistan]] för listan över gällande blockeringar.',
# History merging
'mergehistory' => 'Sammanfoga sidhistoriker',
@@ -1290,12 +1320,13 @@ Du kan istället göra sökningar med hjälp av Google.
Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
# Quickbar
-'qbsettings' => 'Snabbmeny',
-'qbsettings-none' => 'Ingen',
-'qbsettings-fixedleft' => 'Fast vänster',
-'qbsettings-fixedright' => 'Fast höger',
-'qbsettings-floatingleft' => 'Flytande vänster',
-'qbsettings-floatingright' => 'Flytande höger',
+'qbsettings' => 'Snabbmeny',
+'qbsettings-none' => 'Ingen',
+'qbsettings-fixedleft' => 'Fast vänster',
+'qbsettings-fixedright' => 'Fast höger',
+'qbsettings-floatingleft' => 'Flytande vänster',
+'qbsettings-floatingright' => 'Flytande höger',
+'qbsettings-directionality' => 'Fast, beroende på riktningen av ditt skript och språk',
# Preferences page
'preferences' => 'Inställningar',
@@ -1306,9 +1337,10 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
'changepassword' => 'Byt lösenord',
'prefs-skin' => 'Utseende',
'skin-preview' => 'förhandsvisning',
-'prefs-math' => 'Matematik',
'datedefault' => 'Ovidkommande',
+'prefs-beta' => 'Betafunktioner',
'prefs-datetime' => 'Datum och tid',
+'prefs-labs' => 'Testfunktioner',
'prefs-personal' => 'Mitt konto',
'prefs-rc' => 'Senaste ändringar',
'prefs-watchlist' => 'Bevakningslista',
@@ -1330,8 +1362,6 @@ Notera dock att deras indexering av {{SITENAME}} kan vara något föråldrad.',
'columns' => 'Kolumner:',
'searchresultshead' => 'Sökning',
'resultsperpage' => 'Träffar per sida:',
-'contextlines' => 'Antal rader per träff:',
-'contextchars' => 'Tecken per rad:',
'stub-threshold' => 'Gräns för <a href="#" class="stub">stubblänk</a>-formatering (byte):',
'stub-threshold-disabled' => 'Avaktiverat',
'recentchangesdays' => 'Antal dygn som skall visas i "senaste ändringarna":',
@@ -1344,7 +1374,7 @@ Här är ett slumpmässigt genererat värde som du kan använda: $1',
'savedprefs' => 'Dina inställningar har sparats',
'timezonelegend' => 'Tidszon:',
'localtime' => 'Lokal tid:',
-'timezoneuseserverdefault' => 'Använd serverns standardinställning',
+'timezoneuseserverdefault' => 'Använd wiki standard ($1)',
'timezoneuseoffset' => 'Annan (specificera skillnad)',
'timezoneoffset' => 'Skillnad¹:',
'servertime' => 'Serverns tid:',
@@ -1393,8 +1423,8 @@ Den får inte vara längre än $1 {{PLURAL:$1|tecken|tecken}}.',
'email' => 'E-post',
'prefs-help-realname' => 'Riktigt namn behöver inte anges.
Om du väljer att ange ditt riktiga namn, kommer det att användas för att tillskriva dig ditt arbete.',
-'prefs-help-email' => 'Att ange e-postadress är valfritt, men gör det möjligt att få ditt lösenord mejlat till dig om du glömmer det.
-Du kan också välja att låta andra användare kontakta dig genom din användar- eller användardiskussionssida utan att du behöver avslöja din identitet.',
+'prefs-help-email' => 'Att ange e-postadress är valfritt, men gör det möjligt att få ditt lösenord mejlat till dig om du glömmer det.',
+'prefs-help-email-others' => 'Du kan också välja att låta andra användare kontakta dig genom din användar-eller diskussionssida utan att avslöja din identitet.',
'prefs-help-email-required' => 'E-postadress måste anges.',
'prefs-info' => 'Grundläggande information',
'prefs-i18n' => 'Internationalisering',
@@ -1519,15 +1549,15 @@ Du kan också välja att låta andra användare kontakta dig genom din användar
'right-userrights' => 'Ändra alla användarrättigheter',
'right-userrights-interwiki' => 'Ändra rättigheter för användare på andra wikier',
'right-siteadmin' => 'Låsa och låsa upp databasen',
-'right-reset-passwords' => 'Återställa andra användares lösenord',
'right-override-export-depth' => 'Exportera sidor inklusive länkade sidor till ett djup på 5',
'right-sendemail' => 'Skicka e-post till andra användare',
# 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',
-'rightsnone' => '(inga)',
+'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',
+'rightsnone' => '(inga)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'läsa denna sida',
@@ -1649,13 +1679,13 @@ Se [[Special:NewFiles|galleriet över nya filer]] för en mer visuell översikt.
'minlength1' => 'Filens namn måste innehålla minst ett tecken.',
'illegalfilename' => 'Filnamnet "$1" innehåller tecken som inte är tillåtna i sidtitlar. Byt namn på filen och försök ladda upp igen.',
'badfilename' => 'Filens namn har blivit ändrat till "$1".',
-'filetype-mime-mismatch' => 'Filnamnsändelse matchar inte MIME-typ.',
+'filetype-mime-mismatch' => 'Filtillägget ".$1" matchar inte med den identifierade MIME-typen för filen ($2).',
'filetype-badmime' => 'Uppladdning av filer med MIME-typen "$1" är inte tillåten.',
'filetype-bad-ie-mime' => 'Kan inte ladda upp denna fil på grund av att Internet Explorer skulle upptäcka att den är "$1", vilket är en otillåten och möjligtvis farlig filtyp.',
'filetype-unwanted-type' => "'''\".\$1\"''' är en oönskad filtyp.
{{PLURAL:\$3|Föredragen filtyp|Föredragna filtyper}} är \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' är inte en tillåten filtyp.
-{{PLURAL:\$3|Tillåtna filtyper|Tillåten filtyp}} är \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' är inte {{PLURAL:$4|en tillåten filtyp|tillåtna filtyper}}.
+{{PLURAL:$3|Tillåtna filtyper|Tillåten filtyp}} är $2.',
'filetype-missing' => 'Filnamnet saknar ändelse (t ex ".jpg").',
'empty-file' => 'Filen du skickade var tom.',
'file-too-large' => 'Filen du skickade var för stor.',
@@ -1672,6 +1702,7 @@ Se [[Special:NewFiles|galleriet över nya filer]] för en mer visuell översikt.
denna fil är $2.',
'largefileserver' => 'Denna fil är större än vad servern ställts in att tillåta.',
'emptyfile' => 'Filen du laddade upp verkar vara tom; felet kan bero på ett stavfel i filnamnet. Kontrollera om du verkligen vill ladda upp denna fil.',
+'windows-nonascii-filename' => 'Denna wiki stödjer inte filnamn med specialtecken.',
'fileexists' => "Det finns redan en fil med detta namn.
Titta på '''<tt>[[:$1]]</tt>''', såvida du inte är säker på att du vill ändra den.
[[$1|thumb]]",
@@ -1707,6 +1738,8 @@ Om du ändå vill ladda upp din fil, gå då tillbaka och använd ett annat namn
'php-uploaddisabledtext' => 'PHP filuppladdningar är avaktiverade. Kolla inställningarna för file_uploads.',
'uploadscripted' => 'Denna fil innehåller HTML eller script som felaktigt kan komma att tolkas av webbläsare.',
'uploadvirus' => 'Filen innehåller virus! Detaljer: $1',
+'uploadjava' => 'Filen är en ZIP-fil som innehåller en Java .class fil.
+Uppladdning av Java filer tillåts inte, eftersom de kan orsaka att säkerhetsbegränsningar kan kringgås.',
'upload-source' => 'Källfil',
'sourcefilename' => 'Ursprungsfilens namn:',
'sourceurl' => 'Källans URL:',
@@ -1716,11 +1749,6 @@ Om du ändå vill ladda upp din fil, gå då tillbaka och använd ett annat namn
'upload-options' => 'Uppladdningsalternativ',
'watchthisupload' => 'Bevaka den här filen',
'filewasdeleted' => 'En fil med detta namn har tidigare laddats upp och därefter tagits bort. Du bör kontrollera $1 innan du fortsätter att ladda upp den.',
-'upload-wasdeleted' => "'''Varning: Du håller på att ladda upp en fil som tidigare raderats.'''
-
-Tänk över om det är lämpligt att fortsätta ladda upp denna fil.
-
-Här finns raderingsloggen för denna fil:",
'filename-bad-prefix' => "Namnet på filen du vill ladda upp börjar med '''\"\$1\"'''. Filnamnet kommer förmodligen direkt från en digitalkamera och beskriver inte filens innehåll. Välj ett annat filnamn som bättre beskriver filen.",
'filename-prefix-blacklist' => ' #<!-- ändra inte den här raden --> <pre>
# Syntaxen är följande:
@@ -1757,12 +1785,29 @@ Om problemet kvarstår, kontakta en [[Special:ListUsers/sysop|administratör]].'
'upload-unknown-size' => 'Okänd storlek',
'upload-http-error' => 'Ett HTTP-fel uppstod: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Ett fel inträffade när filen öppnades för en ZIP-kontroll.',
+'zip-wrong-format' => 'Den angivna filen var inte en ZIP-fil.',
+'zip-bad' => 'Filen är en skadad eller annars oläsbar ZIP fil.
+Den kan inte säkerhetskontrolleras ordentligt.',
+'zip-unsupported' => 'Filen är en ZIP-fil som använder ZIP funktioner som inte stöds av MediaWiki.
+Den kan inte säkerhetskontrolleras ordentligt.',
+
+# Special:UploadStash
+'uploadstash' => 'Ladda upp stash',
+'uploadstash-summary' => 'Denna sida ger tillgång till filer som är uppladdade (eller håller på att laddas upp) men som ännu inte är publicerade till wikin. Dessa filer är inte synliga för någon annan än den användare som laddade upp dem.',
+'uploadstash-clear' => 'Rensa stashade filer',
+'uploadstash-nofiles' => 'Du har inga stashade filer.',
+'uploadstash-badtoken' => 'Utförandet av den åtgärden misslyckades, kanske för att din redigeringsrättigheter löpt ut. Försök igen.',
+'uploadstash-errclear' => 'Rensning av filerna misslyckades.',
+'uploadstash-refresh' => 'Uppdatera listan över filer',
+
# img_auth script messages
'img-auth-accessdenied' => 'Ã…tkomst nekad',
-'img-auth-nopathinfo' => 'Saknad PATH_INFO.
+'img-auth-nopathinfo' => 'PATH_INFO saknas.
Din server är inte inställd för att ge denna information.
Den kan vara CGI-baserad och stöttar inte img_auth.
-Se http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+[//www.mediawiki.org/wiki/Manual:Image_Authorization Se bildbehörighet.]',
'img-auth-notindir' => 'Den önskade sökvägen finns inte i den inställda uppladdningskatalogen.',
'img-auth-badtitle' => 'Kan inte skapa en giltig titel från "$1"',
'img-auth-nologinnWL' => 'Du är inte inloggad och "$1" finns inte i vitlistan.',
@@ -1837,7 +1882,7 @@ Följande lista visar bara {{PLURAL:$1|den första sidan|de $1 första sidorna}}
Det finns en [[Special:WhatLinksHere/$2|fullständig lista]].',
'nolinkstoimage' => 'Inga sidor länkar till den här filen.',
'morelinkstoimage' => 'Visa [[Special:WhatLinksHere/$1|fler länkar]] till den här filen.',
-'redirectstofile' => 'Följande {{PLURAL:$1|fil är en omdirigering|filer är omdirigeringar}} till den här filen:',
+'linkstoimage-redirect' => '$1 (filomdirigering) $2',
'duplicatesoffile' => 'Följande {{PLURAL:$1|fil är en dubblett|filer är dubbletter}} till den här filen ([[Special:FileDuplicateSearch/$2|mer detaljer]]):',
'sharedupload' => 'Den här filen är från $1 och kan användas av andra projekt.',
'sharedupload-desc-there' => 'Den här filen är från $1 och kan användas av andra projekt.
@@ -1932,11 +1977,12 @@ Innan mallarna raderas, kontrollera att det inte finns andra länkar till dem.',
Länkarna bör troligtvis ändras så att de länkar till en artikel istället.<br />
En sida anses vara en förgreningssida om den inkluderar en mall som länkas till från [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Dubbla omdirigeringar',
-'doubleredirectstext' => 'Det här är en lista över sidor som dirigerar om till andra omdirigeringssidor. Varje rad innehåller länkar till den första och andra omdirigeringsidan, samt till målet för den andra omdirigeringen. Målet för den andra omdirigeringen är ofta den "riktiga" sidan, som den första omdirigeringen egentligen ska leda till.
+'doubleredirects' => 'Dubbla omdirigeringar',
+'doubleredirectstext' => 'Det här är en lista över sidor som dirigerar om till andra omdirigeringssidor. Varje rad innehåller länkar till den första och andra omdirigeringsidan, samt till målet för den andra omdirigeringen. Målet för den andra omdirigeringen är ofta den "riktiga" sidan, som den första omdirigeringen egentligen ska leda till.
<del>Stryk över</del> poster som har åtgärdats.',
-'double-redirect-fixed-move' => '[[$1]] har flyttats, och är nu en omdirigering till [[$2]]',
-'double-redirect-fixer' => 'Omdirigeringsrättaren',
+'double-redirect-fixed-move' => '[[$1]] har flyttats, och är nu en omdirigering till [[$2]]',
+'double-redirect-fixed-maintenance' => 'Fixar dubbel omdirigering från [[$1]] till [[$2]].',
+'double-redirect-fixer' => 'Omdirigeringsrättaren',
'brokenredirects' => 'Trasiga omdirigeringar',
'brokenredirectstext' => 'Följande omdirigerar länkar till ej existerande sidor:',
@@ -2013,6 +2059,7 @@ Lägg märke till att andra webbplatser kan länka till en fil med en direkt URL
'pager-newer-n' => '{{PLURAL:$1|1 nyare|$1 nyare}}',
'pager-older-n' => '{{PLURAL:$1|1 äldre|$1 äldre}}',
'suppress' => 'Censur',
+'querypage-disabled' => 'Den här specialsidan är inaktiverad av prestandaskäl.',
# Book sources
'booksources' => 'Bokkällor',
@@ -2022,8 +2069,8 @@ Lägg märke till att andra webbplatser kan länka till en fil med en direkt URL
'booksources-invalid-isbn' => 'Det angivna ISBN-numret verkar inte vara giltigt. Kontrollera källan för eventuella fel.',
# Special:Log
-'specialloguserlabel' => 'Användare:',
-'speciallogtitlelabel' => 'Titel:',
+'specialloguserlabel' => 'Utförare:',
+'speciallogtitlelabel' => 'Mål (titel eller användare):',
'log' => 'Loggar',
'all-logs-page' => 'Alla publika loggar',
'alllogstext' => 'Kombinerad visning av alla tillgängliga loggar för {{SITENAME}}.
@@ -2063,12 +2110,13 @@ Se även [[Special:WantedCategories|önskade kategorier]].',
'sp-deletedcontributions-contribs' => 'bidrag',
# Special:LinkSearch
-'linksearch' => 'Externa länkar',
+'linksearch' => 'Sökning i externa länkar',
'linksearch-pat' => 'Sökmönster:',
'linksearch-ns' => 'Namnrymd:',
'linksearch-ok' => 'Sök',
-'linksearch-text' => 'Jokertecken (wildcards) som t ex "*.wikipedia.org" kan användas.<br />
-Stödda protokoll: <tt>$1</tt>',
+'linksearch-text' => 'Jokertecken (wildcards) som t.ex. "*.wikipedia.org" kan användas.
+Det krävs åtminstone en toppnivå-domän, t.ex. "*.org".<br />
+Protokoll som stöds: <tt>$1</tt> (lägg inte till något av dessa i din sökning).',
'linksearch-line' => '$1 länkas från $2',
'linksearch-error' => 'Jokertecken kan bara användas i början av domännamnet.',
@@ -2129,6 +2177,10 @@ Den e-postadress du har angivit i [[Special:Preferences|dina användarinställni
'noemailtext' => 'Den här användaren har inte angivit en giltig e-postadress.',
'nowikiemailtitle' => 'Ingen e-post tillåten',
'nowikiemailtext' => 'Den här användaren har valt att inte motta e-post från andra användare.',
+'emailnotarget' => 'Icke-existerande eller ogiltigt användarnamn för mottagaren.',
+'emailtarget' => 'Ange mottagarens användarnamn',
+'emailusername' => 'Användarnamn:',
+'emailusernamesubmit' => 'Skicka',
'email-legend' => 'Skicka ett mail till en annan användare på {{SITENAME}}',
'emailfrom' => 'Från:',
'emailto' => 'Till:',
@@ -2153,10 +2205,10 @@ Den e-postadress du har angivit i [[Special:Preferences|dina användarinställni
'watchlistanontext' => 'Du måste $1 för att se eller redigera din bevakningslista.',
'watchnologin' => 'Inte inloggad',
'watchnologintext' => 'Du måste vara [[Special:UserLogin|inloggad]] för att kunna ändra din bevakningslista.',
-'addedwatch' => 'Tillagd på bevakningslistan',
+'addwatch' => 'Lägg till i bevakningslistan',
'addedwatchtext' => "Sidan \"[[:\$1]]\" har lagts till på din [[Special:Watchlist|bevakningslista]].
Framtida ändringar av den här sidan och dess diskussionssida kommer att listas där, och sidan kommer att markeras med '''fetstil''' i [[Special:RecentChanges|listan över de senaste ändringarna]] för att lättare kunna hittas.",
-'removedwatch' => 'Borttagen från bevakningslista',
+'removewatch' => 'Ta bort från bevakningslistan',
'removedwatchtext' => 'Sidan "[[:$1]]" har tagits bort från [[Special:Watchlist|din bevakningslista]].',
'watch' => 'Bevaka',
'watchthispage' => 'Bevaka denna sida',
@@ -2177,8 +2229,9 @@ Framtida ändringar av den här sidan och dess diskussionssida kommer att listas
'watchlist-options' => 'Alternativ för bevakningslistan',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Bevakar...',
-'unwatching' => 'Avbevakar...',
+'watching' => 'Bevakar...',
+'unwatching' => 'Avbevakar...',
+'watcherrortext' => 'Ett fel inträffade när du ändrade dina bevakningsinställningarna för " $1 ".',
'enotif_mailer' => '{{SITENAME}}s system för att få meddelanden om förändringar per e-post',
'enotif_reset' => 'Markera alla sidor som besökta',
@@ -2209,16 +2262,16 @@ Du kan också ta bort flaggan för meddelanden om ändringar på alla sidor i di
--
För att ändra inställningarna för dina uppdateringar via e-post, besök
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
För att ändra inställningarna i din bevakningslista, besök
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
För att radera sidan från din bevakningslista, besök
$UNWATCHURL
Feedback och ytterligare hjälp:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Ta bort sida',
@@ -2234,7 +2287,7 @@ Feedback och ytterligare hjälp:
Bekräfta att du förstår vad du håller på med och vilka konsekvenser detta leder till, och att du följer [[{{MediaWiki:Policy-url}}|riktlinjerna]].',
'actioncomplete' => 'Genomfört',
'actionfailed' => 'Handlingen misslyckades',
-'deletedtext' => '"<nowiki>$1</nowiki>" har tagits bort.
+'deletedtext' => '"$1" har tagits bort.
Se $2 för noteringar om de senaste raderingarna.',
'deletedarticle' => 'raderade "[[$1]]"',
'suppressedarticle' => 'undanhöll "[[$1]]"',
@@ -2288,7 +2341,7 @@ Se [[Special:ProtectedPages|listan över skyddade sidor]] för listan över akti
'protect_expiry_invalid' => 'Ogiltig varaktighetstid.',
'protect_expiry_old' => 'Den angivna varaktighetentiden har redan passerats.',
'protect-unchain-permissions' => 'LÃ¥s upp fler skyddsalternativ',
-'protect-text' => "Här kan du se och ändra skyddsnivån av sidan '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Här kan du se och ändra skyddsnivån av sidan '''$1'''.",
'protect-locked-blocked' => "Du kan inte ändra sidors skydd medan du är blockerad.
Här kan du se gällande skyddsinställninger för sidan '''$1''':",
'protect-locked-dblock' => "Skrivskydd kan inte ändras då databasen är låst.
@@ -2343,9 +2396,8 @@ Du kan ändra skyddet av den här sidan, men det påverkar inte det kaskaderande
'undeletepagetext' => 'Följande {{PLURAL:$1|sida har blivit raderad|$1 sidor har blivit raderade}} men finns fortfarande i arkivet och kan återställas.
Arkivet kan ibland rensas ut.',
'undelete-fieldset-title' => 'Återställ sidversioner',
-'undeleteextrahelp' => "För att återställa sidans hela historik, lämna alla rutor oifyllda och klicka '''''Återställ'''''.
-För att göra en selektiv återställning, kryssa i de rutor som hör till de versioner som ska återställas, och klicka '''''Återställ'''''.
-Om du klickar '''''Rensa''''' så töms kommentarfältet och alla kryssrutorna.",
+'undeleteextrahelp' => "För att återställa sidans hela historik, lämna alla rutor oifyllda och klicka på '''''{{int:undeletebtn}}'''''.
+För att göra en selektiv återställning, kryssa i de rutor som hör till de versioner som ska återställas, och klicka på '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '$1 {{PLURAL:$1|version|versioner}} arkiverade',
'undeletehistory' => 'Om du återställer sidan kommer alla tidigare versioner att återfinnas i versionshistoriken.
Om en ny sida med samma namn har skapats sedan sidan raderades, kommer den återskapade historiken automatiskt att återfinnas i den äldre historiken.',
@@ -2386,9 +2438,12 @@ $1',
'undelete-show-file-submit' => 'Ja',
# Namespace form on various pages
-'namespace' => 'Namnrymd:',
-'invert' => 'Uteslut vald namnrymd',
-'blanknamespace' => '(Huvudnamnrymden)',
+'namespace' => 'Namnrymd:',
+'invert' => 'Uteslut vald namnrymd',
+'tooltip-invert' => 'Markera denna ruta för att dölja ändringar på sidor inom det valda namnrymden (och tillhörande namnrymden om det är markerat)',
+'namespace_association' => 'Associerad namnrymd',
+'tooltip-namespace_association' => 'Markera denna ruta för att även inkludera diskussions- eller ämnesnamnrymden som är associerad med den valda namnrymden',
+'blanknamespace' => '(Huvudnamnrymden)',
# Contributions
'contributions' => 'Användarbidrag',
@@ -2438,13 +2493,15 @@ Den senaste posten i blockeringsloggen visas nedan som referens:',
'whatlinkshere-filters' => 'Filter',
# Block/unblock
+'autoblockid' => 'Autoblockera #$1',
+'block' => 'Blockera användaren',
+'unblock' => 'Avblockera användaren',
'blockip' => 'Blockera användare',
'blockip-title' => 'Blockera användare',
'blockip-legend' => 'Blockera användare',
'blockiptext' => 'Använd formuläret nedan för att blockera möjligheten att redigera sidor från en specifik IP-adress eller ett användarnamn.
Detta bör endast göras för att förhindra vandalisering, och i överensstämmelse med gällande [[{{MediaWiki:Policy-url}}|policy]].
Ange orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).',
-'ipaddress' => 'IP-adress',
'ipadressorusername' => 'IP-adress eller användarnamn:',
'ipbexpiry' => 'Varaktighet:',
'ipbreason' => 'Anledning:',
@@ -2457,7 +2514,7 @@ Ange orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).',
** Hotfullt beteende/trakasserier
** Missbruk av flera användarkonton
** Oacceptabelt användarnamn',
-'ipbanononly' => 'Blockera bara oinloggade användare',
+'ipb-hardblock' => 'Förhindra inloggade användare från att redigera från den här IP-adressen',
'ipbcreateaccount' => 'Förhindra registrering av användarkonton',
'ipbemailban' => 'Hindra användaren från att skicka e-post',
'ipbenableautoblock' => 'Blockera automatiskt den IP-adress som användaren använde senast, samt alla adresser som användaren försöker redigera ifrån',
@@ -2468,12 +2525,15 @@ Ange orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).',
'ipbotherreason' => 'Annan/ytterligare anledning:',
'ipbhidename' => 'Dölj användarnamnet från redigeringar och listor',
'ipbwatchuser' => 'Bevaka användarens användarsida och diskussionssida',
-'ipballowusertalk' => 'Låt användaren redigera sin egen diskussionssida under blockeringen',
+'ipb-disableusertalk' => 'Hindra denne användare från att redigera sina egna diskussionssida under blockeringen',
'ipb-change-block' => 'Återblockera användaren med de här inställningarna',
+'ipb-confirm' => 'Bekräfta blockering',
'badipaddress' => 'Du har inte skrivit IP-adressen korrekt.',
'blockipsuccesssub' => 'Blockeringen är utförd',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] har blockerats.
<br />För att se alla aktuella blockeringar, gå till [[Special:IPBlockList|listan över blockeringar]].',
+'ipb-blockingself' => 'Du håller på att blockera dig själv! Är du säker på att du vill göra det?',
+'ipb-confirmhideuser' => 'Du är på väg att blockera en användare med "göm användare" aktiverat. Detta kommer upphäva användarens namn i alla listor och loggar. Är du säker på att du vill göra det?',
'ipb-edit-dropdown' => 'Redigera blockeringsanledningar',
'ipb-unblock-addr' => 'Ta bort blockering av $1',
'ipb-unblock' => 'Ta bort blockering av en användare eller IP-adress',
@@ -2483,17 +2543,23 @@ Ange orsak nedan (exempelvis genom att nämna sidor som blivit vandaliserade).',
'unblockiptext' => 'Använd formuläret nedan för att ta bort blockeringen av en IP-adress.',
'ipusubmit' => 'Upphäv denna blockering',
'unblocked' => 'Blockeringen av [[User:$1|$1]] har hävts',
+'unblocked-range' => '$1 har avblockerats',
'unblocked-id' => 'Blockeringen $1 har hävts',
+'blocklist' => 'Blockerade användare',
'ipblocklist' => 'Blockerade användare',
'ipblocklist-legend' => 'Sök efter en blockerad användare',
-'ipblocklist-username' => 'Användarnamn eller IP-adress',
-'ipblocklist-sh-userblocks' => '$1 blockeringar av konton',
-'ipblocklist-sh-tempblocks' => '$1 tillfälliga blockeringar',
-'ipblocklist-sh-addressblocks' => '$1 blockeringar av enskilda IP-adresser',
+'blocklist-userblocks' => 'Göm kontoblockeringar',
+'blocklist-tempblocks' => 'Dölj tillfälliga blockeringar',
+'blocklist-addressblocks' => 'Göm enskilda IP-blockeringar',
+'blocklist-timestamp' => 'Tidsstämpel',
+'blocklist-target' => 'MÃ¥l',
+'blocklist-expiry' => 'Upphör',
+'blocklist-by' => 'Blockerande administratör',
+'blocklist-params' => 'Blockeringsparametrar',
+'blocklist-reason' => 'Orsak',
'ipblocklist-submit' => 'Sök',
'ipblocklist-localblock' => 'Lokalblockering',
'ipblocklist-otherblocks' => 'Övriga {{PLURAL:$1|blockering|blockeringar}}',
-'blocklistline' => '$1, $2 blockerade $3 ($4)',
'infiniteblock' => 'på obestämd tid',
'expiringblock' => 'upphör den $1 kl $2',
'anononlyblock' => 'endast oinloggade',
@@ -2518,7 +2584,7 @@ Undanhållandeloggen visas nedan för referens:',
'reblock-logentry' => 'ändrade blockeringsinställningar för [[$1]] med en varaktighet på $2 $3',
'blocklogtext' => 'Detta är en logg över blockeringar och avblockeringar.
Automatiskt blockerade IP-adresser listas ej.
-I [[Special:IPBlockList|blockeringslistan]] listas alla IP-adresser och användare som är blockerade för närvarande.',
+I [[Special:BlockList|blockeringslistan]] listas alla IP-adresser och användare som är blockerade för närvarande.',
'unblocklogentry' => 'tog bort blockering av "$1"',
'block-log-flags-anononly' => 'bara oinloggade',
'block-log-flags-nocreate' => 'hindrar kontoregistrering',
@@ -2532,9 +2598,9 @@ I [[Special:IPBlockList|blockeringslistan]] listas alla IP-adresser och använda
'ipb_expiry_temp' => 'För att dölja användarnamnet måste blockeringen vara permanent.',
'ipb_hide_invalid' => 'Kan inte undanhålla detta konto; det kan ha för många redigeringar.',
'ipb_already_blocked' => '"$1" är redan blockerad',
-'ipb-needreblock' => '== Redan blockerad ==
-$1 är redan blockerad. Vill du ändra inställningarna?',
+'ipb-needreblock' => '$1 är redan blockerad. Vill du ändra inställningarna?',
'ipb-otherblocks-header' => 'Andra {{PLURAL:$1|blockering|blockeringar}}',
+'unblock-hideuser' => 'Du kan inte ta bort blockeringen här användaren, eftersom dens användarnamn har dolts.',
'ipb_cant_unblock' => 'Fel: Hittade inte blockering $1. Det är möjligt att den redan har upphävts.',
'ipb_blocked_as_range' => 'Fel: IP-adressen $1 är inte direkt blockerad, och kan därför inte avblockeras. Adressen är blockerad som en del av IP-intervallet $2, som kan avblockeras.',
'ip_range_invalid' => 'Ogiltigt IP-intervall.',
@@ -2570,6 +2636,7 @@ Bekräfta att du verkligen vill göra detta, och att du kommer att låsa upp dat
'unlockdbsuccesstext' => 'Databasen är upplåst.',
'lockfilenotwritable' => 'Det går inte att skriva till databasens låsfil. För att låsa eller låsa upp databasen, så måste webbservern kunna skriva till den filen.',
'databasenotlocked' => 'Databasen är inte låst.',
+'lockedbyandtime' => '(av $1 den $2 kl. $3)',
# Move page
'move-page' => 'Flytta $1',
@@ -2693,7 +2760,7 @@ I det senare fallet kan du även använda en länk, exempel [[{{#Special:Export}
'allmessagesdefault' => 'Standardtext',
'allmessagescurrent' => 'Nuvarande text',
'allmessagestext' => 'Detta är en lista över alla meddelanden i namnrymden MediaWiki.
-Besök [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] eller [http://translatewiki.net translatewiki.net] om du vill bidra till översättningen av MediaWiki.',
+Besök [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] eller [//translatewiki.net translatewiki.net] om du vill bidra till översättningen av MediaWiki.',
'allmessagesnotsupportedDB' => "Den här sidan kan inte användas eftersom '''\$wgUseDatabaseMessages''' är avstängd.",
'allmessages-filter-legend' => 'Filtrera',
'allmessages-filter' => 'Filtrera efter anpassningsgrad:',
@@ -2858,9 +2925,7 @@ Ger möjlighet att skriva en motivering i redigeringssammanfattningen',
'vector.js' => '/* JavaScript här kommer att laddas för dem som använder skalet Vector */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata avstängt på den här servern.',
-'nocreativecommons' => 'Creative Commons RDF metadata avstängd på denna server.',
-'notacceptable' => 'Den här wiki-servern kan inte erbjuda data i ett format som din klient kan läsa.',
+'notacceptable' => 'Den här wiki-servern kan inte erbjuda data i ett format som din klient kan läsa.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anonym användare|Anonyma användare}} på {{SITENAME}}',
@@ -2884,12 +2949,17 @@ Detta orsakades troligen av en länk till en svartlistad webbplats.',
'spam_blanking' => 'Alla versioner innehöll en länk till $1, blankar',
# Info page
-'infosubtitle' => 'Information om sida',
-'numedits' => 'Antal redigeringar (sida): $1',
-'numtalkedits' => 'Antal redigeringar (diskussionssida): $1',
-'numwatchers' => 'Antal användare som bevakar sidan: $1',
-'numauthors' => 'Antal olika bidragsgivare (sida): $1',
-'numtalkauthors' => 'Antal olika bidragsgivare (diskussionssida): $1',
+'pageinfo-title' => 'Information om "$1"',
+'pageinfo-header-edits' => 'Redigeringar',
+'pageinfo-header-watchlist' => 'Bevakningslista',
+'pageinfo-header-views' => 'Visningar',
+'pageinfo-subjectpage' => 'Sida',
+'pageinfo-talkpage' => 'Diskussionssida',
+'pageinfo-watchers' => 'Antal användare som bevakar sidan',
+'pageinfo-edits' => 'Antal redigeringar',
+'pageinfo-authors' => 'Antal olika författare',
+'pageinfo-views' => 'Antal visningar',
+'pageinfo-viewsperedit' => 'Sidvisningar per redigering',
# Skin names
'skinname-standard' => 'Standard',
@@ -2902,25 +2972,6 @@ Detta orsakades troligen av en länk till en svartlistad webbplats.',
'skinname-modern' => 'Modern',
'skinname-vector' => 'Vector',
-# Math options
-'mw_math_png' => 'Rendera alltid PNG',
-'mw_math_simple' => 'HTML om mycket enkel, annars PNG',
-'mw_math_html' => 'HTML om möjligt, annars PNG',
-'mw_math_source' => 'Låt vara TeX (för textbaserade webbläsare)',
-'mw_math_modern' => 'Rekommenderat för modern webbläsare',
-'mw_math_mathml' => 'MathML om möjligt (experimentellt)',
-
-# Math errors
-'math_failure' => 'Misslyckades med att tolka formel.',
-'math_unknown_error' => 'okänt fel',
-'math_unknown_function' => 'okänd funktion',
-'math_lexing_error' => 'regelfel',
-'math_syntax_error' => 'syntaxfel',
-'math_image_error' => 'Konvertering till PNG-format misslyckades; kontrollera om latex och dvipng (eller dvips + gs + convert) är korrekt installerade',
-'math_bad_tmpdir' => 'Kan inte skriva till eller skapa temporär mapp för matematikresultat',
-'math_bad_output' => 'Kan inte skriva till eller skapa mapp för matematikresultat',
-'math_notexvc' => 'Applicationen texvc saknas; läs math/README för konfigureringsanvisningar.',
-
# Patrolling
'markaspatrolleddiff' => 'Märk som patrullerad',
'markaspatrolledtext' => 'Märk den här sidan som patrullerad',
@@ -2956,22 +3007,25 @@ $1',
'nextdiff' => 'Nyare redigering →',
# Media information
-'mediawarning' => "'''Varning''': Den här filen kan innehålla elak kod.
+'mediawarning' => "'''Varning''': Den här filen kan innehålla elak kod.
Om du kör den kan din dator skadas.",
-'imagemaxsize' => "Begränsa bilders storlek:<br />''(för filbeskrivningssidor)''",
-'thumbsize' => 'Storlek på minibild:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|sida|sidor}}',
-'file-info' => 'filstorlek: $1, MIME-typ: $2',
-'file-info-size' => '$1 × $2 pixlar, filstorlek: $3, MIME-typ: $4',
-'file-nohires' => '<small>Det finns ingen version med högre upplösning.</small>',
-'svg-long-desc' => 'SVG-fil, grundstorlek: $1 × $2 pixlar, filstorlek: $3',
-'show-big-image' => 'Högupplöst version',
-'show-big-image-thumb' => '<small>Storlek på förhandsvisningen: $1 × $2 pixlar</small>',
-'file-info-gif-looped' => 'upprepad',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|ram|ramar}}',
-'file-info-png-looped' => 'upprepad',
-'file-info-png-repeat' => 'spelad $1 {{PLURAL:$1|gång|gånger}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|bild|bilder}}',
+'imagemaxsize' => "Begränsa bilders storlek:<br />''(för filbeskrivningssidor)''",
+'thumbsize' => 'Storlek på minibild:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|sida|sidor}}',
+'file-info' => 'filstorlek: $1, MIME-typ: $2',
+'file-info-size' => '$1 × $2 pixlar, filstorlek: $3, MIME-typ: $4',
+'file-info-size-pages' => '$1 × $2 pixlar, filstorlek: $3, MIME-typ: $4, $5 {{PLURAL:$5|sida|sidor}}',
+'file-nohires' => '<small>Det finns ingen version med högre upplösning.</small>',
+'svg-long-desc' => 'SVG-fil, grundstorlek: $1 × $2 pixlar, filstorlek: $3',
+'show-big-image' => 'Högupplöst version',
+'show-big-image-preview' => '<small>Storlek på förhandsvisningen: $1.</small>',
+'show-big-image-other' => '<small>Andra upplösningar: $1.</small>',
+'show-big-image-size' => '$1 × $2 pixlar',
+'file-info-gif-looped' => 'upprepad',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|ram|ramar}}',
+'file-info-png-looped' => 'upprepad',
+'file-info-png-repeat' => 'spelad $1 {{PLURAL:$1|gång|gånger}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|bild|bilder}}',
# Special:NewFiles
'newimages' => 'Galleri över nya filer',
@@ -3000,15 +3054,21 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
'metadata-help' => 'Den här filen innehåller extrainformation som troligen lades till av en digitalkamera eller skanner när filen skapades. Om filen har modifierats kan det hända att vissa detaljer inte överensstämmer med den modifierade filen.',
'metadata-expand' => 'Visa utökade detaljer',
'metadata-collapse' => 'Dölj utökade detaljer',
-'metadata-fields' => 'EXIF-fält som listas i det här meddelandet visas på bildsidan när metadatatabellen är minimerad.
-Övriga fält är gömda som standard, men visas när tabellen expanderas.
+'metadata-fields' => 'Bildens metadata-fält som är listad i detta meddelande kommer att finnas på bildsidan när metadata-tabellen är hopfälld.
+Andra kommer att gömmas som standard
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Bredd',
@@ -3023,13 +3083,11 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
'exif-ycbcrpositioning' => 'Positionering av Y och C',
'exif-xresolution' => 'Upplösning i horisontalplan',
'exif-yresolution' => 'Upplösning i vertikalplan',
-'exif-resolutionunit' => 'Enhet för upplösning av X och Y',
'exif-stripoffsets' => 'Offset till bilddata',
'exif-rowsperstrip' => 'Antal rader per strip',
'exif-stripbytecounts' => 'Byte per komprimerad strip',
'exif-jpeginterchangeformat' => 'Offset till JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Antal bytes JPEG-data',
-'exif-transferfunction' => 'Överföringsfunktion',
'exif-whitepoint' => 'Vitpunktens renhet',
'exif-primarychromaticities' => 'Primärfärgernas renhet',
'exif-ycbcrcoefficients' => 'Koefficienter för färgrymdstransformationsmatris',
@@ -3048,7 +3106,6 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
'exif-compressedbitsperpixel' => 'Bildkomprimeringsläge',
'exif-pixelydimension' => 'Bildbredd',
'exif-pixelxdimension' => 'Bildhöjd',
-'exif-makernote' => 'Tillverkarkommentarer',
'exif-usercomment' => 'Kommentarer',
'exif-relatedsoundfile' => 'Relaterad ljudfil',
'exif-datetimeoriginal' => 'Exponeringstidpunkt',
@@ -3062,7 +3119,6 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
'exif-exposureprogram' => 'Exponeringsprogram',
'exif-spectralsensitivity' => 'Spektral känslighet',
'exif-isospeedratings' => 'Filmhastighet (ISO)',
-'exif-oecf' => 'Optoelektronisk konversionsfaktor',
'exif-shutterspeedvalue' => 'APEX slutarhastighet',
'exif-aperturevalue' => 'APEX bländare',
'exif-brightnessvalue' => 'APEX ljusstyrka',
@@ -3075,7 +3131,6 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
'exif-focallength' => 'Linsens brännvidd',
'exif-subjectarea' => 'Motivområde',
'exif-flashenergy' => 'Blixteffekt',
-'exif-spatialfrequencyresponse' => 'Rumslig frekvensrespons',
'exif-focalplanexresolution' => 'Upplösning i fokalplan x',
'exif-focalplaneyresolution' => 'Upplösning i fokalplan y',
'exif-focalplaneresolutionunit' => 'Enhet för upplösning i fokalplan',
@@ -3084,7 +3139,6 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
'exif-sensingmethod' => 'Avkänningsmetod',
'exif-filesource' => 'Filkälla',
'exif-scenetype' => 'Scentyp',
-'exif-cfapattern' => 'CFA-mönster',
'exif-customrendered' => 'Anpassad bildbehandling',
'exif-exposuremode' => 'Exponeringsläge',
'exif-whitebalance' => 'Vitbalans',
@@ -3129,10 +3183,79 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
'exif-gpsareainformation' => 'GPS-områdets namn',
'exif-gpsdatestamp' => 'GPS-datum',
'exif-gpsdifferential' => 'Differentiell GPS-korrektion',
+'exif-jpegfilecomment' => 'JPEG-filkommentar',
+'exif-keywords' => 'Nyckelord',
+'exif-worldregioncreated' => 'Världsregionen som bilden togs i',
+'exif-countrycreated' => 'Landet som bilden togs i',
+'exif-countrycodecreated' => 'Landskoden som bilden togs i',
+'exif-provinceorstatecreated' => 'Landskapet eller delstaten som bilden togs i',
+'exif-citycreated' => 'Staden som bilden togs i',
+'exif-sublocationcreated' => 'Bydelen i staden som bilden togs i',
+'exif-worldregiondest' => 'Världsregion visas',
+'exif-countrydest' => 'Land visas',
+'exif-countrycodedest' => 'Landskod visas',
+'exif-provinceorstatedest' => 'Landskap eller stat visas',
+'exif-citydest' => 'Stad visas',
+'exif-sublocationdest' => 'Bydelen i staden visas',
'exif-objectname' => 'Kort titel',
+'exif-specialinstructions' => 'Specialinstruktioner',
+'exif-headline' => 'Rubrik',
+'exif-credit' => 'Erkännande/leverantör',
+'exif-source' => 'Källa',
+'exif-editstatus' => 'Bildens redaktionella status',
+'exif-urgency' => 'Brådskande',
+'exif-fixtureidentifier' => 'Fixturnamn',
+'exif-locationdest' => 'Plats avbildad',
+'exif-locationdestcode' => 'Avbildad platskod',
+'exif-objectcycle' => 'Tid på dagen median är avsedd för',
+'exif-contact' => 'Kontaktinformation',
+'exif-writer' => 'Författare',
+'exif-languagecode' => 'Språk',
+'exif-iimversion' => 'IIM-version',
+'exif-iimcategory' => 'Kategori',
+'exif-iimsupplementalcategory' => 'Tilläggskategorier',
+'exif-datetimeexpires' => 'Använd inte efter',
+'exif-datetimereleased' => 'Släpptes den',
+'exif-originaltransmissionref' => 'Ursprunglig positionskod för transmission',
+'exif-identifier' => 'Identifierare',
+'exif-lens' => 'Objektiv',
+'exif-serialnumber' => 'Kamerans serienummer',
+'exif-cameraownername' => 'Kamerans ägare',
+'exif-label' => 'Märke',
+'exif-datetimemetadata' => 'Datum metadata senast ändrades',
+'exif-nickname' => 'Bildens informella namn',
+'exif-rating' => 'Betyg (av 5)',
+'exif-rightscertificate' => 'Certifikat om rättigheter',
+'exif-copyrighted' => 'Upphovsrättsstatus',
+'exif-copyrightowner' => 'Upphovsrättsinnehavare',
+'exif-usageterms' => 'Användningsvillkor',
+'exif-webstatement' => 'Online meddelande om upphovsrätt',
+'exif-originaldocumentid' => 'Unikt ID för originaldokumentet',
+'exif-licenseurl' => 'URL för upphovsrättslicens',
+'exif-morepermissionsurl' => 'Alternativ licensinformation',
+'exif-attributionurl' => 'När du återanvänder detta arbete, länka till',
+'exif-preferredattributionname' => 'Vid återanvändning av detta arbete, vänligen attribuera',
+'exif-pngfilecomment' => 'PNG-filkommentar',
+'exif-disclaimer' => 'Ansvarsfriskrivning',
+'exif-contentwarning' => 'Innehållsvarning',
+'exif-giffilecomment' => 'GIF-filkommentar',
+'exif-intellectualgenre' => 'Typ av objekt',
+'exif-subjectnewscode' => 'Ämneskod',
+'exif-scenecode' => 'IPTC-scenkod',
+'exif-event' => 'Avbildad händelse',
+'exif-organisationinimage' => 'Avbildad organisation',
+'exif-personinimage' => 'Avbildad person',
+'exif-originalimageheight' => 'Bildens höjd innan den beskärdes',
+'exif-originalimagewidth' => 'Bildens bredd innan den beskärdes',
# EXIF attributes
'exif-compression-1' => 'Inte komprimerad',
+'exif-compression-2' => 'CCITT Grupp 3 1-dimensionell modifierad Huffman-skurlängdskodning',
+'exif-compression-3' => 'CCITT Grupp 3 fax-kodning',
+'exif-compression-4' => 'CCITT Grupp 4 fax-kodning',
+
+'exif-copyrighted-true' => 'Upphovsrättsskyddat',
+'exif-copyrighted-false' => 'Allmän egendom',
'exif-unknowndate' => 'Okänt datum',
@@ -3148,6 +3271,8 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
'exif-planarconfiguration-1' => 'chunkformat',
'exif-planarconfiguration-2' => 'planärformat',
+'exif-colorspace-65535' => 'Icke-kalibrerad',
+
'exif-componentsconfiguration-0' => 'saknas',
'exif-exposureprogram-0' => 'Inte definierad',
@@ -3261,6 +3386,10 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
'exif-gpslongitude-e' => 'Östlig longitud',
'exif-gpslongitude-w' => 'Västlig longitud',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|meter|meter}} över havet',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|meter|meter}} under havet',
+
'exif-gpsstatus-a' => 'Mätning pågår',
'exif-gpsstatus-v' => 'Mätningsinteroperabilitet',
@@ -3272,21 +3401,73 @@ Den första länken på en rad måste vara en länk till en otillåten fil.
'exif-gpsspeed-m' => 'Miles i timmen',
'exif-gpsspeed-n' => 'Knop',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometer',
+'exif-gpsdestdistance-m' => 'Mil',
+'exif-gpsdestdistance-n' => 'Nautiska mil',
+
+'exif-gpsdop-excellent' => 'Utmärkt ($1)',
+'exif-gpsdop-good' => 'Bra ($1)',
+'exif-gpsdop-moderate' => 'MÃ¥ttlig ($1)',
+'exif-gpsdop-fair' => 'Medelmåttig ($1)',
+'exif-gpsdop-poor' => 'DÃ¥lig ($1)',
+
+'exif-objectcycle-a' => 'Endast morgon',
+'exif-objectcycle-p' => 'Endast kväll',
+'exif-objectcycle-b' => 'Både morgon och kväll',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Sann bäring',
'exif-gpsdirection-m' => 'Magnetisk bäring',
+'exif-ycbcrpositioning-1' => 'Centrerad',
+'exif-ycbcrpositioning-2' => 'Sammanfallande',
+
+'exif-dc-contributor' => 'Bidragsgivare',
+'exif-dc-coverage' => 'Rumslig och tidsmässig omfattning av media',
+'exif-dc-date' => 'Datum',
+'exif-dc-publisher' => 'Utgivare',
+'exif-dc-relation' => 'Relaterad media',
+'exif-dc-rights' => 'Rättigheter',
+'exif-dc-source' => 'Källmedia',
+'exif-dc-type' => 'Medietyp',
+
+'exif-rating-rejected' => 'Avvisad',
+
+'exif-isospeedratings-overflow' => 'Större än 65535',
+
+'exif-iimcategory-ace' => 'Konst, kultur och underhållning',
+'exif-iimcategory-clj' => 'Brott och juridik',
+'exif-iimcategory-dis' => 'Katastrofer och olyckor',
+'exif-iimcategory-fin' => 'Ekonomi och näringsliv',
+'exif-iimcategory-edu' => 'Utbildning',
+'exif-iimcategory-evn' => 'Miljö',
+'exif-iimcategory-hth' => 'Hälsa',
+'exif-iimcategory-hum' => 'Människointresse',
+'exif-iimcategory-lab' => 'Arbetskraft',
+'exif-iimcategory-lif' => 'Livsstil och fritid',
+'exif-iimcategory-pol' => 'Politik',
+'exif-iimcategory-rel' => 'Religion och tro',
+'exif-iimcategory-sci' => 'Vetenskap och teknik',
+'exif-iimcategory-soi' => 'Sociala frågor',
+'exif-iimcategory-spo' => 'Sport',
+'exif-iimcategory-war' => 'Krig, konflikter och oroligheter',
+'exif-iimcategory-wea' => 'Väder',
+
+'exif-urgency-normal' => 'Normal ($1)',
+'exif-urgency-low' => 'LÃ¥g ($1)',
+'exif-urgency-high' => 'Hög ($1)',
+'exif-urgency-other' => 'Användardefinierad prioritet ($1)',
+
# External editor support
'edit-externally' => 'Redigera denna fil med hjälp av extern programvara',
-'edit-externally-help' => '(Se [http://www.mediawiki.org/wiki/Manual:External_editors installationsinstruktionerna] för mer information)',
+'edit-externally-help' => '(Se [//www.mediawiki.org/wiki/Manual:External_editors installationsinstruktionerna] för mer information)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'alla',
-'imagelistall' => 'alla',
-'watchlistall2' => 'alla',
-'namespacesall' => 'alla',
-'monthsall' => 'alla',
-'limitall' => 'alla',
+'watchlistall2' => 'alla',
+'namespacesall' => 'alla',
+'monthsall' => 'alla',
+'limitall' => 'alla',
# E-mail address confirmation
'confirmemail' => 'Bekräfta e-postadress',
@@ -3362,17 +3543,24 @@ $1',
'trackbackdeleteok' => 'Trackback har tagits bort.',
# Delete conflict
-'deletedwhileediting' => "'''Varning''': Denna sida raderades efter att du började redigera!",
-'confirmrecreate' => "Användaren [[User:$1|$1]] ([[User talk:$1|diskussion]]) raderade den här sidan efter att du började redigera den med motiveringen:
+'deletedwhileediting' => "'''Varning''': Denna sida raderades efter att du började redigera!",
+'confirmrecreate' => "Användaren [[User:$1|$1]] ([[User talk:$1|diskussion]]) raderade den här sidan efter att du började redigera den med motiveringen:
: ''$2''
Bekräfta att du verkligen vill återskapa sidan.",
-'recreate' => 'Ã…terskapa',
+'confirmrecreate-noreason' => 'Användare [[User:$1|$1]] ([[User talk:$1|diskussion]]) raderade den här sidan efter att du började redigera. Bekräfta att du verkligen vill återskapa sidan.',
+'recreate' => 'Ã…terskapa',
# action=purge
'confirm_purge_button' => 'OK',
'confirm-purge-top' => 'Rensa denna sidas cache?',
'confirm-purge-bottom' => 'Rensning av en sida tömmer cachen och tvingar fram den senaste versionen.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-watch-top' => 'Lägg till denna sida till din bevakningslista?',
+'confirm-unwatch-button' => 'OK',
+'confirm-unwatch-top' => 'Ta bort denna sida från din bevakningslista?',
+
# Multipage image navigation
'imgmultipageprev' => '↠föregående sida',
'imgmultipagenext' => 'nästa sida →',
@@ -3422,7 +3610,7 @@ Pröva vanlig förhandsgranskning istället.',
'watchlistedit-normal-legend' => 'Ta bort sidor från bevakningslistan',
'watchlistedit-normal-explain' => 'Titlar på din bevakningslista visas nedan.
För att ta bort en titel, markera rutan bredvid den och klicka på "{{int:Watchlistedit-normal-submit}}".
-Du kan också [[Special:Watchlist/raw|redigera listan i råformat]].',
+Du kan också [[Special:EditWatchlist/raw|redigera listan i råformat]].',
'watchlistedit-normal-submit' => 'Ta bort sidor',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 sida|$1 sidor}} togs bort från din bevakningslista:',
'watchlistedit-raw-title' => 'Redigera bevakningslistan i råformat',
@@ -3430,7 +3618,7 @@ Du kan också [[Special:Watchlist/raw|redigera listan i råformat]].',
'watchlistedit-raw-explain' => 'Titlar på din bevakningslista visas nedan, och kan redigeras genom att lägga till och ta bort från listan;
en titel per rad.
När du är klar klickar du på "{{int:Watchlistedit-raw-submit}}".
-Du kan också [[Special:Watchlist/edit|använda standardeditorn]].',
+Du kan också [[Special:EditWatchlist|använda standardeditorn]].',
'watchlistedit-raw-titles' => 'Sidor:',
'watchlistedit-raw-submit' => 'Uppdatera bevakningslistan',
'watchlistedit-raw-done' => 'Din bevakningslista har uppdaterats.',
@@ -3447,33 +3635,33 @@ Du kan också [[Special:Watchlist/edit|använda standardeditorn]].',
'duplicate-defaultsort' => 'Varning: Standardsorteringsnyckeln "$2" tar över från den tidigare standardsorteringsnyckeln "$1".',
# Special:Version
-'version' => 'Version',
-'version-extensions' => 'Installerade programtillägg',
-'version-specialpages' => 'Specialsidor',
-'version-parserhooks' => 'Parsertillägg',
-'version-variables' => 'Variabler',
-'version-skins' => 'Utseenden',
-'version-other' => 'Annat',
-'version-mediahandlers' => 'Mediahanterare',
-'version-hooks' => 'Hakar',
-'version-extension-functions' => 'Tilläggsfunktioner',
-'version-parser-extensiontags' => 'Tilläggstaggar',
-'version-parser-function-hooks' => 'Parserfunktioner',
-'version-skin-extension-functions' => 'Skaltilläggsfunktioner',
-'version-hook-name' => 'Namn',
-'version-hook-subscribedby' => 'Används av',
-'version-version' => '(Version $1)',
-'version-license' => 'Licens',
-'version-poweredby-credits' => "Den här wikin drivs av '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'andra',
-'version-license-info' => 'MediaWiki är fri programvara; du kan distribuera det och/eller modifiera det under villkoren i GNU General Public License, publicerad av Free Software Foundation; antingen version 2 av licensen, eller (om du önskar) någon senare version.
+'version' => 'Version',
+'version-extensions' => 'Installerade programtillägg',
+'version-specialpages' => 'Specialsidor',
+'version-parserhooks' => 'Parsertillägg',
+'version-variables' => 'Variabler',
+'version-antispam' => 'Förhindring av skräppost',
+'version-skins' => 'Utseenden',
+'version-other' => 'Annat',
+'version-mediahandlers' => 'Mediahanterare',
+'version-hooks' => 'Hakar',
+'version-extension-functions' => 'Tilläggsfunktioner',
+'version-parser-extensiontags' => 'Tilläggstaggar',
+'version-parser-function-hooks' => 'Parserfunktioner',
+'version-hook-name' => 'Namn',
+'version-hook-subscribedby' => 'Används av',
+'version-version' => '(Version $1)',
+'version-license' => 'Licens',
+'version-poweredby-credits' => "Den här wikin drivs av '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'andra',
+'version-license-info' => 'MediaWiki är fri programvara; du kan distribuera det och/eller modifiera det under villkoren i GNU General Public License, publicerad av Free Software Foundation; antingen version 2 av licensen, eller (om du önskar) någon senare version.
MediaWiki distribueras i hopp om att det ska vara användbart, men UTAN NÅGON GARANTI, även utan underförstådd garanti om SÄLJBARHET eller LÄMPLIGHET FÖR ETT VISST SYFTE. Se GNU General Public License för fler detaljer.
-Du bör ha fått [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopia av GNU General Public License] tillsammans med detta program; om inte, skriv till Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA eller [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html läs den online].',
-'version-software' => 'Installerad programvara',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Version',
+Du bör ha fått [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopia av GNU General Public License] tillsammans med detta program; om inte, skriv till 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 läs den online].',
+'version-software' => 'Installerad programvara',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath' => 'Sökväg till fil',
@@ -3483,22 +3671,22 @@ Du bör ha fått [{{SERVER}}{{SCRIPTPATH}}/COPYING en kopia av GNU General Publi
Bilder visas i full upplösning, andra filtyper öppnas direkt i de program som är associerade till dem.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Sök efter dubblettfiler',
-'fileduplicatesearch-summary' => 'Sök efter dubblettfiler baserat på filernas hash-värden.
-
-Skriv filnamnet utan prefixet "{{ns:file}}:" .',
-'fileduplicatesearch-legend' => 'Sök efter en dubblettfil',
-'fileduplicatesearch-filename' => 'Filnamn:',
-'fileduplicatesearch-submit' => 'Sök',
-'fileduplicatesearch-info' => '$1 × $2 pixlar<br />Filstorlek: $3<br />MIME-typ: $4',
-'fileduplicatesearch-result-1' => 'Filen "$1" har inga identiska dubbletter.',
-'fileduplicatesearch-result-n' => 'Filen "$1" har {{PLURAL:$2|1 identisk dubblett|$2 identiska dubbletter}}.',
+'fileduplicatesearch' => 'Sök efter dubblettfiler',
+'fileduplicatesearch-summary' => 'Sök efter dubblettfiler baserat på filernas hash-värden.',
+'fileduplicatesearch-legend' => 'Sök efter en dubblettfil',
+'fileduplicatesearch-filename' => 'Filnamn:',
+'fileduplicatesearch-submit' => 'Sök',
+'fileduplicatesearch-info' => '$1 × $2 pixlar<br />Filstorlek: $3<br />MIME-typ: $4',
+'fileduplicatesearch-result-1' => 'Filen "$1" har inga identiska dubbletter.',
+'fileduplicatesearch-result-n' => 'Filen "$1" har {{PLURAL:$2|1 identisk dubblett|$2 identiska dubbletter}}.',
+'fileduplicatesearch-noresults' => 'Ingen fil med namnet "$1" hittades.',
# Special:SpecialPages
'specialpages' => 'Specialsidor',
'specialpages-note' => '----
* Normala specialsidor.
-* <strong class="mw-specialpagerestricted">Specialsidor med begränsad åtkomst.</strong>',
+* <span class="mw-specialpagerestricted">Specialsidor med begränsad åtkomst.</span>
+* <span class="mw-specialpagecached">Cachade specialsidor (kan vara föråldrade).</span>',
'specialpages-group-maintenance' => 'Underhållsrapporter',
'specialpages-group-other' => 'Övriga specialsidor',
'specialpages-group-login' => 'Inloggning/registrering',
diff --git a/languages/messages/MessagesSw.php b/languages/messages/MessagesSw.php
index 9c433bfc..f4ffffd2 100644
--- a/languages/messages/MessagesSw.php
+++ b/languages/messages/MessagesSw.php
@@ -45,80 +45,80 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ElekezoMbili' ),
+ 'Allmessages' => array( 'UjumbeZote' ),
+ 'Allpages' => array( 'KurasaZote' ),
+ 'Ancientpages' => array( 'KurasazaZamani' ),
+ 'Blankpage' => array( 'KurasaTupu' ),
+ 'Block' => array( 'Zui', 'ZuiaIP', 'ZuiaMtumiaji' ),
+ 'Blockme' => array( 'Nizuiye' ),
+ 'Booksources' => array( 'ZuiaChanzo' ),
'BrokenRedirects' => array( 'ElekezoIliovunjika' ),
- 'Disambiguations' => array( 'Maana' ),
- 'Userlogin' => array( 'IngiaMtumiaji' ),
- 'Userlogout' => array( 'TokaMtumiaji' ),
+ 'Categories' => array( 'Jamii' ),
+ 'Confirmemail' => array( 'ThibitishaBaruapepe' ),
+ 'Contributions' => array( 'Michango' ),
'CreateAccount' => array( 'SajiliAkaunti' ),
- 'Preferences' => array( 'Mapendekezo' ),
- 'Watchlist' => array( 'Maangalizi' ),
- 'Recentchanges' => array( 'MabadalikoyaKaribuni' ),
- 'Upload' => array( 'Pakia' ),
+ 'Deadendpages' => array( 'KurasaZilizoondoshwa' ),
+ 'DeletedContributions' => array( 'MichangoIliyofutwa' ),
+ 'Disambiguations' => array( 'Maana' ),
+ 'DoubleRedirects' => array( 'ElekezoMbili' ),
+ 'Emailuser' => array( 'BaruapepeyaMtumiaji' ),
+ 'Export' => array( 'Toa' ),
+ 'Fewestrevisions' => array( 'MarejeoMadogo' ),
+ 'Import' => array( 'Ingiza' ),
+ 'BlockList' => array( 'OrodhayaIPZilizozuiliwa' ),
+ 'LinkSearch' => array( 'TafutaKiungo' ),
+ 'Listadmins' => array( 'OrodhayaWakabidhi' ),
+ 'Listbots' => array( 'OrodhayaVikaragosi' ),
'Listfiles' => array( 'OrodhayaFali', 'OrodhayaPicha' ),
- 'Newimages' => array( 'FailiMpya', 'FailimpyazaPicha' ),
- 'Listusers' => array( 'OrodhayaWatumiaji', 'OrodhayaMtumiaji' ),
'Listgrouprights' => array( 'OrodhayaWasimamizi' ),
- 'Statistics' => array( 'Takwimu' ),
- 'Randompage' => array( 'UkurasawaBahati' ),
+ 'Listusers' => array( 'OrodhayaWatumiaji', 'OrodhayaMtumiaji' ),
+ 'Lockdb' => array( 'FungaDB' ),
+ 'Log' => array( 'Kumbukumbu' ),
'Lonelypages' => array( 'KurasaPweke' ),
- 'Uncategorizedpages' => array( 'KurasaZisizonajamii' ),
- 'Uncategorizedcategories' => array( 'JamiiZisizopangwa' ),
- 'Uncategorizedimages' => array( 'FailiZisizonajamii' ),
- 'Uncategorizedtemplates' => array( 'VigezoVisivyonajamii' ),
- 'Unusedcategories' => array( 'JamiiZisizotumika' ),
- 'Unusedimages' => array( 'FailiZisizotumika', 'PichaZisizotumika' ),
- 'Wantedpages' => array( 'KurasaZinazotakikana', 'ViungoVilivyovunjika' ),
- 'Wantedcategories' => array( 'JamiiZinazotakikana' ),
- 'Wantedfiles' => array( 'FailiZinazotakikana' ),
- 'Wantedtemplates' => array( 'VigezoVinavyotakikana' ),
+ 'Longpages' => array( 'KurasaNdefu' ),
+ 'MIMEsearch' => array( 'TafutaMIME' ),
+ 'Mostcategories' => array( 'JamiiZaidi' ),
+ 'Mostimages' => array( 'FailiZilizoungwasana', 'PichaZilizoungwasana' ),
'Mostlinked' => array( 'KurasaZilizoungwasana' ),
'Mostlinkedcategories' => array( 'JamiiZilizoungwasana' ),
'Mostlinkedtemplates' => array( 'VigezoVilivyoungwasana' ),
- 'Mostimages' => array( 'FailiZilizoungwasana', 'PichaZilizoungwasana' ),
- 'Mostcategories' => array( 'JamiiZaidi' ),
'Mostrevisions' => array( 'MarejeoZaidi' ),
- 'Fewestrevisions' => array( 'MarejeoMadogo' ),
- 'Shortpages' => array( 'KurasaFupi' ),
- 'Longpages' => array( 'KurasaNdefu' ),
+ 'Movepage' => array( 'HamishaKurasa' ),
+ 'Mycontributions' => array( 'MichangoYangu' ),
+ 'Mypage' => array( 'KurasaYangu' ),
+ 'Mytalk' => array( 'MajadilianoYangu' ),
+ 'Newimages' => array( 'FailiMpya', 'FailimpyazaPicha' ),
'Newpages' => array( 'KurasaMpya' ),
- 'Ancientpages' => array( 'KurasazaZamani' ),
- 'Deadendpages' => array( 'KurasaZilizoondoshwa' ),
+ 'Popularpages' => array( 'KurasaMaarufu' ),
+ 'Preferences' => array( 'Mapendekezo' ),
+ 'Prefixindex' => array( 'KurasaKuu' ),
'Protectedpages' => array( 'KurasaZilizolindwa' ),
'Protectedtitles' => array( 'JinaLililolindwa' ),
- 'Allpages' => array( 'KurasaZote' ),
- 'Prefixindex' => array( 'KurasaKuu' ),
- 'Ipblocklist' => array( 'OrodhayaIPZilizozuiliwa' ),
+ 'Randompage' => array( 'UkurasawaBahati' ),
+ 'Recentchanges' => array( 'MabadalikoyaKaribuni' ),
+ 'Search' => array( 'Tafuta' ),
+ 'Shortpages' => array( 'KurasaFupi' ),
'Specialpages' => array( 'KurasaMaalum' ),
- 'Contributions' => array( 'Michango' ),
- 'Emailuser' => array( 'BaruapepeyaMtumiaji' ),
- 'Confirmemail' => array( 'ThibitishaBaruapepe' ),
- 'Whatlinkshere' => array( 'VingoViungavyoUkurasahuu' ),
- 'Movepage' => array( 'HamishaKurasa' ),
- 'Blockme' => array( 'Nizuiye' ),
- 'Booksources' => array( 'ZuiaChanzo' ),
- 'Categories' => array( 'Jamii' ),
- 'Export' => array( 'Toa' ),
- 'Version' => array( 'Toleo' ),
- 'Allmessages' => array( 'UjumbeZote' ),
- 'Log' => array( 'Kumbukumbu' ),
- 'Blockip' => array( 'Zui', 'ZuiaIP', 'ZuiaMtumiaji' ),
+ 'Statistics' => array( 'Takwimu' ),
+ 'Uncategorizedcategories' => array( 'JamiiZisizopangwa' ),
+ 'Uncategorizedimages' => array( 'FailiZisizonajamii' ),
+ 'Uncategorizedpages' => array( 'KurasaZisizonajamii' ),
+ 'Uncategorizedtemplates' => array( 'VigezoVisivyonajamii' ),
'Undelete' => array( 'Usifute' ),
- 'Import' => array( 'Ingiza' ),
- 'Lockdb' => array( 'FungaDB' ),
'Unlockdb' => array( 'FunguaDB' ),
+ 'Unusedcategories' => array( 'JamiiZisizotumika' ),
+ 'Unusedimages' => array( 'FailiZisizotumika', 'PichaZisizotumika' ),
+ 'Upload' => array( 'Pakia' ),
+ 'Userlogin' => array( 'IngiaMtumiaji' ),
+ 'Userlogout' => array( 'TokaMtumiaji' ),
'Userrights' => array( 'HakizaMtumiaji' ),
- 'MIMEsearch' => array( 'TafutaMIME' ),
- 'Mypage' => array( 'KurasaYangu' ),
- 'Mytalk' => array( 'MajadilianoYangu' ),
- 'Mycontributions' => array( 'MichangoYangu' ),
- 'Listadmins' => array( 'OrodhayaWakabidhi' ),
- 'Listbots' => array( 'OrodhayaVikaragosi' ),
- 'Popularpages' => array( 'KurasaMaarufu' ),
- 'Search' => array( 'Tafuta' ),
- 'Blankpage' => array( 'KurasaTupu' ),
- 'LinkSearch' => array( 'TafutaKiungo' ),
- 'DeletedContributions' => array( 'MichangoIliyofutwa' ),
+ 'Version' => array( 'Toleo' ),
+ 'Wantedcategories' => array( 'JamiiZinazotakikana' ),
+ 'Wantedfiles' => array( 'FailiZinazotakikana' ),
+ 'Wantedpages' => array( 'KurasaZinazotakikana', 'ViungoVilivyovunjika' ),
+ 'Wantedtemplates' => array( 'VigezoVinavyotakikana' ),
+ 'Watchlist' => array( 'Maangalizi' ),
+ 'Whatlinkshere' => array( 'VingoViungavyoUkurasahuu' ),
);
$messages = array(
@@ -153,8 +153,8 @@ $messages = array(
'tog-shownumberswatching' => 'Onyesha idadi ya watumiaji waangalizi',
'tog-oldsig' => 'Sahihi jinsi inayoonekana sasa:',
'tog-fancysig' => 'Weka sahihi tu (bila kujiweka kiungo yenyewe)',
-'tog-externaleditor' => 'Tumia kiharirio cha nje inaposhindikana (kwa wataalamu tu, inahitaji marekebisho maalum kwenye tarakilishi yako. [http://www.mediawiki.org/wiki/Manual:External_editors Maelezo zaidi.])',
-'tog-externaldiff' => 'Tumia diff za nje inaposhindikana (kwa wataalamu tu, inahitaji marekebisho maalum kwenye tarakilishi yako. [http://www.mediawiki.org/wiki/Manual:External_editors Maelezo zaidi.])',
+'tog-externaleditor' => 'Tumia kiharirio cha nje inaposhindikana (kwa wataalamu tu, inahitaji marekebisho maalum kwenye tarakilishi yako. [//www.mediawiki.org/wiki/Manual:External_editors Maelezo zaidi.])',
+'tog-externaldiff' => 'Tumia diff za nje inaposhindikana (kwa wataalamu tu, inahitaji marekebisho maalum kwenye tarakilishi yako. [//www.mediawiki.org/wiki/Manual:External_editors Maelezo zaidi.])',
'tog-showjumplinks' => 'Wezesha "ruka hadi" viungo vya mafikio',
'tog-uselivepreview' => 'Tumia kihakikio cha papohapo (JavaScript) (Experimental)',
'tog-forceeditsummary' => 'Nishtue pale ninapoingiza muhtasari mtupu wa kuhariri',
@@ -251,14 +251,7 @@ $messages = array(
'listingcontinuesabbrev' => 'endelea',
'index-category' => 'Kurasa kuu',
'noindex-category' => 'Kurasa zisizokuu',
-
-'mainpagetext' => "'''MediaWiki imefanikiwa kuingizwa.'''",
-'mainpagedocfooter' => 'Shauriana na [http://meta.wikimedia.org/wiki/Help:Contents Mwongozo wa Mtumiaji] kwa habari juu ya utumiaji wa bidhaa pepe ya wiki.
-
-== Msaada wa kianzio ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Orodha ya mipangilio ya msingi]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ ya MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Orodha ya utoaji wa habari za MediaWiki]',
+'broken-file-category' => 'Kurasa zenye viungo vilivyovunjika',
'about' => 'Kuhusu',
'article' => 'Makala',
@@ -310,10 +303,10 @@ $messages = array(
'history' => 'Historia ya ukurasa',
'history_short' => 'Historia',
'updatedmarker' => 'imebadilishwa tangu nilipoutazama mara ya mwisho',
-'info_short' => 'Maarifa',
'printableversion' => 'Ukurasa wa kuchapika',
'permalink' => 'Kiungo cha daima',
'print' => 'Chapisha',
+'view' => 'Tazama',
'edit' => 'Hariri',
'create' => 'Anzisha kurasa',
'editthispage' => 'Hariri ukurasa huu',
@@ -321,6 +314,7 @@ $messages = array(
'delete' => 'Futa',
'deletethispage' => 'Futa ukurasa huo',
'undelete_short' => 'Rudisha {{PLURAL:$1|haririo moja|maharirio $1}}',
+'viewdeleted_short' => 'Tazama {{PLURAL:$1|sahihisho lililofutwa moja|masahihisho yaliyofutwa $1}}',
'protect' => 'Linda',
'protect_change' => 'badilisha',
'protectthispage' => 'Linda ukurasa huu',
@@ -404,6 +398,8 @@ Tazama [[Special:Version|ukurasa wa toleo]].',
'toc' => 'Yaliyomo',
'showtoc' => 'fichua',
'hidetoc' => 'ficha',
+'collapsible-collapse' => 'Kunja',
+'collapsible-expand' => 'Tanua',
'thisisdeleted' => 'Tazama au rudisha $1?',
'viewdeleted' => 'Tazama $1?',
'restorelink' => '{{PLURAL:$1|sahihisho lililofutwa moja|masahihisho yaliyofutwa $1}}',
@@ -415,6 +411,8 @@ Tazama [[Special:Version|ukurasa wa toleo]].',
'page-rss-feed' => 'Tawanyiko la RSS la "$1"',
'page-atom-feed' => 'Tawanyiko la Atom la "$1"',
'red-link-title' => '$1 (bado haujaandikwa)',
+'sort-descending' => 'Pangia kwa kushuka',
+'sort-ascending' => 'Pangia kwa kupanda',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Makala',
@@ -501,12 +499,11 @@ Tafadhali jaribu tena baada ya muda mfupi.',
'protectedinterface' => 'Ukurasa huu unatoa maelezo ya msingi ya bidhaa pepe, na pia umefungwa ili kuzuiya uharibifu.',
'editinginterface' => "'''Ilani:''' Una hariri ukurasa unaotumika kutoa maelezo ya msingi ya bidhaa pepe.
Mabadiliko katika ukurasa huu yataathiri mwonekano mzima wa viungo vya watumiaji wengine.
-Kwa lengo la kutaka kutafsiri, tafadhali fikiria kutumia [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], kwa kuweka miradi ya MediaWiki kwa kienyeji.",
+Kwa lengo la kutaka kutafsiri, tafadhali fikiria kutumia [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], kwa kuweka miradi ya MediaWiki kwa kienyeji.",
'sqlhidden' => '(maulizo ya SQL yamefichwa)',
'cascadeprotected' => 'Ukurasa huu umekingwa usihaririwe, kwa sababu umejumlishwa katika {{PLURAL:$1|ukurasa ufuatao, ambao umekingwa|kurasa zifuatazo, ambazo zimekingwa}} na chagua la "cascadi" iliwashwa:
$2',
'namespaceprotected' => "Huna ruhusa ya kuhariri kurasa za eneo la wiki la '''$1'''.",
-'customcssjsprotected' => 'Huna ruhusa ya kuhariri ukurasa huu, kwa sababu ukurasa umejumlisha mipangilio binafsi ya mtumiaji mwingine.',
'ns-specialprotected' => 'Kurasa maalumu haziwezi kuhaririwa.',
'titleprotected' => 'Jina hili limekingwa lisiumbwe na [[User:$1|$1]].
Sababu zilizotolewa ni "\'\'$2\'\'".',
@@ -543,6 +540,7 @@ Usisahau kubadilisha mapendekezo yako ya [[Special:Preferences|{{SITENAME}}]].',
'createaccount' => 'Sajili akaunti',
'gotaccount' => "Unayo akaunti tayari? '''$1'''",
'gotaccountlink' => 'Ingia',
+'userlogin-resetlink' => 'Umesahau maelezo yako ya kuingia?',
'createaccountmail' => 'Kwa barua pepe',
'createaccountreason' => 'Sababu:',
'badretype' => 'Maneno uliyoyaandika ni tofauti.',
@@ -554,13 +552,15 @@ Tafadhali chagua jina lingine.',
'nocookieslogin' => '{{SITENAME}} inatumia kuki ili watumiaji waweze kuingia.
Tarakilishi yako inakataa kupokea kuki.
Tafadhali, ondoa kizuizi hicho, halafu jaribu tena.',
+'nocookiesfornew' => 'Akaunti ya mtumiaji haijaianzishwa,kwa vile hatujaweza kuthibitisha lilitoka wapi.
+Hakikisha kwamba kuki zimewezeshwa kwenye tarakalishi yako, fungua upya ukurasa huu na ujaribu tena.',
'noname' => 'Hauja dhihilisha jina la mtumiaji.',
'loginsuccesstitle' => 'Umefaulu kuingia',
'loginsuccess' => "'''Umeingia {{SITENAME}} kama \"\$1\".'''",
'nosuchuser' => 'Hakuna mtumiaji mwenye jina "$1".
Kumbuka kwamba programu inatofautishana kati ya herufi kubwa na ndogo.
Labda umeandika vibaya, au [[Special:UserLogin/signup|sajili akaunti mpya]].',
-'nosuchusershort' => 'Hakuna mtumiaji mwenye jina "<nowiki>$1</nowiki>". Labda umeandika vibaya.',
+'nosuchusershort' => 'Hakuna mtumiaji mwenye jina "$1". Labda umeandika vibaya.',
'nouserspecified' => 'Lazima uandike jina la mtumiaji.',
'login-userblocked' => 'Mtumiaji huyu amezuiwa. Hawezi kuingia.',
'wrongpassword' => 'Umeingiza neno la siri la makosa.
@@ -609,10 +609,11 @@ Unaweza kupuuza ujumbe huu, endapo akaunti hii ilianzishwa kimakosa.',
'usernamehasherror' => 'Jina la mtumiaji haliwezi kuwa na herufi ya alama ya reli',
'login-throttled' => 'Umejaribu kadha wa kadha kuingia akaunti hii.
Tafadhali subiri kwanza kabla ya kujaribu tena.',
+'login-abort-generic' => 'Kuingia kwako hakujafaulu: Iliachishwa',
'loginlanguagelabel' => 'Lugha: $1',
'suspicious-userlogout' => 'Ombi lako la kutoka kwenye akaunti yako limehiniwa, kwa sababu inaonekana kwamba ombi lilitumwa na kivinjari kilichoharibika au seva ya kuwakilisha yenye kache.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Kubadilisha neno la siri',
'resetpass_announce' => 'Umeingia na kodi za barua pepe za muda tu.
Kumalizia kuingia ndani, ni lazima urekebishe neno la siri jipya hapa:',
@@ -630,6 +631,31 @@ Kumalizia kuingia ndani, ni lazima urekebishe neno la siri jipya hapa:',
Inawezekana ikawa tayari umefaulu kubadilisha neno lako la siri au neno la siri jipya la muda.',
'resetpass-temp-password' => 'Neno la siri la muda:',
+# Special:PasswordReset
+'passwordreset' => 'Seti upya neno la siri',
+'passwordreset-text' => 'Jaza fomu hii ili upate barua pepe inayotoa maelezo ya akaunti yako.',
+'passwordreset-legend' => 'Seti upya neno la siri',
+'passwordreset-disabled' => 'Kuweka neno la siri jipya kumeshitishwa katika wiki hii.',
+'passwordreset-pretext' => '{{PLURAL:$1||Ingiza moja kati ya data hizi hapo chini}}',
+'passwordreset-username' => 'Jina la mtumiaji:',
+'passwordreset-email' => 'Anwani ya barua pepe:',
+'passwordreset-emailtitle' => 'Maelezo ya akaunti kwenye {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Kuna mtu (huenda ikawa ni wewe, kutoka anwani ya IP $1) aliyeomba kukumbushwa kuhusu maelezo ya akaunti yako katika {{SITENAME}} ($4). {{PLURAL:$3|Akaunti inayofuata imeunganishwa|Akaunti zinazofuata zimeunganishwa}} na anwani ya barua pepe hii:
+
+$2
+
+{{PLURAL:$3|Neno la siri hili litakwisha|Maneno ya siri haya yatakwisha}} baada ya siku {{PLURAL:$5|$5}}.
+Tafadhali ingia sasa na uchague neno jipya la siri. Kama mtu mwingine ameomba hili, au ikiwa umekumbuka neno lako la siri na hutaki kulibadilisha tena, basi usijali ujumbe huu, na uendelee kutumia neno la siri lako la zamani.',
+'passwordreset-emailtext-user' => 'Mtumiaji $1 kwenye {{SITENAME}} ameomba akumbushwe maelezo ya akaunti yako katika {{SITENAME}} ($4). {{PLURAL:$3|Akaunti inayofuata imeunganishwa|Akaunti zinazofuata zimeunganishwa}} na anwani ya barua pepe hii:
+
+$2
+
+{{PLURAL:$3|Neno la siri hili litakwisha|Maneno ya siri haya yatakwisha}} baada ya siku {{PLURAL:$5|$5}}.
+Tafadhali ingia sasa na uchague neno jipya la siri. Kama mtu mwingine ameomba hili, au ikiwa umekumbuka neno lako la siri na hutaki kulibadilisha tena, basi usijali ujumbe huu, na uendelee kutumia neno la siri lako la zamani.',
+'passwordreset-emailelement' => 'Jina la mtumiaji: $1
+Neno la siri la muda: $2',
+'passwordreset-emailsent' => 'Barua pepe ya ukumbusho imetumwa.',
+
# Edit page toolbar
'bold_sample' => 'Maandishi ya kooze',
'bold_tip' => 'Kukoozesha maandishi',
@@ -641,8 +667,6 @@ Inawezekana ikawa tayari umefaulu kubadilisha neno lako la siri au neno la siri
'extlink_tip' => 'Kiungo cha nje (kumbuka kuanza na http:// )',
'headline_sample' => 'Matini ya kichwa cha habari',
'headline_tip' => 'Kichwa cha habari, saizi 2',
-'math_sample' => 'Ingiza formula hapa',
-'math_tip' => 'Formula ya kihesabu (LaTeX)',
'nowiki_sample' => 'Weka matini bila fomati hapa',
'nowiki_tip' => 'Puuza fomati ya Wiki',
'image_tip' => 'Faili lililotiwa',
@@ -725,7 +749,7 @@ Labda itakusumbua kwamba kuna maoni mengine yanawekwa hapa na unaamini kwamba ha
'noarticletext-nopermission' => 'Kwa sasa hakuna maandishi katika ukurasa huu.
Unaweza [[Special:Search/{{PAGENAME}}|kutafuta jina la ukurasa huu]] katika kurasa nyingine,
au <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tafuta ingizo linalofanana]</span>.',
-'userpage-userdoesnotexist' => 'Akaunti ya mtumiaji "$1" haijasajilishwa.
+'userpage-userdoesnotexist' => 'Akaunti ya mtumiaji "<nowiki>$1</nowiki>" haijasajilishwa.
Ukitaka kuanzisha au kuhariri ukurasa huu tafadhali ucheki jina la akaunti.',
'userpage-userdoesnotexist-view' => 'Akaunti ya mtumiaji "$1" haijasajilishwa.',
'blocked-notice-logextract' => 'Mtumiaji huyu bado amezuiwa.
@@ -763,6 +787,7 @@ Iwapo bado haifanyikazi, jaribu [[Special:UserLogout|kutoka]] na uingie tena.",
'token_suffix_mismatch' => "'''Uhariri wako umekataliwa kwa sababu koteja yako imeharibu herufi za ishara ya kuhariri.'''
Haririo umekataliwa ili kuzuia uharibifu wa maandishi ya kurasa.
Haya hutokea kwa muda ambao unatumia huduma ya seva ya wavu isiyotiwa jina na yenye hitilafu nyingi.",
+'edit_form_incomplete' => "'''Baadhi ya sehemu za fomu ya kuhariria hazikufikia seva. Hakikisha kwamba haririo lako bado lipo na kisha jaribu tena.'''",
'editing' => 'Kuhariri $1',
'editingsection' => 'Unahariri $1 (fungu)',
'editingcomment' => 'Una hariri $1 (sehemu mpya)',
@@ -963,7 +988,7 @@ Haliwezi kufichwa.',
# Suppression log
'suppressionlog' => 'Kumbukumbu za kuficha',
'suppressionlogtext' => 'Hapo chini panaonyeshwa orodha ya matukio ya ufutaji na ya uzuio ambayo maelezo yao yamefichwa kutoka kwa wakabidhi.
-Tazama [[Special:IPBlockList|orodha ya uzuio wa IP]] kuona orodha ya zuio zilizopo sasa hivi.',
+Tazama [[Special:BlockList|orodha ya uzuio wa IP]] kuona orodha ya zuio zilizopo sasa hivi.',
# History merging
'mergehistory' => 'Unganisha historia za kurasa',
@@ -1082,8 +1107,8 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
'changepassword' => 'Badilisha neno la siri',
'prefs-skin' => 'Umbo',
'skin-preview' => 'Hakiki',
-'prefs-math' => 'Hisabati',
'datedefault' => 'Chaguo-msingi',
+'prefs-beta' => 'Zana za Beta',
'prefs-datetime' => 'Tarehe na saa',
'prefs-personal' => 'Kuhusu mtumiaji',
'prefs-rc' => 'Mabadiliko ya karibuni',
@@ -1106,8 +1131,6 @@ Ujue lakini kwamba kumbukumbu za {{SITENAME}} kule Google labda zilipitwa na wak
'columns' => 'Safu:',
'searchresultshead' => 'Kutafuta',
'resultsperpage' => 'Matokeo yanayoorodheshwa katika ukurasa mmoja:',
-'contextlines' => 'Mistari kwa kila tokeo:',
-'contextchars' => 'Herufi za muktadha kwa kila mstari:',
'stub-threshold' => 'Kiwango cha juu cha kuonyesha kiungo kama <a href="#" class="stub">kiungo kinachoelekea mbegu</a> (baiti):',
'stub-threshold-disabled' => 'Imelemazwa',
'recentchangesdays' => 'Ionyeshwe siku ngapi kwenye orodha ya mabadiliko ya karibuni?',
@@ -1120,7 +1143,7 @@ Hapo kuna ufunguo uliotolewa na programu kwa kubahatisha, ambao unaweza kuutumia
'savedprefs' => 'Mapendekezo yako yamehifadhiwa.',
'timezonelegend' => 'Ukanda saa:',
'localtime' => 'Saa ya kwetu:',
-'timezoneuseserverdefault' => 'Tumia saa ya seva',
+'timezoneuseserverdefault' => 'Tumia saa inayokubali na wiki yenyewe ($1)',
'timezoneuseoffset' => 'Nyingine (weka tofauti ya saa)',
'timezoneoffset' => 'Tofauti ya saa¹:',
'servertime' => 'Saa ya seva:',
@@ -1170,8 +1193,8 @@ Haiwezi kuzidi {{PLURAL:$1|tarakimu|tarakimu}} $1.',
Taarifa hii itakuwa wazi.',
'email' => 'Barua pepe',
'prefs-help-realname' => 'Jina la kweli si lazima. Ukichagua kutaja jina lako hapa, litatumiwa kuonyesha kwamba ndiyo ulifanya kazi unayochangia.',
-'prefs-help-email' => 'Barua-pepe sio lazima, lakini inawezesha kupokea neno jipya la siri kwa kupitia barua-pepe yako endapo utakuwa umelisahau.
-Pia unaweza kuchagua kuwawezesha watumiaji wengine wawasiliane nawe kwa kupitia ukurasa wako wa mtumiaji au ule wa majadiliano bila ya kuonyesha jina la akaunti yako.',
+'prefs-help-email' => 'Barua-pepe sio lazima, lakini inawezesha kupokea neno jipya la siri kwa kupitia barua-pepe yako endapo utakuwa umelisahau.',
+'prefs-help-email-others' => 'Unaweza pia kuwezesha wengine wawasiliane nawe kwa njia ya ukurasa wako wa mtumiaji au ukurasa wako wa majadiliano. Anwani ya barua-pepe yako haioneshwi wakati watumiaji wanawasiliana na wewe.',
'prefs-help-email-required' => 'Barua pepe inahitajika.',
'prefs-info' => 'Maelezo ya kimsingi',
'prefs-i18n' => 'Lugha',
@@ -1283,7 +1306,6 @@ Pia unaweza kuchagua kuwawezesha watumiaji wengine wawasiliane nawe kwa kupitia
'right-userrights' => 'Kubadilisha wezo zote za watumiaji',
'right-userrights-interwiki' => 'Kuhariri wezo za watumiaji kwenye wiki zingine',
'right-siteadmin' => 'Kufunga na kufungua hifadhidata',
-'right-reset-passwords' => 'Seti upya maneno ya siri ya watumiaji wengine',
'right-sendemail' => 'Kutuma barua-pepe kwa watumiaji wengine',
# User rights log
@@ -1407,13 +1429,13 @@ Tazama [[Special:NewFiles|mkusanyiko wa mafaili mapya]] kuona picha zenyewe.',
'illegalfilename' => 'Jina la faili la "$1" lina herufi zisizoruhusiwa katika majina ya kurasa.
Tafadhali uweke jina jipya kwenye faili, halafu jaribu kulipakia upya.',
'badfilename' => 'Jina la faili limebadilishwa kuwa "$1".',
-'filetype-mime-mismatch' => 'Tawi (extension) la faili halingani na aina ya MIME.',
+'filetype-mime-mismatch' => 'Tawi (extension) ".$1" la faili halingani na aina yake ya MIME ($2).',
'filetype-badmime' => 'Mafaili ya aina ya MIME ya "$1" hayaruhusiwi kupakiwa.',
'filetype-bad-ie-mime' => 'Haiwezi kupakia faili hili kwa sababu Internet Explorer ingefikiri kwamba ni "$1". Mafaili ya aina hii hayaruhusiwa, na huenda ni ya hatari.',
'filetype-unwanted-type' => "Aina la faili '''\".\$1\"''' halitakiwi.
{{PLURAL:\$3|Aina ya faili inayopendelewa|Aina za faili zinazopendelewa}} ni \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' sio aina la faili linaloruhusiwa.
-{{PLURAL:\$3|Aina ya faili linaloruhusiwa|Aina za faili zinazoruhusiwa}} ni \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' sio aina {{PLURAL:$4|ya faili linaloruhusiwa|za faili zinazoruhusiwa}}.
+{{PLURAL:$3|Aina ya faili inayoruhusiwa|Aina za faili zinazoruhusiwa}} ni $2.',
'filetype-missing' => 'Faili halina mnyambuliko (kama ".jpg").',
'empty-file' => 'Faili ulilowasilisha ni tupu.',
'file-too-large' => 'Faili ulilowasilisha ni kubwa mno.',
@@ -1431,6 +1453,7 @@ faili hili lina $2.',
'emptyfile' => 'Faili ulilolipakia linaonekana kuwa tupu.
Hii huenda ikawa jina lake limeandikwa vibaya.
Tafadhali uhakikishe kwamba ni kweli unataka kupakia faili hili.',
+'windows-nonascii-filename' => 'Wiki hii haiwezi kutumia majina ya mafaili yenye herufi maalum.',
'fileexists' => "Faili lenye jina hili lipo tayari, tafadhali tazama '''<tt>[[:$1]]</tt>''' ikiwa una mashaka kuhusu kulibadilisha.
[[$1|thumb]]",
'filepageexists' => "Ukurasa wa maelezo kwa ajili ya faili hili tayari umeshaanzishwa katika '''<tt>[[:$1]]</tt>''', lakini bado hakuna faili lenye jina hili kwa sasa.
@@ -1470,6 +1493,8 @@ Tafadhali utazame kipimo cha file_uploads.',
'uploadscripted' => 'Faili hili lina HTML au kodi ambazo labda itaeleweka vibaya na kivinjari.',
'uploadvirus' => 'Faili lina kirusi!
Maelezo mengine: $1',
+'uploadjava' => 'Faili ZIP hili lina faili Java .class humo ndani.
+Hairuhusiki kupakia mafaili ya Java, kwa sababu yanawezesha kuambaa vizuio vya usalama.',
'upload-source' => 'Faili la chanzo',
'sourcefilename' => 'Jina la faili la chanzo:',
'sourceurl' => 'URL ya chanzo:',
@@ -1480,10 +1505,6 @@ Maelezo mengine: $1',
'watchthisupload' => 'Kufuatilia faili hili',
'filewasdeleted' => 'Faili lenye jina hili limeshapakiwa halafu limefutwa.
Unapaswa kuangalia $1 kabla hujapakia tena.',
-'upload-wasdeleted' => "'''Ilani: Unapakia upya faili lililofutwa tayari.'''
-
-Fikiria kama inafaa kuendelea kupakia faili hili.
-Kumbukumbu ya kufuta faili hili inapatikana hapa kukusaidia:",
'filename-bad-prefix' => "Jina la faili unalolipakia huanza na '''\"\$1\"''', ambalo ni jina lisilo na maana yanayoeleweka kirahisi, ya aina inayotolewa huwa na kamera dijiti.
Tafadhali chagua jina linaloeleweka kirahisi kwa ajili ya faili lako.",
'upload-success-subj' => 'Upakiaji ulifaulu',
@@ -1508,6 +1529,17 @@ Tatizo likiendelea, uwasiliane na [[Special:ListUsers/sysop|mkabidhi]].',
'upload-unknown-size' => 'Ukubwa haujulikani',
'upload-http-error' => 'Imetokea hitilafu ya HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Ilitokea hitilafu wakati wa kufungua faili kwa ajili ya ukaguzi wa ZIP.',
+'zip-wrong-format' => 'Faili lililotajwa si faili la ZIP.',
+'zip-bad' => 'Faili ZIP hili limevurugika ama halisomeka.
+Haliwezi kugakuliwa ili kukinga usalama.',
+'zip-unsupported' => 'Faili ZIP hili linatumia bidhaa pepe ya ZIP zisizoeleweka na MediaWiki.
+Haliwezi kugakuliwa ili kukinga usalama.',
+
+# Special:UploadStash
+'uploadstash-refresh' => 'Zimua orodha ya mafaili',
+
# img_auth script messages
'img-auth-accessdenied' => 'Ruksa imekataliwa',
'img-auth-nofile' => 'Hakuna faili la "$1".',
@@ -1577,7 +1609,7 @@ Orodha inayofuata inaonyesha {{PLURAL:$1|kiungo cha kwanza|viungo $1 vya kwanza}
[[Special:WhatLinksHere/$2|Orodha nzima]] inapatikana.',
'nolinkstoimage' => 'Hakuna kurasa zozote zilizounganishwa na faili hii.',
'morelinkstoimage' => 'Tazama [[Special:WhatLinksHere/$1|viungo vingine]] vinavyoelekeza faili hili.',
-'redirectstofile' => '{{PLURAL:$1|Faili linalofuata linaelekeza|Mafaili $1 yanayofuata yanaelekeza}} faili hili:',
+'linkstoimage-redirect' => '$1 (elekezo la faili) $2',
'duplicatesoffile' => '{{PLURAL:$1|Faili linalofuata ni nakala ya|Mafaili $1 yanayofuata ni nakala za}} faili hili ([[Special:FileDuplicateSearch/$2|maelezo mengine]]):',
'sharedupload' => 'Faili hili linatoka $1 na linaweza kushirikiwa na miradi mingine.',
'sharedupload-desc-there' => 'Faili hili linatoka $1 na huenda likawa limetumika na miradi mingine.
@@ -1673,12 +1705,13 @@ Kumbuka kuhakikisha kwamba hakuna viungo vingine vinavyoelekea kigezo fulani kab
Ni afadhali kiungo kiende makala inayostahili moja kwa moja.<br />
Kurasa za kutofautishana maana ni zile zinazotumia kigezo kinachoorodheshwa katika ukurasa wa [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Maelekezo mawilimawili',
-'doubleredirectstext' => 'Ukurasa huu unaorodhesha kurasa zinazoelekeza kurasa zingine za kuelekeza.
+'doubleredirects' => 'Maelekezo mawilimawili',
+'doubleredirectstext' => 'Ukurasa huu unaorodhesha kurasa zinazoelekeza kurasa zingine za kuelekeza.
Katika kila mstari kuna viungo vinavyokwenda katika kurasa za kuelekeza zote mbili, pamoja na ukurasa wa mwishilio mwa elekezo la pili. Ukurasa huu wa mwishilio huwa ni ukurasa unaostahili kuelekezwa kutoka kwa ukurasa wa kuelekeza wa kwanza. Vitu <del>vilivyokatwa kwa mstari</del> vimeshatatuliwa.',
-'double-redirect-fixed-move' => '[[$1]] umehamishwa.
+'double-redirect-fixed-move' => '[[$1]] umehamishwa.
Sasa unaelekeza [[$2]].',
-'double-redirect-fixer' => 'Boti ya kurekebisha maelekezo',
+'double-redirect-fixed-maintenance' => 'Elekezo maradufu inarekebishwa toka [[$1]] kwenda [[$2]].',
+'double-redirect-fixer' => 'Boti ya kurekebisha maelekezo',
'brokenredirects' => 'Maelekezo yenye hitilafu',
'brokenredirectstext' => 'Maelekezo yafuatayo yanaelekeza katika kurasa zisizopatikana:',
@@ -1795,7 +1828,7 @@ Tazama pia [[Special:WantedCategories|jamii zinazohitajika]].',
'sp-deletedcontributions-contribs' => 'michango',
# Special:LinkSearch
-'linksearch' => 'Viungo vya nje',
+'linksearch' => 'Kutafuta viungo vya nje',
'linksearch-pat' => 'Herufi zitakazotafutwa:',
'linksearch-ns' => 'Eneo la wiki:',
'linksearch-ok' => 'Tafuta',
@@ -1861,6 +1894,10 @@ Anwani yako ya barua pepe ulioitaja katika [[Special:Preferences|mapendekezo yak
'noemailtext' => 'Mtumiaji huyu hajataja anwani sahihi ya barua pepe.',
'nowikiemailtitle' => 'Barua pepe haziruhusiwi',
'nowikiemailtext' => 'Mtumiaji huyu hajakubali kupokea barua pepe kutoka kwa watumiaji wengine.',
+'emailnotarget' => 'Jina la mpokeaji uliloweka halipatikani',
+'emailtarget' => 'Andika jina la mtumiaji la mpokeaji',
+'emailusername' => 'Jina la mtumiaji:',
+'emailusernamesubmit' => 'Wasilisha',
'email-legend' => 'Tuma barua pepe kwa mtumiaji mwingine wa {{SITENAME}}',
'emailfrom' => 'Kutoka kwa:',
'emailto' => 'Kwa:',
@@ -1881,14 +1918,14 @@ Anwani yako ya barua pepe ulioitaja katika [[Special:Preferences|mapendekezo yak
'watchlistanontext' => 'Tafadhali $1 ili kutazama au kuhariri vitu vilivyopo katika orodha yako ya maangalizi.',
'watchnologin' => 'Hujaingia',
'watchnologintext' => 'Lazima uwe [[Special:UserLogin|umeshaingia]] ili uweze kuhariri orodha ya maangalizi yako.',
-'addedwatch' => 'Imeongezwa kwenye maangalizi yako',
+'addwatch' => 'Ongeza kwenye orodha ya maangalizi',
'addedwatchtext' => "Ukurasa \"[[:\$1]]\" umewekwa kwenye [[Special:Watchlist|maangalizi]] yako.
Mabadiliko katika ukurasa huo na ukurasa wake wa majadiliano utaonekana hapo,
na ukurasa utaonyeshwa wenye '''koze''' kwenye [[Special:RecentChanges|orodha ya mabadiliko ya karibuni]]
ili kukusaidia kutambua.
Ukitaka kufuta ukurasa huo kutoka maangalizi yako baadaye, bonyeza \"Acha kufuatilia\" katika mwamba pembeni.",
-'removedwatch' => 'Imefutwa kutoka maangalizi yako',
+'removewatch' => 'Ondoa kutoka orodha ya maangalizi',
'removedwatchtext' => 'Ukurasa "[[:$1]]" umeondoshwa kutoka katika [[Special:Watchlist|maangalizi yako]].',
'watch' => 'Fuatilia',
'watchthispage' => 'Fuatilia ukurasa huu',
@@ -1909,8 +1946,9 @@ Ukitaka kufuta ukurasa huo kutoka maangalizi yako baadaye, bonyeza \"Acha kufuat
'watchlist-options' => 'Hitiari za maangalizi',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Unafuatilia...',
-'unwatching' => 'Umeacha kufuatilia...',
+'watching' => 'Unafuatilia...',
+'unwatching' => 'Umeacha kufuatilia...',
+'watcherrortext' => 'Hitilafu ilitokea ulipojaribu kubadilisha vipimo vya maangalizi yako kwa ajili ya "$1".',
'enotif_mailer' => 'Huduma ya taarifa ya barua pepe kutoka kwa {{SITENAME}}',
'enotif_reset' => 'Weka alama ya kutembelewa kwenye kurasa zote',
@@ -1942,13 +1980,13 @@ Au unaweza kuweka upya maombi ya kupewa taarifa kwa ajili ya kurasa zote zilizop
--
Ukitaka kubadilisha mapendekezo yako yanayohusika orodha ya maangalizi yako, nenda
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Ukitaka kutoa ukurasa huu kwenye orodha ya maangalizi yako, nenda
$UNWATCHURL
Kutoa maoni yako au kupata msaada mwingine:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Futa ukurasa',
@@ -1964,7 +2002,7 @@ Kutoa maoni yako au kupata msaada mwingine:
Tafadhali hakikisha kwamba unalenga kufanya hivyo, na kwamba unaelewa matokeo yake, na kwamba unafuata [[{{MediaWiki:Policy-url}}|sera]].',
'actioncomplete' => 'Kitendo kimekwisha',
'actionfailed' => 'Tendo halikufaulu',
-'deletedtext' => '"<nowiki>$1</nowiki>" imefutwa. Ona $2 kwa historia ya kurasa zilizofutwa hivi karibuni.',
+'deletedtext' => '"$1" imefutwa. Ona $2 kwa historia ya kurasa zilizofutwa hivi karibuni.',
'deletedarticle' => 'alifuta "[[$1]]"',
'suppressedarticle' => 'alificha "[[$1]]"',
'dellogpage' => 'Kumbukumbu ya ufutaji',
@@ -2014,7 +2052,7 @@ ukurasa huu una mhariri mmoja tu.',
'protect_expiry_invalid' => 'Muda wa kwisha ni batilifu.',
'protect_expiry_old' => 'Muda wa kuishi umepita tayari.',
'protect-unchain-permissions' => 'Fungua chaguzi zingine za ulinzi',
-'protect-text' => "Unaweza kutazama na kubadilisha kiwango cha ulindaji hapa kwa ukurasa '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Unaweza kutazama na kubadilisha kiwango cha ulindaji hapa kwa ukurasa '''$1'''.",
'protect-locked-dblock' => "Viwango vya ulindaji haviwezi kubadilishwa kwa sababu hifadhidata imefungwa.
Hapo panaandikwa viwango vya ulindaji wa ukurasa '''$1''':",
'protect-locked-access' => "Akaunti yako hairuhusiwi kubadilisha viwango vya ulindaji.
@@ -2086,9 +2124,10 @@ $1',
'undelete-show-file-submit' => 'Ndiyo',
# Namespace form on various pages
-'namespace' => 'Chagua eneo la wiki:',
-'invert' => 'Geuza uteuzi',
-'blanknamespace' => '(Kuu)',
+'namespace' => 'Chagua eneo la wiki:',
+'invert' => 'Geuza uteuzi',
+'namespace_association' => 'Eneo linalohusisha',
+'blanknamespace' => '(Kuu)',
# Contributions
'contributions' => 'Michango ya mtumiaji',
@@ -2138,13 +2177,14 @@ Rejea kumbukumbu ya uzuio ya mwisho inayoandikwa chini:',
'whatlinkshere-filters' => 'Machujio',
# Block/unblock
+'block' => 'Kumzuia mtumiaji',
+'unblock' => 'Kuacha kumzuia mtumiaji',
'blockip' => 'Zuia mtumiaji',
'blockip-title' => 'Kumzuia mtumiaji',
'blockip-legend' => 'Kumzuia mtumiaji',
'blockiptext' => 'Tumia fomu iliyopo chini kumzuia mtu asihariri kwa kupitia anwani fulani wa IP au kwa kutumia jina fulani la mtumiaji.
Nia ya kumzuia mtu inatakiwa kuwa kuzuia uharibifu tu, na ifanikiwe kutokana na masharti ya [[{{MediaWiki:Policy-url}}|sera]].
Andika sababu ya kuzuia chini (kwa mfano, kwa kutaja mifano ya kurasa zilizoharibiwa).',
-'ipaddress' => 'Anwani ya IP:',
'ipadressorusername' => 'Anwani ya IP au jina la mtumiaji:',
'ipbexpiry' => 'Itakwisha:',
'ipbreason' => 'Sababu:',
@@ -2157,7 +2197,7 @@ Andika sababu ya kuzuia chini (kwa mfano, kwa kutaja mifano ya kurasa zilizohari
** Adabu mbaya/kero
** Kusumbua akaunti nyinginyingi
** Jina la mutumiaji lisilokubalika',
-'ipbanononly' => 'Zuia watumiaji wasio na majina tu',
+'ipb-hardblock' => 'Kuzuia watumiaji walioingia katika akaunti zao wasihariri kwa kutumia anwani hii ya IP',
'ipbcreateaccount' => 'Kinga usajili wa akaunti',
'ipbemailban' => 'Kinga mtumiaji asitume barua-pepe',
'ipbenableautoblock' => 'Mashine izuie anwani ya mwisho ya IP iliotumiwa na mtumiaji huyu, na IP zozote za baadaye atakayejaribu kutumia',
@@ -2168,18 +2208,21 @@ Andika sababu ya kuzuia chini (kwa mfano, kwa kutaja mifano ya kurasa zilizohari
'ipbotherreason' => 'Engine/sababu ya ziada:',
'ipbhidename' => 'Ficha jina la mtumiaji katika orodha na kuhariri',
'ipbwatchuser' => 'Fuatilia kurasa za mtumiaji na majadiliano ya mtumiaji huyu.',
-'ipballowusertalk' => 'Ruhusu mtumiaji huyu kuhariri ukurasa wake mwenyewe wa majadiliano wakati kazuiliwa',
+'ipb-disableusertalk' => 'Kuzuia mtumiaji huu asihariri ukurasa wake mwenyewe wa majadiliano wakati amezuluiwa',
+'ipb-confirm' => 'Uthibitishe uzuio',
'badipaddress' => 'Anwani batili ya IP',
'blockipsuccesssub' => 'Kulifaulu kumzuia',
'ipb-edit-dropdown' => 'Hariri sababu za kuzuia',
'ipb-unblock-addr' => 'Acha kumzuia $1',
'ipb-unblock' => 'Acha kumzuia mtumiaji au anwani wa IP',
'ipb-blocklist-contribs' => 'Michango ya $1',
+'blocklist' => 'Watumiaji waliozuiliwa',
'ipblocklist' => 'Watumiaji waliozuiliwa',
-'ipblocklist-username' => 'Jina la mtumiaji au anwani ya IP:',
+'blocklist-timestamp' => 'Tarehe na saa',
+'blocklist-expiry' => 'Itakwisha',
+'blocklist-reason' => 'Sababu',
'ipblocklist-submit' => 'Tafuta',
'ipblocklist-otherblocks' => ' {{PLURAL:$1|Uzuio mwingine|Zuio zingine}}',
-'blocklistline' => '$1, $2 alimzuia $3 ($4)',
'infiniteblock' => 'milele',
'expiringblock' => 'inakwisha tarehe $1 saa $2',
'emailblock' => 'barua pepe imezuiliwa',
@@ -2211,6 +2254,7 @@ Andika sababu ya kuzuia chini (kwa mfano, kwa kutaja mifano ya kurasa zilizohari
Kumbuka [[Special:UnlockDB|kuifungua tena]] baada ya kumaliza kuitengeneza.',
'unlockdbsuccesstext' => 'Hifadhidata imefunguliwa.',
'databasenotlocked' => 'Hifadhidata haijafunguliwa.',
+'lockedbyandtime' => '(kwa $1 saa $3 tarehe $2)',
# Move page
'move-page' => 'Hamisha $1',
@@ -2317,7 +2361,7 @@ Ukipeleka haririo ya kisasa tu, unaweza kutumia kiungo kinachokwenda ukurasa wa
'allmessagesdefault' => 'Ujumbe uliopo bidhaa pepe',
'allmessagescurrent' => 'Ujumbe unapo sasa hivi',
'allmessagestext' => 'Hii ni orodha ya jumbe za mfumo zilizopo katika eneo la MediaWiki.
-Ukitaka kusaidia kazi ya kutohoa MediaWiki yote katika lugha nyingi, tafadhali uende tovuti ya [http://www.mediawiki.org/wiki/Localisation Kutohoa MediaWiki Kwenye Lugha Nyingi] na [http://translatewiki.net translatewiki.net].',
+Ukitaka kusaidia kazi ya kutohoa MediaWiki yote katika lugha nyingi, tafadhali uende tovuti ya [//www.mediawiki.org/wiki/Localisation Kutohoa MediaWiki Kwenye Lugha Nyingi] na [//translatewiki.net translatewiki.net].',
'allmessagesnotsupportedDB' => "Ukurasa huu hauwezi kutumika kwa sababu '''\$wgUseDatabaseMessages''' imelemazwa.",
'allmessages-filter-legend' => 'Chuja',
'allmessages-filter' => 'Zichujwe kwa hali ya kutengenezwa:',
@@ -2447,15 +2491,13 @@ Tafadhali jaribu tena.',
'nocredits' => 'Taarifa kuhusu wandishi wa ukurasa huu haipatikana.',
# Info page
-'infosubtitle' => 'Taarifa juu ya ukurasa',
-'numedits' => 'Idadi ya haririo (ukurasa): $1',
-'numtalkedits' => 'Idadi ya uhariri (ukurasa wa majadiliano): $1',
-'numwatchers' => 'Idadi ya wanaofuatilia ukurasa: $1',
-'numauthors' => 'Idadi ya waandishi tofauti (ukurasa): $1',
-'numtalkauthors' => 'Idadi ya waandishi tofauti (ukurasa wa majadiliano): $1',
-
-# Math errors
-'math_unknown_error' => 'hitilafu isiyojulikana',
+'pageinfo-title' => 'Taarifa juu ya "$1"',
+'pageinfo-header-edits' => 'Maharirio',
+'pageinfo-header-watchlist' => 'Maangalizi',
+'pageinfo-subjectpage' => 'Ukurasa',
+'pageinfo-talkpage' => 'Ukurasa wa majadiliano',
+'pageinfo-watchers' => 'Idadi ya wanaofuatilia',
+'pageinfo-edits' => 'Idadi ya haririo',
# Patrol log
'patrol-log-line' => 'imewekewa alama $1 ya $2 kufanyiwa doria $3',
@@ -2474,18 +2516,21 @@ Tafadhali jaribu tena.',
'nextdiff' => 'Badilisho lijalo →',
# Media information
-'mediawarning' => 'Ilani: Huenda faili hili lina msimbo mbaya.
+'mediawarning' => 'Ilani: Huenda faili hili lina msimbo mbaya.
Ukilitekeleza faili, mashine yako huenda ikawa matatani.',
-'imagemaxsize' => "Kikomo cha ukubwa wa picha:<br />''(cha kurasa za maelezo ya mafaili)''",
-'thumbsize' => 'Ukubwa wa picha ndogo:',
-'widthheightpage' => '$1×$2, {{PLURAL:$3|ukurasa|kurasa}} $3',
-'file-info' => 'ukubwa wa faili: $1, aina ya MIME: $2',
-'file-info-size' => 'piseli $1 × $2, saizi ya faili: $3, aina ya MIME: $4',
-'file-nohires' => '<small>Hakuna saizi kubwa zaidi.</small>',
-'svg-long-desc' => 'faili la SVG, husemwa kuwa piseli $1 × $2, saizi ya faili: $3',
-'show-big-image' => 'Ukubwa wa awali',
-'show-big-image-thumb' => '<small>Ukubwa wa hakikisho hili: piseli $1 x $2</small>',
-'file-info-png-repeat' => 'inachezwa {{PLURAL:$1|mara}} $1',
+'imagemaxsize' => "Kikomo cha ukubwa wa picha:<br />''(cha kurasa za maelezo ya mafaili)''",
+'thumbsize' => 'Ukubwa wa picha ndogo:',
+'widthheightpage' => '$1×$2, {{PLURAL:$3|ukurasa|kurasa}} $3',
+'file-info' => 'ukubwa wa faili: $1, aina ya MIME: $2',
+'file-info-size' => 'piseli $1 × $2, saizi ya faili: $3, aina ya MIME: $4',
+'file-info-size-pages' => 'Piseli $1 × $2, ukubwa wa faili: $3, aina ya MIME: $4, {{PLURAL:$5|ukurasa|kurasa}} $5',
+'file-nohires' => '<small>Hakuna saizi kubwa zaidi.</small>',
+'svg-long-desc' => 'faili la SVG, husemwa kuwa piseli $1 × $2, saizi ya faili: $3',
+'show-big-image' => 'Ukubwa wa awali',
+'show-big-image-preview' => '<small>Ukubwa wa hakikisho: $1.</small>',
+'show-big-image-other' => '<small>Ukubwa zingine: $1.</small>',
+'show-big-image-size' => 'piseli $1 × $2',
+'file-info-png-repeat' => 'inachezwa {{PLURAL:$1|mara}} $1',
# Special:NewFiles
'newimages' => 'Mkusanyiko wa mafaili mapya',
@@ -2521,7 +2566,13 @@ likifupishwa. Nyuga zingine zitafichwa kama chaguo-msingi.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Upana',
@@ -2538,7 +2589,6 @@ likifupishwa. Nyuga zingine zitafichwa kama chaguo-msingi.
'exif-componentsconfiguration' => 'Maana ya kila kijenzi',
'exif-pixelydimension' => 'Upana wa picha',
'exif-pixelxdimension' => 'Urefu wa picha',
-'exif-makernote' => 'Maelezo ya mtengenezaji',
'exif-usercomment' => 'Maoni ya mtumiaji',
'exif-relatedsoundfile' => 'Faili la sauti linalohusika',
'exif-lightsource' => 'Mwanga',
@@ -2557,7 +2607,25 @@ likifupishwa. Nyuga zingine zitafichwa kama chaguo-msingi.
'exif-gpsdestdistance' => 'Mbali wa kikomo',
'exif-gpsareainformation' => 'Jina la eneo la GPS',
'exif-gpsdatestamp' => 'Tarehe ya GPS',
+'exif-jpegfilecomment' => 'Maoni juu ya faili la JPEG',
+'exif-keywords' => 'Maneno yahusika',
+'exif-worldregioncreated' => 'Eneo la dunia palipopigwa picha',
+'exif-countrycreated' => 'Nchi palipopigwa picha',
+'exif-countrycodecreated' => 'Kodi ya nchi picha palipopigwa',
+'exif-countrydest' => 'Nchi inayoonyeshwa',
'exif-objectname' => 'Jina fupi',
+'exif-specialinstructions' => 'Maelekezo maalum',
+'exif-headline' => 'Kichwa cha habari',
+'exif-urgency' => 'Umuhimu',
+'exif-writer' => 'Mwandishi',
+'exif-languagecode' => 'Lugha',
+'exif-iimcategory' => 'Jamii',
+'exif-cameraownername' => 'Mwenye kamera',
+'exif-copyrighted' => 'Hali ya hakimiliki',
+'exif-copyrightowner' => 'Mwenye hatimiliki',
+'exif-pngfilecomment' => 'Maoni juu ya faili la PNG',
+'exif-giffilecomment' => 'Maoni juu ya faili la GIF',
+'exif-personinimage' => 'Mtu aliyepigwa picha',
'exif-unknowndate' => 'Tarehe haijulikani',
@@ -2626,21 +2694,65 @@ likifupishwa. Nyuga zingine zitafichwa kama chaguo-msingi.
'exif-gpsspeed-m' => 'Maili kwa saa',
'exif-gpsspeed-n' => 'Noti',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilomita',
+'exif-gpsdestdistance-m' => 'Maili',
+'exif-gpsdestdistance-n' => 'Maili ya baharia',
+
+'exif-gpsdop-excellent' => 'Nzuri sana ($1)',
+'exif-gpsdop-good' => 'Nzuri ($1)',
+'exif-gpsdop-moderate' => 'Nzuri kiasi ($)',
+'exif-gpsdop-fair' => 'Nzuri kidogo ($1)',
+'exif-gpsdop-poor' => ' Si nzuri ($1)',
+
+'exif-objectcycle-a' => 'Asubuhi tu',
+'exif-objectcycle-p' => 'Jioni tu',
+'exif-objectcycle-b' => 'Asubuhi na jioni zote mbili',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Mwelekeo halisi',
'exif-gpsdirection-m' => 'Mwelekeo wa sumaku',
+'exif-dc-contributor' => 'Wengine waliochangia',
+'exif-dc-date' => 'Tarehe',
+'exif-dc-publisher' => 'Mchapishaji',
+'exif-dc-rights' => 'Haki',
+
+'exif-rating-rejected' => 'Lilikataliwa',
+
+'exif-isospeedratings-overflow' => 'Zaidi na 65535',
+
+'exif-iimcategory-ace' => 'Sanaa, utamaduni na burudani',
+'exif-iimcategory-clj' => 'Uhalifu na sheria',
+'exif-iimcategory-dis' => 'Maafa na ajali',
+'exif-iimcategory-fin' => 'Uchumi na biashara',
+'exif-iimcategory-edu' => 'Elimu',
+'exif-iimcategory-evn' => 'Mazingira',
+'exif-iimcategory-hth' => 'Afya',
+'exif-iimcategory-hum' => 'Maslahi ya binadamu',
+'exif-iimcategory-lab' => 'Kazi',
+'exif-iimcategory-lif' => 'Mtindo wa maisha na burudani',
+'exif-iimcategory-pol' => 'Siasa',
+'exif-iimcategory-rel' => 'Dini na imani',
+'exif-iimcategory-sci' => 'Sayansi na teknolojia',
+'exif-iimcategory-spo' => 'Michezo',
+'exif-iimcategory-war' => 'Vita, migogoro na vurugu',
+'exif-iimcategory-wea' => 'Hali ya hewa',
+
+'exif-urgency-normal' => 'Kawaida ($1)',
+'exif-urgency-low' => 'Chini ($1)',
+'exif-urgency-high' => 'Juu ($1)',
+'exif-urgency-other' => 'Upaumbele uliotajwa na mtumiaji ($1)',
+
# External editor support
'edit-externally' => 'Tumia programu ya nje kuhariri faili hii',
-'edit-externally-help' => '(Ona [http://www.mediawiki.org/wiki/Manual:External_editors maelezo (kwa Kiingereza)] kwa maarifa mengine.)',
+'edit-externally-help' => '(Ona [//www.mediawiki.org/wiki/Manual:External_editors maelezo (kwa Kiingereza)] kwa maarifa mengine.)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'yote',
-'imagelistall' => 'zote',
-'watchlistall2' => 'zote',
-'namespacesall' => 'zote',
-'monthsall' => 'yote',
-'limitall' => 'zote',
+'watchlistall2' => 'zote',
+'namespacesall' => 'zote',
+'monthsall' => 'yote',
+'limitall' => 'zote',
# E-mail address confirmation
'confirmemail' => 'Kuyakinisha anwani ya barua pepe',
@@ -2711,17 +2823,24 @@ Ishara hizi za uthibitisho zitaishia mnamo $4.',
'trackbackremove' => '([$1 Futa])',
# Delete conflict
-'deletedwhileediting' => "'''Ilani''': Ukurasa huu ulifutwa ulipokwisha kuanza huuhariri!",
-'confirmrecreate' => "Mtumiaji [[User:$1|$1]] ([[User talk:$1|majadiliano]]) aliufuta ukurasa huu wakati umeshaanza kuuhariri, akaandika sababu hii ya kufuta:
+'deletedwhileediting' => "'''Ilani''': Ukurasa huu ulifutwa ulipokwisha kuanza huuhariri!",
+'confirmrecreate' => "Mtumiaji [[User:$1|$1]] ([[User talk:$1|majadiliano]]) aliufuta ukurasa huu wakati umeshaanza kuuhariri, akaandika sababu hii ya kufuta:
: ''$2''
Tafadhali uthibitishe kwamba kweli unataka kuanzisha ukurasa huu upya.",
-'recreate' => 'Anzisha upya',
+'confirmrecreate-noreason' => 'Mtumiaji [[User:$1|$1]] ([[User talk:$1|majadiliano]]) aliufuta ukurasa huu wakati umeshaanza kuuhariri. Tafadhali uthibitishe kwamba kweli unataka kuanzisha ukurasa huu upya.',
+'recreate' => 'Anzisha upya',
# action=purge
'confirm_purge_button' => 'Sawa',
'confirm-purge-top' => 'Ghili ya ukurasa huu ifutwe?',
'confirm-purge-bottom' => 'Unaposafisha ukurasa ghili yake inasafishwa na haririo la kisasa linaonekana.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Sawa',
+'confirm-watch-top' => 'Je, ukurasa huu uongezwe katika maangalizi yako?',
+'confirm-unwatch-button' => 'Sawa',
+'confirm-unwatch-top' => 'Ukurasa huu uondolewa katika orodha ya maangalizi yako?',
+
# Multipage image navigation
'imgmultipageprev' => '↠ukurasa uliotangulia',
'imgmultipagenext' => 'ukurasa ujao →',
@@ -2765,14 +2884,14 @@ Jaribu hakikisho la kawaida.',
'watchlistedit-normal-legend' => 'Kuondoa majina kwenye orodha ya maangalizi',
'watchlistedit-normal-explain' => 'Majina kwenye orodha ya maangalizi yako yapo chini.
Ili kuondoa jina, weka alama katika kisanduku chake, na bonyeza "{{int:Watchlistedit-normal-submit}}".
-Unaweza pia [[Special:Watchlist/raw|kuhariri orodha ya ghafi]].',
+Unaweza pia [[Special:EditWatchlist/raw|kuhariri orodha ya ghafi]].',
'watchlistedit-normal-submit' => 'Ondoa majina',
'watchlistedit-normal-done' => '{{PLURAL:$1|Jina 1 iliondolewa|Majina $1 yaliondolewa}} kutoka kwa orodha yako ya maangalizi:',
'watchlistedit-raw-title' => 'Kuhariri maangalizi ghafi',
'watchlistedit-raw-legend' => 'Kuhariri maangalizi ghafi',
'watchlistedit-raw-explain' => 'Majina ya kwenye ukurasa wako wa maangalizi yanaonekana hapo chini, na yanaweza kuharirika kwa kuongezea au hata kuondoa katika orodha; na liwe jina moja kwa mstari.
Ukimaliza, bonyeza "{{int:Watchlistedit-raw-submit}}".
-Pia unaweza [[Special:Watchlist/edit|kutumia kihariri cha kawaida]].',
+Pia unaweza [[Special:EditWatchlist|kutumia kihariri cha kawaida]].',
'watchlistedit-raw-titles' => 'Majina:',
'watchlistedit-raw-submit' => 'Sasisha orodha ya maangalizi',
'watchlistedit-raw-done' => 'Orodha yako ya maangalizi imesasishwa.',
@@ -2794,13 +2913,13 @@ Pia unaweza [[Special:Watchlist/edit|kutumia kihariri cha kawaida]].',
'version-other' => 'Zingine',
'version-version' => '(Toleo $1)',
'version-license' => 'Ruhusa',
-'version-poweredby-credits' => "Wiki hii inaendeshwa na bidhaa pepe ya '''[http://www.mediawiki.org/ MediaWiki]''', hakimiliki © 2001-$1 $2.",
+'version-poweredby-credits' => "Wiki hii inaendeshwa na bidhaa pepe ya '''[//www.mediawiki.org/ MediaWiki]''', hakimiliki © 2001-$1 $2.",
'version-poweredby-others' => 'wengine',
'version-license-info' => 'MediaWiki ni bidhaa pepe huru; unaweza kuisambaza pamoja na kuitumia na kuibadilisha kutokana na masharti ya leseni ya GNU General Public License inayotolewa na Free Software Foundation (Shirika la Bidhaa Pepe Huru); ama toleo 2 la hakimiliki, ama (ukitaka) toleo lolote linalofuata.
MediaWiki inatolewa kwa matumaini ya kwamba ni ya manufaa, lakini BILA JUKUMU; hata bila jukumu linalojitokeza la KUWA TAYARI KUUZIKA KIBIASHARA au KUFAA KWA KUSUDIO FULANI. Tazama leseni ya GNU General Public License kuona maelezo mengine.
-Huwa unapokea [{{SERVER}}{{SCRIPTPATH}}/COPYING nakala ya GNU General Public License] pamoja na programu hii; la sivyo, andika kuomba nakala kwa Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA au [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html uisome mkondoni].',
+Huwa unapokea [{{SERVER}}{{SCRIPTPATH}}/COPYING nakala ya GNU General Public License] pamoja na programu hii; la sivyo, andika kuomba nakala kwa Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA au [//www.gnu.org/licenses/old-licenses/gpl-2.0.html uisome mkondoni].',
'version-software' => 'Bidhaa pepe iliyosakinishwa',
'version-software-product' => 'Bidhaa',
'version-software-version' => 'Toleo',
@@ -2812,22 +2931,22 @@ Huwa unapokea [{{SERVER}}{{SCRIPTPATH}}/COPYING nakala ya GNU General Public Lic
'filepath-summary' => 'Ukurasa huu maalumu unarejesha njia kamili ya faili. Picha inaonyeshwa ukubwa wote, faili za aina zingine zinaanza na programu zake zinazohusiana moja kwa moja.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Tafuta mafaili ya nakili',
-'fileduplicatesearch-summary' => 'Kutafuta mafaili ya nakili kwa kuzingatia thamani za reli.
-
-Andika jina la faili bila kiambishi awali cha "{{ns:file}}:".',
-'fileduplicatesearch-legend' => 'Kutafuta kifani',
-'fileduplicatesearch-filename' => 'Jina la faili:',
-'fileduplicatesearch-submit' => 'Tafuta',
-'fileduplicatesearch-info' => 'Piseli $1 × $2<br />Ukubwa wa faili: $3<br />Aina ya MIME: $4',
-'fileduplicatesearch-result-1' => 'Faili la "$1" halina kifani.',
-'fileduplicatesearch-result-n' => 'Faili la "$1" lina {{PLURAL:$2|kifani 1|vifani $2}}.',
+'fileduplicatesearch' => 'Tafuta mafaili ya nakili',
+'fileduplicatesearch-summary' => 'Kutafuta mafaili ya nakili kwa kuzingatia thamani za reli.',
+'fileduplicatesearch-legend' => 'Kutafuta kifani',
+'fileduplicatesearch-filename' => 'Jina la faili:',
+'fileduplicatesearch-submit' => 'Tafuta',
+'fileduplicatesearch-info' => 'Piseli $1 × $2<br />Ukubwa wa faili: $3<br />Aina ya MIME: $4',
+'fileduplicatesearch-result-1' => 'Faili la "$1" halina kifani.',
+'fileduplicatesearch-result-n' => 'Faili la "$1" lina {{PLURAL:$2|kifani 1|vifani $2}}.',
+'fileduplicatesearch-noresults' => 'Faili linaloitwa "$1" halikupatikana.',
# Special:SpecialPages
'specialpages' => 'Kurasa maalum',
'specialpages-note' => '----
* Kurasa maalum ya kawaida.
-* <strong class="mw-specialpagerestricted">Kurasa maalum zisizoonekana na wote.</strong>',
+* <span class="mw-specialpagerestricted">Kurasa maalum zisizoonekana na wote.</span>
+* <span class="mw-specialpagecached">Kurasa maalum zinazotoka "cache" (might be obsolete).</span>',
'specialpages-group-maintenance' => 'Ripoti za kurekebisha na kutunza kurasa',
'specialpages-group-other' => 'Kurasa maalum zingine',
'specialpages-group-login' => 'Ingia / sajili akaunti',
diff --git a/languages/messages/MessagesSzl.php b/languages/messages/MessagesSzl.php
index 0c5a2637..05206863 100644
--- a/languages/messages/MessagesSzl.php
+++ b/languages/messages/MessagesSzl.php
@@ -151,14 +151,7 @@ $messages = array(
'listingcontinuesabbrev' => 'ć.d.',
'index-category' => 'Indeksowane zajty',
'noindex-category' => 'Ńyindeksowane zajty',
-
-'mainpagetext' => "'''Sztalowańy MediaWiki śe udoło.'''",
-'mainpagedocfooter' => 'Uobezdrzij [http://meta.wikimedia.org/wiki/Help:Contents przewodńik sprowjacza], kaj sům informacyje uo dźołańu uoprogramowańo MediaWiki.
-
-== Na sztart ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lista sztalowań konfiguracyje]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Komuńikaty uo nowych wersyjach MediaWiki]',
+'broken-file-category' => 'Zajty ze linkomi lo ńyistniejących ůobrozkůw',
'about' => 'Uo serwiśe',
'article' => 'zajta',
@@ -210,10 +203,10 @@ $messages = array(
'history' => 'Gyszichta zajty',
'history_short' => 'Gyszichta',
'updatedmarker' => 'pomjyńane uod uostatńij wizyty',
-'info_short' => 'Informacyjo',
'printableversion' => 'Wersyjo do durku',
'permalink' => 'Link do tyj wersyje zajty',
'print' => 'Durkuj',
+'view' => 'Podglůnd',
'edit' => 'Sprowjej',
'create' => 'Stwůrz',
'editthispage' => 'Sprowjej ta zajta',
@@ -221,6 +214,7 @@ $messages = array(
'delete' => 'Wyćep',
'deletethispage' => 'Wyćep ta zajta',
'undelete_short' => 'Wćep nazod {{PLURAL:$1|jedna wersyjo|$1 wersyje|$1 wersyji}}',
+'viewdeleted_short' => '{{PLURAL:$1|jedna wyćepano wersyjo|$1 wyćepane wersyje|$1 wyćepanych wersyjůw}}',
'protect' => 'Zawrzij',
'protect_change' => 'půmjyń',
'protectthispage' => 'Zawřij ta zajta',
@@ -302,6 +296,8 @@ $1',
'toc' => 'Treść',
'showtoc' => 'pokož',
'hidetoc' => 'schrůń',
+'collapsible-collapse' => 'Zwjyń',
+'collapsible-expand' => 'Rozwjyń',
'thisisdeleted' => 'Pokož/wćepej nazod $1',
'viewdeleted' => 'Uobejřij $1',
'restorelink' => '{{PLURAL:$1|jedna wyćepano wersyjo|$1 wyćepane wersyje|$1 wyćepanych wersyjůw}}',
@@ -313,6 +309,8 @@ $1',
'page-rss-feed' => 'Kanau RSS "$1"',
'page-atom-feed' => 'Kanoł Atom "$1"',
'red-link-title' => '$1 (Å„y mo zajty)',
+'sort-descending' => 'Sortuj malejÄ…co',
+'sort-ascending' => 'Sortuj rosnÄ…co',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Zajta',
@@ -394,7 +392,8 @@ Zapytańy: $2',
'cascadeprotected' => 'Ta zajta je zawarto uod sprowjaÅ„o, po takymu, co uůna je zauonÄono na {{PLURAL:$1|nastympujůncyj zajće, kero zostaua zawarto|nastympujůncych zajtach, kere zostauy zawarte}} ze zauonÄonům opcyjům dźedźiÄyÅ„o:
$2',
'namespaceprotected' => "Ńy moš uprowńyń, coby sprowjać zajty we přestřeńi mjan '''$1'''.",
-'customcssjsprotected' => 'Ńy moš uprawńyń do sprowjańo tyj zajty, bo na ńij sům uosobiste štalowańo inkšego užytkowńika.',
+'customcssprotected' => 'Ńy mosz uprawńyń do sprowjańo tyj zajty, bo na ńij sům uosobiste sztalowańo inkszego użytkowńika.',
+'customjsprotected' => 'Ńy mosz uprawńyń do sprowjańo tyj zajty, bo na ńij sům uosobiste sztalowańo inkszego użytkowńika.',
'ns-specialprotected' => 'Ńy idźe sprowjać zajtůw we přestřyni mjan {{ns:special}}.',
'titleprotected' => "Wćepańy sam zajty uo takim mjańe zawar [[User:$1|$1]].
Powůd zawarćo: ''$2''.",
@@ -432,6 +431,7 @@ Uotwarli my sam lo Ćebje kůnto.
'createaccount' => 'Zouůž nowe kůnto',
'gotaccount' => "Mosz już kůnto? '''$1'''.",
'gotaccountlink' => 'Naloguj śe',
+'userlogin-resetlink' => 'Zapomńoł żeś dane lo nalogowańo?',
'createaccountmail' => 'e-brifym',
'createaccountreason' => 'Kůmyntorz:',
'badretype' => 'Hasua kere žeś naškryflou ńy zgodzajům śe jydne s drugim.',
@@ -440,12 +440,13 @@ Uotwarli my sam lo Ćebje kůnto.
'createaccounterror' => 'Ńy możno stworzić konta $1',
'nocookiesnew' => 'Kůnto užytkowÅ„ika zostouo utwořůne, nale Å„y ježeÅ› zalůgowany. {{SITENAME}} užywo ćosteÄek do logůwaÅ„o. MoÅ¡ wyuůnÄone ćosteÄka. Coby Å›e zalůgować, uodymknij ćosteÄka a podej mjano a hasuo swojigo kůnta.',
'nocookieslogin' => '{{SITENAME}} užywo ćosteÄek do lůgowaÅ„o užytkowÅ„ikůw. MoÅ¡ zablokowano jejich uobsuůga. Sprůbuj zaÅ› jak zauůnÄyÅ¡ uobsuůga ćosteÄek.',
+'nocookiesfornew' => 'Konto sprowjorza ńy uostoło stworzone. Sprawdź, cze mosz uodymkńynto obsługe cookies.',
'noname' => 'To ńy je půprowne mjano užytkowńika.',
'loginsuccesstitle' => 'Lůgowańy udane',
'loginsuccess' => "'''Terozki ježeś zalůgowany do {{SITENAME}} jako \"\$1\".'''",
'nosuchuser' => 'Ńy ma sam użytkowńika uo mjańe "$1".
Sprowdź szrajbůng, abo [[Special:UserLogin/signup|utwůrz nowe kůnto]].',
-'nosuchusershort' => 'Ńy mo sam užytkowńika uo mjańe "<nowiki>$1</nowiki>".',
+'nosuchusershort' => 'Ńy mo sam užytkowńika uo mjańe "$1".',
'nouserspecified' => 'Podej mjano užytkowńika.',
'login-userblocked' => 'Tyn sprowjorz ma zawrzite sprowjyńa. Ńy możno sie zalgować.',
'wrongpassword' => 'Hasuo kere žeÅ› naÅ¡kryflou je felerne. Poprůbůj naÅ¡kryflać je jeÅ¡Äe roz.',
@@ -485,13 +486,14 @@ Coby powstřimać nadužyća, možliwość wysyuańa připůmńeń naštalowano
'createaccount-text' => 'Ktoś utwořiu na {{GRAMMAR:MS.lp|{{SITENAME}}}} ($4) dla Twojego adresa e-brif kůnto "$2". Aktualne hasuo to "$3". Powińežeś śe terozki zalogůwać a je zmjyńić.',
'usernamehasherror' => 'Nazwa sprowjorza ńy może mjyć buchsztaby "#".',
'login-throttled' => '!Wykonołżeś za wjela průb zalůgowańo śe na te kůnto. Poczekej chwila ńym zaś sprůbujesz.',
+'login-abort-generic' => 'Felerne logowańe',
'loginlanguagelabel' => 'Godka: $1',
'suspicious-userlogout' => 'Żądanie wylogowania zostało odrzucone ponieważ wygląda na to, że zostało wysłane przez uszkodzoną przeglądarkę lub buforujący serwer proxy.',
# E-mail sending
'php-mail-error-unknown' => 'Ńyznany feler we funkcyji mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Zmjyń hasło',
'resetpass_announce' => 'ZalůgowoužeÅ› Å›e s tymÄasowym kodym uotÅ™imanym bez e-brif. Coby zakůńÄyć proces logůwaÅ„o muÅ›iÅ¡ naÅ¡talować nowe hasuo:',
'resetpass_header' => 'Zmjyń hasło lů swojygo kůnta',
@@ -508,6 +510,30 @@ Coby powstřimać nadužyća, možliwość wysyuańa připůmńeń naštalowano
Możliwe co właśńy zmjyńiłżeś swoje hasło abo poprosiłżeś uo nowe tymczasowe hasło.',
'resetpass-temp-password' => 'Tymczasowe hasło:',
+# Special:PasswordReset
+'passwordreset' => 'Wyczyść hasło',
+'passwordreset-text' => 'WypeÅ‚nij formularz, aby otrzymać eâ€mail z przypomnieniem danych Twojego konta.',
+'passwordreset-legend' => 'Wyczyść hasło',
+'passwordreset-disabled' => 'No tyj wiki zamkńynto resytowańy hasył.',
+'passwordreset-pretext' => '{{PLURAL:$1||Wćep jydną z danych}}',
+'passwordreset-username' => 'Mjano używacza:',
+'passwordreset-domain' => 'Domyna:',
+'passwordreset-email' => 'E-brif:',
+'passwordreset-emailtitle' => 'Kůnto na {{GRAMMAR:MS.lp|{{SITENAME}}}}',
+'passwordreset-emailtext-ip' => 'Ftůś (cheba Ty, s IP $1)
+pado, aże chce informacyji lo konta do {{GRAMMAR:MS.lp{{SITENAME}}}} ($4).
+Z tem ausdrukiem sum powjonzyne konta:
+$2
+
+{{PLURAL:$3|Tymczasowygo hasła|Tymczasowych haseł}} możno użyć w ciągu {{PLURAL:$5|jednego dnia|$5 dni}}.
+
+Jak chćołżeś gynał to zrobjyć, to zalůgůj śe terozki a podej swoje hasło.
+
+Jak ktůś inkszy chćoł nowe hasło abo jak Ci śe przipůmńouo stare a ńy chcesz nowygo, to zignoruj to a używej starygo hasła.',
+'passwordreset-emailelement' => 'Nazwa sprowjorza: $1
+Tymczasowe hasło: $2',
+'passwordreset-emailsent' => 'E-brif posłany.',
+
# Edit page toolbar
'bold_sample' => 'Ruby tekst',
'bold_tip' => 'Ruby tekst',
@@ -519,8 +545,6 @@ Możliwe co właśńy zmjyńiłżeś swoje hasło abo poprosiłżeś uo nowe tym
'extlink_tip' => 'Eksterny link (pamjyntej uo prefikśe http:// )',
'headline_sample' => 'Tekst iberszryftu',
'headline_tip' => 'Iberszryft 2. stůpńo',
-'math_sample' => 'Sam tukej wprowadź wzůr',
-'math_tip' => 'Wzůr matymatyÄny (LaTeX)',
'nowiki_sample' => 'Wćepej sam tekst bez formatowańo',
'nowiki_tip' => 'Zignoruj formatowańy wiki',
'image_tip' => 'Plik uosadzůny we zajće',
@@ -595,7 +619,7 @@ Eli jeżeś anůnimowym użytkowńikym a wydowo Ći śe, aże zamjyszczůne sam
'noarticletext-nopermission' => 'Na tyj zajće ńy mo jeszcze artikla.
Mogesz [[Special:Search/{{PAGENAME}}|wysznupać ta titla]] we treśći inkszych zajtůw
abo <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} przesznupać powjůnzane logi].</span>',
-'userpage-userdoesnotexist' => 'Užytkowńik "$1" ńy je zareještrowany. Sprowdź eli na pewno chćoužeś stwořyć/pomjynić gynau ta zajta.',
+'userpage-userdoesnotexist' => 'Užytkowńik "<nowiki>$1</nowiki>" ńy je zareještrowany. Sprowdź eli na pewno chćoužeś stwořyć/pomjynić gynau ta zajta.',
'userpage-userdoesnotexist-view' => "Konto sprowjorza ''$1'' Å„y istnieje.",
'blocked-notice-logextract' => '{{GENDER:$1|Tyn sprowjorz|Ta sprowjorka}} mo zawrzite sprowjyńa.',
'clearyourcache' => "!'''Dej pozůr:''' Coby Å‚obejrzeć pomjyÅ„aÅ„o pů naszkryflaÅ„u nowych sztalowaÅ„ poleć przeglůndorce wyczyśćić zawartość pamjyńći podryncznyj (cache). '''Mozilla / Firefox / Safari:''' przitrzimej ''Shift'' klikajůnc na ''ÅodÅ›wjyž'' abo wciÅ› ''Ctrl-Shift-R'' (''Cmd-Shift-R'' na Macu), '''IE :''' przitrzimej ''Ctrl'' klikajůnc na ''ÅodÅ›wjyž'' abo wciÅ› ''Ctrl-F5''; '''Konqueror:''': kliknij knefel ''ÅodÅ›wjyž'' abo wciÅ› ''F5''; użytkowÅ„icy '''Opery''' mogům być zmuszeÅ„i coby coÅ‚kym wyczyśćić jejich pamjyńć podrynczno we menu ''Werkcojgi→Preferencyje''.; '''Internet Explorer:''' trzim ''Ctrl'' a wćiÅ› ''ÅodÅ›wjyż'', abo wćiÅ› ''Ctrl-F5''.",
@@ -664,6 +688,7 @@ Možeš sprowjać te co juž sům, abo [[Special:UserLogin|zalogować śe, abo z
Zastanůw śe, czy powinno śe go sam wćepywać.
Rejer wyćepań tyj zajty je podany půńiżej, cobyś mioł wygoda:",
'moveddeleted-notice' => 'Ta zajta zostoua wyćepńynto. Rejer wyćepań tyj zajty je pokozany půńižyj.',
+'log-fulllog' => 'Ukoż rejer',
'edit-hook-aborted' => 'Sprowjyńy štopńynte skiž hoka.
Ńy je wjadůme pů jakymu.',
'edit-gone-missing' => 'Ńy idźe zaktualizować zajty.
@@ -731,7 +756,7 @@ Můgua zostać wyćepano abo přećepano pod inkše mjano.
Možeš tyž [[Special:Search|šnupać]] za tům zajtům.',
# Revision deletion
-'rev-deleted-comment' => '(kůmyntoř wyćepany)',
+'rev-deleted-comment' => '(kůmyntorz wyćepany)',
'rev-deleted-user' => '(užytkowńik wyćepany)',
'rev-deleted-event' => '(škryflańy wyćepane)',
'rev-deleted-text-permission' => 'Wersyjo tyj zajty uostoua wyćepano a Å„y je dostympna publiÄÅ„y. Å Äygůuy idźe znejść we [{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} rejeÅ™e wyćepaÅ„].',
@@ -754,14 +779,20 @@ Inkśi admińistratoři {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp
'revdelete-hide-comment' => 'Schrůń kůmyntoř sprowjyńo',
'revdelete-hide-user' => 'Schrůń mjano užytkowńika/adres IP',
'revdelete-hide-restricted' => 'Wprowadź te uograÅ„iÄyÅ„o zarůwno lo admiÅ„istratorůw jak i lo inkÅ¡ych',
+'revdelete-radio-set' => 'Ja',
+'revdelete-radio-unset' => 'Ńy',
'revdelete-suppress' => 'Schrůń informacyje zarůwno před admińistratorůma jak i před inkšymi',
'revdelete-unsuppress' => 'Usůń uograÅ„iÄyÅ„o lo wćepanej nazod historyje pomjyÅ„aÅ„',
'revdelete-log' => 'ÄŒymu:',
-'revdelete-submit' => 'Zaakceptuj do wybranych wersyji',
+'revdelete-submit' => 'Zaakceptuj do wybrany{{PLURAL:$1|j wersyji|ch wersyji}}',
'revdelete-logentry' => 'půmjyńůno widoÄność wersyji w [[$1]]',
'logdelete-logentry' => 'půmjyńůno widoÄność zdoÅ™yńůw w [[$1]]',
-'revdelete-success' => 'PůmyÅ›lÅ„y zmjyńůno widoÄność wersyji.',
+'revdelete-success' => 'Půmyślńy zmjyńůno widoczność wersyji.',
+'revdelete-failure' => 'Feler przi zmjyńůńu widoczności wersyji.
+$1',
'logdelete-success' => 'PůmyÅ›lÅ„y půmjyńůno widoÄność zdaÅ™yÅ„',
+'logdelete-failure' => 'Feler przi zmjyńe widoczości rejera.
+$1',
'revdel-restore' => 'půmjyń widoczność',
'revdel-restore-deleted' => 'wyćepane wersyje',
'revdel-restore-visible' => 'widoczne wersyje',
@@ -776,11 +807,24 @@ Inkśi admińistratoři {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp
'revdelete-unhid' => 'ńy schrůńaj $1',
'revdelete-log-message' => '$1 - $2 {{PLURAL:$2|wersyjo|wersyji|wersjůw}}',
'logdelete-log-message' => '$1 - $2 {{PLURAL:$2|zdařyńe|zdařyńa|zdařyń}}',
+'revdelete-hide-current' => 'Feler przi wyćepywańu wersyji $2, $1.',
+'revdelete-show-no-access' => 'Feler przy ukozoniu wersyji $2, $1. Ńy mosz uprawńyń lo njygo.',
+'revdelete-modify-no-access' => 'Feler przy zmjyńe widoczności wersyji $2, $1. Ńy mosz uprawńeń lo njygo.',
+'revdelete-modify-missing' => 'Feler. Ńy mo elementu $1 w bazie.',
+'revdelete-no-change' => "''''Dej pozůr''': element $2, $1 mo już ustawjonům widoczność.",
+'revdelete-concurrent-change' => 'Feler. Pomjyno już element $2, $1. Prosza uoboczyć to w rejerze.',
+'revdelete-only-restricted' => 'Ńy możno ukryć elementu $2, $1 przed administracyjom. Wybjer jydnom ze opcyji.',
+'revdelete-reason-dropdown' => '* Kůmyntorze lo wyćepańa
+** NPA
+** Prywatność',
+'revdelete-otherreason' => 'Inkszy/dodatkowy powůd:',
+'revdelete-reasonotherlist' => 'Inkszy powůd',
'revdelete-edit-reasonlist' => 'Sprowjańe powodůw wyćepańo zajty',
+'revdelete-offender' => 'Autor wersyji:',
# Suppression log
'suppressionlog' => 'Log schrůńyńć',
-'suppressionlogtext' => 'Půńižyj je lista nojnowšych wyćepań i zawarć s uwzglyndńyńym treśći schrůńůnej do admińistratorůw. Coby přejřeć lista aktualnych banůw i zawarć, uobezdřij [[Special:IPBlockList|IP block list]].',
+'suppressionlogtext' => 'Půńiżyj je lista nojnowszych wyćepań i zawarć s uwzglyndńyńym treśći schrůńůnej lo admińistratorůw. Coby przřejrzeć lista aktualnych banůw i zawarć, uobezdrzij [[Special:BlockList|IP block list]].',
# History merging
'mergehistory' => 'PouůnÄ historyjo půmjyÅ„aÅ„ zajtůw',
@@ -802,6 +846,7 @@ Inkśi admińistratoři {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp
'mergehistory-autocomment' => 'Historyjo [[:$1]] scalono ze [[:$2]]',
'mergehistory-comment' => 'Historyjo [[:$1]] pouůnÄůno ze [[:$2]]: $3',
'mergehistory-same-destination' => 'Zajta zdřuduowo a docelowo ńy mogům być te same.',
+'mergehistory-reason' => 'Kůmyntorz:',
# Merge log
'mergelog' => 'PouůnÄůne',
@@ -810,12 +855,15 @@ Inkśi admińistratoři {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp
'mergelogpagetext' => 'Půńižej znojduje Å›e lista uostatÅ„ich pouůnÄyÅ„ historyji půmjyÅ„aÅ„ zajtůw.',
# Diffs
-'history-title' => 'Historyjo sprowjyń "$1"',
-'difference' => '(Růžńice mjyndzy škryflańami)',
-'lineno' => 'Lińijo $1:',
-'compareselectedversions' => 'zrůwnej uobrane wersyje',
-'editundo' => 'uodćepej',
-'diff-multi' => '(Ńy pokozano {{PLURAL:$1|jydnyj wersyji postrzedńij|$1 wersyji postrzedńich}}, sprowjanej bez {{PLURAL:$2|jydnygo sprowjorza|$2 sprowjorzow}} .)',
+'history-title' => 'Historyjo sprowjyń "$1"',
+'difference' => '(Růžńice mjyndzy škryflańami)',
+'difference-multipage' => '(Porůwnańje zajt)',
+'lineno' => 'Lińijo $1:',
+'compareselectedversions' => 'zrůwnej uobrane wersyje',
+'showhideselectedversions' => 'Ukoż/ukryj uobrane wersyje',
+'editundo' => 'uodćepej',
+'diff-multi' => '(Ńy pokozano {{PLURAL:$1|jydnyj wersyji postrzedńij|$1 wersyji postrzedńich}}, sprowjanej bez {{PLURAL:$2|jydnygo sprowjorza|$2 sprowjorzow}} .)',
+'diff-multi-manyusers' => '(Ńy pokozano {{PLURAL:$1|jydnyj wersyji postrzedńij|$1 wersyji postrzedńich}}, sprowjanej bez {{PLURAL:$2|jydnygo sprowjorza|$2 sprowjorzow}} .)',
# Search results
'searchresults' => 'Wyńiki sznupańo',
@@ -862,6 +910,7 @@ Inkśi admińistratoři {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp
'search-mwsuggest-disabled' => 'ńy mo sůgestyji',
'search-relatedarticle' => 'Podane',
'mwsuggest-disable' => 'WyuůnÄ sůgestyje AJAX',
+'searcheverything-enable' => 'Sznupej we wszech mjan',
'searchrelated' => 'podane',
'searchall' => 'wszyjske',
'showingresults' => "To lista na keryj je {{PLURAL:$1|'''1''' wyÅ„ik|'''$1''' wyÅ„ikůw}}, poÄynojůnc uod nůmeru '''$2'''.",
@@ -874,6 +923,9 @@ Inkśi admińistratoři {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp
'powersearch-ns' => 'Šnupej we přestřyńach mjan:',
'powersearch-redir' => 'Pokož překerowańa',
'powersearch-field' => 'Å nupej',
+'powersearch-togglelabel' => 'Zaznocz:',
+'powersearch-toggleall' => 'Wszyjsko',
+'powersearch-togglenone' => 'żodno',
'search-external' => 'Šnupańy zewnyntřne',
'searchdisabled' => 'Å nupaÅ„y we {{GRAMMAR:MS.lp|{{SITENAME}}}} zostouo zawarte. ZaÅ„im go zouůnÄům, možeÅ¡ sprůbować Å¡nupaÅ„o bez Google. Ino zauwaž, co informacyje uo treśći {{GRAMMAR:MS.lp|{{SITENAME}}}} můgům być we Google Å„yakuratne.',
@@ -886,71 +938,85 @@ Inkśi admińistratoři {{GRAMMAR:D.lp|{{SITENAME}}}} dali bydům mjeć dostymp
'qbsettings-floatingright' => 'Unošůncy śe, s prawyj',
# Preferences page
-'preferences' => 'Preferyncyje',
-'mypreferences' => 'Moje preferyncyje',
-'prefs-edits' => 'LiÄba sprowjyÅ„:',
-'prefsnologin' => 'Ńy ježeś zalůgowany',
-'prefsnologintext' => 'Muśiš śe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} zalůgować]</span> coby štalować swoje preferyncyje.',
-'changepassword' => 'Zmjana hasua',
-'prefs-skin' => 'Skůrka',
-'skin-preview' => 'podglůnd',
-'prefs-math' => 'Wzory',
-'datedefault' => 'Důmyślny',
-'prefs-datetime' => 'Data a czas',
-'prefs-personal' => 'Dane užytkowńika',
-'prefs-rc' => 'Ńydowno pomjyńane',
-'prefs-watchlist' => 'Pozůrlista',
-'prefs-watchlist-days' => 'LiÄba dÅ„i widoÄnych na liśće artikli, na kere dowoÅ¡ pozůr:',
-'prefs-watchlist-days-max' => 'Maksimum 7 dńi',
-'prefs-watchlist-edits' => 'LiÄba půmjyÅ„aÅ„ pokazywanych we rozÅ¡yřůnyj liśće artiklůw, na kere dowoÅ¡ pozůr:',
-'prefs-watchlist-edits-max' => 'Maksymalno liczba: 1000',
-'prefs-misc' => 'Roztůmajte',
-'prefs-resetpass' => 'Zmjyń hasło',
-'saveprefs' => 'Naškryflej',
-'resetprefs' => 'Preferencyje důmyślne',
-'prefs-editing' => 'Sprowjańy',
-'prefs-edit-boxsize' => 'Rozmjor uokna edycyji.',
-'rows' => 'Wjerše:',
-'columns' => 'Kůlumny:',
-'searchresultshead' => 'Šnupańy',
-'resultsperpage' => 'LiÄba wyÅ„ikůw na zajće',
-'contextlines' => 'Pjyrše wjerše artikla',
-'contextchars' => 'Buchštaby kůnteksta we lińijce',
-'stub-threshold' => 'Maksymalny rozmjar artikla uoznaÄanygo kej <a href="#" class="stub">stub (kůnsek)</a>',
-'recentchangesdays' => 'LiÄba dÅ„i do pokazaÅ„o we půmjyÅ„anych na uostatku:',
-'recentchangesdays-max' => '(maksymalńy $1 {{PLURAL:$1|dźyń|dńi}})',
-'recentchangescount' => 'LiÄba pozycyji na liśće půmjyÅ„anych na uostatku, we historyje zajtůw a zajtach rejerůw:',
-'savedprefs' => 'Twoje štalowańo we preferyncyjach zostouy naškryflane.',
-'timezonelegend' => 'Strefa Äasowo',
-'localtime' => 'Lokalny czas:',
-'timezoneuseserverdefault' => 'Użyj domyślnygo czasu serwera',
-'timezoneuseoffset' => 'Inkszo (uokryśl różnica czasu)',
-'timezoneoffset' => 'Dyferencyjo ¹:',
-'servertime' => 'Czas serwera:',
-'guesstimezone' => 'Pobjer z přeglůndarki',
-'timezoneregion-africa' => 'Afrika',
-'timezoneregion-europe' => 'Ojropa',
-'allowemail' => 'Inkśi užytkowńicy můgům přesyuać mje e-brify',
-'prefs-searchoptions' => 'Uopcyje šnupańo',
-'prefs-namespaces' => 'Přystřyńe mjan',
-'defaultns' => 'Důmyślńy šnupej we nastympujůncych přystřyńach mjan:',
-'default' => 'důmyślńy',
-'prefs-files' => 'Pliki',
-'youremail' => 'E-brif:',
-'username' => 'Mjano užytkowńika:',
-'uid' => 'ID užytkowńika:',
-'prefs-memberingroups' => 'Naležy do {{PLURAL:$1|grupy|grup:}}',
-'yourrealname' => 'Prawdźiwe mjano',
-'yourlanguage' => 'Godka interfejsu',
-'yournick' => 'Twoja Å¡rajba:',
-'badsig' => 'Felerno Å¡rajba, sprowdź znaÄÅ„iki HTML.',
-'badsiglength' => 'Twůj šrajbůng je za dugi. Maksymalno jego dugość to $1 {{PLURAL:$1|buchštaby|buchštabůw}}',
-'gender-male' => 'chop',
-'gender-female' => 'baba',
-'email' => 'E-brif',
-'prefs-help-realname' => '* Mjano a nazwisko (uopcjůnalńy): jak žeś zdecydowou aže je podoš, bydům užyte, coby Twoja robota mjoua atrybucyjo.',
-'prefs-help-email' => 'Podowańy e-brifa je upcjůnalne, nale pozwoli na wysuańy Ći bez e-brif nowygo hasua w raźe jakbyś je zopomńou. Možeš tyž dozwolić inkšym užytkowńikům na kůntakt s Tobům bez e-brif, a ńy bydźe ůun udostympńůny.',
-'prefs-help-email-required' => 'Wymogany je adres e-brifa.',
+'preferences' => 'Preferyncyje',
+'mypreferences' => 'Moje preferyncyje',
+'prefs-edits' => 'LiÄba sprowjyÅ„:',
+'prefsnologin' => 'Ńy ježeś zalůgowany',
+'prefsnologintext' => 'Muśiš śe <span class="plainlinks">[{{fullurl:{{#Special:UserLogin}}|returnto=$1}} zalůgować]</span> coby štalować swoje preferyncyje.',
+'changepassword' => 'Zmjana hasua',
+'prefs-skin' => 'Skůrka',
+'skin-preview' => 'podglůnd',
+'datedefault' => 'Důmyślny',
+'prefs-beta' => 'Testowe funkcyje',
+'prefs-datetime' => 'Data a czas',
+'prefs-labs' => 'Funkcyje "labs"',
+'prefs-personal' => 'Dane užytkowńika',
+'prefs-rc' => 'Ńydowno pomjyńane',
+'prefs-watchlist' => 'Pozůrlista',
+'prefs-watchlist-days' => 'LiÄba dÅ„i widoÄnych na liśće artikli, na kere dowoÅ¡ pozůr:',
+'prefs-watchlist-days-max' => 'Maksimum 7 dńi',
+'prefs-watchlist-edits' => 'LiÄba půmjyÅ„aÅ„ pokazywanych we rozÅ¡yřůnyj liśće artiklůw, na kere dowoÅ¡ pozůr:',
+'prefs-watchlist-edits-max' => 'Maksymalno liczba: 1000',
+'prefs-watchlist-token' => 'ID půzorlisty:',
+'prefs-misc' => 'Roztůmajte',
+'prefs-resetpass' => 'Zmjyń hasło',
+'prefs-email' => 'E-brif',
+'prefs-rendering' => 'Wyglůnd',
+'saveprefs' => 'Naškryflej',
+'resetprefs' => 'Preferencyje důmyślne',
+'restoreprefs' => 'Wćep wszyjskie důmyślne preferencyje',
+'prefs-editing' => 'Sprowjańy',
+'prefs-edit-boxsize' => 'Rozmjor uokna edycyji.',
+'rows' => 'Wjerše:',
+'columns' => 'Kůlumny:',
+'searchresultshead' => 'Šnupańy',
+'resultsperpage' => 'LiÄba wyÅ„ikůw na zajće',
+'stub-threshold' => 'Maksymalny rozmjar artikla uoznaÄanygo kej <a href="#" class="stub">stub (kůnsek)</a>',
+'stub-threshold-disabled' => 'Uodymkńynte',
+'recentchangesdays' => 'LiÄba dÅ„i do pokazaÅ„o we půmjyÅ„anych na uostatku:',
+'recentchangesdays-max' => '(maksymalńy $1 {{PLURAL:$1|dźyń|dńi}})',
+'recentchangescount' => 'Liczba pozycyji na liśće půmjyńanych na uostatku, we historyje zajtůw a zajtach rejerůw:',
+'prefs-help-recentchangescount' => 'Ze listům ńydawnych pomjyńan, gyszichta zajt a rejer.',
+'savedprefs' => 'Twoje štalowańo we preferyncyjach zostouy naškryflane.',
+'timezonelegend' => 'Strefa czasowo',
+'localtime' => 'Lokalny czas:',
+'timezoneuseserverdefault' => 'Użyj domyślnygo czasu serwera ($1)',
+'timezoneuseoffset' => 'Inkszo (uokryśl różnica czasu)',
+'timezoneoffset' => 'Dyferencyjo ¹:',
+'servertime' => 'Czas serwera:',
+'guesstimezone' => 'Pobjer z přeglůndarki',
+'timezoneregion-africa' => 'Afrika',
+'timezoneregion-america' => 'Ameryka',
+'timezoneregion-antarctica' => 'Antarktyda',
+'timezoneregion-arctic' => 'Arktyka',
+'timezoneregion-asia' => 'Azyjo',
+'timezoneregion-atlantic' => 'Uoceon Atlantycki',
+'timezoneregion-australia' => 'Australyjo',
+'timezoneregion-europe' => 'Ojropa',
+'timezoneregion-indian' => 'Ocean Indyjski',
+'timezoneregion-pacific' => 'Uocean Spokojny',
+'allowemail' => 'Inkśi užytkowńicy můgům přesyuać mje e-brify',
+'prefs-searchoptions' => 'Uopcyje šnupańo',
+'prefs-namespaces' => 'Přystřyńe mjan',
+'defaultns' => 'Důmyślńy sznupej we nastympujůncych przystrzyńach mjan:',
+'default' => 'důmyślńy',
+'prefs-files' => 'Pliki',
+'youremail' => 'E-brif:',
+'username' => 'Mjano užytkowńika:',
+'uid' => 'ID užytkowńika:',
+'prefs-memberingroups' => 'Naležy do {{PLURAL:$1|grupy|grup:}}',
+'yourrealname' => 'Prawdźiwe mjano',
+'yourlanguage' => 'Godka interfejsu',
+'yournick' => 'Twoja Å¡rajba:',
+'badsig' => 'Felerno Å¡rajba, sprowdź znaÄÅ„iki HTML.',
+'badsiglength' => 'Twůj šrajbůng je za dugi. Maksymalno jego dugość to $1 {{PLURAL:$1|buchštaby|buchštabůw}}',
+'gender-male' => 'chop',
+'gender-female' => 'baba',
+'email' => 'E-brif',
+'prefs-help-realname' => '* Mjano a nazwisko (uopcjůnalńy): jak žeś zdecydowou aže je podoš, bydům užyte, coby Twoja robota mjoua atrybucyjo.',
+'prefs-help-email' => 'Ukozańy e-brifowygo adresu ńy je powinne, nale nutne, coby resetować ausdruk, eli zapomńisz.',
+'prefs-help-email-others' => 'Mogesz tyż uůmożnić inkszym używoczům posłać ci e-brif bez twojo zajta używocza abo zajta dyskusyje. Twůj e-brifowy adres śe ńy ukoże.',
+'prefs-help-email-required' => 'Wymogany je adres e-brifa.',
# User rights
'userrights' => 'Zařůndzańy prowami užytkowńikůw',
@@ -1212,10 +1278,6 @@ Idź nazod i wćepej tyn plik pod inkšym mjanym. [[File:$1|thumb|center|$1]]',
'upload-maxfilesize' => 'Maksymalny rozmior plika: $1',
'watchthisupload' => 'Dowej pozůr na ta zajta',
'filewasdeleted' => 'Plik uo takym mjańy juž bůu sam wćepany, ale zostou wyćepńjynty. Ńim wćepńeš go zaś, sprowdź $1.',
-'upload-wasdeleted' => "'''Uostřežyńy: Wćepuješ sam plik, kery bůu popředńo wyćepany.'''
-
-Zastanůw Å›e, Äy powinno Å›e go sam wćepywać.
-Rejer wyćepań tygo plika je podany půńižej, cobyś miou wygoda:",
'filename-bad-prefix' => "Mjano plika, kery wćepujeÅ¡, zaÄyno Å›e uod '''\"\$1\"''' &ndash; je to mjano nojÄynśćy pÅ™ipisywane autůmatyÄÅ„y bez cyfrowe fotoaparaty, uůno Å„y dowo žodnych informacyji uo zawartośći plika. ProÅ¡ymy cobyÅ› nadou plikowi inkÅ¡e, lepij zrozůmjaue mjano.",
'upload-success-subj' => 'Wćepańe plika udouo śe',
@@ -1273,7 +1335,6 @@ Půńižšo lista pokozuje yno {{PLURAL:$1|pjyršy link|pjyrše $1 linki|pjyršy
Dostympno je tyž [[Special:WhatLinksHere/$2|pouno lista]].',
'nolinkstoimage' => 'Žodno zajta ńy je adrésowano do tygo plika.',
'morelinkstoimage' => 'Pokož [[Special:WhatLinksHere/$1|wjyncy uodnośnikůw]] do tygo plika.',
-'redirectstofile' => '{{PLURAL:$1|Nastympujůncy plik překerowuje|Nastympujůnce pliki překerowujům}} ku tymu plikowi:',
'duplicatesoffile' => '{{PLURAL:$1|Nastympujůncy plik je kopjům|Nastympujůnce pliki sům kopjůma}} tygo plika:',
'sharedupload' => 'Tyn plik je wćepńynty na $1 a inksze projekty tyż go mogům używać.',
'sharedupload-desc-here' => 'Tyn plik śe nałoźi na $1 a idzie go użyć we inkszych projektach.
@@ -1547,10 +1608,8 @@ Adres e-brifa, kery zostoł bez Ćebje wkludzůny we [[Special:Preferences|Twoji
'watchlistanontext' => '$1 coby uobejřeć abo sprowjać elymynty listy zajtůw, na kere dowoš pozůr',
'watchnologin' => 'Ńy jest žeś zalůgowany',
'watchnologintext' => 'Muśyš śe [[Special:UserLogin|zalůgować]] coby modyfikować lista zajtůw, na kere dowoš pozůr.',
-'addedwatch' => 'Dodane do pozorlisty',
'addedwatchtext' => "Zajta \"[[:\$1]]\" zostoua dodano do Twojij [[Special:Watchlist|listy artiklůw, na kere dowoš pozůr]].
Na tyi liśće bydźeš mjou rejer přišuych sprowjyń tyi zajty i jeji zajty godki, a mjano zajty bydźeš mjou škryflane '''tustym''' na [[Special:RecentChanges|liśće půmjyńanych na ůostatku]], cobyś mjou wygoda w jei pomjyńańa filować.",
-'removedwatch' => 'Wyćepńjynte s pozorlisty',
'removedwatchtext' => 'Artikel "[[:$1]]" zostou wyćepńjynty s [[Special:Watchlist|Twojij pozorlisty]].',
'watch' => 'Dej pozůr',
'watchthispage' => 'Dej pozůr',
@@ -1603,10 +1662,10 @@ Možeš tyž zresetować wšyjstke flagi powjadůmjyń na swojej liśće zajtůw
--
Kejbyś chćou půmjyńić štalowańo swojej listy zajtůw, na kere dowoš pozůr, uodwjydź
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Pomoc:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Wyćep artikel',
@@ -1621,7 +1680,7 @@ Pomoc:
'confirmdeletetext' => 'Chceš wyćepnůńć trwale artikel abo plik s bazy danych s historią. Pokož, aže wjyš co robdza, i to aže to je tak jak godojům [[{{MediaWiki:Policy-url}}|zasady]].',
'actioncomplete' => 'Fertig',
'actionfailed' => 'Ńy udało sie.',
-'deletedtext' => 'Wyćepano "<nowiki>$1</nowiki>". Rejer uostatnio zrobiůnych wyćepań možeš uobejžyć tukej: $2.',
+'deletedtext' => 'Wyćepano "$1". Rejer uostatnio zrobiůnych wyćepań možeš uobejžyć tukej: $2.',
'deletedarticle' => 'wyciepnjynto "[[$1]]"',
'suppressedarticle' => 'utajńjyu [[$1]]',
'dellogpage' => 'Wyćepane',
@@ -1677,7 +1736,7 @@ Coby přejřeć lista uobecńy zawartych zajtůw, přeńdź na zajta wykazu [[Sp
'protectexpiry' => 'Wygaso:',
'protect_expiry_invalid' => 'Čas wygaśńjyńćo je zuy.',
'protect_expiry_old' => 'Čas wygaśńjyńćo je w downiej ńiž terozki.',
-'protect-text' => "Sam tukej možyš uobejžeć i pomjyńyć poźům zawarcia zajty '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Sam tukej možyš uobejžeć i pomjyńyć poźům zawarcia zajty '''$1'''.",
'protect-locked-blocked' => "Ńy možeš půmjyńać poźůmůw zawarćo kej žeś sům je zawarty uod sprowjyń. Terozki štalowańa dla zajty '''$1''' to:",
'protect-locked-dblock' => "Ńy idźe půmjyńić poźůmu zawarća s kuli tygo co baza danych tyž je zawarto. Uobecne štalowańa dla zajty '''$1''' to:",
'protect-locked-access' => "Ńy moš uprowńyń coby pomjyńyć poziům zawarcia zajty. Uobecne ustawjyńo dlo zajty '''$1''' to:",
@@ -1828,7 +1887,6 @@ $1',
'blockiptext' => 'Tyn formulař suužy do zawjerańo sprowjyń spod uokreślůnygo adresu IP abo kůnkretnymu užytkowńikowi.
Zawjerać noležy jydyńy po to, by zapobjec wandalizmům, zgodńy s [[{{MediaWiki:Policy-url}}|přijyntymi zasadami]].
Podej powůd (np. umjeÅ¡Äajůnc mjana zajtůw, na kerych dopuÅ¡Äůno Å›e wandalizmu).',
-'ipaddress' => 'Adres IP',
'ipadressorusername' => 'Adres IP abo mjano užytkowńika',
'ipbexpiry' => 'Wygaso:',
'ipbreason' => 'ÄŒymu:',
@@ -1843,7 +1901,6 @@ Podej powůd (np. umjeÅ¡Äajůnc mjana zajtůw, na kerych dopuÅ¡Äůno Å›e wanda
** Wprowadzańy foušywych informacyji
** Wulgaryzmy
** Wypisywańy guůpot na zajtach',
-'ipbanononly' => 'Zawřij sprawjyńo ino anůńimowym užytkowńikům',
'ipbcreateaccount' => 'Ńy dozwůl utwožyć kůnta',
'ipbemailban' => 'Zawřij možliwość wysůuańo e-brifůw',
'ipbenableautoblock' => 'ZawÅ™ij uostatÅ„i adres IP tygo užytkowÅ„ika i autůmatyÄÅ„y wÅ¡yjstke kolejne, s kerych bydźe průbowou sprowjać zajty',
@@ -1854,7 +1911,6 @@ Podej powůd (np. umjeÅ¡Äajůnc mjana zajtůw, na kerych dopuÅ¡Äůno Å›e wanda
'ipbotherreason' => 'Inkšy powůd:',
'ipbhidename' => 'Schrůń mjano užytkowńika/adres IP w rejeře zawarć, na liśće aktywnych zawarć i liśće užytkowńikůw',
'ipbwatchuser' => 'Dowej pozůr na zajta uosobisto i zajta godki tygo užytkowńika',
-'ipballowusertalk' => 'Dozwól tymu użytkowńikowi sprowjać własno zajta godki, jak je zawarty uod sprowjyń',
'ipb-change-block' => 'Zmjyń sztalowańa zawarća uod sprowjyń',
'badipaddress' => 'Felerny adres IP',
'blockipsuccesssub' => 'Zawarće uod sprowjyń udane',
@@ -1872,12 +1928,7 @@ Přyńdź do [[Special:IPBlockList|listy zawartych adresůw IP]] coby přejřeć
'unblocked-id' => 'Zawarće $1 zostouo zdjynte',
'ipblocklist' => 'Zawarte używocze',
'ipblocklist-legend' => 'Znejdź zawartygo uod sprawjyń užytkowńika',
-'ipblocklist-username' => 'Mjano užytkowńika abo adres IP',
-'ipblocklist-sh-userblocks' => '$1 zawarća uod sprowjyń kůnt',
-'ipblocklist-sh-tempblocks' => '$1 tymczasowe zawarća uod sprowjyń',
-'ipblocklist-sh-addressblocks' => '$1 zawarća uod sprowjyń lů pojedynczych adresůw IP',
'ipblocklist-submit' => 'Å nupej',
-'blocklistline' => '$1, $2 zawar uod sprowjyń $3 ($4)',
'infiniteblock' => 'na zawše',
'expiringblock' => 'wygaso $1',
'anononlyblock' => 'ino ńyzalůgowańy',
@@ -1898,7 +1949,7 @@ Powůd zawarća $1 to: „$2â€',
'reblock-logentry' => 'půmjyńił sztalowańa zawarća uod sprowjyń lů [[$1]], czas zawarćo: $2 $3',
'blocklogtext' => "Půńižej znojdowo Å›e lista zawarć zouožůnych i zdjyntych s poÅ¡Äygůlnych adresůw IP.
Na li'śće Å„y mo adresůw IP, kere zawarto w sposůb autůmatyÄny.
-Coby přejřeć lista uobecńy aktywnych zawarć, přyńdź na zajta [[Special:IPBlockList|zawartych adresůw i užytkowńikůw]].",
+Coby přejřeć lista uobecńy aktywnych zawarć, přyńdź na zajta [[Special:BlockList|zawartych adresůw i užytkowńikůw]].",
'unblocklogentry' => 'uodymknyu $1',
'block-log-flags-anononly' => 'ino anůnimowi',
'block-log-flags-nocreate' => 'tworzińy kůnta je zawrzite',
@@ -1910,8 +1961,7 @@ Coby přejřeć lista uobecńy aktywnych zawarć, přyńdź na zajta [[Special:I
'ipb_expiry_invalid' => 'Felerny Äas wygaśńjyńćo zawarća.',
'ipb_expiry_temp' => 'Schrůńůne mjano użytkowńika noleży zawrzić trwale.',
'ipb_already_blocked' => '"$1" je już zawarty uod sprowjyń',
-'ipb-needreblock' => '== Istńejůnce zawarće ==
-$1 je już zawarty uod sprowjyń. Chcesz půmjyńić sztalowańa zawarćo?',
+'ipb-needreblock' => '$1 je już zawarty uod sprowjyń. Chcesz půmjyńić sztalowańa zawarćo?',
'ipb_cant_unblock' => 'Feler: Zawarće uo ID $1 Å„y zostouo znejdźone. Moguo uone zostać oudymkÅ„ynte wÄeÅ›nij.',
'ipb_blocked_as_range' => 'Feler: Adres IP $1 ńy zostou zawarty bezpośredńo i ńy može zostać uodymkńjynty.
Noležy uůn do zawartygo zakresu adresůw $2. Uodymknůńć možno ino couki zakres.',
@@ -2037,7 +2087,7 @@ Možeš tyž užyć linku, np.[[{{#Special:Export}}/{{MediaWiki:Mainpage}}]] do
'allmessagesdefault' => 'Tekst důmyślny',
'allmessagescurrent' => 'Tekst uobecny',
'allmessagestext' => 'Uoto lista wšyjstkych kůmůńikatůw systymowych dostympnych w přestřyńi mjan MedjaWiki.
-Uodwjydź [http://www.mediawiki.org/wiki/Localisation TuůmaÄyÅ„y MediaWiki] a tyž [http://translatewiki.net translatewiki.net] kejbyÅ› chćou uÄestÅ„iÄyć w tuůmaÄyÅ„u uoprůgramowaÅ„o MediaWiki.',
+Uodwjydź [//www.mediawiki.org/wiki/Localisation TuůmaÄyÅ„y MediaWiki] a tyž [//translatewiki.net translatewiki.net] kejbyÅ› chćou uÄestÅ„iÄyć w tuůmaÄyÅ„u uoprůgramowaÅ„o MediaWiki.',
'allmessagesnotsupportedDB' => "Ta zajta Å„y može być užyta, bez tůž co zmjynna '''\$wgUseDatabaseMessages''' je wůuůnÄůno.",
# Thumbnails
@@ -2160,9 +2210,7 @@ Idzie naszkryflać powůd we popiśe půmjyńań.',
'tooltip-summary' => 'Krůtko popisz',
# Metadata
-'nodublincore' => 'Metadane zgodne s Dublin Core RDF zostouy wůuůnÄůne do tygo serwera.',
-'nocreativecommons' => 'Metadane zgodne s Creative Commons RDF zostouy wůuůnÄůne do tygo serwera.',
-'notacceptable' => 'Serwer wiki Å„y je w staÅ„y dostarÄyć danych we formaće, kerygo Twoja pÅ™yglůndarka uoÄekuje.',
+'notacceptable' => 'Serwer wiki Å„y je w staÅ„y dostarÄyć danych we formaće, kerygo Twoja pÅ™yglůndarka uoÄekuje.',
# Attribution
'anonymous' => '{{PLURAL:$1|Anůńimowy użytkowńik|Anůńimowe użytkowńiki}} {{SITENAME}}',
@@ -2183,33 +2231,6 @@ Nojprawdopodobńij zostoło to spowodowane bez link do zewnyntrznyj zajty intern
'spam_reverting' => 'Přiwracańy uostatńij wersyji we kerej ńy bůuo linkůw do $1',
'spam_blanking' => 'WÅ¡yjstke wersyje zawjerouy uodnośńiki do $1. ÄŒyÅ¡ÄyÅ„y zajty.',
-# Info page
-'infosubtitle' => 'Informacyja uo zajće',
-'numedits' => 'LiÄba sprowjyÅ„ (artikel): $1',
-'numtalkedits' => 'LiÄba sprowjyÅ„ (zajta godki): $1',
-'numwatchers' => 'LiÄba dowajůncych pozůr: $1',
-'numauthors' => 'LiÄba autorůw (artikel) $1',
-'numtalkauthors' => 'LiÄba autorůw (zajta godki): $1',
-
-# Math options
-'mw_math_png' => 'Zawše gyneruj grafika PNG',
-'mw_math_simple' => 'HTML dla prostych, do pozostouych grafika PNG',
-'mw_math_html' => 'Sprůbuj HTML, a jak ńy idźe užyj grafiki PNG',
-'mw_math_source' => 'Uostow w TeXu (dla přyglůndarek tekstowych)',
-'mw_math_modern' => 'HTML – zalecane do nowych přyglůndarek',
-'mw_math_mathml' => 'MathML jak dostympny (eksperymyntalne)',
-
-# Math errors
-'math_failure' => 'Parser ńy můg rozpoznać',
-'math_unknown_error' => 'Å„yznany feler',
-'math_unknown_function' => 'Å„yznano funkcyjo',
-'math_lexing_error' => 'feler leksera',
-'math_syntax_error' => 'felerno skuadńa',
-'math_image_error' => 'kůnwersyjo do formatu PNG ńy powjodua śe; uobadej, eli poprawńy zainštalowane sům lotex, dvips, gs i convert',
-'math_bad_tmpdir' => 'Ńy idźe utwoÅ™ić abo naÅ¡kryflać w tymÄasowym katalůgu do wzorůw matymatyÄnych',
-'math_bad_output' => 'Ńy idźe utwoÅ™ić abo naÅ¡kryflać we wyjśćowym katalůgu do wzorůw matymatyÄnych',
-'math_notexvc' => 'Ńy ma sam texvc; zapoznej śe z math/README w celu kůnfiguracyje.',
-
# Patrolling
'markaspatrolleddiff' => 'uoznoÄ sprawjyÅ„y kej „sprawdzůneâ€',
'markaspatrolledtext' => 'UoznoÄ tyn artikel kej „sprawdzůnyâ€',
@@ -2244,16 +2265,15 @@ $1',
'nextdiff' => 'Nostympne sprowjyńy →',
# Media information
-'mediawarning' => "'''Pozůr!''' Tyn plik može zawjerać zuośliwy kod. Jak go uodymkńyš možeš zaraźić swůj systym.",
-'imagemaxsize' => 'Na zajtach uopisu plikůw uůgraÅ„iÄ rozmjar uobrazkůw do:',
-'thumbsize' => 'Rozmjar mińjatůrki',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|zajta|zajty|zajtůw}}',
-'file-info' => 'rozmjor plika: $1, typ MIME: $2',
-'file-info-size' => '$1 × $2 pikselůw, wjelgość plika: $3, zorta MIME: $4',
-'file-nohires' => '<small>Uobrozek we wjynkÅ¡ej rozdźelÄośći Å„y je dostympny.</small>',
-'svg-long-desc' => 'Plik SVG, nůminalńe $1 × $2 pixelůw, rozmior plika: $3',
-'show-big-image' => 'Pełne wymjyry',
-'show-big-image-thumb' => '<small>Rozmiar podglůndu: $1 × $2 pikseli</small>',
+'mediawarning' => "'''Pozůr!''' Tyn plik može zawjerać zuośliwy kod. Jak go uodymkńyš možeš zaraźić swůj systym.",
+'imagemaxsize' => 'Na zajtach uopisu plikůw uůgraÅ„iÄ rozmjar uobrazkůw do:',
+'thumbsize' => 'Rozmjar mińjatůrki',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|zajta|zajty|zajtůw}}',
+'file-info' => 'rozmjor plika: $1, typ MIME: $2',
+'file-info-size' => '$1 × $2 pikselůw, wjelgość plika: $3, zorta MIME: $4',
+'file-nohires' => '<small>Uobrozek we wjynkÅ¡ej rozdźelÄośći Å„y je dostympny.</small>',
+'svg-long-desc' => 'Plik SVG, nůminalńe $1 × $2 pixelůw, rozmior plika: $3',
+'show-big-image' => 'Pełne wymjyry',
# Special:NewFiles
'newimages' => 'Galerjo nowych uobrozkůw',
@@ -2280,14 +2300,20 @@ Dolsze linki we lińiji sům uwożane za wyjimki – sům to mjana zajtůw, na
Eli plik był modyfikowany, dane mogům w tajli ńy być we zgodźe ze parametrůma modyfikowanego pliku.',
'metadata-expand' => 'Pokož Å¡Äygůuy',
'metadata-collapse' => 'Schowej Å¡Äygůuy',
-'metadata-fields' => 'Pola kere wymjyńůno pońižy pola EXIF bydům wymjyńůne na zajcie grafiki. Inkše pola bydům důmyślńy schowane.
+'metadata-fields' => 'Wyszkryflůne niżyj pola EXIF bydům wyszkryflůne na zajcie plika. Inksze pola bydům mjarkowańy schrůńůne.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Šyrokość',
@@ -2302,13 +2328,11 @@ Eli plik byÅ‚ modyfikowany, dane mogům w tajli Å„y być we zgodźe ze parametrÅ
'exif-ycbcrpositioning' => 'RozmjeÅ¡ÄyÅ„y Y i C',
'exif-xresolution' => 'RozdźelÄość w poźůmje',
'exif-yresolution' => 'RozdźelÄość w pjůńy',
-'exif-resolutionunit' => 'Jednostka rozdźelÄośći X i Y',
'exif-stripoffsets' => 'Přesůńjyńće pasůw uobrazu',
'exif-rowsperstrip' => 'LiÄba wjerÅ¡y na pas uobrazu',
'exif-stripbytecounts' => 'LiÄba bajtůw na pas uobrazu',
'exif-jpeginterchangeformat' => 'Pouožyńy pjyrwšygo bajtu mińaturki uobrazu',
'exif-jpeginterchangeformatlength' => 'LiÄba bajtůw miÅ„aturki JPEG',
-'exif-transferfunction' => 'Fůnkcyjo přejśća',
'exif-whitepoint' => 'Půnkt bjeli',
'exif-primarychromaticities' => 'Kolory třech barw guůwnych',
'exif-ycbcrcoefficients' => 'MaćeÅ™ wspůuÄynÅ„ikůw transformacyji barw ze RGB na YCbCr',
@@ -2327,7 +2351,6 @@ Eli plik byÅ‚ modyfikowany, dane mogům w tajli Å„y być we zgodźe ze parametrÅ
'exif-compressedbitsperpixel' => 'Skůmpresowanych bitůw na piksel',
'exif-pixelydimension' => 'Prawiduowa šyrokość uobrozu',
'exif-pixelxdimension' => 'Prawiduowo wysokość uobrozu',
-'exif-makernote' => 'Informacyje producynta fotoaparatu',
'exif-usercomment' => 'Kůmyntoř užytkowńika',
'exif-relatedsoundfile' => 'Powjůnzany plik audjo',
'exif-datetimeoriginal' => 'Data i Äas utwoÅ™yÅ„o uoryginouu',
@@ -2341,7 +2364,6 @@ Eli plik byÅ‚ modyfikowany, dane mogům w tajli Å„y być we zgodźe ze parametrÅ
'exif-exposureprogram' => 'Progrům ekspozycyji',
'exif-spectralsensitivity' => 'Čuuość widmowa',
'exif-isospeedratings' => 'Šybkość aparatu zgodńy ze ISO12232',
-'exif-oecf' => 'Fůnkcyjo kůnwersyji uobrazu na dane zgodńy z ISO14524',
'exif-shutterspeedvalue' => 'Šybkość migawki',
'exif-aperturevalue' => 'Přisuůna uobjektywu',
'exif-brightnessvalue' => 'Jasność',
@@ -2354,7 +2376,6 @@ Eli plik byÅ‚ modyfikowany, dane mogům w tajli Å„y być we zgodźe ze parametrÅ
'exif-focallength' => 'Duůgość uůgńiskowyj uobjektywu',
'exif-subjectarea' => 'Pouožyńy i uobšar guůwnygo motywu uobrozu',
'exif-flashenergy' => 'Ynergja lampy buyskowyj',
-'exif-spatialfrequencyresponse' => 'Uodpowjydź Äynstotliwośći pÅ™estÅ™ynnej zgodÅ„y ze ISO12233',
'exif-focalplanexresolution' => 'RozdźelÄość w poźůmje puaÅ¡Äyzny uodwzorowaÅ„o uobjektywu',
'exif-focalplaneyresolution' => 'RozdźelÄość w pjůńe puaÅ¡Äyzny uodwzorowaÅ„o uobjektywu',
'exif-focalplaneresolutionunit' => 'Jednostka rozdźelÄośći puaÅ¡Äyzny uodwzorowaÅ„o uobjektywu',
@@ -2363,7 +2384,6 @@ Eli plik byÅ‚ modyfikowany, dane mogům w tajli Å„y być we zgodźe ze parametrÅ
'exif-sensingmethod' => 'Metoda půmjaru (rodzaj přetworńika)',
'exif-filesource' => 'Typ zdřudua plika',
'exif-scenetype' => 'Rodzaj scyny',
-'exif-cfapattern' => 'Wzůr CFA',
'exif-customrendered' => 'Wstympńy přetwořůny (poddany uobrůbce)',
'exif-exposuremode' => 'Tryb ekspozycyji',
'exif-whitebalance' => 'Balans bjeli',
@@ -2554,14 +2574,12 @@ Eli plik byÅ‚ modyfikowany, dane mogům w tajli Å„y być we zgodźe ze parametrÅ
# External editor support
'edit-externally' => 'Sprowjej tyn plik bez eksterno aplikacyjo',
-'edit-externally-help' => '(Zobocz [http://www.mediawiki.org/wiki/Manual:External_editors instrukcyje sztalowańo eksternych edytorůw], kaj je uo tym wjyncy naszkryflůne)',
+'edit-externally-help' => '(Zobocz [//www.mediawiki.org/wiki/Manual:External_editors instrukcyje sztalowańo eksternych edytorůw], kaj je uo tym wjyncy naszkryflůne)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'wšyjstke',
-'imagelistall' => 'wšyjstkych',
-'watchlistall2' => 'do kupy',
-'namespacesall' => 'wszyjske',
-'monthsall' => 'wšyskie',
+'watchlistall2' => 'do kupy',
+'namespacesall' => 'wszyjske',
+'monthsall' => 'wšyskie',
# E-mail address confirmation
'confirmemail' => 'Potwjerdź adres e-brif',
@@ -2668,13 +2686,13 @@ Potwjerdź chęć wćepańo nazod tygo artikla.",
'watchlistedit-normal-legend' => 'Wyćep zajty s listy artikli na kere dowoš pozůr',
'watchlistedit-normal-explain' => 'Půńižy moš lista artikli na kere dowoš pozůr.
Coby wyćepać s Å„ij jako zajta,zaznaÄ pole pÅ™i Å„ij i naćiÅ› knefel "Wyćep zaznaÄůne pozycyje".
-Možeš tyž skořistać ze [[Special:Watchlist/raw|tekstowygo edytora listy artikli na kere dowoš pozůr]].',
+Možeš tyž skořistać ze [[Special:EditWatchlist/raw|tekstowygo edytora listy artikli na kere dowoš pozůr]].',
'watchlistedit-normal-submit' => 'Wyćep s listy',
'watchlistedit-normal-done' => 'Z Twoi listy artikli na kere dowoš pozůr {{PLURAL:$1|zostoua wyćepano 1 zajta|zostouy wyćepane $1 zajty|zostouo wyćepanych $1 zajtůw}}:',
'watchlistedit-raw-title' => 'Tekstowy edytor listy artikli na kere dowoš pozůr',
'watchlistedit-raw-legend' => 'Tekstowy edytor listy artikli na kere dowoš pozůr',
'watchlistedit-raw-explain' => 'Půńižy moÅ¡ lista artikli na kere dowoÅ¡ pozůr. W koždej liÅ„ii znojdowo Å›e titel jydnygo artikla. Lista možeÅ¡ sprowjać dodajůnc nowe zajty i wyćepujůnc te kere na Å„ij sům. Jak skůńÄyÅ¡, naćiÅ› knefel „UaktualÅ„ij lista zajtůw na kere dowům pozůrâ€.
-Možeš tyž [[Special:Watchlist/edit|užyć standardowygo edytora]].',
+Možeš tyž [[Special:EditWatchlist|užyć standardowygo edytora]].',
'watchlistedit-raw-titles' => 'Title:',
'watchlistedit-raw-submit' => 'Uaktualńij lista',
'watchlistedit-raw-done' => 'Lista zajtůw na kere dowoš pozůr zostoua uaktualńůna',
@@ -2691,25 +2709,24 @@ Možeš tyž [[Special:Watchlist/edit|užyć standardowygo edytora]].',
'duplicate-defaultsort' => 'Pozůr: Zmjarkowanym kluczym sortowańo bydźe "$2" a zastůmpi uůn zawczasu używany klucz "$1".',
# Special:Version
-'version' => 'Wersjo',
-'version-extensions' => 'Zainstalowane rozšeřyńa',
-'version-specialpages' => 'Szpecjalne zajty',
-'version-parserhooks' => 'Haki analizatora skuadńi (ang. parser hooks)',
-'version-variables' => 'Zmjynne',
-'version-other' => 'Inkše',
-'version-mediahandlers' => 'WtyÄki uobsůgi medjůw',
-'version-hooks' => 'Haki (ang. hooks)',
-'version-extension-functions' => 'Fůnkcyje rozšyřyń',
-'version-parser-extensiontags' => 'ZnaÄÅ„iki rozÅ¡eÅ™yÅ„ do analizatora skuadÅ„i',
-'version-parser-function-hooks' => 'Fůnkcyje hokůw analizatora skuadńi (ang. parser function hooks)',
-'version-skin-extension-functions' => 'Fůnkcyje rozšeřyń skůrek',
-'version-hook-name' => 'Mjano haka (ang. hook name)',
-'version-hook-subscribedby' => 'Zapotřebowany bez',
-'version-version' => '(Wersjo $1)',
-'version-license' => 'Licencjo',
-'version-software' => 'Zainstalowane uoprůgramowańy',
-'version-software-product' => 'Mjano',
-'version-software-version' => 'Wersjo',
+'version' => 'Wersjo',
+'version-extensions' => 'Zainstalowane rozšeřyńa',
+'version-specialpages' => 'Szpecjalne zajty',
+'version-parserhooks' => 'Haki analizatora skuadńi (ang. parser hooks)',
+'version-variables' => 'Zmjynne',
+'version-other' => 'Inkše',
+'version-mediahandlers' => 'WtyÄki uobsůgi medjůw',
+'version-hooks' => 'Haki (ang. hooks)',
+'version-extension-functions' => 'Fůnkcyje rozšyřyń',
+'version-parser-extensiontags' => 'ZnaÄÅ„iki rozÅ¡eÅ™yÅ„ do analizatora skuadÅ„i',
+'version-parser-function-hooks' => 'Fůnkcyje hokůw analizatora skuadńi (ang. parser function hooks)',
+'version-hook-name' => 'Mjano haka (ang. hook name)',
+'version-hook-subscribedby' => 'Zapotřebowany bez',
+'version-version' => '(Wersjo $1)',
+'version-license' => 'Licencjo',
+'version-software' => 'Zainstalowane uoprůgramowańy',
+'version-software-product' => 'Mjano',
+'version-software-version' => 'Wersjo',
# Special:FilePath
'filepath' => 'Śćežka do plika',
@@ -2722,9 +2739,7 @@ NaÅ¡kryflej sam mjano plika bez prefiksu „{{ns:file}}:â€.',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Å nupej za duplikatym plika',
-'fileduplicatesearch-summary' => 'Šnupej za duplikatůma plika na podstawje wartośći fůnkcyji skrůtu.
-
-Wklepej mjano plika s půmiÅ„jyńćym prefiksu „{{ns:file}}:â€.',
+'fileduplicatesearch-summary' => 'Šnupej za duplikatůma plika na podstawje wartośći fůnkcyji skrůtu.',
'fileduplicatesearch-legend' => 'Šnupej za duplikatůma plika',
'fileduplicatesearch-filename' => 'Mjano pliku:',
'fileduplicatesearch-submit' => 'Å nupej',
diff --git a/languages/messages/MessagesTa.php b/languages/messages/MessagesTa.php
index f172664a..4c6d9f8a 100644
--- a/languages/messages/MessagesTa.php
+++ b/languages/messages/MessagesTa.php
@@ -198,15 +198,7 @@ $messages = array(
'listingcontinuesabbrev' => 'தொடரà¯à®®à¯.',
'index-category' => 'வரிசைபடà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿ பகà¯à®•à®™à¯à®•à®³à¯',
'noindex-category' => 'வரிசைபடà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà®¾à®¤ பகà¯à®•à®™à¯à®•à®³à¯',
-
-'mainpagetext' => "'''விகà¯à®•à®¿ மெனà¯à®ªà¯Šà®°à¯à®³à¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• உளà¯à®³à®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.'''",
-'mainpagedocfooter' => 'விகà¯à®•à®¿ மெனà¯à®ªà¯Šà®°à¯à®³à¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à¯ தொடரà¯à®ªà®¾à®• [http://meta.wikimedia.org/wiki/Help:Contents பயனர௠வழிகாடà¯à®Ÿà®¿à®¯à¯ˆà®ªà¯] பாரà¯à®•à¯à®•.
-
-== தொடகà¯à®•à®ªà¯à®ªà®Ÿà®¿à®•à®³à¯ ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings அமைபà¯à®ªà¯à®•à¯à®•à®³à¯ˆ மாறà¯à®±à®®à¯ செயà¯à®¤à®²à¯]
-* [http://www.mediawiki.org/wiki/Manual:FAQ மிடியாவிகà¯à®•à®¿ பொதà¯à®µà®¾à®© கேளà¯à®µà®¿à®•à®³à¯]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce மீடியாவிகà¯à®•à®¿ வெளியீட௠மினà¯à®©à®žà¯à®šà®²à¯ படà¯à®Ÿà®¿à®¯à®²à¯]',
+'broken-file-category' => 'à®…à®±à¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà¯ இணைபà¯à®ªà¯à®•à®³à¯ உளà¯à®³ பகà¯à®•à®™à¯à®•à®³à¯',
'about' => 'விவரமà¯',
'article' => 'உளà¯à®³à®Ÿà®•à¯à®•à®ªà¯ பகà¯à®•à®®à¯',
@@ -260,10 +252,10 @@ $messages = array(
'history' => 'பகà¯à®• வரலாறà¯',
'history_short' => 'வரலாறà¯',
'updatedmarker' => 'எனத௠கடைசி வரà¯à®•à¯ˆà®•à¯à®•à¯à®ªà¯ பின௠இறà¯à®±à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯',
-'info_short' => 'தகவலà¯',
'printableversion' => 'அசà¯à®šà¯à®•à¯à®•à¯à®•à®¨à¯à®¤ பதிபà¯à®ªà¯',
'permalink' => 'நிலையான இணைபà¯à®ªà¯',
'print' => 'அசà¯à®šà®¿à®Ÿà¯',
+'view' => 'பாரà¯à®µà¯ˆà®¯à®¿à®Ÿà¯',
'edit' => 'தொகà¯',
'create' => 'உரà¯à®µà®¾à®•à¯à®•à¯',
'editthispage' => 'இபà¯à®ªà®•à¯à®•à®¤à¯à®¤à¯ˆ தொகà¯',
@@ -353,6 +345,8 @@ $1',
'toc' => 'பொரà¯à®³à®Ÿà®•à¯à®•à®®à¯',
'showtoc' => 'காடà¯à®Ÿà¯',
'hidetoc' => 'மறை',
+'collapsible-collapse' => 'சà¯à®°à¯à®•à¯à®•à¯',
+'collapsible-expand' => 'விரிவாகà¯à®•à¯',
'thisisdeleted' => '$1 பாரà¯à®•à¯à®•à®µà®¾ அலà¯à®²à®¤à¯ மீளà¯à®µà®¿à®•à¯à®•à®µà®¾?',
'viewdeleted' => '$1 பார�',
'restorelink' => '{{PLURAL:$1|ஒர௠நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ தொகà¯à®ªà¯à®ªà¯ˆ|$1 நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ தொகà¯à®ªà¯à®ªà¯à®•à®³à¯ˆ}}',
@@ -444,11 +438,10 @@ MySQL returned error "$3: $4".',
'protectedpagetext' => 'இபà¯à®ªà®•à¯à®•à®®à¯ தொகà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®µà®¤à¯ˆ தவிரà¯à®ªà¯à®ªà®¤à®±à¯à®•à®¾à®• பூடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯.',
'viewsourcetext' => 'நீஙà¯à®•à®³à¯ இதன௠மூலதà¯à®¤à¯ˆ பாரà¯à®•à¯à®•à®µà¯à®®à¯ அதனை நகலெடà¯à®•à¯à®•à®µà¯à®®à¯ à®®à¯à®Ÿà®¿à®¯à¯à®®à¯:',
'protectedinterface' => 'இபà¯à®ªà®•à¯à®•à®®à¯ இமà¯à®®à¯†à®©à¯ பொரà¯à®³à¯à®•à¯à®•à®¾à®© பயனர௠இடைமà¯à®• உரைகளை வழஙà¯à®•à¯à®•à®¿à®±à®¤à¯, விசம தொகà¯à®ªà¯à®ªà¯à®•à¯à®•à®³à¯ˆ தவிரà¯à®ªà¯à®ªà®¤à®±à¯à®•à¯à®•à®¾à®• இபà¯à®ªà®•à¯à®•à®®à¯ பூடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯.',
-'editinginterface' => "'''எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ:''' நீஙà¯à®•à®³à¯ இமà¯à®®à¯†à®©à¯ பொரà¯à®³à¯à®•à¯à®•à®¾à®© பயனர௠இடைமà¯à®• உரைகளை வழஙà¯à®•à¯à®®à¯ பகà¯à®•à®®à¯Šà®©à¯à®±à¯ˆ தொகà¯à®•à¯à®• à®®à¯à®¯à®±à¯à®šà®¿ செயà¯à®•à®¿à®±à¯€à®°à¯à®•à®³à¯. இதில௠செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®®à¯ மாறà¯à®±à®™à¯à®•à®³à¯ à®à®©à¯ˆà®¯ பயனரà¯à®•à®³à®¤à¯ பயனர௠இடைமà¯à®•à®™à¯à®•à®³à®¿à®²à¯à®®à¯ மாறà¯à®±à®™à¯à®•à®³à¯ˆ à®à®±à¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®®à¯. மொழிபெயரà¯à®ªà¯à®ªà¯à®•à®³à¯à®•à¯à®•à¯, à®…à®°à¯à®³à¯ கூரà¯à®¨à¯à®¤à¯ மிடியாவிகà¯à®•à®¿ மொழிபெயரà¯à®ªà¯à®ªà¯à®¤à¯ திடà¯à®Ÿà®®à®¾à®© [http://translatewiki.net/wiki/Main_Page?setlang=ta பீடà¯à®Ÿà®¾à®µà®¿à®•à¯à®•à®¿] திடà¯à®Ÿà®¤à¯à®¤à¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯.",
+'editinginterface' => "'''எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ:''' நீஙà¯à®•à®³à¯ இமà¯à®®à¯†à®©à¯ பொரà¯à®³à¯à®•à¯à®•à®¾à®© பயனர௠இடைமà¯à®• உரைகளை வழஙà¯à®•à¯à®®à¯ பகà¯à®•à®®à¯Šà®©à¯à®±à¯ˆ தொகà¯à®•à¯à®• à®®à¯à®¯à®±à¯à®šà®¿ செயà¯à®•à®¿à®±à¯€à®°à¯à®•à®³à¯. இதில௠செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®®à¯ மாறà¯à®±à®™à¯à®•à®³à¯ à®à®©à¯ˆà®¯ பயனரà¯à®•à®³à®¤à¯ பயனர௠இடைமà¯à®•à®™à¯à®•à®³à®¿à®²à¯à®®à¯ மாறà¯à®±à®™à¯à®•à®³à¯ˆ à®à®±à¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®®à¯. மொழிபெயரà¯à®ªà¯à®ªà¯à®•à®³à¯à®•à¯à®•à¯, à®…à®°à¯à®³à¯ கூரà¯à®¨à¯à®¤à¯ மிடியாவிகà¯à®•à®¿ மொழிபெயரà¯à®ªà¯à®ªà¯à®¤à¯ திடà¯à®Ÿà®®à®¾à®© [//translatewiki.net/wiki/Main_Page?setlang=ta பீடà¯à®Ÿà®¾à®µà®¿à®•à¯à®•à®¿] திடà¯à®Ÿà®¤à¯à®¤à¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯.",
'sqlhidden' => '(SQL கோரிகà¯à®•à¯ˆ மறைகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯)',
'cascadeprotected' => 'படிநிலைக௠காபà¯à®ªà¯à®•à¯à®•à¯à®Ÿà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³ பினà¯à®µà®°à¯à®®à¯ {{PLURAL:$1|பகà¯à®•à®¤à¯à®¤à®¿à®²à¯|பகà¯à®•à®™à¯à®•à®³à®¿à®²à¯}} இபà¯à®ªà®•à¯à®•à®®à¯ இணைகà¯à®•à®ªà¯ படà¯à®Ÿà¯à®³à¯à®³à®®à¯ˆà®¯à®¾à®²à¯ இபà¯à®ªà®•à¯à®•à®®à¯ தொகà¯à®ªà¯à®ªà®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ காகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯:$2',
'namespaceprotected' => "'''$1''' பெயரà¯à®µà¯†à®³à®¿à®¯à®¿à®²à¯ தொகà¯à®ªà¯à®ªà¯à®•à¯à®•à®³à¯ˆà®šà¯ செயà¯à®µà®¤à®±à¯à®•à¯ உஙà¯à®•à®³à¯à®•à¯à®•à¯ அனà¯à®®à®¤à®¿ கிடையாதà¯.",
-'customcssjsprotected' => 'வேற௠பயனர௠ஒரà¯à®µà®°à®¿à®©à¯ தனிபà¯à®ªà®Ÿà¯à®Ÿ அமைபà¯à®ªà¯à®•à®³à¯ காணபà¯à®ªà®Ÿà¯à®µà®¤à®¾à®²à¯ இபà¯à®ªà®•à¯à®•à®¤à¯à®¤à¯ˆ தொகà¯à®•à¯à®• உஙà¯à®•à®³à¯à®•à¯à®•à¯ அனà¯à®®à®¤à®¿ கிடையாதà¯.',
'ns-specialprotected' => 'சிறபà¯à®ªà¯ பகà¯à®•à®™à¯à®•à®³à¯ˆà®¤à¯ தொகà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯.',
'titleprotected' => "பயனர௠[[User:$1|$1]] இதà¯à®¤à®²à¯ˆà®ªà¯à®ªà¯ உரà¯à®µà®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®µà®¤à¯ˆ தவிரà¯à®•à¯à®•à¯à®®à¯ வகையில௠தடà¯à®¤à¯à®¤à¯à®³à¯à®³à®¾à®°à¯.
கொடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®•à¯ காரணம௠''$2''.",
@@ -483,6 +476,7 @@ MySQL returned error "$3: $4".',
'createaccount' => 'பà¯à®¤à®¿à®¯ கணகà¯à®•à¯ˆ உரà¯à®µà®¾à®•à¯à®•à¯',
'gotaccount' => "à®à®±à¯à®•à®©à®µà¯‡ பயனர௠கணகà¯à®•à¯ உளà¯à®³à®¤à®¾? '''$1'''.",
'gotaccountlink' => 'பà¯à®•à¯à®ªà®¤à®¿à®•à¯ˆ',
+'userlogin-resetlink' => 'மறநà¯à®¤à¯€à®°à¯à®•à®³à®¾ உஙà¯à®•à®³à¯ பà¯à®•à¯à®ªà®¤à®¿à®•à¯ˆà®•à¯ கà¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯ˆ?',
'createaccountmail' => 'மினà¯à®©à®žà¯à®šà®²à¯ மூலமà¯',
'createaccountreason' => 'காரணமà¯:',
'badretype' => 'நீஙà¯à®•à®³à¯ பதிநà¯à®¤ கடவà¯à®šà¯à®šà¯Šà®²à¯ பொரà¯à®¤à¯à®¤à®®à®¾à®• இலà¯à®²à¯ˆ.',
@@ -499,7 +493,7 @@ MySQL returned error "$3: $4".',
பயனர௠பெயரà¯, பெரிய எழà¯à®¤à¯à®¤à¯, சிறிய எழà¯à®¤à¯à®¤à¯ எனà¯à®± விதà¯à®¤à®¿à®¯à®¾à®šà®¤à¯à®¤à®¿à®±à¯à®•à¯à®Ÿà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.
எழà¯à®¤à¯à®¤à¯à®ªà¯ பிழைகளைச௠சரி பாரà¯à®•à¯à®•à®µà¯à®®à¯, அலà¯à®²à®¤à¯ [[Special:UserLogin/signup|பà¯à®¤à®¿à®¯ பயனர௠கணகà¯à®•à¯Šà®©à¯à®±à¯ˆ உரà¯à®µà®¾à®•à¯à®•à®µà¯à®®à¯]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" எனà¯à®± பெயரில௠பயனர௠யாரà¯à®®à¯ இலà¯à®²à¯ˆ. நீஙà¯à®•à®³à¯ உளà¯à®³à®¿à®Ÿà¯à®Ÿ பெயரை சரி பாரà¯à®•à¯à®•à®µà¯à®®à¯.',
+'nosuchusershort' => '"$1" எனà¯à®± பெயரில௠பயனர௠யாரà¯à®®à¯ இலà¯à®²à¯ˆ. நீஙà¯à®•à®³à¯ உளà¯à®³à®¿à®Ÿà¯à®Ÿ பெயரை சரி பாரà¯à®•à¯à®•à®µà¯à®®à¯.',
'nouserspecified' => 'நீஙà¯à®•à®³à¯ பயனர௠பெயரொனà¯à®±à¯ˆ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿ வேணà¯à®Ÿà¯à®®à¯.',
'login-userblocked' => 'இபà¯à®ªà®¯à®©à®°à¯ கணகà¯à®•à¯ தடைசெயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯. பà¯à®•à¯à®ªà®¤à®¿à®•à¯ˆ அனà¯à®®à®¤à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ.',
'wrongpassword' => 'நீஙà¯à®•à®³à¯ கொடà¯à®¤à¯à®¤ கடவà¯à®šà¯à®šà¯Šà®²à¯ சரியலà¯à®². மீணà¯à®Ÿà¯à®®à¯ à®®à¯à®¯à®±à¯à®šà®¿à®•à¯à®•à®µà¯à®®à¯.',
@@ -541,7 +535,7 @@ MySQL returned error "$3: $4".',
அடà¯à®¤à¯à®¤à®ªà®Ÿà®¿à®¯à®¾à®• à®®à¯à®¯à®±à¯à®šà®¿ செயà¯à®µà®¤à®±à¯à®•à¯ à®®à¯à®©à¯ சிறித௠நேரம௠காதà¯à®¤à®¿à®°à¯à®•à¯à®•à®µà¯à®®à¯.',
'loginlanguagelabel' => 'மொழி: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®±à®¿à®¯à®®à¯ˆ',
'resetpass_announce' => 'நீஙà¯à®•à®³à¯ தறà¯à®•à®¾à®²à®¿à®• மினà¯à®©à®žà¯à®šà®²à¯ கà¯à®±à®¿à®¯à¯€à®Ÿà¯à®Ÿà¯à®Ÿà®©à¯ பà¯à®•à¯à®ªà®¤à®¿à®•à¯ˆ செயà¯à®¤à¯à®³à¯à®³à¯€à®°à¯à®•à®³à¯. பà¯à®•à¯à®ªà®¤à®¿à®•à¯ˆà®¯à¯ˆ நிறைவà¯à®šà¯ செயà¯à®¯ பà¯à®¤à®¿à®¯à®•à¯ கடவà¯à®šà¯ சொலà¯à®²à¯Šà®©à¯à®±à¯ˆ இஙà¯à®•à¯‡ தடà¯à®Ÿà®šà®¿à®Ÿà¯à®•:',
'resetpass_header' => 'கணகà¯à®•à®¿à®±à¯à®•à®¾à®© கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®±à®¿à®¯à®®à¯ˆ',
@@ -558,6 +552,15 @@ MySQL returned error "$3: $4".',
உஙà¯à®•à®³à¯ கடவà¯à®šà¯ சொலà¯à®²à¯ˆ நீஙà¯à®•à®³à¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• மாறà¯à®±à®¿à®µà®¿à®Ÿà¯à®Ÿà¯€à®°à¯à®•à®³à¯ அலà¯à®²à®¤à¯ பà¯à®¤à®¿à®¯ தறà¯à®•à®¾à®²à®¿à®•à®•à¯ கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆà®•à¯ கோரியà¯à®³à¯à®³à¯€à®°à¯à®•à®³à¯.',
'resetpass-temp-password' => 'தறà¯à®•à®¾à®²à®¿à®• கடவà¯à®šà¯à®šà¯Šà®²à¯:',
+# Special:PasswordReset
+'passwordreset' => 'கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மீடà¯à®Ÿà®®à¯ˆ',
+'passwordreset-legend' => 'கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மீடà¯à®Ÿà®®à¯ˆ',
+'passwordreset-username' => 'பயனர௠பெயரà¯:',
+'passwordreset-email' => 'மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿:',
+'passwordreset-emailelement' => 'பயனர௠பெயரà¯: $1
+தறà¯à®•à®¾à®²à®¿à®•à®•à¯ கடவà¯à®šà¯à®šà¯Šà®²à¯: $2',
+'passwordreset-emailsent' => 'நினைவூடà¯à®Ÿà¯à®®à¯ மினà¯à®©à®žà¯à®šà®²à¯ அனà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.',
+
# Edit page toolbar
'bold_sample' => 'தடிதà¯à®¤ எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯',
'bold_tip' => 'தடிதà¯à®¤ எழà¯à®¤à¯à®¤à¯',
@@ -569,8 +572,6 @@ MySQL returned error "$3: $4".',
'extlink_tip' => 'வெளியிணைபà¯à®ªà¯ (http:// à®®à¯à®©à¯à®©à®¿à®£à¯ˆà®ªà¯à®ªà¯ˆ மறகà¯à®•à®¾à®¤à¯€à®°à¯)',
'headline_sample' => 'தலைபà¯à®ªà¯',
'headline_tip' => 'இரணà¯à®Ÿà®¾à®®à¯ படித௠தலைபà¯à®ªà¯',
-'math_sample' => 'இஙà¯à®•à¯‡ வாயà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ˆ இடà¯à®•',
-'math_tip' => 'கணித வாயà¯à®ªà®¾à®Ÿà¯ (LaTeX)',
'nowiki_sample' => 'விகà¯à®•à®¿ நிரலாகà¯à®•à®¤à¯à®¤à®¾à®²à¯ பà¯à®±à®•à¯à®•à®£à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà®µà¯‡à®£à¯à®Ÿà®¿à®¯ உரையை இஙà¯à®•à¯‡ இடவà¯à®®à¯',
'nowiki_tip' => 'விகà¯à®•à®¿ நிரலாகà¯à®•à®¤à¯à®¤à¯ˆà®ªà¯ பà¯à®±à®•à¯à®•à®£à®¿',
'image_tip' => 'பொதிநà¯à®¤à¯à®³à¯à®³ படிமமà¯',
@@ -645,7 +646,7 @@ $1 பயனரையோ அலà¯à®²à®¤à¯ வேற௠[[{{MediaWiki:Grouppage
தஙà¯à®•à®³à¯à®•à¯à®•à®¾à®• ஒர௠பயனர௠பகà¯à®•à®®à¯ உரà¯à®µà®¾à®•à¯à®•à®¿à®•à¯ கொளà¯à®µà®¤à¯ எனà¯à®ªà®¤à¯ மிகவà¯à®®à¯ எளிதானதà¯. [[Special:UserLogin/signup|இஙà¯à®•à¯ தஙà¯à®•à®³à¯à®•à¯à®•à®¾à®© பà¯à®¤à®¿à®¯ கணகà¯à®•à¯Šà®©à¯à®±à¯ˆà®¤à¯ தொடஙà¯à®•à®¿]] உஙà¯à®•à®³à¯à®•à¯à®•à®¾à®© பயனர௠பகà¯à®•à®¤à¯à®¤à¯ˆ உரà¯à®µà®¾à®•à¯à®•à®¿à®•à¯ கொளà¯à®³ வேணà¯à®Ÿà¯à®•à®¿à®±à¯‹à®®à¯, அலà¯à®²à®¤à¯ [[Special:UserLogin|பà¯à®•à¯à®ªà®¤à®¿à®•à¯ˆ]] செயà¯à®¤à®¿à®Ÿ வேணà¯à®Ÿà¯à®•à®¿à®±à¯‹à®®à¯.''",
'noarticletext' => 'இப௠பகà¯à®•à®¤à¯à®¤à®¿à®²à¯ தறà¯à®ªà¯Šà®´à¯à®¤à¯ உளà¯à®³à®Ÿà®•à¯à®•à®®à¯ எதà¯à®µà¯à®®à®¿à®²à¯à®²à¯ˆ. நீஙà¯à®•à®³à¯ இபà¯à®ªà®•à¯à®• [[Special:Search/{{PAGENAME}}|தலைபà¯à®ªà¯ˆ வேற௠பகà¯à®•à®™à¯à®•à®³à®¿à®²à¯ தேடவோ]] அலà¯à®²à®¤à¯ [{{fullurl:{{FULLPAGENAME}}|action=edit}} இபà¯à®ªà®•à¯à®•à®¤à¯à®¤à¯ˆ தொகà¯à®•à¯à®•à®µà¯‹] à®®à¯à®Ÿà®¿à®¯à¯à®®à¯.',
-'userpage-userdoesnotexist' => '"$1" எனà¯à®±à®•à¯ கணகà¯à®•à¯ இனà¯à®©à®®à¯à®®à¯ பதிவà¯à®šà¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ. இதை உரà¯à®µà®¾à®•à¯à®•/தொகà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à®¾ எனà¯à®ªà®¤à¯ˆ உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯.',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" எனà¯à®±à®•à¯ கணகà¯à®•à¯ இனà¯à®©à®®à¯à®®à¯ பதிவà¯à®šà¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ. இதை உரà¯à®µà®¾à®•à¯à®•/தொகà¯à®•à¯à®• வேணà¯à®Ÿà¯à®®à®¾ எனà¯à®ªà®¤à¯ˆ உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®µà¯à®®à¯.',
'userpage-userdoesnotexist-view' => 'பயனர௠கணகà¯à®•à¯ "$1" பதியபà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ',
'blocked-notice-logextract' => 'இநà¯à®¤à®ªà¯ பயனர௠தறà¯à®šà®®à®¯à®®à¯ தடை செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¾à®°à¯.
இவரத௠தடை பதிகையின௠அணà¯à®®à¯ˆà®¯ மாறà¯à®±à®®à¯ கிழே தரபà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯:',
@@ -981,9 +982,10 @@ $1 பயனரையோ அலà¯à®²à®¤à¯ வேற௠[[{{MediaWiki:Grouppage
'changepassword' => 'கடவà¯à®šà¯à®šà¯Šà®²à¯à®²à¯ˆ மாறà¯à®±à¯',
'prefs-skin' => 'தோலà¯',
'skin-preview' => 'à®®à¯à®©à¯à®¤à¯‹à®±à¯à®±à®®à¯',
-'prefs-math' => 'கணிதமà¯',
'datedefault' => 'விரà¯à®ªà¯à®ªà®¤à¯à®¤à¯‡à®°à¯à®µà¯à®•à®³à¯ இலà¯à®²à¯ˆ',
+'prefs-beta' => 'சோதனைநிலை à®…à®®à¯à®šà®™à¯à®•à®³à¯',
'prefs-datetime' => 'நாள௠நேரமà¯',
+'prefs-labs' => 'ஆயà¯à®µà®• à®…à®®à¯à®šà®™à¯à®•à®³à¯',
'prefs-personal' => 'பயனர௠தரவà¯',
'prefs-rc' => 'அணà¯à®®à¯ˆà®¯ மாறà¯à®±à®™à¯à®•à®³à¯',
'prefs-watchlist' => 'கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯',
@@ -1005,8 +1007,6 @@ $1 பயனரையோ அலà¯à®²à®¤à¯ வேற௠[[{{MediaWiki:Grouppage
'columns' => 'நிரலà¯à®•à®³à¯',
'searchresultshead' => 'தேடà¯à®•',
'resultsperpage' => 'ஒர௠பகà¯à®•à®¤à¯à®¤à¯à®•à¯à®•à¯à®•à¯ காடà¯à®Ÿà®ªà¯à®ªà®Ÿà®µà¯‡à®£à¯à®Ÿà®¿à®¯ அடிகளà¯',
-'contextlines' => 'அடிதà¯à®¤à®²à¯Šà®©à¯à®±à¯à®•à¯à®•à¯à®•à¯ காடà¯à®Ÿà®ªà¯à®ªà®Ÿ வேணà¯à®Ÿà®¿à®¯ வரிகளà¯:',
-'contextchars' => 'ஒர௠வரிகà¯à®•à®¾à®© இடமà¯à®šà®¾à®°à¯ எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯',
'stub-threshold' => '<a href="#" class="stub">stub link</a> சீரà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯à®•à¯à®•à®¾à®© எலà¯à®²à¯ˆ (பைடà¯à®Ÿà¯à®•à®³à¯):',
'stub-threshold-disabled' => 'செயலிழகà¯à®•à®®à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯',
'recentchangesdays' => 'அணà¯à®®à¯ˆà®¯ மாறà¯à®±à®™à¯à®•à®³à®¿à®²à¯ காடà¯à®Ÿ வேணà¯à®Ÿà®¿à®¯ நாடà¯à®•à®³à®¿à®©à¯ எணà¯à®£à®¿à®•à¯à®•à¯ˆ:',
@@ -1166,7 +1166,6 @@ $1 பயனரையோ அலà¯à®²à®¤à¯ வேற௠[[{{MediaWiki:Grouppage
'right-userrights' => 'எலà¯à®²à®¾à®ªà¯ பயனர௠உரிமைகளையà¯à®®à¯ தொகà¯à®•à¯à®•à®µà¯à®®à¯',
'right-userrights-interwiki' => 'à®à®©à¯ˆà®¯ விகà¯à®•à®¿ தளஙà¯à®•à®³à®¿à®©à¯ பயனர௠உரிமைகளை தொகà¯à®¤à¯à®¤à®²à¯',
'right-siteadmin' => 'தரவà¯à®¤à¯à®¤à®³à®¤à¯à®¤à¯ˆ பூடà¯à®Ÿà®²à¯ திறதà¯à®¤à®²à¯',
-'right-reset-passwords' => 'பிற பயனரà¯à®•à®³à®¿à®©à¯ கடவà¯à®šà¯ சொறà¯à®•à®³à¯ˆ மீடà¯à®Ÿà®®à¯ˆà®•à¯à®•à®µà¯à®®à¯',
'right-sendemail' => 'மறà¯à®± பயனரà¯à®•à®³à¯à®•à¯à®•à¯ மினà¯à®©à®žà¯à®šà®²à¯ அனà¯à®ªà¯à®ªà¯',
# User rights log
@@ -1338,10 +1337,6 @@ $1 பயனரையோ அலà¯à®²à®¤à¯ வேற௠[[{{MediaWiki:Grouppage
'upload-options' => 'விரà¯à®ªà¯à®ªà®¤à¯à®¤à¯‡à®°à¯à®µà¯à®•à®³à¯ˆ பதிவேறà¯à®±à®µà¯à®®à¯',
'watchthisupload' => 'இநà¯à®¤ கோபà¯à®ªà®¿à®©à¯ˆà®•à¯ கவனி',
'filewasdeleted' => 'இபà¯à®ªà¯†à®¯à®°à¯ˆà®•à¯ கொணà¯à®Ÿ கோபà¯à®ªà¯ à®®à¯à®©à¯à®ªà¯ பதிவேறà¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà¯ பினà¯à®©à®°à¯ நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯. பதிவேறà¯à®±à®¤à¯à®¤à¯à®•à¯à®•à¯à®ªà¯ à®®à¯à®©à¯à®©à®°à¯ $1 à®à®šà¯ சரிபாரà¯à®•à¯à®•à®µà¯à®®à¯.',
-'upload-wasdeleted' => "'''எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ: à®à®±à¯à®•à®©à®µà¯‡ நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ கோபà¯à®ªà¯Šà®©à¯à®±à¯ˆ பதிவேறà¯à®± எதà¯à®¤à®©à®¿à®•à¯à®•à®¿à®±à¯€à®°à¯à®•à®³à¯.'''
-
-இகà¯à®•à¯‹à®ªà¯à®ªà¯ˆ பதிவேறà¯à®±à¯à®µà®¤à¯ சரியா எனà¯à®ªà®¤à¯ˆà®•à¯ கரà¯à®¤à®µà¯à®®à¯.
-உஙà¯à®•à®³à¯ வசதிகà¯à®•à®¾à®• இகà¯à®•à¯‹à®ªà¯à®ªà®¿à®±à¯à®•à®¾à®• நீகà¯à®•à®²à¯ பதிவ௠தரபà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯:",
'filename-bad-prefix' => "நீஙà¯à®•à®³à¯ பதிவேறà¯à®± எதà¯à®¤à®©à®¿à®•à¯à®•à¯à®®à¯ கோபà¯à®ªà®¿à®©à¯ பெயர௠'''\"\$1\"''' எனà¯à®ªà®¤à¯à®Ÿà®©à¯ தொடஙà¯à®•à¯à®•à®¿à®±à®¤à¯, பொதà¯à®µà®¾à®• இத௠எணà¯à®®à®°à¯à®µà®¿ கமெராகà¯à®•à®²à®¾à®²à¯ தானியகà¯à®•à®®à®¾à®• வழஙà¯à®•à®ªà¯à®ªà¯à®Ÿà¯à®®à¯ பெயராகà¯à®®à¯. à®…à®°à¯à®³à¯ கூரà¯à®¨à¯à®¤à¯ கோபà¯à®ªà®¿à®±à¯à®•à¯ விளகà¯à®•à®®à®¾à®© பெயரொனà¯à®±à¯ˆà®•à¯ கொடà¯à®•à¯à®•à®µà¯à®®à¯.",
'upload-success-subj' => 'வெறà¯à®±à®¿à®•à®°à®®à®¾à®© பதிவேறà¯à®±à®®à¯',
'upload-failure-subj' => 'பதிவேறà¯à®±à®¤à¯à®¤à®¿à®²à¯ à®à®±à¯à®ªà®Ÿà¯à®Ÿà®¤à¯ தொலà¯à®²à¯ˆ',
@@ -1566,6 +1561,7 @@ $1 பயனரையோ அலà¯à®²à®¤à¯ வேற௠[[{{MediaWiki:Grouppage
'pager-newer-n' => '{{PLURAL:$1|பà¯à®¤à®¿à®¯ à®’à®°à¯|பà¯à®¤à®¿à®¯ $1}}',
'pager-older-n' => '{{PLURAL:$1|பழைய à®’à®°à¯|பழைய $1}}',
'suppress' => 'கவனகà¯à®•à¯à®±à¯ˆà®µà¯',
+'querypage-disabled' => 'செயலà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ காரணஙà¯à®•à®³à¯à®•à¯à®•à®¾à®• இநà¯à®¤ சிறபà¯à®ªà¯ பகà¯à®•à®®à¯ à®®à¯à®Ÿà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯.',
# Book sources
'booksources' => 'நூல௠மூலஙà¯à®•à®³à¯',
@@ -1650,28 +1646,31 @@ $1 பயனரையோ அலà¯à®²à®¤à¯ வேற௠[[{{MediaWiki:Grouppage
'listgrouprights-removegroup-all' => 'எலà¯à®²à®¾ கà¯à®´à¯à®•à¯à®•à®³à¯ˆà®¯à¯à®®à¯ நீகà¯à®•à¯',
# E-mail user
-'mailnologin' => 'அனà¯à®ªà¯à®ªà¯à®®à¯ à®®à¯à®•à®µà®°à®¿ இலà¯à®²à¯ˆ',
-'mailnologintext' => 'நீஙà¯à®•à®³à¯[[Special:UserLogin|பà¯à®•à¯à®ªà®¤à®¿à®•à¯ˆ செயà¯à®¤à®¿à®°à¯à®ªà¯à®ªà®¤à¯à®Ÿà®©à¯]]
+'mailnologin' => 'அனà¯à®ªà¯à®ªà¯à®®à¯ à®®à¯à®•à®µà®°à®¿ இலà¯à®²à¯ˆ',
+'mailnologintext' => 'நீஙà¯à®•à®³à¯[[Special:UserLogin|பà¯à®•à¯à®ªà®¤à®¿à®•à¯ˆ செயà¯à®¤à®¿à®°à¯à®ªà¯à®ªà®¤à¯à®Ÿà®©à¯]]
à®à®©à¯ˆà®¯ பயனரà¯à®•à®³à¯à®•à¯à®•à¯ மினà¯à®©à®žà¯à®šà®²à¯ அனà¯à®ªà¯à®ªà®•à¯à®•à¯‚டியதà¯à®¤à®¾à®• செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®¾à®•à®•à¯à®•à¯‚டிய மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿à®¯à¯Šà®©à¯à®±à¯à®®à¯ உஙà¯à®•à®³à¯à®Ÿà¯ˆà®¯ [[Special:Preferences|விரà¯à®ªà¯à®ªà®¤à¯ தெரிவà¯à®•à®³à®¿à®²à¯]] கொடà¯à®ªà®Ÿà¯à®Ÿà®¿à®°à¯à®•à¯à®•à®µà¯‡à®£à¯à®Ÿà¯à®®à¯.',
-'emailuser' => 'இப௠பயனரà¯à®•à¯à®•à¯ மினà¯à®©à®žà¯à®šà®²à¯ செயà¯',
-'emailpage' => 'மினà¯à®©à®žà¯à®šà®²à¯ பயனரà¯',
-'emailpagetext' => 'நீஙà¯à®•à®³à¯ கீழà¯à®µà®°à¯à®®à¯ படிவதà¯à®¤à¯ˆ உபயோகிதà¯à®¤à¯ இநà¯à®¤ பயனரà¯à®•à¯à®•à¯ மினà¯à®©à®žà¯à®šà®²à¯ செயà¯à®¯à®²à®¾à®®à¯.
+'emailuser' => 'இப௠பயனரà¯à®•à¯à®•à¯ மினà¯à®©à®žà¯à®šà®²à¯ செயà¯',
+'emailpage' => 'மினà¯à®©à®žà¯à®šà®²à¯ பயனரà¯',
+'emailpagetext' => 'நீஙà¯à®•à®³à¯ கீழà¯à®µà®°à¯à®®à¯ படிவதà¯à®¤à¯ˆ உபயோகிதà¯à®¤à¯ இநà¯à®¤ பயனரà¯à®•à¯à®•à¯ மினà¯à®©à®žà¯à®šà®²à¯ செயà¯à®¯à®²à®¾à®®à¯.
[[Special:Preferences|என௠விரà¯à®ªà¯à®ªà®¤à¯à®¤à¯‡à®°à¯à®µà¯à®•à®³à®¿à®²à¯]] நீஙà¯à®•à®³à¯ கொடà¯à®¤à¯à®¤à¯à®³à¯à®³ மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿ மினà¯à®©à®žà¯à®šà®²à®¿à®©à¯ "From" à®®à¯à®•à®µà®°à®¿à®¯à®¾à®•à®•à¯ காடà¯à®šà®¿ தரà¯à®®à¯, இதனால௠பெறà¯à®¨à®°à¯ உஙà¯à®•à®³à¯à®•à¯à®•à¯ நேரடியாக பதில௠எழà¯à®¤ à®®à¯à®Ÿà®¿à®¯à¯à®®à¯.',
-'usermailererror' => 'மினà¯à®©à®žà¯à®šà®²à¯ விளைவாகà¯à®•à®¿à®¯ தவறà¯:',
-'defemailsubject' => '{{SITENAME}} மினà¯à®©à®žà¯à®šà®²à¯',
-'noemailtitle' => 'மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿ இலà¯à®²à¯ˆ',
-'noemailtext' => 'இப௠பயனர௠ஒர௠செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®¾à®•à®•à¯à®•à¯‚டிய மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿à®¯à¯ˆà®•à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®µà®¿à®²à¯à®²à¯ˆ.',
-'email-legend' => 'மறà¯à®±à¯Šà®°à¯ {{SITENAME}} பயனரà¯à®•à¯à®•à¯ ஒர௠மினà¯à®©à®žà¯à®šà®²à¯ அனà¯à®ªà¯à®ªà¯',
-'emailfrom' => 'அனà¯à®ªà¯à®ªà¯à®¨à®°à¯:',
-'emailto' => 'பெறà¯à®¨à®°à¯:',
-'emailsubject' => 'பொரà¯à®³à¯:',
-'emailmessage' => 'தகவலà¯:',
-'emailsend' => 'அனà¯à®ªà¯à®ªà¯',
-'emailccme' => 'என௠கரà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à®¿à®©à¯ நகலொனà¯à®±à¯ˆ எனகà¯à®•à¯ மினà¯à®©à®žà¯à®šà®²à®¿à®Ÿà¯',
-'emailccsubject' => '$1 பயனரà¯à®•à¯à®•à®¾à®© உஙà¯à®•à®³à¯ மினà¯à®©à®žà¯à®šà®²à®¿à®©à¯ நகலà¯: $2',
-'emailsent' => 'மினà¯à®©à®žà¯à®šà®²à¯ அனà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯',
-'emailsenttext' => 'உஙà¯à®•à®³à¯ மினà¯à®©à®žà¯à®šà®²à¯ செயà¯à®¤à®¿ அனà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.',
+'usermailererror' => 'மினà¯à®©à®žà¯à®šà®²à¯ விளைவாகà¯à®•à®¿à®¯ தவறà¯:',
+'defemailsubject' => '{{SITENAME}} மினà¯à®©à®žà¯à®šà®²à¯',
+'noemailtitle' => 'மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿ இலà¯à®²à¯ˆ',
+'noemailtext' => 'இப௠பயனர௠ஒர௠செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®¾à®•à®•à¯à®•à¯‚டிய மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿à®¯à¯ˆà®•à¯ கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà®µà®¿à®²à¯à®²à¯ˆ.',
+'emailtarget' => 'பெறà¯à®¨à®°à®¿à®©à¯ பயனர௠பெயரை உளà¯à®³à®¿à®Ÿà®µà¯à®®à¯',
+'emailusername' => 'பயனர௠பெயரà¯:',
+'emailusernamesubmit' => 'சமரà¯à®ªà¯à®ªà®¿',
+'email-legend' => 'மறà¯à®±à¯Šà®°à¯ {{SITENAME}} பயனரà¯à®•à¯à®•à¯ ஒர௠மினà¯à®©à®žà¯à®šà®²à¯ அனà¯à®ªà¯à®ªà¯',
+'emailfrom' => 'அனà¯à®ªà¯à®ªà¯à®¨à®°à¯:',
+'emailto' => 'பெறà¯à®¨à®°à¯:',
+'emailsubject' => 'பொரà¯à®³à¯:',
+'emailmessage' => 'தகவலà¯:',
+'emailsend' => 'அனà¯à®ªà¯à®ªà¯',
+'emailccme' => 'என௠கரà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à®¿à®©à¯ நகலொனà¯à®±à¯ˆ எனகà¯à®•à¯ மினà¯à®©à®žà¯à®šà®²à®¿à®Ÿà¯',
+'emailccsubject' => '$1 பயனரà¯à®•à¯à®•à®¾à®© உஙà¯à®•à®³à¯ மினà¯à®©à®žà¯à®šà®²à®¿à®©à¯ நகலà¯: $2',
+'emailsent' => 'மினà¯à®©à®žà¯à®šà®²à¯ அனà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯',
+'emailsenttext' => 'உஙà¯à®•à®³à¯ மினà¯à®©à®žà¯à®šà®²à¯ செயà¯à®¤à®¿ அனà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.',
# Watchlist
'watchlist' => 'என௠கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯',
@@ -1680,9 +1679,9 @@ $1 பயனரையோ அலà¯à®²à®¤à¯ வேற௠[[{{MediaWiki:Grouppage
'watchlistanontext' => 'உமத௠கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆ பாரà¯à®• அலà¯à®²à®¤à¯ தொகà¯à®•à¯à®• à®…à®°à¯à®³à¯ கூரà¯à®¨à¯à®¤à¯ $1.',
'watchnologin' => 'பà¯à®•à¯à®ªà®¤à®¿à®•à¯ˆ செயà¯à®¯à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ.',
'watchnologintext' => 'உஙà¯à®•à®³à¯ கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ திரà¯à®¤à¯à®¤à®®à¯ செயà¯à®µà®¤à®±à¯à®•à¯, நீஙà¯à®•à®³à¯[[Special:UserLogin|பà¯à®•à¯à®ªà®¤à®¿à®•à¯ˆ செயà¯à®¤à®¿à®°à¯à®•à¯à®•à®µà¯‡à®£à¯à®Ÿà¯à®®à¯]].',
-'addedwatch' => 'கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ சேரà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯',
+'addwatch' => 'கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ சேரà¯',
'addedwatchtext' => "\"[[:\$1]]\" பகà¯à®•à®®à¯ உஙà¯à®•à®³à¯ [[Special:Watchlist|கவனிபà¯à®ªà¯à®ªà¯ பகà¯à®•à®¤à¯à®¤à®¿à®²à¯]] சேரà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯. இநà¯à®¤à®ªà¯ பகà¯à®•à®¤à¯à®¤à¯à®•à¯à®•à¯ எதிரà¯à®•à®¾à®²à®¤à¯à®¤à®¿à®²à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà®µà¯à®³à¯à®³ மாறà¯à®±à®™à¯à®•à®³à¯à®®à¯, அதனோடிணைநà¯à®¤ பேசà¯à®šà¯à®ªà¯ பகà¯à®•à®®à¯à®®à¯, à®…à®™à¯à®•à¯‡ படà¯à®Ÿà®¿à®¯à®²à®¿à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯. அதà¯à®¤à¯à®Ÿà®©à¯ தெரிநà¯à®¤à¯†à®Ÿà¯à®•à¯à®• வசதியாக [[Special:RecentChanges|அணà¯à®®à¯ˆà®¯ மாறà¯à®±à®™à¯à®•à®³à®¿à®©à¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯]] இத௠தடிதà¯à®¤ எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à®¿à®²à¯ காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®®à¯. பினà¯à®©à®°à¯, இப௠பகà¯à®•à®¤à¯à®¤à¯ˆ உஙà¯à®•à®³à¯ கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ நீகà¯à®• விரà¯à®®à¯à®ªà®¿à®©à®¾à®²à¯, பகà¯à®•à®šà¯ சடà¯à®Ÿà®¤à¯à®¤à®¿à®²à¯à®³à¯à®³ ''கவனிபà¯à®ªà¯ நீகà¯à®•à¯'' எனà¯à®± இணைபà¯à®ªà¯ˆà®šà¯ சொடà¯à®•à¯à®•à®µà¯à®®à¯.",
-'removedwatch' => 'கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯',
+'removewatch' => 'கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®°à¯à®¨à¯à®¤à¯ நீகà¯à®•à¯',
'removedwatchtext' => '"[[:$1]]" பகà¯à®•à®®à¯ [[Special:Watchlist|உஙà¯à®•à®³à¯ கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯]] இரà¯à®¨à¯à®¤à¯ நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.',
'watch' => 'கவனி',
'watchthispage' => 'இநà¯à®¤à®ªà¯ பகà¯à®•à®¤à¯à®¤à¯ˆà®•à¯ கவனிகà¯à®•à®µà¯à®®à¯',
@@ -1719,27 +1718,27 @@ $1 பயனரையோ அலà¯à®²à®¤à¯ வேற௠[[{{MediaWiki:Grouppage
'enotif_body' => 'வணகà¯à®•à®®à¯ $WATCHINGUSERNAME,
-{{SITENAME}} தளதà¯à®¤à®¿à®©à¯ $PAGETITLE பகà¯à®•à®®à¯ $PAGEEDITDATE அனà¯à®±à¯ $PAGEEDITOR எனà¯à®± பெயரà¯à®Ÿà¯ˆà®¯ பயனரால௠$CHANGEDORCREATED, இபà¯à®ªà®•à¯à®•à®¤à¯à®¤à®¿à®©à¯ தறà¯à®ªà¯‹à®¤à¯ˆà®¯ பதிபà¯à®ªà¯ˆ $PAGETITLE_URL எனà¯à®± இணைபà¯à®ªà®¿à®©à¯ வழிச௠செனà¯à®±à¯à®•à¯ காணலாமà¯.
+{{SITENAME}} தளதà¯à®¤à®¿à®©à¯ $PAGETITLE பகà¯à®•à®®à¯ $PAGEEDITDATE அனà¯à®±à¯ $PAGEEDITOR எனà¯à®± பெயரà¯à®Ÿà¯ˆà®¯ பயனரால௠$CHANGEDORCREATED, இபà¯à®ªà®•à¯à®•à®¤à¯à®¤à®¿à®©à¯ தறà¯à®ªà¯‹à®¤à¯ˆà®¯ பதிபà¯à®ªà¯ˆ $PAGETITLE_URL எனà¯à®± இணைபà¯à®ªà®¿à®©à¯ வழிச௠செனà¯à®±à¯ காணலாமà¯.
$NEWPAGE
தொகà¯à®ªà¯à®ªà¯à®šà¯ சà¯à®°à¯à®•à¯à®•à®®à¯: $PAGESUMMARY $PAGEMINOREDIT
-தொகà¯à®¤à¯à®¤à®µà®°à¯ˆ அனà¯à®•:
+தொகà¯à®¤à¯à®¤à®µà®°à¯ˆ அணà¯à®•:
மினà¯à®©à®žà¯à®šà®²à¯: $PAGEEDITOR_EMAIL
விகà¯à®•à®¿: $PAGEEDITOR_WIKI
-இபà¯à®ªà®•à¯à®•à®¤à¯à®¤à¯ˆ நீஙà¯à®•à®³à¯ மீணà¯à®Ÿà¯à®®à¯ பாரà¯à®•à¯à®•à¯à®®à¯ வரையà¯à®®à¯ அதில௠செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®®à¯ மாறà¯à®±à®™à¯à®•à®³à¯ தொடரà¯à®ªà®¿à®®à¯ அறிவிதà¯à®¤à®²à¯à®•à®³à¯ வழஙà¯à®•à®ªà¯à®ªà®Ÿ மாடà¯à®Ÿà®¤à¯. உஙà¯à®•à®³à¯ கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯à®³à¯à®³ பகà¯à®•à®™à¯à®•à®³à¯à®•à¯à®•à®¾à®© அறிவிதà¯à®¤à®²à¯ கà¯à®±à®¿à®•à®³à¯ˆ உஙà¯à®•à®³à¯ கவனிபà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯‡à®¯à¯‡ மாறà¯à®±à®²à®¾à®®à¯.
+இபà¯à®ªà®•à¯à®•à®¤à¯à®¤à¯ˆ நீஙà¯à®•à®³à¯ மீணà¯à®Ÿà¯à®®à¯ பாரà¯à®•à¯à®•à¯à®®à¯ வரையà¯à®®à¯ அதில௠செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®®à¯ மாறà¯à®±à®™à¯à®•à®³à¯ தொடரà¯à®ªà®¾à®© அறிவிபà¯à®ªà¯à®•à®³à¯ வழஙà¯à®•à®ªà¯à®ªà®Ÿà®®à®¾à®Ÿà¯à®Ÿà®¾à®¤à¯. உஙà¯à®•à®³à¯ கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯à®³à¯à®³ பகà¯à®•à®™à¯à®•à®³à¯à®•à¯à®•à®¾à®© அறிவிதà¯à®¤à®²à¯ கà¯à®±à®¿à®•à®³à¯ˆ உஙà¯à®•à®³à¯ கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯‡à®¯à¯‡ மாறà¯à®±à®²à®¾à®®à¯.
உஙà¯à®•à®³à¯ தோழமையà¯à®³à¯à®³ {{SITENAME}} தளதà¯à®¤à®¿à®©à¯ அறிவிதà¯à®¤à®²à¯ அமைபà¯à®ªà¯
--
உஙà¯à®•à®³à¯ கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯ அமைவà¯à®•à®³à¯ˆ மாறà¯à®±
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
பினà¯à®©à¯‚டà¯à®Ÿà®®à¯, மேலதிக உதவிகளà¯à®•à¯à®•à¯:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'பகà¯à®•à®¤à¯à®¤à¯ˆ நீகà¯à®•à¯',
@@ -1755,7 +1754,7 @@ $NEWPAGE
à®…à®°à¯à®³à¯ கூரà¯à®¨à¯à®¤à¯ உஙà¯à®•à®³à¯ செயà¯à®•à¯ˆà®¯à®¿à®©à¯ விளைவà¯à®•à®³à¯ˆ நீஙà¯à®•à®³à¯ விளà¯à®™à¯à®•à®¿à®•à¯ கொணà¯à®Ÿà¯€à®°à¯à®•à®³à¯ எனà¯à®ªà®¤à¯ˆà®¯à¯à®®à¯ இத௠[[{{MediaWiki:Policy-url}}|கொளà¯à®•à¯ˆà®•à®³à¯à®Ÿà®©à¯]] ஒதà¯à®¤à¯à®ªà¯à®ªà¯‹à®µà®¤à¯ˆà®¯à¯à®®à¯ உறà¯à®¤à®¿à®ªà¯ படà¯à®¤à¯à®¤à®µà¯à®®à¯.',
'actioncomplete' => 'செயறà¯à®ªà®¾à®Ÿà¯ நிறைவà¯à®±à¯à®±à®¤à¯',
'actionfailed' => 'செயல௠வெறà¯à®±à®¿à®¯à®Ÿà¯ˆà®¯à®µà®¿à®²à¯à®²à¯ˆ',
-'deletedtext' => '"<nowiki>$1</nowiki>" நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯ விடà¯à®Ÿà®¤à¯. அணà¯à®®à¯ˆà®¯ நீகà¯à®•à¯à®¤à®²à¯à®•à®³à®¿à®©à¯ பதிவà¯à®•à¯à®•à¯ $2 à®à®ªà¯ பாரà¯à®•à¯à®•.',
+'deletedtext' => '"$1" நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯ விடà¯à®Ÿà®¤à¯. அணà¯à®®à¯ˆà®¯ நீகà¯à®•à¯à®¤à®²à¯à®•à®³à®¿à®©à¯ பதிவà¯à®•à¯à®•à¯ $2 à®à®ªà¯ பாரà¯à®•à¯à®•.',
'deletedarticle' => '"[[$1]]" நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯',
'dellogpage' => 'நீகà¯à®•à®²à¯ பதிவà¯',
'dellogpagetext' => 'கீழே காணபà¯à®ªà®Ÿà¯à®µà®¤à¯ மிக அணà¯à®®à¯ˆà®¯ நீகà¯à®•à®²à¯à®•à®³à®¿à®©à¯ அடà¯à®Ÿà®µà®£à¯ˆà®¯à®¾à®•à¯à®®à¯.',
@@ -1804,7 +1803,7 @@ $NEWPAGE
'protectexpiry' => 'à®®à¯à®Ÿà®¿à®µà¯à®±à¯à®•à®¿à®±à®¤à¯:',
'protect_expiry_invalid' => 'பொரà¯à®¤à¯à®¤à®®à®±à¯à®± à®®à¯à®Ÿà®¿à®µà¯ நாளà¯',
'protect_expiry_old' => 'à®®à¯à®Ÿà®¿à®µà¯ நாள௠கடநà¯à®¤à®•à¯ காலதà¯à®¤à®¿à®²à¯ உளà¯à®³à®¤à¯.',
-'protect-text' => "நீஙà¯à®•à®³à¯ '''<nowiki>$1</nowiki>''' பகà¯à®•à®¤à¯à®¤à¯à®•à¯à®•à®¾à®© காபà¯à®ªà¯ நிலையைப௠பாரà¯à®¤à¯à®¤à¯ அதனை மாறà¯à®± à®®à¯à®Ÿà®¿à®¯à¯à®®à¯.",
+'protect-text' => "நீஙà¯à®•à®³à¯ '''$1''' பகà¯à®•à®¤à¯à®¤à¯à®•à¯à®•à®¾à®© காபà¯à®ªà¯ நிலையைப௠பாரà¯à®¤à¯à®¤à¯ அதனை மாறà¯à®± à®®à¯à®Ÿà®¿à®¯à¯à®®à¯.",
'protect-locked-blocked' => "நீஙà¯à®•à®³à¯ தடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³ நிலையில௠பகà¯à®• காபà¯à®ªà¯ நிலைகளை மாறà¯à®± à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯. தறà¯à®ªà¯‹à®¤à¯ˆ பகà¯à®• காபà¯à®ªà¯ நிலை பினà¯à®µà®°à¯à®®à®¾à®±à¯ '''$1''':",
'protect-locked-dblock' => "தறà¯à®ªà¯‹à®¤à¯à®³à¯à®³ தரவà¯à®¤à¯à®¤à®³ பூடà¯à®Ÿà®¿à®©à¯ காரணமாக பகà¯à®• காபà¯à®ªà¯ நிலைகள௠மாறà¯à®±à®ªà¯ படமà¯à®Ÿà®¿à®¯à®¾à®¤à¯.
'''$1''' பகà¯à®•à®¤à¯à®¤à¯à®•à¯à®•à®¾à®© தறà¯à®ªà¯‹à®¤à¯ˆà®¯ அமைவà¯à®•à®³à¯:",
@@ -1890,9 +1889,10 @@ $1',
'undelete-show-file-submit' => 'ஆமà¯',
# Namespace form on various pages
-'namespace' => 'பெயரà¯à®µà¯†à®³à®¿:',
-'invert' => 'தெரிவைத௠தலைகீழாகà¯à®•à¯',
-'blanknamespace' => '(à®®à¯à®¤à®©à¯à®®à¯ˆ)',
+'namespace' => 'பெயரà¯à®µà¯†à®³à®¿:',
+'invert' => 'தெரிவைத௠தலைகீழாகà¯à®•à¯',
+'namespace_association' => 'தொடரà¯à®ªà¯à®Ÿà¯ˆà®¯ பெயரà¯à®µà¯†à®³à®¿',
+'blanknamespace' => '(à®®à¯à®¤à®©à¯à®®à¯ˆ)',
# Contributions
'contributions' => 'பயனர௠பஙà¯à®•à®³à®¿à®ªà¯à®ªà¯à®•à¯à®•à®³à¯',
@@ -1935,11 +1935,12 @@ $1',
'whatlinkshere-filters' => 'வடிகடà¯à®Ÿà®¿à®•à®³à¯',
# Block/unblock
+'block' => 'பயனரைத௠தடைசெயà¯',
+'unblock' => 'பயனர௠தடையை நீகà¯à®•à¯',
'blockip' => 'பயனரைத௠தடà¯',
'blockip-legend' => 'பயனரைத௠தடà¯',
'blockiptext' => 'ஒர௠கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ à®à®ªà®¿ à®®à¯à®•à®µà®°à®¿ அலà¯à®²à®¤à¯ பயனரிடமிரà¯à®¨à¯à®¤à¯ எழà¯à®¤à¯à®¤à¯ அணà¯à®•à¯à®•à®¤à¯à®¤à¯ˆà®¤à¯ தடà¯à®ªà¯à®ªà®¤à®±à¯à®•à¯à®•à¯ கீழேயà¯à®³à¯à®³ படிவதà¯à®¤à¯ˆ உபயோகிகà¯à®•à®µà¯à®®à¯. இத௠விசமதà¯à®¤à®©à®¤à¯à®¤à¯ˆà®¤à¯ தடà¯à®ªà¯à®ªà®¤à®±à¯à®•à¯à®®à¯ [[{{MediaWiki:Policy-url}}|{{SITENAME}} கொளà¯à®•à¯ˆ]]கà¯à®•à¯ எறà¯à®ªà¯à®Ÿà¯ˆà®¯ வகையிலà¯à®®à¯ மடà¯à®Ÿà¯à®®à¯‡ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿ வேணà¯à®Ÿà¯à®®à¯.
கà¯à®±à®¿à®ªà¯à®ªà®¿à®Ÿà¯à®Ÿ காரணமொனà¯à®±à¯ˆà®•à¯ கீழே நிரபà¯à®ªà¯à®• (எடà¯à®¤à¯à®¤à¯à®•à¯à®•à®¾à®Ÿà¯à®Ÿà®¾à®•, விசமதà¯à®¤à®©à®®à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ பகà¯à®•à®™à¯à®•à®³à¯ˆ எடà¯à®¤à¯à®¤à¯à®•à¯ காடà¯à®Ÿà®µà¯à®®à¯).',
-'ipaddress' => 'à®.பி. à®®à¯à®•à®µà®°à®¿:',
'ipadressorusername' => 'à®.பி. அலà¯à®²à®¤à¯ பயனர௠பெயரà¯:',
'ipbexpiry' => 'காலாவதி:',
'ipbreason' => 'காரணமà¯:',
@@ -1952,7 +1953,6 @@ $1',
** பொறà¯à®ªà¯à®ªà®±à¯à®± நடிவடிகà¯à®•à¯ˆà®•à®³à¯
** ஒர௠பயனர௠பல கணகà¯à®•à¯à®•à®³à¯ˆà®ªà¯ பேணலà¯
** à®à®±à¯à®±à¯à®•à¯à®•à¯Šà®³à¯à®³à®ªà¯à®ªà®Ÿà®®à¯à®Ÿà®¿à®¯à®¾à®¤ பயனர௠பெயரà¯',
-'ipbanononly' => 'அடையாளம௠காடà¯à®Ÿà®¾à®¤ பயனரà¯à®•à®³à¯ˆ மடà¯à®Ÿà¯à®®à¯ தடà¯',
'ipbcreateaccount' => 'கணகà¯à®•à¯à®•à®³à¯ தொடஙà¯à®•à¯à®µà®¤à¯ˆà®¤à¯ தடà¯',
'ipbemailban' => 'பயனர௠மினà¯à®©à®žà¯à®šà®²à¯ செயà¯à®µà®¤à¯ˆà®¤à¯ தடà¯',
'ipbenableautoblock' => 'தானியகà¯à®•à®®à®¾à®• இபà¯à®ªà®¯à®©à®°à¯ கடைசியாகப௠பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿à®¯ à®.பி à®®à¯à®•à®µà®°à®¿à®¯à¯ˆà®¯à¯à®®à¯ பஙà¯à®•à®³à®¿à®•à¯à®• à®®à¯à®¯à®²à¯à®®à¯ à®.பி. à®®à¯à®•à®µà®°à®¿à®•à®³à¯ˆà®¯à¯à®®à¯ தடை செயà¯',
@@ -1962,6 +1962,7 @@ $1',
'ipbotheroption' => 'மறà¯à®±à®µà¯ˆ',
'ipbotherreason' => 'வேற௠மேலதிக காரணமà¯:',
'ipbhidename' => 'தொகà¯à®ªà¯à®ªà¯à®•à¯à®•à®³à¯ மறà¯à®±à¯à®®à¯ படà¯à®Ÿà®¿à®¯à®²à¯à®•à®³à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ பயனர௠பெயரை மறைகà¯à®•à®µà¯à®®à¯',
+'ipb-confirm' => 'தடையை உறà¯à®¤à®¿à®šà¯†à®¯à¯',
'badipaddress' => 'செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®±à¯à®± à®.பி. à®®à¯à®•à®µà®°à®¿',
'blockipsuccesssub' => 'தடà¯à®ªà¯à®ªà¯ வெறà¯à®±à®¿',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] தடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¾à®°à¯.<br />
@@ -1976,11 +1977,11 @@ $1',
'ipusubmit' => 'இநà¯à®¤à®¤à¯ தடையை நீகà¯à®•à¯',
'unblocked' => '[[User:$1|$1]] பயனரà¯à®•à¯à®•à®¾à®© தடை நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯',
'unblocked-id' => '$1 தடை நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯',
+'blocklist' => 'தடைசெயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ பயனரà¯à®•à®³à¯',
'ipblocklist' => 'தடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ à®à®ªà®¿ à®®à¯à®•à®µà®°à®¿à®•à®³à¯ மறà¯à®±à¯à®®à¯ பயனரà¯à®ªà¯†à®¯à®°à¯à®•à®³à®¿à®©à¯ படà¯à®Ÿà®¿à®¯à®²à¯',
'ipblocklist-legend' => 'தடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ பயனரொரà¯à®µà®°à¯ˆà®¤à¯ தேடà¯',
-'ipblocklist-username' => 'பயனர௠பெயர௠அலà¯à®²à®¤à¯ à®.பி. à®®à¯à®•à®µà®°à®¿:',
+'blocklist-reason' => 'காரணமà¯',
'ipblocklist-submit' => 'தேடà¯à®•',
-'blocklistline' => '$1, தடà¯à®¤à¯à®¤à®µà®°à¯:$2, தடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®µà®°à¯:$3 ($4)',
'infiniteblock' => 'காலவரையறையறà¯à®±',
'expiringblock' => '$1-தேதியிலà¯, $2-மணிகà¯à®•à¯ இத௠காலாவதியாகிறதà¯',
'anononlyblock' => 'அடையாளம௠காடà¯à®Ÿà®¾à®¤ பயனர௠மடà¯à®Ÿà¯à®®à¯',
@@ -1996,7 +1997,7 @@ $1',
'autoblocker' => 'நீஙà¯à®•à®³à¯ "[[User:$1|$1]]" உடன௠ஒரே à®.பி. à®®à¯à®•à®µà®°à®¿à®¯à¯ˆà®ªà¯ பகிரà¯à®¨à¯à®¤à¯à®•à¯Šà®³à¯à®µà®¤à®¾à®²à¯ தானியஙà¯à®•à®¿à®¤à¯ தடை விதிகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯. $1இன௠தடà¯à®ªà¯à®ªà¯à®•à¯à®•à®¾à®• கொடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®•à¯ காரணமà¯: "$2".',
'blocklogpage' => 'தடைப௠பதிகை',
'blocklogentry' => '$2, $3 அனà¯à®±à¯ காலாவதியாகà¯à®®à¯ வகையில௠[[$1]] தடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯',
-'blocklogtext' => 'இத௠ஒர௠பயனரின௠தடà¯à®ªà¯à®ªà¯ தடை நீகà¯à®•à®²à¯ செயறà¯à®ªà®¾à®Ÿà¯à®•à®³à¯à®•à¯à®•à®¾à®© பதிவாகà¯à®®à¯. தானியஙà¯à®•à®¿ à®®à¯à®±à¯ˆà®¯à®¿à®²à¯ தடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®®à¯ à®à®ªà®¿ à®®à¯à®•à®µà®°à®¿à®•à®³à¯ இபà¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ இடமà¯à®ªà¯†à®±à®¾. தறà¯à®ªà¯‹à®¤à¯ செயறà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯à®³à¯à®³ தடைகளையà¯à®®à¯ à®®à¯à®Ÿà®•à¯à®•à®™à¯à®•à®³à¯ˆà®¯à¯à®®à¯ [[Special:IPBlockList|à®.பி. தடà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯]] பாரà¯à®•à¯à®•.',
+'blocklogtext' => 'இத௠ஒர௠பயனரின௠தடà¯à®ªà¯à®ªà¯ தடை நீகà¯à®•à®²à¯ செயறà¯à®ªà®¾à®Ÿà¯à®•à®³à¯à®•à¯à®•à®¾à®© பதிவாகà¯à®®à¯. தானியஙà¯à®•à®¿ à®®à¯à®±à¯ˆà®¯à®¿à®²à¯ தடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®®à¯ à®à®ªà®¿ à®®à¯à®•à®µà®°à®¿à®•à®³à¯ இபà¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ இடமà¯à®ªà¯†à®±à®¾. தறà¯à®ªà¯‹à®¤à¯ செயறà¯à®ªà®¾à®Ÿà¯à®Ÿà®¿à®²à¯à®³à¯à®³ தடைகளையà¯à®®à¯ à®®à¯à®Ÿà®•à¯à®•à®™à¯à®•à®³à¯ˆà®¯à¯à®®à¯ [[Special:BlockList|à®.பி. தடà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯]] பாரà¯à®•à¯à®•.',
'unblocklogentry' => '"$1" தொடரà¯à®ªà®¾à®© தடà¯à®ªà¯à®ªà¯ நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯',
'block-log-flags-anononly' => 'அடையாளம௠காடà¯à®Ÿà®¾à®¤ பயனர௠மடà¯à®Ÿà¯à®®à¯',
'block-log-flags-nocreate' => 'கணகà¯à®•à¯ தொடகà¯à®•à®®à¯ à®®à¯à®Ÿà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®¤à¯',
@@ -2103,7 +2104,7 @@ $1',
'allmessagesdefault' => 'இயலà¯à®ªà®¿à®°à¯à®ªà¯à®ªà¯ உரை',
'allmessagescurrent' => 'தறà¯à®ªà¯‹à®¤à¯ˆà®¯ உரை',
'allmessagestext' => 'இத௠மீடியாவிகà¯à®•à®¿ பெயரà¯à®µà¯†à®³à®¿à®¯à®¿à®²à¯à®³à¯à®³ எலà¯à®²à®¾ à®®à¯à®±à¯ˆà®®à¯ˆ தகவலà¯à®•à®³à®¿à®©à®¤à¯à®®à¯ படà¯à®Ÿà®¿à®¯à®²à®¾à®•à¯à®®à¯.
-மொழிபெயரà¯à®ªà¯à®ªà®¿à®²à¯ உதவ விரà¯à®®à¯à®ªà®¿à®©à¯ à®…à®°à¯à®³à¯à®•à¯‚à®°à¯à®¨à¯à®¤à¯ [http://translatewiki.net பீடà¯à®Ÿà®¾à®µà®¿à®•à¯à®•à®¿], [http://www.mediawiki.org/wiki/Localisation மீடியாவிகà¯à®•à®¿ மொழியாகà¯à®•] தளஙà¯à®•à®³à¯à®•à¯à®•à¯à®šà¯ செலà¯à®²à®µà¯à®®à¯.',
+மொழிபெயரà¯à®ªà¯à®ªà®¿à®²à¯ உதவ விரà¯à®®à¯à®ªà®¿à®©à¯ à®…à®°à¯à®³à¯à®•à¯‚à®°à¯à®¨à¯à®¤à¯ [//translatewiki.net பீடà¯à®Ÿà®¾à®µà®¿à®•à¯à®•à®¿], [//www.mediawiki.org/wiki/Localisation மீடியாவிகà¯à®•à®¿ மொழியாகà¯à®•] தளஙà¯à®•à®³à¯à®•à¯à®•à¯à®šà¯ செலà¯à®²à®µà¯à®®à¯.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' à®®à¯à®Ÿà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®ªà¯ படியால௠இபà¯à®ªà®•à¯à®•à®¤à®¤à¯ˆ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯.",
'allmessages-filter-legend' => 'வடிகடà¯à®Ÿà®¿',
'allmessages-filter-unmodified' => 'மாறà¯à®±à®®à¯ செயà¯à®¯à®ªà¯à®ªà®Ÿà®¾à®¤à®¤à¯',
@@ -2247,35 +2248,18 @@ $1',
'spam_blanking' => '$1 தளதà¯à®¤à¯à®•à¯à®•à¯ இணைபà¯à®ªà¯ˆ கொணà¯à®Ÿ திரà¯à®¤à¯à®¤à®™à¯à®•à®³à¯ˆ வெறà¯à®®à¯ˆà®¯à®¾à®•à¯à®•à®²à¯',
# Info page
-'infosubtitle' => 'பகà¯à®•à®¤à¯à®¤à¯à®•à¯à®•à®¾à®© தகவலà¯',
-'numedits' => 'தொகà¯à®ªà¯à®ªà¯à®•à®³à®¿à®©à¯ எணà¯à®£à®¿à®•à¯à®•à¯ˆ (பகà¯à®•à®™à¯à®•à®³à¯): $1',
-'numtalkedits' => 'தொகà¯à®ªà¯à®ªà¯à®•à®³à®¿à®©à¯ எணà¯à®£à®¿à®•à¯à®•à¯ˆ (உரையாடல௠பகà¯à®•à®™à¯à®•à®³à¯): $1',
-'numwatchers' => 'இபà¯à®ªà®•à¯à®•à®¤à¯à®¤à¯ˆà®•à¯ கவனிபà¯à®ªà®µà®°à¯à®•à®³à¯: $1',
-'numauthors' => 'எழà¯à®¤à¯à®¤à®¾à®³à®°à¯à®•à®³à®¿à®©à¯ எணà¯à®£à®¿à®•à¯à®•à¯ˆ (பகà¯à®•à®®à¯): $1',
-'numtalkauthors' => 'எழà¯à®¤à¯à®¤à®¾à®³à®°à¯à®•à®³à®¿à®©à¯ எணà¯à®£à®¿à®•à¯à®•à¯ˆ (உரையாடல௠பகà¯à®•à®®à¯): $1',
+'pageinfo-header-edits' => 'தொகà¯à®ªà¯à®ªà¯à®•à®³à¯',
+'pageinfo-header-watchlist' => 'கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯',
+'pageinfo-header-views' => 'பாரà¯à®µà¯ˆà®•à®³à¯',
+'pageinfo-subjectpage' => 'பகà¯à®•à®®à¯',
+'pageinfo-talkpage' => 'பேசà¯à®šà¯à®ªà¯ பகà¯à®•à®®à¯',
+'pageinfo-edits' => 'தொகà¯à®ªà¯à®ªà¯à®•à®³à®¿à®©à¯ எணà¯à®£à®¿à®•à¯à®•à¯ˆ:',
# Skin names
'skinname-standard' => 'இயலà¯à®ªà®¾à®©',
'skinname-nostalgia' => 'பசà¯à®®à¯ˆ நினைவ௠(Nostalgia)',
'skinname-cologneblue' => 'கொலோன௠(Cologne) நீலம௠Blue',
-# Math options
-'mw_math_png' => 'எபà¯à®ªà¯‹à®¤à¯à®®à¯ பி.எனà¯.ஞà¯à®šà®¿ (PNG) ஆக மாறà¯à®±à¯',
-'mw_math_simple' => 'சிகà¯à®•à®²à®±à¯à®±à®¤à®¾à®¯à®¿à®©à¯ எசà¯.டி.எமà¯.எல௠(HTML), இலà¯à®²à®¾à®µà®¿à®Ÿà®¿à®²à¯ பி.எனà¯.ஞà¯à®šà®¿ (PNG)',
-'mw_math_html' => 'கூடà¯à®®à®¾à®©à®¾à®²à¯ எசà¯.டி.எமà¯.எல௠(HTML), இலà¯à®²à®¾à®µà®¿à®Ÿà®¿à®²à¯ பி.எனà¯.ஞà¯à®šà®¿ (PNG)',
-'mw_math_source' => 'TeX ஆக விடà¯à®Ÿà¯ வை (உரைசார௠உலாவிகளà¯à®•à¯à®•à¯)',
-'mw_math_modern' => 'பà¯à®¤à®¿à®¯ உலாவிகளà¯à®•à¯à®•à¯à®ªà¯ பரிநà¯à®¤à¯à®°à¯ˆà®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®µà®¤à¯',
-'mw_math_mathml' => 'கூடà¯à®®à®¾à®¯à®¿à®©à¯ MathML (சோதனை)',
-
-# Math errors
-'math_failure' => 'பாகà¯à®ªà®Ÿà¯à®¤à¯à®¤à®²à¯ தோலà¯à®µà®¿',
-'math_unknown_error' => 'அறியாத à®à®¤à¯‹à®µà¯Šà®°à¯ பிழை',
-'math_unknown_function' => 'அறியபà¯à®ªà®Ÿà®¾à®¤ செயறà¯à®ªà®¾à®Ÿà¯',
-'math_lexing_error' => 'தொகà¯à®¤à¯à®¤à®²à¯ (லெகà¯à®šà®¿à®™à¯) தவறà¯',
-'math_syntax_error' => 'தொடரமைபà¯à®ªà¯à®¤à¯ தவறà¯',
-'math_bad_tmpdir' => 'தறà¯à®•à®¾à®²à®¿à®• கணித அடைவை உரà¯à®µà®¾à®•à¯à®• அலà¯à®²à®¤à¯ எழà¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ',
-'math_bad_output' => 'கணித அடைவை உரà¯à®µà®¾à®•à¯à®• அலà¯à®²à®¤à¯ அதில௠எழà¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ.',
-
# Patrolling
'markaspatrolleddiff' => 'ரோநà¯à®¤à®¿à®Ÿà¯à®Ÿà®¤à®¾à®• கà¯à®±à®¿',
'markaspatrolledtext' => 'இபà¯à®ªà®•à¯à®•à®¤à¯à®¤à¯ˆ ரோநà¯à®¤à®¿à®Ÿà¯à®Ÿà®¤à®¾à®•à®•à¯ கà¯à®±à®¿',
@@ -2310,16 +2294,15 @@ $1',
'nextdiff' => 'அடà¯à®¤à¯à®¤ தொகà¯à®ªà¯à®ªà¯ →',
# Media information
-'mediawarning' => "'''எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ''': இநà¯à®¤à®•à¯ கோபà¯à®ªà¯ கேடà¯à®µà®¿à®³à¯ˆà®µà®¿à®•à¯à®•à®•à¯ கூடிய நிரலைக௠கொணà¯à®Ÿà®¿à®°à¯à®•à¯à®•à®²à®¾à®®à¯, இதனை செயறà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à®©à¯ மூலம௠உஙà¯à®•à®³à¯ கணனியின௠பாதà¯à®•à®¾à®ªà¯à®ªà¯ கேளà¯à®µà®¿à®•à¯à®±à¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà®²à®¾à®®à¯.",
-'imagemaxsize' => "படிமஙà¯à®•à®³à®¿à®©à¯ உசà¯à®š அளவà¯:<br />''(கோபà¯à®ªà¯à®•à¯à®•à®³à®¿à®©à¯ விவர பகà¯à®•à®™à¯à®•à®³à¯à®•à¯à®•à¯)''",
-'thumbsize' => 'சிற௠மà¯à®©à¯à®¤à¯‹à®±à¯à®±à®¤à¯à®¤à®¿à®©à¯ பரிமாணமà¯:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|பகà¯à®•à®®à¯|பகà¯à®•à®™à¯à®•à®³à¯}}',
-'file-info' => 'கோபà¯à®ªà®¿à®©à¯ அளவà¯: $1, MIME வகை: $2',
-'file-info-size' => '$1 × $2 படவணà¯à®•à¯à®•à®³à¯, கோபà¯à®ªà®¿à®©à¯ அளவà¯: $3, MIME வகை: $4',
-'file-nohires' => '<small>இதைவிட அளவில௠பெரிய படிமம௠இலà¯à®²à¯ˆ.</small>',
-'svg-long-desc' => 'SVG கோபà¯à®ªà¯, பெயரளவில௠$1 × $2 பிகà¯à®šà®²à¯à®•à®³à¯, கோபà¯à®ªà¯ அளவà¯: $3',
-'show-big-image' => 'à®®à¯à®´à¯ அளவிலான படிமமà¯',
-'show-big-image-thumb' => '<small>இநà¯à®¤ à®®à¯à®©à¯à®¤à¯‹à®±à¯à®±à®¤à¯à®¤à®¿à®©à¯ பரிமாணமà¯: $1 × $2 பிகà¯à®šà®²à¯à®•à®³à¯</small>',
+'mediawarning' => "'''எசà¯à®šà®°à®¿à®•à¯à®•à¯ˆ''': இநà¯à®¤à®•à¯ கோபà¯à®ªà¯ கேடà¯à®µà®¿à®³à¯ˆà®µà®¿à®•à¯à®•à®•à¯ கூடிய நிரலைக௠கொணà¯à®Ÿà®¿à®°à¯à®•à¯à®•à®²à®¾à®®à¯, இதனை செயறà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®µà®¤à®©à¯ மூலம௠உஙà¯à®•à®³à¯ கணனியின௠பாதà¯à®•à®¾à®ªà¯à®ªà¯ கேளà¯à®µà®¿à®•à¯à®±à¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà®²à®¾à®®à¯.",
+'imagemaxsize' => "படிமஙà¯à®•à®³à®¿à®©à¯ உசà¯à®š அளவà¯:<br />''(கோபà¯à®ªà¯à®•à¯à®•à®³à®¿à®©à¯ விவர பகà¯à®•à®™à¯à®•à®³à¯à®•à¯à®•à¯)''",
+'thumbsize' => 'சிற௠மà¯à®©à¯à®¤à¯‹à®±à¯à®±à®¤à¯à®¤à®¿à®©à¯ பரிமாணமà¯:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|பகà¯à®•à®®à¯|பகà¯à®•à®™à¯à®•à®³à¯}}',
+'file-info' => 'கோபà¯à®ªà®¿à®©à¯ அளவà¯: $1, MIME வகை: $2',
+'file-info-size' => '$1 × $2 படவணà¯à®•à¯à®•à®³à¯, கோபà¯à®ªà®¿à®©à¯ அளவà¯: $3, MIME வகை: $4',
+'file-nohires' => '<small>இதைவிட அளவில௠பெரிய படிமம௠இலà¯à®²à¯ˆ.</small>',
+'svg-long-desc' => 'SVG கோபà¯à®ªà¯, பெயரளவில௠$1 × $2 பிகà¯à®šà®²à¯à®•à®³à¯, கோபà¯à®ªà¯ அளவà¯: $3',
+'show-big-image' => 'à®®à¯à®´à¯ அளவிலான படிமமà¯',
# Special:NewFiles
'newimages' => 'பà¯à®¤à®¿à®¯ படிமஙà¯à®•à®³à¯ பகà¯à®•à®®à¯',
@@ -2351,7 +2334,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'அகலமà¯',
@@ -2363,12 +2352,10 @@ $1',
'exif-planarconfiguration' => 'தரவ௠அமைவà¯',
'exif-xresolution' => 'கிடை நà¯à®£à¯à®•à¯à®•à®®à¯',
'exif-yresolution' => 'நிலைகà¯à®•à¯à®¤à¯à®¤à¯ நà¯à®£à¯à®•à¯à®•à®®à¯',
-'exif-resolutionunit' => 'X, Y நà¯à®£à¯à®•à¯à®•à®³à®¿à®©à¯ அலகà¯',
'exif-stripoffsets' => 'படிமத௠தரவ௠அமைவிடமà¯',
'exif-rowsperstrip' => 'ஒர௠படà¯à®Ÿà¯ˆà®¯à®¿à®²à¯ உளà¯à®³ நிரைகளின௠எணà¯à®£à®¿à®•à¯à®•à¯ˆ',
'exif-stripbytecounts' => 'சà¯à®°à¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿ படà¯à®Ÿà®¿à®¯à®¿à®²à¯ உளà¯à®³ பைடà¯à®Ÿà¯à®•à®³à¯',
'exif-jpeginterchangeformatlength' => 'சே.பி.இ.சி (JPEG) தரவà¯à®•à®³à®¿à®©à¯ பைட௠அளவà¯',
-'exif-transferfunction' => 'இடமாறà¯à®± செயலà¯à®®à¯à®±à¯ˆ',
'exif-datetime' => 'கோபà¯à®ªà¯ மாறà¯à®± நாள௠நேரமà¯',
'exif-imagedescription' => 'படிம தலைபà¯à®ªà¯',
'exif-make' => 'படமி (கமெரா) படைபà¯à®ªà®¾à®³à®°à¯',
@@ -2383,7 +2370,6 @@ $1',
'exif-compressedbitsperpixel' => 'படிம சà¯à®±à¯à®•à¯à®• à®®à¯à®±à¯ˆ',
'exif-pixelydimension' => 'செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®¾à®© படிம அகலமà¯',
'exif-pixelxdimension' => 'செலà¯à®²à¯à®ªà®Ÿà®¿à®¯à®¾à®© படிம உயரமà¯',
-'exif-makernote' => 'உறà¯à®ªà®¤à¯à®¤à®¿à®¯à®¾à®³à®°à¯ கà¯à®±à®¿à®ªà¯à®ªà¯à®•à®³à¯',
'exif-usercomment' => 'பயனர௠கரà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯',
'exif-relatedsoundfile' => 'தொடரà¯à®ªà¯à®³à¯à®³ ஒலிகà¯à®•à¯‹à®ªà¯à®ªà¯',
'exif-datetimeoriginal' => 'தரவ௠உரà¯à®µà®¾à®•à¯à®• நாள௠நேரமà¯',
@@ -2415,7 +2401,6 @@ $1',
'exif-sensingmethod' => 'உணரà¯à®µà¯ à®®à¯à®±à¯ˆ',
'exif-filesource' => 'கோபà¯à®ªà¯ மூலமà¯',
'exif-scenetype' => 'காடà¯à®šà®¿ வகை',
-'exif-cfapattern' => 'சி.எஃபà¯.à®. கோலமà¯',
'exif-exposuremode' => 'மறைநீகà¯à®• à®®à¯à®±à¯ˆ',
'exif-whitebalance' => 'வெளà¯à®³à¯ˆà®šà¯ சமநிலை',
'exif-digitalzoomratio' => 'எணà¯à®®à®°à¯à®µà®¿ பெரà¯à®ªà¯à®ªà®¿à®¤à¯à®¤à®²à¯ விகிதமà¯',
@@ -2446,10 +2431,14 @@ $1',
'exif-gpsprocessingmethod' => 'பà¯à®µà®¿à®¯à®¿à®Ÿà®®à¯ காலம௠விரைவ௠காடà¯à®Ÿà®¿ செயலà¯à®®à¯à®±à¯ˆà®¯à®¿à®©à¯ பெயரà¯',
'exif-gpsareainformation' => 'பà¯à®µà®¿à®¯à®¿à®Ÿà®®à¯ காலம௠விரைவ௠காடà¯à®Ÿà®¿ பிரதேசதà¯à®¤à®¿à®©à¯ பெயரà¯',
'exif-gpsdatestamp' => 'பà¯à®µà®¿à®¯à®¿à®Ÿà®®à¯ காலம௠விரைவ௠காடà¯à®Ÿà®¿ நாளà¯',
+'exif-contact' => 'தொடரà¯à®ªà¯ விவரமà¯',
+'exif-copyrighted' => 'பதிபà¯à®ªà¯à®°à®¿à®®à¯ˆ நிலை',
# EXIF attributes
'exif-compression-1' => 'சà¯à®°à¯à®•à¯à®•à®ªà¯à®ªà®Ÿà®¾à®¤',
+'exif-copyrighted-true' => 'பதிபà¯à®ªà¯à®°à®¿à®®à¯ˆà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯',
+
'exif-unknowndate' => 'நாள௠தெரியாதà¯',
'exif-orientation-1' => 'வழமையான',
@@ -2549,21 +2538,43 @@ $1',
'exif-gpsspeed-m' => 'மணிதà¯à®¤à®¿à®¯à®¾à®²à®¤à¯à®¤à¯à®•à¯à®•à¯ மைலà¯à®•à®³à¯',
'exif-gpsspeed-n' => 'கடல௠மைலà¯/மணி',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'கிலோ மீடà¯à®Ÿà®°à¯à®•à®³à¯',
+'exif-gpsdestdistance-m' => 'மைலà¯à®•à®³à¯',
+'exif-gpsdestdistance-n' => 'கடல௠மைலà¯à®•à®³à¯',
+
+'exif-objectcycle-a' => 'காலை மடà¯à®Ÿà¯à®®à¯',
+'exif-objectcycle-p' => 'மாலை மடà¯à®Ÿà¯à®®à¯',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'உணà¯à®®à¯ˆà®¤à¯ திசை',
'exif-gpsdirection-m' => 'காநà¯à®¤ திசை',
+'exif-dc-contributor' => 'பஙà¯à®•à®³à®¿à®ªà¯à®ªà®¾à®³à®°à¯à®•à®³à¯',
+'exif-dc-publisher' => 'பதிபà¯à®ªà®¾à®³à®°à¯',
+'exif-dc-rights' => 'உரிமைகளà¯',
+
+'exif-rating-rejected' => 'நிராகரிதà¯à®¤à®¤à¯',
+
+'exif-iimcategory-edu' => 'கலà¯à®µà®¿',
+'exif-iimcategory-evn' => 'சà¯à®±à¯à®±à¯à®šà¯à®šà¯‚ழலà¯',
+'exif-iimcategory-hth' => 'சà¯à®•à®¾à®¤à®¾à®°à®®à¯',
+'exif-iimcategory-pol' => 'அரசியலà¯',
+'exif-iimcategory-rel' => 'மதம௠மறà¯à®±à¯à®®à¯ நமà¯à®ªà®¿à®•à¯à®•à¯ˆ',
+'exif-iimcategory-sci' => 'அறிவியல௠மறà¯à®±à¯à®®à¯ தொழிலà¯à®¨à¯à®Ÿà¯à®ªà®®à¯',
+'exif-iimcategory-soi' => 'சமூகப௠பிரசà¯à®©à¯ˆà®•à®³à¯',
+'exif-iimcategory-spo' => 'விளையாடà¯à®Ÿà¯',
+'exif-iimcategory-wea' => 'வானிலை',
+
# External editor support
'edit-externally' => 'இகà¯à®•à¯‹à®ªà¯à®ªà¯ˆ வெளி மெனà¯à®ªà¯Šà®°à¯à®³à¯ கொணà¯à®Ÿà¯ தொகà¯à®•à¯à®•',
-'edit-externally-help' => 'மேலà¯à®®à¯ தகவலà¯à®•à®³à¯à®•à¯à®•à¯ [http://www.mediawiki.org/wiki/Manual:External_editors அமைபà¯à®ªà¯ அறிவà¯à®±à¯à®¤à¯à®¤à®²à¯à®•à®³à¯] பகà¯à®•à®¤à¯à®¤à¯ˆà®ªà¯ பாரà¯à®•à¯à®•à®µà¯à®®à¯.',
+'edit-externally-help' => 'மேலà¯à®®à¯ தகவலà¯à®•à®³à¯à®•à¯à®•à¯ [//www.mediawiki.org/wiki/Manual:External_editors அமைபà¯à®ªà¯ அறிவà¯à®±à¯à®¤à¯à®¤à®²à¯à®•à®³à¯] பகà¯à®•à®¤à¯à®¤à¯ˆà®ªà¯ பாரà¯à®•à¯à®•à®µà¯à®®à¯.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'அனைதà¯à®¤à¯à®®à¯',
-'imagelistall' => 'அனைதà¯à®¤à¯',
-'watchlistall2' => 'அனைதà¯à®¤à¯',
-'namespacesall' => 'அனைதà¯à®¤à¯',
-'monthsall' => 'அனைதà¯à®¤à¯ மாதஙà¯à®•à®³à¯à®®à¯',
-'limitall' => 'அனைதà¯à®¤à¯',
+'watchlistall2' => 'அனைதà¯à®¤à¯',
+'namespacesall' => 'அனைதà¯à®¤à¯',
+'monthsall' => 'அனைதà¯à®¤à¯ மாதஙà¯à®•à®³à¯à®®à¯',
+'limitall' => 'அனைதà¯à®¤à¯',
# E-mail address confirmation
'confirmemail' => 'மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿à®¯à¯ˆ உறà¯à®¤à®¿à®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯à®•',
@@ -2658,14 +2669,14 @@ $5
'watchlistedit-normal-legend' => 'கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ தலைபà¯à®ªà¯à®•à®³à¯ˆ நீகà¯à®•à¯',
'watchlistedit-normal-explain' => 'உஙà¯à®•à®³à¯ கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ உளà¯à®³ தலைபà¯à®ªà¯à®•à®³à¯ கீழே காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®©.
தலைபà¯à®ªà¯Šà®©à¯à®±à¯ˆ நீகà¯à®•à¯à®µà®¤à®±à¯à®•à¯ அதறà¯à®•à¯ à®®à¯à®©à¯à®©à®¾à®²à¯ காணபà¯à®ªà®Ÿà¯à®®à¯ பெடà¯à®Ÿà®¿à®¯à®¿à®²à¯ சொடà¯à®•à®¿ தலைபà¯à®ªà¯à®•à¯à®•à®³à¯ˆ நீகà¯à®•à¯ பொதà¯à®¤à®¾à®©à¯ˆ à®…à®´à¯à®¤à¯à®¤à®µà¯à®®à¯.
-மேலà¯à®®à¯ [[Special:Watchlist/raw|விகà¯à®•à®¿ நிரலெதà¯à®µà¯à®®à®±à¯à®± படà¯à®Ÿà®¿à®¯à®²à¯ˆ தொகà¯à®•à¯à®•à®²à®¾à®®à¯]]',
+மேலà¯à®®à¯ [[Special:EditWatchlist/raw|விகà¯à®•à®¿ நிரலெதà¯à®µà¯à®®à®±à¯à®± படà¯à®Ÿà®¿à®¯à®²à¯ˆ தொகà¯à®•à¯à®•à®²à®¾à®®à¯]]',
'watchlistedit-normal-submit' => 'தலைபà¯à®ªà¯à®•à¯à®•à®³à¯ˆ நீகà¯à®•à¯',
'watchlistedit-normal-done' => 'உஙà¯à®•à®³à¯ கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ {{PLURAL:$1|ஒர௠தலைபà¯à®ªà¯ நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯|$1 தலைபà¯à®ªà¯à®•à®³à¯ நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®©}}:',
'watchlistedit-raw-title' => 'விகà¯à®•à®¿ நிரலறà¯à®±à®•à¯ கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆà®¤à¯ தொகà¯',
'watchlistedit-raw-legend' => 'விகà¯à®•à®¿ நிரலறà¯à®±à®•à¯ கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆà®¤à¯ தொகà¯',
'watchlistedit-raw-explain' => 'உஙà¯à®•à®³à¯ கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ உளà¯à®³ தலைபà¯à®ªà¯à®•à®³à¯ கீழே காடà¯à®Ÿà®ªà¯à®ªà®Ÿà¯à®Ÿà¯à®³à¯à®³à®©, இபà¯à®ªà®Ÿà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ உளà¯à®³ தலைபà¯à®ªà¯à®•à®³à¯ˆ நீகà¯à®•à¯à®µà®¤à®©à¯ மூலம௠படà¯à®Ÿà®¿à®¯à®²à®¿à®²à¯ இரà¯à®¨à¯à®¤à¯ தலைபà¯à®ªà¯à®•à®³à¯ˆ நீகà¯à®•à®²à®¾à®®à¯ அலà¯à®²à®¤à¯ வரிகà¯à®•à¯ ஒர௠தலைபà¯à®ªà¯ எனà¯à®±à®µà®¾à®±à¯ பகà¯à®•à®™à¯à®•à®³à¯ˆà®šà¯ சேரà¯à®ªà¯à®ªà®¤à®©à¯ மூலம௠படà¯à®Ÿà®¿à®¯à®²à¯à®•à¯à®•à¯à®ªà¯ பகà¯à®•à®™à¯à®•à®³à¯ˆ இணைகà¯à®•à®²à®¾à®®à¯. à®®à¯à®Ÿà®¿à®µà¯à®±à¯à®±à®µà¯à®Ÿà®©à¯ இறà¯à®±à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯ விசையைச௠சொடà¯à®•à¯à®•à®µà¯à®®à¯.
-மேலà¯à®®à¯ [[Special:Watchlist/edit|விகà¯à®•à®¿ சாதாரணத௠தொகà¯à®ªà¯à®ªà¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿à®¯à¯à®®à¯]] கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆà®¤à¯ தொகà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯.',
+மேலà¯à®®à¯ [[Special:EditWatchlist|விகà¯à®•à®¿ சாதாரணத௠தொகà¯à®ªà¯à®ªà¯ˆà®ªà¯ பயனà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿à®¯à¯à®®à¯]] கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆà®¤à¯ தொகà¯à®•à¯à®• à®®à¯à®Ÿà®¿à®¯à¯à®®à¯.',
'watchlistedit-raw-titles' => 'தலைபà¯à®ªà¯à®•à®³à¯:',
'watchlistedit-raw-submit' => 'கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆ இறà¯à®±à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à¯',
'watchlistedit-raw-done' => 'உஙà¯à®•à®³à¯ கவனிபà¯à®ªà¯à®ªà¯ படà¯à®Ÿà®¿à®¯à®²à¯ இறà¯à®±à¯ˆà®ªà¯à®ªà®Ÿà¯à®¤à¯à®¤à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯.',
@@ -2681,26 +2692,25 @@ $5
'unknown_extension_tag' => 'அறியபà¯à®ªà®Ÿà®¾à®¤ நீடà¯à®šà®¿ வகை "$1"',
# Special:Version
-'version' => 'பதிபà¯à®ªà¯',
-'version-extensions' => 'நிறà¯à®µà®ªà¯à®ªà®Ÿà¯à®Ÿ நீடà¯à®šà®¿à®•à®³à¯',
-'version-specialpages' => 'சிறபà¯à®ªà¯à®ªà¯ பகà¯à®•à®™à¯à®•à®³à¯',
-'version-parserhooks' => 'இலகà¯à®•à®£à®ªà¯ பாகà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿ கொகà¯à®•à®¿à®•à®³à¯',
-'version-variables' => 'மாறிகளà¯',
-'version-other' => 'மறà¯à®±à®µà¯ˆ',
-'version-mediahandlers' => 'ஊடக கையாளிகளà¯',
-'version-hooks' => 'கொகà¯à®•à®¿à®•à®³à¯',
-'version-extension-functions' => 'நீடà¯à®šà®¿ செயறà¯à®ªà®¾à®Ÿà¯à®•à®³à¯',
-'version-parser-extensiontags' => 'இலகà¯à®•à®£à®ªà¯ பாகà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿ நீடà¯à®šà®¿ கà¯à®±à®¿à®šà¯à®šà¯Šà®±à¯à®•à®³à¯',
-'version-parser-function-hooks' => 'இலகà¯à®•à®£à®ªà¯ பாகà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿ செயறà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ கொகà¯à®•à®¿à®•à®³à¯',
-'version-skin-extension-functions' => 'தோல௠நீடà¯à®šà®¿ செயலà¯à®ªà®¾à®Ÿà¯',
-'version-hook-name' => 'கொகà¯à®•à®¿à®¯à®¿à®©à¯ பெயரà¯',
-'version-hook-subscribedby' => 'பயனà¯à®ªà®¾à®Ÿà¯',
-'version-version' => '(பதிபà¯à®ªà¯ $1)',
-'version-license' => 'அனà¯à®®à®¤à®¿',
-'version-poweredby-others' => 'மறà¯à®±à®µà¯ˆà®•à®³à¯',
-'version-software' => 'நிறà¯à®µà®ªà¯à®ªà®Ÿà¯à®Ÿ மெனà¯à®ªà¯Šà®°à¯à®³à¯',
-'version-software-product' => 'உறà¯à®ªà®¤à¯à®¤à®¿à®ªà¯à®ªà¯Šà®°à¯à®³à¯',
-'version-software-version' => 'பதிபà¯à®ªà¯',
+'version' => 'பதிபà¯à®ªà¯',
+'version-extensions' => 'நிறà¯à®µà®ªà¯à®ªà®Ÿà¯à®Ÿ நீடà¯à®šà®¿à®•à®³à¯',
+'version-specialpages' => 'சிறபà¯à®ªà¯à®ªà¯ பகà¯à®•à®™à¯à®•à®³à¯',
+'version-parserhooks' => 'இலகà¯à®•à®£à®ªà¯ பாகà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿ கொகà¯à®•à®¿à®•à®³à¯',
+'version-variables' => 'மாறிகளà¯',
+'version-other' => 'மறà¯à®±à®µà¯ˆ',
+'version-mediahandlers' => 'ஊடக கையாளிகளà¯',
+'version-hooks' => 'கொகà¯à®•à®¿à®•à®³à¯',
+'version-extension-functions' => 'நீடà¯à®šà®¿ செயறà¯à®ªà®¾à®Ÿà¯à®•à®³à¯',
+'version-parser-extensiontags' => 'இலகà¯à®•à®£à®ªà¯ பாகà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿ நீடà¯à®šà®¿ கà¯à®±à®¿à®šà¯à®šà¯Šà®±à¯à®•à®³à¯',
+'version-parser-function-hooks' => 'இலகà¯à®•à®£à®ªà¯ பாகà¯à®ªà®Ÿà¯à®¤à¯à®¤à®¿ செயறà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ கொகà¯à®•à®¿à®•à®³à¯',
+'version-hook-name' => 'கொகà¯à®•à®¿à®¯à®¿à®©à¯ பெயரà¯',
+'version-hook-subscribedby' => 'பயனà¯à®ªà®¾à®Ÿà¯',
+'version-version' => '(பதிபà¯à®ªà¯ $1)',
+'version-license' => 'அனà¯à®®à®¤à®¿',
+'version-poweredby-others' => 'மறà¯à®±à®µà¯ˆà®•à®³à¯',
+'version-software' => 'நிறà¯à®µà®ªà¯à®ªà®Ÿà¯à®Ÿ மெனà¯à®ªà¯Šà®°à¯à®³à¯',
+'version-software-product' => 'உறà¯à®ªà®¤à¯à®¤à®¿à®ªà¯à®ªà¯Šà®°à¯à®³à¯',
+'version-software-version' => 'பதிபà¯à®ªà¯',
# Special:FilePath
'filepath' => 'கோபà¯à®ªà¯ வழி',
diff --git a/languages/messages/MessagesTcy.php b/languages/messages/MessagesTcy.php
index 9f591338..70cab322 100644
--- a/languages/messages/MessagesTcy.php
+++ b/languages/messages/MessagesTcy.php
@@ -127,15 +127,6 @@ $messages = array(
'category-file-count-limited' => 'ಪà³à²°à²¸à²•à³à²¤ ವರà³à²—ೊಡೠಈ ತಿರà³à²¤à³â€™à²¦ {{PLURAL:$1|ಫೈಲೠಉಂಡà³|$1 ಫೈಲà³â€™à²²à³ ಉಂಡà³}}.',
'listingcontinuesabbrev' => 'ಮà³à²‚ದà³.',
-'mainpagetext' => "'''ಮೀಡಿಯವಿಕಿ ಯಶಸà³à²µà²¿à²¯à²¾à²¦à³ ಇನà³â€™à²¸à³à²Ÿà²¾à²²à³ ಆಂಡà³.'''",
-'mainpagedocfooter' => 'ವಿಕಿ ತಂತà³à²°à²¾à²‚ಶನೠಉಪಗೋಗ ಮನà³à²ªà³à²¨ ಬಗà³à²—ೆ ಮಾಹಿತಿಗೠ[http://meta.wikimedia.org/wiki/Help:Contents ಸದಸà³à²¯à³†à²°à³à²¨ ನಿರà³à²¦à³‡à²¶à²¨ ಪà³à²Ÿ] ತೂಲೆ.
-
-== ಎಂಚ ಶà³à²°à³ ಮಲà³à²ªà³à²¨à²¿ ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ ಮೀಡಿಯವಿಕಿ FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]',
-
'about' => 'ಎಂಕà³à²²à³†à²¨ ಬಗà³à²—ೆ',
'article' => 'ಲೇಖನ ಪà³à²Ÿ',
'newwindow' => '(ಪೊಸ ಕಂಡಿನೠಓಪನೠಮಲà³à²ªà³à²‚ಡà³)',
@@ -158,6 +149,16 @@ $messages = array(
'faq' => 'ಸಾಮಾನà³à²¯à²µà²¾à²¦à³ ಕೇನà³à²¨ ಪà³à²°à²¶à³à²¨à³†à²²à³',
'faqpage' => 'Project:ಸಾಮಾನà³à²¯à²µà²¾à²¦à³ ಕೇನà³à²¨ ಪà³à²°à²¶à³à²¨à³†à²²à³',
+# Vector skin
+'vector-action-delete' => 'ದೆತà³à²¤à³ ಪಾಡà³à²²à³†',
+'vector-action-protect' => 'ಸ೦ರಕà³à²·à²¿à²¸à²¾à²²à³†',
+'vector-view-create' => ' ಸà³à²°à³ ಮಲà³à²ªà³à²²à³†',
+'vector-view-edit' => 'ಸಂಪಾದನೆ ಮಲà³à²ªà³à²²à³†',
+'vector-view-history' => 'ಇತಿಹಾಸೊನೠತೂಲೆ',
+'vector-view-view' => 'ಓದà³à²²à³‡',
+'actions' => 'ಕà³à²°à²¿à²¯à³†à²•à³à²•à³à²²à³',
+'namespaces' => 'ಪà³à²¦à²°à³ ದ ವರà³à²—ೊಲà³',
+
'errorpagetitle' => 'ದೋಷ',
'returnto' => '$1 ಗೠಪಿರ ಪೋಲೆ.',
'tagline' => '{{SITENAME}} ರà³à²¦à³',
@@ -169,7 +170,6 @@ $messages = array(
'history' => 'ಪà³à²Ÿà³Šà²¤ ಚರಿತà³à²°à³†',
'history_short' => 'ಇತಿಹಾಸ',
'updatedmarker' => 'ಎನà³à²¨ ಅಕೇರಿದ ವೀಕà³à²·à²£à³† ಡà³à²¦à³ ಬà³à²•à³à²• ಆಯಿನ ಬದಲಾವಣೆಲà³',
-'info_short' => 'ಮಾಹಿತಿ',
'printableversion' => 'ಪà³à²°à²¿à²‚ಟೠಆವೃತà³à²¤à²¿',
'permalink' => 'ಸà³à²¥à²¿à²° ಸಂಪರà³à²•',
'print' => 'ಪà³à²°à²¿à³¦à²Ÿà³ ಮನà³à²ªà³à²²à³†',
@@ -318,12 +318,14 @@ $messages = array(
# Login and logout pages
'yourname' => 'ಸದಸà³à²¯à³†à²°à³à²¨ ಪà³à²¦à²°à³:',
'yourpassword' => 'ಪಾಸà³-ವರà³à²¡à³:',
+'yourpasswordagain' => 'ಪಾಸà³à²µà²°à³à²¡à³ ಪಿರ ಟೈಪೠಮಲà³à²ªà³à²²à³†',
'remembermypassword' => 'ಈ ಕಂಪà³à²¯à³‚ಟರà³â€™à²¡à³ ಎನà³à²¨ ಪà³à²°à²µà³‡à²¶ ಪದೊನೠನೆನಪೠದೀಲ',
'login' => 'ಲಾಗೠಇನà³',
'nav-login-createaccount' => 'ಲಾಗà³-ಇನೠ/ ಅಕೌಂಟೠಸೃಷà³à²Ÿà²¿ ಮಲà³à²ªà³à²²à³†',
'userlogin' => 'ಲಾಗà³-ಇನೠ/ ಅಕೌಂಟೠಸೃಷà³à²Ÿà²¿ ಮಲà³à²ªà³à²²à³†',
'logout' => 'ಲಾಗೠಔಟà³',
'userlogout' => 'ಲಾಗೠಔಟà³',
+'createaccount' => 'ಪೊಸ ಅಕà³à²•à³Œà²‚ಟೠಸà³à²°à³ ಮಲà³à²ªà³à²²à³†',
'mailmypassword' => 'ಪೊಸ ಪಾಸà³-ವರà³à²¡à³â€™à²¨à³ ಇ-ಮೇಲೠಮಲà³à²ªà³à²²à³†',
# Edit page toolbar
@@ -337,8 +339,6 @@ $messages = array(
'extlink_tip' => 'ಪಿದಯಿದ ಲಿಂಕೠ(http:// ರà³à²¦à³ ಶà³à²°à³ ಮಲà³à²ªà³†à²°à³† ಮರಪೊಚಿ)',
'headline_sample' => 'ಹೆಡà³-ಲೈನà³â€™à²¦ ಬರಹ',
'headline_tip' => '2ನೇ ಲೆವೆಲà³à²¦ ಹೆಡà³-ಲೈನà³',
-'math_sample' => 'ಮà³à²²à³à²ª ಸೂತà³à²°à³Šà²¨à³ ಪಾಡà³â€™à²²à³†',
-'math_tip' => 'ಗಣಿತ ಸೂತà³à²° (LaTeX)',
'nowiki_sample' => 'ಈ ಜಾಗೆಡೠಬರೆತಿನಂಚಿನ ಬರಹ ವಿಕೀಕರಣ ಆಪà³à²œà²¿',
'nowiki_tip' => 'ವಿಕಿ ರಚನಾಕà³à²°à²®à³Šà²¨à³(ಫೋರà³à²®à³à²¯à²¾à²Ÿà³) ಅಳವಡಿಸೊಚಿ',
'image_tip' => 'ಎ೦ಬೆಡೠಮಲà³à²¤à²¿à²¨ ಫೈಲà³',
@@ -393,9 +393,11 @@ $messages = array(
'revisionasof' => '$1 ದಿನೊತ ಆವೃತà³à²¤à²¿',
'previousrevision' => 'â†à²¦à³à²‚ಬà³à²¦ ಆವೃತà³à²¤à²¿',
'nextrevision' => 'ಪೊಸ ಮರà³-ಆವೃತà³à²¤à²¿',
+'currentrevisionlink' => 'ಇತà³à²¤à³†à²¦ ಆವೃತà³à²¤à²¿',
'cur' => 'ಸದà³à²¯à²¦',
'last' => 'ಕಡೆತ',
'history-fieldset-title' => 'ಇತಿಹಾಸಡೠನಾಡà³à²²à³†',
+'history-show-deleted' => 'ದೆತà³à²¤à³ ಪಾಡಿನ',
'histfirst' => 'ಬಾರಿ ದà³à²‚ಬà³à²¦',
'histlast' => 'ಇಂಚಿಪà³à²ªà²¦',
@@ -414,34 +416,44 @@ $messages = array(
'editundo' => 'ದà³à²‚ಬà³à²¦à²²à³†à²•',
# Search results
-'searchresults' => 'ನಾಡಟದ ಫಲಿತಾಂಶೊಲà³',
-'searchresults-title' => '"$1" ಕೠನಾಡಟದ ಫಲಿತಾಂಶೊಲà³',
-'searchresulttext' => '{{SITENAME}} ಡೠನಾಡಟ ಮಲà³à²ªà³à²¨ ಬಗà³à²—ೆ ಜಾಸà³à²¤à²¿ ಮಾಹಿತಿಗೠ[[{{MediaWiki:Helppage}}|{{int:help}}]] ನೠತೂಲೆ.',
-'searchsubtitle' => 'ಈರೠ\'\'\'[[:$1]]\'\'\' ನೠನಾಡಿಯರೠ([[Special:Prefixindex/$1|"$1" ರà³à²¦à³ ಶà³à²°à³à²µà²¾à²ªà³à²¨ ಪೂರ ಪà³à²Ÿà³Šà²²à³]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ಗೠಲಿಂಕೠಕೊರà³à²ªà³à²¨ ಪೂರ ಪà³à²Ÿà³Šà²²à³]])',
-'searchsubtitleinvalid' => "'''$1''' ನೠಈರೠನಾಡಿಯರà³.",
-'notitlematches' => 'ವಾ ಪà³à²Ÿà³Šà²¤ ಶಿರà³à²·à²¿à²•à³†à²²à²¾ ಹೊಂದಿಕೆ ಆವೊಂದಿಜà³à²œà²¿',
-'notextmatches' => 'ವಾ ಪà³à²Ÿà³Šà²¤ ಪಠà³à²¯à³Šà²¡à³à²²à²¾ ಹೋಲಿಕೆ ಇಜà³à²œà²¿',
-'prevn' => 'ದà³à²‚ಬà³à²¦ {{PLURAL:$1|$1}}',
-'nextn' => 'ಬೊಕà³à²•à²¦ {{PLURAL:$1|$1}}',
-'viewprevnext' => 'ತೂಲೆ ($1 {{int:pipe-separator}} $2) ($3)',
-'searchhelp-url' => 'Help:ಪರಿವಿಡಿ',
-'search-result-size' => '$1 ({{PLURAL:$2|೧ ಪದ|$2 ಪದೊಲà³}})',
-'search-redirect' => '(ಪà³à²¨à²°à³à²¨à²¿à²°à³à²¦à³‡à²¶à²¨ $1)',
-'search-section' => '(ವಿಭಾಗ $1)',
-'search-suggest' => 'ಇಂದೆನೠನಾಡೊಂದà³à²²à³à²²à²°à³†: $1',
-'search-interwiki-caption' => 'ಬಳಗದ ಇತರ ಯೋಜನೆಲà³',
-'search-interwiki-default' => '$1 ಫಲಿತಾಂಶೊಲà³:',
-'search-interwiki-more' => '(ಮಸà³à²¤à³)',
-'search-mwsuggest-enabled' => 'ಸಲಹೆದೊಟà³à²Ÿà²¿à²—ೆ',
-'search-mwsuggest-disabled' => 'ಓವೠಸಲಹೆಲಾ ಇಜà³à²œà²¿',
-'powersearch' => 'ನಾಡà³â€™à²²à³†',
-'powersearch-legend' => 'ಅಡà³à²µà²¾à²¨à³à²¸à³â€™à²¡à³ ಸರà³à²šà³',
-'powersearch-ns' => 'ನೇಮà³-ಸà³à²ªà³‡à²¸à³â€™à²²à³†à²¡à³ ನಾಡà³à²²à³†',
-'powersearch-field' => 'ನಾಡà³à²²à³†:',
+'searchresults' => 'ನಾಡಟದ ಫಲಿತಾಂಶೊಲà³',
+'searchresults-title' => '"$1" ಕೠನಾಡಟದ ಫಲಿತಾಂಶೊಲà³',
+'searchresulttext' => '{{SITENAME}} ಡೠನಾಡಟ ಮಲà³à²ªà³à²¨ ಬಗà³à²—ೆ ಜಾಸà³à²¤à²¿ ಮಾಹಿತಿಗೠ[[{{MediaWiki:Helppage}}|{{int:help}}]] ನೠತೂಲೆ.',
+'searchsubtitle' => 'ಈರೠ\'\'\'[[:$1]]\'\'\' ನೠನಾಡಿಯರೠ([[Special:Prefixindex/$1|"$1" ರà³à²¦à³ ಶà³à²°à³à²µà²¾à²ªà³à²¨ ಪೂರ ಪà³à²Ÿà³Šà²²à³]]{{int:pipe-separator}}[[Special:WhatLinksHere/$1|"$1" ಗೠಲಿಂಕೠಕೊರà³à²ªà³à²¨ ಪೂರ ಪà³à²Ÿà³Šà²²à³]])',
+'searchsubtitleinvalid' => "'''$1''' ನೠಈರೠನಾಡಿಯರà³.",
+'notitlematches' => 'ವಾ ಪà³à²Ÿà³Šà²¤ ಶಿರà³à²·à²¿à²•à³†à²²à²¾ ಹೊಂದಿಕೆ ಆವೊಂದಿಜà³à²œà²¿',
+'notextmatches' => 'ವಾ ಪà³à²Ÿà³Šà²¤ ಪಠà³à²¯à³Šà²¡à³à²²à²¾ ಹೋಲಿಕೆ ಇಜà³à²œà²¿',
+'prevn' => 'ದà³à²‚ಬà³à²¦ {{PLURAL:$1|$1}}',
+'nextn' => 'ಬೊಕà³à²•à²¦ {{PLURAL:$1|$1}}',
+'viewprevnext' => 'ತೂಲೆ ($1 {{int:pipe-separator}} $2) ($3)',
+'searchhelp-url' => 'Help:ಪರಿವಿಡಿ',
+'searchprofile-articles' => 'ಲೇಖನ ಪà³à²Ÿà³Š',
+'searchprofile-images' => 'ಬಹà³à²®à²¾à²§à³à²¯à²®',
+'searchprofile-everything' => 'ಪà³à²°à²¤à²¿à²¯à³Šà²‚ಜಿ',
+'searchprofile-advanced' => 'ಪರಿಣತ',
+'searchprofile-articles-tooltip' => '$1 ಟೠನಾಡà³à²²à³†',
+'searchprofile-images-tooltip' => 'ಫೈಲೠನಾಡà³à²²à³†',
+'searchprofile-everything-tooltip' => 'ಮಾತಾ ಪà³à²Ÿà²•à³à²•à³à²²à³†à²¡à³ ನಾಡà³à²²à³† (ಪಾತೆರದ ಪà³à²¤à²² ಸೇರà³à²¦à³)',
+'search-result-size' => '$1 ({{PLURAL:$2|೧ ಪದ|$2 ಪದೊಲà³}})',
+'search-redirect' => '(ಪà³à²¨à²°à³à²¨à²¿à²°à³à²¦à³‡à²¶à²¨ $1)',
+'search-section' => '(ವಿಭಾಗ $1)',
+'search-suggest' => 'ಇಂದೆನೠನಾಡೊಂದà³à²²à³à²²à²°à³†: $1',
+'search-interwiki-caption' => 'ಬಳಗದ ಇತರ ಯೋಜನೆಲà³',
+'search-interwiki-default' => '$1 ಫಲಿತಾಂಶೊಲà³:',
+'search-interwiki-more' => '(ಮಸà³à²¤à³)',
+'search-mwsuggest-enabled' => 'ಸಲಹೆದೊಟà³à²Ÿà²¿à²—ೆ',
+'search-mwsuggest-disabled' => 'ಓವೠಸಲಹೆಲಾ ಇಜà³à²œà²¿',
+'searchrelated' => 'ಸ೦ಬ೦ಧ ಇತà³à²¤à²¿à²¨',
+'searchall' => 'ಮಾತಾ',
+'powersearch' => 'ನಾಡà³â€™à²²à³†',
+'powersearch-legend' => 'ಅಡà³à²µà²¾à²¨à³à²¸à³â€™à²¡à³ ಸರà³à²šà³',
+'powersearch-ns' => 'ನೇಮà³-ಸà³à²ªà³‡à²¸à³â€™à²²à³†à²¡à³ ನಾಡà³à²²à³†',
+'powersearch-field' => 'ನಾಡà³à²²à³†:',
# Preferences page
'preferences' => 'ಪà³à²°à²¾à²¶à²¸à³à²¤à³à²¯à³Šà²²à³',
'mypreferences' => 'ಎನà³à²¨ ಪà³à²°à²¾à²¶à²¸à³à²¤à³à²¯à²²à³',
+'youremail' => 'ಇ-ಅಂಚೆ',
# Groups
'group-sysop' => 'ನಿರà³à²µà²¾à²¹à²•à³†à²°à³',
@@ -459,6 +471,8 @@ $messages = array(
'recentchanges' => 'ಇಂಚಿಪದ ಬದಲಾವಣೆಲà³',
'recentchanges-legend' => 'ಇಂಚಿಪದ ಬದಲಾವಣೆಲೠಆಯà³à²•à³†à²²à³',
'recentchanges-feed-description' => 'ಈ ಫೀಡà³â€™à²¡à³ ವಿಕಿಕೠಇಂಚಿಪà³à²ª ಆತಿನಂಚಿನ ಬದಲಾವಣೆಲೆನೠಟà³à²°à³à²¯à²¾à²•à³ ಮಲà³à²ªà³à²²à³†.',
+'recentchanges-label-newpage' => 'ಇರà³à²¨ ಈ ಬದಲಾವಣೆ ಪೊಸ ಪà³à²Ÿà³Šà²¨à³ ಸà³à²°à³ ಮಲà³à²ªà³à²‚ಡà³',
+'recentchanges-label-minor' => 'ಉಂದೠಎಲà³à²¯ ಬದಲಾವಣೆ',
'rcnote' => "$4, $5 ಮà³à²Ÿà³à²Ÿ ದà³à²‚ಬà³à²¦ {{PLURAL:$2|ದಿನೊಟà³|'''$2''' ದಿನೊಲೆಡà³}} ಮಲà³à²¤à³â€™à²¦à²¿à²¨ {{PLURAL:$1|'''1''' ಬದಲಾವಣೆ|'''$1''' ಬದಲಾವಣೆಲà³}} ತಿರà³à²¤à³à²‚ಡà³.",
'rclistfrom' => '$1 ರà³à²¦à³ ಶà³à²°à³à²µà²¾à²¤à²¿à²¨ ಪೊಸ ಬದಲಾವಣೆಲೆನೠತೊಜà³à²ªà²¾à²µà³',
'rcshowhideminor' => '$1 ಎಲà³à²¯à³†à²²à³à²¯ ಬದಲಾವಣೆಲà³',
@@ -491,8 +505,11 @@ $messages = array(
# Upload
'upload' => 'ಫೈಲೠಅಪà³à²²à³‹à²¡à³',
'uploadlogpage' => 'ಅಪà³à²²à³‹à²¡à³ ದಾಖಲೆ',
+'filedesc' => 'ಸಾರಾಂಶ',
'uploadedimage' => '"[[$1]]" ಅಪà³à²²à³‹à²¡à³ ಆಂಡà³',
+'license-header' => 'ಲೈಸೆನà³à²¸à²¿à²‚ಗà³',
+
# File description page
'file-anchor-link' => 'ಫೈಲà³',
'filehist' => 'ಫೈಲà³â€™à²¦ ಇತಿಹಾಸ',
@@ -515,6 +532,8 @@ $messages = array(
# Statistics
'statistics' => 'ಅಂಕಿ ಅಂಶೊಲà³',
+'disambiguationspage' => 'ದà³à²µà²‚ದà³à²µ ನಿವಾರಣೆ',
+
# Miscellaneous special pages
'nbytes' => '$1 {{PLURAL:$1|ಬೈಟà³|ಬೈಟà³â€à²²à³}}',
'nmembers' => '$1 {{PLURAL:$1|ಸದಸà³à²¯à³†|ಸದಸà³à²¯à³†à²°à³}}',
@@ -578,6 +597,7 @@ $messages = array(
# Undelete
'undeletelink' => 'ದà³à²‚ಬà³à²¦ ಆವೃತà³à²¤à²¿à²—ೠಪೋಲೆ',
+'undeleteviewlink' => 'ತೂಲೆ',
'undeletedarticle' => '"[[$1]]" ನೠಪಿರಕನತà³â€™à²¨à³à²¡à³',
# Namespace form on various pages
@@ -596,6 +616,7 @@ $messages = array(
'sp-contributions-newbies' => 'ಪೊಸ ಖಾತೆಲೆದ ಕಾಣಿಕೆಲೆನೠಮಾತà³à²° ತೊಜà³à²ªà²¾à²µà³',
'sp-contributions-blocklog' => 'ತಡೆಪತà³à²¤à³à²¨ ದಾಖಲೆ',
+'sp-contributions-logs' => 'ದಾಖಲೆಲà³',
'sp-contributions-talk' => 'ಪಾತೆರ',
'sp-contributions-search' => 'ಕಾಣಿಕೆಲೆನೠನಾಡà³à²²à³†',
'sp-contributions-username' => 'à².ಪಿ ವಿಳಾಸ ಅತà³à²¤à³â€™à²¨à³à²¡ ಬಳಕೆದ ಪà³à²¦à²°à³:',
@@ -664,7 +685,9 @@ $messages = array(
'tooltip-search' => '{{SITENAME}}ನೠನಾಡà³â€™à²²à³†',
'tooltip-search-go' => 'ಉಂದà³à²µà³‡ ಪà³à²¦à²°à³à²¦ ಪà³à²Ÿ ಇತà³à²¤à³â€™à²¨à³à²¡ ಅಡೆ ಪೋಲ',
'tooltip-search-fulltext' => 'ಈ ಪಠà³à²¯ ಉಪà³à²ªà³à²¨à²‚ಚಿನ ಪà³à²Ÿà³Šà²²à³†à²¨à³ ನಾಡà³â€™à²²',
+'tooltip-p-logo' => 'ಮà³à²–à³à²¯ ಪà³à²Ÿà³Šà²¨à³ ತೂಲೆ',
'tooltip-n-mainpage' => 'ಮà³à²–à³à²¯ ಪà³à²Ÿà³Šà²¨à³ ತೂಲೆ',
+'tooltip-n-mainpage-description' => 'ಮà³à²–à³à²¯ ಪà³à²Ÿà³Šà²¨à³ ತೂಲೆ',
'tooltip-n-portal' => 'ಪà³à²°à³Šà²œà³†à²•à³à²Ÿà³â€™à²¦ ಬಗà³à²—ೆ, ಈರೠದಾದ ಮಲà³à²ªà³Šà²²à²¿, ಓಲೠಇಂದೆತ ಬಗà³à²—ೆ ತೆರಿಯೊನೊಲಿ',
'tooltip-n-currentevents' => 'ಪà³à²°à²¸à²•à³à²¤ ಘಟನೆಲà³à²¦ ಬಗà³à²—ೆ ಹಿನà³à²¨à³†à²²à³† ಮಾಹಿತಿ ತೆರಿಯೊನà³à²²à³†',
'tooltip-n-recentchanges' => 'ವಿಕಿಡೠದà³à²‚ಬà³à²¦ ಒಂತೆ ಸಮಯಡೠಆತಿನಂಚಿನ ಬದಲಾವಣೆಲà³à²¦ ಪಟà³à²Ÿà²¿',
@@ -703,11 +726,10 @@ $messages = array(
'nextdiff' => 'ಪೊಸ ಎಡಿಟೠ→',
# Media information
-'file-info-size' => '$1 × $2 ಪಿಕà³à²¸à³†à²²à³, ಫೈಲà³â€™à²¦ ಗಾತà³à²°: $3, MIME ಪà³à²°à²•à²¾à²°: $4',
-'file-nohires' => '<small>ಇಂದೆರà³à²¦à³ ಜಾಸà³à²¤à²¿ ವಿವರವಾಯಿನ ನೋಟ ಇಜà³à²œà²¿.</small>',
-'svg-long-desc' => 'ಎಸà³.ವಿ.ಜಿ ಫೈಲà³, ಸà³à²®à²¾à²°à²¾à²¦à³ $1 × $2 ಪಿಕà³à²¸à³†à²²à³, ಫೈಲà³â€™à²¦ ಗಾತà³à²°: $3',
-'show-big-image' => 'ಪೂರà³à²¤à²¿ ರೆಸೊಲà³à²¯à³‚ಶನà³',
-'show-big-image-thumb' => '<small>ಈ ಮà³à²¨à³à²¨à³‹à²Ÿà²¦ ಗಾತà³à²°: $1 × $2 ಪಿಕà³à²¸à³†à²²à³</small>',
+'file-info-size' => '$1 × $2 ಪಿಕà³à²¸à³†à²²à³, ಫೈಲà³â€™à²¦ ಗಾತà³à²°: $3, MIME ಪà³à²°à²•à²¾à²°: $4',
+'file-nohires' => '<small>ಇಂದೆರà³à²¦à³ ಜಾಸà³à²¤à²¿ ವಿವರವಾಯಿನ ನೋಟ ಇಜà³à²œà²¿.</small>',
+'svg-long-desc' => 'ಎಸà³.ವಿ.ಜಿ ಫೈಲà³, ಸà³à²®à²¾à²°à²¾à²¦à³ $1 × $2 ಪಿಕà³à²¸à³†à²²à³, ಫೈಲà³â€™à²¦ ಗಾತà³à²°: $3',
+'show-big-image' => 'ಪೂರà³à²¤à²¿ ರೆಸೊಲà³à²¯à³‚ಶನà³',
# Bad image list
'bad_image_list' => 'ವà³à²¯à²µà²¸à³à²¥à³†à²¦ ಆಕಾರ ಈ ರೀತಿ ಉಂಡà³:
@@ -730,11 +752,17 @@ $messages = array(
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'ಬಾಹà³à²¯(ಪಿದಯಿದ) ತಂತà³à²°à²¾à²¶à³Šà²¨à³ ಉಪಯೋಗ ಮಲà³à²¤à³â€™à²¦à³ ಇಂದೆನೠಸಂಪಾದನೆ ಮಲà³à²ªà³à²²à³†',
-'edit-externally-help' => 'ನನಲ ಮಾಹಿತಿಗೠ[http://www.mediawiki.org/wiki/Manual:External_editors ಸೆಟà³-ಅಪೠನಿರà³à²¦à³‡à²¶à²¨à³Šà²²à³†à²¨à³] ತೂಲೆ.',
+'edit-externally-help' => 'ನನಲ ಮಾಹಿತಿಗೠ[//www.mediawiki.org/wiki/Manual:External_editors ಸೆಟà³-ಅಪೠನಿರà³à²¦à³‡à²¶à²¨à³Šà²²à³†à²¨à³] ತೂಲೆ.',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ಪೂರ',
diff --git a/languages/messages/MessagesTe.php b/languages/messages/MessagesTe.php
index 4d2772c9..8b3619fe 100644
--- a/languages/messages/MessagesTe.php
+++ b/languages/messages/MessagesTe.php
@@ -58,72 +58,72 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'రెండà±à°¸à°¾à°°à±à°²à±à°¦à°¾à°°à°¿à°®à°¾à°°à±à°ªà±' ),
+ 'Allmessages' => array( 'à°…à°¨à±à°¨à°¿à°¸à°‚దేశాలà±' ),
+ 'Allpages' => array( 'à°…à°¨à±à°¨à°¿à°ªà±‡à°œà±€à°²à±' ),
+ 'Ancientpages' => array( 'à°ªà±à°°à°¾à°¤à°¨à°ªà±‡à°œà±€à°²à±' ),
+ 'Blankpage' => array( 'ఖాళీపేజి' ),
+ 'Block' => array( 'à°…à°¡à±à°¡à°—à°¿à°‚à°šà±', 'à°à°ªà°¿à°¨à°¿à°…à°¡à±à°¡à°—à°¿à°‚à°šà±', 'వాడà±à°•à°°à°¿à°¨à°¿à°…à°¡à±à°¡à°—à°¿à°‚à°šà±' ),
+ 'Blockme' => array( 'ననà±à°¨à±à°…à°¡à±à°¡à°—à°¿à°‚à°šà±' ),
+ 'Booksources' => array( 'à°ªà±à°¸à±à°¤à°•à°®à±‚లాలà±' ),
'BrokenRedirects' => array( 'తెగిపోయినదారిమారà±à°ªà±à°²à±' ),
- 'Disambiguations' => array( 'అయోమయనివృతà±à°¤à°¿' ),
- 'Userlogin' => array( 'వాడà±à°•à°°à°¿à°ªà±à°°à°µà±‡à°¶à°‚' ),
- 'Userlogout' => array( 'వాడà±à°•à°°à°¿à°¨à°¿à°·à±à°•à±à°°à°®à°£' ),
+ 'Categories' => array( 'వరà±à°—ాలà±' ),
+ 'ChangePassword' => array( 'సంకేతపదమà±à°®à°¾à°°à±à°šà±' ),
+ 'Confirmemail' => array( 'ఈమెయిలà±à°§à±à°°à±à°µà°ªà°°à°šà±' ),
'CreateAccount' => array( 'ఖాతాసృషà±à°Ÿà°¿à°‚à°šà±' ),
- 'Preferences' => array( 'à°…à°­à°¿à°°à±à°šà±à°²à±' ),
- 'Watchlist' => array( 'వీకà±à°·à°£à°œà°¾à°¬à°¿à°¤à°¾' ),
- 'Recentchanges' => array( 'ఇటీవలిమారà±à°ªà±à°²à±' ),
- 'Upload' => array( 'à°Žà°•à±à°•à°¿à°‚à°ªà±' ),
+ 'Deadendpages' => array( 'అగాధపేజీలà±' ),
+ 'Disambiguations' => array( 'అయోమయనివృతà±à°¤à°¿' ),
+ 'DoubleRedirects' => array( 'రెండà±à°¸à°¾à°°à±à°²à±à°¦à°¾à°°à°¿à°®à°¾à°°à±à°ªà±' ),
+ 'Emailuser' => array( 'వాడà±à°•à°°à°¿à°•à°¿à°ˆà°®à±†à°¯à°¿à°²à±à°šà±†à°¯à±à°¯à°¿' ),
+ 'Export' => array( 'à°Žà°—à±à°®à°¤à°¿' ),
+ 'Fewestrevisions' => array( 'అతితకà±à°•à±à°µà°•à±‚à°°à±à°ªà±à°²à±' ),
+ 'Import' => array( 'దిగà±à°®à°¤à°¿' ),
'Listfiles' => array( 'ఫైళà±à°²à°œà°¾à°¬à°¿à°¤à°¾', 'బొమà±à°®à°²à°œà°¾à°¬à°¿à°¤à°¾' ),
- 'Newimages' => array( 'కొతà±à°¤à°«à±ˆà°³à±à°²à±', 'కొతà±à°¤à°¬à±Šà°®à±à°®à°²à±' ),
- 'Listusers' => array( 'వాడà±à°•à°°à±à°²à°œà°¾à°¬à°¿à°¤à°¾' ),
'Listgrouprights' => array( 'à°—à±à°‚à°ªà±à°¹à°•à±à°•à±à°²à°œà°¾à°¬à°¿à°¤à°¾', 'వాడà±à°•à°°à±à°²à°—à±à°‚à°ªà±à°¹à°•à±à°•à±à°²à±' ),
- 'Statistics' => array( 'గణాంకాలà±' ),
- 'Randompage' => array( 'యాదృచà±à°šà°¿à°•à°ªà±‡à°œà±€' ),
+ 'Listusers' => array( 'వాడà±à°•à°°à±à°²à°œà°¾à°¬à°¿à°¤à°¾' ),
+ 'Log' => array( 'à°šà°¿à°Ÿà±à°Ÿà°¾', 'à°šà°¿à°Ÿà±à°Ÿà°¾à°²à±' ),
'Lonelypages' => array( 'ఒంటరిపేజీలà±', 'అనాధపేజీలà±' ),
- 'Uncategorizedpages' => array( 'వరà±à°—ీకరించనిపేజీలà±' ),
+ 'Longpages' => array( 'పొడà±à°—à±à°ªà±‡à°œà±€à°²à±' ),
+ 'MergeHistory' => array( 'à°šà°°à°¿à°¤à±à°°à°¨à±à°µà°¿à°²à±€à°¨à°‚చేయి' ),
+ 'Mostcategories' => array( 'à°Žà°•à±à°•à±à°µà°µà°°à±à°—à°®à±à°²à±' ),
+ 'Mostrevisions' => array( 'à°Žà°•à±à°•à±à°µà°•à±‚à°°à±à°ªà±à°²à±' ),
+ 'Movepage' => array( 'à°µà±à°¯à°¾à°¸à°®à±à°¨à±à°¤à°°à°²à°¿à°‚à°šà±' ),
+ 'Mycontributions' => array( 'నా_మారà±à°ªà±à°²à±-చేరà±à°ªà±à°²à±' ),
+ 'Mypage' => array( 'నాపేజీ' ),
+ 'Mytalk' => array( 'నాచరà±à°š' ),
+ 'Newimages' => array( 'కొతà±à°¤à°«à±ˆà°³à±à°²à±', 'కొతà±à°¤à°¬à±Šà°®à±à°®à°²à±' ),
+ 'Newpages' => array( 'కొతà±à°¤à°ªà±‡à°œà±€à°²à±' ),
+ 'Popularpages' => array( 'à°ªà±à°°à°¾à°šà±à°°à±à°¯à°‚పొందినపేజీలà±' ),
+ 'Preferences' => array( 'à°…à°­à°¿à°°à±à°šà±à°²à±' ),
+ 'Protectedpages' => array( 'సంరకà±à°·à°¿à°¤à°ªà±‡à°œà±€à°²à±' ),
+ 'Randompage' => array( 'యాదృచà±à°šà°¿à°•à°ªà±‡à°œà±€' ),
+ 'Randomredirect' => array( 'యాదà±à°šà±à°šà°¿à°•à°¦à°¾à°°à°¿à°®à°¾à°°à±à°ªà±' ),
+ 'Recentchanges' => array( 'ఇటీవలిమారà±à°ªà±à°²à±' ),
+ 'Recentchangeslinked' => array( 'చివరిమారà±à°ªà±à°²à°²à°¿à°‚à°•à±à°²à±', 'సంబంధితమారà±à°ªà±à°²à±' ),
+ 'Revisiondelete' => array( 'కూరà±à°ªà±à°¤à±Šà°²à°—à°¿à°‚à°šà±' ),
+ 'Search' => array( 'à°…à°¨à±à°µà±‡à°·à°£' ),
+ 'Shortpages' => array( 'à°šà°¿à°¨à±à°¨à°ªà±‡à°œà±€à°²à±' ),
+ 'Specialpages' => array( 'à°ªà±à°°à°¤à±à°¯à±‡à°•à°ªà±‡à°œà±€à°²à±' ),
+ 'Statistics' => array( 'గణాంకాలà±' ),
'Uncategorizedcategories' => array( 'వరà±à°—ీకరించనివరà±à°—à°®à±à°²à±' ),
'Uncategorizedimages' => array( 'వరà±à°—ీకరించనిఫైళà±à°²à±', 'వరà±à°—ీకరించనిబొమà±à°®à°²à±' ),
+ 'Uncategorizedpages' => array( 'వరà±à°—ీకరించనిపేజీలà±' ),
'Uncategorizedtemplates' => array( 'వరà±à°—ీకరించనిమూసలà±' ),
'Unusedcategories' => array( 'వాడనివరà±à°—à°®à±à°²à±' ),
'Unusedimages' => array( 'వాడనిఫైళà±à°²à±', 'వాడనిబొమà±à°®à°²à±' ),
- 'Wantedpages' => array( 'అవసరమైనపేజీలà±', 'విరిగిపోయినలింకà±à°²à±' ),
+ 'Unusedtemplates' => array( 'వాడనిమూసలà±' ),
+ 'Unwatchedpages' => array( 'వీకà±à°·à°¿à°‚చనిపేజీలà±' ),
+ 'Upload' => array( 'à°Žà°•à±à°•à°¿à°‚à°ªà±' ),
+ 'Userlogin' => array( 'వాడà±à°•à°°à°¿à°ªà±à°°à°µà±‡à°¶à°‚' ),
+ 'Userlogout' => array( 'వాడà±à°•à°°à°¿à°¨à°¿à°·à±à°•à±à°°à°®à°£' ),
+ 'Userrights' => array( 'వాడà±à°•à°°à°¿à°¹à°•à±à°•à±à°²à±' ),
+ 'Version' => array( 'కూరà±à°ªà±' ),
'Wantedcategories' => array( 'కోరినవరà±à°—ాలà±' ),
'Wantedfiles' => array( 'అవసరమైనఫైళà±à°²à±' ),
+ 'Wantedpages' => array( 'అవసరమైనపేజీలà±', 'విరిగిపోయినలింకà±à°²à±' ),
'Wantedtemplates' => array( 'అవసరమైననమూనాలà±' ),
- 'Mostcategories' => array( 'à°Žà°•à±à°•à±à°µà°µà°°à±à°—à°®à±à°²à±' ),
- 'Mostrevisions' => array( 'à°Žà°•à±à°•à±à°µà°•à±‚à°°à±à°ªà±à°²à±' ),
- 'Fewestrevisions' => array( 'అతితకà±à°•à±à°µà°•à±‚à°°à±à°ªà±à°²à±' ),
- 'Shortpages' => array( 'à°šà°¿à°¨à±à°¨à°ªà±‡à°œà±€à°²à±' ),
- 'Longpages' => array( 'పొడà±à°—à±à°ªà±‡à°œà±€à°²à±' ),
- 'Newpages' => array( 'కొతà±à°¤à°ªà±‡à°œà±€à°²à±' ),
- 'Ancientpages' => array( 'à°ªà±à°°à°¾à°¤à°¨à°ªà±‡à°œà±€à°²à±' ),
- 'Deadendpages' => array( 'అగాధపేజీలà±' ),
- 'Protectedpages' => array( 'సంరకà±à°·à°¿à°¤à°ªà±‡à°œà±€à°²à±' ),
- 'Allpages' => array( 'à°…à°¨à±à°¨à°¿à°ªà±‡à°œà±€à°²à±' ),
- 'Specialpages' => array( 'à°ªà±à°°à°¤à±à°¯à±‡à°•à°ªà±‡à°œà±€à°²à±' ),
- 'Emailuser' => array( 'వాడà±à°•à°°à°¿à°•à°¿à°ˆà°®à±†à°¯à°¿à°²à±à°šà±†à°¯à±à°¯à°¿' ),
- 'Confirmemail' => array( 'ఈమెయిలà±à°§à±à°°à±à°µà°ªà°°à°šà±' ),
+ 'Watchlist' => array( 'వీకà±à°·à°£à°œà°¾à°¬à°¿à°¤à°¾' ),
'Whatlinkshere' => array( 'ఇకà±à°•à°¡à°¿à°•à°¿à°²à°¿à°‚à°•à±à°¨à±à°¨à°ªà±‡à°œà±€à°²à±' ),
- 'Recentchangeslinked' => array( 'చివరిమారà±à°ªà±à°²à°²à°¿à°‚à°•à±à°²à±', 'సంబంధితమారà±à°ªà±à°²à±' ),
- 'Movepage' => array( 'à°µà±à°¯à°¾à°¸à°®à±à°¨à±à°¤à°°à°²à°¿à°‚à°šà±' ),
- 'Blockme' => array( 'ననà±à°¨à±à°…à°¡à±à°¡à°—à°¿à°‚à°šà±' ),
- 'Booksources' => array( 'à°ªà±à°¸à±à°¤à°•à°®à±‚లాలà±' ),
- 'Categories' => array( 'వరà±à°—ాలà±' ),
- 'Export' => array( 'à°Žà°—à±à°®à°¤à°¿' ),
- 'Version' => array( 'కూరà±à°ªà±' ),
- 'Allmessages' => array( 'à°…à°¨à±à°¨à°¿à°¸à°‚దేశాలà±' ),
- 'Log' => array( 'à°šà°¿à°Ÿà±à°Ÿà°¾', 'à°šà°¿à°Ÿà±à°Ÿà°¾à°²à±' ),
- 'Blockip' => array( 'à°…à°¡à±à°¡à°—à°¿à°‚à°šà±', 'à°à°ªà°¿à°¨à°¿à°…à°¡à±à°¡à°—à°¿à°‚à°šà±', 'వాడà±à°•à°°à°¿à°¨à°¿à°…à°¡à±à°¡à°—à°¿à°‚à°šà±' ),
- 'Import' => array( 'దిగà±à°®à°¤à°¿' ),
- 'Userrights' => array( 'వాడà±à°•à°°à°¿à°¹à°•à±à°•à±à°²à±' ),
- 'Unwatchedpages' => array( 'వీకà±à°·à°¿à°‚చనిపేజీలà±' ),
- 'Revisiondelete' => array( 'కూరà±à°ªà±à°¤à±Šà°²à°—à°¿à°‚à°šà±' ),
- 'Unusedtemplates' => array( 'వాడనిమూసలà±' ),
- 'Randomredirect' => array( 'యాదà±à°šà±à°šà°¿à°•à°¦à°¾à°°à°¿à°®à°¾à°°à±à°ªà±' ),
- 'Mypage' => array( 'నాపేజీ' ),
- 'Mytalk' => array( 'నాచరà±à°š' ),
- 'Mycontributions' => array( 'నా_మారà±à°ªà±à°²à±-చేరà±à°ªà±à°²à±' ),
- 'Popularpages' => array( 'à°ªà±à°°à°¾à°šà±à°°à±à°¯à°‚పొందినపేజీలà±' ),
- 'Search' => array( 'à°…à°¨à±à°µà±‡à°·à°£' ),
- 'Resetpass' => array( 'సంకేతపదమà±à°®à°¾à°°à±à°šà±' ),
'Withoutinterwiki' => array( 'అంతరవికీలేకà±à°‚à°¡à°¾' ),
- 'MergeHistory' => array( 'à°šà°°à°¿à°¤à±à°°à°¨à±à°µà°¿à°²à±€à°¨à°‚చేయి' ),
- 'Blankpage' => array( 'ఖాళీపేజి' ),
);
$magicWords = array(
@@ -168,10 +168,10 @@ $messages = array(
'tog-enotifminoredits' => 'à°šà°¿à°¨à±à°¨ మారà±à°ªà±à°²à± చేసినపà±à°ªà±à°¡à± కూడా నాకౠఈ-మెయిలౠపంపించà±',
'tog-enotifrevealaddr' => 'గమనింపౠమెయిళà±à°³à°²à±‹ నా à°ˆ-మెయిలౠచిరà±à°¨à°¾à°®à°¾à°¨à± చూపించà±',
'tog-shownumberswatching' => 'వీకà±à°·à°•à±à°² సంఖà±à°¯à°¨à± చూపించà±',
-'tog-oldsig' => 'à°ªà±à°°à°¸à±à°¤à±à°¤ సంతకపౠమà±à°¨à±à°œà±‚à°ªà±:',
+'tog-oldsig' => 'à°ªà±à°°à°¸à±à°¤à±à°¤ సంతకం:',
'tog-fancysig' => 'సంతకానà±à°¨à°¿ వికీపాఠà±à°¯à°‚à°—à°¾ తీసà±à°•à±‹ (ఆటోమెటికà±â€Œ లింకౠలేకà±à°‚à°¡à°¾)',
-'tog-externaleditor' => 'మామూలà±à°—à°¾ బయటి à°Žà°¡à°¿à°Ÿà°°à±à°¨à± వాడౠ(నిపà±à°£à±à°²à°•à± మాతà±à°°à°®à±‡. మీ à°•à°‚à°ªà±à°¯à±‚à°Ÿà°°à±à°²à±‹ à°ªà±à°°à°¤à±à°¯à±‡à°• అమరికలౠఅవసరమవà±à°¤à°¾à°¯à°¿. [http://www.mediawiki.org/wiki/Manual:External_editors మరింత సమాచారం.])',
-'tog-externaldiff' => 'మారà±à°ªà±à°²à°¨à± చూడటానికి బయటి సాఫà±à°Ÿà±à°µà±‡à°°à±à°¨à± వాడౠ(నిపà±à°£à±à°²à°•à± మాతà±à°°à°®à±‡, మీ à°•à°‚à°ªà±à°¯à±‚à°Ÿà°°à±à°²à±‹ à°ªà±à°°à°¤à±à°¯à±‡à°• అమరికలౠఅవసరమవà±à°¤à°¾à°¯à°¿. [http://www.mediawiki.org/wiki/Manual:External_editors మరింత సమాచారం.])',
+'tog-externaleditor' => 'మామూలà±à°—à°¾ బయటి à°Žà°¡à°¿à°Ÿà°°à±à°¨à± వాడౠ(నిపà±à°£à±à°²à°•à± మాతà±à°°à°®à±‡. మీ à°•à°‚à°ªà±à°¯à±‚à°Ÿà°°à±à°²à±‹ à°ªà±à°°à°¤à±à°¯à±‡à°• అమరికలౠఅవసరమవà±à°¤à°¾à°¯à°¿. [//www.mediawiki.org/wiki/Manual:External_editors మరింత సమాచారం.])',
+'tog-externaldiff' => 'మారà±à°ªà±à°²à°¨à± చూడటానికి బయటి సాఫà±à°Ÿà±à°µà±‡à°°à±à°¨à± వాడౠ(నిపà±à°£à±à°²à°•à± మాతà±à°°à°®à±‡, మీ à°•à°‚à°ªà±à°¯à±‚à°Ÿà°°à±à°²à±‹ à°ªà±à°°à°¤à±à°¯à±‡à°• అమరికలౠఅవసరమవà±à°¤à°¾à°¯à°¿. [//www.mediawiki.org/wiki/Manual:External_editors మరింత సమాచారం.])',
'tog-showjumplinks' => '"ఇకà±à°•à°¡à°¿à°•à°¿ గెంతà±" లింకà±à°²à°¨à± చూపించà±',
'tog-uselivepreview' => 'రాసà±à°¤à±à°¨à±à°¨à°¦à°¾à°¨à°¿à°¨à°¿ à°Žà°ªà±à°ªà°Ÿà°¿à°•à°ªà±à°ªà±à°¡à± సరిచూడండి (జావాసà±à°•à±à°°à°¿à°ªà±à°Ÿà±) (పరీకà±à°·à°¾à°¦à°¶à°²à±‹ ఉంది)',
'tog-forceeditsummary' => 'దిదà±à°¦à±à°¬à°¾à°Ÿà± సారాంశం ఖాళీగా ఉంటే à°† విషయానà±à°¨à°¿ నాకౠసూచించà±',
@@ -266,15 +266,7 @@ $messages = array(
'listingcontinuesabbrev' => '(కొనసాగింపà±)',
'index-category' => 'సూచీకరించిన పేజీలà±',
'noindex-category' => 'సూచీకరించని పేజీలà±',
-
-'mainpagetext' => "'''మీడియా వికీని విజయవంతంగా à°ªà±à°°à°¤à°¿à°·à±à°Ÿà°¿à°‚చాం.'''",
-'mainpagedocfooter' => 'వికీ సాఫà±à°Ÿà±à°µà±‡à°°à±à°¨à± వాడటనికి కావలిసిన సమాచారం కోసం [http://meta.wikimedia.org/wiki/Help:Contents వాడà±à°•à°°à±à°² గైడà±]నౠసందరà±à°¶à°¿à°‚à°šà°‚à°¡à°¿.
-
-== మొదలౠపెటà±à°Ÿà°‚à°¡à°¿ ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings మీడియావికీ పనితీరà±, అమరిక మారà±à°šà±à°•à±à°¨à±‡à°‚à°¦à±à°•à± వీలà±à°•à°²à±à°ªà°¿à°‚చే à°šà°¿à°¹à±à°¨à°¾à°² జాబితా]
-* [http://www.mediawiki.org/wiki/Manual:FAQ మీడియావికీపై తరà±à°šà±à°—à°¾ అడిగే à°ªà±à°°à°¶à±à°¨à°²à±]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce మీడియావికీ సాఫà±à°Ÿà±à°µà±‡à°°à± కొతà±à°¤ వెరà±à°·à°¨à± విడà±à°¦à°²à°² à°—à±à°°à°¿à°‚à°šà°¿ తెలిపే మెయిలింగౠలిసà±à°Ÿà±]',
+'broken-file-category' => 'తెగిపోయిన ఫైలà±à°²à°¿à°‚à°•à±à°²à± à°—à°² పేజీలà±',
'about' => 'à°—à±à°°à°¿à°‚à°šà°¿',
'article' => 'à°µà±à°¯à°¾à°¸à°®à±',
@@ -326,17 +318,18 @@ $messages = array(
'history' => 'పేజీ à°šà°°à°¿à°¤à±à°°',
'history_short' => 'à°šà°°à°¿à°¤à±à°°',
'updatedmarker' => 'నేనౠకిందటిసారి వచà±à°šà°¿à°¨ తరà±à°µà°¾à°¤ జరిగిన మారà±à°ªà±à°²à±',
-'info_short' => 'సమాచారం',
'printableversion' => 'à°®à±à°¦à±à°°à°¿à°‚à°šà±à°•à±‹à°¦à°—à±à°— కూరà±à°ªà±',
'permalink' => 'శాశà±à°µà°¤ లింకà±',
'print' => 'à°®à±à°¦à±à°°à°¿à°‚à°šà±',
+'view' => 'చూచà±à°Ÿ',
'edit' => 'సవరించà±',
'create' => 'సృషà±à°Ÿà°¿à°‚à°šà±',
'editthispage' => 'ఈ పేజీని సవరించండి',
'create-this-page' => 'à°ˆ పేజీని సృషà±à°Ÿà°¿à°‚à°šà°‚à°¡à°¿',
-'delete' => 'తీసివేయి',
+'delete' => 'తొలగించà±',
'deletethispage' => 'ఈ పేజీని తొలగించండి',
'undelete_short' => '{{PLURAL:$1|à°’à°•à±à°• రచననà±|$1 రచనలనà±}} à°ªà±à°¨à°ƒà°¸à±à°¥à°¾à°ªà°¿à°‚à°šà±',
+'viewdeleted_short' => '{{PLURAL:$1|తొలగించిన à°’à°• మారà±à°ªà±|$1 తొలగించిన మారà±à°ªà±à°²}}నౠచూడండి',
'protect' => 'సంరకà±à°·à°¿à°‚à°šà±',
'protect_change' => 'మారà±à°šà±',
'protectthispage' => 'à°ˆ పేజీని సంరకà±à°·à°¿à°‚à°šà±',
@@ -420,6 +413,8 @@ $1',
'toc' => 'విషయ సూచిక',
'showtoc' => 'చూపించà±',
'hidetoc' => 'దాచà±',
+'collapsible-collapse' => 'à°•à±à°¦à°¿à°‚à°šà±',
+'collapsible-expand' => 'విసà±à°¤à°°à°¿à°‚à°šà±',
'thisisdeleted' => '$1నౠచూసà±à°¤à°¾à°°à°¾, à°ªà±à°¨à°ƒà°¸à±à°¥à°¾à°ªà°¿à°¸à±à°¤à°¾à°°à°¾?',
'viewdeleted' => '$1 చూసà±à°¤à°¾à°°à°¾?',
'restorelink' => '{{PLURAL:$1|à°’à°• తొలగించిన మారà±à°ªà±|$1 తొలగించిన మారà±à°ªà±à°²à±}}',
@@ -431,6 +426,8 @@ $1',
'page-rss-feed' => '"$1" ఆరెసెసà±à°¸à±(RSS) ఫీడà±',
'page-atom-feed' => '"$1" ఆటమౠఫీడà±',
'red-link-title' => '$1 (à°ªà±à°Ÿ లేదà±)',
+'sort-descending' => 'అవరోహణ à°•à±à°°à°®à°‚లో అమరà±à°šà±',
+'sort-ascending' => 'ఆరోహణ à°•à±à°°à°®à°‚లో అమరà±à°šà±',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'పేజీ',
@@ -517,12 +514,11 @@ $1',
'protectedinterface' => 'సాఫà±à°Ÿà±à°µà±‡à°°à± ఇంటరà±à°«à±‡à°¸à±à°•à± చెందిన టెకà±à°¸à±à°Ÿà±à°¨à± à°ˆ పేజీ అందిసà±à°¤à±à°‚ది. à°¦à±à°¶à±à°šà°°à±à°¯à°² నివారణ కోసమై దీనà±à°¨à°¿ లాకౠచేసాం.',
'editinginterface' => "'''హెచà±à°šà°°à°¿à°•''': సాఫà±à°Ÿà±à°µà±‡à°°à±à°•à± ఇంటరà±à°«à±‡à°¸à± టెకà±à°¸à±à°Ÿà±à°¨à± అందించే పేజీని మీరౠసరిదిదà±à°¦à±à°¤à±à°¨à±à°¨à°¾à°°à±.
à°ˆ పేజీలో చేసే మారà±à°ªà±à°² వలà±à°² ఇతర వాడà±à°•à°°à±à°²à°•à± ఇంటరà±à°«à±‡à°¸à± కనబడే విధానంలో తేడావసà±à°¤à±à°‚ది.
-à°…à°¨à±à°µà°¾à°¦à°¾à°² కొరకైతే, [http://translatewiki.net/wiki/Main_Page?setlang=te à°Ÿà±à°°à°¾à°¨à±à°¸à±â€Œà°²à±‡à°Ÿà± వికీ.నెటà±], మీడియావికీ à°¸à±à°¥à°¾à°¨à°¿à°•à±€à°•à°°à°£ à°ªà±à°°à°¾à°œà±†à°•à±à°Ÿà±, ని వాడండి.",
+à°…à°¨à±à°µà°¾à°¦à°¾à°² కొరకైతే, [//translatewiki.net/wiki/Main_Page?setlang=te à°Ÿà±à°°à°¾à°¨à±à°¸à±â€Œà°²à±‡à°Ÿà± వికీ.నెటà±], మీడియావికీ à°¸à±à°¥à°¾à°¨à°¿à°•à±€à°•à°°à°£ à°ªà±à°°à°¾à°œà±†à°•à±à°Ÿà±, ని వాడండి.",
'sqlhidden' => '(SQL à°•à±à°µà°¿à°°à±€à°¨à°¿ చూపించటం లేదà±)',
'cascadeprotected' => 'కింది {{PLURAL:$1|పేజీని|పేజీలనà±}} కాసà±à°•à±‡à°¡à°¿à°‚గౠఆపà±à°·à°¨à±à°¤à±‹ చేసి సంరకà±à°·à°¿à°‚చారà±. à°ªà±à°°à°¸à±à°¤à±à°¤ పేజీ, à°ˆ పేజీలà±à°²à±‹ ఇంకà±à°²à±‚డౠఅయి ఉంది కాబటà±à°Ÿà°¿, దిదà±à°¦à±à°¬à°¾à°Ÿà± చేసే వీలౠలేకà±à°‚à°¡à°¾ ఇది కూడా à°°à°•à±à°·à°£à°²à±‹ ఉంది.
$2',
'namespaceprotected' => "'''$1''' నేంసà±à°ªà±‡à°¸à±à°²à±‹ మారà±à°ªà±à°²à± చేయటానికి మీకౠఅనà±à°®à°¤à°¿ లేదà±.",
-'customcssjsprotected' => 'వేరే వాడà±à°•à°°à°¿ à°µà±à°¯à°•à±à°¤à°¿à°—à°¤ సెటà±à°Ÿà°¿à°‚à°—à±à°²à± ఉనà±à°¨à°¾à°¯à°¿ కాబటà±à°Ÿà°¿, à°ˆ పేజీలో దిదà±à°¦à±à°¬à°¾à°Ÿà± చేసేందà±à°•à± మీకౠఅనà±à°®à°¤à°¿ లేదà±.',
'ns-specialprotected' => 'à°ªà±à°°à°¤à±à°¯à±‡à°• పేజీలపై దిదà±à°¦à±à°¬à°¾à°Ÿà±à°²à± చేయలేరà±.',
'titleprotected' => "సభà±à°¯à±à°²à± [[User:$1|$1]] à°ˆ పేజీని సృషà±à°Ÿà°¿à°‚చనివà±à°µà°•à±à°‚à°¡à°¾ నిరోదిసà±à°¤à±à°¨à±à°¨à°¾à°°à±.
à°…à°‚à°¦à±à°•à± ఇచà±à°šà°¿à°¨ కారణం: ''$2''.",
@@ -561,6 +557,7 @@ $2',
'createaccount' => 'ఖాతాని సృషà±à°Ÿà°¿à°‚à°šà±',
'gotaccount' => "ఇపà±à°ªà°Ÿà°¿à°•à±‡ మీకౠఖాతా ఉందా? '''$1'''.",
'gotaccountlink' => 'à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà°‚à°¡à°¿',
+'userlogin-resetlink' => 'మీ à°ªà±à°°à°µà±‡à°¶ వివరాలనౠమరచిపోయారా?',
'createaccountmail' => 'à°ˆ-మెయిలౠదà±à°µà°¾à°°à°¾',
'createaccountreason' => 'కారణం:',
'badretype' => 'మీరౠఇచà±à°šà°¿à°¨ రెండౠసంకేతపదాలౠఒకదానితో మరొకటి సరిపోలడం లేదà±.',
@@ -575,13 +572,15 @@ $2',
'nocookieslogin' => 'వాడà±à°•à°°à±à°² à°ªà±à°°à°µà±‡à°¶à°¾à°¨à°¿à°•à±ˆ {{SITENAME}} కూకీలనౠవాడà±à°¤à±à°‚ది.
మీరౠకà±à°•à±€à°²à°¨à°¿ అచేతనం చేసివà±à°¨à±à°¨à°¾à°°à±.
వాటిని చేతనంచేసి à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿.',
+'nocookiesfornew' => 'మూలానà±à°¨à°¿ à°•à°¨à±à°•à±à°•à±‹à°²à±‡à°•à°ªà±‹à°¯à°¾à°‚ కాబటà±à°Ÿà°¿, à°ˆ వాడà±à°•à°°à°¿ ఖాతానౠసృషà±à°Ÿà°¿à°‚చలేకపోయాం.
+మీ à°•à°‚à°ªà±à°¯à±‚à°Ÿà°°à±à°²à±‹ కూకీలౠచేతనమై ఉనà±à°¨à°¾à°¯à°¨à°¿ నిశà±à°šà°¯à°¿à°‚à°šà±à°•à±Šà°¨à°¿, à°ˆ పేజీని తిరిగి లోడౠచేసి, మళà±à°³à±€ à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿.',
'noname' => 'మీరౠసరైన వాడà±à°•à°°à°¿à°ªà±‡à°°à± ఇవà±à°µà°²à±‡à°¦à±.',
'loginsuccesstitle' => 'à°ªà±à°°à°µà±‡à°¶à°‚ విజయవంతమైనది',
'loginsuccess' => "'''మీరౠఇపà±à°ªà±à°¡à± {{SITENAME}}లోనికి \"\$1\"à°—à°¾ à°ªà±à°°à°µà±‡à°¶à°¿à°‚చారà±.'''",
'nosuchuser' => '"$1" అనే పేరà±à°¤à±‹ వాడà±à°•à°°à±à°²à± లేరà±.
వాడà±à°•à°°à°¿ పేరà±à°²à± కేసౠసెనà±à°¸à°¿à°Ÿà°¿à°µà±.
à°…à°•à±à°·à°°à°•à±à°°à°®à°‚ సరిచూసà±à°•à±‹à°‚à°¡à°¿, లేదా [[Special:UserLogin/signup|కొతà±à°¤ ఖాతా సృషà±à°Ÿà°¿à°‚à°šà±à°•à±‹à°‚à°¡à°¿]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" అనే పేరà±à°¤à±‹ సభà±à°¯à±à°²à± లేరà±. పేరౠసరి చూసà±à°•à±‹à°‚à°¡à°¿.',
+'nosuchusershort' => '"$1" అనే పేరà±à°¤à±‹ సభà±à°¯à±à°²à± లేరà±. పేరౠసరి చూసà±à°•à±‹à°‚à°¡à°¿.',
'nouserspecified' => 'సభà±à°¯à°¨à°¾à°®à°¾à°¨à±à°¨à°¿ తపà±à°ªà°¨à°¿à°¸à°°à°¿à°—à°¾ à°Žà°‚à°šà±à°•à±‹à°µà°¾à°²à°¿.',
'login-userblocked' => 'à°ˆ వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించారà±. à°ªà±à°°à°µà±‡à°¶à°¾à°¨à°¿à°•à°¿ à°…à°¨à±à°®à°¤à°¿ లేదà±.',
'wrongpassword' => 'à°ˆ సంకేతపదం సరైనది కాదà±. దయచేసి మళà±à°²à±€ à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿.',
@@ -622,13 +621,14 @@ $2',
'usernamehasherror' => 'వాడà±à°•à°°à°¿à°ªà±‡à°°à±à°²à±‹ హాషౠఅకà±à°·à°°à°¾à°²à± ఉండకూడదà±',
'login-throttled' => 'à°—à°¤ కొదà±à°¦à°¿à°¸à±‡à°ªà°Ÿà°¿ à°¨à±à°‚à°¡à°¿ మీరౠచాలా à°ªà±à°°à°µà±‡à°¶ à°ªà±à°°à°¯à°¤à±à°¨à°¾à°²à± చేసారà±.
మళà±à°³à±€ à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚చే à°®à±à°‚దౠకాసేపౠవేచివà±à°‚à°¡à°‚à°¡à°¿.',
+'login-abort-generic' => 'మీ లాగినౠపà±à°°à°¯à°¤à±à°¨à°‚ విఫలమైంది - ఆగిపోయింది',
'loginlanguagelabel' => 'భాష: $1',
'suspicious-userlogout' => 'సరిగా పనిచేయని విహారిణి లేదా కాషింగౠపà±à°°à°¾à°•à±à°¸à±€ వలà±à°² పంపబడడం చేత, నిషà±à°•à±à°°à°®à°¿à°‚చాలనే మీ à°…à°­à±à°¯à°°à±à°¥à°¨à°¨à°¿ నిరాకరించారà±.',
# E-mail sending
'php-mail-error-unknown' => 'PHP యొకà±à°• mail() à°«à°‚à°•à±à°·à°¨à±â€à°²à±‹ à°à°¦à±‹ తెలియని లోపం దొరà±à°²à°¿à°‚ది',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'సంకేతపదానà±à°¨à°¿ మారà±à°šà°‚à°¡à°¿',
'resetpass_announce' => 'మీకౠపంపిన తాతà±à°•à°¾à°²à°¿à°• సంకేతంతో à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà°¿à°µà±à°¨à±à°¨à°¾à°°à±.
à°ªà±à°°à°µà±‡à°¶à°¾à°¨à±à°¨à°¿ పూరà±à°¤à°¿à°šà±‡à°¸à±‡à°‚à°¦à±à°•à±, మీరౠతపà±à°ªà°¨à°¿à°¸à°°à°¿à°—à°¾ ఇకà±à°•à°¡ కొతà±à°¤ సంకేతపదానà±à°¨à°¿ అమరà±à°šà±à°•à±‹à°µà°¾à°²à°¿:',
@@ -646,6 +646,33 @@ $2',
మీరౠమీ సంకేతపదానà±à°¨à°¿ ఇపà±à°ªà°Ÿà°¿à°•à±‡ విజయవంతంగా మారà±à°šà±à°•à±Šà°¨à°¿à°µà±à°‚డవచà±à°šà± లేదా కొతà±à°¤ తాతà±à°•à°¾à°²à°¿à°• సంకేతపదం కోసం à°…à°­à±à°¯à°°à±à°¥à°¿à°‚చారà±.',
'resetpass-temp-password' => 'తాతà±à°•à°¾à°²à°¿à°• సంకేతపదం:',
+# Special:PasswordReset
+'passwordreset' => 'సంకేతపదానà±à°¨à°¿ మారà±à°šà±à°•à±‹à°‚à°¡à°¿',
+'passwordreset-text' => 'మీ ఖాతా వివరాలనౠగà±à°°à±à°¤à± చేసే ఈమెయిలౠకోసం à°ˆ ఫారానà±à°¨à°¿ పూరà±à°¤à°¿ చెయà±à°¯à°‚à°¡à°¿.',
+'passwordreset-legend' => 'సంకేతపదానà±à°¨à°¿ మారà±à°šà±à°•à±‹à°‚à°¡à°¿',
+'passwordreset-disabled' => 'à°ˆ వికీలో సంకేతపదాల మారà±à°ªà±à°¨à± అచేతనం చేసాం.',
+'passwordreset-pretext' => '{{PLURAL:$1||డేటా శకలాలà±à°²à±‹à°‚à°šà°¿ ఒకదానà±à°¨à°¿ ఇవà±à°µà°‚à°¡à°¿}}',
+'passwordreset-username' => 'వాడà±à°•à°°à°¿à°ªà±‡à°°à±:',
+'passwordreset-email' => 'à°ˆ-మెయిలౠచిరà±à°¨à°¾à°®à°¾:',
+'passwordreset-emailtitle' => '{{SITENAME}}లో ఖాతా వివరాలà±',
+'passwordreset-emailtext-ip' => 'ఎవరో (బహà±à°¶à°¾ మీరే, à°à°ªà±€ à°…à°¡à±à°°à°¸à± $1 à°¨à±à°‚à°šà°¿) {{SITENAME}} ($4) లో మీ ఖాతా వివరాలనౠచెపà±à°ªà°®à°‚టూ అడిగారà±. కింది వాడà±à°•à°°à°¿ {{PLURAL:$3|ఖాతా|ఖాతాలà±}}
+à°ˆ ఈమెయిలౠఅడà±à°°à°¸à±à°¤à±‹ à°…à°¨à±à°¸à°‚ధింపబడి ఉనà±à°¨à°¾à°¯à°¿:
+
+$2
+
+{{PLURAL:$3|à°ˆ తాతà±à°•à°¾à°²à°¿à°• సంకేతపదానికి|à°ˆ తాతà±à°•à°¾à°²à°¿à°• సంకేతపదాలకà±}} {{PLURAL:$5|à°’à°•à±à°• రోజà±à°²à±‹|$5 రోజà±à°²à±à°²à±‹}} కాలం చెలà±à°²à±à°¤à±à°‚ది.
+ఇపà±à°ªà±à°¡à± మీరౠలాగినై కొతà±à°¤ సంకేతపదానà±à°¨à°¿ à°Žà°‚à°šà±à°•à±‹à°µà°¾à°²à±à°¸à°¿ ఉంటà±à°‚ది. à°ˆ à°…à°­à±à°¯à°°à±à°§à°¨ చేసింది మరెవరైనా అయినా, లేక మీ అసలౠసంకేతపదం మీకౠగà±à°°à±à°¤à±Šà°šà±à°šà°¿, మారà±à°šà°¾à°²à±à°¸à°¿à°¨ అవసరం లేకపోయినా, మీరీ సందేశానà±à°¨à°¿ పటà±à°Ÿà°¿à°‚à°šà±à°•à±‹à°¨à°•à±à°•à°°à±à°²à±‡à°¦à±. పాత సంకేతపదానà±à°¨à±‡ వాడà±à°¤à±‚ పోవచà±à°šà±.',
+'passwordreset-emailtext-user' => '{{SITENAME}} లోని వాడà±à°•à°°à°¿ $1, {{SITENAME}} ($4) లోని మీ ఖాతా వివరాలనౠచెపà±à°ªà°®à°‚టూ అడిగారà±. కింది వాడà±à°•à°°à°¿ {{PLURAL:$3|ఖాతా|ఖాతాలà±}}
+à°ˆ ఈమెయిలౠఅడà±à°°à°¸à±à°¤à±‹ à°…à°¨à±à°¸à°‚ధింపబడి ఉనà±à°¨à°¾à°¯à°¿:
+
+$2
+
+{{PLURAL:$3|à°ˆ తాతà±à°•à°¾à°²à°¿à°• సంకేతపదానికి|à°ˆ తాతà±à°•à°¾à°²à°¿à°• సంకేతపదాలకà±}} {{PLURAL:$5|à°’à°•à±à°• రోజà±à°²à±‹|$5 రోజà±à°²à±à°²à±‹}} కాలం చెలà±à°²à±à°¤à±à°‚ది.
+ఇపà±à°ªà±à°¡à± మీరౠలాగినై కొతà±à°¤ సంకేతపదానà±à°¨à°¿ à°Žà°‚à°šà±à°•à±‹à°µà°¾à°²à±à°¸à°¿ ఉంటà±à°‚ది. à°ˆ à°…à°­à±à°¯à°°à±à°§à°¨ చేసింది మరెవరైనా అయినా, లేక మీ అసలౠసంకేతపదం మీకౠగà±à°°à±à°¤à±Šà°šà±à°šà°¿, మారà±à°šà°¾à°²à±à°¸à°¿à°¨ అవసరం లేకపోయినా, మీరీ సందేశానà±à°¨à°¿ పటà±à°Ÿà°¿à°‚à°šà±à°•à±‹à°¨à°•à±à°•à°°à±à°²à±‡à°¦à±. పాత సంకేతపదానà±à°¨à±‡ వాడà±à°¤à±‚ పోవచà±à°šà±.',
+'passwordreset-emailelement' => 'వాడà±à°•à°°à°¿à°ªà±‡à°°à±: $1
+తాతà±à°•à°¾à°²à°¿à°• సంకేతపదం: $2',
+'passwordreset-emailsent' => 'à°œà±à°žà°¾à°ªà°•à°‚ ఈమెయిలౠపంపించాం.',
+
# Edit page toolbar
'bold_sample' => 'బొదà±à°¦à± à°…à°•à±à°·à°°à°¾à°²à±',
'bold_tip' => 'బొదà±à°¦à± à°…à°•à±à°·à°°à°¾à°²à±',
@@ -657,8 +684,6 @@ $2',
'extlink_tip' => 'బయటి లింకౠ(దీనికి à°®à±à°‚దౠhttp:// ఇవà±à°µà°Ÿà°‚ మరà±à°µà°•à°‚à°¡à°¿)',
'headline_sample' => 'శీరà±à°·à°¿à°• పాఠà±à°¯à°‚',
'headline_tip' => '2à°µ à°¸à±à°¥à°¾à°¯à°¿ శీరà±à°·à°¿à°•',
-'math_sample' => 'సూతà±à°°à°¾à°¨à±à°¨à°¿ ఇకà±à°•à°¡ ఇవà±à°µà°‚à°¡à°¿',
-'math_tip' => 'గణిత సూతà±à°°à°‚ (LaTeX)',
'nowiki_sample' => 'ఫారà±à°®à°¾à°Ÿà± చేయకూడని పాఠà±à°¯à°¾à°¨à±à°¨à°¿ ఇకà±à°•à°¡ చేరà±à°šà°‚à°¡à°¿',
'nowiki_tip' => 'వికీ ఫారà±à°®à°¾à°Ÿà±à°¨à± పటà±à°Ÿà°¿à°‚à°šà±à°•à±‹à°µà°¦à±à°¦à±',
'image_tip' => 'పొదిగిన ఫైలà±',
@@ -743,7 +768,7 @@ $2',
'noarticletext-nopermission' => 'à°ªà±à°°à°¸à±à°¤à±à°¤à°‚ à°ˆ పేజీలో పాఠà±à°¯à°®à±‡à°®à±€ లేదà±.
మీరౠఇతర పేజీలలో [[Special:Search/{{PAGENAME}}|à°ˆ పేజీ శీరà±à°·à°¿à°• కోసం వెతకవచà±à°šà±]],
లేదా <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} సంబంధిత à°šà°¿à°Ÿà±à°Ÿà°¾à°²à°²à±‹ వెతకండి]</span>.',
-'userpage-userdoesnotexist' => '"$1" అనే వాడà±à°•à°°à°¿ ఖాతా నమోదయిలేదà±. మీరౠఈ పేజీని సృషà±à°Ÿà°¿à°‚à°š/సరిదిదà±à°¦à°¾à°²à°¨à±à°•à±à°‚టే, సరిచూసà±à°•à±‹à°‚à°¡à°¿.',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" అనే వాడà±à°•à°°à°¿ ఖాతా నమోదయిలేదà±. మీరౠఈ పేజీని సృషà±à°Ÿà°¿à°‚à°š/సరిదిదà±à°¦à°¾à°²à°¨à±à°•à±à°‚టే, సరిచూసà±à°•à±‹à°‚à°¡à°¿.',
'userpage-userdoesnotexist-view' => 'వాడà±à°•à°°à°¿ ఖాతా "$1" నమోదà±à°•à°¾à°²à±‡à°¦à±.',
'blocked-notice-logextract' => 'à°ªà±à°°à°¸à±à°¤à±à°¤à°‚ à°ˆ వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించారà±.
నిరోధపౠచిటà±à°Ÿà°¾à°²à±‹à°¨à°¿ చివరి పదà±à°¦à±à°¨à°¿ మీ సమాచారం కోసం à°ˆ à°•à±à°°à°¿à°‚à°¦ ఇసà±à°¤à±à°¨à±à°¨à°¾à°‚:',
@@ -773,6 +798,7 @@ $2',
'''మీరౠచేసినది సరైన దిదà±à°¦à±à°¬à°¾à°Ÿà±‡ అయితే, మళà±à°³à±€ à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿. అయినా పనిచెయà±à°¯à°•à°ªà±‹à°¤à±‡, à°“ సారి లాగౌటయà±à°¯à°¿, మళà±à°³à±€ లాగినయి చూడండి.'''",
'token_suffix_mismatch' => "'''మీ à°•à±à°²à°¯à°‚à°Ÿà±, దిదà±à°¦à±à°¬à°¾à°Ÿà± టోకెనà±â€Œà°²à±‹à°¨à°¿ à°µà±à°¯à°¾à°•à°°à°£ à°—à±à°°à±à°¤à±à°²à°¨à± గజిబిజి చేసింది కాబటà±à°Ÿà°¿ మీ దిదà±à°¦à±à°¬à°¾à°Ÿà±à°¨à± తిరసà±à°•à°°à°¿à°‚చాం. పేజీలోని పాఠà±à°¯à°¾à°¨à±à°¨à°¿ చెడగొటà±à°Ÿà°•à±à°‚à°¡à°¾ ఉండేందà±à°•à± గానà±, à°† దిదà±à°¦à±à°¬à°¾à°Ÿà±à°¨à± à°°à°¦à±à°¦à± చేశాం. వెబà±â€Œà°²à±‹ ఉండే లోపభూయిషà±à°Ÿà°®à±ˆà°¨ à°…à°œà±à°žà°¾à°¤ à°ªà±à°°à°¾à°•à±à°¸à±€ సరà±à°µà±€à°¸à±à°²à°¨à± వాడినపà±à°¡à± à°’à°•à±à°•à±‹à°¸à°¾à°°à°¿ ఇలా జరà±à°—à±à°¤à±à°‚ది.'''",
+'edit_form_incomplete' => '’’’ఈ ఎడిటౠఫారంలోని కొనà±à°¨à°¿ భాగాలౠసరà±à°µà°°à±à°¨à± చేరలేదà±; మీ మారà±à°ªà±à°šà±‡à°°à±à°ªà±à°²à± à°­à°¦à±à°°à°‚à°—à°¾ ఉనà±à°¨à°¾à°¯à°¨à°¿ ధృవపరచà±à°•à±à°¨à°¿, మళà±à°³à±€ à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿.’’’',
'editing' => '$1à°•à°¿ మారà±à°ªà±à°²à±',
'editingsection' => '$1కౠమారà±à°ªà±à°²à± (విభాగం)',
'editingcomment' => '$1 దిదà±à°¦à±à°¬à°¾à°Ÿà± (కొతà±à°¤ విభాగం)',
@@ -1108,12 +1134,13 @@ $1",
'searchdisabled' => '{{SITENAME}} à°…à°¨à±à°µà±‡à°·à°£ తాతà±à°•à°¾à°²à°¿à°•à°‚à°—à°¾ పని చెయà±à°¯à°¡à°‚ లేదà±. ఈలోగా మీరౠగూగà±à°²à±â€Œ ఉపయోగించి à°…à°¨à±à°µà±‡à°·à°¿à°‚చవచà±à°šà±. à°’à°• గమనిక: గూగà±à°²à±â€Œ à°¦à±à°µà°¾à°°à°¾ కాలదోషం పటà±à°Ÿà°¿à°¨ ఫలితాలౠరావడానికి అవకాశం ఉంది.',
# Quickbar
-'qbsettings' => 'à°•à±à°µà°¿à°•à±â€Œà°¬à°¾à°°à±',
-'qbsettings-none' => 'à°à°¦à±€à°•à°¾à°¦à±',
-'qbsettings-fixedleft' => 'à°¸à±à°¥à°¿à°° à°Žà°¡à°®',
-'qbsettings-fixedright' => 'à°¸à±à°¥à°¿à°° à°•à±à°¡à°¿',
-'qbsettings-floatingleft' => 'ఎడమకౠఒదిగి',
-'qbsettings-floatingright' => 'à°•à±à°¡à°¿à°•à°¿ ఒదిగి',
+'qbsettings' => 'à°•à±à°µà°¿à°•à±â€Œà°¬à°¾à°°à±',
+'qbsettings-none' => 'à°à°¦à±€à°•à°¾à°¦à±',
+'qbsettings-fixedleft' => 'à°¸à±à°¥à°¿à°° à°Žà°¡à°®',
+'qbsettings-fixedright' => 'à°¸à±à°¥à°¿à°° à°•à±à°¡à°¿',
+'qbsettings-floatingleft' => 'ఎడమకౠఒదిగి',
+'qbsettings-floatingright' => 'à°•à±à°¡à°¿à°•à°¿ ఒదిగి',
+'qbsettings-directionality' => 'à°¸à±à°¥à°¿à°°à°‚, మీ లిపి మరియౠభాషల యొకà±à°• దిశ ఆధారంగా',
# Preferences page
'preferences' => 'à°…à°­à°¿à°°à±à°šà±à°²à±',
@@ -1124,9 +1151,10 @@ $1",
'changepassword' => 'సంకేతపదానà±à°¨à°¿ మారà±à°šà°‚à°¡à°¿',
'prefs-skin' => 'అలంకారం',
'skin-preview' => 'à°®à±à°¨à±à°œà±‚à°ªà±/సరిచూడà±',
-'prefs-math' => 'గణితం',
'datedefault' => 'à°à°¦à±ˆà°¨à°¾ పరవాలేదà±',
+'prefs-beta' => 'బీటా సౌలభà±à°¯à°¾à°²à±',
'prefs-datetime' => 'తేదీ, సమయం',
+'prefs-labs' => 'à°ªà±à°°à°¯à±‹à°—ాతà±à°®à°• సౌలభà±à°¯à°¾à°²à±',
'prefs-personal' => 'వాడà±à°•à°°à°¿ వివరాలà±',
'prefs-rc' => 'ఇటీవలి మారà±à°ªà±à°²à±, మొలకలà±',
'prefs-watchlist' => 'వీకà±à°·à°£ జాబితా',
@@ -1148,8 +1176,6 @@ $1",
'columns' => 'వరà±à°¸à°²à±:',
'searchresultshead' => 'à°…à°¨à±à°µà±‡à°·à°£',
'resultsperpage' => 'పేజీకి ఫలితాలà±:',
-'contextlines' => 'హిటà±à°Ÿà±à°•à± లైనà±à°²à±:',
-'contextchars' => 'లైనà±à°•à± సందరà±à°­à°¾à°²à±:',
'stub-threshold' => '<a href="#" class="stub">మొలక లింకà±</a> ఫారà±à°®à°¾à°Ÿà°¿à°‚గౠకొరకౠహదà±à°¦à± (బైటà±à°²à±):',
'stub-threshold-disabled' => 'అచేతనం',
'recentchangesdays' => 'ఇటీవలి మారà±à°ªà±à°²à± లో చూపించవలసిన రోజà±à°²à±:',
@@ -1161,7 +1187,7 @@ $1",
'savedprefs' => 'మీ à°…à°­à°¿à°°à±à°šà±à°²à°¨à± à°­à°¦à±à°°à°ªà°°à°¿à°šà°¾à°‚.',
'timezonelegend' => 'టైం జోనà±:',
'localtime' => 'à°¸à±à°¥à°¾à°¨à°¿à°• సమయం:',
-'timezoneuseserverdefault' => 'సరà±à°µà°°à± అమరికని వాడà±',
+'timezoneuseserverdefault' => 'వికీ à°…à°ªà±à°°à°®à±‡à°¯à°¾à°¨à±à°¨à°¿ ఉపయోగించౠ($1)',
'timezoneuseoffset' => 'ఇతర (భేదానà±à°¨à°¿ ఇవà±à°µà°‚à°¡à°¿)',
'timezoneoffset' => 'తేడా¹:',
'servertime' => 'సరà±à°µà°°à± సమయం:',
@@ -1207,8 +1233,8 @@ $1",
'prefs-help-gender' => 'à°à°šà±à°›à°¿à°•à°‚: లింగ-సమంజసమైన సంబోధనలకౠఈ మృదà±à°‰à°ªà°•à°°à°£à°‚ వాడà±à°•à±à°‚à°Ÿà±à°‚ది. à°ˆ సమాచారం బహిరà±à°—తమౌతà±à°‚ది.',
'email' => 'à°ˆ-మెయిలà±',
'prefs-help-realname' => 'అసలౠపేరౠ(తపà±à°ªà°¨à°¿à°¸à°°à°¿ కాదà±), మీ అసలౠపేరౠఇసà±à°¤à±‡à°—నక, మీ రచనలనà±à°¨à±€ మీ అసలౠపేరà±à°¤à±‹à°¨à±‡ à°—à±à°°à±à°¤à°¿à°¸à±à°¤à±‚ ఉంటారà±.',
-'prefs-help-email' => 'à°ˆ-మెయిలౠచిరà±à°¨à°¾à°®à°¾ తపà±à°ªà°¨à°¿à°¸à°°à°¿ కాదà±, కానీ మీరౠమీ సంకేతపదం మరà±à°šà°¿à°ªà±‹à°¤à±‡ కొతà±à°¤ సంకేతపదానà±à°¨à°¿ మీకౠపంపించడానికి పనికొసà±à°¤à±à°‚ది.
-à°ˆ-మెయిలౠఇసà±à°¤à±‡, మీ à°…à°¸à±à°¤à°¿à°¤à±à°µà°¾à°¨à±à°¨à°¿ బయలà±à°ªà°°à°šà°¨à°µà°¸à°°à°‚ లేకà±à°‚డానే ఇతరà±à°²à± మీ వాడà±à°•à°°à°¿ లేదా వాడà±à°•à°°à°¿_à°šà°°à±à°š పేజీల à°¦à±à°µà°¾à°°à°¾ మిమà±à°®à°²à±à°¨à°¿ సంపà±à°°à°¦à°¿à°‚చవచà±à°šà°¾ అని కూడా మీరౠఎంచà±à°•à±‹à°µà°šà±à°šà±.',
+'prefs-help-email' => 'à°ˆ-మెయిలౠచిరà±à°¨à°¾à°®à°¾ à°à°šà±à°šà°¿à°•à°‚, కానీ మీరౠసంకేతపదానà±à°¨à°¿ మరà±à°šà°¿à°ªà±‹à°¤à±‡ కొతà±à°¤ సంకేతపదానà±à°¨à°¿ మీకౠపంపించడానికి అవసరమవà±à°¤à±à°‚ది.',
+'prefs-help-email-others' => 'మీ à°—à±à°°à±à°¤à°¿à°‚à°ªà±à°¨à°¿ బయలà±à°ªà°°à°šà°•à±à°‚డానే మీ వాడà±à°•à°°à°¿ à°šà°°à±à°šà°¾ à°ªà±à°Ÿà°² à°¨à±à°‚à°¡à°¿ ఇతరà±à°²à± మిమà±à°®à°²à±à°¨à°¿ సంపà±à°°à°¦à°¿à°‚చే వీలà±à°•à°²à±à°ªà°¿à°‚చవచà±à°šà±.',
'prefs-help-email-required' => 'à°ˆ-మెయిలౠచిరà±à°¨à°¾à°®à°¾ తపà±à°ªà°¨à°¿à°¸à°°à°¿.',
'prefs-info' => 'à°ªà±à°°à°¾à°§à°®à°¿à°• సమాచారం',
'prefs-i18n' => 'అంతరà±à°œà°¾à°¤à±€à°¯à±€à°•à°°à°£',
@@ -1333,7 +1359,6 @@ $1",
'right-userrights' => 'వాడà±à°•à°°à±à°²à°‚దరి హకà±à°•à±à°²à°¨à± మారà±à°šà±',
'right-userrights-interwiki' => 'ఇతర వికీలà±à°²à±‹à°¨à°¿ వాడà±à°•à°°à±à°² హకà±à°•à±à°²à°¨à± మారà±à°šà±',
'right-siteadmin' => 'డేటాబేసà±à°¨à± లాకà±, à°…à°¨à±â€Œà°²à°¾à°•à± చెయà±à°¯à°¿',
-'right-reset-passwords' => 'మిగతా వాడà±à°•à°°à±à°² సందేశమà±à°¨à± మారà±à°šà±à°®à±',
'right-override-export-depth' => '5 లింకà±à°² లోతౠవరకౠఉనà±à°¨ పేజీలతో సహా, పేజీలనౠఎగà±à°®à°¤à°¿ చెయà±à°¯à°¿',
'right-sendemail' => 'ఇతర వాడà±à°•à°°à±à°²à°•à± à°ˆ-మెయిలౠపంపించగలగడం',
@@ -1462,13 +1487,13 @@ $1",
'illegalfilename' => '"$1" అనే దసà±à°¤à±à°°à°ªà±à°ªà±‡à°°à± పేజీ శీరà±à°·à°¿à°•à°²à°²à±‹ వాడకూడని à°…à°•à±à°·à°°à°¾à°²à°¨à± కలిగివà±à°‚ది.
దసà±à°¤à±à°°à°ªà± పేరà±à°¨à°¿ మారà±à°šà°¿ మళà±à°³à±€ à°Žà°•à±à°•à°¿à°‚చడానికి à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿.',
'badfilename' => 'ఫైలౠపేరౠ"$1"à°•à°¿ మారà±à°šà°¬à°¡à°¿à°¨à°¦à°¿.',
-'filetype-mime-mismatch' => 'MIME రకంతో దసà±à°¤à±à°°à°ªà± పొడగింపౠసరిపోలలేదà±.',
+'filetype-mime-mismatch' => 'దసà±à°¤à±à°°à°ªà± పొడగింపౠ".$1" à°† దసà±à°¤à±à°°à°‚ యొకà±à°• MIME à°°à°•à°‚ ($2) తో సరిపోలలేదà±.',
'filetype-badmime' => '"$1" MIME à°°à°•à°‚ ఉనà±à°¨ ఫైళà±à°³à°¨à± à°Žà°—à±à°®à°¤à°¿à°•à°¿ à°…à°¨à±à°®à°¤à°¿à°‚à°šà°‚.',
'filetype-bad-ie-mime' => 'à°ˆ ఫైలà±à°¨à°¿ à°Žà°—à±à°®à°¤à°¿ చేయలేరౠఎందà±à°•à°‚టే ఇంటరà±à°¨à±†à°Ÿà± à°Žà°•à±à°¸à±â€Œà°ªà±à°²à±‹à°°à°°à± దీనà±à°¨à°¿ "$1" à°—à°¾ చూపిసà±à°¤à±à°‚ది, ఇది à°…à°¨à±à°®à°¤à°¿ లేని మరియౠపà±à°°à°®à°¾à°¦à°•à°¾à°°à°®à±ˆà°¨ ఫైలౠరకం.',
'filetype-unwanted-type' => "'''\".\$1\"''' అనేది అవాంఛిత ఫైలౠరకం.
\$2 {{PLURAL:\$3|అనేది వాడదగà±à°— ఫైలౠరకం|అనేవి వాడదగà±à°— ఫైలౠరకాలà±}}.",
-'filetype-banned-type' => "'''\".\$1\"''' అనే ఫైలౠరకానà±à°¨à°¿ à°…à°¨à±à°®à°¤à°¿à°‚à°šà°‚.
-à°…à°¨à±à°®à°¤à°¿à°‚చే {{PLURAL:\$3|ఫైలౠరకం ఇదీ|ఫైలౠరకాలౠఇవీ}}: \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|అనేది à°…à°¨à±à°®à°¤à°¿à°‚చబడిన ఫైలౠరకం కాదà±|అనేవి à°…à°¨à±à°®à°¤à°¿à°‚చబడిన ఫైలౠరకాలౠకాదà±}}.
+à°…à°¨à±à°®à°¤à°¿à°‚చబడిన {{PLURAL:$3|ఫైలౠరకం|ఫైలౠరకాలà±}} $2.',
'filetype-missing' => 'ఫైలà±à°•à°¿ పొడగింపౠ(".jpg" లాంటిది) లేదà±.',
'empty-file' => 'మీరౠసమరà±à°ªà°¿à°‚à°šà°¿à°¨ దసà±à°¤à±à°°à°‚ ఖాళీగా ఉంది.',
'file-too-large' => 'మీరౠసమరà±à°ªà°¿à°‚à°šà°¿à°¨ దసà±à°¤à±à°°à°‚ చాలా పెదà±à°¦à°—à°¾ ఉంది.',
@@ -1484,6 +1509,7 @@ $1",
'large-file' => 'ఫైళà±à°³à± $1 కంటే పెదà±à°¦à°µà°¿à°—à°¾ ఉండకà±à°‚à°¡à°¾ ఉంటే మంచిది; à°ˆ ఫైలౠ$2 ఉంది.',
'largefileserver' => 'à°ˆ ఫైలౠసైజౠసరà±à°µà°°à±à°²à±‹ విధించిన పరిమితి కంటే à°Žà°•à±à°•à±à°µà°—à°¾ ఉంది.',
'emptyfile' => 'మీరౠఅపà±â€Œà°²à±‹à°¡à± చేసిన ఫైలౠఖాళీగా ఉనà±à°¨à°Ÿà±à°²à±à°‚ది. ఫైలౠపేరà±à°¨à± ఇవà±à°µà°¡à°‚లో à°¸à±à°ªà±†à°²à±à°²à°¿à°‚గౠతపà±à°ªà± దొరà±à°²à°¿ ఉండొచà±à°šà±. మీరౠఅపà±â€Œà°²à±‹à°¡à± చెయà±à°¯à°¦à°²à°šà°¿à°‚ది ఇదో కాదో నిరà±à°§à°¾à°°à°¿à°‚à°šà±à°•à±‹à°‚à°¡à°¿.',
+'windows-nonascii-filename' => 'దసà±à°¤à±à°°à°¾à°² పేరà±à°²à°²à±‹ à°ªà±à°°à°¤à±à°¯à±‡à°• à°…à°•à±à°·à°°à°¾à°²à°•à± à°ˆ వికీలో తోడà±à°ªà°¾à°Ÿà± లేదà±.',
'fileexists' => "à°ˆ పేరà±à°¤à±‹ à°’à°• ఫైలౠఇపà±à°ªà°Ÿà°¿à°•à±‡ ఉంది.
దీనిని మీరౠమారà±à°šà°¾à°²à±‹ లేదో తెలియకపోతె ఫైలౠ'''<tt>[[:$1]]</tt>'''ని చూడండి.
[[$1|thumb]]",
@@ -1518,6 +1544,8 @@ $1",
దయచేసి file_uploads అమరికని చూడండి.',
'uploadscripted' => 'à°ˆ ఫైలà±à°²à±‹ HTML కోడౠగానీ à°¸à±à°•à±à°°à°¿à°ªà±à°Ÿà± కోడౠగానీ ఉంది. వెబౠబà±à°°à±Œà°œà°°à± దానà±à°¨à°¿ పొరపాటà±à°—à°¾ à°…à°¨à±à°µà°¦à°¿à°‚చే అవకాశం ఉంది.',
'uploadvirus' => 'à°ˆ ఫైలà±à°²à±‹ వైరసà±â€Œ ఉంది! వివరాలà±: $1',
+'uploadjava' => 'ఇదొక ZIP ఫైలà±, ఇందà±à°²à±‹ à°’à°• Java .class ఫైలౠఉంది.
+Java ఫైళà±à°³ వలన à°­à°¦à±à°°à°¤à°•à± తూటà±à°²à± పడే అవకాశం ఉంది కాబటà±à°Ÿà°¿, వాటిని à°Žà°•à±à°•à°¿à°‚చడానికి à°…à°¨à±à°®à°¤à°¿ లేదà±.',
'upload-source' => 'మూల ఫైలà±',
'sourcefilename' => 'మూలం ఫైలà±à°ªà±‡à°°à±:',
'sourceurl' => 'మూల URL:',
@@ -1527,10 +1555,6 @@ $1",
'upload-options' => 'à°Žà°•à±à°•à°¿à°‚పౠవికలà±à°ªà°¾à°²à±',
'watchthisupload' => 'à°ˆ ఫైలà±à°¨à°¿ గమనించà±',
'filewasdeleted' => 'ఇదే పేరà±à°¤à±‹ ఉనà±à°¨ à°’à°• ఫైలà±à°¨à± గతంలో à°…à°ªà±à°²à±‹à°¡à± చేసారà±, తరà±à°µà°¾à°¤à°¿ కాలంలో దానà±à°¨à°¿ తొలగించారà±. దానà±à°¨à±€ మళà±à°³à±€ à°…à°ªà±à°²à±‹à°¡à± చేసే à°®à±à°‚à°¦à±, మీరౠ$1 నౠచూడాలి',
-'upload-wasdeleted' => "'''హెచà±à°šà°°à°¿à°•: గతంలో తొలగించబడà±à°¡ ఫైలà±à°¨à°¿ మీరౠఎకà±à°•à°¿à°¸à±à°¤à±à°¨à±à°¨à°¾à°°à±.'''
-
-కొనసాగే à°®à±à°‚దౠఈ ఫైలà±à°¨à°¿ à°Žà°•à±à°•à°¿à°‚à°šà°¡à°‚ సరియో కాదో చూసà±à°•à±‹à°‚à°¡à°¿.
-సౌలభà±à°¯à°‚కోసం à°ˆ ఫైలౠయొకà±à°• తొలగింపౠచిటà±à°Ÿà°¾à°¨à°¿ ఇకà±à°•à°¡ ఇసà±à°¤à±à°¨à±à°¨à°¾à°‚:",
'filename-bad-prefix' => "మీరౠఅపà±à°²à±‹à°¡à± చేసà±à°¤à±à°¨à±à°¨ ఫైలౠపేరౠ'''\"\$1\"''' తో మొదలవà±à°¤à±à°‚ది. ఇది డిజిటలౠకెమెరాలౠఆటోమాటిగà±à°—à°¾ ఇచà±à°šà±‡ పేరà±. మరింత వివరంగా ఉండే పేరà±à°¨à± à°Žà°‚à°šà±à°•à±‹à°‚à°¡à°¿.",
'upload-success-subj' => 'à°…à°ªà±â€Œà°²à±‹à°¡à± జయపà±à°°à°¦à°‚',
'upload-success-msg' => '[$2] à°¨à±à°‚à°¡à°¿ మీ à°Žà°•à±à°•à°¿à°‚పౠసఫలమైంది. అది ఇకà±à°•à°¡ à°…à°‚à°¦à±à°¬à°¾à°Ÿà±à°²à±‹ ఉంది: [[:{{ns:file}}:$1]]',
@@ -1551,6 +1575,20 @@ $1',
'upload-unknown-size' => 'సైజౠతెలియదà±',
'upload-http-error' => 'ఒక HTTP పొరపాటౠజరిగింది: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'à°ˆ ఫైలà±à°¨à± ZIP పరీకà±à°· కోసం తెరవబోతే, à°à°¦à±‹ తెలియని లోపం à°Žà°¦à±à°°à±ˆà°‚ది.',
+'zip-wrong-format' => 'ఇచà±à°šà°¿à°¨à°¦à°¿ ZIP ఫైలౠకాదà±.',
+'zip-bad' => 'ఫైలౠచెడిపోయిన, లేదా చదవడానికి వీలà±à°²à±‡à°¨à°¿ ZIP ఫైలౠఅయà±à°¯à±à°‚డాలి.
+దానిపై à°­à°¦à±à°°à°¤à°¾ పరమైన పరీకà±à°· చెయà±à°¯à°²à±‡à°‚.',
+'zip-unsupported' => 'ఇది MediaWiki à°•à°¿ పటà±à°Ÿà±à°²à±‡à°¨à°¿ ZIP అంశాలౠకలిగిన ZIP ఫైలà±.
+దీనిపై సరైన à°­à°¦à±à°°à°¤à°¾ పరీకà±à°·à°²à± చెయà±à°¯à°²à±‡à°‚.',
+
+# Special:UploadStash
+'uploadstash-summary' => 'à°Žà°•à±à°•à°¿à°‚చినపà±à°ªà°Ÿà°¿à°•à±€ వికీలో à°ªà±à°°à°šà±à°°à°¿à°¤à°‚ కాని (లేదా à°Žà°•à±à°•à°¿à°‚పౠజరà±à°—à±à°¤à±à°¨à±à°¨) ఫైళà±à°³à± à°ˆ పేజీలో కనిపిసà±à°¤à°¾à°¯à°¿. à°ˆ ఫైళà±à°³à± à°Žà°•à±à°•à°¿à°‚à°šà°¿à°¨ వాడà±à°•à°°à°¿à°•à°¿ తపà±à°ª మరొకరికి కనబడవà±.',
+'uploadstash-badtoken' => 'à°† à°šà°°à±à°¯ విఫలమైంది. బహà±à°¶à°¾ మీ à°Žà°¡à°¿à°Ÿà°¿à°‚à°—à± à°…à°¨à±à°®à°¤à±à°²à°•à± కాలం చెలà±à°²à°¿à°‚దేమో. మళà±à°³à±€ à°ªà±à°°à°¯à°¤à±à°¨à°¿à°‚à°šà°‚à°¡à°¿.',
+'uploadstash-errclear' => 'ఫైళà±à°³ తీసివేత విఫలమైంది.',
+'uploadstash-refresh' => 'దసà±à°¤à±à°°à°¾à°² జాబిజానౠతాజాకరించà±',
+
# img_auth script messages
'img-auth-accessdenied' => 'à°…à°¨à±à°®à°¤à°¿à°¨à°¿ నిరాకరించారà±',
'img-auth-nopathinfo' => 'PATH_INFO లేదà±.
@@ -1632,7 +1670,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
[[Special:WhatLinksHere/$2|పూరà±à°¤à°¿ జాబితా]] కూడా ఉంది.',
'nolinkstoimage' => 'à°ˆ ఫైలà±à°•à± లింకà±à°¨à±à°¨ పేజీలౠలేవà±.',
'morelinkstoimage' => 'à°ˆ ఫైలà±à°•à± ఇంకా [[Special:WhatLinksHere/$1| లింకà±à°²à°¨à±]] చూడà±',
-'redirectstofile' => 'à°•à±à°°à°¿à°‚à°¦ పేరà±à°•à±Šà°¨à±à°¨ {{PLURAL:$1|ఫైలౠఈ ఫైలà±à°•à°¿ దారిమారà±à°ªà± చెందà±à°¤à±à°‚ది|$1 ఫైళà±à°³à± à°ˆ ఫైలà±à°•à°¿ దారిమారà±à°ªà± చెందà±à°¤à°¾à°¯à°¿}}:',
+'linkstoimage-redirect' => '$1 (దసà±à°¤à±à°°à°ªà± దారిమారà±à°ªà±) $2',
'duplicatesoffile' => 'à°•à±à°°à°¿à°‚à°¦ పేరà±à°•à±Šà°¨à±à°¨ {{PLURAL:$1|ఫైలౠఈ ఫైలà±à°•à°¿ నకలà±|$1 ఫైళà±à°³à± à°ˆ ఫైలà±à°•à°¿ నకళà±à°³à±}} ([[Special:FileDuplicateSearch/$2|మరినà±à°¨à°¿ వివరాలà±]]):',
'sharedupload' => 'à°ˆ ఫైలౠ$1 à°¨à±à°‚à°¡à°¿ మరియౠదీనిని ఇతర à°ªà±à°°à°¾à°œà±†à°•à±à°Ÿà±à°²à°²à±‹ కూడా ఉపయోగిసà±à°¤à±‚à°µà±à°‚డవచà±à°šà±.',
'sharedupload-desc-there' => 'à°ˆ ఫైలౠ$1 à°¨à±à°‚à°¡à°¿ వచà±à°šà°¿à°‚ది అలానే ఇతర à°ªà±à°°à°¾à°œà±†à°•à±à°Ÿà±à°²à°²à±‹ కూడా ఉపయోగిసà±à°¤à±‚ ఉండవచà±à°šà±.
@@ -1722,16 +1760,17 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
'statistics-users-active-desc' => 'à°—à°¤ {{PLURAL:$1|రోజà±|$1 రోజà±à°²}}లో à°’à°•à±à°• à°šà°°à±à°¯à±ˆà°¨à°¾ చేసిన వాడà±à°•à°°à±à°²à±',
'statistics-mostpopular' => 'à°Žà°•à±à°•à±à°µà°—à°¾ చూసిన పేజీలà±',
-'disambiguations' => 'అయోమయ నివృతà±à°¤à°¿ పేజీలà±',
+'disambiguations' => 'అయోమయ నివృతà±à°¤à°¿ à°ªà±à°Ÿà°²à°•à± లింకà±à°¨à±à°¨ à°ªà±à°Ÿà°²à±',
'disambiguationspage' => 'Template:అయోమయ నివృతà±à°¤à°¿',
'disambiguations-text' => "కింది పేజీలౠ'''అయోమయ నివృతà±à°¤à°¿''' పేజీకి లింకవà±à°¤à±à°¨à±à°¨à°¾à°¯à°¿. కానీ అవి సంబంధిత పేజీకి నేరà±à°—à°¾ లింకౠఅవాలి. <br /> [[MediaWiki:Disambiguationspage]] à°¨à±à°‚ది లింకౠఉనà±à°¨ మూసనౠవాడే పేజీని అయోమయ నివృతà±à°¤à°¿ పేజీగా భావిసà±à°¤à°¾à°°à±.",
-'doubleredirects' => 'జంట దారిమారà±à°ªà±à°²à±',
-'doubleredirectstext' => 'ఇతర దారిమారà±à°ªà± à°ªà±à°Ÿà°²à°•à°¿ తీసà±à°•à±†à°³à±à°³à±‡ దారిమారà±à°ªà±à°²à°¨à°¿ à°ˆ à°ªà±à°Ÿ చూపిసà±à°¤à±à°‚ది.
+'doubleredirects' => 'జంట దారిమారà±à°ªà±à°²à±',
+'doubleredirectstext' => 'ఇతర దారిమారà±à°ªà± à°ªà±à°Ÿà°²à°•à°¿ తీసà±à°•à±†à°³à±à°³à±‡ దారిమారà±à°ªà±à°²à°¨à°¿ à°ˆ à°ªà±à°Ÿ చూపిసà±à°¤à±à°‚ది.
à°ªà±à°°à°¤à±€ వరà±à°¸à°²à±‹ మొదటి మరియౠరెండవ దారిమారà±à°ªà±à°²à°•à± లంకెలà±, ఆలానే రెండవ దారిమారà±à°ªà± à°ªà±à°Ÿ యొకà±à°• లకà±à°·à±à°¯à°‚ ఉనà±à°¨à°¾à°¯à°¿. సాధారణంగా à°ˆ రెండవ దారిమారà±à°ªà± యొకà±à°• లకà±à°·à±à°¯à°®à±‡ "అసలైనది", అదే మొదటి దారిమారà±à°ªà± యొకà±à°• లకà±à°·à±à°¯à°‚à°—à°¾ ఉండాలి.
<del>కొటà±à°Ÿà°¿à°µà±‡à°¯à°¬à°¡à°¿à°¨</del> పదà±à°¦à±à°²à± పరిషà±à°•à°°à°¿à°‚చబడà±à°¡à°µà°¿.',
-'double-redirect-fixed-move' => '[[$1]]ని తరలించారà±, అది à°ªà±à°°à°¸à±à°¤à±à°¤à°‚ [[$2]]à°•à°¿ దారిమారà±à°ªà±.',
-'double-redirect-fixer' => 'దారిమారà±à°ªà± సరిదà±à°¦à±à°µà°¾à°°à±',
+'double-redirect-fixed-move' => '[[$1]]ని తరలించారà±, అది à°ªà±à°°à°¸à±à°¤à±à°¤à°‚ [[$2]]à°•à°¿ దారిమారà±à°ªà±.',
+'double-redirect-fixed-maintenance' => '[[$1]] కౠజమిలి దారిమారà±à°ªà±à°¨à± [[$2]] కౠసరిచేసà±à°¤à±à°¨à±à°¨à°¾à°‚.',
+'double-redirect-fixer' => 'దారిమారà±à°ªà± సరిదà±à°¦à±à°µà°¾à°°à±',
'brokenredirects' => 'తెగిపోయిన దారిమారà±à°ªà±à°²à±',
'brokenredirectstext' => 'కింది దారిమారà±à°ªà±à°²à± లేని-పేజీలకౠమళà±à°³à°¿à°‚à°šà±à°¤à±à°¨à±à°¨à°¾à°¯à°¿:',
@@ -1808,6 +1847,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
'pager-newer-n' => '{{PLURAL:$1|1 కొతà±à°¤à°¦à°¿|$1 కొతà±à°¤à°µà°¿}}',
'pager-older-n' => '{{PLURAL:$1|1 పాతది|$1 పాతవి}}',
'suppress' => 'పరాకà±',
+'querypage-disabled' => 'పనితీరౠకారణాల వలన, à°ˆ à°ªà±à°°à°¤à±à°¯à±‡à°•à°ªà±‡à°œà±€à°¨à°¿ అశకà±à°¤à°‚ చేసాం.',
# Book sources
'booksources' => 'à°ªà±à°¸à±à°¤à°• మూలాలà±',
@@ -1858,7 +1898,7 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
'sp-deletedcontributions-contribs' => 'మారà±à°ªà±à°²à± చేరà±à°ªà±à°²à±',
# Special:LinkSearch
-'linksearch' => 'బయటి లింకà±à°²à±',
+'linksearch' => 'బయటి లింకà±à°² à°…à°¨à±à°µà±‡à°·à°£',
'linksearch-pat' => 'వెతకాలà±à°¸à°¿à°¨ నమూనా:',
'linksearch-ns' => 'పేరà±à°¬à°°à°¿:',
'linksearch-ok' => 'వెతà±à°•à±',
@@ -1922,6 +1962,9 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
'noemailtext' => 'à°ˆ వాడà±à°•à°°à°¿ సరైన à°ˆ-మెయిలౠచిరà±à°¨à°¾à°®à°¾à°¨à°¿ ఇవà±à°µà°²à±‡à°¦à±.',
'nowikiemailtitle' => 'à°ˆ-మెయిళà±à°³à°¨à± à°…à°¨à±à°®à°¤à°¿à°‚à°šà°°à±',
'nowikiemailtext' => 'ఇతర వాడà±à°•à°°à±à°² à°¨à±à°‚à°¡à°¿ à°ˆ-మెయిళà±à°³à°¨à± à°…à°‚à°¦à±à°•à±‹à°¡à°¾à°¨à°¿à°•à°¿ à°ˆ వాడà±à°•à°°à°¿ à°¸à±à°®à±à°–à°‚à°—à°¾ లేరà±.',
+'emailtarget' => 'à°…à°‚à°¦à±à°•à±Šà°¨à±‡à°µà°¾à°°à°¿ వాడà±à°•à°°à°¿à°ªà±‡à°°à± ఇవà±à°µà°‚à°¡à°¿',
+'emailusername' => 'వాడà±à°•à°°à°¿à°ªà±‡à°°à±:',
+'emailusernamesubmit' => 'దాఖలà±à°šà±†à°¯à±à°¯à°¿',
'email-legend' => 'మరో {{SITENAME}} వాడà±à°•à°°à°¿à°•à°¿ వేగౠపంపించండి',
'emailfrom' => 'ఎవరà±:',
'emailto' => 'ఎవరికి:',
@@ -1946,10 +1989,10 @@ http://www.mediawiki.org/wiki/Manual:Image_Authorization చూడండి.',
'watchlistanontext' => 'మీ వీకà±à°·à°£ జాబితా లోని అంశాలనౠచూసేందà±à°•à± లేదా మారà±à°šà±‡à°‚à°¦à±à°•à± మీరౠ$1 ఉండాలి.',
'watchnologin' => 'లాగినà±â€Œ అయిలేరà±',
'watchnologintext' => 'మీ వీకà±à°·à°£ జాబితానౠమారà±à°šà°¡à°¾à°¨à°¿à°•à°¿ మీరౠ[[Special:UserLogin|లాగినà±â€Œ]] అయి ఉండాలి.',
-'addedwatch' => 'వీకà±à°·à°£ జాబితాలో చేరింది',
+'addwatch' => 'వీకà±à°·à°£ జాబితాలో చేరà±à°šà±',
'addedwatchtext' => "\"[[:\$1]]\" అనే à°ªà±à°Ÿ మీ [[Special:Watchlist|వీకà±à°·à°£ జాబితా]]లో చేరింది.
భవిషà±à°¯à°¤à±à°¤à±à°²à±‹ à°ˆ à°ªà±à°Ÿà°•à°¿ మరియౠసంబంధిత à°šà°°à±à°šà°¾à°ªà±à°Ÿà°•à°¿ జరిగే మారà±à°ªà±à°²à± à°…à°•à±à°•à°¡ కనిపిసà±à°¤à°¾à°¯à°¿, మరియౠ[[Special:RecentChanges|ఇటీవలి మారà±à°ªà±à°² జాబితా]]లో à°¸à±à°²à°­à°‚à°—à°¾ à°—à±à°°à±à°¤à°¿à°‚చడానికి à°ˆ à°ªà±à°Ÿ '''బొదà±à°¦à±à°—à°¾''' కనిపిసà±à°¤à±à°‚ది.",
-'removedwatch' => 'వీకà±à°·à°£ జాబితా à°¨à±à°‚à°¡à°¿ తొలగించబడినది',
+'removewatch' => 'వీకà±à°·à°£ జాబితా à°¨à±à°‚à°¡à°¿ తొలగించà±',
'removedwatchtext' => '"[[:$1]]" అనే పేజీ [[Special:Watchlist|మీ వీకà±à°·à°£ జాబితా]] à°¨à±à°‚à°¡à°¿ తొలగించబడినది.',
'watch' => 'వీకà±à°·à°¿à°‚à°šà±',
'watchthispage' => 'à°ˆ à°ªà±à°Ÿ మీద à°•à°¨à±à°¨à±‡à°¸à°¿ ఉంచà±',
@@ -2002,13 +2045,13 @@ $NEWPAGE
--
మీ వీకà±à°·à°£à°œà°¾à°¬à°¿à°¤à°¾ అమరికలనౠమారà±à°šà±à°•à±à°¨à±‡à°‚à°¦à±à°•à±,
-{{fullurl:{{#special:Watchlist}}/edit}} ని చూడండి.
+{{canonicalurl:{{#special:EditWatchlist}}}} ని చూడండి.
à°ˆ పేజీని మీ వీకà±à°·à°£à°œà°¾à°¬à°¿à°¤à°¾ à°¨à±à°‚à°¡à°¿ తొలగించà±à°•à±à°¨à±‡à°‚à°¦à±à°•à±,
$UNWATCHURL à°•à°¿ వెళà±à°³à°‚à°¡à°¿.
మీ à°…à°­à°¿à°ªà±à°°à°¾à°¯à°¾à°²à± చెపà±à°ªà±‡à°‚à°¦à±à°•à± మరియౠమరింత సహాయానికై:
-{{fullurl:{{MediaWiki:helppage}}}}',
+{{canonicalurl:{{MediaWiki:helppage}}}}',
# Delete
'deletepage' => 'పేజీని తొలగించà±',
@@ -2023,7 +2066,7 @@ $UNWATCHURL à°•à°¿ వెళà±à°³à°‚à°¡à°¿.
'confirmdeletetext' => 'మీరో పేజీనో, బొమà±à°®à°¨à±‹ దాని à°šà°°à°¿à°¤à±à°°à°¤à±‹à°ªà°¾à°Ÿà±à°—à°¾ శాశà±à°µà°¤à°‚à°—à°¾ డేటాబేసౠనà±à°‚à°¡à°¿ తీసెయà±à°¯à°¬à±‹à°¤à±à°¨à±à°¨à°¾à°°à±. మీరౠచెయà±à°¯à°¦à°²à°šà°¿à°‚ది ఇదేననీ, దీని పరà±à°¯à°µà°¸à°¾à°¨à°¾à°²à± మీకౠతెలà±à°¸à°¨à±€, దీనà±à°¨à°¿ [[{{MediaWiki:Policy-url}}|నిభందనల]] à°ªà±à°°à°•à°¾à°°à°®à±‡ చేసà±à°¤à±à°¨à±à°¨à°¾à°°à°¨à±€ నిరà±à°§à°¾à°°à°¿à°‚à°šà±à°•à±‹à°‚à°¡à°¿.',
'actioncomplete' => 'పని పూరà±à°¤à°¯à°¿à°‚ది',
'actionfailed' => 'à°šà°°à±à°¯ విఫలమైంది',
-'deletedtext' => '"<nowiki>$1</nowiki>" à°¤à±à°¡à°¿à°šà°¿à°µà±‡à°¯à°¬à°¡à°¿à°‚ది. ఇటీవలి à°¤à±à°¡à°¿à°šà°¿à°µà±‡à°¤à°²à°•à± సంబంధించిన నివేదిక కొరకౠ$2 చూడండి.',
+'deletedtext' => '"$1" à°¤à±à°¡à°¿à°šà°¿à°µà±‡à°¯à°¬à°¡à°¿à°‚ది. ఇటీవలి à°¤à±à°¡à°¿à°šà°¿à°µà±‡à°¤à°²à°•à± సంబంధించిన నివేదిక కొరకౠ$2 చూడండి.',
'deletedarticle' => '"[[$1]]"ని తొలగించారà±',
'suppressedarticle' => '"[[$1]]" నౠఅణచి ఉంచాం',
'dellogpage' => 'తొలగింపà±à°² à°šà°¿à°Ÿà±à°Ÿà°¾',
@@ -2078,7 +2121,7 @@ $UNWATCHURL à°•à°¿ వెళà±à°³à°‚à°¡à°¿.
'protect_expiry_invalid' => 'à°—à°¡à±à°µà± సమయానà±à°¨à°¿ సరిగà±à°—à°¾ ఇవà±à°µà°²à±‡à°¦à±.',
'protect_expiry_old' => 'మీరిచà±à°šà°¿à°¨ à°—à°¡à±à°µà± à°ªà±à°°à°¸à±à°¤à±à°¤ సమయం కంటే à°®à±à°‚దౠఉంది.',
'protect-unchain-permissions' => 'మరినà±à°¨à°¿ సంరకà±à°·à°£ వికలà±à°ªà°¾à°²à°¨à± తెరà±à°µà±',
-'protect-text' => "à°ˆ పెజీ '''<nowiki>$1</nowiki>''' à°Žà°‚à°¤ సంరకà±à°·à°£à°²à±Š à°µà±à°‚దో మీరౠఇకà±à°•à°¡ చూడవచà±à°šà±, మారà±à°šà°µà°šà±à°šà±.",
+'protect-text' => "à°ˆ పెజీ '''$1''' à°Žà°‚à°¤ సంరకà±à°·à°£à°²à±Š à°µà±à°‚దో మీరౠఇకà±à°•à°¡ చూడవచà±à°šà±, మారà±à°šà°µà°šà±à°šà±.",
'protect-locked-blocked' => "నిరోధించబడి ఉండగా మీరౠసంరకà±à°·à°£ à°¸à±à°¥à°¾à°¯à°¿à°¨à°¿ మారà±à°šà°²à±‡à°°à±. à°ªà±à°°à°¸à±à°¤à±à°¤à°‚ '''$1''' పేజీకి ఉనà±à°¨ సెటà±à°Ÿà°¿à°‚à°—à±à°²à°¿à°µà°¿:",
'protect-locked-dblock' => "à°ªà±à°°à°¸à±à°¤à±à°¤à°‚ అమలà±à°²à±‹ ఉనà±à°¨ డేటాబేసౠలాకౠకారణంగా సంరకà±à°·à°£ à°¸à±à°¥à°¾à°¯à°¿à°¨à°¿ సెటౠచెయà±à°¯à°¡à°‚ à°•à±à°¦à°°à°¦à±. à°ªà±à°°à°¸à±à°¤à±à°¤à°‚ '''$1''' పేజీకి ఉనà±à°¨ సెటà±à°Ÿà°¿à°‚à°—à±à°²à°¿à°µà°¿:",
'protect-locked-access' => "మీ ఖాతకౠపేజీ à°°à°•à±à°·à°¨ à°¸à±à°¥à°¾à°¯à°¿à°¨à°¿ మారà±à°šà±‡ హకà±à°•à±à°²à± లేవà±.
@@ -2170,9 +2213,10 @@ $UNWATCHURL à°•à°¿ వెళà±à°³à°‚à°¡à°¿.
'undelete-show-file-submit' => 'à°…à°µà±à°¨à±',
# Namespace form on various pages
-'namespace' => 'పేరà±à°¬à°°à°¿:',
-'invert' => 'ఎంపికనౠతిరగవెయà±à°¯à°¿',
-'blanknamespace' => '(మొదటి)',
+'namespace' => 'పేరà±à°¬à°°à°¿:',
+'invert' => 'ఎంపికనౠతిరగవెయà±à°¯à°¿',
+'namespace_association' => 'సంబంధిత పేరà±à°¬à°°à°¿ (నేమౠసà±à°ªà±‡à°¸à±)',
+'blanknamespace' => '(మొదటి)',
# Contributions
'contributions' => 'వాడà±à°•à°°à°¿ రచనలà±',
@@ -2222,13 +2266,14 @@ $UNWATCHURL à°•à°¿ వెళà±à°³à°‚à°¡à°¿.
'whatlinkshere-filters' => 'వడపోతలà±',
# Block/unblock
+'block' => 'వాడà±à°•à°°à°¿ నిరోధం',
+'unblock' => 'వాడà±à°•à°°à°¿à°ªà±ˆ నిరోధానà±à°¨à°¿ తీసెయà±à°¯à°‚à°¡à°¿',
'blockip' => 'వాడà±à°•à°°à°¿ నిరోధం',
'blockip-title' => 'వాడà±à°•à°°à°¿à°¨à°¿ నిరోధించà±',
'blockip-legend' => 'వాడà±à°•à°°à°¿ నిరోధం',
'blockiptext' => 'à°à°¦à±ˆà°¨à°¾ à°ªà±à°°à°¤à±à°¯à±‡à°• à°à°ªà±€ à°šà°¿à°°à±à°¨à°¾à°®à°¾à°¨à±‹ లేదా వాడà±à°•à°°à°¿à°ªà±‡à°°à±à°¨à±‹ రచనలౠచెయà±à°¯à°•à±à°‚à°¡à°¾ నిరోధించాలంటే కింది ఫారానà±à°¨à°¿ వాడండి.
కేవలం à°¦à±à°¶à±à°šà°°à±à°¯à°² నివారణ కోసం మాతà±à°°à°®à±‡ దీనà±à°¨à°¿ వాడాలి, అదికూడా [[{{MediaWiki:Policy-url}}|విధానానà±à°¨à°¿]] à°…à°¨à±à°¸à°°à°¿à°‚à°šà°¿ మాతà±à°°à°®à±‡.
à°¸à±à°ªà°·à±à°Ÿà°®à±ˆà°¨ కారణానà±à°¨à°¿ à°•à°¿à°‚à°¦ రాయండి (ఉదాహరణకà±, à°¦à±à°¶à±à°šà°°à±à°¯à°²à°•à± పాలà±à°ªà°¡à°¿à°¨ పేజీలనౠఉదహరించండి).',
-'ipaddress' => 'à°à°ªà±€ à°šà°¿à°°à±à°¨à°¾à°®à°¾:',
'ipadressorusername' => 'à°à°ªà±€ à°šà°¿à°°à±à°¨à°¾à°®à°¾ లేదా వాడà±à°•à°°à°¿à°ªà±‡à°°à±:',
'ipbexpiry' => 'అంతమయà±à°¯à±‡ à°—à°¡à±à°µà±',
'ipbreason' => 'కారణం:',
@@ -2242,7 +2287,7 @@ $UNWATCHURL à°•à°¿ వెళà±à°³à°‚à°¡à°¿.
** బెదిరింపౠపà±à°°à°µà°°à±à°¤à°¨/వేధింపà±
** అనేక ఖాతాలనౠసృషà±à°Ÿà°¿à°‚à°šà°¿ à°¦à±à°¶à±à°šà°°à±à°¯à°•à± పాలà±à°ªà°¡à°¡à°‚
** à°…à°¨à±à°šà°¿à°¤à°®à±ˆà°¨ వాడà±à°•à°°à°¿à°ªà±‡à°°à±',
-'ipbanononly' => 'à°…à°œà±à°žà°¾à°¤ వాడà±à°•à°°à±à°²à°¨à± మాతà±à°°à°®à±‡ నిరోధించà±',
+'ipb-hardblock' => 'లాగినై ఉనà±à°¨ వాడà±à°•à°°à±à°²à± à°ˆ à°à°ªà±€ à°…à°¡à±à°°à°¸à± à°¨à±à°‚à°šà°¿ మారà±à°ªà±à°šà±‡à°°à±à°ªà±à°²à± చెయà±à°¯à°•à±à°‚à°¡à°¾ నిరోధించండి',
'ipbcreateaccount' => 'ఖాతా సృషà±à°Ÿà°¿à°‚à°ªà±à°¨à°¿ నివారించà±',
'ipbemailban' => 'వాడà±à°•à°°à°¿à°¨à°¿ à°ˆ-మెయిలౠచెయà±à°¯à°•à±à°‚à°¡à°¾ నివారించà±',
'ipbenableautoblock' => 'à°ˆ వాడà±à°•à°°à°¿ వాడిన చివరి à°à°ªà±€ à°…à°¡à±à°°à°¸à±à°¨à±, అలాగే à°† తరà±à°µà°¾à°¤ వాడే à°…à°¡à±à°°à°¸à±à°²à°¨à± కూడా ఆటోమాటిగà±à°—à°¾ నిరోధించà±',
@@ -2253,12 +2298,14 @@ $UNWATCHURL à°•à°¿ వెళà±à°³à°‚à°¡à°¿.
'ipbotherreason' => 'ఇతర/అదనపౠకారణం',
'ipbhidename' => 'మారà±à°ªà±à°²à± మరియౠజాబితాల à°¨à±à°‚à°¡à°¿ à°ˆ వాడà±à°•à°°à°¿à°ªà±‡à°°à±à°¨à°¿ దాచà±',
'ipbwatchuser' => 'à°ˆ సభà±à°¯à±à°¨à°¿ సభà±à°¯à±à°¨à°¿ పేజీ, à°šà°°à±à°šà°¾à°ªà±‡à°œà±€à°²à°¨à± వీకà±à°·à°£à°²à±‹ ఉంచà±',
-'ipballowusertalk' => 'నిరోధంలో ఉనà±à°¨à°ªà±à°ªà±à°¡à± à°ˆ వాడà±à°•à°°à°¿à°¨à°¿ తమ à°šà°°à±à°šà°¾ పేజీలో మారà±à°ªà±à°²à± చేసà±à°•à±‹à°¨à°¿à°µà±à°µà°‚à°¡à°¿',
+'ipb-disableusertalk' => 'నిరోధంలో ఉండగా à°ˆ వాడà±à°•à°°à°¿ తన à°¸à±à°µà°‚à°¤ à°šà°°à±à°š పేజీలో మారà±à°ªà±à°šà±‡à°°à±à°ªà±à°²à± చెయà±à°¯à°•à±à°‚à°¡à°¾ నిరోధించà±',
'ipb-change-block' => 'à°ˆ అమరికలతో వాడà±à°•à°°à°¿à°¨à°¿ à°ªà±à°¨à°°à±à°¨à°¿à°°à±‹à°§à°¿à°‚à°šà±',
+'ipb-confirm' => 'నిరోధానà±à°¨à°¿ ధృవపరచండి',
'badipaddress' => 'సరైన à°.పి. à°…à°¡à±à°°à°¸à± కాదà±',
'blockipsuccesssub' => 'నిరోధం విజయవంతం అయింది',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] నిరోధించబడింది.
<br />నిరోధాల సమీకà±à°· కొరకౠ[[Special:IPBlockList|à°.పి. నిరొధాల జాబితా]] చూడండి.',
+'ipb-blockingself' => 'మిమà±à°®à°²à±à°¨à°¿ మీరే నిరోధించà±à°•à±‹à°¬à±‹à°¤à±à°¨à±à°¨à°¾à°°à±! అదే మీ నిశà±à°šà°¯à°®à°¾?',
'ipb-edit-dropdown' => 'నిరోధపౠకారణాలనౠమారà±à°šà°‚à°¡à°¿',
'ipb-unblock-addr' => '$1 పై ఉనà±à°¨ నిరోధానà±à°¨à°¿ తొలగించండి',
'ipb-unblock' => 'వాడà±à°•à°°à°¿à°ªà±‡à°°à± లేక à°à°ªà±€ à°…à°¡à±à°°à°¸à±à°ªà±ˆ ఉనà±à°¨ నిరోధానà±à°¨à°¿ తొలగించండి',
@@ -2268,17 +2315,23 @@ $UNWATCHURL à°•à°¿ వెళà±à°³à°‚à°¡à°¿.
'unblockiptext' => 'కింది ఫారం ఉపయోగించి, నిరోధించబడిన à°.పీ. à°šà°¿à°°à±à°¨à°¾à°®à°¾ లేదా సభà±à°¯à±à°¨à°¿à°•à°¿ తిరిగి రచనలౠచేసే అధికారం ఇవà±à°µà°µà°šà±à°šà±.',
'ipusubmit' => 'à°ˆ నిరోధానà±à°¨à°¿ తొలగించà±',
'unblocked' => '[[User:$1|$1]]పై నిరోధం తొలగించబడింది',
+'unblocked-range' => '$1 పై నిరోధానà±à°¨à°¿ తీసేసాం',
'unblocked-id' => '$1 అనే నిరోధానà±à°¨à°¿ తొలగించాం',
+'blocklist' => 'నిరోధిత వాడà±à°•à°°à±à°²à±',
'ipblocklist' => 'నిరోధించబడిన వాడà±à°•à°°à±à°²à±',
'ipblocklist-legend' => 'నిరోధించబడిన సభà±à°¯à±à°¨à°¿ వెతకండి',
-'ipblocklist-username' => 'వాడà±à°•à°°à°¿à°ªà±‡à°°à± లేదా IP à°…à°¡à±à°°à°¸à±:',
-'ipblocklist-sh-userblocks' => '$1 ఖాతా నిరోధాలà±',
-'ipblocklist-sh-tempblocks' => '$1 తాతà±à°•à°¾à°²à°¿à°• నిరోధాలà±',
-'ipblocklist-sh-addressblocks' => 'à°à°• à°à°ªà±€ నిరోధాలనౠ$1',
+'blocklist-userblocks' => 'ఖాతా నిరోధాలనౠదాచà±',
+'blocklist-tempblocks' => 'తాతà±à°•à°¾à°²à°¿à°• నిరోధాలనౠదాచà±',
+'blocklist-addressblocks' => 'à°à°•à±ˆà°• à°à°ªà±€ నిరోధాలనౠదాచà±',
+'blocklist-timestamp' => 'కాలమà±à°¦à±à°°',
+'blocklist-target' => 'à°—à°®à±à°¯à°‚',
+'blocklist-expiry' => 'కాలం చేలà±à°²à±‡à°¦à°¿',
+'blocklist-by' => 'నిరà±à°µà°¾à°¹à°•à±à°¨à°¿ నిరోధం',
+'blocklist-params' => 'నిరోధపౠపరామితà±à°²à±',
+'blocklist-reason' => 'కారణం',
'ipblocklist-submit' => 'వెతà±à°•à±',
'ipblocklist-localblock' => 'à°¸à±à°¥à°¾à°¨à°¿à°• నిరోధం',
'ipblocklist-otherblocks' => 'ఇతర {{PLURAL:$1|నిరోధం|నిరోధాలà±}}',
-'blocklistline' => '$1, $2లౠ$3 ($4)నౠనిరోధించారà±.',
'infiniteblock' => 'అనంతం',
'expiringblock' => '$1 నాడౠ$2à°•à°¿ కాలం చెలà±à°²à±à°¤à±à°‚ది',
'anononlyblock' => 'à°…à°œà±à°žà°¾à°¤à°µà±à°¯à°•à±à°¤à±à°²à± మాతà±à°°à°®à±‡',
@@ -2300,7 +2353,7 @@ $UNWATCHURL à°•à°¿ వెళà±à°³à°‚à°¡à°¿.
వివరాల కోసం అణచివేత à°šà°¿à°Ÿà±à°Ÿà°¾ à°•à°¿à°‚à°¦ చూపబడింది:',
'blocklogentry' => '"[[$1]]" పై నిరోధం అమలయింది. నిరోధ కాలం $2 $3',
'reblock-logentry' => '[[$1]] కై నిరోధపౠఅమరికలనౠ$2 $3 à°—à°¡à±à°µà±à°¤à±‹ మారà±à°šà°¾à°°à±',
-'blocklogtext' => 'వాడà±à°•à°°à±à°² నిరోధాలà±, à°ªà±à°¨à°¸à±à°¥à°¾à°ªà°¨à°² à°šà°¿à°Ÿà±à°Ÿà°¾ ఇది. ఆటోమాటికà±â€Œà°—à°¾ నిరోధానికి à°—à±à°°à±ˆà°¨ à°.పి. à°šà°¿à°°à±à°¨à°¾à°®à°¾à°²à± à°ˆ జాబితాలో ఉండవà±. à°ªà±à°°à°¸à±à°¤à±à°¤à°‚ అమలà±à°²à±‹ ఉనà±à°¨ నిరోధాలà±, నిషేధాల కొరకౠ[[Special:IPBlockList|à°.పి. నిరోధాల జాబితా]]నౠచూడండి.',
+'blocklogtext' => 'వాడà±à°•à°°à±à°² నిరోధాలà±, à°ªà±à°¨à°¸à±à°¥à°¾à°ªà°¨à°² à°šà°¿à°Ÿà±à°Ÿà°¾ ఇది. ఆటోమాటికà±â€Œà°—à°¾ నిరోధానికి à°—à±à°°à±ˆà°¨ à°.పి. à°šà°¿à°°à±à°¨à°¾à°®à°¾à°²à± à°ˆ జాబితాలో ఉండవà±. à°ªà±à°°à°¸à±à°¤à±à°¤à°‚ అమలà±à°²à±‹ ఉనà±à°¨ నిరోధాలà±, నిషేధాల కొరకౠ[[Special:BlockList|à°.పి. నిరోధాల జాబితా]]నౠచూడండి.',
'unblocklogentry' => '$1పై నిరోధం తొలగించబడింది',
'block-log-flags-anononly' => 'à°…à°œà±à°žà°¾à°¤ వాడà±à°•à°°à±à°²à± మాతà±à°°à°®à±‡',
'block-log-flags-nocreate' => 'ఖాతా సృషà±à°Ÿà°¿à°‚చడానà±à°¨à°¿ అశకà±à°¤à°‚ చేసాం',
@@ -2314,9 +2367,9 @@ $UNWATCHURL à°•à°¿ వెళà±à°³à°‚à°¡à°¿.
'ipb_expiry_temp' => 'దాచిన వాడà±à°•à°°à°¿à°ªà±‡à°°à± నిరోధాలౠశాశà±à°µà°¤à°‚à°—à°¾ ఉండాలి.',
'ipb_hide_invalid' => 'à°ˆ ఖాతానౠఅణచలేకపోతà±à°¨à±à°¨à°¾à°‚. దాని à°•à°¿à°‚à°¦ చాలా దిదà±à°¦à±à°¬à°¾à°Ÿà±à°²à± ఉండి ఉంటాయి.',
'ipb_already_blocked' => '"$1" నౠఇపà±à°ªà°Ÿà°¿à°•à±‡ నిరోధించాం',
-'ipb-needreblock' => '== ఇపà±à°ªà°Ÿà°¿à°•à±‡ నిరోధించారౠ==
-$1ని ఇపà±à°ªà°Ÿà°¿à°•à±‡ నిరోధించారà±. à°† అమరికలని మీరౠమారà±à°šà°¾à°²à°¨à±à°•à±à°‚à°Ÿà±à°¨à±à°¨à°¾à°°à°¾?',
+'ipb-needreblock' => '$1ని ఇపà±à°ªà°Ÿà°¿à°•à±‡ నిరోధించారà±. à°† అమరికలని మీరౠమారà±à°šà°¾à°²à°¨à±à°•à±à°‚à°Ÿà±à°¨à±à°¨à°¾à°°à°¾?',
'ipb-otherblocks-header' => 'ఇతర {{PLURAL:$1|నిరోధం|నిరోధాలà±}}',
+'unblock-hideuser' => 'à°ˆ వాడà±à°•à°°à°¿ యొకà±à°• వాడà±à°•à°°à°¿à°ªà±‡à°°à± దాచబడి ఉంది కాబటà±à°Ÿà°¿, వారిపై నిరోధానà±à°¨à°¿ తీసెయà±à°¯à°²à±‡à°°à±.',
'ipb_cant_unblock' => 'లోపం: నిరోధించిన à°à°¡à±€ $1 దొరకలేదà±. దానిపై ఉనà±à°¨ నిరోధానà±à°¨à°¿ ఈసరికే తొలగించి ఉండవచà±à°šà±.',
'ipb_blocked_as_range' => 'లోపం: à°à°ªà±€ $1 నౠనేరà±à°—à°¾ నిరోధించలేదà±, అంచేత నిరోధానà±à°¨à°¿ à°°à°¦à±à°¦à±à°ªà°°à°šà°²à±‡à°®à±. అయితే, అది $2 à°¶à±à°°à±‡à°£à°¿à°²à±‹ భాగంగా నిరోధానికి à°—à±à°°à±ˆà°‚ది, à°ˆ à°¶à±à°°à±‡à°£à°¿à°ªà±ˆ ఉనà±à°¨ నిరోధానà±à°¨à°¿ à°°à°¦à±à°¦à±à°ªà°°à°šà°µà°šà±à°šà±.',
'ip_range_invalid' => 'సరైన à°à°ªà±€ à°¶à±à°°à±‡à°£à°¿ కాదà±.',
@@ -2473,7 +2526,7 @@ $1ని ఇపà±à°ªà°Ÿà°¿à°•à±‡ నిరోధించారà±. à°† à°…à°®à
'allmessagesdefault' => 'డీఫాలà±à°Ÿà± పాఠà±à°¯à°‚',
'allmessagescurrent' => 'à°ªà±à°°à°¸à±à°¤à±à°¤ పాఠà±à°¯à°‚',
'allmessagestext' => 'మీడియావికీ పేరà±à°¬à°°à°¿à°²à±‹ ఉనà±à°¨ అంతరవరà±à°¤à°¿ సందేశాల జాబితా ఇది.
-సాధారణ మీడియావికీ à°¸à±à°¥à°¾à°¨à°¿à°•à±€à°•à°°à°£à°•à°¿ మీరౠతోడà±à°ªà°¡à°¾à°²à°¨à±à°•à±à°‚టే, దయచేసి [http://www.mediawiki.org/wiki/Localisation మీడియావికీ à°¸à±à°¥à°¾à°¨à°¿à°•à±€à°•à°°à°£] మరియౠ[http://translatewiki.net à°Ÿà±à°°à°¾à°¨à±à°¸à±&zwnj;లేటà±&zwnj;వికీ.నెటà±] సైటà±à°²à°¨à± చూడండి.',
+సాధారణ మీడియావికీ à°¸à±à°¥à°¾à°¨à°¿à°•à±€à°•à°°à°£à°•à°¿ మీరౠతోడà±à°ªà°¡à°¾à°²à°¨à±à°•à±à°‚టే, దయచేసి [//www.mediawiki.org/wiki/Localisation మీడియావికీ à°¸à±à°¥à°¾à°¨à°¿à°•à±€à°•à°°à°£] మరియౠ[//translatewiki.net à°Ÿà±à°°à°¾à°¨à±à°¸à±&zwnj;లేటà±&zwnj;వికీ.నెటà±] సైటà±à°²à°¨à± చూడండి.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' à°…à°¨à±à°¨à°¦à°¿ అచేతనం చేసి ఉనà±à°¨à°‚à°¦à±à°µà°²à±à°² à°ˆ పేజీని వాడలేరà±.",
'allmessages-filter-legend' => 'వడపోత',
'allmessages-filter' => 'à°•à°¸à±à°Ÿà°®à±ˆà°œà±‡à°·à°¨à± à°¸à±à°¥à°¿à°¤à°¿à°¨à°¿ బటà±à°Ÿà°¿ వడకటà±à°Ÿà±:',
@@ -2613,9 +2666,7 @@ $1ని ఇపà±à°ªà°Ÿà°¿à°•à±‡ నిరోధించారà±. à°† à°…à°®à
'tooltip-summary' => 'à°šà°¿à°¨à±à°¨ సారాంశానà±à°¨à°¿ ఇవà±à°µà°‚à°¡à°¿',
# Metadata
-'nodublincore' => 'à°¡à°¬à±à°²à°¿à°¨à± కోరౠRDF మెటాడేటానౠఈ సరà±à°µà°°à±à°•à± అశకà±à°¤à°‚ చేసాం.',
-'nocreativecommons' => 'à°•à±à°°à°¿à°¯à±‡à°Ÿà°¿à°µà± కామనà±à°¸à± RDF మెటాడేటానౠఈ సరà±à°µà°°à±à°•à± అశకà±à°¤à°‚ చేసాం.',
-'notacceptable' => 'à°ˆ వికీ సరà±à°µà°°à± మీ à°•à±à°²à°¯à°‚టౠచదవగలిగే రీతిలో డేటానౠఇవà±à°µà°²à±‡à°¦à±.',
+'notacceptable' => 'à°ˆ వికీ సరà±à°µà°°à± మీ à°•à±à°²à°¯à°‚టౠచదవగలిగే రీతిలో డేటానౠఇవà±à°µà°²à±‡à°¦à±.',
# Attribution
'anonymous' => '{{SITENAME}} యొకà±à°• à°…à°œà±à°žà°¾à°¤ {{PLURAL:$1|వాడà±à°•à°°à°¿|వాడà±à°•à°°à±à°²à±}}',
@@ -2639,12 +2690,15 @@ $1ని ఇపà±à°ªà°Ÿà°¿à°•à±‡ నిరోధించారà±. à°† à°…à°®à
'spam_blanking' => '$1 కౠలింకà±à°²à± ఉనà±à°¨ కూరà±à°ªà±à°²à°¨à±à°¨à°¿à°Ÿà°¿à°¨à±€ ఖాళీ చేసà±à°¤à±à°¨à±à°¨à°¾à°‚',
# Info page
-'infosubtitle' => 'పేజీ à°—à±à°°à°¿à°‚à°šà°¿ సమాచారం',
-'numedits' => 'మారà±à°ªà±à°² సంఖà±à°¯ (à°µà±à°¯à°¾à°¸à°‚): $1',
-'numtalkedits' => 'మారà±à°ªà±à°² సంఖà±à°¯ (à°šà°°à±à°šà°¾ పేజీ): $1',
-'numwatchers' => 'వీకà±à°·à°•à±à°² సంఖà±à°¯: $1',
-'numauthors' => 'à°­à°¿à°¨à±à°¨à°®à±ˆà°¨ రచయితల సంఖà±à°¯ (à°µà±à°¯à°¾à°¸à°‚): $1',
-'numtalkauthors' => 'à°­à°¿à°¨à±à°¨à°®à±ˆà°¨ రచయితల సంఖà±à°¯ (à°šà°°à±à°šà°¾ పేజీ): $1',
+'pageinfo-title' => '"$1" à°—à±à°°à°¿à°‚à°šà°¿ సమాచారం',
+'pageinfo-header-edits' => 'మారà±à°ªà±à°²à±',
+'pageinfo-header-watchlist' => 'వీకà±à°·à°£ జాబితా',
+'pageinfo-header-views' => 'వీకà±à°·à°£à°²à±',
+'pageinfo-subjectpage' => 'à°ªà±à°Ÿ',
+'pageinfo-talkpage' => 'à°šà°°à±à°šà°¾ పేజీ',
+'pageinfo-watchers' => 'వీకà±à°·à°•à±à°² సంఖà±à°¯',
+'pageinfo-edits' => 'మారà±à°ªà±à°² సంఖà±à°¯',
+'pageinfo-views' => 'వీకà±à°·à°£à°² సంఖà±à°¯',
# Skin names
'skinname-standard' => 'సంపà±à°°à°¦à°¾à°¯',
@@ -2657,25 +2711,6 @@ $1ని ఇపà±à°ªà°Ÿà°¿à°•à±‡ నిరోధించారà±. à°† à°…à°®à
'skinname-modern' => 'ఆధà±à°¨à°¿à°•',
'skinname-vector' => 'వెకà±à°Ÿà°°à±',
-# Math options
-'mw_math_png' => 'à°Žà°²à±à°²à°ªà±à°ªà±à°¡à±‚ PNGà°—à°¾ చూపించà±',
-'mw_math_simple' => 'తేలికగా ఉంటే HTML లేకపోతే PNG',
-'mw_math_html' => 'వీలైతే à°Žà°šà±â€Œà°Ÿà±€à°Žà°‚ఎలౠలేకపోతే పింగà±',
-'mw_math_source' => 'టెకౠగానే ఉండనివà±à°µà± (టెకà±à°¸à±à°Ÿà±â€Œ à°¬à±à°°à±Œà°œà°°à±à°² కొరకà±)',
-'mw_math_modern' => 'ఆధà±à°¨à°¿à°• విహారిణà±à°²à°•à± ఉదà±à°¦à±‡à°¶à°¿à°‚చినది',
-'mw_math_mathml' => 'వీలయితే MathML (à°ªà±à°°à°¯à±‹à°—ాతà±à°®à°•à°‚)',
-
-# Math errors
-'math_failure' => 'పారà±à°¸à± చెయà±à°¯à°²à±‡à°•à°ªà±‹à°¯à°¾à°‚',
-'math_unknown_error' => 'à°—à±à°°à±à°¤à±à°¤à±†à°²à°¿à°¯à°¨à°¿ పొరపాటà±',
-'math_unknown_function' => 'తెలియని à°«à°‚à°•à±à°·à°¨à±',
-'math_lexing_error' => 'లెకà±à°¸à°¿à°‚గౠలోపం',
-'math_syntax_error' => 'సింటాకà±à°¸à± లోపం',
-'math_image_error' => 'PNG మారà±à°ªà°¿à°¡à°¿ విఫలమైంది; latex మరియౠdivpng (లేదా dvips + gs + convert) లౠసà±à°¥à°¾à°ªà°¿à°¤à°®à°¯à±à°¯à°¾à°¯à°¨à°¿ సరిచూసà±à°•à±‹à°‚à°¡à°¿',
-'math_bad_tmpdir' => 'math తాతà±à°•à°¾à°²à°¿à°• డైరెకà±à°Ÿà°°à±€à°¨à°¿ సృషà±à°Ÿà°¿à°‚చలేకపోడం కానీ, à°…à°‚à°¦à±à°²à±‹ రాయలేకపోవడంగానీ జరిగింది',
-'math_bad_output' => 'math ఔటà±â€Œà°ªà±à°Ÿà± డైరెకà±à°Ÿà°°à±€à°¨à°¿ సృషà±à°Ÿà°¿à°‚చలేకపోడం కానీ, à°…à°‚à°¦à±à°²à±‹ రాయలేకపోవడంగానీ జరిగింది',
-'math_notexvc' => 'texvc à°Žà°•à±à°œà°¿à°•à±à°¯à±‚à°Ÿà°¬à±à°²à± కనబడడం లేదà±; కానà±à°«à°¿à°—రౠచెయà±à°¯à°¡à°¾à°¨à°¿à°•à°¿ math/README చూడండి.',
-
# Patrolling
'markaspatrolleddiff' => 'పరీకà±à°·à°¿à°‚చినటà±à°²à±à°—à°¾ à°—à±à°°à±à°¤à± పెటà±à°Ÿà±',
'markaspatrolledtext' => 'à°ˆ à°µà±à°¯à°¾à°¸à°¾à°¨à±à°¨à°¿ పరీకà±à°·à°¿à°‚చినటà±à°²à±à°—à°¾ à°—à±à°°à±à°¤à± పెటà±à°Ÿà±',
@@ -2711,22 +2746,24 @@ $1',
'nextdiff' => 'తరà±à°µà°¾à°¤à°¿ మారà±à°ªà± →',
# Media information
-'mediawarning' => "'''హెచà±à°šà°°à°¿à°•''': à°ˆ రకపౠఫైలà±à°²à±‹ హానికరమైన కోడà±â€Œ ఉండవచà±à°šà±.
+'mediawarning' => "'''హెచà±à°šà°°à°¿à°•''': à°ˆ రకపౠఫైలà±à°²à±‹ హానికరమైన కోడà±â€Œ ఉండవచà±à°šà±.
దానà±à°¨à°¿ నడపడం వలà±à°², మీ సిసà±à°Ÿà°®à± లొంగిపోవచà±à°šà±.",
-'imagemaxsize' => "బొమà±à°® పరిమాణంపై పరిమితి:<br />''(దసà±à°¤à±à°°à°ªà± వివరణ à°ªà±à°Ÿà°² కొరకà±)''",
-'thumbsize' => 'నఖచితà±à°°à°‚ వైశాలà±à°¯à°‚:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|పేజీ|పేజీలà±}}',
-'file-info' => 'ఫైలౠపరిమాణం: $1, MIME రకం: $2',
-'file-info-size' => '$1 × $2 పికà±à°¸à±†à°³à±à°³à±, ఫైలౠపరిమాణం: $3, MIME à°°à°•à°‚: $4',
-'file-nohires' => '<small>మరింత à°¸à±à°ªà°·à±à°Ÿà°®à±ˆà°¨ బొమà±à°® లేదà±.</small>',
-'svg-long-desc' => 'SVG ఫైలà±, నామమాతà±à°°à°‚à°—à°¾ $1 × $2 పికà±à°¸à±†à°³à±à°³à±, ఫైలౠపరిమాణం: $3',
-'show-big-image' => 'అసలౠపరిమాణం',
-'show-big-image-thumb' => '<small>à°ˆ à°®à±à°¨à±à°œà±‚పౠసైజà±: $1 × $2 pixels</small>',
-'file-info-gif-looped' => 'లూపà±à°²à±‹ పడింది',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|à°«à±à°°à±‡à°®à±|à°«à±à°°à±‡à°®à±à°²à±}}',
-'file-info-png-looped' => 'à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°®à°µà±à°¤à±à°‚ది',
-'file-info-png-repeat' => '{{PLURAL:$1|ఒకసారి|$1 సారà±à°²à±}} ఆడించారà±',
-'file-info-png-frames' => '$1 {{PLURAL:$1|à°«à±à°°à±‡à°®à±|à°«à±à°°à±‡à°®à±à°²à±}}',
+'imagemaxsize' => "బొమà±à°® పరిమాణంపై పరిమితి:<br />''(దసà±à°¤à±à°°à°ªà± వివరణ à°ªà±à°Ÿà°² కొరకà±)''",
+'thumbsize' => 'నఖచితà±à°°à°‚ వైశాలà±à°¯à°‚:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|పేజీ|పేజీలà±}}',
+'file-info' => 'ఫైలౠపరిమాణం: $1, MIME రకం: $2',
+'file-info-size' => '$1 × $2 పికà±à°¸à±†à°³à±à°³à±, ఫైలౠపరిమాణం: $3, MIME à°°à°•à°‚: $4',
+'file-nohires' => '<small>మరింత à°¸à±à°ªà°·à±à°Ÿà°®à±ˆà°¨ బొమà±à°® లేదà±.</small>',
+'svg-long-desc' => 'SVG ఫైలà±, నామమాతà±à°°à°‚à°—à°¾ $1 × $2 పికà±à°¸à±†à°³à±à°³à±, ఫైలౠపరిమాణం: $3',
+'show-big-image' => 'అసలౠపరిమాణం',
+'show-big-image-preview' => '<small>à°ˆ à°®à±à°¨à±à°œà±‚పౠపరిమాణం: $1.</small>',
+'show-big-image-other' => '<small>ఇతర వైశాలà±à°¯à°¾à°²à±: $1.</small>',
+'show-big-image-size' => '$1 × $2 పికà±à°¸à±†à°³à±à°³à±',
+'file-info-gif-looped' => 'లూపà±à°²à±‹ పడింది',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|à°«à±à°°à±‡à°®à±|à°«à±à°°à±‡à°®à±à°²à±}}',
+'file-info-png-looped' => 'à°ªà±à°¨à°°à°¾à°µà±ƒà°¤à°®à°µà±à°¤à±à°‚ది',
+'file-info-png-repeat' => '{{PLURAL:$1|ఒకసారి|$1 సారà±à°²à±}} ఆడించారà±',
+'file-info-png-frames' => '$1 {{PLURAL:$1|à°«à±à°°à±‡à°®à±|à°«à±à°°à±‡à°®à±à°²à±}}',
# Special:NewFiles
'newimages' => 'కొతà±à°¤ ఫైళà±à°³ కొలà±à°µà±',
@@ -2751,16 +2788,20 @@ $1',
'metadata-help' => 'à°ˆ ఫైలà±à°²à±‹ అదనపౠసమాచారం ఉంది, బహà±à°¶à°¾ దీనà±à°¨à°¿ సృషà±à°Ÿà°¿à°‚చడానికి లేదా సాంఖà±à°¯à±€à°•à°°à°¿à°‚చడానికి వాడిన డిజిటలౠకేమెరా లేదా à°¸à±à°•à°¾à°¨à°°à± à°† సమాచారానà±à°¨à°¿ చేరà±à°šà°¿à°µà±à°‚వచà±à°šà±. à°ˆ ఫైలà±à°¨à°¿ అసలౠసà±à°¥à°¿à°¤à°¿ à°¨à±à°‚à°¡à°¿ మారిసà±à°¤à±‡, కొనà±à°¨à°¿ వివరాలౠఆ మారిన ఫైలà±à°²à±‹ పూరà±à°¤à°¿à°—à°¾ à°ªà±à°°à°¤à°¿à°«à°²à°¿à°‚చకపోవచà±à°šà±.',
'metadata-expand' => 'విసà±à°¤à°°à°¿à°¤ వివరాలనౠచూపించà±',
'metadata-collapse' => 'విసà±à°¤à°°à°¿à°¤ వివరాలనౠదాచà±',
-'metadata-fields' => 'à°•à°¿à°‚à°¦ జాబితాలో ఉనà±à°¨ వివరాలనౠబొమà±à°® పేజీలో, బొమà±à°® మేటాడేటాలో మూసà±à°•à± పోయినపà±à°ªà±à°¡à± కూడా చూపిసà±à°¤à°¾à°°à±.
-మిగిలిన వివరాలౠదాచేసి ఉంటాయి. ఇకà±à°•à°¡ మీరౠబొమà±à°®à°²à±‹ చూపించాలని à°…à°¨à±à°•à±à°‚à°Ÿà±à°¨à±à°¨ వివరాల
-మీడియావికీ పేరà±à°²à°¨à± చేరిసà±à°¤à±‡à°—నక, వాటిని బొమà±à°® పేజీలో చూపిసà±à°¤à±à°‚ది.
+'metadata-fields' => 'కింది జాబితాలో ఉనà±à°¨ మెటాడేటా ఫీలà±à°¡à±à°²à±, బొమà±à°® పేజీలో మేటాడేటా టేబà±à°²à± మూసà±à°•à±Šà°¨à±à°¨à°ªà±à°¡à± కనబడతాయి. మిగతావి దాచేసి ఉంటాయి.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'వెడలà±à°ªà±',
@@ -2775,13 +2816,11 @@ $1',
'exif-ycbcrpositioning' => 'Y మరియౠC à°¸à±à°¥à°¾à°¨à°¾à°²à±',
'exif-xresolution' => 'à°•à±à°·à°¿à°¤à°¿à°œà°¸à°®à°¾à°‚తర à°¸à±à°ªà°·à±à°Ÿà°¤',
'exif-yresolution' => 'లంబ à°¸à±à°ªà°·à±à°Ÿà°¤',
-'exif-resolutionunit' => 'X, Y à°¸à±à°ªà°·à±à°Ÿà°¤à°² కొలమానం',
'exif-stripoffsets' => 'బొమà±à°® డేటా ఉనà±à°¨ à°¸à±à°¥à°²à°‚',
'exif-rowsperstrip' => 'à°’à°•à±à°•à±‹ పటà±à°Ÿà°¿à°•à°¿ ఉనà±à°¨ à°…à°¡à±à°¡à±à°µà°°à±à°¸à°²à±',
'exif-stripbytecounts' => 'à°’à°•à±à°•à±‹ à°•à±à°¦à°¿à°‚à°šà°¿à°¨ పటà±à°Ÿà±€à°²à±‹ ఉనà±à°¨ బైటà±à°²à±',
'exif-jpeginterchangeformat' => 'JPEG SOI à°•à°¿ ఆఫà±â€Œà°¸à±†à°Ÿà±',
'exif-jpeginterchangeformatlength' => 'JPEG డాటా యొకà±à°• బైటà±à°²à±',
-'exif-transferfunction' => 'బదిలీ à°«à°‚à°•à±à°·à°¨à±',
'exif-whitepoint' => 'à°¶à±à°µà±‡à°¤à°¬à°¿à°‚దౠవరà±à°£à±‹à°—à±à°°à°¤ (à°•à±à°°à±Šà°®à°¾à°Ÿà°¿à°¸à°¿à°Ÿà±€)',
'exif-primarychromaticities' => 'à°ªà±à°°à±ˆà°®à°¾à°°à°¿à°Ÿà±€à°² వరà±à°£à±‹à°—à±à°°à°¤à°²à±',
'exif-ycbcrcoefficients' => 'వరà±à°£à°¸à±à°¥à°² మారà±à°ªà± మాతà±à°°à°¿à°• à°¸à±à°¥à°¾à°¨à°¸à±‚à°šà°¿à°•à°²à±',
@@ -2800,7 +2839,6 @@ $1',
'exif-compressedbitsperpixel' => 'బొమà±à°® à°•à±à°¦à°¿à°‚పౠపదà±à°§à°¤à°¿',
'exif-pixelydimension' => 'బొమà±à°® వెడలà±à°ªà±',
'exif-pixelxdimension' => 'బొమà±à°® à°Žà°¤à±à°¤à±',
-'exif-makernote' => 'తయారీదారౠగమనికలà±',
'exif-usercomment' => 'వాడà±à°•à°°à°¿ à°µà±à°¯à°¾à°–à±à°¯à°²à±',
'exif-relatedsoundfile' => 'సంబంధిత శబà±à°¦ ఫైలà±',
'exif-datetimeoriginal' => 'డేటా తయారైన తేదీ, సమయం',
@@ -2814,7 +2852,6 @@ $1',
'exif-exposureprogram' => 'à°Žà°•à±à°¸à±à°ªà±‹à°œà°°à± à°ªà±à°°à±‹à°—à±à°°à°¾à°®à±',
'exif-spectralsensitivity' => 'వరà±à°£à°ªà°Ÿ à°¸à±à°¨à±à°¨à°¿à°¤à°¤à±à°µà°‚',
'exif-isospeedratings' => 'ISO à°¸à±à°ªà±€à°¡à± రేటింగà±',
-'exif-oecf' => 'ఆపà±à°Ÿà±‹à°Žà°²à±†à°•à±à°Ÿà±à°°à°¾à°¨à°¿à°•à± మారà±à°ªà± à°—à±à°£à°•à°‚',
'exif-shutterspeedvalue' => 'APEX à°·à°Ÿà±à°Ÿà°°à± వేగం',
'exif-aperturevalue' => 'APEX ఎపరà±à°šà°°à±',
'exif-brightnessvalue' => 'APEX దీపà±à°¤à°¿',
@@ -2827,7 +2864,6 @@ $1',
'exif-focallength' => 'కటకపౠనాభà±à°¯à°‚తరం',
'exif-subjectarea' => 'వసà±à°¤à±à°µà± à°ªà±à°°à°¦à±‡à°¶à°‚',
'exif-flashenergy' => 'à°«à±à°²à°¾à°·à± శకà±à°¤à°¿',
-'exif-spatialfrequencyresponse' => 'à°¸à±à°ªà±‡à°·à°¿à°¯à°²à± పౌనఃపà±à°¨à±à°¯ à°¸à±à°ªà°‚దన',
'exif-focalplanexresolution' => 'X నాభి తలపౠసà±à°ªà°·à±à°Ÿà°¤',
'exif-focalplaneyresolution' => 'Y నాభి తలపౠసà±à°ªà°·à±à°Ÿà°¤',
'exif-focalplaneresolutionunit' => 'నాభితలపౠసà±à°ªà°·à±à°Ÿà°¤ కొలమానం',
@@ -2836,7 +2872,6 @@ $1',
'exif-sensingmethod' => 'à°—à±à°°à°¹à°¿à°‚చే పదà±à°§à°¤à°¿',
'exif-filesource' => 'ఫైలౠమూలం',
'exif-scenetype' => 'దృశà±à°¯à°ªà± à°°à°•à°‚',
-'exif-cfapattern' => 'CFA à°•à±à°°à°®à°‚',
'exif-customrendered' => 'à°•à°¸à±à°Ÿà°®à± బొమà±à°® à°ªà±à°°à°¾à°¸à±†à°¸à°¿à°‚à°—à±',
'exif-exposuremode' => 'à°Žà°•à±à°¸à±à°ªà±‹à°œà°°à± పదà±à°§à°¤à°¿',
'exif-whitebalance' => 'తెలà±à°ªà± సంతà±à°²à°¨à°‚',
@@ -2881,11 +2916,61 @@ $1',
'exif-gpsareainformation' => 'GPS à°ªà±à°°à°¦à±‡à°¶à°‚ యొకà±à°• పేరà±',
'exif-gpsdatestamp' => 'GPS తేదీ',
'exif-gpsdifferential' => 'GPS తేడా సవరణ',
+'exif-jpegfilecomment' => 'JPEG బొమà±à°® à°µà±à°¯à°¾à°–à±à°¯',
+'exif-keywords' => 'కీలకపదాలà±',
+'exif-worldregioncreated' => 'ఫొటో తీసిన à°ªà±à°°à°ªà°‚చపౠపà±à°°à°¾à°‚తం',
+'exif-countrycreated' => 'ఫొటో తీసిన దేశం',
+'exif-countrycodecreated' => 'ఫొటో తీసిన దేశపౠకోడà±',
+'exif-provinceorstatecreated' => 'ఫొటో తీసిన రాషà±à°Ÿà±à°°à°‚ లేదా à°ªà±à°°à°¾à°‚తీయ విభాగం',
+'exif-citycreated' => 'ఫొటో తీసిన నగరం',
+'exif-sublocationcreated' => 'ఫొటో తీసిన నగరపౠవిభాగం',
+'exif-worldregiondest' => 'à°ªà±à°°à°ªà°‚చపౠపà±à°°à°¾à°‚తం చూపబడింది',
+'exif-countrydest' => 'దేశం చూపబడింది',
+'exif-countrycodedest' => 'దేశపౠకోడౠచూపబడింది',
+'exif-provinceorstatedest' => 'రాషà±à°Ÿà±à°°à°‚ లేదా à°ªà±à°°à°¾à°‚తీయ విభాగం చూపబడింది',
+'exif-citydest' => 'నగరం చూపబడింది',
+'exif-sublocationdest' => 'నగరపౠవిభాగం చూపబడింది',
'exif-objectname' => 'పొటà±à°Ÿà°¿ శీరà±à°·à°¿à°•',
+'exif-specialinstructions' => 'à°ªà±à°°à°¤à±à°¯à±‡à°• సూచనలà±',
+'exif-headline' => 'శీరà±à°·à°¿à°•',
+'exif-credit' => 'à°•à±à°°à±†à°¡à°¿à°Ÿà±/సమరà±à°ªà°¿à°‚చినవారà±',
+'exif-source' => 'మూలం',
+'exif-editstatus' => 'బొమà±à°® యొకà±à°• ఎడిటోరియలౠసà±à°¥à°¿à°¤à°¿',
+'exif-urgency' => 'à°Žà°‚à°¤ à°¤à±à°µà°°à°—à°¾ కావాలి',
+'exif-locationdest' => 'చూపించిన à°ªà±à°°à°¾à°‚తం',
+'exif-objectcycle' => 'à°ˆ మాధà±à°¯à°®à°‚ ఉదà±à°¦à±‡à°¶à°¿à°‚à°šà°¿à°¨ సమయం',
+'exif-contact' => 'సంపà±à°°à°¦à°¿à°‚పౠసమాచారం',
+'exif-writer' => '',
+'exif-languagecode' => 'భాష',
+'exif-iimversion' => 'IIM రూపాంతరం',
+'exif-iimcategory' => 'వరà±à°—à°‚',
+'exif-iimsupplementalcategory' => 'à°…à°¨à±à°·à°‚à°—à°¿à°• వరà±à°—ాలà±',
+'exif-datetimeexpires' => 'దీని తరà±à°µà°¾à°¤ వాడవదà±à°¦à±',
+'exif-identifier' => 'à°—à±à°°à±à°¤à°¿à°‚పకం',
+'exif-lens' => 'వాడిన కటకం',
+'exif-serialnumber' => 'కెమేరా యొకà±à°• సీరియలౠనంబరà±',
+'exif-cameraownername' => 'కేమెరా యజమాని',
+'exif-rating' => 'రేటింగౠ(5 à°•à°¿ గానà±)',
+'exif-rightscertificate' => 'హకà±à°•à±à°² నిరà±à°µà°¾à°¹à°£ ధృవీకరణ పతà±à°°à°‚',
+'exif-copyrighted' => 'కాపీహకà±à°•à±à°² à°¸à±à°¥à°¿à°¤à°¿',
+'exif-copyrightowner' => 'కాపీ హకà±à°•à±à°¦à°¾à°°à±',
+'exif-usageterms' => 'వాడà±à°• నియమాలà±',
+'exif-morepermissionsurl' => 'à°ªà±à°°à°¤à±à°¯à°¾à°®à±à°¨à°¾à°¯ లైసెనà±à°¸à± సమాచారం',
+'exif-pngfilecomment' => 'PNG ఫైలౠవà±à°¯à°¾à°–à±à°¯',
+'exif-disclaimer' => 'నిషà±à°ªà±‚à°šà±€',
+'exif-contentwarning' => 'విషయపౠహెచà±à°šà°°à°¿à°•',
+'exif-giffilecomment' => 'GIF ఫైలౠవà±à°¯à°¾à°–à±à°¯',
+'exif-intellectualgenre' => 'అంశమౠయొకà±à°• à°°à°•à°®à±',
+'exif-subjectnewscode' => 'సబà±à°œà±†à°•à±à°Ÿà± కోడà±',
+'exif-event' => 'చూపించిన ఘటన',
+'exif-organisationinimage' => 'చూపించిన సంసà±à°¥',
+'exif-personinimage' => 'à°šà°¿à°¤à±à°°à°‚లో ఉనà±à°¨ à°µà±à°¯à°•à±à°¤à°¿',
# EXIF attributes
'exif-compression-1' => 'à°•à±à°¦à°¿à°‚చని',
+'exif-copyrighted-true' => 'నకలà±à°¹à°•à±à°•à±à°²à±à°•à°²à°¦à°¿',
+
'exif-unknowndate' => 'à°…à°œà±à°žà°¾à°¤ తేదీ',
'exif-orientation-1' => 'సాధారణ',
@@ -2893,9 +2978,9 @@ $1',
'exif-orientation-3' => '180° తిపà±à°ªà°¾à°‚',
'exif-orientation-4' => 'నిలà±à°µà±à°—à°¾ తిరగేసాం',
'exif-orientation-5' => 'అపసవà±à°¯ దిశలో 90° తిపà±à°ªà°¿, నిలà±à°µà±à°—à°¾ తిరగేసాం',
-'exif-orientation-6' => 'సవà±à°¯à°¦à°¿à°¶à°²à±‹ 90° తిపà±à°ªà°¾à°‚',
+'exif-orientation-6' => 'అపసవà±à°¯à°¦à°¿à°¶à°²à±‹ 90° తిపà±à°ªà°¾à°°à±',
'exif-orientation-7' => 'సవà±à°¯à°¦à°¿à°¶à°²à±‹ 90° తిపà±à°ªà°¿, నిలà±à°µà±à°—à°¾ తిరగేసాం',
-'exif-orientation-8' => 'అపసవà±à°¯à°¦à°¿à°¶à°²à±‹ 90° తిపà±à°ªà°¾à°‚',
+'exif-orientation-8' => 'సవà±à°¯à°¦à°¿à°¶à°²à±‹ 90° తిపà±à°ªà°¾à°°à±',
'exif-planarconfiguration-1' => 'à°¸à±à°¥à±‚à°² ఆకృతి',
'exif-planarconfiguration-2' => 'సమతల ఆకృతి',
@@ -3013,6 +3098,10 @@ $1',
'exif-gpslongitude-e' => 'తూరà±à°ªà± రేఖాంశం',
'exif-gpslongitude-w' => 'పశà±à°šà°¿à°® రేఖాంశం',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => 'సమà±à°¦à±à°°à°®à°Ÿà±à°Ÿà°¾à°¨à°¿à°•à°¿ $1 {{PLURAL:$1|మీటరà±|మీటరà±à°²à±}} à°Žà°—à±à°µà°¨',
+'exif-gpsaltitude-below-sealevel' => 'సమà±à°¦à±à°°à°®à°Ÿà±à°Ÿà°¾à°¨à°¿à°•à°¿ $1 {{PLURAL:$1|మీటరà±|మీటరà±à°²à±}} దిగà±à°µà±à°¨',
+
'exif-gpsstatus-a' => 'కొలత జరà±à°—à±à°¤à±‚ంది',
'exif-gpsstatus-v' => 'కొలత ఇంటరà±â€Œà°†à°ªà°°à±‡à°Ÿà°¬à°¿à°²à°¿à°Ÿà±€',
@@ -3024,21 +3113,59 @@ $1',
'exif-gpsspeed-m' => 'à°—à°‚à°Ÿà°•à°¿ మైళà±à°³à±',
'exif-gpsspeed-n' => 'à°®à±à°¡à±à°²à±',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'కిలోమీటరà±à°²à±',
+'exif-gpsdestdistance-m' => 'మైళà±à°³à±',
+'exif-gpsdestdistance-n' => 'నాటికలౠమైళà±à°³à±',
+
+'exif-objectcycle-a' => 'ఉదయం మాతà±à°°à°®à±‡',
+'exif-objectcycle-p' => 'సాయంతà±à°°à°‚ మాతà±à°°à°®à±‡',
+'exif-objectcycle-b' => 'ఉదయమూ మరియౠసాయంతà±à°°à°®à±‚',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'వాసà±à°¤à°µ దిశ',
'exif-gpsdirection-m' => 'అయసà±à°•à°¾à°‚à°¤ దిశ',
+'exif-dc-contributor' => 'సహాయకà±à°²à±',
+'exif-dc-date' => 'తేదీâ€â€(à°²à±)',
+'exif-dc-publisher' => 'à°ªà±à°°à°šà±à°°à°£à°•à°°à±à°¤',
+'exif-dc-relation' => 'సంబంధిత మీడియా',
+'exif-dc-rights' => 'హకà±à°•à±à°²à±',
+'exif-dc-source' => 'మీడియా మూలమà±',
+'exif-dc-type' => 'మీడియా యొకà±à°• à°°à°•à°®à±',
+
+'exif-rating-rejected' => 'తిరసà±à°•à°°à°¿à°‚చబడింది',
+
+'exif-isospeedratings-overflow' => '65535 కంటే à°Žà°•à±à°•à±à°µ',
+
+'exif-iimcategory-ace' => 'కళలà±, సంసà±à°•à±ƒà°¤à°¿ మరియౠవినోదం',
+'exif-iimcategory-clj' => 'నేరమౠమరియౠచటà±à°Ÿà°®à±',
+'exif-iimcategory-dis' => 'విపతà±à°¤à±à°²à± మరియౠపà±à°°à°®à°¾à°¦à°¾à°²à±',
+'exif-iimcategory-edu' => 'విదà±à°¯',
+'exif-iimcategory-evn' => 'పరà±à°¯à°¾à°µà°°à°£à°‚',
+'exif-iimcategory-hth' => 'ఆరోగà±à°¯à°‚',
+'exif-iimcategory-lif' => 'జీవనశైలి మరియౠకాలకà±à°·à±‡à°ªà°‚',
+'exif-iimcategory-pol' => 'రాజకీయాలà±',
+'exif-iimcategory-rel' => 'మతం మరియౠవిశà±à°µà°¾à°¸à°‚',
+'exif-iimcategory-sci' => 'వైజà±à°žà°¾à°¨à°¿à°•à°‚ మరియౠసాంకేతికం',
+'exif-iimcategory-soi' => 'సాంఘిక సమసà±à°¯à°²à±',
+'exif-iimcategory-spo' => 'à°•à±à°°à±€à°¡à°²à±',
+'exif-iimcategory-war' => 'à°¯à±à°¦à±à°§à°‚, సంఘరà±à°·à°£à°²à± మరియౠఅనిశà±à°šà°¿à°¤à°¿',
+'exif-iimcategory-wea' => 'వాతావరణం',
+
+'exif-urgency-normal' => 'సాధారణం ($1)',
+'exif-urgency-low' => 'తకà±à°•à±à°µ ($1)',
+'exif-urgency-high' => 'à°Žà°•à±à°•à±à°µ ($1)',
+
# External editor support
'edit-externally' => 'బయటి à°…à°ªà±à°²à°¿à°•à±‡à°·à°¨à± వాడి à°ˆ ఫైలà±à°¨à± మారà±à°šà±',
-'edit-externally-help' => '(మరింత సమాచారం కొరకౠ[http://www.mediawiki.org/wiki/Manual:External_editors సెటపà±â€Œ సూచనల]ని చూడండి)',
+'edit-externally-help' => '(మరింత సమాచారం కొరకౠ[//www.mediawiki.org/wiki/Manual:External_editors సెటపà±â€Œ సూచనల]ని చూడండి)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'à°…à°¨à±à°¨à±€',
-'imagelistall' => 'à°…à°¨à±à°¨à±€',
-'watchlistall2' => 'à°…à°¨à±à°¨à±€',
-'namespacesall' => 'à°…à°¨à±à°¨à±€',
-'monthsall' => 'à°…à°¨à±à°¨à±€',
-'limitall' => 'à°…à°¨à±à°¨à±€',
+'watchlistall2' => 'à°…à°¨à±à°¨à±€',
+'namespacesall' => 'à°…à°¨à±à°¨à±€',
+'monthsall' => 'à°…à°¨à±à°¨à±€',
+'limitall' => 'à°…à°¨à±à°¨à±€',
# E-mail address confirmation
'confirmemail' => 'à°ˆ-మెయిలౠచిరà±à°¨à°¾à°®à°¾ ధృవీకరించండి',
@@ -3104,16 +3231,23 @@ $1',
'trackbackdeleteok' => 'à°Ÿà±à°°à°¾à°•à±â€Œà°¬à°¾à°•à±&zwnj;ని విజయవంతంగా తొలగించాం.',
# Delete conflict
-'deletedwhileediting' => "'''హెచà±à°šà°°à°¿à°•''': మీరౠమారà±à°ªà±à°²à± చేయటం మొదలà±à°ªà±†à°Ÿà±à°Ÿà°¾à°• à°ˆ పేజీ తొలగించబడింది!",
-'confirmrecreate' => "మీరౠపేజీ రాయటం మొదలà±à°ªà±†à°Ÿà±à°Ÿà°¿à°¨ తరà±à°µà°¾à°¤ [[User:$1|$1]] ([[User talk:$1|à°šà°°à±à°š]]) దానిని తీసివేసారà±. దానికి à°ˆ కారణం ఇచà±à°šà°¾à°°à±: ''$2''
+'deletedwhileediting' => "'''హెచà±à°šà°°à°¿à°•''': మీరౠమారà±à°ªà±à°²à± చేయటం మొదలà±à°ªà±†à°Ÿà±à°Ÿà°¾à°• à°ˆ పేజీ తొలగించబడింది!",
+'confirmrecreate' => "మీరౠపేజీ రాయటం మొదలà±à°ªà±†à°Ÿà±à°Ÿà°¿à°¨ తరà±à°µà°¾à°¤ [[User:$1|$1]] ([[User talk:$1|à°šà°°à±à°š]]) దానిని తీసివేసారà±. దానికి à°ˆ కారణం ఇచà±à°šà°¾à°°à±: ''$2''
మీరౠఈ పేజీని మళà±à°³à±€ తయారౠచేయాలనà±à°•à±à°‚à°Ÿà±à°¨à±à°¨à°¾à°°à°¨à°¿ ధృవీకరించండి.",
-'recreate' => 'మళà±à°²à±€ సృషà±à°Ÿà°¿à°‚à°šà±',
+'confirmrecreate-noreason' => 'మీరౠమారà±à°šà°¡à°‚ మొదలà±à°ªà±†à°Ÿà±à°Ÿà°¿à°¨ తరà±à°µà°¾à°¤ à°ˆ à°ªà±à°Ÿà°¨à± వాడà±à°•à°°à°¿ [[User:$1|$1]] ([[User talk:$1|à°šà°°à±à°š]]) తొలగించారà±. à°ˆ à°ªà±à°Ÿà°¨à± మీరౠనిజంగానే à°ªà±à°¨à°ƒà°¸à±ƒà°·à±à°Ÿà°¿à°‚చాలనà±à°•à±à°‚à°Ÿà±à°¨à±à°¨à°¾à°°à°¨à°¿ నిరà±à°§à°¾à°°à°¿à°‚à°šà°‚à°¡à°¿.',
+'recreate' => 'మళà±à°²à±€ సృషà±à°Ÿà°¿à°‚à°šà±',
# action=purge
'confirm_purge_button' => 'సరే',
'confirm-purge-top' => 'à°ˆ పేజీ యొకà±à°• పాత కాపీని తొలగించమంటారా?',
'confirm-purge-bottom' => 'పేజీ తాడనతో కోశం ఖాళీ అయి, ఇటà±à°Ÿà±€à°µà°²à°¿ కూరà±à°ªà±à°¨à± కనబడేలా చేసà±à°¤à±à°‚ది.',
+# action=watch/unwatch
+'confirm-watch-button' => 'సరే',
+'confirm-watch-top' => 'à°ˆ à°ªà±à°Ÿà°¨à± మీ వీకà±à°·à°£ జాబితాలో చేరà±à°šà°¾à°²à°¾?',
+'confirm-unwatch-button' => 'సరే',
+'confirm-unwatch-top' => 'à°ˆ à°ªà±à°Ÿà°¨à± మీ వీకà±à°·à°£ జాబితా à°¨à±à°‚à°¡à°¿ తొలగించాలా?',
+
# Multipage image navigation
'imgmultipageprev' => '↠మà±à°¨à±à°ªà°Ÿà°¿ పేజీ',
'imgmultipagenext' => 'తరà±à°µà°¾à°¤à°¿ పేజీ →',
@@ -3155,14 +3289,14 @@ $1',
'watchlistedit-normal-legend' => 'వీకà±à°·à°£ జాబితా à°¨à±à°‚à°¡à°¿ శీరà±à°·à°¿à°•à°²à°¨à± తీసివెయà±à°¯à°¿',
'watchlistedit-normal-explain' => 'మీ వీకà±à°·à°£ జాబితాలోని శీరà±à°·à°¿à°•à°²à°¨à± à°ˆ à°•à±à°°à°¿à°‚à°¦ చూపించాం.
à°à°¦à±ˆà°¨à°¾ శీరà±à°·à°¿à°•à°¨à± తీసివేసేందà±à°•à±, దాని పకà±à°•à°¨à±à°¨à±à°¨ పెటà±à°Ÿà±†à°¨à± చెకౠచేసి, "{{int:Watchlistedit-normal-submit}}"ని నొకà±à°•à°‚à°¡à°¿.
-మీరౠ[[Special:Watchlist/raw|à°®à±à°¡à°¿ జాబితానౠకూడా మారà±à°šà°µà°šà±à°šà±]].',
+మీరౠ[[Special:EditWatchlist/raw|à°®à±à°¡à°¿ జాబితానౠకూడా మారà±à°šà°µà°šà±à°šà±]].',
'watchlistedit-normal-submit' => 'శీరà±à°·à°¿à°•à°²à°¨à± తీసివెయà±à°¯à°¿',
'watchlistedit-normal-done' => 'మీ వీకà±à°·à°£ జాబితా à°¨à±à°‚à°¡à°¿ {{PLURAL:$1|1 శీరà±à°·à°¿à°•à°¨à±|$1 శీరà±à°·à°¿à°•à°²à°¨à±}} తీసివేసాం:',
'watchlistedit-raw-title' => 'à°®à±à°¡à°¿ వీకà±à°·à°£ జాబితానౠమారà±à°šà±',
'watchlistedit-raw-legend' => 'à°®à±à°¡à°¿ వీకà±à°·à°£ జాబితానౠమారà±à°šà±',
'watchlistedit-raw-explain' => 'మీ వీకà±à°·à°£ జాబితాలోని శీరà±à°·à°¿à°•à°²à°¨à± à°ˆ à°•à°¿à°‚à°¦ చూపించాం. à°ˆ జాబితాలో ఉనà±à°¨à°µà°¾à°Ÿà°¿à°¨à°¿ తీసివెయà±à°¯à°¡à°‚ గానీ కొతà±à°¤à°µà°¾à°Ÿà°¿à°¨à°¿ చేరà±à°šà°¡à°‚ గానీ (వరà±à°¸à°•à±Šà°•à°Ÿà°¿ చొపà±à°ªà±à°¨) చెయà±à°¯à°µà°šà±à°šà±.
పూరà±à°¤à°¯à±à°¯à°¾à°•, "{{int:Watchlistedit-raw-submit}}" à°…à°¨à±à°¨ బొతà±à°¤à°¾à°¨à±à°¨à°¿ నొకà±à°•à°‚à°¡à°¿.
-మీరౠ[[Special:Watchlist/edit|మామూలౠపాఠà±à°¯à°•à±‚à°°à±à°ªà°°à°¿à°¨à°¿ కూడా వాడవచà±à°šà±]].',
+మీరౠ[[Special:EditWatchlist|మామూలౠపాఠà±à°¯à°•à±‚à°°à±à°ªà°°à°¿à°¨à°¿ కూడా వాడవచà±à°šà±]].',
'watchlistedit-raw-titles' => 'శీరà±à°·à°¿à°•à°²à±:',
'watchlistedit-raw-submit' => 'వీకà±à°·à°£ జాబితానౠతాజాకరించà±',
'watchlistedit-raw-done' => 'మీ వీకà±à°·à°£ జాబితానౠతాజాకరించాం.',
@@ -3179,33 +3313,32 @@ $1',
'duplicate-defaultsort' => 'హెచà±à°šà°°à°¿à°•: డిఫాలà±à°Ÿà± పేరà±à°šà± à°•à±€ "$2", à°—à°¤ డిఫాలà±à°Ÿà± పేరà±à°šà± à°•à±€ "$1" ని అతికà±à°°à°®à°¿à°¸à±à°¤à±à°‚ది.',
# Special:Version
-'version' => 'సంచిక',
-'version-extensions' => 'à°¸à±à°¥à°¾à°ªà°¿à°‚à°šà°¿à°¨ పొడగింతలà±',
-'version-specialpages' => 'à°ªà±à°°à°¤à±à°¯à±‡à°• పేజీలà±',
-'version-parserhooks' => 'పారà±à°¸à°°à± కొకà±à°•à°¾à°²à±',
-'version-variables' => 'చరరాశà±à°²à±',
-'version-skins' => 'అలంకారాలà±',
-'version-other' => 'ఇతర',
-'version-mediahandlers' => 'మీడియానౠఫైళà±à°²à°¨à± నడిపించే పొడిగింపà±à°²à±',
-'version-hooks' => 'కొకà±à°•à°¾à°²à±',
-'version-extension-functions' => 'పొడిగింపౠఫంకà±à°·à°¨à±à°²à±',
-'version-parser-extensiontags' => 'పారà±à°¸à°°à± పొడిగింపౠటà±à°¯à°¾à°—à±à°²à±',
-'version-parser-function-hooks' => 'పారà±à°¸à°°à±à°•à± కొకà±à°•à°¾à°²à±',
-'version-skin-extension-functions' => 'తొడà±à°—à±à°¨à± మెరà±à°—à±à°ªà°°à°¿à°šà±‡ à°«à°‚à°•à±à°·à°¨à±à°²à±',
-'version-hook-name' => 'కొకà±à°•à±†à°‚ పేరà±',
-'version-hook-subscribedby' => 'ఉపయోగిసà±à°¤à±à°¨à±à°¨à°µà°¿',
-'version-version' => '(సంచిక $1)',
-'version-license' => 'లైసెనà±à°¸à±',
-'version-poweredby-credits' => "à°ˆ వికీ '''[http://www.mediawiki.org/ మీడియావికీ]'''చే శకà±à°¤à°¿à°®à°‚తం, కాపీహకà±à°•à±à°²à± © 2001-$1 $2.",
-'version-poweredby-others' => 'ఇతరà±à°²à±',
-'version-license-info' => 'మీడియావికీ à°…à°¨à±à°¨à°¦à°¿ à°¸à±à°µà±‡à°šà±à°›à°¾ మృదూపకరణం; మీరౠదీనà±à°¨à°¿ à°ªà±à°¨à°ƒà°ªà°‚పిణీ చేయవచà±à°šà± మరియà±/లేదా à°«à±à°°à±€ సాఫà±à°Ÿà±&zwnj;వేరౠఫౌండేషనౠపà±à°°à°šà±à°°à°¿à°‚à°šà°¿à°¨ à°—à±à°¨à±‚ జనరలౠపబà±à°²à°¿à°•à± లైసెసà±à°¸à± వెరà±à°·à°¨à± 2 లేదా (మీ ఎంపిక à°ªà±à°°à°•à°¾à°°à°‚) అంతకంటే కొతà±à°¤ వెరà±à°·à°¨à± యొకà±à°• నియమాలకౠలోబడి మారà±à°šà±à°•à±‹à°µà°šà±à°šà±.
+'version' => 'సంచిక',
+'version-extensions' => 'à°¸à±à°¥à°¾à°ªà°¿à°‚à°šà°¿à°¨ పొడగింతలà±',
+'version-specialpages' => 'à°ªà±à°°à°¤à±à°¯à±‡à°• పేజీలà±',
+'version-parserhooks' => 'పారà±à°¸à°°à± కొకà±à°•à°¾à°²à±',
+'version-variables' => 'చరరాశà±à°²à±',
+'version-skins' => 'అలంకారాలà±',
+'version-other' => 'ఇతర',
+'version-mediahandlers' => 'మీడియానౠఫైళà±à°²à°¨à± నడిపించే పొడిగింపà±à°²à±',
+'version-hooks' => 'కొకà±à°•à°¾à°²à±',
+'version-extension-functions' => 'పొడిగింపౠఫంకà±à°·à°¨à±à°²à±',
+'version-parser-extensiontags' => 'పారà±à°¸à°°à± పొడిగింపౠటà±à°¯à°¾à°—à±à°²à±',
+'version-parser-function-hooks' => 'పారà±à°¸à°°à±à°•à± కొకà±à°•à°¾à°²à±',
+'version-hook-name' => 'కొకà±à°•à±†à°‚ పేరà±',
+'version-hook-subscribedby' => 'ఉపయోగిసà±à°¤à±à°¨à±à°¨à°µà°¿',
+'version-version' => '(సంచిక $1)',
+'version-license' => 'లైసెనà±à°¸à±',
+'version-poweredby-credits' => "à°ˆ వికీ '''[//www.mediawiki.org/ మీడియావికీ]'''చే శకà±à°¤à°¿à°®à°‚తం, కాపీహకà±à°•à±à°²à± © 2001-$1 $2.",
+'version-poweredby-others' => 'ఇతరà±à°²à±',
+'version-license-info' => 'మీడియావికీ à°…à°¨à±à°¨à°¦à°¿ à°¸à±à°µà±‡à°šà±à°›à°¾ మృదూపకరణం; మీరౠదీనà±à°¨à°¿ à°ªà±à°¨à°ƒà°ªà°‚పిణీ చేయవచà±à°šà± మరియà±/లేదా à°«à±à°°à±€ సాఫà±à°Ÿà±&zwnj;వేరౠఫౌండేషనౠపà±à°°à°šà±à°°à°¿à°‚à°šà°¿à°¨ à°—à±à°¨à±‚ జనరలౠపబà±à°²à°¿à°•à± లైసెసà±à°¸à± వెరà±à°·à°¨à± 2 లేదా (మీ ఎంపిక à°ªà±à°°à°•à°¾à°°à°‚) అంతకంటే కొతà±à°¤ వెరà±à°·à°¨à± యొకà±à°• నియమాలకౠలోబడి మారà±à°šà±à°•à±‹à°µà°šà±à°šà±.
మీడియావికీ à°ªà±à°°à°œà±‹à°ªà°¯à±‹à°— ఆకాంకà±à°·à°¤à±‹ పంపిణీ చేయబడà±à°¤à±à°‚ది, కానీ à°Žà°Ÿà±à°µà°‚à°Ÿà°¿ వారంటీ లేకà±à°‚à°¡à°¾; కనీసం à°à°¦à±ˆà°¨à°¾ à°ªà±à°°à°¤à±à°¯à±‡à°• ఉదà±à°¦à±‡à°¶à°¾à°¨à°¿à°•à°¿ సరిపడà±à°¤à±à°‚దని గానీ లేదా వసà±à°¤à±à°¤à±à°µà°‚ యొకà±à°• అంతరà±à°¨à°¿à°¹à°¿à°¤ వారంటీ లేకà±à°‚à°¡à°¾. మరినà±à°¨à°¿ వివరాలకౠగà±à°¨à±‚ జనరలౠపబà±à°²à°¿à°•à± లైసెనà±à°¸à±à°¨à°¿ చూడండి.
-à°ˆ ఉపకరణంతో పాటౠమీకౠ[{{SERVER}}{{SCRIPTPATH}}/COPYING à°—à±à°¨à±‚ జనరలౠపబà±à°²à°¿à°•à± లైసెనà±à°¸à± యొకà±à°• à°’à°• కాపీ] అందివà±à°‚డాలి; లేకపోతే, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA à°…à°¨à±à°¨ à°šà°¿à°°à±à°¨à°¾à°®à°¾à°•à°¿ à°µà±à°°à°¾à°¯à°‚à°¡à°¿ లేదా [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html జాలం లోనే చదవండి].',
-'version-software' => 'à°ªà±à°°à°µà±‡à°¶à°ªà±†à°Ÿà±à°Ÿà°¿à°¨ సాఫà±à°Ÿà±à°µà±‡à°°à±à°²à±',
-'version-software-product' => 'à°ªà±à°°à±‹à°¡à°•à±à°Ÿà±',
-'version-software-version' => 'వెరà±à°·à°¨à±',
+à°ˆ ఉపకరణంతో పాటౠమీకౠ[{{SERVER}}{{SCRIPTPATH}}/COPYING à°—à±à°¨à±‚ జనరలౠపబà±à°²à°¿à°•à± లైసెనà±à°¸à± యొకà±à°• à°’à°• కాపీ] అందివà±à°‚డాలి; లేకపోతే, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA à°…à°¨à±à°¨ à°šà°¿à°°à±à°¨à°¾à°®à°¾à°•à°¿ à°µà±à°°à°¾à°¯à°‚à°¡à°¿ లేదా [//www.gnu.org/licenses/old-licenses/gpl-2.0.html జాలం లోనే చదవండి].',
+'version-software' => 'à°ªà±à°°à°µà±‡à°¶à°ªà±†à°Ÿà±à°Ÿà°¿à°¨ సాఫà±à°Ÿà±à°µà±‡à°°à±à°²à±',
+'version-software-product' => 'à°ªà±à°°à±‹à°¡à°•à±à°Ÿà±',
+'version-software-version' => 'వెరà±à°·à°¨à±',
# Special:FilePath
'filepath' => 'పూరà±à°¤à°¿ à°šà°¿à°°à±à°¨à°¾à°®à°¾',
@@ -3216,21 +3349,22 @@ $1',
పేరà±à°•à± à°®à±à°‚దౠ"{{ns:file}}:" అని చేరà±à°šà°µà°¦à±à°¦à±.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'ఫైళà±à°² మారà±à°ªà±à°°à°¤à±à°² కోసం వెతà±à°•à±',
-'fileduplicatesearch-summary' => 'మారà±à°ªà±à°°à°¤à±à°² కోసం ఫైళà±à°² హాషౠవిలà±à°µ ఆధారంగా వెతà±à°•à±.
-ఫైలౠపేరà±à°•à± à°®à±à°‚దౠ"{{ns:file}}:"నౠచేరà±à°šà°•à±à°‚à°¡à°¾ ఇవà±à°µà°‚à°¡à°¿.',
-'fileduplicatesearch-legend' => 'మారà±à°ªà±à°°à°¤à°¿ కొరకౠవెతà±à°•à±',
-'fileduplicatesearch-filename' => 'ఫైలౠపేరà±:',
-'fileduplicatesearch-submit' => 'వెతà±à°•à±',
-'fileduplicatesearch-info' => '$1 × $2 పికà±à°¸à±†à°³à±à°²à±<br />దసà±à°¤à±à°°à°ªà± పరిమాణం: $3<br />MIME à°°à°•à°‚: $4',
-'fileduplicatesearch-result-1' => '"$1" అనే పేరà±à°—à°² ఫైలà±à°•à± సరిసమానమైన మారà±à°ªà±à°°à°¤à±à°²à± లేవà±.',
-'fileduplicatesearch-result-n' => '"$1" అనే పేరà±à°—à°² ఫైలà±à°•à± {{PLURAL:$2|à°’à°• మారà±à°ªà±à°°à°¤à°¿ ఉంది|$2 మారà±à°ªà±à°°à°¤à±à°²à±à°¨à±à°¨à°¾à°¯à°¿}}.',
+'fileduplicatesearch' => 'ఫైళà±à°² మారà±à°ªà±à°°à°¤à±à°² కోసం వెతà±à°•à±',
+'fileduplicatesearch-summary' => 'మారà±à°ªà±à°°à°¤à±à°² కోసం ఫైళà±à°² హాషౠవిలà±à°µ ఆధారంగా వెతà±à°•à±.',
+'fileduplicatesearch-legend' => 'మారà±à°ªà±à°°à°¤à°¿ కొరకౠవెతà±à°•à±',
+'fileduplicatesearch-filename' => 'ఫైలౠపేరà±:',
+'fileduplicatesearch-submit' => 'వెతà±à°•à±',
+'fileduplicatesearch-info' => '$1 × $2 పికà±à°¸à±†à°³à±à°²à±<br />దసà±à°¤à±à°°à°ªà± పరిమాణం: $3<br />MIME à°°à°•à°‚: $4',
+'fileduplicatesearch-result-1' => '"$1" అనే పేరà±à°—à°² ఫైలà±à°•à± సరిసమానమైన మారà±à°ªà±à°°à°¤à±à°²à± లేవà±.',
+'fileduplicatesearch-result-n' => '"$1" అనే పేరà±à°—à°² ఫైలà±à°•à± {{PLURAL:$2|à°’à°• మారà±à°ªà±à°°à°¤à°¿ ఉంది|$2 మారà±à°ªà±à°°à°¤à±à°²à±à°¨à±à°¨à°¾à°¯à°¿}}.',
+'fileduplicatesearch-noresults' => '"$1" అనే పేరà±à°—à°² దసà±à°¤à±à°°à°®à±‡à°®à±€ కనబడలేదà±.',
# Special:SpecialPages
'specialpages' => 'à°ªà±à°°à°¤à±à°¯à±‡à°• పేజీలà±',
'specialpages-note' => '----
-* మామూలౠపà±à°°à°¤à±à°¯à±‡à°• పేజీలà±.
-* <strong class="mw-specialpagerestricted">నియంతà±à°°à°¿à°¤ à°ªà±à°°à°¤à±à°¯à±‡à°• పేజీలà±.</strong>',
+* మామూలౠపà±à°°à°¤à±à°¯à±‡à°• à°ªà±à°Ÿà°²à±.
+* <strong class="mw-specialpagerestricted">నియంతà±à°°à°¿à°¤ à°ªà±à°°à°¤à±à°¯à±‡à°• à°ªà±à°Ÿà°²à±.</strong>
+* <span class="mw-specialpagecached">Cached à°ªà±à°°à°¤à±à°¯à±‡à°• à°ªà±à°Ÿà°²à± (పాతబడి ఉండొచà±à°šà±).</span>',
'specialpages-group-maintenance' => 'నిరà±à°µà°¹à°£à°¾ నివేదికలà±',
'specialpages-group-other' => 'ఇతర à°ªà±à°°à°¤à±à°¯à±‡à°• పేజీలà±',
'specialpages-group-login' => 'à°ªà±à°°à°µà±‡à°¶à°¿à°‚à°šà°‚à°¡à°¿ / నమోదà±à°šà±‡à°¸à±à°•à±‹à°‚à°¡à°¿',
diff --git a/languages/messages/MessagesTet.php b/languages/messages/MessagesTet.php
index 082e7ad6..2788c520 100644
--- a/languages/messages/MessagesTet.php
+++ b/languages/messages/MessagesTet.php
@@ -36,37 +36,37 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
+ 'Allmessages' => array( 'Mensajen_hotu' ),
+ 'Allpages' => array( 'Pájina_hotu' ),
+ 'Block' => array( 'Blokeiu' ),
+ 'Categories' => array( 'Kategoria' ),
+ 'Contributions' => array( 'Kontribuisaun' ),
'CreateAccount' => array( 'Rejista' ),
- 'Preferences' => array( 'Preferénsia' ),
- 'Watchlist' => array( 'Lista_hateke' ),
- 'Recentchanges' => array( 'Mudansa_foufoun_sira' ),
- 'Upload' => array( 'Tau_iha_arkivu_laran' ),
+ 'Emailuser' => array( 'Haruka_korreiu_eletróniku' ),
+ 'Export' => array( 'Esporta' ),
+ 'Import' => array( 'Importa' ),
+ 'BlockList' => array( 'Lista_ema_sira-ne\'ebé_blokeiu_tiha' ),
+ 'Listadmins' => array( 'Lista_administradór' ),
'Listfiles' => array( 'Lista_imajen' ),
- 'Newimages' => array( 'Imajen_foun' ),
'Listusers' => array( 'Lista_uza-na\'in' ),
- 'Statistics' => array( 'Estatístika' ),
- 'Randompage' => array( 'Pájina_ruma' ),
- 'Shortpages' => array( 'Pájina_badak' ),
'Longpages' => array( 'Pájina_naruk' ),
+ 'Movepage' => array( 'Book' ),
+ 'Mypage' => array( 'Ha\'u-nia_pájina' ),
+ 'Newimages' => array( 'Imajen_foun' ),
+ 'Preferences' => array( 'Preferénsia' ),
'Protectedpages' => array( 'Pájina_sira-ne\'ebé_proteje_tiha' ),
- 'Allpages' => array( 'Pájina_hotu' ),
- 'Ipblocklist' => array( 'Lista_ema_sira-ne\'ebé_blokeiu_tiha' ),
+ 'Randompage' => array( 'Pájina_ruma' ),
+ 'Recentchanges' => array( 'Mudansa_foufoun_sira' ),
+ 'Search' => array( 'Buka' ),
+ 'Shortpages' => array( 'Pájina_badak' ),
'Specialpages' => array( 'Pájina_espesiál_sira' ),
- 'Contributions' => array( 'Kontribuisaun' ),
- 'Emailuser' => array( 'Haruka_korreiu_eletróniku' ),
- 'Whatlinkshere' => array( 'Pájina_sira_ne\'ebé_bá_iha_ne\'e' ),
- 'Movepage' => array( 'Book' ),
- 'Categories' => array( 'Kategoria' ),
- 'Export' => array( 'Esporta' ),
- 'Version' => array( 'Versaun' ),
- 'Allmessages' => array( 'Mensajen_hotu' ),
- 'Blockip' => array( 'Blokeiu' ),
+ 'Statistics' => array( 'Estatístika' ),
'Undelete' => array( 'Restaurar' ),
- 'Import' => array( 'Importa' ),
+ 'Upload' => array( 'Tau_iha_arkivu_laran' ),
'Userrights' => array( 'Priviléjiu' ),
- 'Mypage' => array( 'Ha\'u-nia_pájina' ),
- 'Listadmins' => array( 'Lista_administradór' ),
- 'Search' => array( 'Buka' ),
+ 'Version' => array( 'Versaun' ),
+ 'Watchlist' => array( 'Lista_hateke' ),
+ 'Whatlinkshere' => array( 'Pájina_sira_ne\'ebé_bá_iha_ne\'e' ),
'Withoutinterwiki' => array( 'Laiha_interwiki' ),
);
@@ -185,7 +185,6 @@ $messages = array(
'searcharticle' => 'Pájina',
'history' => 'Istória pájina',
'history_short' => 'Istória',
-'info_short' => 'Informasaun',
'printableversion' => 'Versaun ba impresaun',
'permalink' => 'Ligasaun mahelak',
'print' => 'Imprime',
@@ -318,9 +317,13 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'accountcreated' => "Registrar tiha uza-na'in",
'loginlanguagelabel' => 'Lian: $1',
-# Password reset dialog
+# Change password dialog
'resetpass_text' => "<!-- Hakerek testu iha ne'e -->",
+# Special:PasswordReset
+'passwordreset-username' => "Naran uza-na'in:",
+'passwordreset-email' => 'Diresaun korreiu eletróniku:',
+
# Edit page toolbar
'link_tip' => 'Ligasaun ba laran',
'extlink_sample' => "http://www.example.com ligasaun ba li'ur",
@@ -580,8 +583,8 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'booksources-go' => 'Bá',
# Special:Log
-'specialloguserlabel' => "Uza-na'in:",
-'speciallogtitlelabel' => 'Títulu:',
+'specialloguserlabel' => "Uza-na'in ne'ebé halo:",
+'speciallogtitlelabel' => "Objetivu (títulu ka uza-na'in):",
# Special:AllPages
'allpages' => 'Pájina hotu',
@@ -628,13 +631,12 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'emailuser' => "Haruka korreiu eletróniku ba uza-na'in ne'e",
'defemailsubject' => '{{SITENAME}} korreiu eletróniku',
'noemailtitle' => "Lá'os diresaun korreiu eletróniku",
+'emailusername' => "Naran uza-na'in:",
'emailsend' => 'Haruka',
# Watchlist
'watchlist' => "Ha'u-nia lista hateke",
'mywatchlist' => "Ha'u-nia lista hateke",
-'addedwatch' => 'tau tan tiha ba lista hateke',
-'removedwatch' => 'La hateke pájina ona',
'removedwatchtext' => 'La hateke pájina "[[:$1]]" ona (haree [[Special:Watchlist|"lista hateke"]]).',
'watch' => 'Hateke',
'watchthispage' => "Hateke pájina ne'e",
@@ -659,6 +661,7 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'exblank' => 'pájina mamuk',
'delete-legend' => 'Halakon',
'actioncomplete' => 'operasaun remata',
+'deletedtext' => 'Ita foin halakon pájina "$1". Haree $2 ba "operasaun halakon" seluk.',
'deletedarticle' => 'halakon "[[$1]]"',
'dellogpage' => 'Lista halakon',
'deletionlog' => 'lista halakon',
@@ -734,7 +737,6 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
# Block/unblock
'blockip' => "Blokeiu uza-na'in",
'blockip-legend' => "Blokeiu uza-na'in",
-'ipaddress' => 'Diresaun IP:',
'ipbreason' => 'Motivu:',
'ipbreasonotherlist' => 'Motivu seluk',
'ipbsubmit' => "Blokeiu uza-na'in ne'e",
@@ -742,7 +744,7 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'ipboptions' => '2 hours:2 hours,1 loron:1 day,3 Loron:3 days,1 semana:1 week,2 semana:2 weeks,1 fulan:1 month,3 fulan:3 months,6 fulan:6 months,1 tinan:1 year,infinite:infinite',
'ipbotheroption' => 'seluk',
'ipblocklist' => "Uza-na'in sira-ne'ebé la bele edita",
-'ipblocklist-username' => "Naran uza-na'in ka IP:",
+'blocklist-reason' => 'Razaun',
'ipblocklist-submit' => 'Buka',
'anononlyblock' => "ema anónimu de'it",
'blocklink' => 'blokeiu',
@@ -851,26 +853,49 @@ Check your spelling, ka [[Special:UserLogin/signup|kria konta foun]].',
'ilsubmit' => 'Buka',
# EXIF tags
-'exif-make' => 'Fabrikante kámara nian',
-'exif-model' => 'Kámara',
-'exif-artist' => 'Autór',
-'exif-flash' => 'Flax',
+'exif-make' => 'Fabrikante kámara nian',
+'exif-model' => 'Kámara',
+'exif-artist' => 'Autór',
+'exif-flash' => 'Flax',
+'exif-languagecode' => 'Lian',
+'exif-iimcategory' => 'Kategoria',
'exif-meteringmode-255' => 'Seluk',
# Pseudotags used for GPSSpeedRef
'exif-gpsspeed-k' => 'km iha oras',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'kilómetru',
+
+'exif-gpsdop-good' => "Di'ak ($1)",
+
+'exif-dc-date' => 'Data',
+
+'exif-iimcategory-clj' => 'Krime no lei',
+'exif-iimcategory-edu' => 'Edukasaun',
+'exif-iimcategory-evn' => 'Meiu ambiente',
+'exif-iimcategory-hth' => 'Saúde',
+'exif-iimcategory-lab' => 'Traballu',
+'exif-iimcategory-pol' => 'Polítika',
+'exif-iimcategory-rel' => 'Relijiaun no fiar',
+'exif-iimcategory-sci' => 'Siénsia i teknolojia',
+'exif-iimcategory-spo' => 'Desportu',
+'exif-iimcategory-war' => 'Funu no konflitu',
+'exif-iimcategory-wea' => 'Tempu',
+
+'exif-urgency-normal' => 'Normál ($1)',
+'exif-urgency-low' => 'Kraik ($1)',
+'exif-urgency-high' => 'Aas ($1)',
+
# External editor support
-'edit-externally-help' => "(Haree [http://www.mediawiki.org/wiki/Manual:External_editors iha ne'e] ba informasaun barak liu)",
+'edit-externally-help' => "(Haree [//www.mediawiki.org/wiki/Manual:External_editors iha ne'e] ba informasaun barak liu)",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'hotu',
-'imagelistall' => 'hotu',
-'watchlistall2' => 'hotu',
-'namespacesall' => 'hotu',
-'monthsall' => 'hotu',
-'limitall' => 'hotu',
+'watchlistall2' => 'hotu',
+'namespacesall' => 'hotu',
+'monthsall' => 'hotu',
+'limitall' => 'hotu',
# action=purge
'confirm_purge_button' => 'OK',
diff --git a/languages/messages/MessagesTg_cyrl.php b/languages/messages/MessagesTg_cyrl.php
index 01f29f76..491af86f 100644
--- a/languages/messages/MessagesTg_cyrl.php
+++ b/languages/messages/MessagesTg_cyrl.php
@@ -100,8 +100,8 @@ $messages = array(
'tog-shownumberswatching' => 'Ðишон додани шумораи корбарони пайгир',
'tog-oldsig' => 'Пешнамоиши имзои вуҷуддошта:',
'tog-fancysig' => 'Имзоро ба Ñурати викиматн ба назар бигир (бе пайванди худкор)',
-'tog-externaleditor' => 'ИÑтифода аз вироишгари хориҷӣ ба таври пешфарз (фақат барои корбарони пешрафта, ниёзманди танзимоти вижа дар ройонаи шумо аÑÑ‚. [http://www.mediawiki.org/wiki/Manual:External_editors Иттилооти бештар.])',
-'tog-externaldiff' => 'ИÑтифода аз тафовутгири (diff) хориҷӣ ба таври пешфарз (фақат барои корбарони пешрафта, ниёзманди танзимоти вижа дар ройонаи шумо аÑÑ‚. [http://www.mediawiki.org/wiki/Manual:External_editors Иттилооти бештар.])',
+'tog-externaleditor' => 'ИÑтифода аз вироишгари хориҷӣ ба таври пешфарз (фақат барои корбарони пешрафта, ниёзманди танзимоти вижа дар ройонаи шумо аÑÑ‚. [//www.mediawiki.org/wiki/Manual:External_editors Иттилооти бештар.])',
+'tog-externaldiff' => 'ИÑтифода аз тафовутгири (diff) хориҷӣ ба таври пешфарз (фақат барои корбарони пешрафта, ниёзманди танзимоти вижа дар ройонаи шумо аÑÑ‚. [//www.mediawiki.org/wiki/Manual:External_editors Иттилооти бештар.])',
'tog-showjumplinks' => 'Ðамоиши пайвандҳои даÑтраÑии "ҷаҳиш ба" дар феҳриÑти мундариҷот',
'tog-uselivepreview' => 'ИÑтифода аз пешнамоиши зинда (ҶаваСкрипт) (Озмоишӣ)',
'tog-forceeditsummary' => 'Ҳангоме ки хулоÑаи вироиш нанавиштаам юа ман иÑлоҳ бидеҳ',
@@ -197,15 +197,6 @@ $messages = array(
'index-category' => 'Саҳифаҳои намоÑшуда',
'noindex-category' => 'Саҳифаҳои намоиÑнашуда',
-'mainpagetext' => "'''Ðармафзори МедиаВики бо муваффақиÑÑ‚ наÑб шуд.'''",
-'mainpagedocfooter' => 'Ðз [http://meta.wikimedia.org/wiki/Help:Contents Роҳнамои Корбарон] барои иÑтифодаи нармафзори вики кӯмак бигиред.
-
-== Оғоз ба кор ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings ФеҳриÑти танзимоти пайгирбандӣ]
-* [http://www.mediawiki.org/wiki/Manual:FAQ ПурÑишҳои МедиаВики]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce ФеҳриÑти ройномаҳои нуÑхаҳои МедиаВики]',
-
'about' => 'Дар бораи',
'article' => 'Саҳифаи мӯҳтаво',
'newwindow' => '(дар равзанаи ҷадид боз мешавад)',
@@ -255,7 +246,6 @@ $messages = array(
'history' => 'Таърих',
'history_short' => 'Таърих',
'updatedmarker' => 'барӯзшуда аз рӯзи охирин ташрифам',
-'info_short' => 'Иттилоот',
'printableversion' => 'ÐуÑхаи чопӣ',
'permalink' => 'Пайванди доимӣ',
'print' => 'Чоп',
@@ -439,11 +429,10 @@ $1',
'protectedpagetext' => 'Ин Ñаҳифа барои ҷилавгирӣ аз вироиш қуфл шудааÑÑ‚.',
'viewsourcetext' => 'Шумо метавонед матни викии ин Ñаҳифаро назар кунед Ñ‘ нуÑха бардоред:',
'protectedinterface' => 'Ин Ñаҳифа ороишдиҳандаи матни ин нармафзор аÑÑ‚, ва ба манзури пешгирӣ аз харобкорӣ қуфл шудааÑÑ‚.',
-'editinginterface' => "'''Огоҳӣ:''' Шумо Ñаҳифаеро вироиш карда иÑтодаед, ки матни интерфейÑи барнома мебошад. Тағйироти ин Ñаҳифа барои намуди интерфейÑи дигар корбарон таъÑир хоҳад раÑонид. Барои тарҷумаҳо, лутфан аз [http://translatewiki.net/wiki/Main_Page?setlang=tg Бетавики], ки лоиҳаи маҳаликунонии МедиаВики мебошад, иÑтифода кунед.",
+'editinginterface' => "'''Огоҳӣ:''' Шумо Ñаҳифаеро вироиш карда иÑтодаед, ки матни интерфейÑи барнома мебошад. Тағйироти ин Ñаҳифа барои намуди интерфейÑи дигар корбарон таъÑир хоҳад раÑонид. Барои тарҷумаҳо, лутфан аз [//translatewiki.net/wiki/Main_Page?setlang=tg Бетавики], ки лоиҳаи маҳаликунонии МедиаВики мебошад, иÑтифода кунед.",
'sqlhidden' => '(ДаÑтури SQL пинҳониÑÑ‚)',
'cascadeprotected' => 'Ин Ñаҳифа аз вироиш муҳофизат шудааÑÑ‚, барои ин ки дар {{PLURAL:$1|Ñаҳифаи|Ñаҳифаҳои}} муҳофизатшудаи зерин, ки гузаинаи "обшорӣ" дар {{PLURAL:$1|он|онҳо}} интихоб шудааÑÑ‚, фаро гирифтааÑÑ‚: $2',
'namespaceprotected' => "Шумо иҷозати вироиши Ñаҳифаҳои фазоиноми '''$1'''-ро надоред.",
-'customcssjsprotected' => 'Шумо иҷозати вироиши ин Ñаҳифаро надоред, барои он ки он танзимҳои шаÑии Ñк корбари дигареро дар бар мегирад.',
'ns-specialprotected' => 'Саҳифаҳои вижа ғайри қобили вироиш ҳаÑтанд.',
'titleprotected' => "Эҷоди Ñаҳифае бо ин унвон аз тарафи [[User:$1|$1]] ҷилавгирӣ шудааÑÑ‚.
Далели зикршуда аз ин қарор аÑÑ‚ ''$2''.",
@@ -495,7 +484,7 @@ $1',
'loginsuccess' => "'''Шумо акнун ба Википедиа ҳамчун \"\$1\". вуруд кардед'''",
'nosuchuser' => 'Корбаре бо номи "$1" вуҷуд надорад.
Ðмали номро барраÑи кунед, Ñ‘ [[Special:UserLogin/signup|ҳиÑоби ҷадидеро Ñҷод кунед]].',
-'nosuchusershort' => 'Ягон корбаре бо номи "<nowiki>$1</nowiki>" вуҷуд надорад. Тарзи навишти номро Ñанҷед.',
+'nosuchusershort' => 'Ягон корбаре бо номи "$1" вуҷуд надорад. Тарзи навишти номро Ñанҷед.',
'nouserspecified' => 'Шумо боÑд Ñк номи корбарӣ Ð¼ÑƒÑˆÐ°Ñ…Ñ…Ð°Ñ ÐºÑƒÐ½ÐµÐ´.',
'login-userblocked' => 'Ин корбар баÑта шудааÑÑ‚. Вуруд манъ аÑÑ‚.',
'wrongpassword' => 'Калимаи убури нодуруÑÑ‚ дохил карда шуд. Бори дигар Ñанҷед.',
@@ -534,7 +523,7 @@ $1',
Лутфан пеш аз он, ки дубора талош кунед, Ñабр кунед.',
'loginlanguagelabel' => 'Забон: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Сифр кардани калимаи убурӣ ҳиÑоби корбарӣ',
'resetpass_announce' => 'Шумо бо коди мувақатӣ ба ÑиÑтем вуруд шудаед. Барои анҷом додани вурудшавӣ, шумо боÑд калимаи убурӣ ҷадидро инҷо ворид кунед:',
'resetpass_header' => 'Тағйири гузарвожаи ҳиÑоб',
@@ -550,6 +539,9 @@ $1',
Мумкин аÑÑ‚, ки шумо аллакай гузарвожаатонро бо муваффақиÑÑ‚ тағйир дода бошед Ñ‘ дархоÑти Ñк гузарвожаи мувақатӣ карда бошед.',
'resetpass-temp-password' => 'Гузарвожаи муваққатӣ:',
+# Special:PasswordReset
+'passwordreset-username' => 'Ðоми корбарӣ',
+
# Edit page toolbar
'bold_sample' => 'Матни пурранг',
'bold_tip' => 'Матни пурранг',
@@ -561,8 +553,6 @@ $1',
'extlink_tip' => 'Пайванди беруна (пешванди http:// фаромӯш накунед)',
'headline_sample' => 'Матни унвон',
'headline_tip' => 'Унвони Ñатҳи 2',
-'math_sample' => 'Илова кардани формула дар инҷо',
-'math_tip' => 'Формулаи риёзӣ (LaTeX)',
'nowiki_sample' => 'Инҷо матни қолаббанди-нашударо дохил кунед',
'nowiki_tip' => 'Рад кардани қолаббандии вики',
'image_tip' => 'ТаÑвири дохили матн',
@@ -637,7 +627,7 @@ $1',
Шумо метавонед дар дигар Ñаҳифаҳо [[Special:Search/{{PAGENAME}}|унвони ин Ñаҳифаро ҷуÑтуҷӯ кунед]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} гузоришҳои алоқамандро ҷуÑтуҷӯ намоед],
Ñ‘ [{{fullurl:{{FULLPAGENAME}}|action=edit}} ин Ñаҳифаро вироиш кунед]</span>.',
-'userpage-userdoesnotexist' => 'ҲиÑоби корбар "$1" Ñабт нашудааÑÑ‚. Итминон ҳоÑил кунед ки мехоҳед ин Ñаҳифаро Ñчод Ñ‘ вироиш кунед.',
+'userpage-userdoesnotexist' => 'ҲиÑоби корбар "<nowiki>$1</nowiki>" Ñабт нашудааÑÑ‚. Итминон ҳоÑил кунед ки мехоҳед ин Ñаҳифаро Ñчод Ñ‘ вироиш кунед.',
'clearyourcache' => "'''Эзоҳ:''' ÐŸÐ°Ñ Ð°Ð· захираÑозӣ мумкин аÑÑ‚ барои дидани тағйирот ниёз бошад, ки ҳофизаи ниҳонии мурургари худро холӣ кунед. '''Мозилла / Ð¤Ð°Ð¹ÐµÑ€Ñ„Ð¾ÐºÑ / Сафари:''' калиди ''Shift''-ро нигоҳ доред ва рӯи тугмаи ''Reload'' клик кунед, Ñ‘ калидҳои ''Ctrl-Shift-R'' (''Cmd-Shift-R'' дар Эппл Макинтош) бо ҳам фишор диҳед; '''IE:''' калиди ''Ctrl'' нигоҳ доред ва рӯи тугмаи ''Refresh'' клик кунед, Ñ‘ калидҳои ''Ctrl-F5'' бо ҳам фишор диҳед; '''Konqueror:''': тугмаи ''Reload''-ро оддӣ клик кунед, Ñ‘ калиди ''F5'' фишор диҳед; Ба корбарони '''Opera''' мумкин аÑÑ‚ лозим бошад, ки ҳофизаи ниҳонии худро комилан дар ''Tools→Preferences'' холӣ кунанд.",
'usercssyoucanpreview' => "'''Эзоҳ:''' Пеш парвандаи CSS Ñ‘ JS худро захира кунед, бо иÑтифода аз тугмаи \"Пешнамоиш\" метавонед онро озмоиш кунед.",
'userjsyoucanpreview' => "'''Эзоҳ:''' Пеш парвандаи CSS Ñ‘ JS худро захира кунед, бо иÑтифода аз тугмаи \"Пешнамоиш\" метавонед онро озмоиш кунед.",
@@ -896,7 +886,6 @@ $1',
'changepassword' => 'Иваз намудани калимаи убур',
'prefs-skin' => 'ПӯÑÑ‚',
'skin-preview' => 'Пешнамоиш',
-'prefs-math' => 'Риёзиёт',
'datedefault' => 'Бе тарҷиҳ',
'prefs-datetime' => 'Сана ва вақт',
'prefs-personal' => 'Додаҳои корбар',
@@ -914,8 +903,6 @@ $1',
'columns' => 'Теъдоди Ñутунҳо:',
'searchresultshead' => 'ҶуÑтуҷӯ',
'resultsperpage' => 'Теъдоди натоиҷ дар ҳар Ñаҳифа:',
-'contextlines' => 'Теъдоди Ñатрҳо дар ҳар натиҷа:',
-'contextchars' => 'Теъдоди навиштаҳо атрофи дар Ñатр:',
'stub-threshold' => 'ОÑтонаи вироиши пайвандҳои <a href="#" class="stub">ноқиÑ</a>:',
'recentchangesdays' => 'Теъдоди рӯзҳои намоиш додашуда дар тағйироти охир:',
'recentchangescount' => 'Теъдоди вироишҳо барои намоиш дар тағйироти охир:',
@@ -1158,10 +1145,6 @@ $1',
'upload-maxfilesize' => 'Бузургтарин андозаи парванда: $1',
'watchthisupload' => 'Пайгирии ин Ñаҳифа',
'filewasdeleted' => 'Парвандае бо ҳамин ном пештар боргузорӣ ва Ð¿Ð°Ñ Ð°Ð· он пок шудааÑÑ‚. Пеш аз боргузорӣ ба $1 нигаред.',
-'upload-wasdeleted' => "'''Ҳушдор: Шумо дар ҳоли боргузории парвандае ҳаÑтед, ки пеш аз ин ҳазф шудааÑÑ‚.'''
-
-Шумо боÑд биандешед, ки оё давом додани боргузории ин парванда муноÑиб аÑÑ‚ Ñ‘ на.
-Гузориши ҳазфи марбут ба ин парванда дар зер оварда шудааÑÑ‚:",
'filename-bad-prefix' => "Ðоми парвандае, ки шумо боргузори карданиед бо '''\"\$1\"''' оғоз мешавад, ки Ñк пешванди махÑуÑи акÑҳои Ñабтшуда таваÑÑути акÑбардоракҳои рақамӣ аÑÑ‚. Лутфан номи беҳтари тавÑифотӣ барои парванда интихоб кунед.",
'upload-success-subj' => 'ФириÑтодан бомуваффақиÑÑ‚',
@@ -1461,13 +1444,11 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlistanontext' => 'Лутфан барои мушоҳида ва вироиши феҳриÑти пайгириҳои худ аз $1 иÑтифода кунед.',
'watchnologin' => 'Вуруд нашуда',
'watchnologintext' => 'Барои тағйири феҳриÑти пайгириҳои худ боÑд [[Special:UserLogin|ба ÑиÑтем ворид шавед]].',
-'addedwatch' => 'Ба феҳриÑти пайгириҳо илова карда шуд',
'addedwatchtext' => "Ин Ñаҳифа \"[[:\$1]]\" ва [[Special:Watchlist|феҳриÑти назароти]] Шумо илова шуд.
Дигаргуниҳои оÑндаи ин Ñаҳифа ва Ñаҳифи баҳÑи алоқаманд дар рӯихати онҷо хоҳад шуд,
ва Ñаҳифа '''ғафÑ''' дар [[Special:RecentChanges|рӯихати тағйироти охирин]] барои бо оÑони дарёфт кардан хоҳад ба назар раÑид.
Ðгар шумо дертар аз феҳриÑти назаротатон ин Ñаҳифаро ҳазв кардан хоҳед, дар меню \"Ðазар накардан\"-ро пахш кунед.",
-'removedwatch' => 'Ðз феҳриÑти пайгириҳо бардошта шуд',
'removedwatchtext' => 'Саҳифаи "[[:$1]]" аз [[Special:Watchlist|феҳриÑти пайгириҳои шумо]] бардошта шуд.',
'watch' => 'Ðазар кардан',
'watchthispage' => 'Пайгирии ин Ñаҳифа',
@@ -1520,10 +1501,10 @@ $NEWPAGE
--
Барои танзимоти феҳриÑти пайгириҳоÑтон биравед ба
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Пешниҳодот ва кӯмаки бештар:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Ҳазфи Ñаҳифа',
@@ -1537,7 +1518,7 @@ $NEWPAGE
'historywarning' => 'Ҳушдор: Саҳифае ки шумо ҳазф карданиед, таърих дорад:',
'confirmdeletetext' => 'Шумо дар ҳоли ҳазф кардани Ñк Ñаҳифа Ñ‘ акÑе аз пойгоҳ дода ҳамроҳ бо тамоми таърихи он ҳаÑтед. Лутфан ин амалро таÑдиқ кунед ва итминон ҳоÑил кунед, ки оқибати ин корро медонед ва ин амалро мутобиқи [[{{MediaWiki:Policy-url}}|ÑиёÑати ҳазф]] анҷом медиҳед.',
'actioncomplete' => 'Ðмал иҷро шуд',
-'deletedtext' => '"<nowiki>$1</nowiki>" ҳазф шудааÑÑ‚.
+'deletedtext' => '"$1" ҳазф шудааÑÑ‚.
Ðигаред ба $2 барои гузориши ҳазфи охирин.',
'deletedarticle' => 'ҳазфшуда "[[$1]]"',
'suppressedarticle' => '"[[$1]]"-ро мавқуф кард',
@@ -1585,7 +1566,7 @@ $NEWPAGE
'protectexpiry' => 'Замони Ñаромадан:',
'protect_expiry_invalid' => 'Замони Ñаромадан номӯътабар аÑÑ‚.',
'protect_expiry_old' => 'Замони Ñаромадан дар гузашта аÑÑ‚.',
-'protect-text' => "Шумо инҷо Ñатҳи муҳофизати Ñаҳифаи '''<nowiki>$1</nowiki>''' метавонед нигаред Ñ‘ тағйир диҳед",
+'protect-text' => "Шумо инҷо Ñатҳи муҳофизати Ñаҳифаи '''$1''' метавонед нигаред Ñ‘ тағйир диҳед",
'protect-locked-blocked' => "Шумо муддате, ки даÑтарÑиатон қатъ аÑÑ‚ наметавонед Ñатҳи ҳифзи Ñаҳифаҳоро тагйир диҳед. Танзимоти феълии Ñаҳифаи '''$1''' ба ин қарор аÑÑ‚:",
'protect-locked-dblock' => "Ðз Ñабаби қуфл шудани пойгоҳи дода, имкони тағйири Ñатҳи ҳифзи Ñаҳифа вуҷуд надорад.
Танзимоти феълии Ñаҳифаи '''$1''' ба ин қарор аÑÑ‚:",
@@ -1712,7 +1693,6 @@ $1',
'blockiptext' => 'Барои баÑтани даÑтраÑии вироиши нишонаи IP Ñ‘ номи корбарӣ Ð¼ÑƒÑˆÐ°Ñ…Ñ…Ð°Ñ Ð°Ð· форми зерин иÑтифода кунед.
Ин кор фақат боÑд барои ҷилавгирӣ аз харобкори ва мувофиқи бо [[{{MediaWiki:Policy-url}}|ÑиёÑати қатъи даÑтраÑÓ£]] анҷом шавад.
Далели Ð¼ÑƒÑˆÐ°Ñ…Ñ…Ð°Ñ Ð±Ð°Ñ€Ð¾Ð¸ ин корро дар зер зикр кунед (барои миÑол, зикри Ñаҳифаҳое, ки харобкорӣ шудаанд).',
-'ipaddress' => 'Ðишонаи IP:',
'ipadressorusername' => 'IP нишона ё номи корбар:',
'ipbexpiry' => 'Хотима:',
'ipbreason' => 'Сабаб:',
@@ -1725,7 +1705,6 @@ $1',
** Рафтори баъд/маÑхаракунии дигар корбарон
** СӯииÑтифода аз чанд ҳиÑоби корбарӣ
** Ðоми корбарии номуноÑиб',
-'ipbanononly' => 'Фақат баÑтани корбарони гумном',
'ipbcreateaccount' => 'Ҷилавгирӣ аз Ñҷоди ҳиÑоб',
'ipbemailban' => 'Ҷилавгирии корбар аз фириÑтодани почтаи Ñлектронӣ',
'ipbenableautoblock' => 'Ðишонаи охире ки аз он ин корбар иÑтифода мекунад, ба Ñурати худкор бубанд, ва дигар нишонаҳои IP-ҳои баъдина, ки аз онҳо метавонад вироиш кунанд',
@@ -1750,9 +1729,7 @@ $1',
'unblocked-id' => 'Қатъи даÑтраÑии шумораи $1 хотима Ñ‘Ñ„Ñ‚',
'ipblocklist' => 'IP нишонаҳо ва номҳои корбарии баÑта шуда',
'ipblocklist-legend' => 'ҶуÑтуҷӯи корбари баÑта шуда',
-'ipblocklist-username' => 'Ðоми корбарӣ Ñ‘ нишонаи IP:',
'ipblocklist-submit' => 'ҶуÑтуҷӯ',
-'blocklistline' => '$1, $2 ро баÑÑ‚ $3 ($4)',
'infiniteblock' => 'бе поён',
'expiringblock' => '$1 $2 ба поён мераÑад',
'anononlyblock' => 'фақат корбарони гумном',
@@ -1770,7 +1747,7 @@ $1',
'blocklogentry' => 'баÑта шуд [[$1]] бо вақти Ñаромадан $2 $3',
'blocklogtext' => 'Ин гузориш аз амали баÑтан ва боз кардани корбарон аÑÑ‚.
Ðишонаҳои IP-и бо таври худкор баÑта шуда, феҳриÑÑ‚ нашудаанд.
-Барои феҳриÑти маҳрумиÑтҳо ва баÑта шуданҳои амалиёти кунунӣ ба [[Special:IPBlockList|феҳриÑти IP-ҳои баÑта]] муроҷиат кунед.',
+Барои феҳриÑти маҳрумиÑтҳо ва баÑта шуданҳои амалиёти кунунӣ ба [[Special:BlockList|феҳриÑти IP-ҳои баÑта]] муроҷиат кунед.',
'unblocklogentry' => '$1 боз шуд',
'block-log-flags-anononly' => 'фақат корбарони гумном',
'block-log-flags-nocreate' => 'қобилиÑти Ñҷоди ҳиÑоб ғайрифаъол шуд',
@@ -1897,7 +1874,7 @@ $1',
'allmessagesdefault' => 'Матни қарордодӣ',
'allmessagescurrent' => 'Матни кунунӣ',
'allmessagestext' => 'Ин феҳриÑти паёмҳои ÑиÑтемавии даÑÑ‚Ñ€Ð°Ñ Ð´Ð°Ñ€ фазои номи MediaWiki мебошад.
-Ðгар майли ҳиÑÑагузорӣ карданро ба маҳалликунонии MediaWiki доред, Ð¿Ð°Ñ Ð»ÑƒÑ‚Ð°Ð½ Ñаҳифаҳои [http://www.mediawiki.org/wiki/Localisation Маҳалликунонии MediaWiki] ва [http://translatewiki.net translatewiki.net] нигаред.',
+Ðгар майли ҳиÑÑагузорӣ карданро ба маҳалликунонии MediaWiki доред, Ð¿Ð°Ñ Ð»ÑƒÑ‚Ð°Ð½ Ñаҳифаҳои [//www.mediawiki.org/wiki/Localisation Маҳалликунонии MediaWiki] ва [//translatewiki.net translatewiki.net] нигаред.',
'allmessagesnotsupportedDB' => "Ðз ин Ñаҳифа наметавон иÑтифода бурд, чун '''\$wgUseDatabaseMessages''' ғайрифаъол гардонида шудааÑÑ‚.",
'allmessages-filter-legend' => 'Филтр',
'allmessages-filter-all' => 'Ҳама',
@@ -2022,9 +1999,7 @@ $1',
Ин имкони илова кардани Ñк Ñабаберо дар хулоÑа медиҳад.',
# Metadata
-'nodublincore' => 'Метадода Dublin Core RDF барои ин коргузор ғайри фаъол шудааÑÑ‚.',
-'nocreativecommons' => 'Метадодаи Creative Commons RDF барои ин коргузор ғайри фаъол шудааÑÑ‚.',
-'notacceptable' => 'Коргузори ин вики аз ирÑоли дода ба шакле ки барномаи шумо битавонад намоиш диҳад, пешкаш карда наметавонад.',
+'notacceptable' => 'Коргузори ин вики аз ирÑоли дода ба шакле ки барномаи шумо битавонад намоиш диҳад, пешкаш карда наметавонад.',
# Attribution
'anonymous' => '{{PLURAL:$1|корбари|корбарони}} гумномӣ {{SITENAME}}',
@@ -2045,33 +2020,6 @@ $1',
'spam_reverting' => 'Вогардони ба охирин нуÑхае, ки пайванде ба $1 надорад',
'spam_blanking' => 'Ҳамаи нуÑхаҳои пайвандҳо $1 доштан, дар ҳоли холӣ кардан',
-# Info page
-'infosubtitle' => 'Иттилоот дар мавриди Ñаҳифа',
-'numedits' => 'Теъдоди вироишҳо (Ñаҳифа): $1',
-'numtalkedits' => 'Теъдоди вироишҳо (Ñаҳифаи баҳÑ): $1',
-'numwatchers' => 'Шумораи пайгирикунандагон: $1',
-'numauthors' => 'Теъдоди муаллифони мухталиф (мақола): $1',
-'numtalkauthors' => 'Теъдоди муаллифони мухталиф (Ñаҳифаи баҳÑ): $1',
-
-# Math options
-'mw_math_png' => 'Ҳамеша PNG кашида шавад',
-'mw_math_simple' => 'Ðгар хеле Ñодда HTML вагарна PNG',
-'mw_math_html' => 'Ðз рӯи имкон HTML вагарна PNG',
-'mw_math_source' => 'Ҳамчун TeX боқӣ бимон (барои мурургарҳои матнӣ)',
-'mw_math_modern' => 'ТавÑеҳ шуда барои мурургарҳои замонавӣ',
-'mw_math_mathml' => 'ИÑтифода аз MathML дар Ñурати имкон (озмоишӣ)',
-
-# Math errors
-'math_failure' => 'ШикаÑÑ‚ дар таҷзеҳ',
-'math_unknown_error' => 'хатои ношиноÑ',
-'math_unknown_function' => 'амали номаълум',
-'math_lexing_error' => 'хатои lexing',
-'math_syntax_error' => 'хатои наҳвӣ',
-'math_image_error' => 'Табдил ба PNG шикаÑÑ‚ хӯр; наÑби дуруÑти latex, dvips, gs, ва табдилотро барраÑÓ£ кунед',
-'math_bad_tmpdir' => 'Имкони Ñҷод Ñ‘ навиÑтани иттилоот дар пӯшаи муваққатии риёзӣ (temp) вуҷуд надорад',
-'math_bad_output' => 'Имкони Ñҷод Ñ‘ навиÑтани иттилоот дар пӯшаи хуруҷии риёзӣ (output) вуҷуд надорад',
-'math_notexvc' => 'Барномаи ичроии texvc мавҷуд неÑÑ‚; барои иттилооти бештар ба math/README нигаред.',
-
# Patrolling
'markaspatrolleddiff' => 'Ба унвони барраÑишуда аломат бизан',
'markaspatrolledtext' => 'Ин мақоларо ба унвони барраÑишуда аломат бизан',
@@ -2104,17 +2052,16 @@ $1',
'nextdiff' => 'Тафовути навтар →',
# Media information
-'mediawarning' => "'''Ҳушдор''': Ин парванда мумкин аÑÑ‚ рамзҳои бадқаÑдро дар бар гирад.
+'mediawarning' => "'''Ҳушдор''': Ин парванда мумкин аÑÑ‚ рамзҳои бадқаÑдро дар бар гирад.
Бо иҷрои он, ÑиÑтемаи шумо шоÑд оÑеб бубинад.",
-'imagemaxsize' => 'Маҳуд кардани акÑҳо дар Ñаҳифаҳои тавÑифоти парванда ба:',
-'thumbsize' => 'Ðндозаи ангуштдона (thumbnail):',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Ñаҳифа|Ñаҳифаҳо}}',
-'file-info' => 'андозаи парванда: $1, навъи MIME: $2',
-'file-info-size' => '$1 × $2 пикÑел, ҳаҷми парванда: $3, навъи MIME: $4',
-'file-nohires' => '<small>ÐуÑхаи ҳаҷман ва Ñифатан баландтар даÑÑ‚Ñ€Ð°Ñ Ð½ÐµÑÑ‚.</small>',
-'svg-long-desc' => 'SVG парванда, иÑмӣ $1 × $2 пикÑел, андозаи парванда: $3',
-'show-big-image' => 'ÐкÑи пурра',
-'show-big-image-thumb' => '<small>Ðндозаи ин пешнамоиш: $1 × $2 пикÑел</small>',
+'imagemaxsize' => 'Маҳуд кардани акÑҳо дар Ñаҳифаҳои тавÑифоти парванда ба:',
+'thumbsize' => 'Ðндозаи ангуштдона (thumbnail):',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|Ñаҳифа|Ñаҳифаҳо}}',
+'file-info' => 'андозаи парванда: $1, навъи MIME: $2',
+'file-info-size' => '$1 × $2 пикÑел, ҳаҷми парванда: $3, навъи MIME: $4',
+'file-nohires' => '<small>ÐуÑхаи ҳаҷман ва Ñифатан баландтар даÑÑ‚Ñ€Ð°Ñ Ð½ÐµÑÑ‚.</small>',
+'svg-long-desc' => 'SVG парванда, иÑмӣ $1 × $2 пикÑел, андозаи парванда: $3',
+'show-big-image' => 'ÐкÑи пурра',
# Special:NewFiles
'newimages' => 'Ðамоишгоҳи парвандаҳои ҷадид',
@@ -2148,7 +2095,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'ВаÑеъӣ',
@@ -2163,13 +2116,11 @@ $1',
'exif-ycbcrpositioning' => 'МавқеиÑти Y ва C',
'exif-xresolution' => 'Таҳлилпазирии уфуқӣ',
'exif-yresolution' => 'Таҳлилпазирии амудӣ',
-'exif-resolutionunit' => 'Воҳиди тафкикпазирии X ва Y',
'exif-stripoffsets' => 'Ҷойгоҳи додаҳои акÑ',
'exif-rowsperstrip' => 'Теъдоди радифҳо дар ҳар навор',
'exif-stripbytecounts' => 'Байт дар ҳар навори фишурда',
'exif-jpeginterchangeformat' => 'Ҷабъаи ҷойи ниÑбат ба JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Байт додаи JPEG',
-'exif-transferfunction' => 'ТобеиÑти табдил',
'exif-whitepoint' => 'Рангинагии нуқтаи Ñафед',
'exif-primarychromaticities' => 'Рангпазирии аввалиÑтҳо',
'exif-ycbcrcoefficients' => 'Зарбкунандаҳои матриÑи табдили фазои ранг',
@@ -2188,7 +2139,6 @@ $1',
'exif-compressedbitsperpixel' => 'Ҳолати фишурдаÑозии акÑ',
'exif-pixelydimension' => 'Ðрзи акÑи мӯътабар',
'exif-pixelxdimension' => 'Тӯли акÑи мӯътабар',
-'exif-makernote' => 'Тавзеҳоти ширкати Ñозанда',
'exif-usercomment' => 'Тавзеҳоти корбар',
'exif-relatedsoundfile' => 'Парвандаи Ñабти алоқаманд',
'exif-datetimeoriginal' => 'Таърих ва вақти тавлиди додаҳо',
@@ -2202,7 +2152,6 @@ $1',
'exif-exposureprogram' => 'Барномаи Ðурдиҳӣ',
'exif-spectralsensitivity' => 'ҲаÑоÑиÑти тифӣ',
'exif-isospeedratings' => 'Дараҷабандии Ñуръати ISO',
-'exif-oecf' => 'Ðмали табдили нурӣ-Ñлектронӣ',
'exif-shutterspeedvalue' => 'Суръати парда',
'exif-aperturevalue' => 'Ðндозаи диафрагм',
'exif-brightnessvalue' => 'Равшанӣ',
@@ -2215,7 +2164,6 @@ $1',
'exif-focallength' => 'ФоÑилаи марказии адаÑÓ£',
'exif-subjectarea' => 'МаÑоҳати ҷиÑм',
'exif-flashenergy' => 'Қудрати флеш',
-'exif-spatialfrequencyresponse' => 'ПоÑухи фоÑилаи фазогӣ',
'exif-focalplanexresolution' => 'Сафҳаи марказии X тафкикпазирӣ',
'exif-focalplaneyresolution' => 'Сафҳаи марказии Y тафкикпазирӣ',
'exif-focalplaneresolutionunit' => 'Воҳиди тафкикпазирии Ñафҳаи марказӣ',
@@ -2224,7 +2172,6 @@ $1',
'exif-sensingmethod' => 'Равиши ҳиÑгарӣ',
'exif-filesource' => 'Манбаи парванда',
'exif-scenetype' => 'Ðавъи Ñаҳна',
-'exif-cfapattern' => 'Қолаби CFA',
'exif-customrendered' => 'Пардозиши акÑ',
'exif-exposuremode' => 'Ҳолати нурдиҳӣ',
'exif-whitebalance' => 'Мувозинаи ранги Ñафед',
@@ -2403,15 +2350,13 @@ $1',
# External editor support
'edit-externally' => 'Ин файлро бо барномаи беруна таҳрир кунед',
-'edit-externally-help' => '(Барои иттилооти бештар [http://www.mediawiki.org/wiki/Manual:External_editors роҳнамои танзимотро оиди вироишгарони беруна] нигаред)',
+'edit-externally-help' => '(Барои иттилооти бештар [//www.mediawiki.org/wiki/Manual:External_editors роҳнамои танзимотро оиди вироишгарони беруна] нигаред)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ҳама',
-'imagelistall' => 'ҳама',
-'watchlistall2' => 'ҳама',
-'namespacesall' => 'ҳама',
-'monthsall' => 'ҳама',
-'limitall' => 'ҳама',
+'watchlistall2' => 'ҳама',
+'namespacesall' => 'ҳама',
+'monthsall' => 'ҳама',
+'limitall' => 'ҳама',
# E-mail address confirmation
'confirmemail' => 'ТаÑдиқи нишонаи почтаи Ñлектронӣ',
@@ -2525,13 +2470,13 @@ $1',
'watchlistedit-normal-legend' => 'Ҳазфи унвонҳо аз феҳриÑти пайгириҳо',
'watchlistedit-normal-explain' => 'Унвонҳои мавҷуд дар феҳриÑти пайгириҳои шумо дар поён намоиш дода шудаанд.
Барои ҳазфи Ñк унвон, ҷаъбаи кӯчаки канори онро тик бизанид.
-Шумо метавонед [[Special:Watchlist/raw|феҳриÑти хоми пайгириҳоро вироиш кунед]].',
+Шумо метавонед [[Special:EditWatchlist/raw|феҳриÑти хоми пайгириҳоро вироиш кунед]].',
'watchlistedit-normal-submit' => 'Унвонҳо ҳазф шаванд',
'watchlistedit-normal-done' => '$1 унвон аз феҳриÑти пайгириҳои шумо ҳазф {{PLURAL:$1|шуд|шуданд}}:',
'watchlistedit-raw-title' => 'Вироиши феҳриÑти хомӣ пайгириҳо',
'watchlistedit-raw-legend' => 'Вироиши феҳриÑти хомӣ пайгириҳо',
'watchlistedit-raw-explain' => 'Унвонҳои мавҷуд дар феҳриÑти пайгириҳои шумо дар зер нишон дода шудаанд, ва шумо метавонед маворидро ҳазф Ñ‘ изофа кунед; Ñк унвон дар ҳар Ñатр боÑд қарор бигирад. Дар поён, тугмаи "Ба рӯзраÑонии пайгириҳо"-ро фишор диҳед.
-Таваҷҷӯҳ кунед, ки шумо метавонед аз [[Special:Watchlist/edit|вироишгари Ñтандартии феҳриÑти пайгириҳо]] иÑтифода кунед.',
+Таваҷҷӯҳ кунед, ки шумо метавонед аз [[Special:EditWatchlist|вироишгари Ñтандартии феҳриÑти пайгириҳо]] иÑтифода кунед.',
'watchlistedit-raw-titles' => 'Унвонҳо:',
'watchlistedit-raw-submit' => 'Ба рӯз раÑонидани пайгириҳо',
'watchlistedit-raw-done' => 'ФеҳриÑти пайгириҳои шумо ба рӯз шуд.',
@@ -2561,25 +2506,24 @@ $1',
'unknown_extension_tag' => 'БачаÑби ношиноÑи афзунаи "$1"',
# Special:Version
-'version' => 'ÐуÑхаи Медиавики',
-'version-extensions' => 'Ðфзунаҳои наÑбшуда',
-'version-specialpages' => 'Саҳифаҳои вижа',
-'version-parserhooks' => 'Қолабҳои таҷзеҳгар',
-'version-variables' => 'Мутағйирҳо',
-'version-other' => 'Дигар',
-'version-mediahandlers' => 'БадаÑтгирандаҳои раÑонаҳо',
-'version-hooks' => 'Қолабҳо',
-'version-extension-functions' => 'Ðмалгарҳои афзуна',
-'version-parser-extensiontags' => 'БарчаÑбҳои афзунаҳои таҷзеҳгар',
-'version-parser-function-hooks' => 'Қолабҳои амалгарҳои таҷзеҳгар',
-'version-skin-extension-functions' => 'Ðмалгарҳои афзунаҳои пӯÑÑ‚',
-'version-hook-name' => 'Ðоми қолаб',
-'version-hook-subscribedby' => 'Воридшуда таваÑÑути',
-'version-version' => '(ÐуÑха $1)',
-'version-license' => 'Иҷозатнома',
-'version-software' => 'ÐуÑхаи наÑбшуда',
-'version-software-product' => 'МаҳÑул',
-'version-software-version' => 'ÐуÑха',
+'version' => 'ÐуÑхаи Медиавики',
+'version-extensions' => 'Ðфзунаҳои наÑбшуда',
+'version-specialpages' => 'Саҳифаҳои вижа',
+'version-parserhooks' => 'Қолабҳои таҷзеҳгар',
+'version-variables' => 'Мутағйирҳо',
+'version-other' => 'Дигар',
+'version-mediahandlers' => 'БадаÑтгирандаҳои раÑонаҳо',
+'version-hooks' => 'Қолабҳо',
+'version-extension-functions' => 'Ðмалгарҳои афзуна',
+'version-parser-extensiontags' => 'БарчаÑбҳои афзунаҳои таҷзеҳгар',
+'version-parser-function-hooks' => 'Қолабҳои амалгарҳои таҷзеҳгар',
+'version-hook-name' => 'Ðоми қолаб',
+'version-hook-subscribedby' => 'Воридшуда таваÑÑути',
+'version-version' => '(ÐуÑха $1)',
+'version-license' => 'Иҷозатнома',
+'version-software' => 'ÐуÑхаи наÑбшуда',
+'version-software-product' => 'МаҳÑул',
+'version-software-version' => 'ÐуÑха',
# Special:FilePath
'filepath' => 'МаÑири парванда',
@@ -2592,9 +2536,7 @@ $1',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'ҶуÑтуҷӯ барои парвандаҳои такрорӣ',
-'fileduplicatesearch-summary' => 'ҶуÑтуҷӯ барои парвандаҳои такрорӣ бар аÑоÑи миқдори дар ҳам шудаи онҳо Ñурат мегирад.
-
-Ðоми парвандаро бе пешванди "{{ns:file}}:" ворид кунед.',
+'fileduplicatesearch-summary' => 'ҶуÑтуҷӯ барои парвандаҳои такрорӣ бар аÑоÑи миқдори дар ҳам шудаи онҳо Ñурат мегирад.',
'fileduplicatesearch-legend' => 'ҶуÑтуҷӯи мавориди такрорӣ',
'fileduplicatesearch-filename' => 'Ðоми парванда:',
'fileduplicatesearch-submit' => 'ҶуÑтуҷӯ',
diff --git a/languages/messages/MessagesTg_latn.php b/languages/messages/MessagesTg_latn.php
index 26b2eef5..911e0928 100644
--- a/languages/messages/MessagesTg_latn.php
+++ b/languages/messages/MessagesTg_latn.php
@@ -139,15 +139,6 @@ $messages = array(
'index-category' => 'Sahifahoi namojaÅŸuda',
'noindex-category' => 'Sahifahoi namoijanaÅŸuda',
-'mainpagetext' => "'''Narmafzori MediaViki bo muvaffaqijat nasb ÅŸud.'''",
-'mainpagedocfooter' => 'Az [http://meta.wikimedia.org/wiki/Help:Contents Rohnamoi Korbaron] baroi istifodai narmafzori viki kūmak bigired.
-
-== OÆ£oz ba kor ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Fehristi tanzimoti pajgirbandī]
-* [http://www.mediawiki.org/wiki/Manual:FAQ PursiÅŸhoi MediaViki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Fehristi rojnomahoi nusxahoi MediaViki]',
-
'about' => 'Dar borai',
'article' => 'Sahifai mūhtavo',
'newwindow' => '(dar ravzanai çadid boz meşavad)',
@@ -197,7 +188,6 @@ $messages = array(
'history' => "Ta'rix",
'history_short' => "Ta'rix",
'updatedmarker' => 'barūzşuda az rūzi oxirin taşrifam',
-'info_short' => 'Ittiloot',
'printableversion' => 'Nusxai copī',
'permalink' => 'Pajvandi doimī',
'print' => 'Cop',
@@ -367,7 +357,6 @@ Pursuçū: $2',
'sqlhidden' => '(Dasturi SQL pinhonist)',
'cascadeprotected' => 'In sahifa az viroiş muhofizat şudaast, baroi in ki dar {{PLURAL:$1|sahifai|sahifahoi}} muhofizatşudai zerin, ki guzainai "obşorī" dar {{PLURAL:$1|on|onho}} intixob şudaast, faro giriftaast: $2',
'namespaceprotected' => "Şumo içozati viroişi sahifahoi fazoinomi '''$1'''-ro nadored.",
-'customcssjsprotected' => 'Şumo içozati viroişi in sahifaro nadored, baroi on ki on tanzimhoi şasiji jak korbari digarero dar bar megirad.',
'ns-specialprotected' => 'Sahifahoi viƶa ƣajri qobili viroiş hastand.',
'titleprotected' => "Eçodi sahifae bo in unvon az tarafi [[User:$1|$1]] çilavgirī şudaast.
Daleli zikrÅŸuda az in qaror ast ''$2''.",
@@ -417,7 +406,7 @@ Nomi digareroro intixob kuned.',
'loginsuccess' => "'''Åžumo aknun ba Vikipedia hamcun \"\$1\". vurud karded'''",
'nosuchuser' => 'Korbare bo nomi "$1" vuçud nadorad.
Amali nomro barrasi kuned, jo [[Special:UserLogin/signup|hisobi çadidero eçod kuned]].',
-'nosuchusershort' => 'Jagon korbare bo nomi "<nowiki>$1</nowiki>" vuçud nadorad. Tarzi navişti nomro sançed.',
+'nosuchusershort' => 'Jagon korbare bo nomi "$1" vuçud nadorad. Tarzi navişti nomro sançed.',
'nouserspecified' => 'Şumo bojad jak nomi korbarī muşaxxas kuned.',
'wrongpassword' => 'Kalimai uburi nodurust doxil karda şud. Bori digar sançed.',
'wrongpasswordempty' => 'Kalimai uburi doxil şuda xolī ast. Bori digar sançed.',
@@ -446,7 +435,7 @@ Agar in hisob iÅŸtibohe soxta ÅŸudaast, in nomaro nodida bigired.',
Lutfan peÅŸ az on, ki dubora taloÅŸ kuned, sabr kuned.',
'loginlanguagelabel' => 'Zabon: $1',
-# Password reset dialog
+# Change password dialog
'resetpass_announce' => 'Şumo bo kodi muvaqatī ba sistem vurud şudaed. Baroi ançom dodani vurudşavī, şumo bojad kalimai uburī çadidro inço vorid kuned:',
'resetpass_header' => 'Taƣjiri guzarvoƶai hisob',
'oldpassword' => 'Kalimai kūhnai ubur:',
@@ -471,8 +460,6 @@ Mumkin ast, ki şumo allakaj guzarvoƶaatonro bo muvaffaqijat taƣjir doda boşe
'extlink_tip' => 'Pajvandi beruna (peşvandi http:// faromūş nakuned)',
'headline_sample' => 'Matni unvon',
'headline_tip' => 'Unvoni sathi 2',
-'math_sample' => 'Ilova kardani formula dar inço',
-'math_tip' => 'Formulai rijozī (LaTeX)',
'nowiki_sample' => 'Inço matni qolabbandi-naşudaro doxil kuned',
'nowiki_tip' => 'Rad kardani qolabbandiji viki',
'image_tip' => 'Tasviri doxili matn',
@@ -532,7 +519,7 @@ Agar az sababi xatogī va jo iştiboh omaded, tugmai '''Ba oqib'''-ro dar brauze
Şumo metavoned dar digar sahifaho [[Special:Search/{{PAGENAME}}|unvoni in sahifaro çustuçū kuned]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} guzorişhoi aloqamandro çustuçū namoed],
jo [{{fullurl:{{FULLPAGENAME}}|action=edit}} in sahifaro viroiÅŸ kuned]</span>.',
-'userpage-userdoesnotexist' => 'Hisobi korbar "$1" sabt naÅŸudaast. Itminon hosil kuned ki mexohed in sahifaro ecod jo viroiÅŸ kuned.',
+'userpage-userdoesnotexist' => 'Hisobi korbar "<nowiki>$1</nowiki>" sabt naÅŸudaast. Itminon hosil kuned ki mexohed in sahifaro ecod jo viroiÅŸ kuned.',
'usercssyoucanpreview' => "'''Ezoh:''' PeÅŸ parvandai CSS jo JS xudro zaxira kuned, bo istifoda az tugmai \"PeÅŸnamoiÅŸ\" metavoned onro ozmoiÅŸ kuned.",
'userjsyoucanpreview' => "'''Ezoh:''' PeÅŸ parvandai CSS jo JS xudro zaxira kuned, bo istifoda az tugmai \"PeÅŸnamoiÅŸ\" metavoned onro ozmoiÅŸ kuned.",
'userjspreview' => "'''Faromūş nakuned, ki şumo faqat ÇavaSkripti korbariatonro imtihon,peşnamoiş karda istodaed va on hanūz zaxira naşudaast!'''",
@@ -771,7 +758,6 @@ Itminon hosil kuned, ki in taƣjir davomnokiji ta'rixiji sahifaro nigoh dorad.",
'changepassword' => 'Ivaz namudani kalimai ubur',
'prefs-skin' => 'PÅ«st',
'skin-preview' => 'PeÅŸnamoiÅŸ',
-'prefs-math' => 'Rijozijot',
'datedefault' => 'Be tarçih',
'prefs-datetime' => 'Sana va vaqt',
'prefs-personal' => 'Dodahoi korbar',
@@ -789,8 +775,6 @@ Itminon hosil kuned, ki in taƣjir davomnokiji ta'rixiji sahifaro nigoh dorad.",
'columns' => "Te'dodi sutunho:",
'searchresultshead' => 'Çustuçū',
'resultsperpage' => "Te'dodi natoiç dar har sahifa:",
-'contextlines' => "Te'dodi satrho dar har natiça:",
-'contextchars' => "Te'dodi naviÅŸtaho atrofi dar satr:",
'stub-threshold' => 'Ostonai viroiÅŸi pajvandhoi <a href="#" class="stub">noqis</a>:',
'recentchangesdays' => "Te'dodi rūzhoi namoiş dodaşuda dar taƣjiroti oxir:",
'savedprefs' => 'Tarçihoti şumo zaxira şud.',
@@ -1013,10 +997,6 @@ Agar parvandai barrasişuda aksi xurd karda şudai on parvandai aslī ast, nijoz
'destfilename' => 'Nomi parvandai maqsad:',
'upload-maxfilesize' => 'Buzurgtarin andozai parvanda: $1',
'filewasdeleted' => 'Parvandae bo hamin nom peştar borguzorī va pas az on pok şudaast. Peş az borguzorī ba $1 nigared.',
-'upload-wasdeleted' => "'''HuÅŸdor: Åžumo dar holi borguzoriji parvandae hasted, ki peÅŸ az in hazf ÅŸudaast.'''
-
-Åžumo bojad biandeÅŸed, ki ojo davom dodani borguzoriji in parvanda munosib ast jo na.
-GuzoriÅŸi hazfi marbut ba in parvanda dar zer ovarda ÅŸudaast:",
'filename-bad-prefix' => "Nomi parvandae, ki şumo borguzori kardanied bo '''\"\$1\"''' oƣoz meşavad, ki jak peşvandi maxsusi akshoi sabtşuda tavassuti aksbardorakhoi raqamī ast. Lutfan nomi behtari tavsifotī baroi parvanda intixob kuned.",
'upload-success-subj' => 'Firistodan bomuvaffaqijat',
@@ -1297,13 +1277,11 @@ Jak klik kardani rūi unvoni sutunho boisi taƣjiri tartibi namoişi parvandaho
'watchlistanontext' => 'Lutfan baroi muÅŸohida va viroiÅŸi fehristi pajgirihoi xud az $1 istifoda kuned.',
'watchnologin' => 'Vurud naÅŸuda',
'watchnologintext' => 'Baroi taƣjiri fehristi pajgirihoi xud bojad [[Special:UserLogin|ba sistem vorid şaved]].',
-'addedwatch' => 'Ba fehristi pajgiriho ilova karda ÅŸud',
'addedwatchtext' => "In sahifa \"[[:\$1]]\" va [[Special:Watchlist|fehristi nazaroti]] Åžumo ilova ÅŸud.
Digargunihoi ojandai in sahifa va sahifi bahsi aloqamand dar rūixati onço xohad şud,
va sahifa '''ƣafs''' dar [[Special:RecentChanges|rūixati taƣjiroti oxirin]] baroi bo osoni darjoft kardan xohad ba nazar rasid.
Agar ÅŸumo dertar az fehristi nazarotaton in sahifaro hazv kardan xohed, dar menju \"Nazar nakardan\"-ro paxÅŸ kuned.",
-'removedwatch' => 'Az fehristi pajgiriho bardoÅŸta ÅŸud',
'removedwatchtext' => 'Sahifai "[[:$1]]" az [[Special:Watchlist|fehristi pajgirihoi ÅŸumo]] bardoÅŸta ÅŸud.',
'watch' => 'Nazar kardan',
'watchthispage' => 'Pajgiriji in sahifa',
@@ -1349,7 +1327,7 @@ Agar ÅŸumo dertar az fehristi nazarotaton in sahifaro hazv kardan xohed, dar men
'delete-legend' => 'Hazf',
'confirmdeletetext' => "Şumo dar holi hazf kardani jak sahifa jo akse az pojgoh doda hamroh bo tamomi ta'rixi on hasted. Lutfan in amalro tasdiq kuned va itminon hosil kuned, ki oqibati in korro medoned va in amalro mutobiqi [[{{MediaWiki:Policy-url}}|sijosati hazf]] ançom medihed.",
'actioncomplete' => 'Amal içro şud',
-'deletedtext' => '"<nowiki>$1</nowiki>" hazf ÅŸudaast.
+'deletedtext' => '"$1" hazf ÅŸudaast.
Nigared ba $2 baroi guzoriÅŸi hazfi oxirin.',
'deletedarticle' => 'hazfÅŸuda "[[$1]]"',
'suppressedarticle' => '"[[$1]]"-ro mavquf kard',
@@ -1392,7 +1370,7 @@ Nigared ba $2 baroi guzoriÅŸi hazfi oxirin.',
'protectexpiry' => 'Zamoni saromadan:',
'protect_expiry_invalid' => "Zamoni saromadan nomū'tabar ast.",
'protect_expiry_old' => 'Zamoni saromadan dar guzaÅŸta ast.',
-'protect-text' => "Şumo inço sathi muhofizati sahifai '''<nowiki>$1</nowiki>''' metavoned nigared jo taƣjir dihed",
+'protect-text' => "Şumo inço sathi muhofizati sahifai '''$1''' metavoned nigared jo taƣjir dihed",
'protect-locked-blocked' => "Åžumo muddate, ki dastarsiaton qat' ast nametavoned sathi hifzi sahifahoro tagjir dihed. Tanzimoti fe'liji sahifai '''$1''' ba in qaror ast:",
'protect-locked-dblock' => "Az sababi qufl şudani pojgohi doda, imkoni taƣjiri sathi hifzi sahifa vuçud nadorad.
Tanzimoti fe'liji sahifai '''$1''' ba in qaror ast:",
@@ -1512,7 +1490,6 @@ $1',
'blockiptext' => "Baroi bastani dastrasiji viroişi nişonai IP jo nomi korbarī muşaxxas az formi zerin istifoda kuned.
In kor faqat bojad baroi çilavgirī az xarobkori va muvofiqi bo [[{{MediaWiki:Policy-url}}|sijosati qat'i dastrasī]] ançom şavad.
Daleli muşaxxas baroi in korro dar zer zikr kuned (baroi misol, zikri sahifahoe, ki xarobkorī şudaand).",
-'ipaddress' => 'NiÅŸonai IP:',
'ipadressorusername' => 'IP niÅŸona jo nomi korbar:',
'ipbexpiry' => 'Xotima:',
'ipbreason' => 'Sabab:',
@@ -1525,7 +1502,6 @@ Daleli muÅŸaxxas baroi in korro dar zer zikr kuned (baroi misol, zikri sahifahoe
** Raftori ba'd/masxarakuniji digar korbaron
** Sūiistifoda az cand hisobi korbarī
** Nomi korbariji nomunosib",
-'ipbanononly' => 'Faqat bastani korbaroni gumnom',
'ipbcreateaccount' => 'Çilavgirī az eçodi hisob',
'ipbemailban' => 'Çilavgiriji korbar az firistodani poctai elektronī',
'ipbenableautoblock' => "NiÅŸonai oxire ki az on in korbar istifoda mekunad, ba surati xudkor buband, va digar niÅŸonahoi IP-hoi ba'dina, ki az onho metavonad viroiÅŸ kunand",
@@ -1550,9 +1526,7 @@ Baroi barrasī ba [[Special:IPBlockList|fehristi nişonahoi IP va nomhoi korbari
'unblocked-id' => "Qat'i dastrasiji ÅŸumorai $1 xotima joft",
'ipblocklist' => 'IP niÅŸonaho va nomhoi korbariji basta ÅŸuda',
'ipblocklist-legend' => 'Çustuçūi korbari basta şuda',
-'ipblocklist-username' => 'Nomi korbarī jo nişonai IP:',
'ipblocklist-submit' => 'Çustuçū',
-'blocklistline' => '$1, $2 ro bast $3 ($4)',
'infiniteblock' => 'be pojon',
'anononlyblock' => 'faqat korbaroni gumnom',
'noautoblockblock' => "bastani xudkor ƣajrifa'ol ast",
@@ -1569,7 +1543,7 @@ Baroi barrasī ba [[Special:IPBlockList|fehristi nişonahoi IP va nomhoi korbari
'blocklogentry' => 'basta ÅŸud [[$1]] bo vaqti saromadan $2 $3',
'blocklogtext' => 'In guzoriÅŸ az amali bastan va boz kardani korbaron ast.
NiÅŸonahoi IP-i bo tavri xudkor basta ÅŸuda, fehrist naÅŸudaand.
-Baroi fehristi mahrumijatho va basta şudanhoi amalijoti kununī ba [[Special:IPBlockList|fehristi IP-hoi basta]] muroçiat kuned.',
+Baroi fehristi mahrumijatho va basta şudanhoi amalijoti kununī ba [[Special:BlockList|fehristi IP-hoi basta]] muroçiat kuned.',
'unblocklogentry' => '$1 boz ÅŸud',
'block-log-flags-anononly' => 'faqat korbaroni gumnom',
'block-log-flags-nocreate' => "qobilijati eçodi hisob ƣajrifa'ol şud",
@@ -1695,7 +1669,7 @@ Dar holati oxir ÅŸumo metavoned pajvandero istifoda bared, namuna. [[{{#Special:
'allmessagesdefault' => 'Matni qarordodī',
'allmessagescurrent' => 'Matni kununī',
'allmessagestext' => 'In fehristi pajomhoi sistemaviji dastras dar fazoi nomi MediaWiki meboÅŸad.
-Agar majli hissaguzorī kardanro ba mahallikunoniji MediaWiki dored, pas lutan sahifahoi [http://www.mediawiki.org/wiki/Localisation Mahallikunoniji MediaWiki] va [http://translatewiki.net translatewiki.net] nigared.',
+Agar majli hissaguzorī kardanro ba mahallikunoniji MediaWiki dored, pas lutan sahifahoi [//www.mediawiki.org/wiki/Localisation Mahallikunoniji MediaWiki] va [//translatewiki.net translatewiki.net] nigared.',
'allmessagesnotsupportedDB' => "Az in sahifa nametavon istifoda burd, cun '''\$wgUseDatabaseMessages''' ƣajrifa'ol gardonida şudaast.",
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter-all' => 'Hama',
@@ -1820,9 +1794,7 @@ Pas onro ba kompjuteraton zaxira karda inço borguzorī kuned.",
In imkoni ilova kardani jak sababero dar xulosa medihad.',
# Metadata
-'nodublincore' => "Metadoda Dublin Core RDF baroi in korguzor ƣajri fa'ol şudaast.",
-'nocreativecommons' => "Metadodai Creative Commons RDF baroi in korguzor ƣajri fa'ol şudaast.",
-'notacceptable' => 'Korguzori in viki az irsoli doda ba ÅŸakle ki barnomai ÅŸumo bitavonad namoiÅŸ dihad, peÅŸkaÅŸ karda nametavonad.',
+'notacceptable' => 'Korguzori in viki az irsoli doda ba ÅŸakle ki barnomai ÅŸumo bitavonad namoiÅŸ dihad, peÅŸkaÅŸ karda nametavonad.',
# Attribution
'anonymous' => '{{PLURAL:$1|korbari|korbaroni}} gumnomī {{SITENAME}}',
@@ -1843,33 +1815,6 @@ Ehtimolan in az sababi dar bar giriftani pajvandi beruna ba somonai xoriçiji ba
'spam_reverting' => 'Vogardoni ba oxirin nusxae, ki pajvande ba $1 nadorad',
'spam_blanking' => 'Hamai nusxahoi pajvandho $1 doştan, dar holi xolī kardan',
-# Info page
-'infosubtitle' => 'Ittiloot dar mavridi sahifa',
-'numedits' => "Te'dodi viroiÅŸho (sahifa): $1",
-'numtalkedits' => "Te'dodi viroiÅŸho (sahifai bahs): $1",
-'numwatchers' => 'Åžumorai pajgirikunandagon: $1',
-'numauthors' => "Te'dodi muallifoni muxtalif (maqola): $1",
-'numtalkauthors' => "Te'dodi muallifoni muxtalif (sahifai bahs): $1",
-
-# Math options
-'mw_math_png' => 'HameÅŸa PNG kaÅŸida ÅŸavad',
-'mw_math_simple' => 'Agar xele sodda HTML vagarna PNG',
-'mw_math_html' => 'Az rūi imkon HTML vagarna PNG',
-'mw_math_source' => 'Hamcun TeX boqī bimon (baroi mururgarhoi matnī)',
-'mw_math_modern' => 'Tavseh şuda baroi mururgarhoi zamonavī',
-'mw_math_mathml' => 'Istifoda az MathML dar surati imkon (ozmoiÅŸÄ«)',
-
-# Math errors
-'math_failure' => 'Şikast dar taçzeh',
-'math_unknown_error' => 'xatoi noÅŸinos',
-'math_unknown_function' => "amali noma'lum",
-'math_lexing_error' => 'xatoi lexing',
-'math_syntax_error' => 'xatoi nahvī',
-'math_image_error' => 'Tabdil ba PNG şikast xūr; nasbi durusti latex, dvips, gs, va tabdilotro barrasī kuned',
-'math_bad_tmpdir' => 'Imkoni eçod jo navistani ittiloot dar pūşai muvaqqatiji rijozī (temp) vuçud nadorad',
-'math_bad_output' => 'Imkoni eçod jo navistani ittiloot dar pūşai xuruçiji rijozī (output) vuçud nadorad',
-'math_notexvc' => 'Barnomai icroiji texvc mavçud nest; baroi ittilooti beştar ba math/README nigared.',
-
# Patrolling
'markaspatrolleddiff' => 'Ba unvoni barrasiÅŸuda alomat bizan',
'markaspatrolledtext' => 'In maqolaro ba unvoni barrasiÅŸuda alomat bizan',
@@ -1902,16 +1847,15 @@ $1',
'nextdiff' => 'Tafovuti navtar →',
# Media information
-'mediawarning' => "'''HuÅŸdor''': In parvanda mumkin ast ramzhoi badqasdro dar bar girad.
+'mediawarning' => "'''HuÅŸdor''': In parvanda mumkin ast ramzhoi badqasdro dar bar girad.
Bo içroi on, sistemai şumo şojad oseb bubinad.",
-'thumbsize' => 'Andozai anguÅŸtdona (thumbnail):',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|sahifa|sahifaho}}',
-'file-info' => "andozai parvanda: $1, nav'i MIME: $2",
-'file-info-size' => "$1 × $2 piksel, haçmi parvanda: $3, nav'i MIME: $4",
-'file-nohires' => '<small>Nusxai haçman va sifatan balandtar dastras nest.</small>',
-'svg-long-desc' => 'SVG parvanda, ismī $1 × $2 piksel, andozai parvanda: $3',
-'show-big-image' => 'Aksi purra',
-'show-big-image-thumb' => '<small>Andozai in peşnamoiş: $1 × $2 piksel</small>',
+'thumbsize' => 'Andozai anguÅŸtdona (thumbnail):',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|sahifa|sahifaho}}',
+'file-info' => "andozai parvanda: $1, nav'i MIME: $2",
+'file-info-size' => "$1 × $2 piksel, haçmi parvanda: $3, nav'i MIME: $4",
+'file-nohires' => '<small>Nusxai haçman va sifatan balandtar dastras nest.</small>',
+'svg-long-desc' => 'SVG parvanda, ismī $1 × $2 piksel, andozai parvanda: $3',
+'show-big-image' => 'Aksi purra',
# Special:NewFiles
'newimages' => 'Namoişgohi parvandahoi çadid',
@@ -1941,7 +1885,13 @@ Faqat satrhoe, ki bo * şurū' şavand ba nazar girifta meşavand. Avvalin pajva
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => "Vase'Ä«",
@@ -1956,13 +1906,11 @@ Faqat satrhoe, ki bo * şurū' şavand ba nazar girifta meşavand. Avvalin pajva
'exif-ycbcrpositioning' => 'Mavqeijati Y va C',
'exif-xresolution' => 'Tahlilpaziriji ufuqī',
'exif-yresolution' => 'Tahlilpaziriji amudī',
-'exif-resolutionunit' => 'Vohidi tafkikpaziriji X va Y',
'exif-stripoffsets' => 'Çojgohi dodahoi aks',
'exif-rowsperstrip' => "Te'dodi radifho dar har navor",
'exif-stripbytecounts' => 'Bajt dar har navori fiÅŸurda',
'exif-jpeginterchangeformat' => "Çab'ai çoji nisbat ba JPEG SOI",
'exif-jpeginterchangeformatlength' => 'Bajt dodai JPEG',
-'exif-transferfunction' => 'Tobeijati tabdil',
'exif-whitepoint' => 'Ranginagiji nuqtai safed',
'exif-primarychromaticities' => 'Rangpaziriji avvalijatho',
'exif-ycbcrcoefficients' => 'Zarbkunandahoi matrisi tabdili fazoi rang',
@@ -1981,7 +1929,6 @@ Faqat satrhoe, ki bo * şurū' şavand ba nazar girifta meşavand. Avvalin pajva
'exif-compressedbitsperpixel' => 'Holati fiÅŸurdasoziji aks',
'exif-pixelydimension' => "Arzi aksi mū'tabar",
'exif-pixelxdimension' => "Tūli aksi mū'tabar",
-'exif-makernote' => 'Tavzehoti ÅŸirkati sozanda',
'exif-usercomment' => 'Tavzehoti korbar',
'exif-relatedsoundfile' => 'Parvandai sabti aloqamand',
'exif-datetimeoriginal' => "Ta'rix va vaqti tavlidi dodaho",
@@ -1995,7 +1942,6 @@ Faqat satrhoe, ki bo * şurū' şavand ba nazar girifta meşavand. Avvalin pajva
'exif-exposureprogram' => 'Barnomai Nurdihī',
'exif-spectralsensitivity' => 'Hasosijati tifī',
'exif-isospeedratings' => "Daraçabandiji sur'ati ISO",
-'exif-oecf' => 'Amali tabdili nurī-elektronī',
'exif-shutterspeedvalue' => "Sur'ati parda",
'exif-aperturevalue' => 'Andozai diafragm',
'exif-brightnessvalue' => 'Ravşanī',
@@ -2008,7 +1954,6 @@ Faqat satrhoe, ki bo * şurū' şavand ba nazar girifta meşavand. Avvalin pajva
'exif-focallength' => 'Fosilai markaziji adasī',
'exif-subjectarea' => 'Masohati çism',
'exif-flashenergy' => 'Qudrati fleÅŸ',
-'exif-spatialfrequencyresponse' => 'Posuxi fosilai fazogī',
'exif-focalplanexresolution' => 'Safhai markaziji X tafkikpazirī',
'exif-focalplaneyresolution' => 'Safhai markaziji Y tafkikpazirī',
'exif-focalplaneresolutionunit' => 'Vohidi tafkikpaziriji safhai markazī',
@@ -2017,7 +1962,6 @@ Faqat satrhoe, ki bo * şurū' şavand ba nazar girifta meşavand. Avvalin pajva
'exif-sensingmethod' => 'Ravişi hisgarī',
'exif-filesource' => 'Manbai parvanda',
'exif-scenetype' => "Nav'i sahna",
-'exif-cfapattern' => 'Qolabi CFA',
'exif-customrendered' => 'PardoziÅŸi aks',
'exif-exposuremode' => 'Holati nurdihī',
'exif-whitebalance' => 'Muvozinai rangi safed',
@@ -2196,15 +2140,13 @@ Faqat satrhoe, ki bo * şurū' şavand ba nazar girifta meşavand. Avvalin pajva
# External editor support
'edit-externally' => 'In fajlro bo barnomai beruna tahrir kuned',
-'edit-externally-help' => '(Baroi ittilooti beÅŸtar [http://www.mediawiki.org/wiki/Manual:External_editors rohnamoi tanzimotro oidi viroiÅŸgaroni beruna] nigared)',
+'edit-externally-help' => '(Baroi ittilooti beÅŸtar [//www.mediawiki.org/wiki/Manual:External_editors rohnamoi tanzimotro oidi viroiÅŸgaroni beruna] nigared)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'hama',
-'imagelistall' => 'hama',
-'watchlistall2' => 'hama',
-'namespacesall' => 'hama',
-'monthsall' => 'hama',
-'limitall' => 'hama',
+'watchlistall2' => 'hama',
+'namespacesall' => 'hama',
+'monthsall' => 'hama',
+'limitall' => 'hama',
# E-mail address confirmation
'confirmemail' => 'Tasdiqi nişonai poctai elektronī',
@@ -2312,13 +2254,13 @@ Lutfan ta'jid kuned, ki muçaddadan mexohed in maqolaro eçod kuned.",
'watchlistedit-normal-legend' => 'Hazfi unvonho az fehristi pajgiriho',
'watchlistedit-normal-explain' => "Unvonhoi mavçud dar fehristi pajgirihoi şumo dar pojon namoiş doda şudaand.
Baroi hazfi jak unvon, ça'bai kūcaki kanori onro tik bizanid.
-Åžumo metavoned [[Special:Watchlist/raw|fehristi xomi pajgirihoro viroiÅŸ kuned]].",
+Åžumo metavoned [[Special:EditWatchlist/raw|fehristi xomi pajgirihoro viroiÅŸ kuned]].",
'watchlistedit-normal-submit' => 'Unvonho hazf ÅŸavand',
'watchlistedit-normal-done' => '$1 unvon az fehristi pajgirihoi ÅŸumo hazf {{PLURAL:$1|ÅŸud|ÅŸudand}}:',
'watchlistedit-raw-title' => 'Viroişi fehristi xomī pajgiriho',
'watchlistedit-raw-legend' => 'Viroişi fehristi xomī pajgiriho',
'watchlistedit-raw-explain' => 'Unvonhoi mavçud dar fehristi pajgirihoi şumo dar zer nişon doda şudaand, va şumo metavoned mavoridro hazf jo izofa kuned; jak unvon dar har satr bojad qaror bigirad. Dar pojon, tugmai "Ba rūzrasoniji pajgiriho"-ro fişor dihed.
-Tavaççūh kuned, ki şumo metavoned az [[Special:Watchlist/edit|viroişgari standartiji fehristi pajgiriho]] istifoda kuned.',
+Tavaççūh kuned, ki şumo metavoned az [[Special:EditWatchlist|viroişgari standartiji fehristi pajgiriho]] istifoda kuned.',
'watchlistedit-raw-titles' => 'Unvonho:',
'watchlistedit-raw-submit' => 'Ba rūz rasonidani pajgiriho',
'watchlistedit-raw-done' => 'Fehristi pajgirihoi şumo ba rūz şud.',
@@ -2334,25 +2276,24 @@ Tavaççūh kuned, ki şumo metavoned az [[Special:Watchlist/edit|viroişgari st
'unknown_extension_tag' => 'Bacasbi noÅŸinosi afzunai "$1"',
# Special:Version
-'version' => 'Nusxai Mediaviki',
-'version-extensions' => 'Afzunahoi nasbÅŸuda',
-'version-specialpages' => 'Sahifahoi viƶa',
-'version-parserhooks' => 'Qolabhoi taçzehgar',
-'version-variables' => 'Mutaƣjirho',
-'version-other' => 'Digar',
-'version-mediahandlers' => 'Badastgirandahoi rasonaho',
-'version-hooks' => 'Qolabho',
-'version-extension-functions' => 'Amalgarhoi afzuna',
-'version-parser-extensiontags' => 'Barcasbhoi afzunahoi taçzehgar',
-'version-parser-function-hooks' => 'Qolabhoi amalgarhoi taçzehgar',
-'version-skin-extension-functions' => 'Amalgarhoi afzunahoi pūst',
-'version-hook-name' => 'Nomi qolab',
-'version-hook-subscribedby' => 'VoridÅŸuda tavassuti',
-'version-version' => '(Nusxa $1)',
-'version-license' => 'Içozatnoma',
-'version-software' => 'Nusxai nasbÅŸuda',
-'version-software-product' => 'Mahsul',
-'version-software-version' => 'Nusxa',
+'version' => 'Nusxai Mediaviki',
+'version-extensions' => 'Afzunahoi nasbÅŸuda',
+'version-specialpages' => 'Sahifahoi viƶa',
+'version-parserhooks' => 'Qolabhoi taçzehgar',
+'version-variables' => 'Mutaƣjirho',
+'version-other' => 'Digar',
+'version-mediahandlers' => 'Badastgirandahoi rasonaho',
+'version-hooks' => 'Qolabho',
+'version-extension-functions' => 'Amalgarhoi afzuna',
+'version-parser-extensiontags' => 'Barcasbhoi afzunahoi taçzehgar',
+'version-parser-function-hooks' => 'Qolabhoi amalgarhoi taçzehgar',
+'version-hook-name' => 'Nomi qolab',
+'version-hook-subscribedby' => 'VoridÅŸuda tavassuti',
+'version-version' => '(Nusxa $1)',
+'version-license' => 'Içozatnoma',
+'version-software' => 'Nusxai nasbÅŸuda',
+'version-software-product' => 'Mahsul',
+'version-software-version' => 'Nusxa',
# Special:FilePath
'filepath' => 'Masiri parvanda',
@@ -2365,9 +2306,7 @@ NiÅŸonai pajvandro biduni peÅŸvand "{{ns:file}}:" vorid kuned.',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Çustuçū baroi parvandahoi takrorī',
-'fileduplicatesearch-summary' => 'Çustuçū baroi parvandahoi takrorī bar asosi miqdori dar ham şudai onho surat megirad.
-
-Nomi parvandaro be peÅŸvandi "{{ns:file}}:" vorid kuned.',
+'fileduplicatesearch-summary' => 'Çustuçū baroi parvandahoi takrorī bar asosi miqdori dar ham şudai onho surat megirad.',
'fileduplicatesearch-legend' => 'Çustuçūi mavoridi takrorī',
'fileduplicatesearch-filename' => 'Nomi parvanda:',
'fileduplicatesearch-submit' => 'Çustuçū',
diff --git a/languages/messages/MessagesTh.php b/languages/messages/MessagesTh.php
index 1cc26fe5..7258df87 100644
--- a/languages/messages/MessagesTh.php
+++ b/languages/messages/MessagesTh.php
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author Akkhaporn
* @author Ans
* @author Harley Hartwell
* @author Horus
@@ -47,92 +48,92 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'เปลี่ยนทางซ้ำซ้อน' ),
+ 'Allmessages' => array( 'ข้อความทั้งหมด' ),
+ 'Allpages' => array( 'หน้าทั้งหมด' ),
+ 'Ancientpages' => array( 'บทความที่ไม่ได้à¹à¸à¹‰à¹„ขนานที่สุด' ),
+ 'Blankpage' => array( 'หน้าว่าง' ),
+ 'Block' => array( 'บล็อà¸à¹„อพี' ),
+ 'Blockme' => array( 'บล็อà¸à¸‰à¸±à¸™' ),
+ 'Booksources' => array( 'à¹à¸«à¸¥à¹ˆà¸‡à¸«à¸™à¸±à¸‡à¸ªà¸·à¸­' ),
'BrokenRedirects' => array( 'เปลี่ยนทางเสีย' ),
- 'Disambiguations' => array( 'à¹à¸à¹‰à¸„วามà¸à¸³à¸à¸§à¸¡' ),
- 'Userlogin' => array( 'ล็อà¸à¸­à¸´à¸™' ),
- 'Userlogout' => array( 'ล็อà¸à¹€à¸­à¸²à¸•à¹Œ' ),
+ 'Categories' => array( 'หมวดหมู่' ),
+ 'ChangePassword' => array( 'ตั้งรหัสผ่านใหม่' ),
+ 'Confirmemail' => array( 'ยืนยันอีเมล' ),
+ 'Contributions' => array( 'เรื่องที่เขียน' ),
'CreateAccount' => array( 'สร้างบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹ƒà¸«à¸¡à¹ˆ' ),
- 'Preferences' => array( 'à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่า', 'ตั้งค่า' ),
- 'Watchlist' => array( 'รายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ู', 'เà¸à¹‰à¸²à¸”ู' ),
- 'Recentchanges' => array( 'ปรับปรุงล่าสุด' ),
- 'Upload' => array( 'อัปโหลด' ),
+ 'Deadendpages' => array( 'หน้าสุดทาง' ),
+ 'DeletedContributions' => array( 'à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่ถูà¸à¸¥à¸š' ),
+ 'Disambiguations' => array( 'à¹à¸à¹‰à¸„วามà¸à¸³à¸à¸§à¸¡' ),
+ 'DoubleRedirects' => array( 'เปลี่ยนทางซ้ำซ้อน' ),
+ 'Emailuser' => array( 'อีเมลผู้ใช้' ),
+ 'Export' => array( 'ส่งออà¸' ),
+ 'Fewestrevisions' => array( 'บทความที่ถูà¸à¹à¸à¹‰à¹„ขน้อยที่สุด' ),
+ 'FileDuplicateSearch' => array( 'ค้นหาไฟล์ซ้ำซ้อน' ),
+ 'Filepath' => array( 'พาธของไฟล์', 'ตำà¹à¸«à¸™à¹ˆà¸‡à¹„ฟล์' ),
+ 'Import' => array( 'นำเข้า' ),
+ 'Invalidateemail' => array( 'ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸—างอีเมล' ),
+ 'BlockList' => array( 'รายชื่อผู้ใช้ที่ถูà¸à¸šà¸¥à¹‡à¸­à¸', 'รายà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸', 'รายชื่อไอพีที่ถูà¸à¸šà¸¥à¹‡à¸­à¸' ),
+ 'LinkSearch' => array( 'ค้นหาเว็บลิงà¸à¹Œ' ),
+ 'Listadmins' => array( 'รายชื่อผู้ดูà¹à¸¥' ),
+ 'Listbots' => array( 'รายชื่อบอต' ),
'Listfiles' => array( 'รายชื่อภาพ' ),
- 'Newimages' => array( 'ภาพใหม่' ),
- 'Listusers' => array( 'รายชื่อผู้ใช้' ),
'Listgrouprights' => array( 'รายชื่อสิทธิà¸à¸¥à¸¸à¹ˆà¸¡à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‡à¸²à¸™' ),
- 'Statistics' => array( 'สถิติ' ),
- 'Randompage' => array( 'สุ่ม', 'สุ่มหน้า' ),
+ 'Listredirects' => array( 'รายชื่อหน้าเปลี่ยนทาง' ),
+ 'Listusers' => array( 'รายชื่อผู้ใช้' ),
+ 'Lockdb' => array( 'ล็อà¸à¸à¸²à¸™à¸‚้อมูล' ),
+ 'Log' => array( 'ปูม' ),
'Lonelypages' => array( 'หน้าที่โยงไปไม่ถึง' ),
- 'Uncategorizedpages' => array( 'หน้าที่ไม่ได้จัดหมวดหมู่' ),
- 'Uncategorizedcategories' => array( 'หมวดหมู่ที่ไม่ได้จัดหมวดหมู่' ),
- 'Uncategorizedimages' => array( 'ภาพที่ไม่ได้จัดหมวดหมู่' ),
- 'Uncategorizedtemplates' => array( 'à¹à¸¡à¹ˆà¹à¸šà¸šà¸—ี่ไม่ได้จัดหมวดหมู่' ),
- 'Unusedcategories' => array( 'หมวดหมู่ที่ไม่ได้ใช้' ),
- 'Unusedimages' => array( 'ภาพที่ไม่ได้ใช้' ),
- 'Wantedpages' => array( 'หน้าที่ต้องà¸à¸²à¸£', 'à¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¹‚ยงเสีย' ),
- 'Wantedcategories' => array( 'หมวดหมู่ที่ต้องà¸à¸²à¸£' ),
- 'Wantedfiles' => array( 'ไฟล์ที่ต้องà¸à¸²à¸£' ),
- 'Wantedtemplates' => array( 'à¹à¸¡à¹ˆà¹à¸šà¸šà¸—ี่ต้องà¸à¸²à¸£' ),
+ 'Longpages' => array( 'หน้าที่ยาวที่สุด' ),
+ 'MergeHistory' => array( 'รวมประวัติ' ),
+ 'MIMEsearch' => array( 'ค้นหาตามชนิดไมม์' ),
+ 'Mostcategories' => array( 'หมวดหมู่ที่มีà¸à¸²à¸£à¹‚ยงไปหามาà¸à¸—ี่สุด' ),
+ 'Mostimages' => array( 'ไฟล์ที่มีà¸à¸²à¸£à¹‚ยงไปหามาà¸', 'ไฟล์ทีใช้มาà¸à¸—ี่สุด', 'ภาพที่ใช้มาà¸à¸—ี่สุด' ),
'Mostlinked' => array( 'หน้าที่มีà¸à¸²à¸£à¹‚ยงไปหามาà¸' ),
'Mostlinkedcategories' => array( 'หมวดหมู่ที่มีà¸à¸²à¸£à¹‚ยงไปหามาà¸', 'หมวดหมู่ที่ใช้มาà¸à¸—ี่สุด' ),
'Mostlinkedtemplates' => array( 'à¹à¸¡à¹ˆà¹à¸šà¸šà¸—ี่มีà¸à¸²à¸£à¹‚ยงไปหามาà¸', 'à¹à¸¡à¹ˆà¹à¸šà¸šà¸—ี่ใช้มาà¸à¸—ี่สุด' ),
- 'Mostimages' => array( 'ไฟล์ที่มีà¸à¸²à¸£à¹‚ยงไปหามาà¸', 'ไฟล์ทีใช้มาà¸à¸—ี่สุด', 'ภาพที่ใช้มาà¸à¸—ี่สุด' ),
- 'Mostcategories' => array( 'หมวดหมู่ที่มีà¸à¸²à¸£à¹‚ยงไปหามาà¸à¸—ี่สุด' ),
'Mostrevisions' => array( 'บทความที่ถูà¸à¹à¸à¹‰à¹„ขมาà¸à¸—ี่สุด' ),
- 'Fewestrevisions' => array( 'บทความที่ถูà¸à¹à¸à¹‰à¹„ขน้อยที่สุด' ),
- 'Shortpages' => array( 'หน้าที่สั้นที่สุด' ),
- 'Longpages' => array( 'หน้าที่ยาวที่สุด' ),
+ 'Movepage' => array( 'เปลี่ยนทาง' ),
+ 'Mycontributions' => array( 'เรื่องที่ฉันเขียน' ),
+ 'Mypage' => array( 'หน้าของฉัน' ),
+ 'Mytalk' => array( 'หน้าพูดคุยของฉัน' ),
+ 'Newimages' => array( 'ภาพใหม่' ),
'Newpages' => array( 'หน้าใหม่' ),
- 'Ancientpages' => array( 'บทความที่ไม่ได้à¹à¸à¹‰à¹„ขนานที่สุด' ),
- 'Deadendpages' => array( 'หน้าสุดทาง' ),
+ 'Popularpages' => array( 'หน้าที่ได้รับความนิยม' ),
+ 'Preferences' => array( 'à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่า', 'ตั้งค่า' ),
+ 'Prefixindex' => array( 'ดัชนีตามคำขึ้นต้น' ),
'Protectedpages' => array( 'หน้าที่ถูà¸à¸›à¹‰à¸­à¸‡à¸à¸±à¸™' ),
'Protectedtitles' => array( 'หัวเรื่องที่ได้รับà¸à¸²à¸£à¸›à¹‰à¸­à¸‡à¸à¸±à¸™' ),
- 'Allpages' => array( 'หน้าทั้งหมด' ),
- 'Prefixindex' => array( 'ดัชนีตามคำขึ้นต้น' ),
- 'Ipblocklist' => array( 'รายชื่อผู้ใช้ที่ถูà¸à¸šà¸¥à¹‡à¸­à¸', 'รายà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸', 'รายชื่อไอพีที่ถูà¸à¸šà¸¥à¹‡à¸­à¸' ),
- 'Specialpages' => array( 'หน้าพิเศษ' ),
- 'Contributions' => array( 'เรื่องที่เขียน' ),
- 'Emailuser' => array( 'อีเมลผู้ใช้' ),
- 'Confirmemail' => array( 'ยืนยันอีเมล' ),
- 'Whatlinkshere' => array( 'บทความที่โยงมา' ),
+ 'Randompage' => array( 'สุ่ม', 'สุ่มหน้า' ),
+ 'Randomredirect' => array( 'สุ่มหน้าเปลี่ยนทาง' ),
+ 'Recentchanges' => array( 'ปรับปรุงล่าสุด' ),
'Recentchangeslinked' => array( 'à¸à¸²à¸£à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¸—ี่โยงมา' ),
- 'Movepage' => array( 'เปลี่ยนทาง' ),
- 'Blockme' => array( 'บล็อà¸à¸‰à¸±à¸™' ),
- 'Booksources' => array( 'à¹à¸«à¸¥à¹ˆà¸‡à¸«à¸™à¸±à¸‡à¸ªà¸·à¸­' ),
- 'Categories' => array( 'หมวดหมู่' ),
- 'Export' => array( 'ส่งออà¸' ),
- 'Version' => array( 'เวอร์ชั่น' ),
- 'Allmessages' => array( 'ข้อความทั้งหมด' ),
- 'Log' => array( 'ปูม' ),
- 'Blockip' => array( 'บล็อà¸à¹„อพี' ),
+ 'Search' => array( 'ค้นหา' ),
+ 'Shortpages' => array( 'หน้าที่สั้นที่สุด' ),
+ 'Specialpages' => array( 'หน้าพิเศษ' ),
+ 'Statistics' => array( 'สถิติ' ),
+ 'Tags' => array( 'ป้ายà¸à¸³à¸à¸±à¸š' ),
+ 'Uncategorizedcategories' => array( 'หมวดหมู่ที่ไม่ได้จัดหมวดหมู่' ),
+ 'Uncategorizedimages' => array( 'ภาพที่ไม่ได้จัดหมวดหมู่' ),
+ 'Uncategorizedpages' => array( 'หน้าที่ไม่ได้จัดหมวดหมู่' ),
+ 'Uncategorizedtemplates' => array( 'à¹à¸¡à¹ˆà¹à¸šà¸šà¸—ี่ไม่ได้จัดหมวดหมู่' ),
'Undelete' => array( 'เรียà¸à¸„ืน' ),
- 'Import' => array( 'นำเข้า' ),
- 'Lockdb' => array( 'ล็อà¸à¸à¸²à¸™à¸‚้อมูล' ),
'Unlockdb' => array( 'ปลดล็อà¸à¸à¸²à¸™à¸‚้อมูล' ),
- 'Userrights' => array( 'สิทธิผู้ใช้' ),
- 'MIMEsearch' => array( 'ค้นหาตามชนิดไมม์' ),
- 'FileDuplicateSearch' => array( 'ค้นหาไฟล์ซ้ำซ้อน' ),
- 'Unwatchedpages' => array( 'หน้าที่ไม่ได้ถูà¸à¹€à¸à¹‰à¸²à¸”ู' ),
- 'Listredirects' => array( 'รายชื่อหน้าเปลี่ยนทาง' ),
+ 'Unusedcategories' => array( 'หมวดหมู่ที่ไม่ได้ใช้' ),
+ 'Unusedimages' => array( 'ภาพที่ไม่ได้ใช้' ),
'Unusedtemplates' => array( 'à¹à¸¡à¹ˆà¹à¸šà¸šà¸—ี่ไม่ได้ใช้' ),
- 'Randomredirect' => array( 'สุ่มหน้าเปลี่ยนทาง' ),
- 'Mypage' => array( 'หน้าของฉัน' ),
- 'Mytalk' => array( 'หน้าพูดคุยของฉัน' ),
- 'Mycontributions' => array( 'เรื่องที่ฉันเขียน' ),
- 'Listadmins' => array( 'รายชื่อผู้ดูà¹à¸¥' ),
- 'Listbots' => array( 'รายชื่อบอต' ),
- 'Popularpages' => array( 'หน้าที่ได้รับความนิยม' ),
- 'Search' => array( 'ค้นหา' ),
- 'Resetpass' => array( 'ตั้งรหัสผ่านใหม่' ),
+ 'Unwatchedpages' => array( 'หน้าที่ไม่ได้ถูà¸à¹€à¸à¹‰à¸²à¸”ู' ),
+ 'Upload' => array( 'อัปโหลด' ),
+ 'Userlogin' => array( 'ล็อà¸à¸­à¸´à¸™' ),
+ 'Userlogout' => array( 'ล็อà¸à¹€à¸­à¸²à¸•à¹Œ' ),
+ 'Userrights' => array( 'สิทธิผู้ใช้' ),
+ 'Version' => array( 'เวอร์ชั่น' ),
+ 'Wantedcategories' => array( 'หมวดหมู่ที่ต้องà¸à¸²à¸£' ),
+ 'Wantedfiles' => array( 'ไฟล์ที่ต้องà¸à¸²à¸£' ),
+ 'Wantedpages' => array( 'หน้าที่ต้องà¸à¸²à¸£', 'à¸à¸²à¸£à¹€à¸Šà¸·à¹ˆà¸­à¸¡à¹‚ยงเสีย' ),
+ 'Wantedtemplates' => array( 'à¹à¸¡à¹ˆà¹à¸šà¸šà¸—ี่ต้องà¸à¸²à¸£' ),
+ 'Watchlist' => array( 'รายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ู', 'เà¸à¹‰à¸²à¸”ู' ),
+ 'Whatlinkshere' => array( 'บทความที่โยงมา' ),
'Withoutinterwiki' => array( 'หน้าที่ไม่มีลิงà¸à¹Œà¸‚้ามภาษา' ),
- 'MergeHistory' => array( 'รวมประวัติ' ),
- 'Filepath' => array( 'พาธของไฟล์', 'ตำà¹à¸«à¸™à¹ˆà¸‡à¹„ฟล์' ),
- 'Invalidateemail' => array( 'ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸¢à¸·à¸™à¸¢à¸±à¸™à¸—างอีเมล' ),
- 'Blankpage' => array( 'หน้าว่าง' ),
- 'LinkSearch' => array( 'ค้นหาเว็บลิงà¸à¹Œ' ),
- 'DeletedContributions' => array( 'à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่ถูà¸à¸¥à¸š' ),
- 'Tags' => array( 'ป้ายà¸à¸³à¸à¸±à¸š' ),
);
$magicWords = array(
@@ -211,8 +212,8 @@ $messages = array(
'tog-shownumberswatching' => 'à¹à¸ªà¸”งจำนวนผู้ใช้ที่เà¸à¹‰à¸²à¸”ูหน้านี้',
'tog-oldsig' => 'à¹à¸ªà¸”งผลลายเซ็นเดิม:',
'tog-fancysig' => 'ใช้คำสั่งวิà¸à¸´à¸—ี่ปราà¸à¸à¹ƒà¸™à¸¥à¸²à¸¢à¹€à¸‹à¹‡à¸™à¸™à¸µà¹‰ (ไม่มีà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸¥à¸´à¸‡à¸à¹Œà¸­à¸±à¸•à¹‚นมัติ)',
-'tog-externaleditor' => 'ใช้โปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ขภายนอà¸à¹‚ดยปริยาย (สำหรับผู้เชี่ยวชาà¸à¹€à¸—่านั้น ต้องà¸à¸²à¸£à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าพิเศษบนคอมพิวเตอร์ของคุณ [http://www.mediawiki.org/wiki/Manual:External_editors ข้อมูลเพิ่มเติม])',
-'tog-externaldiff' => 'ใช้โปรà¹à¸à¸£à¸¡à¹€à¸›à¸£à¸µà¸¢à¸šà¹€à¸—ียบภายนอà¸à¹‚ดยปริยาย (สำหรับผู้เชี่ยวชาà¸à¹€à¸—่านั้น ต้องà¸à¸²à¸£à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าพิเศษบนคอมพิวเตอร์ของคุณ [http://www.mediawiki.org/wiki/Manual:External_editors ข้อมูลเพิ่มเติม])',
+'tog-externaleditor' => 'ใช้โปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ขภายนอà¸à¹‚ดยปริยาย (สำหรับผู้เชี่ยวชาà¸à¹€à¸—่านั้น ต้องà¸à¸²à¸£à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าพิเศษบนคอมพิวเตอร์ของคุณ [//www.mediawiki.org/wiki/Manual:External_editors ข้อมูลเพิ่มเติม])',
+'tog-externaldiff' => 'ใช้โปรà¹à¸à¸£à¸¡à¹€à¸›à¸£à¸µà¸¢à¸šà¹€à¸—ียบภายนอà¸à¹‚ดยปริยาย (สำหรับผู้เชี่ยวชาà¸à¹€à¸—่านั้น ต้องà¸à¸²à¸£à¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าพิเศษบนคอมพิวเตอร์ของคุณ [//www.mediawiki.org/wiki/Manual:External_editors ข้อมูลเพิ่มเติม])',
'tog-showjumplinks' => 'เปิดใช้งาน "à¸à¸£à¸°à¹‚ดด" อัตโนมัติไปตามลิงà¸à¹Œ',
'tog-uselivepreview' => 'à¹à¸ªà¸”งตัวอย่างà¸à¸²à¸£à¹à¸à¹‰à¹„ขà¹à¸šà¸šà¸—ันที (จาวาสคริปต์) (ทดลอง)',
'tog-forceeditsummary' => 'เตือนเมื่อช่องสรุปà¸à¸²à¸£à¹à¸à¹‰à¹„ขว่าง',
@@ -307,15 +308,7 @@ $messages = array(
'listingcontinuesabbrev' => '(ต่อ)',
'index-category' => 'หน้าที่มีดัชนี',
'noindex-category' => 'หน้าที่ไม่มีดัชนี',
-
-'mainpagetext' => "'''ติดตั้งซอฟต์à¹à¸§à¸£à¹Œà¸¡à¸µà¹€à¸”ียวิà¸à¸´à¹€à¸£à¸µà¸¢à¸šà¸£à¹‰à¸­à¸¢'''",
-'mainpagedocfooter' => 'ศึà¸à¸©à¸²[http://meta.wikimedia.org/wiki/Help:Contents คู่มือà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™] สำหรับเริ่มต้นใช้งานซอฟต์à¹à¸§à¸£à¹Œà¸§à¸´à¸à¸´
-
-== เริ่มต้น ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings รายà¸à¸²à¸£à¸à¸²à¸£à¸›à¸£à¸±à¸šà¹à¸•à¹ˆà¸‡à¸£à¸°à¸šà¸š] (ภาษาอังà¸à¸¤à¸©)
-* [http://www.mediawiki.org/wiki/Manual:FAQ คำถามที่ถามบ่อยในมีเดียวิà¸à¸´] (ภาษาอังà¸à¸¤à¸©)
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce เมลลิงลิสต์ของมีเดียวิà¸à¸´]',
+'broken-file-category' => 'หน้าที่มีลิงà¸à¹Œà¹„ฟล์เสีย',
'about' => 'เว็บไซต์นี้',
'article' => 'หน้าเนื้อหา',
@@ -367,10 +360,10 @@ $messages = array(
'history' => 'ประวัติหน้า',
'history_short' => 'ประวัติ',
'updatedmarker' => 'ความเปลี่ยนà¹à¸›à¸¥à¸‡à¸•à¸±à¹‰à¸‡à¹à¸•à¹ˆà¸„รั้งล่าสุด',
-'info_short' => 'ข้อมูล',
'printableversion' => 'หน้าสำหรับพิมพ์',
'permalink' => 'ลิงà¸à¹Œà¸–าวร',
'print' => 'พิมพ์',
+'view' => 'ดู',
'edit' => 'à¹à¸à¹‰à¹„ข',
'create' => 'สร้าง',
'editthispage' => 'à¹à¸à¹‰à¹„ขหน้านี้',
@@ -378,6 +371,7 @@ $messages = array(
'delete' => 'ลบ',
'deletethispage' => 'ลบหน้านี้',
'undelete_short' => 'เรียà¸à¸„ืน {{PLURAL:$1|1 à¸à¸²à¸£à¹à¸à¹‰à¹„ข|$1 à¸à¸²à¸£à¹à¸à¹‰à¹„ข}}',
+'viewdeleted_short' => 'ดู{{PLURAL:$1|1 à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่ถูà¸à¸¥à¸š|$1 à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่ถูà¸à¸¥à¸š}}',
'protect' => 'ล็อà¸',
'protect_change' => 'เปลี่ยน',
'protectthispage' => 'ล็อà¸à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰',
@@ -461,6 +455,8 @@ $1',
'toc' => 'เนื้อหา',
'showtoc' => 'à¹à¸ªà¸”ง',
'hidetoc' => 'ซ่อน',
+'collapsible-collapse' => 'ยุบ',
+'collapsible-expand' => 'ขยาย',
'thisisdeleted' => 'à¹à¸ªà¸”งหรือเรียà¸à¸”ู $1',
'viewdeleted' => 'ดู $1',
'restorelink' => '{{PLURAL:$1|1 à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่ถูà¸à¸¥à¸š|$1 à¸à¸²à¸£à¹à¸à¹‰à¹„ขที่ถูà¸à¸¥à¸š}}',
@@ -472,6 +468,8 @@ $1',
'page-rss-feed' => 'ฟีดอาร์เอสเอส "$1"',
'page-atom-feed' => 'ฟีดอะตอม "$1"',
'red-link-title' => '$1 (หน้านี้ไม่มี)',
+'sort-descending' => 'เรียงจาà¸à¸¡à¸²à¸à¹„ปน้อย',
+'sort-ascending' => 'เรียงจาà¸à¸™à¹‰à¸­à¸¢à¹„ปมาà¸',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'เนื้อหา',
@@ -550,11 +548,10 @@ $1',
'protectedpagetext' => 'หน้านี้ถูà¸à¸¥à¹‡à¸­à¸à¸›à¹‰à¸­à¸‡à¸à¸±à¸™à¸à¸²à¸£à¹à¸à¹‰à¹„ข',
'viewsourcetext' => 'โค้ดหน้านี้สามารถดูà¹à¸¥à¸°à¸™à¸³à¹„ปคัดลอà¸à¹„ด้:',
'protectedinterface' => 'หน้านี้เป็นข้อความที่ใช้à¹à¸ªà¸”งบนหน้าตาหรือส่วนติดต่อผู้ใช้ของซอฟต์à¹à¸§à¸£à¹Œ ถูà¸à¸¥à¹‡à¸­à¸à¸«à¹‰à¸²à¸¡à¹à¸à¹‰à¹„ขเพื่อป้องà¸à¸±à¸™à¸à¸²à¸£à¸à¹ˆà¸­à¸à¸§à¸™',
-'editinginterface' => "'''คำเตือน:''' คุณà¸à¸³à¸¥à¸±à¸‡à¹à¸à¹‰à¹„ขข้อความที่ใช้à¹à¸ªà¸”งบนหน้าตาหรือส่วนติดต่อผู้ใช้ของซอฟต์à¹à¸§à¸£à¹Œ à¸à¸²à¸£à¹à¸à¹‰à¹„ขหน้านี้จะมีผลต่อà¸à¸²à¸£à¹à¸ªà¸”งข้อความบนส่วนติดต่อผู้ใช้ของทุà¸à¸„น ถ้าคุณต้องà¸à¸²à¸£à¹à¸›à¸¥à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰ ให้ลองใช้บริà¸à¸²à¸£à¸‚อง [http://translatewiki.net/wiki/Main_Page?setlang=th translatewiki.net] ซึ่งเป็นโครงà¸à¸²à¸£à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸›à¸¥à¸‹à¸­à¸Ÿà¸•à¹Œà¹à¸§à¸£à¹Œà¸¡à¸µà¹€à¸”ียวิà¸à¸´",
+'editinginterface' => "'''คำเตือน:''' คุณà¸à¸³à¸¥à¸±à¸‡à¹à¸à¹‰à¹„ขข้อความที่ใช้à¹à¸ªà¸”งบนหน้าตาหรือส่วนติดต่อผู้ใช้ของซอฟต์à¹à¸§à¸£à¹Œ à¸à¸²à¸£à¹à¸à¹‰à¹„ขหน้านี้จะมีผลต่อà¸à¸²à¸£à¹à¸ªà¸”งข้อความบนส่วนติดต่อผู้ใช้ของทุà¸à¸„น ถ้าคุณต้องà¸à¸²à¸£à¹à¸›à¸¥à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰ ให้ลองใช้บริà¸à¸²à¸£à¸‚อง [//translatewiki.net/wiki/Main_Page?setlang=th translatewiki.net] ซึ่งเป็นโครงà¸à¸²à¸£à¸ªà¸³à¸«à¸£à¸±à¸šà¹à¸›à¸¥à¸‹à¸­à¸Ÿà¸•à¹Œà¹à¸§à¸£à¹Œà¸¡à¸µà¹€à¸”ียวิà¸à¸´",
'sqlhidden' => '(คำสั่ง SQL ซ่อนอยู่)',
'cascadeprotected' => 'หน้านี้ได้รับà¸à¸²à¸£à¸›à¹‰à¸­à¸‡à¸à¸±à¸™à¸ˆà¸²à¸à¸à¸²à¸£à¹à¸à¹‰à¹„ข เนื่องจาà¸à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¸–ูà¸à¹ƒà¸Šà¹‰à¹€à¸›à¹‡à¸™à¸ªà¹ˆà¸§à¸™à¸«à¸™à¸¶à¹ˆà¸‡à¹ƒà¸™{{PLURAL:$1|หน้า $2 ซึ่งได้รับà¸à¸²à¸£à¸›à¹‰à¸­à¸‡à¸à¸±à¸™à¹à¸šà¸š "ทบทุà¸à¸¥à¸³à¸”ับขั้น"|หน้าซึ่งได้รับà¸à¸²à¸£à¸›à¹‰à¸­à¸‡à¸à¸±à¸™à¹à¸šà¸š "ทบทุà¸à¸¥à¸³à¸”ับขั้น" ดังต่อไปนี้: $2}}',
'namespaceprotected' => "คุณไม่มีสิทธิในà¸à¸²à¸£à¹à¸à¹‰à¹„ขหน้าในเนมสเปซ '''$1'''",
-'customcssjsprotected' => 'คุณไม่ได้รับสิทธิในà¸à¸²à¸£à¹à¸à¹‰à¹„ขหน้านี้ เนื่องจาà¸à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¹€à¸à¹‡à¸šà¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าส่วนตัวของผู้ใช้อื่น',
'ns-specialprotected' => 'คุณไม่สามารถà¹à¸à¹‰à¹„ขหน้าพิเศษได้',
'titleprotected' => "หัวเรื่องนี้ได้รับà¸à¸²à¸£à¸›à¹‰à¸­à¸‡à¸à¸±à¸™à¹„ม่ให้สร้างใหม่ ผู้ดำเนินà¸à¸²à¸£à¸›à¹‰à¸­à¸‡à¸à¸±à¸™à¸„ือ [[User:$1|$1]] ได้ให้เหตุผลไว้ว่า ''$2''",
@@ -592,6 +589,7 @@ $1',
'createaccount' => 'สร้างบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰',
'gotaccount' => "มีบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹à¸¥à¹‰à¸§à¸«à¸£à¸·à¸­à¹„ม่ '''$1'''",
'gotaccountlink' => 'ล็อà¸à¸­à¸´à¸™',
+'userlogin-resetlink' => 'ลืมรายละเอียดล็อà¸à¸­à¸´à¸™à¸‚องคุณ?',
'createaccountmail' => 'ผ่านทางอีเมล',
'createaccountreason' => 'เหตุผล:',
'badretype' => 'รหัสผ่านที่ใส่ไม่ถูà¸à¸•à¹‰à¸­à¸‡',
@@ -600,13 +598,15 @@ $1',
'createaccounterror' => 'ไม่สามารถสร้างบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰: $1',
'nocookiesnew' => 'ชื่อบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹„ด้ถูà¸à¸ªà¸£à¹‰à¸²à¸‡à¸‚ึ้นà¹à¸¥à¹‰à¸§ à¹à¸•à¹ˆà¸¢à¸±à¸‡à¹„ม่ได้ล็อà¸à¸­à¸´à¸™à¹€à¸‚้าสู่ {{SITENAME}} เนื่องจาà¸à¸§à¹ˆà¸²à¹„ม่ได้เปิดใช้คุà¸à¸à¸µà¹‰ ถ้าต้องà¸à¸²à¸£à¸¥à¹‡à¸­à¸à¸­à¸´à¸™à¹ƒà¸«à¹‰à¹€à¸›à¸´à¸”ใช้งานคุà¸à¸à¸µà¹‰à¹à¸¥à¸°à¸—ำà¸à¸²à¸£à¸¥à¹‡à¸­à¸à¸­à¸´à¸™à¹‚ดยใส่ชื่อผู้ใช้พร้อมรหัสผ่าน',
'nocookieslogin' => '{{SITENAME}} ใช้คุà¸à¸à¸µà¹‰à¸ªà¸³à¸«à¸£à¸±à¸šà¸à¸²à¸£à¸¥à¹‡à¸­à¸à¸­à¸´à¸™ ขณะนี้คุà¸à¸à¸µà¹‰à¸‚องคุณไม่เปิดใช้งาน à¸à¸£à¸¸à¸“าเปิดใช้งานà¹à¸¥à¸°à¸¥à¸­à¸‡à¸­à¸µà¸à¸„รั้ง',
+'nocookiesfornew' => 'บัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹„ม่ถูà¸à¸ªà¸£à¹‰à¸²à¸‡ เนื่องจาà¸à¹€à¸£à¸²à¹„ม่สามารถยืนยันà¹à¸«à¸¥à¹ˆà¸‡à¸—ี่มา
+à¸à¸£à¸¸à¸“าà¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¸„ุณได้เปิดใช้คุà¸à¸à¸µà¹‰ โหลดหน้านี้ใหม่à¹à¸¥à¸°à¸¥à¸­à¸‡à¸­à¸µà¸à¸„รั้ง',
'noname' => 'คุณไม่ได้ใส่ชื่อผู้ใช้ที่ถูà¸à¸•à¹‰à¸­à¸‡',
'loginsuccesstitle' => 'ล็อà¸à¸­à¸´à¸™à¸ªà¸³à¹€à¸£à¹‡à¸ˆ',
'loginsuccess' => "'''ขณะนี้คุณล็อà¸à¸­à¸´à¸™à¹€à¸‚้าสู่ {{SITENAME}} ด้วยชื่อ \"\$1\"'''",
'nosuchuser' => 'ไม่มีผู้ใช้ที่ชื่อ "$1"
อัà¸à¸©à¸£à¹ƒà¸«à¸à¹ˆà¹€à¸¥à¹‡à¸à¸¡à¸µà¸œà¸¥à¸•à¹ˆà¸­à¸Šà¸·à¹ˆà¸­à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰
à¸à¸£à¸¸à¸“าตรวจà¸à¸²à¸£à¸ªà¸°à¸à¸”อีà¸à¸„รั้ง หรือ[[Special:UserLogin/signup|สร้างบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¹ƒà¸«à¸¡à¹ˆ]]',
-'nosuchusershort' => 'ไม่มีชื่อผู้ใช้ในชื่อ "<nowiki>$1</nowiki>" à¸à¸£à¸¸à¸“าตรวจสอบà¸à¸²à¸£à¸ªà¸°à¸à¸”',
+'nosuchusershort' => 'ไม่มีชื่อผู้ใช้ในชื่อ "$1" à¸à¸£à¸¸à¸“าตรวจสอบà¸à¸²à¸£à¸ªà¸°à¸à¸”',
'nouserspecified' => 'คุณต้องระบุชื่อผู้ใช้',
'login-userblocked' => 'ผู้ใช้นี้ถูà¸à¸šà¸¥à¹‡à¸­à¸ ไม่อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¸—ำà¸à¸²à¸£à¸¥à¹‡à¸­à¸à¸­à¸´à¸™',
'wrongpassword' => 'รหัสผ่านที่ใส่ไม่ถูà¸à¸•à¹‰à¸­à¸‡ à¸à¸£à¸¸à¸“าลองใหม่',
@@ -655,7 +655,7 @@ $1',
# E-mail sending
'php-mail-error-unknown' => 'ข้อผิดพลาดที่ไม่รู้จัà¸à¹ƒà¸™à¸Ÿà¸±à¸‡à¸à¹Œà¸Šà¸±à¸™ mail() ของ PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'เปลี่ยนรหัสผ่าน',
'resetpass_announce' => 'คุณล็อà¸à¸­à¸´à¸™à¸œà¹ˆà¸²à¸™à¸£à¸«à¸±à¸ªà¸­à¸µà¹€à¸¡à¸¥à¸Šà¸±à¹ˆà¸§à¸„ราว คุณต้องใส่ค่ารหัสผ่านใหม่เพื่อเสร็จสิ้นขั้นตอนà¸à¸²à¸£à¸¥à¹‡à¸­à¸à¸­à¸´à¸™:',
'resetpass_header' => 'เปลี่ยนรหัสผ่าน',
@@ -672,6 +672,16 @@ $1',
คุณอาจเปลี่ยนรหัสผ่านของคุณไปà¹à¸¥à¹‰à¸§ หรือร้องขอรหัสผ่านชั่วคราวใหม่à¹à¸¥à¹‰à¸§',
'resetpass-temp-password' => 'รหัสผ่านชั่วคราว:',
+# Special:PasswordReset
+'passwordreset' => 'ล้างรหัสผ่าน',
+'passwordreset-legend' => 'เปลี่ยนรหัสผ่าน',
+'passwordreset-disabled' => 'à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¹„ม่สามารถทำได้ในวิà¸à¸´à¸™à¸µà¹‰',
+'passwordreset-username' => 'ชื่อผู้ใช้:',
+'passwordreset-email' => 'ที่อยู่อีเมล:',
+'passwordreset-emailtitle' => 'รายละเอียดบัà¸à¸Šà¸µà¸šà¸™ {{SITENAME}}',
+'passwordreset-emailelement' => 'ชื่อผู้ใช้: $1
+รหัสผ่านชั่วคราว: $2',
+
# Edit page toolbar
'bold_sample' => 'ทำตัวหนา',
'bold_tip' => 'ทำตัวหนา',
@@ -683,8 +693,6 @@ $1',
'extlink_tip' => 'ลิงà¸à¹Œà¹„ปที่อื่น (อย่าลืมใส่ http:// นำหน้าเสมอ)',
'headline_sample' => 'หัวข้อ',
'headline_tip' => 'หัวข้อ',
-'math_sample' => 'ใส่สูตรที่นี่',
-'math_tip' => 'ใส่สูตรทางคณิตศาสตร์ (LaTeX)',
'nowiki_sample' => 'ใส่ข้อความที่ไม่จัดรูปà¹à¸šà¸š',
'nowiki_tip' => 'ข้ามà¸à¸²à¸£à¸ˆà¸±à¸”รูปà¹à¸šà¸šà¸§à¸´à¸à¸´',
'image_tip' => 'ใส่ภาพ',
@@ -765,7 +773,7 @@ $1 เป็นผู้ดำเนินà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¹ƒà¸™à¸„รà¸
'noarticletext-nopermission' => 'ขณะนี้ไม่มีเนื้อหาในหน้านี้
คุณสามารถ [[Special:Search/{{PAGENAME}}|ค้นหาชื่อบทความนี้]] ในหน้าอื่น
หรือ <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ค้นหาบันทึà¸à¸—ี่เà¸à¸µà¹ˆà¸¢à¸§à¸‚้อง]</span>',
-'userpage-userdoesnotexist' => 'ไม่มีบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ "$1" อยู่ในสารบบ à¸à¸£à¸¸à¸“าตรวจสอบให้à¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¸„ุณต้องà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸«à¸£à¸·à¸­à¹à¸à¹‰à¹„ขหน้านี้จริงๆ',
+'userpage-userdoesnotexist' => 'ไม่มีบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ "<nowiki>$1</nowiki>" อยู่ในสารบบ à¸à¸£à¸¸à¸“าตรวจสอบให้à¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¸„ุณต้องà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸«à¸£à¸·à¸­à¹à¸à¹‰à¹„ขหน้านี้จริงๆ',
'userpage-userdoesnotexist-view' => 'ไม่มีบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸¥à¸‡à¸—ะเบียนในชื่อ "$1"',
'blocked-notice-logextract' => 'ปัจจุบันเลขที่อยู่ไอพีนี้ถูà¸à¸šà¸¥à¹‡à¸­à¸
ปูมà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¸¥à¹ˆà¸²à¸ªà¸¸à¸”à¹à¸ªà¸”งด้านล่างนี้เพื่อà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡:',
@@ -798,6 +806,7 @@ $1 เป็นผู้ดำเนินà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¹ƒà¸™à¸„รà¸
'token_suffix_mismatch' => "'''à¸à¸²à¸£à¹à¸à¹‰à¹„ขของคุณได้ถูà¸à¸›à¸à¸´à¹€à¸ªà¸˜ เนื่องจาà¸à¹€à¸„รื่องลูà¸à¸‚่ายที่คุณใช้อยู่ได้ทำลายรูปà¹à¸šà¸šà¹€à¸„รื่องหมายวรรคตอนในตราสารประจำà¸à¸²à¸£à¹à¸à¹‰à¹„ข (edit token)'''
ระบบไม่รับà¸à¸²à¸£à¹à¸à¹‰à¹„ขของคุณเพื่อป้องà¸à¸±à¸™à¸„วามผิดพลาดของข้อมูล
ในบางครั้งปัà¸à¸«à¸²à¸™à¸µà¹‰à¸ˆà¸°à¹€à¸à¸´à¸”ขึ้นถ้าคุณใช้บริà¸à¸²à¸£à¹€à¸§à¹‡à¸šà¸žà¸£à¹‡à¸­à¸à¸‹à¸µà¸™à¸´à¸£à¸™à¸²à¸¡à¸—ี่มีบั๊à¸",
+'edit_form_incomplete' => "'''บางส่วนของà¹à¸šà¸šà¸Ÿà¸­à¸£à¹Œà¸¡à¹à¸à¹‰à¹„ขไม่ได้ติดต่อเซิร์ฟเวอร์ ตรวจสอบอีà¸à¸„รั้งว่าà¸à¸²à¸£à¹à¸à¹‰à¹„ขของคุณยังคงอยู่à¹à¸¥à¸°à¸¥à¸­à¸‡à¹ƒà¸«à¸¡à¹ˆà¸­à¸µà¸à¸„รั้ง'''",
'editing' => 'à¸à¸³à¸¥à¸±à¸‡à¹à¸à¹‰à¹„ข $1',
'editingsection' => 'à¸à¸³à¸¥à¸±à¸‡à¹à¸à¹‰à¹„ข $1 (เฉพาะส่วน)',
'editingcomment' => 'à¸à¸³à¸¥à¸±à¸‡à¹à¸à¹‰à¹„ข $1 (หัวข้อใหม่)',
@@ -1152,8 +1161,8 @@ $1",
'changepassword' => 'เปลี่ยนรหัสผ่าน',
'prefs-skin' => 'หน้าตา',
'skin-preview' => 'à¹à¸ªà¸”งตัวอย่าง',
-'prefs-math' => 'คณิตศาสตร์',
'datedefault' => 'ค่าตั้งต้น',
+'prefs-beta' => 'คุณลัà¸à¸©à¸“ะรุ่นทดสอบ',
'prefs-datetime' => 'วันที่à¹à¸¥à¸°à¹€à¸§à¸¥à¸²',
'prefs-personal' => 'รายละเอียดผู้ใช้',
'prefs-rc' => 'ปรับปรุงล่าสุด',
@@ -1176,8 +1185,6 @@ $1",
'columns' => 'คอลัมน์:',
'searchresultshead' => 'สืบค้น',
'resultsperpage' => 'รายà¸à¸²à¸£à¸•à¹ˆà¸­à¸«à¸™à¹‰à¸²:',
-'contextlines' => 'บรรทัดที่à¹à¸ªà¸”งต่อรายà¸à¸²à¸£:',
-'contextchars' => 'ตัวอัà¸à¸©à¸£à¸•à¹ˆà¸­à¸šà¸£à¸£à¸—ัด:',
'stub-threshold' => 'ขีดà¹à¸šà¹ˆà¸‡à¸ªà¸³à¸«à¸£à¸±à¸š <a href="#" class="stub">รูปà¹à¸šà¸šà¹‚ครง</a> (ความยาวบทความ):',
'stub-threshold-disabled' => 'ปิดà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™',
'recentchangesdays' => 'จำนวนวันที่à¹à¸ªà¸”งในปรับปรุงล่าสุด:',
@@ -1237,8 +1244,8 @@ $1",
'prefs-help-gender' => 'เป็นข้อมูลเสริม: ใช้เพื่อให้ซอฟต์à¹à¸§à¸£à¹Œà¸ªà¸²à¸¡à¸²à¸£à¸–à¹à¸¢à¸à¹à¸¢à¸°à¹€à¸žà¸¨à¸‚องผู้ใช้ได้ ข้อมูลนี้จะเป็นที่เปิดเผย',
'email' => 'อีเมล',
'prefs-help-realname' => 'ไม่จำเป็นต้องใส่ชื่อจริง โดยชื่อที่ใส่นั้นจะถูà¸à¹ƒà¸Šà¹‰à¹€à¸žà¸µà¸¢à¸‡à¹à¸„่à¹à¸ªà¸”งผลงานที่คุณได้ร่วมสร้างไว้',
-'prefs-help-email' => 'ไม่จำเป็นต้องใส่อีเมล à¹à¸•à¹ˆà¸à¸£à¸¸à¸“าตระหนัà¸à¸§à¹ˆà¸²à¸«à¸²à¸à¸„ุณลืมรหัสผ่าน รหัสผ่านใหม่จะถูà¸à¸ªà¹ˆà¸‡à¸œà¹ˆà¸²à¸™à¸­à¸µà¹€à¸¡à¸¥à¸‚องคุณ
-à¹à¸¥à¸°à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸œà¸¹à¹‰à¸­à¸·à¹ˆà¸™à¸ªà¸²à¸¡à¸²à¸£à¸–ติดต่อคุณผ่านอีเมลที่ใส่นี้ จาà¸à¸«à¸™à¹‰à¸²à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰ หรือคุยà¸à¸±à¸šà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‚องคุณ à¹à¸•à¹ˆà¸­à¸µà¹€à¸¡à¸¥à¸‚องคุณจะไม่ปราà¸à¸à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¸­à¸·à¹ˆà¸™à¹€à¸«à¹‡à¸™à¹à¸•à¹ˆà¸­à¸¢à¹ˆà¸²à¸‡à¹ƒà¸”',
+'prefs-help-email' => 'ที่อยู่อีเมลไม่จำเป็นต้องใส่ à¹à¸•à¹ˆà¸ˆà¸³à¹€à¸›à¹‡à¸™à¸ªà¸³à¸«à¸£à¸±à¸šà¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸£à¸«à¸±à¸ªà¸œà¹ˆà¸²à¸™à¹ƒà¸«à¸¡à¹ˆà¹€à¸¡à¸·à¹ˆà¸­à¸„ุณลืมรหัสผ่านของคุณ',
+'prefs-help-email-others' => 'นอà¸à¸ˆà¸²à¸à¸™à¸µà¹‰à¸„ุณยังสามารถเลือà¸à¸—ี่จะให้คนอื่นติดต่อคุณผ่านทางหน้าผู้ใช้หรือหน้าพูดคุยของคุณ โดยไม่จำเป็นต้องเปิดเผยตัวตนของคุณ',
'prefs-help-email-required' => 'ต้องà¸à¸²à¸£à¸—ี่อยู่อีเมล',
'prefs-info' => 'ข้อมูลเบื้องต้น',
'prefs-i18n' => 'ระบบภาษาหรือเขตพื้นที่',
@@ -1363,7 +1370,6 @@ $1",
'right-userrights' => 'à¹à¸à¹‰à¹„ขสิทธิผู้ใช้ทั้งหมด',
'right-userrights-interwiki' => 'à¹à¸à¹‰à¹„ขสิทธิของผู้ใช้อื่นบนวิà¸à¸´à¸­à¸·à¹ˆà¸™',
'right-siteadmin' => 'ล็อà¸à¹à¸¥à¸°à¸›à¸¥à¸”ล็อà¸à¸à¸²à¸™à¸‚้อมูล',
-'right-reset-passwords' => 'ตั้งรหัสผ่านของผู้ใช้อื่นใหม่',
'right-override-export-depth' => 'ส่งออà¸à¸«à¸™à¹‰à¸² รวมหน้าที่เชื่อมโยงà¸à¸±à¸šà¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¸ªà¸¹à¸‡à¸ªà¸¸à¸” 5 ลำดับชั้น',
'right-sendemail' => 'ส่งอีเมลไปยังผู้ใช้อื่นๆ',
@@ -1492,11 +1498,12 @@ $1",
'minlength1' => 'ชื่อไฟล์ต้องมีตัวอัà¸à¸©à¸£à¸­à¸¢à¹ˆà¸²à¸‡à¸™à¹‰à¸­à¸¢à¸«à¸™à¸¶à¹ˆà¸‡à¸•à¸±à¸§à¸­à¸±à¸à¸©à¸£',
'illegalfilename' => 'ชื่อไฟล์ "$1" มีตัวอัà¸à¸©à¸£à¸—ี่ไม่สามารถนำมาใช้ได้ à¸à¸£à¸¸à¸“าเปลี่ยนชื่อไฟล์à¹à¸¥à¸°à¸­à¸±à¸›à¹‚หลดอีà¸à¸„รั้งหนึ่ง',
'badfilename' => 'ชื่อไฟล์ถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹€à¸›à¹‡à¸™ "$1"',
-'filetype-mime-mismatch' => 'นามสà¸à¸¸à¸¥à¸Šà¸™à¸´à¸”ไฟล์ไม่ตรงà¸à¸±à¸šà¸Šà¸™à¸´à¸” MIME',
+'filetype-mime-mismatch' => 'นามสà¸à¸¸à¸¥à¹„ฟล์ ".$1" ไม่ตรงà¸à¸±à¸šà¸Šà¸™à¸´à¸” MIME ของà¹à¸Ÿà¹‰à¸¡à¸—ี่ตรวจพบ ($2)',
'filetype-badmime' => 'ไม่อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¸­à¸±à¸›à¹‚หลดไฟล์ที่เป็นไมม์ชนิด "$1"',
'filetype-bad-ie-mime' => 'ไม่สามารถอัปโหลดไฟล์นี้เนื่องจาภInternet Explorer จะตรวจจับว่าเป็น "$1" ซึ่งเป็นชนิดไฟล์ที่ไม่อนุà¸à¸²à¸•à¹à¸¥à¸°à¸­à¸²à¸ˆà¹€à¸›à¹‡à¸™à¸­à¸±à¸™à¸•à¸£à¸²à¸¢',
'filetype-unwanted-type' => "{{PLURAL:\$3|ไฟล์|ไฟล์}}ชนิด '''\".\$1\"''' เป็นไฟล์ที่ไม่สามารถอัปโหลดได้ ไฟล์ที่สามารถใช้ได้ ได้à¹à¸à¹ˆ \$2",
-'filetype-banned-type' => "ไม่อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹ƒà¸Šà¹‰à¹„ฟล์ชนิด '''\".\$1\"''' {{PLURAL:\$3|ชนิดของไฟล์|ชนิดของไฟล์}}ที่อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹ƒà¸Šà¹‰à¹„ด้คือ \$2",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL: $4|เป็นชนิดไฟล์ที่ไม่อนุà¸à¸²à¸•|เป็นชนิดไฟล์ที่ไม่อนุà¸à¸²à¸•}}
+{{PLURAL: $3|ชนิดไฟล์|ชนิดไฟล์}}ที่อนุà¸à¸²à¸•à¸„ือ $2',
'filetype-missing' => 'นามสà¸à¸¸à¸¥à¹„ฟล์หายไป (เช่น ".jpg")',
'empty-file' => 'ไฟล์ที่คุณส่งมานั้นไม่มีข้อมูล',
'file-too-large' => 'ไฟล์ที่คุณส่งมามีขนาดใหà¸à¹ˆà¹€à¸à¸´à¸™à¹„ป',
@@ -1512,6 +1519,7 @@ $1",
'large-file' => 'ไฟล์ไม่ควรมีขนาดใหà¸à¹ˆà¸à¸§à¹ˆà¸² $1 ไฟล์นี้มีขนาด $2',
'largefileserver' => 'ไฟล์นี้มีขนาดใหà¸à¹ˆà¸à¸§à¹ˆà¸²à¸„่าที่อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¹ƒà¸Šà¹‰à¹„ด้',
'emptyfile' => 'ไฟล์ที่อัปโหลดมาเหมือนไฟล์ว่าง อาจเà¸à¸´à¸”จาà¸à¸›à¸±à¸à¸«à¸²à¸žà¸´à¸¡à¸žà¹Œà¸Šà¸·à¹ˆà¸­à¹„ฟล์ผิด à¸à¸£à¸¸à¸“าตรวจสอบไฟล์อีà¸à¸„รั้ง à¹à¸¥à¸°à¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¸•à¹‰à¸­à¸‡à¸à¸²à¸£à¸—ี่จะอัปโหลดไฟล์นี้',
+'windows-nonascii-filename' => 'วิà¸à¸´à¸™à¸µà¹‰à¹„ม่รองรับชื่อไฟล์ที่มีตัวอัà¸à¸©à¸£à¸žà¸´à¹€à¸¨à¸©',
'fileexists' => "มีไฟล์ชื่อนี้อยู่à¹à¸¥à¹‰à¸§ à¸à¸£à¸¸à¸“าตรวจสอบ '''<tt>[[:$1]]</tt>''' หาà¸à¸„ุณไม่à¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¸•à¹‰à¸­à¸‡à¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¹„ฟล์นี้หรือไม่ [[$1|thumb]]",
'filepageexists' => "หน้าคำอธิบายสำหรับไฟล์นี้ได้ถูà¸à¸ªà¸£à¹‰à¸²à¸‡à¹„ว้à¹à¸¥à¹‰à¸§à¸—ี่ '''<tt>[[:$1]]</tt>''' à¹à¸•à¹ˆà¹„ฟล์ชื่อนี้ไม่มีอยู่ในปัจจุบัน
สาระสำคัà¸à¸—ี่คุณบันทึà¸à¸ˆà¸°à¹„ม่ปราà¸à¸à¸šà¸™à¸«à¸™à¹‰à¸²à¸„ำอธิบาย
@@ -1558,10 +1566,6 @@ $1",
'upload-options' => 'ตัวเลือà¸à¸­à¸±à¸›à¹‚หลด',
'watchthisupload' => 'เà¸à¹‰à¸²à¸”ูไฟล์นี้',
'filewasdeleted' => 'ไฟล์ในชื่อนี้ได้ถูà¸à¸­à¸±à¸›à¹‚หลดà¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¹à¸¥à¸°à¸–ูà¸à¸¥à¸šà¹„ปà¹à¸¥à¹‰à¸§ à¸à¸£à¸¸à¸“าตรวจสอบ $1 à¸à¹ˆà¸­à¸™à¸—ี่จะอัปโหลดใหม่อีà¸à¸„รั้ง',
-'upload-wasdeleted' => "'''คำเตือน: คุณà¸à¸³à¸¥à¸±à¸‡à¸ˆà¸°à¸­à¸±à¸›à¹‚หลดไฟล์ที่เคยถูà¸à¸¥à¸šà¹„ปà¹à¸¥à¹‰à¸§'''
-
-โปรดพิจารณาความเหมาะสมว่าจะยังอัปโหลดไฟล์นี้ต่อหรือไม่
-นี่คือปูมà¸à¸²à¸£à¸¥à¸šà¸‚องไฟล์เพื่อประà¸à¸­à¸šà¸à¸²à¸£à¸•à¸±à¸”สินใจ:",
'filename-bad-prefix' => "ไฟล์ที่คุณà¸à¸³à¸¥à¸±à¸‡à¸ˆà¸°à¸­à¸±à¸›à¹‚หลดเข้ามานี้มีชื่อที่ขึ้นต้นด้วย '''\"\$1\"''' ซึ่งเป็นชื่อที่ไม่สื่อความหมายใดๆ (โดยปà¸à¸•à¸´à¹à¸¥à¹‰à¸§à¸Šà¸·à¹ˆà¸­à¸™à¸µà¹‰à¸ˆà¸°à¸–ูà¸à¸•à¸±à¹‰à¸‡à¸¡à¸²à¹‚ดยà¸à¸¥à¹‰à¸­à¸‡à¸–่ายรูปดิจิทัล). à¸à¸£à¸¸à¸“าตั้งชื่อไฟล์ใหม่ที่สื่อความหมายมาà¸à¸à¸§à¹ˆà¸²à¹€à¸”ิม",
'upload-success-subj' => 'อัปโหลดสำเร็จ',
'upload-success-msg' => 'à¸à¸²à¸£à¸­à¸±à¸›à¹‚หลดของคุณจาภ[$2] สำเร็จà¹à¸¥à¹‰à¸§ à¹à¸¥à¸°à¸ªà¸²à¸¡à¸²à¸£à¸–ใช้ไฟล์ได้ที่นี่: [[:{{ns:file}}:$1]]',
@@ -1582,6 +1586,15 @@ $1',
'upload-unknown-size' => 'ไม่ทราบขนาด',
'upload-http-error' => 'เà¸à¸´à¸”ข้อผิดพลาด HTTP: $1',
+# Special:UploadStash
+'uploadstash' => 'อัปโหลดไฟล์ซ่อน',
+'uploadstash-summary' => 'หน้านี้สามารถเข้าถึงไฟล์ที่ถูà¸à¸­à¸±à¸›à¹‚หลด (หรืออยู่ในà¸à¸£à¸°à¸šà¸§à¸™à¸à¸²à¸£à¸­à¸±à¸›à¹‚หลด) à¹à¸•à¹ˆà¸¢à¸±à¸‡à¹„ม่ได้เผยà¹à¸žà¸£à¹ˆà¹„ปยังวิà¸à¸´ คนทั่วไปยังไม่สามารถมองเห็นไฟล์เหล่านี้ได้ เว้นà¹à¸•à¹ˆà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸—ี่อัปโหลดเข้ามา',
+'uploadstash-clear' => 'ล้างไฟล์ซ่อน',
+'uploadstash-nofiles' => 'คุณไม่มีไฟล์ซ่อน',
+'uploadstash-badtoken' => 'ดำเนินà¸à¸²à¸£à¸›à¸à¸´à¸šà¸±à¸•à¸´à¹„ม่สำเร็จ อาจเนื่องจาà¸à¸‚้อมูลà¸à¸²à¸£à¹à¸à¹‰à¹„ขประจำตัวของคุณหมดอายุà¹à¸¥à¹‰à¸§ à¸à¸£à¸¸à¸“าลองใหม่',
+'uploadstash-errclear' => 'à¸à¸²à¸£à¸¥à¹‰à¸²à¸‡à¹„ฟล์ไม่สำเร็จ',
+'uploadstash-refresh' => 'ฟื้นฟูรายà¸à¸²à¸£à¹„ฟล์',
+
# img_auth script messages
'img-auth-accessdenied' => 'à¸à¸²à¸£à¹€à¸‚้าถึงถูà¸à¸ˆà¸³à¸à¸±à¸”',
'img-auth-nopathinfo' => 'ค่า PATH_INFO สูà¸à¸«à¸²à¸¢
@@ -1662,7 +1675,6 @@ $1',
ดูเพิ่มได้ที่[[Special:WhatLinksHere/$2|รายชื่อเต็ม]]',
'nolinkstoimage' => 'ไม่มีหน้าที่ใช้ภาพนี้',
'morelinkstoimage' => 'ดู[[Special:WhatLinksHere/$1|หน้าที่ลิงà¸à¹Œ]]มายังไฟล์นี้เพิ่มเติม',
-'redirectstofile' => '{{PLURAL:$1|ไฟล์|$1 ไฟล์}}ดังต่อไปนี้เปลี่ยนทางมาที่ไฟล์นี้:',
'duplicatesoffile' => '{{PLURAL:$1|ไฟล์|$1 ไฟล์}}ต่อไปนี้ เป็นไฟล์เดียวà¸à¸±à¸šà¹„ฟล์นี้ ([[Special:FileDuplicateSearch/$2|รายละเอียดเพิ่ม]]):',
'sharedupload' => 'ไฟล์นี้มาจาภ$1 à¹à¸¥à¸°à¸­à¸²à¸ˆà¸¡à¸µà¸à¸²à¸£à¹ƒà¸Šà¹‰à¹ƒà¸™à¹‚ครงà¸à¸²à¸£à¸­à¸·à¹ˆà¸™',
'sharedupload-desc-there' => 'ไฟล์นี้มาจาภ$1 à¹à¸¥à¸°à¸­à¸²à¸ˆà¸–ูà¸à¹ƒà¸Šà¹‰à¸šà¸™à¹‚ครงà¸à¸²à¸£à¸­à¸·à¹ˆà¸™ ๆ
@@ -1756,12 +1768,13 @@ $1',
หน้าใดที่เรียà¸à¹ƒà¸Šà¹‰ [[MediaWiki:Disambiguationspage]] หน้าเหล่านั้นจะถูà¸à¸™à¸±à¸šà¹€à¸›à¹‡à¸™à¸«à¸™à¹‰à¸²à¸„ำà¸à¸³à¸à¸§à¸¡",
-'doubleredirects' => 'หน้าเปลี่ยนทางซ้ำซ้อน',
-'doubleredirectstext' => 'หน้านี้à¹à¸ªà¸”งรายà¸à¸²à¸£à¸Šà¸·à¹ˆà¸­à¸—ี่เปลี่ยนทางไปยังหน้าเปลี่ยนทางอื่น
+'doubleredirects' => 'หน้าเปลี่ยนทางซ้ำซ้อน',
+'doubleredirectstext' => 'หน้านี้à¹à¸ªà¸”งรายà¸à¸²à¸£à¸Šà¸·à¹ˆà¸­à¸—ี่เปลี่ยนทางไปยังหน้าเปลี่ยนทางอื่น
à¹à¸•à¹ˆà¸¥à¸°à¹à¸–วคือลิงà¸à¹Œà¸‚องà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸—างครั้งà¹à¸£à¸à¹à¸¥à¸°à¸„รั้งที่สอง พร้อมà¸à¸±à¸šà¸«à¸™à¹‰à¸²à¸›à¸¥à¸²à¸¢à¸—างของà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸—างครั้งที่สอง ซึ่งควรà¹à¸à¹‰à¹„ขà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸—างครั้งà¹à¸£à¸à¹€à¸›à¹‡à¸™à¸«à¸™à¹‰à¸²à¸›à¸¥à¸²à¸¢à¸—างดังà¸à¸¥à¹ˆà¸²à¸§
รายà¸à¸²à¸£à¸—ี่ <del>ขีดฆ่า</del> คือรายà¸à¸²à¸£à¸—ี่à¹à¸à¹‰à¹„ขà¹à¸¥à¹‰à¸§',
-'double-redirect-fixed-move' => '[[$1]] ถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸Šà¸·à¹ˆà¸­à¹à¸¥à¹‰à¸§ à¹à¸¥à¸°à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸—างไปยัง [[$2]]',
-'double-redirect-fixer' => 'Redirect fixer',
+'double-redirect-fixed-move' => '[[$1]] ถูà¸à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸Šà¸·à¹ˆà¸­à¹à¸¥à¹‰à¸§ à¹à¸¥à¸°à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸—างไปยัง [[$2]]',
+'double-redirect-fixed-maintenance' => 'à¸à¸²à¸£à¹à¸à¹‰à¹„ขà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸—างซ้ำซ้อนจาภ[[$1]] ไปยัง [[$2]]',
+'double-redirect-fixer' => 'Redirect fixer',
'brokenredirects' => 'หน้าเปลี่ยนทางเสีย',
'brokenredirectstext' => 'หน้าเปลี่ยนทางต่อไปนี้เชื่อมโยงไปยังหน้าที่ไม่มี:',
@@ -1838,6 +1851,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|ใหม่à¸à¸§à¹ˆà¸² 1|ใหม่à¸à¸§à¹ˆà¸² $1}}',
'pager-older-n' => '{{PLURAL:$1|เà¸à¹ˆà¸²à¸à¸§à¹ˆà¸² 1|เà¸à¹ˆà¸²à¸à¸§à¹ˆà¸² $1}}',
'suppress' => 'ความผิดพลาดที่ไม่ทันสังเà¸à¸•',
+'querypage-disabled' => 'หน้าพิเศษนี้ถูà¸à¸›à¸´à¸”à¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸”้วยเหตุผลเพื่อประสิทธิภาพในà¸à¸²à¸£à¸—ำงาน',
# Book sources
'booksources' => 'ค้นหาหนังสือ',
@@ -1977,11 +1991,9 @@ $1',
'watchlistanontext' => 'à¸à¸£à¸¸à¸“า $1 เพื่อที่จะดูหรือà¹à¸à¹‰à¹„ขหน้าในรายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ู',
'watchnologin' => 'ไม่ได้ล็อà¸à¸­à¸´à¸™',
'watchnologintext' => 'ต้อง[[Special:UserLogin|ล็อà¸à¸­à¸´à¸™]]เพื่อที่จะà¹à¸à¹‰à¹„ขรายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ู',
-'addedwatch' => 'ถูà¸à¹ƒà¸ªà¹ˆà¹€à¸‚้ารายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ู',
'addedwatchtext' => 'หน้า "[[:$1]]" ถูà¸à¹ƒà¸ªà¹ˆà¹€à¸‚้าไปใน[[Special:Watchlist|รายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ู]]ของคุณ ถ้ามีà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¹€à¸à¸´à¸”ขึ้นในหน้าเหล่านี้ รวมถึงหน้าพูดคุยของหน้านี้
รายชื่อหน้าจะà¹à¸ªà¸”งเป็นตัวหนาในส่วนของ[[Special:RecentChanges|หน้าà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸¥à¹ˆà¸²à¸ªà¸¸à¸”]]เพื่อให้โดดเด่นเป็นที่สังเà¸à¸•
ถ้าไม่ต้องà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ูให้à¸à¸”ที่ "เลิà¸à¹€à¸à¹‰à¸²à¸”ู" ในส่วนของเมนู',
-'removedwatch' => 'ถูà¸à¸™à¸³à¸­à¸­à¸à¸ˆà¸²à¸à¸£à¸²à¸¢à¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ู',
'removedwatchtext' => 'หน้า "[[:$1]]" ถูà¸à¸™à¸³à¸­à¸­à¸à¸ˆà¸²à¸[[Special:Watchlist|รายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ูของท่าน]]',
'watch' => 'เà¸à¹‰à¸²à¸”ู',
'watchthispage' => 'เà¸à¹‰à¸²à¸”ูหน้านี้',
@@ -2035,13 +2047,13 @@ $NEWPAGE
--
ถ้าต้องà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¹à¸›à¸¥à¸‡à¸£à¸²à¸¢à¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ู à¸à¸£à¸¸à¸“าไปที่:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
ถ้าต้องà¸à¸²à¸£à¸¥à¸šà¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¸ˆà¸²à¸à¸£à¸²à¸¢à¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ู à¸à¸£à¸¸à¸“าไปที่:
$UNWATCHURL
ถ้าต้องà¸à¸²à¸£à¸„วามช่วยเหลือเพิ่มเติม à¸à¸£à¸¸à¸“าไปที่:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'ลบหน้า',
@@ -2057,7 +2069,7 @@ $UNWATCHURL
à¸à¸£à¸¸à¸“ายืนยันว่าต้องà¸à¸²à¸£à¸”ำเนินà¸à¸²à¸£à¸•à¹ˆà¸­à¹à¸¥à¸°à¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¹„ด้เข้าใจà¹à¸¥à¸°à¸à¸²à¸£à¸¥à¸šà¸„รั้งนี้สอดคล้องà¸à¸±à¸š[[{{MediaWiki:Policy-url}}]]',
'actioncomplete' => 'จัดà¸à¸²à¸£à¸ªà¸³à¹€à¸£à¹‡à¸ˆ',
'actionfailed' => 'à¸à¸²à¸£à¸à¸£à¸°à¸—ำล้มเหลว',
-'deletedtext' => '"<nowiki>$1</nowiki>" ถูà¸à¸¥à¸š
+'deletedtext' => '"$1" ถูà¸à¸¥à¸š
ดู $2 สำหรับบันทึà¸à¸à¸²à¸£à¸¥à¸šà¸¥à¹ˆà¸²à¸ªà¸¸à¸”',
'deletedarticle' => '"[[$1]]" ถูà¸à¸¥à¸š',
'suppressedarticle' => '"[[$1]]" ระงับà¹à¸¥à¹‰à¸§',
@@ -2110,7 +2122,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'เวลาหมดอายุไม่ถูà¸à¸•à¹‰à¸­à¸‡',
'protect_expiry_old' => 'เวลาหมดอายุผ่านมาà¹à¸¥à¹‰à¸§',
'protect-unchain-permissions' => 'ปลดล็อà¸à¸•à¸±à¸§à¹€à¸¥à¸·à¸­à¸à¸›à¹‰à¸­à¸‡à¸à¸±à¸™à¸­à¸·à¹ˆà¸™à¹†',
-'protect-text' => "ดูà¹à¸¥à¸°à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸£à¸°à¸”ับà¸à¸²à¸£à¸¥à¹‡à¸­à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¸«à¸™à¹‰à¸² '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "ดูà¹à¸¥à¸°à¹€à¸›à¸¥à¸µà¹ˆà¸¢à¸™à¸£à¸°à¸”ับà¸à¸²à¸£à¸¥à¹‡à¸­à¸à¸ªà¸³à¸«à¸£à¸±à¸šà¸«à¸™à¹‰à¸² '''$1'''.",
'protect-locked-blocked' => "ไม่สามารถเปลี่ยนระดับà¸à¸²à¸£à¸¥à¹‡à¸­à¸à¸«à¸™à¹‰à¸²à¸‚ณะที่ถูà¸à¸šà¸¥à¹‡à¸­à¸à¹„ด้ ดูระดับà¸à¸²à¸£à¸¥à¹‡à¸­à¸à¸‚องหน้า '''$1''':",
'protect-locked-dblock' => "ไม่สามารถเปลี่ยนระดับà¸à¸²à¸£à¸¥à¹‡à¸­à¸à¸«à¸™à¹‰à¸²à¹„ด้เนื่องจาà¸à¸à¸²à¸™à¸‚้อมูลถูà¸à¸¥à¹‡à¸­à¸ ดูระดับà¸à¸²à¸£à¸¥à¹‡à¸­à¸à¸‚องหน้า '''$1''':",
'protect-locked-access' => "คุณไม่สามารถเปลี่ยนระดับà¸à¸²à¸£à¸¥à¹‡à¸­à¸à¸«à¸™à¹‰à¸²à¹„ด้ เนื่องจาà¸à¸„ุณไม่มีสิทธิ ดูระดับà¸à¸²à¸£à¸¥à¹‡à¸­à¸à¸‚องหน้า '''$1''':",
@@ -2202,9 +2214,10 @@ $1',
'undelete-show-file-submit' => 'ใช่',
# Namespace form on various pages
-'namespace' => 'เนมสเปซ:',
-'invert' => 'ทั้งหมดที่ไม่ได้เลือà¸',
-'blanknamespace' => '(หลัà¸)',
+'namespace' => 'เนมสเปซ:',
+'invert' => 'ทั้งหมดที่ไม่ได้เลือà¸',
+'namespace_association' => 'เนมสเปซที่เà¸à¸µà¹ˆà¸¢à¸§à¸‚้อง',
+'blanknamespace' => '(หลัà¸)',
# Contributions
'contributions' => 'เรื่องที่เขียนโดยผู้ใช้นี้',
@@ -2254,12 +2267,13 @@ $1',
'whatlinkshere-filters' => 'ตัวà¸à¸£à¸­à¸‡',
# Block/unblock
+'block' => 'บล็อà¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰',
+'unblock' => 'ปลดบล็อà¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰',
'blockip' => 'บล็อà¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰',
'blockip-title' => 'ระงับผู้ใช้',
'blockip-legend' => 'บล็อà¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰',
'blockiptext' => 'ใช้ฟอร์มด้านล่างสำหรับà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¸«à¸¡à¸²à¸¢à¹€à¸¥à¸‚ไอพีหรือผู้ใช้ ซึ่งà¸à¹ˆà¸­à¸à¸§à¸™à¸£à¸°à¸šà¸š โดยà¹à¸™à¹ˆà¹ƒà¸ˆà¸§à¹ˆà¸²à¹„ด้ทำตาม [[{{MediaWiki:Policy-url}}|นโยบาย]]
ใส่สาเหตุด้านล่าง (ตัวอย่าง หน้าที่ถูà¸à¸à¹ˆà¸­à¸à¸§à¸™)',
-'ipaddress' => 'หมายเลขไอพี:',
'ipadressorusername' => 'หมายเลขไอพีหรือชื่อผู้ใช้',
'ipbexpiry' => 'หมดอายุ',
'ipbreason' => 'เหตุผล:',
@@ -2272,7 +2286,6 @@ $1',
** คุà¸à¸„ามผู้อื่น
** à¸à¹ˆà¸­à¸à¸§à¸™à¸œà¸¹à¹‰à¸­à¸·à¹ˆà¸™
** ชื่อผู้ใช้ที่ไม่สุภาพหรือไม่ควรใช้',
-'ipbanononly' => 'บล็อà¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸™à¸´à¸£à¸™à¸²à¸¡à¹€à¸—่านั้น',
'ipbcreateaccount' => 'ป้องà¸à¸±à¸™à¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸šà¸±à¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰',
'ipbemailban' => 'ป้องà¸à¸±à¸™à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸ªà¹ˆà¸‡à¸­à¸µà¹€à¸¡à¸¥à¸œà¹ˆà¸²à¸™à¸£à¸°à¸šà¸š',
'ipbenableautoblock' => 'บล็อà¸à¸«à¸¡à¸²à¸¢à¹€à¸¥à¸‚ไอพีนี้à¹à¸¥à¸°à¹„อพีที่ผู้ใช้นี้อาจจะใช้',
@@ -2283,8 +2296,8 @@ $1',
'ipbotherreason' => 'เหตุผลอื่น',
'ipbhidename' => 'ซ่อนผู้้ใช้จาà¸à¸šà¸±à¸™à¸—ึà¸à¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸ à¹à¸¥à¸°à¸£à¸²à¸¢à¸à¸²à¸£à¸œà¸¹à¹‰à¸—ี่ถูà¸à¸šà¸¥à¹‡à¸­à¸',
'ipbwatchuser' => 'เà¸à¹‰à¸²à¸”ูหน้าผู้ใช้à¹à¸¥à¸°à¸«à¸™à¹‰à¸²à¸„ุยà¸à¸±à¸šà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸‚องผู้ใช้รายนี้',
-'ipballowusertalk' => 'อนุà¸à¸²à¸•à¹ƒà¸«à¹‰à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸£à¸²à¸¢à¸™à¸µà¹‰à¹à¸à¹‰à¹„ขหน้าพูดคุยของตนเอง ขณะที่ถูà¸à¸šà¸¥à¹‡à¸­à¸',
'ipb-change-block' => 'บล็อà¸à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸­à¸µà¸à¸„รั้งด้วยà¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่าเหล่านี้',
+'ipb-confirm' => 'ยืนยันà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸',
'badipaddress' => 'หมายเลขไอพีไม่ถูà¸à¸•à¹‰à¸­à¸‡',
'blockipsuccesssub' => 'บล็อà¸à¹€à¸£à¸µà¸¢à¸šà¸£à¹‰à¸­à¸¢',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ถูà¸à¸šà¸¥à¹‡à¸­à¸
@@ -2298,17 +2311,14 @@ $1',
'unblockiptext' => 'ใช้à¹à¸šà¸šà¸Ÿà¸­à¸£à¹Œà¸¡à¸”้านล่างสำหรับบล็อà¸à¸«à¸£à¸·à¸­à¹€à¸¥à¸´à¸à¸šà¸¥à¹‡à¸­à¸à¸«à¸¡à¸²à¸¢à¹€à¸¥à¸‚ไอพี หรือผู้ใช้',
'ipusubmit' => 'ยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¸™à¸µà¹‰',
'unblocked' => '[[User:$1|$1]] ถูà¸à¸šà¸¥à¹‡à¸­à¸',
+'unblocked-range' => '$1 ถูà¸à¸›à¸¥à¸”บล็อà¸à¹à¸¥à¹‰à¸§',
'unblocked-id' => 'เลิà¸à¸šà¸¥à¹‡à¸­à¸ $1',
+'blocklist' => 'ผู้ใช้ที่ถูà¸à¸šà¸¥à¹‡à¸­à¸',
'ipblocklist' => 'หมายเลขไอพีà¹à¸¥à¸°à¸œà¸¹à¹‰à¹ƒà¸Šà¹‰à¸—ี่ถูà¸à¸šà¸¥à¹‡à¸­à¸',
'ipblocklist-legend' => 'ค้นหาผู้ใช้ที่ถูà¸à¸£à¸°à¸‡à¸±à¸šà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™',
-'ipblocklist-username' => 'ชื่อผู้ใช้หรือหมายเลขไอพี:',
-'ipblocklist-sh-userblocks' => '$1 à¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¸Šà¸·à¹ˆà¸­à¸šà¸±à¸à¸Šà¸µ',
-'ipblocklist-sh-tempblocks' => '$1 à¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¸Šà¸±à¹ˆà¸§à¸„ราว',
-'ipblocklist-sh-addressblocks' => '$1 à¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¸‚องไอพีเดี่ยว',
'ipblocklist-submit' => 'สืบค้น',
'ipblocklist-localblock' => 'à¸à¸²à¸£à¸ªà¸à¸±à¸”à¸à¸±à¹‰à¸™à¸ à¸²à¸¢à¹ƒà¸™à¸§à¸´à¸à¸´à¸™à¸µà¹‰',
'ipblocklist-otherblocks' => '{{PLURAL:$1|à¸à¸²à¸£à¸ªà¸à¸±à¸”à¸à¸±à¹‰à¸™}}อื่นๆ',
-'blocklistline' => '$1, $2 บล็อภ$3 ($4)',
'infiniteblock' => 'ตลอดà¸à¸²à¸¥',
'expiringblock' => 'หมดอายุ $1 เวลา $2',
'anononlyblock' => 'ไม่ล็อà¸à¸­à¸´à¸™à¹€à¸—่านั้น',
@@ -2330,7 +2340,7 @@ $1',
ปูมà¸à¸²à¸£à¸£à¸°à¸‡à¸±à¸šà¹à¸ªà¸”งไว้ด้านล่างนี้เพื่อà¸à¸²à¸£à¸­à¹‰à¸²à¸‡à¸­à¸´à¸‡:',
'blocklogentry' => 'บล็อภ"[[$1]]" หมดอายุ $2 $3',
'reblock-logentry' => 'เปลี่ยนระดับà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¸ªà¸³à¸«à¸£à¸±à¸š [[$1]] หมดอายุ $2 $3',
-'blocklogtext' => 'ด้านล่างเป็นบันทึà¸à¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¹à¸¥à¸°à¸à¸²à¸£à¹€à¸¥à¸´à¸à¸šà¸¥à¹‡à¸­à¸ ส่วนà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¸­à¸±à¸•à¹‚นมัติจะไม่ถูà¸à¸£à¸§à¸¡à¸­à¸¢à¸¹à¹ˆà¹ƒà¸™à¸£à¸²à¸¢à¸à¸²à¸£à¸™à¸µà¹‰ ดู [[Special:IPBlockList|รายà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¹„อพี]] สำหรับà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¸—ั้งหมด',
+'blocklogtext' => 'ด้านล่างเป็นบันทึà¸à¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¹à¸¥à¸°à¸à¸²à¸£à¹€à¸¥à¸´à¸à¸šà¸¥à¹‡à¸­à¸ ส่วนà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¸­à¸±à¸•à¹‚นมัติจะไม่ถูà¸à¸£à¸§à¸¡à¸­à¸¢à¸¹à¹ˆà¹ƒà¸™à¸£à¸²à¸¢à¸à¸²à¸£à¸™à¸µà¹‰ ดู [[Special:BlockList|รายà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¹„อพี]] สำหรับà¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¸—ั้งหมด',
'unblocklogentry' => 'เลิà¸à¸šà¸¥à¹‡à¸­à¸ $1',
'block-log-flags-anononly' => 'ผู้ใช้นิรนามเท่านั้น',
'block-log-flags-nocreate' => 'ห้ามสร้างบัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰',
@@ -2344,8 +2354,7 @@ $1',
'ipb_expiry_temp' => 'ผู้ใช้ที่ถูà¸à¸šà¸¥à¹‡à¸­à¸à¸ˆà¸°à¸‹à¹ˆà¸­à¸™à¹‚ดยถาวร',
'ipb_hide_invalid' => 'ไม่สามารถยับยั้งชื่อผู้ใช้นี้ได้ เนื่องจาà¸à¸­à¸²à¸ˆà¸ˆà¸°à¸¡à¸µà¸à¸²à¸£à¹à¸à¹‰à¹„ขมาà¸à¹€à¸à¸´à¸™à¹„ป',
'ipb_already_blocked' => '"$1" ถูà¸à¸šà¸¥à¹‡à¸­à¸à¹à¸¥à¹‰à¸§à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰',
-'ipb-needreblock' => '== ถูà¸à¸šà¸¥à¹‡à¸­à¸à¹à¸¥à¹‰à¸§ ==
-$1 ถูà¸à¸šà¸¥à¹‡à¸­à¸à¹à¸¥à¹‰à¸§ คุณต้องà¸à¸²à¸£à¹à¸à¹‰à¹„ขหรือไม่',
+'ipb-needreblock' => '$1 ถูà¸à¸šà¸¥à¹‡à¸­à¸à¹à¸¥à¹‰à¸§ คุณต้องà¸à¸²à¸£à¹à¸à¹‰à¹„ขหรือไม่',
'ipb-otherblocks-header' => '{{PLURAL:$1|à¸à¸²à¸£à¸£à¸°à¸‡à¸±à¸š|à¸à¸²à¸£à¸£à¸°à¸‡à¸±à¸š}}อื่นๆ',
'ipb_cant_unblock' => 'ปัà¸à¸«à¸²: หมายเลขบล็อภ$1 ไม่พบ อาจเà¸à¸´à¸”จาà¸à¹„ด้ถูà¸à¸¢à¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸šà¸¥à¹‡à¸­à¸à¹à¸¥à¹‰à¸§',
'ipb_blocked_as_range' => 'มีข้อผิดพลาด: หมายเลขไอพี $1 ไม่ได้ถูà¸à¸£à¸°à¸‡à¸±à¸šà¹‚ดยตรงà¹à¸¥à¸°à¹„ม่สามารถยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸£à¸°à¸‡à¸±à¸šà¹‚ดยตรงได้. อย่างไรà¸à¹‡à¸•à¸²à¸¡ ไอพีนี้ถูà¸à¸£à¸°à¸‡à¸±à¸šà¹ƒà¸™à¸à¸²à¸™à¸°à¸—ี่เป็นส่วนหนึ่งของหมายเลขไอพีในช่วง $2 ซึ่งสามารถยà¸à¹€à¸¥à¸´à¸à¸à¸²à¸£à¸£à¸°à¸‡à¸±à¸šà¹„ด้',
@@ -2496,7 +2505,7 @@ $1 ถูà¸à¸šà¸¥à¹‡à¸­à¸à¹à¸¥à¹‰à¸§ คุณต้องà¸à¸²à¸£à¹à¸à¹‰à
'allmessagesdefault' => 'ข้อความตั้งต้น',
'allmessagescurrent' => 'ข้อความปัจจุบัน',
'allmessagestext' => 'รายà¸à¸²à¸£à¸‚้อความของระบบ อยู่ในเนมสเปซมีเดียวิà¸à¸´
-à¸à¸£à¸¸à¸“าไปที่ [http://www.mediawiki.org/wiki/Localisation มีเดียวิà¸à¸´] à¹à¸¥à¸° [http://translatewiki.new translatewiki.net] ถ้าคุณยังอยาà¸à¸—ี่จะà¹à¸›à¸¥à¸‚้อความของระบบมีเดียวิà¸à¸´',
+à¸à¸£à¸¸à¸“าไปที่ [//www.mediawiki.org/wiki/Localisation มีเดียวิà¸à¸´] à¹à¸¥à¸° [//translatewiki.new translatewiki.net] ถ้าคุณยังอยาà¸à¸—ี่จะà¹à¸›à¸¥à¸‚้อความของระบบมีเดียวิà¸à¸´',
'allmessagesnotsupportedDB' => "หน้านี้ไม่สามารถใช้งานได้เนื่องจาภ'''\$wgUseDatabaseMessages''' ถูà¸à¸£à¸°à¸‡à¸±à¸šà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™",
'allmessages-filter-legend' => 'à¸à¸£à¸­à¸‡',
'allmessages-filter' => 'à¸à¸£à¸­à¸‡à¸•à¸²à¸¡à¸ªà¸–านะที่เลือà¸:',
@@ -2642,9 +2651,7 @@ $1 ถูà¸à¸šà¸¥à¹‡à¸­à¸à¹à¸¥à¹‰à¸§ คุณต้องà¸à¸²à¸£à¹à¸à¹‰à
'monobook.js' => '/* ถ้าไม่เห็นด้วย ให้ใช้ [[MediaWiki:common.js]] */',
# Metadata
-'nodublincore' => 'ข้อมูลอาร์ดีเอฟของดับลินคอร์ไม่สามารถใช้งานได้ในเซิร์ฟเวอร์นี้',
-'nocreativecommons' => 'ข้อมูลอาร์ดีเอฟของครีเอทีฟคอมมอนส์ไม่สามารถใช้งานได้ในเซิร์ฟเวอร์นี้',
-'notacceptable' => 'เซิร์ฟเวอร์ของวิà¸à¸´à¹„ม่สามารถให้ข้อมูลในรูปà¹à¸šà¸šà¸—ี่ไคลเอนต์สามารถอ่านได้',
+'notacceptable' => 'เซิร์ฟเวอร์ของวิà¸à¸´à¹„ม่สามารถให้ข้อมูลในรูปà¹à¸šà¸šà¸—ี่ไคลเอนต์สามารถอ่านได้',
# Attribution
'anonymous' => '{{PLURAL:$1|ผู้ใช้}}นิรนามของ {{SITENAME}}',
@@ -2667,12 +2674,16 @@ $1 ถูà¸à¸šà¸¥à¹‡à¸­à¸à¹à¸¥à¹‰à¸§ คุณต้องà¸à¸²à¸£à¹à¸à¹‰à
'spam_blanking' => 'รุ่นà¸à¸²à¸£à¸›à¸£à¸±à¸šà¸›à¸£à¸¸à¸‡à¸—ุà¸à¸£à¸¸à¹ˆà¸™à¸›à¸£à¸°à¸à¸­à¸šà¹„ปด้วยลิงà¸à¹Œà¹„ปยังเว็บ $1 (ทำหน้าว่าง)',
# Info page
-'infosubtitle' => 'ข้อมูลของหน้า',
-'numedits' => 'จำนวนà¸à¸²à¸£à¹à¸à¹‰à¹„ข (เนื้อหา): $1',
-'numtalkedits' => 'จำนวนà¸à¸²à¸£à¹à¸à¹‰à¹„ข (หน้าพูดคุย): $1',
-'numwatchers' => 'จำนวนผู้เà¸à¹‰à¸²à¸”ู: $1',
-'numauthors' => 'จำนวนผู้เขียน (เนื้อหา): $1',
-'numtalkauthors' => 'จำนวนผู้เขียน (หน้าพูดคุย): $1',
+'pageinfo-title' => 'ข้อมูลสำหรับ "$1"',
+'pageinfo-header-edits' => 'à¸à¸²à¸£à¹à¸à¹‰à¹„ข',
+'pageinfo-header-watchlist' => 'รายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ู',
+'pageinfo-header-views' => 'à¸à¸²à¸£à¹€à¸‚้าดู',
+'pageinfo-subjectpage' => 'หน้า',
+'pageinfo-talkpage' => 'หน้าพูดคุย',
+'pageinfo-watchers' => 'จำนวนผู้เข้าดู',
+'pageinfo-edits' => 'จำนวนà¸à¸²à¸£à¹à¸à¹‰à¹„ข',
+'pageinfo-views' => 'จำนวนà¸à¸²à¸£à¹€à¸‚้าดู',
+'pageinfo-viewsperedit' => 'จำนวนà¸à¸²à¸£à¹€à¸‚้าดูต่อà¸à¸²à¸£à¹à¸à¹‰à¹„ข',
# Skin names
'skinname-standard' => 'คลาสสิà¸',
@@ -2684,25 +2695,6 @@ $1 ถูà¸à¸šà¸¥à¹‡à¸­à¸à¹à¸¥à¹‰à¸§ คุณต้องà¸à¸²à¸£à¹à¸à¹‰à
'skinname-simple' => 'ซิมเปิล',
'skinname-modern' => 'โมเดิร์น',
-# Math options
-'mw_math_png' => 'เรนเดอร์เป็น PNG เสมอ',
-'mw_math_simple' => 'ใช้พื้นà¸à¸²à¸™à¹€à¸›à¹‡à¸™ HTML ถ้าไม่ได้ใช้ PNG',
-'mw_math_html' => 'ถ้าเป็นไปได้ใช้เป็น HTML ถ้าไม่ได้ใช้ PNG',
-'mw_math_source' => 'ปล่อยข้อมูลเป็น TeX (สำหรับเว็บเบราว์เซอร์à¹à¸šà¸šà¸‚้อความ)',
-'mw_math_modern' => 'à¹à¸™à¸°à¸™à¸³à¸ªà¸³à¸«à¸£à¸±à¸šà¹€à¸§à¹‡à¸šà¹€à¸šà¸£à¸²à¸§à¹Œà¹€à¸‹à¸­à¸£à¹Œà¸ªà¸¡à¸±à¸¢à¹ƒà¸«à¸¡à¹ˆ',
-'mw_math_mathml' => 'ถ้าเป็นไปได้ใช้ MathML (ขั้นทดลอง)',
-
-# Math errors
-'math_failure' => 'ส่งผ่านค่าไม่ได้',
-'math_unknown_error' => 'ข้อผิดพลาดที่ไม่ทราบ',
-'math_unknown_function' => 'คำสั่งที่ไม่ทราบ',
-'math_lexing_error' => 'à¸à¸²à¸£à¸ˆà¸³à¹à¸™à¸à¸ªà¸¹à¸•à¸£à¸œà¸´à¸”พลาด',
-'math_syntax_error' => 'ไวยาà¸à¸£à¸“์ผิดพลาด',
-'math_image_error' => 'à¸à¸²à¸£à¹à¸›à¸¥à¸‡ PNG ล้มเหลว à¸à¸£à¸¸à¸“าตรวจสอบà¸à¸²à¸£à¸•à¸´à¸”ตั้ง latex à¹à¸¥à¸° dvipng (หรือ dvips + gs + convert) ให้ถูà¸à¸•à¹‰à¸­à¸‡',
-'math_bad_tmpdir' => 'ไม่สามารถเขียนค่าหรือสร้าง ลงไดเรà¸à¸—อรีชั่วคราวสำหรับเà¸à¹‡à¸šà¸„่าทางคณิตศาสตร์ได้',
-'math_bad_output' => 'ไม่สามารถเขียนค่าหรือสร้าง ลงไดเรà¸à¸—อรีปลายทางสำหรับเà¸à¹‡à¸šà¸„่าทางคณิตศาสตร์ได้',
-'math_notexvc' => 'เà¸à¸´à¸”ข้อความผิดพลาด texvc ไม่พบ à¸à¸£à¸¸à¸“าตรวจสอบ math/README เพื่อตั้งค่า',
-
# Patrolling
'markaspatrolleddiff' => 'ทำเครื่องหมายว่าตรวจสอบà¹à¸¥à¹‰à¸§',
'markaspatrolledtext' => 'à¸à¸³à¸«à¸™à¸”ว่าบทความนี้ถูà¸à¸•à¸£à¸§à¸ˆà¸ªà¸­à¸šà¹à¸¥à¹‰à¸§',
@@ -2745,10 +2737,11 @@ $1',
'widthheightpage' => '{{PLURAL:$3|หน้า|หน้า}} $1×$2, $3',
'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' => '<small>ไม่มีภาพความละเอียดสูงà¸à¸§à¹ˆà¸²à¸™à¸µà¹‰</small>',
'svg-long-desc' => 'ไฟล์ SVG, $1 × $2 พิà¸à¹€à¸‹à¸¥ พอเป็นพิธี, ขนาดไฟล์: $3',
'show-big-image' => 'ความละเอียดสูงสุด',
-'show-big-image-thumb' => '<small>ขนาดของภาพà¹à¸ªà¸”งผล: $1 × $2 พิà¸à¹€à¸‹à¸¥</small>',
+'show-big-image-size' => '$1 × $2 พิà¸à¹€à¸‹à¸¥',
'file-info-gif-looped' => 'วนซ้ำ',
'file-info-gif-frames' => '$1 {{PLURAL:$1|เฟรม|เฟรม}}',
'file-info-png-looped' => 'วนซ้ำ',
@@ -2785,7 +2778,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'ความà¸à¸§à¹‰à¸²à¸‡',
@@ -2800,13 +2799,11 @@ $1',
'exif-ycbcrpositioning' => 'ตำà¹à¸«à¸™à¹ˆà¸‡ Y à¹à¸¥à¸° C',
'exif-xresolution' => 'ความละเอียดà¹à¸™à¸§à¸™à¸­à¸™',
'exif-yresolution' => 'ความละเอียดà¹à¸™à¸§à¸•à¸±à¹‰à¸‡',
-'exif-resolutionunit' => 'หน่วยของความละเอียดของ X à¹à¸¥à¸° Y',
'exif-stripoffsets' => 'ตำà¹à¸«à¸™à¹ˆà¸‡à¸‚้อมูลภาพ',
'exif-rowsperstrip' => 'จำนวนà¹à¸–วต่อสตริป',
'exif-stripbytecounts' => 'ไบต์ต่อสตริป',
'exif-jpeginterchangeformat' => 'ออฟเซตไปที่ JPEG SOI',
'exif-jpeginterchangeformatlength' => 'ไบต์ของข้อมูล JPEG',
-'exif-transferfunction' => 'ฟังà¸à¹Œà¸Šà¸±à¸™à¸—รานส์เฟอร์',
'exif-whitepoint' => 'ไวต์พอยต์โครมาติà¸',
'exif-primarychromaticities' => 'โครมาติà¸à¸‚องไพรมาริตี',
'exif-ycbcrcoefficients' => 'สัมประสิทธิเมทริà¸à¸‹à¹Œà¸à¸²à¸£à¹€à¸›à¸¥à¸µà¸¢à¸™à¹à¸›à¸¥à¸‡à¸‚องสเปซสี',
@@ -2825,7 +2822,6 @@ $1',
'exif-compressedbitsperpixel' => 'โหมดà¸à¸²à¸£à¸šà¸µà¸šà¸­à¸±à¸”ภาพ',
'exif-pixelydimension' => 'ความà¸à¸§à¹‰à¸²à¸‡à¸—ี่นำไปใช้ได้',
'exif-pixelxdimension' => 'ความยาวที่นำไปใช้ได้',
-'exif-makernote' => 'ข้อมูลเพิ่มจาà¸à¸œà¸¹à¹‰à¸œà¸¥à¸´à¸•à¸à¸¥à¹‰à¸­à¸‡',
'exif-usercomment' => 'ความเห็นผู้ใช้',
'exif-relatedsoundfile' => 'ไฟล์เสียงที่เà¸à¸µà¹ˆà¸¢à¸§à¸‚้อง',
'exif-datetimeoriginal' => 'วันที่à¹à¸¥à¸°à¹€à¸§à¸¥à¸²à¸—ี่สร้าง',
@@ -2839,7 +2835,6 @@ $1',
'exif-exposureprogram' => 'โปรà¹à¸à¸£à¸¡à¹€à¸­à¸à¸‹à¹Œà¹‚พเชอร์',
'exif-spectralsensitivity' => 'ความไวสเปà¸à¸•à¸£à¸±à¸¡',
'exif-isospeedratings' => 'อัตราความเร็ว ISO',
-'exif-oecf' => 'อัตราเปลี่ยนออปโตอิเล็à¸à¸—รอนิà¸',
'exif-shutterspeedvalue' => 'ความไวชัตเตอร์',
'exif-aperturevalue' => 'รูรับà¹à¸ªà¸‡',
'exif-brightnessvalue' => 'ความสว่าง',
@@ -2852,7 +2847,6 @@ $1',
'exif-focallength' => 'ระยะโฟà¸à¸±à¸ª',
'exif-subjectarea' => 'จุดวัตถุ',
'exif-flashenergy' => 'พลังงานà¹à¸Ÿà¸¥à¸Š',
-'exif-spatialfrequencyresponse' => 'à¸à¸²à¸£à¸•à¸­à¸šà¸ªà¸™à¸­à¸‡à¸„วามถี่ของสเปซ',
'exif-focalplanexresolution' => 'ความละเอียระนาบโฟà¸à¸±à¸ª X',
'exif-focalplaneyresolution' => 'ความละเอียระนาบโฟà¸à¸±à¸ª Y',
'exif-focalplaneresolutionunit' => 'หน่วยความละเอียดระนาบโฟà¸à¸±à¸ª',
@@ -2861,7 +2855,6 @@ $1',
'exif-sensingmethod' => 'วิถีà¸à¸²à¸£à¸§à¸±à¸”',
'exif-filesource' => 'ต้นฉบับไฟล์',
'exif-scenetype' => 'ชนิดซีน',
-'exif-cfapattern' => 'รูปà¹à¸šà¸š CFA',
'exif-customrendered' => 'à¸à¸²à¸£à¸›à¸£à¸°à¸¡à¸§à¸“ภาพ',
'exif-exposuremode' => 'โหมดเอà¸à¸‹à¹Œà¹‚พเชอร์',
'exif-whitebalance' => 'ไวต์บาลานซ์',
@@ -2907,6 +2900,8 @@ $1',
'exif-gpsdatestamp' => 'วันที่จีพีเอส',
'exif-gpsdifferential' => 'à¸à¸²à¸£à¸›à¸£à¸±à¸šà¹à¸„่ข้อà¹à¸•à¸à¸•à¹ˆà¸²à¸‡à¸ˆà¸µà¸žà¸µà¹€à¸­à¸ª',
'exif-objectname' => 'ชื่อเรื่องสั้น',
+'exif-languagecode' => 'ภาษา',
+'exif-iimcategory' => 'หมวดหมู่',
# EXIF attributes
'exif-compression-1' => 'ไม่ได้บีบอัด',
@@ -3047,21 +3042,23 @@ $1',
'exif-gpsspeed-m' => 'ไมล์ต่อชั่วโมง',
'exif-gpsspeed-n' => 'นอตส์',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'à¸à¸´à¹‚ลเมตร',
+'exif-gpsdestdistance-m' => 'ไมล์',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'ทิศทางจริง',
'exif-gpsdirection-m' => 'ทิศทางà¹à¸¡à¹ˆà¹€à¸«à¸¥à¹‡à¸',
# External editor support
'edit-externally' => 'à¹à¸à¹‰à¹„ขไฟล์นี้โดยใช้ซอฟต์à¹à¸§à¸£à¹Œà¸•à¸±à¸§à¸­à¸·à¹ˆà¸™',
-'edit-externally-help' => '(ดูเพิ่ม [http://www.mediawiki.org/wiki/Manual:External_editors วิธีà¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่า] สำหรับข้อมูลเพิ่มเติม)',
+'edit-externally-help' => '(ดูเพิ่ม [//www.mediawiki.org/wiki/Manual:External_editors วิธีà¸à¸²à¸£à¸•à¸±à¹‰à¸‡à¸„่า] สำหรับข้อมูลเพิ่มเติม)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ทั้งหมด',
-'imagelistall' => 'ทั้งหมด',
-'watchlistall2' => 'ทั้งหมด',
-'namespacesall' => 'ทั้งหมด',
-'monthsall' => 'ทั้งหมด',
-'limitall' => 'ทั้งหมด',
+'watchlistall2' => 'ทั้งหมด',
+'namespacesall' => 'ทั้งหมด',
+'monthsall' => 'ทั้งหมด',
+'limitall' => 'ทั้งหมด',
# E-mail address confirmation
'confirmemail' => 'ยืนยันอีเมล',
@@ -3134,11 +3131,12 @@ $1',
'trackbackdeleteok' => 'รอยที่เà¸à¹‡à¸šà¹„ว้ถูà¸à¸¥à¸š',
# Delete conflict
-'deletedwhileediting' => "'''คำเตือน''': หน้านี้ถูà¸à¸¥à¸šà¹„ปà¹à¸¥à¹‰à¸§à¹ƒà¸™à¸‚ณะที่คุณà¸à¸³à¸¥à¸±à¸‡à¹à¸à¹‰à¹„ข!",
-'confirmrecreate' => "ผู้ใช้ [[User:$1|$1]] ([[User talk:$1|พูดคุย]]) ได้ลบหน้านี้ในช่วงที่คุณà¸à¸³à¸¥à¸±à¸‡à¹à¸à¹‰à¹„ข ด้วยเหตุผลว่า:
+'deletedwhileediting' => "'''คำเตือน''': หน้านี้ถูà¸à¸¥à¸šà¹„ปà¹à¸¥à¹‰à¸§à¹ƒà¸™à¸‚ณะที่คุณà¸à¸³à¸¥à¸±à¸‡à¹à¸à¹‰à¹„ข!",
+'confirmrecreate' => "ผู้ใช้ [[User:$1|$1]] ([[User talk:$1|พูดคุย]]) ได้ลบหน้านี้ในช่วงที่คุณà¸à¸³à¸¥à¸±à¸‡à¹à¸à¹‰à¹„ข ด้วยเหตุผลว่า:
: ''$2''
à¸à¸£à¸¸à¸“ายืนยันว่าต้องà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¸‚ึ้นมาใหม่",
-'recreate' => 'สร้างใหม่',
+'confirmrecreate-noreason' => 'ผู้ใช้ [[ผู้ใช้:$1|$1]] ([[พูดคุยà¸à¸±à¸šà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰:$1|พูดคุย]]) ลบหน้านี้หลังคุณเริ่มà¹à¸à¹‰à¹„ข โปรดยืนยันว่าคุณต้องà¸à¸²à¸£à¸ªà¸£à¹‰à¸²à¸‡à¸«à¸™à¹‰à¸²à¸™à¸µà¹‰à¹ƒà¸«à¸¡à¹ˆà¸ˆà¸£à¸´à¸‡ ๆ',
+'recreate' => 'สร้างใหม่',
# action=purge
'confirm_purge_button' => 'ตà¸à¸¥à¸‡',
@@ -3192,14 +3190,14 @@ $1',
'watchlistedit-normal-legend' => 'ลบชื่อหัวข้อออà¸à¸ˆà¸²à¸à¸£à¸²à¸¢à¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ู',
'watchlistedit-normal-explain' => 'หัวข้อที่อยู่ในรายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ูà¹à¸ªà¸”งด้านล่าง
ถ้าต้องà¸à¸²à¸£à¸¥à¸šà¸­à¸­à¸ ให้คลิà¸à¹€à¸¥à¸·à¸­à¸à¸—ี่à¸à¸¥à¹ˆà¸­à¸‡à¸”้านข้างà¹à¸•à¹ˆà¸¥à¸°à¸«à¸±à¸§à¸‚้อ à¹à¸¥à¸°à¸„ลิภ"{{int:Watchlistedit-normal-submit}}"
-หรืออาจจะ[[Special:Watchlist/raw|à¹à¸à¹‰à¹„ขรายà¸à¸²à¸£à¸—ั้งหมด]]',
+หรืออาจจะ[[Special:EditWatchlist/raw|à¹à¸à¹‰à¹„ขรายà¸à¸²à¸£à¸—ั้งหมด]]',
'watchlistedit-normal-submit' => 'ลบหัวข้อ',
'watchlistedit-normal-done' => '$1 รายà¸à¸²à¸£à¹„ด้ถูà¸à¸™à¸³à¸­à¸­à¸à¸ˆà¸²à¸à¸£à¸²à¸¢à¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ู:',
'watchlistedit-raw-title' => 'à¹à¸à¹‰à¹„ขรายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ูทั้งหมด',
'watchlistedit-raw-legend' => 'à¹à¸à¹‰à¹„ขรายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ูทั้งหมด',
'watchlistedit-raw-explain' => 'หัวข้อในรายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ูà¹à¸ªà¸”งด้านล่าง ซึ่งสามารถเพิ่มหรือนำออà¸à¹„ด้ หนึ่งหัวข้อต่อหนึ่งà¹à¸–ว
เมื่อà¹à¸à¹‰à¹„ขเสร็จà¹à¸¥à¹‰à¸§ ให้คลิภ"{{int:Watchlistedit-raw-submit}}"
-ซึ่งอาจà¹à¸à¹‰à¹„ขผ่าน [[Special:Watchlist/edit|โปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ขข้อความทั่วไป]]',
+ซึ่งอาจà¹à¸à¹‰à¹„ขผ่าน [[Special:EditWatchlist|โปรà¹à¸à¸£à¸¡à¹à¸à¹‰à¹„ขข้อความทั่วไป]]',
'watchlistedit-raw-titles' => 'หัวข้อ:',
'watchlistedit-raw-submit' => 'อัปเดตรายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ู',
'watchlistedit-raw-done' => 'รายà¸à¸²à¸£à¹€à¸à¹‰à¸²à¸”ูได้ถูà¸à¸­à¸±à¸›à¹€à¸”ต',
@@ -3216,33 +3214,33 @@ $1',
'duplicate-defaultsort' => 'คำเตือน: หลัà¸à¹€à¸£à¸µà¸¢à¸‡à¸¥à¸³à¸”ับปริยาย "$2" ได้ลบล้างหลัà¸à¹€à¸£à¸µà¸¢à¸‡à¸¥à¸³à¸”ับปริยาย "$1" ที่มีอยู่à¸à¹ˆà¸­à¸™à¸«à¸™à¹‰à¸²',
# Special:Version
-'version' => 'รุ่นซอฟต์à¹à¸§à¸£à¹Œ',
-'version-extensions' => 'ส่วนขยายเพิ่ม (extension) ที่ติดตั้ง',
-'version-specialpages' => 'หน้าพิเศษ',
-'version-parserhooks' => 'ฮุà¸à¸—ี่มีà¸à¸²à¸£à¸žà¸²à¸£à¹Œà¸ªà¸„่า',
-'version-variables' => 'ตัวà¹à¸›à¸£',
-'version-skins' => 'รูปลัà¸à¸©à¸“์',
-'version-other' => 'อื่นๆ',
-'version-mediahandlers' => 'ตัวจัดà¸à¸²à¸£à¹€à¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸ªà¸·à¹ˆà¸­ (media handler)',
-'version-hooks' => 'ฮุà¸',
-'version-extension-functions' => 'ฟังà¸à¹Œà¸Šà¸±à¸™à¸ˆà¸²à¸à¸ªà¹ˆà¸§à¸™à¸‚ยายเพิ่ม (extension function)',
-'version-parser-extensiontags' => 'à¹à¸—็à¸à¸—ี่มีà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸‚องพาร์สเซอร์',
-'version-parser-function-hooks' => 'ฮุà¸à¸—ี่มีฟังà¸à¹Œà¸Šà¸±à¸™à¸žà¸²à¸£à¹Œà¸ªà¹€à¸‹à¸­à¸£à¹Œ',
-'version-skin-extension-functions' => 'ฟังà¸à¹Œà¸Šà¸±à¸™à¸ªà¹ˆà¸§à¸™à¸‚ยายเพิ่ม (extension function) สำหรับสà¸à¸´à¸™à¸«à¸£à¸·à¸­à¹à¸šà¸šà¸«à¸™à¹‰à¸²à¸•à¸²',
-'version-hook-name' => 'ชื่อฮุà¸',
-'version-hook-subscribedby' => 'สนับสนุนโดย',
-'version-version' => '(รุ่น $1)',
-'version-license' => 'สัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸•',
-'version-poweredby-credits' => "วิà¸à¸´à¸™à¸µà¹‰à¸ˆà¸±à¸”ทำโดย '''[http://www.mediawiki.org/ MediaWiki]''', สงวนลิขสิทธิ์ © 2001-$1 โดย $2.",
-'version-poweredby-others' => 'ผู้อื่น',
-'version-license-info' => 'มีเดียวิà¸à¸´à¹€à¸›à¹‡à¸™à¸‹à¸­à¸Ÿà¸•à¹Œà¹à¸§à¸£à¹Œà¹€à¸ªà¸£à¸µ คุณสามารถà¹à¸ˆà¸à¸ˆà¹ˆà¸²à¸¢à¸•à¹ˆà¸­ à¹à¸¥à¸°/หรือ à¹à¸à¹‰à¹„ขโปรà¹à¸à¸£à¸¡à¹„ด้ภายใต้เงื่อนไขของ GNU General Public License ที่เผยà¹à¸žà¸£à¹ˆà¹‚ดยมูลนิธิซอฟต์à¹à¸§à¸£à¹Œà¹€à¸ªà¸£à¸µ ในรุ่นที่ 2 ของใบอนุà¸à¸²à¸•à¸«à¸£à¸·à¸­à¸£à¸¸à¹ˆà¸™à¸­à¸·à¹ˆà¸™à¹ƒà¸” (ตามที่คุณเลือà¸)
+'version' => 'รุ่นซอฟต์à¹à¸§à¸£à¹Œ',
+'version-extensions' => 'ส่วนขยายเพิ่ม (extension) ที่ติดตั้ง',
+'version-specialpages' => 'หน้าพิเศษ',
+'version-parserhooks' => 'ฮุà¸à¸—ี่มีà¸à¸²à¸£à¸žà¸²à¸£à¹Œà¸ªà¸„่า',
+'version-variables' => 'ตัวà¹à¸›à¸£',
+'version-antispam' => 'à¸à¸²à¸£à¸›à¹‰à¸­à¸‡à¸à¸±à¸™à¸ªà¹à¸›à¸¡',
+'version-skins' => 'รูปลัà¸à¸©à¸“์',
+'version-other' => 'อื่นๆ',
+'version-mediahandlers' => 'ตัวจัดà¸à¸²à¸£à¹€à¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸ªà¸·à¹ˆà¸­ (media handler)',
+'version-hooks' => 'ฮุà¸',
+'version-extension-functions' => 'ฟังà¸à¹Œà¸Šà¸±à¸™à¸ˆà¸²à¸à¸ªà¹ˆà¸§à¸™à¸‚ยายเพิ่ม (extension function)',
+'version-parser-extensiontags' => 'à¹à¸—็à¸à¸—ี่มีà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™à¸‚องพาร์สเซอร์',
+'version-parser-function-hooks' => 'ฮุà¸à¸—ี่มีฟังà¸à¹Œà¸Šà¸±à¸™à¸žà¸²à¸£à¹Œà¸ªà¹€à¸‹à¸­à¸£à¹Œ',
+'version-hook-name' => 'ชื่อฮุà¸',
+'version-hook-subscribedby' => 'สนับสนุนโดย',
+'version-version' => '(รุ่น $1)',
+'version-license' => 'สัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸•',
+'version-poweredby-credits' => "วิà¸à¸´à¸™à¸µà¹‰à¸ˆà¸±à¸”ทำโดย '''[//www.mediawiki.org/ MediaWiki]''', สงวนลิขสิทธิ์ © 2001-$1 โดย $2.",
+'version-poweredby-others' => 'ผู้อื่น',
+'version-license-info' => 'มีเดียวิà¸à¸´à¹€à¸›à¹‡à¸™à¸‹à¸­à¸Ÿà¸•à¹Œà¹à¸§à¸£à¹Œà¹€à¸ªà¸£à¸µ คุณสามารถà¹à¸ˆà¸à¸ˆà¹ˆà¸²à¸¢à¸•à¹ˆà¸­ à¹à¸¥à¸°/หรือ à¹à¸à¹‰à¹„ขโปรà¹à¸à¸£à¸¡à¹„ด้ภายใต้เงื่อนไขของ GNU General Public License ที่เผยà¹à¸žà¸£à¹ˆà¹‚ดยมูลนิธิซอฟต์à¹à¸§à¸£à¹Œà¹€à¸ªà¸£à¸µ ในรุ่นที่ 2 ของใบอนุà¸à¸²à¸•à¸«à¸£à¸·à¸­à¸£à¸¸à¹ˆà¸™à¸­à¸·à¹ˆà¸™à¹ƒà¸” (ตามที่คุณเลือà¸)
มีเดียวิà¸à¸´à¸¡à¸µà¸à¸²à¸£à¹à¸ˆà¸à¸ˆà¹ˆà¸²à¸¢à¹‚ดยหวังว่าจะเป็นประโยชน์ à¹à¸•à¹ˆà¹„ม่มีà¸à¸²à¸£à¸£à¸±à¸šà¸›à¸£à¸°à¸à¸±à¸™à¹ƒà¸”ๆ ทั้งสิ้น ไม่มีà¹à¸¡à¹‰à¸à¸²à¸£à¸£à¸±à¸šà¸›à¸£à¸°à¸à¸±à¸™à¹‚ดยนัยเพื่อà¸à¸²à¸£à¸„้า หรือความเหมาะสมสำหรับวัตถุประสงค์เฉพาะ ดู GNU General Public License เพื่อดูรายละเอียดเพิ่มเติม
-คุณควรจะได้รับ [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU General Public License] พร้อมà¸à¸±à¸šà¹‚ปรà¹à¸à¸£à¸¡à¸™à¸µà¹‰ หาà¸à¹„ม่พบ à¸à¸£à¸¸à¸“าเขียนจดหมายถึง Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA หรือ [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html อ่านออนไลน์]',
-'version-software' => 'ซอฟต์à¹à¸§à¸£à¹Œà¸—ี่ติดตั้ง',
-'version-software-product' => 'ชื่อ',
-'version-software-version' => 'รุ่น',
+คุณควรจะได้รับ [{{SERVER}}{{SCRIPTPATH}}/COPYING a copy of the GNU General Public License] พร้อมà¸à¸±à¸šà¹‚ปรà¹à¸à¸£à¸¡à¸™à¸µà¹‰ หาà¸à¹„ม่พบ à¸à¸£à¸¸à¸“าเขียนจดหมายถึง Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA หรือ [//www.gnu.org/licenses/old-licenses/gpl-2.0.html อ่านออนไลน์]',
+'version-software' => 'ซอฟต์à¹à¸§à¸£à¹Œà¸—ี่ติดตั้ง',
+'version-software-product' => 'ชื่อ',
+'version-software-version' => 'รุ่น',
# Special:FilePath
'filepath' => 'พาธของไฟล์',
@@ -3254,16 +3252,15 @@ $1',
à¸à¸£à¸¸à¸“าป้อนชื่อไฟล์โดยไม่มี "{{ns:file}}:" นำหน้า',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'ค้นหาไฟล์ที่ซ้ำซ้อน',
-'fileduplicatesearch-summary' => 'ค้นหาไฟล์ที่ซ้ำซ้อนด้วยค่าà¹à¸®à¸Šà¸‚องไฟล์
-
-à¸à¸£à¸¸à¸“าป้อนชื่อไฟล์โดยไม่มี "{{ns:file}}:" นำหน้า',
-'fileduplicatesearch-legend' => 'ค้นหาไฟล์ที่ซ้ำà¸à¸±à¸™',
-'fileduplicatesearch-filename' => 'ชื่อไฟล์ :',
-'fileduplicatesearch-submit' => 'สืบค้น',
-'fileduplicatesearch-info' => '$1 × $2 พิà¸à¹€à¸‹à¸¥<br />ขนาดไฟล์: $3<br />ชนิดของไมม์: $4',
-'fileduplicatesearch-result-1' => 'ไม่มีไฟล์ที่ซ้ำà¸à¸±à¸šà¹„ฟล์ "$1"',
-'fileduplicatesearch-result-n' => 'มี {{PLURAL:$2|ไฟล์เดียว|$2 ไฟล์}}ที่ซ้ำà¸à¸±à¸šà¹„ฟล์ "$1"',
+'fileduplicatesearch' => 'ค้นหาไฟล์ที่ซ้ำซ้อน',
+'fileduplicatesearch-summary' => 'ค้นหาไฟล์ที่ซ้ำà¸à¸±à¸™à¸•à¸²à¸¡à¸„่าà¹à¸®à¸Š',
+'fileduplicatesearch-legend' => 'ค้นหาไฟล์ที่ซ้ำà¸à¸±à¸™',
+'fileduplicatesearch-filename' => 'ชื่อไฟล์ :',
+'fileduplicatesearch-submit' => 'สืบค้น',
+'fileduplicatesearch-info' => '$1 × $2 พิà¸à¹€à¸‹à¸¥<br />ขนาดไฟล์: $3<br />ชนิดของไมม์: $4',
+'fileduplicatesearch-result-1' => 'ไม่มีไฟล์ที่ซ้ำà¸à¸±à¸šà¹„ฟล์ "$1"',
+'fileduplicatesearch-result-n' => 'มี {{PLURAL:$2|ไฟล์เดียว|$2 ไฟล์}}ที่ซ้ำà¸à¸±à¸šà¹„ฟล์ "$1"',
+'fileduplicatesearch-noresults' => 'ไม่พบไฟล์ที่มีชื่อ "$1"',
# Special:SpecialPages
'specialpages' => 'หน้าพิเศษ',
diff --git a/languages/messages/MessagesTk.php b/languages/messages/MessagesTk.php
index a47b0bc7..c3706318 100644
--- a/languages/messages/MessagesTk.php
+++ b/languages/messages/MessagesTk.php
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author Cekli829
* @author Flrn
* @author Hanberke
* @author Runningfridgesrule
@@ -65,7 +66,7 @@ $messages = array(
'tog-shownumberswatching' => 'Gözegçilikde saklaýan ulanyjylaryň sanyny görkez',
'tog-oldsig' => 'Bar bolan gol:',
'tog-fancysig' => 'Gola wikitekst hökmünde çemeleş (awtomatik çykgytsyz)',
-'tog-externaleditor' => 'Gaýybana daşarky redaktor ulan (diňe hünärmenler üçin, kompýuteriňizde ýörite sazlamalar talap edilýär. [http://www.mediawiki.org/wiki/Manual:External_editors Jikme-jik.])',
+'tog-externaleditor' => 'Gaýybana daşarky redaktor ulan (diňe hünärmenler üçin, kompýuteriňizde ýörite sazlamalar talap edilýär. [//www.mediawiki.org/wiki/Manual:External_editors Jikme-jik.])',
'tog-externaldiff' => 'Başga programmalaryň üsti bilen deňeşdir (diňe hünärmenler üçin, kompýuteriňizde ýörite sazlamalar talap edilýär)',
'tog-showjumplinks' => '"Git" çykgydyny işlet',
'tog-uselivepreview' => 'Gönümel deslapky syny ulan (JavaScript) (Synag edilýär)',
@@ -163,14 +164,6 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
'index-category' => 'Indeksirlenen sahypalar',
'noindex-category' => 'Indeksirlenmedik sahypalar',
-'mainpagetext' => "'''MediaWiki ÅŸowlulyk bilen guruldy.'''",
-'mainpagedocfooter' => 'Wiki programmasynyň ulanylyşy hakynda maglumat almak üçin [http://meta.wikimedia.org/wiki/Help:Contents ulanyjy gollanmasyna] serediň.
-
-== Öwrenjeler ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Konfigurasiýa sazlamalary]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki SSS]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-poçta sanawy]',
-
'about' => 'Hakynda',
'article' => 'Makala',
'newwindow' => '(täze penjirede açylýar)',
@@ -221,10 +214,10 @@ kiçi kategoriýadan {{PLURAL:$1|sany kiçi kategoriýa|$1 sany kiçi kategoriý
'history' => 'Sahypanyň geçmişi',
'history_short' => 'Geçmiş',
'updatedmarker' => 'soňky gezek görelim bäri täzelenen',
-'info_short' => 'Maglumat',
'printableversion' => 'Print ediş wersiýasy',
'permalink' => 'Hemişelik çykgyt',
'print' => 'Print et',
+'view' => 'Görkez',
'edit' => 'Redaktirle',
'create' => 'Döret',
'editthispage' => 'Bu sahypany redaktirle',
@@ -411,12 +404,11 @@ Talap: $2',
'protectedpagetext' => 'Bu sahypa redaktirlenmezligi üçin gulp astynda dur.',
'viewsourcetext' => 'Bu sahypanyň çeşmesini görüp hem-de göçürip bilersiňiz:',
'protectedinterface' => 'Bu sahypa programma üçin interfeýs tekstini üpjün edýär. Bet niýetli hüjümlerden goramak maksady bilen gulp astyna alnandyr.',
-'editinginterface' => "'''Duýduryş:''' Programma üçin interfeýs tekstini üpjün etmekte ulanylýan bir sahypany redaktirleýärsiňiz. Bu sahypada ediljek üýtgeşmeler beýleki ulanyjylar üçin ulanyjy interfeýsiniň daşky görnüşini üýtgedýändir. Terjimeler üçin, MediaWikiniň lokalizasiýa taslamasy bolan [http://translatewiki.net/wiki/Main_Page?setlang=tr translatewiki.net]i ulanmaklygyňyzy haýyş edýäris.",
+'editinginterface' => "'''Duýduryş:''' Programma üçin interfeýs tekstini üpjün etmekte ulanylýan bir sahypany redaktirleýärsiňiz. Bu sahypada ediljek üýtgeşmeler beýleki ulanyjylar üçin ulanyjy interfeýsiniň daşky görnüşini üýtgedýändir. Terjimeler üçin, MediaWikiniň lokalizasiýa taslamasy bolan [//translatewiki.net/wiki/Main_Page?setlang=tr translatewiki.net]i ulanmaklygyňyzy haýyş edýäris.",
'sqlhidden' => '(SQL gizlin talap)',
'cascadeprotected' => 'Bu sahypa redaktirlenmekden goralýar, sebäbi ol "kaskadly" opsiýasy işledilip gorag astyna alnan {{PLURAL:$1|sahypada|sahypada}} ulanylýar:
$2',
'namespaceprotected' => "Siziň '''$1''' giňişligindäki sahypalary redaktirlemäge rugsadyňyz ýok.",
-'customcssjsprotected' => 'Bu sahypany redaktirlemegiňize rugsat berilmeýär, çünki ol başga bir ulanyjynyň şahsy sazlamalaryny öz içine alýar.',
'ns-specialprotected' => '{{ns:special}} at giňişligindäki sahypalary redaktirläp bolmaýar.',
'titleprotected' => "[[User:$1|$1]] tarapyndan döredilmeginiň öňüni almak maksady bilen bu sahypa gorag astyna alyndy.
Görkezilen sebäp: ''$2''.",
@@ -474,7 +466,7 @@ Olary işletmegiňizi we gaýtadan synanyşyp görmegiňizi haýyş edýäris.',
'nosuchuser' => '"$1" diýen at bilen ulanyjy ýok.
Ulanyjy atlary baş hem-de setir harplara duýgurdyr.
ÃazylyÅŸyny barlaň ýa-da [[Special:UserLogin/signup|täze hasap açyň]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" dýen at bilen ulanyjy ýok. ÃazylyÅŸyny barlaň.',
+'nosuchusershort' => '"$1" dýen at bilen ulanyjy ýok. ÃazylyÅŸyny barlaň.',
'nouserspecified' => 'Ulanyjy adyny görkezmegiňiz hökmanydyr.',
'login-userblocked' => 'Bu ulanyjy blokirlenipdir. Sessiýa açmaga rugsat berilmeýär.',
'wrongpassword' => 'Paroly nädogry girizdiňiz. Gaýtadan synanyşmagyňyzy haýyş edýäris.',
@@ -518,7 +510,7 @@ Gaýtadan synanyşmankaňyz garaşmagyňyzy haýyş edýäris.',
'loginlanguagelabel' => 'Dil: $1',
'suspicious-userlogout' => 'Sessiýa ýapmak boýunça talabyňyz ret edildi, sebäbi ol nädogry brauzer ýa-da keşleýji proksi tarapyndan iberilen ýaly-la.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Paroly üýtget',
'resetpass_announce' => 'Size iberilen wagtlaýyn parol bilen sessiýa açdyňyz.
Sessiýa açmaklygy tamamlamak üçin, bu ýere täze parol ýazyň:',
@@ -536,6 +528,9 @@ Sessiýa açmaklygy tamamlamak üçin, bu ýere täze parol ýazyň:',
Parolyňyzy eýýäm şowlulyk bilen üýtgeden ýa-da täze wagtlaýyn parol talap eden bolmagyňyz ahmal.',
'resetpass-temp-password' => 'Wagtlaýyn parol:',
+# Special:PasswordReset
+'passwordreset-username' => 'Ulanyjy ady:',
+
# Edit page toolbar
'bold_sample' => 'Goýy tekst',
'bold_tip' => 'Goýy tekst',
@@ -547,8 +542,6 @@ Parolyňyzy eýýäm şowlulyk bilen üýtgeden ýa-da täze wagtlaýyn parol ta
'extlink_tip' => 'Daşarky çykgyt (Adresiň öňüne http:// ýazmagy unutmaň)',
'headline_sample' => 'Adyň teksti',
'headline_tip' => '2-nji derejeli at',
-'math_sample' => 'Matematiki formulany şu ýere ýazyň',
-'math_tip' => 'Matematiki formula (LaTeX formatynda)',
'nowiki_sample' => 'Formatirlenmedik teksti şu ýere salyň',
'nowiki_tip' => 'Wiki formatirlemesini hasap etme',
'image_tip' => 'Salnan faýl',
@@ -633,7 +626,7 @@ Bu ady başga sahypalarda [[Special:Search/{{PAGENAME}}|gözläp bilersiňiz]],
'noarticletext-nopermission' => 'Häzirki wagtda bu sahypada tekst ýok.
Bu sahypa adyny [[Special:Search/{{PAGENAME}}|başga sahypalarda gözläp]]
ýa-da <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} degişli gündeliklerde gözleg geçirip bilersiňiz].</span>',
-'userpage-userdoesnotexist' => '"$1" ulanyjy hasaby hasaba alynmandyr.
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" ulanyjy hasaby hasaba alynmandyr.
Bu sahypany döretmek/redaktirlemek isleýän bolsaňyz, onda esewan boluň.',
'userpage-userdoesnotexist-view' => '"$1" ulanyjy hasaby hasaba alynmandyr.',
'blocked-notice-logextract' => 'Bu ulanyjy ÅŸu wagt blokirlengi.
@@ -1034,9 +1027,10 @@ Emma olaryň {{SITENAME}} indeksleriniň möwriti geçen bolmagy mümkindir.',
'changepassword' => 'Paroly üýtget',
'prefs-skin' => 'Bezeg',
'skin-preview' => 'Deslapky syn',
-'prefs-math' => 'Matematiki formulalar',
'datedefault' => 'Gaýybana',
+'prefs-beta' => 'Beta funksiýalar',
'prefs-datetime' => 'Sene we wagt',
+'prefs-labs' => 'Synag funksiýalar',
'prefs-personal' => 'Ulanyjy maglumatlary',
'prefs-rc' => 'Soňky üýtgeşmeler',
'prefs-watchlist' => 'Gözegçilik sanawy',
@@ -1058,8 +1052,6 @@ Emma olaryň {{SITENAME}} indeksleriniň möwriti geçen bolmagy mümkindir.',
'columns' => 'Sütünler:',
'searchresultshead' => 'Gözleg',
'resultsperpage' => 'Sahypa baÅŸyna netije sany:',
-'contextlines' => 'Netije baÅŸyna setir sany:',
-'contextchars' => 'Setir baÅŸyna harp sany:',
'stub-threshold' => '<a href="#" class="stub">Ownuk makala çykgydynyň</a> formaty üçin bosaga (baýt):',
'stub-threshold-disabled' => 'Ãapyk',
'recentchangesdays' => 'Soňky üýtgeşmelerde görkeziljek gün sany:',
@@ -1240,7 +1232,6 @@ $1 {{PLURAL:$1|simwoldan|simwoldan}} köp bolmaly däl.',
'right-userrights' => 'Ähli ulanyjy hukuklaryny redaktirle',
'right-userrights-interwiki' => 'Başga wikilerdäki ulanyjylaryň ulanyjy hukuklaryny redaktirle',
'right-siteadmin' => 'Maglumat bazasyny gulpla we aç',
-'right-reset-passwords' => 'Başga ulanyjylaryň parollaryny başky ýagdaýyna getir',
'right-override-export-depth' => 'Sahypalary, şol sanda çykgytly sahypalary 5-e çenli çuňlukda eksportirle',
'right-sendemail' => 'Başga ulanyjylara e-poçta iber',
@@ -1441,10 +1432,6 @@ Faýlyňyzy şonda-da ýüklemek isleýän bolsaňyz, onda yza gaýdyp täze bir
'upload-options' => 'Ãükleme opsiýalary',
'watchthisupload' => 'Bu faýla gözegçilik et',
'filewasdeleted' => 'Şeýle atly faýl ozal ýüklenipdir we soňra öçürilipdir. Faýly ýüklemänkäňiz, $1 sahypasyna bir göz aýlaň.',
-'upload-wasdeleted' => "'''Duýduryş: Ozal öçürilen bir faýly ýükleýärsiňiz.'''
-
-Faýly ýüklemekligiň ýerliklidigini ýa-da däldigini göz öňünde tutuň.
-Bu faýlyň öçürme gündeligi aşakda berilýär:",
'filename-bad-prefix' => "Ãükleýän faýlyňyzyň ady umuman sanly kameralar tarapyndan awtomatik usulda goÅŸulýan düşnüksiz '''\"\$1\"''' bilen baÅŸlanýar.
Faýlyňyz üçin has düşnükli bir at saýlamagyňyzy haýyş edýäris.",
'upload-success-subj' => 'Şowly ýükleme',
@@ -1551,7 +1538,6 @@ Aşakdaky sanaw diňe şu faýla çykgyt berýän {{PLURAL:$1|ilkinji faýly |il
[[Special:WhatLinksHere/$2|Doly sanaw]] bardyr.',
'nolinkstoimage' => 'Bu faýla çykgyt berýän hiçhili sahypa ýok.',
'morelinkstoimage' => 'Bu faýla [[Special:WhatLinksHere/$1|has köp çykgyt]] görkez.',
-'redirectstofile' => 'Aşakdaky {{PLURAL:$1|faýl|$1 faýl}} şu faýla gönükdirýar:',
'duplicatesoffile' => 'Aşakdaky {{PLURAL:$1|faýl|$1 faýl}} şu faýlyň dublikatydyr ([[Special:FileDuplicateSearch/$2|jikme-jik maglumat]]):',
'sharedupload' => 'Bu faýl $1 ammaryndan, özem beýleki taslamalarda ulanylýan bolmagy ahmal.',
'sharedupload-desc-there' => 'Bu faýl $1 ammaryndan, özem beýleki taslamalarda ulanylýan bolmagy ahmal.
@@ -1866,13 +1852,11 @@ Goldanylýan protokollar: <tt>$1</tt>',
'watchlistanontext' => 'Gözegçilik sanawyňyzdaky sahypalary görmek ýa-da redaktirlemek üçin $1.',
'watchnologin' => 'Sessiýa açmansyňyz',
'watchnologintext' => 'Gözegçilik sanawyňyzy üýtgetmek üçin [[Special:UserLogin|sessiýa açmagyňyz]] zerurdyr.',
-'addedwatch' => 'Gözegçilik sanawyna goşuldy',
'addedwatchtext' => "[[:$1]] atly sahypa [[Special:Watchlist|gözegçilik sanawyňyza]] goşuldy.
Geljekde, bu sahypada we degişli çekişme sahypasynda ediljek üýtgeşmeler şu ýerde sanawlanjakdyr.
Aňsatlyk bilen saýlap almak üçin bolsa, [[Special:RecentChanges|soňky üýtgeşmeleriň sanawynda]] '''goýy''' harp bilen görkeziljekdir.",
-'removedwatch' => 'Gözegçilik sanawyndan aýyryldy',
'removedwatchtext' => '"[[:$1]]" sahypasy [[Special:Watchlist|gözegçilik sanawyňyzdan]] aýyryldy.',
'watch' => 'Gözegçilikde sakla',
'watchthispage' => 'Bu sahypany gözegçilikde sakla',
@@ -1925,13 +1909,13 @@ Bu sahypany baryp görýänçäňiz onuň bilen baglanyşykly üýtgeşmeler siz
--
Gözegçilik sanawy sazlamalaryňyzy üýtgetmek üçin:
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:Special:Watchlist/edit}}
Sahypany gözegçilik sanawyňyzdan öçürmek üçin:
$UNWATCHURL
Seslenme we goşmaça kömek:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Sahypany öçür',
@@ -1947,7 +1931,7 @@ Seslenme we goşmaça kömek:
Bu amalyň getirip biljek netijelerine gözüňiz ýetýän bolsa we amalyň [[{{MediaWiki:Policy-url}}|Öçürme kadalaryna]] laýyklykdadygyny bilýän bolsaňyz, amaly tassyklaň.',
'actioncomplete' => 'Iş ýerine ýetirildi',
'actionfailed' => 'IÅŸ baÅŸa barmady',
-'deletedtext' => '"<nowiki>$1</nowiki>" öçürildi.
+'deletedtext' => '"$1" öçürildi.
Ãaňy-ýakynda öçürilenleri görmek üçin: $2.',
'deletedarticle' => 'öçürdi: "[[$1]]"',
'suppressedarticle' => '"[[$1]]" bökdeldi',
@@ -2008,7 +1992,7 @@ Häzirki wagtda hereket edýän sahypa goraglary üçin [[Special:ProtectedPages
'protect_expiry_invalid' => 'Gutaryş möhleti nädogry.',
'protect_expiry_old' => 'Geçmişdäki gutaryş möhleti.',
'protect-unchain-permissions' => 'Goşmaça gorag opsiýalarynyň gulpuny aç',
-'protect-text' => "'''<nowiki>$1</nowiki>''' sahypasynyň gorag derejesini şu ýerden görüp hem-de üýtgedip bilersiňiz.",
+'protect-text' => "'''$1''' sahypasynyň gorag derejesini şu ýerden görüp hem-de üýtgedip bilersiňiz.",
'protect-locked-blocked' => "Blokirlengikä gorag derejelerini üýtgedip bolmaýar.
'''$1''' sahypasy üçin häzirki sazlamalar:",
'protect-locked-dblock' => "Häzir maglumat bazasy gulpludygy sebäpli gorag derejelerini üýtgedip bolmaýar.
@@ -2168,7 +2152,6 @@ Salgylanmak üçin iň soňky blokirleme gündeligi ýazgysy aşakda berilýär:
'blockiptext' => 'Aşakdaky formdan peýdalanyp, belli bir IP-niň ýa-da ulanyjy adynyň ýazmak hukugyny blokirläp bilersiňiz.
Bu diňe wandalizmiň öňüni almak üçin hem-de [[{{MediaWiki:Policy-url}}|kadalara]] laýyklykda edilmelidir.
Aşakda blokirlemäniň takyk sebäbini ýazyň (meselem: wandalizm eden sahypalaryny görkeziň).',
-'ipaddress' => 'IP adresi:',
'ipadressorusername' => 'IP adresi ýa-da ulanyjy ady:',
'ipbexpiry' => 'Gutarýan wagty:',
'ipbreason' => 'Sebäp:',
@@ -2181,7 +2164,6 @@ Aşakda blokirlemäniň takyk sebäbini ýazyň (meselem: wandalizm eden sahypal
** Haýbat atyjy hereket/Yrsaramak
** Birden köp hasaby betniýetli ulanmak
** Kabul edip bolmajak ulanyjy ady',
-'ipbanononly' => 'Diňe anonim ulanyjylary blokirle',
'ipbcreateaccount' => 'Hasap açmagyny bökde',
'ipbemailban' => 'Ulanyjynyň e-poçta ibermegini bökde',
'ipbenableautoblock' => 'Bu ulanyjy tarapyndan peýdalanylan iň soňky IP adresini we şondan soňky redaktirlemäge synanyşan IP adreslerini awtomatik usulda blokirle',
@@ -2192,7 +2174,6 @@ Aşakda blokirlemäniň takyk sebäbini ýazyň (meselem: wandalizm eden sahypal
'ipbotherreason' => 'Başga/goşmaça sebäp:',
'ipbhidename' => 'Ulanyjynyň adyny özgerdişlerde we sanawlarda gizle',
'ipbwatchuser' => 'Bu ulanyjynyň ulanyjy we çekişme sahypalaryny gözegçilikde sakla',
-'ipballowusertalk' => 'Bu ulanyjynyň blokirlengikä öz pikir alyşma sahypasyny redaktirlemegine rugsat ber',
'ipb-change-block' => 'Bu sazlamalar bilen ulanyjyny gaýtadan blokirle',
'badipaddress' => 'Nädogry IP adresi',
'blockipsuccesssub' => 'Blokirleme amala aÅŸdy',
@@ -2210,14 +2191,9 @@ Aşakda blokirlemäniň takyk sebäbini ýazyň (meselem: wandalizm eden sahypal
'unblocked-id' => '$1 blokirlemesi aýyryldy',
'ipblocklist' => 'Blokirlenen ulanyjylar',
'ipblocklist-legend' => 'Blokirlenen ulanyjy gözle',
-'ipblocklist-username' => 'Ulanyjy ady ýa-da IP adresi:',
-'ipblocklist-sh-userblocks' => 'hasap blokirlemelerini $1',
-'ipblocklist-sh-tempblocks' => 'wagtlaýyn blokirlemeleri $1',
-'ipblocklist-sh-addressblocks' => 'ýeke IP blokirlemelerini $1',
'ipblocklist-submit' => 'Gözle',
'ipblocklist-localblock' => 'Lokal blokirleme',
'ipblocklist-otherblocks' => 'BaÅŸga {{PLURAL:$1|blokirleme|blokirlemeler}}',
-'blocklistline' => '$1, $2 blokirledi: $3 ($4)',
'infiniteblock' => 'möhletsiz',
'expiringblock' => '$2, $1 senesinde gutarýar',
'anononlyblock' => 'diňe anonimler',
@@ -2241,7 +2217,7 @@ Bökdeme gündeligi salgylanmak üçin aşakda berilýär:',
'reblock-logentry' => '[[$1]] üçin gutaryş wagtyny $2 edip, blokirleme sazlamalaryny üýtgetdi $3',
'blocklogtext' => 'Ulanyjy blokirleme we blokirlemeni aýyrma gündeligi.
Awtomatik usulda blokirlenen IP adresleri sanawda görkezilmeýär.
-Häzirki wagtda blokirlengi duran ulanyjylary [[Special:IPBlockList|IP blokirleme sanawyndan]] görüp bilersiňiz.',
+Häzirki wagtda blokirlengi duran ulanyjylary [[Special:BlockList|IP blokirleme sanawyndan]] görüp bilersiňiz.',
'unblocklogentry' => '$1 ulanyjynyň blokirlemesi aýryldy',
'block-log-flags-anononly' => 'diňe anonim ulanyjylar',
'block-log-flags-nocreate' => 'hasap açmaklyk blokirlendi',
@@ -2255,8 +2231,7 @@ Häzirki wagtda blokirlengi duran ulanyjylary [[Special:IPBlockList|IP blokirlem
'ipb_expiry_temp' => 'Gizlin ulanyjy ady blokirlemeleri hemiÅŸelik bolmalydyr.',
'ipb_hide_invalid' => 'Bu hasaby bökdäp bolmaýar; çakdanaşa köp özgerdişi bar bolmagy ahmal.',
'ipb_already_blocked' => '"$1" eýýäm blokirlenipdir.',
-'ipb-needreblock' => '== Eýýäm blokirlenipdir ==
-$1 eýýäm blokirlenipdir. Sazlamalary üýtgetmek isleýärsiňizmi?',
+'ipb-needreblock' => '$1 eýýäm blokirlenipdir. Sazlamalary üýtgetmek isleýärsiňizmi?',
'ipb-otherblocks-header' => 'BaÅŸga {{PLURAL:$1|blokirleme|blokirlemeler}}',
'ipb_cant_unblock' => 'Säwlik: $1 ID blokirlemesi tapylmady.
Blokirlemesi eýýäm aýyrylan bolmagy mümkin.',
@@ -2405,7 +2380,7 @@ Ikinji ýagdaýy saýlap alan halatyňyzda, ýörite bir çykgyt hem ulanyp bile
'allmessagesdefault' => 'Gaýybana habarlaşyk teksti',
'allmessagescurrent' => 'Häzirki habarlaşyk teksti',
'allmessagestext' => 'Bu sanaw MediaWiki at giňişliginde bar bolan ulgam habarlaşyklarynyň sanawydyr.
-Umumy MediaWiki lokalizasiýasyna goşan goşmak isleýän bolsaňyz, [http://www.mediawiki.org/wiki/Localisation MediaWiki lokalizasiýasy] we [http://translatewiki.net translatewiki.net] sahypalaryna baryp görmegiňizi haýyş edýäris.',
+Umumy MediaWiki lokalizasiýasyna goşan goşmak isleýän bolsaňyz, [//www.mediawiki.org/wiki/Localisation MediaWiki lokalizasiýasy] we [//translatewiki.net translatewiki.net] sahypalaryna baryp görmegiňizi haýyş edýäris.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' ýapykdygy zerarly bu sahypany ulanyp bolmaýar.",
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter' => 'Üýtgediş statusy boýunça filtr:',
@@ -2545,9 +2520,7 @@ Mazmun üçin bir sebäp goşmaga rugsat berýär',
'tooltip-summary' => 'Gysgaça düşündiriş giriziň',
# Metadata
-'nodublincore' => 'Bu serwer üçin Dublin Core RDF metamaglumatlary ýapyldy.',
-'nocreativecommons' => 'Bu serwer üçin Creative Commons RDF metamaglumatlary ýapyldy.',
-'notacceptable' => 'Bu wiki serweri brauzeriňiziň okap biljek formatynda maglumat üpjün edip bilmeýär.',
+'notacceptable' => 'Bu wiki serweri brauzeriňiziň okap biljek formatynda maglumat üpjün edip bilmeýär.',
# Attribution
'anonymous' => '{{SITENAME}} anonim {{PLURAL:$1|ulanyjysy|ulanyjylary}}',
@@ -2569,35 +2542,6 @@ Mazmun üçin bir sebäp goşmaga rugsat berýär',
'spam_reverting' => '$1 sahypasyna çykgytlary bolmadyk iň soňky wersiýasyna yzyna getirilýär',
'spam_blanking' => 'Ähli wersiýalarda $1 sahypasyna çykgytlar bar, boşadylýar',
-# Info page
-'infosubtitle' => 'Sahypa barada maglumat',
-'numedits' => 'Özgerdiş sany (sahypa): $1',
-'numtalkedits' => 'Özgerdiş sany (pikir alyşma sahypasy): $1',
-'numwatchers' => 'Gözegçilikde saklaýanlaryň sany: $1',
-'numauthors' => 'Dürli awtorlaryň sany (sahypa): $1',
-'numtalkauthors' => 'Dürli awtorlaryň sany (çekişme sahypasy): $1',
-
-# Math options
-'mw_math_png' => 'Hemişe PNG öwür',
-'mw_math_simple' => 'Örän aňsat bolsa HTML, ýogsam PNG',
-'mw_math_html' => 'Mümkin bolsa HTML, ýogsam PNG',
-'mw_math_source' => 'TeX-ligine galdyr (tekst brauzerleri üçin)',
-'mw_math_modern' => 'Häzirkizaman brauzerlere maslahat berilýär',
-'mw_math_mathml' => 'Mümkin bolsa MathML (eksperimental)',
-
-# Math errors
-'math_failure' => 'Derňäp bolmady',
-'math_unknown_error' => 'näbelli säwlik',
-'math_unknown_function' => 'näbelli funksiýa',
-'math_lexing_error' => 'leksiki säwlik',
-'math_syntax_error' => 'sintaktik säwlik',
-'math_image_error' => 'PNG öwürmeklik şowsuz boldy;
-latex, dvips, gs we convert gurluşlarynyň dogrulygyny barlaň',
-'math_bad_tmpdir' => 'Matematikanyň wagtlaýyn katalogyny ýazyp ýa-da döredip bolanok',
-'math_bad_output' => 'Matematika çykyş katalogyny ýazyp ýa-da döredip bolanok',
-'math_notexvc' => 'texvc ýerine ýetirilýän faýl tapylmady;
-konfigurirlemek üçin math/README serediň.',
-
# Patrolling
'markaspatrolleddiff' => 'Patrullyk edilen diýip belle',
'markaspatrolledtext' => 'Bu sahypany patrullyk edilen diýip belle',
@@ -2643,7 +2587,6 @@ Ony işletseňiz iş ulgamyňyza howp astyna salmagyňyz mümkin.",
'file-nohires' => '<small>Wersiýanyň mundan uly ölçegi ýok.</small>',
'svg-long-desc' => 'SVG faýly, nominal $1 × $2 piksel, faýl ölçegi: $3',
'show-big-image' => 'Suratyň doly ölçegi',
-'show-big-image-thumb' => '<small>Deslapky synyň ölçegi: $1 × $2 piksel</small>',
'file-info-gif-looped' => 'halkaly',
'file-info-gif-frames' => '$1 {{PLURAL:$1|kadr|kadr}}',
'file-info-png-looped' => 'halkaly',
@@ -2680,7 +2623,13 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'In',
@@ -2695,13 +2644,11 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
'exif-ycbcrpositioning' => 'Y we C ýerleşişi',
'exif-xresolution' => 'Kese ölçeg',
'exif-yresolution' => 'Dik ölçeg',
-'exif-resolutionunit' => 'X we Y ölçegleriniň birligi',
'exif-stripoffsets' => 'Surat maglumatlarynyň ýeri',
'exif-rowsperstrip' => 'Zolak başyna hatarlaryň sany',
'exif-stripbytecounts' => 'Gysylan setir başyna baýt',
'exif-jpeginterchangeformat' => 'JPEG SOI ofseti',
'exif-jpeginterchangeformatlength' => 'JPEG maglumatlarynyň baýtlary',
-'exif-transferfunction' => 'Transfer funksiýasy',
'exif-whitepoint' => 'Ak nokat reňkliligi',
'exif-primarychromaticities' => 'Esasy reňkleriň reňkliligi',
'exif-ycbcrcoefficients' => 'Reňk giňişliginiň özgeriş matrisa koeffisienti',
@@ -2720,7 +2667,6 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
'exif-compressedbitsperpixel' => 'Surat gysyş režimi',
'exif-pixelydimension' => 'Dogry surat ini',
'exif-pixelxdimension' => 'Dogry surat beýikligi',
-'exif-makernote' => 'Öndürijiniň bellikleri',
'exif-usercomment' => 'Ulanyjy teswirleri',
'exif-relatedsoundfile' => 'Degişli audio faýl',
'exif-datetimeoriginal' => 'Asyl sene we wagt',
@@ -2734,7 +2680,6 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
'exif-exposureprogram' => 'Ekspozisiýa programmasy',
'exif-spectralsensitivity' => 'Spektral duýgurlyk',
'exif-isospeedratings' => 'ISO ýagta duýgurlyk',
-'exif-oecf' => 'Optoelektrik özgerdiş koeffisienti',
'exif-shutterspeedvalue' => 'Wyderžka',
'exif-aperturevalue' => 'Diafragma',
'exif-brightnessvalue' => 'Ãagtylyk',
@@ -2747,7 +2692,6 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
'exif-focallength' => 'Fokusirleme aradaÅŸlygy',
'exif-subjectarea' => 'Obýektiň meýdançasy',
'exif-flashenergy' => 'Wspyşka energiýasy',
-'exif-spatialfrequencyresponse' => 'Giňişlik ýygylyk häsiýeti',
'exif-focalplanexresolution' => 'Fokal tekizligiň X ölçegi',
'exif-focalplaneyresolution' => 'Fokal tekizligiň Y ölçegi',
'exif-focalplaneresolutionunit' => 'Fokal tekizligiň ölçeg birligi',
@@ -2756,7 +2700,6 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
'exif-sensingmethod' => 'Sensor tipi',
'exif-filesource' => 'Faýlyň çeşmesi',
'exif-scenetype' => 'Sahna tipi',
-'exif-cfapattern' => 'Reňkli filtr tipi',
'exif-customrendered' => 'Hususy surat işleýiş',
'exif-exposuremode' => 'Ekspozisiýa režimi',
'exif-whitebalance' => 'Ak balans',
@@ -2801,6 +2744,8 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
'exif-gpsareainformation' => 'GPS sebitiniň ady',
'exif-gpsdatestamp' => 'GPS senesi',
'exif-gpsdifferential' => 'GPS differensial düzedişi',
+'exif-languagecode' => 'Dil',
+'exif-iimcategory' => 'Kategoriýa',
# EXIF attributes
'exif-compression-1' => 'Gysylmadyk',
@@ -2947,15 +2892,13 @@ Ondan soňraky çykgyt(lar) kadadan çykma hökmünde kabul edilýär, meselem:
# External editor support
'edit-externally' => 'Bu faýly daşarky programmalary ulanyp redaktirläň',
-'edit-externally-help' => '(Has köp maglumat üçin metadaky [http://www.mediawiki.org/wiki/Manual:External_editors gurmak boýunça gollanma] sahypasyna göz aýlaň)',
+'edit-externally-help' => '(Has köp maglumat üçin metadaky [//www.mediawiki.org/wiki/Manual:External_editors gurmak boýunça gollanma] sahypasyna göz aýlaň)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ählisi',
-'imagelistall' => 'ählisi',
-'watchlistall2' => 'Ählisini görkez',
-'namespacesall' => 'ählisi',
-'monthsall' => 'ählisi',
-'limitall' => 'ählisi',
+'watchlistall2' => 'Ählisini görkez',
+'namespacesall' => 'ählisi',
+'monthsall' => 'ählisi',
+'limitall' => 'ählisi',
# E-mail address confirmation
'confirmemail' => 'E-poçta adresini tassykla',
@@ -3034,6 +2977,10 @@ Sahypany gaýtadan döretmek isleýän bolsaňyz, tassyklamagyňyzy haýyş edý
'confirm-purge-top' => 'Bu sahypanyň keşini boşatmalymy?',
'confirm-purge-bottom' => 'Bir sahypany arassalamaklyk keşi boşadýar we iň täze wersiýany görüner ýaly edýär.',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-unwatch-button' => 'OK',
+
# Multipage image navigation
'imgmultipageprev' => '↠öňki sahypa',
'imgmultipagenext' => 'indiki sahypa →',
@@ -3076,14 +3023,14 @@ Adaty deslapky syny synap görüň.',
'watchlistedit-normal-legend' => 'Gözegçilik sanawyndan atlary aýyr',
'watchlistedit-normal-explain' => 'Gözegçilik sanawyňyzdaky atlar aşakda görkezilýär.
At aýyrmak üçin gapdalyndaky gutujygy belläp, "{{int:Watchlistedit-normal-submit}}" düwmesine basyň.
-[[Special:Watchlist/raw|Işlenmedik sanawy hem redaktirläp]] bilersiňiz.',
+[[Special:EditWatchlist/raw|Işlenmedik sanawy hem redaktirläp]] bilersiňiz.',
'watchlistedit-normal-submit' => 'Atlary aýyr',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 sany at|$1 sany at}} gözegçilik sanawyndan aýyryldy:',
'watchlistedit-raw-title' => 'Işlenmedik gözegçilik sanawyny redaktirle',
'watchlistedit-raw-legend' => 'Işlenmedik gözegçilik sanawyny redaktirle',
'watchlistedit-raw-explain' => 'Gözegçilik sanawyňyzdaky atlar aşakda görkezilýär. Her setirde bir at goşmak ýa-da aýyrmak arkaly sanawy üýtgedip bilersiňiz.
Bolanyňyzdan soňra "{{int:Watchlistedit-raw-submit}}" düwmesine basyň.
-Şeýle-de siz [[Special:Watchlist/edit|adaty usuldan]] hem peýdalanyp bilersiňiz.',
+Şeýle-de siz [[Special:EditWatchlist|adaty usuldan]] hem peýdalanyp bilersiňiz.',
'watchlistedit-raw-titles' => 'Atlar:',
'watchlistedit-raw-submit' => 'Gözegçilik sanawyny täzele',
'watchlistedit-raw-done' => 'Gözegçilik sanawyňyz täzelendi.',
@@ -3100,32 +3047,31 @@ Bolanyňyzdan soňra "{{int:Watchlistedit-raw-submit}}" düwmesine basyň.
'duplicate-defaultsort' => '\'\'\'Duýduryş\'\'\': Gaýybana "$2" sortlaýyş açary mundan ozalky "$1" sortlaýyş açaryny aradan aýyrýar.',
# Special:Version
-'version' => 'Wersiýa',
-'version-extensions' => 'Gurulgy giňeltmeler',
-'version-specialpages' => 'Ãörite sahypalar',
-'version-parserhooks' => 'Analizator ilgençekleri',
-'version-variables' => 'Üýtgeýänler',
-'version-other' => 'BaÅŸga',
-'version-mediahandlers' => 'Media işleýjiler',
-'version-hooks' => 'Ilgençekler',
-'version-extension-functions' => 'Giňeltme funksiýalary',
-'version-parser-extensiontags' => 'Analizator giňeltme bellikleri',
-'version-parser-function-hooks' => 'Analizator funsiýasynyň ilgençekleri',
-'version-skin-extension-functions' => 'Bezeg giňeltme funksiýalary',
-'version-hook-name' => 'Ilgençegiň ady',
-'version-hook-subscribedby' => 'Abuna ýazylan',
-'version-version' => '(Wersiýa $1)',
-'version-license' => 'Ygtyýarnama',
-'version-poweredby-credits' => "Bu wiki '''[http://www.mediawiki.org/ MediaWiki]''' arkaly üpjün edilýär, awtorlyk hukugy © 2001-$1 $2.",
-'version-poweredby-others' => 'beýlekiler',
-'version-license-info' => 'MediaWiki erkin programmadyr; MediaWiki-ni Erkin programma fondy tarapyndan çazp edilen GNU General Public License lisenziýasynyň ikini wersiýasynyň ýa-da (islegiňize görä) has täzeki bir wersiýasynyň şertlerine laýyklykda täzeden paýlap we/ýa-da üýtgedip bilersiňiz.
+'version' => 'Wersiýa',
+'version-extensions' => 'Gurulgy giňeltmeler',
+'version-specialpages' => 'Ãörite sahypalar',
+'version-parserhooks' => 'Analizator ilgençekleri',
+'version-variables' => 'Üýtgeýänler',
+'version-other' => 'BaÅŸga',
+'version-mediahandlers' => 'Media işleýjiler',
+'version-hooks' => 'Ilgençekler',
+'version-extension-functions' => 'Giňeltme funksiýalary',
+'version-parser-extensiontags' => 'Analizator giňeltme bellikleri',
+'version-parser-function-hooks' => 'Analizator funsiýasynyň ilgençekleri',
+'version-hook-name' => 'Ilgençegiň ady',
+'version-hook-subscribedby' => 'Abuna ýazylan',
+'version-version' => '(Wersiýa $1)',
+'version-license' => 'Ygtyýarnama',
+'version-poweredby-credits' => "Bu wiki '''[//www.mediawiki.org/ MediaWiki]''' arkaly üpjün edilýär, awtorlyk hukugy © 2001-$1 $2.",
+'version-poweredby-others' => 'beýlekiler',
+'version-license-info' => 'MediaWiki erkin programmadyr; MediaWiki-ni Erkin programma fondy tarapyndan çazp edilen GNU General Public License lisenziýasynyň ikini wersiýasynyň ýa-da (islegiňize görä) has täzeki bir wersiýasynyň şertlerine laýyklykda täzeden paýlap we/ýa-da üýtgedip bilersiňiz.
MediaWiki programmasy peýdaly bolar diýen umyt bilen paýlanylýar, emma onuň üçin hatda TÄJIRÇILIK GYMMATY ýa-da KESGITLENILEN MAKSADA ÃARAMLYLYK boýunça hem hiç hili KEPILLIK BERILMEÃÄR. Has giňiÅŸleýin maglumat üçin GNU General Public License lisenziýasyna serediň.
-Bu programmanyň ýany bilen siz [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License lisenziýasynyň bir nusgasyny] hem edinen bolmaly. Eger edinmedik bolsaňyz, onda Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA adresine ýazyň ýa-da [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html lisenziýasyny onlaýn okaň].',
-'version-software' => 'Gurlan programma üpjünçiligi',
-'version-software-product' => 'Önüm',
-'version-software-version' => 'Wersiýa',
+Bu programmanyň ýany bilen siz [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License lisenziýasynyň bir nusgasyny] hem edinen bolmaly. Eger edinmedik bolsaňyz, onda Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA adresine ýazyň ýa-da [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lisenziýasyny onlaýn okaň].',
+'version-software' => 'Gurlan programma üpjünçiligi',
+'version-software-product' => 'Önüm',
+'version-software-version' => 'Wersiýa',
# Special:FilePath
'filepath' => 'Faýla barýan ýol',
@@ -3138,9 +3084,7 @@ Faýlyň adyny "{{ns:file}}:" pristawkasyz giriziň.',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Dublikat faýllaryň gözlegi',
-'fileduplicatesearch-summary' => 'Heş kodlary boýunça meňzeş faýllary gözle.
-
-Faýlyň adyny "{{ns:file}}:" pristawkasyz giriziň.',
+'fileduplicatesearch-summary' => 'Heş kodlary boýunça meňzeş faýllary gözle.',
'fileduplicatesearch-legend' => 'Dublikatyny gözle',
'fileduplicatesearch-filename' => 'Faýlyň ady:',
'fileduplicatesearch-submit' => 'Gözle',
diff --git a/languages/messages/MessagesTl.php b/languages/messages/MessagesTl.php
index 03632252..e9c42f30 100644
--- a/languages/messages/MessagesTl.php
+++ b/languages/messages/MessagesTl.php
@@ -41,93 +41,93 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Nagkadalawang mga panturo papunta sa ibang pahina', 'DoblengPanturo' ),
+ 'Allmessages' => array( 'Lahat ng mga mensahe' ),
+ 'Allpages' => array( 'Lahat ng mga pahina', 'LahatPahina' ),
+ 'Ancientpages' => array( 'Sinaunang mga pahina' ),
+ 'Blankpage' => array( 'Tanggalin ang nilalaman ng pahina' ),
+ 'Block' => array( 'Hadlangan', 'Hadlangan ang IP', 'Hadlangan ang tagagamit' ),
+ 'Blockme' => array( 'Hadlangang ako' ),
+ 'Booksources' => array( 'Mga pinagmulang aklat' ),
'BrokenRedirects' => array( 'Naputol na mga panturo papunta sa ibang pahina', 'NaputulangPanturo' ),
- 'Disambiguations' => array( 'Mga paglilinaw', 'Paglilinaw' ),
- 'Userlogin' => array( 'Paglagda ng tagagamit', 'Maglagda' ),
- 'Userlogout' => array( 'Pag-alis sa pagkalagda ng tagagamit', 'AlisLagda' ),
+ 'Categories' => array( 'Mga kaurian' ),
+ 'ChangePassword' => array( 'Baguhin ang hudyat', 'Muling itakda ang hudyat', 'Muling magtakda ng hudyat' ),
+ 'Confirmemail' => array( 'Tiyakin ang e-liham' ),
+ 'Contributions' => array( 'Mga ambag' ),
'CreateAccount' => array( 'Likhain ang kuwenta', 'LikhaKuwenta' ),
- 'Preferences' => array( 'Mga nais' ),
- 'Watchlist' => array( 'Talaan ng binabantayan', 'Bantayan' ),
- 'Recentchanges' => array( 'Mga huling binago', 'HulingBinago' ),
- 'Upload' => array( 'Magkarga' ),
+ 'Deadendpages' => array( 'Mga pahinang sukol', 'Mga pahinang walang lagusan' ),
+ 'DeletedContributions' => array( 'Naburang mga ambag' ),
+ 'Disambiguations' => array( 'Mga paglilinaw', 'Paglilinaw' ),
+ 'DoubleRedirects' => array( 'Nagkadalawang mga panturo papunta sa ibang pahina', 'DoblengPanturo' ),
+ 'Emailuser' => array( 'Tagagamit ng e-liham' ),
+ 'Export' => array( 'Pagluluwas' ),
+ 'Fewestrevisions' => array( 'Pinakakaunting mga pagbabago' ),
+ 'FileDuplicateSearch' => array( 'Paghahanap ng kamukhang talaksan' ),
+ 'Filepath' => array( 'Daanan ng talaksan' ),
+ 'Import' => array( 'Pag-aangkat' ),
+ 'Invalidateemail' => array( 'Hindi tanggap na e-liham' ),
+ 'BlockList' => array( 'Talaan ng hinahadlangan', 'Talaan ng mga hinahadlangan', 'Talaan ng hinahadlangang IP' ),
+ 'LinkSearch' => array( 'Paghahanap ng kawing' ),
+ 'Listadmins' => array( 'Talaan ng mga tagapangasiwa' ),
+ 'Listbots' => array( 'Talaan ng mga bot' ),
'Listfiles' => array( 'Itala ang mga talaksan', 'Talaan ng mga talaksan', 'Talaan ng mga larawan' ),
- 'Newimages' => array( 'Bagong mga talaksan', 'Bagong mga larawan' ),
- 'Listusers' => array( 'Talaan ng mga tagagamit', 'Talaan ng tagagamit' ),
'Listgrouprights' => array( 'Talaan ng mga karapatan ng pangkat' ),
- 'Statistics' => array( 'Mga estadistika', 'Estadistika' ),
- 'Randompage' => array( 'Alin man', 'Alin mang pahina' ),
+ 'Listredirects' => array( 'Talaan ng mga pagturo sa ibang pahina' ),
+ 'Listusers' => array( 'Talaan ng mga tagagamit', 'Talaan ng tagagamit' ),
+ 'Lockdb' => array( 'Ikandado ang kalipunan ng dato' ),
+ 'Log' => array( 'Tala', 'Mga tala' ),
'Lonelypages' => array( 'Nangungulilang mga pahina', 'Ulilang mga pahina' ),
- 'Uncategorizedpages' => array( 'Mga pahinang walang kaurian' ),
- 'Uncategorizedcategories' => array( 'Mga kauriang walang kaurian' ),
- 'Uncategorizedimages' => array( 'Mga talaksang walang kaurian', 'Mga larawang walang kaurian' ),
- 'Uncategorizedtemplates' => array( 'Mga suleras na walang kaurian' ),
- 'Unusedcategories' => array( 'Hindi ginagamit na mga kaurian' ),
- 'Unusedimages' => array( 'Hindi ginagamit na mga talaksan', 'Hindi ginagamit na mga larawan' ),
- 'Wantedpages' => array( 'Ninanais na mga pahina', 'Putol na mga kawing' ),
- 'Wantedcategories' => array( 'Ninanais na mga kaurian' ),
- 'Wantedfiles' => array( 'Ninanais na mga talaksan' ),
- 'Wantedtemplates' => array( 'Ninanais na mga suleras' ),
+ 'Longpages' => array( 'Mahabang mga pahina' ),
+ 'MergeHistory' => array( 'Pagsanibin ang kasaysayan' ),
+ 'MIMEsearch' => array( 'Paghahanap ng MIME' ),
+ 'Mostcategories' => array( 'Pinakamaraming mga kaurian' ),
+ 'Mostimages' => array( 'Mga talaksang may pinakamaraming kawing', 'Pinakamaraming talaksan', 'Pinakamaraming larawan' ),
'Mostlinked' => array( 'Mga pahinang may pinakamaraming kawing', 'Pinakamaraming kawing' ),
'Mostlinkedcategories' => array( 'Mga kauriang may pinakamaraming kawing', 'Pinakagamiting mga kaurian' ),
'Mostlinkedtemplates' => array( 'Mga suleras na may pinakamaraming kawing', 'Pinakagamiting mga suleras' ),
- 'Mostimages' => array( 'Mga talaksang may pinakamaraming kawing', 'Pinakamaraming talaksan', 'Pinakamaraming larawan' ),
- 'Mostcategories' => array( 'Pinakamaraming mga kaurian' ),
'Mostrevisions' => array( 'Pinakamaraming mga pagbabago' ),
- 'Fewestrevisions' => array( 'Pinakakaunting mga pagbabago' ),
- 'Shortpages' => array( 'Maikling mga pahina' ),
- 'Longpages' => array( 'Mahabang mga pahina' ),
+ 'Movepage' => array( 'Ilipat ang pahina' ),
+ 'Mycontributions' => array( 'Mga ambag ko' ),
+ 'Mypage' => array( 'Pahina ko' ),
+ 'Mytalk' => array( 'Usapan ko' ),
+ 'Newimages' => array( 'Bagong mga talaksan', 'Bagong mga larawan' ),
'Newpages' => array( 'Bagong mga pahina' ),
- 'Ancientpages' => array( 'Sinaunang mga pahina' ),
- 'Deadendpages' => array( 'Mga pahinang sukol', 'Mga pahinang walang lagusan' ),
+ 'Popularpages' => array( 'Sikat na mga pahina' ),
+ 'Preferences' => array( 'Mga nais' ),
+ 'Prefixindex' => array( 'Talatuntunan ng unlapi' ),
'Protectedpages' => array( 'Mga pahinang nakasanggalang' ),
'Protectedtitles' => array( 'Mga pamagat na nakasanggalang' ),
- 'Allpages' => array( 'Lahat ng mga pahina', 'LahatPahina' ),
- 'Prefixindex' => array( 'Talatuntunan ng unlapi' ),
- 'Ipblocklist' => array( 'Talaan ng hinahadlangan', 'Talaan ng mga hinahadlangan', 'Talaan ng hinahadlangang IP' ),
- 'Specialpages' => array( 'Natatanging mga pahina' ),
- 'Contributions' => array( 'Mga ambag' ),
- 'Emailuser' => array( 'Tagagamit ng e-liham' ),
- 'Confirmemail' => array( 'Tiyakin ang e-liham' ),
- 'Whatlinkshere' => array( 'Ano ang nakakawing dito' ),
+ 'Randompage' => array( 'Alin man', 'Alin mang pahina' ),
+ 'Randomredirect' => array( 'Pagtuturo papunta sa alin mang pahina' ),
+ 'Recentchanges' => array( 'Mga huling binago', 'HulingBinago' ),
'Recentchangeslinked' => array( 'Nakakawing ng kamakailang pagbabago', 'Kaugnay na mga pagbabago' ),
- 'Movepage' => array( 'Ilipat ang pahina' ),
- 'Blockme' => array( 'Hadlangang ako' ),
- 'Booksources' => array( 'Mga pinagmulang aklat' ),
- 'Categories' => array( 'Mga kaurian' ),
- 'Export' => array( 'Pagluluwas' ),
- 'Version' => array( 'Bersyon' ),
- 'Allmessages' => array( 'Lahat ng mga mensahe' ),
- 'Log' => array( 'Tala', 'Mga tala' ),
- 'Blockip' => array( 'Hadlangan', 'Hadlangan ang IP', 'Hadlangan ang tagagamit' ),
+ 'Revisiondelete' => array( 'Pagbura ng pagbabago' ),
+ 'Search' => array( 'Maghanap' ),
+ 'Shortpages' => array( 'Maikling mga pahina' ),
+ 'Specialpages' => array( 'Natatanging mga pahina' ),
+ 'Statistics' => array( 'Mga estadistika', 'Estadistika' ),
+ 'Tags' => array( 'Mga tatak' ),
+ 'Uncategorizedcategories' => array( 'Mga kauriang walang kaurian' ),
+ 'Uncategorizedimages' => array( 'Mga talaksang walang kaurian', 'Mga larawang walang kaurian' ),
+ 'Uncategorizedpages' => array( 'Mga pahinang walang kaurian' ),
+ 'Uncategorizedtemplates' => array( 'Mga suleras na walang kaurian' ),
'Undelete' => array( 'Huwag burahin' ),
- 'Import' => array( 'Pag-aangkat' ),
- 'Lockdb' => array( 'Ikandado ang kalipunan ng dato' ),
'Unlockdb' => array( 'Huwag ikandado ang kalipunan ng dato' ),
- 'Userrights' => array( 'Mga karapatan ng tagagamit' ),
- 'MIMEsearch' => array( 'Paghahanap ng MIME' ),
- 'FileDuplicateSearch' => array( 'Paghahanap ng kamukhang talaksan' ),
- 'Unwatchedpages' => array( 'Mga pahinang hindi binabantayanan' ),
- 'Listredirects' => array( 'Talaan ng mga pagturo sa ibang pahina' ),
- 'Revisiondelete' => array( 'Pagbura ng pagbabago' ),
+ 'Unusedcategories' => array( 'Hindi ginagamit na mga kaurian' ),
+ 'Unusedimages' => array( 'Hindi ginagamit na mga talaksan', 'Hindi ginagamit na mga larawan' ),
'Unusedtemplates' => array( 'Mga suleras na hindi ginagamit' ),
- 'Randomredirect' => array( 'Pagtuturo papunta sa alin mang pahina' ),
- 'Mypage' => array( 'Pahina ko' ),
- 'Mytalk' => array( 'Usapan ko' ),
- 'Mycontributions' => array( 'Mga ambag ko' ),
- 'Listadmins' => array( 'Talaan ng mga tagapangasiwa' ),
- 'Listbots' => array( 'Talaan ng mga bot' ),
- 'Popularpages' => array( 'Sikat na mga pahina' ),
- 'Search' => array( 'Maghanap' ),
- 'Resetpass' => array( 'Baguhin ang hudyat', 'Muling itakda ang hudyat', 'Muling magtakda ng hudyat' ),
+ 'Unwatchedpages' => array( 'Mga pahinang hindi binabantayanan' ),
+ 'Upload' => array( 'Magkarga' ),
+ 'Userlogin' => array( 'Paglagda ng tagagamit', 'Maglagda' ),
+ 'Userlogout' => array( 'Pag-alis sa pagkalagda ng tagagamit', 'AlisLagda' ),
+ 'Userrights' => array( 'Mga karapatan ng tagagamit' ),
+ 'Version' => array( 'Bersyon' ),
+ 'Wantedcategories' => array( 'Ninanais na mga kaurian' ),
+ 'Wantedfiles' => array( 'Ninanais na mga talaksan' ),
+ 'Wantedpages' => array( 'Ninanais na mga pahina', 'Putol na mga kawing' ),
+ 'Wantedtemplates' => array( 'Ninanais na mga suleras' ),
+ 'Watchlist' => array( 'Talaan ng binabantayan', 'Bantayan' ),
+ 'Whatlinkshere' => array( 'Ano ang nakakawing dito' ),
'Withoutinterwiki' => array( 'Walang ugnayang-wiki' ),
- 'MergeHistory' => array( 'Pagsanibin ang kasaysayan' ),
- 'Filepath' => array( 'Daanan ng talaksan' ),
- 'Invalidateemail' => array( 'Hindi tanggap na e-liham' ),
- 'Blankpage' => array( 'Tanggalin ang nilalaman ng pahina' ),
- 'LinkSearch' => array( 'Paghahanap ng kawing' ),
- 'DeletedContributions' => array( 'Naburang mga ambag' ),
- 'Tags' => array( 'Mga tatak' ),
);
$messages = array(
@@ -162,8 +162,8 @@ $messages = array(
'tog-shownumberswatching' => 'Ipakita ang bilang ng mga nagbabantay na tagagamit',
'tog-oldsig' => 'Paunang tingin ng kasalukuyang lagda:',
'tog-fancysig' => 'Ituring ang lagda bilang teksto ng wiki (walang automatikong pagkawing)',
-'tog-externaleditor' => 'Gumamit ng nakatakdang panlabas na pampatnugot ayon sa likas na pagkakatakda (para sa mga dalubhasa lamang, kailangan ng natatanging mga pagtatakda sa iyong kompyuter. [http://www.mediawiki.org/wiki/Manual:External_editors Marami pang kabatiran.])',
-'tog-externaldiff' => 'Gumamit ng likas na nakatakdang panlabas na pagkakaiba (para sa mga dalubhasa lamang, kailangan ng natatanging mga pagtatakda sa iyong kompyuter. [http://www.mediawiki.org/wiki/Manual:External_editors Mas marami pang kabatiran.])',
+'tog-externaleditor' => 'Gumamit ng nakatakdang panlabas na pampatnugot ayon sa likas na pagkakatakda (para sa mga dalubhasa lamang, kailangan ng natatanging mga pagtatakda sa iyong kompyuter. [//www.mediawiki.org/wiki/Manual:External_editors Marami pang kabatiran.])',
+'tog-externaldiff' => 'Gumamit ng likas na nakatakdang panlabas na pagkakaiba (para sa mga dalubhasa lamang, kailangan ng natatanging mga pagtatakda sa iyong kompyuter. [//www.mediawiki.org/wiki/Manual:External_editors Mas marami pang kabatiran.])',
'tog-showjumplinks' => 'Payagan ang mga "tumalon sa" na kawing pampagamit',
'tog-uselivepreview' => 'Gamitin ang buhay na paunang tingin (JavaScript) (Eksperimental)',
'tog-forceeditsummary' => 'Pagsabihan ako kapag nagpapasok ng walang-lamang buod ng pagbabago',
@@ -260,15 +260,7 @@ $messages = array(
'listingcontinuesabbrev' => 'karugtong',
'index-category' => 'Mga pahinang may talatuntunan',
'noindex-category' => 'Mga pahinang walang talatuntunan',
-
-'mainpagetext' => "'''Matagumpay na ininstala ang MediaWiki.'''",
-'mainpagedocfooter' => "Silipin ang [http://meta.wikimedia.org/wiki/Help:Contents Patnubay sa Tagagamit] (''\"User's Guide\"'') para sa kaalaman sa paggamit ng wiking ''software''.
-
-== Pagsisimula ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Tala ng mga nakatakdang kumpigurasyon]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Mga malimit itanong sa MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Tala ng mga pinadadalhan ng liham ng MediaWiki]",
+'broken-file-category' => 'Mga pahina na may sirang mga kawing ng talaksan',
'about' => 'Patungkol',
'article' => 'Pahina ng nilalaman',
@@ -320,10 +312,10 @@ $messages = array(
'history' => 'Kasaysayan ng pahina',
'history_short' => 'Kasaysayan',
'updatedmarker' => 'isinapanahon mula noong huli kong pagdalaw',
-'info_short' => 'Kabatiran',
'printableversion' => 'Bersyong maililimbag',
'permalink' => 'Palagiang kawing',
'print' => 'Ilimbag',
+'view' => 'Tingnan',
'edit' => 'Baguhin',
'create' => 'Likhain',
'editthispage' => 'Baguhin ang pahinang ito',
@@ -331,6 +323,7 @@ $messages = array(
'delete' => 'Burahin',
'deletethispage' => 'Burahin itong pahina',
'undelete_short' => 'Baligtarin ang pagbura ng {{PLURAL:$1|isang pagbabago|$1 pagbabago}}',
+'viewdeleted_short' => 'Tingnan ang {{PLURAL:$1|isang binurang pagbabagp|$1 binurang pagbabago}}',
'protect' => 'Ipagsanggalang',
'protect_change' => 'baguhin',
'protectthispage' => 'Ipagsanggalang itong pahina',
@@ -415,6 +408,8 @@ Tingnan ang [[Special:Version|pahina ng bersyon]].',
'toc' => 'Mga nilalaman',
'showtoc' => 'ipakita',
'hidetoc' => 'itago',
+'collapsible-collapse' => 'Ibagsak',
+'collapsible-expand' => 'Ibuka',
'thisisdeleted' => 'Tingnan o ibalik ang $1?',
'viewdeleted' => 'Tingnan ang $1?',
'restorelink' => '{{PLURAL:$1|isang binurang pagbabagp|$1 binurang pagbabago}}',
@@ -426,6 +421,8 @@ Tingnan ang [[Special:Version|pahina ng bersyon]].',
'page-rss-feed' => '"$1" kargang RSS',
'page-atom-feed' => '"$1" kargang Atom',
'red-link-title' => '$1 (hindi umiiral ang pahina)',
+'sort-descending' => 'Pagsunud-sunurin na bumababa',
+'sort-ascending' => 'Pagsunud-sunurin na tumataas',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Pahina',
@@ -513,12 +510,11 @@ Pakisubok na lang ulit pagkaraan ng kaunting mga minuto.",
'protectedinterface' => "Nagbibigay ang pahinang ito ng tekstong panghangganan (''interface'') para sa sopwer, at ikinandado para maiwasan ang pangaabuso.",
'editinginterface' => "'''Babala:''' Binabago mo ang isang pahinang ginagamit sa pagbibigay ng tekstong panghangganan para sa sopwer.
Makakaapekto ang mga pagbago sa pahinang ito sa anyo ng hangganang (''interface'') pangtagagamit na para sa ibang mga tagagamit.
-Para sa mga salinwika, paki isang-alang-alang o konsiderahin ang paggamit ng [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], ang proyektong panglokalisasyon ng MediaWiki.",
+Para sa mga salinwika, paki isang-alang-alang o konsiderahin ang paggamit ng [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], ang proyektong panglokalisasyon ng MediaWiki.",
'sqlhidden' => '(nakatago ang tanong ng SQL)',
'cascadeprotected' => 'Nakasanggalang ang pahinang ito mula sa mga pagbabago, dahil kabilang ito sa sumusunod na {{PLURAL:$1|pahinang|mga pahinang}} nakasanggalang sa pamamagitan ng binuhay na opsyong "nahuhulog" (kumakaskada):
$2',
'namespaceprotected' => "Wala kang pahintulot na magbago ng mga pahinang nasa ngalan-espasyong '''$1'''.",
-'customcssjsprotected' => 'Wala kang pahintulot na baguhin ang pahinang ito, dahil naglalaman ito ng mga kagustuhang pansarili ng ibang tagagamit.',
'ns-specialprotected' => 'Hindi pwedeng baguhin ang mga natatanging pahina.',
'titleprotected' => "Nakasanggalang ang pamagat na ito mula sa paglikha ni [[User:$1|$1]].
Ang ibinigay na dahilan ay ''$2''.",
@@ -556,6 +552,7 @@ Huwag kalimutang baguhin ang iyong [[Special:Preferences|mga kagustuhan sa {{SIT
'createaccount' => 'Lumikha ng kuwenta',
'gotaccount' => 'May kuwenta ka na ba? $1.',
'gotaccountlink' => 'Lumagda',
+'userlogin-resetlink' => 'Nakalimutan mo ang iyong mga detalyeng panglagda?',
'createaccountmail' => 'sa pamamagitan ng e-liham',
'createaccountreason' => 'Dahilan:',
'badretype' => 'Hindi magkatugma ang ipinasok mong mga hudyat.',
@@ -570,13 +567,15 @@ Paki-andar mo po ang mga ito, pagkatapos ay lumagda na gamit ang bago mong panga
'nocookieslogin' => "Gumagamit ang {{SITENAME}} ng mga kuki (''cookies'') para mailagda ang mga tagagamit.
Hindi mo pinagagana ang mga kuki.
Paki-andar mo ang mga ito at sumubok uli.",
+'nocookiesfornew' => 'Hindi nalikha ang akawnt ng tagagamit, dahil hindi namin matiyak ang pinagmulan nito.
+Tiyaking mayroon kang pinagaganang mga otap, ikargang muli ang pahinang ito at subuking muli.',
'noname' => 'Hindi mo tinukoy ang isang tanggap na pangalan ng tagagamit.',
'loginsuccesstitle' => 'Matagumpay ang paglagda',
'loginsuccess' => "'''Nakalagda ka na sa {{SITENAME}} bilang si \"\$1\".'''",
'nosuchuser' => 'Walang tagagamit na may pangalang "$1".
Maselan sa pagtitipa ang mga pangalan ng tagagamit.
Suriin ang iyong pagbabaybay, o [[Special:UserLogin/signup|lumikha ng bagong kuwenta]].',
-'nosuchusershort' => 'Walang tagagamit na may pangalang "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Walang tagagamit na may pangalang "$1".
Pakitingnan ang iyong pagbabaybay.',
'nouserspecified' => 'Kailangang tukuyin mo ang isang pangalang pantagagamit.',
'login-userblocked' => 'Hinarang ang tagagamit na ito. Hindi pinahihintulutan ang paglalagda.',
@@ -627,13 +626,14 @@ Maaari mong huwag pansinin ang mensaheng ito, kung mali ang paglikha ng kuwentan
'usernamehasherror' => 'Hindi maaaring maglaman ng mga panitik na pantadtad ang pangalan ng tagagamit',
'login-throttled' => 'Masyadong marami ang ginawa mong kamakailan lang na mga pagsubok sa paglagdang papasok.
Maghintay po muna bago subukan uli.',
+'login-abort-generic' => 'Bigo ang paglagda mo - Pinigil',
'loginlanguagelabel' => 'Wika: $1',
'suspicious-userlogout' => "Tinanggihan ang inyong kahilingang umalis sa pagkalagda dahil tila ito ay ipinadala ng sirang pambasa-basa o apoderadong pambaon (''caching proxy'')",
# E-mail sending
'php-mail-error-unknown' => 'Hindi malamang kamalian sa tungkulin ng liham ng PHP ()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Palitan ang hudyat',
'resetpass_announce' => 'Lumagda ka sa pamamagitan ng isang pansamantalang ini-e-liham na kodigo.
Para tapusin ang paglagda, dapat kang magtakda ng isang bagong hudyat dito:',
@@ -652,6 +652,32 @@ Para tapusin ang paglagda, dapat kang magtakda ng isang bagong hudyat dito:',
Maaaring matagumpay mo nang nabago ang iyong hudyat o nakahiling na ng isang bagong pansamantalang hudyat.',
'resetpass-temp-password' => 'Pansamantalang hudyat:',
+# Special:PasswordReset
+'passwordreset' => 'Muling pagtatakda ng hudyat',
+'passwordreset-text' => 'Punuin ang pormularyong ito upang makatanggap ng isang pampaalalang e-liham ng iyong mga detalye ng akawnt.',
+'passwordreset-legend' => 'Itakdang muli ang hudyat',
+'passwordreset-disabled' => 'Hindi pinagagana sa wiking ito ang muling mga pagtatakda ng hudyat.',
+'passwordreset-pretext' => '{{PLURAL:$1| | Ipasok ang isa sa mga piraso ng dato sa ibaba}}',
+'passwordreset-username' => 'Pangalan ng tagagamit:',
+'passwordreset-email' => 'Tirahan ng e-liham:',
+'passwordreset-emailtitle' => 'Mga detalye ng akawnt sa {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Isang tao (marahil ay ikaw, mula sa tirahan ng IP na $1) ang humiling ng isang paalala sa iyong mga detalye ng akawnt para sa {{SITENAME}} ($4). Ang sumusunod na pangtagagamit na {{PLURAL:$3|akawnt ay|mga akawnt ay}} may kaugnayan sa tirahang ito ng e-liham:
+
+$2
+
+{{PLURAL:$3|Ang pansamantalang hudyat na ito|Ang pansamantalang mga hudyat na ito}} ay mawawalan ng bisa sa loob ng {{PLURAL:$5|isang araw|$5 mga araw}}.
+Dapat kang lumagda at pumili ng isang bagong hudyat ngayon. Kung ibang tao ang gumawa ng kahilingang ito, o kung naalala mo na ang orihinal mong hudyat, at hindi mo na nais palitan ito, maaari mong huwag nang pansinin ang mensaheng ito at magpatuloy sa paggamit ng luma mong hudyat.',
+'passwordreset-emailtext-user' => 'Ang tagagamit na si $1 sa {{SITENAME}} ay humiling ng isang paalala ng iyong mga akawnt ng detalye para sa {{SITENAME}}
+($4). Ang sumusunod na pangtagagamit na {{PLURAL:$3|akawnt ay|mga akawnt ay}} may kaugnayan sa tirahang ito ng e-liham:
+
+$2
+
+{{PLURAL:$3|Ang pansamantalang hudyat na ito|Ang pansamantalang mga hudyat na ito}} mawawalan ng bias sa loob ng {{PLURAL:$5|isang araw|$5 mga araw}}.
+Dapat kang lumagda at pumili ng isang hudyat ngayon. Kung ibang tao ang gumawa ng kahilingang ito, o kung naalala mo na ang iyong orihinal na hudyat, at hindi mo na nais palitan pa ito, maaari mong huwag nang pansinin ang mensaheng ito at magpatuloy sa paggamit ng iyong lumang hudyat.',
+'passwordreset-emailelement' => 'Pangalan ng tagagamit: $1
+Pansamantalang hudyat: $2',
+'passwordreset-emailsent' => 'Naipadala na ang isang e-liham na pampaalala.',
+
# Edit page toolbar
'bold_sample' => 'Makapal na panitik',
'bold_tip' => 'Makapal na panitik',
@@ -663,8 +689,6 @@ Maaaring matagumpay mo nang nabago ang iyong hudyat o nakahiling na ng isang bag
'extlink_tip' => 'Panlabas na kawing (tandaan ang unlaping http://)',
'headline_sample' => 'Paulong teksto',
'headline_tip' => 'Paulong antas 2',
-'math_sample' => 'Isingit ang pormula dito',
-'math_tip' => 'Pormulang pangmatematika (LaTeX)',
'nowiki_sample' => 'Isingit ang hindi nakapormat na teksto dito',
'nowiki_tip' => 'Balewalain ang pormat na pangwiki',
'image_sample' => 'Halimbawa.jpg',
@@ -754,7 +778,7 @@ o [{{fullurl:{{FULLPAGENAME}}|action=edit}} baguhin ang pahinang ito]</span>.',
'noarticletext-nopermission' => 'Kasalukuyang walang teksto sa pahinang ito.
Maaari mong [[Special:Search/{{PAGENAME}}|hanapin ang pamagat ng pahinang ito]] sa ibang mga pahina,
o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} maghanap sa kaugnay na mga talaan]</span>.',
-'userpage-userdoesnotexist' => 'Hindi nakatala ang kuwenta ng tagagamit na "$1".
+'userpage-userdoesnotexist' => 'Hindi nakatala ang kuwenta ng tagagamit na "<nowiki>$1</nowiki>".
Pakisuri kung ibig mong likhain/baguhin ang pahinang ito.',
'userpage-userdoesnotexist-view' => 'Hindi nakatala ang kuwenta ng tagagamit na "$1".',
'blocked-notice-logextract' => 'Kasalukuyang hinarang ang tagagamit na ito.
@@ -792,6 +816,7 @@ Kung hindi pa rin ito gumagana, subukang [[Special:UserLogout|umalis sa pagkakal
'token_suffix_mismatch' => "'''Hindi tinanggap ang iyong pagbabago dahil sinira ng kliyente ang mga karakter na bantas sa ''token'' ng mamatnugot.
Tinanggihan ang pagbabago upang maiwasan ang korapsyon ng teksto ng artikulo.
Kadalasang nangyayari ito kapag gumagamit ka ng masurot na serbisyo ng hindi-nakikilalang apoderadong (''anonymous proxy'') nasa web.",
+'edit_form_incomplete' => "'''Ilan sa mga bahagi ng pormularyong pampatnugot ay hindi nakarating sa tagapaghain; suriing muli na ang iyong mga pagbabago ay buo at subukang muli.'''",
'editing' => 'Binabago ang $1',
'editingsection' => 'Binabago ang $1 (bahagi)',
'editingcomment' => 'Binabago ang $1 (bagong seksyon)',
@@ -1153,9 +1178,10 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
'changepassword' => 'Baguhin ang hudyat',
'prefs-skin' => 'Pabalat',
'skin-preview' => 'Unang tingin',
-'prefs-math' => 'Matematika',
'datedefault' => 'Walang kagustuhan',
+'prefs-beta' => 'Mga kaangkapang-katangiang pang-beta',
'prefs-datetime' => 'Petsa at oras',
+'prefs-labs' => 'Mga kasangkapang-katangiang pang-Labs',
'prefs-personal' => 'Sanligang pangkatangian ng tagagamit',
'prefs-rc' => 'Kamakailan lamang na mga pagbabago',
'prefs-watchlist' => 'Talaan ng mga binabantayan',
@@ -1177,8 +1203,6 @@ Subuking lagyan ng unlapi/paunang ''all:'' upang hanapin ang lahat ng mga nialal
'columns' => 'Mga pahabang hanay:',
'searchresultshead' => 'Hanapin',
'resultsperpage' => 'Bilang ng pagtama sa bawat pahina:',
-'contextlines' => 'Linya bawat pagtama:',
-'contextchars' => 'Konteksto ng bawat guhit:',
'stub-threshold' => 'Kakayanan para sa pagpopormat ng <a href="#" class="usbong">kawing ng usbong</a> (mga \'\'byte\'\'):',
'stub-threshold-disabled' => 'Hindi pinagagana',
'recentchangesdays' => 'Mga araw na ipapakita sa kamakailan lamang na mga pagbabago:',
@@ -1239,8 +1263,8 @@ Dapat na mas mababa kaysa $1 {{PLURAL:$1|panitik|mga panitik}}.',
'email' => 'E-liham',
'prefs-help-realname' => "Opsyonal ('di-talaga kailangan) ang tunay na pangalan.
Kung pipiliin mong ibigay ito, gagamitin ito para mabigyan ka ng pagkilala para iyong mga ginawa.",
-'prefs-help-email' => 'Opsyonal (hindi talaga kailangan) ang adres ng e-liham, subalit makapagpapahintulot ito sa pagpapadala ng bagong hudyat mo kapag nakalimutan mo ang iyong lumang hudyat.
-Mapipili mo ring payagan ang ibang tagagamit na makapagugnayan sa iyo sa pamamagitan ng iyong pahina ng tagagamit o pahina ng usapan na hindi na kailangan pang ipakilala ang iyong katauhan.',
+'prefs-help-email' => 'Hindi talaga kailangang may tirahan ng e-liham, subalit kailangan para sa muling pagtatakda ng hudyat, kung makalimutan mo ang hudyat mo.',
+'prefs-help-email-others' => 'Mapipili mo rin na makipag-ugnayan sa iyo ang iba sa pamamagitan ng iyong pahina ng tagagamit o usapan na hindi kailangang ilantad ang katauhan mo.',
'prefs-help-email-required' => 'Kailangan ang adres ng e-liham.',
'prefs-info' => 'Payak na kabatiran',
'prefs-i18n' => 'Internasyonalisasyon',
@@ -1365,7 +1389,6 @@ Mapipili mo ring payagan ang ibang tagagamit na makapagugnayan sa iyo sa pamamag
'right-userrights' => 'Baguhin ang lahat ng karapatan ng tagagamit',
'right-userrights-interwiki' => 'Baguhin ang karapatan ng mga tagagamit na nasa ibang mga wiki',
'right-siteadmin' => 'Ikandado at alisin ang pagkakakandado ng kalipunan ng dato',
-'right-reset-passwords' => 'Mulng itakda ang mga hudyat ng iba pang mga tagagamit',
'right-override-export-depth' => 'Iluwas ang mga pahina na kabilang ang mga pahinang nakakawing magpahanggang sa isang lalim na 5',
'right-sendemail' => 'Magpadala ng e-liham sa ibang mga tagagamit',
@@ -1494,14 +1517,14 @@ Para maisama ang isang talaksan sa loob ng isang pahina, gumamit ng isang kawing
'minlength1' => 'Dapat may kahit na isang titik lang ang mga pangalan ng talaksan.',
'illegalfilename' => 'Ang pangalan ng talaksan (filename) na "$1" ay mayroon mga karakter na hindi pinapahintulot bilang pamagat ng isang pahina. Paki palitan ang pangalan at subukang ikarga muli.',
'badfilename' => 'Pinalitan ang pangalan ng talaksan na naging "$1".',
-'filetype-mime-mismatch' => 'Hindi tumutugma ang dugtong ng talaksan sa uri ng MIME.',
+'filetype-mime-mismatch' => 'Hindi tumutugma ang dugtong ng talaksan na ".$1" sa napansing uri ng MIME ng talaksan ($2).',
'filetype-badmime' => 'Hindi pinapahintulutang maikarga ang uring "$1" ng mga talaksang MIME.',
'filetype-bad-ie-mime' => 'Hindi maikarga ang talaksang ito dahil mapapansin/mapupuna ito ng Internet Explorer bilang "$1",
na hindi pinapahintulutan at maaaring isang mapanganib na uri ng talaksan.',
'filetype-unwanted-type' => "Isang hindi ninanais na uri ng talaksan ang '''\".\$1\"'''.
Ang ninanais na {{PLURAL:\$3|uri ng talaksan ay ang|mga uri ng talaksan ay ang mga}} \$2.",
-'filetype-banned-type' => "Isang hindi pinapahintulutang uri ng talaksan ang '''\".\$1\"'''.
-Ang pinapahintulutang {{PLURAL:\$3|uri ng talaksan ay ang|mga uri ng talaksan ay ang mga}} \$2.",
+'filetype-banned-type' => 'Ang \'\'\'".$1"\'\'\' {{PLURAL:$4|ay isang hindi pinapahintulutang uri ng talaksan|ay mga hindi pinapahintulutang mga uri ng talaksan}}.
+Ang mga pinapayagang {{PLURAL:$3|uri ng talaksan ay ang|mga uri ng talaksan ay ang mga}} $2.',
'filetype-missing' => 'Walang karugtong/hulapi ang talaksan (katulad ng ".jpg").',
'empty-file' => 'Walang laman ang ipinasa mong talaksan.',
'file-too-large' => 'Napakalaki ng ipinasa mong talaksan.',
@@ -1552,6 +1575,7 @@ bumalik at ikarga ang talaksan na ito sa bagong pangalan. [[File:$1|thumb|center
'php-uploaddisabledtext' => 'Hindi pinapagana ang mga pagkakarga ng talaksang PHP. Pakisuri ang katakdaan ng mga_pagkakarga_ng_talaksan.',
'uploadscripted' => 'Naglalaman ang talaksan na ito ng HTML o kodigong script na maaaring mali ang pagkaintindi ng isang web browser.',
'uploadvirus' => 'Naglalaman ng virus ang talaksan! Mga detalye: $1',
+'uploadjava' => 'Ang talaksan ay isang talaksang ZIP na naglalaman ng isang .klase ng talaksan. na Java. Hindi pinapayagan ang pagkakarga ng mga talaksang Java, dahil nakasasanhi sila ng mga paglilimita ng kaligtasan na kailangang lampasan.',
'upload-source' => 'Pinagmulang talaksan',
'sourcefilename' => 'Pangalan ng panggagalingang talaksan:',
'sourceurl' => 'Pinagmulang URL:',
@@ -1561,10 +1585,6 @@ bumalik at ikarga ang talaksan na ito sa bagong pangalan. [[File:$1|thumb|center
'upload-options' => 'Ikargang pataas ang mga pagpipilian',
'watchthisupload' => 'Bantayan ang talaksang ito',
'filewasdeleted' => 'Isang talaksan na may ganitong pangalan ay naikarga dati at nabura. Kailangan mong tingnan ang $1 bago magpatuloy sa pagkarga nito muli.',
-'upload-wasdeleted' => "'''Babala: Kinakarga mo ang isang talaksan na nabura na.'''
-
-Ikunsidera mo kung nararapat ba na ipagpatuloy ang pagkarga ng talaksang ito.
-Ibinigay ang tala ng pagbura ng talaksang ito para konbinyente:",
'filename-bad-prefix' => "Ang talaksan na ikakarga mo ay nagsisimula sa '''\"\$1\"''', na isang hindi naglalarawang pangalan na karaniwang tinatakda ng mga kamerang digital. Paki pili ang isang mas naglalarawang pangalan para sa iyong talaksan.",
'upload-success-subj' => 'Matagumpay na pagkakarga',
'upload-success-msg' => 'Matagumpay ang ikinarga mo mula sa [$2]. Makukuha ito mula rito: [[:{{ns:file}}:$1]]',
@@ -1587,6 +1607,23 @@ Kapag nagpatuloy ang suliranin, makipagugnayan sa isang [[Special:ListUsers/syso
'upload-unknown-size' => 'Hindi nalalamang laki',
'upload-http-error' => 'Naganap ang isang kamaliang pang-HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Nakaranas ng isang kamalian habang binubuksan ang talaksan para sa mga pagsusuri ng ZIP.',
+'zip-wrong-format' => 'Ang tinukoy na talaksan ay hindi isang talaksang ZIP.',
+'zip-bad' => 'Ang talaksan ay isang talaksang sira o kaya ay hindi mabasang ZIP.
+Hindi ito maaaring masuri ng tama para sa kaligtasan.',
+'zip-unsupported' => 'Ang talaksan ay isang talaksang ZIP na gumagamit ng mga tampok ng ZIP na hindi tinatangkilik ng MediaWiki.
+Hindi ito maaaring suriin ng tama para sa kaligtasan.',
+
+# Special:UploadStash
+'uploadstash' => 'Ikargang paitaas ang imbak',
+'uploadstash-summary' => 'Ang pahinang ito ay nagbibigay ng kakayahang pumunta sa mga talaksang naikargang paitaas (o nasa proseso ng pagkakarga) subalit hindi pa nalalathala sa wiki. Hindi makikita ninuman ang mga talaksang ito maliban na lang sa tagagamit na nagkarga ng mga ito.',
+'uploadstash-clear' => 'Hawiin ang inimbak na mga talaksan',
+'uploadstash-nofiles' => 'Wala kang inimbak na mga talaksan.',
+'uploadstash-badtoken' => 'Hindi matagumpay ang pagsasagawa ng mga galaw, maaaring dahil wala nang bisa ang iyong mga katibayan ng kapangyarihang mamatnugot. Subukang muli.',
+'uploadstash-errclear' => 'Nabigo ang paghawi ng mga talaksan.',
+'uploadstash-refresh' => 'Sariwain ang talaan ng mga talaksan',
+
# img_auth script messages
'img-auth-accessdenied' => 'Hindi pinayagan ang pagpunta',
'img-auth-nopathinfo' => 'Nawawalang PATH_INFO.
@@ -1671,7 +1708,6 @@ Ipinapakita sa sumusunod na talaan ang {{PLURAL:$1|unang pahina lamang|unang $1
Mayroong makukuhang [[Special:WhatLinksHere/$2|buong talaan]].',
'nolinkstoimage' => 'Walang pahinang nakakawing sa talaksang ito.',
'morelinkstoimage' => 'Tingnan ang [[Special:WhatLinksHere/$1|mas marami pang mga kawing]] para sa pahinang ito.',
-'redirectstofile' => 'Tumuturo ang sumusunod na {{PLURAL:$1|talaksan|$1 mga talaksan}} patungo sa talaksang ito:',
'duplicatesoffile' => 'Ang sumusunod na {{PLURAL:$1|file is a duplicate|$1 mga talaksan ay mga kapareho}} ng talaksang ito ([[Special:FileDuplicateSearch/$2|mas marami pang mga detalye]]):',
'sharedupload' => 'Ang talaksang ito ay nagmula sa $1 at maaaring gamitin ng iba pang mga proyekto.',
'sharedupload-desc-there' => 'Ang talaksang ito ay nagmula sa $1 at maaaring gamitin sa ibang mga proyekto.
@@ -1767,11 +1803,12 @@ Ang paglalarawang nasa ibabaw ng [$2 pahina ng paglalarawan ng talaksan] nito do
Dapat silang umugnay sa tamang paksa<br />
Tinuturing ang isang pahina bilang pahinang naglilinaw kung ginagamit nito ang isang suleras (template) na nakaugnay mula sa [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Mga dobleng karga',
-'doubleredirectstext' => 'Nagtatala ang pahinang ito ng mga pahinang pumupunta sa iba pang mga pahinang nililipatan. Naglalaman ang bawat hanay ng mga kawing sa una ang pangalawang kapupuntahan, maging ng puntiryang pangalawang kapupuntahan, na karaniwang "tunay" na puntiryang pahina, na dapat kinatuturuan ng unang pupuntahan.
+'doubleredirects' => 'Mga dobleng karga',
+'doubleredirectstext' => 'Nagtatala ang pahinang ito ng mga pahinang pumupunta sa iba pang mga pahinang nililipatan. Naglalaman ang bawat hanay ng mga kawing sa una ang pangalawang kapupuntahan, maging ng puntiryang pangalawang kapupuntahan, na karaniwang "tunay" na puntiryang pahina, na dapat kinatuturuan ng unang pupuntahan.
Nasugpo na ang mga ipinasok na <del>inekisan</del>.',
-'double-redirect-fixed-move' => 'Inilipat na ang [[$1]], isa na ngayon itong panuto/panturo patungo sa [[$2]]',
-'double-redirect-fixer' => 'Tagapagayos ng panuto/panturo',
+'double-redirect-fixed-move' => 'Inilipat na ang [[$1]], isa na ngayon itong panuto/panturo patungo sa [[$2]]',
+'double-redirect-fixed-maintenance' => 'Inaayos ang mga pagpapapuntang nagkadalawa magmula [[$1]] papunta sa [[$2]].',
+'double-redirect-fixer' => 'Tagapagayos ng panuto/panturo',
'brokenredirects' => 'Bali/putol na mga panuto o panturo',
'brokenredirectstext' => 'Ang sumusunod na mga panturo papunta sa ibang pahina ay kumakawing patungo sa mga pahinang hindi pa umiiral.',
@@ -1848,6 +1885,7 @@ Pakitandaan lamang na ang iba mga websayt ay maaaring nakakawing sa isang talaks
'pager-newer-n' => '{{PLURAL:$1|mas bagong 1|mas bagong $1}}',
'pager-older-n' => '{{PLURAL:$1|mas lumang 1|mas lumang $1}}',
'suppress' => 'Tagapagingat-tago',
+'querypage-disabled' => 'Hindi pinagagana ang natatanging pahinang ito para sa mga dahilan ng pagganap.',
# Book sources
'booksources' => 'Mapagkukuhanang mga aklat',
@@ -1964,6 +2002,10 @@ Ang ipinasok mong adres ng e-liham sa [[Special:Preferences|iyong mga kagustuhan
'noemailtext' => 'Ang tagagamit na ito ay hindi tumukoy ng isang tanggap na adres ng e-liham.',
'nowikiemailtitle' => 'Walang pinapahintulutang e-liham',
'nowikiemailtext' => 'Pinili ng tagagamit na ito na huwag makatanggap ng e-liham mula sa ibang mga tagagamit.',
+'emailnotarget' => 'Hindi umiiral o hindi katanggap-tanggap na pangalan ng tagagamit para sa tagatanggap.',
+'emailtarget' => 'Ipasok ang pangalan ng tagagamit ng tagatanggap',
+'emailusername' => 'Pangalan ng tagagamit:',
+'emailusernamesubmit' => 'Ipasa',
'email-legend' => 'Magpadala ng e-liham patungo sa isa pang tagagamit ng {{SITENAME}}',
'emailfrom' => 'Mula kay:',
'emailto' => 'Para kay:',
@@ -1988,10 +2030,8 @@ Ang ipinasok mong adres ng e-liham sa [[Special:Preferences|iyong mga kagustuhan
'watchlistanontext' => 'Paki $1 upang makita o mabago ang mga aytem sa iyong binabantayan.',
'watchnologin' => 'Di ka naka-lagda',
'watchnologintext' => 'Dapat kang [[Special:UserLogin|nakalagda]] upang mabago ang talaan mo ng mga binabantayan.',
-'addedwatch' => 'Dinagdag na sa mga Babantayan',
'addedwatchtext' => "Dinagdag na ang pahinang \"[[:\$1]]\" sa iyong [[Special:Watchlist|Babantayan]].
Makikita doon ang lahat ng mga susunod na pagbabago sa pahinang ito pati na ang usapang pahina, at ang pahina ay makikitang sa '''malalaking titik''' ('''''bold''''') sa [[Special:RecentChanges|tala ng mga huling binago]] para madaling makita.",
-'removedwatch' => 'Tinigil na ang pagbabantay',
'removedwatchtext' => 'Ang pahinang "[[:$1]]" ay tinanggal na mula sa [[Special:Watchlist|iyong talaan ng binabantayan]].',
'watch' => 'Bantayan ito',
'watchthispage' => 'Bantayan ang pahinang ito',
@@ -2048,7 +2088,7 @@ Para baguhin ang mga pagtatakda ng iyong talaan ng mga binabantayan, puntahan an
$UNWATCHURL
Balik-tugon at karagdagang tulong:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Burahin ang pahina',
@@ -2123,7 +2163,7 @@ Tingnan ang [[Special:ProtectedPages|talaan ng nakasanggalang na mga pahina]] pa
'protect_expiry_invalid' => 'Hindi tanggap/hindi tama ang oras ng pagtatapos.',
'protect_expiry_old' => 'Nasa nakaraan ang oras ng pagtatapos.',
'protect-unchain-permissions' => 'Huwag ikandado ang iba pang mga pagpipilian ng pagprutekta',
-'protect-text' => "Maaari mong tingnan at baguhin dito ang antas ng pananananggalang para sa pahinang '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Maaari mong tingnan at baguhin dito ang antas ng pananananggalang para sa pahinang '''$1'''.",
'protect-locked-blocked' => "Hindi mo maaaring baguhin ang mga antas ng panananggalang habang may pagharang/paghadlang.
Narito ang mga pangkasalukuyang pagtatakda para sa pahinang '''$1''':",
'protect-locked-dblock' => "Hindi mababago ang mga antas ng panananggalang dahil sa isang umiiral na pagkandado ng kalipunan ng dato.
@@ -2220,9 +2260,10 @@ $1',
'undelete-show-file-submit' => 'Oo',
# Namespace form on various pages
-'namespace' => 'Espasyo ng pangalan:',
-'invert' => 'Baligtarin and pinili',
-'blanknamespace' => '(Pangunahin)',
+'namespace' => 'Espasyo ng pangalan:',
+'invert' => 'Baligtarin and pinili',
+'namespace_association' => 'Kaugnay na mga puwang na pampangalan',
+'blanknamespace' => '(Pangunahin)',
# Contributions
'contributions' => 'Mga ambag ng tagagamit',
@@ -2272,13 +2313,15 @@ Ang pinakahuling entrada sa talaan ng pagharang ay ibinigay sa ibaba para sa pa
'whatlinkshere-filters' => 'Mga pansala',
# Block/unblock
+'autoblockid' => 'Kusang harangin ang #$1',
+'block' => 'Harangin ang tagagamit',
+'unblock' => 'Huwag harangin ang tagagamit',
'blockip' => 'Harangin/hadlangan ang tagagamit',
'blockip-title' => 'Harangin ang tagagamit',
'blockip-legend' => 'Iharang ang tagagamit',
'blockiptext' => 'Gamitin ang mga lahok sa ibaba upang maharang ang akses sa pagsulat mula sa isang espesipikong IP address o bansag.
Gawin lamang ito para maiwasan ang bandalismo, at napapaloob sa [[{{MediaWiki:Policy-url}}|patakaran]].
Punan ang espesipikong dahilan sa ibaba (halimbawa, magbanggit ng partikular na mga pahina na nagkaroon ng bandalismo).',
-'ipaddress' => 'Direksyong IP:',
'ipadressorusername' => 'Direksyong IP o bansag:',
'ipbexpiry' => 'Pagkawalang-bisa:',
'ipbreason' => 'Dahilan:',
@@ -2291,7 +2334,7 @@ Punan ang espesipikong dahilan sa ibaba (halimbawa, magbanggit ng partikular na
** Ugaling nananakot/pagligalig
** Pagmamalabis ng maramihang kuwenta
** Hindi kanais-nais na bansag',
-'ipbanononly' => 'Harangin/hadlangan lamang ang mga hindi nakikilalang mga tagagamit',
+'ipb-hardblock' => 'Pigilan ang nakalagdang mga tagagamit mula sa pamamatnugot mula sa tirahan ng IP na ito',
'ipbcreateaccount' => 'Hadlangan ang paglikha ng kuwenta',
'ipbemailban' => 'Hadlangan ang tagagamit sa pagpapadala ng e-liham',
'ipbenableautoblock' => 'Kusang harangin/hadlangan ang huling adres ng IP na ginamit ng tagagamit na ito, at anumang susunod pang mga IP na susubukan nilang gamitin para makapagbago/mamatnugot',
@@ -2302,12 +2345,15 @@ Punan ang espesipikong dahilan sa ibaba (halimbawa, magbanggit ng partikular na
'ipbotherreason' => 'Iba/karagdagang dahilan:',
'ipbhidename' => 'Itago ang pangalan ng tagagamit mula sa pagbabago at mga talaan',
'ipbwatchuser' => 'Bantayan ang pahinang pantagagamit at pahina ng usapan ng tagagamit na ito',
-'ipballowusertalk' => 'Pahintulutan ang tagagamit na ito na baguhin ang sariling pahina ng usapan habang hinahadlangan/may paghaharang',
+'ipb-disableusertalk' => 'Pigilan ang tagagamit na ito mula sa pamamatnugot ng kanilang pansariling pahina ng usapan habang hinahadlangan',
'ipb-change-block' => 'Muling harangin/hadlangan ang tagagamit na ginagamitan ng ganitong mga pagtatakda',
+'ipb-confirm' => 'Tiyakin ang pagharang',
'badipaddress' => 'Hindi tanggap na adres ng IP',
'blockipsuccesssub' => 'Matagumpay ang pagharang/paghadlang',
'blockipsuccesstext' => 'Hinadlangan ang [[Special:Contributions/$1|$1]].<br />
Tingnan ang [[Special:IPBlockList|talaan ng mga hinadlangang IP]] upang makita ang mga paghadlang.',
+'ipb-blockingself' => 'Hahadlangan mo na ang sarili mo! Nakatitiyak ka bang nais mong gawin iyan?',
+'ipb-confirmhideuser' => 'Hahadlangan mo na ang isang tagagamit na pinagagana ang "ikubli ang tagagamit". Susupilin nito ang pangalan ng tagagamit sa lahat ng mga pagpapasok sa mga tala at mga talaan. Nakatitiyak ka bang nais mong gawin iyan?',
'ipb-edit-dropdown' => 'Baguhin ang mga dahilan sa pagharang',
'ipb-unblock-addr' => 'Tanggalin ang pagkaharang ng $1',
'ipb-unblock' => 'Tanggalin ang pagkaharang ng isang bansag o IP address',
@@ -2317,17 +2363,23 @@ Tingnan ang [[Special:IPBlockList|talaan ng mga hinadlangang IP]] upang makita a
'unblockiptext' => 'Gamitin ang pormularyo sa ibaba upang ibalik ang akses ng pagsulat sa isang dating nakaharang na IP address o bansag.',
'ipusubmit' => 'Tanggalin ang paghadlang na ito',
'unblocked' => 'Natanggal sa pagkaharang ang tagagamit na [[User:$1|$1]]',
+'unblocked-range' => 'Hindi na hinaharang ang $1',
'unblocked-id' => 'Tinanggal na ang pagharang/paghadlang na $1',
+'blocklist' => 'Hinahadlangang mga tagagamit',
'ipblocklist' => 'Hinahadlangang mga tagagamit',
'ipblocklist-legend' => 'Hanapin ang isang hinarang na tagagamit',
-'ipblocklist-username' => 'Bansag o IP address:',
-'ipblocklist-sh-userblocks' => '$1 mga paghadlang o pagharang sa kuwenta/akawnt',
-'ipblocklist-sh-tempblocks' => '$1 pansamantalang mga pagharang/paghadlang',
-'ipblocklist-sh-addressblocks' => '$1 isahang pagharang/paghalang sa IP',
+'blocklist-userblocks' => 'Itago ang mga paghahadlang ng akawnt',
+'blocklist-tempblocks' => 'Pansamantalang ikubli ang mga pagharang',
+'blocklist-addressblocks' => 'Itago ang isahang mga paghadlang sa IP',
+'blocklist-timestamp' => 'Tatak ng oras',
+'blocklist-target' => 'Puntirya',
+'blocklist-expiry' => 'Magtatapos sa',
+'blocklist-by' => 'Tagapangasiwang humaharang',
+'blocklist-params' => 'Mga parametro ng pagharang',
+'blocklist-reason' => 'Dahilan',
'ipblocklist-submit' => 'Hanapin',
'ipblocklist-localblock' => 'Lokal na pagharang',
'ipblocklist-otherblocks' => 'Ibang {{PLURAL:$1|harang|mga harang}}',
-'blocklistline' => '$1, $2 hinarang si $3 (magtatapos sa $4)',
'infiniteblock' => 'walang katapusan',
'expiringblock' => 'magtatapos sa $1 sa ganap na $2',
'anononlyblock' => 'di kilala lamang',
@@ -2352,7 +2404,7 @@ Ang tala ng pagpigil ay ibinigay sa ibaba upang mapagsanggunian:',
'reblock-logentry' => 'binago ang itinakdang pagharang/paghadlang kay [[$1]] na may oras/panahon ng pagtatapos na $2 $3',
'blocklogtext' => 'Tala ito ng paghaharang at pagpapawawalang bisa ng pagharang/paghadlang.
Hindi nakatala rito ang mga awtomatiko/kusang hinarang/hinadlangang mga adres ng IP.
-Tingnan ang [[Special:IPBlockList|talaan ng mga hinarang na/hinadlangang IP]] para sa talaan ng pangkasalukuyang gumagana pang mga pinagbabawalan at mga pagharang/paghadlang.',
+Tingnan ang [[Special:BlockList|talaan ng mga hinarang na/hinadlangang IP]] para sa talaan ng pangkasalukuyang gumagana pang mga pinagbabawalan at mga pagharang/paghadlang.',
'unblocklogentry' => 'tinanggal ang pagharang/paghadlang kay $1',
'block-log-flags-anononly' => 'mga di-kilalang tagagamit lamang',
'block-log-flags-nocreate' => 'Nakapatay ang paglikha ng akawnt',
@@ -2366,9 +2418,9 @@ Tingnan ang [[Special:IPBlockList|talaan ng mga hinarang na/hinadlangang IP]] pa
'ipb_expiry_temp' => 'Kinakailangang pamalagian ang mga nakatagong paghadlang ng pangalan ng tagagamit.',
'ipb_hide_invalid' => 'Hindi nasupil ang akawnt na ito; maaaring mayroon itong napakaraming mga pagbabago.',
'ipb_already_blocked' => 'Nakaharang na ang "$1"',
-'ipb-needreblock' => '== Hinarang/hinadlangan na ==
-Hinarang/hinadlangan na si $1. Ibig mo bang baguhin ang mga pagtatakda?',
+'ipb-needreblock' => 'Hinarang/hinadlangan na si $1. Ibig mo bang baguhin ang mga pagtatakda?',
'ipb-otherblocks-header' => 'Ibang {{PLURAL:$1|harang|mga harang}}',
+'unblock-hideuser' => 'Hindi mo matatanggal ang paghadlang sa tagagamit na ito, dahil naitago ang kanilang pangalan ng tagagamit.',
'ipb_cant_unblock' => 'Kamalian: Hindi natagpuan ang ID ng pagharang/paghadlang na $1. Maaaring natanggal na ang pagkakaharang nito/paghahadlang dito.',
'ipb_blocked_as_range' => 'Mali: Hindi diretsong nakaharang ang IP na $1 at hindi maaaring tanggalin sa pagkakaharang. Bagaman, bahagi ito sa sakop na $2, na maaaring tanggalin sa pagkaharang.',
'ip_range_invalid' => 'Hindi tamang sakop ng IP.',
@@ -2409,7 +2461,6 @@ Para ikandado o tanggalin ang kandado ng kalipunan ng dato, kailangan nitong mag
# Move page
'move-page' => 'Ilipat ang $1',
-'move-page-backlink' => '↠$1',
'move-page-legend' => 'Ilipat ang pahina',
'movepagetext' => "Mapapalitan ang pangalan ng isang pahina kapag ginamit mo ang pormularyong nasa ibaba, malilipat ang lahat ng kasaysayan nito patungo sa bagong pangalan.
Magiging isang pahina ng panuto/panturo patungo sa bagong pamagat ang dati/lumang pangalan.
@@ -2529,7 +2580,7 @@ Sa huling kaso, maaari mong gumamit ng ungay, hal. [[{{#Special:Export}}/{{Media
'allmessagesdefault' => 'Tinakdang teksto',
'allmessagescurrent' => 'Kasalukuyang teksto',
'allmessagestext' => 'Isa itong talaan ng mga mensahe ng sistema na makukuha mula sa espasyo ng pangalang MediaWiki.
-Pakidalaw ang [http://www.mediawiki.org/wiki/Localisation Lokalisasyong MediaWiki] at [http://translatewiki.net translatewiki.net] kung ibig mong magambag sa heneriko o pangkalahatang lokalisasyon ng MediaWiki.',
+Pakidalaw ang [//www.mediawiki.org/wiki/Localisation Lokalisasyong MediaWiki] at [//translatewiki.net translatewiki.net] kung ibig mong magambag sa heneriko o pangkalahatang lokalisasyon ng MediaWiki.',
'allmessagesnotsupportedDB' => "Hindi magagamit ang '''{{ns:special}}:AllMessages''' dahil hindi gumagana ang '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'Salain',
'allmessages-filter' => 'Salain ayon sa katayuan ng pagbabagay:',
@@ -2691,9 +2742,7 @@ Sagipin mo ito sa iyong kompyuter at papaitaas na ikarga ito rito.',
'modern.js' => '/* Anumang JavaScript dito ay ikakarga para sa mga tagagamit na gumagamit ng Makabagong pabalat */',
# Metadata
-'nodublincore' => 'Hindi pinagana ang metadatang Dublin Core RDF para sa serbidor na ito.',
-'nocreativecommons' => 'Hindi pinagana ang metadatang Creative Commons RDF para sa serbidor na ito.',
-'notacceptable' => 'Hindi makapagbigay ng dato ang serbidor ng wiki sa anyong mababasa ng iyong kliyente.',
+'notacceptable' => 'Hindi makapagbigay ng dato ang serbidor ng wiki sa anyong mababasa ng iyong kliyente.',
# Attribution
'anonymous' => 'Hindi kilalang {{PLURAL:$1|tagagamit|mga tagagamit}} ng {{SITENAME}}',
@@ -2716,14 +2765,6 @@ Maaaring dahil ito sa isang kawing sa isang nakatalang hinarang dahil di-kinaisn
'spam_reverting' => "Ibinabalik sa huling bersyon na 'di-naglalaman ng mga kawing sa $1",
'spam_blanking' => 'Lahat ng mga pagbabago ay naglalaman ng mga kawing sa $1, pagpapatlang',
-# Info page
-'infosubtitle' => 'Kabatiran para sa pahina',
-'numedits' => 'Bilang ng mga pagbabago (pahina): $1',
-'numtalkedits' => 'Bilang ng mga pagbabago (pahinang usapan): $1',
-'numwatchers' => 'Bilang ng mga tagatingin: $1',
-'numauthors' => 'Bilang ng mga bukdo-tanging mga may-akda (pahina): $1',
-'numtalkauthors' => 'Bilang ng bukod-tanging mga may-akda (pahinang usapan): $1',
-
# Skin names
'skinname-standard' => 'Klasiko',
'skinname-nostalgia' => 'Nostalhiya',
@@ -2734,26 +2775,6 @@ Maaaring dahil ito sa isang kawing sa isang nakatalang hinarang dahil di-kinaisn
'skinname-simple' => 'Payak',
'skinname-modern' => 'Makabago (Moderno)',
-# Math options
-'mw_math_png' => 'Palaging ilarawan sa anyong PNG',
-'mw_math_simple' => 'HTML kung napakapayak o kaya PNG kung iba',
-'mw_math_html' => 'HTML kung maaari o kaya PNG kapag iba',
-'mw_math_source' => "Iwanan bilang TeX (para sa mga panghanap na pangteksto o ''text browser'')",
-'mw_math_modern' => 'Irekomenda para sa makabagong mga panghanap',
-'mw_math_mathml' => 'MathML kung maaari (sinusubok pa)',
-
-# Math errors
-'math_failure' => 'Nabigo sa pagbanghay',
-'math_unknown_error' => 'hindi nalalamang kamalian',
-'math_unknown_function' => 'hindi nalalamang tungkulin',
-'math_lexing_error' => 'kamalian sa pagbabatas',
-'math_syntax_error' => 'kamalian sa palaugnayan',
-'math_image_error' => 'Nabigo ang pagpapalit upang maging PNG; suriin kung tama ang pagtatalaga ng latex at dvipng (o dvips + gs + convert)',
-'math_bad_tmpdir' => 'Hindi maisulat sa o makalikha ng pansamantalang direktoryong pangmatematika',
-'math_bad_output' => 'Hindi maisulat sa o makalikha ng direktoryo ng produktong pangmatematika',
-'math_notexvc' => 'Nawawala ang maisasakatuparang texvc;
-pakitingnan ang matematika/BASAHINAKO para maisaayos ang konpigurasyon.',
-
# Patrolling
'markaspatrolleddiff' => 'Tatakan bilang napatrolya na',
'markaspatrolledtext' => 'Tatakan ang pahinang ito bilang napatrolya na',
@@ -2789,22 +2810,25 @@ $1',
'nextdiff' => 'Mas bagong pagbabago →',
# Media information
-'mediawarning' => "'''Babala''': Maaaring naglalaman ng kodigong malisyoso ang uri ng talaksang ito.
+'mediawarning' => "'''Babala''': Maaaring naglalaman ng kodigong malisyoso ang uri ng talaksang ito.
Maaaring manganib ang iyong sistema kapag ipinagana mo ito.",
-'imagemaxsize' => "Takdang hangganan sa laki ng larawan: <br />''(para sa mga pahina ng paglalarawan ng talaksan)''",
-'thumbsize' => 'Maliit na sukat (parang "kuko sa hinlalaki" lamang):',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pahina|mga pahina}}',
-'file-info' => 'sukat ng talaksan: $1, tipo ng MIME: $2',
-'file-info-size' => '$1 × $2 piksel, sukat ng talaksan: $3, tipo ng MIME: $4',
-'file-nohires' => '<small>Walang makuhang mas mataas na resolusyon (kalinawan).</small>',
-'svg-long-desc' => 'Talaksang SVG, nasa mga bilang na $1 × $2 mga piksel, sukat ng talaksan: $3',
-'show-big-image' => 'Buong resolusyon (kalinawan)',
-'show-big-image-thumb' => '<small>Laki ng paunang tinging ganito: $1 × $2 mga piksel</small>',
-'file-info-gif-looped' => 'nasilo na',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|banhay|mga banhay}}',
-'file-info-png-looped' => 'nakalikaw',
-'file-info-png-repeat' => 'pinaandar ng $1 {{PLURAL:$1|ulit|mga ulit}}',
-'file-info-png-frames' => ' $1 {{PLURAL:$1|kuwadro|mga kuwadro}}',
+'imagemaxsize' => "Takdang hangganan sa laki ng larawan: <br />''(para sa mga pahina ng paglalarawan ng talaksan)''",
+'thumbsize' => 'Maliit na sukat (parang "kuko sa hinlalaki" lamang):',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|pahina|mga pahina}}',
+'file-info' => 'sukat ng talaksan: $1, tipo ng MIME: $2',
+'file-info-size' => '$1 × $2 piksel, sukat ng talaksan: $3, tipo ng MIME: $4',
+'file-info-size-pages' => '$1 × $2 mga piksel, sukat ng talaksan: $3, uri ng MIME: $4, $5 {{PLURAL:$5|pahina|mga pahina}}',
+'file-nohires' => '<small>Walang makuhang mas mataas na resolusyon (kalinawan).</small>',
+'svg-long-desc' => 'Talaksang SVG, nasa mga bilang na $1 × $2 mga piksel, sukat ng talaksan: $3',
+'show-big-image' => 'Buong resolusyon (kalinawan)',
+'show-big-image-preview' => '<small>Sukat ng paunang-tingin na ito: $1.</small>',
+'show-big-image-other' => '<small>Iba pang mga resolusyon: $1.</small>',
+'show-big-image-size' => '$1 x $2 mga piksel',
+'file-info-gif-looped' => 'nasilo na',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|banhay|mga banhay}}',
+'file-info-png-looped' => 'nakalikaw',
+'file-info-png-repeat' => 'pinaandar ng $1 {{PLURAL:$1|ulit|mga ulit}}',
+'file-info-png-frames' => ' $1 {{PLURAL:$1|kuwadro|mga kuwadro}}',
# Special:NewFiles
'newimages' => 'Galerya ng mga bagong talaksan',
@@ -2834,15 +2858,21 @@ Anumang susunod na mga kawing sa pinanggalingang linya ay tinuturing na mga ekse
Kapag nabago ang talaksan mula sa anyong orihinal nito, may ilang detalyeng hindi ganap na maipapakita ang nabagong talaksan.',
'metadata-expand' => 'Ipakita ang karugtong na mga detalye',
'metadata-collapse' => 'Itago ang karugtong na mga detalye',
-'metadata-fields' => 'Ang mga pook ng metadatang EXIF na nakatala sa mensaheng ito ay masasama sa ipinapakitang pahina ng larawan kapag tumiklop ang tabla ng metadata.
-Nakatakdang itago ang iba pa.
-* make
-* model
-* datetimeoriginal
-* exposuretime
-* fnumber
-* isospeedratings
-* focallength',
+'metadata-fields' => 'Ang mga hanay ng pook ng metadato ng larawan na nakatala sa mensaheng ito ay masasama sa ipinapakitang pahina ng larawan kapag tumiklop ang tabla ng metadato.
+Likas na nakatakdang itago ang iba pa.
+* yari
+* modelo
+* orihinal na petsa at oras
+* panahon ng pagkakalantad
+* bilang ng f
+* antas ng bilis ng iso
+* haba ng tuon
+* artista
+* karapatang-ari
+* paglalarawan ng larawan
+* latitud ng gps
+* longhitud ng gps
+* altitud ng gps',
# EXIF tags
'exif-imagewidth' => 'Lapad',
@@ -2857,13 +2887,11 @@ Nakatakdang itago ang iba pa.
'exif-ycbcrpositioning' => 'Pagkakaposisyon ng Y at C',
'exif-xresolution' => 'Pahalang na resolusyon (kalinawan)',
'exif-yresolution' => 'Bertikal (patayo) na resolusyon/kalinawan',
-'exif-resolutionunit' => 'Yunit ng resolusyong X at Y',
'exif-stripoffsets' => 'Lokasyon ng dato ng larawan',
'exif-rowsperstrip' => 'Bilang ng pahalang na hanay bawat manipis na piraso',
'exif-stripbytecounts' => 'Mga byte ng bawat siniksik na piraso',
'exif-jpeginterchangeformat' => "Bawiin at ibalanse (i-''offset'') patungo sa JPEG SOI",
'exif-jpeginterchangeformatlength' => 'Mga byte ng datong JPEG',
-'exif-transferfunction' => 'Tungkuling panglipat',
'exif-whitepoint' => 'Kadalisayan (kromatisidad) ng punto o hangganan ng kaputian',
'exif-primarychromaticities' => 'Mga kadalisayan (kromatisidad) ng mga pangunahing kulay (mga primarya)',
'exif-ycbcrcoefficients' => 'Mga koepisyente (katuwang na bilang) ng matris na pambago ng espasyo ng kulay',
@@ -2882,7 +2910,6 @@ Nakatakdang itago ang iba pa.
'exif-compressedbitsperpixel' => 'Modalidad (paraan) ng pagsisiksik ng larawan',
'exif-pixelydimension' => 'Lapad ng larawan',
'exif-pixelxdimension' => 'Taas ng larawan',
-'exif-makernote' => 'Mga tala mula sa kumpanyang tagagawa',
'exif-usercomment' => 'Mga kumento ng tagagamit',
'exif-relatedsoundfile' => 'Kaugnay na talaksang nadidinig (audio)',
'exif-datetimeoriginal' => 'Petsa at oras ng paglikha ng mga dato',
@@ -2896,7 +2923,6 @@ Nakatakdang itago ang iba pa.
'exif-exposureprogram' => 'Programa ng paglalantad',
'exif-spectralsensitivity' => 'Sensitibidad sa ispektrum',
'exif-isospeedratings' => 'Grado ng bilis ng ISO',
-'exif-oecf' => 'Paktora ng optoelektronikong pagpapalit',
'exif-shutterspeedvalue' => 'Bilis ng pansara ng APEX',
'exif-aperturevalue' => 'Apertura ng APEX',
'exif-brightnessvalue' => 'Kaningningan ng APEX',
@@ -2909,7 +2935,6 @@ Nakatakdang itago ang iba pa.
'exif-focallength' => 'Haba ng lenteng pampokus (pantuon)',
'exif-subjectarea' => 'Saklaw na paksa',
'exif-flashenergy' => "Lakas ng kisap (''flash'')",
-'exif-spatialfrequencyresponse' => 'Tugon ng kalimitan na pangespasyo',
'exif-focalplanexresolution' => 'Resolusyong X ng kalatagan o lapyang pampokus',
'exif-focalplaneyresolution' => 'Resolusyong Y ng kalatagan o lapyang pampokus',
'exif-focalplaneresolutionunit' => 'Yunit ng resolusyon (kalinawan) ng kalatagan o lapyang pampokus',
@@ -2918,7 +2943,6 @@ Nakatakdang itago ang iba pa.
'exif-sensingmethod' => 'Paraang pandama',
'exif-filesource' => 'Pinagmulang talaksan',
'exif-scenetype' => 'Uri ng tagpuan',
-'exif-cfapattern' => 'Gawi ng CFA',
'exif-customrendered' => 'Pagpoproseso ng pinasadyang larawan',
'exif-exposuremode' => 'Modalidad ng paglalantad',
'exif-whitebalance' => 'Balanse ng Kaputian',
@@ -2963,11 +2987,77 @@ Nakatakdang itago ang iba pa.
'exif-gpsareainformation' => 'Pangalan ng lugar ng GPS',
'exif-gpsdatestamp' => 'Petsa ng GPS',
'exif-gpsdifferential' => 'Pagtatama sa pakakaiba ng GPS',
+'exif-jpegfilecomment' => 'Puna sa talaksang JPEG',
+'exif-keywords' => 'Mga susing-salita',
+'exif-worldregioncreated' => 'Rehiyon ng mundo kung saan kinuhanan ang larawan',
+'exif-countrycreated' => 'Bansa kung saan kinuhanan ang larawan',
+'exif-countrycodecreated' => 'Kodigo para sa bansa kung saan kinuhanan ang larawan',
+'exif-provinceorstatecreated' => 'Lalawigan o estado kung saan kinuhanan ang larawan',
+'exif-citycreated' => 'Lungsod kung saan kinuhanan ang larawan',
+'exif-sublocationcreated' => 'Kabahaging kinalalagyan ng lungsod kung saan kinuhanan ang larawan',
+'exif-worldregiondest' => 'Ipinapakitang rehiyon ng mundo',
+'exif-countrydest' => 'Ipinapakitang bansa',
+'exif-countrycodedest' => 'Kodigo para sa bansng ipinapakita',
+'exif-provinceorstatedest' => 'Lalawigan o estadong ipinapakita',
+'exif-citydest' => 'Lungsod na ipinapakita',
+'exif-sublocationdest' => 'Kabahaging kinalalagyan ng lungsod na ipinapakita',
'exif-objectname' => 'Maiksing pamagat',
+'exif-specialinstructions' => 'Natatanging mga tagubilin',
+'exif-headline' => 'Ulo ng Balita',
+'exif-credit' => 'Pagbanggit/Tagapagbigay',
+'exif-source' => 'Pinagmulan',
+'exif-editstatus' => 'Katayuan sa pamamatnugot ng larawan',
+'exif-urgency' => 'Katindihan ng pangangailangan',
+'exif-fixtureidentifier' => 'Pangalan ng nakakabit',
+'exif-locationdest' => 'Kinalalagyang nilalarawan',
+'exif-locationdestcode' => 'Kodigo ng kinalalagyang nilalarawan',
+'exif-objectcycle' => 'Oras ng araw na pinaglalaanan ng midyang iyan',
+'exif-contact' => 'Kabatiran sa pakikipag-ugnayan',
+'exif-writer' => 'Manunulat',
+'exif-languagecode' => 'Wika',
+'exif-iimversion' => 'Bersyon ng IIM',
+'exif-iimcategory' => 'Kategorya',
+'exif-iimsupplementalcategory' => 'Karagdagang mga kategorya',
+'exif-datetimeexpires' => 'Huwag gamitin pagkaraan',
+'exif-datetimereleased' => 'Pinakawalan noong',
+'exif-originaltransmissionref' => 'Kodigo ng kinalalagyan ng orihinal na paghahatid',
+'exif-identifier' => 'Tagapagpakilala',
+'exif-lens' => 'Ginamit na lente',
+'exif-serialnumber' => 'Panunurang bilang ng kamera',
+'exif-cameraownername' => 'May-ari ng kamera',
+'exif-label' => 'Tatak',
+'exif-datetimemetadata' => 'Petsa kung kailang huling binago ang metadato',
+'exif-nickname' => 'Impormal na pangalan ng larawan',
+'exif-rating' => 'Antas (mula sa 5)',
+'exif-rightscertificate' => 'Katibayan ng pamamahala ng mga karapatan',
+'exif-copyrighted' => 'Katayuan ng karapatang-ari',
+'exif-copyrightowner' => 'May-ari ng karapatang-ari',
+'exif-usageterms' => 'Mga tuntunin sa paggamit',
+'exif-webstatement' => 'Pahayag ng karapatang-ari habang nasa linya ng Internet',
+'exif-originaldocumentid' => 'Natatanging ID ng orihinal na kasulatan',
+'exif-licenseurl' => 'URL para sa lisensiya ng karapatang-ari',
+'exif-morepermissionsurl' => 'Pamalit na kabatiran sa paglilisensiya',
+'exif-attributionurl' => 'Kapag ginagamit ulit ang akdang ito, mangyaring kumawing sa',
+'exif-preferredattributionname' => 'Kapag ginagamit ulit ang akdang ito, mangyaring banggitin si',
+'exif-pngfilecomment' => 'Puna sa talaksang PNG',
+'exif-disclaimer' => 'Pagtatatuwa',
+'exif-contentwarning' => 'Babala sa nilalaman',
+'exif-giffilecomment' => 'Puna sa talaksang GIF',
+'exif-intellectualgenre' => 'Uri ng bagay',
+'exif-subjectnewscode' => 'Kodigo ng paksa',
+'exif-scenecode' => 'Kodigo ng tanawin ng IPTC',
+'exif-event' => 'Nilalarawang kaganapan',
+'exif-organisationinimage' => 'Nilalarawang samahan',
+'exif-personinimage' => 'Nilalarawang tao',
+'exif-originalimageheight' => 'Taas ng larawan bago ito inani',
+'exif-originalimagewidth' => 'Lapad ng larawan bago ito inani',
# EXIF attributes
'exif-compression-1' => 'Walang kompresyon',
+'exif-copyrighted-true' => 'Nakakarapatang-ari',
+'exif-copyrighted-false' => 'Nasasakupan ng madla',
+
'exif-unknowndate' => 'Hindi alam na araw',
'exif-orientation-1' => 'Karaniwan',
@@ -2982,6 +3072,8 @@ Nakatakdang itago ang iba pa.
'exif-planarconfiguration-1' => 'pagkaayos sa malalaking bahagi (chunky)',
'exif-planarconfiguration-2' => 'planar na pagkaayos',
+'exif-colorspace-65535' => 'Hindi nakaakma sa pamantayang sukat',
+
'exif-componentsconfiguration-0' => 'wala',
'exif-exposureprogram-0' => 'Hindi nabigyan ng kahulugan',
@@ -3099,6 +3191,10 @@ Nakatakdang itago ang iba pa.
'exif-gpslongitude-e' => 'Silangang longhitud',
'exif-gpslongitude-w' => 'Kanlurang longhitud',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|metro|mga metro}} na nasa itaas ng antas ng dagat',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|metro|mga metro}} na nasa ilalim ng antas ng dagat',
+
'exif-gpsstatus-a' => 'Kasalukuyang nagsusukat',
'exif-gpsstatus-v' => 'Interoperabilidad (pagiging naisasagawa) ng sukat',
@@ -3110,21 +3206,73 @@ Nakatakdang itago ang iba pa.
'exif-gpsspeed-m' => 'Mga milya bawat oras',
'exif-gpsspeed-n' => "Mga ''knot''",
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Mga kilometro',
+'exif-gpsdestdistance-m' => 'Mga milya',
+'exif-gpsdestdistance-n' => 'Milyang pangdagat',
+
+'exif-gpsdop-excellent' => 'Pinakamahusay ($1)',
+'exif-gpsdop-good' => 'Mabuti ($1)',
+'exif-gpsdop-moderate' => 'Katamtaman ($1)',
+'exif-gpsdop-fair' => 'Patas ($1)',
+'exif-gpsdop-poor' => 'Hamak ($1)',
+
+'exif-objectcycle-a' => 'Umaga lamang',
+'exif-objectcycle-p' => 'Gabi lamang',
+'exif-objectcycle-b' => 'Kapwa umaga at gabi',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Totoong direksyon',
'exif-gpsdirection-m' => 'Mabato-balaning (magnetikong) direksyon',
+'exif-ycbcrpositioning-1' => 'Nakagitna',
+'exif-ycbcrpositioning-2' => 'May kasamang pook',
+
+'exif-dc-contributor' => 'Mga tagapag-ambag',
+'exif-dc-coverage' => 'Malawak o panandaliang saklaw ng midya',
+'exif-dc-date' => '(Mga) petsa',
+'exif-dc-publisher' => 'Tagapaglathala',
+'exif-dc-relation' => 'Kaugnay na midya',
+'exif-dc-rights' => 'Mga karapatan',
+'exif-dc-source' => 'Midyang pinagmulan',
+'exif-dc-type' => 'Uri ng midya',
+
+'exif-rating-rejected' => 'Tinanggihan',
+
+'exif-isospeedratings-overflow' => 'Mas mahigit kaysa sa 65535',
+
+'exif-iimcategory-ace' => 'Sining, kalinangan at kaaliwan',
+'exif-iimcategory-clj' => 'Krimen at batas',
+'exif-iimcategory-dis' => 'Mga kalamidad at mga sakuna',
+'exif-iimcategory-fin' => 'Kabuhayan at negosyo',
+'exif-iimcategory-edu' => 'Pag-aaral',
+'exif-iimcategory-evn' => 'Kapaligiran',
+'exif-iimcategory-hth' => 'Kalusugan',
+'exif-iimcategory-hum' => 'Napag-uukulan ng tao',
+'exif-iimcategory-lab' => 'Paggawa',
+'exif-iimcategory-lif' => 'Estilo ng pamumuhay at paglilibang',
+'exif-iimcategory-pol' => 'Politika',
+'exif-iimcategory-rel' => 'Pananampalataya at paniniwala',
+'exif-iimcategory-sci' => 'Agham at teknolohiya',
+'exif-iimcategory-soi' => 'Mga paksang panlipunan',
+'exif-iimcategory-spo' => 'Palakasan',
+'exif-iimcategory-war' => 'Digmaan, hidwaan at ligalig',
+'exif-iimcategory-wea' => 'Panahon',
+
+'exif-urgency-normal' => 'Pangkaraniwan ($1)',
+'exif-urgency-low' => 'Mababa ( $1 )',
+'exif-urgency-high' => 'Mataas ($1)',
+'exif-urgency-other' => 'Pagkakauna-unang tinukoy ng tagagamit ($1)',
+
# External editor support
'edit-externally' => 'Baguhin ang talaksang ito sa pamamagitan ng isang panlabas na aplikasyon',
-'edit-externally-help' => 'Tingnan ang [http://meta.wikimedia.org/wiki/Help:External_editors mga kaalaman/paraan sa paghahanda at pagaayos] para sa mas marami pang kabatiran.',
+'edit-externally-help' => 'Tingnan ang [//meta.wikimedia.org/wiki/Help:External_editors mga kaalaman/paraan sa paghahanda at pagaayos] para sa mas marami pang kabatiran.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'lahat',
-'imagelistall' => 'lahat',
-'watchlistall2' => 'lahat',
-'namespacesall' => 'lahat',
-'monthsall' => 'lahat',
-'limitall' => 'lahat',
+'watchlistall2' => 'lahat',
+'namespacesall' => 'lahat',
+'monthsall' => 'lahat',
+'limitall' => 'lahat',
# E-mail address confirmation
'confirmemail' => 'Patotohanan ang adres ng e-liham',
@@ -3202,11 +3350,12 @@ $1",
'trackbackdeleteok' => "Tagumpay na nabura ang ''trackback''.",
# Delete conflict
-'deletedwhileediting' => 'Babala: Binura ang pahinang ito pagkaraan mong simulan ang pagbago!',
-'confirmrecreate' => "Binura ni [[User:$1|$1]] ([[User talk:$1|usapan]]) ang pahinang ito pagkaraan mong magumpisang magbago na may dahilang:
+'deletedwhileediting' => 'Babala: Binura ang pahinang ito pagkaraan mong simulan ang pagbago!',
+'confirmrecreate' => "Binura ni [[User:$1|$1]] ([[User talk:$1|usapan]]) ang pahinang ito pagkaraan mong magumpisang magbago na may dahilang:
: ''$2''
Pakitiyak kung ibig mo talagang likhain muli ang pahinang ito.",
-'recreate' => 'Likhain muli',
+'confirmrecreate-noreason' => 'Binura ng tagagamit na si [[User:$1|$1]] ([[User talk:$1|talk]]) ang pahinang ito pagkaraang simulan mo ang pagbago. Mangyaring tiyakan na nais mo talagang muling likhain ang pahinang ito.',
+'recreate' => 'Likhain muli',
'unit-pixel' => 'px',
@@ -3257,7 +3406,7 @@ maaaring hindi naipapakita sa talaang ito ang mga pagbabagong mas bago pa kaysa
'watchlistedit-normal-legend' => 'Tanggalin ang mga pamagat mula sa binabantayan',
'watchlistedit-normal-explain' => 'Pinapakita sa ibaba ang mga pamagat na nasa talaan mo ng mga binabantayan.
Para tanggalin ang isang pamagat, lagyan ng tsek ang kahon katabi nito, at pindutin ang "{{int:Watchlistedit-normal-submit}}".
-Maaari mo ring [[Special:Watchlist/raw|baguhin ang hilaw na talaan]].',
+Maaari mo ring [[Special:EditWatchlist/raw|baguhin ang hilaw na talaan]].',
'watchlistedit-normal-submit' => 'Tanggalin ang mga Pamagat',
'watchlistedit-normal-done' => 'Tinatanggal mula sa iyong talaan ng mga binabantayan ang {{PLURAL:$1|1 pamagat|$1 mga pamagat}}:',
'watchlistedit-raw-title' => 'Baguhin ang hilaw na talaan ng mga binabantayan',
@@ -3265,7 +3414,7 @@ Maaari mo ring [[Special:Watchlist/raw|baguhin ang hilaw na talaan]].',
'watchlistedit-raw-explain' => 'Ipinapakita sa ibaba ang mga pamagat na nasa iyong talaan ng mga binabantayan, at maaaring baguhin sa pamamagitan ng pagdaragdag at pagtatanggal mula sa talaan;
isang pamagat bawat linya.
Kapag nakatapos na, pindutin ang "{{int:Watchlistedit-raw-submit}}".
-Maaari mo ring [[Special:Watchlist/edit|gamitin ang pangkaraniwang pampatnugot]].',
+Maaari mo ring [[Special:EditWatchlist|gamitin ang pangkaraniwang pampatnugot]].',
'watchlistedit-raw-titles' => 'Mga pamagat:',
'watchlistedit-raw-submit' => 'Baguhin ang talaan ng mga binabantayan',
'watchlistedit-raw-done' => 'Isinapanahon ang iyong talaan ng mga binabantayan.',
@@ -3326,31 +3475,31 @@ Maaari mo ring [[Special:Watchlist/edit|gamitin ang pangkaraniwang pampatnugot]]
'duplicate-defaultsort' => 'Babala: Madadaig ng susi ng pagtatakdang "$2" ang mas naunang susi ng pagtatakdang "$1".',
# Special:Version
-'version' => 'Bersyon',
-'version-extensions' => 'Nakaluklok/Nakainstalang mga karugtong',
-'version-specialpages' => 'Natatanging mga pahina',
-'version-parserhooks' => "Mga pangkawit ng banghay (''parser'')",
-'version-variables' => 'Mga bagay na nababago/nagbabago',
-'version-skins' => 'Mga pabalat',
-'version-other' => 'Iba pa',
-'version-mediahandlers' => 'Mga tagahawak/tagapamahala ng midya',
-'version-hooks' => 'Mga pangkawit',
-'version-extension-functions' => 'Mga tungkuling pangkarugtong',
-'version-parser-extensiontags' => "Mga tatak ng banghay (''parser'')",
-'version-parser-function-hooks' => "Mga pangkawit ng/sa tungkuling pambanghay (''parser'')",
-'version-skin-extension-functions' => 'Mga tungkulin ng karugtong na pabalat',
-'version-hook-name' => 'Pangalan ng pangkawit',
-'version-hook-subscribedby' => 'Sinuskribi ng/ni/nina',
-'version-version' => '(Bersyon $1)',
-'version-license' => 'Lisensiya',
-'version-poweredby-credits' => "Ang wiking ito ay pinapatakbo ng '''[http://www.mediawiki.org/ MediaWiki]''', karapatang-ari © 2001-$1 $2.",
-'version-poweredby-others' => 'iba pa',
-'version-license-info' => 'Ang MediaWiki ay isang malayang sopwer; maaari mo itong ipamahagi at/o baguhin ito sa ilalim ng mga patakaran ng Pangkalahatang Pangmadlang Lisensiyang GNU ayon sa pagkakalathala ng Pundasyon ng Malayang Sopwer; na maaaring bersyong 2 ng Lisensiya, o (kung nais mo) anumang susunod na bersyon.
+'version' => 'Bersyon',
+'version-extensions' => 'Nakaluklok/Nakainstalang mga karugtong',
+'version-specialpages' => 'Natatanging mga pahina',
+'version-parserhooks' => "Mga pangkawit ng banghay (''parser'')",
+'version-variables' => 'Mga bagay na nababago/nagbabago',
+'version-antispam' => 'Pag-iwas sa masasamang mga e-liham',
+'version-skins' => 'Mga pabalat',
+'version-other' => 'Iba pa',
+'version-mediahandlers' => 'Mga tagahawak/tagapamahala ng midya',
+'version-hooks' => 'Mga pangkawit',
+'version-extension-functions' => 'Mga tungkuling pangkarugtong',
+'version-parser-extensiontags' => "Mga tatak ng banghay (''parser'')",
+'version-parser-function-hooks' => "Mga pangkawit ng/sa tungkuling pambanghay (''parser'')",
+'version-hook-name' => 'Pangalan ng pangkawit',
+'version-hook-subscribedby' => 'Sinuskribi ng/ni/nina',
+'version-version' => '(Bersyon $1)',
+'version-license' => 'Lisensiya',
+'version-poweredby-credits' => "Ang wiking ito ay pinapatakbo ng '''[//www.mediawiki.org/ MediaWiki]''', karapatang-ari © 2001-$1 $2.",
+'version-poweredby-others' => 'iba pa',
+'version-license-info' => 'Ang MediaWiki ay isang malayang sopwer; maaari mo itong ipamahagi at/o baguhin ito sa ilalim ng mga patakaran ng Pangkalahatang Pangmadlang Lisensiyang GNU ayon sa pagkakalathala ng Pundasyon ng Malayang Sopwer; na maaaring bersyong 2 ng Lisensiya, o (kung nais mo) anumang susunod na bersyon.
Ang MediaWiki ay ipinamamahagi na umaasang magiging gamitin, subaliut WALANG ANUMANG KATIYAKAN; ni walang pahiwatig ng PAGIGING MABENTA o KAANGKUPAN PARA ISANG TIYAK NA LAYUNIN. Tingnan ang Pangkalahatang Pangmadlang Lisensiyang GNU para sa mas marami pang mga detalye.
-Dapat na nakatanggap ka ng [{{SERVER}}{{SCRIPTPATH}}/COPYING isang sipi ng Pangkalahatang Pangmadlang Lisensiyang GNU] kasama ang programang ito; kung hindi, sumulat sa Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html basahin ito habang nasa Internet].',
-'version-software' => 'Inistalang software',
-'version-software-product' => 'Produkto',
-'version-software-version' => 'Bersyon',
+Dapat na nakatanggap ka ng [{{SERVER}}{{SCRIPTPATH}}/COPYING isang sipi ng Pangkalahatang Pangmadlang Lisensiyang GNU] kasama ang programang ito; kung hindi, sumulat sa Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [//www.gnu.org/licenses/old-licenses/gpl-2.0.html basahin ito habang nasa Internet].',
+'version-software' => 'Inistalang software',
+'version-software-product' => 'Produkto',
+'version-software-version' => 'Bersyon',
# Special:FilePath
'filepath' => 'Lokasyon ng talaksan (file path)',
@@ -3361,22 +3510,22 @@ Dapat na nakatanggap ka ng [{{SERVER}}{{SCRIPTPATH}}/COPYING isang sipi ng Pangk
Ipasok ang pangalan ng talaksan na hindi kasama ang unlaping "{{ns:image}}:".',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Maghanap ng kaparehong mga talaksan',
-'fileduplicatesearch-summary' => "Maghanap ng mga kaparehong mga talaksan sa baba ng kanyang halaga ng ''hash''.
-
-Ipasok ang pangalan ng talaksan na wala ang unlaping \"{{ns:image}}:\".",
-'fileduplicatesearch-legend' => 'Maghanap ng mga kapareho',
-'fileduplicatesearch-filename' => 'Pangalan ng talaksan:',
-'fileduplicatesearch-submit' => 'Hanapin',
-'fileduplicatesearch-info' => '$1 × $2 pixel<br />Laki ng talaksan: $3<br />Uri ng MIME: $4',
-'fileduplicatesearch-result-1' => 'Walang katulad ang talaksan na "$1".',
-'fileduplicatesearch-result-n' => 'Ang talaksan na "$1" ay may {{PLURAL:$2|1 kapareho|$2 mga kapareho}}.',
+'fileduplicatesearch' => 'Maghanap ng kaparehong mga talaksan',
+'fileduplicatesearch-summary' => "Maghanap ng mga kaparehong mga talaksan sa baba ng kanyang halaga ng ''hash''.",
+'fileduplicatesearch-legend' => 'Maghanap ng mga kapareho',
+'fileduplicatesearch-filename' => 'Pangalan ng talaksan:',
+'fileduplicatesearch-submit' => 'Hanapin',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />Laki ng talaksan: $3<br />Uri ng MIME: $4',
+'fileduplicatesearch-result-1' => 'Walang katulad ang talaksan na "$1".',
+'fileduplicatesearch-result-n' => 'Ang talaksan na "$1" ay may {{PLURAL:$2|1 kapareho|$2 mga kapareho}}.',
+'fileduplicatesearch-noresults' => 'Walang natagpuang talaksan na may pangalang "$1".',
# Special:SpecialPages
'specialpages' => 'Mga natatanging pahina',
'specialpages-note' => '----
-* Karaniwang natatanging pahina.
-* <strong class="mw-specialpagerestricted">Mga pinaghihigpitang natatanging pahina.</strong>',
+* Pangkaraniwang natatanging mga pahina.
+* <strong class="mw-specialpagerestricted">Pinaghihigpitang natatanging mga pahina.</strong>
+* <span class="mw-specialpagecached">Nakakubli lamang na natatanging mga pahina.</span>',
'specialpages-group-maintenance' => 'Mga pagpapanatiling ulat',
'specialpages-group-other' => 'Iba pang natatanging mga pahina',
'specialpages-group-login' => 'Lumagda/tumala',
diff --git a/languages/messages/MessagesTo.php b/languages/messages/MessagesTo.php
index f853fb95..d738d77a 100644
--- a/languages/messages/MessagesTo.php
+++ b/languages/messages/MessagesTo.php
@@ -131,7 +131,6 @@ $messages = array(
'history' => 'HisitÅlia Ê»o e pÄ“sí',
'history_short' => 'HisitÅlia',
'updatedmarker' => 'Kuo fakafoʻoua talu ai mei heʻeku ʻaʻahi',
-'info_short' => 'Fakamatala',
'printableversion' => 'Paaki',
'permalink' => 'Fehokotaki taumaʻu',
'print' => 'Paaki',
@@ -292,7 +291,7 @@ Kuo fakatupu hoʻo tohi kau-ki-ai. ʻOua ʻe ngalo ke liliu hoʻo faʻiteliha {{
'loginsuccesstitle' => 'Kuo ola ʻa e kau-ki-ai',
'loginsuccess' => "'''ʻOku ke kau-ki-ai he taimí ni ki he {{SITENAME}} hangē \"\$1\".'''",
'nosuchuser' => 'ʻOku ʻikai ʻi ai ha ʻetita mo hono hingoa "$1". Sivi hoʻo sipela pe [[Special:UserLogin/signup|fakatupu haʻo kau-ki-ai foʻou]].',
-'nosuchusershort' => 'ʻOku ʻikai ʻi ai ha ʻetita mo hono hingoa "<nowiki>$1</nowiki>". Sivi hoʻo sipela.',
+'nosuchusershort' => 'ʻOku ʻikai ʻi ai ha ʻetita mo hono hingoa "$1". Sivi hoʻo sipela.',
'nouserspecified' => 'ʻOku pau te ke ʻoatu ha hingoa ʻo e ʻetita.',
'wrongpassword' => 'Ê»Oku Ê»ikai totonu Ê»a e leatapu, kÄtaki Ê»e toki feinga.',
'wrongpasswordempty' => 'NaÊ»e maha Ê»a e tapulea, kÄtaki Ê»e toki feinga.',
@@ -316,7 +315,7 @@ Kapau naʻe kole ia ʻe he tokotaha kehe, pea ʻosi hoʻo manatuʻi ʻo e leatap
'accountcreatedtext' => 'Kuo fakatupu ʻa e tohi kau-ki-ai maʻa $1.',
'loginlanguagelabel' => 'Lea: $1',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Ko e leatapu motuʻa:',
'newpassword' => 'Ko e leatapu foʻou:',
'retypenew' => 'Toe ʻai leatapu foʻou:',
@@ -332,7 +331,6 @@ Kapau naʻe kole ia ʻe he tokotaha kehe, pea ʻosi hoʻo manatuʻi ʻo e leatap
'extlink_tip' => 'Fehokotaki ki tuʻa (manatuʻi ko e fakapipikimuʻa — http://)',
'headline_sample' => 'Mataʻitohi tuʻumuʻa',
'headline_tip' => 'Tuʻumuʻa fakatuʻunga hono 2',
-'math_tip' => "Kupuʻilea fakamatematika ''(LaTex)''",
'nowiki_sample' => 'Hulumaki ʻa e ʻū mataʻitohi taʻengaohi ʻi heni',
'nowiki_tip' => "taʻetokaʻi ngaohi ''wiki''",
'sig_tip' => 'Ko e fakamoʻoniʻi ʻaʻau mo hono taimi',
@@ -460,7 +458,6 @@ Ko e ʻuhinga loka ko e $1 ia.",
'changepassword' => 'Liliu hoʻo leatapu',
'prefs-skin' => 'Kili',
'skin-preview' => 'Vakai pē',
-'prefs-math' => 'Matematika',
'datedefault' => 'ʻIkai ha faʻiteliha',
'prefs-datetime' => 'ʻAho mo e taimi',
'prefs-personal' => 'FÅtunga fakatafaÊ»aki',
@@ -769,11 +766,9 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlistanontext' => 'KÄtaki, Ê»e $1 kapau te ke fievakai pe fiefatu ha ngaahi meÊ»a Ê»i hoÊ»o hokohoko leÊ»o.',
'watchnologin' => 'Teʻeki kau ki ai',
'watchnologintext' => 'ʻOku pau te ke [[Special:UserLogin|kau-ki-ai]] kapau te ke fieliliu hoʻo hokohoko leʻo.',
-'addedwatch' => 'Kuo tÄnaki ki hoÊ»o hokohoko leÊ»o',
'addedwatchtext' => 'Ko e peesi "[[:$1]]" naÊ»e tÄnaki ia ki hoÊ»o [[Special:Watchlist|hokohoko leÊ»o]]. Ko e ngaahi liliu Ê»o e kahaÊ»u Ê»i he pÄ“sí ni mo hono peesi aleá, Ê»e Ê»oatu Ê»i heni mo Ê»asi mai Ê»i he hokohoko Ê»o e [[Special:RecentChanges|ngaahi toki liliu]], Ê»oku sinolahi ke fanÄfotu.
Kapau Ê»aho Ê»e taha, te ke fietoÊ»o Ê»a e pÄ“sí mei hoÊ»o hokohoko leÊ»o, lomiÊ»i "taÊ»eleÊ»o" Ê»i he pÄ tafaÊ»aki.',
-'removedwatch' => 'Kuo toʻo mei he hokohoko leʻo',
'removedwatchtext' => 'Kuo toʻo ʻa e peesi "[[:$1]]" mei hoʻo hokohoko leʻo.',
'watch' => 'Leʻo',
'watchthispage' => 'Leʻo he pēsí ni',
@@ -808,7 +803,7 @@ Kapau ʻaho ʻe taha, te ke fietoʻo ʻa e pēsí mei hoʻo hokohoko leʻo, lomi
'historywarning' => 'Tokanga: ko e peesi te ke fietÄmateÊ»i, Ê»oku Ê»i ai haÊ»ane histolia.',
'confirmdeletetext' => 'Te ke tÄmateÊ»i, Ê»ikai ala fÅ«lihi, Ê»a e peesi pe faitÄ mo hono hisitÅlia kÄtoa mei he tÄnekingaÊ»ilo. KÄtaki fakamoÊ»oniÊ»i Ê»oku sai ia, Ê»oku ke Ê»ilo Ê»a e fua, pea Ê»oku ke fai pehÄ“ ototaha ia mo e [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Ê»Osi ngÄue',
-'deletedtext' => 'Kuo tÄmateÊ»i "<nowiki>$1</nowiki>"
+'deletedtext' => 'Kuo tÄmateÊ»i "$1"
Vakai ki he $2 maÊ»a e fakamatala Ê»o e ngaahi toki tÄmateÊ»i.',
'deletedarticle' => 'ʻosi tamateʻi "[[$1]]"',
'dellogpage' => 'Tohinoa Ê»o e tÄmateÊ»i',
@@ -884,11 +879,9 @@ Vakai ki he [[Special:Log/delete|hokohoko tÄmateÊ»i]] ki he lekooti Ê»o e ngaah
# Block/unblock
'blockip' => 'Taʻofia ʻa e ʻetita',
'blockiptext' => 'NgÄueÊ»aki Ê»a e foomu Ê»i lalo Ê»e taÊ»ofia Ê»a e ngofua tohi Ê»o e tuÊ»asila IP pe hingoa Ê»etita Ê»e taha. Ê»Oku pau Ê»e fai pehÄ“ Ê»i he taÊ»ofi laukovi pÄ“, lototaha ia mo e [[{{MediaWiki:Policy-url}}|founga]]. Fakafonu Ê»i lalo Ê»a e Ê»uhinga totonu (fakafuaÊ»aki, lau ki he ngaahi peesi naÊ»e laukovi).',
-'ipaddress' => 'Tuʻasila IP',
'ipadressorusername' => 'Tuʻasila IP pe hingoa ʻo e ʻetita',
'ipbexpiry' => 'Mate',
'ipbreason' => 'ʻUhinga',
-'ipbanononly' => 'Taʻofia ʻa e kau ʻetita taʻehingoa pē',
'ipbcreateaccount' => 'Taʻofia ʻa e fakatupu ʻo ha tohi kau-ki-ai',
'ipbsubmit' => 'Taʻofia ʻa e ʻetitá ni',
'ipbother' => 'Fuoloa kehe',
@@ -902,7 +895,6 @@ Vakai ki he [[Special:Log/delete|hokohoko tÄmateÊ»i]] ki he lekooti Ê»o e ngaah
'ipusubmit' => 'Taʻetaʻofia ʻa e ʻetitá ni',
'unblocked' => 'Kuo taʻetaʻofia ʻa [[User:$1|$1]]',
'ipblocklist' => 'Hokohoko ʻo e ngaahi tuʻasila IP mo e hingoa ʻo e ʻetita kuo taʻofi',
-'blocklistline' => '$1, $2 taʻofi $3 ($4)',
'infiniteblock' => 'taʻengata',
'expiringblock' => 'ʻE mate ia $1 $2',
'anononlyblock' => 'taʻehingoa pē',
@@ -913,7 +905,7 @@ Vakai ki he [[Special:Log/delete|hokohoko tÄmateÊ»i]] ki he lekooti Ê»o e ngaah
'autoblocker' => 'Ê»Oku taÊ»ofi Ê»iate ia pe, koeÊ»uhi ko hoÊ»o tuaÊ»asila IP naÊ»e ngÄueÊ»aki ia Ê»e he Ê»etita "[[User:$1|$1]]". Ko e Ê»uhinga maÊ»a e taÊ»ofi Ê»o $1 ko "\'\'\'$2\'\'\'" ia.',
'blocklogpage' => 'Tohinoa ʻo e taʻofi',
'blocklogentry' => 'taʻofia [[$1]] mo ha fuoloa $2 $3',
-'blocklogtext' => 'Ko e tohinoa Ê»eni Ê»o e ngÄue Ê»o e ngaahi taÊ»ofi mo e taÊ»etaÊ»ofi Ê»o e kau Ê»etita. Ê»Oku Ê»ikai Ê»asi ha ngaahi tuÊ»asila IP Ê»oku taÊ»ofi ngaue Ê»ia te ia pÄ“. Vakai ki he [[Special:IPBlockList|hokohoko taÊ»ofi IP]] kapau te ke fiemaÊ»u Ê»a e hokohoko Ê»o e ngaahi taÊ»ofi taka kotoa.',
+'blocklogtext' => 'Ko e tohinoa Ê»eni Ê»o e ngÄue Ê»o e ngaahi taÊ»ofi mo e taÊ»etaÊ»ofi Ê»o e kau Ê»etita. Ê»Oku Ê»ikai Ê»asi ha ngaahi tuÊ»asila IP Ê»oku taÊ»ofi ngaue Ê»ia te ia pÄ“. Vakai ki he [[Special:BlockList|hokohoko taÊ»ofi IP]] kapau te ke fiemaÊ»u Ê»a e hokohoko Ê»o e ngaahi taÊ»ofi taka kotoa.',
'unblocklogentry' => 'taʻetaʻofia $1',
'range_block_disabled' => 'Ê»Oku fakataÊ»eÊ»aongaÊ»i Ê»a e fakatupu fakapule-fakafounga Ê»o ngaahi taÊ»ofi fakavÄ.',
'ipb_expiry_invalid' => 'ʻOku taʻeʻaongaʻi ʻa e taimi ki he mate.',
@@ -1040,22 +1032,6 @@ Pea hoko ai pÄ“ hoÊ»o lava tÄnaki ha Ê»uhinga Ê»i he fakanounou',
# Spam protection
'spamprotectionmatch' => 'Naʻe kamosi ʻemau meʻasivi tohila ʻe he ngaahi mataʻitohi koʻeni: $1',
-# Info page
-'infosubtitle' => 'Fakamatala ki he peesi',
-
-# Math options
-'mw_math_png' => 'Fai PNG taimi kotoa',
-'mw_math_simple' => 'Fai HTML kapau faingofua ʻaupito, pe toe PNG',
-'mw_math_html' => 'Fai HTML kapau malava, pe toe PNG',
-'mw_math_source' => "Fakatoe ʻi he ''TeX'' maʻa e ngaahi palausa tohi pē",
-'mw_math_modern' => 'ʻOku fakahinohino maʻa e palausa fakaonopooni.',
-'mw_math_mathml' => 'Fai MathML kapau malava (fakatotolo)',
-
-# Math errors
-'math_unknown_error' => 'hala taʻeʻiloa',
-'math_unknown_function' => 'lakanga taʻeʻiloa',
-'math_bad_output' => 'ʻOku ʻikai lava ʻo tohi pe fakatupu ʻa e takafi maʻa e fua matematika',
-
# Patrolling
'rcpatroldisabled' => 'ʻOku fakataʻeʻaʻongaʻi ʻa e leʻo ʻo e ngaahi toki liliu',
@@ -1067,11 +1043,10 @@ Pea hoko ai pÄ“ hoÊ»o lava tÄnaki ha Ê»uhinga Ê»i he fakanounou',
'nextdiff' => 'Faikehe hoko →',
# Media information
-'imagemaxsize' => 'Fakangatangata ngaahi faitÄ Ê»i he ʻū peesi fakamahino ki he:',
-'file-info' => 'Ko e faile hono lahi: $1, faʻahinga MIME: $2',
-'file-nohires' => '<small>Ê»Oku Ê»ikai Ê»i ai ha faitÄ auiiki.</small>',
-'show-big-image' => 'Ê»Asi Ê»a e faitÄ auiiki',
-'show-big-image-thumb' => '<small>Vakai pÄ“ Ê»i hono lahi: $1 x $2 tefitoÊ»ifaitÄ</small>',
+'imagemaxsize' => 'Fakangatangata ngaahi faitÄ Ê»i he ʻū peesi fakamahino ki he:',
+'file-info' => 'Ko e faile hono lahi: $1, faʻahinga MIME: $2',
+'file-nohires' => '<small>Ê»Oku Ê»ikai Ê»i ai ha faitÄ auiiki.</small>',
+'show-big-image' => 'Ê»Asi Ê»a e faitÄ auiiki',
# Special:NewFiles
'newimages' => 'FakaÊ»aliÊ»ali Ê»o e ngaahi faitÄ foÊ»ou',
@@ -1089,11 +1064,9 @@ Pea hoko ai pÄ“ hoÊ»o lava tÄnaki ha Ê»uhinga Ê»i he fakanounou',
# EXIF tags
'exif-xresolution' => 'Auiiki fakalava',
'exif-yresolution' => 'Auiiki tuʻutonu',
-'exif-resolutionunit' => 'ʻUniti auiiki ʻo e X mo e Y',
'exif-jpeginterchangeformatlength' => 'ʻŪ valu meʻaʻilo JPEG',
'exif-make' => 'Ko e tokotaha faÊ»u Ê»o e meÊ»afaitÄ',
'exif-artist' => 'Tokotaha faitÄ',
-'exif-makernote' => 'Tohi nounou ʻo e tokotaha faʻu',
'exif-usercomment' => 'Fakamatala ʻo e ʻetita',
'exif-brightnessvalue' => 'Ngingila',
'exif-lightsource' => 'Malama',
@@ -1196,13 +1169,11 @@ Pea hoko ai pÄ“ hoÊ»o lava tÄnaki ha Ê»uhinga Ê»i he fakanounou',
# External editor support
'edit-externally' => 'FatuÊ»i Ê»a e failé ni ngÄueÊ»aki mo e polokalama Ê»i tuÊ»a',
-'edit-externally-help' => 'Vakai ki he [http://www.mediawiki.org/wiki/Manual:External_editors fakahinohino ki he fokotuʻu] maʻa toe fakamatala.',
+'edit-externally-help' => 'Vakai ki he [//www.mediawiki.org/wiki/Manual:External_editors fakahinohino ki he fokotuʻu] maʻa toe fakamatala.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'kotoa',
-'imagelistall' => 'kotoa',
-'watchlistall2' => 'kÄtoa',
-'namespacesall' => 'vÄ kotoa',
+'watchlistall2' => 'kÄtoa',
+'namespacesall' => 'vÄ kotoa',
# E-mail address confirmation
'confirmemail' => 'Fakamoʻoniʻi ho tuʻasila tohila',
diff --git a/languages/messages/MessagesTp.php b/languages/messages/MessagesTp.php
deleted file mode 100644
index 5b435cc0..00000000
--- a/languages/messages/MessagesTp.php
+++ /dev/null
@@ -1,12 +0,0 @@
-<?php
-/** Toki Pona
- *
- * See MessagesQqq.php for message documentation incl. usage of parameters
- * To improve a translation please visit http://translatewiki.net
- *
- * @ingroup Language
- * @file
- * @comment not an official code. Falls back to 'tokipona'. Also see http://www.sil.org/iso639-3/cr_files/2007-011_tok.pdf
- */
-
-$fallback = 'tokipona';
diff --git a/languages/messages/MessagesTpi.php b/languages/messages/MessagesTpi.php
index 2b7f6326..8d63ad70 100644
--- a/languages/messages/MessagesTpi.php
+++ b/languages/messages/MessagesTpi.php
@@ -14,18 +14,18 @@
*/
$specialPageAliases = array(
- 'Userlogin' => array( 'Yusa login' ),
- 'Userlogout' => array( 'Yusa logaut' ),
+ 'Confirmemail' => array( 'Orait long imel' ),
+ 'Contributions' => array( 'Ol senis bilong yusa' ),
'CreateAccount' => array( 'Mekim nupela login' ),
+ 'Emailuser' => array( 'Imel yusa' ),
'Preferences' => array( 'Ol laik bilong mi' ),
- 'Watchlist' => array( 'Lukautbuk' ),
- 'Recentchanges' => array( 'Nupela senis' ),
- 'Upload' => array( 'Salim media fail' ),
'Randompage' => array( 'Soim wanpela pes' ),
+ 'Recentchanges' => array( 'Nupela senis' ),
'Specialpages' => array( 'Sipesol pes' ),
- 'Contributions' => array( 'Ol senis bilong yusa' ),
- 'Emailuser' => array( 'Imel yusa' ),
- 'Confirmemail' => array( 'Orait long imel' ),
+ 'Upload' => array( 'Salim media fail' ),
+ 'Userlogin' => array( 'Yusa login' ),
+ 'Userlogout' => array( 'Yusa logaut' ),
+ 'Watchlist' => array( 'Lukautbuk' ),
'Whatlinkshere' => array( 'Ol link ikam long hia' ),
);
@@ -170,7 +170,6 @@ $messages = array(
'searcharticle' => 'Go',
'history' => 'Ol senis long dispela pes',
'history_short' => 'Ol senis',
-'info_short' => 'Infomesen',
'print' => 'Prinim',
'edit' => 'Senisim',
'create' => 'Kirapim',
@@ -277,7 +276,6 @@ $messages = array(
# Edit page toolbar
'link_sample' => 'Link taitel',
'extlink_sample' => 'http://www.example.com link taitel',
-'math_tip' => 'Matematik formula (LaTeX)',
'media_tip' => 'Link bilong fail',
# Edit pages
@@ -379,7 +377,6 @@ Na tu yu tok tru nau olsem yu raitim dispela yu yet, o yu kisim long wanpela hap
'changepassword' => 'Senis paswot',
'prefs-skin' => 'Skin',
'skin-preview' => 'pes mi senisim, pastaim long raitim',
-'prefs-math' => 'Matematiks',
'datedefault' => 'Nogat laik',
'prefs-rc' => 'Nupela senis',
'prefs-watchlist' => 'Lukautbuk',
@@ -605,14 +602,12 @@ Also see [[Special:WantedCategories|wanted categories]].',
'nowatchlist' => 'Nogat wanpela samting istap long lukautbuk bilong yu.',
'watchlistanontext' => 'Yu mas $1 long lukim o senisim ol samting long lukautbuk bilong yu.',
'watchnologintext' => 'Yu mas [[Special:UserLogin|login]] long senisim lukautbuk bilong yu.',
-'addedwatch' => 'Igo insait long lukautbuk',
'addedwatchtext' => "Pes \"[[:\$1]]\" igo insait long [[Special:Watchlist|lukautbuk]] bilong yu nau.
Bai yu lukim ol nupela senis long dispela pes, na pes toktok bilong en, long lukautbuk,
na dispela pes bai kamap '''strongpela''' long [[Special:RecentChanges|pes bilong ol nupela senis]]
na olsem bai isi long lukim em.
Sapos yu laik rausim dispela pes long lukautbuk bilong yu bihain, paitim \"Pinis long lukautim\" taim yu lukim pes.",
-'removedwatch' => 'Raus pinis long lukautbuk',
'removedwatchtext' => 'Pes "[[:$1]]" i raus pinis long [[Special:Watchlist|lukautbuk bilong yu]].',
'watch' => 'Lukautim',
'watchthispage' => 'Lukautim dispela pes',
@@ -695,7 +690,6 @@ Sapos yu laik rausim dispela pes long lukautbuk bilong yu bihain, paitim \"Pinis
# Block/unblock
'blockip' => 'Pasim yusa (Block user)',
-'ipaddress' => 'IP adres:',
'ipboptions' => '2 awa:2 hours,1 de:1 day,3 de:3 days,1 wik:1 week,2 wik:2 weeks,1 mun:1 month,3 mun:3 months,6 mun:6 months,1 yia:1 year,oltaim:infinite',
'ipbotheroption' => 'narapela',
'ipblocklist' => 'Ol IP adres na yusanem i pas',
@@ -793,12 +787,10 @@ Yu inap lukim as tok bilong em',
'exif-meteringmode-255' => 'Narapela',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'olgeta',
-'imagelistall' => 'olgeta',
-'watchlistall2' => 'olgeta',
-'namespacesall' => 'ol',
-'monthsall' => 'olgeta',
-'limitall' => 'olgeta',
+'watchlistall2' => 'olgeta',
+'namespacesall' => 'ol',
+'monthsall' => 'olgeta',
+'limitall' => 'olgeta',
# Scary transclusion
'scarytranscludetoolong' => '[URL i longpela tumas]',
@@ -820,7 +812,7 @@ Yu inap lukim as tok bilong em',
'watchlistedit-noitems' => 'Nogat wanpela samting long lukautbuk bilong yu.',
'watchlistedit-normal-title' => 'Senisim lukautbuk',
'watchlistedit-normal-legend' => 'Rausim ol samting long lukautbuk',
-'watchlistedit-normal-explain' => 'Ananit yu lukim ol samting long lukautbuk. Long rausim wanpela samting, makim liklik boxis long sait bilong en, na paitim "Rausim ol samting". Na tu yu inap [[Special:Watchlist/raw|senisim lukautbuk long wanpela bokis]].',
+'watchlistedit-normal-explain' => 'Ananit yu lukim ol samting long lukautbuk. Long rausim wanpela samting, makim liklik boxis long sait bilong en, na paitim "Rausim ol samting". Na tu yu inap [[Special:EditWatchlist/raw|senisim lukautbuk long wanpela bokis]].',
'watchlistedit-normal-submit' => 'Rausim ol samting',
'watchlistedit-normal-done' => '{{PLURAL:$1|Wanpela|$1}} samting i raus pinis long lukautbuk bilong yu:',
'watchlistedit-raw-title' => 'Senisim lukautbuk long wanpela bokis',
@@ -828,7 +820,7 @@ Yu inap lukim as tok bilong em',
'watchlistedit-raw-explain' => 'Ananit yu lukim ol samting long lukautbuk bilong yu insait long wanpela bokis.
Yu inap putim sampela moa samting igo insait, o rausim sampela ol samting. Putim
wanpela samting i go long wanwan lain. Taim yu pinisim ol senis, paitim "Senisim lukautbuk".
- Na tu yu inap [[Special:Watchlist/edit|senisim lukautbuk long planti liklik bokis]].',
+ Na tu yu inap [[Special:EditWatchlist|senisim lukautbuk long planti liklik bokis]].',
'watchlistedit-raw-titles' => 'Ol samting:',
'watchlistedit-raw-submit' => 'Senisim lukautbuk',
'watchlistedit-raw-done' => 'Lukautbuk bilong yu i senis pinis.',
diff --git a/languages/messages/MessagesTr.php b/languages/messages/MessagesTr.php
index fc51fa8f..18a97087 100644
--- a/languages/messages/MessagesTr.php
+++ b/languages/messages/MessagesTr.php
@@ -7,6 +7,7 @@
* @ingroup Language
* @file
*
+ * @author 82-145
* @author Bekiroflaz
* @author Bombola
* @author Dbl2010
@@ -31,9 +32,11 @@
* @author Suelnur
* @author Szoszv
* @author Tarikozket
+ * @author Tarkovsky
* @author Urhixidur
* @author UÄŸur BaÅŸak
* @author Vito Genovese
+ * @author Vugar 1981
* @author לערי ריינה×רט
*/
@@ -64,99 +67,101 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'ÇiftYönlendirmeler' ),
+ 'Activeusers' => array( 'AktifKullanıcılar', 'EtkinKullanıcılar' ),
+ 'Allmessages' => array( 'Tümİletiler', 'TümMesajlar' ),
+ 'Allpages' => array( 'TümSayfalar' ),
+ 'Ancientpages' => array( 'EskiSayfalar' ),
+ 'Blankpage' => array( 'BoÅŸSayfa' ),
+ 'Block' => array( 'Engelle', 'IPEngelle' ),
+ 'Blockme' => array( 'BeniEngelle' ),
+ 'Booksources' => array( 'KitapKaynakları' ),
'BrokenRedirects' => array( 'BozukYönlendirmeler' ),
- 'Disambiguations' => array( 'AnlamAyrım', 'AnlamAyrımı' ),
- 'Userlogin' => array( 'KullanıcıGiriş' ),
- 'Userlogout' => array( 'KullanıcıÇıkış' ),
+ 'Categories' => array( 'Kategoriler', 'Ulamlar' ),
+ 'ChangePassword' => array( 'ŞifreDeğiştir', 'ParolaDeğiştir', 'ŞifreSıfırla', 'ParolaSıfırla' ),
+ 'ComparePages' => array( 'SayfaKarşılaştır' ),
+ 'Confirmemail' => array( 'E-postaDoÄŸrula' ),
+ 'Contributions' => array( 'Katkılar' ),
'CreateAccount' => array( 'HesapOluÅŸtur' ),
+ 'Deadendpages' => array( 'BağlantısızSayfalar' ),
+ 'DeletedContributions' => array( 'SilinenKatkılar' ),
+ 'Disambiguations' => array( 'AnlamAyrımı', 'AnlamAyrım' ),
+ 'DoubleRedirects' => array( 'ÇiftYönlendirmeler' ),
+ 'EditWatchlist' => array( 'İzlemeListesiDüzenle' ),
+ 'Emailuser' => array( 'E-postaGönder' ),
+ 'Export' => array( 'DışaAktar', 'DışarıAktar' ),
+ 'Fewestrevisions' => array( 'EnAzRevizyon' ),
+ 'FileDuplicateSearch' => array( 'KopyaDosyaArama', 'ÇiftDosyaArama' ),
+ 'Filepath' => array( 'DosyaYolu', 'DosyaKonumu' ),
+ 'Import' => array( 'İçeAktar', 'İçeriAktar' ),
+ 'Invalidateemail' => array( 'E-postaDoÄŸrulamaÄ°ptal' ),
+ 'BlockList' => array( 'EngelListesi', 'IPEngelListesi', 'EngelListele' ),
+ 'LinkSearch' => array( 'BağArama', 'BağlantıArama' ),
+ 'Listadmins' => array( 'HizmetliListele', 'YöneticiListele', 'HizmetliListesi', 'YöneticiListesi' ),
+ 'Listbots' => array( 'BotListele', 'BotListesi' ),
+ 'Listfiles' => array( 'DosyaListesi', 'DosyaListele', 'ResimListesi', 'ResimListele' ),
+ 'Listgrouprights' => array( 'GrupHaklarıListesi', 'GrupHaklarıListele', 'KullanıcıGrupHakları' ),
+ 'Listredirects' => array( 'YönlendirmeListesi', 'YönlendirmeListele' ),
+ 'Listusers' => array( 'KullanıcıListesi', 'KullanıcıListele' ),
+ 'Lockdb' => array( 'DBKilitle', 'VeritabanıKilitle' ),
+ 'Log' => array( 'Günlük', 'Günlükler', 'Kayıt', 'Kayıtlar' ),
+ 'Lonelypages' => array( 'YalnızSayfalar' ),
+ 'Longpages' => array( 'UzunSayfalar' ),
+ 'MergeHistory' => array( 'GeçmişBirleştir' ),
+ 'MIMEsearch' => array( 'MIMEArama' ),
+ 'Mostcategories' => array( 'EnFazlaKategorili' ),
+ 'Mostimages' => array( 'EnÇokBağlantıVerilenDosyalar' ),
+ 'Mostlinked' => array( 'EnÇokBağlantıVerilenSayfalar' ),
+ 'Mostlinkedcategories' => array( 'EnÇokBağlantıVerilenKategoriler' ),
+ 'Mostlinkedtemplates' => array( 'EnÇokBağlantıVerilenŞablonlar' ),
+ 'Mostrevisions' => array( 'EnÇokRevizyon' ),
+ 'Movepage' => array( 'SayfaTaşı' ),
+ 'Mycontributions' => array( 'Katkılarım' ),
+ 'Mypage' => array( 'BenimSayfam' ),
+ 'Mytalk' => array( 'MesajSayfam' ),
+ 'Myuploads' => array( 'Yüklemelerim' ),
+ 'Newimages' => array( 'YeniDosyalar', 'YeniResimler' ),
+ 'Newpages' => array( 'YeniSayfalar' ),
+ 'PasswordReset' => array( 'ParolaSıfırlama' ),
+ 'PermanentLink' => array( 'KalıcıBağ' ),
+ 'Popularpages' => array( 'PopülerSayfalar' ),
'Preferences' => array( 'Tercihler' ),
- 'Watchlist' => array( 'Ä°zlemeListesi' ),
+ 'Prefixindex' => array( 'ÖnekDizini' ),
+ 'Protectedpages' => array( 'KorunanSayfalar' ),
+ 'Protectedtitles' => array( 'KorunanBaşlıklar' ),
+ 'Randompage' => array( 'Rastgele', 'RastgeleSayfa' ),
+ 'Randomredirect' => array( 'RastgeleYönlendirme' ),
'Recentchanges' => array( 'SonDeÄŸiÅŸiklikler' ),
- 'Upload' => array( 'Yükle' ),
- 'Listfiles' => array( 'DosyaListesi', 'DosyaListele' ),
- 'Newimages' => array( 'YeniDosyalar' ),
- 'Listusers' => array( 'KullanıcıListesi' ),
- 'Listgrouprights' => array( 'GrupHaklarıListesi' ),
+ 'Recentchangeslinked' => array( 'Ä°lgiliDeÄŸiÅŸiklikler' ),
+ 'Revisiondelete' => array( 'RevizyonSil' ),
+ 'RevisionMove' => array( 'RevizyonTaşı' ),
+ 'Search' => array( 'Ara', 'Arama' ),
+ 'Shortpages' => array( 'KısaSayfalar' ),
+ 'Specialpages' => array( 'ÖzelSayfalar' ),
'Statistics' => array( 'Ä°statistikler' ),
- 'Randompage' => array( 'Rastgele', 'RastgeleSayfa' ),
- 'Lonelypages' => array( 'YalnızSayfalar' ),
- 'Uncategorizedpages' => array( 'KategorisizSayfalar' ),
+ 'Tags' => array( 'Etiketler' ),
+ 'Unblock' => array( 'EngeliKaldır', 'EngelKaldır' ),
'Uncategorizedcategories' => array( 'KategorisizKategoriler' ),
'Uncategorizedimages' => array( 'KategorisizDosyalar' ),
+ 'Uncategorizedpages' => array( 'KategorisizSayfalar' ),
'Uncategorizedtemplates' => array( 'KategorisizÅžablonlar' ),
+ 'Undelete' => array( 'GeriGetir' ),
+ 'Unlockdb' => array( 'DBKilidiAç', 'VeritabanıKilidiAç' ),
'Unusedcategories' => array( 'KullanılmayanKategoriler' ),
'Unusedimages' => array( 'KullanılmayanDosyalar' ),
- 'Wantedpages' => array( 'Ä°stenenSayfalar' ),
+ 'Unusedtemplates' => array( 'KullanılmayanŞablonlar' ),
+ 'Unwatchedpages' => array( 'Ä°zlenmeyenSayfalar' ),
+ 'Upload' => array( 'Yükle' ),
+ 'Userlogin' => array( 'KullanıcıOturumuAçma', 'KullanıcıGiriş' ),
+ 'Userlogout' => array( 'KullanıcıOturumuKapatma', 'KullanıcıÇıkış' ),
+ 'Userrights' => array( 'KullanıcıHakları' ),
+ 'Version' => array( 'Sürüm' ),
'Wantedcategories' => array( 'Ä°stenenKategoriler' ),
'Wantedfiles' => array( 'Ä°stenenDosyalar' ),
+ 'Wantedpages' => array( 'Ä°stenenSayfalar' ),
'Wantedtemplates' => array( 'Ä°stenenÅžablonlar' ),
- 'Mostlinked' => array( 'EnÇokBağlantıVerilenSayfalar' ),
- 'Mostlinkedcategories' => array( 'EnÇokBağlantıVerilenKategoriler' ),
- 'Mostlinkedtemplates' => array( 'EnÇokBağlantıVerilenŞablonlar' ),
- 'Mostimages' => array( 'EnÇokBağlantıVerilenDosyalar' ),
- 'Mostcategories' => array( 'EnFazlaKategorili' ),
- 'Mostrevisions' => array( 'EnÇokSürüm' ),
- 'Fewestrevisions' => array( 'EnAzSürüm' ),
- 'Shortpages' => array( 'KısaSayfalar' ),
- 'Longpages' => array( 'UzunSayfalar' ),
- 'Newpages' => array( 'YeniSayfalar' ),
- 'Ancientpages' => array( 'EskiSayfalar' ),
- 'Deadendpages' => array( 'BağlantısızSayfalar' ),
- 'Protectedpages' => array( 'KorunanSayfalar' ),
- 'Protectedtitles' => array( 'KorunanBaşlıklar' ),
- 'Allpages' => array( 'TümSayfalar' ),
- 'Prefixindex' => array( 'ÖnekDizini' ),
- 'Ipblocklist' => array( 'IPEngelListesi' ),
- 'Unblock' => array( 'EngeliKaldır' ),
- 'Specialpages' => array( 'ÖzelSayfalar' ),
- 'Contributions' => array( 'Katkılar' ),
- 'Emailuser' => array( 'E-postaGönder' ),
- 'Confirmemail' => array( 'E-postaDoÄŸrula' ),
+ 'Watchlist' => array( 'Ä°zlemeListesi' ),
'Whatlinkshere' => array( 'SayfayaBağlantılar' ),
- 'Recentchangeslinked' => array( 'Ä°lgiliDeÄŸiÅŸiklikler' ),
- 'Movepage' => array( 'SayfaTaşı' ),
- 'Blockme' => array( 'BeniEngelle' ),
- 'Booksources' => array( 'KitapKaynakları' ),
- 'Categories' => array( 'Kategoriler' ),
- 'Export' => array( 'DışaAktar' ),
- 'Version' => array( 'Sürüm' ),
- 'Allmessages' => array( 'TümMesajlar' ),
- 'Log' => array( 'Kayıt', 'Kayıtlar' ),
- 'Blockip' => array( 'IPEngelle' ),
- 'Undelete' => array( 'Gerigetir' ),
- 'Import' => array( 'İçeAktar' ),
- 'Lockdb' => array( 'DBKilitle' ),
- 'Unlockdb' => array( 'DBKilitAç' ),
- 'Userrights' => array( 'KullanıcıHakları' ),
- 'MIMEsearch' => array( 'MIMEArama' ),
- 'FileDuplicateSearch' => array( 'KopyaDosyaAraması', 'ÇiftDosyaAraması' ),
- 'Unwatchedpages' => array( 'Ä°zlenmeyenSayfalar' ),
- 'Listredirects' => array( 'YönlendirmeListesi' ),
- 'Revisiondelete' => array( 'SürümSil' ),
- 'Unusedtemplates' => array( 'KullanılmayanŞablonlar' ),
- 'Randomredirect' => array( 'RastgeleYönlendirme' ),
- 'Mypage' => array( 'BenimSayfam' ),
- 'Mytalk' => array( 'MesajSayfam' ),
- 'Mycontributions' => array( 'Katkılarım' ),
- 'Myuploads' => array( 'Yüklemelerim' ),
- 'Listadmins' => array( 'HizmetliListesi' ),
- 'Listbots' => array( 'BotListesi' ),
- 'Popularpages' => array( 'PopülerSayfalar' ),
- 'Search' => array( 'Ara' ),
- 'Resetpass' => array( 'ŞifreDeğiştir', 'ParolaDeğiştir', 'ŞifreSıfırla', 'ParolaSıfırla' ),
'Withoutinterwiki' => array( 'Ä°ntervikisiz' ),
- 'MergeHistory' => array( 'SürümBirleştir' ),
- 'Filepath' => array( 'DosyaKonumu' ),
- 'Invalidateemail' => array( 'E-postaDoÄŸrulamaÄ°ptal' ),
- 'Blankpage' => array( 'BoÅŸSayfa' ),
- 'LinkSearch' => array( 'DışBağlantıAra' ),
- 'DeletedContributions' => array( 'SilinenKatkılar' ),
- 'Tags' => array( 'Etiketler' ),
- 'Activeusers' => array( 'AktifKullanıcılar' ),
- 'ComparePages' => array( 'SayfaKarşılaştır' ),
- 'Badtitle' => array( 'KötüBaşlık' ),
- 'DisableAccount' => array( 'HesapKapat' ),
);
$magicWords = array(
@@ -165,7 +170,7 @@ $magicWords = array(
'nogallery' => array( '0', '__GALERÄ°YOK__', '__NOGALLERY__' ),
'forcetoc' => array( '0', '__İÇİNDEKİLERZORUNLU__', '__FORCETOC__' ),
'toc' => array( '0', '__İÇİNDEKİLER__', '__TOC__' ),
- 'noeditsection' => array( '0', '__DEĞİŞTİRYOK__', '__NOEDITSECTION__' ),
+ 'noeditsection' => array( '0', '__DEĞİŞTİRYOK__', '__DÜZENLEMEYOK__', '__NOEDITSECTION__' ),
'noheader' => array( '0', '__BAÅžLIKYOK__', '__NOHEADER__' ),
'currentmonth' => array( '1', 'MEVCUTAY', 'MEVCUTAY2', 'GÃœNCELAY', 'GÃœNCELAY2', 'CURRENTMONTH', 'CURRENTMONTH2' ),
'currentmonth1' => array( '1', 'MEVCUTAY1', 'GÃœNCELAY1', 'CURRENTMONTH1' ),
@@ -331,8 +336,8 @@ $messages = array(
'tog-shownumberswatching' => 'İzleyen kullanıcı sayısını göster',
'tog-oldsig' => 'Mevcut imza:',
'tog-fancysig' => 'İmzaya vikimetin muamelesi yap (otomatik bir bağlantı olmadan)',
-'tog-externaleditor' => 'Harici düzenleyici kullan (deneyimli kullanıcılar içindir; bilgisayarınızda özel ayarlar gerektirir. [detaylı bilgi için : http://www.mediawiki.org/wiki/Manual:External_editors])',
-'tog-externaldiff' => 'Harici karşılaştırıcı kullan (deneyimli kullanıcılar içindir; bilgisayarınızda özel ayarlar gerektirir. [detaylı bilgi için : http://www.mediawiki.org/wiki/Manual:External_editors])',
+'tog-externaleditor' => 'Harici düzenleyici kullan (deneyimli kullanıcılar içindir; bilgisayarınızda özel ayarlar gerektirir. [detaylı bilgi için : //www.mediawiki.org/wiki/Manual:External_editors])',
+'tog-externaldiff' => 'Harici karşılaştırıcı kullan (deneyimli kullanıcılar içindir; bilgisayarınızda özel ayarlar gerektirir. [detaylı bilgi için : //www.mediawiki.org/wiki/Manual:External_editors])',
'tog-showjumplinks' => '"Git" bağlantısı etkinleştir',
'tog-uselivepreview' => 'Canlı önizleme özelliğini kullan (JavaScript) (daha deneme aşamasında)',
'tog-forceeditsummary' => 'Özeti boş bıraktığımda beni uyar',
@@ -429,14 +434,7 @@ $messages = array(
'listingcontinuesabbrev' => '(devam)',
'index-category' => 'Dizinli sayfalar',
'noindex-category' => 'Dizinli olmayan sayfalar',
-
-'mainpagetext' => "'''MediaWiki başarı ile kuruldu.'''",
-'mainpagedocfooter' => 'Viki yazılımının kullanımı hakkında bilgi almak için [http://meta.wikimedia.org/wiki/Help:Contents kullanıcı rehberine] bakınız.
-
-== Yeni BaÅŸlayanlar ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Yapılandırma ayarlarının listesi]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki SSS]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki e-posta listesi]',
+'broken-file-category' => 'Bozuk dosya bağlantıları içeren sayfalar',
'about' => 'Hakkında',
'article' => 'Madde',
@@ -488,10 +486,10 @@ $messages = array(
'history' => 'Sayfa geçmişi',
'history_short' => 'Geçmiş',
'updatedmarker' => 'son ziyaretimden sonra güncellenmiş',
-'info_short' => 'Bilgi',
'printableversion' => 'Yazdırılabilir sürüm',
'permalink' => 'Kalıcı bağlantı',
'print' => 'Bastır',
+'view' => 'Görüntüle',
'edit' => 'Düzenle',
'create' => 'OluÅŸtur',
'editthispage' => 'Bu sayfayı değiştir',
@@ -499,6 +497,7 @@ $messages = array(
'delete' => 'Sil',
'deletethispage' => 'Bu sayfayı sil',
'undelete_short' => '$1 deÄŸiÅŸikliÄŸi geri getir',
+'viewdeleted_short' => '{{PLURAL:$1|bir silinmiş değişiklik|$1 silinmiş değişiklikleri}} görüntüle.',
'protect' => 'Korumaya al',
'protect_change' => 'deÄŸiÅŸtir',
'protectthispage' => 'Sayfayı koruma altına al',
@@ -583,6 +582,8 @@ $1',
'toc' => 'Konu başlıkları',
'showtoc' => 'göster',
'hidetoc' => 'gizle',
+'collapsible-collapse' => 'Daralt',
+'collapsible-expand' => 'GeniÅŸlet',
'thisisdeleted' => '$1 görmek veya geri getirmek istermisiniz?',
'viewdeleted' => '$1 gör?',
'restorelink' => '{{PLURAL:$1|bir silinmiÅŸ deÄŸiÅŸikliÄŸi|$1 silinmiÅŸ deÄŸiÅŸikliÄŸi}}',
@@ -596,6 +597,8 @@ $1',
'feed-atom' => 'Atom',
'feed-rss' => 'RSS',
'red-link-title' => '$1 (sayfa mevcut deÄŸil)',
+'sort-descending' => 'Azalan sıralama',
+'sort-ascending' => 'Artan sıralama',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Madde',
@@ -676,12 +679,13 @@ Lütfen birkaç dakika sonra yeniden deneyin.',
'protectedpagetext' => 'Bu sayfa değişiklik yapılmaması için koruma altına alınmıştır.',
'viewsourcetext' => 'Bu sayfanın kaynağını görebilir ve kopyalayabilirsiniz:',
'protectedinterface' => 'Bu sayfa yazılım için arayüz metni sağlamaktadır ve kötüye kullanımı önlemek için kilitlenmiştir.',
-'editinginterface' => "'''UYARI:''' Yazılım için arayüz sağlamakta kullanılan bir sayfayı değiştirmektesiniz. Bu sayfadaki değişiklikler kullanıcı arayüzünü diğer kullanıcılar için de değiştirecektir. Çeviriler için, lütfen [http://translatewiki.net/wiki/Main_Page?setlang=tr translatewiki.net]'yi kullanarak MediaWiki yerelleştirme projesini dikkate alınız.",
+'editinginterface' => "'''UYARI:''' Yazılım için arayüz sağlamakta kullanılan bir sayfayı değiştirmektesiniz. Bu sayfadaki değişiklikler kullanıcı arayüzünü diğer kullanıcılar için de değiştirecektir. Çeviriler için, lütfen [//translatewiki.net/wiki/Main_Page?setlang=tr translatewiki.net]'yi kullanarak MediaWiki yerelleştirme projesini dikkate alınız.",
'sqlhidden' => '(SQL gizli sorgu)',
'cascadeprotected' => 'Bu sayfa değişiklik yapılması engellenmiştir, çünkü "kademeli" seçeneği aktif hale getirilerek koruma altına alınan {{PLURAL:$1|sayfada|sayfada}} kullanılmaktadır:
$2',
'namespaceprotected' => "'''$1''' alandındaki sayfaları düzenlemeye izniniz bulunmamaktadır.",
-'customcssjsprotected' => 'Bu sayfayı değiştirmeye yetkiniz bulunmamaktadır, çünkü bu sayfa başka bir kullanıcının kişisel ayarlarını içermektedir.',
+'customcssprotected' => 'Bu sayfayı değiştirmeye yetkiniz bulunmamaktadır, çünkü bu sayfa başka bir kullanıcının kişisel ayarlarını içermektedir.',
+'customjsprotected' => 'Bu Java Script sayfasını değiştirmeye yetkiniz bulunmamaktadır, çünkü bu sayfa başka bir kullanıcının kişisel ayarlarını içermektedir.',
'ns-specialprotected' => '{{ns:special}} alanadı içindeki sayfalar değiştirilemez.',
'titleprotected' => "[[User:$1|$1]] tarafından oluşturulması engellenmesi için bu sayfa koruma altına alınmıştır.
Verilen sebep: ''$2''.",
@@ -720,6 +724,7 @@ Hesabınız açıldı.
'createaccount' => 'Hesap oluÅŸtur',
'gotaccount' => "Çoktan kayıt oldunuz mu? '''$1'''.",
'gotaccountlink' => 'Oturum açın',
+'userlogin-resetlink' => 'GiriÅŸ bilgileriniz mi unuttunuz?',
'createaccountmail' => 'e-posta ile',
'createaccountreason' => 'Sebep:',
'badretype' => 'GirdiÄŸiniz ÅŸifreler birbirleriyle uyuÅŸmuyor.',
@@ -732,13 +737,15 @@ Oturum açmak için {{SITENAME}} çerezleri kullanır.
Çerez kullanımı devredışı.
Lütfen çerez kullanımını açınız ve yeni kullanıcı adınız ve şifrenizle oturum açınız.',
'nocookieslogin' => '{{SITENAME}} sitesinde oturum açabilmek için çerezlerinizin açık olması gerekiyor. Sizin çerezleriniz kapalı. Lütfen açınız ve bir daha deneyiniz.',
+'nocookiesfornew' => 'Kullanıcı hesabı oluşturulamadı, sorunun kaynağını da tespit edemedik.
+Çerezlerin açık olduğundan emin olun ve bu sayfayı yeniden yükleyip tekrar deneyin.',
'noname' => 'Geçerli bir kullanıcı adı girmediniz.',
'loginsuccesstitle' => 'Oturum açıldı',
'loginsuccess' => '{{SITENAME}} sitesinde "$1" kullanıcı adıyla oturum açmış bulunmaktasınız.',
'nosuchuser' => '"$1" adında bir kullanıcı bulunmamaktadır.
Kullanıcı adları büyük-küçük harf duyarlıdır.
Yazılışı kontrol edin veya [[Special:UserLogin/signup|yeni bir hesap açın]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" adında bir kullanıcı bulunmamaktadır. Yazılışı kontrol edin.',
+'nosuchusershort' => '"$1" adında bir kullanıcı bulunmamaktadır. Yazılışı kontrol edin.',
'nouserspecified' => 'Bir kullanıcı adı belirtmek zorundasınız.',
'login-userblocked' => 'Bu kullanıcı engellenmiş. Giriş yapmaya izin verilmiyor.',
'wrongpassword' => 'Parolayı yanlış girdiniz. Lütfen tekrar deneyiniz.',
@@ -780,13 +787,14 @@ Eğer kullanıcı hesabını yanlışlıkla oluşturmuş iseniz, bu mesajı yoks
'usernamehasherror' => 'Kullanıcı adı karma karakterler içeremez',
'login-throttled' => 'Yakın zamanda çok fazla oturum açma denemesinde bulundunuz.
Lütfen tekrar denemeden önce bekleyin.',
+'login-abort-generic' => 'Girişiniz başarısız - iptal edilmiş',
'loginlanguagelabel' => 'Dil: $1',
'suspicious-userlogout' => 'Çıkış isteğiniz reddedildi çünkü bozuk bir tarayıcı ya da önbellekli vekil tarafından gönerilmiş gibi görünüyor.',
# E-mail sending
'php-mail-error-unknown' => "PHP's mail() fonksiyonunda bilinmeyen hata",
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Parolayı değiştir',
'resetpass_announce' => 'Size gönderilen muvakkat bir parola ile oturum açtınız.
Girişi bitirmek için, burada yeni bir parola yazın:',
@@ -806,6 +814,27 @@ Girişi bitirmek için, burada yeni bir parola yazın:',
Şifrenizi zaten başarıyla değiştirdiniz ya da yeni bir geçici şifre istediniz.',
'resetpass-temp-password' => 'Geçici parola:',
+# Special:PasswordReset
+'passwordreset' => 'Parola sıfırlama',
+'passwordreset-text' => 'Hesap bilgilerinizin e-posta ile hatırlatılması için bu formu doldurunuz.',
+'passwordreset-legend' => 'Şifreyi sıfırla',
+'passwordreset-disabled' => 'Parola sıfırlamaları bu wiki üzerinde devre dışı bırakıldı.',
+'passwordreset-pretext' => '{{PLURAL:$1||Aşağıdaki verilerden birini girin}}',
+'passwordreset-username' => 'Kullanıcı adı:',
+'passwordreset-domain' => 'Domain:',
+'passwordreset-email' => 'E-posta adresi:',
+'passwordreset-emailtitle' => '{{SITENAME}} hesap detayları',
+'passwordreset-emailtext-ip' => 'Birisi, (muhtemelen siz, $1 IP adresinden) {{SITENAME}} ($4) için hesap bilgilerinizin
+hatırlatılmasını istedi. Aşağıdaki kullanıcı {{PLURAL:$3|hesabı|hesapları}} bu e-posta adresiyle ilişkili:
+
+$2
+
+{{PLURAL:$3|Bu geçici şifre|Bu geçici şifreler}} {{PLURAL:$5|bir gün|$5 gün}} geçerlidir.
+Bu geçici parola ile giriş yapın ve yeni bir şifre seçin. Şifre değişimini siz istemediyseniz veya şifrenizi hatırladıysanız ve artık şifrenizi değiştirmek istemiyorsanız; bu iletiyi önemsemeyerek eski şifrenizi kullanmaya devam edebilirsiniz.',
+'passwordreset-emailelement' => 'Kullanıcı adı: $1
+Geçici şifre: $2',
+'passwordreset-emailsent' => 'Hatırlatma e-postası gönderildi.',
+
# Edit page toolbar
'bold_sample' => 'Kalın yazı',
'bold_tip' => 'Kalın yazı',
@@ -817,8 +846,6 @@ Girişi bitirmek için, burada yeni bir parola yazın:',
'extlink_tip' => 'Dış bağlantı (Adresin önüne http:// koymayı unutmayın)',
'headline_sample' => 'Başlık metni',
'headline_tip' => '2. seviye başlık',
-'math_sample' => 'Matematiksel-ifadeyi-girin',
-'math_tip' => 'Matematik formülü (LaTeX formatında)',
'nowiki_sample' => 'Biçimlendirilmeyecek metni buraya girin',
'nowiki_tip' => 'viki formatlamasını devre dışı bırak',
'image_sample' => 'Örnek.jpg',
@@ -903,7 +930,7 @@ ya da bu sayfayı [{{fullurl:{{FULLPAGENAME}}|action=edit}} değiştirebilirsini
'noarticletext-nopermission' => 'Bu sayfa ÅŸu anda boÅŸtur.
Bu başlığı [[Special:Search/{{PAGENAME}}|diğer sayfalarda arayabilir]]
ya da <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ilgili kayıtları tarayabilirsiniz].</span>',
-'userpage-userdoesnotexist' => '"$1" kullanıcı hesabı kayıtlı değil. Bu sayfayı oluşturmak/değiştirmek istiyorsanız lütfen kontrol edin.',
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" kullanıcı hesabı kayıtlı değil. Bu sayfayı oluşturmak/değiştirmek istiyorsanız lütfen kontrol edin.',
'userpage-userdoesnotexist-view' => '"$1" kullanıcı hesabı kayıtlı değil.',
'blocked-notice-logextract' => 'Bu kullanıcı şuanda engellenmiş.
Son engelleme günlüğü girdisi referans için aşağıda sağlanmıştır:',
@@ -930,6 +957,7 @@ Son engelleme günlüğü girdisi referans için aşağıda sağlanmıştır:',
'token_suffix_mismatch' => "'''Değişikliğiniz geri çevrildi çünkü alıcınız düzenleme kutucuğundaki noktalama işaretlerini bozdu.
Değişikliğiniz, sayfa metninde bozulmayı önlemek için geri çevrildi.
Eğer sorunlu bir web-tabanlı anonim proksi servisi kullanıyorsanız bu olay bazen gerçekleşebilir.'''",
+'edit_form_incomplete' => "'''Değişiklik formu için bazı sunuculara erişilemedi; yaptığınız değişiklikler bozulmamıştır, gözden geçirip tekrar deneyiniz.'''",
'editing' => '"$1" sayfasını değiştirmektesiniz',
'editingsection' => '"$1" sayfasında bölüm değiştirmektesiniz',
'editingcomment' => '$1 değiştiriliyor (yeni bölüm)',
@@ -1161,7 +1189,7 @@ Lütfen günlükleri kontrol edin.',
# Suppression log
'suppressionlog' => 'Gizleme kayıtları',
'suppressionlogtext' => 'Aşağıdaki, hizmetlilerden gizlenen içerik içeren silinmelerin ve engellemelerin listesidir.
-Şu anda işlevsel olan yasak ve engellemelerin listesi için [[Special:IPBlockList|IP engelleme listesine]] bakın.',
+Şu anda işlevsel olan yasak ve engellemelerin listesi için [[Special:BlockList|IP engelleme listesine]] bakın.',
# History merging
'mergehistory' => 'Sayfa geçmişlerini takas et.',
@@ -1271,12 +1299,13 @@ Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tar
'searchdisabled' => '{{SITENAME}} sitesinde arama yapma geçici olarak durdurulmuştur. Bu arada Google kullanarak {{SITENAME}} içinde arama yapabilirsiniz. Arama sitelerinde dizinlerin biraz eski kalmış olabileceğini göz önünde bulundurunuz.',
# Quickbar
-'qbsettings' => 'Hızlı erişim sütun ayarları',
-'qbsettings-none' => 'Hiçbiri',
-'qbsettings-fixedleft' => 'Sola sabitlendi',
-'qbsettings-fixedright' => 'SaÄŸa sabitlendi',
-'qbsettings-floatingleft' => 'Sola yaslanıyor',
-'qbsettings-floatingright' => 'Sağa yaslanıyor',
+'qbsettings' => 'Hızlı erişim sütun ayarları',
+'qbsettings-none' => 'Hiçbiri',
+'qbsettings-fixedleft' => 'Sola sabitlendi',
+'qbsettings-fixedright' => 'SaÄŸa sabitlendi',
+'qbsettings-floatingleft' => 'Sola yaslanıyor',
+'qbsettings-floatingright' => 'Sağa yaslanıyor',
+'qbsettings-directionality' => 'Sabit, dilinizin komut dosyasının yönüne bağlı',
# Preferences page
'preferences' => 'Tercihler',
@@ -1287,9 +1316,10 @@ Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tar
'changepassword' => 'Parolayı değiştir',
'prefs-skin' => 'Görünüm',
'skin-preview' => 'Önizleme',
-'prefs-math' => 'Matematiksel simgeler',
'datedefault' => 'Tercih yok',
+'prefs-beta' => 'Beta özellikleri',
'prefs-datetime' => 'Tarih ve saat',
+'prefs-labs' => 'Lab özellikleri',
'prefs-personal' => 'Kullanıcı bilgileri',
'prefs-rc' => 'Son deÄŸiÅŸiklikler',
'prefs-watchlist' => 'Ä°zleme listesi',
@@ -1311,8 +1341,6 @@ Aramanızın başına '''all:''' önekini ekleyerek tüm içeriği aramayı (tar
'columns' => 'Sütun',
'searchresultshead' => 'Arama',
'resultsperpage' => 'Sayfada gösterilecek bulunan madde sayısı',
-'contextlines' => 'Bulunan madde için ayrılan satır sayısı',
-'contextchars' => 'Satırdaki karakter sayısı',
'stub-threshold' => '<a href="#" class="stub">Taslak bağlantısı</a> formatı için baraj (bayt):',
'stub-threshold-disabled' => 'Devre dışı',
'recentchangesdays' => 'Son değişikliklerde gösterilecek günler:',
@@ -1325,7 +1353,7 @@ Kullanabileceğiniz rastgele-üretilmiş bir değer: $1',
'savedprefs' => 'Ayarlar kaydedildi.',
'timezonelegend' => 'Zaman dilimi:',
'localtime' => 'Yerel saat:',
-'timezoneuseserverdefault' => 'Sunucu varsayılanını kullan',
+'timezoneuseserverdefault' => 'Viki varsayılanını kullanın ($1)',
'timezoneuseoffset' => 'DiÄŸer (ofset belirtin)',
'timezoneoffset' => 'Ofset¹:',
'servertime' => 'Sunucu saati:',
@@ -1372,8 +1400,9 @@ $1 {{PLURAL:$1|karakterin|karakterin}} altında olmalı.',
'prefs-help-gender' => 'İsteğe bağlı: yazılım tarafından doğru cinsiyet adreslemesi için kullanılır. Bu bilgi umumi olacaktır.',
'email' => 'E-posta',
'prefs-help-realname' => '* Gerçek isim (isteğe bağlı): eğer gerçek isminizi vermeyi seçerseniz, çalışmanızı size atfederken kullanılacaktır.',
-'prefs-help-email' => 'E-posta adresi isteğe bağlıdır; ancak eğer parolanızı unutursanız e-posta adresinize yeni parola gönderilmesine olanak sağlar.
-Aynı zamanda diğer kullanıcıların kullanıcı ve kullanıcı mesaj sayfalarınız üzerinden kimliğinizi bilmeksizin sizinle iletişim kurmalarına da olanak sağlar.',
+'prefs-help-email' => 'E-posta adresi isteğe bağlıdır; ancak eğer parolanızı unutursanız e-posta adresinize yeni parola gönderilmesine olanak sağlar.',
+'prefs-help-email-others' => 'Ayrıca kullanıcı sayfanızdaki bir bağlantı yoluyla diğer kullanıcıların size e-posta atmasına izin vermeyi seçebilirsiniz.
+Diğer kullanıcılar sizinle bu yolla iletişime geçtiğinde e-posta adresiniz açıklanmaz.',
'prefs-help-email-required' => 'E-posta adresi gerekmektedir.',
'prefs-info' => 'Temel bilgiler',
'prefs-i18n' => 'Uluslararasılaştırma',
@@ -1498,15 +1527,15 @@ Aynı zamanda diğer kullanıcıların kullanıcı ve kullanıcı mesaj sayfalar
'right-userrights' => 'Tüm kullanıcı haklarını değiştirmek',
'right-userrights-interwiki' => 'Diğer vikilerdeki kullanıcıların kullanıcı haklarını değiştir',
'right-siteadmin' => 'Veritabanını kilitle ve kilidi aç',
-'right-reset-passwords' => 'Diğer kullanıcıların parolalarını sıfırla',
'right-override-export-depth' => "Sayfaları, derinlik 5'e kadar bağlantılı sayfalarla beraber, dışa aktar",
'right-sendemail' => 'Diğer kullanıcılara e-posta gönder',
# 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',
-'rightsnone' => '(hiçbiri)',
+'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',
@@ -1627,11 +1656,11 @@ Bir sayfaya dosya koymak için bağlantınızda aşağıdaki formlardan birini k
'minlength1' => 'Dosya adı en az bir harften oluşmalıdır.',
'illegalfilename' => '"$1" dosya adı bazı kullanılmayan karekterler içermektedir. Lütfen, yeni bir dosya adıyla tekrar deneyin.',
'badfilename' => 'Görüntü dosyasının ismi "$1" olarak değiştirildi.',
-'filetype-mime-mismatch' => 'Dosya uzantısı MIME türü ile eşleşmiyor.',
+'filetype-mime-mismatch' => '".$1" dosya uzantısının, ($2) dosyasının MIME türüyle uyuşmadığı tespit edildi.',
'filetype-badmime' => '"$1" MIME tipindeki dosyaların yüklenmesine izin verilmez.',
'filetype-bad-ie-mime' => 'Bu dosya yüklenemez; çünkü Internet Explorer bunu, izin verilmeyen ve potansiyel zararlı dosya türü olan "$1" olarak tespit etmektedir.',
'filetype-unwanted-type' => "'''\".\$1\"''' istenmeyen bir dosya türüdür. Önerilen {{PLURAL:\$3|dosya türü|dosya türleri}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' izin verilen bir dosya türü değil. İzin verilen {{PLURAL:\$3|dosya türü|dosya türleri}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|izin verilen bir dosya türü değil|izin verilen bir dosya türü değil}}. İzin verilen {{PLURAL:$3|dosya türü|dosya türleri}} $2.',
'filetype-missing' => 'Dosyanın hiçbir uzantısı yok (".jpg" gibi).',
'empty-file' => 'Gönderdiğiniz dosya boştu.',
'file-too-large' => 'Gönderdiğiniz dosya çok büyük.',
@@ -1648,6 +1677,7 @@ Bir sayfaya dosya koymak için bağlantınızda aşağıdaki formlardan birini k
bu dosyanın boyutu $2.',
'largefileserver' => 'Bu dosyanın uzunluğu sunucuda izin verilenden daha büyüktür.',
'emptyfile' => 'Yüklediğiniz dosya boş görünüyor. Bunun sebebi dosya adındaki bir yazım hatası olabilir. Lütfen dosyayı gerçekten yüklemek isteyip istemediğinizden emin olun.',
+'windows-nonascii-filename' => 'Bu wiki dosya isimlerinde özel karakter kullanımını desteklemiyor',
'fileexists' => "Bu isimde bir dosya mevcut.
Eğer değiştirmekten emin değilseniz ilk önce '''<tt>[[:$1]]</tt>''' dosyasına bir gözatın.
[[$1|thumb]]",
@@ -1683,6 +1713,8 @@ Dosyanızı yinede yüklemek istiyorsanız, lütfen geri gidip yeni bir isim kul
'php-uploaddisabledtext' => 'PHP dosyası yüklemeleri devre dışıdır. Lütfen file_uploads ayarını kontrol edin.',
'uploadscripted' => 'Bu dosya bir internet tarayıcısı tarafından hatalı çevrilebilecek bir HTML veya script kodu içermektedir.',
'uploadvirus' => 'Bu dosya virüslüdür! Detayları: $1',
+'uploadjava' => 'Dosya, bir Java .classdosyası içeren bir ZIP dosyasıdır.
+Java dosyalarının yüklenmesine izin verilmemektedir, zira güvenlik kısıtlamalarının atlanmasına neden olabilmektedirler.',
'upload-source' => 'Kaynak dosyası',
'sourcefilename' => 'Yüklemek istediğiniz dosya:',
'sourceurl' => 'Kaynak URL:',
@@ -1692,10 +1724,6 @@ Dosyanızı yinede yüklemek istiyorsanız, lütfen geri gidip yeni bir isim kul
'upload-options' => 'Yükleme seçenekleri',
'watchthisupload' => 'Bu dosyayı izle',
'filewasdeleted' => 'Bu isimde bir dosya yakın zamanda yüklendi ve ardından hizmetliler tarafından silindi. Dosyayı yüklemeden önce, $1 sayfasına bir göz atınız.',
-'upload-wasdeleted' => "'''Uyarı: Daha önce silinmiş olan bir dosyayı yüklüyorsunuz.'''
-
-Dosyanın yüklenmesinin uygun olup olmadığını dikkate almalısınız.
-Bu dosyanın silme kayıtları kolaylık olması için burada sunulmuştur:",
'filename-bad-prefix' => "Yüklemekte olduğunuz dosyanın adı, genel olarak dijital kameralar tarafından otomatik olarak ekelenen ve açıklayıcı olmayan '''\"\$1\"''' ile başlamaktadır.
Lütfen dosyanız için daha açıklayıcı bir isim seçin.",
'filename-prefix-blacklist' => ' #<!-- leave this line exactly as it is --> <pre>
@@ -1734,6 +1762,23 @@ Eğer sorun tekrarlanırsa, bir [[Special:ListUsers/sysop|hizmetli]] ile temasa
'upload-unknown-size' => 'Bilinmeyen boyut',
'upload-http-error' => 'Bir HTTP hatası oluştu: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Dosya ZIP denetimleri için açılırken bir hata ile karşılaşıldı.',
+'zip-wrong-format' => 'Belirtilen dosya ZIP dosyası değil.',
+'zip-bad' => 'Dosya bozuk ya da başka bir nedenden dolayı okunamayan bir ZIP dosyası.
+Güvenlik denetimi uygun şekilde gerçekleştirilemiyor.',
+'zip-unsupported' => 'Dosya, MediaWiki tarafından desteklenmeyen ZIP özelliklerine sahip bir ZIP dosyası.
+Güvenlik denetimi uygun bir şekilde gerçekleştirilemiyor.',
+
+# Special:UploadStash
+'uploadstash' => 'Geçici düzenlenebilir yükleme yap',
+'uploadstash-summary' => "Bu sayfa yüklenmiş(veya yüklenmekte olan) ama henüz viki'de yayınlanmamış dosyalara erişmeyi sağlar. Bu dosyalar sadece yükleyeni tarafından görülebilir.",
+'uploadstash-clear' => 'Geçici düzenlenebilir dosyaları sil',
+'uploadstash-nofiles' => 'Hiç geçici düzenlenebilir dosyanız yok.',
+'uploadstash-badtoken' => 'İşlemin gerçekleştirilmesi başarısız oldu, muhtemelen düzenleme yetkileriniz zaman aşımına uğradı. Yeniden deneyin.',
+'uploadstash-errclear' => 'Dosyaların silinmesi başarısız oldu.',
+'uploadstash-refresh' => 'Dosya listelerini yenile',
+
# img_auth script messages
'img-auth-accessdenied' => 'EriÅŸim engellendi',
'img-auth-nopathinfo' => 'Eksik PATH_INFO.
@@ -1817,7 +1862,7 @@ Sıradaki liste sadece bu dosyaya bağlantı veren {{PLURAL:$1|ilk dosyayı|ilk
[[Special:WhatLinksHere/$2|Tam bir liste]] mevcuttur.",
'nolinkstoimage' => 'Bu dosyaya bağlantı veren bir sayfa yok.',
'morelinkstoimage' => 'Bu dosyaya [[Special:WhatLinksHere/$1|daha fazla bağlantıları]] gör.',
-'redirectstofile' => 'Şu {{PLURAL:$1|dosya|$1 dosya}}, bu dosyaya yönlendiriyor:',
+'linkstoimage-redirect' => '$1 (dosya yönlendirme) $2',
'duplicatesoffile' => 'Şu {{PLURAL:$1|dosya|$1 dosya}}, bu dosyanın kopyası ([[Special:FileDuplicateSearch/$2|daha fazla ayrıntı]]):',
'sharedupload' => 'Bu dosya $1 deposundan ve diğer projelerde kullanılıyor olabilir.',
'sharedupload-desc-there' => 'Bu dosya $1 deposundan ve diğer projeler tarafından kullanılıyor olabilir. Daha fazla bilgi için lütfen [$2 dosya açıklama sayfasına] bakın.',
@@ -1908,12 +1953,13 @@ Aşağıda [$2 dosya açıklama sayfasındaki] açıklama gösteriliyor.',
'disambiguationspage' => 'Template:Anlam ayrımı',
'disambiguations-text' => 'İlk satırda yer alan sayfalar bir anlam ayrım sayfasına iç bağlantı olduğunu gösterir. İkinci sırada yer alan sayfalar anlam ayrım sayfalarını gösterir. <br />Burada [[MediaWiki:Disambiguationspage]] tüm anlam ayrım şablonlarına bağlantılar verilmesi gerekmektedir.',
-'doubleredirects' => 'Çift yönlendirmeler',
-'doubleredirectstext' => 'Bu sayfa diğer yönlendirme sayfalarına yönlendirme yapan sayfaları listeler.
+'doubleredirects' => 'Çift yönlendirmeler',
+'doubleredirectstext' => 'Bu sayfa diğer yönlendirme sayfalarına yönlendirme yapan sayfaları listeler.
Her satırın içerdiği bağlantılar; birinci ve ikinci yönlendirme, ayrıca ikinci yönlendirmenin hedefi, ki bu genelde birinci yönlendirmenin göstermesi gereken "gerçek" hedef sayfasıdır.
<del>Üstü çizili</del> girdiler çözülmüştür.',
-'double-redirect-fixed-move' => '[[$1]] taşındı, artık [[$2]] sayfasına yönlendiriyor',
-'double-redirect-fixer' => 'Yönlendirme tamircisi',
+'double-redirect-fixed-move' => '[[$1]] taşındı, artık [[$2]] sayfasına yönlendiriyor',
+'double-redirect-fixed-maintenance' => '[[$1]] - [[$2]] yapılan çift yönlendirme düzeltiliyor.',
+'double-redirect-fixer' => 'Yönlendirme tamircisi',
'brokenredirects' => 'Boş yönlendirmeler',
'brokenredirectstext' => 'Aşağıdaki yönlendirmeler varolmayan sayfalara bağlantı veriyor:',
@@ -1990,6 +2036,7 @@ Lütfen unutmayın ki, diÄŸer web siteleri bir dosyaya doÄŸrudan bir URL ile baÄ
'pager-newer-n' => '{{PLURAL:$1|1 daha yeni|$1 daha yeni}}',
'pager-older-n' => '{{PLURAL:$1|1 daha eski|$1 daha eski}}',
'suppress' => 'Gözetim',
+'querypage-disabled' => 'Bu özel sayfa, performansa dayalı nedenlerle devre dışı bırakılır.',
# Book sources
'booksources' => 'Kaynak kitaplar',
@@ -2106,6 +2153,10 @@ Bireysel haklarla ilgili [[{{MediaWiki:Listgrouprights-helppage}}|daha fazla bil
'noemailtext' => 'Bu kullanıcı geçerli bir e-posta adresi belirtmemiş.',
'nowikiemailtitle' => 'E-postalara izin verilmiyor',
'nowikiemailtext' => 'Bu kullanıcı, diğer kullanıcılardan e-posta almamayı tercih etti.',
+'emailnotarget' => 'Alıcı için varolmayan veya geçersiz kullanıcı adı.',
+'emailtarget' => 'Alıcının kullanıcı adını giriniz',
+'emailusername' => 'Kullanıcı Adı:',
+'emailusernamesubmit' => 'Gönder',
'email-legend' => 'Diğer {{SITENAME}} kullanıcısına e-posta gönder',
'emailfrom' => 'Kimden:',
'emailto' => 'Kime:',
@@ -2130,7 +2181,7 @@ Bireysel haklarla ilgili [[{{MediaWiki:Listgrouprights-helppage}}|daha fazla bil
'watchlistanontext' => 'Lütfen izleme listenizdeki maddeleri görmek ya da değiştirmek için $1.',
'watchnologin' => 'Oturum açık değil.',
'watchnologintext' => 'İzleme listenizi değiştirebilmek için [[Special:UserLogin|oturum açmalısınız]].',
-'addedwatch' => 'Ä°zleme listesine kaydedildi.',
+'addwatch' => 'Ä°zleme listesine ekle',
'addedwatchtext' => '"<nowiki>$1</nowiki>" adlı sayfa [[Special:Watchlist|izleme listenize]] kaydedildi.
Gelecekte, bu sayfaya ve ilgili tartışma sayfasına yapılacak değişiklikler burada listelenecektir.
@@ -2138,7 +2189,7 @@ Gelecekte, bu sayfaya ve ilgili tartışma sayfasına yapılacak değişiklikler
Kolayca seçilebilmeleri için de [[Special:RecentChanges|son değişiklikler listesi]] başlığı altında koyu harflerle listeleneceklerdir.
Sayfayı izleme listenizden çıkarmak istediğinizde "sayfayı izlemeyi durdur" bağlantısına tıklayabilirsiniz.',
-'removedwatch' => 'Ä°zleme listenizden silindi',
+'removewatch' => 'İzleme listesinden kaldır',
'removedwatchtext' => '"[[:$1]]" sayfası [[Special:Watchlist|izleme listenizden]] silinmiştir.',
'watch' => 'Ä°zle',
'watchthispage' => 'Sayfayı izle',
@@ -2159,8 +2210,9 @@ Sayfayı izleme listenizden çıkarmak istediğinizde "sayfayı izlemeyi durdur"
'watchlist-options' => 'İzleme listesi seçenekleri',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Ä°zleniyor...',
-'unwatching' => 'Ä°zlenmiyor...',
+'watching' => 'Ä°zleniyor...',
+'unwatching' => 'Ä°zlenmiyor...',
+'watcherrortext' => 'İzleme listesi ayarlarınızı "$1" için değiştirirken bir hata oluştu.',
'enotif_mailer' => '{{SITENAME}} Bildirim Postası',
'enotif_reset' => 'Tüm sayfaları ziyaret edilmiş olarak işaretle',
@@ -2190,13 +2242,13 @@ Bahsi geçen sayfayı ziyaret edinceye kadar sayfayla ilgili başka değişiklik
--
İzleme listesi ayarlarınızı değiştirmek için:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Sayfayı izleme listenizden silmek için:
$UNWATCHURL
Geri bildirim ve daha fazla yardım için:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Sayfayı sil',
@@ -2212,7 +2264,7 @@ Geri bildirim ve daha fazla yardım için:
Bu işlemden kaynaklı doğabilecek sonuçların farkında iseniz ve işlemin [[{{MediaWiki:Policy-url}}|Silme kurallarına]] uygun olduğuna eminseniz, işlemi onaylayın.',
'actioncomplete' => 'İşlem tamamlandı',
'actionfailed' => 'İşlem başarısız oldu',
-'deletedtext' => '"<nowiki>$1</nowiki>" silindi.
+'deletedtext' => '"$1" silindi.
Yakın zamanda silinenleri görmek için: $2.',
'deletedarticle' => '"[[$1]]" silindi',
'suppressedarticle' => '"[[$1]]" bastırıldı',
@@ -2272,7 +2324,7 @@ Lütfen "geri" gidin ve geldiğiniz sayfayı yeniden yükleyin, sonra tekrar den
'protect_expiry_invalid' => 'Geçersiz bitiş tarihi.',
'protect_expiry_old' => 'Geçmişteki son kullanma zamanı.',
'protect-unchain-permissions' => 'İleriki koruma seçeneklerinin kilidini kaldır',
-'protect-text' => "'''<nowiki>$1</nowiki>''' sayfasının koruma durumunu buradan görebilir ve değiştirebilirsiniz.",
+'protect-text' => "'''$1''' sayfasının koruma durumunu buradan görebilir ve değiştirebilirsiniz.",
'protect-locked-blocked' => "EngellenmiÅŸ iken koruma seviyelerini deÄŸiÅŸtiremezsiniz.
'''$1''' sayfasının şu anki ayarları:",
'protect-locked-dblock' => "Aktif veritabanı kilidinden dolayı koruma seviyeleri değiştirilemez.
@@ -2370,9 +2422,10 @@ $1',
'undelete-show-file-submit' => 'Evet',
# Namespace form on various pages
-'namespace' => 'Ad alanı:',
-'invert' => 'Seçili haricindekileri göster',
-'blanknamespace' => '(Ana)',
+'namespace' => 'Ad alanı:',
+'invert' => 'Seçili haricindekileri göster',
+'namespace_association' => 'İlişkili ad alanı',
+'blanknamespace' => '(Ana)',
# Contributions
'contributions' => 'Kullanıcının katkıları',
@@ -2421,11 +2474,13 @@ Son engelleme günlüğü girdisi kaynak amacıyla aşağıda verilmiştir:',
'whatlinkshere-filters' => 'Süzgeçler',
# Block/unblock
+'autoblockid' => 'Otomatik engelleme #$1',
+'block' => 'Kullanıcıyı engelle',
+'unblock' => 'Kullanıcının engelini kaldır',
'blockip' => 'Kullanıcıyı engelle',
'blockip-title' => 'Kullanıcıyı engelle',
'blockip-legend' => 'Kullanıcıyı engelle',
'blockiptext' => "Aşağıdaki formu kullanarak belli bir IP'nin veya kayıtlı kullanıcının değişiklik yapmasını engelleyebilirsiniz. Bu sadece vandalizmi engellemek için ve [[{{MediaWiki:Policy-url}}|kurallara]] uygun olarak yapılmalı. Aşağıya mutlaka engelleme ile ilgili bir açıklama yazınız. (örnek: -Şu- sayfalarda vandalizm yapmıştır).",
-'ipaddress' => 'IP Adresi',
'ipadressorusername' => 'IP adresi veya kullanıcı adı',
'ipbexpiry' => 'Bitiş süresi',
'ipbreason' => 'Neden:',
@@ -2438,7 +2493,7 @@ Son engelleme günlüğü girdisi kaynak amacıyla aşağıda verilmiştir:',
** Tehditvari davranış/Taciz
** Birden fazla hesabı kötüye kullanmak
** Kabul edilemez kullanıcı adı',
-'ipbanononly' => 'Sadece anonim kullanıcıları engelle',
+'ipb-hardblock' => 'Bu IP adresindeki oturum açmış kullanıcıların değişiklik yapmasını önle',
'ipbcreateaccount' => 'Hesap oluşturulmasına engel ol',
'ipbemailban' => 'Kullanıcının e-posta göndermesine engel ol',
'ipbenableautoblock' => 'Bu kullanıcı tarafından kullanılan son IP adresini ve değişiklik yapmaya çalıştığı sonraki IP adreslerini otomatik olarak engelle',
@@ -2449,12 +2504,15 @@ Son engelleme günlüğü girdisi kaynak amacıyla aşağıda verilmiştir:',
'ipbotherreason' => 'BaÅŸka/ek sebepler:',
'ipbhidename' => 'Kullanıcı adını katkılarda ve listelerde gizle',
'ipbwatchuser' => 'Bu kullanıcının kullanıcı ve tartışma sayfalarını izle',
-'ipballowusertalk' => 'Bu kullanıcının engelliyken kendi tartışma sayfasını değiştirebilmesine izin ver',
+'ipb-disableusertalk' => 'Bu kullanıcının engelliyken kendi mesaj sayfasında değişiklik yapmasını önle',
'ipb-change-block' => 'Bu ayarlarla kullanıcıyı yeniden engelle',
+'ipb-confirm' => 'Engeli onayla',
'badipaddress' => 'Geçersiz IP adresi',
'blockipsuccesssub' => 'IP adresi engelleme işlemi başarılı oldu',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] engellendi.
<br />Engellemeleri gözden geçirmek için [[Special:IPBlockList|IP adresi engellenenler]] listesine bakınız.',
+'ipb-blockingself' => 'Kendinizi engellemek üzeresiniz! Bunu yapmak istediğinizden emin misiniz?',
+'ipb-confirmhideuser' => '"Kullanıcıyı gizle" seçiliyken bir kullanıcı engellemek üzeresiniz. Bu, kullanıcının adını tüm listeler ile günlük girişlerinde bastıracaktır. Bunu yapmak istediğinizden emin misiniz?',
'ipb-edit-dropdown' => 'Engelleme nedenleri düzenle',
'ipb-unblock-addr' => '$1 için engellemeyi kaldır',
'ipb-unblock' => 'Engellemeyi kaldır',
@@ -2464,17 +2522,23 @@ Son engelleme günlüğü girdisi kaynak amacıyla aşağıda verilmiştir:',
'unblockiptext' => 'Daha önceden engellenmiş bir IP adresine ya da kullanıcı adına yazma erişimini geri vermek için aşağıdaki formu kullanın.',
'ipusubmit' => 'Bu engellemeyi kaldır',
'unblocked' => '[[User:$1|$1]] - engelleme kaldırıldı',
+'unblocked-range' => '$1 engeli kaldırıldı',
'unblocked-id' => '$1 engeli çıkarıldı',
+'blocklist' => 'Engellenmiş kullanıcılar',
'ipblocklist' => 'Engellenmiş kullanıcılar',
'ipblocklist-legend' => 'Engellenen kullanıcı ara',
-'ipblocklist-username' => 'Kullanıcı adı veya IP adresi:',
-'ipblocklist-sh-userblocks' => 'Hesap engellemelerini $1',
-'ipblocklist-sh-tempblocks' => 'Geçici engellemeleri $1',
-'ipblocklist-sh-addressblocks' => 'Tek IP engellemelerini $1',
+'blocklist-userblocks' => 'Hesap engellemelerini gizle',
+'blocklist-tempblocks' => 'Geçici engellemeleri gizle',
+'blocklist-addressblocks' => 'Tek IP engellemelerini gizle',
+'blocklist-timestamp' => 'Tarih damgası',
+'blocklist-target' => 'Hedef',
+'blocklist-expiry' => 'BitiÅŸ tarihi',
+'blocklist-by' => 'Engeli koyan hizmetli',
+'blocklist-params' => 'Engel parametreleri',
+'blocklist-reason' => 'Gerekçe',
'ipblocklist-submit' => 'Ara',
'ipblocklist-localblock' => 'Yerel engelleme',
'ipblocklist-otherblocks' => 'DiÄŸer {{PLURAL:$1|engelleme|engellemeler}}',
-'blocklistline' => '$1, $2 engellendi: $3 ($4)',
'infiniteblock' => 'Süresiz',
'expiringblock' => '$1 $2 tarihinde doluyor',
'anononlyblock' => 'sadece anonim',
@@ -2496,7 +2560,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:IPBlockList|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|IP 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',
@@ -2510,9 +2574,9 @@ Gizleme günlüğü referans için aşağıda sağlanmıştır:',
'ipb_expiry_temp' => 'Gizli kullanıcı adı engellemeleri kalıcı olmalı.',
'ipb_hide_invalid' => 'Kullanıcı hesabı gizlenemiyor; çok fazla değişikliği olabilir.',
'ipb_already_blocked' => '"$1" zaten engellenmiÅŸ',
-'ipb-needreblock' => '== Zaten engellenmiÅŸ ==
-$1 zaten engellenmiş. Ayarları değiştirmek istiyor musunuz?',
+'ipb-needreblock' => '$1 zaten engellenmiş. Ayarları değiştirmek istiyor musunuz?',
'ipb-otherblocks-header' => 'DiÄŸer {{PLURAL:$1|engelleme|engellemeler}}',
+'unblock-hideuser' => 'Kullanıcı adı gizlenmiş olduğu için bu kullanıcının engelini kaldıramazsınız.',
'ipb_cant_unblock' => 'Hata: Engelleme IDsi $1 bulunamadı.
Engelleme kaldırılmış olabilir.',
'ipb_blocked_as_range' => 'Hata: $1 IP adresi doğrudan engellenmemiş ve engelleme kaldırılamaz.
@@ -2671,7 +2735,7 @@ Sonuncu durumda, bir link de kullanabilirsiniz, ör: "[[{{MediaWiki:Mainpage}}]]
'allmessagesdefault' => 'Varsayılan mesaj metni',
'allmessagescurrent' => 'Kullanımdaki metin',
'allmessagestext' => 'Bu liste MediaWiki ad alanında mevcut olan sistem mesajlarının listesidir.
-Genel MediaWiki yerelleştirmesine katkıda bulunmak isterseniz, lütfen [http://www.mediawiki.org/wiki/Localisation MediaWiki Yerelleştirmesi] ve [http://translatewiki.net translatewiki.net] sayfalarını ziyaret edin.',
+Genel MediaWiki yerelleştirmesine katkıda bulunmak isterseniz, lütfen [//www.mediawiki.org/wiki/Localisation MediaWiki Yerelleştirmesi] ve [//translatewiki.net translatewiki.net] sayfalarını ziyaret edin.',
'allmessagesnotsupportedDB' => "'''\$wgUseDatabaseMessages''' kapalı olduğu için '''{{ns:special}}:Allmessages''' kullanıma açık değil.",
'allmessages-filter-legend' => 'Filtre',
'allmessages-filter' => 'Özelleştirme durumuna göre filtrele:',
@@ -2819,9 +2883,7 @@ Geçici dosya kayıp.',
'common.js' => '/* Buraya konulacak JavaScript kodu sitedeki her kullanıcı için her sayfa yüklendiğinde çalışacaktır */',
# Metadata
-'nodublincore' => 'Dublin Core RDF üstverisi bu sunucu için devre dışı bırakıldı.',
-'nocreativecommons' => 'Creative Commons RDF üstverisi bu sunucu için devre dışı bırakıldı.',
-'notacceptable' => 'Bu viki sunucusu istemcinizin okuyabileceği formatta bir veri sağlayamıyor.',
+'notacceptable' => 'Bu viki sunucusu istemcinizin okuyabileceği formatta bir veri sağlayamıyor.',
# Attribution
'anonymous' => '{{SITENAME}} sitesinin anonim {{PLURAL:$1|kullanıcısı|kullanıcıları}}',
@@ -2844,12 +2906,16 @@ Geçici dosya kayıp.',
'spam_blanking' => 'Tüm revizyonlar $1 sayfasına bağlantı içeriyor, boşaltılıyor',
# Info page
-'infosubtitle' => 'Sayfa için bilgi',
-'numedits' => 'Değişiklik sayısı (sayfa): $1',
-'numtalkedits' => 'Değişiklik sayısı (tartışma sayfası): $1',
-'numwatchers' => 'izleyici sayısı: $1',
-'numauthors' => 'Farklı yazar sayısı (sayfa): $1',
-'numtalkauthors' => 'Farklı yazar sayısı (tartışma sayfası): $1',
+'pageinfo-title' => 'Bilgi için "$1"',
+'pageinfo-header-edits' => 'DeÄŸiÅŸiklikler',
+'pageinfo-header-watchlist' => 'Ä°zleme listesi',
+'pageinfo-header-views' => 'Görüntüle',
+'pageinfo-subjectpage' => 'Sayfa',
+'pageinfo-talkpage' => 'Tartışma sayfası',
+'pageinfo-watchers' => 'İzleyen sayısı',
+'pageinfo-edits' => 'Değişiklik sayısı',
+'pageinfo-views' => 'Görüntülenme sayısı',
+'pageinfo-viewsperedit' => 'Değişiklik başına görüntüleme',
# Skin names
'skinname-standard' => 'Klasik',
@@ -2858,26 +2924,6 @@ Geçici dosya kayıp.',
'skinname-simple' => 'Basit',
'skinname-modern' => 'Modern',
-# Math options
-'mw_math_png' => 'Daima PNG resim formatına çevir',
-'mw_math_simple' => 'Çok basitse HTML, değilse PNG',
-'mw_math_html' => 'Mümkünse HTML, değilse PNG',
-'mw_math_source' => 'Değiştirmeden TeX olarak bırak (metin tabanlı tarayıcılar için)',
-'mw_math_modern' => 'Modern tarayıcılar için tavsiye edilen',
-'mw_math_mathml' => 'Mümkünse MathML (daha deneme aşamasında)',
-
-# Math errors
-'math_failure' => 'Ayrıştırılamadı',
-'math_unknown_error' => 'bilinmeyen hata',
-'math_unknown_function' => 'bilinmeyen fonksiyon',
-'math_lexing_error' => 'lexing hatası',
-'math_syntax_error' => 'sözdizim hatası',
-'math_image_error' => 'PNG çevirisi başarısız; latex, dvips ve gs programlarının doğru yüklendiğine emin olun ve çeviri işlemini başlatın.',
-'math_bad_tmpdir' => 'Math geçici dizinine yazılamıyor ya da oluşturulamıyor',
-'math_bad_output' => 'Math çıktı dizinine yazılamıyor ya da oluşturulamıyor',
-'math_notexvc' => "texvc çalıştırılabiliri kayıp;
-ayarlamak için math/README'ye bakın.",
-
# Patrolling
'markaspatrolleddiff' => 'Kontrol edilmiÅŸ olarak iÅŸaretle',
'markaspatrolledtext' => 'Kontrol edilmiÅŸ olarak iÅŸaretle',
@@ -2913,22 +2959,25 @@ $1',
'nextdiff' => 'Sonraki değişiklik →',
# Media information
-'mediawarning' => "'''Uyarı''': Bu dosya türü kötü niyetli kodlar içerebilir.
+'mediawarning' => "'''Uyarı''': Bu dosya türü kötü niyetli kodlar içerebilir.
Bunu çalıştırarak, sisteminiz tehlikeye atılabilir.",
-'imagemaxsize' => "Resim boyutu sınırı:<br />''(dosya açıklama sayfaları için)''",
-'thumbsize' => 'Küçük boyut:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|sayfa|sayfa}}',
-'file-info' => 'dosya boyutu: $1, MIME tipi: $2',
-'file-info-size' => '$1 × $2 piksel, dosya boyutu: $3, MIME tipi: $4',
-'file-nohires' => '<small>Daha yüksek çözünürlük yok.</small>',
-'svg-long-desc' => 'SVG dosyası, sözde $1 × $2 piksel, dosya boyutu: $3',
-'show-big-image' => 'Tam çözünürlük',
-'show-big-image-thumb' => '<small>Ön izleme boyutu: $1 × $2 piksel</small>',
-'file-info-gif-looped' => 'döngüye girdi',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|kare|kare}}',
-'file-info-png-looped' => 'döngüye girdi',
-'file-info-png-repeat' => '$1 {{PLURAL:$1|defa|defa}} oynatıldı',
-'file-info-png-frames' => '$1 {{PLURAL:$1|frame|frames}}',
+'imagemaxsize' => "Resim boyutu sınırı:<br />''(dosya açıklama sayfaları için)''",
+'thumbsize' => 'Küçük boyut:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|sayfa|sayfa}}',
+'file-info' => 'dosya boyutu: $1, MIME tipi: $2',
+'file-info-size' => '$1 × $2 piksel, dosya boyutu: $3, MIME tipi: $4',
+'file-info-size-pages' => '$1 × $2 piksel, dosya boyutu: $3, MIME tipi: $4, $5 {{PLURAL:$5|sayfa|sayfa}}',
+'file-nohires' => '<small>Daha yüksek çözünürlük yok.</small>',
+'svg-long-desc' => 'SVG dosyası, sözde $1 × $2 piksel, dosya boyutu: $3',
+'show-big-image' => 'Tam çözünürlük',
+'show-big-image-preview' => '<small>Ön izleme boyutu: $1.</small>',
+'show-big-image-other' => '<small>Diğer çözünürlükleri: $1.</small>',
+'show-big-image-size' => '$1 × $2 piksel',
+'file-info-gif-looped' => 'döngüye girdi',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|kare|kare}}',
+'file-info-png-looped' => 'döngüye girdi',
+'file-info-png-repeat' => '$1 {{PLURAL:$1|defa|defa}} oynatıldı',
+'file-info-png-frames' => '$1 {{PLURAL:$1|frame|frames}}',
# Special:NewFiles
'newimages' => 'Yeni dosya galerisi',
@@ -2963,15 +3012,21 @@ Takip eden bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya, sa
'metadata-help' => 'Bu dosyada, muhtemelen fotoğraf makinası ya da tarayıcı tarafından eklenmiş ek bilgiler mevcuttur. Eğer dosyada sonradan değişiklik yapıldıysa, bazı bilgiler yeni değişikliğe göre eski kalmış olabilir.',
'metadata-expand' => 'Ayrıntıları göster',
'metadata-collapse' => 'Ayrıntıları gösterme',
-'metadata-fields' => 'Bu sayfada listelenen EXIF metadata alanları resim görüntü sayfalarında metadata tablosu çöktüğünde kullanılır. Diğerleri varsayılan olarak gizlenecektir.
-
+'metadata-fields' => 'Bu sayfada listelenen EXIF metadata alanları resim görüntü sayfalarında metadata tablosu gizlendiğinde kullanılır.
+Diğerleri varsayılan olarak gizlenecektir.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'GeniÅŸlik',
@@ -2986,13 +3041,11 @@ Takip eden bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya, sa
'exif-ycbcrpositioning' => 'Y ve C yerleÅŸtirme',
'exif-xresolution' => 'Yatay çözünürlük',
'exif-yresolution' => 'Dikey çözünürlük',
-'exif-resolutionunit' => 'X ve Y çözümleme birimi',
'exif-stripoffsets' => 'Resim veri konumu',
'exif-rowsperstrip' => 'Number of rows per strip',
'exif-stripbytecounts' => 'Bytes per compressed strip',
'exif-jpeginterchangeformat' => 'Offset to JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Bytes of JPEG data',
-'exif-transferfunction' => 'Transfer iÅŸlemi',
'exif-whitepoint' => 'Beyaz nokta kromatiÄŸi',
'exif-primarychromaticities' => 'Chromaticities of primarities',
'exif-ycbcrcoefficients' => 'Renk aralığı dönüştürme matris katsayısı',
@@ -3011,7 +3064,6 @@ Takip eden bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya, sa
'exif-compressedbitsperpixel' => 'Resim sıkıştırma biçimi',
'exif-pixelydimension' => 'Resim geniÅŸliÄŸi',
'exif-pixelxdimension' => 'Resim yüksekliği',
-'exif-makernote' => 'Yapımcı notları',
'exif-usercomment' => 'Kullanıcı yorumu',
'exif-relatedsoundfile' => 'İlişkin ses dosyası',
'exif-datetimeoriginal' => 'Orjinal yaratma zamanı',
@@ -3026,7 +3078,6 @@ Takip eden bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya, sa
'exif-exposureprogram' => 'Poz programı',
'exif-spectralsensitivity' => 'Spektral duyarlılık',
'exif-isospeedratings' => 'ISO hız derecesi',
-'exif-oecf' => 'Optoelectronic conversion factor',
'exif-shutterspeedvalue' => 'APEX deklanşör hızı',
'exif-aperturevalue' => 'APEX açıklığı',
'exif-brightnessvalue' => 'APEX parlaklığı',
@@ -3040,7 +3091,6 @@ Takip eden bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya, sa
'exif-focallength-format' => '$1 mm',
'exif-subjectarea' => 'Özne alanı',
'exif-flashenergy' => 'Flaş düzeyi',
-'exif-spatialfrequencyresponse' => 'Spatial frequency response',
'exif-focalplanexresolution' => 'Odaksal düzey X çözünürlüğü',
'exif-focalplaneyresolution' => 'Odaksal düzey Y çözünürlüğü',
'exif-focalplaneresolutionunit' => 'Odaksal düzey çözünürlük ünitesi',
@@ -3049,7 +3099,6 @@ Takip eden bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya, sa
'exif-sensingmethod' => 'Algılama metodu',
'exif-filesource' => 'Dosya kaynağı',
'exif-scenetype' => 'Sahne tipi',
-'exif-cfapattern' => 'CFA deseni',
'exif-customrendered' => 'Özel resim işlemi',
'exif-exposuremode' => 'Pozlama',
'exif-whitebalance' => 'Beyaz denge',
@@ -3094,12 +3143,47 @@ Takip eden bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya, sa
'exif-gpsareainformation' => 'GPS alan adı',
'exif-gpsdatestamp' => 'GPS zamanı',
'exif-gpsdifferential' => 'GPS differential correction',
+'exif-jpegfilecomment' => 'JPEG dosyası yorumu',
+'exif-keywords' => 'Anahtar kelimeler',
+'exif-worldregiondest' => 'Gösterilen bölge',
+'exif-countrydest' => 'Gösterilen ülke',
+'exif-countrycodedest' => 'Gösterilen ülke kodu',
+'exif-citydest' => 'Gösterilen Şehir',
'exif-objectname' => 'Kısa başlık',
+'exif-headline' => 'Başlık',
+'exif-source' => 'Kaynak',
+'exif-urgency' => 'Aciliyet',
+'exif-fixtureidentifier' => 'Fikstür adı',
+'exif-contact' => 'Ä°letiÅŸim bilgileri',
+'exif-writer' => 'Yazar',
+'exif-languagecode' => 'Dil',
+'exif-iimversion' => 'IIM sürümü',
+'exif-iimcategory' => 'Kategori',
+'exif-identifier' => 'Tanımlayıcı',
+'exif-lens' => 'Kullanılan objektif',
+'exif-serialnumber' => 'Kameranın seri numarası',
+'exif-cameraownername' => 'Kameranın sahibi',
+'exif-label' => 'Etiket',
+'exif-rating' => 'Oylama (5 üzerinden)',
+'exif-copyrighted' => 'Telif hakkı durumu',
+'exif-copyrightowner' => 'Telif hakkı sahibi',
+'exif-usageterms' => 'Kullanım şartları',
+'exif-webstatement' => 'Çevrimiçi telif hakkı bildirimi',
+'exif-morepermissionsurl' => 'Alternatif lisans bilgileri',
+'exif-pngfilecomment' => 'PNG dosyası yorumu',
+'exif-disclaimer' => 'Sorumluluk reddi',
+'exif-contentwarning' => 'İçerik uyarısı',
+'exif-giffilecomment' => 'GIF dosyası yorumu',
+'exif-event' => 'Adı geçen olay',
+'exif-personinimage' => 'Adı geçen kişi',
# EXIF attributes
'exif-compression-1' => 'Sıkıştırılmamış',
'exif-compression-6' => 'JPEG',
+'exif-copyrighted-true' => 'Telif hakkı',
+'exif-copyrighted-false' => 'Kamu malı',
+
'exif-photometricinterpretation-2' => 'RGB',
'exif-photometricinterpretation-6' => 'YCbCr',
@@ -3120,8 +3204,8 @@ Takip eden bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya, sa
'exif-xyresolution-i' => '$1 dpi',
'exif-xyresolution-c' => '$1 dpc',
-'exif-colorspace-1' => 'sRGB',
-'exif-colorspace-ffff.h' => 'FFFF.H',
+'exif-colorspace-1' => 'sRGB',
+'exif-colorspace-65535' => 'Fotoğrafta renk ayarı yapılmamış.',
'exif-componentsconfiguration-0' => 'Var olmayan',
'exif-componentsconfiguration-1' => 'Y',
@@ -3246,6 +3330,9 @@ Takip eden bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya, sa
'exif-gpslongitude-e' => 'Doğu boylamı',
'exif-gpslongitude-w' => 'Batı boylamı',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => 'Deniz seviyesinden $1 {{PLURAL:$1|metre|metre}} yukarıda',
+
'exif-gpsstatus-a' => 'Ölçüm devam ediyor',
'exif-gpsstatus-v' => 'Ölçüm işlerliği',
@@ -3257,21 +3344,71 @@ Takip eden bağlantılar istisna olarak kabul edilmektedir. Örneğin: dosya, sa
'exif-gpsspeed-m' => 'Mil/saat',
'exif-gpsspeed-n' => 'Deniz mili',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilometre',
+'exif-gpsdestdistance-m' => 'Mil',
+'exif-gpsdestdistance-n' => 'Deniz mili',
+
+'exif-gpsdop-excellent' => 'Harika ($1)',
+'exif-gpsdop-good' => 'Ä°yi ($1)',
+'exif-gpsdop-moderate' => 'Ne iyi ne kötü ($1)',
+'exif-gpsdop-fair' => 'Ä°dare eder ($1)',
+'exif-gpsdop-poor' => 'Yetersiz ($1)',
+
+'exif-objectcycle-a' => 'Sadece sabah',
+'exif-objectcycle-p' => 'Sadece akÅŸam',
+'exif-objectcycle-b' => 'Gece ve gündüz',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Gerçek yönü',
'exif-gpsdirection-m' => 'Manyetik yönü',
+'exif-ycbcrpositioning-1' => 'Ortalanmış',
+
+'exif-dc-contributor' => 'Katkıda bulunanlar',
+'exif-dc-date' => 'Tarih(ler)',
+'exif-dc-publisher' => 'Yayımcı',
+'exif-dc-relation' => 'Ä°lgili medya',
+'exif-dc-rights' => 'Haklar',
+'exif-dc-source' => 'Kaynak medya',
+'exif-dc-type' => 'Medya türü',
+
+'exif-rating-rejected' => 'Reddedildi',
+
+'exif-isospeedratings-overflow' => "65535'den büyüktür",
+
+'exif-iimcategory-ace' => 'Sanat, kültür ve eğlence',
+'exif-iimcategory-clj' => 'Suç ve hukuk',
+'exif-iimcategory-dis' => 'Afetler ve kazalar',
+'exif-iimcategory-fin' => 'Ekonomi ve iÅŸ',
+'exif-iimcategory-edu' => 'EÄŸitim',
+'exif-iimcategory-evn' => 'Çevre',
+'exif-iimcategory-hth' => 'Sağlık',
+'exif-iimcategory-hum' => 'Ä°nsan ilgisi',
+'exif-iimcategory-lab' => 'Çalışma',
+'exif-iimcategory-lif' => 'Yaşam tarzı ve eğlence',
+'exif-iimcategory-pol' => 'Siyaset',
+'exif-iimcategory-rel' => 'Din ve inanç',
+'exif-iimcategory-sci' => 'Bilim ve teknoloji',
+'exif-iimcategory-soi' => 'Sosyal konular',
+'exif-iimcategory-spo' => 'Spor',
+'exif-iimcategory-war' => 'Savaş, çatışma ve kargaşa',
+'exif-iimcategory-wea' => 'Hava',
+
+'exif-urgency-normal' => 'Normal ( $1 )',
+'exif-urgency-low' => 'Düşük ( $1 )',
+'exif-urgency-high' => 'Yüksek ( $1 )',
+'exif-urgency-other' => 'Kullanıcı tanımlı öncelik ($1)',
+
# External editor support
'edit-externally' => 'Dosyayı harici bir uygulamayla değiştirin.',
-'edit-externally-help' => '(Daha fazla bilgi için metadaki [http://www.mediawiki.org/wiki/Manual:External_editors dış uygulama ayarları] (İngilizce) sayfasına bakabilirsiniz)',
+'edit-externally-help' => '(Daha fazla bilgi için metadaki [//www.mediawiki.org/wiki/Manual:External_editors dış uygulama ayarları] (İngilizce) sayfasına bakabilirsiniz)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'hepsi',
-'imagelistall' => 'Tümü',
-'watchlistall2' => 'Hepsini göster',
-'namespacesall' => 'hepsi',
-'monthsall' => 'hepsi',
-'limitall' => 'tümü',
+'watchlistall2' => 'Hepsini göster',
+'namespacesall' => 'hepsi',
+'monthsall' => 'hepsi',
+'limitall' => 'tümü',
# E-mail address confirmation
'confirmemail' => 'E-posta adresini onayla',
@@ -3350,11 +3487,12 @@ $1',
'trackbackdeleteok' => 'Geri izleme başarıyla silindi.',
# Delete conflict
-'deletedwhileediting' => "'''Uyarı''': Bu sayfa siz değişiklik yapmaya başladıktan sonra silinmiş!",
-'confirmrecreate' => "Bu sayfayı [[User:$1|$1]] ([[User talk:$1|mesaj]]) kullanıcısı siz sayfada değişiklik yaparken silmiştir, nedeni:
+'deletedwhileediting' => "'''Uyarı''': Bu sayfa siz değişiklik yapmaya başladıktan sonra silinmiş!",
+'confirmrecreate' => "Bu sayfayı [[User:$1|$1]] ([[User talk:$1|mesaj]]) kullanıcısı siz sayfada değişiklik yaparken silmiştir, nedeni:
: ''$2''
Sayfayı baştan açmak isityorsanız, lütfen onaylayın.",
-'recreate' => 'Canlandır',
+'confirmrecreate-noreason' => '[[User:$1|$1]] ([[User talk:$1|mesaj]]) adlı kullanıcı, siz değişiklik yapmaya başladıktan sonra bu sayfayı sildi. Lütfen bu sayfayı gerçekten yeniden oluşturmak istediğinizi onaylayın.',
+'recreate' => 'Canlandır',
'unit-pixel' => 'px',
@@ -3363,6 +3501,12 @@ Sayfayı baştan açmak isityorsanız, lütfen onaylayın.",
'confirm-purge-top' => 'Sayfa önbelleği temizlensin mi?',
'confirm-purge-bottom' => 'Bir sayfayı tasfiye etmek önbelleği temizler ve en güncel sürümün görünmesine zorlar.',
+# action=watch/unwatch
+'confirm-watch-button' => 'TAMAM',
+'confirm-watch-top' => 'Bu sayfayı izleme listenize ekleyin',
+'confirm-unwatch-button' => 'TAMAM',
+'confirm-unwatch-top' => 'Bu sayfayı izleme listenizden çıkarın',
+
# Separators for various lists, etc.
'percent' => '%$1',
@@ -3408,14 +3552,14 @@ Normal önizlemeyi deneyin.',
'watchlistedit-normal-legend' => 'İzleme listesinden başlıkları kaldır',
'watchlistedit-normal-explain' => 'İzleme listenizdeki başlıklar aşağıda gösterilmiştir.
Bir başlığı çıkarmak için, yanındaki kutucuğu işaretleyin ve "{{int:Watchlistedit-normal-submit}}" düğmesine tıklayın.
-[[Special:Watchlist/raw|Satır listesini]] de düzenleyebilirsiniz.',
+[[Special:EditWatchlist/raw|Satır listesini]] de düzenleyebilirsiniz.',
'watchlistedit-normal-submit' => 'Başlıkları kaldır',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 başlık|$1 başlık}} izleme listenizden çıkarıldı:',
'watchlistedit-raw-title' => 'Ham izleme listesini düzenle',
'watchlistedit-raw-legend' => 'Ham izleme listesini düzenle',
'watchlistedit-raw-explain' => 'İzleme listenizdeki başlıklar aşağıda gösterilmektedir. Her satırda bir başlık olmak üzere, başlıkları ekleyerek ya da silerek listeyi düzenleyebilirsiniz.
Bittiğinde "{{int:Watchlistedit-raw-submit}}"ye tıklayınız.
-Ayrıca [[Special:Watchlist/edit|standart düzenleme sayfasını]] da kullanabilirsiniz.',
+Ayrıca [[Special:EditWatchlist|standart düzenleme sayfasını]] da kullanabilirsiniz.',
'watchlistedit-raw-titles' => 'Başlıklar:',
'watchlistedit-raw-submit' => 'İzleme listesini güncelle',
'watchlistedit-raw-done' => 'İzleme listeniz güncellendi.',
@@ -3432,33 +3576,33 @@ Ayrıca [[Special:Watchlist/edit|standart düzenleme sayfasını]] da kullanabil
'duplicate-defaultsort' => '\'\'\'Uyarı:\'\'\' Varsayılan "$2" sınıflandırma anahtarı, önceki "$1" sınıflandırma anahtarını geçersiz kılıyor.',
# Special:Version
-'version' => 'Sürüm',
-'version-extensions' => 'Yüklü ekler',
-'version-specialpages' => 'Özel sayfalar',
-'version-parserhooks' => 'Derleyici çengelleri',
-'version-variables' => 'DeÄŸiÅŸkenler',
-'version-skins' => 'Görünümler',
-'version-other' => 'DiÄŸer',
-'version-mediahandlers' => 'Ortam iÅŸleyiciler',
-'version-hooks' => 'Çengeller',
-'version-extension-functions' => 'Ek fonksiyonları',
-'version-parser-extensiontags' => 'Derleyici eklenti etiketleri',
-'version-parser-function-hooks' => 'Derleyici fonksiyon çengelleri',
-'version-skin-extension-functions' => 'Tema eki fonksiyonları',
-'version-hook-name' => 'Çengel adı',
-'version-hook-subscribedby' => 'Abone olan',
-'version-version' => '(Sürüm $1)',
-'version-license' => 'Lisans',
-'version-poweredby-credits' => "Bu wiki '''[http://www.mediawiki.org/ MediaWiki]''' programı kullanılarak oluşturulmuştur, telif © 2001-$1 $2.",
-'version-poweredby-others' => 'diÄŸerleri',
-'version-license-info' => "MediaWiki özgür bir yazılımdır; MediaWiki'yi, Özgür Yazılım Vakfı tarafından yayımlanmış olan GNU Genel Kamu Lisansının 2. veya (seçeceğiniz) daha sonraki bir sürümünün koşulları altında yeniden dağıtabilir ve/veya değiştirebilirsiniz.
+'version' => 'Sürüm',
+'version-extensions' => 'Yüklü ekler',
+'version-specialpages' => 'Özel sayfalar',
+'version-parserhooks' => 'Derleyici çengelleri',
+'version-variables' => 'DeÄŸiÅŸkenler',
+'version-antispam' => 'Yığın mesaj (spam) önleme',
+'version-skins' => 'Görünümler',
+'version-other' => 'DiÄŸer',
+'version-mediahandlers' => 'Ortam iÅŸleyiciler',
+'version-hooks' => 'Çengeller',
+'version-extension-functions' => 'Ek fonksiyonları',
+'version-parser-extensiontags' => 'Derleyici eklenti etiketleri',
+'version-parser-function-hooks' => 'Derleyici fonksiyon çengelleri',
+'version-hook-name' => 'Çengel adı',
+'version-hook-subscribedby' => 'Abone olan',
+'version-version' => '(Sürüm $1)',
+'version-license' => 'Lisans',
+'version-poweredby-credits' => "Bu wiki '''[//www.mediawiki.org/ MediaWiki]''' programı kullanılarak oluşturulmuştur, telif © 2001-$1 $2.",
+'version-poweredby-others' => 'diÄŸerleri',
+'version-license-info' => "MediaWiki özgür bir yazılımdır; MediaWiki'yi, Özgür Yazılım Vakfı tarafından yayımlanmış olan GNU Genel Kamu Lisansının 2. veya (seçeceğiniz) daha sonraki bir sürümünün koşulları altında yeniden dağıtabilir ve/veya değiştirebilirsiniz.
MediaWiki yazılımı faydalı olacağı ümidiyle dağıtılmaktadır; ancak kastedilen SATILABİLİRLİK veya BELİRLİ BİR AMACA UYGUNLUK garantisi hariç HİÇBİR GARANTİSİ YOKTUR. Daha fazla ayrıntı için GNU Genel Kamu Lisansı'na bakınız.
-Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansının bir kopyasını] da edinmiş olmalısınız; eğer edinmediyseniz, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA adresine yazın veya [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html lisansı çevrim içi olarak okuyun].",
-'version-software' => 'Yüklü yazılım',
-'version-software-product' => 'Ürün',
-'version-software-version' => 'Versiyon',
+Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansının bir kopyasını] da edinmiş olmalısınız; eğer edinmediyseniz, Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA adresine yazın veya [//www.gnu.org/licenses/old-licenses/gpl-2.0.html lisansı çevrim içi olarak okuyun].",
+'version-software' => 'Yüklü yazılım',
+'version-software-product' => 'Ürün',
+'version-software-version' => 'Versiyon',
# Special:FilePath
'filepath' => 'Dosyanın konumu',
@@ -3468,22 +3612,21 @@ Bu programla birlikte [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU Genel Kamu Lisansın
Resimler tam çözünürlükte görüntülenir, diğer dosya tipleri ilgili programlarıyla doğrudan başlatılır.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Benzer dosyaları ara',
-'fileduplicatesearch-summary' => 'Sağlama değeri tabanında benzer dosyaları ara.
-
-Dosya adını "{{ns:file}}:" öneki olmadan gir.',
-'fileduplicatesearch-legend' => 'Bir benzerini ara',
-'fileduplicatesearch-filename' => 'Dosya adı:',
-'fileduplicatesearch-submit' => 'Ara',
-'fileduplicatesearch-info' => '$1 × $2 piksel<br />Dosya boyutu: $3<br />MIME tipi: $4',
-'fileduplicatesearch-result-1' => '"$1" dosyasının özdeş benzeri yok.',
-'fileduplicatesearch-result-n' => '"$1" dosyasının {{PLURAL:$2|1 özdeş benzeri|$2 özdeş benzeri}} var.',
+'fileduplicatesearch' => 'Benzer dosyaları ara',
+'fileduplicatesearch-summary' => 'Sağlama değeri tabanında benzer dosyaları ara.',
+'fileduplicatesearch-legend' => 'Bir benzerini ara',
+'fileduplicatesearch-filename' => 'Dosya adı:',
+'fileduplicatesearch-submit' => 'Ara',
+'fileduplicatesearch-info' => '$1 × $2 piksel<br />Dosya boyutu: $3<br />MIME tipi: $4',
+'fileduplicatesearch-result-1' => '"$1" dosyasının özdeş benzeri yok.',
+'fileduplicatesearch-result-n' => '"$1" dosyasının {{PLURAL:$2|1 özdeş benzeri|$2 özdeş benzeri}} var.',
+'fileduplicatesearch-noresults' => '"$1" isminde hiç dosya bulunamadı.',
# Special:SpecialPages
'specialpages' => 'Özel sayfalar',
-'specialpages-note' => '----
-* Normal özel sayfalar.
-* <strong class="mw-specialpagerestricted">Kısıtlı özel sayfalar.</strong>',
+'specialpages-note' => '* Normal özel sayfalar.
+* <span class="mw-specialpagerestricted">Kısıtlı özel sayfalar.</span>
+* <span class="mw-specialpagecached">Yalnızca önbelleğe alınan özel sayfalar.</span>',
'specialpages-group-maintenance' => 'Bakım raporları',
'specialpages-group-other' => 'Diğer özel sayfalar',
'specialpages-group-login' => 'Oturum aç / hesap edin',
diff --git a/languages/messages/MessagesTs.php b/languages/messages/MessagesTs.php
index bec0df41..a75dd265 100644
--- a/languages/messages/MessagesTs.php
+++ b/languages/messages/MessagesTs.php
@@ -119,11 +119,6 @@ $messages = array(
'badaccess' => 'Xihoxo hita mpfumelelo',
'badaccess-group0' => 'U hava mpumelelo wo endla xikombelo lexi.',
-'badaccess-groups' => 'The action you have requested is limited to users in one of the groups $1.',
-
-'versionrequired' => 'Version $1 of MediaWiki required',
-'versionrequiredtext' => 'Version $1 of MediaWiki is required to use this page.
-See [[Special:Version|version page]].',
'ok' => 'Hiswona',
'retrievedfrom' => 'ku suka e "$1"',
@@ -141,13 +136,6 @@ See [[Special:Version|version page]].',
'thisisdeleted' => 'Langutisa kumbe Thlerisela $1?',
'viewdeleted' => 'Langutisa $1?',
'restorelink' => '{{PLURAL:$1|ndzulamiso lowu suriweke|$1 mindzulamiso leyi suriweke}}',
-'feedlinks' => 'Feed:',
-'feed-invalid' => 'Invalid subscription feed type.',
-'feed-unavailable' => 'Syndication feeds are not available on {{SITENAME}}',
-'site-rss-feed' => '$1 RSS Feed',
-'site-atom-feed' => '$1 Atom Feed',
-'page-rss-feed' => '"$1" RSS Feed',
-'page-atom-feed' => '"$1" Atom Feed',
'red-link-title' => '$1 (Arisi tsariwa)',
# Short words for each namespace, by default used in the namespace tab in monobook
@@ -171,58 +159,10 @@ See [[Special:Version|version page]].',
Vona nxaxamelo wa ma tluka yo hlawuleka e [[Special:SpecialPages|{{int:specialpages}}]].',
# General errors
-'error' => 'Xihoxo',
-'databaseerror' => 'Xihoxo xo Database',
-'dberrortext' => 'A database query syntax error has occurred.
-This may indicate a bug in the software.
-The last attempted database query was:
-<blockquote><tt>$1</tt></blockquote>
-from within function "<tt>$2</tt>".
-MySQL returned error "<tt>$3: $4</tt>".',
-'dberrortextcl' => 'A database query syntax error has occurred.
-The last attempted database query was:
-"$1"
-from within function "$2".
-MySQL returned error "$3: $4"',
-'laggedslavemode' => 'Warning: Page may not contain recent updates.',
-'readonly' => 'Database locked',
-'enterlockreason' => 'Enter a reason for the lock, including an estimate of when the lock will be released',
-'readonlytext' => 'The database is currently locked to new entries and other modifications, probably for routine database maintenance, after which it will be back to normal.
-
-The administrator who locked it offered this explanation: $1',
-'missing-article' => 'The database did not find the text of a page that it should have found, named "$1" $2.
-
-This is usually caused by following an outdated diff or history link to a page that has been deleted.
-
-If this is not the case, you may have found a bug in the software.
-Please report this to an administrator, making note of the URL.',
-'missingarticle-rev' => '(revision#: $1)',
-'missingarticle-diff' => '(Diff: $1, $2)',
-'readonly_lag' => 'The database has been automatically locked while the slave database servers catch up to the master',
-'internalerror' => 'Xihoxo xa le ndzeni',
-'internalerror_info' => 'Internal error: $1',
-'filecopyerror' => 'Could not copy file "$1" to "$2".',
-'filerenameerror' => 'Could not rename file "$1" to "$2".',
-'filedeleteerror' => 'Could not delete file "$1".',
-'directorycreateerror' => 'Could not create directory "$1".',
-'filenotfound' => 'Could not find file "$1".',
-'fileexistserror' => 'Unable to write to file "$1": file exists',
-'unexpected' => 'Unexpected value: "$1"="$2".',
-'formerror' => 'Error: could not submit form',
-'badarticleerror' => 'This action cannot be performed on this page.',
-'cannotdelete' => 'Could not delete the page or file specified.
-It may have already been deleted by someone else.',
-'badtitle' => 'Bad title',
-'badtitletext' => 'The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title.
-It may contain one or more characters which cannot be used in titles.',
-'perfcached' => 'The following data is cached and may not be up to date.',
-'perfcachedts' => 'The following data is cached, and was last updated $1.',
-'querypage-no-updates' => 'Updates for this page are currently disabled.
-Data here will not presently be refreshed.',
-'wrong_wfQuery_params' => 'Incorrect parameters to wfQuery()<br />
-Function: $1<br />
-Query: $2',
-'viewsource' => 'Vona tsalwa-tumbuluxa',
+'error' => 'Xihoxo',
+'databaseerror' => 'Xihoxo xo Database',
+'internalerror' => 'Xihoxo xa le ndzeni',
+'viewsource' => 'Vona tsalwa-tumbuluxa',
# Login and logout pages
'yourpassword' => 'Vito-mpfungulo:',
diff --git a/languages/messages/MessagesTt_cyrl.php b/languages/messages/MessagesTt_cyrl.php
index 0adf9d5e..25f0af1e 100644
--- a/languages/messages/MessagesTt_cyrl.php
+++ b/languages/messages/MessagesTt_cyrl.php
@@ -56,8 +56,8 @@ $namespaceNames = array(
NS_FILE_TALK => 'Файл_бәхәÑе',
NS_MEDIAWIKI => 'МедиаВики',
NS_MEDIAWIKI_TALK => 'МедиаВики_бәхәÑе',
- NS_TEMPLATE => 'Үрнәк',
- NS_TEMPLATE_TALK => 'Үрнәк_бәхәÑе',
+ NS_TEMPLATE => 'Калып',
+ NS_TEMPLATE_TALK => 'Калып_бәхәÑе',
NS_HELP => 'Ярдәм',
NS_HELP_TALK => 'Ярдәм_бәхәÑе',
NS_CATEGORY => 'Төркем',
@@ -81,6 +81,8 @@ $namespaceAliases = array(
'ОбÑуждение_MediaWiki' => NS_MEDIAWIKI_TALK,
'Медиа_Вики' => NS_MEDIAWIKI,
'Медиа_Вики_бәхәÑе' => NS_MEDIAWIKI_TALK,
+ 'Үрнәк' => NS_TEMPLATE,
+ 'Үрнәк_бәхәÑе' => NS_TEMPLATE_TALK,
'Шаблон' => NS_TEMPLATE,
'ОбÑуждение_шаблона' => NS_TEMPLATE_TALK,
'Шаблон_бәхәÑе' => NS_TEMPLATE_TALK,
@@ -89,7 +91,7 @@ $namespaceAliases = array(
'КатегориÑ' => NS_CATEGORY,
'ОбÑуждение_категории' => NS_CATEGORY_TALK,
- // tt-latn namespace names
+ // 'tt-latn' namespace names.
'Maxsus' => NS_SPECIAL,
'Bäxäs' => NS_TALK,
'Äğzä' => NS_USER,
@@ -107,63 +109,63 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Икеле_күчеш' ),
+ 'Activeusers' => array( 'Ðктив_кулланучылар' ),
+ 'Allmessages' => array( 'Барлык_хатлар' ),
+ 'Allpages' => array( 'Барлык_битләр' ),
+ 'Ancientpages' => array( 'ИÑке_битләр' ),
+ 'Booksources' => array( 'Китап_чыганаклары' ),
'BrokenRedirects' => array( 'Өзелгән_күчеш' ),
- 'Userlogin' => array( 'Кулланучы_иÑеме' ),
- 'Userlogout' => array( 'Чыгу' ),
+ 'Categories' => array( 'Төркемнәр' ),
+ 'Confirmemail' => array( 'Электрон_почтаны_раÑлау' ),
+ 'Contributions' => array( 'Кертемнәр' ),
'CreateAccount' => array( 'Теркәлү' ),
- 'Preferences' => array( 'Көйләнмәләр' ),
- 'Watchlist' => array( 'Күзәтү_иÑемлеге' ),
- 'Recentchanges' => array( 'Соңгы_үзгәртүләр' ),
- 'Upload' => array( 'Йөкләү' ),
+ 'DoubleRedirects' => array( 'Икеле_күчеш' ),
+ 'Emailuser' => array( 'Кулланучының_E-mail\'лы' ),
+ 'Export' => array( 'ЭкÑпорт' ),
+ 'Fewestrevisions' => array( 'Кечкенә_үзгәртүләр' ),
+ 'Import' => array( 'Импорт' ),
+ 'Listadmins' => array( 'Идарәчеләр_иÑемлеге' ),
+ 'Listbots' => array( 'Ботлар_иÑемлеге' ),
'Listfiles' => array( 'Файллар_иÑемлеге' ),
- 'Newimages' => array( 'Яңа_файл' ),
- 'Listusers' => array( 'Кулланучылар_иÑемлеге' ),
'Listgrouprights' => array( 'Төркемнәр_иÑемлеге' ),
- 'Statistics' => array( 'СтатиÑтика' ),
+ 'Listusers' => array( 'Кулланучылар_иÑемлеге' ),
+ 'Log' => array( 'Көндәлек' ),
+ 'Longpages' => array( 'Озын_битләр' ),
+ 'Mostcategories' => array( 'Зур_төркемнәр' ),
+ 'Mostrevisions' => array( 'Зур_үзгәртүләр' ),
+ 'Movepage' => array( 'Битне_күчерү' ),
+ 'Mypage' => array( 'Сәхифәм' ),
+ 'Mytalk' => array( 'БәхәÑем' ),
+ 'Newimages' => array( 'Яңа_файл' ),
+ 'Newpages' => array( 'Яңа_бит' ),
+ 'Popularpages' => array( 'ПопулÑÑ€_битләр' ),
+ 'Preferences' => array( 'Көйләнмәләр' ),
+ 'Protectedpages' => array( 'Якланган_битләр' ),
+ 'Protectedtitles' => array( 'Якланган_башлыклар' ),
'Randompage' => array( 'Очраклы_мәкалә' ),
- 'Uncategorizedpages' => array( 'Үзләштерелмәгән_битләр' ),
+ 'Recentchanges' => array( 'Соңгы_үзгәртүләр' ),
+ 'Recentchangeslinked' => array( 'Бәйләнгән_Ñоңгы_үзгәртүләр' ),
+ 'Search' => array( 'Эзләү' ),
+ 'Shortpages' => array( 'КыÑка_битләр' ),
+ 'Specialpages' => array( 'МахÑуÑ_битләр' ),
+ 'Statistics' => array( 'СтатиÑтика' ),
+ 'Tags' => array( 'Теглар' ),
'Uncategorizedcategories' => array( 'Үзләштерелмәгән__бүлекләр' ),
'Uncategorizedimages' => array( 'Үзләштерелмәгән_файллар' ),
+ 'Uncategorizedpages' => array( 'Үзләштерелмәгән_битләр' ),
'Uncategorizedtemplates' => array( 'Үзләштерелмәгән__үрнәкләр' ),
- 'Unusedcategories' => array( 'Кулланылмаучы_бүлекләр' ),
+ 'Unusedcategories' => array( 'Кулланылмаган_төркемнәр' ),
'Unusedimages' => array( 'Кулланылмаучы__файллар' ),
- 'Wantedpages' => array( 'Мондый_бит_юк' ),
+ 'Upload' => array( 'Йөкләү' ),
+ 'Userlogin' => array( 'Кулланучы_иÑеме' ),
+ 'Userlogout' => array( 'Чыгу' ),
+ 'Version' => array( 'Юрама' ),
'Wantedcategories' => array( 'Мондый_бүлек_юк' ),
'Wantedfiles' => array( 'Мондый_файл_юк' ),
+ 'Wantedpages' => array( 'Мондый_бит_юк' ),
'Wantedtemplates' => array( 'Мондый_үрнәк_юк' ),
- 'Mostcategories' => array( 'Зур_төркемнәр' ),
- 'Mostrevisions' => array( 'Зур_үзгәртүләр' ),
- 'Fewestrevisions' => array( 'Кечкенә_үзгәртүләр' ),
- 'Shortpages' => array( 'КыÑка_битләр' ),
- 'Longpages' => array( 'Озын_битләр' ),
- 'Newpages' => array( 'Яңа_бит' ),
- 'Ancientpages' => array( 'ИÑке_битләр' ),
- 'Protectedpages' => array( 'Якланган_битләр' ),
- 'Protectedtitles' => array( 'Якланган_башлыклар' ),
- 'Allpages' => array( 'Барлык_битләр' ),
- 'Specialpages' => array( 'МахÑуÑ_битләр' ),
- 'Contributions' => array( 'Кертемнәр' ),
- 'Emailuser' => array( 'Кулланучының_E-mail\'лы' ),
- 'Confirmemail' => array( 'Электрон_почтаны_раÑлау' ),
+ 'Watchlist' => array( 'Күзәтү_иÑемлеге' ),
'Whatlinkshere' => array( 'Биткә_юнәлтүче_Ñылтамалар' ),
- 'Recentchangeslinked' => array( 'Бәйләнгән_Ñоңгы_үзгәртүләр' ),
- 'Movepage' => array( 'Битне_күчерү' ),
- 'Booksources' => array( 'Китап_чыганаклары' ),
- 'Categories' => array( 'Төркемнәр' ),
- 'Export' => array( 'ЭкÑпорт' ),
- 'Version' => array( 'Юрама' ),
- 'Allmessages' => array( 'Барлык_хатлар' ),
- 'Log' => array( 'Көндәлек' ),
- 'Import' => array( 'Импорт' ),
- 'Mypage' => array( 'Сәхифәм' ),
- 'Mytalk' => array( 'БәхәÑем' ),
- 'Listadmins' => array( 'Идарәчеләр_иÑемлеге' ),
- 'Listbots' => array( 'Ботлар_иÑемлеге' ),
- 'Popularpages' => array( 'ПопулÑÑ€_битләр' ),
- 'Search' => array( 'Эзләү' ),
- 'Tags' => array( 'Теглар' ),
- 'Activeusers' => array( 'Ðктив_кулланучылар' ),
);
$magicWords = array(
@@ -233,10 +235,10 @@ $messages = array(
'tog-enotifminoredits' => 'Кече үзгәртүләр турында да Ñлектрон почтага хәбәр җибәрелÑен',
'tog-enotifrevealaddr' => 'Хәбәрләрдә e-mail адреÑым күрÑәтелÑен',
'tog-shownumberswatching' => 'Битне күзәтү иÑемлекләренә Ó©Ñтәгән кулланучылар Ñанын күрÑәтелÑен',
-'tog-oldsig' => 'Хәзерге имзаны алдан карау:',
+'tog-oldsig' => 'Хәзерге имза:',
'tog-fancysig' => 'Имзаның шәхÑи вики-билгеләмәÑе (автоматик ÑылтамаÑыз)',
-'tog-externaleditor' => 'Тышкы редактор куллану (бары тик белгечләргә генә һәм Ñанак махÑÑƒÑ ÐºÓ©Ð¹Ð»Ó™Ð½Ð³Ó™Ð½ булу зарур; [http://www.mediawiki.org/wiki/Manual:External_editors тулырак...])',
-'tog-externaldiff' => 'Тышкы верÑÐ¸Ñ Ñ‡Ð°Ð³Ñ‹ÑˆÑ‚Ñ‹Ñ€Ñƒ программаÑын куллану (бары тик белгечләр өчен һшм Ñанак махÑÑƒÑ ÐºÓ©Ð¹Ð»Ó™Ð½Ð³Ó™Ð½ булу зарур; [http://www.mediawiki.org/wiki/Manual:External_editors тулырак...])',
+'tog-externaleditor' => 'Тышкы редактор куллану (бары тик белгечләргә генә һәм Ñанак махÑÑƒÑ ÐºÓ©Ð¹Ð»Ó™Ð½Ð³Ó™Ð½ булу зарур; [//www.mediawiki.org/wiki/Manual:External_editors тулырак...])',
+'tog-externaldiff' => 'Тышкы верÑÐ¸Ñ Ñ‡Ð°Ð³Ñ‹ÑˆÑ‚Ñ‹Ñ€Ñƒ программаÑын куллану (бары тик белгечләр өчен һшм Ñанак махÑÑƒÑ ÐºÓ©Ð¹Ð»Ó™Ð½Ð³Ó™Ð½ булу зарур; [//www.mediawiki.org/wiki/Manual:External_editors тулырак...])',
'tog-showjumplinks' => '«Күчү» Ñрдәмче Ñылтамалары ÑлганÑын',
'tog-uselivepreview' => 'Тиз карап алу кулланылÑын (JavaScript, ÑкÑперименталь)',
'tog-forceeditsummary' => 'Үзгәртүләрне таÑвирлау юлы тутырылмаган булÑа, киÑәтү',
@@ -332,15 +334,9 @@ $messages = array(
'listingcontinuesabbrev' => 'дәвамы',
'index-category' => 'ИндекÑланган битләр',
'noindex-category' => 'ИндекÑланмаган битләр',
+'broken-file-category' => 'Эшләми торган файл Ñылтамаларлы битләр',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => '«MediaWiki» уңышлы куелды.',
-'mainpagedocfooter' => "Бу вики турында мәгълүматны [http://meta.wikimedia.org/wiki/Ярдәм:Эчтәлек биредә] табып була.
-
-== Кайбер файдалы реÑурÑлар ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Көйләнмәләр иÑемлеге (инг.)];
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki турында еш бирелгән Ñораулар һәм җаваплар (инг.)];
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki'ның Ñңа верÑиÑләре турында хәбәрләр Ñздырып алу].",
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'ТаÑвирлама',
'article' => 'Мәкалә',
@@ -392,10 +388,10 @@ $messages = array(
'history' => 'Битнең тарихы',
'history_short' => 'Тарих',
'updatedmarker' => 'Ñоңгы керүемнән Ñоң Ñңартылган',
-'info_short' => 'Мәгълүмат',
'printableversion' => 'БаÑтыру верÑиÑÑе',
'permalink' => 'Даими Ñылтама',
'print' => 'БаÑтыру',
+'view' => 'Карау',
'edit' => 'Үзгәртү',
'create' => 'Төзү',
'editthispage' => 'Бу битне үзгәртү',
@@ -403,6 +399,7 @@ $messages = array(
'delete' => 'Бетерү',
'deletethispage' => 'Бу битне бетерү',
'undelete_short' => '$1 {{PLURAL:$1|үзгәртмәне}} торгызу',
+'viewdeleted_short' => '{{PLURAL:$1|1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}} карау',
'protect' => 'Яклау',
'protect_change' => 'үзгәртү',
'protectthispage' => 'Бу битне Ñклау',
@@ -489,6 +486,8 @@ $1',
'toc' => 'Эчтәлек',
'showtoc' => 'күрÑәтү',
'hidetoc' => 'Ñшерү',
+'collapsible-collapse' => 'Төрү',
+'collapsible-expand' => 'Ðчу',
'thisisdeleted' => '$1 карарга Ñки торгызырга телиÑезме?',
'viewdeleted' => '$1 карарга телиÑезме?',
'restorelink' => '{{PLURAL:$1|1 бетерелгән үзгәртүне|$1 бетерелгән үзгәртүне}}',
@@ -502,6 +501,8 @@ $1',
'feed-atom' => 'Atom-таÑмаÑÑ‹',
'feed-rss' => 'RSS-таÑмаÑÑ‹',
'red-link-title' => '$1 (мондый бит юк)',
+'sort-descending' => 'Кимү буенча урнаштыру',
+'sort-ascending' => 'Ðрту буенча урнаштыру',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Бит',
@@ -583,12 +584,13 @@ $1',
'protectedpagetext' => 'Бу бит үзгәртү өчен Ñбык.',
'viewsourcetext' => 'Сез бу битнең башлангыч текÑтын карый һәм күчерә алаÑыз:',
'protectedinterface' => 'Бу биттә программа интерфейÑÑ‹ хәбәрләре бар. Вандализмга каршы көрәш Ñәбәпле, бу битне үзгәртү тыела.',
-'editinginterface' => "'''Игътибар:''' Сез MediaWiki ÑиÑтемаÑының Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð±Ð¸Ñ‚ÐµÐ½ үзгәртәÑез. Бу башка кулланучыларга да Ñ‚Ó™ÑÑир итәчәк. Тәрҗемә өчен [http://translatewiki.net/wiki/Main_Page?setlang=tt-cyrl translatewiki.net] локализациÑләү проектын кулланыгыз.",
+'editinginterface' => "'''Игътибар:''' Сез MediaWiki ÑиÑтемаÑының Ð¸Ð½Ñ‚ÐµÑ€Ñ„ÐµÐ¹Ñ Ð±Ð¸Ñ‚ÐµÐ½ үзгәртәÑез. Бу башка кулланучыларга да Ñ‚Ó™ÑÑир итәчәк. Тәрҗемә өчен [//translatewiki.net/wiki/Main_Page?setlang=tt-cyrl translatewiki.net] локализациÑләү проектын кулланыгыз.",
'sqlhidden' => '(SQL-Ñорау Ñшерелгән)',
'cascadeprotected' => 'Бу бит үзгәртүләрдән Ñакланган, чөнки ул каÑкадлы Ñаклау кабул ителгән {{PLURAL:$1|биткә|битләргә}} Ó©Ñтәлгән:
$2',
'namespaceprotected' => "'''$1''' иÑем киңлегендәге битләрне үзгәртү өчен Ñезнең Ñ€Ó©Ñ…Ñәтегез юк.",
-'customcssjsprotected' => 'Сез бу битне үзгәртә алмыйÑыз, чөнки анда башка кулланычының көйләнмәләре бар.',
+'customcssprotected' => 'Сез бу CSS-Ñәхифәне үзгәртә алмыйÑыз, чөнки монда башка кулланучының шәхÑи көйләнмәләре Ñаклана',
+'customjsprotected' => 'Сез бу JavaScript-Ñәхифәне үзгәртә алмыйÑыз, чөнк монда башка кулланучының шәхÑи көйләнмәләре Ñаклана',
'ns-specialprotected' => 'МахÑÑƒÑ Ð±Ð¸Ñ‚Ð»Ó™Ñ€Ð½Ðµ үзгәртеп булмый.',
'titleprotected' => "Бу иÑем белән бит ÑÑау [[User:$1|$1]] тарафыннан тыелган.
Ул күрÑәткән Ñәбәп: ''$2''.",
@@ -626,6 +628,7 @@ $2',
'createaccount' => 'Яңа кулланучы теркәү',
'gotaccount' => "Сез инде теркәлдегезме? '''$1'''.",
'gotaccountlink' => 'Керү',
+'userlogin-resetlink' => 'СерÑүзегезне оныттыгызмы?',
'createaccountmail' => 'Ñлектрон почта аша',
'createaccountreason' => 'Сәбәп:',
'badretype' => 'Кертелгән ÑерÑүзләр бер үк түгел.',
@@ -641,7 +644,7 @@ $2',
'nosuchuser' => '$1 иÑемле кулланучы юк.
Кулланучы иÑеменең дөреÑлеге региÑтрга бәйле.
Язылышыгызны тикшерегез Ñки [[Special:UserLogin/signup|Ñңа хиÑап ÑзмаÑÑ‹ төзегез]].',
-'nosuchusershort' => '<nowiki>$1</nowiki> иÑемле кулланучы юк. Язылышыгызны тикшерегез.',
+'nosuchusershort' => '$1 иÑемле кулланучы юк. Язылышыгызны тикшерегез.',
'nouserspecified' => 'Сез теркәү иÑмегезне күрÑәтергә тиешÑез.',
'login-userblocked' => 'Бу кулланучы тыелды. Керү тыелган.',
'wrongpassword' => 'Язылган ÑерÑүз Ð´Ó©Ñ€ÐµÑ Ñ‚Ò¯Ð³ÐµÐ». Тагын бер тапкыр Ñынагыз.',
@@ -684,7 +687,7 @@ $2',
# E-mail sending
'php-mail-error-unknown' => 'PHP mail() функциÑÑендә билгеÑез хата',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'СерÑүзне үзгәртү',
'resetpass_announce' => 'Сез Ñлектрон почта аша вакытлыча бирелгән ÑерÑүз Ñрдәмендә кердегез. СиÑтемага керүне төгәлләү өчен Ñңа ÑерÑүз төзегез.',
'resetpass_text' => '<!-- Монда текÑÑ‚ Ó©Ñтәгез -->',
@@ -702,6 +705,16 @@ $2',
Сез ÑерÑүзегезне үзгәрткән ÑиÑÓ™ Ñңа вакытлы ÑерÑүз Ñораткан булырга мөмкинÑез.',
'resetpass-temp-password' => 'Вакытлы ÑерÑүз:',
+# Special:PasswordReset
+'passwordreset' => 'СерÑүзне бетерү',
+'passwordreset-text' => 'Сезнең хиÑап ÑзмаÑының параметрлары турында хат алыр өчен, түбәндәгеләрне тутырыгыз',
+'passwordreset-legend' => 'СерÑүзне Ñңадан кую',
+'passwordreset-username' => 'Кулланучы иÑеме:',
+'passwordreset-domain' => 'Домен:',
+'passwordreset-email' => 'E-mail адреÑÑ‹',
+'passwordreset-emailelement' => 'Кулланучы иÑеме: $1
+Вакытлыча ÑерÑүз: $2',
+
# Edit page toolbar
'bold_sample' => 'Калын Ñзылыш',
'bold_tip' => 'Калын Ñзылыш',
@@ -713,8 +726,6 @@ $2',
'extlink_tip' => 'Тышкы Ñылтама (http:// алкушымчаÑÑ‹ турында онытмагыз)',
'headline_sample' => 'БашиÑем',
'headline_tip' => '2 нче дәрәҗәле иÑем',
-'math_sample' => 'Формуланы монда Ó©Ñтәгез',
-'math_tip' => 'Математик формула (LaTeX форматы)',
'nowiki_sample' => 'Форматланмаган текÑтны монда Ó©Ñтәгез',
'nowiki_tip' => 'Вики-форматлауны иÑәпкә алмау',
'image_sample' => 'МиÑал.jpg',
@@ -799,7 +810,7 @@ $2',
'noarticletext-nopermission' => 'Хәзерге вакытта бу биттә текÑÑ‚ юк.
Сез [[Special:Search/{{PAGENAME}}|бу иÑем кергән башка мәкаләләрне]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} көндәлекләрдәге Ñзмаларны] таба алаÑыз.</span>',
-'userpage-userdoesnotexist' => '«$1» иÑемле хиÑап ÑзмаÑÑ‹ юк. Сез чынлап та бу битне ÑÑарга ÑиÑÓ™ үзгәртергә телиÑезме?',
+'userpage-userdoesnotexist' => '«<nowiki>$1</nowiki>» иÑемле хиÑап ÑзмаÑÑ‹ юк. Сез чынлап та бу битне ÑÑарга ÑиÑÓ™ үзгәртергә телиÑезме?',
'userpage-userdoesnotexist-view' => '"$1" иÑемле хиÑап ÑзмаÑÑ‹ юк.',
'blocked-notice-logextract' => 'Бу кулланучы хәзергә тыелды.
Түбәндә Ñ‚Ñ‹ÑŽ көндәлегенең Ñоңгы Ñзу бирелгән:',
@@ -968,27 +979,27 @@ $3 күрÑәткән Ñәбәп: ''$2''",
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Бетерүләр көндәлегендә] аңлатмалар калдырылган булырга мөмкин.",
'rev-deleted-text-unhide' => "Битнең бу юрамаÑÑ‹ '''бетерелгән'''.
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Бетерүләр көндәлегендә] аңлатмалар калдырылган булырга мөмкин.
-Сез идарәче булу Ñәбәпле, [$1 бирелгән юраманы карый алаÑыз].",
+Теләгегез булÑа Ñез [$1 бирелгән юраманы карый алаÑыз].",
'rev-suppressed-text-unhide' => "Битнең бу юрамаÑÑ‹ '''Ñшерелгән'''.
[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Яшерүләр көндәлегендә] аңлатмалар бирелгән булырга мөмкин.
-Сез идарәче булу Ñәбәпле, [$1 бирелгән юраманы карый алаÑыз].",
+Теләгегез булÑа Ñез [$1 бирелгән юраманы карый алаÑыз].",
'rev-deleted-text-view' => "Битнең бу юрамаÑÑ‹ '''бетерелгән'''.
-Сез идарәче булу Ñәбәпле, аны карый алаÑыз. [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Бетерүләр көндәлегендә] аңлатмалар бирелгән булырга мөмкин.",
+Сез аны карый алаÑыз. [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Бетерүләр көндәлегендә] аңлатмалар бирелгән булырга мөмкин.",
'rev-suppressed-text-view' => "Битнең бу юрамаÑÑ‹ '''Ñшерелгән'''.
-Сез идарәче булу Ñәбәпле, аны карый алаÑыз. [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Яшерүләр көндәлегендә] аңлатмалар бирелгән булырга мөмкин.",
+Сез аны карый алаÑыз. [{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Яшерүләр көндәлегендә] аңлатмалар бирелгән булырга мөмкин.",
'rev-deleted-no-diff' => "Сез юрамалар араÑындагы аермаларны карый алмыйÑыз. Сәбәбе: кайÑыдыр юрама '''бетерелгән'''.
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Бетерүләр көндәлегендә] тулырак мәгълүмат табып була.",
'rev-suppressed-no-diff' => "Сез юрамалар араÑындагы үзгәртүләрне карый алмыйÑыз, чөнки аларның берÑе '''бетерелгән'''.",
'rev-deleted-unhide-diff' => "Битнең кайÑыдыр юрамаÑÑ‹ '''бетерелгән'''.
[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Бетерүләр көндәлегендә] тулырак мәгълүмат табып була.
-Сез идарәче булу Ñәбәпле, [$1 бирелгән юраманы карый алаÑыз]",
+Теләгегез булÑа Ñез [$1 бирелгән юраманы карый алаÑыз]",
'rev-suppressed-unhide-diff' => "Битнең кайÑыдыр юрамаÑÑ‹ '''Ñшерелгән'''.
[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} Яшерүләр көндәлегендә] тулырак мәгълүмат табып була.
-Сез идарәче булу Ñәбәпле, [$1 Ñшерелгән юраманы карый алаÑыз]",
+Теләгегез булÑа Ñез [$1 Ñшерелгән юраманы карый алаÑыз]",
'rev-deleted-diff-view' => "Бу юрамалар чагыштыруының бер юрамаÑÑ‹ '''бетерелгән'''.
-Сез идарәче буларак чагыштыруны карый алаÑыз, [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} бетерүләр көндәлегендә] тулырак мәгълүмат бирелгән булырга мөмкин.",
+Сез чагыштыруны карый алаÑыз, [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} бетерүләр көндәлегендә] тулырак мәгълүмат бирелгән булырга мөмкин.",
'rev-suppressed-diff-view' => "Бу юрамалар чагыштыруының бер юрамаÑÑ‹ '''Ñшерелгән'''.
-Сез идарәче буларак чагыштыруны карый алаÑыз, [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Ñшерүләр көндәлегендә] тулырак мәгълүмат бирелгән булырга мөмкин.",
+Сез чагыштыруны карый алаÑыз, [{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} Ñшерүләр көндәлегендә] тулырак мәгълүмат бирелгән булырга мөмкин.",
'rev-delundel' => 'күрÑәтү/Ñшерү',
'rev-showdeleted' => 'күрÑәтү',
'revisiondelete' => 'Битнең юрамаÑын бетерү / кайтару',
@@ -1059,6 +1070,7 @@ $3 күрÑәткән Ñәбәп: ''$2''",
'nextn' => 'чираттагы {{PLURAL:$1|$1}}',
'viewprevnext' => 'КүрÑәтелүе: ($1 {{int:pipe-separator}} $2) ($3)',
'searchmenu-legend' => 'Эзләү көйләнмәләре',
+'searchmenu-exists' => "'''Бу вики-проекта «[[:$1]]» иÑемле бит бар инде'''",
'searchmenu-new' => "'''«[[:$1]]» иÑемле Ñңа бит ÑÑау'''",
'searchhelp-url' => 'Help:Эчтәлек',
'searchmenu-prefix' => '[[Special:PrefixIndex/$1|Бу префикÑлы битләрне күрÑәтү]]',
@@ -1120,9 +1132,10 @@ $3 күрÑәткән Ñәбәп: ''$2''",
'changepassword' => 'СерÑүзне үзгәртү',
'prefs-skin' => 'Күренеш',
'skin-preview' => 'Ðлдан карау',
-'prefs-math' => 'Формулалар',
'datedefault' => 'Баштагы көйләнмәләр',
+'prefs-beta' => 'Бета-мөмкинчелекләр',
'prefs-datetime' => 'Дата һәм вакыт',
+'prefs-labs' => 'Сынаулы мөмкинчелекләр',
'prefs-personal' => 'ШәхÑи мәгълүматлар',
'prefs-rc' => 'Соңгы үзгәртүләр',
'prefs-watchlist' => 'Күзәтү иÑемлеге',
@@ -1144,8 +1157,6 @@ $3 күрÑәткән Ñәбәп: ''$2''",
'columns' => 'Баганалар:',
'searchresultshead' => 'Эзләү',
'resultsperpage' => 'Бер биткә туры килгән табылдыклар:',
-'contextlines' => 'Һәрбер табылдыкта күрÑәтелүче юллар Ñаны:',
-'contextchars' => 'Бер юлга туры килгән тамгалар:',
'stub-threshold' => '<a href="#" class="stub">ЯÑалма Ñылтамаларның</a> бизәлеше буенча чикләүләр (байтларда):',
'stub-threshold-disabled' => 'Ябылган',
'recentchangesdays' => 'Соңгы үзгәртүләрне күрÑәтүче көннәр Ñаны:',
@@ -1156,7 +1167,7 @@ $3 күрÑәткән Ñәбәп: ''$2''",
'savedprefs' => 'Көйләнмәләрегез Ñакланды.',
'timezonelegend' => 'Сәгать поÑÑÑ‹:',
'localtime' => 'Җирле вакыт',
-'timezoneuseserverdefault' => 'Сервернең көйләнмәләре кулланылÑын',
+'timezoneuseserverdefault' => 'Сервернең көйләнмәләре кулланылÑын ($1)',
'timezoneuseoffset' => 'Башка (күчерелүне күрÑәтегез)',
'timezoneoffset' => 'Күчерелү¹:',
'servertime' => 'Серверның вакыты:',
@@ -1192,7 +1203,7 @@ $3 күрÑәткән Ñәбәп: ''$2''",
'prefs-registration-date-time' => '$1',
'yourrealname' => 'Чын иÑем:',
'yourlanguage' => 'Тел:',
-'yourvariant' => 'Телнең төрләре:',
+'yourvariant' => 'Эчтәлекнең тел варианты:',
'yournick' => 'Яңа имзагыз:',
'prefs-help-signature' => 'БәхәÑлек битләрендә Ñезнең Ñзмаларыгызны калдыру «<nowiki>~~~~</nowiki>» тамгалары куелу нәтиҗәÑендә булырга тиеш.',
'badsig' => 'Имза Ð´Ó©Ñ€ÐµÑ Ñ‚Ò¯Ð³ÐµÐ». HTML теглары тикшерегез.',
@@ -1205,7 +1216,8 @@ $3 күрÑәткән Ñәбәп: ''$2''",
'prefs-help-gender' => 'Мәҗбүри түгел: Ул бары тик кайбер хатларда гына күренәчәк һәм бу мәгълүмат барлык кулланучыларга да билгеле булачак.',
'email' => 'Электрон почта',
'prefs-help-realname' => 'Чын иÑемегез (кирәкми): аны күрÑәтÑәгез, ул битне үзгәртүче күрÑәтү өчен файдалаÑчак.',
-'prefs-help-email' => 'Электрон почта адреÑын күрÑәтү катгый түгел, ләкин әгәрдә Ñез үзегезнең ÑерÑүзне онытÑагыз бу Ñезгә аны Ñңадан кайтарырга Ñрдәм итәчәк.',
+'prefs-help-email' => 'Электрон почта адреÑын күрÑәтү мәҗбүри түгел, ләкин әгәрдә Ñез үзегезнең ÑерÑүзне онытÑагыз бу Ñезгә аны Ñңадан кайтарырга Ñрдәм итәчәк.',
+'prefs-help-email-others' => 'Ул шулай ук Ñезгә башка кулланучылар белән аралашырга Ñрдәм итчәк, шул ук вакытта Ñезнең почтагызның юлламаÑÑ‹ күрÑәтелмәÑчәк.',
'prefs-help-email-required' => 'Электрон почта адреÑÑ‹ кирәк.',
'prefs-info' => 'Гомуми мәгълүмат',
'prefs-i18n' => 'ИнтернационализациÑ',
@@ -1299,6 +1311,7 @@ $3 күрÑәткән Ñәбәп: ''$2''",
'recentchanges-label-newpage' => 'Бу үзгәртү белән Ñңа бит төзелде',
'recentchanges-label-minor' => 'Бу кече үзгәртү',
'recentchanges-label-bot' => 'Бу үзгәртү бот белән Ñшләнгән иде',
+'recentchanges-label-unpatrolled' => 'Үзгәртүне әлегә тикшермәгәннәр',
'rcnote' => 'ÐÑта $4 $5 вакытынна Ñоңгы {{PLURAL:$2|1|$2}} көн Ñчендә булган Ñоңгы {{PLURAL:$1|1|$1}} үзгәртмә күрÑәтелә:',
'rcnotefrom' => "ÐÑтарак '''$2''' башлап ('''$1''' кадәр) үзгәртүләр күрÑәтелгән.",
'rclistfrom' => '$1 башлап Ñңа үзгәртүләрне күрÑәт',
@@ -1371,13 +1384,13 @@ $3 күрÑәткән Ñәбәп: ''$2''",
'minlength1' => 'Файлның иÑеме бер генә хәрефтән булÑа да торырга тиеш.',
'illegalfilename' => 'файлның иÑеме «$1» куллануга Ñрамаган Ñимволлардан тора. Зинһар, файлның иÑемен алыштырыгыз һәм Ñңадан куеп карагыз.',
'badfilename' => 'Файлның иÑеме $1 иÑеменә үзгәртелде.',
-'filetype-mime-mismatch' => 'Файлның кинәйтелмәÑе аның MIME-төренә туры килми.',
+'filetype-mime-mismatch' => 'Файлның кинәйтелмәÑе «.$1» аның MIME-төренә туры килми ($2).',
'filetype-badmime' => 'MIME-төре «$1» булган файллар, йөкләнмәÑчәк.',
'filetype-bad-ie-mime' => 'Файлны йөкләргә мөмкин түгел, чөнки Internet Explorer аны «$1» дип кабул итәчәк.',
'filetype-unwanted-type' => "'''\".\$1\"''' — тыелган файл төре.
{{PLURAL:\$3|Мөмкин булган файл төре булып|Мөмкин булган файл төре:}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' — тыелган файл төре.
-{{PLURAL:\$3|Киңәйтелгән файл төре булып|Киңәйтелгән файл төре:}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|тыелган файл төре|тыелган файллар төре}}.
+{{PLURAL:$3|Киңәйтелгән файл төре булып|Киңәйтелгән файл төрләре:}} $2.',
'filetype-missing' => "Файлның киңәйтелмәÑе юк ''(мәÑәлән,«.jpg»)''.",
'empty-file' => 'Сезнең тарафтан җибәрелгән файл буш.',
'file-too-large' => 'Сезнең тарафтан җибәрелгән файл артык зур.',
@@ -1401,10 +1414,6 @@ $3 күрÑәткән Ñәбәп: ''$2''",
'upload-options' => 'Йөкләү параметрлары',
'watchthisupload' => 'Бу файлны күзәтү',
'filewasdeleted' => 'Мондый иÑемле файл бетерелгән булган инде. Зинһар,Ñңадан йөкләү алдыннан $1 карагыз',
-'upload-wasdeleted' => "'''Игътибар: Сез бетерелгән файл урынына ÑңаÑын йөкләмәкче булаÑыз.'''
-
-Сезгә чыннан да бу файлны йөкләү кирәкме?
-Түбәндә файлның бетерү көндәлеге китерелә:",
'filename-bad-prefix' => "Файлның иÑеме '''«$1»''' дип башлана. Зинһар, файлны таÑвирлаучы иÑем бирегез.",
'filename-prefix-blacklist' => ' #<!-- ничек бар шулай калдырыгыз --> <pre>
# СинтакÑÐ¸Ñ Ñ‚Ó©Ð±Ó™Ð½Ð´Ó™Ð³ÐµÑ‡Ó™:
@@ -1459,7 +1468,7 @@ PICT # төрле
'filehist-filesize' => 'Файлның зурлыгы',
'filehist-comment' => 'ИÑкәрмә',
'filehist-missing' => 'Файл табылмады',
-'imagelinks' => 'Файлга Ñылтамалар',
+'imagelinks' => 'Файлны куллану',
'linkstoimage' => 'Бу файлга әлеге {{PLURAL:$1|бит|$1 бит}} Ñылтый:',
'nolinkstoimage' => 'Бу файлга Ñылтаган битләр юк.',
'duplicatesoffile' => '{{PLURAL:$1|Әлеге $1 файл }} аÑтагы файлның күчерелмәÑе булып тора ([[Special:FileDuplicateSearch/$2|тулырак]]):',
@@ -1524,7 +1533,8 @@ PICT # төрле
'statistics-users-active-desc' => '{{PLURAL:$1|$1 көн }} өчендә нинди дә булÑа үзгәртүләр керткән кулланучылар',
'statistics-mostpopular' => 'Иң күп каралучы битләр',
-'disambiguations' => 'Күп мәгънәле Ñүзләр турында битләр',
+'disambiguations' => 'Күп мәгънәле Ñүзләр турында битләр',
+'disambiguationspage' => 'Template:disambig',
'doubleredirects' => 'Икеләтә юнәлтүләр',
@@ -1623,10 +1633,11 @@ PICT # төрле
'sp-deletedcontributions-contribs' => 'кертем',
# Special:LinkSearch
-'linksearch' => 'Тышкы Ñылтамалар',
-'linksearch-pat' => 'Эзләү өчен үрнәк:',
-'linksearch-ns' => 'ИÑемнәр мәйданы:',
-'linksearch-ok' => 'Эзләү',
+'linksearch' => 'Тышкы Ñылтамалар',
+'linksearch-pat' => 'Эзләү өчен үрнәк:',
+'linksearch-ns' => 'ИÑемнәр мәйданы:',
+'linksearch-ok' => 'Эзләү',
+'linksearch-line' => '$2 мәкаләÑеннән $1 мәкаләгә Ñылтама',
# Special:ListUsers
'listusers-submit' => 'КүрÑәтү',
@@ -1673,10 +1684,8 @@ PICT # төрле
'nowatchlist' => 'Күзәтү иÑемлегегездә битләр юк.',
'watchnologin' => 'Кермәдегез',
'watchnologintext' => 'Күзәтү иÑемлегегезне үзгәртү өчен Ñез [[Special:UserLogin|керергә]] тиешÑез.',
-'addedwatch' => 'Күзәтү иÑемлегенә Ó©Ñтәгән',
'addedwatchtext' => "\"[[:\$1]]\" бите [[Special:Watchlist|күзәтү иÑемлегегезгә]] Ó©Ñтәлде.
Бу биттә һәм аның бәхәÑлегендә барлык булачак үзгәртүләр шунда күрÑәтелер, һәм, [[Special:RecentChanges|Ñоңгы үзгәртүләр]] иÑемлегендә бу битне җиңелрәк табу өчен, ул '''калын мәтен''' белән күрÑәтелер.",
-'removedwatch' => 'Күзәтү иÑемлегеннән бетерелгән',
'removedwatchtext' => '«[[:$1]]» бите [[Special:Watchlist|Ñезнең күзәтү иÑемлегеннән]] бетерелде.',
'watch' => 'Күзәтү',
'watchthispage' => 'Бу битне күзәтү',
@@ -1711,17 +1720,20 @@ $NEWPAGE
Бу биткә кермәÑәгез, аның башка үзгәртүләре турында хат җибәрелмәÑчәк. Шулай ук Ñез күзәтү иÑемлегегездә булган битләр өчен хәбәр бирү флагын алып ÐºÑƒÑ Ð°Ð»Ð°Ñыз.
- {{SITENAME}} хәбәр бирү ÑиÑтемаÑÑ‹
+ {{grammar:genitive|{{SITENAME}}}} хәбәр бирү ÑиÑтемаÑÑ‹
--
+Хәбәр итүләр көйләүләрен үзгәртү:
+{{canonicalurl:{{#special:Preferences}}}}
+
Күзәтү иÑемлеге көйләүләрен үзгәртү:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Битне Ñезнең күзәтү иÑемлегездән бетерү:
$UNWATCHURL
Элемтә һәм Ñрдәм:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Битне бетерү',
@@ -1737,7 +1749,7 @@ $UNWATCHURL
Зинһар, моны чыннан да Ñшләргә теләгәнегезне, моның нәтиҗәләрен аңлаганыгызны һәм [[{{MediaWiki:Policy-url}}]] бүлегендәге кагыйдәләр буенча Ñшләгәнегезне раÑлагыз.',
'actioncomplete' => 'Гамәл башкарган',
'actionfailed' => 'Эш башкарылмаган',
-'deletedtext' => '«<nowiki>$1</nowiki>» бетерелгән инде.<br />
+'deletedtext' => '«$1» бетерелгән инде.<br />
Соңгы бетерелгән битләрне күрер өчен, $2 карагыз.',
'deletedarticle' => '«[[$1]]» бетерелде',
'suppressedarticle' => '«[[$1]]» күрÑәтелмәде',
@@ -1773,7 +1785,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'Яклау бетү вакыты Ð´Ó©Ñ€ÐµÑ Ñ‚Ò¯Ð³ÐµÐ».',
'protect_expiry_old' => 'Яклау бетү көне узган көнгә куелган.',
'protect-unchain-permissions' => 'Ó¨Ñтәмә Ñклау чараларын ачу',
-'protect-text' => "Биредә Ñез '''<nowiki>$1</nowiki>''' бите өчен Ñклау дәрәҗәÑене карый һәм үзгәрә алаÑыз.",
+'protect-text' => "Биредә Ñез '''$1''' бите өчен Ñклау дәрәҗәÑене карый һәм үзгәрә алаÑыз.",
'protect-locked-access' => "ХиÑап Ñзмагызга битләрнең Ñклау дәрәҗәÑен үзгәртү өчен хак җитми. '''$1''' битенең хәзерге көйләүләре:",
'protect-cascadeon' => 'Бу бит Ñкланган, чөнки ул әлеге каÑкадлы Ñклаулы {{PLURAL:$1|биткә|битләргә}} керә. Сез бу битнең Ñклау дәрәҗәÑен үзгәртә алаÑыз, әмма каÑкадлы Ñклау үзгәрмәÑчәк.',
'protect-default' => 'ЯклауÑыз',
@@ -1834,9 +1846,11 @@ $1',
'undelete-show-file-submit' => 'Әйе',
# Namespace form on various pages
-'namespace' => 'ИÑемнәр мәйданы:',
-'invert' => 'КиреÑен Ñайлау',
-'blanknamespace' => '(Төп)',
+'namespace' => 'ИÑемнәр мәйданы:',
+'invert' => 'КиреÑен Ñайлау',
+'namespace_association' => 'Бәйле тирәлек',
+'tooltip-namespace_association' => 'Сайланган бәйле иÑемнәр тирәлегенә караган мәкаләләр иÑемлеген кабызу өчен Ñлеге урынга тамганы куегыз',
+'blanknamespace' => '(Төп)',
# Contributions
'contributions' => 'Кулланучының кертеме',
@@ -1850,6 +1864,7 @@ $1',
'sp-contributions-newbies' => 'Яңа хиÑап Ñзмаларыннан ÑÑалган кертемне генә карау',
'sp-contributions-newbies-sub' => 'Яңа хиÑап Ñзмалары өчен',
'sp-contributions-blocklog' => 'тыю көндәлеге',
+'sp-contributions-uploads' => 'йөкләүләр',
'sp-contributions-logs' => 'көндәлекләр',
'sp-contributions-talk' => 'бәхәÑ',
'sp-contributions-search' => 'Кертемне Ñзләү',
@@ -1878,7 +1893,6 @@ $1',
'blockip' => 'Кулланучыны тыю',
'blockip-title' => 'Кулланучыны тыю',
'blockip-legend' => 'Кулланучыны тыю',
-'ipaddress' => 'IP адреÑÑ‹:',
'ipadressorusername' => 'IP адреÑÑ‹ Ñки кулланучы иÑеме:',
'ipbexpiry' => 'Бетә:',
'ipbreason' => 'Сәбәп:',
@@ -1903,7 +1917,6 @@ $1',
'unblockip' => 'Кулланучыны тыюдан азат итү',
'ipusubmit' => 'Бу тыюны туктату',
'ipblocklist' => 'Тыелган кулланучылар',
-'ipblocklist-username' => 'кулланучы иÑеме Ñки IP адреÑÑ‹:',
'ipblocklist-submit' => 'Эзләү',
'infiniteblock' => 'билгеле бер вакытÑыз',
'blocklink' => 'Ñ‚Ñ‹ÑŽ',
@@ -1979,8 +1992,9 @@ $1',
# Namespace 8 related
'allmessages' => 'СиÑтема хәбәрләре',
'allmessagesname' => 'ИÑем',
+'allmessagesdefault' => 'Баштан ук куелган текÑ',
'allmessagestext' => 'Бу иÑемлек MediaWiki иÑемнәр мәйданында булган ÑиÑтема хәбәрләренең иÑемлеге.
-Гомуми MediaWiki локализациÑÑендә катнашырга теләÑәгез, зинһар [http://www.mediawiki.org/wiki/Localisation MediaWiki ЛокализациÑÑе] һәм [http://translatewiki.net translatewiki.net] Ñәхифәләрне кулланыгыз.',
+Гомуми MediaWiki локализациÑÑендә катнашырга теләÑәгез, зинһар [//www.mediawiki.org/wiki/Localisation MediaWiki ЛокализациÑÑе] һәм [//translatewiki.net translatewiki.net] Ñәхифәләрне кулланыгыз.',
'allmessages-filter-legend' => 'Фильтр',
'allmessages-filter-unmodified' => 'Үзгәртелмәгән',
'allmessages-filter-all' => 'БарыÑÑ‹',
@@ -2091,9 +2105,6 @@ $1',
# Spam protection
'spamprotectiontitle' => 'Спам фильтры',
-# Info page
-'numtalkedits' => 'Төзәтүләр Ñаны (Ð±Ó™Ñ…Ó™Ñ Ð±Ð¸Ñ‚Ðµ): $1',
-
# Skin names
'skinname-standard' => 'КлаÑÑик',
'skinname-nostalgia' => 'ИÑкә алу',
@@ -2105,21 +2116,6 @@ $1',
'skinname-modern' => 'Замана',
'skinname-vector' => 'Сызымлы',
-# Math options
-'mw_math_png' => 'Һәрвакыт PNG белән бәйләү',
-'mw_math_simple' => 'Гади очракларда HTML, ÑиÑÓ™ PNG кулланылÑын',
-'mw_math_html' => 'Мөмкин булÑа HTML, ÑиÑÓ™ PNG кулланылÑын',
-'mw_math_source' => 'ТеХ билгеләнешендә калдырылÑын (текÑтлы браузерлар өчен)',
-'mw_math_modern' => 'Бүгенге браузерлар өчен кулланылÑын',
-'mw_math_mathml' => 'Мөмкин булÑа MathML кулланылÑын (ÑкÑперименталь)',
-
-# Math errors
-'math_failure' => 'Укый алмадым',
-'math_unknown_error' => 'беленмәгән хата',
-'math_unknown_function' => 'билгеÑез функциÑ',
-'math_lexing_error' => 'лекÑик хата',
-'math_syntax_error' => 'ÑинтакÑик хата',
-
# Patrolling
'markaspatrolledtext' => 'Бу мәкаләне тикшерелгән дип тамгалау',
'markedaspatrolled' => 'Тикшерелгән дип тамгаланды',
@@ -2146,16 +2142,15 @@ $1',
'nextdiff' => 'Чираттагы үзгәртү →',
# Media information
-'imagemaxsize' => "РәÑемнең зурлыгына чикләүләр:<br />''(таÑвирлау бите өчен)''",
-'thumbsize' => 'РәÑемнең кечерәйтелгән юрамаÑÑ‹ өчен:',
-'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3{{PLURAL:$1|бит|битләр}}',
-'file-info' => 'файл зурлыгы: $1, MIME-тип: $2',
-'file-info-size' => '$1 × $2 нокта, файлның зурлыгы: $3, MIME тибы: $4',
-'file-nohires' => '<small>Югары ачыклык белән юрама юк.</small>',
-'svg-long-desc' => 'SVG файлы, шартлы $1 × $2 нокта, файлның зурлыгы: $3',
-'show-big-image' => 'Тулы ачыклык',
-'show-big-image-thumb' => '<small>Ðлдан карау зурлыгы: $1 × $2 нокта</small>',
+'imagemaxsize' => "РәÑемнең зурлыгына чикләүләр:<br />''(таÑвирлау бите өчен)''",
+'thumbsize' => 'РәÑемнең кечерәйтелгән юрамаÑÑ‹ өчен:',
+'widthheight' => '$1 × $2',
+'widthheightpage' => '$1 × $2, $3{{PLURAL:$1|бит|битләр}}',
+'file-info' => 'файл зурлыгы: $1, MIME-тип: $2',
+'file-info-size' => '$1 × $2 нокта, файлның зурлыгы: $3, MIME тибы: $4',
+'file-nohires' => '<small>Югары ачыклык белән юрама юк.</small>',
+'svg-long-desc' => 'SVG файлы, шартлы $1 × $2 нокта, файлның зурлыгы: $3',
+'show-big-image' => 'Тулы ачыклык',
# Special:NewFiles
'newimages' => 'Яңа Ñүрәтләр җыелмаÑÑ‹',
@@ -2182,7 +2177,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Киңлек',
@@ -2200,7 +2201,6 @@ $1',
'exif-compressedbitsperpixel' => 'КыÑылудан Ñоң Ñ‚Ó©Ñнең тирәнлеге',
'exif-pixelydimension' => 'РәÑемнең киңлеге',
'exif-pixelxdimension' => 'РәÑемнең биеклеге',
-'exif-makernote' => 'Җитештерүче турында Ó©Ñтәмә мәгълүматлар',
'exif-usercomment' => 'Ó¨Ñтәмә җавап',
'exif-relatedsoundfile' => 'Тавыш файлы җавабы',
'exif-datetimeoriginal' => 'Чын вакыты',
@@ -2215,7 +2215,6 @@ $1',
'exif-exposureprogram' => 'ЭкÑÐ¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¼Ð°ÑÑ‹',
'exif-spectralsensitivity' => 'Спектраль Ñизүчәнлек',
'exif-isospeedratings' => 'ISO Ñктылык Ñизүчәнлеге',
-'exif-oecf' => 'OECF (оптоÑлектрик күчерү коÑффициенты)',
'exif-shutterspeedvalue' => 'APEX Ñаклау',
'exif-aperturevalue' => 'APEX диафрагма',
'exif-brightnessvalue' => 'APEX Ñктылык',
@@ -2229,7 +2228,6 @@ $1',
'exif-focallength-format' => '$1 мм',
'exif-subjectarea' => 'Төшерү җиÑеменең урнашуы һәм мәйданы',
'exif-flashenergy' => 'Яктылык ÑнергиÑÑе',
-'exif-spatialfrequencyresponse' => 'Тирәлек тырышы',
'exif-focalplanexresolution' => 'X фокаль ÑÑÑылык киңәйтелүе',
'exif-focalplaneyresolution' => 'Y фокаль ÑÑÑылык киңәйтелүе',
'exif-focalplaneresolutionunit' => 'Фокаль ÑÑÑылык киңәйтелүен иÑәпләү берәмлеге',
@@ -2238,7 +2236,6 @@ $1',
'exif-sensingmethod' => 'СенÑор төре',
'exif-filesource' => 'Файлның чыганагы',
'exif-scenetype' => 'Тирәлекнең төре',
-'exif-cfapattern' => 'Ð¢Ó©Ñ Ñ„Ð¸Ð»ÑŒÑ‚Ñ€Ñ‹Ð½Ñ‹Ò£ төре',
'exif-customrendered' => 'Ó¨Ñтәмә үзгәртү',
'exif-exposuremode' => 'ЭкÑÐ¿Ð¾Ð·Ð¸Ñ†Ð¸Ñ Ñайлау режимы',
'exif-whitebalance' => 'Ðк Ñ‚Ó©Ñнең баланÑÑ‹',
@@ -2328,15 +2325,13 @@ $1',
# External editor support
'edit-externally' => 'Бу файлны тышкы кушымтаны кулланып үзгәртү',
-'edit-externally-help' => '(тулырак мәгълүмат өчен [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] битен карагыз)',
+'edit-externally-help' => '(тулырак мәгълүмат өчен [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] битен карагыз)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Барлык',
-'imagelistall' => 'барлык',
-'watchlistall2' => 'барлык',
-'namespacesall' => 'барлык',
-'monthsall' => 'барлык',
-'limitall' => 'барлык',
+'watchlistall2' => 'барлык',
+'namespacesall' => 'барлык',
+'monthsall' => 'барлык',
+'limitall' => 'барлык',
# Delete conflict
'recreate' => 'Яңадан ÑÑау',
@@ -2407,7 +2402,8 @@ $1',
'specialpages' => 'МахÑÑƒÑ Ð±Ð¸Ñ‚Ð»Ó™Ñ€',
'specialpages-note' => '----
* Гади махÑÑƒÑ Ð±Ð¸Ñ‚Ð»Ó™Ñ€.
-* <strong class="mw-specialpagerestricted">Чикләнелгән гади махÑÑƒÑ Ð±Ð¸Ñ‚Ð»Ó™Ñ€</strong>',
+* <strong class="mw-specialpagerestricted">Чикләнелгән махÑÑƒÑ Ð±Ð¸Ñ‚Ð»Ó™Ñ€.</strong>
+* <span class="mw-specialpagecached">Кешланган махÑÑƒÑ Ð±Ð¸Ñ‚Ð»Ó™Ñ€.</span>',
'specialpages-group-maintenance' => 'Техник карау хиÑапнамәÑе',
'specialpages-group-other' => 'Башка махÑÑƒÑ Ð±Ð¸Ñ‚Ð»Ó™Ñ€',
'specialpages-group-login' => 'Керү / теркәлү',
diff --git a/languages/messages/MessagesTt_latn.php b/languages/messages/MessagesTt_latn.php
index f90fbfeb..7c98eeee 100644
--- a/languages/messages/MessagesTt_latn.php
+++ b/languages/messages/MessagesTt_latn.php
@@ -61,7 +61,7 @@ $dateFormats = array(
);
$magicWords = array(
- 'redirect' => array( '0', '#yünältü', '#REDIRECT' ),
+ 'redirect' => array( '0', '#YÜNÄLTÜ', '#REDIRECT' ),
'notoc' => array( '0', '__ETYUQ__', '__NOTOC__' ),
'forcetoc' => array( '0', '__ETTIQ__', '__FORCETOC__' ),
'toc' => array( '0', '__ET__', '__TOC__' ),
@@ -221,14 +221,7 @@ $messages = array(
'index-category' => 'İndekslanğan bitlär',
'noindex-category' => 'İndekslanmağan bitlär',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => '«MediaWiki» uñışlı quyıldı.',
-'mainpagedocfooter' => "Bu wiki turında mäğlümatnı [http://meta.wikimedia.org/wiki/Yärdäm:Eçtälek biredä] tabıp bula.
-
-== Qayber faydalı resurslar ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Köylänmälär isemlege (ing.)];
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki turında yış birelgän sorawlar häm cawaplar (ing.)];
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki'nıñ yaña versiäläre turında xäbärlär yazdırıp alu].",
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Taswirlama',
'article' => 'Mäqälä',
@@ -280,7 +273,6 @@ $messages = array(
'history' => 'Bitneñ tarixı',
'history_short' => 'Tarix',
'updatedmarker' => 'soñğı kerüemnän soñ yañartılğan',
-'info_short' => 'Mäğlümat',
'printableversion' => 'Bastıru versiäse',
'permalink' => 'Daimi sıltama',
'print' => 'Bastıru',
@@ -471,12 +463,11 @@ Soraw: $2',
'protectedpagetext' => 'Bu bit üzgärtü öçen yabıq.',
'viewsourcetext' => 'Sez bu bitneñ başlanğıç tekstın qarıy häm küçerä alasız:',
'protectedinterface' => 'Bu bittä programma interfeysı xäbärläre bar. Vandalizmğa qarşı köräş säbäple, bu bitne üzgärtü tıyıla.',
-'editinginterface' => "'''İğtibar:''' Sez MediaWiki sistemasınıñ interfeys biten üzgärtäsez. Bu başqa qullanuçılarğa da tä'sir itäçäk. Tärcemä öçen [http://translatewiki.net/wiki/Main_Page?setlang=tt-latn translatewiki.net] lokalizatsiäläw proyektın qullanığız.",
+'editinginterface' => "'''İğtibar:''' Sez MediaWiki sistemasınıñ interfeys biten üzgärtäsez. Bu başqa qullanuçılarğa da tä'sir itäçäk. Tärcemä öçen [//translatewiki.net/wiki/Main_Page?setlang=tt-latn translatewiki.net] lokalizatsiäläw proyektın qullanığız.",
'sqlhidden' => '(SQL-soraw yäşerelgän)',
'cascadeprotected' => 'Bu bit üzgärtülärdän saqlanğan, çönki ul kaskadlı saqlaw qabul itelgän {{PLURAL:$1|bitkä|bitlärgä}} östälgän:
$2',
'namespaceprotected' => "'''$1''' isem kiñlegendäge bitlärne üzgärtü öçen sezneñ röxsätegez yuq.",
-'customcssjsprotected' => 'Sez bu bitne üzgärtä almıysız, çönki anda başqa qullanıçınıñ köylänmäläre bar.',
'ns-specialprotected' => 'Maxsus bitlärne üzgärtep bulmıy.',
'titleprotected' => "Bu isem belän bit yasaw [[User:$1|$1]] tarafınnan tıyılğan.
Ul kürsätkän säbäp: ''$2''.",
@@ -529,7 +520,7 @@ Zinhar, başqa isem saylağız.',
'nosuchuser' => '$1 isemle qullanuçı yuq.
Qullanuçı isemeneñ döreslege registrğa bäyle.
Yazılışığıznı tikşeregez yäki [[Special:UserLogin/signup|yaña xisap yazması tözegez]].',
-'nosuchusershort' => '<nowiki>$1</nowiki> isemle qullanuçı yuq. Yazılışığıznı tikşeregez.',
+'nosuchusershort' => '$1 isemle qullanuçı yuq. Yazılışığıznı tikşeregez.',
'nouserspecified' => 'Sez terkäw ismegezne kürsätergä tieşsez.',
'login-userblocked' => 'Bu qullanuçı tıyıldı. Kerü tıyılğan.',
'wrongpassword' => 'Yazılğan sersüz döres tügel. Tağın ber tapqır sınağız.',
@@ -568,7 +559,7 @@ Yañadan qabatlağançı beraz kötüegez sorala.',
'loginlanguagelabel' => 'Tel: $1',
'suspicious-userlogout' => 'Sezneñ eşçänlekne beterü sorawığız kire qağıldı, çönki ul yalğış brauzer yäisä keşlawçı proksi aşa cibärelerge mömkin.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Sersüzne üzgärtü',
'resetpass_announce' => 'Sez elektron poçta aşa waqıtlıça birelgän sersüz yärdämendä kerdegez. Sistemağa kerüne tögälläw öçen yaña sersüz tözegez.',
'resetpass_text' => '<!-- Monda tekst östägez -->',
@@ -597,8 +588,6 @@ Sez sersüzegezne üzgärtkän yäisä yaña waqıtlı sersüz soratqan bulırğ
'extlink_tip' => 'Tışqı sıltama (http:// alquşımçası turında onıtmağız)',
'headline_sample' => 'BaÅŸisem',
'headline_tip' => '2 nçe däräcäle isem',
-'math_sample' => 'Formulanı monda östägez',
-'math_tip' => 'Matematik formula (LaTeX formatı)',
'nowiki_sample' => 'Formatlanmağan tekstnı monda östägez',
'nowiki_tip' => 'Wiki-formatlawnı isäpkä almaw',
'image_sample' => 'Misal.jpg',
@@ -684,7 +673,7 @@ yäki '''[{{fullurl:{{FULLPAGENAME}}|action=edit}} şuşındıy isemle yaña bit
'noarticletext-nopermission' => 'Xäzerge waqıtta bu bittä tekst yuq.
Sez [[Special:Search/{{PAGENAME}}|bu isem kergän başqa mäqälälärne]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} köndäleklärdäge yazmalarnı] taba alasız.</span>',
-'userpage-userdoesnotexist' => '«$1» isemle xisap yazması yuq. Sez çınlap ta bu bitne yasarğa yäisä üzgärtergä telisezme?',
+'userpage-userdoesnotexist' => '«<nowiki>$1</nowiki>» isemle xisap yazması yuq. Sez çınlap ta bu bitne yasarğa yäisä üzgärtergä telisezme?',
'userpage-userdoesnotexist-view' => '"$1" isemle xisap yazması yuq.',
'blocked-notice-logextract' => 'Bu qullanuçı xäzergä tıyıldı.
Tübändä tıyu köndälegeneñ soñğı yazu birelgän:',
@@ -988,7 +977,6 @@ Barlıq alannarda (bäxäs bitläre, ürnäklär, h.b.) ezläw öçen ''all'' sÃ
'changepassword' => 'Sersüzne üzgärtü',
'prefs-skin' => 'Küreneş',
'skin-preview' => 'Aldan qaraw',
-'prefs-math' => 'Formulalar',
'datedefault' => 'Baştağı köylänmälär',
'prefs-datetime' => 'Data häm waqıt',
'prefs-personal' => 'Şäxsi mäğlümatlar',
@@ -1012,8 +1000,6 @@ Barlıq alannarda (bäxäs bitläre, ürnäklär, h.b.) ezläw öçen ''all'' sÃ
'columns' => 'BaÄŸanalar:',
'searchresultshead' => 'Ezläw',
'resultsperpage' => 'Ber bitkä turı kilgän tabıldıqlar:',
-'contextlines' => 'Härber tabıldıqta kürsätelüçe yullar sanı:',
-'contextchars' => 'Ber yulğa turı kilgän tamğalar:',
'stub-threshold' => '<a href="#" class="stub">Yasalma sıltamalarnıñ</a> bizäleşe buyınça çikläwlär (baytlarda):',
'stub-threshold-disabled' => 'Yabılğan',
'recentchangesdays' => 'Soñğı üzgärtülärne kürsätüçe könnär sanı:',
@@ -1268,10 +1254,6 @@ Faylnı mäqälägä yökläw öçen Sez menä bu ürnäklärne qullana alasız:
'upload-options' => 'Yökläw parametrları',
'watchthisupload' => 'Bu faylnı küzätü',
'filewasdeleted' => 'Mondıy isemle fayl beterelgän bulğan inde. Zinhar,yañadan yökläw aldınnan $1 qarağız',
-'upload-wasdeleted' => "'''İğtibar: Sez beterelgän fayl urınına yañasın yöklämäkçe bulasız.'''
-
-Sezgä çınnan da bu faylnı yökläw kiräkme?
-Tübändä faylnıñ beterü köndälege kiterelä:",
'filename-bad-prefix' => "Faylnıñ iseme '''«$1»''' dip başlana. Zinhar, faylnı taswirlawçı isem biregez.",
'filename-prefix-blacklist' => ' #<!-- niçek bar şulay qaldırığız --> <pre>
# Sintaksis töbändägeçä:
@@ -1536,10 +1518,8 @@ Asta [[Special:UnusedCategories|qullanılmağan törkemnär]] kärsätelgän.
'nowatchlist' => 'Küzätü isemlegegezdä bitlär yuq.',
'watchnologin' => 'Kermädegez',
'watchnologintext' => 'Küzätü isemlegegezne üzgärtü öçen, sez [[Special:UserLogin|kerergä]] tieşsez.',
-'addedwatch' => 'Küzätü isemlegenä östägän',
'addedwatchtext' => "\"[[:\$1]]\" bite [[Special:Watchlist|küzätü isemlegegezgä]] östälde.
Bu bittä häm anıñ bäxäslegendä barlıq bulaçaq üzgärtülär şunda kürsäteler, häm, [[Special:RecentChanges|soñğı üzgärtülär]] isemlegendä bu bitne ciñelräk tabu öçen, ul '''qalın mäten''' belän kürsäteler.",
-'removedwatch' => 'Küzätü isemlegennän beterelgän',
'removedwatchtext' => '«[[:$1]]» bite [[Special:Watchlist|sezneñ küzätü isemlegennän]] beterelde.',
'watch' => 'Küzätü',
'watchthispage' => 'Bu bitne küzätü',
@@ -1577,13 +1557,13 @@ Bu bitkä kermäsägez, anıñ baÅŸqa üzgärtüläre turında xat cibärelmäyÃ
--
Küzätü isemlege köyläwlären üzgärtü:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Bitne sezneñ küzätü isemlegezdän beterü:
$UNWATCHURL
Elemtä häm yärdäm:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Bitne beterü',
@@ -1597,7 +1577,7 @@ Elemtä häm yärdäm:
'confirmdeletetext' => 'Sez bu bitneñ (yäki räsemneñ) tulısınça beterelüen soradığız.
Zinhar, monı çınnan da eşlärgä telägänegezne, monıñ näticälären añlağanığıznı häm [[{{MediaWiki:Policy-url}}]] bülegendäge qäğeydälär buyınça eşlägänegezne raslağız.',
'actioncomplete' => 'Ğämäl başqarğan',
-'deletedtext' => '«<nowiki>$1</nowiki>» beterelgän inde.<br />
+'deletedtext' => '«$1» beterelgän inde.<br />
Soñğı beterelgän bitlärne kürer öçen, $2 qarağız.',
'deletedarticle' => '«[[$1]]» beterelde',
'dellogpage' => 'Beterü köndälege',
@@ -1633,7 +1613,7 @@ Soñğı beterelgän bitlärne kürer öçen, $2 qarağız.',
'protect_expiry_invalid' => 'Yaqlaw betü waqıtı döres tügel.',
'protect_expiry_old' => 'Yaqlaw betü köne uzğan köngä quyılğan.',
'protect-unchain-permissions' => 'Östämä yaqlaw çaraların açu',
-'protect-text' => "Biredä sez '''<nowiki>$1</nowiki>''' bite öçen yaqlaw däräcäsene qarıy häm üzgärä alasız.",
+'protect-text' => "Biredä sez '''$1''' bite öçen yaqlaw däräcäsene qarıy häm üzgärä alasız.",
'protect-locked-access' => "Xisap yazmağızğa bitlärneñ yaqlaw däräcäsen üzgärtü öçen xaq citmi. '''$1''' biteneñ xäzerge köyläwläre:",
'protect-cascadeon' => 'Bu bit yaqlanğan, çönki ul älege kaskadlı yaqlawlı {{PLURAL:$1|bitkä|bitlärgä}} kerä. Sez bu bitneñ yaqlaw däräcäsen üzgärtä alasız, ämma kaskadlı yaqlaw üzgärmäyäçäk.',
'protect-default' => 'Yaqlawsız',
@@ -1731,7 +1711,6 @@ $1',
'blockip' => 'Qullanuçını tıyu',
'blockip-title' => 'Qullanuçını tıyu',
'blockip-legend' => 'Qullanuçını tıyu',
-'ipaddress' => 'IP adresı:',
'ipadressorusername' => 'IP adresı yäki qullanuçı iseme:',
'ipbexpiry' => 'Betä:',
'ipbreason' => 'Säbäp:',
@@ -1756,7 +1735,6 @@ $1',
'unblockip' => 'Qullanuçını tıyudan azat itü',
'ipusubmit' => 'Bu tıyunı tuqtatu',
'ipblocklist' => 'Tıyılğan IP adresları häm qullanuçı isemnäre',
-'ipblocklist-username' => 'qullanuçı iseme yäki IP adresı:',
'ipblocklist-submit' => 'Ezläw',
'infiniteblock' => 'bilgele ber waqıtsız',
'blocklink' => 'tıyu',
@@ -1844,7 +1822,7 @@ Zinhar başqa isem saylağız.',
'allmessagesdefault' => 'Töpcay yazma',
'allmessagescurrent' => 'Eligi yazma',
'allmessagestext' => 'Bu isemlek MediaWiki isemnär mäydanında bulğan sistema xäbärläreneñ isemlege.
-Ğomumi MediaWiki lokalizatsiäsendä qatnaşırğa teläsägez, zinhar [http://www.mediawiki.org/wiki/Localisation MediaWiki Lokalizatsiäse] häm [http://translatewiki.net translatewiki.net] säxifälärne qullanığız.',
+Ğomumi MediaWiki lokalizatsiäsendä qatnaşırğa teläsägez, zinhar [//www.mediawiki.org/wiki/Localisation MediaWiki Lokalizatsiäse] häm [//translatewiki.net translatewiki.net] säxifälärne qullanığız.',
'allmessages-filter-legend' => 'Filtr',
'allmessages-filter-unmodified' => 'Üzgärtelmägän',
'allmessages-filter-all' => 'Barısı',
@@ -1947,9 +1925,6 @@ Zinhar başqa isem saylağız.',
# Spam protection
'spamprotectiontitle' => 'Spam filtrı',
-# Info page
-'infosubtitle' => 'Bit turında',
-
# Skin names
'skinname-standard' => 'Klassik',
'skinname-nostalgia' => 'İskä alu',
@@ -1961,21 +1936,6 @@ Zinhar başqa isem saylağız.',
'skinname-modern' => 'Zamana',
'skinname-vector' => 'Sızımlı',
-# Math options
-'mw_math_png' => 'Härwaqıt PNG belän bäyläw',
-'mw_math_simple' => 'Ğädi oçraqlarda HTML, yäisä PNG qullanılsın',
-'mw_math_html' => 'Mömkin bulsa HTML, yäisä PNG qullanılsın',
-'mw_math_source' => 'TeX bilgeläneşendä qaldırılsın (tekstlı brauzerlar öçen)',
-'mw_math_modern' => 'Bügenge brauzerlar öçen qullanılsın',
-'mw_math_mathml' => 'Mömkin bulsa MathML qullanılsın (eksperimental)',
-
-# Math errors
-'math_failure' => 'Uqıy almadım',
-'math_unknown_error' => 'belenmägän xata',
-'math_unknown_function' => 'bilgesez funksiä',
-'math_lexing_error' => 'leksik xata',
-'math_syntax_error' => 'sintaksik xata',
-
# Patrolling
'markaspatrolledtext' => 'Bu mäqäläne tikşerelgän dip tamğalaw',
'markedaspatrolled' => 'Tikşerelgän dip tamğalandı',
@@ -2002,16 +1962,15 @@ $1',
'nextdiff' => 'Çirattağı üzgärtü →',
# Media information
-'imagemaxsize' => "Räsemneñ zurlığına çikläwlär:<br />''(taswirlaw bite öçen)''",
-'thumbsize' => 'Räsemneñ keçeräytelgän yuraması öçen:',
-'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, $3{{PLURAL:$1|bit|bitlär}}',
-'file-info' => 'fayl zurlığı: $1, MIME-tip: $2',
-'file-info-size' => '$1 × $2 noqta, faylnıñ zurlığı: $3, MIME tibı: $4',
-'file-nohires' => '<small>Yuğarı açıqlıq belän yurama yuq.</small>',
-'svg-long-desc' => 'SVG faylı, şartlı $1 × $2 noqta, faylnıñ zurlığı: $3',
-'show-big-image' => 'Tulı açıqlıq',
-'show-big-image-thumb' => '<small>Aldan qaraw zurlığı: $1 × $2 noqta</small>',
+'imagemaxsize' => "Räsemneñ zurlığına çikläwlär:<br />''(taswirlaw bite öçen)''",
+'thumbsize' => 'Räsemneñ keçeräytelgän yuraması öçen:',
+'widthheight' => '$1 × $2',
+'widthheightpage' => '$1 × $2, $3{{PLURAL:$1|bit|bitlär}}',
+'file-info' => 'fayl zurlığı: $1, MIME-tip: $2',
+'file-info-size' => '$1 × $2 noqta, faylnıñ zurlığı: $3, MIME tibı: $4',
+'file-nohires' => '<small>Yuğarı açıqlıq belän yurama yuq.</small>',
+'svg-long-desc' => 'SVG faylı, şartlı $1 × $2 noqta, faylnıñ zurlığı: $3',
+'show-big-image' => 'Tulı açıqlıq',
# Special:NewFiles
'newimages' => 'Yaña sürätlär cıyılması',
@@ -2039,7 +1998,13 @@ Yulnıñ berençe sıltaması quyma öçen tıyılğan räsemgä sıltama bulır
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Kiñlek',
@@ -2057,7 +2022,6 @@ Yulnıñ berençe sıltaması quyma öçen tıyılğan räsemgä sıltama bulır
'exif-compressedbitsperpixel' => 'Qısıludan soñ tösneñ tiränlege',
'exif-pixelydimension' => 'Räsemneñ tulı bieklege',
'exif-pixelxdimension' => 'Räsemneñ tulı kiñlege',
-'exif-makernote' => 'Citeşterüçe turında östämä mäğlümatlar',
'exif-usercomment' => 'Östämä cawap',
'exif-relatedsoundfile' => 'Tawış faylı cawabı',
'exif-datetimeoriginal' => 'Çın waqıtı',
@@ -2072,7 +2036,6 @@ Yulnıñ berençe sıltaması quyma öçen tıyılğan räsemgä sıltama bulır
'exif-exposureprogram' => 'Ekspozitsiä programması',
'exif-spectralsensitivity' => 'Spektral sizüçänlek',
'exif-isospeedratings' => 'ISO yaqtılıq sizüçänlege',
-'exif-oecf' => 'OECF (optoelektrik küçerü koeffitsientı)',
'exif-shutterspeedvalue' => 'Saqlaw',
'exif-aperturevalue' => 'Diafragma',
'exif-brightnessvalue' => 'Yaqtılıq',
@@ -2086,7 +2049,6 @@ Yulnıñ berençe sıltaması quyma öçen tıyılğan räsemgä sıltama bulır
'exif-focallength-format' => '$1 mm',
'exif-subjectarea' => 'Töşerü cisemeneñ urnaşuı häm mäydanı',
'exif-flashenergy' => 'Yaqtılıq energiäse',
-'exif-spatialfrequencyresponse' => 'Tirälek tırışı',
'exif-focalplanexresolution' => 'X foqäl yassılıq kiñäytelüe',
'exif-focalplaneyresolution' => 'Y foqäl yassılıq kiñäytelüe',
'exif-focalplaneresolutionunit' => 'Foqäl yassılıq kiñäytelüen isäpläw berämlege',
@@ -2095,7 +2057,6 @@ Yulnıñ berençe sıltaması quyma öçen tıyılğan räsemgä sıltama bulır
'exif-sensingmethod' => 'Sensor töre',
'exif-filesource' => 'Faylnıñ çığanağı',
'exif-scenetype' => 'Tirälekneñ töre',
-'exif-cfapattern' => 'Tös filtrınıñ töre',
'exif-customrendered' => 'Östämä üzgärtü',
'exif-exposuremode' => 'Ekspozitsiä saylaw rejimı',
'exif-whitebalance' => 'Aq tösneñ balansı',
@@ -2154,15 +2115,13 @@ Yulnıñ berençe sıltaması quyma öçen tıyılğan räsemgä sıltama bulır
# External editor support
'edit-externally' => 'Bu faylnı tışqı quşımtanı qullanıp üzgärtü',
-'edit-externally-help' => '(tulıraq mäğlümat öçen [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] biten qarağız)',
+'edit-externally-help' => '(tulıraq mäğlümat öçen [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] biten qarağız)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Barlıq',
-'imagelistall' => 'barlıq',
-'watchlistall2' => 'barlıq',
-'namespacesall' => 'barlıq',
-'monthsall' => 'barlıq',
-'limitall' => 'barlıq',
+'watchlistall2' => 'barlıq',
+'namespacesall' => 'barlıq',
+'monthsall' => 'barlıq',
+'limitall' => 'barlıq',
# Delete conflict
'recreate' => 'Yañadan yasaw',
diff --git a/languages/messages/MessagesTyv.php b/languages/messages/MessagesTyv.php
index 3b49888f..f41b31d4 100644
--- a/languages/messages/MessagesTyv.php
+++ b/languages/messages/MessagesTyv.php
@@ -164,10 +164,10 @@ $messages = array(
'searcharticle' => 'Күүcедири',
'history' => 'Ðрынның Төөгүзү',
'history_short' => 'Төөгү',
-'info_short' => 'Медеглел',
'printableversion' => 'Саазынга үндүрерин көөрү',
'permalink' => 'Үргүлчү холбаа',
'print' => 'Саазынга үндүрер',
+'view' => 'Көөрү',
'edit' => 'Ó¨Ñкертири',
'create' => 'Чогаадыры',
'editthispage' => 'Бо арынны Ó©Ñкертири',
@@ -291,7 +291,7 @@ $messages = array(
'accountcreatedtext' => '$1 деп ажыглакчының бүрүткел бижиини бүдүрген.',
'loginlanguagelabel' => 'Дыл: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Чажыт Ñөзү Ó©Ñкертир',
'resetpass_header' => 'Чажыт ÑÓ©ÑÑ‚Ò¯ катап чогаадып кылыры',
'oldpassword' => 'Эгри чажыт ÑÓ©Ñ:',
@@ -309,7 +309,6 @@ $messages = array(
'extlink_sample' => 'http://www.example.com холбаадың ады',
'extlink_tip' => 'Даштыкы холбаа ("http://" чүве Ñактып алыр)',
'headline_sample' => 'Кол ÑÓ©Ñ Ñөзүглел',
-'math_sample' => 'Формуланы мынаар киирери',
'nowiki_sample' => 'Форматтаваан Ñөзүглелини бÑÑÑ€ Ñалыры',
'nowiki_tip' => 'Вики форматтаарын херекке албаÑ',
'image_sample' => 'Чижек.jpg',
@@ -734,7 +733,6 @@ The password for this new account can be changed on the ''[[Special:ChangePasswo
# Block/unblock
'blockip' => 'Ðжыглакчыны ниимиктÑÑри',
-'ipaddress' => 'ИП-адреÑ',
'ipadressorusername' => 'ИП-Ð°Ð´Ñ€ÐµÑ Ð°Ð·Ñ‹ aжыглaкчының aды',
'ipbreason' => 'Чылдагаан:',
'ipbreasonotherlist' => 'Ó¨Ñке чылдагаан',
@@ -743,7 +741,6 @@ The password for this new account can be changed on the ''[[Special:ChangePasswo
'ipbotheroption' => 'Ó©Ñке',
'ipbotherreason' => 'Ó¨Ñке/немелде чылдагаан:',
'badipaddress' => 'Багай ИП-адреÑ',
-'ipblocklist-username' => 'Ðжыглакчының ады азы ИП-адреÑ:',
'ipblocklist-submit' => 'ДилÑÑÑ€',
'infiniteblock' => 'кезÑÑ-мөңгеде',
'blocklink' => 'ниимиктÑÑри',
@@ -827,9 +824,6 @@ The password for this new account can be changed on the ''[[Special:ChangePasswo
'skinname-myskin' => 'MySkin',
'skinname-chick' => 'Chick',
-# Math errors
-'math_unknown_error' => 'Ð±Ð¸Ð»Ð±ÐµÑ Ð°Ð»Ð´Ð°Ð³',
-
# Image deletion
'filedelete-missing' => '"$1" деп файл чок, ынчангаш ол ап калдынмаÑ.',
@@ -857,12 +851,10 @@ The password for this new account can be changed on the ''[[Special:ChangePasswo
'exif-subjectdistancerange-3' => 'ырак көрүш',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'шупту',
-'imagelistall' => 'шупту',
-'watchlistall2' => 'шупту',
-'namespacesall' => 'шупту',
-'monthsall' => 'шупту',
-'limitall' => 'шупту',
+'watchlistall2' => 'шупту',
+'namespacesall' => 'шупту',
+'monthsall' => 'шупту',
+'limitall' => 'шупту',
# action=purge
'confirm_purge_button' => 'Чөп',
diff --git a/languages/messages/MessagesUdm.php b/languages/messages/MessagesUdm.php
index 1294c637..f01e81ff 100644
--- a/languages/messages/MessagesUdm.php
+++ b/languages/messages/MessagesUdm.php
@@ -144,8 +144,7 @@ $messages = array(
'index-category' => 'ИндекÑировать кароно бамъёÑ',
'noindex-category' => 'ИндекÑировать каронтÑм бамъёÑ',
-'linkprefix' => '/^(.*?)(„|«)$/sDu',
-'mainpagetext' => "'''MediaWiki движок азинлыко пуктÑмын.'''",
+'linkprefix' => '/^(.*?)(„|«)$/sDu',
'about' => 'Та ÑÑрыÑÑŒ',
'article' => 'СтатьÑ',
diff --git a/languages/messages/MessagesUg_arab.php b/languages/messages/MessagesUg_arab.php
index ae7c8505..bf03c4f0 100644
--- a/languages/messages/MessagesUg_arab.php
+++ b/languages/messages/MessagesUg_arab.php
@@ -65,8 +65,8 @@ $messages = array(
'tog-oldsig' => 'نۆۋەتتىكى ئىمزانى ئالدىن كۆزەت:',
'tog-fancysig' => 'ئىمزاغا wiki تÛكستى سۈپىتىدە مۇئامىلە قىل (ئۆزلۈكىدىن ئۇلانما ھاسىل بولمايدۇ)',
'tog-externaleditor' => 'كۆڭۈلدىكى ئەھۋالدا سىرتقى تەھرىرلىگۈچ ئىشلىتىدۇ (ئالىي ئىشلەتكۈچىگە تەمىنلىنىدۇ، كومپيۇتÛرىڭىزدا بىر قىسىم ئالاھىدە تەڭشەش ئÛلىپ بÛرىشىڭىز لازىم
-[http://www.mediawiki.org/wiki/Manual:External_editors تÛخىمۇ ÙƒÛ†Ù¾ ئۇچۇر.])',
-'tog-externaldiff' => 'كۆڭۈلدىكى ئەھۋالدا سىرتقى پەرق تەھلىلى ئىشلىتىدۇ (ئالىي ئىشلەتكۈچىگە تەمىنلىنىدۇ، كومپيۇتÛرىڭىزدا بىر قىسىم ئالاھىدە تەڭشەش ئÛلىپ بÛرىشىڭىز لازىم. [http://www.mediawiki.org/wiki/Manual:External_editors تÛخىمۇ ÙƒÛ†Ù¾ ئۇچۇر.])',
+[//www.mediawiki.org/wiki/Manual:External_editors تÛخىمۇ ÙƒÛ†Ù¾ ئۇچۇر.])',
+'tog-externaldiff' => 'كۆڭۈلدىكى ئەھۋالدا سىرتقى پەرق تەھلىلى ئىشلىتىدۇ (ئالىي ئىشلەتكۈچىگە تەمىنلىنىدۇ، كومپيۇتÛرىڭىزدا بىر قىسىم ئالاھىدە تەڭشەش ئÛلىپ بÛرىشىڭىز لازىم. [//www.mediawiki.org/wiki/Manual:External_editors تÛخىمۇ ÙƒÛ†Ù¾ ئۇچۇر.])',
'tog-showjumplinks' => '"ئاتلا" زىيارەت ئۇلانمىسىنى قوزغات',
'tog-uselivepreview' => 'رىئال ۋاقىتلىق ئالدىن كۆزىتىشنى ئىشلەت (JavaScript زۆرۈر) (سىناق)',
'tog-forceeditsummary' => 'ئۈزۈندە كىرگۈزمىگەندە Ù…Ûنى ئەسكەرت',
@@ -161,14 +161,7 @@ $messages = array(
'listingcontinuesabbrev' => 'داۋاملاشتۇر',
'index-category' => 'ئىندÛكسلانغان بەتلەر',
'noindex-category' => 'ئىندÛكسلانمىغان بەتلەر',
-
-'mainpagetext' => "'''MediaWiki مۇۋەپپەقىيەتلىك قاچىلاندى.'''",
-'mainpagedocfooter' => '[http://meta.wikimedia.org/wiki/Help:Contents ئىشلەتكۈچى قوللانمىسى] نى زىيارەت قىلىپ wiki يۇمشاق دÛتالىنى ئىشلىتىش ئۇچۇرىغا ئÛرىشىڭ.
-
-== دەسلەپكى ساۋات ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings سەپلىمە تەڭشەك تىزىملىكى]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki كۆپ ئۇچرايدىغان مەسىلىلەرگە جاۋاب]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki تارقاتقان ئÛلخەت تىزىملىكى]',
+'broken-file-category' => 'بۇزۇلغان ھۆججەتكە ئۇلانغان بەتلەر',
'about' => 'ھەققىدە',
'article' => 'مەزمۇن بÛتى',
@@ -220,10 +213,10 @@ $messages = array(
'history' => 'بەت تارىخى',
'history_short' => 'تارىخ',
'updatedmarker' => 'Ù…Û•Ù† ئالدىنقى Ù‚Ûتىم زىيارەت قىلغاندىن بۇيانقى ÙŠÛڭىلانغىنى',
-'info_short' => 'ئۇچۇر',
'printableversion' => 'باسقىلى بولىدىغان نەشرى',
'permalink' => 'مەڭگۈلۈك ئۇلانما',
'print' => 'باس',
+'view' => 'كۆرۈنۈش',
'edit' => 'تەھرىر',
'create' => 'قۇر',
'editthispage' => 'بۇ بەتنى تەھرىرلە',
@@ -231,6 +224,7 @@ $messages = array(
'delete' => 'ئۆچۈر',
'deletethispage' => 'بۇ بەتنى ئۆچۈر',
'undelete_short' => 'ئۆچۈرۈلگەن {{PLURAL:$1|بىر تەھرىر|$1 تەھرىر}} ئەسلىگە كەلتۈرۈلدى',
+'viewdeleted_short' => '{{PLURAL:$1|بىر ئۆچۈرۈلگەن تەھرىر|$1 ئۆچۈرۈلگەن تەھرىر}}نى كۆرسەت',
'protect' => 'قوغدا',
'protect_change' => 'ئۆزگەرت',
'protectthispage' => 'بۇ بەتنى قوغدا',
@@ -316,6 +310,8 @@ $1',
'toc' => 'مەزمۇنى',
'showtoc' => 'كۆرسەت',
'hidetoc' => 'يوشۇر',
+'collapsible-collapse' => 'قاتلا',
+'collapsible-expand' => 'ياي',
'thisisdeleted' => 'كۆرسەت ياكى ئەسلىگە كەلتۈر $1 ؟',
'viewdeleted' => '$1 كۆرسەت؟',
'restorelink' => '{{PLURAL:$1|بىر ئۆچۈرۈلگەن نەشرى|$1 ئۆچۈرۈلگەن نەشرى}}',
@@ -327,6 +323,8 @@ $1',
'page-rss-feed' => '"$1" نىڭ RSS قانىلى',
'page-atom-feed' => '"$1" نىڭ Atom قانىلى',
'red-link-title' => '$1 (بەت مەۋجۇد ئەمەس)',
+'sort-descending' => 'ÙƒÛÙ…Û•ÙŠÚ¯ÛˆÚ†Ù‰ تەرتىپتە تەرتىپلە',
+'sort-ascending' => 'ئۆسكۈچى تەرتىپتە تەرتىپلە',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'بەت',
@@ -425,13 +423,14 @@ MySQL قايتۇرغان خاتالىقى"$3: $4"',
بۇ بەت ئۆزگەرتىلسە باشقا ئىشلەتكۈچىلەرنىڭ كۆرۈنۈش ئۇسلۇبىغا تەسىر كۆرسىتىدۇ.
-مەسىلەن ئەگەر تەرجىمە قىلسىڭىز [http://translatewiki.net/wiki/Main_Page?setlang=ug translatewiki.net] ئۇنداقتا MediaWiki يەرلىكلەشتۈرۈش پىلانىنى ئىشلىتىشنى ئويلىشىڭ.",
+مەسىلەن ئەگەر تەرجىمە قىلسىڭىز [//translatewiki.net/wiki/Main_Page?setlang=ug translatewiki.net] ئۇنداقتا MediaWiki يەرلىكلەشتۈرۈش پىلانىنى ئىشلىتىشنى ئويلىشىڭ.",
'sqlhidden' => '(SQL سۈرۈشتۈرۈش يوشۇرۇلدى)',
'cascadeprotected' => 'بۇ بەت قوغدالغان چۈنكى تۆۋەندىكى {{PLURAL:$1|بىر|بىر قانچە}} بەت مەزكۇر بەتنى ئۆز ئىچىگە ئÛلىش بىلەن بىللە "زەنجىرسىمان قوغداش" قوزغىتىلغان.
$2',
'namespaceprotected' => "سىزنىڭ '''$1''' ئات بوشلۇقىدىكى بەتنى تەھرىرلەش ھوقۇقىڭىز يوق.",
-'customcssjsprotected' => 'بۇ بەتنى تەھرىرلەش ھوقۇقىڭىز يوق، چۈنكى ئۇ باشقا بىر ئىشلەتكۈچىنىڭ شەخسىي تەڭشىكىنى ئۆز ئىچىگە ئالغان.',
+'customcssprotected' => 'بۇ CSS بەتنى تەھرىرلەش ھوقۇقىڭىز يوق، چۈنكى ئۇ باشقا بىر ئىشلەتكۈچىنىڭ شەخسىي تەڭشىكىنى ئۆز ئىچىگە ئالغان.',
+'customjsprotected' => 'بۇ JavaScript بەتنى تەھرىرلەش ھوقۇقىڭىز يوق، چۈنكى ئۇ باشقا بىر ئىشلەتكۈچىنىڭ شەخسىي تەڭشىكىنى ئۆز ئىچىگە ئالغان.',
'ns-specialprotected' => 'ئالاھىدە بەتنى تەھرىرلىگىلى بولمايدۇ.',
'titleprotected' => 'بۇ ماۋزۇ قايتا قۇرۇشتىن ساقلىنىش ئۈچۈن [[User:$1|$1]] تەرىپىدىن قوغدالغان.
@@ -472,6 +471,7 @@ $2',
'createaccount' => 'Ú¾Ûسابات قۇر',
'gotaccount' => "Ú¾Ûساباتىم بار؟ '''$1'''.",
'gotaccountlink' => 'تىزىمغا كىر',
+'userlogin-resetlink' => 'تىزىمغا كىرىش تەپسىلاتىڭىزنى ئۇنۇتتىڭىز؟',
'createaccountmail' => 'ئÛلخەتتە',
'createaccountreason' => 'سەۋەب:',
'badretype' => 'سىز كىرگۈزگەن ئىم ماس كەلمىدى.',
@@ -491,13 +491,15 @@ $2',
سىز cookies نى چەكلىگەن.
ئۇنى قوزغىتىپ قايتا سىناڭ.',
+'nocookiesfornew' => 'بۇ ئىشلەتكۈچى Ú¾Ûساباتى قۇرۇلمىدى، ئۇنىڭ مەنبەسىنى جەزملىيەلمەيمىز.
+سىز cookie نى قوزغاتقانلىقىڭىزنى جەزملەپ، بۇ بەتنى قايتا يۈكلەپ ئاندىن قايتا سىناڭ.',
'noname' => 'سىز تÛخى ئىناۋەتلىك ئىشلەتكۈچى ئاتىنى بەلگىلىمىدىڭىز.',
'loginsuccesstitle' => 'تىزىمغا كىرىش مۇۋەپپەقىيەتلىك',
'loginsuccess' => "'''سىز {{SITENAME}} غا \"\$1\" سالاھىيىتىدە كىردىڭىز.'''",
'nosuchuser' => '"$1" ئاتلىق ئىشلەتكۈچىنى تاپالمىدى.
ئىشلەتكۈچى ئاتىنى تەكشۈرۈڭ.
ياكى [[Special:UserLogin/signup|ÙŠÛÚ­Ù‰ Ú¾Ûسابات قۇرۇڭ]].',
-'nosuchusershort' => ' "<nowiki>$1</nowiki>" ئاتلىق ئىشلەتكۈچى يوق.
+'nosuchusershort' => ' "$1" ئاتلىق ئىشلەتكۈچى يوق.
كىرگۈزگىنىڭىزنى تەكشۈرۈڭ.',
'nouserspecified' => 'ئىشلەتكۈچى ئاتىدىن بىرنى بەلگىلەڭ.',
'login-userblocked' => 'بۇ ئىشلەتكۈچى چەكلەنگەن. تىزىمغا كىرىشكە يول قويۇلمايدۇ.',
@@ -548,13 +550,14 @@ $2',
'usernamehasherror' => 'ئىشلەتكۈچى ئاتىدا مۇكەممەللىك كود ھەرپلىرى بولماسلىقى لازىم',
'login-throttled' => 'سىز بۇ Ú¾Ûساباتنىڭ ئىمنى ÙƒÛ†Ù¾ Ù‚Ûتىم سىنىدىڭىز.
سەل تەخىر قىلىپ، ئاندىن قايتا سىناڭ.',
+'login-abort-generic' => 'تىزىمغا غەلبىلىك كىرەلمىدىڭىز - Ú†Ûكىندى',
'loginlanguagelabel' => 'تىل: $1',
'suspicious-userlogout' => 'تىزىمدىن چىقىش ئىلتىماسىڭىز رەت قىلىندى، چۈنكى ئۇ بەلكىم بۇزۇلغان توركۆرگۈ ياكى غەملەك ۋاكالەتچىسى يوللىغان بولۇشى مۇمكىن.',
# E-mail sending
'php-mail-error-unknown' => 'PHP نىڭmail() Ùونكسىيەسىدىكى يوچۇن خاتالىق',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ئىم ئۆزگەرت',
'resetpass_announce' => 'سىز ۋاقىتلىق ئÛلخەت جەزملەش كودىدا تىزىمغا كىرگەن.
تىزىمغا كىرىشنى تاماملاشتا، بۇ جايدا ÙŠÛÚ­Ù‰ ئىم بەلگىلىشىڭىز لازىم:',
@@ -574,6 +577,32 @@ $2',
ئىمنى ئاللىبۇرۇن ئۆزگەرتىپ بولدىڭىز ياكى ÙŠÛÚ­Ù‰ ۋاقىتلىق ئىم ئىلتىماس قىلدىڭىز.',
'resetpass-temp-password' => 'ۋاقىتلىق ئىم:',
+# Special:PasswordReset
+'passwordreset' => 'ئىمنى ئەسلىگە قايتۇر',
+'passwordreset-text' => 'بۇ جەدۋەل تاماملانسا Ú¾Ûسابات تەپسىلاتىڭىزنى ئÛلخەتىڭىزدە تاپشۇرۇۋالىسىز.',
+'passwordreset-legend' => 'ئىمنى ئەسلىگە قايتۇر',
+'passwordreset-disabled' => 'بۇ ۋىكىدا ئىمنى ئەسلىگە قايتۇرۇش چەكلەنگەن.',
+'passwordreset-pretext' => '{{PLURAL:$1||تۆۋەندىكى سانلىق مەلۇماتتىن بىرنى كىرگۈزۈڭ}}',
+'passwordreset-username' => 'ئىشلەتكۇچى ئىسمى:',
+'passwordreset-domain' => 'دائىرە:',
+'passwordreset-email' => 'ئÛلخەت ئادرÛس:',
+'passwordreset-emailtitle' => '{{SITENAME}} دىكى Ú¾Ûسابات تەپسىلاتى',
+'passwordreset-emailtext-ip' => 'بەزىلەر(بەلكىم سىز بولۇشىڭىز مۇمكىن) IP ئادرÛس $1 ئارقىلىق {{SITENAME}} ($4) دىكى مۇناسىۋەتلىك Ú¾Ûساباتنىڭ ئىم ئەسكەرتىشىگە ئÛرىشىشنى تەلەپ قىلدى. {{PLURAL:$3|Ú¾Ûسابات|Ú¾Ûسابات}} بىلەن Ø´Û‡ ئÛلخەت ئادرÛس باغلانغان:
+
+$2
+
+بۇ {{PLURAL:$3|ۋاقىتلىق ئىم|ۋاقىتلىق ئىم}}نىڭ {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ.
+ھازىرلا تىزىمغا كىرىپ ÙŠÛÚ­Ù‰ ئىم تەڭشەڭ. ئەگەر ئىلتىماسنى باشقىلار ئوتتۇرىغا قويغان بولسا ياكى كونا ئىمنى ئەسكە ئالغان بولسىڭىز ئۆزگەرتىشنىڭ ھاجىتى يوق، بۇ ئۇچۇرغا پەرۋا قىلماي كونا ئىمنى داۋاملىق ئىشلىتىۋەرسىڭىز بولىدۇ.',
+'passwordreset-emailtext-user' => '{{SITENAME}} بÛكەتتىكى $1 ئىشلەتكۈچى {{SITENAME}}($4) دىكى مۇناسىۋەتلىك Ú¾Ûساباتنىڭ ئىم ئەسكەرتىشىگە ئÛرىشىشنى تەلەپ قىلدى. {{PLURAL:$3|Ú¾Ûسابات|Ú¾Ûسابات}} بىلەن Ø´Û‡ ئÛلخەت ئادرÛس باغلانغان:
+
+$2
+
+بۇ {{PLURAL:$3|ۋاقىتلىق ئىم|ۋاقىتلىق ئىم}}نىڭ {{PLURAL:$5|كۈن|$5 كۈن}}دە ۋاقتى توشىدۇ.
+ھازىرلا تىزىمغا كىرىپ ÙŠÛÚ­Ù‰ ئىم تەڭشەڭ. ئەگەر ئىلتىماسنى باشقىلار ئوتتۇرىغا قويغان بولسا ياكى كونا ئىمنى ئەسكە ئالغان بولسىڭىز ئۆزگەرتىشنىڭ ھاجىتى يوق، بۇ ئۇچۇرغا پەرۋا قىلماي كونا ئىمنى داۋاملىق ئىشلىتىۋەرسىڭىز بولىدۇ.',
+'passwordreset-emailelement' => 'ئىشلەتكۈچى ئاتى: $1
+ۋاقىتلىق ئىم: $2',
+'passwordreset-emailsent' => 'ئەسكەرتىش ئÛلخەت ئەۋەتىلدى.',
+
# Edit page toolbar
'bold_sample' => 'توم خەت',
'bold_tip' => 'توم خەت',
@@ -585,8 +614,6 @@ $2',
'extlink_tip' => 'سىرتقى ئۇلانما (http:// ئالدى قوشۇلغۇچى قوشۇڭ)',
'headline_sample' => 'ماۋزۇ تÛكستى',
'headline_tip' => '2- دەرىجىلىك ماۋزۇ',
-'math_sample' => 'بۇ جايغا Ùورمۇلا قىستۇر',
-'math_tip' => 'ماتÛماتÛكىلىق Ùورمۇلا (LaTeX)',
'nowiki_sample' => 'Ùورماتى يوق تÛكست قىستۇر',
'nowiki_tip' => 'wiki Ùورماتىغا پەرۋا قىلما',
'image_tip' => 'سىڭدۈرمە ھۆججەت',
@@ -671,7 +698,7 @@ $2',
[{{fullurl:{{FULLPAGENAME}}|action=edit}} بۇ بەتنى تەھرىرلىيەلەيسىز]</span>',
'noarticletext-nopermission' => 'بۇ بەتتە ھازىرچە مەزمۇن يوق.
 سىز باشقا بەتتە [[Special:Search/{{PAGENAME}}|بۇ بەتنىڭ ماۋزۇسىنى ئىزدىيەلەيسىز]] ياكى <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}}] مۇناسىۋەتلىك خاتىرىسىنى ئىزدىيەلەيسىز،</span>',
-'userpage-userdoesnotexist' => '"$1" ئىشلەتكۈچى خەتلەتمىگەن.
+'userpage-userdoesnotexist' => '"<nowiki>$1</nowiki>" ئىشلەتكۈچى خەتلەتمىگەن.
بۇ بەتنى قۇرۇش/تەھرىرلەشتىن ئىلگىرى تەكشۈرۈپ بÛقىڭ.',
'userpage-userdoesnotexist-view' => '"$1" ئىشلەتكۈچى Ú¾Ûساباتى خەتلەتمىگەن.',
'blocked-notice-logextract' => 'بۇ ئىشلەتكۈچى نۆۋەتتە چەكلەنگەن.
@@ -711,6 +738,7 @@ $2',
'token_suffix_mismatch' => "'''سىزنىڭ ئىشلەتكۈچى تەرەپتىكى تەھرىر بۇيرۇقى بىر قىسىم تىنىش بەلگىلىرىنى بۇزۇۋەتتى، '''
بەتتىكى تەھرىرلەۋاتقان تÛكستنىڭ بۇزۇلۇشىنىڭ ئالدىنى ئÛلىش ئۈچۈن تەھرىرىڭىز رەت قىلىندى.
بۇ خىل ئەھۋال ئادەتتە نۇرغۇن خاتالىق بار تورنى ئاساس قىلغان ئاتسىز ۋاكالەتچىنى ئىشلەتكەندە كۆرۈلىدۇ.",
+'edit_form_incomplete' => "'''تەھرىرلىگەن جەدۋەلنىڭ بەزى بۆلىكى مۇلازىمÛتىرغا يەتمىدى؛ تەھرىرلىگەن مەزمۇنىڭىزنىڭ مۇكەممەللىكىنى تەكشۈرۈپ ئاندىن قايتا سىناڭ.'''",
'editing' => '$1 تەھرىرلەۋاتىدۇ',
'editingsection' => '$1 تەھرىرلەۋاتىدۇ (ئابزاس)',
'editingcomment' => '$1 تەھرىرلەۋاتىدۇ (ÙŠÛÚ­Ù‰ ئابزاس)',
@@ -1056,12 +1084,13 @@ $1",
دىققەت ئۇلار ئىندÛكسلىغان {{SITENAME}} مەزمۇنىنىڭ ۋاقتى ئۆتكەن بولۇشى مۇمكىن.',
# Quickbar
-'qbsettings' => 'تÛز يولباشچى ستونى',
-'qbsettings-none' => 'يوق',
-'qbsettings-fixedleft' => 'سول تەرەپ مۇقىم',
-'qbsettings-fixedright' => 'ئوڭ تەرەپ مۇقىم',
-'qbsettings-floatingleft' => 'سول تەرەپ لەيلىمە',
-'qbsettings-floatingright' => 'ئوڭ تەرەپ لەيلىمە',
+'qbsettings' => 'تÛز يولباشچى ستونى',
+'qbsettings-none' => 'يوق',
+'qbsettings-fixedleft' => 'سول تەرەپ مۇقىم',
+'qbsettings-fixedright' => 'ئوڭ تەرەپ مۇقىم',
+'qbsettings-floatingleft' => 'سول تەرەپ لەيلىمە',
+'qbsettings-floatingright' => 'ئوڭ تەرەپ لەيلىمە',
+'qbsettings-directionality' => 'تىلىڭىزدىكى تÛكىست Û‹Û• قوليازمىنىڭ يۆنىلىشىگە ئاساسەن مۇقىملاشتۇرىدۇ.',
# Preferences page
'preferences' => 'مايىللىق',
@@ -1072,9 +1101,10 @@ $1",
'changepassword' => 'ئىم ئۆزگەرت',
'prefs-skin' => 'تÛرە',
'skin-preview' => 'ئالدىن كۆزەت',
-'prefs-math' => 'ماتÛماتÛكىلىق Ùورمۇلا',
'datedefault' => 'مايىللىق يوق',
+'prefs-beta' => 'سىناق ئىقتىدارلىرى',
'prefs-datetime' => 'Ú†Ûسلا Û‹Û• ۋاقىت',
+'prefs-labs' => 'تەجرىبە ئىقتىدارلىرى',
'prefs-personal' => 'ئىشلەتكۈچى سەپلىمە ھۆججىتى',
'prefs-rc' => 'ئاخىرقى ئۆزگەرتىشلەر',
'prefs-watchlist' => 'كۆزەت تىزىملىكى',
@@ -1096,8 +1126,6 @@ $1",
'columns' => 'ستون:',
'searchresultshead' => 'ئىزدە',
'resultsperpage' => 'ھەر بەتتىكى ئۇلانما سانى:',
-'contextlines' => 'ھەر ئۇلانمىدىكى قۇر سانى:',
-'contextchars' => 'ھەر قۇردىكى ھەرپ سانى:',
'stub-threshold' => '<a href="#" class="stub">قىسقا بەت ئۇلانمىسى</a> Ùورمات Ú†Û•Ùƒ قىممىتى (بايت) :',
'stub-threshold-disabled' => 'چەكلەنگەن',
'recentchangesdays' => 'ÙŠÛقىنقى ئۆزگەرتىشنىڭ كۆرۈنىدىغان ÙƒÛˆÙ† سانى:',
@@ -1110,7 +1138,7 @@ $1",
'savedprefs' => 'مايىللىق تەڭشىكىڭىز ساقلاندى.',
'timezonelegend' => 'ۋاقىت رايونى:',
'localtime' => 'يەرلىك ۋاقىت:',
-'timezoneuseserverdefault' => 'مۇلازىمىتىرنىڭ كۆڭۈلدىكى تەڭشىكىنى ئىشلەت',
+'timezoneuseserverdefault' => 'ۋىكىنىڭ كۆڭۈلدىكى قىممىتى($1)نى ئىشلەت',
'timezoneuseoffset' => 'باشقا (بەلگىلەنگەن چەتنەش)',
'timezoneoffset' => '¹ۋاقىت پەرقى:',
'servertime' => 'مۇلازىمىتىر ۋاقتى:',
@@ -1164,9 +1192,8 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
'prefs-help-realname' => 'ھەقىقىي ئات تاللاشچان.
ئەگەر تەمىنلەشنى تاللىسىڭىز، ئۇ سىزنىڭ تۆھپىڭىزنىڭ ئىمزاسى بولىدۇ.',
-'prefs-help-email' => 'ئÛلخەت تاللاشچان، ئەمما سىز ئىمنى ئۇنتۇلۇپ قالغاندا ÙŠÛÚ­Ù‰ ئىمنى سىزنىڭ ئÛلخىتىڭىزگە ئەۋەتىپ بÛرىدۇ
-
-سىز ئۆزىڭىزنىڭ سالاھىيىتىنى ئاشكارىلىمىغاندا ئىشلەتكۈچى بÛتىڭىز ياكى مۇنازىرە بÛتىڭىز ئارقىلىق ئالاقىلىشالايدۇ.',
+'prefs-help-email' => 'ئÛلخەت ئادرÛسى تاللاشچان، ئەمما سىز ئىمنى ئۇنتۇلۇپ قالغاندا ÙŠÛÚ­Ù‰ ئىمنى سىزنىڭ ئÛلخىتىڭىزگە ئەۋەتىپ بÛرىدۇ.',
+'prefs-help-email-others' => 'سىز باشقا ئىشلەتكۈچىلەرنىڭ ئىشلەتكۈچى بÛتىڭىز ياكى مۇنازىرە بÛتىڭىزدىكى ئۇلانما ئارقىلىق ئÛلخەتتە سىز بىلەن ئالاقە قىلىشنى تاللىيالايسىز. باشقا ئىشلەتكۈچىلەر سىز بىلەن ئالاقە قىلغاندا ئÛلخەت ئادرÛسىڭىز كۆرۈنمەيدۇ.',
'prefs-help-email-required' => 'ئÛلخەت ئارÛس زۆرۈر.',
'prefs-info' => 'ئاساسىي ئۇچۇر',
'prefs-i18n' => 'خەلقئارالاشتۇرۇش',
@@ -1291,15 +1318,15 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
'right-userrights' => 'ھەممە ئىشلەتكۈچىنىڭ ھوقۇقىنى تەھرىرلە',
'right-userrights-interwiki' => 'باشقا wiki دىكى ئىشلەتكۈچى ھوقۇقىنى تەھرىرلە',
'right-siteadmin' => 'ساندان قۇلۇپلا ۋە قۇلۇپ ئاچ',
-'right-reset-passwords' => 'باشقا ئىشلەتكۈچى ئىمنى ئەسلىگە قايتۇر',
'right-override-export-depth' => 'بەت قەۋەتلىك ئۇلىنىشى بار بەتنى چىقار',
'right-sendemail' => 'باشقا ئىشلەتكۈچىگە ئÛلخەت يوللا',
# User rights log
-'rightslog' => 'ئىشلەتكۈچى ھوقۇق خاتىرىسى',
-'rightslogtext' => 'ئىشلەتكۈچى ھوقۇق خاتىرىسى',
-'rightslogentry' => 'گۇرۇپپا ئەزاسى $1 نىڭ ھوقۇقىنى $2 دىن $3 غا ئۆزگەرت',
-'rightsnone' => '(يوق)',
+'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' => 'بۇ بەتنى ئوقۇ',
@@ -1421,13 +1448,13 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
'illegalfilename' => 'ھۆججەت ئاتى "$1"دا ماۋزۇدا چەكلىنىدىغان ھەرپ بار.
ھۆججەت ئاتىنى ئۆزگەرتىپ ئاندىن يۈكلەشنى قايتا سىناڭ.',
'badfilename' => 'ھۆججەت ئاتى ئۆزگەرتىلدى "$1".',
-'filetype-mime-mismatch' => 'ھۆججەت ÙƒÛڭەيتىلگەن ئاتى MIME تىپى بىلەن ماسلاشمىدى.',
+'filetype-mime-mismatch' => '".$1" ھۆججەت ÙƒÛڭەيتىلگەن ئاتى ($2) ھۆججەتنىڭ MIME تىپى بىلەن ماسلاشمىدى.',
'filetype-badmime' => 'ھۆججەتنىڭ MIME تىپى "$1" يۈكلەشكە يول قويىدىغان ھۆججەت شەكلى ئەمەس.',
'filetype-bad-ie-mime' => 'بۇ ھۆججەتنى يۈكلىگىلى بولمايدۇ، چۈنكى Internet Explorer ئۇنى "$1" دەپ بايقىدى، ئۇ يول قويۇلمايدىغان يوشۇرۇن خەۋپى بار ھۆججەت تىپى.',
'filetype-unwanted-type' => "'''\".\$1\"''' لازىمى يوق ھۆججەت تىپى.
تەۋسىيە قىلىدىغان {{PLURAL:\$3|بىر|بىر قانچە}} خىل ھۆججەت تىپى \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' يول قويمايدىغان ھۆججەت تىپى.
-يول قويىدىغان {{PLURAL:\$3|بىر|بىر قانچە}} ھۆججەت تىپى \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|يول قويمايدىغان ھۆججەت تىپى|يول قويمايدىغان ھۆججەت تىپى}}.
+يول قويىدىغان {{PLURAL:$3|بىر|بىر قانچە}} ھۆججەت تىپى $2.',
'filetype-missing' => 'بۇ ھۆججەتنىڭ ÙƒÛڭەيتىلگەن ئاتى يوق (مەسىلەن ".jpg").',
'empty-file' => 'يوللىغان ھۆججىتىڭىز بوش.',
'file-too-large' => 'يوللىغان ھۆججىتىڭىز بەك چوڭ.',
@@ -1446,6 +1473,7 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
'emptyfile' => 'سىز يۈكلىگەن ھۆججەت قۇرۇقتەك تۇرىدۇ.
بۇ ھۆججەت ئاتى خاتا كىرگۈزگەنلىكتىن بولۇشى مۇمكىن.
سىز راستىنلا بۇ ھۆججەتنى يۈكلەيدىغانلىقىڭىزنى تەكشۈرۈڭ.',
+'windows-nonascii-filename' => 'بۇ ۋىكى ھۆججەت ئاتىدا ئالاھىدە ھەرپ بەلگە ئىشلىتىشنى قوللىمايدۇ.',
'fileexists' => "ئوخشاش ئاتتىكى ھۆججەت مەۋجۇد، ئەگەر ئۇنى ئۆزگەرتىشنى جەزملىيەلمىسىڭىز '''<tt>[[:$1]]</tt>''' نى تەكشۈرۈڭ.
[[$1|thumb]]",
'filepageexists' => "بۇ ھۆججەتنىڭ چۈشەندۈرۈش بÛتى '''<tt>[[:$1]]</tt>''' دا قۇرۇلغان، ئەمما بۇ ئاتلىق ھۆججەت مەۋجۇد ئەمەس.
@@ -1484,6 +1512,8 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
'uploadscripted' => 'بۇ ھۆججەتتە توركۆرگۈ خاتا ÙŠÛشىدىغان HTML ياكى قوليازما كودىنى ئۆز ئىچىگە ئالغان.',
'uploadvirus' => 'بۇ ھۆججەتتە ۋىرۇس بار!
تەپسىلاتى: $1',
+'uploadjava' => 'بۇ ZIP ھۆججەت بولۇپ، ئۇنىڭدا Java نىڭ .class ھۆججەت بار.
+يۈكلەشكە يول قويمايدىغان Java ھۆججەت چۈنكى ئۇلار بىخەتەرلىك چەكلىمىسىدىن ئاتلاپ ÙƒÛتىشى مۇمكىن.',
'upload-source' => 'مەنبە ھۆججەت',
'sourcefilename' => 'مەنبە ھۆججەت ئاتى:',
'sourceurl' => 'مەنبە URL:',
@@ -1494,9 +1524,6 @@ HTML بەلگىسىنى تەكشۈرۈڭ.',
'watchthisupload' => 'بۇ ھۆججەتنى كۆزەت',
'filewasdeleted' => 'بايىلا ئوخشاش ئاتتىكى بىر ھۆججەت يوللىنىپ، ئارقىدىنلا ئۆچۈرۈلگەن.
بۇ ھۆججەتنى يۈكلەشتىن ئىلگىرى، $1 نى تەكشۈرۈپ بÛقىڭ.',
-'upload-wasdeleted' => "'''ئاگاھلاندۇرۇش: ئىلگىرى ئۆچۈرگەن ھۆججەتتىن بىرنى يۈكلەۋاتىسىز.'''
-بۇ ھۆججەتنى قايتا يۈكلەشنىڭ مۇۋاپىق ياكى ئەمەسلىكىنى ئويلىنىپ بÛقىڭ.
-قولايلىق بولۇشى ئۈچۈن بۇ ھۆججەتنىڭ ئۆچۈرۈش خاتىرىسى تۆۋەندە تەمىنلەندى:",
'filename-bad-prefix' => "سىز يۈكلىگەن ھۆججەتنىڭ ئاتى'''\\\"\$1\\\"''' دىن باشلىنىپتۇ، بۇ خىل مەنىسى يوق ھۆججەت ئاتىنى رەقەملىك Ùوتو ئاپپارات ئۆزلۈكىدىن ھاسىل قىلىدۇ.
ھۆججىتىڭىزگە تÛخىمۇ ئەھمىيەتلىك ھۆججەت ئاتىدىن بىرنى تاللاڭ.",
'upload-success-subj' => 'مۇۋەپپەقىيەتلىك يۈكلەندى',
@@ -1521,6 +1548,23 @@ $1',
'upload-unknown-size' => 'نامەلۇم چوڭلۇق',
'upload-http-error' => 'بىر HTTP خاتالىقى مەۋجۇد: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'ھۆججەت ئاچقاندا ZIP تەكشۈرۈشىدە بىر خاتالىققا يولۇقتى.',
+'zip-wrong-format' => 'بەلگىلەنگەن ھۆججەت ZIP ھۆججەت ئەمەس.',
+'zip-bad' => 'بۇ ھۆججەت بۇزۇلغان ياكى باشقا ئۇسۇلدا ZIP ھۆججەتنى ئوقۇيالمايدۇ.
+ئۇنىڭ بىخەتەرلىكىنى تەكشۈرەلمەيدۇ.',
+'zip-unsupported' => 'بۇ ZIP ھۆججەت ئۇنىڭدا MediaWiki قوللىمايدىغان ZIP ئىقتىدارى ئىشلىتىلگەن.
+ئۇنىڭ بىخەتەرلىكىنى تەكشۈرەلمەيدۇ.',
+
+# Special:UploadStash
+'uploadstash' => 'يوشۇرۇن يۈكلە',
+'uploadstash-summary' => 'بۇ بەتتە ھۆججەت يۈكلەش (يۈكلىنىۋاتىدۇ)نى تەمىنلىگەن ئەمما ۋىكىغا يوللانغان ھۆججەت مەۋجۇت ئەمەس. بۇ ھۆججەتلەرنى يۈكلىگەن ئىشلەتكۈچىدىن باشقىلار كۆرەلمەيدۇ.',
+'uploadstash-clear' => 'يوشۇرۇن ساقلانغان ھۆججەتلەرنى تازىلا',
+'uploadstash-nofiles' => 'سىزنىڭ يوشۇرۇن ساقلانغان ھۆججەتلىرىڭىز يوق.',
+'uploadstash-badtoken' => 'بۇ مەشغۇلات غەلبىلىك تاماملانمىدى ياكى تەھرىرلىگەن ئۇچۇرىڭىزنىڭ ۋاقتى ئۆتكەن. قايتا سىناڭ.',
+'uploadstash-errclear' => 'ھۆججەت تازىلاش مۇۋەپپەقىيەتلىك تاماملانمىدى.',
+'uploadstash-refresh' => 'ھۆججەت تىزىمىنى ÙŠÛڭىلا',
+
# img_auth script messages
'img-auth-accessdenied' => 'زىيارەت رەت قىلىندى',
'img-auth-nopathinfo' => 'PATH_INFO يوقالغان.
@@ -1604,7 +1648,7 @@ URL نىڭ توغرىلىقى Û‹Û• تور بÛكەتنى زىيارەت قىلى
[[Special:WhatLinksHere/$2|تولۇق تىزىملىك]]نى تەمىنلىيەلەيدۇ.',
'nolinkstoimage' => 'بۇ ھۆججەتكە ئۇلانغان بەت يوق.',
'morelinkstoimage' => 'بۇ ھۆججەتكە ئۇلانغان [[Special:WhatLinksHere/$1|تÛخىمۇكۆپ ئۇلانما]] كۆرسەت.',
-'redirectstofile' => 'تۆۋەندىكى {{PLURAL:$1|ھۆججەت|$1 ھۆججەت}} بۇ ھۆججەتكە نىشانلانغان.',
+'linkstoimage-redirect' => '$1 (ھۆججەت قايتا نىشانلىدىكى) $2',
'duplicatesoffile' => 'تۆۋەندىكى {{PLURAL:$1|ھۆججەت|$1 ھۆججەت}} بۇ ھۆججەت بىلەن تەكرارلانغان ([[Special:FileDuplicateSearch/$2|تÛخىمۇ ÙƒÛ†Ù¾ تەپسىلاتى]]):',
'sharedupload' => 'بۇ ھۆججەت $1 دىن كەلگەن، ئۇ باشقا قۇرۇلۇشتا ئىشلىتىلىۋاتقان بولۇشى مۇمكىن.',
'sharedupload-desc-there' => 'بۇ ھۆججەت $1 دىن كەلگەن، ئۇ باشقا قۇرۇلۇشلاردا ئىشلىتىلىدىغان بولۇشى مۇمكىن
@@ -1700,12 +1744,13 @@ URL نىڭ توغرىلىقى Û‹Û• تور بÛكەتنى زىيارەت قىلى
ئەمما ئۇلار مۇۋاپىق ماۋزۇغا ئۇلىنىشى ÙƒÛرەك ئىدى.<br />
ئەگەر بىر بەت [[MediaWiki:Disambiguationspage]] غا ئۇلانغان بولسا ئىككى بىسلىق بەت دەپ قارىلىدۇ.",
-'doubleredirects' => 'قوش قايتا نىشانلانغان بەت',
-'doubleredirectstext' => 'بۇ بەتتە قايتا نىشانلانغان بەت يەنە بىر قايتا نىشانلانغان بەتنى نىشانغانلىق تىزىملىكى كۆرسىتىلدى.
+'doubleredirects' => 'قوش قايتا نىشانلانغان بەت',
+'doubleredirectstext' => 'بۇ بەتتە قايتا نىشانلانغان بەت يەنە بىر قايتا نىشانلانغان بەتنى نىشانغانلىق تىزىملىكى كۆرسىتىلدى.
ھەر بىر قۇردا بىرىنچى Û‹Û• ئىككىنچى قايتا نىشانلانغان بەتنىڭ ئۇلانمىسىنى شۇنداقلا ئىككىنچى قايتا نىشانلانغان بەتنىڭ نىشانىنى ئۆز ئىچىگە ئالىدۇ، ئادەتتە كۆرسىتىلىدىغىنى "ھەقىقىي" نىشان بەت، مۇنداقچە ئÛيتقاندا بىرىنچى نىشانلانغان بەت نىشانلايدىغان بەتتۇر.',
-'double-redirect-fixed-move' => '[[$1]] يۆتكەلدى.\\n
+'double-redirect-fixed-move' => '[[$1]] يۆتكەلدى.\\n
ھازىر [[$2]] نى قايتا نىشانلىدى.',
-'double-redirect-fixer' => 'قايتا نىشانلانغان تۈزەتكۈچ',
+'double-redirect-fixed-maintenance' => '[[$1]] دىن [[$2]] غا قوش قايتا نىشانلاشنى ئوڭشاۋاتىدۇ.',
+'double-redirect-fixer' => 'قايتا نىشانلانغان تۈزەتكۈچ',
'brokenredirects' => 'بۇزۇق قايتا نىشانلانغان بەت',
'brokenredirectstext' => 'تۆۋەندىكى قايتا نىشانلانغان بەت مەۋجۇد بولمىغان بەتنى كۆرسەتكەن:',
@@ -1781,6 +1826,7 @@ URL نىڭ توغرىلىقى Û‹Û• تور بÛكەتنى زىيارەت قىلى
'pager-newer-n' => '{{PLURAL:$1|ÙŠÛÚ­Ù‰ 1|ÙŠÛÚ­Ù‰ $1}}',
'pager-older-n' => '{{PLURAL:$1|كونا 1|كونا $1}}',
'suppress' => 'نازارەتچى',
+'querypage-disabled' => 'بۇ ئالاھىدە بەت ئۈنۈم سەۋەبىدىن چەكلەندى.',
# Book sources
'booksources' => 'كىتاب مەنبەسى',
@@ -1898,6 +1944,10 @@ URL نىڭ توغرىلىقى Û‹Û• تور بÛكەتنى زىيارەت قىلى
'noemailtext' => 'بۇ ئىشلەتكۈچى تÛخى ئىناۋەتلىك ئÛلخەت ئادرÛسى بەلگىلىمىگەن.',
'nowikiemailtitle' => 'ئÛلخەتكە يول قويمايدۇ',
'nowikiemailtext' => 'بۇ ئىشلەتكۈچى باشقىلارنىڭ ئÛلخىتىنى قوبۇل قىلماسلىقنى تاللىغان.',
+'emailnotarget' => 'قوبۇللىغۇچى مەۋجۇت ئەمەس ياكى ئىشلەتكۈچى ئاتى ئىناۋەتسىز.',
+'emailtarget' => 'قوبۇللىغۇچىنىڭ ئىشلەتكۈچى ئاتىنى كىرگۈزۈڭ',
+'emailusername' => 'ئىشلەتكۈچى ئاتى:',
+'emailusernamesubmit' => 'تاپشۇر',
'email-legend' => 'باشقا {{SITENAME}} ئىشلەتكۈچىگە ئÛلخەت يوللا',
'emailfrom' => 'يوللىغۇچى:',
'emailto' => 'قوبۇللىغۇچى:',
@@ -1922,11 +1972,11 @@ URL نىڭ توغرىلىقى Û‹Û• تور بÛكەتنى زىيارەت قىلى
'watchlistanontext' => '$1 كۆزەت تىزىملىكىڭىزنى كۆرۈپ تەھرىرلەڭ.',
'watchnologin' => 'تىزىمغا كىرمىدى',
'watchnologintext' => 'سىز [[Special:UserLogin|تىزىمغا كىر]]گەندىلا ئاندىن كۆزەت تىزىملىكىڭىزنى ئۆزگەرتەلەيسىز.',
-'addedwatch' => 'كۆزەت تىزىملىكىگە قوشۇلدى',
+'addwatch' => 'كۆزەت تىزىملىكىگە قوش',
'addedwatchtext' => "\"[[:\$1]]\" بÛتى [[Special:Watchlist|كۆزەت تىزىملىكى]]ڭىزگە قوشۇلدى.
كەلگۈسىدە بۇ بەت Û‹Û• ئۇنىڭ مۇنازىرە بÛتىگە مۇناسىۋەتلىك ھەر قانداق ئۆزگەرتىش Ø´Û‡ جايدا كۆرسىتىلىپلا قالماستىن،
بەلكى [[Special:RecentChanges|ÙŠÛقىنقى ئۆزگەرتىش تىزىملىكى]]دىمۇ تÛخىمۇ ئاسان پەرقلەندۈرۈش ئۈچۈن '''توم''' شەكلىدە كۆرسىتىلىدۇ.",
-'removedwatch' => 'كۆزەت تىزىملىكىدىن چىقىرىۋەتتى',
+'removewatch' => 'كۆزەت تىزىملىكىدىن چىقىرىۋەت',
'removedwatchtext' => '"[[:$1]]" بÛتى [[Special:Watchlist|كۆزەت تىزىملىكىڭىز]]دىن چىقىرىۋÛتىلدى.',
'watch' => 'كۆزەت',
'watchthispage' => 'بۇ بەتنى كۆزەت',
@@ -1947,8 +1997,9 @@ URL نىڭ توغرىلىقى Û‹Û• تور بÛكەتنى زىيارەت قىلى
'watchlist-options' => 'كۆزەت تىزىملىك تاللانما',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'كۆزەت قىلىۋاتىدۇ…',
-'unwatching' => 'كۆزەت قىلمايۋاتىدۇ…',
+'watching' => 'كۆزەت قىلىۋاتىدۇ…',
+'unwatching' => 'كۆزەت قىلمايۋاتىدۇ…',
+'watcherrortext' => '"$1"نىڭ كۆزەت تىزىمى تەڭشىكىنى ئۆزگەرتكەندە خاتالىق كۆرۈلدى.',
'enotif_mailer' => '{{SITENAME}} ئÛلخەت ئۇقتۇرغۇچ',
'enotif_reset' => 'ھەممە بەتكە ئوقۇلدى بەلگىسى سال',
@@ -1972,21 +2023,21 @@ $NEWPAGE
ئÛلخەت: $PAGEEDITOR_EMAIL
-مەزكۇر بÛكەت: $PAGEEDITOR_WIKI
+ۋىكى: $PAGEEDITOR_WIKI
-سىز بۇ بەتنى زىيارەت قىلىشتىن ئىلگىرى، كەلگۈسىدىكى ئۆزگەرتىش سىزگە ئۇقتۇرۇش قىلىنمايدۇ. سىز كۆزىتىۋاتقان بەت تىزىملىكىنىڭ ئۇقتۇرۇش بەلگىسىنى قايتا تەڭشىسىڭىزمۇ بولىدۇ.
+سىز بۇ بەتنى زىيارەت قىلىشتىن ئىلگىرى، كەلگۈسىدىكى ئۆزگەرتىش سىزگە ئۇقتۇرۇش قىلىنمايدۇ. سىز كۆزىتىۋاتقان بەت تىزىمىنىڭ ئۇقتۇرۇش بەلگىسىنى قايتا تەڭشىسىڭىزمۇ بولىدۇ.
{{SITENAME}} ئۇقتۇرۇش سىستÛمىسى
--
-كۆزەت تىزىملىك تەڭشىكىڭىزنى ئۆزگەرتسىڭىز،
-{{fullurl:{{#special:Watchlist}}/edit}} زىيارەت قىلىڭ
+كۆزەت تىزىمى تەڭشىكىڭىزنى ئۆزگەرتسىڭىز،
+{{canonicalurl:{{#special:Preferences}}}}نى زىيارەت قىلىڭ
-كۆزەت تىزىملىكىڭىزدىكى شۇ بەتنى ئۆچۈرمەكچى بولسىڭىز،
-$UNWATCHURL زىيارەت قىلىڭ
+كۆزەت تىزىمىڭىزدىكى شۇ بەتنى ئۆچۈرمەكچى بولسىڭىز،
+$UNWATCHURL نى زىيارەت قىلىڭ
قايتما ئىنكاس ياكى تÛخىمۇ ÙƒÛ†Ù¾ ياردەمگە ئÛرىشمەكچى بولسىڭىز:
-{{fullurl:{{MediaWiki:Helppage}}}} زىيارەت قىلىڭ',
+{{canonicalurl:{{MediaWiki:Helppage}}}} نى زىيارەت قىلىڭ',
# Delete
'deletepage' => 'بەت ئۆچۈر',
@@ -2002,7 +2053,7 @@ $UNWATCHURL زىيارەت قىلىڭ
بۇ مەشغۇلاتنى جەزملەپ، ئاقىۋىتىنى چۈشىنىڭ، شۇنىڭ بىلەن بىللە سىزنىڭ قىلمىشىڭىز [[{{MediaWiki:Policy-url}}|شەخسىيەت تاكتىكىسى]] غا ئۇيغۇن بولسۇن.',
'actioncomplete' => 'مەشغۇلات تامام',
'actionfailed' => 'مەشغۇلات مەغلۇپ بولدى',
-'deletedtext' => '"<nowiki>$1</nowiki>" ئۆچۈرۈلدى.
+'deletedtext' => '"$1" ئۆچۈرۈلدى.
ÙŠÛقىندا ئۆچۈرۈلگەن خاتىرىنى $2 دىن كۆرۈڭ.',
'deletedarticle' => '"[[$1]]"ئۆچۈرۈلگەن',
'suppressedarticle' => 'بىكار قىلىندى "[[$1]]"',
@@ -2062,7 +2113,7 @@ $2 نىڭ ئاخىرقى تۈزىتىلگەن نەشرىگە ئۆزگەرتىلØ
'protect_expiry_invalid' => 'قەرەلى توشۇش ۋاقتى ئىناۋەتسىز.',
'protect_expiry_old' => 'قەرەلى توشۇش ۋاقتى ئۆتۈپ كەتكەن.',
'protect-unchain-permissions' => 'قۇلۇپلانغان ئىقتىدار تاللانما قۇلۇپىنى ئاچ',
-'protect-text' => "بۇ جايدا '''<nowiki>$1</nowiki>''' بÛتىنىڭ قوغداش دەرىجىسىنى كۆرەلەيسىز Û‹Û• ئۆزگەرتەلەيسىز.",
+'protect-text' => "بۇ جايدا '''$1''' بÛتىنىڭ قوغداش دەرىجىسىنى كۆرەلەيسىز Û‹Û• ئۆزگەرتەلەيسىز.",
'protect-locked-blocked' => "چەكلەنگەندە قوغداش دەرىجىسىنى ئۆزگەرتەلمەيسىز.
تۆۋەندىكى '''$1''' نىڭ نۆۋەتتىكى قوغداش دەرىجىسى:",
'protect-locked-dblock' => "ساندان قۇلۇپلانغاندا قوغداش دەرىجىسىنى ئۆزگەرتكىلى بولمايدۇ.
@@ -2117,9 +2168,8 @@ $2 نىڭ ئاخىرقى تۈزىتىلگەن نەشرىگە ئۆزگەرتىلØ
'undeletepagetext' => 'تۆۋەندىكى {{PLURAL:$1|بەت |$1 بەت}} ئۆچۈرۈلگەن ئەمما ئارخىپتا مەۋجۇد، ئەسلىگە كەلتۈرگىلى بولىدۇ
ئارخىپ ئامبىرى مەلۇم مۇددەتتە تازىلىنىشى مۇمكىن.',
'undelete-fieldset-title' => 'تۈزىتىلگەن نەشرىنى ئەسلىگە كەلتۈر',
-'undeleteextrahelp' => "پۈتۈن بەتنى ئەسلىگە كەلتۈرگەندە، بارلىق ÙƒÛ†Ù¾ تاللانمىنى چىقىرىۋەتكەندىن ÙƒÛيىن '''''ئەسلىگە كەلتۈر'''''نى Ú†Ûكىڭ.
-بەلگىلەنگەن نەشرىنى ئەسلىگە كەلتۈرۈشتە، مۇناسىپ نەشرىنىڭ ئالدىدىكى ÙƒÛ†Ù¾ تاللاش رامكىسىنى تاللاپ '''''ئەسلىگە كەلتۈر'''''نى Ú†Ûكىڭ.
-'''''ئەسلىگە قايتۇر''''' Ú†Ûكىلسە مۇنازىرە مەزمۇنىنى ئۆچۈرۈپ بارلىق ÙƒÛ†Ù¾ تاللاش رامكىسىنى تازىلايدۇ.",
+'undeleteextrahelp' => "پۈتۈن بەتنى ئەسلىگە كەلتۈرگەندە، بارلىق ÙƒÛ†Ù¾ تاللانمىنى چىقىرىۋەتكەندىن ÙƒÛيىن '''''{{int:undeletebtn}}'''''نى Ú†Ûكىڭ.
+بەلگىلەنگەن نەشرىنى ئەسلىگە كەلتۈرۈشتە، مۇناسىپ نەشرىنىڭ ئالدىدىكى ÙƒÛ†Ù¾ تاللاش رامكىسىنى تاللاپ '''''{{int:undeletebtn}}'''''نى Ú†Ûكىڭ.",
'undeleterevisions' => '$1 {{PLURAL:$1|تۈزىتىلگەن نەشرى|تۈزىتىلگەن نەشرى}} ئارخىپلاندى',
'undeletehistory' => 'ئەگەر بۇ بەتنى ئەسلىگە كەلتۈرسىڭىز، ھەممە نەشرى تۈزىتىلگەن نەشر تارىخىغا ئەسلىگە كەلتۈرۈلىدۇ.
ئەگەر بۇ بەت ئۆچۈرۈلگەندىن ÙƒÛيىن ئوخشاش ئاتتىكى ÙŠÛÚ­Ù‰ بىر بەت قۇرۇلسا ئەسلىگە كەلتۈرۈلگەن نەشرى ÙŠÛڭىراق نەشرىدىكى تارىخ بولىدۇ.',
@@ -2165,9 +2215,12 @@ $1',
'undelete-show-file-submit' => 'ھەئە',
# Namespace form on various pages
-'namespace' => 'ئات بوشلۇقى',
-'invert' => 'ئەكسىچە تاللا',
-'blanknamespace' => '(ئاساسىي)',
+'namespace' => 'ئات بوشلۇقى',
+'invert' => 'ئەكسىچە تاللا',
+'tooltip-invert' => 'بۇ كۆپ تاللانما تاللانسا تاللانغان ئات بوشلۇقى(ۋە ئۇنىڭغا مۇناسىۋەتلىك ئات بوشلۇقى ئەگەر بۇ تاللانما تاللانسا) دائىرىسىدىكى بەت ئۆزگۈرۈشىنى يوشۇرىدۇ',
+'namespace_association' => 'مۇناسىۋەتلىك ئات بوشلۇقى',
+'tooltip-namespace_association' => 'بۇ تاللانما تاللانسا تاللانغان ئات بوشلۇقى بىلەن مۇناسىۋەتلىك بولغان مۇنازىرە بÛتى ياكى تارماق بەتلىرىنى ئۆز ئىچىگە ئالىدۇ.',
+'blanknamespace' => '(ئاساسىي)',
# Contributions
'contributions' => 'ئىشلەتكۈچى تۆھپىسى',
@@ -2217,13 +2270,15 @@ $1',
'whatlinkshere-filters' => 'سۈزگۈچلەر',
# Block/unblock
+'autoblockid' => '#$1 نى ئۆزلۈكىدىن توس',
+'block' => 'ئىشلەتكۈچىنى چەكلە',
+'unblock' => 'ئىشلەتكۈچىنى چەكلىمە',
'blockip' => 'چەكلەنگەن ئىشلەتكۈچى',
'blockip-title' => 'ئىشلەتكۈچى چەكلە',
'blockip-legend' => 'چەكلەنگەن ئىشلەتكۈچى',
'blockiptext' => 'تۆۋەندىكى جەدۋەلنى ئىشلىتىپ بەلگىلىك IP ئادرÛس ياكى ئىشلەتكۈچى ئاتىدىن ÙƒÛ•Ù„Ú¯Û•Ù† ÙŠÛزىش زىيارىتىنى چەكلەشكە بولىدۇ.
پەقەت بۇزغۇنچىلىكنىڭ ئالدىنى ئÛلىش ھەمدە [[{{MediaWiki:Policy-url}}|تاكتىكا]].
سىغا ئۇيغۇن بولغان ئەھۋالدا ئاندىن بۇ مەشغۇلاتنى ئÛلىپ بÛرىشقا بولىدۇ. تۆۋەندە ئەمەلىي سەۋەب (مەسىلەن، بۇزۇۋÛتىلگەن بەتتىن بىرنى نەقىل ئÛلىش)تىن بىرنى كىرگۈزۈڭ.',
-'ipaddress' => 'IP ئادرÛس:',
'ipadressorusername' => 'IP ئادرÛس ياكى ئىشلەتكۈچى ئاتى:',
'ipbexpiry' => 'مۇددىتى:',
'ipbreason' => 'سەۋەب:',
@@ -2236,7 +2291,7 @@ $1',
** باشقىلارغا ھەيۋە قىلىش/مەجبۇرلاش
** ÙƒÛ†Ù¾ Ú¾Ûساباتنى قالايمىغان ئىشلىتىش
** قوبۇل قىلغىلى بولمايدىغان ئىشلەتكۈچى ئاتى',
-'ipbanononly' => 'ئىمزاسىز ئىشلەتكۈچىنى چەكلە',
+'ipb-hardblock' => 'تىزىمغا كىرگەن ئىشلەتكۈچىنىڭ بۇ IP ئادرÛستىن تەھرىرلىشىنىڭ ئالدىنى ئالىدۇ',
'ipbcreateaccount' => 'Ú¾Ûسابات قۇرۇشنى توس',
'ipbemailban' => 'ئىشلەتكۈچى ئÛلخەت ئەۋەتىشنى توس',
'ipbenableautoblock' => 'بۇ ئىشلەتكۈچى ئاخىرقى Ù‚Ûتىم ئىشلەتكەن IP ئادرÛسنى Û‹Û• بۇندىن ÙƒÛيىن تەھرىرلەشكە ئۇرۇنغان بارلىق ئادرÛسنى ئۆزلۈكىدىن چەكلە.',
@@ -2247,12 +2302,15 @@ $1',
'ipbotherreason' => 'باشقا/قوشۇمچە سەۋەب:',
'ipbhidename' => 'تەھرىر ۋە تىزىملىكتىن ئىشلەتكۈچى ئاتىنى يوشۇر',
'ipbwatchuser' => 'بۇ ئىشلەتكۈچىنىڭ ئىشلەتكۈچى بÛتى Û‹Û• مۇنازىرە بÛتىنى كۆزەت',
-'ipballowusertalk' => 'چەكلەنگەندە بۇ ئىشلەتكۈچنىڭ مۇنازىرە بÛتىنى تەھرىرلىشىگە يول قوي',
+'ipb-disableusertalk' => 'چەكلەنگەن ئىشلەتكۈچىنىڭ ئۆزىنىڭ سۆزلىشىش بÛتىنى تەھرىرلىشى چەكلىنىدۇ',
'ipb-change-block' => 'بۇ تەڭشەكلەردىن پايدىلىنىپ ئىشلەتكۈچىنى قايتىدىن چەكلە',
+'ipb-confirm' => 'چەكلەشنى جەزملە',
'badipaddress' => 'IP ئادرÛس ئىناۋەتسىز',
'blockipsuccesssub' => 'چەكلەش مۇۋەپپەقىيەتلىك',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] چەكلەندى<br />
[[Special:IPBlockList|چەكلەنگەن IP تىزىملىكى]] نى كۆرۈپ چەكلەشنى تەكشۈرۈڭ.',
+'ipb-blockingself' => 'سىز ئۆزىڭىزنى چەكلەمسىز! راستىنلا مۇشۇنداق قىلامسىز؟',
+'ipb-confirmhideuser' => 'سىز ئىشلەتكۈچىنى يوشۇرۇش ھوقۇقى بار ئىشلەتكۈچىنى چەكلىمەكچى. بۇنداق بولغاندا ھەممە تىزىمدىكى ئىشلەتكۈچىلەرنىڭ ئاتى ۋە خاتىرە تۈرلىرى چەكلىنىدۇ. راستىنلا مۇشۇنداق قىلامسىز؟',
'ipb-edit-dropdown' => 'چەكلەش سەۋەبىنى تەھرىرلە',
'ipb-unblock-addr' => '$1 چەكلەشنى بىكار قىل',
'ipb-unblock' => 'چەكلەش بىكار قىلىغان ئىشلەتكۈچى ئاتى ياكى IP ئادرÛس',
@@ -2262,17 +2320,23 @@ $1',
'unblockiptext' => 'تۆۋەندىكى جەدۋەلنى ئىشلىتىپ ئىلگىرى چەكلەنگەن IP ئادرÛس ياكى ئىشلەتكۈچىنىڭ ÙŠÛزىش ھوقۇقىنى ئەسلىگە كەلتۈر.',
'ipusubmit' => 'بۇ چەكلەشنى چىقىرىۋەت',
'unblocked' => '[[User:$1|$1]] چەكلەش بىكار قىلىندى',
+'unblocked-range' => '$1 چەكلەنمەيدۇ',
'unblocked-id' => '$1 نى چەكلەش بىكار قىلىندى',
+'blocklist' => 'چەكلەنگەن ئىشلەتكۈچىلەر',
'ipblocklist' => 'چەكلەنگەن ئىشلەتكۈچىلەر',
'ipblocklist-legend' => 'چەكلەنگەن ئىشلەتكۈچىدىن بىرنى ئىزدە',
-'ipblocklist-username' => 'ئىشلەتكۈچى ئاتى ياكى IP ئادرÛس:',
-'ipblocklist-sh-userblocks' => '$1 Ù‚Ûتىم Ú¾Ûسابات چەكلەش',
-'ipblocklist-sh-tempblocks' => '$1 Ù‚Ûتىم ۋاقىتلىق چەكلەش',
-'ipblocklist-sh-addressblocks' => '$1 Ù‚Ûتىم يەككە IP چەكلەش',
+'blocklist-userblocks' => 'Ú¾Ûسابات چەكلەشنى يوشۇر',
+'blocklist-tempblocks' => 'ۋاقىتلىق چەكلەشنى يوشۇر',
+'blocklist-addressblocks' => 'يەككە IP چەكلەشنى يوشۇر',
+'blocklist-timestamp' => 'ۋاقىت تامغاسى',
+'blocklist-target' => 'نىشان',
+'blocklist-expiry' => 'ۋاقتى ئۆتتى',
+'blocklist-by' => 'توسۇشنى باشقۇرغۇچى',
+'blocklist-params' => 'توسۇش پارامÛتىرى',
+'blocklist-reason' => 'سەۋەبى',
'ipblocklist-submit' => 'ئىزدەش',
'ipblocklist-localblock' => 'يەرلىك چەكلەش',
'ipblocklist-otherblocks' => 'باشقا {{PLURAL:$1|چەكلەنگەن|چەكلەنگەن}}',
-'blocklistline' => '$1, $2 چەكلەنگەن $3 ($4)',
'infiniteblock' => 'چەكسىز',
'expiringblock' => '$1 $2 ۋاقتى توشىدۇ',
'anononlyblock' => 'ئاتسىز ئىشلەتكۈچىلا',
@@ -2297,7 +2361,7 @@ $1',
'reblock-logentry' => ' [[$1]] نىڭ چەكلەش تەڭشىكىنى ئۆزگەرتىش ۋاقتى $2 $3',
'blocklogtext' => 'بۇ ئىشلەتكۈچى چەكلەش ۋە چەكلەشنى بىكار قىلىش مەشغۇلاتىغا ئائىت خاتىرە.
ئۆزلۈكىدىن چەكلەنگەن IP ئادرÛس كۆرسىتىلمىدى.
- [[Special:IPBlockList|چەكلەنگەنIP تىزىملىكى]] دىن كۆرۈڭ.',
+ [[Special:BlockList|چەكلەنگەنIP تىزىملىكى]] دىن كۆرۈڭ.',
'unblocklogentry' => '$1 چەكلەش بىكار قىلىنغان',
'block-log-flags-anononly' => 'ئىمزاسىز ئىشلەتكۈچىلا',
'block-log-flags-nocreate' => 'Ú¾Ûسابات قۇرۇش چەكلەنگەن',
@@ -2311,10 +2375,10 @@ $1',
'ipb_expiry_temp' => 'يوشۇرۇن ئىشلەتكۈچى ئاتىنى چەكلەش چوقۇم مەڭگۈلۈك بولىدۇ.',
'ipb_hide_invalid' => 'بۇ Ú¾Ûساباتنى باسسىڭىز بولمايدۇ؛ ئۇنىڭ نۇرغۇن تەھرىرى بولۇشى مۇمكىن.',
'ipb_already_blocked' => '"$1" ئاللىبۇرۇن چەكلەنگەن',
-'ipb-needreblock' => '== ئاللىبۇرۇن چەكلەنگەن ==
-$1 ئاللىبۇرۇن چەكلەنگەن.
+'ipb-needreblock' => '$1 ئاللىبۇرۇن چەكلەنگەن.
بۇ تەڭشەكنى ئۆزگەرتەمسىز؟',
'ipb-otherblocks-header' => 'باشقا {{PLURAL:$1|چەكلەنگەن|چەكلەنگەن}}',
+'unblock-hideuser' => 'بۇ ئىشلەتكۈچىنى توسالمايسىز، ئۇنىڭ ئىشلەتكۈچى ئاتى يوشۇرۇلغان.',
'ipb_cant_unblock' => 'خاتالىق: چەكلەنگەن ID $1 تاپالمىدى.
چەكلەش بىكار قىلىنغان بولۇشى مۇمكىن.',
'ipb_blocked_as_range' => 'خاتالىق: بۇ IP $1 بىۋاسىتە چەكلەنمىگەن، چەكلەشنى بىكار قىلغىلى بولمايدۇ.
@@ -2356,6 +2420,7 @@ $1 ئاللىبۇرۇن چەكلەنگەن.
'lockfilenotwritable' => 'ساندان قۇلۇپ ھۆججىتىنى يازالمىدى.
ساندان قۇلۇپلاش ياكى Ù‚Û‡Ù„Û‡Ù¾ ئÛچىشتا تور مۇلازىمىتىرىدىكى بۇ ھۆججەتكە يازغىلى بولۇشى لازىم.',
'databasenotlocked' => 'ساندان قۇلۇپلانمىغان.',
+'lockedbyandtime' => '({{GENDER:$1|$1}} نى $2 دا $3 ئىجرا قىلغان)',
# Move page
'move-page' => '$1 يۆتكە',
@@ -2482,7 +2547,7 @@ $1 ئاللىبۇرۇن چەكلەنگەن.
'allmessagesdefault' => 'كۆڭۈلدىكى ئۇچۇر تÛكستى',
'allmessagescurrent' => 'نۆۋەتتىكى ئۇچۇر تÛكستى',
'allmessagestext' => 'بۇ جايدا تەڭشىگىلى بولىدىغان ھەممە سىستÛما كۆرۈنۈش ئۇچۇرلىرى كۆرسىتىلدى.
-ئەگەر ھەقىقىي يەرلەشتۈرۈلگەن MediaWiki غا تۆھپە قوشماقچى بولسىڭىز[http://www.mediawiki.org/wiki/Localisation MediaWiki يەرلىكلەشتۈرۈش] ۋە [http://translatewiki.net translatewiki.net] نى زىيارەت قىلىڭ.',
+ئەگەر ھەقىقىي يەرلەشتۈرۈلگەن MediaWiki غا تۆھپە قوشماقچى بولسىڭىز[//www.mediawiki.org/wiki/Localisation MediaWiki يەرلىكلەشتۈرۈش] ۋە [//translatewiki.net translatewiki.net] نى زىيارەت قىلىڭ.',
'allmessagesnotsupportedDB' => "بۇ بەتنى ئىشلەتكىلى بولمايدۇ، سەۋەبى '''\$wgUseDatabaseMessages''' چەكلەنگەن.",
'allmessages-filter-legend' => 'سۈزگۈچ',
'allmessages-filter' => 'ئىختىيارىچە سۈزگۈچ ھالىتى:',
@@ -2627,9 +2692,7 @@ $1 ئاللىبۇرۇن چەكلەنگەن.
'tooltip-summary' => 'قىسقىچە ئۈزۈندە كىرگۈزۈڭ',
# Metadata
-'nodublincore' => 'Dublin Core RDF Ù…Ûتا سانلىق مەلۇماتىنى بۇ مۇلازىمىتىردا ئىشلەتكىلى بولمايدۇ.',
-'nocreativecommons' => 'Creative Commons RDF Ù…Ûتا سانلىق مەلۇماتىنى بۇ مۇلازىمىتىردا ئىشلەتكىلى بولمايدۇ.',
-'notacceptable' => 'wiki مۇلازىمىتىرى سىزنىڭ Ø®Ûرىدار تەرىپىڭىز ئوقۇيالايدىغان سانلىق مەلۇمات Ùورماتى بىلەن تەمىنلىيەلمەيدۇ.',
+'notacceptable' => 'wiki مۇلازىمىتىرى سىزنىڭ Ø®Ûرىدار تەرىپىڭىز ئوقۇيالايدىغان سانلىق مەلۇمات Ùورماتى بىلەن تەمىنلىيەلمەيدۇ.',
# Attribution
'anonymous' => ' {{SITENAME}} نىڭ ئىمزاسىز {{PLURAL:$1|ئىشلەتكۈچى|ئىشلەتكۈچى}}',
@@ -2653,32 +2716,17 @@ $1 ئاللىبۇرۇن چەكلەنگەن.
'spam_blanking' => 'ھەممە ئۇلانمىنى ئۆز ئىچىگە ئالغان $1 نىڭ تۈزىتىلگەن نەشرى، توسۇۋاتىدۇ',
# Info page
-'infosubtitle' => 'بەت ئۇچۇرى',
-'numedits' => 'تەھرىر سانى (بەت): $1',
-'numtalkedits' => 'تەھرىر سانى (مۇنازىرە بÛتى): $1',
-'numwatchers' => 'كۆزەتكۈچىلەر سانى: $1',
-'numauthors' => 'ئاپتورلار سانى (بەت): $1',
-'numtalkauthors' => 'ئاپتورلار سانى (مۇنازىرە بÛتى): $1',
-
-# Math options
-'mw_math_png' => 'ھەمىشە PNG ئىشلەت',
-'mw_math_simple' => 'ئەگەر ئاددىي Ùورمۇلا بولسا HTML ئىشلەت بولمىسا PNG سۈرەت ئىشلەت',
-'mw_math_html' => 'ئەگەر HTML ئىشلەتكىلى بولسا شۇنى بولمىسا PNG سۈرەت ئىشلەت',
-'mw_math_source' => 'TeX كودى كۆرسەت (تÛكست توركۆرگۈ ئىشلەتكەندە)',
-'mw_math_modern' => 'ÙŠÛÚ­Ù‰ نەشرىدىكى توركۆرگۈ ئىشلىتىش تەۋسىيە قىلىنىدۇ',
-'mw_math_mathml' => 'ئامال بار MathML ئىشلىتىدۇ (سىناق)',
-
-# Math errors
-'math_failure' => 'تەھلىل قىلالمىدى',
-'math_unknown_error' => 'نامەلۇم خاتالىق',
-'math_unknown_function' => 'نامەلۇم Ùونكسىيە',
-'math_lexing_error' => 'جۈملە خاتالىقى',
-'math_syntax_error' => 'گرامماتىكىلىق خاتالىق',
-'math_image_error' => 'PNG ئايلاندۇرۇش مەغلۇپ بولدى؛
-latex، dvips، gs، ۋە convert توغرا قاچىلانغانلىقىنى تەكشۈرۈڭ',
-'math_bad_tmpdir' => 'ماتÛماتÛكىلىق Ùورمۇلا يازىدىغان ياكى قۇرىدىغان ۋاقىتلىق مۇندەرىجە قۇرالمىدى',
-'math_bad_output' => 'ماتÛماتÛكىلىق Ùورمۇلا چىقىرىدىغان مۇندەرىجىگە يازالمىدى ياكى قۇرالمىدى',
-'math_notexvc' => ' texvc ئىجرا قىلالمىدى؛ math/README دىن پايدىلىنىپ سەپلەڭ.',
+'pageinfo-title' => '"$1" نىڭ ئۇچۇرى',
+'pageinfo-header-edits' => 'تەھرىر',
+'pageinfo-header-watchlist' => 'كۆزەت تىزىمى',
+'pageinfo-header-views' => 'كۆرۈنۈش',
+'pageinfo-subjectpage' => 'بەت',
+'pageinfo-talkpage' => 'مۇنازىرە بÛتى',
+'pageinfo-watchers' => 'كۆزەتكۈچىلەر سانى',
+'pageinfo-edits' => 'تەھرىر سانى',
+'pageinfo-authors' => 'يازغۇچىلار سانى',
+'pageinfo-views' => 'كۆرۈنۈش سانى',
+'pageinfo-viewsperedit' => 'ھەر بىر تەھرىر كۆرۈنۈشى',
# Patrolling
'markaspatrolleddiff' => 'چارلاش بەلگىسى قوي',
@@ -2721,10 +2769,11 @@ $1',
'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|بەت|بەت}}',
'file-info' => 'ھۆججەت چوڭلۇقى: $1, MIME تىپى: $2',
'file-info-size' => '$1×$2 پىكسÛÙ„ØŒ ھۆججەت چوڭلۇقى: $3ØŒ MIME تىپى: $4',
+'file-info-size-pages' => '$1 × $2 پىكسÛÙ„ØŒ ھۆججەت چوڭلۇقى: $3, MIME تىپى: $4, $5 {{PLURAL:$5|بەت|بەت}}',
'file-nohires' => '<small>يۇقىرىراق پەرق ئÛتىش نىسبىتى يوق.</small>',
'svg-long-desc' => 'SVG ھۆججىتى، ئاتاقتىكى چوڭلۇقى $1×$2 نۇقتا، ھۆججەت چوڭلۇقى: $3',
'show-big-image' => 'تولۇق ئÛنىقلىق دەرىجىسى',
-'show-big-image-thumb' => '<small>بۇ ئالدىن كۆزىتىشنىڭ چوڭلۇقى: $1 × $2 نۇقتا</small>',
+'show-big-image-size' => '$1 × $2 پىكسÛÙ„',
'file-info-gif-looped' => 'دەۋرىيلەنگەن',
'file-info-gif-frames' => '$1 {{PLURAL:$1|كاندۇك|كاندۇك}}',
'file-info-png-looped' => 'دەۋرىيلەنگەن',
@@ -2765,7 +2814,13 @@ $1',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'كەڭلىك',
@@ -2780,13 +2835,11 @@ $1',
'exif-ycbcrpositioning' => 'سÛرىق Û‹Û• ئاچ قىزىل سەپلىمىسى',
'exif-xresolution' => 'توغرىسىغا پەرق ئÛتىش نىسبىتى',
'exif-yresolution' => 'بويىغا پەرق ئÛتىش نىسبىتى',
-'exif-resolutionunit' => 'X Û‹Û• Y ئوقى پەرق ئÛتىش نىسبىتى بىرلىكى',
'exif-stripoffsets' => 'سۈرەت سانلىق مەلۇمات ئورنى',
'exif-rowsperstrip' => 'ھەر بىر تاسماقنىڭ قۇر سانى',
'exif-stripbytecounts' => 'ھەر بىر پرىسلانغان تاسماقنىڭ بايت سانى',
'exif-jpeginterchangeformat' => 'JPEG SOI چەتنەش',
'exif-jpeginterchangeformatlength' => 'JPEG سانلىق مەلۇماتى بايت',
-'exif-transferfunction' => 'يۆتكەش ئىقتىدارى',
'exif-whitepoint' => 'ئاق نۇقتا رەڭ دەرىجىسى',
'exif-primarychromaticities' => 'ئاساسىي رەڭ دەرىجىسى',
'exif-ycbcrcoefficients' => 'رەڭ بوشلۇقىنى ئالماشتۇرۇش سانلار قاتارى كوئÛÙÙىتىسÛنت',
@@ -2805,7 +2858,6 @@ $1',
'exif-compressedbitsperpixel' => 'سۈرەت پرىسلاش شەكلى',
'exif-pixelydimension' => 'سۈرەت كەڭلىكى',
'exif-pixelxdimension' => 'سۈرەت ئÛگىزلىكى',
-'exif-makernote' => 'زاۋۇت ئىزاھاتى',
'exif-usercomment' => 'ئىشلەتكۈچى ئىزاھاتى',
'exif-relatedsoundfile' => 'مۇناسىۋەتلىك ئۈن ھۆججىتى',
'exif-datetimeoriginal' => 'سانلىق مەلۇمات قۇرۇلغان Ú†Ûسلا Û‹Û• ۋاقىت',
@@ -2819,7 +2871,6 @@ $1',
'exif-exposureprogram' => 'يورۇتۇش پروگراممىسى',
'exif-spectralsensitivity' => 'سپÛكتىر سەزگۈرلۈكى',
'exif-isospeedratings' => 'ISO سۈرئەت نىسبىتى',
-'exif-oecf' => 'Ùوتو ئÛÙ„Ûكتىر ئايلاندۇرۇش Ùاكتورى',
'exif-shutterspeedvalue' => 'APEX تÛز قاپقاق سۈرئىتى',
'exif-aperturevalue' => 'APEX نۇر گەردىشى',
'exif-brightnessvalue' => 'APEX يورۇقلۇق',
@@ -2832,7 +2883,6 @@ $1',
'exif-focallength' => 'Ùوكۇس ئارىلىقى',
'exif-subjectarea' => 'جىسىم دائىرىسى',
'exif-flashenergy' => 'چاقماق لامپا كۈچى',
-'exif-spatialfrequencyresponse' => 'بوشلۇق چاستوتا ئىنكاسى',
'exif-focalplanexresolution' => 'X ئوقى Ùوكال تەكشىلىك پەرق ئÛتىش نىسبىتى',
'exif-focalplaneyresolution' => 'Y ئوقى Ùوكال تەكشىلىك پەرق ئÛتىش نىسبىتى',
'exif-focalplaneresolutionunit' => 'Ùوكال تەكشىلىك پەرق ئÛتىش نىسبىتى بىرلىكى',
@@ -2841,7 +2891,6 @@ $1',
'exif-sensingmethod' => 'يورۇقلۇق سەزگۈچ ھالىتى',
'exif-filesource' => 'ھۆججەت مەنبەسى',
'exif-scenetype' => 'مەنزىرە تىپى',
-'exif-cfapattern' => 'CFA ئەندىزىسى',
'exif-customrendered' => 'ئىختىيارىچە سۈرەت بىر تەرەپ قىلىش',
'exif-exposuremode' => 'يورۇتۇش ھالىتى',
'exif-whitebalance' => 'ئاق بالانس',
@@ -2886,10 +2935,79 @@ $1',
'exif-gpsareainformation' => 'GPS دائىرە ئاتى',
'exif-gpsdatestamp' => 'GPS Ú†Ûسلا',
'exif-gpsdifferential' => 'GPS دىÙÙÛرÛنسىئال تۈزىتىش',
+'exif-jpegfilecomment' => 'JPEG ھۆججەت ئىزاھاتى',
+'exif-keywords' => 'ھالقىلىق سۆز',
+'exif-worldregioncreated' => 'سۈرەت تارتىلغان جاينىڭ دۇنيادىكى ئورنى',
+'exif-countrycreated' => 'سۈرەت تارتىلغان دۆلەت',
+'exif-countrycodecreated' => 'سۈرەت تارتىلغان دۆلەتنىڭ كودى',
+'exif-provinceorstatecreated' => 'سۈرەت تارتىلغان ئۆلكە ياكى ئىشتات',
+'exif-citycreated' => 'سۈرەت تارتىلغان شەھەر',
+'exif-sublocationcreated' => 'سۈرەت تارتىلغان شەھەردىكى ئورنى',
+'exif-worldregiondest' => 'دۇنيا دائىرىسىنى كۆرسەت',
+'exif-countrydest' => 'كۆرسەتكەن دۆلەت',
+'exif-countrycodedest' => 'كۆرسەتكەن دۆلەتنىڭ كودى',
+'exif-provinceorstatedest' => 'كۆرسەتكەن ئۆلكە ياكى ئىشتات',
+'exif-citydest' => 'كۆرسەتكەن شەھەر',
+'exif-sublocationdest' => 'كۆرسەتكەن شەھەردىكى ئورنى',
'exif-objectname' => 'قىسقا ماۋزۇ',
+'exif-specialinstructions' => 'ئالاھىدە چۈشەندۈرۈش',
+'exif-headline' => 'ماۋزۇ',
+'exif-credit' => 'ئىناۋەت/تەمىنلىگۈچى.',
+'exif-source' => 'مەنبە',
+'exif-editstatus' => 'تەھرىرلەش ھالىتىدىكى سۈرەت',
+'exif-urgency' => 'تەخىرسىزلىكى',
+'exif-fixtureidentifier' => 'قىسقۇچ ئاتى',
+'exif-locationdest' => 'ئورۇن چۈشەندۈرۈشى',
+'exif-locationdestcode' => 'كۆرسەتكەن ئۇچۇرنىڭ كودى',
+'exif-objectcycle' => 'ۋاستىنى ئىشلىتىدىغان ۋاقىت بۆلىكى',
+'exif-contact' => 'ئالاقەداش ئۇچۇرى',
+'exif-writer' => 'يازغۇچى',
+'exif-languagecode' => 'تىل',
+'exif-iimversion' => 'IIM نەشرى',
+'exif-iimcategory' => 'تۈر',
+'exif-iimsupplementalcategory' => 'تولۇقلىما تۈر',
+'exif-datetimeexpires' => 'ÙƒÛيىن ئىشلەتمە',
+'exif-datetimereleased' => 'تارقىتىلغان ۋاقىت',
+'exif-originaltransmissionref' => 'ئەسلى يوللىغان ئورۇننىڭ كودى',
+'exif-identifier' => 'بەلگە',
+'exif-lens' => 'ئىشلەتكەن Ù„Ûنزا',
+'exif-serialnumber' => 'كامÛرانىڭ تەرتىپ نومۇرى',
+'exif-cameraownername' => 'كامÛرا ئىگىسى',
+'exif-label' => 'بەلگە',
+'exif-datetimemetadata' => 'ئاخىرقى Ù‚Ûتىم ئۆزگەرتكەن ۋاقىتتىكى Ù…Ûتا سانلىق مەلۇمات',
+'exif-nickname' => 'بىرەسمىي سۈرەت ئاتى',
+'exif-rating' => 'باھا (تولۇق نومۇر 5)',
+'exif-rightscertificate' => 'ھوقۇق باشقۇرۇش گۇۋاھنامىسى',
+'exif-copyrighted' => 'نەشر ھوقۇقى ھالىتى',
+'exif-copyrightowner' => 'نەشر ھوقۇقى ئىگىدارى',
+'exif-usageterms' => 'ئىشلىتىش ماددىلىرى',
+'exif-webstatement' => 'توردىكى نەشر ھوقۇقى چۈشەندۈرۈشى',
+'exif-originaldocumentid' => 'ئەسلى پۈتۈكنىڭ بىردىنبىر ID سى',
+'exif-licenseurl' => 'نەشر ھوقۇقى ئىجازەتنامىسىنىڭ URL ى',
+'exif-morepermissionsurl' => 'يەنە بىر ئىجازەت ئۇچۇرى',
+'exif-attributionurl' => 'بۇ خىزمەتنى قايتا ئىشلەتسىڭىز، ئۇلاڭكى',
+'exif-preferredattributionname' => 'بۇ خىزمەتنى قايتا ئىشلەتسىڭىز، ئىمزا قويۇڭكى',
+'exif-pngfilecomment' => 'PNG ھۆججەت ئىزاھاتى',
+'exif-disclaimer' => 'جاۋابكارلىقنى كەچۈرۈم قىلىش باياناتى',
+'exif-contentwarning' => 'مەزمۇن ئاگاھلاندۇرۇشى',
+'exif-giffilecomment' => 'GIF ھۆججەت ئىزاھاتى',
+'exif-intellectualgenre' => 'تۈر تىپى',
+'exif-subjectnewscode' => 'تÛما كودى',
+'exif-scenecode' => 'IPTC نەق مەيدان كودى',
+'exif-event' => 'ھادىسە چۈشەندۈرۈشى',
+'exif-organisationinimage' => 'تەشكىل چۈشەندۈرۈشى',
+'exif-personinimage' => 'شەخسىي چۈشەندۈرۈش',
+'exif-originalimageheight' => 'ÙƒÛسىشتىن ئىلگىرىكى سۈرەتنىڭ ئÛگىزلىكى',
+'exif-originalimagewidth' => 'ÙƒÛسىشتىن ئىلگىرىكى سۈرەتنىڭ كەڭلىكى',
# EXIF attributes
'exif-compression-1' => 'پرىسلانمىغان',
+'exif-compression-2' => 'CCITT 3-گۇرۇپپا بىر ئۆلچەملىك ئۆزگەرتىلگەن خۇÙمان ئىجرا كودلىنىشى',
+'exif-compression-3' => 'CCITT نىڭ 3-گۇرۇپپا Ùاكس كودلىنىشى',
+'exif-compression-4' => 'CCITT نىڭ 4-گۇرۇپپا Ùاكس كودلىنىشى',
+
+'exif-copyrighted-true' => 'نەشر ھوقۇقى',
+'exif-copyrighted-false' => 'ئاممىۋى دائىرە',
'exif-unknowndate' => 'نامەلۇم Ú†Ûسلا',
@@ -2905,6 +3023,8 @@ $1',
'exif-planarconfiguration-1' => 'دوغىلاق ئەندىزىسى',
'exif-planarconfiguration-2' => 'تەكشىلىك ئەندىزىسى',
+'exif-colorspace-65535' => 'رەڭ تۈزىتىلمىگەن',
+
'exif-componentsconfiguration-0' => 'مەۋجۇد ئەمەس',
'exif-exposureprogram-0' => 'ئÛنىقلىما بÛرىلمىگەن',
@@ -3018,6 +3138,10 @@ $1',
'exif-gpslongitude-e' => 'شەرقىي ئۇزۇنلۇق',
'exif-gpslongitude-w' => 'غەربىي ئۇزۇنلۇق',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => 'دÛڭىز يۈزىدىن ئÛگىزلىكى $1 {{PLURAL:$1|Ù…Ûتىر|Ù…Ûتىر}}',
+'exif-gpsaltitude-below-sealevel' => 'دÛڭىز يۈزىدىن تۆۋەنلىكى $1 {{PLURAL:$1|Ù…Ûتىر|Ù…Ûتىر}}',
+
'exif-gpsstatus-a' => 'ئۆلچەش جەريانى',
'exif-gpsstatus-v' => 'ھەمكارلىشىپ ئۆلچەش',
@@ -3029,21 +3153,73 @@ $1',
'exif-gpsspeed-m' => 'سائىتىگە ئىنگلىز مىلى',
'exif-gpsspeed-n' => 'دÛڭىز مىلى',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'كىلومÛتىر',
+'exif-gpsdestdistance-m' => 'ئىنگلىز مىلى',
+'exif-gpsdestdistance-n' => 'دÛڭىز مىلى',
+
+'exif-gpsdop-excellent' => 'ئەلا ($1)',
+'exif-gpsdop-good' => 'ياخشى ($1)',
+'exif-gpsdop-moderate' => 'ئوتتۇرا ($1)',
+'exif-gpsdop-fair' => 'ئادەتتىكى ($1)',
+'exif-gpsdop-poor' => 'ناچار ($1)',
+
+'exif-objectcycle-a' => 'ئەتىگەندىلا',
+'exif-objectcycle-p' => 'كەچتىلا',
+'exif-objectcycle-b' => 'ئەتىگەن ۋە كەچتە',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'ھەقىقىي يۆنىلىش',
'exif-gpsdirection-m' => 'يەر ماگنىتى يۆنىلىش',
+'exif-ycbcrpositioning-1' => 'ئوتتۇرىغا توغرىلانغان',
+'exif-ycbcrpositioning-2' => 'رەڭ تۈسى ئورنى',
+
+'exif-dc-contributor' => 'تۆھپىكارلار',
+'exif-dc-coverage' => 'ۋاستىنىڭ بوشلۇقى ياكى ۋاقىت دائىرىسى',
+'exif-dc-date' => 'Ú†Ûسلا',
+'exif-dc-publisher' => 'تارقاتقۇچى',
+'exif-dc-relation' => 'مۇناسىۋەتلىك ۋاستە',
+'exif-dc-rights' => 'ھوقۇق',
+'exif-dc-source' => 'ئەسلى ۋاستە',
+'exif-dc-type' => 'ۋاستە تىپى',
+
+'exif-rating-rejected' => 'رەت قىلىندى',
+
+'exif-isospeedratings-overflow' => '65535 دىن چوڭ',
+
+'exif-iimcategory-ace' => 'سەنئەت، مەدەنىيەت Û‹Û• ÙƒÛ†Ú­ÛˆÙ„ ئÛچىش',
+'exif-iimcategory-clj' => 'جىنايەت ۋە قانۇن',
+'exif-iimcategory-dis' => 'ئاپەتلەر ۋە ھادىسىلەر',
+'exif-iimcategory-fin' => 'ئىقتىساد ۋە سودا',
+'exif-iimcategory-edu' => 'مائارىپ',
+'exif-iimcategory-evn' => 'مۇھىت',
+'exif-iimcategory-hth' => 'ساغلاملىق',
+'exif-iimcategory-hum' => 'ئىنسانلار مەنپەئەتى',
+'exif-iimcategory-lab' => 'ئەمگەك',
+'exif-iimcategory-lif' => 'تۇرمۇش ئۇسۇلى Û‹Û• ÙƒÛ†Ú­ÛˆÙ„ ئÛچىش',
+'exif-iimcategory-pol' => 'سىياسىي',
+'exif-iimcategory-rel' => 'دىن ۋە ئىتىقات',
+'exif-iimcategory-sci' => 'Ù¾Û•Ù† Û‹Û• تÛخنىكا',
+'exif-iimcategory-soi' => 'ئىجتىمائىي مەسىلىلەر',
+'exif-iimcategory-spo' => 'تەنتەربىيە',
+'exif-iimcategory-war' => 'ئۇرۇش، توقۇنۇش ۋە قالايمىغانچىلىق',
+'exif-iimcategory-wea' => 'ھاۋارايى',
+
+'exif-urgency-normal' => 'ئادەتتىكى ($1)',
+'exif-urgency-low' => 'تۆۋەن ($1)',
+'exif-urgency-high' => 'يۇقىرى ($1)',
+'exif-urgency-other' => 'ئىشلەتكۈچى بەلگىلىگەن ئالدىنلىق ($1)',
+
# External editor support
'edit-externally' => 'بۇ ھۆججەتنى سىرتقى قوللىنىشچان پروگراممىدا تەھرىرلە',
-'edit-externally-help' => '( [http://www.mediawiki.org/wiki/Manual:External_editors تەڭشەك قەدىمى] نى كۆرۈپ تەپسىلاتىنى چۈشىنىڭ)',
+'edit-externally-help' => '( [//www.mediawiki.org/wiki/Manual:External_editors تەڭشەك قەدىمى] نى كۆرۈپ تەپسىلاتىنى چۈشىنىڭ)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ھەممىسى',
-'imagelistall' => 'ھەممىسى',
-'watchlistall2' => 'ھەممىسى',
-'namespacesall' => 'ھەممىسى',
-'monthsall' => 'ھەممىسى',
-'limitall' => 'ھەممىسى',
+'watchlistall2' => 'ھەممىسى',
+'namespacesall' => 'ھەممىسى',
+'monthsall' => 'ھەممىسى',
+'limitall' => 'ھەممىسى',
# E-mail address confirmation
'confirmemail' => 'جەزملەش ئÛلخەت ئادرÛسى',
@@ -3122,17 +3298,25 @@ $1',
'trackbackdeleteok' => 'بۇ نەقىل مۇۋەپپەقىيەتلىك ئۆچۈرۈلدى.',
# Delete conflict
-'deletedwhileediting' => "'''ئاگاھلاندۇرۇش''': بۇ بەت تەھرىرلەشكە باشلىغاندىن ÙƒÛيىن ئۆچۈرۈلگەن!",
-'confirmrecreate' => "سىز بۇ بەتنى تەھرىرلىگەندىن ÙƒÛيىن ئىشلەتكۈچى [[User:$1|$1]] ([[User talk:$1|مۇنازىرە]]) تۆۋەندىكى سەۋەب تۈپەيلىدىن بۇ بەت ئۆچۈرۈلدى:
+'deletedwhileediting' => "'''ئاگاھلاندۇرۇش''': بۇ بەت تەھرىرلەشكە باشلىغاندىن ÙƒÛيىن ئۆچۈرۈلگەن!",
+'confirmrecreate' => "سىز بۇ بەتنى تەھرىرلىگەندىن ÙƒÛيىن ئىشلەتكۈچى [[User:$1|$1]] ([[User talk:$1|مۇنازىرە]]) تۆۋەندىكى سەۋەب تۈپەيلىدىن بۇ بەت ئۆچۈرۈلدى:
: ''$2''
راستىنلا بۇ بەتنى قايتا قۇرۇشتىن ئىلگىرى ئويلىنىڭ.",
-'recreate' => 'قايتا قۇر',
+'confirmrecreate-noreason' => 'سىز بۇ بەتنى تەھرىرلىگەندىن ÙƒÛيىن ئىشلەتكۈچى [[User:$1|$1]] ([[User talk:$1|مۇنازىرە]]) بۇ بەتنى ئۆچۈردى:
+راستىنلا بۇ بەتنى قايتا قۇرىدىغانلىقىڭىزنى جەزملەڭ.',
+'recreate' => 'قايتا قۇر',
# action=purge
'confirm_purge_button' => 'ماقۇل',
'confirm-purge-top' => 'بۇ بەتنىڭ غەملىكىنى تازىلامسىز؟',
'confirm-purge-bottom' => 'بىر بەتنى تازىلىغاندا غەملەك ۋە مەجبۇرىي كۆرسىتىدىغان نۆۋەتتىكى تۈزىتىلگەن نەشرى تازىلىنىدۇ.',
+# action=watch/unwatch
+'confirm-watch-button' => 'جەزملە',
+'confirm-watch-top' => 'بۇ بەتنى كۆزەت تىزىمىغا قوشامسىز؟',
+'confirm-unwatch-button' => 'جەزملە',
+'confirm-unwatch-top' => 'بۇ بەتنى كۆزەت تىزىمىدىن چىقىرىۋÛتەمسىز؟',
+
# Multipage image navigation
'imgmultipageprev' => '↠ئالدىنقى بەت',
'imgmultipagenext' => 'ÙƒÛيىنكى بەت →',
@@ -3175,7 +3359,7 @@ $1',
'watchlistedit-normal-legend' => 'كۆزەت تىزىملىكىدىن ماۋزۇنى چىقىرىۋەت',
'watchlistedit-normal-explain' => 'كۆزەت تىزىملىكىڭىزدىكى ماۋزۇ تۆۋەندە كۆرسىتىلىدۇ.
ماۋزۇنى بىرنى چىقىرىۋÛتىشتە، ئۇنىڭ ئالدىدىكى تاللاشنى چىقىرىۋÛتىپ، ئاندىن ماۋزۇ چىقىرىۋەتنى Ú†Ûكىڭ.
-سىز [[Special:Watchlist/raw|/ئەسلى كۆزەت تىزىملىكى تەھرىر]]لىيەلەيسىز.',
+سىز [[Special:EditWatchlist/raw|/ئەسلى كۆزەت تىزىملىكى تەھرىر]]لىيەلەيسىز.',
'watchlistedit-normal-submit' => 'ماۋزۇ چىقىرىۋەت',
'watchlistedit-normal-done' => '{{PLURAL:$1|1 ماۋزۇ|$1 ماۋزۇ}} كۆزەت تىزىملىكىڭىزدىن چىقىرىۋÛتىلدى:',
'watchlistedit-raw-title' => 'ئەسلى كۆزەت تىزىملىك تەھرىرى',
@@ -3183,7 +3367,7 @@ $1',
'watchlistedit-raw-explain' => 'كۆزەت تىزىملىكىڭىزدىكى ماۋزۇ تۆۋەندە كۆرسىتىلىدۇ، شۇنداقلا بۇ جەدۋەلنى تەھرىرلەش ئارقىلىق ماۋزۇ قوشالايسىز ياكى چىقىرىۋÛتەلەيسىز؛
ھەر قۇردا بىردىن ماۋزۇ.
تاماملانغاندا كۆزەت تىزىملىكى ÙŠÛڭىلانى Ú†Ûكىڭ.
-سىز [[Special:Watchlist/edit| ئۆلچەملىك تەھرىرلىگۈچ]] ئىشلەتسىڭىز بولىدۇ.',
+سىز [[Special:EditWatchlist| ئۆلچەملىك تەھرىرلىگۈچ]] ئىشلەتسىڭىز بولىدۇ.',
'watchlistedit-raw-titles' => 'ماۋزۇلار:',
'watchlistedit-raw-submit' => 'كۆزەت تىزىملىكى ÙŠÛڭىلا',
'watchlistedit-raw-done' => 'كۆزەت تىزىملىكىڭىز ÙŠÛڭىلاندى.',
@@ -3200,33 +3384,33 @@ $1',
'duplicate-defaultsort' => '\'\'\'ئاگاھلاندۇرۇش:\'\'\' كۆڭۈلدىكى تەرتىپلەش كۇنۇپكىسى "$2" ئىلگىرىكى كۆڭۈلدىكى تەرتىپلەش كۇنۇپكىسى "$1" نى قاپلىۋÛتىدۇ.',
# Special:Version
-'version' => 'نەشرى',
-'version-extensions' => 'قاچىلانغان ÙƒÛڭەيتىلمە',
-'version-specialpages' => 'ئالاھىدە بەتلەر',
-'version-parserhooks' => 'تەھلىلچى ئىلمىكى',
-'version-variables' => 'ئۆزگەرگۈچى مىقدار',
-'version-skins' => 'تÛرەلەر',
-'version-other' => 'باشقا',
-'version-mediahandlers' => 'ۋاسىتە بىر تەرەپ قىلغۇچ',
-'version-hooks' => 'ئىلمەك',
-'version-extension-functions' => 'تەھلىلچى Ùونكسىيە',
-'version-parser-extensiontags' => 'تەھلىلچى ÙƒÛڭەيتىلمە خەتكۈچ',
-'version-parser-function-hooks' => 'تەھلىلچى Ùونكسىيە ئىلمىكى',
-'version-skin-extension-functions' => 'تÛرە تەھلىلچى Ùونكسىيە',
-'version-hook-name' => 'ئىلمەك ئاتى',
-'version-hook-subscribedby' => 'ئىمزا قويغۇچى',
-'version-version' => '(نەشرى $1)',
-'version-license' => 'ئىجازەتنامە',
-'version-poweredby-credits' => "بۇ ۋىكىنى '''[http://www.mediawiki.org/ MediaWiki]''' تÛخنىكىلىق قوللايدۇ، نەشر ھوقۇقى © 2001-$1 $2",
-'version-poweredby-others' => 'باشقا',
-'version-license-info' => 'MediaWiki ئەركىن يۇمشاق دÛتال؛ سىز ئەركىن يۇمشاق دÛتال ۋەخپىسىنىڭ ئÛلان قىلغان GNU ئاممىباپ ئاممىۋى ئىجازەت ماددىلىرىدىكى بەلگىمىلەرگە ئاساسەن، بۇ پىروگراممىنى قايتا تارقىتىپ ياكى ئۆزگەرتەلەيسىز؛ مەيلى سىز مەزكۇر ئىجازەتنامىنىڭ ئىككىنچى نەشرى ياكى (ئۆزىڭىز تاللىغان) خالىغان كۈندە تارقىتىلغان نەشرىنى ئاساس قىلسىڭىز بولۇۋÛرىدۇ.
+'version' => 'نەشرى',
+'version-extensions' => 'قاچىلانغان ÙƒÛڭەيتىلمە',
+'version-specialpages' => 'ئالاھىدە بەتلەر',
+'version-parserhooks' => 'تەھلىلچى ئىلمىكى',
+'version-variables' => 'ئۆزگەرگۈچى مىقدار',
+'version-antispam' => 'ئەخلەتتىن ساقلىنىش',
+'version-skins' => 'تÛرەلەر',
+'version-other' => 'باشقا',
+'version-mediahandlers' => 'ۋاسىتە بىر تەرەپ قىلغۇچ',
+'version-hooks' => 'ئىلمەك',
+'version-extension-functions' => 'تەھلىلچى Ùونكسىيە',
+'version-parser-extensiontags' => 'تەھلىلچى ÙƒÛڭەيتىلمە خەتكۈچ',
+'version-parser-function-hooks' => 'تەھلىلچى Ùونكسىيە ئىلمىكى',
+'version-hook-name' => 'ئىلمەك ئاتى',
+'version-hook-subscribedby' => 'ئىمزا قويغۇچى',
+'version-version' => '(نەشرى $1)',
+'version-license' => 'ئىجازەتنامە',
+'version-poweredby-credits' => "بۇ ۋىكىنى '''[//www.mediawiki.org/ MediaWiki]''' تÛخنىكىلىق قوللايدۇ، نەشر ھوقۇقى © 2001-$1 $2",
+'version-poweredby-others' => 'باشقا',
+'version-license-info' => 'MediaWiki ئەركىن يۇمشاق دÛتال؛ سىز ئەركىن يۇمشاق دÛتال ۋەخپىسىنىڭ ئÛلان قىلغان GNU ئاممىباپ ئاممىۋى ئىجازەت ماددىلىرىدىكى بەلگىمىلەرگە ئاساسەن، بۇ پىروگراممىنى قايتا تارقىتىپ ياكى ئۆزگەرتەلەيسىز؛ مەيلى سىز مەزكۇر ئىجازەتنامىنىڭ ئىككىنچى نەشرى ياكى (ئۆزىڭىز تاللىغان) خالىغان كۈندە تارقىتىلغان نەشرىنى ئاساس قىلسىڭىز بولۇۋÛرىدۇ.
MediaWiki ئىشلىتىش مەقسىتىنى ئاساس قىلىپ ئÛلان قىلىنغان، ئەمما Ú¾Ûچقانداق كاپالەت مەسئۇلىيىتىنى ئۈستىگە ئالمايدۇ؛ سÛتىشچانلىق ياكى مۇئەييەن مەقسەت بويىچە ئىشلىتىشچانلىققا كاپالەتلىك قىلمايدۇ. تەپسىلاتىنىGNU ئاممىباپ ئاممىۋى ئىجازەتنامىدىن پايدىلىنىڭ.
-سىز مەزكۇر پىروگرامما بىلەن قوشۇپ [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU ئاممىباپ ئاممىۋى ئىجازەتنامە كۆپەيتىلمىسى] نى تاپشۇرۇۋالىسىز؛ ئەگەر بولمىسا، ئەركىن يۇمشاق دÛتال ۋەخپىسىگە خەت ÙŠÛزىڭ: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,ياكى[http://www.gnu.org/licenses/old-licenses/gpl-2.0.html توردا ئوقۇڭ]',
-'version-software' => 'قاچىلانغان يۇمشاق دÛتال',
-'version-software-product' => 'مەھسۇلات',
-'version-software-version' => 'نەشرى',
+سىز مەزكۇر پىروگرامما بىلەن قوشۇپ [{{SERVER}}{{SCRIPTPATH}}/COPYING GNU ئاممىباپ ئاممىۋى ئىجازەتنامە كۆپەيتىلمىسى] نى تاپشۇرۇۋالىسىز؛ ئەگەر بولمىسا، ئەركىن يۇمشاق دÛتال ۋەخپىسىگە خەت ÙŠÛزىڭ: 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,ياكى[//www.gnu.org/licenses/old-licenses/gpl-2.0.html توردا ئوقۇڭ]',
+'version-software' => 'قاچىلانغان يۇمشاق دÛتال',
+'version-software-product' => 'مەھسۇلات',
+'version-software-version' => 'نەشرى',
# Special:FilePath
'filepath' => 'ھۆججەت يولى',
@@ -3236,22 +3420,21 @@ MediaWiki ئىشلىتىش مەقسىتىنى ئاساس قىلىپ ئÛلان Ù
سۈرەت تولۇق ئÛنىقلىقتا كۆرسىتىلىدۇ، باشقا ھۆججەت تىپى بىۋاسىتە ئۇلانغان قوللىنىشچان پروگراممىدا ئÛچىلىدۇ',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'تەكرار ھۆججەت ئىزدە',
-'fileduplicatesearch-summary' => 'چاچما (hash) قىممىتىگە ئاساسەن تەكرار ھۆججەت ئىزدە.
-
-ھۆججەت ئاتى كىرگۈزگەندە ئالدى قوشۇلغۇچى "{{ns:file}}:" كىرگۈزمىسىڭىزمۇ بولىدۇ.',
-'fileduplicatesearch-legend' => 'تەكرار ھۆججەت ئىزدە',
-'fileduplicatesearch-filename' => ':ھۆججەت ئاتى',
-'fileduplicatesearch-submit' => 'ئىزدە',
-'fileduplicatesearch-info' => '$1 × $2 نۇقتا<br />ھۆججەت چوڭلۇقى: $3<br />MIME تىپى: $4',
-'fileduplicatesearch-result-1' => '"$1" ھۆججەتنىڭ تامامەن ئوخشاش تەكرار نۇسخىسى يوق.',
-'fileduplicatesearch-result-n' => ' "$1" ھۆججەتنىڭ تامامەن ئوخشاش {{PLURAL:$2|1 تەكرار|$2 تەكرار}} نۇسخىسى بار.',
+'fileduplicatesearch' => 'تەكرار ھۆججەت ئىزدە',
+'fileduplicatesearch-summary' => 'چاچما (hash) قىممىتىگە ئاساسەن تەكرار ھۆججەت ئىزدە.',
+'fileduplicatesearch-legend' => 'تەكرار ھۆججەت ئىزدە',
+'fileduplicatesearch-filename' => ':ھۆججەت ئاتى',
+'fileduplicatesearch-submit' => 'ئىزدە',
+'fileduplicatesearch-info' => '$1 × $2 نۇقتا<br />ھۆججەت چوڭلۇقى: $3<br />MIME تىپى: $4',
+'fileduplicatesearch-result-1' => '"$1" ھۆججەتنىڭ تامامەن ئوخشاش تەكرار نۇسخىسى يوق.',
+'fileduplicatesearch-result-n' => ' "$1" ھۆججەتنىڭ تامامەن ئوخشاش {{PLURAL:$2|1 تەكرار|$2 تەكرار}} نۇسخىسى بار.',
+'fileduplicatesearch-noresults' => '"$1" ئاتلىق ھۆججەت تÛپىلمىدى.',
# Special:SpecialPages
'specialpages' => 'ئالاھىدە بەتلەر',
-'specialpages-note' => '----
-* نورمال ئالاھىدە بەت.
-* <strong class="mw-specialpagerestricted">چەكلىمىلىك ئالاھىدە بەتلەر.</strong>',
+'specialpages-note' => '* ئادەتتىكى ئالاھىدە بەت.
+* <strong class="mw-specialpagerestricted">چەكلىمىلىك ئالاھىدە بەتلەر.</strong>
+* <span class="mw-specialpagecached">غەملەنگەن ئالاھىدە بەتلەر(ۋاقتى ئۆتكەن بولۇشى مۇمكىن).</span>',
'specialpages-group-maintenance' => 'ئاسراش دوكلاتى',
'specialpages-group-other' => 'باشقا ئالاھىدە بەتلەر',
'specialpages-group-login' => 'تىزىمغا كىر / قۇر',
diff --git a/languages/messages/MessagesUg_latn.php b/languages/messages/MessagesUg_latn.php
index bb513b6f..a0927427 100644
--- a/languages/messages/MessagesUg_latn.php
+++ b/languages/messages/MessagesUg_latn.php
@@ -16,32 +16,51 @@ $rtl = true;
$messages = array(
# Dates
-'sunday' => 'Yekshenbe',
-'monday' => 'Düshenbe',
-'tuesday' => 'Seyshenbe',
-'wednesday' => 'Charshenbe',
-'thursday' => 'Peyshenbe',
-'friday' => 'Jüme',
-'saturday' => 'Shenbe',
-'january' => 'Yanwar',
-'february' => 'Féwral',
-'march' => 'Mart',
-'april' => 'Aprél',
-'june' => 'Iyun',
-'july' => 'Iyul',
-'august' => 'Awghust',
-'september' => 'Séntebr',
-'october' => 'Öktebir',
-'november' => 'Noyabr',
-'december' => 'Dékabr',
-'may' => 'May',
+'sunday' => 'Yekshenbe',
+'monday' => 'Düshenbe',
+'tuesday' => 'Seyshenbe',
+'wednesday' => 'Charshenbe',
+'thursday' => 'Peyshenbe',
+'friday' => 'Jüme',
+'saturday' => 'Shenbe',
+'january' => 'Yanwar',
+'february' => 'Féwral',
+'march' => 'Mart',
+'april' => 'Aprél',
+'may_long' => 'May',
+'june' => 'Iyun',
+'july' => 'Iyul',
+'august' => 'Awghust',
+'september' => 'Séntebr',
+'october' => 'Öktebir',
+'november' => 'Noyabr',
+'december' => 'Dékabr',
+'may-gen' => 'May',
+'september-gen' => 'Séntebr',
+'october-gen' => 'Öktebir',
+'november-gen' => 'Noyabr',
+'december-gen' => 'Dékabr',
+'jan' => '1-Ay',
+'feb' => '2-Ay',
+'mar' => '3-Ay',
+'apr' => '4-Ay',
+'may' => 'May',
+'jun' => '6-Ay',
+'jul' => '7-Ay',
+'aug' => '8-Ay',
+'sep' => '9-Ay',
+'oct' => '10-Ay',
+'nov' => '11-Ay',
+'dec' => '12-Ay',
'mypage' => 'Mening beti',
'navigation' => 'Körüsh',
# Cologne Blue skin
-'qbedit' => 'Uzgartish',
+'qbedit' => 'Uzgartish',
+'qbspecialpages' => 'Alahida tor batleri',
+'help' => 'Yardem',
'search' => 'Izdash',
'searchbutton' => 'Izdash',
'go' => 'Kuchush',
@@ -86,6 +105,9 @@ $messages = array(
'gotaccountlink' => 'Kirish',
'loginlanguagelabel' => 'Til: $1',
+# Special:PasswordReset
+'passwordreset-username' => 'Ishletkuchi ismi:',
+
# Edit pages
'summary' => 'Hulasa:',
'minoredit' => 'Bu Kichik Uzgartish',
@@ -102,6 +124,7 @@ $messages = array(
'powersearch' => 'Izdash',
# Preferences page
+'prefs-rc' => 'Yengi uzgurush',
'searchresultshead' => 'Izdash',
'timezoneregion-asia' => 'Asiya',
'timezoneregion-europe' => 'Yawropa',
@@ -141,6 +164,7 @@ $messages = array(
'newpages' => 'Yéngi betler',
'newpages-username' => 'Ishletkuqi ismi:',
'move' => 'Yotkash',
+'movethispage' => 'Bu batni yotkang',
# Book sources
'booksources-go' => 'Kuchush',
@@ -150,6 +174,9 @@ $messages = array(
'prevpage' => 'Aldinqi bet ($1)',
'allpagessubmit' => 'Kuchush',
+# Special:LinkSearch
+'linksearch-ok' => 'Izdash',
+
# Watchlist
'watchlist' => 'Men kharawatkhan tor betleri',
'watch' => 'Karang',
@@ -173,7 +200,9 @@ $messages = array(
'ipblocklist-submit' => 'Izdash',
# Move page
-'move-watch' => 'Bu Batka Kharang',
+'movearticle' => 'Yotkigen beti:',
+'move-watch' => 'Bu Batka Kharang',
+'movepagebtn' => 'Yotkigen beti',
# Namespace 8 related
'allmessages' => 'System havarleri',
diff --git a/languages/messages/MessagesUk.php b/languages/messages/MessagesUk.php
index b8fc586c..244f1171 100644
--- a/languages/messages/MessagesUk.php
+++ b/languages/messages/MessagesUk.php
@@ -64,7 +64,7 @@ $namespaceNames = array(
NS_MEDIAWIKI => 'MediaWiki',
NS_MEDIAWIKI_TALK => 'ОбговореннÑ_MediaWiki',
NS_TEMPLATE => 'Шаблон',
- NS_TEMPLATE_TALK => 'ОбговореннÑ_шаблона',
+ NS_TEMPLATE_TALK => 'ОбговореннÑ_шаблону',
NS_HELP => 'Довідка',
NS_HELP_TALK => 'ОбговореннÑ_довідки',
NS_CATEGORY => 'КатегоріÑ',
@@ -75,7 +75,7 @@ $namespaceAliases = array(
'Спеціальні' => NS_SPECIAL,
'ЗображеннÑ' => NS_FILE,
'ОбговореннÑ_зображеннÑ' => NS_FILE_TALK,
- 'ОбговореннÑ_шаблону' => NS_TEMPLATE_TALK,
+ 'ОбговореннÑ_шаблона' => NS_TEMPLATE_TALK,
);
$dateFormats = array(
@@ -279,8 +279,8 @@ $messages = array(
'tog-shownumberswatching' => 'Показувати кількіÑÑ‚ÑŒ кориÑтувачів, Ñкі додали Ñторінку до Ñвого ÑпиÑку ÑпоÑтереженнÑ',
'tog-oldsig' => 'ІÑнуючий підпиÑ:',
'tog-fancysig' => 'ВлаÑна вікі-розмітка підпиÑу (без автоматичного поÑиланнÑ)',
-'tog-externaleditor' => "ВикориÑтовувати зовнішній редактор за умовчаннÑм (тільки Ð´Ð»Ñ Ð´Ð¾Ñвідчених кориÑтувачів, вимагає Ñпеціальних налаштувань вашого комп'ютера [http://www.mediawiki.org/wiki/Manual:External_editors Детальніше.])",
-'tog-externaldiff' => "ВикориÑтовувати зовнішню програму порівнÑÐ½Ð½Ñ Ð²ÐµÑ€Ñій за умовчаннÑм (тільки Ð´Ð»Ñ ÐµÐºÑпертів, вимагає Ñпеціальних налаштувань вашого комп'ютера. [http://www.mediawiki.org/wiki/Manual:External_editors Детальніше.])",
+'tog-externaleditor' => "ВикориÑтовувати зовнішній редактор за умовчаннÑм (тільки Ð´Ð»Ñ Ð´Ð¾Ñвідчених кориÑтувачів, вимагає Ñпеціальних налаштувань вашого комп'ютера [//www.mediawiki.org/wiki/Manual:External_editors Детальніше.])",
+'tog-externaldiff' => "ВикориÑтовувати зовнішню програму порівнÑÐ½Ð½Ñ Ð²ÐµÑ€Ñій за умовчаннÑм (тільки Ð´Ð»Ñ ÐµÐºÑпертів, вимагає Ñпеціальних налаштувань вашого комп'ютера. [//www.mediawiki.org/wiki/Manual:External_editors Детальніше.])",
'tog-showjumplinks' => 'Ðктивізувати допоміжні поÑÐ¸Ð»Ð°Ð½Ð½Ñ Â«Ð¿ÐµÑ€ÐµÐ¹Ñ‚Ð¸ до»',
'tog-uselivepreview' => 'ВикориÑтовувати швидкий попередній переглÑд (JavaScript, екÑпериментально)',
'tog-forceeditsummary' => 'Попереджати, коли не зазначений короткий Ð¾Ð¿Ð¸Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ',
@@ -377,15 +377,9 @@ $messages = array(
'listingcontinuesabbrev' => '(прод.)',
'index-category' => 'ІндекÑовані Ñторінки',
'noindex-category' => 'ÐеіндекÑовані Ñторінки',
+'broken-file-category' => 'Сторінки, що поÑилаютьÑÑ Ð½Ð° неіÑнуючі файли',
-'linkprefix' => '/^(.*?)(„|«)$/sD',
-'mainpagetext' => 'Програмне Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Â«MediaWiki» уÑпішно вÑтановлене.',
-'mainpagedocfooter' => 'Інформацію про роботу з цією вікі можна знайти в [http://meta.wikimedia.org/wiki/%D0%9F%D0%BE%D0%BC%D0%BE%D1%89%D1%8C:%D0%A1%D0%BE%D0%B4%D0%B5%D1%80%D0%B6%D0%B0%D0%BD%D0%B8%D0%B5 поÑібнику кориÑтувача].
-
-== ДеÑкі кориÑні реÑурÑи ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings СпиÑок налаштувань];
-* [http://www.mediawiki.org/wiki/Manual:FAQ ЧаÑÑ‚Ñ– Ð¿Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð· приводу MediaWiki];
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce РозÑилка повідомлень про поÑву нових верÑій MediaWiki].',
+'linkprefix' => '/^(.*?)(„|«)$/sD',
'about' => 'Про',
'article' => 'СтаттÑ',
@@ -437,10 +431,10 @@ $messages = array(
'history' => 'ІÑÑ‚Ð¾Ñ€Ñ–Ñ Ñторінки',
'history_short' => 'ІÑторіÑ',
'updatedmarker' => 'оновлено піÑÐ»Ñ Ð¼Ð¾Ð³Ð¾ оÑтаннього переглÑду',
-'info_short' => 'ІнформаціÑ',
'printableversion' => 'ВерÑÑ–Ñ Ð´Ð¾ друку',
'permalink' => 'ПоÑтійне поÑиланнÑ',
'print' => 'Друк',
+'view' => 'ПереглÑд',
'edit' => 'Редагувати',
'create' => 'Створити',
'editthispage' => 'Редагувати цю Ñторінку',
@@ -448,6 +442,7 @@ $messages = array(
'delete' => 'Вилучити',
'deletethispage' => 'Вилучити цю Ñторінку',
'undelete_short' => 'Відновити $1 {{PLURAL:$1|редагуваннÑ|редагуваннÑ|редагувань}}',
+'viewdeleted_short' => 'ПереглÑнути {{PLURAL:$1|одне вилучене редагуваннÑ|$1 вилучених редагуваннÑ|$1 вилучених редагувань}}',
'protect' => 'ЗахиÑтити',
'protect_change' => 'змінити',
'protectthispage' => 'ЗахиÑтити цю Ñторінку',
@@ -534,6 +529,8 @@ $1',
'toc' => 'ЗміÑÑ‚',
'showtoc' => 'показати',
'hidetoc' => 'Ñховати',
+'collapsible-collapse' => 'згорнути',
+'collapsible-expand' => 'розгорнути',
'thisisdeleted' => 'ПереглÑнути чи відновити $1?',
'viewdeleted' => 'ПереглÑнути $1?',
'restorelink' => '$1 {{PLURAL:$1|вилучене редагуваннÑ|вилучених редагуваннÑ|вилучених редагувань}}',
@@ -547,6 +544,8 @@ $1',
'feed-atom' => 'Atom',
'feed-rss' => 'RSS',
'red-link-title' => '$1 (така Ñторінка не Ñ–Ñнує)',
+'sort-descending' => 'ВідÑортувати за ÑпаданнÑм',
+'sort-ascending' => 'ВідÑортувати за зроÑтаннÑм',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'СтаттÑ',
@@ -630,11 +629,12 @@ $1',
'protectedpagetext' => 'Ð¦Ñ Ñторінка закрита Ð´Ð»Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ.',
'viewsourcetext' => 'Ви можете переглÑнути та Ñкопіювати початковий текÑÑ‚ цієї Ñторінки:',
'protectedinterface' => 'Ð¦Ñ Ñторінка Ñ” чаÑтиною інтерфейÑу програмного Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ñ– Ñ—Ñ— можуть редагувати лише адмініÑтратори проекту.',
-'editinginterface' => "'''Увага:''' Ви редагуєте Ñторінку, що Ñ” чаÑтиною текÑтового інтерфейÑу. Зміни цієї Ñторінки викличуть зміну інтерфейÑу Ð´Ð»Ñ Ñ–Ð½ÑˆÐ¸Ñ… кориÑтувачів. Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтовуйте [http://translatewiki.net/wiki/Main_Page?setlang=uk translatewiki.net] — проект, що займаєтьÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ”ÑŽ MediaWiki.",
+'editinginterface' => "'''Увага:''' Ви редагуєте Ñторінку, що Ñ” чаÑтиною текÑтового інтерфейÑу. Зміни цієї Ñторінки викличуть зміну інтерфейÑу Ð´Ð»Ñ Ñ–Ð½ÑˆÐ¸Ñ… кориÑтувачів. Ð”Ð»Ñ Ð¿ÐµÑ€ÐµÐºÐ»Ð°Ð´Ñƒ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтовуйте [//translatewiki.net/wiki/Main_Page?setlang=uk translatewiki.net] — проект, що займаєтьÑÑ Ð»Ð¾ÐºÐ°Ð»Ñ–Ð·Ð°Ñ†Ñ–Ñ”ÑŽ MediaWiki.",
'sqlhidden' => '(SQL запит приховано)',
'cascadeprotected' => 'Сторінка захищена від змін, оÑкільки Ñ—Ñ— включено до {{PLURAL:$1|Ñторінки, Ð´Ð»Ñ Ñкої|наÑтупних Ñторінок, Ð´Ð»Ñ Ñких}} уÑтановлено каÑкадний захиÑÑ‚: $2',
'namespaceprotected' => 'У Ð²Ð°Ñ Ð½ÐµÐ¼Ð° дозволу редагувати Ñторінки в проÑторі назв «$1».',
-'customcssjsprotected' => 'У Ð²Ð°Ñ Ð½ÐµÐ¼Ð° дозволу редагувати цю Ñторінку, бо вона міÑтить оÑобиÑÑ‚Ñ– Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½ÑˆÐ¾Ð³Ð¾ кориÑтувача.',
+'customcssprotected' => 'У Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” прав на Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ†Ñ–Ñ”Ñ— CSS-Ñторінки, так Ñк вона міÑтить оÑобиÑÑ‚Ñ– Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½ÑˆÐ¾Ð³Ð¾ кориÑтувача.',
+'customjsprotected' => 'У Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” дозволу на Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ†Ñ–Ñ”Ñ— JavaScript-Ñторінки, так Ñк вона міÑтить оÑобиÑÑ‚Ñ– Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð½ÑˆÐ¾Ð³Ð¾ кориÑтувача.',
'ns-specialprotected' => 'Спеціальні Ñторінки не можна редагувати.',
'titleprotected' => "Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñторінки з такою назвою було заборонене кориÑтувачем [[User:$1|$1]].
Зазначена наÑтупна причина: ''$2''.",
@@ -671,6 +671,7 @@ $1',
'createaccount' => 'Створити',
'gotaccount' => "Ви вже зареєÑтровані? '''$1'''.",
'gotaccountlink' => 'Увійдіть',
+'userlogin-resetlink' => 'Забули дані, потрібні Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ?',
'createaccountmail' => 'електронною поштою',
'createaccountreason' => 'Причина:',
'badretype' => 'Уведені вами паролі не збігаютьÑÑ.',
@@ -685,13 +686,16 @@ $1',
'nocookieslogin' => "{{SITENAME}} викориÑтовує куки (''cookies'') Ð´Ð»Ñ Ð²Ñ…Ð¾Ð´Ñƒ до ÑиÑтеми.
Ви їх вимкнули.
Будь лаÑка, ввімкніть куки Ñ– Ñпробуйте знову.",
+'nocookiesfornew' => 'Обліковий Ð·Ð°Ð¿Ð¸Ñ ÐºÐ¾Ñ€Ð¸Ñтувача не був Ñтворений через неможливіÑÑ‚ÑŒ перевірити його джерело.
+ПереконайтеÑÑ, що cookie ввімкнено, оновіть Ñторінку Ñ– Ñпробуйте ще раз.',
+'nocookiesforlogin' => '{{int:nocookieslogin}}',
'noname' => "Ви зазначили неправильне ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача.",
'loginsuccesstitle' => 'УÑпішний вхід до ÑиÑтеми',
'loginsuccess' => "'''Тепер ви працюєте {{grammar:locative|{{SITENAME}}}} під іменем $1.'''",
'nosuchuser' => 'КориÑтувач з іменем «$1» не Ñ–Ñнує.
Імена кориÑтувачів регіÑтрозалежні.
Перевірте правильніÑÑ‚ÑŒ напиÑÐ°Ð½Ð½Ñ Ð°Ð±Ð¾ ÑкориÑтайтеÑÑ Ñ„Ð¾Ñ€Ð¼Ð¾ÑŽ нижче, щоб [[Special:UserLogin/signup|зареєÑтрувати нового кориÑтувача]].',
-'nosuchusershort' => 'КориÑтувач з іменем <nowiki>$1</nowiki> не Ñ–Ñнує.
+'nosuchusershort' => 'КориÑтувач з іменем $1 не Ñ–Ñнує.
Перевірте правильніÑÑ‚ÑŒ напиÑÐ°Ð½Ð½Ñ Ñ–Ð¼ÐµÐ½Ñ–.',
'nouserspecified' => "Ви повинні зазначити ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача.",
'login-userblocked' => 'Цей кориÑтувач заблокований. Вхід в ÑиÑтему не дозволений.',
@@ -738,13 +742,14 @@ $1',
'usernamehasherror' => "Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача не може міÑтити Ñимволу «решітка»",
'login-throttled' => 'Ви зробили надто багато Ñпроб ввійти до ÑиÑтеми.
Будь лаÑка, зачекайте перед повторною Ñпробою.',
+'login-abort-generic' => 'Ðе вдалоÑÑ Ð²Ð²Ñ–Ð¹Ñ‚Ð¸ до ÑиÑтеми',
'loginlanguagelabel' => 'Мова: $1',
'suspicious-userlogout' => 'Ваш запит на Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ ÑеанÑа відхилений, оÑкільки він Ñхожий на запит, відправлений зіпÑованим веб-оглÑдачем або кешуючим прокÑÑ–-Ñервером.',
# E-mail sending
'php-mail-error-unknown' => 'Ðевідома помилка в PHP-mail() функції',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Змінити пароль',
'resetpass_announce' => 'Ви ввійшли, викориÑтовуючи тимчаÑовий пароль, Ñкий отримали електронною поштою. Ð”Ð»Ñ Ð·Ð°Ð²ÐµÑ€ÑˆÐµÐ½Ð½Ñ Ð²Ñ…Ð¾Ð´Ñƒ до ÑиÑтеми, ви повинні вказати новий пароль тут:',
'resetpass_text' => '<!-- Додавайте текÑÑ‚ Ñюди -->',
@@ -762,6 +767,32 @@ $1',
Можливо, ви вже уÑпішно змінили пароль або зробили запит на новий тимчаÑовий пароль.',
'resetpass-temp-password' => 'ТимчаÑовий пароль:',
+# Special:PasswordReset
+'passwordreset' => 'Скинути пароль',
+'passwordreset-text' => 'Заповніть форму, щоб отримати по ел. пошті Ð½Ð°Ð³Ð°Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾ дані Вашого облікового запиÑу.',
+'passwordreset-legend' => 'ПеревÑтановити пароль',
+'passwordreset-disabled' => 'У цій вікі вимкнена можливіÑÑ‚ÑŒ ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ.',
+'passwordreset-pretext' => '{{PLURAL:$1||Введіть одну з чаÑтин даних}}',
+'passwordreset-username' => "Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача:",
+'passwordreset-domain' => 'Домен:',
+'passwordreset-email' => 'ÐдреÑа електронної пошти:',
+'passwordreset-emailtitle' => 'Деталі облікового запиÑу на {{SITENAME}}',
+'passwordreset-emailtext-ip' => "ХтоÑÑŒ (імовірно Ви, з IP-адреÑи $1) попроÑив нагадати деталі Вашого облікового запиÑу Ð´Ð»Ñ {{SITENAME}} ($4). З Вашою електронною Ñкринькою пов'Ñзан{{PLURAL:$3|ий такий запиÑ|Ñ– такі запиÑи}}:
+
+$2
+
+{{PLURAL:$3|Цей тимчаÑовий пароль|Ці тимчаÑові паролі}} Ñтануть нечинні через {{PLURAL:$5|день|$5 дні|$5 днів}}.
+Ви маєте ввійти в ÑиÑтему Ñ– вибрати новий пароль. Якщо ж цей запит зробив хтоÑÑŒ інший, або Ви пам'Ñтаєте Ñвій Ñтарий пароль Ñ– не бажаєте його змінювати, можете проÑто проігнорувати це Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‚Ð° продовжувати викориÑтовувати Ñтарий пароль.",
+'passwordreset-emailtext-user' => "КориÑтувач $1 з {{SITENAME}} попроÑив нагадати деталі Вашого облікового запиÑу Ð´Ð»Ñ {{SITENAME}} ($4). З Вашою електронною Ñкринькою пов'Ñзан{{PLURAL:$3|ий такий запиÑ|Ñ– такі запиÑи}}:
+
+$2
+
+{{PLURAL:$3|Цей тимчаÑовий пароль|Ці тимчаÑові паролі}} Ñтануть нечинні через {{PLURAL:$5|день|$5 дні|$5 днів}}.
+Ви маєте ввійти в ÑиÑтему Ñ– вибрати новий пароль. Якщо ж цей запит зробив хтоÑÑŒ інший, або Ви пам'Ñтаєте Ñвій Ñтарий пароль Ñ– не бажаєте його змінювати, можете проÑто проігнорувати це Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ñ‚Ð° продовжувати викориÑтовувати Ñтарий пароль.",
+'passwordreset-emailelement' => "Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача: $1
+ТимчаÑовий пароль: $2",
+'passwordreset-emailsent' => 'Ðагадувальний електронний лиÑÑ‚ відправлений.',
+
# Edit page toolbar
'bold_sample' => 'Жирний текÑÑ‚',
'bold_tip' => 'Жирний текÑÑ‚',
@@ -773,8 +804,6 @@ $1',
'extlink_tip' => 'Зовнішнє поÑÐ¸Ð»Ð°Ð½Ð½Ñ (не забудьте про Ð¿Ñ€ÐµÑ„Ñ–ÐºÑ http://)',
'headline_sample' => 'ТекÑÑ‚ заголовка',
'headline_tip' => 'Заголовок 2-го рівнÑ',
-'math_sample' => 'Ð’Ñтавте Ñюди формулу',
-'math_tip' => 'Математична формула (LaTeX)',
'nowiki_sample' => 'Ð’ÑтавлÑйте Ñюди невідформатований текÑÑ‚.',
'nowiki_tip' => 'Ігнорувати вікі-форматуваннÑ',
'image_sample' => 'Example.jpg',
@@ -864,7 +893,7 @@ $1',
'noarticletext-nopermission' => 'Зараз на цій Ñторінці відÑутній текÑÑ‚.
Ви можете [[Special:Search/{{PAGENAME}}|пошукати такий заголовок]] Ñеред інших Ñторінок,
або <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} пошукати пов\'Ñзані запиÑи в журналах]</span>.',
-'userpage-userdoesnotexist' => 'КориÑтувач під назвою "$1" не зареєÑтрований. ПереконайтеÑÑ, що ви хочете Ñтворити/редагувати цю Ñторінку.',
+'userpage-userdoesnotexist' => 'КориÑтувач під назвою "<nowiki>$1</nowiki>" не зареєÑтрований. ПереконайтеÑÑ, що ви хочете Ñтворити/редагувати цю Ñторінку.',
'userpage-userdoesnotexist-view' => 'Обліковий Ð·Ð°Ð¿Ð¸Ñ ÐºÐ¾Ñ€Ð¸Ñтувача „$1“ не зареєÑтровано.',
'blocked-notice-logextract' => 'Цей кориÑтувач наразі заблокований.
ОÑтанній Ð·Ð°Ð¿Ð¸Ñ Ñƒ журналі блокувань такий:',
@@ -894,6 +923,7 @@ $1',
<strong>Якщо це доброÑкіÑна Ñпроба редагуваннÑ, будь лаÑка, Ñпробуйте ще раз. Якщо не вийде знову, - Ñпробуйте [[Special:UserLogout|завершити ÑÐµÐ°Ð½Ñ Ñ€Ð¾Ð±Ð¾Ñ‚Ð¸]] й ще раз ввійти до ÑиÑтеми.</strong>",
'token_suffix_mismatch' => "'''Ваше Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÑƒÐ»Ð¾ відхилене, оÑкільки ваша програма не правильно оброблÑÑ” знаки пунктуації у вікні редагуваннÑ. Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð±ÑƒÐ»Ð¾ ÑкаÑоване Ð´Ð»Ñ Ð·Ð°Ð¿Ð¾Ð±Ñ–Ð³Ð°Ð½Ð½Ñ Ñпотворенню текÑту Ñтатті.
Подібні проблеми можуть виникати при викориÑтанні анонімізуючих веб-прокÑÑ–, що міÑÑ‚ÑÑ‚ÑŒ помилки.'''",
+'edit_form_incomplete' => "'''ЧаÑтина даних із форми Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ðµ доÑÑгла Ñервера. Уважно перевірте чи не пошкоджено ваших правок Ñ– Ñпробуйте ще раз.'''",
'editing' => 'Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ $1',
'editingsection' => 'Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ $1 (розділ)',
'editingcomment' => 'Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ $1 (новий розділ)',
@@ -937,6 +967,7 @@ $1',
'template-semiprotected' => '(чаÑтково захищено)',
'hiddencategories' => 'Ð¦Ñ Ñторінка належить до $1 {{PLURAL:$1|прихованої категорії|прихованих категорій|прихованих категорій}}:',
'edittools' => '<!-- Розміщений тут текÑÑ‚ буде відображатиÑÑ Ð¿Ñ–Ð´ формою Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ– формою завантаженнÑ. -->',
+'edittools-upload' => '-',
'nocreatetitle' => 'Ð¡Ñ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ñторінок обмежено',
'nocreatetext' => 'Ðа цьому Ñайті обмежено можливіÑÑ‚ÑŒ ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¸Ñ… Ñторінок.
Ви можете повернутьÑÑ Ð½Ð°Ð·Ð°Ð´ й змінити Ñ–Ñнуючу Ñторінку, [[Special:UserLogin|ввійти в ÑиÑтему, або Ñтворити новий обліковий запиÑ]].',
@@ -1239,12 +1270,13 @@ $1",
'searchdisabled' => '<p>Вибачте, повнотекÑтовий пошук тимчаÑово недоÑтупний через Ð¿ÐµÑ€ÐµÐ²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñервера; передбачаєтьÑÑ, що Ñ†Ñ Ñ„ÑƒÐ½ÐºÑ†Ñ–Ñ Ð±ÑƒÐ´Ðµ знову включена піÑÐ»Ñ ÑƒÑтановки нового обладнаннÑ. Поки що ми пропонуємо вам ÑкориÑтатиÑÑ Google чи Yahoo!:</p>',
# Quickbar
-'qbsettings' => 'Панель навігації',
-'qbsettings-none' => 'Ðе показувати панель',
-'qbsettings-fixedleft' => 'ФікÑована ліворуч',
-'qbsettings-fixedright' => 'ФікÑована праворуч',
-'qbsettings-floatingleft' => 'Плаваюча ліворуч',
-'qbsettings-floatingright' => 'Плаваюча праворуч',
+'qbsettings' => 'Панель навігації',
+'qbsettings-none' => 'Ðе показувати панель',
+'qbsettings-fixedleft' => 'ФікÑована ліворуч',
+'qbsettings-fixedright' => 'ФікÑована праворуч',
+'qbsettings-floatingleft' => 'Плаваюча ліворуч',
+'qbsettings-floatingright' => 'Плаваюча праворуч',
+'qbsettings-directionality' => 'ФікÑована, залежно від напрÑмку пиÑьма вашої мови',
# Preferences page
'preferences' => 'ÐалаштуваннÑ',
@@ -1255,9 +1287,10 @@ $1",
'changepassword' => 'Змінити пароль',
'prefs-skin' => 'ОформленнÑ',
'skin-preview' => 'Попередній переглÑд',
-'prefs-math' => 'Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼ÑƒÐ»',
'datedefault' => 'Стандартний',
+'prefs-beta' => 'Бета-функції',
'prefs-datetime' => 'Дата й чаÑ',
+'prefs-labs' => 'ЕкÑпериментальні функції',
'prefs-personal' => 'ОÑобиÑÑ‚Ñ– дані',
'prefs-rc' => 'Сторінка оÑтанніх редагувань',
'prefs-watchlist' => 'СпиÑок ÑпоÑтереженнÑ',
@@ -1279,8 +1312,6 @@ $1",
'columns' => 'Колонок:',
'searchresultshead' => 'Пошук',
'resultsperpage' => 'КількіÑÑ‚ÑŒ результатів на Ñторінку:',
-'contextlines' => 'КількіÑÑ‚ÑŒ Ñ€Ñдків на результат',
-'contextchars' => 'КількіÑÑ‚ÑŒ Ñимволів контекÑту на Ñ€Ñдок',
'stub-threshold' => 'Поріг Ð´Ð»Ñ Ð²Ð¸Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ <a href="#" class="stub">поÑилань на Ñтаби</a> (у байтах):',
'stub-threshold-disabled' => 'Вимкнений',
'recentchangesdays' => 'Ðа Ñкільки днів показувати нові редагуваннÑ:',
@@ -1293,7 +1324,7 @@ $1",
'savedprefs' => 'Ваші Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¾.',
'timezonelegend' => 'ЧаÑовий поÑÑ:',
'localtime' => 'МіÑцевий чаÑ:',
-'timezoneuseserverdefault' => 'ВикориÑтовувати Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñервера',
+'timezoneuseserverdefault' => 'ВикориÑтовувати Ñтандартне Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ñ–ÐºÑ– ($1)',
'timezoneuseoffset' => 'Інше (зазначте зміщеннÑ)',
'timezoneoffset' => 'Зміщеннѹ:',
'servertime' => 'Ð§Ð°Ñ Ñервера:',
@@ -1345,8 +1376,8 @@ $1",
'email' => 'Електронна пошта',
'prefs-help-realname' => "Справжнє ім'Ñ Ð½ÐµÐ¾Ð±Ð¾Ð²'Ñзково вказувати.
Якщо ви його зазначите, то воно буде викориÑтовуватиÑÑ, щоб показати, хто редагував Ñторінку.",
-'prefs-help-email' => "ÐдреÑа електронної пошти (необов'Ñзкове поле) дає можливіÑÑ‚ÑŒ надіÑлати вам новий пароль у випадку, Ñкщо ви забули поточний.
-Також вона дозволить іншим кориÑтувачам за допомогою вашої Ñторінки у вікі зв'ÑзатиÑÑ Ð· вами, не знаючи вашої електронної адреÑи.",
+'prefs-help-email' => "ÐдреÑа електронної пошти не Ñ” обов'Ñзковою, але необхідна Ð´Ð»Ñ ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ, Ñкщо ви його забудете.",
+'prefs-help-email-others' => "Також вона дозволить іншим кориÑтувачам зв'ÑзатиÑÑ Ð· вами через вашу оÑобиÑту Ñторінку без необхідноÑÑ‚Ñ– Ñ€Ð¾Ð·ÐºÑ€Ð¸Ñ‚Ñ‚Ñ Ð²Ð°ÑˆÐ¾Ñ— електронної адреÑи.",
'prefs-help-email-required' => 'Потрібно зазначити адреÑу електронної пошти.',
'prefs-info' => 'ОÑновні відомоÑÑ‚Ñ–',
'prefs-i18n' => 'ІнтернаціоналізаціÑ',
@@ -1472,15 +1503,15 @@ $1",
'right-userrights' => 'Зміна вÑÑ–Ñ… прав кориÑтувачів',
'right-userrights-interwiki' => 'Зміна прав кориÑтувачів у інших вікі',
'right-siteadmin' => 'Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ– Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð·Ð¸ даних',
-'right-reset-passwords' => 'ÑÐºÐ¸Ð´Ð°Ð½Ð½Ñ Ð¿Ð°Ñ€Ð¾Ð»Ñ–Ð² інших кориÑтувачів',
'right-override-export-depth' => "екÑпорт Ñторінок, включаючи пов'Ñзані Ñторінки з глибиною до 5",
'right-sendemail' => 'відправлÑти пошту іншим кориÑтувачам',
# User rights log
-'rightslog' => 'Журнал прав кориÑтувача',
-'rightslogtext' => 'Це протокол зміни прав кориÑтувачів.',
-'rightslogentry' => 'змінив права доÑтупу Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувача $1 з $2 на $3',
-'rightsnone' => '(нема)',
+'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' => 'переглÑд цієї Ñторінки',
@@ -1615,13 +1646,13 @@ $1",
'minlength1' => 'Ðазва файлу повинна міÑтити щонайменше одну літеру.',
'illegalfilename' => 'Ім\'Ñ Ñ„Ð°Ð¹Ð»Ñƒ "$1" міÑтить букви, що недозволені в заголовках Ñторінок. Будь лаÑка перейменуйте файл Ñ– Ñпробуйте завантажити його знову.',
'badfilename' => 'Ðазву файлу було змінено на $1.',
-'filetype-mime-mismatch' => 'Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ не відповідає MIME-типу.',
+'filetype-mime-mismatch' => 'Ð Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ ".$1" файлу не відповідає виÑвленому MIME типу файлу ($2).',
'filetype-badmime' => 'Файли, що мають MIME-тип «$1», не можуть бути завантажені.',
'filetype-bad-ie-mime' => 'Ðеможливо завантажити цей файл, оÑкільки Internet Explorer визначатиме його Ñк «$1», тобто недозволеним Ñ– потенційно небезпечним типом файлу.',
'filetype-unwanted-type' => "'''\".\$1\"''' — небажаний тип файлу.
{{PLURAL:\$3|Бажаний тип файлів|Бажані типи файлів}}: \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' — заборонений тип файлу.
-{{PLURAL:\$3|Дозволений тип файлів|Дозволені типи файлів}}: \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' — {{PLURAL:$4|недозволений тип файлів|недозволені типи файлів}}.
+{{PLURAL:$3|Дозволений тип файлів|Дозволені типи файлів}}: $2.',
'filetype-missing' => 'ВідÑутнє Ñ€Ð¾Ð·ÑˆÐ¸Ñ€ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñƒ (наприклад, «.jpg»).',
'empty-file' => 'ÐадіÑланий вами файл порожній.',
'file-too-large' => 'Файл, Ñкий ви надіÑлали, завеликий.',
@@ -1637,6 +1668,7 @@ $1",
'large-file' => 'РекомендуєтьÑÑ Ð²Ð¸ÐºÐ¾Ñ€Ð¸Ñтовувати зображеннÑ, розмір Ñких не перевищує $1 байтів (размір завантаженого файлу Ñкладає $2 байтів).',
'largefileserver' => 'Розмір файлу більший за макÑимальнодозволений.',
'emptyfile' => 'Завантажений вами файл ймовірно порожній. Можливо, це ÑталоÑÑ Ñ‡ÐµÑ€ÐµÐ· помилку при введенні імені файлу. Будь-лаÑка, перевірте, чи Ñправді ви бажаєте звантажити цей файл.',
+'windows-nonascii-filename' => 'Ð¦Ñ Ð²Ñ–ÐºÑ– не підтримує імена файлів зі Ñпеціальними Ñимволами.',
'fileexists' => "Файл з такою назвою вже Ñ–Ñнує.
Будь лаÑка, перевірте '''<tt>[[:$1]]</tt>''', Ñкщо ви не впевнені, чи хочете замінити його.
[[$1|thumb]]",
@@ -1670,6 +1702,8 @@ $1",
'php-uploaddisabledtext' => 'Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² вимкнене у налаштуваннÑÑ… PHP. Будь лаÑка, перевірте Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ file_uploads.',
'uploadscripted' => 'Файл міÑтить HTML-код або Ñкрипт, Ñкий може неправильно обробитиÑÑ Ð±Ñ€Ð°ÑƒÐ·ÐµÑ€Ð¾Ð¼.',
'uploadvirus' => 'Файл міÑтить віруÑ! Див. $1',
+'uploadjava' => 'Файл Ñ” ZIP-архівом, що міÑтить .class-файл Java.
+Ð—Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶ÐµÐ½Ð½Ñ Java-файлів не дозволене, бо вони можуть викориÑтовуватиÑÑ Ð´Ð»Ñ Ð¾Ð±Ñ…Ð¾Ð´Ñƒ ÑиÑтеми безпеки.',
'upload-source' => 'Вихідний файл',
'sourcefilename' => 'Ðазва початкового файлу:',
'sourceurl' => 'Вихідна URL-адреÑа:',
@@ -1680,10 +1714,6 @@ $1",
'watchthisupload' => 'СпоÑтерігати за цим файлом',
'filewasdeleted' => 'Файл з такою назвою вже Ñ–Ñнував, але був вилучений.
Вам Ñлід перевірити $1 перед повторним завантаженнÑм.',
-'upload-wasdeleted' => "'''ПопередженнÑ: Ви хочете завантажити файл, Ñкий раніше вилучавÑÑ.'''
-
-Перевірте, чи Ñправді варто завантажувати файл.
-Ðижче показано журнал вилучень Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ файлу:",
'filename-bad-prefix' => "Ðазва завантажуваного файлу починаєтьÑÑ Ð½Ð° '''«$1»''' Ñ–, можливо, Ñ” шаблонною назвою, Ñку цифрова фотокамера дає знімкам. Будь лаÑка, виберіть назву, Ñка краще опиÑуватиме вміÑÑ‚ файлу.",
'filename-prefix-blacklist' => ' #<!-- не мінÑйте цей Ñ€Ñдок --> <pre>
# СинтакÑÐ¸Ñ Ñ‚Ð°ÐºÐ¸Ð¹:
@@ -1718,6 +1748,23 @@ $1',
'upload-unknown-size' => 'Ðевідомий розмір',
'upload-http-error' => 'ВідбулаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'При відкритті ZIP-архіву Ð´Ð»Ñ Ð¹Ð¾Ð³Ð¾ перевірки виникла помилка.',
+'zip-wrong-format' => 'Вказаний файл не є ZIP-файлом',
+'zip-bad' => 'ZIP-файл Ñ” пошкоджений чи в інший ÑпоÑіб непридатний Ð´Ð»Ñ Ð·Ñ‡Ð¸Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ.
+Він не піддаєтьÑÑ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ñ†Ñ– в цілÑÑ… безпеки.',
+'zip-unsupported' => 'Файл викориÑтовує такі можливоÑÑ‚Ñ– ZIP, Ñкі не підтримуютьÑÑ MediaWiki.
+Він не піддаєтьÑÑ Ð¿ÐµÑ€ÐµÐ²Ñ–Ñ€Ñ†Ñ– в цілÑÑ… безпеки.',
+
+# Special:UploadStash
+'uploadstash' => 'Завантажити Ñховок',
+'uploadstash-summary' => 'Ð¦Ñ Ñторінка надає доÑтуп до файлів, що були завантажені (або завантажуютьÑÑ Ð·Ð°Ñ€Ð°Ð·), але ще не були опубліковані в вікі. Ці файли не відображаютьÑÑ Ð½Ñ–ÐºÐ¾Ð¼Ñƒ, крім кориÑтувача, що Ñ—Ñ… завантажив.',
+'uploadstash-clear' => 'ОчиÑтити Ñховані файли',
+'uploadstash-nofiles' => 'У Ð²Ð°Ñ Ð½ÐµÐ¼Ð°Ñ” Ñхованих файлів.',
+'uploadstash-badtoken' => 'Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ вказані дії. Можливо, вичерпаний термін дії ÑеÑÑ–Ñ— редагуваннÑ. Спробуйте ще раз.',
+'uploadstash-errclear' => 'ÐžÑ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ Ñ„Ð°Ð¹Ð»Ñ–Ð² не вдалоÑÑ.',
+'uploadstash-refresh' => 'Оновити ÑпиÑок файлів',
+
# img_auth script messages
'img-auth-accessdenied' => 'Відмовлено в доÑтупі',
'img-auth-nopathinfo' => 'Брак PATH_INFO.
@@ -1800,7 +1847,7 @@ $1',
Також доÑтупний [[Special:WhatLinksHere/$2|повний ÑпиÑок]].',
'nolinkstoimage' => 'Ðема Ñторінок, що поÑилаютьÑÑ Ð½Ð° цей файл.',
'morelinkstoimage' => 'ПереглÑнути [[Special:WhatLinksHere/$1|інші поÑиланнÑ]] на цей файл.',
-'redirectstofile' => 'Ðа цей файл {{PLURAL:$1|перенаправлÑєтьÑÑ Ñ„Ð°Ð¹Ð»|перенаправлÑÑŽÑ‚ÑŒÑÑ Ñ‚Ð°ÐºÑ– файли}}:',
+'linkstoimage-redirect' => '$1 (файл-перенаправленнÑ) $2',
'duplicatesoffile' => '{{PLURAL:$1|Дублікатом цього файлу є файл|Такі $1 файли є дублікатами цього файлу|Такі $1 файлів є дублікатами цього файлу}}
([[Special:FileDuplicateSearch/$2|докладніше]]):',
'sharedupload' => 'Цей файл із $1 Ñ– Ñ” доÑтупним Ð´Ð»Ñ Ñ–Ð½ÑˆÐ¸Ñ… проектів.',
@@ -1897,12 +1944,13 @@ $1',
'disambiguationspage' => 'Template:disambig',
'disambiguations-text' => "ÐаÑтупні Ñторінки поÑилаютьÑÑ Ð½Ð° '''багатозначні Ñторінки'''. Однак вони, ймовірно, повинні вказувати на відповідну конкретну Ñтаттю.<br />Сторінка вважаєтьÑÑ Ð±Ð°Ð³Ð°Ñ‚Ð¾Ð·Ð½Ð°Ñ‡Ð½Ð¾ÑŽ, Ñкщо на ній розміщений шаблон, назва Ñкого Ñ” на Ñторінці [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Подвійні перенаправленнÑ',
-'doubleredirectstext' => 'Ðа цій Ñторінці наведено ÑпиÑок перенаправлень на інші перенаправленнÑ.
+'doubleredirects' => 'Подвійні перенаправленнÑ',
+'doubleredirectstext' => 'Ðа цій Ñторінці наведено ÑпиÑок перенаправлень на інші перенаправленнÑ.
Кожен Ñ€Ñдок міÑтить поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° перше та друге перенаправленнÑ, а також перший Ñ€Ñдок текÑту другого перенаправленнÑ, що зазвичай міÑтить «реальне» Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð½Ð° необхідну Ñторінку, куди повинно вказувати й перше перенаправленнÑ.
<del>ЗакреÑлені</del> запиÑи були виправлені.',
-'double-redirect-fixed-move' => 'Сторінка «[[$1]]» була перейменована, зараз вона Ñ” перенаправленнÑм на «[[$2]]»',
-'double-redirect-fixer' => 'Redirect fixer',
+'double-redirect-fixed-move' => 'Сторінка «[[$1]]» була перейменована, зараз вона Ñ” перенаправленнÑм на «[[$2]]»',
+'double-redirect-fixed-maintenance' => 'Ð’Ð¸Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð´Ð²Ñ–Ð¹Ð½Ð¾Ð³Ð¾ Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð· [[$1]] на [[$2]].',
+'double-redirect-fixer' => 'Redirect fixer',
'brokenredirects' => 'Розірвані перенаправленнÑ',
'brokenredirectstext' => 'Такі Ð¿ÐµÑ€ÐµÐ½Ð°Ð¿Ñ€Ð°Ð²Ð»ÐµÐ½Ð½Ñ Ð²ÐºÐ°Ð·ÑƒÑŽÑ‚ÑŒ на неіÑнуючі Ñторінки:',
@@ -1979,6 +2027,7 @@ $1',
'pager-newer-n' => '{{PLURAL:$1|новіша|новіші|новіших}} $1',
'pager-older-n' => '{{PLURAL:$1|Ñтаріша|Ñтаріші|Ñтаріших}} $1',
'suppress' => 'Ревізор',
+'querypage-disabled' => 'Цю Ñпеціальну Ñторінку вимкнуто Ð´Ð»Ñ Ð¿Ð¾ÐºÑ€Ð°Ñ‰ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾Ð´ÑƒÐºÑ‚Ð¸Ð²Ð½Ð¾ÑÑ‚Ñ–.',
# Book sources
'booksources' => 'Джерела книг',
@@ -2097,6 +2146,10 @@ $1',
'noemailtext' => 'Цей кориÑтувач не вказав коректної адреÑи електронної пошти.',
'nowikiemailtitle' => 'Ел. пошти не дозволено',
'nowikiemailtext' => 'Цей кориÑтувач вирішив не отримувати ел. пошту від інших кориÑтувачів.',
+'emailnotarget' => "ÐеіÑнуюче чи некоректне ім'Ñ Ð¾Ð´ÐµÑ€Ð¶ÑƒÐ²Ð°Ñ‡Ð°",
+'emailtarget' => "Введіть ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача-одержувача",
+'emailusername' => "Ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача:",
+'emailusernamesubmit' => 'ÐадіÑлати',
'email-legend' => 'ÐадіÑлати лиÑта іншому кориÑтувачеві {{grammar:genitive|{{SITENAME}}}}',
'emailfrom' => 'Від кого:',
'emailto' => 'Кому:',
@@ -2122,10 +2175,10 @@ $1',
'watchlistanontext' => 'Вам необхідно $1, щоб переглÑнути чи редагувати ÑпиÑок ÑпоÑтереженнÑ.',
'watchnologin' => 'Ви не ввійшли до ÑиÑтеми',
'watchnologintext' => 'Ви повинні [[Special:UserLogin|ввійти до ÑиÑтеми]], щоб мати можливіÑÑ‚ÑŒ змінювати ÑпиÑок ÑпоÑтереженнÑ.',
-'addedwatch' => 'Додана до ÑпиÑку ÑпоÑтереженнÑ',
+'addwatch' => 'Додати до ÑпиÑку ÑпоÑтереженнÑ',
'addedwatchtext' => "Сторінка «[[:$1]]» додана до вашого [[Special:Watchlist|ÑпиÑку ÑпоÑтереженнÑ]].
ÐаÑтупні Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ†Ñ–Ñ”Ñ— Ñтатті Ñ– пов'Ñзаної з нею Ñторінки Ð¾Ð±Ð³Ð¾Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð±ÑƒÐ´ÑƒÑ‚ÑŒ відображатиÑÑ Ð² цьому ÑпиÑку, а також будуть виділені '''жирним шрифтом''' на Ñторінці зі [[Special:RecentChanges|ÑпиÑком оÑтанніх редагувань]], щоб Ñ—Ñ… було легше помітити.",
-'removedwatch' => 'Вилучена зі ÑпиÑку ÑпоÑтереженнÑ',
+'removewatch' => 'Видалити зі ÑпиÑку ÑпоÑтереженнÑ',
'removedwatchtext' => 'Сторінка «[[:$1]]» вилучена з вашого [[Special:Watchlist|ÑпиÑку ÑпоÑтереженнÑ]].',
'watch' => 'СпоÑтерігати',
'watchthispage' => 'СпоÑтерігати за цією Ñторінкою',
@@ -2146,8 +2199,9 @@ $1',
'watchlist-options' => 'ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑпиÑку ÑпоÑтереженнÑ',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð´Ð¾ ÑпиÑку ÑпоÑтереженнÑ…',
-'unwatching' => 'Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð·Ñ– ÑпиÑку ÑпоÑтереженнÑ…',
+'watching' => 'Ð”Ð¾Ð´Ð°Ð²Ð°Ð½Ð½Ñ Ð´Ð¾ ÑпиÑку ÑпоÑтереженнÑ…',
+'unwatching' => 'Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð·Ñ– ÑпиÑку ÑпоÑтереженнÑ…',
+'watcherrortext' => 'СталаÑÑ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ° при заміні налаштувань ÑпиÑку ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð´Ð»Ñ " $1 ".',
'enotif_mailer' => '{{SITENAME}} Служба ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð¿Ð¾ÑˆÑ‚Ð¾ÑŽ',
'enotif_reset' => 'Помітити вÑÑ– Ñторінки Ñк переглÑнуті',
@@ -2159,32 +2213,35 @@ $1',
'enotif_lastvisited' => 'Див. $1 Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду вÑÑ–Ñ… змін, що відбулиÑÑ Ð¿Ñ–ÑÐ»Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ оÑтаннього переглÑду.',
'enotif_lastdiff' => 'Див. $1 Ð´Ð»Ñ Ð¾Ð·Ð½Ð°Ð¹Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð· цією зміною.',
'enotif_anon_editor' => 'анонімний кориÑтувач $1',
-'enotif_body' => 'Шановний/на $WATCHINGUSERNAME,
+'enotif_body' => 'Шановний $WATCHINGUSERNAME,
+
-$PAGEEDITDATE Ñторінка проекту «{{SITENAME}}» $PAGETITLE була $CHANGEDORCREATED кориÑтувачем $PAGEEDITOR, див. $PAGETITLE_URL, щоб переглÑнути поточну верÑÑ–ÑŽ.
+$PAGEEDITDATE Ñторінка проекту «{{SITENAME}}» $PAGETITLE була $CHANGEDORCREATED кориÑтувачем $PAGEEDITOR, дивітьÑÑ $PAGETITLE_URL Ñк поточну верÑÑ–ÑŽ.
$NEWPAGE
Короткий Ð¾Ð¿Ð¸Ñ Ð·Ð¼Ñ–Ð½: $PAGESUMMARY $PAGEMINOREDIT
-ЗвернутиÑÑ Ð´Ð¾ кориÑтувача, що редагував:
-ел. пошта: $PAGEEDITOR_EMAIL
-вікі: $PAGEEDITOR_WIKI
+ЗвернутиÑÑŒ до редагувальника:
+електронною поштою: $PAGEEDITOR_EMAIL
+через вікі: $PAGEEDITOR_WIKI
-Якщо Ви не відвідуєте цю Ñторінку, не буде подальшого ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð² разі нових змін.
-Ви можете також змінити параметри ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð´Ð»Ñ Ð²ÑÑ–Ñ… Ñторінок у вашому ÑпиÑку ÑпоÑтереженнÑ.
+Якщо ви не відвідаєте цю Ñторінку, то в подальшому не будете отримувати Ñповіщень про наÑтупні редагуваннÑ. Ви також можете вимкнути Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ñповіщень Ð´Ð»Ñ ÑƒÑÑ–Ñ… Ñторінок зі ÑпиÑку ÑпоÑтереженнÑ.
- СиÑтема ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ {{grammar:genitive|{{SITENAME}}}}
+ Ваша Ð´Ñ€ÑƒÐ¶Ð½Ñ ÑиÑтема ÑÐ¿Ð¾Ð²Ñ–Ñ‰ÐµÐ½Ð½Ñ {{grammar:genitive|{{SITENAME}}}}
--
-Змінити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð²Ð°ÑˆÐ¾Ð³Ð¾ ÑпиÑку ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð¼Ð¾Ð¶Ð½Ð° на
-{{fullurl:{{#special:Watchlist}}/edit}}
+Зміна налаштувань повідомлень електронною поштою
+{{canonicalurl:{{#special:Preferences}}}}
-Ð”Ð»Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ñторінки з вашого ÑпиÑку ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð²Ñ–Ð´Ð²Ñ–Ð´Ð°Ð¹Ñ‚Ðµ
+Щоб змінити Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑпиÑку ÑпоÑтереженнÑ, перейдіть за поÑиланнÑм
+{{canonicalurl:{{#special:EditWatchlist}}}}
+
+Щоб вилучити Ñторінку зі ÑпиÑку ÑпоÑтереженнÑ, відвідайте Ñторінку
$UNWATCHURL
-Зворотний зв\'Ñзок та допомога:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+Зворотній зв\'Ñзок Ñ– допомога:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Вилучити Ñторінку',
@@ -2201,7 +2258,7 @@ $UNWATCHURL
Будь лаÑка, підтвердіть, що ви бажаєте зробити це, повніÑÑ‚ÑŽ розумієте наÑлідки Ñ– що робите це у відповідноÑÑ‚Ñ– з [[{{MediaWiki:Policy-url}}|правилами]].',
'actioncomplete' => 'Дію виконано',
'actionfailed' => 'Виконати дію не вдалоÑÑ',
-'deletedtext' => '"<nowiki>$1</nowiki>" було вилучено.
+'deletedtext' => '"$1" було вилучено.
Див. $2 Ð´Ð»Ñ Ð¿ÐµÑ€ÐµÐ³Ð»Ñду ÑпиÑку оÑтанніх вилучень.',
'deletedarticle' => 'вилучив «[[$1]]»',
'suppressedarticle' => 'прихована «[[$1]]»',
@@ -2260,7 +2317,7 @@ $UNWATCHURL
'protect_expiry_invalid' => 'Ðеправильний Ñ‡Ð°Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ð·Ð°Ñ…Ð¸Ñту.',
'protect_expiry_old' => 'Ð§Ð°Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ â€” в минулому.',
'protect-unchain-permissions' => 'Відкрити доÑтуп до додаткових параметрів захиÑту',
-'protect-text' => "Тут ви можете переглÑнути та змінити рівень захиÑту Ñторінки '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Тут ви можете переглÑнути та змінити рівень захиÑту Ñторінки '''$1'''.",
'protect-locked-blocked' => "Ви не можете змінювати рівень захиÑту Ñторінки, доки ваш обліковий Ð·Ð°Ð¿Ð¸Ñ Ð·Ð°Ð±Ð»Ð¾ÐºÐ¾Ð²Ð°Ð½Ð¸Ð¹.
Поточні уÑтановки Ð´Ð»Ñ Ñторінки '''$1''':",
'protect-locked-dblock' => "Рівень захиÑту не може бути зміненим, так Ñк оÑновна база даних тимчаÑово заблокована.
@@ -2313,9 +2370,8 @@ $UNWATCHURL
'viewdeletedpage' => 'ПереглÑнути видалені Ñторінки',
'undeletepagetext' => '{{PLURAL:$1|Сторінка була вилучена, однак вона вÑе ще знаходитьÑÑ Ð² архіві, тому може бути відновлена|Такі Ñторінки були вилучені, але вони вÑе ще знаходÑÑ‚ÑŒÑÑ Ð² архіві Ñ– тому можуть бути відновлені}}. Ðрхів періодично очищаєтьÑÑ.',
'undelete-fieldset-title' => 'Відновити верÑÑ–Ñ—',
-'undeleteextrahelp' => "Ð”Ð»Ñ Ð¿Ð¾Ð²Ð½Ð¾Ð³Ð¾ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñторінки залиште вÑÑ– позначки порожніми й натиÑніть '''«Відновити»'''.
-Ð”Ð»Ñ Ñ‡Ð°Ñткового Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð·Ð½Ð°Ñ‡Ñ‚Ðµ Ñ‚Ñ– верÑÑ–Ñ— Ñторінки, Ñкі необхідно відновити та натиÑніть '''«Відновити»'''.
-Щоб прибрати вÑÑ– позначки й очиÑтити коментар, натиÑніть '''«ОчиÑтити»'''.",
+'undeleteextrahelp' => "Ð”Ð»Ñ Ð¿Ð¾Ð²Ð½Ð¾Ð³Ð¾ Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ñ–Ñторії Ñторінки залиште вÑÑ– Ð¿Ð¾Ð»Ñ Ð¿ÑƒÑтими й натиÑніть '''''«{{int:undeletebtn}}»'''''.
+Ð”Ð»Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñ‡Ð°Ñткового Ð²Ñ–Ð´Ð½Ð¾Ð²Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð¼Ñ–Ñ‚ÑŒÑ‚Ðµ відповідні змінені полÑ, а потім натиÑніть'''''«{{int:undeletebtn}}»'''''.",
'undeleterevisions' => 'Ð’ архіві $1 {{PLURAL:$1|верÑÑ–Ñ|верÑÑ–Ñ—|верÑій}}',
'undeletehistory' => 'Якщо ви відновите Ñторінку, вÑÑ– верÑÑ–Ñ— будуть також відновлені, разом з журналом редагувань.
Якщо з моменту Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð±ÑƒÐ»Ð° Ñтворена нова Ñторінка з такою Ñамою назвою, відновлені верÑÑ–Ñ— будуть зазначені в журналі редагувань перед новими запиÑами, але поточна верÑÑ–Ñ Ñ–Ñнуючої Ñтатті не буде замінена автоматично.',
@@ -2355,9 +2411,12 @@ $1',
'undelete-show-file-submit' => 'Так',
# Namespace form on various pages
-'namespace' => 'ПроÑÑ‚Ñ–Ñ€ назв:',
-'invert' => 'Крім вибраного',
-'blanknamespace' => '(ОÑновний)',
+'namespace' => 'ПроÑÑ‚Ñ–Ñ€ назв:',
+'invert' => 'Крім вибраного',
+'tooltip-invert' => "Ð’Ñтановіть цей прапорець, щоб приховати зміни на Ñторінках, в межах обраного проÑтору імен (Ñ– пов'Ñзаних проÑторів імен, за потреби)",
+'namespace_association' => "Пов'Ñзаний проÑÑ‚Ñ–Ñ€ назв",
+'tooltip-namespace_association' => "Ð’Ñтановіть цей прапорець, щоб додати проÑÑ‚Ñ–Ñ€ імен обговорень, пов'Ñзаних з обраним проÑтором імен",
+'blanknamespace' => '(ОÑновний)',
# Contributions
'contributions' => 'ВнеÑок кориÑтувача',
@@ -2407,13 +2466,15 @@ $1',
'whatlinkshere-filters' => 'Фільтри',
# Block/unblock
+'autoblockid' => 'ÐÐ²Ñ‚Ð¾Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ #$1',
+'block' => 'Заблокувати кориÑтувача',
+'unblock' => 'Розблокувати кориÑтувача',
'blockip' => 'БлокуваннÑ',
'blockip-title' => 'Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача',
'blockip-legend' => 'Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача',
'blockiptext' => "ВикориÑтовуйте форму нижче, щоб заблокувати можливіÑÑ‚ÑŒ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð· зазначеної IP-адреÑи або або ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача.
Це Ñлід робити лише Ð´Ð»Ñ Ð¿Ð¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð²Ð°Ð½Ð´Ð°Ð»Ñ–Ð·Ð¼Ñƒ Ñ– у відповідноÑÑ‚Ñ– до [[{{MediaWiki:Policy-url}}|правил]].
Заповніть конкретну причину нижче (наприклад, вкажіть точні Ñторінки, на Ñких було зроблено акт вандалізму).",
-'ipaddress' => 'IP-адреÑа:',
'ipadressorusername' => "IP-адреÑа або ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача:",
'ipbexpiry' => 'Термін:',
'ipbreason' => 'Причина:',
@@ -2426,7 +2487,7 @@ $1',
** ЗалÑкуюча поведінка/переÑлідуваннÑ
** Ð—Ð»Ð¾Ð²Ð¶Ð¸Ð²Ð°Ð½Ð½Ñ ÐºÑ–Ð»ÑŒÐºÐ¾Ð¼Ð° обліковими запиÑами
** ÐеприйнÑтне ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача",
-'ipbanononly' => 'Блокувати тільки анонімних кориÑтувачів',
+'ipb-hardblock' => 'Заборонити Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð°Ñ€ÐµÑ”Ñтрованим кориÑтувачам з цієї IP-адреÑи',
'ipbcreateaccount' => 'Заборонити ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð¾Ð²Ð¸Ñ… облікових запиÑів',
'ipbemailban' => 'Заборонити кориÑтувачеві відправлÑти лиÑти електронною поштою',
'ipbenableautoblock' => 'Ðвтоматично блокувати IP-адреÑи, Ñкі викориÑтовуютьÑÑ Ñ†Ð¸Ð¼ кориÑтувачем та будь-Ñкі наÑтупні адреÑи, з Ñких він буде редагувати',
@@ -2437,12 +2498,15 @@ $1',
'ipbotherreason' => 'Інша/додаткова причина:',
'ipbhidename' => "Приховати ім'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача у редагуваннÑÑ… Ñ‚Ñ– ÑпиÑках",
'ipbwatchuser' => 'Додати до ÑпиÑку ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ñторінку кориÑтувача Ñ– його обговореннÑ',
-'ipballowusertalk' => 'Дозволити цьому кориÑтувачеві редагувати Ñвою Ñторінку Ð¾Ð±Ð³Ð¾Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ð° Ñ‡Ð°Ñ Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ',
+'ipb-disableusertalk' => 'Заборонити кориÑтувачу редагувати Ñвою Ñторінку Ð¾Ð±Ð³Ð¾Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð¿Ñ–Ð´ Ñ‡Ð°Ñ Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ',
'ipb-change-block' => 'Переблокувати кориÑтувача з цими налаштуваннÑми',
+'ipb-confirm' => 'Підтвердити блокуваннÑ',
'badipaddress' => 'IP-адреÑа запиÑана в невірному форматі, або кориÑтувача з таким іменем не Ñ–Ñнує.',
'blockipsuccesssub' => 'Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð²ÐµÐ´ÐµÐ½Ð¾',
'blockipsuccesstext' => '[[Special:Contributions/$1|«$1»]] заблоковано.<br />
Див. [[Special:IPBlockList|ÑпиÑок заблокованих IP-адреÑ]].',
+'ipb-blockingself' => 'Ви збираєтеÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ Ñебе! Ви дійÑно бажаєте це зробити?',
+'ipb-confirmhideuser' => "Ви збираєтеÑÑ Ð·Ð°Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ñ‚Ð¸ кориÑтувача з опцією Ð¿Ñ€Ð¸Ñ…Ð¾Ð²Ð°Ð½Ð½Ñ Ñ–Ð¼ÐµÐ½Ñ–. Це вилучить його ім'Ñ Ð· уÑÑ–Ñ… ÑпиÑків та журналів. Ви точно хочете це зробити?",
'ipb-edit-dropdown' => 'Редагувати причини блокувань',
'ipb-unblock-addr' => 'Розблокувати $1',
'ipb-unblock' => 'Розблокувати кориÑтувача або IP-адреÑу',
@@ -2452,17 +2516,23 @@ $1',
'unblockiptext' => 'ВикориÑтовуйте подану нижче форму, щоб відновити можливіÑÑ‚ÑŒ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð· раніше заблокованої IP-адреÑи.',
'ipusubmit' => 'ЗнÑти це блокуваннÑ',
'unblocked' => '[[User:$1|$1]] розблокований',
+'unblocked-range' => '$1 розблоковано',
'unblocked-id' => 'Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ $1 було знÑте',
+'blocklist' => 'Заблоковані кориÑтувачі',
'ipblocklist' => 'СпиÑок заблокованих Ð°Ð´Ñ€ÐµÑ Ñ‚Ð° кориÑтувачів',
'ipblocklist-legend' => 'Пошук заблокованого кориÑтувача',
-'ipblocklist-username' => 'КориÑтувач або IP-адреÑа:',
-'ipblocklist-sh-userblocks' => '$1 Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¸Ñ… запиÑів',
-'ipblocklist-sh-tempblocks' => '$1 тимчаÑові блокуваннÑ',
-'ipblocklist-sh-addressblocks' => '$1 Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¾ÐºÑ€ÐµÐ¼Ð¸Ñ… IP-адреÑ',
+'blocklist-userblocks' => 'Сховати Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¸Ñ… запиÑів',
+'blocklist-tempblocks' => 'Сховати тимчаÑові блокуваннÑ',
+'blocklist-addressblocks' => 'Приховати Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¾ÐºÑ€ÐµÐ¼Ð¸Ñ… IP-адреÑ',
+'blocklist-timestamp' => 'ЧаÑова позначка',
+'blocklist-target' => 'Мета',
+'blocklist-expiry' => 'ЗакінчуєтьÑÑ',
+'blocklist-by' => 'Виконав блокуваннÑ',
+'blocklist-params' => 'Параметри блокуваннÑ',
+'blocklist-reason' => 'Причина',
'ipblocklist-submit' => 'Пошук',
'ipblocklist-localblock' => 'Локальне блокуваннÑ',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Інше блокуваннÑ|Інші блокуваннÑ}}',
-'blocklistline' => '$1, $2 заблокував $3 ($4)',
'infiniteblock' => 'Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð½Ð° невизначений термін',
'expiringblock' => 'закінчитьÑÑ $1 $2',
'anononlyblock' => 'тільки анонімів',
@@ -2484,7 +2554,7 @@ $1',
'reblock-logentry' => 'переблокував [[$1]] на термін $2 $3',
'blocklogtext' => 'Журнал Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð¹ Ñ€Ð¾Ð·Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів.
IP-адреÑи, що блокуютьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾ тут не вказуютьÑÑ. Див.
-[[Special:IPBlockList|ÑпиÑок поточних заборон Ñ– блокувань]].',
+[[Special:BlockList|ÑпиÑок поточних заборон Ñ– блокувань]].',
'unblocklogentry' => 'розблокував $1',
'block-log-flags-anononly' => 'тільки анонімні кориÑтувачі',
'block-log-flags-nocreate' => 'заборонена реєÑÑ‚Ñ€Ð°Ñ†Ñ–Ñ Ð¾Ð±Ð»Ñ–ÐºÐ¾Ð²Ð¸Ñ… запиÑів',
@@ -2498,9 +2568,9 @@ IP-адреÑи, що блокуютьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾ тут не в
'ipb_expiry_temp' => 'Ð‘Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ñ–Ð· приховуваннÑм імені кориÑтувача мають бути безÑтроковими.',
'ipb_hide_invalid' => 'Ðеможливо приховати обліковий запиÑ; з нього зроблено дуже багато редагувань.',
'ipb_already_blocked' => '«$1» уже заблоковано. Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб призначити новий термін блокуваннÑ, Ñпочатку розблокуйте його.',
-'ipb-needreblock' => '== Уже заблокований ==
-КориÑтувач $1 вже заблокований. Хочете змінити параметри блокуваннÑ?',
+'ipb-needreblock' => 'КориÑтувач $1 вже заблокований. Хочете змінити параметри блокуваннÑ?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Інше блокуваннÑ|Інші блокуваннÑ}}',
+'unblock-hideuser' => "Ви не можете розблокувати цього кориÑтувача, оÑкільки його ім'Ñ Ð±ÑƒÐ»Ð¾ приховано.",
'ipb_cant_unblock' => 'Помилка: Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð· ID $1 не знайдене.
Можливо, кориÑтувач уже розблокований.',
'ipb_blocked_as_range' => 'Помилка: IP-адреÑа $1 була заблокована не напрÑму Ñ– не може бути розблокована. Однак, вона належить до заблокованого діапазону $2, Ñкий можна розблокувати.',
@@ -2539,10 +2609,10 @@ IP-адреÑи, що блокуютьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾ тут не в
'unlockdbsuccesstext' => 'Базу даних проекту розблоковано.',
'lockfilenotwritable' => 'Ðемає права на Ð·Ð°Ð¿Ð¸Ñ Ð² файл Ð±Ð»Ð¾ÐºÑƒÐ²Ð°Ð½Ð½Ñ Ð±Ð°Ð·Ð¸ даних. Щоб заблокувати чи розблокувати БД, веб-Ñервер повинен мати дозвіл на Ð·Ð°Ð¿Ð¸Ñ Ð² цей файл.',
'databasenotlocked' => 'База даних не заблокована.',
+'lockedbyandtime' => '($1 $2 $3)',
# Move page
'move-page' => 'ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ñторінки «$1»',
-'move-page-backlink' => '↠$1',
'move-page-legend' => 'ÐŸÐµÑ€ÐµÐ¹Ð¼ÐµÐ½ÑƒÐ²Ð°Ð½Ð½Ñ Ñторінки',
'movepagetext' => "СкориÑтавшиÑÑŒ формою нижче, ви можете перейменувати Ñторінку, одночаÑно переміÑтивши на нове міÑце Ñ– журнал Ñ—Ñ— редагувань.
Стара назва Ñтане перенаправленнÑм на нову назву.
@@ -2661,7 +2731,7 @@ IP-адреÑи, що блокуютьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾ тут не в
'allmessagesdefault' => 'Стандартний текÑÑ‚',
'allmessagescurrent' => 'Поточний текÑÑ‚',
'allmessagestext' => 'Це ÑпиÑок уÑÑ–Ñ… ÑиÑтемних повідомлень, Ñкі доÑтупні в проÑторі назв «MediaWiki».
-Будь лаÑка, відвідайте [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] Ñ– [http://translatewiki.net translatewiki.net], Ñкщо ви хочете зробити внеÑок до Ñпільної локалізації MediaWiki.',
+Будь лаÑка, відвідайте [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] Ñ– [//translatewiki.net translatewiki.net], Ñкщо ви хочете зробити внеÑок до Ñпільної локалізації MediaWiki.',
'allmessagesnotsupportedDB' => "Ð¦Ñ Ñторінка не може викориÑтовуватиÑÑ, оÑкільки вимкнена Ð¾Ð¿Ñ†Ñ–Ñ '''\$wgUseDatabaseMessages'''.",
'allmessages-filter-legend' => 'Фільтр',
'allmessages-filter' => 'Фільтр за внеÑеними змінами:',
@@ -2798,11 +2868,11 @@ IP-адреÑи, що блокуютьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾ тут не в
'tooltip-summary' => 'Введіть короткий опиÑ',
# Stylesheets
-'common.css' => '/** Розміщений тут CSS буде заÑтоÑовуватиÑÑ Ð´Ð¾ вÑÑ–Ñ… тем Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ */',
-'standard.css' => '/* Розміщений тут CSS-код буде викориÑтаний Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів з налаштованою темою Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ðµ */',
-'nostalgia.css' => '/* Розміщений тут CSS-код буде викориÑтаний Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів з налаштованою темою Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐоÑÑ‚Ð°Ð»ÑŒÐ³Ñ–Ñ */',
-'cologneblue.css' => '/* Розміщений тут CSS-код буде викориÑтаний Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів з налаштованою темою Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐšÐµÐ»ÑŒÐ½Ñьке блакитне */',
-'monobook.css' => '/* Розміщений тут CSS буде заÑтоÑовуватиÑÑ Ð´Ð¾ вÑÑ–Ñ… тем Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Monobook */
+'common.css' => '/** Розміщений тут CSS буде заÑтоÑовуватиÑÑ Ð´Ð¾ вÑÑ–Ñ… тем Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ */',
+'standard.css' => '/* Розміщений тут CSS-код буде викориÑтаний Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів з налаштованою темою Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ðµ */',
+'nostalgia.css' => '/* Розміщений тут CSS-код буде викориÑтаний Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів з налаштованою темою Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐоÑÑ‚Ð°Ð»ÑŒÐ³Ñ–Ñ */',
+'cologneblue.css' => '/* Розміщений тут CSS-код буде викориÑтаний Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів з налаштованою темою Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐšÐµÐ»ÑŒÐ½Ñьке блакитне */',
+'monobook.css' => '/* Розміщений тут CSS буде заÑтоÑовуватиÑÑ Ð´Ð¾ вÑÑ–Ñ… тем Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Monobook */
/*
Це необхідно щоб в вікні пошуку кнопки не розбивалиÑÑŒ на два Ñ€Ñдки
@@ -2815,30 +2885,37 @@ IP-адреÑи, що блокуютьÑÑ Ð°Ð²Ñ‚Ð¾Ð¼Ð°Ñ‚Ð¸Ñ‡Ð½Ð¾ тут не в
padding-right: 0em;
font-weight: bold;
}',
-'myskin.css' => '/* Розміщений тут CSS-код буде викориÑтаний в темі Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Ð’Ð»Ð°Ñне */',
-'chick.css' => '/* Розміщений тут CSS-код буде викориÑтаний в темі Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐšÑƒÑ€Ñ‡Ð° */',
-'simple.css' => '/* Розміщений тут CSS-код буде викориÑтаний в темі Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐŸÑ€Ð¾Ñте */',
-'modern.css' => '/* Розміщений тут CSS-код буде викориÑтаний в темі Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Ð¡ÑƒÑ‡Ð°Ñне */',
-'vector.css' => '/* Розміщений тут CSS-код буде викориÑтаний в темі Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Ð’ÐµÐºÑ‚Ð¾Ñ€Ð½Ðµ */',
-'print.css' => '/* Розміщений тут CSS-код буде викориÑтаний Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÐ¾Ð²Ð°Ð½Ð¾Ñ— верÑÑ–Ñ— */',
-'handheld.css' => '/* Розміщений тут CSS-код буде викориÑтаний Ð´Ð»Ñ Ð¼Ð¾Ð±Ñ–Ð»ÑŒÐ½Ð¸Ñ… приÑтроїв, що викориÑтовують тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²Ð°Ð½Ñƒ в $wgHandheldStyle */',
+'myskin.css' => '/* Розміщений тут CSS-код буде викориÑтаний в темі Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Ð’Ð»Ð°Ñне */',
+'chick.css' => '/* Розміщений тут CSS-код буде викориÑтаний в темі Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐšÑƒÑ€Ñ‡Ð° */',
+'simple.css' => '/* Розміщений тут CSS-код буде викориÑтаний в темі Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐŸÑ€Ð¾Ñте */',
+'modern.css' => '/* Розміщений тут CSS-код буде викориÑтаний в темі Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Ð¡ÑƒÑ‡Ð°Ñне */',
+'vector.css' => '/* Розміщений тут CSS-код буде викориÑтаний в темі Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Ð’ÐµÐºÑ‚Ð¾Ñ€Ð½Ðµ */',
+'print.css' => '/* Розміщений тут CSS-код буде викориÑтаний Ð´Ð»Ñ Ð´Ñ€ÑƒÐºÐ¾Ð²Ð°Ð½Ð¾Ñ— верÑÑ–Ñ— */',
+'handheld.css' => '/* Розміщений тут CSS-код буде викориÑтаний Ð´Ð»Ñ Ð¼Ð¾Ð±Ñ–Ð»ÑŒÐ½Ð¸Ñ… приÑтроїв, що викориÑтовують тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Ð½Ð°Ð»Ð°ÑˆÑ‚Ð¾Ð²Ð°Ð½Ñƒ в $wgHandheldStyle */',
+'noscript.css' => '/* Розміщений тут CSS-код буде викориÑтаний Ð´Ð»Ñ ÐºÐ¾Ñ€Ð¸Ñтувачів у Ñких вимкнено JavaScript */',
+'group-autoconfirmed.css' => '/* Розміщений тут CSS-код буде викориÑтаний Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð¸Ñ… кориÑтувачів */',
+'group-bot.css' => '/* Розміщений тут CSS-код буде викориÑтаний тільки Ð´Ð»Ñ Ð±Ð¾Ñ‚Ñ–Ð² */',
+'group-sysop.css' => '/* Розміщений тут CSS-код буде викориÑтаний тільки Ð´Ð»Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтраторів */',
+'group-bureaucrat.css' => '/* Розміщений тут CSS-код буде викориÑтаний тільки Ð´Ð»Ñ Ð±ÑŽÑ€Ð¾ÐºÑ€Ð°Ñ‚Ñ–Ð² */',
# Scripts
-'common.js' => '/* Розміщений тут код JavaScript буде завантажений вÑім кориÑтувачам при зверненні до будь-Ñкої Ñторінки */',
-'standard.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують Ñтандартну тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ */',
-'nostalgia.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐоÑÑ‚Ð°Ð»ÑŒÐ³Ñ–Ñ */',
-'cologneblue.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐšÐµÐ»ÑŒÐ½Ñьке Ñинє */',
-'monobook.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐœÐ¾Ð½Ð¾-книга */',
-'myskin.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують влаÑну тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ */',
-'chick.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐšÑƒÑ€Ñ‡Ð° */',
-'simple.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують проÑту тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ */',
-'modern.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Ð¡ÑƒÑ‡Ð°Ñне */',
-'vector.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують векторну тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ */',
+'common.js' => '/* Розміщений тут код JavaScript буде завантажений вÑім кориÑтувачам при зверненні до будь-Ñкої Ñторінки */',
+'standard.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують Ñтандартну тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ */',
+'nostalgia.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐоÑÑ‚Ð°Ð»ÑŒÐ³Ñ–Ñ */',
+'cologneblue.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐšÐµÐ»ÑŒÐ½Ñьке Ñинє */',
+'monobook.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐœÐ¾Ð½Ð¾-книга */',
+'myskin.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують влаÑну тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ */',
+'chick.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ ÐšÑƒÑ€Ñ‡Ð° */',
+'simple.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують проÑту тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ */',
+'modern.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ Ð¡ÑƒÑ‡Ð°Ñне */',
+'vector.js' => '/* Розміщений тут код JavaScript буде завантажений Ð´Ð»Ñ Ð²ÑÑ–Ñ… кориÑтувачів, що викориÑтовують векторну тему Ð¾Ñ„Ð¾Ñ€Ð¼Ð»ÐµÐ½Ð½Ñ */',
+'group-autoconfirmed.js' => '/* Розміщений тут код JavaScript буде завантажений тільки Ð´Ð»Ñ Ð°Ð²Ñ‚Ð¾Ð¿Ñ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð¸Ñ… кориÑтувачів */',
+'group-bot.js' => '/* Розміщений тут код JavaScript буде завантажений тільки Ð´Ð»Ñ Ð±Ð¾Ñ‚Ñ–Ð² */',
+'group-sysop.js' => '/* Розміщений тут код JavaScript буде завантажений тільки Ð´Ð»Ñ Ð°Ð´Ð¼Ñ–Ð½Ñ–Ñтраторів */',
+'group-bureaucrat.js' => '/* Розміщений тут код JavaScript буде завантажений тільки Ð´Ð»Ñ Ð±ÑŽÑ€Ð¾ÐºÑ€Ð°Ñ‚Ñ–Ð² */',
# Metadata
-'nodublincore' => 'Метадані Dublin Core RDF заборонені Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ñервера.',
-'nocreativecommons' => 'Метадані Creative Commons RDF заборонені Ð´Ð»Ñ Ñ†ÑŒÐ¾Ð³Ð¾ Ñервера.',
-'notacceptable' => "Вікі-Ñервер не може подати дані в форматі, Ñкий міг би прочитати ваш браузер.<br />
+'notacceptable' => "Вікі-Ñервер не може подати дані в форматі, Ñкий міг би прочитати ваш браузер.<br />
The wiki server can't provide data in a format your client can read.",
# Attribution
@@ -2863,12 +2940,17 @@ The wiki server can't provide data in a format your client can read.",
'spam_blanking' => 'Ð’ÑÑ– верÑÑ–Ñ— міÑÑ‚ÑÑ‚ÑŒ поÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð½Ð° $1, очиÑтка',
# Info page
-'infosubtitle' => 'Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ Ñторінку',
-'numedits' => 'КількіÑÑ‚ÑŒ редагувань (Ñторінка): $1',
-'numtalkedits' => 'КількіÑÑ‚ÑŒ редагувань (Ñторінка обговореннÑ): $1',
-'numwatchers' => 'КількіÑÑ‚ÑŒ ÑпоÑтерігачів: $1',
-'numauthors' => 'КількіÑÑ‚ÑŒ різних авторів (Ñторінка): $1',
-'numtalkauthors' => 'КількіÑÑ‚ÑŒ авторів (Ñторінка обговореннÑ): $1',
+'pageinfo-title' => 'Ð†Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ñ–Ñ Ð¿Ñ€Ð¾ " $1 "',
+'pageinfo-header-edits' => 'РедагуваннÑ',
+'pageinfo-header-watchlist' => 'СпиÑок ÑпоÑтереженнÑ',
+'pageinfo-header-views' => 'ПереглÑди',
+'pageinfo-subjectpage' => 'Сторінка',
+'pageinfo-talkpage' => 'Сторінка обговореннÑ',
+'pageinfo-watchers' => 'КількіÑÑ‚ÑŒ ÑпоÑтерігачів',
+'pageinfo-edits' => 'КількіÑÑ‚ÑŒ редагувань',
+'pageinfo-authors' => 'КількіÑÑ‚ÑŒ унікальних авторів',
+'pageinfo-views' => 'КількіÑÑ‚ÑŒ переглÑдів',
+'pageinfo-viewsperedit' => 'ПереглÑдів на редагуваннÑ',
# Skin names
'skinname-standard' => 'Стандартне',
@@ -2881,25 +2963,6 @@ The wiki server can't provide data in a format your client can read.",
'skinname-modern' => 'СучаÑне',
'skinname-vector' => 'Векторне',
-# Math options
-'mw_math_png' => 'Завжди генерувати PNG',
-'mw_math_simple' => 'HTML в проÑтих випадках, інакше - PNG',
-'mw_math_html' => 'Якщо можливо - HTML, інакше PNG',
-'mw_math_source' => 'Залишити в виглÑді ТеХ (Ð´Ð»Ñ Ñ‚ÐµÐºÑтових браузерів)',
-'mw_math_modern' => 'Рекомендовано Ð´Ð»Ñ ÑучаÑних браузерів',
-'mw_math_mathml' => 'Якщо можливо - MathML (екÑпериментальна опціÑ)',
-
-# Math errors
-'math_failure' => 'Ðеможливо розібрати вираз',
-'math_unknown_error' => 'невідома помилка',
-'math_unknown_function' => 'невідома функціÑ',
-'math_lexing_error' => 'лекÑична помилка',
-'math_syntax_error' => 'ÑинтакÑична помилка',
-'math_image_error' => 'PNG Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð½Ðµ вдалоÑÑ; перевірте правильніÑÑ‚ÑŒ уÑтановки latex Ñ– dvipng (або dvips + gs + convert)',
-'math_bad_tmpdir' => 'Ðе вдаєтьÑÑ Ñтворити чи запиÑати в тимчаÑовий каталог математики',
-'math_bad_output' => 'Ðе вдаєтьÑÑ Ñтворити чи запиÑати в вихідний каталог математики',
-'math_notexvc' => 'Ðе знайдено програму texvc; Див. math/README — довідку про налаштуваннÑ.',
-
# Patrolling
'markaspatrolleddiff' => 'Позначити Ñк перевірену',
'markaspatrolledtext' => 'Позначити цю Ñторінку Ñк перевірену',
@@ -2935,22 +2998,25 @@ $1',
'nextdiff' => 'ÐаÑтупне Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ â†’',
# Media information
-'mediawarning' => "'''Увага''': цей файл може міÑтити шкідливий програмний код, Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñкого може бути небезпечним Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ñ— ÑиÑтеми.",
-'imagemaxsize' => "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ зображеннÑ:<br />''(Ð´Ð»Ñ Ñторінок опиÑу файлів)''",
-'thumbsize' => 'Розмір зменшеної верÑÑ–Ñ— зображеннÑ:',
-'widthheight' => '$1 × $2',
-'widthheightpage' => '$1 × $2, {{PLURAL:$3|$3 Ñторінка|$3 Ñторінки|$3 Ñторінок}}',
-'file-info' => 'розмір файлу: $1, MIME-тип: $2',
-'file-info-size' => '$1 × $2 пікÑелів, розмір файлу: $3, MIME-тип: $4',
-'file-nohires' => '<small>Ðема верÑÑ–Ñ— з більшою роздільніÑÑ‚ÑŽ.</small>',
-'svg-long-desc' => 'SVG-файл, номінально $1 × $2 пікÑелів, розмір файлу: $3',
-'show-big-image' => 'Повна роздільніÑÑ‚ÑŒ',
-'show-big-image-thumb' => '<small>Розмір при попередньому переглÑді: $1 × $2 пікÑелів</small>',
-'file-info-gif-looped' => 'кільцеве',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|кадр|кадри|кадрів}}',
-'file-info-png-looped' => 'закільцьований',
-'file-info-png-repeat' => 'продемонÑтрований $1 {{PLURAL:$1|раз|рази|разів}}',
-'file-info-png-frames' => '$1 {{PLURAL:$1|кадр|кадри|кадрів}}',
+'mediawarning' => "'''Увага''': цей файл може міÑтити шкідливий програмний код, Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ Ñкого може бути небезпечним Ð´Ð»Ñ Ð²Ð°ÑˆÐ¾Ñ— ÑиÑтеми.",
+'imagemaxsize' => "ÐžÐ±Ð¼ÐµÐ¶ÐµÐ½Ð½Ñ Ñ€Ð¾Ð·Ð¼Ñ–Ñ€Ñƒ зображеннÑ:<br />''(Ð´Ð»Ñ Ñторінок опиÑу файлів)''",
+'thumbsize' => 'Розмір зменшеної верÑÑ–Ñ— зображеннÑ:',
+'widthheight' => '$1 × $2',
+'widthheightpage' => '$1 × $2, {{PLURAL:$3|$3 Ñторінка|$3 Ñторінки|$3 Ñторінок}}',
+'file-info' => 'розмір файлу: $1, MIME-тип: $2',
+'file-info-size' => '$1 × $2 пікÑелів, розмір файлу: $3, MIME-тип: $4',
+'file-info-size-pages' => '$1 × $2 пікÑелів, розмір файлу: $3, MIME-тип: $4, $5 {{PLURAL:$5|Ñторінка|Ñторінки|Ñторінок}}',
+'file-nohires' => '<small>Ðема верÑÑ–Ñ— з більшою роздільніÑÑ‚ÑŽ.</small>',
+'svg-long-desc' => 'SVG-файл, номінально $1 × $2 пікÑелів, розмір файлу: $3',
+'show-big-image' => 'Повна роздільніÑÑ‚ÑŒ',
+'show-big-image-preview' => '<small>Розмір при попередньому переглÑді: $1.</small>',
+'show-big-image-other' => '<small>Інші роздільноÑÑ‚Ñ–: $1.</small>',
+'show-big-image-size' => '$1 × $2 пікÑелів',
+'file-info-gif-looped' => 'кільцеве',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|кадр|кадри|кадрів}}',
+'file-info-png-looped' => 'закільцьований',
+'file-info-png-repeat' => 'продемонÑтрований $1 {{PLURAL:$1|раз|рази|разів}}',
+'file-info-png-frames' => '$1 {{PLURAL:$1|кадр|кадри|кадрів}}',
# Special:NewFiles
'newimages' => 'Ð“Ð°Ð»ÐµÑ€ÐµÑ Ð½Ð¾Ð²Ð¸Ñ… файлів',
@@ -2969,6 +3035,7 @@ $1',
'seconds-abbrev' => 'Ñ',
'minutes-abbrev' => 'хв',
'hours-abbrev' => 'г',
+'days-abbrev' => 'д',
# Bad image list
'bad_image_list' => 'Формат має бути наÑтупним:
@@ -3022,19 +3089,32 @@ Variants for Chinese language
'variantname-tg-latn' => 'tg-Latn',
'variantname-tg' => 'tg',
+# Variants for Inuktitut language
+'variantname-ike-cans' => 'ike-Cans',
+'variantname-ike-latn' => 'ike-Latn',
+'variantname-iu' => 'iu',
+
# Metadata
-'metadata' => 'Метадані',
-'metadata-help' => 'Файл міÑтить додаткові дані, Ñкі зазвичай додаютьÑÑ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¸Ð¼Ð¸ камерами чи Ñканерами. Якщо файл редагувавÑÑ Ð¿Ñ–ÑÐ»Ñ ÑтвореннÑ, то деÑкі параметри можуть не відповідати цьому зображенню.',
-'metadata-expand' => 'Показати додаткові дані',
-'metadata-collapse' => 'Приховати додаткові дані',
-'metadata-fields' => 'ÐŸÐ¾Ð»Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð¸Ñ…, перераховані в цьому ÑпиÑку, будуть автоматично відображені на Ñторінці зображеннÑ, вÑÑ– інші будуть приховані.
+'metadata' => 'Метадані',
+'metadata-help' => 'Файл міÑтить додаткові дані, Ñкі зазвичай додаютьÑÑ Ñ†Ð¸Ñ„Ñ€Ð¾Ð²Ð¸Ð¼Ð¸ камерами чи Ñканерами. Якщо файл редагувавÑÑ Ð¿Ñ–ÑÐ»Ñ ÑтвореннÑ, то деÑкі параметри можуть не відповідати цьому зображенню.',
+'metadata-expand' => 'Показати додаткові дані',
+'metadata-collapse' => 'Приховати додаткові дані',
+'metadata-fields' => 'ÐŸÐ¾Ð»Ñ Ð¼ÐµÑ‚Ð°Ð´Ð°Ð½Ð¸Ñ… зображеннÑ, перелічені в наÑтупному ÑпиÑку, будуть відображатиÑÑŒ на Ñторінці опиÑу Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¸ згорнутій таблиці метаданих. Решта полів будуть приховані за замовчуваннÑм.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
+'metadata-langitem' => "'''$2:''' $1",
+'metadata-langitem-default' => '$1',
# EXIF tags
'exif-imagewidth' => 'Ширина',
@@ -3049,13 +3129,11 @@ Variants for Chinese language
'exif-ycbcrpositioning' => 'ПорÑдок Ñ€Ð¾Ð·Ð¼Ñ–Ñ‰ÐµÐ½Ð½Ñ ÐºÐ¾Ð¼Ð¿Ð¾Ð½ÐµÐ½Ñ‚Ñ–Ð² Y та C',
'exif-xresolution' => 'Горизонтальна роздільна здатніÑÑ‚ÑŒ',
'exif-yresolution' => 'Вертикальна роздільна здатніÑÑ‚ÑŒ',
-'exif-resolutionunit' => 'ÐžÐ´Ð¸Ð½Ð¸Ñ†Ñ Ð²Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŒÐ½Ð¾Ñ— здатноÑÑ‚Ñ–',
'exif-stripoffsets' => 'ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ð±Ð»Ð¾ÐºÑƒ даних',
'exif-rowsperstrip' => 'КількіÑÑ‚ÑŒ Ñ€Ñдків в 1 блоці',
'exif-stripbytecounts' => 'Розмір ÑтиÑнутого блоку',
'exif-jpeginterchangeformat' => 'ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾Ñ‡Ð°Ñ‚ÐºÑƒ блоку preview',
'exif-jpeginterchangeformatlength' => 'Розмір даних блоку preview',
-'exif-transferfunction' => 'Ð¤ÑƒÐ½ÐºÑ†Ñ–Ñ Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ð»Ñ–Ñ€Ð½Ð¾Ð³Ð¾ проÑтору',
'exif-whitepoint' => 'КолірніÑÑ‚ÑŒ білої точки',
'exif-primarychromaticities' => 'КолірніÑÑ‚ÑŒ оÑновних кольорів',
'exif-ycbcrcoefficients' => 'Коефіцієнти Ð¿ÐµÑ€ÐµÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐ¾Ð»Ñ–Ñ€Ð½Ð¾Ñ— моделі',
@@ -3074,7 +3152,6 @@ Variants for Chinese language
'exif-compressedbitsperpixel' => 'Глибина кольору піÑÐ»Ñ ÑтиÑненнÑ',
'exif-pixelydimension' => 'Ширина зображеннÑ',
'exif-pixelxdimension' => 'ВиÑота зображеннÑ',
-'exif-makernote' => 'Додаткові дані виробника',
'exif-usercomment' => 'Додатковий коментар',
'exif-relatedsoundfile' => 'Файл звукового коментарÑ',
'exif-datetimeoriginal' => 'Оригинальні дата й чаÑ',
@@ -3089,7 +3166,6 @@ Variants for Chinese language
'exif-exposureprogram' => 'Програма екÑпозиції',
'exif-spectralsensitivity' => 'Спектральна чутливіÑÑ‚ÑŒ',
'exif-isospeedratings' => 'СвітлочутливіÑÑ‚ÑŒ ISO',
-'exif-oecf' => 'OECF (коефіцієнт оптикоелектричного перетвореннÑ)',
'exif-shutterspeedvalue' => 'Витримка в APEX',
'exif-aperturevalue' => 'Діафрагма в APEX',
'exif-brightnessvalue' => 'ЯÑкравіÑÑ‚ÑŒ в APEX',
@@ -3103,7 +3179,6 @@ Variants for Chinese language
'exif-focallength-format' => '$1 мм',
'exif-subjectarea' => "ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ð¹ площа об'єкту зйомки",
'exif-flashenergy' => 'Ð•Ð½ÐµÑ€Ð³Ñ–Ñ Ñпалаху',
-'exif-spatialfrequencyresponse' => 'ПроÑторова чаÑтотна характериÑтика',
'exif-focalplanexresolution' => 'Роздільна здатніÑÑ‚ÑŒ по X в фокальній площині',
'exif-focalplaneyresolution' => 'Роздільна здатніÑÑ‚ÑŒ по Y в фокальній площині',
'exif-focalplaneresolutionunit' => 'ÐžÐ´Ð¸Ð½Ð¸Ñ†Ñ Ð²Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ñ€Ð¾Ð·Ð´Ñ–Ð»ÑŒÐ½Ð¾Ñ— здатноÑÑ‚Ñ– в фокальній площині',
@@ -3112,7 +3187,6 @@ Variants for Chinese language
'exif-sensingmethod' => 'Тип ÑенÑора',
'exif-filesource' => 'Джерело файлу',
'exif-scenetype' => 'Тип Ñцени',
-'exif-cfapattern' => 'Тип кольорового фільтра',
'exif-customrendered' => 'Додаткова обробка',
'exif-exposuremode' => 'Режим Ð¾Ð±Ñ€Ð°Ð½Ð½Ñ ÐµÐºÑпозиції',
'exif-whitebalance' => 'Ð‘Ð°Ð»Ð°Ð½Ñ Ð±Ñ–Ð»Ð¾Ð³Ð¾',
@@ -3157,10 +3231,99 @@ Variants for Chinese language
'exif-gpsareainformation' => 'Ðазва облаÑÑ‚Ñ– GPS',
'exif-gpsdatestamp' => 'Дата',
'exif-gpsdifferential' => 'Диференціальна поправка',
+'exif-coordinate-format' => '$1° $2′ $3″ $4',
+'exif-jpegfilecomment' => 'Коментар JPEG-файла',
+'exif-keywords' => 'Ключові Ñлова',
+'exif-worldregioncreated' => 'Регіон, де була зроблена Ñвітлина',
+'exif-countrycreated' => 'Країна, де була зроблена Ñвітлина',
+'exif-countrycodecreated' => 'Код країни, де була зроблена Ñвітлина',
+'exif-provinceorstatecreated' => 'ÐдмініÑтративна Ð¾Ð´Ð¸Ð½Ð¸Ñ†Ñ ÐºÑ€Ð°Ñ—Ð½Ð¸, де була зроблена Ñвітлина',
+'exif-citycreated' => 'МіÑто, де була зроблена Ñвітлина',
+'exif-sublocationcreated' => 'Район міÑта, де була зроблена Ñвітлина',
+'exif-worldregiondest' => 'Регіон Ñвіту, Ñкий зображено на Ñвітлині',
+'exif-countrydest' => 'Країна на знімку',
+'exif-countrycodedest' => 'Код країни на знімку',
+'exif-provinceorstatedest' => 'ÐдмініÑтративна Ð¾Ð´Ð¸Ð½Ð¸Ñ†Ñ ÐºÑ€Ð°Ñ—Ð½Ð¸, зображена на знімку',
+'exif-citydest' => 'МіÑто на знімку',
+'exif-sublocationdest' => 'Район міÑта на знімку',
'exif-objectname' => 'Коротка назва',
+'exif-specialinstructions' => 'Спеціальні вказівки',
+'exif-headline' => 'Заголовок',
+'exif-credit' => 'Хто виклав зображеннÑ',
+'exif-source' => 'Джерело',
+'exif-editstatus' => 'Редакційний ÑÑ‚Ð°Ñ‚ÑƒÑ Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ',
+'exif-urgency' => 'ÐктуальніÑÑ‚ÑŒ',
+'exif-fixtureidentifier' => 'Ðазва колонки',
+'exif-locationdest' => 'Зображене міÑце',
+'exif-locationdestcode' => 'Код зображеного міÑцÑ',
+'exif-objectcycle' => 'Ð§Ð°Ñ Ð´Ð¾Ð±Ð¸',
+'exif-contact' => 'Контактна інформаціÑ',
+'exif-writer' => 'Ðвтор',
+'exif-languagecode' => 'Мова',
+'exif-iimversion' => 'ВерÑÑ–Ñ IIM',
+'exif-iimcategory' => 'КатегоріÑ',
+'exif-iimsupplementalcategory' => 'Додаткові категорії',
+'exif-datetimeexpires' => 'Ðе викориÑтовуйте піÑлÑ',
+'exif-datetimereleased' => 'Дата виходу',
+'exif-originaltransmissionref' => 'Оригінальний код міÑÑ†Ñ Ð¿ÐµÑ€ÐµÐ´Ð°Ñ‡Ñ–',
+'exif-identifier' => 'Ідентифікатор',
+'exif-lens' => "ВикориÑтаний об'єктив",
+'exif-serialnumber' => 'Серійний номер камери',
+'exif-cameraownername' => 'ВлаÑник камери',
+'exif-label' => 'Позначка',
+'exif-datetimemetadata' => 'ОÑÑ‚Ð°Ð½Ð½Ñ Ð´Ð°Ñ‚Ð° зміни метаданих',
+'exif-nickname' => 'Ðеофіційна назва зображеннÑ',
+'exif-rating' => 'Рейтинг (від 0 до 5)',
+'exif-rightscertificate' => 'Сертифікат ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð¿Ñ€Ð°Ð²Ð°Ð¼Ð¸',
+'exif-copyrighted' => 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð°Ð²Ñ‚Ð¾Ñ€Ñьких прав',
+'exif-copyrightowner' => 'ВлаÑник авторÑьких прав',
+'exif-usageterms' => 'Умови кориÑтуваннÑ',
+'exif-webstatement' => 'ÐŸÐ¾Ð»Ð¾Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ авторÑьке право в Інтернеті',
+'exif-originaldocumentid' => 'Унікальний Ідентифікатор вихідного документа',
+'exif-licenseurl' => 'URL-адреÑа авторÑької ліцензії',
+'exif-morepermissionsurl' => 'Ðльтернативна інформації з ліцензуваннÑ',
+'exif-attributionurl' => 'При викориÑтанні цієї роботи, будь лаÑка, поÑилайтеÑÑŒ на',
+'exif-preferredattributionname' => 'При викориÑтанні цієї роботи, будь лаÑка, вказуйте',
+'exif-pngfilecomment' => 'Коментар PNG-файла',
+'exif-disclaimer' => 'Відмова від відповідальноÑÑ‚Ñ–',
+'exif-contentwarning' => 'ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð¶ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ вміÑÑ‚',
+'exif-giffilecomment' => 'Коментар GIF-файла',
+'exif-intellectualgenre' => 'Тип елемента',
+'exif-subjectnewscode' => 'Тематичний код',
+'exif-scenecode' => 'Код Ñцени IPTC',
+'exif-event' => 'ПодіÑ, що зображена',
+'exif-organisationinimage' => 'ОрганізаціÑ, що зображена',
+'exif-personinimage' => 'ОÑоба, що зображена',
+'exif-originalimageheight' => 'ВиÑота зображеннÑ, до того Ñк воно було обітнуто',
+'exif-originalimagewidth' => 'Ширина зображеннÑ, до того Ñк воно було обітнуто',
+
+# Make & model, can be wikified in order to link to the camera and model name
+'exif-contact-value' => '$1
+
+$2
+<div class="adr">
+$3
+
+$4, $5, $6 $7
+</div>
+$8',
+'exif-subjectnewscode-value' => '$2 ($1)',
# EXIF attributes
-'exif-compression-1' => 'ÐеÑтиÑнутий',
+'exif-compression-1' => 'ÐеÑтиÑнутий',
+'exif-compression-2' => 'CCITT Group 3, 1-мірна Ð¼Ð¾Ð´Ð¸Ñ„Ñ–ÐºÐ°Ñ†Ñ–Ñ ÐºÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð¾Ð²Ð¶Ð¸Ð½ Ñерій Хаффмана',
+'exif-compression-3' => 'CCITT Group 3, факÑове кодуваннÑ',
+'exif-compression-4' => 'CCITT Group 4, факÑове кодуваннÑ',
+'exif-compression-5' => 'LZW',
+'exif-compression-6' => 'JPEG (Ñтарий)',
+'exif-compression-7' => 'JPEG',
+'exif-compression-8' => 'Deflate (Adobe)',
+'exif-compression-32773' => 'PackBits (Macintosh RLE)',
+'exif-compression-32946' => 'Deflate (PKZIP)',
+'exif-compression-34712' => 'JPEG2000',
+
+'exif-copyrighted-true' => 'ОхоронÑєтьÑÑ Ð·Ð°ÐºÐ¾Ð½Ð¾Ð¼ про авторÑьке право',
+'exif-copyrighted-false' => 'СуÑпільне надбаннÑ',
'exif-photometricinterpretation-2' => 'RGB',
'exif-photometricinterpretation-6' => 'YCbCr',
@@ -3182,7 +3345,8 @@ Variants for Chinese language
'exif-xyresolution-i' => '$1 точок на дюйм',
'exif-xyresolution-c' => '$1 точок на Ñантиметр',
-'exif-colorspace-1' => 'sRGB',
+'exif-colorspace-1' => 'sRGB',
+'exif-colorspace-65535' => 'Ðекаліброване',
'exif-componentsconfiguration-0' => 'не Ñ–Ñнує',
'exif-componentsconfiguration-1' => 'Y',
@@ -3307,6 +3471,10 @@ Variants for Chinese language
'exif-gpslongitude-e' => 'Ñхідної довготи',
'exif-gpslongitude-w' => 'західної довготи',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 {{PLURAL:$1|метр|метра|метрів}} над рівнем морÑ',
+'exif-gpsaltitude-below-sealevel' => '$1 {{PLURAL:$1|метр|метра|метрів}} нижче Ñ€Ñ–Ð²Ð½Ñ Ð¼Ð¾Ñ€Ñ',
+
'exif-gpsstatus-a' => 'Ð’Ð¸Ð¼Ñ–Ñ€ÑŽÐ²Ð°Ð½Ð½Ñ Ð½Ðµ закінчене',
'exif-gpsstatus-v' => 'Готовий до передачі даних',
@@ -3318,21 +3486,75 @@ Variants for Chinese language
'exif-gpsspeed-m' => 'миль/год',
'exif-gpsspeed-n' => 'вузлів',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Кілометри',
+'exif-gpsdestdistance-m' => 'Милі',
+'exif-gpsdestdistance-n' => 'МорÑькі милі',
+
+'exif-gpsdop-excellent' => 'Відмінна ($1)',
+'exif-gpsdop-good' => 'Добра ($1)',
+'exif-gpsdop-moderate' => 'Ð¡ÐµÑ€ÐµÐ´Ð½Ñ ($1)',
+'exif-gpsdop-fair' => 'Задовільна ($1)',
+'exif-gpsdop-poor' => 'Ðизька ($1)',
+
+'exif-objectcycle-a' => 'Тільки вранці',
+'exif-objectcycle-p' => 'Тільки ввечері',
+'exif-objectcycle-b' => 'Вранці та ввечері',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Ñправжній',
'exif-gpsdirection-m' => 'магнітний',
+'exif-ycbcrpositioning-1' => 'Центрований',
+'exif-ycbcrpositioning-2' => 'Суміщений',
+
+'exif-dc-contributor' => 'Співавтори',
+'exif-dc-coverage' => 'ПроÑторові або тимчаÑові рамки медіа',
+'exif-dc-date' => 'Дата(и)',
+'exif-dc-publisher' => 'Видавець',
+'exif-dc-relation' => "Пов'Ñзані медіа",
+'exif-dc-rights' => 'Права',
+'exif-dc-source' => 'Оригінальне медіа',
+'exif-dc-type' => 'Тип медіа',
+
+'exif-rating-rejected' => 'Відхилено',
+
+'exif-isospeedratings-overflow' => 'Понад 65535',
+
+'exif-maxaperturevalue-value' => '$1 APEX (f/$2)',
+
+'exif-iimcategory-ace' => 'МиÑтецтво, культура та розваги',
+'exif-iimcategory-clj' => 'ЗлочинніÑÑ‚ÑŒ Ñ– право',
+'exif-iimcategory-dis' => 'Стихійні лиха та катаÑтрофи',
+'exif-iimcategory-fin' => 'Економіка Ñ– бізнеÑ',
+'exif-iimcategory-edu' => 'ОÑвіта',
+'exif-iimcategory-evn' => 'Ðавколишнє Ñередовище',
+'exif-iimcategory-hth' => "Здоров'Ñ",
+'exif-iimcategory-hum' => 'ЛюдÑькі зацікавленнÑ',
+'exif-iimcategory-lab' => 'ПрацÑ',
+'exif-iimcategory-lif' => 'СпоÑіб Ð¶Ð¸Ñ‚Ñ‚Ñ Ñ‚Ð° дозвіллÑ',
+'exif-iimcategory-pol' => 'Політика',
+'exif-iimcategory-rel' => 'Ð ÐµÐ»Ñ–Ð³Ñ–Ñ Ñ‚Ð° віра',
+'exif-iimcategory-sci' => 'Ðаука Ñ– технології',
+'exif-iimcategory-soi' => 'Соціальні питаннÑ',
+'exif-iimcategory-spo' => 'Спорт',
+'exif-iimcategory-war' => 'Війни, конфлікти та заворушеннÑ',
+'exif-iimcategory-wea' => 'Погода',
+
+'exif-urgency-normal' => 'Звичайна ($1)',
+'exif-urgency-low' => 'Ðизька ($1)',
+'exif-urgency-high' => 'ВиÑока ($1)',
+'exif-urgency-other' => 'Визначений кориÑтувачем пріоритет ($1)',
+
# External editor support
'edit-externally' => 'Редагувати цей файл, викориÑтовуючи зовнішню програму',
-'edit-externally-help' => '(Подробиці див. на Ñторінці [http://www.mediawiki.org/wiki/Manual:External_editors ІнÑтрукції з уÑтановки зовнішніх редакторів])',
+'edit-externally-help' => '(Подробиці див. на Ñторінці [//www.mediawiki.org/wiki/Manual:External_editors ІнÑтрукції з уÑтановки зовнішніх редакторів])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'вÑÑ–',
-'imagelistall' => 'вÑÑ–',
-'watchlistall2' => 'вÑÑ–',
-'namespacesall' => 'вÑÑ–',
-'monthsall' => 'вÑÑ–',
-'limitall' => 'уÑÑ–',
+'watchlistall2' => 'вÑÑ–',
+'namespacesall' => 'вÑÑ–',
+'monthsall' => 'вÑÑ–',
+'limitall' => 'уÑÑ–',
# E-mail address confirmation
'confirmemail' => 'ÐŸÑ–Ð´Ñ‚Ð²ÐµÑ€Ð´Ð¶ÐµÐ½Ð½Ñ Ð°Ð´Ñ€ÐµÑи ел. пошти',
@@ -3412,11 +3634,12 @@ $1',
'trackbackdeleteok' => 'Trackback вилучено.',
# Delete conflict
-'deletedwhileediting' => "'''Увага:''' Ñ†Ñ Ñторінка була вилучена піÑÐ»Ñ Ñ‚Ð¾Ð³Ð¾, Ñк ви розпочали редагуваннÑ!",
-'confirmrecreate' => "КориÑтувач [[User:$1|$1]] ([[User talk:$1|обговореннÑ]]) вилучив цю Ñторінку піÑÐ»Ñ Ñ‚Ð¾Ð³Ð¾, Ñк ви почали Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ– зазначив причиною:
+'deletedwhileediting' => "'''Увага:''' Ñ†Ñ Ñторінка була вилучена піÑÐ»Ñ Ñ‚Ð¾Ð³Ð¾, Ñк ви розпочали редагуваннÑ!",
+'confirmrecreate' => "КориÑтувач [[User:$1|$1]] ([[User talk:$1|обговореннÑ]]) вилучив цю Ñторінку піÑÐ»Ñ Ñ‚Ð¾Ð³Ð¾, Ñк ви почали Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ– зазначив причиною:
: ''$2''
Будь лаÑка, підтвердьте, що ви дійÑно бажаєте Ñтворити цю Ñторінку заново.",
-'recreate' => 'Повторно Ñтворити',
+'confirmrecreate-noreason' => 'КориÑтувач [[User:$1|$1]] ([[User talk:$1|обг]]) вилучив цю Ñторінку піÑÐ»Ñ Ñ‚Ð¾Ð³Ð¾, Ñк ви Ñ—Ñ— почали редагувати. Будь-лаÑка, підтвердіть, що ви дійÑно хочете Ñ—Ñ— відновити.',
+'recreate' => 'Повторно Ñтворити',
'unit-pixel' => ' пікÑ.',
@@ -3425,6 +3648,12 @@ $1',
'confirm-purge-top' => 'ОчиÑтити кеш цієї Ñторінки?',
'confirm-purge-bottom' => 'ПіÑÐ»Ñ Ð¾Ñ‡Ð¸Ñ‰ÐµÐ½Ð½Ñ ÐºÐµÑˆÑƒ Ñторінки буде показана Ñ—Ñ— оÑÑ‚Ð°Ð½Ð½Ñ Ð²ÐµÑ€ÑÑ–Ñ.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Гаразд',
+'confirm-watch-top' => 'Додати цю Ñторінку до ÑпиÑку ÑпоÑтереженнÑ?',
+'confirm-unwatch-button' => 'Гаразд',
+'confirm-unwatch-top' => 'Вилучити цю Ñторінку з вашого ÑпиÑку ÑпоÑтереженнÑ?',
+
# Separators for various lists, etc.
'semicolon-separator' => ';&#32;',
'comma-separator' => ',&#32;',
@@ -3483,13 +3712,13 @@ $1',
'watchlistedit-normal-legend' => 'Ð’Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ð·Ð°Ð³Ð¾Ð»Ð¾Ð²ÐºÑ–Ð² зі ÑпиÑку ÑпоÑтереженнÑ',
'watchlistedit-normal-explain' => 'Далі наведені заголовки з вашого ÑпиÑку ÑпоÑтереженнÑ.
Ð”Ð»Ñ Ð²Ð¸Ð»ÑƒÑ‡ÐµÐ½Ð½Ñ Ñторінки зі ÑпиÑку необхідно поÑтавити галочку в квадратику Ð±Ñ–Ð»Ñ Ð½ÑŒÐ¾Ð³Ð¾ Ñ– натиÑнути «{{int:Watchlistedit-normal-submit}}».
-Ви можете також [[Special:Watchlist/raw|редагувати ÑпиÑок Ñк текÑтові Ñ€Ñдки]].',
+Ви можете також [[Special:EditWatchlist/raw|редагувати ÑпиÑок Ñк текÑтові Ñ€Ñдки]].',
'watchlistedit-normal-submit' => 'Вилучити заголовки',
'watchlistedit-normal-done' => '{{PLURAL:$1|$1 заголовок був вилучений|$1 заголовки були вилучені|$1 заголовків були вилучені}} з вашого ÑпиÑку ÑпоÑтереженнÑ:',
'watchlistedit-raw-title' => 'Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдків ÑпиÑку ÑпоÑтереженнÑ',
'watchlistedit-raw-legend' => 'Ð ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ Ñ€Ñдків ÑпиÑку ÑпоÑтереженнÑ',
'watchlistedit-raw-explain' => 'Далі наведені Ñторінки з вашого ÑпиÑку ÑпоÑтереженнÑ. Ви можете редагувати ÑпиÑок, додаючи Ñ– вилучаючи з нього Ñ€Ñдки з назвами. ПіÑÐ»Ñ Ð·Ð°ÐºÑ–Ð½Ñ‡ÐµÐ½Ð½Ñ Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½ÑŒ натиÑніть «{{int:Watchlistedit-raw-submit}}».
-Ви також можете викориÑтовувати [[Special:Watchlist/edit|звичайний заÑіб Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÑпиÑку]].',
+Ви також можете викориÑтовувати [[Special:EditWatchlist|звичайний заÑіб Ñ€ÐµÐ´Ð°Ð³ÑƒÐ²Ð°Ð½Ð½Ñ ÑпиÑку]].',
'watchlistedit-raw-titles' => 'Заголовки:',
'watchlistedit-raw-submit' => 'Зберегти ÑпиÑок',
'watchlistedit-raw-done' => 'Ваш ÑпиÑок ÑпоÑÑ‚ÐµÑ€ÐµÐ¶ÐµÐ½Ð½Ñ Ð·Ð±ÐµÑ€ÐµÐ¶ÐµÐ½Ð¸Ð¹.',
@@ -3567,34 +3796,35 @@ $1',
'duplicate-defaultsort' => 'Увага. Ключ ÑÐ¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Â«$2» перекриває попередній ключ ÑÐ¾Ñ€Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ Â«$1».',
# Special:Version
-'version' => 'ВерÑÑ–Ñ MediaWiki',
-'version-extensions' => 'УÑтановлені розширеннÑ',
-'version-specialpages' => 'Спеціальні Ñторінки',
-'version-parserhooks' => 'Перехоплювачі ÑинтакÑичного аналізатора',
-'version-variables' => 'Змінні',
-'version-skins' => 'ОформленнÑ',
-'version-other' => 'Інше',
-'version-mediahandlers' => 'Обробники медіа',
-'version-hooks' => 'Перехоплювачі',
-'version-extension-functions' => 'Функції розширень',
-'version-parser-extensiontags' => 'Теги розширень ÑинтакÑичного аналізатора',
-'version-parser-function-hooks' => 'Перехоплювачі функцій ÑинтакÑичного аналізатора',
-'version-skin-extension-functions' => 'Функції розширень тем оформленнÑ',
-'version-hook-name' => "Ім'Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð¿Ð»ÑŽÐ²Ð°Ñ‡Ð°",
-'version-hook-subscribedby' => 'ПідпиÑаний на',
-'version-version' => '(ВерÑÑ–Ñ $1)',
-'version-svn-revision' => '(r$2)',
-'version-license' => 'ЛіцензіÑ',
-'version-poweredby-credits' => "Ð¦Ñ Ð’Ñ–ÐºÑ– працює на ÑиÑтемі ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð²Ð¼Ñ–Ñтом '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'інші',
-'version-license-info' => 'MediaWiki Ñ” вільним програмним забезпеченнÑм, ви можете розповÑюджувати та/або модифікувати його відповідно до умов GNU General Public License, Ñка Ð¾Ð¿ÑƒÐ±Ð»Ñ–ÐºÐ¾Ð²Ð°Ð½Ñ Ñ„Ð¾Ð½Ð´Ð¾Ð¼ вільного програмного забезпеченнÑ; або верÑÑ–Ñ— 2 Ліцензії, або (на Ваш розÑуд) будь-Ñкої наÑтупної верÑÑ–Ñ—.
+'version' => 'ВерÑÑ–Ñ MediaWiki',
+'version-extensions' => 'УÑтановлені розширеннÑ',
+'version-specialpages' => 'Спеціальні Ñторінки',
+'version-parserhooks' => 'Перехоплювачі ÑинтакÑичного аналізатора',
+'version-variables' => 'Змінні',
+'version-antispam' => 'ЗахиÑÑ‚ від Ñпаму',
+'version-skins' => 'ОформленнÑ',
+'version-api' => 'API',
+'version-other' => 'Інше',
+'version-mediahandlers' => 'Обробники медіа',
+'version-hooks' => 'Перехоплювачі',
+'version-extension-functions' => 'Функції розширень',
+'version-parser-extensiontags' => 'Теги розширень ÑинтакÑичного аналізатора',
+'version-parser-function-hooks' => 'Перехоплювачі функцій ÑинтакÑичного аналізатора',
+'version-hook-name' => "Ім'Ñ Ð¿ÐµÑ€ÐµÑ…Ð¾Ð¿Ð»ÑŽÐ²Ð°Ñ‡Ð°",
+'version-hook-subscribedby' => 'ПідпиÑаний на',
+'version-version' => '(ВерÑÑ–Ñ $1)',
+'version-svn-revision' => '(r$2)',
+'version-license' => 'ЛіцензіÑ',
+'version-poweredby-credits' => "Ð¦Ñ Ð’Ñ–ÐºÑ– працює на ÑиÑтемі ÑƒÐ¿Ñ€Ð°Ð²Ð»Ñ–Ð½Ð½Ñ Ð²Ð¼Ñ–Ñтом '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'інші',
+'version-license-info' => 'MediaWiki Ñ” вільним програмним забезпеченнÑм, ви можете розповÑюджувати та/або модифікувати його відповідно до умов GNU General Public License, Ñка Ð¾Ð¿ÑƒÐ±Ð»Ñ–ÐºÐ¾Ð²Ð°Ð½Ñ Ñ„Ð¾Ð½Ð´Ð¾Ð¼ вільного програмного забезпеченнÑ; або верÑÑ–Ñ— 2 Ліцензії, або (на Ваш розÑуд) будь-Ñкої наÑтупної верÑÑ–Ñ—.
MediaWiki поширюєтьÑÑ Ð² надії, що вона буде кориÑною, але БЕЗ БУДЬ-ЯКИХ ГÐРÐÐТІЙ, навіть без неÑвної гарантії КОМЕРЦІЙÐОЇ ПРИДÐТÐОСТІ чи ПРИДÐТÐОСТІ ДЛЯ ПЕВÐОЇ МЕТИ. ДивітьÑÑ GNU General Public License Ð´Ð»Ñ Ð±Ñ–Ð»ÑŒÑˆ докладної інформації.
-Ви повинні були отримати [{{SERVER}}{{SCRIPTPATH}}/COPYING копію GNU General Public License] разом з цією програмою, Ñкщо немає, напишіть у Free Software Foundation, Inc 51 Franklin Street, Fifth Floor , Boston, MA 02110-1301, СШРабо [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html прочитайте Ñ—Ñ— онлайн].',
-'version-software' => 'УÑтановлене програмне забезпеченнÑ',
-'version-software-product' => 'Продукт',
-'version-software-version' => 'ВерÑÑ–Ñ',
+Ви повинні були отримати [{{SERVER}}{{SCRIPTPATH}}/COPYING копію GNU General Public License] разом з цією програмою, Ñкщо немає, напишіть у Free Software Foundation, Inc 51 Franklin Street, Fifth Floor , Boston, MA 02110-1301, СШРабо [//www.gnu.org/licenses/old-licenses/gpl-2.0.html прочитайте Ñ—Ñ— онлайн].',
+'version-software' => 'УÑтановлене програмне забезпеченнÑ',
+'version-software-product' => 'Продукт',
+'version-software-version' => 'ВерÑÑ–Ñ',
# Special:FilePath
'filepath' => 'ШлÑÑ… до файлу',
@@ -3604,22 +3834,22 @@ MediaWiki поширюєтьÑÑ Ð² надії, що вона буде кориÑ
Ð—Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð¿Ð¾ÐºÐ°Ð·ÑƒÑŽÑ‚ÑŒÑÑ Ð² оригінальному розмірі. Інші типи файлів відкриваютьÑÑ Ð¿Ð¾Ð²â€™Ñзаними програмами.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Пошук файлів-дублікатів',
-'fileduplicatesearch-summary' => 'Пошук дублікатів файлів базуєтьÑÑ Ð½Ð° Ñ—Ñ… хеш-функції.
-
-Уведіть назву файлу без префікÑу «{{ns:file}}:».',
-'fileduplicatesearch-legend' => 'Пошук дублікатів',
-'fileduplicatesearch-filename' => 'Ðазва файлу:',
-'fileduplicatesearch-submit' => 'Знайти',
-'fileduplicatesearch-info' => '$1 × $2 пікÑелів<br />Розмір файлу: $3<br />MIME-тип: $4',
-'fileduplicatesearch-result-1' => 'Файл «$1» не має ідентичних.',
-'fileduplicatesearch-result-n' => 'Файл «$1» має {{PLURAL:$2|1 ідентичний дублікат|$2 ідентичних дублікатів}}.',
+'fileduplicatesearch' => 'Пошук файлів-дублікатів',
+'fileduplicatesearch-summary' => 'Пошук дублікатів файлів на оÑнові хеш-значень.',
+'fileduplicatesearch-legend' => 'Пошук дублікатів',
+'fileduplicatesearch-filename' => 'Ðазва файлу:',
+'fileduplicatesearch-submit' => 'Знайти',
+'fileduplicatesearch-info' => '$1 × $2 пікÑелів<br />Розмір файлу: $3<br />MIME-тип: $4',
+'fileduplicatesearch-result-1' => 'Файл «$1» не має ідентичних.',
+'fileduplicatesearch-result-n' => 'Файл «$1» має {{PLURAL:$2|1 ідентичний дублікат|$2 ідентичних дублікатів}}.',
+'fileduplicatesearch-noresults' => 'Файл з назвою «$1» не знайдено.',
# Special:SpecialPages
'specialpages' => 'Спеціальні Ñторінки',
'specialpages-note' => '----
-* Звичайні Ñпеціальні Ñторінки.
-* <strong class="mw-specialpagerestricted">Спеціальні Ñторінки з обмеженим доÑтупом.</strong>',
+* Звичайні Ñлужбові Ñторінки
+* <span class="mw-specialpagerestricted">Restricted special pages.</span>
+* <span class="mw-specialpagecached">Cached special pages (might be obsolete).</span>',
'specialpages-group-maintenance' => 'Технічні звіти',
'specialpages-group-other' => 'Інші',
'specialpages-group-login' => 'Вхід до ÑиÑтеми / реєÑтраціÑ',
diff --git a/languages/messages/MessagesUr.php b/languages/messages/MessagesUr.php
index 6bfad719..64356d45 100644
--- a/languages/messages/MessagesUr.php
+++ b/languages/messages/MessagesUr.php
@@ -8,6 +8,7 @@
* @file
*
* @author Chris H
+ * @author Istabani
* @author Meno25
* @author O.bangash
* @author Rachitrali
@@ -20,12 +21,6 @@
$fallback8bitEncoding = 'windows-1256';
$rtl = true;
-$defaultUserOptionOverrides = array(
- # Swap sidebar to right side by default
- 'quickbar' => 2,
- # Underlines seriously harm legibility. Force off:
- 'underline' => 0,
-);
$namespaceNames = array(
NS_MEDIA => 'زریعÛ',
@@ -64,7 +59,7 @@ $messages = array(
'tog-editsection' => '[ترمیم] روابط Ú©Û’ ذریعے سطری ترمیم کاری Ùعال کرو',
'tog-editsectiononrightclick' => 'سطری عنوانات پر دایاں طق Ú©Û’ ذریعے سطری ترمیم کاری Ùعال بناؤ',
'tog-showtoc' => 'ÙÛرست٠مندرجات دکھاؤ (3 سے Ø²ÛŒØ§Ø¯Û Ø³Ø±Ø®ÛŒÙˆÚº والے صÙحات کیلئے)',
-'tog-rememberpassword' => 'اÙس Ø´Ù…Ø§Ø±Ù†Ø¯Û Ù¾Ø± میری Ø¯Ø§Ø®Ù„Û Ú©Ø§Ø±ÛŒ معلومات یاد رکھو (for a maximum of $1 {{PLURAL:$1|day|days}})',
+'tog-rememberpassword' => 'اÙس متصÙØ­ پر میرے داخل٠نوشتگی معلومات یاد رکھو (Ø²ÛŒØ§Ø¯Û Ø³Û’ Ø²ÛŒØ§Ø¯Û $1 {{PLURAL:$1|دÙÙ†|ایام}} کیلئے)',
'tog-watchcreations' => 'میرے مرتب Ø´Ø¯Û ØµÙحات Ú©Ùˆ میری زیرÙنظرÙÛرست میں شامل کیا کرو',
'tog-watchdefault' => 'میرے ترمیم Ø´Ø¯Û ØµÙحات Ú©Ùˆ میری زیرÙنظرÙÛرست میں شامل کیا کرو',
'tog-watchmoves' => 'میں جن صÙحات Ú©Ùˆ منتقل کرتا Ûوں، اÙÙ† Ú©Ùˆ میری زیرÙنظرÙÛرست میں شامل کیا کرو',
@@ -72,16 +67,17 @@ $messages = array(
'tog-minordefault' => 'تمام ترمیمات Ú©Ùˆ ÛÙ…ÛŒØ´Û Ø¨Ø·ÙˆØ±Ù Ù…Ø¹Ù…ÙˆÙ„ÛŒ ترمیم نشانزد کیا کرو',
'tog-previewontop' => 'تدوینی Ø®Ø§Ù†Û Ø³Û’ Ù¾ÛÙ„Û’ نمائش دکھاؤ',
'tog-previewonfirst' => 'Ù¾ÛÙ„ÛŒ ترمیم پر نمائش دکھاؤ',
-'tog-nocache' => 'بطن کارئ صÙØ­Û ØºÛŒØ± Ùعال بناؤ',
+'tog-nocache' => 'متصÙØ­ کا صÙØ­ÛŒ ابطن سازی غیرÙعال',
'tog-enotifwatchlistpages' => 'جب میری زیرÙنظرÙÛرست پر کوئی صÙØ­Û Ù…ÛŒÚº تبدیلی واقع ÛÙˆ تو مجھے برقی ڈاک بھیجو',
'tog-enotifusertalkpages' => 'جب میرا تبادلۂ خیال صÙØ­Û Ù…ÛŒÚº تبدیلی واقع ÛÙˆ تو مجھے برقی ڈاک بھیجو',
'tog-enotifminoredits' => 'صÙحات میں معمولی ترمیمات Ú©Û’ بارے میں بھی مجھے برقی ڈاک بھیجو',
'tog-enotifrevealaddr' => 'خبرداری برقی خطوط میں میرا برقی ڈاک Ù¾ØªÛ Ø¸Ø§Ûر کرو',
'tog-shownumberswatching' => 'دیکھنے والے صارÙین Ú©ÛŒ تعداد دکھاؤ',
-'tog-oldsig' => 'Ù…ÙˆØ¬ÙˆØ¯Û Ø¯Ø³ØªØ®Ø· Ú©ÛŒ نمائش:',
+'tog-oldsig' => 'Ù…ÙˆØ¬ÙˆØ¯Û Ø¯Ø³ØªØ®Ø·:',
'tog-fancysig' => '(Ø³Ø§Ø¯Û Ø¯Ø³ØªØ®Ø· بلا خودکار ربط)',
-'tog-externaleditor' => 'ÛÙ…ÛŒØ´Û Ø¨ÛŒØ±ÙˆÙ†ÛŒ تدوین کار استعمال کرو (صر٠ماÛرین کیلئے، اÙس کیلئے Ø´Ù…Ø§Ø±Ù†Ø¯Û Ù¾Ø± خاص ترتیبات درکار Ûوتی Ûیں)',
-'tog-externaldiff' => 'Use external diff by default (for experts only, needs special settings on your computer)',
+'tog-externaleditor' => 'ÛÙ…ÛŒØ´Û Ø¨ÛŒØ±ÙˆÙ†ÛŒ تدوین کار استعمال کرو (صر٠ماÛرین کیلئے، اÙس کیلئے Ø´Ù…Ø§Ø±Ù†Ø¯Û Ù¾Ø± خاص ترتیبات درکار Ûوتی Ûیں۔
+[//www.mediawiki.org/wiki/Manual:External_editors مزید معلومات.])',
+'tog-externaldiff' => '',
'tog-showjumplinks' => 'Enable "jump to" accessibility links',
'tog-uselivepreview' => 'براÛ٠راست نمائش استعمال کرو (JavaScript چاÛئے نیز تجرباتی)',
'tog-forceeditsummary' => 'جب میں ترمیمی Ø®Ù„Ø§ØµÛ Ø®Ø§Ù„ÛŒ Ú†Ú¾ÙˆÚ‘ÙˆÚº تو مجھے Ø¢Ú¯Ø§Û Ú©Ø±Ùˆ',
@@ -103,6 +99,8 @@ $messages = array(
'editfont-style' => 'خانۂ تدوین کا انداز٠تحریر:',
'editfont-default' => 'متصÙØ­ کا Ø·Û’ شدÛ',
'editfont-monospace' => 'یکÙضائی نویسÛ',
+'editfont-sansserif' => 'Ø¨Û’Ø­Ù„ÛŒÛ Ù†ÙˆÛŒØ³Û',
+'editfont-serif' => 'Ø­Ù„ÛŒÛ Ù†ÙˆÛŒØ³Û',
# Dates
'sunday' => 'اتوار',
@@ -168,8 +166,6 @@ $messages = array(
'category-subcat-count-limited' => 'اÙس Ø²Ù…Ø±Û Ù…ÛŒÚº درج ذیل {{PLURAL:$1|ذیلی Ø²Ù…Ø±Û ÛÛ’|$1 ذیلی Ø²Ù…Ø±Û Ø¬Ø§Øª Ûیں}}.',
'listingcontinuesabbrev' => '۔جاری',
-'mainpagetext' => "'''میڈیاوکی Ú©Ùˆ کامیابی سے چالو کردیا گیا ÛÛ’Û”.'''",
-
'about' => 'تعارÙ',
'article' => 'صÙØ­Û‚ مشمول',
'newwindow' => '(نـئی ونـڈو میـں)',
@@ -197,10 +193,10 @@ $messages = array(
'vector-action-delete' => 'حذ٠کرو',
'vector-action-move' => 'منتقل کرو',
'vector-action-protect' => 'محÙوظ کرو',
-'vector-action-unprotect' => 'غیر محÙوظ',
+'vector-action-unprotect' => 'تحÙظ میں تبدیلی',
'vector-view-create' => 'تخلیق',
'vector-view-edit' => 'ترمیم',
-'vector-view-history' => 'تاریخچÛ',
+'vector-view-history' => 'تاریخ',
'vector-view-view' => 'پڑھیں',
'vector-view-viewsource' => 'مسودÛ',
'actions' => 'ایکشنز',
@@ -217,10 +213,10 @@ $messages = array(
'searcharticle' => 'چلو',
'history' => 'ØªØ§Ø±ÛŒØ®Ú†Û Ø¡ صÙØ­Û',
'history_short' => 'تاریخچÛ',
-'info_short' => 'معلومات',
'printableversion' => 'قابل طبع نسخÛ',
'permalink' => 'مستقل کڑی',
'print' => 'طباعت',
+'view' => 'منظر',
'edit' => 'ترمیم',
'create' => 'تخلیق',
'editthispage' => 'اس صÙØ­Û Ù…ÛŒÚº ترمیم کریں',
@@ -231,8 +227,8 @@ $messages = array(
'protect' => 'محÙوظ',
'protect_change' => 'تبدیل کرو',
'protectthispage' => 'اس صÙحےکومحÙوظ کریں',
-'unprotect' => 'غیر محÙوظ',
-'unprotectthispage' => 'اس صÙØ­Û’Ú©Ùˆ غیر محÙوظ کریں',
+'unprotect' => 'تحÙظ میں تبدیلی',
+'unprotectthispage' => 'اÙسے صÙØ­Û’ Ú©ÛŒ تحÙظ تبدیل کریں',
'newpage' => 'نیا صÙØ­Û',
'talkpage' => 'اس صÙØ­Û Ù¾Ø± تبادلۂ خیال کریں',
'talkpagelinktext' => 'Ú¯Ùتگو',
@@ -406,10 +402,9 @@ Warning: Page may not contain recent updates.',
'viewsourcetext' => 'آپ ØµØ±Ù Ù…Ø³ÙˆØ¯Û Ø¯ÛŒÚ©Ú¾ سکتے Ûیں اور اسکی نقل اتار سکتے Ûیں:',
'protectedinterface' => 'ÛŒÛ ØµÙØ­Û Ù…ØµÙ†Ø¹â€ŒÙ„Ø·ÛŒÙ Ú©ÛŒÙ„Ø¦Û’ سطح‌البینی متن ÙراÛÙ… کرتا ÛÛ’ØŒ اور ناجائزاستعمال Ú©Û’ سدÙباب کیلئے اÙسے مقÙÙ„ کیا گیا ÛÛ’.',
'editinginterface' => "'''انتباÛ: ''' آپ ایک ایسا صÙØ­Û ØªØ¯ÙˆÛŒÙ† کر رÛÛ’ Ûیں جو مصنع‌لطی٠کیلئے سطح‌البینی متن ÙراÛÙ… کرتا ÛÛ’Û” اس صÙØ­Û Ù…ÛŒÚº Ú©ÛŒ جانے والی ترمیم، دیگر صارÙین کیلئے سطح‌البین Ú©Ùˆ تبدیل کردے گی۔
-براÛ٠کرم، ØªØ±Ø¬Ù…Û Ú©ÛŒÙ„Ø¦Û’ [http://translatewiki.net/wiki/Main_Page?setlang=en '''ٹرانسلیٹ ویکی.نیٹ'''] (میڈیاویکی مقامیانی منصوبÛ) استعمال کیجئے.",
+براÛ٠کرم، ØªØ±Ø¬Ù…Û Ú©ÛŒÙ„Ø¦Û’ [//translatewiki.net/wiki/Main_Page?setlang=en '''ٹرانسلیٹ ویکی.نیٹ'''] (میڈیاویکی مقامیانی منصوبÛ) استعمال کیجئے.",
'sqlhidden' => '(SQL استÙØ³Ø§Ø±Û Ù¾ÙˆØ´ÛŒØ¯Û)',
'namespaceprotected' => "آپ Ú©Ùˆ '''$1''' Ùضائے نام میں صÙحات تدوین کرنے Ú©ÛŒ اÙجازت Ù†Ûیں ÛÛ’.",
-'customcssjsprotected' => 'آب Ú©Ùˆ اÙس صÙØ­Û Ú©ÛŒ تدوین Ú©ÛŒ اÙجازت Ù†Ûیں ÛÛ’ØŒ Ú©ÛŒÙˆÙ†Ú©Û Ø§Ùس میں دوسرے صار٠کی ذاتی ترتیبات موجود Ûیں.',
'ns-specialprotected' => 'خاص صÙحات Ú©ÛŒ تدوین Ù†Ûیں Ú©ÛŒ جاسکتی.',
'titleprotected' => 'اس عنوان Ú©Ùˆ [[User:$1|$1]] Ù†Û’ تخلیق سے محÙوظ کیا ÛÛ’.
ÙˆØ¬Û ÛŒÛ Ø¨ØªØ§Ø¦ÛŒ گئی ÛÛ’: "\'\'$2\'\'"',
@@ -444,11 +439,12 @@ Warning: Page may not contain recent updates.',
'createaccount' => 'Ú©Ú¾Ø§ØªÛ Ú©Ú¾ÙˆÙ„ÛŒÚº',
'gotaccount' => "Ù¾ÛÙ„Û’ سے Ú©Ú¾Ø§ØªÛ Ø¨Ù†Ø§ Ûوا ÛÛ’? '''$1'''.",
'gotaccountlink' => 'داخل Ûوجائیے',
+'userlogin-resetlink' => 'Ø¯Ø§Ø®Ù„Ù Ù†ÙˆØ´ØªÛ Ûونے Ú©ÛŒ تÙاصیل بھول گئے Ûیں؟',
'createaccountmail' => 'بذریعۂ برقی ڈاک',
'createaccountreason' => 'وجÛ:',
'badretype' => 'درج Ø´Ø¯Û Ú©Ù„Ù…Û‚ شناخت اصل سے مطابقت Ù†Ûیں رکھتا۔',
-'userexists' => 'درج Ø´Ø¯Û Ø§Ø³Ù…Ù ØµØ§Ø±Ù Ù¾ÛÙ„Û’ سے زیرÙاستعمال ÛÛ’.
-براÛ٠کرم، کوئی دوسرا اسم٠صار٠استعمال کریں.',
+'userexists' => 'داخل Ú©Ø±Ø¯Û Ø§Ø³Ù… صار٠پÛÙ„Û’ سے مستعمل ÛÛ’Û”
+براÛ٠کرم! کوئی دوسرا اسم منتخب کیجئے۔',
'loginerror' => 'داخلے میں غلطی',
'createaccounterror' => 'Ú©Ú¾Ø§ØªÛ $1 بنایا Ù†Ûیں جاسکا',
'nocookiesnew' => 'کھاتۂ صار٠بنادیا گیا ÛÛ’ØŒ لیکن آپ کا Ø¯Ø§Ø®Ù„Û Ù†Ûیں Ûوا.
@@ -464,7 +460,7 @@ Warning: Page may not contain recent updates.',
'nosuchuser' => '"$1" Ú©Û’ نام سے کوئی صار٠موجود Ù†Ûیں ÛÛ’.
برائے Ù…Ûربانی! Ûجوں Ú©Û’ درست اندراج Ú©ÛŒ تصدیق کرلیجئے.
اگر آپ چاÛیں تو [[Special:UserLogin/signup|نیا Ú©Ú¾Ø§ØªÛ Ø¨Ú¾ÛŒ بناسکتے Ûیں]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" Ú©Û’ نام سے کوئی صار٠موجود Ù†Ûیں.
+'nosuchusershort' => '"$1" Ú©Û’ نام سے کوئی صار٠موجود Ù†Ûیں.
اپنا ÛØ¬Û Ø¬Ø§Ù†Ú†Ø¦Û’.',
'nouserspecified' => 'آپ Ú©Ùˆ ایک اسم٠صار٠مخصوص کرنا ÛÛ’.',
'login-userblocked' => 'اÙس صار٠پر پابندی ÛÛ’. Ø¯Ø§Ø®Ù„Ù Ù†ÙˆØ´ØªÛ Ûونے Ú©ÛŒ اجازت Ù†Ûیں.',
@@ -514,7 +510,7 @@ Warning: Page may not contain recent updates.',
Ø¯ÙˆØ¨Ø§Ø±Û Ú©ÙˆØ´Ø´ کرنے سے Ù¾ÛÙ„Û’ انتظار Ùرمائیے.',
'loginlanguagelabel' => 'زبان: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'پارلÙظ تبدیل کریں',
'resetpass_announce' => 'آپ ایک برقی ارسال Ú©Ø±Ø¯Û Ø¹Ø§Ø±Ø¶ÛŒ رمز Ú©Û’ ساتھ داخل Ûوئے Ûیں.
Ø¯Ø§Ø®Ù„Ù Ù†ÙˆØ´ØªÛ Ú©Û’ عمل Ú©Ùˆ مکمل کرنے کیلئے آپ Ú©Ùˆ ÛŒÛاں نیا پارلÙظ متعین کرنا Ûوگا:',
@@ -533,6 +529,10 @@ Warning: Page may not contain recent updates.',
آپ یا تو Ù¾ÛÙ„Û’ ÛÛŒ سے آپنا پارلÙظ کامیابی سے تبدیل کرچکے Ûیں اور یا آپ Ù†Û’ نئے عارضی پارلÙظ Ú©ÛŒ درخواست Ú©ÛŒ ÛÛ’.',
'resetpass-temp-password' => 'عارضی پارلÙظ:',
+# Special:PasswordReset
+'passwordreset' => 'پارلÙظ Ú©ÛŒ بازتعینی',
+'passwordreset-username' => 'اسم٠صارÙ:',
+
# Edit page toolbar
'bold_sample' => 'دبیز متن',
'bold_tip' => 'دبیز متن',
@@ -544,8 +544,6 @@ Warning: Page may not contain recent updates.',
'extlink_tip' => 'بیرونی ربط (یاد رکھئے http:// prefix)',
'headline_sample' => 'Ø´Û Ø³Ø±Ø®ÛŒ',
'headline_tip' => 'Ø´Û Ø³Ø±Ø®ÛŒ Ø¯Ø±Ø¬Û Ø¯ÙˆÙ…',
-'math_sample' => 'ØµÛŒØºÛ ÛŒÛاں درج کیجئے',
-'math_tip' => '(ریاضیاتی ØµÛŒØºÛ LaTeX)',
'nowiki_sample' => 'ØºÛŒØ±Ø´Ú©Ù„Ø¨Ù†Ø¯Ø´Ø¯Û Ù…ØªÙ† ÛŒÛاں درج کریں',
'nowiki_tip' => 'ویکی شکلبندی نظرانداز کریں',
'image_tip' => 'Ù¾ÛŒÙˆØ³ØªÛ Ù…Ù„Ù',
@@ -610,6 +608,8 @@ $1 نے پابندی لگائی تھی.
'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>',
'updated' => '(اپ ڈیٹڈ)',
'note' => "'''نوٹ:'''",
'previewnote' => "'''یاد رکھیں، ÛŒÛ ØµØ±Ù Ù†Ù…Ø§Ø¦Ø´ ÛÛ’ ۔آپ Ú©ÛŒ ترامیم ابھی محÙوظ Ù†Ûیں Ú©ÛŒ گئیں۔'''",
@@ -663,6 +663,7 @@ $1 نے پابندی لگائی تھی.
'currentrev' => 'Ø­Ù€Ø§Ù„ÛŒÙ€Û ØªÙ€Ø¬Ø¯ÛŒØ¯',
'currentrev-asof' => 'Ø­Ø§Ù„ÛŒÛ Ù†Ø¸Ø±Ø«Ø§Ù†ÛŒ بمطابق $1',
'revisionasof' => 'تـجدید بـمطابق $1',
+'revision-info' => 'نظرثانی بتاریخ $1 از $2',
'previousrevision' => 'â†Ù¾Ø±Ø§Ù†ÛŒ تدوین',
'nextrevision' => '→اگلا اعادÛ',
'currentrevisionlink' => 'Ø­Ø§Ù„ÛŒÛ Ù†Ø¸Ø±Ø«Ø§Ù†ÛŒ',
@@ -769,6 +770,7 @@ $1",
'notextmatches' => 'کوئی بھی مماثل متن موجود Ù†Ûیں',
'prevn' => 'Ù¾Ú†Ú¾Ù„Û’ {{PLURAL:$1|$1}}',
'nextn' => 'اگلے {{PLURAL:$1|$1}}',
+'prevn-title' => 'Ù¾Ú†Ú¾Ù„Û’ $1 {{PLURAL:$1|نتیجÛ|نتائج}}',
'nextn-title' => 'Ø¢Ú¯Û’ $1 {{PLURAL:$1|نتیجÛ|نتائج}}',
'shown-title' => 'ÙÛŒ صÙØ­Û $1 {{PLURAL:$1|نتیجÛ|نتائج}} دÙکھاؤ',
'viewprevnext' => 'دیکھیں($1 {{int:pipe-separator}} $2) ($3)۔',
@@ -829,7 +831,6 @@ $1",
'changepassword' => 'کلمۂ شناخت تبدیل کریں',
'prefs-skin' => 'جÙلد',
'skin-preview' => 'پیش منظر',
-'prefs-math' => 'ریاضی',
'datedefault' => 'کوئی ترجیحات Ù†Ûیں',
'prefs-datetime' => 'تاریخ و وقت',
'prefs-personal' => 'نمایۂ صارÙ',
@@ -898,8 +899,9 @@ HTML tags جانچئے.',
'email' => 'برقی خط',
'prefs-help-realname' => 'حقیقی نام اختیاری ÛÛ’.
اگر آپ اÙسے Ù…Ûیّا کرتے Ûیں، تو اÙسے آپ Ú©Û’ کام کیلئے آپ Ú©Ùˆ انتساب دینے کیلئے استعمال کیا جائے گا.',
-'prefs-help-email' => 'برقی ڈاک کا Ù¾ØªÛ Ø§Ø®ØªÛŒØ§Ø±ÛŒ ÛÛ’ØŒ لیکن ÛŒÛ Ø§Ùس وقت Ù…Ùید ثابت Ûوسکتا ÛÛ’ جب آپ اپنا کلمۂ شناخت بھول جائیں.
-آپ ÛŒÛ Ø¨Ú¾ÛŒ منتخب کرسکتے Ûیں Ú©Û Ø¯ÙˆØ³Ø±Û’ صارÙین، آپ Ú©ÛŒ شناخت Ú©Ùˆ اÙشا کئے بغیر، آپ Ú©Û’ تبادلۂ خیال صÙØ­Û Ù¾Ø± آپ سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ÛŒÚº.',
+'prefs-help-email' => 'برقی ڈاک کا Ù¾ØªÛ Ø§Ø®ØªÛŒØ§Ø±ÛŒ ÛÛ’ØŒ لیکن ÛŒÛ Ø§Ùس وقت Ù…Ùید ثابت Ûوسکتا ÛÛ’ جب آپ اپنا پارلÙظ بھول گئے ÛÙˆÚº.',
+'prefs-help-email-others' => 'آپ ÛŒÛ Ø¨Ú¾ÛŒ منتخب کرسکتے Ûیں Ú©Û Ø¯ÙˆØ³Ø±Û’ صارÙین آپ Ú©Û’ تبادلۂ خیال صÙØ­Û Ù¾Ø± ایک ربط Ú©Û’ ذریعے آپ Ú©Ùˆ برقی ڈاک بھیجیں.
+جب دوسرے صارÙین آپ سے Ø±Ø§Ø¨Ø·Û Ú©Ø±ØªÛ’ Ûیں تو آپ کا برقی ڈاک کا Ù¾ØªÛ Ø§Ùشا Ù†Ûیں کیا جاتا۔',
'prefs-help-email-required' => 'برقی ڈاک Ù¾ØªÛ Ú†Ø§Ûئے.',
'prefs-info' => 'بنیادی معلومات',
'prefs-i18n' => 'بین الاقوامیت',
@@ -935,31 +937,32 @@ HTML tags جانچئے.',
'action-edit' => 'اس صÙØ­Û Ù…ÛŒÚº ترمیم کریں',
# Recent changes
-'nchanges' => '$1 {{PLURAL:$1|تبدیلی|تبدیلیاں}}',
-'recentchanges' => 'Ø­Ø§Ù„ÛŒÛ ØªØ¨Ø¯ÛŒÙ„ÛŒØ§Úº',
-'recentchanges-legend' => 'اÙØ®ØªÛŒØ§Ø±Ø§ØªÙ Ø­Ø§Ù„ÛŒÛ ØªØ¨Ø¯ÛŒÙ„ÛŒØ§Úº',
-'recentchangestext' => 'اس صÙØ­Û’ پر ویکی میں Ûونے والی ØªØ§Ø²Û ØªØ±ÛŒÚº تبدیلیوں کا مشاÛØ¯Û Ú©ÛŒØ¬ÛŒÛ“Û”',
-'recentchanges-label-newpage' => 'اÙس ترمیم Ù†Û’ نیا صÙØ­Û ØªØ®Ù„ÛŒÙ‚ کردیا',
-'recentchanges-label-minor' => 'ÛŒÛ Ø§ÛŒÚ© معمولی ترمیم ÛÛ’',
-'recentchanges-label-bot' => 'ÛŒÛ Ø§ÛŒÚ© Ø±ÙˆØ¨Ø§Ù„Û Ø³Û’ سرانجام Ø´Ø¯Û ØªØ±Ù…ÛŒÙ… ÛÛ’',
-'rcnote' => "درج ذیل Ú¯Ø²Ø´ØªÛ {{PLURAL:$2|دÙÙ†|'''$2''' ایام}} میں Ûونے والی {{PLURAL:$1|'''ایک''' تبدیلی ÛÛ’|آخری '''$1''' تبدیلیاں Ûیں}}ØŒ $5ØŒ $4.",
-'rcnotefrom' => "ذیل میں '''$2''' سے Ú©ÛŒ گئی تبدیلیاں Ûیں ('''$1''' تبدیلیاں دکھائی جارÛÛŒ Ûیں)Û”",
-'rclistfrom' => '$1 سےنئی تبدیلیاں دکھانا شروع کریں',
-'rcshowhideminor' => 'معمولی ترامیم $1',
-'rcshowhidebots' => 'خودکار صار٠$1',
-'rcshowhideliu' => 'داخل Ø´Ø¯Û ØµØ§Ø±Ù $1',
-'rcshowhideanons' => 'گمنام صار٠$1',
-'rcshowhidemine' => 'ذاتی ترامیم $1',
-'rclinks' => 'آخری $2 روز میں Ûونے والی $1 تبدیلیوں کا مشاÛØ¯Û Ú©Ø±ÛŒÚº<br />$3',
-'diff' => 'Ùرق',
-'hist' => 'تاریخچÛ',
-'hide' => 'چھـپائیں',
-'show' => 'دکھاؤ',
-'minoreditletter' => 'Ù…',
-'newpageletter' => 'نیا ..',
-'boteditletter' => ' خودکار',
-'rc-enhanced-expand' => 'تÙصیلات دÙکھاؤ (JavaScript چاÛئے)',
-'rc-enhanced-hide' => 'تÙصیلات چھپائیے',
+'nchanges' => '$1 {{PLURAL:$1|تبدیلی|تبدیلیاں}}',
+'recentchanges' => 'Ø­Ø§Ù„ÛŒÛ ØªØ¨Ø¯ÛŒÙ„ÛŒØ§Úº',
+'recentchanges-legend' => 'اÙØ®ØªÛŒØ§Ø±Ø§ØªÙ Ø­Ø§Ù„ÛŒÛ ØªØ¨Ø¯ÛŒÙ„ÛŒØ§Úº',
+'recentchangestext' => 'اس صÙØ­Û’ پر ویکی میں Ûونے والی ØªØ§Ø²Û ØªØ±ÛŒÚº تبدیلیوں کا مشاÛØ¯Û Ú©ÛŒØ¬ÛŒÛ“Û”',
+'recentchanges-feed-description' => 'اس خورد میں ویکی پر Ûونے والی ØªØ§Ø²Û ØªØ±ÛŒÚº تبدیلیوں کا مشاÛØ¯Û Ú©ÛŒØ¬ÛŒÛ“Û”',
+'recentchanges-label-newpage' => 'اÙس ترمیم Ù†Û’ نیا صÙØ­Û ØªØ®Ù„ÛŒÙ‚ کردیا',
+'recentchanges-label-minor' => 'ÛŒÛ Ø§ÛŒÚ© معمولی ترمیم ÛÛ’',
+'recentchanges-label-bot' => 'ÛŒÛ Ø§ÛŒÚ© Ø±ÙˆØ¨Ø§Ù„Û Ø³Û’ سرانجام Ø´Ø¯Û ØªØ±Ù…ÛŒÙ… ÛÛ’',
+'rcnote' => "درج ذیل Ú¯Ø²Ø´ØªÛ {{PLURAL:$2|دÙÙ†|'''$2''' ایام}} میں Ûونے والی {{PLURAL:$1|'''ایک''' تبدیلی ÛÛ’|آخری '''$1''' تبدیلیاں Ûیں}}ØŒ $5ØŒ $4.",
+'rcnotefrom' => "ذیل میں '''$2''' سے Ú©ÛŒ گئی تبدیلیاں Ûیں ('''$1''' تبدیلیاں دکھائی جارÛÛŒ Ûیں)Û”",
+'rclistfrom' => '$1 سےنئی تبدیلیاں دکھانا شروع کریں',
+'rcshowhideminor' => 'معمولی ترامیم $1',
+'rcshowhidebots' => 'خودکار صار٠$1',
+'rcshowhideliu' => 'داخل Ø´Ø¯Û ØµØ§Ø±Ù $1',
+'rcshowhideanons' => 'گمنام صار٠$1',
+'rcshowhidemine' => 'ذاتی ترامیم $1',
+'rclinks' => 'آخری $2 روز میں Ûونے والی $1 تبدیلیوں کا مشاÛØ¯Û Ú©Ø±ÛŒÚº<br />$3',
+'diff' => 'Ùرق',
+'hist' => 'تاریخچÛ',
+'hide' => 'چھـپائیں',
+'show' => 'دکھاؤ',
+'minoreditletter' => 'Ù…',
+'newpageletter' => 'نیا ..',
+'boteditletter' => ' خودکار',
+'rc-enhanced-expand' => 'تÙصیلات دÙکھاؤ (JavaScript چاÛئے)',
+'rc-enhanced-hide' => 'تÙصیلات چھپائیے',
# Recent changes linked
'recentchangeslinked' => 'Ù…ØªØ¹Ù„Ù‚Û ØªØ¨Ø¯ÛŒÙ„ÛŒØ§Úº',
@@ -1014,6 +1017,9 @@ HTML tags جانچئے.',
'destfilename' => 'تعین Ø´Ø¯Û Ø§Ø³Ù… ملÙ:',
'watchthisupload' => 'ÛŒÛ ØµÙØ­Û Ø²ÛŒØ± نظر کیجیۓ',
+'license' => 'اجازÛ:',
+'license-header' => 'Ø§Ø¬Ø§Ø²Û Ú©Ø§Ø±ÛŒ',
+
# Special:ListFiles
'listfiles' => 'ÙÛرست Ùائل',
@@ -1028,7 +1034,7 @@ HTML tags جانچئے.',
'filehist-user' => 'صارÙ',
'filehist-dimensions' => 'ابعاد',
'filehist-comment' => 'تبصرÛ',
-'imagelinks' => 'مل٠کے روابط',
+'imagelinks' => 'مل٠کا استعمال',
'linkstoimage' => 'اÙس مل٠کے ساتھ درج ذیل {{PLURAL:$1|صÙØ­Û Ù…Ø±Ø¨ÙˆØ· ÛÛ’|$1 صÙحات مربوط Ûیں}}',
'nolinkstoimage' => 'ایسے کوئی صÙحات Ù†Ûیں جو اس مل٠(Ùائل) سے Ø±Ø§Ø¨Ø·Û Ø±Ú©Ú¾ØªÛ’ ÛÙˆÚºÛ”',
@@ -1072,6 +1078,7 @@ HTML tags جانچئے.',
'mostcategories' => 'سب سے Ø²ÛŒØ§Ø¯Û Ø²Ù…Ø±Û Ø¬Ø§Øª والے مضامین',
'mostimages' => 'سب سے Ø²ÛŒØ§Ø¯Û Ø§Ø³ØªØ¹Ù…Ø§Ù„ Ú©Ø±Ø¯Û ØªØµØ§ÙˆÛŒØ±',
'mostrevisions' => 'Ø²ÛŒØ§Ø¯Û ØªØ¬Ø¯ÛŒØ¯ نظر کیے جانے والے صÙحات',
+'prefixindex' => 'تمام صÙحات بمع سابقÛ',
'shortpages' => 'چھوٹے صÙحات',
'longpages' => 'طویل ترین صÙحات',
'deadendpages' => 'Ù…Ø±Ø¯Û ØµÙحات',
@@ -1135,9 +1142,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlist' => 'میری زیرنظرÙÛرست',
'mywatchlist' => 'میری زیرنظرÙÛرست',
'watchlistfor2' => 'براۓ $1 ($2)',
-'addedwatch' => 'زیر نظر ÙÛرست میں اندراج کردیاگیا',
'addedwatchtext' => "ÛŒÛ ØµÙØ­Û \"<nowiki>\$1</nowiki>\" آپکی [[Special:Watchlist|زیرنظر]] ÙÛرست میں شامل کردیا گیا ÛÛ’Û” اب مستقل میں اس صÙØ­Û’ اور اس سے Ù…Ù„Ø­Ù‚Û ØªØ¨Ø§Ø¯Ù„Û Ø®ÛŒØ§Ù„ کا صÙØ­Û’ میں Ú©ÛŒ جانے والی تبدیلوں کا اندراج کیا جاتا رÛÛ’ گا، اور ان صÙحات Ú©ÛŒ شناخت Ú©Ùˆ سÛÙ„ بنانے Ú©Û’ لیۓ [[Special:Ø­Ø§Ù„ÛŒÛ ØªØ¨Ø¯ÛŒÙ„ÛŒØ§Úº|Ø­Ø§Ù„ÛŒÛ ØªØ¨Ø¯ÛŒÙ„ÛŒÙˆÚº Ú©ÛŒ ÙÛرست]] میں انکو '''Ù…Ùتَجَل''' (bold) تحریر کیا جاۓ گا۔ <p> اگر آپ کسی وقت اس صÙØ­Û Ú©Ùˆ زیرنظرÙÛرست سے خارج کرنا چاÛیں تو اوپر دیۓ Ú¯Û“ \"زیرنظرمنسوخ\" پر Ù¹Ú© کیجیۓ۔",
-'removedwatch' => 'زیرنظرÙÛرست سے خارج کر دیا گیا',
'removedwatchtext' => 'صÙØ­Û "[[:$1]]" آپ Ú©ÛŒ زیر نظر ÙÛرست سے خارج کر دیا گیا۔',
'watch' => 'زیرنظر',
'watchthispage' => 'ÛŒÛ ØµÙØ­Û Ø²ÛŒØ± نظر کیجیۓ',
@@ -1162,7 +1167,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'confirmdeletetext' => 'آپ Ù†Û’ اس صÙØ­Û’ Ú©Ùˆ اس سے Ù…Ù„Ø­Ù‚Û ØªØ§Ø±ÛŒØ®Ú†Û Ø³Ù…ÛŒØª حذ٠کرنے کا Ø§Ø±Ø§Ø¯Û Ú©ÛŒØ§ ÛÛ’Û” براۓ Ù…Ûربانی تصدیق کرلیجیۓ Ú©Û Ø¢Ù¾ اس عمل Ú©Û’ نتائج سے بخوبی Ø¢Ú¯Ø§Û Ûیں، اور ÛŒÛ Ø¨Ú¾ÛŒ یقین کرلیجیۓ Ú©Û Ø¢Ù¾ ایسا [[{{MediaWiki:Policy-url}}|ویکیپیڈیا Ú©ÛŒ حکمت عملی]] Ú©Û’ دائرے میں Ø±Û Ú©Ø± کر رÛÛ’ Ûیں۔',
'actioncomplete' => 'اقدام تکمیل Ú©Ùˆ Ù¾Ûنچا',
'actionfailed' => 'عمل ناکام',
-'deletedtext' => '"<nowiki>$1</nowiki>" Ú©Ùˆ حذ٠کر دیا گیا ÛÛ’ Û”
+'deletedtext' => '"$1" Ú©Ùˆ حذ٠کر دیا گیا ÛÛ’ Û”
Ø­Ø§Ù„ÛŒÛ Ø­Ø°Ù Ø´Ø¯Ú¯ÛŒ Ú©Û’ تاریخ Ù†Ø§Ù…Û Ú©ÛŒÙ„ÛŒÛ“ $2 دیکھیۓ',
'deletedarticle' => 'Ø­Ø°Ù Ø´Ø¯Û "[[$1]]"',
'dellogpage' => 'نوشتۂ حذ٠شدگی',
@@ -1225,6 +1230,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
# What links here
'whatlinkshere' => 'ادھر کس کا جوڑ ÛÛ’',
+'whatlinkshere-title' => '"$1" سے مربوط صÙحات',
'whatlinkshere-page' => 'صÙØ­Û:',
'linkshere' => "'''[[:$1]]''' سے درج ذیل صÙحات مربوط Ûیں:",
'nolinkshere' => "'''[[:$1]]''' سے کوئی روابط Ù†Ûیں۔",
@@ -1239,6 +1245,7 @@ Also see [[Special:WantedCategories|wanted categories]].',
'blockip' => 'Ø¯Ø§Ø®Ù„Û Ù…Ù…Ù†ÙˆØ¹ براۓ صارÙ',
'ipbreason' => 'وجÛ:',
'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',
'ipblocklist' => 'ممنوع صارÙین',
'blocklink' => 'پابندی لگائیں',
'unblocklink' => 'پابندی ختم',
@@ -1353,14 +1360,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
'anonymous' => '{{SITENAME}} گمنام صارÙ',
'others' => 'دیگر',
-# Math errors
-'math_failure' => 'ØªØ¬Ø²ÛŒÛ Ù…ÛŒÚº ناکام',
-'math_unknown_error' => 'نامعلوم غلطی',
-'math_unknown_function' => 'نامعلوم Ùعل',
-'math_syntax_error' => 'نحوی غلطی',
-'math_image_error' => 'PNG; کی تحویل ناکام
-latexØŒ dvipsØŒ gs Ú©ÛŒ صحیح تنصیب Ú©ÛŒ جانچ کرنے Ú©Û’ بعد Ø¯ÙˆØ¨Ø§Ø±Û ØªØ­ÙˆÛŒÙ„ Ú©ÛŒ کوشش کیجئے.',
-
# Patrol log
'patrol-log-diff' => '$1 نظرثانی',
@@ -1391,10 +1390,9 @@ latexØŒ dvipsØŒ gs Ú©ÛŒ صحیح تنصیب Ú©ÛŒ جانچ کرنے Ú©Û’ بعد Ø
'exif-meteringmode-0' => 'نامعلوم',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'تمام',
-'watchlistall2' => 'تمام',
-'namespacesall' => 'تمام',
-'monthsall' => 'تمام',
+'watchlistall2' => 'تمام',
+'namespacesall' => 'تمام',
+'monthsall' => 'تمام',
# Delete conflict
'deletedwhileediting' => 'انتباÛ: آپ Ú©Û’ ترمیم شروع کرنے Ú©Û’ بعد ÛŒÛ ØµÙØ­Û Ø­Ø°Ù Ú©ÛŒØ§ جا چکا ÛÛ’!',
diff --git a/languages/messages/MessagesUz.php b/languages/messages/MessagesUz.php
index b3db4124..caedd381 100644
--- a/languages/messages/MessagesUz.php
+++ b/languages/messages/MessagesUz.php
@@ -109,15 +109,7 @@ $messages = array(
'category-article-count' => '{{PLURAL:$2|Ushbu turkumda faqat bitta sahifa mavjud.|Ushbu turkumda quyidagi {{PLURAL:$1|sahifa|$1 sahifalar}}, hammasi boʻlib $2 ta sahifa mavjud.}}',
'listingcontinuesabbrev' => 'davomi',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xffʻʼ«„]+)$/sDu',
-'mainpagetext' => "'''MediaWiki muvaffaqiyatli o'rnatildi.'''",
-'mainpagedocfooter' => "Wiki dasturini ishlatish haqida ma'lumot olish uchun [http://meta.wikimedia.org/wiki/Help:Contents Foydalanuvchi qo'llanmasi] sahifasiga murojaat qiling.
-
-== Dastlabki qadamlar ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Moslamalar ro'yxati]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki haqida ko'p so'raladigan savollar]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki yangi versiyasi chiqqanda xabar berish ro'yxati]",
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xffʻʼ«„]+)$/sDu',
'about' => 'Haqida',
'newwindow' => '(yangi oynada ochiladi)',
@@ -151,6 +143,7 @@ $messages = array(
'printableversion' => 'Bosma uchun versiya',
'permalink' => "Doimiy bog'",
'print' => 'Chop et',
+'view' => 'Koʻrish',
'edit' => 'Tahrirlash',
'create' => 'Yarat',
'editthispage' => 'Sahifani tahrirla',
@@ -198,18 +191,20 @@ $messages = array(
'privacy' => 'Konfidensiallik siyosati',
'privacypage' => 'Project:Konfidensiallik siyosati',
-'retrievedfrom' => ' "$1" dan olindi',
-'youhavenewmessages' => 'Sizga $1 keldi ($2).',
-'newmessageslink' => 'yangi xabarlar',
-'newmessagesdifflink' => 'soʻnggi oʻzgarish',
-'editsection' => 'tahrirlash',
-'editold' => 'tahrir',
-'viewsourcelink' => 'manbasini koʻr',
-'editsectionhint' => 'Boʻlimni tahrirlash: $1',
-'toc' => 'Mundarija',
-'showtoc' => "Ko'rsatish",
-'hidetoc' => 'yashirish',
-'red-link-title' => '$1 (sahifa yaratilmagan)',
+'retrievedfrom' => ' "$1" dan olindi',
+'youhavenewmessages' => 'Sizga $1 keldi ($2).',
+'newmessageslink' => 'yangi xabarlar',
+'newmessagesdifflink' => 'soʻnggi oʻzgarish',
+'editsection' => 'tahrirlash',
+'editold' => 'tahrir',
+'viewsourcelink' => 'manbasini koʻr',
+'editsectionhint' => 'Boʻlimni tahrirlash: $1',
+'toc' => 'Mundarija',
+'showtoc' => "Ko'rsatish",
+'hidetoc' => 'yashirish',
+'collapsible-collapse' => 'Yashir',
+'collapsible-expand' => 'Koʻrsat',
+'red-link-title' => '$1 (sahifa yaratilmagan)',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Maqola',
@@ -253,7 +248,7 @@ Shuni e'tiborga olingki, ayrim sahifalar siz brauzeringiz keshini tozalamaguning
'loginsuccess' => "'''{{SITENAME}}ga \"\$1\" foydalanuvchi nomi bilan kirdingiz.'''",
'wrongpassword' => 'Kiritgan mahfiy soʻzingiz notoʻgʻri. Iltimos, qaytadan kiritib koʻring.',
-# Password reset dialog
+# Change password dialog
'retypenew' => 'Yangi mahfiy soʻzni qayta tering:',
# Edit page toolbar
@@ -266,8 +261,6 @@ Shuni e'tiborga olingki, ayrim sahifalar siz brauzeringiz keshini tozalamaguning
'extlink_sample' => 'http://www.example.com ishorat nomi',
'extlink_tip' => 'Tashqi ishorat (http:// prefiksini unutmang)',
'headline_sample' => 'Sarlavha',
-'math_sample' => 'Formula qoʻying',
-'math_tip' => 'Matematik formula (LaTeX)',
'image_tip' => 'Qoʻshilgan tasvir',
'media_tip' => 'Faylga ishorat',
'sig_tip' => 'Imzoingiz va sana',
@@ -371,7 +364,6 @@ Bu yerda: (joriy) = hozirgi koʻrinish bilan farq,
'preferences' => 'Moslamalar',
'mypreferences' => 'Moslamalarim',
'prefs-skin' => "Tashqi ko'rinish",
-'prefs-math' => 'Formulalar',
'prefs-datetime' => 'Sana va vaqt',
'prefs-personal' => "Shaxsiy ma'lumotlar",
'prefs-rc' => "Yangi o'zgartirishlar",
@@ -501,11 +493,9 @@ Also see [[Special:WantedCategories|wanted categories]].',
'watchlist' => 'Kuzatuv roʻyxatim',
'mywatchlist' => 'Kuzatuv roʻyxatim',
'nowatchlist' => "Kuzatuv ro'yxatingizda hech narsa yo'q.",
-'addedwatch' => "Kuzatuv ro'yxatiga qo'shildi",
'addedwatchtext' => "\"[[:\$1]]\" sahifasi sizning [[Special:Watchlist|kuzatuv ro'yxatingizga]] qo'shildi. Bu sahifada va unga mos munozara sahifasida bo'ladigan kelajakdagi o'zgarishlar bu yerda ro'yxatga olinadi, hamda bu sahifa topish qulay bo'lishi uchun [[Special:RecentChanges|yangi o'zgarishlar ro'yxati]]da '''qalin''' harflar bilan ko'rsatiladi.
Agar siz bu sahifani kuzatuv ro'yxatingizdan o'chirmoqchi bo'lsangiz \"Kuzatmaslik\" yozuvini bosing.",
-'removedwatch' => "Kuzatuv ro'yxatidan o'chirildi",
'removedwatchtext' => '"[[:$1]]" sahifasi kuzatuv ro\'yxatingizdan o\'chirildi.',
'watch' => 'kuzatish',
'watchthispage' => 'Sahifani kuzatish',
@@ -515,7 +505,7 @@ Agar siz bu sahifani kuzatuv ro'yxatingizdan o'chirmoqchi bo'lsangiz \"Kuzatmasl
# Delete
'actioncomplete' => 'Bajarildi',
-'deletedtext' => '"<nowiki>$1</nowiki>" yoʻqotildi.
+'deletedtext' => '"$1" yoʻqotildi.
Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
'deletedarticle' => '"[[$1]]" yoʻqotildi',
'dellogpage' => 'Yoʻqotish qaydlari',
@@ -649,13 +639,12 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
'nextdiff' => 'Keyingi tahrir →',
# Media information
-'imagemaxsize' => "Tasvir ta'rifi sahifasidagi tasvirning kattaligi:",
-'thumbsize' => 'Tasvirning kichiklashtirilgan versiyasining kattaligi:',
-'file-info-size' => '$1 × $2 piksel, fayl hajmi: $3, MIME tipi: $4',
-'file-nohires' => '<small>Bundan kattaroq tasvir yoʻq.</small>',
-'svg-long-desc' => 'SVG fayl, asl oʻlchamlari $1 × $2 piksel, fayl hajmi: $3',
-'show-big-image' => 'Asl hajmdagi tasvir',
-'show-big-image-thumb' => '<small>Ushbu koʻrinish oʻlchamlari: $1 × $2 piksel</small>',
+'imagemaxsize' => "Tasvir ta'rifi sahifasidagi tasvirning kattaligi:",
+'thumbsize' => 'Tasvirning kichiklashtirilgan versiyasining kattaligi:',
+'file-info-size' => '$1 × $2 piksel, fayl hajmi: $3, MIME tipi: $4',
+'file-nohires' => '<small>Bundan kattaroq tasvir yoʻq.</small>',
+'svg-long-desc' => 'SVG fayl, asl oʻlchamlari $1 × $2 piksel, fayl hajmi: $3',
+'show-big-image' => 'Asl hajmdagi tasvir',
# Special:NewFiles
'ilsubmit' => 'Qidirish',
@@ -666,13 +655,11 @@ Yaqinda sodir etilgan yoʻqotishlar uchun $2ni koʻring.',
# External editor support
'edit-externally' => 'Bu faylni tashqi dasturiy ilovalar yordamida tahrirla',
-'edit-externally-help' => "(Batafsil ma'lumotlar uchun [http://www.mediawiki.org/wiki/Manual:External_editors bu yerga] qarang)",
+'edit-externally-help' => "(Batafsil ma'lumotlar uchun [//www.mediawiki.org/wiki/Manual:External_editors bu yerga] qarang)",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Barchasi',
-'imagelistall' => 'Barchasi',
-'watchlistall2' => 'Barcha',
-'namespacesall' => 'Barchasi',
+'watchlistall2' => 'Barcha',
+'namespacesall' => 'Barchasi',
'unit-pixel' => 'piksel',
diff --git a/languages/messages/MessagesVec.php b/languages/messages/MessagesVec.php
index 0481b077..aeb2822f 100644
--- a/languages/messages/MessagesVec.php
+++ b/languages/messages/MessagesVec.php
@@ -53,96 +53,96 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'DópiRimandi' ),
+ 'Activeusers' => array( 'UtentiAtivi' ),
+ 'Allmessages' => array( 'Messagi' ),
+ 'Allpages' => array( 'TuteLePagine' ),
+ 'Ancientpages' => array( 'PagineMancoNove' ),
+ 'Blankpage' => array( 'PaginaVoda' ),
+ 'Block' => array( 'Bloca' ),
+ 'Blockme' => array( 'BlocaProxy' ),
+ 'Booksources' => array( 'SercaISBN' ),
'BrokenRedirects' => array( 'RimandiSbalià' ),
- 'Disambiguations' => array( 'Disanbiguassion' ),
- 'Userlogin' => array( 'Entra' ),
- 'Userlogout' => array( 'VàFora' ),
+ 'Categories' => array( 'Categorie' ),
+ 'ChangePassword' => array( 'ReinpostaPassword' ),
+ 'ComparePages' => array( 'ConfrontaPagine' ),
+ 'Confirmemail' => array( 'ConfermaEMail' ),
+ 'Contributions' => array( 'Contributi' ),
'CreateAccount' => array( 'CreaUtente' ),
- 'Preferences' => array( 'Preferense' ),
- 'Watchlist' => array( 'TegnùiDeOcio' ),
- 'Recentchanges' => array( 'ÙltimiCanbiamenti' ),
- 'Upload' => array( 'Carga' ),
+ 'Deadendpages' => array( 'PagineSensaUscita' ),
+ 'DeletedContributions' => array( 'ContributiScancelà' ),
+ 'Disambiguations' => array( 'Disanbiguassion' ),
+ 'DoubleRedirects' => array( 'DópiRimandi' ),
+ 'Emailuser' => array( 'MandaEMail' ),
+ 'Export' => array( 'Esporta' ),
+ 'Fewestrevisions' => array( 'PagineConMancoRevision' ),
+ 'FileDuplicateSearch' => array( 'SercaDopioniDeiFile' ),
+ 'Filepath' => array( 'PercorsoFile' ),
+ 'Import' => array( 'Inporta' ),
+ 'Invalidateemail' => array( 'InvalidaEMail' ),
+ 'BlockList' => array( 'IPBlocài' ),
+ 'LinkSearch' => array( 'SercaLigamenti' ),
+ 'Listadmins' => array( 'Aministradori' ),
+ 'Listbots' => array( 'ListaDeiBot' ),
'Listfiles' => array( 'ListaFile' ),
- 'Newimages' => array( 'FileNovi' ),
- 'Listusers' => array( 'Utenti' ),
'Listgrouprights' => array( 'ListaDiritiDeGrupo' ),
- 'Statistics' => array( 'Statìsteghe' ),
- 'Randompage' => array( 'PaginaAOcio' ),
+ 'Listredirects' => array( 'Rimandi' ),
+ 'Listusers' => array( 'Utenti' ),
+ 'Lockdb' => array( 'BlocaDB' ),
+ 'Log' => array( 'Registri' ),
'Lonelypages' => array( 'PagineSolitarie' ),
- 'Uncategorizedpages' => array( 'PagineSensaCategorie' ),
- 'Uncategorizedcategories' => array( 'CategorieSensaCategorie' ),
- 'Uncategorizedimages' => array( 'FileSensaCategorie' ),
- 'Uncategorizedtemplates' => array( 'ModèiSensaCategorie' ),
- 'Unusedcategories' => array( 'CategorieMiaDoparà' ),
- 'Unusedimages' => array( 'FileMiaDoparà' ),
- 'Wantedpages' => array( 'PagineDomandà' ),
- 'Wantedcategories' => array( 'CategorieDomandà' ),
- 'Wantedfiles' => array( 'FileDomandà' ),
- 'Wantedtemplates' => array( 'ModèiDomandà' ),
+ 'Longpages' => array( 'PaginePiLonghe' ),
+ 'MergeHistory' => array( 'FondiCronologia' ),
+ 'MIMEsearch' => array( 'SercaMIME' ),
+ 'Mostcategories' => array( 'PagineConPiassèCategorie' ),
+ 'Mostimages' => array( 'FilePiassèDoparà' ),
'Mostlinked' => array( 'PaginePiassèRiciamà' ),
'Mostlinkedcategories' => array( 'CategoriePiassèDoparà' ),
'Mostlinkedtemplates' => array( 'ModèiPiassèDoparà' ),
- 'Mostimages' => array( 'FilePiassèDoparà' ),
- 'Mostcategories' => array( 'PagineConPiassèCategorie' ),
'Mostrevisions' => array( 'PagineConPiassèRevision' ),
- 'Fewestrevisions' => array( 'PagineConMancoRevision' ),
- 'Shortpages' => array( 'PaginePiCurte' ),
- 'Longpages' => array( 'PaginePiLonghe' ),
+ 'Movepage' => array( 'Sposta' ),
+ 'Mycontributions' => array( 'IMeContributi' ),
+ 'Mypage' => array( 'LaMePaginaUtente' ),
+ 'Mytalk' => array( 'LeMeDiscussion' ),
+ 'Newimages' => array( 'FileNovi' ),
'Newpages' => array( 'PagineNove' ),
- 'Ancientpages' => array( 'PagineMancoNove' ),
- 'Deadendpages' => array( 'PagineSensaUscita' ),
+ 'Popularpages' => array( 'PaginePiassèVisità' ),
+ 'Preferences' => array( 'Preferense' ),
+ 'Prefixindex' => array( 'Prefissi' ),
'Protectedpages' => array( 'PagineProtete' ),
'Protectedtitles' => array( 'TitoliProteti' ),
- 'Allpages' => array( 'TuteLePagine' ),
- 'Prefixindex' => array( 'Prefissi' ),
- 'Ipblocklist' => array( 'IPBlocài' ),
- 'Unblock' => array( 'Desbloca' ),
- 'Specialpages' => array( 'PagineSpeciali' ),
- 'Contributions' => array( 'Contributi' ),
- 'Emailuser' => array( 'MandaEMail' ),
- 'Confirmemail' => array( 'ConfermaEMail' ),
- 'Whatlinkshere' => array( 'PuntaQua' ),
+ 'Randompage' => array( 'PaginaAOcio' ),
+ 'Randomredirect' => array( 'UnRimandoAOcio' ),
+ 'Recentchanges' => array( 'ÙltimiCanbiamenti' ),
'Recentchangeslinked' => array( 'CanbiamentiLigà' ),
- 'Movepage' => array( 'Sposta' ),
- 'Blockme' => array( 'BlocaProxy' ),
- 'Booksources' => array( 'SercaISBN' ),
- 'Categories' => array( 'Categorie' ),
- 'Export' => array( 'Esporta' ),
- 'Allmessages' => array( 'Messagi' ),
- 'Log' => array( 'Registri' ),
- 'Blockip' => array( 'Bloca' ),
+ 'Revisiondelete' => array( 'ScancelaRevision' ),
+ 'RevisionMove' => array( 'SpostaRevision' ),
+ 'Search' => array( 'Serca' ),
+ 'Shortpages' => array( 'PaginePiCurte' ),
+ 'Specialpages' => array( 'PagineSpeciali' ),
+ 'Statistics' => array( 'Statìsteghe' ),
+ 'Tags' => array( 'Tag' ),
+ 'Unblock' => array( 'Desbloca' ),
+ 'Uncategorizedcategories' => array( 'CategorieSensaCategorie' ),
+ 'Uncategorizedimages' => array( 'FileSensaCategorie' ),
+ 'Uncategorizedpages' => array( 'PagineSensaCategorie' ),
+ 'Uncategorizedtemplates' => array( 'ModèiSensaCategorie' ),
'Undelete' => array( 'Ripristina' ),
- 'Import' => array( 'Inporta' ),
- 'Lockdb' => array( 'BlocaDB' ),
'Unlockdb' => array( 'DesblocaDB' ),
- 'Userrights' => array( 'ParmessiUtente' ),
- 'MIMEsearch' => array( 'SercaMIME' ),
- 'FileDuplicateSearch' => array( 'SercaDopioniDeiFile' ),
- 'Unwatchedpages' => array( 'PagineMiaTegnùDeOcio' ),
- 'Listredirects' => array( 'Rimandi' ),
- 'Revisiondelete' => array( 'ScancelaRevision' ),
+ 'Unusedcategories' => array( 'CategorieMiaDoparà' ),
+ 'Unusedimages' => array( 'FileMiaDoparà' ),
'Unusedtemplates' => array( 'ModèiMiaDoparà' ),
- 'Randomredirect' => array( 'UnRimandoAOcio' ),
- 'Mypage' => array( 'LaMePaginaUtente' ),
- 'Mytalk' => array( 'LeMeDiscussion' ),
- 'Mycontributions' => array( 'IMeContributi' ),
- 'Listadmins' => array( 'Aministradori' ),
- 'Listbots' => array( 'ListaDeiBot' ),
- 'Popularpages' => array( 'PaginePiassèVisità' ),
- 'Search' => array( 'Serca' ),
- 'Resetpass' => array( 'ReinpostaPassword' ),
+ 'Unwatchedpages' => array( 'PagineMiaTegnùDeOcio' ),
+ 'Upload' => array( 'Carga' ),
+ 'Userlogin' => array( 'Entra' ),
+ 'Userlogout' => array( 'VàFora' ),
+ 'Userrights' => array( 'ParmessiUtente' ),
+ 'Wantedcategories' => array( 'CategorieDomandà' ),
+ 'Wantedfiles' => array( 'FileDomandà' ),
+ 'Wantedpages' => array( 'PagineDomandà' ),
+ 'Wantedtemplates' => array( 'ModèiDomandà' ),
+ 'Watchlist' => array( 'TegnùiDeOcio' ),
+ 'Whatlinkshere' => array( 'PuntaQua' ),
'Withoutinterwiki' => array( 'PagineSensaInterwiki' ),
- 'MergeHistory' => array( 'FondiCronologia' ),
- 'Filepath' => array( 'PercorsoFile' ),
- 'Invalidateemail' => array( 'InvalidaEMail' ),
- 'Blankpage' => array( 'PaginaVoda' ),
- 'LinkSearch' => array( 'SercaLigamenti' ),
- 'DeletedContributions' => array( 'ContributiScancelà' ),
- 'Tags' => array( 'Tag' ),
- 'Activeusers' => array( 'UtentiAtivi' ),
- 'ComparePages' => array( 'ConfrontaPagine' ),
- 'Badtitle' => array( 'TitoloSbalià' ),
);
$messages = array(
@@ -273,17 +273,7 @@ $messages = array(
'listingcontinuesabbrev' => 'cont.',
'index-category' => 'Pajine indicisae',
'noindex-category' => 'Pajine no indicisae',
-
-'mainpagetext' => "'''Instałasion de MediaWiki conpletà coretamente.'''",
-'mainpagedocfooter' => "Varda Å‚a [http://meta.wikimedia.org/wiki/Aiuto:Sommario Guida utente] par majori informasion so l'uso de sto software wiki.
-
-== Par scumisiar ==
-
-I seguenti cołegamenti i xé en łengua inglese:
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Inpostasion de configurasion]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Domande frequenti so MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailing list anunsi MediaWiki]",
+'broken-file-category' => "Pajine co' i link roti",
'about' => 'Informaxion',
'article' => 'Voxe',
@@ -335,7 +325,6 @@ I seguenti cołegamenti i xé en łengua inglese:
'history' => 'Storia de la pagina',
'history_short' => 'Storia',
'updatedmarker' => 'modifegà da ła me ultema visita',
-'info_short' => 'Informasion',
'printableversion' => 'Version par la stanpa',
'permalink' => 'Link parmanente',
'print' => 'Stanpa',
@@ -524,12 +513,11 @@ Query: $2',
'viewsourcetext' => 'Se pole vardar e copiar el testo de sta pagina:',
'protectedinterface' => "Sta pagina la gà drento un testo de l'interfacia utente del software, quindi la xe proteta parché nissuni la strussia.",
'editinginterface' => "'''Ocio:''' El testo de sta pajina el fa parte de l'interfacia utente del sito. Tute łe modifeghe aportae a sta pajina se riflete so i mesaji visuałizà par tuti i utenti.
-Par łe tradusion, considera ła posibiłità de usare [http://translatewiki.net/wiki/Main_Page?setlang=vec translatewiki.net], el projeto MediaWiki par ła localizasion.",
+Par łe tradusion, considera ła posibiłità de usare [//translatewiki.net/wiki/Main_Page?setlang=vec translatewiki.net], el projeto MediaWiki par ła localizasion.",
'sqlhidden' => '(ła query SQL ła xè sta sconta)',
'cascadeprotected' => 'So sta pajina no xè posibiłe efetuare modifeghe parché xè sta inclusa {{PLURAL:$1|ne ła pajina indicà de seguito, che xè sta proteta|ne łe pajine indicae de seguito, che e xè sta protete}} sełesionando ła protesion "ricorsiva":
$2',
'namespaceprotected' => "No se dispone de i parmesi nesesari par modifegare Å‚e pajine del namespace '''$1'''.",
-'customcssjsprotected' => "No se dispone de i parmesi nesesari a ła modifega de ła pajina, en quanto contien łe inpostasion parsonałi de n'altro utente.",
'ns-specialprotected' => 'No xè posibiłe modifegare łe pajine spesałi.',
'titleprotected' => 'Åa creasion de na pajina con sto titoÅ‚o xè sta blocà da [[User:$1|$1]].
Åa modivasion xè Å‚a seguente: "$2".',
@@ -568,6 +556,7 @@ Te poli sistemarte come te vol le to [[Special:Preferences|prefarense de {{SITEN
'createaccount' => 'Crea un utente novo',
'gotaccount' => "Sito zà iscrito? '''$1'''.",
'gotaccountlink' => 'Entra',
+'userlogin-resetlink' => "Desmentegà i to dati d'aceso?",
'createaccountmail' => 'Par e-mail',
'createaccountreason' => 'Motivassion:',
'badretype' => 'Le do password le xe difarenti.',
@@ -581,7 +570,7 @@ Tòtene uno difarente.',
'loginsuccesstitle' => 'Aceso efetuà',
'loginsuccess' => "'''Te si sta conesso al server de {{SITENAME}} con el nome utente de \"\$1\".'''",
'nosuchuser' => 'Nol xè rejistrà alcun utente de nome "$1". I nomi utente i xè sensibiłi a łe majuscołe. Verifegare el nome inserio o [[Special:UserLogin/signup|creare on novo aceso]].',
-'nosuchusershort' => 'No ghe xe nissun utente de nome "<nowiki>$1</nowiki>". Sito sicuro che te lo ghè scrito ben?',
+'nosuchusershort' => 'No ghe xe nissun utente de nome "$1". Sito sicuro che te lo ghè scrito ben?',
'nouserspecified' => 'Te ghè da métar un nome utente.',
'login-userblocked' => 'Sta utensa xè blocà. No xè posibiłe efetuare el login.',
'wrongpassword' => 'Åa password inseria no a xè coreta. Riprovare.',
@@ -625,7 +614,7 @@ Spèta un tocheto prima de proàr da novo.',
'loginlanguagelabel' => 'Lengua: $1',
'suspicious-userlogout' => 'Åa to richiesta de disconesion xè sta negà parché e a senbra invià da on browser non funsionante o on proxy de caching.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Cànbia la password',
'resetpass_announce' => "L'acesso el xe stà efetuà con un codice tenporaneo, mandà par e-mail. Par conpletar l'acesso bisogna inpostar na password nova:",
'resetpass_text' => '<!-- Zonta el testo qua -->',
@@ -654,8 +643,6 @@ Forse te ghè zà canbià la to password o te ghè domandà na password tenporan
'extlink_tip' => 'Colegamento foresto (tiente in mente el prefiso http:// )',
'headline_sample' => 'Intestassion',
'headline_tip' => 'Intestassion de 2° livèl',
-'math_sample' => 'Inserire qua ła formuła',
-'math_tip' => 'Formula matematega (LaTeX)',
'nowiki_sample' => 'Inserire qua el testo no formatà',
'nowiki_tip' => 'Ignora Å‚a formatasion wiki',
'image_sample' => 'Esenpio.jpg',
@@ -743,7 +730,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 el titolo de sta pagina]] in altre pagine,
o <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sercar in tei registri ligà a sta pagina]</span>.',
-'userpage-userdoesnotexist' => 'L\'account "$1" no\'l corisponde mìa a un utente registrà. Verifica se te voli dal bon crear o modificar sta pagina.',
+'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à.
L'ultimo ełemento del rejistro de i blochi xè riportà de seguito par informasion:",
@@ -1119,9 +1106,10 @@ Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i n
'changepassword' => 'Cànbia ła password',
'prefs-skin' => 'Aspeto grafico',
'skin-preview' => 'Anteprima',
-'prefs-math' => 'Formułe matematiche',
'datedefault' => 'Nissuna preferensa',
+'prefs-beta' => 'Funsionałidà beta',
'prefs-datetime' => 'Data e ora',
+'prefs-labs' => 'Funsionałidà de i laboratori',
'prefs-personal' => 'Profiło utente',
'prefs-rc' => 'Ultime modifeghe',
'prefs-watchlist' => 'Tegnùi de òcio',
@@ -1143,8 +1131,6 @@ Prova a métarghe \"all:\" davanti al testo che te serchi par vardar in tuti i n
'columns' => 'Cołone:',
'searchresultshead' => 'Riserca',
'resultsperpage' => 'Nùmaro de risultati par pagina:',
-'contextlines' => 'Righe de testo par ciascun risultato',
-'contextchars' => 'Caratteri par linea:',
'stub-threshold' => 'Valor minimo par i <a href="#" class="stub">colegamenti ai stub</a>:',
'stub-threshold-disabled' => 'Disativà',
'recentchangesdays' => 'Nùmaro de giòrni da mostrar ne le ultime modifiche:',
@@ -1203,8 +1189,9 @@ La gà da verghe al massimo $1 {{PLURAL:$1|caràtere|caràteri}}.',
'prefs-help-gender' => "Opzional: doparà par l'indicassion del gènare dal software. Sta informassion la sarà visìbile da tuti.",
'email' => 'Indirizo e-mail',
'prefs-help-realname' => 'No te ghè par forsa da métar el to vero nome; se te voli farlo, el vegnarà doparà par atribuir la paternità dei contenuti invià.',
-'prefs-help-email' => 'No te ghè par forsa da métar el to indirizo e-mail; parò se par caso te te desménteghi la password, in sta maniera podemo mandartene una nova.
-In più te pol anca farte scrìvar da altri tramite la to pagina personale o la pagina de discussion, sensa bisogno de dirghe chi te sì.',
+'prefs-help-email' => 'No te ghè par forsa da métar el to indirizo e-mail; parò se par caso te te desménteghi la password, in sta maniera podemo mandartene una nova.',
+'prefs-help-email-others' => 'In più te pol anca farte scrìvar da altri tramite la to pagina personale o la pagina de discussion.
+Co qualcheduni te scrivarà, nol vedarà mia el to indirizo.',
'prefs-help-email-required' => "Xe richiesto l'indirizo e-mail.",
'prefs-info' => 'Informassion de base',
'prefs-i18n' => 'Internassionalisassion',
@@ -1325,7 +1312,6 @@ In più te pol anca farte scrìvar da altri tramite la to pagina personale o la
'right-userrights' => "Modifica tuti quanti i diriti de l'utente",
'right-userrights-interwiki' => 'Modifica i diriti de utenti de altri siti wiki',
'right-siteadmin' => 'Bloca e desbloca el database',
-'right-reset-passwords' => 'Reinposta la password de altri utenti',
'right-override-export-depth' => 'Esporta le pàxene, includendo le pàxene ligàe fin a na profondità de 5',
'right-sendemail' => 'Mandarghe e-mail a cheialtri utenti',
@@ -1518,10 +1504,6 @@ Se te vol cargar el file istesso, par piaser torna indrio e canbia el nome che t
'upload-options' => 'Opsioni de caricamento',
'watchthisupload' => "Tien d'ocio sto file",
'filewasdeleted' => 'Un file con sto nome xè stato xà caricà e scancełà in passato. Verifica $1 prima de caricarlo de novo.',
-'upload-wasdeleted' => "'''Ocio: te stè cargando un file che in precedenza l'era stà scancelà.'''
-
-Verifica par piaser se xe el caso de continuare col caricamento de sto file.
-Par to comodità qua ghe xe la registrazion de la scancelazion:",
'filename-bad-prefix' => "El nome del file che te sì drio cargar el scuminsia con '''\"\$1\"''', che el xe un nome non-descritivo tipicamente assegnà automaticamente da le fotocàmare digitali. Par piaser siegli un nome piassè descritivo par el to file.",
'upload-success-subj' => 'Caricamento conpletà',
'upload-success-msg' => "El to caricamento da [$2] el xe 'ndà ben. Te lo cati qua: [[:{{ns:file}}:$1]]",
@@ -1625,7 +1607,6 @@ 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.',
-'redirectstofile' => '{{PLURAL:$1|El file seguente el|I $1 file seguenti i}} redirige verso sto file:',
'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.
@@ -1940,10 +1921,8 @@ La e-mail che te ghè indicà ne le [[Special:Preferences|to preferense]] la veg
'watchlistanontext' => "Per vardar e modifegar l'ełenco de i osservati speciałi bisogna $1.",
'watchnologin' => 'Acesso mia efetuà',
'watchnologintext' => 'Te ghè prima da far el [[Special:UserLogin|login]] par modificar la to lista de osservati speciali.',
-'addedwatch' => "Zontà a le pagine da tegner d'ocio",
'addedwatchtext' => "La pagina \"[[:\$1]]\" la xe stà zontà a la to [[Special:Watchlist|lista de pagine da tegner d'ocio]].
I futuri canbiamenti a sta pagina e a la so pagina de discussion i se vedarà fora qua, e la pagina la se vedarà in '''grosso''' sui [[Special:RecentChanges|ultimi canbiamenti]] par tegnerla d'ocio mejo.",
-'removedwatch' => "Cavà da le pagine da tegner d'ocio",
'removedwatchtext' => 'La pagina "[[:$1]]" la xe stà cavà da le to [[Special:Watchlist|pagine tegnùe de ocio]].',
'watch' => "Tien d'ocio",
'watchthispage' => "Tien d'ocio sta pagina",
@@ -1996,13 +1975,13 @@ Te podi anca reinpostar l\'avixo de notifica par tuti i osservati speciaÅ‚i de Å
--
Par canbiar łe inpostassion de i to osservati speciałi, visita
-{{fullurl:Special:Watchlist/edit}}
+{{canonicalurl:Special:Watchlist/edit}}
Par cavar la pagina da i to osservati speciałi, visita
$UNWATCHURL
Par riscontri e ulteriore assistensa:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Scancela pagina',
@@ -2017,7 +1996,7 @@ Par riscontri e ulteriore assistensa:
'confirmdeletetext' => 'Te ste par scansełare na pajina co tuta ła so cronołosia. Par cortesia, conferma che xè to intension prosedere a tałe scansełasion, che te ghe piena consapevołeza de łe conseguense de ła to axion e che esa xè conforme a łe linee guida stabiłie en [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Axion conpletà',
'actionfailed' => 'Azion mia riussìa',
-'deletedtext' => "''<nowiki>$1</nowiki>'' xe stà scanselà.
+'deletedtext' => "''$1'' xe stà scanselà.
Varda $2 par n'elenco de le ultime pagine scanselà.",
'deletedarticle' => 'gà scanselà "[[$1]]"',
'suppressedarticle' => 'sconto "[[$1]]"',
@@ -2069,7 +2048,7 @@ L'ultima modefega l'è stà fata da [[User:$3|$3]] ([[User talk:$3|discussion]]{
'protect_expiry_invalid' => 'Scadensa mìa valida.',
'protect_expiry_old' => 'Scadensa zà passà.',
'protect-unchain-permissions' => 'Desbloca ulteriori possibilità de protession',
-'protect-text' => "Sto modulo qua el consente de védar e modificar el livel de protezion par la pagina '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Sto modulo qua el consente de védar e modificar el livel de protezion par la pagina '''$1'''.",
'protect-locked-blocked' => "No se pol mìa canbiar i livèi de protezion co ghe xe un bloco ativo. Le inpostazion corenti par la pagina le xe '''$1''':",
'protect-locked-dblock' => "No se pol canbiar i livèi de protezion durante un bloco del database.
Le inpostazion corenti par la pagina le xe '''$1''':",
@@ -2218,7 +2197,6 @@ $1',
'blockip-title' => "Bloca l'utente",
'blockip-legend' => "Bloca l'utente",
'blockiptext' => "Dòpara el moduło qua soto par blocar l'accesso in scritura a un speçifico utente o indirizo IP. El bloco el gà de èssar operà par prevegner ati de vandalismo e in streta osservansa de ła [[{{MediaWiki:Policy-url}}|policy de {{SITENAME}}]]. Speçifica in detałio el motivo del bloco nel canpo seguente (ad es. indicando i titołi de łe pàxene ogeto de vandalismo).",
-'ipaddress' => 'Indirisso IP (IP Address)',
'ipadressorusername' => 'Indirizo IP o nome utente',
'ipbexpiry' => 'Scadensa',
'ipbreason' => 'Motivassion:',
@@ -2231,7 +2209,6 @@ $1',
** Conportamenti intimidatori o molestie
** Uso indebito de più account
** Nome utente non cònsono',
-'ipbanononly' => 'Bloca solo utenti anonimi',
'ipbcreateaccount' => 'Inpedissi la creazion de altri account',
'ipbemailban' => "Inpedìsseghe a l'utente de mandar e-mail",
'ipbenableautoblock' => "Bloca automaticamente l'ultimo indirizo IP doparà da l'utente e i sucessivi con cui vien tentà modifiche",
@@ -2242,7 +2219,6 @@ $1',
'ipbotherreason' => 'Altri motivi/detagli:',
'ipbhidename' => 'Scondi el nome utente da le modìfeghe e da i elenchi.',
'ipbwatchuser' => "Tien d'ocio la pagina utente e la pagina de discussion de sto utente",
-'ipballowusertalk' => 'Parmétighe a sto utente de scrìvar su la so pàxena de discussion finché el xe blocà',
'ipb-change-block' => "Bloca de novo l'utente co ste inpostassion",
'badipaddress' => "L'indirisso IP indicà no'l xè mìa coreto.",
'blockipsuccesssub' => 'Bloco eseguìo',
@@ -2260,14 +2236,9 @@ Varda [[Special:IPBlockList|lista IP bloccati]] par védar tuti i blochi.",
'unblocked-id' => 'El bloco $1 el xe stà cavà',
'ipblocklist' => 'Utenti blocà',
'ipblocklist-legend' => 'Cata fora un utente blocà',
-'ipblocklist-username' => 'Nome utente o indirizo IP:',
-'ipblocklist-sh-userblocks' => '$1 i blochi dei utenti registrài',
-'ipblocklist-sh-tempblocks' => '$1 i blochi tenporanei',
-'ipblocklist-sh-addressblocks' => '$1 i blochi dei singoli IP',
'ipblocklist-submit' => 'Serca',
'ipblocklist-localblock' => 'Bloco local',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Altro bloco|Altri blochi}}',
-'blocklistline' => '$1, $2 gà blocà $3 ($4)',
'infiniteblock' => 'infinito',
'expiringblock' => 'scade el $1 a le $2',
'anononlyblock' => 'solo anonimi',
@@ -2289,7 +2260,7 @@ Qua soto ghe xe el registro dei blochi:',
Qua soto ghe xe el registro de le sopression:',
'blocklogentry' => 'ga blocà [[$1]] par un periodo de $2 $3',
'reblock-logentry' => "gà canbià le inpostassion del bloco par [[$1]] co' na scadensa de $2 $3",
-'blocklogtext' => "Sto qua xè un elenco de azioni de bloco e sbloco dei indirizi IP. I indirizi blocai in automatico no i xè mìa elencai. Varda l'[[Special:IPBlockList|elenco dei IP blocà]] par la lista dei indirizi el cui bloco el xè operativo.",
+'blocklogtext' => "Sto qua xè un elenco de azioni de bloco e sbloco dei indirizi IP. I indirizi blocai in automatico no i xè mìa elencai. Varda l'[[Special:BlockList|elenco dei IP blocà]] par la lista dei indirizi el cui bloco el xè operativo.",
'unblocklogentry' => 'ga sblocà $1',
'block-log-flags-anononly' => 'solo utenti anonimi',
'block-log-flags-nocreate' => 'creasion acount blocà',
@@ -2303,8 +2274,7 @@ Qua soto ghe xe el registro de le sopression:',
'ipb_expiry_temp' => 'I blochi dei nomi utente sconti i dovarìa essar infiniti.',
'ipb_hide_invalid' => "No se riesse a scancelar l'utensa; podarìa èssar che la gà massa contributi.",
'ipb_already_blocked' => 'L\'utente "$1" el xe zà blocà',
-'ipb-needreblock' => '== Xà blocà ==
-$1 xe xà blocà. Vuto canbiar le inpostassion?',
+'ipb-needreblock' => '$1 xe xà blocà. Vuto canbiar le inpostassion?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Altro bloco|Altri blochi}}',
'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à.",
@@ -2459,7 +2429,7 @@ Nel secondo caso te poli anca doparar un colegamento, par esenpio [[{{#Special:E
'allmessagesdefault' => 'Testo predefinìo',
'allmessagescurrent' => 'Testo come che el xe desso',
'allmessagestext' => "Sta quà l'è na lista de tuti i messagi disponibili nel namespace MediaWiki.
-Par piaser visita [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [http://translatewiki.net translatewiki.net] se te voli jutarne par la traduzion del software MediaWiki ne le varie lengue.",
+Par piaser visita [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] e [//translatewiki.net translatewiki.net] se te voli jutarne par la traduzion del software MediaWiki ne le varie lengue.",
'allmessagesnotsupportedDB' => "'''{{ns:special}}:Allmessages''' no'l xè supportà parché '''\$wgUseDatabaseMessages''' no'l xè ativo.",
'allmessages-filter-legend' => 'Filtro',
'allmessages-filter' => 'Filtra par stato de personalixassion:',
@@ -2597,9 +2567,7 @@ Salvalo sul to computer e càrghelo qua.',
'tooltip-summary' => 'Inserissi un breve riassunto',
# Metadata
-'nodublincore' => 'Metadati Dublin Core RDF non ativi su sto server.',
-'nocreativecommons' => 'Metadati Commons RDF non ativi su sto server.',
-'notacceptable' => "El server wiki no'l xè in grado di fornire i dati in un formato łeggibiłe dal client utilixà.",
+'notacceptable' => "El server wiki no'l xè in grado di fornire i dati in un formato łeggibiłe dal client utilixà.",
# Attribution
'anonymous' => '{{PLURAL:$1|Utente anonimo|Utenti anonimi}} de {{SITENAME}}',
@@ -2622,33 +2590,6 @@ Questo xe probabilmente dovùo a la presenza de un colegamento a un sito foresto
'spam_reverting' => "Ripristinà l'ultima version priva de colegamenti a $1",
'spam_blanking' => 'Pàxena svodà, tute łe version le contegneva cołegamenti a $1',
-# Info page
-'infosubtitle' => 'Informazion par la pàxena',
-'numedits' => 'Nùmaro de modifiche (pagina): $1',
-'numtalkedits' => 'Nùmaro de modifeghe (pàxena de discussion): $1',
-'numwatchers' => 'Nùmaro de osservadori: $1',
-'numauthors' => 'Nùmaro de autori distinti (pagina): $1',
-'numtalkauthors' => 'Nùmaro de autori distinti (pàxena de discussion): $1',
-
-# Math options
-'mw_math_png' => 'Mostra senpre in PNG',
-'mw_math_simple' => "HTML se'l xe senplice assè, altrimenti PNG",
-'mw_math_html' => 'HTML se se pol, altrimenti PNG',
-'mw_math_source' => 'Lassa in formato TeX (par browser testuali)',
-'mw_math_modern' => 'Racomandà par i browser pì novi',
-'mw_math_mathml' => 'Usa MathML se se pol (sperimental)',
-
-# Math errors
-'math_failure' => 'Eror del parser',
-'math_unknown_error' => 'eror sconossiùo',
-'math_unknown_function' => 'funzion sconossiùa',
-'math_lexing_error' => 'eror lessicale',
-'math_syntax_error' => 'eror de sintassi',
-'math_image_error' => 'Conversion in PNG fałía',
-'math_bad_tmpdir' => 'Inpossibile scrìvar o crear la directory tenporanea par math',
-'math_bad_output' => 'Inpossibile scrìvar o crear la directory de output par math',
-'math_notexvc' => 'Eseguibile texvc mancante; par piaser consulta math/README par la configurazion.',
-
# Patrolling
'markaspatrolleddiff' => 'Segna la modifica come verificà',
'markaspatrolledtext' => 'Segna sta pàxena come verificà',
@@ -2694,7 +2635,6 @@ La so esecuzion la podarìa danegiar el to computer.",
'file-nohires' => '<small>No ghe xe version a risolussion pì granda.</small>',
'svg-long-desc' => 'file en formato SVG, dimension nominałi $1 × $2 pixel, dimension del file: $3',
'show-big-image' => 'Version ad alta risołusion',
-'show-big-image-thumb' => '<small>Dimension de sta anteprima: $1 × $2 pixel</small>',
'file-info-gif-looped' => 'ripetù',
'file-info-gif-frames' => '$1 {{PLURAL:$1|frame|frame}}',
'file-info-png-looped' => 'ripetù',
@@ -2732,7 +2672,13 @@ I colegamenti dopo, su la stessa riga, i xe considerai come ecession (cioè, pag
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Largheza',
@@ -2747,13 +2693,11 @@ I colegamenti dopo, su la stessa riga, i xe considerai come ecession (cioè, pag
'exif-ycbcrpositioning' => 'Posizionamento conponenti Y e C',
'exif-xresolution' => 'Risoluzion orixontałe',
'exif-yresolution' => 'Risoluzion verticałe',
-'exif-resolutionunit' => 'Unità de mixura risoluzion X e Y',
'exif-stripoffsets' => 'Posizion de i dati imagine',
'exif-rowsperstrip' => 'Numero righe par striscia',
'exif-stripbytecounts' => 'Nùmaro de byte par strìssia conpressa',
'exif-jpeginterchangeformat' => 'Posizion byte SOI JPEG',
'exif-jpeginterchangeformatlength' => 'Numero de byte de dati JPEG',
-'exif-transferfunction' => 'Funsion de trasferimento',
'exif-whitepoint' => 'Coordinate cromatiche de el punto de bianco',
'exif-primarychromaticities' => 'Coordinate cromatiche de i cołori primari',
'exif-ycbcrcoefficients' => 'Coeficienti matriçe de trasformassion spazi de i cołori',
@@ -2772,7 +2716,6 @@ I colegamenti dopo, su la stessa riga, i xe considerai come ecession (cioè, pag
'exif-compressedbitsperpixel' => 'Modalità de compression imagine',
'exif-pixelydimension' => 'Largheza efetiva imagine',
'exif-pixelxdimension' => 'Alteza efetiva imagine',
-'exif-makernote' => 'Note de el produtore',
'exif-usercomment' => "Note de l'utente",
'exif-relatedsoundfile' => 'File audio cołegà',
'exif-datetimeoriginal' => 'Data e ora de creassion de i dati',
@@ -2786,7 +2729,6 @@ I colegamenti dopo, su la stessa riga, i xe considerai come ecession (cioè, pag
'exif-exposureprogram' => 'Programa de esposission',
'exif-spectralsensitivity' => 'Sensibilità spetrałe',
'exif-isospeedratings' => 'Sensibiłità ISO',
-'exif-oecf' => 'Fator de conversion optoełetronica',
'exif-shutterspeedvalue' => 'Tenpo de esposission',
'exif-aperturevalue' => 'Apertura',
'exif-brightnessvalue' => 'Luminosità',
@@ -2799,7 +2741,6 @@ I colegamenti dopo, su la stessa riga, i xe considerai come ecession (cioè, pag
'exif-focallength' => 'Distansa focałe obietivo',
'exif-subjectarea' => 'Area inquadrante el sojeto',
'exif-flashenergy' => 'Potenza del flash',
-'exif-spatialfrequencyresponse' => 'Risposta in frequensa spaziałe',
'exif-focalplanexresolution' => 'Risolussion X sul piano focałe',
'exif-focalplaneyresolution' => 'Risolussion Y sul piano focałe',
'exif-focalplaneresolutionunit' => 'Unità de misura risolussion sul piano focałe',
@@ -2808,7 +2749,6 @@ I colegamenti dopo, su la stessa riga, i xe considerai come ecession (cioè, pag
'exif-sensingmethod' => 'Metodo de riłevassion',
'exif-filesource' => 'Origine del file',
'exif-scenetype' => 'Tipo de inquadratura',
-'exif-cfapattern' => 'Disposizion filtro cołor',
'exif-customrendered' => 'Elaborassion personałixà',
'exif-exposuremode' => 'Modalità de espoxission',
'exif-whitebalance' => 'Biłanciamento de el bianco',
@@ -3000,21 +2940,24 @@ I colegamenti dopo, su la stessa riga, i xe considerai come ecession (cioè, pag
'exif-gpsspeed-m' => 'Miglia orarie',
'exif-gpsspeed-n' => 'Nodi',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Chilometri',
+'exif-gpsdestdistance-m' => 'Mija',
+'exif-gpsdestdistance-n' => 'Mija nàutiche',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Diression reałe',
'exif-gpsdirection-m' => 'Diression magnetica',
# External editor support
'edit-externally' => 'Modifega sto file usando on programa foresto',
-'edit-externally-help' => '(Par saverghene de pì consultare łe [http://www.mediawiki.org/wiki/Manual:External_editors istrusion])',
+'edit-externally-help' => '(Par saverghene de pì consultare łe [//www.mediawiki.org/wiki/Manual:External_editors istrusion])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tute',
-'imagelistall' => 'tute',
-'watchlistall2' => 'tute',
-'namespacesall' => 'Tuti',
-'monthsall' => 'tuti',
-'limitall' => 'tuti quanti',
+'watchlistall2' => 'tute',
+'namespacesall' => 'Tuti',
+'monthsall' => 'tuti',
+'limitall' => 'tuti quanti',
# E-mail address confirmation
'confirmemail' => 'Conferma indirisso e-mail',
@@ -3127,7 +3070,7 @@ Doparar l\'anteprima standard.',
'watchlistedit-normal-legend' => 'Elimina de pagine dai osservati speciali',
'watchlistedit-normal-explain' => 'De seguito xe elencà tute le pagine tegnùe d\'ocio.
Par cavar una o più pagine da la lista, seleziona le casele relative e struca el boton "{{int:Watchlistedit-normal-submit}}".
-Nota che se pol anca [[Special:Watchlist/raw|modificar la lista in formato testual]].',
+Nota che se pol anca [[Special:EditWatchlist/raw|modificar la lista in formato testual]].',
'watchlistedit-normal-submit' => 'Elimina pagine',
'watchlistedit-normal-done' => 'Da la lista dei osservati speciali xe stà eliminà {{PLURAL:$1|una pagina|$1 pagine}}:',
'watchlistedit-raw-title' => 'Modifica dei osservati speciali in forma testual',
@@ -3135,7 +3078,7 @@ Nota che se pol anca [[Special:Watchlist/raw|modificar la lista in formato testu
'watchlistedit-raw-explain' => "De seguito xe elencàe tute le pagine tegnùe d'ocio.
Par modificar la lista, zónteghe o càveghe i rispetivi titoli, uno par riga.
Na olta che the ghè finìo, struca el boton \"{{int:Watchlistedit-raw-submit}}\" in fondo all'elenco.
-Nota che te pol anca [[Special:Watchlist/edit|modificar la lista con l'interfacia standard]].",
+Nota che te pol anca [[Special:EditWatchlist|modificar la lista con l'interfacia standard]].",
'watchlistedit-raw-titles' => 'Pagine:',
'watchlistedit-raw-submit' => 'Agiorna la lista',
'watchlistedit-raw-done' => 'La lista dei osservati speciali la xe stà agiornà.',
@@ -3152,32 +3095,31 @@ Nota che te pol anca [[Special:Watchlist/edit|modificar la lista con l'interfaci
'duplicate-defaultsort' => 'Ocio: la ciave de ordinamento predefinìa "$2" la va in conflito co\' quela de prima "$1".',
# Special:Version
-'version' => 'Version',
-'version-extensions' => 'Estension instalè',
-'version-specialpages' => 'Pagine speciali',
-'version-parserhooks' => 'Hook del parser',
-'version-variables' => 'Variabili',
-'version-other' => 'Altro',
-'version-mediahandlers' => 'Gestori de contenuti multimediài',
-'version-hooks' => 'Hook',
-'version-extension-functions' => 'Funzion introdote da estensioni',
-'version-parser-extensiontags' => 'Tag riconossiùi dal parser introdoti da estensioni',
-'version-parser-function-hooks' => 'Hook par funzioni del parser',
-'version-skin-extension-functions' => "Funzioni ligà a l'aspeto grafico (skin) introdote da estensioni",
-'version-hook-name' => "Nome de l'hook",
-'version-hook-subscribedby' => 'Sotoscrizioni',
-'version-version' => '(Version $1)',
-'version-license' => 'Licensa',
-'version-poweredby-credits' => "Sta wiki la va con '''[http://www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
-'version-poweredby-others' => 'altri',
-'version-license-info' => "MediaWiki xe un software lìbaro; te pol redistribuirlo e/o modificarlo secondo i termini de la Licensa Publica Zeneral GNU publicà da la Free Software Foundation; secondo la version 2 de la Licensa, o (a scelta tua) una qualunque altra version sucessiva.
+'version' => 'Version',
+'version-extensions' => 'Estension instalè',
+'version-specialpages' => 'Pagine speciali',
+'version-parserhooks' => 'Hook del parser',
+'version-variables' => 'Variabili',
+'version-other' => 'Altro',
+'version-mediahandlers' => 'Gestori de contenuti multimediài',
+'version-hooks' => 'Hook',
+'version-extension-functions' => 'Funzion introdote da estensioni',
+'version-parser-extensiontags' => 'Tag riconossiùi dal parser introdoti da estensioni',
+'version-parser-function-hooks' => 'Hook par funzioni del parser',
+'version-hook-name' => "Nome de l'hook",
+'version-hook-subscribedby' => 'Sotoscrizioni',
+'version-version' => '(Version $1)',
+'version-license' => 'Licensa',
+'version-poweredby-credits' => "Sta wiki la va con '''[//www.mediawiki.org/ MediaWiki]''', copyright © 2001-$1 $2.",
+'version-poweredby-others' => 'altri',
+'version-license-info' => "MediaWiki xe un software lìbaro; te pol redistribuirlo e/o modificarlo secondo i termini de la Licensa Publica Zeneral GNU publicà da la Free Software Foundation; secondo la version 2 de la Licensa, o (a scelta tua) una qualunque altra version sucessiva.
MediaWiki el xe distribuìo sperando che el possa vegner utile, ma SENSA NISSUNA GARANSIA; sensa gnanca la garansia inplicita de COMERCIALIZASSION o de ADATAMENTO A UN USO PARTICOLARE. Varda la Licensa Publica Zeneral GNU par ulteriori detagli.
-Insieme co sto programa te dovaressi 'ver ricevùo na copia de la Licensa Publica Zeneral GNU; se nò, scrìveghe a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html và a lèzartela online].",
-'version-software' => 'Software instalà',
-'version-software-product' => 'Prodoto',
-'version-software-version' => 'Version',
+Insieme co sto programa te dovaressi 'ver ricevùo na copia de la Licensa Publica Zeneral GNU; se nò, scrìveghe a la Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA o [//www.gnu.org/licenses/old-licenses/gpl-2.0.html và a lèzartela online].",
+'version-software' => 'Software instalà',
+'version-software-product' => 'Prodoto',
+'version-software-version' => 'Version',
# Special:FilePath
'filepath' => 'Percorso de un file',
@@ -3188,9 +3130,7 @@ Le imagini le vien mostrà a la risoluzion pi granda che se pol, par i altri tip
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Riçerca dei file duplicà',
-'fileduplicatesearch-summary' => "Riçerca de eventuali duplicati del file in base al valor de ''hash''.
-
-Inserissi el nome del file senza el prefisso \"{{ns:file}}:\"",
+'fileduplicatesearch-summary' => "Riçerca de eventuali duplicati del file in base al valor de ''hash''.",
'fileduplicatesearch-legend' => 'Riçerca de un duplicato',
'fileduplicatesearch-filename' => 'Nome del file:',
'fileduplicatesearch-submit' => 'Riçerca',
diff --git a/languages/messages/MessagesVep.php b/languages/messages/MessagesVep.php
index c704c1e1..1c9b0d55 100644
--- a/languages/messages/MessagesVep.php
+++ b/languages/messages/MessagesVep.php
@@ -35,37 +35,37 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'KaksitadudLäbikosketused' ),
+ 'Allmessages' => array( 'KaikTedotused' ),
+ 'Allpages' => array( 'KaikLehtesed' ),
+ 'Ancientpages' => array( 'VanhadLehtpoled' ),
'BrokenRedirects' => array( 'RebitadudLäbikosketused' ),
- 'Userlogin' => array( 'KävutajanTulendnimi' ),
- 'Userlogout' => array( 'KävutajanLäntend' ),
+ 'Categories' => array( 'Kategorijad' ),
+ 'Contributions' => array( 'Tond' ),
'CreateAccount' => array( 'SätaRegistracii' ),
- 'Preferences' => array( 'Järgendused' ),
- 'Watchlist' => array( 'KaclendNimikirjutez' ),
- 'Recentchanges' => array( 'TantoižedToižetused' ),
- 'Upload' => array( 'Jügutoitta' ),
- 'Newimages' => array( 'UdedFailad' ),
+ 'DoubleRedirects' => array( 'KaksitadudLäbikosketused' ),
+ 'Export' => array( 'Eksport' ),
'Listusers' => array( 'KävutajidenNimikirjutez' ),
- 'Statistics' => array( 'Statistikad' ),
'Lonelypages' => array( 'ÜksjäižedLehtpoled', 'ArmotomadLehtesed' ),
- 'Wantedfiles' => array( 'VarastadudFailad' ),
- 'Shortpages' => array( 'LühüdadLehtpoled' ),
'Longpages' => array( 'Pit\'kädLehtpoled' ),
+ 'Mycontributions' => array( 'MinunTond' ),
+ 'Mypage' => array( 'MinunLehtpol\'' ),
+ 'Mytalk' => array( 'MinunLodu' ),
+ 'Newimages' => array( 'UdedFailad' ),
'Newpages' => array( 'UdedLehtpoled' ),
- 'Ancientpages' => array( 'VanhadLehtpoled' ),
+ 'Preferences' => array( 'Järgendused' ),
'Protectedpages' => array( 'KaitudLehtpoled' ),
'Protectedtitles' => array( 'KaitudPälkirjutesed' ),
- 'Allpages' => array( 'KaikLehtesed' ),
+ 'Recentchanges' => array( 'TantoižedToižetused' ),
+ 'Search' => array( 'Ectä' ),
+ 'Shortpages' => array( 'LühüdadLehtpoled' ),
'Specialpages' => array( 'SpecialižedLehtpoled' ),
- 'Contributions' => array( 'Tond' ),
- 'Categories' => array( 'Kategorijad' ),
- 'Export' => array( 'Eksport' ),
+ 'Statistics' => array( 'Statistikad' ),
+ 'Upload' => array( 'Jügutoitta' ),
+ 'Userlogin' => array( 'KävutajanTulendnimi' ),
+ 'Userlogout' => array( 'KävutajanLäntend' ),
'Version' => array( 'Versii' ),
- 'Allmessages' => array( 'KaikTedotused' ),
- 'Mypage' => array( 'MinunLehtpol\'' ),
- 'Mytalk' => array( 'MinunLodu' ),
- 'Mycontributions' => array( 'MinunTond' ),
- 'Search' => array( 'Ectä' ),
+ 'Wantedfiles' => array( 'VarastadudFailad' ),
+ 'Watchlist' => array( 'KaclendNimikirjutez' ),
);
$magicWords = array(
@@ -117,8 +117,8 @@ $messages = array(
'tog-shownumberswatching' => 'Ozutada niiden kävutajiden lugu, kudambad oma mülütanuded lehtpolen iÄeze kaclendnimikirjutesihe',
'tog-oldsig' => 'Olijan allekirjutesen ezikacund:',
'tog-fancysig' => 'IÄeze allekirjutesen wiki-znamiÅ¡t (avtomatižeta kosketuseta)',
-'tog-externaleditor' => 'Kävutada irdredaktor augotižjärgendusen mödhe (vaiše ekspertoiden täht; pidab järgeta specialižikš kompjuter; [http://www.mediawiki.org/wiki/Manual:External_editors Enamb informacijad.])',
-'tog-externaldiff' => 'Kävutada irdredaktor augotižjärgendusen mödhe (vaiše ekspertoiden täht; pidab järgeta specialižikš kompjuter; [http://www.mediawiki.org/wiki/Manual:External_editors Enamb informacijad.])',
+'tog-externaleditor' => 'Kävutada irdredaktor augotižjärgendusen mödhe (vaiše ekspertoiden täht; pidab järgeta specialižikš kompjuter; [//www.mediawiki.org/wiki/Manual:External_editors Enamb informacijad.])',
+'tog-externaldiff' => 'Kävutada irdredaktor augotižjärgendusen mödhe (vaiše ekspertoiden täht; pidab järgeta specialižikš kompjuter; [//www.mediawiki.org/wiki/Manual:External_editors Enamb informacijad.])',
'tog-showjumplinks' => 'Ližata "hüpähtada..."-abukosketused',
'tog-uselivepreview' => 'Kävutada hered ezikacund (JavaScript) (Eksperimentaline)',
'tog-forceeditsummary' => 'Varutada, kunz toižetusen ümbrikirjutandan pöud ei ole täuttud',
@@ -215,14 +215,6 @@ $messages = array(
'index-category' => 'Indeksiruidud lehtpoled',
'noindex-category' => 'Indeksiruimatomad lehtpoled',
-'mainpagetext' => "'''MediaWiki-likutim om seižutadud jügedusita.'''",
-'mainpagedocfooter' => 'Kc. [http://meta.wikimedia.org/wiki/Help:Kävutajan abukirj], miše sada informacijad wikin kävutamižes.
-
-== Erased tarbhaižed resursad ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Järgendusiden nimikirjutez]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce poÄtnimikirjutez]',
-
'about' => 'Andmused',
'article' => "Südäimištlehtpol'",
'newwindow' => '(avaidase udes iknas)',
@@ -272,10 +264,10 @@ $messages = array(
'history' => 'Istorii',
'history_short' => 'Istorii',
'updatedmarker' => "udištadud minun jäl'gmäižen vizitan jäl'ghe",
-'info_short' => 'Informacii',
'printableversion' => 'Versii painmižen täht',
'permalink' => 'Kaikenaigaine kosketuz',
'print' => 'Painda',
+'view' => 'Nähta',
'edit' => 'Redaktiruida',
'create' => 'Säta',
'editthispage' => "Redaktiruida nece lehtpol'",
@@ -366,6 +358,8 @@ Kacu [[Special:Version|informacii kävutadud versijoiš]].',
'toc' => 'Südäimišt',
'showtoc' => 'ozutada',
'hidetoc' => 'peitta',
+'collapsible-collapse' => 'Peita',
+'collapsible-expand' => 'Levitada',
'thisisdeleted' => 'Kacta vai udištada $1?',
'viewdeleted' => 'Kacta $1?',
'restorelink' => '{{PLURAL:$1|Äutud redakcii|$1 Äutud redakcijad}}',
@@ -452,10 +446,9 @@ Ecind: $2',
'protectedinterface' => 'Necil lehtpolel om programman interfeistedotuz. Se om luklostadud, miše kaita se vandalizmaspäi.',
'editinginterface' => "'''Homaikat:''' Tö ladit redaktiruida lehtpol't, kudambal om programman interfeistekst.
Mugoi tegend toižetab interfeisan irdnägu toižiden kävutajiden täht.
-Kändmižen täht om paremb kävutada [http://translatewiki.net/wiki/Main_Page?setlang=vep translatewiki.net] - MediaWikin lokalizacijan projekt.",
+Kändmižen täht om paremb kävutada [//translatewiki.net/wiki/Main_Page?setlang=vep translatewiki.net] - MediaWikin lokalizacijan projekt.",
'sqlhidden' => '(SQL-küzelend om peittud)',
'namespaceprotected' => "Teil ei ole oiktust redaktiruida lehtpolid '''$1'''-nimiavaruses.",
-'customcssjsprotected' => "Teile ei sa redaktiruida necidä lehtpol't, sikš miše sil om toižen kävutajan personaližid järgendusid.",
'ns-specialprotected' => 'Ei sa redaktiruida specialižid lehtpolid.',
'titleprotected' => '[[User:$1|$1]]-kävutai om kel\'nu mugoižen lehtpolen pälkirjutesen kävutamižen.
Sü om "\'\'$2\'\'".',
@@ -492,6 +485,7 @@ Algat unohtagoi [[Special:Preferences|järgeta personaližikš]] sait.',
'createaccount' => 'Sada registracii',
'gotaccount' => "Ku teil om jo registracii, '''$1'''.",
'gotaccountlink' => 'Kirjutagatoiš sistemha',
+'userlogin-resetlink' => 'Unohtid-ik andmused tulendan täht?',
'createaccountmail' => 'e-poÄtaiÄi',
'createaccountreason' => 'Sü:',
'badretype' => 'Teil kirjutadud peitsanad ei kožugoi toine toižhe.',
@@ -508,7 +502,7 @@ Otkat ned kävutamižhe i toštkat teiden tegend.',
'nosuchuser' => 'Ei ole kävutajad "$1"-nimenke.
Kävutajan nimiden oigedkirjutamine rippub kirjamiden registraspäi.
Kodvgat teiden oigedkirjutamine, vai [[Special:UserLogin/signup|säkat uz\' registracii]].',
-'nosuchusershort' => 'Ei ole kävutajad "<nowiki>$1</nowiki>"-nimenke.
+'nosuchusershort' => 'Ei ole kävutajad "$1"-nimenke.
Kodvgat teiden oigedkirjutamine.',
'nouserspecified' => 'Pidab kirjutada kävutajan nimi.',
'login-userblocked' => "Nece kävutai om blokiruidud. Tulend sistemha om kel'tud.",
@@ -540,9 +534,10 @@ Wiki-likutimen poÄtfunkcijad ei olgoi kävutamas.',
'usernamehasherror' => 'Kävutajan nimes ei voi olda mugošt znamad.',
'login-throttled' => 'Tö olet tehnu äjahkon naprindoid kirjutadas sistemha.
Olgat hüväd, varastagat pordon aigad edel ut naprindad.',
+'login-abort-generic' => 'Teiden naprind tulda sistemha om satusetoi - Azotadud',
'loginlanguagelabel' => 'Kel’: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Vajehtada peitsana',
'resetpass_announce' => "Tö olet kirjutanus sistemha sen pordaigaližen peitsanan abul, kudamb oli oigetud teile e-poÄtadme.
Miše tulda sistemha lopuližikš, teile pidab säta uz' peitsana naku:",
@@ -572,8 +567,6 @@ Voib olda, tö olet jo toižetanuded peitsanan vai pakinuded uden peitsanan.',
'extlink_tip' => 'Irdkosketuz (muštkat prefiksas http://)',
'headline_sample' => 'Pälkirjutesen tekst',
'headline_tip' => 'Toižen pindan pälkirjutez',
-'math_sample' => 'Pangat formul nakhu',
-'math_tip' => 'Matematine formul (LaTeX-formatas)',
'nowiki_sample' => 'Pangat formatiruimatoman tekstan nakhu',
'nowiki_tip' => 'Ignoriruida wiki-formatiruind',
'image_sample' => 'Ozutez.jpg',
@@ -653,7 +646,7 @@ vai [{{fullurl:{{FULLPAGENAME}}|action=edit}} redaktiruida nece lehtpol\']</span
'noarticletext-nopermission' => 'Necil lehtpolel ei ole nügüd\' tekstad.
Tö voit [[Special:Search/{{PAGENAME}}|ectä necen lehtpolen nimi]] toižil lehtpolil,
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} ectä pojavid aigkirjoiden kirjutesid]</span>.',
-'userpage-userdoesnotexist' => "Kävutajan nimed «$1» ei ole. Todeks-ik tahtoit säta vai toižetada nece lehtpol'?",
+'userpage-userdoesnotexist' => "Kävutajan nimed «<nowiki>$1</nowiki>» ei ole. Todeks-ik tahtoit säta vai toižetada nece lehtpol'?",
'userpage-userdoesnotexist-view' => '"$1"-kävutai ei ole registriruidud.',
'blocked-notice-logextract' => "Nece kävutai om nügüd' blokiruidud.
Alemba om anttud jälgmäine kirjutuz blokiruindaiglehtesespäi:",
@@ -976,7 +969,6 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
'changepassword' => 'Peitsanan toižetuz',
'prefs-skin' => 'Irdnägu',
'skin-preview' => 'Ezikaclend',
-'prefs-math' => 'Matematik',
'datedefault' => 'Augotižjärgendused',
'prefs-datetime' => 'Dat da aig',
'prefs-personal' => "Kävutajan profil'",
@@ -1000,8 +992,6 @@ Otkat sil'mnägubale üks-se, miše {{SITENAME}}-saitan sädäimišt voib olda v
'columns' => 'Pachid:',
'searchresultshead' => 'Ecind',
'resultsperpage' => 'Kirjutesiden lugu lehtpolel:',
-'contextlines' => 'Ozutadud rividen lugu kaikuÄÄen löutud kirjutesen täht:',
-'contextchars' => 'Kontekstznamoiden lugu rives:',
'stub-threshold' => 'Nägutesen märitamižen künduz <a href="#" class="stub">kosketust otetile</a> (baitoiš)',
'stub-threshold-disabled' => 'Ei ole kävutamas',
'recentchangesdays' => 'Päiväd veresiden toižetusidenke, lugumär:',
@@ -1057,6 +1047,8 @@ Pidab tehta se $1 {{PLURAL:$1|simvolaspäi|simvoloišpäi}}.",
'email' => 'E-poÄt',
'prefs-help-realname' => 'Todesine nimi om opcionaline.
Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.',
+'prefs-help-email' => 'E-poÄtan adres om opcionaline, no se tarbiž, miÅ¡e udessäta peitsana.',
+'prefs-help-email-others' => "Se laskeb mugažo toižile ühtnijoile säta sido teidenke teiden lehtpolen kal't. Heile ei tarbiž kävutada teiden e-poÄtan adresad.",
'prefs-help-email-required' => 'Pidab kirjutada teiden e-poÄtan adres.',
'prefs-info' => 'Päinformacii',
'prefs-i18n' => 'Internacionalizacii',
@@ -1172,7 +1164,6 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
'right-userrights' => 'Redaktiruida kaikiden kävutajiden oiktused',
'right-userrights-interwiki' => 'Toižetada toižiden wiki-saitoiden kävutajiden oiktused',
'right-siteadmin' => 'Luklostada da avaita andmusiden baz',
-'right-reset-passwords' => 'Heitta toižiden kävutajiden peitsanad',
'right-sendemail' => 'Oigeta e-poÄtad toižile kävutajile',
# User rights log
@@ -1293,8 +1284,8 @@ Ku tö kirjutat sen, nece nimi kävutadas, miše ozutada lehtpolen toižetajad.'
'filetype-badmime' => 'Ei sa jügutoitta "$1"-MIME-tipan failoid.',
'filetype-unwanted-type' => "'''\".\$1\"''' om nevomatoi failan tip.
{{PLURAL:\$3|Paremb failan tip om|Parembad failoiden tipad oma}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' om laskmatoi failan tip.
-Lasktud {{PLURAL:\$3|failan tip om|failoiden tipad oma}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|om laskmatoi failantip|oma laskmatomad failantipad}}.
+Lasktud {{PLURAL:$3|failantip om|failantipad oma}} $2.',
'filetype-missing' => 'Necil failal ei ole ližad (ozutesikš, ".jpg").',
'empty-file' => "Teil oigetud fail om pall'az.",
'file-too-large' => 'Teil oigetud fail om surembahk.',
@@ -1345,6 +1336,10 @@ Ku problem jäb jäl'ghepäi-ki, säkat pagin [[Special:ListUsers/sysop|sistemad
'upload-unknown-size' => 'Tundmatoi suruz',
'upload-http-error' => 'HTTP-petuz: $1',
+# Special:UploadStash
+'uploadstash-clear' => 'Čuta poiš kaik peittud failad',
+'uploadstash-refresh' => 'Udestada failoiden nimikirjutez',
+
# img_auth script messages
'img-auth-accessdenied' => "Pästand tänna om kel'tud",
'img-auth-badtitle' => 'Ei voi tehta oiktad pälkirjutest "$1"-späi.',
@@ -1407,7 +1402,6 @@ Plok pachan pälkirjutesele toižetab sortiruindan järgenduz.',
'linkstoimage' => "{{PLURAL:$1|Nece lehtpol' kosketab|$1 Nened lehtpoled kosketadas}} necidä failad:",
'nolinkstoimage' => 'Ei ole necidä failad kosketajid lehtpolid.',
'morelinkstoimage' => 'Ozutada [[Special:WhatLinksHere/$1|toižid kosketusid]] necile failale.',
-'redirectstofile' => '{{PLURAL:$1|Nece fail läbikosketab|$1 Nened failad läbikosketadas}} necile failale:',
'duplicatesoffile' => '{{PLURAL:$1|Nece fail om|$1 Nened failad oma}} ([[Special:FileDuplicateSearch/$2|ližainformacii]])-failan {{PLURAL:$1|dublikat|$1 dublikatad}}:',
'sharedupload' => 'Nece fail om ühthižes $1-varaaitaspäi, sidä voiži kävutada mugažo toižiš projektoiš.',
'sharedupload-desc-here' => 'Nece fail om $1-späi i se sab kävutada toižiš projektoiš.
@@ -1681,9 +1675,7 @@ Kc. mugažo [[Special:WantedCategories|ectud kategorijoiden nimikirjutez]].',
'nowatchlist' => "Teiden kaclendnimikirjutez om pall'az.",
'watchlistanontext' => 'Olgat hüväd, $1, miše lugeda vai redaktiruida teiden kaclendnimikirjutez.',
'watchnologin' => 'Pidab kirjutadas sistemha',
-'addedwatch' => 'Om ližatud kaclendnimikirjuteshe',
'addedwatchtext' => '"[[:$1]]"-lehtpol\' om ližadud teiden [[Special:Watchlist|kaclendnimikirjuteshe]]. Necen lehtpolen (i sidotud lehtpoliden) tulebiš toižetusiš voiškandeb tedištada neciš nimikirjutesespäi; necen polhe kirjutaškatas mugažo [[Special:RecentChanges|uziden toižetusiden lehtpolel]] lihavoitud kirjamil, miše oliži kebnemb homaita.',
-'removedwatch' => 'Om heittud kaclendnimikirjutesespäi',
'removedwatchtext' => '"[[:$1]]"-lehtpol\' om heittud [[Special:Watchlist|teiden kaclendnimikirjutesespäi]].',
'watch' => 'Pida sil’miš',
'watchthispage' => "Kacelta necidä lehtpol't",
@@ -1734,13 +1726,13 @@ Tö voižit mugažo saubata tedotusiden opcii kaikiden lehtpoliden täht teiden
--
Miše toižetada teiden kaclendnimikirjutesen järgendused, mängat tänna:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
MiÅ¡e Äuta lehtpol\' teiden kaclendnimikirjutesespäi, mängat tänna:
$UNWATCHURL
Pid\'oitelend da joksii abu:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => "Čuta lehtpol' poiš",
@@ -1757,7 +1749,7 @@ Pid\'oitelend da joksii abu:
Olgat hüväd, vahviÅ¡toitkat, miÅ¡e tö todeks himoiÄet Äuta se, el'gendat iÄetoi tegendan jäl'gused, i miÅ¡e teiden tegend sättub [[{{MediaWiki:Policy-url}}|saitan politikha]].",
'actioncomplete' => 'Tegend om loptud',
'actionfailed' => 'Tegend lopihe onetomašti',
-'deletedtext' => '"<nowiki>$1</nowiki>" om Äutud poiÅ¡.
+'deletedtext' => '"$1" om Äutud poiÅ¡.
Kc. $2, miÅ¡e lugeda tantoižiden Äudandoiden nimikirjutez.',
'deletedarticle' => '"[[$1]]"-lehtpol\' om Äutud poiÅ¡',
'suppressedarticle' => '"[[$1]]"-lehtpol\' om peittud',
@@ -1814,7 +1806,7 @@ Kc. [[Special:ProtectedPages|kaitud lehtpoliden nimikirjutez]].',
'protect_expiry_invalid' => 'Lopstrok om vär.',
'protect_expiry_old' => 'Lopstrokun aig om jo männu.',
'protect-unchain-permissions' => 'Avaita kaiÄendan ližaparametrad',
-'protect-text' => "Sab nähta da toižetada kaiÄendpind naku '''<nowiki>$1</nowiki>'''-lehtpolen täht.",
+'protect-text' => "Sab nähta da toižetada kaiÄendpind naku '''$1'''-lehtpolen täht.",
'protect-locked-blocked' => "Teiden registracii om blokiruidud, i sikÅ¡ tö et voigoi toižetada lehtpolen kaiÄendpindad.
Naku oma nügüdläižed järgendused '''$1'''-lehtpolen täht.",
'protect-locked-dblock' => "Ei sa toižetada lehtpolen kaiÄendpindad, sikÅ¡ miÅ¡e päandmuzbaz om blokiruidud aigaks.
@@ -1951,7 +1943,6 @@ Alemba om anttud jälgmäine kirjutuz blokiruindaiglehtesespäi:",
'blockiptext' => 'Kävutagat alemba anttud form, miše blokiruida kirjutandan voimuz märitud IP-adresaspäi.
Nece sab tehta vaiše sen täht, miše borcuidas vandalizmanke, kut om kirjutadud [[{{MediaWiki:Policy-url}}|ohjandimiš]].
Kirjutagat sü alemba (ozutesikš, citiruigat vandaliziruidud lehtpoled).',
-'ipaddress' => 'IP-adres:',
'ipadressorusername' => 'IP-adres vai kävutajan nimi:',
'ipbexpiry' => 'Lopindan strok:',
'ipbreason' => 'Sü:',
@@ -1964,7 +1955,6 @@ Kirjutagat sü alemba (ozutesikš, citiruigat vandaliziruidud lehtpoled).',
** Toižiden kävutajiden pöl'gästoitand
** ErazvuiÄÄiden registracijoiden kävutand ühtel ristitul
** Paha kävutajan nimi",
-'ipbanononly' => 'Blokiruida vaiše anonimoid',
'ipbcreateaccount' => "Kel'ta uded registracijad",
'ipbemailban' => "Kel'ta kävutajid e-poÄtan oigendamaspäi",
'ipbenableautoblock' => 'Blokiruida avtomatižešti kävutajal kävutadud IP-adresad',
@@ -1975,7 +1965,6 @@ Kirjutagat sü alemba (ozutesikš, citiruigat vandaliziruidud lehtpoled).',
'ipbotherreason' => 'Toine sü/Ližasü:',
'ipbhidename' => 'Peitta kävutajan nimi redakcijoišpäi da nimikirjutesišpäi',
'ipbwatchuser' => "Kacelta necen kävutajan personališt lehtpol't da lodulehtpol't",
-'ipballowusertalk' => "Laskta necile blokiruidud kävutajale redaktiruida iÄeze lodulehtpol'",
'ipb-change-block' => 'Blokirujda kävutajad udes neniden järgendusidenke',
'badipaddress' => 'Vär IP-adres',
'blockipsuccesssub' => 'Blokiruind om tehtud',
@@ -1993,14 +1982,15 @@ Kc. [[Special:IPBlockList|blokiruidud IP-adresoiden nimikirjuteshe]].',
'unblocked-id' => 'Blokiruind $1 om heittud',
'ipblocklist' => 'Blokiruidud kävutajad',
'ipblocklist-legend' => 'Löuta blokiruidud kävutajad',
-'ipblocklist-username' => 'Kävutajan nimi vai IP-adres:',
-'ipblocklist-sh-userblocks' => '$1 kävutajiden nimiden blokiruindad',
-'ipblocklist-sh-tempblocks' => '$1 pordaigaližed blokiruindad',
-'ipblocklist-sh-addressblocks' => '$1 erasiden IP-den blokiruindad',
+'blocklist-timestamp' => 'Dat, aig',
+'blocklist-target' => 'Met',
+'blocklist-expiry' => 'Lopiše',
+'blocklist-by' => 'Brokirui admin',
+'blocklist-params' => 'Blokiruindan parametrad',
+'blocklist-reason' => 'Sü',
'ipblocklist-submit' => 'Ectä',
'ipblocklist-localblock' => 'Sijaline blokiruind',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Toine blokiruind|Toižed blokiruindad}}',
-'blocklistline' => '$1, $2 om blokiruinu kävutajad $3 ($4)',
'infiniteblock' => 'strokutoi blokiruind',
'expiringblock' => 'lopiše $1 $2',
'anononlyblock' => 'vaiše anonimad',
@@ -2034,8 +2024,7 @@ Alemba om anttud blokiruindaiglehtez:',
'ipb_expiry_temp' => 'Peittud kävutajiden nimiden blokiruindoile pidab olda strokutomin.',
'ipb_hide_invalid' => 'Ei sa peitta registracijad. Voib olda, sišpäi on tehtud äjahk redakcijoid.',
'ipb_already_blocked' => '"$1" om jo blokiruidud',
-'ipb-needreblock' => '== Om jo blokiruidud ==
-$1 om jo blokiruidud. Tahtoižit-ik toižetada järgendusid?',
+'ipb-needreblock' => '$1 om jo blokiruidud. Tahtoižit-ik toižetada järgendusid?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Toine blokiruind|Toižed blokiruindad}}',
'ipb_cant_unblock' => 'Petuz: ei voi löuta ID $1:n blokiruindad.
Voib olda, se om jo heittud.',
@@ -2066,7 +2055,6 @@ Algat unohtagoi [[Special:UnlockDB|heitta luklostand]] teiden holituzradon jäl'
# Move page
'move-page' => 'Udesnimitada $1',
-'move-page-backlink' => '↠$1',
'move-page-legend' => "Udesnimitada lehtpol'",
'movepagetext' => "Alemba anttud formad kävutaden sab nimitada lehtpolen udes; siloi kaclendnimikirjuteses se mugažo linneb uden nimenke.
Vanhemb nimi linneb kosketuseks udembale nimele.
@@ -2290,14 +2278,6 @@ Voib olda, necil lehtpolel om kosketuz irdsaitale, kudamb om mustas nimikirjutes
'spamprotectionmatch' => "Meiden spamanfil'tr tedoti necil statjal mugošt: $1",
'spambot_username' => 'MediaWikid puhtastadas spamaspäi',
-# Info page
-'infosubtitle' => 'Informacii lehtpoles',
-'numedits' => "Redakcijoiden lugu (lehtpol'): $1",
-'numtalkedits' => "Redakcijoiden lugu (lodulehtpol'): $1",
-'numwatchers' => 'Kaclijoiden lugu: $1',
-'numauthors' => "ErazvuiÄÄiden avtoriden lugu (lehtpol'): $1",
-'numtalkauthors' => "ErazvuiÄÄiden avtoriden lugu (lodulehtpol'): $1",
-
# Skin names
'skinname-standard' => 'Klassine',
'skinname-nostalgia' => "Nostal'gii",
@@ -2308,27 +2288,6 @@ Voib olda, necil lehtpolel om kosketuz irdsaitale, kudamb om mustas nimikirjutes
'skinname-simple' => 'Koveritoi',
'skinname-modern' => "Nügüd'aigaine",
-# Math options
-'mw_math_png' => 'Kaiken generiruida PNG',
-'mw_math_simple' => 'Ozutada HTML koveritomil statjoil, ika ozutada PNG',
-'mw_math_html' => 'Ozutada, ku voib, HTML, ika ozutada PNG',
-'mw_math_source' => 'Jätkat nece TeX-formas (tekstkaclimiden täht)',
-'mw_math_modern' => "Kut rekomeduidas nügüd'aigaižiden kaclimiden täht",
-'mw_math_mathml' => 'MathML, ku sab (eksperimentaližikš)',
-
-# Math errors
-'math_failure' => 'Ei voi palastada',
-'math_unknown_error' => 'tundmatoi petuz',
-'math_unknown_function' => 'tundmatoi funkcii',
-'math_lexing_error' => 'leksine petuz',
-'math_syntax_error' => 'sintaksine petuz',
-'math_image_error' => 'PNG-ks kändmižes ozaižihe petuz;
-kodvgat, oiged-ik oma järgetud: latex, dvips, gs da convert.',
-'math_bad_tmpdir' => 'Ei voi säta pordaigaline matematine katalog vai ei voi kirjutada sinnä',
-'math_bad_output' => 'Ei voi säta matematine lähtmižkatalog vai ei voi kirjutada sinnä',
-'math_notexvc' => 'En voi löuta texvc-töfailad;
-kc. math/README järgendamižen täht.',
-
# Patrolling
'markaspatrolleddiff' => 'Znamoita kut patruliruidud',
'markaspatrolledtext' => "Zmamoita nece lehtpol' kut patruliruidud",
@@ -2363,7 +2322,6 @@ kc. math/README järgendamižen täht.',
'file-nohires' => '<small>Ei ole versijad paremban tarkoiktusenke.</small>',
'svg-long-desc' => 'SVG-fail, nominaližikš $1 × $2 pikselid, failan suruz: $3',
'show-big-image' => 'Korgedtarkoiktuseline kuvan versii',
-'show-big-image-thumb' => '<small>Ezikacundan suruz: $1 × $2 pixels</small>',
'file-info-gif-looped' => 'toštase',
'file-info-gif-frames' => '$1 {{PLURAL:$1|freim|freimad}}',
@@ -2406,14 +2364,20 @@ Variants for Chinese language
Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdläižes kuvaspäi.',
'metadata-expand' => 'Ozutada ližaandmused',
'metadata-collapse' => 'Peitta ližaandmused',
-'metadata-fields' => 'Pandud neche nimikirjuteshe EXIF-metaandmusiden pöudad ozutadas kuvalehtpolel augotižjärgendusen mödhe, a toižid pöudoid peittas.
+'metadata-fields' => 'Pandud neche nimikirjuteshe metaandmusiden pöudad ozutadas kuvalehtpolel, konz metaandmusiden tablut om peittud.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Leveduz’',
@@ -2428,13 +2392,11 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdlÃ
'exif-ycbcrpositioning' => 'Y:n da C:n sijaduz',
'exif-xresolution' => 'Gorizontaline tarkoiktuz',
'exif-yresolution' => 'Vertikaline tarkoiktuz',
-'exif-resolutionunit' => 'Tarkoiktusen märiÄendan ühtnik.',
'exif-stripoffsets' => 'Andmusiden sijaduz',
'exif-rowsperstrip' => 'Rividen lugu ühtes särmas',
'exif-stripbytecounts' => 'Ahtištadud särman suruz',
'exif-jpeginterchangeformat' => '"Ezikacund"-blokan augotišen sijaduz.',
'exif-jpeginterchangeformatlength' => 'Baitoiden lugumär JPEG-as',
-'exif-transferfunction' => 'Mujuavarusen toižetamižen funkcii',
'exif-whitepoint' => 'Vauktan Äokkoimen mujumär',
'exif-primarychromaticities' => 'Pämujuiden mujumär',
'exif-ycbcrcoefficients' => 'Mujumodelin toižetusen koefficientad',
@@ -2453,7 +2415,6 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdlÃ
'exif-compressedbitsperpixel' => "Mujun süvuz ahtištusen jäl'ghe",
'exif-pixelydimension' => "Kuvan täuz' korktuz",
'exif-pixelxdimension' => "Täuz' kuvan korktuz",
-'exif-makernote' => 'Tegijan ližaandmused',
'exif-usercomment' => 'Kävutajan homaiÄendad',
'exif-relatedsoundfile' => 'Kulundkommentarijan fail',
'exif-datetimeoriginal' => 'Todesine dat da aig',
@@ -2468,7 +2429,6 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdlÃ
'exif-exposureprogram' => 'Ekspozicijan programm',
'exif-spectralsensitivity' => 'Spektraline mujandmär',
'exif-isospeedratings' => 'ISO vauktusenmujandmär',
-'exif-oecf' => 'Optoelectronižen konversijan koefficient',
'exif-shutterspeedvalue' => 'Avaidamižaig',
'exif-aperturevalue' => 'Diafragm',
'exif-brightnessvalue' => 'Loštuz',
@@ -2481,7 +2441,6 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdlÃ
'exif-focallength' => 'Linzan fokusedhuz',
'exif-subjectarea' => 'Objektan sijaduz',
'exif-flashenergy' => 'Töngahtusen energii',
-'exif-spatialfrequencyresponse' => 'Avaruzline paksuzline harakteristik',
'exif-focalplanexresolution' => 'Fokalplanan X-tarkoiktuz',
'exif-focalplaneyresolution' => "Fokal'planan Y-tarkoiktuz",
'exif-focalplaneresolutionunit' => "Fokal'planan tarkoiktusen ühtnik",
@@ -2490,7 +2449,6 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdlÃ
'exif-sensingmethod' => 'Sensoran tip',
'exif-filesource' => 'Failan purde',
'exif-scenetype' => 'Scenan tip',
-'exif-cfapattern' => "CFA - mujufil'tran tip",
'exif-customrendered' => 'Ližaradamine',
'exif-exposuremode' => 'Ekspozicijan režiman valiÄend',
'exif-whitebalance' => 'Vauktan balans',
@@ -2665,15 +2623,13 @@ Ku fail redaktiruidihe sändan polhe, erased parametrad voidas erineda nügüdlÃ
# External editor support
'edit-externally' => 'Redaktiruida nece fail irdprogrammal',
-'edit-externally-help' => '(Kc. [http://www.mediawiki.org/wiki/Manual:External_editors seižutamižinstrukcijoid])',
+'edit-externally-help' => '(Kc. [//www.mediawiki.org/wiki/Manual:External_editors seižutamižinstrukcijoid])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'kaik',
-'imagelistall' => 'kaik',
-'watchlistall2' => 'kaik',
-'namespacesall' => 'kaik',
-'monthsall' => 'kaik',
-'limitall' => 'kaik',
+'watchlistall2' => 'kaik',
+'namespacesall' => 'kaik',
+'monthsall' => 'kaik',
+'limitall' => 'kaik',
# E-mail address confirmation
'confirmemail' => 'VahviÅ¡toitta e-poÄtan adres',
@@ -2805,27 +2761,26 @@ Kävutagat normaline ezikacund.',
'duplicate-defaultsort' => '\'\'\'Varutuz:\'\'\' Sortiruindan avadim äugotižjärgendusen mödhe "$2" toižetab edeližen avadimen äugotižjärgendusen mödhe "$1".',
# Special:Version
-'version' => 'Versii',
-'version-extensions' => 'Seižutadud ližad',
-'version-specialpages' => 'Specialižed lehtpoled',
-'version-parserhooks' => 'Sintaksižen analizatoran sabustajad',
-'version-variables' => 'Vajehtujad lugud',
-'version-skins' => 'Nägutemad',
-'version-other' => 'Toine',
-'version-mediahandlers' => 'Median radimed',
-'version-hooks' => 'Sabutajad',
-'version-extension-functions' => 'Ližoiden funkcijad',
-'version-parser-extensiontags' => 'Sintaksižen analizatoran ližoiden virgad',
-'version-parser-function-hooks' => 'Sintaksižen analizatoran funkcijoiden sabutajad',
-'version-skin-extension-functions' => 'Irdnäguližoiden funkcijad',
-'version-hook-name' => 'Sabustajan nimi',
-'version-hook-subscribedby' => 'Ezipakitoitajad',
-'version-version' => '(Versii $1)',
-'version-license' => 'Licenzii',
-'version-poweredby-others' => 'toižed',
-'version-software' => 'Seižutadud programmišt',
-'version-software-product' => 'Produkt',
-'version-software-version' => 'Versii',
+'version' => 'Versii',
+'version-extensions' => 'Seižutadud ližad',
+'version-specialpages' => 'Specialižed lehtpoled',
+'version-parserhooks' => 'Sintaksižen analizatoran sabustajad',
+'version-variables' => 'Vajehtujad lugud',
+'version-skins' => 'Nägutemad',
+'version-other' => 'Toine',
+'version-mediahandlers' => 'Median radimed',
+'version-hooks' => 'Sabutajad',
+'version-extension-functions' => 'Ližoiden funkcijad',
+'version-parser-extensiontags' => 'Sintaksižen analizatoran ližoiden virgad',
+'version-parser-function-hooks' => 'Sintaksižen analizatoran funkcijoiden sabutajad',
+'version-hook-name' => 'Sabustajan nimi',
+'version-hook-subscribedby' => 'Ezipakitoitajad',
+'version-version' => '(Versii $1)',
+'version-license' => 'Licenzii',
+'version-poweredby-others' => 'toižed',
+'version-software' => 'Seižutadud programmišt',
+'version-software-product' => 'Produkt',
+'version-software-version' => 'Versii',
# Special:FilePath
'filepath' => 'Te failannoks',
@@ -2834,9 +2789,7 @@ Kävutagat normaline ezikacund.',
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Ectä kaksitadud failad',
-'fileduplicatesearch-summary' => 'ÃœhtejiÄÄiden failoiden ecmine niiden heÅ¡-kodan mödhe.
-
-Kirjutagat failan nimi «{{ns:file}}:»-pkefiksata.',
+'fileduplicatesearch-summary' => 'ÃœhtejiÄÄiden failoiden ecmine niiden heÅ¡-kodan mödhe.',
'fileduplicatesearch-legend' => 'Ectä dublikatoid',
'fileduplicatesearch-filename' => 'Failannimi:',
'fileduplicatesearch-submit' => 'Ectä',
@@ -2848,7 +2801,8 @@ Kirjutagat failan nimi «{{ns:file}}:»-pkefiksata.',
'specialpages' => 'Specialižed lehtpoled',
'specialpages-note' => '----
* Järgeližed specialižed lehtpoled.
-* <strong class="mw-specialpagerestricted">Kaitud specialižed lehtpoled.</strong>',
+* <span class="mw-specialpagerestricted">Kaitud specialižed lehtpoled.</span>
+* <span class="mw-specialpagecached">Keširuidud specialižed lehtpoled.</span>',
'specialpages-group-maintenance' => 'Tehnižen holitandan satusenladindad',
'specialpages-group-other' => 'Toižed specialižed lehtpoled',
'specialpages-group-login' => 'Kirjutadas sistemha / Sada registracii',
diff --git a/languages/messages/MessagesVi.php b/languages/messages/MessagesVi.php
index 1e60d64e..e0e128d9 100644
--- a/languages/messages/MessagesVi.php
+++ b/languages/messages/MessagesVi.php
@@ -53,94 +53,102 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Äổi_hÆ°á»›ng_kép' ),
+ 'Activeusers' => array( 'NgÆ°á»i_dùng_tích_cá»±c' ),
+ 'Allmessages' => array( 'Má»i_thông_báo' ),
+ 'Allpages' => array( 'Má»i_bài' ),
+ 'Ancientpages' => array( 'Trang_cũ' ),
+ 'Blankpage' => array( 'Trang_trắng' ),
+ 'Block' => array( 'Cấm_IP' ),
+ 'Blockme' => array( 'Khóa_tôi', 'Khoá_tôi' ),
+ 'Booksources' => array( 'Nguồn_sách' ),
'BrokenRedirects' => array( 'Äổi_hÆ°á»›ng_sai' ),
+ 'Categories' => array( 'Thể_loại' ),
+ 'ChangePassword' => array( 'Äổi_mật_khẩu' ),
+ 'ComparePages' => array( 'So_sánh_trang' ),
+ 'Confirmemail' => array( 'Xác_nhận_thư' ),
+ 'Contributions' => array( 'Äóng_góp' ),
+ 'CreateAccount' => array( 'Äăng_ký', 'Äăng_kí' ),
+ 'Deadendpages' => array( 'Trang_Ä‘Æ°á»ng_cùng' ),
+ 'DeletedContributions' => array( 'Äóng_góp_bị_xóa', 'Äóng_góp_bị_xoá' ),
'Disambiguations' => array( 'Trang_định_hướng' ),
- 'Userlogin' => array( 'Äăng_nhập' ),
- 'Userlogout' => array( 'Äăng_xuất' ),
- 'CreateAccount' => array( 'Äăng_ký' ),
- 'Preferences' => array( 'Tùy_chá»n' ),
- 'Watchlist' => array( 'Danh_sách_theo_dõi' ),
- 'Recentchanges' => array( 'Thay_đổi_gần_đây' ),
- 'Upload' => array( 'Tải_lên' ),
+ 'DoubleRedirects' => array( 'Äổi_hÆ°á»›ng_kép' ),
+ 'EditWatchlist' => array( 'Sửa_danh_sách_theo_dõi' ),
+ 'Emailuser' => array( 'Gửi_thư', 'Gửi_thư_điện_tử' ),
+ 'Export' => array( 'Xuất' ),
+ 'Fewestrevisions' => array( 'Ãt_phiên_bản_nhất' ),
+ 'FileDuplicateSearch' => array( 'Tìm_tập_tin_trùng' ),
+ 'Filepath' => array( 'ÄÆ°á»ng_dẫn_tập_tin', 'ÄÆ°á»ng_dẫn_file' ),
+ 'Import' => array( 'Nhập' ),
+ 'Invalidateemail' => array( 'Hủy_thư', 'Hủy_thư_điện_tử', 'Huỷ_thư', 'Huỷ_thư_điện_tử', 'Tắt_thư' ),
+ 'BlockList' => array( 'Danh_sách_cấm' ),
+ 'LinkSearch' => array( 'Tìm_liên_kết' ),
+ 'Listadmins' => array( 'Danh_sách_bảo_quản_viên', 'Danh_sách_admin' ),
+ 'Listbots' => array( 'Danh_sách_bot', 'Danh_sách_robot' ),
'Listfiles' => array( 'Danh_sách_hình', 'Danh_sách_tập_tin' ),
- 'Newimages' => array( 'Tập_tin_mới', 'Hình_mới' ),
- 'Listusers' => array( 'Danh_sách_thành_viên' ),
'Listgrouprights' => array( 'Quyá»n_nhóm_ngÆ°á»i_dùng' ),
- 'Statistics' => array( 'Thống_kê' ),
- 'Randompage' => array( 'Ngẫu_nhiên' ),
+ 'Listredirects' => array( 'Trang_đổi_hướng' ),
+ 'Listusers' => array( 'Danh_sách_thành_viên' ),
+ 'Lockdb' => array( 'Khóa_CSDL', 'Khóa_cơ_sở_dữ_liệu', 'Khoá_CSDL', 'Khoá_cơ_sở_dữ_liệu' ),
+ 'Log' => array( 'Nhật_trình' ),
'Lonelypages' => array( 'Trang_mồ_côi' ),
- 'Uncategorizedpages' => array( 'Trang_chưa_phân_loại' ),
- 'Uncategorizedcategories' => array( 'Thể_loại_chưa_phân_loại' ),
- 'Uncategorizedimages' => array( 'Hình_chưa_phân_loại' ),
- 'Uncategorizedtemplates' => array( 'Bản_mẫu_chưa_phân_loại', 'Tiêu_bản_chưa_phân_loại' ),
- 'Unusedcategories' => array( 'Thể_loại_chưa_dùng' ),
- 'Unusedimages' => array( 'Hình_chưa_dùng' ),
- 'Wantedpages' => array( 'Trang_cần_thiết' ),
- 'Wantedcategories' => array( 'Thể_loại_cần_thiết' ),
- 'Wantedfiles' => array( 'Tập_tin_cần_thiết' ),
- 'Wantedtemplates' => array( 'Bản_mẫu_cần_thiết', 'Tiêu_bản_cần_thiết' ),
+ 'Longpages' => array( 'Trang_dài' ),
+ 'MergeHistory' => array( 'Trộn_lịch_sử' ),
+ 'MIMEsearch' => array( 'Tìm_MIME' ),
+ 'Mostcategories' => array( 'Thể_loại_lớn_nhất' ),
+ 'Mostimages' => array( 'Tập_tin_liên_kết_nhiá»u_nhất' ),
'Mostlinked' => array( 'Liên_kết_nhiá»u_nhất' ),
'Mostlinkedcategories' => array( 'Thể_loại_liên_kết_nhiá»u_nhất' ),
'Mostlinkedtemplates' => array( 'Bản_mẫu_liên_kết_nhiá»u_nhất', 'Tiêu_bản_liên_kết_nhiá»u_nhất' ),
- 'Mostimages' => array( 'Tập_tin_liên_kết_nhiá»u_nhất' ),
- 'Mostcategories' => array( 'Thể_loại_lớn_nhất' ),
'Mostrevisions' => array( 'Nhiá»u_phiên_bản_nhất' ),
- 'Fewestrevisions' => array( 'Ãt_phiên_bản_nhất' ),
- 'Shortpages' => array( 'Trang_ngắn' ),
- 'Longpages' => array( 'Trang_dài' ),
+ 'Movepage' => array( 'Di_chuyển', 'Äổi_tên_trang' ),
+ 'Mycontributions' => array( 'Äóng_góp_của_tôi', 'Tôi_đóng_góp' ),
+ 'Mypage' => array( 'Trang_tôi', 'Trang_cá_nhân' ),
+ 'Mytalk' => array( 'Thảo_luận_tôi', 'Trang_thảo_luận_của_tôi' ),
+ 'Myuploads' => array( 'Tập_tin_tôi' ),
+ 'Newimages' => array( 'Tập_tin_mới', 'Hình_mới' ),
'Newpages' => array( 'Trang_má»›i' ),
- 'Ancientpages' => array( 'Trang_cũ' ),
- 'Deadendpages' => array( 'Trang_Ä‘Æ°á»ng_cùng' ),
+ 'PasswordReset' => array( 'Tái_tạo_mật_khẩu', 'Äặt_lại_mật_khẩu' ),
+ 'PermanentLink' => array( 'Liên_kết_thÆ°á»ng_trá»±c' ),
+ 'Popularpages' => array( 'Trang_phổ_biến' ),
+ 'Preferences' => array( 'Tùy_chá»n', 'Tuỳ_chá»n' ),
+ 'Prefixindex' => array( 'Tiá»n_tố' ),
'Protectedpages' => array( 'Trang_khóa' ),
'Protectedtitles' => array( 'Tá»±a_Ä‘á»_bị_khóa' ),
- 'Allpages' => array( 'Má»i_bài' ),
- 'Prefixindex' => array( 'Tiá»n_tố' ),
- 'Ipblocklist' => array( 'Danh_sách_cấm' ),
- 'Specialpages' => array( 'Trang_đặc_biệt' ),
- 'Contributions' => array( 'Äóng_góp' ),
- 'Emailuser' => array( 'Gá»­i_thÆ°' ),
- 'Confirmemail' => array( 'Xác_nhận_thư' ),
- 'Whatlinkshere' => array( 'Liên_kết_đến_đây' ),
+ 'Randompage' => array( 'Ngẫu_nhiên' ),
+ 'Randomredirect' => array( 'Äổi_hÆ°á»›ng_ngẫu_nhiên' ),
+ 'Recentchanges' => array( 'Thay_đổi_gần_đây' ),
'Recentchangeslinked' => array( 'Thay_đổi_liên_quan' ),
- 'Movepage' => array( 'Di_chuyển' ),
- 'Blockme' => array( 'Khóa_tôi' ),
- 'Booksources' => array( 'Nguồn_sách' ),
- 'Categories' => array( 'Thể_loại' ),
- 'Export' => array( 'Xuất' ),
- 'Version' => array( 'Phiên_bản' ),
- 'Allmessages' => array( 'Má»i_thông_báo' ),
- 'Log' => array( 'Nhật_trình' ),
- 'Blockip' => array( 'Cấm_IP' ),
- 'Undelete' => array( 'Phục_hồi' ),
- 'Import' => array( 'Nhập' ),
- 'Lockdb' => array( 'Khóa_CSDL' ),
- 'Unlockdb' => array( 'Mở_khóa_CSDL' ),
- 'Userrights' => array( 'Quyá»n_thành_viên' ),
- 'MIMEsearch' => array( 'Tìm_MIME' ),
- 'FileDuplicateSearch' => array( 'Tìm_tập_tin_trùng' ),
- 'Unwatchedpages' => array( 'Trang_chưa_theo_dõi' ),
- 'Listredirects' => array( 'Trang_đổi_hướng' ),
'Revisiondelete' => array( 'Xóa_phiên_bản' ),
- 'Unusedtemplates' => array( 'Tiêu_bản_chưa_dùng', 'Bản_mẫu_chưa_dùng' ),
- 'Randomredirect' => array( 'Äổi_hÆ°á»›ng_ngẫu_nhiên' ),
- 'Mypage' => array( 'Trang_tôi', 'Trang_cá_nhân' ),
- 'Mytalk' => array( 'Thảo_luận_tôi', 'Trang_thảo_luận_của_tôi' ),
- 'Mycontributions' => array( 'Äóng_góp_của_tôi', 'Tôi_đóng_góp' ),
- 'Listadmins' => array( 'Danh_sách_admin' ),
- 'Listbots' => array( 'Danh_sách_bot' ),
- 'Popularpages' => array( 'Trang_phổ_biến' ),
+ 'RevisionMove' => array( 'Di_chuyển_phiên_bản' ),
'Search' => array( 'Tìm_kiếm' ),
- 'Resetpass' => array( 'Äổi_mật_khẩu' ),
- 'Withoutinterwiki' => array( 'Không_interwiki' ),
- 'MergeHistory' => array( 'Trộn_lịch_sử' ),
- 'Filepath' => array( 'ÄÆ°á»ng_dẫn_file' ),
- 'Invalidateemail' => array( 'Tắt_thư' ),
- 'Blankpage' => array( 'Trang_trắng' ),
- 'LinkSearch' => array( 'Tìm_liên_kết' ),
- 'DeletedContributions' => array( 'Äóng_góp_bị_xóa' ),
+ 'Shortpages' => array( 'Trang_ngắn' ),
+ 'Specialpages' => array( 'Trang_đặc_biệt' ),
+ 'Statistics' => array( 'Thống_kê' ),
'Tags' => array( 'Thẻ' ),
- 'Activeusers' => array( 'NgÆ°á»i_dùng_tích_cá»±c' ),
+ 'Unblock' => array( 'Bá»_cấm' ),
+ 'Uncategorizedcategories' => array( 'Thể_loại_chưa_phân_loại' ),
+ 'Uncategorizedimages' => array( 'Tập_tin_chưa_phân_loại', 'Hình_chưa_phân_loại' ),
+ 'Uncategorizedpages' => array( 'Trang_chưa_phân_loại' ),
+ 'Uncategorizedtemplates' => array( 'Bản_mẫu_chưa_phân_loại', 'Tiêu_bản_chưa_phân_loại' ),
+ 'Undelete' => array( 'Phục_hồi' ),
+ 'Unlockdb' => array( 'Mở_khóa_CSDL', 'Mở_khóa_cơ_sở_dữ_liệu', 'Mở_khoá_CSDL', 'Mở_khoá_cơ_sở_dữ_liệu' ),
+ 'Unusedcategories' => array( 'Thể_loại_chưa_dùng' ),
+ 'Unusedimages' => array( 'Tập_tin_chưa_dùng', 'Hình_chưa_dùng' ),
+ 'Unusedtemplates' => array( 'Bản_mẫu_chưa_dùng', 'Tiêu_bản_chưa_dùng' ),
+ 'Unwatchedpages' => array( 'Trang_chưa_theo_dõi' ),
+ 'Upload' => array( 'Tải_lên' ),
+ 'UploadStash' => array( 'Hàng_đợi_tải_lên' ),
+ 'Userlogin' => array( 'Äăng_nhập' ),
+ 'Userlogout' => array( 'Äăng_xuất' ),
+ 'Userrights' => array( 'Quyá»n_thành_viên' ),
+ 'Version' => array( 'Phiên_bản' ),
+ 'Wantedcategories' => array( 'Thể_loại_cần_thiết' ),
+ 'Wantedfiles' => array( 'Tập_tin_cần_thiết' ),
+ 'Wantedpages' => array( 'Trang_cần_thiết' ),
+ 'Wantedtemplates' => array( 'Bản_mẫu_cần_thiết', 'Tiêu_bản_cần_thiết' ),
+ 'Watchlist' => array( 'Danh_sách_theo_dõi' ),
+ 'Whatlinkshere' => array( 'Liên_kết_đến_đây' ),
+ 'Withoutinterwiki' => array( 'Không_liên_wiki', 'Không_interwiki' ),
);
$magicWords = array(
@@ -312,8 +320,8 @@ $messages = array(
'tog-shownumberswatching' => 'Hiển thị số ngÆ°á»i Ä‘ang xem',
'tog-oldsig' => 'Chữ ký hiện tại:',
'tog-fancysig' => 'Xem chữ ký là mã wiki (không có liên kết tự động)',
-'tog-externaleditor' => 'Mặc định dùng trình soạn thảo bên ngoài (chỉ dành cho ngÆ°á»i thành thạo, cần thiết lập đặc biệt trên máy tính của bạn; [http://www.mediawiki.org/wiki/Manual:External_editors?uselang=vi chi tiết])',
-'tog-externaldiff' => 'Mặc định dùng trình so sánh bên ngoài (chỉ dành cho ngÆ°á»i thành thạo, cần thiết lập đặc biệt trên máy tính của bạn; [http://www.mediawiki.org/wiki/Manual:External_editors?uselang=vi chi tiết])',
+'tog-externaleditor' => 'Mặc định dùng trình soạn thảo bên ngoài (chỉ dành cho ngÆ°á»i thành thạo, cần thiết lập đặc biệt trên máy tính của bạn; [//www.mediawiki.org/wiki/Manual:External_editors?uselang=vi chi tiết])',
+'tog-externaldiff' => 'Mặc định dùng trình so sánh bên ngoài (chỉ dành cho ngÆ°á»i thành thạo, cần thiết lập đặc biệt trên máy tính của bạn; [//www.mediawiki.org/wiki/Manual:External_editors?uselang=vi chi tiết])',
'tog-showjumplinks' => 'Bật liên kết “bước tới†trên đầu trang cho bộ trình duyệt thuần văn bản hay âm thanh',
'tog-uselivepreview' => 'Xem thử trực tiếp (JavaScript; chưa ổn định)',
'tog-forceeditsummary' => 'Nhắc tôi khi tôi quên tóm lược sửa đổi',
@@ -410,15 +418,7 @@ $messages = array(
'listingcontinuesabbrev' => 'tiếp',
'index-category' => 'Trang được ghi chỉ mục',
'noindex-category' => 'Trang không hiển thị trong bộ máy tìm kiếm',
-
-'mainpagetext' => "'''MediaWiki đã được cài đặt thành công.'''",
-'mainpagedocfooter' => 'Xin Ä‘á»c [http://meta.wikimedia.org/wiki/Help:Contents HÆ°á»›ng dẫn sá»­ dụng] để biết thêm thông tin vá» cách sá»­ dụng phần má»m wiki.
-
-== Äể bắt đầu ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Danh sách các thiết lập cấu hình]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Các câu há»i thÆ°á»ng gặp MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Danh sách gửi thư vỠviệc phát hành MediaWiki]',
+'broken-file-category' => 'Trang nhúng tập tin không tồn tại',
'about' => 'Giới thiệu',
'article' => 'Trang ná»™i dung',
@@ -470,10 +470,10 @@ $messages = array(
'history' => 'Lịch sử trang',
'history_short' => 'Lịch sử',
'updatedmarker' => 'được cập nhật kể từ lần xem cuối',
-'info_short' => 'Thông tin',
'printableversion' => 'Bản để in',
'permalink' => 'Liên kết thÆ°á»ng trá»±c',
'print' => 'In',
+'view' => 'Xem',
'edit' => 'Sửa đổi',
'create' => 'Tạo',
'editthispage' => 'Sửa trang này',
@@ -481,6 +481,7 @@ $messages = array(
'delete' => 'Xóa',
'deletethispage' => 'Xóa trang này',
'undelete_short' => 'Phục hồi {{PLURAL:$1|một sửa đổi|$1 sửa đổi}}',
+'viewdeleted_short' => 'Xem {{PLURAL:$1|sửa đổi|$1 sửa đổi}} đã xóa',
'protect' => 'Khóa',
'protect_change' => 'thay đổi',
'protectthispage' => 'Khóa trang này',
@@ -565,6 +566,8 @@ $1',
'toc' => 'Mục lục',
'showtoc' => 'hiện',
'hidetoc' => 'ẩn',
+'collapsible-collapse' => 'Thu gá»n',
+'collapsible-expand' => 'Mở rộng',
'thisisdeleted' => 'Xem hay phục hồi $1 ?',
'viewdeleted' => 'Xem $1?',
'restorelink' => '{{PLURAL:$1|một|$1}} sửa đổi đã xóa',
@@ -576,6 +579,8 @@ $1',
'page-rss-feed' => 'Nguồn tin RSS của “$1â€',
'page-atom-feed' => 'Nguồn tin Atom của “$1â€',
'red-link-title' => '$1 (trang chưa được viết)',
+'sort-descending' => 'Sắp xếp giảm dần',
+'sort-ascending' => 'Sắp xếp tăng dần',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Ná»™i dung',
@@ -657,12 +662,13 @@ Truy vấn: $2',
'protectedpagetext' => 'Trang này đã bị khóa không cho sửa đổi.',
'viewsourcetext' => 'Bạn vẫn có thể xem và chép xuống mã nguồn của trang này:',
'protectedinterface' => 'Trang này cung cấp má»™t thông báo trong giao diện phần má»m, và bị khóa để tránh phá hoại.',
-'editinginterface' => "'''LÆ°u ý:''' Bạn Ä‘ang sá»­a chữa má»™t trang dùng để cung cấp thông báo giao diện cho phần má»m. Những thay đổi tại trang này sẽ ảnh hưởng đến giao diện của rất nhiá»u ngÆ°á»i dùng website này. Äể dịch thuật, hãy xem xét sá»­ dụng [http://translatewiki.net/wiki/Main_Page?setlang=vi translatewiki.net], dá»± án bản địa hóa của MediaWiki.",
+'editinginterface' => "'''LÆ°u ý:''' Bạn Ä‘ang sá»­a chữa má»™t trang dùng để cung cấp thông báo giao diện cho phần má»m. Những thay đổi tại trang này sẽ ảnh hưởng đến giao diện của rất nhiá»u ngÆ°á»i dùng website này. Äể dịch thuật, hãy xem xét sá»­ dụng [//translatewiki.net/wiki/Main_Page?setlang=vi translatewiki.net], dá»± án bản địa hóa của MediaWiki.",
'sqlhidden' => '(đã giấu truy vấn SQL)',
'cascadeprotected' => 'Trang này đã bị khóa không cho sá»­a đổi, vì nó được nhúng vào {{PLURAL:$1|trang|những trang}} đã bị khóa vá»›i tùy chá»n “khóa theo tầng†được kích hoạt:
$2',
'namespaceprotected' => "Bạn không có quyá»n sá»­a các trang trong không gian tên '''$1'''.",
-'customcssjsprotected' => 'Bạn không có quyá»n sá»­a đổi trang này vì nó chứa các tùy chá»n cá nhân của má»™t thành viên khác.',
+'customcssprotected' => 'Bạn không có quyá»n sá»­a đổi trang CSS này vì nó chứa các tùy chá»n cá nhân của má»™t thành viên khác.',
+'customjsprotected' => 'Bạn không có quyá»n sá»­a đổi trang JavaScript này vì nó chứa các tùy chá»n cá nhân của má»™t thành viên khác.',
'ns-specialprotected' => 'Không thể sửa chữa các trang trong không gian tên {{ns:special}}.',
'titleprotected' => "Tựa đỠnày đã bị [[User:$1|$1]] khóa không cho tạo ra.
Lý do được cung cấp là ''$2''.",
@@ -699,6 +705,7 @@ Tài khoản của bạn đã mở.
'createaccount' => 'Mở tài khoản',
'gotaccount' => "Äã mở tài khoản rồi? '''$1'''.",
'gotaccountlink' => 'Äăng nhập',
+'userlogin-resetlink' => 'Quên mất thông tin đăng nhập?',
'createaccountmail' => 'qua thư điện tử',
'createaccountreason' => 'Lý do:',
'badretype' => 'Hai mật khẩu không khớp.',
@@ -708,13 +715,15 @@ Hãy chá»n má»™t tên khác.',
'createaccounterror' => 'Không thể mở tài khoản: $1',
'nocookiesnew' => 'Bạn đã tạo tài khoản thành công, nhÆ°ng bạn chÆ°a đăng nhập. {{SITENAME}} sá»­ dụng cookie để đăng nhập vào tài khoản. Bạn đã tắt cookie. Xin hãy bật cookie lên, rồi đăng nhập lại vá»›i tên ngÆ°á»i dùng và mật khẩu má»›i.',
'nocookieslogin' => '{{SITENAME}} sử dụng cookie để đăng nhập thành viên. Bạn đã tắt cookie. Xin hãy kích hoạt rồi thử lại.',
+'nocookiesfornew' => 'Không thể mở tài khoản vì không thể xác nhận nguồn yêu cầu nó.
+Hãy chắc chắn bạn đã bật lên cookie, làm mới trang này, và thử lại.',
'noname' => 'Chưa nhập tên.',
'loginsuccesstitle' => 'Äăng nhập thành công',
'loginsuccess' => "'''Bạn đã đăng nhập vào {{SITENAME}} vá»›i tên “$1â€.'''",
'nosuchuser' => 'Không có thành viên nào có tên “$1â€.
Tên ngÆ°á»i dùng có phân biệt chữ hoa chữ thÆ°á»ng.
Hãy kiểm tra lại chính tả, hoặc [[Special:UserLogin/signup|mở tài khoản mới]].',
-'nosuchusershort' => 'Không có thành viên nào có tên “<nowiki>$1</nowiki>â€. Xin hãy kiểm tra lại chính tả.',
+'nosuchusershort' => 'Không có thành viên nào có tên “$1â€. Xin hãy kiểm tra lại chính tả.',
'nouserspecified' => 'Bạn phải đưa ra tên đăng ký.',
'login-userblocked' => 'Thành viên này đã bị cấm. Không cho phép đăng nhập.',
'wrongpassword' => 'Mật khẩu sai. Xin vui lòng nhập lại.',
@@ -750,13 +759,14 @@ Xin hãy bỠqua thông báo này nếu tài khoản này không phải do bạ
'usernamehasherror' => 'Tên ngÆ°á»i dùng không thể chứa dấu rào',
'login-throttled' => 'Bạn đã thá»­ quá nhiá»u mật khẩu của tài khoản này
Xin hãy đợi chốc lát rồi thử lại.',
+'login-abort-generic' => 'Thất bại khi đăng nhập',
'loginlanguagelabel' => 'Ngôn ngữ: $1',
'suspicious-userlogout' => 'Äã bá» qua yêu cầu đăng xuất bạn, hình nhÆ° được gá»­i từ trình duyệt hoặc máy proxy nhá»› đệm hÆ°.',
# E-mail sending
'php-mail-error-unknown' => 'Lỗi không rõ trong hàm PHP mail()',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Äổi mật khẩu',
'resetpass_announce' => 'Bạn đã đăng nhập bằng mật khẩu tạm gởi qua e-mail. Äể hoàn tất việc đăng nhập, bạn phải tạo lại mật khẩu má»›i tại đây:',
'resetpass_text' => '<!-- Nhập văn bản vào đây -->',
@@ -774,6 +784,43 @@ Xin hãy đợi chốc lát rồi thử lại.',
Có thể bạn đã thay đổi thành công mật khẩu của mình hoặc đã yêu cầu cung cấp một mật khẩu tạm mới.',
'resetpass-temp-password' => 'Mật khẩu tạm:',
+# Special:PasswordReset
+'passwordreset' => 'Tái tạo mật khẩu',
+'passwordreset-text' => 'Hãy Ä‘iá»n mẫu Ä‘Æ¡n này để nhận thÆ° Ä‘iện tá»­ nhắc nhở vá» thông tin tài khoản của bạn.',
+'passwordreset-legend' => 'Tái tạo mật khẩu',
+'passwordreset-disabled' => 'Chức năng tái tạo mật khẩu đã bị tắt trên wiki này.',
+'passwordreset-pretext' => '{{PLURAL:$1||Nhập một trong những thông tin được yêu cầu ở dưới}}',
+'passwordreset-username' => 'Tên ngÆ°á»i dùng:',
+'passwordreset-domain' => 'Tên miá»n:',
+'passwordreset-email' => 'Äịa chỉ thÆ° Ä‘iện tá»­:',
+'passwordreset-emailtitle' => 'Thông tin tài khoản tại {{SITENAM}}',
+'passwordreset-emailtext-ip' => 'Ai đó (có thể là bạn, từ địa chỉ IP $1) đã yêu cầu má»™t lá»i
+nhắc nhở các thông tin tài khoản của bạn tại {{SITENAME}} ($4).
+{{PLURAL:$3|Tài khoản|Các tài khoản}} ở dưới có đặt địa chỉ thư điện tử này:
+
+$2
+
+{{PLURAL:$3|Mật khẩu|Các mật khẩu}} tạm này sẽ hết hạn trong vòng {{PLURAL:$5|một ngày|$5 ngày}}. Bạn nên đăng nhập
+ngay bây giỠđể chá»n mật khẩu má»›i. Nếu bạn không phải là ngÆ°á»i yêu cầu
+đặt lại mật khẩu hoặc đã nhớ lại mật khẩu hiện hành, và bạn không còn
+muốn thay đổi nó, xin vui lòng kệ thông điệp này và tiếp tục sử dụng
+mật khẩu cũ.',
+'passwordreset-emailtext-user' => 'Thành viên $1 tại {{SITENAME}} đã yêu cầu má»™t lá»i nhắc nhở
+các thông tin tài khoản của bạn tại {{SITENAME}} ($4). {{PLURAL:$3|Tài
+khoản|Các
+tài khoản}} ở dưới có đặt địa chỉ thư điện tử này:
+
+$2
+
+{{PLURAL:$3|Mật khẩu|Các mật khẩu}} tạm này sẽ hết hạn trong vòng {{PLURAL:$5|một ngày|$5 ngày}}. Bạn nên đăng nhập
+ngay bây giỠđể chá»n mật khẩu má»›i. Nếu bạn không phải là ngÆ°á»i yêu cầu
+đặt lại mật khẩu hoặc đã nhớ lại mật khẩu hiện hành, và bạn không còn
+muốn thay đổi nó, xin vui lòng kệ thông điệp này và tiếp tục sử dụng
+mật khẩu cũ.',
+'passwordreset-emailelement' => 'Tên ngÆ°á»i dùng: $1
+Mật khẩu tạm: $2',
+'passwordreset-emailsent' => 'Äã gá»­i thÆ° Ä‘iện tá»­ nhắc nhở.',
+
# Edit page toolbar
'bold_sample' => 'Chữ đậm',
'bold_tip' => 'Chữ đậm',
@@ -785,8 +832,6 @@ Có thể bạn đã thay đổi thành công mật khẩu của mình hoặc đ
'extlink_tip' => 'Liên kết ngoài (nhớ ghi http://)',
'headline_sample' => 'Äá» mục',
'headline_tip' => 'Äá» mục cấp 2',
-'math_sample' => 'Nhập công thức toán vào đây',
-'math_tip' => 'Công thức toán (LaTeX)',
'nowiki_sample' => 'Nhập dòng chữ không theo định dạng wiki vào đây',
'nowiki_tip' => 'Không theo định dạng wiki',
'image_sample' => 'Ví dụ.jpg',
@@ -872,7 +917,7 @@ hoặc [{{fullurl:{{FULLPAGENAME}}|action=edit}} sửa đổi trang này]</span>
'noarticletext-nopermission' => 'Trang này hiện đang trống.
Bạn có thể [[Special:Search/{{PAGENAME}}|tìm kiếm tựa trang này]] tại các trang khác,
hoặc <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} tìm kiếm các nhật trình liên quan]</span>.',
-'userpage-userdoesnotexist' => 'Tài khoản mang tên “$1†chưa được đăng ký. Xin hãy kiểm tra lại nếu bạn muốn tạo/sửa trang này.',
+'userpage-userdoesnotexist' => 'Tài khoản mang tên “<nowiki>$1</nowiki>†chưa được đăng ký. Xin hãy kiểm tra lại nếu bạn muốn tạo/sửa trang này.',
'userpage-userdoesnotexist-view' => 'Tài khoản “$1†chưa được đăng ký.',
'blocked-notice-logextract' => 'NgÆ°á»i dùng này hiện Ä‘ang bị cấm sá»­a đổi. Nhật trình cấm gần nhất được ghi ở dÆ°á»›i để tiện theo dõi:',
'clearyourcache' => "'''Ghi chú:''' Sau khi lưu trang, có thể bạn sẽ phải xóa bộ nhớ đệm của trình duyệt để xem các thay đổi.
@@ -907,6 +952,7 @@ Nếu vẫn không thành công, bạn hãy thử [[Special:UserLogout|đăng xu
'token_suffix_mismatch' => "'''Sửa đổi của bạn bị hủy bỠvì trình duyệt của bạn lẫn lộn các ký tự dấu trong số hiệu
sá»­a đổi. Việc hủy bá» này nhằm tránh ná»™i dung trang bị há»ng.
Äiá»u này thÆ°á»ng xảy ra khi bạn sá»­ dụng má»™t dịch vụ proxy vô danh trên web có vấn Ä‘á».'''",
+'edit_form_incomplete' => "'''Một số phần của biểu mẫu sửa đổi không tới được máy chủ. Hãy kiểm tra rằng các sửa đổi của bạn còn nguyên và thử lại.'''",
'editing' => 'Sửa đổi $1',
'editingsection' => 'Sửa đổi $1 (đỠmục)',
'editingcomment' => 'Sửa đổi $1 (đỠmục mới)',
@@ -1139,7 +1185,7 @@ Xin hãy kiểm tra nhật trình.',
# Suppression log
'suppressionlog' => 'Nhật trình ẩn giấu',
'suppressionlogtext' => 'Dưới đây là danh sách các tác vụ xóa và cấm liên quan đến nội dung mà các quản lý không nhìn thấy.
-Xem [[Special:IPBlockList|danh sách các IP bị cấm]] để xem danh sách các tác vụ cấm chỉ và cấm thông thÆ°á»ng hiện nay.',
+Xem [[Special:BlockList|danh sách các IP bị cấm]] để xem danh sách các tác vụ cấm chỉ và cấm thông thÆ°á»ng hiện nay.',
# History merging
'mergehistory' => 'Trộn lịch sử trang',
@@ -1246,12 +1292,13 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
'searchdisabled' => 'Chức năng tìm kiếm tại {{SITENAME}} đã bị tắt. Bạn có tìm kiếm bằng Google trong thá»i gian này. Chú ý rằng các chỉ mục từ {{SITENAME}} của chúng có thể đã lá»—i thá»i.',
# Quickbar
-'qbsettings' => 'Thanh công cụ',
-'qbsettings-none' => 'Không có',
-'qbsettings-fixedleft' => 'Cố định trái',
-'qbsettings-fixedright' => 'Cố định phải',
-'qbsettings-floatingleft' => 'Nổi bên trái',
-'qbsettings-floatingright' => 'Nổi bên phải',
+'qbsettings' => 'Thanh công cụ',
+'qbsettings-none' => 'Không có',
+'qbsettings-fixedleft' => 'Cố định trái',
+'qbsettings-fixedright' => 'Cố định phải',
+'qbsettings-floatingleft' => 'Nổi bên trái',
+'qbsettings-floatingright' => 'Nổi bên phải',
+'qbsettings-directionality' => 'Cố định, tùy theo hướng viết ngôn ngữ của bạn',
# Preferences page
'preferences' => 'Tùy chá»n',
@@ -1262,9 +1309,10 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
'changepassword' => 'Äổi mật khẩu',
'prefs-skin' => 'Hình dạng',
'skin-preview' => 'Xem thá»­',
-'prefs-math' => 'Công thức toán',
'datedefault' => 'Không quan tâm',
+'prefs-beta' => 'Tính năng beta',
'prefs-datetime' => 'Ngày tháng',
+'prefs-labs' => 'Tính năng phòng thí nghiệm',
'prefs-personal' => 'Thông tin cá nhân',
'prefs-rc' => 'Thay đổi gần đây',
'prefs-watchlist' => 'Theo dõi',
@@ -1286,8 +1334,6 @@ Xin hãy bảo đảm giữ vững tính liên tục của lịch sử trang.',
'columns' => 'Số cột:',
'searchresultshead' => 'Tìm kiếm',
'resultsperpage' => 'Số kết quả mỗi trang:',
-'contextlines' => 'Số hàng trong trang dùng để tìm ra kết quả:',
-'contextchars' => 'Số chữ trong một hàng kết quả:',
'stub-threshold' => 'Äịnh dạng <a href="#" class="stub">liên kết đến sÆ¡ khai</a> cho các trang ngắn hÆ¡n (byte):',
'stub-threshold-disabled' => 'Tắt',
'recentchangesdays' => 'Số ngày hiển thị trong thay đổi gần đây:',
@@ -1300,7 +1346,7 @@ Bất cứ ai biết được khóa trong ô này cÅ©ng có thể Ä‘á»c đượ
'savedprefs' => 'Äã lÆ°u các tùy chá»n cá nhân.',
'timezonelegend' => 'Múi giá»:',
'localtime' => 'GiỠhiện tại:',
-'timezoneuseserverdefault' => 'Sử dụng giỠmặc định của máy chủ',
+'timezoneuseserverdefault' => 'Sử dụng giỠmặc định của wiki ($1)',
'timezoneuseoffset' => 'Khác (cần ghi số giỠchênh lệch)',
'timezoneoffset' => 'Chênh giá»Â¹:',
'servertime' => 'GiỠmáy chủ:',
@@ -1350,8 +1396,8 @@ Thông tin này là công khai.',
'email' => 'Thư điện tử',
'prefs-help-realname' => 'Tên thật là không bắt buộc.
Nếu bạn đồng ý cung cấp, nó sẽ dùng để ghi nhận công lao của bạn.',
-'prefs-help-email' => 'Äịa chỉ thÆ° Ä‘iện tá»­ là tùy chá»n, nhÆ°ng nó giúp chúng tôi gá»­i cho bạn mật khẩu má»›i qua thÆ° Ä‘iện tá»­ nếu bạn quên mật khẩu của mình.
-Bạn cÅ©ng có thể lá»±a chá»n cho phép ngÆ°á»i khác liên lạc vá»›i bạn thông qua trang thành_viên hoặc thảo_luận_thành_viên mà không cần để lá»™ danh tính.',
+'prefs-help-email' => 'Äịa chỉ thÆ° Ä‘iện tá»­ là tùy chá»n, nhÆ°ng nó giúp chúng tôi gá»­i cho bạn mật khẩu má»›i qua thÆ° Ä‘iện tá»­ nếu bạn quên mật khẩu của mình.',
+'prefs-help-email-others' => 'Bạn cÅ©ng có thể lá»±a chá»n cho phép ngÆ°á»i khác liên lạc vá»›i bạn thông qua trang cá nhân hoặc trang thảo luận cá nhân mà không cần để lá»™ danh tính.',
'prefs-help-email-required' => 'Bắt buộc phải có địa chỉ e-mail.',
'prefs-info' => 'Thông tin cơ bản',
'prefs-i18n' => 'Quốc tế hóa',
@@ -1446,7 +1492,7 @@ Bạn cÅ©ng có thể lá»±a chá»n cho phép ngÆ°á»i khác liên lạc vá»›i bá
'right-deleterevision' => 'Xóa và phục hồi phiên bản nào đó của trang',
'right-deletedhistory' => 'Xem phần lịch sử đã xóa, mà không xem nội dung đi kèm',
'right-deletedtext' => 'Xem văn bản đã xóa và các thay đổi giữa phiên bản đã xóa',
-'right-browsearchive' => 'Tìm những trang đã xóa',
+'right-browsearchive' => 'Tìm kiếm trang đã bị xóa',
'right-undelete' => 'Phục hồi trang',
'right-suppressrevision' => 'Xem lại và phục hồi phiên bản mà Sysop không thấy',
'right-suppressionlog' => 'Xem nhật trình riêng tư',
@@ -1462,7 +1508,7 @@ Bạn cÅ©ng có thể lá»±a chá»n cho phép ngÆ°á»i khác liên lạc vá»›i bá
'right-editusercssjs' => 'Sá»­a tập tin CSS và JS của ngÆ°á»i dùng khác',
'right-editusercss' => 'Sá»­a tập tin CSS của ngÆ°á»i dùng khác',
'right-edituserjs' => 'Sá»­a tập tin JS của ngÆ°á»i dùng khác',
-'right-rollback' => 'Nhanh chóng lùi tất cả sửa đổi của thành viên cuối cùng sửa đổi tại trang nào đó',
+'right-rollback' => 'Nhanh chóng lùi tất cả sá»­a đổi của ngÆ°á»i dùng cuối cùng sá»­a đổi trang nào đó',
'right-markbotedits' => 'Äánh dấu sá»­a đổi phục hồi là sá»­a đổi bot',
'right-noratelimit' => 'Không bị ảnh hưởng bởi mức giới hạn tần suất sử dụng',
'right-import' => 'Nhập trang từ wiki khác',
@@ -1476,15 +1522,15 @@ Bạn cÅ©ng có thể lá»±a chá»n cho phép ngÆ°á»i khác liên lạc vá»›i bá
'right-userrights' => 'Sá»­a tất cả quyá»n thành viên',
'right-userrights-interwiki' => 'Sá»­a quyá»n thành viên của các thành viên ở các wiki khác',
'right-siteadmin' => 'Khóa và mở khóa cơ sở dữ liệu',
-'right-reset-passwords' => 'Tái tạo mật khẩu của thành viên khác',
'right-override-export-depth' => 'Xuất trang kèm theo các trang được liên kết đến với độ sâu tối đa là 5',
'right-sendemail' => 'Gửi thư điện tử cho thành viên khác',
# 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ấp của thành viên $1 từ $2 thành $3',
-'rightsnone' => '(không có)',
+'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ấp của thành viên $1 từ $2 thành $3',
+'rightslogentry-autopromote' => 'được tự động phong cấp từ $2 đến $3',
+'rightsnone' => '(không có)',
# Associated actions - in the sentence "You do not have permission to X"
'action-read' => 'Ä‘á»c trang này',
@@ -1505,7 +1551,7 @@ Bạn cÅ©ng có thể lá»±a chá»n cho phép ngÆ°á»i khác liên lạc vá»›i bá
'action-delete' => 'xóa trang này',
'action-deleterevision' => 'xóa phiên bản này',
'action-deletedhistory' => 'xem các phiên bản đã bị xóa của trang này',
-'action-browsearchive' => 'tìm trong các trang đã bị xóa',
+'action-browsearchive' => 'tìm kiếm trang đã bị xóa',
'action-undelete' => 'phục hồi trang này',
'action-suppressrevision' => 'duyệt và phục hồi phiên bản bị giấu này',
'action-suppressionlog' => 'xem nhật trình ẩn giấu này',
@@ -1532,7 +1578,7 @@ Bạn cÅ©ng có thể lá»±a chá»n cho phép ngÆ°á»i khác liên lạc vá»›i bá
'recentchanges-label-minor' => 'Äây là má»™t sá»­a đổi nhá»',
'recentchanges-label-bot' => 'Sửa đổi này do bot thực hiện',
'recentchanges-label-unpatrolled' => 'Sửa đổi này chưa được tuần tra',
-'rcnote' => "Dưới đây là {{PLURAL:$1|'''1''' thay đổi|'''$1''' thay đổi gần nhất}} trong {{PLURAL:$2|ngày qua|'''$2''' ngày qua}}, tính tới $5, $4.",
+'rcnote' => "Dưới đây là {{PLURAL:$1|thay đổi '''duy nhất'''|'''$1''' thay đổi gần nhất}} trong {{PLURAL:$2|ngày qua|'''$2''' ngày qua}}, tính tới $5 lúc $4.",
'rcnotefrom' => "Thay đổi từ '''$2''' (hiển thị tối đa '''$1''' thay đổi).",
'rclistfrom' => 'Hiển thị các thay đổi từ $1.',
'rcshowhideminor' => '$1 sá»­a đổi nhá»',
@@ -1607,13 +1653,13 @@ Xem [[Special:NewFiles|trang trưng bày các tập tin mới]] để xem trực
'minlength1' => 'Tên tập tin phải có ít nhất một ký tự.',
'illegalfilename' => 'Tên tập tin “$1†có chứa ký tự không được phép dùng cho tựa trang. Xin hãy đổi tên và tải lên lại.',
'badfilename' => 'Tên tập tin đã được đổi thành “$1â€.',
-'filetype-mime-mismatch' => 'Phần mở rộng của tập tin không phù hợp kiểu MIME.',
+'filetype-mime-mismatch' => 'Phần mở rá»™ng của tập tin (“.$1â€) không phù hợp kiểu MIME được nhận ra ($2).',
'filetype-badmime' => 'Không thể tải lên các tập tin có kiểu MIME “$1â€.',
'filetype-bad-ie-mime' => 'Không thể tải tập tin này lên vì Internet Explorer sẽ nhận diện tập tin này là “$1â€, má»™t định dạng tập tin tiá»m ẩn nguy hiểm và không được cho phép.',
'filetype-unwanted-type' => "'''“.$1â€''' là định dạng tập tin không được trông đợi.
{{PLURAL:$3|Loại|Những loại}} tập tin thích hợp hơn là $2.",
-'filetype-banned-type' => "'''“.$1â€''' là định dạng tập tin không được chấp nhận.
-{{PLURAL:$3|Loại tập tin|Những loại tập tin}} được chấp nhận là $2.",
+'filetype-banned-type' => "{{PLURAL:$4|Äịnh dạng|Các định dạng}} '''“.$1â€''' không được chấp nhận.
+Chỉ chấp nhận {{PLURAL:$3|loại tập tin|các loại tập tin}} sau: $2.",
'filetype-missing' => 'Tập tin không có phần mở rá»™ng (ví dụ “.jpgâ€).',
'empty-file' => 'Bạn đã gửi tập tin rỗng.',
'file-too-large' => 'Bạn đã gửi tập tin lớn quá hạn.',
@@ -1629,6 +1675,7 @@ Xem [[Special:NewFiles|trang trưng bày các tập tin mới]] để xem trực
'large-file' => 'Các tập tin được khuyến cáo không được lớn hơn $1; tập tin này lớn đến $2.',
'largefileserver' => 'Tập tin này quá lớn so với khả năng phục vụ của máy chủ.',
'emptyfile' => 'Tập tin bạn vừa má»›i tải lên có vẻ trống không. Äiá»u này có thể xảy ra khi bạn đánh sai tên tập tin. Xin hãy chắc chắn rằng bạn thật sá»± muốn tải lên tập tin này.',
+'windows-nonascii-filename' => 'Wiki này không hỗ trợ ký tự đặc biệt trong tên tập tin.',
'fileexists' => "Một tập tin với tên này đã tồn tại, xin hãy kiểm tra lại '''<tt>[[:$1]]</tt>''' nếu bạn không chắc bạn có muốn thay đổi nó hay không.
[[$1|thumb]]",
'filepageexists' => "Trang miêu tả của tập tin này đã được tạo tại '''<tt>[[:\$1]]</tt>''', nhưng hiện không có tập tin nào có tên như vậy.
@@ -1663,6 +1710,8 @@ Nếu bạn vẫn muốn tải tập tin của bạn lên, xin hãy quay lại v
'php-uploaddisabledtext' => 'Việc tải tập tin trong PHP đã bị tắt. Xin hãy kiểm tra lại thiết lập file_uploads.',
'uploadscripted' => 'Tập tin này có chứa mã HTML hoặc script có thể khiến trình duyệt web thông dịch sai.',
'uploadvirus' => 'Tập tin có virút! Chi tiết: $1',
+'uploadjava' => 'Tập tin ZIP này chứa một tập tin Java .class.
+Không được phép tải lên các tập tin Java, bởi vì chúng có thể vượt qua các hạn chế bảo mật.',
'upload-source' => 'Tập tin gốc',
'sourcefilename' => 'Tên tập tin nguồn:',
'sourceurl' => 'URL gốc:',
@@ -1672,9 +1721,6 @@ Nếu bạn vẫn muốn tải tập tin của bạn lên, xin hãy quay lại v
'upload-options' => 'Tùy chá»n tải lên',
'watchthisupload' => 'Theo dõi tập tin này',
'filewasdeleted' => 'Một tên với tên này đã được tải lên trước đã rồi sau đó bị xóa. Bạn nên kiểm tra lại $1 trước khi tải nó lên lại lần nữa.',
-'upload-wasdeleted' => "'''Cảnh báo: Bạn đang tải lên một tập tin từng bị xóa trước đây.'''
-
-Bạn nên cân nhắc trong việc tiếp tục tải lên tập tin này. Nhật trình xóa của tập tin được đưa ra dưới đây để tiện theo dõi:",
'filename-bad-prefix' => "Tên cho tập tin mà bạn Ä‘ang tải lên bắt đầu bằng '''“$1â€''', đây không phải là dạng tên tiêu biểu có tính chất miêu tả do các máy chụp ảnh số tá»± Ä‘á»™ng đặt. Xin hãy chá»n má»™t tên có tính chất miêu tả và gợi nhá»› hÆ¡n cho tập tin của bạn.",
'filename-prefix-blacklist' => ' #<!-- xin để nguyên hàng này --> <pre>
# Cú pháp như sau:
@@ -1712,12 +1758,29 @@ Nếu vẫn còn bị lỗi, xin hãy liên hệ với một [[Special:ListUsers
'upload-unknown-size' => 'Không rõ kích thước',
'upload-http-error' => 'Xảy ra lỗi HTTP: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => 'Lỗi khi mở tập tin để kiểm tra tập tin ZIP.',
+'zip-wrong-format' => 'Tập tin này không phải là tập tin ZIP.',
+'zip-bad' => 'Tập tin ZIP này bị há»ng hoặc không mở được vì lý do khác.
+Không thể kiểm tra nó vỠbảo mật.',
+'zip-unsupported' => 'Tập tin ZIP này sử dụng các tính năng ZIP không được hỗ trợ bởi MediaWiki.
+Không thể kiểm tra nó vỠbảo mật.',
+
+# Special:UploadStash
+'uploadstash' => 'Hàng đợi tải lên',
+'uploadstash-summary' => 'Äây là các tập tin mà bạn đã hoặc Ä‘ang tải lên nhÆ°ng chÆ°a xuất bản tại wiki. Chỉ bạn có thể xem các tập tin này.',
+'uploadstash-clear' => 'Xóa các tập tin đợi tải lên',
+'uploadstash-nofiles' => 'Bạn không có tập tin trong hàng đợi tải lên.',
+'uploadstash-badtoken' => 'Tác vụ bị thất bại, có lẽ vì thông tin đăng nhập của bạn đã hết hạn. Hãy thử lại.',
+'uploadstash-errclear' => 'Việc dá»n sạch các tập tin bị thất bại.',
+'uploadstash-refresh' => 'Làm mới danh sách tập tin',
+
# img_auth script messages
'img-auth-accessdenied' => 'Không cho phép truy cập',
'img-auth-nopathinfo' => 'Thiếu PATH_INFO.
Máy chủ của bạn không được thiết lập để truyá»n thông tin này.
Có thể do nó dựa trên CGI và không hỗ trợ img_auth.
-Xem http://www.mediawiki.org/wiki/Manual:Image_Authorization.',
+Xem [//www.mediawiki.org/wiki/Manual:Image_Authorization hÆ°á»›ng dẫn Ä‘iá»u khiển truy cập hình ảnh].',
'img-auth-notindir' => 'ÄÆ°á»ng dẫn yêu cầu không nằm trong thÆ° mục cấu hình tải lên.',
'img-auth-badtitle' => 'Không thể tạo tá»±a Ä‘á» hợp lệ từ “$1â€.',
'img-auth-nologinnWL' => 'Bạn chưa đăng nhập và “$1†không nằm trong danh sách trắng.',
@@ -1792,7 +1855,7 @@ Danh sách dưới đây chỉ hiển thị {{PLURAL:$1|liên kết đầu tiên
Có [[Special:WhatLinksHere/$2|danh sách đầy đủ ở đây]].',
'nolinkstoimage' => 'Không có trang nào chứa liên kết đến hình.',
'morelinkstoimage' => 'Xem [[Special:WhatLinksHere/$1|thêm liên kết]] đến tập tin này.',
-'redirectstofile' => '{{PLURAL:$1|Tập tin|$1 tập tin}} sau chuyển hướng đến tập tin này:',
+'linkstoimage-redirect' => '$1 (tập tin đổi hướng) $2',
'duplicatesoffile' => '{{PLURAL:$1|Tập tin sau|$1 tập tin sau}} là bản sao của tập tin này ([[Special:FileDuplicateSearch/$2|chi tiết]]):',
'sharedupload' => 'Tập tin này đặt tại $1 và các dự án khác có thể dùng chúng.',
'sharedupload-desc-there' => 'Tập tin này đặt tại $1 và các dự án khác có thể sử dụng chúng.
@@ -1883,16 +1946,17 @@ Hãy nhớ kiểm tra các liên kết khác đến bản mẫu trước khi xó
'statistics-users-active-desc' => 'Những thành viên đã hoạt động trong {{PLURAL:$1|ngày|$1 ngày}} qua',
'statistics-mostpopular' => 'Các trang được xem nhiá»u nhất',
-'disambiguations' => 'Trang định hướng',
+'disambiguations' => 'Trang liên kết đến trang định hướng',
'disambiguationspage' => 'Template:disambig',
'disambiguations-text' => "Các trang này có liên kết đến một '''trang định hướng'''. Nên sửa các liên kết này để chỉ đến một trang đúng nghĩa hơn.<br />Các trang định hướng là trang sử dụng những bản mẫu được liệt kê ở [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'Äổi hÆ°á»›ng kép',
-'doubleredirectstext' => 'Trang này liệt kê các trang đổi hướng đến một trang đổi hướng khác.
+'doubleredirects' => 'Äổi hÆ°á»›ng kép',
+'doubleredirectstext' => 'Trang này liệt kê các trang đổi hướng đến một trang đổi hướng khác.
Má»—i hàng có chứa các liên kết đến trang đổi hÆ°á»›ng thứ nhất và thứ hai, cÅ©ng nhÆ° mục tiêu của trang đổi hÆ°á»›ng thứ hai, thÆ°á»ng là trang đích “thá»±c sá»±â€, là nÆ¡i mà trang đổi hÆ°á»›ng đầu tiên nên trỠđến.
Các mục <del>bị gạch bá»</del> là các trang đã được sá»­a.',
-'double-redirect-fixed-move' => '[[$1]] đã được đổi tên, giỠnó là trang đổi hướng đến [[$2]]',
-'double-redirect-fixer' => 'NgÆ°á»i sá»­a trang đổi hÆ°á»›ng',
+'double-redirect-fixed-move' => '[[$1]] đã được đổi tên, giỠnó là trang đổi hướng đến [[$2]]',
+'double-redirect-fixed-maintenance' => 'Giải quyết đổi hướng kép từ [[$1]] đến [[$2]].',
+'double-redirect-fixer' => 'NgÆ°á»i sá»­a trang đổi hÆ°á»›ng',
'brokenredirects' => 'Äổi hÆ°á»›ng sai',
'brokenredirectstext' => 'Các trang đổi hướng sau đây liên kết đến trang không tồn tại:',
@@ -1969,6 +2033,7 @@ Xin lÆ°u ý là các trang Web bên ngoài có thể liên kết đến má»™t tá
'pager-newer-n' => '{{PLURAL:$1|1|$1}} mới hơn',
'pager-older-n' => '{{PLURAL:$1|1|$1}} cũ hơn',
'suppress' => 'Giám sát viên',
+'querypage-disabled' => 'Trang đặc biệt này bị tắt vì lý do hiệu suất.',
# Book sources
'booksources' => 'Nguồn sách',
@@ -1978,8 +2043,8 @@ Xin lÆ°u ý là các trang Web bên ngoài có thể liên kết đến má»™t tá
'booksources-invalid-isbn' => 'ISBN mà bạn cung cấp dÆ°á»ng nhÆ° không đúng; xin hãy kiểm tra lại xem có lá»—i gì khi sao chép từ ná»™i dung gốc hay không.',
# Special:Log
-'specialloguserlabel' => 'Thành viên:',
-'speciallogtitlelabel' => 'Tên trang:',
+'specialloguserlabel' => 'NgÆ°á»i thá»±c hiện:',
+'speciallogtitlelabel' => 'Mục tiêu (tiêu Ä‘á» hoặc ngÆ°á»i dùng):',
'log' => 'Nhật trình',
'all-logs-page' => 'Tất cả các nhật trình công khai',
'alllogstext' => 'Hiển thị tất cả các nhật trình đang có của {{SITENAME}} chung với nhau.
@@ -2019,11 +2084,11 @@ Xem thêm [[Special:WantedCategories|thể loại cần thiết]].',
'sp-deletedcontributions-contribs' => 'đóng góp',
# Special:LinkSearch
-'linksearch' => 'Liên kết ngoài',
+'linksearch' => 'Tìm kiếm liên kết ngoài',
'linksearch-pat' => 'Mẫu liên kết:',
'linksearch-ns' => 'Không gian tên:',
'linksearch-ok' => 'Tìm kiếm',
-'linksearch-text' => "Có thể sá»­ dụng ký tá»± đại diện (''wildcard'') ở đầu tiên, ví dụ “*.wikipedia.orgâ€.<br />Hiện há»— trợ các giao thức: <tt>$1</tt>",
+'linksearch-text' => "Bạn có thể sá»­ dụng ký tá»± đại diện (''wildcard''), ví dụ “*.wikipedia.orgâ€; ít nhất phải có tên miá»n cấp cao nhất, thí dụ “*.orgâ€.<br />Các giao thức này được há»— trợ: <tt>$1</tt>; vui lòng không Ä‘Æ°a giao thức vào truy vấn.",
'linksearch-line' => '$1 được liên kết từ $2',
'linksearch-error' => "Chỉ được sá»­ dụng ký tá»± đại diện (''wildcard'') vào đầu tên miá»n (''hostname'').",
@@ -2084,6 +2149,10 @@ Có [[{{MediaWiki:Listgrouprights-helppage}}|thông tin thêm]] vỠtừng nhó
'noemailtext' => 'NgÆ°á»i này không cung cấp má»™t địa chỉ thÆ° hợp lệ.',
'nowikiemailtitle' => 'Không cho phép thư điện tử',
'nowikiemailtext' => 'Thành viên này quyết định không nhận thư từ các thành viên khác.',
+'emailnotarget' => 'NgÆ°á»i nhận không tồn tại hoặc tên hiệu không hợp lệ.',
+'emailtarget' => 'Nhập tên hiệu của ngÆ°á»i nhận',
+'emailusername' => 'Tên ngÆ°á»i dùng:',
+'emailusernamesubmit' => 'Gá»­i',
'email-legend' => 'Gửi thư điện tử đến thành viên {{SITENAME}} khác',
'emailfrom' => 'NgÆ°á»i gá»­i:',
'emailto' => 'NgÆ°á»i nhận:',
@@ -2108,11 +2177,11 @@ Có [[{{MediaWiki:Listgrouprights-helppage}}|thông tin thêm]] vỠtừng nhó
'watchlistanontext' => 'Xin hãy $1 để xem hay sửa đổi các trang được theo dõi.',
'watchnologin' => 'Chưa đăng nhập',
'watchnologintext' => 'Bạn phải [[Special:UserLogin|đăng nhập]] mới sửa đổi được danh sách theo dõi.',
-'addedwatch' => 'Äã thêm vào danh sách theo dõi',
+'addwatch' => 'Thêm vào danh sách theo dõi',
'addedwatchtext' => 'Trang “<nowiki>$1</nowiki>†đã được cho vào [[Special:Watchlist|danh sách theo dõi]]. Những sửa đổi đối với trang này và trang thảo luận của nó sẽ được liệt kê, và được <b>tô đậm</b> trong [[Special:RecentChanges|danh sách các thay đổi mới]].
Nếu bạn muốn cho trang này ra khá»i danh sách theo dõi, nhấn vào "Ngừng theo dõi" ở trên.',
-'removedwatch' => 'Äã gỡ khá»i danh sách theo dõi',
+'removewatch' => 'Gỡ khá»i danh sách theo dõi',
'removedwatchtext' => 'Trang “[[:$1]]†đã được Ä‘Æ°a ra khá»i [[Special:Watchlist|danh sách theo dõi]] của bạn.',
'watch' => 'Theo dõi',
'watchthispage' => 'Theo dõi trang này',
@@ -2133,8 +2202,9 @@ Nếu bạn muốn cho trang này ra khá»i danh sách theo dõi, nhấn vào "N
'watchlist-options' => 'Tùy chá»n vá» danh sách theo dõi',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => 'Äang theo dõi…',
-'unwatching' => 'Äang ngừng theo dõi…',
+'watching' => 'Äang theo dõi…',
+'unwatching' => 'Äang ngừng theo dõi…',
+'watcherrortext' => 'Lá»—i xảy ra khi theo dõi hoặc ngừng theo dõi “$1â€.',
'enotif_mailer' => 'Thông báo của {{SITENAME}}',
'enotif_reset' => 'Äánh dấu đã xem má»i trang',
@@ -2166,16 +2236,16 @@ Bạn cũng có thể thiết lập lại việc nhắc nhở cho tất cả cá
--
Äể thay đổi các thiết lập thÆ° Ä‘iện tá»­ thông báo, má»i xem:
-{{fullurl:{{#special:Preferences}}}}
+{{canonicalurl:{{#special:Preferences}}}}
Äể thay đổi các thiết lập danh sách theo dõi, má»i xem:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Äể xóa trang ra khá»i danh sách theo dõi của bạn, má»i xem:
$UNWATCHURL
Phản hồi và cần sự hỗ trợ:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Xóa trang',
@@ -2191,7 +2261,7 @@ Phản hồi và cần sự hỗ trợ:
Xin xác nhận việc bạn định làm, và hiểu rõ những hệ lụy của nó, và bạn thực hiện nó theo đúng đúng [[{{MediaWiki:Policy-url}}|quy định]].',
'actioncomplete' => 'Äã thá»±c hiện xong',
'actionfailed' => 'Tác động bị thất bại',
-'deletedtext' => 'Äã xóa “<nowiki>$1</nowiki>â€. Xem danh sách các xóa bá» gần nhất tại $2.',
+'deletedtext' => 'Äã xóa “$1â€. Xem danh sách các xóa bá» gần nhất tại $2.',
'deletedarticle' => 'đã xóa “[[$1]]â€',
'suppressedarticle' => 'đã giấu "[[$1]]"',
'dellogpage' => 'Nhật trình xóa',
@@ -2247,7 +2317,7 @@ quay vỠphiên bản cuối của $2.',
'protect_expiry_invalid' => 'Thá»i hạn không hợp lệ.',
'protect_expiry_old' => 'Thá»i hạn đã qua.',
'protect-unchain-permissions' => 'Thay đổi các tùy chá»n khóa trang khác',
-'protect-text' => "Bạn có thể xem và đổi kiểu khóa trang '''<nowiki>$1</nowiki>''' ở đây.",
+'protect-text' => "Bạn có thể xem và đổi kiểu khóa trang '''$1''' ở đây.",
'protect-locked-blocked' => "Bạn không thể đổi mức khóa khi bị cấm. Äây là trạng thái
hiện tại của trang '''$1''':",
'protect-locked-dblock' => "Hiện không thể đổi mức khóa do cơ sở dữ liệu bị khóa.
@@ -2300,8 +2370,8 @@ hiện tại của trang '''$1''':",
'viewdeletedpage' => 'Xem các trang bị xóa',
'undeletepagetext' => '{{PLURAL:$1|Trang sau|$1 trang sau}} đã bị xóa nhưng vẫn nằm trong kho lưu trữ và có thể phục hồi được. Kho lưu trữ sẽ được xóa định kỳ.',
'undelete-fieldset-title' => 'Phục hồi phiên bản',
-'undeleteextrahelp' => "Äể phục hồi toàn bá»™ lịch sá»­ trang, hãy để trống các há»™p kiểm và bấm nút '''''Phục hồi'''''.
-Äể thá»±c hiện phục hồi có chá»n lá»c, hãy đánh dấu vào há»™p kiểm của các phiên bản muốn phục hồi, rồi bấm nút '''''Phục hồi'''''.
+'undeleteextrahelp' => "Äể phục hồi toàn bá»™ lịch sá»­ trang, hãy để trống các há»™p kiểm và bấm nút '''''{{int:undeletebtn}}'''''.
+Äể thá»±c hiện phục hồi có chá»n lá»c, hãy đánh dấu vào há»™p kiểm của các phiên bản muốn phục hồi, rồi bấm nút '''''{{int:undeletebtn}}'''''.
Bấm nút '''''Tẩy trống''''' sẽ tẩy trống ô lý do và tất cả các hộp kiểm.",
'undeleterevisions' => '$1 {{PLURAL:$1|bản|bản}} đã được lưu',
'undeletehistory' => 'Nếu bạn phục hồi trang này, tất cả các phiên bản của nó cũng sẽ được phục hồi vào lịch sử của trang.
@@ -2346,9 +2416,12 @@ $1',
'undelete-show-file-submit' => 'Có',
# Namespace form on various pages
-'namespace' => 'Không gian tên:',
-'invert' => 'Äảo ngược lá»±a chá»n',
-'blanknamespace' => '(Chính)',
+'namespace' => 'Không gian tên:',
+'invert' => 'Äảo ngược lá»±a chá»n',
+'tooltip-invert' => 'Ẩn các thay đổi trong các không gian tên được chá»n và tÆ°Æ¡ng ứng',
+'namespace_association' => 'Không gian tên cùng đôi',
+'tooltip-namespace_association' => 'CÅ©ng ẩn không gian tên thảo luận hoặc ná»™i dung ứng vá»›i không gian được chá»n',
+'blanknamespace' => '(Chính)',
# Contributions
'contributions' => 'Äóng góp của thành viên',
@@ -2396,13 +2469,15 @@ $1',
'whatlinkshere-filters' => 'Bá»™ lá»c',
# Block/unblock
+'autoblockid' => 'Cấm tự động #$1',
+'block' => 'Cấm ngÆ°á»i dùng',
+'unblock' => 'Bá» cấm ngÆ°á»i dùng',
'blockip' => 'Cấm ngÆ°á»i dùng',
'blockip-title' => 'Cấm ngÆ°á»i dùng',
'blockip-legend' => 'Cấm ngÆ°á»i dùng',
'blockiptext' => 'Dùng mẫu dưới để cấm một địa chỉ IP hoặc thành viên không được viết trang.
Äiá»u này chỉ nên làm để tránh phá hoại, và phải theo [[{{MediaWiki:Policy-url}}|quy định]].
Äiá»n vào lý do cụ thể ở dÆ°á»›i (ví dụ, chỉ ra trang nào bị phá hoại).',
-'ipaddress' => 'Äịa chỉ IP:',
'ipadressorusername' => 'Äịa chỉ IP hay tên thành viên:',
'ipbexpiry' => 'Thá»i hạn:',
'ipbreason' => 'Lý do:',
@@ -2419,7 +2494,7 @@ $1',
** Tạo nhiá»u trang má»›i vi phạm bản quyá»n, bá» qua thảo luận và cảnh báo
** Truyá»n nhiá»u hình ảnh thiếu nguồn gốc hoặc bản quyá»n
** Con rối của thành viên bị cấm',
-'ipbanononly' => 'Chỉ cấm ngÆ°á»i dùng vô danh',
+'ipb-hardblock' => 'Ngăn không cho thành viên đã đăng nhập sửa đổi từ địa chỉ IP này',
'ipbcreateaccount' => 'Cấm mở tài khoản',
'ipbemailban' => 'Không cho gửi email',
'ipbenableautoblock' => 'Tự động cấm các địa chỉ IP mà thành viên này sử dụng',
@@ -2430,12 +2505,15 @@ $1',
'ipbotherreason' => 'Lý do khác',
'ipbhidename' => 'Ẩn tên ngÆ°á»i dùng ra khá»i các sá»­a đổi và danh sách',
'ipbwatchuser' => 'Theo dõi trang thành viên và thảo luận thành viên của thành viên này',
-'ipballowusertalk' => 'Cho phép ngÆ°á»i dùng sá»­a trang thảo luận của chính há» trong khi bị khóa',
+'ipb-disableusertalk' => 'Không cho ngÆ°á»i dùng này sá»­a trang thảo luận thành viên của há» khi bị cấm',
'ipb-change-block' => 'Cấm ngÆ°á»i dùng này lại theo các thiết lập này',
+'ipb-confirm' => 'Xác nhận cấm',
'badipaddress' => 'Äịa chỉ IP không hợp lệ',
'blockipsuccesssub' => 'Cấm thành công',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] đã bị cấm.
<br />Xem lại những lần cấm tại [[Special:IPBlockList|danh sách cấm]].',
+'ipb-blockingself' => 'Bạn sẽ tự bỠcấm cho mình! Bạn có chắc chắn muốn làm vậy không?',
+'ipb-confirmhideuser' => 'Bạn sẽ cấm ngÆ°á»i dùng vá»›i tùy chá»n “ẩn ngÆ°á»i dùngâ€. Bạn có chắc chắn muốn dá»i tên ngÆ°á»i dùng khá»i tất cả má»i danh sách và nhật trình?',
'ipb-edit-dropdown' => 'Sửa đổi lý do cấm',
'ipb-unblock-addr' => 'BỠcấm $1',
'ipb-unblock' => 'BỠcấm thành viên hay địa chỉ IP',
@@ -2445,17 +2523,23 @@ $1',
'unblockiptext' => 'Sá»­ dụng mẫu sau để phục hồi lại quyá»n sá»­a đổi đối vá»›i má»™t địa chỉ IP hoặc tên thành viên đã bị cấm trÆ°á»›c đó.',
'ipusubmit' => 'BỠcấm',
'unblocked' => '[[User:$1|$1]] đã hết bị cấm',
+'unblocked-range' => '$1 đã được bỠcấm',
'unblocked-id' => '$1 đã hết bị cấm',
+'blocklist' => 'Những ngÆ°á»i dùng bị cấm',
'ipblocklist' => 'Những ngÆ°á»i dùng bị cấm',
'ipblocklist-legend' => 'Tìm một thành viên bị cấm',
-'ipblocklist-username' => 'Tên thành viên hoặc địa chỉ IP:',
-'ipblocklist-sh-userblocks' => '$1 tác vụ cấm tài khoản',
-'ipblocklist-sh-tempblocks' => '$1 tác vụ cấm có thá»i hạn',
-'ipblocklist-sh-addressblocks' => '$1 tác vụ cấm IP dứt khoát',
+'blocklist-userblocks' => 'Ẩn tác vụ cấm tài khoản',
+'blocklist-tempblocks' => 'Ẩn tác vụ cấm có thá»i hạn',
+'blocklist-addressblocks' => 'Ẩn tác vụ cấm địa chỉ IP dứt khoát',
+'blocklist-timestamp' => 'Thá»i gian',
+'blocklist-target' => 'NgÆ°á»i dùng',
+'blocklist-expiry' => 'Thá»i hạn',
+'blocklist-by' => 'Bảo quản viên cấm',
+'blocklist-params' => 'Tham số cấm',
+'blocklist-reason' => 'Lý do',
'ipblocklist-submit' => 'Tìm kiếm',
'ipblocklist-localblock' => 'Cấm tại wiki này',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Lần|Các lần}} cấm khác',
-'blocklistline' => '$1, $2 đã cấm $3 (hết hạn $4)',
'infiniteblock' => 'vô hạn',
'expiringblock' => 'hết hạn vào ngày $1 lúc $2',
'anononlyblock' => 'chỉ cấm vô danh',
@@ -2475,7 +2559,7 @@ $1',
'blocklog-showsuppresslog' => 'Thành viên trước đây đã từng bị cấm và ẩn đi. Nhật trình ẩn được ghi dưới đây để tiện theo dõi:',
'blocklogentry' => 'đã cấm [[$1]] vá»›i thá»i hạn là $2 $3',
'reblock-logentry' => 'thay đổi thiết lập cấm [[$1]] thành thá»i hạn $2 $3',
-'blocklogtext' => 'Äây là nhật trình ghi lại những lần cấm và bá» cấm. Các địa chỉ IP bị cấm tá»± Ä‘á»™ng không được liệt kê ở đây. Xem thêm [[Special:IPBlockList|danh sách cấm]] để có danh sách cấm và cấm hẳn hiện tại.',
+'blocklogtext' => 'Äây là nhật trình ghi lại những lần cấm và bá» cấm. Các địa chỉ IP bị cấm tá»± Ä‘á»™ng không được liệt kê ở đây. Xem thêm [[Special:BlockList|danh sách cấm]] để có danh sách cấm và cấm hẳn hiện tại.',
'unblocklogentry' => 'đã bá» cấm “$1â€',
'block-log-flags-anononly' => 'chỉ cấm ngÆ°á»i dùng vô danh',
'block-log-flags-nocreate' => 'cấm mở tài khoản',
@@ -2489,9 +2573,9 @@ $1',
'ipb_expiry_temp' => 'Cấm tên ngÆ°á»i dùng ẩn nên là cấm vô hạn.',
'ipb_hide_invalid' => 'Không thể ẩn tài khoản này; có thể do nó có quá nhiá»u sá»­a đổi.',
'ipb_already_blocked' => '“$1†đã bị cấm rồi',
-'ipb-needreblock' => '== Äã bị cấm ==
-$1 đã bị cấm. Bạn có muốn thay đổi các thiết lập?',
+'ipb-needreblock' => '$1 đã bị cấm. Bạn có muốn thay đổi các thiết lập?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Tác vụ cấm|Các tác vụ cấm}} khác',
+'unblock-hideuser' => 'Bạn không thể bỠcấm thành viên này vì tên đăng nhập của hỠđã bị ẩn.',
'ipb_cant_unblock' => 'Lá»—i: Không tìm được ID cấm $1. Äịa chỉ IP này có thể đã được bá» cấm.',
'ipb_blocked_as_range' => 'Lá»—i: Äịa chỉ IP $1 không bị cấm trá»±c tiếp và do đó không thể bá» cấm. Tuy nhiên, nó bị cấm do là má»™t bá»™ phận của dải IP $2, bạn có thể bá» cấm dải này.',
'ip_range_invalid' => 'Dải IP không hợp lệ.',
@@ -2528,6 +2612,7 @@ Xin hãy xác nhận đây là Ä‘iá»u bạn định làm.',
'unlockdbsuccesstext' => 'Cơ sở dữ liệu đã được mở khóa.',
'lockfilenotwritable' => 'Tập tin khóa của cÆ¡ sở dữ liệu không cho phép ghi. Äể khóa hay mở khóa cÆ¡ sở dữ liệu, máy chủ web phải có khả năng ghi tập tin.',
'databasenotlocked' => 'Cơ sở dữ liệu không bị khóa.',
+'lockedbyandtime' => '($1 khóa vào $2 lúc $3)',
# Move page
'move-page' => 'Di chuyển $1',
@@ -2650,7 +2735,7 @@ Trong trÆ°á»ng hợp sau bạn cÅ©ng có thể dùng má»™t liên kết, ví dá»
'allmessagesdefault' => 'Nội dung mặc định',
'allmessagescurrent' => 'Ná»™i dung hiện thá»i',
'allmessagestext' => 'Äây là toàn bá»™ thông báo hệ thống có trong không gian tên MediaWiki.
-Má»i vào [http://www.mediawiki.org/wiki/Localisation Äịa phÆ°Æ¡ng hóa MediaWiki] và [http://translatewiki.net translatewiki.net] nếu bạn muốn đóng góp dịch chung cả MediaWiki.',
+Má»i vào [//www.mediawiki.org/wiki/Localisation Äịa phÆ°Æ¡ng hóa MediaWiki] và [//translatewiki.net translatewiki.net] nếu bạn muốn đóng góp dịch chung cả MediaWiki.',
'allmessagesnotsupportedDB' => "Trang này không dùng được vì biến '''\$wgUseDatabaseMessages''' đã bị tắt.",
'allmessages-filter-legend' => 'Bá»™ lá»c',
'allmessages-filter' => 'Lá»c theo tình trạng sá»­a đổi:',
@@ -2788,35 +2873,42 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
'tooltip-summary' => 'Hãy nhập câu tóm lược',
# Stylesheets
-'common.css' => '/* Mã CSS đặt ở đây sẽ áp dụng cho má»i hình dạng */',
-'standard.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng Cổ Ä‘iển */',
-'nostalgia.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng Vá»ng cổ */',
-'cologneblue.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng Xanh Cologne */',
-'monobook.css' => '/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng hình dạng MonoBook */',
-'myskin.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng Cá nhân */',
-'chick.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng Chick */',
-'simple.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng ÄÆ¡n giản */',
-'modern.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng Hiện đại */',
-'vector.css' => '/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng hình dạng Vectơ */',
-'print.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến bản để in */',
-'handheld.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến các thiết bị cầm tay dựa trên hình dạng cấu hình trong $wgHandheldStyle */',
+'common.css' => '/* Mã CSS đặt ở đây sẽ áp dụng cho má»i hình dạng */',
+'standard.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng Cổ Ä‘iển */',
+'nostalgia.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng Vá»ng cổ */',
+'cologneblue.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng Xanh Cologne */',
+'monobook.css' => '/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng hình dạng MonoBook */',
+'myskin.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng Cá nhân */',
+'chick.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng Chick */',
+'simple.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng ÄÆ¡n giản */',
+'modern.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng sá»­ dụng hình dạng Hiện đại */',
+'vector.css' => '/* Mã CSS đặt ở đây sẽ ảnh hưởng đến thành viên sử dụng hình dạng Vectơ */',
+'print.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến bản để in */',
+'handheld.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến các thiết bị cầm tay dựa trên hình dạng cấu hình trong $wgHandheldStyle */',
+'noscript.css' => '/* Mã CSS tại đây sẽ ảnh hưởng đến những ngÆ°á»i dùng tắt JavaScript */',
+'group-autoconfirmed.css' => '/* Mã CSS tại đây sẽ chỉ ảnh hưởng đến các thành viên tự động xác nhận */',
+'group-bot.css' => '/* Mã CSS tại đây sẽ chỉ ảnh hưởng đến các bot */',
+'group-sysop.css' => '/* Mã CSS tại đây sẽ chỉ ảnh hưởng đến các bảo quản viên */',
+'group-bureaucrat.css' => '/* Mã CSS tại đây sẽ chỉ ảnh hưởng đến các hành chính viên */',
# Scripts
-'common.js' => '/* Bất kỳ mã JavaScript ở đây sẽ được tải cho tất cả các thành viên khi tải một trang nào đó lên. */',
-'standard.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng hình dạng Cổ Ä‘iển */',
-'nostalgia.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng hình dạng Vá»ng cổ */',
-'cologneblue.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng hình dạng Xanh Cologne */',
-'monobook.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng bá» ngoài MonoBook */',
-'myskin.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng bá» ngoài Cá nhân */',
-'chick.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng bá» ngoài Chick */',
-'simple.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng bá» ngoài ÄÆ¡n giản */',
-'modern.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng bá» ngoài Hiện đại */',
-'vector.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng bá» ngoài VectÆ¡ */',
+'common.js' => '/* Bất kỳ mã JavaScript ở đây sẽ được tải cho tất cả các thành viên khi tải một trang nào đó lên. */',
+'standard.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng hình dạng Cổ Ä‘iển */',
+'nostalgia.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng hình dạng Vá»ng cổ */',
+'cologneblue.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng hình dạng Xanh Cologne */',
+'monobook.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng bá» ngoài MonoBook */',
+'myskin.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng bá» ngoài Cá nhân */',
+'chick.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng bá» ngoài Chick */',
+'simple.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng bá» ngoài ÄÆ¡n giản */',
+'modern.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng bá» ngoài Hiện đại */',
+'vector.js' => '/* Mã JavaScript tại đây sẽ được tải khi ngÆ°á»i dùng sá»­ dụng bá» ngoài VectÆ¡ */',
+'group-autoconfirmed.js' => '/* Mã JavaScript tại đây sẽ chỉ được tải cho các thành viên tự động xác nhận */',
+'group-bot.js' => '/* Mã JavaScript tại đây sẽ chỉ được tải cho các bot */',
+'group-sysop.js' => '/* Mã JavaScript tại đây sẽ chỉ được tải cho các bảo quản viên */',
+'group-bureaucrat.js' => '/* Mã JavaScript tại đây sẽ chỉ được tải cho các hành chính viên */',
# Metadata
-'nodublincore' => 'Máy chủ không hỗ trợ siêu dữ liệu Dublin Core RDF.',
-'nocreativecommons' => 'Máy chủ không hỗ trợ siêu dữ liệu Creative Commons RDF.',
-'notacceptable' => 'Máy chủ không thể cho ra định dạng dữ liệu tÆ°Æ¡ng thích vá»›i phần má»m của bạn.',
+'notacceptable' => 'Máy chủ không thể cho ra định dạng dữ liệu tÆ°Æ¡ng thích vá»›i phần má»m của bạn.',
# Attribution
'anonymous' => '{{PLURAL:$1|NgÆ°á»i dùng|NgÆ°á»i dùng}} vô danh của {{SITENAME}}',
@@ -2840,12 +2932,17 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
'spam_blanking' => 'Tất cả các phiên bản có liên kết đến $1, đang tẩy trống',
# Info page
-'infosubtitle' => 'Thông tin vỠtrang',
-'numedits' => 'Số lần sửa đổi (trang nội dung): $1',
-'numtalkedits' => 'Số lần sửa đổi (trang thảo luận): $1',
-'numwatchers' => 'Số ngÆ°á»i theo dõi: $1',
-'numauthors' => 'Số ngÆ°á»i sá»­a đổi khác nhau (trang ná»™i dung): $1',
-'numtalkauthors' => 'Số ngÆ°á»i sá»­a đổi khác nhau (trang thảo luận): $1',
+'pageinfo-title' => 'Thông tin vỠ“$1â€',
+'pageinfo-header-edits' => 'Lần sửa',
+'pageinfo-header-watchlist' => 'Danh sách theo dõi',
+'pageinfo-header-views' => 'Lần xem',
+'pageinfo-subjectpage' => 'Trang',
+'pageinfo-talkpage' => 'Trang thảo luận',
+'pageinfo-watchers' => 'Số ngÆ°á»i theo dõi',
+'pageinfo-edits' => 'Số lần sửa đổi',
+'pageinfo-authors' => 'Số tác giả riêng',
+'pageinfo-views' => 'Số lần xem',
+'pageinfo-viewsperedit' => 'Số lần xem mỗi sửa đổi',
# Skin names
'skinname-standard' => 'Cổ điển',
@@ -2856,25 +2953,6 @@ Lưu nó vào máy tính của bạn rồi tải nó lên đây.',
'skinname-modern' => 'Hiện đại',
'skinname-vector' => 'Vectơ',
-# Math options
-'mw_math_png' => 'Luôn cho ra dạng hình PNG',
-'mw_math_simple' => 'HTML nếu rất đơn giản, nếu không thì PNG',
-'mw_math_html' => 'HTML nếu có thể, nếu không thì PNG',
-'mw_math_source' => 'Äể nguyên mã TeX (dành cho trình duyệt văn bản)',
-'mw_math_modern' => 'Khuyên dùng với các trình duyệt hiện đại',
-'mw_math_mathml' => 'MathML nếu có thể (thử nghiệm)',
-
-# Math errors
-'math_failure' => 'Không thể phân tích cú pháp',
-'math_unknown_error' => 'lỗi lạ',
-'math_unknown_function' => 'hàm lạ',
-'math_lexing_error' => 'lỗi chính tả',
-'math_syntax_error' => 'lỗi cú pháp',
-'math_image_error' => 'Không chuyển sang định dạng PNG được; xin kiểm tra lại cài đặt latex, dvips, gs, và convert (hoặc dvips + gs + convert)',
-'math_bad_tmpdir' => 'Không tạo má»›i hay viết vào thÆ° mục toán tạm thá»i được',
-'math_bad_output' => 'Không tạo mới hay viết vào thư mục kết quả được',
-'math_notexvc' => 'Không thấy hàm thực thi texvc; xin xem math/README để biết cách cấu hình.',
-
# Patrolling
'markaspatrolleddiff' => 'Äánh dấu tuần tra',
'markaspatrolledtext' => 'Äánh dấu tuần tra trang này',
@@ -2910,22 +2988,25 @@ $1',
'nextdiff' => 'Sửa đổi sau →',
# Media information
-'mediawarning' => "'''Cảnh báo''': Kiểu tập tin này có thể chứa mã hiểm độc.
+'mediawarning' => "'''Cảnh báo''': Kiểu tập tin này có thể chứa mã hiểm độc.
Nếu thá»±c thi nó máy tính của bạn có thể bị tiếm quyá»n.",
-'imagemaxsize' => "Giới hạn cỡ hình:<br />''(trên trang miêu tả tập tin)''",
-'thumbsize' => 'Cỡ hình thu nhá»:',
-'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|trang|trang}}',
-'file-info' => 'kích thước tập tin: $1, kiểu MIME: $2',
-'file-info-size' => '$1×$2 điểm ảnh, kích thước tập tin: $3, kiểu MIME: $4',
-'file-nohires' => '<small>Không có độ phân giải cao hơn.</small>',
-'svg-long-desc' => 'tập tin SVG, $1×$2 điểm ảnh trên danh nghĩa, kích thước: $3',
-'show-big-image' => 'Äá»™ phân giải tối Ä‘a',
-'show-big-image-thumb' => '<small>Kích thước xem thử: $1×$2 điểm ảnh</small>',
-'file-info-gif-looped' => 'có lặp',
-'file-info-gif-frames' => '$1 {{PLURAL:$1|khung ảnh|khung ảnh}}',
-'file-info-png-looped' => 'có lặp',
-'file-info-png-repeat' => 'chơi $1 lần',
-'file-info-png-frames' => '$1 khung ảnh',
+'imagemaxsize' => "Giới hạn cỡ hình:<br />''(trên trang miêu tả tập tin)''",
+'thumbsize' => 'Cỡ hình thu nhá»:',
+'widthheightpage' => '$1×$2, $3 {{PLURAL:$3|trang|trang}}',
+'file-info' => 'kích thước tập tin: $1, kiểu MIME: $2',
+'file-info-size' => '$1×$2 điểm ảnh, kích thước tập tin: $3, kiểu MIME: $4',
+'file-info-size-pages' => '$1×$2 điểm ảnh, kích thước tập tin: $3, kiểu MIME: $4, $5 trang',
+'file-nohires' => '<small>Không có độ phân giải cao hơn.</small>',
+'svg-long-desc' => 'tập tin SVG, $1×$2 điểm ảnh trên danh nghĩa, kích thước: $3',
+'show-big-image' => 'Äá»™ phân giải tối Ä‘a',
+'show-big-image-preview' => '<small>Kích thước của ảnh xem thử: $1.</small>',
+'show-big-image-other' => '<small>Äá»™ phân giải khác: $1.</small>',
+'show-big-image-size' => '$1 × $2 điểm ảnh',
+'file-info-gif-looped' => 'có lặp',
+'file-info-gif-frames' => '$1 {{PLURAL:$1|khung ảnh|khung ảnh}}',
+'file-info-png-looped' => 'có lặp',
+'file-info-png-repeat' => 'chơi $1 lần',
+'file-info-png-frames' => '$1 khung ảnh',
# Special:NewFiles
'newimages' => 'Trang trưng bày hình ảnh mới',
@@ -2984,12 +3065,16 @@ Variants for Chinese language
'variantname-tg-cyrl' => 'Kirin',
'variantname-tg-latn' => 'Latinh',
+# Variants for Inuktitut language
+'variantname-ike-cans' => 'Âm tiết Thổ dân Canada',
+'variantname-ike-latn' => 'Latinh',
+
# Metadata
'metadata' => 'Äặc tính hình',
'metadata-help' => 'Tập tin này có chứa thông tin vỠnó, do máy ảnh hay máy quét thêm vào. Nếu tập tin bị sửa đổi sau khi được tạo ra lần đầu, có thể thông tin này không được cập nhật.',
'metadata-expand' => 'Hiện chi tiết cấp cao',
'metadata-collapse' => 'Ẩn chi tiết cấp cao',
-'metadata-fields' => 'Những thông tin đặc tính EXIF được danh sách dÆ°á»›i đây sẽ được Ä‘Æ°a vào vào trang miêu tả hình khi bảng đặc tính được thu nhá».
+'metadata-fields' => 'Những thông tin đặc tính hình được danh sách dÆ°á»›i đây sẽ được Ä‘Æ°a vào trang miêu tả hình khi bảng đặc tính được thu nhá».
Những thông tin khác mặc định sẽ được ẩn đi.
* make
* model
@@ -2997,7 +3082,13 @@ Những thông tin khác mặc định sẽ được ẩn đi.
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Chiá»u ngang',
@@ -3012,13 +3103,11 @@ Những thông tin khác mặc định sẽ được ẩn đi.
'exif-ycbcrpositioning' => 'Äịnh vị Y và C',
'exif-xresolution' => 'Phân giải theo chiá»u ngang',
'exif-yresolution' => 'Phân giải theo chiá»u cao',
-'exif-resolutionunit' => 'ÄÆ¡n vị phân giải X và Y',
'exif-stripoffsets' => 'Vị trí dữ liệu hình',
'exif-rowsperstrip' => 'Số hàng trên mỗi mảnh',
'exif-stripbytecounts' => 'Số byte trên mỗi mảnh nén',
'exif-jpeginterchangeformat' => 'Vị trí SOI JPEG',
'exif-jpeginterchangeformatlength' => 'Kích cỡ (byte) của JPEG',
-'exif-transferfunction' => 'Hàm chuyển đổi',
'exif-whitepoint' => 'Sắc độ điểm trắng',
'exif-primarychromaticities' => 'Sắc độ của màu cơ bản',
'exif-ycbcrcoefficients' => 'Hệ số ma trận biến đổi không gian màu',
@@ -3037,7 +3126,6 @@ Những thông tin khác mặc định sẽ được ẩn đi.
'exif-compressedbitsperpixel' => 'Äá»™ nén (bit/Ä‘iểm)',
'exif-pixelydimension' => 'Chiá»u ngang hình',
'exif-pixelxdimension' => 'Chiá»u cao hình',
-'exif-makernote' => 'Ghi chú của nhà sản xuất',
'exif-usercomment' => 'Lá»i bình của tác giả',
'exif-relatedsoundfile' => 'Tập tin âm thanh liên quan',
'exif-datetimeoriginal' => 'Ngày giỠsinh dữ liệu',
@@ -3052,7 +3140,6 @@ Những thông tin khác mặc định sẽ được ẩn đi.
'exif-exposureprogram' => 'Chương trình phơi sáng',
'exif-spectralsensitivity' => 'Äá»™ nhạy quang phổ',
'exif-isospeedratings' => 'Äiểm tốc Ä‘á»™ ISO',
-'exif-oecf' => 'Yếu tố chuyển đổi quang điện',
'exif-shutterspeedvalue' => 'Tốc độ cửa chớp (APEX)',
'exif-aperturevalue' => 'Äá»™ mở ống kính (APEX)',
'exif-brightnessvalue' => 'Äá»™ sáng (APEX)',
@@ -3066,7 +3153,6 @@ Những thông tin khác mặc định sẽ được ẩn đi.
'exif-focallength-format' => '$1 mm',
'exif-subjectarea' => 'Diện tích vật thể',
'exif-flashenergy' => 'Nguồn đèn chớp',
-'exif-spatialfrequencyresponse' => 'Phản ứng tần số không gian',
'exif-focalplanexresolution' => 'Phân giải X trên mặt phẳng tiêu',
'exif-focalplaneyresolution' => 'Phân giải Y trên mặt phẳng tiêu',
'exif-focalplaneresolutionunit' => 'ÄÆ¡n vị phân giải trên mặt phẳng tiêu',
@@ -3075,7 +3161,6 @@ Những thông tin khác mặc định sẽ được ẩn đi.
'exif-sensingmethod' => 'Phương pháp đo',
'exif-filesource' => 'Nguồn tập tin',
'exif-scenetype' => 'Loại cảnh',
-'exif-cfapattern' => 'Mẫu CFA',
'exif-customrendered' => 'Sửa hình thủ công',
'exif-exposuremode' => 'Chế độ phơi sáng',
'exif-whitebalance' => 'Äá»™ sáng trắng',
@@ -3120,11 +3205,80 @@ Những thông tin khác mặc định sẽ được ẩn đi.
'exif-gpsareainformation' => 'Tên khu vực theo GPS',
'exif-gpsdatestamp' => 'Ngày theo GPS',
'exif-gpsdifferential' => 'Sá»­a vi sai GPS',
+'exif-jpegfilecomment' => 'Chú giải tập tin JPEG',
+'exif-keywords' => 'Từ khóa',
+'exif-worldregioncreated' => 'Phần thế giới của máy chụp trong lúc chụp',
+'exif-countrycreated' => 'Quốc gia của máy chụp trong lúc chụp',
+'exif-countrycodecreated' => 'Mã của quốc gia của máy chụp trong lúc chụp',
+'exif-provinceorstatecreated' => 'Tỉnh bang của máy chụp trong lúc chụp',
+'exif-citycreated' => 'Thành phố của máy chụp trong lúc chụp',
+'exif-sublocationcreated' => 'Khu hoặc phố của máy chụp trong lúc chụp',
+'exif-worldregiondest' => 'Phần thế giới xuất hiện',
+'exif-countrydest' => 'Quốc gia xuất hiện',
+'exif-countrycodedest' => 'Mã của quốc gia xuất hiện',
+'exif-provinceorstatedest' => 'Tỉnh bang xuất hiện',
+'exif-citydest' => 'Thành phố xuất hiện',
+'exif-sublocationdest' => 'Khu hoặc phố xuất hiện',
'exif-objectname' => 'Tên ngắn',
+'exif-specialinstructions' => 'Hướng dẫn sử dụng đặc biệt',
+'exif-headline' => 'Äá» mục',
+'exif-credit' => 'Ghi công / nhà cung cấp',
+'exif-source' => 'Nguồn gốc',
+'exif-editstatus' => 'Tình trạng biên tập hình ảnh',
+'exif-urgency' => 'Mức độ khẩn cấp',
+'exif-fixtureidentifier' => 'Tên mục',
+'exif-locationdest' => 'Äịa Ä‘iểm xuất hiện',
+'exif-locationdestcode' => 'Mã của địa điểm xuất hiện',
+'exif-objectcycle' => 'Phần của ngày',
+'exif-contact' => 'Thông tin liên lạc',
+'exif-writer' => 'NgÆ°á»i viết lá»i chú giải',
+'exif-languagecode' => 'Ngôn ngữ',
+'exif-iimversion' => 'Phiên bản IIM',
+'exif-iimcategory' => 'Thể loại',
+'exif-iimsupplementalcategory' => 'Thể loại bổ sung',
+'exif-datetimeexpires' => 'Ngày hạn sử dụng',
+'exif-datetimereleased' => 'Ngày phát hành',
+'exif-originaltransmissionref' => 'Mã vị trí truyá»n dẫn ban đầu',
+'exif-identifier' => 'Äịnh danh',
+'exif-lens' => 'á»ng kính được sá»­ dụng',
+'exif-serialnumber' => 'Số sêri của máy chụp hình',
+'exif-cameraownername' => 'Chủ máy chụp hình',
+'exif-label' => 'Nhãn',
+'exif-datetimemetadata' => 'Ngày sửa siêu dữ liệu lần cuối',
+'exif-nickname' => 'Tên hình không chính thức',
+'exif-rating' => 'Äánh giá (trên 5)',
+'exif-rightscertificate' => 'Chứng thÆ° quản lý quyá»n',
+'exif-copyrighted' => 'Tình trạng bản quyá»n',
+'exif-copyrightowner' => 'Nhà giữ bản quyá»n',
+'exif-usageterms' => 'Äiá»u khoản sá»­ dụng',
+'exif-webstatement' => 'Thông tin bản quyá»n trá»±c tuyến',
+'exif-originaldocumentid' => 'ID duy nhất của tài liệu gốc',
+'exif-licenseurl' => 'URL của giấy phép bản quyá»n',
+'exif-morepermissionsurl' => 'Thông tin cấp phép thay thế',
+'exif-attributionurl' => 'URL để đặt liên kết đến khi tái sử dụng',
+'exif-preferredattributionname' => 'Tên để ghi công khi tái sử dụng',
+'exif-pngfilecomment' => 'Chú giải tập tin PNG',
+'exif-disclaimer' => 'Phủ nhận',
+'exif-contentwarning' => 'Cảnh báo vỠnội dung',
+'exif-giffilecomment' => 'Chú giải tập tin GIF',
+'exif-intellectualgenre' => 'Kiểu khoản',
+'exif-subjectnewscode' => 'Mã chủ Ä‘á»',
+'exif-scenecode' => 'Mã cảnh IPTC',
+'exif-event' => 'Sự kiện xuất hiện',
+'exif-organisationinimage' => 'Tổ chức xuất hiện',
+'exif-personinimage' => 'NgÆ°á»i xuất hiện',
+'exif-originalimageheight' => 'Chiá»u cao của hình trÆ°á»›c khi được cắt',
+'exif-originalimagewidth' => 'Chiá»u rá»™ng của hình trÆ°á»›c khi được cắt',
# EXIF attributes
'exif-compression-1' => 'Không nén',
-'exif-compression-6' => 'JPEG',
+'exif-compression-2' => 'CCITT Nhóm 3: mã hóa thá»i gian chạy Huffman sá»­a má»™t chiá»u',
+'exif-compression-3' => 'CCITT Nhóm 3: mã hóa fax',
+'exif-compression-4' => 'CCITT Nhóm 4: mã hóa fax',
+'exif-compression-6' => 'JPEG (cũ)',
+
+'exif-copyrighted-true' => 'DÆ°á»›i bản quyá»n',
+'exif-copyrighted-false' => 'Phạm vi công cộng',
'exif-photometricinterpretation-2' => 'RGB',
@@ -3142,6 +3296,8 @@ Những thông tin khác mặc định sẽ được ẩn đi.
'exif-planarconfiguration-1' => 'định dạng thấp',
'exif-planarconfiguration-2' => 'định dạng phẳng',
+'exif-colorspace-65535' => 'Chưa hiệu chỉnh',
+
'exif-componentsconfiguration-0' => 'không tồn tại',
'exif-exposureprogram-0' => 'Không chỉ định',
@@ -3255,6 +3411,10 @@ Những thông tin khác mặc định sẽ được ẩn đi.
'exif-gpslongitude-e' => 'Kinh độ đông',
'exif-gpslongitude-w' => 'Kinh độ tây',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => '$1 mét trên mực nước biển',
+'exif-gpsaltitude-below-sealevel' => '$1 dưới mực nước biển',
+
'exif-gpsstatus-a' => 'Äang Ä‘o',
'exif-gpsstatus-v' => 'Mức Ä‘á»™ khả năng liên Ä‘iá»u hành',
@@ -3266,21 +3426,73 @@ Những thông tin khác mặc định sẽ được ẩn đi.
'exif-gpsspeed-m' => 'Dặm má»™t giá»',
'exif-gpsspeed-n' => 'Hải lý má»™t giá»',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => 'Kilômét',
+'exif-gpsdestdistance-m' => 'Dặm Anh',
+'exif-gpsdestdistance-n' => 'Hải lý',
+
+'exif-gpsdop-excellent' => 'Xuất sắc ($1)',
+'exif-gpsdop-good' => 'Tốt ($1)',
+'exif-gpsdop-moderate' => 'Khá ($1)',
+'exif-gpsdop-fair' => 'Xấp xỉ ($1)',
+'exif-gpsdop-poor' => 'Kém ($1)',
+
+'exif-objectcycle-a' => 'Chỉ ban sáng',
+'exif-objectcycle-p' => 'Chỉ ban đêm',
+'exif-objectcycle-b' => 'Tối ngày',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => 'Hướng thật',
'exif-gpsdirection-m' => 'HÆ°á»›ng từ trÆ°á»ng',
+'exif-ycbcrpositioning-1' => 'Căn giữa',
+'exif-ycbcrpositioning-2' => 'Äồng vị trí',
+
+'exif-dc-contributor' => 'NgÆ°á»i đóng góp',
+'exif-dc-coverage' => 'Phạm vi không gian hoặc thá»i gian của phÆ°Æ¡ng tiện',
+'exif-dc-date' => 'Ngày',
+'exif-dc-publisher' => 'Nhà xuất bản',
+'exif-dc-relation' => 'Phương tiện có liên quan',
+'exif-dc-rights' => 'Tác quyá»n',
+'exif-dc-source' => 'Phương tiện gốc',
+'exif-dc-type' => 'Kiểu phương tiện',
+
+'exif-rating-rejected' => 'Bị từ chối',
+
+'exif-isospeedratings-overflow' => 'Cao hơn 65.535',
+
+'exif-iimcategory-ace' => 'Nghệ thuật, văn hóa, và giải trí',
+'exif-iimcategory-clj' => 'Tội phạm và luật pháp',
+'exif-iimcategory-dis' => 'Tai há»a và tai nạn',
+'exif-iimcategory-fin' => 'Kinh tế và kinh doanh',
+'exif-iimcategory-edu' => 'Giáo dục',
+'exif-iimcategory-evn' => 'Môi trÆ°á»ng',
+'exif-iimcategory-hth' => 'Sức khá»e',
+'exif-iimcategory-hum' => 'Nhân cảm',
+'exif-iimcategory-lab' => 'Lao Ä‘á»™ng',
+'exif-iimcategory-lif' => 'Lối sống và giải trí',
+'exif-iimcategory-pol' => 'Chính trị',
+'exif-iimcategory-rel' => 'Tôn giáo và tín ngưỡng',
+'exif-iimcategory-sci' => 'Khoa há»c và công nghệ',
+'exif-iimcategory-soi' => 'Xã hội',
+'exif-iimcategory-spo' => 'Thể thao',
+'exif-iimcategory-war' => 'Chiến tranh, xung đột, và náo động',
+'exif-iimcategory-wea' => 'Thá»i tiết',
+
+'exif-urgency-normal' => 'Bình thÆ°á»ng ($1)',
+'exif-urgency-low' => 'Thấp ($1)',
+'exif-urgency-high' => 'Cao ($1)',
+'exif-urgency-other' => 'Ưu tiên ngÆ°á»i dùng định nghÄ©a ($1)',
+
# External editor support
'edit-externally' => 'Sá»­a bằng phần má»m bên ngoài',
-'edit-externally-help' => '(Xem [http://www.mediawiki.org/wiki/Manual:External_editors hướng dẫn cài đặt bằng tiếng Anh] để biết thêm thông tin)',
+'edit-externally-help' => '(Xem [//www.mediawiki.org/wiki/Manual:External_editors hướng dẫn cài đặt bằng tiếng Anh] để biết thêm thông tin)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'tất cả',
-'imagelistall' => 'tất cả',
-'watchlistall2' => 'tất cả',
-'namespacesall' => 'tất cả',
-'monthsall' => 'tất cả',
-'limitall' => 'tất cả',
+'watchlistall2' => 'tất cả',
+'namespacesall' => 'tất cả',
+'monthsall' => 'tất cả',
+'limitall' => 'tất cả',
# E-mail address confirmation
'confirmemail' => 'Xác nhận thư điện tử',
@@ -3363,17 +3575,24 @@ $1',
'trackbackdeleteok' => 'Äã xóa trackback.',
# Delete conflict
-'deletedwhileediting' => "'''Cảnh báo''': Trang này đã bị xóa sau khi bắt đầu sửa đổi!",
-'confirmrecreate' => "Thành viên [[User:$1|$1]] ([[User talk:$1|thảo luận]]) đã xóa trang này sau khi bạn bắt đầu sửa đổi trang với lý do:
+'deletedwhileediting' => "'''Cảnh báo''': Trang này đã bị xóa sau khi bắt đầu sửa đổi!",
+'confirmrecreate' => "Thành viên [[User:$1|$1]] ([[User talk:$1|thảo luận]]) đã xóa trang này sau khi bạn bắt đầu sửa đổi trang với lý do:
: ''$2''
Xin hãy xác nhận bạn thực sự muốn tạo lại trang này.",
-'recreate' => 'Tạo ra lại',
+'confirmrecreate-noreason' => 'NgÆ°á»i dùng [[User:$1|$1]] ([[User talk:$1|talk]]) xóa trang này sau khi bạn bắt đầu sá»­a đổi nó. Bạn có chắc chắn muốn tạo lại trang này không?',
+'recreate' => 'Tạo ra lại',
# action=purge
'confirm_purge_button' => 'Làm mới',
'confirm-purge-top' => 'Làm sạch vùng nhớ đệm của trang này?',
'confirm-purge-bottom' => 'Làm mới một trang sẽ giúp xóa bộ đệm và buộc hiển thị phiên bản gần nhất.',
+# action=watch/unwatch
+'confirm-watch-button' => 'Theo dõi',
+'confirm-watch-top' => 'Bạn có muốn thêm trang này vào danh sách theo dõi của bạn?',
+'confirm-unwatch-button' => 'Ngừng theo dõi',
+'confirm-unwatch-top' => 'Bạn có muốn gỡ trang này khá»i danh sách theo dõi của bạn?',
+
# Separators for various lists, etc.
'ellipsis' => '…',
@@ -3419,14 +3638,14 @@ Xin hãy xác nhận bạn thực sự muốn tạo lại trang này.",
'watchlistedit-noitems' => 'Danh sách các trang bạn theo dõi hiện không có gì.',
'watchlistedit-normal-title' => 'Sửa các trang tôi theo dõi',
'watchlistedit-normal-legend' => 'Gỡ trang khá»i danh sách',
-'watchlistedit-normal-explain' => 'Tên các trang bạn theo dõi được hiển thị dÆ°á»›i đây. Äể xóa má»™t tên trang, chá»n vào há»™p kiểm bên cạnh nó, rồi nhấn “{{int:Watchlistedit-normal-submit}}â€. Bạn cÅ©ng có thể [[Special:Watchlist/raw|sá»­a danh sách theo dạng thô]].',
+'watchlistedit-normal-explain' => 'Tên các trang bạn theo dõi được hiển thị dÆ°á»›i đây. Äể xóa má»™t tên trang, chá»n vào há»™p kiểm bên cạnh nó, rồi nhấn “{{int:Watchlistedit-normal-submit}}â€. Bạn cÅ©ng có thể [[Special:EditWatchlist/raw|sá»­a danh sách theo dạng thô]].',
'watchlistedit-normal-submit' => 'Bá» trang đã chá»n',
'watchlistedit-normal-done' => '$1 {{PLURAL:$1|tá»±a Ä‘á»|tá»±a Ä‘á»}} đã được xóa khá»i danh sách các trang theo dõi:',
'watchlistedit-raw-title' => 'Sửa danh sách theo dõi dạng thô',
'watchlistedit-raw-legend' => 'Sửa danh sách theo dõi dạng thô',
'watchlistedit-raw-explain' => 'Danh sách này có tên các trang bạn theo dõi để bạn sá»­a chữa bằng cách thêm vào hoặc bá» ra khá»i danh sách; má»—i trang má»™t hàng.
Khi xong, nhấn nút â€{{int:Watchlistedit-raw-submit}}â€.
-Bạn cÅ©ng có thể [[Special:Watchlist/edit|dùng trang sá»­a đổi bình thÆ°á»ng]] để sá»­a danh sách này.',
+Bạn cÅ©ng có thể [[Special:EditWatchlist|dùng trang sá»­a đổi bình thÆ°á»ng]] để sá»­a danh sách này.',
'watchlistedit-raw-titles' => 'Tên các trang:',
'watchlistedit-raw-submit' => 'Cập nhật Trang tôi theo dõi',
'watchlistedit-raw-done' => 'Danh sách các trang bạn theo dõi đã được cập nhật.',
@@ -3487,26 +3706,26 @@ Bạn cũng có thể [[Special:Watchlist/edit|dùng trang sửa đổi bình th
'duplicate-defaultsort' => 'Cảnh báo: Từ khóa xếp mặc định “$2†ghi đè từ khóa trÆ°á»›c, “$1â€.',
# Special:Version
-'version' => 'Phiên bản',
-'version-extensions' => 'Các phần mở rộng được cài đặt',
-'version-specialpages' => 'Trang đặc biệt',
-'version-parserhooks' => 'Hook trong bộ xử lý',
-'version-variables' => 'Biến',
-'version-skins' => 'Hình dạng',
-'version-other' => 'Phần mở rộng khác',
-'version-mediahandlers' => 'Bộ xử lý phương tiện',
-'version-hooks' => 'Các hook',
-'version-extension-functions' => 'Hàm mở rộng',
-'version-parser-extensiontags' => 'Thẻ mở rộng trong bộ xử lý',
-'version-parser-function-hooks' => 'Hook cho hàm cú pháp trong bộ xử lý',
-'version-skin-extension-functions' => 'Hàm mở rộng skin',
-'version-hook-name' => 'Tên hook',
-'version-hook-subscribedby' => 'Äược theo dõi bởi',
-'version-version' => '(Phiên bản $1)',
-'version-license' => 'Giấy phép bản quyá»n',
-'version-poweredby-credits' => "Wiki này chạy trên '''[http://www.mediawiki.org/ MediaWiki]''', bản quyá»n © 2001–$1 $2.",
-'version-poweredby-others' => 'những ngÆ°á»i khác',
-'version-license-info' => "MediaWiki là phần má»m tá»± do; bạn được phép tái phân phối và/hoặc sá»­a đổi nó theo những Ä‘iá»u khoản của Giấy phép Công cá»™ng GNU do Quỹ Phần má»m Tá»± do xuất bản; phiên bản 2 hay bất kỳ phiên bản nào má»›i hÆ¡n nào của Giấy phép.
+'version' => 'Phiên bản',
+'version-extensions' => 'Các phần mở rộng được cài đặt',
+'version-specialpages' => 'Trang đặc biệt',
+'version-parserhooks' => 'Hook trong bộ xử lý',
+'version-variables' => 'Biến',
+'version-antispam' => 'Chống spam',
+'version-skins' => 'Hình dạng',
+'version-other' => 'Phần mở rộng khác',
+'version-mediahandlers' => 'Bộ xử lý phương tiện',
+'version-hooks' => 'Các hook',
+'version-extension-functions' => 'Hàm mở rộng',
+'version-parser-extensiontags' => 'Thẻ mở rộng trong bộ xử lý',
+'version-parser-function-hooks' => 'Hook cho hàm cú pháp trong bộ xử lý',
+'version-hook-name' => 'Tên hook',
+'version-hook-subscribedby' => 'Äược theo dõi bởi',
+'version-version' => '(Phiên bản $1)',
+'version-license' => 'Giấy phép bản quyá»n',
+'version-poweredby-credits' => "Wiki này chạy trên '''[//www.mediawiki.org/ MediaWiki]''', bản quyá»n © 2001–$1 $2.",
+'version-poweredby-others' => 'những ngÆ°á»i khác',
+'version-license-info' => "MediaWiki là phần má»m tá»± do; bạn được phép tái phân phối và/hoặc sá»­a đổi nó theo những Ä‘iá»u khoản của Giấy phép Công cá»™ng GNU do Quỹ Phần má»m Tá»± do xuất bản; phiên bản 2 hay bất kỳ phiên bản nào má»›i hÆ¡n nào của Giấy phép.
MediaWiki được phân phối vá»›i hy vá»ng rằng nó sẽ hữu ích, nhÆ°ng '''không có bất kỳ má»™t bảo đảm nào cả''', ngay cả những bảo đảm ngụ ý cho '''các mục đích thÆ°Æ¡ng mại''' hoặc cho '''má»™t mục đích đặc biệt nào đó'''. Xem Giấy phép Công cá»™ng GNU để biết thêm chi tiết.
@@ -3515,10 +3734,10 @@ Có lẽ bạn đã nhận [{{SERVER}}{{SCRIPTPATH}}/COPYING bản sao Giấy ph
51 Franklin St., Fifth Floor
Boston, MA 02110-1301
USA
-hoặc [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html Ä‘á»c nó trá»±c tuyến].",
-'version-software' => 'Phần má»m được cài đặt',
-'version-software-product' => 'Phần má»m',
-'version-software-version' => 'Phiên bản',
+hoặc [//www.gnu.org/licenses/old-licenses/gpl-2.0.html Ä‘á»c nó trá»±c tuyến].",
+'version-software' => 'Phần má»m được cài đặt',
+'version-software-product' => 'Phần má»m',
+'version-software-version' => 'Phiên bản',
# Special:FilePath
'filepath' => 'ÄÆ°á»ng dẫn tập tin',
@@ -3528,22 +3747,22 @@ hoặc [http://www.gnu.org/licenses/old-licenses/gpl-2.0.html Ä‘á»c nó trá»±c
Các hình ảnh được hiển thị ở kích thước tối đa, còn các loại tập tin khác được mở lên ngay trong chương trình mặc định.',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'Tìm kiếm các tập tin trùng lắp',
-'fileduplicatesearch-summary' => 'Tìm kiếm các bản sao y hệt với tập tin khác, theo giá trị băm của nó.
-
-Hãy cho vào tên của tập tin, trừ tiá»n tố “{{ns:file}}:â€.',
-'fileduplicatesearch-legend' => 'Tìm kiếm tập tin trùng lắp',
-'fileduplicatesearch-filename' => 'Tên tập tin:',
-'fileduplicatesearch-submit' => 'Tìm kiếm',
-'fileduplicatesearch-info' => '$1×$2 điểm ảnh<br />Kích thước tập tin: $3<br />Kiểu MIME: $4',
-'fileduplicatesearch-result-1' => 'Không có bản sao y hệt vá»›i tập tin “$1â€.',
-'fileduplicatesearch-result-n' => 'Có {{PLURAL:$2|1 bản sao|$2 bản sao}} y hệt vá»›i tập tin “$1â€.',
+'fileduplicatesearch' => 'Tìm kiếm các tập tin trùng lắp',
+'fileduplicatesearch-summary' => 'Tìm kiếm các bản sao y hệt với tập tin khác, theo giá trị băm của nó.',
+'fileduplicatesearch-legend' => 'Tìm kiếm tập tin trùng lắp',
+'fileduplicatesearch-filename' => 'Tên tập tin:',
+'fileduplicatesearch-submit' => 'Tìm kiếm',
+'fileduplicatesearch-info' => '$1×$2 điểm ảnh<br />Kích thước tập tin: $3<br />Kiểu MIME: $4',
+'fileduplicatesearch-result-1' => 'Không có bản sao y hệt vá»›i tập tin “$1â€.',
+'fileduplicatesearch-result-n' => 'Có {{PLURAL:$2|1 bản sao|$2 bản sao}} y hệt vá»›i tập tin “$1â€.',
+'fileduplicatesearch-noresults' => 'Không tìm thấy tập tin nào tên “$1â€.',
# Special:SpecialPages
'specialpages' => 'Các trang đặc biệt',
'specialpages-note' => '----
* Trang đặc biệt thông thÆ°á»ng.
-* <strong class="mw-specialpagerestricted">Trang đặc biệt có hạn chế.</strong>',
+* <strong class="mw-specialpagerestricted">Trang đặc biệt được hạn chế.</strong>
+* <span class="mw-specialpagecached">Trang đặc biệt được lấy từ vùng nhá»› đệm (có thể lá»—i thá»i).</span>',
'specialpages-group-maintenance' => 'Báo cáo bảo quản',
'specialpages-group-other' => 'Những trang đặc biệt khác',
'specialpages-group-login' => 'Äăng nhập / Mở tài khoản',
diff --git a/languages/messages/MessagesVls.php b/languages/messages/MessagesVls.php
index dee3558c..3298ca43 100644
--- a/languages/messages/MessagesVls.php
+++ b/languages/messages/MessagesVls.php
@@ -125,7 +125,6 @@ $messages = array(
'searchbutton' => 'Zoekn',
'history_short' => 'Geschiedenisse',
'updatedmarker' => 'bygewerkt sinds min latste visite',
-'info_short' => 'Informoatie',
'printableversion' => 'Drukboare versie',
'permalink' => 'Bluuvende link',
'print' => 'Drukn',
diff --git a/languages/messages/MessagesVmf.php b/languages/messages/MessagesVmf.php
index 368e808f..325e0556 100644
--- a/languages/messages/MessagesVmf.php
+++ b/languages/messages/MessagesVmf.php
@@ -33,28 +33,28 @@ $namespaceNames = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Dobâldâ_Wajdârlajdungân' ),
- 'Userlogin' => array( 'Ôômäldâ' ),
- 'Userlogout' => array( 'Ôbmäldâ' ),
- 'Preferences' => array( 'Ôischtälungâ' ),
- 'Watchlist' => array( 'Bäoobôchdungslisdâ' ),
- 'Recentchanges' => array( 'Lädsdâ_Änârungâ' ),
- 'Upload' => array( 'Hoochlaadâ' ),
- 'Statistics' => array( 'Schdadisdign' ),
- 'Newpages' => array( 'Nojâ_Sajdâ' ),
+ 'Allmessages' => array( 'Ôlâ_Nôôchrichdâ' ),
'Allpages' => array( 'Ôlâ_Sajdâ' ),
- 'Prefixindex' => array( 'Indägs' ),
- 'Specialpages' => array( 'Schbädsjaalsajdâ' ),
+ 'Categories' => array( 'Gadâgoriin' ),
+ 'Confirmemail' => array( 'Iimäjl_bschdädigâ' ),
'Contributions' => array( 'Bajdräächâ' ),
+ 'DoubleRedirects' => array( 'Dobâldâ_Wajdârlajdungân' ),
'Emailuser' => array( 'Iimäjlâ' ),
- 'Confirmemail' => array( 'Iimäjl_bschdädigâ' ),
- 'Movepage' => array( 'Sajdâ_färschiibâ' ),
- 'Categories' => array( 'Gadâgoriin' ),
'Export' => array( 'Ägsbordiirn' ),
- 'Allmessages' => array( 'Ôlâ_Nôôchrichdâ' ),
- 'Undelete' => array( 'Wiidârhärschdälâ' ),
'Import' => array( 'Imbordiirn' ),
+ 'Movepage' => array( 'Sajdâ_färschiibâ' ),
+ 'Newpages' => array( 'Nojâ_Sajdâ' ),
+ 'Preferences' => array( 'Ôischtälungâ' ),
+ 'Prefixindex' => array( 'Indägs' ),
+ 'Recentchanges' => array( 'Lädsdâ_Änârungâ' ),
+ 'Specialpages' => array( 'Schbädsjaalsajdâ' ),
+ 'Statistics' => array( 'Schdadisdign' ),
+ 'Undelete' => array( 'Wiidârhärschdälâ' ),
'Unwatchedpages' => array( 'Unbäoobôchdâdâ_Sajdn' ),
+ 'Upload' => array( 'Hoochlaadâ' ),
+ 'Userlogin' => array( 'Ôômäldâ' ),
+ 'Userlogout' => array( 'Ôbmäldâ' ),
+ 'Watchlist' => array( 'Bäoobôchdungslisdâ' ),
);
$messages = array(
@@ -187,7 +187,6 @@ ausghenn, mr mus dâdsuu ufm ajchnen rächnâr was âjrichdn ghenn)',
'history' => 'Wärsjoonsfolche',
'history_short' => 'Wärsjoonsfolche',
'updatedmarker' => "is gändârd wôrn sajde ds'ledschd dôô wôôr",
-'info_short' => 'Infôrmadsjoon',
'printableversion' => 'Drug-wärsjoon',
'permalink' => 'Beschdendichä lingh',
'print' => 'Ausdrugâ',
@@ -357,8 +356,6 @@ Wen's des ned is, bisd womeeglich iwa ân feela in dr sofdwäâr gschdolbäd. In
'extlink_tip' => 'Lingg nach ausârhalb (achdung, „http://“ ghäärd fôrnewäch dâdsu)',
'headline_sample' => 'Iiwârschrifd 2. ôrdnung',
'headline_tip' => 'Iiwârschrifd 2. ôrdnung',
-'math_sample' => 'Dô dii fôrml (in TEX) nâjschrajm',
-'math_tip' => 'Mademaadische Fôrml (in LATEX)',
'nowiki_sample' => 'Dô än uunfôrmadiirdn dhägsd nâjschrajm',
'nowiki_tip' => 'Uufôrmadiirdâr dhägsd',
'image_tip' => 'Âjbedâde dadaj',
@@ -507,7 +504,6 @@ Hirmid sagsd, das Du den dhägsd '''selbâr gschriim''' hasd, das däär dhägsd
'changepassword' => "S'bhaswôrd ändârn",
'prefs-skin' => 'Schaale',
'skin-preview' => 'Môôl schbign',
-'prefs-math' => 'TeX',
'datedefault' => 'Nôrmaal',
'prefs-datetime' => 'Daadum un dsajd',
'prefs-personal' => 'Benudsâr-daadn',
@@ -531,8 +527,6 @@ Hirmid sagsd, das Du den dhägsd '''selbâr gschriim''' hasd, das däär dhägsd
'columns' => 'Soofiil schbaldn',
'searchresultshead' => 'Suuchn',
'resultsperpage' => 'Broo rudsch dsajchn:',
-'contextlines' => 'Dsajln fir jeedn fund:',
-'contextchars' => 'Soofiil dsjachn broo dsjaln:',
'recentchangesdays' => 'Wiifiil dääch dsrig baj „Ledschdn ändrungn“',
'recentchangesdays-max' => 'Hegschdns $1 {{PLURAL:$1|daach|dääch}}',
'recentchangescount' => 'Wiifiil ändrungn dsrig baj „Ledschdn ändrungn“',
@@ -619,7 +613,6 @@ Dii lisdn undn dsajch dâfâu nôr äärschd môôl {{PLURAL:$1|an|$1}} fârwajs
S'gajd awâr aa â [[Special:WhatLinksHere/$2|lisdn mid alâ fârwajs]].",
'nolinkstoimage' => 'Diâ dadaj wärd närchends benudsd.',
'morelinkstoimage' => '[[Special:WhatLinksHere/$1|Diâ folchende]] fârwajs uf diâ dadaj.',
-'redirectstofile' => 'Diâ {{PLURAL:$1|folchende dadaj schigd|folchende $1 dadajâ schigâ}} uf diâ dadaj wajdâr:',
'duplicatesoffile' => 'Dii {{PLURAL:$1|folchende dadaj is â dublighaad|folchende $1 dadajâ sn dublighaade}} fon dâr dadaj ([[Special:FileDuplicateSearch/$2|wajdâre ôôndlshajdâ]]):',
'sharedupload' => 'Dii dadaj ghumd fo $1, un mär däf se fär annäre brojägd aa ´heernemâ.',
'sharedupload-desc-there' => 'Dii dadaj ghumd fon $1, un mr däf se fir andârâ brojägd aa nemâ. Genauârs schded uf dr [$2 beschrajwungssajdâ fon dr dadaj].',
@@ -672,14 +665,12 @@ S'gajd awâr aa â [[Special:WhatLinksHere/$2|lisdn mid alâ fârwajs]].",
# Watchlist
'watchlist' => 'Maj beoobachdungs-lisdn',
'mywatchlist' => 'Mâj beoobachdungslisdn',
-'addedwatch' => 'Wärd ab jeds beoobachd',
'addedwatchtext' => "Di sajdn „[[:$1]]“ schdäd eds mid af dajnâr [[Special:Watchlist|beoobachdungs-lisdn]] .
Wen sich af der sajdn oda iirâr disghusjoons-sajdn was duud, wärd se ab eds
af di „[[Special:RecentChanges|Ledsdn ändrunga]]“ fäd dâdsuugschriim.
Wenns'd dii sajdn irchendwan amôl nimä fârfolchn wilsd, musd bloos af „{{int:Unwatch}}“ glign.",
-'removedwatch' => 'Wärd eds nimä´ beoobachd',
'removedwatchtext' => 'Dii sajdn „[[:$1]]“ is fo Dajnâr [[Special:Watchlist|beoobachdungslisdn]] nundârgnumma.',
'watch' => 'Beoobachdn',
'watchthispage' => 'Dii sajdn undâr beoobachdung nämâ',
@@ -696,7 +687,7 @@ Wenns'd dii sajdn irchendwan amôl nimä fârfolchn wilsd, musd bloos af „{{in
'deletepage' => 'Sajdn leschn',
'confirmdeletetext' => "Duu bisd grôd dâbaj, â sajdn midsamd alle dsugheeriche alde wärsjoona ds'leschn. Bide beschdäädich, das De wasd, was des als bewirgd, un das De Dich dâbaj aa an d'[[{{MediaWiki:Policy-url}}|richliinjen]] fo dem wighi hiir häldsd.",
'actioncomplete' => 'Erleedichd',
-'deletedtext' => '„<nowiki>$1</nowiki>“ is gleschd wôrn. Im $2 findsd â lisdn mid dâ ledsdn leschunga.',
+'deletedtext' => '„$1“ is gleschd wôrn. Im $2 findsd â lisdn mid dâ ledsdn leschunga.',
'deletedarticle' => 'had „[[$1]]“ gleschd',
'dellogpage' => 'Logbuch fo di leschunga',
'deletecomment' => 'Grund:',
@@ -724,7 +715,7 @@ Wenns'd dii sajdn irchendwan amôl nimä fârfolchn wilsd, musd bloos af „{{in
'protectexpiry' => 'Schbär-dauâr:',
'protect_expiry_invalid' => 'Dii ôôgeemne schbärdsajd is uugildich.',
'protect_expiry_old' => 'Dii schbärdsajd is scho ausglofn.',
-'protect-text' => 'Dôô koosd dii fârschiida schbärn fon där sajdn „<nowiki>$1</nowiki>“ ôôschaua un ändârn.',
+'protect-text' => 'Dôô koosd dii fârschiida schbärn fon där sajdn „$1“ ôôschaua un ändârn.',
'protect-locked-access' => "Duu hôsd nach Dajm Ôôgmäldnschdand (fgl. Daj ghondo) ned des odâr diâ rechd, um an där schbäre fon derär sajdn was ds'ändârn. Däärdsajd sin dii gsedsdn schbärn fir dii sajdn '''„$1“:'''",
'protect-cascadeon' => 'Dii sajdn is däärdsajd daal fon âm reghursiifâ schbärn. Des ged iwâr {{PLURAL:$1|folchende sajdn|dii folchendn sajdn}} wech, un wal dii reghursiif gschbärd {{PLURAL:$1|is|san}}, isâs aa dii sajdn hiir. Ob mr jeds hiir loghaal schbärd odr endschbärd, des endârd alâs nigs drôô, was an schbärung fon da heer iwârghomd.',
'protect-default' => 'Ale benudsâr',
@@ -923,11 +914,10 @@ Bidde gug's mi´m foorschau-gnobf ôô fôrm schbajchan",
'nextdiff' => 'Undârschiid fo där nägsdn ändrung →',
# Media information
-'file-info-size' => '$1 × $2 pigsl, dadajgrääsn: $3, MIME-tib: $4',
-'file-nohires' => "<small>A he´äre aafleesung gibd's ghaane.</small>",
-'svg-long-desc' => 'SVG-dadaj, ufleesung: $1 × $2 pigsl, dadajgreesn: $3',
-'show-big-image' => 'Bild in hegsdâr aufleesung',
-'show-big-image-thumb' => '<small>Greäs fo där schbigg-ôôsichd: $1 × $2 bhigsl</small>',
+'file-info-size' => '$1 × $2 pigsl, dadajgrääsn: $3, MIME-tib: $4',
+'file-nohires' => "<small>A he´äre aafleesung gibd's ghaane.</small>",
+'svg-long-desc' => 'SVG-dadaj, ufleesung: $1 × $2 pigsl, dadajgreesn: $3',
+'show-big-image' => 'Bild in hegsdâr aufleesung',
# Bad image list
'bad_image_list' => 'Fôrmaad:
@@ -946,7 +936,13 @@ Bloos dsajln, dii mi´m dsajchn * ôôfanga, wärn berigsichdichd. Un dä ärsc
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'brajdn',
@@ -954,7 +950,7 @@ Bloos dsajln, dii mi´m dsajchn * ôôfanga, wärn berigsichdichd. Un dä ärsc
# External editor support
'edit-externally' => 'Dii dadaj mid an ägsdärna brogram ändârn',
-'edit-externally-help' => '(Määr un genauârs dâdsuu baj den [http://www.mediawiki.org/wiki/Manual:External_editors Inschdaladsjoonsanwajsungn])',
+'edit-externally-help' => '(Määr un genauârs dâdsuu baj den [//www.mediawiki.org/wiki/Manual:External_editors Inschdaladsjoonsanwajsungn])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'ale',
diff --git a/languages/messages/MessagesVo.php b/languages/messages/MessagesVo.php
index b85c0b4f..fe72a93e 100644
--- a/languages/messages/MessagesVo.php
+++ b/languages/messages/MessagesVo.php
@@ -57,56 +57,56 @@ $dateFormats = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'Lüodükömstelik', 'Lüodüköms telik' ),
+ 'Allmessages' => array( 'Nünsvalik' ),
+ 'Allpages' => array( 'Padsvalik' ),
+ 'Ancientpages' => array( 'Padsbäldik' ),
+ 'Blankpage' => array( 'PadVagik' ),
'BrokenRedirects' => array( 'Lüodükömsdädik', 'Lüodüköms dädik' ),
+ 'Categories' => array( 'Klads' ),
+ 'Confirmemail' => array( 'Fümedönladeti' ),
+ 'Contributions' => array( 'Keblünots' ),
'Disambiguations' => array( 'Telplänovs', 'Telplänovapads' ),
- 'Userlogin' => array( 'Gebananunäd' ),
- 'Userlogout' => array( 'Gebanasenunäd' ),
- 'Preferences' => array( 'Buükams' ),
- 'Watchlist' => array( 'Galädalised' ),
- 'Recentchanges' => array( 'Votükamsnulik' ),
- 'Upload' => array( 'Löpükön' ),
+ 'DoubleRedirects' => array( 'Lüodükömstelik', 'Lüodüköms telik' ),
'Listfiles' => array( 'Ragivalised', 'Magodalised' ),
- 'Newimages' => array( 'Ragivsnulik', 'Magodsnulik', 'Magods nulik' ),
'Listusers' => array( 'Gebanalised' ),
- 'Statistics' => array( 'Statits' ),
- 'Randompage' => array( 'Padfädik', 'Pad fädik', 'Fädik' ),
+ 'Log' => array( 'Jenotalised', 'Jenotaliseds' ),
'Lonelypages' => array( 'Padssoelöl', 'Pads soelöl' ),
- 'Uncategorizedpages' => array( 'Padsnenklads', 'Pads nen klads' ),
+ 'Longpages' => array( 'Padslunik' ),
+ 'Mostimages' => array( 'Ragivs suvüno peyümöls' ),
+ 'Mostlinked' => array( 'Suvüno peyümöls' ),
+ 'Mostlinkedcategories' => array( 'Klads suvüno peyümöls' ),
+ 'Mostlinkedtemplates' => array( 'Samafomots suvüno peyümöls' ),
+ 'Movepage' => array( 'Topätükön' ),
+ 'Mycontributions' => array( 'Keblünotsobik' ),
+ 'Mypage' => array( 'Padobik' ),
+ 'Mytalk' => array( 'Bespikobik' ),
+ 'Newimages' => array( 'Ragivsnulik', 'Magodsnulik', 'Magods nulik' ),
+ 'Newpages' => array( 'Padsnulik' ),
+ 'Preferences' => array( 'Buükams' ),
+ 'Protectedpages' => array( 'Padspejelöl' ),
+ 'Protectedtitles' => array( 'Tiädspejelöl' ),
+ 'Randompage' => array( 'Padfädik', 'Pad fädik', 'Fädik' ),
+ 'Recentchanges' => array( 'Votükamsnulik' ),
+ 'Search' => array( 'Suk' ),
+ 'Shortpages' => array( 'Padsbrefik' ),
+ 'Specialpages' => array( 'Padspatik' ),
+ 'Statistics' => array( 'Statits' ),
'Uncategorizedcategories' => array( 'Kladsnenklads', 'Klads nen klads' ),
'Uncategorizedimages' => array( 'Ragivsnenklads', 'Magodsnenklads', 'Magods nen klads' ),
+ 'Uncategorizedpages' => array( 'Padsnenklads', 'Pads nen klads' ),
'Uncategorizedtemplates' => array( 'Samafomotsnenklads', 'Samafomots nen klads' ),
'Unusedcategories' => array( 'Kladsnopageböls', 'Klad no pageböls' ),
'Unusedimages' => array( 'Ragivsnopageböls', 'Magodsnopageböls', 'Magods no pageböls' ),
- 'Wantedpages' => array( 'Pads mekabik', 'Padsmekabik', 'Padspavilöl', 'Yümsdädik', 'Pads pavilöl', 'Yüms dädik' ),
+ 'Upload' => array( 'Löpükön' ),
+ 'Userlogin' => array( 'Gebananunäd' ),
+ 'Userlogout' => array( 'Gebanasenunäd' ),
+ 'Version' => array( 'Fomam' ),
'Wantedcategories' => array( 'Klads mekabik', 'Kladsmekabik', 'Kladspavilöl', 'Klads pavilöl' ),
'Wantedfiles' => array( 'Ragivsmekabik' ),
+ 'Wantedpages' => array( 'Pads mekabik', 'Padsmekabik', 'Padspavilöl', 'Yümsdädik', 'Pads pavilöl', 'Yüms dädik' ),
'Wantedtemplates' => array( 'Samafomotsmekabik' ),
- 'Mostlinked' => array( 'Suvüno peyümöls' ),
- 'Mostlinkedcategories' => array( 'Klads suvüno peyümöls' ),
- 'Mostlinkedtemplates' => array( 'Samafomots suvüno peyümöls' ),
- 'Mostimages' => array( 'Ragivs suvüno peyümöls' ),
- 'Shortpages' => array( 'Padsbrefik' ),
- 'Longpages' => array( 'Padslunik' ),
- 'Newpages' => array( 'Padsnulik' ),
- 'Ancientpages' => array( 'Padsbäldik' ),
- 'Protectedpages' => array( 'Padspejelöl' ),
- 'Protectedtitles' => array( 'Tiädspejelöl' ),
- 'Allpages' => array( 'Padsvalik' ),
- 'Specialpages' => array( 'Padspatik' ),
- 'Contributions' => array( 'Keblünots' ),
- 'Confirmemail' => array( 'Fümedönladeti' ),
+ 'Watchlist' => array( 'Galädalised' ),
'Whatlinkshere' => array( 'Yümsisio', 'Isio' ),
- 'Movepage' => array( 'Topätükön' ),
- 'Categories' => array( 'Klads' ),
- 'Version' => array( 'Fomam' ),
- 'Allmessages' => array( 'Nünsvalik' ),
- 'Log' => array( 'Jenotalised', 'Jenotaliseds' ),
- 'Mypage' => array( 'Padobik' ),
- 'Mytalk' => array( 'Bespikobik' ),
- 'Mycontributions' => array( 'Keblünotsobik' ),
- 'Search' => array( 'Suk' ),
- 'Blankpage' => array( 'PadVagik' ),
);
$messages = array(
@@ -232,15 +232,6 @@ $messages = array(
'category-file-count-limited' => '{{PLURAL:$1|Ragiv sököl binon|Ragivs sököl $1 binons}} in klad at.',
'listingcontinuesabbrev' => '(fov.)',
-'mainpagetext' => "'''El MediaWiki pestiton benosekiko.'''",
-'mainpagedocfooter' => 'Konsultolös [http://meta.wikimedia.org/wiki/Help:Contents Gebanageidian] ad tuvön nünis dö geb programema vükik.
-
-== Nüdugot ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Parametalised]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki: SSP]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Potalised tefü fomams nulik ela MediaWiki]',
-
'about' => 'Tefü',
'article' => 'Ninädapad',
'newwindow' => '(maifikon in fenät nulik)',
@@ -289,10 +280,10 @@ $messages = array(
'history' => 'Padajenotem',
'history_short' => 'Jenotem',
'updatedmarker' => 'pävotükon pos visit lätik oba',
-'info_short' => 'Nün',
'printableversion' => 'Fom dabükovik',
'permalink' => 'Yüm laidüpik',
'print' => 'Bükön',
+'view' => 'Logön',
'edit' => 'Redakön',
'create' => 'Jafön',
'editthispage' => 'Redakolöd padi at',
@@ -300,6 +291,7 @@ $messages = array(
'delete' => 'Moükön',
'deletethispage' => 'Moükolös padi at',
'undelete_short' => 'Sädunön moükami {{PLURAL:$1|redakama bal|redakamas $1}}',
+'viewdeleted_short' => 'Logön {{PLURAL:$1|redakami pemoüköl bal|redakamis pemoüköls $1}}',
'protect' => 'Jelön',
'protect_change' => 'votükön',
'protectthispage' => 'Jelön padi at',
@@ -467,11 +459,10 @@ Beg: $2',
'protectedinterface' => 'Pad at jafon vödemis sitanünas, ed anu pelökofärmükon ad vitön migebis.',
'editinginterface' => "'''Nuned:''' Anu redakol padi, kel labükon vödemis bevüik pro programem.
Votükams pada at oflunons logoti gebanasita pro gebans votik.
-Ad tradutön vödemis, demolös gebi ela [http://translatewiki.net/wiki/Main_Page?setlang=vo translatewiki.net]: topükamaproyeg ela MediaWiki.",
+Ad tradutön vödemis, demolös gebi ela [//translatewiki.net/wiki/Main_Page?setlang=vo translatewiki.net]: topükamaproyeg ela MediaWiki.",
'sqlhidden' => '(SQL beg peklänedon)',
'cascadeprotected' => 'Pad at pejelon ta redakam, bi pakeninükon fa {{PLURAL:$1|pad|pads}} sököl, kels pejelons ma „jänajel“: $2',
'namespaceprotected' => "No dalol redakön padis in nemaspad: '''$1'''.",
-'customcssjsprotected' => 'No dalol redakön padi at, bi keninükon parametis pösodik gebana votik.',
'ns-specialprotected' => 'Pads patik no kanons paredakön.',
'titleprotected' => "Jaf tiäda at penemögükon fa geban: [[User:$1|$1]].
Kod binon: ''$2''.",
@@ -523,7 +514,7 @@ Välolös, begö! nemi votik.',
'nosuchuser' => 'No dabinon geban labü nem: "$1".
Gebananems distidons mayudis i minudis.
Koräkolös tonatami nema at, u [[Special:UserLogin/signup|jafolös kali nulik]].',
-'nosuchusershort' => 'No dabinon geban labü nem: "<nowiki>$1</nowiki>". Koräkolös tonatami nema at.',
+'nosuchusershort' => 'No dabinon geban labü nem: "$1". Koräkolös tonatami nema at.',
'nouserspecified' => 'Mutol välön gebananemi.',
'wrongpassword' => 'Letavöd neveräton. Steifülolös dönu.',
'wrongpasswordempty' => 'Letavöd vagon. Steifülolös dönu.',
@@ -560,7 +551,7 @@ Kanol nedemön penedi at, üf jafam kala at binon pöl.',
Stebedolös büä osteifülol nogna.',
'loginlanguagelabel' => 'Pük: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Votükön letavödi',
'resetpass_announce' => 'Enunädol oli me kot nelaidüpik pisedöl ole. Ad finükön nunädami, mutol välön letavödi nulik is:',
'resetpass_header' => 'Votükön kalaletavödi',
@@ -577,6 +568,9 @@ Stebedolös büä osteifülol nogna.',
Ba ya evotükol benosekiko letavödi olik, u ya ebegol benosekiko letavödi nelaidüpik nulik.',
'resetpass-temp-password' => 'Letavöd nelaidüpik:',
+# Special:PasswordReset
+'passwordreset-username' => 'Gebananem:',
+
# Edit page toolbar
'bold_sample' => 'Vödem bigik',
'bold_tip' => 'Vödem bigik',
@@ -588,8 +582,6 @@ Ba ya evotükol benosekiko letavödi olik, u ya ebegol benosekiko letavödi nela
'extlink_tip' => 'Yüm plödik (memolös foyümoti: http://)',
'headline_sample' => 'Tiädavödem',
'headline_tip' => 'Tiäd nivoda 2id',
-'math_sample' => 'Pladolös malatami isio',
-'math_tip' => 'Malatam matematik (LaTeX)',
'nowiki_sample' => 'Pladolös isio vödemi no pefomätöli',
'nowiki_tip' => 'Nedemön vükifomätami',
'image_tip' => 'Magod penüpladöl',
@@ -662,7 +654,7 @@ If binol is pölo, välolös knopi: '''geikön''' bevüresodatävöma olik.",
'anontalkpagetext' => "----''Bespikapad at duton lü geban nennemik, kel no nog ejafon kali, u no vilon labön u gebön oni. Sekü atos pemütobs ad gebön ladeti-IP ad dientifükön gebani at. Ladets-IP kanons pagebön fa gebans difik. If binol geban nennemik e cedol, das küpets netefik pelüodükons ole, [[Special:UserLogin|jafolös, begö! kali]], u [[Special:UserLogin|nunädolös oli]] ad vitön kofudi ko gebans nennemik votik.''",
'noarticletext' => 'Atimo no dabinon vödem su pad at.
Kanol [[Special:Search/{{PAGENAME}}|sukön padatiädi at]] su pads votik, <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} sukön in jenotaliseds tefik] u [{{fullurl:{{FULLPAGENAME}}|action=edit}} redakön padi at]</span>.',
-'userpage-userdoesnotexist' => 'Gebanakal: "$1" no peregistaron. Fümükolös, va vilol jäfön/redakön padi at.',
+'userpage-userdoesnotexist' => 'Gebanakal: "<nowiki>$1</nowiki>" no peregistaron. Fümükolös, va vilol jäfön/redakön padi at.',
'userpage-userdoesnotexist-view' => 'Gebenakal: "$1" no peregistaron.',
'clearyourcache' => "'''Prudö!''' Pos dakip buükamas, mögos, das ozesüdos ad nedemön memi nelaidüpik bevüresodatävöma ad logön votükamis.
'''Mozilla / Firefox / Safari:''' kipolöd klavi: ''Shift'' dono e välolöd eli ''Reload'' (= dönulodön) me mugaparat, u dränolöd klävis: ''Ctrl-F5'' u ''Ctrl-R'' (''Command-R'' if labol eli Mac);
@@ -986,7 +978,6 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
'changepassword' => 'Votükön letavödi',
'prefs-skin' => 'Fomät',
'skin-preview' => 'Büologed',
-'prefs-math' => 'Logot formülas',
'datedefault' => 'Buükam nonik',
'prefs-datetime' => 'Dät e Tim',
'prefs-personal' => 'Gebananüns',
@@ -1008,8 +999,6 @@ Kontrololös, va votükam at okipon fovöfi padajenotema.',
'columns' => 'Padüls:',
'searchresultshead' => 'Suk',
'resultsperpage' => 'Tiäds petuvöl a pad:',
-'contextlines' => 'Kedets a pad petuvöl:',
-'contextchars' => 'Kevödem a kedet:',
'stub-threshold' => 'Soliad pro fomätam <a href="#" class="stub">sidayümas</a> (jöläts):',
'recentchangesdays' => 'Dels ad pajonön in votükams nulik:',
'recentchangesdays-max' => '(maxum: {{PLURAL:$1|del|dels}} $1)',
@@ -1289,8 +1278,8 @@ Ad pladön ragivi ini pad semik, gebolös yümi fomätü:
'filetype-bad-ie-mime' => 'Löpükam ragiva at no mögon, bi el Internet Explorer lelogonöv oni asä „$1“: ragivasot no pedälöl ä mögiko riskädik.',
'filetype-unwanted-type' => "'''\".\$1\"''' binon ragivasot no pavipöl.
{{PLURAL:\$3|Ragivasot pabuüköl binon|Ragivasots pabuüköl binons}} \$2.",
-'filetype-banned-type' => "'''\".\$1\"''' binon ragivasot no pedälöl.
-{{PLURAL:\$3|Ragivasot pedälöl binon|Ragivasots pedälöl binons}} \$2.",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|binon ragivasot no pedälöl|binons ragivasots no pedälöls}}.
+{{PLURAL:$3|Ragivasot pedälöl binon|Ragivasots pedälöl binons}} $2.',
'filetype-missing' => 'Ragiv no labon stäänükoti (äs el „.jpg“).',
'large-file' => 'Pakomandos, das ragivs no binons gretikums ka mö $1; ragiv at binon mö $2.',
'largefileserver' => 'Ragiv at binon tu gretik: dünanünöm no kanon dälon oni.',
@@ -1329,9 +1318,6 @@ If nog vilol lopükön ragivi olik, geikolös e gebolös nemi votik. [[File:$1|t
'upload-maxfilesize' => 'Ragivagretot gretikün: $1',
'watchthisupload' => 'Galädolöd ragivi at',
'filewasdeleted' => 'Ragiv labü nem at büo pelöpükon e poso pemoükon. Kontrololös eli $1 büä olöpükol oni dönu.',
-'upload-wasdeleted' => "'''Nuned: Löpükol ragivi büo pimoüköl.'''
-
-Vätälolös, va pötos ad löpükön ragivi at. Kodü koveniäl, jenotalised tefü moükam ragiva at pagivon is.",
'filename-bad-prefix' => "Nem ragiva fa ol palöpüköl primon me '''\"\$1\"''': nem no bepenöl nomiko pagevöl itjäfidiko fa käms nulädik. Välolös, begö! nemi bepenöl pro ragiv olik.",
'upload-success-subj' => 'Löpükam eplöpon',
@@ -1401,7 +1387,6 @@ Lised dono jonon {{PLURAL:$1|padayümi balid|padayümis balid $1}} te lü ragiv
[[Special:WhatLinksHere/$2|Lised lölöfik]] gebidon.',
'nolinkstoimage' => 'Pads nonik peyümons ad ragiv at.',
'morelinkstoimage' => 'Logolös [[Special:WhatLinksHere/$1|yümis pluik]] ad ragiv at.',
-'redirectstofile' => '{{PLURAL:$1|Ragiv sököl lüodükon|Ragivs sököl $1 lüodükons}} ad ragiv at:',
'duplicatesoffile' => '{{Plural:$1|Ragiv fovik leigon|Ragivs fovik $1 leigons}} ko ragiv at ([[Special:FileDuplicateSearch/$2|nüns pluik]]):',
'sharedupload' => 'Ragiv at binon se $1 e kanon pagebön fa proyegs votik.',
'uploadnewversion-linktext' => 'Löpükön fomami nulik ragiva at',
@@ -1657,28 +1642,30 @@ Ba dabinons [[{{MediaWiki:Listgrouprights-helppage}}|nüns pluik]] tefü gebanag
'listgrouprights-removegroup-all' => 'Kanon moükön grupis valik',
# E-mail user
-'mailnologin' => 'Ladet nonik ad sedön',
-'mailnologintext' => 'Mutol [[Special:UserLogin|nunädön oli]] e labön ladeti leäktronik lonöföl pö [[Special:Preferences|buükams olik]] ad dalön sedön poti leäktronik gebanes votik.',
-'emailuser' => 'Penön gebane at',
-'emailpage' => 'Penön gebane',
-'emailpagetext' => 'Kanol gebön fometi dono ad sedön penedi leäktronik gebane at. Ladet leäktronik in [[Special:Preferences|gebanabüukams olik]] opubon as fonät (el "De:") peneda, dat getan okanon gepenön ole.',
-'usermailererror' => 'Potayeg egesedon pöli:',
-'defemailsubject' => 'Ladet leäktronik ela {{SITENAME}}',
-'noemailtitle' => 'Ladet no dabinon',
-'noemailtext' => 'Geban at no egivon ladeti leäktronik lonöföl.',
-'nowikiemailtitle' => 'Pot leäktronik no pedälon.',
-'nowikiemailtext' => 'Geban at no vilon getön penedis leäktronik gebanas votik.',
-'email-legend' => 'Sedön penedi gebane votik in {{SITENAME}}',
-'emailfrom' => 'De el:',
-'emailto' => 'Ele:',
-'emailsubject' => 'Yegäd:',
-'emailmessage' => 'Nun:',
-'emailsend' => 'Sedolöd',
-'emailccme' => 'Sedolöd obe kopiedi peneda obik.',
-'emailccsubject' => 'Kopied peneda olik ele $1: $2',
-'emailsent' => 'Pened pesedon',
-'emailsenttext' => 'Pened leäktronik ola pesedon.',
-'emailuserfooter' => 'Pened at pesedon fa geban: $1 gebane: $2 medü program: „sedön gebane penedi“ ela {{SITENAME}}.',
+'mailnologin' => 'Ladet nonik ad sedön',
+'mailnologintext' => 'Mutol [[Special:UserLogin|nunädön oli]] e labön ladeti leäktronik lonöföl pö [[Special:Preferences|buükams olik]] ad dalön sedön poti leäktronik gebanes votik.',
+'emailuser' => 'Penön gebane at',
+'emailpage' => 'Penön gebane',
+'emailpagetext' => 'Kanol gebön fometi dono ad sedön penedi leäktronik gebane at. Ladet leäktronik in [[Special:Preferences|gebanabüukams olik]] opubon as fonät (el "De:") peneda, dat getan okanon gepenön ole.',
+'usermailererror' => 'Potayeg egesedon pöli:',
+'defemailsubject' => 'Ladet leäktronik ela {{SITENAME}}',
+'noemailtitle' => 'Ladet no dabinon',
+'noemailtext' => 'Geban at no egivon ladeti leäktronik lonöföl.',
+'nowikiemailtitle' => 'Pot leäktronik no pedälon.',
+'nowikiemailtext' => 'Geban at no vilon getön penedis leäktronik gebanas votik.',
+'emailusername' => 'Gebananem:',
+'emailusernamesubmit' => 'Sedön',
+'email-legend' => 'Sedön penedi gebane votik in {{SITENAME}}',
+'emailfrom' => 'De el:',
+'emailto' => 'Ele:',
+'emailsubject' => 'Yegäd:',
+'emailmessage' => 'Nun:',
+'emailsend' => 'Sedolöd',
+'emailccme' => 'Sedolöd obe kopiedi peneda obik.',
+'emailccsubject' => 'Kopied peneda olik ele $1: $2',
+'emailsent' => 'Pened pesedon',
+'emailsenttext' => 'Pened leäktronik ola pesedon.',
+'emailuserfooter' => 'Pened at pesedon fa geban: $1 gebane: $2 medü program: „sedön gebane penedi“ ela {{SITENAME}}.',
# Watchlist
'watchlist' => 'Galädalised obik',
@@ -1688,12 +1675,12 @@ Ba dabinons [[{{MediaWiki:Listgrouprights-helppage}}|nüns pluik]] tefü gebanag
'watchlistanontext' => '$1 ad logön u redakön lienis galädaliseda olik',
'watchnologin' => 'No enunädon oki',
'watchnologintext' => 'Mutol [[Special:UserLogin|nunädön oli]] büä kanol votükön galädalisedi olik.',
-'addedwatch' => 'Peläüköl lä galädalised',
+'addwatch' => 'Peläükön lä galädalised',
'addedwatchtext' => "Pad: \"[[:\$1]]\" peläükon lä [[Special:Watchlist|galädalised]] olik.
Votükams fütürik pada at, äsi bespikapada onik, polisedons us, e pad popenon '''me tonats dagik''' in [[Special:RecentChanges|lised votükamas nulik]] ad fasilükön tuvi ona.
If vilol poso moükön padi de galädalised olik, välolös lä on knopi: „negalädön“.",
-'removedwatch' => 'Pemoükon de galädalised',
+'removewatch' => 'Pemoükön de galädalised',
'removedwatchtext' => 'Pad: „[[:$1]]“ pemoükon se [[Special:Watchlist|galädalised olik]].',
'watch' => 'Galädön',
'watchthispage' => 'Galädolöd padi at',
@@ -1747,10 +1734,10 @@ Kanol i geükön nunamastänis padas valik galädaliseda olik.
--
Ad votükön parametami galädaliseda olik, loglös
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Küpets e yuf pluik:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Moükolöd padi',
@@ -1764,7 +1751,7 @@ Küpets e yuf pluik:
'historywarning' => 'Nuned: pad, keli vilol moükön, labon jenotemi:',
'confirmdeletetext' => 'Primikol ad moükön laidüpiko padi u magodi sa jenotem valik ona. Fümedolös, das desinol ad dunön atosi, das suemol sekis, e das dunol atosi bai [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Peledunon',
-'deletedtext' => 'Pad: "<nowiki>$1</nowiki>" pemoükon;
+'deletedtext' => 'Pad: "$1" pemoükon;
$2 jonon moükamis nulik.',
'deletedarticle' => 'Pad: "[[$1]]" pemoükon',
'suppressedarticle' => 'logov pada: „[[$1]]“ pevotükon',
@@ -1818,7 +1805,7 @@ Logolös [[Special:ProtectedPages|lisedi padas pejelöl]], kö pajonons padijela
'protectexpiry' => 'Dul:',
'protect_expiry_invalid' => 'Dul no lonöfon.',
'protect_expiry_old' => 'Dul ya epasetikon.',
-'protect-text' => "Kanol logön e votükön is jelanivodi pada: '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Kanol logön e votükön is jelanivodi pada: '''$1'''.",
'protect-locked-blocked' => "No kanol votükön jelanivodi bi peblokol. Ekö! paramets anuik pada: '''$1''':",
'protect-locked-dblock' => "Jelanivods no kanons pavotükön sekü lökofärmükam vüka at. Ekö! paramets anuik pada: '''$1''':",
'protect-locked-access' => "Kal olik no labon däli ad votükön jelanivodi padas.
@@ -1960,11 +1947,12 @@ $1',
'whatlinkshere-filters' => 'Suls',
# Block/unblock
+'block' => 'Blokön gebani',
+'unblock' => 'Säblokön gebani',
'blockip' => 'Blokön gebani',
'blockip-title' => 'Blokön gebani',
'blockip-legend' => 'Blokön gebani',
'blockiptext' => 'Gebolös padi at ad blokön redakamagitäti gebananema u ladeta-IP semikas. Atos söton padunön teiko ad vitön vandalimi, e bai [[{{MediaWiki:Policy-url}}|dunalesets {{SITENAME}}]]. Penolös dono kodi patik pro blokam (a. s., mäniotolös padis pedobüköl).',
-'ipaddress' => 'Ladet-IP',
'ipadressorusername' => 'Ladet-IP u gebananem',
'ipbexpiry' => 'Dü',
'ipbreason' => 'Kod:',
@@ -1977,7 +1965,6 @@ $1',
** Kondöt tu komipälik u dredüköl
** Geb dobik kalas mödik
** Gebananem no zepabik',
-'ipbanononly' => 'Blokön te gebanis nen gebananem',
'ipbcreateaccount' => 'Neletön kalijafi',
'ipbemailban' => 'Nemögükön gebane sedi pota leäktronik',
'ipbenableautoblock' => 'Blokön itjäfidiko ladeti-IP lätik fa geban at pegeböli, äsi ladetis-IP fovik valik, yufü kels osteifülon ad redakön',
@@ -1988,7 +1975,6 @@ $1',
'ipbotherreason' => 'Kod(s) votik',
'ipbhidename' => 'Klänedön gebananemi se redakams e liseds',
'ipbwatchuser' => 'Galädon gebana- e bespikapadis gebana at',
-'ipballowusertalk' => 'Dälön gebane pebloköl ad redakön bespikapadi okik',
'ipb-change-block' => 'Dönublokön gebani me paramets at',
'badipaddress' => 'Ladet-IP no lonöfon',
'blockipsuccesssub' => 'Blokam eplöpon',
@@ -2003,16 +1989,13 @@ $1',
'unblockiptext' => 'Gebolös padi at ad gegivön redakamafägi gebane (u ladete-IP) büo pibloköle.',
'ipusubmit' => 'Säblokön ladeti at',
'unblocked' => '[[User:$1|$1]] pesäblokon',
+'unblocked-range' => '$1 pesäblokon',
'unblocked-id' => 'Blokam: $1 pesädunon',
'ipblocklist' => 'Ladets-IP e gebananems pebloköls',
'ipblocklist-legend' => 'Tuvön gebani pebloköl',
-'ipblocklist-username' => 'Gebananem u ladet IP:',
-'ipblocklist-sh-userblocks' => 'kaliblokams $1',
-'ipblocklist-sh-tempblocks' => 'blokams nelaidüpik $1',
-'ipblocklist-sh-addressblocks' => 'blokams $1 tefü ladets-IP balatik',
+'blocklist-reason' => 'Kod',
'ipblocklist-submit' => 'Suk',
'ipblocklist-otherblocks' => '{{PLURAL:$1|Blokam|Blokams}} votik',
-'blocklistline' => '$1, $2 äblokon $3 ($4)',
'infiniteblock' => 'laidüpo',
'expiringblock' => 'dulon jü $1 düp $2',
'anononlyblock' => 'te nennemans',
@@ -2030,7 +2013,7 @@ $1',
'blocklogpage' => 'Jenotalised blokamas',
'blocklogentry' => '"[[$1]]" peblokon dü: $2 $3',
'reblock-logentry' => 'blokamaparamets gebana: [[$1]] pevotükons, pro dul: $2 (kod: $3)',
-'blocklogtext' => 'Is binon lised gebanablokamas e gebanasäblokamas. Ladets-IP itjäfidiko pebloköls no pajonons. Logolös blokamis e xilis anu lonöfölis in [[Special:IPBlockList|lised IP-blokamas]].',
+'blocklogtext' => 'Is binon lised gebanablokamas e gebanasäblokamas. Ladets-IP itjäfidiko pebloköls no pajonons. Logolös blokamis e xilis anu lonöfölis in [[Special:BlockList|lised IP-blokamas]].',
'unblocklogentry' => '$1 pesäblokon',
'block-log-flags-anononly' => 'te gebans nennemik',
'block-log-flags-nocreate' => 'kalijaf penemögükon',
@@ -2043,8 +2026,7 @@ $1',
'ipb_expiry_invalid' => 'Blokamadul no lonöfon.',
'ipb_expiry_temp' => 'Gebananemiblokams klänedik mutons binön laidüpiks.',
'ipb_already_blocked' => '"$1" ya peblokon',
-'ipb-needreblock' => '== Ya Peblokon ==
-Geban: $1 ya peblokon. Vilol-li votükön parametis?',
+'ipb-needreblock' => 'Geban: $1 ya peblokon. Vilol-li votükön parametis?',
'ipb-otherblocks-header' => '{{PLURAL:$1|Blokam|Blokams}} votik',
'ipb_cant_unblock' => 'Pöl: Bokamadientif: $1 no petuvon. Ba ya pesäblokon.',
'ipb_blocked_as_range' => 'Pöl: ladet-IP $1 no peblokon stedöfiko e no kanon pasäblokön.
@@ -2173,7 +2155,7 @@ Ad seveigön padis, penolös tiädis in penamaspad dono, tiädi bal a kedet, e v
'allmessagesdefault' => 'Vödem rigädik',
'allmessagescurrent' => 'Vödem nuik',
'allmessagestext' => 'Is binon lised sitanunas valik lonöföl in nemaspad: Sitanuns.
-Gebolös [http://www.mediawiki.org/wiki/Localisation Topükami ela MediaWiki] ed el [http://translatewiki.net translatewiki.net] if vilol keblünön topükame valemik ela MediaWiki.',
+Gebolös [//www.mediawiki.org/wiki/Localisation Topükami ela MediaWiki] ed el [//translatewiki.net translatewiki.net] if vilol keblünön topükame valemik ela MediaWiki.',
'allmessagesnotsupportedDB' => "Pad at no kanon pagebön bi el '''\$wgUseDatabaseMessages''' penemögükon.",
'allmessages-filter-legend' => 'Sul',
'allmessages-filter-unmodified' => 'Penevotüköl',
@@ -2332,33 +2314,11 @@ Pad luveratiko ninädon yümi lü bevüresodatopäd plödik in blägalised.',
'spam_blanking' => 'Moükam revidas valik (bi ninädons yüms lü $1)',
# Info page
-'infosubtitle' => 'Nüns tefü pad',
-'numedits' => 'Redakamanum (pad): $1',
-'numtalkedits' => 'Redakamanum (bespikapad): $1',
-'numwatchers' => 'Num galädanas: $1',
-'numauthors' => 'Num lautanas distik (pad): $1',
-'numtalkauthors' => 'Num lautanas distik (bespikapad): $1',
-
-# Math options
-'mw_math_png' => 'Ai el PNG',
-'mw_math_simple' => 'El HTML if go balugik, voto eli PNG',
-'mw_math_html' => 'El HTML if mögos, voto eli PNG',
-'mw_math_source' => 'Dakipolöd oni as TeX (pro bevüresodatävöms fomätü vödem)',
-'mw_math_modern' => 'Pakomandöl pro bevüresodatävöms nulädik',
-'mw_math_mathml' => 'El MathML if mögos (nog sperimänt)',
-
-# Math errors
-'math_failure' => 'Diletam fomüla no eplöpon',
-'math_unknown_error' => 'pök nesevädik',
-'math_unknown_function' => 'dun nesevädik',
-'math_lexing_error' => 'vödidiletam no eplöpon',
-'math_syntax_error' => 'süntagapöl',
-'math_image_error' => 'Feajafam ela PNG no eplöpon;
-vestigolös stitami verätik ela latex, ela dvips, ela gs, e feajafön',
-'math_bad_tmpdir' => 'No mögos ad penön ini / jafön ragiviär(i) matematik nelaidüpik.',
-'math_bad_output' => 'No mögos ad penön ini / jafön ragiviär(i) matematik labü seks',
-'math_notexvc' => 'Program-texvc ledunovik no petuvon;
-logolös eli math/README ad givulön parametemi.',
+'pageinfo-header-edits' => 'Redakams',
+'pageinfo-header-watchlist' => 'Galädalised',
+'pageinfo-header-views' => 'Logams',
+'pageinfo-subjectpage' => 'Pad',
+'pageinfo-talkpage' => 'Bespikapad',
# Patrolling
'markaspatrolleddiff' => 'Zepön',
@@ -2395,17 +2355,16 @@ $1',
'nextdiff' => 'Dif nulikum →',
# Media information
-'mediawarning' => "'''Nuned''': Ragiv at ba ninükon programi(s) badälik.
+'mediawarning' => "'''Nuned''': Ragiv at ba ninükon programi(s) badälik.
If ojäfidükol oni, nünömasit olik ba podämükon.",
-'imagemaxsize' => 'Miedükön magodis su pads magodis bepenöls ad:',
-'thumbsize' => 'Gretot magodüla:',
-'widthheightpage' => '$1×$2, {{PLURAL:$3|pad|pads}} $3',
-'file-info' => 'ragivagretot: $1, MIME-pated: $2',
-'file-info-size' => '$1 × $2 pixel, ragivagret: $3, pated MIME: $4',
-'file-nohires' => '<small>Gretot gudikum no pagebidon.</small>',
-'svg-long-desc' => 'ragiv in fomät: SVG, magodaziöbs $1 × $2, gretot: $3',
-'show-big-image' => 'Gretot gudikün',
-'show-big-image-thumb' => '<small>Gretot büologeda at: magodaziöbs $1 × $2</small>',
+'imagemaxsize' => 'Miedükön magodis su pads magodis bepenöls ad:',
+'thumbsize' => 'Gretot magodüla:',
+'widthheightpage' => '$1×$2, {{PLURAL:$3|pad|pads}} $3',
+'file-info' => 'ragivagretot: $1, MIME-pated: $2',
+'file-info-size' => '$1 × $2 pixel, ragivagret: $3, pated MIME: $4',
+'file-nohires' => '<small>Gretot gudikum no pagebidon.</small>',
+'svg-long-desc' => 'ragiv in fomät: SVG, magodaziöbs $1 × $2, gretot: $3',
+'show-big-image' => 'Gretot gudikün',
# Special:NewFiles
'newimages' => 'Pänotem ragivas nulik',
@@ -2429,14 +2388,21 @@ Te lisedaliens (liens me * primöl) pabevobons. Yüm balid liena muton binön yÃ
'metadata-help' => 'Ragiv at keninükon nünis pluik, luveratiko se käm u numatüköm me kel päjafon. If ragiv at ya pevotükon e no plu leigon ko rigädastad okik, mögos, das pats anik is palisedöls no plu bepenons ragivi in stad anuik.',
'metadata-expand' => 'Jonön patis pluik',
'metadata-collapse' => 'Klänedön patis pluik',
-'metadata-fields' => 'Nünabinets fomäta: EXIF is palisedöls pojonons su bespikapad magoda ifi nünataib pufärmükon. Nünabinets votik poklänedons.
+'metadata-fields' => 'Nünabinets magoda palisedöls in nun at pojonons su pad magoda ifi nünataib pufärmükon.
+Nünabinets votik poklänedons.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Vidot',
@@ -2450,13 +2416,11 @@ Te lisedaliens (liens me * primöl) pabevobons. Yüm balid liena muton binön yÃ
'exif-ycbcrpositioning' => 'staned Y e C',
'exif-xresolution' => 'Distidafäg horitätik',
'exif-yresolution' => 'Distidafäg penditik',
-'exif-resolutionunit' => 'Stabäd distidafäga X e Y',
'exif-stripoffsets' => 'Topam magodanünodas',
'exif-rowsperstrip' => 'Num kedetas a strip',
'exif-stripbytecounts' => 'Jöläts a strip pekobopedöl',
'exif-jpeginterchangeformat' => 'Topätükön ad JPEG SOI',
'exif-jpeginterchangeformatlength' => 'Jöläts nünodas: JPEG',
-'exif-transferfunction' => 'Lovepladamasekät',
'exif-whitepoint' => 'Kölöf püna vietik',
'exif-primarychromaticities' => 'Kölöf stabakölas',
'exif-ycbcrcoefficients' => 'Koäfs votükamataiba kölaspada',
@@ -2474,7 +2438,6 @@ Te lisedaliens (liens me * primöl) pabevobons. Yüm balid liena muton binön yÃ
'exif-compressedbitsperpixel' => 'Mod kobopedama magoda',
'exif-pixelydimension' => 'Magodavidot',
'exif-pixelxdimension' => 'Magodageilot',
-'exif-makernote' => 'Penets fabrikana',
'exif-usercomment' => 'Küpets gebana',
'exif-relatedsoundfile' => 'Tonaragiv tefik',
'exif-datetimeoriginal' => 'Dät e tim jafama nünodas',
@@ -2500,7 +2463,6 @@ Te lisedaliens (liens me * primöl) pabevobons. Yüm balid liena muton binön yÃ
'exif-focallength' => 'Foukafagot',
'exif-subjectarea' => 'Portät',
'exif-flashenergy' => 'Nämet kämalelita',
-'exif-spatialfrequencyresponse' => 'Spadasuvöf',
'exif-focalplanexresolution' => 'Distidafäg-X foukaplena',
'exif-focalplaneyresolution' => 'Distidafäg-Y foukaplena',
'exif-focalplaneresolutionunit' => 'Distidafägastabäd foukaplena',
@@ -2509,7 +2471,6 @@ Te lisedaliens (liens me * primöl) pabevobons. Yüm balid liena muton binön yÃ
'exif-sensingmethod' => 'Senametod',
'exif-filesource' => 'Fonät ragiva',
'exif-scenetype' => 'Sot süfüla',
-'exif-cfapattern' => 'Pated-CFA',
'exif-customrendered' => 'Magodibevobam pelönedüköl',
'exif-exposuremode' => 'Litükamamod',
'exif-whitebalance' => 'Vietaleigavet',
@@ -2551,6 +2512,9 @@ Te lisedaliens (liens me * primöl) pabevobons. Yüm balid liena muton binön yÃ
'exif-gpsprocessingmethod' => 'Nem dunamoda-GPS',
'exif-gpsareainformation' => 'Nem topäda: GPS',
'exif-gpsdatestamp' => 'Dät ela GPS',
+'exif-source' => 'Fonät',
+'exif-languagecode' => 'Pük',
+'exif-iimcategory' => 'Klad',
# EXIF attributes
'exif-compression-1' => 'No pekobopedöl',
@@ -2669,17 +2633,17 @@ Te lisedaliens (liens me * primöl) pabevobons. Yüm balid liena muton binön yÃ
'exif-gpsdirection-t' => 'Lüod veratik',
'exif-gpsdirection-m' => 'Lüod magnetik',
+'exif-iimcategory-wea' => 'Stom',
+
# External editor support
'edit-externally' => 'Votükön ragivi at me nünömaprogram plödik',
-'edit-externally-help' => '(Reidolös eli [http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] [in Linglänapük] ad tuvön nünis pluik)',
+'edit-externally-help' => '(Reidolös eli [//www.mediawiki.org/wiki/Manual:External_editors setup instructions] [in Linglänapük] ad tuvön nünis pluik)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'valik',
-'imagelistall' => 'valik',
-'watchlistall2' => 'valikis',
-'namespacesall' => 'valik',
-'monthsall' => 'valik',
-'limitall' => 'valikis',
+'watchlistall2' => 'valikis',
+'namespacesall' => 'valik',
+'monthsall' => 'valik',
+'limitall' => 'valikis',
# E-mail address confirmation
'confirmemail' => 'Fümedolös ladeti leäktronik',
@@ -2776,13 +2740,13 @@ Fümedolös, das jenöfo vilol dönujafön padi at.",
'watchlistedit-normal-legend' => 'Moükön tiädis se galädalised',
'watchlistedit-normal-explain' => 'Tiäds su galädalised olik palisedons dono.
Ad moükön tiädi, välolös bugili nilü on e klikolös: "{{int:Watchlistedit-normal-submit}}".
-Kanol i [[Special:Watchlist/raw|redakön lisedafonäti]].',
+Kanol i [[Special:EditWatchlist/raw|redakön lisedafonäti]].',
'watchlistedit-normal-submit' => 'Moükön Tiädis',
'watchlistedit-normal-done' => '{{PLURAL:$1|tiäd bal pemoükon|tiäds $1 pemoükons}} se galädalised olik:',
'watchlistedit-raw-title' => 'Redakön fonäti galädaliseda',
'watchlistedit-raw-legend' => 'Redakön fonäti galädaliseda',
'watchlistedit-raw-explain' => 'Tiäds galädaliseda olik pajonons dono, e kanons paredakön - paläükön u pamoükön se lised (ai tiäd bal a lien). Pos redakam, klikolös Votükön Galädalisedi.
-Kanol i [[Special:Watchlist/edit|gebön redakametodi kösömik]].',
+Kanol i [[Special:EditWatchlist|gebön redakametodi kösömik]].',
'watchlistedit-raw-titles' => 'Tiäds:',
'watchlistedit-raw-submit' => 'Votükön Galädalisedi',
'watchlistedit-raw-done' => 'Galädalised olik pevotükon.',
@@ -2821,9 +2785,7 @@ Magods pajonons ma fomät gudikün, ragivasots votik pamaifükons stedöfo kobü
# Special:FileDuplicateSearch
'fileduplicatesearch' => 'Sukön ragivis petelüköl',
-'fileduplicatesearch-summary' => 'Sukön ragivis petelüköl stabü völad kontrolasaedota onsik.
-
-Penolös ragivanemi nen foyümot: „{{ns:file}}:“.',
+'fileduplicatesearch-summary' => 'Sukön ragivis petelüköl stabü völad kontrolasaedota onsik.',
'fileduplicatesearch-legend' => 'Sukön telükoti',
'fileduplicatesearch-filename' => 'Ragivanem:',
'fileduplicatesearch-submit' => 'Sukön',
diff --git a/languages/messages/MessagesVot.php b/languages/messages/MessagesVot.php
index 8fc7a0b7..d209c0f0 100644
--- a/languages/messages/MessagesVot.php
+++ b/languages/messages/MessagesVot.php
@@ -184,8 +184,6 @@ Kui tšüsümüssessä ebõõ rootšittu tšültši, võib õlla õlõttõ löü
'extlink_tip' => 'Eräpooliin linkki (mäleht http:// prefiksi)',
'headline_sample' => 'Zagolofkka-teksti',
'headline_tip' => 'Zagolofkka',
-'math_sample' => 'Lissä formula tänne',
-'math_tip' => 'Matematillin formula (LaTeX)',
'nowiki_sample' => 'Lissä formattimatoo teksti tänne',
'nowiki_tip' => 'Ignoriiroit viki formatti',
'image_tip' => 'Kuva',
@@ -390,11 +388,9 @@ Tšüľľed, kummad õmad teÄÄellä [[Special:Watchlist|kattsõspiizgalla]] on
# Watchlist
'watchlist' => 'Minu kattsõspiiska',
'mywatchlist' => 'Minu kattsõspiiska',
-'addedwatch' => 'Lisättü kattsospiizgallõ',
'addedwatchtext' => "TšültÅ¡i \"[[:\$1]]\" on lisättü TeÄÄee [[Special:Watchlist|kattsospiizgallõ]].
Tšültšese ja sene juttutšültšese tehäväd tulõvaizõd muutuhsõd leeväd tšisloitõtud siäll.
Tšültši leeb tširjutõttu '''pimmiässi''' [[Special:RecentChanges|spiizgall viimeizije muutuhsijõ]].",
-'removedwatch' => 'Pantu kattsõspiizgalt poiz',
'removedwatchtext' => 'TšültÅ¡i "[[:$1]]" on pantu [[Special:Watchlist|teÄÄee kattsõspiizgalt]] poiz.',
'watch' => 'Katso',
'watchthispage' => 'Katso sitä tšültšiä',
@@ -411,7 +407,7 @@ Tšültši leeb tširjutõttu '''pimmiässi''' [[Special:RecentChanges|spiizgall
'deletepage' => 'Pühi tšültši',
'confirmdeletetext' => 'Õlõtta pühtšimässä tšüľľee vai failii ja kõigõ sene istorii. Õlka nii üvä, kõvissõga jot tahotta sitä tehä, jot saatta arvoa sledstvijäd jot pühtšimüz on [[{{MediaWiki:Policy-url}}|poolissaa]] mukka.',
'actioncomplete' => 'Töö tehtü lõppuu',
-'deletedtext' => '"<nowiki>$1</nowiki>" on pühittü.
+'deletedtext' => '"$1" on pühittü.
Tšüľľellä $2 on spiiska viimeiziss pühtšimühsiiss.',
'deletedarticle' => 'roottšiz tšüľľee [[$1]]',
'dellogpage' => 'Pühitüd tšüľľed',
@@ -430,7 +426,7 @@ Tšüľľellä $2 on spiiska viimeiziss pühtšimühsiiss.',
'protectexpiry' => 'Lõpub:',
'protect_expiry_invalid' => 'Lõppuaika eb kõlpa.',
'protect_expiry_old' => 'Lõppuaika on meneväz.',
-'protect-text' => "Võitta kattsoa ja muuttaa tšüľľee '''<nowiki>$1</nowiki>''' lupoit.",
+'protect-text' => "Võitta kattsoa ja muuttaa tšüľľee '''$1''' lupoit.",
'protect-locked-access' => "Että või muuttaa tšüľľee varjauztasoa. All on tšüľľee \"'''\$1'''\" nütšüized varjauztazod:",
'protect-cascadeon' => 'Kase tšültši on varjõttu, ku on sisällütettü all {{PLURAL:$1|õlõvaa jadgotussi varjõttuhõõ tšültšese|õlõvii jadgotussi varjõttuisõ tšültšiise}}. Võitta muuttaa sene tšüľľee varjuztasoa, mutta se eb vaikuta jadgotõttuu varjuhsiise.',
'protect-default' => 'Salli kõik tšäüttijäd',
@@ -597,11 +593,10 @@ Toož, võittõ tširjutta väänteüssee süü.',
'nextdiff' => 'Uuvvõpi muutuz →',
# Media information
-'file-info-size' => '$1 × $2 px, $3, MIME-sortta: $4',
-'file-nohires' => '<small>Suurõpaa kuva ebõõ.</small>',
-'svg-long-desc' => 'SVG-faili $1 × $2 px, failii suuruz: $3',
-'show-big-image' => 'Kõrka-rezoľuuttsiin verzija',
-'show-big-image-thumb' => '<small>Prestavľeńńaa suuruz: $1 × $2 px</small>',
+'file-info-size' => '$1 × $2 px, $3, MIME-sortta: $4',
+'file-nohires' => '<small>Suurõpaa kuva ebõõ.</small>',
+'svg-long-desc' => 'SVG-faili $1 × $2 px, failii suuruz: $3',
+'show-big-image' => 'Kõrka-rezoľuuttsiin verzija',
# Bad image list
'bad_image_list' => 'Spiizgaa formatti on:
@@ -623,11 +618,17 @@ Kui faili on muutõttu, siiz detaaľid võivad õlla kahõllaizõd muutõtull fa
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# External editor support
'edit-externally' => 'Muuttaa sitä failia ulkopoolizõõ prograammiikaa.',
-'edit-externally-help' => '(Kattsoga [http://www.mediawiki.org/wiki/Manual:External_editors praavilõd], kui tahotta lisäinformaattsia.)',
+'edit-externally-help' => '(Kattsoga [//www.mediawiki.org/wiki/Manual:External_editors praavilõd], kui tahotta lisäinformaattsia.)',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'koko istori',
diff --git a/languages/messages/MessagesVro.php b/languages/messages/MessagesVro.php
index 529bc8b5..2c095ec6 100644
--- a/languages/messages/MessagesVro.php
+++ b/languages/messages/MessagesVro.php
@@ -71,8 +71,8 @@ $messages = array(
'tog-shownumberswatching' => "Näütäq, ku pall'o pruukjit taa lehe perrä kaes",
'tog-oldsig' => 'Parhilladsõ alakirotusõ proomikaehus:',
'tog-fancysig' => 'Pruugiq vikiteksti moodulist alakirotust (ilma automaatsõ lingildä)',
-'tog-externaleditor' => "Pruugiq vaikimiisi välist tekstitoimõndajat (õnnõ as'atundjilõ, nõud suq puutri ümbresäädmist, kaeq [http://www.mediawiki.org/wiki/Manual:External_editors More information.])",
-'tog-externaldiff' => "Pruugiq vaikimiisi välist võrrõlusprogrammi (õnnõ as'atundjilõ, nõud su puutri ümbresäädmist, kaeq [http://www.mediawiki.org/wiki/Manual:External_editors More information.])",
+'tog-externaleditor' => "Pruugiq vaikimiisi välist tekstitoimõndajat (õnnõ as'atundjilõ, nõud suq puutri ümbresäädmist, kaeq [//www.mediawiki.org/wiki/Manual:External_editors More information.])",
+'tog-externaldiff' => "Pruugiq vaikimiisi välist võrrõlusprogrammi (õnnõ as'atundjilõ, nõud su puutri ümbresäädmist, kaeq [//www.mediawiki.org/wiki/Manual:External_editors More information.])",
'tog-showjumplinks' => 'Panõq lehe algustõ kipõqlingiq',
'tog-uselivepreview' => 'Pruugiq kipõkaehust (JavaScript) (proomi)',
'tog-forceeditsummary' => 'Annaq teedäq, ku olõ-i kirotõt kokkovõtõt',
@@ -169,13 +169,6 @@ $messages = array(
'index-category' => 'Indeksiga leheq',
'noindex-category' => 'Indeksildä leheq',
-'mainpagetext' => "'''MediaWiki tarkvara paika säet.'''",
-'mainpagedocfooter' => 'Vikitarkvara pruukmisõ kotsilõ loeq mano:
-* [http://meta.wikimedia.org/wiki/MediaWiki_User%27s_Guide MediaWiki pruukmisoppus (inglüse keelen)].
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Säädmiisi oppus (inglüse keelen)]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki kõgõ küsütümbäq küsümiseq (inglüse keelen)]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce E-postilist, minka andas teedäq MediaWiki vahtsist kujõst].',
-
'about' => 'Pääteedüs',
'article' => 'Sisu',
'newwindow' => '(tulõ vallalõ vahtsõn aknõn)',
@@ -226,10 +219,10 @@ $messages = array(
'history' => 'Artikli aolugu',
'history_short' => 'Aolugu',
'updatedmarker' => 'toimõndõt päält mu perämäst kaemist',
-'info_short' => 'Teedüs',
'printableversion' => 'Trükükujo',
'permalink' => 'Püsülink',
'print' => 'Trüküq vällä',
+'view' => 'Näütäq',
'edit' => 'Toimõndaq',
'create' => 'Luuq leht',
'editthispage' => 'Toimõndaq seod artiklit',
@@ -237,6 +230,7 @@ $messages = array(
'delete' => 'Kistudaq ärq',
'deletethispage' => 'Kistudaq seo artikli ärq',
'undelete_short' => 'Võtaq tagasi {{PLURAL:$1|üts muutminõ|$1 muutmist}}',
+'viewdeleted_short' => 'Kaeq {{PLURAL:$1|ütte|$1}} kistutõdut redaktsiooni',
'protect' => 'Kaidsaq',
'protect_change' => 'muudaq',
'protectthispage' => 'Kaidsaq seod artiklit',
@@ -320,6 +314,8 @@ $1",
'toc' => 'Sisukõrd',
'showtoc' => 'näütäq',
'hidetoc' => 'käkiq',
+'collapsible-collapse' => 'Käkiq ärq',
+'collapsible-expand' => 'Näütäq',
'thisisdeleted' => 'Kaeq vai tiiq tagasi $1?',
'viewdeleted' => 'Näüdädäq $1?',
'restorelink' => '{{PLURAL:$1|üts kistutõt muutminõ|$1 kustutõdut muutmist}}',
@@ -412,12 +408,11 @@ Perräküsümine: $2',
'protectedpagetext' => 'Taa lehekülg om kirotuskaidsõt.',
'viewsourcetext' => 'Võit kaiaq ja kopidaq taa lehe lättekoodi:',
'protectedinterface' => "Taa lehe pääl om tarkvara pruukjapalgõ tekst. Leht om lukku pant, et taad saasi-i ärq ts'urkiq.",
-'editinginterface' => "'''Hoiatus:''' Sa toimõndat tarkvara pruukjapalgõ tekstiga lehte. Ku siin midä muudat, mõotas tuu pruukjapalõt. Ümbrepandmisõs tasos pruukiq MediaWiki ümbrepandmisõ tüüriista [http://translatewiki.net/wiki/Main_Page?setlang=fiu-vro translatewiki.net].",
+'editinginterface' => "'''Hoiatus:''' Sa toimõndat tarkvara pruukjapalgõ tekstiga lehte. Ku siin midä muudat, mõotas tuu pruukjapalõt. Ümbrepandmisõs tasos pruukiq MediaWiki ümbrepandmisõ tüüriista [//translatewiki.net/wiki/Main_Page?setlang=fiu-vro translatewiki.net].",
'sqlhidden' => '(SQL-perräküsümine käkit)',
'cascadeprotected' => 'Taa leht om kirotuskaidsõt, selle et taa {{PLURAL:$1|kuulus alanolõvidõ kaidsõtuidõ lehti hulka|kuulus alanolõvidõ kaidsõtuidõ lehti hulka}}:
$2',
'namespaceprotected' => "Sul olõ-i lubat toimõndaq nimeruumi '''$1''' lehti.",
-'customcssjsprotected' => 'Sul olõ-i lubat toimõndaq taad lehte, selle et tan om seen tõõsõ pruukja säädmiisi.',
'ns-specialprotected' => 'Tallituslehekülgi ei saaq toimõndaq.',
'titleprotected' => "Pruukja [[User:$1|$1]] om sääntse nimega lehe luumisõ ärq kiildnüq põhjusõga: ''$2''.",
@@ -465,7 +460,7 @@ Valiq tõõnõ nimi.',
'loginsuccess' => 'Olõt nimega sisse lännüq. Suq pruukjanimi om "$1".',
'nosuchuser' => '"$1" nimelist pruukjat olõ-i olõman.
Kaeq kiräpilt üle vai [[Special:UserLogin/signup|luuq vahtsõnõ pruukjanimi]].',
-'nosuchusershort' => '"<nowiki>$1</nowiki>" nimelist pruukjat olõ-i olõman. Kas kirotit iks nime õigõhe?',
+'nosuchusershort' => '"$1" nimelist pruukjat olõ-i olõman. Kas kirotit iks nime õigõhe?',
'nouserspecified' => 'Olõ-i kirotõt pruukjanimme.',
'wrongpassword' => 'Kirotõt võlss salasõna. Prooviq vahtsõst.',
'wrongpasswordempty' => 'Salasõna tohe-i tühi ollaq.',
@@ -504,7 +499,7 @@ Ku taa pruukjanimi om luud kogõmaldaq, olõ-i sul vaia taast sõnomist vällä
Oodaq vähä inne ku proovit vahtsõst.",
'loginlanguagelabel' => 'Kiil: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Muudaq salasõnna',
'resetpass_announce' => 'Sa lätsit sisse e-postiga saadõdu aotlidsõ koodiga. Kõrdapiten sisseminekis tulõ sul siin tetäq hindäle vahtsõnõ salasõna:',
'resetpass_text' => '<!-- Kirodaq siiäq -->',
@@ -533,8 +528,6 @@ Või-ollaq olõt jo uma salasõna ärq muutnuq vai küsünüq vahtsõ aotlidsõ
'extlink_tip' => 'Välislink (unõhtagu-i ette pandaq http://)',
'headline_sample' => 'Päälkiri',
'headline_tip' => 'Tõõsõ tasõmõ päälkiri',
-'math_sample' => 'Kirodaq vallõm siiäq',
-'math_tip' => 'Matõmaatigatekst (LaTeX)',
'nowiki_sample' => 'Kirodaq kujondamalda tekst',
'nowiki_tip' => 'Tunnistagu-i viki kujondust',
'image_sample' => 'Näüdüs.jpg',
@@ -613,7 +606,7 @@ Ku sa johtuq siiäq kogõmaldaq, sis klõpsaq võrgokaeja '''Tagasi'''-nuppi.",
'noarticletext' => 'Seo leht om parlaq tühi.
Võit [[Special:Search/{{PAGENAME}}|otsiq soe lehe nimme]] tõisi lehti päält vai
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} uuriq muutmisnimekirjo] vai [{{fullurl:{{FULLPAGENAME}}|action=edit}} puuduolõva leheküle esiq luvvaq]</span>.',
-'userpage-userdoesnotexist' => 'Pruukjanimme "$1" olõ-i kirjä pant. Kaeq perrä, kas olõt iks kimmäs, et tahat taad lehte toimõndaq.',
+'userpage-userdoesnotexist' => 'Pruukjanimme "<nowiki>$1</nowiki>" olõ-i kirjä pant. Kaeq perrä, kas olõt iks kimmäs, et tahat taad lehte toimõndaq.',
'userpage-userdoesnotexist-view' => 'Pruukjanimme "$1" olõ-õi kirjä pant.',
'clearyourcache' => "'''Panõq tähele:''' perän pästmist piät muutmiisi nägemises uma võrgokaeja vaihõmälo tühäs tegemä. '''Mozillal / Firofoxil / Safaril''' hoiaq all nõstmisnuppi ''Shift'' ja vaodaq ''Reload'' vai ''Ctrl-R'' (Macil ''Command-R''); Konqueroril vaodaq ''Reload'' vai ''F5''. Operal puhastaq vaihõmälo ja võtaq valikust ''Tools → Preferences''. Internet Exploreril hoiaq ''Ctrl'' ja vaodaq ''Refresh'' vai vaodaq ''ctrl-f5''.",
'usercssyoucanpreview' => "'''Nõvvoannõq:''' Pruugiq nuppi 'Näütäq proovikaehust' uma vahtsõ CCS-i vai JavaScripti ülekaemisõs, inne ku taa ärq pästät.",
@@ -845,7 +838,6 @@ otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq e
'changepassword' => 'Muudaq salasõnna',
'prefs-skin' => 'Vällänägemine',
'skin-preview' => 'Kaeminõ',
-'prefs-math' => 'Valõmidõ näütämine',
'datedefault' => 'Ütskõik',
'prefs-datetime' => 'Kuupäiv ja kelläaig',
'prefs-personal' => 'Pruukjateedüs',
@@ -861,8 +853,6 @@ otsisõna iin edejakku ''all:''. Ütest kimmäst nimeruumist otsmisõs pruugiq e
'columns' => 'Tulpõ',
'searchresultshead' => 'Otsminõ',
'resultsperpage' => 'Tulõmuisi leheküle kotsilõ',
-'contextlines' => 'Rito tulõmusõn',
-'contextchars' => 'Konteksti pikkus ria pääl',
'stub-threshold' => '<a href="#" class="stub">Kehväkese lehe</a> näütämispiir (baidõn):',
'recentchangesdays' => 'Päivi, midä näüdädäq viimätsin muutmiisin',
'recentchangescount' => 'Päälkirjo hulk viimätsin muutmiisin',
@@ -1075,9 +1065,6 @@ Ku ülekaet teedüstü om sama pilt alguperälidsen suurusõn, sis olõ-i vaia e
'destfilename' => 'Teedüstü nimi vikin:',
'watchthisupload' => 'Kaeq taa lehe perrä',
'filewasdeleted' => 'Sääntse nimega teedüstü om jo üles laadit ja sis ärq kistutõt. Kaeq üle $1 inne ku nakkat jälq üles laatma.',
-'upload-wasdeleted' => "'''Hoiatus: Sa proovit üles laatiq teedüstüt, miä om innemb ärq kistutõt.'''
-
-Kas olõt kimmäs, et tahat taad üles laatiq? Kaeq ka sissekirotust taa teedüstü ärqkistutamisõ kotsilõ:",
'upload-success-subj' => "Üleslaatminõ läts' kõrda",
'upload-proto-error' => 'Viganõ protokoll',
@@ -1338,9 +1325,7 @@ ja sul piät umin [[Special:Preferences|säädmiisin]] olõma e-postiaadrõs, et
'watchlistanontext' => 'Perräkaemisnimekirä pruukmisõs $1.',
'watchnologin' => 'Olõ-i nimega sisse mint',
'watchnologintext' => 'Perräkaemisnimekirä muutmisõs piät [[Special:UserLogin|nimega sisse minemä]].',
-'addedwatch' => 'Perräkaemisnimekirjä pant',
'addedwatchtext' => "Lehekülg \"<nowiki>\$1</nowiki>\" om pant su [[Special:Watchlist|perräkaemisnimekirjä]]. Edespididseq muutmisõq seo lehe ja tä arotuskülgi pääl pandasõq ritta siin ja [[Special:RecentChanges|viimätside muutmiisi lehe pääl]] tuvvasõq '''paksun kirän'''. Ku tahat taad lehte perräkaemisnimekiräst vällä võttaq, klõpsaq nuppi \"Lõpõdaq perräkaeminõ ärq\".",
-'removedwatch' => 'Perräkaemisnimekiräst vällä võet',
'removedwatchtext' => 'Leht "[[:$1]]" om [[Special:Watchlist|perräkaemisnimekiräst]] maaha võet.',
'watch' => 'Kaeq perrä',
'watchthispage' => 'Kaeq taad lehekülge perrä',
@@ -1389,9 +1374,9 @@ Inämb seo lehe kotsilõ teedäqandmiisi saadõta-i. Võit ka kõik su perräkae
{{SITENAME}} teedäqandmiskõrraldus
-Perräkaemisnimekirä säädmiisi saat muutaq lehe pääl: {{fullurl:Special:Watchlist/edit}}
+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: {{fullurl:{{MediaWiki:Helppage}}}}',
+As\'a kotsilõ mano kaiaq ja küssü saat lehe päält: {{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Kistudaq lehekülg ärq',
@@ -1404,7 +1389,7 @@ As\'a kotsilõ mano kaiaq ja küssü saat lehe päält: {{fullurl:{{MediaWiki:He
'confirmdeletetext' => 'Sa kistutat teedüskogost periselt ärq lehe vai pildi üten kõgõ timä aoluuga.
Kinnüdäq, et sa tahat tuud tõtõstõ tetäq, et sa saat arvo, miä tuust tullaq või ja et tuu, miä sa tiit, klapis [[{{MediaWiki:Policy-url}}|sisekõrraga]].',
'actioncomplete' => 'Tallitus valmis',
-'deletedtext' => '"<nowiki>$1</nowiki>" om ärq kistutõt.
+'deletedtext' => '"$1" om ärq kistutõt.
Perämäidsi kistutuisi nimekirjä näet siist: $2.',
'deletedarticle' => '"[[$1]]" kistutõt',
'dellogpage' => 'Kistutõduq leheküleq',
@@ -1445,7 +1430,7 @@ Kelläaoq ummaq serveriao perrä.',
'protectexpiry' => 'Tähtaig',
'protect_expiry_invalid' => 'Kõlbmaldaq tähtaig.',
'protect_expiry_old' => 'Tähtaig om joba läbi.',
-'protect-text' => "Tan saat kaiaq ja säädäq lehe '''<nowiki>$1</nowiki>''' kaitsmist.",
+'protect-text' => "Tan saat kaiaq ja säädäq lehe '''$1''' kaitsmist.",
'protect-locked-blocked' => "Kinniqpeetült saa-i kaitsmiisi muutaq. Tan ommaq lehe '''$1''' parhilladsõq säädmiseq:",
'protect-locked-dblock' => "Kaitsmiisi saa-i muuta, selle et teedüskogo om lukun. Tan ommaq lehe '''$1''' parhilladsõq säädmiseq:",
'protect-locked-access' => "Sul olõ-i õigust kaitsmiisi muutaq.
@@ -1552,7 +1537,6 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
# Block/unblock
'blockip' => 'Piäq puutri võrgoaadrõs kinniq',
'blockiptext' => "Taa vorm om kimmä puutri võrgoaadrõsi päält tettüisi kirotuisi kinniqpidämises. '''Taad tohis tetäq õnnõ lehti ts'urkmisõ vasta ni [[{{MediaWiki:Policy-url}}|{{SITENAME}} sisekõrra perrä]]'''. Kimmähe tulõ täütäq ka rida \"põhjus\". Sinnäq võinuq pandaq nt lingiq noilõ lehile, midä rikuti.",
-'ipaddress' => 'Puutri võrgoaadrõs (IP)',
'ipadressorusername' => 'Puutri võrgoaadrõs vai pruukjanimi',
'ipbexpiry' => 'Tähtaig',
'ipbreason' => 'Põhjus:',
@@ -1565,7 +1549,6 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
** Segämine ja ts'urkminõ
** Mitmõ pruukjanime võlsspruukminõ
** Sündümäldäq pruukjanimi",
-'ipbanononly' => 'Piäq kinniq õnnõ ilma nimeldä pruukjaq',
'ipbcreateaccount' => 'Lasku-i pruukjanimme luvvaq',
'ipbemailban' => 'Lubagu-i pruukjal e-posti saataq',
'ipbenableautoblock' => 'Piäq kinniq viimäne puutri võrgoaadrõs, kost pruukja om toimõnduisi tennüq, ja edespiten aadrõsiq, kost tä viil pruuv toimõnduisi tetäq.',
@@ -1590,9 +1573,7 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
'unblocked-id' => '$1 kinniqpidämine võeti maaha',
'ipblocklist' => 'Kinniqpeetüisi IP-aadrõssidõ ja pruukjanimmi nimekiri',
'ipblocklist-legend' => 'Otsiq kinniqpeetüt pruukjat',
-'ipblocklist-username' => 'Pruukjanimi vai puutri võrgoaadrõs:',
'ipblocklist-submit' => 'Otsiq',
-'blocklistline' => '$1 — $2 om kinniq pidänüq pruukja $3 ($4)',
'infiniteblock' => 'igäveste',
'expiringblock' => 'tähtaig om $1 $2',
'anononlyblock' => 'õnnõ nimeldä pruukjaq',
@@ -1608,7 +1589,7 @@ Perämäidsi kistutuisi ja tagasitegemiisi saat kaiaq [[Special:Log/delete|kistu
'autoblocker' => 'Olõt automaatsõhe kinniq peet, selle et jaat puutri võrgoaadrõssit pruukjaga $1. Kinniqpidämise põhjus: $2.',
'blocklogpage' => 'Kinniqpidämiisi nimekiri',
'blocklogentry' => 'pidi kinniq pruukja vai puutri võrgoaadrõsi "[[$1]]". Kinniqpidämise tähtaig $2 $3',
-'blocklogtext' => 'Taa om kinniqpidämiisi ja naidõ maahavõtmiisi nimekiri. Automaatsõhe kinniqpeetüisi puutridõ võrgoaadrõssiid tan näüdätä-i, noid kaeq [[Special:IPBlockList|puutridõ võrgoaadrõssidõ kinniqpidämise nimekiräst]].',
+'blocklogtext' => 'Taa om kinniqpidämiisi ja naidõ maahavõtmiisi nimekiri. Automaatsõhe kinniqpeetüisi puutridõ võrgoaadrõssiid tan näüdätä-i, noid kaeq [[Special:BlockList|puutridõ võrgoaadrõssidõ kinniqpidämise nimekiräst]].',
'unblocklogentry' => "lõpõt' pruukja $1 kinniqpidämise ärq",
'block-log-flags-anononly' => 'õnnõ nimeldä pruukjaq',
'block-log-flags-nocreate' => 'pruukjanime luuminõ kinniq peet',
@@ -1711,7 +1692,7 @@ Viimädse johtumisõ kõrral võit ka pruukiq linki, nt leht {{MediaWiki:Mainpag
'allmessagesdefault' => 'Vaikimiisi tekst',
'allmessagescurrent' => 'Parhillanõ tekst',
'allmessagestext' => 'Taan nimekirän ommaq kõik MediaWiki nimeruumi tallitusteedüseq.
-Please visit [http://www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [http://translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
+Please visit [//www.mediawiki.org/wiki/Localisation MediaWiki Localisation] and [//translatewiki.net translatewiki.net] if you wish to contribute to the generic MediaWiki localisation.',
'allmessagesnotsupportedDB' => "Taad lehte saa-i pruukiq, selle et '''\$wgUseDatabaseMessages'''-säädmine om välän.",
# Thumbnails
@@ -1831,9 +1812,7 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
'monobook.js' => '/* Olõi soovitõt; pruugiq [[MediaWiki:common.js]] */',
# Metadata
-'nodublincore' => 'Taan serverin olõ-i Dublin Core RDF-metateedüst tüüle pant.',
-'nocreativecommons' => 'Taan serverin olõ-i Creative Commonsi RDF-metateedüst tüüle pant.',
-'notacceptable' => 'Wikiserver saa-i näüdädäq teedüst sääntsen moodun, midä su programm saasiq lukõq.',
+'notacceptable' => 'Wikiserver saa-i näüdädäq teedüst sääntsen moodun, midä su programm saasiq lukõq.',
# Attribution
'anonymous' => '{{SITENAME}} {{PLURAL:$1|nimeldä pruukja|nimeldä pruukjaq}}',
@@ -1853,37 +1832,11 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
'spam_reverting' => 'Tagasi pööret viimädse kujo pääle, koh olõ-i linke lehele $1',
'spam_blanking' => "Kõigin kujõn oll' linke lehele $1. Leht tühäs tett.",
-# Info page
-'infosubtitle' => 'Teedüs lehe kotsilõ',
-'numedits' => 'Lehele tettüid toimõnduisi: $1',
-'numtalkedits' => 'Arotuskülele tettüid toimõnduisi: $1',
-'numwatchers' => 'Perräkaejit: $1',
-'numauthors' => 'Lehele eräle kirotajit: $1',
-'numtalkauthors' => 'Arotuskülele eräle kirotajit: $1',
-
# Skin names
'skinname-standard' => 'Array',
'skinname-cologneblue' => 'Array',
'skinname-myskin' => 'Array',
-# Math options
-'mw_math_png' => 'Kõgõ PNG',
-'mw_math_simple' => 'Ku väega lihtsä, sis HTML, muido PNG',
-'mw_math_html' => 'Ku saa, sis HTML, muido PNG',
-'mw_math_source' => 'Alalõ hoitaq TeX (tekstikaejin)',
-'mw_math_modern' => 'Vahtsõmbilõ võrgokaejilõ soovitõt',
-
-# Math errors
-'math_failure' => 'Arvosaamalda süntaks',
-'math_unknown_error' => 'Tundmalda viga',
-'math_unknown_function' => 'Tundmalda tallitus',
-'math_lexing_error' => 'Vällälugõmisviga',
-'math_syntax_error' => 'Süntaksiviga',
-'math_image_error' => 'PNG-muutus lää-s kõrda; kaeq üle, et latex, dvips, gs ja convert ommaq õigõhe paika säedüq',
-'math_bad_tmpdir' => 'Matõmaatigateksti kirotaminõ aotlistõ kausta vai taa kausta luuminõ ei lääq kõrdaq',
-'math_bad_output' => 'Matõmaatigateksti kirotaminõ välläandmiskausta vai sääntse kausta luuminõ ei lääq kõrda',
-'math_notexvc' => 'Olõ-i texvc-tüüriista; loeq tuu paikasäädmise kotsilõ math/README-st.',
-
# Patrolling
'markaspatrolleddiff' => 'Märgiq ülekaetus',
'markaspatrolledtext' => 'Märgiq toimõndus ülekaetus',
@@ -1909,15 +1862,14 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
'nextdiff' => 'Vahtsõmb toimõndus →',
# Media information
-'mediawarning' => "'''Kaeq ette''': Taan teedüstün või ollaq sisen ohtlik kuud, miä või su programmilõ vika tetäq.",
-'imagemaxsize' => 'Pildi seletüslehe pääl näütämise suuruspiir:',
-'thumbsize' => 'Väikupildi suurus:',
-'file-info' => '$1, MIME-tüüp: $2',
-'file-info-size' => '$1×$2 pikslit, $3, MIME-tüüp: $4',
-'file-nohires' => '<small>Taast terävämpä pilti olõ-i saiaq.</small>',
-'svg-long-desc' => 'SVG-teedüstü, põhisuurus $1 × $2 pikslit, teedüstü suurus $3',
-'show-big-image' => 'Täüsterräv kujo',
-'show-big-image-thumb' => '<small>Proovikaemisõ suurus: $1×$2 pikslit</small>',
+'mediawarning' => "'''Kaeq ette''': Taan teedüstün või ollaq sisen ohtlik kuud, miä või su programmilõ vika tetäq.",
+'imagemaxsize' => 'Pildi seletüslehe pääl näütämise suuruspiir:',
+'thumbsize' => 'Väikupildi suurus:',
+'file-info' => '$1, MIME-tüüp: $2',
+'file-info-size' => '$1×$2 pikslit, $3, MIME-tüüp: $4',
+'file-nohires' => '<small>Taast terävämpä pilti olõ-i saiaq.</small>',
+'svg-long-desc' => 'SVG-teedüstü, põhisuurus $1 × $2 pikslit, teedüstü suurus $3',
+'show-big-image' => 'Täüsterräv kujo',
# Special:NewFiles
'newimages' => 'Vahtsõq pildiq',
@@ -1945,7 +1897,13 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Lakjus',
@@ -1960,13 +1918,11 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
'exif-ycbcrpositioning' => 'Y ja C paikasäädmine',
'exif-xresolution' => 'Pildi terävüs lajoldõ',
'exif-yresolution' => 'Pildi terävüs pikuldõ',
-'exif-resolutionunit' => 'Terävusosa X- ja Y-tsihin',
'exif-stripoffsets' => 'Pilditeedüse kotus',
'exif-rowsperstrip' => 'Riban rivve',
'exif-stripbytecounts' => 'Baitõ kokkopakitun riban',
'exif-jpeginterchangeformat' => 'Kavvus JPEG SOI-st',
'exif-jpeginterchangeformatlength' => 'JPEG-teedüssen baitõ',
-'exif-transferfunction' => 'Ülekandõfunktsiuun',
'exif-whitepoint' => 'Valgõ punkti värmiarv',
'exif-primarychromaticities' => 'Päävärme värmiarvoq',
'exif-ycbcrcoefficients' => 'Värmiruumi tõõsõndusmaatriksi elemendiq',
@@ -1985,7 +1941,6 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
'exif-compressedbitsperpixel' => 'Pildi kokkopakmismuud',
'exif-pixelydimension' => 'Kõlbolinõ pildi lakjus',
'exif-pixelxdimension' => 'Kõlbolinõ pildi korgus',
-'exif-makernote' => 'Tegijä seletüseq',
'exif-usercomment' => 'Pruukja kommõntaariq',
'exif-relatedsoundfile' => 'Manopant helüteedüstü',
'exif-datetimeoriginal' => 'Luumisaig',
@@ -1999,7 +1954,6 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
'exif-exposureprogram' => 'Valgustusprogramm',
'exif-spectralsensitivity' => 'Spektri herküs',
'exif-isospeedratings' => 'Herküs (ISO)',
-'exif-oecf' => 'Optoelektroonilinõ muutumiskõrdaja',
'exif-shutterspeedvalue' => 'Katigu kibõhus',
'exif-aperturevalue' => 'Läbilaskmismulk',
'exif-brightnessvalue' => 'Helehüs',
@@ -2012,7 +1966,6 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
'exif-focallength' => 'Läädse palotuslakjus',
'exif-subjectarea' => 'Tsihtmärgi ala',
'exif-flashenergy' => 'Välgü vägi',
-'exif-spatialfrequencyresponse' => 'Ruumifrekvendsi vastõq',
'exif-focalplanexresolution' => 'Täpsüstüsastmõ X-resolutsiuun',
'exif-focalplaneyresolution' => 'Täpsüstüstasõmõ Y-resolutsiuun',
'exif-focalplaneresolutionunit' => 'Täpsüstüstasõmõ resolutsiooni mõõt',
@@ -2021,7 +1974,6 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
'exif-sensingmethod' => 'Mõõtmisviis',
'exif-filesource' => 'Teedüstüläteq',
'exif-scenetype' => 'Pilditüüp',
-'exif-cfapattern' => 'CFA-kujond',
'exif-customrendered' => 'Hindäperi pilditoimõndus',
'exif-exposuremode' => 'Valgustusviis',
'exif-whitebalance' => 'Valgõ tasakaal',
@@ -2200,14 +2152,12 @@ Kokkovõttõria pääle või kirotaq tagasivõtmisõ põhjusõ.',
# External editor support
'edit-externally' => 'Toimõndaq taad teedüstüt välidse programmiga',
-'edit-externally-help' => '(Lisateedüst loeq [http://www.mediawiki.org/wiki/Manual:External_editors pruukmisoppusõ lehe päält])',
+'edit-externally-help' => '(Lisateedüst loeq [//www.mediawiki.org/wiki/Manual:External_editors pruukmisoppusõ lehe päält])',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'kõik',
-'imagelistall' => 'kõik',
-'watchlistall2' => ', terveq aolugu',
-'namespacesall' => 'kõik',
-'monthsall' => 'kõik',
+'watchlistall2' => ', terveq aolugu',
+'namespacesall' => 'kõik',
+'monthsall' => 'kõik',
# E-mail address confirmation
'confirmemail' => 'Kinnüdäq e-postiaadrõssit',
diff --git a/languages/messages/MessagesWa.php b/languages/messages/MessagesWa.php
index c4c5fae5..56f41de8 100644
--- a/languages/messages/MessagesWa.php
+++ b/languages/messages/MessagesWa.php
@@ -172,13 +172,13 @@ $messages = array(
'subcategories' => 'Dizo-categoreyes',
'category-media-header' => 'Media el categoreye «$1»',
'category-empty' => "''Cisse categoreye ci n' a pol moumint nol årtike ni media.''",
+'category-subcat-count' => 'Dins cisse categoreye, gn a {{PLURAL:$2|li dzo-categoreye|$2 dizo-categoreyes, inte di zeles {{PLURAL:$1|li cene|les $1}}}} cial pa-dzo.',
+'category-subcat-count-limited' => "Dins cisse categoreye, gn a {{PLURAL:$1|l' dizo-categoreye|les dzo-categoreyes}} shuvantes.",
'category-article-count' => 'Dins cisse categoreye cial, gn a {{PLURAL:$2|li pådje ki shût|$2 pådje, inte di zeles {{PLURAL:$1|li cene|les $1}} cial padzo}}.',
'category-article-count-limited' => "{{PLURAL:$1|Gn a l' pådje ki shût|Les $1 pådjes ki shuvnut si trovèt ddja}} dins cisse categoreye ci.",
'category-file-count' => "{{PLURAL:$2|Dins cisse categoreye ci, gn a k' ene pådje.|{{PLURAL:$1|Gn a cisse pådje ci|Gn a les $1 pådjes ki shuvèt}} dins cisse categoreye ci, po $2 pådjes å totå.}}",
'category-file-count-limited' => "{{PLURAL:$1|Gn a k' cisse pådje cial|Gn a les $1 pådjes ciddé padzo}} dins cisse categoreye ci.",
-'mainpagetext' => "'''Li programe Wiki a stî astalé a l' idêye.'''",
-
'about' => 'Ã…d fwait',
'article' => 'Ã…rtike',
'newwindow' => '(drovant en on novea purnea)',
@@ -210,7 +210,6 @@ $messages = array(
'history' => 'Istwere del pådje',
'history_short' => 'Istwere',
'updatedmarker' => 'candjî dispoy mi dierinne vizite',
-'info_short' => 'Infôrmåcions',
'printableversion' => 'Modêye sicrirece-amiståve',
'permalink' => 'Hårdêye viè cisse modêye ci',
'print' => 'Imprimer',
@@ -390,7 +389,7 @@ Vosse conte a stî ahivé.
'nosuchuser' => "I g na nou uzeu dizo l' no «$1».
Verifyîz çou k' vos avoz tapé, oudonbén rimplixhoz les ôtes tchamps
et clitchîz sol boton po-z ahiver on novea conte.",
-'nosuchusershort' => "I g na nou uzeu dizo l' no «<nowiki>$1</nowiki>». Verifyîz çou k' vos avoz tapé.",
+'nosuchusershort' => "I g na nou uzeu dizo l' no «$1». Verifyîz çou k' vos avoz tapé.",
'nouserspecified' => "Vos dvoz dner on no d' elodjaedje.",
'wrongpassword' => "Li scret ki vs avoz dné est måva. Rissayîz s' i vs plait.",
'wrongpasswordempty' => "Vos avoz dné on vude sicret. Rissayîz s' i vs plait.",
@@ -419,7 +418,7 @@ Divant d' poleur evoyî èn ôte emile a ci conte la, vos dvroz shure les instru
'accountcreatedtext' => "Li conte d' uzeu «$1» a stî ahivé.",
'loginlanguagelabel' => 'Lingaedje: $1',
-# Password reset dialog
+# Change password dialog
'oldpassword' => 'Vî scret',
'newpassword' => 'Noû scret',
'retypenew' => "Ritapez l' noû scret",
@@ -435,8 +434,6 @@ Divant d' poleur evoyî èn ôte emile a ci conte la, vos dvroz shure les instru
'extlink_tip' => 'Difoûtrinne hårdêye (en rovyîz nén di mete «http://» pa dvant)',
'headline_sample' => 'Tecse di tite',
'headline_tip' => 'Tite di 2inme livea',
-'math_sample' => "Tapez l' formule matematike chal",
-'math_tip' => 'Formule matematike (LaTeX)',
'nowiki_sample' => "Tapez l' tecse nén wiki chal",
'nowiki_tip' => 'Èn nén analijhî des côdes wiki, eyet purade les håyner sins fôrmater',
'image_sample' => 'Egzimpe.jpg',
@@ -651,7 +648,6 @@ Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l'
'changepassword' => "Candjî l' sicret",
'prefs-skin' => 'Pea',
'skin-preview' => 'vey divant',
-'prefs-math' => 'Formules matematikes',
'datedefault' => 'Nole preferince',
'prefs-datetime' => 'Cogne del date',
'prefs-personal' => 'Dinêyes da vosse',
@@ -667,8 +663,6 @@ Les ôtes manaedjeus so ç' wiki ci pôront todi vey li contnou catchî eyet l'
'columns' => 'Colones',
'searchresultshead' => 'HÃ¥ynaedje des rzultats di cweraedje',
'resultsperpage' => 'Nombe di responses a håyner so ene pådje',
-'contextlines' => 'Nombe di royes a håyner po ene response',
-'contextchars' => 'Nombe di caracteres di contecse pa roye',
'recentchangesdays' => 'Nombe di djoûs po les dierins candjmints:',
'recentchangescount' => 'Nombe di tites dins les dierins candjmints',
'savedprefs' => 'Vos preferinces ont stî schapêyes.',
@@ -1004,14 +998,12 @@ Do côp, c' est nén possibe di lyi evoyî èn emile.",
'watchlistanontext' => 'I vs fåt $1 po vey ou candjî les cayets di vosse djivêye des shuvous.',
'watchnologin' => "Vos n' estoz nén elodjî",
'watchnologintext' => 'I vs fåt esse [[Special:UserLogin|elodjî]] po pleur candjî vosse djivêye des pådjes a shuve.',
-'addedwatch' => 'Radjouté ås shuvous',
'addedwatchtext' => "Li pådje «<nowiki>$1</nowiki>» a stî radjoutêye a vosse [[Special:Watchlist|djivêye des pådjes a shuve]].
Tos les candjmints k' i gn årè di cisse pådje chal,
eyet di si pådje di copene, seront håynés chal, eyet li pådje serè metowe e '''cråssès letes'''
el [[Special:RecentChanges|djivêye des dierins candjmints]] po k' ça soeye pus åjhey por vos del rimårker.
Si vos vloz bodjî l' pådje foû di vosse djivêye des shuvous, clitchîz so «Èn pus shuve li pådje» dins l' bår di menu sol costé.",
-'removedwatch' => 'Bodjî foû des shuvous',
'removedwatchtext' => 'Li pådje «[[:$1]]» a stî bodjeye foû di vosse djivêye des pådjes a shuve.',
'watch' => 'Shuve',
'watchthispage' => 'Shuve cisse pådje',
@@ -1055,10 +1047,10 @@ I n\' årè nén d\' ôtes notifiaedjes po ds ôtes candjmints di ç\' minme på
--
Po candjî l\' apontiaedje di vosse djivêye a shuve, loukîz
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Po pus d\' aidance:
-{{fullurl:{{ns:help}}:Aidance}}',
+{{canonicalurl:{{ns:help}}:Aidance}}',
# Delete
'deletepage' => "Disfacer l' pådje",
@@ -1074,7 +1066,7 @@ Acertinez s' i vs plait ki c' est bén çoula ki vos vloz fé,
ki vos comprindoz les consecwinces, et ki vos fjhoz çoula
tot [[{{MediaWiki:Policy-url}}|shuvant les rîles]].",
'actioncomplete' => 'Fwait',
-'deletedtext' => 'Li pådje «<nowiki>$1</nowiki>» a stî disfacêye. Loukîz li $2 po ene
+'deletedtext' => 'Li pådje «$1» a stî disfacêye. Loukîz li $2 po ene
djivêye des dierins disfaçaedjes.',
'deletedarticle' => 'pådje «[[$1]]» disfacêye',
'dellogpage' => 'Djournå des disfaçaedjes',
@@ -1101,7 +1093,7 @@ Li dierin candjmint a stî fwait pa [[User:$3|$3]] ([[User talk:$3|Copene]]).",
'prot_1movedto2' => '[[$1]] displaecî viè [[$2]]',
'protect-legend' => "Acertinez l' protedjaedje",
'protectcomment' => 'RÃ¥jhon:',
-'protect-text' => "Vos ploz droci vey eyet candjî l' livea d' protedjaedje pol pådje '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Vos ploz droci vey eyet candjî l' livea d' protedjaedje pol pådje '''$1'''.",
'protect-default' => '(prémetou)',
'protect-level-autoconfirmed' => 'Bloker les uzeus nén eredjîstrés',
'protect-level-sysop' => 'Seulmint les manaedjeus',
@@ -1182,7 +1174,6 @@ vandales, et çoula doet esse fwait tot shuvant les
[[{{MediaWiki:Policy-url}}|rîles]].
Dinez ene råjhon do blocaedje (eg: dijhoz les pådjes k' ont
stî vandalijheyes).",
-'ipaddress' => "Adresse IP/no d' uzeu",
'ipadressorusername' => "Adresse IP ou no d' uzeu",
'ipbexpiry' => 'Tins do blocaedje',
'ipbreason' => 'RÃ¥jhon:',
@@ -1198,8 +1189,8 @@ stî vandalijheyes).",
'ipusubmit' => 'Disbloker ciste adresse ci',
'unblocked' => '«[[User:$1|$1]]» a stî disbloké',
'ipblocklist' => "Djivêye d' adresses IP et di nos d' uzeus ki sont blokés",
+'blocklist-reason' => 'RÃ¥jhon',
'ipblocklist-submit' => 'Cweri',
-'blocklistline' => '$1, $2 a bloké $3 ($4)',
'infiniteblock' => 'po todi',
'expiringblock' => "disk' å $1 $2",
'blocklink' => 'bloker',
@@ -1208,7 +1199,7 @@ stî vandalijheyes).",
'autoblocker' => "Bloké otomaticmint paski vos eployîz li minme adresse IP ki «[[User:$1|$1]]». Råjhon do blocaedje «'''$2'''».",
'blocklogpage' => 'Djournå des blocaedjes',
'blocklogentry' => '«[[$1]]» a stî bloké po ene termene di $2',
-'blocklogtext' => "Çouchal, c' est on djournå des blocaedjes eyet disblocaedjes d' uzeus. Les adresses IP blokêyes otomaticmint èn sont nén håynêyes. Loukîz li [[Special:IPBlockList|djivêye des adresses IP blokêyes]] po vey les blocaedjes d' adresses IP do moumint.",
+'blocklogtext' => "Çouchal, c' est on djournå des blocaedjes eyet disblocaedjes d' uzeus. Les adresses IP blokêyes otomaticmint èn sont nén håynêyes. Loukîz li [[Special:BlockList|djivêye des adresses IP blokêyes]] po vey les blocaedjes d' adresses IP do moumint.",
'unblocklogentry' => '«$1» a stî disbloké',
'range_block_disabled' => "Li possibilité po les manaedjeus di bloker des fortchetes d' adresses IP a stî dismetowe.",
'ipb_expiry_invalid' => 'Tins di blocaedje nén valide.',
@@ -1389,31 +1380,6 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
'creditspage' => 'PÃ¥dje di credits',
'nocredits' => "I n' a pont d' infôrmåcion di credits po cisse pådje ci.",
-# Info page
-'infosubtitle' => 'Infôrmåcions pol pådje',
-'numedits' => 'Nombe di candjmints (Ã¥rtike): $1',
-'numtalkedits' => 'Nombe di candjmints (pådje di copene): $1',
-'numwatchers' => 'Nombe di shuveus: $1',
-'numauthors' => "Nombe d' oteurs diferins (Ã¥rtike): $1",
-'numtalkauthors' => "Nombe d' oteurs diferins (pådje di copene): $1",
-
-# Math options
-'mw_math_png' => 'Håyner tofer come ene imådje PNG',
-'mw_math_simple' => "Håyner en HTML si c' est foirt simpe, ôtmint e PNG",
-'mw_math_html' => "Håyner en HTML si c' est possibe, ôtmint e PNG",
-'mw_math_source' => 'El leyî e TeX (po les betchteus e môde tecse)',
-'mw_math_modern' => 'Ricmandé po les betchteus modienes',
-'mw_math_mathml' => "Eployî MathML si c' est possibe (esperimintå)",
-
-# Math errors
-'math_unknown_error' => 'aroke nén cnoxhowe',
-'math_unknown_function' => 'fonccion nén cnoxhowe',
-'math_syntax_error' => 'aroke di sintacse',
-'math_image_error' => 'Li cviersaedje e PNG a fwait berwete; verifyîz ki les programes latex, dvips, gs eyet convert ont stî astalés comifåt',
-'math_bad_tmpdir' => "Dji n' sai nén scrire ou ahiver l' ridant timporaire po les formules matematikes",
-'math_bad_output' => "Dji n' sai nén scrire ou ahiver l' ridant po les fitchîs di rexhowe des formules matematikes",
-'math_notexvc' => 'I manke li fitchî enondåve texvc; lijhoz math/README po-z apontyî.',
-
# Image deletion
'deletedrevision' => 'Viye modêye $1 disfacêye',
@@ -1422,12 +1388,11 @@ Totes les accions di rcopiaedje eterwiki sont metowes e [[Special:Log/import|djo
'nextdiff' => 'Diferinces des candjmints shuvants →',
# Media information
-'mediawarning' => "'''Asteme''': Ci fitchî chal pôreut esse evirussé, si vos l' enondez vos pôrîz infecter l' sistinme da vosse.",
-'imagemaxsize' => "Limite pol håynaedje ezès pådjes d' imådje:",
-'thumbsize' => 'Grandeu po les imådjetes (thumb):',
-'file-info-size' => '$1 × $2 picsels, groxheur do fitchî: $3, del sôre "MIME": $4',
-'show-big-image' => 'Pus grande imådje',
-'show-big-image-thumb' => '<small>Grandeur di ci prevoeyaedje ci : $1 × $2 picsels</small>',
+'mediawarning' => "'''Asteme''': Ci fitchî chal pôreut esse evirussé, si vos l' enondez vos pôrîz infecter l' sistinme da vosse.",
+'imagemaxsize' => "Limite pol håynaedje ezès pådjes d' imådje:",
+'thumbsize' => 'Grandeu po les imådjetes (thumb):',
+'file-info-size' => '$1 × $2 picsels, groxheur do fitchî: $3, del sôre "MIME": $4',
+'show-big-image' => 'Pus grande imådje',
# Special:NewFiles
'newimages' => 'Galreye des nouvès imådjes',
@@ -1452,7 +1417,13 @@ est raptiti. Les ôtes seront catchîs.
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'LÃ¥rdjeur',
@@ -1463,7 +1434,6 @@ est raptiti. Les ôtes seront catchîs.
'exif-samplesperpixel' => 'Nombe di compôzants',
'exif-xresolution' => "Finté d' coûtchî",
'exif-yresolution' => "Finté d' astampé",
-'exif-resolutionunit' => "Unité pol finté d' coûtchî/astampé",
'exif-datetime' => "Date ey eure ki l' fitchî a stî candjî",
'exif-imagedescription' => "Tite di l' imådje",
'exif-make' => 'MÃ¥ke del camera',
@@ -1473,7 +1443,6 @@ est raptiti. Les ôtes seront catchîs.
'exif-copyright' => 'Ditinteu des abondroets',
'exif-exifversion' => "Modêye d' exif",
'exif-colorspace' => 'Espåce di coleurs',
-'exif-makernote' => 'Notes do fabricant',
'exif-usercomment' => "Comintaires di l' uzeu",
'exif-datetimeoriginal' => 'Date ey eure ki les dnêyes ont stî fwaites',
'exif-datetimedigitized' => 'Date ey eure do scanaedje',
@@ -1564,14 +1533,12 @@ est raptiti. Les ôtes seront catchîs.
# External editor support
'edit-externally' => "Candjî ç' fitchî ci avou on dfoûtrin programe",
-'edit-externally-help' => "Loukîz les [http://www.mediawiki.org/wiki/Manual:External_editors instruccions d' apontiaedje] po pus di racsegnes.",
+'edit-externally-help' => "Loukîz les [//www.mediawiki.org/wiki/Manual:External_editors instruccions d' apontiaedje] po pus di racsegnes.",
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'totafwait',
-'imagelistall' => 'totafwait',
-'watchlistall2' => 'totafwait',
-'namespacesall' => 'tos',
-'monthsall' => 'tos',
+'watchlistall2' => 'totafwait',
+'namespacesall' => 'tos',
+'monthsall' => 'tos',
# E-mail address confirmation
'confirmemail' => "Acertinaedje di l' adresse emile",
diff --git a/languages/messages/MessagesWar.php b/languages/messages/MessagesWar.php
index 423dccd2..6f000020 100644
--- a/languages/messages/MessagesWar.php
+++ b/languages/messages/MessagesWar.php
@@ -14,23 +14,23 @@
*/
$specialPageAliases = array(
- 'Watchlist' => array( 'Angay Timan-an' ),
- 'Upload' => array( 'Pagkarga' ),
- 'Statistics' => array( 'Mga Estadistika' ),
- 'Randompage' => array( 'Bisan Ano', 'BisanAnongaPakli' ),
- 'Mostlinked' => array( 'Gidamo-iHinSumpay' ),
- 'Shortpages' => array( 'HaglipotngamgaPakli' ),
- 'Longpages' => array( 'HaglabangamgaPakli' ),
- 'Newpages' => array( 'Bag-ongamgaPakli' ),
'Allpages' => array( 'NgatananngaPakli' ),
- 'Specialpages' => array( 'MgaIspisyalngaPakli' ),
+ 'Categories' => array( 'Mga Kategorya' ),
'Contributions' => array( 'Mga Ãmot' ),
+ 'Longpages' => array( 'HaglabangamgaPakli' ),
+ 'Mostlinked' => array( 'Gidamo-iHinSumpay' ),
'Movepage' => array( 'BalhinaAnPakli' ),
- 'Categories' => array( 'Mga Kategorya' ),
- 'Version' => array( 'Bersyon' ),
'Mypage' => array( 'AkonPakli' ),
'Mytalk' => array( 'AkonHiruhimangraw' ),
+ 'Newpages' => array( 'Bag-ongamgaPakli' ),
+ 'Randompage' => array( 'Bisan Ano', 'BisanAnongaPakli' ),
'Search' => array( 'Bilnga' ),
+ 'Shortpages' => array( 'HaglipotngamgaPakli' ),
+ 'Specialpages' => array( 'MgaIspisyalngaPakli' ),
+ 'Statistics' => array( 'Mga Estadistika' ),
+ 'Upload' => array( 'Pagkarga' ),
+ 'Version' => array( 'Bersyon' ),
+ 'Watchlist' => array( 'Angay Timan-an' ),
);
$messages = array(
@@ -150,14 +150,7 @@ $messages = array(
'category-file-count-limited' => 'An mga nasunod nga {{PLURAL:$1|ka fayl|$1 ka mga faly aada}} han yana nga kaarangay.',
'listingcontinuesabbrev' => 'pdyn.',
-'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
-'mainpagetext' => "'''Malinamposon an pag-instalar han MediaWiki.'''",
-'mainpagedocfooter' => "Kitaa an [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] para hin impormasyon ha paggamit han wiki nga softweyr.
-
-== Ha pagtikang==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+'linkprefix' => '/^(.*?)([a-zA-Z\\x80-\\xff]+)$/sD',
'about' => 'Mahitungod han',
'article' => 'Pakli hin sulod',
@@ -208,10 +201,10 @@ $messages = array(
'history' => 'Kaagi han pakli',
'history_short' => 'Kaagi',
'updatedmarker' => 'ginbag-ohan tikang han akon urhi nga pagbisita',
-'info_short' => 'Impormasyon',
'printableversion' => 'Maipapatik nga bersyon',
'permalink' => 'Sumpay nga unob',
'print' => 'Igpatik',
+'view' => 'Kitaa',
'edit' => 'Igliwat',
'create' => 'Himo-a',
'editthispage' => 'Igliwat ini nga pakli',
@@ -219,6 +212,7 @@ $messages = array(
'delete' => 'Para-a',
'deletethispage' => 'Para-a ini nga pakli',
'undelete_short' => 'Igkansela an pagpara {{PLURAL:$1|usa nga pagliwat|$1 nga mga pagliwat}}',
+'viewdeleted_short' => '{{PLURAL:$1|usa nga ginpara nga pagliwat|$1 ka ginpara nga mga pagliwat}}',
'protect' => 'Panalipdi',
'protect_change' => 'balyo-a',
'protectthispage' => 'Panalipdi ini nga pakli',
@@ -304,6 +298,8 @@ $1',
'toc' => 'Sulod',
'showtoc' => 'igpakita',
'hidetoc' => 'tago-a',
+'collapsible-collapse' => 'Rumpag',
+'collapsible-expand' => 'Latag',
'thisisdeleted' => '¿Kitaa o balika in $1?',
'viewdeleted' => '¿Kitaa in $1?',
'restorelink' => '{{PLURAL:$1|usa nga ginpara nga pagliwat|$1 ka ginpara nga mga pagliwat}}',
@@ -400,7 +396,7 @@ Ayaw paghingalimot hin pagbalyo han imo [[Special:Preferences|{{SITENAME}} mga g
Alayon pagpili hin lain nga ngaran.',
'loginerror' => 'Sayop hin pagsakob',
'loginsuccesstitle' => 'Malinamposon an pagsulod',
-'nosuchusershort' => 'Waray nagamit it may ngaran nga "<nowiki>$1</nowiki>".
+'nosuchusershort' => 'Waray nagamit it may ngaran nga "$1".
Kitaa kun amo it im pagbaybay.',
'nouserspecified' => 'Dapat nim magbutang hin agnay hit gumaramit.',
'wrongpassword' => 'Sayop nga tigaman-pagsulod an nahibutang.
@@ -415,7 +411,7 @@ Alayon pagutro pagbutang.',
'accountcreated' => 'Nahimo an akawnt',
'loginlanguagelabel' => 'Yinaknan: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Igliwat an tigaman-pagsulod',
'resetpass_header' => 'Igliwan an akawnt nga tigaman-pagsulod',
'oldpassword' => 'Daan nga tigaman-pagsulod:',
@@ -423,6 +419,9 @@ Alayon pagutro pagbutang.',
'retypenew' => 'Utroha pagbutang an bag-o nga tigaman-pagsulod:',
'resetpass_forbidden' => 'Diri mababalyoan an mga tigaman-pagsulod',
+# Special:PasswordReset
+'passwordreset-emailsent' => 'Ginpadara hin usa ka pahinumdom nga e-mail.',
+
# Edit page toolbar
'bold_sample' => 'dakmola an agi',
'bold_tip' => 'Dakmola an agi',
@@ -556,7 +555,6 @@ Aada na ito.',
'columns' => 'Mga rumbay patindog:',
'searchresultshead' => 'Bilnga',
'resultsperpage' => 'Mga igo kada pakli:',
-'contextlines' => 'Mga bagis kada igo:',
'savedprefs' => 'Gintipig an im karuyag.',
'timezonelegend' => 'Zona hin oras',
'localtime' => 'Oras nga lokal',
@@ -815,7 +813,7 @@ Alayon pagkita han [$2 nga pakli hin pagpahayag mahitungod hini nga fayl] para h
'exblank' => 'waray sulod an pakli',
'delete-confirm' => 'Igpara "$1"',
'delete-legend' => 'Igpara',
-'deletedtext' => 'Ginpara an "<nowiki>$1</nowiki>".
+'deletedtext' => 'Ginpara an "$1".
Kitaa an $2 para hin talaan han mga gibag-ohi nga mga ginpamara.',
'deletedarticle' => 'napara "[[$1]]"',
'deletecomment' => 'Katadungan:',
@@ -864,6 +862,7 @@ Kitaa an $2 para hin talaan han mga gibag-ohi nga mga ginpamara.',
'whatlinkshere-hidelinks' => '$1 an mga sumpay',
# Block/unblock
+'block' => 'Pugngi an gumaramit',
'blockip' => 'Pugngi an gumaramit',
'blockip-title' => 'Pugngi an gumaramit',
'blockip-legend' => 'Pugngi an gumaramit',
@@ -933,6 +932,10 @@ Kitaa an $2 para hin talaan han mga gibag-ohi nga mga ginpamara.',
'tooltip-minoredit' => 'Tigamni ini nga gamay nga pagliwat',
'tooltip-save' => 'Ig-seyb an imo mga pagbabag-o',
+# Info page
+'pageinfo-subjectpage' => 'Pakli',
+'pageinfo-talkpage' => 'Hiruhimangraw nga pakli',
+
# Browsing diffs
'nextdiff' => 'Burubag-o nga pagliwat',
@@ -951,14 +954,22 @@ Kitaa an $2 para hin talaan han mga gibag-ohi nga mga ginpamara.',
# EXIF tags
'exif-imagewidth' => 'Kahaluag',
'exif-imagelength' => 'Kahitaas',
+'exif-headline' => 'Katukiban',
+'exif-iimcategory' => 'Kaarangay',
+
+'exif-objectcycle-a' => 'Aga la',
+'exif-objectcycle-p' => 'Gab-i la',
+
+'exif-dc-date' => '(Mga) petsa',
+'exif-dc-rights' => 'Mga katungod',
+
+'exif-rating-rejected' => 'Waray karawta',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'ngatanan',
-'imagelistall' => 'ngatanan',
-'watchlistall2' => 'ngatanan',
-'namespacesall' => 'ngatanan',
-'monthsall' => 'ngatanan',
-'limitall' => 'ngatanan',
+'watchlistall2' => 'ngatanan',
+'namespacesall' => 'ngatanan',
+'monthsall' => 'ngatanan',
+'limitall' => 'ngatanan',
# Delete conflict
'recreate' => 'Himo-a utro',
@@ -966,6 +977,10 @@ Kitaa an $2 para hin talaan han mga gibag-ohi nga mga ginpamara.',
# action=purge
'confirm_purge_button' => 'OK',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-unwatch-button' => 'OK',
+
# Multipage image navigation
'imgmultipageprev' => '↠naha-una nga pakli',
'imgmultipagenext' => 'sunod nga pakli →',
diff --git a/languages/messages/MessagesWo.php b/languages/messages/MessagesWo.php
index c912ec70..2124036d 100644
--- a/languages/messages/MessagesWo.php
+++ b/languages/messages/MessagesWo.php
@@ -52,31 +52,31 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Userlogin' => array( 'Lonku' ),
- 'Userlogout' => array( 'Lonkiku' ),
'CreateAccount' => array( 'Sos am sàq' ),
- 'Preferences' => array( 'Tànneef' ),
- 'Watchlist' => array( 'Limu toppte' ),
- 'Recentchanges' => array( 'Coppite yu mujj' ),
- 'Upload' => array( 'Yeb' ),
'Listfiles' => array( 'Limu nataal yi' ),
- 'Newimages' => array( 'Nataal bu bees' ),
- 'Listusers' => array( 'Limu jëfandikukat yi' ),
'Listgrouprights' => array( 'Limu mboolooy jëfandikukat' ),
- 'Randompage' => array( 'Xët cig mbetteel' ),
+ 'Listusers' => array( 'Limu jëfandikukat yi' ),
'Lonelypages' => array( 'Xëtu jirim' ),
- 'Uncategorizedpages' => array( 'Xët yi amul wàll' ),
+ 'Mycontributions' => array( 'Samay cëru' ),
+ 'Mypage' => array( 'Sama xët' ),
+ 'Mytalk' => array( 'Samay waxtaan' ),
+ 'Newimages' => array( 'Nataal bu bees' ),
+ 'Preferences' => array( 'Tànneef' ),
+ 'Randompage' => array( 'Xët cig mbetteel' ),
+ 'Recentchanges' => array( 'Coppite yu mujj' ),
+ 'Search' => array( 'Ceet' ),
'Uncategorizedcategories' => array( 'Wàll yi amul wàll' ),
'Uncategorizedimages' => array( 'Nataal yi amul wàll' ),
+ 'Uncategorizedpages' => array( 'Xët yi amul wàll' ),
'Uncategorizedtemplates' => array( 'Royuwaay yi amul wàll' ),
'Unusedcategories' => array( 'Royuwaay yiñ jëfandikuwul' ),
'Unusedimages' => array( 'Nataal yiñ jëfandikuwul' ),
- 'Wantedpages' => array( 'Xët yiñ laaj' ),
+ 'Upload' => array( 'Yeb' ),
+ 'Userlogin' => array( 'Lonku' ),
+ 'Userlogout' => array( 'Lonkiku' ),
'Wantedcategories' => array( 'Wàll yiñ laaj' ),
- 'Mypage' => array( 'Sama xët' ),
- 'Mytalk' => array( 'Samay waxtaan' ),
- 'Mycontributions' => array( 'Samay cëru' ),
- 'Search' => array( 'Ceet' ),
+ 'Wantedpages' => array( 'Xët yiñ laaj' ),
+ 'Watchlist' => array( 'Limu toppte' ),
);
$messages = array(
@@ -206,15 +206,6 @@ $messages = array(
'category-file-count-limited' => 'Wii wàll moo ëmb {{PLURAL:$1|dencukaay biy toftal|$1 dencukaay yiy toftal}}.',
'listingcontinuesabbrev' => '(desit)',
-'mainpagetext' => "'''Campug MediaWiki gi sotti na . '''",
-'mainpagedocfooter' => 'Saytul [http://meta.wikimedia.org/wiki/Ndimbal:Ndefu Gindikaayu jëfandikukat bi] ngir yeneeni xibaar ci jëfandiku gu tëriin gi.
-
-== Tambali ak MediaWiki ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Limu jumtukaayi kocc-koccal gi]
-* [http://www.mediawiki.org/wiki/Manual:FAQ FAQ MediaWiki]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Limu waxtaan ci liy-génn ci MediaWiki]',
-
'about' => 'Ci mbirum',
'article' => 'Jukki',
'newwindow' => '(Day ubbeeku ci beneen palanteer)',
@@ -264,7 +255,6 @@ $messages = array(
'history' => 'Jaar-jaaru xët wi',
'history_short' => 'Jaar-jaar',
'updatedmarker' => 'Ci samag nemmeeku gu mujj lañ ko soppi',
-'info_short' => 'Xibaar',
'printableversion' => 'Sumb bu móolu',
'permalink' => 'Lëkkalekaay yu sax',
'print' => 'Móol',
@@ -446,12 +436,11 @@ Laaj : $2',
'protectedpagetext' => 'Wii xët dañ koo aar ngir bañ ag coppiteem.',
'viewsourcetext' => 'Man ngaa xool te duppi li nekk ci bii jukki ngir man cee liggéey :',
'protectedinterface' => 'Xët wii dafa am ay mbind yu bokk ci jokkalekaayu tëriin wi, moo tax ñu caabi ko ngir bañ ku ci ëppal.',
-'editinginterface' => "'''Moytul''': mbindu xët wii dafa bokk ci jokkalekaayu tëriin bi. Bépp coppite boo ci def day feeñ ci bataaxal yi yeneen jëfandikukat yi di gis. Ngir tekki yi ñu lay ñaan nga dem ci [http://translatewiki.net/wiki/Main_Page?setlang=wo translatewiki.net] di am sémb ngir bennal bataaxal yi.",
+'editinginterface' => "'''Moytul''': mbindu xët wii dafa bokk ci jokkalekaayu tëriin bi. Bépp coppite boo ci def day feeñ ci bataaxal yi yeneen jëfandikukat yi di gis. Ngir tekki yi ñu lay ñaan nga dem ci [//translatewiki.net/wiki/Main_Page?setlang=wo translatewiki.net] di am sémb ngir bennal bataaxal yi.",
'sqlhidden' => '(Laaju SQL nëbbu na)',
'cascadeprotected' => 'Xët wii dañ kaa aar ndaxte daa ëmbu ci {{PLURAL:$1|xët wi toftal|xët yi toftal}}, di yu ñu aar :
$2',
'namespaceprotected' => "Amoo sañ-sañu soppi xët yi ne ci bii barabu tur « '''$1''' ».",
-'customcssjsprotected' => 'Amoo sañ-sañu soppi wii xët ndaxte daa ëmb ay tànneefi yeneeni jëfandikukat.',
'ns-specialprotected' => 'Xët yi ne ci bii barabu tur « {{ns:special}} » kenn maneesu leen a soppi.',
'titleprotected' => "Koj bii [[User:$1|$1]] moo ko aar ngir bañ sosteefam.
Ngirte li mu joxe mooy ne « ''$2'' ».",
@@ -496,7 +485,7 @@ Bul fatte soppi say [[Special:Preferences|{{SITENAME}} tànneef]].',
'loginsuccesstitle' => 'Sag dugg jàll na',
'loginsuccess' => 'Léegi nag dugg nga ci {{SITENAME}} yaay « $1 ».',
'nosuchuser' => 'Amul benn jëfandikukat bu tudd « $1 ». Xoolaatal bu baax mbindiin mi walla nga sos meneen sàqum jëfandikukat.',
-'nosuchusershort' => 'Amul benn jëfandikukat bu tudd « <nowiki>$1</nowiki> ». Xoolaatal mbidiin mi.',
+'nosuchusershort' => 'Amul benn jëfandikukat bu tudd « $1 ». Xoolaatal mbidiin mi.',
'nouserspecified' => 'Laaj na nga tànn ab turu jëfandikukat',
'wrongpassword' => 'Bii baatujàll baaxul. Jéemaatal.',
'wrongpasswordempty' => 'Duggaloo ab baatujàll, jéemaatal.',
@@ -537,7 +526,7 @@ Jéelaleel bataaxal bii su fekkee ci njuumte nga sosee mii sàq.',
Ngalla néggandikul ab diir door a jéemaat.',
'loginlanguagelabel' => 'Làkk : $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Soppi baatujàll bi',
'resetpass_announce' => 'Danga dugg ak ab baatujàll bu saxul-dakk, buñ la yónne cib bataaxal. Ngir matal mbindu mi, faaw nga roof ab baatujàll bu bees fii:',
'resetpass_text' => '<!-- Bindal fii -->',
@@ -565,8 +554,6 @@ Xèj-na baatujàll bi soppi nga ko ba noppi, walla xéj-na it dangaa laaj beneen
'extlink_tip' => 'Lëkkalekaay yu biti (bul fattee jiital http://)',
'headline_sample' => 'Ron-koj',
'headline_tip' => 'Ron-koj 2 tolluwaay',
-'math_sample' => 'Duggalal sa mbind fii',
-'math_tip' => 'Mbindu xayma (LaTeX)',
'nowiki_sample' => 'Dugalal fii mbind mi ñu joxul melokaan',
'nowiki_tip' => 'Jéllaleel mbindinu wiki',
'image_sample' => 'Misaal.jpg',
@@ -645,7 +632,7 @@ walla [{{fullurl:{{FULLPAGENAME}}|action=edit}} soppi xët wii]</span>.',
'noarticletext-nopermission' => 'Nii-nii amul menn mbind ci wii xët.
Man nga [[Special:Search/{{PAGENAME}}|seet bii koj]] ci yeneen xët,
walla <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} nga seet ci yéenekaay yees ko féetaleel]</span>.',
-'userpage-userdoesnotexist' => 'Mii sàqum jëfandikukat « $1 » du bu ku-bindu. Seetal bu baax ndax da ngaa namma sos walla soppi wii xët.',
+'userpage-userdoesnotexist' => 'Mii sàqum jëfandikukat « <nowiki>$1</nowiki> » du bu ku-bindu. Seetal bu baax ndax da ngaa namma sos walla soppi wii xët.',
'clearyourcache' => "'''Karmat :''' Soo dence xët wi ba noppi, faaw nga far nëmbiitu sa joowukaay ngir man a gis say coppite, te nga, su dee '''Mozilla / Firefox / Safari :''' cuq ci ''yeesal'' te bësaale ''shift'', walla nga bës ''Shift-R'' walla ''Ctrl-F5'' (Command-R ci Mac ), su dee '''Konqueror''': cuq ''yeesal'' walla nga bës ''F5''; su dee '''Opera''' faral nëbiit li (''Jumtukaay → Tànneef'') su dee '''Internet Explorer:''' cuq ci ''yeesal te bësaale ''Ctrl'' walla nga bës ''Ctrl-F5''.",
'usercssyoucanpreview' => "'''Xelal :''' di la digël nga cuq ci «Wonendi» ngir gis say xobi CSS walla JavaScript yu bees laata nga leen di denc.",
'userjsyoucanpreview' => "'''Xelal :''' di la digël nga cuq ci «Wonendi» ngir gis say xobi CSS walla JavaScript yu bees laata nga leen di denc.",
@@ -978,7 +965,6 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
'changepassword' => 'Coppiteg baatujàll bi',
'prefs-skin' => 'Melokaan',
'skin-preview' => 'Wonendil',
-'prefs-math' => 'Xayma',
'datedefault' => 'Benn tànneef',
'prefs-datetime' => 'Taariix ak waxtu',
'prefs-personal' => 'Xibaar yu la ñeel',
@@ -999,7 +985,6 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
'columns' => 'Kenu :',
'searchresultshead' => 'Seet',
'resultsperpage' => 'Limu ngérte ci xët wu ne :',
-'contextlines' => 'Limu rëdd ci tont wu ne :',
'recentchangesdays' => 'Limu bes yi nga koy wone ci coppite yu mujj yi :',
'recentchangesdays-max' => '(bi ëpp $1 {{PLURAL:$1|bés|bés}})',
'recentchangescount' => 'Limu coppite yi ngay wone ci coppite yu mujj yi cig wàccaale:',
@@ -1161,7 +1146,6 @@ Jéemala bindaale ''all'' ngir seet ci biir ëmbit gépp (boolewaale ci xëti wa
'right-userrights' => 'Soppi bépp sañ-sañu jëfandikukat bi',
'right-userrights-interwiki' => 'Soppi sañ-sañi jëfandikukat yu yeneen wiki',
'right-siteadmin' => 'Caabi walla caabeedi dàttub njoxe bi',
-'right-reset-passwords' => 'Soppi baatujàllub ay jëfandikukat',
'right-override-export-depth' => 'génne ay xët yu ëmbi xët yu lëkkaloo ba-ci xóotaay bu tolluwaayam àgg 5',
# User rights log
@@ -1312,9 +1296,6 @@ Tànnal weneen tur.",
'upload-maxfilesize' => 'Dayoob Å‹ara wi warul romb: $1',
'watchthisupload' => 'Topp dencukaay bii',
'filewasdeleted' => 'Dencukaay bu tudd nii yeboon nañ ko fi ba noppi, faraat ko. Saytul $1 laataa nga koy yebaat.',
-'upload-wasdeleted' => "'''Moytul: yaa ngi yebaat ab dencukaay buñ fi fare woon ci lu weesu'''
-
-Jaar-jaaru far gi man na laa dimbali ci nga see ndaxam jar na nga yebaat ko.",
'filename-bad-prefix' => "Turu dencukaay bi ngay yeb moo ngi tambalee '''\"\$1\"''', te muy tur wu nosukaay bi di joxal boppam nataalukaay yi.
Dila ñaan nga tànn tur wuy faramfacce dencukaay bi.",
'upload-success-subj' => 'Yeb gi jàll na',
@@ -1352,7 +1333,6 @@ Lim bii di toftal moo lay won {{PLURAL:$1|xët wi ñu njëkk a|xët yi ñu njëk
Ab [[Special:WhatLinksHere/$2|lim bu mat]] jàppandi na.',
'nolinkstoimage' => 'Amul wenn xët wu ëmb bii dencukaay.',
'morelinkstoimage' => 'Xool [[Special:WhatLinksHere/$1|yeneeni lëkkalekaay]] yuy jëme ci bii dencukaay.',
-'redirectstofile' => '{{PLURAL:$1|dencukaay bii di toftal ab|$1 dencukaay yii di toftal ay}} jubluwaat {{PLURAL:$1|la buy|lañu yuy}} jëme ci dencukaay bii:',
'duplicatesoffile' => '{{PLURAL:$1|Dencukaay bii|$1 Dencukaay yii}} di toftal {{PLURAL:$1|ab duppitu|ay duppitu}} bii {{PLURAL:$2|la|lañu}} ([[Special:FileDuplicateSearch/$2|yeneeni faramfacce]])::',
'sharedupload' => 'Dencukaay bii $1 la bàyyikoo, te man nañu koo jëfandikoo ci yeneen sémb.',
'sharedupload-desc-there' => 'Dencukaay bii $1 la bàyyikoo te man nañu koo jëfandikoo ci yeneen sémb.
@@ -1648,10 +1628,8 @@ Man ngaa fee gis itam [[{{MediaWiki:Listgrouprights-helppage}}|yeneen xibaar]] Ã
'watchlistanontext' => 'Ngir mana gis walla soppi jëfkayu sa limu toppte, faw nga $1.',
'watchnologin' => 'Duggoo de',
'watchnologintext' => 'Yaa wara nekk [[Special:UserLogin|duggal]] ngir soppi lim gi.',
-'addedwatch' => 'Yokk ci sa limu toppte',
'addedwatchtext' => "Xët wii di « [[:$1]] » yokk nañu ko ci sa [[Special:Watchlist|limu toppte]].
Coppite yiy ñëw yu xët wi ak xëtu waxtaanuwaay wi mu àndal di nañu leen fa dugal, dañula koy won mu '''duuf''' ci [[Special:RecentChanges|limu coppite yu mujj yi]] ngir xammee gi yomb.",
-'removedwatch' => 'Jëlee ci sa limu toppte',
'removedwatchtext' => 'Xët wii di « [[:$1]] » jële nañu ko ci sa [[Special:Watchlist|limu toppte]].',
'watch' => 'Topp',
'watchthispage' => 'Topp xët wii',
@@ -1695,7 +1673,7 @@ Coppite yiy ñëw yu xët wi ak xëtu waxtaanuwaay wi mu àndal di nañu leen fa
'historywarning' => 'Moytul! xët wi ngay waaja far am na jaar-jaar :',
'confirmdeletetext' => 'Yaa ngi waaja far ba faaw, ci dáttub njoxe bi, aw xët walla ab nataal ak jaar-jaaram. Dila ñaan nga dëggal ne loolu nga namma def dëgg-dëgg, te xam nga limuy jur, te itam dëppoo na ak átte yi ñu tëral ci [[{{MediaWiki:Policy-url}}]].',
'actioncomplete' => 'Jëf jees def',
-'deletedtext' => '« <nowiki>$1</nowiki> » far nañu ko.
+'deletedtext' => '« $1 » far nañu ko.
Xolal $2 ngir gis limu farte bi mujj.',
'deletedarticle' => 'moo far « [[$1]] »',
'suppressedarticle' => 'moo far « [[$1]] »',
@@ -1751,7 +1729,7 @@ nemmeekul [[Special:ProtectedPages|limu xët yi ñu aar]] ngir gis ab lim ci xë
'protectexpiry' => 'Jeexintal :',
'protect_expiry_invalid' => 'Waxtub njeextal bi baaxul.',
'protect_expiry_old' => 'Waxtub njeextal bi weesu na.',
-'protect-text' => "Fii man nga fee gise ak soppi tolluwaayu kaaraange gu wii xët '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Fii man nga fee gise ak soppi tolluwaayu kaaraange gu wii xët '''$1'''.",
'protect-locked-blocked' => "Manoo soppi tolluwaayu kaaraange gi su ñu la téyee.
Nii la xët wi tëdde '''$1''' :",
'protect-locked-access' => "Sa sàq amul sañ-sañ yu mat ba man a soppi tolluwaayu kaaraangeg xët wi.
@@ -1871,7 +1849,6 @@ $1',
# Block/unblock
'blockip' => 'Téyeb jëfandikukat',
'blockip-legend' => 'Téye jëfandikukat bi',
-'ipaddress' => 'Màkkaanu IP :',
'ipadressorusername' => 'Màkkaanu IP walla turu jëfandikukat:',
'ipbexpiry' => 'Diiru téye gi',
'ipbreason' => 'Ngirte :',
@@ -1885,7 +1862,6 @@ $1',
** Di jéem a xiixaan walla di xuloo ak nit ñi
** Ëppal ci sosi sàq yu bari
** Turu jëfandikukat buñu fi nanguwul',
-'ipbanononly' => 'Téye jëfandikukat yu binduwul rekk',
'ipbcreateaccount' => 'Tere sosug yeneeni sàq',
'ipbemailban' => 'Tere jëfandikukat bi yónne ay m-bataaxal',
'ipbenableautoblock' => 'Téye ci saa si màkkaanu IP bi mu mujje jëfandikoo, ak yeneen yi muy jëfandikoo-ji ngir amali coppite',
@@ -1896,7 +1872,6 @@ $1',
'ipbotherreason' => 'Yeneeni ngirte/faramfacce:',
'ipbhidename' => 'Nëbb turu jëfandikukat bi ci coppite yeek lim yi',
'ipbwatchuser' => 'Topp xëtu jëfandikukat ak bu waxtaanuwaay bu bii jëfandikukat',
-'ipballowusertalk' => 'Sañal bii jëfandikukat mu man a soppi xëtu waxtaanuwaayam ci diir bees ko téye',
'ipb-change-block' => 'Téyewaat bii jëfandikukat ak yii anam',
'badipaddress' => 'Màkkaanu IP bi baaxul.',
'blockipsuccesssub' => 'Téye gi antu na',
@@ -1913,12 +1888,7 @@ Xoolal [[Special:IPBlockList|limu IP yees téye]] ngir gis ñees téye ñépp.',
'unblocked-id' => 'Téye gu $1 far nañu ko',
'ipblocklist' => 'Màkkaanu IP ak jëfandikukat yees Téye',
'ipblocklist-legend' => 'Seet jëfandikukat bees téye',
-'ipblocklist-username' => 'Turu jëfandikukat walla màkkaanub IP:',
-'ipblocklist-sh-userblocks' => '$1 sàq yees téye',
-'ipblocklist-sh-tempblocks' => '$1 ñees téyendi',
-'ipblocklist-sh-addressblocks' => '$1 Téyeg IP bu kenn',
'ipblocklist-submit' => 'Ceet',
-'blocklistline' => '$1, $2 moo téye $3 ($4)',
'infiniteblock' => 'Ba-faww',
'expiringblock' => 'jeex $1 ci $2',
'anononlyblock' => 'Alaxam rek',
@@ -1936,7 +1906,7 @@ Xoolal [[Special:IPBlockList|limu IP yees téye]] ngir gis ñees téye ñépp.',
'blocklogpage' => 'Jaar-jaaru téye yi',
'blocklogentry' => 'moo téye « [[$1]] » - ci diirub : $2 $3',
'reblock-logentry' => 'moo soppi anami téye gu [[$1]] ak diirub njeextal bu $2 $3',
-'blocklogtext' => 'Lii ab lim la ci téye ak téyedi yu jëfandikukat yi. Màkkaani IP yi ñu téye cig boppal limuñu leen fi. yëral [[Special:IPBlockList|limu jëfandikukat yiñ téye]] ngi gis ñi ñu téye nii-nii.',
+'blocklogtext' => 'Lii ab lim la ci téye ak téyedi yu jëfandikukat yi. Màkkaani IP yi ñu téye cig boppal limuñu leen fi. yëral [[Special:BlockList|limu jëfandikukat yiñ téye]] ngi gis ñi ñu téye nii-nii.',
'unblocklogentry' => 'moo téyedi « $1 »',
'block-log-flags-anononly' => 'jëfandikukat yi binduwul rek',
'block-log-flags-nocreate' => 'Tere nañ sa sosum sàq',
@@ -1950,8 +1920,7 @@ Xoolal [[Special:IPBlockList|limu IP yees téye]] ngir gis ñees téye ñépp.',
'ipb_expiry_temp' => 'Danki jëfandikukat yi nëbbu dañu wara doon yuy jeex.',
'ipb_hide_invalid' => 'Maneesul a far mii sàq; dafa mel ne ay coppiteem dañoo bari lool.',
'ipb_already_blocked' => 'Jëfandikukat bi « $1 » dañ ko téye ba noppi',
-'ipb-needreblock' => '== Téyees ba noppi ==
-$1 dañu koo téye ba noppi.
+'ipb-needreblock' => '$1 dañu koo téye ba noppi.
Dangaa bëgg a soppi anam yi?',
'ipb_cant_unblock' => 'Njuumte: téyeg $1 gisuwul. Xéj-na dañ kaa téyedi ba noppi.',
'ipb_blocked_as_range' => 'Njuumte: màkkaan mi $1 téyewuñ ko moom kase, kon doo ko man téyedi. Ci mbooloom $2 la bokk, faww nga téyedi mbooloo mépp.',
@@ -1986,7 +1955,6 @@ Ngir caabi walla caabeedi dàttub njoxe bi, laaj na joxekaayub web bi man cee bi
# Move page
'move-page' => 'Tuddewaat $1',
-'move-page-backlink' => '↠$1',
'move-page-legend' => 'Tuddewaat aw xët',
'movepagetext' => "Bii palanteeru coppite dafay tax a man a tuddewaat aw xët, toppale jaar-jaaram bépp ci tur wu bees wi.
Xët wu yàgg wa dafay jublu wu bees wi.
@@ -2154,9 +2122,7 @@ Dafay tax nga man a bind ngirte li ci boyotu tënk bi.',
'modern.js' => '/* Bépp JavaScript buñ fi duggal jëfandikukat yiy jëfandikoo col gu Modern keppa koy yeb */',
# Metadata
-'nodublincore' => 'Jégginjoxe yu « Dublin Core RDF » dooxuñu ci joxekaay bii.',
-'nocreativecommons' => 'Jégginjoxe yu « Creative Commons RDF » doxuñu ci joxekaay bii.',
-'notacceptable' => 'Bii joxekaay bu wiki manuta jébbal ay njoxe cib kem bu sa client mana jàng.',
+'notacceptable' => 'Bii joxekaay bu wiki manuta jébbal ay njoxe cib kem bu sa client mana jàng.',
# Attribution
'anonymous' => 'Benn walla ay jëfandikukat yu binduwul yu {{SITENAME}}',
@@ -2173,27 +2139,16 @@ Dafay tax nga man a bind ngirte li ci boyotu tënk bi.',
'spam_reverting' => 'Loppantib sumb mu mujj mu amul lëkkalekaay buy jëme $1',
'spam_blanking' => 'Setal nañ wecc sumb yi amoon lëkkalekaay buy jëme $1',
-# Math options
-'mw_math_html' => 'HTML su manee ne, lu ko moy PNG',
-
-# Math errors
-'math_failure' => 'Njuumte ci xayma',
-'math_unknown_error' => 'Njuumte li xamuñ ko',
-'math_unknown_function' => 'Solo si xamuñ ko',
-'math_lexing_error' => 'Njuumteg mbindin',
-'math_syntax_error' => 'njuumtey mbindin',
-
# Browsing diffs
'previousdiff' => '↠Coppite yi gën a yàgg',
'nextdiff' => 'Coppite yi mujj →',
# Media information
-'file-info' => 'Réyaayu file bi : $1, type MIME : $2',
-'file-info-size' => '$1 × $2 pixels, réyaayu file bi : $3, type MIME : $4',
-'file-nohires' => '<small>Amul kem bu ëpp bii bu jàppandi.</small>',
-'svg-long-desc' => 'Dencukaay SVG, kem bu jaadu $1 × $2 pixel, dayoo dencukaay bi: $3',
-'show-big-image' => 'Ngandalal nataal gii',
-'show-big-image-thumb' => '<small>Dayoob wonendi gi : $1 × $2 pixel</small>',
+'file-info' => 'Réyaayu file bi : $1, type MIME : $2',
+'file-info-size' => '$1 × $2 pixels, réyaayu file bi : $3, type MIME : $4',
+'file-nohires' => '<small>Amul kem bu ëpp bii bu jàppandi.</small>',
+'svg-long-desc' => 'Dencukaay SVG, kem bu jaadu $1 × $2 pixel, dayoo dencukaay bi: $3',
+'show-big-image' => 'Ngandalal nataal gii',
# Special:NewFiles
'ilsubmit' => 'Seet',
@@ -2216,7 +2171,13 @@ Lëkkalekaay yiy toftal, ci wenn rëdd wi, dees leen di jàppee nikiy sette, maa
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Yaatuwaay',
@@ -2227,14 +2188,12 @@ Lëkkalekaay yiy toftal, ci wenn rëdd wi, dees leen di jàppee nikiy sette, maa
# External editor support
'edit-externally' => 'Soppi xët wii ak ab tëriin bu biti',
-'edit-externally-help' => 'Xoolal [http://www.mediawiki.org/wiki/Manual:External_editors tegtali camp gi] ngir yeneeni xamle',
+'edit-externally-help' => 'Xoolal [//www.mediawiki.org/wiki/Manual:External_editors tegtali camp gi] ngir yeneeni xamle',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Yépp',
-'imagelistall' => 'yépp',
-'watchlistall2' => 'yépp',
-'namespacesall' => 'Yépp',
-'monthsall' => 'Yépp',
+'watchlistall2' => 'yépp',
+'namespacesall' => 'Yépp',
+'monthsall' => 'Yépp',
# E-mail address confirmation
'confirmemail' => 'Dëggalal sa m-bataaxal',
@@ -2262,12 +2221,12 @@ Dëgëlël ni bëgg ngaa sakkaat xët wii.",
'watchlistedit-normal-legend' => 'Dindi ay xët yi limu toppte gi',
'watchlistedit-normal-explain' => 'xët yu sa limu toppte ñooy gisu fii ci suuf.
Ngir dindi am xët (ak xëtu waxtaanukaayam) ci lim gi, kligal ci néeg moomu ci wetam te nga klig ci suuf.
-Man nga tamit [[Special:Watchlist/raw|soppi ko]].',
+Man nga tamit [[Special:EditWatchlist/raw|soppi ko]].',
'watchlistedit-normal-submit' => 'Dindi xët yi nga tann',
'watchlistedit-normal-done' => '{{PLURAL:$1|Dindi nañ am xët|$1 ciy xët dindi nañ leen}} ci sa limu toppte :',
'watchlistedit-raw-title' => 'Coppiteg limu toppte gi',
'watchlistedit-raw-legend' => 'Coppiteg limu toppte gi',
-'watchlistedit-raw-explain' => 'Limu xët yi nekk ci sa limu toppte moo nekk ci suuf, xëtu waxtaan yi nekku ñu ci(ñoo ciy duggal seen bopp). Man ngaa soppi lim gi: yokk ci xët yi nga bëgg a topp, am xët ci rëdd mu ne, ak dindi xët yi nga bëggtul a topp. Soo noppee, kligal ci suuf ngir yeesal lim gi. Man nga tamit jëfëndikoo [[Special:Watchlist/edit|Soppikaay gu mak gi]].',
+'watchlistedit-raw-explain' => 'Limu xët yi nekk ci sa limu toppte moo nekk ci suuf, xëtu waxtaan yi nekku ñu ci(ñoo ciy duggal seen bopp). Man ngaa soppi lim gi: yokk ci xët yi nga bëgg a topp, am xët ci rëdd mu ne, ak dindi xët yi nga bëggtul a topp. Soo noppee, kligal ci suuf ngir yeesal lim gi. Man nga tamit jëfëndikoo [[Special:EditWatchlist|Soppikaay gu mak gi]].',
'watchlistedit-raw-titles' => 'Xët :',
'watchlistedit-raw-submit' => 'Yeesal lim gi',
'watchlistedit-raw-done' => 'Sa limu toppte yeesal nañ ko.',
diff --git a/languages/messages/MessagesWuu.php b/languages/messages/MessagesWuu.php
index 5bfa8b15..0bf796d1 100644
--- a/languages/messages/MessagesWuu.php
+++ b/languages/messages/MessagesWuu.php
@@ -144,14 +144,6 @@ $messages = array(
'index-category' => '索引拉许个页é¢',
'noindex-category' => '弗曾索引拉许个页é¢',
-'mainpagetext' => "'''MediaWiki安装æˆåŠŸå“‰ï¼'''",
-'mainpagedocfooter' => '请访问[http://meta.wikimedia.org/wiki/Help:Contents 用户手册]以获得使用此维基软件个信æ¯ï¼
-
-== 入门 ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置设置列表]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常è§é—®é¢˜è§£ç­”]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki å‘布邮件列表]',
-
'about' => '关于',
'article' => '内容页é¢',
'newwindow' => '(垃拉新窗å£é‡Œå‘开开æ¥ï¼‰',
@@ -202,7 +194,6 @@ $messages = array(
'history' => '页é¢æ¡£æ¡ˆ',
'history_short' => '历å²',
'updatedmarker' => '上趟访问以æ¥ä¸ªæ›´æ–°',
-'info_short' => 'ä¿¡æ¯',
'printableversion' => '打å°ç‰ˆ',
'permalink' => '永久链接',
'print' => '打å°',
@@ -377,12 +368,11 @@ $1',
'protectedpagetext' => '箇åªé¡µé¢å·²ç»é”定,以防编辑。',
'viewsourcetext' => '侬å¯ä»¥æŸ¥çœ‹æ­ä»”å¤åˆ¶ç®‡åªé¡µé¢ä¸ªæºç ï¼š',
'protectedinterface' => '箇åªé¡µé¢æ供软件个界é¢æ–‡æœ¬ã€‚为著防止滥用咾已ç»é”定。',
-'editinginterface' => "'''警告:''' 侬垃许编辑个页é¢æ˜¯ç”¨äºŽæ供软件个界é¢æ–‡æœ¬ã€‚改å˜æ­¤é¡µä¼šå¾—å½±å“其他用户个界é¢å¤–观。å‡ä½¿è¦ç¿»è¯‘,请考虑使用 [http://translatewiki.net/wiki/Main_Page?setlang=zh-hans translatewiki.net],一个用得æ¥ä¸ºMediaWiki软件本地化个计划。",
+'editinginterface' => "'''警告:''' 侬垃许编辑个页é¢æ˜¯ç”¨äºŽæ供软件个界é¢æ–‡æœ¬ã€‚改å˜æ­¤é¡µä¼šå¾—å½±å“其他用户个界é¢å¤–观。å‡ä½¿è¦ç¿»è¯‘,请考虑使用 [//translatewiki.net/wiki/Main_Page?setlang=zh-hans translatewiki.net],一个用得æ¥ä¸ºMediaWiki软件本地化个计划。",
'sqlhidden' => '(SQL查询已éšè—)',
'cascadeprotected' => '箇åªé¡µé¢æ‹¨ä¿æŠ¤æ‹‰è®¸ï¼Œå› ä¸ºç®‡åªé¡µé¢æ‹¨ä¸‹åº•å·²ç»æ ‡æ³¨â€œè”é”ä¿æŠ¤â€ä¸ª{{PLURAL:$1|一åª|多åª}}被ä¿æŠ¤é¡µé¢åŒ…å«ï¼š
$2',
'namespaceprotected' => "侬无没编辑'''$1'''å字空间里å‘页é¢ä¸ªæƒé™ã€‚",
-'customcssjsprotected' => '侬无æƒç¼–辑箇åªé¡µé¢ï¼Œå› ä¸ºæ¸ åŒ…å«å…¶ä»–用户个个人设定。',
'ns-specialprotected' => '特殊页编辑是弗æ¥ä¸‰ä¸ªã€‚',
'titleprotected' => "箇åªæ ‡é¢˜å·²ç»æ‹¨[[User:$1|$1]]ä¿æŠ¤ä»¥é˜²æ­¢åˆ›å»ºã€‚ç†ç”±æ˜¯''$2''。",
@@ -430,7 +420,7 @@ $2',
'loginsuccesstitle' => '登录æˆåŠŸ',
'loginsuccess' => "'''侬现在以 \"\$1\" 个身份登录到{{SITENAME}}。 '''",
'nosuchuser' => '寻弗ç€ç”¨æˆ·â€œ$1â€ã€‚用户å是大å°å†™æ•æ„Ÿå¤–加区分ç¹ç®€ä½“个。请检查拼写,或者[[Special:UserLogin/signup|å¼€åªæ–°è´¦æˆ·]]。',
-'nosuchusershort' => '无没å«â€œ<nowiki>$1</nowiki>â€ä¸ªç”¨æˆ·ã€‚请检查侬个输入。',
+'nosuchusershort' => '无没å«â€œ$1â€ä¸ªç”¨æˆ·ã€‚请检查侬个输入。',
'nouserspecified' => '侬必须选个用户å。',
'login-userblocked' => '箇个用户拨å°é”拉许。弗å…许登录。',
'wrongpassword' => '密ç å¼—对。请侬å†è¯•è¯•çœ‹ã€‚',
@@ -472,7 +462,7 @@ $2',
'loginlanguagelabel' => '语言:$1',
'suspicious-userlogout' => '侬登出个è¦æ±‚å·²ç»æ‹¨å›žå¤´è„±ï¼Œå› ä¸ºæ¸ å¯èƒ½æ˜¯ç”±å·²æŸå个æµè§ˆå™¨æˆ–者缓存代ç†ä¼ é€ä¸ªã€‚',
-# Password reset dialog
+# Change password dialog
'resetpass' => '更改密ç ',
'resetpass_announce' => '侬是通过一åªä¸´æ—¶å‘é€åˆ°e-mail里å‘个代ç ç™»å½•çš„。è¦å®Œæˆç™»å½•ï¼Œä¾¬å¿…须垃此地设定一åªæ–°å¯†ç ï¼š',
'resetpass_header' => '更改密ç ',
@@ -501,8 +491,6 @@ $2',
'extlink_tip' => '外部链接(弗è¦å¿˜è®°è„±å‰å¤´åŠ http://)',
'headline_sample' => '标题文本',
'headline_tip' => '2级标题文字',
-'math_sample' => '箇æ­åµŒå…¥æ•°å­¦å…¬å¼',
-'math_tip' => 'æ’å…¥æ•°å­¦å…¬å¼ ï¼ˆLaTeX)',
'nowiki_sample' => '垃拉箇æ­æ’å…¥éžæ ¼å¼æ–‡æœ¬',
'nowiki_tip' => '忽略wikiæ ¼å¼',
'image_tip' => '嵌入文件',
@@ -577,7 +565,7 @@ $2',
'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>。',
-'userpage-userdoesnotexist' => '用户账户“$1â€å¼—曾创建。请垃拉创建ï¼ç¼–辑迭个页é¢å‰å¤´å…ˆæ£€æŸ¥ä¸€è®°ã€‚',
+'userpage-userdoesnotexist' => '用户账户“<nowiki>$1</nowiki>â€å¼—曾创建。请垃拉创建ï¼ç¼–辑迭个页é¢å‰å¤´å…ˆæ£€æŸ¥ä¸€è®°ã€‚',
'userpage-userdoesnotexist-view' => '用户账户“$1â€å¼—曾创建。',
'blocked-notice-logextract' => '箇ä½ç”¨æˆ·ç®‡æ­‡ç•€å°é”垃许。
下头有最近个å°é”纪录以供å‚考:',
@@ -953,7 +941,6 @@ $1",
'changepassword' => '改密ç ',
'prefs-skin' => '皮肤',
'skin-preview' => '预览',
-'prefs-math' => '数学公å¼',
'datedefault' => '呒拨å好',
'prefs-datetime' => '日脚æ­ä»”è¾°å…‰',
'prefs-personal' => '用户档案',
@@ -977,8 +964,6 @@ $1",
'columns' => '列:',
'searchresultshead' => 'æœç´¢',
'resultsperpage' => 'æ¯é¡µæ˜¾ç¤ºé“¾æŽ¥æ•°ï¼š',
-'contextlines' => 'æ¯é“¾æ˜¾ç¤ºè¡Œæ•°ï¼š',
-'contextchars' => 'æ¯è¡Œæ˜¾ç¤ºå­—数:',
'stub-threshold' => '<a href="#" class="stub">短页é¢é“¾æŽ¥</a>æ ¼å¼é—¨æ§›å€¼ï¼ˆå­—节):',
'recentchangesdays' => '最近更改里å‘个显示日数:',
'recentchangesdays-max' => '最长 $1 日',
@@ -1248,10 +1233,8 @@ $1",
'mywatchlist' => '我个监控列表',
'nowatchlist' => '倷个监控列表是空个。',
'watchnologin' => '朆登录',
-'addedwatch' => '加到监控列表哉',
'addedwatchtext' => "è¯¥ä¸ªé¡µé¢ \"[[:\$1]]\" å·²ç»åŠ åˆ°ä¾¬ä¸ª[[Special:Watchlist|监控列表]]哉。
å°†æ¥å¯¹è¯¥é¡µé¢ä¸ªæ”¹åŠ¨æ­ä»”æ­ç•Œä¸ªè®²å¼ é¡µä¸ªæ”¹åŠ¨ä¼šåˆ—表垃该é¢ï¼Œå¹¶ä¸”页é¢ä¼šåžƒæ‹‰[[Special:RecentChanges|近段辰光个改å˜åˆ—表]]里å‘显示æˆåŠŸ'''黑体''',实梗好外加便当拿渠拣出æ¥ã€‚å‡ä½¿ä¾¬æ­‡ä»”两日åˆæƒ³æ‹¿ç®‡ä¸ªé¡µé¢ç™»ä¾¬ä¸ªç›‘控列表里å‘拿脱个说法,垃侧æ¡é‡Œå‘点击“弗è¦ç›‘控。",
-'removedwatch' => '从监控列表里å‘拿脱哉',
'removedwatchtext' => '页é¢[[:$1]]å·²ç»ä»Ž[[Special:Watchlist|侬个监控页é¢]]里å‘拿脱。',
'watch' => '监控',
'watchthispage' => '监控该åªé¡µé¢',
@@ -1277,7 +1260,7 @@ $1",
'confirmdeletetext' => '侬å³å°†åˆ é™¤ä¸€åªé¡µé¢æˆ–图åƒä»¥åŠå…¶åŽ†å²ã€‚
请确定侬è¦è¿›è¡Œæ­¤é¡¹æ“作,并且了解其åŽæžœï¼ŒåŒæ—¶ä¾¬ä¸ªè¡Œä¸ºç¬¦åˆ[[{{MediaWiki:Policy-url}}|the policy]]。',
'actioncomplete' => 'æ“作完æˆå“‰',
-'deletedtext' => '"<nowiki>$1</nowiki>"å·²ç»åˆ é™¤ã€‚最近删除记录请å‚è§$2。',
+'deletedtext' => '"$1"å·²ç»åˆ é™¤ã€‚最近删除记录请å‚è§$2。',
'deletedarticle' => '"[[$1]]" å·²ç»åˆ è„±å“‰',
'dellogpage' => '删除记录',
'deletionlog' => '删除记录',
@@ -1301,7 +1284,7 @@ $1",
'protectexpiry' => '到期:',
'protect_expiry_invalid' => '到期辰光无效。',
'protect_expiry_old' => '到期辰光已ç»è¿‡åŽ»å“‰ã€‚',
-'protect-text' => '侬好垃拉此地æµè§ˆæ­ä»”修改页é¢<strong><nowiki>$1</nowiki></strong>个ä¿æŠ¤çº§åˆ«ã€‚',
+'protect-text' => '侬好垃拉此地æµè§ˆæ­ä»”修改页é¢<strong>$1</strong>个ä¿æŠ¤çº§åˆ«ã€‚',
'protect-locked-access' => '侬个账户æƒé™å¼—好修改ä¿æŠ¤çº§åˆ«ã€‚
下底是<strong>$1</strong>箇歇个ä¿æŠ¤çº§åˆ«ï¼š',
'protect-cascadeon' => '下底个{{PLURAL:$1|一åª|多åª}}页é¢åŒ…å« æœ¬é¡µé¢ä¸ªåŒæ—¶ï¼Œå¯åŠ¨äº†è¿žé”ä¿æŠ¤ï¼Œå› æ­¤æœ¬é¡µé¢ç›®å‰ä¹Ÿæ‹¨ä¿æŠ¤æ‹‰è®¸ï¼Œå¼—好编辑。侬å¯ä»¥è®¾ç½®æœ¬é¡µé¢ä¸ªä¿æŠ¤çº§åˆ«ï¼Œä½†ç®‡ä¸ªå¹¶å¼—会对连é”ä¿æŠ¤æœ‰æ‰€å½±å“。',
@@ -1367,7 +1350,6 @@ $1",
# Block/unblock
'blockip' => '查å°ç”¨æˆ·',
-'ipaddress' => 'IP 地å€:',
'ipadressorusername' => 'IP地å€æˆ–用户å:',
'ipbreason' => 'ç†ç”±:',
'ipbreasonotherlist' => '其它原因',
@@ -1383,7 +1365,7 @@ $1",
'contribslink' => '贡献',
'blocklogpage' => 'å°ç¦æ—¥å¿—',
'blocklogentry' => '“[[$1]]â€æ‹¨æŸ¥å°æ‹‰è®¸ï¼Œç»ˆæ­¢è¾°å…‰ä¸º$2 $3',
-'blocklogtext' => '该个是用户å°ç¦æ­ä»”解ç¦æ“作个记录。自动å°ç¦ä¸ªIP地å€å¼—会列勒该答。到[[Special:IPBlockList|IP å°ç¦åˆ—表]]去看当å‰ç”Ÿæ•ˆä¸ªå°ç¦åˆ—表。',
+'blocklogtext' => '该个是用户å°ç¦æ­ä»”解ç¦æ“作个记录。自动å°ç¦ä¸ªIP地å€å¼—会列勒该答。到[[Special:BlockList|IP å°ç¦åˆ—表]]去看当å‰ç”Ÿæ•ˆä¸ªå°ç¦åˆ—表。',
'unblocklogentry' => '$1å·²ç»æ‹¨è§£å°',
'block-log-flags-nocreate' => '开户已ç»æ‹¨ç¦ç”¨',
'proxyblocksuccess' => '好哉。',
@@ -1516,11 +1498,10 @@ $1",
'nextdiff' => '新版→',
# Media information
-'file-info-size' => '$1×$2åƒç´ ï¼Œæ–‡ä»¶å¤§å°ï¼š$3,MIME类型:$4',
-'file-nohires' => '<small>无更高分辨率å¯æ供。</small>',
-'svg-long-desc' => 'SVG文件,å义大å°ï¼š$1×$2åƒç´ ï¼Œæ–‡ä»¶å¤§å°ï¼š$3',
-'show-big-image' => '完整分辨率',
-'show-big-image-thumb' => '<small>迭幅缩略图个分辨率:$1×$2åƒç´ </small>',
+'file-info-size' => '$1×$2åƒç´ ï¼Œæ–‡ä»¶å¤§å°ï¼š$3,MIME类型:$4',
+'file-nohires' => '<small>无更高分辨率å¯æ供。</small>',
+'svg-long-desc' => 'SVG文件,å义大å°ï¼š$1×$2åƒç´ ï¼Œæ–‡ä»¶å¤§å°ï¼š$3',
+'show-big-image' => '完整分辨率',
# Special:NewFiles
'newimages' => '新文件陈列室',
@@ -1557,7 +1538,13 @@ Variants for Chinese language
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-artist' => '作者',
@@ -1574,14 +1561,12 @@ Variants for Chinese language
# External editor support
'edit-externally' => '用外部应用程åºæ¥ç¼–辑该åªæ–‡ä»¶',
-'edit-externally-help' => '(请å‚è§[http://www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解详细信æ¯ï¼‰',
+'edit-externally-help' => '(请å‚è§[//www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解详细信æ¯ï¼‰',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => '全部',
-'imagelistall' => '所有',
-'watchlistall2' => '全部',
-'namespacesall' => '全部',
-'monthsall' => 'å…¨',
+'watchlistall2' => '全部',
+'namespacesall' => '全部',
+'monthsall' => 'å…¨',
# E-mail address confirmation
'confirmemail' => '确认电å­é‚®ä»¶åœ°å€',
diff --git a/languages/messages/MessagesXal.php b/languages/messages/MessagesXal.php
index 6f9d85e2..d6e1655b 100644
--- a/languages/messages/MessagesXal.php
+++ b/languages/messages/MessagesXal.php
@@ -84,8 +84,8 @@ $messages = array(
'tog-shownumberswatching' => 'Тер халх шинҗлдг демнчнрин то үзүлх',
'tog-oldsig' => 'Бәәдг тәвÑн һарна хәләвр:',
'tog-fancysig' => 'Эврән тәвÑн һарна бики темдлһн (авто заалһта уга)',
-'tog-externaleditor' => 'Һаза чикллгч олзлх (һанцхн Ñрдмчнрт, тана тоолцврт шишлң көг кергтә. [http://www.mediawiki.org/wiki/Manual:External_editors Дәкәд өггцн.])',
-'tog-externaldiff' => 'Һаза йилһән үзүлдг програм олзлх (һанцхн Ñрдмчнрт, тана тоолцврт шишлң көг кергтә [http://www.mediawiki.org/wiki/Manual:External_editors Дәкәд өггцн.])',
+'tog-externaleditor' => 'Һаза чикллгч олзлх (һанцхн Ñрдмчнрт, тана тоолцврт шишлң көг кергтә. [//www.mediawiki.org/wiki/Manual:External_editors Дәкәд өггцн.])',
+'tog-externaldiff' => 'Һаза йилһән үзүлдг програм олзлх (һанцхн Ñрдмчнрт, тана тоолцврт шишлң көг кергтә [//www.mediawiki.org/wiki/Manual:External_editors Дәкәд өггцн.])',
'tog-showjumplinks' => 'ТуÑлмҗ заалһуд «-д/-Ñ‚ һарх» йовулх',
'tog-uselivepreview' => 'Шамдһа хәләвр олзлх (JavaScript кергтә, амÑлһн)',
'tog-forceeditsummary' => 'Учр-утх хооÑн бәәхлә медүлх',
@@ -181,14 +181,6 @@ $messages = array(
'index-category' => 'ИндекÑÑн халхÑ',
'noindex-category' => 'ИндекÑÑн биш халхÑ',
-'mainpagetext' => "Йовудта Mediawiki гүүлһүдә тәвллһн.'''",
-'mainpagedocfooter' => 'Тер бики закллһна теткүл ÑŽ кеһәд олзлх туÑк [http://meta.wikimedia.org/wiki/Help:Contents көтлвр] даÑтн.
-
-== ТуÑта заавр ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Көгүдә бүрткл]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki туÑк ЮмБи]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki шинҗллһнә бүрткл]',
-
'about' => 'Тодлҗ бичлһн',
'article' => 'Зүүл',
'newwindow' => '(шин терзд)',
@@ -238,7 +230,6 @@ $messages = array(
'history' => 'тууҗ',
'history_short' => 'Тууҗ',
'updatedmarker' => 'мини шидрә орлһна хөөн шинрүлÑн',
-'info_short' => 'Өггцн',
'printableversion' => 'Барин бәәдл',
'permalink' => 'Даңгин заалһ',
'print' => 'Барлх',
@@ -440,7 +431,7 @@ $1',
Демнчна нерт баһ болн ик үзгүд әдл биш болна.
«<nowiki>$1</nowiki>» гидг нерәдлһтә демнч бәәшго.
Бичлһиг шүүтн аль [[Special:UserLogin/signup|бигчдлһиг бүтәтн]].',
-'nosuchusershort' => '«<nowiki>$1</nowiki>» гидг нерәдлһтә демнч бәәшго.
+'nosuchusershort' => '«$1» гидг нерәдлһтә демнч бәәшго.
Бичлһиг шүүтн.',
'nouserspecified' => 'Та демнчна нернь бичх йоÑтав.',
'login-userblocked' => 'Тер демнч бүÑлÑн, харһад орҗ болшго бәәнә.',
@@ -455,7 +446,7 @@ $1',
'accountcreated' => 'Бичгдллһн бүтәв.',
'loginlanguagelabel' => 'Келн: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'Ðууц үгиг Ñольх',
'resetpass_header' => 'Бичгдллһнә нууц үгиг Ñольх',
'oldpassword' => 'Көгшн нууц үг:',
@@ -476,8 +467,6 @@ $1',
'extlink_tip' => 'Һаза заалһ (http:// гидг Ñклц бичә мартн)',
'headline_sample' => 'Толһа нерн',
'headline_tip' => 'Дү толһа нерн',
-'math_sample' => 'Энд тегштклиг бичтн',
-'math_tip' => 'Тегшткл (LaTeX)',
'nowiki_sample' => 'Энд темдглһтә уга бичгиг бичтн',
'nowiki_tip' => 'Бики темдглһиг баÑÑ…',
'image_tip' => 'ОрцулÑн боомг',
@@ -633,7 +622,6 @@ $1',
'changepassword' => 'Ðууц үгиг Ñольҗ',
'prefs-skin' => 'Хувцнь',
'skin-preview' => 'Хәләвр',
-'prefs-math' => 'Тетшкүлүд',
'datedefault' => 'Келхлә уга',
'prefs-datetime' => 'Цаг хуһцан',
'prefs-personal' => 'Демнчна көгүд',
@@ -691,7 +679,7 @@ $1',
'prefs-help-gender' => 'Эн дәкәд бәәдг: чик күндллһн тоолвртар төлә. Эн өггцн цуг әмтнә болх.',
'email' => 'E-mail хайг',
'prefs-help-realname' => 'Үнн нернь та Ñврә дурар бичнәт. Бичлхлә, Ñн тәвÑн һарт Ñлзлдг бәәх.',
-'prefs-help-email' => 'E-mail хайг та Ñврә дурар бичнәт. Бичхлә, тадн шин түлкүр үгиг бичгәр йовулÑн өгҗ чаднат (мартхла). Тадн дәкәд талдан улÑд тана күндллһнә халхар күндлҗ зөв өгҗ чаднат, тана E-mail үзүләд уга.',
+'prefs-help-email' => 'E-mail хайг та Ñврә дурар бичнәт. Бичхлә, тадн шин түлкүр үгиг бичгәр йовулÑн өгҗ чаднат (мартхла).',
'prefs-info' => 'Һол медә',
'prefs-i18n' => 'Олн орни бәәлһн',
'prefs-signature' => 'ТәвÑн һаран',
@@ -884,10 +872,8 @@ $1',
# Watchlist
'watchlist' => 'Шинҗллһнә Ñеткүл',
'mywatchlist' => 'Шинҗллһнә Ñеткүл',
-'addedwatch' => 'Шинҗллһнә Ñеткүлд немв.',
'addedwatchtext' => "«[[:$1]]» гидг нерәдлһтә халх тана [[Special:Watchlist|шинҗллһнә Ñеткүлд]] немв.
Тегәд тер халхна болн терүнә ухалврин Ñольлһн Ñнд шиҗлÑн болх. Эн халх '''тарһн'' үзгәр [[Special:RecentChanges|шидрә Ñольлһна]] халхд бичÑн (амр умшхар) болх.",
-'removedwatch' => 'Шинҗллһнә ÑÐµÑ‚ÐºÒ¯Ð»Ó™Ñ Ò»Ð°Ñ€Ò»Ð².',
'removedwatchtext' => '«[[:$1]]» халх тана [[Special:Watchlist|шинҗллһнә ÑеткүләÑ]] һарһв.',
'watch' => 'Шинҗлх',
'watchthispage' => 'Эн халхиг шинҗлх',
@@ -920,10 +906,10 @@ e-mail\'ар $PAGEEDITOR_EMAIL
--
Тана шинҗллһнә Ñеткүлин көгүдиг Ñольҗ Ñедхлә, Ñниг дахтн:
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
Хәрү холва болн туÑ:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'Эн халхиг һарһҗ',
@@ -937,7 +923,7 @@ e-mail\'ар $PAGEEDITOR_EMAIL
'confirmdeletetext' => 'Та цуг халхиг аль зургиг һарһҗ орхар бәәнәт.
Буйн болтха, та үнәр тана үүлдин ашуд болн [[{{MediaWiki:Policy-url}}]] әңгин зокал медәд, Ñн батлҗ кетн.',
'actioncomplete' => 'Үүлд кев',
-'deletedtext' => '«<nowiki>$1</nowiki>» һарһҗ болв.
+'deletedtext' => '«$1» һарһҗ болв.
$2 шидрә һарһлһна төлә хәләтн.',
'deletedarticle' => '«[[$1]]» халхиг һарһв',
'dellogpage' => 'Һарһллһна Ñеткүл',
@@ -957,7 +943,7 @@ $2 шидрә һарһлһна төлә хәләтн.',
'protectexpiry' => 'Өңгрнә:',
'protect_expiry_invalid' => 'Буру өңгрллһнә цаг',
'protect_expiry_old' => 'Өңгрллһнә цаг бәәв.',
-'protect-text' => "Энд та '''<nowiki>$1</nowiki>''' халхин харÑллһна кемҗән хәләҗ, хүврлҗ чаднат.",
+'protect-text' => "Энд та '''$1''' халхин харÑллһна кемҗән хәләҗ, хүврлҗ чаднат.",
'protect-locked-access' => "Эн халхна харÑллһна кемҗән Ñольҗ, тана бичгдлһна зөв тату.
Ода болÑн '''$1''' халхна көгүд:",
'protect-cascadeon' => 'Эн халх харÑÑн. Юнгад гихлә, тер халх {{PLURAL:$1|Ñн халхд|тенд халхÑд}} каÑкад харÑллһта. Тадн Ñн халхна харÑллһна кемҗән Ñольх чаднат, болв тер үүл каÑкад харлÑһиг цокҗ чадшго.',
@@ -1021,7 +1007,6 @@ $2 шидрә һарһлһна төлә хәләтн.',
# Block/unblock
'blockip' => 'Демнчиг бүÑлх',
-'ipaddress' => 'IP хайг:',
'ipadressorusername' => 'IP хайг аль демнчна нернь:',
'ipbreason' => 'Учр:',
'ipbreasonotherlist' => 'Талдан учр',
@@ -1154,7 +1139,6 @@ $2 шидрә һарһлһна төлә хәләтн.',
'file-nohires' => '<small>Икәр чинртә Ñнз уга.</small>',
'svg-long-desc' => 'SVG боомг, $1 × $2 мет цегтә, боомгин кемҗән: $3',
'show-big-image' => 'Күцц чинр',
-'show-big-image-thumb' => '<small>УрдаÑнь хәләврин кемҗән: $1 × $2 цегтә</small>',
'file-info-gif-looped' => 'билцгÑн',
# Bad image list
@@ -1176,7 +1160,13 @@ $2 шидрә һарһлһна төлә хәләтн.',
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'Өргн',
@@ -1209,15 +1199,13 @@ $2 шидрә һарһлһна төлә хәләтн.',
# External editor support
'edit-externally' => 'Эн боомгиг һаза заклһар чиклх',
-'edit-externally-help' => '([http://www.mediawiki.org/wiki/Manual:External_editors Тәвллһнә заалт] икәр өггцнә төлә хәләтн)',
+'edit-externally-help' => '([//www.mediawiki.org/wiki/Manual:External_editors Тәвллһнә заалт] икәр өггцнә төлә хәләтн)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'цуг',
-'imagelistall' => 'цуг',
-'watchlistall2' => 'цуг',
-'namespacesall' => 'цуг',
-'monthsall' => 'цуг',
-'limitall' => 'цуг',
+'watchlistall2' => 'цуг',
+'namespacesall' => 'цуг',
+'monthsall' => 'цуг',
+'limitall' => 'цуг',
# action=purge
'confirm_purge_button' => 'Тиим',
diff --git a/languages/messages/MessagesXmf.php b/languages/messages/MessagesXmf.php
index 611afd1a..ab4d76df 100644
--- a/languages/messages/MessagesXmf.php
+++ b/languages/messages/MessagesXmf.php
@@ -155,7 +155,6 @@ $messages = array(
'searcharticle' => 'გინულáƒ',
'history' => 'ხáƒáƒ¡áƒ˜áƒšáƒáƒ¨ ისტáƒáƒ áƒ˜áƒ',
'history_short' => 'ისტáƒáƒ áƒ˜áƒ',
-'info_short' => 'ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ',
'printableversion' => 'áƒáƒ‘ეშტáƒáƒšáƒ˜ ვერსიáƒ',
'permalink' => 'პერმáƒáƒœáƒ”ნტული რცხუ',
'print' => 'დáƒáƒ‘ეშტი',
@@ -267,6 +266,7 @@ $messages = array(
'createaccount' => 'áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¨ გáƒáƒœáƒ¬áƒ§áƒ£áƒ›áƒ',
'gotaccount' => "უკვე რეგისტრირებული რეთ� '''$1'''",
'gotaccountlink' => 'მინულáƒ',
+'userlogin-resetlink' => 'გუგáƒáƒ­áƒ§áƒáƒ áƒ“ესრმიშáƒáƒ£áƒšáƒáƒ áƒ სáƒáƒ­áƒ˜áƒ áƒ ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒáƒ¥?',
'loginsuccess' => "'''áƒáƒ¡áƒ” მიშულირ რეთ {{SITENAME}}-ს მუჭáƒáƒ— \"\$1\".'''",
'nouserspecified' => 'სáƒáƒ­áƒ˜áƒ áƒ რე მáƒáƒ®áƒ•áƒáƒ áƒ”ბუშ ჯáƒáƒ®áƒáƒ¨ მიშáƒáƒ­áƒáƒ áƒ£áƒ.',
'mailmypassword' => 'áƒáƒ®áƒáƒš პáƒáƒ áƒáƒšáƒ˜áƒ¨ მáƒáƒ¯áƒ¦áƒáƒœáƒ',
@@ -284,8 +284,6 @@ $messages = array(
'extlink_tip' => 'გáƒáƒšáƒ”ნი რცხუ (ქáƒáƒ áƒ¨áƒ£áƒ“áƒáƒœáƒ˜ http:// პრეფიქსი)',
'headline_sample' => 'დუდლáƒáƒœáƒ“áƒáƒ áƒ˜áƒ¨ ტექსტი',
'headline_tip' => 'მáƒáƒŸáƒ˜áƒ áƒ დáƒáƒœáƒ”შ დუდლáƒáƒœáƒ“áƒáƒ áƒ˜',
-'math_sample' => 'ქინáƒáƒ®áƒ£áƒœáƒ”თ ფáƒáƒ áƒ›áƒ£áƒšáƒ თáƒáƒ¥',
-'math_tip' => 'მáƒáƒ—ემáƒáƒ¢áƒ˜áƒ™áƒ£áƒ  ფáƒáƒ áƒ›áƒ£áƒšáƒ (LaTeX)',
'nowiki_sample' => 'ქინáƒáƒ®áƒ£áƒœáƒ”თ უგუფáƒáƒ áƒ›áƒáƒ¢áƒáƒ¤áƒ£ ტექსტი თáƒáƒ¥',
'nowiki_tip' => 'ვიკიშ ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ áƒáƒ¤áƒáƒ¨ იგნáƒáƒ áƒ˜áƒ áƒáƒ¤áƒ',
'image_tip' => 'დინáƒáƒ®áƒ£áƒœáƒáƒ¤áƒ˜áƒšáƒ˜ ფáƒáƒ˜áƒšáƒ˜',
@@ -454,11 +452,13 @@ $messages = array(
'powersearch-field' => 'დáƒáƒ’áƒáƒ áƒ˜ áƒáƒ—ენáƒ',
# Preferences page
-'preferences' => 'კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ',
-'mypreferences' => 'ჩქიმ კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ”ფი',
-'youremail' => 'ელ-ფáƒáƒ¨áƒ¢áƒ:',
-'yourrealname' => 'ნáƒáƒœáƒ“ულ სáƒáƒ®áƒ”ლ *',
-'yourlanguage' => 'ნინáƒ:',
+'preferences' => 'კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ',
+'mypreferences' => 'ჩქიმ კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ”ფი',
+'youremail' => 'ელ-ფáƒáƒ¨áƒ¢áƒ:',
+'yourrealname' => 'ნáƒáƒœáƒ“ულ სáƒáƒ®áƒ”ლ *',
+'yourlanguage' => 'ნინáƒ:',
+'prefs-help-email' => 'ელ-ფáƒáƒ¨áƒ¢áƒáƒ¨ მიáƒáƒ¬áƒ£áƒ áƒáƒ¤áƒ£ ვრრე უციáƒ, მáƒáƒ áƒ áƒáƒ®áƒ•áƒ˜áƒšáƒáƒ¤áƒ£ რე პáƒáƒ áƒáƒšáƒ˜áƒ¨ ეიáƒáƒ áƒ¡áƒ®áƒ”ბელრპáƒáƒ áƒáƒšáƒ˜ გიჭყáƒáƒšáƒ˜áƒ“ეთუ̂-დáƒ.',
+'prefs-help-email-others' => 'თქვრშეილებუნრáƒáƒšáƒáƒ‘რმეჩáƒáƒ— შხვეფს დჷგეკáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒáƒœ ელ-ფáƒáƒ¨áƒ¢áƒáƒ— თქვáƒáƒœ áƒáƒœáƒ’áƒáƒ áƒ˜áƒ¨áƒ˜áƒ¡ ვáƒáƒ áƒ áƒáƒ©áƒ˜áƒ”ბელ ხáƒáƒ¡áƒ·áƒšáƒáƒ¨ ლინკიშ გეჸუნáƒáƒ—. თქვáƒáƒœáƒ˜ ელ-ფáƒáƒ¨áƒ¢áƒáƒ¨ მიáƒáƒ¬áƒ£áƒ áƒáƒ¤áƒ£ ვáƒáƒœáƒ™áƒáƒ áƒ©áƒ¥áƒ˜áƒœáƒ“ჷ მუჟáƒáƒ›áƒ¡ შხვრმáƒáƒ®áƒ•áƒáƒ áƒ”ბუეფი დჷგეკáƒáƒ•áƒ¨áƒ˜áƒ áƒ”ბუნáƒáƒœáƒ˜.',
# Groups
'group-user' => 'მáƒáƒ®áƒ•áƒáƒ áƒ”ბუეფი',
@@ -623,10 +623,8 @@ $messages = array(
'watchlist' => 'ჩქიმ áƒáƒ™áƒáƒœáƒ¢áƒ áƒáƒšáƒ”ბულეფიშ ერკებულ',
'mywatchlist' => 'ჩქიმ კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¨ ერკებულ',
'watchlistfor2' => '$1 $2-ს',
-'addedwatch' => 'გეძინელ რე კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¨ ერკებულშáƒ',
'addedwatchtext' => "\"[[:\$1]]\" ხáƒáƒ¡áƒ˜áƒšáƒáƒ¥ გეძინელქ იყ’უ თქვáƒáƒœ [[Special:Watchlist|watchlist]]–შáƒ.
თე ხáƒáƒ¡áƒ˜áƒšáƒáƒ¨áƒ დრთეწკუმრáƒáƒ¡áƒáƒªáƒ˜áƒ áƒ”ბულ სხუნუáƒáƒ¨ ხáƒáƒ¡áƒ˜áƒšáƒáƒ¨áƒ მუმáƒáƒ£áƒšáƒáƒ  თირáƒáƒ¤áƒ”ფ მáƒáƒ©áƒáƒ›áƒ˜áƒš იყ’ი თექ დრთქვრგეგეáƒáƒ“ვილáƒáƒœ თიშ გიშáƒáƒ’áƒáƒ áƒ£áƒáƒ¥áƒ˜áƒœ, ხáƒáƒ¡áƒ˜áƒšáƒ გუმáƒáƒ áƒ©áƒ¥áƒ˜áƒœáƒ“უ '''რუმეთ''' [[Special:RecentChanges|list of recent changes]]–ს.\"",
-'removedwatch' => 'მáƒáƒœáƒ¬áƒ§áƒ£áƒ›áƒ˜áƒš რე კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¨ ერკებულშე',
'removedwatchtext' => 'áƒáƒ—ე ხáƒáƒ¡áƒ˜áƒšáƒáƒ¥ "[[:$1]]" ლáƒáƒ¡áƒ˜áƒ áƒ¥ იყ’უ [[Special:Watchlist|თქვნ კáƒáƒœáƒ¢áƒ áƒáƒšáƒ˜áƒ¨ ერკებულშე]].',
'watch' => 'გáƒáƒ™áƒáƒœáƒ¢áƒ áƒáƒšáƒ˜',
'watchthispage' => 'თე ხáƒáƒ¡áƒ˜áƒšáƒáƒ¨ კáƒáƒœáƒ¢áƒ áƒáƒš',
@@ -645,7 +643,7 @@ $messages = array(
დáƒáƒ“áƒáƒ¡áƒ¢áƒ£áƒ áƒ˜áƒ—, ნáƒáƒ›áƒ“რთქვრნáƒáƒœáƒ“ულრგáƒáƒ™áƒáƒœáƒ თეშ ღáƒáƒšáƒáƒ›áƒ დრნáƒáƒ›áƒ£áƒ“რთქვრგáƒáƒ áƒ©áƒ¥áƒ˜áƒšáƒ”ნრთე ქიმინჯáƒáƒšáƒáƒ¨ მáƒáƒ¦áƒáƒšáƒ£áƒ”ფ დრმუჭáƒáƒ— თქვრთეს áƒáƒ áƒ—უთ [[{{MediaWiki:Policy-url}}|წესეფიშ]] მეხუჯáƒáƒ¤áƒ˜áƒšáƒ.',
'actioncomplete' => 'მáƒáƒ¥áƒ›áƒ”დáƒáƒšáƒ რსულებულ რე',
'actionfailed' => 'მáƒáƒ¥áƒ›áƒ”დáƒáƒšáƒáƒ¥ დემáƒáƒ áƒªáƒ®áƒ·',
-'deletedtext' => '"<nowiki>$1</nowiki>\\" ლáƒáƒ¡áƒ˜áƒ áƒ¥ იყ’უ.
+'deletedtext' => '"$1\\" ლáƒáƒ¡áƒ˜áƒ áƒ¥ იყ’უ.
áƒáƒ¡áƒ”რდე ლáƒáƒ¡áƒ˜áƒ  ხáƒáƒ¡áƒ˜áƒšáƒ”ფიშ ერკებულ ქáƒáƒ«áƒ˜áƒ áƒ˜áƒ— $2–ს.',
'deletedarticle' => '"[[$1]]" ლáƒáƒ¡áƒ˜áƒ  რე',
'dellogpage' => 'ლáƒáƒ¡áƒ˜áƒ áƒ”ფიშ ერკებულ',
@@ -665,7 +663,7 @@ $messages = array(
'protectexpiry' => 'ვáƒáƒ“რგიშáƒáƒšáƒ”',
'protect_expiry_invalid' => 'ვáƒáƒ“áƒáƒ¨ გიშულáƒáƒ¨ თáƒáƒ áƒ˜áƒ¦ რე ჩილáƒáƒ—ირ',
'protect_expiry_old' => 'ვáƒáƒ“áƒáƒ¨ გიშულáƒáƒ¨ თáƒáƒ áƒ˜áƒ¦ რე ულირ ბáƒáƒ áƒ¯áƒ˜áƒ¡',
-'protect-text' => "'''<nowiki>$1</nowiki>''' ხáƒáƒ¡áƒ˜áƒšáƒáƒ¨áƒ თხილუáƒáƒ¨ დáƒáƒœáƒ”შ ძირáƒáƒ¤áƒ დრთირáƒáƒ¤áƒ შეგილებუნრთáƒáƒ¥.",
+'protect-text' => "'''$1''' ხáƒáƒ¡áƒ˜áƒšáƒáƒ¨áƒ თხილუáƒáƒ¨ დáƒáƒœáƒ”შ ძირáƒáƒ¤áƒ დრთირáƒáƒ¤áƒ შეგილებუნრთáƒáƒ¥.",
'protect-locked-access' => "თქვრვრგიღუნრხáƒáƒ¡áƒ˜áƒšáƒáƒ¨ თხილუáƒáƒ¨ დáƒáƒœáƒ”შ თირუáƒáƒ¨ áƒáƒšáƒáƒ‘áƒ.
áƒáƒ—áƒáƒ¥ რე '''$1''' ხáƒáƒ¡áƒ˜áƒšáƒáƒ¨ áƒáƒ¡áƒ”იáƒáƒœ გენწყილáƒáƒ‘ეფ.",
'protect-cascadeon' => 'áƒáƒ—ე ხáƒáƒ¡áƒ˜áƒšáƒ áƒáƒ¡áƒ” თხილერ რე, თიშენ ნáƒáƒ›áƒ“რთენრმიშულირ რე {{PLURAL:$1|ხáƒáƒ¡áƒ˜áƒšáƒáƒ¨áƒ, ნáƒáƒ›áƒ“გáƒáƒ¡áƒ˜áƒ—|ხáƒáƒ¡áƒ˜áƒšáƒ”ფშáƒ, ნáƒáƒ›áƒ“გეფსით}} ჩáƒáƒ áƒ—ულ áƒáƒ¤áƒ£ კáƒáƒ¡áƒ™áƒáƒ“ურ თხილუáƒ.
@@ -867,11 +865,10 @@ $messages = array(
'nextdiff' => 'უáƒáƒ®áƒáƒšáƒáƒ¨ თირáƒáƒ¤áƒ →',
# Media information
-'file-info-size' => '$1 × $2 პიქსელ, ფáƒáƒ˜áƒšáƒ˜áƒ¨ ზáƒáƒ›áƒ: $3, MIME ტიპ: $4',
-'file-nohires' => '<small> უმáƒáƒ¡ მáƒáƒ¦áƒáƒš გიშáƒáƒ’áƒáƒ áƒáƒœáƒ¯áƒáƒšáƒ ვრრე შელებუáƒáƒœ.</small>',
-'svg-long-desc' => 'SVG ფáƒáƒ˜áƒš, ნáƒáƒ›áƒ˜áƒœáƒáƒšáƒ£áƒ áƒ $1×$2 პიქსელ, ფáƒáƒ˜áƒšáƒ˜áƒ¨ ზიმáƒ: $3',
-'show-big-image' => 'რსული გიშáƒáƒ’áƒáƒ áƒáƒœáƒ¯áƒáƒšáƒ',
-'show-big-image-thumb' => '<small>ზáƒáƒ›áƒ გიწáƒáƒ—áƒáƒšáƒáƒ áƒáƒ¤áƒáƒ¨ ბáƒáƒ áƒ¯áƒ˜áƒ¡: $1 × $2 პიქსელ</small>',
+'file-info-size' => '$1 × $2 პიქსელ, ფáƒáƒ˜áƒšáƒ˜áƒ¨ ზáƒáƒ›áƒ: $3, MIME ტიპ: $4',
+'file-nohires' => '<small> უმáƒáƒ¡ მáƒáƒ¦áƒáƒš გიშáƒáƒ’áƒáƒ áƒáƒœáƒ¯áƒáƒšáƒ ვრრე შელებუáƒáƒœ.</small>',
+'svg-long-desc' => 'SVG ფáƒáƒ˜áƒš, ნáƒáƒ›áƒ˜áƒœáƒáƒšáƒ£áƒ áƒ $1×$2 პიქსელ, ფáƒáƒ˜áƒšáƒ˜áƒ¨ ზიმáƒ: $3',
+'show-big-image' => 'რსული გიშáƒáƒ’áƒáƒ áƒáƒœáƒ¯áƒáƒšáƒ',
# Special:NewFiles
'newimages' => 'áƒáƒ®áƒáƒš სურáƒáƒ—ეფ',
@@ -887,7 +884,7 @@ $messages = array(
'metadata-help' => 'თე ფáƒáƒ˜áƒšáƒ¡ áƒáƒ®áƒáƒšáƒ£ გეძინელ ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ, ნáƒáƒ›áƒ£áƒ— áƒáƒ”გებიეთ თი ციფრულ კáƒáƒ›áƒ”რáƒáƒ¨áƒ” ვáƒáƒ áƒ სკáƒáƒœáƒ”რშე რე გეძინელ, ნáƒáƒ›áƒ£áƒ— რდუ გუმáƒáƒ áƒ˜áƒœáƒáƒ¤áƒ˜áƒš თე ფáƒáƒ˜áƒšáƒ˜áƒ¨ áƒáƒ¥áƒ˜áƒ›áƒ˜áƒœáƒ¯áƒáƒšáƒ ვáƒáƒ áƒ დáƒáƒªáƒ˜áƒ¤áƒ áƒ”ბელáƒ. ფáƒáƒ˜áƒšáƒ˜áƒ¨ áƒáƒ áƒ˜áƒ’ინáƒáƒš თირელ ქáƒáƒ áƒ”ნ-დáƒ, შილებე კáƒáƒœáƒ™áƒáƒšáƒ” დეტáƒáƒš ვრგიშáƒáƒ«áƒ˜áƒ áƒ£áƒáƒœáƒ“áƒáƒ¡ ფáƒáƒ˜áƒšáƒ¨áƒ მიშáƒáƒ¦áƒáƒšáƒ˜áƒ  თირáƒáƒ¤áƒ”ფს.',
'metadata-expand' => 'დეტáƒáƒšáƒ”ფიშ გáƒáƒ«áƒ˜áƒœáƒ”ლ ძირáƒáƒ¤áƒ',
'metadata-collapse' => 'გáƒáƒ«áƒ˜áƒœáƒ”ლ დეტáƒáƒšáƒ”ფიშ ტყáƒáƒ‘ინáƒáƒ¤áƒ',
-'metadata-fields' => 'áƒáƒ—ე მესიჯის შინáƒáƒ¤áƒ˜áƒš EXIF მეტრმáƒáƒ©áƒáƒ›áƒ˜áƒšáƒáƒ¤áƒ”ფიშ áƒáƒ¤áƒ˜áƒ áƒ©áƒ”ფ ეკáƒáƒ áƒáƒªáƒ®áƒ˜áƒš იყ’ი ნáƒáƒ®áƒáƒœáƒ¢áƒ˜áƒ¨ ხáƒáƒ¡áƒ˜áƒšáƒáƒ¨ დისფლეის მუჟáƒáƒ›áƒ¡áƒ˜áƒ— მეტრმáƒáƒ©áƒáƒ›áƒ˜áƒšáƒáƒ¤áƒ”ფიშ ერკებულ იყ’ი გითáƒáƒ¤áƒáƒ©áƒ˜áƒšáƒ˜áƒœ
+'metadata-fields' => 'áƒáƒ—ე მესიჯის შინáƒáƒ¤áƒ˜áƒš მეტრმáƒáƒ©áƒáƒ›áƒ˜áƒšáƒáƒ¤áƒ”ფიშ áƒáƒ¤áƒ˜áƒ áƒ©áƒ”ფ ეკáƒáƒ áƒáƒªáƒ®áƒ˜áƒš იჸი ნáƒáƒ®áƒáƒœáƒ¢áƒ˜áƒ¨ ხáƒáƒ¡áƒ˜áƒšáƒáƒ¨ დისფლეის მუჟáƒáƒ›áƒ¡áƒ˜áƒ— მეტრმáƒáƒ©áƒáƒ›áƒ˜áƒšáƒáƒ¤áƒ”ფიშ ერკებულ იჸი გითáƒáƒ¤áƒáƒ©áƒ˜áƒšáƒ˜áƒœ
შხვეფ, მუჭáƒáƒ— წესინ, ტყáƒáƒ‘ინáƒáƒ¤áƒ˜áƒš იყ’ი.
* make
* model
@@ -895,7 +892,13 @@ $messages = array(
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'სიგáƒáƒœáƒ”',
@@ -903,7 +906,7 @@ $messages = array(
# External editor support
'edit-externally' => 'თე ფáƒáƒ˜áƒšáƒ˜áƒ¨ áƒáƒ áƒ”დáƒáƒ¥áƒ¢áƒ˜áƒ áƒáƒ¤áƒáƒšáƒ გიმირინეთ გáƒáƒšáƒ”ნ პრáƒáƒ’რáƒáƒ›áƒ',
-'edit-externally-help' => '(უმáƒáƒ¡ ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒáƒ¨áƒ ქáƒáƒ«áƒ˜áƒ áƒ˜áƒ— [http://www.mediawiki.org/wiki/Manual:External_editors])',
+'edit-externally-help' => '(უმáƒáƒ¡ ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒáƒ¨áƒ ქáƒáƒ«áƒ˜áƒ áƒ˜áƒ— [//www.mediawiki.org/wiki/Manual:External_editors])',
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'áƒáƒ áƒ«áƒ',
diff --git a/languages/messages/MessagesYi.php b/languages/messages/MessagesYi.php
index 459f7676..ee4d1f7e 100644
--- a/languages/messages/MessagesYi.php
+++ b/languages/messages/MessagesYi.php
@@ -56,85 +56,83 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'פ×רט×פלטע_ווייטערפירונגען' ),
+ 'Activeusers' => array( 'טעטיגע_ב×ניצער' ),
+ 'Allmessages' => array( 'סיסטע×_מעלדונגען' ),
+ 'Allpages' => array( '×לע_בלעטער' ),
+ 'Ancientpages' => array( '×ור×לטע_בלעטער' ),
+ 'Blankpage' => array( 'ליידיגער_בל×ט' ),
+ 'Block' => array( 'בל×קירן' ),
+ 'Blockme' => array( 'בל×קירט_מיך' ),
'BrokenRedirects' => array( 'צעבר××›×¢× ×¢_ווייטערפירונגען' ),
- 'Disambiguations' => array( 'ב×דייטן' ),
- 'Userlogin' => array( 'ב×ניצער_×יינל×גירן' ),
- 'Userlogout' => array( '×רויסל×גירן' ),
+ 'Categories' => array( 'ק×טעג×ריעס' ),
+ 'ChangePassword' => array( 'ענדערן_פ×סוו×רט' ),
+ 'Confirmemail' => array( 'ב×שטעטיגן_×¢-פ×סט' ),
+ 'Contributions' => array( 'בײַשטײַערונגען' ),
'CreateAccount' => array( 'ש×פֿן_ק×נטע' ),
- 'Preferences' => array( 'פרעפערענצן' ),
- 'Watchlist' => array( '×ויפֿפ×סן_ליסטע', 'מיין_×ויפֿפ×סן_ליסטע' ),
- 'Recentchanges' => array( 'לעצטע_ענדערונגען' ),
- 'Upload' => array( '×רויפל×דן' ),
+ 'Deadendpages' => array( 'בלעטער_×ן_פ×רבינדונגען' ),
+ 'Disambiguations' => array( 'ב×דייטן' ),
+ 'DoubleRedirects' => array( 'פ×רט×פלטע_ווייטערפירונגען' ),
+ 'Emailuser' => array( 'שיקן_×ן_×¢-פ×סט_צו×_ב×ניצער' ),
+ 'Export' => array( 'עקספ×רט' ),
+ 'Fewestrevisions' => array( 'ווייניגסטע_רעוויזיעס' ),
+ 'Import' => array( '×ימפ×רט' ),
+ 'BlockList' => array( 'בל×קירן_ליסטע' ),
+ 'Listadmins' => array( 'ליסטע_פון_סיס×פן' ),
+ 'Listbots' => array( 'ליסטע_פון_ב×טס' ),
'Listfiles' => array( 'בילדער' ),
- 'Newimages' => array( 'נייע_בילדער' ),
+ 'Listredirects' => array( 'ווייטערפירונגען' ),
'Listusers' => array( 'ליסטע_פון_ב×ניצערס' ),
- 'Statistics' => array( 'סט×טיסטיק' ),
- 'Randompage' => array( 'צופעליג', 'צופעליגער_בל×ט' ),
+ 'Log' => array( 'ל×גביכער' ),
'Lonelypages' => array( 'פ×ר\'יתומ\'טע_בלעטער' ),
- 'Uncategorizedpages' => array( 'בלעטער_×ן_ק×טעג×ריעס' ),
- 'Uncategorizedcategories' => array( 'ק×טעג×ריעס_×ן_ק×טעג×ריעס' ),
- 'Uncategorizedimages' => array( 'בילדער_×ן_ק×טעג×ריעס' ),
- 'Uncategorizedtemplates' => array( 'מוסטערן_×ן_ק×טעג×ריעס' ),
- 'Unusedcategories' => array( '×ומב×ניצטע_ק×טעג×ריעס' ),
- 'Unusedimages' => array( '×ומב×ניצטע_בילדער' ),
- 'Wantedpages' => array( 'געזוכטע_בלעטער' ),
- 'Wantedcategories' => array( 'געזוכטע_ק×טעג×ריעס' ),
- 'Wantedfiles' => array( 'געזוכטע_טעקעס' ),
- 'Wantedtemplates' => array( 'געזוכטע_מוסטערן' ),
+ 'Longpages' => array( 'ל×× ×’×¢_בלעטער' ),
+ 'MIMEsearch' => array( 'זוכן_MIME' ),
+ 'Mostcategories' => array( 'מערסטע_ק×טעג×ריעס' ),
+ 'Mostimages' => array( 'מערסטע_פ×רבונדענע_בילדער' ),
'Mostlinked' => array( 'מערסטע_פ×רבונדענע_בלעטער' ),
'Mostlinkedcategories' => array( 'מערסטע_פ×רבונדענע_ק×טעג×ריעס' ),
'Mostlinkedtemplates' => array( 'מערסטע_פ×רבונדענע_מוסטערן' ),
- 'Mostimages' => array( 'מערסטע_פ×רבונדענע_בילדער' ),
- 'Mostcategories' => array( 'מערסטע_ק×טעג×ריעס' ),
'Mostrevisions' => array( 'מערסטע_רעוויזיעס' ),
- 'Fewestrevisions' => array( 'ווייניגסטע_רעוויזיעס' ),
- 'Shortpages' => array( 'קורצע_בלעטער' ),
- 'Longpages' => array( 'ל×× ×’×¢_בלעטער' ),
- 'Newpages' => array( 'נייע_בלעטער' ),
- 'Ancientpages' => array( '×ור×לטע_בלעטער' ),
- 'Deadendpages' => array( 'בלעטער_×ן_פ×רבינדונגען' ),
- 'Protectedpages' => array( 'געשיצטע_בלעטער' ),
- 'Protectedtitles' => array( 'געשיצטע_קעפלעך' ),
- 'Allpages' => array( '×לע_בלעטער' ),
- 'Prefixindex' => array( 'בלעטער_וו×ס_הייבן_×ין_מיט' ),
- 'Ipblocklist' => array( 'בל×קירן_ליסטע' ),
- 'Specialpages' => array( 'ב×זונדערע_בלעטער' ),
- 'Contributions' => array( 'בײַשטײַערונגען' ),
- 'Emailuser' => array( 'שיקן_×ן_×¢-פ×סט_צו×_ב×ניצער' ),
- 'Confirmemail' => array( 'ב×שטעטיגן_×¢-פ×סט' ),
- 'Whatlinkshere' => array( 'בלעטער_וו×ס_פ×רבונדן_×הער' ),
'Movepage' => array( 'ב×וועגן_בל×ט' ),
- 'Blockme' => array( 'בל×קירט_מיך' ),
- 'Categories' => array( 'ק×טעג×ריעס' ),
- 'Export' => array( 'עקספ×רט' ),
- 'Version' => array( 'ווערזיע' ),
- 'Allmessages' => array( 'סיסטע×_מעלדונגען' ),
- 'Log' => array( 'ל×גביכער' ),
- 'Blockip' => array( 'בל×קירן' ),
- 'Import' => array( '×ימפ×רט' ),
- 'Userrights' => array( 'ב×ניצער_רעכטן' ),
- 'Unwatchedpages' => array( 'נישט_×ויפגעפ×סטע_בלעטער' ),
- 'Listredirects' => array( 'ווייטערפירונגען' ),
- 'Unusedtemplates' => array( '×ומב×ניצטע_מוסטערן' ),
- 'Randomredirect' => array( 'צופעליק_ווײַטערפֿירן' ),
+ 'Mycontributions' => array( 'מיינע_ביישטייערן' ),
'Mypage' => array( 'מײַן_בל×ט' ),
'Mytalk' => array( 'מײַן_שמועס_בל×ט' ),
- 'Mycontributions' => array( 'מיינע_ביישטייערן' ),
- 'Listadmins' => array( 'ליסטע_פון_סיס×פן' ),
- 'Listbots' => array( 'ליסטע_פון_ב×טס' ),
+ 'Myuploads' => array( 'מיינע_×רויפל×דונגען' ),
+ 'Newimages' => array( 'נייע_בילדער' ),
+ 'Newpages' => array( 'נייע_בלעטער' ),
'Popularpages' => array( 'פ×פולערע_בלעטער' ),
+ 'Preferences' => array( 'פרעפערענצן' ),
+ 'Prefixindex' => array( 'בלעטער_וו×ס_הייבן_×ין_מיט' ),
+ 'Protectedpages' => array( 'געשיצטע_בלעטער' ),
+ 'Protectedtitles' => array( 'געשיצטע_קעפלעך' ),
+ 'Randompage' => array( 'צופעליג', 'צופעליגער_בל×ט' ),
+ 'Randomredirect' => array( 'צופעליק_ווײַטערפֿירן' ),
+ 'Recentchanges' => array( 'לעצטע_ענדערונגען' ),
+ 'Revisiondelete' => array( '×ויסמעקן_ווערסיעס' ),
'Search' => array( 'זוכן' ),
- 'Resetpass' => array( 'ענדערן_פ×סוו×רט' ),
- 'Withoutinterwiki' => array( 'בלעטער_×ָן_×ינטערוויקי' ),
- 'Blankpage' => array( 'ליידיגער_בל×ט' ),
+ 'Shortpages' => array( 'קורצע_בלעטער' ),
+ 'Specialpages' => array( 'ב×זונדערע_בלעטער' ),
+ 'Statistics' => array( 'סט×טיסטיק' ),
'Tags' => array( 'ט×גן' ),
- 'Activeusers' => array( 'טעטיגע_ב×ניצער' ),
-);
-
-$defaultUserOptionOverrides = array(
- # Swap sidebar to right side by default
- 'quickbar' => 2,
+ 'Uncategorizedcategories' => array( 'ק×טעג×ריעס_×ן_ק×טעג×ריעס' ),
+ 'Uncategorizedimages' => array( 'בילדער_×ן_ק×טעג×ריעס' ),
+ 'Uncategorizedpages' => array( 'בלעטער_×ן_ק×טעג×ריעס' ),
+ 'Uncategorizedtemplates' => array( 'מוסטערן_×ן_ק×טעג×ריעס' ),
+ 'Unusedcategories' => array( '×ומב×ניצטע_ק×טעג×ריעס' ),
+ 'Unusedimages' => array( '×ומב×ניצטע_בילדער' ),
+ 'Unusedtemplates' => array( '×ומב×ניצטע_מוסטערן' ),
+ 'Unwatchedpages' => array( 'נישט_×ויפגעפ×סטע_בלעטער' ),
+ 'Upload' => array( '×רויפל×דן' ),
+ 'Userlogin' => array( 'ב×ניצער_×יינל×גירן' ),
+ 'Userlogout' => array( '×רויסל×גירן' ),
+ 'Userrights' => array( 'ב×ניצער_רעכטן' ),
+ 'Version' => array( 'ווערזיע' ),
+ 'Wantedcategories' => array( 'געזוכטע_ק×טעג×ריעס' ),
+ 'Wantedfiles' => array( 'געזוכטע_טעקעס' ),
+ 'Wantedpages' => array( 'געזוכטע_בלעטער' ),
+ 'Wantedtemplates' => array( 'געזוכטע_מוסטערן' ),
+ 'Watchlist' => array( '×ויפֿפ×סן_ליסטע', 'מיין_×ויפֿפ×סן_ליסטע' ),
+ 'Whatlinkshere' => array( 'בלעטער_וו×ס_פ×רבונדן_×הער' ),
+ 'Withoutinterwiki' => array( 'בלעטער_×ָן_×ינטערוויקי' ),
);
$magicWords = array(
@@ -168,6 +166,7 @@ $magicWords = array(
'displaytitle' => array( '1', 'ווייזן_קעפל', 'כותרת תצוגה', 'DISPLAYTITLE' ),
'language' => array( '0', '#שפר×ך:', '#שפה:', '#LANGUAGE:' ),
'defaultsort' => array( '1', 'גרונטס×רטיר:', 'מיון רגיל:', 'DEFAULTSORT:', 'DEFAULTSORTKEY:', 'DEFAULTCATEGORYSORT:' ),
+ 'hiddencat' => array( '1', '__ב××”×לטענע_ק×טעג×ריע__', '__קטגוריה_מוסתרת__', '__HIDDENCAT__' ),
'pagesize' => array( '1', 'בל×טגרייס', 'גודל דף', 'PAGESIZE' ),
);
@@ -204,9 +203,9 @@ $messages = array(
'tog-oldsig' => '×יצטיגער ×ונטערשריפֿט:',
'tog-fancysig' => 'ב×Ö·×”×ַנדלן ×ונטערשריפט ×ַלס וויקיטעקסט (×ָן ×ויט×מ×טישן לינק)',
'tog-externaleditor' => 'ניצן × ×“×¨×•×™×¡× ×“×™×’×Ÿ רעד×קטירער גרונטלעך (× ×ר פֿ×ר מומחי×, ד×ס פֿ×דערט ב×זונדערע ק×מפיוטער שטעלונגען).
-[http://www.mediawiki.org/wiki/Manual:External_editors ווײַטערע ×ינפֿ×רמ×ַציע.]',
+[//www.mediawiki.org/wiki/Manual:External_editors ווײַטערע ×ינפֿ×רמ×ַציע.]',
'tog-externaldiff' => 'ניצן × ×“×¨×•×™×¡× ×“×™×’×Ÿ פֿ×ַרגלײַכער גרונטלעך (× ×ר פֿ×ר מומחי×, ד×ס פֿ×דערט ב×זונדערע ק×מפיוטער שטעלונגען)
-[http://www.mediawiki.org/wiki/Manual:External_editors ווײַטערע ×ינפֿ×רמ×ַציע.]',
+[//www.mediawiki.org/wiki/Manual:External_editors ווײַטערע ×ינפֿ×רמ×ַציע.]',
'tog-showjumplinks' => 'ב×מעגלעך צוטריט לינקס פון "שפרינג צו"',
'tog-uselivepreview' => 'ב×נוצט זיך מיט לייוו פ×ר×ויסדיגע ווייזונג (JavaScript) (עקספירענמעטל)',
'tog-forceeditsummary' => 'וו×רן מיך ווען ×יך לייג × ×œ×™×™×“×™×’ קורץ וו×רט ענדערונג',
@@ -302,14 +301,7 @@ $messages = array(
'listingcontinuesabbrev' => '(המשך)',
'index-category' => '×ינדעקסירטע בלעטער',
'noindex-category' => '×ומ×ינדעקסירטע בלעטער',
-
-'mainpagetext' => "'''מעדיעוויקי ×ינסט×לירט מיט דערפ×לג.'''",
-'mainpagedocfooter' => "גיט זיך ×ן עצה מיט [http://meta.wikimedia.org/wiki/Help:Contents ב×ניצער'ס וועגווײַזער] פֿ×ר ×ינפֿ×רמ×ציע ווי×זוי זיך ב×נוצן מיט וויקי ווייכוו×ַרג.
-
-== נוצליכע וועבלינקען פֿ×ַר ×נהייבערס ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings רשימה פון ק×נפֿיגור×ציעס]
-* [http://www.mediawiki.org/wiki/Manual:FAQ ×פֿט געפֿרעגטע ש×לות]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce מעדיעוויקי ב×פֿרײַ×ונג פ×סטליסטע]",
+'broken-file-category' => 'בלעטער מיט צעבר××›×¢× ×¢ טעקע לינקען',
'about' => 'וועגן',
'article' => '××™× ×”×לט בל×ט',
@@ -361,10 +353,10 @@ $messages = array(
'history' => 'בל×ט היסט×ריע',
'history_short' => 'היסט×ריע',
'updatedmarker' => 'דערהיינטיגט זינט מיין לעצטע וויזיט',
-'info_short' => '×ינפ×רמ×ציע',
'printableversion' => 'דרוק ווערסיע',
'permalink' => 'שטענדיגער לינק',
'print' => 'דרוק',
+'view' => 'ב×ַקוקן',
'edit' => 'רעד×ַקטירן',
'create' => 'ש×ַפֿן',
'editthispage' => 'ענדערן ×“×¢× ×‘×œ×ט',
@@ -372,6 +364,7 @@ $messages = array(
'delete' => '×ויסמעקן',
'deletethispage' => '×ויסמעקן ×“×¢× ×‘×œ×ַט',
'undelete_short' => 'צוריקשטעלן {{PLURAL:$1|×יין רעד×ַקטירונג|$1 רעד×ַקטירונגען}}',
+'viewdeleted_short' => 'ב×ַקוקן {{PLURAL:$1|×יין געמעקטע ענדערונג|$1 געמעקטע ענדערונגען}}',
'protect' => 'ב×שיצן',
'protect_change' => 'טוישן',
'protectthispage' => 'ב×שיץ ×“×¢× ×‘×œ×ט',
@@ -456,6 +449,8 @@ $1',
'toc' => '××™× ×”×ַלט',
'showtoc' => 'ווײַזן',
'hidetoc' => 'ב×Ö·×”×ַלטן',
+'collapsible-collapse' => '×ײַנציען',
+'collapsible-expand' => 'פֿ×ַרברייטערן',
'thisisdeleted' => 'זען ×דער צוריקשטעלן $1?',
'viewdeleted' => 'זען $1?',
'restorelink' => '{{PLURAL:$1|×יין געמעקטע ענדערונג|$1 געמעקטע ענדערונגען}}',
@@ -469,6 +464,8 @@ $1',
'feed-atom' => '×ט××',
'feed-rss' => '×ר.עס.עס.',
'red-link-title' => '$1 (בל×ט טוט × ×ָך נישט עקזיסטירן)',
+'sort-descending' => 'ס×רטירן ×ַר×ָפ',
+'sort-ascending' => 'ס×רטירן ×ַרויף',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => '×ַרטיקל',
@@ -553,13 +550,14 @@ $1',
'viewsourcetext' => '×יר קענט זען ×ון ק×פירן ×“×¢× ×ž×§×•×¨ פון ×“×¢× ×‘×œ×ַט:',
'protectedinterface' => 'דער בל×ַט שטעלט צו ×ינטערפֿייס טעקסט פֿ×ַרן װײכװ×ַרג, ×ון ××™×– פֿ×ַרשפּ×ַרט כּדי צו פֿ×ַרמײַדן ×°×ַנד×ַליז×.',
'editinginterface' => "'''וו×רענונג:''' ×יר ב×Ö·×ַרבעט × ×‘×œ×ט וו×ס ××™×– געניצט צוצושטעלן ×ינטערפֿייס טעקסט פ×ר דער ווייכוו×רג. ענדערונגען ×ין ×“×¢× ×‘×œ×ַט וועלן טוישן די ×ויסזען פון דער ×¡×™×¡×˜×¢× ×ž×•×“×¢×•×ª פ×ר ×לע ×נדערע ב×ניצערס.
-פֿ×ַר ×יבערזעצן, ב×ַטר×ַכטס ב×ַניצן [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], דער מעדיעוויקי ל×ק×ַליז×ציע פר×יעקט.",
+פֿ×ַר ×יבערזעצן, ב×ַטר×ַכטס ב×ַניצן [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], דער מעדיעוויקי ל×ק×ַליז×ציע פר×יעקט.",
'sqlhidden' => '(SQL פ×רל×× ×’ ב××”×לטן)',
'cascadeprotected' => 'דער בל×ט ××™×– פ×רשפ×רט ×¦×•× ×¢× ×“×¢×¨×Ÿ וויב×לד ער ××™×– ×יינגעשל×סן ×ין ××™×™× ×¢ פון די פ×לגנדע {{PLURAL:$1|בל×ט, וו×ס ××™×–|בלעטער, וו×ס זענען}} ב×שיצט מיט דער ק×סקייד ×פציע:
$2',
'namespaceprotected' => "×יר זענט נישט ערלויבט צו רעד×קטירן בלעטער ××™× ×¢× '''$1''' × ×מענטייל.",
-'customcssjsprotected' => '×יר ×”×ט נישט רשות צו רעד×ַקטירן ×“×¢× ×‘×œ×ַט, ווײַל ער ×ַנטה×ַלט די פערזענלעכע ב×ַשטימונגען פון ×ַן ×ַנדער ב×ַניצער.',
+'customcssprotected' => '×יר ×”×ט נישט רשות צו רעד×ַקטירן ×“×¢× CSS בל×ַט, ווײַל ער ×ַנטה×ַלט די פערזענלעכע ב×ַשטימונגען פון ×ַן ×ַנדער ב×ַניצער.',
+'customjsprotected' => '×יר ×”×ט נישט רשות צו רעד×ַקטירן ×“×¢× JavaScript בל×ַט, ווײַל ער ×ַנטה×ַלט די פערזענלעכע ב×ַשטימונגען פון ×ַן ×ַנדער ב×ַניצער.',
'ns-specialprotected' => 'מען קען נישט רעד×גירן ספעציעלע בלעטער.',
'titleprotected' => 'דער טיטל ××™×– געשיצט פון ווערן געש×פֿן דורך [[User:$1|$1]].
די ×ורז×ך ××™×– \'\'$2".',
@@ -595,6 +593,7 @@ $2',
'createaccount' => 'ב×ש×פֿט × × ×™×™×¢ ק×נטע',
'gotaccount' => "×”×סט שוין × ×§×נטע? '''$1'''.",
'gotaccountlink' => '×ריינל×גירן',
+'userlogin-resetlink' => 'פ×רגעסן ×ײַערע ×ַרײַנל×ָגירן פרטי×?',
'createaccountmail' => 'דורך ×¢-פ×סט',
'createaccountreason' => '×ורז×ַך:',
'badretype' => 'די פ×סווערטער וו×ס ×יר ×”×ט ×ריינגעלייגט זענען נישט ××™×™× ×™×’.',
@@ -608,13 +607,15 @@ $2',
'nocookieslogin' => '{{SITENAME}} נוצט קיכעלעך כדי ×ַרײַנל×גירן ב×ַניצער.
בײַ ×ײַך זענען קיכעלעך ×ומדערמעגלעכט.
ביטע ×ַקטיווירט ×–×™×™ ×ון פרובירט × ××›×ַמ×ָל.',
+'nocookiesfornew' => 'מען ×”×ט נישט געש×ַפֿן די ב×ַניצער ק×נטע, ווײַל מען ×”×ט נישט געקענט ב×ַשטעטיקן ×יר מקור.
+טוט פֿעסטשטעלן ×ָז קוקיס זענען ×ַקטיווירט, ל×ָדט ×ָן × ××›×ַמ×ל ×“×¢× ×‘×œ×ַט ×ון פרו×ווט ווידער.',
'noname' => '×יר ×”×ט נישט ×ַרײַנגעשטעלט קײַן גילטיקן ב×ַניצער × ×ָמען.',
'loginsuccesstitle' => '×ריינל×גירונג סוסקסעספול',
'loginsuccess' => "'''דו ביסט יעצט ×ַרײַנל×ָגירט ×ַלץ \"\$1\" ××™× ×¢× {{SITENAME}}.'''",
'nosuchuser' => '× ×™×©×˜× ×§×™×™×Ÿ ב×ניצער מיטן × ×מען "$1".
קוקט ×יבער ×ייער ×ויסלייג, ×דער [[Special:UserLogin/signup|ב×ש×פֿט × × ×™×™×¢ ק×נטע]].',
-'nosuchusershort' => 'נישט×Ö¸ קיין ב×ַניצער מיטן × ×ָמען "<nowiki>$1</nowiki>". ביטע ב×ַשטעטיקט ×“×¢× ×ויסלייג.',
+'nosuchusershort' => 'נישט×Ö¸ קיין ב×ַניצער מיטן × ×ָמען "$1". ביטע ב×ַשטעטיקט ×“×¢× ×ויסלייג.',
'nouserspecified' => '×יר ברויכט ספעציפֿיצירן × ×‘×ַניצער-× ×ָמען.',
'login-userblocked' => 'דער ב×ַניצער ××™×– בל×קירט. ×רײַנל×גירן נישט ערלויבט.',
'wrongpassword' => '×ומריכטיגע פ×סוו×רט ×ריינגעלייגט, ביטע פרובירט × ××›×מ×ל.',
@@ -657,13 +658,14 @@ $2',
'usernamehasherror' => 'ב×ַניצער × ×מען ט×ָר נישט ×ַנטה×ַלטן קיין לייטער סימב×ל',
'login-throttled' => '×יר ×”×ט געפרוווט צופֿיל מ×ל ×ריינל×גירן.
זייט ×זוי גוט ×ון וו×ַרט ×יידער ×יר פרוווט × ××›×מ×ל.',
+'login-abort-generic' => '×ײַער ×רײַנל×גירונג ××™×– נישט געווען דערפֿ×לגרייך—×ָפגעשטעלט',
'loginlanguagelabel' => 'שפר×ך: $1',
'suspicious-userlogout' => ' ×ײַער בקשה ×ַרויסל×ָגירן זיך ××™×– ×פגעלייגט געוו×רן ווייַל ×ייגנטלעך ××™×– ×–×™ געשיקט דורך ×Ö· צעבר××›×¢× ×¢× ×‘×œ×¢×˜×¢×¨×¢×¨ ×ָדער × ×¤×¨×קסי מיט × ×–×פ×ס.',
# E-mail sending
'php-mail-error-unknown' => '×ומב×ַק×ַנט טעות ×ין()mail פֿונקציע פֿון PHP.',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ענדערן ק×נטע פ×סוו×רט',
'resetpass_announce' => '×יר ×”×ט ×ריינל×גירט מיט × ×¤×¨×וויז×רישן ק×ד געשיקט דורכן ×¢-פ×סט. צו פ×רענדיגן ×ריינל×גירן, ברויכט ×יר ×נשטעלן × × ×™×™ פ×סוו×רט ד×:',
'resetpass_text' => '<!-- לייגט צו טעקסט ×“× -->',
@@ -681,6 +683,39 @@ $2',
×יר ×”×ט מעגלעך שוין געטוישט ×ייער פ×ַסוו×רט מיט הצלחה ×דער געבעטן × × ×²Ö· צײַטווײַליק פ×ַסוו×רט.',
'resetpass-temp-password' => 'צײַטווייליק פ×ַסוו×רט:',
+# Special:PasswordReset
+'passwordreset' => 'צוריקשטעלן פ×ַסוו×רט',
+'passwordreset-text' => 'דערג×ַנט די פ×Ö¸×¨×¢× ×¦×• ב×ַקומען ×ַן ×¢-פּ×ָסט דערמ×ָנונג פון די ×¤×¨×˜×™× ×¤Ö¿×•×Ÿ ×ײַער ק×נטע.',
+'passwordreset-legend' => 'צוריקשטעלן פ×ַסוו×רט',
+'passwordreset-disabled' => 'מען ×”×ט ×ומ×ַקטיוויטר צוריקשטעלן פ×ַסווערטער ×ויף דער וויקי.',
+'passwordreset-pretext' => '{{PLURAL:$1| | קל×ַפט ×ַרײַן ××™×™× ×¢ פֿון די ד×ַטן ×ונטן}}',
+'passwordreset-username' => 'ב×ַניצער × ×ָמען:',
+'passwordreset-domain' => 'ד×מען:',
+'passwordreset-email' => 'בליצפּ×ָסט ×ַדרעס:',
+'passwordreset-emailtitle' => 'ק×נטע ×¤×¨×˜×™× ×ין {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'עמעצער (×ž×¡×ª×ž× ×יר, פון IP ×דרעס $1) ×”×ט געבעטן × ×“×¢×¨×ž×נונג פון ×ייערע
+ק×נטע ×¤×¨×˜×™× ×¤×ר {{SITENAME}} ($4). די פ×לגנדע ב×ניצער {{PLURAL:$3|ק×נטע ××™×–|ק×נטעס זענען}}
+פ×רבונדן מיט ×“×¢× ×¢Ö¾×¤×סט ×דרעס:
+
+$2
+
+{{PLURAL:$3|ד×ס פר×וויז×רישע פ×סוו×רט|די פר×וויז×רישע פ×סווערטער}} וועלן ×ויסגיין × ×ך {{PLURAL:$5|×יין ט××’|$5 טעג}}.
+×יר ×–×לט ×ריינל×גירן ×ון קלויבן × × ×™×™×¢ פ×סוו×רט ×צינד. ט×מער × ×¦×•×•×™×™×˜×¢×¨ ×”×ט געשיקט די בקשה,
+×דער ווען ×יר געדענקט ×™× ×ייער פריעריקע פ×סוו×רט, ×ון וויל עס נישט ענדערן,
+ קענט ×יר ××™×’× ×רירן ×“×¢× ×× ×–××’ ×ון ניצן ווייטער ד×ס ×לטע פ×סוו×רט.',
+'passwordreset-emailtext-user' => 'ב×ניצער $1 ×ויף {{SITENAME}} ×”×ט געבעטן × ×“×¢×¨×ž×נונג פון ×ייערע ק×נטע ×¤×¨×˜×™× ×¤×ר {{SITENAME}} ($4).
+די פ×לגנדע ב×ניצער {{PLURAL:$3|ק×נטע ××™×–|ק×נטעס זענען}} פ×רבונדן מיט ×“×¢× ×¢Ö¾×¤×סט ×דרעס:
+
+$2
+
+{{PLURAL:$3|ד×ס פר×וויז×רישע פ×סוו×רט|די פר×וויז×רישע פ×סווערטער}} וועלן ×ויסגיין × ×ך {{PLURAL:$5|×יין ט××’|$5 טעג}}.
+×יר ×–×לט ×ריינל×גירן ×ון קלויבן × × ×™×™×¢ פ×סוו×רט ×צינד. ט×מער × ×¦×•×•×™×™×˜×¢×¨ ×”×ט געשיקט די בקשה,
+×דער ווען ×יר געדענקט ×™× ×ייער פריעריקע פ×סוו×רט, ×ון וויל עס נישט ענדערן,
+ קענט ×יר ××™×’× ×רירן ×“×¢× ×× ×–××’ ×ון ניצן ווייטער ד×ס ×לטע פ×סוו×רט.',
+'passwordreset-emailelement' => 'ב×ַניצער × ×ָמען: $1
+פר×וויז×רישער פּ×ַר×ָל: $2',
+'passwordreset-emailsent' => "מ'×”×ט געשיקט × ×“×¢×¨×ž×ָנונג ×¢-פּ×ָסט.",
+
# Edit page toolbar
'bold_sample' => 'דיקער טעקסט',
'bold_tip' => 'דיקער טעקסט',
@@ -692,8 +727,6 @@ $2',
'extlink_tip' => 'דערויסענדיגע לינק (געדענק http:// פרעפיקס)',
'headline_sample' => 'קעפּל',
'headline_tip' => 'קעפּל -2טער שט×פל',
-'math_sample' => 'לייגט ×ריין פ×רמל ד×',
-'math_tip' => 'מ×טעמ×טישע פ×רמל (LaTeX)',
'nowiki_sample' => 'נישט פֿ×רמ×ַטירטער טעקסט',
'nowiki_tip' => 'נישט פֿ×ָרמ×ַטירטער טעקסט',
'image_sample' => 'PictureFileName.jpg|קליין|250px|לייגט ×“× × ×§×¢×¤×œ פֿ×רן בילד',
@@ -778,7 +811,7 @@ $2',
'noarticletext-nopermission' => 'דערווײַל ××™×– נישט פ×ַר×ַן קיין ×©×•× ×˜×¢×§×¡×˜ ×ין ×“×¢× ×‘×œ×ַט.
×יר קענט [[Special:Search/{{PAGENAME}}| זוכן ×“×¢× ×‘×œ×ט טיטל]] ×ין ×נדערע בלעטער,
×דער <span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} × ×ָכזוכן די רעלעוו×נטע ל×גביכער]</span>.',
-'userpage-userdoesnotexist' => 'ב×ניצער ק×נטע "$1" ××™×– נישט ×ײַנגעשריבן. קוקט ×יבער צי ×יר ווילט ש×פֿן/רעד×קטירן ×“×¢× ×‘×œ×ט.',
+'userpage-userdoesnotexist' => 'ב×ניצער ק×נטע "<nowiki>$1</nowiki>" ××™×– נישט ×ײַנגעשריבן. קוקט ×יבער צי ×יר ווילט ש×פֿן/רעד×קטירן ×“×¢× ×‘×œ×ט.',
'userpage-userdoesnotexist-view' => 'ב×ניצער ק×נטע "$1" ××™×– נישט ×יינגעשריבן.',
'blocked-notice-logextract' => 'דער ב×ַניצער ××™×– דערווייַל פֿ×ַרשפ×ַרט.
די לעצטע בל×ָקירן ל××’ ×ַקציע ××™×– צוגעשטעלט ×ונטן:',
@@ -1156,12 +1189,13 @@ $1",
געב ×כט ××– ס'××™×– מעגלעך ×Ö·×– זייער ×ינדעקס פֿון {{SITENAME}} ××™× ×”×ַלט ××™×– ×פשר פֿ×ַרעלטערט.",
# Quickbar
-'qbsettings' => 'גיכפ×ַס',
-'qbsettings-none' => '×’×רנישט',
-'qbsettings-fixedleft' => 'קבוע לינקס',
-'qbsettings-fixedright' => 'קבוע רעכטס',
-'qbsettings-floatingleft' => 'שווימנדיג לינקס',
-'qbsettings-floatingright' => 'שווימנדיג רעכטס',
+'qbsettings' => 'גיכפ×ַס',
+'qbsettings-none' => '×’×רנישט',
+'qbsettings-fixedleft' => 'קבוע לינקס',
+'qbsettings-fixedright' => 'קבוע רעכטס',
+'qbsettings-floatingleft' => 'שווימנדיג לינקס',
+'qbsettings-floatingright' => 'שווימנדיג רעכטס',
+'qbsettings-directionality' => 'פֿעסט, ×פהענגיק ×ויף דער שריפֿט ריכטונג פֿון ×ײַער שפר×ַך.',
# Preferences page
'preferences' => 'פרעפֿערענצן',
@@ -1172,9 +1206,10 @@ $1",
'changepassword' => 'טוישן פ×ַסוו×רט',
'prefs-skin' => 'סקין',
'skin-preview' => 'פ×רויסדיגע ווייזונג',
-'prefs-math' => 'פ×ָרמ×ַל',
'datedefault' => '× ×™×©×˜× ×§×™×™×Ÿ פרעפערענץ',
+'prefs-beta' => 'בעט×Ö· ×ייגנש×ַפֿטן',
'prefs-datetime' => 'ד××˜×•× ×ון צייט',
+'prefs-labs' => 'ל×ַב×ר×ַט×ריע מעגלעכקייטן',
'prefs-personal' => 'ב×ַנוצער פר×ָפֿיל',
'prefs-rc' => 'לעצטע ענדערונגען',
'prefs-watchlist' => '×ויפפ×סונג ליסטע',
@@ -1196,8 +1231,6 @@ $1",
'columns' => 'עמודי×:',
'searchresultshead' => 'זוכן',
'resultsperpage' => 'צ×ל טרעפֿן ×ין × ×‘×œ×ַט:',
-'contextlines' => 'שורות פער רעזולט×ט',
-'contextchars' => 'ק×נטעקסט פער שורה',
'stub-threshold' => 'שוועל פֿ×ַר <a href="#" class="stub">שטומף לינק</a> פֿ×ָרמ×ַטירונג (בייטן):',
'stub-threshold-disabled' => '×ַנולירט',
'recentchangesdays' => 'צ×ל פון טעג צו ווייזן ×ין די לעצטע ענדערונגן:',
@@ -1207,7 +1240,7 @@ $1",
'savedprefs' => '×ייערע פרעפערענצן ××™×– ×פגעהיטן געוו×רן.',
'timezonelegend' => 'צײַט ×–×× ×¢:',
'localtime' => 'ל×ק×לע צייט:',
-'timezoneuseserverdefault' => 'ניצן סערווירער גרונט',
+'timezoneuseserverdefault' => 'ניצן סערווירער גרונט ($1)',
'timezoneuseoffset' => '×ַנדער (ספעציפֿירט ×ונטערשייד)',
'timezoneoffset' => '×ונטערשייד¹:',
'servertime' => 'ס×רווער צײַט:',
@@ -1254,8 +1287,9 @@ $1",
'prefs-help-gender' => '×פצי×× ×ַל: ב×ניצט בכדי ד×ס ווייכוו×ַרג ×–×ל ×ײַך ×ַדרעסירן מיטן געהעריגן מין פֿ×רע×. די ×ינפֿ×רמ×ַציע ווערט ידוע צו ×ַלעמען.',
'email' => '×¢-פ×סט',
'prefs-help-realname' => '* עכטער × ×מען (×פצי×× ×ל): ×ויב וועט ×יר ×ויסוועלן צוצישטעלן ד×ס, וועט גענוצט ווערן צו געבן ×טריבי×ציע צו ×ייער ×רבייט.',
-'prefs-help-email' => '×¢-פ×סט ×דרעס ××™×– ברירהדיק, ×בער עס דערמעגליכט ××– מען קען ×ייך שיקן × × ×™×™ פ×סוו×רט ט×מער ×יר פֿ×רגעסט ד×ס ×לטע.
-×יר קענט ×ויך ל×זן ×נדערע צו ק×נט×קטן ×ייך דורך ×ייער ב×ניצער ×דער ב×ניצער רעדן בל×ט ×ן ×רויסגעבן ×ייער ×ידענטיטעט.',
+'prefs-help-email' => '×¢-פ×סט ×ַדרעס ××™×– ברירהדיק, ×בער עס דערמעגליכט ××– מען קען ×ייך שיקן × × ×™×™ פ×סוו×רט ט×מער ×יר פֿ×רגעסט ד×ָס ×ַלטע.',
+'prefs-help-email-others' => '×יר קענט ×ויך ×ויסקלייבן צו ל×זן ×נדערע פֿ×רבינדן מיט ×ייך דורך ע־פ×סט דורך × ×œ×™× ×§ ×ויף ×ייער ב×ניצער ×דער שמועס בל×ט.
+מען וועט נישט ×נטפלעקן ×ייער ע־פ×סט ×דרעס ווען ×נדערע פֿ×רבינדן זיך מיט ×ייך.',
'prefs-help-email-required' => 'בליצפ×סט ×דרעס ב×ד×רפט.',
'prefs-info' => 'גרונטלעכע ×ינפֿ×רמ×ַציע',
'prefs-i18n' => '×ינטערנ×ַצי×× ×ַליז×ַציע',
@@ -1374,7 +1408,6 @@ $1",
'right-userrights' => 'רעד×ַקטירן ×לע ב×ַניצער רעכטן',
'right-userrights-interwiki' => 'רעד×ַקטירן ב×ַניצער רעכטן פֿון ב×ַניצער ×ויף ×נדערע וויקיס',
'right-siteadmin' => 'פ×רשליס ×ון שליס-×ויף די ד×טעב××–×¢',
-'right-reset-passwords' => 'צוריקשטעלן ×ַנדערע ב×ַניצערס פ×ַסווערטער',
'right-sendemail' => 'שיקן ×¢-פ×סט צו ×נדערע ב×ניצער',
# User rights log
@@ -1514,8 +1547,13 @@ $1",
'emptyfile' => 'די טעקע וו×ס ×יר ×”×ט ×רויפֿלגעל×ָדן ××™×– ליידיג.
עס קען זיין ××– די סיבה ××™×– פשוט × ×˜×™×™×¤×.
ביטע קוקט ×יבער צי ×יר ווילט ×רויפֿל×דן די ד×זיקע טעקע.',
+'windows-nonascii-filename' => 'די וויקי שטיצט נישט טעקע־נעמען מיט ספעציעלע צייכענען.',
'fileexists' => "× ×˜×¢×§×¢ מיט ×“×¢× × ×ָמען עקזיסטירט שוין, ביטע זײַט בודק '''<tt>[[:$1]]</tt>''' ווען ×יר זענט נישט זיכער ×Ö·×– ×יר ווילט ×–×™ ענדערן.
[[$1|thumb]]",
+'fileexists-extension' => "× ×˜×¢×§×¢ מיט ×ן ענלעכן × ×מען עקזיסטירט שוין: [[$2|thumb]]
+* × ×מען פון דער טעקע וו×ס ווערט ×רויפגעל×ָדן: '''<tt>[[:$1]]</tt>'''
+* × ×מען פון דער פֿ×ר×נענער טעקע: '''<tt>[[:$2]]</tt>'''
+זײַט ×זוי גוט ×ון קלויבט ×ן ×נדער × ×מען.",
'fileexists-forbidden' => '× ×˜×¢×§×¢ מיט ×“×¢× × ×ָמען עקזיסטירט שוין, ×ון מען קען ×–×™ נישט ×ַריבערשרײַבן.
×ויב ×יר ווילט ד×ך ×ַרויפֿל×ָדן ×ײַער טעקע, ביטע גיין צוריק ×ון ניצן ×ַן ×ַנדער × ×ָמען.
[[File:$1|thumb|center|$1]]',
@@ -1558,8 +1596,13 @@ $1",
'upload-unknown-size' => '×ומוויסנדע גרייס',
'upload-http-error' => '× HTTP גרײַז ×”×ט פ×ַסירט: $1',
+# Special:UploadStash
+'uploadstash' => '×ַרויפֿל×ָד רעזערוו',
+'uploadstash-refresh' => 'דערפֿרישן די רשימה פון טעקעס',
+
# img_auth script messages
'img-auth-accessdenied' => 'צוטריט ×ָפגעז×ָגט',
+'img-auth-badtitle' => 'קען נישט ש×פֿן × ×’×™×œ×˜×™×§×Ÿ טיטל פֿון "$1"',
'img-auth-nologinnWL' => '×יר זענט נישט ×רײַנל×גירט ×ון "$1" ××™×– נישט ×ין דער ווײַסער ליסטע.',
'img-auth-nofile' => 'טעקע "$1" עקזיסטירט נישט.',
'img-auth-isdir' => '×יר פֿ×רזיכט צוצוטרעטן ×ן ×רכיוו "$1".
@@ -1620,7 +1663,7 @@ $1",
ס'××™×– פֿ×ַר×ַן[[Special:WhatLinksHere/$2|פֿולע רשימה]].",
'nolinkstoimage' => '× ×™×©×˜× ×§×™×™×Ÿ בלעטער וו×ס ניצן ד×ס ד××–×™×’×¢ בילד.',
'morelinkstoimage' => 'ב×ַקוקן [[Special:WhatLinksHere/$1|מער לינקען]] צו דער טעקע.',
-'redirectstofile' => 'די פֿ×לגנדע {{PLURAL:$1|טעקע פֿירט ×ריבער|$1 טעקעס פֿירן ×ריבער}} צו דער ד×זיגער טעקע:',
+'linkstoimage-redirect' => '$1 (טעקע ווײַטערפֿירונג) $2',
'duplicatesoffile' => 'די פֿ×לגנדע {{PLURAL:$1|טעקע דופליקירט|$1 טעקעס דופליקירן}} די ד××–×™×’×¢ טעקע ([[Special:FileDuplicateSearch/$2|× ×ך פרטי×]]):',
'sharedupload' => 'די טעקע ××™×– פֿון $1 ×ון מען מעג ×–×™ ניצן ×ין ×נדערע פר×יעקטן.',
'sharedupload-desc-there' => 'די טעקע ××™×– פֿון $1 ×ון מען מעג ×–×™ ניצן ×ין ×נדערע פר×יעקטן.
@@ -1705,16 +1748,17 @@ $1",
'statistics-users-active-desc' => 'ב×ניצערס וו×ס ×”×בן דורכגעפירט × ×¤×¢×•×œ×” ×ין די לעצטע {{PLURAL:$1|ט××’|$1 טעג}}',
'statistics-mostpopular' => 'מערסטע געזען בלעטער',
-'disambiguations' => 'ב×דייטן בלעטער',
+'disambiguations' => 'בלעטער וו×ס פֿ×רבינדן מיט ב×דייטן בלעטער',
'disambiguationspage' => 'Template:ב×דייטן',
'disambiguations-text' => "די קומענדיגע בלעטער פ×רבינדען צו × '''ב×דייטן בל×ט'''. ×–×™×™ ברויכן ענדערשט פֿ×רבינדן צו דער רעלעוו×נטער טעמע בל×ט.<br />× ×‘×œ×ט ווערט פ×ררעכענט ×לס × ×‘×œ×ט ווערט גערעכנט פ×ר × ×‘×דײַטן בל×ט ×ויב ער ב×ניצט זיך מיט × ×ž×•×¡×˜×¢×¨ וו×ס ××™×– פ×רבינדען פון [[MediaWiki:Disambiguationspage]].",
-'doubleredirects' => 'געט×פלטע ווײַטערפֿירונגען',
-'doubleredirectstext' => 'דער בל×ט רעכנט ×ויס בלעטער וו×ס פירן ווייטער צו ×נדערע ווייטערפירן בלעטער.
+'doubleredirects' => 'געט×פלטע ווײַטערפֿירונגען',
+'doubleredirectstext' => 'דער בל×ט רעכנט ×ויס בלעטער וו×ס פירן ווייטער צו ×נדערע ווייטערפירן בלעטער.
יעדע שורה ×נטה×לט × ×œ×™× ×§ ×¦×•× ×¢×¨×©×˜×Ÿ ×ון צווייטן ווייטערפירונג, ווי ×ויך די ציל פון דער צווייטער ווייטערפירונג, וו×ס רוב מ×ל געפינט זיך די ריכטיגע ציל וו×ו די ערשטע ווייטערפירונג ×–×ל ווייזן.
<del>×ויסגעשטר××›×¢× ×¢</del> טעמעס זענען שוין געלייזט.',
-'double-redirect-fixed-move' => '[[$1]] ××™×– געוו×רן ב×וועגט, ×ון ××™×– יעצט × ×•×•×™×™×˜×¢×¨×¤Ö¿×™×¨×•× ×’ צו [[$2]]',
-'double-redirect-fixer' => 'מתקן ווײַטערפֿירונגען',
+'double-redirect-fixed-move' => '[[$1]] ××™×– געוו×רן ב×וועגט, ×ון ××™×– יעצט × ×•×•×™×™×˜×¢×¨×¤Ö¿×™×¨×•× ×’ צו [[$2]]',
+'double-redirect-fixed-maintenance' => 'פֿ×ַררעכטן געט×פלטע ווײַטערפֿירונג פֿון [[$1]] צו [[$2]].',
+'double-redirect-fixer' => 'מתקן ווײַטערפֿירונגען',
'brokenredirects' => 'צעבר×ָכענע ווײַטערפֿירונגען',
'brokenredirectstext' => 'די פֿ×לגנדע ווײַטערפֿירונגען פֿ×ַרבינדן צו בלעטער וו×ס עקזיסטירן × ×ך נישט:',
@@ -1791,6 +1835,7 @@ $1",
'pager-newer-n' => '{{PLURAL:$1|נײַערע|$1 נײַערע}}',
'pager-older-n' => '{{PLURAL:$1|עלטערע|$1 עלטערע}}',
'suppress' => '×ויפֿזען',
+'querypage-disabled' => 'דער ב×ַזונדער־בל×ַט ××™×– ×ומ×ַקטיווירט צוליב ×ויספֿירונג סיבות.',
# Book sources
'booksources' => 'דרויסנדיגע ליטער×ַטור ISBN',
@@ -1841,7 +1886,7 @@ $1",
'sp-deletedcontributions-contribs' => 'בײַשטײַערונגען',
# Special:LinkSearch
-'linksearch' => 'דרויסנדע לינקען',
+'linksearch' => 'דרויסנדע לינקען זוך',
'linksearch-pat' => 'זוך מוסטער:',
'linksearch-ns' => '× ×מענטייל:',
'linksearch-ok' => 'זוכן',
@@ -1904,6 +1949,10 @@ $1",
'noemailtext' => 'דער ב×ַניצער ×”×ט נישט ב×שטימט קיין גילטיקן ×¢-פ×סט ×דרעס.',
'nowikiemailtitle' => 'קיין ×¢-פ×סט נישט דערלויבט',
'nowikiemailtext' => 'דער ב×ַניצער ×”×ט געקליבן נישט ב×ַקומען ע־פ×סט פֿון ×ַנדערע ב×ַניצער.',
+'emailnotarget' => 'נישט־פֿ×ר×ן ×דער ×ומגילטיקער ב×ַניצער־נ×ָמען פ×ר ב×ַקומער.',
+'emailtarget' => '×ַרײַנגעבן ב×ַניצער־נ×ָמען פון ב×ַקומער',
+'emailusername' => 'ב×ַניצער × ×ָמען:',
+'emailusernamesubmit' => '×ײַנגעבן',
'email-legend' => 'שיקן ×¢-פ×סט צו ×ַן ×ַנדער {{SITENAME}} ב×ַניצער',
'emailfrom' => 'פֿון:',
'emailto' => 'צו:',
@@ -1928,12 +1977,12 @@ $1",
'watchlistanontext' => 'ביטע $1 כדי צו זען ×דער ענדערן בלעטער ×ין ×ייער ×ַכטגעבן ליסטע.',
'watchnologin' => '×יר זענט נישט ×ַרײַנל×גירט',
'watchnologintext' => '×יר מוזט זיין ×ריינגעסיינט [[Special:UserLogin|×ריינגל×גירט]] צו מ×דיפֿיצירן ×ייער ×ויפפַּ×סן ליסטע.',
-'addedwatch' => 'דער בל×ַט ××™×– צוגעלייגט געוו×ָרן צו דער ×ויפֿפ×ַסונג ליסטע',
+'addwatch' => 'צולייגן צו דער ×ויפֿפ×ַסונג ליסטע',
'addedwatchtext' => "דער בל×ט \"[[:\$1]]\" ××™×– צוגעלײגט געוו×ָרן צו ×ײַער [[Special:Watchlist|×ויפֿפ×ַסונג ליסטע]].
ענדערונגען צו ×“×¢× ×‘×œ×ַט ×ון צו זײַן פ××¨×‘×™× ×“×¢× ×¢× ×¨×¢×“×Ÿ בל×ַט וועלן זײַן ×ויסגערעכענט ד×.
×ון דער בל×ט וועט זיין '''דיק''' ×ין דער [[Special:RecentChanges|ליסטע פון לעצטע ענדערונגען]] צו גרינגער מ×כן ד×ס ×ויפֿפ×ַסן.",
-'removedwatch' => '×ַר×ָפּגענומען געוו×רן פון דער ×ויפֿפ×ַסונג ליסטע',
+'removewatch' => '×ַר×ָפּנעמען פון דער ×ויפֿפ×ַסונג ליסטע',
'removedwatchtext' => 'דער בל×ַט "[[:$1]]" ××™×– ×ָפּגער×ַמט געוו×ָרן פון [[Special:Watchlist|×ייער ×ױפֿפּ×ַסונג ליסטע]].',
'watch' => '×ױפֿפּ×ַסן',
'watchthispage' => 'טוט ×ױפֿפּ×ַסן ×“×¢× ×‘×œ×ט',
@@ -1954,8 +2003,9 @@ $1",
'watchlist-options' => '×ויפֿפ×ַסן ליסטע ברירות',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => '×ויפפ×סענדונג…',
-'unwatching' => 'נעמט ×ר×פ פון ×ויפפ×סונג ליסטע…',
+'watching' => '×ויפפ×סענדונג…',
+'unwatching' => 'נעמט ×ר×פ פון ×ויפפ×סונג ליסטע…',
+'watcherrortext' => '× ×’×¨×²Ö·×– ×”×ט פ×סירט ×‘×™×™× ×¢× ×“×¢×¨×Ÿ ×ײַערע ×ויפֿפ×סן ליסטע ×ײַנשטעלונגען פֿ×ר "$1".',
'enotif_mailer' => '× ×טיפ×ק×ציע שיקער {{SITENAME}}',
'enotif_reset' => 'ב×ַצייכן ×לע בלעטער שוין געזען',
@@ -1981,17 +2031,18 @@ $NEWPAGE
עס וועט מער נישט זיין קיין מעלדונגען ×ין פ×ל פון × ×ך ענדערונגען × ×ר ×ויב ×יר וועט ב×זוכן ×“×¢× ×‘×œ×ט.
×יר קענט ×ויך צוריקשטעלן די מעלדונגען פ×נען פון ×לע ×ייערע ×ויפֿגעפ×סטע בלעטער ×ין ×ייער ×ויפפ×סונג ליסטע.
- ×ייער פֿריינטליכע {{SITENAME}} מעלדונגען סיסטע×
+
+×ייער פֿריינטליכע {{SITENAME}} מעלדונגען סיסטע×
--
צו ענדערן ×ייער ×ויפֿפ×סונג ליסטע, ב×זוכט
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
כדי ×ויסמעקן ×“×¢× ×‘×œ×ט פון ×ײַער ×ויפֿפ×ַסונג ליסטע, ב×ַזוכט
$UNWATCHURL
פ×ר מער הילף:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'מעק ×ויס בל×ט',
@@ -2009,7 +2060,7 @@ $UNWATCHURL
ביטע ב×שטעטיגט ××– ד×ס ××™×– ט×קע ×ייער כוונה, ××– ×יר פ×רשטייט פולערהייט די ק×נסקווענסן פון ×“×¢× ×ַקט, ×ון ××– ד×ס ××™×– ×ין ×יינקל×× ×’ מיט [[{{MediaWiki:Policy-url}}|דער פ×ליסי]].',
'actioncomplete' => 'די ×ַקציע ×ָט זיך דורכגעפֿירט',
'actionfailed' => '×קציע דורכגעפ×לן',
-'deletedtext' => '"<nowiki>$1</nowiki>" ×ויסגעמעקט.
+'deletedtext' => '"$1" ×ויסגעמעקט.
זעט $2 פֿ×ַר × ×¨×©×™×ž×” פֿון לעצטיגע ×ויסמעקונגען.',
'deletedarticle' => '×ויסגעמעקט "[[$1]]"',
'suppressedarticle' => 'ב×Ö·×”×ַלטן "[[$1]]"',
@@ -2063,7 +2114,7 @@ $UNWATCHURL
'protect_expiry_invalid' => '×ויסגיין צײַט ×ומגילטיג.',
'protect_expiry_old' => 'שוין דערנ×ך דער ×ויסגיין צײַט.',
'protect-unchain-permissions' => '×ויפֿשליסן × ×ך שיץ ×פציעס',
-'protect-text' => "×יר מעגט זען ×ון ענדערן ×“×¢× ×©×•×¥ × ×™×•×•× ×“× ×¤Ö¿×רן בל×ט '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "×יר מעגט זען ×ון ענדערן ×“×¢× ×©×•×¥ × ×™×•×•× ×“× ×¤Ö¿×רן בל×ט '''$1'''.",
'protect-locked-blocked' => "×יר קען נישט ענדערן ×“×¢× ×©×•×¥ × ×™×•×•× ×‘×¢×ª ווען ×יר זענט בל×קירט.
פֿ×לגנד זענען די לויפֿיגע שטעלונגען פֿ×רן בל×ט '''$1''':",
'protect-locked-access' => "×ייער ק×נטע ×”×ט נישט קיין ערלויבניש צו ענדערן בל×ט שיצונג ניוו×ען.
@@ -2117,9 +2168,8 @@ $UNWATCHURL
'undeletepagetext' => 'The following {{PLURAL:$1|דער פֿ×לגנדער בל×ַט ××™×– געוו×רן ×ויסגעמעקט ×בער קען|די פֿ×לגנדע $1  בלעט ער זענען געוו×רן ×ויסגעמעקט ×בער קענען}} × ×ך ווערן צוריקגעשטעלט פֿון ×ַרכיוו.
פֿון צײַט צו צײַט רייניגט מען ×ויס ×“×¢× ×ַרכיוו.',
'undelete-fieldset-title' => 'צוריקשטעלן רעוויזיעס',
-'undeleteextrahelp' => "צוריקצושטעלן ×“×¢× ×‘×œ×ט מיט זײַן ×’×נצע געשיכטע, דרוקט נישט ×ויף קיין ×יין ווערסיע, ×ון דרוקט '''צוריקשטעלן'''.
-צוריקצושטעלן × ×ר געוויסע ווערסיעס, קלויבט ×ויס ×ונטן די רעוויזיעס וו×ס ×יר ווילט, ×ון דרוקט ×ויף '''צוריקשטעלן'''.
-דרוקן ×ויף '''×יבערמ×כן''' וועט ×ומ×ויסקלויבן ×לע ווערסיעס ×ון ×ויסמעקן ×לעס ×ין ×“×¢× ×§×מענט×רן קעסטל.",
+'undeleteextrahelp' => "צוריקצושטעלן די ×’×נצע געשיכטע, ×¤×•× ×¢× ×‘×œ×ט, דרוקט נישט ×ויף קיין ×יין ווערסיע, ×ון דרוקט '''''{{int:undeletebtn}}'''''.
+צוריקצושטעלן × ×ר געוויסע ווערסיעס, קלויבט ×ויס די רעוויזיעס וו×ס ×יר ווילט, ×ון דרוקט ×ויף '''''{{int:undeletebtn}}'''''.",
'undeleterevisions' => '{{PLURAL:$1|×יין ווערסיע|$1 ווערסיעס}} ×ַרכיווירט',
'undeletehistory' => '×ויב ×יר שטעלט צוריק ×“×¢× ×‘×œ×ַט, וועלן ×ַלע רעוויזיעס ווערן צוריקגעשטעלט ×ין דער היסט×ריע.
×ויב מען ×”×ט ב×ַש×ַפֿן × ×‘×œ×ַט מיטן זעלבן × ×ָמען זײַטן ×ויסמעקן, וועלן די צוריקגעשטעלטע רעוויזיעס זיך ב×ַווײַזן ×ין דער פֿריערדיקער היסט×ריע.',
@@ -2156,9 +2206,10 @@ $1',
'undelete-show-file-submit' => '×™×',
# Namespace form on various pages
-'namespace' => '× ×מענטייל:',
-'invert' => 'ווײַז ×ַלע ×ויסער די',
-'blanknamespace' => '(הויפט)',
+'namespace' => '× ×מענטייל:',
+'invert' => 'ווײַז ×ַלע ×ויסער די',
+'namespace_association' => '×ָנגעבונדענער × ×ָמענטייל',
+'blanknamespace' => '(הויפט)',
# Contributions
'contributions' => "ב×ניצער'ס בײַשטײַערונגען",
@@ -2207,6 +2258,9 @@ $1',
'whatlinkshere-filters' => 'פֿילטערס',
# Block/unblock
+'autoblockid' => '×ויט×מ×טיש בל×ק #$1',
+'block' => 'בל×קירן ב×ַניצער',
+'unblock' => '×ויפֿבל×קירן ב×ניצער',
'blockip' => 'בל×קירן ב×ַניצער',
'blockip-title' => 'בל×קירן ב×ַניצער',
'blockip-legend' => 'בל×קירן ב×ַניצער',
@@ -2215,7 +2269,6 @@ $1',
××–×לכע בל×קירונגען מוזן דורכגעפירט ווערן בלויז צו פֿ×ַרמײַדן וו×ַנד×ַליז×, ×ון לויט די [[{{MediaWiki:Policy-url}}|פ×רשריפטן ×ון פ×ליסיס]].
ביטע שרײַבט ×רויס קל×ָר די ספעציפֿישע סיבה (למשל, ציטירן וועלכע בלעטער מ'×”×ט וו×ַנד×ַליזירט).",
-'ipaddress' => 'IP ×דרעס:',
'ipadressorusername' => 'IP ×דרעס ×דער ב×ַניצער × ×מען:',
'ipbexpiry' => '×ויסגיין:',
'ipbreason' => '×ורז×ַך:',
@@ -2228,7 +2281,6 @@ $1',
** סטר×שעט ×ון שטערט
** קרומב×ניצן מערערע ק×נטעס
** ב×ַניצער × ×ָמען פר×בלעמ×ַטיש',
-'ipbanononly' => 'בל×קירן × ×ר ×× ×נימע ב×ַניצערס',
'ipbcreateaccount' => 'פֿ×ַרמײַדן ש×ַפֿן ק×נטעס',
'ipbemailban' => 'פֿ×רמײַדן ב×ַניצער פון שיקן ע־פ×סט',
'ipbenableautoblock' => '×ויט×מ×ַטיש בל×קירן ×“×¢× ×œ×¢×¦×˜×Ÿ IP ×ַדרעס פֿ
@@ -2249,11 +2301,12 @@ $1',
'ipbotherreason' => '×נדער/× ×ך × ×¡×™×‘×”:',
'ipbhidename' => 'ב×Ö·×”×ַלטן ב×ַניצער × ×ָמען פֿון רעד×ַקטירונגען ×ון רשימות',
'ipbwatchuser' => '×ויפֿפ×ַסן ×“×¢× ×‘×ַניצערס ב×ַניצער ×ון רעדן בלעטער',
-'ipballowusertalk' => 'ל×ָזן ×“×¢× ×‘×ַניצער ענדערן ××™×™×’×¢× ×¢× ×¨×¢×“×Ÿ בל×ַט ווען בל×קירט',
+'ipb-confirm' => 'ב×ַשטעטיקן בל×ָק',
'badipaddress' => 'נישט קיין גוטער IP ×ַדרעס.',
'blockipsuccesssub' => 'בל×ק ××™×– דורכגפירט מיט דערפֿ×לג',
'blockipsuccesstext' => 'ב×ַניצער [[Special:Contributions/$1|$1]] <br />××™×– פֿ×ַרשפ×ַרט.
זעט די [[Special:IPBlockList|ליסטע פון בל×קירטע ב×ַניצער]] כדי צו זען די בל×קירונגען.',
+'ipb-blockingself' => '×יר ×”×ַלט בײַ בל×קירן זיך ×ַליין! ×יר ווילט ד×ָס ט×ַקע טון?',
'ipb-edit-dropdown' => 'רעד×קטיר בל×קירונג סיבות',
'ipb-unblock-addr' => '×ויפֿבל×קירן $1',
'ipb-unblock' => '×ויפֿבל×קירן × ×‘×ַניצער × ×מען ×דער IP ×דרעס',
@@ -2263,15 +2316,21 @@ $1',
'ipusubmit' => '×וועקנעמען ×“×¢× ×‘×œ×ק',
'unblocked' => '[[User:$1|$1]] ××™×– געוו×רן ב×ַפֿרייט פון זײַן בל×ק',
'unblocked-id' => 'בל×ק $1 ××™×– געוו×רן ×ַר×ָפגענומען.',
+'blocklist' => 'בל×קירטע ב×ַניצער',
'ipblocklist' => 'בל×קירטע ב×ַניצער',
'ipblocklist-legend' => 'געפֿינען × ×‘×œ×קירטן ב×ניצער',
-'ipblocklist-username' => 'ב×ניצער × ×מען ×דער IP ×דרעס:',
-'ipblocklist-sh-userblocks' => '$1 ק×נטע בל×קן',
-'ipblocklist-sh-tempblocks' => '$1 צײַטווײַליקע בל×קן',
+'blocklist-userblocks' => 'ב××”×לטן ק×נטע בל×קן',
+'blocklist-tempblocks' => 'ב××”×לטן צײַטווײַליקע בל×קן',
+'blocklist-addressblocks' => 'ב××”×לטן ענצעלע IP בל×קן',
+'blocklist-timestamp' => 'צײַטשטעמפל',
+'blocklist-target' => 'ציל',
+'blocklist-expiry' => 'גייט ×ויס:',
+'blocklist-by' => 'בל×קירן סיס×פ',
+'blocklist-params' => 'בל×קירן פ×ַר×ַמעטערס',
+'blocklist-reason' => '×ורז×ַך',
'ipblocklist-submit' => 'זוכן',
'ipblocklist-localblock' => 'ל×ק×ַלע בל×קירונג',
'ipblocklist-otherblocks' => '{{PLURAL:$1|×ַנדער בל×קירונג|×ַנדערע בל×קירונגען}}',
-'blocklistline' => '$1 $2 ×”×ט פֿ×ַרשפ×ַרט $3 ($4)',
'infiniteblock' => '×ויף ×ייביק',
'expiringblock' => 'גייט ×ויס ××•× $1 $2',
'anononlyblock' => 'בלויז ×Ö·× ×נימע',
@@ -2294,7 +2353,7 @@ $1',
'blocklogentry' => 'בל×קירט "[[$1]]" ×ויף ×Ö· תקופה פון $2 $3',
'reblock-logentry' => 'גענדערט די בל×קירונג דעפיניציעס פון [[$1]] מיטן צייט ×פלויף פון $2 $3',
'blocklogtext' => 'ד×ס ××™×– × ×œ××’ בוך פון ×לע בל×קירונגען ×ון ב×פרייונגען פֿון ב×ניצערס. ××™×™ פי ×דרעסן וו×ס זענען בל×קירט ×ויט×מ×טיש ווערן נישט ×ויסגערעכענט ד×.
-זעט די ×יצטיגע [[Special:IPBlockList|ליסטע פון בל×קירטע ב×ניצערס]].',
+זעט די ×יצטיגע [[Special:BlockList|ליסטע פון בל×קירטע ב×ניצערס]].',
'unblocklogentry' => '×ומבל×קירט $1',
'block-log-flags-anononly' => 'בלויז ×Ö·× ×נימע ב×ַניצער',
'block-log-flags-nocreate' => 'ק×ָנטע ש×ַפֿן ××™×– פֿ×ַרשפּ×ַרט',
@@ -2308,9 +2367,9 @@ $1',
'ipb_expiry_temp' => 'בל×קירן מיט פ×ַרב×ָרגן ב×ַניצער × ×ָמען מוז זייַן ×ויף ×ייביק.',
'ipb_hide_invalid' => 'נישט געקענט פֿ×ַרשטיקן די ק×נטע; ×–×™ ×”×ט מעגלעך צופיל רעד×ַקטירונגען.',
'ipb_already_blocked' => '"$1" ××™×– שוין בל×קירט',
-'ipb-needreblock' => '== שוין בל×קירט ==
-$1 ××™×– שוין בל×קירט. צי ווילט ×יר טוישן די ב×ַצייכנונגען?',
+'ipb-needreblock' => '$1 ××™×– שוין בל×קירט. צי ווילט ×יר טוישן די ב×ַצייכנונגען?',
'ipb-otherblocks-header' => '{{PLURAL:$1|×נדער בל×קירונג|×נדערע בל×קירונגען}}',
+'unblock-hideuser' => '×יר קענט נישט ×ומבל×קירן ×“×¢× ×‘×ניצער, ווײַל זײַן ב×ַניצער × ×ָמען ××™×– פֿ×ַרב×רגן.',
'ipb_cant_unblock' => "גרײַז: בל×ק ID $1 נישט געפֿונען.
ס'מעגליך שוין געוו×רן ב×ַפֿרייט.",
'ipb_blocked_as_range' => "טעות: דער IP ×ַדרעס $1 ××™×– נישט בל×קירט גר×ָד ×ון מען קען ××™× × ×™×©×˜ ×ויפֿבל×קירן.
@@ -2335,6 +2394,7 @@ $1 ××™×– שוין בל×קירט. צי ווילט ×יר טוישן די ב×Ö·
'lockdbsuccesssub' => 'ד×ַטנב×Ö·×–×¢ פֿ×ַרשפ×ַרט מיט הצלחה',
'unlockdbsuccesstext' => 'די ד×ַטנב×Ö·×–×¢ ××™×– געוו×רן ×ויפֿגעשל×סן',
'databasenotlocked' => 'די ד×ַטנב×Ö·×–×¢ ××™×– נישט פֿ×ַרשל×סן.',
+'lockedbyandtime' => '(דורך $1 ××•× $2 בײַ $3)',
# Move page
'move-page' => 'ב×ַוועגן $1',
@@ -2452,7 +2512,7 @@ $1 ××™×– שוין בל×קירט. צי ווילט ×יר טוישן די ב×Ö·
סיס×פן קענען ענדערן די מעלדונגען דורך דרוקן ×ויפן × ×מען פון דער מעלדונג.
-ביטע ב×זוכט [http://www.mediawiki.org/wiki/Localisation מעדיעוויקי ל×ק×ליז×ציע] ×ון [http://translatewiki.net בעט×וויקי] ×ויב ×יר ווילט ביישטייערן צו דער גענערישער מעדיעוויקי ל×ק×ליז×ציע.',
+ביטע ב×זוכט [//www.mediawiki.org/wiki/Localisation מעדיעוויקי ל×ק×ליז×ציע] ×ון [//translatewiki.net בעט×וויקי] ×ויב ×יר ווילט ביישטייערן צו דער גענערישער מעדיעוויקי ל×ק×ליז×ציע.',
'allmessagesnotsupportedDB' => 'מען קען זיך נישט ב×ניצן מיט ×“×¢× ×‘×œ×ט וויב×לד די $wgUseDatabseMessages ××™×– געוו×רן בטל.',
'allmessages-filter-legend' => 'פילטער',
'allmessages-filter' => 'פֿילטערן לויטן סט×טוס פון מעלדונג:',
@@ -2619,15 +2679,17 @@ $1 ××™×– שוין בל×קירט. צי ווילט ×יר טוישן די ב×Ö·
'spam_reverting' => 'צוריקגעשטעלט צו דער לעצטער ווערסיע ×ן לינקען צו $1',
# Info page
-'infosubtitle' => '×ינפ×רמ×ציע וועגן בל×ט',
-'numedits' => 'צ×ל פון רעד×קציעס (בל×ט): $1',
-'numtalkedits' => 'צ×ל רעד×ַקטירונגען (שמועס בל×ַט): $1',
-
-# Math errors
-'math_unknown_error' => '×ומב×ַק×ַנטער פֿעלער',
-'math_unknown_function' => '×ומב×ַק×ַנטע פֿונקציע',
-'math_lexing_error' => 'לעקסינג טעות',
-'math_syntax_error' => 'סינט×קס גרייז',
+'pageinfo-title' => '×ינפֿ×ָרמ×ַציע פֿ×ַר "$1"',
+'pageinfo-header-edits' => 'רעד×ַקטירונגען',
+'pageinfo-header-watchlist' => '×ויפֿפ×ַסונג ליסטע',
+'pageinfo-header-views' => 'קוקן',
+'pageinfo-subjectpage' => 'בל×ַט',
+'pageinfo-talkpage' => 'רעדן בל×ַט',
+'pageinfo-watchers' => 'צ×ָל ×ויפֿפ×ַסער',
+'pageinfo-edits' => 'צ×ָל ענדערונגען',
+'pageinfo-authors' => 'צ×ָל ב×ַזונדערע שרײַבער',
+'pageinfo-views' => 'צ×ַל קוקן',
+'pageinfo-viewsperedit' => 'צ×ל קוקן צו × ×¨×¢×“×ַקטירונג',
# Patrolling
'markaspatrolleddiff' => 'ב×צייכנען ×לס פ×טר×לירט',
@@ -2670,7 +2732,7 @@ $1',
'file-nohires' => '<small>× ×™×©×˜× ×ž×™×˜ × ×”×¢×›×¢×¨×¢ רעז×לוציע.</small>',
'svg-long-desc' => 'טעקע SVG, × ×מינעל: $1 × $2 פיקסעלן, טעקע גרייס: $3',
'show-big-image' => 'בילד מיט דער גרעסטער רעז×לוציע',
-'show-big-image-thumb' => '<small>גרייס פון דער ווײַזונג: $1 × $2 פיקסעלן</small>',
+'show-big-image-size' => '$1 × $2 פיקצעלן',
'file-info-gif-looped' => '×ין × ×¤×¢×˜×œ×™×¢',
'file-info-gif-frames' => '$1 {{PLURAL:$1| ר×Ö·× | ר×ָמען}}',
'file-info-png-looped' => '×ין × ×¤×¢×˜×œ×™×¢',
@@ -2705,14 +2767,21 @@ $1',
ווען די טעקע ××™×– געענדערט געוו×רן פון ×יר ×רגינעלן מצב, עטלעכע ×¤×¨×˜×™× ×–×¢× ×¢×Ÿ מעגלעך נישט פ×סיג צו דער היינטיקער טעקע.',
'metadata-expand' => 'ווײַזן פֿ×רברייטערטע פרטי×',
'metadata-collapse' => 'ב××”×לטן פֿ×רברייטערטע פרטי×',
-'metadata-fields' => 'די פֿ×לגנדע EXIF מעט×ד×טע ווערן געוויזן ×פילו ווען די מעט×ד×טע ט×בעלע ××™×– ×ײַנגעפֿ×לן:
+'metadata-fields' => 'בילד מעט×ַד×ַטן פֿעלדער ×ויסגערעכנט ×ונטן וועט מען ×רײַנשליסן ×ין דער בילד בל×ַט ×ויסשטעלונג ווען די מעט×ַד×ַטן ט×ַבעלע ××™×– פֿ×ַרקלענערט.
+×נדערע וועלן × ×רמ×ַלווייזע ווערן ב×Ö·×”×ַלטן.
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'ברייט',
@@ -2734,7 +2803,6 @@ $1',
'exif-compressedbitsperpixel' => 'בילד צוז×מקוועטשן מ×וד',
'exif-pixelydimension' => 'בילד ברייט',
'exif-pixelxdimension' => 'בילד הייך',
-'exif-makernote' => 'פֿ×ַבריצירער הערות',
'exif-usercomment' => 'ב×נוצער ק×מענטורן',
'exif-relatedsoundfile' => 'פֿ×ַרבונדענע ×וידי×Ö¸ טעקע',
'exif-datetimeoriginal' => 'ד××˜×•× ×ון צייט פון ד×ַטן ב×ש×פונג',
@@ -2764,7 +2832,6 @@ $1',
'exif-exposureindex' => 'עקספ×וזשער ×ינדעקס',
'exif-filesource' => 'מקור פֿון דער טעקע',
'exif-scenetype' => 'סצענע טיפ',
-'exif-cfapattern' => 'פעטערן CFA',
'exif-customrendered' => 'ק××¡×˜×¢× ×‘×™×œ×“ פר×צעסירונג',
'exif-exposuremode' => 'ב×ַלײַכטן מצב',
'exif-digitalzoomratio' => 'דיזשיט×לער ×–×•× ×¨×שי×ו',
@@ -2792,6 +2859,17 @@ $1',
'exif-gpsdatestamp' => 'ד××˜×•× GPS',
'exif-gpsdifferential' => 'דיפר×נצי×לע ק×קרעקציע GPS',
'exif-objectname' => 'קורצער טיטל',
+'exif-source' => 'מקור',
+'exif-editstatus' => 'רעד×קצי×נעלער סט×טוס פון בילד',
+'exif-urgency' => 'דרינגלעכקייט',
+'exif-locationdest' => 'געוויזענע ל×ק×ציע',
+'exif-locationdestcode' => 'ק×ד פֿון געוויזענער ל×ק×ציע',
+'exif-writer' => 'שרײַבער',
+'exif-languagecode' => 'שפר×ַך',
+'exif-iimversion' => 'IIM ווערסיע',
+'exif-iimcategory' => 'ק×ַטעג×ָריע',
+'exif-datetimeexpires' => 'נישט צו ניצן × ×ָך',
+'exif-datetimereleased' => 'ב×ַפֿרייט ×ו×',
# EXIF attributes
'exif-compression-1' => '×ומ-צ×מגעקוועטשט',
@@ -2807,6 +2885,8 @@ $1',
'exif-planarconfiguration-1' => 'גר×בער פֿ×רמ×ט',
'exif-planarconfiguration-2' => 'פֿל×כער פֿ×רמ×ט',
+'exif-colorspace-65535' => 'נישט ק×ליברירט',
+
'exif-componentsconfiguration-0' => "ס'עקזיסטירט נישט.",
'exif-exposureprogram-0' => 'נישט דעפענירט',
@@ -2885,17 +2965,39 @@ $1',
'exif-gpsdirection-t' => 'ריכטיגע דירעקציע',
'exif-gpsdirection-m' => 'מ××’× ×טיק ריכטונג',
+'exif-isospeedratings-overflow' => 'גרעסער פֿון 65535',
+
+'exif-iimcategory-ace' => 'קונסט, קולטור ×ון פ×ַרווײַלונג',
+'exif-iimcategory-clj' => 'פ×ַרברעכן ×ון ×’×¢×–×¢×¥',
+'exif-iimcategory-dis' => 'ק×ַט×ַסטר×פֿעס ×ון ×ַקצידענטן',
+'exif-iimcategory-fin' => 'עק×× ×מיע ×ון געשעפֿט',
+'exif-iimcategory-edu' => 'בילדונג',
+'exif-iimcategory-evn' => 'סביבה',
+'exif-iimcategory-hth' => 'געזונט',
+'exif-iimcategory-hum' => 'מענטשלעכער ×ינטערעס',
+'exif-iimcategory-lab' => '×ַרבעט',
+'exif-iimcategory-lif' => 'לעבנסטיל ×ון פֿרייַע צייַט',
+'exif-iimcategory-pol' => 'פּ×ָליטיק',
+'exif-iimcategory-rel' => 'רעליגיע ×ון גלויבן',
+'exif-iimcategory-sci' => 'וויסנש×ַפֿט ×ון טעכנ×ָל×ָגיע',
+'exif-iimcategory-soi' => 'ס×צי×לע פֿר×געס',
+'exif-iimcategory-spo' => 'ספ×רט',
+'exif-iimcategory-war' => 'מלחמה, ק×ָנפליקט ×ון ×ומרו',
+'exif-iimcategory-wea' => 'וועטער',
+
+'exif-urgency-normal' => '× ×ָרמ×ַל ($1)',
+'exif-urgency-low' => 'נידעריק ($1)',
+'exif-urgency-high' => 'הויך ($1)',
+
# External editor support
'edit-externally' => 'רעד×ַקטירט די טעקע מיט × ×“×¨×•×™×¡× ×“×™×’×¢×¨ ×ַפליק×ַציע',
-'edit-externally-help' => 'זעט די [http://www.mediawiki.org/wiki/Manual:External_editors ×ויפֿשטעל ×נווייזונגען] פ×ר מער ×ינפ×רמ×ציע.',
+'edit-externally-help' => 'זעט די [//www.mediawiki.org/wiki/Manual:External_editors ×ויפֿשטעל ×נווייזונגען] פ×ר מער ×ינפ×רמ×ציע.',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => '×ַלע',
-'imagelistall' => '×ַלע',
-'watchlistall2' => '×ַלע',
-'namespacesall' => '×ַלע',
-'monthsall' => '×לע',
-'limitall' => '×ַלע',
+'watchlistall2' => '×ַלע',
+'namespacesall' => '×ַלע',
+'monthsall' => '×לע',
+'limitall' => '×ַלע',
# E-mail address confirmation
'confirmemail' => 'ב×ַשטעטיקט בליצפּ×ָסט ×ַדרעס',
@@ -3059,16 +3161,18 @@ $5
'filepath-submit' => 'גיין',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'זוכן דופליק×ַטע טעקעס',
-'fileduplicatesearch-legend' => 'זוכן × ×“×•×¤×œ×™×§×ַט',
-'fileduplicatesearch-filename' => 'טעקע:',
-'fileduplicatesearch-submit' => 'זוכן',
+'fileduplicatesearch' => 'זוכן דופליק×ַטע טעקעס',
+'fileduplicatesearch-legend' => 'זוכן × ×“×•×¤×œ×™×§×ַט',
+'fileduplicatesearch-filename' => 'טעקע:',
+'fileduplicatesearch-submit' => 'זוכן',
+'fileduplicatesearch-noresults' => 'קיין טעקע מיטן × ×מען "$1" נישט געטר×פֿן.',
# Special:SpecialPages
'specialpages' => 'ספּעציעלע זײַטן',
'specialpages-note' => '----
-* × ×רמ×ַלע ספעציעלע בלעטער.
-* <strong class="mw-specialpagerestricted">ב×ַגרענעצטע ספעציעלע בלעטער.</strong>',
+* × ×רמ×ַלע ב×ַזונדערע בלעטער.
+* <strong class="mw-specialpagerestricted">ב×ַגרענעצטע ב×ַזונדערע בלעטער.</strong>
+* <span class="mw-specialpagecached">ב×ַזונדערע בלעטער פֿון ×–×ַפ×ַס (קענען זײַן פֿ×ַרעלטערט).</span>',
'specialpages-group-maintenance' => '×ויפֿה×ַלטונג ב×ַריכטן',
'specialpages-group-other' => '×ַנדערע ספעציעלע בלעטער',
'specialpages-group-login' => '×רײַנל×גירן / ×ײַנשרײַבן',
diff --git a/languages/messages/MessagesYo.php b/languages/messages/MessagesYo.php
index f90178fc..fd00a3e0 100644
--- a/languages/messages/MessagesYo.php
+++ b/languages/messages/MessagesYo.php
@@ -37,18 +37,18 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'Userlogin' => array( 'ÃŒwá»léOníse' ),
- 'Userlogout' => array( 'ÃŒbá»Ì€sódeOníṣe' ),
- 'Preferences' => array( 'Àwá»nÃŒfẹÌràn' ),
- 'Recentchanges' => array( 'Àwá»nÀtúná¹£eTuntun' ),
- 'Newpages' => array( 'Àwá»nOjúewéTuntun' ),
'Allpages' => array( 'GbogboÀwá»nOjúewé' ),
- 'Specialpages' => array( 'Àwá»nOjúewéPàtàkì' ),
- 'Contributions' => array( 'Àwá»nÀfikún' ),
'Categories' => array( 'Àwá»nẸ̀ka' ),
+ 'Contributions' => array( 'Àwá»nÀfikún' ),
+ 'Mycontributions' => array( 'Àwá»nÀfikúnMi' ),
'Mypage' => array( 'OjúwéMi' ),
'Mytalk' => array( 'Ọ̀rá»Ì€Mi' ),
- 'Mycontributions' => array( 'Àwá»nÀfikúnMi' ),
+ 'Newpages' => array( 'Àwá»nOjúewéTuntun' ),
+ 'Preferences' => array( 'Àwá»nÃŒfẹÌràn' ),
+ 'Recentchanges' => array( 'Àwá»nÀtúná¹£eTuntun' ),
+ 'Specialpages' => array( 'Àwá»nOjúewéPàtàkì' ),
+ 'Userlogin' => array( 'ÃŒwá»léOníse' ),
+ 'Userlogout' => array( 'ÃŒbá»Ì€sódeOníṣe' ),
);
$messages = array(
@@ -83,8 +83,8 @@ $messages = array(
'tog-shownumberswatching' => "S'àfihàn iye àwá»n oníṣe tí wá»n tẹjú má»Ìá»",
'tog-oldsig' => 'ÃŒtá»wá»Ìbá»Ì€wé tówà:',
'tog-fancysig' => 'á¹¢e ìtá»wá»Ìbá»Ì€wé bíi ìká» wiki (láìní ìjápá»Ì€ fúnrararẹ̀)',
-'tog-externaleditor' => 'Lo aláàtúná¹£e á»Ì€tá»Ì€ látìbẹ̀rẹ̀ (fún àwá»n tó má»Ì€ nìkan, ìtò á»Ì€tá»Ì€á»Ì€tá»Ì€ pá»ndandan lórí ká»Ì€mpútà yín. [http://www.mediawiki.org/wiki/Manual:External_editors More information.])',
-'tog-externaldiff' => 'Lo awoìyàtò á»Ì€tá»Ì€ látìbẹ̀rẹ̀ (fún àwá»n tó má»Ì€ nìkan, ìtò á»Ì€tá»Ì€á»Ì€tá»Ì€ pá»ndandan lórí ká»Ì€mpútà yín. [http://www.mediawiki.org/wiki/Manual:External_editors ÃŒfá»Ì€rá»Ì€tónilétí mìhínhìn.])',
+'tog-externaleditor' => 'Lo aláàtúná¹£e á»Ì€tá»Ì€ látìbẹ̀rẹ̀ (fún àwá»n tó má»Ì€ nìkan, ìtò á»Ì€tá»Ì€á»Ì€tá»Ì€ pá»ndandan lórí ká»Ì€mpútà yín. [//www.mediawiki.org/wiki/Manual:External_editors More information.])',
+'tog-externaldiff' => 'Lo awoìyàtò á»Ì€tá»Ì€ látìbẹ̀rẹ̀ (fún àwá»n tó má»Ì€ nìkan, ìtò á»Ì€tá»Ì€á»Ì€tá»Ì€ pá»ndandan lórí ká»Ì€mpútà yín. [//www.mediawiki.org/wiki/Manual:External_editors ÃŒfá»Ì€rá»Ì€tónilétí mìhínhìn.])',
'tog-showjumplinks' => 'ÃŒgbàláyè "fò lá» sí" àwá»n ìjápá»Ì€ ìṣeégbà',
'tog-uselivepreview' => 'ÃŒlo àká»Ìká»Ìyẹ̀wò lẹÌṣẹ̀kẹṣẹ̀ (JavaScript pá»ndandan) (aládànhánwò)',
'tog-forceeditsummary' => 'Kìlá»Ì€ fún mi tí àkótán àtúná¹£e bá jáº¹Ì Ã²fo',
@@ -179,14 +179,7 @@ $messages = array(
'listingcontinuesabbrev' => 'tẹ̀síwájú',
'index-category' => 'Àwá»n ojúewé atá»Ìkasí',
'noindex-category' => 'Àwá»n ojúewé àìjáº¹Ì atá»Ìkasí',
-
-'mainpagetext' => "'''MediaWiki ti jáº¹Ì gbígbéká»Ìsínú láyá»rísírere.'''",
-'mainpagedocfooter' => "Ẹ ṣàbẹ̀wò sí [http://meta.wikimedia.org/wiki/Help:Contents User's Guide] fún ìfitólétí nípa líló atòlànà wíkì.
-
-== Láti bẹ̀rẹ̀ ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]",
+'broken-file-category' => 'Àwá»n ojúewé pẹ̀lú àwá»n ìjápá»Ì€ fáìlì gígé',
'about' => 'Nípa',
'article' => 'Ojúewé àkóónú',
@@ -239,10 +232,10 @@ $messages = array(
'history_short' => '
Ìtàn',
'updatedmarker' => 'jáº¹Ì títúná¹£e lẹÌyìn àbẹ̀wò mi',
-'info_short' => 'ÃŒfitá»Ìnilétí',
'printableversion' => 'Àtẹ̀jáde tóṣeétẹ̀síìwé',
'permalink' => 'ÃŒjápá»Ì€ tíkòníyípadà',
'print' => 'Ìtẹ̀síìwé',
+'view' => 'Ìwòran',
'edit' => 'Àtúnṣe',
'create' => 'Ṣèdá',
'editthispage' => "S'àtúnṣe ojúewé yi",
@@ -250,6 +243,7 @@ $messages = array(
'delete' => 'ÃŒparẹÌ',
'deletethispage' => 'Pa ojúewé yi rẹÌ',
'undelete_short' => 'ÃŒdápadà ìparáº¹Ì {{PLURAL:$1|àtúná¹£e kan|àwá»n àtúná¹£e $1}}',
+'viewdeleted_short' => 'ÃŒwòran {{PLURAL:$1|àtúná¹£e ajẹÌpíparáº¹Ì kan|àwá»n àtúná¹£e ajẹÌpíparáº¹Ì $1}}',
'protect' => 'Àbò',
'protect_change' => 'yípadà',
'protectthispage' => 'Dá àbò bo ojúewé yìí',
@@ -334,6 +328,8 @@ $1',
'toc' => 'Àwá»n àkóónú',
'showtoc' => 'fihàn',
'hidetoc' => 'bòmá»Ìlẹ̀',
+'collapsible-collapse' => 'Kálura',
+'collapsible-expand' => 'Fẹ̀hàn',
'thisisdeleted' => 'Ìfihàn tàbí ìmúpadà $1?',
'viewdeleted' => 'Ẹ wo $1?',
'restorelink' => '{{PLURAL:$1|àtúná¹£e ajẹÌpíparáº¹Ì kan|àwá»n àtúná¹£e ajẹÌpíparáº¹Ì $1}}',
@@ -345,6 +341,8 @@ $1',
'page-rss-feed' => '"$1" RSS Feed',
'page-atom-feed' => '"$1" Atom Feed',
'red-link-title' => '$1 (kò sí ojúewé yìí)',
+'sort-descending' => 'ÃŒtò lá»sisàlẹ̀',
+'sort-ascending' => 'ÃŒtò lá»sókè',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'Ojúewé',
@@ -432,11 +430,12 @@ Oníṣe mìíràn le ti paárẹÌ.',
'protectedinterface' => 'Ojúewé yìí n pèsè ìfojúkojú ìká»Ì€wé fún software, a ti dínà si láti má»Ì gba ìlòkulò ní ààyè.',
'editinginterface' => "'''ÃŒkìlá»Ì€:''' Ẹ ún ṣàtúná¹£e ojúewé tó jáº¹Ì lílò láti pèsè ìkỠìfojúkojú fún àtòlànà ká»Ì€mpútà.
Àwá»n ìyípadà sí ojúewé yìí yíò kan ìhànsí ìfojúkojú oníṣe fún àwá»n oníṣe míràn.
-Fún ìyédèpadà, ẹ já»Ì€wá»Ì ẹ lo [http://translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], iṣẹÌ-á»wá»Ì ìṣá»dìbílẹ̀ MediaWiki.",
+Fún ìyédèpadà, ẹ já»Ì€wá»Ì ẹ lo [//translatewiki.net/wiki/Main_Page?setlang=en translatewiki.net], iṣẹÌ-á»wá»Ì ìṣá»dìbílẹ̀ MediaWiki.",
'sqlhidden' => '(bíbòmá»Ìlẹ̀ ìbéèrè SQL)',
'cascadeprotected' => 'Ojúewé yìí ti jáº¹Ì dídáàbòbò sí àtùná¹£e, nítorípé ó wà nínú {{PLURAL:$1|ojúewé ìsàlẹ̀ yìí, tó jẹÌ|àwá»n ojúewé ìsàlẹ̀ wá»Ì€nyí, tí wá»Ìn jẹÌ}} dídáàbòbò pẹ̀lú ìyàn "ajámá»Ìra" ní títàn: $2',
'namespaceprotected' => "A kò gbàyín ní ààyè láti á¹£'àtúná¹£e àwá»n ojúewé tó wà nínú orúká»Ã yè '''$1'''.",
-'customcssjsprotected' => 'Ẹ kò ní ìyá»Ì€nda láti ṣàtúná¹£e ojúewé yìí nítorípé ó ní ìtòjá» oníṣe ẹlòmíràn.',
+'customcssprotected' => 'Ẹ kò ní ìyá»Ì€nda láti ṣàtúná¹£e ojúewé CSS yìí nítorípé ó ní àwá»n ìtòjá» oníṣe ẹlòmíràn.',
+'customjsprotected' => 'Ẹ kò ní ìyá»Ì€nda láti ṣàtúná¹£e ojúewé JavaScript yìí nítorípé ó ní àwá»n ìtòjá» oníṣe ẹlòmíràn.',
'ns-specialprotected' => 'Àtúná¹£e kò á¹£e é á¹£e sí àwá»n ojúewé pàtàkì.',
'titleprotected' => "[[User:$1|$1]] ti dínà sí dídá àká»lé yìí. Àlàyé rẹ̀ ni pí ''$2''.",
@@ -474,6 +473,7 @@ A ti á¹£'èdá àpamá»Ì yín.
'createaccount' => 'Ẹ fi orúkỠsílẹ̀',
'gotaccount' => "Ṣé ẹ ti ní àpamá»Ì tẹÌlẹ̀? '''$1'''.",
'gotaccountlink' => "Ẹ w'á»lé",
+'userlogin-resetlink' => 'À bí ẹ gbàgbé ìwá»lé yín?',
'createaccountmail' => 'pẹ̀lú e-mail',
'createaccountreason' => 'Ìdíẹ̀:',
'badretype' => 'Àwá»n á»Ì€rá»Ì€Ã¬pamá»Ì tí ẹ ká» kò já» ra wá»n.',
@@ -488,13 +488,15 @@ A ti á¹£'èdá àpamá»Ì yín.
'nocookieslogin' => '{{SITENAME}} ún lo cookies láti gba àwá»n oníṣe wá»lé.
Ẹ ti dínà sí cookies.
Ẹjá»Ì€wá»Ì ẹ fún cookies láàyè kí ẹ tún tó gbìyànjú láti wá»lé.',
+'nocookiesfornew' => 'Àpamá»Ì oníṣe kò jáº¹Ì dídá torípé a kò le ṣèmúdájú ibi tó ti wá.
+Ẹ ríidájú pé ẹ gba cookies láàyè, ẹ túnraṣe ojúewé yìí kí ẹ tó tún gbìyànjú.',
'noname' => 'Ẹ kò tá»Ìkasí orúká» oníṣe tó ní ìbámu.',
'loginsuccesstitle' => 'ÃŒwá»lé ti yá»rí sí rere',
'loginsuccess' => "'''Ẹ ti wá»lé sínú {{SITENAME}} gẹÌgáº¹Ì bi \"\$1\".'''",
'nosuchuser' => 'Kò sí oníṣe kankan pẹ̀lú orúkỠ"$1".
Àwá»n lẹÌtà àwá»n orúká» oníṣe gbá»Ìdá»Ì€ jáº¹Ì irúkanna.
Ẹ yẹ lẹÌtà yín wò, tàbí [[Special:UserLogin/signup|kí ẹ dá àkópamá»Ì tuntun]].',
-'nosuchusershort' => "Kò sí oníṣe t'ón jáº¹Ì <nowiki>$1</nowiki>.
+'nosuchusershort' => "Kò sí oníṣe t'ón jáº¹Ì $1.
Ẹ yẹ lẹÌtà á»Ì€rá»Ì€ yín wò.",
'nouserspecified' => 'Ẹ gbá»Ìdá»Ì€ tá»Ìkasí orúká» oníṣe kan.',
'login-userblocked' => 'Oníṣe yìí jáº¹Ì dídínà. ÃŒwá»lé kò jáº¹Ì gbígbà láyè.',
@@ -543,13 +545,14 @@ E-mail kankan kò ní jáº¹Ì fífiráná¹£áº¹Ì fún ìkankan nínú àwá»n ìnÃ
'usernamehasherror' => 'Orúká» oníṣe yín kò gbá»dá»Ì€ ní àmílẹÌtà hash',
'login-throttled' => 'Ẹ ti gbìyànjú bó á¹£e yẹ lá» láti wá»lé.
Ẹ já»Ì€wá»Ì ẹ dúró ná kí ẹ tó gbìyànjú lẹÌẹ̀kan síi.',
+'login-abort-generic' => 'ÃŒwá»lé yín kò yá»rísírere - ó ti jáº¹Ì kíkáwá»Ìdà',
'loginlanguagelabel' => 'Èdè: $1',
'suspicious-userlogout' => 'ÃŒtá»rá» tí ẹ á¹£e láti bá»Ìsóde jẹ̀ kíká»Ì€ nítorípé ó dà bí pé ó jáº¹Ì fífiráná¹£áº¹Ì látá»Ì€dá»Ì€ awòtakùn (browser) àìdára tàbí ẹ̀rá»-ìwá»Ì€fà ìmúpamá»Ì onígbàdíẹ̀.',
# E-mail sending
'php-mail-error-unknown' => 'Àsìṣe àìmá»Ì€ nínú ìgbéṣe mail() ti PHP',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'ÃŒyípadà á»Ì€rá»Ì€Ã¬pamá»Ì',
'resetpass_announce' => 'Ẹ ti wá»lé pẹ̀lú àmìá»Ì€rá»Ì€ e-mail ìgbàdíẹ̀.
Láti parí ìmúwá»lẹÌ, ẹ gbá»Ìdá»Ì€ ṣètò á»Ì€rá»Ì€Ã¬pamá»Ì tuntun níbí:',
@@ -567,6 +570,32 @@ Láti parí ìmúwá»lẹÌ, ẹ gbá»Ìdá»Ì€ ṣètò á»Ì€rá»Ì€Ã¬pamá»Ì tu
Ó le jáº¹Ì pé ẹ ti yí á»Ì€rá»Ì€Ã¬pamá»Ì yín padà sí òmíràn tàbí ẹ ti tá»rá» á»Ìrá»Ììpamá»Ì tuntun ìgbàdíẹ̀.',
'resetpass-temp-password' => 'Ọ̀rá»Ì€Ã¬pamá»Ì fún ìgbà díẹ̀',
+# Special:PasswordReset
+'passwordreset' => 'ÃŒtúntò á»Ì€rá»Ì€Ã¬pamá»Ì',
+'passwordreset-text' => 'Ẹ parí fá»Ìá»Ì€mù yìí láti gba e-mail aránlétí nípa àwá»n ẹ̀kúnrẹÌráº¹Ì Ã pamá»Ì yín.',
+'passwordreset-legend' => 'ÃŒtúntò á»Ì€rá»Ì€Ã¬pamá»Ì',
+'passwordreset-disabled' => 'ÃŒdálẹÌkun ìtúntò á»Ì€rá»Ì€Ã¬pamá»Ì lórí wiki yìí.',
+'passwordreset-pretext' => '{{PLURAL:$1||Ẹ kỠìkan nínú àwá»n wẹÌwáº¹Ì dátà ìsàlẹ̀}}',
+'passwordreset-username' => 'OrúkỠoníṣe:',
+'passwordreset-domain' => 'Àbùgbé:',
+'passwordreset-email' => 'Àdírẹ̀sì e-mail:',
+'passwordreset-emailtitle' => 'Àwá»n ẹ̀kúnrẹÌráº¹Ì Ã pamá»Ì lórí {{SITENAME}}',
+'passwordreset-emailtext-ip' => 'Ẹnìkan (bóyá ẹ̀yin ni, láti àdírẹ̀sì IP $1) tá»rỠìránlétí àwá»n ẹ̀kúnrẹÌráº¹Ì Ã kópamá»Ì yín fùn {{SITENAME}} ($4). {{PLURAL:$3|Àkópamá»Ì|Àwá»n àkópamá»Ì}} oníṣe ìsàlẹ̀ yìí ní ìbáṣe pá»Ì€ má»Ì àdírẹ̀sì e-mail yìí:
+
+$2
+
+{{PLURAL:$3|Ọ̀rá»Ì€Ã¬pamá»Ì onígbàdíẹ̀ yìí|Àwá»n á»Ì€rá»Ì€Ã¬pamá»Ì onígbàdíẹ̀ wá»Ì€nyí}} yíò dópin lẹÌyìn {{PLURAL:$5|á»já»Ì kan|á»já»Ì $5}}.
+Ẹ gbá»Ìdá»Ì€ lá» yan á»Ì€rá»Ì€Ã¬pamá»Ì tuntun báyìí. Tóbá jáº¹Ì pé ẹ̀lòmíràn ló á¹£e ìtá»rá» yìí, tàbí tá»Ìbá jáº¹Ì pé ẹ ti rántí á»Ì€rá»Ì€Ã¬pamá»Ì àtètèká»Ìá¹£e yín, tí ẹ ká»Ì€ sí fáº¹Ì yíipadà má»Ì, ẹ lé ṣàìkàsí ìráná¹£áº¹Ì yìí, kí ẹ sì tẹ̀síwájú ní lo á»Ì€rá»Ì€Ã¬pamá»Ì àtijá»Ì yín.',
+'passwordreset-emailtext-user' => 'Oníṣe $1 lórí {{SITENAME}} tá»rỠìránlétí àwá»n ẹ̀kúnrẹÌráº¹Ì Ã kópamá»Ì yín fùn {{SITENAME}} ($4). {{PLURAL:$3|Àkópamá»Ì|Àwá»n àkópamá»Ì}} oníṣe ìsàlẹ̀ yìí ní ìbáṣe pá»Ì€ má»Ì àdírẹ̀sì e-mail yìí:
+
+$2
+
+{{PLURAL:$3|Ọ̀rá»Ì€Ã¬pamá»Ì onígbàdíẹ̀ yìí|Àwá»n á»Ì€rá»Ì€Ã¬pamá»Ì onígbàdíẹ̀ wá»Ì€nyí}} yíò dópin lẹÌyìn {{PLURAL:$5|á»já»Ì kan|á»já»Ì $5}}.
+Ẹ gbá»Ìdá»Ì€ lá» yan á»Ì€rá»Ì€Ã¬pamá»Ì tuntun báyìí. Tóbá jáº¹Ì pé ẹ̀lòmíràn ló á¹£e ìtá»rá» yìí, tàbí tá»Ìbá jáº¹Ì pé ẹ ti rántí á»Ì€rá»Ì€Ã¬pamá»Ì àtètèká»Ìá¹£e yín, tí ẹ ká»Ì€ sí fáº¹Ì yíipadà má»Ì, ẹ lé ṣàìkàsí ìráná¹£áº¹Ì yìí, kí ẹ sì tẹ̀síwájú ní lo á»Ì€rá»Ì€Ã¬pamá»Ì àtijá»Ì yín.',
+'passwordreset-emailelement' => 'OrúkỠoníṣe: $1
+Ọ̀rá»Ì€Ã¬pamá»Ì ìgbàdíẹ̀: $2',
+'passwordreset-emailsent' => 'E-mail olùrántí ti jáº¹Ì fífiránṣẹÌ.',
+
# Edit page toolbar
'bold_sample' => 'ÃŒká» kedere',
'bold_tip' => 'ÃŒká» kedere',
@@ -578,8 +607,6 @@ Láti parí ìmúwá»lẹÌ, ẹ gbá»Ìdá»Ì€ ṣètò á»Ì€rá»Ì€Ã¬pamá»Ì tu
'extlink_tip' => 'ÃŒjápá»Ì€ lóde (ẹ má»Ì gbàgbé àlẹ̀má»Ìwájú http://)',
'headline_sample' => 'ÃŒkỠàká»lé',
'headline_tip' => 'Àká»lé onípele 2',
-'math_sample' => "Ẹ fi àgbékalẹ̀ s'íhín",
-'math_tip' => 'Àgbékalẹ̀ ìsirò (LaTeX)',
'nowiki_sample' => 'ÃŒkìbá»Ì€ ìkỠàìjáº¹Ì síṣèdá síbí',
'nowiki_tip' => 'Kí á fojú fo bí wiki ṣe rí',
'image_tip' => 'Fáìlì tí a kìbá»Ì€',
@@ -668,7 +695,7 @@ Tó bá jáº¹Ì pé oníṣe aláìlórúká» ni yín, tí ẹ sì ri pé wá»Ìn
'noarticletext-nopermission' => 'Lá»Ìwá»Ìlá»Ìwá»Ì kò sí ìká»Ì€ nínú ojúewé yìí.
Ẹ le [[Special:Search/{{PAGENAME}}|wá àká»lé ojúewé yìí]] nínú àwá»n ojúewé mìíràn, tàbí
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} wá àwá»n àká»á»Ìlẹ̀ tó bámu]</span>.',
-'userpage-userdoesnotexist' => 'Àkópamá»Ì oníṣe "$1" kò tíì jáº¹Ì fíforúká»sílẹ̀.
+'userpage-userdoesnotexist' => 'Àkópamá»Ì oníṣe "<nowiki>$1</nowiki>" kò tíì jáº¹Ì fíforúká»sílẹ̀.
Ẹjá»Ì€wá»Ì ẹ á¹£\'àgbéyẹ̀wò bóyá ẹ fáº¹Ì dá/ṣàtúná¹£e ojúewé yìí.',
'userpage-userdoesnotexist-view' => 'Àpamá»Ì oníṣe "$1" kò jáº¹Ì fífilórúká»sílẹ̀.',
'blocked-notice-logextract' => 'Lá»Ìwá»Ìlá»Ìwá»Ì oníṣe yìí jáº¹Ì dídílá»Ìnà.
@@ -708,6 +735,7 @@ Tí kò bá á¹£iá¹£áº¹Ì síbẹ̀, ẹ gbìyànjú láti [[Special:UserLogout|j
'token_suffix_mismatch' => "'''Àtúná¹£e yín ti jáº¹Ì kíká»Ì€sílẹ̀ nítorípé ẹ̀rá» yín ṣèdàrú àwá»n àmììká»Ì€rá»Ì€ ojúìgúnlẹ̀ má»Ìra wá»n nínú ìtá»Ìwò àtúná¹£e.'''
Àtúná¹£e náà ti jáº¹Ì kíká»Ì€sílẹ̀ láti baà dènà ìdíbàjáº¹Ì Ã¬ká»á»Ì€rá»Ì€ inú ojúewé.
Èyí únsábà ṣẹlẹ̀ nígbàtí ẹ bá únlo ẹ̀rá»-ìwá»Ì€fà ẹlòmíràn aláìlórúká» torí Internet tí kò dára.",
+'edit_form_incomplete' => "'''Àwá»n apá kan fá»Ìá»Ì€mù àtúná¹£e kò dé á»Ì€dá»Ì€ ẹ̀rá»-ìwá»Ì€fà; ẹ wo àtúná¹£e yín páº¹Ì o wà bí ẹ á¹£e ṣé kí ẹ tó tún gbìyànjú lẹÌẹ̀kan síi.'''",
'editing' => 'Àtúnṣe sí $1',
'editingsection' => 'Àtúnṣe sí $1 (abala)',
'editingcomment' => 'Àtúnṣe sí $1 (abala tuntun)',
@@ -1020,9 +1048,10 @@ Ní báyìí ná ẹ le ṣàwárí lá»Ìdá»Ì€ Google.
'changepassword' => 'ÃŒyípadà á»Ì€rá»Ì€Ã¬pamá»Ì',
'prefs-skin' => 'Skin (Àwá»Ì€)',
'skin-preview' => 'Àká»Ìyẹ̀wò',
-'prefs-math' => 'Ìṣirò',
'datedefault' => 'Kò sí ìfẹÌràn',
+'prefs-beta' => 'Àwá»n ìní Beta',
'prefs-datetime' => 'Ọjá»Ìá»dún àti àkókò',
+'prefs-labs' => 'Àwá»n ìní ibiàdánwò',
'prefs-personal' => 'Ọ̀rá»Ì€ nípa oníṣe',
'prefs-rc' => 'Àwá»n àtúná¹£e tuntun',
'prefs-watchlist' => 'Ìmójútó',
@@ -1044,7 +1073,6 @@ Ní báyìí ná ẹ le ṣàwárí lá»Ìdá»Ì€ Google.
'columns' => 'Àwá»n ìtẹ̀lé gogoro:',
'searchresultshead' => 'Àwárí',
'resultsperpage' => 'Àwá»n èsì ní ojúewé ká»Ì€á»Ì€kan:',
-'contextlines' => 'ÃŒye ìlà lórí èsì ká»Ì€á»Ì€kan:',
'stub-threshold-disabled' => 'DídálẹÌkun',
'recentchangesdays' => 'Iye á»já»Ì láti fihàn nínú àwá»n àtúná¹£e tuntun:',
'recentchangesdays-max' => '{{PLURAL:$1|Ọjá»Ì|Ọjá»Ì}} $1 púpá»Ì€jùlá»',
@@ -1053,7 +1081,7 @@ Ní báyìí ná ẹ le ṣàwárí lá»Ìdá»Ì€ Google.
'savedprefs' => 'Àwá»n ìfẹÌràn yín ti jẹÌmímúpapá»Ì.',
'timezonelegend' => 'Àsìkò ilẹ̀àmùrè:',
'localtime' => 'Àkókò ìbílẹ̀:',
-'timezoneuseserverdefault' => 'Lo ti ẹ̀rỠìwá»Ì€fà',
+'timezoneuseserverdefault' => 'Lo ti wiki ($1)',
'timezoneuseoffset' => 'Ã’míràn (ẹ tá»Ìka ìyàtá»Ì€)',
'timezoneoffset' => 'ÃŒyàtá»Ì€Â¹:',
'servertime' => 'Àsìkò ẹ̀rá»-ìwá»Ì€fà:',
@@ -1099,8 +1127,9 @@ Kò gbodá»Ì€ ju $1 {{PLURAL:$1|àmìlẹÌtà|àwá»n àmìlẹÌtà}} lá».',
'email' => 'E-mail',
'prefs-help-realname' => 'Orúká» gangan kò pá»ndandan.
Tí ẹ bá fisílẹ̀ a ó lòó láti tóka iá¹£áº¹Ì yín fún yín.',
-'prefs-help-email' => 'ÀdírẹÌẹ̀sì e-mail yín kò á¹£e dandan, ṣùgbá»Ìn yíò jáº¹Ì kí á le fi á»Ì€rá»Ì€Ã¬pamá»Ì tuntun ráná¹£áº¹Ì sí yín tí ẹ bá gbàgbé á»Ì€rá»Ì€Ã¬pamá»Ì.
-Bákannáà ẹ le è yàn láti jáº¹Ì kí àwá»n ẹlòmíràn kó báyiín sá»Ì€rá»Ì€ láti ojúewé oníṣe tàbí ojúewé á»Ì€rá»Ì€ yín láìfi taani yín hàn.',
+'prefs-help-email' => 'ÀdírẹÌẹ̀sì e-mail yín kò á¹£e dandan, ṣùgbá»Ìn yíò jáº¹Ì lílò fún ìtúntò á»Ì€rá»Ì€Ã¬pamá»Ì, tí ẹ bá gbàgbé á»Ì€rá»Ì€Ã¬pamá»Ì yín.',
+'prefs-help-email-others' => 'Ẹ tún le yàn láti jáº¹Ì kí àwá»n míràn ó bá a yín pàdé pẹ̀lú e-mail láti inú àjápá»Ì€ lórí ojúewé oníṣe tàbí á»Ì€rá»Ì€ yín.
+ÀdírẹÌẹ̀sì e-mail yín kò ní hàn síta nígbà tí àwá»n oníṣe míràn bá a yín pàdé.',
'prefs-help-email-required' => 'E-mail á¹£e dandan.',
'prefs-info' => 'Ìfitónilétí tóṣekókó',
'prefs-i18n' => 'Ìṣekáríayé',
@@ -1277,96 +1306,99 @@ Bákannáà ẹ le è yàn láti jáº¹Ì kí àwá»n ẹlòmíràn kó báyiín s
'recentchangeslinked-to' => 'Àfihàn àwá»n àtúná¹£e sí àwá»n ojúewé tójápá»Ì€ má»Ì ojúewé á»Ì€hún dípò',
# Upload
-'upload' => 'Ìrùsókè fáìlì',
-'uploadbtn' => 'Ìrùsókè fáìlì',
-'reuploaddesc' => 'Fagilé ìrùsókè kí ó tó padà sí fá»Ìá»Ì€mù ìrùsókè',
-'uploadnologin' => 'Ẹ kò tíì wá»lé',
-'uploadnologintext' => 'Ẹ gbá»Ìdá»Ì€ [[Special:UserLogin|wá»lè]] láti rùsókè faili.',
-'uploaderror' => 'Àsìse ìrùsókè',
-'upload-recreate-warning' => "'''ÃŒkìlá»Ì€: Fáìlì kan pẹ̀lú orúká» báun ti jáº¹Ì píparáº¹Ì tàbí yíyípódà.'''
+'upload' => 'Ìrùsókè fáìlì',
+'uploadbtn' => 'Ìrùsókè fáìlì',
+'reuploaddesc' => 'Fagilé ìrùsókè kí ó tó padà sí fá»Ìá»Ì€mù ìrùsókè',
+'uploadnologin' => 'Ẹ kò tíì wá»lé',
+'uploadnologintext' => 'Ẹ gbá»Ìdá»Ì€ [[Special:UserLogin|wá»lè]] láti rùsókè faili.',
+'uploaderror' => 'Àsìse ìrùsókè',
+'upload-recreate-warning' => "'''ÃŒkìlá»Ì€: Fáìlì kan pẹ̀lú orúká» báun ti jáº¹Ì píparáº¹Ì tàbí yíyípódà.'''
Àká»á»Ìlẹ̀ ìparáº¹Ì Ã ti ìyípòdà fún ojúewé yìí nìyí fún ìrá»Ì€rùn:",
-'uploadtext' => "Ẹ lá» fá»Ìá»Ì€mù ìsàlẹ̀ láti ṣèrùsókè àwá»n fáìlì.
+'uploadtext' => "Ẹ lá» fá»Ìá»Ì€mù ìsàlẹ̀ láti ṣèrùsókè àwá»n fáìlì.
Láti wò tàbí wá àwá»n fáìlì àrùsókè tẹÌlẹ̀ ẹ lá» sí [[Special:FileList|àtòjỠàwá»n fáìlì àrùsókè]], àwá»n à(tùn)rùsókè náà jáº¹Ì kíká»á»Ìlẹ̀ nínú [[Special:Log/upload|àká»á»Ìlẹ̀ ìrùsókè]], àwá»n ìparáº¹Ì nínú [[Special:Log/delete|àká»á»Ìlẹ̀ ìparẹÌ]].
Láti fí fáìlì pá»Ì€má»Ì sínú ojúewé kan, ẹ lo àjápá»Ì€ bíi ìkan nínù àwá»n ti ìsàlẹ̀ yìí:
* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fáìlì.jpg]]</nowiki></tt>''' láti lo àtẹ̀jáde kíkún fáiø á»Ì€hún
* '''<tt><nowiki>[[</nowiki>{{ns:file}}<nowiki>:Fáìlì.png|200px|thumb|left|ìká»Ì€rá»Ì€]]</nowiki></tt>''' láti lo ìgbéhàn fífẹ̀ tó 200 pixel nínú àpótí ní apá á»wá»Ì òsì pẹ̀lú 'ìká»Ì€rá»Ì€' bíi ìjúwe
* '''<tt><nowiki>[[</nowiki>{{ns:media}}<nowiki>:Fáìlì.ogg]]</nowiki></tt>''' láti ṣèjápá»Ì€ tààrà sí fáìlì náà láì sàgbéhàn fáìlì á»Ì€hún",
-'upload-permitted' => 'Àwá»n irú fáìlì yíyá»Ì€nda: $1',
-'upload-preferred' => 'Àwá»n irú fáìlì fífẹÌràn: $1',
-'upload-prohibited' => 'Àwá»n irú fáìlì dídènà: $1',
-'uploadlog' => 'àká»á»Ìlẹ̀ ìrùsókè',
-'uploadlogpage' => 'Àká»sílẹ̀ ìrùsókè',
-'uploadlogpagetext' => 'Lábáº¹Ì yìí ni àkójỠàwá»n ìrùsókè fáìlì áìpẹÌ.
+'upload-permitted' => 'Àwá»n irú fáìlì yíyá»Ì€nda: $1',
+'upload-preferred' => 'Àwá»n irú fáìlì fífẹÌràn: $1',
+'upload-prohibited' => 'Àwá»n irú fáìlì dídènà: $1',
+'uploadlog' => 'àká»á»Ìlẹ̀ ìrùsókè',
+'uploadlogpage' => 'Àká»sílẹ̀ ìrùsókè',
+'uploadlogpagetext' => 'Lábáº¹Ì yìí ni àkójỠàwá»n ìrùsókè fáìlì áìpẹÌ.
Ẹ wo [[Special:NewFiles|á»Ì€dẹ̀dẹ̀ àwá»n fáìlì tuntun]] fún àgbéwò aláfojúrí',
-'filename' => 'ỌrúkỠfáìlì',
-'filedesc' => 'Àkótán',
-'fileuploadsummary' => 'Àkótán:',
-'filereuploadsummary' => 'Àwá»n àtúná¹£e fáìlì:',
-'filestatus' => 'Ipò ẹ̀tá»Ìàwòká»:',
-'filesource' => 'Orísun:',
-'uploadedfiles' => 'Àwá»n fáìlì ajẹÌrírùsókè',
-'ignorewarning' => 'Fojúfo ìkìlá»Ì€ sì fi faili pamá»Ì',
-'ignorewarnings' => 'Fojúfo ìkìlá»Ì€ tó wù kó jẹÌ',
-'minlength1' => 'Ó kéréjù àwá»n orúká» fáìlì gbá»dá»Ì€ jáº¹Ì lẹÌtà kan.',
-'illegalfilename' => 'Orúká» fáìlì "$1" ní àwá»n àmììká»Ì€rá»Ì€ tí kò jáº¹Ì gbígbà láàyè nínú àká»lé ojúewé.
+'filename' => 'ỌrúkỠfáìlì',
+'filedesc' => 'Àkótán',
+'fileuploadsummary' => 'Àkótán:',
+'filereuploadsummary' => 'Àwá»n àtúná¹£e fáìlì:',
+'filestatus' => 'Ipò ẹ̀tá»Ìàwòká»:',
+'filesource' => 'Orísun:',
+'uploadedfiles' => 'Àwá»n fáìlì ajẹÌrírùsókè',
+'ignorewarning' => 'Fojúfo ìkìlá»Ì€ sì fi faili pamá»Ì',
+'ignorewarnings' => 'Fojúfo ìkìlá»Ì€ tó wù kó jẹÌ',
+'minlength1' => 'Ó kéréjù àwá»n orúká» fáìlì gbá»dá»Ì€ jáº¹Ì lẹÌtà kan.',
+'illegalfilename' => 'Orúká» fáìlì "$1" ní àwá»n àmììká»Ì€rá»Ì€ tí kò jáº¹Ì gbígbà láàyè nínú àká»lé ojúewé.
Ẹ já»Ì€wá»Ì ẹ tún fáìlì sá»lórúká» kì ẹ sì gbìyànjú láti tún rùúsókè.',
-'badfilename' => 'OrúkỠfáìlì ti yípadà sí "$1".',
-'filetype-badmime' => 'Àwá»n fáìlì MIME irú "$1" kò jáº¹Ì gbígbà láyè láti rù wá»Ìn sókè.',
-'filetype-unwanted-type' => "'''\".\$1\"''' jáº¹Ì irú fáìlì àìfẹÌ.
+'badfilename' => 'OrúkỠfáìlì ti yípadà sí "$1".',
+'filetype-badmime' => 'Àwá»n fáìlì MIME irú "$1" kò jáº¹Ì gbígbà láyè láti rù wá»Ìn sókè.',
+'filetype-unwanted-type' => "'''\".\$1\"''' jáº¹Ì irú fáìlì àìfẹÌ.
{{PLURAL:\$3|Irú fáìlì|Àwá»n irú fáìlì}} tí à únfáº¹Ì ni \$2.",
-'filetype-missing' => 'Fáìlì yìí kò ní ìfàgùn (fún àpẹrẹ ".jpg").',
-'empty-file' => 'Fáílì tí ẹ fúnsílẹ̀ jáº¹Ì Ã²fo nínú.',
-'file-too-large' => 'Fáílì tí ẹ fúnsílẹ̀ jáº¹Ì títóbijù',
-'filename-tooshort' => 'Orúká» fáílì jáº¹Ì kíkéréjú.',
-'filetype-banned' => 'Irú fáílì yìí ti jáº¹Ì dídí lá»Ìnà.',
-'illegal-filename' => 'Orúká» fáílì yìí kò jáº¹Ì gbígbàláàyè.',
-'unknown-error' => 'Àsìṣe aláìmá»Ì€ kan ti ṣẹlẹ̀.',
-'tmp-create-error' => 'Kò le dá fáìlì onígbàdíẹ̀.',
-'tmp-write-error' => 'Àsìṣe kíkỠfáìlí onígbàdíẹ̀.',
-'large-file' => 'O jáº¹Ì gbígbàníyànjú pé àwá»n fáìlì ò gbá»dá»Ì€ tóbi ju $1 lá»;
+'filetype-banned-type' => '\'\'\'".$1"\'\'\' {{PLURAL:$4|kìí á¹£e|kìí á¹£e àwá»n}} irú fáìlì tí agbàláàyè.
+{{PLURAL:$3|Irú|Àwá»n irú}} fáìlì tí agbàláàyè ni $2.',
+'filetype-missing' => 'Fáìlì yìí kò ní ìfàgùn (fún àpẹrẹ ".jpg").',
+'empty-file' => 'Fáílì tí ẹ fúnsílẹ̀ jáº¹Ì Ã²fo nínú.',
+'file-too-large' => 'Fáílì tí ẹ fúnsílẹ̀ jáº¹Ì títóbijù',
+'filename-tooshort' => 'Orúká» fáílì jáº¹Ì kíkéréjú.',
+'filetype-banned' => 'Irú fáílì yìí ti jáº¹Ì dídí lá»Ìnà.',
+'illegal-filename' => 'Orúká» fáílì yìí kò jáº¹Ì gbígbàláàyè.',
+'unknown-error' => 'Àsìṣe aláìmá»Ì€ kan ti ṣẹlẹ̀.',
+'tmp-create-error' => 'Kò le dá fáìlì onígbàdíẹ̀.',
+'tmp-write-error' => 'Àsìṣe kíkỠfáìlí onígbàdíẹ̀.',
+'large-file' => 'O jáº¹Ì gbígbàníyànjú pé àwá»n fáìlì ò gbá»dá»Ì€ tóbi ju $1 lá»;
fáìlì yìí jáº¹Ì $2.',
-'fileexists' => "Fáìlì kan tilẹ̀ wà pẹ̀lú orúká» yìí, ẹ já»Ì€wá»Ì ẹ yẹ '''<tt>[[:$1]]</tt>''' wò tí kò bá dá yín lójú pé ẹ fáº¹Ì yipadà.
+'windows-nonascii-filename' => 'Wiki yìí kò ní àtìlẹÌyìn fún àwá»n orúká» fáìlì pẹ̀lú àwá»n àmììká»Ì€rá»Ì€ àkàná¹£e.',
+'fileexists' => "Fáìlì kan tilẹ̀ wà pẹ̀lú orúká» yìí, ẹ já»Ì€wá»Ì ẹ yẹ '''<tt>[[:$1]]</tt>''' wò tí kò bá dá yín lójú pé ẹ fáº¹Ì yipadà.
[[$1|thumb]]",
-'filepageexists' => "Ojúewé ìjúwe fún fáìlì yìí tilẹ̀ ti wà ní '''<tt>[[:$1]]</tt>''', sùgbá»Ìn fáìlì kankan kò sí pẹ̀lú orúká» yìí rárá.
+'filepageexists' => "Ojúewé ìjúwe fún fáìlì yìí tilẹ̀ ti wà ní '''<tt>[[:$1]]</tt>''', sùgbá»Ìn fáìlì kankan kò sí pẹ̀lú orúká» yìí rárá.
Àkótán tí ẹ kỠkò ní hàn lórí ojúewé ìjúwe náà.
Tí ẹ bá fáº¹Ì kí àkótán yín ó hàn níbẹ̀, ẹ gbá»Ìdá»Ì€ ká» á»Ì síbẹ̀ fún raara yín.
[[$1|thumb]]",
-'fileexists-extension' => "Fáìlì kan wà pẹ̀lú orúká» tó já»ra: [[$2|thumb]]
+'fileexists-extension' => "Fáìlì kan wà pẹ̀lú orúká» tó já»ra: [[$2|thumb]]
* OrúkỠfáìlì ìrùsókè: '''<tt>[[:$1]]</tt>'''
* OrúkỠfáìlì tó wà: '''<tt>[[:$2]]</tt>'''
Ẹ já»Ì€wá»Ì ẹ mú orúká» tó yàtá»Ì€.",
-'file-exists-duplicate' => 'Fáìlì yìí jáº¹Ì Ã wòká» kan {{PLURAL:$1|fáìlì yìí|àwá»n fáìlì wá»Ì€nyí}}:',
-'uploadwarning' => 'ÃŒkìlá»Ì€ ìrùsókè',
-'uploadwarning-text' => 'Ẹ já»Ì€wá»Ì ẹ tún ìjúwe fáìlì ìsàlẹ̀ náà á¹£e kí ẹ tó gbìyànjú lẹÌẹ̀kan síi.',
-'savefile' => 'ÃŒmúpamá»Ì fáìlì',
-'uploadedimage' => '"[[$1]]" ti jẹÌrírùsókè',
-'overwroteimage' => 'ṣe ìrùsókè àtúnyẹ̀wò tuntun "[[$1]]"',
-'uploaddisabled' => 'DídálẹÌkun àwá»n ìrùsókè.',
-'copyuploaddisabled' => 'ÃŒdálẹÌkun ìrùsókè pẹ̀lú URL.',
-'uploadfromurl-queued' => 'Ìrùsókè yín ti wà lóríìlà.',
-'uploaddisabledtext' => 'DídálẹÌkun àwá»n ìrùsókè fáìlì.',
-'php-uploaddisabledtext' => 'ÃŒrùsókè fáìlì jáº¹Ì dídálẹÌkun nínú PHP.
+'file-exists-duplicate' => 'Fáìlì yìí jáº¹Ì Ã wòká» kan {{PLURAL:$1|fáìlì yìí|àwá»n fáìlì wá»Ì€nyí}}:',
+'uploadwarning' => 'ÃŒkìlá»Ì€ ìrùsókè',
+'uploadwarning-text' => 'Ẹ já»Ì€wá»Ì ẹ tún ìjúwe fáìlì ìsàlẹ̀ náà á¹£e kí ẹ tó gbìyànjú lẹÌẹ̀kan síi.',
+'savefile' => 'ÃŒmúpamá»Ì fáìlì',
+'uploadedimage' => '"[[$1]]" ti jẹÌrírùsókè',
+'overwroteimage' => 'ṣe ìrùsókè àtúnyẹ̀wò tuntun "[[$1]]"',
+'uploaddisabled' => 'DídálẹÌkun àwá»n ìrùsókè.',
+'copyuploaddisabled' => 'ÃŒdálẹÌkun ìrùsókè pẹ̀lú URL.',
+'uploadfromurl-queued' => 'Ìrùsókè yín ti wà lóríìlà.',
+'uploaddisabledtext' => 'DídálẹÌkun àwá»n ìrùsókè fáìlì.',
+'php-uploaddisabledtext' => 'ÃŒrùsókè fáìlì jáº¹Ì dídálẹÌkun nínú PHP.
Ẹ já»Ì€wá»Ì bojúwo ìtò ìrùsókè fáìlì.',
-'uploadvirus' => 'Fáìlì náà ní èràn nínú!
+'uploadvirus' => 'Fáìlì náà ní èràn nínú!
Ẹ̀kúnrẹÌrẹÌ: $1',
-'upload-source' => 'Fáìlì ìsun',
-'sourcefilename' => 'OrúkỠfáìlì orísun:',
-'sourceurl' => 'Orísun URL:',
-'destfilename' => 'Ìdópin orúkỠfáìlì:',
-'upload-maxfilesize' => 'Púpá»Ì€jùlỠìtóbi fáìlì: $1',
-'upload-description' => 'Ìjúwe fáìlì',
-'upload-options' => 'Àwá»n àṣàyàn ìrùsókè',
-'watchthisupload' => "M'ójútó fáilì yìí",
-'upload-success-subj' => 'Ìjásírere ìrùsókè',
-'upload-success-msg' => 'Ìrùsókè yín láti [$2] ti jásírere. Ó ṣeéwò níbí: [[:{{ns:file}}:$1]]',
-'upload-failure-subj' => 'Ìṣòro ìrùsókè',
-'upload-failure-msg' => 'Ìṣòro kan wà pẹ̀lú fá»Ìá»Ì€mù ìrùsókè yín [$2]:
+'upload-source' => 'Fáìlì ìsun',
+'sourcefilename' => 'OrúkỠfáìlì orísun:',
+'sourceurl' => 'Orísun URL:',
+'destfilename' => 'Ìdópin orúkỠfáìlì:',
+'upload-maxfilesize' => 'Púpá»Ì€jùlỠìtóbi fáìlì: $1',
+'upload-description' => 'Ìjúwe fáìlì',
+'upload-options' => 'Àwá»n àṣàyàn ìrùsókè',
+'watchthisupload' => "M'ójútó fáilì yìí",
+'upload-success-subj' => 'Ìjásírere ìrùsókè',
+'upload-success-msg' => 'Ìrùsókè yín láti [$2] ti jásírere. Ó ṣeéwò níbí: [[:{{ns:file}}:$1]]',
+'upload-failure-subj' => 'Ìṣòro ìrùsókè',
+'upload-failure-msg' => 'Ìṣòro kan wà pẹ̀lú fá»Ìá»Ì€mù ìrùsókè yín [$2]:
$1',
-'upload-warning-subj' => 'ÃŒkìlá»Ì€ ìrùsókè',
-'upload-warning-msg' => 'Ìṣòro kan wà pẹ̀lú ìrùsókè yín láti [$2]. Ẹ le padà sí orí [[Special:Upload/stash/$1|fá»Ìá»Ìmù ìrùsókè]] láti ṣàtúná¹£e ìṣòro náà.',
+'upload-warning-subj' => 'ÃŒkìlá»Ì€ ìrùsókè',
+'upload-warning-msg' => 'Ìṣòro kan wà pẹ̀lú ìrùsókè yín láti [$2]. Ẹ le padà sí orí [[Special:Upload/stash/$1|fá»Ìá»Ìmù ìrùsókè]] láti ṣàtúná¹£e ìṣòro náà.',
'upload-proto-error' => 'Prótókólù àìtá»Ì',
'upload-file-error' => 'Àsiṣe ínú',
@@ -1375,6 +1407,12 @@ $1',
'upload-unknown-size' => 'Iye ìtóbi kòsí',
'upload-http-error' => 'Àṣìṣe HTTP ti ṣẹlẹ̀: $1',
+# ZipDirectoryReader
+'zip-wrong-format' => 'Fáìlì tí a tá»Ìkasí kì í á¹£e fáìlì ZIP.',
+
+# Special:UploadStash
+'uploadstash-refresh' => 'Àtúnraá¹£e àtòjỠàwá»n fáìlì',
+
# img_auth script messages
'img-auth-accessdenied' => 'ÃŒdínà igbàwá»lé',
'img-auth-nofile' => 'Fáìlì "$1" kò sí.',
@@ -1496,7 +1534,7 @@ $1',
'statistics-users-active-desc' => 'Àwá»n oníṣe tí wá»Ìn ti á¹£e ìgbéṣe kan ní {{PLURAL:$1|á»já»Ì kan|á»já»Ì $1}} sẹÌyìn',
'statistics-mostpopular' => 'Àwá»n ojúewé tí wá»Ìn jáº¹Ì wíwò jùlá»',
-'disambiguations' => 'Àwá»n ojúewé ìpínsá»Ìtá»Ì€',
+'disambiguations' => 'Àwá»n ojúewé tó jápá»Ì€ má»Ì àwá»n ojúewé ìṣeojútùú',
'disambiguationspage' => 'Template:ojútùú',
'doubleredirects' => 'Àwá»n àtúnjúwe ẹ̀mẹjì',
@@ -1599,7 +1637,7 @@ Bákannáà ẹ wo [[Special:WantedCategories|àwá»n ẹ̀ka wíwá]].',
'sp-deletedcontributions-contribs' => 'àwá»n àfikún',
# Special:LinkSearch
-'linksearch' => "Àwá»n ìjápá»Ì€ s'íta",
+'linksearch' => 'Àwáàrí àwá»n àjápá»Ì€ òde',
'linksearch-ns' => 'Orúká»Ã yè:',
'linksearch-ok' => 'Ṣàwárí',
'linksearch-line' => '$1 jáº¹Ì jíjápá»Ì€ láti $2',
@@ -1640,22 +1678,24 @@ Bákannáà ẹ wo [[Special:WantedCategories|àwá»n ẹ̀ka wíwá]].',
'listgrouprights-removegroup-all' => 'Mú gbogbo ẹgbáº¹Ì kúrò',
# E-mail user
-'emailuser' => 'Ẹ fi e-mail ráná¹£áº¹Ì sí oníṣe yìí',
-'emailpage' => 'E-mail sí oníṣe',
-'defemailsubject' => 'e-mail {{SITENAME}}',
-'noemailtitle' => 'Kò sí àdírẹ̀sì e-mail',
-'noemailtext' => 'Oníṣe yìí kò tìí ṣètò àdírẹÌẹ̀sì e-mail tótá»Ì kankan.',
-'nowikiemailtitle' => 'E-mail kankan kò jáº¹Ì gbígbà láyè',
-'email-legend' => 'Fi e-mail ráná¹£áº¹Ì sí oníṣe {{SITENAME}} mìíràn',
-'emailfrom' => 'Láti:',
-'emailto' => 'Sí:',
-'emailsubject' => 'Oríá»Ì€rá»Ì€:',
-'emailmessage' => 'ÃŒránṣẹÌ:',
-'emailsend' => 'FiránṣẹÌ',
-'emailccsubject' => 'ÀwòkỠìráná¹£áº¹Ì yín sí $1: $2',
-'emailsent' => 'E-mail ti jáº¹Ì fìfiránṣẹÌ',
-'emailsenttext' => 'ÃŒránṣẹ̀ e-mail yín ti jáº¹Ì fífiránṣé.',
-'emailuserfooter' => 'E-mail yìí wá látá»Ì€dá»Ì€ $1 sí $2 pẹ̀lú ìfigbéṣe "E-mail oníṣe" ní {{SITENAME}}.',
+'emailuser' => 'Ẹ fi e-mail ráná¹£áº¹Ì sí oníṣe yìí',
+'emailpage' => 'E-mail sí oníṣe',
+'defemailsubject' => 'e-mail {{SITENAME}}',
+'noemailtitle' => 'Kò sí àdírẹ̀sì e-mail',
+'noemailtext' => 'Oníṣe yìí kò tìí ṣètò àdírẹÌẹ̀sì e-mail tótá»Ì kankan.',
+'nowikiemailtitle' => 'E-mail kankan kò jáº¹Ì gbígbà láyè',
+'emailusername' => 'OrúkỠoníṣe:',
+'emailusernamesubmit' => 'Fúnsílẹ̀',
+'email-legend' => 'Fi e-mail ráná¹£áº¹Ì sí oníṣe {{SITENAME}} mìíràn',
+'emailfrom' => 'Láti:',
+'emailto' => 'Sí:',
+'emailsubject' => 'Oríá»Ì€rá»Ì€:',
+'emailmessage' => 'ÃŒránṣẹÌ:',
+'emailsend' => 'FiránṣẹÌ',
+'emailccsubject' => 'ÀwòkỠìráná¹£áº¹Ì yín sí $1: $2',
+'emailsent' => 'E-mail ti jáº¹Ì fìfiránṣẹÌ',
+'emailsenttext' => 'ÃŒránṣẹ̀ e-mail yín ti jáº¹Ì fífiránṣé.',
+'emailuserfooter' => 'E-mail yìí wá látá»Ì€dá»Ì€ $1 sí $2 pẹ̀lú ìfigbéṣe "E-mail oníṣe" ní {{SITENAME}}.',
# Watchlist
'watchlist' => 'Ìmójútó mi',
@@ -1665,10 +1705,8 @@ Bákannáà ẹ wo [[Special:WantedCategories|àwá»n ẹ̀ka wíwá]].',
'watchlistanontext' => 'Ẹ já»Ì€wá»Ì $1 láti wò tàbí ṣàtúná¹£e àwá»n ohun inú ìmójútó yín.',
'watchnologin' => 'Ẹ kò tíì wá»lé',
'watchnologintext' => 'Ẹ gbá»Ìdá»Ì€ [[Special:UserLogin|wá»lè]] láti ṣàtúná¹£e ìmójútó yín.',
-'addedwatch' => 'Ti fikún sí ìmójútó',
'addedwatchtext' => "A ti ṣ'àfikún \"[[:\$1]]\" sí [[Special:Watchlist|ìmójútó]] yín.
A óò á¹£'àkójỠàwá»n àtúná¹£e á»já»Ìwajú sí ojúewé yìí àti ojúewé á»Ì€rá»Ì€ rẹ̀ sí bẹ̀. Bákanáà ojúewé náà yíò hàn '''kedere''' nìnú [[Special:RecentChanges|àkójỠàwá»n àtúná¹£e tuntun]] kó le ba à rá»rùn láti rí.",
-'removedwatch' => 'Ti mú kúrò nínú ìmójútó',
'removedwatchtext' => 'A ti yỠojúewé "[[:$1]]" kúrò nínú [[Special:Watchlist|ìmójútó yín]].',
'watch' => 'Ìmójútó',
'watchthispage' => "M'ójútó ojúewé yi",
@@ -1718,17 +1756,21 @@ wiki: $PAGEEDITOR_WIKI
Kò ní sí ìfitá»Ìnilétí míràn má»Ì fún àyípadà á»já»Ìá»wájú àyàfi tí ẹ bá ṣàbẹ̀wò ojúewé yìí.
Ẹ sì tún le á¹£e àtúntò àwá»n àmì ìfitá»Ìnilétí fún gbogbo àwá»n ojúewé mímójútó nínú ìmójútó yín.
- SístẹÌmù ìfitá»Ìnilétí {{SITENAME}} yín
+ SístẹÌmù ìfitá»Ìnilétí {{SITENAME}} yín
+
+---
---
-Láti ṣèyípadà ìṣètò ìmójútó yín, ẹ lỠsí
-{{fullurl:{{#special:Watchlist}}/edit}}
+Láti ṣàyípadà ìtò ìṣeàkíyèsí e-mail yín, ẹ lỠsí
+{{canonicalurl:{{#special:Preferences}}}}
+
+Láti ṣèyípadà ìtò ìmójútó yín, ẹ lỠsí
+{{canonicalurl:{{#special:EditWatchlist}}}}
Láti ṣèparáº¹Ì ojúewé náà kúrò nínú ìmjútó yín, ẹ lá» sí
$UNWATCHURL
-Fún ìrànwá»Ì:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+Fún ìrànwá»Ì àti ìbérè:
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => 'ÃŒparáº¹Ì ojúewé',
@@ -1743,7 +1785,7 @@ Fún ìrànwá»Ì:
[[{{MediaWiki:Policy-url}}|ìlànà]] ṣe làá kalẹ̀.',
'actioncomplete' => 'Ìmúṣe ti parí',
'actionfailed' => 'Ìkùnà ìgbéṣe',
-'deletedtext' => 'A ti pa "<nowiki>$1</nowiki>" rẹÌ.
+'deletedtext' => 'A ti pa "$1" rẹÌ.
Ẹ wo $2 fún àká»á»Ìlẹ̀ àwá»n ìparáº¹Ì Ã Ã¬pẹÌ.',
'deletedarticle' => 'A ti pa "[[$1]]" rẹÌ',
'dellogpage' => 'Àká»sílẹ̀ ìparẹÌ',
@@ -1773,7 +1815,7 @@ Fún ìrànwá»Ì:
'protect_expiry_invalid' => 'Àkókò ìparí kò ní ìbámu.',
'protect_expiry_old' => 'ÃŒgbà tó ti ká»já ni ìparí.',
'protect-unchain-permissions' => 'Ẹ ṣí àwá»n àṣàyàn àbò yìókù',
-'protect-text' => "Ẹ lè wo, báº¹Ì áº¹Ì€ sìni ẹ lè á¹£'àtúná¹£e ibi àbò níbí fún ojúewé '''<nowiki>$1</nowiki>'''.",
+'protect-text' => "Ẹ lè wo, báº¹Ì áº¹Ì€ sìni ẹ lè á¹£'àtúná¹£e ibi àbò níbí fún ojúewé '''$1'''.",
'protect-locked-access' => "Àpamá»Ì yín kò ní àyè láti á¹£'àtúná¹£e àwá»n ibi àbò.
Bí a ṣe to ojúewé '''$1''' nì yí:",
'protect-cascadeon' => 'Ojúewé yìí jáº¹Ì dídàbòbò lá»Ìwá»Ìlá»Ìwá»Ì nítorí ó jáº¹Ì mímúpá» nínú {{PLURAL:$1|ojúewé ìsàlẹ̀ yìí, tó ní|àwá»n ojúewé ìsàlẹ̀ wá»Ì€nyí, tí wá»Ìn ní}} àbò onípele tó ún á¹£iṣé.
@@ -1894,15 +1936,15 @@ $1',
'whatlinkshere-filters' => 'Ajá»Ì€',
# Block/unblock
+'block' => 'Dínà oníṣe',
+'unblock' => 'Ìmúkúrò ìdínà oníṣe',
'blockip' => 'Dínà oníṣe',
'blockip-title' => 'Ìdínà oníṣẹ',
'blockip-legend' => 'Ìdínà oníṣẹ',
-'ipaddress' => 'ÀdírẹÌẹ̀sì IP',
'ipadressorusername' => 'ÀdírẹÌẹ̀sì IP tàbí orúká» oníṣe:',
'ipbexpiry' => 'Ìwásópin:',
'ipbreason' => 'Ìdíẹ̀:',
'ipbreasonotherlist' => 'Ìdí mìíràn',
-'ipbanononly' => 'ÃŒdínà àwá»n oníṣe aláìlórúká» nikan',
'ipbcreateaccount' => 'ÃŒdínà dídá àpamá»Ì',
'ipbemailban' => 'ÃŒdínà oníṣe láti fi e-mail ránṣẹÌ',
'ipbenableautoblock' => 'Ní fúnrararẹ̀ dínà àdírẹÌsì IP tí oníṣe yìí lò gbẹ̀yìn, àti àwá»n àdírẹÌsì IP á»já»Ìá»wájú yìówù tí ó bá fáº¹Ì lò láti ṣátúná¹£e',
@@ -1912,10 +1954,12 @@ $1',
'ipbotheroption' => 'òmíràn',
'ipbotherreason' => 'Ìdí míràn/àfikún:',
'ipbhidename' => 'ÃŒbómá»Ìlẹ̀ orúká» oníṣe nínú àwá»n àtúná¹£e àti àwá»n àkójá»',
+'ipb-confirm' => 'Ìmúdájú ìdínà',
'badipaddress' => 'ÀdírẹÌẹ̀sì IP tíkòtá»Ì',
'blockipsuccesssub' => 'ÃŒdínà yá»rí sí rere',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]] ti jáº¹Ì dídílá»Ìnà.<br />
Ẹ wo [[Special:IPBlockList|IP àkójỠìdínà]] láti ṣàtúnyẹ̀wò àwá»n ìdínà.',
+'ipb-blockingself' => 'Ẹ ti fáº¹Ì dínà ara yín! Ṣé èyí dáa yín lójú?',
'ipb-edit-dropdown' => 'Àtúná¹£e àwá»n ìdí ìdínà',
'ipb-unblock-addr' => 'Ìmúkúrò ìdínà $1',
'ipb-unblock' => 'ÃŒmúkúrò ìdínà orúká» oníṣe kan tàbí àdírẹÌsì IP',
@@ -1925,10 +1969,8 @@ $1',
'unblocked' => '[[User:$1|$1]] ti jáº¹Ì mímú kúrò nínú ìdínà',
'unblocked-id' => 'ÃŒdínà $1 ti jáº¹Ì mímúkúrò',
'ipblocklist' => 'Àwá»n oníṣe adílá»Ìnà',
-'ipblocklist-username' => 'Orúká» oníṣe tàbí àdírẹÌsì IP:',
'ipblocklist-submit' => 'Ṣàwárí',
'ipblocklist-otherblocks' => '{{PLURAL:$1|ÃŒdínà|Àwá»n ìdínà}} mííràn',
-'blocklistline' => '$1, $2 ti dínà $3 ($4)',
'infiniteblock' => 'àìlópin',
'expiringblock' => 'yíò parí ní á»já»Ì $1 ní ago $2',
'anononlyblock' => 'aláìlórúkỠnìkan',
@@ -1948,8 +1990,7 @@ $1',
'block-log-flags-noemail' => 'e-mail jáº¹Ì dídílá»Ìnà',
'block-log-flags-hiddenname' => 'orúká» oníṣe jáº¹Ì bíbòmá»Ìlẹ̀',
'ipb_already_blocked' => '"$1" jáº¹Ì dídèlá»Ìnà tẹÌlẹ̀',
-'ipb-needreblock' => '== Dídèlá»Ìnà tẹÌlẹ̀ ==
-"$1" jáº¹Ì dídèlá»Ìnà tẹÌlẹ̀
+'ipb-needreblock' => '"$1" jáº¹Ì dídèlá»Ìnà tẹÌlẹ̀
Ṣé ẹ fáº¹Ì yí àwá»n ìtò yí padà?',
'ipb-otherblocks-header' => '{{PLURAL:$1|ÃŒdínà|Àwá»n ìdínà}} mìíràn',
'blockme' => 'Dínà mi',
@@ -1957,8 +1998,9 @@ $1',
'proxyblocksuccess' => 'Ṣetán',
# Developer tools
-'lockdb' => 'Ti ìbùdó ìpèsè pa',
-'unlockbtn' => 'Ṣí ìbùdó ìpèsè',
+'lockdb' => 'Ti ìbùdó ìpèsè pa',
+'unlockbtn' => 'Ṣí ìbùdó ìpèsè',
+'lockedbyandtime' => '(látá»wá»Ì {{GENDER:$1|$1}} ní á»já»Ì $2 ago $3)',
# Move page
'move-page' => 'Yípò $1',
@@ -2138,17 +2180,6 @@ Ojúewé àdésí "[[:$1]]" wà tẹÌlẹ̀tẹÌlẹ̀.
'siteusers' => '{{PLURAL:$2|Oníṣe|Àwá»n oníṣe}} $1 {{SITENAME}}',
'anonusers' => '{{PLURAL:$2|Oníṣe|Àwá»n oníṣe}} aláìlórúká» $1 {{SITENAME}}',
-# Info page
-'infosubtitle' => 'ÃŒfitá»Ìnilétí fún ojúewé',
-'numedits' => 'Ãyé áwon àtúná¹£e (ojúewé): $1',
-'numtalkedits' => 'Ãyé áwon àtúná¹£e (ojúewé ìfá»Ì€rá»Ì€wérá»Ì€): $1',
-'numwatchers' => 'Iye àwá»n aláàbójúwò: $1',
-
-# Math errors
-'math_unknown_error' => 'àsiṣe àwámárìdí',
-'math_unknown_function' => 'ìfiṣe àwámárìdí',
-'math_lexing_error' => 'àsiá¹£e òye á»Ì€rá»Ì€',
-
# Patrol log
'patrol-log-auto' => '(fúnraara)',
'patrol-log-diff' => 'àtúnyẹ̀wò $1',
@@ -2169,7 +2200,7 @@ Ojúewé àdésí "[[:$1]]" wà tẹÌlẹ̀tẹÌlẹ̀.
'file-nohires' => '<small>Kò sí ìgbéhàn gíga jù báun lá».</small>',
'svg-long-desc' => 'faili SVG, pẹ̀lú $1 × $2 pixels, ìtòbi faili: $3',
'show-big-image' => 'Pẹ̀lú ìgbéhàn gíga',
-'show-big-image-thumb' => '<small>ÃŒtóbi àká»Ìká»Ìyẹ̀wò yìí: $1 × $2 pixels</small>',
+'show-big-image-size' => '$1 × $2 pixels',
'file-info-gif-looped' => 'lílá»Ìpo',
'file-info-png-looped' => 'lílá»Ìpo',
@@ -2195,7 +2226,7 @@ Ojúewé àdésí "[[:$1]]" wà tẹÌlẹ̀tẹÌlẹ̀.
TóbájẹÌpé fáìlì á»Ì€hún ti jáº¹Ì títúná¹£e sí bóṣewà ní bẹ̀rẹ̀, àwá»n ẹ̀kúnrẹÌráº¹Ì méèló kan le má»Ì fi fáìlì títúná¹£e náà hàn dáadáa.',
'metadata-expand' => 'ÃŒfihàn gbogbo ẹ̀kúnrẹÌrẹÌ',
'metadata-collapse' => 'ÃŒbòmá»Ìlẹ̀ ẹ̀kúnrẹÌrẹÌ',
-'metadata-fields' => "EXIF àwá»n pápá metadata tí a kójá» sínú ìráná¹£áº¹Ì yìí yíò jáº¹Ì Ã fipá»Ì€ sínú ojúewé àwòrán tóhàn ti tábìlì metadata bá fúnpá»Ì€.
+'metadata-fields' => "Pápá metadata àwòrán tí a tòjá» sínú ìráná¹£áº¹Ì yìí yíò jáº¹Ì fífipá»Ì€ sínú ojúewé àwòrán tí yìò hàn ti tábìlì metadata bá súnpá»Ì€.
Àwá»n yìókù yíò pamá»Ì lát'ìbẹ̀rẹ̀.
* make
* model
@@ -2203,7 +2234,13 @@ TóbájẹÌpé fáìlì á»Ì€hún ti jáº¹Ì títúná¹£e sí bóṣewà ní bẹ
* exposuretime
* fnumber
* isospeedratings
-* focallength",
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude",
# EXIF tags
'exif-imagewidth' => 'Fífẹ̀sí',
@@ -2237,17 +2274,18 @@ TóbájẹÌpé fáìlì á»Ì€hún ti jáº¹Ì títúná¹£e sí bóṣewà ní bẹ
'exif-sharpness-0' => 'Déédé',
+'exif-iimcategory-edu' => 'Ẹ̀ká»Ì',
+'exif-iimcategory-hth' => 'ÃŒlera',
+
# External editor support
'edit-externally' => "Ẹ lo ìmúlò òde láti ṣ'àtúnṣe fáìlì yìí",
-'edit-externally-help' => '(Ẹ wo [http://www.mediawiki.org/wiki/Manual:External_editors ìlànà ìṣètò] fún ẹ̀kúnrẹÌrẹÌ)',
+'edit-externally-help' => '(Ẹ wo [//www.mediawiki.org/wiki/Manual:External_editors ìlànà ìṣètò] fún ẹ̀kúnrẹÌrẹÌ)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'gbogbo',
-'imagelistall' => 'gbogbo',
-'watchlistall2' => 'gbogbo',
-'namespacesall' => 'gbogbo',
-'monthsall' => 'gbogbo',
-'limitall' => 'gbogbo',
+'watchlistall2' => 'gbogbo',
+'namespacesall' => 'gbogbo',
+'monthsall' => 'gbogbo',
+'limitall' => 'gbogbo',
# E-mail address confirmation
'confirmemail' => "Ṣè'múdájú àdírẹÌẹ̀sì e-mail",
@@ -2269,6 +2307,10 @@ TóbájẹÌpé fáìlì á»Ì€hún ti jáº¹Ì títúná¹£e sí bóṣewà ní bẹ
# action=purge
'confirm_purge_button' => 'OK',
+# action=watch/unwatch
+'confirm-watch-button' => 'OK',
+'confirm-unwatch-button' => 'OK',
+
# Multipage image navigation
'imgmultipageprev' => '↠ojúewé tóká»já',
'imgmultipagenext' => 'ojúewé tóúnbá»Ì€ →',
@@ -2322,9 +2364,10 @@ TóbájẹÌpé fáìlì á»Ì€hún ti jáº¹Ì títúná¹£e sí bóṣewà ní bẹ
'filepath-submit' => 'Lá»',
# Special:FileDuplicateSearch
-'fileduplicatesearch-filename' => 'OrúkỠfáìlì:',
-'fileduplicatesearch-submit' => 'Àwárí',
-'fileduplicatesearch-info' => '$1 × $2 pixel<br />Ìtóbi fáìlì: $3<br />Irú MIME: $4',
+'fileduplicatesearch-filename' => 'OrúkỠfáìlì:',
+'fileduplicatesearch-submit' => 'Àwárí',
+'fileduplicatesearch-info' => '$1 × $2 pixel<br />Ìtóbi fáìlì: $3<br />Irú MIME: $4',
+'fileduplicatesearch-noresults' => 'Kò sí fáìlì tó únjáº¹Ì "$1".',
# Special:SpecialPages
'specialpages' => 'Àwá»n ojúewé pàtàkì',
diff --git a/languages/messages/MessagesYue.php b/languages/messages/MessagesYue.php
index d01d7631..43097a6c 100644
--- a/languages/messages/MessagesYue.php
+++ b/languages/messages/MessagesYue.php
@@ -15,74 +15,32 @@
* @author Wong128hk
*/
-$bookstoreList = array(
- 'AddALL' => 'http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN',
- 'PriceSCAN' => 'http://www.pricescan.com/books/bookDetail.asp?isbn=$1',
- 'Barnes & Noble' => 'http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1',
- '亞馬éœ' => 'http://www.amazon.com/exec/obidos/ISBN=$1',
- 'åšå®¢ä¾†æ›¸åº—' => 'http://www.books.com.tw/exep/prod/booksfile.php?item=$1',
- '三民書店' => 'http://www.sanmin.com.tw/page-qsearch.asp?ct=search_isbn&qu=$1',
- '天下書店' => 'http://www.cwbook.com.tw/search/result1.jsp?field=2&keyWord=$1',
- '新絲路書店' => 'http://www.silkbook.com/function/Search_list_book_data.asp?item=5&text=$1'
-);
-
-$datePreferences = array(
- 'default',
- 'yue dmy',
- 'yue mdy',
- 'yue ymd',
- 'ISO 8601',
-);
-
-$defaultDateFormat = 'yue';
-
-$dateFormats = array(
- 'yue time' => 'H:i',
- 'yue date' => 'Y年n月j號 (l)',
- 'yue both' => 'Y年n月j號 (D) H:i',
-
- 'yue dmy time' => 'H:i',
- 'yue dmy date' => 'j-n-Y',
- 'yue dmy both' => 'j-n-Y H:i',
-
- 'yue mdy time' => 'H:i',
- 'yue mdy date' => 'n-j-Y',
- 'yue mdy both' => 'n-j-Y H:i',
-
- 'yue ymd time' => 'H:i',
- 'yue ymd date' => 'Y-n-j',
- 'yue ymd both' => 'Y-n-j H:i',
-);
-
$namespaceNames = array(
- NS_MEDIA => 'Media',
- NS_SPECIAL => 'Special',
- NS_TALK => 'Talk',
- NS_USER => 'User',
- NS_USER_TALK => 'User_talk',
- NS_PROJECT_TALK => '$1_talk',
- NS_FILE => 'File',
- NS_FILE_TALK => 'File_talk',
+ NS_MEDIA => '媒體',
+ NS_SPECIAL => '特別',
+ NS_TALK => '傾åˆ',
+ NS_USER => '用戶',
+ NS_USER_TALK => '用戶傾åˆ',
+ NS_PROJECT_TALK => '$1_傾åˆ',
+ NS_FILE => '文件',
+ NS_FILE_TALK => '文件傾åˆ',
NS_MEDIAWIKI => 'MediaWiki',
- NS_MEDIAWIKI_TALK => 'MediaWiki_talk',
- NS_TEMPLATE => 'Template',
- NS_TEMPLATE_TALK => 'Template_talk',
- NS_HELP => 'Help',
- NS_HELP_TALK => 'Help_talk',
- NS_CATEGORY => 'Category',
- NS_CATEGORY_TALK => 'Category_talk',
+ NS_MEDIAWIKI_TALK => 'MediaWiki_傾åˆ',
+ NS_TEMPLATE => '模',
+ NS_TEMPLATE_TALK => '模傾åˆ',
+ NS_HELP => '幫手',
+ NS_HELP_TALK => '幫手傾åˆ',
+ NS_CATEGORY => '分類',
+ NS_CATEGORY_TALK => '分類傾åˆ',
);
$namespaceAliases = array(
- "媒體" => NS_MEDIA,
"媒体" => NS_MEDIA,
- "特別" => NS_SPECIAL,
"特殊" => NS_SPECIAL,
"å°è©±" => NS_TALK,
"对è¯" => NS_TALK,
"討論" => NS_TALK,
"讨论" => NS_TALK,
- "用戶" => NS_USER,
"用户" => NS_USER,
"用戶 å°è©±" => NS_USER_TALK,
"用户 对è¯" => NS_USER_TALK,
@@ -109,10 +67,8 @@ $namespaceAliases = array(
"图 讨论" => NS_FILE_TALK,
"åœ–åƒ è¨Žè«–" => NS_FILE_TALK,
"å›¾åƒ è®¨è®º" => NS_FILE_TALK,
- "模" => NS_TEMPLATE,
"模 討論" => NS_TEMPLATE_TALK,
"模 讨论" => NS_TEMPLATE_TALK,
- "幫手" => NS_HELP,
"幫助" => NS_HELP,
"說明" => NS_HELP,
"帮手" => NS_HELP,
@@ -125,7 +81,6 @@ $namespaceAliases = array(
"帮助 讨论" => NS_HELP_TALK,
"说明 讨论" => NS_HELP_TALK,
"é¡ž" => NS_CATEGORY,
- "分類" => NS_CATEGORY,
"ç±»" => NS_CATEGORY,
"分类" => NS_CATEGORY,
"類 討論" => NS_CATEGORY_TALK,
@@ -134,14 +89,145 @@ $namespaceAliases = array(
"分类 讨论" => NS_CATEGORY_TALK,
);
-$linkTrail = '/^([a-z]+)(.*)$/sD';
+$specialPageAliases = array(
+ 'Activeusers' => array( 'æ´»èºç”¨æˆ¶åå–®' ),
+ 'Allmessages' => array( '系統信æ¯' ),
+ 'Allpages' => array( '所有é ' ),
+ 'Ancientpages' => array( '舊版' ),
+ 'Blankpage' => array( '空版' ),
+ 'Block' => array( 'å°' ),
+ 'Blockme' => array( 'å°æˆ‘' ),
+ 'Booksources' => array( '書本來æº' ),
+ 'BrokenRedirects' => array( 'æ–·éˆ' ),
+ 'Categories' => array( '分類' ),
+ 'ChangePassword' => array( '改密碼' ),
+ 'ComparePages' => array( '比較é é¢' ),
+ 'Confirmemail' => array( '確èªé›»éƒµ' ),
+ 'Contributions' => array( 'è²¢ç»' ),
+ 'CreateAccount' => array( '開戶' ),
+ 'Deadendpages' => array( '掘頭é ' ),
+ 'DeletedContributions' => array( '刪咗嘅貢ç»' ),
+ 'Disambiguations' => array( 'æžæ¸…楚é ' ),
+ 'DoubleRedirects' => array( 'é›™é‡è·³è½‰' ),
+ 'EditWatchlist' => array( '改監視清單' ),
+ 'Emailuser' => array( '電郵用戶' ),
+ 'Export' => array( '匯出' ),
+ 'Fewestrevisions' => array( '最少修訂版本' ),
+ 'FileDuplicateSearch' => array( 'æµé‡è¤‡æ–‡ä»¶' ),
+ 'Filepath' => array( '檔案路徑' ),
+ 'Import' => array( '匯入' ),
+ 'Invalidateemail' => array( '錯電郵' ),
+ 'BlockList' => array( 'å°å’—嘅列表' ),
+ 'LinkSearch' => array( 'æµé€£çµ' ),
+ 'Listadmins' => array( '管ç†å“¡åˆ—表' ),
+ 'Listbots' => array( '機械人列表' ),
+ 'Listfiles' => array( '檔案列表' ),
+ 'Listgrouprights' => array( '用戶組權é™' ),
+ 'Listredirects' => array( 'é‡å®šå‘列表' ),
+ 'Listusers' => array( '用戶列表' ),
+ 'Lockdb' => array( '鎖資料庫' ),
+ 'Log' => array( '日誌' ),
+ 'Lonelypages' => array( 'ç„¡éˆé é¢' ),
+ 'Longpages' => array( 'é•·é ' ),
+ 'MergeHistory' => array( 'åˆä½µæ­·å²' ),
+ 'MIMEsearch' => array( 'MIMEæœç´¢' ),
+ 'Mostcategories' => array( '最多分類' ),
+ 'Mostimages' => array( '最多éˆå˜…檔案' ),
+ 'Mostlinked' => array( '最多éˆå˜…é ' ),
+ 'Mostlinkedcategories' => array( '最多éˆå˜…分類' ),
+ 'Mostlinkedtemplates' => array( '最多éˆå˜…模' ),
+ 'Mostrevisions' => array( '最多版本' ),
+ 'Movepage' => array( 'æ¬é ' ),
+ 'Mycontributions' => array( '我嘅貢ç»' ),
+ 'Mypage' => array( '我嘅é é¢' ),
+ 'Mytalk' => array( '我嘅傾åˆ' ),
+ 'Myuploads' => array( '我嘅上傳' ),
+ 'Newimages' => array( '新文件' ),
+ 'Newpages' => array( '新版' ),
+ 'PasswordReset' => array( 'é‡è¨­å¯†ç¢¼' ),
+ 'PermanentLink' => array( '永久éˆ' ),
+ 'Popularpages' => array( '最歡迎é ' ),
+ 'Preferences' => array( '喜好設定' ),
+ 'Prefixindex' => array( '全部é å˜…å‰ç¶´' ),
+ 'Protectedpages' => array( 'ä¿è­·é ' ),
+ 'Protectedtitles' => array( 'ä¿è­·å’—嘅標題' ),
+ 'Randompage' => array( '是但一版' ),
+ 'Randomredirect' => array( '是但一個跳轉' ),
+ 'Recentchanges' => array( '最近修改' ),
+ 'Recentchangeslinked' => array( '外éˆä¿®æ”¹' ),
+ 'Revisiondelete' => array( '修訂版本刪除' ),
+ 'RevisionMove' => array( '修訂版本移動' ),
+ 'Search' => array( 'æœç´¢' ),
+ 'Shortpages' => array( '短版' ),
+ 'Specialpages' => array( '特別é ' ),
+ 'Statistics' => array( '統計' ),
+ 'Tags' => array( '標籤' ),
+ 'Unblock' => array( '解å°' ),
+ 'Uncategorizedcategories' => array( '無樓上嘅分類' ),
+ 'Uncategorizedimages' => array( '無分類嘅檔案' ),
+ 'Uncategorizedpages' => array( '無分類嘅é ' ),
+ 'Uncategorizedtemplates' => array( '無分類嘅模' ),
+ 'Undelete' => array( 'å刪除' ),
+ 'Unlockdb' => array( '解鎖資料庫' ),
+ 'Unusedcategories' => array( '未用分類' ),
+ 'Unusedimages' => array( '未用檔案' ),
+ 'Unusedtemplates' => array( '未用模' ),
+ 'Unwatchedpages' => array( '無人監視嘅版' ),
+ 'Upload' => array( '上傳' ),
+ 'Userlogin' => array( '簽到' ),
+ 'Userlogout' => array( '簽走' ),
+ 'Userrights' => array( '用戶權é™' ),
+ 'Version' => array( '版本' ),
+ 'Wantedcategories' => array( 'è¦æ±‚嘅分類' ),
+ 'Wantedfiles' => array( 'è¦æ±‚嘅文件' ),
+ 'Wantedpages' => array( 'è¦æ±‚嘅é é¢' ),
+ 'Wantedtemplates' => array( 'è¦æ±‚嘅模' ),
+ 'Watchlist' => array( '監視清單' ),
+ 'Whatlinkshere' => array( '邊度éˆåŽ»å‘¢ç‰ˆ' ),
+ 'Withoutinterwiki' => array( '無連去其他話嘅版' ),
+);
+
+$bookstoreList = array(
+ 'AddALL' => 'http://www.addall.com/New/Partner.cgi?query=$1&type=ISBN',
+ 'PriceSCAN' => 'http://www.pricescan.com/books/bookDetail.asp?isbn=$1',
+ 'Barnes & Noble' => 'http://search.barnesandnoble.com/bookSearch/isbnInquiry.asp?isbn=$1',
+ '亞馬éœ' => 'http://www.amazon.com/exec/obidos/ISBN=$1',
+ 'åšå®¢ä¾†æ›¸åº—' => 'http://www.books.com.tw/exep/prod/booksfile.php?item=$1',
+ '三民書店' => 'http://www.sanmin.com.tw/page-qsearch.asp?ct=search_isbn&qu=$1',
+ '天下書店' => 'http://www.cwbook.com.tw/search/result1.jsp?field=2&keyWord=$1',
+ '新絲路書店' => 'http://www.silkbook.com/function/Search_list_book_data.asp?item=5&text=$1'
+);
-# -------------------------------------------------------------------
-# Default messages
-# -------------------------------------------------------------------
-# Allowed characters in keys are: A-Z, a-z, 0-9, underscore (_) and
-# hyphen (-). If you need more characters, you may be able to change
-# the regex in MagicWord::initRegex
+$datePreferences = array(
+ 'default',
+ 'yue dmy',
+ 'yue mdy',
+ 'yue ymd',
+ 'ISO 8601',
+);
+
+$defaultDateFormat = 'yue';
+
+$dateFormats = array(
+ 'yue time' => 'H:i',
+ 'yue date' => 'Y年n月j號 (l)',
+ 'yue both' => 'Y年n月j號 (D) H:i',
+
+ 'yue dmy time' => 'H:i',
+ 'yue dmy date' => 'j-n-Y',
+ 'yue dmy both' => 'j-n-Y H:i',
+
+ 'yue mdy time' => 'H:i',
+ 'yue mdy date' => 'n-j-Y',
+ 'yue mdy both' => 'n-j-Y H:i',
+
+ 'yue ymd time' => 'H:i',
+ 'yue ymd date' => 'Y-n-j',
+ 'yue ymd both' => 'Y-n-j H:i',
+);
+
+
+$linkTrail = '/^([a-z]+)(.*)$/sD';
$messages = array(
# User preference toggles
@@ -175,8 +261,8 @@ $messages = array(
'tog-shownumberswatching' => '顯示有幾多人監視',
'tog-oldsig' => '原有簽å嘅é è¦½ï¼š',
'tog-fancysig' => '將簽å以維基字å°å¾…(冇自動連çµï¼‰',
-'tog-externaleditor' => 'é è¨­ç”¨å¤–掛編輯器(高階者專用,需è¦éŸ¿ä½ éƒ¨é›»è…¦åº¦åšä¸€å•²ç‰¹åˆ¥è¨­å®šã€‚[http://www.mediawiki.org/wiki/Manual:External_editors 更多資訊。])',
-'tog-externaldiff' => 'é è¨­ç”¨å¤–掛比較器(高階者專用,需è¦éŸ¿ä½ éƒ¨é›»è…¦åº¦åšä¸€å•²ç‰¹åˆ¥è¨­å®šã€‚[http://www.mediawiki.org/wiki/Manual:External_editors 更多資訊。])',
+'tog-externaleditor' => 'é è¨­ç”¨å¤–掛編輯器(高階者專用,需è¦éŸ¿ä½ éƒ¨é›»è…¦åº¦åšä¸€å•²ç‰¹åˆ¥è¨­å®šã€‚[//www.mediawiki.org/wiki/Manual:External_editors 更多資訊。])',
+'tog-externaldiff' => 'é è¨­ç”¨å¤–掛比較器(高階者專用,需è¦éŸ¿ä½ éƒ¨é›»è…¦åº¦åšä¸€å•²ç‰¹åˆ¥è¨­å®šã€‚[//www.mediawiki.org/wiki/Manual:External_editors 更多資訊。])',
'tog-showjumplinks' => '啟用 "跳至" å”助連çµ',
'tog-uselivepreview' => '用å³æ™‚é è¦½ï¼ˆéœ€è¦JavaScript)(實驗緊)',
'tog-forceeditsummary' => '我冇入修改註解時通知我',
@@ -274,14 +360,6 @@ $messages = array(
'index-category' => 'åšå’—索引嘅版',
'noindex-category' => '未åšç´¢å¼•å˜…版',
-'mainpagetext' => "'''MediaWiki已經è£å¥½ã€‚'''",
-'mainpagedocfooter' => 'åƒé–±[http://meta.wikimedia.org/wiki/Help:Contents 用戶指引](英),è£é¢æœ‰è³‡æ–™è¬›é»žç”¨wiki軟件。
-
-==開始使用==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings é…置設定清單](英)
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常見å•é¡Œ](英)
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件åå–®](英)',
-
'about' => '關於',
'article' => '內容é ',
'newwindow' => '(響新視窗度打開)',
@@ -332,10 +410,10 @@ $messages = array(
'history' => '版å²',
'history_short' => 'æ­·å²',
'updatedmarker' => '我上次來之後嘅修改',
-'info_short' => '資訊',
'printableversion' => 'å¯æ‰“å°ç‰ˆæœ¬',
'permalink' => '永久連çµ',
'print' => 'å°',
+'view' => '去ç‡',
'edit' => '改',
'create' => '建立',
'editthispage' => '編輯呢é ',
@@ -343,6 +421,7 @@ $messages = array(
'delete' => '刪除',
'deletethispage' => '刪除呢é ',
'undelete_short' => 'å刪除$1次修改',
+'viewdeleted_short' => '去ç‡$1次刪除咗嘅修改',
'protect' => 'ä¿è­·',
'protect_change' => '改',
'protectthispage' => 'ä¿è­·å‘¢é ',
@@ -426,6 +505,8 @@ $1',
'toc' => '目錄',
'showtoc' => '展開',
'hidetoc' => '收埋',
+'collapsible-collapse' => '摺埋',
+'collapsible-expand' => '展開',
'thisisdeleted' => 'ç‡ä¸‹å®šä¿‚還原$1?',
'viewdeleted' => '去ç‡$1?',
'restorelink' => '$1次已刪除嘅編輯',
@@ -519,11 +600,10 @@ $1',
'protectedpagetext' => '呢一é å·²ç¶“ä¿è­·å’—唔畀改。',
'viewsourcetext' => 'ä½ å¯ä»¥ç‡å“或者複製呢一é å˜…原始碼:',
'protectedinterface' => '呢一é æ供軟件嘅介é¢æ–‡å­—,呢一é å·²ç¶“ä¿è­·å’—以é é˜²æ¿«ç”¨ã€‚',
-'editinginterface' => "'''警告:'''你而家編輯緊嘅呢一個用嚟æ供介é¢æ–‡å­—嘅é é¢ã€‚響呢一é å˜…更改會影響到其他用戶使用中嘅介é¢å¤–觀。è¦ç¿»è­¯ï¼Œè«‹è€ƒæ…®åˆ©ç”¨[http://translatewiki.net/wiki/Main_Page?setlang=yue translatewiki.net],一個用來為MediaWiki軟件本地化嘅計劃。",
+'editinginterface' => "'''警告:'''你而家編輯緊嘅呢一個用嚟æ供介é¢æ–‡å­—嘅é é¢ã€‚響呢一é å˜…更改會影響到其他用戶使用中嘅介é¢å¤–觀。è¦ç¿»è­¯ï¼Œè«‹è€ƒæ…®åˆ©ç”¨[//translatewiki.net/wiki/Main_Page?setlang=yue translatewiki.net],一個用來為MediaWiki軟件本地化嘅計劃。",
'sqlhidden' => '(SQL 查詢隱è—)',
'cascadeprotected' => '呢一版已經ä¿è­·å’—唔能夠編輯,因為佢係響以下嘅{{PLURAL:$1|一|å¹¾}}é åº¦åŒ…å«å’—,當中啟用咗"連串"ä¿è­·é¸é …來ä¿è­·å—°ä¸€ç‰ˆ: $2',
'namespaceprotected' => "你無權編輯響'''$1'''空間åè£é¢å˜…呢一版。",
-'customcssjsprotected' => '你無權編輯呢一版,因為佢包å«å’—å¦ä¸€ä½ç”¨æˆ¶å˜…個人設定。',
'ns-specialprotected' => '特別é ä¿‚å””å¯ä»¥ç·¨è¼¯å˜…。',
'titleprotected' => "呢個標題已經俾[[User:$1|$1]]ä¿è­·å’—防止去開。原因係''$2''。",
@@ -568,13 +648,15 @@ $1',
'createaccounterror' => '開唔到戶å£ï¼š$1',
'nocookiesnew' => '已經開咗戶å£ï¼Œä½†ä½ æœªç™»å…¥ã€‚ {{SITENAME}} è¦ç”¨ cookies 嚟登入。你已經熄咗佢。請你開咗å†è©¦ã€‚',
'nocookieslogin' => '{{SITENAME}} 登入è¦é–‹ cookies。熄咗佢。請你開咗å†è©¦ã€‚',
+'nocookiesfornew' => 'å‘¢ä½ç”¨æˆ¶å˜…戶開未開,我哋唔能夠確èªä½¢å˜…來æºã€‚
+請肯定你已經開咗 cookies,é‡æ–°è¼‰å…¥å†è©¦ã€‚',
'noname' => '你未指定一個有效嘅用戶å。',
'loginsuccesstitle' => '登入æˆåŠŸ',
'loginsuccess' => "'''「$1ã€ç™»å…¥å’—{{SITENAME}}。'''",
'nosuchuser' => '呢度冇å«åš "$1"嘅用戶。
用戶å係有分大細楷嘅。
請檢查你個å嘅輸入方法,或者[[Special:UserLogin/signup|建立一個新嘅戶å£]]。',
-'nosuchusershort' => '呢度冇å«åš "<nowiki>$1</nowiki>"嘅用戶。 請檢查你個å嘅輸入方法。',
+'nosuchusershort' => '呢度冇å«åš "$1"嘅用戶。 請檢查你個å嘅輸入方法。',
'nouserspecified' => '你需è¦æŒ‡å®šä¸€å€‹ç”¨æˆ¶å。',
'login-userblocked' => 'å‘¢ä½ç”¨æˆ¶å°éŽ–咗。唔容許登入。',
'wrongpassword' => '密碼唔啱,麻煩你å†è©¦å¤šæ¬¡ã€‚',
@@ -621,7 +703,7 @@ $1',
# E-mail sending
'php-mail-error-unknown' => '響 PHP 嘅 mail() åƒæ•¸åº¦å‡ºç¾å’—未知嘅錯誤',
-# Password reset dialog
+# Change password dialog
'resetpass' => '改密碼',
'resetpass_announce' => '你已經用咗一個臨時電郵碼登入。è¦å®Œæˆç™»å…¥ï¼Œä½ ä¸€å®šè¦éŸ¿å‘¢åº¦å®šä¸€å€‹æ–°å˜…密碼:',
'resetpass_text' => '<!-- 響呢度加入文字 -->',
@@ -640,6 +722,10 @@ $1',
ä½ å¯èƒ½å·²ç¶“æˆåŠŸå’更改你嘅密碼,åˆæˆ–者é‡æ–°è«‹æ±‚éŽä¸€å€‹æ–°å˜…臨時密碼。',
'resetpass-temp-password' => '臨時密碼:',
+# Special:PasswordReset
+'passwordreset' => '密碼é‡è¨­',
+'passwordreset-username' => '用戶å',
+
# Edit page toolbar
'bold_sample' => '粗體字',
'bold_tip' => '粗體字',
@@ -651,8 +737,6 @@ $1',
'extlink_tip' => '連出去(記ä½åŠ  http:// 開頭)',
'headline_sample' => '標題文字',
'headline_tip' => '二級標題',
-'math_sample' => '喺呢度æ’入方程å¼',
-'math_tip' => '數學方程(LaTeX)',
'nowiki_sample' => '喺呢度æ’å…¥éžæ ¼å¼ä»£æ–‡å­—',
'nowiki_tip' => 'å””ç† wiki æ ¼å¼',
'image_tip' => '嵌入檔案',
@@ -730,7 +814,7 @@ $1',
或者[{{fullurl:{{FULLPAGENAME}}|action=edit}} 編輯呢一版]</span>。',
'noarticletext-nopermission' => '喺呢一é è€Œå®¶ä¸¦å†‡ä»»ä½•å˜…文字,你å¯ä»¥å–ºå…¶å®ƒå˜…é é¢ä¸­[[Special:Search/{{PAGENAME}}|æµå‘¢ä¸€é å˜…標題]],
或者<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} æµæœ‰é—œå˜…日誌]</span>。',
-'userpage-userdoesnotexist' => '用戶戶å£"$1"é‡æœªé–‹ã€‚請響䦒ï¼ç·¨è¼¯å‘¢ç‰ˆä¹‹å‰å…ˆæª¢æŸ¥ä¸€ä¸‹ã€‚',
+'userpage-userdoesnotexist' => '用戶戶å£"<nowiki>$1</nowiki>"é‡æœªé–‹ã€‚請響䦒ï¼ç·¨è¼¯å‘¢ç‰ˆä¹‹å‰å…ˆæª¢æŸ¥ä¸€ä¸‹ã€‚',
'userpage-userdoesnotexist-view' => '用戶戶å£"$1"é‡æœªé–‹ã€‚',
'blocked-notice-logextract' => 'å‘¢ä½ç”¨æˆ¶è€Œå®¶è¢«å°éŽ–緊。
下é¢æœ‰æœ€è¿‘嘅å°éŽ–紀錄以供åƒè€ƒï¼š',
@@ -764,6 +848,7 @@ $1',
'''如果呢個係正當嘅編輯嘗試,請å†è©¦éŽã€‚'''如果é‡ä¿‚唔得嘅話,請先[[Special:UserLogout|登出]]然後å†ç™»å…¥ã€‚",
'token_suffix_mismatch' => "'''因為你嘅用戶端度嘅編輯幣整壞咗一啲標點符號字元,你嘅編輯已經拒絕咗。'''個編輯已經拒絕,以防止嗰版嘅文字æ毀。
當你響度用緊一啲好多臭蟲,以網絡為主嘅匿å代ç†æœå‹™ã€‚",
+'edit_form_incomplete' => "'''編輯表格嘅æŸå€‹éƒ¨ä»½åŒserver唔夾,請檢查多次你嘅編輯åŒåŸ‹å†è©¦å¤šæ¬¡ã€‚'''",
'editing' => '而家喺度編輯$1',
'editingsection' => '而家喺度編輯$1 (å°ç¯€ï¼‰',
'editingcomment' => '而家喺度編輯$1 (新å°ç¯€ï¼‰',
@@ -1118,9 +1203,10 @@ $1",
'changepassword' => '改密碼',
'prefs-skin' => 'ç•«é¢',
'skin-preview' => 'é è¦½',
-'prefs-math' => '數',
'datedefault' => '冇喜好',
+'prefs-beta' => '試緊嘅特色',
'prefs-datetime' => '日期åŒåŸ‹æ™‚é–“',
+'prefs-labs' => '實驗性嘅特色',
'prefs-personal' => '用戶簡介',
'prefs-rc' => '最近更改',
'prefs-watchlist' => '監視清單',
@@ -1142,8 +1228,6 @@ $1",
'columns' => '行:',
'searchresultshead' => 'æµå˜¢',
'resultsperpage' => 'æ¯é é¡¯ç¤ºå˜…擊中數:',
-'contextlines' => 'æ¯ä¸€æ“Šé¡¯ç¤ºå˜…行數:',
-'contextchars' => 'æ¯ä¸€è¡Œå˜…字數:',
'stub-threshold' => '<a href="#" class="stub">楔ä½é€£çµ</a>æ ¼å¼é–€æª» (bytes):',
'stub-threshold-disabled' => 'é–‚å’—',
'recentchangesdays' => '最近更改中嘅顯示日數:',
@@ -1204,7 +1288,8 @@ $1",
'email' => '電郵',
'prefs-help-realname' => '真åå¯ä»¥å””填。
如果你畀埋佢,有需è¦å˜…時候會用佢來標示你嘅工夫。',
-'prefs-help-email' => '電郵地å€å¯ä»¥å””填,但當你唔記得咗你個密碼嗰陣需è¦åˆ©ç”¨é›»éƒµåœ°å€å°‡æ–°å¯†ç¢¼é‡è¨­å¯„番畀你。亦å¯ä»¥éŸ¿äººå“‹å””知你電郵地å€å˜…情æ³ä¹‹ä¸‹éƒ½å¯ä»¥è¯çµ¡ä½ ã€‚',
+'prefs-help-email' => '電郵地å€å¯ä»¥å””填,但當你唔記得咗你個密碼嗰陣需è¦åˆ©ç”¨é›»éƒµåœ°å€å°‡æ–°å¯†ç¢¼é‡è¨­å¯„番畀你。',
+'prefs-help-email-others' => '亦å¯ä»¥éŸ¿äººå“‹å””知你電郵地å€å˜…情æ³ä¹‹ä¸‹éƒ½å¯ä»¥è¯çµ¡ä½ ã€‚',
'prefs-help-email-required' => '需è¦é›»éƒµåœ°å€ã€‚',
'prefs-info' => '基本資料',
'prefs-i18n' => '國際化',
@@ -1329,7 +1414,6 @@ $1",
'right-userrights' => '編輯全部用戶嘅權é™',
'right-userrights-interwiki' => '編輯響其它wiki嘅用戶權é™',
'right-siteadmin' => '鎖åŒè§£éŽ–資料庫',
-'right-reset-passwords' => 'é‡è¨­å…¶ä»–用戶嘅密碼',
'right-override-export-depth' => '倒出包å«æœ‰äº”層深連版嘅é é¢',
'right-sendemail' => '寄電郵畀其他用戶',
@@ -1459,13 +1543,13 @@ $1",
'minlength1' => '檔å必須最少è¦æœ‰ä¸€å€‹å­—。',
'illegalfilename' => '檔å「$1ã€å«æœ‰é é¢æ¨™é¡Œæ‰€å””å…許嘅字。請試下改檔åå†ä¸Šè¼‰ã€‚',
'badfilename' => '檔å已經更改æˆã€Œ$1ã€ã€‚',
-'filetype-mime-mismatch' => '檔案擴展åå””æ­MIME類型。',
+'filetype-mime-mismatch' => '檔案擴展å ".$1" å””æ­åµæ¸¬åˆ°æª”案嘅MIMEé¡žåž‹ ($2)。',
'filetype-badmime' => '「$1ã€å˜…MIME類型檔案係唔容許上載嘅。',
'filetype-bad-ie-mime' => 'å””å¯ä»¥ä¸Šè¼‰å‘¢å€‹æª”案,因為 Internet Explorer 會將佢åµæ¸¬åš "$1",佢係一種唔容許åŒåŸ‹æœ‰æ½›åœ¨å±éšªæ€§å˜…檔案類型。',
'filetype-unwanted-type' => "'''\".\$1\"'''係一種唔需è¦å˜…檔案類型。
建議嘅{{PLURAL:\$3|一種|多種}}檔案類型有\$2。",
-'filetype-banned-type' => "'''\".\$1\"'''係一種唔准許嘅檔案類型。
-容許嘅{{PLURAL:\$3|一種|多種}}檔案類型有\$2。",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\'係{{PLURAL:$4|一種|多種}}唔准許嘅檔案類型。
+容許嘅{{PLURAL:$3|一種|多種}}檔案類型有$2。',
'filetype-missing' => '個檔å並冇副檔å(好以「.jpgã€ï¼‰ã€‚',
'empty-file' => '你所éžäº¤å˜…檔案係空嘅。',
'file-too-large' => '你所éžäº¤å˜…檔案太大。',
@@ -1511,6 +1595,8 @@ $1",
'uploadscripted' => '呢個檔案包å«å¯èƒ½æœƒèª¤è¢«ç€è¦½å™¨è§£é‡‹åŸ·è¡Œå˜… HTML 或 script 代碼。',
'uploadvirus' => '呢個檔案有病毒ï¼
詳情:$1',
+'uploadjava' => '呢個係個ZIP檔案包括Java .class檔案。
+因為ä¿å®‰å•é¡Œï¼Œä¸Šå‚³Java檔案係ç¦æ­¢å·¦å˜…。',
'upload-source' => '來æºæª”案',
'sourcefilename' => '來æºæª”å:',
'sourceurl' => '來æºç¶²å€:',
@@ -1520,10 +1606,6 @@ $1",
'upload-options' => '上載é¸é …',
'watchthisupload' => '監視呢個檔案',
'filewasdeleted' => '呢個檔案所使用嘅å曾經上載後,跟ä½å°±åˆªé™¤å’—。你應該響é‡æ–°ä¸Šè¼‰ä½¢ä¹‹å‰æª¢æŸ¥å“$1。',
-'upload-wasdeleted' => "'''警告: 你而家上載嘅一個檔案係先å‰æ›¾ç¶“刪除éŽå˜…。'''
-
-你應該è¦è€ƒæ…®å“繼續上載呢個檔案係唔係é©åˆå˜…。
-為咗方便起見,呢個檔案嘅刪除記錄已經響下é¢æä¾›:",
'filename-bad-prefix' => "你上載嘅檔å係以'''\"\$1\"'''åšé–‹é ­ï¼Œé€šå¸¸å‘¢ç¨®ç„¡å«æ„嘅檔å係響數碼相機度自動編排。請響你個檔案度æ€éŽä¸€å€‹æ›´åŠ æœ‰æ„義嘅檔å。",
'upload-success-subj' => 'æˆåŠŸå˜…上載',
'upload-success-msg' => '你響[$2]嘅上載已經æˆåŠŸï¼Œå¯ä»¥å–ºå‘¢åº¦æµåˆ°ï¼š[[:{{ns:file}}:$1]]。',
@@ -1544,6 +1626,23 @@ $1',
'upload-unknown-size' => '未知嘅大細',
'upload-http-error' => '一個HTTP錯誤發生咗: $1',
+# ZipDirectoryReader
+'zip-file-open-error' => '在開啟檔案進行ZIP檢查時出錯。',
+'zip-wrong-format' => '呢個唔係一個ZIP檔案。',
+'zip-bad' => '呢個係ä¸å¯è®€å˜…ZIP檔案。
+因為呢個原因,唔å¯ä»¥é€²è¡Œä¿å®‰æª¢æŸ¥ã€‚',
+'zip-unsupported' => '呢個ZIP檔案嘅功能,MediaWiki唔支æŒã€‚
+因為呢個原因,åšå””到ä¿å®‰æª¢æŸ¥ã€‚',
+
+# Special:UploadStash
+'uploadstash' => '上載貯è—',
+'uploadstash-summary' => '呢一版æ供已經上載咗(或者上載緊)但係é‡æœªç™¼ä½ˆåˆ°wiki嘅檔案存å–。呢啲檔案除咗係上載佢哋嘅用戶之外其他人都會ç‡å””到。',
+'uploadstash-clear' => '清除貯è—檔案',
+'uploadstash-nofiles' => '你冇貯è—咗嘅檔案。',
+'uploadstash-badtoken' => '進行呢個動作唔æˆåŠŸï¼Œæˆ–者你嘅編輯資訊已經éŽå’—期。å†è©¦å“喇。',
+'uploadstash-errclear' => '清除檔案唔æˆåŠŸã€‚',
+'uploadstash-refresh' => '更新檔案清單',
+
# img_auth script messages
'img-auth-accessdenied' => '拒絕通行',
'img-auth-nopathinfo' => 'PATH_INFO唔見咗。
@@ -1624,7 +1723,6 @@ $1',
一個[[Special:WhatLinksHere/$2|完整嘅表]]å¯ä»¥æ供。',
'nolinkstoimage' => '冇個é é¢é€£çµåˆ°å‘¢å€‹æª”案。',
'morelinkstoimage' => '去ç‡é€£åˆ°å‘¢å€‹æª”案嘅[[Special:WhatLinksHere/$1|更多連çµ]]。',
-'redirectstofile' => '下é¢å˜…$1個檔案跳轉到呢個檔案:',
'duplicatesoffile' => '下é¢å˜…$1個檔案係åŒå‘¢å€‹æª”案é‡è¦† ([[Special:FileDuplicateSearch/$2|更多細節]]):',
'sharedupload' => '呢個檔案係出自$1,å¯ä»¥å–ºå…¶ä»–計劃中使用。',
'sharedupload-desc-there' => '呢個檔案係出自$1,å¯ä»¥å–ºå…¶ä»–計劃中使用。
@@ -1718,11 +1816,12 @@ $1',
Template:æžæ¸…楚',
'disambiguations-text' => "以下呢啲é é¢é€£çµåŽ»ä¸€å€‹'''æžæ¸…楚é '''。佢哋先至應該指去正確嘅主題。<br />如果一個é é¢é€£çµè‡ª[[MediaWiki:Disambiguationspage]],噉就會當佢係æžæ¸…楚é ã€‚",
-'doubleredirects' => 'é›™é‡è·³è½‰',
-'doubleredirectstext' => 'æ¯ä¸€è¡Œéƒ½é †æ¬¡åºå¯«ä½ç¬¬ä¸€é å,佢嘅目的é ï¼ŒåŒåŸ‹ç›®çš„é å†æŒ‡åŽ»é‚Šåº¦ã€‚改嘅時候,應該將第一個跳轉é è½‰å…¥ç¬¬ä¸‰é ã€‚
+'doubleredirects' => 'é›™é‡è·³è½‰',
+'doubleredirectstext' => 'æ¯ä¸€è¡Œéƒ½é †æ¬¡åºå¯«ä½ç¬¬ä¸€é å,佢嘅目的é ï¼ŒåŒåŸ‹ç›®çš„é å†æŒ‡åŽ»é‚Šåº¦ã€‚改嘅時候,應該將第一個跳轉é è½‰å…¥ç¬¬ä¸‰é ã€‚
<del>劃咗</del>嘅項目係已經解決咗嘅。',
-'double-redirect-fixed-move' => '[[$1]]已經æ¬å¥½å’—,佢而家跳轉éŽåŽ»[[$2]]。',
-'double-redirect-fixer' => '跳轉修正器',
+'double-redirect-fixed-move' => '[[$1]]已經æ¬å¥½å’—,佢而家跳轉éŽåŽ»[[$2]]。',
+'double-redirect-fixed-maintenance' => '修復[[$1]]嘅é‡å®šå‘到[[$2]]。',
+'double-redirect-fixer' => '跳轉修正器',
'brokenredirects' => '破碎嘅跳轉',
'brokenredirectstext' => '以下嘅跳轉係指å‘唔存在嘅é é¢:',
@@ -1799,6 +1898,7 @@ Template:æžæ¸…楚',
'pager-newer-n' => '新$1次',
'pager-older-n' => '舊$1次',
'suppress' => '監ç£',
+'querypage-disabled' => '呢個特別版基於效能嘅原因åœç”¨å’—。',
# Book sources
'booksources' => '書ç±ä¾†æº',
@@ -1938,10 +2038,8 @@ Template:æžæ¸…楚',
'watchlistanontext' => 'è«‹å…ˆ$1去ç‡æˆ–者改響你監視清單度嘅項目。',
'watchnologin' => '未登入',
'watchnologintext' => '你必須先[[Special:UserLogin|登入]]至å¯ä»¥æ›´æ”¹ä½ å˜…監視清單。',
-'addedwatch' => '加到監視清單度',
'addedwatchtext' => "é é¢ã€Œ[[:$1]]ã€å·²åŠ å…¥åˆ°ä½ å˜…[[Special:Watchlist|監視清單]]度。
呢個é é¢ä»¥åŠä½¢å€‹è¨Žè«–é ä»¥å¾Œå˜…修改都會列喺嗰度,佢喺[[Special:RecentChanges|最近更改清單]]度會以'''ç²—é«”'''顯示,等你å¯ä»¥å®¹æ˜“啲ç‡åˆ°ä½¢ã€‚",
-'removedwatch' => '已經由監視清單中刪除',
'removedwatchtext' => 'é é¢ã€Œ[[:$1]]ã€å·²ç¶“å–º[[Special:Watchlist|你嘅監視清單]]度刪除。',
'watch' => '監視',
'watchthispage' => '監視呢é ',
@@ -1992,12 +2090,12 @@ wiki: $PAGEEDITOR_WIKI
{{SITENAME}}通知系統
--
-è¦ä¿®æ”¹ä½ å˜…監視清單設定,請ç‡{{fullurl:{{#special:Watchlist}}/edit}}
+è¦ä¿®æ”¹ä½ å˜…監視清單設定,請ç‡{{canonicalurl:{{#special:EditWatchlist}}}}
è¦åˆªé™¤ä½ å˜…監視清單度嘅呢一版,請ç‡$UNWATCHURL
回饋åŠæ›´å¤šå¹«åŠ©ï¼š
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => '刪除é é¢',
@@ -2013,7 +2111,7 @@ wiki: $PAGEEDITOR_WIKI
請確èªä½ æ‰“算噉åšï¼Œè€Œä¸”你知é“後果係點,加上確èªä½ å™‰åšå†‡é•å到[[{{MediaWiki:Policy-url}}]]。',
'actioncomplete' => 'æ“作完æˆ',
'actionfailed' => 'æ“作失敗',
-'deletedtext' => '"<nowiki>$1</nowiki>"已經刪除。最近嘅刪除記錄請ç‡$2。',
+'deletedtext' => '"$1"已經刪除。最近嘅刪除記錄請ç‡$2。',
'deletedarticle' => '已經刪除"[[$1]]"',
'suppressedarticle' => '已經廢止"[[$1]]"',
'dellogpage' => '刪除日誌',
@@ -2066,7 +2164,7 @@ wiki: $PAGEEDITOR_WIKI
'protect_expiry_invalid' => '到期時間唔正確。',
'protect_expiry_old' => '到期時間係響之å‰éŽåŽ»å˜…。',
'protect-unchain-permissions' => '解除更多嘅ä¿è­·é¸é …',
-'protect-text' => "ä½ å¯ä»¥å–ºå‘¢åº¦ç‡åˆ°åŒä¿®æ”¹é é¢'''<nowiki>$1</nowiki>'''嘅ä¿è­·ç­‰ç´šã€‚",
+'protect-text' => "ä½ å¯ä»¥å–ºå‘¢åº¦ç‡åˆ°åŒä¿®æ”¹é é¢'''$1'''嘅ä¿è­·ç­‰ç´šã€‚",
'protect-locked-blocked' => "當你響被å°éŽ–嗰陣唔å¯ä»¥æ”¹å‘¢ç‰ˆå˜…ä¿è­·ç­‰ç´šã€‚
呢個係'''$1'''版嘅ç¾æ™‚設定:",
'protect-locked-dblock' => "響資料庫主動鎖ä½å’—嗰陣係唔å¯ä»¥æ”¹å‘¢ç‰ˆå˜…ä¿è­·ç­‰ç´šã€‚
@@ -2218,7 +2316,6 @@ $1',
'blockiptext' => '使用以下嘅表格嚟去阻止指定嘅IP地å€æˆ–用戶å嘅寫權é™ã€‚
僅當僅當為咗é¿å…有版畀人惡æ„破壞嘅時候先å¯ä»¥ä½¿ç”¨ï¼Œè€Œä¸”å””å¯ä»¥é•å[[{{MediaWiki:Policy-url}}|政策]]。
喺下é¢å¡«å¯«é˜»æ­¢å˜…確切原因(比如:引用咗æŸå•²å·²ç¶“破壞咗嘅é é¢ï¼‰ã€‚',
-'ipaddress' => 'IP地å€:',
'ipadressorusername' => 'IP地å€æˆ–用戶å:',
'ipbexpiry' => '期é™:',
'ipbreason' => '原因:',
@@ -2231,7 +2328,6 @@ $1',
** 嚇人ï¼é¨·æ“¾
** 濫用多個戶å£
** 唔能夠接å—嘅用戶å',
-'ipbanononly' => 'åªä¿‚å°éŽ–匿å用戶',
'ipbcreateaccount' => '防止開新戶å£',
'ipbemailban' => '防止用戶傳é€é›»éƒµ',
'ipbenableautoblock' => '自動å°éŽ–呢個用戶上次用éŽå˜…IP地å€ï¼ŒåŒåŸ‹ä½¢åœ°åšéŽç·¨è¼¯å˜…IP地å€',
@@ -2242,7 +2338,6 @@ $1',
'ipbotherreason' => '其它ï¼é™„加嘅原因:',
'ipbhidename' => '響編輯åŒå單度隱è—用戶å',
'ipbwatchuser' => '監視呢ä½ç”¨æˆ¶å˜…用戶é åŒåŸ‹ä½¢å˜…討論é ',
-'ipballowusertalk' => '當被å°éŽ–嗰陣容許呢ä½ç”¨æˆ¶åŽ»ç·¨è¼¯è‡ªå·±å˜…討論版',
'ipb-change-block' => '用呢啲設定é‡æ–°å°éŽ–用戶',
'badipaddress' => '無效嘅IP地å€',
'blockipsuccesssub' => 'å°éŽ–æˆåŠŸ',
@@ -2260,14 +2355,9 @@ $1',
'unblocked-id' => '$1嘅å°éŽ–已經拎走咗',
'ipblocklist' => 'IP地å€åŒç”¨æˆ¶å阻止åå–®',
'ipblocklist-legend' => 'æµä¸€ä½å°å’—嘅用戶',
-'ipblocklist-username' => '用戶å或IP地å€:',
-'ipblocklist-sh-userblocks' => '$1戶å£å°éŽ–',
-'ipblocklist-sh-tempblocks' => '$1暫時å°éŽ–',
-'ipblocklist-sh-addressblocks' => '$1å–®IPå°éŽ–',
'ipblocklist-submit' => 'æµ',
'ipblocklist-localblock' => '本地å°éŽ–',
'ipblocklist-otherblocks' => '其他{{PLURAL:$1|å°éŽ–|å°éŽ–}}',
-'blocklistline' => '$1,$2已經å°éŽ–å’—$3($4)',
'infiniteblock' => 'ä¸è¨­æœŸé™',
'expiringblock' => '$1 $2 期滿',
'anononlyblock' => 'åªé™åŒ¿å',
@@ -2287,7 +2377,7 @@ $1',
'blocklog-showsuppresslog' => 'å‘¢ä½ç”¨æˆ¶å·²ç¶“響之å‰è¢«å°éŽ–åŒéš±è—éŽã€‚響下é¢æ供咗廢止紀錄以便åƒè€ƒï¼š',
'blocklogentry' => 'å·²å°éŽ–[[$1]],到期時間為$2 $3',
'reblock-logentry' => '已改[[$1]]嘅å°éŽ–設定,到期時間為$2 $3',
-'blocklogtext' => '呢個係å°éŽ–åŒåŸ‹è§£å°å‹•ä½œå˜…日誌。自動å°éŽ–IP地å€å˜…動作冇列出嚟。去[[Special:IPBlockList|IPå°éŽ–åå–®]]ç‡ç¾æ™‚生效嘅å°éŽ–åå–®',
+'blocklogtext' => '呢個係å°éŽ–åŒåŸ‹è§£å°å‹•ä½œå˜…日誌。自動å°éŽ–IP地å€å˜…動作冇列出嚟。去[[Special:BlockList|IPå°éŽ–åå–®]]ç‡ç¾æ™‚生效嘅å°éŽ–åå–®',
'unblocklogentry' => '已經解å°$1',
'block-log-flags-anononly' => 'åªé™åŒ¿å用戶',
'block-log-flags-nocreate' => 'åœç”¨é–‹æ–°æˆ¶å£',
@@ -2301,8 +2391,7 @@ $1',
'ipb_expiry_temp' => 'éš±è—用戶åå°éŽ–定一定係è¦æ°¸ä¹…性嘅。',
'ipb_hide_invalid' => '唔能夠壓止呢個戶å£ï¼›ä½¢å¯èƒ½æœ‰å¤ªå¤šç·¨è¼¯ã€‚',
'ipb_already_blocked' => '"$1"已經å°éŽ–å’—',
-'ipb-needreblock' => '== 已經å°éŽ–å’— ==
-$1已經被å°éŽ–。你係咪想更改呢個設定?',
+'ipb-needreblock' => '$1已經被å°éŽ–。你係咪想更改呢個設定?',
'ipb-otherblocks-header' => '其他{{PLURAL:$1|å°éŽ–|å°éŽ–}}',
'ipb_cant_unblock' => '錯誤:æµå””到å°éŽ–ID$1。å¯èƒ½å·²ç¶“解å°å’—。',
'ipb_blocked_as_range' => '錯誤:個IP $1 無直接å°éŽ–,唔å¯ä»¥è§£å°ã€‚但係佢係響 $2 嘅å°éŽ–範åœä¹‹å…§ï¼Œå—°æ®µç¯„åœä¿‚å¯ä»¥è§£å°å˜…。',
@@ -2456,7 +2545,7 @@ $1已經被å°éŽ–。你係咪想更改呢個設定?',
'allmessagesdefault' => 'é è¨­è¨Šæ¯æ–‡å­—',
'allmessagescurrent' => 'ç¾æ™‚訊æ¯æ–‡å­—',
'allmessagestext' => '以下係 MediaWiki 空間å入邊ç¾æœ‰ç³»çµ±ä¿¡æ¯å˜…清單。
-如果想貢ç»æ­£å®—嘅MediaWiki本地化嘅話,請åƒé–±[http://www.mediawiki.org/wiki/Localisation MediaWiki本地化]åŒåŸ‹[http://translatewiki.net translatewiki.net]。',
+如果想貢ç»æ­£å®—嘅MediaWiki本地化嘅話,請åƒé–±[//www.mediawiki.org/wiki/Localisation MediaWiki本地化]åŒåŸ‹[//translatewiki.net translatewiki.net]。',
'allmessagesnotsupportedDB' => "呢一版唔å¯ä»¥ç”¨ï¼Œå› ç‚º'''\$wgUseDatabaseMessages'''已經閂咗。",
'allmessages-filter-legend' => 'éŽæ¿¾',
'allmessages-filter' => '以自定狀æ³éŽæ¿¾ï¼š',
@@ -2620,9 +2709,7 @@ $1已經被å°éŽ–。你係咪想更改呢個設定?',
'vector.js' => '/* 響æ¯ä¸€æ¬¡å€‹é é¢è¼‰å…¥æ™‚,用域é”ç•«é¢å˜…用戶都會載入呢度任何嘅JavaScript */',
# Metadata
-'nodublincore' => 'Dublin Core RDF metadata 已經喺呢一個伺æœå™¨ä¸Šåœç”¨ã€‚',
-'nocreativecommons' => 'Creative Commons RDF metadata 已經喺呢一個伺æœå™¨ä¸Šåœç”¨ã€‚',
-'notacceptable' => '呢個 wiki 伺æœå™¨å””能夠畀一個å¯ä»¥è®€å˜…資料畀個客。',
+'notacceptable' => '呢個 wiki 伺æœå™¨å””能夠畀一個å¯ä»¥è®€å˜…資料畀個客。',
# Attribution
'anonymous' => '{{SITENAME}}嘅匿å{{PLURAL:$1|用戶|用戶}}',
@@ -2645,14 +2732,6 @@ $1已經被å°éŽ–。你係咪想更改呢個設定?',
'spam_reverting' => 'æ¢å¾©è¿”去最後一個唔包å«æŒ‡åŽ»$1嘅連çµå˜…嗰個修訂。',
'spam_blanking' => '全部版本都å«æœ‰æŒ‡åŽ»$1嘅連çµï¼Œç•™ç©º',
-# Info page
-'infosubtitle' => 'é é¢å˜…資訊',
-'numedits' => '編輯次數(版é ï¼‰ï¼š$1',
-'numtalkedits' => '編輯次數(討論é ï¼‰ï¼š$1',
-'numwatchers' => '監視者數:$1',
-'numauthors' => 'å””åŒç·¨è€…嘅數目(版é ï¼‰ï¼š$1',
-'numtalkauthors' => 'å””åŒç·¨è€…嘅數目(討論é ï¼‰ï¼š$1',
-
# Skin names
'skinname-standard' => '傳統',
'skinname-nostalgia' => '懷舊',
@@ -2664,25 +2743,6 @@ $1已經被å°éŽ–。你係咪想更改呢個設定?',
'skinname-modern' => 'æ‘©ç™»',
'skinname-vector' => 'Vector',
-# Math options
-'mw_math_png' => '全部用PNG表示',
-'mw_math_simple' => '如果好簡單嘅就用HTML,å¦å‰‡å°±ç”¨PNG',
-'mw_math_html' => 'å¯ä»¥å˜…話都用HTML,å¦å‰‡å°±ç”¨PNG',
-'mw_math_source' => 'ä¿ç•™è¿”用TeX(文字ç€è¦½å™¨ç”¨ï¼‰',
-'mw_math_modern' => 'æ–°å¼ç€è¦½å™¨å˜…建議é¸é …',
-'mw_math_mathml' => 'å¯ä»¥å˜…話用MathML(實驗中)',
-
-# Math errors
-'math_failure' => '語法拼砌失敗',
-'math_unknown_error' => '唔知錯乜',
-'math_unknown_function' => '唔知乜函數',
-'math_lexing_error' => 'lexing錯誤',
-'math_syntax_error' => '語法錯誤',
-'math_image_error' => 'PNG 轉æ›å¤±æ•—;檢查latexã€dvipng(或者dvips+gs+convert)係唔係已經正確å’樣安è£',
-'math_bad_tmpdir' => '唔能夠寫入或建立臨時數目錄',
-'math_bad_output' => '唔能夠寫入或建立輸出數目錄',
-'math_notexvc' => 'texvc 執行檔已經éºå¤±ï¼›è«‹ç‡ç‡ math/README 去較å“。',
-
# Patrolling
'markaspatrolleddiff' => '標示為已巡查嘅',
'markaspatrolledtext' => '標示呢版åšæŸ¥å’—嘅',
@@ -2728,7 +2788,6 @@ $1',
'file-nohires' => '<small>冇更高解åƒåº¦å˜…圖åƒã€‚</small>',
'svg-long-desc' => 'SVG檔案,表é¢å¤§ç´°ï¼š $1 × $2 åƒç´ ï¼Œæª”案大細:$3',
'show-big-image' => '完整解åƒåº¦',
-'show-big-image-thumb' => '<small>呢個é è¦½å˜…大細: $1 × $2 åƒç´ </small>',
'file-info-gif-looped' => '循環',
'file-info-gif-frames' => '$1æ ¼',
'file-info-png-looped' => '循環',
@@ -2794,7 +2853,13 @@ Variants for Chinese language
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => 'é—Š',
@@ -2809,13 +2874,11 @@ Variants for Chinese language
'exif-ycbcrpositioning' => 'Y åŒ C ä½ç½®',
'exif-xresolution' => '橫解åƒåº¦',
'exif-yresolution' => '直解åƒåº¦',
-'exif-resolutionunit' => '橫直解åƒåº¦å–®ä½',
'exif-stripoffsets' => '圖åƒè³‡æ–™ä½ç½®',
'exif-rowsperstrip' => 'æ¯å¸¶è¡Œæ•¸',
'exif-stripbytecounts' => 'æ¯å£“縮帶 bytes 數',
'exif-jpeginterchangeformat' => 'JPEG SOI 嘅å移é‡',
'exif-jpeginterchangeformatlength' => 'JPEG 資料嘅 bytes 數',
-'exif-transferfunction' => '轉移功能',
'exif-whitepoint' => '白點色度',
'exif-primarychromaticities' => '主è¦å˜…色度',
'exif-ycbcrcoefficients' => 'é¡è‰²ç©ºé–“轉æ›çŸ©é™£ç³»æ•¸',
@@ -2834,7 +2897,6 @@ Variants for Chinese language
'exif-compressedbitsperpixel' => 'å½±åƒå£“縮模å¼',
'exif-pixelydimension' => 'å½±åƒæœ‰æ•ˆé—Šåº¦',
'exif-pixelxdimension' => 'å½±åƒæœ‰æ•ˆé«˜åº¦',
-'exif-makernote' => '廠商註腳',
'exif-usercomment' => '用家註腳',
'exif-relatedsoundfile' => '相關è²éŸ³æª”',
'exif-datetimeoriginal' => '原創日期時間',
@@ -2848,7 +2910,6 @@ Variants for Chinese language
'exif-exposureprogram' => 'æ›å…‰ç¨‹åº',
'exif-spectralsensitivity' => '光譜æ•æ„Ÿåº¦',
'exif-isospeedratings' => 'ISO 速率',
-'exif-oecf' => '光電轉æ›å› å­',
'exif-shutterspeedvalue' => '快門速度',
'exif-aperturevalue' => '光圈',
'exif-brightnessvalue' => '光度',
@@ -2862,7 +2923,6 @@ Variants for Chinese language
'exif-focallength-format' => '$1 毫米',
'exif-subjectarea' => '主體é¢ç©',
'exif-flashenergy' => '閃光燈能é‡',
-'exif-spatialfrequencyresponse' => '空間頻率響應',
'exif-focalplanexresolution' => 'ç„¦é»žå¹³é¢ X 嘅解åƒåº¦',
'exif-focalplaneyresolution' => 'ç„¦é»žå¹³é¢ Y 嘅解åƒåº¦',
'exif-focalplaneresolutionunit' => '焦點平é¢è§£åƒåº¦å–®ä½',
@@ -2871,7 +2931,6 @@ Variants for Chinese language
'exif-sensingmethod' => '感知方法',
'exif-filesource' => '檔案來æº',
'exif-scenetype' => '埸景類型',
-'exif-cfapattern' => 'CFA å½¢å¼',
'exif-customrendered' => '自訂影åƒè™•ç†',
'exif-exposuremode' => 'æ›å…‰æ¨¡å¼',
'exif-whitebalance' => '白平衡',
@@ -3057,21 +3116,24 @@ Variants for Chinese language
'exif-gpsspeed-m' => '英里/å°æ™‚',
'exif-gpsspeed-n' => '浬/å°æ™‚',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => '公里',
+'exif-gpsdestdistance-m' => 'å“©',
+'exif-gpsdestdistance-n' => '浬',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => '真實方å‘',
'exif-gpsdirection-m' => '地ç£æ–¹å‘',
# External editor support
'edit-externally' => '用外é¢ç¨‹å¼ä¾†æ”¹å‘¢å€‹æª”案',
-'edit-externally-help' => '(去[http://www.mediawiki.org/wiki/Manual:External_editors setup instructions] ç‡å¤šå•²è³‡æ–™)',
+'edit-externally-help' => '(去[//www.mediawiki.org/wiki/Manual:External_editors setup instructions] ç‡å¤šå•²è³‡æ–™)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => '全部',
-'imagelistall' => '全部',
-'watchlistall2' => '全部',
-'namespacesall' => '全部',
-'monthsall' => '全部',
-'limitall' => '全部',
+'watchlistall2' => '全部',
+'namespacesall' => '全部',
+'monthsall' => '全部',
+'limitall' => '全部',
# E-mail address confirmation
'confirmemail' => '確èªé›»éƒµåœ°å€',
@@ -3200,12 +3262,12 @@ $1',
'watchlistedit-noitems' => '你嘅監視清單並無標題。',
'watchlistedit-normal-title' => '編輯監視清單',
'watchlistedit-normal-legend' => '響監視清單度拎走',
-'watchlistedit-normal-explain' => '響你張監視清單度嘅標題響下é¢åº¦é¡¯ç¤ºã€‚è¦æ‹Žèµ°ä¸€å€‹æ¨™é¡Œï¼ŒéŸ¿ä½¢å‰é¢å‰”一剔,跟ä½è¦æ’³ã€Ž{{int:Watchlistedit-normal-submit}}ã€ã€‚你亦都å¯ä»¥[[Special:Watchlist/raw|編輯原始清單]]。',
+'watchlistedit-normal-explain' => '響你張監視清單度嘅標題響下é¢åº¦é¡¯ç¤ºã€‚è¦æ‹Žèµ°ä¸€å€‹æ¨™é¡Œï¼ŒéŸ¿ä½¢å‰é¢å‰”一剔,跟ä½è¦æ’³ã€Ž{{int:Watchlistedit-normal-submit}}ã€ã€‚你亦都å¯ä»¥[[Special:EditWatchlist/raw|編輯原始清單]]。',
'watchlistedit-normal-submit' => '拎走標題',
'watchlistedit-normal-done' => '$1個標題已經響你嘅監視清單度拎走咗:',
'watchlistedit-raw-title' => '編輯原始監視清單',
'watchlistedit-raw-legend' => '編輯原始監視清單',
-'watchlistedit-raw-explain' => '你張監視清單嘅標題響下é¢åº¦é¡¯ç¤ºï¼ŒåŒæ™‚亦都å¯ä»¥é€éŽç·¨è¼¯å‘¢å€‹è¡¨åŽ»åŠ å…¥åŒåŸ‹æ‹Žèµ°æ¨™é¡Œï¼›ä¸€è¡Œä¸€å€‹æ¨™é¡Œã€‚當完æˆå’—之後,撳{{int:Watchlistedit-raw-submit}}。你亦都å¯ä»¥åŽ»ç”¨[[Special:Watchlist/edit|標準編輯器]]。',
+'watchlistedit-raw-explain' => '你張監視清單嘅標題響下é¢åº¦é¡¯ç¤ºï¼ŒåŒæ™‚亦都å¯ä»¥é€éŽç·¨è¼¯å‘¢å€‹è¡¨åŽ»åŠ å…¥åŒåŸ‹æ‹Žèµ°æ¨™é¡Œï¼›ä¸€è¡Œä¸€å€‹æ¨™é¡Œã€‚當完æˆå’—之後,撳{{int:Watchlistedit-raw-submit}}。你亦都å¯ä»¥åŽ»ç”¨[[Special:EditWatchlist|標準編輯器]]。',
'watchlistedit-raw-titles' => '標題:',
'watchlistedit-raw-submit' => '更新監視清單',
'watchlistedit-raw-done' => '你嘅監視清單已經更新。',
@@ -3222,33 +3284,33 @@ $1',
'duplicate-defaultsort' => '警告: é è¨­å˜…排åºéµ "$2" 覆蓋之å‰å˜…é è¨­æŽ’åºéµ "$1"。',
# Special:Version
-'version' => '版本',
-'version-extensions' => 'è£å’—嘅擴展',
-'version-specialpages' => '特別é ',
-'version-parserhooks' => '語法鈎',
-'version-variables' => '變數',
-'version-skins' => 'ç•«é¢',
-'version-other' => '其他',
-'version-mediahandlers' => '媒體處ç†å™¨',
-'version-hooks' => '鈎',
-'version-extension-functions' => '擴展函數',
-'version-parser-extensiontags' => '語法擴展標籤',
-'version-parser-function-hooks' => '語法函數鈎',
-'version-skin-extension-functions' => 'ç•«é¢æ“´å±•å‡½æ•¸',
-'version-hook-name' => '鈎å',
-'version-hook-subscribedby' => '利用於',
-'version-version' => '(版本 $1)',
-'version-license' => '牌照',
-'version-poweredby-credits' => "呢個 Wiki 係由 '''[http://www.mediawiki.org/ MediaWiki]''' 驅動,版權所有 © 2001-$1 $2。",
-'version-poweredby-others' => '其他',
-'version-license-info' => 'MediaWiki係自由軟件;你å¯ä»¥æ ¹æ“šFree Software Foundation所發表嘅GNU General Public Licenseæ¢æ¬¾è¦å®šï¼Œå°±æœ¬ç¨‹å¼å†ç™¼ä½ˆåŒï¼æˆ–修改;無論你根據嘅係呢個牌照嘅第二版或(任你æ€ï¼‰ä»»ä¸€æ—¥ä¹‹å¾Œç™¼è¡Œå˜…版本。
+'version' => '版本',
+'version-extensions' => 'è£å’—嘅擴展',
+'version-specialpages' => '特別é ',
+'version-parserhooks' => '語法鈎',
+'version-variables' => '變數',
+'version-antispam' => '垃圾防止',
+'version-skins' => 'ç•«é¢',
+'version-other' => '其他',
+'version-mediahandlers' => '媒體處ç†å™¨',
+'version-hooks' => '鈎',
+'version-extension-functions' => '擴展函數',
+'version-parser-extensiontags' => '語法擴展標籤',
+'version-parser-function-hooks' => '語法函數鈎',
+'version-hook-name' => '鈎å',
+'version-hook-subscribedby' => '利用於',
+'version-version' => '(版本 $1)',
+'version-license' => '牌照',
+'version-poweredby-credits' => "呢個 Wiki 係由 '''[//www.mediawiki.org/ MediaWiki]''' 驅動,版權所有 © 2001-$1 $2。",
+'version-poweredby-others' => '其他',
+'version-license-info' => 'MediaWiki係自由軟件;你å¯ä»¥æ ¹æ“šFree Software Foundation所發表嘅GNU General Public Licenseæ¢æ¬¾è¦å®šï¼Œå°±æœ¬ç¨‹å¼å†ç™¼ä½ˆåŒï¼æˆ–修改;無論你根據嘅係呢個牌照嘅第二版或(任你æ€ï¼‰ä»»ä¸€æ—¥ä¹‹å¾Œç™¼è¡Œå˜…版本。
MediaWiki是基於使用目的而加以發佈,但係就唔會負上任何嘅責任;亦都唔會å°é©å”®æ€§æˆ–都係特定目的é©ç”¨æ€§å˜…默示性擔ä¿ã€‚詳情請目ç‡GNU General Public License。
-你應該已經收到跟往呢個程å¼å˜…[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License嘅副本];如果冇嘅話,請寫信到至Free Software Foundation, Inc.:51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或[http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 上網ç‡]。',
-'version-software' => 'è£å’—嘅軟件',
-'version-software-product' => '產å“',
-'version-software-version' => '版本',
+你應該已經收到跟往呢個程å¼å˜…[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU General Public License嘅副本];如果冇嘅話,請寫信到至Free Software Foundation, Inc.:51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或[//www.gnu.org/licenses/old-licenses/gpl-2.0.html 上網ç‡]。',
+'version-software' => 'è£å’—嘅軟件',
+'version-software-product' => '產å“',
+'version-software-version' => '版本',
# Special:FilePath
'filepath' => '檔案路徑',
@@ -3257,16 +3319,15 @@ MediaWiki是基於使用目的而加以發佈,但係就唔會負上任何嘅è²
'filepath-summary' => '呢個特別é æ‹Žä¸€å€‹æª”案嘅完整路徑。圖åƒæœƒä»¥å®Œæ•´å˜…解åƒåº¦é¡¯ç¤ºï¼Œå…¶å®ƒå˜…檔案類型會以åŒä½¢å“‹é—œè¯å’—嘅程å¼å•Ÿå‹•ã€‚',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => '㨂é‡è¦†æª”案',
-'fileduplicatesearch-summary' => '用é‡è¦†æª”案嘅切細值去æµå€‹æª”案係唔係é‡è¦†ã€‚
-
-輸入檔å嗰陣唔使輸入 "{{ns:file}}:" 開頭。',
-'fileduplicatesearch-legend' => 'æµé‡è¦†',
-'fileduplicatesearch-filename' => '檔å:',
-'fileduplicatesearch-submit' => 'æµ',
-'fileduplicatesearch-info' => '$1 × $2 åƒç´ <br />檔案大細: $3<br />MIMEé¡žåž‹: $4',
-'fileduplicatesearch-result-1' => '個檔案 "$1" 無完全相åŒå˜…é‡è¦†ã€‚',
-'fileduplicatesearch-result-n' => '個檔案 "$1" 有$2項完全相åŒå˜…é‡è¦†ã€‚',
+'fileduplicatesearch' => '㨂é‡è¦†æª”案',
+'fileduplicatesearch-summary' => '用é‡è¦†æª”案嘅切細值去æµå€‹æª”案係唔係é‡è¦†ã€‚',
+'fileduplicatesearch-legend' => 'æµé‡è¦†',
+'fileduplicatesearch-filename' => '檔å:',
+'fileduplicatesearch-submit' => 'æµ',
+'fileduplicatesearch-info' => '$1 × $2 åƒç´ <br />檔案大細: $3<br />MIMEé¡žåž‹: $4',
+'fileduplicatesearch-result-1' => '個檔案 "$1" 無完全相åŒå˜…é‡è¦†ã€‚',
+'fileduplicatesearch-result-n' => '個檔案 "$1" 有$2項完全相åŒå˜…é‡è¦†ã€‚',
+'fileduplicatesearch-noresults' => '檔案å"$1"找ä¸åˆ°',
# Special:SpecialPages
'specialpages' => '特別é ',
diff --git a/languages/messages/MessagesZea.php b/languages/messages/MessagesZea.php
index 4180ac41..d9bc76be 100644
--- a/languages/messages/MessagesZea.php
+++ b/languages/messages/MessagesZea.php
@@ -155,15 +155,6 @@ $messages = array(
'category-file-count-limited' => "Deêze categorie bevat {{PLURAL:$1|'t volhende bestand|de volhende $1 bestan'n}}.",
'listingcontinuesabbrev' => 'vedder',
-'mainpagetext' => "'''De installaotie van MediaWiki is geslaegd.'''",
-'mainpagedocfooter' => "Raedpleeg de [http://meta.wikimedia.org/wiki/ZEA_Ulpe:Inhoudsopgaeve andleidieng] voe informatie over 't gebruuk van de wikisoftware.
-
-== Meer ulpe over MediaWiki ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Lieste mie instelliengen]
-* [http://www.mediawiki.org/wiki/Manual:FAQ Veehestelde vraehen (FAQ)]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce Mailienglieste voe ankondigiengen van nieuwe versies]",
-
'about' => 'Info',
'article' => 'Artikel',
'newwindow' => '(opent een nieuw scherm)',
@@ -204,7 +195,6 @@ $messages = array(
'history' => 'Paginaheschiedenisse',
'history_short' => 'Geschiedenisse',
'updatedmarker' => 'bewerkt sins men lèste bezoek',
-'info_short' => 'Informaotie',
'printableversion' => 'Printbaere versie',
'permalink' => 'Permanente lienk',
'print' => "Print'n",
@@ -371,12 +361,11 @@ Probeer 't over een antal menuten wee.",
'protectedpagetext' => 'Deêze pagina is beveiligd. Bewerken is nie meuhlijk.',
'viewsourcetext' => 'Je kan de brontekst van deêze pagina bekieken en kopiëren:',
'protectedinterface' => "Deêze pagina bevat tekst voe berichen van de software en is beveiligd om misbruuk te voorkomm'n.",
-'editinginterface' => "'''Waerschuwienge:''' Je bewerk een pagina die a gebruukt wor deur de software. Bewerkiengen op deêze pagina beïnvloeden de gebrukersinterface van iedereên. Overweeg voe vertaeliengen om [http://translatewiki.net/wiki/Main_Page?setlang=zea translatewiki.net] te gebruken, 't vertaeliengsproject voe MediaWiki.",
+'editinginterface' => "'''Waerschuwienge:''' Je bewerk een pagina die a gebruukt wor deur de software. Bewerkiengen op deêze pagina beïnvloeden de gebrukersinterface van iedereên. Overweeg voe vertaeliengen om [//translatewiki.net/wiki/Main_Page?setlang=zea translatewiki.net] te gebruken, 't vertaeliengsproject voe MediaWiki.",
'sqlhidden' => '(SQL-zoekopdracht verborhen)',
'cascadeprotected' => "Deêze pagina kan nie bewerkt worn, omda 't een is openomen in de volhende {{PLURAL:$1|pagina|pagina's}} die beveiligd {{PLURAL:$1|is|zien}} mie de cascaode-optie:
$2",
'namespaceprotected' => "Je ei hin rechen om pagina's in de naemruumte '''$1''' te bewerken.",
-'customcssjsprotected' => 'Je kan deêze pagina nie bewerken, omda die persoônlijke instelliengen van een aore gebruker bevat.',
'ns-specialprotected' => 'Pagina\'s in de naemruumte "{{ns:special}}" kunn\'n nie bewerkt worn.',
'titleprotected' => "'t Anmaeken van deêze pagina is beveiligd deur [[User:$1|$1]].
De heheven reeën is ''$2''.",
@@ -421,7 +410,7 @@ Schaokel die asjeblieft in en meld dinae an mie je nieuwe gebrukersnaem en wacht
'loginsuccess' => "'''Je bin noe anemeld bie {{SITENAME}} as \"\$1\".'''",
'nosuchuser' => 'De gebruker "$1" besti nie.
Controleer de schriefwieze of [[Special:UserLogin/signup|mik een nieuwe gebruker an]].',
-'nosuchusershort' => 'De gebruker "<nowiki>$1</nowiki>" besti nie. Controleer de schriefwieze.',
+'nosuchusershort' => 'De gebruker "$1" besti nie. Controleer de schriefwieze.',
'nouserspecified' => 'Je dien een gebrukersnaem op te heven.',
'wrongpassword' => "Wachtwoôrd onjuust. Probeer 't opnieuw.",
'wrongpasswordempty' => "'t Opeheven wachtwoôrd was leeg. Probeer 't opnieuw.",
@@ -458,7 +447,7 @@ Heef asjeblieft een heldig e-mailadres op of lit 't veld leeg.",
Neheer dit bericht as deêze gebruker zonder joe medeweten is anemikt.',
'loginlanguagelabel' => 'Taele: $1',
-# Password reset dialog
+# Change password dialog
'resetpass' => "Wachtwoôrd herinstell'n",
'resetpass_announce' => "Je bin anemeld mie een tiedelijke code die a je per e-mail is toe-ezon'n. Voer een nieuw wachtwoôrd in om 't anmelden te voltooien:",
'resetpass_header' => "Wachtwoôrd herinstell'n",
@@ -480,8 +469,6 @@ Neheer dit bericht as deêze gebruker zonder joe medeweten is anemikt.',
'extlink_tip' => 'Externe lienk (verheet http:// nie)',
'headline_sample' => 'Deêlonderwerp',
'headline_tip' => 'Tussenkopje (oôgste niveau)',
-'math_sample' => 'Voer de formule in',
-'math_tip' => 'Wiskundihe formule (LaTeX)',
'nowiki_sample' => 'Voer ier de nie op te maeken tekst in',
'nowiki_tip' => 'Wiki-opmaek neheren',
'image_tip' => 'Mediabestand',
@@ -552,7 +539,7 @@ Zien/eur IP-adres kan deu meêr as eên gebruker gebruukt ore.
A je 'n bericht gekrege è dat-a dudelik nie an joe gericht is, ka je 't beste [[Special:UserLogin|jen eige anmelde]] om zukke verwarrienge in 't vervolg te vòkommen.''",
'noarticletext' => 'Deêze pagina bevat hin tekst.
Je kan [[Special:Search/{{PAGENAME}}|ni deêze term zoeken]] in aore pagina\'s of <span class="plainlinks">[{{fullurl:{{FULLPAGENAME}}|action=edit}} deêze pagina bewerken]</span>.',
-'userpage-userdoesnotexist' => 'Je bewerk een gebrukerspagina van een gebruker die a nie besti (gebruker "$1"). Controleer of a je deêze pagina wè wil anmaeken/bewerken.',
+'userpage-userdoesnotexist' => 'Je bewerk een gebrukerspagina van een gebruker die a nie besti (gebruker "<nowiki>$1</nowiki>"). Controleer of a je deêze pagina wè wil anmaeken/bewerken.',
'clearyourcache' => '\'\'\'Let op!\'\'\' Leeg je cache naeda je de wiezigiengen ei opeslogen.
{| border="1" cellpadding="3" class=toccolours style="border: 1px #AAAAAA solid; border-collapse: collapse;"
@@ -812,7 +799,6 @@ De hehevens over {{SITENAME}} zien meuhlijk nie bie'ewerkt.",
'changepassword' => 'Wachtwoôrd wiezigen',
'prefs-skin' => 'Vurmhevieng',
'skin-preview' => 'Voevertoônienge',
-'prefs-math' => 'Formules',
'datedefault' => 'Hin vòkeur',
'prefs-datetime' => 'Daotum en tied',
'prefs-personal' => 'Gebrukersprofiel',
@@ -828,8 +814,6 @@ De hehevens over {{SITENAME}} zien meuhlijk nie bie'ewerkt.",
'columns' => "Kolomm'n:",
'searchresultshead' => 'Zoek',
'resultsperpage' => "Resultaot'n per pagina:",
-'contextlines' => 'Rehels per resultaot:',
-'contextchars' => 'Context per rehel:',
'stub-threshold' => 'Drempel voe markerieng <a href="#" class="stub">stompje</a>:',
'recentchangesdays' => 'Antal daehen weer te heven in Juust angepast:',
'recentchangescount' => "Antal pagina's in Juust angepast:",
@@ -1035,7 +1019,6 @@ Also see [[Special:WantedCategories|wanted categories]].',
'mywatchlist' => 'Mien volglieste',
'watchnologin' => 'Je bin nie angemolde.',
'watchnologintext' => 'Je moe [[Special:UserLogin|angemolde]] weze om je volglieste an te passen.',
-'addedwatch' => 'An de volglieste toegevoegd',
'addedwatchtext' => "De bladzie \"[[:\$1]]\" is an je [[Special:Watchlist|Volglieste]] toegevoegd.
Veranderiengen an deêze bladzie en de overlegbladzie die-a d'rbie oort zulle ierop zichtbaer ore
en de bladzie komt '''vet''' te staen in de [[Special:RecentChanges|lieste van wat-a juust veranderd is]], daermee 't makkeliker te vinden is.
@@ -1091,7 +1074,7 @@ De reje daevò was: "$2"',
'blocklogentry' => 'ei "[[$1]]" geblokkeerd mee \'n afloôptied van $2 $3',
'blocklogtext' => "Dit is 'n logboek van gebrukersblokkaodes en -deblokkeriengen.
Automaotisch geblokte ip-adressen stae d'r nie bie.
-Ziet de [[Special:IPBlockList|Lieste van ip-blokkeriengen]] vò blokkaodes die op dit moment in werkienge bin.",
+Ziet de [[Special:BlockList|Lieste van ip-blokkeriengen]] vò blokkaodes die op dit moment in werkienge bin.",
'block-log-flags-anononly' => 'allene anonieme gebrukers',
'block-log-flags-nocreate' => 'uutgeslote van anmaeken gebrukersnaemen',
'block-log-flags-noautoblock' => 'gin autoblokkaode',
@@ -1135,17 +1118,6 @@ Kiest 'n aore naem.",
'tooltip-t-specialpages' => "Liest van aole speciaole pagina's",
'tooltip-watch' => 'Voeg deêze bladzie toe an de volglieste',
-# Math errors
-'math_failure' => 'Parsen mislukt',
-'math_unknown_error' => 'onbekende fout',
-'math_unknown_function' => 'onbekende functie',
-'math_lexing_error' => 'lexicohraofische fout',
-'math_syntax_error' => 'syntactische fout',
-'math_image_error' => 'PNG-omzettieng is mislukt. Hi nae of an latex, dvips en gs correct heïnstalleerd zien en zet om',
-'math_bad_tmpdir' => "De map voe tiedelijke bestan'n voe wiskundihe formules besti nie of kan nie emikt worn",
-'math_bad_output' => "De map voe bestan'n mie wiskundihe formules besti nie of kan nie emikt worn.",
-'math_notexvc' => "Kan 't prohramma texvc nie vin'n; stel aolles in volhens de beschrievieng in math/README.",
-
# 'all' in various places, this might be different for inflected languages
'watchlistall2' => 'aol',
'namespacesall' => 'aol',
diff --git a/languages/messages/MessagesZh.php b/languages/messages/MessagesZh.php
index 12243836..f11f6247 100644
--- a/languages/messages/MessagesZh.php
+++ b/languages/messages/MessagesZh.php
@@ -8,7 +8,6 @@
* @file
*
* @author PhiLiP
- * @author Philip
* @author Shizhao
* @author Wong128hk
*/
@@ -96,80 +95,80 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'åŒé‡é‡å®šå‘页é¢', 'é›™é‡é‡å®šå‘é é¢' ),
+ 'Allmessages' => array( '所有消æ¯', '所有訊æ¯', '所有讯æ¯' ),
+ 'Allpages' => array( '所有页é¢', '所有é é¢' ),
+ 'Ancientpages' => array( '最早页é¢', '最早é é¢' ),
+ 'Blankpage' => array( '空白页é¢', '空白é é¢' ),
+ 'Booksources' => array( '网络书æº', '網絡書æº', '網路書æº', '网路书æº' ),
'BrokenRedirects' => array( 'æŸåçš„é‡å®šå‘页', 'æ壞的é‡å®šå‘é ' ),
- 'Userlogin' => array( '用户登录', '用戶登錄', '用戶登入', '用户登入' ),
- 'Userlogout' => array( '用户登出', '用戶登出' ),
+ 'Categories' => array( '页é¢åˆ†ç±»', 'é é¢åˆ†é¡ž' ),
+ 'ChangePassword' => array( '修改密ç ', '修改密碼' ),
+ 'Confirmemail' => array( '确认电å­é‚®ä»¶', '確èªé›»å­éƒµä»¶' ),
+ 'Contributions' => array( '用户贡献', '用戶貢ç»' ),
'CreateAccount' => array( '创建账户', '創建帳戶' ),
- 'Preferences' => array( 'å‚数设置', 'åƒæ•¸è¨­ç½®' ),
- 'Watchlist' => array( '监视列表', '監視列表' ),
- 'Recentchanges' => array( '最近更改' ),
- 'Upload' => array( '上传文件', '上傳檔案', '上載檔案', '上载档案' ),
+ 'Deadendpages' => array( '断链页é¢', 'æ–·éˆé é¢', '斷連é é¢', '断连页é¢' ),
+ 'DeletedContributions' => array( '已删除的用户贡献', '已刪除的用戶貢ç»' ),
+ 'DoubleRedirects' => array( 'åŒé‡é‡å®šå‘页é¢', 'é›™é‡é‡å®šå‘é é¢' ),
+ 'Emailuser' => array( '电邮用户', '電郵用戶' ),
+ 'Export' => array( '导出页é¢', '導出é é¢' ),
+ 'Fewestrevisions' => array( '最少修订页é¢', '最少修訂é é¢' ),
+ 'Filepath' => array( '文件路径', '文件路徑', '檔案路徑', '档案路径' ),
+ 'Import' => array( '导入页é¢', 'å°Žå…¥é é¢' ),
+ 'Invalidateemail' => array( 'ä¸å¯è¯†åˆ«çš„电邮地å€', 'ä¸å¯è­˜åˆ¥çš„電郵地å€' ),
+ 'BlockList' => array( 'å°ç¦åˆ—表' ),
+ 'Listadmins' => array( '管ç†å‘˜åˆ—表', '管ç†å“¡åˆ—表' ),
+ 'Listbots' => array( '机器人列表', '機器人列表' ),
'Listfiles' => array( '文件列表', '檔案列表', '档案列表' ),
- 'Newimages' => array( '新建文件', '新建檔案', '新建档案' ),
- 'Listusers' => array( '用户列表', '用戶列表' ),
'Listgrouprights' => array( '群组æƒé™', '群組權é™' ),
- 'Statistics' => array( '统计信æ¯', '統計信æ¯', '統計资讯', '统计资讯' ),
- 'Randompage' => array( 'éšæœºé¡µé¢', '隨機é é¢' ),
+ 'Listusers' => array( '用户列表', '用戶列表' ),
+ 'Log' => array( '日志', '日誌' ),
'Lonelypages' => array( '孤立页é¢', '孤立é é¢' ),
- 'Uncategorizedpages' => array( '未归类页é¢', '未歸類é é¢' ),
- 'Uncategorizedcategories' => array( '未归类分类', '未歸類分類' ),
- 'Uncategorizedimages' => array( '未归类文件', '未歸類文件', '未歸類檔案', '未归类档案' ),
- 'Uncategorizedtemplates' => array( '未归类模æ¿', '未歸類模æ¿' ),
- 'Unusedcategories' => array( '未使用分类', '未使用分類' ),
- 'Unusedimages' => array( '未使用文件', '未使用檔案', '未使用档案' ),
- 'Wantedpages' => array( '待撰页é¢', 'å¾…æ’°é é¢' ),
- 'Wantedcategories' => array( '待撰分类', '待撰分類' ),
- 'Wantedfiles' => array( '需è¦çš„文件', '需è¦çš„檔案', '需è¦çš„档案' ),
- 'Wantedtemplates' => array( '需è¦çš„模æ¿' ),
+ 'Longpages' => array( '长页é¢', 'é•·é é¢' ),
+ 'MergeHistory' => array( 'åˆå¹¶åŽ†å²', 'åˆä½µæ­·å²' ),
+ 'MIMEsearch' => array( 'MIMEæœç´¢', 'MIMEæœå°‹', 'MIMEæœå¯»' ),
+ 'Mostcategories' => array( '最多分类页é¢', '最多分類é é¢' ),
+ 'Mostimages' => array( '最多链接文件', '最多éˆæŽ¥æ–‡ä»¶', '最多連çµæª”案', '最多连结档案' ),
'Mostlinked' => array( '最多链接页é¢', '最多連çµé é¢' ),
'Mostlinkedcategories' => array( '最多链接分类', '最多連çµåˆ†é¡ž' ),
'Mostlinkedtemplates' => array( '最多链接模æ¿', '最多連çµæ¨¡æ¿' ),
- 'Mostimages' => array( '最多链接文件', '最多éˆæŽ¥æ–‡ä»¶', '最多連çµæª”案', '最多连结档案' ),
- 'Mostcategories' => array( '最多分类页é¢', '最多分類é é¢' ),
'Mostrevisions' => array( '最多修订页é¢', '最多修訂é é¢' ),
- 'Fewestrevisions' => array( '最少修订页é¢', '最少修訂é é¢' ),
- 'Shortpages' => array( '短页é¢', '短é é¢' ),
- 'Longpages' => array( '长页é¢', 'é•·é é¢' ),
+ 'Movepage' => array( '移动页é¢', '移動é é¢' ),
+ 'Mycontributions' => array( '我的贡献', '我的貢ç»' ),
+ 'Mypage' => array( '我的用户页', '我的用戶é ' ),
+ 'Mytalk' => array( '我的讨论页', '我的討論é ' ),
+ 'Newimages' => array( '新建文件', '新建檔案', '新建档案' ),
'Newpages' => array( '最新页é¢', '最新é é¢' ),
- 'Ancientpages' => array( '最早页é¢', '最早é é¢' ),
- 'Deadendpages' => array( '断链页é¢', 'æ–·éˆé é¢', '斷連é é¢', '断连页é¢' ),
+ 'Popularpages' => array( '热点页é¢', '熱點é é¢' ),
+ 'Preferences' => array( 'å‚数设置', 'åƒæ•¸è¨­ç½®' ),
+ 'Prefixindex' => array( 'å‰ç¼€ç´¢å¼•', 'å‰ç¶´ç´¢å¼•' ),
'Protectedpages' => array( 'å·²ä¿æŠ¤é¡µé¢', 'å·²ä¿è­·é é¢' ),
'Protectedtitles' => array( 'å·²ä¿æŠ¤æ ‡é¢˜', 'å·²ä¿è­·æ¨™é¡Œ' ),
- 'Allpages' => array( '所有页é¢', '所有é é¢' ),
- 'Prefixindex' => array( 'å‰ç¼€ç´¢å¼•', 'å‰ç¶´ç´¢å¼•' ),
- 'Ipblocklist' => array( 'å°ç¦åˆ—表' ),
- 'Specialpages' => array( '特殊页é¢', '特殊é é¢' ),
- 'Contributions' => array( '用户贡献', '用戶貢ç»' ),
- 'Emailuser' => array( '电邮用户', '電郵用戶' ),
- 'Confirmemail' => array( '确认电å­é‚®ä»¶', '確èªé›»å­éƒµä»¶' ),
- 'Whatlinkshere' => array( '链入页é¢', 'éˆå…¥é é¢', '連入é é¢', '连入页é¢' ),
+ 'Randompage' => array( 'éšæœºé¡µé¢', '隨機é é¢' ),
+ 'Recentchanges' => array( '最近更改' ),
'Recentchangeslinked' => array( '链出更改', 'éˆå‡ºæ›´æ”¹', '連出更改', '连出更改' ),
- 'Movepage' => array( '移动页é¢', '移動é é¢' ),
- 'Booksources' => array( '网络书æº', '網絡書æº', '網路書æº', '网路书æº' ),
- 'Categories' => array( '页é¢åˆ†ç±»', 'é é¢åˆ†é¡ž' ),
- 'Export' => array( '导出页é¢', '導出é é¢' ),
- 'Version' => array( '版本信æ¯', '版本資訊', '版本资讯' ),
- 'Allmessages' => array( '所有消æ¯', '所有訊æ¯', '所有讯æ¯' ),
- 'Log' => array( '日志', '日誌' ),
+ 'Search' => array( 'æœç´¢', 'æœå°‹', 'æœå¯»' ),
+ 'Shortpages' => array( '短页é¢', '短é é¢' ),
+ 'Specialpages' => array( '特殊页é¢', '特殊é é¢' ),
+ 'Statistics' => array( '统计信æ¯', '統計信æ¯', '統計资讯', '统计资讯' ),
+ 'Uncategorizedcategories' => array( '未归类分类', '未歸類分類' ),
+ 'Uncategorizedimages' => array( '未归类文件', '未歸類文件', '未歸類檔案', '未归类档案' ),
+ 'Uncategorizedpages' => array( '未归类页é¢', '未歸類é é¢' ),
+ 'Uncategorizedtemplates' => array( '未归类模æ¿', '未歸類模æ¿' ),
'Undelete' => array( 'æ¢å¤è¢«åˆ é¡µé¢', 'æ¢å¾©è¢«åˆªé é¢' ),
- 'Import' => array( '导入页é¢', 'å°Žå…¥é é¢' ),
- 'Userrights' => array( '用户æƒé™', '用戶權é™' ),
- 'MIMEsearch' => array( 'MIMEæœç´¢', 'MIMEæœå°‹', 'MIMEæœå¯»' ),
+ 'Unusedcategories' => array( '未使用分类', '未使用分類' ),
+ 'Unusedimages' => array( '未使用文件', '未使用檔案', '未使用档案' ),
'Unusedtemplates' => array( '未使用模æ¿' ),
- 'Mypage' => array( '我的用户页', '我的用戶é ' ),
- 'Mytalk' => array( '我的讨论页', '我的討論é ' ),
- 'Mycontributions' => array( '我的贡献', '我的貢ç»' ),
- 'Listadmins' => array( '管ç†å‘˜åˆ—表', '管ç†å“¡åˆ—表' ),
- 'Listbots' => array( '机器人列表', '機器人列表' ),
- 'Popularpages' => array( '热点页é¢', '熱點é é¢' ),
- 'Search' => array( 'æœç´¢', 'æœå°‹', 'æœå¯»' ),
- 'Resetpass' => array( '修改密ç ', '修改密碼' ),
- 'MergeHistory' => array( 'åˆå¹¶åŽ†å²', 'åˆä½µæ­·å²' ),
- 'Filepath' => array( '文件路径', '文件路徑', '檔案路徑', '档案路径' ),
- 'Invalidateemail' => array( 'ä¸å¯è¯†åˆ«çš„电邮地å€', 'ä¸å¯è­˜åˆ¥çš„電郵地å€' ),
- 'Blankpage' => array( '空白页é¢', '空白é é¢' ),
- 'DeletedContributions' => array( '已删除的用户贡献', '已刪除的用戶貢ç»' ),
+ 'Upload' => array( '上传文件', '上傳檔案', '上載檔案', '上载档案' ),
+ 'Userlogin' => array( '用户登录', '用戶登錄', '用戶登入', '用户登入' ),
+ 'Userlogout' => array( '用户登出', '用戶登出' ),
+ 'Userrights' => array( '用户æƒé™', '用戶權é™' ),
+ 'Version' => array( '版本信æ¯', '版本資訊', '版本资讯' ),
+ 'Wantedcategories' => array( '待撰分类', '待撰分類' ),
+ 'Wantedfiles' => array( '需è¦çš„文件', '需è¦çš„檔案', '需è¦çš„档案' ),
+ 'Wantedpages' => array( '待撰页é¢', 'å¾…æ’°é é¢' ),
+ 'Wantedtemplates' => array( '需è¦çš„模æ¿' ),
+ 'Watchlist' => array( '监视列表', '監視列表' ),
+ 'Whatlinkshere' => array( '链入页é¢', 'éˆå…¥é é¢', '連入é é¢', '连入页é¢' ),
);
$messages = array(
diff --git a/languages/messages/MessagesZh_hans.php b/languages/messages/MessagesZh_hans.php
index d196751e..8b23adef 100644
--- a/languages/messages/MessagesZh_hans.php
+++ b/languages/messages/MessagesZh_hans.php
@@ -12,6 +12,7 @@
* @author Bencmq
* @author Biŋhai
* @author Chenxiaoqino
+ * @author Chenzw
* @author Chinalace
* @author Fantasticfears
* @author Franklsf95
@@ -72,8 +73,6 @@ $namespaceAliases = array(
'用户' => NS_USER,
'用户对è¯' => NS_USER_TALK,
'用户讨论' => NS_USER_TALK,
- # This has never worked so it's unlikely to annoy anyone if I disable it -- TS
- # '{{SITENAME}}_对è¯' => NS_PROJECT_TALK
'图åƒ' => NS_FILE,
'档案' => NS_FILE,
'文件' => NS_FILE,
@@ -97,99 +96,127 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'åŒé‡é‡å®šå‘页é¢' ),
+ 'Activeusers' => array( '活跃用户' ),
+ 'Allmessages' => array( '所有信æ¯' ),
+ 'Allpages' => array( '所有页é¢' ),
+ 'Ancientpages' => array( '最早页é¢' ),
+ 'Blankpage' => array( '空白页é¢' ),
+ 'Block' => array( 'å°ç¦ç”¨æˆ·' ),
+ 'Blockme' => array( '自我å°ç¦' ),
+ 'Booksources' => array( '网络书æº' ),
'BrokenRedirects' => array( 'æŸåçš„é‡å®šå‘页' ),
- 'Disambiguations' => array( '消歧义页' ),
- 'Userlogin' => array( '用户登录' ),
- 'Userlogout' => array( '用户登出' ),
+ 'Categories' => array( '页é¢åˆ†ç±»' ),
+ 'ChangeEmail' => array( '修改邮箱' ),
+ 'ChangePassword' => array( '修改密ç ' ),
+ 'ComparePages' => array( '比较页é¢' ),
+ 'Confirmemail' => array( '确认电å­é‚®ä»¶' ),
+ 'Contributions' => array( '用户贡献' ),
'CreateAccount' => array( '创建账户' ),
- 'Preferences' => array( 'å‚数设置' ),
- 'Watchlist' => array( '监视列表' ),
- 'Recentchanges' => array( '最近更改' ),
- 'Upload' => array( '上传文件' ),
+ 'Deadendpages' => array( '断链页é¢' ),
+ 'DeletedContributions' => array( '已删除的用户贡献' ),
+ 'Disambiguations' => array( '消歧义页' ),
+ 'DoubleRedirects' => array( 'åŒé‡é‡å®šå‘页', '两次é‡å®šå‘页' ),
+ 'EditWatchlist' => array( '编辑监视列表' ),
+ 'Emailuser' => array( '电å­é‚®ä»¶ç”¨æˆ·' ),
+ 'Export' => array( '导出页é¢' ),
+ 'Fewestrevisions' => array( '最少修订页é¢' ),
+ 'FileDuplicateSearch' => array( 'æœç´¢é‡å¤æ–‡ä»¶' ),
+ 'Filepath' => array( '文件路径' ),
+ 'Import' => array( '导入页é¢' ),
+ 'Invalidateemail' => array( 'ä¸å¯è¯†åˆ«çš„电邮地å€' ),
+ 'BlockList' => array( 'å°ç¦åˆ—表' ),
+ 'LinkSearch' => array( 'æœç´¢ç½‘页链接' ),
+ 'Listadmins' => array( '管ç†å‘˜åˆ—表' ),
+ 'Listbots' => array( '机器人列表' ),
'Listfiles' => array( '文件列表' ),
- 'Newimages' => array( '新建文件' ),
+ 'Listgrouprights' => array( '用户组æƒé™' ),
+ 'Listredirects' => array( 'é‡å®šå‘页列表' ),
'Listusers' => array( '用户列表' ),
- 'Listgrouprights' => array( '群组æƒé™' ),
- 'Statistics' => array( '统计信æ¯' ),
- 'Randompage' => array( 'éšæœºé¡µé¢' ),
+ 'Lockdb' => array( 'é”定数æ®åº“' ),
+ 'Log' => array( '日志' ),
'Lonelypages' => array( '孤立页é¢' ),
- 'Uncategorizedpages' => array( '未归类页é¢' ),
- 'Uncategorizedcategories' => array( '未归类分类' ),
- 'Uncategorizedimages' => array( '未归类文件' ),
- 'Uncategorizedtemplates' => array( '未归类模æ¿' ),
- 'Unusedcategories' => array( '未使用分类' ),
- 'Unusedimages' => array( '未使用文件' ),
- 'Wantedpages' => array( '待撰页é¢' ),
- 'Wantedcategories' => array( '待撰分类' ),
- 'Wantedfiles' => array( '需è¦çš„文件' ),
- 'Wantedtemplates' => array( '需è¦çš„模æ¿' ),
+ 'Longpages' => array( '长页é¢' ),
+ 'MergeHistory' => array( 'åˆå¹¶åŽ†å²' ),
+ 'MIMEsearch' => array( 'MIMEæœç´¢' ),
+ 'Mostcategories' => array( '最多分类页é¢' ),
+ 'Mostimages' => array( '最多链接文件' ),
'Mostlinked' => array( '最多链接页é¢' ),
'Mostlinkedcategories' => array( '最多链接分类' ),
'Mostlinkedtemplates' => array( '最多链接模æ¿' ),
- 'Mostimages' => array( '最多链接文件' ),
- 'Mostcategories' => array( '最多分类页é¢' ),
'Mostrevisions' => array( '最多修订页é¢' ),
- 'Fewestrevisions' => array( '最少修订页é¢' ),
- 'Shortpages' => array( '短页é¢' ),
- 'Longpages' => array( '长页é¢' ),
- 'Newpages' => array( '最新页é¢' ),
- 'Ancientpages' => array( '最早页é¢' ),
- 'Deadendpages' => array( '断链页é¢' ),
- 'Protectedpages' => array( 'å·²ä¿æŠ¤é¡µé¢' ),
- 'Protectedtitles' => array( 'å·²ä¿æŠ¤æ ‡é¢˜' ),
- 'Allpages' => array( '所有页é¢' ),
- 'Prefixindex' => array( 'å‰ç¼€ç´¢å¼•' ),
- 'Ipblocklist' => array( 'å°ç¦åˆ—表' ),
- 'Unblock' => array( '解除å°ç¦' ),
- 'Specialpages' => array( '特殊页é¢' ),
- 'Contributions' => array( '用户贡献' ),
- 'Emailuser' => array( '邮件用户' ),
- 'Confirmemail' => array( '确认电å­é‚®ä»¶' ),
- 'Whatlinkshere' => array( '链入页é¢' ),
- 'Recentchangeslinked' => array( '链出更改' ),
'Movepage' => array( '移动页é¢' ),
- 'Blockme' => array( 'å°ç¦æˆ‘' ),
- 'Booksources' => array( '网络书æº' ),
- 'Categories' => array( '页é¢åˆ†ç±»' ),
- 'Export' => array( '导出页é¢' ),
- 'Version' => array( '版本信æ¯' ),
- 'Allmessages' => array( '所有信æ¯' ),
- 'Log' => array( '日志' ),
- 'Blockip' => array( '查å°ç”¨æˆ·' ),
- 'Undelete' => array( 'æ¢å¤è¢«åˆ é¡µé¢' ),
- 'Import' => array( '导入页é¢' ),
- 'Lockdb' => array( 'é”定数æ®åº“' ),
- 'Unlockdb' => array( '解除数æ®åº“é”定' ),
- 'Userrights' => array( '用户æƒé™' ),
- 'MIMEsearch' => array( 'MIMEæœç´¢' ),
- 'FileDuplicateSearch' => array( 'æœç´¢é‡å¤æ–‡ä»¶' ),
- 'Unwatchedpages' => array( '未å—监视页é¢' ),
- 'Listredirects' => array( 'é‡å®šå‘页é¢åˆ—表' ),
- 'Revisiondelete' => array( '删除或æ¢å¤ç‰ˆæœ¬' ),
- 'Unusedtemplates' => array( '未使用模æ¿' ),
- 'Randomredirect' => array( 'éšæœºé‡å®šå‘页é¢' ),
+ 'Mycontributions' => array( '我的贡献' ),
'Mypage' => array( '我的用户页' ),
'Mytalk' => array( '我的讨论页' ),
- 'Mycontributions' => array( '我的贡献' ),
- 'Myuploads' => array( '我的上传' ),
- 'Listadmins' => array( '管ç†å‘˜åˆ—表' ),
- 'Listbots' => array( '机器人列表' ),
+ 'Myuploads' => array( '我上传的文件', '我的上传' ),
+ 'Newimages' => array( '新建文件' ),
+ 'Newpages' => array( '新建页é¢' ),
+ 'PasswordReset' => array( 'é‡è®¾å¯†ç ' ),
+ 'PermanentLink' => array( '永久链接' ),
'Popularpages' => array( '热点页é¢' ),
+ 'Preferences' => array( 'å‚数设置', '系统设置' ),
+ 'Prefixindex' => array( 'å‰ç¼€ç´¢å¼•' ),
+ 'Protectedpages' => array( 'å·²ä¿æŠ¤é¡µé¢' ),
+ 'Protectedtitles' => array( 'å·²ä¿æŠ¤æ ‡é¢˜' ),
+ 'Randompage' => array( 'éšæœºé¡µé¢' ),
+ 'Randomredirect' => array( 'éšæœºé‡å®šå‘页' ),
+ 'Recentchanges' => array( '最近更改' ),
+ 'Recentchangeslinked' => array( '链出更改' ),
+ 'Revisiondelete' => array( '删除或æ¢å¤ç‰ˆæœ¬' ),
+ 'RevisionMove' => array( '修订版本移动' ),
'Search' => array( 'æœç´¢' ),
- 'Resetpass' => array( '修改密ç ' ),
- 'Withoutinterwiki' => array( '无跨维基链接页é¢' ),
- 'MergeHistory' => array( 'åˆå¹¶åŽ†å²' ),
- 'Filepath' => array( '文件路径' ),
- 'Invalidateemail' => array( 'ä¸å¯è¯†åˆ«çš„电邮地å€' ),
- 'Blankpage' => array( '空白页é¢' ),
- 'LinkSearch' => array( 'æœç´¢ç½‘页链接' ),
- 'DeletedContributions' => array( '已删除的用户贡献' ),
+ 'Shortpages' => array( '短页é¢' ),
+ 'Specialpages' => array( '特殊页é¢' ),
+ 'Statistics' => array( '统计信æ¯' ),
'Tags' => array( '标签' ),
- 'Activeusers' => array( '活跃用户' ),
- 'ComparePages' => array( '对比页å­' ),
- 'Badtitle' => array( 'å标题' ),
- 'DisableAccount' => array( 'ç¦ç”¨å¸æˆ·' ),
+ 'Unblock' => array( '解除å°ç¦' ),
+ 'Uncategorizedcategories' => array( '无分类分类' ),
+ 'Uncategorizedimages' => array( '无分类文件' ),
+ 'Uncategorizedpages' => array( '无分类页é¢' ),
+ 'Uncategorizedtemplates' => array( '无分类模æ¿' ),
+ 'Undelete' => array( 'æ¢å¤è¢«åˆ é¡µé¢' ),
+ 'Unlockdb' => array( '解除数æ®åº“é”定' ),
+ 'Unusedcategories' => array( '未使用分类' ),
+ 'Unusedimages' => array( '未使用文件' ),
+ 'Unusedtemplates' => array( '未使用模æ¿' ),
+ 'Unwatchedpages' => array( '未å—监视页é¢' ),
+ 'Upload' => array( '上传文件' ),
+ 'UploadStash' => array( '上传è—匿' ),
+ 'Userlogin' => array( '用户登录', '用户登入' ),
+ 'Userlogout' => array( '用户退出', '用户登出' ),
+ 'Userrights' => array( '用户æƒé™' ),
+ 'Version' => array( '版本信æ¯' ),
+ 'Wantedcategories' => array( '待撰分类' ),
+ 'Wantedfiles' => array( '需è¦çš„文件' ),
+ 'Wantedpages' => array( '待撰页é¢' ),
+ 'Wantedtemplates' => array( '需è¦çš„模æ¿' ),
+ 'Watchlist' => array( '监视列表' ),
+ 'Whatlinkshere' => array( '链入页é¢' ),
+ 'Withoutinterwiki' => array( 'æ— è·¨Wiki链接的页é¢', '无跨维基链接页é¢' ),
+);
+
+$magicWords = array(
+ 'redirect' => array( '0', '#é‡å®šå‘', '#REDIRECT' ),
+ 'notoc' => array( '0', '_无目录_', '__NOTOC__' ),
+ 'nogallery' => array( '0', '_无图库_', '__NOGALLERY__' ),
+ 'forcetoc' => array( '0', '_强显目录_', '__FORCETOC__' ),
+ 'toc' => array( '0', '_目录_', '__TOC__' ),
+ 'noeditsection' => array( '0', '_无段è½ç¼–辑_', '__NOEDITSECTION__' ),
+ 'currentmonth' => array( '1', '本月', 'CURRENTMONTH', 'CURRENTMONTH2' ),
+ 'currentmonth1' => array( '1', '本月1', 'CURRENTMONTH1' ),
+ 'currentmonthname' => array( '1', '本月å称', 'CURRENTMONTHNAME' ),
+ 'currentmonthabbrev' => array( '1', '本月简称', 'CURRENTMONTHABBREV' ),
+ 'currentday' => array( '1', '今天', 'CURRENTDAY' ),
+ 'currentday2' => array( '1', '今天2', 'CURRENTDAY2' ),
+ 'currentyear' => array( '1', '今年', 'CURRENTYEAR' ),
+ 'numberofpages' => array( '1', '页数', 'NUMBEROFPAGES' ),
+ 'numberofarticles' => array( '1', 'æ¡ç›®æ•°', 'NUMBEROFARTICLES' ),
+ 'numberoffiles' => array( '1', '文件数', 'NUMBEROFFILES' ),
+ 'numberofusers' => array( '1', '用户数', 'NUMBEROFUSERS' ),
+ 'numberofactiveusers' => array( '1', '活跃用户数', 'NUMBEROFACTIVEUSERS' ),
+ 'numberofedits' => array( '1', '编辑数', 'NUMBEROFEDITS' ),
+ 'numberofviews' => array( '1', '访问数', 'NUMBEROFVIEWS' ),
+ 'pagename' => array( '1', '页å', 'PAGENAME' ),
);
$linkTrail = '/^()(.*)$/sD';
@@ -253,8 +280,8 @@ $messages = array(
'tog-shownumberswatching' => '显示监视用户数',
'tog-oldsig' => '当å‰ç­¾å:',
'tog-fancysig' => '将签å以wiki文本对待(ä¸äº§ç”Ÿè‡ªåŠ¨é“¾æŽ¥ï¼‰',
-'tog-externaleditor' => '默认使用外部编辑器(供高级用户使用,需è¦åœ¨æ‚¨çš„计算机上作出一些特别设置。[http://www.mediawiki.org/wiki/Manual:External_editors 更多信æ¯ã€‚])',
-'tog-externaldiff' => '默认使用外部差异分æžï¼ˆä¾›é«˜çº§ç”¨æˆ·ä½¿ç”¨ï¼Œéœ€è¦åœ¨æ‚¨çš„计算机上作出一些特别设置。[http://www.mediawiki.org/wiki/Manual:External_editors 更多信æ¯ã€‚])',
+'tog-externaleditor' => '默认使用外部编辑器(供高级用户使用,需è¦åœ¨æ‚¨çš„计算机上作出一些特别设置。[//www.mediawiki.org/wiki/Manual:External_editors 更多信æ¯ã€‚])',
+'tog-externaldiff' => '默认使用外部差异分æžï¼ˆä¾›é«˜çº§ç”¨æˆ·ä½¿ç”¨ï¼Œéœ€è¦åœ¨æ‚¨çš„计算机上作出一些特别设置。[//www.mediawiki.org/wiki/Manual:External_editors 更多信æ¯ã€‚])',
'tog-showjumplinks' => 'å¯ç”¨â€œè·³è½¬åˆ°â€è®¿é—®é“¾æŽ¥',
'tog-uselivepreview' => '使用实时预览(需è¦Javascript)(试验中)',
'tog-forceeditsummary' => '未输入编辑摘è¦æ—¶æ醒我',
@@ -351,14 +378,7 @@ $messages = array(
'listingcontinuesabbrev' => 'ç»­',
'index-category' => 'å…许索引的页é¢',
'noindex-category' => 'ç¦æ­¢ç´¢å¼•çš„页é¢',
-
-'mainpagetext' => "'''å·²æˆåŠŸå®‰è£…MediaWiki。'''",
-'mainpagedocfooter' => '请查阅[http://meta.wikimedia.org/wiki/Help:Contents 用户指å—]以获å–使用本wiki软件的信æ¯ï¼
-
-== 入门 ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置设置列表]
-* [http://www.mediawiki.org/wiki/Manual:FAQ/zh-hans MediaWiki常è§é—®é¢˜]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWikiå‘布邮件列表]',
+'broken-file-category' => 'æŸå的文件的链接的页é¢',
'about' => '关于',
'article' => '内容页é¢',
@@ -410,10 +430,10 @@ $messages = array(
'history' => '页é¢åŽ†å²',
'history_short' => '历å²',
'updatedmarker' => '我上次访问以æ¥çš„修改',
-'info_short' => 'ä¿¡æ¯',
'printableversion' => 'å¯æ‰“å°ç‰ˆ',
'permalink' => '永久链接',
'print' => '打å°',
+'view' => '查看',
'edit' => '编辑',
'create' => '创建',
'editthispage' => '编辑此页',
@@ -421,12 +441,13 @@ $messages = array(
'delete' => '删除',
'deletethispage' => '删除本页',
'undelete_short' => 'æ¢å¤è¢«åˆ é™¤çš„$1项修订',
+'viewdeleted_short' => '查看被删除的$1项修订',
'protect' => 'ä¿æŠ¤',
'protect_change' => '更改',
'protectthispage' => 'ä¿æŠ¤æ­¤é¡µ',
'unprotect' => '更改ä¿æŠ¤',
'unprotectthispage' => '更改此页é¢çš„ä¿æŠ¤',
-'newpage' => '新建页é¢',
+'newpage' => '新页é¢',
'talkpage' => '讨论本页',
'talkpagelinktext' => '讨论',
'specialpage' => '特殊页é¢',
@@ -504,6 +525,8 @@ $1',
'toc' => '目录',
'showtoc' => '显示',
'hidetoc' => 'éšè—',
+'collapsible-collapse' => '折å ',
+'collapsible-expand' => '展开',
'thisisdeleted' => '查看或æ¢å¤$1?',
'viewdeleted' => '查看$1?',
'restorelink' => '$1个被删除的版本',
@@ -515,6 +538,8 @@ $1',
'page-rss-feed' => '“$1â€çš„RSS订阅',
'page-atom-feed' => '“$1â€çš„Atom订阅',
'red-link-title' => '$1(尚未撰写)',
+'sort-descending' => '按é™åºæŽ’åº',
+'sort-ascending' => 'å‡åºæŽ’åº',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => '页é¢',
@@ -590,12 +615,13 @@ $1',
'protectedpagetext' => '该页é¢å·²è¢«ä¿æŠ¤ä»¥é˜²æ­¢ç¼–辑。',
'viewsourcetext' => '您å¯ä»¥æŸ¥çœ‹å¹¶å¤åˆ¶æ­¤é¡µé¢çš„æºä»£ç ï¼š',
'protectedinterface' => '该页æ供了软件的界é¢æ–‡æœ¬ï¼Œå®ƒå·²è¢«ä¿æŠ¤ä»¥é˜²æ­¢éšæ„的修改。',
-'editinginterface' => "'''警告:''' 您正在编辑的页é¢æ˜¯ç”¨äºŽæ供软件的界é¢æ–‡æœ¬ã€‚改å˜æ­¤é¡µå°†å½±å“其他用户的界é¢å¤–观。如è¦ç¿»è¯‘,请考虑使用[http://translatewiki.net/wiki/Main_Page?setlang=zh-hans translatewiki.net],一个用æ¥ä¸ºMediaWiki软件本地化的计划。",
+'editinginterface' => "'''警告:''' 您正在编辑的页é¢æ˜¯ç”¨äºŽæ供软件的界é¢æ–‡æœ¬ã€‚改å˜æ­¤é¡µå°†å½±å“其他用户的界é¢å¤–观。如è¦ç¿»è¯‘,请考虑使用[//translatewiki.net/wiki/Main_Page?setlang=zh-hans translatewiki.net],一个用æ¥ä¸ºMediaWiki软件本地化的计划。",
'sqlhidden' => '(SQL查询已éšè—)',
'cascadeprotected' => '此页é¢å·²è¢«ä¿æŠ¤ï¼Œå› ä¸ºè¿™ä¸ªé¡µé¢è¢«ä»¥ä¸‹å·²æ ‡æ³¨â€œè”é”ä¿æŠ¤â€çš„{{PLURAL:$1|一个|多个}}被ä¿æŠ¤é¡µé¢åŒ…å«ï¼š
$2',
'namespaceprotected' => "您没有æƒé™ç¼–辑'''$1'''å字空间内的页é¢ã€‚",
-'customcssjsprotected' => '您并无æƒé™åŽ»ç¼–辑这个页é¢ï¼Œå› ä¸ºå®ƒåŒ…å«äº†å¦ä¸€ä½ç”¨æˆ·çš„个人设定。',
+'customcssprotected' => '您没有æƒé™ç¼–辑此CSS页é¢ï¼Œå› ä¸ºå®ƒåŒ…å«å¦ä¸€ä½ç”¨æˆ·çš„个人设置。',
+'customjsprotected' => '您没有æƒé™ç¼–辑此JavaScript页é¢ï¼Œå› ä¸ºå®ƒåŒ…å«å¦ä¸€ä½ç”¨æˆ·çš„个人设置。',
'ns-specialprotected' => '您ä¸èƒ½ç¼–辑特殊页é¢ã€‚',
'titleprotected' => '此标题已被[[User:$1|$1]]ä¿æŠ¤ä»¥é˜²æ­¢åˆ›å»ºã€‚ç†ç”±æ˜¯â€œ$2â€ã€‚',
@@ -630,6 +656,7 @@ $2',
'createaccount' => '创建账户',
'gotaccount' => 'å·²ç»æ‹¥æœ‰è´¦æˆ·ï¼Ÿè¯·$1。',
'gotaccountlink' => '登录',
+'userlogin-resetlink' => '忘记了你的登录信æ¯ï¼Ÿ',
'createaccountmail' => '通过电å­é‚®ä»¶',
'createaccountreason' => 'ç†ç”±ï¼š',
'badretype' => '您所输入的密ç å¹¶ä¸ç›¸åŒã€‚',
@@ -638,11 +665,13 @@ $2',
'createaccounterror' => '无法建立账户:$1',
'nocookiesnew' => 'å·²æˆåŠŸåˆ›å»ºæ–°è´¦æˆ·ï¼ä¾¦æµ‹åˆ°æ‚¨å·²å…³é—­Cookies,请开å¯å®ƒå¹¶ç™»å½•ã€‚',
'nocookieslogin' => '本站利用Cookies进行用户登录,侦测到您已关闭Cookies,请开å¯å®ƒå¹¶é‡æ–°ç™»å½•ã€‚',
+'nocookiesfornew' => 'è¿™ä½ç”¨æˆ·çš„账户未建立,我们ä¸èƒ½ç¡®è®¤å®ƒçš„æ¥æºã€‚
+请肯定您已ç»å¼€å¯ cookies,é‡è½½åŽå†è¯•ã€‚',
'noname' => '你没有输入有效的用户å。',
'loginsuccesstitle' => '登录æˆåŠŸ',
'loginsuccess' => "'''你现在以“$1â€çš„身份登录到{{SITENAME}}。'''",
'nosuchuser' => '找ä¸åˆ°ç”¨æˆ·â€œ$1â€ã€‚用户å是大å°å†™æ•æ„Ÿä¸”区分ç¹ç®€ä½“的。请检查您的拼写,或者[[Special:UserLogin/signup|建立一个新账户]]。',
-'nosuchusershort' => '没有一个å为“<nowiki>$1</nowiki>â€çš„用户。请检查您输入的文字是å¦æœ‰é”™è¯¯ã€‚',
+'nosuchusershort' => '没有一个å为“$1â€çš„用户。请检查您输入的文字是å¦æœ‰é”™è¯¯ã€‚',
'nouserspecified' => '你需è¦æŒ‡å®šä¸€ä¸ªç”¨æˆ·å。',
'login-userblocked' => '该用户已被å°ç¦ï¼Œç¦æ­¢ç™»å½•ã€‚',
'wrongpassword' => '您输入的密ç é”™è¯¯ï¼Œè¯·å†è¯•ä¸€æ¬¡ã€‚',
@@ -682,13 +711,14 @@ $2',
'usernamehasherror' => '用户å中ä¸å¯åŒ…å«å“ˆå¸Œï¼ˆhash)字符',
'login-throttled' => '您已ç»å°è¯•å¤šæ¬¡çš„登录动作。
请ç¨ç­‰å¤šä¸€ä¼šå†è¯•ã€‚',
+'login-abort-generic' => '您的登录å是失败 - 中止',
'loginlanguagelabel' => '语言:$1',
'suspicious-userlogout' => '您登出的è¦æ±‚å·²ç»è¢«æ‹’ç»ï¼Œå› ä¸ºå®ƒå¯èƒ½æ˜¯ç”±å·²æŸåçš„æµè§ˆå™¨æˆ–者缓存代ç†ä¼ é€ã€‚',
# E-mail sending
'php-mail-error-unknown' => '在 PHP 的 mail() 函数中的未知错误',
-# Password reset dialog
+# Change password dialog
'resetpass' => '更改密ç ',
'resetpass_announce' => '您是通过å‘é€åˆ°ç”µå­é‚®ç®±çš„临时密ç ç™»å½•çš„。è¦å®Œæˆç™»å½•ï¼Œè¯·è®¾å®šä¸€ä¸ªæ–°çš„密ç ï¼š',
'resetpass_text' => '<!-- 在这里添加文字 -->',
@@ -705,6 +735,30 @@ $2',
'resetpass-wrong-oldpass' => '临时密ç æˆ–当å‰å¯†ç æ— æ•ˆã€‚您å¯èƒ½å·²ç»æ›´æ”¹äº†æ‚¨çš„密ç ï¼Œæˆ–者请求了新的临时密ç ã€‚',
'resetpass-temp-password' => '临时密ç ï¼š',
+# Special:PasswordReset
+'passwordreset' => 'é‡ç½®å¯†ç ',
+'passwordreset-text' => '完æˆæ­¤è¡¨æ ¼ä»¥æŽ¥æ”¶ä¸€ä¸ªç”µé‚®ä»¥æ示你的å¸æˆ·è¯¦æƒ…。',
+'passwordreset-legend' => 'é‡ç½®å¯†ç ',
+'passwordreset-disabled' => 'æ­¤wikiå·²ç»ç¦ç”¨å¯†ç é‡ç½®ã€‚',
+'passwordreset-pretext' => '{{PLURAL:$1||输入下é¢çš„æ•°æ®å—之一}}',
+'passwordreset-username' => '用户å:',
+'passwordreset-domain' => '域:',
+'passwordreset-email' => '电å­é‚®ä»¶åœ°å€ï¼š',
+'passwordreset-emailtitle' => '在 {{SITENAME}} çš„å¸æˆ·è¯¦ç»†ä¿¡æ¯',
+'passwordreset-emailtext-ip' => '有人通过IPåœ°å€ $1 (也许是你)è¦æ±‚èŽ·å– {{SITENAME}} ($4)上相关账户的密ç æ示。{{PLURAL:$3|以下账户|此账户}}与该email地å€å…³è”:
+
+$2
+
+{{PLURAL:$3|这个|这些}}临时密ç ä¼šåœ¨{{PLURAL:$5|一天|$5 天}}内过期。请现在登入并设置新的密ç ã€‚如果请求是其他人æ出的,或者您记起你的旧密ç å¹¶ä¸å†éœ€è¦æ›´æ”¹ï¼Œæ‚¨å¯ä»¥æ— è§†æœ¬æ¡æ¶ˆæ¯å¹¶ç»§ç»­ä½¿ç”¨æ—§æœ‰å¯†ç ã€‚',
+'passwordreset-emailtext-user' => '用户 $1 è¦æ±‚èŽ·å– {{SITENAME}} ($4)上你的账户的密ç æ示。{{PLURAL:$3|以下账户|此账户}}与该email地å€å…³è”:
+
+$2
+
+{{PLURAL:$3|这个|这些}}临时密ç ä¼šåœ¨{{PLURAL:$5|一天|$5 天}}内过期。请现在登入并设置新的密ç ã€‚如果请求是其他人æ出的,或者您记起你的旧密ç å¹¶ä¸å†éœ€è¦æ›´æ”¹ï¼Œæ‚¨å¯ä»¥æ— è§†æœ¬æ¡æ¶ˆæ¯å¹¶ç»§ç»­ä½¿ç”¨æ—§æœ‰å¯†ç ã€‚',
+'passwordreset-emailelement' => '用户å:$1
+临时密ç ï¼š$2',
+'passwordreset-emailsent' => 'å·²å‘é€æ醒电å­é‚®ä»¶ã€‚',
+
# Edit page toolbar
'bold_sample' => '粗体文字',
'bold_tip' => '粗体文字',
@@ -716,8 +770,6 @@ $2',
'extlink_tip' => '外部链接(加å‰ç¼€ http://)',
'headline_sample' => '大标题文字',
'headline_tip' => '2级标题文字',
-'math_sample' => '在此æ’入数学公å¼',
-'math_tip' => 'æ’å…¥æ•°å­¦å…¬å¼ ï¼ˆLaTeX)',
'nowiki_sample' => '在此æ’å…¥éžæ ¼å¼æ–‡æœ¬',
'nowiki_tip' => 'æ’å…¥éžæ ¼å¼æ–‡æœ¬',
'image_tip' => 'æ’入文件',
@@ -784,7 +836,7 @@ $2',
'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>。',
-'userpage-userdoesnotexist' => '用户账户“$1â€æœªæ›¾åˆ›å»ºã€‚请在创建ï¼ç¼–辑这个页é¢å‰å…ˆæ£€æŸ¥ä¸€ä¸‹ã€‚',
+'userpage-userdoesnotexist' => '用户账户“<nowiki>$1</nowiki>â€æœªæ›¾åˆ›å»ºã€‚请在创建ï¼ç¼–辑这个页é¢å‰å…ˆæ£€æŸ¥ä¸€ä¸‹ã€‚',
'userpage-userdoesnotexist-view' => '用户账户“$1â€æœªæ›¾åˆ›å»ºã€‚',
'blocked-notice-logextract' => 'è¿™ä½ç”¨æˆ·ç›®å‰å·²è¢«å°ç¦ã€‚以下æ供最近的å°ç¦æ—¥å¿—以供å‚考:',
'clearyourcache' => "'''注æ„:在ä¿å­˜ä»¥åŽï¼Œæ‚¨å¿…须绕过æµè§ˆå™¨ç¼“å­˜æ‰èƒ½çœ‹åˆ°æ‰€ä½œå‡ºçš„改å˜ã€‚'''
@@ -816,6 +868,7 @@ $2',
'''如果这是一次åˆæ³•çš„编辑,请é‡æ–°è¿›è¡Œå°è¯•ã€‚'''如果还ä¸è¡Œï¼Œè¯·[[Special:UserLogout|退出]]并é‡æ–°ç™»å½•ã€‚",
'token_suffix_mismatch' => "'''由于您用户端中的编辑令牌æ¯æŸäº†ä¸€äº›æ ‡ç‚¹ç¬¦å·å­—元,为防止编辑的文字æŸå,您的编辑已ç»è¢«æ‹’ç»ã€‚'''
è¿™ç§æƒ…况通常出现于使用å«æœ‰å¾ˆå¤šè‡­è™«ã€ä»¥ç½‘络为主的匿å代ç†æœåŠ¡çš„时候。",
+'edit_form_incomplete' => "'''编辑表å•çš„æŸäº›éƒ¨åˆ†æ²¡æœ‰åˆ°è¾¾æœåŠ¡å™¨ ;请检查您的编辑内容是å¦å®Œæ•´å¹¶å†è¯•ä¸€æ¬¡ã€‚'''",
'editing' => '编辑“$1â€',
'editingsection' => '编辑“$1â€ï¼ˆæ®µè½ï¼‰',
'editingcomment' => '编辑“$1â€ï¼ˆæ–°æ®µè½ï¼‰',
@@ -945,28 +998,18 @@ $3çš„ç†ç”±æ˜¯''$2''",
'rev-deleted-user-contribs' => '[用户å或IP地å€å·²ç§»é™¤ - 从贡献中éšè—编辑]',
'rev-deleted-text-permission' => "该页é¢ä¿®è®¢å·²è¢«'''删除'''。
在[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 删除日志]中å¯ä»¥æ‰¾åˆ°è¯¦ç»†çš„ä¿¡æ¯ã€‚",
-'rev-deleted-text-unhide' => "该页é¢ä¿®è®¢å·²ç»è¢«'''删除'''。
-在[{{fullurl:{{#Special:Log}}/delete|page={{PAGENAMEE}}}} 删除日志]中å¯ä»¥æ‰¾åˆ°è¯¦ç»†çš„ä¿¡æ¯ã€‚
-作为管ç†å‘˜ï¼Œå¦‚果您想继续的è¯ï¼Œæ‚¨å¯ä»¥ä»ç„¶[$1 去查看这次修订]。",
-'rev-suppressed-text-unhide' => "该页é¢ä¿®è®¢å·²ç»è¢«'''废止'''。
-在[{{fullurl:{{#Special:Log}}/suppress|page={{PAGENAMEE}}}} 废止日志]中å¯ä»¥æ‰¾åˆ°è¯¦ç»†çš„ä¿¡æ¯ã€‚
-作为管ç†å‘˜ï¼Œå¦‚果您想继续的è¯ï¼Œæ‚¨å¯ä»¥ä»ç„¶[$1 去查看这次修订]。",
-'rev-deleted-text-view' => "该页é¢ä¿®è®¢å·²ç»è¢«'''删除'''。作为管ç†å‘˜ï¼Œæ‚¨å¯ä»¥æŸ¥çœ‹å®ƒï¼›
-在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中å¯ä»¥æ‰¾åˆ°è¯¦ç»†çš„ä¿¡æ¯ã€‚",
-'rev-suppressed-text-view' => "该页é¢ä¿®è®¢å·²ç»è¢«'''废止'''。作为管ç†å‘˜ï¼Œæ‚¨å¯ä»¥æŸ¥çœ‹å®ƒï¼›
-在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 废止日志]中å¯ä»¥æ‰¾åˆ°è¯¦ç»†çš„ä¿¡æ¯ã€‚",
+'rev-deleted-text-unhide' => "该修订版本已ç»è¢«'''删除'''。在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中å¯ä»¥æ‰¾åˆ°è¯¦ç»†çš„ä¿¡æ¯ã€‚作为管ç†å‘˜ï¼Œå¦‚果您想继续的è¯ï¼Œæ‚¨å¯ä»¥ä»ç„¶[$1 查看该修订版本]。",
+'rev-suppressed-text-unhide' => "该页é¢ä¿®è®¢å·²ç»è¢«'''监ç£éšè—'''。在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监ç£æ—¥å¿—]中å¯ä»¥æ‰¾åˆ°è¯¦ç»†çš„ä¿¡æ¯ã€‚如果您想继续的è¯ï¼Œæ‚¨å¯ä»¥ä»ç„¶[$1 去查看这次修订]。",
+'rev-deleted-text-view' => "该页é¢ä¿®è®¢å·²ç»è¢«'''删除'''。您å¯ä»¥æŸ¥çœ‹å®ƒã€‚在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中å¯ä»¥æ‰¾åˆ°è¯¦ç»†çš„ä¿¡æ¯ã€‚",
+'rev-suppressed-text-view' => "该页é¢ä¿®è®¢å·²ç»è¢«'''监ç£éšè—'''。您å¯ä»¥æŸ¥çœ‹å®ƒã€‚在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监ç£æ—¥å¿—]中å¯ä»¥æ‰¾åˆ°è¯¦ç»†çš„ä¿¡æ¯ã€‚",
'rev-deleted-no-diff' => "因为其中一次修订已被'''删除''',您ä¸å¯ä»¥æŸ¥çœ‹è¿™ä¸ªå·®å¼‚。
在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中å¯ä»¥æ‰¾åˆ°æ›´å¤šçš„ä¿¡æ¯ã€‚",
'rev-suppressed-no-diff' => "该页é¢çš„其中一次修订已ç»è¢«'''删除''',你ä¸å¯ä»¥æŸ¥çœ‹è¿™æ¬¡çš„修订。",
-'rev-deleted-unhide-diff' => "该页é¢çš„其中一次修订已ç»è¢«'''删除'''。
-在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中å¯ä»¥æ‰¾åˆ°æ›´å¤šçš„ä¿¡æ¯ã€‚
-作为管ç†å‘˜ï¼Œå¦‚果您想继续的è¯ï¼Œæ‚¨å¯ä»¥ä»ç„¶[$1 去查看这次修订]。",
+'rev-deleted-unhide-diff' => "该差异对比其中的一个修订版本已ç»è¢«'''删除'''。在[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中å¯ä»¥æ‰¾åˆ°æ›´å¤šçš„ä¿¡æ¯ã€‚如果您想继续的è¯ï¼Œæ‚¨ä»ç„¶å¯ä»¥[$1 查看这次修订]。",
'rev-suppressed-unhide-diff' => "该页é¢çš„其中一次修订已ç»è¢«'''监ç£éšè—'''。
在[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监ç£æ—¥å¿—]中å¯ä»¥æ‰¾åˆ°æ›´å¤šçš„资料。如果您想继续的è¯ï¼Œæ‚¨å¯ä»¥ä»ç„¶[$1 去查看这次修订]。",
-'rev-deleted-diff-view' => "差异中的一次修订已被'''删除'''。
-作为管ç†å‘˜ï¼Œæ‚¨å¯ä»¥æŸ¥çœ‹æ­¤å·®å¼‚。详细信æ¯å¯åœ¨[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中找到。",
-'rev-suppressed-diff-view' => "差异中的一次修订已被'''废止'''。
-作为管ç†å‘˜ï¼Œæ‚¨å¯ä»¥æŸ¥çœ‹æ­¤å·®å¼‚。详细信æ¯å¯åœ¨[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 废止日志]中找到。",
+'rev-deleted-diff-view' => "差异对比中的一次修订已被'''删除'''。您å¯ä»¥å¯¹æ¯”此差异。详细信æ¯å¯åœ¨[{{fullurl:{{#Special:Log}}/delete|page={{FULLPAGENAMEE}}}} 删除日志]中找到。",
+'rev-suppressed-diff-view' => "差异对比中的一次修订已被'''监ç£éšè—'''。您å¯ä»¥å¯¹æ¯”此差异。详细信æ¯å¯åœ¨[{{fullurl:{{#Special:Log}}/suppress|page={{FULLPAGENAMEE}}}} 监ç£æ—¥å¿—]中找到。",
'rev-delundel' => '显示/éšè—',
'rev-showdeleted' => '显示',
'revisiondelete' => '删除/æ¢å¤åˆ é™¤ä¿®è®¢',
@@ -1041,8 +1084,7 @@ $1",
# Suppression log
'suppressionlog' => '监ç£æ—¥å¿—',
-'suppressionlogtext' => '以下是删除以åŠç”±æ“作员牵涉到内容å°é”的列表。
-å‚看[[Special:IPBlockList|IPå°é”åå•]]去å‚看现时进行中的ç¦æ­¢ä»¥åŠå°é”之åå•ã€‚',
+'suppressionlogtext' => '该列表列出对管ç†å‘˜éšè—的删除与å°ç¦ã€‚å¦å‚è§[[Special:BlockList|IPå°é”åå•]]以查询当å‰çš„å°ç¦åˆ—表。',
# History merging
'mergehistory' => 'åˆå¹¶é¡µé¢åŽ†å²',
@@ -1149,12 +1191,13 @@ $1",
'searchdisabled' => '{{SITENAME}}çš„æœç´¢å·²è¢«ç¦ç”¨ã€‚您å¯ä»¥æš‚时使用Google进行æœç´¢ï¼Œé¡»æ³¨æ„他们索引的{{SITENAME}}内容å¯èƒ½ä¼šè¿‡æ—¶ã€‚',
# Quickbar
-'qbsettings' => '快速导航æ ',
-'qbsettings-none' => 'æ— ',
-'qbsettings-fixedleft' => '左侧固定',
-'qbsettings-fixedright' => 'å³ä¾§å›ºå®š',
-'qbsettings-floatingleft' => '左侧漂移',
-'qbsettings-floatingright' => 'å³ä¾§æ¼‚移',
+'qbsettings' => '快速导航æ ',
+'qbsettings-none' => 'æ— ',
+'qbsettings-fixedleft' => '左侧固定',
+'qbsettings-fixedright' => 'å³ä¾§å›ºå®š',
+'qbsettings-floatingleft' => '左侧漂移',
+'qbsettings-floatingright' => 'å³ä¾§æ¼‚移',
+'qbsettings-directionality' => 'æ ¹æ®æ‚¨çš„语言文本方å‘固定ä½ç½®',
# Preferences page
'preferences' => '系统设置',
@@ -1165,9 +1208,10 @@ $1",
'changepassword' => '更改密ç ',
'prefs-skin' => '皮肤',
'skin-preview' => '预览',
-'prefs-math' => '数学公å¼',
'datedefault' => '默认值',
+'prefs-beta' => '测试版特色',
'prefs-datetime' => '日期和时间',
+'prefs-labs' => '实验室特色',
'prefs-personal' => '用户资料',
'prefs-rc' => '最近更改',
'prefs-watchlist' => '监视列表',
@@ -1189,8 +1233,6 @@ $1",
'columns' => '列:',
'searchresultshead' => 'æœç´¢',
'resultsperpage' => 'æ¯é¡µæ˜¾ç¤ºé“¾æŽ¥æ•°ï¼š',
-'contextlines' => 'æ¯é“¾æ˜¾ç¤ºè¡Œæ•°ï¼š',
-'contextchars' => 'æ¯è¡Œæ˜¾ç¤ºå­—数:',
'stub-threshold' => '<a href="#" class="stub">短页é¢é“¾æŽ¥</a>æ ¼å¼é—¨æ§›å€¼ï¼ˆå­—节):',
'stub-threshold-disabled' => 'å·²åœç”¨',
'recentchangesdays' => '最近更改中的显示日数:',
@@ -1201,7 +1243,7 @@ $1",
'savedprefs' => '您的个人å‚数设置已ç»ä¿å­˜ã€‚',
'timezonelegend' => '时区:',
'localtime' => '当地时间:',
-'timezoneuseserverdefault' => '使用æœåŠ¡å™¨é»˜è®¤å€¼',
+'timezoneuseserverdefault' => '使用wiki默认值($1)',
'timezoneuseoffset' => '其它(指定时差)',
'timezoneoffset' => '时差¹:',
'servertime' => 'æœåŠ¡å™¨æ—¶é—´ï¼š',
@@ -1249,7 +1291,8 @@ $1",
'email' => '电å­é‚®ç®±',
'prefs-help-realname' => '真实姓å为选填项。
如果æ供,å¯ç”¨äºŽè´¡çŒ®ç½²å。',
-'prefs-help-email' => '电å­é‚®ä»¶ä¸ºé€‰å¡«é¡¹ï¼Œä½†æ˜¯åœ¨é‡è®¾å¯†ç æ—¶ï¼Œéœ€è¦ç”¨ç”µå­é‚®ä»¶å°†å¯†ç å¯„给您。你å¯ä»¥é€‰æ‹©è®©åˆ«çš„用户通过用户页或用户讨论页与你è”系,这样å¯ä¸å…¬å¼€æ‚¨çš„身份。',
+'prefs-help-email' => '电å­é‚®ä»¶åœ°å€æ˜¯é€‰å¡«é¡¹ç›®ã€‚但是在你忘记密ç éœ€è¦é‡ç½®å¯†ç æ—¶éœ€è¦ç”µå­é‚®ä»¶åœ°å€ã€‚',
+'prefs-help-email-others' => '你亦å¯ä»¥é€‰æ‹©è®©å…¶ä»–用户通过你的用户页或讨论页上的链接用电å­é‚®ä»¶è”系你。其他用户è”系你时你的电å­é‚®ä»¶åœ°å€ä¸ä¼šæ˜¾ç¤ºã€‚',
'prefs-help-email-required' => '需è¦ç”µå­é‚®ä»¶åœ°å€ã€‚',
'prefs-info' => '基本资料',
'prefs-i18n' => 'ç•Œé¢è¯­è¨€',
@@ -1360,7 +1403,7 @@ $1",
'right-editusercssjs' => '编辑其他用户的CSS和JavaScript文件',
'right-editusercss' => '编辑其他用户的CSS文件',
'right-edituserjs' => '编辑其他用户的JavaScript文件',
-'right-rollback' => '快速回退上一ä½ç”¨æˆ·å¯¹ç‰¹å®šé¡µé¢çš„编辑',
+'right-rollback' => '快速回退最åŽå¯¹ç‰¹å®šé¡µé¢ä½œå‡ºçš„编辑的用户的所有编辑',
'right-markbotedits' => '标示å¤åŽŸç¼–辑作机械人编辑',
'right-noratelimit' => '没有使用频率é™åˆ¶',
'right-import' => '由其它wiki中导入页é¢',
@@ -1374,15 +1417,15 @@ $1",
'right-userrights' => '编辑所有用户的æƒé™',
'right-userrights-interwiki' => '编辑在其它wiki上的用户æƒé™',
'right-siteadmin' => 'é”定和解除é”定数æ®åº“',
-'right-reset-passwords' => 'é‡è®¾å…¶ä»–用户的密ç ',
'right-override-export-depth' => '导出å«æœ‰äº”层深度链接页é¢ä¹‹é¡µé¢',
'right-sendemail' => 'å‘电å­é‚®ä»¶ç»™å…¶ä»–用户',
# User rights log
-'rightslog' => '用户æƒé™æ—¥å¿—',
-'rightslogtext' => '以下记录了用户æƒé™çš„更改记录。',
-'rightslogentry' => 'å°† $1 çš„æƒé™ä»Ž $2 改为 $3',
-'rightsnone' => '(无)',
+'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' => '阅读这个页é¢',
@@ -1504,13 +1547,13 @@ $1",
'minlength1' => '文件å至少è¦æœ‰ä¸€ä¸ªå­—符。',
'illegalfilename' => '文件å“$1â€åŒ…å«åœ¨é¡µé¢æ ‡é¢˜ä¸­ä¸å…许使用的字符。请é‡å‘½å该文件,然åŽé‡æ–°ä¸Šä¼ ã€‚',
'badfilename' => '文件å已被改为“$1â€ã€‚',
-'filetype-mime-mismatch' => '文件扩展åä¸é…MIME类型。',
+'filetype-mime-mismatch' => '文件扩展å“.$1â€ä¸Žæ£€æµ‹åˆ°çš„文件MIME类型($2)ä¸åŒ¹é…。',
'filetype-badmime' => '“$1â€ç±»åž‹çš„文件已被ç¦æ­¢ä¸Šä¼ ã€‚',
'filetype-bad-ie-mime' => '无法上传该文件,因为Internet Explorer会将它检测为“$1â€ï¼Œè¿™æ˜¯ä¸€ç§ç¦æ­¢ä¸”带有潜在å±é™©çš„文件类型。',
'filetype-unwanted-type' => "'''\".\$1\"'''是一ç§ä¸éœ€è¦çš„文件类型。
建议的{{PLURAL:\$3|一ç§|多ç§}}文件类型有\$2。",
-'filetype-banned-type' => "'''\".\$1\"'''是一ç§ä¸å‡†è®¸çš„文件类型。
-容许的{{PLURAL:\$3|一ç§|多ç§}}文件类型有\$2。",
+'filetype-banned-type' => '\'\'\'".$1"\'\'\'{{PLURAL:$4|ä¸æ˜¯ä¸€ä¸ªå…许的文件类型|ä¸æ˜¯ä¸€ä¸ªå…许的文件类型}}。
+å…许 {{PLURAL:$3|文件类型是|文件类型是}} $2。',
'filetype-missing' => '该文件å称并没有扩展å(例如“.jpgâ€ï¼‰ã€‚',
'empty-file' => '您所æ交的文件为空文件。',
'file-too-large' => '您所æ交的文件过大。',
@@ -1526,6 +1569,7 @@ $1",
'large-file' => '建议文件大å°ä¸èƒ½è¶…过 $1;本文件大å°ä¸º $2。',
'largefileserver' => '这个文件的大å°æ¯”æœåŠ¡å™¨é…ç½®å…许的大å°è¿˜è¦å¤§ã€‚',
'emptyfile' => '您所上传的文件ä¸å­˜åœ¨ã€‚è¿™å¯èƒ½æ˜¯ç”±äºŽæ–‡ä»¶å键入错误。请检查您是å¦çœŸçš„è¦ä¸Šä¼ æ­¤æ–‡ä»¶ã€‚',
+'windows-nonascii-filename' => '本wikiä¸æ”¯æŒåœ¨æ–‡ä»¶å中使用特殊字符。',
'fileexists' => '已存在相åŒå称的文件,如果您无法确定您是å¦è¦æ”¹å˜å®ƒï¼Œè¯·æ£€æŸ¥<strong><tt>[[:$1]]</tt></strong>。 [[$1|thumb]]',
'filepageexists' => '这个文件的æ述页已ç»äºŽ<strong><tt>[[:$1]]</tt></strong>创建,但是这个å称的文件尚ä¸å­˜åœ¨ã€‚
您输入的摘è¦ä¸ä¼šæ˜¾ç¤ºåœ¨è¯¥æ述页中。
@@ -1558,6 +1602,8 @@ $1",
'uploadscripted' => '该文件包å«å¯èƒ½è¢«ç½‘络æµè§ˆå™¨é”™è¯¯è§£é‡Šçš„ HTML 或脚本代ç ã€‚',
'uploadvirus' => '该文件包å«ç—…毒ï¼
详情:$1',
+'uploadjava' => '该文件是 ZIP æ–‡ä»¶ï¼Œå…¶ä¸­åŒ…å« Java çš„.class 文件。
+ä¸å…许上传的 Java 文件,因为他们å¯èƒ½ä¼šè·³è¿‡çš„安全é™åˆ¶ã€‚',
'upload-source' => 'æ¥æºæ–‡ä»¶',
'sourcefilename' => 'æºæ–‡ä»¶å:',
'sourceurl' => 'æ¥æºç½‘å€ï¼š',
@@ -1567,10 +1613,6 @@ $1",
'upload-options' => '上传选项',
'watchthisupload' => '监视这个文件',
'filewasdeleted' => '之å‰å·²ç»æœ‰ä¸€ä¸ªåŒå文件被上传åŽåˆè¢«åˆ é™¤äº†ã€‚在上传此文件之å‰æ‚¨éœ€è¦æ£€æŸ¥$1。',
-'upload-wasdeleted' => "'''警告:您现在é‡æ–°ä¸Šä¼ ä¸€ä¸ªå…ˆå‰æ›¾ç»åˆ é™¤è¿‡çš„文件。'''
-
-您应该è¦è€ƒè™‘一下继续上传一个文件页é¢æ˜¯å¦åˆé€‚。
-为方便起è§ï¼Œè¿™ä¸€ä¸ªæ–‡ä»¶çš„删除记录已ç»åœ¨ä¸‹é¢æä¾›:",
'filename-bad-prefix' => '您上传的文件å称是以<strong>“$1â€</strong>作为开头,通常这ç§æ²¡æœ‰å«æ„的文件å称是由数ç ç›¸æœºä¸­è‡ªåŠ¨ç¼–排。请在您的文件中é‡æ–°é€‰æ‹©ä¸€ä¸ªæ›´åŠ æœ‰æ„义的文件å称。',
'upload-success-subj' => '上传æˆåŠŸ',
'upload-success-msg' => '您在[$2]的上传已ç»æˆåŠŸï¼Œå¯ä»¥åœ¨è¿™é‡Œæ‰¾åˆ°ï¼š[[:{{ns:file}}:$1]]',
@@ -1591,6 +1633,23 @@ $1',
'upload-unknown-size' => '未知大å°',
'upload-http-error' => 'å‘生HTTP错误:$1',
+# ZipDirectoryReader
+'zip-file-open-error' => '打开文件的 ZIP 检查时é‡åˆ°ä¸€ä¸ªé”™è¯¯ã€‚',
+'zip-wrong-format' => '指定的文件ä¸æ˜¯ä¸€ä¸ª ZIP 文件。',
+'zip-bad' => '该文件是已æŸå或以其它方å¼æ— æ³•è¯»å–çš„ ZIP 文件。
+ä¸èƒ½æ­£ç¡®æ£€æŸ¥å®‰å…¨ã€‚',
+'zip-unsupported' => '该文件是 ZIP 文件,其中使用 MediaWiki ä¸æ”¯æŒçš„ZIP功能。
+ä¸èƒ½æ­£ç¡®æ£€æŸ¥å®‰å…¨ã€‚',
+
+# Special:UploadStash
+'uploadstash' => '文件贮è—',
+'uploadstash-summary' => '这个页é¢æ供已ç»ä¸Šä¼ ï¼ˆæˆ–者上传中)但未å‘布到wiki之文件存å–。这些文件除了上传的用户之外ä¸ä¼šè¢«å…¶ä»–人å¯è§ã€‚',
+'uploadstash-clear' => '清除贮è—文件',
+'uploadstash-nofiles' => '你没有已贮è—的文件。',
+'uploadstash-badtoken' => '进行这个动作ä¸æˆåŠŸï¼Œæˆ–者你的编辑信æ¯å·²ç»è¿‡æœŸã€‚请å†è¯•ã€‚',
+'uploadstash-errclear' => '清除文件ä¸æˆåŠŸã€‚',
+'uploadstash-refresh' => '更新文件清å•',
+
# img_auth script messages
'img-auth-accessdenied' => 'æ‹’ç»è®¿é—®',
'img-auth-nopathinfo' => 'PATH_INFOé—失。您的æœåŠ¡å™¨å°šæœªè®¾ç½®ä¼ é€è¯¥ä¿¡æ¯ã€‚它å¯èƒ½æ˜¯åŸºäºŽCGI的,因而ä¸æ”¯æŒimg_auth。å‚è§http://www.mediawiki.org/wiki/Manual:Image_Authorization<nowiki></nowiki>。',
@@ -1665,7 +1724,7 @@ $1',
一个[[Special:WhatLinksHere/$2|完整的列表]]å¯ä»¥æ供。',
'nolinkstoimage' => '没有页é¢é“¾æŽ¥åˆ°æœ¬æ–‡ä»¶ã€‚',
'morelinkstoimage' => '查看连接到这个文件的[[Special:WhatLinksHere/$1|更多链接]]。',
-'redirectstofile' => '以下的$1个文件é‡æ–°å®šå‘到这个文件:',
+'linkstoimage-redirect' => '$1(文件é‡å®šå‘)$2',
'duplicatesoffile' => '以下的$1个文件跟这个文件é‡å¤ï¼ˆ[[Special:FileDuplicateSearch/$2|更多细节]]):',
'sharedupload' => '该文件æ¥è‡ªäºŽ$1,它å¯èƒ½åœ¨å…¶å®ƒè®¡åˆ’项目中被应用。',
'sharedupload-desc-there' => '该文件æ¥è‡ªäºŽ$1,它å¯èƒ½åœ¨å…¶å®ƒè®¡åˆ’项目中被应用。
@@ -1755,14 +1814,15 @@ $1',
'statistics-users-active-desc' => '在å‰$1天中æ“作过的用户',
'statistics-mostpopular' => 'æµè§ˆæœ€å¤šçš„页é¢',
-'disambiguations' => '消歧义页',
+'disambiguations' => '链接到消歧义页的页é¢',
'disambiguationspage' => 'Template:消歧义',
-'disambiguations-text' => '以下的页é¢éƒ½æœ‰åˆ°<b>消歧义页</b>的链接, 但它们应该是链到适当的标题。<br />一个页é¢ä¼šè¢«è§†ä¸ºæ¶ˆæ­§ä¹‰é¡µå¦‚果它是链自[[MediaWiki:Disambiguationspage]]。',
+'disambiguations-text' => "以下的页é¢éƒ½æœ‰åˆ°'''消歧义页'''的链接,但它们应该链接到适当的页é¢ã€‚<br />一个页é¢å¦‚果使用了[[MediaWiki:Disambiguationspage]]内的模æ¿ï¼Œåˆ™ä¼šè¢«è§†ä¸ºæ¶ˆæ­§ä¹‰é¡µã€‚",
-'doubleredirects' => 'åŒé‡é‡å®šå‘页',
-'doubleredirectstext' => '此页列出了所有é‡å®šå‘到å¦ä¸€é‡å®šå‘页é¢çš„页é¢ã€‚æ¯ä¸€è¡Œéƒ½åŒ…å«æœ‰åˆ°ç¬¬ä¸€å’Œç¬¬äºŒä¸ªé‡å®šå‘页é¢çš„链接,以åŠç¬¬äºŒä¸ªé‡å®šå‘页é¢çš„目标——通常就是“真正的â€ç›®æ ‡é¡µé¢ï¼Œäº¦å³æ˜¯ç¬¬ä¸€ä¸ªé‡å®šå‘页é¢åº”该指å‘的页é¢ã€‚<del>已划去</del>的为已ç»è§£å†³çš„项目。',
-'double-redirect-fixed-move' => '[[$1]]å·²ç»å®Œæˆç§»åŠ¨ï¼Œå®ƒçŽ°åœ¨é‡å®šå‘到[[$2]]。',
-'double-redirect-fixer' => 'é‡å®šå‘修正器',
+'doubleredirects' => 'åŒé‡é‡å®šå‘页',
+'doubleredirectstext' => '此页列出了所有é‡å®šå‘到å¦ä¸€é‡å®šå‘页é¢çš„页é¢ã€‚æ¯ä¸€è¡Œéƒ½åŒ…å«æœ‰åˆ°ç¬¬ä¸€å’Œç¬¬äºŒä¸ªé‡å®šå‘页é¢çš„链接,以åŠç¬¬äºŒä¸ªé‡å®šå‘页é¢çš„目标——通常就是“真正的â€ç›®æ ‡é¡µé¢ï¼Œäº¦å³æ˜¯ç¬¬ä¸€ä¸ªé‡å®šå‘页é¢åº”该指å‘的页é¢ã€‚<del>已划去</del>的为已ç»è§£å†³çš„项目。',
+'double-redirect-fixed-move' => '[[$1]]å·²ç»å®Œæˆç§»åŠ¨ï¼Œå®ƒçŽ°åœ¨é‡å®šå‘到[[$2]]。',
+'double-redirect-fixed-maintenance' => 'ä¿®å¤ä»Ž[[$1]]到[[$2]]çš„åŒé‡é‡å®šå‘。',
+'double-redirect-fixer' => 'é‡å®šå‘修正器',
'brokenredirects' => 'æŸåçš„é‡å®šå‘页',
'brokenredirectstext' => '以下的é‡å®šå‘页é¢æŒ‡å‘的是ä¸å­˜åœ¨çš„页é¢ï¼š',
@@ -1824,7 +1884,7 @@ $1',
'listusers-creationsort' => '按建立日期排åº',
'usereditcount' => '$1次编辑',
'usercreated' => '$1 $2创建',
-'newpages' => '新建页é¢',
+'newpages' => '新页é¢',
'newpages-username' => '用户å:',
'ancientpages' => '最早页é¢',
'move' => '移动',
@@ -1839,6 +1899,7 @@ $1',
'pager-newer-n' => 'å‰$1个',
'pager-older-n' => 'åŽ$1个',
'suppress' => '监ç£',
+'querypage-disabled' => '此特殊页é¢åŸºäºŽæ•ˆèƒ½çš„原因已ç»è¢«åœç”¨ã€‚',
# Book sources
'booksources' => '网络书æº',
@@ -1890,7 +1951,7 @@ $1',
'sp-deletedcontributions-contribs' => '贡献',
# Special:LinkSearch
-'linksearch' => '外部链接',
+'linksearch' => '外部链接æœç´¢',
'linksearch-pat' => 'æœç´¢ç½‘å€ï¼š',
'linksearch-ns' => 'å字空间:',
'linksearch-ok' => 'æœç´¢',
@@ -1956,6 +2017,10 @@ $1',
'noemailtext' => '该用户还没有指定一个有效的电å­é‚®ä»¶åœ°å€ã€‚',
'nowikiemailtitle' => 'ç¦æ­¢ç”µå­é‚®ä»¶',
'nowikiemailtext' => 'è¿™ä½ç”¨æˆ·é€‰æ‹©ä¸æŽ¥æ”¶å…¶ä»–用户的电å­é‚®ä»¶ã€‚',
+'emailnotarget' => '收件人ä¸å­˜åœ¨æˆ–无效的用户å。',
+'emailtarget' => '输入收件人的用户å',
+'emailusername' => '用户å:',
+'emailusernamesubmit' => 'æ交',
'email-legend' => 'å‘一å°ç”µå­é‚®ä»¶è‡³å¦ä¸€ä½{{SITENAME}}用户',
'emailfrom' => 'å‘件人:',
'emailto' => '收件人:',
@@ -1980,9 +2045,9 @@ $1',
'watchlistanontext' => '请$1以查看或编辑您的监视列表。',
'watchnologin' => '未登录',
'watchnologintext' => '您必须先[[Special:UserLogin|登录]]æ‰èƒ½æ›´æ”¹æ‚¨çš„监视列表。',
-'addedwatch' => '已添加至监视列表',
+'addwatch' => '添加监视列表',
'addedwatchtext' => "页é¢â€œ[[:$1]]â€å·²ç»è¢«åŠ å…¥åˆ°æ‚¨çš„[[Special:Watchlist|监视列表]]中。将æ¥æœ‰å…³æ­¤é¡µé¢åŠå…¶è®¨è®ºé¡µçš„任何修改将会该列表中列出,且会在[[Special:RecentChanges|最近更改]]中以'''粗体'''å½¢å¼åˆ—出以便识别。",
-'removedwatch' => 'å·²åœæ­¢ç›‘视',
+'removewatch' => '从监视列表中删除',
'removedwatchtext' => '页é¢[[:$1]]å·²ç»ä»Ž[[Special:Watchlist|您的监视页é¢]]中移除。',
'watch' => '监视',
'watchthispage' => '监视此页',
@@ -2003,8 +2068,9 @@ $1',
'watchlist-options' => '监视列表选项',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => '监视……',
-'unwatching' => '解除监视……',
+'watching' => '监视……',
+'unwatching' => '解除监视……',
+'watcherrortext' => '更改“$1â€çš„监视列表设置时出错。',
'enotif_mailer' => '{{SITENAME}}邮件通知器',
'enotif_reset' => '将所有页é¢æ ‡ä¸ºå·²è¯»',
@@ -2032,17 +2098,19 @@ $NEWPAGE
在您访问此页之å‰ï¼Œå°†æ¥çš„更改将ä¸ä¼šå‘您å‘通知。您也å¯ä»¥é‡è®¾æ‚¨æ‰€æœ‰ç›‘视页é¢çš„通知标记。
- {{SITENAME}}通知系统
+{{SITENAME}}通知系统
--
+è¦æ›´æ”¹æ‚¨çš„邮件通知设置,请访问
+{{canonicalurl:{{#special:Preferences}}}}
è¦æ”¹å˜æ‚¨çš„监视列表设置,请访问
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
è¦åˆ é™¤æ‚¨ç›‘视列表中的该页é¢ï¼Œè¯·è®¿é—®
$UNWATCHURL
å馈和进一步的帮助:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => '删除页é¢',
@@ -2058,7 +2126,7 @@ $UNWATCHURL
请确定您è¦è¿›è¡Œæ­¤é¡¹æ“作,并且了解其åŽæžœï¼ŒåŒæ—¶æ‚¨çš„行为符åˆ[[{{MediaWiki:Policy-url}}]]。',
'actioncomplete' => 'æ“作完æˆ',
'actionfailed' => 'æ“作失败',
-'deletedtext' => '"<nowiki>$1</nowiki>"å·²ç»è¢«åˆ é™¤ã€‚最近删除的记录请å‚è§$2。',
+'deletedtext' => '"$1"å·²ç»è¢«åˆ é™¤ã€‚最近删除的记录请å‚è§$2。',
'deletedarticle' => '已删除“[[$1]]â€',
'suppressedarticle' => 'å·²éšè—“[[$1]]â€',
'dellogpage' => '删除日志',
@@ -2111,7 +2179,7 @@ $UNWATCHURL
'protect_expiry_invalid' => '输入的终止时间无效。',
'protect_expiry_old' => '终止时间已过去。',
'protect-unchain-permissions' => '解除é”定更多的ä¿æŠ¤é€‰é¡¹',
-'protect-text' => 'ä½ å¯ä»¥åœ¨è¿™é‡Œæµè§ˆå’Œä¿®æ”¹å¯¹é¡µé¢<strong><nowiki>$1</nowiki></strong>çš„ä¿æŠ¤çº§åˆ«ã€‚',
+'protect-text' => 'ä½ å¯ä»¥åœ¨è¿™é‡Œæµè§ˆå’Œä¿®æ”¹å¯¹é¡µé¢<strong>$1</strong>çš„ä¿æŠ¤çº§åˆ«ã€‚',
'protect-locked-blocked' => "您ä¸èƒ½åœ¨è¢«å°ç¦æ—¶æ›´æ”¹ä¿æŠ¤çº§åˆ«ã€‚以下是页é¢'''$1'''的当å‰è®¾ç½®ï¼š",
'protect-locked-dblock' => "您ä¸èƒ½åœ¨æ•°æ®åº“é”定时更改ä¿æŠ¤çº§åˆ«ã€‚以下是页é¢'''$1'''的当å‰è®¾ç½®ï¼š",
'protect-locked-access' => "您的å¸æˆ·æ²¡æœ‰è¶³å¤Ÿçš„æƒé™åŽ»æ›´æ”¹ä¿æŠ¤çº§åˆ«ã€‚以下是页é¢'''$1'''的当å‰è®¾ç½®ï¼š",
@@ -2161,7 +2229,7 @@ $UNWATCHURL
'viewdeletedpage' => '查看被删页é¢',
'undeletepagetext' => '以下{{PLURAL:$1|页é¢|$1个页é¢}}已被删除,但ä¾ç„¶åœ¨å½’档中并å¯ä»¥è¢«æ¢å¤ã€‚å½’æ¡£å¯èƒ½ä¼šè¢«å®šæ—¶æ¸…ç†ã€‚',
'undelete-fieldset-title' => 'æ¢å¤ä¿®è®¢',
-'undeleteextrahelp' => "æ¢å¤æ•´ä¸ªé¡µé¢æ—¶ï¼Œè¯·æ¸…除所有å¤é€‰æ¡†åŽç‚¹å‡»'''''{{int:undeletebtn}}'''''。æ¢å¤ç‰¹å®šç‰ˆæœ¬æ—¶ï¼Œè¯·é€‰æ‹©ç›¸åº”版本å‰çš„å¤é€‰æ¡†åŽç‚¹å‡»'''''{{int:undeletebtn}}'''''。点击'''''{{int:undeletereset}}'''''将清除评论内容åŠæ‰€æœ‰å¤é€‰æ¡†ã€‚",
+'undeleteextrahelp' => "æ¢å¤æ•´ä¸ªç¼–辑历å²æ—¶ï¼Œè¯·æ¸…除所有å¤é€‰æ¡†åŽç‚¹å‡»'''''{{int:undeletebtn}}'''''。æ¢å¤ç‰¹å®šç‰ˆæœ¬æ—¶ï¼Œè¯·é€‰æ‹©ç›¸åº”版本å‰çš„å¤é€‰æ¡†åŽç‚¹å‡»'''''{{int:undeletebtn}}'''''。",
'undeleterevisions' => '$1版本存档',
'undeletehistory' => '如果您æ¢å¤äº†è¯¥é¡µé¢ï¼Œæ‰€æœ‰ç‰ˆæœ¬éƒ½ä¼šè¢«æ¢å¤åˆ°ä¿®è®¢åŽ†å²ä¸­ã€‚
如果本页删除åŽæœ‰ä¸€ä¸ªåŒå的新页é¢å»ºç«‹ï¼Œè¢«æ¢å¤çš„版本将会出现在先å‰çš„历å²ä¸­ã€‚',
@@ -2201,9 +2269,12 @@ $1',
'undelete-show-file-submit' => '是',
# Namespace form on various pages
-'namespace' => 'å字空间:',
-'invert' => 'å选',
-'blanknamespace' => '(主è¦ï¼‰',
+'namespace' => 'å字空间:',
+'invert' => 'å选',
+'tooltip-invert' => '选中此å¤é€‰æ¡†æ¥éšè—选定å字空间(åŠå…¶ç›¸å…³å字空间,若该选项亦被选中)范围内的页é¢æ›´æ”¹',
+'namespace_association' => '相关å字空间',
+'tooltip-namespace_association' => '选中此å¤é€‰æ¡†å¯åŒ…括与选定å字空间相关的讨论页或å­é¡µé¢',
+'blanknamespace' => '(主è¦ï¼‰',
# Contributions
'contributions' => '用户贡献',
@@ -2253,13 +2324,15 @@ $1',
'whatlinkshere-filters' => '过滤器',
# Block/unblock
+'autoblockid' => 'è‡ªåŠ¨æŸ¥å° #$1',
+'block' => 'å°ç¦ç”¨æˆ·',
+'unblock' => '解å°ç”¨æˆ·',
'blockip' => 'å°ç¦ç”¨æˆ·',
'blockip-title' => 'å°ç¦ç”¨æˆ·',
'blockip-legend' => 'å°ç¦ç”¨æˆ·',
'blockiptext' => '使用下方的表å•æ¥ç¦æ­¢æ¥è‡ªç‰¹å®šIP地å€æˆ–用户å的写访问。
åªæœ‰åœ¨ä¸ºäº†é˜²æ­¢ç ´å,并符åˆ[[{{MediaWiki:Policy-url}}|方针]]的情况下æ‰å¯é‡‡å–此行动。
请在下é¢è¾“入一个具体的ç†ç”±ï¼ˆä¾‹å¦‚引述一个被破å的页é¢ï¼‰ã€‚',
-'ipaddress' => 'IP地å€ï¼š',
'ipadressorusername' => 'IP地å€æˆ–用户å:',
'ipbexpiry' => '期é™ï¼š',
'ipbreason' => '原因:',
@@ -2272,7 +2345,7 @@ $1',
** èƒè¿«è¡Œä¸ºï¼éªšæ‰°ä»–人
** 滥用多个å¸å·
** ä¸èƒ½æŽ¥å—的用户å',
-'ipbanononly' => '仅阻止匿å用户',
+'ipb-hardblock' => '防止已登录的用户从该 IP 地å€ç¼–辑',
'ipbcreateaccount' => '阻止创建新账å·',
'ipbemailban' => '阻止用户å‘é€ç”µé‚®',
'ipbenableautoblock' => '自动å°ç¦è¯¥ç”¨æˆ·æœ€åŽä½¿ç”¨çš„IP地å€ï¼Œä»¥åŠä»–们éšåŽè¯•å›¾ç”¨äºŽç¼–辑的所有IP地å€',
@@ -2283,12 +2356,15 @@ $1',
'ipbotherreason' => '其它ï¼é™„带原因:',
'ipbhidename' => '在编辑åŠåˆ—表中éšè—用户å',
'ipbwatchuser' => '监视这ä½ç”¨æˆ·çš„用户页é¢ä»¥åŠå…¶å¯¹è¯é¡µé¢',
-'ipballowusertalk' => 'å…许该用户在å°ç¦æœŸå†…编辑自己的讨论页',
+'ipb-disableusertalk' => 'ç¦æ­¢è¢«å°ç¦ç”¨æˆ·ç¼–辑自己的对è¯é¡µ',
'ipb-change-block' => '使用这些设置é‡æ–°å°ç¦ç”¨æˆ·',
+'ipb-confirm' => '确认å°ç¦',
'badipaddress' => '无效IP地å€',
'blockipsuccesssub' => 'å°ç¦æˆåŠŸ',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]已被å°ç¦ã€‚<br />
å‚è§[[Special:IPBlockList|å°ç¦åˆ—表]]以å¤æ ¸å°ç¦ã€‚',
+'ipb-blockingself' => '您将è¦å°ç¦è‡ªå·±ï¼ç¡®å®žè¦è¿™æ ·åšå—?',
+'ipb-confirmhideuser' => '您å³å°†åœ¨å°ç¦ç”¨æˆ·çš„åŒæ—¶å¯ç”¨â€œéšè—账户â€åŠŸèƒ½ã€‚这将从所有列表和日志记录中éšè—这个用户å。您确认这样åšå—?',
'ipb-edit-dropdown' => '编辑å°ç¦ç†ç”±',
'ipb-unblock-addr' => '解å°$1',
'ipb-unblock' => '解å°ç”¨æˆ·å或IP地å€',
@@ -2298,17 +2374,23 @@ $1',
'unblockiptext' => '使用下列表å•æ¥æ¢å¤ä¹‹å‰è¢«å°ç¦çš„IP地å€æˆ–用户å的写æƒé™ã€‚',
'ipusubmit' => '解除此å°ç¦',
'unblocked' => '[[User:$1|$1]]å·²ç»è¢«è§£å°',
+'unblocked-range' => '$1已被解å°',
'unblocked-id' => 'å°ç¦$1已被解除',
+'blocklist' => '被å°ç¦ç”¨æˆ·',
'ipblocklist' => '被å°ç¦ç”¨æˆ·',
'ipblocklist-legend' => '查找已å°ç¦ç”¨æˆ·',
-'ipblocklist-username' => '用户å或IP地å€ï¼š',
-'ipblocklist-sh-userblocks' => '$1账户å°ç¦',
-'ipblocklist-sh-tempblocks' => '$1临时å°ç¦',
-'ipblocklist-sh-addressblocks' => '$1å•IPå°ç¦',
+'blocklist-userblocks' => 'éšè—å¸æˆ·å°ç¦',
+'blocklist-tempblocks' => 'éšè—临时å°ç¦',
+'blocklist-addressblocks' => 'éšè—å•ä¸ªIPå°ç¦',
+'blocklist-timestamp' => '时间戳',
+'blocklist-target' => '目标',
+'blocklist-expiry' => '过期',
+'blocklist-by' => '执行者',
+'blocklist-params' => 'å°ç¦è®¾ç½®',
+'blocklist-reason' => '原因',
'ipblocklist-submit' => 'æœç´¢',
'ipblocklist-localblock' => '本地å°ç¦',
'ipblocklist-otherblocks' => '其他{{PLURAL:$1|å°ç¦|å°ç¦}}',
-'blocklistline' => '$1$2å°ç¦$3($4)',
'infiniteblock' => 'æ— é™æœŸ',
'expiringblock' => '$1 $2到期',
'anononlyblock' => 'ä»…é™åŒ¿å用户',
@@ -2329,7 +2411,7 @@ $1被å°ç¦çš„ç†ç”±æ˜¯ï¼šâ€œ$2â€',
'blocklog-showsuppresslog' => '此用户曾被å°ç¦å¹¶éšè—。以下列出éšè—日志以供å‚考:',
'blocklogentry' => 'å°ç¦[[$1]],终止时间为$2$3',
'reblock-logentry' => '更改[[$1]]çš„å°ç¦ç»ˆæ­¢æ—¶é—´ $2 $3',
-'blocklogtext' => '此处给出了å°ç¦å’Œè§£å°ç”¨æˆ·çš„æ“作日志,被自动å°ç¦çš„IP地å€ä¸åœ¨æ­¤è¡¨ã€‚请查看[[Special:IPBlockList|å°ç¦åˆ—表]]获知当å‰è¢«å°ç¦çš„用户和IP地å€ã€‚',
+'blocklogtext' => '此处给出了å°ç¦å’Œè§£å°ç”¨æˆ·çš„æ“作日志,被自动å°ç¦çš„IP地å€ä¸åœ¨æ­¤è¡¨ã€‚请查看[[Special:BlockList|å°ç¦åˆ—表]]获知当å‰è¢«å°ç¦çš„用户和IP地å€ã€‚',
'unblocklogentry' => 'å·²è§£å° $1',
'block-log-flags-anononly' => 'ä»…é™åŒ¿å用户',
'block-log-flags-nocreate' => 'åœç”¨è´¦æˆ·åˆ›å»º',
@@ -2343,9 +2425,9 @@ $1被å°ç¦çš„ç†ç”±æ˜¯ï¼šâ€œ$2â€',
'ipb_expiry_temp' => 'éšè—用户åçš„å°ç¦å¿…须是永久性的。',
'ipb_hide_invalid' => '无法éšè—此账户,它å¯èƒ½æœ‰å¤ªå¤šç¼–辑。',
'ipb_already_blocked' => '“$1â€å·²è¢«å°ç¦',
-'ipb-needreblock' => '== å·²å°ç¦ ==
-$1已被å°ç¦ã€‚您是å¦æƒ³æ›´æ”¹å°ç¦è®¾ç½®ï¼Ÿ',
+'ipb-needreblock' => '$1已被å°ç¦ã€‚您是å¦æƒ³æ›´æ”¹å°ç¦è®¾ç½®ï¼Ÿ',
'ipb-otherblocks-header' => '其他{{PLURAL:$1|å°ç¦|å°ç¦}}',
+'unblock-hideuser' => '您无法å–消å°ç¦è¯¥ç”¨æˆ·ï¼Œå› ä¸ºä»–们的用户å已被éšè—。',
'ipb_cant_unblock' => '错误:找ä¸åˆ°å°ç¦ID$1。å¯èƒ½å·²ç»è§£é™¤å°ç¦ã€‚',
'ipb_blocked_as_range' => '错误:IP地å€$1未被直接å°ç¦ï¼Œæ•…无法解除å°ç¦ã€‚然而,它ä½äºŽIP地å€æ®µ$2çš„å°ç¦èŒƒå›´å†…,åŽè€…å¯è¢«è§£é™¤å°ç¦ã€‚',
'ip_range_invalid' => '无效的IP地å€æ®µã€‚',
@@ -2379,6 +2461,7 @@ $1已被å°ç¦ã€‚您是å¦æƒ³æ›´æ”¹å°ç¦è®¾ç½®ï¼Ÿ',
'unlockdbsuccesstext' => 'æ•°æ®åº“已解é”。',
'lockfilenotwritable' => 'æ•°æ®åº“é”定文件ä¸å¯å†™ã€‚è¦é”定和解é”æ•°æ®åº“,该文件必须对网络æœåŠ¡å™¨å¯å†™ã€‚',
'databasenotlocked' => 'æ•°æ®åº“没有é”定。',
+'lockedbyandtime' => '(由 {{GENDER:$1|$1}} 于$2 $3执行)',
# Move page
'move-page' => '移动$1',
@@ -2430,7 +2513,7 @@ $1已被å°ç¦ã€‚您是å¦æƒ³æ›´æ”¹å°ç¦è®¾ç½®ï¼Ÿ',
'pagemovedsub' => '移动æˆåŠŸ',
'movepage-moved' => "'''“$1â€å·²ç§»åŠ¨åˆ°â€œ$2â€'''",
'movepage-moved-redirect' => 'é‡å®šå‘已创建。',
-'movepage-moved-noredirect' => 'é‡å®šå‘的创建已阻止。',
+'movepage-moved-noredirect' => 'é‡å®šå‘的创建已被ç¦ç”¨ã€‚',
'articleexists' => '该å称的页é¢å·²å­˜åœ¨ï¼Œæˆ–者您使用的å称无效。请å¦é€‰ä¸€å。',
'cantmove-titleprotected' => '您无法将页é¢ç§»åŠ¨åˆ°è¯¥ä½ç½®ï¼Œå› ä¸ºæ–°æ ‡é¢˜å·²è¢«ä¿æŠ¤ä»¥é˜²æ­¢åˆ›å»ºã€‚',
'talkexists' => "'''页é¢æœ¬èº«ç§»åŠ¨æˆåŠŸï¼Œä½†ç”±äºŽæ–°æ ‡é¢˜ä¸‹å·²æœ‰è®¨è®ºé¡µå­˜åœ¨ï¼Œæ•…讨论页无法移动。请手工åˆå¹¶è¿™ä¸¤ä¸ªé¡µé¢ã€‚'''",
@@ -2506,7 +2589,7 @@ $1已被å°ç¦ã€‚您是å¦æƒ³æ›´æ”¹å°ç¦è®¾ç½®ï¼Ÿ',
'allmessagesdefault' => '默认消æ¯æ–‡æœ¬',
'allmessagescurrent' => '当å‰æ¶ˆæ¯æ–‡æœ¬',
'allmessagestext' => '此处列出了MediaWikiå字空间下的所有有效系统消æ¯ã€‚
-如果想为MediaWiki的本地化贡献翻译,请访问[http://www.mediawiki.org/wiki/Localisation MediaWiki本地化]和[http://translatewiki.net translatewiki.net]。',
+如果想为MediaWiki的本地化贡献翻译,请访问[//www.mediawiki.org/wiki/Localisation MediaWiki本地化]和[//translatewiki.net translatewiki.net]。',
'allmessagesnotsupportedDB' => "此页é¢æ— æ³•ä½¿ç”¨ï¼Œå› ä¸º'''\$wgUseDatabaseMessages'''已被设置关闭。",
'allmessages-filter-legend' => '过滤',
'allmessages-filter' => '以自定状况过滤:',
@@ -2668,9 +2751,7 @@ $1已被å°ç¦ã€‚您是å¦æƒ³æ›´æ”¹å°ç¦è®¾ç½®ï¼Ÿ',
'vector.js' => '/* 此处的JavaScript将加载于使用Vector皮肤的用户 */',
# Metadata
-'nodublincore' => 'Dublin Core RDF 元数æ®åœ¨è¯¥æœåŠ¡å™¨ä¸å¯ç”¨ã€‚',
-'nocreativecommons' => 'Creative Commons RDF 元数æ®åœ¨è¯¥æœåŠ¡å™¨ä¸å¯ç”¨ã€‚',
-'notacceptable' => '该网站æœåŠ¡å™¨ä¸èƒ½æ供您的客户端能识别的数æ®æ ¼å¼ã€‚',
+'notacceptable' => '该网站æœåŠ¡å™¨ä¸èƒ½æ供您的客户端能识别的数æ®æ ¼å¼ã€‚',
# Attribution
'anonymous' => '{{SITENAME}}的匿å{{PLURAL:$1|用户|用户}}',
@@ -2694,12 +2775,17 @@ $1已被å°ç¦ã€‚您是å¦æƒ³æ›´æ”¹å°ç¦è®¾ç½®ï¼Ÿ',
'spam_blanking' => '消éšæ‰€æœ‰åŒ…å«é“¾æŽ¥è‡³$1的修订',
# Info page
-'infosubtitle' => '页é¢ä¿¡æ¯',
-'numedits' => '编辑数(页é¢ï¼‰ï¼š$1',
-'numtalkedits' => '编辑数(讨论页):$1',
-'numwatchers' => '监视者数目:$1',
-'numauthors' => '作者数é‡ï¼ˆé¡µé¢ï¼‰ï¼š$1',
-'numtalkauthors' => '作者数é‡ï¼ˆè®¨è®ºé¡µï¼‰ï¼š$1',
+'pageinfo-title' => '"$1" çš„ä¿¡æ¯',
+'pageinfo-header-edits' => '编辑',
+'pageinfo-header-watchlist' => '监视列表',
+'pageinfo-header-views' => '视图',
+'pageinfo-subjectpage' => '页é¢',
+'pageinfo-talkpage' => '讨论页',
+'pageinfo-watchers' => '监视者数目',
+'pageinfo-edits' => '编辑数é‡',
+'pageinfo-authors' => '作者数é‡',
+'pageinfo-views' => '视图的数é‡',
+'pageinfo-viewsperedit' => 'æ¯ä¸ªç¼–辑视图',
# Skin names
'skinname-standard' => '标准',
@@ -2708,25 +2794,6 @@ $1已被å°ç¦ã€‚您是å¦æƒ³æ›´æ”¹å°ç¦è®¾ç½®ï¼Ÿ',
'skinname-simple' => '简å•',
'skinname-modern' => '现代',
-# Math options
-'mw_math_png' => '永远使用PNG图åƒ',
-'mw_math_simple' => '如果是简å•çš„å…¬å¼ä½¿ç”¨HTML,å¦åˆ™ä½¿ç”¨PNG图åƒ',
-'mw_math_html' => '如果å¯ä»¥ç”¨HTML,å¦åˆ™ç”¨PNG图åƒ',
-'mw_math_source' => '显示为TeX代ç ï¼ˆä½¿ç”¨æ–‡å­—æµè§ˆå™¨æ—¶ï¼‰',
-'mw_math_modern' => '推è为新版æµè§ˆå™¨ä½¿ç”¨',
-'mw_math_mathml' => 'å°½å¯èƒ½ä½¿ç”¨MathML(试验中)',
-
-# Math errors
-'math_failure' => '解æžå¤±è´¥',
-'math_unknown_error' => '未知错误',
-'math_unknown_function' => '未知函数',
-'math_lexing_error' => 'å¥æ³•é”™è¯¯',
-'math_syntax_error' => '语法错误',
-'math_image_error' => 'PNG 转æ¢å¤±è´¥ ;检查正确安装的 latex å’Œ dvipng (或 dvips + gs + convert)',
-'math_bad_tmpdir' => '无法写入或建立数学公å¼ä¸´æ—¶ç›®å½•',
-'math_bad_output' => '无法写入或建立数学公å¼è¾“出目录',
-'math_notexvc' => '"texvc"执行文件é—失;请å‚ç…§math/README进行é…置。',
-
# Patrolling
'markaspatrolleddiff' => '标记为已巡查',
'markaspatrolledtext' => '标记此页é¢ä¸ºå·²å·¡æŸ¥',
@@ -2762,22 +2829,25 @@ $1',
'nextdiff' => '下一编辑→',
# Media information
-'mediawarning' => "'''警告''':该文件类型å¯èƒ½åŒ…å«æ¶æ„代ç ã€‚
+'mediawarning' => "'''警告''':该文件类型å¯èƒ½åŒ…å«æ¶æ„代ç ã€‚
è¿è¡Œå®ƒå¯èƒ½å¯¹æ‚¨çš„系统带æ¥å±é™©ã€‚",
-'imagemaxsize' => "图åƒå¤§å°é™åˆ¶ï¼š<br />''(文件说明页é¢ï¼‰''",
-'thumbsize' => '缩略图大å°ï¼š',
-'widthheightpage' => '$1×$2,$3页',
-'file-info' => '文件大å°ï¼š$1,MIME类型:$2',
-'file-info-size' => '$1×$2åƒç´ ï¼Œæ–‡ä»¶å¤§å°ï¼š$3,MIME类型:$4',
-'file-nohires' => '<small>没有更高的分辨率。</small>',
-'svg-long-desc' => 'SVG文件,图åƒå¤§å°ï¼š$1×$2åƒç´ ï¼Œæ–‡ä»¶å¤§å°ï¼š$3',
-'show-big-image' => '完整分辨率',
-'show-big-image-thumb' => '<small>这幅缩略图的分辨率:$1×$2åƒç´ </small>',
-'file-info-gif-looped' => '循环',
-'file-info-gif-frames' => '$1帧',
-'file-info-png-looped' => '循环',
-'file-info-png-repeat' => '已播放$1é',
-'file-info-png-frames' => '$1帧',
+'imagemaxsize' => "图åƒå¤§å°é™åˆ¶ï¼š<br />''(文件说明页é¢ï¼‰''",
+'thumbsize' => '缩略图大å°ï¼š',
+'widthheightpage' => '$1×$2,$3页',
+'file-info' => '文件大å°ï¼š$1,MIME类型:$2',
+'file-info-size' => '$1×$2åƒç´ ï¼Œæ–‡ä»¶å¤§å°ï¼š$3,MIME类型:$4',
+'file-info-size-pages' => '$1×$2åƒç´ ï¼Œæ–‡ä»¶å¤§å°ï¼š$3,MIME类型:$4,$5个页é¢',
+'file-nohires' => '<small>没有更高的分辨率。</small>',
+'svg-long-desc' => 'SVG文件,图åƒå¤§å°ï¼š$1×$2åƒç´ ï¼Œæ–‡ä»¶å¤§å°ï¼š$3',
+'show-big-image' => '完整分辨率',
+'show-big-image-preview' => '<small>此预览的大å°ï¼š$1.</small>',
+'show-big-image-other' => '<small>其他解决方案:$1。</small>',
+'show-big-image-size' => '$1×$2åƒç´ ',
+'file-info-gif-looped' => '循环',
+'file-info-gif-frames' => '$1帧',
+'file-info-png-looped' => '循环',
+'file-info-png-repeat' => '已播放$1é',
+'file-info-png-frames' => '$1帧',
# Special:NewFiles
'newimages' => '新文件库',
@@ -2824,15 +2894,21 @@ Variants for Chinese language
如果此文件的æºæ–‡ä»¶å·²ç»è¢«ä¿®æ”¹ï¼Œä¸€äº›ä¿¡æ¯åœ¨ä¿®æ”¹åŽçš„文件中将ä¸èƒ½å®Œå…¨å映出æ¥ã€‚',
'metadata-expand' => '显示详细资料',
'metadata-collapse' => 'éšè—详细资料',
-'metadata-fields' => '在本信æ¯ä¸­æ‰€åˆ—出的 EXIF 元数æ®åŸŸå°†åŒ…å«åœ¨å›¾ç‰‡æ˜¾ç¤ºé¡µé¢,
-当元数æ®è¡¨æŸåæ—¶åªæ˜¾ç¤ºä»¥ä¸‹ä¿¡æ¯ï¼Œå…¶ä»–的元数æ®é»˜è®¤ä¸ºéšè—。
+'metadata-fields' => '在本信æ¯ä¸­æ‰€åˆ—出的 EXIF 元数æ®åŸŸå°†åŒ…å«åœ¨å›¾ç‰‡æ˜¾ç¤ºé¡µé¢ï¼Œå½“元数æ®è¡¨æŸåæ—¶åªæ˜¾ç¤ºä»¥ä¸‹ä¿¡æ¯ã€‚
+其他的元数æ®é»˜è®¤ä¸ºéšè—。
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => '宽度',
@@ -2847,13 +2923,11 @@ Variants for Chinese language
'exif-ycbcrpositioning' => '黄色和洋红é…ç½®',
'exif-xresolution' => '水平分辨率',
'exif-yresolution' => '垂直分辨率',
-'exif-resolutionunit' => 'Xå’ŒY轴分辨率å•ä½',
'exif-stripoffsets' => '图åƒæ•°æ®åŒº',
'exif-rowsperstrip' => 'æ¯å¸¦è¡Œæ•°',
'exif-stripbytecounts' => 'æ¯åŽ‹ç¼©å¸¦å­—节数',
'exif-jpeginterchangeformat' => 'JPEG SOIå移',
'exif-jpeginterchangeformatlength' => 'JPEGæ•°æ®å­—节',
-'exif-transferfunction' => '转移功能',
'exif-whitepoint' => '白点色度',
'exif-primarychromaticities' => '主è¦è‰²åº¦',
'exif-ycbcrcoefficients' => '色彩空间转æ¢çŸ©é˜µç³»æ•°',
@@ -2872,7 +2946,6 @@ Variants for Chinese language
'exif-compressedbitsperpixel' => '图åƒåŽ‹ç¼©æ¨¡å¼',
'exif-pixelydimension' => '图åƒå®½åº¦',
'exif-pixelxdimension' => '图åƒé«˜åº¦',
-'exif-makernote' => '制造商注释',
'exif-usercomment' => '用户注释',
'exif-relatedsoundfile' => '相关的音频文件',
'exif-datetimeoriginal' => 'æ•°æ®ç”Ÿæˆæ—¥æœŸæ—¶é—´',
@@ -2886,7 +2959,6 @@ Variants for Chinese language
'exif-exposureprogram' => 'æ›å…‰ç¨‹åº',
'exif-spectralsensitivity' => 'æ„Ÿå…‰',
'exif-isospeedratings' => '感光度(ISO)',
-'exif-oecf' => '光电转æ¢å› å­',
'exif-shutterspeedvalue' => 'APEX快门速度',
'exif-aperturevalue' => 'APEX光圈',
'exif-brightnessvalue' => 'APEX 亮度',
@@ -2899,7 +2971,6 @@ Variants for Chinese language
'exif-focallength' => '焦è·',
'exif-subjectarea' => '主体区域',
'exif-flashenergy' => '闪光ç¯å¼ºåº¦',
-'exif-spatialfrequencyresponse' => '空间频率å“应',
'exif-focalplanexresolution' => '焦平é¢X分辨率',
'exif-focalplaneyresolution' => '焦平é¢Y分辨率',
'exif-focalplaneresolutionunit' => '焦平é¢åˆ†è¾¨çŽ‡å•ä½',
@@ -2908,7 +2979,6 @@ Variants for Chinese language
'exif-sensingmethod' => '感光模å¼',
'exif-filesource' => '文件æº',
'exif-scenetype' => '场景类型',
-'exif-cfapattern' => 'CFA模å¼',
'exif-customrendered' => '图åƒå¤„ç†',
'exif-exposuremode' => 'æ›å…‰æ¨¡å¼',
'exif-whitebalance' => '白平衡',
@@ -2953,11 +3023,80 @@ Variants for Chinese language
'exif-gpsareainformation' => 'GPS区域å称',
'exif-gpsdatestamp' => 'GPS日期',
'exif-gpsdifferential' => 'GPS差动修正',
+'exif-jpegfilecomment' => 'JPEG 文件注释',
+'exif-keywords' => '关键字',
+'exif-worldregioncreated' => '照片中的世界区域',
+'exif-countrycreated' => '在æ‹æ‘„图片的国家',
+'exif-countrycodecreated' => '在æ‹æ‘„图片的国家代ç ',
+'exif-provinceorstatecreated' => 'çœæˆ–æ‹æ‘„图片中的状æ€',
+'exif-citycreated' => '照片中的城市',
+'exif-sublocationcreated' => '照片æ‹æ‘„地点在城市中的ä½ç½®',
+'exif-worldregiondest' => '世界区域显示',
+'exif-countrydest' => '所示的国家',
+'exif-countrycodedest' => '国家所示的代ç ',
+'exif-provinceorstatedest' => 'çœæˆ–状æ€æ˜¾ç¤º',
+'exif-citydest' => '所示的城市',
+'exif-sublocationdest' => '显示城市中的详细地点',
'exif-objectname' => '简称',
+'exif-specialinstructions' => '特别说明',
+'exif-headline' => '标题',
+'exif-credit' => '信用/供应商',
+'exif-source' => 'æº',
+'exif-editstatus' => '编辑状æ€çš„图åƒ',
+'exif-urgency' => '紧迫性',
+'exif-fixtureidentifier' => '夹具å称',
+'exif-locationdest' => 'ä½ç½®æè¿°',
+'exif-locationdestcode' => 'ä½ç½®æ‰€ç¤ºçš„代ç ',
+'exif-objectcycle' => '媒体应当使用的时间段',
+'exif-contact' => 'è”系信æ¯',
+'exif-writer' => '作家',
+'exif-languagecode' => '语言',
+'exif-iimversion' => 'IIM 版本',
+'exif-iimcategory' => '类别',
+'exif-iimsupplementalcategory' => '补充的类别',
+'exif-datetimeexpires' => 'ä¸è¦ä½¿ç”¨åŽ',
+'exif-datetimereleased' => 'å‘表',
+'exif-originaltransmissionref' => '传输ä½ç½®çš„原代ç ',
+'exif-identifier' => '标识符',
+'exif-lens' => '使用的镜头',
+'exif-serialnumber' => '相机的åºåˆ—å·',
+'exif-cameraownername' => '相机的所有者',
+'exif-label' => '标签',
+'exif-datetimemetadata' => '上次修改日期的元数æ®',
+'exif-nickname' => 'éžæ­£å¼çš„图åƒçš„å称',
+'exif-rating' => '评分(满分为5)',
+'exif-rightscertificate' => 'æƒåˆ©ç®¡ç†è¯ä¹¦',
+'exif-copyrighted' => '版æƒçŠ¶æ€',
+'exif-copyrightowner' => '著作æƒæ‰€æœ‰è€…',
+'exif-usageterms' => '使用æ¡æ¬¾',
+'exif-webstatement' => '网上版æƒè¯´æ˜Ž',
+'exif-originaldocumentid' => '原始文档的唯一 ID',
+'exif-licenseurl' => '版æƒè®¸å¯çš„ URL',
+'exif-morepermissionsurl' => '替代的许å¯ä¿¡æ¯',
+'exif-attributionurl' => '当é‡ç”¨è¿™é¡¹å·¥ä½œï¼Œè¯·é“¾æŽ¥åˆ°',
+'exif-preferredattributionname' => '当é‡ç”¨è¿™é¡¹å·¥ä½œï¼Œè¯·å½’功于',
+'exif-pngfilecomment' => 'PNG 文件注释',
+'exif-disclaimer' => 'å…责声明',
+'exif-contentwarning' => '内容的警告',
+'exif-giffilecomment' => 'GIF 文件注释',
+'exif-intellectualgenre' => '项目类型',
+'exif-subjectnewscode' => '主题代ç ',
+'exif-scenecode' => 'IPTC 现场代ç ',
+'exif-event' => '事件æè¿°',
+'exif-organisationinimage' => '组织æè¿°',
+'exif-personinimage' => 'æ述的人',
+'exif-originalimageheight' => '之å‰å®ƒè¢«è£å‰ªå›¾åƒçš„高度',
+'exif-originalimagewidth' => '之å‰å®ƒè¢«è£å‰ªå›¾åƒçš„宽度',
# EXIF attributes
'exif-compression-1' => '未压缩',
-'exif-compression-6' => 'è”åˆå›¾åƒä¸“家组格',
+'exif-compression-2' => 'CCITT第3组一维修改éœå¤«æ›¼æ¸¸ç¨‹ç¼–ç ',
+'exif-compression-3' => 'CCITT第3组传真编ç ',
+'exif-compression-4' => 'CCITT第4组传真编ç ',
+'exif-compression-6' => 'JPEG(旧)',
+
+'exif-copyrighted-true' => '版æƒ',
+'exif-copyrighted-false' => '公共领域',
'exif-unknowndate' => '未知的日期',
@@ -2973,6 +3112,8 @@ Variants for Chinese language
'exif-planarconfiguration-1' => '矮胖格å¼',
'exif-planarconfiguration-2' => 'å¹³é¢æ ¼å¼',
+'exif-colorspace-65535' => '无标定',
+
'exif-componentsconfiguration-0' => 'ä¸å­˜åœ¨',
'exif-exposureprogram-0' => '未定义',
@@ -3086,6 +3227,10 @@ Variants for Chinese language
'exif-gpslongitude-e' => '东ç»',
'exif-gpslongitude-w' => '西ç»',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => 'æµ·æ‹”$1 {{PLURAL:$1|ç±³|ç±³}}',
+'exif-gpsaltitude-below-sealevel' => '海拔负$1{{PLURAL:$1|米|米}}',
+
'exif-gpsstatus-a' => '测é‡è¿‡ç¨‹',
'exif-gpsstatus-v' => '互动测é‡',
@@ -3097,21 +3242,73 @@ Variants for Chinese language
'exif-gpsspeed-m' => '英里æ¯å°æ—¶',
'exif-gpsspeed-n' => '海里æ¯å°æ—¶ï¼ˆèŠ‚)',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => '公里',
+'exif-gpsdestdistance-m' => '英里',
+'exif-gpsdestdistance-n' => '海里',
+
+'exif-gpsdop-excellent' => '优秀($1)',
+'exif-gpsdop-good' => '好($1)',
+'exif-gpsdop-moderate' => '中度($1)',
+'exif-gpsdop-fair' => '平等($1)',
+'exif-gpsdop-poor' => 'ä¸å¥½ï¼ˆ$1)',
+
+'exif-objectcycle-a' => 'åªæœ‰ä¸Šåˆ',
+'exif-objectcycle-p' => 'åªæœ‰æ™šä¸Š',
+'exif-objectcycle-b' => '早上和晚上',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => '真方ä½',
'exif-gpsdirection-m' => '地ç£æ–¹ä½',
+'exif-ycbcrpositioning-1' => '居中',
+'exif-ycbcrpositioning-2' => '色相定ä½',
+
+'exif-dc-contributor' => '贡献者',
+'exif-dc-coverage' => '介质的空间或时间范围',
+'exif-dc-date' => '日期',
+'exif-dc-publisher' => 'å‘布者',
+'exif-dc-relation' => '相关的媒体',
+'exif-dc-rights' => 'æƒåˆ©',
+'exif-dc-source' => 'æºä»‹è´¨',
+'exif-dc-type' => '介质类型',
+
+'exif-rating-rejected' => 'æ‹’ç»',
+
+'exif-isospeedratings-overflow' => '大过于 65535',
+
+'exif-iimcategory-ace' => '艺术〠文化和娱ä¹',
+'exif-iimcategory-clj' => '犯罪和法律',
+'exif-iimcategory-dis' => 'ç¾å®³å’Œäº‹æ•…',
+'exif-iimcategory-fin' => 'ç»æµŽä¸Žå•†ä¸š',
+'exif-iimcategory-edu' => '教育',
+'exif-iimcategory-evn' => '环境',
+'exif-iimcategory-hth' => 'å¥åº·',
+'exif-iimcategory-hum' => '人类的利益',
+'exif-iimcategory-lab' => '劳工',
+'exif-iimcategory-lif' => '生活方å¼å’Œä¼‘é—²',
+'exif-iimcategory-pol' => '政治',
+'exif-iimcategory-rel' => '宗教和信仰',
+'exif-iimcategory-sci' => '科学和技术',
+'exif-iimcategory-soi' => '社会问题',
+'exif-iimcategory-spo' => '体育',
+'exif-iimcategory-war' => '战争〠冲çªå’ŒåŠ¨ä¹±',
+'exif-iimcategory-wea' => '天气',
+
+'exif-urgency-normal' => '正常($1)',
+'exif-urgency-low' => '低($1)',
+'exif-urgency-high' => '高($1)',
+'exif-urgency-other' => '用户定义的优先级($1)',
+
# External editor support
'edit-externally' => '用外部程åºç¼–辑此文件',
-'edit-externally-help' => '(请å‚è§[http://www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解详细信æ¯ï¼‰',
+'edit-externally-help' => '(请å‚è§[//www.mediawiki.org/wiki/Manual:External_editors 设置步骤]了解详细信æ¯ï¼‰',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => '全部',
-'imagelistall' => '全部',
-'watchlistall2' => '全部',
-'namespacesall' => '全部',
-'monthsall' => '全部',
-'limitall' => '全部',
+'watchlistall2' => '全部',
+'namespacesall' => '全部',
+'monthsall' => '全部',
+'limitall' => '全部',
# E-mail address confirmation
'confirmemail' => '确认邮箱地å€',
@@ -3186,17 +3383,24 @@ $1',
'trackbackdeleteok' => '该引用已被æˆåŠŸåˆ é™¤ã€‚',
# Delete conflict
-'deletedwhileediting' => "'''警告''':此页在您开始编辑之åŽå·²ç»è¢«åˆ é™¤ï¼",
-'confirmrecreate' => "在您开始编辑这个页é¢åŽï¼Œç”¨æˆ·[[User:$1|$1]] ([[User talk:$1|讨论]])以下列原因删除了这个页é¢ï¼š
+'deletedwhileediting' => "'''警告''':此页在您开始编辑之åŽå·²ç»è¢«åˆ é™¤ï¼",
+'confirmrecreate' => "在您开始编辑这个页é¢åŽï¼Œç”¨æˆ·[[User:$1|$1]] ([[User talk:$1|讨论]])以下列原因删除了这个页é¢ï¼š
: ''$2''
请确认在您é‡æ–°åˆ›å»ºé¡µé¢å‰ä¸‰æ€ã€‚",
-'recreate' => 'é‡å»º',
+'confirmrecreate-noreason' => '用户 [[User:$1|$1]]([[User talk:$1|talk]]) 在您开始编辑之åŽåˆ é™¤æ­¤é¡µé¢ã€‚请确认您确实è¦é‡æ–°åˆ›å»ºæ­¤é¡µé¢ã€‚',
+'recreate' => 'é‡å»º',
# action=purge
'confirm_purge_button' => '确定',
'confirm-purge-top' => 'è¦æ¸…除此页é¢çš„缓存å—?',
'confirm-purge-bottom' => '清ç†ä¸€é¡µå°†ä¼šæ¸…除快å–以åŠå¼ºè¿«æ˜¾ç¤ºæœ€çŽ°æ—¶ä¹‹ä¿®è®¢ç‰ˆæœ¬ã€‚',
+# action=watch/unwatch
+'confirm-watch-button' => '确定',
+'confirm-watch-top' => '将此页添加到您的监视å—?',
+'confirm-unwatch-button' => '确定',
+'confirm-unwatch-top' => '从监视列表中删除此页å—?',
+
# Separators for various lists, etc.
'comma-separator' => 'ã€',
'word-separator' => '',
@@ -3246,14 +3450,12 @@ $1',
'watchlistedit-noitems' => '你的监视列表中没有标题。',
'watchlistedit-normal-title' => '编辑监视列表',
'watchlistedit-normal-legend' => '删除监视列表中的标题',
-'watchlistedit-normal-explain' => '在您的监视列表中的标题在下é¢æ˜¾ç¤ºã€‚
-è¦ç§»é™¤ä¸€ä¸ªæ ‡é¢˜ï¼Œåœ¨å®ƒå‰é¢å‰”一下,接ç€ç‚¹å‡»â€œ{{int:Watchlistedit-normal-submit}}â€ã€‚
-您亦都å¯ä»¥[[Special:Watchlist/raw|编辑原始监视列表]]。',
+'watchlistedit-normal-explain' => '你的监视列表中的标题显示在下方。è¦åˆ é™¤æ ‡é¢˜ï¼Œè¯·å‹¾é€‰å®ƒå‰é¢é€‰æ‹©æ¡†å¹¶å•å‡»â€œ{{int:Watchlistedit-normal-submit}}â€ã€‚你也å¯ä»¥[[Special:EditWatchlist/raw|编辑原始列表]]。',
'watchlistedit-normal-submit' => '删除标题',
'watchlistedit-normal-done' => '已从你的监视列表删除$1个标题:',
'watchlistedit-raw-title' => '编辑原始监视列表',
'watchlistedit-raw-legend' => '编辑原始监视列表',
-'watchlistedit-raw-explain' => '您的监视列表中的标题在下é¢æ˜¾ç¤ºï¼ŒåŒæ—¶äº¦éƒ½å¯ä»¥é€šè¿‡ç¼–辑这个表去加入以åŠç§»é™¤æ ‡é¢˜ï¼›ä¸€è¡Œä¸€ä¸ªæ ‡é¢˜ã€‚当完æˆä»¥åŽï¼Œç‚¹å‡»{{int:Watchlistedit-raw-submit}}。你亦都å¯ä»¥åŽ»ç”¨[[Special:Watchlist/edit|标准编辑器]]。',
+'watchlistedit-raw-explain' => '您的监视列表中的标题在下é¢æ˜¾ç¤ºï¼ŒåŒæ—¶äº¦éƒ½å¯ä»¥é€šè¿‡ç¼–辑这个表去加入以åŠç§»é™¤æ ‡é¢˜ï¼›ä¸€è¡Œä¸€ä¸ªæ ‡é¢˜ã€‚当完æˆä»¥åŽï¼Œç‚¹å‡»{{int:Watchlistedit-raw-submit}}。你亦都å¯ä»¥åŽ»ç”¨[[Special:EditWatchlist|标准编辑器]]。',
'watchlistedit-raw-titles' => '标题:',
'watchlistedit-raw-submit' => '更新监视列表',
'watchlistedit-raw-done' => '您的监视列表已ç»æ›´æ–°ã€‚',
@@ -3270,33 +3472,33 @@ $1',
'duplicate-defaultsort' => "'''警告:'''默认排åºå…³é”®å­—“$2â€è¦†ç›–了之å‰çš„默认排åºå…³é”®å­—“$1â€ã€‚",
# Special:Version
-'version' => '版本',
-'version-extensions' => '已安装的扩展程åº',
-'version-specialpages' => '特殊页é¢',
-'version-parserhooks' => '解æžå™¨é’©',
-'version-variables' => 'å˜é‡',
-'version-skins' => '皮肤',
-'version-other' => '其他',
-'version-mediahandlers' => '媒体处ç†å™¨',
-'version-hooks' => 'é’©',
-'version-extension-functions' => '扩展函数',
-'version-parser-extensiontags' => '解æžå™¨æ‰©å±•æ ‡ç­¾',
-'version-parser-function-hooks' => '解æžå™¨å‡½æ•°é’©',
-'version-skin-extension-functions' => '皮肤扩展函数',
-'version-hook-name' => 'é’©å',
-'version-hook-subscribedby' => 'ç½²å',
-'version-version' => '(版本$1)',
-'version-license' => '授æƒåè®®',
-'version-poweredby-credits' => "本Wikiç”±'''[http://www.mediawiki.org/ MediaWiki]'''驱动,版æƒæ‰€æœ‰ © 2001-$1 $2。",
-'version-poweredby-others' => '其他',
-'version-license-info' => 'MediaWiki为自由软件;您å¯ä¾æ®è‡ªç”±è½¯ä»¶åŸºé‡‘会所å‘表的GNU通用公共授æƒæ¡æ¬¾è§„定,就本程åºå†ä¸ºå‘布与ï¼æˆ–修改;无论您ä¾æ®çš„是本授æƒçš„第二版或(您自行选择的)任一日åŽå‘行的版本。
+'version' => '版本',
+'version-extensions' => '已安装的扩展程åº',
+'version-specialpages' => '特殊页é¢',
+'version-parserhooks' => '解æžå™¨é’©',
+'version-variables' => 'å˜é‡',
+'version-antispam' => '垃圾防止',
+'version-skins' => '皮肤',
+'version-other' => '其他',
+'version-mediahandlers' => '媒体处ç†å™¨',
+'version-hooks' => 'é’©',
+'version-extension-functions' => '扩展函数',
+'version-parser-extensiontags' => '解æžå™¨æ‰©å±•æ ‡ç­¾',
+'version-parser-function-hooks' => '解æžå™¨å‡½æ•°é’©',
+'version-hook-name' => 'é’©å',
+'version-hook-subscribedby' => 'ç½²å',
+'version-version' => '(版本$1)',
+'version-license' => '授æƒåè®®',
+'version-poweredby-credits' => "本Wikiç”±'''[//www.mediawiki.org/ MediaWiki]'''驱动,版æƒæ‰€æœ‰ © 2001-$1 $2。",
+'version-poweredby-others' => '其他',
+'version-license-info' => 'MediaWiki为自由软件;您å¯ä¾æ®è‡ªç”±è½¯ä»¶åŸºé‡‘会所å‘表的GNU通用公共授æƒæ¡æ¬¾è§„定,就本程åºå†ä¸ºå‘布与ï¼æˆ–修改;无论您ä¾æ®çš„是本授æƒçš„第二版或(您自行选择的)任一日åŽå‘行的版本。
MediaWiki是基于使用目的而加以å‘布,然而ä¸è´Ÿä»»ä½•æ‹…ä¿è´£ä»»ï¼›äº¦æ— å¯¹é€‚售性或特定目的适用性所为的默示性担ä¿ã€‚详情请å‚ç…§GNU通用公共授æƒã€‚
-您应已收到附éšäºŽæœ¬ç¨‹åºçš„[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU通用公共授æƒçš„副本];如果没有,请写信至自由软件基金会:51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或[http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 在线阅读]。',
-'version-software' => '已安装的软件',
-'version-software-product' => '产å“',
-'version-software-version' => '版本',
+您应已收到附éšäºŽæœ¬ç¨‹åºçš„[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU通用公共授æƒçš„副本];如果没有,请写信至自由软件基金会:51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或[//www.gnu.org/licenses/old-licenses/gpl-2.0.html 在线阅读]。',
+'version-software' => '已安装的软件',
+'version-software-product' => '产å“',
+'version-software-version' => '版本',
# Special:FilePath
'filepath' => '文件路径',
@@ -3305,22 +3507,22 @@ MediaWiki是基于使用目的而加以å‘布,然而ä¸è´Ÿä»»ä½•æ‹…ä¿è´£ä»»ï¼
'filepath-summary' => '此特殊页é¢è¿”回文件的完整路径。图åƒä¼šä»¥å®Œæ•´çš„分辨率显示,其它的文件类型亦将直接通过关è”的应用程åºæ‰“开。',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'æœç´¢é‡å¤æ–‡ä»¶',
-'fileduplicatesearch-summary' => 'æ ¹æ®æ•£åˆ—值(Hash值)æœç´¢é‡å¤æ–‡ä»¶ã€‚
-
-输入文件åæ—¶ä¸éœ€è¦è¾“入“{{ns:file}}:â€å‰ç¼€ã€‚',
-'fileduplicatesearch-legend' => 'æœç´¢é‡å¤æ–‡ä»¶',
-'fileduplicatesearch-filename' => '文件å:',
-'fileduplicatesearch-submit' => 'æœç´¢',
-'fileduplicatesearch-info' => '$1×$2åƒç´ <br />文件大å°ï¼š$3<br />MIME类型:$4',
-'fileduplicatesearch-result-1' => '文件“$1â€æ²¡æœ‰å®Œå…¨ç›¸åŒçš„é‡å¤å‰¯æœ¬ã€‚',
-'fileduplicatesearch-result-n' => '文件“$1â€æœ‰$2项完全相åŒçš„é‡å¤å‰¯æœ¬ã€‚',
+'fileduplicatesearch' => 'æœç´¢é‡å¤æ–‡ä»¶',
+'fileduplicatesearch-summary' => 'æ ¹æ®å“ˆå¸Œï¼ˆhash)值æœç´¢é‡å¤æ–‡ä»¶ã€‚',
+'fileduplicatesearch-legend' => 'æœç´¢é‡å¤æ–‡ä»¶',
+'fileduplicatesearch-filename' => '文件å:',
+'fileduplicatesearch-submit' => 'æœç´¢',
+'fileduplicatesearch-info' => '$1×$2åƒç´ <br />文件大å°ï¼š$3<br />MIME类型:$4',
+'fileduplicatesearch-result-1' => '文件“$1â€æ²¡æœ‰å®Œå…¨ç›¸åŒçš„é‡å¤å‰¯æœ¬ã€‚',
+'fileduplicatesearch-result-n' => '文件“$1â€æœ‰$2项完全相åŒçš„é‡å¤å‰¯æœ¬ã€‚',
+'fileduplicatesearch-noresults' => '没有文件命å为"$1"å‘现。',
# Special:SpecialPages
'specialpages' => '特殊页é¢',
'specialpages-note' => '----
-* 标准特殊页é¢ã€‚
-* <strong class="mw-specialpagerestricted">有é™åˆ¶çš„特殊页é¢ã€‚</strong>',
+* 常规特殊页é¢ã€‚
+* <span class="mw-specialpagerestricted">å—é™ç‰¹æ®Šé¡µé¢ã€‚</span>
+* <span class="mw-specialpagecached">已缓存特殊页é¢ï¼ˆå¯èƒ½å·²è¿‡æ—¶ï¼‰ã€‚</span>',
'specialpages-group-maintenance' => '维护报告',
'specialpages-group-other' => '其它特殊页é¢',
'specialpages-group-login' => '登录/注册',
diff --git a/languages/messages/MessagesZh_hant.php b/languages/messages/MessagesZh_hant.php
index 54e16355..2c85f7d5 100644
--- a/languages/messages/MessagesZh_hant.php
+++ b/languages/messages/MessagesZh_hant.php
@@ -96,97 +96,102 @@ $namespaceAliases = array(
);
$specialPageAliases = array(
- 'DoubleRedirects' => array( 'é›™é‡é‡å®šå‘é é¢' ),
+ 'Activeusers' => array( 'æ´»èºç”¨æˆ¶' ),
+ 'Allmessages' => array( '所有信æ¯' ),
+ 'Allpages' => array( '所有é é¢' ),
+ 'Ancientpages' => array( '最早é é¢' ),
+ 'Blankpage' => array( '空白é é¢' ),
+ 'Block' => array( '查å°ç”¨æˆ¶' ),
+ 'Blockme' => array( 'å°ç¦æˆ‘' ),
+ 'Booksources' => array( '網絡書æº' ),
'BrokenRedirects' => array( 'æ壞的é‡å®šå‘é ' ),
- 'Disambiguations' => array( '消歧義é ' ),
- 'Userlogin' => array( '用戶登錄' ),
- 'Userlogout' => array( '用戶登出' ),
+ 'Categories' => array( 'é é¢åˆ†é¡ž' ),
+ 'ChangePassword' => array( '修改密碼' ),
+ 'ComparePages' => array( 'é é¢æ¯”較' ),
+ 'Confirmemail' => array( '確èªé›»å­éƒµä»¶' ),
+ 'Contributions' => array( '用戶貢ç»' ),
'CreateAccount' => array( '創建賬戶' ),
- 'Preferences' => array( 'åƒæ•¸è¨­ç½®' ),
- 'Watchlist' => array( '監視列表' ),
- 'Recentchanges' => array( '最近更改' ),
- 'Upload' => array( '上傳文件' ),
+ 'Deadendpages' => array( 'æ–·éˆé é¢' ),
+ 'DeletedContributions' => array( '已刪除的用戶貢ç»' ),
+ 'Disambiguations' => array( '消歧義é ' ),
+ 'DoubleRedirects' => array( 'é›™é‡é‡å®šå‘é é¢' ),
+ 'EditWatchlist' => array( '編輯監視列表' ),
+ 'Emailuser' => array( '電郵用戶' ),
+ 'Export' => array( '導出é é¢' ),
+ 'Fewestrevisions' => array( '最少修訂é é¢' ),
+ 'FileDuplicateSearch' => array( 'æœç´¢é‡è¤‡æ–‡ä»¶' ),
+ 'Filepath' => array( '文件路徑' ),
+ 'Import' => array( 'å°Žå…¥é é¢' ),
+ 'Invalidateemail' => array( 'ä¸å¯è­˜åˆ¥çš„電郵地å€' ),
+ 'BlockList' => array( 'å°ç¦åˆ—表' ),
+ 'LinkSearch' => array( 'æœç´¢ç¶²é éˆæŽ¥' ),
+ 'Listadmins' => array( '管ç†å“¡åˆ—表' ),
+ 'Listbots' => array( '機器人列表' ),
'Listfiles' => array( '文件列表' ),
- 'Newimages' => array( '新建文件' ),
- 'Listusers' => array( '用戶列表' ),
'Listgrouprights' => array( '群組權é™' ),
- 'Statistics' => array( '統計信æ¯' ),
- 'Randompage' => array( '隨機é é¢' ),
+ 'Listredirects' => array( 'é‡å®šå‘é é¢åˆ—表' ),
+ 'Listusers' => array( '用戶列表' ),
+ 'Lockdb' => array( '鎖定數據庫' ),
+ 'Log' => array( '日誌' ),
'Lonelypages' => array( '孤立é é¢' ),
- 'Uncategorizedpages' => array( '未歸類é é¢' ),
- 'Uncategorizedcategories' => array( '未歸類分類' ),
- 'Uncategorizedimages' => array( '未歸類文件' ),
- 'Uncategorizedtemplates' => array( '未歸類模æ¿' ),
- 'Unusedcategories' => array( '未使用分類' ),
- 'Unusedimages' => array( '未使用文件' ),
- 'Wantedpages' => array( 'å¾…æ’°é é¢' ),
- 'Wantedcategories' => array( '待撰分類' ),
- 'Wantedfiles' => array( '需è¦çš„文件' ),
- 'Wantedtemplates' => array( '需è¦çš„模æ¿' ),
+ 'Longpages' => array( 'é•·é é¢' ),
+ 'MergeHistory' => array( 'åˆä½µæ­·å²' ),
+ 'MIMEsearch' => array( 'MIMEæœç´¢' ),
+ 'Mostcategories' => array( '最多分類é é¢' ),
+ 'Mostimages' => array( '最多éˆæŽ¥æ–‡ä»¶' ),
'Mostlinked' => array( '最多éˆæŽ¥é é¢' ),
'Mostlinkedcategories' => array( '最多éˆæŽ¥åˆ†é¡ž' ),
'Mostlinkedtemplates' => array( '最多éˆæŽ¥æ¨¡æ¿' ),
- 'Mostimages' => array( '最多éˆæŽ¥æ–‡ä»¶' ),
- 'Mostcategories' => array( '最多分類é é¢' ),
'Mostrevisions' => array( '最多修訂é é¢' ),
- 'Fewestrevisions' => array( '最少修訂é é¢' ),
- 'Shortpages' => array( '短é é¢' ),
- 'Longpages' => array( 'é•·é é¢' ),
- 'Newpages' => array( '最新é é¢' ),
- 'Ancientpages' => array( '最早é é¢' ),
- 'Deadendpages' => array( 'æ–·éˆé é¢' ),
+ 'Movepage' => array( '移動é é¢' ),
+ 'Mycontributions' => array( '我的貢ç»' ),
+ 'Mypage' => array( '我的用戶é ' ),
+ 'Mytalk' => array( '我的討論é ' ),
+ 'Myuploads' => array( '我的上傳' ),
+ 'Newimages' => array( '新建文件' ),
+ 'Newpages' => array( 'æ–°é é¢' ),
+ 'PasswordReset' => array( 'é‡è¨­å¯†ç¢¼' ),
+ 'PermanentLink' => array( '永久連çµ' ),
+ 'Popularpages' => array( '熱點é é¢' ),
+ 'Preferences' => array( 'åƒæ•¸è¨­ç½®' ),
+ 'Prefixindex' => array( 'å‰ç¶´ç´¢å¼•' ),
'Protectedpages' => array( 'å·²ä¿è­·é é¢' ),
'Protectedtitles' => array( 'å·²ä¿è­·æ¨™é¡Œ' ),
- 'Allpages' => array( '所有é é¢' ),
- 'Prefixindex' => array( 'å‰ç¶´ç´¢å¼•' ),
- 'Ipblocklist' => array( 'å°ç¦åˆ—表' ),
- 'Unblock' => array( '解除å°ç¦' ),
- 'Specialpages' => array( '特殊é é¢' ),
- 'Contributions' => array( '用戶貢ç»' ),
- 'Emailuser' => array( '電郵用戶' ),
- 'Confirmemail' => array( '確èªé›»å­éƒµä»¶' ),
- 'Whatlinkshere' => array( 'éˆå…¥é é¢' ),
+ 'Randompage' => array( '隨機é é¢' ),
+ 'Randomredirect' => array( '隨機é‡å®šå‘é é¢' ),
+ 'Recentchanges' => array( '最近更改' ),
'Recentchangeslinked' => array( 'éˆå‡ºæ›´æ”¹' ),
- 'Movepage' => array( '移動é é¢' ),
- 'Blockme' => array( 'å°ç¦æˆ‘' ),
- 'Booksources' => array( '網絡書æº' ),
- 'Categories' => array( 'é é¢åˆ†é¡ž' ),
- 'Export' => array( '導出é é¢' ),
- 'Version' => array( '版本信æ¯' ),
- 'Allmessages' => array( '所有信æ¯' ),
- 'Log' => array( '日誌' ),
- 'Blockip' => array( '查å°ç”¨æˆ¶' ),
+ 'Revisiondelete' => array( '刪除或æ¢å¾©ç‰ˆæœ¬' ),
+ 'RevisionMove' => array( '版本移動' ),
+ 'Search' => array( 'æœç´¢' ),
+ 'Shortpages' => array( '短é é¢' ),
+ 'Specialpages' => array( '特殊é é¢' ),
+ 'Statistics' => array( '統計信æ¯' ),
+ 'Tags' => array( '標籤' ),
+ 'Unblock' => array( '解除å°ç¦' ),
+ 'Uncategorizedcategories' => array( '未歸類分類' ),
+ 'Uncategorizedimages' => array( '未歸類文件' ),
+ 'Uncategorizedpages' => array( '未歸類é é¢' ),
+ 'Uncategorizedtemplates' => array( '未歸類模æ¿' ),
'Undelete' => array( 'æ¢å¾©è¢«åˆªé é¢' ),
- 'Import' => array( 'å°Žå…¥é é¢' ),
- 'Lockdb' => array( '鎖定數據庫' ),
'Unlockdb' => array( '解除數據庫鎖定' ),
- 'Userrights' => array( '用戶權é™' ),
- 'MIMEsearch' => array( 'MIMEæœç´¢' ),
- 'FileDuplicateSearch' => array( 'æœç´¢é‡è¤‡æ–‡ä»¶' ),
- 'Unwatchedpages' => array( '未被監視的é é¢' ),
- 'Listredirects' => array( 'é‡å®šå‘é é¢åˆ—表' ),
- 'Revisiondelete' => array( '刪除或æ¢å¾©ç‰ˆæœ¬' ),
+ 'Unusedcategories' => array( '未使用分類' ),
+ 'Unusedimages' => array( '未使用文件' ),
'Unusedtemplates' => array( '未使用模æ¿' ),
- 'Randomredirect' => array( '隨機é‡å®šå‘é é¢' ),
- 'Mypage' => array( '我的用戶é ' ),
- 'Mytalk' => array( '我的討論é ' ),
- 'Mycontributions' => array( '我的貢ç»' ),
- 'Listadmins' => array( '管ç†å“¡åˆ—表' ),
- 'Listbots' => array( '機器人列表' ),
- 'Popularpages' => array( '熱點é é¢' ),
- 'Search' => array( 'æœç´¢' ),
- 'Resetpass' => array( '修改密碼' ),
+ 'Unwatchedpages' => array( '未被監視的é é¢' ),
+ 'Upload' => array( '上傳文件' ),
+ 'UploadStash' => array( '上傳è—匿' ),
+ 'Userlogin' => array( '用戶登錄' ),
+ 'Userlogout' => array( '用戶登出' ),
+ 'Userrights' => array( '用戶權é™' ),
+ 'Version' => array( '版本信æ¯' ),
+ 'Wantedcategories' => array( '待撰分類' ),
+ 'Wantedfiles' => array( '需è¦çš„文件' ),
+ 'Wantedpages' => array( 'å¾…æ’°é é¢' ),
+ 'Wantedtemplates' => array( '需è¦çš„模æ¿' ),
+ 'Watchlist' => array( '監視列表' ),
+ 'Whatlinkshere' => array( 'éˆå…¥é é¢' ),
'Withoutinterwiki' => array( '沒有跨語言éˆæŽ¥çš„é é¢' ),
- 'MergeHistory' => array( 'åˆä½µæ­·å²' ),
- 'Filepath' => array( '文件路徑' ),
- 'Invalidateemail' => array( 'ä¸å¯è­˜åˆ¥çš„電郵地å€' ),
- 'Blankpage' => array( '空白é é¢' ),
- 'LinkSearch' => array( 'æœç´¢ç¶²é éˆæŽ¥' ),
- 'DeletedContributions' => array( '已刪除的用戶貢ç»' ),
- 'Tags' => array( '標籤' ),
- 'Activeusers' => array( 'æ´»èºç”¨æˆ¶' ),
- 'ComparePages' => array( 'é é¢æ¯”較' ),
- 'Badtitle' => array( 'ä¸å¥½çš„標題' ),
);
$bookstoreList = array(
@@ -228,8 +233,8 @@ $messages = array(
'tog-shownumberswatching' => '顯示監視用戶的數目',
'tog-oldsig' => '原有簽å:',
'tog-fancysig' => '將簽å以維基文字å°å¾… (ä¸ç”¢ç”Ÿè‡ªå‹•é€£çµï¼‰',
-'tog-externaleditor' => 'é è¨­ä½¿ç”¨å¤–部編輯器 (進階者專用,需è¦åœ¨æ‚¨çš„電腦上作出一些特別設定。[http://www.mediawiki.org/wiki/Manual:External_editors 更多信æ¯ã€‚])',
-'tog-externaldiff' => 'é è¨­ä½¿ç”¨å¤–éƒ¨å·®ç•°åˆ†æž ï¼ˆé€²éšŽè€…å°ˆç”¨ï¼Œéœ€è¦åœ¨æ‚¨çš„電腦上作出一些特別設定。[http://www.mediawiki.org/wiki/Manual:External_editors 更多信æ¯ã€‚])',
+'tog-externaleditor' => 'é è¨­ä½¿ç”¨å¤–部編輯器 (進階者專用,需è¦åœ¨æ‚¨çš„電腦上作出一些特別設定。[//www.mediawiki.org/wiki/Manual:External_editors 更多信æ¯ã€‚])',
+'tog-externaldiff' => 'é è¨­ä½¿ç”¨å¤–éƒ¨å·®ç•°åˆ†æž ï¼ˆé€²éšŽè€…å°ˆç”¨ï¼Œéœ€è¦åœ¨æ‚¨çš„電腦上作出一些特別設定。[//www.mediawiki.org/wiki/Manual:External_editors 更多信æ¯ã€‚])',
'tog-showjumplinks' => '啟用「跳轉到ã€è¨ªå•é€£çµ',
'tog-uselivepreview' => '使用實時é è¦½ (需è¦JavaScript) (試驗中)',
'tog-forceeditsummary' => '當沒有輸入摘è¦æ™‚æ醒我',
@@ -326,14 +331,7 @@ $messages = array(
'listingcontinuesabbrev' => '續',
'index-category' => 'å·²åšç´¢å¼•çš„é é¢',
'noindex-category' => '未åšç´¢å¼•çš„é é¢',
-
-'mainpagetext' => "'''å·²æˆåŠŸå®‰è£ MediaWiki。'''",
-'mainpagedocfooter' => 'è«‹åƒé–±[http://meta.wikimedia.org/wiki/Help:Contents 用戶手冊]以ç²å¾—使用此 wiki 軟體的訊æ¯ï¼
-
-== 入門 ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置設定清單]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常見å•é¡Œè§£ç­”]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件清單]',
+'broken-file-category' => '有連çµè‡³å·²æ壞檔案é çš„連çµä¹‹é é¢',
'about' => '關於',
'article' => '內容é é¢',
@@ -385,10 +383,10 @@ $messages = array(
'history' => 'é é¢æ­·å²',
'history_short' => 'æ­·å²',
'updatedmarker' => '我上次訪å•ä»¥ä¾†çš„修改',
-'info_short' => '資訊',
'printableversion' => 'å¯åˆ—å°ç‰ˆ',
'permalink' => '永久連çµ',
'print' => '列å°',
+'view' => '檢視',
'edit' => '編輯',
'create' => '建立',
'editthispage' => '編輯本é ',
@@ -396,6 +394,7 @@ $messages = array(
'delete' => '刪除',
'deletethispage' => '刪除本é ',
'undelete_short' => 'å刪除$1項修訂',
+'viewdeleted_short' => '查看$1項已刪除的修訂',
'protect' => 'ä¿è­·',
'protect_change' => '更改',
'protectthispage' => 'ä¿è­·æœ¬é ',
@@ -479,6 +478,8 @@ $1',
'toc' => '目錄',
'showtoc' => '顯示',
'hidetoc' => 'éš±è—',
+'collapsible-collapse' => '摺å ',
+'collapsible-expand' => '展開',
'thisisdeleted' => '檢視或æ¢å¾©$1?',
'viewdeleted' => '檢視 $1?',
'restorelink' => '$1個被刪除的版本',
@@ -490,6 +491,8 @@ $1',
'page-rss-feed' => '「$1ã€çš„RSS訂閱',
'page-atom-feed' => '「$1ã€çš„Atom訂閱',
'red-link-title' => '$1 (é é¢æœªå­˜åœ¨ï¼‰',
+'sort-descending' => '倒åºæŽ’列',
+'sort-ascending' => 'å‡åºæŽ’åº',
# Short words for each namespace, by default used in the namespace tab in monobook
'nstab-main' => 'é é¢',
@@ -572,12 +575,13 @@ $1',
'protectedpagetext' => '該é é¢å·²è¢«ä¿è­·ä»¥é˜²æ­¢ç·¨è¼¯ã€‚',
'viewsourcetext' => '{{GENDER:|ä½ |妳|ä½ }}å¯ä»¥æª¢è¦–並複製本é é¢çš„原始碼。',
'protectedinterface' => '該é æ供了軟體的介é¢æ–‡å­—,它已被ä¿è­·ä»¥é˜²æ­¢éš¨æ„的修改。',
-'editinginterface' => "'''警告:''' 您正在編輯的é é¢æ˜¯ç”¨æ–¼æ供軟體的介é¢æ–‡å­—。改變此é å°‡å½±éŸ¿å…¶ä»–用戶的介é¢å¤–觀。如è¦ç¿»è­¯ï¼Œè«‹è€ƒæ…®ä½¿ç”¨[http://translatewiki.net/wiki/Main_Page?setlang=zh-hant translatewiki.net],一個用來為MediaWiki軟件本地化的計劃。",
+'editinginterface' => "'''警告:''' 您正在編輯的é é¢æ˜¯ç”¨æ–¼æ供軟體的介é¢æ–‡å­—。改變此é å°‡å½±éŸ¿å…¶ä»–用戶的介é¢å¤–觀。如è¦ç¿»è­¯ï¼Œè«‹è€ƒæ…®ä½¿ç”¨[//translatewiki.net/wiki/Main_Page?setlang=zh-hant translatewiki.net],一個用來為MediaWiki軟件本地化的計劃。",
'sqlhidden' => '(隱è—SQL查詢)',
'cascadeprotected' => '這個é é¢å·²ç¶“被ä¿è­·ï¼Œå› ç‚ºé€™å€‹é é¢è¢«ä»¥ä¸‹å·²æ¨™è¨»"è¯éŽ–ä¿è­·"çš„{{PLURAL:$1|一個|多個}}被ä¿è­·é é¢åŒ…å«:
$2',
'namespaceprotected' => "您並沒有權é™ç·¨è¼¯'''$1'''å字空間的é é¢ã€‚",
-'customcssjsprotected' => '您並無許å¯æ¬ŠåŽ»ç·¨è¼¯é€™å€‹é é¢ï¼Œå› ç‚ºå®ƒåŒ…å«äº†å¦ä¸€ä½ç”¨æˆ¶çš„個人設定。',
+'customcssprotected' => '你並無權é™ç·¨è¼¯æ­¤CSSé é¢ï¼Œå› ç‚ºå®ƒåŒ…å«äº†å…¶ä»–用戶的個人設置。',
+'customjsprotected' => '你並無權é™åŽ»ç·¨è¼¯æ­¤JavaScripté é¢ï¼Œå› ç‚ºä»–包å«äº†å¦ä¸€ä½ç”¨æˆ¶çš„個人設定。',
'ns-specialprotected' => '特殊é é¢æ˜¯ä¸å¯ä»¥ç·¨è¼¯çš„。',
'titleprotected' => "這個標題已經被[[User:$1|$1]]ä¿è­·ä»¥é˜²æ­¢å»ºç«‹ã€‚ç†ç”±æ˜¯''$2''。",
@@ -614,6 +618,7 @@ $2',
'createaccount' => '建立新帳號',
'gotaccount' => '已經æ“有帳號?$1。',
'gotaccountlink' => '登入',
+'userlogin-resetlink' => '忘記了你的登錄信æ¯ï¼Ÿ',
'createaccountmail' => '通éŽé›»éƒµ',
'createaccountreason' => 'ç†ç”±ï¼š',
'badretype' => '您所輸入的密碼並ä¸ç›¸åŒã€‚',
@@ -622,13 +627,15 @@ $2',
'createaccounterror' => '無法建立帳號:$1',
'nocookiesnew' => 'å·²æˆåŠŸå»ºç«‹æ–°å¸³è™Ÿï¼åµæ¸¬åˆ°æ‚¨å·²é—œé–‰ Cookies,請開啟它並登入。',
'nocookieslogin' => '本站利用 Cookies 進行用戶登入,åµæ¸¬åˆ°æ‚¨å·²é—œé–‰ Cookies,請開啟它並é‡æ–°ç™»å…¥ã€‚',
+'nocookiesfornew' => '這ä½ç”¨æˆ¶çš„賬戶未建立,我們ä¸èƒ½ç¢ºèªå®ƒçš„來æºã€‚
+請肯定您已經開啟 cookies,é‡æ–°è¼‰å…¥å¾Œå†è©¦ã€‚',
'noname' => '{{GENDER:|ä½ |妳|ä½ }}沒有輸入一個有效的用戶å。',
'loginsuccesstitle' => '登入æˆåŠŸ',
'loginsuccess' => '{{GENDER:|你|妳|你}}正在以"$1"的身份在{{SITENAME}}登入。',
'nosuchuser' => '找ä¸åˆ°ç”¨æˆ¶ "$1"。
用戶å稱是有大å°å¯«å€åˆ†çš„。
檢查您的拼寫,或者用下é¢çš„表格[[Special:UserLogin/signup|建立一個新賬號]]。',
-'nosuchusershort' => '沒有一個å為「<nowiki>$1</nowiki>ã€çš„用戶。請檢查您輸入的文字是å¦æœ‰éŒ¯èª¤ã€‚',
+'nosuchusershort' => '沒有一個å為「$1ã€çš„用戶。請檢查您輸入的文字是å¦æœ‰éŒ¯èª¤ã€‚',
'nouserspecified' => '{{GENDER:|ä½ |妳|ä½ }}需è¦æŒ‡å®šä¸€å€‹ç”¨æˆ¶å。',
'login-userblocked' => '這ä½ç”¨æˆ¶å·²è¢«å°éŽ–。ä¸å®¹è¨±ç™»å…¥ã€‚',
'wrongpassword' => '您輸入的密碼錯誤,請å†è©¦ä¸€æ¬¡ã€‚',
@@ -669,13 +676,14 @@ $2',
'usernamehasherror' => '用戶å稱ä¸å¯ä»¥åŒ…å«åˆ‡ç´°å­—å…ƒ',
'login-throttled' => '您已經嘗試多次的登入動作。
è«‹ç¨ç­‰å¤šä¸€æœƒå†è©¦ã€‚',
+'login-abort-generic' => '登入錯誤 - 中止',
'loginlanguagelabel' => '語言: $1',
'suspicious-userlogout' => '您登出的è¦æ±‚已經被拒絕,因為它å¯èƒ½æ˜¯ç”±å·²æ壞的ç€è¦½å™¨æˆ–者快å–代ç†å‚³é€ã€‚',
# E-mail sending
'php-mail-error-unknown' => '在 PHP çš„ mail() åƒæ•¸ä¸­çš„未知錯誤',
-# Password reset dialog
+# Change password dialog
'resetpass' => '更改密碼',
'resetpass_announce' => '您是é€éŽä¸€å€‹è‡¨æ™‚的發é€åˆ°éƒµä»¶ä¸­çš„代碼登入的。è¦å®Œæˆç™»å…¥ï¼Œæ‚¨å¿…須在這裡設定一個新密碼:',
'resetpass_text' => '<!-- 在此處加入文字 -->',
@@ -694,6 +702,36 @@ $2',
您å¯èƒ½å·²æˆåŠŸåœ°æ›´æ”¹äº†æ‚¨çš„密碼,或者已經請求一個新的臨時密碼。',
'resetpass-temp-password' => '臨時密碼:',
+# Special:PasswordReset
+'passwordreset' => 'é‡æ–°è¨­å®šå¯†ç¢¼',
+'passwordreset-text' => '完æˆæ­¤è¡¨æ ¼ä»¥æŽ¥æ”¶ä¸€å€‹é›»éƒµä»¥æ示你的帳戶詳情。',
+'passwordreset-legend' => 'é‡è¨­å¯†ç¢¼',
+'passwordreset-disabled' => '此維基上已ç¦æ­¢äº†é‡è¨­å¯†ç¢¼ã€‚',
+'passwordreset-pretext' => '{{PLURAL:$1||輸入下列其中一個}}',
+'passwordreset-username' => '使用者å稱:',
+'passwordreset-domain' => '域å:',
+'passwordreset-email' => '電郵地å€ï¼š',
+'passwordreset-emailtitle' => '在{{SITENAME}}上的詳細信æ¯',
+'passwordreset-emailtext-ip' => '有人(å¯èƒ½æ˜¯ä½ ï¼Œä¾†è‡ª$1這個IP)è¦æ±‚發出一個在{{SITENAME}}($4)的帳戶信
+æ¯æ示。該用戶{{PLURAL:$3|是|是}}與以下電郵地å€æœ‰é—œï¼š
+
+$2
+
+{{PLURAL:$3|這個臨時密碼|這些臨時密碼}}會在{{PLURAL:$5|一天|$5天}}到期。
+你應該ç¾åœ¨ç™»å…¥ä¸¦é¸æ“‡ä¸€å€‹æ–°çš„密碼。如果ä¸æ˜¯ä½ ä½œå‡ºé€™å€‹è«‹æ±‚,åˆæˆ–你已經記
+起你原來的密碼,你å¯ä»¥å¿½ç•¥æœ¬ä¿¡æ¯ä¸¦ä½¿ç”¨ä½ åŽŸä¾†çš„密碼。',
+'passwordreset-emailtext-user' => '用戶$1è¦æ±‚發出一個在{{SITENAME}}($4)的帳戶信æ¯æ示。該用戶{{PLURAL:$3|是|是}}與以下
+電郵地å€æœ‰é—œï¼š
+
+$2
+
+{{PLURAL:$3|這個臨時密碼|這些臨時密碼}}會在{{PLURAL:$5|一天|$5天}}到期。
+你應該ç¾åœ¨ç™»å…¥ä¸¦é¸æ“‡ä¸€å€‹æ–°çš„密碼。如果ä¸æ˜¯ä½ ä½œå‡ºé€™å€‹è«‹æ±‚,åˆæˆ–你已經記
+起你原來的密碼,你å¯ä»¥å¿½ç•¥æœ¬ä¿¡æ¯ä¸¦ä½¿ç”¨ä½ åŽŸä¾†çš„密碼。',
+'passwordreset-emailelement' => '用戶å:$1
+臨時密碼:$2',
+'passwordreset-emailsent' => '已發é€æ示電郵。',
+
# Edit page toolbar
'bold_sample' => '粗體文字',
'bold_tip' => '粗體文字',
@@ -705,8 +743,6 @@ $2',
'extlink_tip' => '外部連çµï¼ˆåŠ å‰ç¶´ http://)',
'headline_sample' => '大標題文字',
'headline_tip' => '2級標題文字',
-'math_sample' => '在此æ’入數學公å¼',
-'math_tip' => 'æ’å…¥æ•¸å­¸å…¬å¼ ï¼ˆLaTeX)',
'nowiki_sample' => '在此æ’å…¥éžæ ¼å¼æ–‡å­—',
'nowiki_tip' => 'æ’å…¥éžæ ¼å¼æ–‡å­—',
'image_tip' => '嵌入檔案',
@@ -784,7 +820,7 @@ $2',
或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 編輯此é ]</span>。',
'noarticletext-nopermission' => 'æ­¤é ç›®å‰æ²’有內容,您å¯ä»¥åœ¨å…¶å®ƒé [[Special:Search/{{PAGENAME}}|æœç´¢æ­¤é æ¨™é¡Œ]],
或<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} æœç´¢æœ‰é—œæ—¥èªŒ]</span>。',
-'userpage-userdoesnotexist' => '未曾創建用戶å「$1ã€ã€‚請在創建ï¼ç·¨è¼¯é€™å€‹é é¢å‰å…ˆæª¢æŸ¥ä¸€ä¸‹ã€‚',
+'userpage-userdoesnotexist' => '未曾創建用戶å「<nowiki>$1</nowiki>ã€ã€‚請在創建ï¼ç·¨è¼¯é€™å€‹é é¢å‰å…ˆæª¢æŸ¥ä¸€ä¸‹ã€‚',
'userpage-userdoesnotexist-view' => '未曾建立用戶å「$1ã€ã€‚',
'blocked-notice-logextract' => '這ä½ç”¨æˆ¶ç¾æ­£è¢«å°éŽ–。
下é¢æœ‰æœ€è¿‘çš„å°éŽ–紀錄以供åƒè€ƒï¼š',
@@ -818,6 +854,7 @@ $2',
'''如果這個編輯éŽç¨‹æ²’有å•é¡Œï¼Œè«‹å†è©¦ä¸€æ¬¡ã€‚如果ä»ç„¶æœ‰å•é¡Œï¼Œè«‹[[Special:UserLogout|登出]]後å†é‡æ–°ç™»å…¥ä¸€æ¬¡ã€‚'''",
'token_suffix_mismatch' => "'''由於您用戶端中的編輯信符毀æ了一些標點符號字元,為防止編輯的文字æ壞,您的編輯已經被拒絕。'''
這種情æ³é€šå¸¸å‡ºç¾æ–¼ä½¿ç”¨å«æœ‰å¾ˆå¤šè‡­èŸ²ã€ä»¥ç¶²çµ¡ç‚ºä¸»çš„匿å代ç†æœå‹™çš„時候。",
+'edit_form_incomplete' => '編輯表單的æŸäº›éƒ¨åˆ†æ²’有到é”伺æœå™¨ ;請檢查您的編輯內容是å¦å®Œæ•´ä¸¦å†è©¦ä¸€æ¬¡ã€‚',
'editing' => '編輯“$1â€',
'editingsection' => '編輯“$1â€ï¼ˆæ®µè½ï¼‰',
'editingcomment' => '編輯“$1â€ï¼ˆæ–°æ®µè½ï¼‰',
@@ -1046,8 +1083,7 @@ $1",
# Suppression log
'suppressionlog' => '監ç£æ—¥èªŒ',
-'suppressionlogtext' => '以下是刪除以åŠç”±æ“作員牽涉到內容å°éŽ–的清單。
-åƒçœ‹[[Special:IPBlockList|IPå°éŽ–åå–®]]去åƒçœ‹ç¾æ™‚進行中的ç¦æ­¢ä»¥åŠå°éŽ–之å單。',
+'suppressionlogtext' => '該列表列出å°ç®¡ç†å“¡éš±è—的刪除與å°ç¦ã€‚å¦åƒè¦‹[[Special:BlockList|IPå°éŽ–åå–®]]以查詢當å‰çš„å°ç¦åˆ—表。',
# History merging
'mergehistory' => 'åˆä½µé é¢æ­·å²',
@@ -1154,12 +1190,13 @@ $1",
'searchdisabled' => '{{SITENAME}}由於性能方é¢çš„原因,全文æœç´¢å·²è¢«æš«æ™‚åœç”¨ã€‚您å¯ä»¥æš«æ™‚é€éŽGoogleæœç´¢ã€‚è«‹ç•™æ„他們的索引å¯èƒ½æœƒéŽæ™‚。',
# Quickbar
-'qbsettings' => '快速導航æ¢',
-'qbsettings-none' => 'ç„¡',
-'qbsettings-fixedleft' => 'å·¦å´å›ºå®š',
-'qbsettings-fixedright' => 'å³å´å›ºå®š',
-'qbsettings-floatingleft' => 'å·¦å´æ¼‚移',
-'qbsettings-floatingright' => 'å³å´æ¼‚移',
+'qbsettings' => '快速導航æ¢',
+'qbsettings-none' => 'ç„¡',
+'qbsettings-fixedleft' => 'å·¦å´å›ºå®š',
+'qbsettings-fixedright' => 'å³å´å›ºå®š',
+'qbsettings-floatingleft' => 'å·¦å´æ¼‚移',
+'qbsettings-floatingright' => 'å³å´æ¼‚移',
+'qbsettings-directionality' => '固定,å–決於你的語言腳本的方å‘性',
# Preferences page
'preferences' => 'å好設定',
@@ -1170,9 +1207,10 @@ $1",
'changepassword' => '更改密碼',
'prefs-skin' => '外觀',
'skin-preview' => 'é è¦½',
-'prefs-math' => '數學公å¼',
'datedefault' => 'é è¨­å€¼',
+'prefs-beta' => 'Beta 特性',
'prefs-datetime' => '日期和時間',
+'prefs-labs' => '實驗中的功能',
'prefs-personal' => '用戶資料',
'prefs-rc' => '最近更改',
'prefs-watchlist' => '監視列表',
@@ -1194,8 +1232,6 @@ $1",
'columns' => '欄:',
'searchresultshead' => 'æœå°‹çµæžœè¨­å®š',
'resultsperpage' => 'æ¯é é¡¯ç¤ºé€£çµæ•¸',
-'contextlines' => 'æ¯é€£çµè¡Œæ•¸:',
-'contextchars' => 'æ¯è¡Œå­—數:',
'stub-threshold' => '<a href="#" class="stub">短é é¢é€£çµ</a>æ ¼å¼é–€æª»å€¼ (ä½å…ƒçµ„):',
'stub-threshold-disabled' => 'å·²åœç”¨',
'recentchangesdays' => '最近更改中的顯示日數:',
@@ -1208,7 +1244,7 @@ $1",
'savedprefs' => '您的個人å好設定已經儲存。',
'timezonelegend' => '時å€ï¼š',
'localtime' => '當地時間:',
-'timezoneuseserverdefault' => '使用伺æœå™¨é è¨­å€¼',
+'timezoneuseserverdefault' => '使用é è¨­ï¼ˆ$1)',
'timezoneuseoffset' => '其他 (指定å移)',
'timezoneoffset' => '時差¹:',
'servertime' => '伺æœå™¨æ™‚é–“:',
@@ -1256,7 +1292,8 @@ $1",
'email' => 'é›»å­éƒµä»¶',
'prefs-help-realname' => '真實姓å是å¯é¸çš„。
如果您é¸æ“‡æ供它,那它便用以å°æ‚¨çš„è²¢ç»ç½²å。',
-'prefs-help-email' => 'é›»å­éƒµä»¶æ˜¯å¯é¸çš„,但當您忘記您的個密碼時需è¦å°‡æ–°å¯†ç¢¼é‡è¨­å¯„回給您。您亦å¯ä»¥åœ¨æ‚¨æ²’有公開自己的用戶身分時é€éŽæ‚¨çš„用戶é æˆ–用戶討論é èˆ‡æ‚¨è¯ç¹«ã€‚',
+'prefs-help-email' => 'é›»å­éƒµä»¶æ˜¯å¯é¸çš„,但當您忘記您的密碼時需è¦å°‡æ–°å¯†ç¢¼é‡è¨­ï¼Œå°±æœƒç”¨é›»éƒµå¯„回給您。',
+'prefs-help-email-others' => '您亦å¯ä»¥åœ¨æ‚¨æ²’有公開自己的用戶身分時é€éŽæ‚¨çš„用戶é æˆ–用戶討論é èˆ‡æ‚¨è¯ç¹«ã€‚',
'prefs-help-email-required' => '需è¦é›»å­éƒµä»¶åœ°å€ã€‚',
'prefs-info' => '基本資料',
'prefs-i18n' => '國際化',
@@ -1381,15 +1418,15 @@ $1",
'right-userrights' => '編輯所有用戶的權é™',
'right-userrights-interwiki' => '編輯在其它wiki上的用戶權é™',
'right-siteadmin' => '鎖定和解除鎖定資料庫',
-'right-reset-passwords' => 'é‡è¨­å…¶ä»–用戶的密碼',
'right-override-export-depth' => '匯出å«æœ‰äº”層深度連çµé é¢ä¹‹é é¢',
'right-sendemail' => '發電å­éƒµä»¶çµ¦å…¶ä»–用戶',
# User rights log
-'rightslog' => '用戶權é™æ—¥èªŒ',
-'rightslogtext' => '以下記錄了用戶權é™çš„更改記錄。',
-'rightslogentry' => 'å°‡ $1 的權é™å¾ž $2 改為 $3',
-'rightsnone' => 'ç„¡',
+'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' => '閱讀這個é é¢',
@@ -1512,13 +1549,13 @@ $1",
'minlength1' => '檔案å字必須至少有一個字æ¯ã€‚',
'illegalfilename' => '檔案å“$1â€åŒ…å«æœ‰é é¢æ¨™é¡Œæ‰€ç¦æ­¢çš„字符。請改å後é‡æ–°ä¸Šå‚³ã€‚',
'badfilename' => '檔案å已被改為「$1ã€ã€‚',
-'filetype-mime-mismatch' => '檔案擴展åä¸é…MIME類型。',
+'filetype-mime-mismatch' => '檔案擴展å ".$1" ä¸é…所åµæ¸¬æª”案的MIMEé¡žåž‹ ($2)。',
'filetype-badmime' => 'MIME類別"$1"ä¸æ˜¯å®¹è¨±çš„檔案格å¼ã€‚',
'filetype-bad-ie-mime' => 'ä¸å¯ä»¥ä¸Šå‚³é€™å€‹æª”案,因為 Internet Explorer 會將它åµæ¸¬ç‚º "$1",它是一種ä¸å®¹è¨±ä»¥åŠæœ‰æ½›åœ¨å±éšªæ€§ä¹‹æª”案類型。',
'filetype-unwanted-type' => "'''\".\$1\"'''是一種ä¸éœ€è¦çš„檔案類型。
建議的{{PLURAL:\$3|一種|多種}}檔案類型有\$2。",
-'filetype-banned-type' => "'''\".\$1\"'''是一種ä¸å‡†è¨±çš„檔案類型。
-容許的{{PLURAL:\$3|一種|多種}}檔案類型有\$2。",
+'filetype-banned-type' => "'''「.$1ã€'''{{PLURAL:$4|ä¸æ˜¯å…許的檔案類型|是ä¸å…許的檔案類型}}。
+å…許的{{PLURAL:$3|檔案類型|檔案類型}} $2。",
'filetype-missing' => '該檔案å稱並沒有副檔å ï¼ˆåƒ ".jpg")。',
'empty-file' => '您所æ交的檔案為空檔案。',
'file-too-large' => '您所æ交的檔案éŽå¤§ã€‚',
@@ -1534,6 +1571,7 @@ $1",
'large-file' => '建議檔案大å°ä¸èƒ½è¶…éŽ $1;本檔案大å°ç‚º $2。',
'largefileserver' => '這個檔案的大å°æ¯”伺æœå™¨é…ç½®å…許的大å°é‚„è¦å¤§ã€‚',
'emptyfile' => '您所上傳的檔案ä¸å­˜åœ¨ã€‚這å¯èƒ½æ˜¯ç”±æ–¼æª”案åéµå…¥éŒ¯èª¤ã€‚請檢查您是å¦çœŸçš„è¦ä¸Šå‚³æ­¤æª”案。',
+'windows-nonascii-filename' => '本維基ä¸æ”¯æŒå¸¶ç‰¹æ®Šå­—符的檔案å。',
'fileexists' => "已存在相åŒå稱的檔案,如果您無法確定您是å¦è¦æ”¹è®Šå®ƒï¼Œè«‹æª¢æŸ¥'''<tt>[[:$1]]</tt>'''。 [[$1|thumb]]",
'filepageexists' => "這個檔案的æè¿°é å·²æ–¼'''<tt>[[:$1]]</tt>'''建立,但是這個å稱的檔案尚未存在。因此您所輸入的摘è¦ä¸æœƒé¡¯ç¤ºåœ¨è©²æè¿°é ä¸­ã€‚如è¦æ‘˜è¦åœ¨è©²è™•ä¸­å‡ºç¾ï¼Œæ‚¨å¿…需手動編輯它。
[[$1|thumb]]",
@@ -1564,6 +1602,8 @@ $1",
'uploadscripted' => '該檔案包å«å¯èƒ½è¢«ç¶²è·¯ç€è¦½å™¨éŒ¯èª¤è§£é‡‹çš„ HTML 或腳本代碼。',
'uploadvirus' => '該檔案包å«æœ‰ç—…毒ï¼
詳情: $1',
+'uploadjava' => '該檔案是 ZIP æª”æ¡ˆï¼Œå…¶ä¸­åŒ…å« Java çš„.class 檔案。
+ä¸å…許上傳 Java 檔案,是因為他們å¯èƒ½æœƒè·³éŽå®‰å…¨é™åˆ¶ã€‚',
'upload-source' => '來æºæª”案',
'sourcefilename' => '來æºæª”案å:',
'sourceurl' => '來æºç¶²å€ï¼š',
@@ -1573,10 +1613,6 @@ $1",
'upload-options' => '上載é¸é …',
'watchthisupload' => '監視這個檔案',
'filewasdeleted' => '之å‰å·²ç¶“有一個åŒå檔案被上傳後åˆè¢«åˆªé™¤äº†ã€‚在上傳此檔案之å‰æ‚¨éœ€è¦æª¢æŸ¥$1。',
-'upload-wasdeleted' => "'''警告: 您ç¾åœ¨é‡æ–°ä¸Šå‚³ä¸€å€‹å…ˆå‰æ›¾ç¶“刪除éŽçš„檔案。'''
-
-您應該è¦è€ƒæ…®ä¸€ä¸‹ç¹¼çºŒä¸Šå‚³ä¸€å€‹æª”案é é¢æ˜¯å¦åˆé©ã€‚
-為方便起見,這一個檔案的刪除記錄已經在下é¢æä¾›:",
'filename-bad-prefix' => "您上傳的檔案å稱是以'''「$1ã€'''作為開頭,通常這種沒有å«æ„的檔案å稱是由數碼相機中自動編排。請在您的檔案中é‡æ–°é¸æ“‡ä¸€å€‹æ›´åŠ æœ‰æ„義的檔案å稱。",
'upload-success-subj' => '上傳æˆåŠŸ',
'upload-success-msg' => '您在[$2]的上传已ç»æˆåŠŸï¼Œå¯ä»¥åœ¨è¿™é‡Œæ‰¾åˆ°ï¼š[[:{{ns:file}}:$1]]',
@@ -1597,6 +1633,23 @@ $1',
'upload-unknown-size' => '未知的大å°',
'upload-http-error' => '已發生一個HTTP錯誤:$1',
+# ZipDirectoryReader
+'zip-file-open-error' => '打開檔案的 ZIP 檢查時é‡åˆ°ä¸€å€‹éŒ¯èª¤ã€‚',
+'zip-wrong-format' => '指定的檔案ä¸æ˜¯ZIP檔案。',
+'zip-bad' => '該檔案是已æ壞或以其它方å¼ç„¡æ³•è®€å–çš„ ZIP 檔案。
+ä¸èƒ½æ­£ç¢ºæª¢æŸ¥å®‰å…¨ã€‚',
+'zip-unsupported' => '該檔案是 ZIP 檔案,其中使用 MediaWiki ä¸æ”¯æŒçš„ZIP功能。
+ä¸èƒ½æ­£ç¢ºæª¢æŸ¥å®‰å…¨ã€‚',
+
+# Special:UploadStash
+'uploadstash' => '上傳貯è—',
+'uploadstash-summary' => '這個é é¢æ供已經上傳(或者上傳中)但未發佈到wiki之檔案存å–。這些檔案除了上傳的用戶之外ä¸æœƒè¢«å…¶ä»–人å¯è¦‹ã€‚',
+'uploadstash-clear' => '清除貯è—檔案',
+'uploadstash-nofiles' => '{{GENDER:|ä½ |妳|ä½ }}沒有已貯è—的檔案。',
+'uploadstash-badtoken' => '進行這個動作ä¸æˆåŠŸï¼Œæˆ–者{{GENDER:|ä½ |妳|ä½ }}的編輯資訊已經éŽæœŸã€‚è«‹å†è©¦ã€‚',
+'uploadstash-errclear' => '清除檔案ä¸æˆåŠŸã€‚',
+'uploadstash-refresh' => '更新檔案清單',
+
# img_auth script messages
'img-auth-accessdenied' => '拒絕存å–',
'img-auth-nopathinfo' => 'PATH_INFOéºå¤±ã€‚
@@ -1677,7 +1730,7 @@ $1',
一個[[Special:WhatLinksHere/$2|完整的清單]]å¯ä»¥æ供。',
'nolinkstoimage' => '沒有é é¢é€£æŽ¥åˆ°æœ¬æª”案。',
'morelinkstoimage' => '檢視連接到這個檔案的[[Special:WhatLinksHere/$1|更多連çµ]]。',
-'redirectstofile' => '以下的$1個檔案é‡æ–°å®šå‘到這個檔案:',
+'linkstoimage-redirect' => '$1 (檔案é‡å®šå‘) $2',
'duplicatesoffile' => '以下的$1個檔案跟這個檔案é‡è¦†ï¼ˆ[[Special:FileDuplicateSearch/$2|更多細節]]):',
'sharedupload' => '該檔案來自於$1,它å¯èƒ½åœ¨å…¶å®ƒè¨ˆåŠƒé …目中被應用。',
'sharedupload-desc-there' => '該檔案來自於$1,它å¯èƒ½åœ¨å…¶å®ƒè¨ˆåŠƒé …目中被應用。
@@ -1775,13 +1828,14 @@ Template:消歧义
Template:消除歧义
Template:消歧義
Template:消除歧義',
-'disambiguations-text' => '以下的é é¢éƒ½æœ‰åˆ°<b>消å«ç³Šé </b>的連çµï¼Œä½†å®ƒå€‘應該是連到é©ç•¶çš„標題。<br />一個é é¢æœƒè¢«è¦–為消å«ç³Šé å¦‚果它是連自[[MediaWiki:Disambiguationspage]]。',
+'disambiguations-text' => "以下的é é¢éƒ½æœ‰åˆ°'''消歧義é '''çš„éˆæŽ¥ï¼Œä½†å®ƒå€‘應該éˆæŽ¥åˆ°é©ç•¶çš„é é¢ã€‚<br />一個é é¢å¦‚果使用了[[MediaWiki:Disambiguationspage]]內的模æ¿ï¼Œå‰‡æœƒè¢«è¦–為消歧義é ã€‚",
-'doubleredirects' => 'é›™é‡é‡å®šå‘é é¢',
-'doubleredirectstext' => '這一é åˆ—出所有é‡å®šå‘é é¢é‡å®šå‘到å¦ä¸€å€‹é‡å®šå‘é çš„é é¢ã€‚æ¯ä¸€è¡Œéƒ½åŒ…å«åˆ°ç¬¬ä¸€å’Œç¬¬äºŒå€‹é‡å®šå‘é é¢çš„連çµï¼Œä»¥åŠç¬¬äºŒå€‹é‡å®šå‘é é¢çš„目標,通常顯示的都會是"真正"的目標é é¢ï¼Œä¹Ÿå°±æ˜¯ç¬¬ä¸€å€‹é‡å®šå‘é é¢æ‡‰è©²æŒ‡å‘çš„é é¢ã€‚
+'doubleredirects' => 'é›™é‡é‡å®šå‘é é¢',
+'doubleredirectstext' => '這一é åˆ—出所有é‡å®šå‘é é¢é‡å®šå‘到å¦ä¸€å€‹é‡å®šå‘é çš„é é¢ã€‚æ¯ä¸€è¡Œéƒ½åŒ…å«åˆ°ç¬¬ä¸€å’Œç¬¬äºŒå€‹é‡å®šå‘é é¢çš„連çµï¼Œä»¥åŠç¬¬äºŒå€‹é‡å®šå‘é é¢çš„目標,通常顯示的都會是"真正"的目標é é¢ï¼Œä¹Ÿå°±æ˜¯ç¬¬ä¸€å€‹é‡å®šå‘é é¢æ‡‰è©²æŒ‡å‘çš„é é¢ã€‚
<del>已劃去</del>的為已經解決之項目。',
-'double-redirect-fixed-move' => '[[$1]]已經完æˆç§»å‹•ï¼Œå®ƒç¾åœ¨é‡æ–°å®šå‘到[[$2]]。',
-'double-redirect-fixer' => 'é‡æ–°å®šå‘修正器',
+'double-redirect-fixed-move' => '[[$1]]已經完æˆç§»å‹•ï¼Œå®ƒç¾åœ¨é‡æ–°å®šå‘到[[$2]]。',
+'double-redirect-fixed-maintenance' => '修復從[[$1]]到[[$2]]çš„é›™é‡é‡å®šå‘。',
+'double-redirect-fixer' => 'é‡æ–°å®šå‘修正器',
'brokenredirects' => 'æ壞的é‡å®šå‘é ',
'brokenredirectstext' => '以下的é‡å®šå‘é æŒ‡å‘的是ä¸å­˜åœ¨çš„é é¢:',
@@ -1858,6 +1912,7 @@ Template:消除歧義',
'pager-newer-n' => '新$1次',
'pager-older-n' => '舊$1次',
'suppress' => '監ç£',
+'querypage-disabled' => '此特殊é é¢åŸºæ–¼æ•ˆèƒ½çš„原因已經被åœç”¨ã€‚',
# Book sources
'booksources' => '網路書æº',
@@ -1975,6 +2030,10 @@ Template:消除歧義',
'noemailtext' => '該用戶還沒有指定一個有效的e-mail地å€ã€‚',
'nowikiemailtitle' => 'ä¸å®¹è¨±é›»å­éƒµä»¶',
'nowikiemailtext' => '這ä½ç”¨æˆ¶é¸æ“‡ä¸æŽ¥æ”¶å…¶ä»–用戶的電å­éƒµä»¶ã€‚',
+'emailnotarget' => '收件人ä¸å­˜åœ¨æˆ–無效的用戶å。',
+'emailtarget' => '輸入收件人用戶å',
+'emailusername' => '用戶å:',
+'emailusernamesubmit' => 'æ交',
'email-legend' => '發一å°é›»å­éƒµä»¶è‡³å¦ä¸€ä½{{SITENAME}}用戶',
'emailfrom' => '發件人:',
'emailto' => '收件人:',
@@ -2000,9 +2059,9 @@ Template:消除歧義',
'watchnologin' => '未登入',
'watchnologintext' => '您必須先[[Special:UserLogin|登入]]
æ‰èƒ½æ›´æ”¹æ‚¨çš„監視列表',
-'addedwatch' => '加入到監視列表',
+'addwatch' => '加至監視列表',
'addedwatchtext' => "é é¢ã€Œ[[:$1]]ã€å·²ç¶“被加入到您的[[Special:Watchlist|監視清單]]中。將來有關此é é¢åŠå…¶è¨Žè«–é çš„任何修改將會在那裡列出,而且還會在[[Special:RecentChanges|近期變動]]中以'''ç²—é«”'''å½¢å¼åˆ—出以使起更容易識別。",
-'removedwatch' => 'å·²åœæ­¢ç›£è¦–',
+'removewatch' => 'åœæ­¢ç›£è¦–',
'removedwatchtext' => '[[:$1]]已經從[[Special:Watchlist|您的監視é é¢]]中移除。',
'watch' => '監視',
'watchthispage' => '監視本é ',
@@ -2023,8 +2082,9 @@ Template:消除歧義',
'watchlist-options' => '監視列表é¸é …',
# Displayed when you click the "watch" button and it is in the process of watching
-'watching' => '正在監視...',
-'unwatching' => '正在åœæ­¢ç›£è¦–...',
+'watching' => '正在監視...',
+'unwatching' => '正在åœæ­¢ç›£è¦–...',
+'watcherrortext' => '在更改你的監視列表設定"$1"時發生了錯誤',
'enotif_mailer' => '{{SITENAME}}郵件通知器',
'enotif_reset' => '將所有é é¢æ¨™ç‚ºå·²é–±è®€',
@@ -2038,7 +2098,7 @@ Template:消除歧義',
'enotif_anon_editor' => '匿å用戶$1',
'enotif_body' => '親愛的 $WATCHINGUSERNAME,
-$PAGEEDITOR 已經在 $PAGEEDITDATE $CHANGEDORCREATED{{SITENAME}}çš„ $PAGETITLE é é¢ï¼Œè«‹åˆ° $PAGETITLE_URL 檢視目å‰ä¿®è¨‚版本。
+{{SITENAME}}çš„é é¢$PAGETITLE 已經於$PAGEEDITDATE ç”±$PAGEEDITOR 進行了CHANGEDORCREATED ,請見$PAGETITLE_URL ç€è¦½ç¾åœ¨çš„版本。
$NEWPAGE
@@ -2047,22 +2107,26 @@ $NEWPAGE
è¯ç¹«æ­¤ç·¨è¼¯è€…:
郵件: $PAGEEDITOR_EMAIL
-
本站: $PAGEEDITOR_WIKI
-在您訪å•æ­¤é ä¹‹å‰ï¼Œå°‡ä¾†çš„更改將ä¸æœƒå‘您發通知。您也å¯ä»¥é‡è¨­æ‚¨æ‰€æœ‰ç›£è¦–é é¢çš„通知標記。
+在您訪å•æ­¤é ä¹‹å‰ï¼Œå°‡ä¾†çš„更改將ä¸æœƒå‘您發通知。
+您也å¯ä»¥é‡è¨­æ‚¨æ‰€æœ‰ç›£è¦–é é¢çš„通知標記。
{{SITENAME}}通知系統
--
+è¦æ”¹è®Šæ‚¨çš„電郵設定,請åƒé–±
+{{canonicalurl:{{#special:Preferences}}}}
+
+
è¦æ”¹è®Šæ‚¨çš„監視列表設定,請åƒé–±
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
è¦åˆªé™¤æ‚¨ç›£è¦–清單中的該é é¢ï¼Œè«‹åƒé–±
$UNWATCHURL
回饋和進一步的幫助:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'deletepage' => '刪除é é¢',
@@ -2078,7 +2142,7 @@ $UNWATCHURL
請確定您è¦é€²è¡Œæ­¤é …æ“作,並且了解其後果,åŒæ™‚您的行為符åˆ[[{{MediaWiki:Policy-url}}]]。',
'actioncomplete' => 'æ“作完æˆ',
'actionfailed' => 'æ“作失敗',
-'deletedtext' => '「<nowiki>$1</nowiki>ã€å·²ç¶“被刪除。最近刪除的記錄請åƒè¦‹$2。',
+'deletedtext' => '「$1ã€å·²ç¶“被刪除。最近刪除的記錄請åƒè¦‹$2。',
'deletedarticle' => '已刪除「[[$1]]ã€',
'suppressedarticle' => '已廢止「[[$1]]ã€',
'dellogpage' => '刪除紀錄',
@@ -2133,7 +2197,7 @@ $UNWATCHURL
'protect_expiry_invalid' => '輸入的終止時間無效。',
'protect_expiry_old' => '終止時間已éŽåŽ»ã€‚',
'protect-unchain-permissions' => '解除鎖定更多的ä¿è­·é¸é …',
-'protect-text' => "{{GENDER:|ä½ |妳|ä½ }}å¯ä»¥åœ¨é€™è£¡ç€è¦½å’Œä¿®æ”¹å°é é¢'''<nowiki>$1</nowiki>'''çš„ä¿è­·ç´šåˆ¥ã€‚",
+'protect-text' => "{{GENDER:|ä½ |妳|ä½ }}å¯ä»¥åœ¨é€™è£¡ç€è¦½å’Œä¿®æ”¹å°é é¢'''$1'''çš„ä¿è­·ç´šåˆ¥ã€‚",
'protect-locked-blocked' => "您ä¸èƒ½åœ¨è¢«æŸ¥å°æ™‚更改ä¿è­·ç´šåˆ¥ã€‚
以下是'''$1'''ç¾æ™‚çš„ä¿è­·ç´šåˆ¥:",
'protect-locked-dblock' => "在資料庫鎖定時無法更改ä¿è­·ç´šåˆ¥ã€‚
@@ -2227,9 +2291,12 @@ $1',
'undelete-show-file-submit' => '是',
# Namespace form on various pages
-'namespace' => 'å字空間:',
-'invert' => 'åå‘é¸æ“‡',
-'blanknamespace' => '(主)',
+'namespace' => 'å字空間:',
+'invert' => 'åå‘é¸æ“‡',
+'tooltip-invert' => 'é¸ä¸­æ­¤è¤‡é¸æ¡†ä»¥éš±è—é¸å®šå‘½å空間內é é¢æ›´æ”¹ï¼ˆä»¥åŠç›¸é—œçš„命å空間,如果é¸ä¸­ï¼‰',
+'namespace_association' => 'é—œè¯å字空間',
+'tooltip-namespace_association' => 'é¸ä¸­æ­¤æ¡†å¯åŒ…括與é¸å®šå字空間相關的討論或主題命å空間',
+'blanknamespace' => '(主)',
# Contributions
'contributions' => '用戶貢ç»',
@@ -2279,13 +2346,15 @@ $1',
'whatlinkshere-filters' => 'éŽæ¿¾å™¨',
# Block/unblock
+'autoblockid' => 'è‡ªå‹•æŸ¥å° #$1',
+'block' => 'å°ç¦ç”¨æˆ¶',
+'unblock' => '解å°ç”¨æˆ¶',
'blockip' => 'å°ç¦ç”¨æˆ¶',
'blockip-title' => 'å°ç¦ç”¨æˆ¶',
'blockip-legend' => '查å°ç”¨æˆ¶',
'blockiptext' => '用下é¢çš„表單來ç¦æ­¢ä¾†è‡ªæŸä¸€ç‰¹å®šIP地å€çš„修改許å¯æ¬Šã€‚
åªæœ‰åœ¨ç‚ºé˜²æ­¢ç ´å£žï¼ŒåŠç¬¦åˆ[[{{MediaWiki:Policy-url}}|守則]]的情æ³ä¸‹æ‰å¯æŽ¡å–此行動。
請在下é¢è¼¸å…¥ä¸€å€‹å…·é«”çš„ç†ç”±ï¼ˆä¾‹å¦‚引述一個被破壞的é é¢ï¼‰ã€‚',
-'ipaddress' => 'IP ä½å€ï¼š',
'ipadressorusername' => 'IP地å€æˆ–用戶å:',
'ipbexpiry' => '期é™ï¼š',
'ipbreason' => '原因:',
@@ -2298,7 +2367,7 @@ $1',
** 無禮的行為ã€æ”»æ“Šï¼é¨·æ“¾åˆ¥äºº
** 濫用多個賬號
** ä¸èƒ½æŽ¥å—的用戶å',
-'ipbanononly' => '僅阻止匿å用戶',
+'ipb-hardblock' => '防止已登入用戶從該IP地å€ç·¨è¼¯',
'ipbcreateaccount' => '阻止創建新賬號',
'ipbemailban' => '阻止用戶傳é€é›»éƒµ',
'ipbenableautoblock' => '自動查å°æ­¤ç”¨æˆ¶æœ€å¾Œæ‰€ç”¨çš„IPä½å€ï¼Œä»¥åŠå¾Œä¾†è©¦åœ–編輯所用的所有ä½å€',
@@ -2309,12 +2378,15 @@ $1',
'ipbotherreason' => '其它ï¼é™„帶原因:',
'ipbhidename' => '在編輯åŠåˆ—表中隱è—用戶å',
'ipbwatchuser' => '監視這ä½ç”¨æˆ¶çš„用戶é é¢ä»¥åŠå…¶å°è©±é é¢',
-'ipballowusertalk' => '當被å°éŽ–時容許這ä½ç”¨æˆ¶åŽ»ç·¨è¼¯è‡ªå·±çš„討論é é¢',
+'ipb-disableusertalk' => 'ç¦æ­¢è¢«å°ç¦ç”¨æˆ¶ç·¨è¼¯è‡ªå·±çš„討論é ',
'ipb-change-block' => '利用這些設定é‡æ–°å°éŽ–用戶',
+'ipb-confirm' => '確èªå°ç¦',
'badipaddress' => '無效IP地å€',
'blockipsuccesssub' => '查å°æˆåŠŸ',
'blockipsuccesstext' => '[[Special:Contributions/$1|$1]]已經被查å°ã€‚
<br />åƒçœ‹[[Special:IPBlockList|被å°IP地å€åˆ—表]]以覆審查å°ã€‚',
+'ipb-blockingself' => 'ä½ è¦å°ç¦è‡ªå·±ï¼ç¢ºèªè¦é€™æ¨£åšå—Žï¼Ÿ',
+'ipb-confirmhideuser' => 'ä½ è¦å°ç¦ç”¨æˆ¶ä¸¦éš±è—其用戶å,這會隱è—在所有列表åŠæ—¥èªŒä¸­æ¶‰åŠæ­¤ç”¨æˆ¶ä¹‹ç”¨æˆ¶å。你確定è¦é€™æ¨£åšå—Žï¼Ÿ',
'ipb-edit-dropdown' => '編輯查å°åŽŸå› ',
'ipb-unblock-addr' => '解å°$1',
'ipb-unblock' => '解除ç¦å°ç”¨æˆ¶å或IP地å€',
@@ -2324,17 +2396,23 @@ $1',
'unblockiptext' => '用下é¢çš„表單來æ¢å¾©å…ˆå‰è¢«æŸ¥å°çš„IPä½å€æˆ–用戶的寫權é™ã€‚',
'ipusubmit' => '移除這個å°éŽ–',
'unblocked' => '[[User:$1|$1]] çš„å°ç¦å·²ç¶“解除。',
+'unblocked-range' => '$1已被解å°',
'unblocked-id' => 'å°ç¦ $1 已經被移除',
+'blocklist' => 'å°ç¦ç”¨æˆ¶',
'ipblocklist' => '被å°ç”¨æˆ¶åˆ—表',
'ipblocklist-legend' => 'æœå°‹ä¸€ä½å·²ç¶“被查å°çš„用戶',
-'ipblocklist-username' => '用戶å稱或IP地å€:',
-'ipblocklist-sh-userblocks' => '$1賬戶å°éŽ–',
-'ipblocklist-sh-tempblocks' => '$1臨時å°éŽ–',
-'ipblocklist-sh-addressblocks' => '$1å–®IPå°éŽ–',
+'blocklist-userblocks' => 'éš±è—用戶å°ç¦',
+'blocklist-tempblocks' => 'éš±è—臨時å°ç¦',
+'blocklist-addressblocks' => 'éš±è—單一IPå°ç¦',
+'blocklist-timestamp' => '時間',
+'blocklist-target' => '目標',
+'blocklist-expiry' => 'éŽæœŸ',
+'blocklist-by' => 'å°ç¦ç®¡ç†å“¡',
+'blocklist-params' => 'å°ç¦åƒæ•¸',
+'blocklist-reason' => '原因',
'ipblocklist-submit' => 'æœå°‹',
'ipblocklist-localblock' => '本地å°éŽ–',
'ipblocklist-otherblocks' => '其他{{PLURAL:$1|å°éŽ–|å°éŽ–}}',
-'blocklistline' => '$1,$3被$2查å°ï¼ˆ$4)',
'infiniteblock' => '永久',
'expiringblock' => '$1 $2 到期',
'anononlyblock' => '僅é™åŒ¿å用戶',
@@ -2355,7 +2433,7 @@ $1被å°ç¦çš„ç†ç”±æ˜¯â€œ$2â€',
'blocklog-showsuppresslog' => '這ä½ç”¨æˆ¶æ›¾ç¶“被å°éŽ–和隱è—éŽã€‚在下列æ供廢止記錄以便åƒè€ƒï¼š',
'blocklogentry' => 'å·²å°ç¦â€œ[[$1]]†$3而終止時間為$2',
'reblock-logentry' => '更改[[$1]]çš„å°ç¦è¨­å®šæ™‚é–“ $2 $3',
-'blocklogtext' => '這是關於用戶å°ç¦å’Œè§£é™¤å°ç¦æ“作的記錄。被自動å°ç¦çš„IP地å€æ²’有被列出。請åƒé–±[[Special:IPBlockList|被查å°çš„IP地å€å’Œç”¨æˆ¶åˆ—表]]。',
+'blocklogtext' => '這是關於用戶å°ç¦å’Œè§£é™¤å°ç¦æ“作的記錄。被自動å°ç¦çš„IP地å€æ²’有被列出。請åƒé–±[[Special:BlockList|被查å°çš„IP地å€å’Œç”¨æˆ¶åˆ—表]]。',
'unblocklogentry' => 'å·²è§£å° $1',
'block-log-flags-anononly' => '僅é™åŒ¿å用戶',
'block-log-flags-nocreate' => '建立帳號已ç¦ç”¨',
@@ -2369,9 +2447,9 @@ $1被å°ç¦çš„ç†ç”±æ˜¯â€œ$2â€',
'ipb_expiry_temp' => 'éš±è—用戶åå°éŽ–必須是永久性的。',
'ipb_hide_invalid' => 'ä¸èƒ½å£“止這個賬戶;它å¯èƒ½æœ‰å¤ªå¤šç·¨è¼¯ã€‚',
'ipb_already_blocked' => '已經å°éŽ–「$1ã€',
-'ipb-needreblock' => '== 已經å°éŽ– ==
-$1已經被å°éŽ–。您是å¦æƒ³æ›´æ”¹é€™å€‹è¨­å®šï¼Ÿ',
+'ipb-needreblock' => '$1已經被å°éŽ–。您是å¦æƒ³æ›´æ”¹é€™å€‹è¨­å®šï¼Ÿ',
'ipb-otherblocks-header' => '其他{{PLURAL:$1|å°éŽ–|å°éŽ–}}',
+'unblock-hideuser' => '由於其用戶å已隱è—,你無法解å°é€™å€‹ç”¨æˆ¶ã€‚',
'ipb_cant_unblock' => '錯誤: 找ä¸åˆ°æŸ¥å°ID$1。å¯èƒ½å·²ç¶“解除å°ç¦ã€‚',
'ipb_blocked_as_range' => '錯誤: 該IP $1 無直接查å°ï¼Œä¸å¯ä»¥è§£é™¤å°ç¦ã€‚但是它是在 $2 的查å°ç¯„åœä¹‹å…§ï¼Œè©²æ®µç¯„åœæ˜¯å¯ä»¥è§£é™¤å°ç¦çš„。',
'ip_range_invalid' => '無效的IP範åœã€‚',
@@ -2408,6 +2486,7 @@ $1已經被å°éŽ–。您是å¦æƒ³æ›´æ”¹é€™å€‹è¨­å®šï¼Ÿ',
'unlockdbsuccesstext' => '{{SITENAME}}資料庫é‡æ–°é–‹æ”¾ã€‚',
'lockfilenotwritable' => '資料庫鎖定檔案ä¸å¯å¯«å…¥ã€‚è¦éŽ–定和解鎖資料庫,該檔案必須å°ç¶²è·¯ä¼ºæœå™¨å¯å¯«å…¥ã€‚',
'databasenotlocked' => '資料庫沒有鎖定。',
+'lockedbyandtime' => '在$2的$3由$1',
# Move page
'move-page' => '移動$1',
@@ -2537,7 +2616,7 @@ $1已經被å°éŽ–。您是å¦æƒ³æ›´æ”¹é€™å€‹è¨­å®šï¼Ÿ',
'allmessagesdefault' => 'é è¨­çš„訊æ¯æ–‡å­—',
'allmessagescurrent' => 'ç¾æ™‚的訊æ¯æ–‡å­—',
'allmessagestext' => '這裡列出所有å¯å®šè£½çš„系統界é¢ã€‚
-如果想貢ç»æ­£å®—çš„MediaWiki本地化的話,請åƒé–±[http://www.mediawiki.org/wiki/Localisation MediaWiki本地化]以åŠ[http://translatewiki.net translatewiki.net]。',
+如果想貢ç»æ­£å®—çš„MediaWiki本地化的話,請åƒé–±[//www.mediawiki.org/wiki/Localisation MediaWiki本地化]以åŠ[//translatewiki.net translatewiki.net]。',
'allmessagesnotsupportedDB' => "這個é é¢ç„¡æ³•ä½¿ç”¨ï¼Œå› ç‚º'''\$wgUseDatabaseMessages'''已被設定關閉。",
'allmessages-filter-legend' => 'éŽæ¿¾',
'allmessages-filter' => '以自定狀æ³éŽæ¿¾ï¼š',
@@ -2701,9 +2780,7 @@ $1已經被å°éŽ–。您是å¦æƒ³æ›´æ”¹é€™å€‹è¨­å®šï¼Ÿ',
'vector.js' => '/* 此處的JavaScript將載入於使用Vectoré¢æ¿çš„用戶 */',
# Metadata
-'nodublincore' => 'Dublin Core RDF 元數據在該伺æœå™¨ä¸å¯ä½¿ç”¨ã€‚',
-'nocreativecommons' => 'Creative Commons RDF 元數據在該伺æœå™¨ä¸å¯ä½¿ç”¨ã€‚',
-'notacceptable' => '該網站伺æœå™¨ä¸èƒ½æ供您的客戶端能識別的數據格å¼ã€‚',
+'notacceptable' => '該網站伺æœå™¨ä¸èƒ½æ供您的客戶端能識別的數據格å¼ã€‚',
# Attribution
'anonymous' => '{{SITENAME}}的匿å{{PLURAL:$1|用戶|用戶}}',
@@ -2727,12 +2804,17 @@ $1已經被å°éŽ–。您是å¦æƒ³æ›´æ”¹é€™å€‹è¨­å®šï¼Ÿ',
'spam_blanking' => '所有包å«é€£çµè‡³$1的修訂,清空',
# Info page
-'infosubtitle' => 'é é¢è¨Šæ¯',
-'numedits' => '編輯數 (é é¢ï¼‰: $1',
-'numtalkedits' => '編輯數 (討論é ï¼‰: $1',
-'numwatchers' => '監視者數目: $1',
-'numauthors' => 'ä½œè€…æ•¸é‡ ï¼ˆé é¢ï¼‰: $1',
-'numtalkauthors' => 'ä½œè€…æ•¸é‡ ï¼ˆè¨Žè«–é ï¼‰: $1',
+'pageinfo-title' => '" $1 "çš„ä¿¡æ¯',
+'pageinfo-header-edits' => '編輯',
+'pageinfo-header-watchlist' => '監視列表',
+'pageinfo-header-views' => '檢視',
+'pageinfo-subjectpage' => 'é ',
+'pageinfo-talkpage' => '討論é ',
+'pageinfo-watchers' => '監視者數目',
+'pageinfo-edits' => '編輯次數',
+'pageinfo-authors' => '作者數',
+'pageinfo-views' => '觀看次數',
+'pageinfo-viewsperedit' => 'æ¯æ¬¡ç·¨è¼¯æª¢è¦–數',
# Skin names
'skinname-standard' => '標準',
@@ -2740,25 +2822,6 @@ $1已經被å°éŽ–。您是å¦æƒ³æ›´æ”¹é€™å€‹è¨­å®šï¼Ÿ',
'skinname-cologneblue' => '科隆香水è—',
'skinname-modern' => 'ç¾ä»£',
-# Math options
-'mw_math_png' => 'æ°¸é ä½¿ç”¨PNG圖片',
-'mw_math_simple' => '如果是簡單的公å¼ä½¿ç”¨HTML,å¦å‰‡ä½¿ç”¨PNG圖片',
-'mw_math_html' => '如果å¯ä»¥ç”¨HTML,å¦å‰‡ç”¨PNG圖片',
-'mw_math_source' => '顯示為TeX代碼 (使用文字ç€è¦½å™¨æ™‚)',
-'mw_math_modern' => '推薦為新版ç€è¦½å™¨ä½¿ç”¨',
-'mw_math_mathml' => '儘å¯èƒ½ä½¿ç”¨MathML (試驗中)',
-
-# Math errors
-'math_failure' => '解æžå¤±æ•—',
-'math_unknown_error' => '未知錯誤',
-'math_unknown_function' => '未知函數',
-'math_lexing_error' => 'å¥æ³•éŒ¯èª¤',
-'math_syntax_error' => '語法錯誤',
-'math_image_error' => 'PNG 轉æ›å¤±æ•—;請檢查是å¦æ­£ç¢ºå®‰è£äº† latex, dvipng(或dvips + gs + convert)',
-'math_bad_tmpdir' => '無法寫入或建立數學公å¼è‡¨æ™‚目錄',
-'math_bad_output' => '無法寫入或建立數學公å¼è¼¸å‡ºç›®éŒ„',
-'math_notexvc' => '"texvc"執行檔案éºå¤±ï¼›è«‹åƒç…§ math/README 進行é…置。',
-
# Patrolling
'markaspatrolleddiff' => '標記為已巡查',
'markaspatrolledtext' => '標記此é é¢ç‚ºå·²å·¡æŸ¥',
@@ -2794,22 +2857,25 @@ $1',
'nextdiff' => '下一版本→',
# Media information
-'mediawarning' => "'''警告''': 該檔案類型å¯èƒ½åŒ…å«æƒ¡æ„代碼。
+'mediawarning' => "'''警告''': 該檔案類型å¯èƒ½åŒ…å«æƒ¡æ„代碼。
執行它å¯èƒ½å°æ‚¨çš„系統帶來å±éšªã€‚",
-'imagemaxsize' => "å½±åƒå¤§å°é™åˆ¶:<br />''(用在檔案æè¿°é é¢ä¸­ï¼‰''",
-'thumbsize' => '略圖大å°:',
-'widthheightpage' => '$1×$2, $3é ',
-'file-info' => '檔案大å°: $1, MIME é¡žåž‹: $2',
-'file-info-size' => '$1 × $2 åƒç´ ï¼Œæª”案大å°ï¼š$3,MIME類型:$4',
-'file-nohires' => '<small>無更高解åƒåº¦å¯æ供。</small>',
-'svg-long-desc' => 'SVG 檔案,表é¢å¤§å°ï¼š$1 × $2 åƒç´ ï¼Œæª”案大å°ï¼š$3',
-'show-big-image' => '完整解åƒåº¦',
-'show-big-image-thumb' => '<small>這幅縮圖的解åƒåº¦: $1 × $2 åƒç´ </small>',
-'file-info-gif-looped' => '循環',
-'file-info-gif-frames' => '$1å¹€',
-'file-info-png-looped' => '循環',
-'file-info-png-repeat' => '已播放$1次',
-'file-info-png-frames' => '$1å¹€',
+'imagemaxsize' => "å½±åƒå¤§å°é™åˆ¶:<br />''(用在檔案æè¿°é é¢ä¸­ï¼‰''",
+'thumbsize' => '略圖大å°:',
+'widthheightpage' => '$1×$2, $3é ',
+'file-info' => '檔案大å°: $1, MIME é¡žåž‹: $2',
+'file-info-size' => '$1 × $2 åƒç´ ï¼Œæª”案大å°ï¼š$3,MIME類型:$4',
+'file-info-size-pages' => '$1 × $2åƒç´ ï¼Œæª”案大å°: $3,檔案類型: $4, $5 {{PLURAL:$5|é |é }}',
+'file-nohires' => '<small>無更高解åƒåº¦å¯æ供。</small>',
+'svg-long-desc' => 'SVG 檔案,表é¢å¤§å°ï¼š$1 × $2 åƒç´ ï¼Œæª”案大å°ï¼š$3',
+'show-big-image' => '完整解åƒåº¦',
+'show-big-image-preview' => '<small>æ­¤é è¦½çš„大å°ï¼š$1.</small>',
+'show-big-image-other' => '<small>其他大å°ï¼š$1。</small>',
+'show-big-image-size' => '$1× $2 åƒç´ ',
+'file-info-gif-looped' => '循環',
+'file-info-gif-frames' => '$1å¹€',
+'file-info-png-looped' => '循環',
+'file-info-png-repeat' => '已播放$1次',
+'file-info-png-frames' => '$1å¹€',
# Special:NewFiles
'newimages' => '新建圖片畫廊',
@@ -2851,15 +2917,21 @@ Variants for Chinese language
如果此檔案的æºæª”案已經被修改,一些訊æ¯åœ¨ä¿®æ”¹å¾Œçš„檔案中將ä¸èƒ½å®Œå…¨å映出來。',
'metadata-expand' => '顯示詳細資料',
'metadata-collapse' => 'éš±è—詳細資料',
-'metadata-fields' => '在本訊æ¯ä¸­æ‰€åˆ—出的 EXIF 元數據域將包å«åœ¨åœ–片顯示é é¢,
-當元數據表æ壞時åªé¡¯ç¤ºä»¥ä¸‹è¨Šæ¯ï¼Œå…¶ä»–的元數據é è¨­ç‚ºéš±è—。
+'metadata-fields' => '在本訊æ¯ä¸­æ‰€åˆ—出的 EXIF 元數據域將包å«åœ¨åœ–片顯示é é¢ï¼Œç•¶å…ƒæ•¸æ“šè¡¨æ壞時åªé¡¯ç¤ºä»¥ä¸‹è¨Šæ¯ã€‚
+其他的元數據é è¨­ç‚ºéš±è—。
* make
* model
* datetimeoriginal
* exposuretime
* fnumber
* isospeedratings
-* focallength',
+* focallength
+* artist
+* copyright
+* imagedescription
+* gpslatitude
+* gpslongitude
+* gpsaltitude',
# EXIF tags
'exif-imagewidth' => '寬度',
@@ -2874,13 +2946,11 @@ Variants for Chinese language
'exif-ycbcrpositioning' => '黃色和洋紅é…ç½®',
'exif-xresolution' => '水準分辨率',
'exif-yresolution' => '垂直分辨率',
-'exif-resolutionunit' => 'X 軸與 Y 軸分辨率單ä½',
'exif-stripoffsets' => '圖片數據å€',
'exif-rowsperstrip' => 'æ¯å¸¶è¡Œæ•¸',
'exif-stripbytecounts' => 'æ¯å£“縮帶ä½å…ƒçµ„數',
'exif-jpeginterchangeformat' => 'JPEG SOI å移',
'exif-jpeginterchangeformatlength' => 'JPEG 數據ä½å…ƒçµ„',
-'exif-transferfunction' => '轉移功能',
'exif-whitepoint' => '白點色度',
'exif-primarychromaticities' => '主è¦è‰²åº¦',
'exif-ycbcrcoefficients' => 'é¡è‰²ç©ºé–“轉æ›çŸ©é™£ç³»æ•¸',
@@ -2899,7 +2969,6 @@ Variants for Chinese language
'exif-compressedbitsperpixel' => '圖片壓縮模å¼',
'exif-pixelydimension' => '圖片寬度',
'exif-pixelxdimension' => '圖片高度',
-'exif-makernote' => '製造商註釋',
'exif-usercomment' => '用戶註釋',
'exif-relatedsoundfile' => '相關的音頻檔案',
'exif-datetimeoriginal' => '數據產生時間',
@@ -2913,7 +2982,6 @@ Variants for Chinese language
'exif-exposureprogram' => 'æ›å…‰æ¨¡å¼',
'exif-spectralsensitivity' => 'æ„Ÿå…‰',
'exif-isospeedratings' => 'ISO 速率',
-'exif-oecf' => '光電轉æ›å› å­',
'exif-shutterspeedvalue' => 'APEX快門速度',
'exif-aperturevalue' => 'APEX光圈',
'exif-brightnessvalue' => 'APEX亮度',
@@ -2926,7 +2994,6 @@ Variants for Chinese language
'exif-focallength' => '焦è·',
'exif-subjectarea' => '主體å€åŸŸ',
'exif-flashenergy' => '閃光燈強度',
-'exif-spatialfrequencyresponse' => '空間頻率附應',
'exif-focalplanexresolution' => 'X軸焦平é¢åˆ†è¾¨çŽ‡',
'exif-focalplaneyresolution' => 'Y軸焦平é¢åˆ†è¾¨çŽ‡',
'exif-focalplaneresolutionunit' => '焦平é¢åˆ†è¾¨çŽ‡å–®ä½',
@@ -2935,7 +3002,6 @@ Variants for Chinese language
'exif-sensingmethod' => '感光模å¼',
'exif-filesource' => '檔案æº',
'exif-scenetype' => '場景類型',
-'exif-cfapattern' => 'CFA 模å¼',
'exif-customrendered' => '自訂圖片處ç†',
'exif-exposuremode' => 'æ›å…‰æ¨¡å¼',
'exif-whitebalance' => '白平衡',
@@ -2980,10 +3046,79 @@ Variants for Chinese language
'exif-gpsareainformation' => 'GPS å€åŸŸå稱',
'exif-gpsdatestamp' => 'GPS 日期',
'exif-gpsdifferential' => 'GPS 差動修正',
+'exif-jpegfilecomment' => 'JPEG 檔案備註',
+'exif-keywords' => 'é—œéµå­—',
+'exif-worldregioncreated' => '圖片æ‹æ”地',
+'exif-countrycreated' => '圖片æ‹æ”國家',
+'exif-countrycodecreated' => 'æ‹æ”的國家代碼',
+'exif-provinceorstatecreated' => 'çœå¸‚',
+'exif-citycreated' => '照片中的城市',
+'exif-sublocationcreated' => '該城市的å­åœ°é»ž',
+'exif-worldregiondest' => '世界å€åŸŸé¡¯ç¤º',
+'exif-countrydest' => '顯示的國家',
+'exif-countrycodedest' => '顯示國家的代碼',
+'exif-provinceorstatedest' => 'çœæˆ–狀態顯示',
+'exif-citydest' => '顯示城市',
+'exif-sublocationdest' => '城市的å­åœ°é»ž',
'exif-objectname' => '簡稱',
+'exif-specialinstructions' => '特別說明',
+'exif-headline' => '標題',
+'exif-credit' => 'ç½²å/æ供者',
+'exif-source' => '來æº',
+'exif-editstatus' => '圖片編輯狀態',
+'exif-urgency' => '緊急性',
+'exif-fixtureidentifier' => '夾具å稱',
+'exif-locationdest' => 'ä½ç½®æè¿°',
+'exif-locationdestcode' => 'ä½ç½®æ‰€ç¤ºçš„代碼',
+'exif-objectcycle' => '媒體的時間',
+'exif-contact' => 'è¯ç¹«ä¿¡æ¯',
+'exif-writer' => '作家',
+'exif-languagecode' => '語言',
+'exif-iimversion' => 'IIM版本',
+'exif-iimcategory' => '分類',
+'exif-iimsupplementalcategory' => '補充分類',
+'exif-datetimeexpires' => '這個日期後ä¸è¦ä½¿ç”¨',
+'exif-datetimereleased' => '發表日',
+'exif-originaltransmissionref' => '傳輸ä½ç½®åŽŸä»£ç¢¼',
+'exif-identifier' => '標識符號',
+'exif-lens' => '使用的é¡é ­',
+'exif-serialnumber' => '相機的åºè™Ÿ',
+'exif-cameraownername' => '相機æŒæœ‰äºº',
+'exif-label' => '標籤',
+'exif-datetimemetadata' => '元數據最後修改日期',
+'exif-nickname' => 'éžæ­£å¼åœ–片å',
+'exif-rating' => '評分(最高5分)',
+'exif-rightscertificate' => '權利管ç†è­‰æ›¸',
+'exif-copyrighted' => '版權狀態',
+'exif-copyrightowner' => '版權æŒæœ‰äºº',
+'exif-usageterms' => '使用æ¢æ¬¾',
+'exif-webstatement' => '網上版權說明',
+'exif-originaldocumentid' => '文件的唯一ID',
+'exif-licenseurl' => '版權許å¯çš„連çµ',
+'exif-morepermissionsurl' => '替代的許å¯ä¿¡æ¯',
+'exif-attributionurl' => '當é‡ç”¨æ™‚,請連çµè‡³',
+'exif-preferredattributionname' => '當é‡ç”¨æ™‚,請署å',
+'exif-pngfilecomment' => 'PNG文件注釋',
+'exif-disclaimer' => 'å…責è²æ˜Ž',
+'exif-contentwarning' => '內容警告',
+'exif-giffilecomment' => 'GIF註釋',
+'exif-intellectualgenre' => '項目類型',
+'exif-subjectnewscode' => '主題代碼',
+'exif-scenecode' => 'IPTCç¾å ´ä»£ç¢¼',
+'exif-event' => '事件æè¿°',
+'exif-organisationinimage' => '組織æè¿°',
+'exif-personinimage' => '所æ述的人',
+'exif-originalimageheight' => '被è£å‰ªå‰é«˜åº¦',
+'exif-originalimagewidth' => '被è£å‰ªå‰å¯¬åº¦',
# EXIF attributes
'exif-compression-1' => '未壓縮',
+'exif-compression-2' => 'CCITT第3組一維修改éœå¤«æ›¼éŠç¨‹ç·¨ç¢¼',
+'exif-compression-3' => 'CCITT第3組傳真編碼',
+'exif-compression-4' => 'CCITT第4組傳真編碼',
+
+'exif-copyrighted-true' => 'å—版權ä¿è­·',
+'exif-copyrighted-false' => '公共領域',
'exif-unknowndate' => '未知的日期',
@@ -2999,6 +3134,8 @@ Variants for Chinese language
'exif-planarconfiguration-1' => '矮胖格å¼',
'exif-planarconfiguration-2' => 'å¹³é¢æ ¼å¼',
+'exif-colorspace-65535' => 'é¡è‰²æœªæ ¡æº–',
+
'exif-componentsconfiguration-0' => 'ä¸å­˜åœ¨',
'exif-exposureprogram-0' => '未定義',
@@ -3112,6 +3249,10 @@ Variants for Chinese language
'exif-gpslongitude-e' => 'æ±ç¶“',
'exif-gpslongitude-w' => '西經',
+# Pseudotags used for GPSAltitudeRef
+'exif-gpsaltitude-above-sealevel' => 'æµ·æ‹”$1 {{PLURAL:$1|ç±³|ç±³}}',
+'exif-gpsaltitude-below-sealevel' => '海拔負$1{{PLURAL:$1|米|米}}',
+
'exif-gpsstatus-a' => '測é‡éŽç¨‹',
'exif-gpsstatus-v' => '互動測é‡',
@@ -3123,21 +3264,73 @@ Variants for Chinese language
'exif-gpsspeed-m' => '英里æ¯å°æ™‚',
'exif-gpsspeed-n' => '海里æ¯å°æ™‚(節)',
+# Pseudotags used for GPSDestDistanceRef
+'exif-gpsdestdistance-k' => '公里',
+'exif-gpsdestdistance-m' => '英里',
+'exif-gpsdestdistance-n' => '海里',
+
+'exif-gpsdop-excellent' => '優( $1 )',
+'exif-gpsdop-good' => '良( $1 )',
+'exif-gpsdop-moderate' => '中度( $1 )',
+'exif-gpsdop-fair' => '一般($1)',
+'exif-gpsdop-poor' => '差( $1 )',
+
+'exif-objectcycle-a' => 'é™æ–¼ä¸Šåˆ',
+'exif-objectcycle-p' => 'é™æ–¼ä¸‹åˆ',
+'exif-objectcycle-b' => '上åˆèˆ‡ä¸‹åˆ',
+
# Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef
'exif-gpsdirection-t' => '真方ä½',
'exif-gpsdirection-m' => '地ç£æ–¹ä½',
+'exif-ycbcrpositioning-1' => '置中',
+'exif-ycbcrpositioning-2' => 'è¯åˆé¸å€',
+
+'exif-dc-contributor' => 'è²¢ç»è€…',
+'exif-dc-coverage' => '時間或空間性介質範åœ',
+'exif-dc-date' => '日期',
+'exif-dc-publisher' => '出版商',
+'exif-dc-relation' => '相關媒體',
+'exif-dc-rights' => '權利',
+'exif-dc-source' => '來æºåª’é«”',
+'exif-dc-type' => '介質類型',
+
+'exif-rating-rejected' => '拒絕',
+
+'exif-isospeedratings-overflow' => '大於 65535',
+
+'exif-iimcategory-ace' => 'è—術,文化和娛樂',
+'exif-iimcategory-clj' => '犯罪與法律',
+'exif-iimcategory-dis' => 'ç½â€‹â€‹å®³å’Œäº‹æ•…',
+'exif-iimcategory-fin' => '經濟與商業',
+'exif-iimcategory-edu' => '教育',
+'exif-iimcategory-evn' => '環境',
+'exif-iimcategory-hth' => 'å¥åº·',
+'exif-iimcategory-hum' => '人類利益',
+'exif-iimcategory-lab' => 'å‹žå·¥',
+'exif-iimcategory-lif' => '生活休閒',
+'exif-iimcategory-pol' => '政治',
+'exif-iimcategory-rel' => '宗教信仰',
+'exif-iimcategory-sci' => '科技',
+'exif-iimcategory-soi' => '社會å•é¡Œ',
+'exif-iimcategory-spo' => '體育',
+'exif-iimcategory-war' => '戰爭,è¡çªå’Œå‹•ç›ª',
+'exif-iimcategory-wea' => '天氣',
+
+'exif-urgency-normal' => '正常( $1 )',
+'exif-urgency-low' => '低( $1 )',
+'exif-urgency-high' => '高( $1 )',
+'exif-urgency-other' => '用戶定義( $1 )',
+
# External editor support
'edit-externally' => '用外部程å¼ç·¨è¼¯æ­¤æª”案',
-'edit-externally-help' => '(請åƒè¦‹[http://www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊)',
+'edit-externally-help' => '(請åƒè¦‹[//www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊)',
# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => '全部',
-'imagelistall' => '全部',
-'watchlistall2' => '全部',
-'namespacesall' => '全部',
-'monthsall' => '全部',
-'limitall' => '全部',
+'watchlistall2' => '全部',
+'namespacesall' => '全部',
+'monthsall' => '全部',
+'limitall' => '全部',
# E-mail address confirmation
'confirmemail' => '確èªéƒµç®±ä½å€',
@@ -3212,17 +3405,24 @@ $1',
'trackbackdeleteok' => 'Trackback 刪除æˆåŠŸã€‚',
# Delete conflict
-'deletedwhileediting' => '警告: æ­¤é åœ¨æ‚¨é–‹å§‹ç·¨è¼¯ä¹‹å¾Œå·²ç¶“被刪除﹗',
-'confirmrecreate' => "在您開始編輯這個é é¢å¾Œï¼Œç”¨æˆ¶[[User:$1|$1]] ([[User talk:$1|å°è©±]])以下列原因刪除了這個é é¢ï¼š
+'deletedwhileediting' => '警告: æ­¤é åœ¨æ‚¨é–‹å§‹ç·¨è¼¯ä¹‹å¾Œå·²ç¶“被刪除﹗',
+'confirmrecreate' => "在您開始編輯這個é é¢å¾Œï¼Œç”¨æˆ¶[[User:$1|$1]] ([[User talk:$1|å°è©±]])以下列原因刪除了這個é é¢ï¼š
: ''$2''
請確èªåœ¨æ‚¨é‡æ–°å‰µå»ºé é¢å‰ä¸‰æ€ã€‚",
-'recreate' => 'é‡å»º',
+'confirmrecreate-noreason' => '在您開始編輯後,用戶[[User:$1|$1]] ([[User talk:$1|å°è©±]])刪除了這個é é¢ã€‚請在é‡æ–°å‰µå»ºé é¢å‰ä¸‰æ€ã€‚',
+'recreate' => 'é‡å»º',
# action=purge
'confirm_purge_button' => '確定',
'confirm-purge-top' => 'è¦æ¸…除此é é¢çš„å¿«å–å—Ž?',
'confirm-purge-bottom' => '清ç†ä¸€é å°‡æœƒæ¸…除快å–以åŠå¼·è¿«é¡¯ç¤ºæœ€ç¾æ™‚之修訂版本。',
+# action=watch/unwatch
+'confirm-watch-button' => '確定',
+'confirm-watch-top' => '監視此é ï¼Ÿ',
+'confirm-unwatch-button' => '確定',
+'confirm-unwatch-top' => 'åœæ­¢ç›£è¦–æ­¤é ï¼Ÿ',
+
# Separators for various lists, etc.
'comma-separator' => 'ã€',
'word-separator' => '',
@@ -3272,12 +3472,12 @@ $1',
'watchlistedit-noitems' => '您的監視列表並無標題。',
'watchlistedit-normal-title' => '編輯監視列表',
'watchlistedit-normal-legend' => '從監視列表中移除標題',
-'watchlistedit-normal-explain' => '在您的監視列表中的標題在下é¢é¡¯ç¤ºã€‚è¦ç§»é™¤ä¸€å€‹æ¨™é¡Œï¼Œåœ¨å®ƒå‰é¢å‰”一下,接著點擊「{{int:Watchlistedit-normal-submit}}ã€ã€‚您亦å¯ä»¥[[Special:Watchlist/raw|編輯原始監視列表]]。',
+'watchlistedit-normal-explain' => '在您的監視列表中的標題在下é¢é¡¯ç¤ºã€‚è¦ç§»é™¤ä¸€å€‹æ¨™é¡Œï¼Œåœ¨å®ƒå‰é¢å‰”一下,接著點擊「{{int:Watchlistedit-normal-submit}}ã€ã€‚您亦å¯ä»¥[[Special:EditWatchlist/raw|編輯原始監視列表]]。',
'watchlistedit-normal-submit' => '移除標題',
'watchlistedit-normal-done' => '$1個標題已經從您的監視列表中移除:',
'watchlistedit-raw-title' => '編輯原始監視列表',
'watchlistedit-raw-legend' => '編輯原始監視列表',
-'watchlistedit-raw-explain' => '您的監視列表中的標題在下é¢é¡¯ç¤ºï¼ŒåŒæ™‚亦都å¯ä»¥é€éŽç·¨è¼¯é€™å€‹è¡¨åŽ»åŠ å…¥ä»¥åŠç§»é™¤æ¨™é¡Œï¼›ä¸€è¡Œä¸€å€‹æ¨™é¡Œã€‚當完æˆä»¥å¾Œï¼Œé»žæ“Š{{int:Watchlistedit-raw-submit}}。{{GENDER:|ä½ |妳|ä½ }}亦都å¯ä»¥åŽ»ç”¨[[Special:Watchlist/edit|標準編輯器]]。',
+'watchlistedit-raw-explain' => '您的監視列表中的標題在下é¢é¡¯ç¤ºï¼ŒåŒæ™‚亦都å¯ä»¥é€éŽç·¨è¼¯é€™å€‹è¡¨åŽ»åŠ å…¥ä»¥åŠç§»é™¤æ¨™é¡Œï¼›ä¸€è¡Œä¸€å€‹æ¨™é¡Œã€‚當完æˆä»¥å¾Œï¼Œé»žæ“Š{{int:Watchlistedit-raw-submit}}。{{GENDER:|ä½ |妳|ä½ }}亦都å¯ä»¥åŽ»ç”¨[[Special:EditWatchlist|標準編輯器]]。',
'watchlistedit-raw-titles' => '標題:',
'watchlistedit-raw-submit' => '更新監視列表',
'watchlistedit-raw-done' => '您的監視列表已經更新。',
@@ -3294,33 +3494,33 @@ $1',
'duplicate-defaultsort' => '警告: é è¨­çš„排åºéµ "$2" 覆蓋先å‰çš„é è¨­æŽ’åºéµ "$1"。',
# Special:Version
-'version' => '版本',
-'version-extensions' => '已經安è£çš„擴展',
-'version-specialpages' => '特殊é é¢',
-'version-parserhooks' => '語法鈎',
-'version-variables' => '變數',
-'version-skins' => '外觀',
-'version-other' => '其他',
-'version-mediahandlers' => '媒體處ç†å™¨',
-'version-hooks' => '鈎',
-'version-extension-functions' => '擴展函數',
-'version-parser-extensiontags' => '語法擴展標籤',
-'version-parser-function-hooks' => '語法函數鈎',
-'version-skin-extension-functions' => 'é¢ç‰ˆæ“´å±•å‡½æ•¸',
-'version-hook-name' => '鈎å',
-'version-hook-subscribedby' => '利用於',
-'version-version' => '(版本 $1)',
-'version-license' => '授權',
-'version-poweredby-credits' => "這個 Wiki 由 '''[http://www.mediawiki.org/ MediaWiki]''' 驅動,版權所有 © 2001-$1 $2。",
-'version-poweredby-others' => '其他',
-'version-license-info' => 'MediaWiki為自由軟件;您å¯ä¾æ“šè‡ªç”±è»Ÿä»¶åŸºé‡‘會所發表的GNU通用公共授權æ¢æ¬¾è¦å®šï¼Œå°±æœ¬ç¨‹å¼å†ç‚ºç™¼ä½ˆèˆ‡ï¼æˆ–修改;無論您ä¾æ“šçš„是本授權的第二版或(您自行é¸æ“‡çš„)任一日後發行的版本。
+'version' => '版本',
+'version-extensions' => '已經安è£çš„擴展',
+'version-specialpages' => '特殊é é¢',
+'version-parserhooks' => '語法鈎',
+'version-variables' => '變數',
+'version-antispam' => '垃圾防止',
+'version-skins' => '外觀',
+'version-other' => '其他',
+'version-mediahandlers' => '媒體處ç†å™¨',
+'version-hooks' => '鈎',
+'version-extension-functions' => '擴展函數',
+'version-parser-extensiontags' => '語法擴展標籤',
+'version-parser-function-hooks' => '語法函數鈎',
+'version-hook-name' => '鈎å',
+'version-hook-subscribedby' => '利用於',
+'version-version' => '(版本 $1)',
+'version-license' => '授權',
+'version-poweredby-credits' => "這個 Wiki 由 '''[//www.mediawiki.org/ MediaWiki]''' 驅動,版權所有 © 2001-$1 $2。",
+'version-poweredby-others' => '其他',
+'version-license-info' => 'MediaWiki為自由軟件;您å¯ä¾æ“šè‡ªç”±è»Ÿä»¶åŸºé‡‘會所發表的GNU通用公共授權æ¢æ¬¾è¦å®šï¼Œå°±æœ¬ç¨‹å¼å†ç‚ºç™¼ä½ˆèˆ‡ï¼æˆ–修改;無論您ä¾æ“šçš„是本授權的第二版或(您自行é¸æ“‡çš„)任一日後發行的版本。
MediaWiki是基於使用目的而加以發佈,然而ä¸è² ä»»ä½•æ“”ä¿è²¬ä»»ï¼›äº¦ç„¡å°é©å”®æ€§æˆ–特定目的é©ç”¨æ€§æ‰€ç‚ºçš„默示性擔ä¿ã€‚詳情請åƒç…§GNU通用公共授權。
-您應已收到附隨於本程å¼çš„[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU通用公共授權的副本];如果沒有,請寫信至自由軟件基金會:51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或[http://www.gnu.org/licenses/old-licenses/gpl-2.0.html 線上閱讀]。',
-'version-software' => '已經安è£çš„軟件',
-'version-software-product' => '產å“',
-'version-software-version' => '版本',
+您應已收到附隨於本程å¼çš„[{{SERVER}}{{SCRIPTPATH}}/COPYING GNU通用公共授權的副本];如果沒有,請寫信至自由軟件基金會:51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA,或[//www.gnu.org/licenses/old-licenses/gpl-2.0.html 線上閱讀]。',
+'version-software' => '已經安è£çš„軟件',
+'version-software-product' => '產å“',
+'version-software-version' => '版本',
# Special:FilePath
'filepath' => '檔案路徑',
@@ -3329,22 +3529,22 @@ MediaWiki是基於使用目的而加以發佈,然而ä¸è² ä»»ä½•æ“”ä¿è²¬ä»»ï¼
'filepath-summary' => '這個特殊é é¢æ“·å–一個檔案的完整路徑。圖片會以完整的解åƒåº¦é¡¯ç¤ºï¼Œå…¶å®ƒçš„檔案類型會以åŒå®ƒå€‘已關è¯ç¨‹å¼å•Ÿå‹•ã€‚',
# Special:FileDuplicateSearch
-'fileduplicatesearch' => 'é¸æ“‡é‡è¦†æª”案',
-'fileduplicatesearch-summary' => '用é‡è¦†æª”案的切細值去找出檔案是å¦é‡è¦†ã€‚
-
-輸入檔å時ä¸éœ€è¦è¼¸å…¥ "{{ns:file}}:" 開頭。',
-'fileduplicatesearch-legend' => '找é‡è¦†',
-'fileduplicatesearch-filename' => '檔案å稱:',
-'fileduplicatesearch-submit' => '找',
-'fileduplicatesearch-info' => '$1 × $2 åƒç´ <br />檔案大å°ï¼š$3<br />MIME 類型:$4',
-'fileduplicatesearch-result-1' => '檔案 "$1" 無完全相åŒçš„é‡è¦†ã€‚',
-'fileduplicatesearch-result-n' => '檔案 "$1" 有$2項完全相åŒçš„é‡è¦†ã€‚',
+'fileduplicatesearch' => 'é¸æ“‡é‡è¦†æª”案',
+'fileduplicatesearch-summary' => '用é‡è¦†æª”案的切細值去找出檔案是å¦é‡è¦†ã€‚',
+'fileduplicatesearch-legend' => '找é‡è¦†',
+'fileduplicatesearch-filename' => '檔案å稱:',
+'fileduplicatesearch-submit' => '找',
+'fileduplicatesearch-info' => '$1 × $2 åƒç´ <br />檔案大å°ï¼š$3<br />MIME 類型:$4',
+'fileduplicatesearch-result-1' => '檔案 "$1" 無完全相åŒçš„é‡è¦†ã€‚',
+'fileduplicatesearch-result-n' => '檔案 "$1" 有$2項完全相åŒçš„é‡è¦†ã€‚',
+'fileduplicatesearch-noresults' => '沒有發ç¾å為"$1"的文件。',
# Special:SpecialPages
'specialpages' => '特殊é é¢',
'specialpages-note' => '----
* 標準特殊é é¢ã€‚
-* <strong class="mw-specialpagerestricted">有é™åˆ¶çš„特殊é é¢ã€‚</strong>',
+* <strong class="mw-specialpagerestricted">有é™åˆ¶çš„特殊é é¢ã€‚</strong>
+* <span class="mw-specialpagecached">用於é‡æ–°æ•´ç†çš„特殊é é¢ï¼ˆå¯èƒ½éŽæ™‚)。</span>',
'specialpages-group-maintenance' => '維護報告',
'specialpages-group-other' => '其它特殊é é¢',
'specialpages-group-login' => '登入ï¼å‰µå»º',
diff --git a/languages/messages/MessagesZh_hk.php b/languages/messages/MessagesZh_hk.php
index ba947db1..83a41f20 100644
--- a/languages/messages/MessagesZh_hk.php
+++ b/languages/messages/MessagesZh_hk.php
@@ -23,8 +23,9 @@ $fallback = 'zh-hant';
$fallback8bitEncoding = 'Big5-HKSCS';
$specialPageAliases = array(
- 'Unblock' => array( '解除å°ç¦' ),
'ComparePages' => array( 'é é¢æ¯”較' ),
+ 'RevisionMove' => array( '移動版本' ),
+ 'Unblock' => array( '解除å°ç¦' ),
);
$messages = array(
@@ -45,13 +46,6 @@ $messages = array(
'november' => 'å一月',
'december' => 'å二月',
-'mainpagedocfooter' => 'è«‹åƒé–±[http://meta.wikimedia.org/wiki/Help:Contents 用戶手冊]以ç²å¾—使用此 wiki 軟件的訊æ¯ï¼
-
-== 入門 ==
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置設定清單]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常見å•é¡Œè§£ç­”]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件清單]',
-
'mytalk' => '我的討論é ',
'tagline' => '從 {{SITENAME}}',
diff --git a/languages/messages/MessagesZh_tw.php b/languages/messages/MessagesZh_tw.php
index 2cf29a8d..9167a25c 100644
--- a/languages/messages/MessagesZh_tw.php
+++ b/languages/messages/MessagesZh_tw.php
@@ -24,24 +24,24 @@
*/
$specialPageAliases = array(
- 'Disambiguations' => array( '消歧義é ' ),
- 'Recentchanges' => array( '近期變動' ),
'Ancientpages' => array( '最舊é é¢' ),
- 'Unblock' => array( '解除å°éŽ–' ),
+ 'Block' => array( '查å°ç”¨æˆ¶' ),
'Blockme' => array( 'å°ç¦æˆ‘' ),
- 'Blockip' => array( '查å°ç”¨æˆ¶' ),
- 'Lockdb' => array( '鎖定數據庫' ),
- 'Unlockdb' => array( '解除數據庫鎖定' ),
- 'Userrights' => array( '用戶權é™' ),
- 'MIMEsearch' => array( 'MIMEæœç´¢' ),
+ 'Disambiguations' => array( '消歧義é ' ),
'FileDuplicateSearch' => array( 'æœç´¢é‡å¾©æ–‡ä»¶' ),
- 'Unwatchedpages' => array( '未被監視的é é¢' ),
+ 'Invalidateemail' => array( '無法識別的電郵地å€' ),
+ 'LinkSearch' => array( 'æœç´¢ç¶²é éˆæŽ¥' ),
'Listredirects' => array( 'é‡å®šå‘é é¢åˆ—表' ),
- 'Revisiondelete' => array( '刪除或æ¢å¾©ç‰ˆæœ¬' ),
+ 'Lockdb' => array( '鎖定數據庫' ),
+ 'MIMEsearch' => array( 'MIMEæœç´¢' ),
'Randomredirect' => array( '隨機é‡å®šå‘é é¢' ),
+ 'Recentchanges' => array( '近期變動' ),
+ 'Revisiondelete' => array( '刪除或æ¢å¾©ç‰ˆæœ¬' ),
+ 'Unblock' => array( '解除å°éŽ–' ),
+ 'Unlockdb' => array( '解除數據庫鎖定' ),
+ 'Unwatchedpages' => array( '未被監視的é é¢' ),
+ 'Userrights' => array( '用戶權é™' ),
'Withoutinterwiki' => array( '沒有跨語言éˆæŽ¥çš„é é¢' ),
- 'Invalidateemail' => array( '無法識別的電郵地å€' ),
- 'LinkSearch' => array( 'æœç´¢ç¶²é éˆæŽ¥' ),
);
$fallback = 'zh-hant';
@@ -170,14 +170,6 @@ $messages = array(
# Categories related messages
'subcategories' => 'å­åˆ†é¡ž',
-'mainpagedocfooter' => 'è«‹åƒé–± [http://meta.wikimedia.org/wiki/Help:Contents 使用者手冊] 以ç²å¾—使用此 wiki 軟體的訊æ¯ï¼
-
-== 入門 ==
-
-* [http://www.mediawiki.org/wiki/Manual:Configuration_settings MediaWiki é…置設定清單]
-* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki 常見å•é¡Œè§£ç­”]
-* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki 發佈郵件清單]',
-
# Cologne Blue skin
'qbfind' => '尋找',
@@ -238,16 +230,15 @@ $messages = array(
這也å¯èƒ½æ˜¯{{SITENAME}}所使用的軟件出ç¾äº†éŒ¯èª¤ã€‚',
# General errors
-'readonlytext' => '資料庫目å‰ç¦æ­¢è¼¸å…¥æ–°å…§å®¹åŠæ›´æ”¹ï¼Œ
+'readonlytext' => '資料庫目å‰ç¦æ­¢è¼¸å…¥æ–°å…§å®¹åŠæ›´æ”¹ï¼Œ
這很å¯èƒ½æ˜¯ç”±æ–¼è³‡æ–™åº«æ­£åœ¨ç¶­ä¿®ï¼Œä¹‹å¾Œå³å¯å¾©åŽŸã€‚
管ç†å“¡æœ‰å¦‚下解釋:
<p>$1</p>',
-'cannotdelete' => '無法刪除é¸å®šçš„é é¢æˆ–圖片(它å¯èƒ½å·²ç¶“被其他人刪除了)。',
-'actionthrottledtext' => '系統因為å垃圾編輯的考é‡ï¼Œç¦æ­¢å¦‚此頻ç¹åœ°ä¿®æ”¹è³‡æ–™ï¼Œè«‹æ•¸åˆ†é˜å¾Œå†å˜—試。',
-'viewsourcetext' => 'ä½ å¯ä»¥æª¢è¦–並複製本é é¢çš„原始碼。',
-'editinginterface' => "'''警告:''' 您正在編輯的é é¢æ˜¯æ­£ç”¨åœ¨è»Ÿé«”上的介é¢æ–‡å­—。改變此é å°‡å½±éŸ¿å…¶ä»–用戶的介é¢å¤–觀。如è¦ç¿»è­¯ï¼Œè«‹è€ƒæ…®ä½¿ç”¨ [http://translatewiki.net/wiki/Main_Page?setlang=zh-hant translatewiki.net],一個用來為MediaWiki軟體本地化的計畫。",
-'customcssjsprotected' => '您並無許å¯æ¬ŠåŽ»ç·¨è¼¯é€™å€‹é é¢ï¼Œå› ç‚ºå®ƒåŒ…å«äº†å¦ä¸€ä½ä½¿ç”¨è€…的個人設定。',
-'ns-specialprotected' => '在{{ns:special}}å字空間中的é é¢æ˜¯ä¸å¯ä»¥ç·¨è¼¯çš„。',
+'cannotdelete' => '無法刪除é¸å®šçš„é é¢æˆ–圖片(它å¯èƒ½å·²ç¶“被其他人刪除了)。',
+'actionthrottledtext' => '系統因為å垃圾編輯的考é‡ï¼Œç¦æ­¢å¦‚此頻ç¹åœ°ä¿®æ”¹è³‡æ–™ï¼Œè«‹æ•¸åˆ†é˜å¾Œå†å˜—試。',
+'viewsourcetext' => 'ä½ å¯ä»¥æª¢è¦–並複製本é é¢çš„原始碼。',
+'editinginterface' => "'''警告:''' 您正在編輯的é é¢æ˜¯æ­£ç”¨åœ¨è»Ÿé«”上的介é¢æ–‡å­—。改變此é å°‡å½±éŸ¿å…¶ä»–用戶的介é¢å¤–觀。如è¦ç¿»è­¯ï¼Œè«‹è€ƒæ…®ä½¿ç”¨ [//translatewiki.net/wiki/Main_Page?setlang=zh-hant translatewiki.net],一個用來為MediaWiki軟體本地化的計畫。",
+'ns-specialprotected' => '在{{ns:special}}å字空間中的é é¢æ˜¯ä¸å¯ä»¥ç·¨è¼¯çš„。',
# Login and logout pages
'logouttext' => '您ç¾åœ¨å·²ç¶“登出。
@@ -276,7 +267,7 @@ $messages = array(
'loginsuccess' => 'ä½ ç¾åœ¨ä»¥ "$1"的身份登入{{SITENAME}}。',
'nosuchuser' => '找ä¸åˆ°ä½¿ç”¨è€… "$1"。
檢查您的拼寫,或者用下é¢çš„表格[[Special:UserLogin/signup|建立一個新帳號]]。',
-'nosuchusershort' => '沒有一個å為「<nowiki>$1</nowiki>ã€çš„使用者。請檢查您輸入的文字是å¦æœ‰éŒ¯èª¤ã€‚',
+'nosuchusershort' => '沒有一個å為「$1ã€çš„使用者。請檢查您輸入的文字是å¦æœ‰éŒ¯èª¤ã€‚',
'nouserspecified' => '你需è¦æŒ‡å®šä¸€å€‹ä½¿ç”¨è€…帳號。',
'passwordtooshort' => '您的密碼ä¸æ­£ç¢ºæˆ–太短,ä¸èƒ½å°‘æ–¼$1個字元,而且必須跟使用者åä¸åŒã€‚',
'passwordremindertitle' => '{{SITENAME}}密碼æ醒',
@@ -305,7 +296,7 @@ $messages = array(
如果該帳號建立錯誤的話,您å¯ä»¥å¿½ç•¥æ­¤è¨Šæ¯ã€‚',
-# Password reset dialog
+# Change password dialog
'resetpass' => 'æ›´æ›å¯†ç¢¼',
'resetpass_announce' => '您是é€éŽè‡¨æ™‚發é€åˆ°éƒµä»¶ä¸­çš„代碼登入的。è¦å®Œæˆç™»å…¥ï¼Œæ‚¨å¿…須在這裡設定一個新密碼:',
'resetpass_header' => 'æ›´æ›å¸³è™Ÿå¯†ç¢¼',
@@ -334,7 +325,7 @@ $messages = array(
'noarticletext' => 'æ­¤é ç›®å‰æ²’有內容,您å¯ä»¥åœ¨å…¶å®ƒé [[Special:Search/{{PAGENAME}}|æœç´¢æ­¤é æ¨™é¡Œ]],
<span class="plainlinks">[{{fullurl:{{#Special:Log}}|page={{FULLPAGENAMEE}}}} æœç´¢æœ‰é—œæ—¥èªŒ],
或[{{fullurl:{{FULLPAGENAME}}|action=edit}} 編輯此é ]</span>。',
-'userpage-userdoesnotexist' => '使用者帳號「$1ã€æœªæ›¾å»ºç«‹ã€‚請在建立ï¼ç·¨è¼¯é€™å€‹é é¢å‰å…ˆæª¢æŸ¥ä¸€ä¸‹ã€‚',
+'userpage-userdoesnotexist' => '使用者帳號「<nowiki>$1</nowiki>ã€æœªæ›¾å»ºç«‹ã€‚請在建立ï¼ç·¨è¼¯é€™å€‹é é¢å‰å…ˆæª¢æŸ¥ä¸€ä¸‹ã€‚',
'clearyourcache' => "'''注æ„:''' 在儲存以後, 您必須清除ç€è¦½å™¨çš„å¿«å–æ‰èƒ½çœ‹åˆ°æ‰€ä½œå‡ºçš„改變。 '''Mozilla / Firefox / Safari:''' 按著 ''Shift'' å†é»žæ“Š''é‡æ–°æ•´ç†''(或按下''Ctrl-Shift-R'',在蘋果Mac上按下''Cmd-Shift-R'')ï¼›'''IE:''' 按著 ''Ctrl'' å†é»žæ“Š ''é‡æ–°æ•´ç†'',或按下 ''Ctrl-F5''ï¼›'''Konqueror:''' åªéœ€é»žæ“Š ''é‡æ–°æ•´ç†''ï¼›'''Opera:''' 使用者需è¦åœ¨ ''工具-設定'' 中完整地清除它們的快å–。",
'usercsspreview' => "'''注æ„您åªæ˜¯åœ¨é è¦½æ‚¨çš„個人 CSS, 還沒有儲存﹗'''",
'userjspreview' => "'''注æ„您åªæ˜¯åœ¨æ¸¬è©¦ï¼é è¦½æ‚¨çš„個人 JavaScript,還沒有儲存﹗'''",
@@ -645,15 +636,15 @@ $NEWPAGE
--
è¦æ”¹è®Šæ‚¨çš„監視列表設定,請åƒé–±
-{{fullurl:{{#special:Watchlist}}/edit}}
+{{canonicalurl:{{#special:EditWatchlist}}}}
回饋和進一步的說明:
-{{fullurl:{{MediaWiki:Helppage}}}}',
+{{canonicalurl:{{MediaWiki:Helppage}}}}',
# Delete
'confirmdeletetext' => '您å³å°‡å¾žè³‡æ–™åº«ä¸­æ°¸é åˆªé™¤ä¸€å€‹é é¢æˆ–圖片以åŠå…¶æ­·å²ã€‚
請確定您è¦é€²è¡Œæ­¤é …æ“作,並且了解其後果,åŒæ™‚您的行為符åˆ[[{{MediaWiki:Policy-url}}]]。',
-'deletedtext' => '「<nowiki>$1</nowiki>ã€å·²ç¶“被刪除。
+'deletedtext' => '「$1ã€å·²ç¶“被刪除。
最近刪除的紀錄請åƒè¦‹$2。',
'deletedarticle' => '已刪除「[[$1]]ã€',
'dellogpagetext' => '以下是最近刪除的紀錄列表。
@@ -733,7 +724,6 @@ $NEWPAGE
** 無禮的行為ã€æ”»æ“Šï¼é¨·æ“¾åˆ¥äºº
** 濫用多個帳號
** ä¸èƒ½æŽ¥å—的使用者å',
-'ipbanononly' => '僅阻止匿å使用者',
'ipbcreateaccount' => '阻止建立新帳號',
'ipbemailban' => '阻止使用者傳é€E-mail',
'ipbenableautoblock' => '自動å°éŽ–此使用者最後所用的IPä½å€ï¼Œä»¥åŠå¾Œä¾†è©¦åœ–編輯所用的所有ä½å€',
@@ -752,7 +742,6 @@ $NEWPAGE
'unblocked' => '[[User:$1|$1]] çš„å°éŽ–已經解除。',
'unblocked-id' => 'å°éŽ– $1 已經被移除',
'ipblocklist-legend' => 'æœå°‹ä¸€ä½å·²ç¶“被å°éŽ–的使用者',
-'ipblocklist-username' => '使用者å稱或IP地å€:',
'anononlyblock' => '僅é™åŒ¿å使用者',
'noautoblockblock' => 'ç¦ç”¨è‡ªå‹•å°éŽ–',
'createaccountblock' => 'ç¦æ­¢å»ºç«‹å¸³è™Ÿ',
@@ -760,7 +749,7 @@ $NEWPAGE
'ipblocklist-no-results' => '所è¦æ±‚çš„IP地å€/使用者å沒有被å°éŽ–。',
'blocklink' => 'ç¦å°',
'blocklogentry' => '[[$1]]已被å°éŽ– $3 ,終止時間為$2',
-'blocklogtext' => '這是關於使用者å°éŽ–和解除å°éŽ–æ“作的記錄。被自動å°éŽ–çš„IP地å€æ²’有被列出。請åƒé–±[[Special:IPBlockList|被å°éŽ–çš„IP地å€å’Œä½¿ç”¨è€…列表]]。',
+'blocklogtext' => '這是關於使用者å°éŽ–和解除å°éŽ–æ“作的記錄。被自動å°éŽ–çš„IP地å€æ²’有被列出。請åƒé–±[[Special:BlockList|被å°éŽ–çš„IP地å€å’Œä½¿ç”¨è€…列表]]。',
'block-log-flags-anononly' => '僅é™åŒ¿å使用者',
'block-log-flags-nocreate' => 'ç¦æ­¢æ­¤IP/使用者建立新帳號',
'block-log-flags-noautoblock' => 'åœç”¨è‡ªå‹•å°éŽ–',
@@ -864,11 +853,6 @@ $NEWPAGE
'spamprotectiontext' => '垃圾éŽæ¿¾å™¨ç¦æ­¢ä¿å­˜æ‚¨å‰›æ‰æ交的é é¢ï¼Œé€™å¯èƒ½æ˜¯ç”±æ–¼æ‚¨æ‰€åŠ å…¥çš„外部網站連çµæ‰€ç”¢ç”Ÿçš„å•é¡Œã€‚',
'spam_reverting' => '復原到ä¸åŒ…å«é€£çµè‡³$1的最近版本',
-# Math options
-'mw_math_png' => 'æ°¸é ä½¿ç”¨PNG圖片',
-'mw_math_simple' => '如果是簡單的公å¼ä½¿ç”¨HTML,å¦å‰‡ä½¿ç”¨PNG圖片',
-'mw_math_html' => '如果å¯ä»¥ç”¨HTML,å¦å‰‡ç”¨PNG圖片',
-
# Patrolling
'markedaspatrolledtext' => 'é¸å®šçš„版本已被標記為已檢查.',
@@ -881,10 +865,9 @@ $NEWPAGE
'nextdiff' => '下一個→',
# Media information
-'imagemaxsize' => '在圖片æè¿°é å°åœ–片大å°é™åˆ¶ç‚º:',
-'file-nohires' => '<small>無更高解æžåº¦å¯æ供。</small>',
-'show-big-image' => '完整解æžåº¦',
-'show-big-image-thumb' => '<small>這幅縮圖的解æžåº¦: $1 × $2 åƒç´ </small>',
+'imagemaxsize' => '在圖片æè¿°é å°åœ–片大å°é™åˆ¶ç‚º:',
+'file-nohires' => '<small>無更高解æžåº¦å¯æ供。</small>',
+'show-big-image' => '完整解æžåº¦',
# Special:NewFiles
'newimages' => '新建圖片畫廊',
@@ -917,7 +900,6 @@ Variants for Chinese language
'exif-samplesperpixel' => 'åƒç´ æ•¸',
'exif-xresolution' => '水準解æžåº¦',
'exif-yresolution' => '垂直解æžåº¦',
-'exif-resolutionunit' => 'X 軸與 Y 軸解æžåº¦å–®ä½',
'exif-stripoffsets' => '圖片數據å€',
'exif-imagedescription' => '圖片標題',
'exif-compressedbitsperpixel' => '圖片壓縮模å¼',
@@ -939,7 +921,7 @@ Variants for Chinese language
'exif-lightsource-15' => '白色螢光 (WW 3200 3700K)',
# External editor support
-'edit-externally-help' => 'è«‹åƒè¦‹[http://www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊。',
+'edit-externally-help' => 'è«‹åƒè¦‹[//www.mediawiki.org/wiki/Manual:External_editors 設定步驟]了解詳細資訊。',
# E-mail address confirmation
'confirmemail' => '確èªé›»å­éƒµä»¶åœ°å€',
diff --git a/languages/messages/MessagesZu.php b/languages/messages/MessagesZu.php
index 537786a3..d10bbbd4 100644
--- a/languages/messages/MessagesZu.php
+++ b/languages/messages/MessagesZu.php
@@ -138,17 +138,16 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
'gotaccountlink' => 'Ngena',
'loginsuccesstitle' => 'Ubengena',
'nosuchuser' => 'Akukho umsebenzisi unegama "$1". Hlola umbhalo wakho, noma dala ikhawundi elisha.',
-'nosuchusershort' => 'Akukho umsebenzisi unegama "<nowiki>$1</nowiki>". Hlola umbhalo wakho.',
+'nosuchusershort' => 'Akukho umsebenzisi unegama "$1". Hlola umbhalo wakho.',
'emailconfirmlink' => 'Qinisekisa ikheli likagesi lakho',
'loginlanguagelabel' => 'Ulimi: $1',
-# Password reset dialog
+# Change password dialog
'newpassword' => 'Izwi elingenangozi elisha:',
# Edit page toolbar
'italic_sample' => 'Amazwi ama-italiki',
'italic_tip' => 'Amazwi ama-italiki',
-'math_sample' => 'Faka izibalo lapha',
'hr_tip' => 'Umugqa uhleliwe (use sparingly)',
# Edit pages
@@ -188,7 +187,6 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
'mypreferences' => 'Amakhethelo ami',
'prefsnologin' => 'Awungenile',
'changepassword' => 'Guqula izwi elingenangozi',
-'prefs-math' => 'Izibalo',
'saveprefs' => 'Saveprefs',
'searchresultshead' => 'Sesha',
'timezonelegend' => 'Isifunda sasikhathi',
@@ -364,9 +362,6 @@ ikhawundi lakho liyadalwa. musa ukukhohlwa ukuguqula amakhethelo a-{{SITENAME}}
'exif-sharpness-1' => 'Kuntofontofo',
'exif-sharpness-2' => 'Kulukhuni',
-# 'all' in various places, this might be different for inflected languages
-'recentchangesall' => 'Konke',
-
# E-mail address confirmation
'confirmemail' => 'Qinisekisa ikheli likagesi',
'confirmemail_loggedin' => 'Ikheli likagesi lakho liqinisekiswa.',
diff --git a/load.php b/load.php
index d360bd2b..6e829713 100644
--- a/load.php
+++ b/load.php
@@ -23,7 +23,18 @@
*
*/
-require ( dirname( __FILE__ ) . '/includes/WebStart.php' );
+// Bail if PHP is too low
+if ( !function_exists( 'version_compare' ) || version_compare( phpversion(), '5.2.3' ) < 0 ) {
+ require( dirname( __FILE__ ) . '/includes/PHPVersionError.php' );
+ wfPHPVersionError( 'load.php' );
+}
+
+if ( isset( $_SERVER['MW_COMPILED'] ) ) {
+ require ( 'phase3/includes/WebStart.php' );
+} else {
+ require ( dirname( __FILE__ ) . '/includes/WebStart.php' );
+}
+
wfProfileIn( 'load.php' );
// URL safety checks
@@ -38,5 +49,7 @@ $resourceLoader->respond( new ResourceLoaderContext( $resourceLoader, $wgRequest
wfProfileOut( 'load.php' );
wfLogProfilingData();
-// Shut down the database
-wfGetLBFactory()->shutdown();
+// Shut down the database. foo()->bar() syntax is not supported in PHP4, and this file
+// needs to *parse* in PHP4, although we'll never get down here to worry about = vs =&
+$lb = wfGetLBFactory();
+$lb->shutdown();
diff --git a/maintenance/7zip.inc b/maintenance/7zip.inc
index 4ac480ed..6bb06668 100644
--- a/maintenance/7zip.inc
+++ b/maintenance/7zip.inc
@@ -2,6 +2,24 @@
/**
* 7z stream wrapper
*
+ * Copyright © 2005 Brion Vibber <brion@pobox.com>
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup Maintenance
*/
diff --git a/maintenance/Doxyfile b/maintenance/Doxyfile
index 3d037651..7d7849c8 100644
--- a/maintenance/Doxyfile
+++ b/maintenance/Doxyfile
@@ -113,7 +113,7 @@ FILE_PATTERNS = *.c \
*.odl \
*.cs \
*.php \
- *.php3 \
+ *.php5 \
*.inc \
*.m \
*.mm \
@@ -129,14 +129,14 @@ FILE_PATTERNS = *.c \
*.H++ \
*.CS \
*.PHP \
- *.PHP3 \
+ *.PHP5 \
*.M \
*.MM \
*.PY
RECURSIVE = YES
-EXCLUDE =
+EXCLUDE = {{EXCLUDE}}
EXCLUDE_SYMLINKS = YES
-EXCLUDE_PATTERNS = LocalSettings.php AdminSettings.php StartProfiler.php .svn */.git/* {{EXCLUDE}}
+EXCLUDE_PATTERNS = LocalSettings.php AdminSettings.php StartProfiler.php .svn */.git/* {{EXCLUDE_PATTERNS}}
EXAMPLE_PATH =
EXAMPLE_PATTERNS = *
EXAMPLE_RECURSIVE = NO
@@ -255,7 +255,7 @@ PERL_PATH = /usr/bin/perl
#---------------------------------------------------------------------------
CLASS_DIAGRAMS = NO
HIDE_UNDOC_RELATIONS = YES
-HAVE_DOT = NO
+HAVE_DOT = {{HAVE_DOT}}
CLASS_GRAPH = YES
COLLABORATION_GRAPH = YES
GROUP_GRAPHS = YES
@@ -264,6 +264,7 @@ TEMPLATE_RELATIONS = NO
INCLUDE_GRAPH = YES
INCLUDED_BY_GRAPH = YES
CALL_GRAPH = YES
+CALLER_GRAPH = YES
GRAPHICAL_HIERARCHY = YES
DIRECTORY_GRAPH = YES
DOT_IMAGE_FORMAT = png
diff --git a/maintenance/Maintenance.php b/maintenance/Maintenance.php
index 24bb7809..9ea57f4e 100644
--- a/maintenance/Maintenance.php
+++ b/maintenance/Maintenance.php
@@ -1,5 +1,20 @@
<?php
/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup Maintenance
* @defgroup Maintenance Maintenance
@@ -12,12 +27,9 @@ define( 'DO_MAINTENANCE', RUN_MAINTENANCE_IF_MAIN ); // original name, harmless
$maintClass = false;
// Make sure we're on PHP5 or better
-if ( version_compare( PHP_VERSION, '5.2.3' ) < 0 ) {
- die ( "Sorry! This version of MediaWiki requires PHP 5.2.3; you are running " .
- PHP_VERSION . ".\n\n" .
- "If you are sure you already have PHP 5.2.3 or higher installed, it may be\n" .
- "installed in a different path from PHP " . PHP_VERSION . ". Check with your system\n" .
- "administrator.\n" );
+if ( !function_exists( 'version_compare' ) || version_compare( PHP_VERSION, '5.2.3' ) < 0 ) {
+ require_once( dirname( __FILE__ ) . '/../includes/PHPVersionError.php' );
+ wfPHPVersionError( 'cli' );
}
// Wrapper for posix_isatty()
@@ -35,21 +47,6 @@ if ( !function_exists( 'posix_isatty' ) ) {
* is the execute() method. See docs/maintenance.txt for more info
* and a quick demo of how to use it.
*
- * 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
- *
* @author Chad Horohoe <chad@anyonecanedit.org>
* @since 1.16
* @ingroup Maintenance
@@ -70,6 +67,9 @@ abstract class Maintenance {
// This is the desired params
protected $mParams = array();
+ // Array of mapping short parameters to long ones
+ protected $mShortParamsMap = array();
+
// Array of desired args
protected $mArgList = array();
@@ -92,10 +92,22 @@ abstract class Maintenance {
// Have we already loaded our user input?
protected $mInputLoaded = false;
- // Batch size. If a script supports this, they should set
- // a default with setBatchSize()
+ /**
+ * Batch size. If a script supports this, they should set
+ * a default with setBatchSize()
+ *
+ * @var int
+ */
protected $mBatchSize = null;
+ // Generic options added by addDefaultParams()
+ private $mGenericParameters = array();
+ // Generic options which might or not be supported by the script
+ private $mDependantParameters = array();
+
+ // Used by getDD() / setDB()
+ private $mDb = null;
+
/**
* List of all the core maintenance scripts. This is added
* to scripts added by extensions in $wgMaintenanceScripts
@@ -121,18 +133,25 @@ abstract class Maintenance {
/**
* Should we execute the maintenance script, or just allow it to be included
* as a standalone class? It checks that the call stack only includes this
- * function and a require (meaning was called from the file scope)
+ * function and "requires" (meaning was called from the file scope)
*
* @return Boolean
*/
public static function shouldExecute() {
$bt = debug_backtrace();
- if( count( $bt ) !== 2 ) {
- return false;
+ if ( count( $bt ) < 2 ) {
+ return false; // sanity
+ }
+ if ( $bt[0]['class'] !== 'Maintenance' || $bt[0]['function'] !== 'shouldExecute' ) {
+ return false; // last call should be to this function
+ }
+ $includeFuncs = array( 'require_once', 'require', 'include' );
+ for( $i=1; $i < count( $bt ); $i++ ) {
+ if ( !in_array( $bt[$i]['function'], $includeFuncs ) ) {
+ return false; // previous calls should all be "requires"
+ }
}
- return $bt[1]['function'] == 'require_once' &&
- $bt[0]['class'] == 'Maintenance' &&
- $bt[0]['function'] == 'shouldExecute';
+ return true;
}
/**
@@ -148,9 +167,13 @@ abstract class Maintenance {
* @param $description String: the description of the param to show on --help
* @param $required Boolean: is the param required?
* @param $withArg Boolean: is an argument required with this option?
+ * @param $shortName String: character to use as short name
*/
- protected function addOption( $name, $description, $required = false, $withArg = false ) {
- $this->mParams[$name] = array( 'desc' => $description, 'require' => $required, 'withArg' => $withArg );
+ protected function addOption( $name, $description, $required = false, $withArg = false, $shortName = false ) {
+ $this->mParams[$name] = array( 'desc' => $description, 'require' => $required, 'withArg' => $withArg, 'shortName' => $shortName );
+ if ( $shortName !== false ) {
+ $this->mShortParamsMap[$shortName] = $name;
+ }
}
/**
@@ -280,10 +303,11 @@ abstract class Maintenance {
}
if ( $channel === null ) {
$this->cleanupChanneled();
-
- $f = fopen( 'php://stdout', 'w' );
- fwrite( $f, $out );
- fclose( $f );
+ if( php_sapi_name() == 'cli' ) {
+ fwrite( STDOUT, $out );
+ } else {
+ print( $out );
+ }
}
else {
$out = preg_replace( '/\n\z/', '', $out );
@@ -295,19 +319,18 @@ abstract class Maintenance {
* Throw an error to the user. Doesn't respect --quiet, so don't use
* this for non-error output
* @param $err String: the error to display
- * @param $die Boolean: If true, go ahead and die out.
+ * @param $die Int: if > 0, go ahead and die out using this int as the code
*/
- protected function error( $err, $die = false ) {
+ protected function error( $err, $die = 0 ) {
$this->outputChanneled( false );
if ( php_sapi_name() == 'cli' ) {
fwrite( STDERR, $err . "\n" );
} else {
- $f = fopen( 'php://stderr', 'w' );
- fwrite( $f, $err . "\n" );
- fclose( $f );
+ print $err;
}
- if ( $die ) {
- die();
+ $die = intval( $die );
+ if ( $die > 0 ) {
+ die( $die );
}
}
@@ -319,9 +342,11 @@ abstract class Maintenance {
*/
public function cleanupChanneled() {
if ( !$this->atLineStart ) {
- $handle = fopen( 'php://stdout', 'w' );
- fwrite( $handle, "\n" );
- fclose( $handle );
+ if( php_sapi_name() == 'cli' ) {
+ fwrite( STDOUT, "\n" );
+ } else {
+ print "\n";
+ }
$this->atLineStart = true;
}
}
@@ -340,25 +365,34 @@ abstract class Maintenance {
return;
}
- $handle = fopen( 'php://stdout', 'w' );
+ $cli = php_sapi_name() == 'cli';
// End the current line if necessary
if ( !$this->atLineStart && $channel !== $this->lastChannel ) {
- fwrite( $handle, "\n" );
+ if( $cli ) {
+ fwrite( STDOUT, "\n" );
+ } else {
+ print "\n";
+ }
}
- fwrite( $handle, $msg );
+ if( $cli ) {
+ fwrite( STDOUT, $msg );
+ } else {
+ print $msg;
+ }
$this->atLineStart = false;
if ( $channel === null ) {
// For unchanneled messages, output trailing newline immediately
- fwrite( $handle, "\n" );
+ if( $cli ) {
+ fwrite( STDOUT, "\n" );
+ } else {
+ print "\n";
+ }
$this->atLineStart = true;
}
$this->lastChannel = $channel;
-
- // Cleanup handle
- fclose( $handle );
}
/**
@@ -379,8 +413,11 @@ abstract class Maintenance {
* Add the default parameters to the scripts
*/
protected function addDefaultParams() {
- $this->addOption( 'help', 'Display this help message' );
- $this->addOption( 'quiet', 'Whether to supress non-error output' );
+
+ # Generic (non script dependant) options:
+
+ $this->addOption( 'help', 'Display this help message', false, false, 'h' );
+ $this->addOption( 'quiet', 'Whether to supress non-error output', false, false, 'q' );
$this->addOption( 'conf', 'Location of LocalSettings.php, if not default', false, true );
$this->addOption( 'wiki', 'For specifying the wiki ID', false, true );
$this->addOption( 'globals', 'Output globals at the end of processing for debugging' );
@@ -388,6 +425,12 @@ abstract class Maintenance {
$this->addOption( 'server', "The protocol and server name to use in URLs, e.g. " .
"http://en.wikipedia.org. This is sometimes necessary because " .
"server name detection may fail in command line scripts.", false, true );
+
+ # Save generic options to display them separately in help
+ $this->mGenericParameters = $this->mParams ;
+
+ # Script dependant options:
+
// If we support a DB, show the options
if ( $this->getDbType() > 0 ) {
$this->addOption( 'dbuser', 'The DB user to use for this script', false, true );
@@ -398,6 +441,9 @@ abstract class Maintenance {
$this->addOption( 'batch-size', 'Run this many operations ' .
'per batch, default: ' . $this->mBatchSize, false, true );
}
+ # Save additional script dependant options to display
+ # them separately in help
+ $this->mDependantParameters = array_diff_key( $this->mParams, $this->mGenericParameters );
}
/**
@@ -409,17 +455,20 @@ abstract class Maintenance {
*/
public function runChild( $maintClass, $classFile = null ) {
// Make sure the class is loaded first
- if ( !class_exists( $maintClass ) ) {
+ if ( !MWInit::classExists( $maintClass ) ) {
if ( $classFile ) {
require_once( $classFile );
}
- if ( !class_exists( $maintClass ) ) {
+ if ( !MWInit::classExists( $maintClass ) ) {
$this->error( "Cannot spawn child: $maintClass" );
}
}
$child = new $maintClass();
$child->loadParamsAndArgs( $this->mSelf, $this->mOptions, $this->mArgs );
+ if ( !is_null( $this->mDb ) ) {
+ $child->setDB( $this->mDb );
+ }
return $child;
}
@@ -435,7 +484,7 @@ abstract class Maintenance {
}
# Make sure we can handle script parameters
- if ( !ini_get( 'register_argc_argv' ) ) {
+ if ( !function_exists( 'hphp_thread_set_warmup_enabled' ) && !ini_get( 'register_argc_argv' ) ) {
$this->error( 'Cannot get command line arguments, register_argc_argv is set to false', true );
}
@@ -590,6 +639,9 @@ abstract class Maintenance {
# Short options
for ( $p = 1; $p < strlen( $arg ); $p++ ) {
$option = $arg { $p } ;
+ if ( !isset( $this->mParams[$option] ) && isset( $this->mShortParamsMap[$option] ) ) {
+ $option = $this->mShortParamsMap[$option];
+ }
if ( array_key_exists( $option, $options ) ) {
$this->error( "\nERROR: $option parameter given twice\n" );
$this->maybeHelp( true );
@@ -655,7 +707,7 @@ abstract class Maintenance {
$this->mQuiet = true;
}
if ( $this->hasOption( 'batch-size' ) ) {
- $this->mBatchSize = $this->getOption( 'batch-size' );
+ $this->mBatchSize = intval( $this->getOption( 'batch-size' ) );
}
}
@@ -701,22 +753,75 @@ abstract class Maintenance {
}
$this->output( "$output\n\n" );
- // Parameters description
- foreach ( $this->mParams as $par => $info ) {
+ # TODO abstract some repetitive code below
+
+ // Generic parameters
+ $this->output( "Generic maintenance parameters:\n" );
+ foreach ( $this->mGenericParameters as $par => $info ) {
+ if ( $info['shortName'] !== false ) {
+ $par .= " (-{$info['shortName']})";
+ }
$this->output(
wordwrap( "$tab--$par: " . $info['desc'], $descWidth,
"\n$tab$tab" ) . "\n"
);
}
+ $this->output( "\n" );
- // Arguments description
- foreach ( $this->mArgList as $info ) {
- $openChar = $info['require'] ? '<' : '[';
- $closeChar = $info['require'] ? '>' : ']';
- $this->output(
- wordwrap( "$tab$openChar" . $info['name'] . "$closeChar: " .
- $info['desc'], $descWidth, "\n$tab$tab" ) . "\n"
- );
+ $scriptDependantParams = $this->mDependantParameters;
+ if( count($scriptDependantParams) > 0 ) {
+ $this->output( "Script dependant parameters:\n" );
+ // Parameters description
+ foreach ( $scriptDependantParams as $par => $info ) {
+ if ( $info['shortName'] !== false ) {
+ $par .= " (-{$info['shortName']})";
+ }
+ $this->output(
+ wordwrap( "$tab--$par: " . $info['desc'], $descWidth,
+ "\n$tab$tab" ) . "\n"
+ );
+ }
+ $this->output( "\n" );
+ }
+
+
+ // Script specific parameters not defined on construction by
+ // Maintenance::addDefaultParams()
+ $scriptSpecificParams = array_diff_key(
+ # all script parameters:
+ $this->mParams,
+ # remove the Maintenance default parameters:
+ $this->mGenericParameters,
+ $this->mDependantParameters
+ );
+ if( count($scriptSpecificParams) > 0 ) {
+ $this->output( "Script specific parameters:\n" );
+ // Parameters description
+ foreach ( $scriptSpecificParams as $par => $info ) {
+ if ( $info['shortName'] !== false ) {
+ $par .= " (-{$info['shortName']})";
+ }
+ $this->output(
+ wordwrap( "$tab--$par: " . $info['desc'], $descWidth,
+ "\n$tab$tab" ) . "\n"
+ );
+ }
+ $this->output( "\n" );
+ }
+
+ // Print arguments
+ if( count( $this->mArgList ) > 0 ) {
+ $this->output( "Arguments:\n" );
+ // Arguments description
+ foreach ( $this->mArgList as $info ) {
+ $openChar = $info['require'] ? '<' : '[';
+ $closeChar = $info['require'] ? '>' : ']';
+ $this->output(
+ wordwrap( "$tab$openChar" . $info['name'] . "$closeChar: " .
+ $info['desc'], $descWidth, "\n$tab$tab" ) . "\n"
+ );
+ }
+ $this->output( "\n" );
}
die( 1 );
@@ -727,7 +832,7 @@ abstract class Maintenance {
*/
public function finalSetup() {
global $wgCommandLineMode, $wgShowSQLErrors, $wgServer;
- global $wgProfiling, $wgDBadminuser, $wgDBadminpassword;
+ global $wgDBadminuser, $wgDBadminpassword;
global $wgDBuser, $wgDBpassword, $wgDBservers, $wgLBFactoryConf;
# Turn off output buffering again, it might have been turned on in the settings files
@@ -772,8 +877,6 @@ abstract class Maintenance {
$wgShowSQLErrors = true;
@set_time_limit( 0 );
$this->adjustMemoryLimit();
-
- $wgProfiling = false; // only for Profiler.php mode; avoids OOM errors
}
/**
@@ -840,7 +943,9 @@ abstract class Maintenance {
ini_set( 'include_path', ".:$IP:$IP/includes:$IP/languages:$IP/maintenance" );
if ( $lang == 'test' && $site == 'wikipedia' ) {
- define( 'TESTWIKI', 1 );
+ if ( !defined( 'TESTWIKI' ) ) {
+ define( 'TESTWIKI', 1 );
+ }
}
}
@@ -849,12 +954,11 @@ abstract class Maintenance {
* @return String
*/
public function loadSettings() {
- global $wgWikiFarm, $wgCommandLineMode, $IP;
+ global $wgCommandLineMode, $IP;
- $wgWikiFarm = false;
if ( isset( $this->mOptions['conf'] ) ) {
$settingsFile = $this->mOptions['conf'];
- } else if ( defined("MW_CONFIG_FILE") ) {
+ } elseif ( defined("MW_CONFIG_FILE") ) {
$settingsFile = MW_CONFIG_FILE;
} else {
$settingsFile = "$IP/LocalSettings.php";
@@ -884,7 +988,7 @@ abstract class Maintenance {
*/
public function purgeRedundantText( $delete = true ) {
# Data should come off the master, wrapped in a transaction
- $dbw = wfGetDB( DB_MASTER );
+ $dbw = $this->getDB( DB_MASTER );
$dbw->begin();
$tbl_arc = $dbw->tableName( 'archive' );
@@ -988,6 +1092,30 @@ abstract class Maintenance {
}
/**
+ * Returns a database to be used by current maintenance script. It can be set by setDB().
+ * If not set, wfGetDB() will be used.
+ * This function has the same parameters as wfGetDB()
+ *
+ * @return DatabaseBase
+ */
+ protected function &getDB( $db, $groups = array(), $wiki = false ) {
+ if ( is_null( $this->mDb ) ) {
+ return wfGetDB( $db, $groups, $wiki );
+ } else {
+ return $this->mDb;
+ }
+ }
+
+ /**
+ * Sets database object to be returned by getDB().
+ *
+ * @param $db DatabaseBase: Database object to be used
+ */
+ public function setDB( &$db ) {
+ $this->mDb = $db;
+ }
+
+ /**
* Lock the search index
* @param &$db Database object
*/
@@ -1019,7 +1147,7 @@ abstract class Maintenance {
* Perform a search index update with locking
* @param $maxLockTime Integer: the maximum time to keep the search index locked.
* @param $callback callback String: the function that will update the function.
- * @param $dbw Database object
+ * @param $dbw DatabaseBase object
* @param $results
*/
public function updateSearchIndex( $maxLockTime, $callback, $dbw, $results ) {
@@ -1083,11 +1211,7 @@ abstract class Maintenance {
public static function readconsole( $prompt = '> ' ) {
static $isatty = null;
if ( is_null( $isatty ) ) {
- if ( posix_isatty( 0 /*STDIN*/ ) ) {
- $isatty = true;
- } else {
- $isatty = false;
- }
+ $isatty = posix_isatty( 0 /*STDIN*/ );
}
if ( $isatty && function_exists( 'readline' ) ) {
@@ -1150,3 +1274,70 @@ class FakeMaintenance extends Maintenance {
}
}
+/**
+ * Class for scripts that perform database maintenance and want to log the
+ * update in `updatelog` so we can later skip it
+ */
+abstract class LoggedUpdateMaintenance extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( 'force', 'Run the update even if it was completed already' );
+ $this->setBatchSize( 200 );
+ }
+
+ public function execute() {
+ $db = $this->getDB( DB_MASTER );
+ $key = $this->getUpdateKey();
+
+ if ( !$this->hasOption( 'force' ) &&
+ $db->selectRow( 'updatelog', '1', array( 'ul_key' => $key ), __METHOD__ ) )
+ {
+ $this->output( "..." . $this->updateSkippedMessage() . "\n" );
+ return true;
+ }
+
+ if ( !$this->doDBUpdates() ) {
+ return false;
+ }
+
+ if (
+ $db->insert( 'updatelog', array( 'ul_key' => $key ), __METHOD__, 'IGNORE' ) )
+ {
+ return true;
+ } else {
+ $this->output( $this->updatelogFailedMessage() . "\n" );
+ return false;
+ }
+ }
+
+ /**
+ * Message to show that the update was done already and was just skipped
+ * @return String
+ */
+ protected function updateSkippedMessage() {
+ $key = $this->getUpdateKey();
+ return "Update '{$key}' already logged as completed.";
+ }
+
+ /**
+ * Message to show the the update log was unable to log the completion of this update
+ * @return String
+ */
+ protected function updatelogFailedMessage() {
+ $key = $this->getUpdateKey();
+ return "Unable to log update '{$key}' as completed.";
+ }
+
+ /**
+ * Do the actual work. All child classes will need to implement this.
+ * Return true to log the update as done or false (usually on failure).
+ * @return Bool
+ */
+ abstract protected function doDBUpdates();
+
+ /**
+ * Get the update key name to go in the update log table
+ * @return String
+ */
+ abstract protected function getUpdateKey();
+} \ No newline at end of file
diff --git a/maintenance/Site.php b/maintenance/Site.php
new file mode 100644
index 00000000..87d637b4
--- /dev/null
+++ b/maintenance/Site.php
@@ -0,0 +1,19 @@
+<?php
+/**
+ * @todo document
+ * @ingroup Maintenance
+ */
+class Site {
+ var $suffix, $lateral, $url;
+
+ function __construct( $s, $l, $u ) {
+ $this->suffix = $s;
+ $this->lateral = $l;
+ $this->url = $u;
+ }
+
+ function getURL( $lang, $urlprotocol ) {
+ $xlang = str_replace( '_', '-', $lang );
+ return "$urlprotocol//$xlang.{$this->url}/wiki/\$1";
+ }
+}
diff --git a/maintenance/addwiki.php b/maintenance/addwiki.php
index e86a8c5d..43f42be5 100644
--- a/maintenance/addwiki.php
+++ b/maintenance/addwiki.php
@@ -31,12 +31,16 @@ require_once( dirname( __FILE__ ) . '/Maintenance.php' );
class AddWiki extends Maintenance {
public function __construct() {
+ global $wgNoDBParam;
+
parent::__construct();
$this->mDescription = "Add a new wiki to the family. Wikimedia specific!";
$this->addArg( 'language', 'Language code of new site, e.g. en' );
$this->addArg( 'site', 'Type of site, e.g. wikipedia' );
$this->addArg( 'dbname', 'Name of database to create, e.g. enwiki' );
$this->addArg( 'domain', 'Domain name of the wiki, e.g. en.wikipedia.org' );
+
+ $wgNoDBParam = true;
}
public function getDbType() {
@@ -44,9 +48,11 @@ class AddWiki extends Maintenance {
}
public function execute() {
- global $IP, $wgDefaultExternalStore, $wgNoDBParam;
+ global $IP, $wgDefaultExternalStore, $wgVersionNumber;
+ if ( !$wgVersionNumber ) { // set in CommonSettings.php
+ $this->error( '$wgVersionNumber is not set, please use MWScript.php wrapper.', true );
+ }
- $wgNoDBParam = true;
$lang = $this->getArg( 0 );
$site = $this->getArg( 1 );
$dbName = $this->getArg( 2 );
@@ -54,7 +60,7 @@ class AddWiki extends Maintenance {
$languageNames = Language::getLanguageNames();
if ( !isset( $languageNames[$lang] ) ) {
- $this->error( "Language $lang not found in \$wgLanguageNames", true );
+ $this->error( "Language $lang not found in Names.php", true );
}
$name = $languageNames[$lang];
@@ -78,12 +84,11 @@ class AddWiki extends Maintenance {
$dbw->sourceFile( "$IP/extensions/Oversight/hidden.sql" );
$dbw->sourceFile( "$IP/extensions/GlobalBlocking/localdb_patches/setup-global_block_whitelist.sql" );
$dbw->sourceFile( "$IP/extensions/AbuseFilter/abusefilter.tables.sql" );
- $dbw->sourceFile( "$IP/extensions/UsabilityInitiative/PrefStats/PrefStats.sql" );
+ $dbw->sourceFile( "$IP/extensions/PrefStats/patches/PrefStats.sql" );
$dbw->sourceFile( "$IP/extensions/ProofreadPage/ProofreadPage.sql" );
- $dbw->sourceFile( "$IP/extensions/UsabilityInitiative/ClickTracking/ClickTrackingEvents.sql" );
- $dbw->sourceFile( "$IP/extensions/UsabilityInitiative/ClickTracking/ClickTracking.sql" );
- $dbw->sourceFile( "$IP/extensions/UsabilityInitiative/UserDailyContribs/UserDailyContribs.sql" );
- $dbw->sourceFile( "$IP/extensions/UsabilityInitiative/OptIn/OptIn.sql" );
+ $dbw->sourceFile( "$IP/extensions/ClickTracking/patches/ClickTrackingEvents.sql" );
+ $dbw->sourceFile( "$IP/extensions/ClickTracking/patches/ClickTracking.sql" );
+ $dbw->sourceFile( "$IP/extensions/UserDailyContribs/patches/UserDailyContribs.sql" );
$dbw->query( "INSERT INTO site_stats(ss_row_id) VALUES (1)" );
@@ -126,13 +131,12 @@ class AddWiki extends Maintenance {
}
}
- global $wgTitle, $wgArticle;
- $wgTitle = Title::newFromText( wfMsgWeirdKey( "mainpage/$lang" ) );
- $this->output( "Writing main page to " . $wgTitle->getPrefixedDBkey() . "\n" );
- $wgArticle = new Article( $wgTitle );
+ $title = Title::newFromText( wfMessage( 'mainpage' )->inLanguage( $lang )->useDatabase( false )->plain() );
+ $this->output( "Writing main page to " . $title->getPrefixedDBkey() . "\n" );
+ $article = new Article( $title );
$ucsite = ucfirst( $site );
- $wgArticle->insertNewArticle( $this->getFirstArticle( $ucsite, $name ), '', false, false );
+ $article->doEdit( $this->getFirstArticle( $ucsite, $name ), '', EDIT_NEW | EDIT_AUTOSUMMARY );
$this->output( "Adding to dblists\n" );
@@ -144,6 +148,13 @@ class AddWiki extends Maintenance {
# Update the sublists
shell_exec( "cd $common && ./refresh-dblist" );
+ # Add to wikiversions.dat
+ $file = fopen( "$common/wikiversions.dat", "a" );
+ fwrite( $file, "$dbName php-$wgVersionNumber\n" );
+ fclose( $file );
+ # Rebuild wikiversions.cdb
+ shell_exec( "cd $common/multiversion && ./refreshWikiversionsCDB" );
+
# print "Constructing interwiki SQL\n";
# Rebuild interwiki tables
# passthru( '/home/wikipedia/conf/interwiki/update' );
@@ -387,9 +398,9 @@ See Wikimedia's [[m:|Meta-Wiki]] for the coordination of these projects.
[[rmy:]]
[[rn:]]
[[ro:]]
-[[roa-rup:]]
[[roa-tara:]]
[[ru:]]
+[[rup:]]
[[rw:]]
[[sa:]]
[[sah:]]
diff --git a/maintenance/archives/patch-archive_ar_revid.sql b/maintenance/archives/patch-archive_ar_revid.sql
index 67ee97b1..3b3fdee6 100644
--- a/maintenance/archives/patch-archive_ar_revid.sql
+++ b/maintenance/archives/patch-archive_ar_revid.sql
@@ -1,4 +1,3 @@
-- Hopefully temporary index.
-- For https://bugzilla.wikimedia.org/show_bug.cgi?id=21279
-ALTER TABLE /*$wgDBprefix*/archive
- ADD INDEX ar_revid ( ar_rev_id ); \ No newline at end of file
+CREATE INDEX /*i*/ar_revid ON /*$wgDBprefix*/archive ( ar_rev_id ); \ No newline at end of file
diff --git a/maintenance/archives/patch-image_reditects.sql b/maintenance/archives/patch-image_reditects.sql
deleted file mode 100644
index e69de29b..00000000
--- a/maintenance/archives/patch-image_reditects.sql
+++ /dev/null
diff --git a/maintenance/archives/patch-math.sql b/maintenance/archives/patch-math.sql
deleted file mode 100644
index 1d4b90e1..00000000
--- a/maintenance/archives/patch-math.sql
+++ /dev/null
@@ -1,28 +0,0 @@
--- Creates table math used for caching TeX blocks. Needs to be run
--- on old installations when adding TeX support (2002-12-26)
--- Or, TeX can be disabled via $wgUseTeX=false in LocalSettings.php
-
--- Note: math table has changed, and this script needs to be run again
--- to create it. (2003-02-02)
-
-DROP TABLE IF EXISTS /*$wgDBprefix*/math;
-CREATE TABLE /*$wgDBprefix*/math (
- -- Binary MD5 hash of the latex fragment, used as an identifier key.
- math_inputhash varbinary(16) NOT NULL,
-
- -- Not sure what this is, exactly...
- math_outputhash varbinary(16) NOT NULL,
-
- -- texvc reports how well it thinks the HTML conversion worked;
- -- if it's a low level the PNG rendering may be preferred.
- math_html_conservativeness tinyint NOT NULL,
-
- -- HTML output from texvc, if any
- math_html text,
-
- -- MathML output from texvc, if any
- math_mathml text,
-
- UNIQUE KEY math_inputhash (math_inputhash)
-
-) /*$wgDBTableOptions*/;
diff --git a/maintenance/archives/patch-page_no_title_convert.sql b/maintenance/archives/patch-page_no_title_convert.sql
deleted file mode 100644
index e69de29b..00000000
--- a/maintenance/archives/patch-page_no_title_convert.sql
+++ /dev/null
diff --git a/maintenance/archives/patch-profiling.sql b/maintenance/archives/patch-profiling.sql
index 29663341..0a0e4e1a 100644
--- a/maintenance/archives/patch-profiling.sql
+++ b/maintenance/archives/patch-profiling.sql
@@ -9,4 +9,4 @@ CREATE TABLE /*_*/profiling (
pf_server varchar(30) NOT NULL default ''
) ENGINE=HEAP;
-CREATE UNIQUE INDEX /*i*/pf_name_server ON /*_*/profiling (pf_name, pf_server) \ No newline at end of file
+CREATE UNIQUE INDEX /*i*/pf_name_server ON /*_*/profiling (pf_name, pf_server); \ No newline at end of file
diff --git a/maintenance/archives/patch-up_property.sql b/maintenance/archives/patch-up_property.sql
new file mode 100644
index 00000000..742841e4
--- /dev/null
+++ b/maintenance/archives/patch-up_property.sql
@@ -0,0 +1,4 @@
+-- Increase the length of up_property from 32 -> 255 bytes. Bug 19408
+
+ALTER TABLE /*_*/user_properties
+ MODIFY up_property varbinary(255);
diff --git a/maintenance/archives/patch-uploadstash.sql b/maintenance/archives/patch-uploadstash.sql
new file mode 100644
index 00000000..2512076f
--- /dev/null
+++ b/maintenance/archives/patch-uploadstash.sql
@@ -0,0 +1,49 @@
+--
+-- Store information about newly uploaded files before they're
+-- moved into the actual filestore
+--
+CREATE TABLE /*_*/uploadstash (
+ us_id int unsigned NOT NULL PRIMARY KEY auto_increment,
+
+ -- the user who uploaded the file.
+ us_user int unsigned NOT NULL,
+
+ -- file key. this is how applications actually search for the file.
+ -- this might go away, or become the primary key.
+ us_key varchar(255) NOT NULL,
+
+ -- the original path
+ us_orig_path varchar(255) NOT NULL,
+
+ -- the temporary path at which the file is actually stored
+ us_path varchar(255) NOT NULL,
+
+ -- which type of upload the file came from (sometimes)
+ us_source_type varchar(50),
+
+ -- the date/time on which the file was added
+ us_timestamp varbinary(14) not null,
+
+ us_status varchar(50) not null,
+
+ -- file properties from File::getPropsFromPath. these may prove unnecessary.
+ --
+ us_size int unsigned NOT NULL,
+ -- this hash comes from File::sha1Base36(), and is 31 characters
+ us_sha1 varchar(31) NOT NULL,
+ us_mime varchar(255),
+ -- Media type as defined by the MEDIATYPE_xxx constants, should duplicate definition in the image table
+ us_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
+ -- image-specific properties
+ us_image_width int unsigned,
+ us_image_height int unsigned,
+ us_image_bits smallint unsigned
+
+) /*$wgDBTableOptions*/;
+
+-- sometimes there's a delete for all of a user's stuff.
+CREATE INDEX /*i*/us_user ON /*_*/uploadstash (us_user);
+-- pick out files by key, enforce key uniqueness
+CREATE UNIQUE INDEX /*i*/us_key ON /*_*/uploadstash (us_key);
+-- the abandoned upload cleanup script needs this
+CREATE INDEX /*i*/us_timestamp ON /*_*/uploadstash (us_timestamp);
diff --git a/maintenance/archives/patch-user-newtalk-timestamp-null.sql b/maintenance/archives/patch-user-newtalk-timestamp-null.sql
new file mode 100644
index 00000000..7234362d
--- /dev/null
+++ b/maintenance/archives/patch-user-newtalk-timestamp-null.sql
@@ -0,0 +1 @@
+ALTER TABLE /*_*/user_newtalk MODIFY user_last_timestamp varbinary(14) NULL default NULL;
diff --git a/maintenance/archives/patch-user_email_index.sql b/maintenance/archives/patch-user_email_index.sql
new file mode 100644
index 00000000..6a3d6208
--- /dev/null
+++ b/maintenance/archives/patch-user_email_index.sql
@@ -0,0 +1 @@
+CREATE INDEX /*i*/user_email ON /*_*/user (user_email(50));
diff --git a/maintenance/archives/patch-user_former_groups.sql b/maintenance/archives/patch-user_former_groups.sql
new file mode 100644
index 00000000..ed18b2b6
--- /dev/null
+++ b/maintenance/archives/patch-user_former_groups.sql
@@ -0,0 +1,9 @@
+-- Stores the groups the user has once belonged to.
+-- The user may still belong these groups. Check user_groups.
+CREATE TABLE /*_*/user_former_groups (
+ -- Key to user_id
+ ufg_user int unsigned NOT NULL default 0,
+ ufg_group varbinary(16) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+
+CREATE UNIQUE INDEX /*i*/ufg_user_group ON /*_*/user_former_groups (ufg_user,ufg_group);
diff --git a/maintenance/archives/patch-user_last_timestamp.sql b/maintenance/archives/patch-user_last_timestamp.sql
index b6d5f0f3..e5f85bf1 100644
--- a/maintenance/archives/patch-user_last_timestamp.sql
+++ b/maintenance/archives/patch-user_last_timestamp.sql
@@ -1,3 +1,3 @@
-- For getting diff since last view
ALTER TABLE /*$wgDBprefix*/user_newtalk
- ADD user_last_timestamp binary(14) NOT NULL default '';
+ ADD user_last_timestamp varbinary(14) NULL default NULL;
diff --git a/maintenance/archives/upgradeLogging.php b/maintenance/archives/upgradeLogging.php
index 54a82c09..1765bd9f 100644
--- a/maintenance/archives/upgradeLogging.php
+++ b/maintenance/archives/upgradeLogging.php
@@ -2,6 +2,21 @@
/**
* Replication-safe online upgrade script for log_id/log_deleted
*
+ * 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 MaintenanceArchive
*/
@@ -9,6 +24,10 @@
require( dirname( __FILE__ ) . '/../commandLine.inc' );
class UpdateLogging {
+
+ /**
+ * @var DatabaseBase
+ */
var $dbw;
var $batchSize = 1000;
var $minTs = false;
@@ -145,7 +164,7 @@ EOT;
$this->dbw->insert( $dstTable, $batch, __METHOD__ );
$numRowsCopied += count( $batch );
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
echo "Copied $numRowsCopied rows\n";
}
diff --git a/maintenance/backup.inc b/maintenance/backup.inc
index 9ed463c9..4cb9c58a 100644
--- a/maintenance/backup.inc
+++ b/maintenance/backup.inc
@@ -50,6 +50,11 @@ class BackupDumper {
var $sink = null; // Output filters
var $stubText = false; // include rev_text_id instead of text; for 2-pass dump
var $dumpUploads = false;
+ var $dumpUploadFileContents = false;
+ var $lastTime = 0;
+ var $pageCountLast = 0;
+ var $revCountLast = 0;
+ var $ID = 0;
function BackupDumper( $args ) {
$this->stderr = fopen( "php://stderr", "wt" );
@@ -119,18 +124,17 @@ class BackupDumper {
$sinks[] = $sink;
}
if ( !isset( $this->outputTypes[$val] ) ) {
- wfDie( "Unrecognized output sink type '$val'\n" );
+ $this->fatalError( "Unrecognized output sink type '$val'" );
}
$type = $this->outputTypes[$val];
$sink = new $type( $param );
break;
case "filter":
if ( is_null( $sink ) ) {
- $this->progress( "Warning: assuming stdout for filter output\n" );
$sink = new DumpOutput();
}
if ( !isset( $this->filterTypes[$val] ) ) {
- wfDie( "Unrecognized filter type '$val'\n" );
+ $this->fatalError( "Unrecognized filter type '$val'" );
}
$type = $this->filterTypes[$val];
$filter = new $type( $sink, $param );
@@ -150,8 +154,8 @@ class BackupDumper {
if ( !function_exists( 'utf8_normalize' ) ) {
wfDl( "php_utfnormal.so" );
if ( !function_exists( 'utf8_normalize' ) ) {
- wfDie( "Failed to load UTF-8 normalization extension. " .
- "Install or remove --force-normal parameter to use slower code.\n" );
+ $this->fatalError( "Failed to load UTF-8 normalization extension. " .
+ "Install or remove --force-normal parameter to use slower code." );
}
}
break;
@@ -188,6 +192,7 @@ class BackupDumper {
$db = $this->backupDb();
$exporter = new WikiExporter( $db, $history, WikiExporter::STREAM, $text );
$exporter->dumpUploads = $this->dumpUploads;
+ $exporter->dumpUploadFileContents = $this->dumpUploadFileContents;
$wrapper = new ExportProgressFilter( $this->sink, $this );
$exporter->setOutputSink( $wrapper );
@@ -205,6 +210,8 @@ class BackupDumper {
} else if ( is_null( $this->pages ) ) {
if ( $this->startId || $this->endId ) {
$exporter->pagesByRange( $this->startId, $this->endId );
+ } elseif ( $this->revStartId || $this->revEndId ) {
+ $exporter->revsByRange( $this->revStartId, $this->revEndId );
} else {
$exporter->allPages();
}
@@ -232,6 +239,8 @@ class BackupDumper {
$dbr = wfGetDB( DB_SLAVE );
$this->maxCount = $dbr->selectField( $table, "MAX($field)", '', __METHOD__ );
$this->startTime = wfTime();
+ $this->lastTime = $this->startTime;
+ $this->ID = getmypid();
}
/**
@@ -280,27 +289,46 @@ class BackupDumper {
function showReport() {
if ( $this->reporting ) {
- $delta = wfTime() - $this->startTime;
$now = wfTimestamp( TS_DB );
- if ( $delta ) {
- $rate = $this->pageCount / $delta;
- $revrate = $this->revCount / $delta;
+ $nowts = wfTime();
+ $deltaAll = wfTime() - $this->startTime;
+ $deltaPart = wfTime() - $this->lastTime;
+ $this->pageCountPart = $this->pageCount - $this->pageCountLast;
+ $this->revCountPart = $this->revCount - $this->revCountLast;
+
+ if ( $deltaAll ) {
$portion = $this->revCount / $this->maxCount;
- $eta = $this->startTime + $delta / $portion;
+ $eta = $this->startTime + $deltaAll / $portion;
$etats = wfTimestamp( TS_DB, intval( $eta ) );
+ $pageRate = $this->pageCount / $deltaAll;
+ $revRate = $this->revCount / $deltaAll;
} else {
- $rate = '-';
- $revrate = '-';
+ $pageRate = '-';
+ $revRate = '-';
$etats = '-';
}
- $this->progress( sprintf( "%s: %s %d pages (%0.3f/sec), %d revs (%0.3f/sec), ETA %s [max %d]",
- $now, wfWikiID(), $this->pageCount, $rate, $this->revCount, $revrate, $etats, $this->maxCount ) );
+ if ( $deltaPart ) {
+ $pageRatePart = $this->pageCountPart / $deltaPart;
+ $revRatePart = $this->revCountPart / $deltaPart;
+ } else {
+ $pageRatePart = '-';
+ $revRatePart = '-';
+ }
+ $this->progress( sprintf( "%s: %s (ID %d) %d pages (%0.1f|%0.1f/sec all|curr), %d revs (%0.1f|%0.1f/sec all|curr), ETA %s [max %d]",
+ $now, wfWikiID(), $this->ID, $this->pageCount, $pageRate, $pageRatePart, $this->revCount, $revRate, $revRatePart, $etats, $this->maxCount ) );
+ $this->lastTime = $nowts;
+ $this->revCountLast = $this->revCount;
}
}
function progress( $string ) {
fwrite( $this->stderr, $string . "\n" );
}
+
+ function fatalError( $msg ) {
+ $this->progress( "$msg\n" );
+ die(1);
+ }
}
class ExportProgressFilter extends DumpFilter {
diff --git a/maintenance/backupPrefetch.inc b/maintenance/backupPrefetch.inc
index 9d743137..93f75c65 100644
--- a/maintenance/backupPrefetch.inc
+++ b/maintenance/backupPrefetch.inc
@@ -2,6 +2,24 @@
/**
* Helper class for the --prefetch option of dumpTextPass.php
*
+ * Copyright © 2005 Brion Vibber <brion@pobox.com>
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup Maintenance
*/
@@ -33,7 +51,12 @@ class BaseDump {
$this->infiles = explode(';',$infile);
$this->reader = new XMLReader();
$infile = array_shift($this->infiles);
- $this->reader->open( $infile );
+ if (defined( 'LIBXML_PARSEHUGE' ) ) {
+ $this->reader->open( $infile, null, LIBXML_PARSEHUGE );
+ }
+ else {
+ $this->reader->open( $infile );
+ }
}
/**
diff --git a/maintenance/benchmarks/Benchmarker.php b/maintenance/benchmarks/Benchmarker.php
index 66789ea4..57fb8759 100644
--- a/maintenance/benchmarks/Benchmarker.php
+++ b/maintenance/benchmarks/Benchmarker.php
@@ -1,14 +1,29 @@
<?php
/**
- * Create a doxygen subgroup of Maintenance for benchmarks
* @defgroup Benchmark Benchmark
- * @ingroup Maintenance
*/
/**
- * TODO: report PHP version, OS ..
+ * Create a doxygen subgroup of Maintenance for benchmarks
+ *
+ * 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
+ *
+ * @todo Report PHP version, OS ..
* @file
- * @ingroup Benchmark
+ * @ingroup Maintenance Benchmark
*/
require_once( dirname( __FILE__ ) . '/../Maintenance.php' );
diff --git a/maintenance/benchmarks/bench_HTTP_HTTPS.php b/maintenance/benchmarks/bench_HTTP_HTTPS.php
index 13d15fce..0038b2d1 100644
--- a/maintenance/benchmarks/bench_HTTP_HTTPS.php
+++ b/maintenance/benchmarks/bench_HTTP_HTTPS.php
@@ -1,6 +1,24 @@
<?php
/**
* This come from r75429 message
+ *
+ * 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
* @author Platonides
*/
@@ -8,7 +26,8 @@ require_once( dirname( __FILE__ ) . '/Benchmarker.php' );
class bench_HTTP_HTTPS extends Benchmarker {
public function __construct() {
- parent::__construct();
+ parent::__construct();
+ $this->mDescription = "Benchmark HTTP request vs HTTPS request.";
}
public function execute() {
diff --git a/maintenance/benchmarks/bench_delete_truncate.php b/maintenance/benchmarks/bench_delete_truncate.php
new file mode 100644
index 00000000..9fe9bea9
--- /dev/null
+++ b/maintenance/benchmarks/bench_delete_truncate.php
@@ -0,0 +1,78 @@
+<?php
+
+require_once( dirname( __FILE__ ) . '/Benchmarker.php' );
+
+class BenchmarkDeleteTruncate extends Benchmarker {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Benchmarks SQL DELETE vs SQL TRUNCATE.";
+ }
+
+ public function execute() {
+ $dbw = wfGetDB( DB_MASTER );
+
+ $test = $dbw->tableName( 'test' );
+ $dbw->query( "CREATE TABLE IF NOT EXISTS /*_*/$test (
+ test_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ text varbinary(255) NOT NULL
+);" );
+
+ $this->insertData( $dbw );
+
+ $start = wfTime();
+
+ $this->delete( $dbw );
+
+ $end = wfTime();
+
+ echo "Delete: " . $end - $start;
+ echo "\r\n";
+
+ $this->insertData( $dbw );
+
+ $start = wfTime();
+
+ $this->truncate( $dbw );
+
+ $end = wfTime();
+
+ echo "Truncate: " . $end - $start;
+ echo "\r\n";
+
+ $dbw->dropTable( 'test' );
+ }
+
+ /**
+ * @param $dbw DatabaseBase
+ * @return void
+ */
+ private function insertData( $dbw ) {
+ $range = range( 0, 1024 );
+ $data = array();
+ foreach( $range as $r ) {
+ $data[] = array( 'text' => $r );
+ }
+ $dbw->insert( 'test', $data, __METHOD__ );
+ }
+
+ /**
+ * @param $dbw DatabaseBase
+ * @return void
+ */
+ private function delete( $dbw ) {
+ $dbw->delete( 'text', '*', __METHOD__ );
+ }
+
+ /**
+ * @param $dbw DatabaseBase
+ * @return void
+ */
+ private function truncate( $dbw ) {
+ $test = $dbw->tableName( 'test' );
+ $dbw->query( "TRUNCATE TABLE $test" );
+ }
+}
+
+$maintClass = "BenchmarkDeleteTruncate";
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/benchmarks/bench_if_switch.php b/maintenance/benchmarks/bench_if_switch.php
new file mode 100644
index 00000000..11c00b3c
--- /dev/null
+++ b/maintenance/benchmarks/bench_if_switch.php
@@ -0,0 +1,88 @@
+<?php
+/**
+ * This come from r75429 message
+ *
+ * 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
+ * @author Platonides
+ */
+
+require_once( dirname( __FILE__ ) . '/Benchmarker.php' );
+class bench_if_switch extends Benchmarker {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Benchmark if elseif... versus switch case.";
+ }
+
+ public function execute() {
+ $this->bench( array(
+ array( 'function' => array( $this, 'doElseIf' ) ),
+ array( 'function' => array( $this, 'doSwitch' ) ),
+ ));
+ print $this->getFormattedResults();
+ }
+
+ // bench function 1
+ function doElseIf() {
+ $a = 'z';
+ if( $a == 'a') {}
+ elseif( $a == 'b') {}
+ elseif( $a == 'c') {}
+ elseif( $a == 'd') {}
+ elseif( $a == 'e') {}
+ elseif( $a == 'f') {}
+ elseif( $a == 'g') {}
+ elseif( $a == 'h') {}
+ elseif( $a == 'i') {}
+ elseif( $a == 'j') {}
+ elseif( $a == 'k') {}
+ elseif( $a == 'l') {}
+ elseif( $a == 'm') {}
+ elseif( $a == 'n') {}
+ elseif( $a == 'o') {}
+ elseif( $a == 'p') {}
+ else {}
+ }
+
+ // bench function 2
+ function doSwitch() {
+ $a = 'z';
+ switch( $a ) {
+ case 'b': break;
+ case 'c': break;
+ case 'd': break;
+ case 'e': break;
+ case 'f': break;
+ case 'g': break;
+ case 'h': break;
+ case 'i': break;
+ case 'j': break;
+ case 'k': break;
+ case 'l': break;
+ case 'm': break;
+ case 'n': break;
+ case 'o': break;
+ case 'p': break;
+ default:
+ }
+ }
+}
+
+$maintClass = 'bench_if_switch';
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/benchmarks/bench_strtr_str_replace.php b/maintenance/benchmarks/bench_strtr_str_replace.php
new file mode 100644
index 00000000..ae576981
--- /dev/null
+++ b/maintenance/benchmarks/bench_strtr_str_replace.php
@@ -0,0 +1,50 @@
+<?php
+
+require_once( dirname( __FILE__ ) . '/Benchmarker.php' );
+
+function bfNormalizeTitleStrTr( $str ) {
+ return strtr( $str, '_', ' ' );
+}
+
+function bfNormalizeTitleStrReplace( $str ) {
+ return str_replace( '_', ' ', $str );
+}
+
+class bench_strtr_str_replace extends Benchmarker {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Benchmark for strtr() vs str_replace().";
+ }
+
+ public function execute() {
+ $this->bench( array(
+ array( 'function' => array( $this, 'benchstrtr' ) ),
+ array( 'function' => array( $this, 'benchstr_replace' ) ),
+ array( 'function' => array( $this, 'benchstrtr_indirect' ) ),
+ array( 'function' => array( $this, 'benchstr_replace_indirect' ) ),
+ ));
+ print $this->getFormattedResults();
+ }
+
+ function benchstrtr() {
+ strtr( "[[MediaWiki:Some_random_test_page]]", "_", " " );
+ }
+
+ function benchstr_replace() {
+ str_replace( "_", " ", "[[MediaWiki:Some_random_test_page]]");
+ }
+
+
+ function benchstrtr_indirect() {
+ bfNormalizeTitleStrTr( "[[MediaWiki:Some_random_test_page]]" );
+ }
+
+ function benchstr_replace_indirect() {
+ bfNormalizeTitleStrReplace( "[[MediaWiki:Some_random_test_page]]" );
+ }
+
+}
+
+$maintClass = 'bench_strtr_str_replace';
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/benchmarks/bench_wfIsWindows.php b/maintenance/benchmarks/bench_wfIsWindows.php
index 2f759e07..4c35221d 100644
--- a/maintenance/benchmarks/bench_wfIsWindows.php
+++ b/maintenance/benchmarks/bench_wfIsWindows.php
@@ -1,6 +1,24 @@
<?php
/**
* This come from r75429 message
+ *
+ * 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
* @author Platonides
*/
@@ -8,7 +26,8 @@ require_once( dirname( __FILE__ ) . '/Benchmarker.php' );
class bench_wfIsWindows extends Benchmarker {
public function __construct() {
- parent::__construct();
+ parent::__construct();
+ $this->mDescription = "Benchmark for wfIsWindows.";
}
public function execute() {
diff --git a/maintenance/benchmarkPurge.php b/maintenance/benchmarks/benchmarkPurge.php
index 8360ef85..4ab7aa10 100644
--- a/maintenance/benchmarkPurge.php
+++ b/maintenance/benchmarks/benchmarkPurge.php
@@ -21,13 +21,12 @@
* @ingroup Maintenance
*/
-require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+require_once( dirname( __FILE__ ) . '/Benchmarker.php' );
-class BenchmarkPurge extends Maintenance {
+class BenchmarkPurge extends Benchmarker {
public function __construct() {
parent::__construct();
- $this->addOption( "count", "How many URLs to feed to Squid for purging", false, true );
$this->mDescription = "Benchmark the Squid purge functions.";
}
@@ -104,4 +103,4 @@ class BenchmarkPurge extends Maintenance {
}
$maintClass = "BenchmarkPurge";
-require_once( DO_MAINTENANCE );
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/cdb.php b/maintenance/cdb.php
new file mode 100644
index 00000000..270f7a60
--- /dev/null
+++ b/maintenance/cdb.php
@@ -0,0 +1,119 @@
+<?php
+/**
+ * cdb inspector tool
+ *
+ * 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
+ * @todo document
+ * @ingroup Maintenance
+ */
+
+/** */
+require_once( dirname( __FILE__ ) . '/commandLine.inc' );
+
+function cdbShowHelp( $command ) {
+ $commandList = array(
+ 'load' => 'load a cdb file for reading',
+ 'get' => 'get a value for a key',
+ 'exit' => 'exit cdb',
+ 'quit' => 'exit cdb',
+ 'help' => 'help about a command',
+ );
+ if ( !$command ) {
+ $command = 'fullhelp';
+ }
+ if ( $command === 'fullhelp' ) {
+ $max_cmd_len = max( array_map( 'strlen', array_keys( $commandList ) ) );
+ foreach ( $commandList as $cmd => $desc ) {
+ printf( "%-{$max_cmd_len}s: %s\n", $cmd, $desc );
+ }
+ } elseif ( isset( $commandList[$command] ) ) {
+ print "$command: $commandList[$command]\n";
+ } else {
+ print "$command: command does not exist or no help for it\n";
+ }
+}
+
+do {
+ $bad = false;
+ $showhelp = false;
+ $quit = false;
+ static $fileHandle;
+
+ $line = Maintenance::readconsole();
+ if ( $line === false ) exit;
+
+ $args = explode( ' ', $line );
+ $command = array_shift( $args );
+
+ // process command
+ switch ( $command ) {
+ case 'help':
+ // show an help message
+ cdbShowHelp( array_shift( $args ) );
+ break;
+ case 'load':
+ if( !isset( $args[0] ) ) {
+ print "Need a filename there buddy\n";
+ break;
+ }
+ $file = $args[0];
+ print "Loading cdb file $file...";
+ $fileHandle = CdbReader::open( $file );
+ if( !$fileHandle ) {
+ print "not a cdb file or unable to read it\n";
+ } else {
+ print "ok\n";
+ }
+ break;
+ case 'get':
+ if( !$fileHandle ) {
+ print "Need to load a cdb file first\n";
+ break;
+ }
+ if( !isset( $args[0] ) ) {
+ print "Need to specify a key, Luke\n";
+ break;
+ }
+ $res = $fileHandle->get( $args[0] );
+ if ( $res === false ) {
+ print "No such key/value pair\n";
+ } elseif ( is_string( $res ) ) {
+ print "$res\n";
+ } else {
+ var_dump( $res );
+ }
+ break;
+ case 'quit':
+ case 'exit':
+ $quit = true;
+ break;
+
+ default:
+ $bad = true;
+ } // switch() end
+
+ if ( $bad ) {
+ if ( $command ) {
+ print "Bad command\n";
+ }
+ } else {
+ if ( function_exists( 'readline_add_history' ) ) {
+ readline_add_history( $line );
+ }
+ }
+} while ( !$quit );
diff --git a/maintenance/changePassword.php b/maintenance/changePassword.php
index 568952b9..ef87dfbd 100644
--- a/maintenance/changePassword.php
+++ b/maintenance/changePassword.php
@@ -29,13 +29,20 @@ require_once( dirname( __FILE__ ) . '/Maintenance.php' );
class ChangePassword extends Maintenance {
public function __construct() {
parent::__construct();
- $this->addOption( "user", "The username to operate on", true, true );
+ $this->addOption( "user", "The username to operate on", false, true );
+ $this->addOption( "userid", "The user id to operate on", false, true );
$this->addOption( "password", "The password to use", true, true );
$this->mDescription = "Change a user's password";
}
public function execute() {
- $user = User::newFromName( $this->getOption( 'user' ) );
+ if ( $this->hasOption( "user" ) ) {
+ $user = User::newFromName( $this->getOption( 'user' ) );
+ } elseif ( $this->hasOption( "userid" ) ) {
+ $user = User::newFromId( $this->getOption( 'userid' ) );
+ } else {
+ $this->error( "A \"user\" or \"userid\" must be set to change the password for" , true );
+ }
if ( !$user->getId() ) {
$this->error( "No such user: " . $this->getOption( 'user' ), true );
}
diff --git a/maintenance/checkBadRedirects.php b/maintenance/checkBadRedirects.php
index 52bfa65a..bac2ff69 100644
--- a/maintenance/checkBadRedirects.php
+++ b/maintenance/checkBadRedirects.php
@@ -27,7 +27,7 @@ require_once( dirname( __FILE__ ) . '/Maintenance.php' );
class CheckBadRedirects extends Maintenance {
public function __construct() {
parent::__construct();
- $this->mDescription = "Look for bad redirects";
+ $this->mDescription = "Check for bad redirects";
}
public function execute() {
@@ -39,8 +39,8 @@ class CheckBadRedirects extends Maintenance {
array( 'page_is_redirect' => 1 ) );
$count = $result->numRows();
- $this->output( "Found $count total redirects.\n" .
- "Looking for bad redirects:\n\n" );
+ $this->output( "Found $count redirects.\n" .
+ "Checking for bad redirects:\n\n" );
foreach ( $result as $row ) {
$title = Title::makeTitle( $row->page_namespace, $row->page_title );
@@ -52,7 +52,7 @@ class CheckBadRedirects extends Maintenance {
}
}
}
- $this->output( "\ndone.\n" );
+ $this->output( "\nDone.\n" );
}
}
diff --git a/maintenance/checkSyntax.php b/maintenance/checkSyntax.php
index 396cac5f..83f73be5 100644
--- a/maintenance/checkSyntax.php
+++ b/maintenance/checkSyntax.php
@@ -101,7 +101,9 @@ class CheckSyntax extends Maintenance {
return; // process only this path
} elseif ( $this->hasOption( 'list-file' ) ) {
$file = $this->getOption( 'list-file' );
- $f = @fopen( $file, 'r' );
+ wfSuppressWarnings();
+ $f = fopen( $file, 'r' );
+ wfRestoreWarnings();
if ( !$f ) {
$this->error( "Can't open file $file\n", true );
}
@@ -137,7 +139,7 @@ class CheckSyntax extends Maintenance {
// Don't just put $IP, because the recursive dir thingie goes into all subdirs
$dirs = array(
$IP . '/includes',
- $IP . '/config',
+ $IP . '/mw-config',
$IP . '/languages',
$IP . '/maintenance',
$IP . '/skins',
@@ -275,7 +277,9 @@ class CheckSyntax extends Maintenance {
}
$text = file_get_contents( $file );
+ $tokens = token_get_all( $text );
+ $this->checkEvilToken( $file, $tokens, '@', 'Error supression operator (@)');
$this->checkRegex( $file, $text, '/^[\s\r\n]+<\?/', 'leading whitespace' );
$this->checkRegex( $file, $text, '/\?>[\s\r\n]*$/', 'trailing ?>' );
$this->checkRegex( $file, $text, '/^[\xFF\xFE\xEF]/', 'byte-order mark' );
@@ -292,6 +296,18 @@ class CheckSyntax extends Maintenance {
$this->mWarnings[$file][] = $desc;
$this->output( "Warning in file $file: $desc found.\n" );
}
+
+ private function checkEvilToken( $file, $tokens, $evilToken, $desc ) {
+ if ( !in_array( $evilToken, $tokens ) ) {
+ return;
+ }
+
+ if ( !isset( $this->mWarnings[$file] ) ) {
+ $this->mWarnings[$file] = array();
+ }
+ $this->mWarnings[$file][] = $desc;
+ $this->output( "Warning in file $file: $desc found.\n" );
+ }
}
$maintClass = "CheckSyntax";
diff --git a/maintenance/cleanupImages.php b/maintenance/cleanupImages.php
index b25b9bbe..c8e90958 100644
--- a/maintenance/cleanupImages.php
+++ b/maintenance/cleanupImages.php
@@ -150,7 +150,7 @@ class ImageCleanup extends TableCleanup {
$this->output( "DRY RUN: would rename $path to $finalPath\n" );
} else {
$this->output( "renaming $path to $finalPath\n" );
- // XXX: should this use File::move()? FIXME?
+ // @todo FIXME: Should this use File::move()?
$db->begin();
$db->update( 'image',
array( 'img_name' => $final ),
diff --git a/maintenance/cleanupSpam.php b/maintenance/cleanupSpam.php
index 39abe4c5..8561281d 100644
--- a/maintenance/cleanupSpam.php
+++ b/maintenance/cleanupSpam.php
@@ -123,7 +123,6 @@ class CleanupSpam extends Maintenance {
$article->doEdit( $rev->getText(), wfMsg( 'spam_reverting', $domain ), EDIT_UPDATE );
}
$dbw->commit();
- wfDoUpdates();
}
}
}
diff --git a/maintenance/cleanupTable.inc b/maintenance/cleanupTable.inc
index 67a32510..f63c6d74 100644
--- a/maintenance/cleanupTable.inc
+++ b/maintenance/cleanupTable.inc
@@ -101,7 +101,8 @@ class TableCleanup extends Maintenance {
}
$table = $params['table'];
- $count = $dbr->selectField( $table, 'count(*)', $params['conds'], __METHOD__ );
+ // count(*) would melt the DB for huge tables, we can estimate here
+ $count = $dbr->estimateRowCount( $table, '*', '', __METHOD__ );
$this->init( $count, $table );
$this->output( "Processing $table...\n" );
diff --git a/maintenance/cleanupUploadStash.php b/maintenance/cleanupUploadStash.php
new file mode 100644
index 00000000..4b47f397
--- /dev/null
+++ b/maintenance/cleanupUploadStash.php
@@ -0,0 +1,75 @@
+<?php
+/**
+ * Remove old or broken uploads from temporary uploaded file storage,
+ * clean up associated database records
+ *
+ * Copyright © 2011, Wikimedia Foundation
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Ian Baker <ibaker@wikimedia.org>
+ * @ingroup Maintenance
+ */
+
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+
+class UploadStashCleanup extends Maintenance {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Clean up abandoned files in temporary uploaded file stash";
+ }
+
+ public function execute() {
+ $repo = RepoGroup::singleton()->getLocalRepo();
+
+ $dbr = $repo->getSlaveDb();
+
+ $this->output( "Getting list of files to clean up...\n" );
+ $res = $dbr->select(
+ 'uploadstash',
+ 'us_key',
+ 'us_timestamp < ' . $dbr->timestamp( time() - UploadStash::REPO_AGE * 3600 ),
+ __METHOD__
+ );
+
+ if( !is_object( $res ) || $res->numRows() == 0 ) {
+ // nothing to do.
+ return false;
+ }
+
+ // finish the read before starting writes.
+ $keys = array();
+ foreach($res as $row) {
+ array_push( $keys, $row->us_key );
+ }
+
+ $this->output( 'Removing ' . count($keys) . " file(s)...\n" );
+ // this could be done some other, more direct/efficient way, but using
+ // UploadStash's own methods means it's less likely to fall accidentally
+ // out-of-date someday
+ $stash = new UploadStash( $repo );
+
+ foreach( $keys as $key ) {
+ $stash->getFile( $key, true );
+ $stash->removeFileNoAuth( $key );
+ }
+ }
+}
+
+$maintClass = "UploadStashCleanup";
+require_once( RUN_MAINTENANCE_IF_MAIN ); \ No newline at end of file
diff --git a/maintenance/commandLine.inc b/maintenance/commandLine.inc
index 4ae753ba..f57c0b67 100644
--- a/maintenance/commandLine.inc
+++ b/maintenance/commandLine.inc
@@ -1,8 +1,26 @@
<?php
-
/**
- * Backwards-compatibility wrapper for old-style maintenance scripts
+ * Backwards-compatibility wrapper for old-style maintenance scripts.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
*/
+
require( dirname( __FILE__ ) . '/Maintenance.php' );
global $optionsWithArgs;
diff --git a/maintenance/compareParsers.php b/maintenance/compareParsers.php
new file mode 100644
index 00000000..4fe4e4d0
--- /dev/null
+++ b/maintenance/compareParsers.php
@@ -0,0 +1,142 @@
+<?php
+/**
+ * Take page text out of an XML dump file and render basic HTML out to files.
+ * This is *NOT* suitable for publishing or offline use; it's intended for
+ * running comparative tests of parsing behavior using real-world data.
+ *
+ * Templates etc are pulled from the local wiki database, not from the dump.
+ *
+ * Copyright (C) 2011 Platonides - http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+
+require_once( dirname( __FILE__ ) . '/dumpIterator.php' );
+
+class CompareParsers extends DumpIterator {
+
+ private $count = 0;
+
+ public function __construct() {
+ parent::__construct();
+ $this->saveFailed = false;
+ $this->mDescription = "Run a file or dump with several parsers";
+ $this->addOption( 'parser1', 'The first parser to compare.', true, true );
+ $this->addOption( 'parser2', 'The second parser to compare.', true, true );
+ $this->addOption( 'tidy', 'Run tidy on the articles.', false, false );
+ $this->addOption( 'save-failed', 'Folder in which articles which differ will be stored.', false, true );
+ $this->addOption( 'show-diff', 'Show a diff of the two renderings.', false, false );
+ $this->addOption( 'diff-bin', 'Binary to use for diffing (can also be provided by DIFF env var).', false, false );
+ $this->addOption( 'strip-parameters', 'Remove parameters of html tags to increase readability.', false, false );
+ $this->addOption( 'show-parsed-output', 'Show the parsed html if both Parsers give the same output.', false, false );
+ }
+
+ public function checkOptions() {
+ if ( $this->hasOption('save-failed') ) {
+ $this->saveFailed = $this->getOption('save-failed');
+ }
+
+ $this->stripParametersEnabled = $this->hasOption( 'strip-parameters' );
+ $this->showParsedOutput = $this->hasOption( 'show-parsed-output' );
+
+ $this->showDiff = $this->hasOption( 'show-diff' );
+ if ( $this->showDiff ) {
+ $bin = $this->getOption( 'diff-bin', getenv( 'DIFF' ) );
+ if ( $bin != '' ) {
+ global $wgDiff;
+ $wgDiff = $bin;
+ }
+ }
+
+ $user = new User();
+ $this->options = ParserOptions::newFromUser( $user );
+
+ if ( $this->hasOption( 'tidy' ) ) {
+ global $wgUseTidy;
+ if ( !$wgUseTidy ) {
+ $this->error( 'Tidy was requested but $wgUseTidy is not set in LocalSettings.php', true );
+ }
+ $this->options->setTidy( true );
+ }
+
+ $this->failed = 0;
+ }
+
+ public function conclusions() {
+ $this->error( "{$this->failed} failed revisions out of {$this->count}" );
+ if ($this->count > 0)
+ $this->output( " (" . ( $this->failed / $this->count ) . "%)\n" );
+ }
+
+ function stripParameters( $text ) {
+ if ( !$this->stripParametersEnabled ) {
+ return $text;
+ }
+ return preg_replace( '/(<a) [^>]+>/', '$1>', $text );
+ }
+
+ /**
+ * Callback function for each revision, parse with both parsers and compare
+ * @param $rev Revision
+ */
+ public function processRevision( $rev ) {
+ $title = $rev->getTitle();
+
+ $parser1Name = $this->getOption( 'parser1' );
+ $parser2Name = $this->getOption( 'parser2' );
+
+ self::checkParserLocally( $parser1Name );
+ self::checkParserLocally( $parser2Name );
+
+ $parser1 = new $parser1Name();
+ $parser2 = new $parser2Name();
+
+ $output1 = $parser1->parse( $rev->getText(), $title, $this->options );
+ $output2 = $parser2->parse( $rev->getText(), $title, $this->options );
+
+ if ( $output1->getText() != $output2->getText() ) {
+ $this->failed++;
+ $this->error( "Parsing for {$title->getPrefixedText()} differs\n" );
+
+ if ( $this->saveFailed ) {
+ file_put_contents( $this->saveFailed . '/' . rawurlencode( $title->getPrefixedText() ) . ".txt", $rev->getText());
+ }
+ if ( $this->showDiff ) {
+ $this->output( wfDiff( $this->stripParameters( $output1->getText() ), $this->stripParameters( $output2->getText() ), '' ) );
+ }
+ } else {
+ $this->output( $title->getPrefixedText() . "\tOK\n" );
+ if ( $this->showParsedOutput ) {
+ $this->output( $this->stripParameters( $output1->getText() ) );
+ }
+ }
+ }
+
+ private static function checkParserLocally( $parserName ) {
+ /* Look for the parser in a file appropiately named in the current folder */
+ if ( !class_exists( $parserName ) && file_exists( "$parserName.php" ) ) {
+ global $wgAutoloadClasses;
+ $wgAutoloadClasses[ $parserName ] = realpath( '.' ) . "/$parserName.php";
+ }
+ }
+
+}
+
+$maintClass = "CompareParsers";
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/convertLinks.php b/maintenance/convertLinks.php
index b7a55d57..85ef5c8c 100644
--- a/maintenance/convertLinks.php
+++ b/maintenance/convertLinks.php
@@ -193,12 +193,12 @@ This gives a huge speed improvement for very large links tables which are MyISAM
if ( $overwriteLinksTable ) {
# Check for existing links_backup, and delete it if it exists.
$this->output( "Dropping backup links table if it exists..." );
- $dbw->query( "DROP TABLE IF EXISTS $links_backup", DB_MASTER );
+ $dbw->query( "DROP TABLE IF EXISTS $links_backup", __METHOD__ );
$this->output( " done.\n" );
# Swap in the new table, and move old links table to links_backup
$this->output( "Swapping tables '$links' to '$links_backup'; '$links_temp' to '$links'..." );
- $dbw->query( "RENAME TABLE links TO $links_backup, $links_temp TO $links", DB_MASTER );
+ $dbw->query( "RENAME TABLE links TO $links_backup, $links_temp TO $links", __METHOD__ );
$this->output( " done.\n\n" );
$dbw->close();
diff --git a/maintenance/convertUserOptions.php b/maintenance/convertUserOptions.php
index 278d40ff..f46f710d 100644
--- a/maintenance/convertUserOptions.php
+++ b/maintenance/convertUserOptions.php
@@ -46,7 +46,7 @@ class ConvertUserOptions extends Maintenance {
$id = $this->convertOptionBatch( $res, $dbw );
$dbw->commit();
- wfWaitForSlaves( 1 );
+ wfWaitForSlaves();
if ( $id )
$this->output( "--Converted to ID $id\n" );
diff --git a/maintenance/createAndPromote.php b/maintenance/createAndPromote.php
index 8bff284a..0d7de9a9 100644
--- a/maintenance/createAndPromote.php
+++ b/maintenance/createAndPromote.php
@@ -28,7 +28,8 @@ class CreateAndPromote extends Maintenance {
public function __construct() {
parent::__construct();
- $this->mDescription = "Create a new user account with administrator rights";
+ $this->mDescription = "Create a new user account";
+ $this->addOption( "sysop", "Grant the account sysop rights" );
$this->addOption( "bureaucrat", "Grant the account bureaucrat rights" );
$this->addArg( "username", "Username of new user" );
$this->addArg( "password", "Password to set" );
@@ -59,9 +60,12 @@ class CreateAndPromote extends Maintenance {
$user->saveSettings();
# Promote user
- $user->addGroup( 'sysop' );
- if ( $this->hasOption( 'bureaucrat' ) )
+ if ( $this->hasOption( 'sysop' ) ) {
+ $user->addGroup( 'sysop' );
+ }
+ if ( $this->hasOption( 'bureaucrat' ) ) {
$user->addGroup( 'bureaucrat' );
+ }
# Increment site_stats.ss_users
$ssu = new SiteStatsUpdate( 0, 0, 0, 0, 1 );
diff --git a/maintenance/deleteArchivedFiles.inc b/maintenance/deleteArchivedFiles.inc
index e0ac225e..68394b4a 100644
--- a/maintenance/deleteArchivedFiles.inc
+++ b/maintenance/deleteArchivedFiles.inc
@@ -45,9 +45,12 @@ class DeleteArchivedFilesImplementation {
array( 'FOR UPDATE' )
);
if ( $path && file_exists( $path ) && !$inuse ) {
- unlink( $path ); // delete
- $count++;
- $dbw->query( "DELETE FROM $tbl_arch WHERE fa_id = $id" );
+ if( unlink( $path ) ) { // delete
+ $count++;
+ $dbw->query( "DELETE FROM $tbl_arch WHERE fa_id = $id" );
+ } else {
+ $output->handleOutput( "Unable to remove file $path, skipping\n" );
+ }
} else {
$output->handleOutput( "Notice - file '$key' not found in group '$group'\n" );
if ( $force ) {
diff --git a/maintenance/deleteArchivedRevisions.inc b/maintenance/deleteArchivedRevisions.inc
index 10bd4cff..7628985c 100644
--- a/maintenance/deleteArchivedRevisions.inc
+++ b/maintenance/deleteArchivedRevisions.inc
@@ -54,4 +54,4 @@ class DeleteArchivedRevisionsImplementation {
$maint->purgeRedundantText( true );
}
}
-} \ No newline at end of file
+}
diff --git a/maintenance/deleteBatch.php b/maintenance/deleteBatch.php
index c8bb4803..eb2e1f34 100644
--- a/maintenance/deleteBatch.php
+++ b/maintenance/deleteBatch.php
@@ -87,8 +87,10 @@ class DeleteBatch extends Maintenance {
if ( $page->getNamespace() == NS_FILE ) {
$art = new ImagePage( $page );
$img = wfFindFile( $art->mTitle );
- if ( !$img || !$img->delete( $reason ) ) {
- $this->output( "FAILED to delete image file... " );
+ if ( !$img
+ || !$img->isLocal()
+ || !$img->delete( $reason ) ) {
+ $this->output( " FAILED to delete image file... " );
}
} else {
$art = new Article( $page );
@@ -96,7 +98,7 @@ class DeleteBatch extends Maintenance {
$success = $art->doDeleteArticle( $reason );
$dbw->commit();
if ( $success ) {
- $this->output( "\n" );
+ $this->output( " Deleted!\n" );
} else {
$this->output( " FAILED to delete article\n" );
}
@@ -104,7 +106,7 @@ class DeleteBatch extends Maintenance {
if ( $interval ) {
sleep( $interval );
}
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
}
}
diff --git a/maintenance/deleteDefaultMessages.php b/maintenance/deleteDefaultMessages.php
index fc482ac0..a33921b1 100644
--- a/maintenance/deleteDefaultMessages.php
+++ b/maintenance/deleteDefaultMessages.php
@@ -63,9 +63,7 @@ class DeleteDefaultMessages extends Maintenance {
$dbw = wfGetDB( DB_MASTER );
foreach ( $res as $row ) {
- if ( function_exists( 'wfWaitForSlaves' ) ) {
- wfWaitForSlaves( 5 );
- }
+ wfWaitForSlaves();
$dbw->ping();
$title = Title::makeTitle( $row->page_namespace, $row->page_title );
$article = new Article( $title );
diff --git a/maintenance/deleteOldRevisions.php b/maintenance/deleteOldRevisions.php
index ba76e9e9..2cb347fc 100644
--- a/maintenance/deleteOldRevisions.php
+++ b/maintenance/deleteOldRevisions.php
@@ -60,6 +60,7 @@ class DeleteOldRevisions extends Maintenance {
# Get "active" revisions from the page table
$this->output( "Searching for active revisions..." );
$res = $dbw->query( "SELECT page_latest FROM $tbl_pag{$pageIdClause}" );
+ $cur = array();
foreach ( $res as $row ) {
$cur[] = $row->page_latest;
}
diff --git a/maintenance/deleteOrphanedRevisions.php b/maintenance/deleteOrphanedRevisions.php
index e972d1fa..c322320b 100644
--- a/maintenance/deleteOrphanedRevisions.php
+++ b/maintenance/deleteOrphanedRevisions.php
@@ -75,7 +75,7 @@ class DeleteOrphanedRevisions extends Maintenance {
* Do this inside a transaction
*
* @param $id Array of revision id values
- * @param $dbw Database class (needs to be a master)
+ * @param $dbw DatabaseBase class (needs to be a master)
*/
private function deleteRevs( $id, &$dbw ) {
if ( !is_array( $id ) )
diff --git a/maintenance/deleteSelfExternals.php b/maintenance/deleteSelfExternals.php
index db23e92c..4e9f54f2 100644
--- a/maintenance/deleteSelfExternals.php
+++ b/maintenance/deleteSelfExternals.php
@@ -39,7 +39,7 @@ class DeleteSelfExternals extends Maintenance {
$this->output( "Deleting self externals from $wgServer\n" );
$db = wfGetDB( DB_MASTER );
while ( 1 ) {
- wfWaitForSlaves( 2 );
+ wfWaitForSlaves();
$db->commit();
$q = $db->limitResult( "DELETE /* deleteSelfExternals */ FROM externallinks WHERE el_to"
. $db->buildLike( $wgServer . '/', $db->anyString() ), $this->mBatchSize );
diff --git a/maintenance/doMaintenance.php b/maintenance/doMaintenance.php
index a9f5fae7..44e00032 100644
--- a/maintenance/doMaintenance.php
+++ b/maintenance/doMaintenance.php
@@ -53,52 +53,49 @@ $maintenance->setup();
// to $maintenance->mSelf. Keep that here for b/c
$self = $maintenance->getName();
-# Setup the profiler
-global $IP;
-if ( file_exists( "$IP/StartProfiler.php" ) ) {
- require_once( "$IP/StartProfiler.php" );
+// Detect compiled mode
+if ( isset( $_SERVER['MW_COMPILED'] ) ) {
+ define( 'MW_COMPILED', 1 );
} else {
- require_once( "$IP/includes/ProfilerStub.php" );
+ # Get the MWInit class
+ require_once( "$IP/includes/Init.php" );
+ require_once( "$IP/includes/AutoLoader.php" );
}
+# Stub the profiler
+require_once( MWInit::compiledPath( 'includes/profiler/Profiler.php' ) );
+
// Some other requires
-require_once( "$IP/includes/AutoLoader.php" );
-require_once( "$IP/includes/Defines.php" );
-require_once( "$IP/includes/DefaultSettings.php" );
+if ( !defined( 'MW_COMPILED' ) ) {
+ require_once( "$IP/includes/Defines.php" );
+}
+require_once( MWInit::compiledPath( 'includes/DefaultSettings.php' ) );
if ( defined( 'MW_CONFIG_CALLBACK' ) ) {
# Use a callback function to configure MediaWiki
- $callback = MW_CONFIG_CALLBACK;
- # PHP 5.1 doesn't support "class::method" for call_user_func, so split it
- if ( strpos( $callback, '::' ) !== false ) {
- $callback = explode( '::', $callback, 2 );
- }
- call_user_func( $callback );
-} elseif ( file_exists( "$IP/wmf-config/wikimedia-mode" ) ) {
+ MWFunction::call( MW_CONFIG_CALLBACK );
+} elseif ( file_exists( "$IP/../wmf-config/wikimedia-mode" ) ) {
// Load settings, using wikimedia-mode if needed
- // Fixme: replace this hack with general farm-friendly code
- # TODO FIXME! Wikimedia-specific stuff needs to go away to an ext
+ // @todo FIXME: Replace this hack with general farm-friendly code
+ # @todo FIXME: Wikimedia-specific stuff needs to go away to an ext
# Maybe a hook?
global $cluster;
- $wgWikiFarm = true;
$cluster = 'pmtpa';
- require_once( "$IP/includes/SiteConfiguration.php" );
- require( "$IP/wmf-config/wgConf.php" );
+ require( MWInit::interpretedPath( '../wmf-config/wgConf.php' ) );
$maintenance->loadWikimediaSettings();
- require( $IP . '/wmf-config/CommonSettings.php' );
+ require( MWInit::interpretedPath( '../wmf-config/CommonSettings.php' ) );
} else {
require_once( $maintenance->loadSettings() );
}
if ( $maintenance->getDbType() === Maintenance::DB_ADMIN &&
- is_readable( "$IP/AdminSettings.php" ) )
+ is_readable( "$IP/AdminSettings.php" ) )
{
- require( "$IP/AdminSettings.php" );
+ require( MWInit::interpretedPath( 'AdminSettings.php' ) );
}
$maintenance->finalSetup();
// Some last includes
-require_once( "$IP/includes/Setup.php" );
-require_once( "$IP/maintenance/install-utils.inc" );
+require_once( MWInit::compiledPath( 'includes/Setup.php' ) );
// Much much faster startup than creating a title object
$wgTitle = null;
diff --git a/maintenance/dumpBackup.php b/maintenance/dumpBackup.php
index 90e8f72f..15189261 100644
--- a/maintenance/dumpBackup.php
+++ b/maintenance/dumpBackup.php
@@ -27,7 +27,7 @@
$originalDir = getcwd();
-$optionsWithArgs = array( 'pagelist', 'start', 'end' );
+$optionsWithArgs = array( 'pagelist', 'start', 'end', 'revstart', 'revend');
require_once( dirname( __FILE__ ) . '/commandLine.inc' );
require_once( 'backup.inc' );
@@ -44,7 +44,8 @@ if ( isset( $options['pagelist'] ) ) {
$pages = file( $options['pagelist'] );
chdir( $olddir );
if ( $pages === false ) {
- wfDie( "Unable to open file {$options['pagelist']}\n" );
+ echo( "Unable to open file {$options['pagelist']}\n" );
+ die(1);
}
$pages = array_map( 'trim', $pages );
$dumper->pages = array_filter( $pages, create_function( '$x', 'return $x !== "";' ) );
@@ -56,9 +57,17 @@ if ( isset( $options['start'] ) ) {
if ( isset( $options['end'] ) ) {
$dumper->endId = intval( $options['end'] );
}
+
+if ( isset( $options['revstart'] ) ) {
+ $dumper->revStartId = intval( $options['revstart'] );
+}
+if ( isset( $options['revend'] ) ) {
+ $dumper->revEndId = intval( $options['revend'] );
+}
$dumper->skipHeader = isset( $options['skip-header'] );
$dumper->skipFooter = isset( $options['skip-footer'] );
$dumper->dumpUploads = isset( $options['uploads'] );
+$dumper->dumpUploadFileContents = isset( $options['include-files'] );
$textMode = isset( $options['stub'] ) ? WikiExporter::STUB : WikiExporter::TEXT;
@@ -70,6 +79,8 @@ if ( isset( $options['full'] ) ) {
$dumper->dump( WikiExporter::STABLE, $textMode );
} elseif ( isset( $options['logs'] ) ) {
$dumper->dump( WikiExporter::LOGS );
+} elseif ( isset($options['revrange'] ) ) {
+ $dumper->dump( WikiExporter::RANGE, $textMode );
} else {
$dumper->progress( <<<ENDS
This script dumps the wiki page or logging database into an
@@ -85,7 +96,8 @@ Actions:
--stable Stable versions of pages?
--pagelist=<file>
Where <file> is a list of page titles to be dumped
-
+ --revrange Dump specified range of revisions, requires
+ revstart and revend options.
Options:
--quiet Don't dump status reports to stderr.
--report=n Report position and speed after every n pages processed.
@@ -93,10 +105,13 @@ Options:
--server=h Force reading from MySQL server h
--start=n Start from page_id or log_id n
--end=n Stop before page_id or log_id n (exclusive)
+ --revstart=n Start from rev_id n
+ --revend=n Stop before rev_id n (exclusive)
--skip-header Don't output the <mediawiki> header
--skip-footer Don't output the </mediawiki> footer
--stub Don't perform old_text lookups; for 2-pass dump
- --uploads Include upload records (experimental)
+ --uploads Include upload records without files
+ --include-files Include files within the XML stream
--conf=<file> Use the specified configuration file (LocalSettings.php)
--wiki=<wiki> Only back up the specified <wiki>
diff --git a/maintenance/dumpInterwiki.php b/maintenance/dumpInterwiki.php
index 4a4b6791..217afd88 100644
--- a/maintenance/dumpInterwiki.php
+++ b/maintenance/dumpInterwiki.php
@@ -3,30 +3,28 @@
* Build constant slightly compact database of interwiki prefixes
* Wikimedia specific!
*
+ * 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
* @todo document
* @ingroup Maintenance
* @ingroup Wikimedia
*/
-/**
- * @todo document
- * @ingroup Maintenance
- */
-class Site {
- var $suffix, $lateral, $url;
-
- function __construct( $s, $l, $u ) {
- $this->suffix = $s;
- $this->lateral = $l;
- $this->url = $u;
- }
-
- function getURL( $lang ) {
- $xlang = str_replace( '_', '-', $lang );
- return "http://$xlang.{$this->url}/wiki/\$1";
- }
-}
+require_once( dirname( __FILE__ ) . '/Site.php' );
require_once( dirname( __FILE__ ) . '/Maintenance.php' );
@@ -39,6 +37,7 @@ class DumpInterwiki extends Maintenance {
$this->addOption( 'dblist', 'File with one db per line', false, true );
$this->addOption( 'specialdbs', "File with one 'special' db per line", false, true );
$this->addOption( 'o', 'Cdb output file', false, true );
+ $this->addOption( 'protocolrelative', 'Output wikimedia interwiki urls as protocol relative', false, false );
}
function execute() {
@@ -57,6 +56,12 @@ class DumpInterwiki extends Maintenance {
$this->dbFile = false;
}
+ if ( $this->hasOption( 'protocolrelative' ) ) {
+ $this->urlprotocol = '';
+ } else {
+ $this->urlprotocol = 'http:';
+ }
+
$this->getRebuildInterwikiDump();
}
@@ -78,9 +83,9 @@ class DumpInterwiki extends Maintenance {
# Extra interwiki links that can't be in the intermap for some reason
$extraLinks = array(
- array( 'm', 'http://meta.wikimedia.org/wiki/$1', 1 ),
- array( 'meta', 'http://meta.wikimedia.org/wiki/$1', 1 ),
- array( 'sep11', 'http://sep11.wikipedia.org/wiki/$1', 1 ),
+ array( 'm', $this->urlprotocol . '//meta.wikimedia.org/wiki/$1', 1 ),
+ array( 'meta', $this->urlprotocol . '//meta.wikimedia.org/wiki/$1', 1 ),
+ array( 'sep11', $this->urlprotocol . '//sep11.wikipedia.org/wiki/$1', 1 ),
);
# Language aliases, usually configured as redirects to the real wiki in apache
@@ -128,6 +133,13 @@ class DumpInterwiki extends Maintenance {
$url = $matches[2];
if ( preg_match( '/(wikipedia|wiktionary|wikisource|wikiquote|wikibooks|wikimedia)\.org/', $url ) ) {
+ if ( $this->hasOption( 'protocolrelative' ) ) {
+ if ( substr( $url, 0, 5 ) == 'http:' ) {
+ $url = substr( $url, 5 );
+ } else if ( substr( $url, 0, 6 ) == 'https:' ) {
+ $url = substr( $url, 6 );
+ }
+ }
$local = 1;
} else {
$local = 0;
@@ -157,7 +169,7 @@ class DumpInterwiki extends Maintenance {
# Links to multilanguage sites
foreach ( $sites as $targetSite ) {
$this->makeLink( array( 'iw_prefix' => $targetSite->lateral,
- 'iw_url' => $targetSite->getURL( 'en' ),
+ 'iw_url' => $targetSite->getURL( 'en', $this->urlprotocol ),
'iw_local' => 1 ), $db );
}
} else {
@@ -181,14 +193,14 @@ class DumpInterwiki extends Maintenance {
foreach ( $sites as $targetSite ) {
if ( $targetSite->suffix != $site->suffix ) {
$this->makeLink( array( 'iw_prefix' => $targetSite->lateral,
- 'iw_url' => $targetSite->getURL( $lang ),
+ 'iw_url' => $targetSite->getURL( $lang, $this->urlprotocol ),
'iw_local' => 1 ), $db );
}
}
if ( $site->suffix == "wiki" ) {
$this->makeLink( array( 'iw_prefix' => 'w',
- 'iw_url' => "http://en.wikipedia.org/wiki/$1",
+ 'iw_url' => $this->urlprotocol . "//en.wikipedia.org/wiki/$1",
'iw_local' => 1 ), $db );
}
@@ -205,12 +217,12 @@ class DumpInterwiki extends Maintenance {
function makeLanguageLinks( &$site, $source ) {
# Actual languages with their own databases
foreach ( $this->langlist as $targetLang ) {
- $this->makeLink( array( $targetLang, $site->getURL( $targetLang ), 1 ), $source );
+ $this->makeLink( array( $targetLang, $site->getURL( $targetLang, $this->urlprotocol ), 1 ), $source );
}
# Language aliases
foreach ( $this->languageAliases as $alias => $lang ) {
- $this->makeLink( array( $alias, $site->getURL( $lang ), 1 ), $source );
+ $this->makeLink( array( $alias, $site->getURL( $lang, $this->urlprotocol ), 1 ), $source );
}
}
diff --git a/maintenance/dumpIterator.php b/maintenance/dumpIterator.php
new file mode 100644
index 00000000..470bc56e
--- /dev/null
+++ b/maintenance/dumpIterator.php
@@ -0,0 +1,167 @@
+<?php
+/**
+ * Take page text out of an XML dump file and perform some operation on it.
+ * Used as a base class for CompareParsers and PreprocessDump.
+ * We implement below the simple task of searching inside a dump.
+ *
+ * Copyright (C) 2011 Platonides - http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+
+abstract class DumpIterator extends Maintenance {
+
+ private $count = 0;
+ private $startTime;
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Does something with a dump";
+ $this->addOption( 'file', 'File with text to run.', false, true );
+ $this->addOption( 'dump', 'XML dump to execute all revisions.', false, true );
+ $this->addOption( 'from', 'Article from XML dump to start from.', false, true );
+ }
+
+ public function execute() {
+ if (! ( $this->hasOption('file') ^ $this->hasOption('dump') ) ) {
+ $this->error("You must provide a file or dump", true);
+ }
+
+ $this->checkOptions();
+
+ if ( $this->hasOption('file') ) {
+ $revision = new WikiRevision;
+
+ $revision->setText( file_get_contents( $this->getOption( 'file' ) ) );
+ $revision->setTitle( Title::newFromText( rawurldecode( basename( $this->getOption( 'file' ), '.txt' ) ) ) );
+ $this->handleRevision( $revision );
+ return;
+ }
+
+ $this->startTime = wfTime();
+
+ if ( $this->getOption('dump') == '-' ) {
+ $source = new ImportStreamSource( $this->getStdin() );
+ } else {
+ $this->error("Sorry, I don't support dump filenames yet. Use - and provide it on stdin on the meantime.", true);
+ }
+ $importer = new WikiImporter( $source );
+
+ $importer->setRevisionCallback(
+ array( &$this, 'handleRevision' ) );
+
+ $this->from = $this->getOption( 'from', null );
+ $this->count = 0;
+ $importer->doImport();
+
+ $this->conclusions();
+
+ $delta = wfTime() - $this->startTime;
+ $this->error( "Done {$this->count} revisions in " . round($delta, 2) . " seconds " );
+ if ($delta > 0)
+ $this->error( round($this->count / $delta, 2) . " pages/sec" );
+
+ # Perform the memory_get_peak_usage() when all the other data has been output so there's no damage if it dies.
+ # It is only available since 5.2.0 (since 5.2.1 if you haven't compiled with --enable-memory-limit)
+ $this->error( "Memory peak usage of " . memory_get_peak_usage() . " bytes\n" );
+ }
+
+ public function finalSetup() {
+ parent::finalSetup();
+
+ if ( $this->getDbType() == Maintenance::DB_NONE ) {
+ global $wgUseDatabaseMessages, $wgLocalisationCacheConf, $wgHooks;
+ $wgUseDatabaseMessages = false;
+ $wgLocalisationCacheConf['storeClass'] = 'LCStore_Null';
+ $wgHooks['InterwikiLoadPrefix'][] = 'DumpIterator::disableInterwikis';
+ }
+ }
+
+ static function disableInterwikis( $prefix, &$data ) {
+ # Title::newFromText will check on each namespaced article if it's an interwiki.
+ # We always answer that it is not.
+
+ return false;
+ }
+
+ /**
+ * Callback function for each revision, child classes should override
+ * processRevision instead.
+ * @param $rev Revision
+ */
+ public function handleRevision( $rev ) {
+ $title = $rev->getTitle();
+ if ( !$title ) {
+ $this->error( "Got bogus revision with null title!" );
+ return;
+ }
+
+ $this->count++;
+ if ( isset( $this->from ) ) {
+ if ( $this->from != $title )
+ return;
+ $this->output( "Skipped " . ($this->count - 1) . " pages\n" );
+
+ $this->count = 1;
+ $this->from = null;
+ }
+
+ $this->processRevision( $rev );
+ }
+
+ /* Stub function for processing additional options */
+ public function checkOptions() {
+ return;
+ }
+
+ /* Stub function for giving data about what was computed */
+ public function conclusions() {
+ return;
+ }
+
+ /* Core function which does whatever the maintenance script is designed to do */
+ abstract public function processRevision( $rev );
+}
+
+class SearchDump extends DumpIterator {
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Runs a regex in the revisions from a dump";
+ $this->addOption( 'regex', 'Searching regex', true, true );
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_NONE;
+ }
+
+ /**
+ * @param $rev Revision
+ */
+ public function processRevision( $rev ) {
+ if ( preg_match( $this->getOption( 'regex' ), $rev->getText() ) ) {
+ $this->output( $rev->getTitle() . " matches at edit from " . $rev->getTimestamp() . "\n" );
+ }
+ }
+}
+
+$maintClass = "SearchDump";
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/dumpTextPass.php b/maintenance/dumpTextPass.php
index 98d4af0e..4e85e64e 100644
--- a/maintenance/dumpTextPass.php
+++ b/maintenance/dumpTextPass.php
@@ -2,7 +2,7 @@
/**
* Script that postprocesses XML dumps from dumpBackup.php to add page text
*
- * Copyright © 2005 Brion Vibber <brion@pobox.com>, 2010 Alexandre Emsenhuber
+ * Copyright © 2005 Brion Vibber <brion@pobox.com>, 2010 Alexandre Emsenhuber
* http://www.mediawiki.org/
*
* This program is free software; you can redistribute it and/or modify
@@ -35,8 +35,11 @@ require_once( 'backup.inc' );
class TextPassDumper extends BackupDumper {
var $prefetch = null;
var $input = "php://stdin";
+ var $history = WikiExporter::FULL;
var $fetchCount = 0;
var $prefetchCount = 0;
+ var $prefetchCountLast = 0;
+ var $fetchCountLast = 0;
var $failures = 0;
var $maxFailures = 5;
@@ -51,20 +54,50 @@ class TextPassDumper extends BackupDumper {
var $spawnRead = false;
var $spawnErr = false;
+ var $xmlwriterobj = false;
+
+ // when we spend more than maxTimeAllowed seconds on this run, we continue
+ // processing until we write out the next complete page, then save output file(s),
+ // rename it/them and open new one(s)
+ var $maxTimeAllowed = 0; // 0 = no limit
+ var $timeExceeded = false;
+ var $firstPageWritten = false;
+ var $lastPageWritten = false;
+ var $checkpointJustWritten = false;
+ var $checkpointFiles = array();
+
+ function initProgress( $history ) {
+ parent::initProgress();
+ $this->timeOfCheckpoint = $this->startTime;
+ }
+
function dump( $history, $text = WikiExporter::TEXT ) {
- # This shouldn't happen if on console... ;)
+ // This shouldn't happen if on console... ;)
header( 'Content-type: text/html; charset=UTF-8' );
- # Notice messages will foul up your XML output even if they're
- # relatively harmless.
+ // Notice messages will foul up your XML output even if they're
+ // relatively harmless.
if ( ini_get( 'display_errors' ) )
ini_set( 'display_errors', 'stderr' );
- $this->initProgress( $history );
+ $this->initProgress( $this->history );
$this->db = $this->backupDb();
- $this->readDump();
+ $this->egress = new ExportProgressFilter( $this->sink, $this );
+
+ // it would be nice to do it in the constructor, oh well. need egress set
+ $this->finalOptionCheck();
+
+ // we only want this so we know how to close a stream :-P
+ $this->xmlwriterobj = new XmlDumpWriter();
+
+ $input = fopen( $this->input, "rt" );
+ $result = $this->readDump( $input );
+
+ if ( WikiError::isError( $result ) ) {
+ throw new MWException( $result->getMessage() );
+ }
if ( $this->spawnProc ) {
$this->closeSpawn();
@@ -85,6 +118,18 @@ class TextPassDumper extends BackupDumper {
case 'stub':
$this->input = $url;
break;
+ case 'maxtime':
+ $this->maxTimeAllowed = intval($val)*60;
+ break;
+ case 'checkpointfile':
+ $this->checkpointFiles[] = $val;
+ break;
+ case 'current':
+ $this->history = WikiExporter::CURRENT;
+ break;
+ case 'full':
+ $this->history = WikiExporter::FULL;
+ break;
case 'spawn':
$this->spawn = true;
if ( $val ) {
@@ -128,96 +173,143 @@ class TextPassDumper extends BackupDumper {
}
if ( $this->reporting ) {
- $delta = wfTime() - $this->startTime;
$now = wfTimestamp( TS_DB );
- if ( $delta ) {
- $rate = $this->pageCount / $delta;
- $revrate = $this->revCount / $delta;
+ $nowts = wfTime();
+ $deltaAll = wfTime() - $this->startTime;
+ $deltaPart = wfTime() - $this->lastTime;
+ $this->pageCountPart = $this->pageCount - $this->pageCountLast;
+ $this->revCountPart = $this->revCount - $this->revCountLast;
+
+ if ( $deltaAll ) {
$portion = $this->revCount / $this->maxCount;
- $eta = $this->startTime + $delta / $portion;
+ $eta = $this->startTime + $deltaAll / $portion;
$etats = wfTimestamp( TS_DB, intval( $eta ) );
- $fetchrate = 100.0 * $this->prefetchCount / $this->fetchCount;
+ if ( $this->fetchCount ) {
+ $fetchRate = 100.0 * $this->prefetchCount / $this->fetchCount;
+ }
+ else {
+ $fetchRate = '-';
+ }
+ $pageRate = $this->pageCount / $deltaAll;
+ $revRate = $this->revCount / $deltaAll;
} else {
- $rate = '-';
- $revrate = '-';
+ $pageRate = '-';
+ $revRate = '-';
$etats = '-';
- $fetchrate = '-';
+ $fetchRate = '-';
+ }
+ if ( $deltaPart ) {
+ if ( $this->fetchCountLast ) {
+ $fetchRatePart = 100.0 * $this->prefetchCountLast / $this->fetchCountLast;
+ }
+ else {
+ $fetchRatePart = '-';
+ }
+ $pageRatePart = $this->pageCountPart / $deltaPart;
+ $revRatePart = $this->revCountPart / $deltaPart;
+
+ } else {
+ $fetchRatePart = '-';
+ $pageRatePart = '-';
+ $revRatePart = '-';
}
- $this->progress( sprintf( "%s: %s %d pages (%0.3f/sec), %d revs (%0.3f/sec), %0.1f%% prefetched, ETA %s [max %d]",
- $now, wfWikiID(), $this->pageCount, $rate, $this->revCount, $revrate, $fetchrate, $etats, $this->maxCount ) );
+ $this->progress( sprintf( "%s: %s (ID %d) %d pages (%0.1f|%0.1f/sec all|curr), %d revs (%0.1f|%0.1f/sec all|curr), %0.1f%%|%0.1f%% prefetched (all|curr), ETA %s [max %d]",
+ $now, wfWikiID(), $this->ID, $this->pageCount, $pageRate, $pageRatePart, $this->revCount, $revRate, $revRatePart, $fetchRate, $fetchRatePart, $etats, $this->maxCount ) );
+ $this->lastTime = $nowts;
+ $this->revCountLast = $this->revCount;
+ $this->prefetchCountLast = $this->prefetchCount;
+ $this->fetchCountLast = $this->fetchCount;
}
}
- function readDump() {
- $state = '';
- $lastName = '';
- $this->thisPage = 0;
- $this->thisRev = 0;
+ function setTimeExceeded() {
+ $this->timeExceeded = True;
+ }
- $reader = new XMLReader();
- $reader->open( $this->input );
- $writer = new XMLWriter();
- $writer->openMemory();
+ function checkIfTimeExceeded() {
+ if ( $this->maxTimeAllowed && ( $this->lastTime - $this->timeOfCheckpoint > $this->maxTimeAllowed ) ) {
+ return True;
+ }
+ return False;
+ }
+ function finalOptionCheck() {
+ if ( ( $this->checkpointFiles && ! $this->maxTimeAllowed ) ||
+ ( $this->maxTimeAllowed && !$this->checkpointFiles ) ) {
+ throw new MWException("Options checkpointfile and maxtime must be specified together.\n");
+ }
+ foreach ($this->checkpointFiles as $checkpointFile) {
+ $count = substr_count ( $checkpointFile,"%s" );
+ if ( $count != 2 ) {
+ throw new MWException("Option checkpointfile must contain two '%s' for substitution of first and last pageids, count is $count instead, file is $checkpointFile.\n");
+ }
+ }
- while ( $reader->read() ) {
- $tag = $reader->name;
- $type = $reader->nodeType;
+ if ( $this->checkpointFiles ) {
+ $filenameList = (array)$this->egress->getFilenames();
+ if ( count( $filenameList ) != count( $this->checkpointFiles ) ) {
+ throw new MWException("One checkpointfile must be specified for each output option, if maxtime is used.\n");
+ }
+ }
+ }
- if ( $type == XmlReader::END_ELEMENT ) {
- $writer->endElement();
+ function readDump( $input ) {
+ $this->buffer = "";
+ $this->openElement = false;
+ $this->atStart = true;
+ $this->state = "";
+ $this->lastName = "";
+ $this->thisPage = 0;
+ $this->thisRev = 0;
- if ( $tag == 'revision' ) {
- $this->revCount();
- $this->thisRev = '';
- } elseif ( $tag == 'page' ) {
- $this->reportPage();
- $this->thisPage = '';
- }
- } elseif ( $type == XmlReader::ELEMENT ) {
- $attribs = array();
- if ( $reader->hasAttributes ) {
- for ( $i = 0; $reader->moveToAttributeNo( $i ); $i++ ) {
- $attribs[$reader->name] = $reader->value;
- }
- }
+ $parser = xml_parser_create( "UTF-8" );
+ xml_parser_set_option( $parser, XML_OPTION_CASE_FOLDING, false );
- if ( $reader->isEmptyElement && $tag == 'text' && isset( $attribs['id'] ) ) {
- $writer->startElement( 'text' );
- $writer->writeAttribute( 'xml:space', 'preserve' );
- $text = $this->getText( $attribs['id'] );
- if ( strlen( $text ) ) {
- $writer->text( $text );
- }
- $writer->endElement();
- } else {
- $writer->startElement( $tag );
- foreach( $attribs as $name => $val ) {
- $writer->writeAttribute( $name, $val );
- }
- if ( $reader->isEmptyElement ) {
- $writer->endElement();
- }
- }
+ xml_set_element_handler( $parser, array( &$this, 'startElement' ), array( &$this, 'endElement' ) );
+ xml_set_character_data_handler( $parser, array( &$this, 'characterData' ) );
- $lastName = $tag;
- if ( $tag == 'revision' ) {
- $state = 'revision';
- } elseif ( $tag == 'page' ) {
- $state = 'page';
+ $offset = 0; // for context extraction on error reporting
+ $bufferSize = 512 * 1024;
+ do {
+ if ($this->checkIfTimeExceeded()) {
+ $this->setTimeExceeded();
+ }
+ $chunk = fread( $input, $bufferSize );
+ if ( !xml_parse( $parser, $chunk, feof( $input ) ) ) {
+ wfDebug( "TextDumpPass::readDump encountered XML parsing error\n" );
+ return new WikiXmlError( $parser, 'XML import parse failure', $chunk, $offset );
+ }
+ $offset += strlen( $chunk );
+ } while ( $chunk !== false && !feof( $input ) );
+ if ($this->maxTimeAllowed) {
+ $filenameList = (array)$this->egress->getFilenames();
+ // we wrote some stuff after last checkpoint that needs renamed
+ if (file_exists($filenameList[0])) {
+ $newFilenames = array();
+ # we might have just written the header and footer and had no
+ # pages or revisions written... perhaps they were all deleted
+ # there's no pageID 0 so we use that. the caller is responsible
+ # for deciding what to do with a file containing only the
+ # siteinfo information and the mw tags.
+ if (! $this->firstPageWritten) {
+ $firstPageID = str_pad(0,9,"0",STR_PAD_LEFT);
+ $lastPageID = str_pad(0,9,"0",STR_PAD_LEFT);
}
- } elseif ( $type == XMLReader::SIGNIFICANT_WHITESPACE || $type = XMLReader::TEXT ) {
- if ( $lastName == 'id' ) {
- if ( $state == 'revision' ) {
- $this->thisRev .= $reader->value;
- } elseif ( $state == 'page' ) {
- $this->thisPage .= $reader->value;
- }
+ else {
+ $firstPageID = str_pad($this->firstPageWritten,9,"0",STR_PAD_LEFT);
+ $lastPageID = str_pad($this->lastPageWritten,9,"0",STR_PAD_LEFT);
+ }
+ for ( $i = 0; $i < count( $filenameList ); $i++ ) {
+ $checkpointNameFilledIn = sprintf( $this->checkpointFiles[$i], $firstPageID, $lastPageID );
+ $fileinfo = pathinfo($filenameList[$i]);
+ $newFilenames[] = $fileinfo['dirname'] . '/' . $checkpointNameFilledIn;
}
- $writer->text( $reader->value );
+ $this->egress->closeAndRename( $newFilenames );
}
- $this->sink->write( $writer->outputMemory() );
}
+ xml_parser_free( $parser );
+
+ return true;
}
function getText( $id ) {
@@ -240,6 +332,7 @@ class TextPassDumper extends BackupDumper {
}
private function doGetText( $id ) {
+
$id = intval( $id );
$this->failures = 0;
$ex = new MWException( "Graceful storage failure" );
@@ -334,12 +427,23 @@ class TextPassDumper extends BackupDumper {
function openSpawn() {
global $IP;
- $cmd = implode( " ",
- array_map( 'wfEscapeShellArg',
- array(
- $this->php,
- "$IP/maintenance/fetchText.php",
- '--wiki', wfWikiID() ) ) );
+ if ( file_exists( "$IP/../multiversion/MWScript.php" ) ) {
+ $cmd = implode( " ",
+ array_map( 'wfEscapeShellArg',
+ array(
+ $this->php,
+ "$IP/../multiversion/MWScript.php",
+ "fetchText.php",
+ '--wiki', wfWikiID() ) ) );
+ }
+ else {
+ $cmd = implode( " ",
+ array_map( 'wfEscapeShellArg',
+ array(
+ $this->php,
+ "$IP/maintenance/fetchText.php",
+ '--wiki', wfWikiID() ) ) );
+ }
$spec = array(
0 => array( "pipe", "r" ),
1 => array( "pipe", "w" ),
@@ -427,13 +531,129 @@ class TextPassDumper extends BackupDumper {
$normalized = $wgContLang->normalize( $stripped );
return $normalized;
}
+
+ function startElement( $parser, $name, $attribs ) {
+ $this->checkpointJustWritten = false;
+
+ $this->clearOpenElement( null );
+ $this->lastName = $name;
+
+ if ( $name == 'revision' ) {
+ $this->state = $name;
+ $this->egress->writeOpenPage( null, $this->buffer );
+ $this->buffer = "";
+ } elseif ( $name == 'page' ) {
+ $this->state = $name;
+ if ( $this->atStart ) {
+ $this->egress->writeOpenStream( $this->buffer );
+ $this->buffer = "";
+ $this->atStart = false;
+ }
+ }
+
+ if ( $name == "text" && isset( $attribs['id'] ) ) {
+ $text = $this->getText( $attribs['id'] );
+ $this->openElement = array( $name, array( 'xml:space' => 'preserve' ) );
+ if ( strlen( $text ) > 0 ) {
+ $this->characterData( $parser, $text );
+ }
+ } else {
+ $this->openElement = array( $name, $attribs );
+ }
+ }
+
+ function endElement( $parser, $name ) {
+ $this->checkpointJustWritten = false;
+
+ if ( $this->openElement ) {
+ $this->clearOpenElement( "" );
+ } else {
+ $this->buffer .= "</$name>";
+ }
+
+ if ( $name == 'revision' ) {
+ $this->egress->writeRevision( null, $this->buffer );
+ $this->buffer = "";
+ $this->thisRev = "";
+ } elseif ( $name == 'page' ) {
+ if (! $this->firstPageWritten) {
+ $this->firstPageWritten = trim($this->thisPage);
+ }
+ $this->lastPageWritten = trim($this->thisPage);
+ if ($this->timeExceeded) {
+ $this->egress->writeClosePage( $this->buffer );
+ // nasty hack, we can't just write the chardata after the
+ // page tag, it will include leading blanks from the next line
+ $this->egress->sink->write("\n");
+
+ $this->buffer = $this->xmlwriterobj->closeStream();
+ $this->egress->writeCloseStream( $this->buffer );
+
+ $this->buffer = "";
+ $this->thisPage = "";
+ // this could be more than one file if we had more than one output arg
+ $checkpointFilenames = array();
+ $filenameList = (array)$this->egress->getFilenames();
+ $newFilenames = array();
+ $firstPageID = str_pad($this->firstPageWritten,9,"0",STR_PAD_LEFT);
+ $lastPageID = str_pad($this->lastPageWritten,9,"0",STR_PAD_LEFT);
+ for ( $i = 0; $i < count( $filenameList ); $i++ ) {
+ $checkpointNameFilledIn = sprintf( $this->checkpointFiles[$i], $firstPageID, $lastPageID );
+ $fileinfo = pathinfo($filenameList[$i]);
+ $newFilenames[] = $fileinfo['dirname'] . '/' . $checkpointNameFilledIn;
+ }
+ $this->egress->closeRenameAndReopen( $newFilenames );
+ $this->buffer = $this->xmlwriterobj->openStream();
+ $this->timeExceeded = false;
+ $this->timeOfCheckpoint = $this->lastTime;
+ $this->firstPageWritten = false;
+ $this->checkpointJustWritten = true;
+ }
+ else {
+ $this->egress->writeClosePage( $this->buffer );
+ $this->buffer = "";
+ $this->thisPage = "";
+ }
+
+ } elseif ( $name == 'mediawiki' ) {
+ $this->egress->writeCloseStream( $this->buffer );
+ $this->buffer = "";
+ }
+ }
+
+ function characterData( $parser, $data ) {
+ $this->clearOpenElement( null );
+ if ( $this->lastName == "id" ) {
+ if ( $this->state == "revision" ) {
+ $this->thisRev .= $data;
+ } elseif ( $this->state == "page" ) {
+ $this->thisPage .= $data;
+ }
+ }
+ // have to skip the newline left over from closepagetag line of
+ // end of checkpoint files. nasty hack!!
+ if ($this->checkpointJustWritten) {
+ if ($data[0] == "\n") {
+ $data = substr($data,1);
+ }
+ $this->checkpointJustWritten = false;
+ }
+ $this->buffer .= htmlspecialchars( $data );
+ }
+
+ function clearOpenElement( $style ) {
+ if ( $this->openElement ) {
+ $this->buffer .= Xml::element( $this->openElement[0], $this->openElement[1], $style );
+ $this->openElement = false;
+ }
+ }
}
$dumper = new TextPassDumper( $argv );
if ( !isset( $options['help'] ) ) {
- $dumper->dump( WikiExporter::FULL );
+ $dumper->dump( true );
} else {
$dumper->progress( <<<ENDS
This script postprocesses XML dumps from dumpBackup.php to add
@@ -447,17 +667,20 @@ Options:
--stub=<type>:<file> To load a compressed stub dump instead of stdin
--prefetch=<type>:<file> Use a prior dump file as a text source, to save
pressure on the database.
+ (Requires the XMLReader extension)
+ --maxtime=<minutes> Write out checkpoint file after this many minutes (writing
+ out complete page, closing xml file properly, and opening new one
+ with header). This option requires the checkpointfile option.
+ --checkpointfile=<filenamepattern> Use this string for checkpoint filenames,
+ substituting first pageid written for the first %s (required) and the
+ last pageid written for the second %s if it exists.
--quiet Don't dump status reports to stderr.
--report=n Report position and speed after every n pages processed.
(Default: 100)
--server=h Force reading from MySQL server h
- --output=<type>:<file> Write to a file instead of stdout
- <type>s: file, gzip, bzip2, 7zip
--current Base ETA on number of pages in database instead of all revisions
--spawn Spawn a subprocess for loading text records
--help Display this help message
ENDS
);
}
-
-
diff --git a/maintenance/dumpUploads.php b/maintenance/dumpUploads.php
index 74c0cb0b..919bb4df 100644
--- a/maintenance/dumpUploads.php
+++ b/maintenance/dumpUploads.php
@@ -104,7 +104,7 @@ By default, outputs relative paths against the parent directory of \$wgUploadDir
function outputItem( $name, $shared ) {
$file = wfFindFile( $name );
if ( $file && $this->filterItem( $file, $shared ) ) {
- $filename = $file->getFullPath();
+ $filename = $file->getPath();
$rel = wfRelativePath( $filename, $this->mBasePath );
$this->output( "$rel\n" );
} else {
diff --git a/maintenance/edit.php b/maintenance/edit.php
index 40623afb..fb462a40 100644
--- a/maintenance/edit.php
+++ b/maintenance/edit.php
@@ -26,23 +26,23 @@ class EditCLI extends Maintenance {
public function __construct() {
parent::__construct();
$this->mDescription = "Edit an article from the command line, text is from stdin";
- $this->addOption( 'u', 'Username', false, true );
- $this->addOption( 's', 'Edit summary', false, true );
- $this->addOption( 'm', 'Minor edit' );
- $this->addOption( 'b', 'Bot edit' );
- $this->addOption( 'a', 'Enable autosummary' );
- $this->addOption( 'no-rc', 'Do not show the change in recent changes' );
+ $this->addOption( 'user', 'Username', false, true, 'u' );
+ $this->addOption( 'summary', 'Edit summary', false, true, 's' );
+ $this->addOption( 'minor', 'Minor edit', false, false, 'm' );
+ $this->addOption( 'bot', 'Bot edit', false, false, 'b' );
+ $this->addOption( 'autosummary', 'Enable autosummary', false, false, 'a' );
+ $this->addOption( 'no-rc', 'Do not show the change in recent changes', false, false, 'r' );
$this->addArg( 'title', 'Title of article to edit' );
}
public function execute() {
global $wgUser, $wgTitle;
- $userName = $this->getOption( 'u', 'Maintenance script' );
- $summary = $this->getOption( 's', '' );
- $minor = $this->hasOption( 'm' );
- $bot = $this->hasOption( 'b' );
- $autoSummary = $this->hasOption( 'a' );
+ $userName = $this->getOption( 'user', 'Maintenance script' );
+ $summary = $this->getOption( 'summary', '' );
+ $minor = $this->hasOption( 'minor' );
+ $bot = $this->hasOption( 'bot' );
+ $autoSummary = $this->hasOption( 'autosummary' );
$noRC = $this->hasOption( 'no-rc' );
$wgUser = User::newFromName( $userName );
diff --git a/maintenance/eval.php b/maintenance/eval.php
index 3cc1d16a..33c9a5d7 100644
--- a/maintenance/eval.php
+++ b/maintenance/eval.php
@@ -12,6 +12,21 @@
* To get decent line editing behavior, you should compile PHP with support
* for GNU readline (pass --with-readline to configure).
*
+ * 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
*/
@@ -30,8 +45,11 @@ if ( isset( $options['d'] ) ) {
}
if ( $d > 1 ) {
$lb = wfGetLB();
- foreach ( $lb->mServers as $i => $server ) {
- $lb->mServers[$i]['flags'] |= DBO_DEBUG;
+ $serverCount = $lb->getServerCount();
+ for ( $i = 0; $i < $serverCount; $i++ ) {
+ $server = $lb->getServerInfo( $i );
+ $server['flags'] |= DBO_DEBUG;
+ $lb->setServerInfo( $i, $server );
}
}
if ( $d > 2 ) {
@@ -59,7 +77,7 @@ while ( ( $line = Maintenance::readconsole() ) !== false ) {
readline_write_history( $historyFile );
}
$val = eval( $line . ";" );
- if ( is_null( $val ) ) {
+ if ( wfIsHipHop() || is_null( $val ) ) {
echo "\n";
} elseif ( is_string( $val ) || is_numeric( $val ) ) {
echo "$val\n";
diff --git a/maintenance/fetchText.php b/maintenance/fetchText.php
index ea56535d..067ffe45 100644
--- a/maintenance/fetchText.php
+++ b/maintenance/fetchText.php
@@ -1,6 +1,7 @@
<?php
/**
* Communications protocol...
+ * This is used by dumpTextPass.php when the --spawn option is present.
*
* 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
@@ -62,7 +63,7 @@ class FetchText extends Maintenance {
/**
* May throw a database error if, say, the server dies during query.
- * @param $db Database object
+ * @param $db DatabaseBase object
* @param $id int The old_id
* @return String
*/
diff --git a/maintenance/findhooks.php b/maintenance/findHooks.php
index 04a5faef..5996fd3a 100644
--- a/maintenance/findhooks.php
+++ b/maintenance/findHooks.php
@@ -39,8 +39,8 @@ require_once( dirname( __FILE__ ) . '/Maintenance.php' );
class FindHooks extends Maintenance {
public function __construct() {
parent::__construct();
- $this->mDescription = "Find hooks that are undocumented, missing, or just plain wrong";
- $this->addOption( 'online', 'Check against mediawiki.org hook documentation' );
+ $this->mDescription = 'Find hooks that are undocumented, missing, or just plain wrong';
+ $this->addOption( 'online', 'Check against MediaWiki.org hook documentation' );
}
public function getDbType() {
@@ -56,11 +56,15 @@ class FindHooks extends Maintenance {
$pathinc = array(
$IP . '/',
$IP . '/includes/',
+ $IP . '/includes/actions/',
$IP . '/includes/api/',
+ $IP . '/includes/cache/',
$IP . '/includes/db/',
$IP . '/includes/diff/',
$IP . '/includes/filerepo/',
$IP . '/includes/installer/',
+ $IP . '/includes/interwiki/',
+ $IP . '/includes/media/',
$IP . '/includes/parser/',
$IP . '/includes/resourceloader/',
$IP . '/includes/revisiondelete/',
@@ -69,8 +73,9 @@ class FindHooks extends Maintenance {
$IP . '/includes/upload/',
$IP . '/languages/',
$IP . '/maintenance/',
- $IP . '/maintenance/tests/',
- $IP . '/maintenance/tests/parser/',
+ $IP . '/tests/',
+ $IP . '/tests/parser/',
+ $IP . '/tests/phpunit/suites/',
$IP . '/skins/',
);
@@ -90,11 +95,13 @@ class FindHooks extends Maintenance {
$this->printArray( 'Unclear hook calls', $bad );
if ( count( $todo ) == 0 && count( $deprecated ) == 0 && count( $bad ) == 0 )
+ {
$this->output( "Looks good!\n" );
+ }
}
/**
- * Get the hook documentation, either locally or from mediawiki.org
+ * Get the hook documentation, either locally or from MediaWiki.org
* @return array of documented hooks
*/
private function getHooksFromDoc( $doc ) {
@@ -138,7 +145,7 @@ class FindHooks extends Maintenance {
private function getHooksFromFile( $file ) {
$content = file_get_contents( $file );
$m = array();
- preg_match_all( '/wfRunHooks\(\s*([\'"])(.*?)\1/', $content, $m );
+ preg_match_all( '/(?:wfRunHooks|Hooks\:\:run)\(\s*([\'"])(.*?)\1/', $content, $m );
return $m[2];
}
@@ -200,15 +207,19 @@ class FindHooks extends Maintenance {
/**
* Nicely output the array
- * @param $msg A message to show before the value
- * @param $arr An array
- * @param $sort Boolean : wheter to sort the array (Default: true)
+ * @param $msg String: a message to show before the value
+ * @param $arr Array: an array
+ * @param $sort Boolean: whether to sort the array (Default: true)
*/
private function printArray( $msg, $arr, $sort = true ) {
- if ( $sort ) asort( $arr );
- foreach ( $arr as $v ) $this->output( "$msg: $v\n" );
+ if ( $sort ) {
+ asort( $arr );
+ }
+ foreach ( $arr as $v ) {
+ $this->output( "$msg: $v\n" );
+ }
}
}
-$maintClass = "FindHooks";
+$maintClass = 'FindHooks';
require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/fixDoubleRedirects.php b/maintenance/fixDoubleRedirects.php
new file mode 100644
index 00000000..c1d14dd8
--- /dev/null
+++ b/maintenance/fixDoubleRedirects.php
@@ -0,0 +1,120 @@
+<?php
+/**
+ * Script to fix double redirects.
+ *
+ * Copyright (C) 2011 Ilmari Karonen <nospam@vyznev.net>
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Ilmari Karonen <nospam@vyznev.net>
+ * @ingroup Maintenance
+ */
+
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+
+class FixDoubleRedirects extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Script to fix double redirects";
+ $this->addOption( 'async', 'Don\'t fix anything directly, just queue the jobs' );
+ $this->addOption( 'title', 'Fix only redirects pointing to this page', false, true );
+ $this->addOption( 'dry-run', 'Perform a dry run, fix nothing' );
+ }
+
+ public function execute() {
+ $async = $this->getOption( 'async', false );
+ $dryrun = $this->getOption( 'dry-run', false );
+ $title = $this->getOption( 'title' );
+
+ if ( isset( $title ) ) {
+ $title = Title::newFromText( $title );
+ if ( !$title || !$title->isRedirect() ) {
+ $this->error( $title->getPrefixedText() . " is not a redirect!\n", true );
+ }
+ }
+
+ $dbr = wfGetDB( DB_SLAVE );
+
+ $tables = array( 'redirect', 'pa' => 'page', 'pb' => 'page' );
+ $fields = array(
+ 'pa.page_namespace AS pa_namespace',
+ 'pa.page_title AS pa_title',
+ 'pb.page_namespace AS pb_namespace',
+ 'pb.page_title AS pb_title',
+ );
+ $conds = array(
+ 'rd_from = pa.page_id',
+ 'rd_namespace = pb.page_namespace',
+ 'rd_title = pb.page_title',
+ 'pb.page_is_redirect' => 1,
+ );
+
+ if ( isset( $title ) ) {
+ $conds['pb.page_namespace'] = $title->getNamespace();
+ $conds['pb.page_title'] = $title->getDBkey();
+ }
+ // TODO: support batch querying
+
+ $res = $dbr->select( $tables, $fields, $conds, __METHOD__ );
+
+ if ( !$res->numRows() ) {
+ $this->output( "No double redirects found.\n" );
+ return;
+ }
+
+ $jobs = array();
+ $n = 0;
+ foreach ( $res as $row ) {
+ $titleA = Title::makeTitle( $row->pa_namespace, $row->pa_title );
+ $titleB = Title::makeTitle( $row->pb_namespace, $row->pb_title );
+
+ $job = new DoubleRedirectJob( $titleA, array( 'reason' => 'maintenance', 'redirTitle' => $titleB->getPrefixedDBkey() ) );
+
+ if ( !$async ) {
+ $success = ( $dryrun ? true : $job->run() );
+ if ( !$success ) {
+ $this->error( "Error fixing " . $titleA->getPrefixedText() . ": " . $job->getLastError() . "\n" );
+ }
+ } else {
+ $jobs[] = $job;
+ // @todo FIXME: Hardcoded constant 10000 copied from DoubleRedirectJob class
+ if ( count( $jobs ) > 10000 ) {
+ $this->queueJobs( $jobs, $dryrun );
+ $jobs = array();
+ }
+ }
+
+ if ( ++$n % 100 == 0 ) {
+ $this->output( "$n...\n" );
+ }
+ }
+
+ if ( count( $jobs ) ) {
+ $this->queueJobs( $jobs, $dryrun );
+ }
+ $this->output( "$n double redirects processed.\n" );
+ }
+
+ protected function queueJobs( $jobs, $dryrun = false ) {
+ $this->output( "Queuing batch of " . count( $jobs ) . " double redirects.\n" );
+ Job::batchInsert( $dryrun ? array() : $jobs );
+ }
+}
+
+$maintClass = "FixDoubleRedirects";
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/fixExtLinksProtocolRelative.php b/maintenance/fixExtLinksProtocolRelative.php
new file mode 100644
index 00000000..1a7025ad
--- /dev/null
+++ b/maintenance/fixExtLinksProtocolRelative.php
@@ -0,0 +1,81 @@
+<?php
+/**
+ * Fixes any entries for protocol-relative URLs in the externallinks table,
+ * replacing each protocol-relative entry with two entries, one for http
+ * and one for https.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+
+class FixExtLinksProtocolRelative extends LoggedUpdateMaintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Fixes any entries in the externallinks table containing protocol-relative URLs";
+ }
+
+ protected function getUpdateKey() {
+ return 'fix protocol-relative URLs in externallinks';
+ }
+
+ protected function updateSkippedMessage() {
+ return 'protocol-relative URLs in externallinks table already fixed.';
+ }
+
+ protected function doDBUpdates() {
+ $db = wfGetDB( DB_MASTER );
+ if ( !$db->tableExists( 'externallinks' ) ) {
+ $this->error( "externallinks table does not exist" );
+ return false;
+ }
+ $this->output( "Fixing protocol-relative entries in the externallinks table...\n" );
+ $res = $db->select( 'externallinks', array( 'el_from', 'el_to', 'el_index' ),
+ array( 'el_index' . $db->buildLike( '//', $db->anyString() ) ),
+ __METHOD__
+ );
+ $count = 0;
+ foreach ( $res as $row ) {
+ $count++;
+ if ( $count % 100 == 0 ) {
+ $this->output( $count );
+ wfWaitForSlaves();
+ }
+ $db->insert( 'externallinks',
+ array(
+ array(
+ 'el_from' => $row->el_from,
+ 'el_to' => $row->el_to,
+ 'el_index' => "http:{$row->el_index}",
+ ),
+ array(
+ 'el_from' => $row->el_from,
+ 'el_to' => $row->el_to,
+ 'el_index' => "https:{$row->el_index}",
+ )
+ ), __METHOD__, array( 'IGNORE' )
+ );
+ $db->delete( 'externallinks', array( 'el_index' => $row->el_index, 'el_from' => $row->el_from, 'el_to' => $row->el_to ), __METHOD__ );
+ }
+ $this->output( "Done, $count rows updated.\n" );
+ return true;
+ }
+}
+
+$maintClass = "FixExtLinksProtocolRelative";
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/fixSlaveDesync.php b/maintenance/fixSlaveDesync.php
index fe892944..3c6888ae 100644
--- a/maintenance/fixSlaveDesync.php
+++ b/maintenance/fixSlaveDesync.php
@@ -124,7 +124,7 @@ class FixSlaveDesync extends Maintenance {
$masterIDs[] = $row->rev_id;
}
- $res = $db->select( 'revision', array( 'rev_id' ), array( 'rev_page' => $pageID ), __METHOD__ );
+ $res = $dbw->select( 'revision', array( 'rev_id' ), array( 'rev_page' => $pageID ), __METHOD__ );
$slaveIDs = array();
foreach ( $res as $row ) {
$slaveIDs[] = $row->rev_id;
@@ -133,7 +133,7 @@ class FixSlaveDesync extends Maintenance {
$missingIDs = array_diff( $slaveIDs, $masterIDs );
if ( count( $missingIDs ) ) {
$this->output( "Found " . count( $missingIDs ) . " lost in master, copying from slave... " );
- $dbFrom = $db;
+ $dbFrom = $dbw;
$found = true;
$toMaster = true;
} else {
diff --git a/maintenance/formatInstallDoc.php b/maintenance/formatInstallDoc.php
new file mode 100644
index 00000000..9acc16a7
--- /dev/null
+++ b/maintenance/formatInstallDoc.php
@@ -0,0 +1,54 @@
+<?php
+
+require_once( dirname( __FILE__ ) .'/Maintenance.php' );
+
+class MaintenanceFormatInstallDoc extends Maintenance {
+ function __construct() {
+ parent::__construct();
+ $this->addArg( 'path', 'The file name to format', false );
+ $this->addOption( 'outfile', 'The output file name', false, true );
+ $this->addOption( 'html', 'Use HTML output format. By default, wikitext is used.' );
+ }
+
+ function execute() {
+ if ( $this->hasArg( 0 ) ) {
+ $fileName = $this->getArg( 0 );
+ $inFile = fopen( $fileName, 'r' );
+ if ( !$inFile ) {
+ $this->error( "Unable to open input file \"$fileName\"" );
+ exit( 1 );
+ }
+ } else {
+ $inFile = STDIN;
+ }
+
+ if ( $this->hasOption( 'outfile' ) ) {
+ $fileName = $this->getOption( 'outfile' );
+ $outFile = fopen( $fileName, 'w' );
+ if ( !$outFile ) {
+ $this->error( "Unable to open output file \"$fileName\"" );
+ exit( 1 );
+ }
+ } else {
+ $outFile = STDOUT;
+ }
+
+ $inText = stream_get_contents( $inFile );
+ $outText = InstallDocFormatter::format( $inText );
+
+ if ( $this->hasOption( 'html' ) ) {
+ global $wgParser;
+ $opt = new ParserOptions;
+ $title = Title::newFromText( 'Text file' );
+ $out = $wgParser->parse( $outText, $title, $opt );
+ $outText = "<html><body>\n" . $out->getText() . "\n</body></html>\n";
+ }
+
+ fwrite( $outFile, $outText );
+ }
+}
+
+$maintClass = 'MaintenanceFormatInstallDoc';
+require_once( RUN_MAINTENANCE_IF_MAIN );
+
+
diff --git a/maintenance/fuzz-tester.php b/maintenance/fuzz-tester.php
index a78522cd..18af4de4 100644
--- a/maintenance/fuzz-tester.php
+++ b/maintenance/fuzz-tester.php
@@ -1,10 +1,28 @@
<?php
/**
-* @file
-* @ingroup Maintenance
-* @author Nick Jenkins ( http://nickj.org/ ).
-* @copyright 2006 Nick Jenkins
-* @licence GNU General Public Licence 2.0
+ * Performs fuzz-style testing of MediaWiki's parser and forms.
+ *
+ * Copyright © 2006 Nick Jenkins
+ *
+ * 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
+ * @author Nick Jenkins ( http://nickj.org/ ).
+
Started: 18 May 2006.
@@ -798,6 +816,13 @@ class wikiFuzz {
}
}
+ /**
+ * Returns the matched character slash-escaped as in a C string
+ * Helper for makeTitleSafe callback
+ */
+ static private function stringEscape( $matches ) {
+ return sprintf( "\\x%02x", ord( $matches[1] ) );
+ }
/**
** Strips out the stuff that Mediawiki balks at in a page's title.
@@ -806,13 +831,7 @@ class wikiFuzz {
static public function makeTitleSafe( $str ) {
$legalTitleChars = " %!\"$&'()*,\\-.\\/0-9:;=?@A-Z\\\\^_`a-z~\\x80-\\xFF";
return preg_replace_callback(
- "/([^$legalTitleChars])/",
- create_function(
- // single quotes are essential here,
- // or alternative escape all $ as \$
- '$matches',
- 'return sprintf( "\\x%02x", ord( $matches[1] ) );'
- ),
+ "/([^$legalTitleChars])/", 'wikiFuzz::stringEscape',
$str );
}
@@ -1027,18 +1046,18 @@ class prefixindexTest extends pageTest {
$this->params = array (
"title" => "Special:Prefixindex",
- "namespace" => wikiFuzz::randnum( -10, 101 ),
+ "namespace" => wikiFuzz::randnum( 101, -10 ),
"Go" => wikiFuzz::makeFuzz( 2 )
);
// sometimes we want 'prefix', sometimes we want 'from', and sometimes we want nothing.
if ( wikiFuzz::randnum( 3 ) == 0 ) {
$this->params["prefix"] = wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+++--+1",
- wikiFuzz::randnum( -10, 8134 ), wikiFuzz::makeFuzz( 2 ) ) );
+ wikiFuzz::randnum( 8134, -10 ), wikiFuzz::makeFuzz( 2 ) ) );
}
if ( wikiFuzz::randnum( 3 ) == 0 ) {
$this->params["from"] = wikiFuzz::chooseInput( array( "-1", "-----'--------0", "+++--+1",
- wikiFuzz::randnum( -10, 8134 ), wikiFuzz::makeFuzz( 2 ) ) );
+ wikiFuzz::randnum( 8134, -10 ), wikiFuzz::makeFuzz( 2 ) ) );
}
}
}
@@ -1350,7 +1369,7 @@ class viewPageTest extends pageTest {
// Tidy does not know how to valid atom or rss, so exclude from testing for the time being.
if ( $this->params["feed"] == "atom" ) { unset( $this->params["feed"] ); }
- else if ( $this->params["feed"] == "rss" ) { unset( $this->params["feed"] ); }
+ elseif ( $this->params["feed"] == "rss" ) { unset( $this->params["feed"] ); }
// Raw pages cannot really be validated
if ( $this->params["action"] == "raw" ) unset( $this->params["action"] );
@@ -1384,7 +1403,7 @@ class specialAllmessagesTest extends pageTest {
/**
** a page test for "Special:Newpages".
*/
-class specialNewpages extends pageTest {
+class specialNewpagesPageTest extends pageTest {
function __construct() {
$this->pagePath = "index.php?title=Special:Newpages";
@@ -1397,7 +1416,7 @@ class specialNewpages extends pageTest {
// Tidy does not know how to valid atom or rss, so exclude from testing for the time being.
if ( $this->params["feed"] == "atom" ) { unset( $this->params["feed"] ); }
- else if ( $this->params["feed"] == "rss" ) { unset( $this->params["feed"] ); }
+ elseif ( $this->params["feed"] == "rss" ) { unset( $this->params["feed"] ); }
}
}
@@ -1470,7 +1489,7 @@ class specialBlockmeTest extends pageTest {
// sometimes we specify "ip", and sometimes we don't.
if ( wikiFuzz::randnum( 1 ) == 0 ) {
- $this->params["ip"] = wikiFuzz::chooseInput( array( "10.12.41.213", wikiFuzz::randnum( -10, 8134 ), wikiFuzz::makeFuzz( 2 ) ) );
+ $this->params["ip"] = wikiFuzz::chooseInput( array( "10.12.41.213", wikiFuzz::randnum( 8134, -10 ), wikiFuzz::makeFuzz( 2 ) ) );
}
}
}
@@ -1512,7 +1531,7 @@ class specialMovePage extends pageTest {
/**
** a page test for "Special:Undelete"
*/
-class specialUndelete extends pageTest {
+class specialUndeletePageTest extends pageTest {
function __construct() {
$this->pagePath = "index.php?title=Special:Undelete";
@@ -1539,7 +1558,7 @@ class specialUndelete extends pageTest {
/**
** a page test for "Special:Unlockdb"
*/
-class specialUnlockdb extends pageTest {
+class specialUnlockdbPageTest extends pageTest {
function __construct() {
$this->pagePath = "index.php?title=Special:Unlockdb";
@@ -1560,7 +1579,7 @@ class specialUnlockdb extends pageTest {
/**
** a page test for "Special:Lockdb"
*/
-class specialLockdb extends pageTest {
+class specialLockdbPageTest extends pageTest {
function __construct() {
$this->pagePath = "index.php?title=Special:Lockdb";
@@ -1713,7 +1732,7 @@ class pageDeletion extends pageTest {
/**
** a test for Revision Deletion.
*/
-class specialRevisionDelete extends pageTest {
+class specialRevisionDeletePageTest extends pageTest {
function __construct() {
$this->pagePath = "index.php?title=Special:Revisiondelete";
@@ -1744,7 +1763,7 @@ class specialRevisionDelete extends pageTest {
/**
** a test for Special:Import.
*/
-class specialImport extends pageTest {
+class specialImportPageTest extends pageTest {
function __construct() {
$this->pagePath = "index.php?title=Special:Import";
@@ -1842,7 +1861,7 @@ class profileInfo extends pageTest {
/**
** a test for Special:Cite (extension Special page).
*/
-class specialCite extends pageTest {
+class specialCitePageTest extends pageTest {
function __construct() {
$this->pagePath = "index.php?title=Special:Cite";
@@ -1861,7 +1880,7 @@ class specialCite extends pageTest {
/**
** a test for Special:Filepath (extension Special page).
*/
-class specialFilepath extends pageTest {
+class specialFilepathPageTest extends pageTest {
function __construct() {
$this->pagePath = "index.php?title=Special:Filepath";
@@ -1921,7 +1940,7 @@ class specialMakesysop extends pageTest {
/**
** a test for Special:Renameuser (extension Special page).
*/
-class specialRenameuser extends pageTest {
+class specialRenameuserPageTest extends pageTest {
function __construct() {
$this->pagePath = "index.php?title=Special:Renameuser";
@@ -2044,18 +2063,18 @@ class api extends pageTest {
// API watchlist feed mode.
private static function feedwatchlistMode() {
- // FIXME: add "wikiFuzz::makeFuzz(2)" as possible value below?
+ // @todo FIXME: Add "wikiFuzz::makeFuzz(2)" as possible value below?
return array ( "feedformat" => wikiFuzz::chooseInput( array( "rss", "atom" ) ) );
}
// API query mode.
private static function queryMode() {
- // FIXME: add "wikiFuzz::makeFuzz(2)" as possible params for the elements below?
+ // @todo FIXME: Add "wikiFuzz::makeFuzz(2)" as possible params for the elements below?
// Suspect this will stuff up the tests more, but need to check.
$params = array (
- // FIXME: More titles.
+ // @todo FIXME: More titles.
"titles" => wikiFuzz::chooseInput( array( "Main Page" ) ),
- // FIXME: More pageids.
+ // @todo FIXME: More pageids.
"pageids" => 1,
"prop" => wikiFuzz::chooseInput( array( "info", "revisions", "watchlist" ) ),
"list" => wikiFuzz::chooseInput( array( "allpages", "logevents", "watchlist", "usercontribs", "recentchanges", "backlinks", "embeddedin", "imagelinks" ) ),
@@ -2149,7 +2168,7 @@ class api extends pageTest {
$this->params["action"] = $action;
// Set the cookie:
- // FIXME: need to get this cookie dynamically set, rather than hard-coded.
+ // @todo FIXME: Need to get this cookie dynamically set, rather than hard-coded.
$this->cookie = "wikidbUserID=10001; wikidbUserName=Test; wikidb_session=178df0fe68c75834643af65dec9ec98a; wikidbToken=1adc6753d62c44aec950c024d7ae0540";
// Output format
@@ -2173,7 +2192,7 @@ class GeSHi_Test extends pageTest {
return "<source lang=\"" . $this->getLang() . "\" "
. ( wikiFuzz::randnum( 2 ) == 0 ? "line " : "" )
. ( wikiFuzz::randnum( 2 ) == 0 ? "strict " : "" )
- . "start=" . wikiFuzz::chooseInput( array( wikiFuzz::randnum( -6000, 6000 ), wikiFuzz::makeFuzz( 2 ) ) )
+ . "start=" . wikiFuzz::chooseInput( array( wikiFuzz::randnum( 6000, -6000 ), wikiFuzz::makeFuzz( 2 ) ) )
. ">"
. wikiFuzz::makeFuzz( 2 )
. "</source>";
@@ -2238,31 +2257,31 @@ function selectPageTest( $count ) {
case 15: return new contributionsTest();
case 16: return new viewPageTest();
case 17: return new specialAllmessagesTest();
- case 18: return new specialNewpages();
+ case 18: return new specialNewpagesPageTest();
case 19: return new searchTest();
case 20: return new redirectTest();
case 21: return new confirmEmail();
case 22: return new watchlistTest();
case 23: return new specialBlockmeTest();
- case 24: return new specialUndelete();
+ case 24: return new specialUndeletePageTest();
case 25: return new specialMovePage();
- case 26: return new specialUnlockdb();
- case 27: return new specialLockdb();
+ case 26: return new specialUnlockdbPageTest();
+ case 27: return new specialLockdbPageTest();
case 28: return new specialUserrights();
case 29: return new pageProtectionForm();
case 30: return new specialBlockip();
case 31: return new imagepageTest();
case 32: return new pageDeletion();
- case 33: return new specialRevisionDelete();
- case 34: return new specialImport();
+ case 33: return new specialRevisionDeletePageTest();
+ case 34: return new specialImportPageTest();
case 35: return new thumbTest();
case 36: return new trackbackTest();
case 37: return new profileInfo();
- case 38: return new specialCite();
- case 39: return new specialFilepath();
+ case 38: return new specialCitePageTest();
+ case 39: return new specialFilepathPageTest();
case 40: return new specialMakebot();
case 41: return new specialMakesysop();
- case 42: return new specialRenameuser();
+ case 42: return new specialRenameuserPageTest();
case 43: return new specialLinksearch();
case 44: return new specialCategoryTree();
case 45: return new api();
@@ -2333,7 +2352,7 @@ function saveTestAsPHP( pageTest $test, $filename ) {
. "\$result=curl_exec(\$ch);\n"
. "curl_close (\$ch);\n"
. "print \$result;\n"
- . "?>\n";
+ . "\n";
saveFile( $str, $filename );
}
@@ -2453,7 +2472,7 @@ function validateHTML( $text ) {
curl_close ( $ch );
- $valid = ( strpos( $result, "Failed validation" ) === false ? true : false );
+ $valid = ( strpos( $result, "Failed validation" ) === false );
return array( $valid, $result );
}
@@ -2490,8 +2509,8 @@ function dbErrorLogged() {
// first time running this function
if ( !isset( $filesize ) ) {
// create log if it does not exist
- if ( !file_exists( DB_ERROR_LOG_FILE ) ) {
- saveFile( "", DB_ERROR_LOG_FILE );
+ if ( DB_ERROR_LOG_FILE && !file_exists( DB_ERROR_LOG_FILE ) ) {
+ saveFile( '', DB_ERROR_LOG_FILE );
}
$filesize = filesize( DB_ERROR_LOG_FILE );
return false;
@@ -2683,7 +2702,7 @@ if ( !is_dir( DIRECTORY ) ) {
mkdir ( DIRECTORY, 0700 );
}
// otherwise, we first retest the things that we have found in previous runs
-else if ( RERUN_OLD_TESTS ) {
+elseif ( RERUN_OLD_TESTS ) {
rerunPreviousTests();
}
@@ -2731,7 +2750,7 @@ for ( $count = 0; true; $count++ ) {
}
saveTest( $test, $testname );
$num_errors += 1;
- } else if ( KEEP_PASSED_TESTS ) {
+ } elseif ( KEEP_PASSED_TESTS ) {
// print current time, with microseconds (matches "strace" format), and the test name.
print " " . date( "H:i:s." ) . substr( current( explode( " ", microtime() ) ), 2 ) . " " . $testname;
saveTest( $test, $testname );
diff --git a/maintenance/gearman/gearmanWorker.php b/maintenance/gearman/gearmanWorker.php
index aea126a7..3ea10081 100644
--- a/maintenance/gearman/gearmanWorker.php
+++ b/maintenance/gearman/gearmanWorker.php
@@ -36,7 +36,7 @@ function wfGearmanMonitor( $idle, $lastJob ) {
$interval = 5;
$now = time();
if ( $now - $lastSleep >= $interval ) {
- wfWaitForSlaves( $interval );
+ wfWaitForSlaves();
$lastSleep = $now;
}
return false;
diff --git a/maintenance/generateSitemap.php b/maintenance/generateSitemap.php
index e483f7c9..403e5a24 100644
--- a/maintenance/generateSitemap.php
+++ b/maintenance/generateSitemap.php
@@ -1,6 +1,4 @@
<?php
-define( 'GS_MAIN', -2 );
-define( 'GS_TALK', -1 );
/**
* Creates a sitemap for the site
*
@@ -31,6 +29,9 @@ define( 'GS_TALK', -1 );
require_once( dirname( __FILE__ ) . '/Maintenance.php' );
class GenerateSitemap extends Maintenance {
+ const GS_MAIN = -2;
+ const GS_TALK = -1;
+
/**
* The maximum amount of urls in a sitemap file
*
@@ -121,6 +122,13 @@ class GenerateSitemap extends Maintenance {
var $file;
/**
+ * Identifier to use in filenames, default $wgDBname
+ *
+ * @var string
+ */
+ private $identifier;
+
+ /**
* Constructor
*/
public function __construct() {
@@ -129,6 +137,7 @@ class GenerateSitemap extends Maintenance {
$this->addOption( 'fspath', 'The file system path to save to, e.g. /tmp/sitemap; defaults to current directory', false, true );
$this->addOption( 'urlpath', 'The URL path corresponding to --fspath, prepended to filenames in the index; defaults to an empty string', false, true );
$this->addOption( 'compress', 'Compress the sitemap files, can take value yes|no, default yes', false, true );
+ $this->addOption( 'identifier', 'What site identifier to use for the wiki, defaults to $wgDBname', false, true );
}
/**
@@ -143,19 +152,20 @@ class GenerateSitemap extends Maintenance {
if ( $this->urlpath !== "" && substr( $this->urlpath, -1 ) !== '/' ) {
$this->urlpath .= '/';
}
+ $this->identifier = $this->getOption( 'identifier', wfWikiID() );
$this->compress = $this->getOption( 'compress', 'yes' ) !== 'no';
$this->dbr = wfGetDB( DB_SLAVE );
$this->generateNamespaces();
$this->timestamp = wfTimestamp( TS_ISO_8601, wfTimestampNow() );
- $this->findex = fopen( "{$this->fspath}sitemap-index-" . wfWikiID() . ".xml", 'wb' );
+ $this->findex = fopen( "{$this->fspath}sitemap-index-{$this->identifier}.xml", 'wb' );
$this->main();
}
private function setNamespacePriorities() {
// Custom main namespaces
- $this->priorities[GS_MAIN] = '0.5';
+ $this->priorities[self::GS_MAIN] = '0.5';
// Custom talk namesspaces
- $this->priorities[GS_TALK] = '0.1';
+ $this->priorities[self::GS_TALK] = '0.1';
// MediaWiki standard namespaces
$this->priorities[NS_MAIN] = '1.0';
$this->priorities[NS_TALK] = '0.1';
@@ -234,7 +244,7 @@ class GenerateSitemap extends Maintenance {
* @return String
*/
function guessPriority( $namespace ) {
- return MWNamespace::isMain( $namespace ) ? $this->priorities[GS_MAIN] : $this->priorities[GS_TALK];
+ return MWNamespace::isMain( $namespace ) ? $this->priorities[self::GS_MAIN] : $this->priorities[self::GS_TALK];
}
/**
@@ -271,7 +281,7 @@ class GenerateSitemap extends Maintenance {
$i = $smcount = 0;
$fns = $wgContLang->getFormattedNsText( $namespace );
- $this->output( "$namespace ($fns)" );
+ $this->output( "$namespace ($fns)\n" );
foreach ( $res as $row ) {
if ( $i++ === 0 || $i === $this->url_limit + 1 || $length + $this->limit[1] + $this->limit[2] > $this->size_limit ) {
if ( $this->file !== false ) {
@@ -288,7 +298,7 @@ class GenerateSitemap extends Maintenance {
}
$title = Title::makeTitle( $row->page_namespace, $row->page_title );
$date = wfTimestamp( TS_ISO_8601, $row->page_touched );
- $entry = $this->fileEntry( $title->getFullURL(), $date, $this->priority( $namespace ) );
+ $entry = $this->fileEntry( $title->getCanonicalURL(), $date, $this->priority( $namespace ) );
$length += strlen( $entry );
$this->write( $this->file, $entry );
// generate pages for language variants
@@ -296,7 +306,7 @@ class GenerateSitemap extends Maintenance {
$variants = $wgContLang->getVariants();
foreach ( $variants as $vCode ) {
if ( $vCode == $wgContLang->getCode() ) continue; // we don't want default variant
- $entry = $this->fileEntry( $title->getFullURL( '', $vCode ), $date, $this->priority( $namespace ) );
+ $entry = $this->fileEntry( $title->getCanonicalURL( '', $vCode ), $date, $this->priority( $namespace ) );
$length += strlen( $entry );
$this->write( $this->file, $entry );
}
@@ -349,7 +359,7 @@ class GenerateSitemap extends Maintenance {
*/
function sitemapFilename( $namespace, $count ) {
$ext = $this->compress ? '.gz' : '';
- return "sitemap-" . wfWikiID() . "-NS_$namespace-$count.xml$ext";
+ return "sitemap-{$this->identifier}-NS_$namespace-$count.xml$ext";
}
/**
@@ -441,11 +451,12 @@ class GenerateSitemap extends Maintenance {
* Populate $this->limit
*/
function generateLimit( $namespace ) {
+ // bug 17961: make a title with the longest possible URL in this namespace
$title = Title::makeTitle( $namespace, str_repeat( "\xf0\xa8\xae\x81", 63 ) . "\xe5\x96\x83" );
$this->limit = array(
strlen( $this->openFile() ),
- strlen( $this->fileEntry( $title->getFullUrl(), wfTimestamp( TS_ISO_8601, wfTimestamp() ), $this->priority( $namespace ) ) ),
+ strlen( $this->fileEntry( $title->getCanonicalURL(), wfTimestamp( TS_ISO_8601, wfTimestamp() ), $this->priority( $namespace ) ) ),
strlen( $this->closeFile() )
);
}
diff --git a/maintenance/hiphop/compiler.conf b/maintenance/hiphop/compiler.conf
new file mode 100644
index 00000000..3e01640d
--- /dev/null
+++ b/maintenance/hiphop/compiler.conf
@@ -0,0 +1,5 @@
+GenerateSourceInfo = true
+EnableEval = 2
+AllDynamic = true
+EnableHipHopSyntax = true
+EnableHipHopExperimentalSyntax = true
diff --git a/maintenance/hiphop/extra-files b/maintenance/hiphop/extra-files
new file mode 100644
index 00000000..15f48577
--- /dev/null
+++ b/maintenance/hiphop/extra-files
@@ -0,0 +1,35 @@
+img_auth.php
+includes/AjaxFunctions.php
+includes/AutoLoader.php
+includes/DefaultSettings.php
+includes/Defines.php
+includes/GlobalFunctions.php
+includes/ImageFunctions.php
+includes/OutputHandler.php
+includes/ProxyTools.php
+includes/SeleniumWebSettings.php
+includes/Setup.php
+includes/StreamFile.php
+includes/WebStart.php
+includes/filerepo/NullRepo.php
+includes/normal/UtfNormalDefines.php
+includes/normal/UtfNormalUtil.php
+index.php
+languages/Names.php
+load.php
+maintenance/Maintenance.php
+maintenance/commandLine.inc
+maintenance/doMaintenance.php
+maintenance/eval.php
+opensearch_desc.php
+profileinfo.php
+redirect.php
+resources/Resources.php
+serialized/serialize.php
+skins/MonoBook.deps.php
+skins/MonoBook.php
+skins/Vector.deps.php
+skins/Vector.php
+thumb.php
+trackback.php
+
diff --git a/maintenance/hiphop/make b/maintenance/hiphop/make
new file mode 100644
index 00000000..e792e08b
--- /dev/null
+++ b/maintenance/hiphop/make
@@ -0,0 +1,308 @@
+#!/usr/bin/hphpi -f
+<?php
+
+require( dirname( __FILE__ ) . '/../Maintenance.php' );
+
+class MakeHipHop extends Maintenance {
+ function execute() {
+ global $wgHipHopBuildDirectory;
+
+ $startTime = time();
+
+ $thisDir = realpath( dirname( __FILE__ ) );
+ $IP = realpath( "$thisDir/../.." );
+ if ( strval( $wgHipHopBuildDirectory ) !== '' ) {
+ $buildDir = $wgHipHopBuildDirectory;
+ } else {
+ $buildDir = "$thisDir/build";
+ }
+ $extensionsDir = realpath( MWInit::getExtensionsDirectory() );
+ $outDir = "$buildDir/hiphop-output";
+ $persistentDir = "$buildDir/persistent";
+
+ if ( !is_dir( $buildDir ) ) {
+ mkdir( $buildDir, 0777, true );
+ }
+ if ( !is_dir( $persistentDir ) ) {
+ mkdir( $persistentDir, 0777, true );
+ }
+
+ if ( realpath( "$IP/../phase3" ) !== $IP
+ || realpath( "$IP/../extensions" ) !== $extensionsDir )
+ {
+ # Set up a fake source directory with the correct layout
+ $sourceBase = "$buildDir/source";
+ $this->setupFakeSourceBase( $IP, $extensionsDir, $sourceBase );
+ } else {
+ $sourceBase = realpath( "$IP/.." );
+ unlink( "$buildDir/source" );
+ }
+
+ # With the CentOS RPMs, you just get g++44, no g++, so we have to
+ # use the environment
+ if ( isset( $_ENV['CXX'] ) ) {
+ $cxx = $_ENV['CXX'];
+ } else {
+ $cxx = 'g++';
+ }
+
+ # Create a function that provides the HipHop compiler version, and
+ # doesn't exist when MediaWiki is invoked in interpreter mode.
+ $version = str_replace( PHP_EOL, ' ', trim( `hphp --version` ) );
+ file_put_contents(
+ "$buildDir/HipHopCompilerVersion.php",
+ "<" . "?php\n" .
+ "function wfHipHopCompilerVersion() {\n" .
+ "return " . var_export( $version, true ) . ";\n" .
+ "}\n"
+ );
+
+ # Generate the file list
+ $files = $this->getFileList();
+ file_put_contents(
+ "$buildDir/file-list",
+ implode( "\n", $files ) . "\n" );
+
+ # Generate the C++
+ passthru(
+ 'hphp' .
+ ' --target=cpp' .
+ ' --format=file' .
+ ' --input-dir=' . wfEscapeShellArg( $sourceBase ) .
+ ' --input-list=' . wfEscapeShellArg( "$buildDir/file-list" ) .
+ ' --inputs=' . wfEscapeShellArg( "$buildDir/HipHopCompilerVersion.php" ) .
+ ' -c ' . wfEscapeShellArg( "$thisDir/compiler.conf" ) .
+ ' --parse-on-demand=false' .
+ ' --program=mediawiki-hphp' .
+ ' --output-dir=' . wfEscapeShellArg( $outDir ) .
+ ' --log=3', $ret );
+
+ if ( $ret ) {
+ $this->error( "hphp hit an error. Stopping build.\n" );
+ exit( 1 );
+ }
+
+ # Sanity check, quickly make sure we've got an output directory
+ if( !is_dir( $outDir ) ) {
+ $this->error( "No output directory", true );
+ }
+
+ # Warn about volatile classes
+ $this->checkVolatileClasses( $outDir );
+
+ # Copy the generated C++ files into the source directory for cmake
+ $iter = new RecursiveIteratorIterator(
+ new RecursiveDirectoryIterator( $outDir ),
+ RecursiveIteratorIterator::SELF_FIRST );
+ $sourceFiles = array();
+ $regenerateMakefile = false;
+ $numFiles = 0;
+ $numFilesChanged = 0;
+ foreach ( $iter as $sourcePath => $file ) {
+ $name = substr( $sourcePath, strlen( $outDir ) + 1 );
+ $sourceFiles[$name] = true;
+ $destPath = "$persistentDir/$name";
+ if ( $file->isDir() ) {
+ if ( !is_dir( $destPath ) ) {
+ mkdir( $destPath );
+ }
+ continue;
+ }
+
+ $numFiles++;
+ # Remove any files that weren't touched, these may have been removed
+ # from file-list, we should not compile them
+ if ( $file->getMTime() < $startTime ) {
+ if ( file_exists( $destPath ) ) {
+ unlink( $destPath );
+ # Files removed, regenerate the makefile
+ $regenerateMakefile = true;
+ }
+ unlink( $sourcePath );
+ $numFilesChanged++;
+ continue;
+ }
+
+ if ( file_exists( $destPath ) ) {
+ $sourceHash = md5( file_get_contents( $sourcePath ) );
+ $destHash = md5( file_get_contents( $destPath ) );
+ if ( $sourceHash == $destHash ) {
+ continue;
+ }
+ } else {
+ # New files added, regenerate the makefile
+ $regenerateMakefile = true;
+ }
+ $numFilesChanged++;
+ copy( $sourcePath, $destPath );
+ }
+
+ echo "MediaWiki: $numFilesChanged files changed out of $numFiles\n";
+
+ if ( !file_exists( "$persistentDir/CMakeLists.txt" ) ) {
+ # Run cmake for the first time
+ $regenerateMakefile = true;
+ }
+
+ # Do our own version of $HPHP_HOME/bin/run.sh, which isn't so broken.
+ # HipHop's RELEASE mode seems to be stuck always on, so symbols get
+ # stripped. Also we will try keeping the generated .o files instead of
+ # throwing away hours of CPU time every time you make a typo.
+
+ chdir( $persistentDir );
+
+ if ( $regenerateMakefile ) {
+ copy( $_ENV['HPHP_HOME'] . '/bin/CMakeLists.base.txt',
+ "$persistentDir/CMakeLists.txt" );
+
+ if ( file_exists( "$persistentDir/CMakeCache.txt" ) ) {
+ unlink( "$persistentDir/CMakeCache.txt" );
+ }
+
+ $cmd = 'cmake' .
+ " -D CMAKE_BUILD_TYPE:string=" . wfEscapeShellArg( $GLOBALS['wgHipHopBuildType'] ) .
+ ' -D PROGRAM_NAME:string=mediawiki-hphp';
+
+ if ( file_exists( '/usr/bin/ccache' ) ) {
+ $cmd .= ' -D CMAKE_CXX_COMPILER:string=ccache' .
+ ' -D CMAKE_CXX_COMPILER_ARG1:string=' . wfEscapeShellArg( $cxx );
+ }
+
+ $cmd .= ' .';
+ echo "$cmd\n";
+ passthru( $cmd );
+ }
+
+ # Determine appropriate make concurrency
+ # Compilation can take a lot of memory, let's assume that that is limiting.
+ $procs = $this->getNumProcs();
+
+ # Run make. This is the slow step.
+ passthru( 'make -j' . wfEscapeShellArg( $procs ) );
+
+ $elapsed = time() - $startTime;
+
+ echo "Completed in ";
+ if ( $elapsed >= 3600 ) {
+ $hours = floor( $elapsed / 3600 );
+ echo $hours . 'h ';
+ $elapsed -= $hours * 3600;
+ }
+ if ( $elapsed >= 60 ) {
+ $minutes = floor( $elapsed / 60 );
+ echo $minutes . 'm ';
+ $elapsed -= $minutes * 60;
+ }
+ echo $elapsed . "s\n";
+ echo "The MediaWiki executable is at $buildDir/persistent/mediawiki-hphp\n";
+ }
+
+ function checkVolatileClasses( $dir ) {
+ $lines = file( "$dir/sys/dynamic_table_class.cpp" );
+ $classes = array();
+ foreach ( $lines as $line ) {
+ if ( preg_match( '/^\s+\(const char \*\)"([^"]*)", \(const char \*\)-1/', $line, $m ) ) {
+ $classes[] = $m[1];
+ }
+ }
+ if ( !count( $classes ) ) {
+ print "No volatile classes found\n";
+ return;
+ }
+ sort( $classes );
+ $classes = array_unique( $classes );
+ print "WARNING: The following classes are volatile: " . implode( ', ', $classes ) . "\n";
+ }
+
+ function getNumProcs() {
+ global $wgHipHopCompilerProcs;
+ if ( $wgHipHopCompilerProcs !== 'detect' ) {
+ return intval( $wgHipHopCompilerProcs );
+ }
+
+ if ( !file_exists( '/proc/meminfo' ) ) {
+ return 1;
+ }
+ $mem = false;
+ foreach ( file( '/proc/meminfo' ) as $line ) {
+ if ( preg_match( '/^MemTotal:\s+(\d+)\s+kB/', $line, $m ) ) {
+ $mem = intval( $m[1] );
+ break;
+ }
+ }
+ if ( $mem ) {
+ // At least one process
+ return max( 1, floor( $mem / 1000000 ) );
+ } else {
+ return 1;
+ }
+ }
+
+ function setupFakeSourceBase( $phase3, $extensions, $dest ) {
+ if ( !file_exists( $dest ) ) {
+ mkdir( $dest, 0777, true );
+ }
+
+ $this->forceCreateLink( "$dest/phase3", $phase3 );
+ $this->forceCreateLink( "$dest/extensions", $extensions );
+ }
+
+ function forceCreateLink( $target, $link ) {
+ if ( file_exists( $target ) ) {
+ if ( readlink( $target ) === $link ) {
+ return;
+ }
+ unlink( $target );
+ }
+ symlink( $target, $link );
+ }
+
+ function getFileList() {
+ global $wgAutoloadClasses, $wgAutoloadLocalClasses, $wgCompiledFiles;
+ $inputFiles = array_merge(
+ array_values( $wgAutoloadClasses ),
+ array_values( $wgAutoloadLocalClasses ),
+ $wgCompiledFiles
+ );
+ $processedFiles = array();
+ foreach ( $inputFiles as $file ) {
+ if ( substr( $file, 0, 1 ) === '/' ) {
+ $processedFiles[] = $this->absoluteToRelative( $file );
+ } elseif ( preg_match( '/^extensions/', $file ) ) {
+ $processedFiles[] = $file;
+ } else {
+ $processedFiles[] = "phase3/$file";
+ }
+ }
+
+ $extraCoreFiles = array_map( 'trim', file( dirname( __FILE__ ) . '/extra-files' ) );
+ foreach ( $extraCoreFiles as $file ) {
+ if ( $file === '' ) {
+ continue;
+ }
+ $processedFiles[] = "phase3/$file";
+ }
+ return array_unique( $processedFiles );
+ }
+
+ function absoluteToRelative( $file ) {
+ global $IP;
+
+ $coreBase = realpath( $IP ) . '/';
+ $extBase = realpath( MWInit::getExtensionsDirectory() ) . '/';
+ $file = realpath( $file );
+
+ if ( substr( $file, 0, strlen( $extBase ) ) === $extBase ) {
+ return 'extensions/' . substr( $file, strlen( $extBase ) );
+ } elseif ( substr( $file, 0, strlen( $coreBase ) ) === $coreBase ) {
+ return 'phase3/' . substr( $file, strlen( $coreBase ) );
+ } else {
+ $this->error( "The following file is registered for compilation but is not in \$IP or " .
+ "\$wgExtensionsDirectory: $file \n" );
+ exit( 1 );
+ }
+ }
+}
+
+$maintClass = 'MakeHipHop';
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/hiphop/run-server b/maintenance/hiphop/run-server
new file mode 100644
index 00000000..0ad43134
--- /dev/null
+++ b/maintenance/hiphop/run-server
@@ -0,0 +1,75 @@
+#!/usr/bin/hphpi -f
+<?php
+
+require( dirname( __FILE__ ) . '/../Maintenance.php' );
+
+class RunHipHopServer extends Maintenance {
+ function __construct() {
+ parent::__construct();
+ $this->addOption( 'interpret', 'Run in interpreted mode' );
+ }
+
+ function execute() {
+ if ( $this->hasOption( 'interpret' ) ) {
+ $this->runInterpreted();
+ } else {
+ $this->runCompiled();
+ }
+ }
+
+ function runCompiled() {
+ global $wgHipHopBuildDirectory;
+ $thisDir = realpath( dirname( __FILE__ ) );
+ $IP = realpath( "$thisDir/../.." );
+ if ( strval( $wgHipHopBuildDirectory ) !== '' ) {
+ $buildDir = $wgHipHopBuildDirectory;
+ } else {
+ $buildDir = "$thisDir/build";
+ }
+
+ if ( file_exists( "$buildDir/source" ) ) {
+ $sourceBase = "$buildDir/source";
+ } else {
+ $sourceBase = realpath( "$IP/.." );
+ }
+
+ passthru(
+ 'cd ' . wfEscapeShellArg( $sourceBase ) . " && " .
+ 'MW_INSTALL_PATH=' . wfEscapeShellArg( $IP ) . ' ' .
+ wfEscapeShellArg(
+ "$buildDir/persistent/mediawiki-hphp",
+ '-c', "$thisDir/server.conf",
+ '-v', "Server.SourceRoot=$sourceBase",
+ '-v', "Server.IncludeSearchPaths.0=$sourceBase",
+ '-v', 'ServerVariables.MW_COMPILED=1',
+ '--mode=server',
+ '--port=8080'
+ ),
+ $ret
+ );
+ exit( $ret );
+ }
+
+ function runInterpreted() {
+ $thisDir = realpath( dirname( __FILE__ ) );
+ $IP = realpath( "$thisDir/../.." );
+ $sourceBase = realpath( "$IP/.." );
+
+ passthru(
+ 'cd ' . wfEscapeShellArg( $sourceBase ) . " && " .
+ 'MW_INSTALL_PATH=' . wfEscapeShellArg( $IP ) . ' ' .
+ wfEscapeShellArg(
+ 'hphpi',
+ '-c', "$thisDir/server.conf",
+ '-v', "Server.SourceRoot=$sourceBase",
+ '-v', "Server.IncludeSearchPaths.0=$sourceBase",
+ '--mode=server',
+ '--port=8080'
+ ),
+ $ret
+ );
+ exit( $ret );
+ }
+}
+$maintClass = 'RunHipHopServer';
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/hiphop/server.conf b/maintenance/hiphop/server.conf
new file mode 100644
index 00000000..16af0f2f
--- /dev/null
+++ b/maintenance/hiphop/server.conf
@@ -0,0 +1,30 @@
+Log {
+ Level = Warning
+ UseLogFile = true
+ NativeStackTrace = true
+ InjectedStackTrace = true
+}
+Debug {
+ FullBacktrace = true
+ ServerStackTrace = true
+ ServerErrorMessage = true
+ TranslateSource = true
+}
+Server {
+ EnableStaticContentCache = false
+ EnableStaticContentFromDisk = false
+ AlwaysUseRelativePath = true
+}
+VirtualHost {
+ * {
+ ServerName = localhost
+ Pattern = .
+ RewriteRules {
+ * {
+ pattern = ^/wiki/(.*)$
+ to = /phase3/index.php?title=$1
+ qsa = true
+ }
+ }
+ }
+}
diff --git a/maintenance/httpSessionDownload.php b/maintenance/httpSessionDownload.php
deleted file mode 100644
index 3c4f16a0..00000000
--- a/maintenance/httpSessionDownload.php
+++ /dev/null
@@ -1,57 +0,0 @@
-<?php
-/*
- * Simple entry point to initiate a background download
- *
- * arguments:
- * --sid {$session_id} --usk {$upload_session_key} --wiki {wfWikiId()}
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @ingroup Maintenance
- */
-
-require_once( dirname( __FILE__ ) . '/Maintenance.php' );
-
-class HttpSessionDownload extends Maintenance {
- public function __construct() {
- parent::__construct();
- $this->mDescription = "Simple entry point to initiate a background download";
- $this->addOption( 'sid', 'Session ID', true, true );
- $this->addOption( 'usk', 'Upload session key', true, true );
- }
-
- public function execute() {
- wfProfileIn( __METHOD__ );
-
- // run the download:
- Http::doSessionIdDownload( $this->getOption( 'sid' ), $this->getOption( 'usk' ) );
-
- // close up shop:
- // Execute any deferred updates
- wfDoUpdates();
-
- // Log what the user did, for book-keeping purposes.
- wfLogProfilingData();
-
- // Shut down the database before exit
- wfGetLBFactory()->shutdown();
-
- wfProfileOut( __METHOD__ );
- }
-}
-
-$maintClass = "HttpSessionDownload";
-require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/ibm_db2/patch-categorylinks-better-collation.sql b/maintenance/ibm_db2/patch-categorylinks-better-collation.sql
new file mode 100644
index 00000000..312583ac
--- /dev/null
+++ b/maintenance/ibm_db2/patch-categorylinks-better-collation.sql
@@ -0,0 +1,21 @@
+--
+-- patch-categorylinks-better-collation.sql
+--
+--
+-- Track category inclusions *used inline*
+-- This tracks a single level of category membership
+-- (folksonomic tagging, really).
+--
+CREATE TABLE categorylinks (
+ cl_from BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES page(page_id) ON DELETE CASCADE,
+ cl_to VARCHAR(255) NOT NULL,
+ -- cl_sortkey has to be at least 86 wide
+ -- in order to be compatible with the old MySQL schema from MW 1.10
+ --cl_sortkey VARCHAR(86),
+ cl_sortkey VARCHAR(230) FOR BIT DATA NOT NULL ,
+ cl_sortkey_prefix VARCHAR(255) FOR BIT DATA NOT NULL ,
+ cl_timestamp TIMESTAMP(3) NOT NULL,
+ cl_collation VARCHAR(32) FOR BIT DATA NOT NULL ,
+ cl_type VARCHAR(6) FOR BIT DATA NOT NULL
+);
diff --git a/maintenance/ibm_db2/patch-change_tag-indexes.sql b/maintenance/ibm_db2/patch-change_tag-indexes.sql
new file mode 100644
index 00000000..1621a038
--- /dev/null
+++ b/maintenance/ibm_db2/patch-change_tag-indexes.sql
@@ -0,0 +1,5 @@
+CREATE UNIQUE INDEX change_tag_rc_tag ON change_tag (ct_rc_id,ct_tag);
+CREATE UNIQUE INDEX change_tag_log_tag ON change_tag (ct_log_id,ct_tag);
+CREATE UNIQUE INDEX change_tag_rev_tag ON change_tag (ct_rev_id,ct_tag);
+-- Covering index, so we can pull all the info only out of the index.
+CREATE INDEX change_tag_tag_id ON change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
diff --git a/maintenance/ibm_db2/patch-change_tag.sql b/maintenance/ibm_db2/patch-change_tag.sql
new file mode 100644
index 00000000..3b6f9d54
--- /dev/null
+++ b/maintenance/ibm_db2/patch-change_tag.sql
@@ -0,0 +1,8 @@
+-- A table to track tags for revisions, logs and recent changes.
+CREATE TABLE change_tag (
+ ct_rc_id INTEGER,
+ ct_log_id INTEGER,
+ ct_rev_id INTEGER,
+ ct_tag varchar(255) NOT NULL,
+ ct_params CLOB(64K) INLINE LENGTH 4096
+);
diff --git a/maintenance/ibm_db2/patch-change_tag_summary.sql b/maintenance/ibm_db2/patch-change_tag_summary.sql
new file mode 100644
index 00000000..768cbfaa
--- /dev/null
+++ b/maintenance/ibm_db2/patch-change_tag_summary.sql
@@ -0,0 +1,7 @@
+-- Rollup table to pull a LIST of tags simply
+CREATE TABLE tag_summary (
+ ts_rc_id INTEGER,
+ ts_log_id INTEGER,
+ ts_rev_id INTEGER,
+ ts_tags CLOB(64K) INLINE LENGTH 4096 NOT NULL
+);
diff --git a/maintenance/ibm_db2/patch-change_valid_tag.sql b/maintenance/ibm_db2/patch-change_valid_tag.sql
new file mode 100644
index 00000000..9bdcbc92
--- /dev/null
+++ b/maintenance/ibm_db2/patch-change_valid_tag.sql
@@ -0,0 +1,3 @@
+CREATE TABLE valid_tag (
+ vt_tag varchar(255) NOT NULL PRIMARY KEY
+);
diff --git a/maintenance/ibm_db2/patch-cl_collation-field.sql b/maintenance/ibm_db2/patch-cl_collation-field.sql
new file mode 100644
index 00000000..6999dace
--- /dev/null
+++ b/maintenance/ibm_db2/patch-cl_collation-field.sql
@@ -0,0 +1 @@
+ALTER TABLE categorylinks ADD cl_collation VARCHAR(32) FOR BIT DATA NOT NULL
diff --git a/maintenance/ibm_db2/patch-cl_sortkey_prefix-field.sql b/maintenance/ibm_db2/patch-cl_sortkey_prefix-field.sql
new file mode 100644
index 00000000..58b78147
--- /dev/null
+++ b/maintenance/ibm_db2/patch-cl_sortkey_prefix-field.sql
@@ -0,0 +1 @@
+ALTER TABLE categorylinks ADD cl_sortkey_prefix VARCHAR(255) FOR BIT DATA NOT NULL
diff --git a/maintenance/ibm_db2/patch-cl_type-field.sql b/maintenance/ibm_db2/patch-cl_type-field.sql
new file mode 100644
index 00000000..5952c989
--- /dev/null
+++ b/maintenance/ibm_db2/patch-cl_type-field.sql
@@ -0,0 +1 @@
+ALTER TABLE categorylinks ADD cl_type VARCHAR(6) FOR BIT DATA NOT NULL
diff --git a/maintenance/ibm_db2/patch-external_user.sql b/maintenance/ibm_db2/patch-external_user.sql
new file mode 100644
index 00000000..96cb8237
--- /dev/null
+++ b/maintenance/ibm_db2/patch-external_user.sql
@@ -0,0 +1,7 @@
+CREATE TABLE external_user (
+ -- Foreign key to user_id
+ eu_local_id BIGINT NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
+
+ -- Some opaque identifier provided by the external database
+ eu_external_id VARCHAR(255) NOT NULL
+);
diff --git a/maintenance/ibm_db2/patch-ipb_allow_usertalk.sql b/maintenance/ibm_db2/patch-ipb_allow_usertalk.sql
new file mode 100644
index 00000000..6274bb22
--- /dev/null
+++ b/maintenance/ibm_db2/patch-ipb_allow_usertalk.sql
@@ -0,0 +1,23 @@
+CREATE TABLE ipblocks (
+ ipb_id INTEGER NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
+ --DEFAULT nextval('ipblocks_ipb_id_val'),
+ ipb_address VARCHAR(1024),
+ ipb_user BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE SET NULL,
+ ipb_by BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE CASCADE,
+ ipb_by_text VARCHAR(255) NOT NULL DEFAULT '',
+ ipb_reason VARCHAR(1024) NOT NULL,
+ ipb_timestamp TIMESTAMP(3) NOT NULL,
+ ipb_auto SMALLINT NOT NULL DEFAULT 0,
+ ipb_anon_only SMALLINT NOT NULL DEFAULT 0,
+ ipb_create_account SMALLINT NOT NULL DEFAULT 1,
+ ipb_enable_autoblock SMALLINT NOT NULL DEFAULT 1,
+ ipb_expiry TIMESTAMP(3) NOT NULL,
+ ipb_range_start VARCHAR(1024),
+ ipb_range_end VARCHAR(1024),
+ ipb_deleted SMALLINT NOT NULL DEFAULT 0,
+ ipb_block_email SMALLINT NOT NULL DEFAULT 0,
+ ipb_allow_usertalk SMALLINT NOT NULL DEFAULT 0
+
+);
diff --git a/maintenance/ibm_db2/patch-iw_api-field.sql b/maintenance/ibm_db2/patch-iw_api-field.sql
new file mode 100644
index 00000000..dd732a58
--- /dev/null
+++ b/maintenance/ibm_db2/patch-iw_api-field.sql
@@ -0,0 +1 @@
+ALTER TABLE interwiki ADD iw_api CLOB(64K) INLINE LENGTH 4096 NOT NULL
diff --git a/maintenance/ibm_db2/patch-iw_api_and_wikiid.sql b/maintenance/ibm_db2/patch-iw_api_and_wikiid.sql
new file mode 100644
index 00000000..1b1e3592
--- /dev/null
+++ b/maintenance/ibm_db2/patch-iw_api_and_wikiid.sql
@@ -0,0 +1,8 @@
+CREATE TABLE interwiki (
+ iw_prefix VARCHAR(32) NOT NULL UNIQUE,
+ iw_url CLOB(64K) INLINE LENGTH 4096 NOT NULL,
+ iw_api CLOB(64K) INLINE LENGTH 4096 NOT NULL,
+ iw_wikiid varchar(64) NOT NULL,
+ iw_local SMALLINT NOT NULL,
+ iw_trans SMALLINT NOT NULL DEFAULT 0
+);
diff --git a/maintenance/ibm_db2/patch-iw_wikiid-field.sql b/maintenance/ibm_db2/patch-iw_wikiid-field.sql
new file mode 100644
index 00000000..fe49e3c0
--- /dev/null
+++ b/maintenance/ibm_db2/patch-iw_wikiid-field.sql
@@ -0,0 +1 @@
+ALTER TABLE interwiki ADD iw_wikiid varchar(64) NOT NULL
diff --git a/maintenance/ibm_db2/patch-iwlinks.sql b/maintenance/ibm_db2/patch-iwlinks.sql
new file mode 100644
index 00000000..2902512f
--- /dev/null
+++ b/maintenance/ibm_db2/patch-iwlinks.sql
@@ -0,0 +1,7 @@
+CREATE TABLE "IWLINKS"
+(
+"IWL_FROM" INT NOT NULL ,
+"IWL_PREFIX" VARCHAR(20) FOR BIT DATA NOT NULL ,
+"IWL_TITLE" VARCHAR(255) FOR BIT DATA NOT NULL
+)
+;
diff --git a/maintenance/ibm_db2/patch-l10n_cache.sql b/maintenance/ibm_db2/patch-l10n_cache.sql
new file mode 100644
index 00000000..49ebed2b
--- /dev/null
+++ b/maintenance/ibm_db2/patch-l10n_cache.sql
@@ -0,0 +1,8 @@
+CREATE TABLE l10n_cache (
+ -- Language code
+ lc_lang VARCHAR(32) NOT NULL,
+ -- Cache key
+ lc_key VARCHAR(255) NOT NULL,
+ -- Value
+ lc_value CLOB(16M) INLINE LENGTH 4096 NOT NULL
+);
diff --git a/maintenance/ibm_db2/patch-log_search-rename-index.sql b/maintenance/ibm_db2/patch-log_search-rename-index.sql
new file mode 100644
index 00000000..a6a696e1
--- /dev/null
+++ b/maintenance/ibm_db2/patch-log_search-rename-index.sql
@@ -0,0 +1,8 @@
+CREATE TABLE log_search (
+ -- The type of ID (rev ID, log ID, rev TIMESTAMP(3), username)
+ ls_field VARCHAR(32) FOR BIT DATA NOT NULL,
+ -- The value of the ID
+ ls_value varchar(255) NOT NULL,
+ -- Key to log_id
+ ls_log_id BIGINT NOT NULL default 0
+);
diff --git a/maintenance/ibm_db2/patch-log_search.sql b/maintenance/ibm_db2/patch-log_search.sql
new file mode 100644
index 00000000..a6a696e1
--- /dev/null
+++ b/maintenance/ibm_db2/patch-log_search.sql
@@ -0,0 +1,8 @@
+CREATE TABLE log_search (
+ -- The type of ID (rev ID, log ID, rev TIMESTAMP(3), username)
+ ls_field VARCHAR(32) FOR BIT DATA NOT NULL,
+ -- The value of the ID
+ ls_value varchar(255) NOT NULL,
+ -- Key to log_id
+ ls_log_id BIGINT NOT NULL default 0
+);
diff --git a/maintenance/ibm_db2/patch-log_user_text.sql b/maintenance/ibm_db2/patch-log_user_text.sql
new file mode 100644
index 00000000..3534057a
--- /dev/null
+++ b/maintenance/ibm_db2/patch-log_user_text.sql
@@ -0,0 +1,17 @@
+CREATE TABLE logging (
+ log_id BIGINT NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
+ --PRIMARY KEY DEFAULT nextval('log_log_id_seq'),
+ log_type VARCHAR(32) NOT NULL,
+ log_action VARCHAR(32) NOT NULL,
+ log_timestamp TIMESTAMP(3) NOT NULL,
+ log_user BIGINT NOT NULL DEFAULT 0,
+ -- REFERENCES user(user_id) ON DELETE SET NULL,
+ -- Name of the user who performed this action
+ log_user_text VARCHAR(255) NOT NULL default '',
+ log_namespace SMALLINT NOT NULL,
+ log_title VARCHAR(255) NOT NULL,
+ log_page BIGINT,
+ log_comment VARCHAR(255),
+ log_params CLOB(64K) INLINE LENGTH 4096,
+ log_deleted SMALLINT NOT NULL DEFAULT 0
+);
diff --git a/maintenance/ibm_db2/patch-module_deps.sql b/maintenance/ibm_db2/patch-module_deps.sql
new file mode 100644
index 00000000..5058d1f5
--- /dev/null
+++ b/maintenance/ibm_db2/patch-module_deps.sql
@@ -0,0 +1,6 @@
+CREATE TABLE "MODULE_DEPS" (
+"MD_MODULE" VARCHAR(255) FOR BIT DATA NOT NULL ,
+"MD_SKIN" VARCHAR(32) FOR BIT DATA NOT NULL ,
+"MD_DEPS" CLOB(16M) INLINE LENGTH 4096 NOT NULL
+)
+;
diff --git a/maintenance/ibm_db2/patch-msg_resource.sql b/maintenance/ibm_db2/patch-msg_resource.sql
new file mode 100644
index 00000000..58b3dd6c
--- /dev/null
+++ b/maintenance/ibm_db2/patch-msg_resource.sql
@@ -0,0 +1,8 @@
+CREATE TABLE "MSG_RESOURCE"
+(
+"MR_RESOURCE" VARCHAR(255) FOR BIT DATA NOT NULL ,
+"MR_LANG" VARCHAR(32) FOR BIT DATA NOT NULL ,
+"MR_BLOB" BLOB NOT NULL ,
+"MR_TIMESTAMP" TIMESTAMP(3) NOT NULL
+)
+;
diff --git a/maintenance/ibm_db2/patch-msg_resource_links.sql b/maintenance/ibm_db2/patch-msg_resource_links.sql
new file mode 100644
index 00000000..4c0ff918
--- /dev/null
+++ b/maintenance/ibm_db2/patch-msg_resource_links.sql
@@ -0,0 +1,6 @@
+CREATE TABLE "MSG_RESOURCE_LINKS"
+(
+"MRL_RESOURCE" VARCHAR(255) FOR BIT DATA NOT NULL ,
+"MRL_MESSAGE" VARCHAR(255) FOR BIT DATA NOT NULL
+)
+;
diff --git a/maintenance/ibm_db2/patch-rd_interwiki.sql b/maintenance/ibm_db2/patch-rd_interwiki.sql
new file mode 100644
index 00000000..c162548c
--- /dev/null
+++ b/maintenance/ibm_db2/patch-rd_interwiki.sql
@@ -0,0 +1,8 @@
+CREATE TABLE redirect (
+ rd_from BIGINT NOT NULL PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 1),
+ --REFERENCES page(page_id) ON DELETE CASCADE,
+ rd_namespace SMALLINT NOT NULL DEFAULT 0,
+ rd_title VARCHAR(255) NOT NULL DEFAULT '',
+ rd_interwiki varchar(32),
+ rd_fragment VARCHAR(255)
+);
diff --git a/maintenance/ibm_db2/patch-ss_active_users.sql b/maintenance/ibm_db2/patch-ss_active_users.sql
new file mode 100644
index 00000000..f0e6d145
--- /dev/null
+++ b/maintenance/ibm_db2/patch-ss_active_users.sql
@@ -0,0 +1,11 @@
+CREATE TABLE site_stats (
+ ss_row_id BIGINT NOT NULL UNIQUE,
+ ss_total_views BIGINT DEFAULT 0,
+ ss_total_edits BIGINT DEFAULT 0,
+ ss_good_articles BIGINT DEFAULT 0,
+ ss_total_pages INTEGER DEFAULT -1,
+ ss_users INTEGER DEFAULT -1,
+ ss_active_users INTEGER DEFAULT -1,
+ ss_admins INTEGER DEFAULT -1,
+ ss_images INTEGER DEFAULT 0
+);
diff --git a/maintenance/ibm_db2/patch-ul_value.sql b/maintenance/ibm_db2/patch-ul_value.sql
new file mode 100644
index 00000000..cd00f8e0
--- /dev/null
+++ b/maintenance/ibm_db2/patch-ul_value.sql
@@ -0,0 +1,3 @@
+CREATE TABLE updatelog (
+ ul_key VARCHAR(255) NOT NULL PRIMARY KEY
+);
diff --git a/maintenance/ibm_db2/patch-uq61_msg_resource_links.sql b/maintenance/ibm_db2/patch-uq61_msg_resource_links.sql
new file mode 100644
index 00000000..d9185c0a
--- /dev/null
+++ b/maintenance/ibm_db2/patch-uq61_msg_resource_links.sql
@@ -0,0 +1,7 @@
+CREATE UNIQUE INDEX "UQ61_MSG_RESOURCE_LINKS" ON "MSG_RESOURCE_LINKS"
+(
+"MRL_MESSAGE",
+"MRL_RESOURCE"
+)
+ALLOW REVERSE SCANS
+;
diff --git a/maintenance/ibm_db2/patch-uq81_msg_resource.sql b/maintenance/ibm_db2/patch-uq81_msg_resource.sql
new file mode 100644
index 00000000..8ed85379
--- /dev/null
+++ b/maintenance/ibm_db2/patch-uq81_msg_resource.sql
@@ -0,0 +1,7 @@
+CREATE UNIQUE INDEX "UQ81_MSG_RESOURCE" ON "MSG_RESOURCE"
+(
+"MR_RESOURCE"
+,"MR_LANG"
+)
+ALLOW REVERSE SCANS
+;
diff --git a/maintenance/ibm_db2/patch-uq96_module_deps.sql b/maintenance/ibm_db2/patch-uq96_module_deps.sql
new file mode 100644
index 00000000..e0cc879a
--- /dev/null
+++ b/maintenance/ibm_db2/patch-uq96_module_deps.sql
@@ -0,0 +1,7 @@
+CREATE UNIQUE INDEX "UQ96_MODULE_DEPS" ON "MODULE_DEPS"
+(
+"MD_MODULE"
+,"MD_SKIN"
+)
+ALLOW REVERSE SCANS
+;
diff --git a/maintenance/ibm_db2/patch-user_properties.sql b/maintenance/ibm_db2/patch-user_properties.sql
new file mode 100644
index 00000000..72dcd792
--- /dev/null
+++ b/maintenance/ibm_db2/patch-user_properties.sql
@@ -0,0 +1,10 @@
+CREATE TABLE user_properties (
+ -- Foreign key to user.user_id
+ up_user BIGINT NOT NULL,
+
+ -- Name of the option being saved. This is indexed for bulk lookup.
+ up_property VARCHAR(32) FOR BIT DATA NOT NULL,
+
+ -- Property value as a string.
+ up_value CLOB(64K) INLINE LENGTH 4096
+);
diff --git a/maintenance/ibm_db2/tables.sql b/maintenance/ibm_db2/tables.sql
index 546c871d..261a3a2b 100644
--- a/maintenance/ibm_db2/tables.sql
+++ b/maintenance/ibm_db2/tables.sql
@@ -9,7 +9,7 @@
CREATE TABLE user (
-- Needs to start with 0
- user_id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
+ user_id BIGINT PRIMARY KEY GENERATED BY DEFAULT AS IDENTITY (START WITH 0),
user_name VARCHAR(255) NOT NULL UNIQUE,
user_real_name VARCHAR(255),
user_password VARCHAR(1024),
@@ -220,8 +220,12 @@ CREATE TABLE categorylinks (
cl_to VARCHAR(255) NOT NULL,
-- cl_sortkey has to be at least 86 wide
-- in order to be compatible with the old MySQL schema from MW 1.10
- cl_sortkey VARCHAR(86),
- cl_timestamp TIMESTAMP(3) NOT NULL
+ --cl_sortkey VARCHAR(86),
+ cl_sortkey VARCHAR(230) FOR BIT DATA NOT NULL ,
+ cl_sortkey_prefix VARCHAR(255) FOR BIT DATA NOT NULL ,
+ cl_timestamp TIMESTAMP(3) NOT NULL,
+ cl_collation VARCHAR(32) FOR BIT DATA NOT NULL ,
+ cl_type VARCHAR(6) FOR BIT DATA NOT NULL
);
CREATE UNIQUE INDEX cl_from ON categorylinks (cl_from, cl_to);
CREATE INDEX cl_sortkey ON categorylinks (cl_to, cl_sortkey, cl_from);
@@ -441,18 +445,11 @@ CREATE TABLE watchlist (
CREATE UNIQUE INDEX wl_user_namespace_title ON watchlist (wl_namespace, wl_title, wl_user);
-CREATE TABLE math (
- math_inputhash VARCHAR(16) FOR BIT DATA NOT NULL UNIQUE,
- math_outputhash VARCHAR(16) FOR BIT DATA NOT NULL,
- math_html_conservativeness SMALLINT NOT NULL,
- math_html CLOB(64K) INLINE LENGTH 4096,
- math_mathml CLOB(64K) INLINE LENGTH 4096
-);
-
-
CREATE TABLE interwiki (
iw_prefix VARCHAR(32) NOT NULL UNIQUE,
iw_url CLOB(64K) INLINE LENGTH 4096 NOT NULL,
+ iw_api CLOB(64K) INLINE LENGTH 4096 NOT NULL,
+ iw_wikiid varchar(64) NOT NULL,
iw_local SMALLINT NOT NULL,
iw_trans SMALLINT NOT NULL DEFAULT 0
);
@@ -489,7 +486,7 @@ CREATE INDEX querycachetwo_titletwo ON querycachetwo (qcc_type,qcc_namespacetw
CREATE TABLE objectcache (
keyname VARCHAR(255) NOT NULL UNIQUE, -- was nullable
value CLOB(16M) INLINE LENGTH 4096 NOT NULL DEFAULT '',
- exptime TIMESTAMP(3) NOT NULL
+ exptime TIMESTAMP(3) NOT NULL
);
CREATE INDEX objectcacache_exptime ON objectcache (exptime);
@@ -686,3 +683,58 @@ CREATE TABLE l10n_cache (
);
CREATE INDEX lc_lang_key ON l10n_cache (lc_lang, lc_key);
+
+CREATE TABLE "MSG_RESOURCE_LINKS"
+(
+"MRL_RESOURCE" VARCHAR(255) FOR BIT DATA NOT NULL ,
+"MRL_MESSAGE" VARCHAR(255) FOR BIT DATA NOT NULL
+)
+;
+
+CREATE UNIQUE INDEX "UQ61_MSG_RESOURCE_LINKS" ON "MSG_RESOURCE_LINKS"
+(
+"MRL_MESSAGE",
+"MRL_RESOURCE"
+)
+ALLOW REVERSE SCANS
+;
+
+CREATE TABLE "MSG_RESOURCE"
+(
+"MR_RESOURCE" VARCHAR(255) FOR BIT DATA NOT NULL ,
+"MR_LANG" VARCHAR(32) FOR BIT DATA NOT NULL ,
+"MR_BLOB" BLOB NOT NULL ,
+"MR_TIMESTAMP" TIMESTAMP(3) NOT NULL
+)
+;
+
+CREATE UNIQUE INDEX "UQ81_MSG_RESOURCE" ON "MSG_RESOURCE"
+(
+"MR_RESOURCE"
+,"MR_LANG"
+)
+ALLOW REVERSE SCANS
+;
+
+CREATE TABLE "MODULE_DEPS" (
+"MD_MODULE" VARCHAR(255) FOR BIT DATA NOT NULL ,
+"MD_SKIN" VARCHAR(32) FOR BIT DATA NOT NULL ,
+"MD_DEPS" CLOB(16M) INLINE LENGTH 4096 NOT NULL
+)
+;
+
+CREATE UNIQUE INDEX "UQ96_MODULE_DEPS" ON "MODULE_DEPS"
+(
+"MD_MODULE"
+,"MD_SKIN"
+)
+ALLOW REVERSE SCANS
+;
+
+CREATE TABLE "IWLINKS"
+(
+"IWL_FROM" INT NOT NULL ,
+"IWL_PREFIX" VARCHAR(20) FOR BIT DATA NOT NULL ,
+"IWL_TITLE" VARCHAR(255) FOR BIT DATA NOT NULL
+)
+;
diff --git a/maintenance/importDump.php b/maintenance/importDump.php
index 5f47635e..c160b036 100644
--- a/maintenance/importDump.php
+++ b/maintenance/importDump.php
@@ -22,24 +22,108 @@
* @ingroup Maintenance
*/
-$optionsWithArgs = array( 'report' );
-
-require_once( dirname( __FILE__ ) . '/commandLine.inc' );
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
/**
* @ingroup Maintenance
*/
-class BackupReader {
+class BackupReader extends Maintenance {
var $reportingInterval = 100;
- var $reporting = true;
var $pageCount = 0;
var $revCount = 0;
var $dryRun = false;
- var $debug = false;
var $uploads = false;
+ var $imageBasePath = false;
+ var $nsFilter = false;
function __construct() {
+ parent::__construct();
+ $gz = in_array('compress.zlib', stream_get_wrappers()) ? 'ok' : '(disabled; requires PHP zlib module)';
+ $bz2 = in_array('compress.bzip2', stream_get_wrappers()) ? 'ok' : '(disabled; requires PHP bzip2 module)';
+
+ $this->mDescription = <<<TEXT
+This script reads pages from an XML file as produced from Special:Export or
+dumpBackup.php, and saves them into the current wiki.
+
+Compressed XML files may be read directly:
+ .gz $gz
+ .bz2 $bz2
+ .7z (if 7za executable is in PATH)
+
+Note that for very large data sets, importDump.php may be slow; there are
+alternate methods which can be much faster for full site restoration:
+<http://www.mediawiki.org/wiki/Manual:Importing_XML_dumps>
+TEXT;
$this->stderr = fopen( "php://stderr", "wt" );
+ $this->addOption( 'report',
+ 'Report position and speed after every n pages processed', false, true );
+ $this->addOption( 'namespaces',
+ 'Import only the pages from namespaces belonging to the list of ' .
+ 'pipe-separated namespace names or namespace indexes', false, true );
+ $this->addOption( 'dry-run', 'Parse dump without actually importing pages' );
+ $this->addOption( 'debug', 'Output extra verbose debug information' );
+ $this->addOption( 'uploads', 'Process file upload data if included (experimental)' );
+ $this->addOption( 'image-base-path', 'Import files from a specified path', false, true );
+ $this->addArg( 'file', 'Dump file to import [else use stdin]', false );
+ }
+
+ public function execute() {
+ if( wfReadOnly() ) {
+ $this->error( "Wiki is in read-only mode; you'll need to disable it for import to work.", true );
+ }
+
+ $this->reportingInterval = intval( $this->getOption( 'report', 100 ) );
+ $this->dryRun = $this->hasOption( 'dry-run' );
+ $this->uploads = $this->hasOption( 'uploads' ); // experimental!
+ if ( $this->hasOption( 'image-base-path' ) ) {
+ $this->imageBasePath = $this->getOption( 'image-base-path' );
+ }
+ if ( $this->hasOption( 'namespaces' ) ) {
+ $this->setNsfilter( explode( '|', $this->getOption( 'namespaces' ) ) );
+ }
+
+ if( $this->hasArg() ) {
+ $this->importFromFile( $this->getArg() );
+ } else {
+ $this->importFromStdin();
+ }
+
+ $this->output( "Done!\n" );
+ $this->output( "You might want to run rebuildrecentchanges.php to regenerate RecentChanges\n" );
+ }
+
+ function setNsfilter( array $namespaces ) {
+ if ( count( $namespaces ) == 0 ) {
+ $this->nsFilter = false;
+ return;
+ }
+ $this->nsFilter = array_unique( array_map( array( $this, 'getNsIndex' ), $namespaces ) );
+ }
+
+ private function getNsIndex( $namespace ) {
+ global $wgContLang;
+ if ( ( $result = $wgContLang->getNsIndex( $namespace ) ) !== false ) {
+ return $result;
+ }
+ $ns = intval( $namespace );
+ if ( strval( $ns ) === $namespace && $wgContLang->getNsText( $ns ) !== false ) {
+ return $ns;
+ }
+ $this->error( "Unknown namespace text / index specified: $namespace", true );
+ }
+
+ private function skippedNamespace( $obj ) {
+ if ( $obj instanceof Title ) {
+ $ns = $obj->getNamespace();
+ } elseif ( $obj instanceof Revision ) {
+ $ns = $obj->getTitle()->getNamespace();
+ } elseif ( $obj instanceof WikiRevision ) {
+ $ns = $obj->title->getNamespace();
+ } else {
+ echo wfBacktrace();
+ $this->error( "Cannot get namespace of object in " . __METHOD__, true );
+ }
+ return is_array( $this->nsFilter ) && !in_array( $ns, $this->nsFilter );
}
function reportPage( $page ) {
@@ -53,6 +137,10 @@ class BackupReader {
return;
}
+ if ( $this->skippedNamespace( $title ) ) {
+ return;
+ }
+
$this->revCount++;
$this->report();
@@ -63,6 +151,9 @@ class BackupReader {
function handleUpload( $revision ) {
if ( $this->uploads ) {
+ if ( $this->skippedNamespace( $revision ) ) {
+ return;
+ }
$this->uploadCount++;
// $this->report();
$this->progress( "upload: " . $revision->getFilename() );
@@ -77,6 +168,9 @@ class BackupReader {
}
function handleLogItem( $rev ) {
+ if ( $this->skippedNamespace( $rev ) ) {
+ return;
+ }
$this->revCount++;
$this->report();
@@ -92,7 +186,7 @@ class BackupReader {
}
function showReport() {
- if ( $this->reporting ) {
+ if ( $this->mQuiet ) {
$delta = wfTime() - $this->startTime;
if ( $delta ) {
$rate = sprintf( "%.2f", $this->pageCount / $delta );
@@ -102,12 +196,15 @@ class BackupReader {
$revrate = '-';
}
# Logs dumps don't have page tallies
- if ( $this->pageCount )
+ if ( $this->pageCount ) {
$this->progress( "$this->pageCount ($rate pages/sec $revrate revs/sec)" );
- else
+ } else {
$this->progress( "$this->revCount ($revrate revs/sec)" );
+ }
}
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
+ // XXX: Don't let deferred jobs array get absurdly large (bug 24375)
+ wfDoUpdates( 'commit' );
}
function progress( $string ) {
@@ -131,6 +228,9 @@ class BackupReader {
function importFromStdin() {
$file = fopen( 'php://stdin', 'rt' );
+ if( posix_isatty( $file ) ) {
+ $this->maybeHelp( true );
+ }
return $this->importFromHandle( $file );
}
@@ -140,7 +240,9 @@ class BackupReader {
$source = new ImportStreamSource( $handle );
$importer = new WikiImporter( $source );
- $importer->setDebug( $this->debug );
+ if( $this->hasOption( 'debug' ) ) {
+ $importer->setDebug( true );
+ }
$importer->setPageCallback( array( &$this, 'reportPage' ) );
$this->importCallback = $importer->setRevisionCallback(
array( &$this, 'handleRevision' ) );
@@ -148,6 +250,12 @@ class BackupReader {
array( &$this, 'handleUpload' ) );
$this->logItemCallback = $importer->setLogItemCallback(
array( &$this, 'handleLogItem' ) );
+ if ( $this->uploads ) {
+ $importer->setImportUploads( true );
+ }
+ if ( $this->imageBasePath ) {
+ $importer->setImageBasePath( $this->imageBasePath );
+ }
if ( $this->dryRun ) {
$importer->setPageOutCallback( null );
@@ -157,33 +265,5 @@ class BackupReader {
}
}
-if ( wfReadOnly() ) {
- wfDie( "Wiki is in read-only mode; you'll need to disable it for import to work.\n" );
-}
-
-$reader = new BackupReader();
-if ( isset( $options['quiet'] ) ) {
- $reader->reporting = false;
-}
-if ( isset( $options['report'] ) ) {
- $reader->reportingInterval = intval( $options['report'] );
-}
-if ( isset( $options['dry-run'] ) ) {
- $reader->dryRun = true;
-}
-if ( isset( $options['debug'] ) ) {
- $reader->debug = true;
-}
-if ( isset( $options['uploads'] ) ) {
- $reader->uploads = true; // experimental!
-}
-
-if ( isset( $args[0] ) ) {
- $result = $reader->importFromFile( $args[0] );
-} else {
- $result = $reader->importFromStdin();
-}
-
-echo "Done!\n";
-echo "You might want to run rebuildrecentchanges.php to regenerate\n";
-echo "the recentchanges page.\n";
+$maintClass = 'BackupReader';
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/importImages.inc b/maintenance/importImages.inc
index ad88b07c..5d35e2c0 100644
--- a/maintenance/importImages.inc
+++ b/maintenance/importImages.inc
@@ -1,8 +1,22 @@
<?php
-
/**
* Support functions for the importImages script
*
+ * 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
* @author Rob Church <robchur@gmail.com>
@@ -40,7 +54,7 @@ function findFiles( $dir, $exts ) {
/**
* Split a filename into filename and extension
*
- * @param $filename Filename
+ * @param $filename string Filename
* @return array
*/
function splitFilename( $filename ) {
diff --git a/maintenance/importImages.php b/maintenance/importImages.php
index befbe64d..f3b10ea9 100644
--- a/maintenance/importImages.php
+++ b/maintenance/importImages.php
@@ -11,6 +11,21 @@
* - fetch metadata from source wiki for each file to import.
* - commit the fetched metadata to the destination wiki while submitting.
*
+ * 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
* @author Rob Church <robchur@gmail.com>
@@ -81,7 +96,7 @@ if ( count( $args ) > 0 ) {
die( "failed to read comment file: {$options['comment-file']}\n" );
}
}
- else if ( isset( $options['comment'] ) ) {
+ elseif ( isset( $options['comment'] ) ) {
$comment = $options['comment'];
}
@@ -197,7 +212,9 @@ if ( count( $args ) > 0 ) {
} else {
$archive = $image->publish( $file );
if ( !$archive->isGood() ) {
- echo( "failed.\n" );
+ echo( "failed. (" .
+ $archive->getWikiText() .
+ ")\n" );
$failed++;
continue;
}
@@ -224,7 +241,7 @@ if ( count( $args ) > 0 ) {
if ( isset( $options['dry'] ) ) {
echo( "done.\n" );
- } else if ( $image->recordUpload( $archive->value, $commentText, $license ) ) {
+ } elseif ( $image->recordUpload( $archive->value, $commentText, $license ) ) {
# We're done!
echo( "done.\n" );
if ( $doProtect ) {
@@ -232,8 +249,8 @@ if ( count( $args ) > 0 ) {
$article = new Article( $title );
echo "\nWaiting for slaves...\n";
// Wait for slaves.
- sleep( 2.0 );
- wfWaitForSlaves( 1.0 );
+ sleep( 2.0 ); # Why this sleep?
+ wfWaitForSlaves();
echo( "\nSetting image restrictions ... " );
if ( $article->updateRestrictions( $restrictions ) )
@@ -243,7 +260,7 @@ if ( count( $args ) > 0 ) {
}
} else {
- echo( "failed.\n" );
+ echo( "failed. (at recordUpload stage)\n" );
$svar = 'failed';
}
diff --git a/maintenance/importSiteScripts.php b/maintenance/importSiteScripts.php
new file mode 100644
index 00000000..849c7b1b
--- /dev/null
+++ b/maintenance/importSiteScripts.php
@@ -0,0 +1,76 @@
+<?php
+/**
+ * Maintenance script to import all scripts in the MediaWiki namespace from a
+ * local site.
+ */
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+
+class ImportSiteScripts extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = 'Import site scripts from a site';
+ $this->addArg( 'api', 'API base url' );
+ $this->addArg( 'index', 'index.php base url' );
+ $this->addOption( 'username', 'User name of the script importer' );
+ }
+
+ public function execute() {
+ global $wgUser;
+ $wgUser = User::newFromName( $this->getOption( 'username', 'ScriptImporter' ) );
+
+ $baseUrl = $this->getArg( 1 );
+ $pageList = $this->fetchScriptList();
+ $this->output( 'Importing ' . count( $pageList ) . " pages\n" );
+
+ foreach ( $pageList as $page ) {
+ $this->output( "Importing $page\n" );
+ $url = wfAppendQuery( $baseUrl, array(
+ 'action' => 'raw',
+ 'title' => "MediaWiki:{$page}" ) );
+ $text = Http::get( $url );
+
+ $title = Title::makeTitleSafe( NS_MEDIAWIKI, $page );
+ $article = new Article( $title );
+ $article->doEdit( $text, "Importing from $url", 0 );
+ }
+
+ }
+
+ protected function fetchScriptList() {
+ $data = array(
+ 'action' => 'query',
+ 'format' => 'php',//'json',
+ 'list' => 'allpages',
+ 'apnamespace' => '8',
+ 'aplimit' => '500',
+ );
+ $baseUrl = $this->getArg( 0 );
+ $pages = array();
+
+ do {
+ $url = wfAppendQuery( $baseUrl, $data );
+ $strResult = Http::get( $url );
+ //$result = FormatJson::decode( $strResult ); // Still broken
+ $result = unserialize( $strResult );
+
+ if ( !empty( $result['query']['allpages'] ) ) {
+ foreach ( $result['query']['allpages'] as $page ) {
+ if ( substr( $page['title'], -3 ) === '.js' ) {
+ strtok( $page['title'], ':' );
+ $pages[] = strtok( '' );
+ }
+ }
+ }
+ if ( !empty( $result['query-continue'] ) ) {
+ $data['apfrom'] = $result['query-continue']['allpages']['apfrom'];
+ $this->output( "Fetching new batch from {$data['apfrom']}\n" );
+ }
+ } while ( isset( $result['query-continue'] ) );
+
+ return $pages;
+
+ }
+}
+
+$maintClass = 'ImportSiteScripts';
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/importTextFile.php b/maintenance/importTextFile.php
index 3b77eb5f..b78ae039 100644
--- a/maintenance/importTextFile.php
+++ b/maintenance/importTextFile.php
@@ -4,6 +4,21 @@
* Maintenance script allows creating or editing pages using
* the contents of a text file
*
+ * 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
* @author Rob Church <robchur@gmail.com>
diff --git a/maintenance/importUseModWiki.php b/maintenance/importUseModWiki.php
index bff4cd02..a28d57a5 100644
--- a/maintenance/importUseModWiki.php
+++ b/maintenance/importUseModWiki.php
@@ -1,5 +1,4 @@
<?php
-
/**
* Import data from a UseModWiki into a MediaWiki wiki
* 2003-02-09 Brion VIBBER <brion@pobox.com>
@@ -21,45 +20,69 @@
* schema changes.
* 2005-03-14
*
+ * 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
+ *
* @todo document
* @file
* @ingroup Maintenance
*/
-if ( php_sapi_name() != 'cli' ) {
- echo "Please customize the settings and run me from the command line.";
- die( -1 );
-}
-
-/** Set these correctly! */
-$wgImportEncoding = "CP1252"; /* We convert all to UTF-8 */
-$wgRootDirectory = "/kalman/Projects/wiki2002/wiki/lib-http/db/wiki";
+require_once( "Maintenance.php" );
-/* On a large wiki, you might run out of memory */
-@ini_set( 'memory_limit', '40M' );
+class ImportUseModWiki extends Maintenance {
-/* globals */
-$wgFieldSeparator = "\xb3"; # Some wikis may use different char
- $FS = $wgFieldSeparator ;
- $FS1 = $FS . "1" ;
- $FS2 = $FS . "2" ;
- $FS3 = $FS . "3" ;
+ private $encoding, $rootDirectory = '';
-# Unicode sanitization tools
-require_once( dirname( dirname( __FILE__ ) ) . '/includes/normal/UtfNormal.php' );
-
-$usercache = array();
+ /**
+ * Field separators
+ * @var String
+ */
+ private $FS1, $FS2, $FS3 = '';
-importPages();
+ /**
+ * @var Array
+ */
+ private $usercache, $nowiki = array();
-# ------------------------------------------------------------------------------
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Import pages from UseMod wikis";
+ $this->addOption( 'encoding', 'Encoding of the imported text, default CP1252', false, true );
+ /**
+ * If UseModWiki's New File System is used:
+ * $NewFS = 1; # 1 = new multibyte $FS, 0 = old $FS
+ * Use "\xb3"; for the Old File System
+ * Changed with UTF-8 UseModWiki
+ * http://www.usemod.com/cgi-bin/wiki.pl?SupportForUtf8
+ * http://www.usemod.com/cgi-bin/wiki.pl?WikiBugs/NewFieldSeparatorWronglyTreated
+ * http://www.meatballwiki.org/wiki/WikiEngine#Q_amp_A
+ */
+ $this->addOption( 'separator', 'Field separator to use, default \x1E\xFF\xFE\x1E', false, true );
+ $this->addArg( 'path', 'Path to your UseMod wiki' );
+ }
-function importPages()
-{
- global $wgRootDirectory;
+ public function execute() {
+ $this->rootDirectory = $this->getArg();
+ $this->encoding = $this->getOption( 'encoding', 'CP1252' );
+ $sep = $this->getOption( 'separator', "\x1E\xFF\xFE\x1E" );
+ $this->FS1 = "{$sep}1";
+ $this->FS2 = "{$sep}2";
+ $this->FS3 = "{$sep}3";
- $gt = '>';
- echo <<<XML
+ echo <<<XML
<?xml version="1.0" encoding="UTF-8" ?>
<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.1/"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
@@ -75,290 +98,278 @@ XML;
'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R',
'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'other' );
foreach ( $letters as $letter ) {
- $dir = "$wgRootDirectory/page/$letter";
+ $dir = "{$this->rootDirectory}/page/$letter";
if ( is_dir( $dir ) )
- importPageDirectory( $dir );
+ $this->importPageDirectory( $dir );
}
echo <<<XML
</mediawiki>
XML;
-}
+ }
-function importPageDirectory( $dir, $prefix = "" )
-{
- echo "\n<!-- Checking page directory " . xmlCommentSafe( $dir ) . " -->\n";
- $mydir = opendir( $dir );
- while ( $entry = readdir( $mydir ) ) {
- $m = array();
- if ( preg_match( '/^(.+)\.db$/', $entry, $m ) ) {
- echo importPage( $prefix . $m[1] );
- } else {
- if ( is_dir( "$dir/$entry" ) ) {
- if ( $entry != '.' && $entry != '..' ) {
- importPageDirectory( "$dir/$entry", "$entry/" );
- }
+ private function importPageDirectory( $dir, $prefix = "" ) {
+ echo "\n<!-- Checking page directory " . $this->xmlCommentSafe( $dir ) . " -->\n";
+ $mydir = opendir( $dir );
+ while ( $entry = readdir( $mydir ) ) {
+ $m = array();
+ if ( preg_match( '/^(.+)\.db$/', $entry, $m ) ) {
+ echo $this->importPage( $prefix . $m[1] );
} else {
- echo "<!-- File '" . xmlCommentSafe( $entry ) . "' doesn't seem to contain an article. Skipping. -->\n";
+ if ( is_dir( "$dir/$entry" ) ) {
+ if ( $entry != '.' && $entry != '..' ) {
+ $this->importPageDirectory( "$dir/$entry", "$entry/" );
+ }
+ } else {
+ echo "<!-- File '" . $this->xmlCommentSafe( $entry ) . "' doesn't seem to contain an article. Skipping. -->\n";
+ }
}
}
}
-}
-
-# ------------------------------------------------------------------------------
-
-/* fetch_ functions
- Grab a given item from the database
- */
-
-function useModFilename( $title ) {
- $c = substr( $title, 0, 1 );
- if ( preg_match( '/[A-Z]/i', $c ) ) {
- return strtoupper( $c ) . "/$title";
- }
- return "other/$title";
-}
-
-function fetchPage( $title )
-{
- global $FS1, $FS2, $FS3, $wgRootDirectory;
-
- $fname = $wgRootDirectory . "/page/" . useModFilename( $title ) . ".db";
- if ( !file_exists( $fname ) ) {
- echo "Couldn't open file '$fname' for page '$title'.\n";
- die( -1 );
+ private function useModFilename( $title ) {
+ $c = substr( $title, 0, 1 );
+ if ( preg_match( '/[A-Z]/i', $c ) ) {
+ return strtoupper( $c ) . "/$title";
+ }
+ return "other/$title";
}
- $page = splitHash( $FS1, file_get_contents( $fname ) );
- $section = splitHash( $FS2, $page["text_default"] );
- $text = splitHash( $FS3, $section["data"] );
-
- return array2object( array( "text" => $text["text"] , "summary" => $text["summary"] ,
- "minor" => $text["minor"] , "ts" => $section["ts"] ,
- "username" => $section["username"] , "host" => $section["host"] ) );
-}
-
-function fetchKeptPages( $title )
-{
- global $FS1, $FS2, $FS3, $wgRootDirectory;
-
- $fname = $wgRootDirectory . "/keep/" . useModFilename( $title ) . ".kp";
- if ( !file_exists( $fname ) ) return array();
+ private function fetchPage( $title ) {
+ $fname = $this->rootDirectory . "/page/" . $this->useModFilename( $title ) . ".db";
+ if ( !file_exists( $fname ) ) {
+ echo "Couldn't open file '$fname' for page '$title'.\n";
+ die( -1 );
+ }
- $keptlist = explode( $FS1, file_get_contents( $fname ) );
- array_shift( $keptlist ); # Drop the junk at beginning of file
+ $page = $this->splitHash( $this->FS1, file_get_contents( $fname ) );
+ $section = $this->splitHash( $this->FS2, $page["text_default"] );
+ $text = $this->splitHash( $this->FS3, $section["data"] );
- $revisions = array();
- foreach ( $keptlist as $rev ) {
- $section = splitHash( $FS2, $rev );
- $text = splitHash( $FS3, $section["data"] );
- if ( $text["text"] && $text["minor"] != "" && ( $section["ts"] * 1 > 0 ) ) {
- array_push( $revisions, array2object( array ( "text" => $text["text"] , "summary" => $text["summary"] ,
- "minor" => $text["minor"] , "ts" => $section["ts"] ,
- "username" => $section["username"] , "host" => $section["host"] ) ) );
- } else {
- echo "<!-- skipped a bad old revision -->\n";
- }
+ return $this->array2object( array( "text" => $text["text"] , "summary" => $text["summary"] ,
+ "minor" => $text["minor"] , "ts" => $section["ts"] ,
+ "username" => $section["username"] , "host" => $section["host"] ) );
}
- return $revisions;
-}
-function splitHash ( $sep , $str ) {
- $temp = explode ( $sep , $str ) ;
- $ret = array () ;
- for ( $i = 0; $i + 1 < count ( $temp ) ; $i++ ) {
- $ret[$temp[$i]] = $temp[++$i] ;
+ private function fetchKeptPages( $title ) {
+ $fname = $this->rootDirectory . "/keep/" . $this->useModFilename( $title ) . ".kp";
+ if ( !file_exists( $fname ) ) return array();
+
+ $keptlist = explode( $this->FS1, file_get_contents( $fname ) );
+ array_shift( $keptlist ); # Drop the junk at beginning of file
+
+ $revisions = array();
+ foreach ( $keptlist as $rev ) {
+ $section = $this->splitHash( $this->FS2, $rev );
+ $text = $this->splitHash( $this->FS3, $section["data"] );
+ if ( $text["text"] && $text["minor"] != "" && ( $section["ts"] * 1 > 0 ) ) {
+ array_push( $revisions, $this->array2object( array ( "text" => $text["text"] , "summary" => $text["summary"] ,
+ "minor" => $text["minor"] , "ts" => $section["ts"] ,
+ "username" => $section["username"] , "host" => $section["host"] ) ) );
+ } else {
+ echo "<!-- skipped a bad old revision -->\n";
+ }
}
- return $ret ;
+ return $revisions;
}
+ private function splitHash( $sep , $str ) {
+ $temp = explode ( $sep , $str ) ;
+ $ret = array () ;
+ for ( $i = 0; $i + 1 < count ( $temp ) ; $i++ ) {
+ $ret[$temp[$i]] = $temp[++$i] ;
+ }
+ return $ret ;
+ }
-/* import_ functions
- Take a fetched item and produce SQL
- */
-
-function checkUserCache( $name, $host )
-{
- global $usercache;
-
- if ( $name ) {
- if ( in_array( $name, $usercache ) ) {
- $userid = $usercache[$name];
+ private function checkUserCache( $name, $host ) {
+ if ( $name ) {
+ if ( in_array( $name, $this->usercache ) ) {
+ $userid = $this->usercache[$name];
+ } else {
+ # If we haven't imported user accounts
+ $userid = 0;
+ }
+ $username = str_replace( '_', ' ', $name );
} else {
- # If we haven't imported user accounts
$userid = 0;
+ $username = $host;
}
- $username = str_replace( '_', ' ', $name );
- } else {
- $userid = 0;
- $username = $host;
+ return array( $userid, $username );
}
- return array( $userid, $username );
-}
-
-function importPage( $title )
-{
- echo "\n<!-- Importing page " . xmlCommentSafe( $title ) . " -->\n";
- $page = fetchPage( $title );
-
- $newtitle = xmlsafe( str_replace( '_', ' ', recodeText( $title ) ) );
- $munged = mungeFormat( $page->text );
- if ( $munged != $page->text ) {
- /**
- * Save a *new* revision with the conversion, and put the
- * previous last version into the history.
- */
- $next = array2object( array(
- 'text' => $munged,
- 'minor' => 1,
- 'username' => 'Conversion script',
- 'host' => '127.0.0.1',
- 'ts' => time(),
- 'summary' => 'link fix',
- ) );
- $revisions = array( $page, $next );
- } else {
- /**
- * Current revision:
- */
- $revisions = array( $page );
- }
- $xml = <<<XML
- <page>
- <title>$newtitle</title>
+ private function importPage( $title ) {
+ echo "\n<!-- Importing page " . $this->xmlCommentSafe( $title ) . " -->\n";
+ $page = $this->fetchPage( $title );
+
+ $newtitle = $this->xmlsafe( str_replace( '_', ' ', $this->recodeText( $title ) ) );
+
+ $munged = $this->mungeFormat( $page->text );
+ if ( $munged != $page->text ) {
+ /**
+ * Save a *new* revision with the conversion, and put the
+ * previous last version into the history.
+ */
+ $next = $this->array2object( array(
+ 'text' => $munged,
+ 'minor' => 1,
+ 'username' => 'Conversion script',
+ 'host' => '127.0.0.1',
+ 'ts' => time(),
+ 'summary' => 'link fix',
+ ) );
+ $revisions = array( $page, $next );
+ } else {
+ /**
+ * Current revision:
+ */
+ $revisions = array( $page );
+ }
+ $xml = <<<XML
+ <page>
+ <title>$newtitle</title>
XML;
- # History
- $revisions = array_merge( $revisions, fetchKeptPages( $title ) );
- if ( count( $revisions ) == 0 ) {
- return NULL; // Was "$sql", which does not appear to be defined.
- }
+ # History
+ $revisions = array_merge( $revisions, $this->fetchKeptPages( $title ) );
+ if ( count( $revisions ) == 0 ) {
+ return NULL; // Was "$sql", which does not appear to be defined.
+ }
- foreach ( $revisions as $rev ) {
- $text = xmlsafe( recodeText( $rev->text ) );
- $minor = ( $rev->minor ? '<minor/>' : '' );
- list( /* $userid */ , $username ) = checkUserCache( $rev->username, $rev->host );
- $username = xmlsafe( recodeText( $username ) );
- $timestamp = xmlsafe( timestamp2ISO8601( $rev->ts ) );
- $comment = xmlsafe( recodeText( $rev->summary ) );
-
- $xml .= <<<XML
- <revision>
- <timestamp>$timestamp</timestamp>
- <contributor><username>$username</username></contributor>
- $minor
- <comment>$comment</comment>
- <text>$text</text>
- </revision>
+ foreach ( $revisions as $rev ) {
+ $text = $this->xmlsafe( $this->recodeText( $rev->text ) );
+ $minor = ( $rev->minor ? '<minor/>' : '' );
+ list( /* $userid */ , $username ) = $this->checkUserCache( $rev->username, $rev->host );
+ $username = $this->xmlsafe( $this->recodeText( $username ) );
+ $timestamp = $this->xmlsafe( $this->timestamp2ISO8601( $rev->ts ) );
+ $comment = $this->xmlsafe( $this->recodeText( $rev->summary ) );
+
+ $xml .= <<<XML
+ <revision>
+ <timestamp>$timestamp</timestamp>
+ <contributor><username>$username</username></contributor>
+ $minor
+ <comment>$comment</comment>
+ <text>$text</text>
+ </revision>
XML;
+ }
+ $xml .= "</page>\n\n";
+ return $xml;
}
- $xml .= "</page>\n\n";
- return $xml;
-}
-# Whee!
-function recodeText( $string ) {
- global $wgImportEncoding;
- # For currently latin-1 wikis
- $string = str_replace( "\r\n", "\n", $string );
- $string = @iconv( $wgImportEncoding, "UTF-8", $string );
- $string = wfMungeToUtf8( $string ); # Any old &#1234; stuff
- return $string;
-}
-
-function wfUtf8Sequence( $codepoint ) {
- if ( $codepoint < 0x80 ) return chr( $codepoint );
- if ( $codepoint < 0x800 ) return chr( $codepoint >> 6 & 0x3f | 0xc0 ) .
- chr( $codepoint & 0x3f | 0x80 );
- if ( $codepoint < 0x10000 ) return chr( $codepoint >> 12 & 0x0f | 0xe0 ) .
- chr( $codepoint >> 6 & 0x3f | 0x80 ) .
- chr( $codepoint & 0x3f | 0x80 );
- if ( $codepoint < 0x100000 ) return chr( $codepoint >> 18 & 0x07 | 0xf0 ) . # Double-check this
- chr( $codepoint >> 12 & 0x3f | 0x80 ) .
- chr( $codepoint >> 6 & 0x3f | 0x80 ) .
- chr( $codepoint & 0x3f | 0x80 );
- # Doesn't yet handle outside the BMP
- return "&#$codepoint;";
-}
+ private function recodeText( $string ) {
+ # For currently latin-1 wikis
+ $string = str_replace( "\r\n", "\n", $string );
+ $string = @iconv( $this->encoding, "UTF-8", $string );
+ $string = $this->mungeToUtf8( $string ); # Any old &#1234; stuff
+ return $string;
+ }
-function wfMungeToUtf8( $string ) {
- $string = preg_replace ( '/&#([0-9]+);/e', 'wfUtf8Sequence($1)', $string );
- $string = preg_replace ( '/&#x([0-9a-f]+);/ie', 'wfUtf8Sequence(0x$1)', $string );
- # Should also do named entities here
- return $string;
-}
+ /**
+ * @todo FIXME: Don't use /e
+ */
+ private function mungeToUtf8( $string ) {
+ $string = preg_replace ( '/&#([0-9]+);/e', 'wfUtf8Sequence($1)', $string );
+ $string = preg_replace ( '/&#x([0-9a-f]+);/ie', 'wfUtf8Sequence(0x$1)', $string );
+ # Should also do named entities here
+ return $string;
+ }
-function timestamp2ISO8601( $ts ) {
- # 2003-08-05T18:30:02Z
- return gmdate( 'Y-m-d', $ts ) . 'T' . gmdate( 'H:i:s', $ts ) . 'Z';
-}
+ private function timestamp2ISO8601( $ts ) {
+ # 2003-08-05T18:30:02Z
+ return gmdate( 'Y-m-d', $ts ) . 'T' . gmdate( 'H:i:s', $ts ) . 'Z';
+ }
-function xmlsafe( $string ) {
/**
* The page may contain old data which has not been properly normalized.
* Invalid UTF-8 sequences or forbidden control characters will make our
* XML output invalid, so be sure to strip them out.
+ * @param String $string Text to clean up
+ * @return String
*/
- $string = UtfNormal::cleanUp( $string );
-
- $string = htmlspecialchars( $string );
- return $string;
-}
-
-function xmlCommentSafe( $text ) {
- return str_replace( '--', '\\-\\-', xmlsafe( recodeText( $text ) ) );
-}
+ private function xmlsafe( $string ) {
+ $string = UtfNormal::cleanUp( $string );
+ $string = htmlspecialchars( $string );
+ return $string;
+ }
+ private function xmlCommentSafe( $text ) {
+ return str_replace( '--', '\\-\\-', $this->xmlsafe( $this->recodeText( $text ) ) );
+ }
-function array2object( $arr ) {
- $o = (object)0;
- foreach ( $arr as $x => $y ) {
- $o->$x = $y;
+ private function array2object( $arr ) {
+ $o = (object)0;
+ foreach ( $arr as $x => $y ) {
+ $o->$x = $y;
+ }
+ return $o;
}
- return $o;
-}
+ /**
+ * Make CamelCase and /Talk links work
+ */
+ private function mungeFormat( $text ) {
+ $this->nowiki = array();
+ $staged = preg_replace_callback(
+ '/(<nowiki>.*?<\\/nowiki>|(?:http|https|ftp):\\S+|\[\[[^]\\n]+]])/s',
+ array( $this, 'nowikiPlaceholder' ), $text );
+
+ # This is probably not 100% correct, I'm just
+ # glancing at the UseModWiki code.
+ $upper = "[A-Z]";
+ $lower = "[a-z_0-9]";
+ $any = "[A-Za-z_0-9]";
+ $camel = "(?:$upper+$lower+$upper+$any*)";
+ $subpage = "(?:\\/$any+)";
+ $substart = "(?:\\/$upper$any*)";
+
+ $munged = preg_replace( "/(?!\\[\\[)($camel$subpage*|$substart$subpage*)\\b(?!\\]\\]|>)/",
+ '[[$1]]', $staged );
+
+ $final = preg_replace( '/' . preg_quote( $this->placeholder() ) . '/s',
+ array( $this, 'nowikiShift' ), $munged );
+ return $final;
+ }
-/**
- * Make CamelCase and /Talk links work
- */
-function mungeFormat( $text ) {
- global $nowiki;
- $nowiki = array();
- $staged = preg_replace_callback(
- '/(<nowiki>.*?<\\/nowiki>|(?:http|https|ftp):\\S+|\[\[[^]\\n]+]])/s',
- 'nowikiPlaceholder', $text );
-
- # This is probably not 100% correct, I'm just
- # glancing at the UseModWiki code.
- $upper = "[A-Z]";
- $lower = "[a-z_0-9]";
- $any = "[A-Za-z_0-9]";
- $camel = "(?:$upper+$lower+$upper+$any*)";
- $subpage = "(?:\\/$any+)";
- $substart = "(?:\\/$upper$any*)";
-
- $munged = preg_replace( "/(?!\\[\\[)($camel$subpage*|$substart$subpage*)\\b(?!\\]\\]|>)/",
- '[[$1]]', $staged );
-
- $final = preg_replace( '/' . preg_quote( placeholder() ) . '/es',
- 'array_shift( $nowiki )', $munged );
- return $final;
-}
+ private function placeholder( $x = null ) {
+ return '\xffplaceholder\xff';
+ }
+ public function nowikiPlaceholder( $matches ) {
+ $this->nowiki[] = $matches[1];
+ return $this->placeholder();
+ }
-function placeholder( $x = null ) {
- return '\xffplaceholder\xff';
+ public function nowikiShift() {
+ return array_shift( $this->nowiki );
+ }
}
-function nowikiPlaceholder( $matches ) {
- global $nowiki;
- $nowiki[] = $matches[1];
- return placeholder();
+function wfUtf8Sequence( $codepoint ) {
+ if ( $codepoint < 0x80 ) {
+ return chr( $codepoint );
+ }
+ if ( $codepoint < 0x800 ) {
+ return chr( $codepoint >> 6 & 0x3f | 0xc0 ) .
+ chr( $codepoint & 0x3f | 0x80 );
+ }
+ if ( $codepoint < 0x10000 ) {
+ return chr( $codepoint >> 12 & 0x0f | 0xe0 ) .
+ chr( $codepoint >> 6 & 0x3f | 0x80 ) .
+ chr( $codepoint & 0x3f | 0x80 );
+ }
+ if ( $codepoint < 0x100000 ) {
+ return chr( $codepoint >> 18 & 0x07 | 0xf0 ) . # Double-check this
+ chr( $codepoint >> 12 & 0x3f | 0x80 ) .
+ chr( $codepoint >> 6 & 0x3f | 0x80 ) .
+ chr( $codepoint & 0x3f | 0x80 );
+ }
+ # Doesn't yet handle outside the BMP
+ return "&#$codepoint;";
}
-
+$maintClass = 'ImportUseModWiki';
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/importUseModWikipedia.php b/maintenance/importUseModWikipedia.php
new file mode 100644
index 00000000..c4b8112f
--- /dev/null
+++ b/maintenance/importUseModWikipedia.php
@@ -0,0 +1,892 @@
+<?php
+
+/**
+ * A script to read a dump of the English Wikipedia from the UseModWiki period, and to
+ * generate an XML dump in MediaWiki format.
+ *
+ * Some relevant code was ported from UseModWiki 0.92.
+ *
+ */
+
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+require_once( dirname( __FILE__ ) .'/../includes/normal/UtfNormalUtil.php' );
+
+
+class ImportUseModWikipedia extends Maintenance {
+ var $encodeMap, $decodeMap;
+
+ var $deepRenames = array(
+ 'JimboWales' => 983862286,
+ 'TexaS' => 983918410,
+ 'HistoryOfUnitedStatesTalk' => 984795423,
+ 'MetallicA' => 985128533,
+ 'PythagoreanTheorem' => 985225545,
+ 'TheCanonofScripture' => 985368223,
+ 'TaoTehChing' => 985368222,
+ //'TheMostRemarkableFormulaInTheWorld' => 985368221,
+ 'TheRecorder' => 985368220,
+ 'GladstoneOregon' => 985368219,
+ 'PacificBeach' => '?',
+ 'AaRiver' => '?',
+ );
+
+ var $replacements = array();
+
+ var $renameTextLinksOps = array(
+ 983846265 => array(
+ 'TestIgnore' => 'IgnoreTest',
+ ),
+ 983848080 => array(
+ 'UnitedLocomotiveWorks' => 'Atlas Shrugged/United Locomotive Works'
+ ),
+ 983856376 => array(
+ 'WikiPedia' => 'Wikipedia',
+ ),
+ 983896152 => array(
+ 'John_F_Kennedy' => 'John_F._Kennedy',
+ ),
+ 983905871 => array(
+ 'LarrySanger' => 'Larry_Sanger'
+ ),
+ 984697068 => array(
+ 'UnitedStates' => 'United States',
+ ),
+ 984792748 => array(
+ 'LibertarianisM' => 'Libertarianism'
+ ),
+ 985327832 => array(
+ 'AnarchisM' => 'Anarchism',
+ ),
+ 985290063 => array(
+ 'HistoryOfUnitedStatesDiscussion' => 'History_Of_United_States_Discussion'
+ ),
+ 985290091 => array(
+ 'BritishEmpire' => 'British Empire'
+ ),
+ /*
+ 985468958 => array(
+ 'ScienceFiction' => 'Science fiction',
+ ),*/
+ );
+
+ /**
+ * Hack for observed substitution issues
+ */
+ var $skipSelfSubstitution = array(
+ 'Pythagorean_Theorem',
+ 'The_Most_Remarkable_Formula_In_The_World',
+ 'Wine',
+ );
+
+ var $unixLineEndingsOps = array(
+ 987743732 => 'Wikipedia_FAQ'
+ );
+
+ var $replacementsDone = array();
+
+ var $moveLog = array();
+ var $moveDests = array();
+ var $revId;
+
+ var $rc = array();
+ var $textCache = array();
+ var $blacklist = array();
+
+ var $FS, $FS1, $FS2, $FS3;
+ var $FreeLinkPattern, $UrlPattern, $LinkPattern, $InterLinkPattern;
+
+ var $cp1252Table = array(
+0x80 => 0x20ac,
+0x81 => 0x0081,
+0x82 => 0x201a,
+0x83 => 0x0192,
+0x84 => 0x201e,
+0x85 => 0x2026,
+0x86 => 0x2020,
+0x87 => 0x2021,
+0x88 => 0x02c6,
+0x89 => 0x2030,
+0x8a => 0x0160,
+0x8b => 0x2039,
+0x8c => 0x0152,
+0x8d => 0x008d,
+0x8e => 0x017d,
+0x8f => 0x008f,
+0x90 => 0x0090,
+0x91 => 0x2018,
+0x92 => 0x2019,
+0x93 => 0x201c,
+0x94 => 0x201d,
+0x95 => 0x2022,
+0x96 => 0x2013,
+0x97 => 0x2014,
+0x98 => 0x02dc,
+0x99 => 0x2122,
+0x9a => 0x0161,
+0x9b => 0x203a,
+0x9c => 0x0153,
+0x9d => 0x009d,
+0x9e => 0x017e,
+0x9f => 0x0178);
+
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( 'datadir', 'the value of $DataDir from wiki.cgi', true, true );
+ $this->addOption( 'outfile', 'the name of the output XML file', true, true );
+ $this->initLinkPatterns();
+
+ $this->encodeMap = $this->decodeMap = array();
+
+ for ($source = 0; $source <= 0xff; $source++) {
+ if ( isset( $this->cp1252Table[$source] ) ) {
+ $dest = $this->cp1252Table[$source];
+ } else {
+ $dest = $source;
+ }
+ $sourceChar = chr( $source );
+ $destChar = codepointToUtf8( $dest );
+ $this->encodeMap[$sourceChar] = $destChar;
+ $this->decodeMap[$destChar] = $sourceChar;
+ }
+ }
+
+ function initLinkPatterns() {
+ # Field separators are used in the URL-style patterns below.
+ $this->FS = "\xb3"; # The FS character is a superscript "3"
+ $this->FS1 = $this->FS . "1"; # The FS values are used to separate fields
+ $this->FS2 = $this->FS . "2"; # in stored hashtables and other data structures.
+ $this->FS3 = $this->FS . "3"; # The FS character is not allowed in user data.
+
+ $UpperLetter = "[A-Z";
+ $LowerLetter = "[a-z";
+ $AnyLetter = "[A-Za-z";
+ $AnyLetter .= "_0-9";
+ $UpperLetter .= "]"; $LowerLetter .= "]"; $AnyLetter .= "]";
+
+ # Main link pattern: lowercase between uppercase, then anything
+ $LpA = $UpperLetter . "+" . $LowerLetter . "+" . $UpperLetter
+ . $AnyLetter . "*";
+ # Optional subpage link pattern: uppercase, lowercase, then anything
+ $LpB = $UpperLetter . "+" . $LowerLetter . "+" . $AnyLetter . "*";
+
+ # Loose pattern: If subpage is used, subpage may be simple name
+ $this->LinkPattern = "((?:(?:$LpA)?\\/$LpB)|$LpA)";
+ $QDelim = '(?:"")?'; # Optional quote delimiter (not in output)
+ $this->LinkPattern .= $QDelim;
+
+ # Inter-site convention: sites must start with uppercase letter
+ # (Uppercase letter avoids confusion with URLs)
+ $InterSitePattern = $UpperLetter . $AnyLetter . "+";
+ $this->InterLinkPattern = "((?:$InterSitePattern:[^\\]\\s\"<>{$this->FS}]+)$QDelim)";
+
+ $AnyLetter = "[-,. _0-9A-Za-z]";
+ $this->FreeLinkPattern = "($AnyLetter+)";
+ $this->FreeLinkPattern = "((?:(?:$AnyLetter+)?\\/)?$AnyLetter+)";
+ $this->FreeLinkPattern .= $QDelim;
+
+ # Url-style links are delimited by one of:
+ # 1. Whitespace (kept in output)
+ # 2. Left or right angle-bracket (< or >) (kept in output)
+ # 3. Right square-bracket (]) (kept in output)
+ # 4. A single double-quote (") (kept in output)
+ # 5. A $FS (field separator) character (kept in output)
+ # 6. A double double-quote ("") (removed from output)
+
+ $UrlProtocols = "http|https|ftp|afs|news|nntp|mid|cid|mailto|wais|"
+ . "prospero|telnet|gopher";
+ $UrlProtocols .= '|file';
+ $this->UrlPattern = "((?:(?:$UrlProtocols):[^\\]\\s\"<>{$this->FS}]+)$QDelim)";
+ $ImageExtensions = "(gif|jpg|png|bmp|jpeg)";
+ $RFCPattern = "RFC\\s?(\\d+)";
+ $ISBNPattern = "ISBN:?([0-9- xX]{10,})";
+ }
+
+ function execute() {
+ $this->articleFileName = '/tmp/importUseMod.' . mt_rand( 0, 0x7ffffff ) . '.tmp';
+ $this->patchFileName = '/tmp/importUseMod.' . mt_rand( 0, 0x7ffffff ) . '.tmp';
+ $this->dataDir = $this->getOption( 'datadir' );
+ $this->outFile = fopen( $this->getOption( 'outfile' ), 'w' );
+ if ( !$this->outFile ) {
+ echo "Unable to open output file\n";
+ return 1;
+ }
+ $this->writeXmlHeader();
+ $this->readRclog();
+ $this->writeMoveLog();
+ $this->writeRevisions();
+ $this->reconcileCurrentRevs();
+ $this->writeXmlFooter();
+ unlink( $this->articleFileName );
+ unlink( $this->patchFileName );
+ return 0;
+ }
+
+ function writeXmlHeader() {
+ fwrite( $this->outFile, <<<EOT
+<mediawiki xmlns="http://www.mediawiki.org/xml/export-0.3/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mediawiki.org/xml/export-0.3/ http://www.mediawiki.org/xml/export-0.3.xsd" version="0.3" xml:lang="en">
+ <siteinfo>
+ <sitename>Wikipedia</sitename>
+ <base>http://www.wikipedia.com/</base>
+ <generator>MediaWiki 1.18alpha importUseModWikipedia.php</generator>
+ <case>case-sensitive</case>
+ <namespaces>
+ <namespace key="0" />
+ </namespaces>
+ </siteinfo>
+
+EOT
+ );
+ }
+
+ function writeXmlFooter() {
+ fwrite( $this->outFile, "</mediawiki>\n" );
+ }
+
+ function readRclog() {
+ $rcFile = fopen( "{$this->dataDir}/rclog", 'r' );
+ while ( $line = fgets( $rcFile ) ) {
+ $bits = explode( $this->FS3, $line );
+ if ( count( $bits ) !== 7 ) {
+ echo "Error reading rclog\n";
+ return;
+ }
+ $params = array(
+ 'timestamp' => $bits[0],
+ 'rctitle' => $bits[1],
+ 'summary' => $bits[2],
+ 'minor' => $bits[3],
+ 'host' => $bits[4],
+ 'kind' => $bits[5],
+ 'extra' => array()
+ );
+ $extraList = explode( $this->FS2, $bits[6] );
+
+ for ( $i = 0; $i < count( $extraList ); $i += 2 ) {
+ $params['extra'][$extraList[$i]] = $extraList[$i + 1];
+ }
+ $this->rc[$params['timestamp']][] = $params;
+ }
+ }
+
+ function writeMoveLog() {
+ $this->moveLog = array();
+ $deepRenames = $this->deepRenames;
+ echo "Calculating move log...\n";
+ $this->processDiffFile( array( $this, 'moveLogCallback' ) );
+
+ // We have the timestamp intervals, now make a guess at the actual timestamp
+ foreach ( $this->moveLog as $newTitle => $params ) {
+ // Is there a time specified?
+ $drTime = false;
+ if ( isset( $deepRenames[$params['old']] ) ) {
+ $drTime = $deepRenames[$params['old']];
+ if ( $drTime !== '?' ) {
+ if ( ( !isset( $params['endTime'] ) || $drTime < $params['endTime'] )
+ && $drTime > $params['startTime'] )
+ {
+ $this->moveLog[$newTitle]['timestamp'] = $drTime;
+ $this->moveLog[$newTitle]['deep'] = true;
+
+ echo "{$params['old']} -> $newTitle at $drTime\n";
+ unset( $deepRenames[$params['old']] );
+ continue;
+ } else {
+ echo "WARNING: deep rename time invalid: {$params['old']}\n";
+ unset( $deepRenames[$params['old']] );
+ }
+ }
+ }
+
+ // Guess that it is one second after the last edit to the page before it was moved
+ $this->moveLog[$newTitle]['timestamp'] = $params['startTime'] + 1;
+ if ( $drTime === '?' ) {
+ $this->moveLog[$newTitle]['deep'] = true;
+ unset( $deepRenames[$params['old']] );
+ }
+ if ( isset( $params['endTime'] ) ) {
+ $this->printLatin1( "{$params['old']} -> $newTitle between " .
+ "{$params['startTime']} and {$params['endTime']}\n" );
+ } else {
+ $this->printLatin1( "{$params['old']} -> $newTitle after " .
+ "{$params['startTime']}\n" );
+ }
+ }
+
+ // Write the move log to the XML file
+ $id = 1;
+ foreach ( $this->moveLog as $newTitle => $params ) {
+ $out = "<logitem>\n" .
+ $this->element( 'id', $id++ ) .
+ $this->element( 'timestamp', wfTimestamp( TS_ISO_8601, $params['timestamp'] ) ) .
+ "<contributor>\n" .
+ $this->element( 'username', 'UseModWiki admin' ) .
+ "</contributor>" .
+ $this->element( 'type', 'move' ) .
+ $this->element( 'action', 'move' ) .
+ $this->element( 'logtitle', $params['old'] ) .
+ "<params xml:space=\"preserve\">" .
+ htmlspecialchars( $this->encode( "{$newTitle}\n1" ) ) .
+ "</params>\n" .
+ "</logitem>\n";
+ fwrite( $this->outFile, $out );
+ }
+
+ // Check for remaining deep rename entries
+ if ( $deepRenames ) {
+ echo "WARNING: the following entries in \$this->deepRenames are " .
+ "invalid, since no such move exists:\n" .
+ implode( "\n", array_keys( $deepRenames ) ) .
+ "\n\n";
+ }
+
+ }
+
+ function element( $name, $value ) {
+ return "<$name>" . htmlspecialchars( $this->encode( $value ) ) . "</$name>\n";
+ }
+
+ function moveLogCallback( $entry ) {
+ $rctitle = $entry['rctitle'];
+ $title = $entry['title'];
+ $this->moveDests[$rctitle] = $title;
+
+ if ( $rctitle === $title ) {
+ if ( isset( $this->moveLog[$rctitle] )
+ && !isset( $this->moveLog[$rctitle]['endTime'] ) )
+ {
+ // This is the latest time that the page could have been moved
+ $this->moveLog[$rctitle]['endTime'] = $entry['timestamp'];
+ }
+ } else {
+ if ( !isset( $this->moveLog[$rctitle] ) ) {
+ // Initialise the move log entry
+ $this->moveLog[$rctitle] = array(
+ 'old' => $title
+ );
+ }
+ // Update the earliest time the page could have been moved
+ $this->moveLog[$rctitle]['startTime'] = $entry['timestamp'];
+ }
+ }
+
+ function writeRevisions() {
+ $this->numGoodRevs = 0;
+ $this->revId = 1;
+ $this->processDiffFile( array( $this, 'revisionCallback' ) );
+ echo "\n\nImported {$this->numGoodRevs} out of {$this->numRevs}\n";
+ }
+
+ function revisionCallback( $params ) {
+ $title = $params['rctitle'];
+ $editTime = $params['timestamp'];
+
+ if ( isset( $this->blacklist[$title] ) ) {
+ return;
+ }
+ $this->doPendingOps( $editTime );
+
+ $origText = $this->getText( $title );
+ $text = $this->patch( $origText, $params['diff'] );
+ if ( $text === false ) {
+ echo "$editTime $title attempting resolution...\n";
+ $linkSubstitutes = $this->resolveFailedDiff( $origText, $params['diff'] );
+ if ( !$linkSubstitutes ) {
+ $this->printLatin1( "$editTime $title DIFF FAILED\n" );
+ $this->blacklist[$title] = true;
+ return;
+ }
+ $this->printLatin1( "$editTime $title requires substitutions:\n" );
+ $time = $editTime - 1;
+ foreach ( $linkSubstitutes as $old => $new ) {
+ $this->printLatin1( "SUBSTITUTE $old -> $new\n" );
+ $this->renameTextLinks( $old, $new, $time-- );
+ }
+ $origText = $this->getText( $title );
+ $text = $this->patch( $origText, $params['diff'] );
+ if ( $text === false ) {
+ $this->printLatin1( "$editTime $title STILL FAILS!\n" );
+ $this->blacklist[$title] = true;
+ return;
+ }
+
+ echo "\n";
+ }
+
+ $params['text'] = $text;
+ $this->saveRevision( $params );
+ $this->numGoodRevs++;
+ #$this->printLatin1( "$editTime $title\n" );
+ }
+
+ function doPendingOps( $editTime ) {
+ foreach ( $this->moveLog as $newTitle => $entry ) {
+ if ( $entry['timestamp'] <= $editTime ) {
+ unset( $this->moveLog[$newTitle] );
+ if ( isset( $entry['deep'] ) ) {
+ $this->renameTextLinks( $entry['old'], $newTitle, $entry['timestamp'] );
+ }
+ }
+ }
+
+ foreach ( $this->renameTextLinksOps as $renameTime => $replacements ) {
+ if ( $editTime >= $renameTime ) {
+ foreach ( $replacements as $old => $new ) {
+ $this->printLatin1( "SUBSTITUTE $old -> $new\n" );
+ $this->renameTextLinks( $old, $new, $renameTime );
+ }
+ unset( $this->renameTextLinksOps[$renameTime] );
+ }
+ }
+
+ foreach ( $this->unixLineEndingsOps as $fixTime => $title ) {
+ if ( $editTime >= $fixTime ) {
+ $this->printLatin1( "$fixTime $title FIXING LINE ENDINGS\n" );
+ $text = $this->getText( $title );
+ $text = str_replace( "\r", '', $text );
+ $this->saveRevision( array(
+ 'rctitle' => $title,
+ 'timestamp' => $fixTime,
+ 'extra' => array( 'name' => 'UseModWiki admin' ),
+ 'text' => $text,
+ 'summary' => 'Fixing line endings',
+ ) );
+ unset( $this->unixLineEndingsOps[$fixTime] );
+ }
+ }
+ }
+
+ function patch( $source, $diff ) {
+ file_put_contents( $this->articleFileName, $source );
+ file_put_contents( $this->patchFileName, $diff );
+ $error = wfShellExec(
+ wfEscapeShellArg(
+ 'patch',
+ '-n',
+ '-r', '-',
+ '--no-backup-if-mismatch',
+ '--binary',
+ $this->articleFileName,
+ $this->patchFileName
+ ) . ' 2>&1',
+ $status
+ );
+ $text = file_get_contents( $this->articleFileName );
+ if ( $status || $text === false ) {
+ return false;
+ } else {
+ return $text;
+ }
+ }
+
+ function resolveFailedDiff( $origText, $diff ) {
+ $context = array();
+ $diffLines = explode( "\n", $diff );
+ for ( $i = 0; $i < count( $diffLines ); $i++ ) {
+ $diffLine = $diffLines[$i];
+ if ( !preg_match( '/^(\d+)(?:,\d+)?[acd]\d+(?:,\d+)?$/', $diffLine, $m ) ) {
+ continue;
+ }
+
+ $sourceIndex = intval( $m[1] );
+ $i++;
+ while ( $i < count( $diffLines ) && substr( $diffLines[$i], 0, 1 ) === '<' ) {
+ $context[$sourceIndex - 1] = substr( $diffLines[$i], 2 );
+ $sourceIndex++;
+ $i++;
+ }
+ $i--;
+ }
+
+ $changedLinks = array();
+ $origLines = explode( "\n", $origText );
+ foreach ( $context as $i => $contextLine ) {
+ $origLine = isset( $origLines[$i] ) ? $origLines[$i] : '';
+ if ( $contextLine === $origLine ) {
+ continue;
+ }
+ $newChanges = $this->resolveTextChange( $origLine, $contextLine );
+ if ( is_array( $newChanges ) ) {
+ $changedLinks += $newChanges;
+ } else {
+ echo "Resolution failure on line " . ( $i + 1 ) . "\n";
+ $this->printLatin1( $newChanges );
+ }
+ }
+
+ return $changedLinks;
+ }
+
+ function resolveTextChange( $source, $dest ) {
+ $changedLinks = array();
+ $sourceLinks = $this->getLinkList( $source );
+ $destLinks = $this->getLinkList( $dest );
+ $newLinks = array_diff( $destLinks, $sourceLinks );
+ $removedLinks = array_diff( $sourceLinks, $destLinks );
+
+ // Match up the removed links with the new links
+ foreach ( $newLinks as $newLink ) {
+ $minDistance = 100000000;
+ $bestRemovedLink = false;
+ foreach ( $removedLinks as $removedLink ) {
+ $editDistance = levenshtein( $newLink, $removedLink );
+ if ( $editDistance < $minDistance ) {
+ $minDistance = $editDistance;
+ $bestRemovedLink = $removedLink;
+ }
+ }
+ if ( $bestRemovedLink !== false ) {
+ $changedLinks[$bestRemovedLink] = $newLink;
+ $newLinks = array_diff( $newLinks, array( $newLink ) );
+ $removedLinks = array_diff( $removedLinks, array( $bestRemovedLink ) );
+ }
+ }
+
+ $proposal = $source;
+ foreach ( $changedLinks as $removedLink => $newLink ) {
+ $proposal = $this->substituteTextLinks( $removedLink, $newLink, $proposal );
+ }
+ if ( $proposal !== $dest ) {
+ // Resolution failed
+ $msg = "Source line: $source\n" .
+ "Source links: " . implode( ', ', $sourceLinks ) . "\n" .
+ "Context line: $dest\n" .
+ "Context links: " . implode( ', ', $destLinks ) . "\n" .
+ "Proposal: $proposal\n";
+ return $msg;
+ }
+ return $changedLinks;
+ }
+
+ function processDiffFile( $callback ) {
+ $diffFile = fopen( "{$this->dataDir}/diff_log", 'r' );
+
+ $delimiter = "------\n";
+ file_put_contents( $this->articleFileName, "Describe the new page here.\n" );
+
+ $line = fgets( $diffFile );
+ $lineNum = 1;
+ if ( $line !== $delimiter ) {
+ echo "Invalid diff file\n";
+ return false;
+ }
+ $lastReportLine = 0;
+ $this->numRevs = 0;
+
+ while ( true ) {
+ $line = fgets( $diffFile );
+ $lineNum++;
+ if ( $line === false ) {
+ break;
+ }
+ if ( $lineNum > $lastReportLine + 1000 ) {
+ $lastReportLine = $lineNum;
+ fwrite( STDERR, "$lineNum \r" );
+ fflush( STDERR );
+ }
+ $line = trim( $line );
+ if ( !preg_match( '/^([^|]+)\|(\d+)$/', $line, $matches ) ) {
+ echo "Invalid header on line $lineNum\n";
+ return true;
+ }
+ list( , $title, $editTime ) = $matches;
+
+ $diff = '';
+ $diffStartLine = $lineNum;
+ while ( true ) {
+ $line = fgets( $diffFile );
+ $lineNum++;
+ if ( $line === $delimiter ) {
+ break;
+ }
+ if ( $line === false ) {
+ break 2;
+ }
+ $diff .= $line;
+ }
+
+ $this->numRevs++;
+
+ if ( !isset( $this->rc[$editTime] ) ) {
+ $this->printLatin1( "$editTime $title DELETED, skipping\n" );
+ continue;
+ }
+
+ if ( count( $this->rc[$editTime] ) == 1 ) {
+ $params = $this->rc[$editTime][0];
+ } else {
+ $params = false;
+ $candidates = '';
+ foreach ( $this->rc[$editTime] as $rc ) {
+ if ( $rc['rctitle'] === $title ) {
+ $params = $rc;
+ break;
+ }
+ if ( $candidates === '' ) {
+ $candidates = $rc['rctitle'];
+ } else {
+ $candidates .= ', ' . $rc['rctitle'];
+ }
+ }
+ if ( !$params ) {
+ $this->printLatin1( "$editTime $title ERROR cannot resolve rclog\n" );
+ $this->printLatin1( "$editTime $title CANDIDATES: $candidates\n" );
+ continue;
+ }
+ }
+ $params['diff'] = $diff;
+ $params['title'] = $title;
+ $params['diffStartLine'] = $diffStartLine;
+ call_user_func( $callback, $params );
+ }
+ echo "\n";
+
+ if ( !feof( $diffFile ) ) {
+ echo "Stopped at line $lineNum\n";
+ }
+ return true;
+ }
+
+ function reconcileCurrentRevs() {
+ foreach ( $this->textCache as $title => $text ) {
+ $fileName = "{$this->dataDir}/page/";
+ if ( preg_match( '/^[A-Z]/', $title, $m ) ) {
+ $fileName .= $m[0];
+ } else {
+ $fileName .= 'other';
+ }
+ $fileName .= "/$title.db";
+
+ if ( !file_exists( $fileName ) ) {
+ $this->printLatin1( "ERROR: Cannot find page file for {$title}\n" );
+ continue;
+ }
+
+ $fileContents = file_get_contents( $fileName );
+ $page = $this->unserializeUseMod( $fileContents, $this->FS1 );
+ $section = $this->unserializeUseMod( $page['text_default'], $this->FS2 );
+ $data = $this->unserializeUseMod( $section['data'], $this->FS3 );
+ $pageText = $data['text'];
+ if ( $text !== $pageText ) {
+ $substs = $this->resolveTextChange( $text, $pageText );
+ if ( is_array( $substs ) ) {
+ foreach ( $substs as $source => $dest ) {
+ if ( isset( $this->moveLog[$dest] ) ) {
+ $this->printLatin1( "ERROR: need deep rename: $source\n" );
+ } else {
+ $this->printLatin1( "ERROR: need substitute: $source -> $dest\n" );
+ }
+ }
+ } else {
+ $this->printLatin1( "ERROR: unresolved diff in $title:\n" );
+ wfSuppressWarnings();
+ $diff = xdiff_string_diff( $text, $pageText ) . '';
+ wfRestoreWarnings();
+ $this->printLatin1( "$diff\n" );
+ }
+ }
+ }
+ }
+
+ function makeTitle( $titleText ) {
+ return Title::newFromText( $this->encode( $titleText ) );
+ }
+
+ function getText( $titleText ) {
+ if ( !isset( $this->textCache[$titleText] ) ) {
+ return "Describe the new page here.\n";
+ } else {
+ return $this->textCache[$titleText];
+ }
+ }
+
+ function saveRevision( $params ) {
+ $this->textCache[$params['rctitle']] = $params['text'];
+
+ $out = "<page>\n" .
+ $this->element( 'title', $params['rctitle'] ) .
+ "<revision>\n" .
+ $this->element( 'id', $this->revId ++ ) .
+ $this->element( 'timestamp', wfTimestamp( TS_ISO_8601, $params['timestamp'] ) ) .
+ "<contributor>\n";
+ if ( isset( $params['extra']['name'] ) ) {
+ $out .= $this->element( 'username', $params['extra']['name'] );
+ }
+ if ( isset( $params['extra']['id'] ) ) {
+ $out .= $this->element( 'id', $params['extra']['id'] );
+ }
+ if ( isset( $params['host'] ) ) {
+ $out .= $this->element( 'ip', $params['host'] );
+ }
+ $out .=
+ "</contributor>\n" .
+ $this->element( 'comment', $params['summary'] ) .
+ "<text xml:space=\"preserve\">" .
+ htmlspecialchars( $this->encode( $params['text'] ) ) .
+ "</text>\n" .
+ "</revision>\n" .
+ "</page>\n";
+ fwrite( $this->outFile, $out );
+ }
+
+ function renameTextLinks( $old, $new, $timestamp ) {
+ $newWithUnderscores = $new;
+ $old = str_replace( '_', ' ', $old );
+ $new = str_replace( '_', ' ', $new );
+
+ foreach ( $this->textCache as $title => $oldText ) {
+ if ( $newWithUnderscores === $title
+ && in_array( $title, $this->skipSelfSubstitution ) )
+ {
+ // Hack to make Pythagorean_Theorem etc. work
+ continue;
+ }
+
+ $newText = $this->substituteTextLinks( $old, $new, $oldText );
+ if ( $oldText !== $newText ) {
+ $this->saveRevision( array(
+ 'rctitle' => $title,
+ 'timestamp' => $timestamp,
+ 'text' => $newText,
+ 'extra' => array( 'name' => 'Page move link fixup script' ),
+ 'summary' => '',
+ 'minor' => true
+ ) );
+ }
+ }
+ }
+
+ function substituteTextLinks( $old, $new, $text ) {
+ $this->saveUrl = array();
+ $this->old = $old;
+ $this->new = $new;
+
+ $text = str_replace( $this->FS, '', $text ); # Remove separators (paranoia)
+ $text = preg_replace_callback( '/(<pre>(.*?)<\/pre>)/is',
+ array( $this, 'storeRaw' ), $text );
+ $text = preg_replace_callback( '/(<code>(.*?)<\/code>)/is',
+ array( $this, 'storeRaw' ), $text );
+ $text = preg_replace_callback( '/(<nowiki>(.*?)<\/nowiki>)/s',
+ array( $this, 'storeRaw' ), $text );
+
+ $text = preg_replace_callback( "/\[\[{$this->FreeLinkPattern}\|([^\]]+)\]\]/",
+ array( $this, 'subFreeLink' ), $text );
+ $text = preg_replace_callback( "/\[\[{$this->FreeLinkPattern}\]\]/",
+ array( $this, 'subFreeLink' ), $text );
+ $text = preg_replace_callback( "/(\[{$this->UrlPattern}\s+([^\]]+?)\])/",
+ array( $this, 'storeRaw' ), $text );
+ $text = preg_replace_callback( "/(\[{$this->InterLinkPattern}\s+([^\]]+?)\])/",
+ array( $this, 'storeRaw' ), $text );
+ $text = preg_replace_callback( "/(\[?{$this->UrlPattern}\]?)/",
+ array( $this, 'storeRaw' ), $text );
+ $text = preg_replace_callback( "/(\[?{$this->InterLinkPattern}\]?)/",
+ array( $this, 'storeRaw' ), $text );
+ $text = preg_replace_callback( "/{$this->LinkPattern}/",
+ array( $this, 'subWikiLink' ), $text );
+
+ $text = preg_replace_callback( "/{$this->FS}(\d+){$this->FS}/",
+ array( $this, 'restoreRaw' ), $text ); # Restore saved text
+ return $text;
+ }
+
+ function getLinkList( $text ) {
+ $this->saveUrl = array();
+ $this->linkList = array();
+
+ $text = str_replace( $this->FS, '', $text ); # Remove separators (paranoia)
+ $text = preg_replace_callback( '/(<pre>(.*?)<\/pre>)/is',
+ array( $this, 'storeRaw' ), $text );
+ $text = preg_replace_callback( '/(<code>(.*?)<\/code>)/is',
+ array( $this, 'storeRaw' ), $text );
+ $text = preg_replace_callback( '/(<nowiki>(.*?)<\/nowiki>)/s',
+ array( $this, 'storeRaw' ), $text );
+
+ $text = preg_replace_callback( "/\[\[{$this->FreeLinkPattern}\|([^\]]+)\]\]/",
+ array( $this, 'storeLink' ), $text );
+ $text = preg_replace_callback( "/\[\[{$this->FreeLinkPattern}\]\]/",
+ array( $this, 'storeLink' ), $text );
+ $text = preg_replace_callback( "/(\[{$this->UrlPattern}\s+([^\]]+?)\])/",
+ array( $this, 'storeRaw' ), $text );
+ $text = preg_replace_callback( "/(\[{$this->InterLinkPattern}\s+([^\]]+?)\])/",
+ array( $this, 'storeRaw' ), $text );
+ $text = preg_replace_callback( "/(\[?{$this->UrlPattern}\]?)/",
+ array( $this, 'storeRaw' ), $text );
+ $text = preg_replace_callback( "/(\[?{$this->InterLinkPattern}\]?)/",
+ array( $this, 'storeRaw' ), $text );
+ $text = preg_replace_callback( "/{$this->LinkPattern}/",
+ array( $this, 'storeLink' ), $text );
+
+ return $this->linkList;
+ }
+
+ function storeRaw( $m ) {
+ $this->saveUrl[] = $m[1];
+ return $this->FS . (count( $this->saveUrl ) - 1) . $this->FS;
+ }
+
+ function subFreeLink( $m ) {
+ $link = $m[1];
+ if ( isset( $m[2] ) ) {
+ $name = $m[2];
+ } else {
+ $name = '';
+ }
+ $oldlink = $link;
+ $link = preg_replace( '/^\s+/', '', $link );
+ $link = preg_replace( '/\s+$/', '', $link );
+ if ( $link == $this->old ) {
+ $link = $this->new;
+ } else {
+ $link = $oldlink; # Preserve spaces if no match
+ }
+ $link = "[[$link";
+ if ( $name !== "" ) {
+ $link .= "|$name";
+ }
+ $link .= "]]";
+ return $this->storeRaw( array( 1 => $link ) );
+ }
+
+ function subWikiLink( $m ) {
+ $link = $m[1];
+ if ( $link == $this->old ) {
+ $link = $this->new;
+ if ( !preg_match( "/^{$this->LinkPattern}$/", $this->new ) ) {
+ $link = "[[$link]]";
+ }
+ }
+ return $this->storeRaw( array( 1 => $link ) );
+ }
+
+ function restoreRaw( $m ) {
+ return $this->saveUrl[$m[1]];
+ }
+
+ function storeLink( $m ) {
+ $this->linkList[] = $m[1];
+ return $this->storeRaw( $m );
+ }
+
+ function encode( $s ) {
+ return strtr( $s, $this->encodeMap );
+ }
+
+ function decode( $s ) {
+ return strtr( $s, $this->decodeMap );
+ }
+
+ function printLatin1( $s ) {
+ echo $this->encode( $s );
+ }
+
+ function unserializeUseMod( $s, $sep ) {
+ $parts = explode( $sep, $s );
+ $result = array();
+ for ( $i = 0; $i < count( $parts ); $i += 2 ) {
+ $result[$parts[$i]] = $parts[$i+1];
+ }
+ return $result;
+ }
+}
+
+$maintClass = 'ImportUseModWikipedia';
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/initEditCount.php b/maintenance/initEditCount.php
index e421e29b..0f136450 100644
--- a/maintenance/initEditCount.php
+++ b/maintenance/initEditCount.php
@@ -93,7 +93,7 @@ in the load balancer, usually indicating a replication environment.' );
$delta,
$rate ) );
- wfWaitForSlaves( 10 );
+ wfWaitForSlaves();
}
} else {
// Subselect should work on modern MySQLs etc
diff --git a/maintenance/initStats.php b/maintenance/initStats.php
index 1ec5c925..eab9c8df 100644
--- a/maintenance/initStats.php
+++ b/maintenance/initStats.php
@@ -63,7 +63,7 @@ class InitStats extends Maintenance {
if ( $this->hasOption( 'active' ) ) {
$this->output( "Counting active users..." );
- $active = SiteStatsUpdate::cacheUpdate();
+ $active = SiteStatsUpdate::cacheUpdate( wfGetDB( DB_MASTER ) );
$this->output( "{$active}\n" );
}
diff --git a/maintenance/install-utils.inc b/maintenance/install-utils.inc
deleted file mode 100644
index 93ca0b58..00000000
--- a/maintenance/install-utils.inc
+++ /dev/null
@@ -1,31 +0,0 @@
-<?php
-/**
- * This file contains ancient db-related functions that have been deprecated. Do
- * not use them. Please find the appropriate replacements.
- *
- * @file
- */
-
-/**
- * @deprecated Use DatabaseBase::sourceFile(). Will probably be removed in 1.19
- */
-function dbsource( $fname, $db = false ) {
- wfDeprecated( __METHOD__ );
- if ( !$db ) {
- $db = wfGetDB( DB_MASTER );
- }
- $error = $db->sourceFile( $fname );
- if ( $error !== true ) {
- print $error;
- exit( 1 );
- }
-}
-
-/**
- * @deprecated Use DatabaseBase::patchPath(). Will probably be removed in 1.18
- */
-function archive( $name ) {
- wfDeprecated( __METHOD__ );
- $dbr = wfGetDB( DB_SLAVE );
- return $dbr->patchPath( $name );
-}
diff --git a/maintenance/install.php b/maintenance/install.php
index 34e3ea85..dba43400 100644
--- a/maintenance/install.php
+++ b/maintenance/install.php
@@ -40,7 +40,7 @@ class CommandLineInstaller extends Maintenance {
$this->addArg( 'admin', 'The username of the wiki administrator (WikiSysop)', true );
$this->addOption( 'pass', 'The password for the wiki administrator. You will be prompted for this if it isn\'t provided', false, true );
- $this->addOption( 'email', 'The email for the wiki administrator', false, true );
+ /* $this->addOption( 'email', 'The email for the wiki administrator', false, true ); */
$this->addOption( 'scriptpath', 'The relative path of the wiki in the web server (/wiki)', false, true );
$this->addOption( 'lang', 'The language to use (en)', false, true );
@@ -55,6 +55,7 @@ class CommandLineInstaller extends Maintenance {
$this->addOption( 'installdbpass', 'The pasword for the DB user to install as.', false, true );
$this->addOption( 'dbuser', 'The user to use for normal operations (wikiuser)', false, true );
$this->addOption( 'dbpass', 'The pasword for the DB user for normal operations', false, true );
+ $this->addOption( 'dbpassfile', 'An alternative way to provide dbpass option, as the contents of this file', false, true );
$this->addOption( 'confpath', "Path to write LocalSettings.php to, default $IP", false, true );
/* $this->addOption( 'dbschema', 'The schema for the MediaWiki DB in pg (mediawiki)', false, true ); */
/* $this->addOption( 'namespace', 'The project namespace (same as the name)', false, true ); */
@@ -67,6 +68,17 @@ class CommandLineInstaller extends Maintenance {
$adminName = isset( $this->mArgs[1] ) ? $this->mArgs[1] : null;
$wgTitle = Title::newFromText( 'Installer script' );
+ $dbpassfile = $this->getOption( 'dbpassfile', false );
+ if ( $dbpassfile !== false ) {
+ wfSuppressWarnings();
+ $dbpass = file_get_contents( $dbpassfile );
+ wfRestoreWarnings();
+ if ( $dbpass === false ) {
+ $this->error( "Couldn't open $dbpassfile", true );
+ }
+ $this->mOptions['dbpass'] = trim( $dbpass, "\r\n" );
+ }
+
$installer =
new CliInstaller( $siteName, $adminName, $this->mOptions );
diff --git a/maintenance/jsparse.php b/maintenance/jsparse.php
new file mode 100644
index 00000000..ae6f1f1d
--- /dev/null
+++ b/maintenance/jsparse.php
@@ -0,0 +1,72 @@
+<?php
+/**
+ * Maintenance script to do test JavaScript validity parses using jsmin+'s parser
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+
+class JSParseHelper extends Maintenance {
+ var $errs = 0;
+
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Runs parsing/syntax checks on JavaScript files";
+ $this->addArg( 'file(s)', 'JavaScript file to test', false );
+ }
+
+ public function execute() {
+ $iterations = $this->getOption( 'i', 100 );
+ if ( $this->hasArg() ) {
+ $files = $this->mArgs;
+ } else {
+ $this->maybeHelp( true ); // @fixme this is a lame API :)
+ exit( 1 ); // it should exit from the above first...
+ }
+
+ $parser = new JSParser();
+ foreach ( $files as $filename ) {
+ wfSuppressWarnings();
+ $js = file_get_contents( $filename );
+ wfRestoreWarnings();
+ if ($js === false) {
+ $this->output( "$filename ERROR: could not read file\n" );
+ $this->errs++;
+ continue;
+ }
+
+ try {
+ $parser->parse( $js, $filename, 1 );
+ } catch (Exception $e) {
+ $this->errs++;
+ $this->output( "$filename ERROR: " . $e->getMessage() . "\n" );
+ continue;
+ }
+
+ $this->output( "$filename OK\n" );
+ }
+
+ if ($this->errs > 0) {
+ exit(1);
+ }
+ }
+}
+
+$maintClass = "JSParseHelper";
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/lag.php b/maintenance/lag.php
index fdc74293..dc8bff5f 100644
--- a/maintenance/lag.php
+++ b/maintenance/lag.php
@@ -1,8 +1,23 @@
<?php
-
/**
* Shows database lag
*
+ * 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
*/
diff --git a/maintenance/language/StatOutputs.php b/maintenance/language/StatOutputs.php
index b8e28302..c6d03641 100644
--- a/maintenance/language/StatOutputs.php
+++ b/maintenance/language/StatOutputs.php
@@ -3,6 +3,21 @@ if ( !defined( 'MEDIAWIKI' ) ) die();
/**
* Statistic output classes.
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup MaintenanceLanguage
* @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
@@ -31,10 +46,20 @@ class statsOutput {
/** Outputs WikiText */
class wikiStatsOutput extends statsOutput {
function heading() {
+ global $wgDummyLanguageCodes, $wgContLang;
$version = SpecialVersion::getVersion( 'nodb' );
echo "'''Statistics are based on:''' <code>" . $version . "</code>\n\n";
echo "'''Note:''' These statistics can be generated by running <code>php maintenance/language/transstat.php</code>.\n\n";
echo "For additional information on specific languages (the message names, the actual problems, etc.), run <code>php maintenance/language/checkLanguage.php --lang=foo</code>.\n\n";
+ echo 'English (en) is excluded because it is the default localization';
+ if( is_array( $wgDummyLanguageCodes ) ) {
+ $dummyCodes = array();
+ foreach( $wgDummyLanguageCodes as $dummyCode ) {
+ $dummyCodes[] = $wgContLang->getLanguageName( $dummyCode ) . ' (' . $dummyCode . ')';
+ }
+ echo ', as well as the following languages that are not intended for system message translations, usually because they redirect to other language codes: ' . implode( ', ', $dummyCodes );
+ }
+ echo ".\n\n"; # dot to end sentence
echo '{| class="sortable wikitable" border="2" cellpadding="4" cellspacing="0" style="background-color: #F9F9F9; border: 1px #AAAAAA solid; border-collapse: collapse; clear:both;" width="100%"' . "\n";
}
function footer() {
diff --git a/maintenance/language/checkDupeMessages.php b/maintenance/language/checkDupeMessages.php
index ea9d5fb7..ea5b1870 100644
--- a/maintenance/language/checkDupeMessages.php
+++ b/maintenance/language/checkDupeMessages.php
@@ -1,6 +1,22 @@
<?php
/**
- * @todo document
+ * Script to print out duplicates in message array
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup MaintenanceLanguage
*/
@@ -18,9 +34,9 @@ if ( isset( $options['lang'] ) && isset( $options['clang'] ) ) {
} else {
if ( !strcmp( $options['mode'], 'wiki' ) ) {
$runMode = 'wiki';
- } else if ( !strcmp( $options['mode'], 'php' ) ) {
+ } elseif ( !strcmp( $options['mode'], 'php' ) ) {
$runMode = 'php';
- } else if ( !strcmp( $options['mode'], 'raw' ) ) {
+ } elseif ( !strcmp( $options['mode'], 'raw' ) ) {
$runMode = 'raw';
} else {
}
@@ -61,7 +77,7 @@ if ( $runTest ) {
if ( $run ) {
if ( !strcmp( $runMode, 'wiki' ) ) {
$runMode = 'wiki';
- } else if ( !strcmp( $runMode, 'raw' ) ) {
+ } elseif ( !strcmp( $runMode, 'raw' ) ) {
$runMode = 'raw';
}
include( $messagesFile );
@@ -86,9 +102,9 @@ if ( $run ) {
if ( ( !strcmp( $key, $ckey ) ) && ( !strcmp( $value, $cvalue ) ) ) {
if ( !strcmp( $runMode, 'raw' ) ) {
print( "$key\n" );
- } else if ( !strcmp( $runMode, 'php' ) ) {
+ } elseif ( !strcmp( $runMode, 'php' ) ) {
print( "'$key' => '',\n" );
- } else if ( !strcmp( $runMode, 'wiki' ) ) {
+ } elseif ( !strcmp( $runMode, 'wiki' ) ) {
$uKey = ucfirst( $key );
print( "* MediaWiki:$uKey/$langCode\n" );
} else {
diff --git a/maintenance/language/checkExtensions.php b/maintenance/language/checkExtensions.php
index c05cf193..a58a8f5c 100644
--- a/maintenance/language/checkExtensions.php
+++ b/maintenance/language/checkExtensions.php
@@ -2,6 +2,21 @@
/**
* Check the extensions language files.
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup MaintenanceLanguage
*/
diff --git a/maintenance/language/checkLanguage.inc b/maintenance/language/checkLanguage.inc
index d8480c0f..1e4b94a2 100644
--- a/maintenance/language/checkLanguage.inc
+++ b/maintenance/language/checkLanguage.inc
@@ -1,4 +1,25 @@
<?php
+/**
+ * Helper class for checkLanguage.php script.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup MaintenanceLanguage
+ */
/**
* @ingroup MaintenanceLanguage
@@ -97,7 +118,7 @@ class CheckLanguageCLI {
/**
* Get the checks that can easily be treated by non-speakers of the language.
- * @return A list of the easy checks.
+ * @return Array A list of the easy checks.
*/
protected function easyChecks() {
return array(
diff --git a/maintenance/language/checkLanguage.php b/maintenance/language/checkLanguage.php
index 9396e8c1..69f61084 100644
--- a/maintenance/language/checkLanguage.php
+++ b/maintenance/language/checkLanguage.php
@@ -2,6 +2,21 @@
/**
* Check a language file.
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup MaintenanceLanguage
*/
diff --git a/maintenance/language/function-list.php b/maintenance/language/function-list.php
index 7985f37d..7b0e57c2 100644
--- a/maintenance/language/function-list.php
+++ b/maintenance/language/function-list.php
@@ -1,5 +1,20 @@
<?php
/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup MaintenanceLanguage
*/
diff --git a/maintenance/language/generateCollationData.php b/maintenance/language/generateCollationData.php
index 68ad2ddf..2c3ffedc 100644
--- a/maintenance/language/generateCollationData.php
+++ b/maintenance/language/generateCollationData.php
@@ -68,9 +68,12 @@ class GenerateCollationData extends Maintenance {
}
function charCallback( $data ) {
- // Skip non-printable characters
+ // Skip non-printable characters,
+ // but do not skip a normal space (U+0020) since
+ // people like to use that as a fake no header symbol.
$category = substr( $data['gc'], 0, 1 );
- if ( strpos( 'LNPS', $category ) === false ) {
+ if ( strpos( 'LNPS', $category ) === false
+ && $data['cp'] !== '0020' ) {
return;
}
$cp = hexdec( $data['cp'] );
@@ -193,7 +196,7 @@ class GenerateCollationData extends Maintenance {
// portion equal to the first character, then remove the second
// character. This avoids having characters like U+A732 (double A)
// polluting the basic latin sort area.
- $prevWeights = array();
+
foreach ( $this->groups as $weight => $group ) {
if ( preg_match( '/(\.[0-9A-F]*)\./', $weight, $m ) ) {
if ( isset( $this->groups[$m[1]] ) ) {
@@ -377,5 +380,5 @@ class UcdXmlReader {
}
$maintClass = 'GenerateCollationData';
-require_once( DO_MAINTENANCE );
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/language/generateNormalizerData.php b/maintenance/language/generateNormalizerData.php
index cb9910f3..a958abf1 100644
--- a/maintenance/language/generateNormalizerData.php
+++ b/maintenance/language/generateNormalizerData.php
@@ -1,4 +1,25 @@
<?php
+/**
+ * Generates normalizer data files for Arabic and Malayalam.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup MaintenanceLanguage
+ */
require_once( dirname( __FILE__ ) . '/../Maintenance.php' );
diff --git a/maintenance/language/languages.inc b/maintenance/language/languages.inc
index c5c9f650..60b1112f 100644
--- a/maintenance/language/languages.inc
+++ b/maintenance/language/languages.inc
@@ -2,6 +2,21 @@
/**
* Handle messages in the language files.
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup MaintenanceLanguage
*/
@@ -73,7 +88,7 @@ class languages {
/**
* Load the language file.
*
- * @param $code The language code.
+ * @param $code string The language code.
*/
protected function loadFile( $code ) {
if ( isset( $this->mRawMessages[$code] ) &&
@@ -190,7 +205,7 @@ class languages {
*
* @param $code The language code.
*
- * @return The messages in this language.
+ * @return string The messages in this language.
*/
public function getMessages( $code ) {
$this->loadMessages( $code );
diff --git a/maintenance/language/messageTypes.inc b/maintenance/language/messageTypes.inc
index 9baf7e76..62374500 100644
--- a/maintenance/language/messageTypes.inc
+++ b/maintenance/language/messageTypes.inc
@@ -2,6 +2,21 @@
/**
* Several types of messages.
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup MaintenanceLanguage
*/
@@ -86,9 +101,11 @@ $wgIgnoredMessages = array(
'exif-make-value',
'exif-model-value',
'exif-software-value',
+ 'exif-software-version-value',
'history_copyright',
'licenses',
'loginstart',
+ 'loginend-https',
'loginend',
'loginlanguagelinks',
'pear-mail-error',
@@ -96,6 +113,7 @@ $wgIgnoredMessages = array(
'markaspatrolledlink',
'newarticletextanon',
'newsectionheaderdefaultlevel',
+ 'mainpage-nstab',
'newtalkseparator',
'noarticletextanon',
'number_of_watching_users_RCview',
@@ -111,6 +129,7 @@ $wgIgnoredMessages = array(
'signature-anon',
'signupstart',
'signupend',
+ 'signupend-https',
'sitenotice',
'sitesubtitle',
'sitetitle',
@@ -125,7 +144,7 @@ $wgIgnoredMessages = array(
'allpages-summary',
'booksources-summary',
'categories-summary',
- 'ipblocklist-summary',
+ 'blocklist-summary',
'protectedtitles-summary',
'listusers-summary',
'longpages-summary',
@@ -183,7 +202,6 @@ $wgOptionalMessages = array(
'userrights-irreversible-marker',
'tog-nolangconversion',
'tog-noconvertlink',
- 'yourvariant',
'variantname-zh-hans',
'variantname-zh-hant',
'variantname-zh-cn',
@@ -212,6 +230,9 @@ $wgOptionalMessages = array(
'variantname-tg-cyrl',
'variantname-tg-latn',
'variantname-tg',
+ 'variantname-ike-cans',
+ 'variantname-ike-latn',
+ 'variantname-iu',
'rc-change-size',
'resetpass_text',
'image_sample',
@@ -237,6 +258,11 @@ $wgOptionalMessages = array(
'vector.css',
'print.css',
'handheld.css',
+ 'noscript.css',
+ 'group-autoconfirmed.css',
+ 'group-bot.css',
+ 'group-sysop.css',
+ 'group-bureaucrat.css',
'common.js',
'standard.js',
'nostalgia.js',
@@ -247,26 +273,39 @@ $wgOptionalMessages = array(
'simple.js',
'modern.js',
'vector.js',
+ 'group-autoconfirmed.js',
+ 'group-bot.js',
+ 'group-sysop.js',
+ 'group-bureaucrat.js',
'widthheight',
'exif-fnumber-format',
'exif-focallength-format',
+ 'exif-compression-5',
'exif-compression-6',
+ 'exif-compression-7',
+ 'exif-compression-8',
+ 'exif-compression-32773',
+ 'exif-compression-32946',
+ 'exif-compression-34712',
'exif-photometricinterpretation-2',
'exif-photometricinterpretation-6',
'exif-xyresolution-i',
'exif-xyresolution-c',
'exif-colorspace-1',
- 'exif-colorspace-ffff.h',
'exif-componentsconfiguration-1',
'exif-componentsconfiguration-2',
'exif-componentsconfiguration-3',
'exif-componentsconfiguration-4',
'exif-componentsconfiguration-5',
'exif-componentsconfiguration-6',
+ 'exif-contact-value',
+ 'exif-coordinate-format',
'exif-lightsource-20',
'exif-lightsource-21',
'exif-lightsource-22',
'exif-lightsource-23',
+ 'exif-maxaperturevalue-value',
+ 'exif-subjectnewscode-value',
'booksources-isbn',
'sp-contributions-explain',
'sorbs',
@@ -274,14 +313,15 @@ $wgOptionalMessages = array(
'seconds-abbrev',
'minutes-abbrev',
'hours-abbrev',
+ 'days-abbrev',
'filerevert-backlink',
'filedelete-backlink',
'delete-backlink',
- 'move-page-backlink',
'protect-backlink',
'pagetitle',
'filename-prefix-blacklist',
'edittools',
+ 'edittools-upload',
'size-bytes',
'size-kilobytes',
'size-megabytes',
@@ -338,8 +378,8 @@ $wgOptionalMessages = array(
'hebrew-calendar-m10-gen',
'hebrew-calendar-m11-gen',
'hebrew-calendar-m12-gen',
+ 'version-api',
'version-svn-revision',
- 'catseparator',
'semicolon-separator',
'comma-separator',
'colon-separator',
@@ -364,6 +404,9 @@ $wgOptionalMessages = array(
'shared-repo-name-wikimediacommons',
'usermessage-template',
'filepage.css',
+ 'metadata-langitem',
+ 'metadata-langitem-default',
+ 'nocookiesforlogin',
);
/** EXIF messages, which may be set as optional in several checks, but are generally mandatory */
@@ -380,13 +423,11 @@ $wgEXIFMessages = array(
'exif-ycbcrpositioning',
'exif-xresolution',
'exif-yresolution',
- 'exif-resolutionunit',
'exif-stripoffsets',
'exif-rowsperstrip',
'exif-stripbytecounts',
'exif-jpeginterchangeformat',
'exif-jpeginterchangeformatlength',
- 'exif-transferfunction',
'exif-whitepoint',
'exif-primarychromaticities',
'exif-ycbcrcoefficients',
@@ -405,7 +446,6 @@ $wgEXIFMessages = array(
'exif-compressedbitsperpixel',
'exif-pixelydimension',
'exif-pixelxdimension',
- 'exif-makernote',
'exif-usercomment',
'exif-relatedsoundfile',
'exif-datetimeoriginal',
@@ -416,10 +456,10 @@ $wgEXIFMessages = array(
'exif-exposuretime',
'exif-exposuretime-format',
'exif-fnumber',
+ 'exif-fnumber-format',
'exif-exposureprogram',
'exif-spectralsensitivity',
'exif-isospeedratings',
- 'exif-oecf',
'exif-shutterspeedvalue',
'exif-aperturevalue',
'exif-brightnessvalue',
@@ -430,9 +470,9 @@ $wgEXIFMessages = array(
'exif-lightsource',
'exif-flash',
'exif-focallength',
+ 'exif-focallength-format',
'exif-subjectarea',
'exif-flashenergy',
- 'exif-spatialfrequencyresponse',
'exif-focalplanexresolution',
'exif-focalplaneyresolution',
'exif-focalplaneresolutionunit',
@@ -441,7 +481,6 @@ $wgEXIFMessages = array(
'exif-sensingmethod',
'exif-filesource',
'exif-scenetype',
- 'exif-cfapattern',
'exif-customrendered',
'exif-exposuremode',
'exif-whitebalance',
@@ -486,7 +525,92 @@ $wgEXIFMessages = array(
'exif-gpsareainformation',
'exif-gpsdatestamp',
'exif-gpsdifferential',
+ 'exif-coordinate-format',
+ 'exif-jpegfilecomment',
+ 'exif-keywords',
+ 'exif-worldregioncreated',
+ 'exif-countrycreated',
+ 'exif-countrycodecreated',
+ 'exif-provinceorstatecreated',
+ 'exif-citycreated',
+ 'exif-sublocationcreated',
+ 'exif-worldregiondest',
+ 'exif-countrydest',
+ 'exif-countrycodedest',
+ 'exif-provinceorstatedest',
+ 'exif-citydest',
+ 'exif-sublocationdest',
+ 'exif-objectname',
+ 'exif-specialinstructions',
+ 'exif-headline',
+ 'exif-credit',
+ 'exif-source',
+ 'exif-editstatus',
+ 'exif-urgency',
+ 'exif-fixtureidentifier',
+ 'exif-locationdest',
+ 'exif-locationdestcode',
+ 'exif-objectcycle',
+ 'exif-contact',
+ 'exif-writer',
+ 'exif-languagecode',
+ 'exif-iimversion',
+ 'exif-iimcategory',
+ 'exif-iimsupplementalcategory',
+ 'exif-datetimeexpires',
+ 'exif-datetimereleased',
+ 'exif-originaltransmissionref',
+ 'exif-identifier',
+ 'exif-lens',
+ 'exif-serialnumber',
+ 'exif-cameraownername',
+ 'exif-label',
+ 'exif-datetimemetadata',
+ 'exif-nickname',
+ 'exif-rating',
+ 'exif-rightscertificate',
+ 'exif-copyrighted',
+ 'exif-copyrightowner',
+ 'exif-usageterms',
+ 'exif-webstatement',
+ 'exif-originaldocumentid',
+ 'exif-licenseurl',
+ 'exif-morepermissionsurl',
+ 'exif-attributionurl',
+ 'exif-preferredattributionname',
+ 'exif-pngfilecomment',
+ 'exif-disclaimer',
+ 'exif-contentwarning',
+ 'exif-giffilecomment',
+ 'exif-intellectualgenre',
+ 'exif-subjectnewscode',
+ 'exif-scenecode',
+ 'exif-event',
+ 'exif-organisationinimage',
+ 'exif-personinimage',
+ 'exif-originalimageheight',
+ 'exif-originalimagewidth',
+ 'exif-make-value',
+ 'exif-model-value',
+ 'exif-software-value',
+ 'exif-software-version-value',
+ 'exif-contact-value',
+ 'exif-subjectnewscode-value',
'exif-compression-1',
+ 'exif-compression-2',
+ 'exif-compression-3',
+ 'exif-compression-4',
+ 'exif-compression-5',
+ 'exif-compression-6',
+ 'exif-compression-7',
+ 'exif-compression-8',
+ 'exif-compression-32773',
+ 'exif-compression-32946',
+ 'exif-compression-34712',
+ 'exif-copyrighted-true',
+ 'exif-copyrighted-false',
+ 'exif-photometricinterpretation-2',
+ 'exif-photometricinterpretation-6',
'exif-unknowndate',
'exif-orientation-1',
'exif-orientation-2',
@@ -498,7 +622,17 @@ $wgEXIFMessages = array(
'exif-orientation-8',
'exif-planarconfiguration-1',
'exif-planarconfiguration-2',
+ 'exif-xyresolution-i',
+ 'exif-xyresolution-c',
+ 'exif-colorspace-1',
+ 'exif-colorspace-65535',
'exif-componentsconfiguration-0',
+ 'exif-componentsconfiguration-1',
+ 'exif-componentsconfiguration-2',
+ 'exif-componentsconfiguration-3',
+ 'exif-componentsconfiguration-4',
+ 'exif-componentsconfiguration-5',
+ 'exif-componentsconfiguration-6',
'exif-exposureprogram-0',
'exif-exposureprogram-1',
'exif-exposureprogram-2',
@@ -532,18 +666,22 @@ $wgEXIFMessages = array(
'exif-lightsource-17',
'exif-lightsource-18',
'exif-lightsource-19',
+ 'exif-lightsource-20',
+ 'exif-lightsource-21',
+ 'exif-lightsource-22',
+ 'exif-lightsource-23',
'exif-lightsource-24',
'exif-lightsource-255',
- 'exif-flash-fired-0' ,
- 'exif-flash-fired-1' ,
- 'exif-flash-return-0' ,
- 'exif-flash-return-2' ,
- 'exif-flash-return-3' ,
- 'exif-flash-mode-1' ,
- 'exif-flash-mode-2' ,
- 'exif-flash-mode-3' ,
- 'exif-flash-function-1' ,
- 'exif-flash-redeye-1' ,
+ 'exif-flash-fired-0',
+ 'exif-flash-fired-1',
+ 'exif-flash-return-0',
+ 'exif-flash-return-2',
+ 'exif-flash-return-3',
+ 'exif-flash-mode-1',
+ 'exif-flash-mode-2',
+ 'exif-flash-mode-3',
+ 'exif-flash-function-1',
+ 'exif-flash-redeye-1',
'exif-focalplaneresolutionunit-2',
'exif-sensingmethod-1',
'exif-sensingmethod-2',
@@ -552,6 +690,7 @@ $wgEXIFMessages = array(
'exif-sensingmethod-5',
'exif-sensingmethod-7',
'exif-sensingmethod-8',
+ 'exif-filesource-3',
'exif-scenetype-1',
'exif-customrendered-0',
'exif-customrendered-1',
@@ -586,8 +725,8 @@ $wgEXIFMessages = array(
'exif-gpslatitude-s',
'exif-gpslongitude-e',
'exif-gpslongitude-w',
- 'exif-gpsaltitude-0',
- 'exif-gpsaltitude-1',
+ 'exif-gpsaltitude-above-sealevel',
+ 'exif-gpsaltitude-below-sealevel',
'exif-gpsstatus-a',
'exif-gpsstatus-v',
'exif-gpsmeasuremode-2',
@@ -598,7 +737,48 @@ $wgEXIFMessages = array(
'exif-gpsdestdistance-k',
'exif-gpsdestdistance-m',
'exif-gpsdestdistance-n',
+ 'exif-gpsdop-excellent',
+ 'exif-gpsdop-good',
+ 'exif-gpsdop-moderate',
+ 'exif-gpsdop-fair',
+ 'exif-gpsdop-poor',
+ 'exif-objectcycle-a',
+ 'exif-objectcycle-p',
+ 'exif-objectcycle-b',
'exif-gpsdirection-t',
'exif-gpsdirection-m',
- 'exif-objectname',
+ 'exif-ycbcrpositioning-1',
+ 'exif-ycbcrpositioning-2',
+ 'exif-dc-contributor',
+ 'exif-dc-coverage',
+ 'exif-dc-date',
+ 'exif-dc-publisher',
+ 'exif-dc-relation',
+ 'exif-dc-rights',
+ 'exif-dc-source',
+ 'exif-dc-type',
+ 'exif-rating-rejected',
+ 'exif-isospeedratings-overflow',
+ 'exif-maxaperturevalue-value',
+ 'exif-iimcategory-ace',
+ 'exif-iimcategory-clj',
+ 'exif-iimcategory-dis',
+ 'exif-iimcategory-fin',
+ 'exif-iimcategory-edu',
+ 'exif-iimcategory-evn',
+ 'exif-iimcategory-hth',
+ 'exif-iimcategory-hum',
+ 'exif-iimcategory-lab',
+ 'exif-iimcategory-lif',
+ 'exif-iimcategory-pol',
+ 'exif-iimcategory-rel',
+ 'exif-iimcategory-sci',
+ 'exif-iimcategory-soi',
+ 'exif-iimcategory-spo',
+ 'exif-iimcategory-war',
+ 'exif-iimcategory-wea',
+ 'exif-urgency-normal',
+ 'exif-urgency-low',
+ 'exif-urgency-high',
+ 'exif-urgency-other',
);
diff --git a/maintenance/language/messages.inc b/maintenance/language/messages.inc
index a0b19ac6..d707cf5d 100644
--- a/maintenance/language/messages.inc
+++ b/maintenance/language/messages.inc
@@ -2,6 +2,21 @@
/**
* Define the messages structure in the messages file, for an automated rewriting.
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup MaintenanceLanguage
*/
@@ -142,11 +157,10 @@ $wgMessageStructure = array(
'listingcontinuesabbrev',
'index-category',
'noindex-category',
+ 'broken-file-category',
),
'mainpage' => array(
'linkprefix',
- 'mainpagetext',
- 'mainpagedocfooter',
),
'miscellaneous1' => array(
'about',
@@ -202,10 +216,10 @@ $wgMessageStructure = array(
'history',
'history_short',
'updatedmarker',
- 'info_short',
'printableversion',
'permalink',
'print',
+ 'view',
'edit',
'create',
'editthispage',
@@ -213,6 +227,7 @@ $wgMessageStructure = array(
'delete',
'deletethispage',
'undelete_short',
+ 'viewdeleted_short',
'protect',
'protect_change',
'protectthispage',
@@ -302,6 +317,8 @@ $wgMessageStructure = array(
'toc',
'showtoc',
'hidetoc',
+ 'collapsible-collapse',
+ 'collapsible-expand',
'thisisdeleted',
'viewdeleted',
'restorelink',
@@ -318,6 +335,9 @@ $wgMessageStructure = array(
'anonnotice',
'newsectionheaderdefaultlevel',
'red-link-title',
+ 'sort-descending',
+ 'sort-ascending',
+
),
'nstab' => array(
'nstab-main',
@@ -330,6 +350,7 @@ $wgMessageStructure = array(
'nstab-template',
'nstab-help',
'nstab-category',
+ 'mainpage-nstab',
),
'main' => array(
'nosuchaction',
@@ -381,7 +402,8 @@ $wgMessageStructure = array(
'sqlhidden',
'cascadeprotected',
'namespaceprotected',
- 'customcssjsprotected',
+ 'customcssprotected',
+ 'customjsprotected',
'ns-specialprotected',
'titleprotected',
),
@@ -413,6 +435,7 @@ $wgMessageStructure = array(
'createaccount',
'gotaccount',
'gotaccountlink',
+ 'userlogin-resetlink',
'createaccountmail',
'createaccountreason',
'badretype',
@@ -421,6 +444,8 @@ $wgMessageStructure = array(
'createaccounterror',
'nocookiesnew',
'nocookieslogin',
+ 'nocookiesfornew',
+ 'nocookiesforlogin',
'noname',
'loginsuccesstitle',
'loginsuccess',
@@ -444,8 +469,10 @@ $wgMessageStructure = array(
'throttled-mailpassword',
'loginstart',
'loginend',
+ 'loginend-https',
'signupstart',
'signupend',
+ 'signupend-https',
'mailerror',
'acct_creation_throttle_hit',
'emailauthenticated',
@@ -459,6 +486,7 @@ $wgMessageStructure = array(
'createaccount-text',
'usernamehasherror',
'login-throttled',
+ 'login-abort-generic',
'loginlanguagelabel',
'loginlanguagelinks',
'suspicious-userlogout',
@@ -485,6 +513,21 @@ $wgMessageStructure = array(
'resetpass-wrong-oldpass',
'resetpass-temp-password',
),
+ 'passwordreset' => array(
+ 'passwordreset',
+ 'passwordreset-text',
+ 'passwordreset-legend',
+ 'passwordreset-disabled',
+ 'passwordreset-pretext',
+ 'passwordreset-username',
+ 'passwordreset-domain',
+ 'passwordreset-email',
+ 'passwordreset-emailtitle',
+ 'passwordreset-emailtext-ip',
+ 'passwordreset-emailtext-user',
+ 'passwordreset-emailelement',
+ 'passwordreset-emailsent',
+ ),
'toolbar' => array(
'bold_sample',
'bold_tip',
@@ -496,8 +539,6 @@ $wgMessageStructure = array(
'extlink_tip',
'headline_sample',
'headline_tip',
- 'math_sample',
- 'math_tip',
'nowiki_sample',
'nowiki_tip',
'image_sample',
@@ -566,6 +607,7 @@ $wgMessageStructure = array(
'session_fail_preview',
'session_fail_preview_html',
'token_suffix_mismatch',
+ 'edit_form_incomplete',
'editing',
'editingsection',
'editingcomment',
@@ -593,6 +635,7 @@ $wgMessageStructure = array(
'template-semiprotected',
'hiddencategories',
'edittools',
+ 'edittools-upload',
'nocreatetitle',
'nocreatetext',
'nocreate-loggedin',
@@ -869,6 +912,7 @@ $wgMessageStructure = array(
'qbsettings-fixedright',
'qbsettings-floatingleft',
'qbsettings-floatingright',
+ 'qbsettings-directionality',
),
'preferences' => array(
'preferences',
@@ -880,9 +924,10 @@ $wgMessageStructure = array(
'changepassword',
'prefs-skin',
'skin-preview',
- 'prefs-math',
'datedefault',
+ 'prefs-beta',
'prefs-datetime',
+ 'prefs-labs',
'prefs-personal',
'prefs-rc',
'prefs-watchlist',
@@ -904,8 +949,6 @@ $wgMessageStructure = array(
'columns',
'searchresultshead',
'resultsperpage',
- 'contextlines',
- 'contextchars',
'stub-threshold',
'stub-threshold-disabled',
'recentchangesdays',
@@ -965,8 +1008,12 @@ $wgMessageStructure = array(
'prefs-help-gender',
'email',
'prefs-help-realname',
+
+ # 3 messages depending upon wgEmailConfirmToEdit and $wgEnableUserEmail
'prefs-help-email',
+ 'prefs-help-email-others',
'prefs-help-email-required',
+
'prefs-info',
'prefs-i18n',
'prefs-signature',
@@ -1091,7 +1138,6 @@ $wgMessageStructure = array(
'right-userrights',
'right-userrights-interwiki',
'right-siteadmin',
- 'right-reset-passwords',
'right-override-export-depth',
'right-sendemail',
),
@@ -1099,6 +1145,7 @@ $wgMessageStructure = array(
'rightslog',
'rightslogtext',
'rightslogentry',
+ 'rightslogentry-autopromote',
'rightsnone',
),
'action' => array(
@@ -1239,6 +1286,7 @@ $wgMessageStructure = array(
'large-file',
'largefileserver',
'emptyfile',
+ 'windows-nonascii-filename',
'fileexists',
'filepageexists',
'fileexists-extension',
@@ -1260,6 +1308,7 @@ $wgMessageStructure = array(
'php-uploaddisabledtext',
'uploadscripted',
'uploadvirus',
+ 'uploadjava',
'upload-source',
'sourcefilename',
'sourceurl',
@@ -1269,7 +1318,6 @@ $wgMessageStructure = array(
'upload-options',
'watchthisupload',
'filewasdeleted',
- 'upload-wasdeleted',
'filename-bad-prefix',
'filename-prefix-blacklist',
'upload-success-subj',
@@ -1291,6 +1339,23 @@ $wgMessageStructure = array(
'upload-http-error',
),
+ 'zip' => array(
+ 'zip-file-open-error',
+ 'zip-wrong-format',
+ 'zip-bad',
+ 'zip-unsupported'
+ ),
+
+ 'uploadstash' => array(
+ 'uploadstash',
+ 'uploadstash-summary',
+ 'uploadstash-clear',
+ 'uploadstash-nofiles',
+ 'uploadstash-badtoken',
+ 'uploadstash-errclear',
+ 'uploadstash-refresh',
+ ),
+
'img-auth' => array(
'img-auth-accessdenied',
'img-auth-desc',
@@ -1367,7 +1432,7 @@ $wgMessageStructure = array(
'linkstoimage-more',
'nolinkstoimage',
'morelinkstoimage',
- 'redirectstofile',
+ 'linkstoimage-redirect',
'duplicatesoffile',
'sharedupload',
'sharedupload-desc-there',
@@ -1473,6 +1538,7 @@ $wgMessageStructure = array(
'doubleredirects-summary',
'doubleredirectstext',
'double-redirect-fixed-move',
+ 'double-redirect-fixed-maintenance',
'double-redirect-fixer',
),
'brokenredirects' => array(
@@ -1580,6 +1646,7 @@ $wgMessageStructure = array(
'pager-newer-n',
'pager-older-n',
'suppress',
+ 'querypage-disabled',
),
'booksources' => array(
'booksources',
@@ -1703,6 +1770,10 @@ $wgMessageStructure = array(
'noemailtext',
'nowikiemailtitle',
'nowikiemailtext',
+ 'emailnotarget',
+ 'emailtarget',
+ 'emailusername',
+ 'emailusernamesubmit',
'email-legend',
'emailfrom',
'emailto',
@@ -1728,9 +1799,9 @@ $wgMessageStructure = array(
'watchlistanontext',
'watchnologin',
'watchnologintext',
- 'addedwatch',
+ 'addwatch',
'addedwatchtext',
- 'removedwatch',
+ 'removewatch',
'removedwatchtext',
'watch',
'watchthispage',
@@ -1753,6 +1824,7 @@ $wgMessageStructure = array(
'watching' => array(
'watching',
'unwatching',
+ 'watcherrortext',
),
'enotif' => array(
'enotif_mailer',
@@ -1911,6 +1983,9 @@ $wgMessageStructure = array(
'nsform' => array(
'namespace',
'invert',
+ 'tooltip-invert',
+ 'namespace_association',
+ 'tooltip-namespace_association',
'blanknamespace',
),
'contributions' => array(
@@ -1965,17 +2040,19 @@ $wgMessageStructure = array(
'whatlinkshere-filters',
),
'block' => array(
+ 'autoblockid',
+ 'block',
+ 'unblock',
'blockip',
'blockip-title',
'blockip-legend',
'blockiptext',
- 'ipaddress',
'ipadressorusername',
'ipbexpiry',
'ipbreason',
'ipbreasonotherlist',
'ipbreason-dropdown',
- 'ipbanononly',
+ 'ipb-hardblock',
'ipbcreateaccount',
'ipbemailban',
'ipbenableautoblock',
@@ -1986,11 +2063,14 @@ $wgMessageStructure = array(
'ipbotherreason',
'ipbhidename',
'ipbwatchuser',
- 'ipballowusertalk',
+ 'ipb-disableusertalk',
'ipb-change-block',
+ 'ipb-confirm',
'badipaddress',
'blockipsuccesssub',
'blockipsuccesstext',
+ 'ipb-blockingself',
+ 'ipb-confirmhideuser',
'ipb-edit-dropdown',
'ipb-unblock-addr',
'ipb-unblock',
@@ -2000,18 +2080,25 @@ $wgMessageStructure = array(
'unblockiptext',
'ipusubmit',
'unblocked',
+ 'unblocked-range',
'unblocked-id',
+ 'blocklist',
'ipblocklist',
'ipblocklist-legend',
- 'ipblocklist-username',
- 'ipblocklist-sh-userblocks',
- 'ipblocklist-sh-tempblocks',
- 'ipblocklist-sh-addressblocks',
- 'ipblocklist-summary',
+ 'blocklist-userblocks',
+ 'blocklist-tempblocks',
+ 'blocklist-addressblocks',
+ 'blocklist-timestamp',
+ 'blocklist-target',
+ 'blocklist-expiry',
+ 'blocklist-by',
+ 'blocklist-params',
+ 'blocklist-reason',
+ 'blocklist-summary',
'ipblocklist-submit',
'ipblocklist-localblock',
'ipblocklist-otherblocks',
- 'blocklistline',
+
'infiniteblock',
'expiringblock',
'anononlyblock',
@@ -2047,6 +2134,7 @@ $wgMessageStructure = array(
'ipb_already_blocked',
'ipb-needreblock',
'ipb-otherblocks-header',
+ 'unblock-hideuser',
'ipb_cant_unblock',
'ipb_blocked_as_range',
'ip_range_invalid',
@@ -2080,10 +2168,10 @@ $wgMessageStructure = array(
'unlockdbsuccesstext',
'lockfilenotwritable',
'databasenotlocked',
+ 'lockedbyandtime',
),
'movepage' => array(
'move-page',
- 'move-page-backlink',
'move-page-legend',
'movepagetext',
'movepagetext-noredirectfixer',
@@ -2382,6 +2470,11 @@ $wgMessageStructure = array(
'vector.css',
'print.css',
'handheld.css',
+ 'noscript.css',
+ 'group-autoconfirmed.css',
+ 'group-bot.css',
+ 'group-sysop.css',
+ 'group-bureaucrat.css',
),
'scripts' => array(
'common.js',
@@ -2394,10 +2487,12 @@ $wgMessageStructure = array(
'simple.js',
'modern.js',
'vector.js',
+ 'group-autoconfirmed.js',
+ 'group-bot.js',
+ 'group-sysop.js',
+ 'group-bureaucrat.js',
),
'metadata_cc' => array(
- 'nodublincore',
- 'nocreativecommons',
'notacceptable',
),
'attribution' => array(
@@ -2421,12 +2516,17 @@ $wgMessageStructure = array(
'spam_blanking',
),
'info' => array(
- 'infosubtitle',
- 'numedits',
- 'numtalkedits',
- 'numwatchers',
- 'numauthors',
- 'numtalkauthors',
+ 'pageinfo-title',
+ 'pageinfo-header-edits',
+ 'pageinfo-header-watchlist',
+ 'pageinfo-header-views',
+ 'pageinfo-subjectpage',
+ 'pageinfo-talkpage',
+ 'pageinfo-watchers',
+ 'pageinfo-edits',
+ 'pageinfo-authors',
+ 'pageinfo-views',
+ 'pageinfo-viewsperedit',
),
'skin' => array(
'skinname-standard',
@@ -2439,25 +2539,6 @@ $wgMessageStructure = array(
'skinname-modern',
'skinname-vector',
),
- 'math' => array(
- 'mw_math_png',
- 'mw_math_simple',
- 'mw_math_html',
- 'mw_math_source',
- 'mw_math_modern',
- 'mw_math_mathml',
- ),
- 'matherrors' => array(
- 'math_failure',
- 'math_unknown_error',
- 'math_unknown_function',
- 'math_lexing_error',
- 'math_syntax_error',
- 'math_image_error',
- 'math_bad_tmpdir',
- 'math_bad_output',
- 'math_notexvc',
- ),
'patrolling' => array(
'markaspatrolleddiff',
'markaspatrolledlink',
@@ -2499,10 +2580,13 @@ $wgMessageStructure = array(
'widthheightpage',
'file-info',
'file-info-size',
+ 'file-info-size-pages',
'file-nohires',
'svg-long-desc',
'show-big-image',
- 'show-big-image-thumb',
+ 'show-big-image-preview',
+ 'show-big-image-other',
+ 'show-big-image-size',
'file-info-gif-looped',
'file-info-gif-frames',
'file-info-png-looped',
@@ -2526,6 +2610,7 @@ $wgMessageStructure = array(
'seconds-abbrev',
'minutes-abbrev',
'hours-abbrev',
+ 'days-abbrev',
),
'badimagelist' => array(
'bad_image_list',
@@ -2570,12 +2655,19 @@ $wgMessageStructure = array(
'variantname-tg-latn',
'variantname-tg',
),
+ 'variantname-iu' => array(
+ 'variantname-ike-cans',
+ 'variantname-ike-latn',
+ 'variantname-iu',
+ ),
'metadata' => array(
'metadata',
'metadata-help',
'metadata-expand',
'metadata-collapse',
'metadata-fields',
+ 'metadata-langitem',
+ 'metadata-langitem-default',
),
'exif' => array(
'exif-imagewidth',
@@ -2596,7 +2688,6 @@ $wgMessageStructure = array(
'exif-stripbytecounts',
'exif-jpeginterchangeformat',
'exif-jpeginterchangeformatlength',
- 'exif-transferfunction',
'exif-whitepoint',
'exif-primarychromaticities',
'exif-ycbcrcoefficients',
@@ -2615,7 +2706,6 @@ $wgMessageStructure = array(
'exif-compressedbitsperpixel',
'exif-pixelydimension',
'exif-pixelxdimension',
- 'exif-makernote',
'exif-usercomment',
'exif-relatedsoundfile',
'exif-datetimeoriginal',
@@ -2630,7 +2720,6 @@ $wgMessageStructure = array(
'exif-exposureprogram',
'exif-spectralsensitivity',
'exif-isospeedratings',
- 'exif-oecf',
'exif-shutterspeedvalue',
'exif-aperturevalue',
'exif-brightnessvalue',
@@ -2644,7 +2733,6 @@ $wgMessageStructure = array(
'exif-focallength-format',
'exif-subjectarea',
'exif-flashenergy',
- 'exif-spatialfrequencyresponse',
'exif-focalplanexresolution',
'exif-focalplaneyresolution',
'exif-focalplaneresolutionunit',
@@ -2653,7 +2741,6 @@ $wgMessageStructure = array(
'exif-sensingmethod',
'exif-filesource',
'exif-scenetype',
- 'exif-cfapattern',
'exif-customrendered',
'exif-exposuremode',
'exif-whitebalance',
@@ -2698,16 +2785,96 @@ $wgMessageStructure = array(
'exif-gpsareainformation',
'exif-gpsdatestamp',
'exif-gpsdifferential',
+ 'exif-coordinate-format',
+ 'exif-jpegfilecomment',
+ 'exif-keywords',
+ 'exif-worldregioncreated',
+ 'exif-countrycreated',
+ 'exif-countrycodecreated',
+ 'exif-provinceorstatecreated',
+ 'exif-citycreated',
+ 'exif-sublocationcreated',
+ 'exif-worldregiondest',
+ 'exif-countrydest',
+ 'exif-countrycodedest',
+ 'exif-provinceorstatedest',
+ 'exif-citydest',
+ 'exif-sublocationdest',
'exif-objectname',
+ 'exif-specialinstructions',
+ 'exif-headline',
+ 'exif-credit',
+ 'exif-source',
+ 'exif-editstatus',
+ 'exif-urgency',
+ 'exif-fixtureidentifier',
+ 'exif-locationdest',
+ 'exif-locationdestcode',
+ 'exif-objectcycle',
+ 'exif-contact',
+ 'exif-writer',
+ 'exif-languagecode',
+ 'exif-iimversion',
+ 'exif-iimcategory',
+ 'exif-iimsupplementalcategory',
+ 'exif-datetimeexpires',
+ 'exif-datetimereleased',
+ 'exif-originaltransmissionref',
+ 'exif-identifier',
+ 'exif-lens',
+ 'exif-serialnumber',
+ 'exif-cameraownername',
+ 'exif-label',
+ 'exif-datetimemetadata',
+ 'exif-nickname',
+ 'exif-rating',
+ 'exif-rightscertificate',
+ 'exif-copyrighted',
+ 'exif-copyrightowner',
+ 'exif-usageterms',
+ 'exif-webstatement',
+ 'exif-originaldocumentid',
+ 'exif-licenseurl',
+ 'exif-morepermissionsurl',
+ 'exif-attributionurl',
+ 'exif-preferredattributionname',
+ 'exif-pngfilecomment',
+ 'exif-disclaimer',
+ 'exif-contentwarning',
+ 'exif-giffilecomment',
+ 'exif-intellectualgenre',
+ 'exif-subjectnewscode',
+ 'exif-scenecode',
+ 'exif-event',
+ 'exif-organisationinimage',
+ 'exif-personinimage',
+ 'exif-originalimageheight',
+ 'exif-originalimagewidth',
),
'exif-values' => array(
'exif-make-value',
'exif-model-value',
'exif-software-value',
+ 'exif-software-version-value',
+ 'exif-contact-value',
+ 'exif-subjectnewscode-value',
),
'exif-compression' => array(
'exif-compression-1',
+ 'exif-compression-2',
+ 'exif-compression-3',
+ 'exif-compression-4',
+ 'exif-compression-5',
'exif-compression-6',
+ 'exif-compression-7',
+ 'exif-compression-8',
+ 'exif-compression-32773',
+ 'exif-compression-32946',
+ 'exif-compression-34712',
+ ),
+ 'exif-copyrighted' => array(
+ 'exif-copyrighted-true',
+ 'exif-copyrighted-false',
),
'exif-photometricinterpretation' => array(
'exif-photometricinterpretation-2',
@@ -2736,7 +2903,7 @@ $wgMessageStructure = array(
),
'exif-colorspace' => array(
'exif-colorspace-1',
- 'exif-colorspace-ffff.h',
+ 'exif-colorspace-65535',
),
'exif-componentsconfiguration' => array(
'exif-componentsconfiguration-0',
@@ -2879,6 +3046,10 @@ $wgMessageStructure = array(
'exif-gpslongitude-e',
'exif-gpslongitude-w',
),
+ 'exif-altituderef' => array(
+ 'exif-gpsaltitude-above-sealevel',
+ 'exif-gpsaltitude-below-sealevel',
+ ),
'exif-gpsstatus' => array(
'exif-gpsstatus-a',
'exif-gpsstatus-v',
@@ -2892,17 +3063,80 @@ $wgMessageStructure = array(
'exif-gpsspeed-m',
'exif-gpsspeed-n',
),
+ 'exif-gpsdestdistanceref' => array(
+ 'exif-gpsdestdistance-k',
+ 'exif-gpsdestdistance-m',
+ 'exif-gpsdestdistance-n',
+ ),
+ 'exif-gdop' => array(
+ 'exif-gpsdop-excellent',
+ 'exif-gpsdop-good',
+ 'exif-gpsdop-moderate',
+ 'exif-gpsdop-fair',
+ 'exif-gpsdop-poor',
+ ),
+ 'exif-objectcycle' => array(
+ 'exif-objectcycle-a',
+ 'exif-objectcycle-p',
+ 'exif-objectcycle-b',
+ ),
'exif-gpsdirection' => array(
'exif-gpsdirection-t',
'exif-gpsdirection-m',
),
+ 'exif-ycbcrpositioning' => array(
+ 'exif-ycbcrpositioning-1',
+ 'exif-ycbcrpositioning-2',
+ ),
+ 'exif-dc' => array(
+ 'exif-dc-contributor',
+ 'exif-dc-coverage',
+ 'exif-dc-date',
+ 'exif-dc-publisher',
+ 'exif-dc-relation',
+ 'exif-dc-rights',
+ 'exif-dc-source',
+ 'exif-dc-type',
+ ),
+ 'exif-rating' => array(
+ 'exif-rating-rejected',
+ ),
+ 'exif-isospeedratings' => array(
+ 'exif-isospeedratings-overflow',
+ ),
+ 'exif-maxaperturevalue' => array(
+ 'exif-maxaperturevalue-value',
+ ),
+ 'exif-iimcategory' => array(
+ 'exif-iimcategory-ace',
+ 'exif-iimcategory-clj',
+ 'exif-iimcategory-dis',
+ 'exif-iimcategory-fin',
+ 'exif-iimcategory-edu',
+ 'exif-iimcategory-evn',
+ 'exif-iimcategory-hth',
+ 'exif-iimcategory-hum',
+ 'exif-iimcategory-lab',
+ 'exif-iimcategory-lif',
+ 'exif-iimcategory-pol',
+ 'exif-iimcategory-rel',
+ 'exif-iimcategory-sci',
+ 'exif-iimcategory-soi',
+ 'exif-iimcategory-spo',
+ 'exif-iimcategory-war',
+ 'exif-iimcategory-wea',
+ ),
+ 'exif-urgency' => array(
+ 'exif-urgency-normal',
+ 'exif-urgency-low',
+ 'exif-urgency-high',
+ 'exif-urgency-other',
+ ),
'edit-externally' => array(
'edit-externally',
'edit-externally-help',
),
'all' => array(
- 'recentchangesall',
- 'imagelistall',
'watchlistall2',
'namespacesall',
'monthsall',
@@ -2945,6 +3179,7 @@ $wgMessageStructure = array(
'deleteconflict' => array(
'deletedwhileediting',
'confirmrecreate',
+ 'confirmrecreate-noreason',
'recreate',
),
'unit-pixel' => array(
@@ -2955,8 +3190,13 @@ $wgMessageStructure = array(
'confirm-purge-top',
'confirm-purge-bottom',
),
+ 'watch-unwatch' => array(
+ 'confirm-watch-button',
+ 'confirm-watch-top',
+ 'confirm-unwatch-button',
+ 'confirm-unwatch-top',
+ ),
'separators' => array(
- 'catseparator',
'semicolon-separator',
'comma-separator',
'colon-separator',
@@ -3010,6 +3250,9 @@ $wgMessageStructure = array(
'lag-warn-normal',
'lag-warn-high',
),
+ 'watch' => array(
+ 'confirm-watch-button',
+ ),
'watchlisteditor' => array(
'watchlistedit-numitems',
'watchlistedit-noitems',
@@ -3105,14 +3348,15 @@ $wgMessageStructure = array(
'version-specialpages',
'version-parserhooks',
'version-variables',
+ 'version-antispam',
'version-skins',
+ 'version-api',
'version-other',
'version-mediahandlers',
'version-hooks',
'version-extension-functions',
'version-parser-extensiontags',
'version-parser-function-hooks',
- 'version-skin-extension-functions',
'version-hook-name',
'version-hook-subscribedby',
'version-version',
@@ -3140,6 +3384,7 @@ $wgMessageStructure = array(
'fileduplicatesearch-info',
'fileduplicatesearch-result-1',
'fileduplicatesearch-result-n',
+ 'fileduplicatesearch-noresults',
),
'special-specialpages' => array(
'specialpages',
@@ -3212,6 +3457,9 @@ $wgMessageStructure = array(
'sqlite-has-fts',
'sqlite-no-fts',
),
+ 'unwatch' => array(
+ 'confirm-unwatch-button',
+ ),
);
/** Comments for each block */
@@ -3243,7 +3491,8 @@ XHTML id names.",
'login' => 'Login and logout pages',
'mail' => 'E-mail sending',
'passwordstrength' => 'JavaScript password checks',
- 'resetpass' => 'Password reset dialog',
+ 'resetpass' => 'Change password dialog',
+ 'passwordreset' => 'Special:PasswordReset',
'toolbar' => 'Edit page toolbar',
'edit' => 'Edit pages',
'parserwarnings' => 'Parser/template warnings',
@@ -3271,7 +3520,9 @@ XHTML id names.",
'recentchanges' => 'Recent changes',
'recentchangeslinked' => 'Recent changes linked',
'upload' => 'Upload',
+ 'zip' => 'ZipDirectoryReader',
'upload-errors' => '',
+ 'uploadstash' => 'Special:UploadStash',
'img-auth' => 'img_auth script messages',
'http-errors' => 'HTTP errors',
'upload-curl-errors' => 'Some likely curl errors. More could be added from <http://curl.haxx.se/libcurl/c/libcurl-errors.html>',
@@ -3337,8 +3588,6 @@ XHTML id names.",
'spamprotection' => 'Spam protection',
'info' => 'Info page',
'skin' => 'Skin names',
- 'math' => 'Math options',
- 'matherrors' => 'Math errors',
'patrolling' => 'Patrolling',
'patrol-log' => 'Patrol log',
'imagedeletion' => 'Image deletion',
@@ -3355,11 +3604,13 @@ Variants for Chinese language",
'variantname-kk' => 'Variants for Kazakh language',
'variantname-ku' => 'Variants for Kurdish language',
'variantname-tg' => 'Variants for Tajiki language',
+ 'variantname-iu' => 'Variants for Inuktitut language',
'media-info' => 'Media information',
'metadata' => 'Metadata',
'exif' => 'EXIF tags',
'exif-values' => 'Make & model, can be wikified in order to link to the camera and model name',
'exif-compression' => 'EXIF attributes',
+ 'exif-copyrighted' => '',
'exif-unknowndate' => '',
'exif-photometricinterpretation' => '',
'exif-orientation' => '',
@@ -3387,10 +3638,21 @@ Variants for Chinese language",
'exif-subjectdistancerange' => '',
'exif-gpslatitude' => 'Pseudotags used for GPSLatitudeRef and GPSDestLatitudeRef',
'exif-gpslongitude' => 'Pseudotags used for GPSLongitudeRef and GPSDestLongitudeRef',
+ 'exif-altituderef' => 'Pseudotags used for GPSAltitudeRef',
'exif-gpsstatus' => '',
'exif-gpsmeasuremode' => '',
'exif-gpsspeed' => 'Pseudotags used for GPSSpeedRef',
+ 'exif-gpsdestdistanceref' => 'Pseudotags used for GPSDestDistanceRef',
+ 'exif-gdop' => '',
+ 'exif-objectcycle' => '',
'exif-gpsdirection' => 'Pseudotags used for GPSTrackRef, GPSImgDirectionRef and GPSDestBearingRef',
+ 'exif-ycbcrpositioning' => '',
+ 'exif-dc' => '',
+ 'exif-rating' => '',
+ 'exif-isospeedratings' => '',
+ 'exif-maxaperturevalue' => '',
+ 'exif-iimcategory' => '',
+ 'exif-urgency' => '',
'edit-externally' => 'External editor support',
'all' => "'all' in various places, this might be different for inflected languages",
'confirmemail' => 'E-mail address confirmation',
@@ -3399,6 +3661,7 @@ Variants for Chinese language",
'deleteconflict' => 'Delete conflict',
'unit-pixel' => '',
'purge' => 'action=purge',
+ 'watch-unwatch' => 'action=watch/unwatch',
'separators' => 'Separators for various lists, etc.',
'imgmulti' => 'Multipage image navigation',
'tablepager' => 'Table pager',
@@ -3425,4 +3688,5 @@ Variants for Chinese language",
'db-error-messages' => 'Database error messages',
'html-forms' => 'HTML forms',
'sqlite' => 'SQLite database support',
+ 'ajax-category' => 'Add categories per AJAX',
);
diff --git a/maintenance/language/rebuildLanguage.php b/maintenance/language/rebuildLanguage.php
index fd8d62ee..9b3a4b9d 100644
--- a/maintenance/language/rebuildLanguage.php
+++ b/maintenance/language/rebuildLanguage.php
@@ -2,6 +2,21 @@
/**
* Rewrite the messages array in the files languages/messages/MessagesXx.php.
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup MaintenanceLanguage
* @defgroup MaintenanceLanguage MaintenanceLanguage
@@ -14,11 +29,12 @@ require_once( 'writeMessagesArray.inc' );
/**
* Rewrite a messages array.
*
+ * @param $languages
* @param $code The language code.
- * @param $write Write to the messages file?
- * @param $listUnknown List the unknown messages?
- * @param $removeUnknown Remove the unknown messages?
- * @param $removeDupes Remove the duplicated messages?
+ * @param bool $write Write to the messages file?
+ * @param bool $listUnknown List the unknown messages?
+ * @param bool $removeUnknown Remove the unknown messages?
+ * @param bool $removeDupes Remove the duplicated messages?
* @param $dupeMsgSource The source file intended to remove from the array.
*/
function rebuildLanguage( $languages, $code, $write, $listUnknown, $removeUnknown, $removeDupes, $dupeMsgSource ) {
@@ -35,7 +51,7 @@ function rebuildLanguage( $languages, $code, $write, $listUnknown, $removeUnknow
*
* @param $oldMsgArray The input message array.
* @param $dupeMsgSource The source file path for duplicates.
- * @return $newMsgArray The output message array, with duplicates removed.
+ * @return Array $newMsgArray The output message array, with duplicates removed.
*/
function removeDupes( $oldMsgArray, $dupeMsgSource ) {
if ( file_exists( $dupeMsgSource ) ) {
diff --git a/maintenance/language/transstat.php b/maintenance/language/transstat.php
index c2144eb6..a3213266 100644
--- a/maintenance/language/transstat.php
+++ b/maintenance/language/transstat.php
@@ -2,6 +2,21 @@
/**
* Statistics about the localisation.
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup MaintenanceLanguage
*
@@ -80,8 +95,9 @@ $wgGeneralMessages = $wgLanguages->getGeneralMessages();
$wgRequiredMessagesNumber = count( $wgGeneralMessages['required'] );
foreach ( $wgLanguages->getLanguages() as $code ) {
- # Don't check English or RTL English
- if ( $code == 'en' || $code == 'enRTL' ) {
+ # Don't check English, RTL English or dummy language codes
+ if ( $code == 'en' || $code == 'enRTL' || (is_array( $wgDummyLanguageCodes ) &&
+ in_array( $code, $wgDummyLanguageCodes ) ) ) {
continue;
}
diff --git a/maintenance/language/validate.php b/maintenance/language/validate.php
index d897e467..57517644 100644
--- a/maintenance/language/validate.php
+++ b/maintenance/language/validate.php
@@ -1,5 +1,22 @@
<?php
/**
+ * Check language files for unrecognised variables.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup MaintenanceLanguage
*/
diff --git a/maintenance/language/writeMessagesArray.inc b/maintenance/language/writeMessagesArray.inc
index e3a48abd..093359ca 100644
--- a/maintenance/language/writeMessagesArray.inc
+++ b/maintenance/language/writeMessagesArray.inc
@@ -2,6 +2,21 @@
/**
* Write a messages array as a PHP text.
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup MaintenanceLanguage
*/
diff --git a/maintenance/mcc.php b/maintenance/mcc.php
index a8c79a72..02445278 100644
--- a/maintenance/mcc.php
+++ b/maintenance/mcc.php
@@ -2,6 +2,21 @@
/**
* memcached diagnostic tool
*
+ * 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
* @todo document
* @ingroup Maintenance
@@ -10,7 +25,7 @@
/** */
require_once( dirname( __FILE__ ) . '/commandLine.inc' );
-$mcc = new MWMemcached( array( 'persistant' => true/*, 'debug' => true*/ ) );
+$mcc = new MWMemcached( array( 'persistent' => true/*, 'debug' => true*/ ) );
$mcc->set_servers( $wgMemCachedServers );
# $mcc->set_debug( true );
diff --git a/maintenance/mergeMessageFileList.php b/maintenance/mergeMessageFileList.php
index 00c8cae5..8cfefcbd 100644
--- a/maintenance/mergeMessageFileList.php
+++ b/maintenance/mergeMessageFileList.php
@@ -1,4 +1,26 @@
<?php
+/**
+ * Merge $wgExtensionMessagesFiles from various extensions to produce a
+ * single array containing all message files.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
# Start from scratch
define( 'MW_NO_EXTENSION_MESSAGES', 1 );
@@ -9,6 +31,7 @@ $mmfl = false;
class MergeMessageFileList extends Maintenance {
function __construct() {
+ parent::__construct();
$this->addOption( 'list-file', 'A file containing a list of extension setup files, one per line.', false, true );
$this->addOption( 'output', 'Send output to this file (omit for stdout)', false, true );
$this->mDescription = 'Merge $wgExtensionMessagesFiles from various extensions to produce a ' .
diff --git a/maintenance/migrateUserGroup.php b/maintenance/migrateUserGroup.php
index c4163208..771ed947 100644
--- a/maintenance/migrateUserGroup.php
+++ b/maintenance/migrateUserGroup.php
@@ -60,7 +60,7 @@ class MigrateUserGroup extends Maintenance {
$dbw->commit();
$blockStart += $this->mBatchSize;
$blockEnd += $this->mBatchSize;
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
$this->output( "Done! $count user(s) in group '$oldGroup' are now in '$newGroup' instead.\n" );
}
diff --git a/maintenance/minify.php b/maintenance/minify.php
index 2884fd7b..e1fd862d 100644
--- a/maintenance/minify.php
+++ b/maintenance/minify.php
@@ -1,6 +1,24 @@
<?php
/**
* Minify a file or set of files
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
*/
require_once( dirname( __FILE__ ) . '/Maintenance.php' );
diff --git a/maintenance/moveBatch.php b/maintenance/moveBatch.php
index c7495338..9b9f9105 100644
--- a/maintenance/moveBatch.php
+++ b/maintenance/moveBatch.php
@@ -101,7 +101,7 @@ class MoveBatch extends Maintenance {
if ( $interval ) {
sleep( $interval );
}
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
}
}
diff --git a/maintenance/mssql/tables.sql b/maintenance/mssql/tables.sql
index 3d3d3592..dca64f17 100644
--- a/maintenance/mssql/tables.sql
+++ b/maintenance/mssql/tables.sql
@@ -545,18 +545,6 @@ CREATE TABLE /*$wgDBprefix*/watchlist (
);
CREATE UNIQUE INDEX /*$wgDBprefix*/namespace_title ON /*$wgDBprefix*/watchlist(wl_namespace,wl_title);
---
--- Used by the math module to keep track
--- of previously-rendered items.
---
-CREATE TABLE /*$wgDBprefix*/math (
- math_inputhash varbinary(16) NOT NULL PRIMARY KEY,
- math_outputhash varbinary(16) NOT NULL,
- math_html_conservativeness tinyint NOT NULL,
- math_html NVARCHAR(MAX),
- math_mathml NVARCHAR(MAX),
-);
-
-- Needs fulltext index.
CREATE TABLE /*$wgDBprefix*/searchindex (
si_page INT NOT NULL unique REFERENCES /*$wgDBprefix*/page(page_id) ON DELETE CASCADE,
diff --git a/maintenance/mwdocgen.php b/maintenance/mwdocgen.php
index 92311521..ed511f74 100644
--- a/maintenance/mwdocgen.php
+++ b/maintenance/mwdocgen.php
@@ -1,21 +1,33 @@
<?php
/**
- * Script to easily generate the mediawiki documentation using doxygen.
+ * Generate class and file reference documentation for MediaWiki using doxygen.
*
- * By default it will generate the whole documentation but you will be able to
- * generate just some parts.
+ * If the dot DOT language processor is available, attempt call graph
+ * generation.
*
* Usage:
* php mwdocgen.php
*
- * Then make a selection from the menu
- *
* KNOWN BUGS:
*
* - pass_thru seems to always use buffering (even with ob_implicit_flush()),
* that make output slow when doxygen parses language files.
* - the menu doesnt work, got disabled at revision 13740. Need to code it.
*
+ * 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
* @todo document
@@ -32,7 +44,7 @@
#
if ( php_sapi_name() != 'cli' ) {
- echo 'Run me from the command line.';
+ echo 'Run "' . __FILE__ . '" from the command line.';
die( -1 );
}
@@ -49,7 +61,6 @@ $doxygenTemplate = $mwPath . 'maintenance/Doxyfile';
$svnstat = $mwPath . 'bin/svnstat';
/** where Phpdoc should output documentation */
-# $doxyOutput = '/var/www/mwdoc/';
$doxyOutput = $mwPath . 'docs' . DIRECTORY_SEPARATOR ;
/** MediaWiki subpaths */
@@ -58,9 +69,15 @@ $mwPathL = $mwPath . 'languages/';
$mwPathM = $mwPath . 'maintenance/';
$mwPathS = $mwPath . 'skins/';
+/** Ignored paths relative to $mwPath */
+$mwExcludePaths = array(
+ 'images',
+ 'static',
+);
+
/** Variable to get user input */
$input = '';
-$exclude = '';
+$exclude_patterns = '';
#
# Functions
@@ -131,10 +148,11 @@ function getSvnRevision( $dir ) {
* @param $currentVersion String: Version number of the software
* @param $svnstat String: path to the svnstat file
* @param $input String: Path to analyze.
- * @param $exclude String: Additionals path regex to exlcude
+ * @param $exclude String: Additionals path regex to exclude
+ * @param $exclude_patterns String: Additionals path regex to exclude
* (LocalSettings.php, AdminSettings.php, .svn and .git directories are always excluded)
*/
-function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath, $currentVersion, $svnstat, $input, $exclude ) {
+function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath, $currentVersion, $svnstat, $input, $exclude, $exclude_patterns ) {
$template = file_get_contents( $doxygenTemplate );
@@ -146,6 +164,8 @@ function generateConfigFile( $doxygenTemplate, $outputDirectory, $stripFromPath,
'{{SVNSTAT}}' => $svnstat,
'{{INPUT}}' => $input,
'{{EXCLUDE}}' => $exclude,
+ '{{EXCLUDE_PATTERNS}}' => $exclude_patterns,
+ '{{HAVE_DOT}}' => `which dot` ? 'YES' : 'NO',
);
$tmpCfg = str_replace( array_keys( $replacements ), array_values( $replacements ), $template );
$tmpFileName = tempnam( wfTempDir(), 'mwdocgen-' );
@@ -212,18 +232,23 @@ case 5:
$input = $mwPath . $file;
case 6:
$input = $mwPath;
- $exclude = 'extensions';
+ $exclude_patterns = 'extensions';
}
$versionNumber = getSvnRevision( $input );
if ( $versionNumber === false ) { # Not using subversion ?
$svnstat = ''; # Not really useful if subversion not available
- $version = 'trunk'; # FIXME
+ # @todo FIXME
+ $version = 'trunk';
} else {
$version = "trunk (r$versionNumber)";
}
-$generatedConf = generateConfigFile( $doxygenTemplate, $doxyOutput, $mwPath, $version, $svnstat, $input, $exclude );
+// Generate path exclusions
+$excludedPaths = $mwPath . join( " $mwPath", $mwExcludePaths );
+print "EXCLUDE: $excludedPaths\n\n";
+
+$generatedConf = generateConfigFile( $doxygenTemplate, $doxyOutput, $mwPath, $version, $svnstat, $input, $excludedPaths, $exclude_patterns );
$command = $doxygenBin . ' ' . $generatedConf;
echo <<<TEXT
diff --git a/maintenance/namespaceDupes.php b/maintenance/namespaceDupes.php
index dbb16bcd..b883ea68 100644
--- a/maintenance/namespaceDupes.php
+++ b/maintenance/namespaceDupes.php
@@ -30,10 +30,10 @@ class NamespaceConflictChecker extends Maintenance {
parent::__construct();
$this->mDescription = "";
$this->addOption( 'fix', 'Attempt to automatically fix errors' );
- $this->addOption( 'suffix', "Dupes will be renamed with correct namespace with\n" .
- "\t\t<text> Appended after the article name", false, true );
- $this->addOption( 'prefix', "Do an explicit check for the given title prefix\n" .
- "\t\tappended after the article name", false, true );
+ $this->addOption( 'suffix', "Dupes will be renamed with correct namespace with " .
+ "<text> appended after the article name", false, true );
+ $this->addOption( 'prefix', "Do an explicit check for the given title prefix " .
+ "appended after the article name", false, true );
}
public function execute() {
@@ -66,8 +66,7 @@ class NamespaceConflictChecker extends Maintenance {
* @param $suffix String: suffix to append to renamed articles
*/
private function checkAll( $fix, $suffix = '' ) {
- global $wgContLang, $wgNamespaceAliases, $wgCanonicalNamespaceNames;
- global $wgCapitalLinks;
+ global $wgContLang, $wgNamespaceAliases, $wgCapitalLinks;
$spaces = array();
@@ -79,7 +78,7 @@ class NamespaceConflictChecker extends Maintenance {
}
// Now pull in all canonical and alias namespaces...
- foreach ( $wgCanonicalNamespaceNames as $ns => $name ) {
+ foreach ( MWNamespace::getCanonicalNamespaces() as $ns => $name ) {
// This includes $wgExtraNamespaces
if ( $name !== '' ) {
$spaces[$name] = $ns;
diff --git a/maintenance/nextJobDB.php b/maintenance/nextJobDB.php
index 8d8229e2..2d3608d5 100644
--- a/maintenance/nextJobDB.php
+++ b/maintenance/nextJobDB.php
@@ -33,20 +33,72 @@ class nextJobDB extends Maintenance {
public function execute() {
global $wgMemc;
$type = $this->getOption( 'type', false );
- $mckey = $type === false
- ? "jobqueue:dbs"
- : "jobqueue:dbs:$type";
- $pendingDBs = $wgMemc->get( $mckey );
- # If we didn't get it from the cache
+ $memcKey = 'jobqueue:dbs:v2';
+ $pendingDBs = $wgMemc->get( $memcKey );
+
+ // If the cache entry wasn't present, or in 1% of cases otherwise,
+ // regenerate the cache.
+ if ( !$pendingDBs || mt_rand( 0, 100 ) == 0 ) {
+ $pendingDBs = $this->getPendingDbs();
+ $wgMemc->set( $memcKey, $pendingDBs, 300 );
+ }
+
if ( !$pendingDBs ) {
- $pendingDBs = $this->getPendingDbs( $type );
- $wgMemc->set( $mckey, $pendingDBs, 300 );
+ return;
}
- # If we've got a pending job in a db, display it.
- if ( $pendingDBs ) {
- $this->output( $pendingDBs[mt_rand( 0, count( $pendingDBs ) - 1 )] );
+
+ do {
+ $again = false;
+
+ if ( $type === false ) {
+ $candidates = call_user_func_array( 'array_merge', $pendingDBs );
+ } elseif ( isset( $pendingDBs[$type] ) ) {
+ $candidates = $pendingDBs[$type];
+ } else {
+ $candidates = array();
+ }
+ if ( !$candidates ) {
+ return;
+ }
+
+ $candidates = array_values( $candidates );
+ $db = $candidates[ mt_rand( 0, count( $candidates ) - 1 ) ];
+ if ( !$this->checkJob( $type, $db ) ) {
+ // This job is not available in the current database. Remove it from
+ // the cache.
+ if ( $type === false ) {
+ foreach ( $pendingDBs as $type2 => $dbs ) {
+ $pendingDBs[$type2] = array_diff( $pendingDBs[$type2], array( $db ) );
+ }
+ } else {
+ $pendingDBs[$type] = array_diff( $pendingDBs[$type], array( $db ) );
+ }
+
+ $wgMemc->set( $memcKey, $pendingDBs, 300 );
+ $again = true;
+ }
+ } while ( $again );
+
+ $this->output( $db . "\n" );
+ }
+
+ /**
+ * Check if the specified database has a job of the specified type in it.
+ * The type may be false to indicate "all".
+ */
+ function checkJob( $type, $dbName ) {
+ $lb = wfGetLB( $dbName );
+ $db = $lb->getConnection( DB_MASTER, array(), $dbName );
+ if ( $type === false ) {
+ $conds = array();
+ } else {
+ $conds = array( 'job_cmd' => $type );
}
+
+ $exists = (bool) $db->selectField( 'job', '1', $conds, __METHOD__ );
+ $lb->reuseConnection( $db );
+ return $exists;
}
/**
@@ -54,7 +106,7 @@ class nextJobDB extends Maintenance {
* @param $type String Job type
* @return array
*/
- private function getPendingDbs( $type ) {
+ private function getPendingDbs() {
global $wgLocalDatabases;
$pendingDBs = array();
# Cross-reference DBs by master DB server
@@ -66,10 +118,10 @@ class nextJobDB extends Maintenance {
foreach ( $dbsByMaster as $dbs ) {
$dbConn = wfGetDB( DB_MASTER, array(), $dbs[0] );
- $stype = $dbConn->addQuotes( $type );
# Padding row for MySQL bug
- $sql = "(SELECT '-------------------------------------------' as db)";
+ $pad = str_repeat( '-', 40 );
+ $sql = "(SELECT '$pad' as db, '$pad' as job_cmd)";
foreach ( $dbs as $wikiId ) {
if ( $sql != '' ) {
$sql .= ' UNION ';
@@ -79,10 +131,7 @@ class nextJobDB extends Maintenance {
$dbConn->tablePrefix( $tablePrefix );
$jobTable = $dbConn->tableName( 'job' );
- if ( $type === false )
- $sql .= "(SELECT '$wikiId' as db FROM $dbName.$jobTable LIMIT 1)";
- else
- $sql .= "(SELECT '$wikiId' as db FROM $dbName.$jobTable WHERE job_cmd=$stype LIMIT 1)";
+ $sql .= "(SELECT DISTINCT '$wikiId' as db, job_cmd FROM $dbName.$jobTable GROUP BY job_cmd)";
}
$res = $dbConn->query( $sql, __METHOD__ );
$first = true;
@@ -92,7 +141,7 @@ class nextJobDB extends Maintenance {
$first = false;
continue;
}
- $pendingDBs[] = $row->db;
+ $pendingDBs[$row->job_cmd][] = $row->db;
}
}
return $pendingDBs;
diff --git a/maintenance/nukePage.php b/maintenance/nukePage.php
index 4a073a5e..c818e73a 100644
--- a/maintenance/nukePage.php
+++ b/maintenance/nukePage.php
@@ -56,6 +56,7 @@ class NukePage extends Maintenance {
# Get corresponding revisions
$this->output( "Searching for revisions..." );
$res = $dbw->query( "SELECT rev_id FROM $tbl_rev WHERE rev_page = $id" );
+ $revs = array();
foreach ( $res as $row ) {
$revs[] = $row->rev_id;
}
diff --git a/maintenance/oracle/alterSharedConstraints.php b/maintenance/oracle/alterSharedConstraints.php
new file mode 100644
index 00000000..aa207821
--- /dev/null
+++ b/maintenance/oracle/alterSharedConstraints.php
@@ -0,0 +1,90 @@
+<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @ingroup Maintenance
+ */
+
+/**
+ * When using shared tables that are referenced by foreign keys on local
+ * tables you have to change the constraints on local tables.
+ *
+ * The shared tables have to have GRANT REFERENCE on shared tables to local schema
+ * i.e.: GRANT REFERENCES (user_id) ON mwuser TO hubclient;
+ */
+
+require_once( dirname( __FILE__ ) . '/../Maintenance.php' );
+
+class AlterSharedConstraints extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Alter foreign key to reference master tables in shared database setup.";
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_ADMIN;
+ }
+
+ public function execute() {
+ global $wgSharedDB, $wgSharedTables, $wgSharedPrefix, $wgDBprefix;
+
+ if ( $wgSharedDB == null ) {
+ $this->output( "Database sharing is not enabled\n" );
+ return;
+ }
+
+ $dbw = wfGetDB( DB_MASTER );
+ foreach ( $wgSharedTables as $table ) {
+ $stable = $dbw->tableNameInternal($table);
+ if ( $wgSharedPrefix != null ) {
+ $ltable = preg_replace( "/^$wgSharedPrefix(.*)/i", "$wgDBprefix\\1", $stable );
+ } else {
+ $ltable = "{$wgDBprefix}{$stable}" ;
+ }
+
+ $result = $dbw->query( "SELECT uc.constraint_name, uc.table_name, ucc.column_name, uccpk.table_name pk_table_name, uccpk.column_name pk_column_name, uc.delete_rule, uc.deferrable, uc.deferred
+ FROM user_constraints uc, user_cons_columns ucc, user_cons_columns uccpk
+ WHERE uc.constraint_type = 'R'
+ AND ucc.constraint_name = uc.constraint_name
+ AND uccpk.constraint_name = uc.r_constraint_name
+ AND uccpk.table_name = '$ltable'" );
+ while (($row = $result->fetchRow()) !== false) {
+
+ $this->output( "Altering {$row['constraint_name']} ...");
+
+ try {
+ $dbw->query( "ALTER TABLE {$row['table_name']} DROP CONSTRAINT {$wgDBprefix}{$row['constraint_name']}" );
+ } catch (DBQueryError $exdb) {
+ if ($exdb->errno != 2443) {
+ throw $exdb;
+ }
+ }
+
+ $deleteRule = $row['delete_rule'] == 'NO ACTION' ? '' : "ON DELETE {$row['delete_rule']}";
+ $dbw->query( "ALTER TABLE {$row['table_name']} ADD CONSTRAINT {$wgDBprefix}{$row['constraint_name']}
+ FOREIGN KEY ({$row['column_name']})
+ REFERENCES {$wgSharedDB}.$stable({$row['pk_column_name']})
+ {$deleteRule} {$row['deferrable']} INITIALLY {$row['deferred']}" );
+
+ $this->output( "DONE\n" );
+ }
+ }
+ }
+
+}
+
+$maintClass = "AlterSharedConstraints";
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/oracle/archives/patch-config.sql b/maintenance/oracle/archives/patch-config.sql
new file mode 100644
index 00000000..66714a73
--- /dev/null
+++ b/maintenance/oracle/archives/patch-config.sql
@@ -0,0 +1,8 @@
+define mw_prefix='{$wgDBprefix}';
+
+CREATE TABLE &mw_prefix.config (
+ cf_name VARCHAR2(255) NOT NULL,
+ cf_value blob NOT NULL
+);
+ALTER TABLE &mw_prefix.config ADD CONSTRAINT &mw_prefix.config_pk PRIMARY KEY (cf_name);
+
diff --git a/maintenance/oracle/archives/patch-up_property.sql b/maintenance/oracle/archives/patch-up_property.sql
new file mode 100644
index 00000000..c8e2dd95
--- /dev/null
+++ b/maintenance/oracle/archives/patch-up_property.sql
@@ -0,0 +1,3 @@
+define mw_prefix='{$wgDBprefix}';
+
+ALTER TABLE &mw_prefix.user_properties MODIFY up_property varchar2(255);
diff --git a/maintenance/oracle/archives/patch-uploadstash.sql b/maintenance/oracle/archives/patch-uploadstash.sql
new file mode 100644
index 00000000..3e37ceff
--- /dev/null
+++ b/maintenance/oracle/archives/patch-uploadstash.sql
@@ -0,0 +1,25 @@
+define mw_prefix='{$wgDBprefix}';
+
+CREATE SEQUENCE uploadstash_us_id_seq;
+CREATE TABLE &mw_prefix.uploadstash (
+ us_id NUMBER NOT NULL,
+ us_user NUMBER DEFAULT 0 NOT NULL,
+ us_key VARCHAR2(255) NOT NULL,
+ us_orig_path VARCHAR2(255) NOT NULL,
+ us_path VARCHAR2(255) NOT NULL,
+ us_source_type VARCHAR2(50),
+ us_timestamp TIMESTAMP(6) WITH TIME ZONE,
+ us_status VARCHAR2(50) NOT NULL,
+ us_size NUMBER NOT NULL,
+ us_sha1 VARCHAR2(32) NOT NULL,
+ us_mime VARCHAR2(255),
+ us_media_type VARCHAR2(32) DEFAULT NULL,
+ us_image_width NUMBER,
+ us_image_height NUMBER,
+ us_image_bits NUMBER
+);
+ALTER TABLE &mw_prefix.uploadstash ADD CONSTRAINT &mw_prefix.uploadstash_pk PRIMARY KEY (us_id);
+ALTER TABLE &mw_prefix.uploadstash ADD CONSTRAINT &mw_prefix.uploadstash_fk1 FOREIGN KEY (us_user) REFERENCES &mw_prefix.mwuser(user_id) ON DELETE SET NULL DEFERRABLE INITIALLY DEFERRED;
+CREATE INDEX &mw_prefix.uploadstash_i01 ON &mw_prefix.uploadstash (us_user);
+CREATE INDEX &mw_prefix.uploadstash_i02 ON &mw_prefix.uploadstash (us_timestamp);
+CREATE UNIQUE INDEX &mw_prefix.uploadstash_u01 ON &mw_prefix.uploadstash (us_key);
diff --git a/maintenance/oracle/archives/patch-user_email_index.sql b/maintenance/oracle/archives/patch-user_email_index.sql
new file mode 100644
index 00000000..e34d8656
--- /dev/null
+++ b/maintenance/oracle/archives/patch-user_email_index.sql
@@ -0,0 +1,4 @@
+define mw_prefix='{$wgDBprefix}';
+
+CREATE INDEX &mw_prefix.mwuser_i02 ON &mw_prefix.mwuser (user_email);
+
diff --git a/maintenance/oracle/archives/patch-user_former_groups.sql b/maintenance/oracle/archives/patch-user_former_groups.sql
new file mode 100644
index 00000000..59147eb2
--- /dev/null
+++ b/maintenance/oracle/archives/patch-user_former_groups.sql
@@ -0,0 +1,9 @@
+define mw_prefix='{$wgDBprefix}';
+
+CREATE TABLE &mw_prefix.user_former_groups (
+ ufg_user NUMBER DEFAULT 0 NOT NULL,
+ ufg_group VARCHAR2(16) 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);
+
diff --git a/maintenance/oracle/archives/patch_rebuild_dupfunc.sql b/maintenance/oracle/archives/patch_rebuild_dupfunc.sql
new file mode 100644
index 00000000..0a232dbc
--- /dev/null
+++ b/maintenance/oracle/archives/patch_rebuild_dupfunc.sql
@@ -0,0 +1,146 @@
+/*$mw$*/
+CREATE OR REPLACE PROCEDURE duplicate_table(p_tabname IN VARCHAR2,
+ p_oldprefix IN VARCHAR2,
+ p_newprefix IN VARCHAR2,
+ p_temporary IN BOOLEAN) IS
+ e_table_not_exist EXCEPTION;
+ PRAGMA EXCEPTION_INIT(e_table_not_exist, -00942);
+ l_temp_ei_sql VARCHAR2(2000);
+ l_temporary BOOLEAN := p_temporary;
+BEGIN
+ BEGIN
+ EXECUTE IMMEDIATE 'DROP TABLE ' || p_newprefix || p_tabname ||
+ ' CASCADE CONSTRAINTS';
+ EXCEPTION
+ WHEN e_table_not_exist THEN
+ NULL;
+ END;
+ IF (p_tabname = 'SEARCHINDEX') THEN
+ l_temporary := FALSE;
+ END IF;
+ IF (l_temporary) THEN
+ EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE ' || p_newprefix ||
+ p_tabname || ' AS SELECT * FROM ' || p_oldprefix ||
+ p_tabname || ' WHERE ROWNUM = 0';
+ ELSE
+ EXECUTE IMMEDIATE 'CREATE TABLE ' || p_newprefix || p_tabname ||
+ ' AS SELECT * FROM ' || p_oldprefix || p_tabname ||
+ ' WHERE ROWNUM = 0';
+ END IF;
+ FOR rc IN (SELECT column_name, data_default
+ FROM user_tab_columns
+ WHERE table_name = p_oldprefix || p_tabname
+ AND data_default IS NOT NULL) LOOP
+ EXECUTE IMMEDIATE 'ALTER TABLE ' || p_newprefix || p_tabname ||
+ ' MODIFY ' || rc.column_name || ' DEFAULT ' ||
+ SUBSTR(rc.data_default, 1, 2000);
+ END LOOP;
+ FOR rc IN (SELECT REPLACE(REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('CONSTRAINT',
+ constraint_name),
+ 32767,
+ 1),
+ USER || '"."' || p_oldprefix,
+ USER || '"."' || p_newprefix),
+ '"' || constraint_name || '"',
+ '"' || p_newprefix || constraint_name || '"') DDLVC2,
+ constraint_name
+ FROM user_constraints uc
+ WHERE table_name = p_oldprefix || p_tabname
+ AND constraint_type = 'P') LOOP
+ l_temp_ei_sql := SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'PCTFREE') - 1);
+ l_temp_ei_sql := SUBSTR(l_temp_ei_sql,
+ 1,
+ INSTR(l_temp_ei_sql,
+ ')',
+ INSTR(l_temp_ei_sql, 'PRIMARY KEY') + 1) + 1);
+ IF nvl(length(l_temp_ei_sql), 0) > 0 THEN
+ EXECUTE IMMEDIATE l_temp_ei_sql;
+ END IF;
+ END LOOP;
+ IF (NOT l_temporary) THEN
+ FOR rc IN (SELECT REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('REF_CONSTRAINT',
+ constraint_name),
+ 32767,
+ 1),
+ USER || '"."' || p_oldprefix,
+ USER || '"."' || p_newprefix) DDLVC2,
+ constraint_name
+ FROM user_constraints uc
+ WHERE table_name = p_oldprefix || p_tabname
+ AND constraint_type = 'R') LOOP
+ IF nvl(length(l_temp_ei_sql), 0) > 0 THEN
+ EXECUTE IMMEDIATE l_temp_ei_sql;
+ END IF;
+ END LOOP;
+ END IF;
+ FOR rc IN (SELECT REPLACE(REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('INDEX',
+ index_name),
+ 32767,
+ 1),
+ USER || '"."' || p_oldprefix,
+ USER || '"."' || p_newprefix),
+ '"' || index_name || '"',
+ '"' || p_newprefix || index_name || '"') DDLVC2,
+ index_name,
+ index_type
+ FROM user_indexes ui
+ WHERE table_name = p_oldprefix || p_tabname
+ AND index_type NOT IN ('LOB', 'DOMAIN')
+ AND NOT EXISTS
+ (SELECT NULL
+ FROM user_constraints
+ WHERE table_name = ui.table_name
+ AND constraint_name = ui.index_name)) LOOP
+ l_temp_ei_sql := SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'PCTFREE') - 1);
+ l_temp_ei_sql := SUBSTR(l_temp_ei_sql,
+ 1,
+ INSTR(l_temp_ei_sql,
+ ')',
+ INSTR(l_temp_ei_sql,
+ '"' || USER || '"."' || p_newprefix || '"') + 1) + 1);
+ IF nvl(length(l_temp_ei_sql), 0) > 0 THEN
+ EXECUTE IMMEDIATE l_temp_ei_sql;
+ END IF;
+ END LOOP;
+ FOR rc IN (SELECT REPLACE(REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('INDEX',
+ index_name),
+ 32767,
+ 1),
+ USER || '"."' || p_oldprefix,
+ USER || '"."' || p_newprefix),
+ '"' || index_name || '"',
+ '"' || p_newprefix || index_name || '"') DDLVC2,
+ index_name,
+ index_type
+ FROM user_indexes ui
+ WHERE table_name = p_oldprefix || p_tabname
+ AND index_type = 'DOMAIN'
+ AND NOT EXISTS
+ (SELECT NULL
+ FROM user_constraints
+ WHERE table_name = ui.table_name
+ AND constraint_name = ui.index_name)) LOOP
+ l_temp_ei_sql := rc.ddlvc2;
+ IF nvl(length(l_temp_ei_sql), 0) > 0 THEN
+ EXECUTE IMMEDIATE l_temp_ei_sql;
+ END IF;
+ END LOOP;
+ FOR rc IN (SELECT REPLACE(REPLACE(UPPER(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('TRIGGER',
+ trigger_name),
+ 32767,
+ 1)),
+ USER || '"."' || p_oldprefix,
+ USER || '"."' || p_newprefix),
+ ' ON ' || p_oldprefix || p_tabname,
+ ' ON ' || p_newprefix || p_tabname) DDLVC2,
+ trigger_name
+ FROM user_triggers
+ WHERE table_name = p_oldprefix || p_tabname) LOOP
+ l_temp_ei_sql := SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'ALTER ') - 1);
+ IF nvl(length(l_temp_ei_sql), 0) > 0 THEN
+ EXECUTE IMMEDIATE l_temp_ei_sql;
+ END IF;
+ END LOOP;
+END;
+/*$mw$*/
+
diff --git a/maintenance/oracle/tables.sql b/maintenance/oracle/tables.sql
index f6d29f54..2fd62ef7 100644
--- a/maintenance/oracle/tables.sql
+++ b/maintenance/oracle/tables.sql
@@ -23,6 +23,7 @@ CREATE TABLE &mw_prefix.mwuser ( -- replace reserved word 'user'
ALTER TABLE &mw_prefix.mwuser ADD CONSTRAINT &mw_prefix.mwuser_pk PRIMARY KEY (user_id);
CREATE UNIQUE INDEX &mw_prefix.mwuser_u01 ON &mw_prefix.mwuser (user_name);
CREATE INDEX &mw_prefix.mwuser_i01 ON &mw_prefix.mwuser (user_email_token);
+CREATE INDEX &mw_prefix.mwuser_i02 ON &mw_prefix.mwuser (user_email, user_name);
-- Create a dummy user to satisfy fk contraints especially with revisions
INSERT INTO &mw_prefix.mwuser
@@ -47,7 +48,7 @@ CREATE INDEX &mw_prefix.user_newtalk_i02 ON &mw_prefix.user_newtalk (user_ip);
CREATE TABLE &mw_prefix.user_properties (
up_user NUMBER NOT NULL,
- up_property VARCHAR2(32) NOT NULL,
+ up_property VARCHAR2(255) NOT NULL,
up_value CLOB
);
CREATE UNIQUE INDEX &mw_prefix.user_properties_u01 on &mw_prefix.user_properties (up_user,up_property);
@@ -405,15 +406,6 @@ CREATE UNIQUE INDEX &mw_prefix.watchlist_u01 ON &mw_prefix.watchlist (wl_user, w
CREATE INDEX &mw_prefix.watchlist_i01 ON &mw_prefix.watchlist (wl_namespace, wl_title);
-CREATE TABLE &mw_prefix.math (
- math_inputhash VARCHAR2(32) NOT NULL,
- math_outputhash VARCHAR2(32) NOT NULL,
- math_html_conservativeness NUMBER NOT NULL,
- math_html CLOB,
- math_mathml CLOB
-);
-CREATE UNIQUE INDEX &mw_prefix.math_u01 ON &mw_prefix.math (math_inputhash);
-
CREATE TABLE &mw_prefix.searchindex (
si_page NUMBER NOT NULL,
si_title VARCHAR2(255),
@@ -645,6 +637,14 @@ CREATE TABLE &mw_prefix.module_deps (
);
CREATE UNIQUE INDEX &mw_prefix.module_deps_u01 ON &mw_prefix.module_deps (md_module, md_skin);
+CREATE TABLE &mw_prefix.config (
+ cf_name VARCHAR2(255) NOT NULL,
+ cf_value blob NOT NULL
+);
+ALTER TABLE &mw_prefix.config ADD CONSTRAINT &mw_prefix.config_pk PRIMARY KEY (cf_name);
+-- leaving index out for now ...
+
+
-- do not prefix this table as it breaks parserTests
CREATE TABLE wiki_field_info_full (
table_name VARCHAR2(35) NOT NULL,
@@ -718,6 +718,7 @@ CREATE OR REPLACE PROCEDURE duplicate_table(p_tabname IN VARCHAR2,
e_table_not_exist EXCEPTION;
PRAGMA EXCEPTION_INIT(e_table_not_exist, -00942);
l_temp_ei_sql VARCHAR2(2000);
+ l_temporary BOOLEAN := p_temporary;
BEGIN
BEGIN
EXECUTE IMMEDIATE 'DROP TABLE ' || p_newprefix || p_tabname ||
@@ -726,7 +727,10 @@ BEGIN
WHEN e_table_not_exist THEN
NULL;
END;
- IF (p_temporary) THEN
+ IF (p_tabname = 'SEARCHINDEX') THEN
+ l_temporary := FALSE;
+ END IF;
+ IF (l_temporary) THEN
EXECUTE IMMEDIATE 'CREATE GLOBAL TEMPORARY TABLE ' || p_newprefix ||
p_tabname || ' AS SELECT * FROM ' || p_oldprefix ||
p_tabname || ' WHERE ROWNUM = 0';
@@ -756,22 +760,30 @@ BEGIN
WHERE table_name = p_oldprefix || p_tabname
AND constraint_type = 'P') LOOP
l_temp_ei_sql := SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'PCTFREE') - 1);
- l_temp_ei_sql := SUBSTR(l_temp_ei_sql, 1, INSTR(l_temp_ei_sql, ')', INSTR(l_temp_ei_sql, 'PRIMARY KEY')+1)+1);
- EXECUTE IMMEDIATE l_temp_ei_sql;
- END LOOP;
- IF (NOT p_temporary) THEN
- FOR rc IN (SELECT REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('REF_CONSTRAINT',
- constraint_name),
- 32767,
- 1),
- USER || '"."' || p_oldprefix,
- USER || '"."' || p_newprefix) DDLVC2,
- constraint_name
- FROM user_constraints uc
- WHERE table_name = p_oldprefix || p_tabname
- AND constraint_type = 'R') LOOP
- EXECUTE IMMEDIATE rc.ddlvc2;
+ l_temp_ei_sql := SUBSTR(l_temp_ei_sql,
+ 1,
+ INSTR(l_temp_ei_sql,
+ ')',
+ INSTR(l_temp_ei_sql, 'PRIMARY KEY') + 1) + 1);
+ IF nvl(length(l_temp_ei_sql), 0) > 0 THEN
+ EXECUTE IMMEDIATE l_temp_ei_sql;
+ END IF;
END LOOP;
+ IF (NOT l_temporary) THEN
+ FOR rc IN (SELECT REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('REF_CONSTRAINT',
+ constraint_name),
+ 32767,
+ 1),
+ USER || '"."' || p_oldprefix,
+ USER || '"."' || p_newprefix) DDLVC2,
+ constraint_name
+ FROM user_constraints uc
+ WHERE table_name = p_oldprefix || p_tabname
+ AND constraint_type = 'R') LOOP
+ IF nvl(length(l_temp_ei_sql), 0) > 0 THEN
+ EXECUTE IMMEDIATE l_temp_ei_sql;
+ END IF;
+ END LOOP;
END IF;
FOR rc IN (SELECT REPLACE(REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('INDEX',
index_name),
@@ -792,8 +804,38 @@ BEGIN
WHERE table_name = ui.table_name
AND constraint_name = ui.index_name)) LOOP
l_temp_ei_sql := SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'PCTFREE') - 1);
- l_temp_ei_sql := SUBSTR(l_temp_ei_sql, 1, INSTR(l_temp_ei_sql, ')', INSTR(l_temp_ei_sql, '"' || USER || '"."' || p_newprefix || '"')+1)+1);
- EXECUTE IMMEDIATE l_temp_ei_sql;
+ l_temp_ei_sql := SUBSTR(l_temp_ei_sql,
+ 1,
+ INSTR(l_temp_ei_sql,
+ ')',
+ INSTR(l_temp_ei_sql,
+ '"' || USER || '"."' || p_newprefix || '"') + 1) + 1);
+ IF nvl(length(l_temp_ei_sql), 0) > 0 THEN
+ EXECUTE IMMEDIATE l_temp_ei_sql;
+ END IF;
+ END LOOP;
+ FOR rc IN (SELECT REPLACE(REPLACE(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('INDEX',
+ index_name),
+ 32767,
+ 1),
+ USER || '"."' || p_oldprefix,
+ USER || '"."' || p_newprefix),
+ '"' || index_name || '"',
+ '"' || p_newprefix || index_name || '"') DDLVC2,
+ index_name,
+ index_type
+ FROM user_indexes ui
+ WHERE table_name = p_oldprefix || p_tabname
+ AND index_type = 'DOMAIN'
+ AND NOT EXISTS
+ (SELECT NULL
+ FROM user_constraints
+ WHERE table_name = ui.table_name
+ AND constraint_name = ui.index_name)) LOOP
+ l_temp_ei_sql := rc.ddlvc2;
+ IF nvl(length(l_temp_ei_sql), 0) > 0 THEN
+ EXECUTE IMMEDIATE l_temp_ei_sql;
+ END IF;
END LOOP;
FOR rc IN (SELECT REPLACE(REPLACE(UPPER(DBMS_LOB.SUBSTR(DBMS_METADATA.get_ddl('TRIGGER',
trigger_name),
@@ -807,9 +849,12 @@ BEGIN
FROM user_triggers
WHERE table_name = p_oldprefix || p_tabname) LOOP
l_temp_ei_sql := SUBSTR(rc.ddlvc2, 1, INSTR(rc.ddlvc2, 'ALTER ') - 1);
- EXECUTE IMMEDIATE l_temp_ei_sql;
+ IF nvl(length(l_temp_ei_sql), 0) > 0 THEN
+ EXECUTE IMMEDIATE l_temp_ei_sql;
+ END IF;
END LOOP;
END;
+
/*$mw$*/
/*$mw$*/
diff --git a/maintenance/orphans.php b/maintenance/orphans.php
index dbbddb9c..1986ff35 100644
--- a/maintenance/orphans.php
+++ b/maintenance/orphans.php
@@ -50,7 +50,7 @@ class Orphans extends Maintenance {
/**
* Lock the appropriate tables for the script
- * @param $db Database object
+ * @param $db DatabaseBase object
* @param $extraTable String The name of any extra tables to lock (eg: text)
*/
private function lockTables( &$db, $extraTable = null ) {
diff --git a/maintenance/ourusers.php b/maintenance/ourusers.php
index 499da5cf..c8578e24 100644
--- a/maintenance/ourusers.php
+++ b/maintenance/ourusers.php
@@ -6,6 +6,21 @@
* list of hosts. It takes care of setting the wikiuser for every
* database as well as setting up wikiadmin.
*
+ * 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
+ *
* @todo document
* @file
* @ingroup Maintenance
diff --git a/maintenance/populateCategory.php b/maintenance/populateCategory.php
index 4f494e15..4e9c44c4 100644
--- a/maintenance/populateCategory.php
+++ b/maintenance/populateCategory.php
@@ -1,5 +1,22 @@
<?php
/**
+ * Script to populate category table.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * 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
* @author Simetrical
@@ -64,7 +81,6 @@ TEXT;
}
}
- $maxlag = intval( $maxlag );
$throttle = intval( $throttle );
if ( $begin !== '' ) {
$where = 'cl_to > ' . $dbw->addQuotes( $begin );
@@ -102,7 +118,7 @@ TEXT;
++$i;
if ( !( $i % self::REPORTING_INTERVAL ) ) {
$this->output( "$name\n" );
- wfWaitForSlaves( $maxlag );
+ wfWaitForSlaves();
}
usleep( $throttle * 1000 );
}
diff --git a/maintenance/populateLogSearch.php b/maintenance/populateLogSearch.php
index ce2d95cc..f13873cb 100644
--- a/maintenance/populateLogSearch.php
+++ b/maintenance/populateLogSearch.php
@@ -35,7 +35,7 @@ class PopulateLogSearch extends Maintenance {
}
public function execute() {
- $db = wfGetDB( DB_MASTER );
+ $db = $this->getDB( DB_MASTER );
if ( !$db->tableExists( 'log_search' ) ) {
$this->error( "log_search does not exist", true );
}
@@ -97,14 +97,14 @@ class PopulateLogSearch extends Maintenance {
foreach ( $sres as $srow ) {
if ( $srow->$userField > 0 )
$userIds[] = intval( $srow->$userField );
- else if ( $srow->$userTextField != '' )
+ elseif ( $srow->$userTextField != '' )
$userIPs[] = $srow->$userTextField;
}
// Add item author relations...
$log->addRelations( 'target_author_id', $userIds, $row->log_id );
$log->addRelations( 'target_author_ip', $userIPs, $row->log_id );
// RevisionDelete logs - log events
- } else if ( LogEventsList::typeAction( $row, $delTypes, 'event' ) ) {
+ } elseif ( LogEventsList::typeAction( $row, $delTypes, 'event' ) ) {
$params = LogPage::extractParams( $row->log_params );
// Param format: <item CSV> [<ofield> <nfield>]
if ( count( $params ) < 1 ) continue; // bad row
@@ -121,7 +121,7 @@ class PopulateLogSearch extends Maintenance {
foreach ( $sres as $srow ) {
if ( $srow->log_user > 0 )
$userIds[] = intval( $srow->log_user );
- else if ( IP::isIPAddress( $srow->log_user_text ) )
+ elseif ( IP::isIPAddress( $srow->log_user_text ) )
$userIPs[] = $srow->log_user_text;
}
$log->addRelations( 'target_author_id', $userIds, $row->log_id );
@@ -130,7 +130,7 @@ class PopulateLogSearch extends Maintenance {
}
$blockStart += self::LOG_SEARCH_BATCH_SIZE;
$blockEnd += self::LOG_SEARCH_BATCH_SIZE;
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
if ( $db->insert(
'updatelog',
diff --git a/maintenance/populateLogUsertext.php b/maintenance/populateLogUsertext.php
index bb3927ce..e9e6926e 100644
--- a/maintenance/populateLogUsertext.php
+++ b/maintenance/populateLogUsertext.php
@@ -33,7 +33,7 @@ class PopulateLogUsertext extends Maintenance {
}
public function execute() {
- $db = wfGetDB( DB_MASTER );
+ $db = $this->getDB( DB_MASTER );
$start = $db->selectField( 'logging', 'MIN(log_id)', false, __METHOD__ );
if ( !$start ) {
$this->output( "Nothing to do.\n" );
@@ -59,7 +59,7 @@ class PopulateLogUsertext extends Maintenance {
$db->commit();
$blockStart += $this->mBatchSize;
$blockEnd += $this->mBatchSize;
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
if ( $db->insert(
'updatelog',
diff --git a/maintenance/populateParentId.php b/maintenance/populateParentId.php
index 387f5a56..7cbc267b 100644
--- a/maintenance/populateParentId.php
+++ b/maintenance/populateParentId.php
@@ -98,7 +98,7 @@ class PopulateParentId extends Maintenance {
}
$blockStart += $this->mBatchSize;
$blockEnd += $this->mBatchSize;
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
$logged = $db->insert( 'updatelog',
array( 'ul_key' => 'populate rev_parent_id' ),
diff --git a/maintenance/populateRevisionLength.php b/maintenance/populateRevisionLength.php
index 0af51dc1..d020b4cb 100644
--- a/maintenance/populateRevisionLength.php
+++ b/maintenance/populateRevisionLength.php
@@ -30,7 +30,7 @@ class PopulateRevisionLength extends Maintenance {
}
public function execute() {
- $db = wfGetDB( DB_MASTER );
+ $db = $this->getDB( DB_MASTER );
if ( !$db->tableExists( 'revision' ) ) {
$this->error( "revision table does not exist", true );
}
@@ -78,7 +78,7 @@ class PopulateRevisionLength extends Maintenance {
}
$blockStart += $this->mBatchSize;
$blockEnd += $this->mBatchSize;
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
$logged = $db->insert( 'updatelog',
array( 'ul_key' => 'populate rev_len' ),
diff --git a/maintenance/populateSha1.php b/maintenance/populateSha1.php
index 1714c0d6..1ab9109d 100644
--- a/maintenance/populateSha1.php
+++ b/maintenance/populateSha1.php
@@ -54,7 +54,7 @@ class PopulateSha1 extends Maintenance {
$imageTable = $dbw->tableName( 'image' );
if ( $method == 'pipe' ) {
- // @fixme kill this and replace with a second unbuffered DB connection.
+ // @todo FIXME: Kill this and replace with a second unbuffered DB connection.
global $wgDBuser, $wgDBserver, $wgDBpassword, $wgDBname;
$cmd = 'mysql -u' . wfEscapeShellArg( $wgDBuser ) .
' -h' . wfEscapeShellArg( $wgDBserver ) .
@@ -68,7 +68,7 @@ class PopulateSha1 extends Maintenance {
foreach ( $res as $row ) {
if ( $i % 100 == 0 ) {
$this->output( sprintf( "Done %d of %d, %5.3f%% \r", $i, $numRows, $i / $numRows * 100 ) );
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
$file = wfLocalFile( $row->img_name );
if ( !$file ) {
diff --git a/maintenance/postgres/archives/patch-user_former_groups.sql b/maintenance/postgres/archives/patch-user_former_groups.sql
new file mode 100644
index 00000000..1ba011e3
--- /dev/null
+++ b/maintenance/postgres/archives/patch-user_former_groups.sql
@@ -0,0 +1,5 @@
+CREATE TABLE user_former_groups (
+ ufg_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
+ ufg_group TEXT NOT NULL
+);
+CREATE UNIQUE INDEX ufg_user_group ON user_former_groups (ufg_user, ufg_group);
diff --git a/maintenance/postgres/compare_schemas.pl b/maintenance/postgres/compare_schemas.pl
index 7e3cdf71..18210fcf 100644
--- a/maintenance/postgres/compare_schemas.pl
+++ b/maintenance/postgres/compare_schemas.pl
@@ -94,7 +94,7 @@ sub parse_sql {
next if /^\s*\-\-/ or /^\s+$/;
s/\s*\-\- [\w ]+$//;
chomp;
-
+
if (/CREATE\s*TABLE/i) {
if (m{^CREATE TABLE /\*_\*/(\w+) \($}) {
$table = $1;
@@ -179,6 +179,10 @@ while (<$newfh>) {
next if /^CREATE TRIGGER/ or /^ FOR EACH ROW/;
next if /^INSERT INTO/ or /^ VALUES \(/;
next if /^ALTER TABLE/;
+ next if /^DROP SEQUENCE/;
+ next if /^DROP FUNCTION/;
+
+
chomp;
if (/^\$mw\$;?$/) {
diff --git a/maintenance/postgres/mediawiki_mysql2postgres.pl b/maintenance/postgres/mediawiki_mysql2postgres.pl
index 2b2bf50e..16012762 100644
--- a/maintenance/postgres/mediawiki_mysql2postgres.pl
+++ b/maintenance/postgres/mediawiki_mysql2postgres.pl
@@ -1,7 +1,7 @@
#!/usr/bin/perl
## Convert data from a MySQL mediawiki database into a Postgres mediawiki database
-## svn: $Id: mediawiki_mysql2postgres.pl 65542 2010-04-26 13:46:04Z demon $
+## svn: $Id: mediawiki_mysql2postgres.pl 86721 2011-04-22 18:47:17Z mah $
## NOTE: It is probably easier to dump your wiki using maintenance/dumpBackup.php
## and then import it with maintenance/importDump.php
@@ -181,7 +181,7 @@ $MYSQLSOCKET and $conninfo .= "\n-- socket $MYSQLSOCKET";
print qq{
-- Dump of MySQL Mediawiki tables for import into a Postgres Mediawiki schema
-- Performed by the program: $0
--- Version: $VERSION (subversion }.q{$LastChangedRevision: 65542 $}.qq{)
+-- Version: $VERSION (subversion }.q{$LastChangedRevision: 86721 $}.qq{)
-- Author: Greg Sabino Mullane <greg\@turnstep.com> Comments welcome
--
-- This file was created: $now
@@ -279,8 +279,8 @@ for my $t (@torder, 'objectcache', 'querycache') {
}
print "\n\n";
-print qq{-- Temporarily rename pagecontent to "text"\n};
-print qq{ALTER TABLE pagecontent RENAME TO "text";\n\n};
+print qq{-- Temporarily rename pagecontent to "${table_prefix}text"\n};
+print qq{ALTER TABLE pagecontent RENAME TO "${table_prefix}text";\n\n};
print qq{-- Allow rc_ip to contain empty string, will convert at end\n};
print qq{ALTER TABLE recentchanges ALTER rc_ip TYPE text USING host(rc_ip);\n\n};
@@ -304,9 +304,9 @@ INSERT INTO page VALUES (0,-1,'Dummy Page','',0,0,0,default,now(),0,10);
if (length $table_prefix) {
print qq{\n\n-- Temporarily renaming tables to accomodate the table_prefix "$table_prefix"\n\n};
for my $t (@torder) {
- next if $t eq '---';
+ next if $t eq '---' or $t eq 'text' or $t eq 'user';
my $tname = $special{$t}||$t;
- printf qq{ALTER TABLE %-18s RENAME TO "${table_prefix}$tname"\n}, qq{"$tname"};
+ printf qq{ALTER TABLE %-18s RENAME TO "${table_prefix}$tname";\n}, qq{"$tname"};
}
}
@@ -391,9 +391,9 @@ if (length $table_prefix) {
$maxsize = length "$_$table_prefix" if length "$_$table_prefix" > $maxsize;
}
for my $t (@torder) {
- next if $t eq '---' or $t eq 'text';
+ next if $t eq '---' or $t eq 'text' or $t eq 'user';
my $tname = $special{$t}||$t;
- printf qq{ALTER TABLE %*s RENAME TO "$tname"\n}, $maxsize+1, qq{"${table_prefix}$tname"};
+ printf qq{ALTER TABLE %*s RENAME TO "$tname";\n}, $maxsize+1, qq{"${table_prefix}$tname"};
}
}
@@ -409,13 +409,13 @@ for my $t (sort keys %tz) {
## Reset sequences
print q{
SELECT setval('filearchive_fa_id_seq', 1+coalesce(max(fa_id) ,0),false) FROM filearchive;
-SELECT setval('ipblocks_ipb_id_val', 1+coalesce(max(ipb_id) ,0),false) FROM ipblocks;
+SELECT setval('ipblocks_ipb_id_seq', 1+coalesce(max(ipb_id) ,0),false) FROM ipblocks;
SELECT setval('job_job_id_seq', 1+coalesce(max(job_id) ,0),false) FROM job;
-SELECT setval('log_log_id_seq', 1+coalesce(max(log_id) ,0),false) FROM logging;
+SELECT setval('logging_log_id_seq', 1+coalesce(max(log_id) ,0),false) FROM logging;
SELECT setval('page_page_id_seq', 1+coalesce(max(page_id),0),false) FROM page;
-SELECT setval('pr_id_val', 1+coalesce(max(pr_id) ,0),false) FROM page_restrictions;
-SELECT setval('rc_rc_id_seq', 1+coalesce(max(rc_id) ,0),false) FROM recentchanges;
-SELECT setval('rev_rev_id_val', 1+coalesce(max(rev_id) ,0),false) FROM revision;
+SELECT setval('page_restrictions_pr_id_seq', 1+coalesce(max(pr_id) ,0),false) FROM page_restrictions;
+SELECT setval('recentchanges_rc_id_seq', 1+coalesce(max(rc_id) ,0),false) FROM recentchanges;
+SELECT setval('revision_rev_id_seq', 1+coalesce(max(rev_id) ,0),false) FROM revision;
SELECT setval('text_old_id_seq', 1+coalesce(max(old_id) ,0),false) FROM pagecontent;
SELECT setval('trackbacks_tb_id_seq', 1+coalesce(max(tb_id) ,0),false) FROM trackbacks;
SELECT setval('user_user_id_seq', 1+coalesce(max(user_id),0),false) FROM mwuser;
diff --git a/maintenance/postgres/tables.sql b/maintenance/postgres/tables.sql
index 8e869da7..ac0258ff 100644
--- a/maintenance/postgres/tables.sql
+++ b/maintenance/postgres/tables.sql
@@ -9,6 +9,21 @@
BEGIN;
SET client_min_messages = 'ERROR';
+DROP SEQUENCE IF EXISTS user_user_id_seq CASCADE;
+DROP SEQUENCE IF EXISTS page_page_id_seq CASCADE;
+DROP SEQUENCE IF EXISTS revision_rev_id_seq CASCADE;
+DROP SEQUENCE IF EXISTS page_restrictions_id_seq CASCADE;
+DROP SEQUENCE IF EXISTS ipblocks_ipb_id_seq CASCADE;
+DROP SEQUENCE IF EXISTS recentchanges_rc_id_seq CASCADE;
+DROP SEQUENCE IF EXISTS logging_log_id_seq CASCADE;
+DROP SEQUENCE IF EXISTS trackbacks_tb_id_seq CASCADE;
+DROP SEQUENCE IF EXISTS job_job_id_seq CASCADE;
+DROP SEQUENCE IF EXISTS category_cat_id_seq CASCADE;
+DROP FUNCTION IF EXISTS page_deleted() CASCADE;
+DROP FUNCTION IF EXISTS ts2_page_title() CASCADE;
+DROP FUNCTION IF EXISTS ts2_page_text() CASCADE;
+DROP FUNCTION IF EXISTS add_interwiki(TEXT,INT,SMALLINT) CASCADE;
+
CREATE SEQUENCE user_user_id_seq MINVALUE 0 START WITH 0;
CREATE TABLE mwuser ( -- replace reserved word 'user'
user_id INTEGER NOT NULL PRIMARY KEY DEFAULT nextval('user_user_id_seq'),
@@ -39,6 +54,12 @@ CREATE TABLE user_groups (
);
CREATE UNIQUE INDEX user_groups_unique ON user_groups (ug_user, ug_group);
+CREATE TABLE user_former_groups (
+ ufg_user INTEGER NULL REFERENCES mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
+ ufg_group TEXT NOT NULL
+);
+CREATE UNIQUE INDEX ufg_user_group ON user_former_groups (ufg_user, ufg_group);
+
CREATE TABLE user_newtalk (
user_id INTEGER NOT NULL REFERENCES mwuser(user_id) ON DELETE CASCADE DEFERRABLE INITIALLY DEFERRED,
user_ip TEXT NULL,
@@ -63,12 +84,12 @@ CREATE TABLE page (
page_len INTEGER NOT NULL
);
CREATE UNIQUE INDEX page_unique_name ON page (page_namespace, page_title);
-CREATE INDEX page_main_title ON page (page_title) WHERE page_namespace = 0;
-CREATE INDEX page_talk_title ON page (page_title) WHERE page_namespace = 1;
-CREATE INDEX page_user_title ON page (page_title) WHERE page_namespace = 2;
-CREATE INDEX page_utalk_title ON page (page_title) WHERE page_namespace = 3;
-CREATE INDEX page_project_title ON page (page_title) WHERE page_namespace = 4;
-CREATE INDEX page_mediawiki_title ON page (page_title) WHERE page_namespace = 8;
+CREATE INDEX page_main_title ON page (page_title text_pattern_ops) WHERE page_namespace = 0;
+CREATE INDEX page_talk_title ON page (page_title text_pattern_ops) WHERE page_namespace = 1;
+CREATE INDEX page_user_title ON page (page_title text_pattern_ops) WHERE page_namespace = 2;
+CREATE INDEX page_utalk_title ON page (page_title text_pattern_ops) WHERE page_namespace = 3;
+CREATE INDEX page_project_title ON page (page_title text_pattern_ops) WHERE page_namespace = 4;
+CREATE INDEX page_mediawiki_title ON page (page_title text_pattern_ops) WHERE page_namespace = 8;
CREATE INDEX page_random_idx ON page (page_random);
CREATE INDEX page_len_idx ON page (page_len);
@@ -384,14 +405,6 @@ CREATE TABLE watchlist (
CREATE UNIQUE INDEX wl_user_namespace_title ON watchlist (wl_namespace, wl_title, wl_user);
CREATE INDEX wl_user ON watchlist (wl_user);
-CREATE TABLE math (
- math_inputhash BYTEA NOT NULL UNIQUE,
- math_outputhash BYTEA NOT NULL,
- math_html_conservativeness SMALLINT NOT NULL,
- math_html TEXT,
- math_mathml TEXT
-);
-
CREATE TABLE interwiki (
iw_prefix TEXT NOT NULL UNIQUE,
diff --git a/maintenance/preprocessDump.php b/maintenance/preprocessDump.php
new file mode 100644
index 00000000..ad9b4f14
--- /dev/null
+++ b/maintenance/preprocessDump.php
@@ -0,0 +1,86 @@
+<?php
+/**
+ * Take page text out of an XML dump file and preprocess it to obj.
+ * It may be useful for getting preprocessor statistics or filling the
+ * preprocessor cache.
+ *
+ * Copyright (C) 2011 Platonides - http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ */
+
+require_once( dirname( __FILE__ ) . '/dumpIterator.php' );
+
+class PreprocessDump extends DumpIterator {
+
+ /* Variables for dressing up as a parser */
+ public $mTitle = 'PreprocessDump';
+ public $mPPNodeCount = 0;
+
+ public function getStripList() {
+ global $wgParser;
+ return $wgParser->getStripList();
+ }
+
+ public function __construct() {
+ parent::__construct();
+ $this->addOption( 'cache', 'Use and populate the preprocessor cache.', false, false );
+ $this->addOption( 'preprocessor', 'Preprocessor to use.', false, false );
+ }
+
+ public function getDbType() {
+ return Maintenance::DB_NONE;
+ }
+
+ public function checkOptions() {
+ global $wgParser, $wgParserConf, $wgPreprocessorCacheThreshold;
+
+ if ( !$this->hasOption( 'cache' ) ) {
+ $wgPreprocessorCacheThreshold = false;
+ }
+
+ if ( $this->hasOption( 'preprocessor' ) ) {
+ $name = $this->getOption( 'preprocessor' );
+ } elseif ( isset( $wgParserConf['preprocessorClass'] ) ) {
+ $name = $wgParserConf['preprocessorClass'];
+ } else {
+ $name = 'Preprocessor_DOM';
+ }
+
+ $wgParser->firstCallInit();
+ $this->mPreprocessor = new $name( $this );
+ }
+
+ /**
+ * Callback function for each revision, preprocessToObj()
+ * @param $rev Revision
+ */
+ public function processRevision( $rev ) {
+ try {
+ $this->mPreprocessor->preprocessToObj( $rev->getText(), 0 );
+ }
+ catch(Exception $e) {
+ $this->error("Caught exception " . $e->getMessage() . " in " . $rev->getTitle()->getPrefixedText() );
+ }
+ }
+}
+
+$maintClass = "PreprocessDump";
+require_once( RUN_MAINTENANCE_IF_MAIN );
+
diff --git a/maintenance/preprocessorFuzzTest.php b/maintenance/preprocessorFuzzTest.php
index 31b372c2..9dee67e2 100644
--- a/maintenance/preprocessorFuzzTest.php
+++ b/maintenance/preprocessorFuzzTest.php
@@ -1,5 +1,22 @@
<?php
/**
+ * Performs fuzz-style testing of MediaWiki's preprocessor.
+ *
+ * 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
*/
@@ -85,7 +102,6 @@ class PPFuzzTester {
file_put_contents( $filename, "Input:\n$testReport\n" );*/
}
}
- wfLogProfilingData();
}
function makeInputText( $max = false ) {
@@ -138,6 +154,9 @@ class PPFuzzTest {
$this->templates = array();
}
+ /**
+ * @param $title Title
+ */
function templateHook( $title ) {
$titleText = $title->getPrefixedDBkey();
@@ -173,10 +192,10 @@ class PPFuzzTest {
$wgUser->mFrom = 'name';
$wgUser->ppfz_test = $this;
- $options = new ParserOptions;
+ $options = ParserOptions::newFromUser( $wgUser );
$options->setTemplateCallback( array( $this, 'templateHook' ) );
$options->setTimestamp( wfTimestampNow() );
- $this->output = call_user_func( array( $wgParser, $this->entryPoint ), $this->mainText, $this->title->getPrefixedText(), $options );
+ $this->output = call_user_func( array( $wgParser, $this->entryPoint ), $this->mainText, $this->title, $options );
return $this->output;
}
@@ -200,7 +219,7 @@ class PPFuzzTest {
}
class PPFuzzUser extends User {
- var $ppfz_test;
+ var $ppfz_test, $mDataLoaded;
function load() {
if ( $this->mDataLoaded ) {
@@ -210,13 +229,13 @@ class PPFuzzUser extends User {
$this->loadDefaults( $this->mName );
}
- function getOption( $option, $defaultOverride = '' ) {
- if ( $option === 'fancysig' ) {
+ function getOption( $oname, $defaultOverride = null, $ignoreHidden = false ) {
+ if ( $oname === 'fancysig' ) {
return $this->ppfz_test->fancySig;
- } elseif ( $option === 'nickname' ) {
+ } elseif ( $oname === 'nickname' ) {
return $this->ppfz_test->nickname;
} else {
- return parent::getOption( $option, $defaultOverride );
+ return parent::getOption( $oname, $defaultOverride, $ignoreHidden );
}
}
}
diff --git a/maintenance/protect.php b/maintenance/protect.php
index baef45fb..aab84d68 100644
--- a/maintenance/protect.php
+++ b/maintenance/protect.php
@@ -1,5 +1,7 @@
<?php
/**
+ * Protect or unprotect an article.
+ *
* 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
diff --git a/includes/proxy_check.php b/maintenance/proxy_check.php
index 2bc46c0d..2bc46c0d 100644
--- a/includes/proxy_check.php
+++ b/maintenance/proxy_check.php
diff --git a/maintenance/purgeList.php b/maintenance/purgeList.php
index 2c0308c0..85a7aae2 100644
--- a/maintenance/purgeList.php
+++ b/maintenance/purgeList.php
@@ -26,10 +26,22 @@ class PurgeList extends Maintenance {
public function __construct() {
parent::__construct();
$this->mDescription = "Send purge requests for listed pages to squid";
- $this->addOption( 'purge', 'Whether to update page touched.' , false, false );
+ $this->addOption( 'purge', 'Whether to update page_touched.' , false, false );
+ $this->addOption( 'namespace', 'Namespace number', false, true );
+ $this->setBatchSize( 100 );
}
public function execute() {
+ if( $this->hasOption( 'namespace' ) ) {
+ $this->purgeNamespace();
+ } else {
+ $this->purgeList();
+ }
+ $this->output( "Done!\n" );
+ }
+
+ /** Purge URL coming from stdin */
+ private function purgeList() {
$stdin = $this->getStdin();
$urls = array();
@@ -40,7 +52,7 @@ class PurgeList extends Maintenance {
} elseif ( $page !== '' ) {
$title = Title::newFromText( $page );
if ( $title ) {
- $url = $title->getFullUrl();
+ $url = $title->getInternalUrl();
$this->output( "$url\n" );
$urls[] = $url;
if ( $this->getOption( 'purge' ) ) {
@@ -51,13 +63,69 @@ class PurgeList extends Maintenance {
}
}
}
+ $this->sendPurgeRequest( $urls );
+ }
+
+ /** Purge a namespace given by --namespace */
+ private function purgeNamespace() {
+ $dbr = wfGetDB( DB_SLAVE );
+ $ns = $dbr->addQuotes( $this->getOption( 'namespace') );
+
+ $result = $dbr->select(
+ array( 'page' ),
+ array( 'page_namespace', 'page_title' ),
+ array( "page_namespace = $ns" ),
+ __METHOD__,
+ array( 'ORDER BY' => 'page_id' )
+ );
+
+ $start = 0;
+ $end = $dbr->numRows( $result );
+ $this->output( "Will purge $end pages from namespace $ns\n" );
+
+ # Do remaining chunk
+ $end += $this->mBatchSize - 1;
+ $blockStart = $start;
+ $blockEnd = $start + $this->mBatchSize - 1;
+
+ while( $blockEnd <= $end ) {
+ # Select pages we will purge:
+ $result = $dbr->select(
+ array( 'page' ),
+ array( 'page_namespace', 'page_title' ),
+ array( "page_namespace = $ns" ),
+ __METHOD__,
+ array( # conditions
+ 'ORDER BY' => 'page_id',
+ 'LIMIT' => $this->mBatchSize,
+ 'OFFSET' => $blockStart,
+ )
+ );
+ # Initialize/reset URLs to be purged
+ $urls = array();
+ foreach( $result as $row ) {
+ $title = Title::makeTitle( $row->page_namespace, $row->page_title );
+ $url = $title->getInternalUrl();
+ $urls[] = $url;
+ }
+
+ $this->sendPurgeRequest( $urls );
+
+ $blockStart += $this->mBatchSize;
+ $blockEnd += $this->mBatchSize;
+ }
+ }
- $this->output( "Purging " . count( $urls ) . " urls...\n" );
+ /**
+ * Helper to purge an array of $urls
+ * @param $urls array List of URLS to purge from squids
+ */
+ private function sendPurgeRequest( $urls ) {
+ $this->output( "Purging " . count( $urls ). " urls\n" );
$u = new SquidUpdate( $urls );
$u->doUpdate();
-
- $this->output( "Done!\n" );
}
+
}
$maintClass = "PurgeList";
diff --git a/maintenance/purgeOldText.inc b/maintenance/purgeOldText.inc
index 381d62a7..45a7ae28 100644
--- a/maintenance/purgeOldText.inc
+++ b/maintenance/purgeOldText.inc
@@ -3,6 +3,21 @@
/**
* Support functions for cleaning up redundant text records
*
+ * 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
* @author Rob Church <robchur@gmail.com>
@@ -29,6 +44,7 @@ function PurgeRedundantText( $delete = false ) {
# Get "active" text records from the archive table
echo( "Searching for active text records in archive table..." );
$res = $dbw->query( "SELECT DISTINCT ar_text_id FROM $tbl_arc" );
+ $cur = array();
foreach ( $res as $row ) {
$cur[] = $row->ar_text_id;
}
diff --git a/maintenance/purgeParserCache.php b/maintenance/purgeParserCache.php
new file mode 100644
index 00000000..4b550b6e
--- /dev/null
+++ b/maintenance/purgeParserCache.php
@@ -0,0 +1,43 @@
+<?php
+
+require( dirname( __FILE__ ) . '/Maintenance.php' );
+
+class PurgeParserCache extends Maintenance {
+ function __construct() {
+ parent::__construct();
+ $this->addDescription( "Remove old objects from the parser cache. " .
+ "This only works when the parser cache is in an SQL database." );
+ $this->addOption( 'expiredate', 'Delete objects expiring before this date.', false, true );
+ $this->addOption( 'age',
+ 'Delete objects created more than this many seconds ago, assuming $wgParserCacheExpireTime '.
+ 'has been consistent.',
+ false, true );
+ }
+
+ function execute() {
+ $inputDate = $this->getOption( 'expiredate' );
+ $inputAge = $this->getOption( 'age' );
+ if ( $inputDate !== null ) {
+ $date = wfTimestamp( TS_MW, strtotime( $inputDate ) );
+ } elseif ( $inputAge !== null ) {
+ global $wgParserCacheExpireTime;
+ $date = wfTimestamp( TS_MW, time() + $wgParserCacheExpireTime - intval( $inputAge ) );
+ } else {
+ echo "Must specify either --expiredate or --age\n";
+ exit( 1 );
+ }
+
+ $english = Language::factory( 'en' );
+ echo "Deleting objects expiring before " . $english->timeanddate( $date ) . "\n";
+
+ $pc = wfGetParserCacheStorage();
+ $success = $pc->deleteObjectsExpiringBefore( $date );
+ if ( !$success ) {
+ echo "Cannot purge this kind of parser cache.\n";
+ exit( 1 );
+ }
+ echo "Done\n";
+ }
+}
+$maintClass = 'PurgeParserCache';
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/purgeStaleMemcachedText.php b/maintenance/purgeStaleMemcachedText.php
new file mode 100644
index 00000000..c4f5006f
--- /dev/null
+++ b/maintenance/purgeStaleMemcachedText.php
@@ -0,0 +1,34 @@
+<?php
+
+require_once( dirname( __FILE__ ) . '/commandLine.inc' );
+
+function purgeStaleMemcachedText() {
+ global $wgMemc, $wgDBname;
+ $db = wfGetDB( DB_MASTER );
+ $maxTextId = $db->selectField( 'text', 'max(old_id)' );
+ $latestReplicatedTextId = $db->selectField( array( 'recentchanges', 'revision' ), 'rev_text_id',
+ array( 'rev_id = rc_this_oldid', "rc_timestamp < '20101225183000'"), 'purgeStaleMemcachedText',
+ array( 'ORDER BY' => 'rc_timestamp DESC' ) );
+ $latestReplicatedTextId -= 100; # A bit of paranoia
+
+ echo "Going to purge text entries from $latestReplicatedTextId to $maxTextId in $wgDBname\n";
+
+ for ( $i = $latestReplicatedTextId; $i < $maxTextId; $i++ ) {
+ $key = wfMemcKey( 'revisiontext', 'textid', $i );
+
+ while (1) {
+ if (! $wgMemc->delete( $key ) ) {
+ echo "Memcache delete for $key returned false\n";
+ }
+ if ( $wgMemc->get( $key ) ) {
+ echo "There's still content in $key!\n";
+ } else {
+ break;
+ }
+ }
+
+ }
+}
+
+purgeStaleMemcachedText();
+
diff --git a/maintenance/reassignEdits.php b/maintenance/reassignEdits.php
index 039422b3..bb34e51c 100644
--- a/maintenance/reassignEdits.php
+++ b/maintenance/reassignEdits.php
@@ -126,8 +126,8 @@ class ReassignEdits extends Maintenance {
* i.e. a user => id mapping, or a user_text => text mapping
*
* @param $user User for the condition
- * @param $idfield Field name containing the identifier
- * @param $utfield Field name containing the user text
+ * @param $idfield string Field name containing the identifier
+ * @param $utfield string Field name containing the user text
* @return array
*/
private function userConditions( &$user, $idfield, $utfield ) {
diff --git a/maintenance/rebuildFileCache.php b/maintenance/rebuildFileCache.php
index a1aecd80..84ada11c 100644
--- a/maintenance/rebuildFileCache.php
+++ b/maintenance/rebuildFileCache.php
@@ -33,7 +33,7 @@ class RebuildFileCache extends Maintenance {
public function execute() {
global $wgUseFileCache, $wgDisableCounters, $wgContentNamespaces, $wgRequestTime;
- global $wgTitle, $wgArticle, $wgOut, $wgUser;
+ global $wgTitle, $wgOut;
if ( !$wgUseFileCache ) {
$this->error( "Nothing to do -- \$wgUseFileCache is disabled.", true );
}
@@ -54,7 +54,6 @@ class RebuildFileCache extends Maintenance {
}
$_SERVER['HTTP_ACCEPT_ENCODING'] = 'bgzip'; // hack, no real client
- OutputPage::setEncodings(); # Not really used yet
# Do remaining chunk
$end += $this->mBatchSize - 1;
@@ -73,16 +72,17 @@ class RebuildFileCache extends Maintenance {
foreach ( $res as $row ) {
$rebuilt = false;
$wgRequestTime = wfTime(); # bug 22852
+ $context = new RequestContext;
$wgTitle = Title::makeTitleSafe( $row->page_namespace, $row->page_title );
+ $context->setTitle( $wgTitle );
if ( null == $wgTitle ) {
$this->output( "Page {$row->page_id} has bad title\n" );
continue; // broken title?
}
- $wgOut->setTitle( $wgTitle ); // set display title
- $wgUser->getSkin( $wgTitle ); // set skin title
- $wgArticle = new Article( $wgTitle );
+ $wgOut = $context->getOutput(); // set display title
+ $article = new Article( $wgTitle );
// If the article is cacheable, then load it
- if ( $wgArticle->isFileCacheable() ) {
+ if ( $article->isFileCacheable() ) {
$cache = new HTMLFileCache( $wgTitle );
if ( $cache->isFileCacheGood() ) {
if ( $overwrite ) {
@@ -93,12 +93,13 @@ class RebuildFileCache extends Maintenance {
}
}
ob_start( array( &$cache, 'saveToFileCache' ) ); // save on ob_end_clean()
- $wgUseFileCache = false; // hack, we don't want $wgArticle fiddling with filecache
- $wgArticle->view();
- @$wgOut->output(); // header notices
+ $wgUseFileCache = false; // hack, we don't want $article fiddling with filecache
+ $article->view();
+ wfSuppressWarnings(); // header notices
+ $wgOut->output();
+ wfRestoreWarnings();
$wgUseFileCache = true;
ob_end_clean(); // clear buffer
- $wgOut = new OutputPage(); // empty out any output page garbage
if ( $rebuilt )
$this->output( "Re-cached page {$row->page_id}\n" );
else
@@ -110,15 +111,13 @@ class RebuildFileCache extends Maintenance {
}
$blockStart += $this->mBatchSize;
$blockEnd += $this->mBatchSize;
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
$this->output( "Done!\n" );
// Remove these to be safe
if ( isset( $wgTitle ) )
unset( $wgTitle );
- if ( isset( $wgArticle ) )
- unset( $wgArticle );
}
}
diff --git a/maintenance/rebuildImages.php b/maintenance/rebuildImages.php
index c61d9480..17111831 100644
--- a/maintenance/rebuildImages.php
+++ b/maintenance/rebuildImages.php
@@ -33,9 +33,19 @@
require_once( dirname( __FILE__ ) . '/Maintenance.php' );
class ImageBuilder extends Maintenance {
+
+ /**
+ * @var DatabaseBase
+ */
+ protected $dbw;
+
function __construct() {
parent::__construct();
+ global $wgUpdateCompatibleMetadata;
+ //make sure to update old, but compatible img_metadata fields.
+ $wgUpdateCompatibleMetadata = true;
+
$this->mDescription = 'Script to update image metadata records';
$this->addOption( 'missing', 'Check for files without associated database record' );
@@ -57,6 +67,9 @@ class ImageBuilder extends Maintenance {
}
}
+ /**
+ * @return FileRepo
+ */
function getRepo() {
if ( !isset( $this->repo ) ) {
$this->repo = RepoGroup::singleton()->getLocalRepo();
diff --git a/maintenance/rebuildInterwiki.php b/maintenance/rebuildInterwiki.php
index 3da920f8..25aea2de 100644
--- a/maintenance/rebuildInterwiki.php
+++ b/maintenance/rebuildInterwiki.php
@@ -3,30 +3,28 @@
* Rebuild interwiki table using the file on meta and the language list
* Wikimedia specific!
*
+ * 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
* @todo document
* @ingroup Maintenance
* @ingroup Wikimedia
*/
-/**
- * @todo document
- * @ingroup Maintenance
- */
-class Site {
- var $suffix, $lateral, $url;
-
- function __construct( $s, $l, $u ) {
- $this->suffix = $s;
- $this->lateral = $l;
- $this->url = $u;
- }
-
- function getURL( $lang ) {
- $xlang = str_replace( '_', '-', $lang );
- return "http://$xlang.{$this->url}/wiki/\$1";
- }
-}
+require_once( dirname( __FILE__ ) . '/Site.php' );
require_once( dirname( __FILE__ ) . '/Maintenance.php' );
diff --git a/maintenance/rebuildLocalisationCache.php b/maintenance/rebuildLocalisationCache.php
index 0ca99610..831d808a 100644
--- a/maintenance/rebuildLocalisationCache.php
+++ b/maintenance/rebuildLocalisationCache.php
@@ -112,9 +112,9 @@ class RebuildLocalisationCache extends Maintenance {
* Helper function to rebuild list of languages codes. Prints the code
* for each language which is rebuilt.
* @param $codes list List of language codes to rebuild.
- * @param $lc object Instance of LocalisationCache_BulkLoad (?)
- * @param $force bool Rebuild up-to-date languages
- * @return int Number of rebuilt languages
+ * @param $lc LocalisationCache Instance of LocalisationCache_BulkLoad (?)
+ * @param $force bool Rebuild up-to-date languages
+ * @return int Number of rebuilt languages
*/
private function doRebuild( $codes, $lc, $force ) {
$numRebuilt = 0;
@@ -127,6 +127,15 @@ class RebuildLocalisationCache extends Maintenance {
}
return $numRebuilt;
}
+
+ /**
+ * Sets whether a run of this maintenance script has the force parameter set
+ *
+ * @param bool $forced
+ */
+ public function setForce( $forced = true ) {
+ $this->mOptions['force'] = $forced;
+ }
}
$maintClass = "RebuildLocalisationCache";
diff --git a/maintenance/rebuildall.php b/maintenance/rebuildall.php
index 82619048..dbbed86d 100644
--- a/maintenance/rebuildall.php
+++ b/maintenance/rebuildall.php
@@ -30,9 +30,8 @@ class RebuildAll extends Maintenance {
}
public function execute() {
- global $wgDBtype;
// Rebuild the text index
- if ( $wgDBtype != 'postgres' ) {
+ if ( wfGetDB( DB_SLAVE )->getType() != 'postgres' ) {
$this->output( "** Rebuilding fulltext search index (if you abort this will break searching; run this script again to fix):\n" );
$rebuildText = $this->runChild( 'RebuildTextIndex', 'rebuildtextindex.php' );
$rebuildText->execute();
diff --git a/maintenance/rebuildtextindex.php b/maintenance/rebuildtextindex.php
index 46282c18..04606c75 100644
--- a/maintenance/rebuildtextindex.php
+++ b/maintenance/rebuildtextindex.php
@@ -28,6 +28,10 @@ require_once( dirname( __FILE__ ) . '/Maintenance.php' );
class RebuildTextIndex extends Maintenance {
const RTI_CHUNK_SIZE = 500;
+
+ /**
+ * @var DatabaseBase
+ */
private $db;
public function __construct() {
@@ -40,10 +44,11 @@ class RebuildTextIndex extends Maintenance {
}
public function execute() {
- global $wgTitle, $wgDBtype;
+ global $wgTitle;
// Shouldn't be needed for Postgres
- if ( $wgDBtype == 'postgres' ) {
+ $this->db = wfGetDB( DB_MASTER );
+ if ( $this->db->getType() == 'postgres' ) {
$this->error( "This script is not needed when using Postgres.\n", true );
}
diff --git a/maintenance/refreshImageMetadata.php b/maintenance/refreshImageMetadata.php
new file mode 100644
index 00000000..ec612183
--- /dev/null
+++ b/maintenance/refreshImageMetadata.php
@@ -0,0 +1,199 @@
+<?php
+/**
+ * Script to refresh image metadata fields. See also rebuildImages.php
+ *
+ * Usage: php refreshImageMetadata.php
+ *
+ * Copyright © 2011 Brian Wolff
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @author Brian Wolff
+ * @ingroup maintenance
+ */
+
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+
+class RefreshImageMetadata extends Maintenance {
+
+ /**
+ * @var DatabaseBase
+ */
+ protected $dbw;
+
+ function __construct() {
+ parent::__construct();
+
+ $this->mDescription = 'Script to update image metadata records';
+ $this->setBatchSize( 200 );
+
+ $this->addOption( 'force', 'Reload metadata from file even if the metadata looks ok', false, false, 'f' );
+ $this->addOption( 'broken-only', 'Only fix really broken records, leave old but still compatible records alone.' );
+ $this->addOption( 'verbose', 'Output extra information about each upgraded/non-upgraded file.', false, false, 'v' );
+ $this->addOption( 'start', 'Name of file to start with', false, true );
+ $this->addOption( 'end', 'Name of file to end with', false, true );
+
+ $this->addOption( 'mime', '(Inefficient!) Only refresh files with this mime type. Can accept wild-card image/*' , false, true );
+ $this->addOption( 'metadata-contains', '(Inefficient!) Only refresh files where the img_metadata field contains this string. Can be used if its known a specific property was being extracted incorrectly.', false, true );
+
+ }
+
+ public function execute() {
+ $force = $this->hasOption( 'force' );
+ $brokenOnly = $this->hasOption( 'broken-only' );
+ $verbose = $this->hasOption( 'verbose' );
+ $start = $this->getOption( 'start', false );
+ $this->setupParameters( $force, $brokenOnly );
+
+ $upgraded = 0;
+ $leftAlone = 0;
+ $error = 0;
+
+ $dbw = wfGetDB( DB_MASTER );
+ if ( $this->mBatchSize <= 0 ) {
+ $this->error( "Batch size is too low...", 12 );
+ }
+
+ $repo = RepoGroup::singleton()->getLocalRepo();
+ $conds = $this->getConditions( $dbw );
+
+ // For the WHERE img_name > 'foo' condition that comes after doing a batch
+ $conds2 = array();
+ if ( $start !== false ) {
+ $conds2[] = 'img_name >= ' . $dbw->addQuotes( $start );
+ }
+
+ $options = array(
+ 'LIMIT' => $this->mBatchSize,
+ 'ORDER BY' => 'img_name ASC',
+ );
+
+ do {
+ $res = $dbw->select(
+ 'image',
+ '*',
+ array_merge( $conds, $conds2 ),
+ __METHOD__,
+ $options
+ );
+
+ if ( $res->numRows() > 0 ) {
+ $row1 = $res->current();
+ $this->output( "Processing next {$this->mBatchSize} rows starting with {$row1->img_name}.\n");
+ $res->rewind();
+ } else {
+ $this->error( "No images to process.", 4 );
+ }
+
+ foreach ( $res as $row ) {
+ $file = $repo->newFileFromRow( $row );
+ if ( $file->getUpgraded() ) {
+ // File was upgraded.
+ $upgraded++;
+ $newLength = strlen( $file->getMetadata() );
+ $oldLength = strlen( $row->img_metadata );
+ if ( $newLength < $oldLength - 5 ) {
+ // If after updating, the metadata is smaller then
+ // what it was before, that's probably not a good thing
+ // because we extract more data with time, not less.
+ // Thus this probably indicates an error of some sort,
+ // or at the very least is suspicious. Have the - 5 just
+ // to weed out any inconsequential changes.
+ $error++;
+ $this->output( "Warning: File:{$row->img_name} used to have " .
+ "$oldLength bytes of metadata but now has $newLength bytes.\n" );
+ } elseif ( $verbose ) {
+ $this->output("Refreshed File:{$row->img_name}.\n" );
+ }
+ } else {
+ $leftAlone++;
+ if ( $force ) {
+ $file->upgradeRow();
+ $newLength = strlen( $file->getMetadata() );
+ $oldLength = strlen( $row->img_metadata );
+ if ( $newLength < $oldLength - 5 ) {
+ $error++;
+ $this->output( "Warning: File:{$row->img_name} used to have " .
+ "$oldLength bytes of metadata but now has $newLength bytes. (forced)\n" );
+
+ }
+ if ( $verbose ) {
+ $this->output("Forcibly refreshed File:{$row->img_name}.\n" );
+ }
+ }
+ else {
+ if ( $verbose ) {
+ $this->output( "Skipping File:{$row->img_name}.\n" );
+ }
+ }
+ }
+
+ }
+ $conds2 = array( 'img_name > ' . $dbw->addQuotes( $row->img_name ) );
+ wfWaitForSlaves();
+ } while( $res->numRows() === $this->mBatchSize );
+
+ $total = $upgraded + $leftAlone;
+ if ( $force ) {
+ $this->output( "\nFinished refreshing file metadata for $total files. $upgraded needed to be refreshed, $leftAlone did not need to be but were refreshed anyways, and $error refreshes were suspicious.\n" );
+ } else {
+ $this->output( "\nFinished refreshing file metadata for $total files. $upgraded were refreshed, $leftAlone were already up to date, and $error refreshes were suspicious.\n" );
+ }
+ }
+
+ function getConditions( $dbw ) {
+ $conds = array();
+
+ $end = $this->getOption( 'end', false );
+ $mime = $this->getOption( 'mime', false );
+ $like = $this->getOption( 'metadata-contains', false );
+
+ if ( $end !== false ) {
+ $conds[] = 'img_name <= ' . $dbw->addQuotes( $end ) ;
+ }
+ if ( $mime !== false ) {
+ list( $major, $minor ) = File::splitMime( $mime );
+ $conds['img_major_mime'] = $major;
+ if ( $minor !== '*' ) {
+ $conds['img_minor_mime'] = $minor;
+ }
+ }
+ if ( $like ) {
+ $conds[] = 'img_metadata ' . $dbw->buildLike( $dbw->anyString(), $like, $dbw->anyString() );
+ }
+ return $conds;
+ }
+
+ function setupParameters( $force, $brokenOnly ) {
+ global $wgUpdateCompatibleMetadata, $wgReadOnly;
+
+ if ( $brokenOnly ) {
+ $wgUpdateCompatibleMetadata = false;
+ } else {
+ $wgUpdateCompatibleMetadata = true;
+ }
+
+ if ( $brokenOnly && $force ) {
+ $this->error( 'Cannot use --broken-only and --force together. ', 2 );
+ }
+ }
+}
+
+
+$maintClass = 'RefreshImageMetadata';
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/refreshLinks.php b/maintenance/refreshLinks.php
index 144e96c5..0515ef1b 100644
--- a/maintenance/refreshLinks.php
+++ b/maintenance/refreshLinks.php
@@ -1,5 +1,7 @@
<?php
/**
+ * Refresh link tables.
+ *
* 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
@@ -58,19 +60,17 @@ class RefreshLinks extends Maintenance {
*/
private function doRefreshLinks( $start, $newOnly = false, $maxLag = false,
$end = 0, $redirectsOnly = false, $oldRedirectsOnly = false ) {
- global $wgUser, $wgParser, $wgUseTidy;
+ global $wgParser, $wgUseTidy;
$reportingInterval = 100;
$dbr = wfGetDB( DB_SLAVE );
$start = intval( $start );
- # Don't generate TeX PNGs (lack of a sensible current directory causes errors anyway)
- $wgUser->setOption( 'math', MW_MATH_SOURCE );
+ // Give extensions a chance to optimize settings
+ wfRunHooks( 'MaintenanceRefreshLinksInit', array( $this ) );
# Don't generate extension images (e.g. Timeline)
- if ( method_exists( $wgParser, "clearTagHooks" ) ) {
- $wgParser->clearTagHooks();
- }
+ $wgParser->clearTagHooks();
# Don't use HTML tidy
$wgUseTidy = false;
@@ -79,23 +79,35 @@ class RefreshLinks extends Maintenance {
if ( $oldRedirectsOnly ) {
# This entire code path is cut-and-pasted from below. Hurrah.
- $res = $dbr->query(
- "SELECT page_id " .
- "FROM page " .
- "LEFT JOIN redirect ON page_id=rd_from " .
- "WHERE page_is_redirect=1 AND rd_from IS NULL AND " .
- ( $end == 0 ? "page_id >= $start"
- : "page_id BETWEEN $start AND $end" ),
- __METHOD__
+
+ $conds = array(
+ "page_is_redirect=1",
+ "rd_from IS NULL"
+ );
+
+ if ( $end == 0 ) {
+ $conds[] = "page_id >= $start";
+ } else {
+ $conds[] = "page_id BETWEEN $start AND $end";
+ }
+
+ $res = $dbr->select(
+ array( 'page', 'redirect' ),
+ 'page_id',
+ $conds,
+ __METHOD__,
+ array(),
+ array( 'redirect' => array( "LEFT JOIN", "page_id=rd_from" ) )
);
$num = $dbr->numRows( $res );
$this->output( "Refreshing $num old redirects from $start...\n" );
$i = 0;
+
foreach ( $res as $row ) {
if ( !( ++$i % $reportingInterval ) ) {
$this->output( "$i\n" );
- wfWaitForSlaves( $maxLag );
+ wfWaitForSlaves();
}
$this->fixRedirect( $row->page_id );
}
@@ -115,12 +127,13 @@ class RefreshLinks extends Maintenance {
foreach ( $res as $row ) {
if ( !( ++$i % $reportingInterval ) ) {
$this->output( "$i\n" );
- wfWaitForSlaves( $maxLag );
+ wfWaitForSlaves();
}
- if ( $redirectsOnly )
+ if ( $redirectsOnly ) {
$this->fixRedirect( $row->page_id );
- else
+ } else {
self::fixLinksFromArticle( $row->page_id );
+ }
}
} else {
if ( !$end ) {
@@ -135,7 +148,7 @@ class RefreshLinks extends Maintenance {
if ( !( $id % $reportingInterval ) ) {
$this->output( "$id\n" );
- wfWaitForSlaves( $maxLag );
+ wfWaitForSlaves();
}
$this->fixRedirect( $id );
}
@@ -148,7 +161,7 @@ class RefreshLinks extends Maintenance {
if ( !( $id % $reportingInterval ) ) {
$this->output( "$id\n" );
- wfWaitForSlaves( $maxLag );
+ wfWaitForSlaves();
}
self::fixLinksFromArticle( $id );
}
@@ -161,29 +174,27 @@ class RefreshLinks extends Maintenance {
* @param $id int The page_id of the redirect
*/
private function fixRedirect( $id ) {
- global $wgTitle, $wgArticle;
-
- $wgTitle = Title::newFromID( $id );
+ $title = Title::newFromID( $id );
$dbw = wfGetDB( DB_MASTER );
- if ( is_null( $wgTitle ) ) {
+ if ( is_null( $title ) ) {
// This page doesn't exist (any more)
// Delete any redirect table entry for it
$dbw->delete( 'redirect', array( 'rd_from' => $id ),
__METHOD__ );
return;
}
- $wgArticle = new Article( $wgTitle );
+ $article = new Article( $title );
- $rt = $wgArticle->followRedirect();
+ $rt = $article->followRedirect();
if ( !$rt || !is_object( $rt ) ) {
- // $wgTitle is not a redirect
+ // $title is not a redirect
// Delete any redirect table entry for it
$dbw->delete( 'redirect', array( 'rd_from' => $id ),
__METHOD__ );
} else {
- $wgArticle->updateRedirectOn( $dbw, $rt );
+ $article->updateRedirectOn( $dbw, $rt );
}
}
@@ -192,31 +203,31 @@ class RefreshLinks extends Maintenance {
* @param $id int The page_id
*/
public static function fixLinksFromArticle( $id ) {
- global $wgTitle, $wgParser;
+ global $wgParser;
- $wgTitle = Title::newFromID( $id );
+ $title = Title::newFromID( $id );
$dbw = wfGetDB( DB_MASTER );
LinkCache::singleton()->clear();
- if ( is_null( $wgTitle ) ) {
+ if ( is_null( $title ) ) {
return;
}
$dbw->begin();
- $revision = Revision::newFromTitle( $wgTitle );
+ $revision = Revision::newFromTitle( $title );
if ( !$revision ) {
return;
}
$options = new ParserOptions;
- $parserOutput = $wgParser->parse( $revision->getText(), $wgTitle, $options, true, true, $revision->getId() );
- $update = new LinksUpdate( $wgTitle, $parserOutput, false );
+ $parserOutput = $wgParser->parse( $revision->getText(), $title, $options, true, true, $revision->getId() );
+ $update = new LinksUpdate( $title, $parserOutput, false );
$update->doUpdate();
$dbw->commit();
}
- /*
+ /**
* Removes non-existing links from pages from pagelinks, imagelinks,
* categorylinks, templatelinks and externallinks tables.
*
@@ -226,7 +237,7 @@ class RefreshLinks extends Maintenance {
* @author Merlijn van Deen <valhallasw@arctus.nl>
*/
private function deleteLinksFromNonexistent( $maxLag = 0, $batchSize = 100 ) {
- wfWaitForSlaves( $maxLag );
+ wfWaitForSlaves();
$dbw = wfGetDB( DB_MASTER );
@@ -240,6 +251,9 @@ class RefreshLinks extends Maintenance {
'categorylinks' => 'cl_from',
'templatelinks' => 'tl_from',
'externallinks' => 'el_from',
+ 'iwlinks' => 'iwl_from',
+ 'langlinks' => 'll_from',
+ 'redirect' => 'rd_from',
);
foreach ( $linksTables as $table => $field ) {
@@ -262,7 +276,7 @@ class RefreshLinks extends Maintenance {
$counter++;
$list[] = $row->$field;
if ( ( $counter % $batchSize ) == 0 ) {
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
$dbw->delete( $table, array( $field => $list ), __METHOD__ );
$this->output( $counter . ".." );
diff --git a/maintenance/resetUserTokens.php b/maintenance/resetUserTokens.php
new file mode 100644
index 00000000..a1c4eaeb
--- /dev/null
+++ b/maintenance/resetUserTokens.php
@@ -0,0 +1,73 @@
+<?php
+/**
+ * Script to reset the user_token for all users on the wiki. Useful if you
+ * believe that your user table was acidentally leaked to an external source.
+ *
+ * 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
+ * @author Daniel Friesen <mediawiki@danielfriesen.name>
+ */
+
+require_once( dirname( __FILE__ ) . '/Maintenance.php' );
+
+class ResetUserTokens extends Maintenance {
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = "Reset the user_token of all users on the wiki. Note that this may log some of them out.";
+ $this->addOption( 'nowarn', "Hides the 5 seconds warning", false, false );
+ }
+
+ public function execute() {
+
+ if ( !$this->getOption( 'nowarn' ) ) {
+ $this->output( "The script is about to reset the user_token for ALL USERS in the database.\n" );
+ $this->output( "This may log some of them out and is not necessary unless you believe your\n" );
+ $this->output( "user table has been compromised.\n" );
+ $this->output( "\n" );
+ $this->output( "Abort with control-c in the next five seconds (skip this countdown with --nowarn) ... " );
+ wfCountDown( 5 );
+ }
+
+ // We list user by user_id from one of the slave database
+ $dbr = wfGetDB( DB_SLAVE );
+ $result = $dbr->select( 'user',
+ array( 'user_id' ),
+ array(),
+ __METHOD__
+ );
+
+ foreach ( $result as $id ) {
+ $user = User::newFromId( $id->user_id );
+
+ $username = $user->getName();
+
+ $this->output( "Resetting user_token for $username: " );
+
+ // Change value
+ $user->setToken();
+ $user->saveSettings();
+
+ $this->output( " OK\n" );
+
+ }
+
+ }
+}
+
+$maintClass = "ResetUserTokens";
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/runBatchedQuery.php b/maintenance/runBatchedQuery.php
index dd3680c9..9a6b6383 100644
--- a/maintenance/runBatchedQuery.php
+++ b/maintenance/runBatchedQuery.php
@@ -29,7 +29,6 @@ class BatchedQueryRunner extends Maintenance {
parent::__construct();
$this->mDescription = "Run a query repeatedly until it affects 0 rows, and wait for slaves in between.\n" .
"NOTE: You need to set a LIMIT clause yourself.";
- $this->addOption( 'wait', "Wait for replication lag to go down to this value. Default: 5", false, true );
}
public function execute() {
@@ -39,14 +38,14 @@ class BatchedQueryRunner extends Maintenance {
$query = $this->getArg();
$wait = $this->getOption( 'wait', 5 );
$n = 1;
- $dbw = wfGetDb( DB_MASTER );
+ $dbw = wfGetDB( DB_MASTER );
do {
$this->output( "Batch $n: " );
$n++;
$dbw->query( $query, __METHOD__ );
$affected = $dbw->affectedRows();
$this->output( "$affected rows\n" );
- wfWaitForSlaves( $wait );
+ wfWaitForSlaves();
} while ( $affected > 0 );
}
diff --git a/maintenance/runJobs.php b/maintenance/runJobs.php
index 79ea7bfe..0edf7ac9 100644
--- a/maintenance/runJobs.php
+++ b/maintenance/runJobs.php
@@ -31,6 +31,7 @@ class RunJobs extends Maintenance {
parent::__construct();
$this->mDescription = "Run pending jobs";
$this->addOption( 'maxjobs', 'Maximum number of jobs to run', false, true );
+ $this->addOption( 'maxtime', 'Maximum amount of wall-clock time', false, true );
$this->addOption( 'type', 'Type of job to run', false, true );
$this->addOption( 'procs', 'Number of processes to use', false, true );
}
@@ -48,11 +49,13 @@ class RunJobs extends Maintenance {
$this->error( "Invalid argument to --procs", true );
}
$fc = new ForkController( $procs );
- if ( $fc->start( $procs ) != 'child' ) {
+ if ( $fc->start() != 'child' ) {
exit( 0 );
}
}
- $maxJobs = $this->getOption( 'maxjobs', 10000 );
+ $maxJobs = $this->getOption( 'maxjobs', false );
+ $maxTime = $this->getOption( 'maxtime', false );
+ $startTime = time();
$type = $this->getOption( 'type', false );
$wgTitle = Title::newFromText( 'RunJobs.php' );
$dbw = wfGetDB( DB_MASTER );
@@ -69,7 +72,7 @@ class RunJobs extends Maintenance {
if ( !$job )
break;
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
$t = microtime( true );
$offset = $job->id;
$status = $job->run();
@@ -80,9 +83,13 @@ class RunJobs extends Maintenance {
} else {
$this->runJobsLog( $job->toString() . " t=$timeMs good" );
}
+
if ( $maxJobs && ++$n > $maxJobs ) {
break 2;
}
+ if ( $maxTime && time() - $startTime > $maxTime ) {
+ break 2;
+ }
}
}
}
diff --git a/maintenance/sqlite.inc b/maintenance/sqlite.inc
index 238fe82b..1f821917 100644
--- a/maintenance/sqlite.inc
+++ b/maintenance/sqlite.inc
@@ -1,4 +1,25 @@
<?php
+/**
+ * Helper class for sqlite-specific scripts
+ *
+ * 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
+ */
/**
* This class contains code common to different SQLite-related maintenance scripts
diff --git a/maintenance/sqlite.php b/maintenance/sqlite.php
index 13d136d8..dc8a430e 100644
--- a/maintenance/sqlite.php
+++ b/maintenance/sqlite.php
@@ -41,20 +41,19 @@ class SqliteMaintenance extends Maintenance {
}
public function execute() {
- global $wgDBtype;
-
// Should work even if we use a non-SQLite database
if ( $this->hasOption( 'check-syntax' ) ) {
$this->checkSyntax();
+ return;
}
- if ( $wgDBtype != 'sqlite' ) {
+ $this->db = wfGetDB( DB_MASTER );
+
+ if ( $this->db->getType() != 'sqlite' ) {
$this->error( "This maintenance script requires a SQLite database.\n" );
return;
}
- $this->db = wfGetDB( DB_MASTER );
-
if ( $this->hasOption( 'vacuum' ) ) {
$this->vacuum();
}
diff --git a/maintenance/sqlite/archives/patch-archive_kill_ar_page_revid.sql b/maintenance/sqlite/archives/patch-archive_kill_ar_page_revid.sql
new file mode 100644
index 00000000..0f3e9c7f
--- /dev/null
+++ b/maintenance/sqlite/archives/patch-archive_kill_ar_page_revid.sql
@@ -0,0 +1,3 @@
+-- Used for killing the wrong index added during SVN for 1.17
+-- Won't affect most people, but it doesn't need to exist
+DROP INDEX IF EXISTS ar_page_revid; \ No newline at end of file
diff --git a/maintenance/sqlite/archives/patch-rename-iwl_prefix.sql b/maintenance/sqlite/archives/patch-rename-iwl_prefix.sql
index 08c3ae5f..851a6b37 100644
--- a/maintenance/sqlite/archives/patch-rename-iwl_prefix.sql
+++ b/maintenance/sqlite/archives/patch-rename-iwl_prefix.sql
@@ -2,4 +2,4 @@
-- Recreates the iwl_prefix for the iwlinks table
--
DROP INDEX IF EXISTS /*i*/iwl_prefix;
-CREATE INDEX /*i*/iwl_prefix_from_title ON /*_*/iwlinks (iwl_prefix, iwl_from, iwl_title); \ No newline at end of file
+CREATE INDEX IF NOT EXISTS /*i*/iwl_prefix_from_title ON /*_*/iwlinks (iwl_prefix, iwl_from, iwl_title);
diff --git a/maintenance/stats.php b/maintenance/stats.php
index 2cbbcf91..1fb46fa9 100644
--- a/maintenance/stats.php
+++ b/maintenance/stats.php
@@ -37,8 +37,8 @@ class CacheStats extends Maintenance {
global $wgMemc;
// Can't do stats if
- if ( get_class( $wgMemc ) == 'FakeMemCachedClient' ) {
- $this->error( "You are running FakeMemCachedClient, I can not provide any statistics.", true );
+ if ( get_class( $wgMemc ) == 'EmptyBagOStuff' ) {
+ $this->error( "You are running EmptyBagOStuff, I can not provide any statistics.", true );
}
$session = intval( $wgMemc->get( wfMemcKey( 'stats', 'request_with_session' ) ) );
$noSession = intval( $wgMemc->get( wfMemcKey( 'stats', 'request_without_session' ) ) );
@@ -59,30 +59,42 @@ class CacheStats extends Maintenance {
$absent = intval( $wgMemc->get( wfMemcKey( 'stats', 'pcache_miss_absent' ) ) );
$stub = intval( $wgMemc->get( wfMemcKey( 'stats', 'pcache_miss_stub' ) ) );
$total = $hits + $invalid + $expired + $absent + $stub;
- $this->output( sprintf( "hits: %-10d %6.2f%%\n", $hits, $hits / $total * 100 ) );
- $this->output( sprintf( "invalid: %-10d %6.2f%%\n", $invalid, $invalid / $total * 100 ) );
- $this->output( sprintf( "expired: %-10d %6.2f%%\n", $expired, $expired / $total * 100 ) );
- $this->output( sprintf( "absent: %-10d %6.2f%%\n", $absent, $absent / $total * 100 ) );
- $this->output( sprintf( "stub threshold: %-10d %6.2f%%\n", $stub, $stub / $total * 100 ) );
- $this->output( sprintf( "total: %-10d %6.2f%%\n", $total, 100 ) );
+ if ( $total ) {
+ $this->output( sprintf( "hits: %-10d %6.2f%%\n", $hits, $hits / $total * 100 ) );
+ $this->output( sprintf( "invalid: %-10d %6.2f%%\n", $invalid, $invalid / $total * 100 ) );
+ $this->output( sprintf( "expired: %-10d %6.2f%%\n", $expired, $expired / $total * 100 ) );
+ $this->output( sprintf( "absent: %-10d %6.2f%%\n", $absent, $absent / $total * 100 ) );
+ $this->output( sprintf( "stub threshold: %-10d %6.2f%%\n", $stub, $stub / $total * 100 ) );
+ $this->output( sprintf( "total: %-10d %6.2f%%\n", $total, 100 ) );
+ } else {
+ $this->output( "no statistics available\n" );
+ }
+ $this->output( "\nImage cache\n" );
$hits = intval( $wgMemc->get( wfMemcKey( 'stats', 'image_cache_hit' ) ) );
$misses = intval( $wgMemc->get( wfMemcKey( 'stats', 'image_cache_miss' ) ) );
$updates = intval( $wgMemc->get( wfMemcKey( 'stats', 'image_cache_update' ) ) );
$total = $hits + $misses;
- $this->output( "\nImage cache\n" );
- $this->output( sprintf( "hits: %-10d %6.2f%%\n", $hits, $hits / $total * 100 ) );
- $this->output( sprintf( "misses: %-10d %6.2f%%\n", $misses, $misses / $total * 100 ) );
- $this->output( sprintf( "updates: %-10d\n", $updates ) );
+ if ( $total ) {
+ $this->output( sprintf( "hits: %-10d %6.2f%%\n", $hits, $hits / $total * 100 ) );
+ $this->output( sprintf( "misses: %-10d %6.2f%%\n", $misses, $misses / $total * 100 ) );
+ $this->output( sprintf( "updates: %-10d\n", $updates ) );
+ } else {
+ $this->output( "no statistics available\n" );
+ }
+ $this->output( "\nDiff cache\n" );
$hits = intval( $wgMemc->get( wfMemcKey( 'stats', 'diff_cache_hit' ) ) );
$misses = intval( $wgMemc->get( wfMemcKey( 'stats', 'diff_cache_miss' ) ) );
$uncacheable = intval( $wgMemc->get( wfMemcKey( 'stats', 'diff_uncacheable' ) ) );
$total = $hits + $misses + $uncacheable;
- $this->output( "\nDiff cache\n" );
- $this->output( sprintf( "hits: %-10d %6.2f%%\n", $hits, $hits / $total * 100 ) );
- $this->output( sprintf( "misses: %-10d %6.2f%%\n", $misses, $misses / $total * 100 ) );
- $this->output( sprintf( "uncacheable: %-10d %6.2f%%\n", $uncacheable, $uncacheable / $total * 100 ) );
+ if ( $total ) {
+ $this->output( sprintf( "hits: %-10d %6.2f%%\n", $hits, $hits / $total * 100 ) );
+ $this->output( sprintf( "misses: %-10d %6.2f%%\n", $misses, $misses / $total * 100 ) );
+ $this->output( sprintf( "uncacheable: %-10d %6.2f%%\n", $uncacheable, $uncacheable / $total * 100 ) );
+ } else {
+ $this->output( "no statistics available\n" );
+ }
}
}
diff --git a/maintenance/storage/checkStorage.php b/maintenance/storage/checkStorage.php
index c288d682..c372b9c4 100644
--- a/maintenance/storage/checkStorage.php
+++ b/maintenance/storage/checkStorage.php
@@ -2,6 +2,21 @@
/**
* Fsck for MediaWiki
*
+ * 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 ExternalStorage
*/
@@ -115,6 +130,7 @@ class CheckStorage {
// It's safe to just erase the old_flags field
if ( $fix ) {
$this->error( 'fixed', "Warning: old_flags set to 0", $id );
+ $dbw = wfGetDB( DB_MASTER );
$dbw->ping();
$dbw->update( 'text', array( 'old_flags' => '' ),
array( 'old_id' => $id ), $fname );
diff --git a/maintenance/storage/compressOld.inc b/maintenance/storage/compressOld.inc
deleted file mode 100644
index 93be5f75..00000000
--- a/maintenance/storage/compressOld.inc
+++ /dev/null
@@ -1,300 +0,0 @@
-<?php
-/**
- * @file
- * @ingroup Maintenance ExternalStorage
- */
-
-/** @todo document */
-function compressOldPages( $start = 0, $extdb = '' ) {
- $fname = 'compressOldPages';
-
- $chunksize = 50;
- print "Starting from old_id $start...\n";
- $dbw = wfGetDB( DB_MASTER );
- do {
- $res = $dbw->select( 'text', array( 'old_id','old_flags','old_text' ),
- "old_id>=$start", $fname, array( 'ORDER BY' => 'old_id', 'LIMIT' => $chunksize, 'FOR UPDATE' ) );
- if( $dbw->numRows( $res ) == 0 ) {
- break;
- }
- $last = $start;
- foreach ( $res as $row ) {
- # print " {$row->old_id} - {$row->old_namespace}:{$row->old_title}\n";
- compressPage( $row, $extdb );
- $last = $row->old_id;
- }
- $start = $last + 1; # Deletion may leave long empty stretches
- print "$start...\n";
- } while( true );
-}
-
-/** @todo document */
-function compressPage( $row, $extdb ) {
- $fname = 'compressPage';
- if ( false !== strpos( $row->old_flags, 'gzip' ) || false !== strpos( $row->old_flags, 'object' ) ) {
- #print "Already compressed row {$row->old_id}\n";
- return false;
- }
- $dbw = wfGetDB( DB_MASTER );
- $flags = $row->old_flags ? "{$row->old_flags},gzip" : "gzip";
- $compress = gzdeflate( $row->old_text );
-
- # Store in external storage if required
- if ( $extdb !== '' ) {
- $storeObj = new ExternalStoreDB;
- $compress = $storeObj->store( $extdb, $compress );
- if ( $compress === false ) {
- print "Unable to store object\n";
- return false;
- }
- }
-
- # Update text row
- $dbw->update( 'text',
- array( /* SET */
- 'old_flags' => $flags,
- 'old_text' => $compress
- ), array( /* WHERE */
- 'old_id' => $row->old_id
- ), $fname,
- array( 'LIMIT' => 1 )
- );
- return true;
-}
-
-define( 'LS_INDIVIDUAL', 0 );
-define( 'LS_CHUNKED', 1 );
-
-/** @todo document */
-function compressWithConcat( $startId, $maxChunkSize, $beginDate,
- $endDate, $extdb="", $maxPageId = false )
-{
- $fname = 'compressWithConcat';
- $loadStyle = LS_CHUNKED;
-
- $dbr = wfGetDB( DB_SLAVE );
- $dbw = wfGetDB( DB_MASTER );
-
- # Set up external storage
- if ( $extdb != '' ) {
- $storeObj = new ExternalStoreDB;
- }
-
- # Get all articles by page_id
- if ( !$maxPageId ) {
- $maxPageId = $dbr->selectField( 'page', 'max(page_id)', '', $fname );
- }
- print "Starting from $startId of $maxPageId\n";
- $pageConds = array();
-
- /*
- if ( $exclude_ns0 ) {
- print "Excluding main namespace\n";
- $pageConds[] = 'page_namespace<>0';
- }
- if ( $queryExtra ) {
- $pageConds[] = $queryExtra;
- }
- */
-
- # For each article, get a list of revisions which fit the criteria
-
- # No recompression, use a condition on old_flags
- # Don't compress object type entities, because that might produce data loss when
- # overwriting bulk storage concat rows. Don't compress external references, because
- # the script doesn't yet delete rows from external storage.
- $conds = array(
- 'old_flags NOT ' . $dbr->buildLike( $dbr->anyString(), 'object', $dbr->anyString() ) . ' AND old_flags NOT '
- . $dbr->buildLike( $dbr->anyString(), 'external', $dbr->anyString() ) );
-
- if ( $beginDate ) {
- if ( !preg_match( '/^\d{14}$/', $beginDate ) ) {
- print "Invalid begin date \"$beginDate\"\n";
- return false;
- }
- $conds[] = "rev_timestamp>'" . $beginDate . "'";
- }
- if ( $endDate ) {
- if ( !preg_match( '/^\d{14}$/', $endDate ) ) {
- print "Invalid end date \"$endDate\"\n";
- return false;
- }
- $conds[] = "rev_timestamp<'" . $endDate . "'";
- }
- if ( $loadStyle == LS_CHUNKED ) {
- $tables = array( 'revision', 'text' );
- $fields = array( 'rev_id', 'rev_text_id', 'old_flags', 'old_text' );
- $conds[] = 'rev_text_id=old_id';
- $revLoadOptions = 'FOR UPDATE';
- } else {
- $tables = array( 'revision' );
- $fields = array( 'rev_id', 'rev_text_id' );
- $revLoadOptions = array();
- }
-
- # Don't work with current revisions
- # Don't lock the page table for update either -- TS 2006-04-04
- #$tables[] = 'page';
- #$conds[] = 'page_id=rev_page AND rev_id != page_latest';
-
- for ( $pageId = $startId; $pageId <= $maxPageId; $pageId++ ) {
- wfWaitForSlaves( 5 );
-
- # Wake up
- $dbr->ping();
-
- # Get the page row
- $pageRes = $dbr->select( 'page',
- array('page_id', 'page_namespace', 'page_title','page_latest'),
- $pageConds + array('page_id' => $pageId), $fname );
- if ( $dbr->numRows( $pageRes ) == 0 ) {
- continue;
- }
- $pageRow = $dbr->fetchObject( $pageRes );
-
- # Display progress
- $titleObj = Title::makeTitle( $pageRow->page_namespace, $pageRow->page_title );
- print "$pageId\t" . $titleObj->getPrefixedDBkey() . " ";
-
- # Load revisions
- $revRes = $dbw->select( $tables, $fields,
- array_merge( array(
- 'rev_page' => $pageRow->page_id,
- # Don't operate on the current revision
- # Use < instead of <> in case the current revision has changed
- # since the page select, which wasn't locking
- 'rev_id < ' . $pageRow->page_latest
- ), $conds ),
- $fname,
- $revLoadOptions
- );
- $revs = array();
- foreach ( $revRes as $revRow ) {
- $revs[] = $revRow;
- }
-
- if ( count( $revs ) < 2) {
- # No revisions matching, no further processing
- print "\n";
- continue;
- }
-
- # For each chunk
- $i = 0;
- while ( $i < count( $revs ) ) {
- if ( $i < count( $revs ) - $maxChunkSize ) {
- $thisChunkSize = $maxChunkSize;
- } else {
- $thisChunkSize = count( $revs ) - $i;
- }
-
- $chunk = new ConcatenatedGzipHistoryBlob();
- $stubs = array();
- $dbw->begin();
- $usedChunk = false;
- $primaryOldid = $revs[$i]->rev_text_id;
-
- # Get the text of each revision and add it to the object
- for ( $j = 0; $j < $thisChunkSize && $chunk->isHappy(); $j++ ) {
- $oldid = $revs[$i + $j]->rev_text_id;
-
- # Get text
- if ( $loadStyle == LS_INDIVIDUAL ) {
- $textRow = $dbw->selectRow( 'text',
- array( 'old_flags', 'old_text' ),
- array( 'old_id' => $oldid ),
- $fname,
- 'FOR UPDATE'
- );
- $text = Revision::getRevisionText( $textRow );
- } else {
- $text = Revision::getRevisionText( $revs[$i + $j] );
- }
-
- if ( $text === false ) {
- print "\nError, unable to get text in old_id $oldid\n";
- #$dbw->delete( 'old', array( 'old_id' => $oldid ) );
- }
-
- if ( $extdb == "" && $j == 0 ) {
- $chunk->setText( $text );
- print '.';
- } else {
- # Don't make a stub if it's going to be longer than the article
- # Stubs are typically about 100 bytes
- if ( strlen( $text ) < 120 ) {
- $stub = false;
- print 'x';
- } else {
- $stub = new HistoryBlobStub( $chunk->addItem( $text ) );
- $stub->setLocation( $primaryOldid );
- $stub->setReferrer( $oldid );
- print '.';
- $usedChunk = true;
- }
- $stubs[$j] = $stub;
- }
- }
- $thisChunkSize = $j;
-
- # If we couldn't actually use any stubs because the pages were too small, do nothing
- if ( $usedChunk ) {
- if ( $extdb != "" ) {
- # Move blob objects to External Storage
- $stored = $storeObj->store( $extdb, serialize( $chunk ));
- if ($stored === false) {
- print "Unable to store object\n";
- return false;
- }
- # Store External Storage URLs instead of Stub placeholders
- foreach ($stubs as $stub) {
- if ($stub===false)
- continue;
- # $stored should provide base path to a BLOB
- $url = $stored."/".$stub->getHash();
- $dbw->update( 'text',
- array( /* SET */
- 'old_text' => $url,
- 'old_flags' => 'external,utf-8',
- ), array ( /* WHERE */
- 'old_id' => $stub->getReferrer(),
- )
- );
- }
- } else {
- # Store the main object locally
- $dbw->update( 'text',
- array( /* SET */
- 'old_text' => serialize( $chunk ),
- 'old_flags' => 'object,utf-8',
- ), array( /* WHERE */
- 'old_id' => $primaryOldid
- )
- );
-
- # Store the stub objects
- for ( $j = 1; $j < $thisChunkSize; $j++ ) {
- # Skip if not compressing and don't overwrite the first revision
- if ( $stubs[$j] !== false && $revs[$i + $j]->rev_text_id != $primaryOldid ) {
- $dbw->update( 'text',
- array( /* SET */
- 'old_text' => serialize($stubs[$j]),
- 'old_flags' => 'object,utf-8',
- ), array( /* WHERE */
- 'old_id' => $revs[$i + $j]->rev_text_id
- )
- );
- }
- }
- }
- }
- # Done, next
- print "/";
- $dbw->commit();
- $i += $thisChunkSize;
- wfWaitForSlaves( 5 );
- }
- print "\n";
- }
- return true;
-}
diff --git a/maintenance/storage/compressOld.php b/maintenance/storage/compressOld.php
index bc05b340..da82d93b 100644
--- a/maintenance/storage/compressOld.php
+++ b/maintenance/storage/compressOld.php
@@ -17,57 +17,379 @@
* -c <chunk-size> maximum number of revisions in a concat chunk
* -b <begin-date> earliest date to check for uncompressed revisions
* -e <end-date> latest revision date to compress
- * -s <start-id> the old_id to start from
+ * -s <startid> the old_id to start from
+ * -n <endid> the old_id to stop at
* --extdb <cluster> store specified revisions in an external cluster (untested)
*
+ * 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 ExternalStorage
*/
-$optionsWithArgs = array( 't', 'c', 's', 'f', 'h', 'extdb', 'endid', 'e' );
-require_once( dirname( __FILE__ ) . '/../commandLine.inc' );
-require_once( "compressOld.inc" );
+require_once( dirname( __FILE__ ) . '/../Maintenance.php' );
-if ( !function_exists( "gzdeflate" ) ) {
- print "You must enable zlib support in PHP to compress old revisions!\n";
- print "Please see http://www.php.net/manual/en/ref.zlib.php\n\n";
- wfDie();
-}
+class CompressOld extends Maintenance {
+ /**
+ * @todo document
+ */
+ const LS_INDIVIDUAL = 0;
+ const LS_CHUNKED = 1;
-$defaults = array(
- 't' => 'concat',
- 'c' => 20,
- 's' => 0,
- 'b' => '',
- 'e' => '',
- 'extdb' => '',
- 'endid' => false,
-);
+ public function __construct() {
+ parent::__construct();
+ $this->mDescription = 'Compress the text of a wiki';
+ $this->addOption( 'type', 'Set compression type to either: gzip|concat', false, true, 't' );
+ $this->addOption( 'chunksize', 'Maximum number of revisions in a concat chunk', false, true, 'c' );
+ $this->addOption( 'begin-date', 'Earliest date to check for uncompressed revisions', false, true, 'b' );
+ $this->addOption( 'end-date', 'Latest revision date to compress', false, true, 'e' );
+ $this->addOption( 'startid', 'The old_id to start from', false, true, 's' );
+ $this->addOption( 'extdb', 'Store specified revisions in an external cluster (untested)', false, true );
+ $this->addOption( 'endid', 'Stop at this old_id', false, true, 'n' );
+ }
-$options = $options + $defaults;
+ public function execute() {
+ global $wgDBname;
+ if ( !function_exists( "gzdeflate" ) ) {
+ $this->error( "You must enable zlib support in PHP to compress old revisions!\n" .
+ "Please see http://www.php.net/manual/en/ref.zlib.php\n", true );
+ }
-if ( $options['t'] != 'concat' && $options['t'] != 'gzip' ) {
- print "Type \"{$options['t']}\" not supported\n";
-}
+ $type = $this->getOption( 'type', 'concat' );
+ $chunkSize = $this->getOption( 'chunksize', 20 );
+ $startId = $this->getOption( 'start-id', 0 );
+ $beginDate = $this->getOption( 'begin-date', '' );
+ $endDate = $this->getOption( 'end-date', '' );
+ $extDB = $this->getOption( 'extdb', '' );
+ $endId = $this->getOption( 'endid', false );
-if ( $options['extdb'] != '' ) {
- print "Compressing database $wgDBname to external cluster {$options['extdb']}\n" . str_repeat( '-', 76 ) . "\n\n";
-} else {
- print "Compressing database $wgDBname\n" . str_repeat( '-', 76 ) . "\n\n";
-}
+ if ( $type != 'concat' && $type != 'gzip' ) {
+ $this->error( "Type \"{$type}\" not supported" );
+ }
-$success = true;
-if ( $options['t'] == 'concat' ) {
- $success = compressWithConcat( $options['s'], $options['c'], $options['b'],
- $options['e'], $options['extdb'], $options['endid'] );
-} else {
- compressOldPages( $options['s'], $options['extdb'] );
-}
+ if ( $extDB != '' ) {
+ $this->output( "Compressing database {$wgDBname} to external cluster {$extDB}\n"
+ . str_repeat( '-', 76 ) . "\n\n" );
+ } else {
+ $this->output( "Compressing database {$wgDBname}\n"
+ . str_repeat( '-', 76 ) . "\n\n" );
+ }
-if ( $success ) {
- print "Done.\n";
-}
+ $success = true;
+ if ( $type == 'concat' ) {
+ $success = $this->compressWithConcat( $startId, $chunkSize, $beginDate,
+ $endDate, $extDB, $endId );
+ } else {
+ $this->compressOldPages( $startId, $extDB );
+ }
+
+ if ( $success ) {
+ $this->output( "Done.\n" );
+ }
+ }
+
+ /** @todo document */
+ private function compressOldPages( $start = 0, $extdb = '' ) {
+ $chunksize = 50;
+ $this->output( "Starting from old_id $start...\n" );
+ $dbw = wfGetDB( DB_MASTER );
+ 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 ) {
+ break;
+ }
+ $last = $start;
+ foreach ( $res as $row ) {
+ # print " {$row->old_id} - {$row->old_namespace}:{$row->old_title}\n";
+ $this->compressPage( $row, $extdb );
+ $last = $row->old_id;
+ }
+ $start = $last + 1; # Deletion may leave long empty stretches
+ $this->output( "$start...\n" );
+ } while( true );
+ }
+
+ /** @todo document */
+ private function compressPage( $row, $extdb ) {
+ if ( false !== strpos( $row->old_flags, 'gzip' ) || false !== strpos( $row->old_flags, 'object' ) ) {
+ #print "Already compressed row {$row->old_id}\n";
+ return false;
+ }
+ $dbw = wfGetDB( DB_MASTER );
+ $flags = $row->old_flags ? "{$row->old_flags},gzip" : "gzip";
+ $compress = gzdeflate( $row->old_text );
+
+ # Store in external storage if required
+ if ( $extdb !== '' ) {
+ $storeObj = new ExternalStoreDB;
+ $compress = $storeObj->store( $extdb, $compress );
+ if ( $compress === false ) {
+ $this->error( "Unable to store object" );
+ return false;
+ }
+ }
+
+ # Update text row
+ $dbw->update( 'text',
+ array( /* SET */
+ 'old_flags' => $flags,
+ 'old_text' => $compress
+ ), array( /* WHERE */
+ 'old_id' => $row->old_id
+ ), __METHOD__,
+ array( 'LIMIT' => 1 )
+ );
+ return true;
+ }
+
+ /** @todo document */
+ private function compressWithConcat( $startId, $maxChunkSize, $beginDate,
+ $endDate, $extdb = "", $maxPageId = false )
+ {
+ $loadStyle = self::LS_CHUNKED;
+
+ $dbr = wfGetDB( DB_SLAVE );
+ $dbw = wfGetDB( DB_MASTER );
+
+ # Set up external storage
+ if ( $extdb != '' ) {
+ $storeObj = new ExternalStoreDB;
+ }
+
+ # Get all articles by page_id
+ if ( !$maxPageId ) {
+ $maxPageId = $dbr->selectField( 'page', 'max(page_id)', '', __METHOD__ );
+ }
+ $this->output( "Starting from $startId of $maxPageId\n" );
+ $pageConds = array();
+
+ /*
+ if ( $exclude_ns0 ) {
+ print "Excluding main namespace\n";
+ $pageConds[] = 'page_namespace<>0';
+ }
+ if ( $queryExtra ) {
+ $pageConds[] = $queryExtra;
+ }
+ */
-exit( 0 );
+ # For each article, get a list of revisions which fit the criteria
+ # No recompression, use a condition on old_flags
+ # Don't compress object type entities, because that might produce data loss when
+ # overwriting bulk storage concat rows. Don't compress external references, because
+ # the script doesn't yet delete rows from external storage.
+ $conds = array(
+ 'old_flags NOT ' . $dbr->buildLike( $dbr->anyString(), 'object', $dbr->anyString() ) . ' AND old_flags NOT '
+ . $dbr->buildLike( $dbr->anyString(), 'external', $dbr->anyString() ) );
+
+ if ( $beginDate ) {
+ if ( !preg_match( '/^\d{14}$/', $beginDate ) ) {
+ $this->error( "Invalid begin date \"$beginDate\"\n" );
+ return false;
+ }
+ $conds[] = "rev_timestamp>'" . $beginDate . "'";
+ }
+ if ( $endDate ) {
+ if ( !preg_match( '/^\d{14}$/', $endDate ) ) {
+ $this->error( "Invalid end date \"$endDate\"\n" );
+ return false;
+ }
+ $conds[] = "rev_timestamp<'" . $endDate . "'";
+ }
+ if ( $loadStyle == self::LS_CHUNKED ) {
+ $tables = array( 'revision', 'text' );
+ $fields = array( 'rev_id', 'rev_text_id', 'old_flags', 'old_text' );
+ $conds[] = 'rev_text_id=old_id';
+ $revLoadOptions = 'FOR UPDATE';
+ } else {
+ $tables = array( 'revision' );
+ $fields = array( 'rev_id', 'rev_text_id' );
+ $revLoadOptions = array();
+ }
+
+ # Don't work with current revisions
+ # Don't lock the page table for update either -- TS 2006-04-04
+ #$tables[] = 'page';
+ #$conds[] = 'page_id=rev_page AND rev_id != page_latest';
+
+ for ( $pageId = $startId; $pageId <= $maxPageId; $pageId++ ) {
+ wfWaitForSlaves();
+
+ # Wake up
+ $dbr->ping();
+
+ # Get the page row
+ $pageRes = $dbr->select( 'page',
+ array('page_id', 'page_namespace', 'page_title','page_latest'),
+ $pageConds + array('page_id' => $pageId), __METHOD__ );
+ if ( $dbr->numRows( $pageRes ) == 0 ) {
+ continue;
+ }
+ $pageRow = $dbr->fetchObject( $pageRes );
+
+ # Display progress
+ $titleObj = Title::makeTitle( $pageRow->page_namespace, $pageRow->page_title );
+ $this->output( "$pageId\t" . $titleObj->getPrefixedDBkey() . " " );
+
+ # Load revisions
+ $revRes = $dbw->select( $tables, $fields,
+ array_merge( array(
+ 'rev_page' => $pageRow->page_id,
+ # Don't operate on the current revision
+ # Use < instead of <> in case the current revision has changed
+ # since the page select, which wasn't locking
+ 'rev_id < ' . $pageRow->page_latest
+ ), $conds ),
+ __METHOD__,
+ $revLoadOptions
+ );
+ $revs = array();
+ foreach ( $revRes as $revRow ) {
+ $revs[] = $revRow;
+ }
+
+ if ( count( $revs ) < 2) {
+ # No revisions matching, no further processing
+ $this->output( "\n" );
+ continue;
+ }
+
+ # For each chunk
+ $i = 0;
+ while ( $i < count( $revs ) ) {
+ if ( $i < count( $revs ) - $maxChunkSize ) {
+ $thisChunkSize = $maxChunkSize;
+ } else {
+ $thisChunkSize = count( $revs ) - $i;
+ }
+
+ $chunk = new ConcatenatedGzipHistoryBlob();
+ $stubs = array();
+ $dbw->begin();
+ $usedChunk = false;
+ $primaryOldid = $revs[$i]->rev_text_id;
+
+ # Get the text of each revision and add it to the object
+ for ( $j = 0; $j < $thisChunkSize && $chunk->isHappy(); $j++ ) {
+ $oldid = $revs[$i + $j]->rev_text_id;
+
+ # Get text
+ if ( $loadStyle == self::LS_INDIVIDUAL ) {
+ $textRow = $dbw->selectRow( 'text',
+ array( 'old_flags', 'old_text' ),
+ array( 'old_id' => $oldid ),
+ __METHOD__,
+ 'FOR UPDATE'
+ );
+ $text = Revision::getRevisionText( $textRow );
+ } else {
+ $text = Revision::getRevisionText( $revs[$i + $j] );
+ }
+
+ if ( $text === false ) {
+ $this->error( "\nError, unable to get text in old_id $oldid" );
+ #$dbw->delete( 'old', array( 'old_id' => $oldid ) );
+ }
+
+ if ( $extdb == "" && $j == 0 ) {
+ $chunk->setText( $text );
+ $this->output( '.' );
+ } else {
+ # Don't make a stub if it's going to be longer than the article
+ # Stubs are typically about 100 bytes
+ if ( strlen( $text ) < 120 ) {
+ $stub = false;
+ $this->output( 'x' );
+ } else {
+ $stub = new HistoryBlobStub( $chunk->addItem( $text ) );
+ $stub->setLocation( $primaryOldid );
+ $stub->setReferrer( $oldid );
+ $this->output( '.' );
+ $usedChunk = true;
+ }
+ $stubs[$j] = $stub;
+ }
+ }
+ $thisChunkSize = $j;
+
+ # If we couldn't actually use any stubs because the pages were too small, do nothing
+ if ( $usedChunk ) {
+ if ( $extdb != "" ) {
+ # Move blob objects to External Storage
+ $stored = $storeObj->store( $extdb, serialize( $chunk ));
+ if ($stored === false) {
+ $this->error( "Unable to store object" );
+ return false;
+ }
+ # Store External Storage URLs instead of Stub placeholders
+ foreach ($stubs as $stub) {
+ if ($stub===false)
+ continue;
+ # $stored should provide base path to a BLOB
+ $url = $stored."/".$stub->getHash();
+ $dbw->update( 'text',
+ array( /* SET */
+ 'old_text' => $url,
+ 'old_flags' => 'external,utf-8',
+ ), array ( /* WHERE */
+ 'old_id' => $stub->getReferrer(),
+ )
+ );
+ }
+ } else {
+ # Store the main object locally
+ $dbw->update( 'text',
+ array( /* SET */
+ 'old_text' => serialize( $chunk ),
+ 'old_flags' => 'object,utf-8',
+ ), array( /* WHERE */
+ 'old_id' => $primaryOldid
+ )
+ );
+
+ # Store the stub objects
+ for ( $j = 1; $j < $thisChunkSize; $j++ ) {
+ # Skip if not compressing and don't overwrite the first revision
+ if ( $stubs[$j] !== false && $revs[$i + $j]->rev_text_id != $primaryOldid ) {
+ $dbw->update( 'text',
+ array( /* SET */
+ 'old_text' => serialize($stubs[$j]),
+ 'old_flags' => 'object,utf-8',
+ ), array( /* WHERE */
+ 'old_id' => $revs[$i + $j]->rev_text_id
+ )
+ );
+ }
+ }
+ }
+ }
+ # Done, next
+ $this->output( "/" );
+ $dbw->commit();
+ $i += $thisChunkSize;
+ wfWaitForSlaves();
+ }
+ $this->output( "\n" );
+ }
+ return true;
+ }
+
+}
+$maintClass = 'CompressOld';
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/maintenance/storage/fixBug20757.php b/maintenance/storage/fixBug20757.php
index 4aac1202..b6def2da 100644
--- a/maintenance/storage/fixBug20757.php
+++ b/maintenance/storage/fixBug20757.php
@@ -1,4 +1,25 @@
<?php
+/**
+ * Script to fix bug 20757.
+ *
+ * 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 ExternalStorage
+ */
require_once( dirname( __FILE__ ) . '/../Maintenance.php' );
@@ -239,7 +260,7 @@ class FixBug20757 extends Maintenance {
static $iteration = 0;
++$iteration;
if ( ++$iteration > 50 == 0 ) {
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
$iteration = 0;
}
}
diff --git a/maintenance/storage/moveToExternal.php b/maintenance/storage/moveToExternal.php
index 928cbf97..64f3adaa 100644
--- a/maintenance/storage/moveToExternal.php
+++ b/maintenance/storage/moveToExternal.php
@@ -2,6 +2,21 @@
/**
* Move revision's text to external storage
*
+ * 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 ExternalStorage
*/
@@ -51,7 +66,7 @@ function moveToExternal( $cluster, $maxID, $minID = 1 ) {
if ( !( $block % REPORTING_INTERVAL ) ) {
print "oldid=$blockStart, moved=$numMoved\n";
- wfWaitForSlaves( 2 );
+ wfWaitForSlaves();
}
$res = $dbr->select( 'text', array( 'old_id', 'old_flags', 'old_text' ),
diff --git a/maintenance/storage/recompressTracked.php b/maintenance/storage/recompressTracked.php
index 8974a74d..09ab3e57 100644
--- a/maintenance/storage/recompressTracked.php
+++ b/maintenance/storage/recompressTracked.php
@@ -1,4 +1,26 @@
<?php
+/**
+ * Moves blobs indexed by trackBlobs.php to a specified list of destination
+ * clusters, and recompresses them in the process.
+ *
+ * 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 ExternalStorage
+ */
$optionsWithArgs = RecompressTracked::getOptionsWithArgs();
require( dirname( __FILE__ ) . '/../commandLine.inc' );
diff --git a/maintenance/storage/resolveStubs.php b/maintenance/storage/resolveStubs.php
index 2269e37f..08d0ee04 100644
--- a/maintenance/storage/resolveStubs.php
+++ b/maintenance/storage/resolveStubs.php
@@ -1,5 +1,23 @@
<?php
/**
+ * Script to convert history stubs that point to an external row to direct
+ * external pointers.
+ *
+ * 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 ExternalStorage
*/
@@ -27,7 +45,7 @@ function resolveStubs() {
$numBlocks = intval( $maxID / $blockSize ) + 1;
for ( $b = 0; $b < $numBlocks; $b++ ) {
- wfWaitForSlaves( 2 );
+ wfWaitForSlaves();
printf( "%5.2f%%\n", $b / $numBlocks * 100 );
$start = intval( $maxID / $numBlocks ) * $b + 1;
diff --git a/maintenance/storage/storageTypeStats.php b/maintenance/storage/storageTypeStats.php
index be86c531..817659fc 100644
--- a/maintenance/storage/storageTypeStats.php
+++ b/maintenance/storage/storageTypeStats.php
@@ -1,4 +1,23 @@
<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance ExternalStorage
+ */
require_once( dirname( __FILE__ ) . '/../Maintenance.php' );
diff --git a/maintenance/storage/testCompression.php b/maintenance/storage/testCompression.php
index e2718325..9ae26335 100644
--- a/maintenance/storage/testCompression.php
+++ b/maintenance/storage/testCompression.php
@@ -1,4 +1,24 @@
<?php
+/**
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @file
+ * @ingroup Maintenance
+ * @see wfWaitForSlaves()
+ */
$optionsWithArgs = array( 'start', 'limit', 'type' );
require( dirname( __FILE__ ) . '/../commandLine.inc' );
diff --git a/maintenance/storage/trackBlobs.php b/maintenance/storage/trackBlobs.php
index 15aeec3b..b5f80047 100644
--- a/maintenance/storage/trackBlobs.php
+++ b/maintenance/storage/trackBlobs.php
@@ -1,4 +1,26 @@
<?php
+/**
+ * Adds blobs from a given external storage cluster to the blob_tracking table.
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * 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
+ * @see wfWaitForSlaves()
+ */
require( dirname( __FILE__ ) . '/../commandLine.inc' );
@@ -184,7 +206,7 @@ class TrackBlobs {
if ( $batchesDone >= $this->reportingInterval ) {
$batchesDone = 0;
echo "$startId / $endId\n";
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
}
echo "Found $rowsInserted revisions\n";
@@ -268,7 +290,7 @@ class TrackBlobs {
if ( $batchesDone >= $this->reportingInterval ) {
$batchesDone = 0;
echo "$startId / $endId\n";
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
}
echo "Found $rowsInserted orphan text rows\n";
diff --git a/maintenance/tables.sql b/maintenance/tables.sql
index 1dcf98b7..f879f02f 100644
--- a/maintenance/tables.sql
+++ b/maintenance/tables.sql
@@ -135,6 +135,7 @@ CREATE TABLE /*_*/user (
CREATE UNIQUE INDEX /*i*/user_name ON /*_*/user (user_name);
CREATE INDEX /*i*/user_email_token ON /*_*/user (user_email_token);
+CREATE INDEX /*i*/user_email ON /*_*/user (user_email(50));
--
@@ -163,6 +164,15 @@ CREATE TABLE /*_*/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);
+-- Stores the groups the user has once belonged to.
+-- The user may still belong these groups. Check user_groups.
+CREATE TABLE /*_*/user_former_groups (
+ -- Key to user_id
+ ufg_user int unsigned NOT NULL default 0,
+ ufg_group varbinary(16) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+
+CREATE UNIQUE INDEX /*i*/ufg_user_group ON /*_*/user_former_groups (ufg_user,ufg_group);
--
-- Stores notifications of user talk page changes, for the display
@@ -176,7 +186,7 @@ CREATE TABLE /*_*/user_newtalk (
user_ip varbinary(40) NOT NULL default '',
-- The highest timestamp of revisions of the talk page viewed
-- by this user
- user_last_timestamp binary(14) NOT NULL default ''
+ user_last_timestamp varbinary(14) NULL default NULL
) /*$wgDBTableOptions*/;
-- Indexes renamed for SQLite in 1.14
@@ -198,7 +208,7 @@ CREATE TABLE /*_*/user_properties (
up_user int NOT NULL,
-- Name of the option being saved. This is indexed for bulk lookup.
- up_property varbinary(32) NOT NULL,
+ up_property varbinary(255) NOT NULL,
-- Property value as a string.
up_value blob
@@ -502,6 +512,8 @@ CREATE TABLE /*_*/categorylinks (
-- concatenated with a line break followed by the page title before the sortkey
-- conversion algorithm is run. We store this so that we can update
-- collations without reparsing all pages.
+ -- Note: If you change the length of this field, you also need to change
+ -- code in LinksUpdate.php. See bug 25254.
cl_sortkey_prefix varchar(255) binary NOT NULL default '',
-- This isn't really used at present. Provided for an optional
@@ -927,6 +939,57 @@ CREATE INDEX /*i*/fa_user_timestamp ON /*_*/filearchive (fa_user_text,fa_timesta
--
+-- Store information about newly uploaded files before they're
+-- moved into the actual filestore
+--
+CREATE TABLE /*_*/uploadstash (
+ us_id int unsigned NOT NULL PRIMARY KEY auto_increment,
+
+ -- the user who uploaded the file.
+ us_user int unsigned NOT NULL,
+
+ -- file key. this is how applications actually search for the file.
+ -- this might go away, or become the primary key.
+ us_key varchar(255) NOT NULL,
+
+ -- the original path
+ us_orig_path varchar(255) NOT NULL,
+
+ -- the temporary path at which the file is actually stored
+ us_path varchar(255) NOT NULL,
+
+ -- which type of upload the file came from (sometimes)
+ us_source_type varchar(50),
+
+ -- the date/time on which the file was added
+ us_timestamp varbinary(14) not null,
+
+ us_status varchar(50) not null,
+
+ -- file properties from File::getPropsFromPath. these may prove unnecessary.
+ --
+ us_size int unsigned NOT NULL,
+ -- this hash comes from File::sha1Base36(), and is 31 characters
+ us_sha1 varchar(31) NOT NULL,
+ us_mime varchar(255),
+ -- Media type as defined by the MEDIATYPE_xxx constants, should duplicate definition in the image table
+ us_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
+ -- image-specific properties
+ us_image_width int unsigned,
+ us_image_height int unsigned,
+ us_image_bits smallint unsigned
+
+) /*$wgDBTableOptions*/;
+
+-- sometimes there's a delete for all of a user's stuff.
+CREATE INDEX /*i*/us_user ON /*_*/uploadstash (us_user);
+-- pick out files by key, enforce key uniqueness
+CREATE UNIQUE INDEX /*i*/us_key ON /*_*/uploadstash (us_key);
+-- the abandoned upload cleanup script needs this
+CREATE INDEX /*i*/us_timestamp ON /*_*/uploadstash (us_timestamp);
+
+
+--
-- Primarily a summary table for Special:Recentchanges,
-- this table contains some additional info on edits from
-- the last few days, see Article::editUpdates()
@@ -1029,31 +1092,6 @@ CREATE INDEX /*i*/namespace_title ON /*_*/watchlist (wl_namespace, wl_title);
--
--- Used by the math module to keep track
--- of previously-rendered items.
---
-CREATE TABLE /*_*/math (
- -- Binary MD5 hash of the latex fragment, used as an identifier key.
- math_inputhash varbinary(16) NOT NULL,
-
- -- Not sure what this is, exactly...
- math_outputhash varbinary(16) NOT NULL,
-
- -- texvc reports how well it thinks the HTML conversion worked;
- -- if it's a low level the PNG rendering may be preferred.
- math_html_conservativeness tinyint NOT NULL,
-
- -- HTML output from texvc, if any
- math_html text,
-
- -- MathML output from texvc, if any
- math_mathml text
-) /*$wgDBTableOptions*/;
-
-CREATE UNIQUE INDEX /*i*/math_inputhash ON /*_*/math (math_inputhash);
-
-
---
-- When using the default MySQL search backend, page titles
-- and text are munged to strip markup, do Unicode case folding,
-- and prepare the result for MySQL's fulltext index.
diff --git a/maintenance/tests/.svnignore b/maintenance/tests/.svnignore
deleted file mode 100644
index 20cb61e9..00000000
--- a/maintenance/tests/.svnignore
+++ /dev/null
@@ -1,6 +0,0 @@
-LocalTestSettings.php
-*~
-bin
-.classpath
-.project
-project.index
diff --git a/maintenance/tests/selenium/SeleniumTestCase.php b/maintenance/tests/selenium/SeleniumTestCase.php
deleted file mode 100644
index 11e1b192..00000000
--- a/maintenance/tests/selenium/SeleniumTestCase.php
+++ /dev/null
@@ -1,103 +0,0 @@
-<?php
-class SeleniumTestCase extends PHPUnit_Framework_TestCase { // PHPUnit_Extensions_SeleniumTestCase
- protected $selenium;
-
- public function setUp() {
- set_time_limit( 60 );
- $this->selenium = Selenium::getInstance();
- }
-
- public function tearDown() {
-
- }
-
- public function __call( $method, $args ) {
- return call_user_func_array( array( $this->selenium, $method ), $args );
- }
-
- public function assertSeleniumAttributeEquals( $attribute, $value ) {
- $attr = $this->getAttribute( $attribute );
- $this->assertEquals( $attr, $value );
- }
-
- public function assertSeleniumHTMLContains( $element, $text ) {
- $innerHTML = $this->getText( $element );
- // or assertContains
- $this->assertRegExp( "/$text/", $innerHTML );
- }
-
-//Common Funtions Added for Selenium Tests
-
- public function getExistingPage(){
- $this->open( $this->getUrl() .
- '/index.php?title=Main_Page&action=edit' );
- $this->type("searchInput", "new" );
- $this->click("searchGoButton");
- $this->waitForPageToLoad("30000");
- }
-
- public function getNewPage($pageName){
-
- $this->open( $this->getUrl() .
- '/index.php?title=Main_Page&action=edit' );
- $this->type("searchInput", $pageName );
- $this->click("searchGoButton");
- $this->waitForPageToLoad("30000");
- $this->click("link=".$pageName);
- $this->waitForPageToLoad("600000");
-
-
- }
- // Loading the mediawiki editor
- public function loadWikiEditor(){
- $this->open( $this->getUrl() .
- '/index.php?title=Main_Page&action=edit' );
- }
-
- // Clear the content of the mediawiki editor
- public function clearWikiEditor(){
- $this->type("wpTextbox1", "");
- }
-
- // Click on the 'Show preview' button of the mediawiki editor
- public function clickShowPreviewBtn(){
- $this->click("wpPreview");
- }
-
- // Click on the 'Save Page' button of the mediawiki editor
- public function clickSavePageBtn(){
- $this->click("wpSave");
- }
-
- // Click on the 'Edit' link
- public function clickEditLink(){
- $this->click("link=Edit");
- $this->waitForPageToLoad("30000");
- }
-
- public function deletePage($pageName){
- $isLinkPresent = False;
- $this->open( $this->getUrl() .
- '/index.php?title=Main_Page&action=edit' );
- $this->click("link=Log out");
- $this->waitForPageToLoad( "30000" );
- $this->click( "link=Log in / create account" );
- $this->waitForPageToLoad( "30000" );
- $this->type( "wpName1", "nadeesha" );
- $this->type( "wpPassword1", "12345" );
- $this->click( "wpLoginAttempt" );
- $this->waitForPageToLoad( "30000" );
- $this->type( "searchInput", $pageName );
- $this->click( "searchGoButton");
- $this->waitForPageToLoad( "30000" );
-
- $this->click( "link=Delete" );
- $this->waitForPageToLoad( "30000" );
- $this->click( "wpConfirmB" );
- $this->waitForPageToLoad( "30000" );
-
- }
-
-
-
-}
diff --git a/maintenance/tests/selenium/selenium_settings.ini.php52.sample b/maintenance/tests/selenium/selenium_settings.ini.php52.sample
deleted file mode 100644
index ad21037e..00000000
--- a/maintenance/tests/selenium/selenium_settings.ini.php52.sample
+++ /dev/null
@@ -1,23 +0,0 @@
-[browsers]
-
-firefox = "*firefox"
-iexploreproxy = "*iexploreproxy"
-chrome = "*chrome"
-
-[SeleniumSettings]
-
-host = "localhost"
-port = "4444"
-wikiUrl = "http://localhost/mediawiki/latest_trunk/trunk/phase3"
-username = "Wikiadmin"
-userPassword = "Wikiadminpw"
-testBrowser = "firefox"
-startserver =
-stopserver =
-jUnitLogFile =
-runAgainstGrid = false
-
-[testSuite]
-
-SimpleSeleniumTestSuite = "maintenance/tests/selenium/suites/SimpleSeleniumTestSuite.php"
-WikiEditorTestSuite = "extensions/WikiEditor/selenium/WikiEditorTestSuite.php"
diff --git a/maintenance/tests/selenium/suites/MediaWikExtraTestSuite.php b/maintenance/tests/selenium/suites/MediaWikExtraTestSuite.php
deleted file mode 100644
index 205cb332..00000000
--- a/maintenance/tests/selenium/suites/MediaWikExtraTestSuite.php
+++ /dev/null
@@ -1,20 +0,0 @@
-<?php
-
-class MediaWikExtraTestSuite extends SeleniumTestSuite {
- public function setUp() {
- $this->setLoginBeforeTests( true );
- parent::setUp();
- }
- public function addTests() {
- $testFiles = array(
- 'maintenance/tests/selenium/suites/MyContributionsTestCase.php',
- 'maintenance/tests/selenium/suites/MyWatchListTestCase.php',
- 'maintenance/tests/selenium/suites/UserPreferencesTestCase.php',
- 'maintenance/tests/selenium/suites/MovePageTestCase.php',
- 'maintenance/tests/selenium/suites/PageSearchTestCase.php',
- 'maintenance/tests/selenium/suites/EmailPasswordTestCase.php',
- 'maintenance/tests/selenium/suites/CreateAccountTestCase.php'
- );
- parent::addTestFiles( $testFiles );
- }
-}
diff --git a/maintenance/tests/selenium/suites/MediaWikiEditorTestSuite.php b/maintenance/tests/selenium/suites/MediaWikiEditorTestSuite.php
deleted file mode 100644
index 06046365..00000000
--- a/maintenance/tests/selenium/suites/MediaWikiEditorTestSuite.php
+++ /dev/null
@@ -1,18 +0,0 @@
-<?php
-
-class MediaWikiEditorTestSuite extends SeleniumTestSuite {
- public function setUp() {
- $this->setLoginBeforeTests( true );
- parent::setUp();
- }
- public function addTests() {
- $testFiles = array(
- 'maintenance/tests/selenium/suites/AddNewPageTestCase.php',
- 'maintenance/tests/selenium/suites/AddContentToNewPageTestCase.php',
- 'maintenance/tests/selenium/suites/PreviewPageTestCase.php',
- 'maintenance/tests/selenium/suites/SavePageTestCase.php',
- );
- parent::addTestFiles( $testFiles );
- }
-}
-
diff --git a/maintenance/tests/selenium/suites/MyContributionsTestCase.php b/maintenance/tests/selenium/suites/MyContributionsTestCase.php
deleted file mode 100644
index 95011c3b..00000000
--- a/maintenance/tests/selenium/suites/MyContributionsTestCase.php
+++ /dev/null
@@ -1,76 +0,0 @@
-<?php
-
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @addtogroup Maintenance
- *
- */
-
-class MyContributionsTestCase extends SeleniumTestCase {
-
- // Verify user contributions
- public function testRecentChangesAvailability() {
-
- $newPage = "mypage999";
- $displayName = "Mypage999";
-
- $this->open( $this->getUrl() .
- '/index.php?title=Main_Page&action=edit' );
-
- $this->type( "searchInput", $newPage);
- $this->click( "searchGoButton" );
- $this->waitForPageToLoad( "60000" );
- $this->click( "link=".$displayName );
- $this->waitForPageToLoad( "600000" );
- $this->type( "wpTextbox1", $newPage." text" );
- $this->click( "wpSave" );
- $this->waitForPageToLoad( "60000" );
-
- // Verify My contributions Link available
- $this->assertTrue($this->isElementPresent( "link=My contributions" ));
-
- $this->click( "link=My contributions" );
- $this->waitForPageToLoad( "30000" );
-
- // Verify recent page adding available on My Contributions list
- $this->assertEquals( $displayName, $this->getText( "link=".$displayName ));
-
- $this->type( "searchInput", $newPage );
- $this->click( "searchGoButton" );
- $this->waitForPageToLoad( "30000" );
-
- $this->click( "link=Edit" );
- $this->waitForPageToLoad( "30000" );
- $this->type( "wpTextbox1", $newPage." text changed" );
- $this->click( "wpSave" );
- $this->waitForPageToLoad( "30000" );
- $this->click( "link=My contributions" );
- $this->waitForPageToLoad( "30000" );
-
- // Verify recent page changes available on My Contributions
- $this->assertTrue($this->isTextPresent($displayName." ‎ (top)"));
- $this->deletePage($newPage);
- }
-}
-
diff --git a/maintenance/tests/selenium/suites/MyWatchListTestCase.php b/maintenance/tests/selenium/suites/MyWatchListTestCase.php
deleted file mode 100644
index 150c1f51..00000000
--- a/maintenance/tests/selenium/suites/MyWatchListTestCase.php
+++ /dev/null
@@ -1,73 +0,0 @@
-<?php
-
-/**
- * Selenium server manager
- *
- * @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along
- * with this program; if not, write to the Free Software Foundation, Inc.,
- * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
- * http://www.gnu.org/copyleft/gpl.html
- *
- * @addtogroup Maintenance
- *
- */
-
-
-class MyWatchListTestCase extends SeleniumTestCase {
-
- // Verify user watchlist
- public function testMyWatchlist() {
-
- $newPage = "mypage";
- $displayName = "Mypage";
- $wikiText = "watch page";
-
- $this->open( $this->getUrl().'/index.php?title=Main_Page' );
-
- $this->type( "searchInput", $newPage );
- $this->click( "searchGoButton" );
- $this->waitForPageToLoad( "30000" );
- $this->click( "link=".$displayName );
- $this->waitForPageToLoad( "600000" );
-
- $this->click( "wpWatchthis" );
- $this->type( "wpTextbox1",$wikiText );
- $this->click( "wpSave" );
- $this->waitForPageToLoad( "30000" );
-
- // Verify link 'My Watchlist' available
- $this->assertTrue( $this->isElementPresent( "link=My watchlist" ) );
-
- $this->click( "link=My watchlist" );
- $this->waitForPageToLoad( "30000" );
-
- // Verify newly added page to the watchlist is available
- $watchList = $this->getText( "//*[@id='bodyContent']" );
- $this->assertContains( $displayName, $watchList );
-
- $this->type( "searchInput", $newPage );
- $this->click( "searchGoButton" );
- $this->waitForPageToLoad( "30000" );
- $this->click("link=Edit");
- $this->waitForPageToLoad( "30000" );
- $this->click( "wpWatchthis" );
- $this->click( "wpSave" );
- $this->deletePage( $newPage );
- }
-}
-
diff --git a/maintenance/tests/selenium/suites/SimpleSeleniumConfig.php b/maintenance/tests/selenium/suites/SimpleSeleniumConfig.php
deleted file mode 100644
index cffa83c4..00000000
--- a/maintenance/tests/selenium/suites/SimpleSeleniumConfig.php
+++ /dev/null
@@ -1,15 +0,0 @@
-<?php
-class SimpleSeleniumConfig {
-
- public static function getSettings(&$includeFiles, &$globalConfigs) {
- $includes = array(
- //files that needed to be included would go here
- );
- $configs = array(
- 'wgDefaultSkin' => 'chick'
- );
- $includeFiles = array_merge( $includeFiles, $includes );
- $globalConfigs = array_merge( $globalConfigs, $configs);
- return true;
- }
-} \ No newline at end of file
diff --git a/maintenance/undelete.php b/maintenance/undelete.php
index 50bf791a..7213d096 100644
--- a/maintenance/undelete.php
+++ b/maintenance/undelete.php
@@ -2,6 +2,21 @@
/**
* Undelete a page by fetching it from the archive table
*
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * 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
*/
@@ -12,16 +27,16 @@ class Undelete extends Maintenance {
public function __construct() {
parent::__construct();
$this->mDescription = "Undelete a page";
- $this->addOption( 'u', 'The user to perform the undeletion', false, true );
- $this->addOption( 'r', 'The reason to undelete', false, true );
+ $this->addOption( 'user', 'The user to perform the undeletion', false, true, 'u' );
+ $this->addOption( 'reason', 'The reason to undelete', false, true, 'r' );
$this->addArg( 'pagename', 'Page to undelete' );
}
public function execute() {
global $wgUser;
- $user = $this->getOption( 'u', 'Command line script' );
- $reason = $this->getOption( 'r', '' );
+ $user = $this->getOption( 'user', 'Command line script' );
+ $reason = $this->getOption( 'reason', '' );
$pageName = $this->getArg();
$title = Title::newFromText( $pageName );
diff --git a/maintenance/update.php b/maintenance/update.php
index e3941a3c..e4a594f6 100644
--- a/maintenance/update.php
+++ b/maintenance/update.php
@@ -5,6 +5,21 @@
* This is used when the database schema is modified and we need to apply patches.
* It is kept compatible with php 4 parsing so that it can give out a meaningful error.
*
+ * 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
* @todo document
* @ingroup Maintenance
@@ -28,6 +43,7 @@ class UpdateMediaWiki extends Maintenance {
$this->addOption( 'quick', 'Skip 5 second countdown before starting' );
$this->addOption( 'doshared', 'Also update shared tables' );
$this->addOption( 'nopurge', 'Do not purge the objectcache table after updates' );
+ $this->addOption( 'force', 'Override when $wgMiserMode disables this script' );
}
function getDbType() {
@@ -60,7 +76,13 @@ class UpdateMediaWiki extends Maintenance {
}
function execute() {
- global $wgVersion, $wgTitle, $wgLang;
+ global $wgVersion, $wgTitle, $wgLang, $wgMiserMode;
+
+ if( $wgMiserMode && !$this->hasOption( 'force' ) ) {
+ $this->error( "Do not run update.php on this wiki. If you're seeing this you should\n"
+ . "probably ask for some help in performing your schema updates.\n\n"
+ . "If you know what you are doing, you can continue with --force", true );
+ }
$wgLang = Language::factory( 'en' );
$wgTitle = Title::newFromText( "MediaWiki database updater" );
@@ -88,7 +110,7 @@ class UpdateMediaWiki extends Maintenance {
$shared = $this->hasOption( 'doshared' );
- $updates = array('core','extensions');
+ $updates = array( 'core', 'extensions', 'stats' );
if( !$this->hasOption('nopurge') ) {
$updates[] = 'purge';
}
diff --git a/maintenance/updateArticleCount.php b/maintenance/updateArticleCount.php
index b0dceb58..dbbfb80c 100644
--- a/maintenance/updateArticleCount.php
+++ b/maintenance/updateArticleCount.php
@@ -27,9 +27,6 @@ require_once( dirname( __FILE__ ) . '/Maintenance.php' );
class UpdateArticleCount extends Maintenance {
- // Content namespaces
- private $namespaces;
-
public function __construct() {
parent::__construct();
$this->mDescription = "Count of the number of articles and update the site statistics table";
@@ -37,64 +34,21 @@ class UpdateArticleCount extends Maintenance {
}
public function execute() {
- global $wgContentNamespaces;
- $this->namespaces = $wgContentNamespaces;
$this->output( "Counting articles..." );
- $result = $this->count();
- if ( $result !== false ) {
- $this->output( "found {$result}.\n" );
- if ( $this->hasOption( 'update' ) ) {
- $this->output( "Updating site statistics table... " );
- $dbw = wfGetDB( DB_MASTER );
- $dbw->update( 'site_stats', array( 'ss_good_articles' => $result ), array( 'ss_row_id' => 1 ), __METHOD__ );
- $this->output( "done.\n" );
- } else {
- $this->output( "To update the site statistics table, run the script with the --update option.\n" );
- }
+ $counter = new SiteStatsInit( false );
+ $result = $counter->articles();
+
+ $this->output( "found {$result}.\n" );
+ if ( $this->hasOption( 'update' ) ) {
+ $this->output( "Updating site statistics table... " );
+ $dbw = wfGetDB( DB_MASTER );
+ $dbw->update( 'site_stats', array( 'ss_good_articles' => $result ), array( 'ss_row_id' => 1 ), __METHOD__ );
+ $this->output( "done.\n" );
} else {
- $this->output( "failed.\n" );
+ $this->output( "To update the site statistics table, run the script with the --update option.\n" );
}
}
-
- /**
- * Produce a comma-delimited set of namespaces
- * Includes paranoia
- *
- * @return string
- */
- private function makeNsSet() {
- foreach ( $this->namespaces as $namespace )
- $namespaces[] = intval( $namespace );
- return implode( ', ', $namespaces );
- }
-
- /**
- * Produce SQL for the query
- *
- * @param $dbr Database handle
- * @return string
- */
- private function makeSql( $dbr ) {
- list( $page, $pagelinks ) = $dbr->tableNamesN( 'page', 'pagelinks' );
- $nsset = $this->makeNsSet();
- return "SELECT COUNT(DISTINCT page_id) AS pagecount " .
- "FROM $page, $pagelinks " .
- "WHERE pl_from=page_id and page_namespace IN ( $nsset ) " .
- "AND page_is_redirect = 0 AND page_len > 0";
- }
-
- /**
- * Count the number of valid content pages in the wiki
- *
- * @return mixed Integer, or false if there's a problem
- */
- private function count() {
- $dbr = wfGetDB( DB_SLAVE );
- $res = $dbr->query( $this->makeSql( $dbr ), __METHOD__ );
- $row = $dbr->fetchObject( $res );
- return $row ? $row->pagecount : false;
- }
}
$maintClass = "UpdateArticleCount";
diff --git a/maintenance/updateCollation.php b/maintenance/updateCollation.php
index e890bce7..7e8a7ee0 100644
--- a/maintenance/updateCollation.php
+++ b/maintenance/updateCollation.php
@@ -1,5 +1,24 @@
<?php
/**
+ * Script will find all rows in the categorylinks table whose collation is
+ * out-of-date (cl_collation != $wgCategoryCollation) and repopulate cl_sortkey
+ * using the page title and cl_sortkey_prefix.
+ *
+ * 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
* @author Aryeh Gregor (Simetrical)
@@ -10,7 +29,8 @@
require_once( dirname( __FILE__ ) . '/Maintenance.php' );
class UpdateCollation extends Maintenance {
- const BATCH_SIZE = 50;
+ const BATCH_SIZE = 50; // Number of rows to process in one batch
+ const SYNC_INTERVAL = 20; // Wait for slaves after this many batches
public function __construct() {
parent::__construct();
@@ -25,33 +45,32 @@ TEXT;
$this->addOption( 'force', 'Run on all rows, even if the collation is ' .
'supposed to be up-to-date.' );
- }
-
- public function syncDBs() {
- $lb = wfGetLB();
- // bug 27975 - Don't try to wait for slaves if there are none
- // Prevents permission error when getting master position
- if ( $lb->getServerCount() > 1 ) {
- $dbw = $lb->getConnection( DB_MASTER );
- $pos = $dbw->getMasterPos();
- $lb->waitForAll( $pos );
- }
+ $this->addOption( 'previous-collation', 'Set the previous value of ' .
+ '$wgCategoryCollation here to speed up this script, especially if your ' .
+ 'categorylinks table is large. This will only update rows with that ' .
+ 'collation, though, so it may miss out-of-date rows with a different, ' .
+ 'even older collation.', false, true );
}
public function execute() {
global $wgCategoryCollation, $wgMiserMode;
- $dbw = wfGetDB( DB_MASTER );
+ $dbw = $this->getDB( DB_MASTER );
$force = $this->getOption( 'force' );
- $options = array( 'LIMIT' => self::BATCH_SIZE );
+ $options = array( 'LIMIT' => self::BATCH_SIZE, 'STRAIGHT_JOIN' );
if ( $force ) {
$options['ORDER BY'] = 'cl_from, cl_to';
$collationConds = array();
} else {
- $collationConds = array( 0 =>
- 'cl_collation != ' . $dbw->addQuotes( $wgCategoryCollation ) );
+ if ( $this->hasOption( 'previous-collation' ) ) {
+ $collationConds['cl_collation'] = $this->getOption( 'previous-collation' );
+ } else {
+ $collationConds = array( 0 =>
+ 'cl_collation != ' . $dbw->addQuotes( $wgCategoryCollation )
+ );
+ }
if ( !$wgMiserMode ) {
$count = $dbw->selectField(
@@ -70,10 +89,10 @@ TEXT;
}
$count = 0;
- $row = false;
+ $batchCount = 0;
$batchConds = array();
do {
- $this->output( 'Processing next ' . self::BATCH_SIZE . ' rows... ');
+ $this->output( "Selecting next " . self::BATCH_SIZE . " rows..." );
$res = $dbw->select(
array( 'categorylinks', 'page' ),
array( 'cl_from', 'cl_to', 'cl_sortkey_prefix', 'cl_collation',
@@ -83,6 +102,7 @@ TEXT;
__METHOD__,
$options
);
+ $this->output( " processing..." );
$dbw->begin();
foreach ( $res as $row ) {
@@ -136,7 +156,11 @@ TEXT;
$count += $res->numRows();
$this->output( "$count done.\n" );
- $this->syncDBs();
+ if ( ++$batchCount % self::SYNC_INTERVAL == 0 ) {
+ $this->output( "Waiting for slaves ... " );
+ wfWaitForSlaves();
+ $this->output( "done\n" );
+ }
} while ( $res->numRows() == self::BATCH_SIZE );
}
}
diff --git a/maintenance/updateDoubleWidthSearch.php b/maintenance/updateDoubleWidthSearch.php
index bfbc441f..61545f8d 100644
--- a/maintenance/updateDoubleWidthSearch.php
+++ b/maintenance/updateDoubleWidthSearch.php
@@ -43,8 +43,7 @@ class UpdateDoubleWidthSearch extends Maintenance {
$dbw = wfGetDB( DB_MASTER );
if ( $dbw->getType() !== 'mysql' ) {
- $this->output( "This change is only needed on MySQL, quitting.\n" );
- exit( 1 );
+ $this->error( "This change is only needed on MySQL, quitting.\n", true );
}
$res = $this->findRows( $dbw );
diff --git a/maintenance/updateRestrictions.php b/maintenance/updateRestrictions.php
index c815f4b9..ffbdb2ba 100644
--- a/maintenance/updateRestrictions.php
+++ b/maintenance/updateRestrictions.php
@@ -64,7 +64,7 @@ class UpdateRestrictions extends Maintenance {
// old old format should be treated as edit/move restriction
$oldRestrictions["edit"] = trim( $temp[0] );
$oldRestrictions["move"] = trim( $temp[0] );
- } else if ( $temp[1] ) {
+ } elseif ( $temp[1] ) {
$oldRestrictions[$temp[0]] = trim( $temp[1] );
}
}
@@ -96,7 +96,7 @@ class UpdateRestrictions extends Maintenance {
}
$blockStart += $this->mBatchSize - 1;
$blockEnd += $this->mBatchSize - 1;
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
$this->output( "...removing dead rows from page_restrictions\n" );
// Kill any broken rows from previous imports
diff --git a/maintenance/updateSearchIndex.php b/maintenance/updateSearchIndex.php
index 97863101..eed3571c 100644
--- a/maintenance/updateSearchIndex.php
+++ b/maintenance/updateSearchIndex.php
@@ -55,11 +55,10 @@ class UpdateSearchIndex extends Maintenance {
# We can safely delete the file when we're done though.
$start = file_get_contents( 'searchUpdate.pos' );
unlink( 'searchUpdate.pos' );
+ } elseif( is_readable( $posFile ) ) {
+ $start = file_get_contents( $posFile );
} else {
- $start = @file_get_contents( $posFile );
- if ( !$start ) {
- $start = wfTimestamp( TS_MW, time() - 86400 );
- }
+ $start = wfTimestamp( TS_MW, time() - 86400 );
}
$lockTime = $this->getOption( 'l', 20 );
@@ -70,10 +69,10 @@ class UpdateSearchIndex extends Maintenance {
fwrite( $file, $end );
fclose( $file );
} else {
- $this->output( "*** Couldn't write to the $posFile!\n" );
+ $this->error( "*** Couldn't write to the $posFile!\n" );
}
} else {
- $this->output( "*** Couldn't write to the $posFile!\n" );
+ $this->error( "*** Couldn't write to the $posFile!\n" );
}
}
diff --git a/maintenance/updateSpecialPages.php b/maintenance/updateSpecialPages.php
index 3e5df982..ddf1601b 100644
--- a/maintenance/updateSpecialPages.php
+++ b/maintenance/updateSpecialPages.php
@@ -33,8 +33,8 @@ class UpdateSpecialPages extends Maintenance {
}
public function execute() {
- global $IP, $wgOut, $wgSpecialPageCacheUpdates, $wgQueryPages, $wgQueryCacheLimit, $wgDisableQueryPageUpdate;
- $wgOut->disable();
+ global $IP, $wgSpecialPageCacheUpdates, $wgQueryPages, $wgQueryCacheLimit, $wgDisableQueryPageUpdate;
+
$dbw = wfGetDB( DB_MASTER );
foreach ( $wgSpecialPageCacheUpdates as $special => $call ) {
@@ -58,14 +58,15 @@ class UpdateSpecialPages extends Maintenance {
}
$this->output( sprintf( "completed in %.2fs\n", $seconds ) );
# Wait for the slave to catch up
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
}
// This is needed to initialise $wgQueryPages
require_once( "$IP/includes/QueryPage.php" );
foreach ( $wgQueryPages as $page ) {
- @list( $class, $special, $limit ) = $page;
+ list( $class, $special ) = $page;
+ $limit = isset( $page[2] ) ? $page[2] : null;
# --list : just show the name of pages
if ( $this->hasOption( 'list' ) ) {
@@ -78,16 +79,20 @@ class UpdateSpecialPages extends Maintenance {
continue;
}
- $specialObj = SpecialPage::getPage( $special );
+ $specialObj = SpecialPageFactory::getPage( $special );
if ( !$specialObj ) {
$this->output( "No such special page: $special\n" );
exit;
}
- if ( !class_exists( $class ) ) {
- $file = $specialObj->getFile();
- require_once( $file );
+ if ( $specialObj instanceof QueryPage ) {
+ $queryPage = $specialObj;
+ } else {
+ if ( !class_exists( $class ) ) {
+ $file = $specialObj->getFile();
+ require_once( $file );
+ }
+ $queryPage = new $class;
}
- $queryPage = new $class;
if ( !$this->hasOption( 'only' ) || $this->getOption( 'only' ) == $queryPage->getName() ) {
$this->output( sprintf( '%-30s ', $special ) );
@@ -126,7 +131,7 @@ class UpdateSpecialPages extends Maintenance {
$dbw->commit();
}
# Wait for the slave to catch up
- wfWaitForSlaves( 5 );
+ wfWaitForSlaves();
} else {
$this->output( "cheap, skipped\n" );
}
diff --git a/maintenance/upgrade1_5.php b/maintenance/upgrade1_5.php
index e919c62e..730e7637 100644
--- a/maintenance/upgrade1_5.php
+++ b/maintenance/upgrade1_5.php
@@ -9,6 +9,21 @@
* much older versions, etc.
* Run this, FOLLOWED BY update.php, for upgrading from 1.4.5 release to 1.5.
*
+ * 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
*/
@@ -86,7 +101,6 @@ class FiveUpgrade extends Maintenance {
$this->cleanupSwaps = array();
$this->emailAuth = false; # don't preauthenticate emails
- $this->maxLag = 10; # if slaves are lagged more than 10 secs, wait
$this->step = $this->getOption( 'step', null );
}
@@ -125,12 +139,10 @@ class FiveUpgrade extends Maintenance {
* @access private
*/
function streamConnection() {
- global $wgDBtype;
-
$timeout = 3600 * 24;
$db = $this->newConnection();
$db->bufferResults( false );
- if ( $wgDBtype == 'mysql' ) {
+ if ( $db->getType() == 'mysql' ) {
$db->query( "SET net_read_timeout=$timeout" );
$db->query( "SET net_write_timeout=$timeout" );
}
@@ -303,10 +315,16 @@ class FiveUpgrade extends Maintenance {
*/
function insertChunk( &$chunk ) {
// Give slaves a chance to catch up
- wfWaitForSlaves( $this->maxLag );
+ wfWaitForSlaves();
$this->dbw->insert( $this->chunkTable, $chunk, $this->chunkFunction, $this->chunkOptions );
}
+ /**
+ * Helper function for copyTable array_filter
+ */
+ static private function notUpgradeNull( $x ) {
+ return $x !== MW_UPGRADE_NULL;
+ }
/**
* Copy and transcode a table to table_temp.
@@ -336,8 +354,7 @@ class FiveUpgrade extends Maintenance {
$this->setChunkScale( 100, $numRecords, $name_temp, __METHOD__ );
// Pull all records from the second, streaming database connection.
- $sourceFields = array_keys( array_filter( $fields,
- create_function( '$x', 'return $x !== MW_UPGRADE_NULL;' ) ) );
+ $sourceFields = array_keys( array_filter( $fields, 'FiveUpgrade::notUpgradeNull' ) );
$result = $this->dbr->select( $name,
$sourceFields,
'',
diff --git a/maintenance/userDupes.inc b/maintenance/userDupes.inc
index 7c2bca1c..31bae8ed 100644
--- a/maintenance/userDupes.inc
+++ b/maintenance/userDupes.inc
@@ -1,23 +1,25 @@
<?php
-# Copyright (C) 2005 Brion Vibber <brion@pobox.com>
-# http://www.mediawiki.org/
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along
-# with this program; if not, write to the Free Software Foundation, Inc.,
-# 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
-# http://www.gnu.org/copyleft/gpl.html
-
/**
+ * Helper class for update.php and upgrade1_5.php.
+ *
+ * Copyright © 2005 Brion Vibber <brion@pobox.com>
+ * http://www.mediawiki.org/
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License along
+ * with this program; if not, write to the Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
* @file
* @ingroup Maintenance
*/
@@ -172,7 +174,7 @@ class UserDupes {
* @access private
*/
function newSchema() {
- return class_exists( 'Revision' );
+ return MWInit::classExists( 'Revision' );
}
/**
diff --git a/maintenance/userOptions.inc b/maintenance/userOptions.inc
index deb12bc8..6edef9d9 100644
--- a/maintenance/userOptions.inc
+++ b/maintenance/userOptions.inc
@@ -1,5 +1,22 @@
<?php
/**
+ * Helper class for userOptions.php script.
+ *
+ * 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
*/
diff --git a/maintenance/userOptions.php b/maintenance/userOptions.php
index 597c6d45..6e1681c3 100644
--- a/maintenance/userOptions.php
+++ b/maintenance/userOptions.php
@@ -6,6 +6,21 @@
*
* Made on an original idea by Fooey (freenode)
*
+ * 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
* @author Ashar Voultoiz <hashar at free dot fr>
diff --git a/maintenance/users.sql b/maintenance/users.sql
deleted file mode 100644
index 1db32ae2..00000000
--- a/maintenance/users.sql
+++ /dev/null
@@ -1,12 +0,0 @@
--- SQL script to create required database users with proper
--- access rights. This is run from the installation script
--- which replaces the password variables with their values
--- from local settings.
---
-
-GRANT ALL PRIVILEGES ON `{$wgDBname}`.*
- TO '{$wgDBuser}'@'%' IDENTIFIED BY '{$wgDBpassword}';
-GRANT ALL PRIVILEGES ON `{$wgDBname}`.*
- TO '{$wgDBuser}'@localhost IDENTIFIED BY '{$wgDBpassword}';
-GRANT ALL PRIVILEGES ON `{$wgDBname}`.*
- TO '{$wgDBuser}'@localhost.localdomain IDENTIFIED BY '{$wgDBpassword}';
diff --git a/maintenance/waitForSlave.php b/maintenance/waitForSlave.php
index 0bf01d6d..720ca288 100644
--- a/maintenance/waitForSlave.php
+++ b/maintenance/waitForSlave.php
@@ -1,5 +1,7 @@
<?php
/**
+ * Script to wait until slave lag goes under a certain value.
+ *
* 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
diff --git a/maintenance/wikipedia-interwiki.sql b/maintenance/wikipedia-interwiki.sql
index f683439e..6a213166 100644
--- a/maintenance/wikipedia-interwiki.sql
+++ b/maintenance/wikipedia-interwiki.sql
@@ -250,7 +250,6 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local) VALUES
('tl','http://tl.wikipedia.org/wiki/$1',1),
('tn','http://tn.wikipedia.org/wiki/$1',1),
('to','http://to.wikipedia.org/wiki/$1',1),
-('tokipona','http://tokipona.wikipedia.org/wiki/$1',1),
('tpi','http://tpi.wikipedia.org/wiki/$1',1),
('tr','http://tr.wikipedia.org/wiki/$1',1),
('ts','http://ts.wikipedia.org/wiki/$1',1),
diff --git a/maintenance/wiktionary-interwiki.sql b/maintenance/wiktionary-interwiki.sql
index 3dc62e5e..f55235b1 100644
--- a/maintenance/wiktionary-interwiki.sql
+++ b/maintenance/wiktionary-interwiki.sql
@@ -159,7 +159,6 @@ REPLACE INTO /*$wgDBprefix*/interwiki (iw_prefix,iw_url,iw_local) VALUES
('tl','http://tl.wiktionary.org/wiki/$1',1),
('tn','http://tn.wiktionary.org/wiki/$1',1),
('to','http://to.wiktionary.org/wiki/$1',1),
-('tokipona','http://tokipona.wiktionary.org/wiki/$1',1),
('tpi','http://tpi.wiktionary.org/wiki/$1',1),
('tr','http://tr.wiktionary.org/wiki/$1',1),
('ts','http://ts.wiktionary.org/wiki/$1',1),
diff --git a/math/.svnignore b/math/.svnignore
deleted file mode 100644
index 6aa96403..00000000
--- a/math/.svnignore
+++ /dev/null
@@ -1,7 +0,0 @@
-texvc
-texvc_test
-texvc_tex
-*.cmi
-*.cmx
-*.mli
-*~
diff --git a/math/Makefile b/math/Makefile
deleted file mode 100644
index 804f0857..00000000
--- a/math/Makefile
+++ /dev/null
@@ -1,87 +0,0 @@
-.PHONY: clean all
-
-OBJ=render_info.cmo tex.cmo texutil.cmo parser.cmo lexer.cmo texvc.cmo \
-render_info.cmx tex.cmx texutil.cmx parser.cmx lexer.cmx texvc.cmx \
-lexer.cmi parser.cmi render_info.cmi tex.cmi texutil.cmi texvc.cmi \
-lexer.o parser.o render_info.o tex.o texutil.o texvc.o \
-lexer.ml parser.ml parser.mli texvc texvc.bc texvc_test.cmo \
-texvc_test.cmx texvc_test.cmi texvc_test.o texvc_test util.o \
-util.cmo util.cmx util.cmi texvc_cgi.cmi texvc_cgi texvc_cgi.cmo \
-render.o render.cmi render.cmo render.cmx texvc_tex.cmx \
-texvc_tex.o texvc_tex.cmi texvc_tex html.cmi html.cmo html.cmx \
-html.o mathml.cmi mathml.cmo mathml.cmx mathml.o
-CGIPATH=-I /usr/lib/ocaml/cgi -I /usr/lib/ocaml/netstring -I /usr/lib/ocaml/pcre
-
-COMMON_NATIVE_OBJ =util.cmx parser.cmx html.cmx mathml.cmx texutil.cmx lexer.cmx
-COMMON_BYTECODE_OBJ=util.cmo parser.cmo html.cmo mathml.cmo texutil.cmo lexer.cmo
-
-all: texvc texvc_test texvc_tex
-cgi: texvc_cgi.cmo texvc_cgi
-clean:
- rm -f $(OBJ)
-
-# Native versions
-texvc: $(COMMON_NATIVE_OBJ) render.cmx texvc.cmx
- ocamlopt -o $@ unix.cmxa $^
-texvc_test: $(COMMON_NATIVE_OBJ) lexer.cmx texvc_test.cmx
- ocamlopt -o $@ $^
-texvc_tex: $(COMMON_NATIVE_OBJ) texvc_tex.cmx
- ocamlopt -o $@ $^
-
-# Bytecode version
-texvc.bc: $(COMMON_BYTECODE_OBJ) render.cmo texvc.cmo
- ocamlc -o $@ unix.cma $^
-
-# CGI related targets:
-texvc_cgi.cmo: texvc_cgi.ml
- ocamlc -c $(CGIPATH) $<
-texvc_cgi: util.cmo parser.cmo texutil.cmo render.cmo lexer.cmo texvc_cgi.cmo
- ocamlc -o $@ unix.cma $(CGIPATH) pcre.cma netstring.cma cgi.cma $^
- chmod g-w $@
-
-#
-# Pattern rules
-#
-
-# .ml source .mli interface
-# .cmi compiled interface
-# .cmo object .cma library object
-# .cmx object file .cmxa library object file
-%.ml: %.mll
- ocamllex $<
-%.mli %.ml: %.mly
- ocamlyacc $<
-%.cmo: %.ml
- ocamlc -c $<
-%.cmx: %.ml
- ocamlopt -c $<
-%.cmi: %.mli
- ocamlc -c $<
-
-# Various dependencies
-
-html.cmo: render_info.cmi tex.cmi util.cmo html.cmi
-html.cmx: render_info.cmi tex.cmi util.cmx html.cmi
-html.cmi: tex.cmi
-lexer.cmo: parser.cmi render_info.cmi tex.cmi texutil.cmi
-lexer.cmx: parser.cmx render_info.cmi tex.cmi texutil.cmx
-mathml.cmo: tex.cmi mathml.cmi
-mathml.cmx: tex.cmi mathml.cmi
-mathml.cmi: tex.cmi
-parser.cmo: render_info.cmi tex.cmi parser.cmi
-parser.cmx: render_info.cmi tex.cmi parser.cmi
-parser.cmi: render_info.cmi tex.cmi
-render.cmo: texutil.cmi util.cmo
-render.cmx: texutil.cmx util.cmx
-tex.cmi: render_info.cmi
-texutil.cmo: html.cmi parser.cmi render_info.cmi tex.cmi util.cmo texutil.cmi
-texutil.cmx: html.cmx parser.cmx render_info.cmi tex.cmi util.cmx texutil.cmi
-texutil.cmi: parser.cmi tex.cmi
-texvc.cmo: html.cmi lexer.cmo mathml.cmi parser.cmi render.cmo texutil.cmi util.cmo
-texvc.cmx: html.cmx lexer.cmx mathml.cmx parser.cmx render.cmx texutil.cmx util.cmx
-texvc_cgi.cmo: lexer.cmo parser.cmi render.cmo texutil.cmi util.cmo
-texvc_cgi.cmx: lexer.cmx parser.cmx render.cmx texutil.cmx util.cmx
-texvc_test.cmo: html.cmi lexer.cmo parser.cmi texutil.cmi util.cmo
-texvc_test.cmx: html.cmx lexer.cmx parser.cmx texutil.cmx util.cmx
-texvc_tex.cmo: lexer.cmo parser.cmi texutil.cmi util.cmo
-texvc_tex.cmx: lexer.cmx parser.cmx texutil.cmx util.cmx
diff --git a/math/README b/math/README
deleted file mode 100644
index 5b99d4c2..00000000
--- a/math/README
+++ /dev/null
@@ -1,119 +0,0 @@
-== About texvc ==
-
-texvc takes LaTeX-compatible equations and produces formatted output in HTML,
-MathML, and (via LaTeX/dvipng) rasterized PNG images.
-Input data is parsed and scrutinized for safety, and the output includes an
-estimate of whether the code is simple enough that HTML rendering will look
-acceptable.
-
-The program was written by Tomasz Wegrzanowski for use with MediaWiki; it's
-included as part of the MediaWiki package (http://www.mediawiki.org) and is
-under the GPL license.
-
-Please report bugs at: https://bugzilla.wikimedia.org/
-with "MediaWiki extensions" as product and "texvc" as component.
-
-== Setup ==
-
-=== Requirements ===
-
-OCaml 3.06 or later is required to compile texvc; this can be acquired from
-http://caml.inria.fr/ if your system doesn't have it available.
-
-The makefile requires GNU make.
-
-Rasterization is done via LaTeX, dvipng. These need to be installed and in
-the PATH: latex, dvipng
-
-AMS* packages for LaTeX also need to be installed. Without AMS* some equations
-will render correctly while others won't render. Most distributions of TeX
-already contain AMS*. In Debian/Ubuntu you need to install tetex-extra.
-
-To work properly with rendering non-ASCII Unicode characters, a supplemental TeX
-package is needed (cjk-latex in Debian)
-
-=== Installation ===
-
-Run 'make' (or 'gmake' if GNU make is not your default make). This should
-produce the texvc executable.
-
-Then you'll need to set $wgUseTeX to true in your LocalSettings.php. By default,
-MediaWiki will search in this directory for texvc, if you moved it elsewhere,
-you'll have to modify $wgTexvc and set it to the path of the texvc executable.
-
-== Usage ==
-
-Normally texvc is called from MediaWiki's Math.php modules and everything
-Just Works. It can be run manually for testing or for use in another app.
-
-=== Command-line parameters ===
-
- texvc <temp directory> <output directory> <TeX code> <encoding> <color>
-
-Be sure to properly quote the TeX code!
-
-Example:
-
- texvc /home/wiki/tmp /home/wiki/math "y=x+2" iso-8859-1 "rgb 1.0 1.0 1.0"
-
-=== Output format ===
-
-Status codes and HTML/MathML transformations are returned on stdout.
-A rasterized PNG file will be written to the output directory, named
-for the MD5 hash code.
-
-texvc output format is like this:
- +%5 ok, but not html or mathml
- c%5%h ok, conservative html, no mathml
- m%5%h ok, moderate html, no mathml
- l%5%h ok, liberal html, no mathml
- C%5%h\0%m ok, conservative html, with mathml
- M%5%h\0%m ok, moderate html, with mathml
- L%5%h\0%m ok, liberal html, with mathml
- X%5%m ok, no html, with mathml
- S syntax error
- E lexing error
- F%s unknown function %s
- - other error
-
- \0 - null character
- %5 - md5, 32 hex characters
- %h - html code, without \0 characters
- %m - mathml code, without \0 characters
-
-
-== Troubleshooting ==
-
-Unfortunately, many error conditions with rasterization are not well reported.
-texvc will return as though everything is successful, and the only obvious
-sign of problems for the user is a big X on a wiki page where an equation
-should be.
-
-Try running texvc from the command line to ensure that the software it relies
-upon is all set up.
-
-Ensure that the temporary and math directories exist and can be written to by
-the user account the web server runs under; if you don't control the server,
-you may have to make them world-writable.
-
-If some equations render correctly while others don't, you probably don't have
-AMS* packages for LaTeX installed. Most distributions of TeX come with AMS*.
-In Debian/Ubuntu AMS* is in tetex-extra package.
-To check if that is the problem you can try those two equations:
- x + y
- x \implies y
-The first uses only standard LaTeX, while the second uses symbol \implies from AMS*.
-If the first renders, but the second doesn't, you need to install AMS*.
-
-== Hacking ==
-
-Before you start hacking on the math package its good to know the workflow,
-which is basically:
-
-1. texvc gets called by includes/Math.php (check out the line begining with "$cmd")
-2. texvc does its magic, which is basically to check for invalid latex code.
-3. texvc takes the user input if valid and creates a latex file containing it, see
- get_preface in texutil.ml
-4. dvipng(1) gets called to create a .png file
- See render.ml for this process (commenting out the removal of
- the temporary file is useful for debugging).
diff --git a/math/TODO b/math/TODO
deleted file mode 100644
index bd8d1f4f..00000000
--- a/math/TODO
+++ /dev/null
@@ -1,3 +0,0 @@
-* It would be better if PNGs were transparent
-* CJK support
-* Documentation, in particular about instalation of Latex support for Unicode
diff --git a/math/html.ml b/math/html.ml
deleted file mode 100644
index e880f073..00000000
--- a/math/html.ml
+++ /dev/null
@@ -1,142 +0,0 @@
-open Render_info
-open Tex
-open Util
-
-exception Too_difficult_for_html
-type context = CTX_NORMAL | CTX_IT | CTX_RM
-type conservativeness_t = CONSERVATIVE | MODERATE | LIBERAL
-
-let conservativeness = ref CONSERVATIVE
-let html_liberal () = conservativeness := LIBERAL
-let html_moderate () = if !conservativeness = CONSERVATIVE then conservativeness := MODERATE else ()
-
-
-let new_ctx = function
- FONTFORCE_IT -> CTX_IT
- | FONTFORCE_RM -> CTX_RM
-let font_render lit = function
- (_, FONT_UFH) -> lit
- | (_, FONT_UF) -> lit
- | (CTX_IT,FONT_RTI) -> raise Too_difficult_for_html
- | (_, FONT_RTI) -> lit
- | (CTX_IT,FONT_RM) -> "<i>"^lit^"</i>"
- | (_, FONT_RM) -> lit
- | (CTX_RM,FONT_IT) -> lit
- | (_, FONT_IT) -> "<i>"^lit^"</i>"
-
-let rec html_render_flat ctx = function
- TEX_LITERAL (HTMLABLE (ft,_,sh))::r -> (html_liberal (); (font_render sh (ctx,ft))^html_render_flat ctx r)
- | TEX_LITERAL (HTMLABLEC(ft,_,sh))::r -> (font_render sh (ctx,ft))^html_render_flat ctx r
- | TEX_LITERAL (MHTMLABLEC(ft,_,sh,_,_))::r -> (font_render sh (ctx,ft))^html_render_flat ctx r
- | TEX_LITERAL (HTMLABLEM(ft,_,sh))::r -> (html_moderate(); (font_render sh (ctx,ft))^html_render_flat ctx r)
- | TEX_LITERAL (HTMLABLE_BIG (_,sh))::r -> (html_liberal (); sh^html_render_flat ctx r)
- | TEX_FUN1hl (_,(f1,f2),a)::r -> f1^(html_render_flat ctx [a])^f2^html_render_flat ctx r
- | TEX_FUN1hf (_,ff,a)::r -> (html_render_flat (new_ctx ff) [a])^html_render_flat ctx r
- | TEX_DECLh (_,ff,a)::r -> (html_render_flat (new_ctx ff) a)^html_render_flat ctx r
- | TEX_CURLY ls::r -> html_render_flat ctx (ls @ r)
- | TEX_DQ (a,b)::r -> (html_liberal ();
- let bs = html_render_flat ctx [b] in match html_render_size ctx a with
- true, s -> raise Too_difficult_for_html
- | false, s -> s^"<sub>"^bs^"</sub>")^html_render_flat ctx r
- | TEX_UQ (a,b)::r -> (html_liberal ();
- let bs = html_render_flat ctx [b] in match html_render_size ctx a with
- true, s -> raise Too_difficult_for_html
- | false, s -> s^"<sup>"^bs^"</sup>")^html_render_flat ctx r
- | TEX_FQ (a,b,c)::r -> (html_liberal ();
- (let bs = html_render_flat ctx [b] in let cs = html_render_flat ctx [c] in
- match html_render_size ctx a with
- true, s -> raise Too_difficult_for_html
- | false, s -> s^"<sub>"^bs^"</sub><sup>"^cs^"</sup>")^html_render_flat ctx r)
- | TEX_DQN (a)::r -> (html_liberal ();
- let bs = html_render_flat ctx [a] in "<sub>"^bs^"</sub>")^html_render_flat ctx r
- | TEX_UQN (a)::r -> (html_liberal ();
- let bs = html_render_flat ctx [a] in "<sup>"^bs^"</sup>")^html_render_flat ctx r
- | TEX_FQN (a,b)::r -> (html_liberal ();
- (let bs = html_render_flat ctx [a] in let cs = html_render_flat ctx [b] in "<sub>"^bs^"</sub><sup>"^cs^"</sup>")^html_render_flat ctx r)
- | TEX_BOX (_,s)::r -> s^html_render_flat ctx r
- | TEX_LITERAL (TEX_ONLY _)::_ -> raise Too_difficult_for_html
- | TEX_FUN1 _::_ -> raise Too_difficult_for_html
- | TEX_FUN2 _::_ -> raise Too_difficult_for_html
- | TEX_FUN2nb _::_ -> raise Too_difficult_for_html
- | TEX_FUN2h _::_ -> raise Too_difficult_for_html
- | TEX_FUN2sq _::_ -> raise Too_difficult_for_html
- | TEX_INFIX _::_ -> raise Too_difficult_for_html
- | TEX_INFIXh _::_ -> raise Too_difficult_for_html
- | TEX_MATRIX _::_ -> raise Too_difficult_for_html
- | TEX_LR _::_ -> raise Too_difficult_for_html
- | TEX_BIG _::_ -> raise Too_difficult_for_html
- | [] -> ""
-and html_render_size ctx = function
- TEX_LITERAL (HTMLABLE_BIG (_,sh)) -> true,sh
- | x -> false,html_render_flat ctx [x]
-
-let rec html_render_deep ctx = function
- TEX_LITERAL (HTMLABLE (ft,_,sh))::r -> (html_liberal (); ("",(font_render sh (ctx,ft)),"")::html_render_deep ctx r)
- | TEX_LITERAL (HTMLABLEM(ft,_,sh))::r -> (html_moderate(); ("",(font_render sh (ctx,ft)),"")::html_render_deep ctx r)
- | TEX_LITERAL (HTMLABLEC(ft,_,sh))::r -> ("",(font_render sh (ctx,ft)),"")::html_render_deep ctx r
- | TEX_LITERAL (MHTMLABLEC(ft,_,sh,_,_))::r -> ("",(font_render sh (ctx,ft)),"")::html_render_deep ctx r
- | TEX_LITERAL (HTMLABLE_BIG (_,sh))::r -> (html_liberal (); ("",sh,"")::html_render_deep ctx r)
- | TEX_FUN2h (_,f,a,b)::r -> (html_liberal (); (f a b)::html_render_deep ctx r)
- | TEX_INFIXh (_,f,a,b)::r -> (html_liberal (); (f a b)::html_render_deep ctx r)
- | TEX_CURLY ls::r -> html_render_deep ctx (ls @ r)
- | TEX_DQ (a,b)::r -> (let bs = html_render_flat ctx [b] in match html_render_size ctx a with
- true, s -> "","<span style='font-size: x-large; font-family: serif;'>"^s^"</span>",bs
- | false, s -> "",(s^"<sub>"^bs^"</sub>"),"")::html_render_deep ctx r
- | TEX_UQ (a,b)::r -> (let bs = html_render_flat ctx [b] in match html_render_size ctx a with
- true, s -> bs,"<span style='font-size: x-large; font-family: serif;'>"^s^"</span>",""
- | false, s -> "",(s^"<sup>"^bs^"</sup>"),"")::html_render_deep ctx r
- | TEX_FQ (a,b,c)::r -> (html_liberal ();
- (let bs = html_render_flat ctx [b] in let cs = html_render_flat ctx [c] in
- match html_render_size ctx a with
- true, s -> (cs,"<span style='font-size: x-large; font-family: serif;'>"^s^"</span>",bs)
- | false, s -> ("",(s^"<sub>"^bs^"</sub><sup>"^cs^"</sup>"),""))::html_render_deep ctx r)
- | TEX_DQN (a)::r -> (let bs = html_render_flat ctx [a] in "",("<sub>"^bs^"</sub>"),"")::html_render_deep ctx r
- | TEX_UQN (a)::r -> (let bs = html_render_flat ctx [a] in "",("<sup>"^bs^"</sup>"),"")::html_render_deep ctx r
- | TEX_FQN (a,b)::r -> (html_liberal ();
- (let bs = html_render_flat ctx [a] in let cs = html_render_flat ctx [b] in
- ("",("<sub>"^bs^"</sub><sup>"^cs^"</sup>"),""))::html_render_deep ctx r)
- | TEX_FUN1hl (_,(f1,f2),a)::r -> ("",f1,"")::(html_render_deep ctx [a]) @ ("",f2,"")::html_render_deep ctx r
- | TEX_FUN1hf (_,ff,a)::r -> (html_render_deep (new_ctx ff) [a]) @ html_render_deep ctx r
- | TEX_DECLh (_,ff,a)::r -> (html_render_deep (new_ctx ff) a) @ html_render_deep ctx r
- | TEX_BOX (_,s)::r -> ("",s,"")::html_render_deep ctx r
- | TEX_LITERAL (TEX_ONLY _)::_ -> raise Too_difficult_for_html
- | TEX_FUN1 _::_ -> raise Too_difficult_for_html
- | TEX_FUN2 _::_ -> raise Too_difficult_for_html
- | TEX_FUN2nb _::_ -> raise Too_difficult_for_html
- | TEX_FUN2sq _::_ -> raise Too_difficult_for_html
- | TEX_INFIX _::_ -> raise Too_difficult_for_html
- | TEX_MATRIX _::_ -> raise Too_difficult_for_html
- | TEX_LR _::_ -> raise Too_difficult_for_html
- | TEX_BIG _::_ -> raise Too_difficult_for_html
- | [] -> []
-
-let rec html_render_table = function
- sf,u,d,("",a,"")::("",b,"")::r -> html_render_table (sf,u,d,(("",a^b,"")::r))
- | sf,u,d,(("",a,"") as c)::r -> html_render_table (c::sf,u,d,r)
- | sf,u,d,((_,a,"") as c)::r -> html_render_table (c::sf,true,d,r)
- | sf,u,d,(("",a,_) as c)::r -> html_render_table (c::sf,u,true,r)
- | sf,u,d,((_,a,_) as c)::r -> html_render_table (c::sf,true,true,r)
- | sf,false,false,[] -> mapjoin (function (u,m,d) -> m) (List.rev sf)
- | sf,true,false,[] -> let ustr,mstr = List.fold_left (fun (us,ms) (u,m,d) -> (us^"<td>"^u^"</td>",ms^"<td>"^u^"</td>"))
- ("","") (List.rev sf) in
- "\n<table>\n" ^
- "\t\t<tr style='text-align: center; vertical-align: bottom;'>" ^ ustr ^ "</tr>\n" ^
- "\t\t<tr style='text-align: center;'>" ^ mstr ^ "</tr>\n" ^
- "</table>\n"
- | sf,false,true,[] -> let mstr,dstr = List.fold_left (fun (ms,ds) (u,m,d) -> (ms^"<td>"^m^"</td>",ds^"<td>"^d^"</td>"))
- ("","") (List.rev sf) in
- "\n<table>\n" ^
- "\t\t<tr style='text-align: center;'>" ^ mstr ^ "</tr>\n" ^
- "\t\t<tr style='text-align: center; vertical-align: top;'>" ^ dstr ^ "</tr>\n" ^
- "</table>\n"
- | sf,true,true,[] -> let ustr,mstr,dstr = List.fold_left (fun (us,ms,ds) (u,m,d) ->
- (us^"<td>"^u^"</td>",ms^"<td>"^m^"</td>",ds^"<td>"^d^"</td>")) ("","","") (List.rev sf) in
- "\n<table>\n" ^
- "\t\t<tr style='text-align: center; vertical-align: bottom;'>" ^ ustr ^ "</tr>\n" ^
- "\t\t<tr style='text-align: center;'>" ^ mstr ^ "</tr>\n" ^
- "\t\t<tr style='text-align: center; vertical-align: top;'>" ^ dstr ^ "</tr>\n" ^
- "</table>\n"
-
-let html_render tree = html_render_table ([],false,false,html_render_deep CTX_NORMAL tree)
-
-let render tree = try Some (html_render tree) with _ -> None
diff --git a/math/html.mli b/math/html.mli
deleted file mode 100644
index 00b41cf4..00000000
--- a/math/html.mli
+++ /dev/null
@@ -1,5 +0,0 @@
-val render : Tex.t list -> string option
-val html_render : Tex.t list -> string
-
-type conservativeness_t = CONSERVATIVE | MODERATE | LIBERAL
-val conservativeness : conservativeness_t ref
diff --git a/math/lexer.mll b/math/lexer.mll
deleted file mode 100644
index 1702084c..00000000
--- a/math/lexer.mll
+++ /dev/null
@@ -1,108 +0,0 @@
-{
- open Parser
- open Render_info
- open Tex
-}
-let space = [' ' '\t' '\n' '\r']
-let alpha = ['a'-'z' 'A'-'Z']
-let literal_id = ['a'-'z' 'A'-'Z']
-let literal_mn = ['0'-'9']
-let literal_uf_lt = [',' ':' ';' '?' '!' '\'']
-let delimiter_uf_lt = ['(' ')' '.']
-let literal_uf_op = ['+' '-' '*' '=']
-let delimiter_uf_op = ['/' '|']
-let boxchars = ['0'-'9' 'a'-'z' 'A'-'Z' '+' '-' '*' ',' '=' '(' ')' ':' '/' ';' '?' '.' '!' ' ' '\128'-'\255']
-let aboxchars = ['0'-'9' 'a'-'z' 'A'-'Z' '+' '-' '*' ',' '=' '(' ')' ':' '/' ';' '?' '.' '!' ' ']
-
-rule token = parse
- space + { token lexbuf }
- | "\\text" space * '{' boxchars + '}'
- { Texutil.tex_use_ams (); let str = Lexing.lexeme lexbuf in
- let n = String.index str '{' + 1 in
- BOX ("\\text", String.sub str n (String.length str - n - 1)) }
- | "\\mbox" space * '{' aboxchars + '}'
- { let str = Lexing.lexeme lexbuf in
- let n = String.index str '{' + 1 in
- BOX ("\\mbox", String.sub str n (String.length str - n - 1)) }
- | "\\hbox" space * '{' aboxchars + '}'
- { let str = Lexing.lexeme lexbuf in
- let n = String.index str '{' + 1 in
- BOX ("\\hbox", String.sub str n (String.length str - n - 1)) }
- | "\\vbox" space * '{' aboxchars + '}'
- { let str = Lexing.lexeme lexbuf in
- let n = String.index str '{' + 1 in
- BOX ("\\vbox", String.sub str n (String.length str - n - 1)) }
- | "\\mbox" space * '{' boxchars + '}'
- { let str = Lexing.lexeme lexbuf in
- let n = String.index str '{' + 1 in
- Texutil.tex_use_nonascii();
- BOX ("\\mbox", String.sub str n (String.length str - n - 1)) }
- | "\\hbox" space * '{' boxchars + '}'
- { let str = Lexing.lexeme lexbuf in
- let n = String.index str '{' + 1 in
- Texutil.tex_use_nonascii();
- BOX ("\\hbox", String.sub str n (String.length str - n - 1)) }
- | "\\vbox" space * '{' boxchars + '}'
- { let str = Lexing.lexeme lexbuf in
- let n = String.index str '{' + 1 in
- Texutil.tex_use_nonascii();
- BOX ("\\vbox", String.sub str n (String.length str - n - 1)) }
- | literal_id { let str = Lexing.lexeme lexbuf in LITERAL (MHTMLABLEC (FONT_IT, str,str,MI,str)) }
- | literal_mn { let str = Lexing.lexeme lexbuf in LITERAL (MHTMLABLEC (FONT_RM, str,str,MN,str)) }
- | literal_uf_lt { let str = Lexing.lexeme lexbuf in LITERAL (HTMLABLEC (FONT_UFH, str,str)) }
- | delimiter_uf_lt { let str = Lexing.lexeme lexbuf in DELIMITER (HTMLABLEC (FONT_UFH, str,str)) }
- | "-" { let str = Lexing.lexeme lexbuf in LITERAL (MHTMLABLEC (FONT_UFH,"-"," &minus; ",MO,str))}
- | literal_uf_op { let str = Lexing.lexeme lexbuf in LITERAL (MHTMLABLEC (FONT_UFH, str," "^str^" ",MO,str)) }
- | delimiter_uf_op { let str = Lexing.lexeme lexbuf in DELIMITER (MHTMLABLEC (FONT_UFH, str," "^str^" ",MO,str)) }
- | "\\" alpha + { Texutil.find (Lexing.lexeme lexbuf) }
- | "\\sqrt" space * "[" { FUN_AR1opt "\\sqrt" }
- | "\\xleftarrow" space * "[" { Texutil.tex_use_ams(); FUN_AR1opt "\\xleftarrow" }
- | "\\xrightarrow" space * "[" { Texutil.tex_use_ams(); FUN_AR1opt "\\xrightarrow" }
- | "\\," { LITERAL (HTMLABLE (FONT_UF, "\\,","&nbsp;")) }
- | "\\ " { LITERAL (HTMLABLE (FONT_UF, "\\ ","&nbsp;")) }
- | "\\;" { LITERAL (HTMLABLE (FONT_UF, "\\;","&nbsp;")) }
- | "\\!" { LITERAL (TEX_ONLY "\\!") }
- | "\\{" { DELIMITER (HTMLABLEC(FONT_UFH,"\\{","{")) }
- | "\\}" { DELIMITER (HTMLABLEC(FONT_UFH,"\\}","}")) }
- | "\\|" { DELIMITER (HTMLABLE (FONT_UFH,"\\|","||")) }
- | "\\_" { LITERAL (HTMLABLEC(FONT_UFH,"\\_","_")) }
- | "\\#" { LITERAL (HTMLABLE (FONT_UFH,"\\#","#")) }
- | "\\%" { LITERAL (HTMLABLE (FONT_UFH,"\\%","%")) }
- | "\\$" { LITERAL (HTMLABLE (FONT_UFH,"\\$","$")) }
- | "\\&" { LITERAL (HTMLABLEC (FONT_RM,"\\&","&amp;")) }
- | "&" { NEXT_CELL }
- | "\\\\" { NEXT_ROW }
- | "\\begin{matrix}" { Texutil.tex_use_ams(); BEGIN__MATRIX }
- | "\\end{matrix}" { END__MATRIX }
- | "\\begin{pmatrix}" { Texutil.tex_use_ams(); BEGIN_PMATRIX }
- | "\\end{pmatrix}" { END_PMATRIX }
- | "\\begin{bmatrix}" { Texutil.tex_use_ams(); BEGIN_BMATRIX }
- | "\\end{bmatrix}" { END_BMATRIX }
- | "\\begin{Bmatrix}" { Texutil.tex_use_ams(); BEGIN_BBMATRIX }
- | "\\end{Bmatrix}" { END_BBMATRIX }
- | "\\begin{vmatrix}" { Texutil.tex_use_ams(); BEGIN_VMATRIX }
- | "\\end{vmatrix}" { END_VMATRIX }
- | "\\begin{Vmatrix}" { Texutil.tex_use_ams(); BEGIN_VVMATRIX }
- | "\\end{Vmatrix}" { END_VVMATRIX }
- | "\\begin{array}" { Texutil.tex_use_ams(); BEGIN_ARRAY }
- | "\\end{array}" { END_ARRAY }
- | "\\begin{align}" { Texutil.tex_use_ams(); BEGIN_ALIGN }
- | "\\end{align}" { END_ALIGN }
- | "\\begin{alignat}" { Texutil.tex_use_ams(); BEGIN_ALIGNAT }
- | "\\end{alignat}" { END_ALIGNAT }
- | "\\begin{smallmatrix}" { Texutil.tex_use_ams(); BEGIN_SMALLMATRIX }
- | "\\end{smallmatrix}" { END_SMALLMATRIX }
- | "\\begin{cases}" { Texutil.tex_use_ams(); BEGIN_CASES }
- | "\\end{cases}" { END_CASES }
- | '>' { LITERAL (HTMLABLEC(FONT_UFH,">"," &gt; ")) }
- | '<' { LITERAL (HTMLABLEC(FONT_UFH,"<"," &lt; ")) }
- | '%' { LITERAL (HTMLABLEC(FONT_UFH,"\\%","%")) }
- | '$' { LITERAL (HTMLABLEC(FONT_UFH,"\\$","$")) }
- | '~' { LITERAL (HTMLABLE (FONT_UF, "~","&nbsp;")) }
- | '[' { DELIMITER (HTMLABLEC(FONT_UFH,"[","[")) }
- | ']' { SQ_CLOSE }
- | '{' { CURLY_OPEN }
- | '}' { CURLY_CLOSE }
- | '^' { SUP }
- | '_' { SUB }
- | eof { EOF }
diff --git a/math/mathml.ml b/math/mathml.ml
deleted file mode 100644
index b6c76af2..00000000
--- a/math/mathml.ml
+++ /dev/null
@@ -1,20 +0,0 @@
-open Tex
-open Render_info
-
-type t = TREE_MN of string | TREE_MO of string | TREE_MI of string
-
-let rec make_mathml_tree = function
- TREE_MN a::otr,TEX_LITERAL(MHTMLABLEC(_,_,_,MN,b))::itr -> make_mathml_tree(TREE_MN (a^b)::otr,itr)
- | otr,TEX_LITERAL(MHTMLABLEC(_,_,_,MN,a))::itr -> make_mathml_tree(TREE_MN a::otr,itr)
- | otr,TEX_LITERAL(MHTMLABLEC(_,_,_,MO,a))::itr -> make_mathml_tree(TREE_MO a::otr,itr)
- | otr,TEX_LITERAL(MHTMLABLEC(_,_,_,MI,a))::itr -> make_mathml_tree(TREE_MI a::otr,itr)
- | otr,TEX_CURLY(crl)::itr -> make_mathml_tree(otr,crl@itr)
- | otr,[] -> List.rev otr
- | _ -> failwith "failed to render mathml"
-
-let render_mathml_tree = function
- TREE_MN s -> "<mn>"^s^"</mn>"
- | TREE_MI s -> "<mi>"^s^"</mi>"
- | TREE_MO s -> "<mo>"^s^"</mo>"
-
-let render tree = try Some (Util.mapjoin render_mathml_tree (make_mathml_tree ([],tree))) with _ -> None
diff --git a/math/mathml.mli b/math/mathml.mli
deleted file mode 100644
index fcc2cd4c..00000000
--- a/math/mathml.mli
+++ /dev/null
@@ -1 +0,0 @@
-val render : Tex.t list -> string option
diff --git a/math/parser.mly b/math/parser.mly
deleted file mode 100644
index 29882fb4..00000000
--- a/math/parser.mly
+++ /dev/null
@@ -1,118 +0,0 @@
-%{
- open Tex
- open Render_info
-
- let sq_close_ri = HTMLABLEC(FONT_UFH,"]", "]")
-%}
-%token <Render_info.t> LITERAL DELIMITER
-%token <string> FUN_AR2 FUN_INFIX FUN_AR1 DECL FUN_AR1opt BIG FUN_AR2nb
-%token <string*string> BOX
-%token <string*(string*string)> FUN_AR1hl
-%token <string*Render_info.font_force> FUN_AR1hf DECLh
-%token <string*(Tex.t->Tex.t->string*string*string)> FUN_AR2h
-%token <string*(Tex.t list->Tex.t list->string*string*string)> FUN_INFIXh
-%token EOF CURLY_OPEN CURLY_CLOSE SUB SUP SQ_CLOSE NEXT_CELL NEXT_ROW
-%token BEGIN__MATRIX BEGIN_PMATRIX BEGIN_BMATRIX BEGIN_BBMATRIX BEGIN_VMATRIX BEGIN_VVMATRIX BEGIN_CASES BEGIN_ARRAY BEGIN_ALIGN BEGIN_ALIGNAT BEGIN_SMALLMATRIX
-%token END__MATRIX END_PMATRIX END_BMATRIX END_BBMATRIX END_VMATRIX END_VVMATRIX END_CASES END_ARRAY END_ALIGN END_ALIGNAT END_SMALLMATRIX
-%token LEFT RIGHT
-%type <Tex.t list> tex_expr
-%start tex_expr
-
-%%
-tex_expr:
- expr EOF { $1 }
- | ne_expr FUN_INFIX ne_expr EOF
- { [TEX_INFIX($2,$1,$3)] }
- | ne_expr FUN_INFIXh ne_expr EOF
- { let t,h=$2 in [TEX_INFIXh(t,h,$1,$3)] }
-expr:
- /* */ { [] }
- | ne_expr { $1 }
-ne_expr:
- lit_aq expr { $1 :: $2 }
- | litsq_aq expr { $1 :: $2 }
- | DECLh expr { let t,h = $1 in [TEX_DECLh(t,h,$2)] }
-litsq_aq:
- litsq_zq { $1 }
- | litsq_dq { let base,downi = $1 in TEX_DQ(base,downi) }
- | litsq_uq { let base,upi = $1 in TEX_UQ(base,upi)}
- | litsq_fq { $1 }
-litsq_fq:
- litsq_dq SUP lit { let base,downi = $1 in TEX_FQ(base,downi,$3) }
- | litsq_uq SUB lit { let base,upi = $1 in TEX_FQ(base,$3,upi) }
-litsq_uq:
- litsq_zq SUP lit { $1,$3 }
-litsq_dq:
- litsq_zq SUB lit { $1,$3 }
-litsq_zq:
- | SQ_CLOSE { TEX_LITERAL sq_close_ri }
-expr_nosqc:
- /* */ { [] }
- | lit_aq expr_nosqc { $1 :: $2 }
-lit_aq:
- lit { $1 }
- | lit_dq { let base,downi = $1 in TEX_DQ(base,downi) }
- | lit_uq { let base,upi = $1 in TEX_UQ(base,upi)}
- | lit_dqn { TEX_DQN($1) }
- | lit_uqn { TEX_UQN($1) }
- | lit_fq { $1 }
-
-lit_fq:
- lit_dq SUP lit { let base,downi = $1 in TEX_FQ(base,downi,$3) }
- | lit_uq SUB lit { let base,upi = $1 in TEX_FQ(base,$3,upi) }
- | lit_dqn SUP lit { TEX_FQN($1, $3) }
-
-lit_uq:
- lit SUP lit { $1,$3 }
-lit_dq:
- lit SUB lit { $1,$3 }
-lit_uqn:
- SUP lit { $2 }
-lit_dqn:
- SUB lit { $2 }
-
-
-left:
- LEFT DELIMITER { $2 }
- | LEFT SQ_CLOSE { sq_close_ri }
-right:
- RIGHT DELIMITER { $2 }
- | RIGHT SQ_CLOSE { sq_close_ri }
-lit:
- LITERAL { TEX_LITERAL $1 }
- | DELIMITER { TEX_LITERAL $1 }
- | BIG DELIMITER { TEX_BIG ($1,$2) }
- | BIG SQ_CLOSE { TEX_BIG ($1,sq_close_ri) }
- | left expr right { TEX_LR ($1,$3,$2) }
- | FUN_AR1 lit { TEX_FUN1($1,$2) }
- | FUN_AR1hl lit { let t,h=$1 in TEX_FUN1hl(t,h,$2) }
- | FUN_AR1hf lit { let t,h=$1 in TEX_FUN1hf(t,h,$2) }
- | FUN_AR1opt expr_nosqc SQ_CLOSE lit { TEX_FUN2sq($1,TEX_CURLY $2,$4) }
- | FUN_AR2 lit lit { TEX_FUN2($1,$2,$3) }
- | FUN_AR2nb lit lit { TEX_FUN2nb($1,$2,$3) }
- | FUN_AR2h lit lit { let t,h=$1 in TEX_FUN2h(t,h,$2,$3) }
- | BOX { let bt,s = $1 in TEX_BOX (bt,s) }
- | CURLY_OPEN expr CURLY_CLOSE
- { TEX_CURLY $2 }
- | CURLY_OPEN ne_expr FUN_INFIX ne_expr CURLY_CLOSE
- { TEX_INFIX($3,$2,$4) }
- | CURLY_OPEN ne_expr FUN_INFIXh ne_expr CURLY_CLOSE
- { let t,h=$3 in TEX_INFIXh(t,h,$2,$4) }
- | BEGIN__MATRIX matrix END__MATRIX { TEX_MATRIX ("matrix", $2) }
- | BEGIN_PMATRIX matrix END_PMATRIX { TEX_MATRIX ("pmatrix", $2) }
- | BEGIN_BMATRIX matrix END_BMATRIX { TEX_MATRIX ("bmatrix", $2) }
- | BEGIN_BBMATRIX matrix END_BBMATRIX { TEX_MATRIX ("Bmatrix", $2) }
- | BEGIN_VMATRIX matrix END_VMATRIX { TEX_MATRIX ("vmatrix", $2) }
- | BEGIN_VVMATRIX matrix END_VVMATRIX { TEX_MATRIX ("Vmatrix", $2) }
- | BEGIN_ARRAY matrix END_ARRAY { TEX_MATRIX ("array", $2) }
- | BEGIN_ALIGN matrix END_ALIGN { TEX_MATRIX ("aligned", $2) }
- | BEGIN_ALIGNAT matrix END_ALIGNAT { TEX_MATRIX ("alignedat", $2) }
- | BEGIN_SMALLMATRIX matrix END_SMALLMATRIX { TEX_MATRIX ("smallmatrix", $2) }
- | BEGIN_CASES matrix END_CASES { TEX_MATRIX ("cases", $2) }
-matrix:
- line { [$1] }
- | line NEXT_ROW matrix { $1::$3 }
-line:
- expr { [$1] }
- | expr NEXT_CELL line { $1::$3 }
-;;
diff --git a/math/render.ml b/math/render.ml
deleted file mode 100644
index 5a02b671..00000000
--- a/math/render.ml
+++ /dev/null
@@ -1,58 +0,0 @@
-(* vim: set sw=8 ts=8 et: *)
-
-let cmd_dvips tmpprefix = "dvips -q -R -E " ^ tmpprefix ^ ".dvi -f >" ^ tmpprefix ^ ".ps"
-let cmd_latex tmpprefix = "latex " ^ tmpprefix ^ ".tex >/dev/null"
-
-(* Putting -transparent white in converts arguments will sort-of give you transperancy *)
-let cmd_convert tmpprefix finalpath = "convert -quality 100 -density 120 " ^ tmpprefix ^ ".ps " ^ finalpath ^ " >/dev/null 2>/dev/null"
-
-(* Putting -bg Transparent in dvipng's arguments will give full-alpha transparency *)
-(* Note that IE have problems with such PNGs and need an additional javascript snippet *)
-(* Putting -bg transparent in dvipng's arguments will give binary transparency *)
-let cmd_dvipng tmpprefix finalpath backcolor = "dvipng -bg \'" ^ backcolor ^ "\' -gamma 1.5 -D 120 -T tight --strict " ^ tmpprefix ^ ".dvi -o " ^ finalpath ^ " >/dev/null 2>/dev/null"
-
-exception ExternalCommandFailure of string
-
-let render tmppath finalpath outtex md5 backcolor =
- let tmpprefix0 = (string_of_int (Unix.getpid ()))^"_"^md5 in
- let tmpprefix = (tmppath^"/"^tmpprefix0) in
- let unlink_all () =
- begin
- (* Commenting this block out will aid in debugging *)
- Sys.remove (tmpprefix ^ ".dvi");
- Sys.remove (tmpprefix ^ ".aux");
- Sys.remove (tmpprefix ^ ".log");
- Sys.remove (tmpprefix ^ ".tex");
- if Sys.file_exists (tmpprefix ^ ".ps")
- then Sys.remove (tmpprefix ^ ".ps");
- end in
-
- let f = (Util.open_out_unless_exists (tmpprefix ^ ".tex")) in
- begin
- (* Assemble final output in file 'f' *)
- output_string f (Texutil.get_preface ());
- output_string f outtex;
- output_string f (Texutil.get_footer ());
- close_out f;
-
- (* TODO: document *)
- if Util.run_in_other_directory tmppath (cmd_latex tmpprefix0) != 0
- then (
- unlink_all (); raise (ExternalCommandFailure "latex")
- ) else if (Sys.command (cmd_dvipng tmpprefix (finalpath^"/"^md5^".png") backcolor) != 0)
- then (
- if (Sys.command (cmd_dvips tmpprefix) != 0)
- then (
- unlink_all ();
- raise (ExternalCommandFailure "dvips")
- ) else if (Sys.command (cmd_convert tmpprefix (finalpath^"/"^md5^".png")) != 0)
- then (
- unlink_all ();
- raise (ExternalCommandFailure "convert")
- ) else (
- unlink_all ()
- )
- ) else (
- unlink_all ()
- )
- end
diff --git a/math/render_info.mli b/math/render_info.mli
deleted file mode 100644
index d5e7fde9..00000000
--- a/math/render_info.mli
+++ /dev/null
@@ -1,20 +0,0 @@
-type font_force =
- FONTFORCE_IT
- | FONTFORCE_RM
-type font_class =
- FONT_IT (* IT default, may be forced to be RM *)
- | FONT_RM (* RM default, may be forced to be IT *)
- | FONT_UF (* not affected by IT/RM setting *)
- | FONT_RTI (* RM - any, IT - not available in HTML *)
- | FONT_UFH (* in TeX UF, in HTML RM *)
-type math_class =
- MN
- | MI
- | MO
-type t =
- HTMLABLEC of font_class * string * string
- | HTMLABLEM of font_class * string * string
- | HTMLABLE of font_class * string * string
- | MHTMLABLEC of font_class * string * string * math_class * string
- | HTMLABLE_BIG of string * string
- | TEX_ONLY of string
diff --git a/math/tex.mli b/math/tex.mli
deleted file mode 100644
index f2ed37cf..00000000
--- a/math/tex.mli
+++ /dev/null
@@ -1,23 +0,0 @@
-type t =
- TEX_LITERAL of Render_info.t
- | TEX_CURLY of t list
- | TEX_FQ of t * t * t
- | TEX_DQ of t * t
- | TEX_UQ of t * t
- | TEX_FQN of t * t
- | TEX_DQN of t
- | TEX_UQN of t
- | TEX_LR of Render_info.t * Render_info.t * t list
- | TEX_BOX of string * string
- | TEX_BIG of string * Render_info.t
- | TEX_FUN1 of string * t
- | TEX_FUN2 of string * t * t
- | TEX_FUN2nb of string * t * t
- | TEX_INFIX of string * t list * t list
- | TEX_FUN2sq of string * t * t
- | TEX_FUN1hl of string * (string * string) * t
- | TEX_FUN1hf of string * Render_info.font_force * t
- | TEX_FUN2h of string * (t -> t -> string * string * string) * t * t
- | TEX_INFIXh of string * (t list -> t list -> string * string * string) * t list * t list
- | TEX_MATRIX of string * t list list list
- | TEX_DECLh of string * Render_info.font_force * t list
diff --git a/math/texutil.ml b/math/texutil.ml
deleted file mode 100644
index cc7f48fa..00000000
--- a/math/texutil.ml
+++ /dev/null
@@ -1,760 +0,0 @@
-(* vim: set sw=8 ts=8 et: *)
-open Parser
-open Render_info
-open Tex
-open Util
-
-let tex_part = function
- HTMLABLE (_,t,_) -> t
- | HTMLABLEM (_,t,_) -> t
- | HTMLABLEC (_,t,_) -> t
- | MHTMLABLEC (_,t,_,_,_) -> t
- | HTMLABLE_BIG (t,_) -> t
- | TEX_ONLY t -> t
-
-let rec render_tex = function
- TEX_FQ (a,b,c) -> (render_tex a) ^ "_{" ^ (render_tex b) ^ "}^{" ^ (render_tex c) ^ "}"
- | TEX_DQ (a,b) -> (render_tex a) ^ "_{" ^ (render_tex b) ^ "}"
- | TEX_UQ (a,b) -> (render_tex a) ^ "^{" ^ (render_tex b) ^ "}"
- | TEX_FQN (a,b) -> "_{" ^ (render_tex a) ^ "}^{" ^ (render_tex b) ^ "}"
- | TEX_DQN (a) -> "_{" ^ (render_tex a) ^ "}"
- | TEX_UQN (a) -> "^{" ^ (render_tex a) ^ "}"
- | TEX_LITERAL s -> tex_part s
- | TEX_FUN1 (f,a) -> "{" ^ f ^ " " ^ (render_tex a) ^ "}"
- | TEX_FUN1hl (f,_,a) -> "{" ^ f ^ " " ^ (render_tex a) ^ "}"
- | TEX_FUN1hf (f,_,a) -> "{" ^ f ^ " " ^ (render_tex a) ^ "}"
- | TEX_DECLh (f,_,a) -> "{" ^ f ^ "{" ^ (mapjoin render_tex a) ^ "}}"
- | TEX_FUN2 (f,a,b) -> "{" ^ f ^ " " ^ (render_tex a) ^ (render_tex b) ^ "}"
- | TEX_FUN2nb (f,a,b) -> f ^ (render_tex a) ^ (render_tex b)
- | TEX_FUN2h (f,_,a,b) -> "{" ^ f ^ " " ^ (render_tex a) ^ (render_tex b) ^ "}"
- | TEX_FUN2sq (f,a,b) -> "{" ^ f ^ "[ " ^ (render_tex a) ^ "]" ^ (render_tex b) ^ "}"
- | TEX_CURLY (tl) -> "{" ^ (mapjoin render_tex tl) ^ "}"
- | TEX_INFIX (s,ll,rl) -> "{" ^ (mapjoin render_tex ll) ^ " " ^ s ^ "" ^ (mapjoin render_tex rl) ^ "}"
- | TEX_INFIXh (s,_,ll,rl) -> "{" ^ (mapjoin render_tex ll) ^ " " ^ s ^ "" ^ (mapjoin render_tex rl) ^ "}"
- | TEX_BOX (bt,s) -> "{"^bt^"{" ^ s ^ "}}"
- | TEX_BIG (bt,d) -> "{"^bt^(tex_part d)^"}"
- | TEX_MATRIX (t,rows) -> "{\\begin{"^t^"}"^(mapjoine "\\\\" (mapjoine "&" (mapjoin render_tex)) rows)^"\\end{"^t^"}}"
- | TEX_LR (l,r,tl) -> "\\left "^(tex_part l)^(mapjoin render_tex tl)^"\\right "^(tex_part r)
-
-
-(* Dynamic loading*)
-type encoding_t = LATIN1 | LATIN2 | UTF8
-
-(* module properties *)
-let modules_ams = ref false
-let modules_nonascii = ref false
-let modules_encoding = ref UTF8
-let modules_color = ref false
-
-(* wrappers to easily set / reset module properties *)
-let tex_use_ams () = modules_ams := true
-let tex_use_nonascii () = modules_nonascii := true
-let tex_use_color () = modules_color := true
-let tex_mod_reset () = (
- modules_ams := false;
- modules_nonascii := false;
- modules_encoding := UTF8;
- modules_color := false
- )
-
-(* Return TeX fragment for one of the encodings in (UTF8,LATIN1,LATIN2) *)
-let get_encoding = function
- UTF8 -> "\\usepackage{ucs}\n\\usepackage[utf8]{inputenc}\n"
- | LATIN1 -> "\\usepackage[latin1]{inputenc}\n"
- | LATIN2 -> "\\usepackage[latin2]{inputenc}\n"
-
-(* TeX fragment inserted before the output *)
-let get_preface () = "\\nonstopmode\n\\documentclass[12pt]{article}\n" ^
- (if !modules_nonascii then get_encoding !modules_encoding else "") ^
- (if !modules_ams then "\\usepackage{amsmath}\n\\usepackage{amsfonts}\n\\usepackage{amssymb}\n" else "") ^
- (if !modules_color then "\\usepackage[dvips,usenames]{color}\n" else "") ^
- "\\usepackage{cancel}\n\\pagestyle{empty}\n\\begin{document}\n$$\n"
-
-(* TeX fragment appended after the content *)
-let get_footer () = "\n$$\n\\end{document}\n"
-
-(* Default to UTF8 *)
-let set_encoding = function
- "ISO-8859-1" -> modules_encoding := LATIN1
- | "iso-8859-1" -> modules_encoding := LATIN1
- | "ISO-8859-2" -> modules_encoding := LATIN2
- | _ -> modules_encoding := UTF8
-
-(* Turn that into hash table lookup *)
-exception Illegal_tex_function of string
-
-let find = function
- "\\alpha" -> LITERAL (HTMLABLEC (FONT_UF, "\\alpha ", "&alpha;"))
- | "\\Alpha" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{A}", "&Alpha;")))
- | "\\beta" -> LITERAL (HTMLABLEC (FONT_UF, "\\beta ", "&beta;"))
- | "\\Beta" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{B}", "&Beta;")))
- | "\\gamma" -> LITERAL (HTMLABLEC (FONT_UF, "\\gamma ", "&gamma;"))
- | "\\Gamma" -> LITERAL (HTMLABLEC (FONT_UF, "\\Gamma ", "&Gamma;"))
- | "\\delta" -> LITERAL (HTMLABLEC (FONT_UF, "\\delta ", "&delta;"))
- | "\\Delta" -> LITERAL (HTMLABLEC (FONT_UF, "\\Delta ", "&Delta;"))
- | "\\epsilon" -> LITERAL (TEX_ONLY "\\epsilon ")
- | "\\Epsilon" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{E}", "&Epsilon;")))
- | "\\varepsilon" -> LITERAL (TEX_ONLY "\\varepsilon ")
- | "\\zeta" -> LITERAL (HTMLABLEC (FONT_UF, "\\zeta ", "&zeta;"))
- | "\\Zeta" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{Z}", "&Zeta;")))
- | "\\eta" -> LITERAL (HTMLABLEC (FONT_UF, "\\eta ", "&eta;"))
- | "\\Eta" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{H}", "&Eta;")))
- | "\\theta" -> LITERAL (HTMLABLEC (FONT_UF, "\\theta ", "&theta;"))
- | "\\Theta" -> LITERAL (HTMLABLEC (FONT_UF, "\\Theta ", "&Theta;"))
- | "\\vartheta" -> LITERAL (HTMLABLE (FONT_UF, "\\vartheta ", "&thetasym;"))
- | "\\thetasym" -> LITERAL (HTMLABLE (FONT_UF, "\\vartheta ", "&thetasym;"))
- | "\\iota" -> LITERAL (HTMLABLEC (FONT_UF, "\\iota ", "&iota;"))
- | "\\Iota" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{I}", "&Iota;")))
- | "\\kappa" -> LITERAL (HTMLABLEC (FONT_UF, "\\kappa ", "&kappa;"))
- | "\\Kappa" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{K}", "&Kappa;")))
- | "\\lambda" -> LITERAL (HTMLABLEC (FONT_UF, "\\lambda ", "&lambda;"))
- | "\\Lambda" -> LITERAL (HTMLABLEC (FONT_UF, "\\Lambda ", "&Lambda;"))
- | "\\mu" -> LITERAL (HTMLABLEC (FONT_UF, "\\mu ", "&mu;"))
- | "\\Mu" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{M}", "&Mu;")))
- | "\\nu" -> LITERAL (HTMLABLEC (FONT_UF, "\\nu ", "&nu;"))
- | "\\Nu" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{N}", "&Nu;")))
- | "\\omicron" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{o}", "&omicron;")))
- | "\\Omicron" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{O}", "&Omicron;")))
- | "\\pi" -> LITERAL (HTMLABLEC (FONT_UF, "\\pi ", "&pi;"))
- | "\\Pi" -> LITERAL (HTMLABLEC (FONT_UF, "\\Pi ", "&Pi;"))
- | "\\varpi" -> LITERAL (TEX_ONLY "\\varpi ")
- | "\\rho" -> LITERAL (HTMLABLEC (FONT_UF, "\\rho ", "&rho;"))
- | "\\Rho" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{P}", "&Rho;")))
- | "\\varrho" -> LITERAL (TEX_ONLY "\\varrho ")
- | "\\sim" -> LITERAL (HTMLABLEC (FONT_UF, "\\sim ", "&sim;"))
- | "\\sigma" -> LITERAL (HTMLABLEC (FONT_UF, "\\sigma ", "&sigma;"))
- | "\\Sigma" -> LITERAL (HTMLABLEC (FONT_UF, "\\Sigma ", "&Sigma;"))
- | "\\varsigma" -> LITERAL (TEX_ONLY "\\varsigma ")
- | "\\tau" -> LITERAL (HTMLABLEC (FONT_UF, "\\tau ", "&tau;"))
- | "\\Tau" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{T}", "&Tau;")))
- | "\\upsilon" -> LITERAL (HTMLABLEC (FONT_UF, "\\upsilon ", "&upsilon;"))
- | "\\Upsilon" -> LITERAL (HTMLABLEC (FONT_UF, "\\Upsilon ", "&Upsilon;"))
- | "\\phi" -> LITERAL (TEX_ONLY "\\phi ")
- | "\\Phi" -> LITERAL (HTMLABLEC (FONT_UF, "\\Phi ", "&Phi;"))
- | "\\varphi" -> LITERAL (TEX_ONLY "\\varphi ")
- | "\\chi" -> LITERAL (HTMLABLEC (FONT_UF, "\\chi ", "&chi;"))
- | "\\Chi" -> (tex_use_ams (); LITERAL (HTMLABLEC (FONT_UF,
- "\\mathrm{X}", "&Chi;")))
- | "\\psi" -> LITERAL (HTMLABLEC (FONT_UF, "\\psi ", "&psi;"))
- | "\\Psi" -> LITERAL (HTMLABLEC (FONT_UF, "\\Psi ", "&Psi;"))
- | "\\omega" -> LITERAL (HTMLABLEC (FONT_UF, "\\omega ", "&omega;"))
- | "\\Omega" -> LITERAL (HTMLABLEC (FONT_UF, "\\Omega ", "&Omega;"))
- | "\\xi" -> LITERAL (HTMLABLEC (FONT_UF, "\\xi ", "&xi;"))
- | "\\Xi" -> LITERAL (HTMLABLEC (FONT_UF, "\\Xi ", "&Xi;"))
- | "\\aleph" -> LITERAL (HTMLABLE (FONT_UF, "\\aleph ", "&alefsym;"))
- | "\\alef" -> LITERAL (HTMLABLE (FONT_UF, "\\aleph ", "&alefsym;"))
- | "\\alefsym" -> LITERAL (HTMLABLE (FONT_UF, "\\aleph ", "&alefsym;"))
- | "\\larr" -> LITERAL (HTMLABLEM (FONT_UF, "\\leftarrow ", "&larr;"))
- | "\\leftarrow" -> LITERAL (HTMLABLEM (FONT_UF, "\\leftarrow ", "&larr;"))
- | "\\rarr" -> LITERAL (HTMLABLEM (FONT_UF, "\\rightarrow ", "&rarr;"))
- | "\\to" -> LITERAL (HTMLABLEM (FONT_UF, "\\to ", "&rarr;"))
- | "\\gets" -> LITERAL (HTMLABLEM (FONT_UF, "\\gets ", "&larr;"))
- | "\\rightarrow" -> LITERAL (HTMLABLEM (FONT_UF, "\\rightarrow ", "&rarr;"))
- | "\\longleftarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\longleftarrow ", "&larr;"))
- | "\\longrightarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\longrightarrow ", "&rarr;"))
- | "\\Larr" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftarrow ", "&lArr;"))
- | "\\lArr" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftarrow ", "&lArr;"))
- | "\\Leftarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftarrow ", "&lArr;"))
- | "\\Rarr" -> LITERAL (HTMLABLE (FONT_UF, "\\Rightarrow ", "&rArr;"))
- | "\\rArr" -> LITERAL (HTMLABLE (FONT_UF, "\\Rightarrow ", "&rArr;"))
- | "\\Rightarrow" -> LITERAL (HTMLABLEM (FONT_UF, "\\Rightarrow ", "&rArr;"))
- | "\\mapsto" -> LITERAL (HTMLABLE (FONT_UF, "\\mapsto ", "&rarr;"))
- | "\\longmapsto" -> LITERAL (HTMLABLE (FONT_UF, "\\longmapsto ", "&rarr;"))
- | "\\Longleftarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\Longleftarrow ", "&lArr;"))
- | "\\Longrightarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\Longrightarrow ", "&rArr;"))
- | "\\uarr" -> DELIMITER (HTMLABLEM (FONT_UF, "\\uparrow ", "&uarr;"))
- | "\\uparrow" -> DELIMITER (HTMLABLEM (FONT_UF, "\\uparrow ", "&uarr;"))
- | "\\uArr" -> DELIMITER (HTMLABLE (FONT_UF, "\\Uparrow ", "&uArr;"))
- | "\\Uarr" -> DELIMITER (HTMLABLE (FONT_UF, "\\Uparrow ", "&uArr;"))
- | "\\Uparrow" -> DELIMITER (HTMLABLE (FONT_UF, "\\Uparrow ", "&uArr;"))
- | "\\darr" -> DELIMITER (HTMLABLEM (FONT_UF, "\\downarrow ", "&darr;"))
- | "\\downarrow" -> DELIMITER (HTMLABLEM (FONT_UF, "\\downarrow ", "&darr;"))
- | "\\dArr" -> DELIMITER (HTMLABLE (FONT_UF, "\\Downarrow ", "&dArr;"))
- | "\\Darr" -> DELIMITER (HTMLABLE (FONT_UF, "\\Downarrow ", "&dArr;"))
- | "\\Downarrow" -> DELIMITER (HTMLABLE (FONT_UF, "\\Downarrow ", "&dArr;"))
- | "\\updownarrow" -> DELIMITER (TEX_ONLY "\\updownarrow ")
- | "\\Updownarrow" -> DELIMITER (TEX_ONLY "\\Updownarrow ")
- | "\\ulcorner" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\ulcorner "))
- | "\\urcorner" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\urcorner "))
- | "\\llcorner" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\llcorner "))
- | "\\lrcorner" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\lrcorner "))
- | "\\twoheadleftarrow" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\twoheadleftarrow "))
- | "\\twoheadrightarrow" -> (tex_use_ams (); DELIMITER (TEX_ONLY "\\twoheadrightarrow "))
- | "\\xleftarrow" -> (tex_use_ams (); FUN_AR1 "\\xleftarrow ")
- | "\\xrightarrow" -> (tex_use_ams (); FUN_AR1 "\\xrightarrow ")
- | "\\rightleftharpoons" -> DELIMITER (TEX_ONLY "\\rightleftharpoons ")
- | "\\leftrightarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\leftrightarrow ", "&harr;"))
- | "\\lrarr" -> LITERAL (HTMLABLE (FONT_UF, "\\leftrightarrow ", "&harr;"))
- | "\\harr" -> LITERAL (HTMLABLE (FONT_UF, "\\leftrightarrow ", "&harr;"))
- | "\\Leftrightarrow" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftrightarrow ", "&hArr;"))
- | "\\Lrarr" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftrightarrow ", "&hArr;"))
- | "\\Harr" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftrightarrow ", "&hArr;"))
- | "\\lrArr" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftrightarrow ", "&hArr;"))
- | "\\hAar" -> LITERAL (HTMLABLE (FONT_UF, "\\Leftrightarrow ", "&hArr;"))
- | "\\longleftrightarrow"->LITERAL (HTMLABLE (FONT_UF, "\\longleftrightarrow ", "&harr;"))
- | "\\Longleftrightarrow"->LITERAL (HTMLABLE (FONT_UF, "\\Longleftrightarrow ", "&harr;"))
- | "\\iff" -> LITERAL (HTMLABLE (FONT_UF, "\\iff ", "&harr;"))
- | "\\ll" -> LITERAL (TEX_ONLY "\\ll ")
- | "\\gg" -> LITERAL (TEX_ONLY "\\gg ")
- | "\\div" -> LITERAL (TEX_ONLY "\\div ")
- | "\\searrow" -> LITERAL (TEX_ONLY "\\searrow ")
- | "\\nearrow" -> LITERAL (TEX_ONLY "\\nearrow ")
- | "\\swarrow" -> LITERAL (TEX_ONLY "\\swarrow ")
- | "\\nwarrow" -> LITERAL (TEX_ONLY "\\nwarrow ")
- | "\\simeq" -> LITERAL (TEX_ONLY "\\simeq ")
- | "\\ast" -> LITERAL (TEX_ONLY "\\ast ")
- | "\\star" -> LITERAL (TEX_ONLY "\\star ")
- | "\\ell" -> LITERAL (TEX_ONLY "\\ell ")
- | "\\P" -> LITERAL (TEX_ONLY "\\P ")
- | "\\smile" -> LITERAL (TEX_ONLY "\\smile ")
- | "\\frown" -> LITERAL (TEX_ONLY "\\frown ")
- | "\\bigcap" -> LITERAL (TEX_ONLY "\\bigcap ")
- | "\\bigodot" -> LITERAL (TEX_ONLY "\\bigodot ")
- | "\\bigcup" -> LITERAL (TEX_ONLY "\\bigcup ")
- | "\\bigotimes" -> LITERAL (TEX_ONLY "\\bigotimes ")
- | "\\coprod" -> LITERAL (TEX_ONLY "\\coprod ")
- | "\\bigsqcup" -> LITERAL (TEX_ONLY "\\bigsqcup ")
- | "\\bigoplus" -> LITERAL (TEX_ONLY "\\bigoplus ")
- | "\\bigvee" -> LITERAL (TEX_ONLY "\\bigvee ")
- | "\\biguplus" -> LITERAL (TEX_ONLY "\\biguplus ")
- | "\\oint" -> LITERAL (TEX_ONLY "\\oint ")
- | "\\bigwedge" -> LITERAL (TEX_ONLY "\\bigwedge ")
- | "\\models" -> LITERAL (TEX_ONLY "\\models ")
- | "\\vdash" -> LITERAL (TEX_ONLY "\\vdash ")
- | "\\triangle" -> LITERAL (TEX_ONLY "\\triangle ")
- | "\\bowtie" -> LITERAL (TEX_ONLY "\\bowtie ")
- | "\\wr" -> LITERAL (TEX_ONLY "\\wr ")
- | "\\triangleleft" -> LITERAL (TEX_ONLY "\\triangleleft ")
- | "\\triangleright" -> LITERAL (TEX_ONLY "\\triangleright ")
- | "\\textvisiblespace" -> LITERAL (TEX_ONLY "\\textvisiblespace ")
- | "\\ker" -> LITERAL (HTMLABLEC(FONT_UFH,"\\ker ","ker"))
- | "\\lim" -> LITERAL (TEX_ONLY "\\lim ")
- | "\\limsup" -> LITERAL (TEX_ONLY "\\limsup ")
- | "\\liminf" -> LITERAL (TEX_ONLY "\\liminf ")
- | "\\sup" -> LITERAL (TEX_ONLY "\\sup ")
- | "\\Pr" -> LITERAL (TEX_ONLY "\\Pr ")
- | "\\hom" -> LITERAL (HTMLABLEC(FONT_UFH,"\\hom ","hom"))
- | "\\arg" -> LITERAL (HTMLABLEC(FONT_UFH,"\\arg ","arg"))
- | "\\dim" -> LITERAL (HTMLABLEC(FONT_UFH,"\\dim ","dim"))
- | "\\inf" -> LITERAL (TEX_ONLY "\\inf ")
- | "\\circ" -> LITERAL (TEX_ONLY "\\circ ")
- | "\\hbar" -> LITERAL (TEX_ONLY "\\hbar ")
- | "\\imath" -> LITERAL (TEX_ONLY "\\imath ")
- | "\\jmath" -> LITERAL (TEX_ONLY "\\jmath ")
- | "\\lnot" -> LITERAL (TEX_ONLY "\\lnot ")
- | "\\hookrightarrow" -> LITERAL (TEX_ONLY "\\hookrightarrow ")
- | "\\hookleftarrow" -> LITERAL (TEX_ONLY "\\hookleftarrow ")
- | "\\mp" -> LITERAL (TEX_ONLY "\\mp ")
- | "\\approx" -> LITERAL (HTMLABLE (FONT_UF, "\\approx ", "&asymp;"))
- | "\\propto" -> LITERAL (TEX_ONLY "\\propto ")
- | "\\flat" -> LITERAL (TEX_ONLY "\\flat ")
- | "\\sharp" -> LITERAL (TEX_ONLY "\\sharp ")
- | "\\natural" -> LITERAL (TEX_ONLY "\\natural ")
- | "\\int" -> LITERAL (HTMLABLE_BIG ("\\int ", "&int;"))
- | "\\sum" -> LITERAL (HTMLABLE_BIG ("\\sum ", "&sum;"))
- | "\\prod" -> LITERAL (HTMLABLE_BIG ("\\prod ", "&prod;"))
- | "\\vdots" -> LITERAL (TEX_ONLY "\\vdots ")
- | "\\limits" -> LITERAL (TEX_ONLY "\\limits ")
- | "\\nolimits" -> LITERAL (TEX_ONLY "\\nolimits ")
- | "\\top" -> LITERAL (TEX_ONLY "\\top ")
- | "\\sin" -> LITERAL (HTMLABLEC(FONT_UFH,"\\sin ","sin"))
- | "\\cos" -> LITERAL (HTMLABLEC(FONT_UFH,"\\cos ","cos"))
- | "\\sinh" -> LITERAL (HTMLABLEC(FONT_UFH,"\\sinh ","sinh"))
- | "\\cosh" -> LITERAL (HTMLABLEC(FONT_UFH,"\\cosh ","cosh"))
- | "\\tan" -> LITERAL (HTMLABLEC(FONT_UFH,"\\tan ","tan"))
- | "\\tanh" -> LITERAL (HTMLABLEC(FONT_UFH,"\\tanh ","tanh"))
- | "\\sec" -> LITERAL (HTMLABLEC(FONT_UFH,"\\sec ","sec"))
- | "\\csc" -> LITERAL (HTMLABLEC(FONT_UFH,"\\csc ","csc"))
- | "\\arcsin" -> LITERAL (HTMLABLEC(FONT_UFH,"\\arcsin ","arcsin"))
- | "\\arctan" -> LITERAL (HTMLABLEC(FONT_UFH,"\\arctan ","arctan"))
- | "\\arccos" -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{arccos}}","arccos")))
- | "\\arccot" -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{arccot}}","arccot")))
- | "\\arcsec" -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{arcsec}}","arcsec")))
- | "\\arccsc" -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{arccsc}}","arccsc")))
- | "\\sgn" -> (tex_use_ams (); LITERAL (HTMLABLEC(FONT_UFH,"\\mathop{\\mathrm{sgn}}","sgn")))
- | "\\cot" -> LITERAL (HTMLABLEC(FONT_UFH,"\\cot ","cot"))
- | "\\coth" -> LITERAL (HTMLABLEC(FONT_UFH,"\\coth ","coth"))
- | "\\log" -> LITERAL (HTMLABLEC(FONT_UFH,"\\log ", "log"))
- | "\\lg" -> LITERAL (HTMLABLEC(FONT_UFH,"\\lg ", "lg"))
- | "\\ln" -> LITERAL (HTMLABLEC(FONT_UFH,"\\ln ", "ln"))
- | "\\exp" -> LITERAL (HTMLABLEC(FONT_UFH,"\\exp ", "exp"))
- | "\\min" -> LITERAL (HTMLABLEC(FONT_UFH,"\\min ", "min"))
- | "\\max" -> LITERAL (HTMLABLEC(FONT_UFH,"\\max ", "max"))
- | "\\gcd" -> LITERAL (HTMLABLEC(FONT_UFH,"\\gcd ", "gcd"))
- | "\\deg" -> LITERAL (HTMLABLEC(FONT_UFH,"\\deg ", "deg"))
- | "\\det" -> LITERAL (HTMLABLEC(FONT_UFH,"\\det ", "det"))
- | "\\bullet" -> LITERAL (HTMLABLE (FONT_UFH, "\\bullet ", "&bull;"))
- | "\\bull" -> LITERAL (HTMLABLE (FONT_UFH, "\\bullet ", "&bull;"))
- | "\\angle" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\angle ", "&ang;")))
- | "\\dagger" -> LITERAL (HTMLABLEM(FONT_UFH, "\\dagger ", "&dagger;"))
- | "\\ddagger" -> LITERAL (HTMLABLEM(FONT_UFH, "\\ddagger ", "&Dagger;"))
- | "\\Dagger" -> LITERAL (HTMLABLEM(FONT_UFH, "\\ddagger ", "&Dagger;"))
- | "\\colon" -> LITERAL (HTMLABLEC(FONT_UFH, "\\colon ", ":"))
- | "\\Vert" -> DELIMITER (HTMLABLEM(FONT_UFH, "\\Vert ", "||"))
- | "\\vert" -> DELIMITER (HTMLABLEM(FONT_UFH, "\\vert ", "|"))
- | "\\wp" -> LITERAL (HTMLABLE (FONT_UF, "\\wp ", "&weierp;"))
- | "\\weierp" -> LITERAL (HTMLABLE (FONT_UF, "\\wp ", "&weierp;"))
- | "\\wedge" -> LITERAL (HTMLABLE (FONT_UF, "\\wedge ", "&and;"))
- | "\\and" -> LITERAL (HTMLABLE (FONT_UF, "\\land ", "&and;"))
- | "\\land" -> LITERAL (HTMLABLE (FONT_UF, "\\land ", "&and;"))
- | "\\vee" -> LITERAL (HTMLABLE (FONT_UF, "\\vee ", "&or;"))
- | "\\or" -> LITERAL (HTMLABLE (FONT_UF, "\\lor ", "&or;"))
- | "\\lor" -> LITERAL (HTMLABLE (FONT_UF, "\\lor ", "&or;"))
- | "\\sub" -> LITERAL (HTMLABLE (FONT_UF, "\\subset ", "&sub;"))
- | "\\supe" -> LITERAL (HTMLABLE (FONT_UF, "\\supseteq ", "&supe;"))
- | "\\sube" -> LITERAL (HTMLABLE (FONT_UF, "\\subseteq ", "&sube;"))
- | "\\supset" -> LITERAL (HTMLABLE (FONT_UF, "\\supset ", "&sup;"))
- | "\\subset" -> LITERAL (HTMLABLE (FONT_UF, "\\subset ", "&sub;"))
- | "\\supseteq" -> LITERAL (HTMLABLE (FONT_UF, "\\supseteq ", "&supe;"))
- | "\\subseteq" -> LITERAL (HTMLABLE (FONT_UF, "\\subseteq ", "&sube;"))
- | "\\sqsupset" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqsupset "))
- | "\\sqsubset" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqsubset "))
- | "\\sqsupseteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqsupseteq "))
- | "\\sqsubseteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqsubseteq "))
- | "\\perp" -> LITERAL (HTMLABLE (FONT_UF, "\\perp ", "&perp;"))
- | "\\bot" -> LITERAL (HTMLABLE (FONT_UF, "\\bot ", "&perp;"))
- | "\\lfloor" -> DELIMITER (HTMLABLE (FONT_UF, "\\lfloor ", "&lfloor;"))
- | "\\rfloor" -> DELIMITER (HTMLABLE (FONT_UF, "\\rfloor ", "&rfloor;"))
- | "\\lceil" -> DELIMITER (HTMLABLE (FONT_UF, "\\lceil ", "&lceil;"))
- | "\\rceil" -> DELIMITER (HTMLABLE (FONT_UF, "\\rceil ", "&rceil;"))
- | "\\lbrace" -> DELIMITER (HTMLABLEC(FONT_UFH, "\\lbrace ", "{"))
- | "\\rbrace" -> DELIMITER (HTMLABLEC(FONT_UFH, "\\rbrace ", "}"))
- | "\\infty" -> LITERAL (HTMLABLEM(FONT_UF, "\\infty ", "&infin;"))
- | "\\infin" -> LITERAL (HTMLABLEM(FONT_UF, "\\infty ", "&infin;"))
- | "\\isin" -> LITERAL (HTMLABLE (FONT_UF, "\\in ", "&isin;"))
- | "\\in" -> LITERAL (HTMLABLE (FONT_UF, "\\in ", "&isin;"))
- | "\\ni" -> LITERAL (HTMLABLE (FONT_UF, "\\ni ", "&ni;"))
- | "\\notin" -> LITERAL (HTMLABLE (FONT_UF, "\\notin ", "&notin;"))
- | "\\smallsetminus" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\smallsetminus "))
- | "\\And" -> (tex_use_ams (); LITERAL (HTMLABLEM(FONT_UFH, "\\And ", "&nbsp;&amp;&nbsp;")))
- | "\\forall" -> LITERAL (HTMLABLE (FONT_UFH, "\\forall ", "&forall;"))
- | "\\exists" -> LITERAL (HTMLABLE (FONT_UFH, "\\exists ", "&exist;"))
- | "\\exist" -> LITERAL (HTMLABLE (FONT_UFH, "\\exists ", "&exist;"))
- | "\\equiv" -> LITERAL (HTMLABLEM(FONT_UFH, "\\equiv ", "&equiv;"))
- | "\\ne" -> LITERAL (HTMLABLEM(FONT_UFH, "\\neq ", "&ne;"))
- | "\\neq" -> LITERAL (HTMLABLEM(FONT_UFH, "\\neq ", "&ne;"))
- | "\\Re" -> LITERAL (HTMLABLE (FONT_UF, "\\Re ", "&real;"))
- | "\\real" -> LITERAL (HTMLABLE (FONT_UF, "\\Re ", "&real;"))
- | "\\Im" -> LITERAL (HTMLABLE (FONT_UF, "\\Im ", "&image;"))
- | "\\image" -> LITERAL (HTMLABLE (FONT_UF, "\\Im ", "&image;"))
- | "\\prime" -> LITERAL (HTMLABLE (FONT_UFH,"\\prime ", "&prime;"))
- | "\\backslash" -> DELIMITER (HTMLABLEM(FONT_UFH,"\\backslash ", "\\"))
- | "\\setminus" -> LITERAL (HTMLABLEM(FONT_UFH,"\\setminus ", "\\"))
- | "\\times" -> LITERAL (HTMLABLEM(FONT_UFH,"\\times ", "&times;"))
- | "\\pm" -> LITERAL (HTMLABLEM(FONT_UFH,"\\pm ", "&plusmn;"))
- | "\\plusmn" -> LITERAL (HTMLABLEM(FONT_UFH,"\\pm ", "&plusmn;"))
- | "\\cdot" -> LITERAL (HTMLABLE (FONT_UFH,"\\cdot ", "&sdot;"))
- | "\\AA" -> LITERAL (HTMLABLE (FONT_UFH,"\\AA ", "&Aring;"))
- | "\\cdots" -> LITERAL (HTMLABLE (FONT_UFH,"\\cdots ", "&sdot;&sdot;&sdot;"))
- | "\\sdot" -> LITERAL (HTMLABLE (FONT_UFH,"\\cdot ", "&sdot;"))
- | "\\oplus" -> LITERAL (HTMLABLE (FONT_UF, "\\oplus ", "&oplus;"))
- | "\\otimes" -> LITERAL (HTMLABLE (FONT_UF, "\\otimes ", "&otimes;"))
- | "\\cap" -> LITERAL (HTMLABLEM(FONT_UF, "\\cap ", "&cap;"))
- | "\\cup" -> LITERAL (HTMLABLE (FONT_UF, "\\cup ", "&cup;"))
- | "\\uplus" -> LITERAL (TEX_ONLY "\\uplus ")
- | "\\sqcap" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqcap "))
- | "\\sqcup" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sqcup "))
- | "\\empty" -> LITERAL (HTMLABLE (FONT_UF, "\\emptyset ", "&empty;"))
- | "\\emptyset" -> LITERAL (HTMLABLE (FONT_UF, "\\emptyset ", "&empty;"))
- | "\\O" -> LITERAL (HTMLABLE (FONT_UF, "\\emptyset ", "&empty;"))
- | "\\S" -> LITERAL (HTMLABLEM(FONT_UFH,"\\S ", "&sect;"))
- | "\\sect" -> LITERAL (HTMLABLEM(FONT_UFH,"\\S ", "&sect;"))
- | "\\nabla" -> LITERAL (HTMLABLE (FONT_UF, "\\nabla ", "&nabla;"))
- | "\\geq" -> LITERAL (HTMLABLE (FONT_UFH,"\\geq ", "&ge;"))
- | "\\ge" -> LITERAL (HTMLABLE (FONT_UFH,"\\geq ", "&ge;"))
- | "\\leq" -> LITERAL (HTMLABLE (FONT_UFH,"\\leq ", "&le;"))
- | "\\le" -> LITERAL (HTMLABLE (FONT_UFH,"\\leq ", "&le;"))
- | "\\cong" -> LITERAL (HTMLABLE (FONT_UF, "\\cong ", "&cong;"))
- | "\\ang" -> LITERAL (HTMLABLE (FONT_UF, "\\angle ", "&ang;"))
- | "\\part" -> LITERAL (HTMLABLEM(FONT_UF, "\\partial ", "&part;"))
- | "\\partial" -> LITERAL (HTMLABLEM(FONT_UF, "\\partial ", "&part;"))
- | "\\ldots" -> LITERAL (HTMLABLEM(FONT_UFH,"\\ldots ", "..."))
- | "\\dots" -> LITERAL (HTMLABLEM(FONT_UFH,"\\dots ", "..."))
- | "\\quad" -> LITERAL (HTMLABLE (FONT_UF, "\\quad ","&nbsp;&nbsp;"))
- | "\\qquad" -> LITERAL (HTMLABLE (FONT_UF, "\\qquad ","&nbsp;&nbsp;&nbsp;&nbsp;"))
- | "\\mid" -> LITERAL (HTMLABLEM(FONT_UFH,"\\mid ", " | "))
- | "\\neg" -> LITERAL (HTMLABLEM(FONT_UFH,"\\neg ", "&not;"))
- | "\\langle" -> DELIMITER (HTMLABLE (FONT_UFH,"\\langle ","&lang;"))
- | "\\rangle" -> DELIMITER (HTMLABLE (FONT_UFH,"\\rangle ","&rang;"))
- | "\\lang" -> DELIMITER (HTMLABLE (FONT_UFH,"\\langle ","&lang;"))
- | "\\rang" -> DELIMITER (HTMLABLE (FONT_UFH,"\\rangle ","&rang;"))
- | "\\lbrack" -> DELIMITER (HTMLABLEC(FONT_UFH,"[","["))
- | "\\rbrack" -> DELIMITER (HTMLABLEC(FONT_UFH,"]","]"))
- | "\\surd" -> LITERAL (TEX_ONLY "\\surd ")
- | "\\ddots" -> LITERAL (TEX_ONLY "\\ddots ")
- | "\\clubs" -> LITERAL (TEX_ONLY "\\clubsuit ")
- | "\\clubsuit" -> LITERAL (TEX_ONLY "\\clubsuit ")
- | "\\spades" -> LITERAL (TEX_ONLY "\\spadesuit ")
- | "\\spadesuit" -> LITERAL (TEX_ONLY "\\spadesuit ")
- | "\\hearts" -> LITERAL (TEX_ONLY "\\heartsuit ")
- | "\\heartsuit" -> LITERAL (TEX_ONLY "\\heartsuit ")
- | "\\diamonds" -> LITERAL (TEX_ONLY "\\diamondsuit ")
- | "\\diamond" -> LITERAL (TEX_ONLY "\\diamond ")
- | "\\bigtriangleup" -> LITERAL (TEX_ONLY "\\bigtriangleup ")
- | "\\bigtriangledown" -> LITERAL (TEX_ONLY "\\bigtriangledown ")
- | "\\diamondsuit" -> LITERAL (TEX_ONLY "\\diamondsuit ")
- | "\\ominus" -> LITERAL (TEX_ONLY "\\ominus ")
- | "\\oslash" -> LITERAL (TEX_ONLY "\\oslash ")
- | "\\odot" -> LITERAL (TEX_ONLY "\\odot ")
- | "\\bigcirc" -> LITERAL (TEX_ONLY "\\bigcirc ")
- | "\\amalg" -> LITERAL (TEX_ONLY "\\amalg ")
- | "\\prec" -> LITERAL (TEX_ONLY "\\prec ")
- | "\\succ" -> LITERAL (TEX_ONLY "\\succ ")
- | "\\preceq" -> LITERAL (TEX_ONLY "\\preceq ")
- | "\\succeq" -> LITERAL (TEX_ONLY "\\succeq ")
- | "\\dashv" -> LITERAL (TEX_ONLY "\\dashv ")
- | "\\asymp" -> LITERAL (TEX_ONLY "\\asymp ")
- | "\\doteq" -> LITERAL (TEX_ONLY "\\doteq ")
- | "\\parallel" -> LITERAL (TEX_ONLY "\\parallel ")
- | "\\implies" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\implies ", "&rArr;")))
- | "\\mod" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mod ", "mod")))
- | "\\Diamond" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\Diamond ", "&loz;")))
- | "\\dotsb" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\dotsb ", "&sdot;&sdot;&sdot;")))
- | "\\dotsc" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\dotsc ", "...")))
- | "\\dotsi" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\dotsi ", "&sdot;&sdot;&sdot;")))
- | "\\dotsm" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\dotsm ", "&sdot;&sdot;&sdot;")))
- | "\\dotso" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UF, "\\dotso ", "...")))
- | "\\reals" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{R}", "<b>R</b>")))
- | "\\Reals" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{R}", "<b>R</b>")))
- | "\\R" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{R}", "<b>R</b>")))
- | "\\C" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{C}", "<b>C</b>")))
- | "\\cnums" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{C}", "<b>C</b>")))
- | "\\Complex" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{C}", "<b>C</b>")))
- | "\\Z" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{Z}", "<b>Z</b>")))
- | "\\natnums" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{N}", "<b>N</b>")))
- | "\\N" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{N}", "<b>N</b>")))
- | "\\Q" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\mathbb{Q}", "<b>Q</b>")))
- | "\\lVert" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\lVert ", "||")))
- | "\\rVert" -> (tex_use_ams (); LITERAL (HTMLABLE (FONT_UFH,"\\rVert ", "||")))
- | "\\nmid" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nmid "))
- | "\\lesssim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lesssim "))
- | "\\ngeq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ngeq "))
- | "\\smallsmile" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\smallsmile "))
- | "\\smallfrown" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\smallfrown "))
- | "\\nleftarrow" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nleftarrow "))
- | "\\nrightarrow" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nrightarrow "))
- | "\\trianglelefteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\trianglelefteq "))
- | "\\trianglerighteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\trianglerighteq "))
- | "\\square" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\square "))
- | "\\checkmark" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\checkmark "))
- | "\\supsetneq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\supsetneq "))
- | "\\subsetneq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\subsetneq "))
- | "\\Box" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Box "))
- | "\\nleq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nleq "))
- | "\\upharpoonright" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\upharpoonright "))
- | "\\restriction" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\upharpoonright "))
- | "\\upharpoonleft" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\upharpoonleft "))
- | "\\downharpoonright" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\downharpoonright "))
- | "\\downharpoonleft" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\downharpoonleft "))
- | "\\rightharpoonup" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightharpoonup "))
- | "\\rightharpoondown" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightharpoondown "))
- | "\\leftharpoonup" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftharpoonup "))
- | "\\leftharpoondown" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftharpoondown "))
- | "\\nless" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nless "))
- | "\\Vdash" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Vdash "))
- | "\\vDash" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\vDash "))
- | "\\varkappa" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varkappa "))
- | "\\digamma" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\digamma "))
- | "\\beth" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\beth "))
- | "\\daleth" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\daleth "))
- | "\\gimel" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gimel "))
- | "\\complement" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\complement "))
- | "\\eth" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\eth "))
- | "\\hslash" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\hslash "))
- | "\\mho" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\mho "))
- | "\\Finv" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Finv "))
- | "\\Game" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Game "))
- | "\\varlimsup" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varlimsup "))
- | "\\varliminf" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varliminf "))
- | "\\varinjlim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varinjlim "))
- | "\\varprojlim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varprojlim "))
- | "\\injlim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\injlim "))
- | "\\projlim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\projlim "))
- | "\\iint" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\iint "))
- | "\\iiint" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\iiint "))
- | "\\iiiint" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\iiiint "))
- | "\\varnothing" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varnothing "))
- | "\\left" -> LEFT
- | "\\right" -> RIGHT
- | "\\hat" -> FUN_AR1 "\\hat "
- | "\\hline" -> LITERAL (TEX_ONLY "\\hline ")
- | "\\vline" -> LITERAL (TEX_ONLY "\\vline ")
- | "\\widehat" -> LITERAL (TEX_ONLY "\\widehat ")
- | "\\overline" -> LITERAL (TEX_ONLY "\\overline ")
- | "\\overbrace" -> LITERAL (TEX_ONLY "\\overbrace ")
- | "\\underline" -> LITERAL (TEX_ONLY "\\underline ")
- | "\\underbrace" -> LITERAL (TEX_ONLY "\\underbrace ")
- | "\\overleftarrow" -> LITERAL (TEX_ONLY "\\overleftarrow ")
- | "\\overrightarrow" -> LITERAL (TEX_ONLY "\\overrightarrow ")
- | "\\overleftrightarrow"-> (tex_use_ams(); LITERAL (TEX_ONLY "\\overleftrightarrow "))
- | "\\check" -> FUN_AR1 "\\check "
- | "\\acute" -> FUN_AR1 "\\acute "
- | "\\grave" -> FUN_AR1 "\\grave "
- | "\\bar" -> FUN_AR1 "\\bar "
- | "\\vec" -> FUN_AR1 "\\vec "
- | "\\dot" -> FUN_AR1 "\\dot "
- | "\\ddot" -> FUN_AR1 "\\ddot "
- | "\\breve" -> FUN_AR1 "\\breve "
- | "\\tilde" -> FUN_AR1 "\\tilde "
- | "\\not" -> LITERAL (TEX_ONLY "\\not ")
- | "\\choose" -> FUN_INFIX "\\choose "
- | "\\atop" -> FUN_INFIX "\\atop "
- | "\\binom" -> (tex_use_ams (); FUN_AR2 "\\binom ")
- | "\\dbinom" -> (tex_use_ams (); FUN_AR2 "\\dbinom ")
- | "\\tbinom" -> (tex_use_ams (); FUN_AR2 "\\tbinom ")
- | "\\stackrel" -> FUN_AR2 "\\stackrel "
- | "\\sideset" -> (tex_use_ams (); FUN_AR2nb "\\sideset ")
- | "\\underset" -> (tex_use_ams (); FUN_AR2 "\\underset ")
- | "\\overset" -> (tex_use_ams (); FUN_AR2 "\\overset ")
- | "\\frac" -> FUN_AR2h ("\\frac ", fun num den -> Html.html_render [num], "<hr style=\"{background: black}\"/>", Html.html_render [den])
- | "\\dfrac" -> (tex_use_ams () ; FUN_AR2 "\\dfrac ")
- | "\\tfrac" -> (tex_use_ams () ; FUN_AR2h ("\\tfrac ", fun num den -> Html.html_render [num], "<hr style=\"background: black\">", Html.html_render [den]))
- | "\\cfrac" -> (tex_use_ams (); FUN_AR2h ("\\cfrac ", fun num den -> Html.html_render [num], "<hr style=\"{background: black}\">", Html.html_render [den]))
- | "\\over" -> FUN_INFIXh ("\\over ", fun num den -> Html.html_render num, "<hr style=\"{background: black}\"/>", Html.html_render den)
- | "\\sqrt" -> FUN_AR1 "\\sqrt "
- | "\\cancel" -> FUN_AR1 "\\cancel "
- | "\\bcancel" -> FUN_AR1 "\\bcancel "
- | "\\xcancel" -> FUN_AR1 "\\xcancel "
- | "\\cancelto" -> FUN_AR2 "\\cancelto "
- | "\\pmod" -> FUN_AR1hl ("\\pmod ", ("(mod ", ")"))
- | "\\bmod" -> FUN_AR1hl ("\\bmod ", ("mod ", ""))
- | "\\emph" -> FUN_AR1 "\\emph "
- | "\\texttt" -> FUN_AR1 "\\texttt "
- | "\\textbf" -> FUN_AR1 "\\textbf "
- | "\\textsf" -> FUN_AR1 "\\textsf "
- | "\\textit" -> FUN_AR1hf ("\\textit ", FONTFORCE_IT)
- | "\\textrm" -> FUN_AR1hf ("\\textrm ", FONTFORCE_RM)
- | "\\rm" -> DECLh ("\\rm ", FONTFORCE_RM)
- | "\\it" -> DECLh ("\\it ", FONTFORCE_IT)
- | "\\cal" -> DECL "\\cal "
- | "\\displaystyle" -> LITERAL (TEX_ONLY "\\displaystyle ")
- | "\\scriptstyle" -> LITERAL (TEX_ONLY "\\scriptstyle ")
- | "\\textstyle" -> LITERAL (TEX_ONLY "\\textstyle ")
- | "\\scriptscriptstyle"-> LITERAL (TEX_ONLY "\\scriptscriptstyle ")
- | "\\bf" -> DECL "\\bf "
- | "\\big" -> BIG "\\big "
- | "\\Big" -> BIG "\\Big "
- | "\\bigg" -> BIG "\\bigg "
- | "\\Bigg" -> BIG "\\Bigg "
- | "\\bigl" -> (tex_use_ams ();BIG "\\bigl ")
- | "\\bigr" -> (tex_use_ams ();BIG "\\bigr ")
- | "\\Bigl" -> (tex_use_ams ();BIG "\\Bigl ")
- | "\\Bigr" -> (tex_use_ams ();BIG "\\Bigr ")
- | "\\biggl" -> (tex_use_ams ();BIG "\\biggl ")
- | "\\biggr" -> (tex_use_ams ();BIG "\\biggr ")
- | "\\Biggl" -> (tex_use_ams ();BIG "\\Biggl ")
- | "\\Biggr" -> (tex_use_ams ();BIG "\\Biggr ")
- | "\\vartriangle" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\vartriangle "))
- | "\\triangledown" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\triangledown "))
- | "\\lozenge" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lozenge "))
- | "\\circledS" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circledS "))
- | "\\measuredangle" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\measuredangle "))
- | "\\nexists" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nexists "))
- | "\\Bbbk" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Bbbk "))
- | "\\backprime" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\backprime "))
- | "\\blacktriangle" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\blacktriangle "))
- | "\\blacktriangledown"-> (tex_use_ams (); LITERAL (TEX_ONLY "\\blacktriangledown "))
- | "\\blacksquare" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\blacksquare "))
- | "\\blacklozenge" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\blacklozenge "))
- | "\\bigstar" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\bigstar "))
- | "\\sphericalangle" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\sphericalangle "))
- | "\\diagup" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\diagup "))
- | "\\diagdown" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\diagdown "))
- | "\\dotplus" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\dotplus "))
- | "\\Cap" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Cap "))
- | "\\doublecap" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Cap "))
- | "\\Cup" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Cup "))
- | "\\doublecup" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Cup "))
- | "\\barwedge" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\barwedge "))
- | "\\veebar" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\veebar "))
- | "\\doublebarwedge" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\doublebarwedge "))
- | "\\boxminus" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\boxminus "))
- | "\\boxtimes" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\boxtimes "))
- | "\\boxdot" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\boxdot "))
- | "\\boxplus" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\boxplus "))
- | "\\divideontimes" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\divideontimes "))
- | "\\ltimes" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ltimes "))
- | "\\rtimes" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rtimes "))
- | "\\leftthreetimes" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftthreetimes "))
- | "\\rightthreetimes" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightthreetimes "))
- | "\\curlywedge" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\curlywedge "))
- | "\\curlyvee" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\curlyvee "))
- | "\\circleddash" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circleddash "))
- | "\\circledast" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circledast "))
- | "\\circledcirc" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circledcirc "))
- | "\\centerdot" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\centerdot "))
- | "\\intercal" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\intercal "))
- | "\\leqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leqq "))
- | "\\leqslant" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leqslant "))
- | "\\eqslantless" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\eqslantless "))
- | "\\lessapprox" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lessapprox "))
- | "\\approxeq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\approxeq "))
- | "\\lessdot" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lessdot "))
- | "\\lll" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lll "))
- | "\\lessgtr" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lessgtr "))
- | "\\lesseqgtr" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lesseqgtr "))
- | "\\lesseqqgtr" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lesseqqgtr "))
- | "\\doteqdot" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\doteqdot "))
- | "\\Doteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\doteqdot "))
- | "\\risingdotseq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\risingdotseq "))
- | "\\fallingdotseq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\fallingdotseq "))
- | "\\backsim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\backsim "))
- | "\\backsimeq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\backsimeq "))
- | "\\subseteqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\subseteqq "))
- | "\\Subset" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Subset "))
- | "\\preccurlyeq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\preccurlyeq "))
- | "\\curlyeqprec" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\curlyeqprec "))
- | "\\precsim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\precsim "))
- | "\\precapprox" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\precapprox "))
- | "\\vartriangleleft" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\vartriangleleft "))
- | "\\Vvdash" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Vvdash "))
- | "\\bumpeq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\bumpeq "))
- | "\\Bumpeq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Bumpeq "))
- | "\\geqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\geqq "))
- | "\\geqslant" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\geqslant "))
- | "\\eqslantgtr" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\eqslantgtr "))
- | "\\gtrsim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gtrsim "))
- | "\\gtrapprox" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gtrapprox "))
- | "\\eqsim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\eqsim "))
- | "\\gtrdot" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gtrdot "))
- | "\\ggg" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ggg "))
- | "\\gggtr" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ggg "))
- | "\\gtrless" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gtrless "))
- | "\\gtreqless" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gtreqless "))
- | "\\gtreqqless" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gtreqqless "))
- | "\\eqcirc" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\eqcirc "))
- | "\\circeq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circeq "))
- | "\\triangleq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\triangleq "))
- | "\\thicksim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\thicksim "))
- | "\\thickapprox" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\thickapprox "))
- | "\\supseteqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\supseteqq "))
- | "\\Supset" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Supset "))
- | "\\succcurlyeq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\succcurlyeq "))
- | "\\curlyeqsucc" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\curlyeqsucc "))
- | "\\succsim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\succsim "))
- | "\\succapprox" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\succapprox "))
- | "\\vartriangleright" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\vartriangleright "))
- | "\\shortmid" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\shortmid "))
- | "\\shortparallel" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\shortparallel "))
- | "\\between" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\between "))
- | "\\pitchfork" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\pitchfork "))
- | "\\varpropto" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varpropto "))
- | "\\blacktriangleleft"-> (tex_use_ams (); LITERAL (TEX_ONLY "\\blacktriangleleft "))
- | "\\therefore" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\therefore "))
- | "\\backepsilon" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\backepsilon "))
- | "\\blacktriangleright"-> (tex_use_ams (); LITERAL (TEX_ONLY "\\blacktriangleright "))
- | "\\because" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\because "))
- | "\\nleqslant" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nleqslant "))
- | "\\nleqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nleqq "))
- | "\\lneq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lneq "))
- | "\\lneqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lneqq "))
- | "\\lvertneqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lvertneqq "))
- | "\\lnsim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lnsim "))
- | "\\lnapprox" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\lnapprox "))
- | "\\nprec" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nprec "))
- | "\\npreceq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\npreceq "))
- | "\\precneqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\precneqq "))
- | "\\precnsim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\precnsim "))
- | "\\precnapprox" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\precnapprox "))
- | "\\nsim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsim "))
- | "\\nshortmid" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nshortmid "))
- | "\\nvdash" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nvdash "))
- | "\\nVdash" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nVdash "))
- | "\\ntriangleleft" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ntriangleleft "))
- | "\\ntrianglelefteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ntrianglelefteq "))
- | "\\nsubseteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsubseteq "))
- | "\\nsubseteqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsubseteqq "))
- | "\\varsubsetneq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varsubsetneq "))
- | "\\subsetneqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\subsetneqq "))
- | "\\varsubsetneqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varsubsetneqq "))
- | "\\ngtr" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ngtr "))
- | "\\ngeqslant" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ngeqslant "))
- | "\\ngeqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ngeqq "))
- | "\\gneq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gneq "))
- | "\\gneqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gneqq "))
- | "\\gvertneqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gvertneqq "))
- | "\\gnsim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gnsim "))
- | "\\gnapprox" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\gnapprox "))
- | "\\nsucc" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsucc "))
- | "\\nsucceq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsucceq "))
- | "\\succneqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\succneqq "))
- | "\\succnsim" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\succnsim "))
- | "\\succnapprox" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\succnapprox "))
- | "\\ncong" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ncong "))
- | "\\nshortparallel" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nshortparallel "))
- | "\\nparallel" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nparallel "))
- | "\\nvDash" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nvDash "))
- | "\\nVDash" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nVDash "))
- | "\\ntriangleright" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ntriangleright "))
- | "\\ntrianglerighteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\ntrianglerighteq "))
- | "\\nsupseteq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsupseteq "))
- | "\\nsupseteqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nsupseteqq "))
- | "\\varsupsetneq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varsupsetneq "))
- | "\\supsetneqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\supsetneqq "))
- | "\\varsupsetneqq" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\varsupsetneqq "))
- | "\\leftleftarrows" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftleftarrows "))
- | "\\leftrightarrows" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftrightarrows "))
- | "\\Lleftarrow" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Lleftarrow "))
- | "\\leftarrowtail" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftarrowtail "))
- | "\\looparrowleft" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\looparrowleft "))
- | "\\leftrightharpoons"-> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftrightharpoons "))
- | "\\curvearrowleft" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\curvearrowleft "))
- | "\\circlearrowleft" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circlearrowleft "))
- | "\\Lsh" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Lsh "))
- | "\\upuparrows" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\upuparrows "))
- | "\\rightrightarrows" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightrightarrows "))
- | "\\rightleftarrows" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightleftarrows "))
- | "\\Rrightarrow" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Rrightarrow "))
- | "\\rightarrowtail" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightarrowtail "))
- | "\\looparrowright" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\looparrowright "))
- | "\\curvearrowright" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\curvearrowright "))
- | "\\circlearrowright" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\circlearrowright "))
- | "\\Rsh" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\Rsh "))
- | "\\downdownarrows" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\downdownarrows "))
- | "\\multimap" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\multimap "))
- | "\\leftrightsquigarrow"-> (tex_use_ams (); LITERAL (TEX_ONLY "\\leftrightsquigarrow "))
- | "\\rightsquigarrow" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\rightsquigarrow "))
- | "\\nLeftarrow" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nLeftarrow "))
- | "\\nleftrightarrow" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nleftrightarrow "))
- | "\\nRightarrow" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nRightarrow "))
- | "\\nLeftrightarrow" -> (tex_use_ams (); LITERAL (TEX_ONLY "\\nLeftrightarrow "))
- | "\\mathit" -> (tex_use_ams (); FUN_AR1hf ("\\mathit ", FONTFORCE_IT))
- | "\\mathrm" -> (tex_use_ams (); FUN_AR1hf ("\\mathrm ", FONTFORCE_RM))
- | "\\mathord" -> (tex_use_ams (); FUN_AR1 "\\mathord ")
- | "\\mathop" -> (tex_use_ams (); FUN_AR1 "\\mathop ")
- | "\\mathbin" -> (tex_use_ams (); FUN_AR1 "\\mathbin ")
- | "\\mathrel" -> (tex_use_ams (); FUN_AR1 "\\mathrel ")
- | "\\mathopen" -> (tex_use_ams (); FUN_AR1 "\\mathopen ")
- | "\\mathclose" -> (tex_use_ams (); FUN_AR1 "\\mathclose ")
- | "\\mathpunct" -> (tex_use_ams (); FUN_AR1 "\\mathpunct ")
- | "\\boldsymbol" -> (tex_use_ams (); FUN_AR1 "\\boldsymbol ")
- | "\\bold" -> (tex_use_ams (); FUN_AR1 "\\mathbf ")
- | "\\Bbb" -> (tex_use_ams (); FUN_AR1 "\\mathbb ")
- | "\\mathbf" -> (tex_use_ams (); FUN_AR1 "\\mathbf ")
- | "\\mathsf" -> (tex_use_ams (); FUN_AR1 "\\mathsf ")
- | "\\mathcal" -> (tex_use_ams (); FUN_AR1 "\\mathcal ")
- | "\\mathbb" -> (tex_use_ams (); FUN_AR1 "\\mathbb ")
- | "\\mathtt" -> (tex_use_ams (); FUN_AR1 "\\mathtt ")
- | "\\mathfrak" -> (tex_use_ams (); FUN_AR1 "\\mathfrak ")
- | "\\operatorname" -> (tex_use_ams (); FUN_AR1 "\\operatorname ")
- | "\\text" -> raise (Failure "malformatted \\text")
- | "\\mbox" -> raise (Failure "malformatted \\mbox")
- | "\\vbox" -> raise (Failure "malformatted \\vbox")
- | "\\hbox" -> raise (Failure "malformatted \\hbox")
- | "\\color" -> (tex_use_color (); LITERAL (TEX_ONLY "\\color"))
- | "\\pagecolor" -> (tex_use_color (); LITERAL (TEX_ONLY "\\pagecolor"))
- | "\\definecolor" -> (tex_use_color (); LITERAL (TEX_ONLY "\\definecolor"))
- | s -> raise (Illegal_tex_function s)
diff --git a/math/texutil.mli b/math/texutil.mli
deleted file mode 100644
index 99d0e4ec..00000000
--- a/math/texutil.mli
+++ /dev/null
@@ -1,11 +0,0 @@
-val render_tex : Tex.t -> string
-
-val set_encoding : string -> unit
-val tex_use_nonascii: unit -> unit
-val tex_use_ams: unit -> unit
-
-val get_preface : unit -> string
-val get_footer : unit -> string
-
-exception Illegal_tex_function of string
-val find: string -> Parser.token
diff --git a/math/texvc.ml b/math/texvc.ml
deleted file mode 100644
index 33a14b7b..00000000
--- a/math/texvc.ml
+++ /dev/null
@@ -1,58 +0,0 @@
-(* vim: set sw=8 ts=8 et: *)
-exception LexerException of string
-
-(* *)
-let lexer_token_safe lexbuf =
- try Lexer.token lexbuf
- with Failure s -> raise (LexerException s)
-
-(* *)
-let render tmppath finalpath tree backcolor =
- let outtex = Util.mapjoin Texutil.render_tex tree in
- let md5 = Digest.to_hex (Digest.string outtex) in
- begin
- let mathml = Mathml.render tree
- and html = Html.render tree
- in print_string (match (html,!Html.conservativeness,mathml) with
- None,_,None -> "+" ^ md5
- | Some h,Html.CONSERVATIVE,None -> "c" ^ md5 ^ h
- | Some h,Html.MODERATE,None -> "m" ^ md5 ^ h
- | Some h,Html.LIBERAL,None -> "l" ^ md5 ^ h
- | Some h,Html.CONSERVATIVE,Some m -> "C" ^ md5 ^ h ^ "\000" ^ m
- | Some h,Html.MODERATE,Some m -> "M" ^ md5 ^ h ^ "\000" ^ m
- | Some h,Html.LIBERAL,Some m -> "L" ^ md5 ^ h ^ "\000" ^ m
- | None,_,Some m -> "X" ^ md5 ^ m
- );
- Render.render tmppath finalpath outtex md5 backcolor
- end
-
-(* TODO: document
- * Arguments:
- * 1st :
- * 2nd :
- * 3rd :
- * 4th : encoding (Default: UTF-8)
- * 5th : color (Default: rgb 1.0 1.0 1.0)
- *
- * Output one character:
- * S : Parsing error
- * E : Lexer exception raised
- * F : TeX function not recognized
- * - : Generic/Default failure code. Might be an invalid argument,
- * output file already exist, a problem with an external
- * command ...
- * *)
-let _ =
- Texutil.set_encoding (try Sys.argv.(4) with _ -> "UTF-8");
- try render Sys.argv.(1) Sys.argv.(2) (
- Parser.tex_expr lexer_token_safe (
- Lexing.from_string Sys.argv.(3))
- ) (try Sys.argv.(5) with _ -> "rgb 1.0 1.0 1.0")
- with Parsing.Parse_error -> print_string "S"
- | LexerException _ -> print_string "E"
- | Texutil.Illegal_tex_function s -> print_string ("F" ^ s)
- | Util.FileAlreadyExists -> print_string "-"
- | Invalid_argument _ -> print_string "-"
- | Failure _ -> print_string "-"
- | Render.ExternalCommandFailure s -> ()
- | _ -> print_string "-"
diff --git a/math/texvc_cgi.ml b/math/texvc_cgi.ml
deleted file mode 100644
index 2e6079fe..00000000
--- a/math/texvc_cgi.ml
+++ /dev/null
@@ -1,62 +0,0 @@
-open Netcgi;;
-open Netcgi_types;;
-open Netcgi_env;;
-open Netchannels;;
-
-let cgi = new Netcgi.std_activation ()
-let out = cgi # output # output_string
-let math = cgi # argument_value ~default:"" "math"
-let tmppath = "/home/taw/public_html/wiki/tmp/"
-let finalpath = "/home/taw/public_html/wiki/math/"
-let finalurl = "http://wroclaw.taw.pl.eu.org/~taw/wiki/math/"
-;;
-
-let h_header = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0//EN\""^
- " \"http://www.w3.org/TR/REC-html40/strict.dtd\">\n"^
- "<html><head><title>texvc</title></head><body>"^
- "<form method=post action=\"http://wroclaw.taw.pl.eu.org/~taw/cgi-bin/newcodebase/math/texvc_cgi\">"^
- "<textarea name='math' rows=10 cols=80>"
-let h_middle = "</textarea><br /><input type=submit value=\"Preview\" name='preview'></form>"
-let h_footer = "</body></html>\n"
-
-let render tmppath finalpath tree =
- let outtex = Texutil.mapjoin Texutil.print tree in
- let md5 = Digest.to_hex (Digest.string outtex) in
- begin
- out "<h3>TeX</h3>";
- out outtex; (* <, & and > should be protected *)
- (try out ("<h3>HTML</h3>" ^ (Texutil.html_render tree))
- with _ -> out "<h3>HTML could not be rendered</h3>");
- try Render.render tmppath finalpath outtex md5;
- out ("<h3>Image:</h3><img src=\""^finalurl^md5^".png\">")
- with Util.FileAlreadyExists -> out ("<h3>Image:</h3><img src=\""^finalurl^md5^".png\">")
- | Failure s -> out ("<h3>Other failure: " ^ s ^ "</h3>")
- | Render.ExternalCommandFailure "latex" -> out "<h3>latex failed</h3>"
- | Render.ExternalCommandFailure "dvips" -> out "<h3>dvips failed</h3>"
- | _ -> out "<h3>Other failure</h3>"
- end
-;;
-
-cgi#set_header ();;
-
-out h_header;;
-out math;;
-out h_middle;;
-
-exception LexerException of string
-let lexer_token_safe lexbuf =
- try Lexer.token lexbuf
- with Failure s -> raise (LexerException s)
-;;
-if math = ""
-then ()
-else try
- render tmppath finalpath (Parser.tex_expr lexer_token_safe (Lexing.from_string math))
- with Parsing.Parse_error -> out "<h3>Parse error</h3>"
- | LexerException s -> out "<h3>Lexing failure</h3>"
- | Texutil.Illegal_tex_function s -> out ("<h3>Illegal TeX function: " ^ s ^ "</h3>")
- | Failure s -> out ("<h3>Other failure: " ^ s ^ "</h3>")
- | _ -> out "<h3>Other failure</h3>"
-;;
-
-out h_footer
diff --git a/math/texvc_test.ml b/math/texvc_test.ml
deleted file mode 100644
index cd3a1dfa..00000000
--- a/math/texvc_test.ml
+++ /dev/null
@@ -1,24 +0,0 @@
-exception LexerException of string
-let lexer_token_safe lexbuf =
- try Lexer.token lexbuf
- with Failure s -> raise (LexerException s)
-
-let rec foo () =
- try
- let line = input_line stdin in
- (try
- let tree = Parser.tex_expr lexer_token_safe (Lexing.from_string line) in
- (match Html.render tree with
- Some _ -> print_string "$^\n"
- | None -> print_string "$_\n";
- )
- with
- Texutil.Illegal_tex_function s -> print_string ("$T" ^ s ^ " " ^ line ^ "\n")
- | LexerException s -> print_string ("$L" ^ line ^ "\n")
- | _ -> print_string ("$ " ^ line ^ "\n"));
- flush stdout;
- foo ();
- with
- End_of_file -> ()
-;;
-foo ();;
diff --git a/math/texvc_tex.ml b/math/texvc_tex.ml
deleted file mode 100644
index 30c0f671..00000000
--- a/math/texvc_tex.ml
+++ /dev/null
@@ -1,3 +0,0 @@
-Texutil.set_encoding (try Sys.argv.(2) with _ -> "UTF-8");
-try print_string (Util.mapjoin Texutil.render_tex (Parser.tex_expr Lexer.token (Lexing.from_string Sys.argv.(1))))
-with _ -> ()
diff --git a/math/util.ml b/math/util.ml
deleted file mode 100644
index ece01605..00000000
--- a/math/util.ml
+++ /dev/null
@@ -1,26 +0,0 @@
-(* vim: set sw=8 ts=8 et: *)
-
-(* TODO document *)
-let mapjoin f l = (List.fold_left (fun a b -> a ^ (f b)) "" l)
-
-(* TODO document *)
-let mapjoine e f = function
- [] -> ""
- | h::t -> (List.fold_left (fun a b -> a ^ e ^ (f b)) (f h) t)
-
-(* Exception used by open_out_unless_exists below *)
-exception FileAlreadyExists
-
-(* Wrapper which raise an exception when output path already exist *)
-let open_out_unless_exists path =
- if Sys.file_exists path
- then raise FileAlreadyExists
- else open_out path
-
-(* *)
-let run_in_other_directory tmppath cmd =
- let prevdir = Sys.getcwd () in(
- Sys.chdir tmppath;
- let retval = Sys.command cmd in
- (Sys.chdir prevdir; retval)
- )
diff --git a/mw-config/index.php b/mw-config/index.php
index c00a0d01..1e6d0e4f 100644
--- a/mw-config/index.php
+++ b/mw-config/index.php
@@ -9,7 +9,11 @@ define( 'MW_CONFIG_CALLBACK', 'Installer::overrideConfig' );
define( 'MEDIAWIKI_INSTALL', true );
chdir( dirname( dirname( __FILE__ ) ) );
-require( dirname( dirname( __FILE__ ) ) . '/includes/WebStart.php' );
+if ( isset( $_SERVER['MW_COMPILED'] ) ) {
+ require ( 'phase3/includes/WebStart.php' );
+} else {
+ require( dirname( dirname( __FILE__ ) ) . '/includes/WebStart.php' );
+}
wfInstallerMain();
diff --git a/opensearch_desc.php b/opensearch_desc.php
index cc6c4719..85ec5801 100644
--- a/opensearch_desc.php
+++ b/opensearch_desc.php
@@ -51,7 +51,7 @@ print Xml::element( 'Image',
'height' => 16,
'width' => 16,
'type' => 'image/x-icon' ),
- wfExpandUrl( $wgFavicon ) );
+ wfExpandUrl( $wgFavicon , PROTO_CURRENT ) );
$urls = array();
@@ -62,7 +62,7 @@ $searchPage = SpecialPage::getTitleFor( 'Search' );
$urls[] = array(
'type' => 'text/html',
'method' => 'get',
- 'template' => $searchPage->getFullURL( 'search={searchTerms}' ) );
+ 'template' => $searchPage->getCanonicalURL( 'search={searchTerms}' ) );
if( $wgEnableAPI ) {
// JSON interface for search suggestions.
@@ -86,6 +86,6 @@ foreach( $urls as $attribs ) {
// sends you to the domain root if you hit "enter" with an empty
// search box.
print Xml::element( 'moz:SearchForm', null,
- $searchPage->getFullUrl() );
+ $searchPage->getCanonicalURL() );
print '</OpenSearchDescription>';
diff --git a/php5.php5 b/php5.php5
deleted file mode 100644
index 51e077f0..00000000
--- a/php5.php5
+++ /dev/null
@@ -1,9 +0,0 @@
-<?php
-
-/**
- * Test for *.php5 capability in webserver
- * Used by includes/templates/PHP4.php
- */
-if ( version_compare( phpversion(), '5.1.0' ) >= 0 ) {
- echo 'y'.'e'.'s';
-}
diff --git a/profileinfo.php b/profileinfo.php
index b8dc15b8..3117db31 100644
--- a/profileinfo.php
+++ b/profileinfo.php
@@ -28,8 +28,14 @@
ini_set( 'zlib.output_compression', 'off' );
$wgEnableProfileInfo = $wgProfileToDatabase = false;
+if ( isset( $_SERVER['MW_COMPILED'] ) ) {
+ require ( 'phase3/includes/WebStart.php' );
+} else {
+ require ( dirname( __FILE__ ) . '/includes/WebStart.php' );
+}
+
-require_once( './includes/WebStart.php' );
+header( 'Content-Type: text/html; charset=utf-8' );
?>
<html>
diff --git a/redirect.php b/redirect.php
index 699926ec..c0a16021 100644
--- a/redirect.php
+++ b/redirect.php
@@ -6,8 +6,12 @@
*
* @file
*/
+if ( isset( $_SERVER['MW_COMPILED'] ) ) {
+ require ( 'phase3/includes/WebStart.php' );
+} else {
+ require ( dirname( __FILE__ ) . '/includes/WebStart.php' );
+}
-require_once( './includes/WebStart.php' );
global $wgArticlePath;
$page = $wgRequest->getVal( 'wpDropdown' );
diff --git a/resources/Resources.php b/resources/Resources.php
index 5c1ade8d..7549b9c9 100644
--- a/resources/Resources.php
+++ b/resources/Resources.php
@@ -5,14 +5,19 @@ return array(
/* Special resources who have their own classes */
'site' => array( 'class' => 'ResourceLoaderSiteModule' ),
+ 'noscript' => array( 'class' => 'ResourceLoaderNoscriptModule' ),
'startup' => array( 'class' => 'ResourceLoaderStartUpModule' ),
'user' => array( 'class' => 'ResourceLoaderUserModule' ),
+ 'user.groups' => array( 'class' => 'ResourceLoaderUserGroupsModule' ),
'user.options' => array( 'class' => 'ResourceLoaderUserOptionsModule' ),
+ 'user.tokens' => array( 'class' => 'ResourceLoaderUserTokensModule' ),
+ 'filepage' => array( 'class' => 'ResourceLoaderFilePageModule' ),
/* Skins */
'skins.vector' => array(
'styles' => array( 'vector/screen.css' => array( 'media' => 'screen' ) ),
+ 'scripts' => 'vector/vector.js',
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
),
@@ -23,6 +28,16 @@ return array(
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
),
+ 'skins.archlinux' => array(
+ 'styles' => array(
+ 'archlinux/main.css' => array( 'media' => 'screen' ),
+ 'archlinux/archnavbar.css' => array( 'media' => 'screen' ),
+ 'archlinux/arch.css' => array( 'media' => 'screen' ),
+ 'archlinux/print.css' => array( 'media' => 'print' ),
+ ),
+ 'remoteBasePath' => $GLOBALS['wgStylePath'],
+ 'localBasePath' => $GLOBALS['wgStyleDirectory'],
+ ),
'skins.simple' => array(
'styles' => array( 'simple/main.css' => array( 'media' => 'screen' ) ),
'remoteBasePath' => $GLOBALS['wgStylePath'],
@@ -34,18 +49,20 @@ return array(
'localBasePath' => $GLOBALS['wgStyleDirectory'],
),
'skins.modern' => array(
- 'styles' => array( 'modern/main.css' => array( 'media' => 'screen' ),
- 'modern/print.css' => array( 'media' => 'print' ) ),
+ 'styles' => array(
+ 'modern/main.css' => array( 'media' => 'screen' ),
+ 'modern/print.css' => array( 'media' => 'print' ),
+ ),
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
),
'skins.cologneblue' => array(
- 'styles' => array( 'common/cologneblue.css' => array( 'media' => 'screen' ) ),
+ 'styles' => array( 'cologneblue/screen.css' => array( 'media' => 'screen' ) ),
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
),
'skins.nostalgia' => array(
- 'styles' => array( 'common/nostalgia.css' => array( 'media' => 'screen' ) ),
+ 'styles' => array( 'nostalgia/screen.css' => array( 'media' => 'screen' ) ),
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
),
@@ -65,41 +82,84 @@ return array(
/* jQuery Plugins */
'jquery.async' => array(
- 'scripts' => 'resources/jquery/jquery.async.js'
+ 'scripts' => 'resources/jquery/jquery.async.js',
+ ),
+ 'jquery.appear' => array(
+ 'scripts' => 'resources/jquery/jquery.appear.js',
),
'jquery.autoEllipsis' => array(
'scripts' => 'resources/jquery/jquery.autoEllipsis.js',
'dependencies' => 'jquery.highlightText',
),
+ 'jquery.byteLength' => array(
+ 'scripts' => 'resources/jquery/jquery.byteLength.js',
+ ),
+ 'jquery.byteLimit' => array(
+ 'scripts' => 'resources/jquery/jquery.byteLimit.js',
+ 'dependencies' => 'jquery.byteLength',
+ ),
'jquery.checkboxShiftClick' => array(
- 'scripts' => 'resources/jquery/jquery.checkboxShiftClick.js'
+ 'scripts' => 'resources/jquery/jquery.checkboxShiftClick.js',
),
'jquery.client' => array(
'scripts' => 'resources/jquery/jquery.client.js',
),
'jquery.collapsibleTabs' => array(
- 'scripts' => 'resources/jquery/jquery.collapsibleTabs.js'
+ 'scripts' => 'resources/jquery/jquery.collapsibleTabs.js',
+ ),
+ 'jquery.colorUtil' => array(
+ 'scripts' => 'resources/jquery/jquery.colorUtil.js',
),
'jquery.color' => array(
- 'scripts' => 'resources/jquery/jquery.color.js'
+ 'scripts' => 'resources/jquery/jquery.color.js',
+ 'dependencies' => 'jquery.colorUtil',
),
'jquery.cookie' => array(
- 'scripts' => 'resources/jquery/jquery.cookie.js'
+ 'scripts' => 'resources/jquery/jquery.cookie.js',
),
'jquery.delayedBind' => array(
- 'scripts' => 'resources/jquery/jquery.delayedBind.js'
+ 'scripts' => 'resources/jquery/jquery.delayedBind.js',
),
'jquery.expandableField' => array(
- 'scripts' => 'resources/jquery/jquery.expandableField.js'
+ 'scripts' => 'resources/jquery/jquery.expandableField.js',
+ 'dependencies' => 'jquery.delayedBind',
+ ),
+ 'jquery.form' => array(
+ 'scripts' => 'resources/jquery/jquery.form.js',
+ ),
+ 'jquery.getAttrs' => array(
+ 'scripts' => 'resources/jquery/jquery.getAttrs.js',
),
'jquery.highlightText' => array(
- 'scripts' => 'resources/jquery/jquery.highlightText.js'
+ 'scripts' => 'resources/jquery/jquery.highlightText.js',
+ ),
+ 'jquery.hoverIntent' => array(
+ 'scripts' => 'resources/jquery/jquery.hoverIntent.js',
+ ),
+ 'jquery.messageBox' => array(
+ 'scripts' => 'resources/jquery/jquery.messageBox.js',
+ 'styles' => 'resources/jquery/jquery.messageBox.css',
),
'jquery.placeholder' => array(
- 'scripts' => 'resources/jquery/jquery.placeholder.js'
+ 'scripts' => 'resources/jquery/jquery.placeholder.js',
+ ),
+ 'jquery.json' => array(
+ 'scripts' => 'resources/jquery/jquery.json.js',
),
'jquery.localize' => array(
- 'scripts' => 'resources/jquery/jquery.localize.js'
+ 'scripts' => 'resources/jquery/jquery.localize.js',
+ ),
+ 'jquery.makeCollapsible' => array(
+ 'scripts' => 'resources/jquery/jquery.makeCollapsible.js',
+ 'styles' => 'resources/jquery/jquery.makeCollapsible.css',
+ 'messages' => array( 'collapsible-expand', 'collapsible-collapse' ),
+ ),
+ 'jquery.mwPrototypes' => array(
+ 'scripts' => 'resources/jquery/jquery.mwPrototypes.js',
+ ),
+ 'jquery.qunit' => array(
+ 'scripts' => 'resources/jquery/jquery.qunit.js',
+ 'styles' => 'resources/jquery/jquery.qunit.css',
),
'jquery.suggestions' => array(
'scripts' => 'resources/jquery/jquery.suggestions.js',
@@ -107,10 +167,15 @@ return array(
'dependencies' => 'jquery.autoEllipsis',
),
'jquery.tabIndex' => array(
- 'scripts' => 'resources/jquery/jquery.tabIndex.js'
+ 'scripts' => 'resources/jquery/jquery.tabIndex.js',
+ ),
+ 'jquery.tablesorter' => array(
+ 'scripts' => 'resources/jquery/jquery.tablesorter.js',
+ 'styles' => 'resources/jquery/jquery.tablesorter.css',
+ 'messages' => array( 'sort-descending', 'sort-ascending' ),
),
'jquery.textSelection' => array(
- 'scripts' => 'resources/jquery/jquery.textSelection.js'
+ 'scripts' => 'resources/jquery/jquery.textSelection.js',
),
'jquery.tipsy' => array(
'scripts' => 'resources/jquery.tipsy/jquery.tipsy.js',
@@ -133,27 +198,33 @@ return array(
),
),
'dependencies' => 'jquery',
+ 'group' => 'jquery.ui',
),
'jquery.ui.widget' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.widget.js',
+ 'group' => 'jquery.ui',
),
'jquery.ui.mouse' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.mouse.js',
'dependencies' => 'jquery.ui.widget',
+ 'group' => 'jquery.ui',
),
'jquery.ui.position' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.position.js',
+ 'group' => 'jquery.ui',
),
// Interactions
'jquery.ui.draggable' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.draggable.js',
'dependencies' => array( 'jquery.ui.core', 'jquery.ui.mouse', 'jquery.ui.widget' ),
+ 'group' => 'jquery.ui',
),
'jquery.ui.droppable' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.droppable.js',
'dependencies' => array(
- 'jquery.ui.core', 'jquery.ui.mouse', 'jquery.ui.widget', 'jquery.ui.draggable'
+ 'jquery.ui.core', 'jquery.ui.mouse', 'jquery.ui.widget', 'jquery.ui.draggable',
),
+ 'group' => 'jquery.ui',
),
'jquery.ui.resizable' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.resizable.js',
@@ -162,6 +233,7 @@ return array(
'vector' => 'resources/jquery.ui/themes/vector/jquery.ui.resizable.css',
),
'dependencies' => array( 'jquery.ui.core', 'jquery.ui.widget', 'jquery.ui.mouse' ),
+ 'group' => 'jquery.ui',
),
'jquery.ui.selectable' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.selectable.js',
@@ -170,10 +242,12 @@ return array(
'vector' => 'resources/jquery.ui/themes/vector/jquery.ui.selectable.css',
),
'dependencies' => array( 'jquery.ui.core', 'jquery.ui.widget', 'jquery.ui.mouse' ),
+ 'group' => 'jquery.ui',
),
'jquery.ui.sortable' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.sortable.js',
'dependencies' => array( 'jquery.ui.core', 'jquery.ui.widget', 'jquery.ui.mouse' ),
+ 'group' => 'jquery.ui',
),
// Widgets
'jquery.ui.accordion' => array(
@@ -183,6 +257,7 @@ return array(
'default' => 'resources/jquery.ui/themes/default/jquery.ui.accordion.css',
'vector' => 'resources/jquery.ui/themes/vector/jquery.ui.accordion.css',
),
+ 'group' => 'jquery.ui',
),
'jquery.ui.autocomplete' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.autocomplete.js',
@@ -191,6 +266,7 @@ return array(
'default' => 'resources/jquery.ui/themes/default/jquery.ui.autocomplete.css',
'vector' => 'resources/jquery.ui/themes/vector/jquery.ui.autocomplete.css',
),
+ 'group' => 'jquery.ui',
),
'jquery.ui.button' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.button.js',
@@ -199,6 +275,7 @@ return array(
'default' => 'resources/jquery.ui/themes/default/jquery.ui.button.css',
'vector' => 'resources/jquery.ui/themes/vector/jquery.ui.button.css',
),
+ 'group' => 'jquery.ui',
),
'jquery.ui.datepicker' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.datepicker.js',
@@ -259,8 +336,9 @@ return array(
'vi' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-vi.js',
'zh-cn' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-zh-CN.js',
'zh-hk' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-zh-HK.js',
- 'zh-tw' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-zh-TW.js'
+ 'zh-tw' => 'resources/jquery.ui/i18n/jquery.ui.datepicker-zh-TW.js',
),
+ 'group' => 'jquery.ui',
),
'jquery.ui.dialog' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.dialog.js',
@@ -277,6 +355,7 @@ return array(
'default' => 'resources/jquery.ui/themes/default/jquery.ui.dialog.css',
'vector' => 'resources/jquery.ui/themes/vector/jquery.ui.dialog.css',
),
+ 'group' => 'jquery.ui',
),
'jquery.ui.progressbar' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.progressbar.js',
@@ -285,6 +364,7 @@ return array(
'default' => 'resources/jquery.ui/themes/default/jquery.ui.progressbar.css',
'vector' => 'resources/jquery.ui/themes/vector/jquery.ui.progressbar.css',
),
+ 'group' => 'jquery.ui',
),
'jquery.ui.slider' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.slider.js',
@@ -293,6 +373,7 @@ return array(
'default' => 'resources/jquery.ui/themes/default/jquery.ui.slider.css',
'vector' => 'resources/jquery.ui/themes/vector/jquery.ui.slider.css',
),
+ 'group' => 'jquery.ui',
),
'jquery.ui.tabs' => array(
'scripts' => 'resources/jquery.ui/jquery.ui.tabs.js',
@@ -301,59 +382,73 @@ return array(
'default' => 'resources/jquery.ui/themes/default/jquery.ui.tabs.css',
'vector' => 'resources/jquery.ui/themes/vector/jquery.ui.tabs.css',
),
+ 'group' => 'jquery.ui',
),
// Effects
'jquery.effects.core' => array(
'scripts' => 'resources/jquery.effects/jquery.effects.core.js',
'dependencies' => 'jquery',
+ 'group' => 'jquery.ui',
),
'jquery.effects.blind' => array(
'scripts' => 'resources/jquery.effects/jquery.effects.blind.js',
'dependencies' => 'jquery.effects.core',
+ 'group' => 'jquery.ui',
),
'jquery.effects.bounce' => array(
'scripts' => 'resources/jquery.effects/jquery.effects.bounce.js',
'dependencies' => 'jquery.effects.core',
+ 'group' => 'jquery.ui',
),
'jquery.effects.clip' => array(
'scripts' => 'resources/jquery.effects/jquery.effects.clip.js',
'dependencies' => 'jquery.effects.core',
+ 'group' => 'jquery.ui',
),
'jquery.effects.drop' => array(
'scripts' => 'resources/jquery.effects/jquery.effects.drop.js',
'dependencies' => 'jquery.effects.core',
+ 'group' => 'jquery.ui',
),
'jquery.effects.explode' => array(
'scripts' => 'resources/jquery.effects/jquery.effects.explode.js',
'dependencies' => 'jquery.effects.core',
+ 'group' => 'jquery.ui',
),
'jquery.effects.fold' => array(
'scripts' => 'resources/jquery.effects/jquery.effects.fold.js',
'dependencies' => 'jquery.effects.core',
+ 'group' => 'jquery.ui',
),
'jquery.effects.highlight' => array(
'scripts' => 'resources/jquery.effects/jquery.effects.highlight.js',
'dependencies' => 'jquery.effects.core',
+ 'group' => 'jquery.ui',
),
'jquery.effects.pulsate' => array(
'scripts' => 'resources/jquery.effects/jquery.effects.pulsate.js',
'dependencies' => 'jquery.effects.core',
+ 'group' => 'jquery.ui',
),
'jquery.effects.scale' => array(
'scripts' => 'resources/jquery.effects/jquery.effects.scale.js',
'dependencies' => 'jquery.effects.core',
+ 'group' => 'jquery.ui',
),
'jquery.effects.shake' => array(
'scripts' => 'resources/jquery.effects/jquery.effects.shake.js',
'dependencies' => 'jquery.effects.core',
+ 'group' => 'jquery.ui',
),
'jquery.effects.slide' => array(
'scripts' => 'resources/jquery.effects/jquery.effects.slide.js',
'dependencies' => 'jquery.effects.core',
+ 'group' => 'jquery.ui',
),
'jquery.effects.transfer' => array(
'scripts' => 'resources/jquery.effects/jquery.effects.transfer.js',
'dependencies' => 'jquery.effects.core',
+ 'group' => 'jquery.ui',
),
/* MediaWiki */
@@ -361,36 +456,135 @@ return array(
'mediawiki' => array(
'scripts' => 'resources/mediawiki/mediawiki.js',
'debugScripts' => 'resources/mediawiki/mediawiki.log.js',
- 'debugRaw' => false
+ 'debugRaw' => false,
+ ),
+ 'mediawiki.Title' => array(
+ 'scripts' => 'resources/mediawiki/mediawiki.Title.js',
+ 'dependencies' => 'mediawiki.util',
+ ),
+ 'mediawiki.Uri' => array(
+ 'scripts' => 'resources/mediawiki/mediawiki.Uri.js',
+ ),
+ 'mediawiki.htmlform' => array(
+ 'scripts' => 'resources/mediawiki/mediawiki.htmlform.js',
+ ),
+ 'mediawiki.user' => array(
+ 'scripts' => 'resources/mediawiki/mediawiki.user.js',
+ 'dependencies' => array(
+ 'jquery.cookie',
+ ),
+ ),
+ 'mediawiki.page.startup' => array(
+ 'scripts' => 'resources/mediawiki.page/mediawiki.page.startup.js',
+ 'dependencies' => array(
+ 'jquery.client',
+ ),
+ 'position' => 'top',
+ ),
+ 'mediawiki.page.ready' => array(
+ 'scripts' => 'resources/mediawiki.page/mediawiki.page.ready.js',
+ 'dependencies' => array(
+ 'jquery.checkboxShiftClick',
+ 'jquery.makeCollapsible',
+ 'jquery.placeholder',
+ ),
),
'mediawiki.util' => array(
- 'scripts' => 'resources/mediawiki.util/mediawiki.util.js',
- 'dependencies' => array( 'jquery.checkboxShiftClick', 'jquery.client', 'jquery.placeholder' ),
- 'debugScripts' => 'resources/mediawiki.util/mediawiki.util.test.js',
+ 'scripts' => 'resources/mediawiki/mediawiki.util.js',
+ 'dependencies' => array(
+ 'jquery.client',
+ 'jquery.cookie',
+ 'jquery.messageBox',
+ 'jquery.mwPrototypes',
+ ),
+ ),
+ 'mediawiki.libs.jpegmeta' => array(
+ 'scripts' => 'resources/mediawiki.libs/mediawiki.libs.jpegmeta.js',
),
'mediawiki.action.history' => array(
'scripts' => 'resources/mediawiki.action/mediawiki.action.history.js',
- 'dependencies' => 'mediawiki.legacy.history',
+ 'dependencies' => 'jquery.ui.button',
+ 'group' => 'mediawiki.action.history',
+ ),
+ 'mediawiki.action.history.diff' => array(
+ 'styles' => 'resources/mediawiki.action/mediawiki.action.history.diff.css',
'group' => 'mediawiki.action.history',
),
'mediawiki.action.edit' => array(
'scripts' => 'resources/mediawiki.action/mediawiki.action.edit.js',
+ 'dependencies' => array(
+ 'jquery.textSelection',
+ 'jquery.byteLimit',
+ ),
),
'mediawiki.action.view.rightClickEdit' => array(
'scripts' => 'resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js',
),
+ 'mediawiki.action.view.metadata' => array(
+ 'scripts' => 'resources/mediawiki.action/mediawiki.action.view.metadata.js',
+ 'messages' => array( 'metadata-expand', 'metadata-collapse' ),
+ ),
+ 'mediawiki.action.watch.ajax' => array(
+ 'scripts' => 'resources/mediawiki.action/mediawiki.action.watch.ajax.js',
+ 'messages' => array(
+ 'watch',
+ 'unwatch',
+ 'watching',
+ 'unwatching',
+ 'tooltip-ca-watch',
+ 'tooltip-ca-unwatch',
+ 'watcherrortext',
+ ),
+ ),
+
+ /* Special pages */
+
+ 'mediawiki.special' => array(
+ 'scripts' => 'resources/mediawiki.special/mediawiki.special.js',
+ 'styles' => 'resources/mediawiki.special/mediawiki.special.css',
+ ),
'mediawiki.special.preferences' => array(
'scripts' => 'resources/mediawiki.special/mediawiki.special.preferences.js',
'styles' => 'resources/mediawiki.special/mediawiki.special.preferences.css',
'messages' => array( 'email-address-validity-valid', 'email-address-validity-invalid' ),
),
+ 'mediawiki.special.changeslist' => array(
+ 'styles' => 'resources/mediawiki.special/mediawiki.special.changeslist.css',
+ 'dependencies' => array( 'jquery.makeCollapsible' ),
+ ),
'mediawiki.special.search' => array(
'scripts' => 'resources/mediawiki.special/mediawiki.special.search.js',
+ 'styles' => 'resources/mediawiki.special/mediawiki.special.search.css',
),
- 'mediawiki.action.history' => array(
- 'scripts' => 'resources/mediawiki.action/mediawiki.action.history.js',
- 'dependencies' => 'mediawiki.legacy.history',
+ 'mediawiki.special.block' => array(
+ 'scripts' => 'resources/mediawiki.special/mediawiki.special.block.js',
+ ),
+ 'mediawiki.special.undelete' => array(
+ 'scripts' => 'resources/mediawiki.special/mediawiki.special.undelete.js',
+ ),
+ 'mediawiki.special.movePage' => array(
+ 'scripts' => 'resources/mediawiki.special/mediawiki.special.movePage.js',
+ 'dependencies' => 'jquery.byteLimit',
),
+ 'mediawiki.special.recentchanges' => array(
+ 'scripts' => 'resources/mediawiki.special/mediawiki.special.recentchanges.js',
+ 'dependencies' => array( 'mediawiki.special' ),
+ 'position' => 'top',
+ ),
+ 'mediawiki.special.upload' => array(
+ // @TODO: merge in remainder of mediawiki.legacy.upload
+ 'scripts' => 'resources/mediawiki.special/mediawiki.special.upload.js',
+ 'messages' => array(
+ 'widthheight',
+ 'size-bytes',
+ 'size-kilobytes',
+ 'size-megabytes',
+ 'size-gigabytes',
+ 'largefileserver',
+ ),
+ 'dependencies' => array( 'mediawiki.libs.jpegmeta' ),
+ ),
+
'mediawiki.language' => array(
'scripts' => 'resources/mediawiki.language/mediawiki.language.js',
'languageScripts' => array(
@@ -422,8 +616,10 @@ return array(
'mk' => 'resources/mediawiki.language/languages/mk.js',
'mo' => 'resources/mediawiki.language/languages/mo.js',
'mt' => 'resources/mediawiki.language/languages/mt.js',
+ 'nl' => 'resources/mediawiki.language/languages/nl.js',
'nso' => 'resources/mediawiki.language/languages/nso.js',
'pl' => 'resources/mediawiki.language/languages/pl.js',
+ 'pt' => 'resources/mediawiki.language/languages/pt.js',
'pt-br' => 'resources/mediawiki.language/languages/pt-br.js',
'ro' => 'resources/mediawiki.language/languages/ro.js',
'ru' => 'resources/mediawiki.language/languages/ru.js',
@@ -448,22 +644,6 @@ return array(
'scripts' => 'common/ajax.js',
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
- 'messages' => array(
- 'watch', 'unwatch', 'watching', 'unwatching', 'tooltip-ca-watch',
- 'tooltip-ca-unwatch'
- ),
- 'dependencies' => 'mediawiki.legacy.wikibits',
- ),
- 'mediawiki.legacy.ajaxwatch' => array(
- 'scripts' => 'common/ajaxwatch.js',
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- 'dependencies' => 'mediawiki.legacy.wikibits',
- ),
- 'mediawiki.legacy.block' => array(
- 'scripts' => 'common/block.js',
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
'dependencies' => 'mediawiki.legacy.wikibits',
),
'mediawiki.legacy.commonPrint' => array(
@@ -478,65 +658,19 @@ return array(
'localBasePath' => $GLOBALS['wgStyleDirectory'],
'dependencies' => 'mediawiki.legacy.wikibits',
),
- 'mediawiki.legacy.diff' => array(
- 'scripts' => 'common/diff.js',
- 'styles' => 'common/diff.css',
- 'group' => 'mediawiki.action.history',
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- 'dependencies' => 'mediawiki.legacy.wikibits',
- ),
- 'mediawiki.legacy.edit' => array(
- 'scripts' => 'common/edit.js',
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- 'dependencies' => 'mediawiki.legacy.wikibits',
- ),
- 'mediawiki.legacy.enhancedchanges' => array(
- 'scripts' => 'common/enhancedchanges.js',
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- 'dependencies' => 'mediawiki.legacy.wikibits',
- ),
- 'mediawiki.legacy.history' => array(
- 'scripts' => 'common/history.js',
- 'group' => 'mediawiki.action.history',
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- 'dependencies' => 'mediawiki.legacy.wikibits',
- ),
- 'mediawiki.legacy.htmlform' => array(
- 'scripts' => 'common/htmlform.js',
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- 'dependencies' => 'mediawiki.legacy.wikibits',
- ),
'mediawiki.legacy.IEFixes' => array(
'scripts' => 'common/IEFixes.js',
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
'dependencies' => 'mediawiki.legacy.wikibits',
),
- 'mediawiki.legacy.metadata' => array(
- 'scripts' => 'common/metadata.js',
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- 'dependencies' => 'mediawiki.legacy.wikibits',
- 'messages' => array( 'metadata-expand', 'metadata-collapse' ),
- ),
'mediawiki.legacy.mwsuggest' => array(
'scripts' => 'common/mwsuggest.js',
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
- 'dependencies' => 'mediawiki.legacy.wikibits',
+ 'dependencies' => array( 'mediawiki.legacy.wikibits', 'jquery.client' ),
'messages' => array( 'search-mwsuggest-enabled', 'search-mwsuggest-disabled' ),
),
- 'mediawiki.legacy.prefs' => array(
- 'scripts' => 'common/prefs.js',
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- 'dependencies' => array( 'mediawiki.legacy.wikibits', 'mediawiki.legacy.htmlform' ),
- ),
'mediawiki.legacy.preview' => array(
'scripts' => 'common/preview.js',
'remoteBasePath' => $GLOBALS['wgStylePath'],
@@ -547,14 +681,10 @@ return array(
'scripts' => 'common/protect.js',
'remoteBasePath' => $GLOBALS['wgStylePath'],
'localBasePath' => $GLOBALS['wgStyleDirectory'],
- 'dependencies' => 'mediawiki.legacy.wikibits',
- ),
- 'mediawiki.legacy.search' => array(
- 'scripts' => 'common/search.js',
- 'remoteBasePath' => $GLOBALS['wgStylePath'],
- 'localBasePath' => $GLOBALS['wgStyleDirectory'],
- 'styles' => 'common/search.css',
- 'dependencies' => 'mediawiki.legacy.wikibits',
+ 'dependencies' => array(
+ 'mediawiki.legacy.wikibits',
+ 'jquery.byteLimit',
+ ),
),
'mediawiki.legacy.shared' => array(
'styles' => array( 'common/shared.css' => array( 'media' => 'screen' ) ),
diff --git a/resources/jquery.tipsy/jquery.tipsy.css b/resources/jquery.tipsy/jquery.tipsy.css
index d79554d2..2e504c32 100644
--- a/resources/jquery.tipsy/jquery.tipsy.css
+++ b/resources/jquery.tipsy/jquery.tipsy.css
@@ -2,6 +2,7 @@
padding: 5px;
position: absolute;
z-index: 100000;
+ cursor: default;
}
.tipsy-inner {
padding: 5px 8px 4px 8px;
diff --git a/resources/jquery.tipsy/jquery.tipsy.js b/resources/jquery.tipsy/jquery.tipsy.js
index 847a527b..7c808734 100644
--- a/resources/jquery.tipsy/jquery.tipsy.js
+++ b/resources/jquery.tipsy/jquery.tipsy.js
@@ -56,17 +56,17 @@
if (gravity.length == 2) {
if (gravity.charAt(1) == 'w') {
- if ( this.options.center ) {
- tp.left = pos.left + pos.width / 2 - 15;
- } else {
+ if (this.options.center) {
+ tp.left = pos.left + pos.width / 2 - 15;
+ } else {
tp.left = pos.left;
- }
+ }
} else {
- if ( this.options.center ) {
- tp.left = pos.left + pos.width / 2 - actualWidth + 15;
- } else {
- tp.left = pos.left + pos.width;
- }
+ if (this.options.center) {
+ tp.left = pos.left + pos.width / 2 - actualWidth + 15;
+ } else {
+ tp.left = pos.left + pos.width;
+ }
}
}
diff --git a/resources/jquery.ui/jquery.ui.accordion.js b/resources/jquery.ui/jquery.ui.accordion.js
index 7d926e09..898160a1 100644
--- a/resources/jquery.ui/jquery.ui.accordion.js
+++ b/resources/jquery.ui/jquery.ui.accordion.js
@@ -1,9 +1,9 @@
/*
- * jQuery UI Accordion 1.8.2
+ * jQuery UI Accordion 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Accordion
*
@@ -11,12 +11,12 @@
* jquery.ui.core.js
* jquery.ui.widget.js
*/
-(function($) {
+(function( $, undefined ) {
-$.widget("ui.accordion", {
+$.widget( "ui.accordion", {
options: {
active: 0,
- animated: 'slide',
+ animated: "slide",
autoHeight: true,
clearStyle: false,
collapsible: false,
@@ -29,322 +29,398 @@ $.widget("ui.accordion", {
},
navigation: false,
navigationFilter: function() {
- return this.href.toLowerCase() == location.href.toLowerCase();
+ return this.href.toLowerCase() === location.href.toLowerCase();
}
},
- _create: function() {
-
- var o = this.options, self = this;
- this.running = 0;
- this.element.addClass("ui-accordion ui-widget ui-helper-reset");
-
- // in lack of child-selectors in CSS we need to mark top-LIs in a UL-accordion for some IE-fix
- this.element.children("li").addClass("ui-accordion-li-fix");
-
- this.headers = this.element.find(o.header).addClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all")
- .bind("mouseenter.accordion", function(){ $(this).addClass('ui-state-hover'); })
- .bind("mouseleave.accordion", function(){ $(this).removeClass('ui-state-hover'); })
- .bind("focus.accordion", function(){ $(this).addClass('ui-state-focus'); })
- .bind("blur.accordion", function(){ $(this).removeClass('ui-state-focus'); });
+ _create: function() {
+ var self = this,
+ options = self.options;
+
+ self.running = 0;
+
+ self.element
+ .addClass( "ui-accordion ui-widget ui-helper-reset" )
+ // in lack of child-selectors in CSS
+ // we need to mark top-LIs in a UL-accordion for some IE-fix
+ .children( "li" )
+ .addClass( "ui-accordion-li-fix" );
+
+ self.headers = self.element.find( options.header )
+ .addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" )
+ .bind( "mouseenter.accordion", function() {
+ if ( options.disabled ) {
+ return;
+ }
+ $( this ).addClass( "ui-state-hover" );
+ })
+ .bind( "mouseleave.accordion", function() {
+ if ( options.disabled ) {
+ return;
+ }
+ $( this ).removeClass( "ui-state-hover" );
+ })
+ .bind( "focus.accordion", function() {
+ if ( options.disabled ) {
+ return;
+ }
+ $( this ).addClass( "ui-state-focus" );
+ })
+ .bind( "blur.accordion", function() {
+ if ( options.disabled ) {
+ return;
+ }
+ $( this ).removeClass( "ui-state-focus" );
+ });
- this.headers
- .next()
- .addClass("ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom");
+ self.headers.next()
+ .addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" );
- if ( o.navigation ) {
- var current = this.element.find("a").filter(o.navigationFilter);
+ if ( options.navigation ) {
+ var current = self.element.find( "a" ).filter( options.navigationFilter ).eq( 0 );
if ( current.length ) {
- var header = current.closest(".ui-accordion-header");
+ var header = current.closest( ".ui-accordion-header" );
if ( header.length ) {
// anchor within header
- this.active = header;
+ self.active = header;
} else {
// anchor within content
- this.active = current.closest(".ui-accordion-content").prev();
+ self.active = current.closest( ".ui-accordion-content" ).prev();
}
}
}
- this.active = this._findActive(this.active || o.active).toggleClass("ui-state-default").toggleClass("ui-state-active").toggleClass("ui-corner-all").toggleClass("ui-corner-top");
- this.active.next().addClass('ui-accordion-content-active');
-
- //Append icon elements
- this._createIcons();
-
- this.resize();
+ self.active = self._findActive( self.active || options.active )
+ .addClass( "ui-state-default ui-state-active" )
+ .toggleClass( "ui-corner-all" )
+ .toggleClass( "ui-corner-top" );
+ self.active.next().addClass( "ui-accordion-content-active" );
- //ARIA
- this.element.attr('role','tablist');
-
- this.headers
- .attr('role','tab')
- .bind('keydown', function(event) { return self._keydown(event); })
+ self._createIcons();
+ self.resize();
+
+ // ARIA
+ self.element.attr( "role", "tablist" );
+
+ self.headers
+ .attr( "role", "tab" )
+ .bind( "keydown.accordion", function( event ) {
+ return self._keydown( event );
+ })
.next()
- .attr('role','tabpanel');
-
- this.headers
- .not(this.active || "")
- .attr('aria-expanded','false')
- .attr("tabIndex", "-1")
+ .attr( "role", "tabpanel" );
+
+ self.headers
+ .not( self.active || "" )
+ .attr({
+ "aria-expanded": "false",
+ "aria-selected": "false",
+ tabIndex: -1
+ })
.next()
- .hide();
+ .hide();
// make sure at least one header is in the tab order
- if (!this.active.length) {
- this.headers.eq(0).attr('tabIndex','0');
+ if ( !self.active.length ) {
+ self.headers.eq( 0 ).attr( "tabIndex", 0 );
} else {
- this.active
- .attr('aria-expanded','true')
- .attr('tabIndex', '0');
+ self.active
+ .attr({
+ "aria-expanded": "true",
+ "aria-selected": "true",
+ tabIndex: 0
+ });
}
- // only need links in taborder for Safari
- if (!$.browser.safari)
- this.headers.find('a').attr('tabIndex','-1');
+ // only need links in tab order for Safari
+ if ( !$.browser.safari ) {
+ self.headers.find( "a" ).attr( "tabIndex", -1 );
+ }
- if (o.event) {
- this.headers.bind((o.event) + ".accordion", function(event) {
- self._clickHandler.call(self, event, this);
+ if ( options.event ) {
+ self.headers.bind( options.event.split(" ").join(".accordion ") + ".accordion", function(event) {
+ self._clickHandler.call( self, event, this );
event.preventDefault();
});
}
-
},
-
+
_createIcons: function() {
- var o = this.options;
- if (o.icons) {
- $("<span/>").addClass("ui-icon " + o.icons.header).prependTo(this.headers);
- this.active.find(".ui-icon").toggleClass(o.icons.header).toggleClass(o.icons.headerSelected);
- this.element.addClass("ui-accordion-icons");
+ var options = this.options;
+ if ( options.icons ) {
+ $( "<span></span>" )
+ .addClass( "ui-icon " + options.icons.header )
+ .prependTo( this.headers );
+ this.active.children( ".ui-icon" )
+ .toggleClass(options.icons.header)
+ .toggleClass(options.icons.headerSelected);
+ this.element.addClass( "ui-accordion-icons" );
}
},
-
+
_destroyIcons: function() {
- this.headers.children(".ui-icon").remove();
- this.element.removeClass("ui-accordion-icons");
+ this.headers.children( ".ui-icon" ).remove();
+ this.element.removeClass( "ui-accordion-icons" );
},
destroy: function() {
- var o = this.options;
+ var options = this.options;
this.element
- .removeClass("ui-accordion ui-widget ui-helper-reset")
- .removeAttr("role")
- .unbind('.accordion')
- .removeData('accordion');
+ .removeClass( "ui-accordion ui-widget ui-helper-reset" )
+ .removeAttr( "role" );
this.headers
- .unbind(".accordion")
- .removeClass("ui-accordion-header ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-corner-top")
- .removeAttr("role").removeAttr("aria-expanded").removeAttr("tabIndex");
-
- this.headers.find("a").removeAttr("tabIndex");
+ .unbind( ".accordion" )
+ .removeClass( "ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" )
+ .removeAttr( "role" )
+ .removeAttr( "aria-expanded" )
+ .removeAttr( "aria-selected" )
+ .removeAttr( "tabIndex" );
+
+ this.headers.find( "a" ).removeAttr( "tabIndex" );
this._destroyIcons();
- var contents = this.headers.next().css("display", "").removeAttr("role").removeClass("ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active");
- if (o.autoHeight || o.fillHeight) {
- contents.css("height", "");
+ var contents = this.headers.next()
+ .css( "display", "" )
+ .removeAttr( "role" )
+ .removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled" );
+ if ( options.autoHeight || options.fillHeight ) {
+ contents.css( "height", "" );
}
- return this;
+ return $.Widget.prototype.destroy.call( this );
},
-
- _setOption: function(key, value) {
- $.Widget.prototype._setOption.apply(this, arguments);
+
+ _setOption: function( key, value ) {
+ $.Widget.prototype._setOption.apply( this, arguments );
- if (key == "active") {
- this.activate(value);
+ if ( key == "active" ) {
+ this.activate( value );
}
- if (key == "icons") {
+ if ( key == "icons" ) {
this._destroyIcons();
- if (value) {
+ if ( value ) {
this._createIcons();
}
}
-
+ // #5332 - opacity doesn't cascade to positioned elements in IE
+ // so we need to add the disabled class to the headers and panels
+ if ( key == "disabled" ) {
+ this.headers.add(this.headers.next())
+ [ value ? "addClass" : "removeClass" ](
+ "ui-accordion-disabled ui-state-disabled" );
+ }
},
- _keydown: function(event) {
-
- var o = this.options, keyCode = $.ui.keyCode;
-
- if (o.disabled || event.altKey || event.ctrlKey)
+ _keydown: function( event ) {
+ if ( this.options.disabled || event.altKey || event.ctrlKey ) {
return;
+ }
- var length = this.headers.length;
- var currentIndex = this.headers.index(event.target);
- var toFocus = false;
+ var keyCode = $.ui.keyCode,
+ length = this.headers.length,
+ currentIndex = this.headers.index( event.target ),
+ toFocus = false;
- switch(event.keyCode) {
+ switch ( event.keyCode ) {
case keyCode.RIGHT:
case keyCode.DOWN:
- toFocus = this.headers[(currentIndex + 1) % length];
+ toFocus = this.headers[ ( currentIndex + 1 ) % length ];
break;
case keyCode.LEFT:
case keyCode.UP:
- toFocus = this.headers[(currentIndex - 1 + length) % length];
+ toFocus = this.headers[ ( currentIndex - 1 + length ) % length ];
break;
case keyCode.SPACE:
case keyCode.ENTER:
- this._clickHandler({ target: event.target }, event.target);
+ this._clickHandler( { target: event.target }, event.target );
event.preventDefault();
}
- if (toFocus) {
- $(event.target).attr('tabIndex','-1');
- $(toFocus).attr('tabIndex','0');
+ if ( toFocus ) {
+ $( event.target ).attr( "tabIndex", -1 );
+ $( toFocus ).attr( "tabIndex", 0 );
toFocus.focus();
return false;
}
return true;
-
},
resize: function() {
+ var options = this.options,
+ maxHeight;
- var o = this.options, maxHeight;
-
- if (o.fillSpace) {
-
- if($.browser.msie) { var defOverflow = this.element.parent().css('overflow'); this.element.parent().css('overflow', 'hidden'); }
+ if ( options.fillSpace ) {
+ if ( $.browser.msie ) {
+ var defOverflow = this.element.parent().css( "overflow" );
+ this.element.parent().css( "overflow", "hidden");
+ }
maxHeight = this.element.parent().height();
- if($.browser.msie) { this.element.parent().css('overflow', defOverflow); }
-
+ if ($.browser.msie) {
+ this.element.parent().css( "overflow", defOverflow );
+ }
+
this.headers.each(function() {
- maxHeight -= $(this).outerHeight(true);
+ maxHeight -= $( this ).outerHeight( true );
});
- this.headers.next().each(function() {
- $(this).height(Math.max(0, maxHeight - $(this).innerHeight() + $(this).height()));
- }).css('overflow', 'auto');
-
- } else if ( o.autoHeight ) {
+ this.headers.next()
+ .each(function() {
+ $( this ).height( Math.max( 0, maxHeight -
+ $( this ).innerHeight() + $( this ).height() ) );
+ })
+ .css( "overflow", "auto" );
+ } else if ( options.autoHeight ) {
maxHeight = 0;
- this.headers.next().each(function() {
- maxHeight = Math.max(maxHeight, $(this).height());
- }).height(maxHeight);
+ this.headers.next()
+ .each(function() {
+ maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() );
+ })
+ .height( maxHeight );
}
return this;
},
- activate: function(index) {
+ activate: function( index ) {
// TODO this gets called on init, changing the option without an explicit call for that
this.options.active = index;
// call clickHandler with custom event
- var active = this._findActive(index)[0];
- this._clickHandler({ target: active }, active);
+ var active = this._findActive( index )[ 0 ];
+ this._clickHandler( { target: active }, active );
return this;
},
- _findActive: function(selector) {
+ _findActive: function( selector ) {
return selector
- ? typeof selector == "number"
- ? this.headers.filter(":eq(" + selector + ")")
- : this.headers.not(this.headers.not(selector))
+ ? typeof selector === "number"
+ ? this.headers.filter( ":eq(" + selector + ")" )
+ : this.headers.not( this.headers.not( selector ) )
: selector === false
- ? $([])
- : this.headers.filter(":eq(0)");
+ ? $( [] )
+ : this.headers.filter( ":eq(0)" );
},
- // TODO isn't event.target enough? why the seperate target argument?
- _clickHandler: function(event, target) {
-
- var o = this.options;
- if (o.disabled)
+ // TODO isn't event.target enough? why the separate target argument?
+ _clickHandler: function( event, target ) {
+ var options = this.options;
+ if ( options.disabled ) {
return;
+ }
// called only when using activate(false) to close all parts programmatically
- if (!event.target) {
- if (!o.collapsible)
+ if ( !event.target ) {
+ if ( !options.collapsible ) {
return;
- this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all")
- .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header);
- this.active.next().addClass('ui-accordion-content-active');
+ }
+ this.active
+ .removeClass( "ui-state-active ui-corner-top" )
+ .addClass( "ui-state-default ui-corner-all" )
+ .children( ".ui-icon" )
+ .removeClass( options.icons.headerSelected )
+ .addClass( options.icons.header );
+ this.active.next().addClass( "ui-accordion-content-active" );
var toHide = this.active.next(),
data = {
- options: o,
- newHeader: $([]),
- oldHeader: o.active,
- newContent: $([]),
+ options: options,
+ newHeader: $( [] ),
+ oldHeader: options.active,
+ newContent: $( [] ),
oldContent: toHide
},
- toShow = (this.active = $([]));
- this._toggle(toShow, toHide, data);
+ toShow = ( this.active = $( [] ) );
+ this._toggle( toShow, toHide, data );
return;
}
// get the click target
- var clicked = $(event.currentTarget || target);
- var clickedIsActive = clicked[0] == this.active[0];
-
+ var clicked = $( event.currentTarget || target ),
+ clickedIsActive = clicked[0] === this.active[0];
+
// TODO the option is changed, is that correct?
// TODO if it is correct, shouldn't that happen after determining that the click is valid?
- o.active = o.collapsible && clickedIsActive ? false : $('.ui-accordion-header', this.element).index(clicked);
+ options.active = options.collapsible && clickedIsActive ?
+ false :
+ this.headers.index( clicked );
// if animations are still active, or the active header is the target, ignore click
- if (this.running || (!o.collapsible && clickedIsActive)) {
+ if ( this.running || ( !options.collapsible && clickedIsActive ) ) {
return;
}
- // switch classes
- this.active.removeClass("ui-state-active ui-corner-top").addClass("ui-state-default ui-corner-all")
- .find(".ui-icon").removeClass(o.icons.headerSelected).addClass(o.icons.header);
- if (!clickedIsActive) {
- clicked.removeClass("ui-state-default ui-corner-all").addClass("ui-state-active ui-corner-top")
- .find(".ui-icon").removeClass(o.icons.header).addClass(o.icons.headerSelected);
- clicked.next().addClass('ui-accordion-content-active');
- }
-
// find elements to show and hide
- var toShow = clicked.next(),
+ var active = this.active,
+ toShow = clicked.next(),
toHide = this.active.next(),
data = {
- options: o,
- newHeader: clickedIsActive && o.collapsible ? $([]) : clicked,
+ options: options,
+ newHeader: clickedIsActive && options.collapsible ? $([]) : clicked,
oldHeader: this.active,
- newContent: clickedIsActive && o.collapsible ? $([]) : toShow,
+ newContent: clickedIsActive && options.collapsible ? $([]) : toShow,
oldContent: toHide
},
down = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] );
+ // when the call to ._toggle() comes after the class changes
+ // it causes a very odd bug in IE 8 (see #6720)
this.active = clickedIsActive ? $([]) : clicked;
- this._toggle(toShow, toHide, data, clickedIsActive, down);
+ this._toggle( toShow, toHide, data, clickedIsActive, down );
- return;
+ // switch classes
+ active
+ .removeClass( "ui-state-active ui-corner-top" )
+ .addClass( "ui-state-default ui-corner-all" )
+ .children( ".ui-icon" )
+ .removeClass( options.icons.headerSelected )
+ .addClass( options.icons.header );
+ if ( !clickedIsActive ) {
+ clicked
+ .removeClass( "ui-state-default ui-corner-all" )
+ .addClass( "ui-state-active ui-corner-top" )
+ .children( ".ui-icon" )
+ .removeClass( options.icons.header )
+ .addClass( options.icons.headerSelected );
+ clicked
+ .next()
+ .addClass( "ui-accordion-content-active" );
+ }
+ return;
},
- _toggle: function(toShow, toHide, data, clickedIsActive, down) {
+ _toggle: function( toShow, toHide, data, clickedIsActive, down ) {
+ var self = this,
+ options = self.options;
- var o = this.options, self = this;
+ self.toShow = toShow;
+ self.toHide = toHide;
+ self.data = data;
- this.toShow = toShow;
- this.toHide = toHide;
- this.data = data;
-
- var complete = function() { if(!self) return; return self._completed.apply(self, arguments); };
+ var complete = function() {
+ if ( !self ) {
+ return;
+ }
+ return self._completed.apply( self, arguments );
+ };
// trigger changestart event
- this._trigger("changestart", null, this.data);
+ self._trigger( "changestart", null, self.data );
// count elements to animate
- this.running = toHide.size() === 0 ? toShow.size() : toHide.size();
-
- if (o.animated) {
+ self.running = toHide.size() === 0 ? toShow.size() : toHide.size();
+ if ( options.animated ) {
var animOptions = {};
- if ( o.collapsible && clickedIsActive ) {
+ if ( options.collapsible && clickedIsActive ) {
animOptions = {
- toShow: $([]),
+ toShow: $( [] ),
toHide: toHide,
complete: complete,
down: down,
- autoHeight: o.autoHeight || o.fillSpace
+ autoHeight: options.autoHeight || options.fillSpace
};
} else {
animOptions = {
@@ -352,101 +428,120 @@ $.widget("ui.accordion", {
toHide: toHide,
complete: complete,
down: down,
- autoHeight: o.autoHeight || o.fillSpace
+ autoHeight: options.autoHeight || options.fillSpace
};
}
- if (!o.proxied) {
- o.proxied = o.animated;
+ if ( !options.proxied ) {
+ options.proxied = options.animated;
}
- if (!o.proxiedDuration) {
- o.proxiedDuration = o.duration;
+ if ( !options.proxiedDuration ) {
+ options.proxiedDuration = options.duration;
}
- o.animated = $.isFunction(o.proxied) ?
- o.proxied(animOptions) : o.proxied;
+ options.animated = $.isFunction( options.proxied ) ?
+ options.proxied( animOptions ) :
+ options.proxied;
- o.duration = $.isFunction(o.proxiedDuration) ?
- o.proxiedDuration(animOptions) : o.proxiedDuration;
+ options.duration = $.isFunction( options.proxiedDuration ) ?
+ options.proxiedDuration( animOptions ) :
+ options.proxiedDuration;
var animations = $.ui.accordion.animations,
- duration = o.duration,
- easing = o.animated;
+ duration = options.duration,
+ easing = options.animated;
- if (easing && !animations[easing] && !$.easing[easing]) {
- easing = 'slide';
+ if ( easing && !animations[ easing ] && !$.easing[ easing ] ) {
+ easing = "slide";
}
- if (!animations[easing]) {
- animations[easing] = function(options) {
- this.slide(options, {
+ if ( !animations[ easing ] ) {
+ animations[ easing ] = function( options ) {
+ this.slide( options, {
easing: easing,
duration: duration || 700
});
};
}
- animations[easing](animOptions);
-
+ animations[ easing ]( animOptions );
} else {
-
- if (o.collapsible && clickedIsActive) {
+ if ( options.collapsible && clickedIsActive ) {
toShow.toggle();
} else {
toHide.hide();
toShow.show();
}
- complete(true);
-
+ complete( true );
}
// TODO assert that the blur and focus triggers are really necessary, remove otherwise
- toHide.prev().attr('aria-expanded','false').attr("tabIndex", "-1").blur();
- toShow.prev().attr('aria-expanded','true').attr("tabIndex", "0").focus();
-
+ toHide.prev()
+ .attr({
+ "aria-expanded": "false",
+ "aria-selected": "false",
+ tabIndex: -1
+ })
+ .blur();
+ toShow.prev()
+ .attr({
+ "aria-expanded": "true",
+ "aria-selected": "true",
+ tabIndex: 0
+ })
+ .focus();
},
- _completed: function(cancel) {
-
- var o = this.options;
-
+ _completed: function( cancel ) {
this.running = cancel ? 0 : --this.running;
- if (this.running) return;
+ if ( this.running ) {
+ return;
+ }
- if (o.clearStyle) {
- this.toShow.add(this.toHide).css({
+ if ( this.options.clearStyle ) {
+ this.toShow.add( this.toHide ).css({
height: "",
overflow: ""
});
}
-
+
// other classes are removed before the animation; this one needs to stay until completed
- this.toHide.removeClass("ui-accordion-content-active");
+ this.toHide.removeClass( "ui-accordion-content-active" );
+ // Work around for rendering bug in IE (#5421)
+ if ( this.toHide.length ) {
+ this.toHide.parent()[0].className = this.toHide.parent()[0].className;
+ }
- this._trigger('change', null, this.data);
+ this._trigger( "change", null, this.data );
}
-
});
-
-$.extend($.ui.accordion, {
- version: "1.8.2",
+$.extend( $.ui.accordion, {
+ version: "1.8.11",
animations: {
- slide: function(options, additions) {
+ slide: function( options, additions ) {
options = $.extend({
easing: "swing",
duration: 300
- }, options, additions);
+ }, options, additions );
if ( !options.toHide.size() ) {
- options.toShow.animate({height: "show"}, options);
+ options.toShow.animate({
+ height: "show",
+ paddingTop: "show",
+ paddingBottom: "show"
+ }, options );
return;
}
if ( !options.toShow.size() ) {
- options.toHide.animate({height: "hide"}, options);
+ options.toHide.animate({
+ height: "hide",
+ paddingTop: "hide",
+ paddingBottom: "hide"
+ }, options );
return;
}
- var overflow = options.toShow.css('overflow'),
+ var overflow = options.toShow.css( "overflow" ),
percentDone = 0,
showProps = {},
hideProps = {},
@@ -455,45 +550,57 @@ $.extend($.ui.accordion, {
// fix width before calculating height of hidden element
var s = options.toShow;
originalWidth = s[0].style.width;
- s.width( parseInt(s.parent().width(),10) - parseInt(s.css("paddingLeft"),10) - parseInt(s.css("paddingRight"),10) - (parseInt(s.css("borderLeftWidth"),10) || 0) - (parseInt(s.css("borderRightWidth"),10) || 0) );
-
- $.each(fxAttrs, function(i, prop) {
- hideProps[prop] = 'hide';
-
- var parts = ('' + $.css(options.toShow[0], prop)).match(/^([\d+-.]+)(.*)$/);
- showProps[prop] = {
- value: parts[1],
- unit: parts[2] || 'px'
+ s.width( parseInt( s.parent().width(), 10 )
+ - parseInt( s.css( "paddingLeft" ), 10 )
+ - parseInt( s.css( "paddingRight" ), 10 )
+ - ( parseInt( s.css( "borderLeftWidth" ), 10 ) || 0 )
+ - ( parseInt( s.css( "borderRightWidth" ), 10) || 0 ) );
+
+ $.each( fxAttrs, function( i, prop ) {
+ hideProps[ prop ] = "hide";
+
+ var parts = ( "" + $.css( options.toShow[0], prop ) ).match( /^([\d+-.]+)(.*)$/ );
+ showProps[ prop ] = {
+ value: parts[ 1 ],
+ unit: parts[ 2 ] || "px"
};
});
- options.toShow.css({ height: 0, overflow: 'hidden' }).show();
- options.toHide.filter(":hidden").each(options.complete).end().filter(":visible").animate(hideProps,{
- step: function(now, settings) {
+ options.toShow.css({ height: 0, overflow: "hidden" }).show();
+ options.toHide
+ .filter( ":hidden" )
+ .each( options.complete )
+ .end()
+ .filter( ":visible" )
+ .animate( hideProps, {
+ step: function( now, settings ) {
// only calculate the percent when animating height
// IE gets very inconsistent results when animating elements
// with small values, which is common for padding
- if (settings.prop == 'height') {
+ if ( settings.prop == "height" ) {
percentDone = ( settings.end - settings.start === 0 ) ? 0 :
- (settings.now - settings.start) / (settings.end - settings.start);
+ ( settings.now - settings.start ) / ( settings.end - settings.start );
}
-
- options.toShow[0].style[settings.prop] =
- (percentDone * showProps[settings.prop].value) + showProps[settings.prop].unit;
+
+ options.toShow[ 0 ].style[ settings.prop ] =
+ ( percentDone * showProps[ settings.prop ].value )
+ + showProps[ settings.prop ].unit;
},
duration: options.duration,
easing: options.easing,
complete: function() {
if ( !options.autoHeight ) {
- options.toShow.css("height", "");
+ options.toShow.css( "height", "" );
}
- options.toShow.css("width", originalWidth);
- options.toShow.css({overflow: overflow});
+ options.toShow.css({
+ width: originalWidth,
+ overflow: overflow
+ });
options.complete();
}
});
},
- bounceslide: function(options) {
- this.slide(options, {
+ bounceslide: function( options ) {
+ this.slide( options, {
easing: options.down ? "easeOutBounce" : "swing",
duration: options.down ? 1000 : 200
});
@@ -501,4 +608,4 @@ $.extend($.ui.accordion, {
}
});
-})(jQuery);
+})( jQuery );
diff --git a/resources/jquery.ui/jquery.ui.autocomplete.js b/resources/jquery.ui/jquery.ui.autocomplete.js
index 9a12a6b0..41c13930 100644
--- a/resources/jquery.ui/jquery.ui.autocomplete.js
+++ b/resources/jquery.ui/jquery.ui.autocomplete.js
@@ -1,9 +1,9 @@
/*
- * jQuery UI Autocomplete 1.8.2
+ * jQuery UI Autocomplete 1.8.14
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Autocomplete
*
@@ -12,16 +12,32 @@
* jquery.ui.widget.js
* jquery.ui.position.js
*/
-(function( $ ) {
+(function( $, undefined ) {
+
+// used to prevent race conditions with remote data sources
+var requestIndex = 0;
$.widget( "ui.autocomplete", {
options: {
+ appendTo: "body",
+ autoFocus: false,
+ delay: 300,
minLength: 1,
- delay: 300
+ position: {
+ my: "left top",
+ at: "left bottom",
+ collision: "none"
+ },
+ source: null
},
+
+ pending: 0,
+
_create: function() {
var self = this,
- doc = this.element[ 0 ].ownerDocument;
+ doc = this.element[ 0 ].ownerDocument,
+ suppressKeyPress;
+
this.element
.addClass( "ui-autocomplete-input" )
.attr( "autocomplete", "off" )
@@ -32,6 +48,11 @@ $.widget( "ui.autocomplete", {
"aria-haspopup": "true"
})
.bind( "keydown.autocomplete", function( event ) {
+ if ( self.options.disabled || self.element.attr( "readonly" ) ) {
+ return;
+ }
+
+ suppressKeyPress = false;
var keyCode = $.ui.keyCode;
switch( event.keyCode ) {
case keyCode.PAGE_UP:
@@ -52,8 +73,11 @@ $.widget( "ui.autocomplete", {
break;
case keyCode.ENTER:
case keyCode.NUMPAD_ENTER:
- // when menu is open or has focus
+ // when menu is open and has focus
if ( self.menu.active ) {
+ // #6055 - Opera still allows the keypress to occur
+ // which causes forms to submit
+ suppressKeyPress = true;
event.preventDefault();
}
//passthrough - ENTER and TAB both select the current element
@@ -67,33 +91,38 @@ $.widget( "ui.autocomplete", {
self.element.val( self.term );
self.close( event );
break;
- case keyCode.LEFT:
- case keyCode.RIGHT:
- case keyCode.SHIFT:
- case keyCode.CONTROL:
- case keyCode.ALT:
- case keyCode.COMMAND:
- case keyCode.COMMAND_RIGHT:
- case keyCode.INSERT:
- case keyCode.CAPS_LOCK:
- case keyCode.END:
- case keyCode.HOME:
- // ignore metakeys (shift, ctrl, alt)
- break;
default:
// keypress is triggered before the input value is changed
clearTimeout( self.searching );
self.searching = setTimeout(function() {
- self.search( null, event );
+ // only search if the value has changed
+ if ( self.term != self.element.val() ) {
+ self.selectedItem = null;
+ self.search( null, event );
+ }
}, self.options.delay );
break;
}
})
+ .bind( "keypress.autocomplete", function( event ) {
+ if ( suppressKeyPress ) {
+ suppressKeyPress = false;
+ event.preventDefault();
+ }
+ })
.bind( "focus.autocomplete", function() {
+ if ( self.options.disabled ) {
+ return;
+ }
+
self.selectedItem = null;
self.previous = self.element.val();
})
.bind( "blur.autocomplete", function( event ) {
+ if ( self.options.disabled ) {
+ return;
+ }
+
clearTimeout( self.searching );
// clicks on the menu (or a button to trigger a search) will cause a blur event
self.closing = setTimeout(function() {
@@ -107,9 +136,26 @@ $.widget( "ui.autocomplete", {
};
this.menu = $( "<ul></ul>" )
.addClass( "ui-autocomplete" )
- .appendTo( "body", doc )
+ .appendTo( $( this.options.appendTo || "body", doc )[0] )
// prevent the close-on-blur in case of a "slow" click on the menu (long mousedown)
- .mousedown(function() {
+ .mousedown(function( event ) {
+ // clicking on the scrollbar causes focus to shift to the body
+ // but we can't detect a mouseup or a click immediately afterward
+ // so we have to track the next mousedown and close the menu if
+ // the user clicks somewhere outside of the autocomplete
+ var menuElement = self.menu.element[ 0 ];
+ if ( !$( event.target ).closest( ".ui-menu-item" ).length ) {
+ setTimeout(function() {
+ $( document ).one( 'mousedown', function( event ) {
+ if ( event.target !== self.element[ 0 ] &&
+ event.target !== menuElement &&
+ !$.ui.contains( menuElement, event.target ) ) {
+ self.close();
+ }
+ });
+ }, 1 );
+ }
+
// use another timeout to make sure the blur-event-handler on the input was already triggered
setTimeout(function() {
clearTimeout( self.closing );
@@ -118,7 +164,7 @@ $.widget( "ui.autocomplete", {
.menu({
focus: function( event, ui ) {
var item = ui.item.data( "item.autocomplete" );
- if ( false !== self._trigger( "focus", null, { item: item } ) ) {
+ if ( false !== self._trigger( "focus", event, { item: item } ) ) {
// use value to match what will end up in the input, if it was a key event
if ( /^key/.test(event.originalEvent.type) ) {
self.element.val( item.value );
@@ -126,21 +172,37 @@ $.widget( "ui.autocomplete", {
}
},
selected: function( event, ui ) {
- var item = ui.item.data( "item.autocomplete" );
- if ( false !== self._trigger( "select", event, { item: item } ) ) {
- self.element.val( item.value );
- }
- self.close( event );
+ var item = ui.item.data( "item.autocomplete" ),
+ previous = self.previous;
+
// only trigger when focus was lost (click on menu)
- var previous = self.previous;
if ( self.element[0] !== doc.activeElement ) {
self.element.focus();
self.previous = previous;
+ // #6109 - IE triggers two focus events and the second
+ // is asynchronous, so we need to reset the previous
+ // term synchronously and asynchronously :-(
+ setTimeout(function() {
+ self.previous = previous;
+ self.selectedItem = item;
+ }, 1);
}
+
+ if ( false !== self._trigger( "select", event, { item: item } ) ) {
+ self.element.val( item.value );
+ }
+ // reset the term after the select event
+ // this allows custom select handling to work properly
+ self.term = self.element.val();
+
+ self.close( event );
self.selectedItem = item;
},
blur: function( event, ui ) {
- if ( self.menu.element.is(":visible") ) {
+ // don't set the value of the text field if it's already correct
+ // this prevents moving the cursor unnecessarily
+ if ( self.menu.element.is(":visible") &&
+ ( self.element.val() !== self.term ) ) {
self.element.val( self.term );
}
}
@@ -166,15 +228,22 @@ $.widget( "ui.autocomplete", {
$.Widget.prototype.destroy.call( this );
},
- _setOption: function( key ) {
+ _setOption: function( key, value ) {
$.Widget.prototype._setOption.apply( this, arguments );
if ( key === "source" ) {
this._initSource();
}
+ if ( key === "appendTo" ) {
+ this.menu.element.appendTo( $( value || "body", this.element[0].ownerDocument )[0] )
+ }
+ if ( key === "disabled" && value && this.xhr ) {
+ this.xhr.abort();
+ }
},
_initSource: function() {
- var array,
+ var self = this,
+ array,
url;
if ( $.isArray(this.options.source) ) {
array = this.options.source;
@@ -184,7 +253,25 @@ $.widget( "ui.autocomplete", {
} else if ( typeof this.options.source === "string" ) {
url = this.options.source;
this.source = function( request, response ) {
- $.getJSON( url, request, response );
+ if ( self.xhr ) {
+ self.xhr.abort();
+ }
+ self.xhr = $.ajax({
+ url: url,
+ data: request,
+ dataType: "json",
+ autocompleteRequest: ++requestIndex,
+ success: function( data, status ) {
+ if ( this.autocompleteRequest === requestIndex ) {
+ response( data );
+ }
+ },
+ error: function() {
+ if ( this.autocompleteRequest === requestIndex ) {
+ response( [] );
+ }
+ }
+ });
};
} else {
this.source = this.options.source;
@@ -193,12 +280,16 @@ $.widget( "ui.autocomplete", {
search: function( value, event ) {
value = value != null ? value : this.element.val();
+
+ // always save the actual value, not the one passed as an argument
+ this.term = this.element.val();
+
if ( value.length < this.options.minLength ) {
return this.close( event );
}
clearTimeout( this.closing );
- if ( this._trigger("search") === false ) {
+ if ( this._trigger( "search", event ) === false ) {
return;
}
@@ -206,31 +297,32 @@ $.widget( "ui.autocomplete", {
},
_search: function( value ) {
- this.term = this.element
- .addClass( "ui-autocomplete-loading" )
- // always save the actual value, not the one passed as an argument
- .val();
+ this.pending++;
+ this.element.addClass( "ui-autocomplete-loading" );
this.source( { term: value }, this.response );
},
_response: function( content ) {
- if ( content.length ) {
+ if ( !this.options.disabled && content && content.length ) {
content = this._normalize( content );
this._suggest( content );
this._trigger( "open" );
} else {
this.close();
}
- this.element.removeClass( "ui-autocomplete-loading" );
+ this.pending--;
+ if ( !this.pending ) {
+ this.element.removeClass( "ui-autocomplete-loading" );
+ }
},
close: function( event ) {
clearTimeout( this.closing );
if ( this.menu.element.is(":visible") ) {
- this._trigger( "close", event );
this.menu.element.hide();
this.menu.deactivate();
+ this._trigger( "close", event );
}
},
@@ -261,26 +353,33 @@ $.widget( "ui.autocomplete", {
_suggest: function( items ) {
var ul = this.menu.element
- .empty()
- .zIndex( this.element.zIndex() + 1 ),
- menuWidth,
- textWidth;
+ .empty()
+ .zIndex( this.element.zIndex() + 1 );
this._renderMenu( ul, items );
// TODO refresh should check if the active item is still in the dom, removing the need for a manual deactivate
this.menu.deactivate();
this.menu.refresh();
- this.menu.element.show().position({
- my: "left top",
- at: "left bottom",
- of: this.element,
- collision: "none"
- });
- menuWidth = ul.width( "" ).width();
- textWidth = this.element.width();
- ul.width( Math.max( menuWidth, textWidth ) );
+ // size and position menu
+ ul.show();
+ this._resizeMenu();
+ ul.position( $.extend({
+ of: this.element
+ }, this.options.position ));
+
+ if ( this.options.autoFocus ) {
+ this.menu.next( new $.Event("mouseover") );
+ }
},
-
+
+ _resizeMenu: function() {
+ var ul = this.menu.element;
+ ul.outerWidth( Math.max(
+ ul.width( "" ).outerWidth(),
+ this.element.outerWidth()
+ ) );
+ },
+
_renderMenu: function( ul, items ) {
var self = this;
$.each( items, function( index, item ) {
@@ -291,7 +390,7 @@ $.widget( "ui.autocomplete", {
_renderItem: function( ul, item) {
return $( "<li></li>" )
.data( "item.autocomplete", item )
- .append( "<a>" + item.label + "</a>" )
+ .append( $( "<a></a>" ).text( item.label ) )
.appendTo( ul );
},
@@ -316,7 +415,7 @@ $.widget( "ui.autocomplete", {
$.extend( $.ui.autocomplete, {
escapeRegex: function( value ) {
- return value.replace( /([\^\$\(\)\[\]\{\}\*\.\+\?\|\\])/gi, "\\$1" );
+ return value.replace(/[-[\]{}()*+?.,\\^$|#\s]/g, "\\$&");
},
filter: function(array, term) {
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
@@ -335,9 +434,9 @@ $.extend( $.ui.autocomplete, {
* it for the next release. You're welcome to give it a try anyway and give us feedback,
* as long as you're okay with migrating your code later on. We can help with that, too.
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Menu
*
@@ -391,12 +490,12 @@ $.widget("ui.menu", {
this.deactivate();
if (this.hasScroll()) {
var offset = item.offset().top - this.element.offset().top,
- scroll = this.element.attr("scrollTop"),
+ scroll = this.element.scrollTop(),
elementHeight = this.element.height();
if (offset < 0) {
- this.element.attr("scrollTop", scroll + offset);
- } else if (offset > elementHeight) {
- this.element.attr("scrollTop", scroll + offset - elementHeight + item.height());
+ this.element.scrollTop( scroll + offset);
+ } else if (offset >= elementHeight) {
+ this.element.scrollTop( scroll + offset - elementHeight + item.height());
}
}
this.active = item.eq(0)
@@ -426,11 +525,11 @@ $.widget("ui.menu", {
},
first: function() {
- return this.active && !this.active.prev().length;
+ return this.active && !this.active.prevAll(".ui-menu-item").length;
},
last: function() {
- return this.active && !this.active.next().length;
+ return this.active && !this.active.nextAll(".ui-menu-item").length;
},
move: function(direction, edge, event) {
@@ -451,12 +550,12 @@ $.widget("ui.menu", {
if (this.hasScroll()) {
// TODO merge with no-scroll-else
if (!this.active || this.last()) {
- this.activate(event, this.element.children(":first"));
+ this.activate(event, this.element.children(".ui-menu-item:first"));
return;
}
var base = this.active.offset().top,
height = this.element.height(),
- result = this.element.children("li").filter(function() {
+ result = this.element.children(".ui-menu-item").filter(function() {
var close = $(this).offset().top - base - height + $(this).height();
// TODO improve approximation
return close < 10 && close > -10;
@@ -464,11 +563,12 @@ $.widget("ui.menu", {
// TODO try to catch this earlier when scrollTop indicates the last page anyway
if (!result.length) {
- result = this.element.children(":last");
+ result = this.element.children(".ui-menu-item:last");
}
this.activate(event, result);
} else {
- this.activate(event, this.element.children(!this.active || this.last() ? ":first" : ":last"));
+ this.activate(event, this.element.children(".ui-menu-item")
+ .filter(!this.active || this.last() ? ":first" : ":last"));
}
},
@@ -477,13 +577,13 @@ $.widget("ui.menu", {
if (this.hasScroll()) {
// TODO merge with no-scroll-else
if (!this.active || this.first()) {
- this.activate(event, this.element.children(":last"));
+ this.activate(event, this.element.children(".ui-menu-item:last"));
return;
}
var base = this.active.offset().top,
height = this.element.height();
- result = this.element.children("li").filter(function() {
+ result = this.element.children(".ui-menu-item").filter(function() {
var close = $(this).offset().top - base + height - $(this).height();
// TODO improve approximation
return close < 10 && close > -10;
@@ -491,16 +591,17 @@ $.widget("ui.menu", {
// TODO try to catch this earlier when scrollTop indicates the last page anyway
if (!result.length) {
- result = this.element.children(":first");
+ result = this.element.children(".ui-menu-item:first");
}
this.activate(event, result);
} else {
- this.activate(event, this.element.children(!this.active || this.first() ? ":last" : ":first"));
+ this.activate(event, this.element.children(".ui-menu-item")
+ .filter(!this.active || this.first() ? ":last" : ":first"));
}
},
hasScroll: function() {
- return this.element.height() < this.element.attr("scrollHeight");
+ return this.element.height() < this.element[ $.fn.prop ? "prop" : "attr" ]("scrollHeight");
},
select: function( event ) {
diff --git a/resources/jquery.ui/jquery.ui.button.js b/resources/jquery.ui/jquery.ui.button.js
index d318e3de..9a70a01d 100644
--- a/resources/jquery.ui/jquery.ui.button.js
+++ b/resources/jquery.ui/jquery.ui.button.js
@@ -1,9 +1,9 @@
/*
- * jQuery UI Button 1.8.2
+ * jQuery UI Button 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Button
*
@@ -11,12 +11,12 @@
* jquery.ui.core.js
* jquery.ui.widget.js
*/
-(function( $ ) {
+(function( $, undefined ) {
var lastActive,
baseClasses = "ui-button ui-widget ui-state-default ui-corner-all",
stateClasses = "ui-state-hover ui-state-active ",
- typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon ui-button-text-only",
+ typeClasses = "ui-button-icons-only ui-button-icon-only ui-button-text-icons ui-button-text-icon-primary ui-button-text-icon-secondary ui-button-text-only",
formResetHandler = function( event ) {
$( ":ui-button", event.target.form ).each(function() {
var inst = $( this ).data( "button" );
@@ -44,6 +44,7 @@ var lastActive,
$.widget( "ui.button", {
options: {
+ disabled: null,
text: true,
label: null,
icons: {
@@ -56,6 +57,10 @@ $.widget( "ui.button", {
.unbind( "reset.button" )
.bind( "reset.button", formResetHandler );
+ if ( typeof this.options.disabled !== "boolean" ) {
+ this.options.disabled = this.element.attr( "disabled" );
+ }
+
this._determineButtonType();
this.hasTitle = !!this.buttonElement.attr( "title" );
@@ -195,8 +200,16 @@ $.widget( "ui.button", {
if ( this.type === "checkbox" || this.type === "radio" ) {
// we don't search against the document in case the element
// is disconnected from the DOM
- this.buttonElement = this.element.parents().last()
- .find( "[for=" + this.element.attr("id") + "]" );
+ var ancestor = this.element.parents().filter(":last"),
+ labelSelector = "label[for=" + this.element.attr("id") + "]";
+ this.buttonElement = ancestor.find( labelSelector );
+ if ( !this.buttonElement.length ) {
+ ancestor = ancestor.length ? ancestor.siblings() : this.element.siblings();
+ this.buttonElement = ancestor.filter( labelSelector );
+ if ( !this.buttonElement.length ) {
+ this.buttonElement = ancestor.find( labelSelector );
+ }
+ }
this.element.addClass( "ui-helper-hidden-accessible" );
var checked = this.element.is( ":checked" );
@@ -285,34 +298,43 @@ $.widget( "ui.button", {
.appendTo( buttonElement.empty() )
.text(),
icons = this.options.icons,
- multipleIcons = icons.primary && icons.secondary;
+ multipleIcons = icons.primary && icons.secondary,
+ buttonClasses = [];
+
if ( icons.primary || icons.secondary ) {
- buttonElement.addClass( "ui-button-text-icon" +
- ( multipleIcons ? "s" : "" ) );
+ if ( this.options.text ) {
+ buttonClasses.push( "ui-button-text-icon" + ( multipleIcons ? "s" : ( icons.primary ? "-primary" : "-secondary" ) ) );
+ }
+
if ( icons.primary ) {
buttonElement.prepend( "<span class='ui-button-icon-primary ui-icon " + icons.primary + "'></span>" );
}
+
if ( icons.secondary ) {
buttonElement.append( "<span class='ui-button-icon-secondary ui-icon " + icons.secondary + "'></span>" );
}
+
if ( !this.options.text ) {
- buttonElement
- .addClass( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" )
- .removeClass( "ui-button-text-icons ui-button-text-icon" );
+ buttonClasses.push( multipleIcons ? "ui-button-icons-only" : "ui-button-icon-only" );
+
if ( !this.hasTitle ) {
buttonElement.attr( "title", buttonText );
}
}
} else {
- buttonElement.addClass( "ui-button-text-only" );
+ buttonClasses.push( "ui-button-text-only" );
}
+ buttonElement.addClass( buttonClasses.join( " " ) );
}
});
$.widget( "ui.buttonset", {
+ options: {
+ items: ":button, :submit, :reset, :checkbox, :radio, a, :data(button)"
+ },
+
_create: function() {
this.element.addClass( "ui-buttonset" );
- this._init();
},
_init: function() {
@@ -328,7 +350,7 @@ $.widget( "ui.buttonset", {
},
refresh: function() {
- this.buttons = this.element.find( ":button, :submit, :reset, :checkbox, :radio, a, :data(button)" )
+ this.buttons = this.element.find( this.options.items )
.filter( ":ui-button" )
.button( "refresh" )
.end()
diff --git a/resources/jquery.ui/jquery.ui.core.js b/resources/jquery.ui/jquery.ui.core.js
index 80448028..4589a47e 100644
--- a/resources/jquery.ui/jquery.ui.core.js
+++ b/resources/jquery.ui/jquery.ui.core.js
@@ -1,82 +1,24 @@
/*!
- * jQuery UI 1.8.2
+ * jQuery UI 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI
*/
-
-(function($) {
+(function( $, undefined ) {
// prevent duplicate loading
// this is only a problem because we proxy existing functions
// and we don't want to double proxy them
$.ui = $.ui || {};
-if ($.ui.version) {
+if ( $.ui.version ) {
return;
}
-//Helper functions and ui object
-$.extend($.ui, {
- version: "1.8.2",
-
- // $.ui.plugin is deprecated. Use the proxy pattern instead.
- plugin: {
- add: function(module, option, set) {
- var proto = $.ui[module].prototype;
- for(var i in set) {
- proto.plugins[i] = proto.plugins[i] || [];
- proto.plugins[i].push([option, set[i]]);
- }
- },
- call: function(instance, name, args) {
- var set = instance.plugins[name];
- if(!set || !instance.element[0].parentNode) { return; }
-
- for (var i = 0; i < set.length; i++) {
- if (instance.options[set[i][0]]) {
- set[i][1].apply(instance.element, args);
- }
- }
- }
- },
-
- contains: function(a, b) {
- return document.compareDocumentPosition
- ? a.compareDocumentPosition(b) & 16
- : a !== b && a.contains(b);
- },
-
- hasScroll: function(el, a) {
-
- //If overflow is hidden, the element might have extra content, but the user wants to hide it
- if ($(el).css('overflow') == 'hidden') { return false; }
-
- var scroll = (a && a == 'left') ? 'scrollLeft' : 'scrollTop',
- has = false;
-
- if (el[scroll] > 0) { return true; }
-
- // TODO: determine which cases actually cause this to happen
- // if the element doesn't have the scroll set, see if it's possible to
- // set the scroll
- el[scroll] = 1;
- has = (el[scroll] > 0);
- el[scroll] = 0;
- return has;
- },
-
- isOverAxis: function(x, reference, size) {
- //Determines when x coordinate is over "b" element axis
- return (x > reference) && (x < (reference + size));
- },
-
- isOver: function(y, x, top, left, height, width) {
- //Determines when x, y coordinates is over "b" element
- return $.ui.isOverAxis(y, top, height) && $.ui.isOverAxis(x, left, width);
- },
+$.extend( $.ui, {
+ version: "1.8.11",
keyCode: {
ALT: 18,
@@ -114,36 +56,26 @@ $.extend($.ui, {
}
});
-//jQuery plugins
+// plugins
$.fn.extend({
_focus: $.fn.focus,
- focus: function(delay, fn) {
- return typeof delay === 'number'
- ? this.each(function() {
+ focus: function( delay, fn ) {
+ return typeof delay === "number" ?
+ this.each(function() {
var elem = this;
setTimeout(function() {
- $(elem).focus();
- (fn && fn.call(elem));
- }, delay);
- })
- : this._focus.apply(this, arguments);
- },
-
- enableSelection: function() {
- return this
- .attr('unselectable', 'off')
- .css('MozUserSelect', '');
- },
-
- disableSelection: function() {
- return this
- .attr('unselectable', 'on')
- .css('MozUserSelect', 'none');
+ $( elem ).focus();
+ if ( fn ) {
+ fn.call( elem );
+ }
+ }, delay );
+ }) :
+ this._focus.apply( this, arguments );
},
scrollParent: function() {
var scrollParent;
- if(($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
+ if (($.browser.msie && (/(static|relative)/).test(this.css('position'))) || (/absolute/).test(this.css('position'))) {
scrollParent = this.parents().filter(function() {
return (/(relative|absolute|fixed)/).test($.curCSS(this,'position',1)) && (/(auto|scroll)/).test($.curCSS(this,'overflow',1)+$.curCSS(this,'overflow-y',1)+$.curCSS(this,'overflow-x',1));
}).eq(0);
@@ -156,26 +88,25 @@ $.fn.extend({
return (/fixed/).test(this.css('position')) || !scrollParent.length ? $(document) : scrollParent;
},
- zIndex: function(zIndex) {
- if (zIndex !== undefined) {
- return this.css('zIndex', zIndex);
+ zIndex: function( zIndex ) {
+ if ( zIndex !== undefined ) {
+ return this.css( "zIndex", zIndex );
}
-
- if (this.length) {
- var elem = $(this[0]), position, value;
- while (elem.length && elem[0] !== document) {
+
+ if ( this.length ) {
+ var elem = $( this[ 0 ] ), position, value;
+ while ( elem.length && elem[ 0 ] !== document ) {
// Ignore z-index if position is set to a value where z-index is ignored by the browser
// This makes behavior of this function consistent across browsers
// WebKit always returns auto if the element is positioned
- position = elem.css('position');
- if (position == 'absolute' || position == 'relative' || position == 'fixed')
- {
+ position = elem.css( "position" );
+ if ( position === "absolute" || position === "relative" || position === "fixed" ) {
// IE returns 0 when zIndex is not specified
// other browsers return a string
// we ignore the case of nested elements with an explicit value of 0
// <div style="z-index: -10;"><div style="z-index: 0;"></div></div>
- value = parseInt(elem.css('zIndex'));
- if (!isNaN(value) && value != 0) {
+ value = parseInt( elem.css( "zIndex" ), 10 );
+ if ( !isNaN( value ) && value !== 0 ) {
return value;
}
}
@@ -184,33 +115,194 @@ $.fn.extend({
}
return 0;
+ },
+
+ disableSelection: function() {
+ return this.bind( ( $.support.selectstart ? "selectstart" : "mousedown" ) +
+ ".ui-disableSelection", function( event ) {
+ event.preventDefault();
+ });
+ },
+
+ enableSelection: function() {
+ return this.unbind( ".ui-disableSelection" );
+ }
+});
+
+$.each( [ "Width", "Height" ], function( i, name ) {
+ var side = name === "Width" ? [ "Left", "Right" ] : [ "Top", "Bottom" ],
+ type = name.toLowerCase(),
+ orig = {
+ innerWidth: $.fn.innerWidth,
+ innerHeight: $.fn.innerHeight,
+ outerWidth: $.fn.outerWidth,
+ outerHeight: $.fn.outerHeight
+ };
+
+ function reduce( elem, size, border, margin ) {
+ $.each( side, function() {
+ size -= parseFloat( $.curCSS( elem, "padding" + this, true) ) || 0;
+ if ( border ) {
+ size -= parseFloat( $.curCSS( elem, "border" + this + "Width", true) ) || 0;
+ }
+ if ( margin ) {
+ size -= parseFloat( $.curCSS( elem, "margin" + this, true) ) || 0;
+ }
+ });
+ return size;
}
+
+ $.fn[ "inner" + name ] = function( size ) {
+ if ( size === undefined ) {
+ return orig[ "inner" + name ].call( this );
+ }
+
+ return this.each(function() {
+ $( this ).css( type, reduce( this, size ) + "px" );
+ });
+ };
+
+ $.fn[ "outer" + name] = function( size, margin ) {
+ if ( typeof size !== "number" ) {
+ return orig[ "outer" + name ].call( this, size );
+ }
+
+ return this.each(function() {
+ $( this).css( type, reduce( this, size, true, margin ) + "px" );
+ });
+ };
});
+// selectors
+function visible( element ) {
+ return !$( element ).parents().andSelf().filter(function() {
+ return $.curCSS( this, "visibility" ) === "hidden" ||
+ $.expr.filters.hidden( this );
+ }).length;
+}
-//Additional selectors
-$.extend($.expr[':'], {
- data: function(elem, i, match) {
- return !!$.data(elem, match[3]);
+$.extend( $.expr[ ":" ], {
+ data: function( elem, i, match ) {
+ return !!$.data( elem, match[ 3 ] );
},
- focusable: function(element) {
+ focusable: function( element ) {
var nodeName = element.nodeName.toLowerCase(),
- tabIndex = $.attr(element, 'tabindex');
- return (/input|select|textarea|button|object/.test(nodeName)
+ tabIndex = $.attr( element, "tabindex" );
+ if ( "area" === nodeName ) {
+ var map = element.parentNode,
+ mapName = map.name,
+ img;
+ if ( !element.href || !mapName || map.nodeName.toLowerCase() !== "map" ) {
+ return false;
+ }
+ img = $( "img[usemap=#" + mapName + "]" )[0];
+ return !!img && visible( img );
+ }
+ return ( /input|select|textarea|button|object/.test( nodeName )
? !element.disabled
- : 'a' == nodeName || 'area' == nodeName
- ? element.href || !isNaN(tabIndex)
- : !isNaN(tabIndex))
+ : "a" == nodeName
+ ? element.href || !isNaN( tabIndex )
+ : !isNaN( tabIndex ))
// the element and all of its ancestors must be visible
- // the browser may report that the area is hidden
- && !$(element)['area' == nodeName ? 'parents' : 'closest'](':hidden').length;
+ && visible( element );
},
- tabbable: function(element) {
- var tabIndex = $.attr(element, 'tabindex');
- return (isNaN(tabIndex) || tabIndex >= 0) && $(element).is(':focusable');
+ tabbable: function( element ) {
+ var tabIndex = $.attr( element, "tabindex" );
+ return ( isNaN( tabIndex ) || tabIndex >= 0 ) && $( element ).is( ":focusable" );
+ }
+});
+
+// support
+$(function() {
+ var body = document.body,
+ div = body.appendChild( div = document.createElement( "div" ) );
+
+ $.extend( div.style, {
+ minHeight: "100px",
+ height: "auto",
+ padding: 0,
+ borderWidth: 0
+ });
+
+ $.support.minHeight = div.offsetHeight === 100;
+ $.support.selectstart = "onselectstart" in div;
+
+ // set display to none to avoid a layout bug in IE
+ // http://dev.jquery.com/ticket/4014
+ body.removeChild( div ).style.display = "none";
+});
+
+
+
+
+
+// deprecated
+$.extend( $.ui, {
+ // $.ui.plugin is deprecated. Use the proxy pattern instead.
+ plugin: {
+ add: function( module, option, set ) {
+ var proto = $.ui[ module ].prototype;
+ for ( var i in set ) {
+ proto.plugins[ i ] = proto.plugins[ i ] || [];
+ proto.plugins[ i ].push( [ option, set[ i ] ] );
+ }
+ },
+ call: function( instance, name, args ) {
+ var set = instance.plugins[ name ];
+ if ( !set || !instance.element[ 0 ].parentNode ) {
+ return;
+ }
+
+ for ( var i = 0; i < set.length; i++ ) {
+ if ( instance.options[ set[ i ][ 0 ] ] ) {
+ set[ i ][ 1 ].apply( instance.element, args );
+ }
+ }
+ }
+ },
+
+ // will be deprecated when we switch to jQuery 1.4 - use jQuery.contains()
+ contains: function( a, b ) {
+ return document.compareDocumentPosition ?
+ a.compareDocumentPosition( b ) & 16 :
+ a !== b && a.contains( b );
+ },
+
+ // only used by resizable
+ hasScroll: function( el, a ) {
+
+ //If overflow is hidden, the element might have extra content, but the user wants to hide it
+ if ( $( el ).css( "overflow" ) === "hidden") {
+ return false;
+ }
+
+ var scroll = ( a && a === "left" ) ? "scrollLeft" : "scrollTop",
+ has = false;
+
+ if ( el[ scroll ] > 0 ) {
+ return true;
+ }
+
+ // TODO: determine which cases actually cause this to happen
+ // if the element doesn't have the scroll set, see if it's possible to
+ // set the scroll
+ el[ scroll ] = 1;
+ has = ( el[ scroll ] > 0 );
+ el[ scroll ] = 0;
+ return has;
+ },
+
+ // these are odd functions, fix the API or move into individual plugins
+ isOverAxis: function( x, reference, size ) {
+ //Determines when x coordinate is over "b" element axis
+ return ( x > reference ) && ( x < ( reference + size ) );
+ },
+ isOver: function( y, x, top, left, height, width ) {
+ //Determines when x, y coordinates is over "b" element
+ return $.ui.isOverAxis( y, top, height ) && $.ui.isOverAxis( x, left, width );
}
});
-})(jQuery);
+})( jQuery );
diff --git a/resources/jquery.ui/jquery.ui.dialog.js b/resources/jquery.ui/jquery.ui.dialog.js
index 5f9b1f8b..f0656a2f 100644
--- a/resources/jquery.ui/jquery.ui.dialog.js
+++ b/resources/jquery.ui/jquery.ui.dialog.js
@@ -1,9 +1,9 @@
/*
- * jQuery UI Dialog 1.8.2
+ * jQuery UI Dialog 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Dialog
*
@@ -16,13 +16,28 @@
* jquery.ui.position.js
* jquery.ui.resizable.js
*/
-(function($) {
+(function( $, undefined ) {
var uiDialogClasses =
- 'ui-dialog ' +
- 'ui-widget ' +
- 'ui-widget-content ' +
- 'ui-corner-all ';
+ 'ui-dialog ' +
+ 'ui-widget ' +
+ 'ui-widget-content ' +
+ 'ui-corner-all ',
+ sizeRelatedOptions = {
+ buttons: true,
+ height: true,
+ maxHeight: true,
+ maxWidth: true,
+ minHeight: true,
+ minWidth: true,
+ width: true
+ },
+ resizableRelatedOptions = {
+ maxHeight: true,
+ maxWidth: true,
+ minHeight: true,
+ minWidth: true
+ };
$.widget("ui.dialog", {
options: {
@@ -39,7 +54,18 @@ $.widget("ui.dialog", {
minHeight: 150,
minWidth: 150,
modal: false,
- position: 'center',
+ position: {
+ my: 'center',
+ at: 'center',
+ collision: 'fit',
+ // ensure that the titlebar is never outside the document
+ using: function(pos) {
+ var topOffset = $(this).css(pos).offset().top;
+ if (topOffset < 0) {
+ $(this).css('top', pos.top - topOffset);
+ }
+ }
+ },
resizable: true,
show: null,
stack: true,
@@ -47,13 +73,19 @@ $.widget("ui.dialog", {
width: 300,
zIndex: 1000
},
+
_create: function() {
this.originalTitle = this.element.attr('title');
+ // #5742 - .attr() might return a DOMElement
+ if ( typeof this.originalTitle !== "string" ) {
+ this.originalTitle = "";
+ }
+ this.options.title = this.options.title || this.originalTitle;
var self = this,
options = self.options,
- title = options.title || self.originalTitle || '&#160;',
+ title = options.title || '&#160;',
titleId = $.ui.dialog.getTitleId(self.element),
uiDialog = (self.uiDialog = $('<div></div>'))
@@ -161,6 +193,7 @@ $.widget("ui.dialog", {
uiDialog.bgiframe();
}
},
+
_init: function() {
if ( this.options.autoOpen ) {
this.open();
@@ -187,14 +220,14 @@ $.widget("ui.dialog", {
return self;
},
-
+
widget: function() {
return this.uiDialog;
},
close: function(event) {
var self = this,
- maxZ;
+ maxZ, thisZ;
if (false === self._trigger('beforeClose', event)) {
return;
@@ -223,7 +256,10 @@ $.widget("ui.dialog", {
maxZ = 0;
$('.ui-dialog').each(function() {
if (this !== self.uiDialog[0]) {
- maxZ = Math.max(maxZ, $(this).css('z-index'));
+ thisZ = $(this).css('z-index');
+ if(!isNaN(thisZ)) {
+ maxZ = Math.max(maxZ, thisZ);
+ }
}
});
$.ui.dialog.maxZ = maxZ;
@@ -242,12 +278,12 @@ $.widget("ui.dialog", {
var self = this,
options = self.options,
saveScroll;
-
+
if ((options.modal && !force) ||
(!options.stack && !options.modal)) {
return self._trigger('focus', event);
}
-
+
if (options.zIndex > $.ui.dialog.maxZ) {
$.ui.dialog.maxZ = options.zIndex;
}
@@ -275,9 +311,6 @@ $.widget("ui.dialog", {
uiDialog = self.uiDialog;
self.overlay = options.modal ? new $.ui.dialog.overlay(self) : null;
- if (uiDialog.next().length) {
- uiDialog.appendTo('body');
- }
self._size();
self._position(options.position);
uiDialog.show(options.show);
@@ -289,11 +322,11 @@ $.widget("ui.dialog", {
if (event.keyCode !== $.ui.keyCode.TAB) {
return;
}
-
+
var tabbables = $(':tabbable', this),
first = tabbables.filter(':first'),
last = tabbables.filter(':last');
-
+
if (event.target === last[0] && !event.shiftKey) {
first.focus(1);
return false;
@@ -306,15 +339,12 @@ $.widget("ui.dialog", {
// set focus to the first tabbable element in the content area or the first button
// if there are no tabbable elements, set focus on the dialog itself
- $([])
- .add(uiDialog.find('.ui-dialog-content :tabbable:first'))
- .add(uiDialog.find('.ui-dialog-buttonpane :tabbable:first'))
- .add(uiDialog)
- .filter(':first')
- .focus();
+ $(self.element.find(':tabbable').get().concat(
+ uiDialog.find('.ui-dialog-buttonpane :tabbable').get().concat(
+ uiDialog.get()))).eq(0).focus();
- self._trigger('open');
self._isOpen = true;
+ self._trigger('open');
return self;
},
@@ -327,7 +357,10 @@ $.widget("ui.dialog", {
'ui-dialog-buttonpane ' +
'ui-widget-content ' +
'ui-helper-clearfix'
- );
+ ),
+ uiButtonSet = $( "<div></div>" )
+ .addClass( "ui-dialog-buttonset" )
+ .appendTo( uiDialogButtonPane );
// if we already have a button pane, remove it
self.uiDialog.find('.ui-dialog-buttonpane').remove();
@@ -338,11 +371,17 @@ $.widget("ui.dialog", {
});
}
if (hasButtons) {
- $.each(buttons, function(name, fn) {
+ $.each(buttons, function(name, props) {
+ props = $.isFunction( props ) ?
+ { click: props, text: name } :
+ props;
var button = $('<button type="button"></button>')
- .text(name)
- .click(function() { fn.apply(self.element[0], arguments); })
- .appendTo(uiDialogButtonPane);
+ .attr( props, true )
+ .unbind('click')
+ .click(function() {
+ props.click.apply(self.element[0], arguments);
+ })
+ .appendTo(uiButtonSet);
if ($.fn.button) {
button.button();
}
@@ -450,40 +489,34 @@ $.widget("ui.dialog", {
offset = [0, 0],
isVisible;
- position = position || $.ui.dialog.prototype.options.position;
+ if (position) {
+ // deep extending converts arrays to objects in jQuery <= 1.3.2 :-(
+ // if (typeof position == 'string' || $.isArray(position)) {
+ // myAt = $.isArray(position) ? position : position.split(' ');
- // deep extending converts arrays to objects in jQuery <= 1.3.2 :-(
-// if (typeof position == 'string' || $.isArray(position)) {
-// myAt = $.isArray(position) ? position : position.split(' ');
+ if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) {
+ myAt = position.split ? position.split(' ') : [position[0], position[1]];
+ if (myAt.length === 1) {
+ myAt[1] = myAt[0];
+ }
- if (typeof position === 'string' || (typeof position === 'object' && '0' in position)) {
- myAt = position.split ? position.split(' ') : [position[0], position[1]];
- if (myAt.length === 1) {
- myAt[1] = myAt[0];
- }
+ $.each(['left', 'top'], function(i, offsetPosition) {
+ if (+myAt[i] === myAt[i]) {
+ offset[i] = myAt[i];
+ myAt[i] = offsetPosition;
+ }
+ });
- $.each(['left', 'top'], function(i, offsetPosition) {
- if (+myAt[i] === myAt[i]) {
- offset[i] = myAt[i];
- myAt[i] = offsetPosition;
- }
- });
- } else if (typeof position === 'object') {
- if ('left' in position) {
- myAt[0] = 'left';
- offset[0] = position.left;
- } else if ('right' in position) {
- myAt[0] = 'right';
- offset[0] = -position.right;
- }
+ position = {
+ my: myAt.join(" "),
+ at: myAt.join(" "),
+ offset: offset.join(" ")
+ };
+ }
- if ('top' in position) {
- myAt[1] = 'top';
- offset[1] = position.top;
- } else if ('bottom' in position) {
- myAt[1] = 'bottom';
- offset[1] = -position.bottom;
- }
+ position = $.extend({}, $.ui.dialog.prototype.options.position, position);
+ } else {
+ position = $.ui.dialog.prototype.options.position;
}
// need to show the dialog to get the actual offset in the position plugin
@@ -494,31 +527,40 @@ $.widget("ui.dialog", {
this.uiDialog
// workaround for jQuery bug #5781 http://dev.jquery.com/ticket/5781
.css({ top: 0, left: 0 })
- .position({
- my: myAt.join(' '),
- at: myAt.join(' '),
- offset: offset.join(' '),
- of: window,
- collision: 'fit',
- // ensure that the titlebar is never outside the document
- using: function(pos) {
- var topOffset = $(this).css(pos).offset().top;
- if (topOffset < 0) {
- $(this).css('top', pos.top - topOffset);
- }
- }
- });
+ .position($.extend({ of: window }, position));
if (!isVisible) {
this.uiDialog.hide();
}
},
- _setOption: function(key, value){
+ _setOptions: function( options ) {
var self = this,
- uiDialog = self.uiDialog,
- isResizable = uiDialog.is(':data(resizable)'),
+ resizableOptions = {},
resize = false;
-
+
+ $.each( options, function( key, value ) {
+ self._setOption( key, value );
+
+ if ( key in sizeRelatedOptions ) {
+ resize = true;
+ }
+ if ( key in resizableRelatedOptions ) {
+ resizableOptions[ key ] = value;
+ }
+ });
+
+ if ( resize ) {
+ this._size();
+ }
+ if ( this.uiDialog.is( ":data(resizable)" ) ) {
+ this.uiDialog.resizable( "option", resizableOptions );
+ }
+ },
+
+ _setOption: function(key, value){
+ var self = this,
+ uiDialog = self.uiDialog;
+
switch (key) {
//handling of deprecated beforeclose (vs beforeClose) option
//Ticket #4669 http://dev.jqueryui.com/ticket/4669
@@ -530,7 +572,7 @@ $.widget("ui.dialog", {
self._createButtons(value);
break;
case "closeText":
- // convert whatever was passed in to a string, for text() to not throw up
+ // ensure that we always pass a string
self.uiDialogTitlebarCloseText.text("" + value);
break;
case "dialogClass":
@@ -546,44 +588,21 @@ $.widget("ui.dialog", {
}
break;
case "draggable":
- if (value) {
- self._makeDraggable();
- } else {
- uiDialog.draggable('destroy');
- }
- break;
- case "height":
- resize = true;
- break;
- case "maxHeight":
- if (isResizable) {
- uiDialog.resizable('option', 'maxHeight', value);
- }
- resize = true;
- break;
- case "maxWidth":
- if (isResizable) {
- uiDialog.resizable('option', 'maxWidth', value);
- }
- resize = true;
- break;
- case "minHeight":
- if (isResizable) {
- uiDialog.resizable('option', 'minHeight', value);
+ var isDraggable = uiDialog.is( ":data(draggable)" );
+ if ( isDraggable && !value ) {
+ uiDialog.draggable( "destroy" );
}
- resize = true;
- break;
- case "minWidth":
- if (isResizable) {
- uiDialog.resizable('option', 'minWidth', value);
+
+ if ( !isDraggable && value ) {
+ self._makeDraggable();
}
- resize = true;
break;
case "position":
self._position(value);
break;
case "resizable":
// currently resizable, becoming non-resizable
+ var isResizable = uiDialog.is( ":data(resizable)" );
if (isResizable && !value) {
uiDialog.resizable('destroy');
}
@@ -602,15 +621,9 @@ $.widget("ui.dialog", {
// convert whatever was passed in o a string, for html() to not throw up
$(".ui-dialog-title", self.uiDialogTitlebar).html("" + (value || '&#160;'));
break;
- case "width":
- resize = true;
- break;
}
$.Widget.prototype._setOption.apply(self, arguments);
- if (resize) {
- self._size();
- }
},
_size: function() {
@@ -618,16 +631,21 @@ $.widget("ui.dialog", {
* divs will both have width and height set, so we need to reset them
*/
var options = this.options,
- nonContentHeight;
+ nonContentHeight,
+ minContentHeight,
+ isVisible = this.uiDialog.is( ":visible" );
// reset content sizing
- // hide for non content measurement because height: 0 doesn't work in IE quirks mode (see #4350)
- this.element.css({
+ this.element.show().css({
width: 'auto',
minHeight: 0,
height: 0
});
+ if (options.minWidth > options.width) {
+ options.width = options.minWidth;
+ }
+
// reset wrapper sizing
// determine the height of all the non-content elements
nonContentHeight = this.uiDialog.css({
@@ -635,16 +653,26 @@ $.widget("ui.dialog", {
width: options.width
})
.height();
-
- this.element
- .css(options.height === 'auto' ? {
- minHeight: Math.max(options.minHeight - nonContentHeight, 0),
- height: 'auto'
- } : {
- minHeight: 0,
- height: Math.max(options.height - nonContentHeight, 0)
- })
- .show();
+ minContentHeight = Math.max( 0, options.minHeight - nonContentHeight );
+
+ if ( options.height === "auto" ) {
+ // only needed for IE6 support
+ if ( $.support.minHeight ) {
+ this.element.css({
+ minHeight: minContentHeight,
+ height: "auto"
+ });
+ } else {
+ this.uiDialog.show();
+ var autoHeight = this.element.css( "height", "auto" ).height();
+ if ( !isVisible ) {
+ this.uiDialog.hide();
+ }
+ this.element.height( Math.max( autoHeight, minContentHeight ) );
+ }
+ } else {
+ this.element.height( Math.max( options.height - nonContentHeight, 0 ) );
+ }
if (this.uiDialog.is(':data(resizable)')) {
this.uiDialog.resizable('option', 'minHeight', this._minHeight());
@@ -653,7 +681,7 @@ $.widget("ui.dialog", {
});
$.extend($.ui.dialog, {
- version: "1.8.2",
+ version: "1.8.11",
uuid: 0,
maxZ: 0,
@@ -689,7 +717,10 @@ $.extend($.ui.dialog.overlay, {
if ($.ui.dialog.overlay.instances.length) {
$(document).bind($.ui.dialog.overlay.events, function(event) {
// stop events if the z-index of the target is < the z-index of the overlay
- return ($(event.target).zIndex() >= $.ui.dialog.overlay.maxZ);
+ // we cannot return true when we don't want to cancel the event (#3523)
+ if ($(event.target).zIndex() < $.ui.dialog.overlay.maxZ) {
+ return false;
+ }
});
}
}, 1);
@@ -724,7 +755,10 @@ $.extend($.ui.dialog.overlay, {
},
destroy: function($el) {
- this.oldInstances.push(this.instances.splice($.inArray($el, this.instances), 1)[0]);
+ var indexOf = $.inArray($el, this.instances);
+ if (indexOf != -1){
+ this.oldInstances.push(this.instances.splice(indexOf, 1)[0]);
+ }
if (this.instances.length === 0) {
$([document, window]).unbind('.dialog-overlay');
diff --git a/resources/jquery.ui/jquery.ui.draggable.js b/resources/jquery.ui/jquery.ui.draggable.js
index b4c1070d..5f367616 100644
--- a/resources/jquery.ui/jquery.ui.draggable.js
+++ b/resources/jquery.ui/jquery.ui.draggable.js
@@ -1,9 +1,9 @@
/*
- * jQuery UI Draggable 1.8.2
+ * jQuery UI Draggable 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Draggables
*
@@ -12,7 +12,7 @@
* jquery.ui.mouse.js
* jquery.ui.widget.js
*/
-(function($) {
+(function( $, undefined ) {
$.widget("ui.draggable", $.ui.mouse, {
widgetEventPrefix: "drag",
@@ -192,8 +192,8 @@ $.widget("ui.draggable", $.ui.mouse, {
this.dropped = false;
}
- //if the original element is removed, don't bother to continue
- if(!this.element[0] || !this.element[0].parentNode)
+ //if the original element is removed, don't bother to continue if helper is set to "original"
+ if((!this.element[0] || !this.element[0].parentNode) && this.options.helper == "original")
return false;
if((this.options.revert == "invalid" && !dropped) || (this.options.revert == "valid" && dropped) || this.options.revert === true || ($.isFunction(this.options.revert) && this.options.revert.call(this.element, dropped))) {
@@ -317,7 +317,9 @@ $.widget("ui.draggable", $.ui.mouse, {
_cacheMargins: function() {
this.margins = {
left: (parseInt(this.element.css("marginLeft"),10) || 0),
- top: (parseInt(this.element.css("marginTop"),10) || 0)
+ top: (parseInt(this.element.css("marginTop"),10) || 0),
+ right: (parseInt(this.element.css("marginRight"),10) || 0),
+ bottom: (parseInt(this.element.css("marginBottom"),10) || 0)
};
},
@@ -333,10 +335,10 @@ $.widget("ui.draggable", $.ui.mouse, {
var o = this.options;
if(o.containment == 'parent') o.containment = this.helper[0].parentNode;
if(o.containment == 'document' || o.containment == 'window') this.containment = [
- 0 - this.offset.relative.left - this.offset.parent.left,
- 0 - this.offset.relative.top - this.offset.parent.top,
- $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
- ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
+ (o.containment == 'document' ? 0 : $(window).scrollLeft()) - this.offset.relative.left - this.offset.parent.left,
+ (o.containment == 'document' ? 0 : $(window).scrollTop()) - this.offset.relative.top - this.offset.parent.top,
+ (o.containment == 'document' ? 0 : $(window).scrollLeft()) + $(o.containment == 'document' ? document : window).width() - this.helperProportions.width - this.margins.left,
+ (o.containment == 'document' ? 0 : $(window).scrollTop()) + ($(o.containment == 'document' ? document : window).height() || document.body.parentNode.scrollHeight) - this.helperProportions.height - this.margins.top
];
if(!(/^(document|window|parent)$/).test(o.containment) && o.containment.constructor != Array) {
@@ -345,10 +347,10 @@ $.widget("ui.draggable", $.ui.mouse, {
var over = ($(ce).css("overflow") != 'hidden');
this.containment = [
- co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0) - this.margins.left,
- co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0) - this.margins.top,
- co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left,
- co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top
+ co.left + (parseInt($(ce).css("borderLeftWidth"),10) || 0) + (parseInt($(ce).css("paddingLeft"),10) || 0),
+ co.top + (parseInt($(ce).css("borderTopWidth"),10) || 0) + (parseInt($(ce).css("paddingTop"),10) || 0),
+ co.left+(over ? Math.max(ce.scrollWidth,ce.offsetWidth) : ce.offsetWidth) - (parseInt($(ce).css("borderLeftWidth"),10) || 0) - (parseInt($(ce).css("paddingRight"),10) || 0) - this.helperProportions.width - this.margins.left - this.margins.right,
+ co.top+(over ? Math.max(ce.scrollHeight,ce.offsetHeight) : ce.offsetHeight) - (parseInt($(ce).css("borderTopWidth"),10) || 0) - (parseInt($(ce).css("paddingBottom"),10) || 0) - this.helperProportions.height - this.margins.top - this.margins.bottom
];
} else if(o.containment.constructor == Array) {
this.containment = o.containment;
@@ -459,7 +461,7 @@ $.widget("ui.draggable", $.ui.mouse, {
});
$.extend($.ui.draggable, {
- version: "1.8.2"
+ version: "1.8.11"
});
$.ui.plugin.add("draggable", "connectToSortable", {
@@ -475,7 +477,7 @@ $.ui.plugin.add("draggable", "connectToSortable", {
instance: sortable,
shouldRevert: sortable.options.revert
});
- sortable._refreshItems(); //Do a one-time refresh at start to refresh the containerCache
+ sortable.refreshPositions(); // Call the sortable's refreshPositions at drag start to refresh the containerCache since the sortable container cache is used in drag and needs to be up to date (this will ensure it's initialised as well as being kept in step with any changes that might have happened on the page).
sortable._trigger("activate", event, uiSortable);
}
});
diff --git a/resources/jquery.ui/jquery.ui.droppable.js b/resources/jquery.ui/jquery.ui.droppable.js
index b6a15fdf..7d6b8975 100644
--- a/resources/jquery.ui/jquery.ui.droppable.js
+++ b/resources/jquery.ui/jquery.ui.droppable.js
@@ -1,9 +1,9 @@
/*
- * jQuery UI Droppable 1.8.2
+ * jQuery UI Droppable 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Droppables
*
@@ -13,7 +13,7 @@
* jquery.ui.mouse.js
* jquery.ui.draggable.js
*/
-(function($) {
+(function( $, undefined ) {
$.widget("ui.droppable", {
widgetEventPrefix: "drop",
@@ -147,7 +147,7 @@ $.widget("ui.droppable", {
});
$.extend($.ui.droppable, {
- version: "1.8.2"
+ version: "1.8.11"
});
$.ui.intersect = function(draggable, droppable, toleranceMode) {
@@ -161,8 +161,8 @@ $.ui.intersect = function(draggable, droppable, toleranceMode) {
switch (toleranceMode) {
case 'fit':
- return (l < x1 && x2 < r
- && t < y1 && y2 < b);
+ return (l <= x1 && x2 <= r
+ && t <= y1 && y2 <= b);
break;
case 'intersect':
return (l < x1 + (draggable.helperProportions.width / 2) // Right Half
@@ -212,11 +212,11 @@ $.ui.ddmanager = {
for (var j=0; j < list.length; j++) { if(list[j] == m[i].element[0]) { m[i].proportions.height = 0; continue droppablesLoop; } }; //Filter out elements in the current dragged item
m[i].visible = m[i].element.css("display") != "none"; if(!m[i].visible) continue; //If the element is not visible, continue
+ if(type == "mousedown") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables
+
m[i].offset = m[i].element.offset();
m[i].proportions = { width: m[i].element[0].offsetWidth, height: m[i].element[0].offsetHeight };
- if(type == "mousedown") m[i]._activate.call(m[i], event); //Activate the droppable if used directly from draggables
-
}
},
diff --git a/resources/jquery.ui/jquery.ui.mouse.js b/resources/jquery.ui/jquery.ui.mouse.js
index 871edd83..b8db85ce 100644
--- a/resources/jquery.ui/jquery.ui.mouse.js
+++ b/resources/jquery.ui/jquery.ui.mouse.js
@@ -1,16 +1,16 @@
/*!
- * jQuery UI Mouse 1.8.2
+ * jQuery UI Mouse 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Mouse
*
* Depends:
* jquery.ui.widget.js
*/
-(function($) {
+(function( $, undefined ) {
$.widget("ui.mouse", {
options: {
@@ -26,8 +26,8 @@ $.widget("ui.mouse", {
return self._mouseDown(event);
})
.bind('click.'+this.widgetName, function(event) {
- if(self._preventClickEvent) {
- self._preventClickEvent = false;
+ if (true === $.data(event.target, self.widgetName + '.preventClickEvent')) {
+ $.removeData(event.target, self.widgetName + '.preventClickEvent');
event.stopImmediatePropagation();
return false;
}
@@ -75,6 +75,11 @@ $.widget("ui.mouse", {
}
}
+ // Click event may never have fired (Gecko & Opera)
+ if (true === $.data(event.target, this.widgetName + '.preventClickEvent')) {
+ $.removeData(event.target, this.widgetName + '.preventClickEvent');
+ }
+
// these delegates are required to keep context
this._mouseMoveDelegate = function(event) {
return self._mouseMove(event);
@@ -86,18 +91,14 @@ $.widget("ui.mouse", {
.bind('mousemove.'+this.widgetName, this._mouseMoveDelegate)
.bind('mouseup.'+this.widgetName, this._mouseUpDelegate);
- // preventDefault() is used to prevent the selection of text here -
- // however, in Safari, this causes select boxes not to be selectable
- // anymore, so this fix is needed
- ($.browser.safari || event.preventDefault());
-
+ event.preventDefault();
event.originalEvent.mouseHandled = true;
return true;
},
_mouseMove: function(event) {
// IE mouseup check - mouseup happened when mouse was out of window
- if ($.browser.msie && !event.button) {
+ if ($.browser.msie && !(document.documentMode >= 9) && !event.button) {
return this._mouseUp(event);
}
@@ -122,7 +123,11 @@ $.widget("ui.mouse", {
if (this._mouseStarted) {
this._mouseStarted = false;
- this._preventClickEvent = (event.target == this._mouseDownEvent.target);
+
+ if (event.target == this._mouseDownEvent.target) {
+ $.data(event.target, this.widgetName + '.preventClickEvent', true);
+ }
+
this._mouseStop(event);
}
diff --git a/resources/jquery.ui/jquery.ui.position.js b/resources/jquery.ui/jquery.ui.position.js
index 50dd57f0..b66e59ef 100644
--- a/resources/jquery.ui/jquery.ui.position.js
+++ b/resources/jquery.ui/jquery.ui.position.js
@@ -1,20 +1,19 @@
/*
- * jQuery UI Position 1.8.2
+ * jQuery UI Position 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Position
*/
-(function( $ ) {
+(function( $, undefined ) {
$.ui = $.ui || {};
var horizontalPositions = /left|center|right/,
- horizontalDefault = "center",
verticalPositions = /top|center|bottom/,
- verticalDefault = "center",
+ center = "center",
_position = $.fn.position,
_offset = $.fn.offset;
@@ -27,21 +26,23 @@ $.fn.position = function( options ) {
options = $.extend( {}, options );
var target = $( options.of ),
+ targetElem = target[0],
collision = ( options.collision || "flip" ).split( " " ),
offset = options.offset ? options.offset.split( " " ) : [ 0, 0 ],
targetWidth,
targetHeight,
basePosition;
- if ( options.of.nodeType === 9 ) {
+ if ( targetElem.nodeType === 9 ) {
targetWidth = target.width();
targetHeight = target.height();
basePosition = { top: 0, left: 0 };
- } else if ( options.of.scrollTo && options.of.document ) {
+ // TODO: use $.isWindow() in 1.9
+ } else if ( targetElem.setTimeout ) {
targetWidth = target.width();
targetHeight = target.height();
basePosition = { top: target.scrollTop(), left: target.scrollLeft() };
- } else if ( options.of.preventDefault ) {
+ } else if ( targetElem.preventDefault ) {
// force left top to allow flipping
options.at = "left top";
targetWidth = targetHeight = 0;
@@ -58,13 +59,13 @@ $.fn.position = function( options ) {
var pos = ( options[this] || "" ).split( " " );
if ( pos.length === 1) {
pos = horizontalPositions.test( pos[0] ) ?
- pos.concat( [verticalDefault] ) :
+ pos.concat( [center] ) :
verticalPositions.test( pos[0] ) ?
- [ horizontalDefault ].concat( pos ) :
- [ horizontalDefault, verticalDefault ];
+ [ center ].concat( pos ) :
+ [ center, center ];
}
- pos[ 0 ] = horizontalPositions.test( pos[0] ) ? pos[ 0 ] : horizontalDefault;
- pos[ 1 ] = verticalPositions.test( pos[1] ) ? pos[ 1 ] : verticalDefault;
+ pos[ 0 ] = horizontalPositions.test( pos[0] ) ? pos[ 0 ] : center;
+ pos[ 1 ] = verticalPositions.test( pos[1] ) ? pos[ 1 ] : center;
options[ this ] = pos;
});
@@ -82,13 +83,13 @@ $.fn.position = function( options ) {
if ( options.at[0] === "right" ) {
basePosition.left += targetWidth;
- } else if (options.at[0] === horizontalDefault ) {
+ } else if ( options.at[0] === center ) {
basePosition.left += targetWidth / 2;
}
if ( options.at[1] === "bottom" ) {
basePosition.top += targetHeight;
- } else if ( options.at[1] === verticalDefault ) {
+ } else if ( options.at[1] === center ) {
basePosition.top += targetHeight / 2;
}
@@ -99,23 +100,35 @@ $.fn.position = function( options ) {
var elem = $( this ),
elemWidth = elem.outerWidth(),
elemHeight = elem.outerHeight(),
- position = $.extend( {}, basePosition );
+ marginLeft = parseInt( $.curCSS( this, "marginLeft", true ) ) || 0,
+ marginTop = parseInt( $.curCSS( this, "marginTop", true ) ) || 0,
+ collisionWidth = elemWidth + marginLeft +
+ ( parseInt( $.curCSS( this, "marginRight", true ) ) || 0 ),
+ collisionHeight = elemHeight + marginTop +
+ ( parseInt( $.curCSS( this, "marginBottom", true ) ) || 0 ),
+ position = $.extend( {}, basePosition ),
+ collisionPosition;
if ( options.my[0] === "right" ) {
position.left -= elemWidth;
- } else if ( options.my[0] === horizontalDefault ) {
+ } else if ( options.my[0] === center ) {
position.left -= elemWidth / 2;
}
if ( options.my[1] === "bottom" ) {
position.top -= elemHeight;
- } else if ( options.my[1] === verticalDefault ) {
+ } else if ( options.my[1] === center ) {
position.top -= elemHeight / 2;
}
// prevent fractions (see #5280)
- position.left = parseInt( position.left );
- position.top = parseInt( position.top );
+ position.left = Math.round( position.left );
+ position.top = Math.round( position.top );
+
+ collisionPosition = {
+ left: position.left - marginLeft,
+ top: position.top - marginTop
+ };
$.each( [ "left", "top" ], function( i, dir ) {
if ( $.ui.position[ collision[i] ] ) {
@@ -124,6 +137,9 @@ $.fn.position = function( options ) {
targetHeight: targetHeight,
elemWidth: elemWidth,
elemHeight: elemHeight,
+ collisionPosition: collisionPosition,
+ collisionWidth: collisionWidth,
+ collisionHeight: collisionHeight,
offset: offset,
my: options.my,
at: options.at
@@ -142,41 +158,44 @@ $.ui.position = {
fit: {
left: function( position, data ) {
var win = $( window ),
- over = position.left + data.elemWidth - win.width() - win.scrollLeft();
- position.left = over > 0 ? position.left - over : Math.max( 0, position.left );
+ over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft();
+ position.left = over > 0 ? position.left - over : Math.max( position.left - data.collisionPosition.left, position.left );
},
top: function( position, data ) {
var win = $( window ),
- over = position.top + data.elemHeight - win.height() - win.scrollTop();
- position.top = over > 0 ? position.top - over : Math.max( 0, position.top );
+ over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop();
+ position.top = over > 0 ? position.top - over : Math.max( position.top - data.collisionPosition.top, position.top );
}
},
flip: {
left: function( position, data ) {
- if ( data.at[0] === "center" ) {
+ if ( data.at[0] === center ) {
return;
}
var win = $( window ),
- over = position.left + data.elemWidth - win.width() - win.scrollLeft(),
+ over = data.collisionPosition.left + data.collisionWidth - win.width() - win.scrollLeft(),
myOffset = data.my[ 0 ] === "left" ?
-data.elemWidth :
data.my[ 0 ] === "right" ?
data.elemWidth :
0,
+ atOffset = data.at[ 0 ] === "left" ?
+ data.targetWidth :
+ -data.targetWidth,
offset = -2 * data.offset[ 0 ];
- position.left += position.left < 0 ?
- myOffset + data.targetWidth + offset :
+ position.left += data.collisionPosition.left < 0 ?
+ myOffset + atOffset + offset :
over > 0 ?
- myOffset - data.targetWidth + offset :
+ myOffset + atOffset + offset :
0;
},
top: function( position, data ) {
- if ( data.at[1] === "center" ) {
+ if ( data.at[1] === center ) {
return;
}
var win = $( window ),
- over = position.top + data.elemHeight - win.height() - win.scrollTop(),
+ over = data.collisionPosition.top + data.collisionHeight - win.height() - win.scrollTop(),
myOffset = data.my[ 1 ] === "top" ?
-data.elemHeight :
data.my[ 1 ] === "bottom" ?
@@ -186,8 +205,8 @@ $.ui.position = {
data.targetHeight :
-data.targetHeight,
offset = -2 * data.offset[ 1 ];
- position.top += position.top < 0 ?
- myOffset + data.targetHeight + offset :
+ position.top += data.collisionPosition.top < 0 ?
+ myOffset + atOffset + offset :
over > 0 ?
myOffset + atOffset + offset :
0;
diff --git a/resources/jquery.ui/jquery.ui.progressbar.js b/resources/jquery.ui/jquery.ui.progressbar.js
index 4bc092d1..c432132a 100644
--- a/resources/jquery.ui/jquery.ui.progressbar.js
+++ b/resources/jquery.ui/jquery.ui.progressbar.js
@@ -1,9 +1,9 @@
/*
- * jQuery UI Progressbar 1.8.2
+ * jQuery UI Progressbar 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Progressbar
*
@@ -11,25 +11,30 @@
* jquery.ui.core.js
* jquery.ui.widget.js
*/
-(function( $ ) {
+(function( $, undefined ) {
$.widget( "ui.progressbar", {
options: {
- value: 0
+ value: 0,
+ max: 100
},
+
+ min: 0,
+
_create: function() {
this.element
.addClass( "ui-progressbar ui-widget ui-widget-content ui-corner-all" )
.attr({
role: "progressbar",
- "aria-valuemin": this._valueMin(),
- "aria-valuemax": this._valueMax(),
+ "aria-valuemin": this.min,
+ "aria-valuemax": this.options.max,
"aria-valuenow": this._value()
});
this.valueDiv = $( "<div class='ui-progressbar-value ui-widget-header ui-corner-left'></div>" )
.appendTo( this.element );
+ this.oldValue = this._value();
this._refreshValue();
},
@@ -56,12 +61,12 @@ $.widget( "ui.progressbar", {
},
_setOption: function( key, value ) {
- switch ( key ) {
- case "value":
- this.options.value = value;
- this._refreshValue();
- this._trigger( "change" );
- break;
+ if ( key === "value" ) {
+ this.options.value = value;
+ this._refreshValue();
+ if ( this._value() === this.options.max ) {
+ this._trigger( "complete" );
+ }
}
$.Widget.prototype._setOption.apply( this, arguments );
@@ -73,35 +78,31 @@ $.widget( "ui.progressbar", {
if ( typeof val !== "number" ) {
val = 0;
}
- if ( val < this._valueMin() ) {
- val = this._valueMin();
- }
- if ( val > this._valueMax() ) {
- val = this._valueMax();
- }
-
- return val;
+ return Math.min( this.options.max, Math.max( this.min, val ) );
},
- _valueMin: function() {
- return 0;
- },
-
- _valueMax: function() {
- return 100;
+ _percentage: function() {
+ return 100 * this._value() / this.options.max;
},
_refreshValue: function() {
var value = this.value();
+ var percentage = this._percentage();
+
+ if ( this.oldValue !== value ) {
+ this.oldValue = value;
+ this._trigger( "change" );
+ }
+
this.valueDiv
- [ value === this._valueMax() ? "addClass" : "removeClass"]( "ui-corner-right" )
- .width( value + "%" );
+ .toggleClass( "ui-corner-right", value === this.options.max )
+ .width( percentage.toFixed(0) + "%" );
this.element.attr( "aria-valuenow", value );
}
});
$.extend( $.ui.progressbar, {
- version: "1.8.2"
+ version: "1.8.11"
});
})( jQuery );
diff --git a/resources/jquery.ui/jquery.ui.resizable.js b/resources/jquery.ui/jquery.ui.resizable.js
index 0a782bb5..1d1c906e 100644
--- a/resources/jquery.ui/jquery.ui.resizable.js
+++ b/resources/jquery.ui/jquery.ui.resizable.js
@@ -1,9 +1,9 @@
/*
- * jQuery UI Resizable 1.8.2
+ * jQuery UI Resizable 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Resizables
*
@@ -12,7 +12,7 @@
* jquery.ui.mouse.js
* jquery.ui.widget.js
*/
-(function($) {
+(function( $, undefined ) {
$.widget("ui.resizable", $.ui.mouse, {
widgetEventPrefix: "resize",
@@ -322,10 +322,10 @@ $.widget("ui.resizable", $.ui.mouse, {
if(this._helper) {
var pr = this._proportionallyResizeElements, ista = pr.length && (/textarea/i).test(pr[0].nodeName),
- soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
- soffsetw = ista ? 0 : self.sizeDiff.width;
+ soffseth = ista && $.ui.hasScroll(pr[0], 'left') /* TODO - jump height */ ? 0 : self.sizeDiff.height,
+ soffsetw = ista ? 0 : self.sizeDiff.width;
- var s = { width: (self.size.width - soffsetw), height: (self.size.height - soffseth) },
+ var s = { width: (self.helper.width() - soffsetw), height: (self.helper.height() - soffseth) },
left = (parseInt(self.element.css('left'), 10) + (self.position.left - self.originalPosition.left)) || null,
top = (parseInt(self.element.css('top'), 10) + (self.position.top - self.originalPosition.top)) || null;
@@ -519,7 +519,7 @@ $.widget("ui.resizable", $.ui.mouse, {
});
$.extend($.ui.resizable, {
- version: "1.8.2"
+ version: "1.8.11"
});
/*
@@ -528,28 +528,29 @@ $.extend($.ui.resizable, {
$.ui.plugin.add("resizable", "alsoResize", {
- start: function(event, ui) {
-
+ start: function (event, ui) {
var self = $(this).data("resizable"), o = self.options;
- var _store = function(exp) {
+ var _store = function (exp) {
$(exp).each(function() {
- $(this).data("resizable-alsoresize", {
- width: parseInt($(this).width(), 10), height: parseInt($(this).height(), 10),
- left: parseInt($(this).css('left'), 10), top: parseInt($(this).css('top'), 10)
+ var el = $(this);
+ el.data("resizable-alsoresize", {
+ width: parseInt(el.width(), 10), height: parseInt(el.height(), 10),
+ left: parseInt(el.css('left'), 10), top: parseInt(el.css('top'), 10),
+ position: el.css('position') // to reset Opera on stop()
});
});
};
if (typeof(o.alsoResize) == 'object' && !o.alsoResize.parentNode) {
- if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }
- else { $.each(o.alsoResize, function(exp, c) { _store(exp); }); }
+ if (o.alsoResize.length) { o.alsoResize = o.alsoResize[0]; _store(o.alsoResize); }
+ else { $.each(o.alsoResize, function (exp) { _store(exp); }); }
}else{
_store(o.alsoResize);
}
},
- resize: function(event, ui){
+ resize: function (event, ui) {
var self = $(this).data("resizable"), o = self.options, os = self.originalSize, op = self.originalPosition;
var delta = {
@@ -557,18 +558,19 @@ $.ui.plugin.add("resizable", "alsoResize", {
top: (self.position.top - op.top) || 0, left: (self.position.left - op.left) || 0
},
- _alsoResize = function(exp, c) {
+ _alsoResize = function (exp, c) {
$(exp).each(function() {
- var el = $(this), start = $(this).data("resizable-alsoresize"), style = {}, css = c && c.length ? c : ['width', 'height', 'top', 'left'];
+ var el = $(this), start = $(this).data("resizable-alsoresize"), style = {},
+ css = c && c.length ? c : el.parents(ui.originalElement[0]).length ? ['width', 'height'] : ['width', 'height', 'top', 'left'];
- $.each(css || ['width', 'height', 'top', 'left'], function(i, prop) {
+ $.each(css, function (i, prop) {
var sum = (start[prop]||0) + (delta[prop]||0);
if (sum && sum >= 0)
style[prop] = sum || null;
});
- //Opera fixing relative position
- if (/relative/.test(el.css('position')) && $.browser.opera) {
+ // Opera fixing relative position
+ if ($.browser.opera && /relative/.test(el.css('position'))) {
self._revertToRelativePosition = true;
el.css({ position: 'absolute', top: 'auto', left: 'auto' });
}
@@ -578,22 +580,33 @@ $.ui.plugin.add("resizable", "alsoResize", {
};
if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {
- $.each(o.alsoResize, function(exp, c) { _alsoResize(exp, c); });
+ $.each(o.alsoResize, function (exp, c) { _alsoResize(exp, c); });
}else{
_alsoResize(o.alsoResize);
}
},
- stop: function(event, ui){
- var self = $(this).data("resizable");
+ stop: function (event, ui) {
+ var self = $(this).data("resizable"), o = self.options;
- //Opera fixing relative position
- if (self._revertToRelativePosition && $.browser.opera) {
+ var _reset = function (exp) {
+ $(exp).each(function() {
+ var el = $(this);
+ // reset position for Opera - no need to verify it was changed
+ el.css({ position: el.data("resizable-alsoresize").position });
+ });
+ };
+
+ if (self._revertToRelativePosition) {
self._revertToRelativePosition = false;
- el.css({ position: 'relative' });
+ if (typeof(o.alsoResize) == 'object' && !o.alsoResize.nodeType) {
+ $.each(o.alsoResize, function (exp) { _reset(exp); });
+ }else{
+ _reset(o.alsoResize);
+ }
}
- $(this).removeData("resizable-alsoresize-start");
+ $(this).removeData("resizable-alsoresize");
}
});
diff --git a/resources/jquery.ui/jquery.ui.selectable.js b/resources/jquery.ui/jquery.ui.selectable.js
index bc707d36..e3b91328 100644
--- a/resources/jquery.ui/jquery.ui.selectable.js
+++ b/resources/jquery.ui/jquery.ui.selectable.js
@@ -1,10 +1,9 @@
-
/*
- * jQuery UI Selectable 1.8.2
+ * jQuery UI Selectable 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Selectables
*
@@ -13,7 +12,7 @@
* jquery.ui.mouse.js
* jquery.ui.widget.js
*/
-(function($) {
+(function( $, undefined ) {
$.widget("ui.selectable", $.ui.mouse, {
options: {
@@ -90,8 +89,6 @@ $.widget("ui.selectable", $.ui.mouse, {
$(options.appendTo).append(this.helper);
// position helper (lasso)
this.helper.css({
- "z-index": 100,
- "position": "absolute",
"left": event.clientX,
"top": event.clientY,
"width": 0,
@@ -263,7 +260,7 @@ $.widget("ui.selectable", $.ui.mouse, {
});
$.extend($.ui.selectable, {
- version: "1.8.2"
+ version: "1.8.11"
});
})(jQuery);
diff --git a/resources/jquery.ui/jquery.ui.slider.js b/resources/jquery.ui/jquery.ui.slider.js
index 81d854b5..f02a922f 100644
--- a/resources/jquery.ui/jquery.ui.slider.js
+++ b/resources/jquery.ui/jquery.ui.slider.js
@@ -1,9 +1,9 @@
/*
- * jQuery UI Slider 1.8.2
+ * jQuery UI Slider 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Slider
*
@@ -12,8 +12,7 @@
* jquery.ui.mouse.js
* jquery.ui.widget.js
*/
-
-(function( $ ) {
+(function( $, undefined ) {
// number of pages in a slider
// (how many times can you page up/down to go through the whole range)
@@ -310,8 +309,9 @@ $.widget( "ui.slider", $.ui.mouse, {
( parseInt( closestHandle.css("marginTop"), 10 ) || 0)
};
- normValue = this._normValueFromMouse( position );
- this._slide( event, index, normValue );
+ if ( !this.handles.hasClass( "ui-state-hover" ) ) {
+ this._slide( event, index, normValue );
+ }
this._animateOff = true;
return true;
},
@@ -585,14 +585,14 @@ $.widget( "ui.slider", $.ui.mouse, {
// returns the step-aligned value that val is closest to, between (inclusive) min and max
_trimAlignValue: function( val ) {
- if ( val < this._valueMin() ) {
+ if ( val <= this._valueMin() ) {
return this._valueMin();
}
- if ( val > this._valueMax() ) {
+ if ( val >= this._valueMax() ) {
return this._valueMax();
}
var step = ( this.options.step > 0 ) ? this.options.step : 1,
- valModStep = val % step,
+ valModStep = (val - this._valueMin()) % step;
alignValue = val - valModStep;
if ( Math.abs(valModStep) * 2 >= step ) {
@@ -676,7 +676,7 @@ $.widget( "ui.slider", $.ui.mouse, {
});
$.extend( $.ui.slider, {
- version: "1.8.2"
+ version: "1.8.11"
});
}(jQuery));
diff --git a/resources/jquery.ui/jquery.ui.sortable.js b/resources/jquery.ui/jquery.ui.sortable.js
index fe9898e0..1a06dcae 100644
--- a/resources/jquery.ui/jquery.ui.sortable.js
+++ b/resources/jquery.ui/jquery.ui.sortable.js
@@ -1,9 +1,9 @@
/*
- * jQuery UI Sortable 1.8.2
+ * jQuery UI Sortable 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Sortables
*
@@ -12,7 +12,7 @@
* jquery.ui.mouse.js
* jquery.ui.widget.js
*/
-(function($) {
+(function( $, undefined ) {
$.widget("ui.sortable", $.ui.mouse, {
widgetEventPrefix: "sort",
@@ -49,8 +49,8 @@ $.widget("ui.sortable", $.ui.mouse, {
//Get the items
this.refresh();
- //Let's determine if the items are floating
- this.floating = this.items.length ? (/left|right/).test(this.items[0].item.css('float')) : false;
+ //Let's determine if the items are being displayed horizontally
+ this.floating = this.items.length ? (/left|right/).test(this.items[0].item.css('float')) || (/inline|table-cell/).test(this.items[0].item.css('display')) : false;
//Let's determine the parent's offset
this.offset = this.element.offset();
@@ -360,7 +360,7 @@ $.widget("ui.sortable", $.ui.mouse, {
if(this.dragging) {
- this._mouseUp();
+ this._mouseUp({ target: null });
if(this.options.helper == "original")
this.currentItem.css(this._storedCSS).removeClass("ui-sortable-helper");
@@ -378,21 +378,23 @@ $.widget("ui.sortable", $.ui.mouse, {
}
- //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
- if(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
- if(this.options.helper != "original" && this.helper && this.helper[0].parentNode) this.helper.remove();
-
- $.extend(this, {
- helper: null,
- dragging: false,
- reverting: false,
- _noFinalSort: null
- });
+ if (this.placeholder) {
+ //$(this.placeholder[0]).remove(); would have been the jQuery way - unfortunately, it unbinds ALL events from the original node!
+ if(this.placeholder[0].parentNode) this.placeholder[0].parentNode.removeChild(this.placeholder[0]);
+ if(this.options.helper != "original" && this.helper && this.helper[0].parentNode) this.helper.remove();
- if(this.domPosition.prev) {
- $(this.domPosition.prev).after(this.currentItem);
- } else {
- $(this.domPosition.parent).prepend(this.currentItem);
+ $.extend(this, {
+ helper: null,
+ dragging: false,
+ reverting: false,
+ _noFinalSort: null
+ });
+
+ if(this.domPosition.prev) {
+ $(this.domPosition.prev).after(this.currentItem);
+ } else {
+ $(this.domPosition.parent).prepend(this.currentItem);
+ }
}
return this;
@@ -409,6 +411,10 @@ $.widget("ui.sortable", $.ui.mouse, {
if(res) str.push((o.key || res[1]+'[]')+'='+(o.key && o.expression ? res[1] : res[2]));
});
+ if(!str.length && o.key) {
+ str.push(o.key + '=');
+ }
+
return str.join('&');
},
@@ -1061,7 +1067,7 @@ $.widget("ui.sortable", $.ui.mouse, {
});
$.extend($.ui.sortable, {
- version: "1.8.2"
+ version: "1.8.11"
});
})(jQuery);
diff --git a/resources/jquery.ui/jquery.ui.tabs.js b/resources/jquery.ui/jquery.ui.tabs.js
index 1f94d52a..3be7ff49 100644
--- a/resources/jquery.ui/jquery.ui.tabs.js
+++ b/resources/jquery.ui/jquery.ui.tabs.js
@@ -1,9 +1,9 @@
/*
- * jQuery UI Tabs 1.8.2
+ * jQuery UI Tabs 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Tabs
*
@@ -11,7 +11,7 @@
* jquery.ui.core.js
* jquery.ui.widget.js
*/
-(function($) {
+(function( $, undefined ) {
var tabId = 0,
listId = 0;
@@ -24,7 +24,7 @@ function getNextListId() {
return ++listId;
}
-$.widget("ui.tabs", {
+$.widget( "ui.tabs", {
options: {
add: null,
ajaxOptions: null,
@@ -34,619 +34,650 @@ $.widget("ui.tabs", {
disable: null,
disabled: [],
enable: null,
- event: 'click',
+ event: "click",
fx: null, // e.g. { height: 'toggle', opacity: 'toggle', duration: 200 }
- idPrefix: 'ui-tabs-',
+ idPrefix: "ui-tabs-",
load: null,
- panelTemplate: '<div></div>',
+ panelTemplate: "<div></div>",
remove: null,
select: null,
show: null,
- spinner: '<em>Loading&#8230;</em>',
- tabTemplate: '<li><a href="#{href}"><span>#{label}</span></a></li>'
+ spinner: "<em>Loading&#8230;</em>",
+ tabTemplate: "<li><a href='#{href}'><span>#{label}</span></a></li>"
},
+
_create: function() {
- this._tabify(true);
+ this._tabify( true );
},
- _setOption: function(key, value) {
- if (key == 'selected') {
- if (this.options.collapsible && value == this.options.selected) {
+ _setOption: function( key, value ) {
+ if ( key == "selected" ) {
+ if (this.options.collapsible && value == this.options.selected ) {
return;
}
- this.select(value);
- }
- else {
- this.options[key] = value;
+ this.select( value );
+ } else {
+ this.options[ key ] = value;
this._tabify();
}
},
- _tabId: function(a) {
- return a.title && a.title.replace(/\s/g, '_').replace(/[^A-Za-z0-9\-_:\.]/g, '') ||
+ _tabId: function( a ) {
+ return a.title && a.title.replace( /\s/g, "_" ).replace( /[^\w\u00c0-\uFFFF-]/g, "" ) ||
this.options.idPrefix + getNextTabId();
},
- _sanitizeSelector: function(hash) {
- return hash.replace(/:/g, '\\:'); // we need this because an id may contain a ":"
+ _sanitizeSelector: function( hash ) {
+ // we need this because an id may contain a ":"
+ return hash.replace( /:/g, "\\:" );
},
_cookie: function() {
- var cookie = this.cookie || (this.cookie = this.options.cookie.name || 'ui-tabs-' + getNextListId());
- return $.cookie.apply(null, [cookie].concat($.makeArray(arguments)));
+ var cookie = this.cookie ||
+ ( this.cookie = this.options.cookie.name || "ui-tabs-" + getNextListId() );
+ return $.cookie.apply( null, [ cookie ].concat( $.makeArray( arguments ) ) );
},
- _ui: function(tab, panel) {
+ _ui: function( tab, panel ) {
return {
tab: tab,
panel: panel,
- index: this.anchors.index(tab)
+ index: this.anchors.index( tab )
};
},
_cleanup: function() {
// restore all former loading tabs labels
- this.lis.filter('.ui-state-processing').removeClass('ui-state-processing')
- .find('span:data(label.tabs)')
+ this.lis.filter( ".ui-state-processing" )
+ .removeClass( "ui-state-processing" )
+ .find( "span:data(label.tabs)" )
.each(function() {
- var el = $(this);
- el.html(el.data('label.tabs')).removeData('label.tabs');
+ var el = $( this );
+ el.html( el.data( "label.tabs" ) ).removeData( "label.tabs" );
});
},
- _tabify: function(init) {
-
- this.list = this.element.find('ol,ul').eq(0);
- this.lis = $('li:has(a[href])', this.list);
- this.anchors = this.lis.map(function() { return $('a', this)[0]; });
- this.panels = $([]);
+ _tabify: function( init ) {
+ var self = this,
+ o = this.options,
+ fragmentId = /^#.+/; // Safari 2 reports '#' for an empty hash
- var self = this, o = this.options;
-
- var fragmentId = /^#.+/; // Safari 2 reports '#' for an empty hash
- this.anchors.each(function(i, a) {
- var href = $(a).attr('href');
+ this.list = this.element.find( "ol,ul" ).eq( 0 );
+ this.lis = $( " > li:has(a[href])", this.list );
+ this.anchors = this.lis.map(function() {
+ return $( "a", this )[ 0 ];
+ });
+ this.panels = $( [] );
+ this.anchors.each(function( i, a ) {
+ var href = $( a ).attr( "href" );
// For dynamically created HTML that contains a hash as href IE < 8 expands
// such href to the full page url with hash and then misinterprets tab as ajax.
// Same consideration applies for an added tab with a fragment identifier
// since a[href=#fragment-identifier] does unexpectedly not match.
// Thus normalize href attribute...
- var hrefBase = href.split('#')[0], baseEl;
- if (hrefBase && (hrefBase === location.toString().split('#')[0] ||
- (baseEl = $('base')[0]) && hrefBase === baseEl.href)) {
+ var hrefBase = href.split( "#" )[ 0 ],
+ baseEl;
+ if ( hrefBase && ( hrefBase === location.toString().split( "#" )[ 0 ] ||
+ ( baseEl = $( "base" )[ 0 ]) && hrefBase === baseEl.href ) ) {
href = a.hash;
a.href = href;
}
// inline tab
- if (fragmentId.test(href)) {
- self.panels = self.panels.add(self._sanitizeSelector(href));
- }
-
+ if ( fragmentId.test( href ) ) {
+ self.panels = self.panels.add( self.element.find( self._sanitizeSelector( href ) ) );
// remote tab
- else if (href != '#') { // prevent loading the page itself if href is just "#"
- $.data(a, 'href.tabs', href); // required for restore on destroy
+ // prevent loading the page itself if href is just "#"
+ } else if ( href && href !== "#" ) {
+ // required for restore on destroy
+ $.data( a, "href.tabs", href );
// TODO until #3808 is fixed strip fragment identifier from url
// (IE fails to load from such url)
- $.data(a, 'load.tabs', href.replace(/#.*$/, '')); // mutable data
-
- var id = self._tabId(a);
- a.href = '#' + id;
- var $panel = $('#' + id);
- if (!$panel.length) {
- $panel = $(o.panelTemplate).attr('id', id).addClass('ui-tabs-panel ui-widget-content ui-corner-bottom')
- .insertAfter(self.panels[i - 1] || self.list);
- $panel.data('destroy.tabs', true);
+ $.data( a, "load.tabs", href.replace( /#.*$/, "" ) );
+
+ var id = self._tabId( a );
+ a.href = "#" + id;
+ var $panel = self.element.find( "#" + id );
+ if ( !$panel.length ) {
+ $panel = $( o.panelTemplate )
+ .attr( "id", id )
+ .addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" )
+ .insertAfter( self.panels[ i - 1 ] || self.list );
+ $panel.data( "destroy.tabs", true );
}
- self.panels = self.panels.add($panel);
- }
-
+ self.panels = self.panels.add( $panel );
// invalid tab href
- else {
- o.disabled.push(i);
+ } else {
+ o.disabled.push( i );
}
});
// initialization from scratch
- if (init) {
-
+ if ( init ) {
// attach necessary classes for styling
- this.element.addClass('ui-tabs ui-widget ui-widget-content ui-corner-all');
- this.list.addClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all');
- this.lis.addClass('ui-state-default ui-corner-top');
- this.panels.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom');
+ this.element.addClass( "ui-tabs ui-widget ui-widget-content ui-corner-all" );
+ this.list.addClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" );
+ this.lis.addClass( "ui-state-default ui-corner-top" );
+ this.panels.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom" );
// Selected tab
// use "selected" option or try to retrieve:
// 1. from fragment identifier in url
// 2. from cookie
// 3. from selected class attribute on <li>
- if (o.selected === undefined) {
- if (location.hash) {
- this.anchors.each(function(i, a) {
- if (a.hash == location.hash) {
+ if ( o.selected === undefined ) {
+ if ( location.hash ) {
+ this.anchors.each(function( i, a ) {
+ if ( a.hash == location.hash ) {
o.selected = i;
- return false; // break
+ return false;
}
});
}
- if (typeof o.selected != 'number' && o.cookie) {
- o.selected = parseInt(self._cookie(), 10);
+ if ( typeof o.selected !== "number" && o.cookie ) {
+ o.selected = parseInt( self._cookie(), 10 );
}
- if (typeof o.selected != 'number' && this.lis.filter('.ui-tabs-selected').length) {
- o.selected = this.lis.index(this.lis.filter('.ui-tabs-selected'));
+ if ( typeof o.selected !== "number" && this.lis.filter( ".ui-tabs-selected" ).length ) {
+ o.selected = this.lis.index( this.lis.filter( ".ui-tabs-selected" ) );
}
- o.selected = o.selected || (this.lis.length ? 0 : -1);
- }
- else if (o.selected === null) { // usage of null is deprecated, TODO remove in next release
+ o.selected = o.selected || ( this.lis.length ? 0 : -1 );
+ } else if ( o.selected === null ) { // usage of null is deprecated, TODO remove in next release
o.selected = -1;
}
// sanity check - default to first tab...
- o.selected = ((o.selected >= 0 && this.anchors[o.selected]) || o.selected < 0) ? o.selected : 0;
+ o.selected = ( ( o.selected >= 0 && this.anchors[ o.selected ] ) || o.selected < 0 )
+ ? o.selected
+ : 0;
// Take disabling tabs via class attribute from HTML
// into account and update option properly.
// A selected tab cannot become disabled.
- o.disabled = $.unique(o.disabled.concat(
- $.map(this.lis.filter('.ui-state-disabled'),
- function(n, i) { return self.lis.index(n); } )
- )).sort();
-
- if ($.inArray(o.selected, o.disabled) != -1) {
- o.disabled.splice($.inArray(o.selected, o.disabled), 1);
+ o.disabled = $.unique( o.disabled.concat(
+ $.map( this.lis.filter( ".ui-state-disabled" ), function( n, i ) {
+ return self.lis.index( n );
+ })
+ ) ).sort();
+
+ if ( $.inArray( o.selected, o.disabled ) != -1 ) {
+ o.disabled.splice( $.inArray( o.selected, o.disabled ), 1 );
}
// highlight selected tab
- this.panels.addClass('ui-tabs-hide');
- this.lis.removeClass('ui-tabs-selected ui-state-active');
- if (o.selected >= 0 && this.anchors.length) { // check for length avoids error when initializing empty list
- this.panels.eq(o.selected).removeClass('ui-tabs-hide');
- this.lis.eq(o.selected).addClass('ui-tabs-selected ui-state-active');
+ this.panels.addClass( "ui-tabs-hide" );
+ this.lis.removeClass( "ui-tabs-selected ui-state-active" );
+ // check for length avoids error when initializing empty list
+ if ( o.selected >= 0 && this.anchors.length ) {
+ self.element.find( self._sanitizeSelector( self.anchors[ o.selected ].hash ) ).removeClass( "ui-tabs-hide" );
+ this.lis.eq( o.selected ).addClass( "ui-tabs-selected ui-state-active" );
// seems to be expected behavior that the show callback is fired
- self.element.queue("tabs", function() {
- self._trigger('show', null, self._ui(self.anchors[o.selected], self.panels[o.selected]));
+ self.element.queue( "tabs", function() {
+ self._trigger( "show", null,
+ self._ui( self.anchors[ o.selected ], self.element.find( self._sanitizeSelector( self.anchors[ o.selected ].hash ) )[ 0 ] ) );
});
-
- this.load(o.selected);
+
+ this.load( o.selected );
}
// clean up to avoid memory leaks in certain versions of IE 6
- $(window).bind('unload', function() {
- self.lis.add(self.anchors).unbind('.tabs');
+ // TODO: namespace this event
+ $( window ).bind( "unload", function() {
+ self.lis.add( self.anchors ).unbind( ".tabs" );
self.lis = self.anchors = self.panels = null;
});
-
- }
// update selected after add/remove
- else {
- o.selected = this.lis.index(this.lis.filter('.ui-tabs-selected'));
+ } else {
+ o.selected = this.lis.index( this.lis.filter( ".ui-tabs-selected" ) );
}
// update collapsible
- this.element[o.collapsible ? 'addClass' : 'removeClass']('ui-tabs-collapsible');
+ // TODO: use .toggleClass()
+ this.element[ o.collapsible ? "addClass" : "removeClass" ]( "ui-tabs-collapsible" );
// set or update cookie after init and add/remove respectively
- if (o.cookie) {
- this._cookie(o.selected, o.cookie);
+ if ( o.cookie ) {
+ this._cookie( o.selected, o.cookie );
}
// disable tabs
- for (var i = 0, li; (li = this.lis[i]); i++) {
- $(li)[$.inArray(i, o.disabled) != -1 &&
- !$(li).hasClass('ui-tabs-selected') ? 'addClass' : 'removeClass']('ui-state-disabled');
+ for ( var i = 0, li; ( li = this.lis[ i ] ); i++ ) {
+ $( li )[ $.inArray( i, o.disabled ) != -1 &&
+ // TODO: use .toggleClass()
+ !$( li ).hasClass( "ui-tabs-selected" ) ? "addClass" : "removeClass" ]( "ui-state-disabled" );
}
// reset cache if switching from cached to not cached
- if (o.cache === false) {
- this.anchors.removeData('cache.tabs');
+ if ( o.cache === false ) {
+ this.anchors.removeData( "cache.tabs" );
}
// remove all handlers before, tabify may run on existing tabs after add or option change
- this.lis.add(this.anchors).unbind('.tabs');
+ this.lis.add( this.anchors ).unbind( ".tabs" );
- if (o.event != 'mouseover') {
- var addState = function(state, el) {
- if (el.is(':not(.ui-state-disabled)')) {
- el.addClass('ui-state-' + state);
+ if ( o.event !== "mouseover" ) {
+ var addState = function( state, el ) {
+ if ( el.is( ":not(.ui-state-disabled)" ) ) {
+ el.addClass( "ui-state-" + state );
}
};
- var removeState = function(state, el) {
- el.removeClass('ui-state-' + state);
+ var removeState = function( state, el ) {
+ el.removeClass( "ui-state-" + state );
};
- this.lis.bind('mouseover.tabs', function() {
- addState('hover', $(this));
+ this.lis.bind( "mouseover.tabs" , function() {
+ addState( "hover", $( this ) );
});
- this.lis.bind('mouseout.tabs', function() {
- removeState('hover', $(this));
+ this.lis.bind( "mouseout.tabs", function() {
+ removeState( "hover", $( this ) );
});
- this.anchors.bind('focus.tabs', function() {
- addState('focus', $(this).closest('li'));
+ this.anchors.bind( "focus.tabs", function() {
+ addState( "focus", $( this ).closest( "li" ) );
});
- this.anchors.bind('blur.tabs', function() {
- removeState('focus', $(this).closest('li'));
+ this.anchors.bind( "blur.tabs", function() {
+ removeState( "focus", $( this ).closest( "li" ) );
});
}
// set up animations
var hideFx, showFx;
- if (o.fx) {
- if ($.isArray(o.fx)) {
- hideFx = o.fx[0];
- showFx = o.fx[1];
- }
- else {
+ if ( o.fx ) {
+ if ( $.isArray( o.fx ) ) {
+ hideFx = o.fx[ 0 ];
+ showFx = o.fx[ 1 ];
+ } else {
hideFx = showFx = o.fx;
}
}
// Reset certain styles left over from animation
// and prevent IE's ClearType bug...
- function resetStyle($el, fx) {
- $el.css({ display: '' });
- if (!$.support.opacity && fx.opacity) {
- $el[0].style.removeAttribute('filter');
+ function resetStyle( $el, fx ) {
+ $el.css( "display", "" );
+ if ( !$.support.opacity && fx.opacity ) {
+ $el[ 0 ].style.removeAttribute( "filter" );
}
}
// Show a tab...
- var showTab = showFx ?
- function(clicked, $show) {
- $(clicked).closest('li').addClass('ui-tabs-selected ui-state-active');
- $show.hide().removeClass('ui-tabs-hide') // avoid flicker that way
- .animate(showFx, showFx.duration || 'normal', function() {
- resetStyle($show, showFx);
- self._trigger('show', null, self._ui(clicked, $show[0]));
+ var showTab = showFx
+ ? function( clicked, $show ) {
+ $( clicked ).closest( "li" ).addClass( "ui-tabs-selected ui-state-active" );
+ $show.hide().removeClass( "ui-tabs-hide" ) // avoid flicker that way
+ .animate( showFx, showFx.duration || "normal", function() {
+ resetStyle( $show, showFx );
+ self._trigger( "show", null, self._ui( clicked, $show[ 0 ] ) );
});
- } :
- function(clicked, $show) {
- $(clicked).closest('li').addClass('ui-tabs-selected ui-state-active');
- $show.removeClass('ui-tabs-hide');
- self._trigger('show', null, self._ui(clicked, $show[0]));
+ }
+ : function( clicked, $show ) {
+ $( clicked ).closest( "li" ).addClass( "ui-tabs-selected ui-state-active" );
+ $show.removeClass( "ui-tabs-hide" );
+ self._trigger( "show", null, self._ui( clicked, $show[ 0 ] ) );
};
// Hide a tab, $show is optional...
- var hideTab = hideFx ?
- function(clicked, $hide) {
- $hide.animate(hideFx, hideFx.duration || 'normal', function() {
- self.lis.removeClass('ui-tabs-selected ui-state-active');
- $hide.addClass('ui-tabs-hide');
- resetStyle($hide, hideFx);
- self.element.dequeue("tabs");
+ var hideTab = hideFx
+ ? function( clicked, $hide ) {
+ $hide.animate( hideFx, hideFx.duration || "normal", function() {
+ self.lis.removeClass( "ui-tabs-selected ui-state-active" );
+ $hide.addClass( "ui-tabs-hide" );
+ resetStyle( $hide, hideFx );
+ self.element.dequeue( "tabs" );
});
- } :
- function(clicked, $hide, $show) {
- self.lis.removeClass('ui-tabs-selected ui-state-active');
- $hide.addClass('ui-tabs-hide');
- self.element.dequeue("tabs");
+ }
+ : function( clicked, $hide, $show ) {
+ self.lis.removeClass( "ui-tabs-selected ui-state-active" );
+ $hide.addClass( "ui-tabs-hide" );
+ self.element.dequeue( "tabs" );
};
// attach tab event handler, unbind to avoid duplicates from former tabifying...
- this.anchors.bind(o.event + '.tabs', function() {
- var el = this, $li = $(this).closest('li'), $hide = self.panels.filter(':not(.ui-tabs-hide)'),
- $show = $(self._sanitizeSelector(this.hash));
+ this.anchors.bind( o.event + ".tabs", function() {
+ var el = this,
+ $li = $(el).closest( "li" ),
+ $hide = self.panels.filter( ":not(.ui-tabs-hide)" ),
+ $show = self.element.find( self._sanitizeSelector( el.hash ) );
// If tab is already selected and not collapsible or tab disabled or
// or is already loading or click callback returns false stop here.
// Check if click handler returns false last so that it is not executed
// for a disabled or loading tab!
- if (($li.hasClass('ui-tabs-selected') && !o.collapsible) ||
- $li.hasClass('ui-state-disabled') ||
- $li.hasClass('ui-state-processing') ||
- self._trigger('select', null, self._ui(this, $show[0])) === false) {
+ if ( ( $li.hasClass( "ui-tabs-selected" ) && !o.collapsible) ||
+ $li.hasClass( "ui-state-disabled" ) ||
+ $li.hasClass( "ui-state-processing" ) ||
+ self.panels.filter( ":animated" ).length ||
+ self._trigger( "select", null, self._ui( this, $show[ 0 ] ) ) === false ) {
this.blur();
return false;
}
- o.selected = self.anchors.index(this);
+ o.selected = self.anchors.index( this );
self.abort();
// if tab may be closed
- if (o.collapsible) {
- if ($li.hasClass('ui-tabs-selected')) {
+ if ( o.collapsible ) {
+ if ( $li.hasClass( "ui-tabs-selected" ) ) {
o.selected = -1;
- if (o.cookie) {
- self._cookie(o.selected, o.cookie);
+ if ( o.cookie ) {
+ self._cookie( o.selected, o.cookie );
}
- self.element.queue("tabs", function() {
- hideTab(el, $hide);
- }).dequeue("tabs");
-
+ self.element.queue( "tabs", function() {
+ hideTab( el, $hide );
+ }).dequeue( "tabs" );
+
this.blur();
return false;
- }
- else if (!$hide.length) {
- if (o.cookie) {
- self._cookie(o.selected, o.cookie);
+ } else if ( !$hide.length ) {
+ if ( o.cookie ) {
+ self._cookie( o.selected, o.cookie );
}
-
- self.element.queue("tabs", function() {
- showTab(el, $show);
+
+ self.element.queue( "tabs", function() {
+ showTab( el, $show );
});
- self.load(self.anchors.index(this)); // TODO make passing in node possible, see also http://dev.jqueryui.com/ticket/3171
-
+ // TODO make passing in node possible, see also http://dev.jqueryui.com/ticket/3171
+ self.load( self.anchors.index( this ) );
+
this.blur();
return false;
}
}
- if (o.cookie) {
- self._cookie(o.selected, o.cookie);
+ if ( o.cookie ) {
+ self._cookie( o.selected, o.cookie );
}
// show new tab
- if ($show.length) {
- if ($hide.length) {
- self.element.queue("tabs", function() {
- hideTab(el, $hide);
+ if ( $show.length ) {
+ if ( $hide.length ) {
+ self.element.queue( "tabs", function() {
+ hideTab( el, $hide );
});
}
- self.element.queue("tabs", function() {
- showTab(el, $show);
+ self.element.queue( "tabs", function() {
+ showTab( el, $show );
});
-
- self.load(self.anchors.index(this));
- }
- else {
- throw 'jQuery UI Tabs: Mismatching fragment identifier.';
+
+ self.load( self.anchors.index( this ) );
+ } else {
+ throw "jQuery UI Tabs: Mismatching fragment identifier.";
}
// Prevent IE from keeping other link focussed when using the back button
// and remove dotted border from clicked link. This is controlled via CSS
// in modern browsers; blur() removes focus from address bar in Firefox
// which can become a usability and annoying problem with tabs('rotate').
- if ($.browser.msie) {
+ if ( $.browser.msie ) {
this.blur();
}
-
});
// disable click in any case
- this.anchors.bind('click.tabs', function(){return false;});
+ this.anchors.bind( "click.tabs", function(){
+ return false;
+ });
+ },
+
+ _getIndex: function( index ) {
+ // meta-function to give users option to provide a href string instead of a numerical index.
+ // also sanitizes numerical indexes to valid values.
+ if ( typeof index == "string" ) {
+ index = this.anchors.index( this.anchors.filter( "[href$=" + index + "]" ) );
+ }
+ return index;
},
destroy: function() {
var o = this.options;
this.abort();
-
- this.element.unbind('.tabs')
- .removeClass('ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible')
- .removeData('tabs');
- this.list.removeClass('ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all');
+ this.element
+ .unbind( ".tabs" )
+ .removeClass( "ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible" )
+ .removeData( "tabs" );
+
+ this.list.removeClass( "ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all" );
this.anchors.each(function() {
- var href = $.data(this, 'href.tabs');
- if (href) {
+ var href = $.data( this, "href.tabs" );
+ if ( href ) {
this.href = href;
}
- var $this = $(this).unbind('.tabs');
- $.each(['href', 'load', 'cache'], function(i, prefix) {
- $this.removeData(prefix + '.tabs');
+ var $this = $( this ).unbind( ".tabs" );
+ $.each( [ "href", "load", "cache" ], function( i, prefix ) {
+ $this.removeData( prefix + ".tabs" );
});
});
- this.lis.unbind('.tabs').add(this.panels).each(function() {
- if ($.data(this, 'destroy.tabs')) {
- $(this).remove();
- }
- else {
- $(this).removeClass([
- 'ui-state-default',
- 'ui-corner-top',
- 'ui-tabs-selected',
- 'ui-state-active',
- 'ui-state-hover',
- 'ui-state-focus',
- 'ui-state-disabled',
- 'ui-tabs-panel',
- 'ui-widget-content',
- 'ui-corner-bottom',
- 'ui-tabs-hide'
- ].join(' '));
+ this.lis.unbind( ".tabs" ).add( this.panels ).each(function() {
+ if ( $.data( this, "destroy.tabs" ) ) {
+ $( this ).remove();
+ } else {
+ $( this ).removeClass([
+ "ui-state-default",
+ "ui-corner-top",
+ "ui-tabs-selected",
+ "ui-state-active",
+ "ui-state-hover",
+ "ui-state-focus",
+ "ui-state-disabled",
+ "ui-tabs-panel",
+ "ui-widget-content",
+ "ui-corner-bottom",
+ "ui-tabs-hide"
+ ].join( " " ) );
}
});
- if (o.cookie) {
- this._cookie(null, o.cookie);
+ if ( o.cookie ) {
+ this._cookie( null, o.cookie );
}
return this;
},
- add: function(url, label, index) {
- if (index === undefined) {
- index = this.anchors.length; // append by default
+ add: function( url, label, index ) {
+ if ( index === undefined ) {
+ index = this.anchors.length;
}
- var self = this, o = this.options,
- $li = $(o.tabTemplate.replace(/#\{href\}/g, url).replace(/#\{label\}/g, label)),
- id = !url.indexOf('#') ? url.replace('#', '') : this._tabId($('a', $li)[0]);
+ var self = this,
+ o = this.options,
+ $li = $( o.tabTemplate.replace( /#\{href\}/g, url ).replace( /#\{label\}/g, label ) ),
+ id = !url.indexOf( "#" ) ? url.replace( "#", "" ) : this._tabId( $( "a", $li )[ 0 ] );
- $li.addClass('ui-state-default ui-corner-top').data('destroy.tabs', true);
+ $li.addClass( "ui-state-default ui-corner-top" ).data( "destroy.tabs", true );
// try to find an existing element before creating a new one
- var $panel = $('#' + id);
- if (!$panel.length) {
- $panel = $(o.panelTemplate).attr('id', id).data('destroy.tabs', true);
- }
- $panel.addClass('ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide');
-
- if (index >= this.lis.length) {
- $li.appendTo(this.list);
- $panel.appendTo(this.list[0].parentNode);
+ var $panel = self.element.find( "#" + id );
+ if ( !$panel.length ) {
+ $panel = $( o.panelTemplate )
+ .attr( "id", id )
+ .data( "destroy.tabs", true );
}
- else {
- $li.insertBefore(this.lis[index]);
- $panel.insertBefore(this.panels[index]);
+ $panel.addClass( "ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide" );
+
+ if ( index >= this.lis.length ) {
+ $li.appendTo( this.list );
+ $panel.appendTo( this.list[ 0 ].parentNode );
+ } else {
+ $li.insertBefore( this.lis[ index ] );
+ $panel.insertBefore( this.panels[ index ] );
}
- o.disabled = $.map(o.disabled,
- function(n, i) { return n >= index ? ++n : n; });
+ o.disabled = $.map( o.disabled, function( n, i ) {
+ return n >= index ? ++n : n;
+ });
this._tabify();
- if (this.anchors.length == 1) { // after tabify
+ if ( this.anchors.length == 1 ) {
o.selected = 0;
- $li.addClass('ui-tabs-selected ui-state-active');
- $panel.removeClass('ui-tabs-hide');
- this.element.queue("tabs", function() {
- self._trigger('show', null, self._ui(self.anchors[0], self.panels[0]));
+ $li.addClass( "ui-tabs-selected ui-state-active" );
+ $panel.removeClass( "ui-tabs-hide" );
+ this.element.queue( "tabs", function() {
+ self._trigger( "show", null, self._ui( self.anchors[ 0 ], self.panels[ 0 ] ) );
});
-
- this.load(0);
+
+ this.load( 0 );
}
- // callback
- this._trigger('add', null, this._ui(this.anchors[index], this.panels[index]));
+ this._trigger( "add", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );
return this;
},
- remove: function(index) {
- var o = this.options, $li = this.lis.eq(index).remove(),
- $panel = this.panels.eq(index).remove();
+ remove: function( index ) {
+ index = this._getIndex( index );
+ var o = this.options,
+ $li = this.lis.eq( index ).remove(),
+ $panel = this.panels.eq( index ).remove();
// If selected tab was removed focus tab to the right or
// in case the last tab was removed the tab to the left.
- if ($li.hasClass('ui-tabs-selected') && this.anchors.length > 1) {
- this.select(index + (index + 1 < this.anchors.length ? 1 : -1));
+ if ( $li.hasClass( "ui-tabs-selected" ) && this.anchors.length > 1) {
+ this.select( index + ( index + 1 < this.anchors.length ? 1 : -1 ) );
}
- o.disabled = $.map($.grep(o.disabled, function(n, i) { return n != index; }),
- function(n, i) { return n >= index ? --n : n; });
+ o.disabled = $.map(
+ $.grep( o.disabled, function(n, i) {
+ return n != index;
+ }),
+ function( n, i ) {
+ return n >= index ? --n : n;
+ });
this._tabify();
- // callback
- this._trigger('remove', null, this._ui($li.find('a')[0], $panel[0]));
+ this._trigger( "remove", null, this._ui( $li.find( "a" )[ 0 ], $panel[ 0 ] ) );
return this;
},
- enable: function(index) {
+ enable: function( index ) {
+ index = this._getIndex( index );
var o = this.options;
- if ($.inArray(index, o.disabled) == -1) {
+ if ( $.inArray( index, o.disabled ) == -1 ) {
return;
}
- this.lis.eq(index).removeClass('ui-state-disabled');
- o.disabled = $.grep(o.disabled, function(n, i) { return n != index; });
+ this.lis.eq( index ).removeClass( "ui-state-disabled" );
+ o.disabled = $.grep( o.disabled, function( n, i ) {
+ return n != index;
+ });
- // callback
- this._trigger('enable', null, this._ui(this.anchors[index], this.panels[index]));
+ this._trigger( "enable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );
return this;
},
- disable: function(index) {
+ disable: function( index ) {
+ index = this._getIndex( index );
var self = this, o = this.options;
- if (index != o.selected) { // cannot disable already selected tab
- this.lis.eq(index).addClass('ui-state-disabled');
+ // cannot disable already selected tab
+ if ( index != o.selected ) {
+ this.lis.eq( index ).addClass( "ui-state-disabled" );
- o.disabled.push(index);
+ o.disabled.push( index );
o.disabled.sort();
- // callback
- this._trigger('disable', null, this._ui(this.anchors[index], this.panels[index]));
+ this._trigger( "disable", null, this._ui( this.anchors[ index ], this.panels[ index ] ) );
}
return this;
},
- select: function(index) {
- if (typeof index == 'string') {
- index = this.anchors.index(this.anchors.filter('[href$=' + index + ']'));
- }
- else if (index === null) { // usage of null is deprecated, TODO remove in next release
- index = -1;
- }
- if (index == -1 && this.options.collapsible) {
- index = this.options.selected;
+ select: function( index ) {
+ index = this._getIndex( index );
+ if ( index == -1 ) {
+ if ( this.options.collapsible && this.options.selected != -1 ) {
+ index = this.options.selected;
+ } else {
+ return this;
+ }
}
-
- this.anchors.eq(index).trigger(this.options.event + '.tabs');
+ this.anchors.eq( index ).trigger( this.options.event + ".tabs" );
return this;
},
- load: function(index) {
- var self = this, o = this.options, a = this.anchors.eq(index)[0], url = $.data(a, 'load.tabs');
+ load: function( index ) {
+ index = this._getIndex( index );
+ var self = this,
+ o = this.options,
+ a = this.anchors.eq( index )[ 0 ],
+ url = $.data( a, "load.tabs" );
this.abort();
// not remote or from cache
- if (!url || this.element.queue("tabs").length !== 0 && $.data(a, 'cache.tabs')) {
- this.element.dequeue("tabs");
+ if ( !url || this.element.queue( "tabs" ).length !== 0 && $.data( a, "cache.tabs" ) ) {
+ this.element.dequeue( "tabs" );
return;
}
// load remote from here on
- this.lis.eq(index).addClass('ui-state-processing');
+ this.lis.eq( index ).addClass( "ui-state-processing" );
- if (o.spinner) {
- var span = $('span', a);
- span.data('label.tabs', span.html()).html(o.spinner);
+ if ( o.spinner ) {
+ var span = $( "span", a );
+ span.data( "label.tabs", span.html() ).html( o.spinner );
}
- this.xhr = $.ajax($.extend({}, o.ajaxOptions, {
+ this.xhr = $.ajax( $.extend( {}, o.ajaxOptions, {
url: url,
- success: function(r, s) {
- $(self._sanitizeSelector(a.hash)).html(r);
+ success: function( r, s ) {
+ self.element.find( self._sanitizeSelector( a.hash ) ).html( r );
// take care of tab labels
self._cleanup();
- if (o.cache) {
- $.data(a, 'cache.tabs', true); // if loaded once do not load them again
+ if ( o.cache ) {
+ $.data( a, "cache.tabs", true );
}
- // callbacks
- self._trigger('load', null, self._ui(self.anchors[index], self.panels[index]));
+ self._trigger( "load", null, self._ui( self.anchors[ index ], self.panels[ index ] ) );
try {
- o.ajaxOptions.success(r, s);
+ o.ajaxOptions.success( r, s );
}
- catch (e) {}
+ catch ( e ) {}
},
- error: function(xhr, s, e) {
+ error: function( xhr, s, e ) {
// take care of tab labels
self._cleanup();
- // callbacks
- self._trigger('load', null, self._ui(self.anchors[index], self.panels[index]));
+ self._trigger( "load", null, self._ui( self.anchors[ index ], self.panels[ index ] ) );
try {
// Passing index avoid a race condition when this method is
// called after the user has selected another tab.
// Pass the anchor that initiated this request allows
// loadError to manipulate the tab content panel via $(a.hash)
- o.ajaxOptions.error(xhr, s, index, a);
+ o.ajaxOptions.error( xhr, s, index, a );
}
- catch (e) {}
+ catch ( e ) {}
}
- }));
+ } ) );
// last, so that load event is fired before show...
- self.element.dequeue("tabs");
+ self.element.dequeue( "tabs" );
return this;
},
abort: function() {
// stop possibly running animations
- this.element.queue([]);
- this.panels.stop(false, true);
+ this.element.queue( [] );
+ this.panels.stop( false, true );
// "tabs" queue must not contain more than two elements,
// which are the callbacks for the latest clicked tab...
- this.element.queue("tabs", this.element.queue("tabs").splice(-2, 2));
+ this.element.queue( "tabs", this.element.queue( "tabs" ).splice( -2, 2 ) );
// terminate pending requests from other tabs
- if (this.xhr) {
+ if ( this.xhr ) {
this.xhr.abort();
delete this.xhr;
}
@@ -656,19 +687,18 @@ $.widget("ui.tabs", {
return this;
},
- url: function(index, url) {
- this.anchors.eq(index).removeData('cache.tabs').data('load.tabs', url);
+ url: function( index, url ) {
+ this.anchors.eq( index ).removeData( "cache.tabs" ).data( "load.tabs", url );
return this;
},
length: function() {
return this.anchors.length;
}
-
});
-$.extend($.ui.tabs, {
- version: '1.8.2'
+$.extend( $.ui.tabs, {
+ version: "1.8.11"
});
/*
@@ -678,46 +708,45 @@ $.extend($.ui.tabs, {
/*
* Rotate
*/
-$.extend($.ui.tabs.prototype, {
+$.extend( $.ui.tabs.prototype, {
rotation: null,
- rotate: function(ms, continuing) {
+ rotate: function( ms, continuing ) {
+ var self = this,
+ o = this.options;
- var self = this, o = this.options;
-
- var rotate = self._rotate || (self._rotate = function(e) {
- clearTimeout(self.rotation);
+ var rotate = self._rotate || ( self._rotate = function( e ) {
+ clearTimeout( self.rotation );
self.rotation = setTimeout(function() {
var t = o.selected;
self.select( ++t < self.anchors.length ? t : 0 );
- }, ms);
+ }, ms );
- if (e) {
+ if ( e ) {
e.stopPropagation();
}
});
-
- var stop = self._unrotate || (self._unrotate = !continuing ?
- function(e) {
+
+ var stop = self._unrotate || ( self._unrotate = !continuing
+ ? function(e) {
if (e.clientX) { // in case of a true click
self.rotate(null);
}
- } :
- function(e) {
+ }
+ : function( e ) {
t = o.selected;
rotate();
});
// start rotation
- if (ms) {
- this.element.bind('tabsshow', rotate);
- this.anchors.bind(o.event + '.tabs', stop);
+ if ( ms ) {
+ this.element.bind( "tabsshow", rotate );
+ this.anchors.bind( o.event + ".tabs", stop );
rotate();
- }
// stop rotation
- else {
- clearTimeout(self.rotation);
- this.element.unbind('tabsshow', rotate);
- this.anchors.unbind(o.event + '.tabs', stop);
+ } else {
+ clearTimeout( self.rotation );
+ this.element.unbind( "tabsshow", rotate );
+ this.anchors.unbind( o.event + ".tabs", stop );
delete this._rotate;
delete this._unrotate;
}
@@ -726,4 +755,4 @@ $.extend($.ui.tabs.prototype, {
}
});
-})(jQuery);
+})( jQuery );
diff --git a/resources/jquery.ui/jquery.ui.widget.js b/resources/jquery.ui/jquery.ui.widget.js
index 6425d086..b6b1beea 100644
--- a/resources/jquery.ui/jquery.ui.widget.js
+++ b/resources/jquery.ui/jquery.ui.widget.js
@@ -1,28 +1,38 @@
/*!
- * jQuery UI Widget 1.8.2
+ * jQuery UI Widget 1.8.11
*
- * Copyright (c) 2010 AUTHORS.txt (http://jqueryui.com/about)
- * Dual licensed under the MIT (MIT-LICENSE.txt)
- * and GPL (GPL-LICENSE.txt) licenses.
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
+ * Dual licensed under the MIT or GPL Version 2 licenses.
+ * http://jquery.org/license
*
* http://docs.jquery.com/UI/Widget
*/
-(function( $ ) {
-
-var _remove = $.fn.remove;
-
-$.fn.remove = function( selector, keepData ) {
- return this.each(function() {
- if ( !keepData ) {
- if ( !selector || $.filter( selector, [ this ] ).length ) {
- $( "*", this ).add( this ).each(function() {
- $( this ).triggerHandler( "remove" );
- });
- }
+(function( $, undefined ) {
+
+// jQuery 1.4+
+if ( $.cleanData ) {
+ var _cleanData = $.cleanData;
+ $.cleanData = function( elems ) {
+ for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ $( elem ).triggerHandler( "remove" );
}
- return _remove.call( $(this), selector, keepData );
- });
-};
+ _cleanData( elems );
+ };
+} else {
+ var _remove = $.fn.remove;
+ $.fn.remove = function( selector, keepData ) {
+ return this.each(function() {
+ if ( !keepData ) {
+ if ( !selector || $.filter( selector, [ this ] ).length ) {
+ $( "*", this ).add( [ this ] ).each(function() {
+ $( this ).triggerHandler( "remove" );
+ });
+ }
+ }
+ return _remove.call( $(this), selector, keepData );
+ });
+ };
+}
$.widget = function( name, base, prototype ) {
var namespace = name.split( "." )[ 0 ],
@@ -57,7 +67,7 @@ $.widget = function( name, base, prototype ) {
// basePrototype[ key ] = $.extend( {}, val );
// }
// });
- basePrototype.options = $.extend( {}, basePrototype.options );
+ basePrototype.options = $.extend( true, {}, basePrototype.options );
$[ namespace ][ name ].prototype = $.extend( true, basePrototype, {
namespace: namespace,
widgetName: name,
@@ -80,7 +90,7 @@ $.widget.bridge = function( name, object ) {
options;
// prevent calls to internal methods
- if ( isMethodCall && options.substring( 0, 1 ) === "_" ) {
+ if ( isMethodCall && options.charAt( 0 ) === "_" ) {
return returnValue;
}
@@ -90,6 +100,15 @@ $.widget.bridge = function( name, object ) {
methodValue = instance && $.isFunction( instance[options] ) ?
instance[ options ].apply( instance, args ) :
instance;
+ // TODO: add this back in 1.9 and use $.error() (see #5972)
+// if ( !instance ) {
+// throw "cannot call methods on " + name + " prior to initialization; " +
+// "attempted to call method '" + options + "'";
+// }
+// if ( !$.isFunction( instance[options] ) ) {
+// throw "no such method '" + options + "' for " + name + " widget instance";
+// }
+// var methodValue = instance[ options ].apply( instance, args );
if ( methodValue !== instance && methodValue !== undefined ) {
returnValue = methodValue;
return false;
@@ -99,10 +118,7 @@ $.widget.bridge = function( name, object ) {
this.each(function() {
var instance = $.data( this, name );
if ( instance ) {
- if ( options ) {
- instance.option( options );
- }
- instance._init();
+ instance.option( options || {} )._init();
} else {
$.data( this, name, new object( options, this ) );
}
@@ -129,10 +145,11 @@ $.Widget.prototype = {
_createWidget: function( options, element ) {
// $.widget.bridge stores the plugin instance, but we do it anyway
// so that it's stored even before the _create function runs
- this.element = $( element ).data( this.widgetName, this );
+ $.data( element, this.widgetName, this );
+ this.element = $( element );
this.options = $.extend( true, {},
this.options,
- $.metadata && $.metadata.get( element )[ this.widgetName ],
+ this._getCreateOptions(),
options );
var self = this;
@@ -141,8 +158,12 @@ $.Widget.prototype = {
});
this._create();
+ this._trigger( "create" );
this._init();
},
+ _getCreateOptions: function() {
+ return $.metadata && $.metadata.get( this.element[0] )[ this.widgetName ];
+ },
_create: function() {},
_init: function() {},
@@ -163,12 +184,11 @@ $.Widget.prototype = {
},
option: function( key, value ) {
- var options = key,
- self = this;
+ var options = key;
if ( arguments.length === 0 ) {
// don't return a reference to the internal hash
- return $.extend( {}, self.options );
+ return $.extend( {}, this.options );
}
if (typeof key === "string" ) {
@@ -179,11 +199,17 @@ $.Widget.prototype = {
options[ key ] = value;
}
+ this._setOptions( options );
+
+ return this;
+ },
+ _setOptions: function( options ) {
+ var self = this;
$.each( options, function( key, value ) {
self._setOption( key, value );
});
- return self;
+ return this;
},
_setOption: function( key, value ) {
this.options[ key ] = value;
diff --git a/resources/jquery.ui/themes/default/jquery.ui.autocomplete.css b/resources/jquery.ui/themes/default/jquery.ui.autocomplete.css
index 5957f78f..f287dbe9 100644
--- a/resources/jquery.ui/themes/default/jquery.ui.autocomplete.css
+++ b/resources/jquery.ui/themes/default/jquery.ui.autocomplete.css
@@ -13,6 +13,7 @@
padding: 2px;
margin: 0;
display:block;
+ float: left;
}
.ui-menu .ui-menu {
margin-top: -3px;
diff --git a/resources/jquery.ui/themes/default/jquery.ui.datepicker.css b/resources/jquery.ui/themes/default/jquery.ui.datepicker.css
index a1116e69..580a2929 100644
--- a/resources/jquery.ui/themes/default/jquery.ui.datepicker.css
+++ b/resources/jquery.ui/themes/default/jquery.ui.datepicker.css
@@ -35,17 +35,17 @@
.ui-datepicker-row-break { clear:both; width:100%; }
/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+/* @noflip */ .ui-datepicker-rtl { direction: rtl; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
diff --git a/resources/jquery.ui/themes/vector/jquery.ui.autocomplete.css b/resources/jquery.ui/themes/vector/jquery.ui.autocomplete.css
index 6610a878..c06fd18a 100644
--- a/resources/jquery.ui/themes/vector/jquery.ui.autocomplete.css
+++ b/resources/jquery.ui/themes/vector/jquery.ui.autocomplete.css
@@ -13,6 +13,7 @@
padding: 2px;
margin: 0;
display:block;
+ float: left;
}
.ui-menu .ui-menu {
margin-top: -3px;
diff --git a/resources/jquery.ui/themes/vector/jquery.ui.button.css b/resources/jquery.ui/themes/vector/jquery.ui.button.css
index 5507c42b..631fa756 100644
--- a/resources/jquery.ui/themes/vector/jquery.ui.button.css
+++ b/resources/jquery.ui/themes/vector/jquery.ui.button.css
@@ -8,19 +8,23 @@ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a l
button.ui-button-icons-only { width: 3.7em; }
/*button text element */
-.ui-button .ui-button-text { display: block; line-height: 1.4; }
-.ui-button-text-only .ui-button-text { padding: .125em .25em; }
-.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
-.ui-button-text-icon .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
+.ui-button .ui-button-text { display: block; line-height: 1.4em; }
+.ui-button-text-only .ui-button-text { padding: 0.3em 1em 0.25em 1em; }
+.ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: 0.3em; text-indent: -9999999px; }
+.ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: 0.3em 1em 0.25em 2.1em; }
+.ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: 0.3em 2.1em 0.25em 1em; }
.ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
+/* for older versions of jQuery UI */
+.ui-button-text-icon .ui-button-text { padding: 0.3em 1em 0.3em 2.1em; }
+
/* no icon support for input elements, provide padding by default */
-input.ui-button { padding: .4em 1em; }
+input.ui-button { padding: 0.3em 1em; }
/*button icon element(s) */
-.ui-button-icon-only .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
+.ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-text-icon .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -9px; }
.ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
-.ui-button-text-icon .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
-.ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
+.ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icon .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: 0.5em; }
+.ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icon .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: 0.5em; }
/*button sets*/
.ui-buttonset { margin-right: 7px; }
@@ -29,10 +33,10 @@ input.ui-button { padding: .4em 1em; }
/* workarounds */
button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
-body button.ui-button {
+body .ui-button {
-moz-border-radius: 4px;
-webkit-border-radius: 4px;
- padding: 0.2em 0.6em 0.15em !important;
+ border-radius: 4px;
margin: 0.5em 0 0.5em 0.4em !important;
border: 1px solid #a6a6a6 !important;
/* @embed */
@@ -43,18 +47,18 @@ body button.ui-button {
width: auto;
overflow: visible;
}
-body button.ui-button:hover {
+body .ui-button:hover {
border-color: #6e7273;
/* @embed */
background: #e1e1e1 url(images/button-over.png) repeat-x scroll 50% 100% !important;
}
-body button.ui-button:active,
-body button.ui-button:focus {
+body .ui-button:active,
+body .ui-button:focus {
border-color: #707271;
/* @embed */
background: #bfbfbf url(images/button-down.png) repeat-x scroll 50% 100% !important;
}
-body button.ui-button.disabled {
+body .ui-button.disabled {
color: #7f7f7f;
border-color: #cccccc;
/* @embed */
@@ -67,24 +71,24 @@ body button.ui-button::-moz-focus-inner {
/* Green buttons */
-body button.ui-button.ui-button-green {
+body .ui-button.ui-button-green {
color: white;
border-color: #97af7e !important;
/* @embed */
background: #85c940 url(images/button-off-green.png) repeat-x scroll 50% 100% !important;
}
-body button.ui-button.ui-button-green:hover {
+body .ui-button.ui-button-green:hover {
border-color: #778e61;
/* @embed */
background: #77ad40 url(images/button-over-green.png) repeat-x scroll 50% 100% !important;
}
-body button.ui-button.ui-button-green:active,
-body button.ui-button.ui-button-green:focus {
+body .ui-button.ui-button-green:active,
+body .ui-button.ui-button-green:focus {
border-color: #61b000;
/* @embed */
background: #54a800 url(images/button-down-green.png) repeat-x scroll 50% 100% !important;
}
-body button.ui-button.ui-button-green.disabled {
+body .ui-button.ui-button-green.disabled {
color: #7f7f7f;
border-color: #b8d29f;
/* @embed */
@@ -93,24 +97,24 @@ body button.ui-button.ui-button-green.disabled {
/* Blue buttons */
-body button.ui-button.ui-button-blue {
+body .ui-button.ui-button-blue {
color: white;
border-color: #407ec9 !important;
/* @embed */
background: #407ec9 url(images/button-off-blue.png) repeat-x scroll 50% 100% !important;
}
-body button.ui-button.ui-button-blue:hover {
+body .ui-button.ui-button-blue:hover {
border-color: #245289;
/* @embed */
background: #4071ad url(images/button-over-blue.png) repeat-x scroll 50% 100% !important;
}
-body button.ui-button.ui-button-blue:active,
-body button.ui-button.ui-button-blue:focus {
+body .ui-button.ui-button-blue:active,
+body .ui-button.ui-button-blue:focus {
border-color: #003980;
/* @embed */
background: #004daa url(images/button-down-blue.png) repeat-x scroll 50% 100% !important;
}
-body button.ui-button.ui-button-blue.disabled {
+body .ui-button.ui-button-blue.disabled {
border-color: #9eafc6;
/* @embed */
background: #c3c8cf url(images/button-disabled-blue.png) repeat-x scroll 50% 100% !important;
@@ -118,24 +122,24 @@ body button.ui-button.ui-button-blue.disabled {
/* Red buttons */
-body button.ui-button.ui-button-red {
+body .ui-button.ui-button-red {
color: white;
border-color: #af977e !important;
/* @embed */
background: #c9404c url(images/button-off-red.png) repeat-x scroll 50% 100% !important;
}
-body button.ui-button.ui-button-red:hover {
+body .ui-button.ui-button-red:hover {
border-color: #8e7761;
/* @embed */
background: #ad404a url(images/button-over-red.png) repeat-x scroll 50% 100% !important;
}
-body button.ui-button.ui-button-red:active,
-body button.ui-button.ui-button-red:focus {
+body .ui-button.ui-button-red:active,
+body .ui-button.ui-button-red:focus {
border-color: #b06100;
/* @embed */
background: #aa000f url(images/button-down-red.png) repeat-x scroll 50% 100% !important;
}
-body button.ui-button.ui-button-red.disabled {
+body .ui-button.ui-button-red.disabled {
color: #7f7f7f;
border-color: #c3acae;
/* @embed */
diff --git a/resources/jquery.ui/themes/vector/jquery.ui.datepicker.css b/resources/jquery.ui/themes/vector/jquery.ui.datepicker.css
index a1116e69..81022250 100644
--- a/resources/jquery.ui/themes/vector/jquery.ui.datepicker.css
+++ b/resources/jquery.ui/themes/vector/jquery.ui.datepicker.css
@@ -10,7 +10,7 @@
.ui-datepicker .ui-datepicker-next-hover { right:1px; }
.ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
.ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
-.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
+.ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; padding:1px 0; }
.ui-datepicker select.ui-datepicker-month-year {width: 100%;}
.ui-datepicker select.ui-datepicker-month,
.ui-datepicker select.ui-datepicker-year { width: 49%;}
@@ -18,7 +18,7 @@
.ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
.ui-datepicker td { border: 0; padding: 1px; }
.ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
-.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
+.ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .2em 0 0 0; padding: 0 .2em; border-top: 1px solid #DDDDDD; border-left: 0; border-right: 0; border-bottom: 0; }
.ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
@@ -35,17 +35,17 @@
.ui-datepicker-row-break { clear:both; width:100%; }
/* RTL support */
-.ui-datepicker-rtl { direction: rtl; }
-.ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
-.ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
-.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group { float:right; }
-.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
-.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+/* @noflip */ .ui-datepicker-rtl { direction: rtl; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
+/* @noflip */ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
/* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
.ui-datepicker-cover {
diff --git a/resources/jquery.ui/themes/vector/jquery.ui.theme.css b/resources/jquery.ui/themes/vector/jquery.ui.theme.css
index 26551213..e39371de 100644
--- a/resources/jquery.ui/themes/vector/jquery.ui.theme.css
+++ b/resources/jquery.ui/themes/vector/jquery.ui.theme.css
@@ -13,9 +13,9 @@
.ui-widget { font-family: sans-serif; font-size: 0.8em; }
.ui-widget .ui-widget { font-size: 1em; }
.ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: sans-serif; font-size: 1em; }
-.ui-widget-content { border: none; /* @embed */ background: #f2f5f7 url(images/ui-bg_highlight-hard_100_f2f5f7_1x100.png) 50% top repeat-x; color: #362b36; }
+.ui-widget-content { border: 1px solid #cccccc; /* @embed */ background: #f2f5f7 url(images/ui-bg_highlight-hard_100_f2f5f7_1x100.png) 50% top repeat-x; color: #362b36; }
.ui-widget-content a { color: #362b36; }
-.ui-widget-header { border: 1px solid #aed0ea; line-height: 1em; /* @embed */ background: #ffffff url(images/ui-bg_highlight-soft_100_ffffff_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
+.ui-widget-header { border-bottom: 1px solid #bbbbbb; line-height: 1em; /* @embed */ background: #ffffff url(images/ui-bg_highlight-soft_100_ffffff_1x100.png) 50% 50% repeat-x; color: #222222; font-weight: bold; }
.ui-widget-header a { color: #222222; }
/* Interaction states
diff --git a/resources/jquery/images/sort_both.gif b/resources/jquery/images/sort_both.gif
new file mode 100644
index 00000000..50ad15a0
--- /dev/null
+++ b/resources/jquery/images/sort_both.gif
Binary files differ
diff --git a/resources/jquery/images/sort_down.gif b/resources/jquery/images/sort_down.gif
new file mode 100644
index 00000000..ec4f41b0
--- /dev/null
+++ b/resources/jquery/images/sort_down.gif
Binary files differ
diff --git a/skins/common/images/sort_none.gif b/resources/jquery/images/sort_none.gif
index edd07e58..edd07e58 100644
--- a/skins/common/images/sort_none.gif
+++ b/resources/jquery/images/sort_none.gif
Binary files differ
diff --git a/resources/jquery/images/sort_up.gif b/resources/jquery/images/sort_up.gif
new file mode 100644
index 00000000..80189185
--- /dev/null
+++ b/resources/jquery/images/sort_up.gif
Binary files differ
diff --git a/resources/jquery/jquery.appear.js b/resources/jquery/jquery.appear.js
new file mode 100644
index 00000000..4f77886c
--- /dev/null
+++ b/resources/jquery/jquery.appear.js
@@ -0,0 +1,138 @@
+/*
+ * jQuery.appear
+ * http://code.google.com/p/jquery-appear/
+ *
+ * Copyright (c) 2009 Michael Hixson
+ * Licensed under the MIT license (http://www.opensource.org/licenses/mit-license.php)
+*/
+(function($) {
+
+ $.fn.appear = function(fn, options) {
+
+ var settings = $.extend({
+
+ //arbitrary data to pass to fn
+ data: undefined,
+
+ //call fn only on the first appear?
+ one: true
+
+ }, options);
+
+ return this.each(function() {
+
+ var t = $(this);
+
+ //whether the element is currently visible
+ t.appeared = false;
+
+ if (!fn) {
+
+ //trigger the custom event
+ t.trigger('appear', settings.data);
+ return;
+ }
+
+ var w = $(window);
+
+ //fires the appear event when appropriate
+ var check = function() {
+
+ //is the element hidden?
+ if (!t.is(':visible')) {
+
+ //it became hidden
+ t.appeared = false;
+ return;
+ }
+
+ //is the element inside the visible window?
+ var a = w.scrollLeft();
+ var b = w.scrollTop();
+ var o = t.offset();
+ var x = o.left;
+ var y = o.top;
+
+ if (y + t.height() >= b &&
+ y <= b + w.height() &&
+ x + t.width() >= a &&
+ x <= a + w.width()) {
+
+ //trigger the custom event
+ if (!t.appeared) t.trigger('appear', settings.data);
+
+ } else {
+
+ //it scrolled out of view
+ t.appeared = false;
+ }
+ };
+
+ //create a modified fn with some additional logic
+ var modifiedFn = function() {
+
+ //mark the element as visible
+ t.appeared = true;
+
+ //is this supposed to happen only once?
+ if (settings.one) {
+
+ //remove the check
+ w.unbind('scroll', check);
+ var i = $.inArray(check, $.fn.appear.checks);
+ if (i >= 0) $.fn.appear.checks.splice(i, 1);
+ }
+
+ //trigger the original fn
+ fn.apply(this, arguments);
+ };
+
+ //bind the modified fn to the element
+ if (settings.one) t.one('appear', settings.data, modifiedFn);
+ else t.bind('appear', settings.data, modifiedFn);
+
+ //check whenever the window scrolls
+ w.scroll(check);
+
+ //check whenever the dom changes
+ $.fn.appear.checks.push(check);
+
+ //check now
+ (check)();
+ });
+ };
+
+ //keep a queue of appearance checks
+ $.extend($.fn.appear, {
+
+ checks: [],
+ timeout: null,
+
+ //process the queue
+ checkAll: function() {
+ var length = $.fn.appear.checks.length;
+ if (length > 0) while (length--) ($.fn.appear.checks[length])();
+ },
+
+ //check the queue asynchronously
+ run: function() {
+ if ($.fn.appear.timeout) clearTimeout($.fn.appear.timeout);
+ $.fn.appear.timeout = setTimeout($.fn.appear.checkAll, 20);
+ }
+ });
+
+ //run checks when these methods are called
+ $.each(['append', 'prepend', 'after', 'before', 'attr',
+ 'removeAttr', 'addClass', 'removeClass', 'toggleClass',
+ 'remove', 'css', 'show', 'hide'], function(i, n) {
+ var old = $.fn[n];
+ if (old) {
+ $.fn[n] = function() {
+ var r = old.apply(this, arguments);
+ $.fn.appear.run();
+ return r;
+ }
+ }
+ });
+
+})(jQuery); \ No newline at end of file
diff --git a/resources/jquery/jquery.async.js b/resources/jquery/jquery.async.js
index 61493f71..2161f6b9 100644
--- a/resources/jquery/jquery.async.js
+++ b/resources/jquery/jquery.async.js
@@ -13,33 +13,28 @@
// opts.test : (default true) function to test in the while test part
// opts.loop : (default empty) function to call in the while loop part
// opts.end : (default empty) function to call at the end of the while loop
-$.whileAsync = function(opts)
-{
+$.whileAsync = function(opts) {
var delay = Math.abs(opts.delay) || 10,
bulk = isNaN(opts.bulk) ? 500 : Math.abs(opts.bulk),
test = opts.test || function(){ return true; },
loop = opts.loop || function(){},
- end = opts.end || function(){};
+ end = opts.end || function(){};
(function(){
var t = false,
begin = new Date();
- while( t = test() )
- {
+ while( t = test() ) {
loop();
- if( bulk === 0 || (new Date() - begin) > bulk )
- {
+ if( bulk === 0 || (new Date() - begin) > bulk ) {
break;
}
}
- if( t )
- {
+ if( t ) {
setTimeout(arguments.callee, delay);
}
- else
- {
+ else {
end();
}
@@ -50,17 +45,15 @@ $.whileAsync = function(opts)
// opts.bulk : (default 500) delay during which the loop can continue synchronously without yielding the CPU
// opts.loop : (default empty) function to call in the each loop part, signature: function(index, value) this = value
// opts.end : (default empty) function to call at the end of the each loop
-$.eachAsync = function(array, opts)
-{
- var i = 0,
+$.eachAsync = function(array, opts) {
+ var i = 0,
l = array.length,
loop = opts.loop || function(){};
$.whileAsync(
$.extend(opts, {
- test: function(){ return i < l; },
- loop: function()
- {
+ test: function() { return i < l; },
+ loop: function() {
var val = array[i];
return loop.call(val, i++, val);
}
@@ -68,11 +61,9 @@ $.eachAsync = function(array, opts)
);
};
-$.fn.eachAsync = function(opts)
-{
+$.fn.eachAsync = function(opts) {
$.eachAsync(this, opts);
return this;
}
-})(jQuery);
-
+})(jQuery); \ No newline at end of file
diff --git a/resources/jquery/jquery.autoEllipsis.js b/resources/jquery/jquery.autoEllipsis.js
index 4993118d..7d726894 100644
--- a/resources/jquery/jquery.autoEllipsis.js
+++ b/resources/jquery/jquery.autoEllipsis.js
@@ -3,9 +3,9 @@
*/
( function( $ ) {
-// Cache ellipsed substrings for every string-width combination
+// Cache ellipsed substrings for every string-width-position combination
var cache = { };
-// Use a seperate cache when match highlighting is enabled
+// Use a separate cache when match highlighting is enabled
var matchTextCache = { };
$.fn.autoEllipsis = function( options ) {
@@ -17,29 +17,29 @@ $.fn.autoEllipsis = function( options ) {
'matchText': null
}, options );
$(this).each( function() {
- var $this = $(this);
+ var $el = $(this);
if ( options.restoreText ) {
- if ( ! $this.data( 'autoEllipsis.originalText' ) ) {
- $this.data( 'autoEllipsis.originalText', $this.text() );
+ if ( !$el.data( 'autoEllipsis.originalText' ) ) {
+ $el.data( 'autoEllipsis.originalText', $el.text() );
} else {
- $this.text( $this.data( 'autoEllipsis.originalText' ) );
+ $el.text( $el.data( 'autoEllipsis.originalText' ) );
}
}
// container element - used for measuring against
- var $container = $this;
+ var $container = $el;
// trimmable text element - only the text within this element will be trimmed
var $trimmableText = null;
// protected text element - the width of this element is counted, but next is never trimmed from it
var $protectedText = null;
if ( options.hasSpan ) {
- $trimmableText = $this.children( options.selector );
+ $trimmableText = $el.children( options.selector );
} else {
$trimmableText = $( '<span />' )
.css( 'whiteSpace', 'nowrap' )
- .text( $this.text() );
- $this
+ .text( $el.text() );
+ $el
.empty()
.append( $trimmableText );
}
@@ -49,27 +49,39 @@ $.fn.autoEllipsis = function( options ) {
var w = $container.width();
var pw = $protectedText ? $protectedText.width() : 0;
// Try cache
- if ( !( text in cache ) ) {
- cache[text] = {};
- }
- if ( options.matchText && !( text in matchTextCache ) ) {
- matchTextCache[text] = {};
- }
- if ( options.matchText && !( options.matchText in matchTextCache[text] ) ) {
- matchTextCache[text][options.matchText] = {};
- }
- if ( !options.matchText && w in cache[text] ) {
- $container.html( cache[text][w] );
- if ( options.tooltip )
- $container.attr( 'title', text );
- return;
- }
- if( options.matchText && options.matchText in matchTextCache[text] && w in matchTextCache[text][options.matchText] ) {
- $container.html( matchTextCache[text][options.matchText][w] );
- if ( options.tooltip )
- $container.attr( 'title', text );
- return;
+ if ( options.matchText ) {
+ if ( !( text in matchTextCache ) ) {
+ matchTextCache[text] = {};
+ }
+ if ( !( options.matchText in matchTextCache[text] ) ) {
+ matchTextCache[text][options.matchText] = {};
+ }
+ if ( !( w in matchTextCache[text][options.matchText] ) ) {
+ matchTextCache[text][options.matchText][w] = {};
+ }
+ if ( options.position in matchTextCache[text][options.matchText][w] ) {
+ $container.html( matchTextCache[text][options.matchText][w][options.position] );
+ if ( options.tooltip ) {
+ $container.attr( 'title', text );
+ }
+ return;
+ }
+ } else {
+ if ( !( text in cache ) ) {
+ cache[text] = {};
+ }
+ if ( !( w in cache[text] ) ) {
+ cache[text][w] = {};
+ }
+ if ( options.position in cache[text][w] ) {
+ $container.html( cache[text][w][options.position] );
+ if ( options.tooltip ) {
+ $container.attr( 'title', text );
+ }
+ return;
+ }
}
+
if ( $trimmableText.width() + pw > w ) {
switch ( options.position ) {
case 'right':
@@ -94,7 +106,7 @@ $.fn.autoEllipsis = function( options ) {
while ( $trimmableText.outerWidth() + pw > w && i[0] > 0 ) {
$trimmableText.text( trimmableText.substr( 0, i[0] ) + '...' + trimmableText.substr( i[1] ) );
// Alternate between trimming the end and begining
- if ( side == 0 ) {
+ if ( side === 0 ) {
// Make the begining shorter
i[0]--;
side = 1;
@@ -120,9 +132,9 @@ $.fn.autoEllipsis = function( options ) {
}
if ( options.matchText ) {
$container.highlightText( options.matchText );
- matchTextCache[text][options.matchText][w] = $container.html();
+ matchTextCache[text][options.matchText][w][options.position] = $container.html();
} else {
- cache[text][w] = $container.html();
+ cache[text][w][options.position] = $container.html();
}
} );
diff --git a/resources/jquery/jquery.byteLength.js b/resources/jquery/jquery.byteLength.js
new file mode 100644
index 00000000..20fa5c8e
--- /dev/null
+++ b/resources/jquery/jquery.byteLength.js
@@ -0,0 +1,19 @@
+/**
+ * jQuery.byteLength
+ *
+ * Calculate the byte length of a string (accounting for UTF-8).
+ *
+ * @author Jan Paul Posma
+ */
+jQuery.byteLength = function( str ) {
+
+ // This basically figures out how many bytes a UTF-16 string (which is what js sees)
+ // will take in UTF-8 by replacing a 2 byte character with 2 *'s, etc, and counting that.
+ // Note, surrogate (\uD800-\uDFFF) characters are counted as 2 bytes, since there's two of them
+ // and the actual character takes 4 bytes in UTF-8 (2*2=4). Might not work perfectly in
+ // edge cases such as illegal sequences, but that should never happen.
+ return str
+ .replace( /[\u0080-\u07FF\uD800-\uDFFF]/g, '**' )
+ .replace( /[\u0800-\uD7FF\uE000-\uFFFF]/g, '***' )
+ .length;
+}
diff --git a/resources/jquery/jquery.byteLimit.js b/resources/jquery/jquery.byteLimit.js
new file mode 100644
index 00000000..c1d26fc4
--- /dev/null
+++ b/resources/jquery/jquery.byteLimit.js
@@ -0,0 +1,56 @@
+/**
+ * jQuery byteLimit
+ *
+ * @author Jan Paul Posma
+ */
+( function( $ ) {
+
+ /**
+ * Enforces a byte limit to a textbox, so that UTF-8 entries are not arbitrarily truncated.
+ */
+ $.fn.byteLimit = function( limit ) {
+
+ // Default to current attribute value
+ if ( limit == null ) {
+ limit = this.attr( 'maxLength' );
+
+ // If passed, update/set attribute value instead
+ } else {
+ this.attr( 'maxLength', limit );
+ }
+
+ // Nothing passed and/or empty attribute, return without binding an event.
+ if ( limit == null ) {
+ return this;
+ }
+
+ // We've got something, go for it:
+ return this.keypress( function( e ) {
+ // First check to see if this is actually a character key
+ // being pressed.
+ // Based on key-event info from http://unixpapa.com/js/key.html
+ // jQuery should also normalize e.which to be consistent cross-browser,
+ // however the same check is still needed regardless of jQuery.
+
+ // Note: At the moment, for some older opera versions (~< 10.5)
+ // some special keys won't be recognized (aka left arrow key).
+ // Backspace will be, so not big issue.
+
+ if ( e.which === 0 || e.charCode === 0 || e.which === 8 ||
+ e.ctrlKey || e.altKey || e.metaKey )
+ {
+ return true; //a special key (backspace, etc) so don't interfere.
+ }
+
+ var len = $.byteLength( this.value );
+ // Note that keypress returns a character code point, not a keycode.
+ // However, this may not be super reliable depending on how keys come in...
+ var charLen = $.byteLength( String.fromCharCode( e.which ) );
+
+ if ( ( len + charLen ) > limit ) {
+ e.preventDefault();
+ }
+ });
+ };
+
+} )( jQuery );
diff --git a/resources/jquery/jquery.checkboxShiftClick.js b/resources/jquery/jquery.checkboxShiftClick.js
index b2fcb6ef..cfa696d4 100644
--- a/resources/jquery/jquery.checkboxShiftClick.js
+++ b/resources/jquery/jquery.checkboxShiftClick.js
@@ -7,22 +7,22 @@
* @license GPL v2
*/
( function( $ ) {
-jQuery.fn.checkboxShiftClick = function( text ) {
+$.fn.checkboxShiftClick = function( text ) {
var prevCheckbox = null;
var $box = this;
// When our boxes are clicked..
- $box.click(function (e) {
+ $box.click( function( e ) {
// And one has been clicked before...
- if (prevCheckbox !== null && e.shiftKey) {
+ if ( prevCheckbox !== null && e.shiftKey ) {
// Check or uncheck this one and all in-between checkboxes
$box.slice(
- Math.min($box.index(prevCheckbox), $box.index(e.target)),
- Math.max($box.index(prevCheckbox), $box.index(e.target)) + 1
- ).attr({checked: e.target.checked ? 'checked' : ''});
+ Math.min( $box.index( prevCheckbox ), $box.index( e.target ) ),
+ Math.max( $box.index( prevCheckbox ), $box.index( e.target ) ) + 1
+ ).attr( {checked: e.target.checked ? 'checked' : ''} );
}
// Either way, update the prevCheckbox variable to the one clicked now
prevCheckbox = e.target;
- });
+ } );
return $box;
};
} )( jQuery ); \ No newline at end of file
diff --git a/resources/jquery/jquery.client.js b/resources/jquery/jquery.client.js
index 4b9f580f..8082fa7d 100644
--- a/resources/jquery/jquery.client.js
+++ b/resources/jquery/jquery.client.js
@@ -1,206 +1,216 @@
-/*
+/**
* User-agent detection
*/
( function( $ ) {
-$.client = new ( function() {
/* Private Members */
- var profile;
-
- /* Public Functions */
-
/**
- * Returns an object containing information about the browser
- *
- * The resulting client object will be in the following format:
- * {
- * 'name': 'firefox',
- * 'layout': 'gecko',
- * 'layoutVersion': '20101026',
- * 'platform': 'linux'
- * 'version': '3.5.1',
- * 'versionBase': '3',
- * 'versionNumber': 3.5,
- * }
+ * @var profileCache {Object} Keyed by userAgent string,
+ * value is the parsed $.client.profile object for that user agent.
*/
- this.profile = function() {
- // Use the cached version if possible
- if ( typeof profile === 'undefined' ) {
-
- /* Configuration */
-
- // Name of browsers or layout engines we don't recognize
- var uk = 'unknown';
- // Generic version digit
- var x = 'x';
- // Strings found in user agent strings that need to be conformed
- var wildUserAgents = [ 'Opera', 'Navigator', 'Minefield', 'KHTML', 'Chrome', 'PLAYSTATION 3'];
- // Translations for conforming user agent strings
- var userAgentTranslations = [
- // Tons of browsers lie about being something they are not
- [/(Firefox|MSIE|KHTML,\slike\sGecko|Konqueror)/, ''],
- // Chrome lives in the shadow of Safari still
- ['Chrome Safari', 'Chrome'],
- // KHTML is the layout engine not the browser - LIES!
- ['KHTML', 'Konqueror'],
- // Firefox nightly builds
- ['Minefield', 'Firefox'],
- // This helps keep differnt versions consistent
- ['Navigator', 'Netscape'],
- // This prevents version extraction issues, otherwise translation would happen later
- ['PLAYSTATION 3', 'PS3'],
- ];
- // Strings which precede a version number in a user agent string - combined and used as match 1 in
- // version detectection
- var versionPrefixes = [
- 'camino', 'chrome', 'firefox', 'netscape', 'netscape6', 'opera', 'version', 'konqueror', 'lynx',
- 'msie', 'safari', 'ps3'
- ];
- // Used as matches 2, 3 and 4 in version extraction - 3 is used as actual version number
- var versionSuffix = '(\\/|\\;?\\s|)([a-z0-9\\.\\+]*?)(\\;|dev|rel|\\)|\\s|$)';
- // Names of known browsers
- var names = [
- 'camino', 'chrome', 'firefox', 'netscape', 'konqueror', 'lynx', 'msie', 'opera', 'safari', 'ipod',
- 'iphone', 'blackberry', 'ps3'
- ];
- // Tanslations for conforming browser names
- var nameTranslations = [];
- // Names of known layout engines
- var layouts = ['gecko', 'konqueror', 'msie', 'opera', 'webkit'];
- // Translations for conforming layout names
- var layoutTranslations = [['konqueror', 'khtml'], ['msie', 'trident'], ['opera', 'presto']];
- // Names of supported layout engines for version number
- var layoutVersions = ['applewebkit', 'gecko'];
- // Names of known operating systems
- var platforms = ['win', 'mac', 'linux', 'sunos', 'solaris', 'iphone'];
- // Translations for conforming operating system names
- var platformTranslations = [['sunos', 'solaris']];
-
- /* Methods */
-
- // Performs multiple replacements on a string
- function translate( source, translations ) {
- for ( var i = 0; i < translations.length; i++ ) {
- source = source.replace( translations[i][0], translations[i][1] );
- }
- return source;
- };
-
- /* Pre-processing */
-
- var userAgent = navigator.userAgent, match, name = uk, layout = uk, layoutversion = uk, platform = uk, version = x;
- if ( match = new RegExp( '(' + wildUserAgents.join( '|' ) + ')' ).exec( userAgent ) ) {
- // Takes a userAgent string and translates given text into something we can more easily work with
- userAgent = translate( userAgent, userAgentTranslations );
+ var profileCache = {};
+
+ /* Public Methods */
+
+ $.client = {
+
+ /**
+ * Get an object containing information about the client.
+ *
+ * @param nav {Object} An object with atleast a 'userAgent' and 'platform' key.=
+ * Defaults to the global Navigator object.
+ * @return {Object} The resulting client object will be in the following format:
+ * {
+ * 'name': 'firefox',
+ * 'layout': 'gecko',
+ * 'layoutVersion': 20101026,
+ * 'platform': 'linux'
+ * 'version': '3.5.1',
+ * 'versionBase': '3',
+ * 'versionNumber': 3.5,
+ * }
+ */
+ profile: function( nav ) {
+ if ( nav === undefined ) {
+ nav = window.navigator;
}
- // Everything will be in lowercase from now on
- userAgent = userAgent.toLowerCase();
-
- /* Extraction */
-
- if ( match = new RegExp( '(' + names.join( '|' ) + ')' ).exec( userAgent ) ) {
- name = translate( match[1], nameTranslations );
- }
- if ( match = new RegExp( '(' + layouts.join( '|' ) + ')' ).exec( userAgent ) ) {
- layout = translate( match[1], layoutTranslations );
- }
- if ( match = new RegExp( '(' + layoutVersions.join( '|' ) + ')\\\/(\\d+)').exec( navigator.userAgent.toLowerCase() ) ) {
- layoutversion = parseInt(match[2]);
- }
- if ( match = new RegExp( '(' + platforms.join( '|' ) + ')' ).exec( navigator.platform.toLowerCase() ) ) {
- platform = translate( match[1], platformTranslations );
- }
- if ( match = new RegExp( '(' + versionPrefixes.join( '|' ) + ')' + versionSuffix ).exec( userAgent ) ) {
- version = match[3];
- }
-
- /* Edge Cases -- did I mention about how user agent string lie? */
-
- // Decode Safari's crazy 400+ version numbers
- if ( name.match( /safari/ ) && version > 400 ) {
- version = '2.0';
+ // Use the cached version if possible
+ if ( profileCache[nav.userAgent] === undefined ) {
+
+ /* Configuration */
+
+ // Name of browsers or layout engines we don't recognize
+ var uk = 'unknown';
+ // Generic version digit
+ var x = 'x';
+ // Strings found in user agent strings that need to be conformed
+ var wildUserAgents = [ 'Opera', 'Navigator', 'Minefield', 'KHTML', 'Chrome', 'PLAYSTATION 3'];
+ // Translations for conforming user agent strings
+ var userAgentTranslations = [
+ // Tons of browsers lie about being something they are not
+ [/(Firefox|MSIE|KHTML,\slike\sGecko|Konqueror)/, ''],
+ // Chrome lives in the shadow of Safari still
+ ['Chrome Safari', 'Chrome'],
+ // KHTML is the layout engine not the browser - LIES!
+ ['KHTML', 'Konqueror'],
+ // Firefox nightly builds
+ ['Minefield', 'Firefox'],
+ // This helps keep differnt versions consistent
+ ['Navigator', 'Netscape'],
+ // This prevents version extraction issues, otherwise translation would happen later
+ ['PLAYSTATION 3', 'PS3']
+ ];
+ // Strings which precede a version number in a user agent string - combined and used as match 1 in
+ // version detectection
+ var versionPrefixes = [
+ 'camino', 'chrome', 'firefox', 'netscape', 'netscape6', 'opera', 'version', 'konqueror', 'lynx',
+ 'msie', 'safari', 'ps3'
+ ];
+ // Used as matches 2, 3 and 4 in version extraction - 3 is used as actual version number
+ var versionSuffix = '(\\/|\\;?\\s|)([a-z0-9\\.\\+]*?)(\\;|dev|rel|\\)|\\s|$)';
+ // Names of known browsers
+ var names = [
+ 'camino', 'chrome', 'firefox', 'netscape', 'konqueror', 'lynx', 'msie', 'opera', 'safari', 'ipod',
+ 'iphone', 'blackberry', 'ps3'
+ ];
+ // Tanslations for conforming browser names
+ var nameTranslations = [];
+ // Names of known layout engines
+ var layouts = ['gecko', 'konqueror', 'msie', 'opera', 'webkit'];
+ // Translations for conforming layout names
+ var layoutTranslations = [['konqueror', 'khtml'], ['msie', 'trident'], ['opera', 'presto']];
+ // Names of supported layout engines for version number
+ var layoutVersions = ['applewebkit', 'gecko'];
+ // Names of known operating systems
+ var platforms = ['win', 'mac', 'linux', 'sunos', 'solaris', 'iphone'];
+ // Translations for conforming operating system names
+ var platformTranslations = [['sunos', 'solaris']];
+
+ /* Methods */
+
+ // Performs multiple replacements on a string
+ var translate = function( source, translations ) {
+ for ( var i = 0; i < translations.length; i++ ) {
+ source = source.replace( translations[i][0], translations[i][1] );
+ }
+ return source;
+ };
+
+ /* Pre-processing */
+
+ var ua = nav.userAgent,
+ match,
+ name = uk,
+ layout = uk,
+ layoutversion = uk,
+ platform = uk,
+ version = x;
+
+ if ( match = new RegExp( '(' + wildUserAgents.join( '|' ) + ')' ).exec( ua ) ) {
+ // Takes a userAgent string and translates given text into something we can more easily work with
+ ua = translate( ua, userAgentTranslations );
+ }
+ // Everything will be in lowercase from now on
+ ua = ua.toLowerCase();
+
+ /* Extraction */
+
+ if ( match = new RegExp( '(' + names.join( '|' ) + ')' ).exec( ua ) ) {
+ name = translate( match[1], nameTranslations );
+ }
+ if ( match = new RegExp( '(' + layouts.join( '|' ) + ')' ).exec( ua ) ) {
+ layout = translate( match[1], layoutTranslations );
+ }
+ if ( match = new RegExp( '(' + layoutVersions.join( '|' ) + ')\\\/(\\d+)').exec( ua ) ) {
+ layoutversion = parseInt( match[2], 10 );
+ }
+ if ( match = new RegExp( '(' + platforms.join( '|' ) + ')' ).exec( nav.platform.toLowerCase() ) ) {
+ platform = translate( match[1], platformTranslations );
+ }
+ if ( match = new RegExp( '(' + versionPrefixes.join( '|' ) + ')' + versionSuffix ).exec( ua ) ) {
+ version = match[3];
+ }
+
+ /* Edge Cases -- did I mention about how user agent string lie? */
+
+ // Decode Safari's crazy 400+ version numbers
+ if ( name.match( /safari/ ) && version > 400 ) {
+ version = '2.0';
+ }
+ // Expose Opera 10's lies about being Opera 9.8
+ if ( name === 'opera' && version >= 9.8) {
+ version = ua.match( /version\/([0-9\.]*)/i )[1] || 10;
+ }
+ var versionNumber = parseFloat( version, 10 ) || 0.0;
+
+ /* Caching */
+
+ profileCache[nav.userAgent] = {
+ 'name': name,
+ 'layout': layout,
+ 'layoutVersion': layoutversion,
+ 'platform': platform,
+ 'version': version,
+ 'versionBase': ( version !== x ? Math.floor( versionNumber ).toString() : x ),
+ 'versionNumber': versionNumber
+ };
}
- // Expose Opera 10's lies about being Opera 9.8
- if ( name === 'opera' && version >= 9.8) {
- version = userAgent.match( /version\/([0-9\.]*)/i )[1] || 10;
+ return profileCache[nav.userAgent];
+ },
+
+ /**
+ * Checks the current browser against a support map object to determine if the browser has been black-listed or
+ * not. If the browser was not configured specifically it is assumed to work. It is assumed that the body
+ * element is classified as either "ltr" or "rtl". If neither is set, "ltr" is assumed.
+ *
+ * A browser map is in the following format:
+ * {
+ * 'ltr': {
+ * // Multiple rules with configurable operators
+ * 'msie': [['>=', 7], ['!=', 9]],
+ * // Blocked entirely
+ * 'iphone': false
+ * },
+ * 'rtl': {
+ * // Test against a string
+ * 'msie': [['!==', '8.1.2.3']],
+ * // RTL rules do not fall through to LTR rules, you must explicity set each of them
+ * 'iphone': false
+ * }
+ * }
+ *
+ * @param map {Object} Browser support map
+ * @param profile {Object} (optional) a client-profile object.
+ *
+ * @return Boolean true if browser known or assumed to be supported, false if blacklisted
+ */
+ test: function( map, profile ) {
+ profile = $.isPlainObject( profile ) ? profile : $.client.profile();
+
+ var dir = $( 'body' ).is( '.rtl' ) ? 'rtl' : 'ltr';
+ // Check over each browser condition to determine if we are running in a compatible client
+ if ( typeof map[dir] !== 'object' || typeof map[dir][profile.name] === 'undefined' ) {
+ // Unknown, so we assume it's working
+ return true;
}
-
- /* Caching */
-
- profile = {
- 'name': name,
- 'layout': layout,
- 'layoutVersion': layoutversion,
- 'platform': platform,
- 'version': version,
- 'versionBase': ( version !== x ? new String( version ).substr( 0, 1 ) : x ),
- 'versionNumber': ( parseFloat( version, 10 ) || 0.0 )
- };
- }
- return profile;
- };
-
- /**
- * Checks the current browser against a support map object to determine if the browser has been black-listed or
- * not. If the browser was not configured specifically it is assumed to work. It is assumed that the body
- * element is classified as either "ltr" or "rtl". If neither is set, "ltr" is assumed.
- *
- * A browser map is in the following format:
- * {
- * 'ltr': {
- * // Multiple rules with configurable operators
- * 'msie': [['>=', 7], ['!=', 9]],
- * // Blocked entirely
- * 'iphone': false
- * },
- * 'rtl': {
- * // Test against a string
- * 'msie': [['!==', '8.1.2.3']],
- * // RTL rules do not fall through to LTR rules, you must explicity set each of them
- * 'iphone': false
- * }
- * }
- *
- * @param map Object of browser support map
- *
- * @return Boolean true if browser known or assumed to be supported, false if blacklisted
- */
- this.test = function( map ) {
- var profile = jQuery.client.profile();
- var dir = jQuery( 'body' ).is( '.rtl' ) ? 'rtl' : 'ltr';
- // Check over each browser condition to determine if we are running in a compatible client
- if ( typeof map[dir] !== 'object' || typeof map[dir][profile.name] === 'undefined' ) {
- // Unknown, so we assume it's working
- return true;
- }
- var name = map[dir][profile.name];
- for ( var condition in name ) {
- var op = name[condition][0];
- var val = name[condition][1];
- if ( val === false ) {
- return false;
- } else if ( typeof val == 'string' ) {
- if ( !( eval( 'profile.version' + op + '"' + val + '"' ) ) ) {
- return false;
- }
- } else if ( typeof val == 'number' ) {
- if ( !( eval( 'profile.versionNumber' + op + val ) ) ) {
+ var conditions = map[dir][profile.name];
+ for ( var i = 0; i < conditions.length; i++ ) {
+ var op = conditions[i][0];
+ var val = conditions[i][1];
+ if ( val === false ) {
return false;
+ } else if ( typeof val == 'string' ) {
+ if ( !( eval( 'profile.version' + op + '"' + val + '"' ) ) ) {
+ return false;
+ }
+ } else if ( typeof val == 'number' ) {
+ if ( !( eval( 'profile.versionNumber' + op + val ) ) ) {
+ return false;
+ }
}
}
+ return true;
}
- return true;
- }
-} )();
-
-$( document ).ready( function() {
- var profile = $.client.profile();
- $( 'html' )
- .addClass( 'client-' + profile.name )
- .addClass( 'client-' + profile.name + '-' + profile.versionBase )
- .addClass( 'client-' + profile.layout )
- .addClass( 'client-' + profile.platform );
-} );
-
+ };
} )( jQuery );
diff --git a/resources/jquery/jquery.color.js b/resources/jquery/jquery.color.js
index e1b0d0dd..b0419428 100644
--- a/resources/jquery/jquery.color.js
+++ b/resources/jquery/jquery.color.js
@@ -1,123 +1,44 @@
-/*
+/**
* jQuery Color Animations
* Copyright 2007 John Resig
* Released under the MIT and GPL licenses.
+ *
+ * - 2011-01-05: Modified by Krinkle to use the jQuery.colorUtil plugin (which has to be loaded first!)
*/
-
-(function(jQuery){
+(function( $ ) {
// We override the animation for all of these color styles
- jQuery.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'], function(i,attr){
- jQuery.fx.step[attr] = function(fx){
- if ( fx.state == 0 ) {
- fx.start = getColor( fx.elem, attr );
- fx.end = getRGB( fx.end );
+ $.each(['backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'color', 'outlineColor'],
+ function( i, attr ) {
+ $.fx.step[attr] = function( fx ) {
+ if ( fx.state == 0 ) {
+ fx.start = getColor( fx.elem, attr );
+ fx.end = $.colorUtil.getRGB( fx.end );
+ }
+
+ fx.elem.style[attr] = 'rgb(' + [
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),
+ Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)
+ ].join( ',' ) + ')';
}
-
- fx.elem.style[attr] = "rgb(" + [
- Math.max(Math.min( parseInt((fx.pos * (fx.end[0] - fx.start[0])) + fx.start[0]), 255), 0),
- Math.max(Math.min( parseInt((fx.pos * (fx.end[1] - fx.start[1])) + fx.start[1]), 255), 0),
- Math.max(Math.min( parseInt((fx.pos * (fx.end[2] - fx.start[2])) + fx.start[2]), 255), 0)
- ].join(",") + ")";
}
- });
-
- // Color Conversion functions from highlightFade
- // By Blair Mitchelmore
- // http://jquery.offput.ca/highlightFade/
-
- // Parse strings looking for color tuples [255,255,255]
- function getRGB(color) {
- var result;
-
- // Check if we're already dealing with an array of colors
- if ( color && color.constructor == Array && color.length == 3 )
- return color;
-
- // Look for rgb(num,num,num)
- if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color))
- return [parseInt(result[1]), parseInt(result[2]), parseInt(result[3])];
-
- // Look for rgb(num%,num%,num%)
- if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)%\s*,\s*([0-9]+(?:\.[0-9]+)?)%\s*,\s*([0-9]+(?:\.[0-9]+)?)%\s*\)/.exec(color))
- return [parseFloat(result[1])*2.55, parseFloat(result[2])*2.55, parseFloat(result[3])*2.55];
-
- // Look for #a0b1c2
- if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color))
- return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
-
- // Look for #fff
- if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color))
- return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
-
- // Otherwise, we're most likely dealing with a named color
- return colors[jQuery.trim(color).toLowerCase()];
- }
+ );
function getColor(elem, attr) {
var color;
do {
- color = jQuery.curCSS(elem, attr);
+ color = $.curCSS(elem, attr);
// Keep going until we find an element that has color, or we hit the body
- if ( color != '' && color != 'transparent' || jQuery.nodeName(elem, "body") )
+ if ( color != '' && color != 'transparent' || $.nodeName(elem, 'body') )
break;
- attr = "backgroundColor";
+ attr = 'backgroundColor';
} while ( elem = elem.parentNode );
- return getRGB(color);
- };
-
- // Some named colors to work with
- // From Interface by Stefan Petre
- // http://interface.eyecon.ro/
-
- var colors = {
- aqua:[0,255,255],
- azure:[240,255,255],
- beige:[245,245,220],
- black:[0,0,0],
- blue:[0,0,255],
- brown:[165,42,42],
- cyan:[0,255,255],
- darkblue:[0,0,139],
- darkcyan:[0,139,139],
- darkgrey:[169,169,169],
- darkgreen:[0,100,0],
- darkkhaki:[189,183,107],
- darkmagenta:[139,0,139],
- darkolivegreen:[85,107,47],
- darkorange:[255,140,0],
- darkorchid:[153,50,204],
- darkred:[139,0,0],
- darksalmon:[233,150,122],
- darkviolet:[148,0,211],
- fuchsia:[255,0,255],
- gold:[255,215,0],
- green:[0,128,0],
- indigo:[75,0,130],
- khaki:[240,230,140],
- lightblue:[173,216,230],
- lightcyan:[224,255,255],
- lightgreen:[144,238,144],
- lightgrey:[211,211,211],
- lightpink:[255,182,193],
- lightyellow:[255,255,224],
- lime:[0,255,0],
- magenta:[255,0,255],
- maroon:[128,0,0],
- navy:[0,0,128],
- olive:[128,128,0],
- orange:[255,165,0],
- pink:[255,192,203],
- purple:[128,0,128],
- violet:[128,0,128],
- red:[255,0,0],
- silver:[192,192,192],
- white:[255,255,255],
- yellow:[255,255,0]
+ return $.colorUtil.getRGB(color);
};
-})(jQuery);
+} )( jQuery );
diff --git a/resources/jquery/jquery.colorUtil.js b/resources/jquery/jquery.colorUtil.js
new file mode 100644
index 00000000..1116aec6
--- /dev/null
+++ b/resources/jquery/jquery.colorUtil.js
@@ -0,0 +1,193 @@
+/**
+ * jQuery Color Utilities
+ * Written by Krinkle in 2011
+ * Released under the MIT and GPL licenses.
+ * Mostly based on other plugins and functions (taken through JSLint and optimized a little).
+ * Sources cited locally.
+ */
+( function( $ ) {
+$.colorUtil = {
+
+ // Color Conversion function from highlightFade
+ // By Blair Mitchelmore
+ // http://jquery.offput.ca/highlightFade/
+ // Parse strings looking for color tuples [255,255,255]
+ getRGB : function( color ) {
+ var result;
+
+ // Check if we're already dealing with an array of colors
+ if ( color && color.constructor == Array && color.length == 3 ){
+ return color;
+ }
+
+ // Look for rgb(num,num,num)
+ if (result = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)) {
+ return [parseInt(result[1],10), parseInt(result[2],10), parseInt(result[3],10)];
+ }
+
+ // Look for rgb(num%,num%,num%)
+ if (result = /rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(color)) {
+ return [parseFloat(result[1],10)*2.55, parseFloat(result[2],10)*2.55, parseFloat(result[3])*2.55];
+ }
+
+ // Look for #a0b1c2
+ if (result = /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(color)) {
+ return [parseInt(result[1],16), parseInt(result[2],16), parseInt(result[3],16)];
+ }
+
+ // Look for #fff
+ if (result = /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(color)) {
+ return [parseInt(result[1]+result[1],16), parseInt(result[2]+result[2],16), parseInt(result[3]+result[3],16)];
+ }
+
+ // Look for rgba(0, 0, 0, 0) == transparent in Safari 3
+ if (result = /rgba\(0, 0, 0, 0\)/.exec(color)) {
+ return $.colorUtil.colors.transparent;
+ }
+
+ // Otherwise, we're most likely dealing with a named color
+ return $.colorUtil.colors[$.trim(color).toLowerCase()];
+ },
+
+ // Some named colors to work with
+ // From Interface by Stefan Petre
+ // http://interface.eyecon.ro/
+ colors: {
+ aqua:[0,255,255],
+ azure:[240,255,255],
+ beige:[245,245,220],
+ black:[0,0,0],
+ blue:[0,0,255],
+ brown:[165,42,42],
+ cyan:[0,255,255],
+ darkblue:[0,0,139],
+ darkcyan:[0,139,139],
+ darkgrey:[169,169,169],
+ darkgreen:[0,100,0],
+ darkkhaki:[189,183,107],
+ darkmagenta:[139,0,139],
+ darkolivegreen:[85,107,47],
+ darkorange:[255,140,0],
+ darkorchid:[153,50,204],
+ darkred:[139,0,0],
+ darksalmon:[233,150,122],
+ darkviolet:[148,0,211],
+ fuchsia:[255,0,255],
+ gold:[255,215,0],
+ green:[0,128,0],
+ indigo:[75,0,130],
+ khaki:[240,230,140],
+ lightblue:[173,216,230],
+ lightcyan:[224,255,255],
+ lightgreen:[144,238,144],
+ lightgrey:[211,211,211],
+ lightpink:[255,182,193],
+ lightyellow:[255,255,224],
+ lime:[0,255,0],
+ magenta:[255,0,255],
+ maroon:[128,0,0],
+ navy:[0,0,128],
+ olive:[128,128,0],
+ orange:[255,165,0],
+ pink:[255,192,203],
+ purple:[128,0,128],
+ violet:[128,0,128],
+ red:[255,0,0],
+ silver:[192,192,192],
+ white:[255,255,255],
+ yellow:[255,255,0],
+ transparent: [255,255,255]
+ },
+ /**
+ * http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript
+ * Converts an RGB color value to HSL. Conversion formula
+ * adapted from http://en.wikipedia.org/wiki/HSL_color_space.
+ * Assumes r, g, and b are contained in the set [0, 255] and
+ * returns h, s, and l in the set [0, 1].
+ *
+ * @param Number R The red color value
+ * @param Number G The green color value
+ * @param Number B The blue color value
+ * @return Array The HSL representation
+ */
+ rgbToHsl: function( R, G, B ) {
+ var r = R / 255,
+ g = G / 255,
+ b = B / 255;
+ var max = Math.max(r, g, b), min = Math.min(r, g, b);
+ var h, s, l = (max + min) / 2;
+
+ if(max == min){
+ h = s = 0; // achromatic
+ }else{
+ var d = max - min;
+ s = l > 0.5 ? d / (2 - max - min) : d / (max + min);
+ switch(max){
+ case r: h = (g - b) / d + (g < b ? 6 : 0); break;
+ case g: h = (b - r) / d + 2; break;
+ case b: h = (r - g) / d + 4; break;
+ }
+ h /= 6;
+ }
+
+ return [h, s, l];
+ },
+ /**
+ * http://mjijackson.com/2008/02/rgb-to-hsl-and-rgb-to-hsv-color-model-conversion-algorithms-in-javascript
+ * Converts an HSL color value to RGB. Conversion formula
+ * adapted from http://en.wikipedia.org/wiki/HSL_color_space.
+ * Assumes h, s, and l are contained in the set [0, 1] and
+ * returns r, g, and b in the set [0, 255].
+ *
+ * @param Number h The hue
+ * @param Number s The saturation
+ * @param Number l The lightness
+ * @return Array The RGB representation
+ */
+ hslToRgb: function( h, s, l ) {
+ var r, g, b;
+
+ if(s === 0){
+ r = g = b = l; // achromatic
+ }else{
+ var hue2rgb = function(p, q, t){
+ if(t < 0){ t += 1; }
+ if(t > 1){ t -= 1; }
+ if(t < 1/6){ return p + (q - p) * 6 * t; }
+ if(t < 1/2){ return q; }
+ if(t < 2/3){ return p + (q - p) * (2/3 - t) * 6; }
+ return p;
+ };
+
+ var q = l < 0.5 ? l * (1 + s) : l + s - l * s;
+ var p = 2 * l - q;
+ r = hue2rgb(p, q, h + 1/3);
+ g = hue2rgb(p, q, h);
+ b = hue2rgb(p, q, h - 1/3);
+ }
+
+ return [r * 255, g * 255, b * 255];
+ },
+ /**
+ * Get's a brighter or darker rgb() value string.
+ *
+ * @author Krinkle
+ *
+ * @example getCSSColorMod( 'red', +0.1 )
+ * @example getCSSColorMod( 'rgb(200,50,50)', -0.2 )
+ *
+ * @param Mixed currentColor current value in css
+ * @param Number mod wanted brightness modification between -1 and 1
+ * @return String 'rgb(r,g,b)'
+ */
+ getColorBrightness: function( currentColor, mod ) {
+ var rgbArr = $.colorUtil.getRGB( currentColor ),
+ hslArr = $.colorUtil.rgbToHsl(rgbArr[0], rgbArr[1], rgbArr[2] );
+ rgbArr = $.colorUtil.hslToRgb(hslArr[0], hslArr[1], hslArr[2]+mod);
+ return 'rgb(' +
+ [parseInt( rgbArr[0], 10), parseInt( rgbArr[1], 10 ), parseInt( rgbArr[2], 10 )].join( ',' ) +
+ ')';
+ }
+
+};
+} )( jQuery ); \ No newline at end of file
diff --git a/resources/jquery/jquery.cookie.js b/resources/jquery/jquery.cookie.js
index eaa254e5..79317f74 100644
--- a/resources/jquery/jquery.cookie.js
+++ b/resources/jquery/jquery.cookie.js
@@ -1,19 +1,15 @@
-/*jslint browser: true */ /*global jQuery: true */
-
/**
- * jQuery Cookie plugin
+ * Cookie plugin
*
- * Copyright (c) 2010 Klaus Hartl (stilbuero.de)
+ * Copyright (c) 2006 Klaus Hartl (stilbuero.de)
* Dual licensed under the MIT and GPL licenses:
* http://www.opensource.org/licenses/mit-license.php
* http://www.gnu.org/licenses/gpl.html
*
*/
-// TODO JsDoc
-
/**
- * Create a cookie with the given key and value and other optional parameters.
+ * Create a cookie with the given name and value and other optional parameters.
*
* @example $.cookie('the_cookie', 'the_value');
* @desc Set the value of a cookie.
@@ -25,16 +21,16 @@
* @desc Delete a cookie by passing null as value. Keep in mind that you have to use the same path and domain
* used when the cookie was set.
*
- * @param key String The key of the cookie.
- * @param value String The value of the cookie.
- * @param options Object An object literal containing key/value pairs to provide optional cookie attributes.
- * @option expires Number|Date Either an integer specifying the expiration date from now on in days or a Date object.
+ * @param String name The name of the cookie.
+ * @param String value The value of the cookie.
+ * @param Object options An object literal containing key/value pairs to provide optional cookie attributes.
+ * @option Number|Date expires Either an integer specifying the expiration date from now on in days or a Date object.
* If a negative value is specified (e.g. a date in the past), the cookie will be deleted.
* If set to null or omitted, the cookie will be a session cookie and will not be retained
* when the the browser exits.
- * @option path String The value of the path atribute of the cookie (default: path of page that created the cookie).
- * @option domain String The value of the domain attribute of the cookie (default: domain of page that created the cookie).
- * @option secure Boolean If true, the secure attribute of the cookie will be set and the cookie transmission will
+ * @option String path The value of the path atribute of the cookie (default: path of page that created the cookie).
+ * @option String domain The value of the domain attribute of the cookie (default: domain of page that created the cookie).
+ * @option Boolean secure If true, the secure attribute of the cookie will be set and the cookie transmission will
* require a secure protocol (like HTTPS).
* @type undefined
*
@@ -44,12 +40,12 @@
*/
/**
- * Get the value of a cookie with the given key.
+ * Get the value of a cookie with the given name.
*
* @example $.cookie('the_cookie');
* @desc Get the value of a cookie.
*
- * @param key String The key of the cookie.
+ * @param String name The name of the cookie.
* @return The value of the cookie.
* @type String
*
@@ -57,33 +53,44 @@
* @cat Plugins/Cookie
* @author Klaus Hartl/klaus.hartl@stilbuero.de
*/
-jQuery.cookie = function (key, value, options) {
-
- // key and value given, set cookie...
- if (arguments.length > 1 && (value === null || typeof value !== "object")) {
- options = jQuery.extend({}, options);
-
+jQuery.cookie = function(name, value, options) {
+ if (typeof value != 'undefined') { // name and value given, set cookie
+ options = options || {};
if (value === null) {
+ value = '';
options.expires = -1;
}
-
- if (typeof options.expires === 'number') {
- var days = options.expires, t = options.expires = new Date();
- t.setDate(t.getDate() + days);
+ var expires = '';
+ if (options.expires && (typeof options.expires == 'number' || options.expires.toUTCString)) {
+ var date;
+ if (typeof options.expires == 'number') {
+ date = new Date();
+ date.setTime(date.getTime() + (options.expires * 24 * 60 * 60 * 1000));
+ } else {
+ date = options.expires;
+ }
+ expires = '; expires=' + date.toUTCString(); // use expires attribute, max-age is not supported by IE
}
-
- return (document.cookie = [
- encodeURIComponent(key), '=',
- options.raw ? String(value) : encodeURIComponent(String(value)),
- options.expires ? '; expires=' + options.expires.toUTCString() : '', // use expires attribute, max-age is not supported by IE
- options.path ? '; path=' + options.path : '',
- options.domain ? '; domain=' + options.domain : '',
- options.secure ? '; secure' : ''
- ].join(''));
+ // CAUTION: Needed to parenthesize options.path and options.domain
+ // in the following expressions, otherwise they evaluate to undefined
+ // in the packed version for some reason...
+ var path = options.path ? '; path=' + (options.path) : '';
+ var domain = options.domain ? '; domain=' + (options.domain) : '';
+ var secure = options.secure ? '; secure' : '';
+ document.cookie = [name, '=', encodeURIComponent(value), expires, path, domain, secure].join('');
+ } else { // only name given, get cookie
+ var cookieValue = null;
+ if (document.cookie && document.cookie != '') {
+ var cookies = document.cookie.split(';');
+ for (var i = 0; i < cookies.length; i++) {
+ var cookie = jQuery.trim(cookies[i]);
+ // Does this cookie string begin with the name we want?
+ if (cookie.substring(0, name.length + 1) == (name + '=')) {
+ cookieValue = decodeURIComponent(cookie.substring(name.length + 1));
+ break;
+ }
+ }
+ }
+ return cookieValue;
}
-
- // key and possibly options given, get cookie...
- options = value || {};
- var result, decode = options.raw ? function (s) { return s; } : decodeURIComponent;
- return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? decode(result[1]) : null;
};
diff --git a/resources/jquery/jquery.form.js b/resources/jquery/jquery.form.js
new file mode 100644
index 00000000..53c078f9
--- /dev/null
+++ b/resources/jquery/jquery.form.js
@@ -0,0 +1,791 @@
+/*!
+ * jQuery Form Plugin
+ * version: 2.52 (07-DEC-2010)
+ * @requires jQuery v1.3.2 or later
+ *
+ * Examples and documentation at: http://malsup.com/jquery/form/
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ */
+(function($) {
+
+/*
+ Usage Note:
+ -----------
+ Do not use both ajaxSubmit and ajaxForm on the same form. These
+ functions are intended to be exclusive. Use ajaxSubmit if you want
+ to bind your own submit handler to the form. For example,
+
+ $(document).ready(function() {
+ $('#myForm').bind('submit', function(e) {
+ e.preventDefault(); // <-- important
+ $(this).ajaxSubmit({
+ target: '#output'
+ });
+ });
+ });
+
+ Use ajaxForm when you want the plugin to manage all the event binding
+ for you. For example,
+
+ $(document).ready(function() {
+ $('#myForm').ajaxForm({
+ target: '#output'
+ });
+ });
+
+ When using ajaxForm, the ajaxSubmit function will be invoked for you
+ at the appropriate time.
+*/
+
+/**
+ * ajaxSubmit() provides a mechanism for immediately submitting
+ * an HTML form using AJAX.
+ */
+$.fn.ajaxSubmit = function(options) {
+ // fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
+ if (!this.length) {
+ log('ajaxSubmit: skipping submit process - no element selected');
+ return this;
+ }
+
+ if (typeof options == 'function') {
+ options = { success: options };
+ }
+
+ var action = this.attr('action');
+ var url = (typeof action === 'string') ? $.trim(action) : '';
+ if (url) {
+ // clean url (don't include hash vaue)
+ url = (url.match(/^([^#]+)/)||[])[1];
+ }
+ url = url || window.location.href || '';
+
+ options = $.extend(true, {
+ url: url,
+ type: this.attr('method') || 'GET',
+ iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank'
+ }, options);
+
+ // hook for manipulating the form data before it is extracted;
+ // convenient for use with rich editors like tinyMCE or FCKEditor
+ var veto = {};
+ this.trigger('form-pre-serialize', [this, options, veto]);
+ if (veto.veto) {
+ log('ajaxSubmit: submit vetoed via form-pre-serialize trigger');
+ return this;
+ }
+
+ // provide opportunity to alter form data before it is serialized
+ if (options.beforeSerialize && options.beforeSerialize(this, options) === false) {
+ log('ajaxSubmit: submit aborted via beforeSerialize callback');
+ return this;
+ }
+
+ var n,v,a = this.formToArray(options.semantic);
+ if (options.data) {
+ options.extraData = options.data;
+ for (n in options.data) {
+ if(options.data[n] instanceof Array) {
+ for (var k in options.data[n]) {
+ a.push( { name: n, value: options.data[n][k] } );
+ }
+ }
+ else {
+ v = options.data[n];
+ v = $.isFunction(v) ? v() : v; // if value is fn, invoke it
+ a.push( { name: n, value: v } );
+ }
+ }
+ }
+
+ // give pre-submit callback an opportunity to abort the submit
+ if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) {
+ log('ajaxSubmit: submit aborted via beforeSubmit callback');
+ return this;
+ }
+
+ // fire vetoable 'validate' event
+ this.trigger('form-submit-validate', [a, this, options, veto]);
+ if (veto.veto) {
+ log('ajaxSubmit: submit vetoed via form-submit-validate trigger');
+ return this;
+ }
+
+ var q = $.param(a);
+
+ if (options.type.toUpperCase() == 'GET') {
+ options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q;
+ options.data = null; // data is null for 'get'
+ }
+ else {
+ options.data = q; // data is the query string for 'post'
+ }
+
+ var $form = this, callbacks = [];
+ if (options.resetForm) {
+ callbacks.push(function() { $form.resetForm(); });
+ }
+ if (options.clearForm) {
+ callbacks.push(function() { $form.clearForm(); });
+ }
+
+ // perform a load on the target only if dataType is not provided
+ if (!options.dataType && options.target) {
+ var oldSuccess = options.success || function(){};
+ callbacks.push(function(data) {
+ var fn = options.replaceTarget ? 'replaceWith' : 'html';
+ $(options.target)[fn](data).each(oldSuccess, arguments);
+ });
+ }
+ else if (options.success) {
+ callbacks.push(options.success);
+ }
+
+ options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
+ var context = options.context || options; // jQuery 1.4+ supports scope context
+ for (var i=0, max=callbacks.length; i < max; i++) {
+ callbacks[i].apply(context, [data, status, xhr || $form, $form]);
+ }
+ };
+
+ // are there files to upload?
+ var fileInputs = $('input:file', this).length > 0;
+ var mp = 'multipart/form-data';
+ var multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
+
+ // options.iframe allows user to force iframe mode
+ // 06-NOV-09: now defaulting to iframe mode if file input is detected
+ if (options.iframe !== false && (fileInputs || options.iframe || multipart)) {
+ // hack to fix Safari hang (thanks to Tim Molendijk for this)
+ // see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
+ if (options.closeKeepAlive) {
+ $.get(options.closeKeepAlive, fileUpload);
+ }
+ else {
+ fileUpload();
+ }
+ }
+ else {
+ $.ajax(options);
+ }
+
+ // fire 'notify' event
+ this.trigger('form-submit-notify', [this, options]);
+ return this;
+
+
+ // private function for handling file uploads (hat tip to YAHOO!)
+ function fileUpload() {
+ var form = $form[0];
+
+ if ($(':input[name=submit],:input[id=submit]', form).length) {
+ // if there is an input with a name or id of 'submit' then we won't be
+ // able to invoke the submit fn on the form (at least not x-browser)
+ alert('Error: Form elements must not have name or id of "submit".');
+ return;
+ }
+
+ var s = $.extend(true, {}, $.ajaxSettings, options);
+ s.context = s.context || s;
+ var id = 'jqFormIO' + (new Date().getTime()), fn = '_'+id;
+ window[fn] = function() {
+ var f = $io.data('form-plugin-onload');
+ if (f) {
+ f();
+ window[fn] = undefined;
+ try { delete window[fn]; } catch(e){}
+ }
+ };
+ var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ s.iframeSrc +'" onload="window[\'_\'+this.id]()" />');
+ var io = $io[0];
+
+ $io.css({ position: 'absolute', top: '-1000px', left: '-1000px' });
+
+ var xhr = { // mock object
+ aborted: 0,
+ responseText: null,
+ responseXML: null,
+ status: 0,
+ statusText: 'n/a',
+ getAllResponseHeaders: function() {},
+ getResponseHeader: function() {},
+ setRequestHeader: function() {},
+ abort: function() {
+ this.aborted = 1;
+ $io.attr('src', s.iframeSrc); // abort op in progress
+ }
+ };
+
+ var g = s.global;
+ // trigger ajax global events so that activity/block indicators work like normal
+ if (g && ! $.active++) {
+ $.event.trigger("ajaxStart");
+ }
+ if (g) {
+ $.event.trigger("ajaxSend", [xhr, s]);
+ }
+
+ if (s.beforeSend && s.beforeSend.call(s.context, xhr, s) === false) {
+ if (s.global) {
+ $.active--;
+ }
+ return;
+ }
+ if (xhr.aborted) {
+ return;
+ }
+
+ var cbInvoked = false;
+ var timedOut = 0;
+
+ // add submitting element to data if we know it
+ var sub = form.clk;
+ if (sub) {
+ var n = sub.name;
+ if (n && !sub.disabled) {
+ s.extraData = s.extraData || {};
+ s.extraData[n] = sub.value;
+ if (sub.type == "image") {
+ s.extraData[n+'.x'] = form.clk_x;
+ s.extraData[n+'.y'] = form.clk_y;
+ }
+ }
+ }
+
+ // take a breath so that pending repaints get some cpu time before the upload starts
+ function doSubmit() {
+ // make sure form attrs are set
+ var t = $form.attr('target'), a = $form.attr('action');
+
+ // update form attrs in IE friendly way
+ form.setAttribute('target',id);
+ if (form.getAttribute('method') != 'POST') {
+ form.setAttribute('method', 'POST');
+ }
+ if (form.getAttribute('action') != s.url) {
+ form.setAttribute('action', s.url);
+ }
+
+ // ie borks in some cases when setting encoding
+ if (! s.skipEncodingOverride) {
+ $form.attr({
+ encoding: 'multipart/form-data',
+ enctype: 'multipart/form-data'
+ });
+ }
+
+ // support timout
+ if (s.timeout) {
+ setTimeout(function() { timedOut = true; cb(); }, s.timeout);
+ }
+
+ // add "extra" data to form if provided in options
+ var extraInputs = [];
+ try {
+ if (s.extraData) {
+ for (var n in s.extraData) {
+ extraInputs.push(
+ $('<input type="hidden" name="'+n+'" value="'+s.extraData[n]+'" />')
+ .appendTo(form)[0]);
+ }
+ }
+
+ // add iframe to doc and submit the form
+ $io.appendTo('body');
+ $io.data('form-plugin-onload', cb);
+ form.submit();
+ }
+ finally {
+ // reset attrs and remove "extra" input elements
+ form.setAttribute('action',a);
+ if(t) {
+ form.setAttribute('target', t);
+ } else {
+ $form.removeAttr('target');
+ }
+ $(extraInputs).remove();
+ }
+ }
+
+ if (s.forceSync) {
+ doSubmit();
+ }
+ else {
+ setTimeout(doSubmit, 10); // this lets dom updates render
+ }
+
+ var data, doc, domCheckCount = 50;
+
+ function cb() {
+ if (cbInvoked) {
+ return;
+ }
+
+ $io.removeData('form-plugin-onload');
+
+ var ok = true;
+ try {
+ if (timedOut) {
+ throw 'timeout';
+ }
+ // extract the server response from the iframe
+ doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document;
+
+ var isXml = s.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc);
+ log('isXml='+isXml);
+ if (!isXml && window.opera && (doc.body == null || doc.body.innerHTML == '')) {
+ if (--domCheckCount) {
+ // in some browsers (Opera) the iframe DOM is not always traversable when
+ // the onload callback fires, so we loop a bit to accommodate
+ log('requeing onLoad callback, DOM not available');
+ setTimeout(cb, 250);
+ return;
+ }
+ // let this fall through because server response could be an empty document
+ //log('Could not access iframe DOM after mutiple tries.');
+ //throw 'DOMException: not available';
+ }
+
+ //log('response detected');
+ cbInvoked = true;
+ xhr.responseText = doc.documentElement ? doc.documentElement.innerHTML : null;
+ xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc;
+ xhr.getResponseHeader = function(header){
+ var headers = {'content-type': s.dataType};
+ return headers[header];
+ };
+
+ var scr = /(json|script)/.test(s.dataType);
+ if (scr || s.textarea) {
+ // see if user embedded response in textarea
+ var ta = doc.getElementsByTagName('textarea')[0];
+ if (ta) {
+ xhr.responseText = ta.value;
+ }
+ else if (scr) {
+ // account for browsers injecting pre around json response
+ var pre = doc.getElementsByTagName('pre')[0];
+ var b = doc.getElementsByTagName('body')[0];
+ if (pre) {
+ xhr.responseText = pre.textContent;
+ }
+ else if (b) {
+ xhr.responseText = b.innerHTML;
+ }
+ }
+ }
+ else if (s.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) {
+ xhr.responseXML = toXml(xhr.responseText);
+ }
+ data = $.httpData(xhr, s.dataType);
+ }
+ catch(e){
+ log('error caught:',e);
+ ok = false;
+ xhr.error = e;
+ $.handleError(s, xhr, 'error', e);
+ }
+
+ if (xhr.aborted) {
+ log('upload aborted');
+ ok = false;
+ }
+
+ // ordering of these callbacks/triggers is odd, but that's how $.ajax does it
+ if (ok) {
+ s.success.call(s.context, data, 'success', xhr);
+ if (g) {
+ $.event.trigger("ajaxSuccess", [xhr, s]);
+ }
+ }
+ if (g) {
+ $.event.trigger("ajaxComplete", [xhr, s]);
+ }
+ if (g && ! --$.active) {
+ $.event.trigger("ajaxStop");
+ }
+ if (s.complete) {
+ s.complete.call(s.context, xhr, ok ? 'success' : 'error');
+ }
+
+ // clean up
+ setTimeout(function() {
+ $io.removeData('form-plugin-onload');
+ $io.remove();
+ xhr.responseXML = null;
+ }, 100);
+ }
+
+ function toXml(s, doc) {
+ if (window.ActiveXObject) {
+ doc = new ActiveXObject('Microsoft.XMLDOM');
+ doc.async = 'false';
+ doc.loadXML(s);
+ }
+ else {
+ doc = (new DOMParser()).parseFromString(s, 'text/xml');
+ }
+ return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null;
+ }
+ }
+};
+
+/**
+ * ajaxForm() provides a mechanism for fully automating form submission.
+ *
+ * The advantages of using this method instead of ajaxSubmit() are:
+ *
+ * 1: This method will include coordinates for <input type="image" /> elements (if the element
+ * is used to submit the form).
+ * 2. This method will include the submit element's name/value data (for the element that was
+ * used to submit the form).
+ * 3. This method binds the submit() method to the form for you.
+ *
+ * The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely
+ * passes the options argument along after properly binding events for submit elements and
+ * the form itself.
+ */
+$.fn.ajaxForm = function(options) {
+ // in jQuery 1.3+ we can fix mistakes with the ready state
+ if (this.length === 0) {
+ var o = { s: this.selector, c: this.context };
+ if (!$.isReady && o.s) {
+ log('DOM not ready, queuing ajaxForm');
+ $(function() {
+ $(o.s,o.c).ajaxForm(options);
+ });
+ return this;
+ }
+ // is your DOM ready? http://docs.jquery.com/Tutorials:Introducing_$(document).ready()
+ log('terminating; zero elements found by selector' + ($.isReady ? '' : ' (DOM not ready)'));
+ return this;
+ }
+
+ return this.ajaxFormUnbind().bind('submit.form-plugin', function(e) {
+ if (!e.isDefaultPrevented()) { // if event has been canceled, don't proceed
+ e.preventDefault();
+ $(this).ajaxSubmit(options);
+ }
+ }).bind('click.form-plugin', function(e) {
+ var target = e.target;
+ var $el = $(target);
+ if (!($el.is(":submit,input:image"))) {
+ // is this a child element of the submit el? (ex: a span within a button)
+ var t = $el.closest(':submit');
+ if (t.length == 0) {
+ return;
+ }
+ target = t[0];
+ }
+ var form = this;
+ form.clk = target;
+ if (target.type == 'image') {
+ if (e.offsetX != undefined) {
+ form.clk_x = e.offsetX;
+ form.clk_y = e.offsetY;
+ } else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
+ var offset = $el.offset();
+ form.clk_x = e.pageX - offset.left;
+ form.clk_y = e.pageY - offset.top;
+ } else {
+ form.clk_x = e.pageX - target.offsetLeft;
+ form.clk_y = e.pageY - target.offsetTop;
+ }
+ }
+ // clear form vars
+ setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100);
+ });
+};
+
+// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
+$.fn.ajaxFormUnbind = function() {
+ return this.unbind('submit.form-plugin click.form-plugin');
+};
+
+/**
+ * formToArray() gathers form element data into an array of objects that can
+ * be passed to any of the following ajax functions: $.get, $.post, or load.
+ * Each object in the array has both a 'name' and 'value' property. An example of
+ * an array for a simple login form might be:
+ *
+ * [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ]
+ *
+ * It is this array that is passed to pre-submit callback functions provided to the
+ * ajaxSubmit() and ajaxForm() methods.
+ */
+$.fn.formToArray = function(semantic) {
+ var a = [];
+ if (this.length === 0) {
+ return a;
+ }
+
+ var form = this[0];
+ var els = semantic ? form.getElementsByTagName('*') : form.elements;
+ if (!els) {
+ return a;
+ }
+
+ var i,j,n,v,el,max,jmax;
+ for(i=0, max=els.length; i < max; i++) {
+ el = els[i];
+ n = el.name;
+ if (!n) {
+ continue;
+ }
+
+ if (semantic && form.clk && el.type == "image") {
+ // handle image inputs on the fly when semantic == true
+ if(!el.disabled && form.clk == el) {
+ a.push({name: n, value: $(el).val()});
+ a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+ }
+ continue;
+ }
+
+ v = $.fieldValue(el, true);
+ if (v && v.constructor == Array) {
+ for(j=0, jmax=v.length; j < jmax; j++) {
+ a.push({name: n, value: v[j]});
+ }
+ }
+ else if (v !== null && typeof v != 'undefined') {
+ a.push({name: n, value: v});
+ }
+ }
+
+ if (!semantic && form.clk) {
+ // input type=='image' are not found in elements array! handle it here
+ var $input = $(form.clk), input = $input[0];
+ n = input.name;
+ if (n && !input.disabled && input.type == 'image') {
+ a.push({name: n, value: $input.val()});
+ a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y});
+ }
+ }
+ return a;
+};
+
+/**
+ * Serializes form data into a 'submittable' string. This method will return a string
+ * in the format: name1=value1&amp;name2=value2
+ */
+$.fn.formSerialize = function(semantic) {
+ //hand off to jQuery.param for proper encoding
+ return $.param(this.formToArray(semantic));
+};
+
+/**
+ * Serializes all field elements in the jQuery object into a query string.
+ * This method will return a string in the format: name1=value1&amp;name2=value2
+ */
+$.fn.fieldSerialize = function(successful) {
+ var a = [];
+ this.each(function() {
+ var n = this.name;
+ if (!n) {
+ return;
+ }
+ var v = $.fieldValue(this, successful);
+ if (v && v.constructor == Array) {
+ for (var i=0,max=v.length; i < max; i++) {
+ a.push({name: n, value: v[i]});
+ }
+ }
+ else if (v !== null && typeof v != 'undefined') {
+ a.push({name: this.name, value: v});
+ }
+ });
+ //hand off to jQuery.param for proper encoding
+ return $.param(a);
+};
+
+/**
+ * Returns the value(s) of the element in the matched set. For example, consider the following form:
+ *
+ * <form><fieldset>
+ * <input name="A" type="text" />
+ * <input name="A" type="text" />
+ * <input name="B" type="checkbox" value="B1" />
+ * <input name="B" type="checkbox" value="B2"/>
+ * <input name="C" type="radio" value="C1" />
+ * <input name="C" type="radio" value="C2" />
+ * </fieldset></form>
+ *
+ * var v = $(':text').fieldValue();
+ * // if no values are entered into the text inputs
+ * v == ['','']
+ * // if values entered into the text inputs are 'foo' and 'bar'
+ * v == ['foo','bar']
+ *
+ * var v = $(':checkbox').fieldValue();
+ * // if neither checkbox is checked
+ * v === undefined
+ * // if both checkboxes are checked
+ * v == ['B1', 'B2']
+ *
+ * var v = $(':radio').fieldValue();
+ * // if neither radio is checked
+ * v === undefined
+ * // if first radio is checked
+ * v == ['C1']
+ *
+ * The successful argument controls whether or not the field element must be 'successful'
+ * (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
+ * The default value of the successful argument is true. If this value is false the value(s)
+ * for each element is returned.
+ *
+ * Note: This method *always* returns an array. If no valid value can be determined the
+ * array will be empty, otherwise it will contain one or more values.
+ */
+$.fn.fieldValue = function(successful) {
+ for (var val=[], i=0, max=this.length; i < max; i++) {
+ var el = this[i];
+ var v = $.fieldValue(el, successful);
+ if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) {
+ continue;
+ }
+ v.constructor == Array ? $.merge(val, v) : val.push(v);
+ }
+ return val;
+};
+
+/**
+ * Returns the value of the field element.
+ */
+$.fieldValue = function(el, successful) {
+ var n = el.name, t = el.type, tag = el.tagName.toLowerCase();
+ if (successful === undefined) {
+ successful = true;
+ }
+
+ if (successful && (!n || el.disabled || t == 'reset' || t == 'button' ||
+ (t == 'checkbox' || t == 'radio') && !el.checked ||
+ (t == 'submit' || t == 'image') && el.form && el.form.clk != el ||
+ tag == 'select' && el.selectedIndex == -1)) {
+ return null;
+ }
+
+ if (tag == 'select') {
+ var index = el.selectedIndex;
+ if (index < 0) {
+ return null;
+ }
+ var a = [], ops = el.options;
+ var one = (t == 'select-one');
+ var max = (one ? index+1 : ops.length);
+ for(var i=(one ? index : 0); i < max; i++) {
+ var op = ops[i];
+ if (op.selected) {
+ var v = op.value;
+ if (!v) { // extra pain for IE...
+ v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value;
+ }
+ if (one) {
+ return v;
+ }
+ a.push(v);
+ }
+ }
+ return a;
+ }
+ return $(el).val();
+};
+
+/**
+ * Clears the form data. Takes the following actions on the form's input fields:
+ * - input text fields will have their 'value' property set to the empty string
+ * - select elements will have their 'selectedIndex' property set to -1
+ * - checkbox and radio inputs will have their 'checked' property set to false
+ * - inputs of type submit, button, reset, and hidden will *not* be effected
+ * - button elements will *not* be effected
+ */
+$.fn.clearForm = function() {
+ return this.each(function() {
+ $('input,select,textarea', this).clearFields();
+ });
+};
+
+/**
+ * Clears the selected form elements.
+ */
+$.fn.clearFields = $.fn.clearInputs = function() {
+ return this.each(function() {
+ var t = this.type, tag = this.tagName.toLowerCase();
+ if (t == 'text' || t == 'password' || tag == 'textarea') {
+ this.value = '';
+ }
+ else if (t == 'checkbox' || t == 'radio') {
+ this.checked = false;
+ }
+ else if (tag == 'select') {
+ this.selectedIndex = -1;
+ }
+ });
+};
+
+/**
+ * Resets the form data. Causes all form elements to be reset to their original value.
+ */
+$.fn.resetForm = function() {
+ return this.each(function() {
+ // guard against an input with the name of 'reset'
+ // note that IE reports the reset function as an 'object'
+ if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) {
+ this.reset();
+ }
+ });
+};
+
+/**
+ * Enables or disables any matching elements.
+ */
+$.fn.enable = function(b) {
+ if (b === undefined) {
+ b = true;
+ }
+ return this.each(function() {
+ this.disabled = !b;
+ });
+};
+
+/**
+ * Checks/unchecks any matching checkboxes or radio buttons and
+ * selects/deselects and matching option elements.
+ */
+$.fn.selected = function(select) {
+ if (select === undefined) {
+ select = true;
+ }
+ return this.each(function() {
+ var t = this.type;
+ if (t == 'checkbox' || t == 'radio') {
+ this.checked = select;
+ }
+ else if (this.tagName.toLowerCase() == 'option') {
+ var $sel = $(this).parent('select');
+ if (select && $sel[0] && $sel[0].type == 'select-one') {
+ // deselect all other options
+ $sel.find('option').selected(false);
+ }
+ this.selected = select;
+ }
+ });
+};
+
+// helper fn for console logging
+// set $.fn.ajaxSubmit.debug to true to enable debug logging
+function log() {
+ if ($.fn.ajaxSubmit.debug) {
+ var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,'');
+ if (window.console && window.console.log) {
+ window.console.log(msg);
+ }
+ else if (window.opera && window.opera.postError) {
+ window.opera.postError(msg);
+ }
+ }
+};
+
+})(jQuery);
diff --git a/resources/jquery/jquery.getAttrs.js b/resources/jquery/jquery.getAttrs.js
new file mode 100644
index 00000000..c05012d9
--- /dev/null
+++ b/resources/jquery/jquery.getAttrs.js
@@ -0,0 +1,24 @@
+/**
+ * Utility to get all attributes of an element directy as an object.
+ *
+ * @author Timo Tijhof, 2011
+ */
+jQuery.fn.getAttrs = function( all ) {
+ var map = this[0].attributes,
+ attrs = {},
+ len = map.length,
+ i, v;
+
+ for ( i = 0; i < len; i++ ) {
+ // IE6 includes *all* allowed attributes for thew element (including those
+ // not set). Those have values like undefined, null, 0, false, "" or "inherit".
+ // However there may be genuine attributes set to that. If you need them,
+ // set all to true. They are excluded by default.
+ v = map[i].nodeValue;
+ if ( all || ( v && v !== 'inherit' ) ) {
+ attrs[ map[i].nodeName ] = v;
+ }
+ }
+
+ return attrs;
+};
diff --git a/resources/jquery/jquery.hoverIntent.js b/resources/jquery/jquery.hoverIntent.js
new file mode 100644
index 00000000..adf948df
--- /dev/null
+++ b/resources/jquery/jquery.hoverIntent.js
@@ -0,0 +1,111 @@
+/**
+* hoverIntent is similar to jQuery's built-in "hover" function except that
+* instead of firing the onMouseOver event immediately, hoverIntent checks
+* to see if the user's mouse has slowed down (beneath the sensitivity
+* threshold) before firing the onMouseOver event.
+*
+* hoverIntent r5 // 2007.03.27 // jQuery 1.1.2+
+* <http://cherne.net/brian/resources/jquery.hoverIntent.html>
+*
+* hoverIntent is currently available for use in all personal or commercial
+* projects under both MIT and GPL licenses. This means that you can choose
+* the license that best suits your project, and use it accordingly.
+*
+* // basic usage (just like .hover) receives onMouseOver and onMouseOut functions
+* $("ul li").hoverIntent( showNav , hideNav );
+*
+* // advanced usage receives configuration object only
+* $("ul li").hoverIntent({
+* sensitivity: 7, // number = sensitivity threshold (must be 1 or higher)
+* interval: 100, // number = milliseconds of polling interval
+* over: showNav, // function = onMouseOver callback (required)
+* timeout: 0, // number = milliseconds delay before onMouseOut function call
+* out: hideNav // function = onMouseOut callback (required)
+* });
+*
+* @param f onMouseOver function || An object with configuration options
+* @param g onMouseOut function || Nothing (use configuration options object)
+* @author Brian Cherne <brian@cherne.net>
+*/
+(function($) {
+ $.fn.hoverIntent = function(f,g) {
+ // default configuration options
+ var cfg = {
+ sensitivity: 7,
+ interval: 100,
+ timeout: 0
+ };
+ // override configuration options with user supplied object
+ cfg = $.extend(cfg, g ? { over: f, out: g } : f );
+
+ // instantiate variables
+ // cX, cY = current X and Y position of mouse, updated by mousemove event
+ // pX, pY = previous X and Y position of mouse, set by mouseover and polling interval
+ var cX, cY, pX, pY;
+
+ // A private function for getting mouse position
+ var track = function(ev) {
+ cX = ev.pageX;
+ cY = ev.pageY;
+ };
+
+ // A private function for comparing current and previous mouse position
+ var compare = function(ev,ob) {
+ ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
+ // compare mouse positions to see if they've crossed the threshold
+ if ( ( Math.abs(pX-cX) + Math.abs(pY-cY) ) < cfg.sensitivity ) {
+ $(ob).unbind("mousemove",track);
+ // set hoverIntent state to true (so mouseOut can be called)
+ ob.hoverIntent_s = 1;
+ return cfg.over.apply(ob,[ev]);
+ } else {
+ // set previous coordinates for next time
+ pX = cX; pY = cY;
+ // use self-calling timeout, guarantees intervals are spaced out properly (avoids JavaScript timer bugs)
+ ob.hoverIntent_t = setTimeout( function(){compare(ev, ob);} , cfg.interval );
+ }
+ };
+
+ // A private function for delaying the mouseOut function
+ var delay = function(ev,ob) {
+ ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t);
+ ob.hoverIntent_s = 0;
+ return cfg.out.apply(ob,[ev]);
+ };
+
+ // A private function for handling mouse 'hovering'
+ var handleHover = function(e) {
+ // next three lines copied from jQuery.hover, ignore children onMouseOver/onMouseOut
+ var p = (e.type == "mouseover" ? e.fromElement : e.toElement) || e.relatedTarget;
+ while ( p && p != this ) { try { p = p.parentNode; } catch(e) { p = this; } }
+ if ( p == this ) { return false; }
+
+ // copy objects to be passed into t (required for event object to be passed in IE)
+ var ev = $.extend({},e);
+ var ob = this;
+
+ // cancel hoverIntent timer if it exists
+ if (ob.hoverIntent_t) { ob.hoverIntent_t = clearTimeout(ob.hoverIntent_t); }
+
+ // else e.type == "onmouseover"
+ if (e.type == "mouseover") {
+ // set "previous" X and Y position based on initial entry point
+ pX = ev.pageX; pY = ev.pageY;
+ // update "current" X and Y position based on mousemove
+ $(ob).bind("mousemove",track);
+ // start polling interval (self-calling timeout) to compare mouse coordinates over time
+ if (ob.hoverIntent_s != 1) { ob.hoverIntent_t = setTimeout( function(){compare(ev,ob);} , cfg.interval );}
+
+ // else e.type == "onmouseout"
+ } else {
+ // unbind expensive mousemove event
+ $(ob).unbind("mousemove",track);
+ // if hoverIntent state is true, then call the mouseOut function after the specified delay
+ if (ob.hoverIntent_s == 1) { ob.hoverIntent_t = setTimeout( function(){delay(ev,ob);} , cfg.timeout );}
+ }
+ };
+
+ // bind the function to the two event listeners
+ return this.mouseover(handleHover).mouseout(handleHover);
+ };
+})(jQuery); \ No newline at end of file
diff --git a/resources/jquery/jquery.js b/resources/jquery/jquery.js
index 27456efd..11e6d067 100644
--- a/resources/jquery/jquery.js
+++ b/resources/jquery/jquery.js
@@ -1,24 +1,30 @@
/*!
- * jQuery JavaScript Library v1.4.2
+ * jQuery JavaScript Library v1.6.4
* http://jquery.com/
*
- * Copyright 2010, John Resig
+ * Copyright 2011, John Resig
* Dual licensed under the MIT or GPL Version 2 licenses.
* http://jquery.org/license
*
* Includes Sizzle.js
* http://sizzlejs.com/
- * Copyright 2010, The Dojo Foundation
+ * Copyright 2011, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
*
- * Date: Sat Feb 13 22:33:48 2010 -0500
+ * Date: Mon Sep 12 18:54:48 2011 -0400
*/
(function( window, undefined ) {
+// Use the correct document accordingly with window argument (sandbox)
+var document = window.document,
+ navigator = window.navigator,
+ location = window.location;
+var jQuery = (function() {
+
// Define a local copy of jQuery
var jQuery = function( selector, context ) {
// The jQuery object is actually just the init constructor 'enhanced'
- return new jQuery.fn.init( selector, context );
+ return new jQuery.fn.init( selector, context, rootjQuery );
},
// Map over jQuery in case of overwrite
@@ -27,52 +33,73 @@ var jQuery = function( selector, context ) {
// Map over the $ in case of overwrite
_$ = window.$,
- // Use the correct document accordingly with window argument (sandbox)
- document = window.document,
-
// A central reference to the root jQuery(document)
rootjQuery,
// A simple way to check for HTML strings or ID strings
- // (both of which we optimize for)
- quickExpr = /^[^<]*(<[\w\W]+>)[^>]*$|^#([\w-]+)$/,
-
- // Is it a simple selector
- isSimple = /^.[^:#\[\.,]*$/,
+ // Prioritize #id over <tag> to avoid XSS via location.hash (#9521)
+ quickExpr = /^(?:[^#<]*(<[\w\W]+>)[^>]*$|#([\w\-]*)$)/,
// Check if a string has a non-whitespace character in it
rnotwhite = /\S/,
// Used for trimming whitespace
- rtrim = /^(\s|\u00A0)+|(\s|\u00A0)+$/g,
+ trimLeft = /^\s+/,
+ trimRight = /\s+$/,
+
+ // Check for digits
+ rdigit = /\d/,
// Match a standalone tag
rsingleTag = /^<(\w+)\s*\/?>(?:<\/\1>)?$/,
+ // JSON RegExp
+ rvalidchars = /^[\],:{}\s]*$/,
+ rvalidescape = /\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g,
+ rvalidtokens = /"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g,
+ rvalidbraces = /(?:^|:|,)(?:\s*\[)+/g,
+
+ // Useragent RegExp
+ rwebkit = /(webkit)[ \/]([\w.]+)/,
+ ropera = /(opera)(?:.*version)?[ \/]([\w.]+)/,
+ rmsie = /(msie) ([\w.]+)/,
+ rmozilla = /(mozilla)(?:.*? rv:([\w.]+))?/,
+
+ // Matches dashed string for camelizing
+ rdashAlpha = /-([a-z]|[0-9])/ig,
+ rmsPrefix = /^-ms-/,
+
+ // Used by jQuery.camelCase as callback to replace()
+ fcamelCase = function( all, letter ) {
+ return ( letter + "" ).toUpperCase();
+ },
+
// Keep a UserAgent string for use with jQuery.browser
userAgent = navigator.userAgent,
// For matching the engine and version of the browser
browserMatch,
-
- // Has the ready events already been bound?
- readyBound = false,
-
- // The functions to execute on DOM ready
- readyList = [],
+
+ // The deferred used on DOM ready
+ readyList,
// The ready event handler
DOMContentLoaded,
// Save a reference to some core methods
toString = Object.prototype.toString,
- hasOwnProperty = Object.prototype.hasOwnProperty,
+ hasOwn = Object.prototype.hasOwnProperty,
push = Array.prototype.push,
slice = Array.prototype.slice,
- indexOf = Array.prototype.indexOf;
+ trim = String.prototype.trim,
+ indexOf = Array.prototype.indexOf,
+
+ // [[Class]] -> type pairs
+ class2type = {};
jQuery.fn = jQuery.prototype = {
- init: function( selector, context ) {
+ constructor: jQuery,
+ init: function( selector, context, rootjQuery ) {
var match, elem, ret, doc;
// Handle $(""), $(null), or $(undefined)
@@ -86,12 +113,12 @@ jQuery.fn = jQuery.prototype = {
this.length = 1;
return this;
}
-
+
// The body element only exists once, optimize finding it
- if ( selector === "body" && !context ) {
+ if ( selector === "body" && !context && document.body ) {
this.context = document;
this[0] = document.body;
- this.selector = "body";
+ this.selector = selector;
this.length = 1;
return this;
}
@@ -99,13 +126,20 @@ jQuery.fn = jQuery.prototype = {
// Handle HTML strings
if ( typeof selector === "string" ) {
// Are we dealing with HTML string or an ID?
- match = quickExpr.exec( selector );
+ if ( selector.charAt(0) === "<" && selector.charAt( selector.length - 1 ) === ">" && selector.length >= 3 ) {
+ // Assume that strings that start and end with <> are HTML and skip the regex check
+ match = [ null, selector, null ];
+
+ } else {
+ match = quickExpr.exec( selector );
+ }
// Verify a match, and that no context was specified for #id
if ( match && (match[1] || !context) ) {
// HANDLE: $(html) -> $(array)
if ( match[1] ) {
+ context = context instanceof jQuery ? context[0] : context;
doc = (context ? context.ownerDocument || context : document);
// If a single string is passed in and it's a single tag
@@ -122,17 +156,19 @@ jQuery.fn = jQuery.prototype = {
}
} else {
- ret = buildFragment( [ match[1] ], [ doc ] );
- selector = (ret.cacheable ? ret.fragment.cloneNode(true) : ret.fragment).childNodes;
+ ret = jQuery.buildFragment( [ match[1] ], [ doc ] );
+ selector = (ret.cacheable ? jQuery.clone(ret.fragment) : ret.fragment).childNodes;
}
-
+
return jQuery.merge( this, selector );
-
+
// HANDLE: $("#id")
} else {
elem = document.getElementById( match[2] );
- if ( elem ) {
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
// Handle the case where IE and Opera return items
// by name instead of ID
if ( elem.id !== match[2] ) {
@@ -149,13 +185,6 @@ jQuery.fn = jQuery.prototype = {
return this;
}
- // HANDLE: $("TAG")
- } else if ( !context && /^\w+$/.test( selector ) ) {
- this.selector = selector;
- this.context = document;
- selector = document.getElementsByTagName( selector );
- return jQuery.merge( this, selector );
-
// HANDLE: $(expr, $(...))
} else if ( !context || context.jquery ) {
return (context || rootjQuery).find( selector );
@@ -163,7 +192,7 @@ jQuery.fn = jQuery.prototype = {
// HANDLE: $(expr, context)
// (which is just equivalent to: $(context).find(expr)
} else {
- return jQuery( context ).find( selector );
+ return this.constructor( context ).find( selector );
}
// HANDLE: $(function)
@@ -184,7 +213,7 @@ jQuery.fn = jQuery.prototype = {
selector: "",
// The current version of jQuery being used
- jquery: "1.4.2",
+ jquery: "1.6.4",
// The default length of a jQuery object is 0
length: 0,
@@ -207,18 +236,18 @@ jQuery.fn = jQuery.prototype = {
this.toArray() :
// Return just the object
- ( num < 0 ? this.slice(num)[ 0 ] : this[ num ] );
+ ( num < 0 ? this[ this.length + num ] : this[ num ] );
},
// Take an array of elements and push it onto the stack
// (returning the new matched element set)
pushStack: function( elems, name, selector ) {
// Build a new jQuery matched element set
- var ret = jQuery();
+ var ret = this.constructor();
if ( jQuery.isArray( elems ) ) {
push.apply( ret, elems );
-
+
} else {
jQuery.merge( ret, elems );
}
@@ -244,25 +273,17 @@ jQuery.fn = jQuery.prototype = {
each: function( callback, args ) {
return jQuery.each( this, callback, args );
},
-
+
ready: function( fn ) {
// Attach the listeners
jQuery.bindReady();
- // If the DOM is already ready
- if ( jQuery.isReady ) {
- // Execute the function immediately
- fn.call( document, jQuery );
-
- // Otherwise, remember the function for later
- } else if ( readyList ) {
- // Add the function to the wait list
- readyList.push( fn );
- }
+ // Add the callback
+ readyList.done( fn );
return this;
},
-
+
eq: function( i ) {
return i === -1 ?
this.slice( i ) :
@@ -287,9 +308,9 @@ jQuery.fn = jQuery.prototype = {
return callback.call( elem, i, elem );
}));
},
-
+
end: function() {
- return this.prevObject || jQuery(null);
+ return this.prevObject || this.constructor(null);
},
// For internal use only.
@@ -303,8 +324,11 @@ jQuery.fn = jQuery.prototype = {
jQuery.fn.init.prototype = jQuery.fn;
jQuery.extend = jQuery.fn.extend = function() {
- // copy reference to target object
- var target = arguments[0] || {}, i = 1, length = arguments.length, deep = false, options, name, src, copy;
+ var options, name, src, copy, copyIsArray, clone,
+ target = arguments[0] || {},
+ i = 1,
+ length = arguments.length,
+ deep = false;
// Handle a deep copy situation
if ( typeof target === "boolean" ) {
@@ -338,10 +362,15 @@ jQuery.extend = jQuery.fn.extend = function() {
continue;
}
- // Recurse if we're merging object literal values or arrays
- if ( deep && copy && ( jQuery.isPlainObject(copy) || jQuery.isArray(copy) ) ) {
- var clone = src && ( jQuery.isPlainObject(src) || jQuery.isArray(src) ) ? src
- : jQuery.isArray(copy) ? [] : {};
+ // Recurse if we're merging plain objects or arrays
+ if ( deep && copy && ( jQuery.isPlainObject(copy) || (copyIsArray = jQuery.isArray(copy)) ) ) {
+ if ( copyIsArray ) {
+ copyIsArray = false;
+ clone = src && jQuery.isArray(src) ? src : [];
+
+ } else {
+ clone = src && jQuery.isPlainObject(src) ? src : {};
+ }
// Never move original objects, clone them
target[ name ] = jQuery.extend( deep, clone, copy );
@@ -360,67 +389,79 @@ jQuery.extend = jQuery.fn.extend = function() {
jQuery.extend({
noConflict: function( deep ) {
- window.$ = _$;
+ if ( window.$ === jQuery ) {
+ window.$ = _$;
+ }
- if ( deep ) {
+ if ( deep && window.jQuery === jQuery ) {
window.jQuery = _jQuery;
}
return jQuery;
},
-
+
// Is the DOM ready to be used? Set to true once it occurs.
isReady: false,
-
+
+ // A counter to track how many items to wait for before
+ // the ready event fires. See #6781
+ readyWait: 1,
+
+ // Hold (or release) the ready event
+ holdReady: function( hold ) {
+ if ( hold ) {
+ jQuery.readyWait++;
+ } else {
+ jQuery.ready( true );
+ }
+ },
+
// Handle when the DOM is ready
- ready: function() {
- // Make sure that the DOM is not already loaded
- if ( !jQuery.isReady ) {
+ ready: function( wait ) {
+ // Either a released hold or an DOMready/load event and not yet ready
+ if ( (wait === true && !--jQuery.readyWait) || (wait !== true && !jQuery.isReady) ) {
// Make sure body exists, at least, in case IE gets a little overzealous (ticket #5443).
if ( !document.body ) {
- return setTimeout( jQuery.ready, 13 );
+ return setTimeout( jQuery.ready, 1 );
}
// Remember that the DOM is ready
jQuery.isReady = true;
- // If there are functions bound, to execute
- if ( readyList ) {
- // Execute all of them
- var fn, i = 0;
- while ( (fn = readyList[ i++ ]) ) {
- fn.call( document, jQuery );
- }
-
- // Reset the list of functions
- readyList = null;
+ // If a normal DOM Ready event fired, decrement, and wait if need be
+ if ( wait !== true && --jQuery.readyWait > 0 ) {
+ return;
}
+ // If there are functions bound, to execute
+ readyList.resolveWith( document, [ jQuery ] );
+
// Trigger any bound ready events
- if ( jQuery.fn.triggerHandler ) {
- jQuery( document ).triggerHandler( "ready" );
+ if ( jQuery.fn.trigger ) {
+ jQuery( document ).trigger( "ready" ).unbind( "ready" );
}
}
},
-
+
bindReady: function() {
- if ( readyBound ) {
+ if ( readyList ) {
return;
}
- readyBound = true;
+ readyList = jQuery._Deferred();
// Catch cases where $(document).ready() is called after the
// browser event has already occurred.
if ( document.readyState === "complete" ) {
- return jQuery.ready();
+ // Handle it asynchronously to allow scripts the opportunity to delay ready
+ return setTimeout( jQuery.ready, 1 );
}
// Mozilla, Opera and webkit nightlies currently support this event
if ( document.addEventListener ) {
// Use the handy event callback
document.addEventListener( "DOMContentLoaded", DOMContentLoaded, false );
-
+
// A fallback to window.onload, that will always work
window.addEventListener( "load", jQuery.ready, false );
@@ -428,8 +469,8 @@ jQuery.extend({
} else if ( document.attachEvent ) {
// ensure firing before onload,
// maybe late but safe also for iframes
- document.attachEvent("onreadystatechange", DOMContentLoaded);
-
+ document.attachEvent( "onreadystatechange", DOMContentLoaded );
+
// A fallback to window.onload, that will always work
window.attachEvent( "onload", jQuery.ready );
@@ -451,35 +492,55 @@ jQuery.extend({
// Since version 1.3, DOM methods and functions like alert
// aren't supported. They return false on IE (#2968).
isFunction: function( obj ) {
- return toString.call(obj) === "[object Function]";
+ return jQuery.type(obj) === "function";
},
- isArray: function( obj ) {
- return toString.call(obj) === "[object Array]";
+ isArray: Array.isArray || function( obj ) {
+ return jQuery.type(obj) === "array";
+ },
+
+ // A crude way of determining if an object is a window
+ isWindow: function( obj ) {
+ return obj && typeof obj === "object" && "setInterval" in obj;
+ },
+
+ isNaN: function( obj ) {
+ return obj == null || !rdigit.test( obj ) || isNaN( obj );
+ },
+
+ type: function( obj ) {
+ return obj == null ?
+ String( obj ) :
+ class2type[ toString.call(obj) ] || "object";
},
isPlainObject: function( obj ) {
// Must be an Object.
// Because of IE, we also have to check the presence of the constructor property.
// Make sure that DOM nodes and window objects don't pass through, as well
- if ( !obj || toString.call(obj) !== "[object Object]" || obj.nodeType || obj.setInterval ) {
+ if ( !obj || jQuery.type(obj) !== "object" || obj.nodeType || jQuery.isWindow( obj ) ) {
return false;
}
-
- // Not own constructor property must be Object
- if ( obj.constructor
- && !hasOwnProperty.call(obj, "constructor")
- && !hasOwnProperty.call(obj.constructor.prototype, "isPrototypeOf") ) {
+
+ try {
+ // Not own constructor property must be Object
+ if ( obj.constructor &&
+ !hasOwn.call(obj, "constructor") &&
+ !hasOwn.call(obj.constructor.prototype, "isPrototypeOf") ) {
+ return false;
+ }
+ } catch ( e ) {
+ // IE8,9 Will throw exceptions on certain host objects #9897
return false;
}
-
+
// Own properties are enumerated firstly, so to speed up,
// if last one is own, then all properties are own.
-
+
var key;
for ( key in obj ) {}
-
- return key === undefined || hasOwnProperty.call( obj, key );
+
+ return key === undefined || hasOwn.call( obj, key );
},
isEmptyObject: function( obj ) {
@@ -488,11 +549,11 @@ jQuery.extend({
}
return true;
},
-
+
error: function( msg ) {
throw msg;
},
-
+
parseJSON: function( data ) {
if ( typeof data !== "string" || !data ) {
return null;
@@ -500,48 +561,67 @@ jQuery.extend({
// Make sure leading/trailing whitespace is removed (IE can't handle it)
data = jQuery.trim( data );
-
+
+ // Attempt to parse using the native JSON parser first
+ if ( window.JSON && window.JSON.parse ) {
+ return window.JSON.parse( data );
+ }
+
// Make sure the incoming data is actual JSON
// Logic borrowed from http://json.org/json2.js
- if ( /^[\],:{}\s]*$/.test(data.replace(/\\(?:["\\\/bfnrt]|u[0-9a-fA-F]{4})/g, "@")
- .replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, "]")
- .replace(/(?:^|:|,)(?:\s*\[)+/g, "")) ) {
+ if ( rvalidchars.test( data.replace( rvalidescape, "@" )
+ .replace( rvalidtokens, "]" )
+ .replace( rvalidbraces, "")) ) {
- // Try to use the native JSON parser first
- return window.JSON && window.JSON.parse ?
- window.JSON.parse( data ) :
- (new Function("return " + data))();
+ return (new Function( "return " + data ))();
- } else {
- jQuery.error( "Invalid JSON: " + data );
}
+ jQuery.error( "Invalid JSON: " + data );
+ },
+
+ // Cross-browser xml parsing
+ parseXML: function( data ) {
+ var xml, tmp;
+ try {
+ if ( window.DOMParser ) { // Standard
+ tmp = new DOMParser();
+ xml = tmp.parseFromString( data , "text/xml" );
+ } else { // IE
+ xml = new ActiveXObject( "Microsoft.XMLDOM" );
+ xml.async = "false";
+ xml.loadXML( data );
+ }
+ } catch( e ) {
+ xml = undefined;
+ }
+ if ( !xml || !xml.documentElement || xml.getElementsByTagName( "parsererror" ).length ) {
+ jQuery.error( "Invalid XML: " + data );
+ }
+ return xml;
},
noop: function() {},
- // Evalulates a script in a global context
+ // Evaluates a script in a global context
+ // Workarounds based on findings by Jim Driscoll
+ // http://weblogs.java.net/blog/driscoll/archive/2009/09/08/eval-javascript-global-context
globalEval: function( data ) {
- if ( data && rnotwhite.test(data) ) {
- // Inspired by code by Andrea Giammarchi
- // http://webreflection.blogspot.com/2007/08/global-scope-evaluation-and-dom.html
- var head = document.getElementsByTagName("head")[0] || document.documentElement,
- script = document.createElement("script");
-
- script.type = "text/javascript";
-
- if ( jQuery.support.scriptEval ) {
- script.appendChild( document.createTextNode( data ) );
- } else {
- script.text = data;
- }
-
- // Use insertBefore instead of appendChild to circumvent an IE6 bug.
- // This arises when a base node is used (#2709).
- head.insertBefore( script, head.firstChild );
- head.removeChild( script );
+ if ( data && rnotwhite.test( data ) ) {
+ // We use execScript on Internet Explorer
+ // We use an anonymous function so that context is window
+ // rather than jQuery in Firefox
+ ( window.execScript || function( data ) {
+ window[ "eval" ].call( window, data );
+ } )( data );
}
},
+ // Convert dashed to camelCase; used by the css and data modules
+ // Microsoft forgot to hump their vendor prefix (#9572)
+ camelCase: function( string ) {
+ return string.replace( rmsPrefix, "ms-" ).replace( rdashAlpha, fcamelCase );
+ },
+
nodeName: function( elem, name ) {
return elem.nodeName && elem.nodeName.toUpperCase() === name.toUpperCase();
},
@@ -550,7 +630,7 @@ jQuery.extend({
each: function( object, callback, args ) {
var name, i = 0,
length = object.length,
- isObj = length === undefined || jQuery.isFunction(object);
+ isObj = length === undefined || jQuery.isFunction( object );
if ( args ) {
if ( isObj ) {
@@ -576,17 +656,31 @@ jQuery.extend({
}
}
} else {
- for ( var value = object[0];
- i < length && callback.call( value, i, value ) !== false; value = object[++i] ) {}
+ for ( ; i < length; ) {
+ if ( callback.call( object[ i ], i, object[ i++ ] ) === false ) {
+ break;
+ }
+ }
}
}
return object;
},
- trim: function( text ) {
- return (text || "").replace( rtrim, "" );
- },
+ // Use native String.trim function wherever possible
+ trim: trim ?
+ function( text ) {
+ return text == null ?
+ "" :
+ trim.call( text );
+ } :
+
+ // Otherwise use our own trimming functionality
+ function( text ) {
+ return text == null ?
+ "" :
+ text.toString().replace( trimLeft, "" ).replace( trimRight, "" );
+ },
// results is for internal usage only
makeArray: function( array, results ) {
@@ -596,7 +690,10 @@ jQuery.extend({
// The window, strings (and functions) also have 'length'
// The extra typeof function check is to prevent crashes
// in Safari 2 (See: #3039)
- if ( array.length == null || typeof array === "string" || jQuery.isFunction(array) || (typeof array !== "function" && array.setInterval) ) {
+ // Tweaked logic slightly to handle Blackberry 4.7 RegExp issues #6930
+ var type = jQuery.type( array );
+
+ if ( array.length == null || type === "string" || type === "function" || type === "regexp" || jQuery.isWindow( array ) ) {
push.call( ret, array );
} else {
jQuery.merge( ret, array );
@@ -607,8 +704,12 @@ jQuery.extend({
},
inArray: function( elem, array ) {
- if ( array.indexOf ) {
- return array.indexOf( elem );
+ if ( !array ) {
+ return -1;
+ }
+
+ if ( indexOf ) {
+ return indexOf.call( array, elem );
}
for ( var i = 0, length = array.length; i < length; i++ ) {
@@ -621,13 +722,14 @@ jQuery.extend({
},
merge: function( first, second ) {
- var i = first.length, j = 0;
+ var i = first.length,
+ j = 0;
if ( typeof second.length === "number" ) {
for ( var l = second.length; j < l; j++ ) {
first[ i++ ] = second[ j ];
}
-
+
} else {
while ( second[j] !== undefined ) {
first[ i++ ] = second[ j++ ];
@@ -640,12 +742,14 @@ jQuery.extend({
},
grep: function( elems, callback, inv ) {
- var ret = [];
+ var ret = [], retVal;
+ inv = !!inv;
// Go through the array, only saving the items
// that pass the validator function
for ( var i = 0, length = elems.length; i < length; i++ ) {
- if ( !inv !== !callback( elems[ i ], i ) ) {
+ retVal = !!callback( elems[ i ], i );
+ if ( inv !== retVal ) {
ret.push( elems[ i ] );
}
}
@@ -655,69 +759,143 @@ jQuery.extend({
// arg is for internal usage only
map: function( elems, callback, arg ) {
- var ret = [], value;
+ var value, key, ret = [],
+ i = 0,
+ length = elems.length,
+ // jquery objects are treated as arrays
+ isArray = elems instanceof jQuery || length !== undefined && typeof length === "number" && ( ( length > 0 && elems[ 0 ] && elems[ length -1 ] ) || length === 0 || jQuery.isArray( elems ) ) ;
// Go through the array, translating each of the items to their
- // new value (or values).
- for ( var i = 0, length = elems.length; i < length; i++ ) {
- value = callback( elems[ i ], i, arg );
+ if ( isArray ) {
+ for ( ; i < length; i++ ) {
+ value = callback( elems[ i ], i, arg );
- if ( value != null ) {
- ret[ ret.length ] = value;
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
+ }
+
+ // Go through every key on the object,
+ } else {
+ for ( key in elems ) {
+ value = callback( elems[ key ], key, arg );
+
+ if ( value != null ) {
+ ret[ ret.length ] = value;
+ }
}
}
+ // Flatten any nested arrays
return ret.concat.apply( [], ret );
},
// A global GUID counter for objects
guid: 1,
- proxy: function( fn, proxy, thisObject ) {
- if ( arguments.length === 2 ) {
- if ( typeof proxy === "string" ) {
- thisObject = fn;
- fn = thisObject[ proxy ];
- proxy = undefined;
+ // Bind a function to a context, optionally partially applying any
+ // arguments.
+ proxy: function( fn, context ) {
+ if ( typeof context === "string" ) {
+ var tmp = fn[ context ];
+ context = fn;
+ fn = tmp;
+ }
- } else if ( proxy && !jQuery.isFunction( proxy ) ) {
- thisObject = proxy;
- proxy = undefined;
- }
+ // Quick check to determine if target is callable, in the spec
+ // this throws a TypeError, but we will just return undefined.
+ if ( !jQuery.isFunction( fn ) ) {
+ return undefined;
}
- if ( !proxy && fn ) {
+ // Simulated bind
+ var args = slice.call( arguments, 2 ),
proxy = function() {
- return fn.apply( thisObject || this, arguments );
+ return fn.apply( context, args.concat( slice.call( arguments ) ) );
};
- }
// Set the guid of unique handler to the same of original handler, so it can be removed
- if ( fn ) {
- proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
- }
+ proxy.guid = fn.guid = fn.guid || proxy.guid || jQuery.guid++;
- // So proxy can be declared as an argument
return proxy;
},
+ // Mutifunctional method to get and set values to a collection
+ // The value/s can optionally be executed if it's a function
+ access: function( elems, key, value, exec, fn, pass ) {
+ var length = elems.length;
+
+ // Setting many attributes
+ if ( typeof key === "object" ) {
+ for ( var k in key ) {
+ jQuery.access( elems, k, key[k], exec, fn, value );
+ }
+ return elems;
+ }
+
+ // Setting one attribute
+ if ( value !== undefined ) {
+ // Optionally, function values get executed if exec is true
+ exec = !pass && exec && jQuery.isFunction(value);
+
+ for ( var i = 0; i < length; i++ ) {
+ fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ }
+
+ return elems;
+ }
+
+ // Getting an attribute
+ return length ? fn( elems[0], key ) : undefined;
+ },
+
+ now: function() {
+ return (new Date()).getTime();
+ },
+
// Use of jQuery.browser is frowned upon.
// More details: http://docs.jquery.com/Utilities/jQuery.browser
uaMatch: function( ua ) {
ua = ua.toLowerCase();
- var match = /(webkit)[ \/]([\w.]+)/.exec( ua ) ||
- /(opera)(?:.*version)?[ \/]([\w.]+)/.exec( ua ) ||
- /(msie) ([\w.]+)/.exec( ua ) ||
- !/compatible/.test( ua ) && /(mozilla)(?:.*? rv:([\w.]+))?/.exec( ua ) ||
- [];
+ var match = rwebkit.exec( ua ) ||
+ ropera.exec( ua ) ||
+ rmsie.exec( ua ) ||
+ ua.indexOf("compatible") < 0 && rmozilla.exec( ua ) ||
+ [];
return { browser: match[1] || "", version: match[2] || "0" };
},
+ sub: function() {
+ function jQuerySub( selector, context ) {
+ return new jQuerySub.fn.init( selector, context );
+ }
+ jQuery.extend( true, jQuerySub, this );
+ jQuerySub.superclass = this;
+ jQuerySub.fn = jQuerySub.prototype = this();
+ jQuerySub.fn.constructor = jQuerySub;
+ jQuerySub.sub = this.sub;
+ jQuerySub.fn.init = function init( selector, context ) {
+ if ( context && context instanceof jQuery && !(context instanceof jQuerySub) ) {
+ context = jQuerySub( context );
+ }
+
+ return jQuery.fn.init.call( this, selector, context, rootjQuerySub );
+ };
+ jQuerySub.fn.init.prototype = jQuerySub.fn;
+ var rootjQuerySub = jQuerySub(document);
+ return jQuerySub;
+ },
+
browser: {}
});
+// Populate the class2type map
+jQuery.each("Boolean Number String Function Array Date RegExp Object".split(" "), function(i, name) {
+ class2type[ "[object " + name + "]" ] = name.toLowerCase();
+});
+
browserMatch = jQuery.uaMatch( userAgent );
if ( browserMatch.browser ) {
jQuery.browser[ browserMatch.browser ] = true;
@@ -729,10 +907,10 @@ if ( jQuery.browser.webkit ) {
jQuery.browser.safari = true;
}
-if ( indexOf ) {
- jQuery.inArray = function( elem, array ) {
- return indexOf.call( array, elem );
- };
+// IE doesn't match non-breaking spaces with \s
+if ( rnotwhite.test( "\xA0" ) ) {
+ trimLeft = /^[\s\xA0]+/;
+ trimRight = /[\s\xA0]+$/;
}
// All jQuery objects should point back to these
@@ -765,7 +943,7 @@ function doScrollCheck() {
// If IE is used, use the trick by Diego Perini
// http://javascript.nwbox.com/IEContentLoaded/
document.documentElement.doScroll("left");
- } catch( error ) {
+ } catch(e) {
setTimeout( doScrollCheck, 1 );
return;
}
@@ -774,93 +952,268 @@ function doScrollCheck() {
jQuery.ready();
}
-function evalScript( i, elem ) {
- if ( elem.src ) {
- jQuery.ajax({
- url: elem.src,
- async: false,
- dataType: "script"
- });
- } else {
- jQuery.globalEval( elem.text || elem.textContent || elem.innerHTML || "" );
- }
+return jQuery;
- if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
- }
-}
+})();
-// Mutifunctional method to get and set values to a collection
-// The value/s can be optionally by executed if its a function
-function access( elems, key, value, exec, fn, pass ) {
- var length = elems.length;
-
- // Setting many attributes
- if ( typeof key === "object" ) {
- for ( var k in key ) {
- access( elems, k, key[k], exec, fn, value );
+
+var // Promise methods
+ promiseMethods = "done fail isResolved isRejected promise then always pipe".split( " " ),
+ // Static reference to slice
+ sliceDeferred = [].slice;
+
+jQuery.extend({
+ // Create a simple deferred (one callbacks list)
+ _Deferred: function() {
+ var // callbacks list
+ callbacks = [],
+ // stored [ context , args ]
+ fired,
+ // to avoid firing when already doing so
+ firing,
+ // flag to know if the deferred has been cancelled
+ cancelled,
+ // the deferred itself
+ deferred = {
+
+ // done( f1, f2, ...)
+ done: function() {
+ if ( !cancelled ) {
+ var args = arguments,
+ i,
+ length,
+ elem,
+ type,
+ _fired;
+ if ( fired ) {
+ _fired = fired;
+ fired = 0;
+ }
+ for ( i = 0, length = args.length; i < length; i++ ) {
+ elem = args[ i ];
+ type = jQuery.type( elem );
+ if ( type === "array" ) {
+ deferred.done.apply( deferred, elem );
+ } else if ( type === "function" ) {
+ callbacks.push( elem );
+ }
+ }
+ if ( _fired ) {
+ deferred.resolveWith( _fired[ 0 ], _fired[ 1 ] );
+ }
+ }
+ return this;
+ },
+
+ // resolve with given context and args
+ resolveWith: function( context, args ) {
+ if ( !cancelled && !fired && !firing ) {
+ // make sure args are available (#8421)
+ args = args || [];
+ firing = 1;
+ try {
+ while( callbacks[ 0 ] ) {
+ callbacks.shift().apply( context, args );
+ }
+ }
+ finally {
+ fired = [ context, args ];
+ firing = 0;
+ }
+ }
+ return this;
+ },
+
+ // resolve with this as context and given arguments
+ resolve: function() {
+ deferred.resolveWith( this, arguments );
+ return this;
+ },
+
+ // Has this deferred been resolved?
+ isResolved: function() {
+ return !!( firing || fired );
+ },
+
+ // Cancel
+ cancel: function() {
+ cancelled = 1;
+ callbacks = [];
+ return this;
+ }
+ };
+
+ return deferred;
+ },
+
+ // Full fledged deferred (two callbacks list)
+ Deferred: function( func ) {
+ var deferred = jQuery._Deferred(),
+ failDeferred = jQuery._Deferred(),
+ promise;
+ // Add errorDeferred methods, then and promise
+ jQuery.extend( deferred, {
+ then: function( doneCallbacks, failCallbacks ) {
+ deferred.done( doneCallbacks ).fail( failCallbacks );
+ return this;
+ },
+ always: function() {
+ return deferred.done.apply( deferred, arguments ).fail.apply( this, arguments );
+ },
+ fail: failDeferred.done,
+ rejectWith: failDeferred.resolveWith,
+ reject: failDeferred.resolve,
+ isRejected: failDeferred.isResolved,
+ pipe: function( fnDone, fnFail ) {
+ return jQuery.Deferred(function( newDefer ) {
+ jQuery.each( {
+ done: [ fnDone, "resolve" ],
+ fail: [ fnFail, "reject" ]
+ }, function( handler, data ) {
+ var fn = data[ 0 ],
+ action = data[ 1 ],
+ returned;
+ if ( jQuery.isFunction( fn ) ) {
+ deferred[ handler ](function() {
+ returned = fn.apply( this, arguments );
+ if ( returned && jQuery.isFunction( returned.promise ) ) {
+ returned.promise().then( newDefer.resolve, newDefer.reject );
+ } else {
+ newDefer[ action + "With" ]( this === deferred ? newDefer : this, [ returned ] );
+ }
+ });
+ } else {
+ deferred[ handler ]( newDefer[ action ] );
+ }
+ });
+ }).promise();
+ },
+ // Get a promise for this deferred
+ // If obj is provided, the promise aspect is added to the object
+ promise: function( obj ) {
+ if ( obj == null ) {
+ if ( promise ) {
+ return promise;
+ }
+ promise = obj = {};
+ }
+ var i = promiseMethods.length;
+ while( i-- ) {
+ obj[ promiseMethods[i] ] = deferred[ promiseMethods[i] ];
+ }
+ return obj;
+ }
+ });
+ // Make sure only one callback list will be used
+ deferred.done( failDeferred.cancel ).fail( deferred.cancel );
+ // Unexpose cancel
+ delete deferred.cancel;
+ // Call given func if any
+ if ( func ) {
+ func.call( deferred, deferred );
+ }
+ return deferred;
+ },
+
+ // Deferred helper
+ when: function( firstParam ) {
+ var args = arguments,
+ i = 0,
+ length = args.length,
+ count = length,
+ deferred = length <= 1 && firstParam && jQuery.isFunction( firstParam.promise ) ?
+ firstParam :
+ jQuery.Deferred();
+ function resolveFunc( i ) {
+ return function( value ) {
+ args[ i ] = arguments.length > 1 ? sliceDeferred.call( arguments, 0 ) : value;
+ if ( !( --count ) ) {
+ // Strange bug in FF4:
+ // Values changed onto the arguments object sometimes end up as undefined values
+ // outside the $.when method. Cloning the object into a fresh array solves the issue
+ deferred.resolveWith( deferred, sliceDeferred.call( args, 0 ) );
+ }
+ };
}
- return elems;
- }
-
- // Setting one attribute
- if ( value !== undefined ) {
- // Optionally, function values get executed if exec is true
- exec = !pass && exec && jQuery.isFunction(value);
-
- for ( var i = 0; i < length; i++ ) {
- fn( elems[i], key, exec ? value.call( elems[i], i, fn( elems[i], key ) ) : value, pass );
+ if ( length > 1 ) {
+ for( ; i < length; i++ ) {
+ if ( args[ i ] && jQuery.isFunction( args[ i ].promise ) ) {
+ args[ i ].promise().then( resolveFunc(i), deferred.reject );
+ } else {
+ --count;
+ }
+ }
+ if ( !count ) {
+ deferred.resolveWith( deferred, args );
+ }
+ } else if ( deferred !== firstParam ) {
+ deferred.resolveWith( deferred, length ? [ firstParam ] : [] );
}
-
- return elems;
+ return deferred.promise();
}
-
- // Getting an attribute
- return length ? fn( elems[0], key ) : undefined;
-}
+});
+
-function now() {
- return (new Date).getTime();
-}
-(function() {
- jQuery.support = {};
+jQuery.support = (function() {
- var root = document.documentElement,
- script = document.createElement("script"),
- div = document.createElement("div"),
- id = "script" + now();
+ var div = document.createElement( "div" ),
+ documentElement = document.documentElement,
+ all,
+ a,
+ select,
+ opt,
+ input,
+ marginDiv,
+ support,
+ fragment,
+ body,
+ testElementParent,
+ testElement,
+ testElementStyle,
+ tds,
+ events,
+ eventName,
+ i,
+ isSupported;
- div.style.display = "none";
- div.innerHTML = " <link/><table></table><a href='/a' style='color:red;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
+ // Preliminary tests
+ div.setAttribute("className", "t");
+ div.innerHTML = " <link/><table></table><a href='/a' style='top:1px;float:left;opacity:.55;'>a</a><input type='checkbox'/>";
- var all = div.getElementsByTagName("*"),
- a = div.getElementsByTagName("a")[0];
+
+ all = div.getElementsByTagName( "*" );
+ a = div.getElementsByTagName( "a" )[ 0 ];
// Can't get basic test support
if ( !all || !all.length || !a ) {
- return;
+ return {};
}
- jQuery.support = {
+ // First batch of supports tests
+ select = document.createElement( "select" );
+ opt = select.appendChild( document.createElement("option") );
+ input = div.getElementsByTagName( "input" )[ 0 ];
+
+ support = {
// IE strips leading whitespace when .innerHTML is used
- leadingWhitespace: div.firstChild.nodeType === 3,
+ leadingWhitespace: ( div.firstChild.nodeType === 3 ),
// Make sure that tbody elements aren't automatically inserted
// IE will insert them into empty tables
- tbody: !div.getElementsByTagName("tbody").length,
+ tbody: !div.getElementsByTagName( "tbody" ).length,
// Make sure that link elements get serialized correctly by innerHTML
// This requires a wrapper element in IE
- htmlSerialize: !!div.getElementsByTagName("link").length,
+ htmlSerialize: !!div.getElementsByTagName( "link" ).length,
// Get the style information from getAttribute
- // (IE uses .cssText insted)
- style: /red/.test( a.getAttribute("style") ),
+ // (IE uses .cssText instead)
+ style: /top/.test( a.getAttribute("style") ),
// Make sure that URLs aren't manipulated
// (IE normalizes it by default)
- hrefNormalized: a.getAttribute("href") === "/a",
+ hrefNormalized: ( a.getAttribute( "href" ) === "/a" ),
// Make sure that element opacity exists
// (IE uses filter instead)
@@ -874,213 +1227,462 @@ function now() {
// Make sure that if no value is specified for a checkbox
// that it defaults to "on".
// (WebKit defaults to "" instead)
- checkOn: div.getElementsByTagName("input")[0].value === "on",
+ checkOn: ( input.value === "on" ),
// Make sure that a selected-by-default option has a working selected property.
// (WebKit defaults to false instead of true, IE too, if it's in an optgroup)
- optSelected: document.createElement("select").appendChild( document.createElement("option") ).selected,
+ optSelected: opt.selected,
- parentNode: div.removeChild( div.appendChild( document.createElement("div") ) ).parentNode === null,
+ // Test setAttribute on camelCase class. If it works, we need attrFixes when doing get/setAttribute (ie6/7)
+ getSetAttribute: div.className !== "t",
// Will be defined later
+ submitBubbles: true,
+ changeBubbles: true,
+ focusinBubbles: false,
deleteExpando: true,
- checkClone: false,
- scriptEval: false,
noCloneEvent: true,
- boxModel: null
+ inlineBlockNeedsLayout: false,
+ shrinkWrapBlocks: false,
+ reliableMarginRight: true
};
- script.type = "text/javascript";
- try {
- script.appendChild( document.createTextNode( "window." + id + "=1;" ) );
- } catch(e) {}
+ // Make sure checked status is properly cloned
+ input.checked = true;
+ support.noCloneChecked = input.cloneNode( true ).checked;
- root.insertBefore( script, root.firstChild );
-
- // Make sure that the execution of code works by injecting a script
- // tag with appendChild/createTextNode
- // (IE doesn't support this, fails, and uses .text instead)
- if ( window[ id ] ) {
- jQuery.support.scriptEval = true;
- delete window[ id ];
- }
+ // Make sure that the options inside disabled selects aren't marked as disabled
+ // (WebKit marks them as disabled)
+ select.disabled = true;
+ support.optDisabled = !opt.disabled;
// Test to see if it's possible to delete an expando from an element
// Fails in Internet Explorer
try {
- delete script.test;
-
- } catch(e) {
- jQuery.support.deleteExpando = false;
+ delete div.test;
+ } catch( e ) {
+ support.deleteExpando = false;
}
- root.removeChild( script );
-
- if ( div.attachEvent && div.fireEvent ) {
- div.attachEvent("onclick", function click() {
+ if ( !div.addEventListener && div.attachEvent && div.fireEvent ) {
+ div.attachEvent( "onclick", function() {
// Cloning a node shouldn't copy over any
// bound event handlers (IE does this)
- jQuery.support.noCloneEvent = false;
- div.detachEvent("onclick", click);
+ support.noCloneEvent = false;
});
- div.cloneNode(true).fireEvent("onclick");
+ div.cloneNode( true ).fireEvent( "onclick" );
}
- div = document.createElement("div");
- div.innerHTML = "<input type='radio' name='radiotest' checked='checked'/>";
+ // Check if a radio maintains it's value
+ // after being appended to the DOM
+ input = document.createElement("input");
+ input.value = "t";
+ input.setAttribute("type", "radio");
+ support.radioValue = input.value === "t";
- var fragment = document.createDocumentFragment();
+ input.setAttribute("checked", "checked");
+ div.appendChild( input );
+ fragment = document.createDocumentFragment();
fragment.appendChild( div.firstChild );
// WebKit doesn't clone checked state correctly in fragments
- jQuery.support.checkClone = fragment.cloneNode(true).cloneNode(true).lastChild.checked;
+ support.checkClone = fragment.cloneNode( true ).cloneNode( true ).lastChild.checked;
+
+ div.innerHTML = "";
// Figure out if the W3C box model works as expected
- // document.body must exist before we can do this
- jQuery(function() {
- var div = document.createElement("div");
- div.style.width = div.style.paddingLeft = "1px";
+ div.style.width = div.style.paddingLeft = "1px";
+
+ body = document.getElementsByTagName( "body" )[ 0 ];
+ // We use our own, invisible, body unless the body is already present
+ // in which case we use a div (#9239)
+ testElement = document.createElement( body ? "div" : "body" );
+ testElementStyle = {
+ visibility: "hidden",
+ width: 0,
+ height: 0,
+ border: 0,
+ margin: 0,
+ background: "none"
+ };
+ if ( body ) {
+ jQuery.extend( testElementStyle, {
+ position: "absolute",
+ left: "-1000px",
+ top: "-1000px"
+ });
+ }
+ for ( i in testElementStyle ) {
+ testElement.style[ i ] = testElementStyle[ i ];
+ }
+ testElement.appendChild( div );
+ testElementParent = body || documentElement;
+ testElementParent.insertBefore( testElement, testElementParent.firstChild );
+
+ // Check if a disconnected checkbox will retain its checked
+ // value of true after appended to the DOM (IE6/7)
+ support.appendChecked = input.checked;
+
+ support.boxModel = div.offsetWidth === 2;
+
+ if ( "zoom" in div.style ) {
+ // Check if natively block-level elements act like inline-block
+ // elements when setting their display to 'inline' and giving
+ // them layout
+ // (IE < 8 does this)
+ div.style.display = "inline";
+ div.style.zoom = 1;
+ support.inlineBlockNeedsLayout = ( div.offsetWidth === 2 );
+
+ // Check if elements with layout shrink-wrap their children
+ // (IE 6 does this)
+ div.style.display = "";
+ div.innerHTML = "<div style='width:4px;'></div>";
+ support.shrinkWrapBlocks = ( div.offsetWidth !== 2 );
+ }
- document.body.appendChild( div );
- jQuery.boxModel = jQuery.support.boxModel = div.offsetWidth === 2;
- document.body.removeChild( div ).style.display = 'none';
+ div.innerHTML = "<table><tr><td style='padding:0;border:0;display:none'></td><td>t</td></tr></table>";
+ tds = div.getElementsByTagName( "td" );
+
+ // Check if table cells still have offsetWidth/Height when they are set
+ // to display:none and there are still other visible table cells in a
+ // table row; if so, offsetWidth/Height are not reliable for use when
+ // determining if an element has been hidden directly using
+ // display:none (it is still safe to use offsets if a parent element is
+ // hidden; don safety goggles and see bug #4512 for more information).
+ // (only IE 8 fails this test)
+ isSupported = ( tds[ 0 ].offsetHeight === 0 );
+
+ tds[ 0 ].style.display = "";
+ tds[ 1 ].style.display = "none";
+
+ // Check if empty table cells still have offsetWidth/Height
+ // (IE < 8 fail this test)
+ support.reliableHiddenOffsets = isSupported && ( tds[ 0 ].offsetHeight === 0 );
+ div.innerHTML = "";
+
+ // Check if div with explicit width and no margin-right incorrectly
+ // gets computed margin-right based on width of container. For more
+ // info see bug #3333
+ // Fails in WebKit before Feb 2011 nightlies
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ marginDiv = document.createElement( "div" );
+ marginDiv.style.width = "0";
+ marginDiv.style.marginRight = "0";
+ div.appendChild( marginDiv );
+ support.reliableMarginRight =
+ ( parseInt( ( document.defaultView.getComputedStyle( marginDiv, null ) || { marginRight: 0 } ).marginRight, 10 ) || 0 ) === 0;
+ }
- div = null;
- });
+ // Remove the body element we added
+ testElement.innerHTML = "";
+ testElementParent.removeChild( testElement );
// Technique from Juriy Zaytsev
// http://thinkweb2.com/projects/prototype/detecting-event-support-without-browser-sniffing/
- var eventSupported = function( eventName ) {
- var el = document.createElement("div");
- eventName = "on" + eventName;
-
- var isSupported = (eventName in el);
- if ( !isSupported ) {
- el.setAttribute(eventName, "return;");
- isSupported = typeof el[eventName] === "function";
- }
- el = null;
-
- return isSupported;
- };
-
- jQuery.support.submitBubbles = eventSupported("submit");
- jQuery.support.changeBubbles = eventSupported("change");
+ // We only care about the case where non-standard event systems
+ // are used, namely in IE. Short-circuiting here helps us to
+ // avoid an eval call (in setAttribute) which can cause CSP
+ // to go haywire. See: https://developer.mozilla.org/en/Security/CSP
+ if ( div.attachEvent ) {
+ for( i in {
+ submit: 1,
+ change: 1,
+ focusin: 1
+ } ) {
+ eventName = "on" + i;
+ isSupported = ( eventName in div );
+ if ( !isSupported ) {
+ div.setAttribute( eventName, "return;" );
+ isSupported = ( typeof div[ eventName ] === "function" );
+ }
+ support[ i + "Bubbles" ] = isSupported;
+ }
+ }
- // release memory in IE
- root = script = div = all = a = null;
+ // Null connected elements to avoid leaks in IE
+ testElement = fragment = select = opt = body = marginDiv = div = input = null;
+
+ return support;
})();
-jQuery.props = {
- "for": "htmlFor",
- "class": "className",
- readonly: "readOnly",
- maxlength: "maxLength",
- cellspacing: "cellSpacing",
- rowspan: "rowSpan",
- colspan: "colSpan",
- tabindex: "tabIndex",
- usemap: "useMap",
- frameborder: "frameBorder"
-};
-var expando = "jQuery" + now(), uuid = 0, windowData = {};
+// Keep track of boxModel
+jQuery.boxModel = jQuery.support.boxModel;
+
+
+
+
+var rbrace = /^(?:\{.*\}|\[.*\])$/,
+ rmultiDash = /([A-Z])/g;
jQuery.extend({
cache: {},
-
- expando:expando,
+
+ // Please use with caution
+ uuid: 0,
+
+ // Unique for each copy of jQuery on the page
+ // Non-digits removed to match rinlinejQuery
+ expando: "jQuery" + ( jQuery.fn.jquery + Math.random() ).replace( /\D/g, "" ),
// The following elements throw uncatchable exceptions if you
// attempt to add expando properties to them.
noData: {
"embed": true,
- "object": true,
+ // Ban all objects except for Flash (which handle expandos)
+ "object": "clsid:D27CDB6E-AE6D-11cf-96B8-444553540000",
"applet": true
},
- data: function( elem, name, data ) {
- if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ hasData: function( elem ) {
+ elem = elem.nodeType ? jQuery.cache[ elem[jQuery.expando] ] : elem[ jQuery.expando ];
+
+ return !!elem && !isEmptyDataObject( elem );
+ },
+
+ data: function( elem, name, data, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
return;
}
- elem = elem == window ?
- windowData :
- elem;
+ var thisCache, ret,
+ internalKey = jQuery.expando,
+ getByName = typeof name === "string",
- var id = elem[ expando ], cache = jQuery.cache, thisCache;
+ // We have to handle DOM nodes and JS objects differently because IE6-7
+ // can't GC object references properly across the DOM-JS boundary
+ isNode = elem.nodeType,
- if ( !id && typeof name === "string" && data === undefined ) {
- return null;
- }
+ // Only DOM nodes need the global jQuery cache; JS object data is
+ // attached directly to the object so GC can occur automatically
+ cache = isNode ? jQuery.cache : elem,
+
+ // Only defining an ID for JS objects if its cache already exists allows
+ // the code to shortcut on the same path as a DOM node with no cache
+ id = isNode ? elem[ jQuery.expando ] : elem[ jQuery.expando ] && jQuery.expando;
- // Compute a unique ID for the element
- if ( !id ) {
- id = ++uuid;
+ // Avoid doing any more work than we need to when trying to get data on an
+ // object that has no data at all
+ if ( (!id || (pvt && id && (cache[ id ] && !cache[ id ][ internalKey ]))) && getByName && data === undefined ) {
+ return;
}
- // Avoid generating a new cache unless none exists and we
- // want to manipulate it.
- if ( typeof name === "object" ) {
- elem[ expando ] = id;
- thisCache = cache[ id ] = jQuery.extend(true, {}, name);
+ if ( !id ) {
+ // Only DOM nodes need a new unique ID for each element since their data
+ // ends up in the global cache
+ if ( isNode ) {
+ elem[ jQuery.expando ] = id = ++jQuery.uuid;
+ } else {
+ id = jQuery.expando;
+ }
+ }
- } else if ( !cache[ id ] ) {
- elem[ expando ] = id;
+ if ( !cache[ id ] ) {
cache[ id ] = {};
+
+ // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
+ // metadata on plain JS objects when the object is serialized using
+ // JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+ }
+
+ // An object can be passed to jQuery.data instead of a key/value pair; this gets
+ // shallow copied over onto the existing cache
+ if ( typeof name === "object" || typeof name === "function" ) {
+ if ( pvt ) {
+ cache[ id ][ internalKey ] = jQuery.extend(cache[ id ][ internalKey ], name);
+ } else {
+ cache[ id ] = jQuery.extend(cache[ id ], name);
+ }
}
thisCache = cache[ id ];
- // Prevent overriding the named cache with undefined values
+ // Internal jQuery data is stored in a separate object inside the object's data
+ // cache in order to avoid key collisions between internal data and user-defined
+ // data
+ if ( pvt ) {
+ if ( !thisCache[ internalKey ] ) {
+ thisCache[ internalKey ] = {};
+ }
+
+ thisCache = thisCache[ internalKey ];
+ }
+
if ( data !== undefined ) {
- thisCache[ name ] = data;
+ thisCache[ jQuery.camelCase( name ) ] = data;
+ }
+
+ // TODO: This is a hack for 1.5 ONLY. It will be removed in 1.6. Users should
+ // not attempt to inspect the internal events object using jQuery.data, as this
+ // internal data object is undocumented and subject to change.
+ if ( name === "events" && !thisCache[name] ) {
+ return thisCache[ internalKey ] && thisCache[ internalKey ].events;
}
- return typeof name === "string" ? thisCache[ name ] : thisCache;
+ // Check for both converted-to-camel and non-converted data property names
+ // If a data property was specified
+ if ( getByName ) {
+
+ // First Try to find as-is property data
+ ret = thisCache[ name ];
+
+ // Test for null|undefined property data
+ if ( ret == null ) {
+
+ // Try to find the camelCased property
+ ret = thisCache[ jQuery.camelCase( name ) ];
+ }
+ } else {
+ ret = thisCache;
+ }
+
+ return ret;
},
- removeData: function( elem, name ) {
- if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ removeData: function( elem, name, pvt /* Internal Use Only */ ) {
+ if ( !jQuery.acceptData( elem ) ) {
return;
}
- elem = elem == window ?
- windowData :
- elem;
+ var thisCache,
+
+ // Reference to internal data cache key
+ internalKey = jQuery.expando,
+
+ isNode = elem.nodeType,
+
+ // See jQuery.data for more information
+ cache = isNode ? jQuery.cache : elem,
- var id = elem[ expando ], cache = jQuery.cache, thisCache = cache[ id ];
+ // See jQuery.data for more information
+ id = isNode ? elem[ jQuery.expando ] : jQuery.expando;
+
+ // If there is already no cache entry for this object, there is no
+ // purpose in continuing
+ if ( !cache[ id ] ) {
+ return;
+ }
- // If we want to remove a specific section of the element's data
if ( name ) {
+
+ thisCache = pvt ? cache[ id ][ internalKey ] : cache[ id ];
+
if ( thisCache ) {
- // Remove the section of cache data
+
+ // Support interoperable removal of hyphenated or camelcased keys
+ if ( !thisCache[ name ] ) {
+ name = jQuery.camelCase( name );
+ }
+
delete thisCache[ name ];
- // If we've removed all the data, remove the element's cache
- if ( jQuery.isEmptyObject(thisCache) ) {
- jQuery.removeData( elem );
+ // If there is no data left in the cache, we want to continue
+ // and let the cache object itself get destroyed
+ if ( !isEmptyDataObject(thisCache) ) {
+ return;
}
}
+ }
+
+ // See jQuery.data for more information
+ if ( pvt ) {
+ delete cache[ id ][ internalKey ];
+
+ // Don't destroy the parent cache unless the internal data object
+ // had been the only thing left in it
+ if ( !isEmptyDataObject(cache[ id ]) ) {
+ return;
+ }
+ }
- // Otherwise, we want to remove all of the element's data
+ var internalCache = cache[ id ][ internalKey ];
+
+ // Browsers that fail expando deletion also refuse to delete expandos on
+ // the window, but it will allow it on all other JS objects; other browsers
+ // don't care
+ // Ensure that `cache` is not a window object #10080
+ if ( jQuery.support.deleteExpando || !cache.setInterval ) {
+ delete cache[ id ];
} else {
+ cache[ id ] = null;
+ }
+
+ // We destroyed the entire user cache at once because it's faster than
+ // iterating through each key, but we need to continue to persist internal
+ // data if it existed
+ if ( internalCache ) {
+ cache[ id ] = {};
+ // TODO: This is a hack for 1.5 ONLY. Avoids exposing jQuery
+ // metadata on plain JS objects when the object is serialized using
+ // JSON.stringify
+ if ( !isNode ) {
+ cache[ id ].toJSON = jQuery.noop;
+ }
+
+ cache[ id ][ internalKey ] = internalCache;
+
+ // Otherwise, we need to eliminate the expando on the node to avoid
+ // false lookups in the cache for entries that no longer exist
+ } else if ( isNode ) {
+ // IE does not allow us to delete expando properties from nodes,
+ // nor does it have a removeAttribute function on Document nodes;
+ // we must handle all of these cases
if ( jQuery.support.deleteExpando ) {
delete elem[ jQuery.expando ];
-
} else if ( elem.removeAttribute ) {
elem.removeAttribute( jQuery.expando );
+ } else {
+ elem[ jQuery.expando ] = null;
}
+ }
+ },
- // Completely remove the data cache
- delete cache[ id ];
+ // For internal use only.
+ _data: function( elem, name, data ) {
+ return jQuery.data( elem, name, data, true );
+ },
+
+ // A method for determining if a DOM node can handle the data expando
+ acceptData: function( elem ) {
+ if ( elem.nodeName ) {
+ var match = jQuery.noData[ elem.nodeName.toLowerCase() ];
+
+ if ( match ) {
+ return !(match === true || elem.getAttribute("classid") !== match);
+ }
}
+
+ return true;
}
});
jQuery.fn.extend({
data: function( key, value ) {
- if ( typeof key === "undefined" && this.length ) {
- return jQuery.data( this[0] );
+ var data = null;
+
+ if ( typeof key === "undefined" ) {
+ if ( this.length ) {
+ data = jQuery.data( this[0] );
+
+ if ( this[0].nodeType === 1 ) {
+ var attr = this[0].attributes, name;
+ for ( var i = 0, l = attr.length; i < l; i++ ) {
+ name = attr[i].name;
+
+ if ( name.indexOf( "data-" ) === 0 ) {
+ name = jQuery.camelCase( name.substring(5) );
+
+ dataAttr( this[0], name, data[ name ] );
+ }
+ }
+ }
+ }
+
+ return data;
} else if ( typeof key === "object" ) {
return this.each(function() {
@@ -1092,17 +1694,26 @@ jQuery.fn.extend({
parts[1] = parts[1] ? "." + parts[1] : "";
if ( value === undefined ) {
- var data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+ data = this.triggerHandler("getData" + parts[1] + "!", [parts[0]]);
+ // Try to fetch any internally stored data first
if ( data === undefined && this.length ) {
data = jQuery.data( this[0], key );
+ data = dataAttr( this[0], key, data );
}
+
return data === undefined && parts[1] ?
this.data( parts[0] ) :
data;
+
} else {
- return this.trigger("setData" + parts[1] + "!", [parts[0], value]).each(function() {
+ return this.each(function() {
+ var $this = jQuery( this ),
+ args = [ parts[0], value ];
+
+ $this.triggerHandler( "setData" + parts[1] + "!", args );
jQuery.data( this, key, value );
+ $this.triggerHandler( "changeData" + parts[1] + "!", args );
});
}
},
@@ -1113,34 +1724,123 @@ jQuery.fn.extend({
});
}
});
-jQuery.extend({
- queue: function( elem, type, data ) {
- if ( !elem ) {
- return;
+
+function dataAttr( elem, key, data ) {
+ // If nothing was found internally, try to fetch any
+ // data from the HTML5 data-* attribute
+ if ( data === undefined && elem.nodeType === 1 ) {
+
+ var name = "data-" + key.replace( rmultiDash, "-$1" ).toLowerCase();
+
+ data = elem.getAttribute( name );
+
+ if ( typeof data === "string" ) {
+ try {
+ data = data === "true" ? true :
+ data === "false" ? false :
+ data === "null" ? null :
+ !jQuery.isNaN( data ) ? parseFloat( data ) :
+ rbrace.test( data ) ? jQuery.parseJSON( data ) :
+ data;
+ } catch( e ) {}
+
+ // Make sure we set the data so it isn't changed later
+ jQuery.data( elem, key, data );
+
+ } else {
+ data = undefined;
}
+ }
- type = (type || "fx") + "queue";
- var q = jQuery.data( elem, type );
+ return data;
+}
- // Speed up dequeue by getting out quickly if this is just a lookup
- if ( !data ) {
- return q || [];
+// TODO: This is a hack for 1.5 ONLY to allow objects with a single toJSON
+// property to be considered empty objects; this property always exists in
+// order to make sure JSON.stringify does not expose internal metadata
+function isEmptyDataObject( obj ) {
+ for ( var name in obj ) {
+ if ( name !== "toJSON" ) {
+ return false;
}
+ }
- if ( !q || jQuery.isArray(data) ) {
- q = jQuery.data( elem, type, jQuery.makeArray(data) );
+ return true;
+}
- } else {
- q.push( data );
+
+
+
+function handleQueueMarkDefer( elem, type, src ) {
+ var deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ defer = jQuery.data( elem, deferDataKey, undefined, true );
+ if ( defer &&
+ ( src === "queue" || !jQuery.data( elem, queueDataKey, undefined, true ) ) &&
+ ( src === "mark" || !jQuery.data( elem, markDataKey, undefined, true ) ) ) {
+ // Give room for hard-coded callbacks to fire first
+ // and eventually mark/queue something else on the element
+ setTimeout( function() {
+ if ( !jQuery.data( elem, queueDataKey, undefined, true ) &&
+ !jQuery.data( elem, markDataKey, undefined, true ) ) {
+ jQuery.removeData( elem, deferDataKey, true );
+ defer.resolve();
+ }
+ }, 0 );
+ }
+}
+
+jQuery.extend({
+
+ _mark: function( elem, type ) {
+ if ( elem ) {
+ type = (type || "fx") + "mark";
+ jQuery.data( elem, type, (jQuery.data(elem,type,undefined,true) || 0) + 1, true );
}
+ },
- return q;
+ _unmark: function( force, elem, type ) {
+ if ( force !== true ) {
+ type = elem;
+ elem = force;
+ force = false;
+ }
+ if ( elem ) {
+ type = type || "fx";
+ var key = type + "mark",
+ count = force ? 0 : ( (jQuery.data( elem, key, undefined, true) || 1 ) - 1 );
+ if ( count ) {
+ jQuery.data( elem, key, count, true );
+ } else {
+ jQuery.removeData( elem, key, true );
+ handleQueueMarkDefer( elem, type, "mark" );
+ }
+ }
+ },
+
+ queue: function( elem, type, data ) {
+ if ( elem ) {
+ type = (type || "fx") + "queue";
+ var q = jQuery.data( elem, type, undefined, true );
+ // Speed up dequeue by getting out quickly if this is just a lookup
+ if ( data ) {
+ if ( !q || jQuery.isArray(data) ) {
+ q = jQuery.data( elem, type, jQuery.makeArray(data), true );
+ } else {
+ q.push( data );
+ }
+ }
+ return q || [];
+ }
},
dequeue: function( elem, type ) {
type = type || "fx";
- var queue = jQuery.queue( elem, type ), fn = queue.shift();
+ var queue = jQuery.queue( elem, type ),
+ fn = queue.shift(),
+ defer;
// If the fx queue is dequeued, always remove the progress sentinel
if ( fn === "inprogress" ) {
@@ -1158,6 +1858,11 @@ jQuery.extend({
jQuery.dequeue(elem, type);
});
}
+
+ if ( !queue.length ) {
+ jQuery.removeData( elem, type + "queue", true );
+ handleQueueMarkDefer( elem, type, "queue" );
+ }
}
});
@@ -1171,7 +1876,7 @@ jQuery.fn.extend({
if ( data === undefined ) {
return jQuery.queue( this[0], type );
}
- return this.each(function( i, elem ) {
+ return this.each(function() {
var queue = jQuery.queue( this, type, data );
if ( type === "fx" && queue[0] !== "inprogress" ) {
@@ -1184,7 +1889,6 @@ jQuery.fn.extend({
jQuery.dequeue( this, type );
});
},
-
// Based off of the plugin by Clint Helfers, with permission.
// http://blindsignals.com/index.php/2009/07/jquery-delay/
delay: function( time, type ) {
@@ -1198,57 +1902,108 @@ jQuery.fn.extend({
}, time );
});
},
-
clearQueue: function( type ) {
return this.queue( type || "fx", [] );
+ },
+ // Get a promise resolved when queues of a certain type
+ // are emptied (fx is the type by default)
+ promise: function( type, object ) {
+ if ( typeof type !== "string" ) {
+ object = type;
+ type = undefined;
+ }
+ type = type || "fx";
+ var defer = jQuery.Deferred(),
+ elements = this,
+ i = elements.length,
+ count = 1,
+ deferDataKey = type + "defer",
+ queueDataKey = type + "queue",
+ markDataKey = type + "mark",
+ tmp;
+ function resolve() {
+ if ( !( --count ) ) {
+ defer.resolveWith( elements, [ elements ] );
+ }
+ }
+ while( i-- ) {
+ if (( tmp = jQuery.data( elements[ i ], deferDataKey, undefined, true ) ||
+ ( jQuery.data( elements[ i ], queueDataKey, undefined, true ) ||
+ jQuery.data( elements[ i ], markDataKey, undefined, true ) ) &&
+ jQuery.data( elements[ i ], deferDataKey, jQuery._Deferred(), true ) )) {
+ count++;
+ tmp.done( resolve );
+ }
+ }
+ resolve();
+ return defer.promise();
}
});
-var rclass = /[\n\t]/g,
+
+
+
+
+var rclass = /[\n\t\r]/g,
rspace = /\s+/,
rreturn = /\r/g,
- rspecialurl = /href|src|style/,
- rtype = /(button|input)/i,
- rfocusable = /(button|input|object|select|textarea)/i,
- rclickable = /^(a|area)$/i,
- rradiocheck = /radio|checkbox/;
+ rtype = /^(?:button|input)$/i,
+ rfocusable = /^(?:button|input|object|select|textarea)$/i,
+ rclickable = /^a(?:rea)?$/i,
+ rboolean = /^(?:autofocus|autoplay|async|checked|controls|defer|disabled|hidden|loop|multiple|open|readonly|required|scoped|selected)$/i,
+ nodeHook, boolHook;
jQuery.fn.extend({
attr: function( name, value ) {
- return access( this, name, value, true, jQuery.attr );
+ return jQuery.access( this, name, value, true, jQuery.attr );
},
- removeAttr: function( name, fn ) {
- return this.each(function(){
- jQuery.attr( this, name, "" );
- if ( this.nodeType === 1 ) {
- this.removeAttribute( name );
- }
+ removeAttr: function( name ) {
+ return this.each(function() {
+ jQuery.removeAttr( this, name );
+ });
+ },
+
+ prop: function( name, value ) {
+ return jQuery.access( this, name, value, true, jQuery.prop );
+ },
+
+ removeProp: function( name ) {
+ name = jQuery.propFix[ name ] || name;
+ return this.each(function() {
+ // try/catch handles cases where IE balks (such as removing a property on window)
+ try {
+ this[ name ] = undefined;
+ delete this[ name ];
+ } catch( e ) {}
});
},
addClass: function( value ) {
- if ( jQuery.isFunction(value) ) {
- return this.each(function(i) {
- var self = jQuery(this);
- self.addClass( value.call(this, i, self.attr("class")) );
+ var classNames, i, l, elem,
+ setClass, c, cl;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).addClass( value.call(this, j, this.className) );
});
}
if ( value && typeof value === "string" ) {
- var classNames = (value || "").split( rspace );
+ classNames = value.split( rspace );
- for ( var i = 0, l = this.length; i < l; i++ ) {
- var elem = this[i];
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ elem = this[ i ];
if ( elem.nodeType === 1 ) {
- if ( !elem.className ) {
+ if ( !elem.className && classNames.length === 1 ) {
elem.className = value;
} else {
- var className = " " + elem.className + " ", setClass = elem.className;
- for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
- if ( className.indexOf( " " + classNames[c] + " " ) < 0 ) {
- setClass += " " + classNames[c];
+ setClass = " " + elem.className + " ";
+
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+ if ( !~setClass.indexOf( " " + classNames[ c ] + " " ) ) {
+ setClass += classNames[ c ] + " ";
}
}
elem.className = jQuery.trim( setClass );
@@ -1261,24 +2016,25 @@ jQuery.fn.extend({
},
removeClass: function( value ) {
- if ( jQuery.isFunction(value) ) {
- return this.each(function(i) {
- var self = jQuery(this);
- self.removeClass( value.call(this, i, self.attr("class")) );
+ var classNames, i, l, elem, className, c, cl;
+
+ if ( jQuery.isFunction( value ) ) {
+ return this.each(function( j ) {
+ jQuery( this ).removeClass( value.call(this, j, this.className) );
});
}
if ( (value && typeof value === "string") || value === undefined ) {
- var classNames = (value || "").split(rspace);
+ classNames = (value || "").split( rspace );
- for ( var i = 0, l = this.length; i < l; i++ ) {
- var elem = this[i];
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ elem = this[ i ];
if ( elem.nodeType === 1 && elem.className ) {
if ( value ) {
- var className = (" " + elem.className + " ").replace(rclass, " ");
- for ( var c = 0, cl = classNames.length; c < cl; c++ ) {
- className = className.replace(" " + classNames[c] + " ", " ");
+ className = (" " + elem.className + " ").replace( rclass, " " );
+ for ( c = 0, cl = classNames.length; c < cl; c++ ) {
+ className = className.replace(" " + classNames[ c ] + " ", " ");
}
elem.className = jQuery.trim( className );
@@ -1293,19 +2049,21 @@ jQuery.fn.extend({
},
toggleClass: function( value, stateVal ) {
- var type = typeof value, isBool = typeof stateVal === "boolean";
+ var type = typeof value,
+ isBool = typeof stateVal === "boolean";
if ( jQuery.isFunction( value ) ) {
- return this.each(function(i) {
- var self = jQuery(this);
- self.toggleClass( value.call(this, i, self.attr("class"), stateVal), stateVal );
+ return this.each(function( i ) {
+ jQuery( this ).toggleClass( value.call(this, i, this.className, stateVal), stateVal );
});
}
return this.each(function() {
if ( type === "string" ) {
// toggle individual class names
- var className, i = 0, self = jQuery(this),
+ var className,
+ i = 0,
+ self = jQuery( this ),
state = stateVal,
classNames = value.split( rspace );
@@ -1318,11 +2076,11 @@ jQuery.fn.extend({
} else if ( type === "undefined" || type === "boolean" ) {
if ( this.className ) {
// store className if set
- jQuery.data( this, "__className__", this.className );
+ jQuery._data( this, "__className__", this.className );
}
// toggle whole className
- this.className = this.className || value === false ? "" : jQuery.data( this, "__className__" ) || "";
+ this.className = this.className || value === false ? "" : jQuery._data( this, "__className__" ) || "";
}
});
},
@@ -1330,7 +2088,7 @@ jQuery.fn.extend({
hasClass: function( selector ) {
var className = " " + selector + " ";
for ( var i = 0, l = this.length; i < l; i++ ) {
- if ( (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
+ if ( this[i].nodeType === 1 && (" " + this[i].className + " ").replace(rclass, " ").indexOf( className ) > -1 ) {
return true;
}
}
@@ -1339,102 +2097,132 @@ jQuery.fn.extend({
},
val: function( value ) {
- if ( value === undefined ) {
- var elem = this[0];
-
+ var hooks, ret,
+ elem = this[0];
+
+ if ( !arguments.length ) {
if ( elem ) {
- if ( jQuery.nodeName( elem, "option" ) ) {
- return (elem.attributes.value || {}).specified ? elem.value : elem.text;
- }
-
- // We need to handle select boxes special
- if ( jQuery.nodeName( elem, "select" ) ) {
- var index = elem.selectedIndex,
- values = [],
- options = elem.options,
- one = elem.type === "select-one";
-
- // Nothing was selected
- if ( index < 0 ) {
- return null;
- }
-
- // Loop through all the selected options
- for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
- var option = options[ i ];
+ hooks = jQuery.valHooks[ elem.nodeName.toLowerCase() ] || jQuery.valHooks[ elem.type ];
- if ( option.selected ) {
- // Get the specifc value for the option
- value = jQuery(option).val();
-
- // We don't need an array for one selects
- if ( one ) {
- return value;
- }
-
- // Multi-Selects return an array
- values.push( value );
- }
- }
-
- return values;
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, "value" )) !== undefined ) {
+ return ret;
}
- // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
- if ( rradiocheck.test( elem.type ) && !jQuery.support.checkOn ) {
- return elem.getAttribute("value") === null ? "on" : elem.value;
- }
-
-
- // Everything else, we just grab the value
- return (elem.value || "").replace(rreturn, "");
+ ret = elem.value;
+ return typeof ret === "string" ?
+ // handle most common string cases
+ ret.replace(rreturn, "") :
+ // handle cases where value is null/undef or number
+ ret == null ? "" : ret;
}
return undefined;
}
- var isFunction = jQuery.isFunction(value);
+ var isFunction = jQuery.isFunction( value );
- return this.each(function(i) {
- var self = jQuery(this), val = value;
+ return this.each(function( i ) {
+ var self = jQuery(this), val;
if ( this.nodeType !== 1 ) {
return;
}
if ( isFunction ) {
- val = value.call(this, i, self.val());
+ val = value.call( this, i, self.val() );
+ } else {
+ val = value;
}
- // Typecast each time if the value is a Function and the appended
- // value is therefore different each time.
- if ( typeof val === "number" ) {
+ // Treat null/undefined as ""; convert numbers to string
+ if ( val == null ) {
+ val = "";
+ } else if ( typeof val === "number" ) {
val += "";
+ } else if ( jQuery.isArray( val ) ) {
+ val = jQuery.map(val, function ( value ) {
+ return value == null ? "" : value + "";
+ });
+ }
+
+ hooks = jQuery.valHooks[ this.nodeName.toLowerCase() ] || jQuery.valHooks[ this.type ];
+
+ // If set returns undefined, fall back to normal setting
+ if ( !hooks || !("set" in hooks) || hooks.set( this, val, "value" ) === undefined ) {
+ this.value = val;
+ }
+ });
+ }
+});
+
+jQuery.extend({
+ valHooks: {
+ option: {
+ get: function( elem ) {
+ // attributes.value is undefined in Blackberry 4.7 but
+ // uses .value. See #6932
+ var val = elem.attributes.value;
+ return !val || val.specified ? elem.value : elem.text;
}
+ },
+ select: {
+ get: function( elem ) {
+ var value,
+ index = elem.selectedIndex,
+ values = [],
+ options = elem.options,
+ one = elem.type === "select-one";
+
+ // Nothing was selected
+ if ( index < 0 ) {
+ return null;
+ }
+
+ // Loop through all the selected options
+ for ( var i = one ? index : 0, max = one ? index + 1 : options.length; i < max; i++ ) {
+ var option = options[ i ];
+
+ // Don't return options that are disabled or in a disabled optgroup
+ if ( option.selected && (jQuery.support.optDisabled ? !option.disabled : option.getAttribute("disabled") === null) &&
+ (!option.parentNode.disabled || !jQuery.nodeName( option.parentNode, "optgroup" )) ) {
+
+ // Get the specific value for the option
+ value = jQuery( option ).val();
+
+ // We don't need an array for one selects
+ if ( one ) {
+ return value;
+ }
+
+ // Multi-Selects return an array
+ values.push( value );
+ }
+ }
+
+ // Fixes Bug #2551 -- select.val() broken in IE after form.reset()
+ if ( one && !values.length && options.length ) {
+ return jQuery( options[ index ] ).val();
+ }
- if ( jQuery.isArray(val) && rradiocheck.test( this.type ) ) {
- this.checked = jQuery.inArray( self.val(), val ) >= 0;
+ return values;
+ },
- } else if ( jQuery.nodeName( this, "select" ) ) {
- var values = jQuery.makeArray(val);
+ set: function( elem, value ) {
+ var values = jQuery.makeArray( value );
- jQuery( "option", this ).each(function() {
+ jQuery(elem).find("option").each(function() {
this.selected = jQuery.inArray( jQuery(this).val(), values ) >= 0;
});
if ( !values.length ) {
- this.selectedIndex = -1;
+ elem.selectedIndex = -1;
}
-
- } else {
- this.value = val;
+ return values;
}
- });
- }
-});
+ }
+ },
-jQuery.extend({
attrFn: {
val: true,
css: true,
@@ -1445,106 +2233,349 @@ jQuery.extend({
height: true,
offset: true
},
-
+
+ attrFix: {
+ // Always normalize to ensure hook usage
+ tabindex: "tabIndex"
+ },
+
attr: function( elem, name, value, pass ) {
- // don't set attributes on text and comment nodes
- if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
+ var nType = elem.nodeType;
+
+ // don't get/set attributes on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
return undefined;
}
if ( pass && name in jQuery.attrFn ) {
- return jQuery(elem)[name](value);
+ return jQuery( elem )[ name ]( value );
}
- var notxml = elem.nodeType !== 1 || !jQuery.isXMLDoc( elem ),
- // Whether we are setting (or getting)
- set = value !== undefined;
+ // Fallback to prop when attributes are not supported
+ if ( !("getAttribute" in elem) ) {
+ return jQuery.prop( elem, name, value );
+ }
+
+ var ret, hooks,
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ // Normalize the name if needed
+ if ( notxml ) {
+ name = jQuery.attrFix[ name ] || name;
+
+ hooks = jQuery.attrHooks[ name ];
- // Try to normalize/fix the name
- name = notxml && jQuery.props[ name ] || name;
+ if ( !hooks ) {
+ // Use boolHook for boolean attributes
+ if ( rboolean.test( name ) ) {
+ hooks = boolHook;
+
+ // Use nodeHook if available( IE6/7 )
+ } else if ( nodeHook ) {
+ hooks = nodeHook;
+ }
+ }
+ }
+
+ if ( value !== undefined ) {
+
+ if ( value === null ) {
+ jQuery.removeAttr( elem, name );
+ return undefined;
- // Only do all the following if this is a node (faster for style)
+ } else if ( hooks && "set" in hooks && notxml && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ elem.setAttribute( name, "" + value );
+ return value;
+ }
+
+ } else if ( hooks && "get" in hooks && notxml && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+
+ ret = elem.getAttribute( name );
+
+ // Non-existent attributes return null, we normalize to undefined
+ return ret === null ?
+ undefined :
+ ret;
+ }
+ },
+
+ removeAttr: function( elem, name ) {
+ var propName;
if ( elem.nodeType === 1 ) {
- // These attributes require special treatment
- var special = rspecialurl.test( name );
-
- // Safari mis-reports the default selected property of an option
- // Accessing the parent's selectedIndex property fixes it
- if ( name === "selected" && !jQuery.support.optSelected ) {
- var parent = elem.parentNode;
- if ( parent ) {
- parent.selectedIndex;
-
- // Make sure that it also works with optgroups, see #5701
- if ( parent.parentNode ) {
- parent.parentNode.selectedIndex;
+ name = jQuery.attrFix[ name ] || name;
+
+ jQuery.attr( elem, name, "" );
+ elem.removeAttribute( name );
+
+ // Set corresponding property to false for boolean attributes
+ if ( rboolean.test( name ) && (propName = jQuery.propFix[ name ] || name) in elem ) {
+ elem[ propName ] = false;
+ }
+ }
+ },
+
+ attrHooks: {
+ type: {
+ set: function( elem, value ) {
+ // We can't allow the type property to be changed (since it causes problems in IE)
+ if ( rtype.test( elem.nodeName ) && elem.parentNode ) {
+ jQuery.error( "type property can't be changed" );
+ } else if ( !jQuery.support.radioValue && value === "radio" && jQuery.nodeName(elem, "input") ) {
+ // Setting the type on a radio button after the value resets the value in IE6-9
+ // Reset value to it's default in case type is set after value
+ // This is for element creation
+ var val = elem.value;
+ elem.setAttribute( "type", value );
+ if ( val ) {
+ elem.value = val;
}
+ return value;
}
}
+ },
+ // Use the value property for back compat
+ // Use the nodeHook for button elements in IE6/7 (#1954)
+ value: {
+ get: function( elem, name ) {
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+ return nodeHook.get( elem, name );
+ }
+ return name in elem ?
+ elem.value :
+ null;
+ },
+ set: function( elem, value, name ) {
+ if ( nodeHook && jQuery.nodeName( elem, "button" ) ) {
+ return nodeHook.set( elem, value, name );
+ }
+ // Does not return so that setAttribute is also used
+ elem.value = value;
+ }
+ }
+ },
- // If applicable, access the attribute via the DOM 0 way
- if ( name in elem && notxml && !special ) {
- if ( set ) {
- // We can't allow the type property to be changed (since it causes problems in IE)
- if ( name === "type" && rtype.test( elem.nodeName ) && elem.parentNode ) {
- jQuery.error( "type property can't be changed" );
- }
+ propFix: {
+ tabindex: "tabIndex",
+ readonly: "readOnly",
+ "for": "htmlFor",
+ "class": "className",
+ maxlength: "maxLength",
+ cellspacing: "cellSpacing",
+ cellpadding: "cellPadding",
+ rowspan: "rowSpan",
+ colspan: "colSpan",
+ usemap: "useMap",
+ frameborder: "frameBorder",
+ contenteditable: "contentEditable"
+ },
+
+ prop: function( elem, name, value ) {
+ var nType = elem.nodeType;
- elem[ name ] = value;
- }
+ // don't get/set properties on text, comment and attribute nodes
+ if ( !elem || nType === 3 || nType === 8 || nType === 2 ) {
+ return undefined;
+ }
- // browsers index elements by id/name on forms, give priority to attributes.
- if ( jQuery.nodeName( elem, "form" ) && elem.getAttributeNode(name) ) {
- return elem.getAttributeNode( name ).nodeValue;
- }
+ var ret, hooks,
+ notxml = nType !== 1 || !jQuery.isXMLDoc( elem );
+
+ if ( notxml ) {
+ // Fix name and attach hooks
+ name = jQuery.propFix[ name ] || name;
+ hooks = jQuery.propHooks[ name ];
+ }
+ if ( value !== undefined ) {
+ if ( hooks && "set" in hooks && (ret = hooks.set( elem, value, name )) !== undefined ) {
+ return ret;
+
+ } else {
+ return (elem[ name ] = value);
+ }
+
+ } else {
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, name )) !== null ) {
+ return ret;
+
+ } else {
+ return elem[ name ];
+ }
+ }
+ },
+
+ propHooks: {
+ tabIndex: {
+ get: function( elem ) {
// elem.tabIndex doesn't always return the correct value when it hasn't been explicitly set
// http://fluidproject.org/blog/2008/01/09/getting-setting-and-removing-tabindex-values-with-javascript/
- if ( name === "tabIndex" ) {
- var attributeNode = elem.getAttributeNode( "tabIndex" );
+ var attributeNode = elem.getAttributeNode("tabindex");
- return attributeNode && attributeNode.specified ?
- attributeNode.value :
- rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
- 0 :
- undefined;
- }
+ return attributeNode && attributeNode.specified ?
+ parseInt( attributeNode.value, 10 ) :
+ rfocusable.test( elem.nodeName ) || rclickable.test( elem.nodeName ) && elem.href ?
+ 0 :
+ undefined;
+ }
+ }
+ }
+});
- return elem[ name ];
+// Add the tabindex propHook to attrHooks for back-compat
+jQuery.attrHooks.tabIndex = jQuery.propHooks.tabIndex;
+
+// Hook for boolean attributes
+boolHook = {
+ get: function( elem, name ) {
+ // Align boolean attributes with corresponding properties
+ // Fall back to attribute presence where some booleans are not supported
+ var attrNode;
+ return jQuery.prop( elem, name ) === true || ( attrNode = elem.getAttributeNode( name ) ) && attrNode.nodeValue !== false ?
+ name.toLowerCase() :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ var propName;
+ if ( value === false ) {
+ // Remove boolean attributes when set to false
+ jQuery.removeAttr( elem, name );
+ } else {
+ // value is true since we know at this point it's type boolean and not false
+ // Set boolean attributes to the same name and set the DOM property
+ propName = jQuery.propFix[ name ] || name;
+ if ( propName in elem ) {
+ // Only set the IDL specifically if it already exists on the element
+ elem[ propName ] = true;
}
- if ( !jQuery.support.style && notxml && name === "style" ) {
- if ( set ) {
- elem.style.cssText = "" + value;
- }
+ elem.setAttribute( name, name.toLowerCase() );
+ }
+ return name;
+ }
+};
- return elem.style.cssText;
+// IE6/7 do not support getting/setting some attributes with get/setAttribute
+if ( !jQuery.support.getSetAttribute ) {
+
+ // Use this for any attribute in IE6/7
+ // This fixes almost every IE6/7 issue
+ nodeHook = jQuery.valHooks.button = {
+ get: function( elem, name ) {
+ var ret;
+ ret = elem.getAttributeNode( name );
+ // Return undefined if nodeValue is empty string
+ return ret && ret.nodeValue !== "" ?
+ ret.nodeValue :
+ undefined;
+ },
+ set: function( elem, value, name ) {
+ // Set the existing or create a new attribute node
+ var ret = elem.getAttributeNode( name );
+ if ( !ret ) {
+ ret = document.createAttribute( name );
+ elem.setAttributeNode( ret );
}
+ return (ret.nodeValue = value + "");
+ }
+ };
- if ( set ) {
- // convert the value to a string (all browsers do this but IE) see #1070
- elem.setAttribute( name, "" + value );
+ // Set width and height to auto instead of 0 on empty string( Bug #8150 )
+ // This is for removals
+ jQuery.each([ "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ set: function( elem, value ) {
+ if ( value === "" ) {
+ elem.setAttribute( name, "auto" );
+ return value;
+ }
}
+ });
+ });
+}
- var attr = !jQuery.support.hrefNormalized && notxml && special ?
- // Some attributes require a special call on IE
- elem.getAttribute( name, 2 ) :
- elem.getAttribute( name );
- // Non-existent attributes return null, we normalize to undefined
- return attr === null ? undefined : attr;
+// Some attributes require a special call on IE
+if ( !jQuery.support.hrefNormalized ) {
+ jQuery.each([ "href", "src", "width", "height" ], function( i, name ) {
+ jQuery.attrHooks[ name ] = jQuery.extend( jQuery.attrHooks[ name ], {
+ get: function( elem ) {
+ var ret = elem.getAttribute( name, 2 );
+ return ret === null ? undefined : ret;
+ }
+ });
+ });
+}
+
+if ( !jQuery.support.style ) {
+ jQuery.attrHooks.style = {
+ get: function( elem ) {
+ // Return undefined in the case of empty string
+ // Normalize to lowercase since IE uppercases css property names
+ return elem.style.cssText.toLowerCase() || undefined;
+ },
+ set: function( elem, value ) {
+ return (elem.style.cssText = "" + value);
}
+ };
+}
- // elem is actually elem.style ... set the style
- // Using attr for specific style information is now deprecated. Use style instead.
- return jQuery.style( elem, name, value );
- }
+// Safari mis-reports the default selected property of an option
+// Accessing the parent's selectedIndex property fixes it
+if ( !jQuery.support.optSelected ) {
+ jQuery.propHooks.selected = jQuery.extend( jQuery.propHooks.selected, {
+ get: function( elem ) {
+ var parent = elem.parentNode;
+
+ if ( parent ) {
+ parent.selectedIndex;
+
+ // Make sure that it also works with optgroups, see #5701
+ if ( parent.parentNode ) {
+ parent.parentNode.selectedIndex;
+ }
+ }
+ return null;
+ }
+ });
+}
+
+// Radios and checkboxes getter/setter
+if ( !jQuery.support.checkOn ) {
+ jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = {
+ get: function( elem ) {
+ // Handle the case where in Webkit "" is returned instead of "on" if a value isn't specified
+ return elem.getAttribute("value") === null ? "on" : elem.value;
+ }
+ };
+ });
+}
+jQuery.each([ "radio", "checkbox" ], function() {
+ jQuery.valHooks[ this ] = jQuery.extend( jQuery.valHooks[ this ], {
+ set: function( elem, value ) {
+ if ( jQuery.isArray( value ) ) {
+ return (elem.checked = jQuery.inArray( jQuery(elem).val(), value ) >= 0);
+ }
+ }
+ });
});
+
+
+
+
var rnamespaces = /\.(.*)$/,
+ rformElems = /^(?:textarea|input|select)$/i,
+ rperiod = /\./g,
+ rspaces = / /g,
+ rescape = /[^\w\s.|`]/g,
fcleanup = function( nm ) {
- return nm.replace(/[^\w\s\.\|`]/g, function( ch ) {
- return "\\" + ch;
- });
+ return nm.replace(rescape, "\\$&");
};
/*
@@ -1561,10 +2592,11 @@ jQuery.event = {
return;
}
- // For whatever reason, IE has trouble passing the window object
- // around, causing it to be cloned in the process
- if ( elem.setInterval && ( elem !== window && !elem.frameElement ) ) {
- elem = window;
+ if ( handler === false ) {
+ handler = returnFalse;
+ } else if ( !handler ) {
+ // Fixes bug #7229. Fix recommended by jdalton
+ return;
}
var handleObjIn, handleObj;
@@ -1580,7 +2612,7 @@ jQuery.event = {
}
// Init the element's event structure
- var elemData = jQuery.data( elem );
+ var elemData = jQuery._data( elem );
// If no elemData is found then we must be trying to bind to one of the
// banned noData elements
@@ -1588,14 +2620,18 @@ jQuery.event = {
return;
}
- var events = elemData.events = elemData.events || {},
- eventHandle = elemData.handle, eventHandle;
+ var events = elemData.events,
+ eventHandle = elemData.handle;
+
+ if ( !events ) {
+ elemData.events = events = {};
+ }
if ( !eventHandle ) {
- elemData.handle = eventHandle = function() {
- // Handle the second event of a trigger and when
- // an event is called after a page has unloaded
- return typeof jQuery !== "undefined" && !jQuery.event.triggered ?
+ elemData.handle = eventHandle = function( e ) {
+ // Discard the second event of a jQuery.event.trigger() and
+ // when an event is called after a page has unloaded
+ return typeof jQuery !== "undefined" && (!e || jQuery.event.triggered !== e.type) ?
jQuery.event.handle.apply( eventHandle.elem, arguments ) :
undefined;
};
@@ -1628,7 +2664,9 @@ jQuery.event = {
}
handleObj.type = type;
- handleObj.guid = handler.guid;
+ if ( !handleObj.guid ) {
+ handleObj.guid = handler.guid;
+ }
// Get the current list of functions bound to this event
var handlers = events[ type ],
@@ -1651,9 +2689,9 @@ jQuery.event = {
}
}
}
-
- if ( special.add ) {
- special.add.call( elem, handleObj );
+
+ if ( special.add ) {
+ special.add.call( elem, handleObj );
if ( !handleObj.handler.guid ) {
handleObj.handler.guid = handler.guid;
@@ -1663,7 +2701,7 @@ jQuery.event = {
// Add the function to the element's handler list
handlers.push( handleObj );
- // Keep track of which events have been used, for global triggering
+ // Keep track of which events have been used, for event optimization
jQuery.event.global[ type ] = true;
}
@@ -1680,8 +2718,12 @@ jQuery.event = {
return;
}
- var ret, type, fn, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
- elemData = jQuery.data( elem ),
+ if ( handler === false ) {
+ handler = returnFalse;
+ }
+
+ var ret, type, fn, j, i = 0, all, namespaces, namespace, special, eventType, handleObj, origType,
+ elemData = jQuery.hasData( elem ) && jQuery._data( elem ),
events = elemData && elemData.events;
if ( !elemData || !events ) {
@@ -1720,8 +2762,8 @@ jQuery.event = {
namespaces = type.split(".");
type = namespaces.shift();
- namespace = new RegExp("(^|\\.)" +
- jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)")
+ namespace = new RegExp("(^|\\.)" +
+ jQuery.map( namespaces.slice(0).sort(), fcleanup ).join("\\.(?:.*\\.)?") + "(\\.|$)");
}
eventType = events[ type ];
@@ -1731,7 +2773,7 @@ jQuery.event = {
}
if ( !handler ) {
- for ( var j = 0; j < eventType.length; j++ ) {
+ for ( j = 0; j < eventType.length; j++ ) {
handleObj = eventType[ j ];
if ( all || namespace.test( handleObj.namespace ) ) {
@@ -1745,7 +2787,7 @@ jQuery.event = {
special = jQuery.event.special[ type ] || {};
- for ( var j = pos || 0; j < eventType.length; j++ ) {
+ for ( j = pos || 0; j < eventType.length; j++ ) {
handleObj = eventType[ j ];
if ( handler.guid === handleObj.guid ) {
@@ -1769,7 +2811,7 @@ jQuery.event = {
// remove generic event handler if no more handlers exist
if ( eventType.length === 0 || pos != null && eventType.length === 1 ) {
if ( !special.teardown || special.teardown.call( elem, namespaces ) === false ) {
- removeEvent( elem, type, elemData.handle );
+ jQuery.removeEvent( elem, type, elemData.handle );
}
ret = null;
@@ -1788,175 +2830,196 @@ jQuery.event = {
delete elemData.handle;
if ( jQuery.isEmptyObject( elemData ) ) {
- jQuery.removeData( elem );
+ jQuery.removeData( elem, undefined, true );
}
}
},
+
+ // Events that are safe to short-circuit if no handlers are attached.
+ // Native DOM events should not be added, they may have inline handlers.
+ customEvent: {
+ "getData": true,
+ "setData": true,
+ "changeData": true
+ },
- // bubbling is internal
- trigger: function( event, data, elem /*, bubbling */ ) {
+ trigger: function( event, data, elem, onlyHandlers ) {
// Event object or event type
var type = event.type || event,
- bubbling = arguments[3];
+ namespaces = [],
+ exclusive;
- if ( !bubbling ) {
- event = typeof event === "object" ?
- // jQuery.Event object
- event[expando] ? event :
- // Object literal
- jQuery.extend( jQuery.Event(type), event ) :
- // Just the event type (string)
- jQuery.Event(type);
+ if ( type.indexOf("!") >= 0 ) {
+ // Exclusive events trigger only for the exact event (no namespaces)
+ type = type.slice(0, -1);
+ exclusive = true;
+ }
- if ( type.indexOf("!") >= 0 ) {
- event.type = type = type.slice(0, -1);
- event.exclusive = true;
- }
+ if ( type.indexOf(".") >= 0 ) {
+ // Namespaced trigger; create a regexp to match event type in handle()
+ namespaces = type.split(".");
+ type = namespaces.shift();
+ namespaces.sort();
+ }
- // Handle a global trigger
- if ( !elem ) {
- // Don't bubble custom events when global (to avoid too much overhead)
- event.stopPropagation();
-
- // Only trigger if we've ever bound an event for it
- if ( jQuery.event.global[ type ] ) {
- jQuery.each( jQuery.cache, function() {
- if ( this.events && this.events[type] ) {
- jQuery.event.trigger( event, data, this.handle.elem );
- }
- });
- }
- }
+ if ( (!elem || jQuery.event.customEvent[ type ]) && !jQuery.event.global[ type ] ) {
+ // No jQuery handlers for this event type, and it can't have inline handlers
+ return;
+ }
- // Handle triggering a single element
+ // Caller can pass in an Event, Object, or just an event type string
+ event = typeof event === "object" ?
+ // jQuery.Event object
+ event[ jQuery.expando ] ? event :
+ // Object literal
+ new jQuery.Event( type, event ) :
+ // Just the event type (string)
+ new jQuery.Event( type );
- // don't do events on text and comment nodes
- if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
- return undefined;
- }
+ event.type = type;
+ event.exclusive = exclusive;
+ event.namespace = namespaces.join(".");
+ event.namespace_re = new RegExp("(^|\\.)" + namespaces.join("\\.(?:.*\\.)?") + "(\\.|$)");
+
+ // triggerHandler() and global events don't bubble or run the default action
+ if ( onlyHandlers || !elem ) {
+ event.preventDefault();
+ event.stopPropagation();
+ }
- // Clean up in case it is reused
- event.result = undefined;
- event.target = elem;
+ // Handle a global trigger
+ if ( !elem ) {
+ // TODO: Stop taunting the data cache; remove global events and always attach to document
+ jQuery.each( jQuery.cache, function() {
+ // internalKey variable is just used to make it easier to find
+ // and potentially change this stuff later; currently it just
+ // points to jQuery.expando
+ var internalKey = jQuery.expando,
+ internalCache = this[ internalKey ];
+ if ( internalCache && internalCache.events && internalCache.events[ type ] ) {
+ jQuery.event.trigger( event, data, internalCache.handle.elem );
+ }
+ });
+ return;
+ }
- // Clone the incoming data, if any
- data = jQuery.makeArray( data );
- data.unshift( event );
+ // Don't do events on text and comment nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 8 ) {
+ return;
}
- event.currentTarget = elem;
+ // Clean up the event in case it is being reused
+ event.result = undefined;
+ event.target = elem;
- // Trigger the event, it is assumed that "handle" is a function
- var handle = jQuery.data( elem, "handle" );
- if ( handle ) {
- handle.apply( elem, data );
- }
+ // Clone any incoming data and prepend the event, creating the handler arg list
+ data = data != null ? jQuery.makeArray( data ) : [];
+ data.unshift( event );
- var parent = elem.parentNode || elem.ownerDocument;
+ var cur = elem,
+ // IE doesn't like method names with a colon (#3533, #8272)
+ ontype = type.indexOf(":") < 0 ? "on" + type : "";
- // Trigger an inline bound script
- try {
- if ( !(elem && elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()]) ) {
- if ( elem[ "on" + type ] && elem[ "on" + type ].apply( elem, data ) === false ) {
- event.result = false;
- }
+ // Fire event on the current element, then bubble up the DOM tree
+ do {
+ var handle = jQuery._data( cur, "handle" );
+
+ event.currentTarget = cur;
+ if ( handle ) {
+ handle.apply( cur, data );
}
- // prevent IE from throwing an error for some elements with some event types, see #3533
- } catch (e) {}
+ // Trigger an inline bound script
+ if ( ontype && jQuery.acceptData( cur ) && cur[ ontype ] && cur[ ontype ].apply( cur, data ) === false ) {
+ event.result = false;
+ event.preventDefault();
+ }
- if ( !event.isPropagationStopped() && parent ) {
- jQuery.event.trigger( event, data, parent, true );
+ // Bubble up to document, then to window
+ cur = cur.parentNode || cur.ownerDocument || cur === event.target.ownerDocument && window;
+ } while ( cur && !event.isPropagationStopped() );
- } else if ( !event.isDefaultPrevented() ) {
- var target = event.target, old,
- isClick = jQuery.nodeName(target, "a") && type === "click",
+ // If nobody prevented the default action, do it now
+ if ( !event.isDefaultPrevented() ) {
+ var old,
special = jQuery.event.special[ type ] || {};
- if ( (!special._default || special._default.call( elem, event ) === false) &&
- !isClick && !(target && target.nodeName && jQuery.noData[target.nodeName.toLowerCase()]) ) {
+ if ( (!special._default || special._default.call( elem.ownerDocument, event ) === false) &&
+ !(type === "click" && jQuery.nodeName( elem, "a" )) && jQuery.acceptData( elem ) ) {
+ // Call a native DOM method on the target with the same name name as the event.
+ // Can't use an .isFunction)() check here because IE6/7 fails that test.
+ // IE<9 dies on focus to hidden element (#1486), may want to revisit a try/catch.
try {
- if ( target[ type ] ) {
- // Make sure that we don't accidentally re-trigger the onFOO events
- old = target[ "on" + type ];
+ if ( ontype && elem[ type ] ) {
+ // Don't re-trigger an onFOO event when we call its FOO() method
+ old = elem[ ontype ];
if ( old ) {
- target[ "on" + type ] = null;
+ elem[ ontype ] = null;
}
- jQuery.event.triggered = true;
- target[ type ]();
+ jQuery.event.triggered = type;
+ elem[ type ]();
}
-
- // prevent IE from throwing an error for some elements with some event types, see #3533
- } catch (e) {}
+ } catch ( ieError ) {}
if ( old ) {
- target[ "on" + type ] = old;
+ elem[ ontype ] = old;
}
- jQuery.event.triggered = false;
+ jQuery.event.triggered = undefined;
}
}
+
+ return event.result;
},
handle: function( event ) {
- var all, handlers, namespaces, namespace, events;
-
- event = arguments[0] = jQuery.event.fix( event || window.event );
+ event = jQuery.event.fix( event || window.event );
+ // Snapshot the handlers list since a called handler may add/remove events.
+ var handlers = ((jQuery._data( this, "events" ) || {})[ event.type ] || []).slice(0),
+ run_all = !event.exclusive && !event.namespace,
+ args = Array.prototype.slice.call( arguments, 0 );
+
+ // Use the fix-ed Event rather than the (read-only) native event
+ args[0] = event;
event.currentTarget = this;
- // Namespaced event handlers
- all = event.type.indexOf(".") < 0 && !event.exclusive;
-
- if ( !all ) {
- namespaces = event.type.split(".");
- event.type = namespaces.shift();
- namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)");
- }
-
- var events = jQuery.data(this, "events"), handlers = events[ event.type ];
-
- if ( events && handlers ) {
- // Clone the handlers to prevent manipulation
- handlers = handlers.slice(0);
-
- for ( var j = 0, l = handlers.length; j < l; j++ ) {
- var handleObj = handlers[ j ];
-
- // Filter the functions by class
- if ( all || namespace.test( handleObj.namespace ) ) {
- // Pass in a reference to the handler function itself
- // So that we can later remove it
- event.handler = handleObj.handler;
- event.data = handleObj.data;
- event.handleObj = handleObj;
-
- var ret = handleObj.handler.apply( this, arguments );
-
- if ( ret !== undefined ) {
- event.result = ret;
- if ( ret === false ) {
- event.preventDefault();
- event.stopPropagation();
- }
+ for ( var j = 0, l = handlers.length; j < l; j++ ) {
+ var handleObj = handlers[ j ];
+
+ // Triggered event must 1) be non-exclusive and have no namespace, or
+ // 2) have namespace(s) a subset or equal to those in the bound event.
+ if ( run_all || event.namespace_re.test( handleObj.namespace ) ) {
+ // Pass in a reference to the handler function itself
+ // So that we can later remove it
+ event.handler = handleObj.handler;
+ event.data = handleObj.data;
+ event.handleObj = handleObj;
+
+ var ret = handleObj.handler.apply( this, args );
+
+ if ( ret !== undefined ) {
+ event.result = ret;
+ if ( ret === false ) {
+ event.preventDefault();
+ event.stopPropagation();
}
+ }
- if ( event.isImmediatePropagationStopped() ) {
- break;
- }
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
}
}
}
-
return event.result;
},
- props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY originalTarget pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
+ props: "altKey attrChange attrName bubbles button cancelable charCode clientX clientY ctrlKey currentTarget data detail eventPhase fromElement handler keyCode layerX layerY metaKey newValue offsetX offsetY pageX pageY prevValue relatedNode relatedTarget screenX screenY shiftKey srcElement target toElement view wheelDelta which".split(" "),
fix: function( event ) {
- if ( event[ expando ] ) {
+ if ( event[ jQuery.expando ] ) {
return event;
}
@@ -1972,7 +3035,8 @@ jQuery.event = {
// Fix target property, if necessary
if ( !event.target ) {
- event.target = event.srcElement || document; // Fixes #1925 where srcElement might not be defined either
+ // Fixes #1925 where srcElement might not be defined either
+ event.target = event.srcElement || document;
}
// check if target is a textnode (safari)
@@ -1987,14 +3051,17 @@ jQuery.event = {
// Calculate pageX/Y if missing and clientX/Y available
if ( event.pageX == null && event.clientX != null ) {
- var doc = document.documentElement, body = document.body;
+ var eventDocument = event.target.ownerDocument || document,
+ doc = eventDocument.documentElement,
+ body = eventDocument.body;
+
event.pageX = event.clientX + (doc && doc.scrollLeft || body && body.scrollLeft || 0) - (doc && doc.clientLeft || body && body.clientLeft || 0);
event.pageY = event.clientY + (doc && doc.scrollTop || body && body.scrollTop || 0) - (doc && doc.clientTop || body && body.clientTop || 0);
}
// Add which for key events
- if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) {
- event.which = event.charCode || event.keyCode;
+ if ( event.which == null && (event.charCode != null || event.keyCode != null) ) {
+ event.which = event.charCode != null ? event.charCode : event.keyCode;
}
// Add metaKey to non-Mac browsers (use ctrl for PC's and Meta for Macs)
@@ -2026,36 +3093,24 @@ jQuery.event = {
live: {
add: function( handleObj ) {
- jQuery.event.add( this, handleObj.origType, jQuery.extend({}, handleObj, {handler: liveHandler}) );
+ jQuery.event.add( this,
+ liveConvert( handleObj.origType, handleObj.selector ),
+ jQuery.extend({}, handleObj, {handler: liveHandler, guid: handleObj.handler.guid}) );
},
remove: function( handleObj ) {
- var remove = true,
- type = handleObj.origType.replace(rnamespaces, "");
-
- jQuery.each( jQuery.data(this, "events").live || [], function() {
- if ( type === this.origType.replace(rnamespaces, "") ) {
- remove = false;
- return false;
- }
- });
-
- if ( remove ) {
- jQuery.event.remove( this, handleObj.origType, liveHandler );
- }
+ jQuery.event.remove( this, liveConvert( handleObj.origType, handleObj.selector ), handleObj );
}
-
},
beforeunload: {
setup: function( data, namespaces, eventHandle ) {
// We only want to do this special case on windows
- if ( this.setInterval ) {
+ if ( jQuery.isWindow( this ) ) {
this.onbeforeunload = eventHandle;
}
-
- return false;
},
+
teardown: function( namespaces, eventHandle ) {
if ( this.onbeforeunload === eventHandle ) {
this.onbeforeunload = null;
@@ -2065,35 +3120,50 @@ jQuery.event = {
}
};
-var removeEvent = document.removeEventListener ?
+jQuery.removeEvent = document.removeEventListener ?
function( elem, type, handle ) {
- elem.removeEventListener( type, handle, false );
- } :
+ if ( elem.removeEventListener ) {
+ elem.removeEventListener( type, handle, false );
+ }
+ } :
function( elem, type, handle ) {
- elem.detachEvent( "on" + type, handle );
+ if ( elem.detachEvent ) {
+ elem.detachEvent( "on" + type, handle );
+ }
};
-jQuery.Event = function( src ) {
+jQuery.Event = function( src, props ) {
// Allow instantiation without the 'new' keyword
if ( !this.preventDefault ) {
- return new jQuery.Event( src );
+ return new jQuery.Event( src, props );
}
// Event object
if ( src && src.type ) {
this.originalEvent = src;
this.type = src.type;
+
+ // Events bubbling up the document may have been marked as prevented
+ // by a handler lower down the tree; reflect the correct value.
+ this.isDefaultPrevented = (src.defaultPrevented || src.returnValue === false ||
+ src.getPreventDefault && src.getPreventDefault()) ? returnTrue : returnFalse;
+
// Event type
} else {
this.type = src;
}
+ // Put explicitly provided properties onto the event object
+ if ( props ) {
+ jQuery.extend( this, props );
+ }
+
// timeStamp is buggy for some events on Firefox(#3843)
// So we won't rely on the native value
- this.timeStamp = now();
+ this.timeStamp = jQuery.now();
// Mark it as fixed
- this[ expando ] = true;
+ this[ jQuery.expando ] = true;
};
function returnFalse() {
@@ -2113,13 +3183,15 @@ jQuery.Event.prototype = {
if ( !e ) {
return;
}
-
+
// if preventDefault exists run it on the original event
if ( e.preventDefault ) {
e.preventDefault();
- }
+
// otherwise set the returnValue property of the original event to false (IE)
- e.returnValue = false;
+ } else {
+ e.returnValue = false;
+ }
},
stopPropagation: function() {
this.isPropagationStopped = returnTrue;
@@ -2147,27 +3219,27 @@ jQuery.Event.prototype = {
// Checks if an event happened on an element within another element
// Used in jQuery.event.special.mouseenter and mouseleave handlers
var withinElement = function( event ) {
+
// Check if mouse(over|out) are still within the same parent element
- var parent = event.relatedTarget;
+ var related = event.relatedTarget,
+ inside = false,
+ eventType = event.type;
- // Firefox sometimes assigns relatedTarget a XUL element
- // which we cannot access the parentNode property of
- try {
- // Traverse up the tree
- while ( parent && parent !== this ) {
- parent = parent.parentNode;
+ event.type = event.data;
+
+ if ( related !== this ) {
+
+ if ( related ) {
+ inside = jQuery.contains( this, related );
}
- if ( parent !== this ) {
- // set the correct event type
- event.type = event.data;
+ if ( !inside ) {
- // handle event if we actually just moused on to a non sub-element
jQuery.event.handle.apply( this, arguments );
- }
- // assuming we've left the element since we most likely mousedover a xul element
- } catch(e) { }
+ event.type = eventType;
+ }
+ }
},
// In case of event delegation, we only need to rename the event.type,
@@ -2197,20 +3269,23 @@ if ( !jQuery.support.submitBubbles ) {
jQuery.event.special.submit = {
setup: function( data, namespaces ) {
- if ( this.nodeName.toLowerCase() !== "form" ) {
+ if ( !jQuery.nodeName( this, "form" ) ) {
jQuery.event.add(this, "click.specialSubmit", function( e ) {
- var elem = e.target, type = elem.type;
+ // Avoid triggering error on non-existent type attribute in IE VML (#7071)
+ var elem = e.target,
+ type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : "";
if ( (type === "submit" || type === "image") && jQuery( elem ).closest("form").length ) {
- return trigger( "submit", this, arguments );
+ trigger( "submit", this, arguments );
}
});
-
+
jQuery.event.add(this, "keypress.specialSubmit", function( e ) {
- var elem = e.target, type = elem.type;
+ var elem = e.target,
+ type = jQuery.nodeName( elem, "input" ) || jQuery.nodeName( elem, "button" ) ? elem.type : "";
if ( (type === "text" || type === "password") && jQuery( elem ).closest("form").length && e.keyCode === 13 ) {
- return trigger( "submit", this, arguments );
+ trigger( "submit", this, arguments );
}
});
@@ -2229,12 +3304,11 @@ if ( !jQuery.support.submitBubbles ) {
// change delegation, happens here so we have bind.
if ( !jQuery.support.changeBubbles ) {
- var formElems = /textarea|input|select/i,
-
- changeFilters,
+ var changeFilters,
getVal = function( elem ) {
- var type = elem.type, val = elem.value;
+ var type = jQuery.nodeName( elem, "input" ) ? elem.type : "",
+ val = elem.value;
if ( type === "radio" || type === "checkbox" ) {
val = elem.checked;
@@ -2246,7 +3320,7 @@ if ( !jQuery.support.changeBubbles ) {
}).join("-") :
"";
- } else if ( elem.nodeName.toLowerCase() === "select" ) {
+ } else if ( jQuery.nodeName( elem, "select" ) ) {
val = elem.selectedIndex;
}
@@ -2256,58 +3330,61 @@ if ( !jQuery.support.changeBubbles ) {
testChange = function testChange( e ) {
var elem = e.target, data, val;
- if ( !formElems.test( elem.nodeName ) || elem.readOnly ) {
+ if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) {
return;
}
- data = jQuery.data( elem, "_change_data" );
+ data = jQuery._data( elem, "_change_data" );
val = getVal(elem);
// the current data will be also retrieved by beforeactivate
if ( e.type !== "focusout" || elem.type !== "radio" ) {
- jQuery.data( elem, "_change_data", val );
+ jQuery._data( elem, "_change_data", val );
}
-
+
if ( data === undefined || val === data ) {
return;
}
if ( data != null || val ) {
e.type = "change";
- return jQuery.event.trigger( e, arguments[1], elem );
+ e.liveFired = undefined;
+ jQuery.event.trigger( e, arguments[1], elem );
}
};
jQuery.event.special.change = {
filters: {
- focusout: testChange,
+ focusout: testChange,
+
+ beforedeactivate: testChange,
click: function( e ) {
- var elem = e.target, type = elem.type;
+ var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
- if ( type === "radio" || type === "checkbox" || elem.nodeName.toLowerCase() === "select" ) {
- return testChange.call( this, e );
+ if ( type === "radio" || type === "checkbox" || jQuery.nodeName( elem, "select" ) ) {
+ testChange.call( this, e );
}
},
// Change has to be called before submit
// Keydown will be called before keypress, which is used in submit-event delegation
keydown: function( e ) {
- var elem = e.target, type = elem.type;
+ var elem = e.target, type = jQuery.nodeName( elem, "input" ) ? elem.type : "";
- if ( (e.keyCode === 13 && elem.nodeName.toLowerCase() !== "textarea") ||
+ if ( (e.keyCode === 13 && !jQuery.nodeName( elem, "textarea" ) ) ||
(e.keyCode === 32 && (type === "checkbox" || type === "radio")) ||
type === "select-multiple" ) {
- return testChange.call( this, e );
+ testChange.call( this, e );
}
},
// Beforeactivate happens also before the previous element is blurred
// with this event you can't trigger a change event, but you can store
- // information/focus[in] is not needed anymore
+ // information
beforeactivate: function( e ) {
var elem = e.target;
- jQuery.data( elem, "_change_data", getVal(elem) );
+ jQuery._data( elem, "_change_data", getVal(elem) );
}
},
@@ -2320,46 +3397,75 @@ if ( !jQuery.support.changeBubbles ) {
jQuery.event.add( this, type + ".specialChange", changeFilters[type] );
}
- return formElems.test( this.nodeName );
+ return rformElems.test( this.nodeName );
},
teardown: function( namespaces ) {
jQuery.event.remove( this, ".specialChange" );
- return formElems.test( this.nodeName );
+ return rformElems.test( this.nodeName );
}
};
changeFilters = jQuery.event.special.change.filters;
+
+ // Handle when the input is .focus()'d
+ changeFilters.focus = changeFilters.beforeactivate;
}
function trigger( type, elem, args ) {
- args[0].type = type;
- return jQuery.event.handle.apply( elem, args );
+ // Piggyback on a donor event to simulate a different one.
+ // Fake originalEvent to avoid donor's stopPropagation, but if the
+ // simulated event prevents default then we do the same on the donor.
+ // Don't pass args or remember liveFired; they apply to the donor event.
+ var event = jQuery.extend( {}, args[ 0 ] );
+ event.type = type;
+ event.originalEvent = {};
+ event.liveFired = undefined;
+ jQuery.event.handle.call( elem, event );
+ if ( event.isDefaultPrevented() ) {
+ args[ 0 ].preventDefault();
+ }
}
// Create "bubbling" focus and blur events
-if ( document.addEventListener ) {
+if ( !jQuery.support.focusinBubbles ) {
jQuery.each({ focus: "focusin", blur: "focusout" }, function( orig, fix ) {
+
+ // Attach a single capturing handler while someone wants focusin/focusout
+ var attaches = 0;
+
jQuery.event.special[ fix ] = {
setup: function() {
- this.addEventListener( orig, handler, true );
- },
- teardown: function() {
- this.removeEventListener( orig, handler, true );
+ if ( attaches++ === 0 ) {
+ document.addEventListener( orig, handler, true );
+ }
+ },
+ teardown: function() {
+ if ( --attaches === 0 ) {
+ document.removeEventListener( orig, handler, true );
+ }
}
};
- function handler( e ) {
- e = jQuery.event.fix( e );
+ function handler( donor ) {
+ // Donor event is always a native one; fix it and switch its type.
+ // Let focusin/out handler cancel the donor focus/blur event.
+ var e = jQuery.event.fix( donor );
e.type = fix;
- return jQuery.event.handle.call( this, e );
+ e.originalEvent = {};
+ jQuery.event.trigger( e, null, e.target );
+ if ( e.isDefaultPrevented() ) {
+ donor.preventDefault();
+ }
}
});
}
jQuery.each(["bind", "one"], function( i, name ) {
jQuery.fn[ name ] = function( type, data, fn ) {
+ var handler;
+
// Handle object literals
if ( typeof type === "object" ) {
for ( var key in type ) {
@@ -2367,16 +3473,21 @@ jQuery.each(["bind", "one"], function( i, name ) {
}
return this;
}
-
- if ( jQuery.isFunction( data ) ) {
+
+ if ( arguments.length === 2 || data === false ) {
fn = data;
data = undefined;
}
- var handler = name === "one" ? jQuery.proxy( fn, function( event ) {
- jQuery( this ).unbind( event, handler );
- return fn.apply( this, arguments );
- }) : fn;
+ if ( name === "one" ) {
+ handler = function( event ) {
+ jQuery( this ).unbind( event, handler );
+ return fn.apply( this, arguments );
+ };
+ handler.guid = fn.guid || jQuery.guid++;
+ } else {
+ handler = fn;
+ }
if ( type === "unload" && name !== "one" ) {
this.one( type, data, fn );
@@ -2407,20 +3518,20 @@ jQuery.fn.extend({
return this;
},
-
+
delegate: function( selector, types, data, fn ) {
return this.live( types, data, fn, selector );
},
-
+
undelegate: function( selector, types, fn ) {
if ( arguments.length === 0 ) {
- return this.unbind( "live" );
-
+ return this.unbind( "live" );
+
} else {
return this.die( types, null, fn, selector );
}
},
-
+
trigger: function( type, data ) {
return this.each(function() {
jQuery.event.trigger( type, data, this );
@@ -2429,34 +3540,34 @@ jQuery.fn.extend({
triggerHandler: function( type, data ) {
if ( this[0] ) {
- var event = jQuery.Event( type );
- event.preventDefault();
- event.stopPropagation();
- jQuery.event.trigger( event, data, this[0] );
- return event.result;
+ return jQuery.event.trigger( type, data, this[0], true );
}
},
toggle: function( fn ) {
// Save reference to arguments for access in closure
- var args = arguments, i = 1;
+ var args = arguments,
+ guid = fn.guid || jQuery.guid++,
+ i = 0,
+ toggler = function( event ) {
+ // Figure out which function to execute
+ var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
+ jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
+
+ // Make sure that clicks stop
+ event.preventDefault();
+
+ // and execute the function
+ return args[ lastToggle ].apply( this, arguments ) || false;
+ };
// link all the functions, so any of them can unbind this click handler
+ toggler.guid = guid;
while ( i < args.length ) {
- jQuery.proxy( fn, args[ i++ ] );
+ args[ i++ ].guid = guid;
}
- return this.click( jQuery.proxy( fn, function( event ) {
- // Figure out which function to execute
- var lastToggle = ( jQuery.data( this, "lastToggle" + fn.guid ) || 0 ) % i;
- jQuery.data( this, "lastToggle" + fn.guid, lastToggle + 1 );
-
- // Make sure that clicks stop
- event.preventDefault();
-
- // and execute the function
- return args[ lastToggle ].apply( this, arguments ) || false;
- }));
+ return this.click( toggler );
},
hover: function( fnOver, fnOut ) {
@@ -2477,8 +3588,24 @@ jQuery.each(["live", "die"], function( i, name ) {
selector = origSelector || this.selector,
context = origSelector ? this : jQuery( this.context );
- if ( jQuery.isFunction( data ) ) {
- fn = data;
+ if ( typeof types === "object" && !types.preventDefault ) {
+ for ( var key in types ) {
+ context[ name ]( key, data, types[key], selector );
+ }
+
+ return this;
+ }
+
+ if ( name === "die" && !types &&
+ origSelector && origSelector.charAt(0) === "." ) {
+
+ context.unbind( origSelector );
+
+ return this;
+ }
+
+ if ( data === false || jQuery.isFunction( data ) ) {
+ fn = data || returnFalse;
data = undefined;
}
@@ -2500,7 +3627,7 @@ jQuery.each(["live", "die"], function( i, name ) {
preType = type;
- if ( type === "focus" || type === "blur" ) {
+ if ( liveMap[ type ] ) {
types.push( liveMap[ type ] + namespaces );
type = type + namespaces;
@@ -2510,31 +3637,36 @@ jQuery.each(["live", "die"], function( i, name ) {
if ( name === "live" ) {
// bind live handler
- context.each(function(){
- jQuery.event.add( this, liveConvert( type, selector ),
+ for ( var j = 0, l = context.length; j < l; j++ ) {
+ jQuery.event.add( context[j], "live." + liveConvert( type, selector ),
{ data: data, selector: selector, handler: fn, origType: type, origHandler: fn, preType: preType } );
- });
+ }
} else {
// unbind live handler
- context.unbind( liveConvert( type, selector ), fn );
+ context.unbind( "live." + liveConvert( type, selector ), fn );
}
}
-
+
return this;
- }
+ };
});
function liveHandler( event ) {
- var stop, elems = [], selectors = [], args = arguments,
- related, match, handleObj, elem, j, i, l, data,
- events = jQuery.data( this, "events" );
+ var stop, maxLevel, related, match, handleObj, elem, j, i, l, data, close, namespace, ret,
+ elems = [],
+ selectors = [],
+ events = jQuery._data( this, "events" );
- // Make sure we avoid non-left-click bubbling in Firefox (#3861)
- if ( event.liveFired === this || !events || !events.live || event.button && event.type === "click" ) {
+ // Make sure we avoid non-left-click bubbling in Firefox (#3861) and disabled elements in IE (#6911)
+ if ( event.liveFired === this || !events || !events.live || event.target.disabled || event.button && event.type === "click" ) {
return;
}
+ if ( event.namespace ) {
+ namespace = new RegExp("(^|\\.)" + event.namespace.split(".").join("\\.(?:.*\\.)?") + "(\\.|$)");
+ }
+
event.liveFired = this;
var live = events.live.slice(0);
@@ -2553,20 +3685,28 @@ function liveHandler( event ) {
match = jQuery( event.target ).closest( selectors, event.currentTarget );
for ( i = 0, l = match.length; i < l; i++ ) {
+ close = match[i];
+
for ( j = 0; j < live.length; j++ ) {
handleObj = live[j];
- if ( match[i].selector === handleObj.selector ) {
- elem = match[i].elem;
+ if ( close.selector === handleObj.selector && (!namespace || namespace.test( handleObj.namespace )) && !close.elem.disabled ) {
+ elem = close.elem;
related = null;
// Those two events require additional checking
if ( handleObj.preType === "mouseenter" || handleObj.preType === "mouseleave" ) {
+ event.type = handleObj.preType;
related = jQuery( event.relatedTarget ).closest( handleObj.selector )[0];
+
+ // Make sure not to accidentally match a child element with the same selector
+ if ( related && jQuery.contains( elem, related ) ) {
+ related = elem;
+ }
}
if ( !related || related !== elem ) {
- elems.push({ elem: elem, handleObj: handleObj });
+ elems.push({ elem: elem, handleObj: handleObj, level: close.level });
}
}
}
@@ -2574,13 +3714,26 @@ function liveHandler( event ) {
for ( i = 0, l = elems.length; i < l; i++ ) {
match = elems[i];
+
+ if ( maxLevel && match.level > maxLevel ) {
+ break;
+ }
+
event.currentTarget = match.elem;
event.data = match.handleObj.data;
event.handleObj = match.handleObj;
- if ( match.handleObj.origHandler.apply( match.elem, args ) === false ) {
- stop = false;
- break;
+ ret = match.handleObj.origHandler.apply( match.elem, arguments );
+
+ if ( ret === false || event.isPropagationStopped() ) {
+ maxLevel = match.level;
+
+ if ( ret === false ) {
+ stop = false;
+ }
+ if ( event.isImmediatePropagationStopped() ) {
+ break;
+ }
}
}
@@ -2588,7 +3741,7 @@ function liveHandler( event ) {
}
function liveConvert( type, selector ) {
- return "live." + (type && type !== "*" ? type + "." : "") + selector.replace(/\./g, "`").replace(/ /g, "&");
+ return (type && type !== "*" ? type + "." : "") + selector.replace(rperiod, "`").replace(rspaces, "&");
}
jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblclick " +
@@ -2596,8 +3749,15 @@ jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblcl
"change select submit keydown keypress keyup error").split(" "), function( i, name ) {
// Handle event binding
- jQuery.fn[ name ] = function( fn ) {
- return fn ? this.bind( name, fn ) : this.trigger( name );
+ jQuery.fn[ name ] = function( data, fn ) {
+ if ( fn == null ) {
+ fn = data;
+ data = null;
+ }
+
+ return arguments.length > 0 ?
+ this.bind( name, data, fn ) :
+ this.trigger( name );
};
if ( jQuery.attrFn ) {
@@ -2605,48 +3765,38 @@ jQuery.each( ("blur focus focusin focusout load resize scroll unload click dblcl
}
});
-// Prevent memory leaks in IE
-// Window isn't included so as not to unbind existing unload events
-// More info:
-// - http://isaacschlueter.com/2006/10/msie-memory-leaks/
-if ( window.attachEvent && !window.addEventListener ) {
- window.attachEvent("onunload", function() {
- for ( var id in jQuery.cache ) {
- if ( jQuery.cache[ id ].handle ) {
- // Try/Catch is to handle iframes being unloaded, see #4280
- try {
- jQuery.event.remove( jQuery.cache[ id ].handle.elem );
- } catch(e) {}
- }
- }
- });
-}
+
+
/*!
- * Sizzle CSS Selector Engine - v1.0
- * Copyright 2009, The Dojo Foundation
+ * Sizzle CSS Selector Engine
+ * Copyright 2011, The Dojo Foundation
* Released under the MIT, BSD, and GPL Licenses.
* More information: http://sizzlejs.com/
*/
(function(){
-var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^[\]]*\]|['"][^'"]*['"]|[^[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
+var chunker = /((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,
done = 0,
toString = Object.prototype.toString,
hasDuplicate = false,
- baseHasDuplicate = true;
+ baseHasDuplicate = true,
+ rBackslash = /\\/g,
+ rNonWord = /\W/;
// Here we check if the JavaScript engine is using some sort of
// optimization where it does not always call our comparision
// function. If that is the case, discard the hasDuplicate value.
// Thus far that includes Google Chrome.
-[0, 0].sort(function(){
+[0, 0].sort(function() {
baseHasDuplicate = false;
return 0;
});
-var Sizzle = function(selector, context, results, seed) {
+var Sizzle = function( selector, context, results, seed ) {
results = results || [];
- var origContext = context = context || document;
+ context = context || document;
+
+ var origContext = context;
if ( context.nodeType !== 1 && context.nodeType !== 9 ) {
return [];
@@ -2656,24 +3806,34 @@ var Sizzle = function(selector, context, results, seed) {
return results;
}
- var parts = [], m, set, checkSet, extra, prune = true, contextXML = isXML(context),
+ var m, set, checkSet, extra, ret, cur, pop, i,
+ prune = true,
+ contextXML = Sizzle.isXML( context ),
+ parts = [],
soFar = selector;
// Reset the position of the chunker regexp (start from head)
- while ( (chunker.exec(""), m = chunker.exec(soFar)) !== null ) {
- soFar = m[3];
+ do {
+ chunker.exec( "" );
+ m = chunker.exec( soFar );
+
+ if ( m ) {
+ soFar = m[3];
- parts.push( m[1] );
+ parts.push( m[1] );
- if ( m[2] ) {
- extra = m[3];
- break;
+ if ( m[2] ) {
+ extra = m[3];
+ break;
+ }
}
- }
+ } while ( m );
if ( parts.length > 1 && origPOS.exec( selector ) ) {
+
if ( parts.length === 2 && Expr.relative[ parts[0] ] ) {
set = posProcess( parts[0] + parts[1], context );
+
} else {
set = Expr.relative[ parts[0] ] ?
[ context ] :
@@ -2689,29 +3849,38 @@ var Sizzle = function(selector, context, results, seed) {
set = posProcess( selector, set );
}
}
+
} else {
// Take a shortcut and set the context if the root selector is an ID
// (but not if it'll be faster if the inner selector is an ID)
if ( !seed && parts.length > 1 && context.nodeType === 9 && !contextXML &&
Expr.match.ID.test(parts[0]) && !Expr.match.ID.test(parts[parts.length - 1]) ) {
- var ret = Sizzle.find( parts.shift(), context, contextXML );
- context = ret.expr ? Sizzle.filter( ret.expr, ret.set )[0] : ret.set[0];
+
+ ret = Sizzle.find( parts.shift(), context, contextXML );
+ context = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set )[0] :
+ ret.set[0];
}
if ( context ) {
- var ret = seed ?
+ ret = seed ?
{ expr: parts.pop(), set: makeArray(seed) } :
Sizzle.find( parts.pop(), parts.length === 1 && (parts[0] === "~" || parts[0] === "+") && context.parentNode ? context.parentNode : context, contextXML );
- set = ret.expr ? Sizzle.filter( ret.expr, ret.set ) : ret.set;
+
+ set = ret.expr ?
+ Sizzle.filter( ret.expr, ret.set ) :
+ ret.set;
if ( parts.length > 0 ) {
- checkSet = makeArray(set);
+ checkSet = makeArray( set );
+
} else {
prune = false;
}
while ( parts.length ) {
- var cur = parts.pop(), pop = cur;
+ cur = parts.pop();
+ pop = cur;
if ( !Expr.relative[ cur ] ) {
cur = "";
@@ -2725,6 +3894,7 @@ var Sizzle = function(selector, context, results, seed) {
Expr.relative[ cur ]( checkSet, pop, contextXML );
}
+
} else {
checkSet = parts = [];
}
@@ -2741,19 +3911,22 @@ var Sizzle = function(selector, context, results, seed) {
if ( toString.call(checkSet) === "[object Array]" ) {
if ( !prune ) {
results.push.apply( results, checkSet );
+
} else if ( context && context.nodeType === 1 ) {
- for ( var i = 0; checkSet[i] != null; i++ ) {
- if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && contains(context, checkSet[i])) ) {
+ for ( i = 0; checkSet[i] != null; i++ ) {
+ if ( checkSet[i] && (checkSet[i] === true || checkSet[i].nodeType === 1 && Sizzle.contains(context, checkSet[i])) ) {
results.push( set[i] );
}
}
+
} else {
- for ( var i = 0; checkSet[i] != null; i++ ) {
+ for ( i = 0; checkSet[i] != null; i++ ) {
if ( checkSet[i] && checkSet[i].nodeType === 1 ) {
results.push( set[i] );
}
}
}
+
} else {
makeArray( checkSet, results );
}
@@ -2766,15 +3939,15 @@ var Sizzle = function(selector, context, results, seed) {
return results;
};
-Sizzle.uniqueSort = function(results){
+Sizzle.uniqueSort = function( results ) {
if ( sortOrder ) {
hasDuplicate = baseHasDuplicate;
- results.sort(sortOrder);
+ results.sort( sortOrder );
if ( hasDuplicate ) {
for ( var i = 1; i < results.length; i++ ) {
- if ( results[i] === results[i-1] ) {
- results.splice(i--, 1);
+ if ( results[i] === results[ i - 1 ] ) {
+ results.splice( i--, 1 );
}
}
}
@@ -2783,27 +3956,33 @@ Sizzle.uniqueSort = function(results){
return results;
};
-Sizzle.matches = function(expr, set){
- return Sizzle(expr, null, null, set);
+Sizzle.matches = function( expr, set ) {
+ return Sizzle( expr, null, null, set );
+};
+
+Sizzle.matchesSelector = function( node, expr ) {
+ return Sizzle( expr, null, null, [node] ).length > 0;
};
-Sizzle.find = function(expr, context, isXML){
- var set, match;
+Sizzle.find = function( expr, context, isXML ) {
+ var set;
if ( !expr ) {
return [];
}
for ( var i = 0, l = Expr.order.length; i < l; i++ ) {
- var type = Expr.order[i], match;
+ var match,
+ type = Expr.order[i];
if ( (match = Expr.leftMatch[ type ].exec( expr )) ) {
var left = match[1];
- match.splice(1,1);
+ match.splice( 1, 1 );
if ( left.substr( left.length - 1 ) !== "\\" ) {
- match[1] = (match[1] || "").replace(/\\/g, "");
+ match[1] = (match[1] || "").replace( rBackslash, "" );
set = Expr.find[ type ]( match, context, isXML );
+
if ( set != null ) {
expr = expr.replace( Expr.match[ type ], "" );
break;
@@ -2813,20 +3992,28 @@ Sizzle.find = function(expr, context, isXML){
}
if ( !set ) {
- set = context.getElementsByTagName("*");
+ set = typeof context.getElementsByTagName !== "undefined" ?
+ context.getElementsByTagName( "*" ) :
+ [];
}
- return {set: set, expr: expr};
+ return { set: set, expr: expr };
};
-Sizzle.filter = function(expr, set, inplace, not){
- var old = expr, result = [], curLoop = set, match, anyFound,
- isXMLFilter = set && set[0] && isXML(set[0]);
+Sizzle.filter = function( expr, set, inplace, not ) {
+ var match, anyFound,
+ old = expr,
+ result = [],
+ curLoop = set,
+ isXMLFilter = set && set[0] && Sizzle.isXML( set[0] );
while ( expr && set.length ) {
for ( var type in Expr.filter ) {
if ( (match = Expr.leftMatch[ type ].exec( expr )) != null && match[2] ) {
- var filter = Expr.filter[ type ], found, item, left = match[1];
+ var found, item,
+ filter = Expr.filter[ type ],
+ left = match[1];
+
anyFound = false;
match.splice(1,1);
@@ -2844,6 +4031,7 @@ Sizzle.filter = function(expr, set, inplace, not){
if ( !match ) {
anyFound = found = true;
+
} else if ( match === true ) {
continue;
}
@@ -2858,9 +4046,11 @@ Sizzle.filter = function(expr, set, inplace, not){
if ( inplace && found != null ) {
if ( pass ) {
anyFound = true;
+
} else {
curLoop[i] = false;
}
+
} else if ( pass ) {
result.push( item );
anyFound = true;
@@ -2889,6 +4079,7 @@ Sizzle.filter = function(expr, set, inplace, not){
if ( expr === old ) {
if ( anyFound == null ) {
Sizzle.error( expr );
+
} else {
break;
}
@@ -2906,30 +4097,38 @@ Sizzle.error = function( msg ) {
var Expr = Sizzle.selectors = {
order: [ "ID", "NAME", "TAG" ],
+
match: {
- ID: /#((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
- CLASS: /\.((?:[\w\u00c0-\uFFFF-]|\\.)+)/,
- NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF-]|\\.)+)['"]*\]/,
- ATTR: /\[\s*((?:[\w\u00c0-\uFFFF-]|\\.)+)\s*(?:(\S?=)\s*(['"]*)(.*?)\3|)\s*\]/,
- TAG: /^((?:[\w\u00c0-\uFFFF\*-]|\\.)+)/,
- CHILD: /:(only|nth|last|first)-child(?:\((even|odd|[\dn+-]*)\))?/,
- POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^-]|$)/,
- PSEUDO: /:((?:[\w\u00c0-\uFFFF-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
+ ID: /#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ CLASS: /\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,
+ NAME: /\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,
+ ATTR: /\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,
+ TAG: /^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,
+ CHILD: /:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,
+ POS: /:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,
+ PSEUDO: /:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/
},
+
leftMatch: {},
+
attrMap: {
"class": "className",
"for": "htmlFor"
},
+
attrHandle: {
- href: function(elem){
- return elem.getAttribute("href");
+ href: function( elem ) {
+ return elem.getAttribute( "href" );
+ },
+ type: function( elem ) {
+ return elem.getAttribute( "type" );
}
},
+
relative: {
"+": function(checkSet, part){
var isPartStr = typeof part === "string",
- isTag = isPartStr && !/\W/.test(part),
+ isTag = isPartStr && !rNonWord.test( part ),
isPartStrNotTag = isPartStr && !isTag;
if ( isTag ) {
@@ -2950,22 +4149,29 @@ var Expr = Sizzle.selectors = {
Sizzle.filter( part, checkSet, true );
}
},
- ">": function(checkSet, part){
- var isPartStr = typeof part === "string";
- if ( isPartStr && !/\W/.test(part) ) {
+ ">": function( checkSet, part ) {
+ var elem,
+ isPartStr = typeof part === "string",
+ i = 0,
+ l = checkSet.length;
+
+ if ( isPartStr && !rNonWord.test( part ) ) {
part = part.toLowerCase();
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
if ( elem ) {
var parent = elem.parentNode;
checkSet[i] = parent.nodeName.toLowerCase() === part ? parent : false;
}
}
+
} else {
- for ( var i = 0, l = checkSet.length; i < l; i++ ) {
- var elem = checkSet[i];
+ for ( ; i < l; i++ ) {
+ elem = checkSet[i];
+
if ( elem ) {
checkSet[i] = isPartStr ?
elem.parentNode :
@@ -2978,37 +4184,50 @@ var Expr = Sizzle.selectors = {
}
}
},
+
"": function(checkSet, part, isXML){
- var doneName = done++, checkFn = dirCheck;
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
- if ( typeof part === "string" && !/\W/.test(part) ) {
- var nodeCheck = part = part.toLowerCase();
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
checkFn = dirNodeCheck;
}
- checkFn("parentNode", part, doneName, checkSet, nodeCheck, isXML);
+ checkFn( "parentNode", part, doneName, checkSet, nodeCheck, isXML );
},
- "~": function(checkSet, part, isXML){
- var doneName = done++, checkFn = dirCheck;
- if ( typeof part === "string" && !/\W/.test(part) ) {
- var nodeCheck = part = part.toLowerCase();
+ "~": function( checkSet, part, isXML ) {
+ var nodeCheck,
+ doneName = done++,
+ checkFn = dirCheck;
+
+ if ( typeof part === "string" && !rNonWord.test( part ) ) {
+ part = part.toLowerCase();
+ nodeCheck = part;
checkFn = dirNodeCheck;
}
- checkFn("previousSibling", part, doneName, checkSet, nodeCheck, isXML);
+ checkFn( "previousSibling", part, doneName, checkSet, nodeCheck, isXML );
}
},
+
find: {
- ID: function(match, context, isXML){
+ ID: function( match, context, isXML ) {
if ( typeof context.getElementById !== "undefined" && !isXML ) {
var m = context.getElementById(match[1]);
- return m ? [m] : [];
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ return m && m.parentNode ? [m] : [];
}
},
- NAME: function(match, context){
+
+ NAME: function( match, context ) {
if ( typeof context.getElementsByName !== "undefined" ) {
- var ret = [], results = context.getElementsByName(match[1]);
+ var ret = [],
+ results = context.getElementsByName( match[1] );
for ( var i = 0, l = results.length; i < l; i++ ) {
if ( results[i].getAttribute("name") === match[1] ) {
@@ -3019,13 +4238,16 @@ var Expr = Sizzle.selectors = {
return ret.length === 0 ? null : ret;
}
},
- TAG: function(match, context){
- return context.getElementsByTagName(match[1]);
+
+ TAG: function( match, context ) {
+ if ( typeof context.getElementsByTagName !== "undefined" ) {
+ return context.getElementsByTagName( match[1] );
+ }
}
},
preFilter: {
- CLASS: function(match, curLoop, inplace, result, not, isXML){
- match = " " + match[1].replace(/\\/g, "") + " ";
+ CLASS: function( match, curLoop, inplace, result, not, isXML ) {
+ match = " " + match[1].replace( rBackslash, "" ) + " ";
if ( isXML ) {
return match;
@@ -3033,10 +4255,11 @@ var Expr = Sizzle.selectors = {
for ( var i = 0, elem; (elem = curLoop[i]) != null; i++ ) {
if ( elem ) {
- if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n]/g, " ").indexOf(match) >= 0) ) {
+ if ( not ^ (elem.className && (" " + elem.className + " ").replace(/[\t\n\r]/g, " ").indexOf(match) >= 0) ) {
if ( !inplace ) {
result.push( elem );
}
+
} else if ( inplace ) {
curLoop[i] = false;
}
@@ -3045,16 +4268,25 @@ var Expr = Sizzle.selectors = {
return false;
},
- ID: function(match){
- return match[1].replace(/\\/g, "");
+
+ ID: function( match ) {
+ return match[1].replace( rBackslash, "" );
},
- TAG: function(match, curLoop){
- return match[1].toLowerCase();
+
+ TAG: function( match, curLoop ) {
+ return match[1].replace( rBackslash, "" ).toLowerCase();
},
- CHILD: function(match){
+
+ CHILD: function( match ) {
if ( match[1] === "nth" ) {
+ if ( !match[2] ) {
+ Sizzle.error( match[0] );
+ }
+
+ match[2] = match[2].replace(/^\+|\s*/g, '');
+
// parse equations like 'even', 'odd', '5', '2n', '3n+2', '4n-1', '-n+6'
- var test = /(-?)(\d*)n((?:\+|-)?\d*)/.exec(
+ var test = /(-?)(\d*)(?:n([+\-]?\d*))?/.exec(
match[2] === "even" && "2n" || match[2] === "odd" && "2n+1" ||
!/\D/.test( match[2] ) && "0n+" + match[2] || match[2]);
@@ -3062,178 +4294,243 @@ var Expr = Sizzle.selectors = {
match[2] = (test[1] + (test[2] || 1)) - 0;
match[3] = test[3] - 0;
}
+ else if ( match[2] ) {
+ Sizzle.error( match[0] );
+ }
// TODO: Move to normal caching system
match[0] = done++;
return match;
},
- ATTR: function(match, curLoop, inplace, result, not, isXML){
- var name = match[1].replace(/\\/g, "");
+
+ ATTR: function( match, curLoop, inplace, result, not, isXML ) {
+ var name = match[1] = match[1].replace( rBackslash, "" );
if ( !isXML && Expr.attrMap[name] ) {
match[1] = Expr.attrMap[name];
}
+ // Handle if an un-quoted value was used
+ match[4] = ( match[4] || match[5] || "" ).replace( rBackslash, "" );
+
if ( match[2] === "~=" ) {
match[4] = " " + match[4] + " ";
}
return match;
},
- PSEUDO: function(match, curLoop, inplace, result, not){
+
+ PSEUDO: function( match, curLoop, inplace, result, not ) {
if ( match[1] === "not" ) {
// If we're dealing with a complex expression, or a simple one
if ( ( chunker.exec(match[3]) || "" ).length > 1 || /^\w/.test(match[3]) ) {
match[3] = Sizzle(match[3], null, null, curLoop);
+
} else {
var ret = Sizzle.filter(match[3], curLoop, inplace, true ^ not);
+
if ( !inplace ) {
result.push.apply( result, ret );
}
+
return false;
}
+
} else if ( Expr.match.POS.test( match[0] ) || Expr.match.CHILD.test( match[0] ) ) {
return true;
}
return match;
},
- POS: function(match){
+
+ POS: function( match ) {
match.unshift( true );
+
return match;
}
},
+
filters: {
- enabled: function(elem){
+ enabled: function( elem ) {
return elem.disabled === false && elem.type !== "hidden";
},
- disabled: function(elem){
+
+ disabled: function( elem ) {
return elem.disabled === true;
},
- checked: function(elem){
+
+ checked: function( elem ) {
return elem.checked === true;
},
- selected: function(elem){
+
+ selected: function( elem ) {
// Accessing this property makes selected-by-default
// options in Safari work properly
- elem.parentNode.selectedIndex;
+ if ( elem.parentNode ) {
+ elem.parentNode.selectedIndex;
+ }
+
return elem.selected === true;
},
- parent: function(elem){
+
+ parent: function( elem ) {
return !!elem.firstChild;
},
- empty: function(elem){
+
+ empty: function( elem ) {
return !elem.firstChild;
},
- has: function(elem, i, match){
+
+ has: function( elem, i, match ) {
return !!Sizzle( match[3], elem ).length;
},
- header: function(elem){
- return /h\d/i.test( elem.nodeName );
+
+ header: function( elem ) {
+ return (/h\d/i).test( elem.nodeName );
},
- text: function(elem){
- return "text" === elem.type;
+
+ text: function( elem ) {
+ var attr = elem.getAttribute( "type" ), type = elem.type;
+ // IE6 and 7 will map elem.type to 'text' for new HTML5 types (search, etc)
+ // use getAttribute instead to test this case
+ return elem.nodeName.toLowerCase() === "input" && "text" === type && ( attr === type || attr === null );
},
- radio: function(elem){
- return "radio" === elem.type;
+
+ radio: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "radio" === elem.type;
},
- checkbox: function(elem){
- return "checkbox" === elem.type;
+
+ checkbox: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "checkbox" === elem.type;
+ },
+
+ file: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "file" === elem.type;
},
- file: function(elem){
- return "file" === elem.type;
+
+ password: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "password" === elem.type;
},
- password: function(elem){
- return "password" === elem.type;
+
+ submit: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "submit" === elem.type;
},
- submit: function(elem){
- return "submit" === elem.type;
+
+ image: function( elem ) {
+ return elem.nodeName.toLowerCase() === "input" && "image" === elem.type;
},
- image: function(elem){
- return "image" === elem.type;
+
+ reset: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return (name === "input" || name === "button") && "reset" === elem.type;
},
- reset: function(elem){
- return "reset" === elem.type;
+
+ button: function( elem ) {
+ var name = elem.nodeName.toLowerCase();
+ return name === "input" && "button" === elem.type || name === "button";
},
- button: function(elem){
- return "button" === elem.type || elem.nodeName.toLowerCase() === "button";
+
+ input: function( elem ) {
+ return (/input|select|textarea|button/i).test( elem.nodeName );
},
- input: function(elem){
- return /input|select|textarea|button/i.test(elem.nodeName);
+
+ focus: function( elem ) {
+ return elem === elem.ownerDocument.activeElement;
}
},
setFilters: {
- first: function(elem, i){
+ first: function( elem, i ) {
return i === 0;
},
- last: function(elem, i, match, array){
+
+ last: function( elem, i, match, array ) {
return i === array.length - 1;
},
- even: function(elem, i){
+
+ even: function( elem, i ) {
return i % 2 === 0;
},
- odd: function(elem, i){
+
+ odd: function( elem, i ) {
return i % 2 === 1;
},
- lt: function(elem, i, match){
+
+ lt: function( elem, i, match ) {
return i < match[3] - 0;
},
- gt: function(elem, i, match){
+
+ gt: function( elem, i, match ) {
return i > match[3] - 0;
},
- nth: function(elem, i, match){
+
+ nth: function( elem, i, match ) {
return match[3] - 0 === i;
},
- eq: function(elem, i, match){
+
+ eq: function( elem, i, match ) {
return match[3] - 0 === i;
}
},
filter: {
- PSEUDO: function(elem, match, i, array){
- var name = match[1], filter = Expr.filters[ name ];
+ PSEUDO: function( elem, match, i, array ) {
+ var name = match[1],
+ filter = Expr.filters[ name ];
if ( filter ) {
return filter( elem, i, match, array );
+
} else if ( name === "contains" ) {
- return (elem.textContent || elem.innerText || getText([ elem ]) || "").indexOf(match[3]) >= 0;
+ return (elem.textContent || elem.innerText || Sizzle.getText([ elem ]) || "").indexOf(match[3]) >= 0;
+
} else if ( name === "not" ) {
var not = match[3];
- for ( var i = 0, l = not.length; i < l; i++ ) {
- if ( not[i] === elem ) {
+ for ( var j = 0, l = not.length; j < l; j++ ) {
+ if ( not[j] === elem ) {
return false;
}
}
return true;
+
} else {
- Sizzle.error( "Syntax error, unrecognized expression: " + name );
+ Sizzle.error( name );
}
},
- CHILD: function(elem, match){
- var type = match[1], node = elem;
- switch (type) {
- case 'only':
- case 'first':
+
+ CHILD: function( elem, match ) {
+ var type = match[1],
+ node = elem;
+
+ switch ( type ) {
+ case "only":
+ case "first":
while ( (node = node.previousSibling) ) {
if ( node.nodeType === 1 ) {
return false;
}
}
+
if ( type === "first" ) {
return true;
}
+
node = elem;
- case 'last':
+
+ case "last":
while ( (node = node.nextSibling) ) {
if ( node.nodeType === 1 ) {
return false;
}
}
+
return true;
- case 'nth':
- var first = match[2], last = match[3];
+
+ case "nth":
+ var first = match[2],
+ last = match[3];
if ( first === 1 && last === 0 ) {
return true;
@@ -3244,33 +4541,41 @@ var Expr = Sizzle.selectors = {
if ( parent && (parent.sizcache !== doneName || !elem.nodeIndex) ) {
var count = 0;
+
for ( node = parent.firstChild; node; node = node.nextSibling ) {
if ( node.nodeType === 1 ) {
node.nodeIndex = ++count;
}
}
+
parent.sizcache = doneName;
}
var diff = elem.nodeIndex - last;
+
if ( first === 0 ) {
return diff === 0;
+
} else {
return ( diff % first === 0 && diff / first >= 0 );
}
}
},
- ID: function(elem, match){
+
+ ID: function( elem, match ) {
return elem.nodeType === 1 && elem.getAttribute("id") === match;
},
- TAG: function(elem, match){
+
+ TAG: function( elem, match ) {
return (match === "*" && elem.nodeType === 1) || elem.nodeName.toLowerCase() === match;
},
- CLASS: function(elem, match){
+
+ CLASS: function( elem, match ) {
return (" " + (elem.className || elem.getAttribute("class")) + " ")
.indexOf( match ) > -1;
},
- ATTR: function(elem, match){
+
+ ATTR: function( elem, match ) {
var name = match[1],
result = Expr.attrHandle[ name ] ?
Expr.attrHandle[ name ]( elem ) :
@@ -3301,8 +4606,10 @@ var Expr = Sizzle.selectors = {
value === check || value.substr(0, check.length + 1) === check + "-" :
false;
},
- POS: function(elem, match, i, array){
- var name = match[2], filter = Expr.setFilters[ name ];
+
+ POS: function( elem, match, i, array ) {
+ var name = match[2],
+ filter = Expr.setFilters[ name ];
if ( filter ) {
return filter( elem, i, match, array );
@@ -3311,16 +4618,17 @@ var Expr = Sizzle.selectors = {
}
};
-var origPOS = Expr.match.POS;
+var origPOS = Expr.match.POS,
+ fescape = function(all, num){
+ return "\\" + (num - 0 + 1);
+ };
for ( var type in Expr.match ) {
- Expr.match[ type ] = new RegExp( Expr.match[ type ].source + /(?![^\[]*\])(?![^\(]*\))/.source );
- Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, function(all, num){
- return "\\" + (num - 0 + 1);
- }));
+ Expr.match[ type ] = new RegExp( Expr.match[ type ].source + (/(?![^\[]*\])(?![^\(]*\))/.source) );
+ Expr.leftMatch[ type ] = new RegExp( /(^(?:.|\r|\n)*?)/.source + Expr.match[ type ].source.replace(/\\(\d+)/g, fescape) );
}
-var makeArray = function(array, results) {
+var makeArray = function( array, results ) {
array = Array.prototype.slice.call( array, 0 );
if ( results ) {
@@ -3339,19 +4647,22 @@ try {
Array.prototype.slice.call( document.documentElement.childNodes, 0 )[0].nodeType;
// Provide a fallback method if it does not work
-} catch(e){
- makeArray = function(array, results) {
- var ret = results || [];
+} catch( e ) {
+ makeArray = function( array, results ) {
+ var i = 0,
+ ret = results || [];
if ( toString.call(array) === "[object Array]" ) {
Array.prototype.push.apply( ret, array );
+
} else {
if ( typeof array.length === "number" ) {
- for ( var i = 0, l = array.length; i < l; i++ ) {
+ for ( var l = array.length; i < l; i++ ) {
ret.push( array[i] );
}
+
} else {
- for ( var i = 0; array[i]; i++ ) {
+ for ( ; array[i]; i++ ) {
ret.push( array[i] );
}
}
@@ -3361,62 +4672,104 @@ try {
};
}
-var sortOrder;
+var sortOrder, siblingCheck;
if ( document.documentElement.compareDocumentPosition ) {
sortOrder = function( a, b ) {
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+ }
+
if ( !a.compareDocumentPosition || !b.compareDocumentPosition ) {
- if ( a == b ) {
- hasDuplicate = true;
- }
return a.compareDocumentPosition ? -1 : 1;
}
- var ret = a.compareDocumentPosition(b) & 4 ? -1 : a === b ? 0 : 1;
- if ( ret === 0 ) {
- hasDuplicate = true;
- }
- return ret;
+ return a.compareDocumentPosition(b) & 4 ? -1 : 1;
};
-} else if ( "sourceIndex" in document.documentElement ) {
+
+} else {
sortOrder = function( a, b ) {
- if ( !a.sourceIndex || !b.sourceIndex ) {
- if ( a == b ) {
- hasDuplicate = true;
- }
- return a.sourceIndex ? -1 : 1;
+ // The nodes are identical, we can exit early
+ if ( a === b ) {
+ hasDuplicate = true;
+ return 0;
+
+ // Fallback to using sourceIndex (in IE) if it's available on both nodes
+ } else if ( a.sourceIndex && b.sourceIndex ) {
+ return a.sourceIndex - b.sourceIndex;
}
- var ret = a.sourceIndex - b.sourceIndex;
- if ( ret === 0 ) {
- hasDuplicate = true;
+ var al, bl,
+ ap = [],
+ bp = [],
+ aup = a.parentNode,
+ bup = b.parentNode,
+ cur = aup;
+
+ // If the nodes are siblings (or identical) we can do a quick check
+ if ( aup === bup ) {
+ return siblingCheck( a, b );
+
+ // If no parents were found then the nodes are disconnected
+ } else if ( !aup ) {
+ return -1;
+
+ } else if ( !bup ) {
+ return 1;
}
- return ret;
- };
-} else if ( document.createRange ) {
- sortOrder = function( a, b ) {
- if ( !a.ownerDocument || !b.ownerDocument ) {
- if ( a == b ) {
- hasDuplicate = true;
+
+ // Otherwise they're somewhere else in the tree so we need
+ // to build up a full list of the parentNodes for comparison
+ while ( cur ) {
+ ap.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ cur = bup;
+
+ while ( cur ) {
+ bp.unshift( cur );
+ cur = cur.parentNode;
+ }
+
+ al = ap.length;
+ bl = bp.length;
+
+ // Start walking down the tree looking for a discrepancy
+ for ( var i = 0; i < al && i < bl; i++ ) {
+ if ( ap[i] !== bp[i] ) {
+ return siblingCheck( ap[i], bp[i] );
}
- return a.ownerDocument ? -1 : 1;
}
- var aRange = a.ownerDocument.createRange(), bRange = b.ownerDocument.createRange();
- aRange.setStart(a, 0);
- aRange.setEnd(a, 0);
- bRange.setStart(b, 0);
- bRange.setEnd(b, 0);
- var ret = aRange.compareBoundaryPoints(Range.START_TO_END, bRange);
- if ( ret === 0 ) {
- hasDuplicate = true;
+ // We ended someplace up the tree so do a sibling check
+ return i === al ?
+ siblingCheck( a, bp[i], -1 ) :
+ siblingCheck( ap[i], b, 1 );
+ };
+
+ siblingCheck = function( a, b, ret ) {
+ if ( a === b ) {
+ return ret;
}
- return ret;
+
+ var cur = a.nextSibling;
+
+ while ( cur ) {
+ if ( cur === b ) {
+ return -1;
+ }
+
+ cur = cur.nextSibling;
+ }
+
+ return 1;
};
}
// Utility function for retreiving the text value of an array of DOM nodes
-function getText( elems ) {
+Sizzle.getText = function( elems ) {
var ret = "", elem;
for ( var i = 0; elems[i]; i++ ) {
@@ -3428,43 +4781,52 @@ function getText( elems ) {
// Traverse everything else, except comment nodes
} else if ( elem.nodeType !== 8 ) {
- ret += getText( elem.childNodes );
+ ret += Sizzle.getText( elem.childNodes );
}
}
return ret;
-}
+};
// Check to see if the browser returns elements by name when
// querying by getElementById (and provide a workaround)
(function(){
// We're going to inject a fake input element with a specified name
var form = document.createElement("div"),
- id = "script" + (new Date).getTime();
+ id = "script" + (new Date()).getTime(),
+ root = document.documentElement;
+
form.innerHTML = "<a name='" + id + "'/>";
// Inject it into the root element, check its status, and remove it quickly
- var root = document.documentElement;
root.insertBefore( form, root.firstChild );
// The workaround has to do additional checks after a getElementById
// Which slows things down for other browsers (hence the branching)
if ( document.getElementById( id ) ) {
- Expr.find.ID = function(match, context, isXML){
+ Expr.find.ID = function( match, context, isXML ) {
if ( typeof context.getElementById !== "undefined" && !isXML ) {
var m = context.getElementById(match[1]);
- return m ? m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ? [m] : undefined : [];
+
+ return m ?
+ m.id === match[1] || typeof m.getAttributeNode !== "undefined" && m.getAttributeNode("id").nodeValue === match[1] ?
+ [m] :
+ undefined :
+ [];
}
};
- Expr.filter.ID = function(elem, match){
+ Expr.filter.ID = function( elem, match ) {
var node = typeof elem.getAttributeNode !== "undefined" && elem.getAttributeNode("id");
+
return elem.nodeType === 1 && node && node.nodeValue === match;
};
}
root.removeChild( form );
- root = form = null; // release memory in IE
+
+ // release memory in IE
+ root = form = null;
})();
(function(){
@@ -3477,8 +4839,8 @@ function getText( elems ) {
// Make sure no comments are found
if ( div.getElementsByTagName("*").length > 0 ) {
- Expr.find.TAG = function(match, context){
- var results = context.getElementsByTagName(match[1]);
+ Expr.find.TAG = function( match, context ) {
+ var results = context.getElementsByTagName( match[1] );
// Filter out possible comments
if ( match[1] === "*" ) {
@@ -3499,19 +4861,25 @@ function getText( elems ) {
// Check to see if an attribute returns normalized href attributes
div.innerHTML = "<a href='#'></a>";
+
if ( div.firstChild && typeof div.firstChild.getAttribute !== "undefined" &&
div.firstChild.getAttribute("href") !== "#" ) {
- Expr.attrHandle.href = function(elem){
- return elem.getAttribute("href", 2);
+
+ Expr.attrHandle.href = function( elem ) {
+ return elem.getAttribute( "href", 2 );
};
}
- div = null; // release memory in IE
+ // release memory in IE
+ div = null;
})();
if ( document.querySelectorAll ) {
(function(){
- var oldSizzle = Sizzle, div = document.createElement("div");
+ var oldSizzle = Sizzle,
+ div = document.createElement("div"),
+ id = "__sizzle__";
+
div.innerHTML = "<p class='TEST'></p>";
// Safari can't handle uppercase or unicode characters when
@@ -3520,15 +4888,86 @@ if ( document.querySelectorAll ) {
return;
}
- Sizzle = function(query, context, extra, seed){
+ Sizzle = function( query, context, extra, seed ) {
context = context || document;
// Only use querySelectorAll on non-XML documents
// (ID selectors don't work in non-HTML documents)
- if ( !seed && context.nodeType === 9 && !isXML(context) ) {
- try {
- return makeArray( context.querySelectorAll(query), extra );
- } catch(e){}
+ if ( !seed && !Sizzle.isXML(context) ) {
+ // See if we find a selector to speed up
+ var match = /^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec( query );
+
+ if ( match && (context.nodeType === 1 || context.nodeType === 9) ) {
+ // Speed-up: Sizzle("TAG")
+ if ( match[1] ) {
+ return makeArray( context.getElementsByTagName( query ), extra );
+
+ // Speed-up: Sizzle(".CLASS")
+ } else if ( match[2] && Expr.find.CLASS && context.getElementsByClassName ) {
+ return makeArray( context.getElementsByClassName( match[2] ), extra );
+ }
+ }
+
+ if ( context.nodeType === 9 ) {
+ // Speed-up: Sizzle("body")
+ // The body element only exists once, optimize finding it
+ if ( query === "body" && context.body ) {
+ return makeArray( [ context.body ], extra );
+
+ // Speed-up: Sizzle("#ID")
+ } else if ( match && match[3] ) {
+ var elem = context.getElementById( match[3] );
+
+ // Check parentNode to catch when Blackberry 4.6 returns
+ // nodes that are no longer in the document #6963
+ if ( elem && elem.parentNode ) {
+ // Handle the case where IE and Opera return items
+ // by name instead of ID
+ if ( elem.id === match[3] ) {
+ return makeArray( [ elem ], extra );
+ }
+
+ } else {
+ return makeArray( [], extra );
+ }
+ }
+
+ try {
+ return makeArray( context.querySelectorAll(query), extra );
+ } catch(qsaError) {}
+
+ // qSA works strangely on Element-rooted queries
+ // We can work around this by specifying an extra ID on the root
+ // and working up from there (Thanks to Andrew Dupont for the technique)
+ // IE 8 doesn't work on object elements
+ } else if ( context.nodeType === 1 && context.nodeName.toLowerCase() !== "object" ) {
+ var oldContext = context,
+ old = context.getAttribute( "id" ),
+ nid = old || id,
+ hasParent = context.parentNode,
+ relativeHierarchySelector = /^\s*[+~]/.test( query );
+
+ if ( !old ) {
+ context.setAttribute( "id", nid );
+ } else {
+ nid = nid.replace( /'/g, "\\$&" );
+ }
+ if ( relativeHierarchySelector && hasParent ) {
+ context = context.parentNode;
+ }
+
+ try {
+ if ( !relativeHierarchySelector || hasParent ) {
+ return makeArray( context.querySelectorAll( "[id='" + nid + "'] " + query ), extra );
+ }
+
+ } catch(pseudoError) {
+ } finally {
+ if ( !old ) {
+ oldContext.removeAttribute( "id" );
+ }
+ }
+ }
}
return oldSizzle(query, context, extra, seed);
@@ -3538,11 +4977,56 @@ if ( document.querySelectorAll ) {
Sizzle[ prop ] = oldSizzle[ prop ];
}
- div = null; // release memory in IE
+ // release memory in IE
+ div = null;
})();
}
(function(){
+ var html = document.documentElement,
+ matches = html.matchesSelector || html.mozMatchesSelector || html.webkitMatchesSelector || html.msMatchesSelector;
+
+ if ( matches ) {
+ // Check to see if it's possible to do matchesSelector
+ // on a disconnected node (IE 9 fails this)
+ var disconnectedMatch = !matches.call( document.createElement( "div" ), "div" ),
+ pseudoWorks = false;
+
+ try {
+ // This should fail with an exception
+ // Gecko does not error, returns false instead
+ matches.call( document.documentElement, "[test!='']:sizzle" );
+
+ } catch( pseudoError ) {
+ pseudoWorks = true;
+ }
+
+ Sizzle.matchesSelector = function( node, expr ) {
+ // Make sure that attribute selectors are quoted
+ expr = expr.replace(/\=\s*([^'"\]]*)\s*\]/g, "='$1']");
+
+ if ( !Sizzle.isXML( node ) ) {
+ try {
+ if ( pseudoWorks || !Expr.match.PSEUDO.test( expr ) && !/!=/.test( expr ) ) {
+ var ret = matches.call( node, expr );
+
+ // IE 9's matchesSelector returns false on disconnected nodes
+ if ( ret || !disconnectedMatch ||
+ // As well, disconnected nodes are said to be in a document
+ // fragment in IE 9, so check for that
+ node.document && node.document.nodeType !== 11 ) {
+ return ret;
+ }
+ }
+ } catch(e) {}
+ }
+
+ return Sizzle(expr, null, null, [node]).length > 0;
+ };
+ }
+})();
+
+(function(){
var div = document.createElement("div");
div.innerHTML = "<div class='test e'></div><div class='test'></div>";
@@ -3561,22 +5045,25 @@ if ( document.querySelectorAll ) {
}
Expr.order.splice(1, 0, "CLASS");
- Expr.find.CLASS = function(match, context, isXML) {
+ Expr.find.CLASS = function( match, context, isXML ) {
if ( typeof context.getElementsByClassName !== "undefined" && !isXML ) {
return context.getElementsByClassName(match[1]);
}
};
- div = null; // release memory in IE
+ // release memory in IE
+ div = null;
})();
function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
+
if ( elem ) {
- elem = elem[dir];
var match = false;
+ elem = elem[dir];
+
while ( elem ) {
if ( elem.sizcache === doneName ) {
match = checkSet[elem.sizset];
@@ -3604,9 +5091,11 @@ function dirNodeCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
for ( var i = 0, l = checkSet.length; i < l; i++ ) {
var elem = checkSet[i];
+
if ( elem ) {
- elem = elem[dir];
var match = false;
+
+ elem = elem[dir];
while ( elem ) {
if ( elem.sizcache === doneName ) {
@@ -3619,6 +5108,7 @@ function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
elem.sizcache = doneName;
elem.sizset = i;
}
+
if ( typeof cur !== "string" ) {
if ( elem === cur ) {
match = true;
@@ -3639,21 +5129,34 @@ function dirCheck( dir, cur, doneName, checkSet, nodeCheck, isXML ) {
}
}
-var contains = document.compareDocumentPosition ? function(a, b){
- return !!(a.compareDocumentPosition(b) & 16);
-} : function(a, b){
- return a !== b && (a.contains ? a.contains(b) : true);
-};
+if ( document.documentElement.contains ) {
+ Sizzle.contains = function( a, b ) {
+ return a !== b && (a.contains ? a.contains(b) : true);
+ };
+
+} else if ( document.documentElement.compareDocumentPosition ) {
+ Sizzle.contains = function( a, b ) {
+ return !!(a.compareDocumentPosition(b) & 16);
+ };
+
+} else {
+ Sizzle.contains = function() {
+ return false;
+ };
+}
-var isXML = function(elem){
+Sizzle.isXML = function( elem ) {
// documentElement is verified for cases where it doesn't yet exist
// (such as loading iframes in IE - #4833)
var documentElement = (elem ? elem.ownerDocument || elem : 0).documentElement;
+
return documentElement ? documentElement.nodeName !== "HTML" : false;
};
-var posProcess = function(selector, context){
- var tmpSet = [], later = "", match,
+var posProcess = function( selector, context ) {
+ var match,
+ tmpSet = [],
+ later = "",
root = context.nodeType ? [context] : context;
// Position selectors must be done after the filter
@@ -3677,62 +5180,55 @@ jQuery.find = Sizzle;
jQuery.expr = Sizzle.selectors;
jQuery.expr[":"] = jQuery.expr.filters;
jQuery.unique = Sizzle.uniqueSort;
-jQuery.text = getText;
-jQuery.isXMLDoc = isXML;
-jQuery.contains = contains;
-
-return;
+jQuery.text = Sizzle.getText;
+jQuery.isXMLDoc = Sizzle.isXML;
+jQuery.contains = Sizzle.contains;
-window.Sizzle = Sizzle;
})();
+
+
var runtil = /Until$/,
rparentsprev = /^(?:parents|prevUntil|prevAll)/,
// Note: This RegExp should be improved, or likely pulled from Sizzle
rmultiselector = /,/,
- slice = Array.prototype.slice;
-
-// Implement the identical functionality for filter and not
-var winnow = function( elements, qualifier, keep ) {
- if ( jQuery.isFunction( qualifier ) ) {
- return jQuery.grep(elements, function( elem, i ) {
- return !!qualifier.call( elem, i, elem ) === keep;
- });
-
- } else if ( qualifier.nodeType ) {
- return jQuery.grep(elements, function( elem, i ) {
- return (elem === qualifier) === keep;
- });
+ isSimple = /^.[^:#\[\.,]*$/,
+ slice = Array.prototype.slice,
+ POS = jQuery.expr.match.POS,
+ // methods guaranteed to produce a unique set when starting from a unique set
+ guaranteedUnique = {
+ children: true,
+ contents: true,
+ next: true,
+ prev: true
+ };
- } else if ( typeof qualifier === "string" ) {
- var filtered = jQuery.grep(elements, function( elem ) {
- return elem.nodeType === 1;
- });
+jQuery.fn.extend({
+ find: function( selector ) {
+ var self = this,
+ i, l;
- if ( isSimple.test( qualifier ) ) {
- return jQuery.filter(qualifier, filtered, !keep);
- } else {
- qualifier = jQuery.filter( qualifier, filtered );
+ if ( typeof selector !== "string" ) {
+ return jQuery( selector ).filter(function() {
+ for ( i = 0, l = self.length; i < l; i++ ) {
+ if ( jQuery.contains( self[ i ], this ) ) {
+ return true;
+ }
+ }
+ });
}
- }
-
- return jQuery.grep(elements, function( elem, i ) {
- return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
- });
-};
-jQuery.fn.extend({
- find: function( selector ) {
- var ret = this.pushStack( "", "find", selector ), length = 0;
+ var ret = this.pushStack( "", "find", selector ),
+ length, n, r;
- for ( var i = 0, l = this.length; i < l; i++ ) {
+ for ( i = 0, l = this.length; i < l; i++ ) {
length = ret.length;
jQuery.find( selector, this[i], ret );
if ( i > 0 ) {
// Make sure that the results are unique
- for ( var n = length; n < ret.length; n++ ) {
- for ( var r = 0; r < length; r++ ) {
+ for ( n = length; n < ret.length; n++ ) {
+ for ( r = 0; r < length; r++ ) {
if ( ret[r] === ret[n] ) {
ret.splice(n--, 1);
break;
@@ -3763,21 +5259,28 @@ jQuery.fn.extend({
filter: function( selector ) {
return this.pushStack( winnow(this, selector, true), "filter", selector );
},
-
+
is: function( selector ) {
- return !!selector && jQuery.filter( selector, this ).length > 0;
+ return !!selector && ( typeof selector === "string" ?
+ jQuery.filter( selector, this ).length > 0 :
+ this.filter( selector ).length > 0 );
},
closest: function( selectors, context ) {
+ var ret = [], i, l, cur = this[0];
+
+ // Array
if ( jQuery.isArray( selectors ) ) {
- var ret = [], cur = this[0], match, matches = {}, selector;
+ var match, selector,
+ matches = {},
+ level = 1;
if ( cur && selectors.length ) {
- for ( var i = 0, l = selectors.length; i < l; i++ ) {
+ for ( i = 0, l = selectors.length; i < l; i++ ) {
selector = selectors[i];
- if ( !matches[selector] ) {
- matches[selector] = jQuery.expr.match.POS.test( selector ) ?
+ if ( !matches[ selector ] ) {
+ matches[ selector ] = POS.test( selector ) ?
jQuery( selector, context || this.context ) :
selector;
}
@@ -3785,43 +5288,62 @@ jQuery.fn.extend({
while ( cur && cur.ownerDocument && cur !== context ) {
for ( selector in matches ) {
- match = matches[selector];
+ match = matches[ selector ];
- if ( match.jquery ? match.index(cur) > -1 : jQuery(cur).is(match) ) {
- ret.push({ selector: selector, elem: cur });
- delete matches[selector];
+ if ( match.jquery ? match.index( cur ) > -1 : jQuery( cur ).is( match ) ) {
+ ret.push({ selector: selector, elem: cur, level: level });
}
}
+
cur = cur.parentNode;
+ level++;
}
}
return ret;
}
- var pos = jQuery.expr.match.POS.test( selectors ) ?
- jQuery( selectors, context || this.context ) : null;
+ // String
+ var pos = POS.test( selectors ) || typeof selectors !== "string" ?
+ jQuery( selectors, context || this.context ) :
+ 0;
- return this.map(function( i, cur ) {
- while ( cur && cur.ownerDocument && cur !== context ) {
- if ( pos ? pos.index(cur) > -1 : jQuery(cur).is(selectors) ) {
- return cur;
+ for ( i = 0, l = this.length; i < l; i++ ) {
+ cur = this[i];
+
+ while ( cur ) {
+ if ( pos ? pos.index(cur) > -1 : jQuery.find.matchesSelector(cur, selectors) ) {
+ ret.push( cur );
+ break;
+
+ } else {
+ cur = cur.parentNode;
+ if ( !cur || !cur.ownerDocument || cur === context || cur.nodeType === 11 ) {
+ break;
+ }
}
- cur = cur.parentNode;
}
- return null;
- });
+ }
+
+ ret = ret.length > 1 ? jQuery.unique( ret ) : ret;
+
+ return this.pushStack( ret, "closest", selectors );
},
-
+
// Determine the position of an element within
// the matched set of elements
index: function( elem ) {
- if ( !elem || typeof elem === "string" ) {
- return jQuery.inArray( this[0],
- // If it receives a string, the selector is used
- // If it receives nothing, the siblings are used
- elem ? jQuery( elem ) : this.parent().children() );
+
+ // No argument, return index in parent
+ if ( !elem ) {
+ return ( this[0] && this[0].parentNode ) ? this.prevAll().length : -1;
}
+
+ // index in selector
+ if ( typeof elem === "string" ) {
+ return jQuery.inArray( this[0], jQuery( elem ) );
+ }
+
// Locate the position of the desired element
return jQuery.inArray(
// If it receives a jQuery object, the first element is used
@@ -3830,8 +5352,8 @@ jQuery.fn.extend({
add: function( selector, context ) {
var set = typeof selector === "string" ?
- jQuery( selector, context || this.context ) :
- jQuery.makeArray( selector ),
+ jQuery( selector, context ) :
+ jQuery.makeArray( selector && selector.nodeType ? [ selector ] : selector ),
all = jQuery.merge( this.get(), set );
return this.pushStack( isDisconnected( set[0] ) || isDisconnected( all[0] ) ?
@@ -3892,8 +5414,13 @@ jQuery.each({
}
}, function( name, fn ) {
jQuery.fn[ name ] = function( until, selector ) {
- var ret = jQuery.map( this, fn, until );
-
+ var ret = jQuery.map( this, fn, until ),
+ // The variable 'args' was introduced in
+ // https://github.com/jquery/jquery/commit/52a0238
+ // to work around a bug in Chrome 10 (Dev) and should be removed when the bug is fixed.
+ // http://code.google.com/p/v8/issues/detail?id=1050
+ args = slice.call(arguments);
+
if ( !runtil.test( name ) ) {
selector = until;
}
@@ -3902,13 +5429,13 @@ jQuery.each({
ret = jQuery.filter( selector, ret );
}
- ret = this.length > 1 ? jQuery.unique( ret ) : ret;
+ ret = this.length > 1 && !guaranteedUnique[ name ] ? jQuery.unique( ret ) : ret;
if ( (this.length > 1 || rmultiselector.test( selector )) && rparentsprev.test( name ) ) {
ret = ret.reverse();
}
- return this.pushStack( ret, name, slice.call(arguments).join(",") );
+ return this.pushStack( ret, name, args.join(",") );
};
});
@@ -3918,11 +5445,15 @@ jQuery.extend({
expr = ":not(" + expr + ")";
}
- return jQuery.find.matches(expr, elems);
+ return elems.length === 1 ?
+ jQuery.find.matchesSelector(elems[0], expr) ? [ elems[0] ] : [] :
+ jQuery.find.matches(expr, elems);
},
-
+
dir: function( elem, dir, until ) {
- var matched = [], cur = elem[dir];
+ var matched = [],
+ cur = elem[ dir ];
+
while ( cur && cur.nodeType !== 9 && (until === undefined || cur.nodeType !== 1 || !jQuery( cur ).is( until )) ) {
if ( cur.nodeType === 1 ) {
matched.push( cur );
@@ -3957,20 +5488,56 @@ jQuery.extend({
return r;
}
});
+
+// Implement the identical functionality for filter and not
+function winnow( elements, qualifier, keep ) {
+
+ // Can't pass null or undefined to indexOf in Firefox 4
+ // Set to 0 to skip string check
+ qualifier = qualifier || 0;
+
+ if ( jQuery.isFunction( qualifier ) ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ var retVal = !!qualifier.call( elem, i, elem );
+ return retVal === keep;
+ });
+
+ } else if ( qualifier.nodeType ) {
+ return jQuery.grep(elements, function( elem, i ) {
+ return (elem === qualifier) === keep;
+ });
+
+ } else if ( typeof qualifier === "string" ) {
+ var filtered = jQuery.grep(elements, function( elem ) {
+ return elem.nodeType === 1;
+ });
+
+ if ( isSimple.test( qualifier ) ) {
+ return jQuery.filter(qualifier, filtered, !keep);
+ } else {
+ qualifier = jQuery.filter( qualifier, filtered );
+ }
+ }
+
+ return jQuery.grep(elements, function( elem, i ) {
+ return (jQuery.inArray( elem, qualifier ) >= 0) === keep;
+ });
+}
+
+
+
+
var rinlinejQuery = / jQuery\d+="(?:\d+|null)"/g,
rleadingWhitespace = /^\s+/,
- rxhtmlTag = /(<([\w:]+)[^>]*?)\/>/g,
- rselfClosing = /^(?:area|br|col|embed|hr|img|input|link|meta|param)$/i,
+ rxhtmlTag = /<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/ig,
rtagName = /<([\w:]+)/,
rtbody = /<tbody/i,
rhtml = /<|&#?\w+;/,
- rnocache = /<script|<object|<embed|<option|<style/i,
- rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i, // checked="checked" or checked (html5)
- fcloseTag = function( all, front, tag ) {
- return rselfClosing.test( tag ) ?
- all :
- front + "></" + tag + ">";
- },
+ rnocache = /<(?:script|object|embed|option|style)/i,
+ // checked="checked" or checked
+ rchecked = /checked\s*(?:[^=]|=\s*.checked.)/i,
+ rscriptType = /\/(java|ecma)script/i,
+ rcleanScript = /^\s*<!(?:\[CDATA\[|\-\-)/,
wrapMap = {
option: [ 1, "<select multiple='multiple'>", "</select>" ],
legend: [ 1, "<fieldset>", "</fieldset>" ],
@@ -3995,7 +5562,8 @@ jQuery.fn.extend({
text: function( text ) {
if ( jQuery.isFunction(text) ) {
return this.each(function(i) {
- var self = jQuery(this);
+ var self = jQuery( this );
+
self.text( text.call(this, i, self.text()) );
});
}
@@ -4030,7 +5598,7 @@ jQuery.fn.extend({
}
return elem;
- }).append(this);
+ }).append( this );
}
return this;
@@ -4044,7 +5612,8 @@ jQuery.fn.extend({
}
return this.each(function() {
- var self = jQuery( this ), contents = self.contents();
+ var self = jQuery( this ),
+ contents = self.contents();
if ( contents.length ) {
contents.wrapAll( html );
@@ -4108,7 +5677,7 @@ jQuery.fn.extend({
return set;
}
},
-
+
// keepData is for internal use only--do not document
remove: function( selector, keepData ) {
for ( var i = 0, elem; (elem = this[i]) != null; i++ ) {
@@ -4119,11 +5688,11 @@ jQuery.fn.extend({
}
if ( elem.parentNode ) {
- elem.parentNode.removeChild( elem );
+ elem.parentNode.removeChild( elem );
}
}
}
-
+
return this;
},
@@ -4139,46 +5708,17 @@ jQuery.fn.extend({
elem.removeChild( elem.firstChild );
}
}
-
+
return this;
},
- clone: function( events ) {
- // Do the clone
- var ret = this.map(function() {
- if ( !jQuery.support.noCloneEvent && !jQuery.isXMLDoc(this) ) {
- // IE copies events bound via attachEvent when
- // using cloneNode. Calling detachEvent on the
- // clone will also remove the events from the orignal
- // In order to get around this, we use innerHTML.
- // Unfortunately, this means some modifications to
- // attributes in IE that are actually only stored
- // as properties will not be copied (such as the
- // the name attribute on an input).
- var html = this.outerHTML, ownerDocument = this.ownerDocument;
- if ( !html ) {
- var div = ownerDocument.createElement("div");
- div.appendChild( this.cloneNode(true) );
- html = div.innerHTML;
- }
-
- return jQuery.clean([html.replace(rinlinejQuery, "")
- // Handle the case in IE 8 where action=/test/> self-closes a tag
- .replace(/=([^="'>\s]+\/)>/g, '="$1">')
- .replace(rleadingWhitespace, "")], ownerDocument)[0];
- } else {
- return this.cloneNode(true);
- }
- });
+ clone: function( dataAndEvents, deepDataAndEvents ) {
+ dataAndEvents = dataAndEvents == null ? false : dataAndEvents;
+ deepDataAndEvents = deepDataAndEvents == null ? dataAndEvents : deepDataAndEvents;
- // Copy the events from the original to the clone
- if ( events === true ) {
- cloneCopyEvent( this, ret );
- cloneCopyEvent( this.find("*"), ret.find("*") );
- }
-
- // Return the cloned set
- return ret;
+ return this.map( function () {
+ return jQuery.clone( this, dataAndEvents, deepDataAndEvents );
+ });
},
html: function( value ) {
@@ -4192,7 +5732,7 @@ jQuery.fn.extend({
(jQuery.support.leadingWhitespace || !rleadingWhitespace.test( value )) &&
!wrapMap[ (rtagName.exec( value ) || ["", ""])[1].toLowerCase() ] ) {
- value = value.replace(rxhtmlTag, fcloseTag);
+ value = value.replace(rxhtmlTag, "<$1></$2>");
try {
for ( var i = 0, l = this.length; i < l; i++ ) {
@@ -4210,10 +5750,9 @@ jQuery.fn.extend({
} else if ( jQuery.isFunction( value ) ) {
this.each(function(i){
- var self = jQuery(this), old = self.html();
- self.empty().append(function(){
- return value.call( this, i, old );
- });
+ var self = jQuery( this );
+
+ self.html( value.call(this, i, self.html()) );
});
} else {
@@ -4235,13 +5774,14 @@ jQuery.fn.extend({
}
if ( typeof value !== "string" ) {
- value = jQuery(value).detach();
+ value = jQuery( value ).detach();
}
return this.each(function() {
- var next = this.nextSibling, parent = this.parentNode;
+ var next = this.nextSibling,
+ parent = this.parentNode;
- jQuery(this).remove();
+ jQuery( this ).remove();
if ( next ) {
jQuery(next).before( value );
@@ -4250,7 +5790,9 @@ jQuery.fn.extend({
}
});
} else {
- return this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value );
+ return this.length ?
+ this.pushStack( jQuery(jQuery.isFunction(value) ? value() : value), "replaceWith", value ) :
+ this;
}
},
@@ -4259,7 +5801,9 @@ jQuery.fn.extend({
},
domManip: function( args, table, callback ) {
- var results, first, value = args[0], scripts = [], fragment, parent;
+ var results, first, fragment, parent,
+ value = args[0],
+ scripts = [];
// We can't cloneNode fragments that contain checked, in WebKit
if ( !jQuery.support.checkClone && arguments.length === 3 && typeof value === "string" && rchecked.test( value ) ) {
@@ -4284,11 +5828,11 @@ jQuery.fn.extend({
results = { fragment: parent };
} else {
- results = buildFragment( args, this, scripts );
+ results = jQuery.buildFragment( args, this, scripts );
}
-
+
fragment = results.fragment;
-
+
if ( fragment.childNodes.length === 1 ) {
first = fragment = fragment.firstChild;
} else {
@@ -4298,13 +5842,20 @@ jQuery.fn.extend({
if ( first ) {
table = table && jQuery.nodeName( first, "tr" );
- for ( var i = 0, l = this.length; i < l; i++ ) {
+ for ( var i = 0, l = this.length, lastIndex = l - 1; i < l; i++ ) {
callback.call(
table ?
root(this[i], first) :
this[i],
- i > 0 || results.cacheable || this.length > 1 ?
- fragment.cloneNode(true) :
+ // Make sure that we do not leak memory by inadvertently discarding
+ // the original fragment (which might have attached data) instead of
+ // using it; in addition, use the original fragment object for the last
+ // item instead of first because it can end up being emptied incorrectly
+ // in certain situations (Bug #8070).
+ // Fragments from the fragment cache must always be cloned and never used
+ // in place.
+ results.cacheable || (l > 1 && i < lastIndex) ?
+ jQuery.clone( fragment, true, true ) :
fragment
);
}
@@ -4316,56 +5867,132 @@ jQuery.fn.extend({
}
return this;
-
- function root( elem, cur ) {
- return jQuery.nodeName(elem, "table") ?
- (elem.getElementsByTagName("tbody")[0] ||
- elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
- elem;
- }
}
});
-function cloneCopyEvent(orig, ret) {
- var i = 0;
+function root( elem, cur ) {
+ return jQuery.nodeName(elem, "table") ?
+ (elem.getElementsByTagName("tbody")[0] ||
+ elem.appendChild(elem.ownerDocument.createElement("tbody"))) :
+ elem;
+}
- ret.each(function() {
- if ( this.nodeName !== (orig[i] && orig[i].nodeName) ) {
- return;
- }
+function cloneCopyEvent( src, dest ) {
- var oldData = jQuery.data( orig[i++] ), curData = jQuery.data( this, oldData ), events = oldData && oldData.events;
+ if ( dest.nodeType !== 1 || !jQuery.hasData( src ) ) {
+ return;
+ }
+
+ var internalKey = jQuery.expando,
+ oldData = jQuery.data( src ),
+ curData = jQuery.data( dest, oldData );
+
+ // Switch to use the internal data object, if it exists, for the next
+ // stage of data copying
+ if ( (oldData = oldData[ internalKey ]) ) {
+ var events = oldData.events;
+ curData = curData[ internalKey ] = jQuery.extend({}, oldData);
if ( events ) {
delete curData.handle;
curData.events = {};
for ( var type in events ) {
- for ( var handler in events[ type ] ) {
- jQuery.event.add( this, type, events[ type ][ handler ], events[ type ][ handler ].data );
+ for ( var i = 0, l = events[ type ].length; i < l; i++ ) {
+ jQuery.event.add( dest, type + ( events[ type ][ i ].namespace ? "." : "" ) + events[ type ][ i ].namespace, events[ type ][ i ], events[ type ][ i ].data );
}
}
}
- });
+ }
+}
+
+function cloneFixAttributes( src, dest ) {
+ var nodeName;
+
+ // We do not need to do anything for non-Elements
+ if ( dest.nodeType !== 1 ) {
+ return;
+ }
+
+ // clearAttributes removes the attributes, which we don't want,
+ // but also removes the attachEvent events, which we *do* want
+ if ( dest.clearAttributes ) {
+ dest.clearAttributes();
+ }
+
+ // mergeAttributes, in contrast, only merges back on the
+ // original attributes, not the events
+ if ( dest.mergeAttributes ) {
+ dest.mergeAttributes( src );
+ }
+
+ nodeName = dest.nodeName.toLowerCase();
+
+ // IE6-8 fail to clone children inside object elements that use
+ // the proprietary classid attribute value (rather than the type
+ // attribute) to identify the type of content to display
+ if ( nodeName === "object" ) {
+ dest.outerHTML = src.outerHTML;
+
+ } else if ( nodeName === "input" && (src.type === "checkbox" || src.type === "radio") ) {
+ // IE6-8 fails to persist the checked state of a cloned checkbox
+ // or radio button. Worse, IE6-7 fail to give the cloned element
+ // a checked appearance if the defaultChecked value isn't also set
+ if ( src.checked ) {
+ dest.defaultChecked = dest.checked = src.checked;
+ }
+
+ // IE6-7 get confused and end up setting the value of a cloned
+ // checkbox/radio button to an empty string instead of "on"
+ if ( dest.value !== src.value ) {
+ dest.value = src.value;
+ }
+
+ // IE6-8 fails to return the selected option to the default selected
+ // state when cloning options
+ } else if ( nodeName === "option" ) {
+ dest.selected = src.defaultSelected;
+
+ // IE6-8 fails to set the defaultValue to the correct value when
+ // cloning other types of input fields
+ } else if ( nodeName === "input" || nodeName === "textarea" ) {
+ dest.defaultValue = src.defaultValue;
+ }
+
+ // Event data gets referenced instead of copied if the expando
+ // gets copied too
+ dest.removeAttribute( jQuery.expando );
}
-function buildFragment( args, nodes, scripts ) {
- var fragment, cacheable, cacheresults,
- doc = (nodes && nodes[0] ? nodes[0].ownerDocument || nodes[0] : document);
+jQuery.buildFragment = function( args, nodes, scripts ) {
+ var fragment, cacheable, cacheresults, doc;
+
+ // nodes may contain either an explicit document object,
+ // a jQuery collection or context object.
+ // If nodes[0] contains a valid object to assign to doc
+ if ( nodes && nodes[0] ) {
+ doc = nodes[0].ownerDocument || nodes[0];
+ }
+
+ // Ensure that an attr object doesn't incorrectly stand in as a document object
+ // Chrome and Firefox seem to allow this to occur and will throw exception
+ // Fixes #8950
+ if ( !doc.createDocumentFragment ) {
+ doc = document;
+ }
- // Only cache "small" (1/2 KB) strings that are associated with the main document
+ // Only cache "small" (1/2 KB) HTML strings that are associated with the main document
// Cloning options loses the selected state, so don't cache them
// IE 6 doesn't like it when you put <object> or <embed> elements in a fragment
// Also, WebKit does not clone 'checked' attributes on cloneNode, so don't cache
if ( args.length === 1 && typeof args[0] === "string" && args[0].length < 512 && doc === document &&
- !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
+ args[0].charAt(0) === "<" && !rnocache.test( args[0] ) && (jQuery.support.checkClone || !rchecked.test( args[0] )) ) {
cacheable = true;
+
cacheresults = jQuery.fragments[ args[0] ];
- if ( cacheresults ) {
- if ( cacheresults !== 1 ) {
- fragment = cacheresults;
- }
+ if ( cacheresults && cacheresults !== 1 ) {
+ fragment = cacheresults;
}
}
@@ -4379,7 +6006,7 @@ function buildFragment( args, nodes, scripts ) {
}
return { fragment: fragment, cacheable: cacheable };
-}
+};
jQuery.fragments = {};
@@ -4391,27 +6018,109 @@ jQuery.each({
replaceAll: "replaceWith"
}, function( name, original ) {
jQuery.fn[ name ] = function( selector ) {
- var ret = [], insert = jQuery( selector ),
+ var ret = [],
+ insert = jQuery( selector ),
parent = this.length === 1 && this[0].parentNode;
-
+
if ( parent && parent.nodeType === 11 && parent.childNodes.length === 1 && insert.length === 1 ) {
insert[ original ]( this[0] );
return this;
-
+
} else {
for ( var i = 0, l = insert.length; i < l; i++ ) {
var elems = (i > 0 ? this.clone(true) : this).get();
- jQuery.fn[ original ].apply( jQuery(insert[i]), elems );
+ jQuery( insert[i] )[ original ]( elems );
ret = ret.concat( elems );
}
-
+
return this.pushStack( ret, name, insert.selector );
}
};
});
+function getAll( elem ) {
+ if ( "getElementsByTagName" in elem ) {
+ return elem.getElementsByTagName( "*" );
+
+ } else if ( "querySelectorAll" in elem ) {
+ return elem.querySelectorAll( "*" );
+
+ } else {
+ return [];
+ }
+}
+
+// Used in clean, fixes the defaultChecked property
+function fixDefaultChecked( elem ) {
+ if ( elem.type === "checkbox" || elem.type === "radio" ) {
+ elem.defaultChecked = elem.checked;
+ }
+}
+// Finds all inputs and passes them to fixDefaultChecked
+function findInputs( elem ) {
+ if ( jQuery.nodeName( elem, "input" ) ) {
+ fixDefaultChecked( elem );
+ } else if ( "getElementsByTagName" in elem ) {
+ jQuery.grep( elem.getElementsByTagName("input"), fixDefaultChecked );
+ }
+}
+
jQuery.extend({
+ clone: function( elem, dataAndEvents, deepDataAndEvents ) {
+ var clone = elem.cloneNode(true),
+ srcElements,
+ destElements,
+ i;
+
+ if ( (!jQuery.support.noCloneEvent || !jQuery.support.noCloneChecked) &&
+ (elem.nodeType === 1 || elem.nodeType === 11) && !jQuery.isXMLDoc(elem) ) {
+ // IE copies events bound via attachEvent when using cloneNode.
+ // Calling detachEvent on the clone will also remove the events
+ // from the original. In order to get around this, we use some
+ // proprietary methods to clear the events. Thanks to MooTools
+ // guys for this hotness.
+
+ cloneFixAttributes( elem, clone );
+
+ // Using Sizzle here is crazy slow, so we use getElementsByTagName
+ // instead
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ // Weird iteration because IE will replace the length property
+ // with an element if you are cloning the body and one of the
+ // elements on the page has a name or id of "length"
+ for ( i = 0; srcElements[i]; ++i ) {
+ // Ensure that the destination node is not null; Fixes #9587
+ if ( destElements[i] ) {
+ cloneFixAttributes( srcElements[i], destElements[i] );
+ }
+ }
+ }
+
+ // Copy the events from the original to the clone
+ if ( dataAndEvents ) {
+ cloneCopyEvent( elem, clone );
+
+ if ( deepDataAndEvents ) {
+ srcElements = getAll( elem );
+ destElements = getAll( clone );
+
+ for ( i = 0; srcElements[i]; ++i ) {
+ cloneCopyEvent( srcElements[i], destElements[i] );
+ }
+ }
+ }
+
+ srcElements = destElements = null;
+
+ // Return the cloned set
+ return clone;
+ },
+
clean: function( elems, context, fragment, scripts ) {
+ var checkScriptType;
+
context = context || document;
// !context.createElement fails in IE with an error but returns typeof 'object'
@@ -4419,7 +6128,7 @@ jQuery.extend({
context = context.ownerDocument || context[0] && context[0].ownerDocument || document;
}
- var ret = [];
+ var ret = [], j;
for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
if ( typeof elem === "number" ) {
@@ -4431,54 +6140,67 @@ jQuery.extend({
}
// Convert html string into DOM nodes
- if ( typeof elem === "string" && !rhtml.test( elem ) ) {
- elem = context.createTextNode( elem );
-
- } else if ( typeof elem === "string" ) {
- // Fix "XHTML"-style tags in all browsers
- elem = elem.replace(rxhtmlTag, fcloseTag);
+ if ( typeof elem === "string" ) {
+ if ( !rhtml.test( elem ) ) {
+ elem = context.createTextNode( elem );
+ } else {
+ // Fix "XHTML"-style tags in all browsers
+ elem = elem.replace(rxhtmlTag, "<$1></$2>");
- // Trim whitespace, otherwise indexOf won't work as expected
- var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
- wrap = wrapMap[ tag ] || wrapMap._default,
- depth = wrap[0],
- div = context.createElement("div");
+ // Trim whitespace, otherwise indexOf won't work as expected
+ var tag = (rtagName.exec( elem ) || ["", ""])[1].toLowerCase(),
+ wrap = wrapMap[ tag ] || wrapMap._default,
+ depth = wrap[0],
+ div = context.createElement("div");
- // Go to html and back, then peel off extra wrappers
- div.innerHTML = wrap[1] + elem + wrap[2];
+ // Go to html and back, then peel off extra wrappers
+ div.innerHTML = wrap[1] + elem + wrap[2];
- // Move to the right depth
- while ( depth-- ) {
- div = div.lastChild;
- }
+ // Move to the right depth
+ while ( depth-- ) {
+ div = div.lastChild;
+ }
- // Remove IE's autoinserted <tbody> from table fragments
- if ( !jQuery.support.tbody ) {
+ // Remove IE's autoinserted <tbody> from table fragments
+ if ( !jQuery.support.tbody ) {
- // String was a <table>, *may* have spurious <tbody>
- var hasBody = rtbody.test(elem),
- tbody = tag === "table" && !hasBody ?
- div.firstChild && div.firstChild.childNodes :
+ // String was a <table>, *may* have spurious <tbody>
+ var hasBody = rtbody.test(elem),
+ tbody = tag === "table" && !hasBody ?
+ div.firstChild && div.firstChild.childNodes :
- // String was a bare <thead> or <tfoot>
- wrap[1] === "<table>" && !hasBody ?
- div.childNodes :
- [];
+ // String was a bare <thead> or <tfoot>
+ wrap[1] === "<table>" && !hasBody ?
+ div.childNodes :
+ [];
- for ( var j = tbody.length - 1; j >= 0 ; --j ) {
- if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
- tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ for ( j = tbody.length - 1; j >= 0 ; --j ) {
+ if ( jQuery.nodeName( tbody[ j ], "tbody" ) && !tbody[ j ].childNodes.length ) {
+ tbody[ j ].parentNode.removeChild( tbody[ j ] );
+ }
}
}
- }
+ // IE completely kills leading whitespace when innerHTML is used
+ if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
+ div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ }
- // IE completely kills leading whitespace when innerHTML is used
- if ( !jQuery.support.leadingWhitespace && rleadingWhitespace.test( elem ) ) {
- div.insertBefore( context.createTextNode( rleadingWhitespace.exec(elem)[0] ), div.firstChild );
+ elem = div.childNodes;
}
+ }
- elem = div.childNodes;
+ // Resets defaultChecked for any radios and checkboxes
+ // about to be appended to the DOM in IE 6/7 (#8060)
+ var len;
+ if ( !jQuery.support.appendChecked ) {
+ if ( elem[0] && typeof (len = elem.length) === "number" ) {
+ for ( j = 0; j < len; j++ ) {
+ findInputs( elem[j] );
+ }
+ } else {
+ findInputs( elem );
+ }
}
if ( elem.nodeType ) {
@@ -4489,13 +6211,18 @@ jQuery.extend({
}
if ( fragment ) {
- for ( var i = 0; ret[i]; i++ ) {
+ checkScriptType = function( elem ) {
+ return !elem.type || rscriptType.test( elem.type );
+ };
+ for ( i = 0; ret[i]; i++ ) {
if ( scripts && jQuery.nodeName( ret[i], "script" ) && (!ret[i].type || ret[i].type.toLowerCase() === "text/javascript") ) {
scripts.push( ret[i].parentNode ? ret[i].parentNode.removeChild( ret[i] ) : ret[i] );
-
+
} else {
if ( ret[i].nodeType === 1 ) {
- ret.splice.apply( ret, [i + 1, 0].concat(jQuery.makeArray(ret[i].getElementsByTagName("script"))) );
+ var jsTags = jQuery.grep( ret[i].getElementsByTagName( "script" ), checkScriptType );
+
+ ret.splice.apply( ret, [i + 1, 0].concat( jsTags ) );
}
fragment.appendChild( ret[i] );
}
@@ -4504,297 +6231,620 @@ jQuery.extend({
return ret;
},
-
+
cleanData: function( elems ) {
- var data, id, cache = jQuery.cache,
- special = jQuery.event.special,
+ var data, id, cache = jQuery.cache, internalKey = jQuery.expando, special = jQuery.event.special,
deleteExpando = jQuery.support.deleteExpando;
-
+
for ( var i = 0, elem; (elem = elems[i]) != null; i++ ) {
+ if ( elem.nodeName && jQuery.noData[elem.nodeName.toLowerCase()] ) {
+ continue;
+ }
+
id = elem[ jQuery.expando ];
-
+
if ( id ) {
- data = cache[ id ];
-
- if ( data.events ) {
+ data = cache[ id ] && cache[ id ][ internalKey ];
+
+ if ( data && data.events ) {
for ( var type in data.events ) {
if ( special[ type ] ) {
jQuery.event.remove( elem, type );
+ // This is a shortcut to avoid jQuery.event.remove's overhead
} else {
- removeEvent( elem, type, data.handle );
+ jQuery.removeEvent( elem, type, data.handle );
}
}
+
+ // Null the DOM reference to avoid IE6/7/8 leak (#7054)
+ if ( data.handle ) {
+ data.handle.elem = null;
+ }
}
-
+
if ( deleteExpando ) {
delete elem[ jQuery.expando ];
} else if ( elem.removeAttribute ) {
elem.removeAttribute( jQuery.expando );
}
-
+
delete cache[ id ];
}
}
}
});
-// exclude the following css properties to add px
-var rexclude = /z-?index|font-?weight|opacity|zoom|line-?height/i,
- ralpha = /alpha\([^)]*\)/,
+
+function evalScript( i, elem ) {
+ if ( elem.src ) {
+ jQuery.ajax({
+ url: elem.src,
+ async: false,
+ dataType: "script"
+ });
+ } else {
+ jQuery.globalEval( ( elem.text || elem.textContent || elem.innerHTML || "" ).replace( rcleanScript, "/*$0*/" ) );
+ }
+
+ if ( elem.parentNode ) {
+ elem.parentNode.removeChild( elem );
+ }
+}
+
+
+
+
+var ralpha = /alpha\([^)]*\)/i,
ropacity = /opacity=([^)]*)/,
- rfloat = /float/i,
- rdashAlpha = /-([a-z])/ig,
- rupper = /([A-Z])/g,
+ // fixed for IE9, see #8346
+ rupper = /([A-Z]|^ms)/g,
rnumpx = /^-?\d+(?:px)?$/i,
rnum = /^-?\d/,
+ rrelNum = /^([\-+])=([\-+.\de]+)/,
- cssShow = { position: "absolute", visibility: "hidden", display:"block" },
+ cssShow = { position: "absolute", visibility: "hidden", display: "block" },
cssWidth = [ "Left", "Right" ],
cssHeight = [ "Top", "Bottom" ],
+ curCSS,
- // cache check for defaultView.getComputedStyle
- getComputedStyle = document.defaultView && document.defaultView.getComputedStyle,
- // normalize float css property
- styleFloat = jQuery.support.cssFloat ? "cssFloat" : "styleFloat",
- fcamelCase = function( all, letter ) {
- return letter.toUpperCase();
- };
+ getComputedStyle,
+ currentStyle;
jQuery.fn.css = function( name, value ) {
- return access( this, name, value, true, function( elem, name, value ) {
- if ( value === undefined ) {
- return jQuery.curCSS( elem, name );
- }
-
- if ( typeof value === "number" && !rexclude.test(name) ) {
- value += "px";
- }
+ // Setting 'undefined' is a no-op
+ if ( arguments.length === 2 && value === undefined ) {
+ return this;
+ }
- jQuery.style( elem, name, value );
+ return jQuery.access( this, name, value, true, function( elem, name, value ) {
+ return value !== undefined ?
+ jQuery.style( elem, name, value ) :
+ jQuery.css( elem, name );
});
};
jQuery.extend({
- style: function( elem, name, value ) {
- // don't set styles on text and comment nodes
- if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 ) {
- return undefined;
+ // Add in style property hooks for overriding the default
+ // behavior of getting and setting a style property
+ cssHooks: {
+ opacity: {
+ get: function( elem, computed ) {
+ if ( computed ) {
+ // We should always get a number back from opacity
+ var ret = curCSS( elem, "opacity", "opacity" );
+ return ret === "" ? "1" : ret;
+
+ } else {
+ return elem.style.opacity;
+ }
+ }
}
+ },
+
+ // Exclude the following css properties to add px
+ cssNumber: {
+ "fillOpacity": true,
+ "fontWeight": true,
+ "lineHeight": true,
+ "opacity": true,
+ "orphans": true,
+ "widows": true,
+ "zIndex": true,
+ "zoom": true
+ },
+
+ // Add in properties whose names you wish to fix before
+ // setting or getting the value
+ cssProps: {
+ // normalize float css property
+ "float": jQuery.support.cssFloat ? "cssFloat" : "styleFloat"
+ },
- // ignore negative width and height values #1599
- if ( (name === "width" || name === "height") && parseFloat(value) < 0 ) {
- value = undefined;
+ // Get and set the style property on a DOM Node
+ style: function( elem, name, value, extra ) {
+ // Don't set styles on text and comment nodes
+ if ( !elem || elem.nodeType === 3 || elem.nodeType === 8 || !elem.style ) {
+ return;
}
- var style = elem.style || elem, set = value !== undefined;
+ // Make sure that we're working with the right name
+ var ret, type, origName = jQuery.camelCase( name ),
+ style = elem.style, hooks = jQuery.cssHooks[ origName ];
+
+ name = jQuery.cssProps[ origName ] || origName;
- // IE uses filters for opacity
- if ( !jQuery.support.opacity && name === "opacity" ) {
- if ( set ) {
- // IE has trouble with opacity if it does not have layout
- // Force it by setting the zoom level
- style.zoom = 1;
+ // Check if we're setting a value
+ if ( value !== undefined ) {
+ type = typeof value;
- // Set the alpha filter to set the opacity
- var opacity = parseInt( value, 10 ) + "" === "NaN" ? "" : "alpha(opacity=" + value * 100 + ")";
- var filter = style.filter || jQuery.curCSS( elem, "filter" ) || "";
- style.filter = ralpha.test(filter) ? filter.replace(ralpha, opacity) : opacity;
+ // convert relative number strings (+= or -=) to relative numbers. #7345
+ if ( type === "string" && (ret = rrelNum.exec( value )) ) {
+ value = ( +( ret[1] + 1) * +ret[2] ) + parseFloat( jQuery.css( elem, name ) );
+ // Fixes bug #9237
+ type = "number";
}
- return style.filter && style.filter.indexOf("opacity=") >= 0 ?
- (parseFloat( ropacity.exec(style.filter)[1] ) / 100) + "":
- "";
- }
+ // Make sure that NaN and null values aren't set. See: #7116
+ if ( value == null || type === "number" && isNaN( value ) ) {
+ return;
+ }
- // Make sure we're using the right name for getting the float value
- if ( rfloat.test( name ) ) {
- name = styleFloat;
- }
+ // If a number was passed in, add 'px' to the (except for certain CSS properties)
+ if ( type === "number" && !jQuery.cssNumber[ origName ] ) {
+ value += "px";
+ }
+
+ // If a hook was provided, use that value, otherwise just set the specified value
+ if ( !hooks || !("set" in hooks) || (value = hooks.set( elem, value )) !== undefined ) {
+ // Wrapped to prevent IE from throwing errors when 'invalid' values are provided
+ // Fixes bug #5509
+ try {
+ style[ name ] = value;
+ } catch(e) {}
+ }
- name = name.replace(rdashAlpha, fcamelCase);
+ } else {
+ // If a hook was provided get the non-computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, false, extra )) !== undefined ) {
+ return ret;
+ }
- if ( set ) {
- style[ name ] = value;
+ // Otherwise just get the value from the style object
+ return style[ name ];
}
-
- return style[ name ];
},
- css: function( elem, name, force, extra ) {
- if ( name === "width" || name === "height" ) {
- var val, props = cssShow, which = name === "width" ? cssWidth : cssHeight;
+ css: function( elem, name, extra ) {
+ var ret, hooks;
- function getWH() {
- val = name === "width" ? elem.offsetWidth : elem.offsetHeight;
+ // Make sure that we're working with the right name
+ name = jQuery.camelCase( name );
+ hooks = jQuery.cssHooks[ name ];
+ name = jQuery.cssProps[ name ] || name;
- if ( extra === "border" ) {
- return;
- }
+ // cssFloat needs a special treatment
+ if ( name === "cssFloat" ) {
+ name = "float";
+ }
- jQuery.each( which, function() {
- if ( !extra ) {
- val -= parseFloat(jQuery.curCSS( elem, "padding" + this, true)) || 0;
- }
+ // If a hook was provided get the computed value from there
+ if ( hooks && "get" in hooks && (ret = hooks.get( elem, true, extra )) !== undefined ) {
+ return ret;
- if ( extra === "margin" ) {
- val += parseFloat(jQuery.curCSS( elem, "margin" + this, true)) || 0;
- } else {
- val -= parseFloat(jQuery.curCSS( elem, "border" + this + "Width", true)) || 0;
- }
- });
- }
+ // Otherwise, if a way to get the computed value exists, use that
+ } else if ( curCSS ) {
+ return curCSS( elem, name );
+ }
+ },
- if ( elem.offsetWidth !== 0 ) {
- getWH();
- } else {
- jQuery.swap( elem, props, getWH );
- }
+ // A method for quickly swapping in/out CSS properties to get correct calculations
+ swap: function( elem, options, callback ) {
+ var old = {};
- return Math.max(0, Math.round(val));
+ // Remember the old values, and insert the new ones
+ for ( var name in options ) {
+ old[ name ] = elem.style[ name ];
+ elem.style[ name ] = options[ name ];
}
- return jQuery.curCSS( elem, name, force );
- },
+ callback.call( elem );
- curCSS: function( elem, name, force ) {
- var ret, style = elem.style, filter;
+ // Revert the old values
+ for ( name in options ) {
+ elem.style[ name ] = old[ name ];
+ }
+ }
+});
- // IE uses filters for opacity
- if ( !jQuery.support.opacity && name === "opacity" && elem.currentStyle ) {
- ret = ropacity.test(elem.currentStyle.filter || "") ?
- (parseFloat(RegExp.$1) / 100) + "" :
- "";
+// DEPRECATED, Use jQuery.css() instead
+jQuery.curCSS = jQuery.css;
- return ret === "" ?
- "1" :
- ret;
- }
+jQuery.each(["height", "width"], function( i, name ) {
+ jQuery.cssHooks[ name ] = {
+ get: function( elem, computed, extra ) {
+ var val;
- // Make sure we're using the right name for getting the float value
- if ( rfloat.test( name ) ) {
- name = styleFloat;
- }
+ if ( computed ) {
+ if ( elem.offsetWidth !== 0 ) {
+ return getWH( elem, name, extra );
+ } else {
+ jQuery.swap( elem, cssShow, function() {
+ val = getWH( elem, name, extra );
+ });
+ }
+
+ return val;
+ }
+ },
- if ( !force && style && style[ name ] ) {
- ret = style[ name ];
+ set: function( elem, value ) {
+ if ( rnumpx.test( value ) ) {
+ // ignore negative width and height values #1599
+ value = parseFloat( value );
- } else if ( getComputedStyle ) {
+ if ( value >= 0 ) {
+ return value + "px";
+ }
- // Only "float" is needed here
- if ( rfloat.test( name ) ) {
- name = "float";
+ } else {
+ return value;
}
+ }
+ };
+});
+
+if ( !jQuery.support.opacity ) {
+ jQuery.cssHooks.opacity = {
+ get: function( elem, computed ) {
+ // IE uses filters for opacity
+ return ropacity.test( (computed && elem.currentStyle ? elem.currentStyle.filter : elem.style.filter) || "" ) ?
+ ( parseFloat( RegExp.$1 ) / 100 ) + "" :
+ computed ? "1" : "";
+ },
- name = name.replace( rupper, "-$1" ).toLowerCase();
+ set: function( elem, value ) {
+ var style = elem.style,
+ currentStyle = elem.currentStyle,
+ opacity = jQuery.isNaN( value ) ? "" : "alpha(opacity=" + value * 100 + ")",
+ filter = currentStyle && currentStyle.filter || style.filter || "";
- var defaultView = elem.ownerDocument.defaultView;
+ // IE has trouble with opacity if it does not have layout
+ // Force it by setting the zoom level
+ style.zoom = 1;
- if ( !defaultView ) {
- return null;
+ // if setting opacity to 1, and no other filters exist - attempt to remove filter attribute #6652
+ if ( value >= 1 && jQuery.trim( filter.replace( ralpha, "" ) ) === "" ) {
+
+ // Setting style.filter to null, "" & " " still leave "filter:" in the cssText
+ // if "filter:" is present at all, clearType is disabled, we want to avoid this
+ // style.removeAttribute is IE Only, but so apparently is this code path...
+ style.removeAttribute( "filter" );
+
+ // if there there is no filter style applied in a css rule, we are done
+ if ( currentStyle && !currentStyle.filter ) {
+ return;
+ }
}
- var computedStyle = defaultView.getComputedStyle( elem, null );
+ // otherwise, set new filter values
+ style.filter = ralpha.test( filter ) ?
+ filter.replace( ralpha, opacity ) :
+ filter + " " + opacity;
+ }
+ };
+}
- if ( computedStyle ) {
- ret = computedStyle.getPropertyValue( name );
+jQuery(function() {
+ // This hook cannot be added until DOM ready because the support test
+ // for it is not run until after DOM ready
+ if ( !jQuery.support.reliableMarginRight ) {
+ jQuery.cssHooks.marginRight = {
+ get: function( elem, computed ) {
+ // WebKit Bug 13343 - getComputedStyle returns wrong value for margin-right
+ // Work around by temporarily setting element display to inline-block
+ var ret;
+ jQuery.swap( elem, { "display": "inline-block" }, function() {
+ if ( computed ) {
+ ret = curCSS( elem, "margin-right", "marginRight" );
+ } else {
+ ret = elem.style.marginRight;
+ }
+ });
+ return ret;
}
+ };
+ }
+});
+
+if ( document.defaultView && document.defaultView.getComputedStyle ) {
+ getComputedStyle = function( elem, name ) {
+ var ret, defaultView, computedStyle;
+
+ name = name.replace( rupper, "-$1" ).toLowerCase();
- // We should always get a number back from opacity
- if ( name === "opacity" && ret === "" ) {
- ret = "1";
+ if ( !(defaultView = elem.ownerDocument.defaultView) ) {
+ return undefined;
+ }
+
+ if ( (computedStyle = defaultView.getComputedStyle( elem, null )) ) {
+ ret = computedStyle.getPropertyValue( name );
+ if ( ret === "" && !jQuery.contains( elem.ownerDocument.documentElement, elem ) ) {
+ ret = jQuery.style( elem, name );
}
+ }
- } else if ( elem.currentStyle ) {
- var camelCase = name.replace(rdashAlpha, fcamelCase);
+ return ret;
+ };
+}
- ret = elem.currentStyle[ name ] || elem.currentStyle[ camelCase ];
+if ( document.documentElement.currentStyle ) {
+ currentStyle = function( elem, name ) {
+ var left,
+ ret = elem.currentStyle && elem.currentStyle[ name ],
+ rsLeft = elem.runtimeStyle && elem.runtimeStyle[ name ],
+ style = elem.style;
- // From the awesome hack by Dean Edwards
- // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
+ // From the awesome hack by Dean Edwards
+ // http://erik.eae.net/archives/2007/07/27/18.54.15/#comment-102291
- // If we're not dealing with a regular pixel number
- // but a number that has a weird ending, we need to convert it to pixels
- if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
- // Remember the original values
- var left = style.left, rsLeft = elem.runtimeStyle.left;
+ // If we're not dealing with a regular pixel number
+ // but a number that has a weird ending, we need to convert it to pixels
+ if ( !rnumpx.test( ret ) && rnum.test( ret ) ) {
+ // Remember the original values
+ left = style.left;
- // Put in the new values to get a computed value out
+ // Put in the new values to get a computed value out
+ if ( rsLeft ) {
elem.runtimeStyle.left = elem.currentStyle.left;
- style.left = camelCase === "fontSize" ? "1em" : (ret || 0);
- ret = style.pixelLeft + "px";
+ }
+ style.left = name === "fontSize" ? "1em" : (ret || 0);
+ ret = style.pixelLeft + "px";
- // Revert the changed values
- style.left = left;
+ // Revert the changed values
+ style.left = left;
+ if ( rsLeft ) {
elem.runtimeStyle.left = rsLeft;
}
}
- return ret;
- },
+ return ret === "" ? "auto" : ret;
+ };
+}
- // A method for quickly swapping in/out CSS properties to get correct calculations
- swap: function( elem, options, callback ) {
- var old = {};
+curCSS = getComputedStyle || currentStyle;
- // Remember the old values, and insert the new ones
- for ( var name in options ) {
- old[ name ] = elem.style[ name ];
- elem.style[ name ] = options[ name ];
- }
+function getWH( elem, name, extra ) {
- callback.call( elem );
+ // Start with offset property
+ var val = name === "width" ? elem.offsetWidth : elem.offsetHeight,
+ which = name === "width" ? cssWidth : cssHeight;
- // Revert the old values
- for ( var name in options ) {
- elem.style[ name ] = old[ name ];
+ if ( val > 0 ) {
+ if ( extra !== "border" ) {
+ jQuery.each( which, function() {
+ if ( !extra ) {
+ val -= parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
+ }
+ if ( extra === "margin" ) {
+ val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
+ } else {
+ val -= parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
+ }
+ });
}
+
+ return val + "px";
}
-});
+
+ // Fall back to computed then uncomputed css if necessary
+ val = curCSS( elem, name, name );
+ if ( val < 0 || val == null ) {
+ val = elem.style[ name ] || 0;
+ }
+ // Normalize "", auto, and prepare for extra
+ val = parseFloat( val ) || 0;
+
+ // Add padding, border, margin
+ if ( extra ) {
+ jQuery.each( which, function() {
+ val += parseFloat( jQuery.css( elem, "padding" + this ) ) || 0;
+ if ( extra !== "padding" ) {
+ val += parseFloat( jQuery.css( elem, "border" + this + "Width" ) ) || 0;
+ }
+ if ( extra === "margin" ) {
+ val += parseFloat( jQuery.css( elem, extra + this ) ) || 0;
+ }
+ });
+ }
+
+ return val + "px";
+}
if ( jQuery.expr && jQuery.expr.filters ) {
jQuery.expr.filters.hidden = function( elem ) {
- var width = elem.offsetWidth, height = elem.offsetHeight,
- skip = elem.nodeName.toLowerCase() === "tr";
-
- return width === 0 && height === 0 && !skip ?
- true :
- width > 0 && height > 0 && !skip ?
- false :
- jQuery.curCSS(elem, "display") === "none";
+ var width = elem.offsetWidth,
+ height = elem.offsetHeight;
+
+ return (width === 0 && height === 0) || (!jQuery.support.reliableHiddenOffsets && (elem.style.display || jQuery.css( elem, "display" )) === "none");
};
jQuery.expr.filters.visible = function( elem ) {
return !jQuery.expr.filters.hidden( elem );
};
}
-var jsc = now(),
- rscript = /<script(.|\s)*?\/script>/gi,
- rselectTextarea = /select|textarea/i,
- rinput = /color|date|datetime|email|hidden|month|number|password|range|search|tel|text|time|url|week/i,
- jsre = /=\?(&|$)/,
+
+
+
+
+var r20 = /%20/g,
+ rbracket = /\[\]$/,
+ rCRLF = /\r?\n/g,
+ rhash = /#.*$/,
+ rheaders = /^(.*?):[ \t]*([^\r\n]*)\r?$/mg, // IE leaves an \r character at EOL
+ rinput = /^(?:color|date|datetime|datetime-local|email|hidden|month|number|password|range|search|tel|text|time|url|week)$/i,
+ // #7653, #8125, #8152: local protocol detection
+ rlocalProtocol = /^(?:about|app|app\-storage|.+\-extension|file|res|widget):$/,
+ rnoContent = /^(?:GET|HEAD)$/,
+ rprotocol = /^\/\//,
rquery = /\?/,
- rts = /(\?|&)_=.*?(&|$)/,
- rurl = /^(\w+:)?\/\/([^\/?#]+)/,
- r20 = /%20/g,
+ rscript = /<script\b[^<]*(?:(?!<\/script>)<[^<]*)*<\/script>/gi,
+ rselectTextarea = /^(?:select|textarea)/i,
+ rspacesAjax = /\s+/,
+ rts = /([?&])_=[^&]*/,
+ rurl = /^([\w\+\.\-]+:)(?:\/\/([^\/?#:]*)(?::(\d+))?)?/,
// Keep a copy of the old load method
- _load = jQuery.fn.load;
+ _load = jQuery.fn.load,
+
+ /* Prefilters
+ * 1) They are useful to introduce custom dataTypes (see ajax/jsonp.js for an example)
+ * 2) These are called:
+ * - BEFORE asking for a transport
+ * - AFTER param serialization (s.data is a string if s.processData is true)
+ * 3) key is the dataType
+ * 4) the catchall symbol "*" can be used
+ * 5) execution will start with transport dataType and THEN continue down to "*" if needed
+ */
+ prefilters = {},
+
+ /* Transports bindings
+ * 1) key is the dataType
+ * 2) the catchall symbol "*" can be used
+ * 3) selection will start with transport dataType and THEN go to "*" if needed
+ */
+ transports = {},
+
+ // Document location
+ ajaxLocation,
+
+ // Document location segments
+ ajaxLocParts,
+
+ // Avoid comment-prolog char sequence (#10098); must appease lint and evade compression
+ allTypes = ["*/"] + ["*"];
+
+// #8138, IE may throw an exception when accessing
+// a field from window.location if document.domain has been set
+try {
+ ajaxLocation = location.href;
+} catch( e ) {
+ // Use the href attribute of an A element
+ // since IE will modify it given document.location
+ ajaxLocation = document.createElement( "a" );
+ ajaxLocation.href = "";
+ ajaxLocation = ajaxLocation.href;
+}
+
+// Segment location into parts
+ajaxLocParts = rurl.exec( ajaxLocation.toLowerCase() ) || [];
+
+// Base "constructor" for jQuery.ajaxPrefilter and jQuery.ajaxTransport
+function addToPrefiltersOrTransports( structure ) {
+
+ // dataTypeExpression is optional and defaults to "*"
+ return function( dataTypeExpression, func ) {
+
+ if ( typeof dataTypeExpression !== "string" ) {
+ func = dataTypeExpression;
+ dataTypeExpression = "*";
+ }
+
+ if ( jQuery.isFunction( func ) ) {
+ var dataTypes = dataTypeExpression.toLowerCase().split( rspacesAjax ),
+ i = 0,
+ length = dataTypes.length,
+ dataType,
+ list,
+ placeBefore;
+
+ // For each dataType in the dataTypeExpression
+ for(; i < length; i++ ) {
+ dataType = dataTypes[ i ];
+ // We control if we're asked to add before
+ // any existing element
+ placeBefore = /^\+/.test( dataType );
+ if ( placeBefore ) {
+ dataType = dataType.substr( 1 ) || "*";
+ }
+ list = structure[ dataType ] = structure[ dataType ] || [];
+ // then we add to the structure accordingly
+ list[ placeBefore ? "unshift" : "push" ]( func );
+ }
+ }
+ };
+}
+
+// Base inspection function for prefilters and transports
+function inspectPrefiltersOrTransports( structure, options, originalOptions, jqXHR,
+ dataType /* internal */, inspected /* internal */ ) {
+
+ dataType = dataType || options.dataTypes[ 0 ];
+ inspected = inspected || {};
+
+ inspected[ dataType ] = true;
+
+ var list = structure[ dataType ],
+ i = 0,
+ length = list ? list.length : 0,
+ executeOnly = ( structure === prefilters ),
+ selection;
+
+ for(; i < length && ( executeOnly || !selection ); i++ ) {
+ selection = list[ i ]( options, originalOptions, jqXHR );
+ // If we got redirected to another dataType
+ // we try there if executing only and not done already
+ if ( typeof selection === "string" ) {
+ if ( !executeOnly || inspected[ selection ] ) {
+ selection = undefined;
+ } else {
+ options.dataTypes.unshift( selection );
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, selection, inspected );
+ }
+ }
+ }
+ // If we're only executing or nothing was selected
+ // we try the catchall dataType if not done already
+ if ( ( executeOnly || !selection ) && !inspected[ "*" ] ) {
+ selection = inspectPrefiltersOrTransports(
+ structure, options, originalOptions, jqXHR, "*", inspected );
+ }
+ // unnecessary when only executing (prefilters)
+ // but it'll be ignored by the caller in that case
+ return selection;
+}
+
+// A special extend for ajax options
+// that takes "flat" options (not to be deep extended)
+// Fixes #9887
+function ajaxExtend( target, src ) {
+ var key, deep,
+ flatOptions = jQuery.ajaxSettings.flatOptions || {};
+ for( key in src ) {
+ if ( src[ key ] !== undefined ) {
+ ( flatOptions[ key ] ? target : ( deep || ( deep = {} ) ) )[ key ] = src[ key ];
+ }
+ }
+ if ( deep ) {
+ jQuery.extend( true, target, deep );
+ }
+}
jQuery.fn.extend({
load: function( url, params, callback ) {
- if ( typeof url !== "string" ) {
- return _load.call( this, url );
+ if ( typeof url !== "string" && _load ) {
+ return _load.apply( this, arguments );
// Don't do a request if no elements are being requested
} else if ( !this.length ) {
return this;
}
- var off = url.indexOf(" ");
+ var off = url.indexOf( " " );
if ( off >= 0 ) {
- var selector = url.slice(off, url.length);
- url = url.slice(0, off);
+ var selector = url.slice( off, url.length );
+ url = url.slice( 0, off );
}
// Default to a GET request
@@ -4806,7 +6856,7 @@ jQuery.fn.extend({
if ( jQuery.isFunction( params ) ) {
// We assume that it's the callback
callback = params;
- params = null;
+ params = undefined;
// Otherwise, build a param string
} else if ( typeof params === "object" ) {
@@ -4823,26 +6873,34 @@ jQuery.fn.extend({
type: type,
dataType: "html",
data: params,
- complete: function( res, status ) {
+ // Complete callback (responseText is used internally)
+ complete: function( jqXHR, status, responseText ) {
+ // Store the response as specified by the jqXHR object
+ responseText = jqXHR.responseText;
// If successful, inject the HTML into all the matched elements
- if ( status === "success" || status === "notmodified" ) {
+ if ( jqXHR.isResolved() ) {
+ // #4825: Get the actual response in case
+ // a dataFilter is present in ajaxSettings
+ jqXHR.done(function( r ) {
+ responseText = r;
+ });
// See if a selector was specified
self.html( selector ?
// Create a dummy div to hold the results
- jQuery("<div />")
+ jQuery("<div>")
// inject the contents of the document in, removing the scripts
// to avoid any 'Permission Denied' errors in IE
- .append(res.responseText.replace(rscript, ""))
+ .append(responseText.replace(rscript, ""))
// Locate the specified elements
.find(selector) :
// If not, just inject the full result
- res.responseText );
+ responseText );
}
if ( callback ) {
- self.each( callback, [res.responseText, status, res] );
+ self.each( callback, [ responseText, status, jqXHR ] );
}
}
});
@@ -4851,88 +6909,87 @@ jQuery.fn.extend({
},
serialize: function() {
- return jQuery.param(this.serializeArray());
+ return jQuery.param( this.serializeArray() );
},
+
serializeArray: function() {
- return this.map(function() {
- return this.elements ? jQuery.makeArray(this.elements) : this;
+ return this.map(function(){
+ return this.elements ? jQuery.makeArray( this.elements ) : this;
})
- .filter(function() {
+ .filter(function(){
return this.name && !this.disabled &&
- (this.checked || rselectTextarea.test(this.nodeName) ||
- rinput.test(this.type));
+ ( this.checked || rselectTextarea.test( this.nodeName ) ||
+ rinput.test( this.type ) );
})
- .map(function( i, elem ) {
- var val = jQuery(this).val();
+ .map(function( i, elem ){
+ var val = jQuery( this ).val();
return val == null ?
null :
- jQuery.isArray(val) ?
- jQuery.map( val, function( val, i ) {
- return { name: elem.name, value: val };
+ jQuery.isArray( val ) ?
+ jQuery.map( val, function( val, i ){
+ return { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
}) :
- { name: elem.name, value: val };
+ { name: elem.name, value: val.replace( rCRLF, "\r\n" ) };
}).get();
}
});
// Attach a bunch of functions for handling common AJAX events
-jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split(" "), function( i, o ) {
- jQuery.fn[o] = function( f ) {
- return this.bind(o, f);
+jQuery.each( "ajaxStart ajaxStop ajaxComplete ajaxError ajaxSuccess ajaxSend".split( " " ), function( i, o ){
+ jQuery.fn[ o ] = function( f ){
+ return this.bind( o, f );
};
});
-jQuery.extend({
-
- get: function( url, data, callback, type ) {
- // shift arguments if data argument was omited
+jQuery.each( [ "get", "post" ], function( i, method ) {
+ jQuery[ method ] = function( url, data, callback, type ) {
+ // shift arguments if data argument was omitted
if ( jQuery.isFunction( data ) ) {
type = type || callback;
callback = data;
- data = null;
+ data = undefined;
}
return jQuery.ajax({
- type: "GET",
+ type: method,
url: url,
data: data,
success: callback,
dataType: type
});
- },
+ };
+});
+
+jQuery.extend({
getScript: function( url, callback ) {
- return jQuery.get(url, null, callback, "script");
+ return jQuery.get( url, undefined, callback, "script" );
},
getJSON: function( url, data, callback ) {
- return jQuery.get(url, data, callback, "json");
+ return jQuery.get( url, data, callback, "json" );
},
- post: function( url, data, callback, type ) {
- // shift arguments if data argument was omited
- if ( jQuery.isFunction( data ) ) {
- type = type || callback;
- callback = data;
- data = {};
+ // Creates a full fledged settings object into target
+ // with both ajaxSettings and settings fields.
+ // If target is omitted, writes into ajaxSettings.
+ ajaxSetup: function( target, settings ) {
+ if ( settings ) {
+ // Building a settings object
+ ajaxExtend( target, jQuery.ajaxSettings );
+ } else {
+ // Extending ajaxSettings
+ settings = target;
+ target = jQuery.ajaxSettings;
}
-
- return jQuery.ajax({
- type: "POST",
- url: url,
- data: data,
- success: callback,
- dataType: type
- });
- },
-
- ajaxSetup: function( settings ) {
- jQuery.extend( jQuery.ajaxSettings, settings );
+ ajaxExtend( target, settings );
+ return target;
},
ajaxSettings: {
- url: location.href,
+ url: ajaxLocation,
+ isLocal: rlocalProtocol.test( ajaxLocParts[ 1 ] ),
global: true,
type: "GET",
contentType: "application/x-www-form-urlencoded",
@@ -4941,507 +6998,1075 @@ jQuery.extend({
/*
timeout: 0,
data: null,
+ dataType: null,
username: null,
password: null,
+ cache: null,
traditional: false,
+ headers: {},
*/
- // Create the request object; Microsoft failed to properly
- // implement the XMLHttpRequest in IE7 (can't request local files),
- // so we use the ActiveXObject when it is available
- // This function can be overriden by calling jQuery.ajaxSetup
- xhr: window.XMLHttpRequest && (window.location.protocol !== "file:" || !window.ActiveXObject) ?
- function() {
- return new window.XMLHttpRequest();
- } :
- function() {
- try {
- return new window.ActiveXObject("Microsoft.XMLHTTP");
- } catch(e) {}
- },
+
accepts: {
xml: "application/xml, text/xml",
html: "text/html",
- script: "text/javascript, application/javascript",
- json: "application/json, text/javascript",
text: "text/plain",
- _default: "*/*"
- }
- },
-
- // Last-Modified header cache for next request
- lastModified: {},
- etag: {},
+ json: "application/json, text/javascript",
+ "*": allTypes
+ },
- ajax: function( origSettings ) {
- var s = jQuery.extend(true, {}, jQuery.ajaxSettings, origSettings);
-
- var jsonp, status, data,
- callbackContext = origSettings && origSettings.context || s,
- type = s.type.toUpperCase();
+ contents: {
+ xml: /xml/,
+ html: /html/,
+ json: /json/
+ },
- // convert data if not already a string
- if ( s.data && s.processData && typeof s.data !== "string" ) {
- s.data = jQuery.param( s.data, s.traditional );
- }
+ responseFields: {
+ xml: "responseXML",
+ text: "responseText"
+ },
- // Handle JSONP Parameter Callbacks
- if ( s.dataType === "jsonp" ) {
- if ( type === "GET" ) {
- if ( !jsre.test( s.url ) ) {
- s.url += (rquery.test( s.url ) ? "&" : "?") + (s.jsonp || "callback") + "=?";
- }
- } else if ( !s.data || !jsre.test(s.data) ) {
- s.data = (s.data ? s.data + "&" : "") + (s.jsonp || "callback") + "=?";
- }
- s.dataType = "json";
- }
+ // List of data converters
+ // 1) key format is "source_type destination_type" (a single space in-between)
+ // 2) the catchall symbol "*" can be used for source_type
+ converters: {
- // Build temporary JSONP function
- if ( s.dataType === "json" && (s.data && jsre.test(s.data) || jsre.test(s.url)) ) {
- jsonp = s.jsonpCallback || ("jsonp" + jsc++);
+ // Convert anything to text
+ "* text": window.String,
- // Replace the =? sequence both in the query string and the data
- if ( s.data ) {
- s.data = (s.data + "").replace(jsre, "=" + jsonp + "$1");
- }
+ // Text to html (true = no transformation)
+ "text html": true,
- s.url = s.url.replace(jsre, "=" + jsonp + "$1");
+ // Evaluate text as a json expression
+ "text json": jQuery.parseJSON,
- // We need to make sure
- // that a JSONP style response is executed properly
- s.dataType = "script";
+ // Parse text as xml
+ "text xml": jQuery.parseXML
+ },
- // Handle JSONP-style loading
- window[ jsonp ] = window[ jsonp ] || function( tmp ) {
- data = tmp;
- success();
- complete();
- // Garbage collect
- window[ jsonp ] = undefined;
+ // For options that shouldn't be deep extended:
+ // you can add your own custom options here if
+ // and when you create one that shouldn't be
+ // deep extended (see ajaxExtend)
+ flatOptions: {
+ context: true,
+ url: true
+ }
+ },
+
+ ajaxPrefilter: addToPrefiltersOrTransports( prefilters ),
+ ajaxTransport: addToPrefiltersOrTransports( transports ),
+
+ // Main method
+ ajax: function( url, options ) {
+
+ // If url is an object, simulate pre-1.5 signature
+ if ( typeof url === "object" ) {
+ options = url;
+ url = undefined;
+ }
+
+ // Force options to be an object
+ options = options || {};
+
+ var // Create the final options object
+ s = jQuery.ajaxSetup( {}, options ),
+ // Callbacks context
+ callbackContext = s.context || s,
+ // Context for global events
+ // It's the callbackContext if one was provided in the options
+ // and if it's a DOM node or a jQuery collection
+ globalEventContext = callbackContext !== s &&
+ ( callbackContext.nodeType || callbackContext instanceof jQuery ) ?
+ jQuery( callbackContext ) : jQuery.event,
+ // Deferreds
+ deferred = jQuery.Deferred(),
+ completeDeferred = jQuery._Deferred(),
+ // Status-dependent callbacks
+ statusCode = s.statusCode || {},
+ // ifModified key
+ ifModifiedKey,
+ // Headers (they are sent all at once)
+ requestHeaders = {},
+ requestHeadersNames = {},
+ // Response headers
+ responseHeadersString,
+ responseHeaders,
+ // transport
+ transport,
+ // timeout handle
+ timeoutTimer,
+ // Cross-domain detection vars
+ parts,
+ // The jqXHR state
+ state = 0,
+ // To know if global events are to be dispatched
+ fireGlobals,
+ // Loop variable
+ i,
+ // Fake xhr
+ jqXHR = {
+
+ readyState: 0,
+
+ // Caches the header
+ setRequestHeader: function( name, value ) {
+ if ( !state ) {
+ var lname = name.toLowerCase();
+ name = requestHeadersNames[ lname ] = requestHeadersNames[ lname ] || name;
+ requestHeaders[ name ] = value;
+ }
+ return this;
+ },
+
+ // Raw string
+ getAllResponseHeaders: function() {
+ return state === 2 ? responseHeadersString : null;
+ },
+
+ // Builds headers hashtable if needed
+ getResponseHeader: function( key ) {
+ var match;
+ if ( state === 2 ) {
+ if ( !responseHeaders ) {
+ responseHeaders = {};
+ while( ( match = rheaders.exec( responseHeadersString ) ) ) {
+ responseHeaders[ match[1].toLowerCase() ] = match[ 2 ];
+ }
+ }
+ match = responseHeaders[ key.toLowerCase() ];
+ }
+ return match === undefined ? null : match;
+ },
- try {
- delete window[ jsonp ];
- } catch(e) {}
+ // Overrides response content-type header
+ overrideMimeType: function( type ) {
+ if ( !state ) {
+ s.mimeType = type;
+ }
+ return this;
+ },
- if ( head ) {
- head.removeChild( script );
+ // Cancel the request
+ abort: function( statusText ) {
+ statusText = statusText || "abort";
+ if ( transport ) {
+ transport.abort( statusText );
+ }
+ done( 0, statusText );
+ return this;
}
};
- }
-
- if ( s.dataType === "script" && s.cache === null ) {
- s.cache = false;
- }
-
- if ( s.cache === false && type === "GET" ) {
- var ts = now();
- // try replacing _= if it is there
- var ret = s.url.replace(rts, "$1_=" + ts + "$2");
-
- // if nothing was replaced, add timestamp to the end
- s.url = ret + ((ret === s.url) ? (rquery.test(s.url) ? "&" : "?") + "_=" + ts : "");
- }
+ // Callback for when everything is done
+ // It is defined here because jslint complains if it is declared
+ // at the end of the function (which would be more logical and readable)
+ function done( status, nativeStatusText, responses, headers ) {
- // If data is available, append data to url for get requests
- if ( s.data && type === "GET" ) {
- s.url += (rquery.test(s.url) ? "&" : "?") + s.data;
- }
-
- // Watch for a new set of requests
- if ( s.global && ! jQuery.active++ ) {
- jQuery.event.trigger( "ajaxStart" );
- }
+ // Called once
+ if ( state === 2 ) {
+ return;
+ }
- // Matches an absolute URL, and saves the domain
- var parts = rurl.exec( s.url ),
- remote = parts && (parts[1] && parts[1] !== location.protocol || parts[2] !== location.host);
+ // State is "done" now
+ state = 2;
- // If we're requesting a remote document
- // and trying to load JSON or Script with a GET
- if ( s.dataType === "script" && type === "GET" && remote ) {
- var head = document.getElementsByTagName("head")[0] || document.documentElement;
- var script = document.createElement("script");
- script.src = s.url;
- if ( s.scriptCharset ) {
- script.charset = s.scriptCharset;
+ // Clear timeout if it exists
+ if ( timeoutTimer ) {
+ clearTimeout( timeoutTimer );
}
- // Handle Script loading
- if ( !jsonp ) {
- var done = false;
+ // Dereference transport for early garbage collection
+ // (no matter how long the jqXHR object will be used)
+ transport = undefined;
- // Attach handlers for all browsers
- script.onload = script.onreadystatechange = function() {
- if ( !done && (!this.readyState ||
- this.readyState === "loaded" || this.readyState === "complete") ) {
- done = true;
- success();
- complete();
+ // Cache response headers
+ responseHeadersString = headers || "";
- // Handle memory leak in IE
- script.onload = script.onreadystatechange = null;
- if ( head && script.parentNode ) {
- head.removeChild( script );
- }
- }
- };
- }
+ // Set readyState
+ jqXHR.readyState = status > 0 ? 4 : 0;
- // Use insertBefore instead of appendChild to circumvent an IE6 bug.
- // This arises when a base node is used (#2709 and #4378).
- head.insertBefore( script, head.firstChild );
+ var isSuccess,
+ success,
+ error,
+ statusText = nativeStatusText,
+ response = responses ? ajaxHandleResponses( s, jqXHR, responses ) : undefined,
+ lastModified,
+ etag;
- // We handle everything using the script element injection
- return undefined;
- }
+ // If successful, handle type chaining
+ if ( status >= 200 && status < 300 || status === 304 ) {
- var requestDone = false;
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
- // Create the request object
- var xhr = s.xhr();
+ if ( ( lastModified = jqXHR.getResponseHeader( "Last-Modified" ) ) ) {
+ jQuery.lastModified[ ifModifiedKey ] = lastModified;
+ }
+ if ( ( etag = jqXHR.getResponseHeader( "Etag" ) ) ) {
+ jQuery.etag[ ifModifiedKey ] = etag;
+ }
+ }
- if ( !xhr ) {
- return;
- }
+ // If not modified
+ if ( status === 304 ) {
- // Open the socket
- // Passing null username, generates a login popup on Opera (#2865)
- if ( s.username ) {
- xhr.open(type, s.url, s.async, s.username, s.password);
- } else {
- xhr.open(type, s.url, s.async);
- }
+ statusText = "notmodified";
+ isSuccess = true;
- // Need an extra try/catch for cross domain requests in Firefox 3
- try {
- // Set the correct header, if data is being sent
- if ( s.data || origSettings && origSettings.contentType ) {
- xhr.setRequestHeader("Content-Type", s.contentType);
- }
+ // If we have data
+ } else {
- // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
- if ( s.ifModified ) {
- if ( jQuery.lastModified[s.url] ) {
- xhr.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
+ try {
+ success = ajaxConvert( s, response );
+ statusText = "success";
+ isSuccess = true;
+ } catch(e) {
+ // We have a parsererror
+ statusText = "parsererror";
+ error = e;
+ }
}
-
- if ( jQuery.etag[s.url] ) {
- xhr.setRequestHeader("If-None-Match", jQuery.etag[s.url]);
+ } else {
+ // We extract error from statusText
+ // then normalize statusText and status for non-aborts
+ error = statusText;
+ if( !statusText || status ) {
+ statusText = "error";
+ if ( status < 0 ) {
+ status = 0;
+ }
}
}
- // Set header so the called script knows that it's an XMLHttpRequest
- // Only send the header if it's not a remote XHR
- if ( !remote ) {
- xhr.setRequestHeader("X-Requested-With", "XMLHttpRequest");
- }
-
- // Set the Accepts header for the server, depending on the dataType
- xhr.setRequestHeader("Accept", s.dataType && s.accepts[ s.dataType ] ?
- s.accepts[ s.dataType ] + ", */*" :
- s.accepts._default );
- } catch(e) {}
+ // Set data for the fake xhr object
+ jqXHR.status = status;
+ jqXHR.statusText = "" + ( nativeStatusText || statusText );
- // Allow custom headers/mimetypes and early abort
- if ( s.beforeSend && s.beforeSend.call(callbackContext, xhr, s) === false ) {
- // Handle the global AJAX counter
- if ( s.global && ! --jQuery.active ) {
- jQuery.event.trigger( "ajaxStop" );
+ // Success/Error
+ if ( isSuccess ) {
+ deferred.resolveWith( callbackContext, [ success, statusText, jqXHR ] );
+ } else {
+ deferred.rejectWith( callbackContext, [ jqXHR, statusText, error ] );
}
- // close opended socket
- xhr.abort();
- return false;
- }
+ // Status-dependent callbacks
+ jqXHR.statusCode( statusCode );
+ statusCode = undefined;
- if ( s.global ) {
- trigger("ajaxSend", [xhr, s]);
- }
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajax" + ( isSuccess ? "Success" : "Error" ),
+ [ jqXHR, s, isSuccess ? success : error ] );
+ }
- // Wait for a response to come back
- var onreadystatechange = xhr.onreadystatechange = function( isTimeout ) {
- // The request was aborted
- if ( !xhr || xhr.readyState === 0 || isTimeout === "abort" ) {
- // Opera doesn't call onreadystatechange before this point
- // so we simulate the call
- if ( !requestDone ) {
- complete();
- }
+ // Complete
+ completeDeferred.resolveWith( callbackContext, [ jqXHR, statusText ] );
- requestDone = true;
- if ( xhr ) {
- xhr.onreadystatechange = jQuery.noop;
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxComplete", [ jqXHR, s ] );
+ // Handle the global AJAX counter
+ if ( !( --jQuery.active ) ) {
+ jQuery.event.trigger( "ajaxStop" );
}
+ }
+ }
- // The transfer is complete and the data is available, or the request timed out
- } else if ( !requestDone && xhr && (xhr.readyState === 4 || isTimeout === "timeout") ) {
- requestDone = true;
- xhr.onreadystatechange = jQuery.noop;
-
- status = isTimeout === "timeout" ?
- "timeout" :
- !jQuery.httpSuccess( xhr ) ?
- "error" :
- s.ifModified && jQuery.httpNotModified( xhr, s.url ) ?
- "notmodified" :
- "success";
-
- var errMsg;
-
- if ( status === "success" ) {
- // Watch for, and catch, XML document parse errors
- try {
- // process the data (runs the xml through httpData regardless of callback)
- data = jQuery.httpData( xhr, s.dataType, s );
- } catch(err) {
- status = "parsererror";
- errMsg = err;
- }
- }
+ // Attach deferreds
+ deferred.promise( jqXHR );
+ jqXHR.success = jqXHR.done;
+ jqXHR.error = jqXHR.fail;
+ jqXHR.complete = completeDeferred.done;
- // Make sure that the request was successful or notmodified
- if ( status === "success" || status === "notmodified" ) {
- // JSONP handles its own success callback
- if ( !jsonp ) {
- success();
+ // Status-dependent callbacks
+ jqXHR.statusCode = function( map ) {
+ if ( map ) {
+ var tmp;
+ if ( state < 2 ) {
+ for( tmp in map ) {
+ statusCode[ tmp ] = [ statusCode[tmp], map[tmp] ];
}
} else {
- jQuery.handleError(s, xhr, status, errMsg);
- }
-
- // Fire the complete handlers
- complete();
-
- if ( isTimeout === "timeout" ) {
- xhr.abort();
- }
-
- // Stop memory leaks
- if ( s.async ) {
- xhr = null;
+ tmp = map[ jqXHR.status ];
+ jqXHR.then( tmp, tmp );
}
}
+ return this;
};
- // Override the abort handler, if we can (IE doesn't allow it, but that's OK)
- // Opera doesn't fire onreadystatechange at all on abort
- try {
- var oldAbort = xhr.abort;
- xhr.abort = function() {
- if ( xhr ) {
- oldAbort.call( xhr );
- }
-
- onreadystatechange( "abort" );
- };
- } catch(e) { }
+ // Remove hash character (#7531: and string promotion)
+ // Add protocol if not provided (#5866: IE7 issue with protocol-less urls)
+ // We also use the url parameter if available
+ s.url = ( ( url || s.url ) + "" ).replace( rhash, "" ).replace( rprotocol, ajaxLocParts[ 1 ] + "//" );
- // Timeout checker
- if ( s.async && s.timeout > 0 ) {
- setTimeout(function() {
- // Check to see if the request is still happening
- if ( xhr && !requestDone ) {
- onreadystatechange( "timeout" );
- }
- }, s.timeout);
- }
+ // Extract dataTypes list
+ s.dataTypes = jQuery.trim( s.dataType || "*" ).toLowerCase().split( rspacesAjax );
- // Send the data
- try {
- xhr.send( type === "POST" || type === "PUT" || type === "DELETE" ? s.data : null );
- } catch(e) {
- jQuery.handleError(s, xhr, null, e);
- // Fire the complete handlers
- complete();
+ // Determine if a cross-domain request is in order
+ if ( s.crossDomain == null ) {
+ parts = rurl.exec( s.url.toLowerCase() );
+ s.crossDomain = !!( parts &&
+ ( parts[ 1 ] != ajaxLocParts[ 1 ] || parts[ 2 ] != ajaxLocParts[ 2 ] ||
+ ( parts[ 3 ] || ( parts[ 1 ] === "http:" ? 80 : 443 ) ) !=
+ ( ajaxLocParts[ 3 ] || ( ajaxLocParts[ 1 ] === "http:" ? 80 : 443 ) ) )
+ );
}
- // firefox 1.5 doesn't fire statechange for sync requests
- if ( !s.async ) {
- onreadystatechange();
+ // Convert data if not already a string
+ if ( s.data && s.processData && typeof s.data !== "string" ) {
+ s.data = jQuery.param( s.data, s.traditional );
}
- function success() {
- // If a local callback was specified, fire it and pass it the data
- if ( s.success ) {
- s.success.call( callbackContext, data, status, xhr );
- }
+ // Apply prefilters
+ inspectPrefiltersOrTransports( prefilters, s, options, jqXHR );
- // Fire the global callback
- if ( s.global ) {
- trigger( "ajaxSuccess", [xhr, s] );
- }
+ // If request was aborted inside a prefiler, stop there
+ if ( state === 2 ) {
+ return false;
}
- function complete() {
- // Process result
- if ( s.complete ) {
- s.complete.call( callbackContext, xhr, status);
- }
+ // We can fire global events as of now if asked to
+ fireGlobals = s.global;
- // The request was completed
- if ( s.global ) {
- trigger( "ajaxComplete", [xhr, s] );
- }
-
- // Handle the global AJAX counter
- if ( s.global && ! --jQuery.active ) {
- jQuery.event.trigger( "ajaxStop" );
- }
- }
-
- function trigger(type, args) {
- (s.context ? jQuery(s.context) : jQuery.event).trigger(type, args);
- }
+ // Uppercase the type
+ s.type = s.type.toUpperCase();
- // return XMLHttpRequest to allow aborting the request etc.
- return xhr;
- },
+ // Determine if request has content
+ s.hasContent = !rnoContent.test( s.type );
- handleError: function( s, xhr, status, e ) {
- // If a local callback was specified, fire it
- if ( s.error ) {
- s.error.call( s.context || s, xhr, status, e );
+ // Watch for a new set of requests
+ if ( fireGlobals && jQuery.active++ === 0 ) {
+ jQuery.event.trigger( "ajaxStart" );
}
- // Fire the global callback
- if ( s.global ) {
- (s.context ? jQuery(s.context) : jQuery.event).trigger( "ajaxError", [xhr, s, e] );
- }
- },
+ // More options handling for requests with no content
+ if ( !s.hasContent ) {
- // Counter for holding the number of active queries
- active: 0,
+ // If data is available, append data to url
+ if ( s.data ) {
+ s.url += ( rquery.test( s.url ) ? "&" : "?" ) + s.data;
+ // #9682: remove data so that it's not used in an eventual retry
+ delete s.data;
+ }
- // Determines if an XMLHttpRequest was successful or not
- httpSuccess: function( xhr ) {
- try {
- // IE error sometimes returns 1223 when it should be 204 so treat it as success, see #1450
- return !xhr.status && location.protocol === "file:" ||
- // Opera returns 0 when status is 304
- ( xhr.status >= 200 && xhr.status < 300 ) ||
- xhr.status === 304 || xhr.status === 1223 || xhr.status === 0;
- } catch(e) {}
+ // Get ifModifiedKey before adding the anti-cache parameter
+ ifModifiedKey = s.url;
- return false;
- },
+ // Add anti-cache in url if needed
+ if ( s.cache === false ) {
- // Determines if an XMLHttpRequest returns NotModified
- httpNotModified: function( xhr, url ) {
- var lastModified = xhr.getResponseHeader("Last-Modified"),
- etag = xhr.getResponseHeader("Etag");
+ var ts = jQuery.now(),
+ // try replacing _= if it is there
+ ret = s.url.replace( rts, "$1_=" + ts );
- if ( lastModified ) {
- jQuery.lastModified[url] = lastModified;
+ // if nothing was replaced, add timestamp to the end
+ s.url = ret + ( (ret === s.url ) ? ( rquery.test( s.url ) ? "&" : "?" ) + "_=" + ts : "" );
+ }
}
- if ( etag ) {
- jQuery.etag[url] = etag;
+ // Set the correct header, if data is being sent
+ if ( s.data && s.hasContent && s.contentType !== false || options.contentType ) {
+ jqXHR.setRequestHeader( "Content-Type", s.contentType );
}
- // Opera returns 0 when status is 304
- return xhr.status === 304 || xhr.status === 0;
- },
+ // Set the If-Modified-Since and/or If-None-Match header, if in ifModified mode.
+ if ( s.ifModified ) {
+ ifModifiedKey = ifModifiedKey || s.url;
+ if ( jQuery.lastModified[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-Modified-Since", jQuery.lastModified[ ifModifiedKey ] );
+ }
+ if ( jQuery.etag[ ifModifiedKey ] ) {
+ jqXHR.setRequestHeader( "If-None-Match", jQuery.etag[ ifModifiedKey ] );
+ }
+ }
- httpData: function( xhr, type, s ) {
- var ct = xhr.getResponseHeader("content-type") || "",
- xml = type === "xml" || !type && ct.indexOf("xml") >= 0,
- data = xml ? xhr.responseXML : xhr.responseText;
+ // Set the Accepts header for the server, depending on the dataType
+ jqXHR.setRequestHeader(
+ "Accept",
+ s.dataTypes[ 0 ] && s.accepts[ s.dataTypes[0] ] ?
+ s.accepts[ s.dataTypes[0] ] + ( s.dataTypes[ 0 ] !== "*" ? ", " + allTypes + "; q=0.01" : "" ) :
+ s.accepts[ "*" ]
+ );
- if ( xml && data.documentElement.nodeName === "parsererror" ) {
- jQuery.error( "parsererror" );
+ // Check for headers option
+ for ( i in s.headers ) {
+ jqXHR.setRequestHeader( i, s.headers[ i ] );
}
- // Allow a pre-filtering function to sanitize the response
- // s is checked to keep backwards compatibility
- if ( s && s.dataFilter ) {
- data = s.dataFilter( data, type );
+ // Allow custom headers/mimetypes and early abort
+ if ( s.beforeSend && ( s.beforeSend.call( callbackContext, jqXHR, s ) === false || state === 2 ) ) {
+ // Abort if not done already
+ jqXHR.abort();
+ return false;
+
}
- // The filter can actually parse the response
- if ( typeof data === "string" ) {
- // Get the JavaScript object, if JSON is used.
- if ( type === "json" || !type && ct.indexOf("json") >= 0 ) {
- data = jQuery.parseJSON( data );
+ // Install callbacks on deferreds
+ for ( i in { success: 1, error: 1, complete: 1 } ) {
+ jqXHR[ i ]( s[ i ] );
+ }
- // If the type is "script", eval it in global context
- } else if ( type === "script" || !type && ct.indexOf("javascript") >= 0 ) {
- jQuery.globalEval( data );
+ // Get transport
+ transport = inspectPrefiltersOrTransports( transports, s, options, jqXHR );
+
+ // If no transport, we auto-abort
+ if ( !transport ) {
+ done( -1, "No Transport" );
+ } else {
+ jqXHR.readyState = 1;
+ // Send global event
+ if ( fireGlobals ) {
+ globalEventContext.trigger( "ajaxSend", [ jqXHR, s ] );
+ }
+ // Timeout
+ if ( s.async && s.timeout > 0 ) {
+ timeoutTimer = setTimeout( function(){
+ jqXHR.abort( "timeout" );
+ }, s.timeout );
+ }
+
+ try {
+ state = 1;
+ transport.send( requestHeaders, done );
+ } catch (e) {
+ // Propagate exception as error if not done
+ if ( state < 2 ) {
+ done( -1, e );
+ // Simply rethrow otherwise
+ } else {
+ jQuery.error( e );
+ }
}
}
- return data;
+ return jqXHR;
},
// Serialize an array of form elements or a set of
// key/values into a query string
param: function( a, traditional ) {
- var s = [];
-
+ var s = [],
+ add = function( key, value ) {
+ // If value is a function, invoke it and return its value
+ value = jQuery.isFunction( value ) ? value() : value;
+ s[ s.length ] = encodeURIComponent( key ) + "=" + encodeURIComponent( value );
+ };
+
// Set traditional to true for jQuery <= 1.3.2 behavior.
if ( traditional === undefined ) {
traditional = jQuery.ajaxSettings.traditional;
}
-
+
// If an array was passed in, assume that it is an array of form elements.
- if ( jQuery.isArray(a) || a.jquery ) {
+ if ( jQuery.isArray( a ) || ( a.jquery && !jQuery.isPlainObject( a ) ) ) {
// Serialize the form elements
jQuery.each( a, function() {
add( this.name, this.value );
});
-
+
} else {
// If traditional, encode the "old" way (the way 1.3.2 or older
// did it), otherwise encode params recursively.
for ( var prefix in a ) {
- buildParams( prefix, a[prefix] );
+ buildParams( prefix, a[ prefix ], traditional, add );
}
}
// Return the resulting serialization
- return s.join("&").replace(r20, "+");
-
- function buildParams( prefix, obj ) {
- if ( jQuery.isArray(obj) ) {
- // Serialize array item.
- jQuery.each( obj, function( i, v ) {
- if ( traditional || /\[\]$/.test( prefix ) ) {
- // Treat each array item as a scalar.
- add( prefix, v );
- } else {
- // If array item is non-scalar (array or object), encode its
- // numeric index to resolve deserialization ambiguity issues.
- // Note that rack (as of 1.0.0) can't currently deserialize
- // nested arrays properly, and attempting to do so may cause
- // a server error. Possible fixes are to modify rack's
- // deserialization algorithm or to provide an option or flag
- // to force array serialization to be shallow.
- buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v );
- }
- });
-
- } else if ( !traditional && obj != null && typeof obj === "object" ) {
- // Serialize object item.
- jQuery.each( obj, function( k, v ) {
- buildParams( prefix + "[" + k + "]", v );
- });
-
+ return s.join( "&" ).replace( r20, "+" );
+ }
+});
+
+function buildParams( prefix, obj, traditional, add ) {
+ if ( jQuery.isArray( obj ) ) {
+ // Serialize array item.
+ jQuery.each( obj, function( i, v ) {
+ if ( traditional || rbracket.test( prefix ) ) {
+ // Treat each array item as a scalar.
+ add( prefix, v );
+
} else {
- // Serialize scalar item.
- add( prefix, obj );
+ // If array item is non-scalar (array or object), encode its
+ // numeric index to resolve deserialization ambiguity issues.
+ // Note that rack (as of 1.0.0) can't currently deserialize
+ // nested arrays properly, and attempting to do so may cause
+ // a server error. Possible fixes are to modify rack's
+ // deserialization algorithm or to provide an option or flag
+ // to force array serialization to be shallow.
+ buildParams( prefix + "[" + ( typeof v === "object" || jQuery.isArray(v) ? i : "" ) + "]", v, traditional, add );
+ }
+ });
+
+ } else if ( !traditional && obj != null && typeof obj === "object" ) {
+ // Serialize object item.
+ for ( var name in obj ) {
+ buildParams( prefix + "[" + name + "]", obj[ name ], traditional, add );
+ }
+
+ } else {
+ // Serialize scalar item.
+ add( prefix, obj );
+ }
+}
+
+// This is still on the jQuery object... for now
+// Want to move this to jQuery.ajax some day
+jQuery.extend({
+
+ // Counter for holding the number of active queries
+ active: 0,
+
+ // Last-Modified header cache for next request
+ lastModified: {},
+ etag: {}
+
+});
+
+/* Handles responses to an ajax request:
+ * - sets all responseXXX fields accordingly
+ * - finds the right dataType (mediates between content-type and expected dataType)
+ * - returns the corresponding response
+ */
+function ajaxHandleResponses( s, jqXHR, responses ) {
+
+ var contents = s.contents,
+ dataTypes = s.dataTypes,
+ responseFields = s.responseFields,
+ ct,
+ type,
+ finalDataType,
+ firstDataType;
+
+ // Fill responseXXX fields
+ for( type in responseFields ) {
+ if ( type in responses ) {
+ jqXHR[ responseFields[type] ] = responses[ type ];
+ }
+ }
+
+ // Remove auto dataType and get content-type in the process
+ while( dataTypes[ 0 ] === "*" ) {
+ dataTypes.shift();
+ if ( ct === undefined ) {
+ ct = s.mimeType || jqXHR.getResponseHeader( "content-type" );
+ }
+ }
+
+ // Check if we're dealing with a known content-type
+ if ( ct ) {
+ for ( type in contents ) {
+ if ( contents[ type ] && contents[ type ].test( ct ) ) {
+ dataTypes.unshift( type );
+ break;
+ }
+ }
+ }
+
+ // Check to see if we have a response for the expected dataType
+ if ( dataTypes[ 0 ] in responses ) {
+ finalDataType = dataTypes[ 0 ];
+ } else {
+ // Try convertible dataTypes
+ for ( type in responses ) {
+ if ( !dataTypes[ 0 ] || s.converters[ type + " " + dataTypes[0] ] ) {
+ finalDataType = type;
+ break;
+ }
+ if ( !firstDataType ) {
+ firstDataType = type;
+ }
+ }
+ // Or just use first one
+ finalDataType = finalDataType || firstDataType;
+ }
+
+ // If we found a dataType
+ // We add the dataType to the list if needed
+ // and return the corresponding response
+ if ( finalDataType ) {
+ if ( finalDataType !== dataTypes[ 0 ] ) {
+ dataTypes.unshift( finalDataType );
+ }
+ return responses[ finalDataType ];
+ }
+}
+
+// Chain conversions given the request and the original response
+function ajaxConvert( s, response ) {
+
+ // Apply the dataFilter if provided
+ if ( s.dataFilter ) {
+ response = s.dataFilter( response, s.dataType );
+ }
+
+ var dataTypes = s.dataTypes,
+ converters = {},
+ i,
+ key,
+ length = dataTypes.length,
+ tmp,
+ // Current and previous dataTypes
+ current = dataTypes[ 0 ],
+ prev,
+ // Conversion expression
+ conversion,
+ // Conversion function
+ conv,
+ // Conversion functions (transitive conversion)
+ conv1,
+ conv2;
+
+ // For each dataType in the chain
+ for( i = 1; i < length; i++ ) {
+
+ // Create converters map
+ // with lowercased keys
+ if ( i === 1 ) {
+ for( key in s.converters ) {
+ if( typeof key === "string" ) {
+ converters[ key.toLowerCase() ] = s.converters[ key ];
+ }
+ }
+ }
+
+ // Get the dataTypes
+ prev = current;
+ current = dataTypes[ i ];
+
+ // If current is auto dataType, update it to prev
+ if( current === "*" ) {
+ current = prev;
+ // If no auto and dataTypes are actually different
+ } else if ( prev !== "*" && prev !== current ) {
+
+ // Get the converter
+ conversion = prev + " " + current;
+ conv = converters[ conversion ] || converters[ "* " + current ];
+
+ // If there is no direct converter, search transitively
+ if ( !conv ) {
+ conv2 = undefined;
+ for( conv1 in converters ) {
+ tmp = conv1.split( " " );
+ if ( tmp[ 0 ] === prev || tmp[ 0 ] === "*" ) {
+ conv2 = converters[ tmp[1] + " " + current ];
+ if ( conv2 ) {
+ conv1 = converters[ conv1 ];
+ if ( conv1 === true ) {
+ conv = conv2;
+ } else if ( conv2 === true ) {
+ conv = conv1;
+ }
+ break;
+ }
+ }
+ }
+ }
+ // If we found no converter, dispatch an error
+ if ( !( conv || conv2 ) ) {
+ jQuery.error( "No conversion from " + conversion.replace(" "," to ") );
+ }
+ // If found converter is not an equivalence
+ if ( conv !== true ) {
+ // Convert with 1 or 2 converters accordingly
+ response = conv ? conv( response ) : conv2( conv1(response) );
+ }
+ }
+ }
+ return response;
+}
+
+
+
+
+var jsc = jQuery.now(),
+ jsre = /(\=)\?(&|$)|\?\?/i;
+
+// Default jsonp settings
+jQuery.ajaxSetup({
+ jsonp: "callback",
+ jsonpCallback: function() {
+ return jQuery.expando + "_" + ( jsc++ );
+ }
+});
+
+// Detect, normalize options and install callbacks for jsonp requests
+jQuery.ajaxPrefilter( "json jsonp", function( s, originalSettings, jqXHR ) {
+
+ var inspectData = s.contentType === "application/x-www-form-urlencoded" &&
+ ( typeof s.data === "string" );
+
+ if ( s.dataTypes[ 0 ] === "jsonp" ||
+ s.jsonp !== false && ( jsre.test( s.url ) ||
+ inspectData && jsre.test( s.data ) ) ) {
+
+ var responseContainer,
+ jsonpCallback = s.jsonpCallback =
+ jQuery.isFunction( s.jsonpCallback ) ? s.jsonpCallback() : s.jsonpCallback,
+ previous = window[ jsonpCallback ],
+ url = s.url,
+ data = s.data,
+ replace = "$1" + jsonpCallback + "$2";
+
+ if ( s.jsonp !== false ) {
+ url = url.replace( jsre, replace );
+ if ( s.url === url ) {
+ if ( inspectData ) {
+ data = data.replace( jsre, replace );
+ }
+ if ( s.data === data ) {
+ // Add callback manually
+ url += (/\?/.test( url ) ? "&" : "?") + s.jsonp + "=" + jsonpCallback;
+ }
}
}
- function add( key, value ) {
- // If value is a function, invoke it and return its value
- value = jQuery.isFunction(value) ? value() : value;
- s[ s.length ] = encodeURIComponent(key) + "=" + encodeURIComponent(value);
+ s.url = url;
+ s.data = data;
+
+ // Install callback
+ window[ jsonpCallback ] = function( response ) {
+ responseContainer = [ response ];
+ };
+
+ // Clean-up function
+ jqXHR.always(function() {
+ // Set callback back to previous value
+ window[ jsonpCallback ] = previous;
+ // Call if it was a function and we have a response
+ if ( responseContainer && jQuery.isFunction( previous ) ) {
+ window[ jsonpCallback ]( responseContainer[ 0 ] );
+ }
+ });
+
+ // Use data converter to retrieve json after script execution
+ s.converters["script json"] = function() {
+ if ( !responseContainer ) {
+ jQuery.error( jsonpCallback + " was not called" );
+ }
+ return responseContainer[ 0 ];
+ };
+
+ // force json dataType
+ s.dataTypes[ 0 ] = "json";
+
+ // Delegate to script
+ return "script";
+ }
+});
+
+
+
+
+// Install script dataType
+jQuery.ajaxSetup({
+ accepts: {
+ script: "text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"
+ },
+ contents: {
+ script: /javascript|ecmascript/
+ },
+ converters: {
+ "text script": function( text ) {
+ jQuery.globalEval( text );
+ return text;
}
}
});
+
+// Handle cache's special case and global
+jQuery.ajaxPrefilter( "script", function( s ) {
+ if ( s.cache === undefined ) {
+ s.cache = false;
+ }
+ if ( s.crossDomain ) {
+ s.type = "GET";
+ s.global = false;
+ }
+});
+
+// Bind script tag hack transport
+jQuery.ajaxTransport( "script", function(s) {
+
+ // This transport only deals with cross domain requests
+ if ( s.crossDomain ) {
+
+ var script,
+ head = document.head || document.getElementsByTagName( "head" )[0] || document.documentElement;
+
+ return {
+
+ send: function( _, callback ) {
+
+ script = document.createElement( "script" );
+
+ script.async = "async";
+
+ if ( s.scriptCharset ) {
+ script.charset = s.scriptCharset;
+ }
+
+ script.src = s.url;
+
+ // Attach handlers for all browsers
+ script.onload = script.onreadystatechange = function( _, isAbort ) {
+
+ if ( isAbort || !script.readyState || /loaded|complete/.test( script.readyState ) ) {
+
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+
+ // Remove the script
+ if ( head && script.parentNode ) {
+ head.removeChild( script );
+ }
+
+ // Dereference the script
+ script = undefined;
+
+ // Callback if not abort
+ if ( !isAbort ) {
+ callback( 200, "success" );
+ }
+ }
+ };
+ // Use insertBefore instead of appendChild to circumvent an IE6 bug.
+ // This arises when a base node is used (#2709 and #4378).
+ head.insertBefore( script, head.firstChild );
+ },
+
+ abort: function() {
+ if ( script ) {
+ script.onload( 0, 1 );
+ }
+ }
+ };
+ }
+});
+
+
+
+
+var // #5280: Internet Explorer will keep connections alive if we don't abort on unload
+ xhrOnUnloadAbort = window.ActiveXObject ? function() {
+ // Abort all pending requests
+ for ( var key in xhrCallbacks ) {
+ xhrCallbacks[ key ]( 0, 1 );
+ }
+ } : false,
+ xhrId = 0,
+ xhrCallbacks;
+
+// Functions to create xhrs
+function createStandardXHR() {
+ try {
+ return new window.XMLHttpRequest();
+ } catch( e ) {}
+}
+
+function createActiveXHR() {
+ try {
+ return new window.ActiveXObject( "Microsoft.XMLHTTP" );
+ } catch( e ) {}
+}
+
+// Create the request object
+// (This is still attached to ajaxSettings for backward compatibility)
+jQuery.ajaxSettings.xhr = window.ActiveXObject ?
+ /* Microsoft failed to properly
+ * implement the XMLHttpRequest in IE7 (can't request local files),
+ * so we use the ActiveXObject when it is available
+ * Additionally XMLHttpRequest can be disabled in IE7/IE8 so
+ * we need a fallback.
+ */
+ function() {
+ return !this.isLocal && createStandardXHR() || createActiveXHR();
+ } :
+ // For all other browsers, use the standard XMLHttpRequest object
+ createStandardXHR;
+
+// Determine support properties
+(function( xhr ) {
+ jQuery.extend( jQuery.support, {
+ ajax: !!xhr,
+ cors: !!xhr && ( "withCredentials" in xhr )
+ });
+})( jQuery.ajaxSettings.xhr() );
+
+// Create transport if the browser can provide an xhr
+if ( jQuery.support.ajax ) {
+
+ jQuery.ajaxTransport(function( s ) {
+ // Cross domain only allowed if supported through XMLHttpRequest
+ if ( !s.crossDomain || jQuery.support.cors ) {
+
+ var callback;
+
+ return {
+ send: function( headers, complete ) {
+
+ // Get a new xhr
+ var xhr = s.xhr(),
+ handle,
+ i;
+
+ // Open the socket
+ // Passing null username, generates a login popup on Opera (#2865)
+ if ( s.username ) {
+ xhr.open( s.type, s.url, s.async, s.username, s.password );
+ } else {
+ xhr.open( s.type, s.url, s.async );
+ }
+
+ // Apply custom fields if provided
+ if ( s.xhrFields ) {
+ for ( i in s.xhrFields ) {
+ xhr[ i ] = s.xhrFields[ i ];
+ }
+ }
+
+ // Override mime type if needed
+ if ( s.mimeType && xhr.overrideMimeType ) {
+ xhr.overrideMimeType( s.mimeType );
+ }
+
+ // X-Requested-With header
+ // For cross-domain requests, seeing as conditions for a preflight are
+ // akin to a jigsaw puzzle, we simply never set it to be sure.
+ // (it can always be set on a per-request basis or even using ajaxSetup)
+ // For same-domain requests, won't change header if already provided.
+ if ( !s.crossDomain && !headers["X-Requested-With"] ) {
+ headers[ "X-Requested-With" ] = "XMLHttpRequest";
+ }
+
+ // Need an extra try/catch for cross domain requests in Firefox 3
+ try {
+ for ( i in headers ) {
+ xhr.setRequestHeader( i, headers[ i ] );
+ }
+ } catch( _ ) {}
+
+ // Do send the request
+ // This may raise an exception which is actually
+ // handled in jQuery.ajax (so no try/catch here)
+ xhr.send( ( s.hasContent && s.data ) || null );
+
+ // Listener
+ callback = function( _, isAbort ) {
+
+ var status,
+ statusText,
+ responseHeaders,
+ responses,
+ xml;
+
+ // Firefox throws exceptions when accessing properties
+ // of an xhr when a network error occured
+ // http://helpful.knobs-dials.com/index.php/Component_returned_failure_code:_0x80040111_(NS_ERROR_NOT_AVAILABLE)
+ try {
+
+ // Was never called and is aborted or complete
+ if ( callback && ( isAbort || xhr.readyState === 4 ) ) {
+
+ // Only called once
+ callback = undefined;
+
+ // Do not keep as active anymore
+ if ( handle ) {
+ xhr.onreadystatechange = jQuery.noop;
+ if ( xhrOnUnloadAbort ) {
+ delete xhrCallbacks[ handle ];
+ }
+ }
+
+ // If it's an abort
+ if ( isAbort ) {
+ // Abort it manually if needed
+ if ( xhr.readyState !== 4 ) {
+ xhr.abort();
+ }
+ } else {
+ status = xhr.status;
+ responseHeaders = xhr.getAllResponseHeaders();
+ responses = {};
+ xml = xhr.responseXML;
+
+ // Construct response list
+ if ( xml && xml.documentElement /* #4958 */ ) {
+ responses.xml = xml;
+ }
+ responses.text = xhr.responseText;
+
+ // Firefox throws an exception when accessing
+ // statusText for faulty cross-domain requests
+ try {
+ statusText = xhr.statusText;
+ } catch( e ) {
+ // We normalize with Webkit giving an empty statusText
+ statusText = "";
+ }
+
+ // Filter status for non standard behaviors
+
+ // If the request is local and we have data: assume a success
+ // (success with no data won't get notified, that's the best we
+ // can do given current implementations)
+ if ( !status && s.isLocal && !s.crossDomain ) {
+ status = responses.text ? 200 : 404;
+ // IE - #1450: sometimes returns 1223 when it should be 204
+ } else if ( status === 1223 ) {
+ status = 204;
+ }
+ }
+ }
+ } catch( firefoxAccessException ) {
+ if ( !isAbort ) {
+ complete( -1, firefoxAccessException );
+ }
+ }
+
+ // Call complete if needed
+ if ( responses ) {
+ complete( status, statusText, responses, responseHeaders );
+ }
+ };
+
+ // if we're in sync mode or it's in cache
+ // and has been retrieved directly (IE6 & IE7)
+ // we need to manually fire the callback
+ if ( !s.async || xhr.readyState === 4 ) {
+ callback();
+ } else {
+ handle = ++xhrId;
+ if ( xhrOnUnloadAbort ) {
+ // Create the active xhrs callbacks list if needed
+ // and attach the unload handler
+ if ( !xhrCallbacks ) {
+ xhrCallbacks = {};
+ jQuery( window ).unload( xhrOnUnloadAbort );
+ }
+ // Add to list of active xhrs callbacks
+ xhrCallbacks[ handle ] = callback;
+ }
+ xhr.onreadystatechange = callback;
+ }
+ },
+
+ abort: function() {
+ if ( callback ) {
+ callback(0,1);
+ }
+ }
+ };
+ }
+ });
+}
+
+
+
+
var elemdisplay = {},
- rfxtypes = /toggle|show|hide/,
- rfxnum = /^([+-]=)?([\d+-.]+)(.*)$/,
+ iframe, iframeDoc,
+ rfxtypes = /^(?:toggle|show|hide)$/,
+ rfxnum = /^([+\-]=)?([\d+.\-]+)([a-z%]*)$/i,
timerId,
fxAttrs = [
// height animations
@@ -5450,69 +8075,77 @@ var elemdisplay = {},
[ "width", "marginLeft", "marginRight", "paddingLeft", "paddingRight" ],
// opacity animations
[ "opacity" ]
- ];
+ ],
+ fxNow;
jQuery.fn.extend({
- show: function( speed, callback ) {
- if ( speed || speed === 0) {
- return this.animate( genFx("show", 3), speed, callback);
-
- } else {
- for ( var i = 0, l = this.length; i < l; i++ ) {
- var old = jQuery.data(this[i], "olddisplay");
-
- this[i].style.display = old || "";
-
- if ( jQuery.css(this[i], "display") === "none" ) {
- var nodeName = this[i].nodeName, display;
-
- if ( elemdisplay[ nodeName ] ) {
- display = elemdisplay[ nodeName ];
+ show: function( speed, easing, callback ) {
+ var elem, display;
- } else {
- var elem = jQuery("<" + nodeName + " />").appendTo("body");
-
- display = elem.css("display");
+ if ( speed || speed === 0 ) {
+ return this.animate( genFx("show", 3), speed, easing, callback);
- if ( display === "none" ) {
- display = "block";
- }
+ } else {
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ elem = this[i];
- elem.remove();
+ if ( elem.style ) {
+ display = elem.style.display;
- elemdisplay[ nodeName ] = display;
+ // Reset the inline display of this element to learn if it is
+ // being hidden by cascaded rules or not
+ if ( !jQuery._data(elem, "olddisplay") && display === "none" ) {
+ display = elem.style.display = "";
}
- jQuery.data(this[i], "olddisplay", display);
+ // Set elements which have been overridden with display: none
+ // in a stylesheet to whatever the default browser style is
+ // for such an element
+ if ( display === "" && jQuery.css( elem, "display" ) === "none" ) {
+ jQuery._data(elem, "olddisplay", defaultDisplay(elem.nodeName));
+ }
}
}
- // Set the display of the elements in a second loop
+ // Set the display of most of the elements in a second loop
// to avoid the constant reflow
- for ( var j = 0, k = this.length; j < k; j++ ) {
- this[j].style.display = jQuery.data(this[j], "olddisplay") || "";
+ for ( i = 0; i < j; i++ ) {
+ elem = this[i];
+
+ if ( elem.style ) {
+ display = elem.style.display;
+
+ if ( display === "" || display === "none" ) {
+ elem.style.display = jQuery._data(elem, "olddisplay") || "";
+ }
+ }
}
return this;
}
},
- hide: function( speed, callback ) {
+ hide: function( speed, easing, callback ) {
if ( speed || speed === 0 ) {
- return this.animate( genFx("hide", 3), speed, callback);
+ return this.animate( genFx("hide", 3), speed, easing, callback);
} else {
- for ( var i = 0, l = this.length; i < l; i++ ) {
- var old = jQuery.data(this[i], "olddisplay");
- if ( !old && old !== "none" ) {
- jQuery.data(this[i], "olddisplay", jQuery.css(this[i], "display"));
+ for ( var i = 0, j = this.length; i < j; i++ ) {
+ if ( this[i].style ) {
+ var display = jQuery.css( this[i], "display" );
+
+ if ( display !== "none" && !jQuery._data( this[i], "olddisplay" ) ) {
+ jQuery._data( this[i], "olddisplay", display );
+ }
}
}
// Set the display of the elements in a second loop
// to avoid the constant reflow
- for ( var j = 0, k = this.length; j < k; j++ ) {
- this[j].style.display = "none";
+ for ( i = 0; i < j; i++ ) {
+ if ( this[i].style ) {
+ this[i].style.display = "none";
+ }
}
return this;
@@ -5522,7 +8155,7 @@ jQuery.fn.extend({
// Save the old toggle function
_toggle: jQuery.fn.toggle,
- toggle: function( fn, fn2 ) {
+ toggle: function( fn, fn2, callback ) {
var bool = typeof fn === "boolean";
if ( jQuery.isFunction(fn) && jQuery.isFunction(fn2) ) {
@@ -5535,54 +8168,97 @@ jQuery.fn.extend({
});
} else {
- this.animate(genFx("toggle", 3), fn, fn2);
+ this.animate(genFx("toggle", 3), fn, fn2, callback);
}
return this;
},
- fadeTo: function( speed, to, callback ) {
+ fadeTo: function( speed, to, easing, callback ) {
return this.filter(":hidden").css("opacity", 0).show().end()
- .animate({opacity: to}, speed, callback);
+ .animate({opacity: to}, speed, easing, callback);
},
animate: function( prop, speed, easing, callback ) {
var optall = jQuery.speed(speed, easing, callback);
if ( jQuery.isEmptyObject( prop ) ) {
- return this.each( optall.complete );
+ return this.each( optall.complete, [ false ] );
}
+ // Do not change referenced properties as per-property easing will be lost
+ prop = jQuery.extend( {}, prop );
+
return this[ optall.queue === false ? "each" : "queue" ](function() {
- var opt = jQuery.extend({}, optall), p,
- hidden = this.nodeType === 1 && jQuery(this).is(":hidden"),
- self = this;
+ // XXX 'this' does not always have a nodeName when running the
+ // test suite
+
+ if ( optall.queue === false ) {
+ jQuery._mark( this );
+ }
+
+ var opt = jQuery.extend( {}, optall ),
+ isElement = this.nodeType === 1,
+ hidden = isElement && jQuery(this).is(":hidden"),
+ name, val, p,
+ display, e,
+ parts, start, end, unit;
+
+ // will store per property easing and be used to determine when an animation is complete
+ opt.animatedProperties = {};
for ( p in prop ) {
- var name = p.replace(rdashAlpha, fcamelCase);
+ // property name normalization
+ name = jQuery.camelCase( p );
if ( p !== name ) {
prop[ name ] = prop[ p ];
delete prop[ p ];
- p = name;
}
- if ( prop[p] === "hide" && hidden || prop[p] === "show" && !hidden ) {
- return opt.complete.call(this);
+ val = prop[ name ];
+
+ // easing resolution: per property > opt.specialEasing > opt.easing > 'swing' (default)
+ if ( jQuery.isArray( val ) ) {
+ opt.animatedProperties[ name ] = val[ 1 ];
+ val = prop[ name ] = val[ 0 ];
+ } else {
+ opt.animatedProperties[ name ] = opt.specialEasing && opt.specialEasing[ name ] || opt.easing || 'swing';
}
- if ( ( p === "height" || p === "width" ) && this.style ) {
- // Store display property
- opt.display = jQuery.css(this, "display");
+ if ( val === "hide" && hidden || val === "show" && !hidden ) {
+ return opt.complete.call( this );
+ }
+ if ( isElement && ( name === "height" || name === "width" ) ) {
// Make sure that nothing sneaks out
- opt.overflow = this.style.overflow;
- }
+ // Record all 3 overflow attributes because IE does not
+ // change the overflow attribute when overflowX and
+ // overflowY are set to the same value
+ opt.overflow = [ this.style.overflow, this.style.overflowX, this.style.overflowY ];
+
+ // Set display property to inline-block for height/width
+ // animations on inline elements that are having width/height
+ // animated
+ if ( jQuery.css( this, "display" ) === "inline" &&
+ jQuery.css( this, "float" ) === "none" ) {
+ if ( !jQuery.support.inlineBlockNeedsLayout ) {
+ this.style.display = "inline-block";
+
+ } else {
+ display = defaultDisplay( this.nodeName );
+
+ // inline-level elements accept inline-block;
+ // block-level elements need to be inline with layout
+ if ( display === "inline" ) {
+ this.style.display = "inline-block";
- if ( jQuery.isArray( prop[p] ) ) {
- // Create (if needed) and add to specialEasing
- (opt.specialEasing = opt.specialEasing || {})[p] = prop[p][1];
- prop[p] = prop[p][0];
+ } else {
+ this.style.display = "inline";
+ this.style.zoom = 1;
+ }
+ }
+ }
}
}
@@ -5590,32 +8266,31 @@ jQuery.fn.extend({
this.style.overflow = "hidden";
}
- opt.curAnim = jQuery.extend({}, prop);
-
- jQuery.each( prop, function( name, val ) {
- var e = new jQuery.fx( self, opt, name );
+ for ( p in prop ) {
+ e = new jQuery.fx( this, opt, p );
+ val = prop[ p ];
if ( rfxtypes.test(val) ) {
- e[ val === "toggle" ? hidden ? "show" : "hide" : val ]( prop );
+ e[ val === "toggle" ? hidden ? "show" : "hide" : val ]();
} else {
- var parts = rfxnum.exec(val),
- start = e.cur(true) || 0;
+ parts = rfxnum.exec( val );
+ start = e.cur();
if ( parts ) {
- var end = parseFloat( parts[2] ),
- unit = parts[3] || "px";
+ end = parseFloat( parts[2] );
+ unit = parts[3] || ( jQuery.cssNumber[ p ] ? "" : "px" );
// We need to compute starting value
if ( unit !== "px" ) {
- self.style[ name ] = (end || 1) + unit;
- start = ((end || 1) / e.cur(true)) * start;
- self.style[ name ] = start + unit;
+ jQuery.style( this, p, (end || 1) + unit);
+ start = ((end || 1) / e.cur()) * start;
+ jQuery.style( this, p, start + unit);
}
// If a +=/-= token was provided, we're doing a relative animation
if ( parts[1] ) {
- end = ((parts[1] === "-=" ? -1 : 1) * end) + start;
+ end = ( (parts[ 1 ] === "-=" ? -1 : 1) * end ) + start;
}
e.custom( start, end, unit );
@@ -5624,7 +8299,7 @@ jQuery.fn.extend({
e.custom( start, val, "" );
}
}
- });
+ }
// For JS strict compliance
return true;
@@ -5632,15 +8307,18 @@ jQuery.fn.extend({
},
stop: function( clearQueue, gotoEnd ) {
- var timers = jQuery.timers;
-
if ( clearQueue ) {
this.queue([]);
}
this.each(function() {
- // go in reverse order so anything added to the queue during the loop is ignored
- for ( var i = timers.length - 1; i >= 0; i-- ) {
+ var timers = jQuery.timers,
+ i = timers.length;
+ // clear marker counters if we know they won't be
+ if ( !gotoEnd ) {
+ jQuery._unmark( true, this );
+ }
+ while ( i-- ) {
if ( timers[i].elem === this ) {
if (gotoEnd) {
// force the next step to be the last
@@ -5662,22 +8340,44 @@ jQuery.fn.extend({
});
+// Animations created synchronously will run synchronously
+function createFxNow() {
+ setTimeout( clearFxNow, 0 );
+ return ( fxNow = jQuery.now() );
+}
+
+function clearFxNow() {
+ fxNow = undefined;
+}
+
+// Generate parameters to create a standard animation
+function genFx( type, num ) {
+ var obj = {};
+
+ jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
+ obj[ this ] = type;
+ });
+
+ return obj;
+}
+
// Generate shortcuts for custom animations
jQuery.each({
slideDown: genFx("show", 1),
slideUp: genFx("hide", 1),
slideToggle: genFx("toggle", 1),
fadeIn: { opacity: "show" },
- fadeOut: { opacity: "hide" }
+ fadeOut: { opacity: "hide" },
+ fadeToggle: { opacity: "toggle" }
}, function( name, props ) {
- jQuery.fn[ name ] = function( speed, callback ) {
- return this.animate( props, speed, callback );
+ jQuery.fn[ name ] = function( speed, easing, callback ) {
+ return this.animate( props, speed, easing, callback );
};
});
jQuery.extend({
speed: function( speed, easing, fn ) {
- var opt = speed && typeof speed === "object" ? speed : {
+ var opt = speed && typeof speed === "object" ? jQuery.extend({}, speed) : {
complete: fn || !fn && easing ||
jQuery.isFunction( speed ) && speed,
duration: speed,
@@ -5685,17 +8385,20 @@ jQuery.extend({
};
opt.duration = jQuery.fx.off ? 0 : typeof opt.duration === "number" ? opt.duration :
- jQuery.fx.speeds[opt.duration] || jQuery.fx.speeds._default;
+ opt.duration in jQuery.fx.speeds ? jQuery.fx.speeds[opt.duration] : jQuery.fx.speeds._default;
// Queueing
opt.old = opt.complete;
- opt.complete = function() {
- if ( opt.queue !== false ) {
- jQuery(this).dequeue();
- }
+ opt.complete = function( noUnmark ) {
if ( jQuery.isFunction( opt.old ) ) {
opt.old.call( this );
}
+
+ if ( opt.queue !== false ) {
+ jQuery.dequeue( this );
+ } else if ( noUnmark !== false ) {
+ jQuery._unmark( this );
+ }
};
return opt;
@@ -5717,9 +8420,7 @@ jQuery.extend({
this.elem = elem;
this.prop = prop;
- if ( !options.orig ) {
- options.orig = {};
- }
+ options.orig = options.orig || {};
}
});
@@ -5732,33 +8433,34 @@ jQuery.fx.prototype = {
}
(jQuery.fx.step[this.prop] || jQuery.fx.step._default)( this );
-
- // Set display property to block for height/width animations
- if ( ( this.prop === "height" || this.prop === "width" ) && this.elem.style ) {
- this.elem.style.display = "block";
- }
},
// Get the current size
- cur: function( force ) {
+ cur: function() {
if ( this.elem[this.prop] != null && (!this.elem.style || this.elem.style[this.prop] == null) ) {
return this.elem[ this.prop ];
}
- var r = parseFloat(jQuery.css(this.elem, this.prop, force));
- return r && r > -10000 ? r : parseFloat(jQuery.curCSS(this.elem, this.prop)) || 0;
+ var parsed,
+ r = jQuery.css( this.elem, this.prop );
+ // Empty strings, null, undefined and "auto" are converted to 0,
+ // complex values such as "rotate(1rad)" are returned as is,
+ // simple values such as "10px" are parsed to Float.
+ return isNaN( parsed = parseFloat( r ) ) ? !r || r === "auto" ? 0 : r : parsed;
},
// Start an animation from one number to another
custom: function( from, to, unit ) {
- this.startTime = now();
+ var self = this,
+ fx = jQuery.fx;
+
+ this.startTime = fxNow || createFxNow();
this.start = from;
this.end = to;
- this.unit = unit || this.unit || "px";
+ this.unit = unit || this.unit || ( jQuery.cssNumber[ this.prop ] ? "" : "px" );
this.now = this.start;
this.pos = this.state = 0;
- var self = this;
function t( gotoEnd ) {
return self.step(gotoEnd);
}
@@ -5766,7 +8468,7 @@ jQuery.fx.prototype = {
t.elem = this.elem;
if ( t() && jQuery.timers.push(t) && !timerId ) {
- timerId = setInterval(jQuery.fx.tick, 13);
+ timerId = setInterval( fx.tick, fx.interval );
}
},
@@ -5797,63 +8499,64 @@ jQuery.fx.prototype = {
// Each step of an animation
step: function( gotoEnd ) {
- var t = now(), done = true;
+ var t = fxNow || createFxNow(),
+ done = true,
+ elem = this.elem,
+ options = this.options,
+ i, n;
- if ( gotoEnd || t >= this.options.duration + this.startTime ) {
+ if ( gotoEnd || t >= options.duration + this.startTime ) {
this.now = this.end;
this.pos = this.state = 1;
this.update();
- this.options.curAnim[ this.prop ] = true;
+ options.animatedProperties[ this.prop ] = true;
- for ( var i in this.options.curAnim ) {
- if ( this.options.curAnim[i] !== true ) {
+ for ( i in options.animatedProperties ) {
+ if ( options.animatedProperties[i] !== true ) {
done = false;
}
}
if ( done ) {
- if ( this.options.display != null ) {
- // Reset the overflow
- this.elem.style.overflow = this.options.overflow;
+ // Reset the overflow
+ if ( options.overflow != null && !jQuery.support.shrinkWrapBlocks ) {
- // Reset the display
- var old = jQuery.data(this.elem, "olddisplay");
- this.elem.style.display = old ? old : this.options.display;
-
- if ( jQuery.css(this.elem, "display") === "none" ) {
- this.elem.style.display = "block";
- }
+ jQuery.each( [ "", "X", "Y" ], function (index, value) {
+ elem.style[ "overflow" + value ] = options.overflow[index];
+ });
}
// Hide the element if the "hide" operation was done
- if ( this.options.hide ) {
- jQuery(this.elem).hide();
+ if ( options.hide ) {
+ jQuery(elem).hide();
}
// Reset the properties, if the item has been hidden or shown
- if ( this.options.hide || this.options.show ) {
- for ( var p in this.options.curAnim ) {
- jQuery.style(this.elem, p, this.options.orig[p]);
+ if ( options.hide || options.show ) {
+ for ( var p in options.animatedProperties ) {
+ jQuery.style( elem, p, options.orig[p] );
}
}
// Execute the complete function
- this.options.complete.call( this.elem );
+ options.complete.call( elem );
}
return false;
} else {
- var n = t - this.startTime;
- this.state = n / this.options.duration;
-
- // Perform the easing function, defaults to swing
- var specialEasing = this.options.specialEasing && this.options.specialEasing[this.prop];
- var defaultEasing = this.options.easing || (jQuery.easing.swing ? "swing" : "linear");
- this.pos = jQuery.easing[specialEasing || defaultEasing](this.state, n, 0, 1, this.options.duration);
- this.now = this.start + ((this.end - this.start) * this.pos);
+ // classical easing cannot be used with an Infinity duration
+ if ( options.duration == Infinity ) {
+ this.now = t;
+ } else {
+ n = t - this.startTime;
+ this.state = n / options.duration;
+ // Perform the easing function, defaults to swing
+ this.pos = jQuery.easing[ options.animatedProperties[ this.prop ] ]( this.state, n, 0, 1, options.duration );
+ this.now = this.start + ((this.end - this.start) * this.pos);
+ }
// Perform the next step of the animation
this.update();
}
@@ -5864,9 +8567,7 @@ jQuery.fx.prototype = {
jQuery.extend( jQuery.fx, {
tick: function() {
- var timers = jQuery.timers;
-
- for ( var i = 0; i < timers.length; i++ ) {
+ for ( var timers = jQuery.timers, i = 0 ; i < timers.length ; ++i ) {
if ( !timers[i]() ) {
timers.splice(i--, 1);
}
@@ -5876,22 +8577,24 @@ jQuery.extend( jQuery.fx, {
jQuery.fx.stop();
}
},
-
+
+ interval: 13,
+
stop: function() {
clearInterval( timerId );
timerId = null;
},
-
+
speeds: {
slow: 600,
- fast: 200,
- // Default speed
- _default: 400
+ fast: 200,
+ // Default speed
+ _default: 400
},
step: {
opacity: function( fx ) {
- jQuery.style(fx.elem, "opacity", fx.now);
+ jQuery.style( fx.elem, "opacity", fx.now );
},
_default: function( fx ) {
@@ -5912,20 +8615,64 @@ if ( jQuery.expr && jQuery.expr.filters ) {
};
}
-function genFx( type, num ) {
- var obj = {};
+// Try to restore the default display value of an element
+function defaultDisplay( nodeName ) {
- jQuery.each( fxAttrs.concat.apply([], fxAttrs.slice(0,num)), function() {
- obj[ this ] = type;
- });
+ if ( !elemdisplay[ nodeName ] ) {
- return obj;
+ var body = document.body,
+ elem = jQuery( "<" + nodeName + ">" ).appendTo( body ),
+ display = elem.css( "display" );
+
+ elem.remove();
+
+ // If the simple way fails,
+ // get element's real default display by attaching it to a temp iframe
+ if ( display === "none" || display === "" ) {
+ // No iframe to use yet, so create it
+ if ( !iframe ) {
+ iframe = document.createElement( "iframe" );
+ iframe.frameBorder = iframe.width = iframe.height = 0;
+ }
+
+ body.appendChild( iframe );
+
+ // Create a cacheable copy of the iframe document on first call.
+ // IE and Opera will allow us to reuse the iframeDoc without re-writing the fake HTML
+ // document to it; WebKit & Firefox won't allow reusing the iframe document.
+ if ( !iframeDoc || !iframe.createElement ) {
+ iframeDoc = ( iframe.contentWindow || iframe.contentDocument ).document;
+ iframeDoc.write( ( document.compatMode === "CSS1Compat" ? "<!doctype html>" : "" ) + "<html><body>" );
+ iframeDoc.close();
+ }
+
+ elem = iframeDoc.createElement( nodeName );
+
+ iframeDoc.body.appendChild( elem );
+
+ display = jQuery.css( elem, "display" );
+
+ body.removeChild( iframe );
+ }
+
+ // Store the correct default display
+ elemdisplay[ nodeName ] = display;
+ }
+
+ return elemdisplay[ nodeName ];
}
+
+
+
+
+var rtable = /^t(?:able|d|h)$/i,
+ rroot = /^(?:body|html)$/i;
+
if ( "getBoundingClientRect" in document.documentElement ) {
jQuery.fn.offset = function( options ) {
- var elem = this[0];
+ var elem = this[0], box;
- if ( options ) {
+ if ( options ) {
return this.each(function( i ) {
jQuery.offset.setOffset( this, options, i );
});
@@ -5939,10 +8686,26 @@ if ( "getBoundingClientRect" in document.documentElement ) {
return jQuery.offset.bodyOffset( elem );
}
- var box = elem.getBoundingClientRect(), doc = elem.ownerDocument, body = doc.body, docElem = doc.documentElement,
- clientTop = docElem.clientTop || body.clientTop || 0, clientLeft = docElem.clientLeft || body.clientLeft || 0,
- top = box.top + (self.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop ) - clientTop,
- left = box.left + (self.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft) - clientLeft;
+ try {
+ box = elem.getBoundingClientRect();
+ } catch(e) {}
+
+ var doc = elem.ownerDocument,
+ docElem = doc.documentElement;
+
+ // Make sure we're not dealing with a disconnected DOM node
+ if ( !box || !jQuery.contains( docElem, elem ) ) {
+ return box ? { top: box.top, left: box.left } : { top: 0, left: 0 };
+ }
+
+ var body = doc.body,
+ win = getWindow(doc),
+ clientTop = docElem.clientTop || body.clientTop || 0,
+ clientLeft = docElem.clientLeft || body.clientLeft || 0,
+ scrollTop = win.pageYOffset || jQuery.support.boxModel && docElem.scrollTop || body.scrollTop,
+ scrollLeft = win.pageXOffset || jQuery.support.boxModel && docElem.scrollLeft || body.scrollLeft,
+ top = box.top + scrollTop - clientTop,
+ left = box.left + scrollLeft - clientLeft;
return { top: top, left: left };
};
@@ -5951,7 +8714,7 @@ if ( "getBoundingClientRect" in document.documentElement ) {
jQuery.fn.offset = function( options ) {
var elem = this[0];
- if ( options ) {
+ if ( options ) {
return this.each(function( i ) {
jQuery.offset.setOffset( this, options, i );
});
@@ -5967,11 +8730,16 @@ if ( "getBoundingClientRect" in document.documentElement ) {
jQuery.offset.initialize();
- var offsetParent = elem.offsetParent, prevOffsetParent = elem,
- doc = elem.ownerDocument, computedStyle, docElem = doc.documentElement,
- body = doc.body, defaultView = doc.defaultView,
+ var computedStyle,
+ offsetParent = elem.offsetParent,
+ prevOffsetParent = elem,
+ doc = elem.ownerDocument,
+ docElem = doc.documentElement,
+ body = doc.body,
+ defaultView = doc.defaultView,
prevComputedStyle = defaultView ? defaultView.getComputedStyle( elem, null ) : elem.currentStyle,
- top = elem.offsetTop, left = elem.offsetLeft;
+ top = elem.offsetTop,
+ left = elem.offsetLeft;
while ( (elem = elem.parentNode) && elem !== body && elem !== docElem ) {
if ( jQuery.offset.supportsFixedPosition && prevComputedStyle.position === "fixed" ) {
@@ -5986,12 +8754,13 @@ if ( "getBoundingClientRect" in document.documentElement ) {
top += elem.offsetTop;
left += elem.offsetLeft;
- if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && /^t(able|d|h)$/i.test(elem.nodeName)) ) {
+ if ( jQuery.offset.doesNotAddBorder && !(jQuery.offset.doesAddBorderForTableAndCells && rtable.test(elem.nodeName)) ) {
top += parseFloat( computedStyle.borderTopWidth ) || 0;
left += parseFloat( computedStyle.borderLeftWidth ) || 0;
}
- prevOffsetParent = offsetParent, offsetParent = elem.offsetParent;
+ prevOffsetParent = offsetParent;
+ offsetParent = elem.offsetParent;
}
if ( jQuery.offset.subtractsBorderForOverflowNotVisible && computedStyle.overflow !== "visible" ) {
@@ -6018,7 +8787,7 @@ if ( "getBoundingClientRect" in document.documentElement ) {
jQuery.offset = {
initialize: function() {
- var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0,
+ var body = document.body, container = document.createElement("div"), innerDiv, checkDiv, table, td, bodyMarginTop = parseFloat( jQuery.css(body, "marginTop") ) || 0,
html = "<div style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;'><div></div></div><table style='position:absolute;top:0;left:0;margin:0;border:5px solid #000;padding:0;width:1px;height:1px;' cellpadding='0' cellspacing='0'><tr><td></td></tr></table>";
jQuery.extend( container.style, { position: "absolute", top: 0, left: 0, margin: 0, border: 0, width: "1px", height: "1px", visibility: "hidden" } );
@@ -6032,53 +8801,74 @@ jQuery.offset = {
this.doesNotAddBorder = (checkDiv.offsetTop !== 5);
this.doesAddBorderForTableAndCells = (td.offsetTop === 5);
- checkDiv.style.position = "fixed", checkDiv.style.top = "20px";
+ checkDiv.style.position = "fixed";
+ checkDiv.style.top = "20px";
+
// safari subtracts parent border width here which is 5px
this.supportsFixedPosition = (checkDiv.offsetTop === 20 || checkDiv.offsetTop === 15);
checkDiv.style.position = checkDiv.style.top = "";
- innerDiv.style.overflow = "hidden", innerDiv.style.position = "relative";
+ innerDiv.style.overflow = "hidden";
+ innerDiv.style.position = "relative";
+
this.subtractsBorderForOverflowNotVisible = (checkDiv.offsetTop === -5);
this.doesNotIncludeMarginInBodyOffset = (body.offsetTop !== bodyMarginTop);
body.removeChild( container );
- body = container = innerDiv = checkDiv = table = td = null;
jQuery.offset.initialize = jQuery.noop;
},
bodyOffset: function( body ) {
- var top = body.offsetTop, left = body.offsetLeft;
+ var top = body.offsetTop,
+ left = body.offsetLeft;
jQuery.offset.initialize();
if ( jQuery.offset.doesNotIncludeMarginInBodyOffset ) {
- top += parseFloat( jQuery.curCSS(body, "marginTop", true) ) || 0;
- left += parseFloat( jQuery.curCSS(body, "marginLeft", true) ) || 0;
+ top += parseFloat( jQuery.css(body, "marginTop") ) || 0;
+ left += parseFloat( jQuery.css(body, "marginLeft") ) || 0;
}
return { top: top, left: left };
},
-
+
setOffset: function( elem, options, i ) {
+ var position = jQuery.css( elem, "position" );
+
// set position first, in-case top/left are set even on static elem
- if ( /static/.test( jQuery.curCSS( elem, "position" ) ) ) {
+ if ( position === "static" ) {
elem.style.position = "relative";
}
- var curElem = jQuery( elem ),
+
+ var curElem = jQuery( elem ),
curOffset = curElem.offset(),
- curTop = parseInt( jQuery.curCSS( elem, "top", true ), 10 ) || 0,
- curLeft = parseInt( jQuery.curCSS( elem, "left", true ), 10 ) || 0;
+ curCSSTop = jQuery.css( elem, "top" ),
+ curCSSLeft = jQuery.css( elem, "left" ),
+ calculatePosition = (position === "absolute" || position === "fixed") && jQuery.inArray("auto", [curCSSTop, curCSSLeft]) > -1,
+ props = {}, curPosition = {}, curTop, curLeft;
+
+ // need to be able to calculate position if either top or left is auto and position is either absolute or fixed
+ if ( calculatePosition ) {
+ curPosition = curElem.position();
+ curTop = curPosition.top;
+ curLeft = curPosition.left;
+ } else {
+ curTop = parseFloat( curCSSTop ) || 0;
+ curLeft = parseFloat( curCSSLeft ) || 0;
+ }
if ( jQuery.isFunction( options ) ) {
options = options.call( elem, i, curOffset );
}
- var props = {
- top: (options.top - curOffset.top) + curTop,
- left: (options.left - curOffset.left) + curLeft
- };
-
+ if (options.top != null) {
+ props.top = (options.top - curOffset.top) + curTop;
+ }
+ if (options.left != null) {
+ props.left = (options.left - curOffset.left) + curLeft;
+ }
+
if ( "using" in options ) {
options.using.call( elem, props );
} else {
@@ -6101,17 +8891,17 @@ jQuery.fn.extend({
// Get correct offsets
offset = this.offset(),
- parentOffset = /^body|html$/i.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
+ parentOffset = rroot.test(offsetParent[0].nodeName) ? { top: 0, left: 0 } : offsetParent.offset();
// Subtract element margins
// note: when an element has margin: auto the offsetLeft and marginLeft
// are the same in Safari causing offset.left to incorrectly be 0
- offset.top -= parseFloat( jQuery.curCSS(elem, "marginTop", true) ) || 0;
- offset.left -= parseFloat( jQuery.curCSS(elem, "marginLeft", true) ) || 0;
+ offset.top -= parseFloat( jQuery.css(elem, "marginTop") ) || 0;
+ offset.left -= parseFloat( jQuery.css(elem, "marginLeft") ) || 0;
// Add offsetParent borders
- parentOffset.top += parseFloat( jQuery.curCSS(offsetParent[0], "borderTopWidth", true) ) || 0;
- parentOffset.left += parseFloat( jQuery.curCSS(offsetParent[0], "borderLeftWidth", true) ) || 0;
+ parentOffset.top += parseFloat( jQuery.css(offsetParent[0], "borderTopWidth") ) || 0;
+ parentOffset.left += parseFloat( jQuery.css(offsetParent[0], "borderLeftWidth") ) || 0;
// Subtract the two offsets
return {
@@ -6123,7 +8913,7 @@ jQuery.fn.extend({
offsetParent: function() {
return this.map(function() {
var offsetParent = this.offsetParent || document.body;
- while ( offsetParent && (!/^body|html$/i.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
+ while ( offsetParent && (!rroot.test(offsetParent.nodeName) && jQuery.css(offsetParent, "position") === "static") ) {
offsetParent = offsetParent.offsetParent;
}
return offsetParent;
@@ -6136,29 +8926,16 @@ jQuery.fn.extend({
jQuery.each( ["Left", "Top"], function( i, name ) {
var method = "scroll" + name;
- jQuery.fn[ method ] = function(val) {
- var elem = this[0], win;
-
- if ( !elem ) {
- return null;
- }
+ jQuery.fn[ method ] = function( val ) {
+ var elem, win;
- if ( val !== undefined ) {
- // Set the scroll offset
- return this.each(function() {
- win = getWindow( this );
+ if ( val === undefined ) {
+ elem = this[ 0 ];
- if ( win ) {
- win.scrollTo(
- !i ? val : jQuery(win).scrollLeft(),
- i ? val : jQuery(win).scrollTop()
- );
+ if ( !elem ) {
+ return null;
+ }
- } else {
- this[ method ] = val;
- }
- });
- } else {
win = getWindow( elem );
// Return the scroll offset
@@ -6167,32 +8944,53 @@ jQuery.each( ["Left", "Top"], function( i, name ) {
win.document.body[ method ] :
elem[ method ];
}
+
+ // Set the scroll offset
+ return this.each(function() {
+ win = getWindow( this );
+
+ if ( win ) {
+ win.scrollTo(
+ !i ? val : jQuery( win ).scrollLeft(),
+ i ? val : jQuery( win ).scrollTop()
+ );
+
+ } else {
+ this[ method ] = val;
+ }
+ });
};
});
function getWindow( elem ) {
- return ("scrollTo" in elem && elem.document) ?
+ return jQuery.isWindow( elem ) ?
elem :
elem.nodeType === 9 ?
elem.defaultView || elem.parentWindow :
false;
}
-// Create innerHeight, innerWidth, outerHeight and outerWidth methods
+
+
+
+
+// Create width, height, innerHeight, innerWidth, outerHeight and outerWidth methods
jQuery.each([ "Height", "Width" ], function( i, name ) {
var type = name.toLowerCase();
// innerHeight and innerWidth
- jQuery.fn["inner" + name] = function() {
- return this[0] ?
- jQuery.css( this[0], type, false, "padding" ) :
+ jQuery.fn[ "inner" + name ] = function() {
+ var elem = this[0];
+ return elem && elem.style ?
+ parseFloat( jQuery.css( elem, type, "padding" ) ) :
null;
};
// outerHeight and outerWidth
- jQuery.fn["outer" + name] = function( margin ) {
- return this[0] ?
- jQuery.css( this[0], type, false, margin ? "margin" : "border" ) :
+ jQuery.fn[ "outer" + name ] = function( margin ) {
+ var elem = this[0];
+ return elem && elem.style ?
+ parseFloat( jQuery.css( elem, type, margin ? "margin" : "border" ) ) :
null;
};
@@ -6202,7 +9000,7 @@ jQuery.each([ "Height", "Width" ], function( i, name ) {
if ( !elem ) {
return size == null ? null : this;
}
-
+
if ( jQuery.isFunction( size ) ) {
return this.each(function( i ) {
var self = jQuery( this );
@@ -6210,31 +9008,39 @@ jQuery.each([ "Height", "Width" ], function( i, name ) {
});
}
- return ("scrollTo" in elem && elem.document) ? // does it walk and quack like a window?
+ if ( jQuery.isWindow( elem ) ) {
// Everyone else use document.documentElement or document.body depending on Quirks vs Standards mode
- elem.document.compatMode === "CSS1Compat" && elem.document.documentElement[ "client" + name ] ||
- elem.document.body[ "client" + name ] :
-
- // Get document width or height
- (elem.nodeType === 9) ? // is it a document
- // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
- Math.max(
- elem.documentElement["client" + name],
- elem.body["scroll" + name], elem.documentElement["scroll" + name],
- elem.body["offset" + name], elem.documentElement["offset" + name]
- ) :
-
- // Get or set width or height on the element
- size === undefined ?
- // Get width or height on the element
- jQuery.css( elem, type ) :
-
- // Set the width or height on the element (default to pixels if value is unitless)
- this.css( type, typeof size === "string" ? size : ( parseInt( size ) || 0 ) + "px" );
+ // 3rd condition allows Nokia support, as it supports the docElem prop but not CSS1Compat
+ var docElemProp = elem.document.documentElement[ "client" + name ],
+ body = elem.document.body;
+ return elem.document.compatMode === "CSS1Compat" && docElemProp ||
+ body && body[ "client" + name ] || docElemProp;
+
+ // Get document width or height
+ } else if ( elem.nodeType === 9 ) {
+ // Either scroll[Width/Height] or offset[Width/Height], whichever is greater
+ return Math.max(
+ elem.documentElement["client" + name],
+ elem.body["scroll" + name], elem.documentElement["scroll" + name],
+ elem.body["offset" + name], elem.documentElement["offset" + name]
+ );
+
+ // Get or set width or height on the element
+ } else if ( size === undefined ) {
+ var orig = jQuery.css( elem, type ),
+ ret = parseFloat( orig );
+
+ return jQuery.isNaN( ret ) ? orig : ret;
+
+ // Set the width or height on the element (default to pixels if value is unitless)
+ } else {
+ return this.css( type, typeof size === "string" ? size : size + "px" );
+ }
};
});
+
+
// Expose jQuery to the global object
window.jQuery = window.$ = jQuery;
-
})(window);
diff --git a/resources/jquery/jquery.json.js b/resources/jquery/jquery.json.js
new file mode 100644
index 00000000..63230b3b
--- /dev/null
+++ b/resources/jquery/jquery.json.js
@@ -0,0 +1,180 @@
+/*
+ * jQuery JSON Plugin
+ * version: 2.1 (2009-08-14)
+ *
+ * This document is licensed as free software under the terms of the
+ * MIT License: http://www.opensource.org/licenses/mit-license.php
+ *
+ * Brantley Harris wrote this plugin. It is based somewhat on the JSON.org
+ * website's http://www.json.org/json2.js, which proclaims:
+ * "NO WARRANTY EXPRESSED OR IMPLIED. USE AT YOUR OWN RISK.", a sentiment that
+ * I uphold.
+ *
+ * It is also influenced heavily by MochiKit's serializeJSON, which is
+ * copyrighted 2005 by Bob Ippolito.
+ *
+ * @see http://code.google.com/p/jquery-json/
+ */
+
+(function($) {
+ /** jQuery.toJSON( json-serializble )
+ Converts the given argument into a JSON respresentation.
+
+ If an object has a "toJSON" function, that will be used to get the representation.
+ Non-integer/string keys are skipped in the object, as are keys that point to a function.
+
+ json-serializble:
+ The *thing* to be converted.
+ **/
+ $.toJSON = function(o)
+ {
+ if (typeof(JSON) == 'object' && JSON.stringify)
+ return JSON.stringify(o);
+
+ var type = typeof(o);
+
+ if (o === null)
+ return "null";
+
+ if (type == "undefined")
+ return undefined;
+
+ if (type == "number" || type == "boolean")
+ return o + "";
+
+ if (type == "string")
+ return $.quoteString(o);
+
+ if (type == 'object')
+ {
+ if (typeof o.toJSON == "function")
+ return $.toJSON( o.toJSON() );
+
+ if (o.constructor === Date)
+ {
+ var month = o.getUTCMonth() + 1;
+ if (month < 10) month = '0' + month;
+
+ var day = o.getUTCDate();
+ if (day < 10) day = '0' + day;
+
+ var year = o.getUTCFullYear();
+
+ var hours = o.getUTCHours();
+ if (hours < 10) hours = '0' + hours;
+
+ var minutes = o.getUTCMinutes();
+ if (minutes < 10) minutes = '0' + minutes;
+
+ var seconds = o.getUTCSeconds();
+ if (seconds < 10) seconds = '0' + seconds;
+
+ var milli = o.getUTCMilliseconds();
+ if (milli < 100) milli = '0' + milli;
+ if (milli < 10) milli = '0' + milli;
+
+ return '"' + year + '-' + month + '-' + day + 'T' +
+ hours + ':' + minutes + ':' + seconds +
+ '.' + milli + 'Z"';
+ }
+
+ if (o.constructor === Array)
+ {
+ var ret = [];
+ for (var i = 0; i < o.length; i++)
+ ret.push( $.toJSON(o[i]) || "null" );
+
+ return "[" + ret.join(",") + "]";
+ }
+
+ var pairs = [];
+ for (var k in o) {
+ var name;
+ var type = typeof k;
+
+ if (type == "number")
+ name = '"' + k + '"';
+ else if (type == "string")
+ name = $.quoteString(k);
+ else
+ continue; //skip non-string or number keys
+
+ if (typeof o[k] == "function")
+ continue; //skip pairs where the value is a function.
+
+ var val = $.toJSON(o[k]);
+
+ pairs.push(name + ":" + val);
+ }
+
+ return "{" + pairs.join(", ") + "}";
+ }
+ };
+
+ /** jQuery.evalJSON(src)
+ Evaluates a given piece of json source.
+ **/
+ $.evalJSON = function(src)
+ {
+ if (typeof(JSON) == 'object' && JSON.parse)
+ return JSON.parse(src);
+ return eval("(" + src + ")");
+ };
+
+ /** jQuery.secureEvalJSON(src)
+ Evals JSON in a way that is *more* secure.
+ **/
+ $.secureEvalJSON = function(src)
+ {
+ if (typeof(JSON) == 'object' && JSON.parse)
+ return JSON.parse(src);
+
+ var filtered = src;
+ filtered = filtered.replace(/\\["\\\/bfnrtu]/g, '@');
+ filtered = filtered.replace(/"[^"\\\n\r]*"|true|false|null|-?\d+(?:\.\d*)?(?:[eE][+\-]?\d+)?/g, ']');
+ filtered = filtered.replace(/(?:^|:|,)(?:\s*\[)+/g, '');
+
+ if (/^[\],:{}\s]*$/.test(filtered))
+ return eval("(" + src + ")");
+ else
+ throw new SyntaxError("Error parsing JSON, source is not valid.");
+ };
+
+ /** jQuery.quoteString(string)
+ Returns a string-repr of a string, escaping quotes intelligently.
+ Mostly a support function for toJSON.
+
+ Examples:
+ >>> jQuery.quoteString("apple")
+ "apple"
+
+ >>> jQuery.quoteString('"Where are we going?", she asked.')
+ "\"Where are we going?\", she asked."
+ **/
+ $.quoteString = function(string)
+ {
+ if (string.match(_escapeable))
+ {
+ return '"' + string.replace(_escapeable, function (a)
+ {
+ var c = _meta[a];
+ if (typeof c === 'string') return c;
+ c = a.charCodeAt();
+ return '\\u00' + Math.floor(c / 16).toString(16) + (c % 16).toString(16);
+ }) + '"';
+ }
+ return '"' + string + '"';
+ };
+
+ var _escapeable = /["\\\x00-\x1f\x7f-\x9f]/g;
+
+ var _meta = {
+ '\b': '\\b',
+ '\t': '\\t',
+ '\n': '\\n',
+ '\f': '\\f',
+ '\r': '\\r',
+ '"' : '\\"',
+ '\\': '\\\\'
+ };
+})(jQuery);
diff --git a/resources/jquery/jquery.localize.js b/resources/jquery/jquery.localize.js
index 3c8f597a..3a7925bf 100644
--- a/resources/jquery/jquery.localize.js
+++ b/resources/jquery/jquery.localize.js
@@ -1,14 +1,11 @@
/**
- * Simple Placeholder-based Localization
- *
- * Call on a selection of HTML which contains <msg key="message-key" /> elements or elements with
- * title-msg="message-key" or alt-msg="message-key" attributes. <msg /> elements will be replaced
+ * Simple Placeholder-based Localization
+ *
+ * Call on a selection of HTML which contains <html:msg key="message-key" /> elements or elements with
+ * title-msg="message-key" or alt-msg="message-key" attributes. <html:msg /> elements will be replaced
* with localized text, elements with title-msg and alt-msg attributes will receive localized title
* and alt attributes.
- *
- * Note that "msg" elements must have html namespacing such as "<html:msg />" to be compatible with
- * Internet Explorer.
- *
+ * *
* Example:
* <p class="somethingCool">
* <html:msg key="my-message" />
@@ -16,49 +13,61 @@
* </p>
*
* Localizes to...
- *
- * <p class="somethingCool">
- * My Message
- * <img src="something.jpg" title="My Title Message" alt="My Alt Message" />
- * </p>
+ * <p class="somethingCool">
+ * My Message
+ * <img src="something.jpg" title="My Title Message" alt="My Alt Message" />
+ * </p>
+ */
+( function( $ ) {
+/**
+ * Localizes a DOM selection by replacing <html:msg /> elements with localized text and adding
+ * localized title and alt attributes to elements with title-msg and alt-msg attributes
+ * respectively.
+ *
+ * @param Object: options Map of options
+ * * prefix: Message prefix to use when localizing elements and attributes
*/
-( function( $, mw ) {
- /**
- * Localizes a DOM selection by replacing <msg /> elements with localized text and adding
- * localized title and alt attributes to elements with title-msg and alt-msg attributes
- * respectively.
- *
- * @param Object: options Map of options
- * * prefix: Message prefix to use when localizing elements and attributes
- */
-
- $.fn.localize = function( options ) {
- options = $.extend( { 'prefix': '' }, options );
- return $(this)
- .find( 'msg,html\\:msg' )
- .each( function() {
- $(this)
- .text( mediaWiki.msg( options.prefix + $(this).attr( 'key' ) ) )
- .replaceWith( $(this).html() );
- } )
- .end()
- .find( '[title-msg]' )
- .each( function() {
- $(this)
- .attr( 'title', mw.msg( options.prefix + $(this).attr( 'title-msg' ) ) )
- .removeAttr( 'title-msg' );
- } )
- .end()
- .find( '[alt-msg]' )
- .each( function() {
- $(this)
- .attr( 'alt', mw.msg( options.prefix + $(this).attr( 'alt-msg' ) ) )
- .removeAttr( 'alt-msg' );
- } )
- .end();
+$.fn.localize = function( options ) {
+ options = $.extend( { 'prefix': '', 'keys': {}, 'params': {} }, options );
+ function msg( key ) {
+ var args = key in options.params ? options.params[key] : [];
+ // Format: mw.msg( key [, p1, p2, ...] )
+ args.unshift( options.prefix + ( key in options.keys ? options.keys[key] : key ) );
+ return mw.msg.apply( mw, args );
};
-} )( jQuery, mediaWiki );
+ return $(this)
+ // Ok, so here's the story on this selector.
+ // In IE 6/7, searching for 'msg' turns up the 'html:msg', but searching for 'html:msg' does not.
+ // In later IE and other browsers, searching for 'html:msg' turns up the 'html:msg', but searching for 'msg' does not.
+ // So searching for both 'msg' and 'html:msg' seems to get the job done.
+ // This feels pretty icky, though.
+ .find( 'msg,html\\:msg' )
+ .each( function() {
+ var $el = $(this);
+ $el
+ .text( msg( $el.attr( 'key' ) ) )
+ .replaceWith( $el.html() );
+ } )
+ .end()
+ .find( '[title-msg]' )
+ .each( function() {
+ var $el = $(this);
+ $el
+ .attr( 'title', msg( $el.attr( 'title-msg' ) ) )
+ .removeAttr( 'title-msg' );
+ } )
+ .end()
+ .find( '[alt-msg]' )
+ .each( function() {
+ var $el = $(this);
+ $el
+ .attr( 'alt', msg( $el.attr( 'alt-msg' ) ) )
+ .removeAttr( 'alt-msg' );
+ } )
+ .end();
+};
// Let IE know about the msg tag before it's used...
document.createElement( 'msg' );
+} )( jQuery );
diff --git a/resources/jquery/jquery.makeCollapsible.css b/resources/jquery/jquery.makeCollapsible.css
new file mode 100644
index 00000000..993fa8c6
--- /dev/null
+++ b/resources/jquery/jquery.makeCollapsible.css
@@ -0,0 +1,14 @@
+/* See also jquery.makeCollapsible.js */
+.mw-collapsible-toggle {
+ float: right;
+}
+
+/* list-items go as wide as their parent element, don't float them inside list items */
+li .mw-collapsible-toggle {
+ float: none;
+}
+
+/* the added list item should have no list-style */
+.mw-collapsible-toggle-li {
+ list-style: none;
+}
diff --git a/resources/jquery/jquery.makeCollapsible.js b/resources/jquery/jquery.makeCollapsible.js
new file mode 100644
index 00000000..a84f405c
--- /dev/null
+++ b/resources/jquery/jquery.makeCollapsible.js
@@ -0,0 +1,339 @@
+/**
+ * jQuery makeCollapsible
+ *
+ * This will enable collapsible-functionality on all passed elements.
+ * Will prevent binding twice to the same element.
+ * Initial state is expanded by default, this can be overriden by adding class
+ * "mw-collapsed" to the "mw-collapsible" element.
+ * Elements made collapsible have class "mw-made-collapsible".
+ * Except for tables and lists, the inner content is wrapped in "mw-collapsible-content".
+ *
+ * @author Krinkle <krinklemail@gmail.com>
+ *
+ * Dual license:
+ * @license CC-BY 3.0 <http://creativecommons.org/licenses/by/3.0>
+ * @license GPL2 <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
+ */
+( function( $, mw ) {
+
+$.fn.makeCollapsible = function() {
+
+ return this.each(function() {
+ var _fn = 'jquery.makeCollapsible> ';
+
+ // Define reused variables and functions
+ var $that = $(this).addClass( 'mw-collapsible' ), // case: $( '#myAJAXelement' ).makeCollapsible()
+ that = this,
+ collapsetext = $(this).attr( 'data-collapsetext' ),
+ expandtext = $(this).attr( 'data-expandtext' ),
+ toggleElement = function( $collapsible, action, $defaultToggle, instantHide ) {
+ // Validate parameters
+ if ( !$collapsible.jquery ) { // $collapsible must be an instance of jQuery
+ return;
+ }
+ if ( action != 'expand' && action != 'collapse' ) {
+ // action must be string with 'expand' or 'collapse'
+ return;
+ }
+ if ( typeof $defaultToggle == 'undefined' ) {
+ $defaultToggle = null;
+ }
+ if ( $defaultToggle !== null && !($defaultToggle instanceof jQuery) ) {
+ // is optional (may be undefined), but if defined it must be an instance of jQuery.
+ // If it's not, abort right away.
+ // After this $defaultToggle is either null or a valid jQuery instance.
+ return;
+ }
+
+ var $containers = null;
+
+ if ( action == 'collapse' ) {
+
+ // Collapse the element
+ if ( $collapsible.is( 'table' ) ) {
+ // Hide all table rows of this table
+ // Slide doens't work with tables, but fade does as of jQuery 1.1.3
+ // http://stackoverflow.com/questions/467336#920480
+ $containers = $collapsible.find( '>tbody>tr' );
+ if ( $defaultToggle ) {
+ // Exclude tablerow containing togglelink
+ $containers.not( $defaultToggle.closest( 'tr' ) ).stop(true, true).fadeOut();
+ } else {
+ if ( instantHide ) {
+ $containers.hide();
+ } else {
+ $containers.stop( true, true ).fadeOut();
+ }
+ }
+
+ } else if ( $collapsible.is( 'ul' ) || $collapsible.is( 'ol' ) ) {
+ $containers = $collapsible.find( '> li' );
+ if ( $defaultToggle ) {
+ // Exclude list-item containing togglelink
+ $containers.not( $defaultToggle.parent() ).stop( true, true ).slideUp();
+ } else {
+ if ( instantHide ) {
+ $containers.hide();
+ } else {
+ $containers.stop( true, true ).slideUp();
+ }
+ }
+
+ } else { // <div>, <p> etc.
+ var $collapsibleContent = $collapsible.find( '> .mw-collapsible-content' );
+
+ // If a collapsible-content is defined, collapse it
+ if ( $collapsibleContent.length ) {
+ if ( instantHide ) {
+ $collapsibleContent.hide();
+ } else {
+ $collapsibleContent.slideUp();
+ }
+
+ // Otherwise assume this is a customcollapse with a remote toggle
+ // .. and there is no collapsible-content because the entire element should be toggled
+ } else {
+ if ( $collapsible.is( 'tr' ) || $collapsible.is( 'td' ) || $collapsible.is( 'th' ) ) {
+ $collapsible.fadeOut();
+ } else {
+ $collapsible.slideUp();
+ }
+ }
+ }
+
+ } else {
+
+ // Expand the element
+ if ( $collapsible.is( 'table' ) ) {
+ $containers = $collapsible.find( '>tbody>tr' );
+ if ( $defaultToggle ) {
+ // Exclude tablerow containing togglelink
+ $containers.not( $defaultToggle.parent().parent() ).stop(true, true).fadeIn();
+ } else {
+ $containers.stop(true, true).fadeIn();
+ }
+
+ } else if ( $collapsible.is( 'ul' ) || $collapsible.is( 'ol' ) ) {
+ $containers = $collapsible.find( '> li' );
+ if ( $defaultToggle ) {
+ // Exclude list-item containing togglelink
+ $containers.not( $defaultToggle.parent() ).stop( true, true ).slideDown();
+ } else {
+ $containers.stop( true, true ).slideDown();
+ }
+
+ } else { // <div>, <p> etc.
+ var $collapsibleContent = $collapsible.find( '> .mw-collapsible-content' );
+
+ // If a collapsible-content is defined, collapse it
+ if ( $collapsibleContent.length ) {
+ $collapsibleContent.slideDown();
+
+ // Otherwise assume this is a customcollapse with a remote toggle
+ // .. and there is no collapsible-content because the entire element should be toggled
+ } else {
+ if ( $collapsible.is( 'tr' ) || $collapsible.is( 'td' ) || $collapsible.is( 'th' ) ) {
+ $collapsible.fadeIn();
+ } else {
+ $collapsible.slideDown();
+ }
+ }
+ }
+ }
+ },
+ // Toggles collapsible and togglelink class and updates text label
+ toggleLinkDefault = function( that, e ) {
+ var $that = $(that),
+ $collapsible = $that.closest( '.mw-collapsible.mw-made-collapsible' ).toggleClass( 'mw-collapsed' );
+ e.preventDefault();
+ e.stopPropagation();
+
+ // It's expanded right now
+ if ( !$that.hasClass( 'mw-collapsible-toggle-collapsed' ) ) {
+ // Change link to "Show"
+ $that.removeClass( 'mw-collapsible-toggle-expanded' ).addClass( 'mw-collapsible-toggle-collapsed' );
+ if ( $that.find( '> a' ).length ) {
+ $that.find( '> a' ).text( expandtext );
+ } else {
+ $that.text( expandtext );
+ }
+ // Collapse element
+ toggleElement( $collapsible, 'collapse', $that );
+
+ // It's collapsed right now
+ } else {
+ // Change link to "Hide"
+ $that.removeClass( 'mw-collapsible-toggle-collapsed' ).addClass( 'mw-collapsible-toggle-expanded' );
+ if ( $that.find( '> a' ).length ) {
+ $that.find( '> a' ).text( collapsetext );
+ } else {
+ $that.text( collapsetext );
+ }
+ // Expand element
+ toggleElement( $collapsible, 'expand', $that );
+ }
+ return;
+ },
+ // Toggles collapsible and togglelink class
+ toggleLinkPremade = function( $that, e ) {
+ var $collapsible = $that.eq(0).closest( '.mw-collapsible.mw-made-collapsible' ).toggleClass( 'mw-collapsed' );
+ if ( $(e.target).is('a') ) {
+ return true;
+ }
+ e.preventDefault();
+ e.stopPropagation();
+
+ // It's expanded right now
+ if ( !$that.hasClass( 'mw-collapsible-toggle-collapsed' ) ) {
+ // Change toggle to collapsed
+ $that.removeClass( 'mw-collapsible-toggle-expanded' ).addClass( 'mw-collapsible-toggle-collapsed' );
+ // Collapse element
+ toggleElement( $collapsible, 'collapse', $that );
+
+ // It's collapsed right now
+ } else {
+ // Change toggle to expanded
+ $that.removeClass( 'mw-collapsible-toggle-collapsed' ).addClass( 'mw-collapsible-toggle-expanded' );
+ // Expand element
+ toggleElement( $collapsible, 'expand', $that );
+ }
+ return;
+ },
+ // Toggles customcollapsible
+ toggleLinkCustom = function( $that, e, $collapsible ) {
+ // For the initial state call of customtogglers there is no event passed
+ if (e) {
+ e.preventDefault();
+ e.stopPropagation();
+ }
+ // Get current state and toggle to the opposite
+ var action = $collapsible.hasClass( 'mw-collapsed' ) ? 'expand' : 'collapse';
+ $collapsible.toggleClass( 'mw-collapsed' );
+ toggleElement( $collapsible, action, $that );
+
+ };
+
+ // Use custom text or default ?
+ if( !collapsetext ) {
+ collapsetext = mw.msg( 'collapsible-collapse' );
+ }
+ if ( !expandtext ) {
+ expandtext = mw.msg( 'collapsible-expand' );
+ }
+
+ // Create toggle link with a space around the brackets (&nbsp;[text]&nbsp;)
+ var $toggleLink =
+ $( '<a href="#"></a>' )
+ .text( collapsetext )
+ .wrap( '<span class="mw-collapsible-toggle"></span>' )
+ .parent()
+ .prepend( '&nbsp;[' )
+ .append( ']&nbsp;' )
+ .bind( 'click.mw-collapse', function(e) {
+ toggleLinkDefault( this, e );
+ } );
+
+ // Return if it has been enabled already.
+ if ( $that.hasClass( 'mw-made-collapsible' ) ) {
+ return;
+ } else {
+ $that.addClass( 'mw-made-collapsible' );
+ }
+
+ // Check if this element has a custom position for the toggle link
+ // (ie. outside the container or deeper inside the tree)
+ // Then: Locate the custom toggle link(s) and bind them
+ if ( ( $that.attr( 'id' ) || '' ).indexOf( 'mw-customcollapsible-' ) === 0 ) {
+
+ var thatId = $that.attr( 'id' ),
+ $customTogglers = $( '.' + thatId.replace( 'mw-customcollapsible', 'mw-customtoggle' ) );
+ mw.log( _fn + 'Found custom collapsible: #' + thatId );
+
+ // Double check that there is actually a customtoggle link
+ if ( $customTogglers.length ) {
+ $customTogglers.bind( 'click.mw-collapse', function( e ) {
+ toggleLinkCustom( $(this), e, $that );
+ } );
+ } else {
+ mw.log( _fn + '#' + thatId + ': Missing toggler!' );
+ }
+
+ // Initial state
+ if ( $that.hasClass( 'mw-collapsed' ) ) {
+ $that.removeClass( 'mw-collapsed' );
+ toggleLinkCustom( $customTogglers, null, $that );
+ }
+
+ // If this is not a custom case, do the default:
+ // Wrap the contents add the toggle link
+ } else {
+
+ // Elements are treated differently
+ if ( $that.is( 'table' ) ) {
+ // The toggle-link will be in one the the cells (td or th) of the first row
+ var $firstRowCells = $( 'tr:first th, tr:first td', that ),
+ $toggle = $firstRowCells.find( '> .mw-collapsible-toggle' );
+
+ // If theres no toggle link, add it to the last cell
+ if ( !$toggle.length ) {
+ $firstRowCells.eq(-1).prepend( $toggleLink );
+ } else {
+ $toggleLink = $toggle.unbind( 'click.mw-collapse' ).bind( 'click.mw-collapse', function( e ) {
+ toggleLinkPremade( $toggle, e );
+ } );
+ }
+
+ } else if ( $that.is( 'ul' ) || $that.is( 'ol' ) ) {
+ // The toggle-link will be in the first list-item
+ var $firstItem = $( 'li:first', $that),
+ $toggle = $firstItem.find( '> .mw-collapsible-toggle' );
+
+ // If theres no toggle link, add it
+ if ( !$toggle.length ) {
+ // Make sure the numeral order doesn't get messed up, force the first (soon to be second) item
+ // to be "1". Except if the value-attribute is already used.
+ // If no value was set WebKit returns "", Mozilla returns '-1', others return null or undefined.
+ var firstval = $firstItem.attr( 'value' );
+ if ( firstval === undefined || !firstval || firstval == '-1' ) {
+ $firstItem.attr( 'value', '1' );
+ }
+ $that.prepend( $toggleLink.wrap( '<li class="mw-collapsible-toggle-li"></li>' ).parent() );
+ } else {
+ $toggleLink = $toggle.unbind( 'click.mw-collapse' ).bind( 'click.mw-collapse', function( e ) {
+ toggleLinkPremade( $toggle, e );
+ } );
+ }
+
+ } else { // <div>, <p> etc.
+
+ // The toggle-link will be the first child of the element
+ var $toggle = $that.find( '> .mw-collapsible-toggle' );
+
+ // If a direct child .content-wrapper does not exists, create it
+ if ( !$that.find( '> .mw-collapsible-content' ).length ) {
+ $that.wrapInner( '<div class="mw-collapsible-content"></div>' );
+ }
+
+ // If theres no toggle link, add it
+ if ( !$toggle.length ) {
+ $that.prepend( $toggleLink );
+ } else {
+ $toggleLink = $toggle.unbind( 'click.mw-collapse' ).bind( 'click.mw-collapse', function( e ) {
+ toggleLinkPremade( $toggle, e );
+ } );
+ }
+ }
+ }
+
+ // Initial state (only for those that are not custom)
+ if ( $that.hasClass( 'mw-collapsed' ) && ( $that.attr( 'id' ) || '').indexOf( 'mw-customcollapsible-' ) !== 0 ) {
+ $that.removeClass( 'mw-collapsed' );
+ // The collapsible element could have multiple togglers
+ // To toggle the initial state only click one of them (ie. the first one, eq(0) )
+ // Else it would go like: hide,show,hide,show for each toggle link.
+ toggleElement( $that, 'collapse', $toggleLink.eq(0), /* instantHide = */ true );
+ $toggleLink.eq(0).click();
+ }
+ } );
+};
+} )( jQuery, mediaWiki ); \ No newline at end of file
diff --git a/resources/jquery/jquery.messageBox.css b/resources/jquery/jquery.messageBox.css
new file mode 100644
index 00000000..96332aa5
--- /dev/null
+++ b/resources/jquery/jquery.messageBox.css
@@ -0,0 +1,15 @@
+.js-messagebox {
+ margin: 1em 5%;
+ padding: 0.5em 2.5%;
+ border: 1px solid #ccc;
+ background-color: #fcfcfc;
+ font-size: 0.8em;
+}
+.js-messagebox .js-messagebox-group {
+ margin: 1px;
+ padding: 0.5em 2.5%;
+ border-bottom: 1px solid #ddd;
+}
+.js-messagebox .js-messagebox-group:last-child {
+ border-bottom: thin none transparent;
+} \ No newline at end of file
diff --git a/resources/jquery/jquery.messageBox.js b/resources/jquery/jquery.messageBox.js
new file mode 100644
index 00000000..a69fca59
--- /dev/null
+++ b/resources/jquery/jquery.messageBox.js
@@ -0,0 +1,98 @@
+/**
+ * jQuery messageBox
+ *
+ * Function to inform the user of something. Use sparingly (since there's mw.log for
+ * messages aimed at developers / debuggers). Based on the function in MediaWiki's
+ * legacy javascript (wikibits.js) by Aryeh Gregor called jsMsg() added in r23233.
+ *
+ * @author Krinkle <krinklemail@gmail.com>
+ *
+ * Dual license:
+ * @license CC-BY 3.0 <http://creativecommons.org/licenses/by/3.0>
+ * @license GPL2 <http://www.gnu.org/licenses/old-licenses/gpl-2.0.html>
+ */
+( function( $, mw ) {
+// @return jQuery object of the message box
+$.messageBoxNew = function( options ) {
+ options = $.extend( {
+ 'id': 'js-messagebox', // unique identifier for this message box
+ 'parent': 'body', // jQuery/CSS selector
+ 'insert': 'prepend' // 'prepend' or 'append'
+ }, options );
+ var $curBox = $( '#'+ options.id );
+ // Only create a new box if it doesn't exist already
+ if ( $curBox.size() > 0 ) {
+ if ( $curBox.hasClass( 'js-messagebox' ) ) {
+ return $curBox;
+ } else {
+ return $curBox.addClass( 'js-messagebox' );
+ }
+ } else {
+ var $newBox = $( '<div/>', {
+ 'id': options.id,
+ 'class': 'js-messagebox',
+ 'css': {
+ 'display': 'none'
+ }
+ });
+ if ( $( options.parent ).length < 1 ) {
+ options.parent = 'body';
+ }
+ if ( options.insert === 'append' ) {
+ $newBox.appendTo( options.parent );
+ return $newBox;
+ } else {
+ $newBox.prependTo( options.parent );
+ return $newBox;
+ }
+ }
+};
+// Calling with no message or message set to empty string or null will hide the group,
+// setting 'replace' to true as well will reset and hide the group entirely.
+// If there are no visible groups the main message box is hidden automatically,
+// and shown again once there are messages
+// @return jQuery object of message group
+$.messageBox = function( options ) {
+ options = $.extend( {
+ 'message': '',
+ 'group': 'default',
+ 'replace': false, // if true replaces any previous message in this group
+ 'target': 'js-messagebox'
+ }, options );
+ var $target = $.messageBoxNew( { id: options.target } );
+ var groupID = options.target + '-' + options.group;
+ var $group = $( '#' + groupID );
+ // Create group container if not existant
+ if ( $group.size() < 1 ) {
+ $group = $( '<div/>', {
+ 'id': groupID,
+ 'class': 'js-messagebox-group'
+ });
+ $target.prepend( $group );
+ }
+ // Replace ?
+ if ( options.replace === true ) {
+ $group.empty();
+ }
+ // Hide it ?
+ if ( options.message === '' || options.message === null ) {
+ $group.hide();
+ } else {
+ // Actual message addition
+ $group.prepend( $( '<p/>' ).append( options.message ) ).show();
+ $target.slideDown();
+ }
+ // If the last visible group was just hidden, slide the entire box up
+ // Othere wise slideDown (if already visible nothing will happen)
+ if ( $target.find( '> *:visible' ).size() === 0 ) {
+ // to avoid a sudden dissapearance of the last group followed by
+ // a slide up of only the outline, show it for a second
+ $group.show();
+ $target.slideUp();
+ $group.hide();
+ } else {
+ $target.slideDown();
+ }
+ return $group;
+};
+} )( jQuery, mediaWiki ); \ No newline at end of file
diff --git a/resources/jquery/jquery.mwPrototypes.js b/resources/jquery/jquery.mwPrototypes.js
new file mode 100644
index 00000000..e26a6be6
--- /dev/null
+++ b/resources/jquery/jquery.mwPrototypes.js
@@ -0,0 +1,120 @@
+/*
+ * JavaScript backwards-compatibility alternatives and other convenience functions
+ */
+
+jQuery.extend({
+ trimLeft : function( str ) {
+ return str === null ? '' : str.toString().replace( /^\s+/, '' );
+ },
+ trimRight : function( str ) {
+ return str === null ?
+ '' : str.toString().replace( /\s+$/, '' );
+ },
+ ucFirst : function( str ) {
+ return str.substr( 0, 1 ).toUpperCase() + str.substr( 1 );
+ },
+ escapeRE : function( str ) {
+ return str.replace ( /([\\{}()|.?*+\-^$\[\]])/g, "\\$1" );
+ },
+ isDomElement : function( el ) {
+ return !!el && !!el.nodeType;
+ },
+ isEmpty : function( v ) {
+ var key;
+ if ( v === "" || v === 0 || v === "0" || v === null
+ || v === false || typeof v === 'undefined' )
+ {
+ return true;
+ }
+ // the for-loop could potentially contain prototypes
+ // to avoid that we check it's length first
+ if ( v.length === 0 ) {
+ return true;
+ }
+ if ( typeof v === 'object' ) {
+ for ( key in v ) {
+ return false;
+ }
+ return true;
+ }
+ return false;
+ },
+ compareArray : function( arrThis, arrAgainst ) {
+ if ( arrThis.length != arrAgainst.length ) {
+ return false;
+ }
+ for ( var i = 0; i < arrThis.length; i++ ) {
+ if ( arrThis[i] instanceof Array ) {
+ if ( !$.compareArray( arrThis[i], arrAgainst[i] ) ) {
+ return false;
+ }
+ } else if ( arrThis[i] !== arrAgainst[i] ) {
+ return false;
+ }
+ }
+ return true;
+ },
+ compareObject : function( objectA, objectB ) {
+
+ // Do a simple check if the types match
+ if ( typeof objectA == typeof objectB ) {
+
+ // Only loop over the contents if it really is an object
+ if ( typeof objectA == 'object' ) {
+ // If they are aliases of the same object (ie. mw and mediaWiki) return now
+ if ( objectA === objectB ) {
+ return true;
+ } else {
+ var prop;
+ // Iterate over each property
+ for ( prop in objectA ) {
+ // Check if this property is also present in the other object
+ if ( prop in objectB ) {
+ // Compare the types of the properties
+ var type = typeof objectA[prop];
+ if ( type == typeof objectB[prop] ) {
+ // Recursively check objects inside this one
+ switch ( type ) {
+ case 'object' :
+ if ( !$.compareObject( objectA[prop], objectB[prop] ) ) {
+ return false;
+ }
+ break;
+ case 'function' :
+ // Functions need to be strings to compare them properly
+ if ( objectA[prop].toString() !== objectB[prop].toString() ) {
+ return false;
+ }
+ break;
+ default:
+ // Strings, numbers
+ if ( objectA[prop] !== objectB[prop] ) {
+ return false;
+ }
+ break;
+ }
+ } else {
+ return false;
+ }
+ } else {
+ return false;
+ }
+ }
+ // Check for properties in B but not in A
+ // This is about 15% faster (tested in Safari 5 and Firefox 3.6)
+ // ...than incrementing a count variable in the above and below loops
+ // See also: http://www.mediawiki.org/wiki/ResourceLoader/Default_modules/compareObject_test#Results
+ for ( prop in objectB ) {
+ if ( !( prop in objectA ) ) {
+ return false;
+ }
+ }
+ }
+ }
+ } else {
+ return false;
+ }
+ return true;
+ }
+});
+
diff --git a/resources/jquery/jquery.placeholder.js b/resources/jquery/jquery.placeholder.js
index 0b54893e..1bb69f00 100644
--- a/resources/jquery/jquery.placeholder.js
+++ b/resources/jquery/jquery.placeholder.js
@@ -10,7 +10,7 @@
*/
( function( $ ) {
-jQuery.fn.placeholder = function() {
+$.fn.placeholder = function() {
return this.each( function() {
@@ -19,11 +19,11 @@ jQuery.fn.placeholder = function() {
return;
}
- var placeholder = this.getAttribute('placeholder');
- var $input = jQuery(this);
+ var placeholder = this.getAttribute( 'placeholder' );
+ var $input = $(this);
// Show initially, if empty
- if ( this.value === '' || this.value == placeholder ) {
+ if ( this.value === '' || this.value === placeholder ) {
$input.addClass( 'placeholder' ).val( placeholder );
}
@@ -40,7 +40,7 @@ jQuery.fn.placeholder = function() {
// Also listen for other events in case $input was
// already focused when the events were bound
.bind( 'focus drop keydown paste', function( e ) {
- if ($input.hasClass('placeholder')) {
+ if ( $input.hasClass( 'placeholder' ) ) {
if ( e.type == 'drop' && e.originalEvent.dataTransfer ) {
// Support for drag&drop. Instead of inserting the dropped
// text somewhere in the middle of the placeholder string,
@@ -69,16 +69,18 @@ jQuery.fn.placeholder = function() {
} );
// Blank on submit -- prevents submitting with unintended value
- this.form && $( this.form ).submit( function() {
- // $input.trigger( 'focus' ); would be problematic
- // because it actually focuses $input, leading
- // to nasty behavior in mobile browsers
- if ( $input.hasClass('placeholder') ) {
- $input
- .val( '' )
- .removeClass( 'placeholder' );
- }
- });
+ if ( this.form ) {
+ $( this.form ).submit( function() {
+ // $input.trigger( 'focus' ); would be problematic
+ // because it actually focuses $input, leading
+ // to nasty behavior in mobile browsers
+ if ( $input.hasClass( 'placeholder' ) ) {
+ $input
+ .val( '' )
+ .removeClass( 'placeholder' );
+ }
+ });
+ }
});
};
diff --git a/resources/jquery/jquery.qunit.completenessTest.js b/resources/jquery/jquery.qunit.completenessTest.js
new file mode 100644
index 00000000..2244237c
--- /dev/null
+++ b/resources/jquery/jquery.qunit.completenessTest.js
@@ -0,0 +1,267 @@
+/**
+ * jQuery QUnit CompletenessTest 0.3
+ *
+ * Tests the completeness of test suites for object oriented javascript
+ * libraries. Written to be used in enviroments with jQuery and QUnit.
+ * Requires jQuery 1.5.2 or higher.
+ *
+ * Globals: jQuery, $, QUnit, console.log
+ *
+ * Built for and tested with:
+ * - Safari 5
+ * - Firefox 4
+ *
+ * @author Timo Tijhof, 2011
+ */
+(function(){
+
+/* Private members */
+var TYPE_SIMPLEFUNC = 101;
+var TYPE_OBJCONSTRFUNC = 100;
+
+/**
+ * CompletenessTest
+ * @constructor
+ *
+ * @example
+ * var myTester = new CompletenessTest( myLib );
+ * @param masterVariable {Object} The root variable that contains all object
+ * members. CompletenessTest will recursively traverse objects and keep track
+ * of all methods.
+ * @param ignoreFn {Function} Optionally pass a function to filter out certain
+ * methods. Example: You may want to filter out instances of jQuery or some
+ * other constructor. Otherwise "missingTests" will include all methods that
+ * were not called from that instance.
+ */
+var CompletenessTest = function ( masterVariable, ignoreFn ) {
+
+ // Keep track in these objects. Keyed by strings with the
+ // method names (ie. 'my.foo', 'my.bar', etc.) values are boolean true.
+ this.methodCallTracker = {};
+ this.missingTests = {};
+
+ this.ignoreFn = undefined === ignoreFn ? function(){ return false; } : ignoreFn;
+
+ // Lazy limit in case something weird happends (like recurse (part of) ourself).
+ this.lazyLimit = 1000;
+ this.lazyCounter = 0;
+
+ var that = this;
+
+ // Bind begin and end to QUnit.
+ QUnit.begin = function(){
+ that.checkTests( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_INJECT );
+ };
+
+ QUnit.done = function(){
+ that.checkTests( null, masterVariable, masterVariable, [], CompletenessTest.ACTION_CHECK );
+ console.log( 'CompletenessTest.ACTION_CHECK', that );
+
+ // Build HTML representing the outcome from CompletenessTest
+ // And insert it into the header.
+
+ var makeList = function( blob, title, style ) {
+ title = title || 'Values';
+ var html = '<strong>' + mw.html.escape(title) + '</strong>';
+ $.each( blob, function( key ) {
+ html += '<br />' + mw.html.escape(key);
+ });
+ html += '<br /><br /><em>&mdash; CompletenessTest</em>';
+ var $oldResult = $( '#qunit-completenesstest' ),
+ $result = $oldResult.length ? $oldResult : $( '<div id="qunit-completenesstest"></div>' );
+ return $result.css( style ).html( html );
+ };
+
+ if ( $.isEmptyObject( that.missingTests ) ) {
+ // Good
+ var $testResults = makeList(
+ { 'No missing tests!': true },
+ 'missingTests',
+ {
+ background: '#D2E0E6',
+ color: '#366097',
+ padding: '1em'
+ }
+ );
+ } else {
+ // Bad
+ var $testResults = makeList(
+ that.missingTests,
+ 'missingTests',
+ {
+ background: '#EE5757',
+ color: 'black',
+ padding: '1em'
+ }
+ );
+ }
+
+ $( '#qunit-testrunner-toolbar' ).prepend( $testResults );
+ };
+
+ return this;
+};
+
+/* Static members */
+CompletenessTest.ACTION_INJECT = 500;
+CompletenessTest.ACTION_CHECK = 501;
+
+/* Public methods */
+CompletenessTest.fn = CompletenessTest.prototype = {
+
+ /**
+ * CompletenessTest.fn.checkTests
+ *
+ * This function recursively walks through the given object, calling itself as it goes.
+ * Depending on the action it either injects our listener into the methods, or
+ * reads from our tracker and records which methods have not been called by the test suite.
+ *
+ * @param currName {String|Null} Name of the given object member (Initially this is null).
+ * @param currVar {mixed} The variable to check (initially an object,
+ * further down it could be anything).
+ * @param masterVariable {Object} Throughout our interation, always keep track of the master/root.
+ * Initially this is the same as currVar.
+ * @param parentPathArray {Array} Array of names that indicate our breadcrumb path starting at
+ * masterVariable. Not including currName.
+ * @param action {Number} What is this function supposed to do (ACTION_INJECT or ACTION_CHECK)
+ */
+ checkTests: function( currName, currVar, masterVariable, parentPathArray, action ) {
+
+ // Handle the lazy limit
+ this.lazyCounter++;
+ if ( this.lazyCounter > this.lazyLimit ) {
+ console.log( 'CompletenessTest.fn.checkTests> Limit reached: ' + this.lazyCounter );
+ return null;
+ }
+
+ var type = $.type( currVar ),
+ that = this;
+
+ // Hard ignores
+ if ( this.ignoreFn( currVar, that, parentPathArray ) ) {
+ return null;
+
+ // Functions
+ } else if ( type === 'function' ) {
+
+ /* CHECK MODE */
+
+ if ( action === CompletenessTest.ACTION_CHECK ) {
+
+ if ( !currVar.prototype || $.isEmptyObject( currVar.prototype ) ) {
+
+ that.hasTest( parentPathArray.join( '.' ) );
+
+ // We don't support checking object constructors yet...
+ } else {
+
+ // ...the prototypes are fine tho
+ $.each( currVar.prototype, function( key, value ) {
+ if ( key === 'constructor' ) return;
+
+ // Clone and brake reference to parentPathArray
+ var tmpPathArray = $.extend( [], parentPathArray );
+ tmpPathArray.push( 'prototype' ); tmpPathArray.push( key );
+
+ that.hasTest( tmpPathArray.join( '.' ) );
+ } );
+ }
+
+ /* INJECT MODE */
+
+ } else if ( action === CompletenessTest.ACTION_INJECT ) {
+
+ if ( !currVar.prototype || $.isEmptyObject( currVar.prototype ) ) {
+
+ // Inject check
+ that.injectCheck( masterVariable, parentPathArray, function(){
+
+ that.methodCallTracker[ parentPathArray.join( '.' ) ] = true;
+
+ }, TYPE_SIMPLEFUNC );
+
+ // We don't support checking object constructors yet...
+ } else {
+
+ // ... the prototypes are fine tho
+ $.each( currVar.prototype, function( key, value ) {
+ if ( key === 'constructor' ) return;
+
+ // Clone and brake reference to parentPathArray
+ var tmpPathArray = $.extend( [], parentPathArray );
+ tmpPathArray.push( 'prototype' ); tmpPathArray.push( key );
+
+ that.checkTests( key, value, masterVariable, tmpPathArray, action );
+ } );
+ }
+
+ }
+
+ // Recursively. After all, this *is* the completness test
+ } else if ( type === 'object' ) {
+
+ $.each( currVar, function( key, value ) {
+
+ // Clone and brake reference to parentPathArray
+ var tmpPathArray = $.extend( [], parentPathArray );
+ tmpPathArray.push( key );
+
+ that.checkTests( key, value, masterVariable, tmpPathArray, action );
+
+ } );
+
+ }
+
+ return 'End of checkTests';
+ },
+
+ /**
+ * CompletenessTest.fn.hasTest
+ *
+ * Checks if the given method name (ie. 'my.foo.bar')
+ * was called during the test suite (as far as the tracker knows).
+ * If so it adds it to missingTests.
+ *
+ * @param fnName {String}
+ * @return {Boolean}
+ */
+ hasTest: function( fnName ) {
+ if ( !(fnName in this.methodCallTracker) ) {
+ this.missingTests[fnName] = true;
+ return false;
+ }
+ return true;
+ },
+
+ /**
+ * CompletenessTest.fn.injectCheck
+ *
+ * Injects a function (such as a spy that updates methodCallTracker when
+ * it's called) inside another function.
+ *
+ * @param masterVariable {Object}
+ * @param objectPathArray {Array}
+ * @param injectFn {Function}
+ */
+ injectCheck: function( masterVariable, objectPathArray, injectFn ) {
+ var prev,
+ curr = masterVariable,
+ lastMember;
+
+ $.each( objectPathArray, function(i, memberName){
+ prev = curr;
+ curr = prev[memberName];
+ lastMember = memberName;
+ });
+
+ // Objects are by reference, members (unless objects) are not.
+ prev[lastMember] = function(){
+ injectFn();
+ return curr.apply( this, arguments );
+ };
+ }
+};
+
+window.CompletenessTest = CompletenessTest;
+
+})();
diff --git a/resources/jquery/jquery.qunit.css b/resources/jquery/jquery.qunit.css
new file mode 100644
index 00000000..fa9156f9
--- /dev/null
+++ b/resources/jquery/jquery.qunit.css
@@ -0,0 +1,225 @@
+/**
+ * QUnit - A JavaScript Unit Testing Framework
+ *
+ * http://docs.jquery.com/QUnit
+ *
+ * Copyright (c) 2011 John Resig, Jörn Zaefferer
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * or GPL (GPL-LICENSE.txt) licenses.
+ */
+
+/** Font Family and Sizes */
+
+#qunit-tests, #qunit-header, #qunit-banner, #qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult {
+ font-family: "Helvetica Neue Light", "HelveticaNeue-Light", "Helvetica Neue", Calibri, Helvetica, Arial;
+}
+
+#qunit-testrunner-toolbar, #qunit-userAgent, #qunit-testresult, #qunit-tests li { font-size: small; }
+#qunit-tests { font-size: smaller; }
+
+
+/** Resets */
+
+#qunit-tests, #qunit-tests ol, #qunit-header, #qunit-banner, #qunit-userAgent, #qunit-testresult {
+ margin: 0;
+ padding: 0;
+}
+
+
+/** Header */
+
+#qunit-header {
+ padding: 0.5em 0 0.5em 1em;
+
+ color: #8699a4;
+ background-color: #0d3349;
+
+ font-size: 1.5em;
+ line-height: 1em;
+ font-weight: normal;
+
+ border-radius: 15px 15px 0 0;
+ -moz-border-radius: 15px 15px 0 0;
+ -webkit-border-top-right-radius: 15px;
+ -webkit-border-top-left-radius: 15px;
+}
+
+#qunit-header a {
+ text-decoration: none;
+ color: #c2ccd1;
+}
+
+#qunit-header a:hover,
+#qunit-header a:focus {
+ color: #fff;
+}
+
+#qunit-banner {
+ height: 5px;
+}
+
+#qunit-testrunner-toolbar {
+ padding: 0.5em 0 0.5em 2em;
+ color: #5E740B;
+ background-color: #eee;
+}
+
+#qunit-userAgent {
+ padding: 0.5em 0 0.5em 2.5em;
+ background-color: #2b81af;
+ color: #fff;
+ text-shadow: rgba(0, 0, 0, 0.5) 2px 2px 1px;
+}
+
+
+/** Tests: Pass/Fail */
+
+#qunit-tests {
+ list-style-position: inside;
+}
+
+#qunit-tests li {
+ padding: 0.4em 0.5em 0.4em 2.5em;
+ border-bottom: 1px solid #fff;
+ list-style-position: inside;
+}
+
+#qunit-tests.hidepass li.pass, #qunit-tests.hidepass li.running {
+ display: none;
+}
+
+#qunit-tests li strong {
+ cursor: pointer;
+}
+
+#qunit-tests li a {
+ padding: 0.5em;
+ color: #c2ccd1;
+ text-decoration: none;
+}
+#qunit-tests li a:hover,
+#qunit-tests li a:focus {
+ color: #000;
+}
+
+#qunit-tests ol {
+ margin-top: 0.5em;
+ padding: 0.5em;
+
+ background-color: #fff;
+
+ border-radius: 15px;
+ -moz-border-radius: 15px;
+ -webkit-border-radius: 15px;
+
+ box-shadow: inset 0px 2px 13px #999;
+ -moz-box-shadow: inset 0px 2px 13px #999;
+ -webkit-box-shadow: inset 0px 2px 13px #999;
+}
+
+#qunit-tests table {
+ border-collapse: collapse;
+ margin-top: .2em;
+}
+
+#qunit-tests th {
+ text-align: right;
+ vertical-align: top;
+ padding: 0 .5em 0 0;
+}
+
+#qunit-tests td {
+ vertical-align: top;
+}
+
+#qunit-tests pre {
+ margin: 0;
+ white-space: pre-wrap;
+ word-wrap: break-word;
+}
+
+#qunit-tests del {
+ background-color: #e0f2be;
+ color: #374e0c;
+ text-decoration: none;
+}
+
+#qunit-tests ins {
+ background-color: #ffcaca;
+ color: #500;
+ text-decoration: none;
+}
+
+/*** Test Counts */
+
+#qunit-tests b.counts { color: black; }
+#qunit-tests b.passed { color: #5E740B; }
+#qunit-tests b.failed { color: #710909; }
+
+#qunit-tests li li {
+ margin: 0.5em;
+ padding: 0.4em 0.5em 0.4em 0.5em;
+ background-color: #fff;
+ border-bottom: none;
+ list-style-position: inside;
+}
+
+/*** Passing Styles */
+
+#qunit-tests li li.pass {
+ color: #5E740B;
+ background-color: #fff;
+ border-left: 26px solid #C6E746;
+}
+
+#qunit-tests .pass { color: #528CE0; background-color: #D2E0E6; }
+#qunit-tests .pass .test-name { color: #366097; }
+
+#qunit-tests .pass .test-actual,
+#qunit-tests .pass .test-expected { color: #999999; }
+
+#qunit-banner.qunit-pass { background-color: #C6E746; }
+
+/*** Failing Styles */
+
+#qunit-tests li li.fail {
+ color: #710909;
+ background-color: #fff;
+ border-left: 26px solid #EE5757;
+}
+
+#qunit-tests > li:last-child {
+ border-radius: 0 0 15px 15px;
+ -moz-border-radius: 0 0 15px 15px;
+ -webkit-border-bottom-right-radius: 15px;
+ -webkit-border-bottom-left-radius: 15px;
+}
+
+#qunit-tests .fail { color: #000000; background-color: #EE5757; }
+#qunit-tests .fail .test-name,
+#qunit-tests .fail .module-name { color: #000000; }
+
+#qunit-tests .fail .test-actual { color: #EE5757; }
+#qunit-tests .fail .test-expected { color: green; }
+
+#qunit-banner.qunit-fail { background-color: #EE5757; }
+
+
+/** Result */
+
+#qunit-testresult {
+ padding: 0.5em 0.5em 0.5em 2.5em;
+
+ color: #2b81af;
+ background-color: #D2E0E6;
+
+ border-bottom: 1px solid white;
+}
+
+/** Fixture */
+
+#qunit-fixture {
+ position: absolute;
+ top: -10000px;
+ left: -10000px;
+} \ No newline at end of file
diff --git a/resources/jquery/jquery.qunit.js b/resources/jquery/jquery.qunit.js
new file mode 100644
index 00000000..1405e797
--- /dev/null
+++ b/resources/jquery/jquery.qunit.js
@@ -0,0 +1,1442 @@
+/**
+ * QUnit - A JavaScript Unit Testing Framework
+ *
+ * http://docs.jquery.com/QUnit
+ *
+ * Copyright (c) 2011 John Resig, Jörn Zaefferer
+ * Dual licensed under the MIT (MIT-LICENSE.txt)
+ * or GPL (GPL-LICENSE.txt) licenses.
+ */
+
+(function(window) {
+
+var defined = {
+ setTimeout: typeof window.setTimeout !== "undefined",
+ sessionStorage: (function() {
+ try {
+ return !!sessionStorage.getItem;
+ } catch(e){
+ return false;
+ }
+ })()
+};
+
+var testId = 0;
+
+var Test = function(name, testName, expected, testEnvironmentArg, async, callback) {
+ this.name = name;
+ this.testName = testName;
+ this.expected = expected;
+ this.testEnvironmentArg = testEnvironmentArg;
+ this.async = async;
+ this.callback = callback;
+ this.assertions = [];
+};
+Test.prototype = {
+ init: function() {
+ var tests = id("qunit-tests");
+ if (tests) {
+ var b = document.createElement("strong");
+ b.innerHTML = "Running " + this.name;
+ var li = document.createElement("li");
+ li.appendChild( b );
+ li.className = "running";
+ li.id = this.id = "test-output" + testId++;
+ tests.appendChild( li );
+ }
+ },
+ setup: function() {
+ if (this.module != config.previousModule) {
+ if ( config.previousModule ) {
+ QUnit.moduleDone( {
+ name: config.previousModule,
+ failed: config.moduleStats.bad,
+ passed: config.moduleStats.all - config.moduleStats.bad,
+ total: config.moduleStats.all
+ } );
+ }
+ config.previousModule = this.module;
+ config.moduleStats = { all: 0, bad: 0 };
+ QUnit.moduleStart( {
+ name: this.module
+ } );
+ }
+
+ config.current = this;
+ this.testEnvironment = extend({
+ setup: function() {},
+ teardown: function() {}
+ }, this.moduleTestEnvironment);
+ if (this.testEnvironmentArg) {
+ extend(this.testEnvironment, this.testEnvironmentArg);
+ }
+
+ QUnit.testStart( {
+ name: this.testName
+ } );
+
+ // allow utility functions to access the current test environment
+ // TODO why??
+ QUnit.current_testEnvironment = this.testEnvironment;
+
+ try {
+ if ( !config.pollution ) {
+ saveGlobal();
+ }
+
+ this.testEnvironment.setup.call(this.testEnvironment);
+ } catch(e) {
+ QUnit.ok( false, "Setup failed on " + this.testName + ": " + e.message );
+ }
+ },
+ run: function() {
+ if ( this.async ) {
+ QUnit.stop();
+ }
+
+ if ( config.notrycatch ) {
+ this.callback.call(this.testEnvironment);
+ return;
+ }
+ try {
+ this.callback.call(this.testEnvironment);
+ } catch(e) {
+ fail("Test " + this.testName + " died, exception and test follows", e, this.callback);
+ QUnit.ok( false, "Died on test #" + (this.assertions.length + 1) + ": " + e.message + " - " + QUnit.jsDump.parse(e) );
+ // else next test will carry the responsibility
+ saveGlobal();
+
+ // Restart the tests if they're blocking
+ if ( config.blocking ) {
+ start();
+ }
+ }
+ },
+ teardown: function() {
+ try {
+ checkPollution();
+ this.testEnvironment.teardown.call(this.testEnvironment);
+ } catch(e) {
+ QUnit.ok( false, "Teardown failed on " + this.testName + ": " + e.message );
+ }
+ },
+ finish: function() {
+ if ( this.expected && this.expected != this.assertions.length ) {
+ QUnit.ok( false, "Expected " + this.expected + " assertions, but " + this.assertions.length + " were run" );
+ }
+
+ var good = 0, bad = 0,
+ tests = id("qunit-tests");
+
+ config.stats.all += this.assertions.length;
+ config.moduleStats.all += this.assertions.length;
+
+ if ( tests ) {
+ var ol = document.createElement("ol");
+
+ for ( var i = 0; i < this.assertions.length; i++ ) {
+ var assertion = this.assertions[i];
+
+ var li = document.createElement("li");
+ li.className = assertion.result ? "pass" : "fail";
+ li.innerHTML = assertion.message || (assertion.result ? "okay" : "failed");
+ ol.appendChild( li );
+
+ if ( assertion.result ) {
+ good++;
+ } else {
+ bad++;
+ config.stats.bad++;
+ config.moduleStats.bad++;
+ }
+ }
+
+ // store result when possible
+ if ( QUnit.config.reorder && defined.sessionStorage ) {
+ if (bad) {
+ sessionStorage.setItem("qunit-" + this.module + "-" + this.testName, bad);
+ } else {
+ sessionStorage.removeItem("qunit-" + this.module + "-" + this.testName);
+ }
+ }
+
+ if (bad == 0) {
+ ol.style.display = "none";
+ }
+
+ var b = document.createElement("strong");
+ b.innerHTML = this.name + " <b class='counts'>(<b class='failed'>" + bad + "</b>, <b class='passed'>" + good + "</b>, " + this.assertions.length + ")</b>";
+
+ var a = document.createElement("a");
+ a.innerHTML = "Rerun";
+ a.href = QUnit.url({ filter: getText([b]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") });
+
+ addEvent(b, "click", function() {
+ var next = b.nextSibling.nextSibling,
+ display = next.style.display;
+ next.style.display = display === "none" ? "block" : "none";
+ });
+
+ addEvent(b, "dblclick", function(e) {
+ var target = e && e.target ? e.target : window.event.srcElement;
+ if ( target.nodeName.toLowerCase() == "span" || target.nodeName.toLowerCase() == "b" ) {
+ target = target.parentNode;
+ }
+ if ( window.location && target.nodeName.toLowerCase() === "strong" ) {
+ window.location = QUnit.url({ filter: getText([target]).replace(/\([^)]+\)$/, "").replace(/(^\s*|\s*$)/g, "") });
+ }
+ });
+
+ var li = id(this.id);
+ li.className = bad ? "fail" : "pass";
+ li.removeChild( li.firstChild );
+ li.appendChild( b );
+ li.appendChild( a );
+ li.appendChild( ol );
+
+ } else {
+ for ( var i = 0; i < this.assertions.length; i++ ) {
+ if ( !this.assertions[i].result ) {
+ bad++;
+ config.stats.bad++;
+ config.moduleStats.bad++;
+ }
+ }
+ }
+
+ try {
+ QUnit.reset();
+ } catch(e) {
+ fail("reset() failed, following Test " + this.testName + ", exception and reset fn follows", e, QUnit.reset);
+ }
+
+ QUnit.testDone( {
+ name: this.testName,
+ failed: bad,
+ passed: this.assertions.length - bad,
+ total: this.assertions.length
+ } );
+ },
+
+ queue: function() {
+ var test = this;
+ synchronize(function() {
+ test.init();
+ });
+ function run() {
+ // each of these can by async
+ synchronize(function() {
+ test.setup();
+ });
+ synchronize(function() {
+ test.run();
+ });
+ synchronize(function() {
+ test.teardown();
+ });
+ synchronize(function() {
+ test.finish();
+ });
+ }
+ // defer when previous test run passed, if storage is available
+ var bad = QUnit.config.reorder && defined.sessionStorage && +sessionStorage.getItem("qunit-" + this.module + "-" + this.testName);
+ if (bad) {
+ run();
+ } else {
+ synchronize(run);
+ };
+ }
+
+};
+
+var QUnit = {
+
+ // call on start of module test to prepend name to all tests
+ module: function(name, testEnvironment) {
+ config.currentModule = name;
+ config.currentModuleTestEnviroment = testEnvironment;
+ },
+
+ asyncTest: function(testName, expected, callback) {
+ if ( arguments.length === 2 ) {
+ callback = expected;
+ expected = 0;
+ }
+
+ QUnit.test(testName, expected, callback, true);
+ },
+
+ test: function(testName, expected, callback, async) {
+ var name = '<span class="test-name">' + testName + '</span>', testEnvironmentArg;
+
+ if ( arguments.length === 2 ) {
+ callback = expected;
+ expected = null;
+ }
+ // is 2nd argument a testEnvironment?
+ if ( expected && typeof expected === 'object') {
+ testEnvironmentArg = expected;
+ expected = null;
+ }
+
+ if ( config.currentModule ) {
+ name = '<span class="module-name">' + config.currentModule + "</span>: " + name;
+ }
+
+ if ( !validTest(config.currentModule + ": " + testName) ) {
+ return;
+ }
+
+ var test = new Test(name, testName, expected, testEnvironmentArg, async, callback);
+ test.module = config.currentModule;
+ test.moduleTestEnvironment = config.currentModuleTestEnviroment;
+ test.queue();
+ },
+
+ /**
+ * Specify the number of expected assertions to gurantee that failed test (no assertions are run at all) don't slip through.
+ */
+ expect: function(asserts) {
+ config.current.expected = asserts;
+ },
+
+ /**
+ * Asserts true.
+ * @example ok( "asdfasdf".length > 5, "There must be at least 5 chars" );
+ */
+ ok: function(a, msg) {
+ a = !!a;
+ var details = {
+ result: a,
+ message: msg
+ };
+ msg = escapeHtml(msg);
+ QUnit.log(details);
+ config.current.assertions.push({
+ result: a,
+ message: msg
+ });
+ },
+
+ /**
+ * Checks that the first two arguments are equal, with an optional message.
+ * Prints out both actual and expected values.
+ *
+ * Prefered to ok( actual == expected, message )
+ *
+ * @example equal( format("Received {0} bytes.", 2), "Received 2 bytes." );
+ *
+ * @param Object actual
+ * @param Object expected
+ * @param String message (optional)
+ */
+ equal: function(actual, expected, message) {
+ QUnit.push(expected == actual, actual, expected, message);
+ },
+
+ notEqual: function(actual, expected, message) {
+ QUnit.push(expected != actual, actual, expected, message);
+ },
+
+ deepEqual: function(actual, expected, message) {
+ QUnit.push(QUnit.equiv(actual, expected), actual, expected, message);
+ },
+
+ notDeepEqual: function(actual, expected, message) {
+ QUnit.push(!QUnit.equiv(actual, expected), actual, expected, message);
+ },
+
+ strictEqual: function(actual, expected, message) {
+ QUnit.push(expected === actual, actual, expected, message);
+ },
+
+ notStrictEqual: function(actual, expected, message) {
+ QUnit.push(expected !== actual, actual, expected, message);
+ },
+
+ raises: function(block, expected, message) {
+ var actual, ok = false;
+
+ if (typeof expected === 'string') {
+ message = expected;
+ expected = null;
+ }
+
+ try {
+ block();
+ } catch (e) {
+ actual = e;
+ }
+
+ if (actual) {
+ // we don't want to validate thrown error
+ if (!expected) {
+ ok = true;
+ // expected is a regexp
+ } else if (QUnit.objectType(expected) === "regexp") {
+ ok = expected.test(actual);
+ // expected is a constructor
+ } else if (actual instanceof expected) {
+ ok = true;
+ // expected is a validation function which returns true is validation passed
+ } else if (expected.call({}, actual) === true) {
+ ok = true;
+ }
+ }
+
+ QUnit.ok(ok, message);
+ },
+
+ start: function() {
+ config.semaphore--;
+ if (config.semaphore > 0) {
+ // don't start until equal number of stop-calls
+ return;
+ }
+ if (config.semaphore < 0) {
+ // ignore if start is called more often then stop
+ config.semaphore = 0;
+ }
+ // A slight delay, to avoid any current callbacks
+ if ( defined.setTimeout ) {
+ window.setTimeout(function() {
+ if ( config.timeout ) {
+ clearTimeout(config.timeout);
+ }
+
+ config.blocking = false;
+ process();
+ }, 13);
+ } else {
+ config.blocking = false;
+ process();
+ }
+ },
+
+ stop: function(timeout) {
+ config.semaphore++;
+ config.blocking = true;
+
+ if ( timeout && defined.setTimeout ) {
+ clearTimeout(config.timeout);
+ config.timeout = window.setTimeout(function() {
+ QUnit.ok( false, "Test timed out" );
+ QUnit.start();
+ }, timeout);
+ }
+ }
+};
+
+// Backwards compatibility, deprecated
+QUnit.equals = QUnit.equal;
+QUnit.same = QUnit.deepEqual;
+
+// Maintain internal state
+var config = {
+ // The queue of tests to run
+ queue: [],
+
+ // block until document ready
+ blocking: true,
+
+ // by default, run previously failed tests first
+ // very useful in combination with "Hide passed tests" checked
+ reorder: true,
+
+ noglobals: false,
+ notrycatch: false
+};
+
+// Load paramaters
+(function() {
+ var location = window.location || { search: "", protocol: "file:" },
+ params = location.search.slice( 1 ).split( "&" ),
+ length = params.length,
+ urlParams = {},
+ current;
+
+ if ( params[ 0 ] ) {
+ for ( var i = 0; i < length; i++ ) {
+ current = params[ i ].split( "=" );
+ current[ 0 ] = decodeURIComponent( current[ 0 ] );
+ // allow just a key to turn on a flag, e.g., test.html?noglobals
+ current[ 1 ] = current[ 1 ] ? decodeURIComponent( current[ 1 ] ) : true;
+ urlParams[ current[ 0 ] ] = current[ 1 ];
+ if ( current[ 0 ] in config ) {
+ config[ current[ 0 ] ] = current[ 1 ];
+ }
+ }
+ }
+
+ QUnit.urlParams = urlParams;
+ config.filter = urlParams.filter;
+
+ // Figure out if we're running the tests from a server or not
+ QUnit.isLocal = !!(location.protocol === 'file:');
+})();
+
+// Expose the API as global variables, unless an 'exports'
+// object exists, in that case we assume we're in CommonJS
+if ( typeof exports === "undefined" || typeof require === "undefined" ) {
+ extend(window, QUnit);
+ window.QUnit = QUnit;
+} else {
+ extend(exports, QUnit);
+ exports.QUnit = QUnit;
+}
+
+// define these after exposing globals to keep them in these QUnit namespace only
+extend(QUnit, {
+ config: config,
+
+ // Initialize the configuration options
+ init: function() {
+ extend(config, {
+ stats: { all: 0, bad: 0 },
+ moduleStats: { all: 0, bad: 0 },
+ started: +new Date,
+ updateRate: 1000,
+ blocking: false,
+ autostart: true,
+ autorun: false,
+ filter: "",
+ queue: [],
+ semaphore: 0
+ });
+
+ var tests = id( "qunit-tests" ),
+ banner = id( "qunit-banner" ),
+ result = id( "qunit-testresult" );
+
+ if ( tests ) {
+ tests.innerHTML = "";
+ }
+
+ if ( banner ) {
+ banner.className = "";
+ }
+
+ if ( result ) {
+ result.parentNode.removeChild( result );
+ }
+
+ if ( tests ) {
+ result = document.createElement( "p" );
+ result.id = "qunit-testresult";
+ result.className = "result";
+ tests.parentNode.insertBefore( result, tests );
+ result.innerHTML = 'Running...<br/>&nbsp;';
+ }
+ },
+
+ /**
+ * Resets the test setup. Useful for tests that modify the DOM.
+ *
+ * If jQuery is available, uses jQuery's html(), otherwise just innerHTML.
+ */
+ reset: function() {
+ if ( window.jQuery ) {
+ jQuery( "#qunit-fixture" ).html( config.fixture );
+ } else {
+ var main = id( 'qunit-fixture' );
+ if ( main ) {
+ main.innerHTML = config.fixture;
+ }
+ }
+ },
+
+ /**
+ * Trigger an event on an element.
+ *
+ * @example triggerEvent( document.body, "click" );
+ *
+ * @param DOMElement elem
+ * @param String type
+ */
+ triggerEvent: function( elem, type, event ) {
+ if ( document.createEvent ) {
+ event = document.createEvent("MouseEvents");
+ event.initMouseEvent(type, true, true, elem.ownerDocument.defaultView,
+ 0, 0, 0, 0, 0, false, false, false, false, 0, null);
+ elem.dispatchEvent( event );
+
+ } else if ( elem.fireEvent ) {
+ elem.fireEvent("on"+type);
+ }
+ },
+
+ // Safe object type checking
+ is: function( type, obj ) {
+ return QUnit.objectType( obj ) == type;
+ },
+
+ objectType: function( obj ) {
+ if (typeof obj === "undefined") {
+ return "undefined";
+
+ // consider: typeof null === object
+ }
+ if (obj === null) {
+ return "null";
+ }
+
+ var type = Object.prototype.toString.call( obj )
+ .match(/^\[object\s(.*)\]$/)[1] || '';
+
+ switch (type) {
+ case 'Number':
+ if (isNaN(obj)) {
+ return "nan";
+ } else {
+ return "number";
+ }
+ case 'String':
+ case 'Boolean':
+ case 'Array':
+ case 'Date':
+ case 'RegExp':
+ case 'Function':
+ return type.toLowerCase();
+ }
+ if (typeof obj === "object") {
+ return "object";
+ }
+ return undefined;
+ },
+
+ push: function(result, actual, expected, message) {
+ var details = {
+ result: result,
+ message: message,
+ actual: actual,
+ expected: expected
+ };
+
+ message = escapeHtml(message) || (result ? "okay" : "failed");
+ message = '<span class="test-message">' + message + "</span>";
+ expected = escapeHtml(QUnit.jsDump.parse(expected));
+ actual = escapeHtml(QUnit.jsDump.parse(actual));
+ var output = message + '<table><tr class="test-expected"><th>Expected: </th><td><pre>' + expected + '</pre></td></tr>';
+ if (actual != expected) {
+ output += '<tr class="test-actual"><th>Result: </th><td><pre>' + actual + '</pre></td></tr>';
+ output += '<tr class="test-diff"><th>Diff: </th><td><pre>' + QUnit.diff(expected, actual) +'</pre></td></tr>';
+ }
+ if (!result) {
+ var source = sourceFromStacktrace();
+ if (source) {
+ details.source = source;
+ output += '<tr class="test-source"><th>Source: </th><td><pre>' + source +'</pre></td></tr>';
+ }
+ }
+ output += "</table>";
+
+ QUnit.log(details);
+
+ config.current.assertions.push({
+ result: !!result,
+ message: output
+ });
+ },
+
+ url: function( params ) {
+ params = extend( extend( {}, QUnit.urlParams ), params );
+ var querystring = "?",
+ key;
+ for ( key in params ) {
+ querystring += encodeURIComponent( key ) + "=" +
+ encodeURIComponent( params[ key ] ) + "&";
+ }
+ return window.location.pathname + querystring.slice( 0, -1 );
+ },
+
+ // Logging callbacks; all receive a single argument with the listed properties
+ // run test/logs.html for any related changes
+ begin: function() {},
+ // done: { failed, passed, total, runtime }
+ done: function() {},
+ // log: { result, actual, expected, message }
+ log: function() {},
+ // testStart: { name }
+ testStart: function() {},
+ // testDone: { name, failed, passed, total }
+ testDone: function() {},
+ // moduleStart: { name }
+ moduleStart: function() {},
+ // moduleDone: { name, failed, passed, total }
+ moduleDone: function() {}
+});
+
+if ( typeof document === "undefined" || document.readyState === "complete" ) {
+ config.autorun = true;
+}
+
+addEvent(window, "load", function() {
+ QUnit.begin({});
+
+ // Initialize the config, saving the execution queue
+ var oldconfig = extend({}, config);
+ QUnit.init();
+ extend(config, oldconfig);
+
+ config.blocking = false;
+
+ var userAgent = id("qunit-userAgent");
+ if ( userAgent ) {
+ userAgent.innerHTML = navigator.userAgent;
+ }
+ var banner = id("qunit-header");
+ if ( banner ) {
+ banner.innerHTML = '<a href="' + QUnit.url({ filter: undefined }) + '"> ' + banner.innerHTML + '</a> ' +
+ '<label><input name="noglobals" type="checkbox"' + ( config.noglobals ? ' checked="checked"' : '' ) + '>noglobals</label>' +
+ '<label><input name="notrycatch" type="checkbox"' + ( config.notrycatch ? ' checked="checked"' : '' ) + '>notrycatch</label>';
+ addEvent( banner, "change", function( event ) {
+ var params = {};
+ params[ event.target.name ] = event.target.checked ? true : undefined;
+ window.location = QUnit.url( params );
+ });
+ }
+
+ var toolbar = id("qunit-testrunner-toolbar");
+ if ( toolbar ) {
+ var filter = document.createElement("input");
+ filter.type = "checkbox";
+ filter.id = "qunit-filter-pass";
+ addEvent( filter, "click", function() {
+ var ol = document.getElementById("qunit-tests");
+ if ( filter.checked ) {
+ ol.className = ol.className + " hidepass";
+ } else {
+ var tmp = " " + ol.className.replace( /[\n\t\r]/g, " " ) + " ";
+ ol.className = tmp.replace(/ hidepass /, " ");
+ }
+ if ( defined.sessionStorage ) {
+ if (filter.checked) {
+ sessionStorage.setItem("qunit-filter-passed-tests", "true");
+ } else {
+ sessionStorage.removeItem("qunit-filter-passed-tests");
+ }
+ }
+ });
+ if ( defined.sessionStorage && sessionStorage.getItem("qunit-filter-passed-tests") ) {
+ filter.checked = true;
+ var ol = document.getElementById("qunit-tests");
+ ol.className = ol.className + " hidepass";
+ }
+ toolbar.appendChild( filter );
+
+ var label = document.createElement("label");
+ label.setAttribute("for", "qunit-filter-pass");
+ label.innerHTML = "Hide passed tests";
+ toolbar.appendChild( label );
+ }
+
+ var main = id('qunit-fixture');
+ if ( main ) {
+ config.fixture = main.innerHTML;
+ }
+
+ if (config.autostart) {
+ QUnit.start();
+ }
+});
+
+function done() {
+ config.autorun = true;
+
+ // Log the last module results
+ if ( config.currentModule ) {
+ QUnit.moduleDone( {
+ name: config.currentModule,
+ failed: config.moduleStats.bad,
+ passed: config.moduleStats.all - config.moduleStats.bad,
+ total: config.moduleStats.all
+ } );
+ }
+
+ var banner = id("qunit-banner"),
+ tests = id("qunit-tests"),
+ runtime = +new Date - config.started,
+ passed = config.stats.all - config.stats.bad,
+ html = [
+ 'Tests completed in ',
+ runtime,
+ ' milliseconds.<br/>',
+ '<span class="passed">',
+ passed,
+ '</span> tests of <span class="total">',
+ config.stats.all,
+ '</span> passed, <span class="failed">',
+ config.stats.bad,
+ '</span> failed.'
+ ].join('');
+
+ if ( banner ) {
+ banner.className = (config.stats.bad ? "qunit-fail" : "qunit-pass");
+ }
+
+ if ( tests ) {
+ id( "qunit-testresult" ).innerHTML = html;
+ }
+
+ QUnit.done( {
+ failed: config.stats.bad,
+ passed: passed,
+ total: config.stats.all,
+ runtime: runtime
+ } );
+}
+
+function validTest( name ) {
+ var filter = config.filter,
+ run = false;
+
+ if ( !filter ) {
+ return true;
+ }
+
+ not = filter.charAt( 0 ) === "!";
+ if ( not ) {
+ filter = filter.slice( 1 );
+ }
+
+ if ( name.indexOf( filter ) !== -1 ) {
+ return !not;
+ }
+
+ if ( not ) {
+ run = true;
+ }
+
+ return run;
+}
+
+// so far supports only Firefox, Chrome and Opera (buggy)
+// could be extended in the future to use something like https://github.com/csnover/TraceKit
+function sourceFromStacktrace() {
+ try {
+ throw new Error();
+ } catch ( e ) {
+ if (e.stacktrace) {
+ // Opera
+ return e.stacktrace.split("\n")[6];
+ } else if (e.stack) {
+ // Firefox, Chrome
+ return e.stack.split("\n")[4];
+ }
+ }
+}
+
+function escapeHtml(s) {
+ if (!s) {
+ return "";
+ }
+ s = s + "";
+ return s.replace(/[\&"<>\\]/g, function(s) {
+ switch(s) {
+ case "&": return "&amp;";
+ case "\\": return "\\\\";
+ case '"': return '\"';
+ case "<": return "&lt;";
+ case ">": return "&gt;";
+ default: return s;
+ }
+ });
+}
+
+function synchronize( callback ) {
+ config.queue.push( callback );
+
+ if ( config.autorun && !config.blocking ) {
+ process();
+ }
+}
+
+function process() {
+ var start = (new Date()).getTime();
+
+ while ( config.queue.length && !config.blocking ) {
+ if ( config.updateRate <= 0 || (((new Date()).getTime() - start) < config.updateRate) ) {
+ config.queue.shift()();
+ } else {
+ window.setTimeout( process, 13 );
+ break;
+ }
+ }
+ if (!config.blocking && !config.queue.length) {
+ done();
+ }
+}
+
+function saveGlobal() {
+ config.pollution = [];
+
+ if ( config.noglobals ) {
+ for ( var key in window ) {
+ config.pollution.push( key );
+ }
+ }
+}
+
+function checkPollution( name ) {
+ var old = config.pollution;
+ saveGlobal();
+
+ var newGlobals = diff( config.pollution, old );
+ if ( newGlobals.length > 0 ) {
+ ok( false, "Introduced global variable(s): " + newGlobals.join(", ") );
+ }
+
+ var deletedGlobals = diff( old, config.pollution );
+ if ( deletedGlobals.length > 0 ) {
+ ok( false, "Deleted global variable(s): " + deletedGlobals.join(", ") );
+ }
+}
+
+// returns a new Array with the elements that are in a but not in b
+function diff( a, b ) {
+ var result = a.slice();
+ for ( var i = 0; i < result.length; i++ ) {
+ for ( var j = 0; j < b.length; j++ ) {
+ if ( result[i] === b[j] ) {
+ result.splice(i, 1);
+ i--;
+ break;
+ }
+ }
+ }
+ return result;
+}
+
+function fail(message, exception, callback) {
+ if ( typeof console !== "undefined" && console.error && console.warn ) {
+ console.error(message);
+ console.error(exception);
+ console.warn(callback.toString());
+
+ } else if ( window.opera && opera.postError ) {
+ opera.postError(message, exception, callback.toString);
+ }
+}
+
+function extend(a, b) {
+ for ( var prop in b ) {
+ if ( b[prop] === undefined ) {
+ delete a[prop];
+ } else {
+ a[prop] = b[prop];
+ }
+ }
+
+ return a;
+}
+
+function addEvent(elem, type, fn) {
+ if ( elem.addEventListener ) {
+ elem.addEventListener( type, fn, false );
+ } else if ( elem.attachEvent ) {
+ elem.attachEvent( "on" + type, fn );
+ } else {
+ fn();
+ }
+}
+
+function id(name) {
+ return !!(typeof document !== "undefined" && document && document.getElementById) &&
+ document.getElementById( name );
+}
+
+// Test for equality any JavaScript type.
+// Discussions and reference: http://philrathe.com/articles/equiv
+// Test suites: http://philrathe.com/tests/equiv
+// Author: Philippe Rathé <prathe@gmail.com>
+QUnit.equiv = function () {
+
+ var innerEquiv; // the real equiv function
+ var callers = []; // stack to decide between skip/abort functions
+ var parents = []; // stack to avoiding loops from circular referencing
+
+ // Call the o related callback with the given arguments.
+ function bindCallbacks(o, callbacks, args) {
+ var prop = QUnit.objectType(o);
+ if (prop) {
+ if (QUnit.objectType(callbacks[prop]) === "function") {
+ return callbacks[prop].apply(callbacks, args);
+ } else {
+ return callbacks[prop]; // or undefined
+ }
+ }
+ }
+
+ var callbacks = function () {
+
+ // for string, boolean, number and null
+ function useStrictEquality(b, a) {
+ if (b instanceof a.constructor || a instanceof b.constructor) {
+ // to catch short annotaion VS 'new' annotation of a declaration
+ // e.g. var i = 1;
+ // var j = new Number(1);
+ return a == b;
+ } else {
+ return a === b;
+ }
+ }
+
+ return {
+ "string": useStrictEquality,
+ "boolean": useStrictEquality,
+ "number": useStrictEquality,
+ "null": useStrictEquality,
+ "undefined": useStrictEquality,
+
+ "nan": function (b) {
+ return isNaN(b);
+ },
+
+ "date": function (b, a) {
+ return QUnit.objectType(b) === "date" && a.valueOf() === b.valueOf();
+ },
+
+ "regexp": function (b, a) {
+ return QUnit.objectType(b) === "regexp" &&
+ a.source === b.source && // the regex itself
+ a.global === b.global && // and its modifers (gmi) ...
+ a.ignoreCase === b.ignoreCase &&
+ a.multiline === b.multiline;
+ },
+
+ // - skip when the property is a method of an instance (OOP)
+ // - abort otherwise,
+ // initial === would have catch identical references anyway
+ "function": function () {
+ var caller = callers[callers.length - 1];
+ return caller !== Object &&
+ typeof caller !== "undefined";
+ },
+
+ "array": function (b, a) {
+ var i, j, loop;
+ var len;
+
+ // b could be an object literal here
+ if ( ! (QUnit.objectType(b) === "array")) {
+ return false;
+ }
+
+ len = a.length;
+ if (len !== b.length) { // safe and faster
+ return false;
+ }
+
+ //track reference to avoid circular references
+ parents.push(a);
+ for (i = 0; i < len; i++) {
+ loop = false;
+ for(j=0;j<parents.length;j++){
+ if(parents[j] === a[i]){
+ loop = true;//dont rewalk array
+ }
+ }
+ if (!loop && ! innerEquiv(a[i], b[i])) {
+ parents.pop();
+ return false;
+ }
+ }
+ parents.pop();
+ return true;
+ },
+
+ "object": function (b, a) {
+ var i, j, loop;
+ var eq = true; // unless we can proove it
+ var aProperties = [], bProperties = []; // collection of strings
+
+ // comparing constructors is more strict than using instanceof
+ if ( a.constructor !== b.constructor) {
+ return false;
+ }
+
+ // stack constructor before traversing properties
+ callers.push(a.constructor);
+ //track reference to avoid circular references
+ parents.push(a);
+
+ for (i in a) { // be strict: don't ensures hasOwnProperty and go deep
+ loop = false;
+ for(j=0;j<parents.length;j++){
+ if(parents[j] === a[i])
+ loop = true; //don't go down the same path twice
+ }
+ aProperties.push(i); // collect a's properties
+
+ if (!loop && ! innerEquiv(a[i], b[i])) {
+ eq = false;
+ break;
+ }
+ }
+
+ callers.pop(); // unstack, we are done
+ parents.pop();
+
+ for (i in b) {
+ bProperties.push(i); // collect b's properties
+ }
+
+ // Ensures identical properties name
+ return eq && innerEquiv(aProperties.sort(), bProperties.sort());
+ }
+ };
+ }();
+
+ innerEquiv = function () { // can take multiple arguments
+ var args = Array.prototype.slice.apply(arguments);
+ if (args.length < 2) {
+ return true; // end transition
+ }
+
+ return (function (a, b) {
+ if (a === b) {
+ return true; // catch the most you can
+ } else if (a === null || b === null || typeof a === "undefined" || typeof b === "undefined" || QUnit.objectType(a) !== QUnit.objectType(b)) {
+ return false; // don't lose time with error prone cases
+ } else {
+ return bindCallbacks(a, callbacks, [b, a]);
+ }
+
+ // apply transition with (1..n) arguments
+ })(args[0], args[1]) && arguments.callee.apply(this, args.splice(1, args.length -1));
+ };
+
+ return innerEquiv;
+
+}();
+
+/**
+ * jsDump
+ * Copyright (c) 2008 Ariel Flesler - aflesler(at)gmail(dot)com | http://flesler.blogspot.com
+ * Licensed under BSD (http://www.opensource.org/licenses/bsd-license.php)
+ * Date: 5/15/2008
+ * @projectDescription Advanced and extensible data dumping for Javascript.
+ * @version 1.0.0
+ * @author Ariel Flesler
+ * @link {http://flesler.blogspot.com/2008/05/jsdump-pretty-dump-of-any-javascript.html}
+ */
+QUnit.jsDump = (function() {
+ function quote( str ) {
+ return '"' + str.toString().replace(/"/g, '\\"') + '"';
+ };
+ function literal( o ) {
+ return o + '';
+ };
+ function join( pre, arr, post ) {
+ var s = jsDump.separator(),
+ base = jsDump.indent(),
+ inner = jsDump.indent(1);
+ if ( arr.join )
+ arr = arr.join( ',' + s + inner );
+ if ( !arr )
+ return pre + post;
+ return [ pre, inner + arr, base + post ].join(s);
+ };
+ function array( arr ) {
+ var i = arr.length, ret = Array(i);
+ this.up();
+ while ( i-- )
+ ret[i] = this.parse( arr[i] );
+ this.down();
+ return join( '[', ret, ']' );
+ };
+
+ var reName = /^function (\w+)/;
+
+ var jsDump = {
+ parse:function( obj, type ) { //type is used mostly internally, you can fix a (custom)type in advance
+ var parser = this.parsers[ type || this.typeOf(obj) ];
+ type = typeof parser;
+
+ return type == 'function' ? parser.call( this, obj ) :
+ type == 'string' ? parser :
+ this.parsers.error;
+ },
+ typeOf:function( obj ) {
+ var type;
+ if ( obj === null ) {
+ type = "null";
+ } else if (typeof obj === "undefined") {
+ type = "undefined";
+ } else if (QUnit.is("RegExp", obj)) {
+ type = "regexp";
+ } else if (QUnit.is("Date", obj)) {
+ type = "date";
+ } else if (QUnit.is("Function", obj)) {
+ type = "function";
+ } else if (typeof obj.setInterval !== undefined && typeof obj.document !== "undefined" && typeof obj.nodeType === "undefined") {
+ type = "window";
+ } else if (obj.nodeType === 9) {
+ type = "document";
+ } else if (obj.nodeType) {
+ type = "node";
+ } else if (typeof obj === "object" && typeof obj.length === "number" && obj.length >= 0) {
+ type = "array";
+ } else {
+ type = typeof obj;
+ }
+ return type;
+ },
+ separator:function() {
+ return this.multiline ? this.HTML ? '<br />' : '\n' : this.HTML ? '&nbsp;' : ' ';
+ },
+ indent:function( extra ) {// extra can be a number, shortcut for increasing-calling-decreasing
+ if ( !this.multiline )
+ return '';
+ var chr = this.indentChar;
+ if ( this.HTML )
+ chr = chr.replace(/\t/g,' ').replace(/ /g,'&nbsp;');
+ return Array( this._depth_ + (extra||0) ).join(chr);
+ },
+ up:function( a ) {
+ this._depth_ += a || 1;
+ },
+ down:function( a ) {
+ this._depth_ -= a || 1;
+ },
+ setParser:function( name, parser ) {
+ this.parsers[name] = parser;
+ },
+ // The next 3 are exposed so you can use them
+ quote:quote,
+ literal:literal,
+ join:join,
+ //
+ _depth_: 1,
+ // This is the list of parsers, to modify them, use jsDump.setParser
+ parsers:{
+ window: '[Window]',
+ document: '[Document]',
+ error:'[ERROR]', //when no parser is found, shouldn't happen
+ unknown: '[Unknown]',
+ 'null':'null',
+ 'undefined':'undefined',
+ 'function':function( fn ) {
+ var ret = 'function',
+ name = 'name' in fn ? fn.name : (reName.exec(fn)||[])[1];//functions never have name in IE
+ if ( name )
+ ret += ' ' + name;
+ ret += '(';
+
+ ret = [ ret, QUnit.jsDump.parse( fn, 'functionArgs' ), '){'].join('');
+ return join( ret, QUnit.jsDump.parse(fn,'functionCode'), '}' );
+ },
+ array: array,
+ nodelist: array,
+ arguments: array,
+ object:function( map ) {
+ var ret = [ ];
+ QUnit.jsDump.up();
+ for ( var key in map )
+ ret.push( QUnit.jsDump.parse(key,'key') + ': ' + QUnit.jsDump.parse(map[key]) );
+ QUnit.jsDump.down();
+ return join( '{', ret, '}' );
+ },
+ node:function( node ) {
+ var open = QUnit.jsDump.HTML ? '&lt;' : '<',
+ close = QUnit.jsDump.HTML ? '&gt;' : '>';
+
+ var tag = node.nodeName.toLowerCase(),
+ ret = open + tag;
+
+ for ( var a in QUnit.jsDump.DOMAttrs ) {
+ var val = node[QUnit.jsDump.DOMAttrs[a]];
+ if ( val )
+ ret += ' ' + a + '=' + QUnit.jsDump.parse( val, 'attribute' );
+ }
+ return ret + close + open + '/' + tag + close;
+ },
+ functionArgs:function( fn ) {//function calls it internally, it's the arguments part of the function
+ var l = fn.length;
+ if ( !l ) return '';
+
+ var args = Array(l);
+ while ( l-- )
+ args[l] = String.fromCharCode(97+l);//97 is 'a'
+ return ' ' + args.join(', ') + ' ';
+ },
+ key:quote, //object calls it internally, the key part of an item in a map
+ functionCode:'[code]', //function calls it internally, it's the content of the function
+ attribute:quote, //node calls it internally, it's an html attribute value
+ string:quote,
+ date:quote,
+ regexp:literal, //regex
+ number:literal,
+ 'boolean':literal
+ },
+ DOMAttrs:{//attributes to dump from nodes, name=>realName
+ id:'id',
+ name:'name',
+ 'class':'className'
+ },
+ HTML:false,//if true, entities are escaped ( <, >, \t, space and \n )
+ indentChar:' ',//indentation unit
+ multiline:true //if true, items in a collection, are separated by a \n, else just a space.
+ };
+
+ return jsDump;
+})();
+
+// from Sizzle.js
+function getText( elems ) {
+ var ret = "", elem;
+
+ for ( var i = 0; elems[i]; i++ ) {
+ elem = elems[i];
+
+ // Get the text from text nodes and CDATA nodes
+ if ( elem.nodeType === 3 || elem.nodeType === 4 ) {
+ ret += elem.nodeValue;
+
+ // Traverse everything else, except comment nodes
+ } else if ( elem.nodeType !== 8 ) {
+ ret += getText( elem.childNodes );
+ }
+ }
+
+ return ret;
+};
+
+/*
+ * Javascript Diff Algorithm
+ * By John Resig (http://ejohn.org/)
+ * Modified by Chu Alan "sprite"
+ *
+ * Released under the MIT license.
+ *
+ * More Info:
+ * http://ejohn.org/projects/javascript-diff-algorithm/
+ *
+ * Usage: QUnit.diff(expected, actual)
+ *
+ * QUnit.diff("the quick brown fox jumped over", "the quick fox jumps over") == "the quick <del>brown </del> fox <del>jumped </del><ins>jumps </ins> over"
+ */
+QUnit.diff = (function() {
+ function diff(o, n){
+ var ns = new Object();
+ var os = new Object();
+
+ for (var i = 0; i < n.length; i++) {
+ if (ns[n[i]] == null)
+ ns[n[i]] = {
+ rows: new Array(),
+ o: null
+ };
+ ns[n[i]].rows.push(i);
+ }
+
+ for (var i = 0; i < o.length; i++) {
+ if (os[o[i]] == null)
+ os[o[i]] = {
+ rows: new Array(),
+ n: null
+ };
+ os[o[i]].rows.push(i);
+ }
+
+ for (var i in ns) {
+ if (ns[i].rows.length == 1 && typeof(os[i]) != "undefined" && os[i].rows.length == 1) {
+ n[ns[i].rows[0]] = {
+ text: n[ns[i].rows[0]],
+ row: os[i].rows[0]
+ };
+ o[os[i].rows[0]] = {
+ text: o[os[i].rows[0]],
+ row: ns[i].rows[0]
+ };
+ }
+ }
+
+ for (var i = 0; i < n.length - 1; i++) {
+ if (n[i].text != null && n[i + 1].text == null && n[i].row + 1 < o.length && o[n[i].row + 1].text == null &&
+ n[i + 1] == o[n[i].row + 1]) {
+ n[i + 1] = {
+ text: n[i + 1],
+ row: n[i].row + 1
+ };
+ o[n[i].row + 1] = {
+ text: o[n[i].row + 1],
+ row: i + 1
+ };
+ }
+ }
+
+ for (var i = n.length - 1; i > 0; i--) {
+ if (n[i].text != null && n[i - 1].text == null && n[i].row > 0 && o[n[i].row - 1].text == null &&
+ n[i - 1] == o[n[i].row - 1]) {
+ n[i - 1] = {
+ text: n[i - 1],
+ row: n[i].row - 1
+ };
+ o[n[i].row - 1] = {
+ text: o[n[i].row - 1],
+ row: i - 1
+ };
+ }
+ }
+
+ return {
+ o: o,
+ n: n
+ };
+ }
+
+ return function(o, n){
+ o = o.replace(/\s+$/, '');
+ n = n.replace(/\s+$/, '');
+ var out = diff(o == "" ? [] : o.split(/\s+/), n == "" ? [] : n.split(/\s+/));
+
+ var str = "";
+
+ var oSpace = o.match(/\s+/g);
+ if (oSpace == null) {
+ oSpace = [" "];
+ }
+ else {
+ oSpace.push(" ");
+ }
+ var nSpace = n.match(/\s+/g);
+ if (nSpace == null) {
+ nSpace = [" "];
+ }
+ else {
+ nSpace.push(" ");
+ }
+
+ if (out.n.length == 0) {
+ for (var i = 0; i < out.o.length; i++) {
+ str += '<del>' + out.o[i] + oSpace[i] + "</del>";
+ }
+ }
+ else {
+ if (out.n[0].text == null) {
+ for (n = 0; n < out.o.length && out.o[n].text == null; n++) {
+ str += '<del>' + out.o[n] + oSpace[n] + "</del>";
+ }
+ }
+
+ for (var i = 0; i < out.n.length; i++) {
+ if (out.n[i].text == null) {
+ str += '<ins>' + out.n[i] + nSpace[i] + "</ins>";
+ }
+ else {
+ var pre = "";
+
+ for (n = out.n[i].row + 1; n < out.o.length && out.o[n].text == null; n++) {
+ pre += '<del>' + out.o[n] + oSpace[n] + "</del>";
+ }
+ str += " " + out.n[i].text + nSpace[i] + pre;
+ }
+ }
+ }
+
+ return str;
+ };
+})();
+
+})(this); \ No newline at end of file
diff --git a/resources/jquery/jquery.suggestions.css b/resources/jquery/jquery.suggestions.css
index f0b48da1..74094c53 100644
--- a/resources/jquery/jquery.suggestions.css
+++ b/resources/jquery/jquery.suggestions.css
@@ -7,7 +7,7 @@
left: 0px;
width: 0px;
border: none;
- z-index: 99;
+ z-index: 1099;
padding: 0;
margin: -1px -1px 0 0;
}
diff --git a/resources/jquery/jquery.suggestions.js b/resources/jquery/jquery.suggestions.js
index 9fc8a47d..90cf53b2 100644
--- a/resources/jquery/jquery.suggestions.js
+++ b/resources/jquery/jquery.suggestions.js
@@ -66,20 +66,25 @@ $.suggestions = {
},
/**
* Ask the user-specified callback for new suggestions. Any previous delayed call to this function still pending
- * will be canceled. If the value in the textbox hasn't changed since the last time suggestions were fetched, this
+ * will be canceled. If the value in the textbox is empty or hasn't changed since the last time suggestions were fetched, this
* function does nothing.
* @param {Boolean} delayed Whether or not to delay this by the currently configured amount of time
*/
update: function( context, delayed ) {
- // Only fetch if the value in the textbox changed
+ // Only fetch if the value in the textbox changed and is not empty
+ // if the textbox is empty then clear the result div, but leave other settings intouched
function maybeFetch() {
- if ( context.data.$textbox.val() !== context.data.prevText ) {
- context.data.prevText = context.data.$textbox.val();
+ if ( context.data.$textbox.val().length == 0 ) {
+ context.data.$container.hide();
+ context.data.prevText = '';
+ } else if ( context.data.$textbox.val() !== context.data.prevText ) {
if ( typeof context.config.fetch == 'function' ) {
+ context.data.prevText = context.data.$textbox.val();
context.config.fetch.call( context.data.$textbox, context.data.$textbox.val() );
}
}
}
+
// Cancel previous call
if ( context.data.timerID != null ) {
clearTimeout( context.data.timerID );
@@ -224,7 +229,7 @@ $.suggestions = {
} else {
result = selected.prev();
if ( selected.length == 0 ) {
- // we are at the begginning, so lets jump to the last item
+ // we are at the beginning, so lets jump to the last item
if ( context.data.$container.find( '.suggestions-special' ).html() != "" ) {
result = context.data.$container.find( '.suggestions-special' );
} else {
@@ -517,5 +522,4 @@ $.fn.suggestions = function() {
} );
return returnValue !== null ? returnValue : $(this);
};
-
-} )( jQuery );
+} )( jQuery ); \ No newline at end of file
diff --git a/resources/jquery/jquery.tabIndex.js b/resources/jquery/jquery.tabIndex.js
index bb9b2bfa..33e06047 100644
--- a/resources/jquery/jquery.tabIndex.js
+++ b/resources/jquery/jquery.tabIndex.js
@@ -5,31 +5,46 @@
/**
* Finds the lowerst tabindex in use within a selection
*
- * @return Integer of lowest tabindex on the page
+ * @return number Lowest tabindex on the page
*/
-jQuery.fn.firstTabIndex = function() {
- var minTabIndex = 0;
- jQuery(this).find( '[tabindex]' ).each( function() {
- var tabIndex = parseInt( jQuery(this).attr( 'tabindex' ) );
- if ( tabIndex > minTabIndex ) {
- minTabIndex = tabIndex;
+$.fn.firstTabIndex = function() {
+ var minTabIndex = null;
+ $(this).find( '[tabindex]' ).each( function() {
+ var tabIndex = parseInt( $(this).attr( 'tabindex' ), 10 );
+ // In IE6/IE7 the above jQuery selector returns all elements,
+ // becuase it has a default value for tabIndex in IE6/IE7 of 0
+ // (rather than null/undefined). Therefore check "> 0" as well.
+ // Under IE7 under Windows NT 5.2 is also capable of returning NaN.
+ if ( tabIndex > 0 && !isNaN( tabIndex ) ) {
+ // Initial value
+ if ( minTabIndex === null ) {
+ minTabIndex = tabIndex;
+ } else if ( tabIndex < minTabIndex ) {
+ minTabIndex = tabIndex;
+ }
}
} );
return minTabIndex;
};
+
/**
* Finds the highest tabindex in use within a selection
*
- * @return Integer of highest tabindex on the page
+ * @return number Highest tabindex on the page
*/
-jQuery.fn.lastTabIndex = function() {
- var maxTabIndex = 0;
- jQuery(this).find( '[tabindex]' ).each( function() {
- var tabIndex = parseInt( jQuery(this).attr( 'tabindex' ) );
- if ( tabIndex > maxTabIndex ) {
- maxTabIndex = tabIndex;
+$.fn.lastTabIndex = function() {
+ var maxTabIndex = null;
+ $(this).find( '[tabindex]' ).each( function() {
+ var tabIndex = parseInt( $(this).attr( 'tabindex' ), 10 );
+ if ( tabIndex > 0 && !isNaN( tabIndex ) ) {
+ // Initial value
+ if ( maxTabIndex === null ) {
+ maxTabIndex = tabIndex;
+ } else if ( tabIndex > maxTabIndex ) {
+ maxTabIndex = tabIndex;
+ }
}
} );
return maxTabIndex;
};
-} )( jQuery ); \ No newline at end of file
+} )( jQuery );
diff --git a/resources/jquery/jquery.tablesorter.css b/resources/jquery/jquery.tablesorter.css
new file mode 100644
index 00000000..87719810
--- /dev/null
+++ b/resources/jquery/jquery.tablesorter.css
@@ -0,0 +1,17 @@
+/* Table Sorting */
+table.jquery-tablesorter th.headerSort {
+ /* @embed */
+ background-image: url(images/sort_both.gif) !important;
+ cursor: pointer;
+ background-repeat: no-repeat !important;
+ background-position: center right !important;
+ padding-right: 21px !important;
+}
+table.jquery-tablesorter th.headerSortUp {
+ /* @embed */
+ background-image: url(images/sort_up.gif) !important;
+}
+table.jquery-tablesorter th.headerSortDown {
+ /* @embed */
+ background-image: url(images/sort_down.gif) !important;
+}
diff --git a/resources/jquery/jquery.tablesorter.js b/resources/jquery/jquery.tablesorter.js
new file mode 100644
index 00000000..5af27cc4
--- /dev/null
+++ b/resources/jquery/jquery.tablesorter.js
@@ -0,0 +1,910 @@
+/**
+ * TableSorter for MediaWiki
+ *
+ * Written 2011 Leo Koppelkamm
+ * Based on tablesorter.com plugin, written (c) 2007 Christian Bach.
+ *
+ * Dual licensed under the MIT and GPL licenses:
+ * http://www.opensource.org/licenses/mit-license.php
+ * http://www.gnu.org/licenses/gpl.html
+ *
+ * @depends on mw.config (wgDigitTransformTable, wgMonthNames, wgMonthNamesShort,
+ * wgDefaultDateFormat, wgContentLanguage)
+ */
+/**
+ *
+ * @description Create a sortable table with multi-column sorting capabilitys
+ *
+ * @example $( 'table' ).tablesorter();
+ * @desc Create a simple tablesorter interface.
+ *
+ * @option String cssHeader ( optional ) A string of the class name to be appended
+ * to sortable tr elements in the thead of the table. Default value:
+ * "header"
+ *
+ * @option String cssAsc ( optional ) A string of the class name to be appended to
+ * sortable tr elements in the thead on a ascending sort. Default value:
+ * "headerSortUp"
+ *
+ * @option String cssDesc ( optional ) A string of the class name to be appended
+ * to sortable tr elements in the thead on a descending sort. Default
+ * value: "headerSortDown"
+ *
+ * @option String sortInitialOrder ( optional ) A string of the inital sorting
+ * order can be asc or desc. Default value: "asc"
+ *
+ * @option String sortMultisortKey ( optional ) A string of the multi-column sort
+ * key. Default value: "shiftKey"
+ *
+ * @option Boolean sortLocaleCompare ( optional ) Boolean flag indicating whatever
+ * to use String.localeCampare method or not. Set to false.
+ *
+ * @option Boolean cancelSelection ( optional ) Boolean flag indicating if
+ * tablesorter should cancel selection of the table headers text.
+ * Default value: true
+ *
+ * @option Boolean debug ( optional ) Boolean flag indicating if tablesorter
+ * should display debuging information usefull for development.
+ *
+ * @type jQuery
+ *
+ * @name tablesorter
+ *
+ * @cat Plugins/Tablesorter
+ *
+ * @author Christian Bach/christian.bach@polyester.se
+ */
+
+( function( $ ) {
+
+ /* Local scope */
+
+ var ts,
+ parsers = [];
+
+ /* Parser utility functions */
+
+ function getParserById( name ) {
+ var len = parsers.length;
+ for ( var i = 0; i < len; i++ ) {
+ if ( parsers[i].id.toLowerCase() === name.toLowerCase() ) {
+ return parsers[i];
+ }
+ }
+ return false;
+ }
+
+ function getElementText( node ) {
+ var $node = $( node ),
+ data = $node.attr( 'data-sort-value' );
+ if ( data !== undefined ) {
+ return data;
+ } else {
+ return $node.text();
+ }
+ }
+
+ function getTextFromRowAndCellIndex( rows, rowIndex, cellIndex ) {
+ if ( rows[rowIndex] && rows[rowIndex].cells[cellIndex] ) {
+ return $.trim( getElementText( rows[rowIndex].cells[cellIndex] ) );
+ } else {
+ return '';
+ }
+ }
+
+ function detectParserForColumn( table, rows, cellIndex ) {
+ var l = parsers.length,
+ nodeValue,
+ // Start with 1 because 0 is the fallback parser
+ i = 1,
+ rowIndex = 0,
+ concurrent = 0,
+ needed = ( rows.length > 4 ) ? 5 : rows.length;
+
+ while( i < l ) {
+ nodeValue = getTextFromRowAndCellIndex( rows, rowIndex, cellIndex );
+ if ( nodeValue !== '') {
+ if ( parsers[i].is( nodeValue, table ) ) {
+ concurrent++;
+ rowIndex++;
+ if ( concurrent >= needed ) {
+ // Confirmed the parser for multiple cells, let's return it
+ return parsers[i];
+ }
+ } else {
+ // Check next parser, reset rows
+ i++;
+ rowIndex = 0;
+ concurrent = 0;
+ }
+ } else {
+ // Empty cell
+ rowIndex++;
+ if ( rowIndex > rows.length ) {
+ rowIndex = 0;
+ i++;
+ }
+ }
+ }
+
+ // 0 is always the generic parser (text)
+ return parsers[0];
+ }
+
+ function buildParserCache( table, $headers ) {
+ var rows = table.tBodies[0].rows,
+ sortType,
+ parsers = [];
+
+ if ( rows[0] ) {
+
+ var cells = rows[0].cells,
+ len = cells.length,
+ i, parser;
+
+ for ( i = 0; i < len; i++ ) {
+ parser = false;
+ sortType = $headers.eq( i ).data( 'sort-type' );
+ if ( sortType !== undefined ) {
+ parser = getParserById( sortType );
+ }
+
+ if ( parser === false ) {
+ parser = detectParserForColumn( table, rows, i );
+ }
+
+ parsers.push( parser );
+ }
+ }
+ return parsers;
+ }
+
+ /* Other utility functions */
+
+ function buildCache( table ) {
+ var totalRows = ( table.tBodies[0] && table.tBodies[0].rows.length ) || 0,
+ totalCells = ( table.tBodies[0].rows[0] && table.tBodies[0].rows[0].cells.length ) || 0,
+ parsers = table.config.parsers,
+ cache = {
+ row: [],
+ normalized: []
+ };
+
+ for ( var i = 0; i < totalRows; ++i ) {
+
+ // Add the table data to main data array
+ var $row = $( table.tBodies[0].rows[i] ),
+ cols = [];
+
+ // if this is a child row, add it to the last row's children and
+ // continue to the next row
+ if ( $row.hasClass( table.config.cssChildRow ) ) {
+ cache.row[cache.row.length - 1] = cache.row[cache.row.length - 1].add( $row );
+ // go to the next for loop
+ continue;
+ }
+
+ cache.row.push( $row );
+
+ for ( var j = 0; j < totalCells; ++j ) {
+ cols.push( parsers[j].format( getElementText( $row[0].cells[j] ), table, $row[0].cells[j] ) );
+ }
+
+ cols.push( cache.normalized.length ); // add position for rowCache
+ cache.normalized.push( cols );
+ cols = null;
+ }
+
+ return cache;
+ }
+
+ function appendToTable( table, cache ) {
+ var row = cache.row,
+ normalized = cache.normalized,
+ totalRows = normalized.length,
+ checkCell = ( normalized[0].length - 1 ),
+ fragment = document.createDocumentFragment();
+
+ for ( var i = 0; i < totalRows; i++ ) {
+ var pos = normalized[i][checkCell];
+
+ var l = row[pos].length;
+
+ for ( var j = 0; j < l; j++ ) {
+ fragment.appendChild( row[pos][j] );
+ }
+
+ }
+ table.tBodies[0].appendChild( fragment );
+ }
+
+ /**
+ * Find all header rows in a thead-less table and put them in a <thead> tag.
+ * This only treats a row as a header row if it contains only <th>s (no <td>s)
+ * and if it is preceded entirely by header rows. The algorithm stops when
+ * it encounters the first non-header row.
+ *
+ * After this, it will look at all rows at the bottom for footer rows
+ * And place these in a tfoot using similar rules.
+ * @param $table jQuery object for a <table>
+ */
+ function emulateTHeadAndFoot( $table ) {
+ var $rows = $table.find( '> tbody > tr' );
+ if( !$table.get(0).tHead ) {
+ var $thead = $( '<thead>' );
+ $rows.each( function() {
+ if ( $(this).children( 'td' ).length > 0 ) {
+ // This row contains a <td>, so it's not a header row
+ // Stop here
+ return false;
+ }
+ $thead.append( this );
+ } );
+ $table.children('tbody').before( $thead );
+ }
+ if( !$table.get(0).tFoot ) {
+ var $tfoot = $( '<tfoot>' );
+ var len = $rows.length;
+ for ( var i = len-1; i >= 0; i-- ) {
+ if( $( $rows[i] ).children( 'td' ).length > 0 ){
+ break;
+ }
+ $tfoot.prepend( $( $rows[i] ));
+ }
+ $table.append( $tfoot );
+ }
+ }
+
+ function buildHeaders( table, msg ) {
+ var maxSeen = 0,
+ longest,
+ realCellIndex = 0,
+ $tableHeaders = $( 'thead:eq(0) tr', table );
+ if ( $tableHeaders.length > 1 ) {
+ $tableHeaders.each(function() {
+ if ( this.cells.length > maxSeen ) {
+ maxSeen = this.cells.length;
+ longest = this;
+ }
+ });
+ $tableHeaders = $( longest );
+ }
+ $tableHeaders = $tableHeaders.children( 'th' ).each( function( index ) {
+ this.column = realCellIndex;
+
+ var colspan = this.colspan;
+ colspan = colspan ? parseInt( colspan, 10 ) : 1;
+ realCellIndex += colspan;
+
+ this.order = 0;
+ this.count = 0;
+
+ if ( $( this ).is( '.unsortable' ) ) {
+ this.sortDisabled = true;
+ }
+
+ if ( !this.sortDisabled ) {
+ var $th = $( this ).addClass( table.config.cssHeader ).attr( 'title', msg[1] );
+ }
+
+ // add cell to headerList
+ table.config.headerList[index] = this;
+ } );
+
+ return $tableHeaders;
+
+ }
+
+ function isValueInArray( v, a ) {
+ var l = a.length;
+ for ( var i = 0; i < l; i++ ) {
+ if ( a[i][0] == v ) {
+ return true;
+ }
+ }
+ return false;
+ }
+
+ function setHeadersCss( table, $headers, list, css, msg ) {
+ // Remove all header information
+ $headers.removeClass( css[0] ).removeClass( css[1] );
+
+ var h = [];
+ $headers.each( function( offset ) {
+ if ( !this.sortDisabled ) {
+ h[this.column] = $( this );
+ }
+ } );
+
+ var l = list.length;
+ for ( var i = 0; i < l; i++ ) {
+ h[ list[i][0] ].addClass( css[ list[i][1] ] ).attr( 'title', msg[ list[i][1] ] );
+ }
+ }
+
+ function sortText( a, b ) {
+ return ( (a < b) ? false : ((a > b) ? true : 0) );
+ }
+
+ function sortTextDesc( a, b ) {
+ return ( (b < a) ? false : ((b > a) ? true : 0) );
+ }
+
+ function checkSorting( array1, array2, sortList ) {
+ var col, fn, ret;
+ for ( var i = 0, len = sortList.length; i < len; i++ ) {
+ col = sortList[i][0];
+ fn = ( sortList[i][1] ) ? sortTextDesc : sortText;
+ ret = fn.call( this, array1[col], array2[col] );
+ if ( ret !== 0 ) {
+ return ret;
+ }
+ }
+ return ret;
+ }
+
+ // Merge sort algorithm
+ // Based on http://en.literateprograms.org/Merge_sort_(JavaScript)
+ function mergeSortHelper( array, begin, beginRight, end, sortList ) {
+ for ( ; begin < beginRight; ++begin ) {
+ if ( checkSorting( array[begin], array[beginRight], sortList ) ) {
+ var v = array[begin];
+ array[begin] = array[beginRight];
+ var begin2 = beginRight;
+ while ( begin2 + 1 < end && checkSorting( v, array[begin2 + 1], sortList ) ) {
+ var tmp = array[begin2];
+ array[begin2] = array[begin2 + 1];
+ array[begin2 + 1] = tmp;
+ ++begin2;
+ }
+ array[begin2] = v;
+ }
+ }
+ }
+
+ function mergeSort(array, begin, end, sortList) {
+ var size = end - begin;
+ if ( size < 2 ) {
+ return;
+ }
+
+ var beginRight = begin + Math.floor(size / 2);
+
+ mergeSort( array, begin, beginRight, sortList );
+ mergeSort( array, beginRight, end, sortList );
+ mergeSortHelper( array, begin, beginRight, end, sortList );
+ }
+
+ function multisort( table, sortList, cache ) {
+ var i = sortList.length;
+ mergeSort( cache.normalized, 0, cache.normalized.length, sortList );
+
+ return cache;
+ }
+
+ function buildTransformTable() {
+ var digits = '0123456789,.'.split( '' );
+ var separatorTransformTable = mw.config.get( 'wgSeparatorTransformTable' );
+ var digitTransformTable = mw.config.get( 'wgDigitTransformTable' );
+ if ( separatorTransformTable === null || ( separatorTransformTable[0] === '' && digitTransformTable[2] === '' ) ) {
+ ts.transformTable = false;
+ } else {
+ ts.transformTable = {};
+
+ // Unpack the transform table
+ var ascii = separatorTransformTable[0].split( "\t" ).concat( digitTransformTable[0].split( "\t" ) );
+ var localised = separatorTransformTable[1].split( "\t" ).concat( digitTransformTable[1].split( "\t" ) );
+
+ // Construct regex for number identification
+ for ( var i = 0; i < ascii.length; i++ ) {
+ ts.transformTable[localised[i]] = ascii[i];
+ digits.push( $.escapeRE( localised[i] ) );
+ }
+ }
+ var digitClass = '[' + digits.join( '', digits ) + ']';
+
+ // We allow a trailing percent sign, which we just strip. This works fine
+ // if percents and regular numbers aren't being mixed.
+ ts.numberRegex = new RegExp("^(" + "[-+\u2212]?[0-9][0-9,]*(\\.[0-9,]*)?(E[-+\u2212]?[0-9][0-9,]*)?" + // Fortran-style scientific
+ "|" + "[-+\u2212]?" + digitClass + "+[\\s\\xa0]*%?" + // Generic localised
+ ")$", "i");
+ }
+
+ function buildDateTable() {
+ var regex = [];
+ ts.monthNames = [
+ [],
+ []
+ ];
+
+ for ( var i = 1; i < 13; i++ ) {
+ ts.monthNames[0][i] = mw.config.get( 'wgMonthNames' )[i].toLowerCase();
+ ts.monthNames[1][i] = mw.config.get( 'wgMonthNamesShort' )[i].toLowerCase().replace( '.', '' );
+ regex.push( $.escapeRE( ts.monthNames[0][i] ) );
+ regex.push( $.escapeRE( ts.monthNames[1][i] ) );
+ }
+
+ // Build piped string
+ regex = regex.join( '|' );
+
+ // Build RegEx
+ // Any date formated with . , ' - or /
+ ts.dateRegex[0] = new RegExp( /^\s*\d{1,2}[\,\.\-\/'\s]{1,2}\d{1,2}[\,\.\-\/'\s]{1,2}\d{2,4}\s*?/i);
+
+ // Written Month name, dmy
+ ts.dateRegex[1] = new RegExp( '^\\s*\\d{1,2}[\\,\\.\\-\\/\'\\s]*(' + regex + ')' + '[\\,\\.\\-\\/\'\\s]*\\d{2,4}\\s*$', 'i' );
+
+ // Written Month name, mdy
+ ts.dateRegex[2] = new RegExp( '^\\s*(' + regex + ')' + '[\\,\\.\\-\\/\'\\s]*\\d{1,2}[\\,\\.\\-\\/\'\\s]*\\d{2,4}\\s*$', 'i' );
+
+ }
+
+ function explodeRowspans( $table ) {
+ // Split multi row cells into multiple cells with the same content
+ $table.find( '> tbody > tr > [rowspan]' ).each(function() {
+ var rowSpan = this.rowSpan;
+ this.rowSpan = 1;
+ var cell = $( this );
+ var next = cell.parent().nextAll();
+ for ( var i = 0; i < rowSpan - 1; i++ ) {
+ var td = next.eq( i ).children( 'td' );
+ if ( !td.length ) {
+ next.eq( i ).append( cell.clone() );
+ } else if ( this.cellIndex === 0 ) {
+ td.eq( this.cellIndex ).before( cell.clone() );
+ } else {
+ td.eq( this.cellIndex - 1 ).after( cell.clone() );
+ }
+ }
+ });
+ }
+
+ function buildCollationTable() {
+ ts.collationTable = mw.config.get( 'tableSorterCollation' );
+ ts.collationRegex = null;
+ if ( ts.collationTable ) {
+ var keys = [];
+
+ // Build array of key names
+ for ( var key in ts.collationTable ) {
+ if ( ts.collationTable.hasOwnProperty(key) ) { //to be safe
+ keys.push(key);
+ }
+ }
+ if (keys.length) {
+ ts.collationRegex = new RegExp( '[' + keys.join( '' ) + ']', 'ig' );
+ }
+ }
+ }
+
+ function cacheRegexs() {
+ if ( ts.rgx ) {
+ return;
+ }
+ ts.rgx = {
+ IPAddress: [
+ new RegExp( /^\d{1,3}[\.]\d{1,3}[\.]\d{1,3}[\.]\d{1,3}$/)
+ ],
+ currency: [
+ new RegExp( /^[£$€?.]/),
+ new RegExp( /[£$€]/g)
+ ],
+ url: [
+ new RegExp( /^(https?|ftp|file):\/\/$/),
+ new RegExp( /(https?|ftp|file):\/\//)
+ ],
+ isoDate: [
+ new RegExp( /^\d{4}[\/\-]\d{1,2}[\/\-]\d{1,2}$/)
+ ],
+ usLongDate: [
+ new RegExp( /^[A-Za-z]{3,10}\.? [0-9]{1,2}, ([0-9]{4}|'?[0-9]{2}) (([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(AM|PM)))$/)
+ ],
+ time: [
+ new RegExp( /^(([0-2]?[0-9]:[0-5][0-9])|([0-1]?[0-9]:[0-5][0-9]\s(am|pm)))$/)
+ ]
+ };
+ }
+
+ /* Public scope */
+
+ $.tablesorter = {
+
+ defaultOptions: {
+ cssHeader: 'headerSort',
+ cssAsc: 'headerSortUp',
+ cssDesc: 'headerSortDown',
+ cssChildRow: 'expand-child',
+ sortInitialOrder: 'asc',
+ sortMultiSortKey: 'shiftKey',
+ sortLocaleCompare: false,
+ parsers: {},
+ widgets: [],
+ headers: {},
+ cancelSelection: true,
+ sortList: [],
+ headerList: [],
+ selectorHeaders: 'thead tr:eq(0) th',
+ debug: false
+ },
+
+ dateRegex: [],
+ monthNames: [],
+
+ /**
+ * @param $tables {jQuery}
+ * @param settings {Object} (optional)
+ */
+ construct: function( $tables, settings ) {
+ return $tables.each( function( i, table ) {
+ // Declare and cache.
+ var $document, $headers, cache, config, sortOrder,
+ $table = $( table ),
+ shiftDown = 0,
+ firstTime = true;
+
+ // Quit if no tbody
+ if ( !table.tBodies ) {
+ return;
+ }
+ if ( !table.tHead ) {
+ // No thead found. Look for rows with <th>s and
+ // move them into a <thead> tag or a <tfoot> tag
+ emulateTHeadAndFoot( $table );
+
+ // Still no thead? Then quit
+ if ( !table.tHead ) {
+ return;
+ }
+ }
+ $table.addClass( "jquery-tablesorter" );
+
+ // New config object.
+ table.config = {};
+
+ // Merge and extend.
+ config = $.extend( table.config, $.tablesorter.defaultOptions, settings );
+
+ // Save the settings where they read
+ $.data( table, 'tablesorter', config );
+
+ // Get the CSS class names, could be done else where.
+ var sortCSS = [ config.cssDesc, config.cssAsc ];
+ var sortMsg = [ mw.msg( 'sort-descending' ), mw.msg( 'sort-ascending' ) ];
+
+ // Build headers
+ $headers = buildHeaders( table, sortMsg );
+
+ // Grab and process locale settings
+ buildTransformTable();
+ buildDateTable();
+ buildCollationTable();
+
+ // Precaching regexps can bring 10 fold
+ // performance improvements in some browsers.
+ cacheRegexs();
+
+ // Apply event handling to headers
+ // this is too big, perhaps break it out?
+ $headers.click( function( e ) {
+ if ( e.target.nodeName.toLowerCase() == 'a' ) {
+ // The user clicked on a link inside a table header
+ // Do nothing and let the default link click action continue
+ return true;
+ }
+
+ if ( firstTime ) {
+ firstTime = false;
+
+ // Legacy fix of .sortbottoms
+ // Wrap them inside inside a tfoot (because that's what they actually want to be) &
+ // and put the <tfoot> at the end of the <table>
+ var $sortbottoms = $table.find( '> tbody > tr.sortbottom' );
+ if ( $sortbottoms.length ) {
+ var $tfoot = $table.children( 'tfoot' );
+ if ( $tfoot.length ) {
+ $tfoot.eq(0).prepend( $sortbottoms );
+ } else {
+ $table.append( $( '<tfoot>' ).append( $sortbottoms ) )
+ }
+ }
+
+ explodeRowspans( $table );
+ // try to auto detect column type, and store in tables config
+ table.config.parsers = buildParserCache( table, $headers );
+ // build the cache for the tbody cells
+ cache = buildCache( table );
+ }
+ var totalRows = ( $table[0].tBodies[0] && $table[0].tBodies[0].rows.length ) || 0;
+ if ( !table.sortDisabled && totalRows > 0 ) {
+
+ // Cache jQuery object
+ var $cell = $( this );
+
+ // Get current column index
+ var i = this.column;
+
+ // Get current column sort order
+ this.order = this.count % 2;
+ this.count++;
+
+ // User only wants to sort on one column
+ if ( !e[config.sortMultiSortKey] ) {
+ // Flush the sort list
+ config.sortList = [];
+ // Add column to sort list
+ config.sortList.push( [i, this.order] );
+
+ // Multi column sorting
+ } else {
+ // The user has clicked on an already sorted column.
+ if ( isValueInArray( i, config.sortList ) ) {
+ // Reverse the sorting direction for all tables.
+ for ( var j = 0; j < config.sortList.length; j++ ) {
+ var s = config.sortList[j],
+ o = config.headerList[s[0]];
+ if ( s[0] == i ) {
+ o.count = s[1];
+ o.count++;
+ s[1] = o.count % 2;
+ }
+ }
+ } else {
+ // Add column to sort list array
+ config.sortList.push( [i, this.order] );
+ }
+ }
+
+ // Set CSS for headers
+ setHeadersCss( $table[0], $headers, config.sortList, sortCSS, sortMsg );
+ appendToTable(
+ $table[0], multisort( $table[0], config.sortList, cache )
+ );
+
+ // Stop normal event by returning false
+ return false;
+ }
+
+ // Cancel selection
+ } ).mousedown( function() {
+ if ( config.cancelSelection ) {
+ this.onselectstart = function() {
+ return false;
+ };
+ return false;
+ }
+ } );
+ } );
+ },
+
+ addParser: function( parser ) {
+ var l = parsers.length,
+ a = true;
+ for ( var i = 0; i < l; i++ ) {
+ if ( parsers[i].id.toLowerCase() == parser.id.toLowerCase() ) {
+ a = false;
+ }
+ }
+ if ( a ) {
+ parsers.push( parser );
+ }
+ },
+
+ formatDigit: function( s ) {
+ if ( ts.transformTable !== false ) {
+ var out = '',
+ c;
+ for ( var p = 0; p < s.length; p++ ) {
+ c = s.charAt(p);
+ if ( c in ts.transformTable ) {
+ out += ts.transformTable[c];
+ } else {
+ out += c;
+ }
+ }
+ s = out;
+ }
+ var i = parseFloat( s.replace( /[, ]/g, '' ).replace( "\u2212", '-' ) );
+ return ( isNaN(i)) ? 0 : i;
+ },
+
+ formatFloat: function( s ) {
+ var i = parseFloat(s);
+ return ( isNaN(i)) ? 0 : i;
+ },
+
+ formatInt: function( s ) {
+ var i = parseInt( s, 10 );
+ return ( isNaN(i)) ? 0 : i;
+ },
+
+ clearTableBody: function( table ) {
+ if ( $.browser.msie ) {
+ var empty = function( el ) {
+ while ( el.firstChild ) {
+ el.removeChild( el.firstChild );
+ }
+ };
+ empty( table.tBodies[0] );
+ } else {
+ table.tBodies[0].innerHTML = '';
+ }
+ }
+ };
+
+ // Shortcut
+ ts = $.tablesorter;
+
+ // Register as jQuery prototype method
+ $.fn.tablesorter = function( settings ) {
+ return ts.construct( this, settings );
+ };
+
+ // Add default parsers
+ ts.addParser( {
+ id: 'text',
+ is: function( s ) {
+ return true;
+ },
+ format: function( s ) {
+ s = $.trim( s.toLowerCase() );
+ if ( ts.collationRegex ) {
+ var tsc = ts.collationTable;
+ s = s.replace( ts.collationRegex, function( match ) {
+ var r = tsc[match] ? tsc[match] : tsc[match.toUpperCase()];
+ return r.toLowerCase();
+ } );
+ }
+ return s;
+ },
+ type: 'text'
+ } );
+
+ ts.addParser( {
+ id: 'IPAddress',
+ is: function( s ) {
+ return ts.rgx.IPAddress[0].test(s);
+ },
+ format: function( s ) {
+ var a = s.split( '.' ),
+ r = '',
+ l = a.length;
+ for ( var i = 0; i < l; i++ ) {
+ var item = a[i];
+ if ( item.length == 1 ) {
+ r += '00' + item;
+ } else if ( item.length == 2 ) {
+ r += '0' + item;
+ } else {
+ r += item;
+ }
+ }
+ return $.tablesorter.formatFloat(r);
+ },
+ type: 'numeric'
+ } );
+
+ ts.addParser( {
+ id: 'currency',
+ is: function( s ) {
+ return ts.rgx.currency[0].test(s);
+ },
+ format: function( s ) {
+ return $.tablesorter.formatDigit( s.replace( ts.rgx.currency[1], '' ) );
+ },
+ type: 'numeric'
+ } );
+
+ ts.addParser( {
+ id: 'url',
+ is: function( s ) {
+ return ts.rgx.url[0].test(s);
+ },
+ format: function( s ) {
+ return $.trim( s.replace( ts.rgx.url[1], '' ) );
+ },
+ type: 'text'
+ } );
+
+ ts.addParser( {
+ id: 'isoDate',
+ is: function( s ) {
+ return ts.rgx.isoDate[0].test(s);
+ },
+ format: function( s ) {
+ return $.tablesorter.formatFloat((s !== '') ? new Date(s.replace(
+ new RegExp( /-/g), '/')).getTime() : '0' );
+ },
+ type: 'numeric'
+ } );
+
+ ts.addParser( {
+ id: 'usLongDate',
+ is: function( s ) {
+ return ts.rgx.usLongDate[0].test(s);
+ },
+ format: function( s ) {
+ return $.tablesorter.formatFloat( new Date(s).getTime() );
+ },
+ type: 'numeric'
+ } );
+
+ ts.addParser( {
+ id: 'date',
+ is: function( s ) {
+ return ( ts.dateRegex[0].test(s) || ts.dateRegex[1].test(s) || ts.dateRegex[2].test(s ));
+ },
+ format: function( s, table ) {
+ s = $.trim( s.toLowerCase() );
+
+ for ( var i = 1, j = 0; i < 13 && j < 2; i++ ) {
+ s = s.replace( ts.monthNames[j][i], i );
+ if ( i == 12 ) {
+ j++;
+ i = 0;
+ }
+ }
+
+ s = s.replace( /[\-\.\,' ]/g, '/' );
+
+ // Replace double slashes
+ s = s.replace( /\/\//g, '/' );
+ s = s.replace( /\/\//g, '/' );
+ s = s.split( '/' );
+
+ // Pad Month and Day
+ if ( s[0] && s[0].length == 1 ) {
+ s[0] = '0' + s[0];
+ }
+ if ( s[1] && s[1].length == 1 ) {
+ s[1] = '0' + s[1];
+ }
+ var y;
+
+ if ( !s[2] ) {
+ // Fix yearless dates
+ s[2] = 2000;
+ } else if ( ( y = parseInt( s[2], 10) ) < 100 ) {
+ // Guestimate years without centuries
+ if ( y < 30 ) {
+ s[2] = 2000 + y;
+ } else {
+ s[2] = 1900 + y;
+ }
+ }
+ // Resort array depending on preferences
+ if ( mw.config.get( 'wgDefaultDateFormat' ) == 'mdy' || mw.config.get( 'wgContentLanguage' ) == 'en' ) {
+ s.push( s.shift() );
+ s.push( s.shift() );
+ } else if ( mw.config.get( 'wgDefaultDateFormat' ) == 'dmy' ) {
+ var d = s.shift();
+ s.push( s.shift() );
+ s.push(d);
+ }
+ return parseInt( s.join( '' ), 10 );
+ },
+ type: 'numeric'
+ } );
+
+ ts.addParser( {
+ id: 'time',
+ is: function( s ) {
+ return ts.rgx.time[0].test(s);
+ },
+ format: function( s ) {
+ return $.tablesorter.formatFloat( new Date( '2000/01/01 ' + s ).getTime() );
+ },
+ type: 'numeric'
+ } );
+
+ ts.addParser( {
+ id: 'number',
+ is: function( s, table ) {
+ return $.tablesorter.numberRegex.test( $.trim( s ));
+ },
+ format: function( s ) {
+ return $.tablesorter.formatDigit(s);
+ },
+ type: 'numeric'
+ } );
+
+} )( jQuery );
diff --git a/resources/jquery/jquery.textSelection.js b/resources/jquery/jquery.textSelection.js
index 35e224db..f3d1a146 100644
--- a/resources/jquery/jquery.textSelection.js
+++ b/resources/jquery/jquery.textSelection.js
@@ -2,7 +2,54 @@
* These plugins provide extra functionality for interaction with textareas.
*/
( function( $ ) {
+
+if (document.selection && document.selection.createRange) {
+ // On IE, patch the focus() method to restore the windows' scroll position
+ // (bug 32241)
+ $.fn.extend({
+ focus : (function ( _focus ) {
+ return function () {
+ if ( arguments.length == 0 ) {
+ var $w = $( window );
+ var state = {top: $w.scrollTop(), left: $w.scrollLeft()};
+ var result = _focus.apply( this, arguments );
+ window.scrollTo( state.top, state.left );
+ return result;
+ }
+ return _focus.apply( this, arguments );
+ };
+ })( $.fn.focus )
+ });
+}
+
$.fn.textSelection = function( command, options ) {
+
+/**
+ * Helper function to get an IE TextRange object for an element
+ */
+function rangeForElementIE( e ) {
+ if ( e.nodeName.toLowerCase() == 'input' ) {
+ return e.createTextRange();
+ } else {
+ var sel = document.body.createTextRange();
+ sel.moveToElementText( e );
+ return sel;
+ }
+}
+
+/**
+ * Helper function for IE for activating the textarea. Called only in the
+ * IE-specific code paths below; makes use of IE-specific non-standard
+ * function setActive() if possible to avoid screen flicker.
+ */
+function activateElementOnIE( element ) {
+ if ( element.setActive ) {
+ element.setActive(); // bug 32241: doesn't scroll
+ } else {
+ $( element ).focus(); // may scroll (but we patched it above)
+ }
+}
+
var fn = {
/**
* Get the contents of the textarea
@@ -20,7 +67,7 @@ getSelection: function() {
if ( $(e).is( ':hidden' ) ) {
// Do nothing
} else if ( document.selection && document.selection.createRange ) {
- e.focus();
+ activateElementOnIE( e );
var range = document.selection.createRange();
retval = range.text;
} else if ( e.selectionStart || e.selectionStart == '0' ) {
@@ -34,9 +81,13 @@ getSelection: function() {
*
* Inserts text at the begining and end of a text selection, optionally
* inserting text at the caret when selection is empty.
+ *
+ * @fixme document the options parameters
*/
encapsulateSelection: function( options ) {
return this.each( function() {
+ var pre = options.pre, post = options.post;
+
/**
* Check if the selected text is the same as the insert text
*/
@@ -46,84 +97,136 @@ encapsulateSelection: function( options ) {
isSample = true;
} else if ( options.replace ) {
selText = options.peri;
- } else if ( selText.charAt( selText.length - 1 ) == ' ' ) {
- // Exclude ending space char
- selText = selText.substring(0, selText.length - 1);
- options.post += ' ';
+ } else {
+ while ( selText.charAt( selText.length - 1 ) == ' ' ) {
+ // Exclude ending space char
+ selText = selText.substring( 0, selText.length - 1 );
+ post += ' ';
+ }
+ while ( selText.charAt( 0 ) == ' ' ) {
+ // Exclude prepending space char
+ selText = selText.substring( 1, selText.length );
+ pre = ' ' + pre;
+ }
+ }
+ }
+
+ /**
+ * Do the splitlines stuff.
+ *
+ * Wrap each line of the selected text with pre and post
+ */
+ function doSplitLines( selText, pre, post ) {
+ var insertText = '';
+ var selTextArr = selText.split( '\n' );
+ for ( var i = 0; i < selTextArr.length; i++ ) {
+ insertText += pre + selTextArr[i] + post;
+ if ( i != selTextArr.length - 1 ) {
+ insertText += '\n';
+ }
}
+ return insertText;
}
+
var isSample = false;
if ( this.style.display == 'none' ) {
// Do nothing
} else if ( this.selectionStart || this.selectionStart == '0' ) {
// Mozilla/Opera
$(this).focus();
+ if ( options.selectionStart !== undefined ) {
+ $(this).textSelection( 'setSelection', { 'start': options.selectionStart, 'end': options.selectionEnd } );
+ }
+
var selText = $(this).textSelection( 'getSelection' );
var startPos = this.selectionStart;
var endPos = this.selectionEnd;
var scrollTop = this.scrollTop;
checkSelectedText();
+
+ if ( options.selectionStart !== undefined
+ && endPos - startPos != options.selectionEnd - options.selectionStart )
+ {
+ // This means there is a difference in the selection range returned by browser and what we passed.
+ // This happens for Chrome in the case of composite characters. Ref bug #30130
+ // Set the startPos to the correct position.
+ startPos = options.selectionStart;
+ }
+
+ var insertText = pre + selText + post;
+ if ( options.splitlines ) {
+ insertText = doSplitLines( selText, pre, post );
+ }
if ( options.ownline ) {
if ( startPos != 0 && this.value.charAt( startPos - 1 ) != "\n" ) {
- options.pre = "\n" + options.pre;
+ insertText = "\n" + insertText;
}
if ( this.value.charAt( endPos ) != "\n" ) {
- options.post += "\n";
+ insertText += "\n";
}
}
- this.value = this.value.substring( 0, startPos ) + options.pre + selText + options.post +
+ this.value = this.value.substring( 0, startPos ) + insertText +
this.value.substring( endPos, this.value.length );
// Setting this.value scrolls the textarea to the top, restore the scroll position
this.scrollTop = scrollTop;
if ( window.opera ) {
- options.pre = options.pre.replace( /\r?\n/g, "\r\n" );
+ pre = pre.replace( /\r?\n/g, "\r\n" );
selText = selText.replace( /\r?\n/g, "\r\n" );
- options.post = options.post.replace( /\r?\n/g, "\r\n" );
+ post = post.replace( /\r?\n/g, "\r\n" );
}
- if ( isSample && options.selectPeri ) {
- this.selectionStart = startPos + options.pre.length;
- this.selectionEnd = startPos + options.pre.length + selText.length;
+ if ( isSample && options.selectPeri && !options.splitlines ) {
+ this.selectionStart = startPos + pre.length;
+ this.selectionEnd = startPos + pre.length + selText.length;
} else {
- this.selectionStart = startPos + options.pre.length + selText.length +
- options.post.length;
+ this.selectionStart = startPos + insertText.length;
this.selectionEnd = this.selectionStart;
}
} else if ( document.selection && document.selection.createRange ) {
// IE
- $(this).focus();
+ activateElementOnIE( this );
if ( context ) {
context.fn.restoreCursorAndScrollTop();
}
+ if ( options.selectionStart !== undefined ) {
+ $(this).textSelection( 'setSelection', { 'start': options.selectionStart, 'end': options.selectionEnd } );
+ }
+
var selText = $(this).textSelection( 'getSelection' );
var scrollTop = this.scrollTop;
var range = document.selection.createRange();
+
+ checkSelectedText();
+ var insertText = pre + selText + post;
+ if ( options.splitlines ) {
+ insertText = doSplitLines( selText, pre, post );
+ }
if ( options.ownline && range.moveStart ) {
var range2 = document.selection.createRange();
range2.collapse();
range2.moveStart( 'character', -1 );
// FIXME: Which check is correct?
if ( range2.text != "\r" && range2.text != "\n" && range2.text != "" ) {
- options.pre = "\n" + options.pre;
+ insertText = "\n" + insertText;
}
var range3 = document.selection.createRange();
range3.collapse( false );
range3.moveEnd( 'character', 1 );
if ( range3.text != "\r" && range3.text != "\n" && range3.text != "" ) {
- options.post += "\n";
+ insertText += "\n";
}
}
- checkSelectedText();
- range.text = options.pre + selText + options.post;
+
+ range.text = insertText;
if ( isSample && options.selectPeri && range.moveStart ) {
- range.moveStart( 'character', - options.post.length - selText.length );
- range.moveEnd( 'character', - options.post.length );
+ range.moveStart( 'character', - post.length - selText.length );
+ range.moveEnd( 'character', - post.length );
}
range.select();
// Restore the scroll position
this.scrollTop = scrollTop;
}
$(this).trigger( 'encapsulateSelection', [ options.pre, options.peri, options.post, options.ownline,
- options.replace ] );
+ options.replace, options.spitlines ] );
});
},
/**
@@ -134,11 +237,21 @@ encapsulateSelection: function( options ) {
*
* Get the position (in resolution of bytes not nessecarily characters)
* in a textarea
+ *
+ * Will focus the textarea in some browsers (IE/Opera)
+ *
+ * @fixme document the options parameters
*/
getCaretPosition: function( options ) {
function getCaret( e ) {
var caretPos = 0, endPos = 0;
- if ( $.browser.msie ) {
+ if ( document.selection && document.selection.createRange ) {
+ // IE doesn't properly report non-selected caret position through
+ // the selection ranges when textarea isn't focused. This can
+ // lead to saving a bogus empty selection, which then screws up
+ // whatever we do later (bug 31847).
+ activateElementOnIE( e );
+
// IE Support
var preFinished = false;
var periFinished = false;
@@ -148,15 +261,11 @@ encapsulateSelection: function( options ) {
// Create range containing text in the selection
var periRange = document.selection.createRange().duplicate();
// Create range containing text before the selection
- var preRange = document.body.createTextRange();
- // Select all the text
- preRange.moveToElementText(e);
+ var preRange = rangeForElementIE( e );
// Move the end where we need it
preRange.setEndPoint("EndToStart", periRange);
// Create range containing text after the selection
- var postRange = document.body.createTextRange();
- // Select all the text
- postRange.moveToElementText(e);
+ var postRange = rangeForElementIE( e );
// Move the start where we need it
postRange.setEndPoint("StartToEnd", periRange);
// Load the text values we need to compare
@@ -217,6 +326,9 @@ encapsulateSelection: function( options ) {
}
return getCaret( this.get( 0 ) );
},
+/**
+ * @fixme document the options parameters
+ */
setSelection: function( options ) {
return this.each( function() {
if ( $(this).is( ':hidden' ) ) {
@@ -233,8 +345,7 @@ setSelection: function( options ) {
this.selectionEnd = options.end;
}
} else if ( document.body.createTextRange ) {
- var selection = document.body.createTextRange();
- selection.moveToElementText( this );
+ var selection = rangeForElementIE( this );
var length = this.value.length;
// IE doesn't count \n when computing the offset, so we won't either
var newLines = this.value.match( /\n/g );
@@ -258,6 +369,8 @@ setSelection: function( options ) {
* position with setSelection()
* @param options boolean Whether to force a scroll even if the caret position
* is already visible. Defaults to false
+ *
+ * @fixme document the options parameters (function body suggests options.force is a boolean, not options itself)
*/
scrollToCaretPosition: function( options ) {
function getLineLength( e ) {
@@ -357,7 +470,10 @@ scrollToCaretPosition: function( options ) {
'post': '', // Text to insert after the cursor/selection
'ownline': false, // Put the inserted text on a line of its own
'replace': false, // If there is a selection, replace it with peri instead of leaving it alone
- 'selectPeri': true // Select the peri text if it was inserted (but not if there was a selection and replace==false)
+ 'selectPeri': true, // Select the peri text if it was inserted (but not if there was a selection and replace==false, or if splitlines==true)
+ 'splitlines': false, // If multiple lines are selected, encapsulate each line individually
+ 'selectionStart': undefined, // Position to start selection at
+ 'selectionEnd': undefined // Position to end selection at. Defaults to start
}, options );
break;
case 'getCaretPosition':
@@ -400,5 +516,4 @@ scrollToCaretPosition: function( options ) {
}
return retval;
};
-
} )( jQuery );
diff --git a/resources/mediawiki.action/mediawiki.action.edit.js b/resources/mediawiki.action/mediawiki.action.edit.js
index e5b50958..b121d34f 100644
--- a/resources/mediawiki.action/mediawiki.action.edit.js
+++ b/resources/mediawiki.action/mediawiki.action.edit.js
@@ -1,30 +1,101 @@
-/* Note, there is still stuff in skins/common/edit.js that
- * has not been jQuery-ized.
- */
-
(function( $ ) {
- //make sure edit summary does not exceed byte limit
- $( '#wpSummary' ).attr( 'maxLength', 250 ).keypress( function( e ) {
- // first check to see if this is actually a character key
- // being pressed.
- // Based on key-event info from http://unixpapa.com/js/key.html
- // JQuery should also normalize e.which to be consistent cross-browser,
- // however the same check is still needed regardless of jQuery.
+ // currentFocus is used to determine where to insert tags
+ var currentFocused = $( '#wpTextbox1' );
+
+ mw.toolbar = {
+ $toolbar : $( '#toolbar' ),
+ buttons : [],
+ // If you want to add buttons, use
+ // mw.toolbar.addButton( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId, selectText );
+ addButton : function() {
+ this.buttons.push( [].slice.call( arguments ) );
+ },
+ insertButton : function( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId, selectText ) {
+ var image = $('<img>', {
+ width : 23,
+ height : 22,
+ src : imageFile,
+ alt : speedTip,
+ title : speedTip,
+ id : imageId || '',
+ 'class': 'mw-toolbar-editbutton'
+ } ).click( function() {
+ mw.toolbar.insertTags( tagOpen, tagClose, sampleText, selectText );
+ return false;
+ } );
+
+ this.$toolbar.append( image );
+ return true;
+ },
- if ( e.which === 0 || e.charCode === 0 || e.ctrlKey || e.altKey || e.metaKey ) {
- return true; //a special key (backspace, etc) so don't interfere.
+ // apply tagOpen/tagClose to selection in textarea,
+ // use sampleText instead of selection if there is none
+ insertTags : function( tagOpen, tagClose, sampleText, selectText) {
+ if ( currentFocused.length ) {
+ currentFocused.textSelection(
+ 'encapsulateSelection', { 'pre': tagOpen, 'peri': sampleText, 'post': tagClose }
+ );
+ }
+ },
+ init : function() {
+ // Legacy
+ // Merge buttons from mwCustomEditButtons
+ var buttons = [].concat( this.buttons, window.mwCustomEditButtons );
+ for ( var i = 0; i < buttons.length; i++ ) {
+ if ( $.isArray( buttons[i] ) ) {
+ // Passes our button array as arguments
+ mw.toolbar.insertButton.apply( this, buttons[i] );
+ } else {
+ // Legacy mwCustomEditButtons is an object
+ var c = buttons[i];
+ mw.toolbar.insertButton( c.imageFile, c.speedTip, c.tagOpen, c.tagClose, c.sampleText, c.imageId, c.selectText );
+ }
+ }
+ return true;
}
+ };
- // This basically figures out how many bytes a UTF-16 string (which is what js sees)
- // will take in UTF-8 by replacing a 2 byte character with 2 *'s, etc, and counting that.
- // Note, surrogate (\uD800-\uDFFF) characters are counted as 2 bytes, since there's two of them
- // and the actual character takes 4 bytes in UTF-8 (2*2=4). Might not work perfectly in edge cases
- // such as illegal sequences, but that should never happen.
+ //Legacy
+ window.addButton = mw.toolbar.addButton;
+ window.insertTags = mw.toolbar.insertTags;
+
+ //make sure edit summary does not exceed byte limit
+ $( '#wpSummary' ).byteLimit( 250 );
+
+ $( document ).ready( function() {
+ /**
+ * Restore the edit box scroll state following a preview operation,
+ * and set up a form submission handler to remember this state
+ */
+ var scrollEditBox = function() {
+ var editBox = document.getElementById( 'wpTextbox1' );
+ var scrollTop = document.getElementById( 'wpScrolltop' );
+ var $editForm = $( '#editform' );
+ if( $editForm.length && editBox && scrollTop ) {
+ if( scrollTop.value ) {
+ editBox.scrollTop = scrollTop.value;
+ }
+ $editForm.submit( function() {
+ scrollTop.value = editBox.scrollTop;
+ });
+ }
+ };
+ scrollEditBox();
+
+ // Create button bar
+ mw.toolbar.init();
+
+ $( 'textarea, input:text' ).focus( function() {
+ currentFocused = $(this);
+ });
- var len = this.value.replace( /[\u0080-\u07FF\uD800-\uDFFF]/g, '**' ).replace( /[\u0800-\uD7FF\uE000-\uFFFF]/g, '***' ).length;
- //247 as this doesn't count character about to be inserted.
- if ( len > 247 ) {
- e.preventDefault();
+ // HACK: make currentFocused work with the usability iframe
+ // With proper focus detection support (HTML 5!) this'll be much cleaner
+ var iframe = $( '.wikiEditor-ui-text iframe' );
+ if ( iframe.length > 0 ) {
+ $( iframe.get( 0 ).contentWindow.document )
+ .add( iframe.get( 0 ).contentWindow.document.body ) // for IE
+ .focus( function() { currentFocused = iframe; } );
}
});
})(jQuery);
diff --git a/skins/common/diff.css b/resources/mediawiki.action/mediawiki.action.history.diff.css
index 80286d8e..3907a5f4 100644
--- a/skins/common/diff.css
+++ b/resources/mediawiki.action/mediawiki.action.history.diff.css
@@ -29,9 +29,9 @@ td.diff-context {
.diffchange {
color: red;
font-weight: bold;
- text-decoration: none;
- white-space: pre-wrap;
white-space: -moz-pre-wrap;
+ white-space: pre-wrap;
+ text-decoration: none;
}
table.diff {
@@ -39,8 +39,7 @@ table.diff {
width: 98%;
border-spacing: 4px;
- /* Fixed layout is required to ensure that cells containing long URLs
- don't widen in Safari, Internet Explorer, or iCab */
+ /* Ensure that colums are of equal width */
table-layout: fixed;
}
table.diff td {
@@ -53,23 +52,10 @@ table.diff col.diff-content {
width: 48%;
}
table.diff td div {
- /* Force-wrap very long lines such as URLs or page-widening char strings.
- CSS 3 only (In Gecko 1.9.1 / Firefox 3.5):
- https://bugzilla.mozilla.org/show_bug.cgi?id=99457
- https://developer.mozilla.org/web-tech/2008/08/20/word-wrap-break-word/
- https://developer.mozilla.org/En/CSS/Word-wrap */
+ /* Force-wrap very long lines such as URLs or page-widening char strings.*/
word-wrap: break-word;
- /* As fallback, scrollbars will be added for very wide cells
+ /* As fallback (FF<3.5, Opera <10.5), scrollbars will be added for very wide cells
instead of text overflowing or widening */
overflow: auto;
-
- /* The above rule breaks on very old versions of Mozilla due
- to a bug which collapses the table cells to a single line.
-
- In Mozilla 1.1 and below with JavaScript enabled, the rule
- will be overridden with this by diff.js; wide cell contents
- then spill horizontally without widening the rest of the
- table: */
- /* overflow: visible; */
}
diff --git a/resources/mediawiki.action/mediawiki.action.history.js b/resources/mediawiki.action/mediawiki.action.history.js
index 66f90b07..1b5b3a00 100644
--- a/resources/mediawiki.action/mediawiki.action.history.js
+++ b/resources/mediawiki.action/mediawiki.action.history.js
@@ -1,7 +1,53 @@
/*
* JavaScript for History action
*/
+jQuery( function( $ ) {
+ var $lis = $( 'ul#pagehistory li' );
+ var updateDiffRadios = function() {
+ var diffLi = false, // the li where the diff radio is checked
+ oldLi = false; // the li where the oldid radio is checked
-// Replaces histrowinit
-$( '#pagehistory li input[name=diff], #pagehistory li input[name=oldid]' ).click( diffcheck );
-diffcheck(); \ No newline at end of file
+ if ( !$lis.length ) {
+ return true;
+ }
+ $lis.removeClass( 'selected' );
+ $lis.each( function() {
+ var $this = $(this);
+ var $inputs = $this.find( 'input[type="radio"]' );
+ if ( $inputs.length !== 2 ) {
+ return true;
+ }
+
+ // this row has a checked radio button
+ if ( $inputs.get(0).checked ) {
+ oldLi = true;
+ $this.addClass( 'selected' );
+ $inputs.eq(0).css( 'visibility', 'visible' );
+ $inputs.eq(1).css( 'visibility', 'hidden' );
+ } else if ( $inputs.get(1).checked ) {
+ diffLi = true;
+ $this.addClass( 'selected' );
+ $inputs.eq(0).css( 'visibility', 'hidden' );
+ $inputs.eq(1).css( 'visibility', 'visible' );
+ } else {
+ // no radio is checked in this row
+ if ( diffLi && oldLi ) {
+ // We're below the selected radios
+ $inputs.eq(0).css( 'visibility', 'visible' );
+ $inputs.eq(1).css( 'visibility', 'hidden' );
+ } else if ( diffLi ) {
+ // We're between the selected radios
+ $inputs.css( 'visibility', 'visible' );
+ } else {
+ // We're above the selected radios
+ $inputs.eq(1).css( 'visibility', 'visible' );
+ $inputs.eq(0).css( 'visibility', 'hidden' );
+ }
+ }
+ });
+ return true;
+ };
+
+ $( '#pagehistory li input[name="diff"], #pagehistory li input[name="oldid"]' ).click( updateDiffRadios );
+ updateDiffRadios();
+}); \ No newline at end of file
diff --git a/resources/mediawiki.action/mediawiki.action.view.metadata.js b/resources/mediawiki.action/mediawiki.action.view.metadata.js
new file mode 100644
index 00000000..378dd155
--- /dev/null
+++ b/resources/mediawiki.action/mediawiki.action.view.metadata.js
@@ -0,0 +1,39 @@
+// Exif metadata display for MediaWiki file uploads
+//
+// Add an expand/collapse link and collapse by default if set to
+// (with JS disabled, user will see all items)
+//
+
+jQuery( document ).ready( function( $ ) {
+ var showText = mw.msg( 'metadata-expand' );
+ var hideText = mw.msg( 'metadata-collapse' );
+
+ var $table = $( '#mw_metadata' );
+ var $tbody = $table.find( 'tbody' );
+ if ( !$tbody.length ) {
+ return;
+ }
+
+ var $row = $( '<tr></tr>' );
+ var $col = $( '<td colspan="2"></td>' );
+
+ var $link = $( '<a></a>', {
+ 'text': showText,
+ 'href': '#'
+ }).click(function() {
+ if ( $table.hasClass( 'collapsed' ) ) {
+ $( this ).text( hideText );
+ } else {
+ $( this ).text( showText );
+ }
+ $table.toggleClass( 'expanded collapsed' );
+ return false;
+ });
+
+ $col.append( $link );
+ $row.append( $col );
+ $tbody.append( $row );
+
+ // And collapse!
+ $table.addClass( 'collapsed' );
+} );
diff --git a/resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js b/resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js
index 5a7c777f..caf9a9f2 100644
--- a/resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js
+++ b/resources/mediawiki.action/mediawiki.action.view.rightClickEdit.js
@@ -1,7 +1,7 @@
/*
* JavaScript to enable right click edit functionality
*/
-$( function() {
+jQuery( function( $ ) {
// Select all h1-h6 elements that contain editsection links
$( 'h1:has(.editsection a), ' +
'h2:has(.editsection a), ' +
diff --git a/resources/mediawiki.action/mediawiki.action.watch.ajax.js b/resources/mediawiki.action/mediawiki.action.watch.ajax.js
new file mode 100644
index 00000000..93aa29c9
--- /dev/null
+++ b/resources/mediawiki.action/mediawiki.action.watch.ajax.js
@@ -0,0 +1,174 @@
+/**
+ * Animate watch/unwatch links to use asynchronous API requests to
+ * watch pages, rather than clicking on links. Requires jQuery.
+ */
+( function( $ ) {
+var $links;
+
+var setLinkText = function( $link, action ) {
+ if ( action == 'watch' || action == 'unwatch' ) {
+ // save the accesskey from the title
+ var keyCommand = $link.attr( 'title' ).match( /\[.*?\]$/ ) ? $link.attr( 'title' ).match( /\[.*?\]$/ )[0] : '';
+ $link.attr( 'title', mw.msg( 'tooltip-ca-' + action ) + ' ' + keyCommand );
+ }
+ if ( $link.data( 'icon' ) ) {
+ $link.attr( 'alt', mw.msg( action ) );
+ if ( action == 'watching' || action == 'unwatching' ) {
+ $link.addClass( 'loading' );
+ } else {
+ $link.removeClass( 'loading' );
+ }
+ } else {
+ $link.html( mw.msg( action ) );
+ }
+};
+
+var errorHandler = function( $link ) {
+
+ // Reset link text to whatever it was before we switching it to the '(un)watch'+ing message.
+ setLinkText( $link, $link.data( 'action' ) );
+
+ // Format error message
+ var cleanTitle = mw.config.get( 'wgPageName' ).replace( /_/g, ' ' );
+ var link = mw.html.element(
+ 'a', {
+ 'href': mw.util.wikiGetlink( mw.config.get( 'wgPageName' ) ),
+ 'title': cleanTitle
+ }, cleanTitle
+ );
+ var msg = mw.msg( 'watcherrortext', link );
+
+ // Report to user about the error
+ mw.util.jsMessage( msg, 'watch' );
+};
+
+/**
+ * Process the result of the API watch action.
+ *
+ * @param response Data object from API request.
+ * @param $link jQuery object of the watch link.
+ * @return Boolean true on success, false otherwise.
+ */
+var processResult = function( response, $link ) {
+
+ if ( ( 'error' in response ) || !response.watch ) {
+ errorHandler( $link );
+ return false;
+ }
+
+ var watchResponse = response.watch;
+
+ // To ensure we set the same status for all watch links with the
+ // same target we trigger a custom event on *all* watch links.
+ if ( watchResponse.watched !== undefined ) {
+ $links.trigger( 'mw-ajaxwatch', [watchResponse.title, 'watch', $link] );
+ } else if ( watchResponse.unwatched !== undefined ) {
+ $links.trigger( 'mw-ajaxwatch', [watchResponse.title, 'unwatch', $link] );
+ } else {
+ // Either we got an error code or it just plain broke.
+ window.location.href = $link[0].href;
+ return false;
+ }
+
+ mw.util.jsMessage( watchResponse.message, 'watch' );
+
+ // Bug 12395 - update the watch checkbox on edit pages when the
+ // page is watched or unwatched via the tab.
+ if ( watchResponse.watched !== undefined ) {
+ $( '#wpWatchthis' ).attr( 'checked', 'checked' );
+ } else {
+ $( '#wpWatchthis' ).removeAttr( 'checked' );
+ }
+ return true;
+};
+
+$( document ).ready( function() {
+ $links = $( '.mw-watchlink a, a.mw-watchlink' );
+ // BC with older skins
+ $links = $links
+ .add( '#ca-watch a, #ca-unwatch a, a#mw-unwatch-link1, ' +
+ 'a#mw-unwatch-link2, a#mw-watch-link2, a#mw-watch-link1' );
+ // allowing people to add inline animated links is a little scary
+ $links = $links.filter( ':not( #bodyContent *, #content * )' );
+
+ $links.each( function() {
+ var $link = $( this );
+ var link = this;
+ $link
+ .data( 'icon', $link.closest( 'li' ).hasClass( 'icon' ) )
+ .data( 'action', mw.util.getParamValue( 'action', link.href ) == 'unwatch' ? 'unwatch' : 'watch' );
+ var title = mw.util.getParamValue( 'title', link.href );
+ $link.data( 'target', title.replace( /_/g, ' ' ) );
+ });
+
+ $links.click( function( event ) {
+ var $link = $( this );
+
+ if ( !mw.config.get( 'wgEnableWriteAPI' ) ) {
+ // Lazy initialization so we don't toss up
+ // ActiveX warnings on initial page load
+ // for IE 6 users with security settings.
+ $links.unbind( 'click' );
+ return true;
+ }
+
+ setLinkText( $link, $link.data( 'action' ) + 'ing' );
+
+ var reqData = {
+ 'action': 'watch',
+ 'format': 'json',
+ 'title': $link.data( 'target' ),
+ 'token': mw.user.tokens.get( 'watchToken' ),
+ // API return contains a localized data.watch.message string.
+ 'uselang': mw.config.get( 'wgUserLanguage' )
+ };
+
+ if ( $link.data( 'action' ) == 'unwatch' ) {
+ reqData.unwatch = '';
+ }
+
+ $.ajax({
+ url: mw.util.wikiScript( 'api' ),
+ dataType: 'json',
+ type: 'POST',
+ data: reqData,
+ success: function( data, textStatus, xhr ) {
+ processResult( data, $link );
+ },
+ error: function(){
+ processResult( {}, $link );
+ }
+ });
+
+ return false;
+ });
+
+ // When a request returns, a custom event 'mw-ajaxwatch' is triggered
+ // on *all* watch links, so they can be updated if necessary
+ $links.bind( 'mw-ajaxwatch', function( event, target, action, $link ) {
+ var foo = $link.data( 'target' );
+ if ( $link.data( 'target' ) == target ) {
+ var otheraction = action == 'watch'
+ ? 'unwatch'
+ : 'watch';
+
+ $link.data( 'action', otheraction );
+ setLinkText( $link, otheraction );
+ $link.attr( 'href',
+ mw.config.get( 'wgScript' )
+ + '?title=' + mw.util.wikiUrlencode( mw.config.get( 'wgPageName' ) )
+ + '&action=' + otheraction
+ );
+ if ( $link.closest( 'li' ).attr( 'id' ) == 'ca-' + action ) {
+ $link.closest( 'li' ).attr( 'id', 'ca-' + otheraction );
+ // update the link text with the new message
+ $link.text( mw.msg( otheraction ) );
+ }
+ }
+
+ return false;
+ });
+
+});
+
+})( jQuery );
diff --git a/resources/mediawiki.language/languages/nl.js b/resources/mediawiki.language/languages/nl.js
new file mode 100644
index 00000000..a2b22f4b
--- /dev/null
+++ b/resources/mediawiki.language/languages/nl.js
@@ -0,0 +1,8 @@
+/**
+ * Dutch (Nederlands) language functions
+ */
+
+mediaWiki.language.digitTransformTable = {
+ '.' : ',',
+ ',' : '.'
+};
diff --git a/resources/mediawiki.language/languages/pt-br.js b/resources/mediawiki.language/languages/pt-br.js
index eda10d2e..2457e247 100644
--- a/resources/mediawiki.language/languages/pt-br.js
+++ b/resources/mediawiki.language/languages/pt-br.js
@@ -2,7 +2,7 @@
* Brazilian Portugese (Portuguêsi do Brasil) language functions
*/
-mediaWiki.language.convertPlural = function( count, forms ) {
- forms = mediaWiki.language.preConvertPlural( forms, 2 );
- return ( count <= 1 ) ? forms[0] : forms[1];
+mediaWiki.language.digitTransformTable = {
+ '.' : ',',
+ ',' : ' '
};
diff --git a/resources/mediawiki.language/languages/pt.js b/resources/mediawiki.language/languages/pt.js
new file mode 100644
index 00000000..1b8fc72f
--- /dev/null
+++ b/resources/mediawiki.language/languages/pt.js
@@ -0,0 +1,8 @@
+/**
+ * Portugese language functions
+ */
+
+mediaWiki.language.digitTransformTable = {
+ '.' : ',',
+ ',' : ' '
+};
diff --git a/resources/mediawiki.language/mediawiki.language.js b/resources/mediawiki.language/mediawiki.language.js
index f199101b..fa7aa8d5 100644
--- a/resources/mediawiki.language/mediawiki.language.js
+++ b/resources/mediawiki.language/mediawiki.language.js
@@ -28,7 +28,7 @@ mw.language = {
// Restore the count into a Number ( if it got converted earlier )
var count = mw.language.convertNumber( template.title, true );
// Do convertPlural call
- return mw.language.convertPlural( parseInt( count ), template.parameters );
+ return mw.language.convertPlural( parseInt( count, 10 ), template.parameters );
}
// Could not process plural return first form or nothing
if ( template.parameters[0] ) {
@@ -47,7 +47,7 @@ mw.language = {
if ( !forms || forms.length == 0 ) {
return '';
}
- return ( parseInt( count ) == 1 ) ? forms[0] : forms[1];
+ return ( parseInt( count, 10 ) == 1 ) ? forms[0] : forms[1];
},
/**
* Pads an array to a specific length by copying the last one element.
@@ -65,19 +65,19 @@ mw.language = {
/**
* Converts a number using digitTransformTable.
*
- * @param {number} number Value to be converted
+ * @param {num} number Value to be converted
* @param {boolean} integer Convert the return value to an integer
*/
- 'convertNumber': function( number, integer ) {
+ 'convertNumber': function( num, integer ) {
if ( !mw.language.digitTransformTable ) {
- return number;
+ return num;
}
// Set the target Transform table:
var transformTable = mw.language.digitTransformTable;
// Check if the "restore" to Latin number flag is set:
if ( integer ) {
- if ( parseInt( number ) == number ) {
- return number;
+ if ( parseInt( num, 10 ) == num ) {
+ return num;
}
var tmp = [];
for ( var i in transformTable ) {
@@ -85,7 +85,7 @@ mw.language = {
}
transformTable = tmp;
}
- var numberString = '' + number;
+ var numberString = '' + num;
var convertedNumber = '';
for ( var i = 0; i < numberString.length; i++ ) {
if ( transformTable[ numberString[i] ] ) {
@@ -94,9 +94,9 @@ mw.language = {
convertedNumber += numberString[i];
}
}
- return integer ? parseInt( convertedNumber ) : convertedNumber;
+ return integer ? parseInt( convertedNumber, 10 ) : convertedNumber;
},
// Digit Transform Table, populated by language classes where applicable
'digitTransformTable': null
};
-} )( jQuery, mediaWiki ); \ No newline at end of file
+} )( jQuery, mediaWiki );
diff --git a/resources/mediawiki.libs/mediawiki.libs.jpegmeta.js b/resources/mediawiki.libs/mediawiki.libs.jpegmeta.js
new file mode 100644
index 00000000..af49889a
--- /dev/null
+++ b/resources/mediawiki.libs/mediawiki.libs.jpegmeta.js
@@ -0,0 +1,731 @@
+/* This is JsJpegMeta 1.0, ported to MediaWiki ResourceLoader by Bryan Tong Minh */
+/* The following lines where changed with respect to the original: 54, 625-627 */
+
+(function( $ ) {
+
+ /* JsJpegMeta starts here */
+
+ /*
+ Copyright (c) 2009 Ben Leslie
+
+ Permission is hereby granted, free of charge, to any person obtaining a copy
+ of this software and associated documentation files (the "Software"), to deal
+ in the Software without restriction, including without limitation the rights
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the Software is
+ furnished to do so, subject to the following conditions:
+
+ The above copyright notice and this permission notice shall be included in
+ all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
+ THE SOFTWARE.
+ */
+
+ /*
+ This JavaScript library is used to parse meta-data from files
+ with mime-type image/jpeg.
+
+ Include it with something like:
+
+ <script type="text/javascript" src="jpegmeta.js"></script>
+
+ This adds a single 'module' object called 'JpegMeta' to the global
+ namespace.
+
+ Public Functions
+ ----------------
+ JpegMeta.parseNum - parse unsigned integers from binary data
+ JpegMeta.parseSnum - parse signed integers from binary data
+
+ Public Classes
+ --------------
+ JpegMeta.Rational - A rational number class
+ JpegMeta.JfifSegment
+ JpegMeta.ExifSegment
+ JpegMeta.JpegFile - Primary class for Javascript parsing
+ */
+
+ var JpegMeta = {};
+ this.JpegMeta = JpegMeta; // I have no clue why I need this magic... -- Bryan
+
+ /*
+ parse an unsigned number of size bytes at offset in some binary string data.
+ If endian
+ is "<" parse the data as little endian, if endian
+ is ">" parse as big-endian.
+ */
+ JpegMeta.parseNum = function parseNum(endian, data, offset, size) {
+ var i;
+ var ret;
+ var big_endian = (endian === ">");
+ if (offset === undefined) offset = 0;
+ if (size === undefined) size = data.length - offset;
+ for (big_endian ? i = offset : i = offset + size - 1;
+ big_endian ? i < offset + size : i >= offset;
+ big_endian ? i++ : i--) {
+ ret <<= 8;
+ ret += data.charCodeAt(i);
+ }
+ return ret;
+ };
+
+ /*
+ parse an signed number of size bytes at offset in some binary string data.
+ If endian
+ is "<" parse the data as little endian, if endian
+ is ">" parse as big-endian.
+ */
+ JpegMeta.parseSnum = function parseSnum(endian, data, offset, size) {
+ var i;
+ var ret;
+ var neg;
+ var big_endian = (endian === ">");
+ if (offset === undefined) offset = 0;
+ if (size === undefined) size = data.length - offset;
+ for (big_endian ? i = offset : i = offset + size - 1;
+ big_endian ? i < offset + size : i >= offset;
+ big_endian ? i++ : i--) {
+ if (neg === undefined) {
+ /* Negative if top bit is set */
+ neg = (data.charCodeAt(i) & 0x80) === 0x80;
+ }
+ ret <<= 8;
+ /* If it is negative we invert the bits */
+ ret += neg ? ~data.charCodeAt(i) & 0xff: data.charCodeAt(i);
+ }
+ if (neg) {
+ /* If it is negative we do two's complement */
+ ret += 1;
+ ret *= -1;
+ }
+ return ret;
+ };
+
+ /* Rational number class */
+ JpegMeta.Rational = function Rational(num, den)
+ {
+ this.num = num;
+ this.den = den || 1;
+ return this;
+ };
+
+ /* Rational number methods */
+ JpegMeta.Rational.prototype.toString = function toString() {
+ if (this.num === 0) {
+ return "" + this.num;
+ }
+ if (this.den === 1) {
+ return "" + this.num;
+ }
+ if (this.num === 1) {
+ return this.num + " / " + this.den;
+ }
+ return this.num / this.den; // + "/" + this.den;
+ };
+
+ JpegMeta.Rational.prototype.asFloat = function asFloat() {
+ return this.num / this.den;
+ };
+
+ /* MetaGroup class */
+ JpegMeta.MetaGroup = function MetaGroup(fieldName, description) {
+ this.fieldName = fieldName;
+ this.description = description;
+ this.metaProps = {};
+ return this;
+ };
+
+ JpegMeta.MetaGroup.prototype._addProperty = function _addProperty(fieldName, description, value) {
+ var property = new JpegMeta.MetaProp(fieldName, description, value);
+ this[property.fieldName] = property;
+ this.metaProps[property.fieldName] = property;
+ };
+
+ JpegMeta.MetaGroup.prototype.toString = function toString() {
+ return "[MetaGroup " + this.description + "]";
+ };
+
+ /* MetaProp class */
+ JpegMeta.MetaProp = function MetaProp(fieldName, description, value) {
+ this.fieldName = fieldName;
+ this.description = description;
+ this.value = value;
+ return this;
+ };
+
+ JpegMeta.MetaProp.prototype.toString = function toString() {
+ return "" + this.value;
+ };
+
+ /* JpegFile class */
+ JpegMeta.JpegFile = function JpegFile(binary_data, filename) {
+ /* Change this to EOI if we want to parse. */
+ var break_segment = this._SOS;
+
+ this.metaGroups = {};
+ this._binary_data = binary_data;
+ this.filename = filename;
+
+ /* Go through and parse. */
+ var pos = 0;
+ var pos_start_of_segment = 0;
+ var delim;
+ var mark;
+ var _mark;
+ var segsize;
+ var headersize;
+ var mark_code;
+ var mark_fn;
+
+ /* Check to see if this looks like a JPEG file */
+ if (this._binary_data.slice(0, 2) !== this._SOI_MARKER) {
+ throw new Error("Doesn't look like a JPEG file. First two bytes are " +
+ this._binary_data.charCodeAt(0) + "," +
+ this._binary_data.charCodeAt(1) + ".");
+ }
+
+ pos += 2;
+
+ while (pos < this._binary_data.length) {
+ delim = this._binary_data.charCodeAt(pos++);
+ mark = this._binary_data.charCodeAt(pos++);
+
+ pos_start_of_segment = pos;
+
+ if (delim != this._DELIM) {
+ break;
+ }
+
+ if (mark === break_segment) {
+ break;
+ }
+
+ headersize = JpegMeta.parseNum(">", this._binary_data, pos, 2);
+
+ /* Find the end */
+ pos += headersize;
+ while (pos < this._binary_data.length) {
+ delim = this._binary_data.charCodeAt(pos++);
+ if (delim == this._DELIM) {
+ _mark = this._binary_data.charCodeAt(pos++);
+ if (_mark != 0x0) {
+ pos -= 2;
+ break;
+ }
+ }
+ }
+
+ segsize = pos - pos_start_of_segment;
+
+ if (this._markers[mark]) {
+ mark_code = this._markers[mark][0];
+ mark_fn = this._markers[mark][1];
+ } else {
+ mark_code = "UNKN";
+ mark_fn = undefined;
+ }
+
+ if (mark_fn) {
+ this[mark_fn](mark, pos_start_of_segment + 2);
+ }
+
+ }
+
+ if (this.general === undefined) {
+ throw Error("Invalid JPEG file.");
+ }
+
+ return this;
+ };
+
+ this.JpegMeta.JpegFile.prototype.toString = function () {
+ return "[JpegFile " + this.filename + " " +
+ this.general.type + " " +
+ this.general.pixelWidth + "x" +
+ this.general.pixelHeight +
+ " Depth: " + this.general.depth + "]";
+ };
+
+ /* Some useful constants */
+ this.JpegMeta.JpegFile.prototype._SOI_MARKER = '\xff\xd8';
+ this.JpegMeta.JpegFile.prototype._DELIM = 0xff;
+ this.JpegMeta.JpegFile.prototype._EOI = 0xd9;
+ this.JpegMeta.JpegFile.prototype._SOS = 0xda;
+
+ this.JpegMeta.JpegFile.prototype._sofHandler = function _sofHandler (mark, pos) {
+ if (this.general !== undefined) {
+ throw Error("Unexpected multiple-frame image");
+ }
+
+ this._addMetaGroup("general", "General");
+ this.general._addProperty("depth", "Depth", JpegMeta.parseNum(">", this._binary_data, pos, 1));
+ this.general._addProperty("pixelHeight", "Pixel Height", JpegMeta.parseNum(">", this._binary_data, pos + 1, 2));
+ this.general._addProperty("pixelWidth", "Pixel Width",JpegMeta.parseNum(">", this._binary_data, pos + 3, 2));
+ this.general._addProperty("type", "Type", this._markers[mark][2]);
+ };
+
+ /* JFIF idents */
+ this.JpegMeta.JpegFile.prototype._JFIF_IDENT = "JFIF\x00";
+ this.JpegMeta.JpegFile.prototype._JFXX_IDENT = "JFXX\x00";
+
+ /* EXIF idents */
+ this.JpegMeta.JpegFile.prototype._EXIF_IDENT = "Exif\x00";
+
+ /* TIFF types */
+ this.JpegMeta.JpegFile.prototype._types = {
+ /* The format is identifier : ["type name", type_size_in_bytes ] */
+ 1 : ["BYTE", 1],
+ 2 : ["ASCII", 1],
+ 3 : ["SHORT", 2],
+ 4 : ["LONG", 4],
+ 5 : ["RATIONAL", 8],
+ 6 : ["SBYTE", 1],
+ 7 : ["UNDEFINED", 1],
+ 8 : ["SSHORT", 2],
+ 9 : ["SLONG", 4],
+ 10 : ["SRATIONAL", 8],
+ 11 : ["FLOAT", 4],
+ 12 : ["DOUBLE", 8]
+ };
+
+ this.JpegMeta.JpegFile.prototype._tifftags = {
+ /* A. Tags relating to image data structure */
+ 256 : ["Image width", "ImageWidth"],
+ 257 : ["Image height", "ImageLength"],
+ 258 : ["Number of bits per component", "BitsPerSample"],
+ 259 : ["Compression scheme", "Compression",
+ {1 : "uncompressed", 6 : "JPEG compression" }],
+ 262 : ["Pixel composition", "PhotmetricInerpretation",
+ {2 : "RGB", 6 : "YCbCr"}],
+ 274 : ["Orientation of image", "Orientation",
+ /* FIXME: Check the mirror-image / reverse encoding and rotation */
+ {1 : "Normal", 2 : "Reverse?",
+ 3 : "Upside-down", 4 : "Upside-down Reverse",
+ 5 : "90 degree CW", 6 : "90 degree CW reverse",
+ 7 : "90 degree CCW", 8 : "90 degree CCW reverse"}],
+ 277 : ["Number of components", "SamplesPerPixel"],
+ 284 : ["Image data arrangement", "PlanarConfiguration",
+ {1 : "chunky format", 2 : "planar format"}],
+ 530 : ["Subsampling ratio of Y to C", "YCbCrSubSampling"],
+ 531 : ["Y and C positioning", "YCbCrPositioning",
+ {1 : "centered", 2 : "co-sited"}],
+ 282 : ["X Resolution", "XResolution"],
+ 283 : ["Y Resolution", "YResolution"],
+ 296 : ["Resolution Unit", "ResolutionUnit",
+ {2 : "inches", 3 : "centimeters"}],
+ /* B. Tags realting to recording offset */
+ 273 : ["Image data location", "StripOffsets"],
+ 278 : ["Number of rows per strip", "RowsPerStrip"],
+ 279 : ["Bytes per compressed strip", "StripByteCounts"],
+ 513 : ["Offset to JPEG SOI", "JPEGInterchangeFormat"],
+ 514 : ["Bytes of JPEG Data", "JPEGInterchangeFormatLength"],
+ /* C. Tags relating to image data characteristics */
+ 301 : ["Transfer function", "TransferFunction"],
+ 318 : ["White point chromaticity", "WhitePoint"],
+ 319 : ["Chromaticities of primaries", "PrimaryChromaticities"],
+ 529 : ["Color space transformation matrix coefficients", "YCbCrCoefficients"],
+ 532 : ["Pair of black and white reference values", "ReferenceBlackWhite"],
+ /* D. Other tags */
+ 306 : ["Date and time", "DateTime"],
+ 270 : ["Image title", "ImageDescription"],
+ 271 : ["Make", "Make"],
+ 272 : ["Model", "Model"],
+ 305 : ["Software", "Software"],
+ 315 : ["Person who created the image", "Artist"],
+ 316 : ["Host Computer", "HostComputer"],
+ 33432 : ["Copyright holder", "Copyright"],
+
+ 34665 : ["Exif tag", "ExifIfdPointer"],
+ 34853 : ["GPS tag", "GPSInfoIfdPointer"]
+ };
+
+ this.JpegMeta.JpegFile.prototype._exiftags = {
+ /* Tag Support Levels (2) - 0th IFX Exif Private Tags */
+ /* A. Tags Relating to Version */
+ 36864 : ["Exif Version", "ExifVersion"],
+ 40960 : ["FlashPix Version", "FlashpixVersion"],
+
+ /* B. Tag Relating to Image Data Characteristics */
+ 40961 : ["Color Space", "ColorSpace"],
+
+ /* C. Tags Relating to Image Configuration */
+ 37121 : ["Meaning of each component", "ComponentsConfiguration"],
+ 37122 : ["Compressed Bits Per Pixel", "CompressedBitsPerPixel"],
+ 40962 : ["Pixel X Dimension", "PixelXDimension"],
+ 40963 : ["Pixel Y Dimension", "PixelYDimension"],
+
+ /* D. Tags Relating to User Information */
+ 37500 : ["Manufacturer notes", "MakerNote"],
+ 37510 : ["User comments", "UserComment"],
+
+ /* E. Tag Relating to Related File Information */
+ 40964 : ["Related audio file", "RelatedSoundFile"],
+
+ /* F. Tags Relating to Date and Time */
+ 36867 : ["Date Time Original", "DateTimeOriginal"],
+ 36868 : ["Date Time Digitized", "DateTimeDigitized"],
+ 37520 : ["DateTime subseconds", "SubSecTime"],
+ 37521 : ["DateTimeOriginal subseconds", "SubSecTimeOriginal"],
+ 37522 : ["DateTimeDigitized subseconds", "SubSecTimeDigitized"],
+
+ /* G. Tags Relating to Picture-Taking Conditions */
+ 33434 : ["Exposure time", "ExposureTime"],
+ 33437 : ["FNumber", "FNumber"],
+ 34850 : ["Exposure program", "ExposureProgram"],
+ 34852 : ["Spectral sensitivity", "SpectralSensitivity"],
+ 34855 : ["ISO Speed Ratings", "ISOSpeedRatings"],
+ 34856 : ["Optoelectric coefficient", "OECF"],
+ 37377 : ["Shutter Speed", "ShutterSpeedValue"],
+ 37378 : ["Aperture Value", "ApertureValue"],
+ 37379 : ["Brightness", "BrightnessValue"],
+ 37380 : ["Exposure Bias Value", "ExposureBiasValue"],
+ 37381 : ["Max Aperture Value", "MaxApertureValue"],
+ 37382 : ["Subject Distance", "SubjectDistance"],
+ 37383 : ["Metering Mode", "MeteringMode"],
+ 37384 : ["Light Source", "LightSource"],
+ 37385 : ["Flash", "Flash"],
+ 37386 : ["Focal Length", "FocalLength"],
+ 37396 : ["Subject Area", "SubjectArea"],
+ 41483 : ["Flash Energy", "FlashEnergy"],
+ 41484 : ["Spatial Frequency Response", "SpatialFrequencyResponse"],
+ 41486 : ["Focal Plane X Resolution", "FocalPlaneXResolution"],
+ 41487 : ["Focal Plane Y Resolution", "FocalPlaneYResolution"],
+ 41488 : ["Focal Plane Resolution Unit", "FocalPlaneResolutionUnit"],
+ 41492 : ["Subject Location", "SubjectLocation"],
+ 41493 : ["Exposure Index", "ExposureIndex"],
+ 41495 : ["Sensing Method", "SensingMethod"],
+ 41728 : ["File Source", "FileSource"],
+ 41729 : ["Scene Type", "SceneType"],
+ 41730 : ["CFA Pattern", "CFAPattern"],
+ 41985 : ["Custom Rendered", "CustomRendered"],
+ 41986 : ["Exposure Mode", "Exposure Mode"],
+ 41987 : ["White Balance", "WhiteBalance"],
+ 41988 : ["Digital Zoom Ratio", "DigitalZoomRatio"],
+ 41990 : ["Scene Capture Type", "SceneCaptureType"],
+ 41991 : ["Gain Control", "GainControl"],
+ 41992 : ["Contrast", "Contrast"],
+ 41993 : ["Saturation", "Saturation"],
+ 41994 : ["Sharpness", "Sharpness"],
+ 41995 : ["Device settings description", "DeviceSettingDescription"],
+ 41996 : ["Subject distance range", "SubjectDistanceRange"],
+
+ /* H. Other Tags */
+ 42016 : ["Unique image ID", "ImageUniqueID"],
+
+ 40965 : ["Interoperability tag", "InteroperabilityIFDPointer"]
+ };
+
+ this.JpegMeta.JpegFile.prototype._gpstags = {
+ /* A. Tags Relating to GPS */
+ 0 : ["GPS tag version", "GPSVersionID"],
+ 1 : ["North or South Latitude", "GPSLatitudeRef"],
+ 2 : ["Latitude", "GPSLatitude"],
+ 3 : ["East or West Longitude", "GPSLongitudeRef"],
+ 4 : ["Longitude", "GPSLongitude"],
+ 5 : ["Altitude reference", "GPSAltitudeRef"],
+ 6 : ["Altitude", "GPSAltitude"],
+ 7 : ["GPS time (atomic clock)", "GPSTimeStamp"],
+ 8 : ["GPS satellites usedd for measurement", "GPSSatellites"],
+ 9 : ["GPS receiver status", "GPSStatus"],
+ 10 : ["GPS mesaurement mode", "GPSMeasureMode"],
+ 11 : ["Measurement precision", "GPSDOP"],
+ 12 : ["Speed unit", "GPSSpeedRef"],
+ 13 : ["Speed of GPS receiver", "GPSSpeed"],
+ 14 : ["Reference for direction of movement", "GPSTrackRef"],
+ 15 : ["Direction of movement", "GPSTrack"],
+ 16 : ["Reference for direction of image", "GPSImgDirectionRef"],
+ 17 : ["Direction of image", "GPSImgDirection"],
+ 18 : ["Geodetic survey data used", "GPSMapDatum"],
+ 19 : ["Reference for latitude of destination", "GPSDestLatitudeRef"],
+ 20 : ["Latitude of destination", "GPSDestLatitude"],
+ 21 : ["Reference for longitude of destination", "GPSDestLongitudeRef"],
+ 22 : ["Longitude of destination", "GPSDestLongitude"],
+ 23 : ["Reference for bearing of destination", "GPSDestBearingRef"],
+ 24 : ["Bearing of destination", "GPSDestBearing"],
+ 25 : ["Reference for distance to destination", "GPSDestDistanceRef"],
+ 26 : ["Distance to destination", "GPSDestDistance"],
+ 27 : ["Name of GPS processing method", "GPSProcessingMethod"],
+ 28 : ["Name of GPS area", "GPSAreaInformation"],
+ 29 : ["GPS Date", "GPSDateStamp"],
+ 30 : ["GPS differential correction", "GPSDifferential"]
+ };
+
+ this.JpegMeta.JpegFile.prototype._markers = {
+ /* Start Of Frame markers, non-differential, Huffman coding */
+ 0xc0: ["SOF0", "_sofHandler", "Baseline DCT"],
+ 0xc1: ["SOF1", "_sofHandler", "Extended sequential DCT"],
+ 0xc2: ["SOF2", "_sofHandler", "Progressive DCT"],
+ 0xc3: ["SOF3", "_sofHandler", "Lossless (sequential)"],
+
+ /* Start Of Frame markers, differential, Huffman coding */
+ 0xc5: ["SOF5", "_sofHandler", "Differential sequential DCT"],
+ 0xc6: ["SOF6", "_sofHandler", "Differential progressive DCT"],
+ 0xc7: ["SOF7", "_sofHandler", "Differential lossless (sequential)"],
+
+ /* Start Of Frame markers, non-differential, arithmetic coding */
+ 0xc8: ["JPG", null, "Reserved for JPEG extensions"],
+ 0xc9: ["SOF9", "_sofHandler", "Extended sequential DCT"],
+ 0xca: ["SOF10", "_sofHandler", "Progressive DCT"],
+ 0xcb: ["SOF11", "_sofHandler", "Lossless (sequential)"],
+
+ /* Start Of Frame markers, differential, arithmetic coding */
+ 0xcd: ["SOF13", "_sofHandler", "Differential sequential DCT"],
+ 0xce: ["SOF14", "_sofHandler", "Differential progressive DCT"],
+ 0xcf: ["SOF15", "_sofHandler", "Differential lossless (sequential)"],
+
+ /* Huffman table specification */
+ 0xc4: ["DHT", null, "Define Huffman table(s)"],
+ 0xcc: ["DAC", null, "Define arithmetic coding conditioning(s)"],
+
+ /* Restart interval termination" */
+ 0xd0: ["RST0", null, "Restart with modulo 8 count “0â€"],
+ 0xd1: ["RST1", null, "Restart with modulo 8 count “1â€"],
+ 0xd2: ["RST2", null, "Restart with modulo 8 count “2â€"],
+ 0xd3: ["RST3", null, "Restart with modulo 8 count “3â€"],
+ 0xd4: ["RST4", null, "Restart with modulo 8 count “4â€"],
+ 0xd5: ["RST5", null, "Restart with modulo 8 count “5â€"],
+ 0xd6: ["RST6", null, "Restart with modulo 8 count “6â€"],
+ 0xd7: ["RST7", null, "Restart with modulo 8 count “7â€"],
+
+ /* Other markers */
+ 0xd8: ["SOI", null, "Start of image"],
+ 0xd9: ["EOI", null, "End of image"],
+ 0xda: ["SOS", null, "Start of scan"],
+ 0xdb: ["DQT", null, "Define quantization table(s)"],
+ 0xdc: ["DNL", null, "Define number of lines"],
+ 0xdd: ["DRI", null, "Define restart interval"],
+ 0xde: ["DHP", null, "Define hierarchical progression"],
+ 0xdf: ["EXP", null, "Expand reference component(s)"],
+ 0xe0: ["APP0", "_app0Handler", "Reserved for application segments"],
+ 0xe1: ["APP1", "_app1Handler"],
+ 0xe2: ["APP2", null],
+ 0xe3: ["APP3", null],
+ 0xe4: ["APP4", null],
+ 0xe5: ["APP5", null],
+ 0xe6: ["APP6", null],
+ 0xe7: ["APP7", null],
+ 0xe8: ["APP8", null],
+ 0xe9: ["APP9", null],
+ 0xea: ["APP10", null],
+ 0xeb: ["APP11", null],
+ 0xec: ["APP12", null],
+ 0xed: ["APP13", null],
+ 0xee: ["APP14", null],
+ 0xef: ["APP15", null],
+ 0xf0: ["JPG0", null], /* Reserved for JPEG extensions */
+ 0xf1: ["JPG1", null],
+ 0xf2: ["JPG2", null],
+ 0xf3: ["JPG3", null],
+ 0xf4: ["JPG4", null],
+ 0xf5: ["JPG5", null],
+ 0xf6: ["JPG6", null],
+ 0xf7: ["JPG7", null],
+ 0xf8: ["JPG8", null],
+ 0xf9: ["JPG9", null],
+ 0xfa: ["JPG10", null],
+ 0xfb: ["JPG11", null],
+ 0xfc: ["JPG12", null],
+ 0xfd: ["JPG13", null],
+ 0xfe: ["COM", null], /* Comment */
+
+ /* Reserved markers */
+ 0x01: ["JPG13", null] /* For temporary private use in arithmetic coding */
+ /* 02 -> bf are reserverd */
+ };
+
+ /* Private methods */
+ this.JpegMeta.JpegFile.prototype._addMetaGroup = function _addMetaGroup(name, description) {
+ var group = new JpegMeta.MetaGroup(name, description);
+ this[group.fieldName] = group;
+ this.metaGroups[group.fieldName] = group;
+ return group;
+ };
+
+ this.JpegMeta.JpegFile.prototype._parseIfd = function _parseIfd(endian, _binary_data, base, ifd_offset, tags, name, description) {
+ var num_fields = JpegMeta.parseNum(endian, _binary_data, base + ifd_offset, 2);
+ /* Per tag variables */
+ var i, j;
+ var tag_base;
+ var tag_field;
+ var type, type_field, type_size;
+ var num_values;
+ var value_offset;
+ var value;
+ var _val;
+ var num;
+ var den;
+
+ var group;
+
+ group = this._addMetaGroup(name, description);
+
+ for (var i = 0; i < num_fields; i++) {
+ /* parse the field */
+ tag_base = base + ifd_offset + 2 + (i * 12);
+ tag_field = JpegMeta.parseNum(endian, _binary_data, tag_base, 2);
+ type_field = JpegMeta.parseNum(endian, _binary_data, tag_base + 2, 2);
+ num_values = JpegMeta.parseNum(endian, _binary_data, tag_base + 4, 4);
+ value_offset = JpegMeta.parseNum(endian, _binary_data, tag_base + 8, 4);
+ if (this._types[type_field] === undefined) {
+ continue;
+ }
+ type = this._types[type_field][0];
+ type_size = this._types[type_field][1];
+
+ if (type_size * num_values <= 4) {
+ /* Data is in-line */
+ value_offset = tag_base + 8;
+ } else {
+ value_offset = base + value_offset;
+ }
+
+ /* Read the value */
+ if (type == "UNDEFINED") {
+ value = _binary_data.slice(value_offset, value_offset + num_values);
+ } else if (type == "ASCII") {
+ value = _binary_data.slice(value_offset, value_offset + num_values);
+ value = value.split('\x00')[0];
+ /* strip trail nul */
+ } else {
+ value = new Array();
+ for (j = 0; j < num_values; j++, value_offset += type_size) {
+ if (type == "BYTE" || type == "SHORT" || type == "LONG") {
+ value.push(JpegMeta.parseNum(endian, _binary_data, value_offset, type_size));
+ }
+ if (type == "SBYTE" || type == "SSHORT" || type == "SLONG") {
+ value.push(JpegMeta.parseSnum(endian, _binary_data, value_offset, type_size));
+ }
+ if (type == "RATIONAL") {
+ num = JpegMeta.parseNum(endian, _binary_data, value_offset, 4);
+ den = JpegMeta.parseNum(endian, _binary_data, value_offset + 4, 4);
+ value.push(new JpegMeta.Rational(num, den));
+ }
+ if (type == "SRATIONAL") {
+ num = JpegMeta.parseSnum(endian, _binary_data, value_offset, 4);
+ den = JpegMeta.parseSnum(endian, _binary_data, value_offset + 4, 4);
+ value.push(new JpegMeta.Rational(num, den));
+ }
+ value.push();
+ }
+ if (num_values === 1) {
+ value = value[0];
+ }
+ }
+ if (tags[tag_field] !== undefined) {
+ group._addProperty(tags[tag_field][1], tags[tag_field][0], value);
+ }
+ }
+ };
+
+ this.JpegMeta.JpegFile.prototype._jfifHandler = function _jfifHandler(mark, pos) {
+ if (this.jfif !== undefined) {
+ throw Error("Multiple JFIF segments found");
+ }
+ this._addMetaGroup("jfif", "JFIF");
+ this.jfif._addProperty("version_major", "Version Major", this._binary_data.charCodeAt(pos + 5));
+ this.jfif._addProperty("version_minor", "Version Minor", this._binary_data.charCodeAt(pos + 6));
+ this.jfif._addProperty("version", "JFIF Version", this.jfif.version_major.value + "." + this.jfif.version_minor.value);
+ this.jfif._addProperty("units", "Density Unit", this._binary_data.charCodeAt(pos + 7));
+ this.jfif._addProperty("Xdensity", "X density", JpegMeta.parseNum(">", this._binary_data, pos + 8, 2));
+ this.jfif._addProperty("Ydensity", "Y Density", JpegMeta.parseNum(">", this._binary_data, pos + 10, 2));
+ this.jfif._addProperty("Xthumbnail", "X Thumbnail", JpegMeta.parseNum(">", this._binary_data, pos + 12, 1));
+ this.jfif._addProperty("Ythumbnail", "Y Thumbnail", JpegMeta.parseNum(">", this._binary_data, pos + 13, 1));
+ };
+
+ /* Handle app0 segments */
+ this.JpegMeta.JpegFile.prototype._app0Handler = function app0Handler(mark, pos) {
+ var ident = this._binary_data.slice(pos, pos + 5);
+ if (ident == this._JFIF_IDENT) {
+ this._jfifHandler(mark, pos);
+ } else if (ident == this._JFXX_IDENT) {
+ /* Don't handle JFXX Ident yet */
+ } else {
+ /* Don't know about other idents */
+ }
+ };
+
+ /* Handle app1 segments */
+ this.JpegMeta.JpegFile.prototype._app1Handler = function _app1Handler(mark, pos) {
+ var ident = this._binary_data.slice(pos, pos + 5);
+ if (ident == this._EXIF_IDENT) {
+ this._exifHandler(mark, pos + 6);
+ } else {
+ /* Don't know about other idents */
+ }
+ };
+
+ /* Handle exif segments */
+ JpegMeta.JpegFile.prototype._exifHandler = function _exifHandler(mark, pos) {
+ if (this.exif !== undefined) {
+ throw new Error("Multiple JFIF segments found");
+ }
+
+ /* Parse this TIFF header */
+ var endian;
+ var magic_field;
+ var ifd_offset;
+ var primary_ifd, exif_ifd, gps_ifd;
+ var endian_field = this._binary_data.slice(pos, pos + 2);
+
+ /* Trivia: This 'I' is for Intel, the 'M' is for Motorola */
+ if (endian_field === "II") {
+ endian = "<";
+ } else if (endian_field === "MM") {
+ endian = ">";
+ } else {
+ throw new Error("Malformed TIFF meta-data. Unknown endianess: " + endian_field);
+ }
+
+ magic_field = JpegMeta.parseNum(endian, this._binary_data, pos + 2, 2);
+
+ if (magic_field !== 42) {
+ throw new Error("Malformed TIFF meta-data. Bad magic: " + magic_field);
+ }
+
+ ifd_offset = JpegMeta.parseNum(endian, this._binary_data, pos + 4, 4);
+
+ /* Parse 0th IFD */
+ this._parseIfd(endian, this._binary_data, pos, ifd_offset, this._tifftags, "tiff", "TIFF");
+
+ if (this.tiff.ExifIfdPointer) {
+ this._parseIfd(endian, this._binary_data, pos, this.tiff.ExifIfdPointer.value, this._exiftags, "exif", "Exif");
+ }
+
+ if (this.tiff.GPSInfoIfdPointer) {
+ this._parseIfd(endian, this._binary_data, pos, this.tiff.GPSInfoIfdPointer.value, this._gpstags, "gps", "GPS");
+ if (this.gps.GPSLatitude) {
+ var latitude;
+ latitude = this.gps.GPSLatitude.value[0].asFloat() +
+ (1 / 60) * this.gps.GPSLatitude.value[1].asFloat() +
+ (1 / 3600) * this.gps.GPSLatitude.value[2].asFloat();
+ if (this.gps.GPSLatitudeRef.value === "S") {
+ latitude = -latitude;
+ }
+ this.gps._addProperty("latitude", "Dec. Latitude", latitude);
+ }
+ if (this.gps.GPSLongitude) {
+ var longitude;
+ longitude = this.gps.GPSLongitude.value[0].asFloat() +
+ (1 / 60) * this.gps.GPSLongitude.value[1].asFloat() +
+ (1 / 3600) * this.gps.GPSLongitude.value[2].asFloat();
+ if (this.gps.GPSLongitudeRef.value === "W") {
+ longitude = -longitude;
+ }
+ this.gps._addProperty("longitude", "Dec. Longitude", longitude);
+ }
+ }
+ };
+
+ /* JsJpegMeta ends here */
+
+ mw.libs.jpegmeta = function( fileReaderResult, fileName ) {
+ return new JpegMeta.JpegFile( fileReaderResult, fileName );
+ };
+
+} )( jQuery );
diff --git a/resources/mediawiki.page/images/AJAXCategorySprite.png b/resources/mediawiki.page/images/AJAXCategorySprite.png
new file mode 100644
index 00000000..d5f9cf48
--- /dev/null
+++ b/resources/mediawiki.page/images/AJAXCategorySprite.png
Binary files differ
diff --git a/resources/mediawiki.page/mediawiki.page.ajaxCategories.css b/resources/mediawiki.page/mediawiki.page.ajaxCategories.css
new file mode 100644
index 00000000..dd991aaf
--- /dev/null
+++ b/resources/mediawiki.page/mediawiki.page.ajaxCategories.css
@@ -0,0 +1,64 @@
+.mw-addcategory-prompt {
+ display: inline;
+}
+
+.mw-addcategory-prompt input {
+ margin-left: 0.5em;
+ margin-right: 0.5em;
+}
+
+.mw-remove-category {
+ padding: 2px 8px;
+ display:inline;
+}
+.mw-removed-category {
+ text-decoration: line-through;
+}
+#catlinks:hover .icon {
+ opacity: 1;
+}
+
+.mw-ajax-addcategory {
+ padding-left: 30px;
+ margin-right: 1em;
+ cursor: pointer;
+}
+#catlinks .icon {
+ cursor: pointer;
+ padding: 1px 8px;
+ margin: 0;
+ background: url('images/AJAXCategorySprite.png') 0 0 no-repeat;
+ opacity: 0.5;
+}
+#catlinks .icon-parent {
+ cursor: pointer;
+}
+#catlinks .icon-parent:hover .icon {
+ background-position-y: -16px;
+}
+#catlinks .no-text {
+}
+#catlinks .icon-close {
+ background-position: 0 0;
+}
+#catlinks .icon-edit {
+ background-position: -16px 0;
+}
+#catlinks .icon-tick {
+ background-position: -32px 0;
+}
+#catlinks .icon-add {
+ background-position: -64px 0;
+}
+#catlinks .icon-close:hover {
+ background-position: 0 -16px;
+}
+#catlinks .icon-edit:hover {
+ background-position: -16px -16px;
+}
+#catlinks .icon-tick:hover {
+ background-position: -32px -16px;
+}
+#catlinks .icon-add:hover {
+ background-position: -64px -16px;
+} \ No newline at end of file
diff --git a/resources/mediawiki.page/mediawiki.page.ready.js b/resources/mediawiki.page/mediawiki.page.ready.js
new file mode 100644
index 00000000..eba5db11
--- /dev/null
+++ b/resources/mediawiki.page/mediawiki.page.ready.js
@@ -0,0 +1,24 @@
+jQuery( document ).ready( function( $ ) {
+
+ /* Emulate placeholder if not supported by browser */
+ if ( !( 'placeholder' in document.createElement( 'input' ) ) ) {
+ $( 'input[placeholder]' ).placeholder();
+ }
+
+ /* Enable makeCollapse */
+ $( '.mw-collapsible' ).makeCollapsible();
+
+ /* Lazy load jquery.tablesorter */
+ if ( $( 'table.sortable' ).length ) {
+ mw.loader.using( 'jquery.tablesorter', function() {
+ $( 'table.sortable' ).tablesorter();
+ });
+ }
+
+ /* Enable CheckboxShiftClick */
+ $( 'input[type=checkbox]:not(.noshiftselect)' ).checkboxShiftClick();
+
+ /* Add accesskey hints to the tooltips */
+ mw.util.updateTooltipAccessKeys();
+
+} );
diff --git a/resources/mediawiki.page/mediawiki.page.startup.js b/resources/mediawiki.page/mediawiki.page.startup.js
new file mode 100644
index 00000000..8af2fad9
--- /dev/null
+++ b/resources/mediawiki.page/mediawiki.page.startup.js
@@ -0,0 +1,10 @@
+( function( $ ) {
+
+ /* Client profile classes for <html> */
+ /* Allows for easy hiding/showing of JS or no-JS-specific UI elements */
+
+ $( 'html' )
+ .addClass('client-js' )
+ .removeClass( 'client-nojs' );
+
+} )( jQuery );
diff --git a/resources/mediawiki.special/mediawiki.special.block.js b/resources/mediawiki.special/mediawiki.special.block.js
new file mode 100644
index 00000000..6f79929b
--- /dev/null
+++ b/resources/mediawiki.special/mediawiki.special.block.js
@@ -0,0 +1,46 @@
+/* JavaScript for Special:Block */
+
+jQuery( function( $ ) {
+
+ var DO_INSTANT = true,
+ $blockTarget = $( '#mw-bi-target' ),
+ $anonOnlyRow = $( '#mw-input-wpHardBlock' ).closest( 'tr' ),
+ $enableAutoblockRow = $( '#mw-input-wpAutoBlock' ).closest( 'tr' ),
+ $hideUser = $( '#mw-input-wpHideUser' ).closest( 'tr' ),
+ $watchUser = $( '#mw-input-wpWatch' ).closest( 'tr' );
+
+ var updateBlockOptions = function( instant ) {
+ if ( !$blockTarget.length ) {
+ return;
+ }
+
+ var blocktarget = $.trim( $blockTarget.val() );
+ var isEmpty = ( blocktarget === '' );
+ var isIp = mw.util.isIPv4Address( blocktarget, true ) || mw.util.isIPv6Address( blocktarget, true );
+ var isIpRange = isIp && blocktarget.match( /\/\d+$/ );
+
+ if ( isIp && !isEmpty ) {
+ $enableAutoblockRow.goOut( instant );
+ $hideUser.goOut( instant );
+ } else {
+ $enableAutoblockRow.goIn( instant );
+ $hideUser.goIn( instant );
+ }
+ if ( !isIp && !isEmpty ) {
+ $anonOnlyRow.goOut( instant );
+ } else {
+ $anonOnlyRow.goIn( instant );
+ }
+ if ( isIpRange && !isEmpty ) {
+ $watchUser.goOut( instant );
+ } else {
+ $watchUser.goIn( instant );
+ }
+ };
+
+ // Bind functions so they're checked whenever stuff changes
+ $blockTarget.keyup( updateBlockOptions );
+
+ // Call them now to set initial state (ie. Special:Block/Foobar?wpBlockExpiry=2+hours)
+ updateBlockOptions( DO_INSTANT );
+});
diff --git a/resources/mediawiki.special/mediawiki.special.changeslist.css b/resources/mediawiki.special/mediawiki.special.changeslist.css
new file mode 100644
index 00000000..cb4d2156
--- /dev/null
+++ b/resources/mediawiki.special/mediawiki.special.changeslist.css
@@ -0,0 +1,47 @@
+/**
+ * Styling for Special:Watchlist and Special:RecentChanges
+ */
+
+table.mw-enhanced-rc {
+ border: 0;
+ border-spacing: 0;
+}
+
+table.mw-enhanced-rc th, table.mw-enhanced-rc td {
+ padding: 0;
+ vertical-align: top;
+}
+
+td.mw-enhanced-rc {
+ white-space: nowrap;
+ font-family: monospace;
+}
+
+.mw-enhanced-rc-time {
+ font-family: monospace;
+}
+
+table.mw-enhanced-rc td.mw-enhanced-rc-nested {
+ padding-left: 1em;
+}
+
+/* Show/hide arrows in enhanced changeslist */
+.mw-enhanced-rc .collapsible-expander {
+ float: none;
+}
+
+/* If JS is disabled, the arrow is still needed
+ for spacing, but ideally shouldn't be shown */
+.mw-enhanced-rc .mw-rc-openarrow {
+ visibility: hidden;
+}
+
+.mw-enhanced-rc.mw-made-collapsible .mw-rc-openarrow,
+.mw-enhanced-rc .mw-rc-closearrow {
+ visibility: visible;
+ display: none;
+}
+.mw-enhanced-rc.mw-made-collapsible .mw-collapsible-toggle-collapsed .mw-rc-openarrow,
+.mw-enhanced-rc.mw-made-collapsible .mw-collapsible-toggle-expanded .mw-rc-closearrow {
+ display: inline;
+}
diff --git a/resources/mediawiki.special/mediawiki.special.css b/resources/mediawiki.special/mediawiki.special.css
new file mode 100644
index 00000000..3cd97397
--- /dev/null
+++ b/resources/mediawiki.special/mediawiki.special.css
@@ -0,0 +1,274 @@
+
+/**** Special:AllMessages ****/
+#mw-allmessagestable .allmessages-customised td.am_default {
+ background-color: #fcffc4;
+}
+
+#mw-allmessagestable tr.allmessages-customised:hover td.am_default {
+ background-color: #faff90;
+}
+
+#mw-allmessagestable td.am_actual {
+ background-color: #e2ffe2;
+}
+
+#mw-allmessagestable tr.allmessages-customised:hover + tr.allmessages-customised td.am_actual {
+ background-color: #b1ffb1;
+}
+
+/**** Special:Allpages ****/
+table.mw-allpages-table-form, table.mw-allpages-table-chunk {
+ width: 100%;
+}
+td.mw-allpages-alphaindexline {
+ text-align: right;
+}
+.mw-allpages-nav {
+ text-align: right;
+ margin-bottom: 1em;
+}
+table.mw-allpages-table-form tr {
+ vertical-align: top;
+}
+
+/**** Special:Block ****/
+tr.mw-block-hideuser {
+ font-weight: bold;
+}
+
+/**** Special:BlockList ****/
+table.mw-blocklist span.mw-usertoollinks,
+span.mw-blocklist-actions{
+ white-space: nowrap;
+ font-size: 90%;
+}
+
+/**** Special:Contributions ****/
+.mw-uctop {
+ font-weight: bold;
+}
+
+/**** Special:EmailUser ****/
+table.mw-emailuser-table {
+ width: 98%;
+}
+td#mw-emailuser-sender,
+td#mw-emailuser-recipient {
+ font-weight: bold;
+}
+
+/**** Special:ListGroupRights ****/
+table.mw-listgrouprights-table tr {
+ vertical-align: top;
+}
+.listgrouprights-revoked {
+ text-decoration: line-through;
+}
+
+/**** Special:Prefixindex ****/
+table#mw-prefixindex-list-table,
+table#mw-prefixindex-nav-table {
+ width: 98%;
+}
+td#mw-prefixindex-nav-form {
+ margin-bottom: 1em;
+ vertical-align: top;
+}
+.mw-prefixindex-nav {
+ text-align: right;
+}
+
+
+/**** Special:Search ****/
+.searchresults {
+}
+
+.searchresults p {
+ margin-left: 0.4em;
+ margin-top: 1em;
+ margin-bottom: 1.2em;
+}
+div.searchresult {
+ font-size: 95%;
+ width: 38em;
+}
+.mw-search-results {
+ margin-left: 0.4em;
+}
+.mw-search-results li {
+ padding-bottom: 1em;
+ list-style: none;
+ list-style-image: none;
+}
+.mw-search-results li a {
+ font-size: 108%;
+}
+.mw-search-result-data {
+ color: green;
+ font-size: 97%;
+}
+.mw-search-formheader {
+ background-color: #f3f3f3;
+ margin-top: 1em;
+ border: 1px solid silver;
+}
+.mw-search-formheader div.search-types {
+ float: left;
+ padding-left: 0.25em;
+}
+.mw-search-formheader div.search-types ul {
+ margin: 0 !important;
+ padding: 0 !important;
+ list-style: none !important;
+}
+.mw-search-formheader div.search-types ul li {
+ float: left;
+ margin: 0;
+ padding: 0;
+}
+.mw-search-formheader div.search-types ul li a {
+ display: block;
+ padding: 0.5em;
+}
+.mw-search-formheader div.search-types ul li.current a {
+ color: #333333;
+ cursor: default;
+}
+.mw-search-formheader div.search-types ul li.current a:hover {
+ text-decoration: none;
+}
+.mw-search-formheader div.results-info {
+ float: right;
+ padding: 0.5em;
+ padding-right: 0.75em;
+}
+.mw-search-formheader div.results-info ul {
+ margin: 0 !important;
+ padding: 0 !important;
+ list-style: none !important;
+}
+.mw-search-formheader div.results-info ul li {
+ float: right;
+ margin: 0;
+ padding: 0;
+}
+fieldset#mw-searchoptions {
+ margin: 0;
+ padding: 0.5em 0.75em 0.75em 0.75em !important;
+ border: none;
+ background-color: #f9f9f9;
+ border: 1px solid silver !important;
+ border-top-width: 0 !important;
+}
+fieldset#mw-searchoptions legend {
+ display: none;
+}
+fieldset#mw-searchoptions h4 {
+ padding: 0;
+ margin: 0;
+ float: left;
+}
+fieldset#mw-searchoptions div#mw-search-togglebox {
+ float: right;
+}
+fieldset#mw-searchoptions div#mw-search-togglebox label {
+ margin-right: 0.25em;
+}
+fieldset#mw-searchoptions div#mw-search-togglebox input {
+ margin-left: 0.25em;
+}
+fieldset#mw-searchoptions table {
+ float: left;
+ margin-right: 3em;
+}
+fieldset#mw-searchoptions table td {
+ padding-right: 1em;
+}
+fieldset#mw-searchoptions div.divider {
+ clear: both;
+ border-bottom: 1px solid #DDDDDD;
+ padding-top: 0.5em;
+ margin-bottom: 0.5em;
+}
+td#mw-search-menu {
+ padding-left:6em;
+ font-size:85%;
+}
+div#mw-search-interwiki {
+ float: right;
+ width: 18em;
+ border: 1px solid #AAAAAA;
+ margin-top: 2ex;
+}
+div#mw-search-interwiki li {
+ font-size: 95%;
+}
+.mw-search-interwiki-more {
+ float: right;
+ font-size: 90%;
+}
+div#mw-search-interwiki-caption {
+ text-align: center;
+ font-weight: bold;
+ font-size: 95%;
+}
+.mw-search-interwiki-project {
+ font-size: 97%;
+ text-align: left;
+ padding: 0.15em 0.15em 0.2em 0.2em;
+ background-color: #ececec;
+ border-top: 1px solid #BBBBBB;
+}
+span.searchalttitle {
+ font-size: 95%;
+}
+div.searchdidyoumean {
+ font-size: 127%;
+ margin-top: 0.8em;
+ /* Note that this color won't affect the link, as desired. */
+ color: #c00;
+}
+div.searchdidyoumean em {
+ font-weight: bold;
+}
+.searchmatch {
+ font-weight: bold;
+}
+/* Advanced PowerSearch box */
+td#mw-search-togglebox {
+ text-align: right;
+}
+table#mw-search-powertable {
+ width: 100%;
+}
+form#powersearch {
+ clear: both;
+}
+
+/**** Special:Specialpages ****/
+.mw-specialpagerestricted {
+ font-weight: bold;
+}
+
+.mw-specialpages-table {
+ margin-top: -1em;
+ margin-bottom: 1em;
+}
+
+.mw-specialpages-table td {
+ vertical-align: top;
+}
+
+/**** Special:Statistics ****/
+td.mw-statistics-numbers {
+ text-align: right;
+}
+
+/**** Special:UserRights ****/
+.mw-userrights-disabled {
+ color: #888;
+}
+table.mw-userrights-groups * td,
+table.mw-userrights-groups * th {
+ padding-right: 1.5em;
+}
diff --git a/resources/mediawiki.special/mediawiki.special.js b/resources/mediawiki.special/mediawiki.special.js
new file mode 100644
index 00000000..3526cef4
--- /dev/null
+++ b/resources/mediawiki.special/mediawiki.special.js
@@ -0,0 +1 @@
+mw.special = {};
diff --git a/resources/mediawiki.special/mediawiki.special.movePage.js b/resources/mediawiki.special/mediawiki.special.movePage.js
new file mode 100644
index 00000000..2f94cc06
--- /dev/null
+++ b/resources/mediawiki.special/mediawiki.special.movePage.js
@@ -0,0 +1,5 @@
+/* JavaScript for Special:MovePage */
+
+jQuery( function( $ ) {
+ $( '#wpReason' ).byteLimit();
+});
diff --git a/resources/mediawiki.special/mediawiki.special.preferences.js b/resources/mediawiki.special/mediawiki.special.preferences.js
index 1775bec4..2e07e7f1 100644
--- a/resources/mediawiki.special/mediawiki.special.preferences.js
+++ b/resources/mediawiki.special/mediawiki.special.preferences.js
@@ -2,44 +2,61 @@
* JavaScript for Special:Preferences
*/
( function( $, mw ) {
-
$( '#prefsubmit' ).attr( 'id', 'prefcontrol' );
-$( '#preferences' )
+var $preftoc = $('<ul id="preftoc"></ul>');
+var $preferences = $( '#preferences' )
.addClass( 'jsprefs' )
- .before( $( '<ul id="preftoc"></ul>' ) )
- .children( 'fieldset' )
- .hide()
- .addClass( 'prefsection' )
- .children( 'legend' )
- .addClass( 'mainLegend' )
- .each( function( i ) {
- $(this).parent().attr( 'id', 'prefsection-' + i );
- if ( i === 0 ) {
- $(this).parent().show();
- }
- $( '#preftoc' ).append(
- $( '<li></li>' )
- .addClass( i === 0 ? 'selected' : null )
- .append(
- $( '<a></a>')
- .text( $(this).text() )
- .attr( 'href', '#prefsection-' + i )
- .mousedown( function( e ) {
- $(this).parent().parent().find( 'li' ).removeClass( 'selected' );
- $(this).parent().addClass( 'selected' );
- e.preventDefault();
- return false;
- } )
- .click( function( e ) {
- $( '#preferences > fieldset' ).hide();
- $( '#prefsection-' + i ).show();
- e.preventDefault();
- return false;
- } )
- )
- );
- }
- );
+ .before( $preftoc );
+
+var $fieldsets = $preferences.children( 'fieldset' )
+ .hide()
+ .addClass( 'prefsection' );
+
+var $legends = $fieldsets.children( 'legend' )
+ .addClass( 'mainLegend' );
+
+// Populate the prefToc
+$legends.each( function( i, legend ) {
+ var $legend = $(legend);
+ if ( i === 0 ) {
+ $legend.parent().show();
+ }
+ var ident = $legend.parent().attr( 'id' );
+
+ var $li = $( '<li/>', {
+ 'class' : ( i === 0 ) ? 'selected' : null
+ });
+ var $a = $( '<a/>', {
+ text : $legend.text(),
+ id : ident.replace( 'mw-prefsection', 'preftab' ),
+ href : '#' + ident
+ }).click( function( e ) {
+ e.preventDefault();
+ // Handle hash manually to prevent jumping
+ // Therefore save and restore scrollTop to prevent jumping
+ var scrollTop = $(window).scrollTop();
+ window.location.hash = $(this).attr('href');
+ $(window).scrollTop(scrollTop);
+
+ $preftoc.find( 'li' ).removeClass( 'selected' );
+ $(this).parent().addClass( 'selected' );
+ $( '#preferences > fieldset' ).hide();
+ $( '#' + ident ).show();
+ });
+ $li.append( $a );
+ $preftoc.append( $li );
+} );
+
+// If we've reloaded the page or followed an open-in-new-window,
+// make the selected tab visible.
+// On document ready:
+$( function() {
+ var hash = window.location.hash;
+ if( hash.match( /^#mw-prefsection-[\w-]+/ ) ) {
+ var $tab = $( hash.replace( 'mw-prefsection', 'preftab' ) );
+ $tab.click();
+ }
+} );
/**
* Given an email validity status (true, false, null) update the label CSS class
@@ -74,4 +91,85 @@ $( '#mw-input-wpemailaddress' ).one( 'blur', function() {
updateMailValidityLabel( $(this).val() );
} );
} );
-} )( jQuery, mediaWiki ); \ No newline at end of file
+
+
+
+/**
+* Timezone functions.
+* Guesses Timezone from browser and updates fields onchange
+*/
+
+var $tzSelect = $( '#mw-input-wptimecorrection' );
+var $tzTextbox = $( '#mw-input-wptimecorrection-other' );
+
+var $localtimeHolder = $( '#wpLocalTime' );
+var servertime = parseInt( $( 'input[name=wpServerTime]' ).val(), 10 );
+var minuteDiff = 0;
+
+var minutesToHours = function( min ) {
+ var tzHour = Math.floor( Math.abs( min ) / 60 );
+ var tzMin = Math.abs( min ) % 60;
+ var tzString = ( ( min >= 0 ) ? '' : '-' ) + ( ( tzHour < 10 ) ? '0' : '' ) + tzHour +
+ ':' + ( ( tzMin < 10 ) ? '0' : '' ) + tzMin;
+ return tzString;
+};
+
+var hoursToMinutes = function( hour ) {
+ var arr = hour.split( ':' );
+ arr[0] = parseInt( arr[0], 10 );
+
+ var minutes;
+ if ( arr.length == 1 ) {
+ // Specification is of the form [-]XX
+ minutes = arr[0] * 60;
+ } else {
+ // Specification is of the form [-]XX:XX
+ minutes = Math.abs( arr[0] ) * 60 + parseInt( arr[1], 10 );
+ if ( arr[0] < 0 ) {
+ minutes *= -1;
+ }
+ }
+ // Gracefully handle non-numbers.
+ if ( isNaN( minutes ) ) {
+ return 0;
+ } else {
+ return minutes;
+ }
+};
+
+var updateTimezoneSelection = function() {
+ var type = $tzSelect.val();
+ if ( type == 'guess' ) {
+ // Get browser timezone & fill it in
+ minuteDiff = -new Date().getTimezoneOffset();
+ $tzTextbox.val( minutesToHours( minuteDiff ) );
+ $tzSelect.val( 'other' );
+ $tzTextbox.get( 0 ).disabled = false;
+ } else if ( type == 'other' ) {
+ // Grab data from the textbox, parse it.
+ minuteDiff = hoursToMinutes( $tzTextbox.val() );
+ } else {
+ // Grab data from the $tzSelect value
+ minuteDiff = parseInt( type.split( '|' )[1], 10 ) || 0;
+ $tzTextbox.val( minutesToHours( minuteDiff ) );
+ }
+
+ // Determine local time from server time and minutes difference, for display.
+ var localTime = servertime + minuteDiff;
+
+ // Bring time within the [0,1440) range.
+ while ( localTime < 0 ) {
+ localTime += 1440;
+ }
+ while ( localTime >= 1440 ) {
+ localTime -= 1440;
+ }
+ $localtimeHolder.text( minutesToHours( localTime ) );
+};
+
+if ( $tzSelect.length && $tzTextbox.length ) {
+ $tzSelect.change( function() { updateTimezoneSelection(); } );
+ $tzTextbox.blur( function() { updateTimezoneSelection(); } );
+ updateTimezoneSelection();
+}
+} )( jQuery, mediaWiki );
diff --git a/resources/mediawiki.special/mediawiki.special.recentchanges.js b/resources/mediawiki.special/mediawiki.special.recentchanges.js
new file mode 100644
index 00000000..7e284fbd
--- /dev/null
+++ b/resources/mediawiki.special/mediawiki.special.recentchanges.js
@@ -0,0 +1,39 @@
+/* JavaScript for Special:RecentChanges */
+( function( $ ) {
+
+ var checkboxes = [ 'nsassociated', 'nsinvert' ];
+
+ /**
+ * @var select {jQuery}
+ */
+ var $select = null;
+
+ var rc = mw.special.recentchanges = {
+
+ /**
+ * Handler to disable/enable the namespace selector checkboxes when the
+ * special 'all' namespace is selected/unselected respectively.
+ */
+ updateCheckboxes: function() {
+ // The option element for the 'all' namespace has an empty value
+ var isAllNS = ('' === $select.find('option:selected').val() );
+
+ // Iterates over checkboxes and propagate the selected option
+ $.each( checkboxes, function( i, id ) {
+ $( '#' + id ).attr( 'disabled', isAllNS );
+ });
+ },
+
+ init: function() {
+ // Populate
+ $select = $( '#namespace' );
+
+ // Bind to change event, and trigger once to set the initial state of the checkboxes.
+ $select.change( rc.updateCheckboxes ).change();
+ }
+ };
+
+ // Run when document is ready
+ $( rc.init );
+
+})( jQuery );
diff --git a/skins/common/search.css b/resources/mediawiki.special/mediawiki.special.search.css
index 22c3ca4a..89d55b0b 100644
--- a/skins/common/search.css
+++ b/resources/mediawiki.special/mediawiki.special.search.css
@@ -9,6 +9,6 @@
*
* This will only affect IE 7 and lower
*/
-html > body .searchresult {
- display: inline;
+.searchresult {
+ display: inline !ie;
}
diff --git a/resources/mediawiki.special/mediawiki.special.search.js b/resources/mediawiki.special/mediawiki.special.search.js
index d4317188..bac27fc6 100644
--- a/resources/mediawiki.special/mediawiki.special.search.js
+++ b/resources/mediawiki.special/mediawiki.special.search.js
@@ -1,11 +1,37 @@
/*
- * JavaScript for Specical:Search
+ * JavaScript for Special:Search
*/
-( function( $, mw ) {
+jQuery( function( $ ) {
// Emulate HTML5 autofocus behavior in non HTML5 compliant browsers
if ( !( 'autofocus' in document.createElement( 'input' ) ) ) {
$( 'input[autofocus]:first' ).focus();
}
-} )( jQuery, mediaWiki ); \ No newline at end of file
+// Bind check all/none button
+var $checkboxes = $('#powersearch input[id^=mw-search-ns]');
+$('#mw-search-toggleall').click( function() {
+ $checkboxes.prop("checked", true);
+} );
+$('#mw-search-togglenone').click( function() {
+ $checkboxes.prop("checked", false);
+} );
+
+// Change the header search links to what user entered
+var headerLinks = $('.search-types a');
+$('#searchText, #powerSearchText').change(function() {
+ var searchterm = $(this).val();
+ headerLinks.each( function() {
+ var parts = this.href.split( 'search=' );
+ var lastpart = '';
+ var prefix = 'search=';
+ if( parts.length > 1 && parts[1].indexOf('&') >= 0 ) {
+ lastpart = parts[1].substring( parts[1].indexOf('&') );
+ } else {
+ prefix = '&search=';
+ }
+ this.href = parts[0] + prefix + encodeURIComponent( searchterm ) + lastpart;
+ });
+}).trigger('change');
+
+} ); \ No newline at end of file
diff --git a/resources/mediawiki.special/mediawiki.special.undelete.js b/resources/mediawiki.special/mediawiki.special.undelete.js
new file mode 100644
index 00000000..33b80275
--- /dev/null
+++ b/resources/mediawiki.special/mediawiki.special.undelete.js
@@ -0,0 +1,10 @@
+/*
+ * JavaScript for Specical:Undelete
+ */
+jQuery( document ).ready( function( $ ) {
+ $( '#mw-undelete-invert' ).click( function( e ) {
+ e.preventDefault();
+ $( '#undelete' ).find( 'input:checkbox' )
+ .prop( 'checked', function( i, val ) { return !val; } );
+ } );
+} );
diff --git a/resources/mediawiki.special/mediawiki.special.upload.js b/resources/mediawiki.special/mediawiki.special.upload.js
new file mode 100644
index 00000000..4a8622f5
--- /dev/null
+++ b/resources/mediawiki.special/mediawiki.special.upload.js
@@ -0,0 +1,272 @@
+/*
+ * JavaScript for Special:Upload
+ * Note that additional code still lives in skins/common/upload.js
+ */
+
+/**
+ * Add a preview to the upload form
+ */
+jQuery( function( $ ) {
+ /**
+ * Is the FileAPI available with sufficient functionality?
+ */
+ function hasFileAPI(){
+ return typeof window.FileReader !== 'undefined';
+ }
+
+ /**
+ * Check if this is a recognizable image type...
+ * Also excludes files over 10M to avoid going insane on memory usage.
+ *
+ * @todo is there a way we can ask the browser what's supported in <img>s?
+ * @todo put SVG back after working around Firefox 7 bug <https://bugzilla.wikimedia.org/show_bug.cgi?id=31643>
+ *
+ * @param {File} file
+ * @return boolean
+ */
+ function fileIsPreviewable( file ) {
+ var known = ['image/png', 'image/gif', 'image/jpeg'],
+ tooHuge = 10 * 1024 * 1024;
+ return ( $.inArray( file.type, known ) !== -1 ) && file.size > 0 && file.size < tooHuge;
+ }
+
+ /**
+ * Show a thumbnail preview of PNG, JPEG, GIF, and SVG files prior to upload
+ * in browsers supporting HTML5 FileAPI.
+ *
+ * As of this writing, known good:
+ * - Firefox 3.6+
+ * - Chrome 7.something
+ *
+ * @todo check file size limits and warn of likely failures
+ *
+ * @param {File} file
+ */
+ function showPreview( file ) {
+ var previewSize = 180,
+ thumb = $( '<div id="mw-upload-thumbnail" class="thumb tright">' +
+ '<div class="thumbinner">' +
+ '<canvas width="' + previewSize + '" height="' + previewSize + '" ></canvas>' +
+ '<div class="thumbcaption"><div class="filename"></div><div class="fileinfo"></div></div>' +
+ '</div>' +
+ '</div>' );
+ thumb.find( '.filename' ).text( file.name ).end()
+ .find( '.fileinfo' ).text( prettySize( file.size ) ).end();
+
+ var ctx = thumb.find( 'canvas' )[0].getContext( '2d' ),
+ spinner = new Image();
+ spinner.onload = function() {
+ ctx.drawImage( spinner, (previewSize - spinner.width) / 2,
+ (previewSize - spinner.height) / 2 );
+ };
+ spinner.src = mw.config.get( 'wgScriptPath' ) + '/skins/common/images/spinner.gif';
+ $( '#mw-htmlform-source' ).parent().prepend( thumb );
+
+ var meta;
+ fetchPreview( file, function( dataURL ) {
+ var img = new Image(),
+ rotation = 0;
+
+ if ( meta && meta.tiff && meta.tiff.Orientation ) {
+ rotation = (360 - function () {
+ // See includes/media/Bitmap.php
+ switch ( meta.tiff.Orientation.value ) {
+ case 8:
+ return 90;
+ case 3:
+ return 180;
+ case 6:
+ return 270;
+ default:
+ return 0;
+ }
+ }() ) % 360;
+ }
+
+ img.onload = function() {
+ var width, height, x, y, dx, dy, logicalWidth, logicalHeight;
+ // Fit the image within the previewSizexpreviewSize box
+ if ( img.width > img.height ) {
+ width = previewSize;
+ height = img.height / img.width * previewSize;
+ } else {
+ height = previewSize;
+ width = img.width / img.height * previewSize;
+ }
+ // Determine the offset required to center the image
+ dx = (180 - width) / 2;
+ dy = (180 - height) / 2;
+ switch ( rotation ) {
+ // If a rotation is applied, the direction of the axis
+ // changes as well. You can derive the values below by
+ // drawing on paper an axis system, rotate it and see
+ // where the positive axis direction is
+ case 0:
+ x = dx;
+ y = dy;
+ logicalWidth = img.width;
+ logicalHeight = img.height;
+ break;
+ case 90:
+
+ x = dx;
+ y = dy - previewSize;
+ logicalWidth = img.height;
+ logicalHeight = img.width;
+ break;
+ case 180:
+ x = dx - previewSize;
+ y = dy - previewSize;
+ logicalWidth = img.width;
+ logicalHeight = img.height;
+ break;
+ case 270:
+ x = dx - previewSize;
+ y = dy;
+ logicalWidth = img.height;
+ logicalHeight = img.width;
+ break;
+ }
+
+ ctx.clearRect( 0, 0, 180, 180 );
+ ctx.rotate( rotation / 180 * Math.PI );
+ ctx.drawImage( img, x, y, width, height );
+
+ // Image size
+ var info = mw.msg( 'widthheight', logicalWidth, logicalHeight ) +
+ ', ' + prettySize( file.size );
+ $( '#mw-upload-thumbnail .fileinfo' ).text( info );
+ };
+ img.src = dataURL;
+ }, mw.config.get( 'wgFileCanRotate' ) ? function ( data ) {
+ try {
+ meta = mw.libs.jpegmeta( data, file.fileName );
+ meta._binary_data = null;
+ } catch ( e ) {
+ meta = null;
+ }
+ } : null );
+ }
+
+ /**
+ * Start loading a file into memory; when complete, pass it as a
+ * data URL to the callback function. If the callbackBinary is set it will
+ * first be read as binary and afterwards as data URL. Useful if you want
+ * to do preprocessing on the binary data first.
+ *
+ * @param {File} file
+ * @param {function} callback
+ * @param {function} callbackBinary
+ */
+ function fetchPreview( file, callback, callbackBinary ) {
+ var reader = new FileReader();
+ reader.onload = function() {
+ if ( callbackBinary ) {
+ callbackBinary( reader.result );
+ reader.onload = function() {
+ callback( reader.result );
+ };
+ reader.readAsDataURL( file );
+ } else {
+ callback( reader.result );
+ }
+ };
+ if ( callbackBinary ) {
+ reader.readAsBinaryString( file );
+ } else {
+ reader.readAsDataURL( file );
+ }
+ }
+
+ /**
+ * Format a file size attractively.
+ * @todo match numeric formatting
+ *
+ * @param {number} s
+ * @return string
+ */
+ function prettySize( s ) {
+ var sizes = ['size-bytes', 'size-kilobytes', 'size-megabytes', 'size-gigabytes'];
+ while ( s >= 1024 && sizes.length > 1 ) {
+ s /= 1024;
+ sizes = sizes.slice( 1 );
+ }
+ return mw.msg( sizes[0], Math.round( s ) );
+ }
+
+ /**
+ * Clear the file upload preview area.
+ */
+ function clearPreview() {
+ $( '#mw-upload-thumbnail' ).remove();
+ }
+
+ /**
+ * Check if the file does not exceed the maximum size
+ */
+ function checkMaxUploadSize( file ) {
+ function getMaxUploadSize( type ) {
+ var sizes = mw.config.get( 'wgMaxUploadSize' );
+ if ( sizes[type] !== undefined ) {
+ return sizes[type];
+ }
+ return sizes['*'];
+ }
+ $( '.mw-upload-source-error' ).remove();
+
+ var maxSize = getMaxUploadSize( 'file' );
+ if ( file.size > maxSize ) {
+ var error = $( '<p class="error mw-upload-source-error" id="wpSourceTypeFile-error">' +
+ mw.message( 'largefileserver', file.size, maxSize ).escaped() + '</p>' );
+ $( '#wpUploadFile' ).after( error );
+ return false;
+ }
+ return true;
+ }
+
+
+ /**
+ * Initialization
+ */
+ if ( hasFileAPI() ) {
+ // Update thumbnail when the file selection control is updated.
+ $( '#wpUploadFile' ).change( function() {
+ clearPreview();
+ if ( this.files && this.files.length ) {
+ // Note: would need to be updated to handle multiple files.
+ var file = this.files[0];
+
+ if ( !checkMaxUploadSize( file ) ) {
+ return;
+ }
+
+ if ( fileIsPreviewable( file ) ) {
+ showPreview( file );
+ }
+ }
+ } );
+ }
+} );
+
+/**
+ * Disable all upload source fields except the selected one
+ */
+jQuery( function ( $ ) {
+ var rows = $( '.mw-htmlform-field-UploadSourceField' );
+ for ( var i = rows.length; i; i-- ) {
+ var row = rows[i - 1];
+ $( 'input[name="wpSourceType"]', row ).change( function () {
+ var currentRow = row; // Store current row in our own scope
+ return function () {
+ $( '.mw-upload-source-error' ).remove();
+ if ( this.checked ) {
+ // Disable all inputs
+ $( 'input[name!="wpSourceType"]', rows ).attr( 'disabled', true );
+ // Re-enable the current one
+ $( 'input', currentRow ).attr( 'disabled', false );
+ }
+ };
+ }() );
+ }
+} );
+
diff --git a/resources/mediawiki.util/mediawiki.util.js b/resources/mediawiki.util/mediawiki.util.js
deleted file mode 100644
index 4258cb0c..00000000
--- a/resources/mediawiki.util/mediawiki.util.js
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
- * Utilities
- */
-( function( $, mw ) {
-
- mediaWiki.util = {
-
- /* Initialisation */
- 'initialised' : false,
- 'init' : function () {
- if ( this.initialised === false ) {
- this.initialised = true;
-
- // Any initialisation after the DOM is ready
- $( function() {
-
- // Shortcut
- var profile = $.client.profile();
-
- // Set tooltipAccessKeyPrefix
-
- // Opera on any platform
- if ( profile.name == 'opera' ) {
- mw.util.tooltipAccessKeyPrefix = 'shift-esc-';
-
- // Chrome on any platform
- } else if ( profile.name == 'chrome' ) {
- // Chrome on Mac or Chrome on other platform ?
- mw.util.tooltipAccessKeyPrefix = ( profile.platform == 'mac'
- ? 'ctrl-option-' : 'alt-' );
-
- // Non-Windows Safari with webkit_version > 526
- } else if ( profile.platform !== 'win'
- && profile.name == 'safari'
- && profile.layoutVersion > 526 )
- {
- mw.util.tooltipAccessKeyPrefix = 'ctrl-alt-';
-
- // Safari/Konqueror on any platform, or any browser on Mac
- // (but not Safari on Windows)
- } else if ( !( profile.platform == 'win' && profile.name == 'safari' )
- && ( profile.name == 'safari'
- || profile.platform == 'mac'
- || profile.name == 'konqueror' ) ) {
- mw.util.tooltipAccessKeyPrefix = 'ctrl-';
-
- // Firefox 2.x
- } else if ( profile.name == 'firefox' && profile.versionBase == '2' ) {
- mw.util.tooltipAccessKeyPrefix = 'alt-shift-';
- }
-
- // Enable CheckboxShiftClick
- $('input[type=checkbox]:not(.noshiftselect)').checkboxShiftClick();
-
- // Emulate placeholder if not supported by browser
- if ( !( 'placeholder' in document.createElement( 'input' ) ) ) {
- $('input[placeholder]').placeholder();
- }
-
- // Fill $content var
- if ( $('#bodyContent').length ) {
- mw.util.$content = $('#bodyContent');
- } else if ( $('#article').length ) {
- mw.util.$content = $('#article');
- } else {
- mw.util.$content = $('#content');
- }
- });
-
- return true;
- }
- return false;
- },
-
- /* Main body */
-
- /**
- * Encode the string like PHP's rawurlencode
- *
- * @param str String to be encoded
- */
- 'rawurlencode' : function( str ) {
- str = (str + '').toString();
- return encodeURIComponent( str )
- .replace( /!/g, '%21' ).replace( /'/g, '%27' ).replace( /\(/g, '%28' )
- .replace( /\)/g, '%29' ).replace( /\*/g, '%2A' ).replace( /~/g, '%7E' );
- },
-
- /**
- * Encode page titles for use in a URL
- * We want / and : to be included as literal characters in our title URLs
- * as they otherwise fatally break the title
- *
- * @param str String to be encoded
- */
- 'wikiUrlencode' : function( str ) {
- return this.rawurlencode( str )
- .replace( /%20/g, '_' ).replace( /%3A/g, ':' ).replace( /%2F/g, '/' );
- },
-
- /**
- * Append a new style block to the head
- *
- * @param text String CSS to be appended
- * @return the CSS stylesheet
- */
- 'addCSS' : function( text ) {
- var s = document.createElement( 'style' );
- s.type = 'text/css';
- s.rel = 'stylesheet';
- if ( s.styleSheet ) {
- s.styleSheet.cssText = text; // IE
- } else {
- s.appendChild( document.createTextNode( text + '' ) ); // Safari sometimes borks on null
- }
- document.getElementsByTagName("head")[0].appendChild( s );
- return s.sheet || s;
- },
-
- /**
- * Get the full URL to a page name
- *
- * @param str Page name to link to
- */
- 'wikiGetlink' : function( str ) {
- return wgServer + wgArticlePath.replace( '$1', this.wikiUrlencode( str ) );
- },
-
- /**
- * Grab the URL parameter value for the given parameter.
- * Returns null if not found.
- *
- * @param param The parameter name
- * @param url URL to search through (optional)
- */
- 'getParamValue' : function( param, url ) {
- url = url ? url : document.location.href;
- // Get last match, stop at hash
- var re = new RegExp( '[^#]*[&?]' + $.escapeRE( param ) + '=([^&#]*)' );
- var m = re.exec( url );
- if ( m && m.length > 1 ) {
- // Beware that decodeURIComponent is not required to understand '+'
- // by spec, as encodeURIComponent does not produce it.
- return decodeURIComponent( m[1].replace( /\+/g, '%20' ) );
- }
- return null;
- },
-
- // Access key prefix.
- // Will be re-defined based on browser/operating system detection in
- // mw.util.init().
- 'tooltipAccessKeyPrefix' : 'alt-',
-
- // Regex to match accesskey tooltips
- 'tooltipAccessKeyRegexp': /\[(ctrl-)?(alt-)?(shift-)?(esc-)?(.)\]$/,
-
- /**
- * Add the appropriate prefix to the accesskey shown in the tooltip.
- * If the nodeList parameter is given, only those nodes are updated;
- * otherwise, all the nodes that will probably have accesskeys by
- * default are updated.
- *
- * @param nodeList jQuery object, or array of elements
- */
- 'updateTooltipAccessKeys' : function( nodeList ) {
- var $nodes;
- if ( nodeList instanceof jQuery ) {
- $nodes = nodeList;
- } else if ( nodeList ) {
- $nodes = $(nodeList);
- } else {
- // Rather than scanning all links, just the elements that
- // contain the relevant links
- this.updateTooltipAccessKeys(
- $('#column-one a, #mw-head a, #mw-panel a, #p-logo a') );
-
- // these are rare enough that no such optimization is needed
- this.updateTooltipAccessKeys( $('input') );
- this.updateTooltipAccessKeys( $('label') );
- return;
- }
-
- $nodes.each( function ( i ) {
- var tip = $(this).attr( 'title' );
- if ( !!tip && mw.util.tooltipAccessKeyRegexp.exec( tip ) ) {
- tip = tip.replace( mw.util.tooltipAccessKeyRegexp,
- '[' + mw.util.tooltipAccessKeyPrefix + "$5]" );
- $(this).attr( 'title', tip );
- }
- });
- },
-
- // jQuery object that refers to the page-content element
- // Populated by init()
- '$content' : null,
-
- /**
- * Add a link to a portlet menu on the page, such as:
- *
- * p-cactions (Content actions), p-personal (Personal tools),
- * p-navigation (Navigation), p-tb (Toolbox)
- *
- * The first three paramters are required, others are optionals. Though
- * providing an id and tooltip is recommended.
- *
- * By default the new link will be added to the end of the list. To
- * add the link before a given existing item, pass the DOM node
- * (document.getElementById('foobar')) or the jQuery-selector
- * ('#foobar') of that item.
- *
- * @example mw.util.addPortletLink(
- * 'p-tb', 'http://mediawiki.org/',
- * 'MediaWiki.org', 't-mworg', 'Go to MediaWiki.org ', 'm', '#t-print'
- * )
- *
- * @param portlet ID of the target portlet ('p-cactions' or 'p-personal' etc.)
- * @param href Link URL
- * @param text Link text (will be automatically converted to lower
- * case by CSS for p-cactions in Monobook)
- * @param id ID of the new item, should be unique and preferably have
- * the appropriate prefix ( 'ca-', 'pt-', 'n-' or 't-' )
- * @param tooltip Text to show when hovering over the link, without accesskey suffix
- * @param accesskey Access key to activate this link (one character, try
- * to avoid conflicts. Use $( '[accesskey=x' ).get() in the console to
- * see if 'x' is already used.
- * @param nextnode DOM node or jQuery-selector of the item that the new
- * item should be added before, should be another item in the same
- * list will be ignored if not the so
- *
- * @return The DOM node of the new item (a LI element, or A element for
- * older skins) or null.
- */
- 'addPortletLink' : function( portlet, href, text, id, tooltip, accesskey, nextnode ) {
-
- // Check if there's atleast 3 arguments to prevent a TypeError
- if ( arguments.length < 3 ) {
- return null;
- }
- // Setup the anchor tag
- var $link = $( '<a></a>' ).attr( 'href', href ).text( text );
- if ( tooltip ) {
- $link.attr( 'title', tooltip );
- }
-
- // Some skins don't have any portlets
- // just add it to the bottom of their 'sidebar' element as a fallback
- switch ( skin ) {
- case 'standard' :
- case 'cologneblue' :
- $("#quickbar").append($link.after( '<br />' ));
- return $link.get(0);
- case 'nostalgia' :
- $("#searchform").before($link).before( ' &#124; ' );
- return $link.get(0);
- default : // Skins like chick, modern, monobook, myskin, simple, vector...
-
- // Select the specified portlet
- var $portlet = $('#' + portlet);
- if ( $portlet.length === 0 ) {
- return null;
- }
- // Select the first (most likely only) unordered list inside the portlet
- var $ul = $portlet.find( 'ul' ).eq( 0 );
-
- // If it didn't have an unordered list yet, create it
- if ($ul.length === 0) {
- // If there's no <div> inside, append it to the portlet directly
- if ($portlet.find( 'div' ).length === 0) {
- $portlet.append( '<ul></ul>' );
- } else {
- // otherwise if there's a div (such as div.body or div.pBody)
- // append the <ul> to last (most likely only) div
- $portlet.find( 'div' ).eq( -1 ).append( '<ul></ul>' );
- }
- // Select the created element
- $ul = $portlet.find( 'ul' ).eq( 0 );
- }
- // Just in case..
- if ( $ul.length === 0 ) {
- return null;
- }
-
- // Unhide portlet if it was hidden before
- $portlet.removeClass( 'emptyPortlet' );
-
- // Wrap the anchor tag in a <span> and create a list item for it
- // and back up the selector to the list item
- var $item = $link.wrap( '<li><span></span></li>' ).parent().parent();
-
- // Implement the properties passed to the function
- if ( id ) {
- $item.attr( 'id', id );
- }
- if ( accesskey ) {
- $link.attr( 'accesskey', accesskey );
- tooltip += ' [' + accesskey + ']';
- }
- if ( tooltip ) {
- $link.attr( 'title', tooltip );
- }
- if ( accesskey && tooltip ) {
- this.updateTooltipAccessKeys( $link );
- }
-
- // Append using DOM-element passing
- if ( nextnode && nextnode.parentNode == $ul.get( 0 ) ) {
- $(nextnode).before( $item );
- } else {
- // If the jQuery selector isn't found within the <ul>, just
- // append it at the end
- if ( $ul.find( nextnode ).length === 0 ) {
- $ul.append( $item );
- } else {
- // Append using jQuery CSS selector
- $ul.find( nextnode ).eq( 0 ).before( $item );
- }
- }
-
- return $item.get( 0 );
- }
- },
-
- /**
- * Validate a string as representing a valid e-mail address
- * according to HTML5 specification. Please note the specification
- * does not validate a domain with one character.
- *
- * FIXME: should be moved to a JavaScript validation module.
- */
- 'validateEmail' : function( mailtxt ) {
- if( mailtxt === '' ) {
- return null;
- }
-
- /**
- * HTML5 defines a string as valid e-mail address if it matches
- * the ABNF:
- * 1 * ( atext / "." ) "@" ldh-str 1*( "." ldh-str )
- * With:
- * - atext : defined in RFC 5322 section 3.2.3
- * - ldh-str : defined in RFC 1034 section 3.5
- *
- * (see STD 68 / RFC 5234 http://tools.ietf.org/html/std68):
- */
-
- /**
- * First, define the RFC 5322 'atext' which is pretty easy :
- * atext = ALPHA / DIGIT / ; Printable US-ASCII
- "!" / "#" / ; characters not including
- "$" / "%" / ; specials. Used for atoms.
- "&" / "'" /
- "*" / "+" /
- "-" / "/" /
- "=" / "?" /
- "^" / "_" /
- "`" / "{" /
- "|" / "}" /
- "~"
- */
- var rfc5322_atext = "a-z0-9!#$%&'*+\\-/=?^_`{|}~",
-
- /**
- * Next define the RFC 1034 'ldh-str'
- * <domain> ::= <subdomain> | " "
- * <subdomain> ::= <label> | <subdomain> "." <label>
- * <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
- * <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
- * <let-dig-hyp> ::= <let-dig> | "-"
- * <let-dig> ::= <letter> | <digit>
- */
- rfc1034_ldh_str = "a-z0-9\\-",
-
- HTML5_email_regexp = new RegExp(
- // start of string
- '^'
- +
- // User part which is liberal :p
- '[' + rfc5322_atext + '\\.]+'
- +
- // "at"
- '@'
- +
- // Domain first part
- '[' + rfc1034_ldh_str + ']+'
- +
- // Optional second part and following are separated by a dot
- '(?:\\.[' + rfc1034_ldh_str + ']+)*'
- +
- // End of string
- '$',
- // RegExp is case insensitive
- 'i'
- );
- return (null !== mailtxt.match( HTML5_email_regexp ) );
- }
-
- };
-
- mediaWiki.util.init();
-
-} )( jQuery, mediaWiki ); \ No newline at end of file
diff --git a/resources/mediawiki.util/mediawiki.util.test.js b/resources/mediawiki.util/mediawiki.util.test.js
deleted file mode 100644
index 43bf1d88..00000000
--- a/resources/mediawiki.util/mediawiki.util.test.js
+++ /dev/null
@@ -1,172 +0,0 @@
-/**
- * mediaWiki.util Test Suite
- *
- * Available on Special:BlankPage?action=mwutiltest&debug=true
- *
- * @author Krinkle <krinklemail@gmail.com>
- */
-
-(function ($, mw) {
-
- mw.test = {
-
- /* Variables */
- '$table' : null,
- 'addedTests' : [],
-
- /* Functions */
-
- /**
- * Adds a row to the test-table
- *
- * @param code String Code of the test to be executed
- * @param result String Expected result in 'var (vartype)' form
- * @param contain String Important part of the result, if result is different but does contain this it will not return ERROR but PARTIALLY
- */
- 'addTest' : function( code, result, contain ) {
- if (!contain) {
- contain = result;
- }
- this.addedTests.push([code, result, contain]);
- this.$table.append('<tr><td>' + mw.html.escape(code).replace(/ /g, '&nbsp;&nbsp;') + '</td><td>' + mw.html.escape(result).replace(/ /g, '&nbsp;&nbsp;') + '<td></td></td><td>?</td></tr>');
- },
-
- /* Initialisation */
- 'initialised' : false,
- 'init' : function () {
- if (this.initialised === false) {
- this.initialised = true;
- $(function () {
- if (wgCanonicalSpecialPageName == 'Blankpage' && mw.util.getParamValue('action') === 'mwutiltest') {
-
- // Build page
- document.title = 'mediaWiki.util JavaScript Test - ' + wgSiteName;
- $('#firstHeading').text('mediaWiki.util JavaScript Test');
- mw.util.$content.html(
- '<p>Below is a list of tests to confirm proper functionality of the mediaWiki.util functions</p>' +
- '<hr />' +
- '<table id="mw-mwutiltest-table" class="wikitable sortable" style="white-space:break; font-family:monospace,\'Courier New\'">' +
- '<tr><th>Exec</th><th>Should return</th><th>Does return</th><th>Equal ?</th></tr>' +
- '</table>'
- );
- mw.test.$table = $('table#mw-mwutiltest-table');
-
- // Populate tests
- mw.test.addTest('typeof $.trimLeft',
- 'function (string)');
- mw.test.addTest('$.trimLeft(\' foo bar \')',
- 'foo bar (string)');
- mw.test.addTest('typeof $.trimRight',
- 'function (string)');
- mw.test.addTest('$.trimRight(\' foo bar \')',
- ' foo bar (string)');
- mw.test.addTest('typeof $.isEmpty',
- 'function (string)');
- mw.test.addTest('$.isEmpty(\'string\')',
- 'false (boolean)');
- mw.test.addTest('$.isEmpty(\'0\')',
- 'true (boolean)');
- mw.test.addTest('$.isEmpty([])',
- 'true (boolean)');
- mw.test.addTest('typeof $.compareArray',
- 'function (string)');
- mw.test.addTest('$.compareArray( [1, "a", [], [2, \'b\'] ], [1, \'a\', [], [2, "b"] ] )',
- 'true (boolean)');
- mw.test.addTest('$.compareArray( [1], [2] )',
- 'false (boolean)');
- mw.test.addTest('4',
- '4 (number)');
- mw.test.addTest('typeof mediaWiki',
- 'object (string)');
- mw.test.addTest('typeof mw',
- 'object (string)');
- mw.test.addTest('typeof mw.util',
- 'object (string)');
- mw.test.addTest('typeof mw.html',
- 'object (string)');
- mw.test.addTest('typeof $.ucFirst',
- 'function (string)');
- mw.test.addTest('$.ucFirst( \'mediawiki\' )',
- 'Mediawiki (string)');
- mw.test.addTest('typeof $.escapeRE',
- 'function (string)');
- mw.test.addTest('$.escapeRE( \'.st{e}$st\' )',
- '\\.st\\{e\\}\\$st (string)');
- mw.test.addTest('typeof $.fn.checkboxShiftClick',
- 'function (string)');
- mw.test.addTest('typeof mw.util.rawurlencode',
- 'function (string)');
- mw.test.addTest('mw.util.rawurlencode( \'Test: A&B/Here\' )',
- 'Test%3A%20A%26B%2FHere (string)');
- mw.test.addTest('typeof mw.util.wikiGetlink',
- 'function (string)');
- mw.test.addTest('typeof mw.util.getParamValue',
- 'function (string)');
- mw.test.addTest('mw.util.getParamValue( \'action\' )',
- 'mwutiltest (string)');
- mw.test.addTest('mw.util.getParamValue( \'foo\', \'http://mw.org/?foo=wrong&foo=right#&foo=bad\' )',
- 'right (string)');
- mw.test.addTest('mw.util.tooltipAccessKeyRegexp.constructor.name',
- 'RegExp (string)');
- mw.test.addTest('typeof mw.util.updateTooltipAccessKeys',
- 'function (string)');
- mw.test.addTest('typeof mw.util.addPortletLink',
- 'function (string)');
- mw.test.addTest('typeof mw.util.addPortletLink( "p-tb", "http://mediawiki.org/", "MediaWiki.org", "t-mworg", "Go to MediaWiki.org ", "m", "#t-print" )',
- 'object (string)');
- mw.test.addTest('a = mw.util.addPortletLink( "p-tb", "http://mediawiki.org/", "MediaWiki.org", "t-mworg", "Go to MediaWiki.org ", "m", "#t-print" ); $(a).text();',
- 'MediaWiki.org (string)');
- mw.test.addTest('mw.html.element( \'hr\' )',
- '<hr/> (string)');
- mw.test.addTest('mw.html.element( \'img\', { \'src\': \'http://mw.org/?title=Main page&action=edit\' } )',
- '<img src="http://mw.org/?title=Main page&amp;action=edit"/> (string)');
- // Try to roughly keep the order similar to the order in the files
- // or alphabetical (depending on the context)
-
- // Run tests and compare results
- var exec,
- result,
- resulttype,
- numberoftests = 0,
- numberofpasseds = 0,
- numberofpartials = 0,
- numberoferrors = 0,
- $testrows;
- $testrows = mw.test.$table.find('tr');
- $.each(mw.test.addedTests, (function ( i ) {
- numberoftests++;
-
- exec = mw.test.addedTests[i][0];
- shouldreturn = mw.test.addedTests[i][1];
- shouldcontain = mw.test.addedTests[i][2];
- doesreturn = eval(exec);
- doesreturn = doesreturn + ' (' + typeof doesreturn + ')';
- $thisrow = $testrows.eq(i + 1);
- $thisrow.find('> td').eq(2).text(doesreturn);
-
- if (doesreturn.indexOf(shouldcontain) !== -1) {
- if (doesreturn == shouldreturn){
- $thisrow.find('> td').eq(3).css('background', '#EFE').text('OK');
- numberofpasseds++;
- } else {
- $thisrow.find('> td').eq(3).css('background', '#FFE').html('<small>PARTIALLY</small>');
- numberofpartials++;
- }
- } else {
- $thisrow.find('> td').eq(3).css('background', '#FEE').text('ERROR');
- numberoferrors++;
- }
-
- })
- );
- mw.test.$table.before('<p><strong>Ran ' + numberoftests + ' tests. ' + numberofpasseds + ' passed test(s). ' + numberoferrors + ' error(s). ' + numberofpartials + ' partially passed test(s). </p>');
-
- }
- });
- }
- }
- };
-
- mw.test.init();
-
-} )(jQuery, mediaWiki); \ No newline at end of file
diff --git a/resources/mediawiki/mediawiki.Title.js b/resources/mediawiki/mediawiki.Title.js
new file mode 100644
index 00000000..8d7996cb
--- /dev/null
+++ b/resources/mediawiki/mediawiki.Title.js
@@ -0,0 +1,334 @@
+/**
+ * mediaWiki.Title
+ *
+ * @author Neil Kandalgaonkar, 2010
+ * @author Timo Tijhof, 2011
+ * @since 1.18
+ *
+ * Relies on: mw.config (wgFormattedNamespaces, wgNamespaceIds, wgCaseSensitiveNamespaces), mw.util.wikiGetlink
+ */
+( function( $ ) {
+
+ /* Local space */
+
+ /**
+ * Title
+ * @constructor
+ *
+ * @param title {String} Title of the page. If no second argument given,
+ * this will be searched for a namespace.
+ * @param namespace {Number} (optional) Namespace id. If given, title will be taken as-is.
+ * @return {Title} this
+ */
+var Title = function( title, namespace ) {
+ this._ns = 0; // integer namespace id
+ this._name = null; // name in canonical 'database' form
+ this._ext = null; // extension
+
+ if ( arguments.length === 2 ) {
+ setNameAndExtension( this, title );
+ this._ns = fixNsId( namespace );
+ } else if ( arguments.length === 1 ) {
+ setAll( this, title );
+ }
+ return this;
+ },
+
+ /**
+ * Strip some illegal chars: control chars, colon, less than, greater than,
+ * brackets, braces, pipe, whitespace and normal spaces. This still leaves some insanity
+ * intact, like unicode bidi chars, but it's a good start..
+ * @param s {String}
+ * @return {String}
+ */
+ clean = function( s ) {
+ if ( s !== undefined ) {
+ return s.replace( /[\x00-\x1f\x23\x3c\x3e\x5b\x5d\x7b\x7c\x7d\x7f\s]+/g, '_' );
+ }
+ },
+
+ /**
+ * Convert db-key to readable text.
+ * @param s {String}
+ * @return {String}
+ */
+ text = function ( s ) {
+ if ( s !== null && s !== undefined ) {
+ return s.replace( /_/g, ' ' );
+ } else {
+ return '';
+ }
+ },
+
+ /**
+ * Sanitize name.
+ */
+ fixName = function( s ) {
+ return clean( $.trim( s ) );
+ },
+
+ /**
+ * Sanitize name.
+ */
+ fixExt = function( s ) {
+ return clean( s );
+ },
+
+ /**
+ * Sanitize namespace id.
+ * @param id {Number} Namespace id.
+ * @return {Number|Boolean} The id as-is or boolean false if invalid.
+ */
+ fixNsId = function( id ) {
+ // wgFormattedNamespaces is an object of *string* key-vals (ie. arr["0"] not arr[0] )
+ var ns = mw.config.get( 'wgFormattedNamespaces' )[id.toString()];
+
+ // Check only undefined (may be false-y, such as '' (main namespace) ).
+ if ( ns === undefined ) {
+ return false;
+ } else {
+ return Number( id );
+ }
+ },
+
+ /**
+ * Get namespace id from namespace name by any known namespace/id pair (localized, canonical or alias).
+ *
+ * @example On a German wiki this would return 6 for any of 'File', 'Datei', 'Image' or even 'Bild'.
+ * @param ns {String} Namespace name (case insensitive, leading/trailing space ignored).
+ * @return {Number|Boolean} Namespace id or boolean false if unrecognized.
+ */
+ getNsIdByName = function( ns ) {
+ // toLowerCase throws exception on null/undefined. Return early.
+ if ( ns == null ) {
+ return false;
+ }
+ ns = clean( $.trim( ns.toLowerCase() ) ); // Normalize
+ var id = mw.config.get( 'wgNamespaceIds' )[ns];
+ if ( id === undefined ) {
+ mw.log( 'mw.Title: Unrecognized namespace: ' + ns );
+ return false;
+ }
+ return fixNsId( id );
+ },
+
+ /**
+ * Helper to extract namespace, name and extension from a string.
+ *
+ * @param title {mw.Title}
+ * @param raw {String}
+ * @return {mw.Title}
+ */
+ setAll = function( title, s ) {
+ // In normal browsers the match-array contains null/undefined if there's no match,
+ // IE returns an empty string.
+ var matches = s.match( /^(?:([^:]+):)?(.*?)(?:\.(\w{1,5}))?$/ ),
+ ns_match = getNsIdByName( matches[1] );
+
+ // Namespace must be valid, and title must be a non-empty string.
+ if ( ns_match && typeof matches[2] === 'string' && matches[2] !== '' ) {
+ title._ns = ns_match;
+ title._name = fixName( matches[2] );
+ if ( typeof matches[3] === 'string' && matches[3] !== '' ) {
+ title._ext = fixExt( matches[3] );
+ }
+ } else {
+ // Consistency with MediaWiki PHP: Unknown namespace -> fallback to main namespace.
+ title._ns = 0;
+ setNameAndExtension( title, s );
+ }
+ return title;
+ },
+
+ /**
+ * Helper to extract name and extension from a string.
+ *
+ * @param title {mw.Title}
+ * @param raw {String}
+ * @return {mw.Title}
+ */
+ setNameAndExtension = function( title, raw ) {
+ // In normal browsers the match-array contains null/undefined if there's no match,
+ // IE returns an empty string.
+ var matches = raw.match( /^(?:)?(.*?)(?:\.(\w{1,5}))?$/ );
+
+ // Title must be a non-empty string.
+ if ( typeof matches[1] === 'string' && matches[1] !== '' ) {
+ title._name = fixName( matches[1] );
+ if ( typeof matches[2] === 'string' && matches[2] !== '' ) {
+ title._ext = fixExt( matches[2] );
+ }
+ } else {
+ throw new Error( 'mw.Title: Could not parse title "' + raw + '"' );
+ }
+ return title;
+ };
+
+
+ /* Static space */
+
+ /**
+ * Whether this title exists on the wiki.
+ * @param title {mixed} prefixed db-key name (string) or instance of Title
+ * @return {mixed} Boolean true/false if the information is available. Otherwise null.
+ */
+ Title.exists = function( title ) {
+ var type = $.type( title ), obj = Title.exist.pages, match;
+ if ( type === 'string' ) {
+ match = obj[title];
+ } else if ( type === 'object' && title instanceof Title ) {
+ match = obj[title.toString()];
+ } else {
+ throw new Error( 'mw.Title.exists: title must be a string or an instance of Title' );
+ }
+ if ( typeof match === 'boolean' ) {
+ return match;
+ }
+ return null;
+ };
+
+ /**
+ * @var Title.exist {Object}
+ */
+ Title.exist = {
+ /**
+ * @var Title.exist.pages {Object} Keyed by PrefixedDb title.
+ * Boolean true value indicates page does exist.
+ */
+ pages: {},
+ /**
+ * @example Declare existing titles: Title.exist.set(['User:John_Doe', ...]);
+ * @example Declare titles nonexistent: Title.exist.set(['File:Foo_bar.jpg', ...], false);
+ * @param titles {String|Array} Title(s) in strict prefixedDb title form.
+ * @param state {Boolean} (optional) State of the given titles. Defaults to true.
+ * @return {Boolean}
+ */
+ set: function( titles, state ) {
+ titles = $.isArray( titles ) ? titles : [titles];
+ state = state === undefined ? true : !!state;
+ var pages = this.pages, i, len = titles.length;
+ for ( i = 0; i < len; i++ ) {
+ pages[ titles[i] ] = state;
+ }
+ return true;
+ }
+ };
+
+ /* Public methods */
+
+ var fn = {
+ constructor: Title,
+
+ /**
+ * Get the namespace number.
+ * @return {Number}
+ */
+ getNamespaceId: function(){
+ return this._ns;
+ },
+
+ /**
+ * Get the namespace prefix (in the content-language).
+ * In NS_MAIN this is '', otherwise namespace name plus ':'
+ * @return {String}
+ */
+ getNamespacePrefix: function(){
+ return mw.config.get( 'wgFormattedNamespaces' )[this._ns].replace( / /g, '_' ) + (this._ns === 0 ? '' : ':');
+ },
+
+ /**
+ * The name, like "Foo_bar"
+ * @return {String}
+ */
+ getName: function() {
+ if ( $.inArray( this._ns, mw.config.get( 'wgCaseSensitiveNamespaces' ) ) !== -1 ) {
+ return this._name;
+ } else {
+ return $.ucFirst( this._name );
+ }
+ },
+
+ /**
+ * The name, like "Foo bar"
+ * @return {String}
+ */
+ getNameText: function() {
+ return text( this.getName() );
+ },
+
+ /**
+ * Get full name in prefixed DB form, like File:Foo_bar.jpg,
+ * most useful for API calls, anything that must identify the "title".
+ */
+ getPrefixedDb: function() {
+ return this.getNamespacePrefix() + this.getMain();
+ },
+
+ /**
+ * Get full name in text form, like "File:Foo bar.jpg".
+ * @return {String}
+ */
+ getPrefixedText: function() {
+ return text( this.getPrefixedDb() );
+ },
+
+ /**
+ * The main title (without namespace), like "Foo_bar.jpg"
+ * @return {String}
+ */
+ getMain: function() {
+ return this.getName() + this.getDotExtension();
+ },
+
+ /**
+ * The "text" form, like "Foo bar.jpg"
+ * @return {String}
+ */
+ getMainText: function() {
+ return text( this.getMain() );
+ },
+
+ /**
+ * Get the extension (returns null if there was none)
+ * @return {String|null} extension
+ */
+ getExtension: function() {
+ return this._ext;
+ },
+
+ /**
+ * Convenience method: return string like ".jpg", or "" if no extension
+ * @return {String}
+ */
+ getDotExtension: function() {
+ return this._ext === null ? '' : '.' + this._ext;
+ },
+
+ /**
+ * Return the URL to this title
+ * @return {String}
+ */
+ getUrl: function() {
+ return mw.util.wikiGetlink( this.toString() );
+ },
+
+ /**
+ * Whether this title exists on the wiki.
+ * @return {mixed} Boolean true/false if the information is available. Otherwise null.
+ */
+ exists: function() {
+ return Title.exists( this );
+ }
+ };
+
+ // Alias
+ fn.toString = fn.getPrefixedDb;
+ fn.toText = fn.getPrefixedText;
+
+ // Assign
+ Title.prototype = fn;
+
+ // Expose
+ mw.Title = Title;
+
+})(jQuery);
diff --git a/resources/mediawiki/mediawiki.Uri.js b/resources/mediawiki/mediawiki.Uri.js
new file mode 100644
index 00000000..7ff8dda4
--- /dev/null
+++ b/resources/mediawiki/mediawiki.Uri.js
@@ -0,0 +1,260 @@
+/**
+ * Library for simple URI parsing and manipulation. Requires jQuery.
+ *
+ * Do not expect full RFC 3986 compliance. Intended to be minimal, but featureful.
+ * The use cases we have in mind are constructing 'next page' or 'previous page' URLs,
+ * detecting whether we need to use cross-domain proxies for an API, constructing
+ * simple URL-based API calls, etc.
+ *
+ * Intended to compress very well if you use a JS-parsing minifier.
+ *
+ * Dependencies: mw, jQuery
+ *
+ * Example:
+ *
+ * var uri = new mw.Uri( 'http://foo.com/mysite/mypage.php?quux=2' );
+ *
+ * if ( uri.host == 'foo.com' ) {
+ * uri.host = 'www.foo.com';
+ * uri.extend( { bar: 1 } );
+ *
+ * $( 'a#id1' ).attr( 'href', uri );
+ * // anchor with id 'id1' now links to http://foo.com/mysite/mypage.php?bar=1&quux=2
+ *
+ * $( 'a#id2' ).attr( 'href', uri.clone().extend( { bar: 3, pif: 'paf' } ) );
+ * // anchor with id 'id2' now links to http://foo.com/mysite/mypage.php?bar=3&quux=2&pif=paf
+ * }
+ *
+ * Parsing here is regex based, so may not work on all URIs, but is good enough for most.
+ *
+ * Given a URI like
+ * 'http://usr:pwd@www.test.com:81/dir/dir.2/index.htm?q1=0&&test1&test2=&test3=value+%28escaped%29&r=1&r=2#top':
+ * The returned object will have the following properties:
+ *
+ * protocol 'http'
+ * user 'usr'
+ * password 'pwd'
+ * host 'www.test.com'
+ * port '81'
+ * path '/dir/dir.2/index.htm'
+ * query {
+ * q1: 0,
+ * test1: null,
+ * test2: '',
+ * test3: 'value (escaped)'
+ * r: [1, 2]
+ * }
+ * fragment 'top'
+ *
+ * n.b. 'password' is not technically allowed for HTTP URIs, but it is possible with other
+ * sorts of URIs.
+ * You can modify the properties directly. Then use the toString() method to extract the
+ * full URI string again.
+ *
+ * Parsing based on parseUri 1.2.2 (c) Steven Levithan <stevenlevithan.com> MIT License
+ * http://stevenlevithan.com/demo/parseuri/js/
+ *
+ */
+
+( function( $ ) {
+
+ /**
+ * Function that's useful when constructing the URI string -- we frequently encounter the pattern of
+ * having to add something to the URI as we go, but only if it's present, and to include a character before or after if so.
+ * @param {String} to prepend, if value not empty
+ * @param {String} value to include, if not empty
+ * @param {String} to append, if value not empty
+ * @param {Boolean} raw -- if true, do not URI encode
+ * @return {String}
+ */
+ function cat( pre, val, post, raw ) {
+ if ( val === undefined || val === null || val === '' ) {
+ return '';
+ } else {
+ return pre + ( raw ? val : mw.Uri.encode( val ) ) + post;
+ }
+ }
+
+ // Regular expressions to parse many common URIs.
+ var parser = {
+ strict: /^(?:([^:\/?#]+):)?(?:\/\/(?:(?:([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)?((?:[^?#\/]*\/)*[^?#]*)(?:\?([^#]*))?(?:#(.*))?/,
+ loose: /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?(?:(?:([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?((?:\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?[^?#\/]*)(?:\?([^#]*))?(?:#(.*))?/
+ },
+
+ // The order here matches the order of captured matches in the above parser regexes.
+ properties = [
+ 'protocol', // http
+ 'user', // usr
+ 'password', // pwd
+ 'host', // www.test.com
+ 'port', // 81
+ 'path', // /dir/dir.2/index.htm
+ 'query', // q1=0&&test1&test2=value (will become { q1: 0, test1: '', test2: 'value' } )
+ 'fragment' // top
+ ];
+
+ /**
+ * Constructs URI object. Throws error if arguments are illegal/impossible, or otherwise don't parse.
+ * @constructor
+ * @param {!Object|String} URI string, or an Object with appropriate properties (especially another URI object to clone). Object must have non-blank 'protocol', 'host', and 'path' properties.
+ * @param {Boolean} strict mode (when parsing a string)
+ */
+ mw.Uri = function( uri, strictMode ) {
+ strictMode = !!strictMode;
+ if ( uri !== undefined && uri !== null || uri !== '' ) {
+ if ( typeof uri === 'string' ) {
+ this._parse( uri, strictMode );
+ } else if ( typeof uri === 'object' ) {
+ var _this = this;
+ $.each( properties, function( i, property ) {
+ _this[property] = uri[property];
+ } );
+ if ( this.query === undefined ) {
+ this.query = {};
+ }
+ }
+ }
+ if ( !( this.protocol && this.host && this.path ) ) {
+ throw new Error( 'Bad constructor arguments' );
+ }
+ };
+
+ /**
+ * Standard encodeURIComponent, with extra stuff to make all browsers work similarly and more compliant with RFC 3986
+ * Similar to rawurlencode from PHP and our JS library mw.util.rawurlencode, but we also replace space with a +
+ * @param {String} string
+ * @return {String} encoded for URI
+ */
+ mw.Uri.encode = function( s ) {
+ return encodeURIComponent( s )
+ .replace( /!/g, '%21').replace( /'/g, '%27').replace( /\(/g, '%28')
+ .replace( /\)/g, '%29').replace( /\*/g, '%2A')
+ .replace( /%20/g, '+' );
+ };
+
+ /**
+ * Standard decodeURIComponent, with '+' to space
+ * @param {String} string encoded for URI
+ * @return {String} decoded string
+ */
+ mw.Uri.decode = function( s ) {
+ return decodeURIComponent( s ).replace( /\+/g, ' ' );
+ };
+
+ mw.Uri.prototype = {
+
+ /**
+ * Parse a string and set our properties accordingly.
+ * @param {String} URI
+ * @param {Boolean} strictness
+ * @return {Boolean} success
+ */
+ _parse: function( str, strictMode ) {
+ var matches = parser[ strictMode ? 'strict' : 'loose' ].exec( str );
+ var uri = this;
+ $.each( properties, function( i, property ) {
+ uri[ property ] = matches[ i+1 ];
+ } );
+
+ // uri.query starts out as the query string; we will parse it into key-val pairs then make
+ // that object the "query" property.
+ // we overwrite query in uri way to make cloning easier, it can use the same list of properties.
+ var q = {};
+ // using replace to iterate over a string
+ if ( uri.query ) {
+ uri.query.replace( /(?:^|&)([^&=]*)(?:(=)([^&]*))?/g, function ($0, $1, $2, $3) {
+ if ( $1 ) {
+ var k = mw.Uri.decode( $1 );
+ var v = ( $2 === '' || $2 === undefined ) ? null : mw.Uri.decode( $3 );
+ if ( typeof q[ k ] === 'string' ) {
+ q[ k ] = [ q[ k ] ];
+ }
+ if ( typeof q[ k ] === 'object' ) {
+ q[ k ].push( v );
+ } else {
+ q[ k ] = v;
+ }
+ }
+ } );
+ }
+ this.query = q;
+ },
+
+ /**
+ * Returns user and password portion of a URI.
+ * @return {String}
+ */
+ getUserInfo: function() {
+ return cat( '', this.user, cat( ':', this.password, '' ) );
+ },
+
+ /**
+ * Gets host and port portion of a URI.
+ * @return {String}
+ */
+ getHostPort: function() {
+ return this.host + cat( ':', this.port, '' );
+ },
+
+ /**
+ * Returns the userInfo and host and port portion of the URI.
+ * In most real-world URLs, this is simply the hostname, but it is more general.
+ * @return {String}
+ */
+ getAuthority: function() {
+ return cat( '', this.getUserInfo(), '@' ) + this.getHostPort();
+ },
+
+ /**
+ * Returns the query arguments of the URL, encoded into a string
+ * Does not preserve the order of arguments passed into the URI. Does handle escaping.
+ * @return {String}
+ */
+ getQueryString: function() {
+ var args = [];
+ $.each( this.query, function( key, val ) {
+ var k = mw.Uri.encode( key );
+ var vals = val === null ? [ null ] : $.makeArray( val );
+ $.each( vals, function( i, v ) {
+ args.push( k + ( v === null ? '' : '=' + mw.Uri.encode( v ) ) );
+ } );
+ } );
+ return args.join( '&' );
+ },
+
+ /**
+ * Returns everything after the authority section of the URI
+ * @return {String}
+ */
+ getRelativePath: function() {
+ return this.path + cat( '?', this.getQueryString(), '', true ) + cat( '#', this.fragment, '' );
+ },
+
+ /**
+ * Gets the entire URI string. May not be precisely the same as input due to order of query arguments.
+ * @return {String} the URI string
+ */
+ toString: function() {
+ return this.protocol + '://' + this.getAuthority() + this.getRelativePath();
+ },
+
+ /**
+ * Clone this URI
+ * @return {Object} new URI object with same properties
+ */
+ clone: function() {
+ return new mw.Uri( this );
+ },
+
+ /**
+ * Extend the query -- supply query parameters to override or add to ours
+ * @param {Object} query parameters in key-val form to override or add
+ * @return {Object} this URI object
+ */
+ extend: function( parameters ) {
+ $.extend( this.query, parameters );
+ return this;
+ }
+ };
+
+} )( jQuery );
diff --git a/resources/mediawiki/mediawiki.htmlform.js b/resources/mediawiki/mediawiki.htmlform.js
new file mode 100644
index 00000000..1a6acd6f
--- /dev/null
+++ b/resources/mediawiki/mediawiki.htmlform.js
@@ -0,0 +1,64 @@
+/**
+ * Utility functions for jazzing up HTMLForm elements
+ */
+( function( $ ) {
+
+/**
+ * jQuery plugin to fade or snap to visible state.
+ *
+ * @param boolean instantToggle (optional)
+ * @return jQuery
+ */
+$.fn.goIn = function( instantToggle ) {
+ if ( instantToggle !== undefined && instantToggle === true ) {
+ return $(this).show();
+ }
+ return $(this).stop( true, true ).fadeIn();
+};
+
+/**
+ * jQuery plugin to fade or snap to hiding state.
+ *
+ * @param boolean instantToggle (optional)
+ * @return jQuery
+ */
+$.fn.goOut = function( instantToggle ) {
+ if ( instantToggle !== undefined && instantToggle === true ) {
+ return $(this).hide();
+ }
+ return $(this).stop( true, true ).fadeOut();
+};
+
+/**
+ * Bind a function to the jQuery object via live(), and also immediately trigger
+ * the function on the objects with an 'instant' paramter set to true
+ * @param callback function taking one paramter, which is Bool true when the event
+ * is called immediately, and the EventArgs object when triggered from an event
+ */
+$.fn.liveAndTestAtStart = function( callback ){
+ $(this)
+ .live( 'change', callback )
+ .each( function( index, element ){
+ callback.call( this, true );
+ } );
+};
+
+// Document ready:
+$( function() {
+
+ // Animate the SelectOrOther fields, to only show the text field when
+ // 'other' is selected.
+ $( '.mw-htmlform-select-or-other' ).liveAndTestAtStart( function( instant ) {
+ var $other = $( '#' + $(this).attr( 'id' ) + '-other' );
+ $other = $other.add( $other.siblings( 'br' ) );
+ if ( $(this).val() === 'other' ) {
+ $other.goIn( instant );
+ } else {
+ $other.goOut( instant );
+ }
+ });
+
+});
+
+
+})( jQuery );
diff --git a/resources/mediawiki/mediawiki.js b/resources/mediawiki/mediawiki.js
index 03f92844..a763ba93 100644
--- a/resources/mediawiki/mediawiki.js
+++ b/resources/mediawiki/mediawiki.js
@@ -1,98 +1,49 @@
/*
- * JavaScript backwards-compatibility alternatives and other convenience functions
- */
-
-jQuery.extend({
- trimLeft : function( str ) {
- return str == null ? '' : str.toString().replace( /^\s+/, '' );
- },
- trimRight : function( str ) {
- return str == null ?
- '' : str.toString().replace( /\s+$/, '' );
- },
- ucFirst : function( str ) {
- return str.substr( 0, 1 ).toUpperCase() + str.substr( 1, str.length );
- },
- escapeRE : function( str ) {
- return str.replace ( /([\\{}()\|.?*+-^$\[\]])/g, "\\$1" );
- },
- isEmpty : function( v ) {
- var key;
- if ( v === "" || v === 0 || v === "0" || v === null
- || v === false || typeof v === 'undefined' )
- {
- return true;
- }
- // the for-loop could potentially contain prototypes
- // to avoid that we check it's length first
- if ( v.length === 0 ) {
- return true;
- }
- if ( typeof v === 'object' ) {
- for ( key in v ) {
- return false;
- }
- return true;
- }
- return false;
- },
- compareArray : function( arrThis, arrAgainst ) {
- if ( arrThis.length != arrAgainst.length ) {
- return false;
- }
- for ( var i = 0; i < arrThis.length; i++ ) {
- if ( arrThis[i] instanceof Array ) {
- if ( !$.compareArray( arrThis[i], arrAgainst[i] ) ) {
- return false;
- }
- } else if ( arrThis[i] !== arrAgainst[i] ) {
- return false;
- }
- }
- return true;
- }
-});
-
-/*
* Core MediaWiki JavaScript Library
*/
// Attach to window
window.mediaWiki = new ( function( $ ) {
- /* Constants */
-
- // This will not change until we are 100% ready to turn off legacy globals
- var LEGACY_GLOBALS = true;
-
/* Private Members */
- // List of messages that have been requested to be loaded
+ /**
+ * @var object List of messages that have been requested to be loaded.
+ */
var messageQueue = {};
- /* Prototypes */
+ /* Object constructors */
/**
- * An object which allows single and multiple get/set/exists functionality
- * on a list of key / value pairs.
+ * Map
+ *
+ * Creates an object that can be read from or written to from prototype functions
+ * that allow both single and multiple variables at once.
*
- * @param {boolean} global Whether to get/set/exists values on the window
- * object or a private object
+ * @param global boolean Whether to store the values in the global window
+ * object or a exclusively in the object property 'values'.
+ * @return Map
*/
function Map( global ) {
this.values = ( global === true ) ? window : {};
- };
+ return this;
+ }
/**
- * Gets the value of a key, or a list of key/value pairs for an array of keys.
+ * Get the value of one or multiple a keys.
*
* If called with no arguments, all values will be returned.
*
- * @param selection mixed Key or array of keys to get values for
- * @param fallback mixed Value to use in case key(s) do not exist (optional)
+ * @param selection mixed String key or array of keys to get values for.
+ * @param fallback mixed Value to use in case key(s) do not exist (optional).
+ * @return mixed If selection was a string returns the value or null,
+ * If selection was an array, returns an object of key/values (value is null if not found),
+ * If selection was not passed or invalid, will return the 'values' object member (be careful as
+ * objects are always passed by reference in JavaScript!).
+ * @return Values as a string or object, null if invalid/inexistant.
*/
Map.prototype.get = function( selection, fallback ) {
- if ( typeof selection === 'object' ) {
+ if ( $.isArray( selection ) ) {
selection = $.makeArray( selection );
var results = {};
for ( var i = 0; i < selection.length; i++ ) {
@@ -100,37 +51,45 @@ window.mediaWiki = new ( function( $ ) {
}
return results;
} else if ( typeof selection === 'string' ) {
- if ( typeof this.values[selection] === 'undefined' ) {
- if ( typeof fallback !== 'undefined' ) {
+ if ( this.values[selection] === undefined ) {
+ if ( fallback !== undefined ) {
return fallback;
}
return null;
}
return this.values[selection];
}
- return this.values;
+ if ( selection === undefined ) {
+ return this.values;
+ } else {
+ return null; // invalid selection key
+ }
};
/**
* Sets one or multiple key/value pairs.
*
- * @param selection mixed Key or object of key/value pairs to set
+ * @param selection mixed String key or array of keys to set values for.
* @param value mixed Value to set (optional, only in use when key is a string)
+ * @return bool This returns true on success, false on failure.
*/
Map.prototype.set = function( selection, value ) {
- if ( typeof selection === 'object' ) {
+ if ( $.isPlainObject( selection ) ) {
for ( var s in selection ) {
this.values[s] = selection[s];
}
- } else if ( typeof selection === 'string' && typeof value !== 'undefined' ) {
+ return true;
+ } else if ( typeof selection === 'string' && value !== undefined ) {
this.values[selection] = value;
+ return true;
}
+ return false;
};
/**
* Checks if one or multiple keys exist.
*
- * @param selection mixed Key or array of keys to check
+ * @param selection mixed String key or array of keys to check
* @return boolean Existence of key(s)
*/
Map.prototype.exists = function( selection ) {
@@ -147,35 +106,49 @@ window.mediaWiki = new ( function( $ ) {
};
/**
- * Message object, similar to Message in PHP
+ * Message
+ *
+ * Object constructor for messages,
+ * similar to the Message class in MediaWiki PHP.
+ *
+ * @param map Map Instance of mw.Map
+ * @param key String
+ * @param parameters Array
+ * @return Message
*/
function Message( map, key, parameters ) {
this.format = 'parse';
this.map = map;
this.key = key;
- this.parameters = typeof parameters === 'undefined' ? [] : $.makeArray( parameters );
- };
+ this.parameters = parameters === undefined ? [] : $.makeArray( parameters );
+ return this;
+ }
/**
- * Appends parameters for replacement
+ * Appends (does not replace) parameters for replacement to the .parameters property.
*
- * @param parameters mixed First in a list of variadic arguments to append as message parameters
+ * @param parameters Array
+ * @return Message
*/
Message.prototype.params = function( parameters ) {
for ( var i = 0; i < parameters.length; i++ ) {
- this.parameters[this.parameters.length] = parameters[i];
+ this.parameters.push( parameters[i] );
}
return this;
};
/**
- * Converts message object to it's string form based on the state of format
+ * Converts message object to it's string form based on the state of format.
*
- * @return {string} String form of message
+ * @return string Message as a string in the current form or <key> if key does not exist.
*/
Message.prototype.toString = function() {
if ( !this.map.exists( this.key ) ) {
- // Return <key> if key does not exist
+ // Use <key> as text if key does not exist
+ if ( this.format !== 'plain' ) {
+ // format 'escape' and 'parse' need to have the brackets and key html escaped
+ return mw.html.escape( '<' + this.key + '>' );
+ }
return '<' + this.key + '>';
}
var text = this.map.get( this.key );
@@ -184,9 +157,19 @@ window.mediaWiki = new ( function( $ ) {
var index = parseInt( match, 10 ) - 1;
return index in parameters ? parameters[index] : '$' + match;
} );
+
+ if ( this.format === 'plain' ) {
+ return text;
+ }
+ if ( this.format === 'escaped' ) {
+ // According to Message.php this needs {{-transformation, which is
+ // still todo
+ return mw.html.escape( text );
+ }
+
/* This should be fixed up when we have a parser
if ( this.format === 'parse' && 'language' in mediaWiki ) {
- text = mediaWiki.language.parse( text );
+ text = mw.language.parse( text );
}
*/
return text;
@@ -213,6 +196,16 @@ window.mediaWiki = new ( function( $ ) {
};
/**
+ * Changes the format to html escaped and converts message to string
+ *
+ * @return {string} String form of html escaped message
+ */
+ Message.prototype.escaped = function() {
+ this.format = 'escaped';
+ return this.toString();
+ };
+
+ /**
* Checks if message exists
*
* @return {string} String form of parsed message
@@ -221,114 +214,39 @@ window.mediaWiki = new ( function( $ ) {
return this.map.exists( this.key );
};
- /**
- * User object
- */
- function User() {
- this.options = new Map();
-
- /* Public Methods */
-
- /*
- * Generates a random user session ID (32 alpha-numeric characters).
- *
- * This information would potentially be stored in a cookie to identify a user during a
- * session or series of sessions. It's uniqueness should not be depended on.
- *
- * @return string random set of 32 alpha-numeric characters
- */
- function generateId() {
- var id = '';
- var seed = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz';
- for ( var i = 0, r; i < 32; i++ ) {
- r = Math.floor( Math.random() * seed.length );
- id += seed.substring( r, r + 1 );
- }
- return id;
- }
-
- /*
- * Gets the current user's name.
- *
- * @return mixed user name string or null if users is anonymous
- */
- this.name = function() {
- return mediaWiki.config.get( 'wgUserName' );
- };
-
- /*
- * Gets a random session ID automatically generated and kept in a cookie.
- *
- * This ID is ephemeral for everyone, staying in their browser only until they close
- * their browser.
- *
- * Do not use this method before the first call to mediaWiki.loader.go(), it depends on
- * jquery.cookie, which is added to the first pay-load just after mediaWiki is defined, but
- * won't be loaded until the first call to go().
- *
- * @return string user name or random session ID
- */
- this.sessionId = function () {
- var sessionId = $.cookie( 'mediaWiki.user.sessionId' );
- if ( typeof sessionId == 'undefined' || sessionId == null ) {
- sessionId = generateId();
- $.cookie( 'mediaWiki.user.sessionId', sessionId, { 'expires': null, 'path': '/' } );
- }
- return sessionId;
- };
-
- /*
- * Gets the current user's name or a random ID automatically generated and kept in a cookie.
- *
- * This ID is persistent for anonymous users, staying in their browser up to 1 year. The
- * expiration time is reset each time the ID is queried, so in most cases this ID will
- * persist until the browser's cookies are cleared or the user doesn't visit for 1 year.
- *
- * Do not use this method before the first call to mediaWiki.loader.go(), it depends on
- * jquery.cookie, which is added to the first pay-load just after mediaWiki is defined, but
- * won't be loaded until the first call to go().
- *
- * @return string user name or random session ID
- */
- this.id = function() {
- var name = that.name();
- if ( name ) {
- return name;
- }
- var id = $.cookie( 'mediaWiki.user.id' );
- if ( typeof id == 'undefined' || id == null ) {
- id = generateId();
- }
- // Set cookie if not set, or renew it if already set
- $.cookie( 'mediaWiki.user.id', id, { 'expires': 365, 'path': '/' } );
- return id;
- };
- }
-
/* Public Members */
/*
* Dummy function which in debug mode can be replaced with a function that
- * does something clever
+ * emulates console.log in console-less environments.
*/
this.log = function() { };
- /*
+ /**
+ * @var constructor Make the Map-class publicly available.
+ */
+ this.Map = Map;
+
+ /**
* List of configuration values
*
- * In legacy mode the values this object wraps will be in the global space
+ * Dummy placeholder. Initiated in startUp module as a new instance of mw.Map().
+ * If $wgLegacyJavaScriptGlobals is true, this Map will have its values
+ * in the global window object.
*/
- this.config = new Map( LEGACY_GLOBALS );
+ this.config = null;
- /*
- * Information about the current user
+ /**
+ * @var object
+ *
+ * Empty object that plugins can be installed in.
*/
- this.user = new User();
+ this.libs = {};
/*
* Localization system
*/
- this.messages = new Map();
+ this.messages = new this.Map();
/* Public Methods */
@@ -336,29 +254,32 @@ window.mediaWiki = new ( function( $ ) {
* Gets a message object, similar to wfMessage()
*
* @param key string Key of message to get
- * @param parameters mixed First argument in a list of variadic arguments, each a parameter for $
- * replacement
+ * @param parameter_1 mixed First argument in a list of variadic arguments,
+ * each a parameter for $N replacement in messages.
+ * @return Message
*/
- this.message = function( key, parameters ) {
+ this.message = function( key, parameter_1 /* [, parameter_2] */ ) {
+ var parameters;
// Support variadic arguments
- if ( typeof parameters !== 'undefined' ) {
+ if ( parameter_1 !== undefined ) {
parameters = $.makeArray( arguments );
parameters.shift();
} else {
parameters = [];
}
- return new Message( mediaWiki.messages, key, parameters );
+ return new Message( mw.messages, key, parameters );
};
/**
* Gets a message string, similar to wfMsg()
*
* @param key string Key of message to get
- * @param parameters mixed First argument in a list of variadic arguments, each a parameter for $
- * replacement
+ * @param parameters mixed First argument in a list of variadic arguments,
+ * each a parameter for $N replacement in messages.
+ * @return String.
*/
this.msg = function( key, parameters ) {
- return mediaWiki.message.apply( mediaWiki.message, arguments ).toString();
+ return mw.message.apply( mw.message, arguments ).toString();
};
/**
@@ -378,16 +299,16 @@ window.mediaWiki = new ( function( $ ) {
* mediawiki.
*
* Format:
- * {
- * 'moduleName': {
- * 'dependencies': ['required module', 'required module', ...], (or) function() {}
- * 'state': 'registered', 'loading', 'loaded', 'ready', or 'error'
- * 'script': function() {},
- * 'style': 'css code string',
- * 'messages': { 'key': 'value' },
- * 'version': ############## (unix timestamp)
- * }
- * }
+ * {
+ * 'moduleName': {
+ * 'dependencies': ['required module', 'required module', ...], (or) function() {}
+ * 'state': 'registered', 'loading', 'loaded', 'ready', or 'error'
+ * 'script': function() {},
+ * 'style': 'css code string',
+ * 'messages': { 'key': 'value' },
+ * 'version': ############## (unix timestamp)
+ * }
+ * }
*/
var registry = {};
// List of modules which will be loaded as when ready
@@ -396,15 +317,28 @@ window.mediaWiki = new ( function( $ ) {
var queue = [];
// List of callback functions waiting for modules to be ready to be called
var jobs = [];
- // Flag indicating that requests should be suspended
- var suspended = true;
// Flag inidicating that document ready has occured
var ready = false;
- // Marker element for adding dynamic styles
- var $marker = $( 'head meta[name=ResourceLoaderDynamicStyles]' );
+ // Selector cache for the marker element. Use getMarker() to get/use the marker!
+ var $marker = null;
/* Private Methods */
+ function getMarker(){
+ // Cached ?
+ if ( $marker ) {
+ return $marker;
+ } else {
+ $marker = $( 'meta[name="ResourceLoaderDynamicStyles"]' );
+ if ( $marker.length ) {
+ return $marker;
+ }
+ mw.log( 'getMarker> No <meta name="ResourceLoaderDynamicStyles"> found, inserting dynamically.' );
+ $marker = $( '<meta>' ).attr( 'name', 'ResourceLoaderDynamicStyles' ).appendTo( 'head' );
+ return $marker;
+ }
+ }
+
function compare( a, b ) {
if ( a.length != b.length ) {
return false;
@@ -420,7 +354,7 @@ window.mediaWiki = new ( function( $ ) {
}
}
return true;
- };
+ }
/**
* Generates an ISO8601 "basic" string from a UNIX timestamp
@@ -441,11 +375,11 @@ window.mediaWiki = new ( function( $ ) {
* Recursively resolves dependencies and detects circular references
*/
function recurse( module, resolved, unresolved ) {
- if ( typeof registry[module] === 'undefined' ) {
+ if ( registry[module] === undefined ) {
throw new Error( 'Unknown dependency: ' + module );
}
// Resolves dynamic loader function and replaces it with its own results
- if ( typeof registry[module].dependencies === 'function' ) {
+ if ( $.isFunction( registry[module].dependencies ) ) {
registry[module].dependencies = registry[module].dependencies();
// Ensures the module's dependencies are always in an array
if ( typeof registry[module].dependencies !== 'object' ) {
@@ -475,7 +409,7 @@ window.mediaWiki = new ( function( $ ) {
* @return list of dependencies
* @throws Error if circular reference is detected
*/
- function resolve( module, resolved, unresolved ) {
+ function resolve( module ) {
// Allow calling with an array of module names
if ( typeof module === 'object' ) {
var modules = [];
@@ -496,7 +430,7 @@ window.mediaWiki = new ( function( $ ) {
return resolved;
}
throw new Error( 'Invalid module argument: ' + module );
- };
+ }
/**
* Narrows a list of module names down to those matching a specific
@@ -514,8 +448,8 @@ window.mediaWiki = new ( function( $ ) {
states = [states];
}
// If called without a list of modules, build and use a list of all modules
- var list = [];
- if ( typeof modules === 'undefined' ) {
+ var list = [], module;
+ if ( modules === undefined ) {
modules = [];
for ( module in registry ) {
modules[modules.length] = module;
@@ -524,7 +458,7 @@ window.mediaWiki = new ( function( $ ) {
// Build a list of modules which are in one of the specified states
for ( var s = 0; s < states.length; s++ ) {
for ( var m = 0; m < modules.length; m++ ) {
- if ( typeof registry[modules[m]] === 'undefined' ) {
+ if ( registry[modules[m]] === undefined ) {
// Module does not exist
if ( states[s] == 'undefined' ) {
// OK, undefined
@@ -547,8 +481,9 @@ window.mediaWiki = new ( function( $ ) {
*
* @param module string module name to execute
*/
- function execute( module ) {
- if ( typeof registry[module] === 'undefined' ) {
+ function execute( module, callback ) {
+ var _fn = 'mw.loader::execute> ';
+ if ( registry[module] === undefined ) {
throw new Error( 'Module has not been registered yet: ' + module );
} else if ( registry[module].state === 'registered' ) {
throw new Error( 'Module has not been requested from the server yet: ' + module );
@@ -557,37 +492,88 @@ window.mediaWiki = new ( function( $ ) {
} else if ( registry[module].state === 'ready' ) {
throw new Error( 'Module has already been loaded: ' + module );
}
- // Add style sheet to document
- if ( typeof registry[module].style === 'string' && registry[module].style.length ) {
- $marker.before( mediaWiki.html.element( 'style',
- { type: 'text/css' },
- new mediaWiki.html.Cdata( registry[module].style )
- ) );
- } else if ( typeof registry[module].style === 'object'
- && !( registry[module].style instanceof Array ) )
- {
+ // Add styles
+ if ( $.isPlainObject( registry[module].style ) ) {
for ( var media in registry[module].style ) {
- $marker.before( mediaWiki.html.element( 'style',
- { type: 'text/css', media: media },
- new mediaWiki.html.Cdata( registry[module].style[media] )
- ) );
+ var style = registry[module].style[media];
+ if ( $.isArray( style ) ) {
+ for ( var i = 0; i < style.length; i++ ) {
+ getMarker().before( mw.html.element( 'link', {
+ 'type': 'text/css',
+ 'media': media,
+ 'rel': 'stylesheet',
+ 'href': style[i]
+ } ) );
+ }
+ } else if ( typeof style === 'string' ) {
+ getMarker().before( mw.html.element(
+ 'style',
+ { 'type': 'text/css', 'media': media },
+ new mw.html.Cdata( style )
+ ) );
+ }
}
}
// Add localizations to message system
- if ( typeof registry[module].messages === 'object' ) {
- mediaWiki.messages.set( registry[module].messages );
+ if ( $.isPlainObject( registry[module].messages ) ) {
+ mw.messages.set( registry[module].messages );
}
// Execute script
try {
- registry[module].script( jQuery, mediaWiki );
- registry[module].state = 'ready';
+ var script = registry[module].script,
+ markModuleReady = function() {
+ registry[module].state = 'ready';
+ handlePending( module );
+ if ( $.isFunction( callback ) ) {
+ callback();
+ }
+ },
+ nestedAddScript = function( arr, callback, i ) {
+ // Recursively call addScript() in its own callback
+ // for each element of arr.
+ if ( i >= arr.length ) {
+ // We're at the end of the array
+ callback();
+ return;
+ }
+
+ addScript( arr[i], function() {
+ nestedAddScript( arr, callback, i + 1 );
+ } );
+ };
+
+ if ( $.isArray( script ) ) {
+ registry[module].state = 'loading';
+ nestedAddScript( script, markModuleReady, 0 );
+ } else if ( $.isFunction( script ) ) {
+ script( jQuery );
+ markModuleReady();
+ }
+ } catch ( e ) {
+ // This needs to NOT use mw.log because these errors are common in production mode
+ // and not in debug mode, such as when a symbol that should be global isn't exported
+ if ( window.console && typeof window.console.log === 'function' ) {
+ console.log( _fn + 'Exception thrown by ' + module + ': ' + e.message );
+ }
+ registry[module].state = 'error';
+ throw e;
+ }
+ }
+
+ /**
+ * Automatically executes jobs and modules which are pending with satistifed dependencies.
+ *
+ * This is used when dependencies are satisfied, such as when a module is executed.
+ */
+ function handlePending( module ) {
+ try {
// Run jobs who's dependencies have just been met
for ( var j = 0; j < jobs.length; j++ ) {
if ( compare(
filter( 'ready', jobs[j].dependencies ),
jobs[j].dependencies ) )
{
- if ( typeof jobs[j].ready === 'function' ) {
+ if ( $.isFunction( jobs[j].ready ) ) {
jobs[j].ready();
}
jobs.splice( j, 1 );
@@ -595,7 +581,7 @@ window.mediaWiki = new ( function( $ ) {
}
}
// Execute modules who's dependencies have just been met
- for ( r in registry ) {
+ for ( var r in registry ) {
if ( registry[r].state == 'loaded' ) {
if ( compare(
filter( ['ready'], registry[r].dependencies ),
@@ -606,13 +592,10 @@ window.mediaWiki = new ( function( $ ) {
}
}
} catch ( e ) {
- mediaWiki.log( 'Exception thrown by ' + module + ': ' + e.message );
- mediaWiki.log( e );
- registry[module].state = 'error';
// Run error callbacks of jobs affected by this condition
for ( var j = 0; j < jobs.length; j++ ) {
if ( $.inArray( module, jobs[j].dependencies ) !== -1 ) {
- if ( typeof jobs[j].error === 'function' ) {
+ if ( $.isFunction( jobs[j].error ) ) {
jobs[j].error();
}
jobs.splice( j, 1 );
@@ -659,7 +642,7 @@ window.mediaWiki = new ( function( $ ) {
}
}
// Work the queue
- mediaWiki.loader.work();
+ mw.loader.work();
}
function sortQuery(o) {
@@ -675,7 +658,7 @@ window.mediaWiki = new ( function( $ ) {
}
return sorted;
}
-
+
/**
* Converts a module map of the form { foo: [ 'bar', 'baz' ], bar: [ 'baz, 'quux' ] }
* to a query string of the form foo.bar,baz|bar.baz,quux
@@ -688,7 +671,55 @@ window.mediaWiki = new ( function( $ ) {
}
return arr.join( '|' );
}
-
+
+ /**
+ * Adds a script tag to the body, either using document.write or low-level DOM manipulation,
+ * depending on whether document-ready has occured yet.
+ *
+ * @param src String: URL to script, will be used as the src attribute in the script tag
+ * @param callback Function: Optional callback which will be run when the script is done
+ */
+ function addScript( src, callback ) {
+ if ( ready ) {
+ // jQuery's getScript method is NOT better than doing this the old-fashioned way
+ // because jQuery will eval the script's code, and errors will not have sane
+ // line numbers.
+ var script = document.createElement( 'script' );
+ script.setAttribute( 'src', src );
+ script.setAttribute( 'type', 'text/javascript' );
+ if ( $.isFunction( callback ) ) {
+ var done = false;
+ // Attach handlers for all browsers -- this is based on jQuery.getScript
+ script.onload = script.onreadystatechange = function() {
+ if (
+ !done
+ && (
+ !this.readyState
+ || this.readyState === 'loaded'
+ || this.readyState === 'complete'
+ )
+ ) {
+ done = true;
+ callback();
+ // Handle memory leak in IE
+ script.onload = script.onreadystatechange = null;
+ if ( script.parentNode ) {
+ script.parentNode.removeChild( script );
+ }
+ }
+ };
+ }
+ document.body.appendChild( script );
+ } else {
+ document.write( mw.html.element(
+ 'script', { 'type': 'text/javascript', 'src': src }, ''
+ ) );
+ if ( $.isFunction( callback ) ) {
+ // Document.write is synchronous, so this is called when it's done
+ callback();
+ }
+ }
+ }
/* Public Methods */
@@ -710,102 +741,92 @@ window.mediaWiki = new ( function( $ ) {
}
}
}
+ // Early exit if there's nothing to load
+ if ( !batch.length ) {
+ return;
+ }
// Clean up the queue
queue = [];
- // After document ready, handle the batch
- if ( !suspended && batch.length ) {
- // Always order modules alphabetically to help reduce cache
- // misses for otherwise identical content
- batch.sort();
- // Build a list of request parameters
- var base = {
- 'skin': mediaWiki.config.get( 'skin' ),
- 'lang': mediaWiki.config.get( 'wgUserLanguage' ),
- 'debug': mediaWiki.config.get( 'debug' )
- };
- // Extend request parameters with a list of modules in the batch
- var requests = [];
- // Split into groups
- var groups = {};
- for ( var b = 0; b < batch.length; b++ ) {
- var group = registry[batch[b]].group;
- if ( !( group in groups ) ) {
- groups[group] = [];
- }
- groups[group][groups[group].length] = batch[b];
+ // Always order modules alphabetically to help reduce cache
+ // misses for otherwise identical content
+ batch.sort();
+ // Build a list of request parameters
+ var base = {
+ 'skin': mw.config.get( 'skin' ),
+ 'lang': mw.config.get( 'wgUserLanguage' ),
+ 'debug': mw.config.get( 'debug' )
+ };
+ // Extend request parameters with a list of modules in the batch
+ var requests = [];
+ // Split into groups
+ var groups = {};
+ for ( var b = 0; b < batch.length; b++ ) {
+ var group = registry[batch[b]].group;
+ if ( !( group in groups ) ) {
+ groups[group] = [];
}
- for ( var group in groups ) {
- // Calculate the highest timestamp
- var version = 0;
- for ( var g = 0; g < groups[group].length; g++ ) {
- if ( registry[groups[group][g]].version > version ) {
- version = registry[groups[group][g]].version;
- }
- }
- var reqBase = $.extend( { 'version': formatVersionNumber( version ) }, base );
- var reqBaseLength = $.param( reqBase ).length;
- var reqs = [];
- var limit = mw.config.get( 'wgResourceLoaderMaxQueryLength', -1 );
- // We may need to split up the request to honor the query string length limit
- // So build it piece by piece
- var l = reqBaseLength + 9; // '&modules='.length == 9
- var r = 0;
- reqs[0] = {}; // { prefix: [ suffixes ] }
- for ( var i = 0; i < groups[group].length; i++ ) {
- // Determine how many bytes this module would add to the query string
- var lastDotIndex = groups[group][i].lastIndexOf( '.' );
- // Note that these substr() calls work even if lastDotIndex == -1
- var prefix = groups[group][i].substr( 0, lastDotIndex );
- var suffix = groups[group][i].substr( lastDotIndex + 1 );
- var bytesAdded = prefix in reqs[r] ?
- suffix.length + 3 : // '%2C'.length == 3
- groups[group][i].length + 3; // '%7C'.length == 3
-
- // If the request would become too long, create a new one,
- // but don't create empty requests
- if ( limit > 0 && reqs[r] != {} && l + bytesAdded > limit ) {
- // This request would become too long, create a new one
- r++;
- reqs[r] = {};
- l = reqBaseLength + 9;
- }
- if ( !( prefix in reqs[r] ) ) {
- reqs[r][prefix] = [];
- }
- reqs[r][prefix].push( suffix );
- l += bytesAdded;
- }
- for ( var r = 0; r < reqs.length; r++ ) {
- requests[requests.length] = $.extend(
- { 'modules': buildModulesString( reqs[r] ) }, reqBase
- );
+ groups[group][groups[group].length] = batch[b];
+ }
+ for ( var group in groups ) {
+ // Calculate the highest timestamp
+ var version = 0;
+ for ( var g = 0; g < groups[group].length; g++ ) {
+ if ( registry[groups[group][g]].version > version ) {
+ version = registry[groups[group][g]].version;
}
}
- // Clear the batch - this MUST happen before we append the
- // script element to the body or it's possible that the script
- // will be locally cached, instantly load, and work the batch
- // again, all before we've cleared it causing each request to
- // include modules which are already loaded
- batch = [];
- // Asynchronously append a script tag to the end of the body
- function request() {
- var html = '';
- for ( var r = 0; r < requests.length; r++ ) {
- requests[r] = sortQuery( requests[r] );
- // Build out the HTML
- var src = mediaWiki.config.get( 'wgLoadScript' ) + '?' + $.param( requests[r] );
- html += mediaWiki.html.element( 'script',
- { type: 'text/javascript', src: src }, '' );
+ var reqBase = $.extend( { 'version': formatVersionNumber( version ) }, base );
+ var reqBaseLength = $.param( reqBase ).length;
+ var reqs = [];
+ var limit = mw.config.get( 'wgResourceLoaderMaxQueryLength', -1 );
+ // We may need to split up the request to honor the query string length limit
+ // So build it piece by piece
+ var l = reqBaseLength + 9; // '&modules='.length == 9
+ var r = 0;
+ reqs[0] = {}; // { prefix: [ suffixes ] }
+ for ( var i = 0; i < groups[group].length; i++ ) {
+ // Determine how many bytes this module would add to the query string
+ var lastDotIndex = groups[group][i].lastIndexOf( '.' );
+ // Note that these substr() calls work even if lastDotIndex == -1
+ var prefix = groups[group][i].substr( 0, lastDotIndex );
+ var suffix = groups[group][i].substr( lastDotIndex + 1 );
+ var bytesAdded = prefix in reqs[r] ?
+ suffix.length + 3 : // '%2C'.length == 3
+ groups[group][i].length + 3; // '%7C'.length == 3
+
+ // If the request would become too long, create a new one,
+ // but don't create empty requests
+ if ( limit > 0 && reqs[r] != {} && l + bytesAdded > limit ) {
+ // This request would become too long, create a new one
+ r++;
+ reqs[r] = {};
+ l = reqBaseLength + 9;
+ }
+ if ( !( prefix in reqs[r] ) ) {
+ reqs[r][prefix] = [];
}
- return html;
+ reqs[r][prefix].push( suffix );
+ l += bytesAdded;
}
- // Load asynchronously after doumument ready
- if ( ready ) {
- setTimeout( function() { $( 'body' ).append( request() ); }, 0 )
- } else {
- document.write( request() );
+ for ( var r = 0; r < reqs.length; r++ ) {
+ requests[requests.length] = $.extend(
+ { 'modules': buildModulesString( reqs[r] ) }, reqBase
+ );
}
}
+ // Clear the batch - this MUST happen before we append the
+ // script element to the body or it's possible that the script
+ // will be locally cached, instantly load, and work the batch
+ // again, all before we've cleared it causing each request to
+ // include modules which are already loaded
+ batch = [];
+ // Asynchronously append a script tag to the end of the body
+ for ( var r = 0; r < requests.length; r++ ) {
+ requests[r] = sortQuery( requests[r] );
+ // Append &* to avoid triggering the IE6 extension check
+ var src = mw.config.get( 'wgLoadScript' ) + '?' + $.param( requests[r] ) + '&*';
+ addScript( src );
+ }
};
/**
@@ -817,9 +838,9 @@ window.mediaWiki = new ( function( $ ) {
if ( typeof module === 'object' ) {
for ( var m = 0; m < module.length; m++ ) {
if ( typeof module[m] === 'string' ) {
- mediaWiki.loader.register( module[m] );
+ mw.loader.register( module[m] );
} else if ( typeof module[m] === 'object' ) {
- mediaWiki.loader.register.apply( mediaWiki.loader, module[m] );
+ mw.loader.register.apply( mw.loader, module[m] );
}
}
return;
@@ -828,20 +849,20 @@ window.mediaWiki = new ( function( $ ) {
if ( typeof module !== 'string' ) {
throw new Error( 'module must be a string, not a ' + typeof module );
}
- if ( typeof registry[module] !== 'undefined' ) {
- throw new Error( 'module already implemeneted: ' + module );
+ if ( registry[module] !== undefined ) {
+ throw new Error( 'module already implemented: ' + module );
}
// List the module as registered
registry[module] = {
'state': 'registered',
'group': typeof group === 'string' ? group : null,
'dependencies': [],
- 'version': typeof version !== 'undefined' ? parseInt( version ) : 0
+ 'version': version !== undefined ? parseInt( version, 10 ) : 0
};
if ( typeof dependencies === 'string' ) {
// Allow dependencies to be given as a single module name
registry[module].dependencies = [dependencies];
- } else if ( typeof dependencies === 'object' || typeof dependencies === 'function' ) {
+ } else if ( typeof dependencies === 'object' || $.isFunction( dependencies ) ) {
// Allow dependencies to be given as an array of module names
// or a function which returns an array
registry[module].dependencies = dependencies;
@@ -852,44 +873,44 @@ window.mediaWiki = new ( function( $ ) {
* Implements a module, giving the system a course of action to take
* upon loading. Results of a request for one or more modules contain
* calls to this function.
+ *
+ * All arguments are required.
+ *
+ * @param module String: Name of module
+ * @param script Mixed: Function of module code or String of URL to be used as the src
+ * attribute when adding a script element to the body
+ * @param style Object: Object of CSS strings keyed by media-type or Object of lists of URLs
+ * keyed by media-type
+ * @param msgs Object: List of key/value pairs to be passed through mw.messages.set
*/
- this.implement = function( module, script, style, localization ) {
- // Automatically register module
- if ( typeof registry[module] === 'undefined' ) {
- mediaWiki.loader.register( module );
- }
+ this.implement = function( module, script, style, msgs ) {
// Validate input
- if ( typeof script !== 'function' ) {
- throw new Error( 'script must be a function, not a ' + typeof script );
+ if ( typeof module !== 'string' ) {
+ throw new Error( 'module must be a string, not a ' + typeof module );
}
- if ( typeof style !== 'undefined'
- && typeof style !== 'string'
- && typeof style !== 'object' )
- {
- throw new Error( 'style must be a string or object, not a ' + typeof style );
+ if ( !$.isFunction( script ) && !$.isArray( script ) ) {
+ throw new Error( 'script must be a function or an array, not a ' + typeof script );
}
- if ( typeof localization !== 'undefined'
- && typeof localization !== 'object' )
- {
- throw new Error( 'localization must be an object, not a ' + typeof localization );
+ if ( !$.isPlainObject( style ) ) {
+ throw new Error( 'style must be an object, not a ' + typeof style );
}
- if ( typeof registry[module] !== 'undefined'
- && typeof registry[module].script !== 'undefined' )
- {
+ if ( !$.isPlainObject( msgs ) ) {
+ throw new Error( 'msgs must be an object, not a ' + typeof msgs );
+ }
+ // Automatically register module
+ if ( registry[module] === undefined ) {
+ mw.loader.register( module );
+ }
+ // Check for duplicate implementation
+ if ( registry[module] !== undefined && registry[module].script !== undefined ) {
throw new Error( 'module already implemeneted: ' + module );
}
// Mark module as loaded
registry[module].state = 'loaded';
// Attach components
registry[module].script = script;
- if ( typeof style === 'string'
- || typeof style === 'object' && !( style instanceof Array ) )
- {
- registry[module].style = style;
- }
- if ( typeof localization === 'object' ) {
- registry[module].messages = localization;
- }
+ registry[module].style = style;
+ registry[module].messages = msgs;
// Execute or queue callback
if ( compare(
filter( ['ready'], registry[module].dependencies ),
@@ -914,7 +935,7 @@ window.mediaWiki = new ( function( $ ) {
// Validate input
if ( typeof dependencies !== 'object' && typeof dependencies !== 'string' ) {
throw new Error( 'dependencies must be a string or an array, not a ' +
- typeof dependencies )
+ typeof dependencies );
}
// Allow calling with a single dependency as a string
if ( typeof dependencies === 'string' ) {
@@ -924,13 +945,13 @@ window.mediaWiki = new ( function( $ ) {
dependencies = resolve( dependencies );
// If all dependencies are met, execute ready immediately
if ( compare( filter( ['ready'], dependencies ), dependencies ) ) {
- if ( typeof ready === 'function' ) {
+ if ( $.isFunction( ready ) ) {
ready();
}
}
// If any dependencies have errors execute error immediately
else if ( filter( ['error'], dependencies ).length ) {
- if ( typeof error === 'function' ) {
+ if ( $.isFunction( error ) ) {
error();
}
}
@@ -953,26 +974,22 @@ window.mediaWiki = new ( function( $ ) {
this.load = function( modules, type ) {
// Validate input
if ( typeof modules !== 'object' && typeof modules !== 'string' ) {
- throw new Error( 'dependencies must be a string or an array, not a ' +
- typeof dependencies )
+ throw new Error( 'modules must be a string or an array, not a ' +
+ typeof modules );
}
// Allow calling with an external script or single dependency as a string
if ( typeof modules === 'string' ) {
// Support adding arbitrary external scripts
- if ( modules.substr( 0, 7 ) == 'http://' || modules.substr( 0, 8 ) == 'https://' ) {
+ if ( modules.substr( 0, 7 ) === 'http://' || modules.substr( 0, 8 ) === 'https://' || modules.substr( 0, 2 ) === '//' ) {
if ( type === 'text/css' ) {
- $( 'head' )
- .append( $( '<link rel="stylesheet" type="text/css" />' )
- .attr( 'href', modules ) );
+ $( 'head' ).append( $( '<link />', {
+ rel: 'stylesheet',
+ type: 'text/css',
+ href: modules
+ } ) );
return true;
- } else if ( type === 'text/javascript' || typeof type === 'undefined' ) {
- var script = mediaWiki.html.element( 'script',
- { type: 'text/javascript', src: modules }, '' );
- if ( ready ) {
- $( 'body' ).append( script );
- } else {
- document.write( script );
- }
+ } else if ( type === 'text/javascript' || type === undefined ) {
+ addScript( modules );
return true;
}
// Unknown type
@@ -999,14 +1016,6 @@ window.mediaWiki = new ( function( $ ) {
};
/**
- * Flushes the request queue and begin executing load requests on demand
- */
- this.go = function() {
- suspended = false;
- mediaWiki.loader.work();
- };
-
- /**
* Changes the state of a module
*
* @param module string module name or object of module name/state pairs
@@ -1015,12 +1024,12 @@ window.mediaWiki = new ( function( $ ) {
this.state = function( module, state ) {
if ( typeof module === 'object' ) {
for ( var m in module ) {
- mediaWiki.loader.state( m, module[m] );
+ mw.loader.state( m, module[m] );
}
return;
}
if ( !( module in registry ) ) {
- mediaWiki.loader.register( module );
+ mw.loader.register( module );
}
registry[module].state = state;
};
@@ -1030,12 +1039,35 @@ window.mediaWiki = new ( function( $ ) {
*
* @param module string name of module to get version for
*/
- this.version = function( module ) {
+ this.getVersion = function( module ) {
if ( module in registry && 'version' in registry[module] ) {
return formatVersionNumber( registry[module].version );
}
return null;
};
+ /**
+ * @deprecated use mw.loader.getVersion() instead
+ */
+ this.version = function() {
+ return mediaWiki.loader.getVersion.apply( mediaWiki.loader, arguments );
+ };
+
+ /**
+ * Gets the state of a module
+ *
+ * @param module string name of module to get state for
+ */
+ this.getState = function( module ) {
+ if ( module in registry && 'state' in registry[module] ) {
+ return registry[module].state;
+ }
+ return null;
+ };
+
+ /**
+ * For backwards-compatibility with Squid-cached pages. Loads mw.user
+ */
+ this.go = function() { mw.loader.load( 'mediawiki.user' ); };
/* Cache document ready status */
@@ -1044,7 +1076,7 @@ window.mediaWiki = new ( function( $ ) {
/** HTML construction helper functions */
this.html = new ( function () {
- function escapeCallback( s ) {
+ var escapeCallback = function( s ) {
switch ( s ) {
case "'":
return '&#039;';
@@ -1057,7 +1089,7 @@ window.mediaWiki = new ( function( $ ) {
case '&':
return '&amp;';
}
- }
+ };
/**
* Escape a string for HTML. Converts special characters to HTML entities.
@@ -1068,14 +1100,14 @@ window.mediaWiki = new ( function( $ ) {
};
/**
- * Wrapper object for raw HTML passed to mediaWiki.html.element().
+ * Wrapper object for raw HTML passed to mw.html.element().
*/
this.Raw = function( value ) {
this.value = value;
};
/**
- * Wrapper object for CDATA element contents passed to mediaWiki.html.element()
+ * Wrapper object for CDATA element contents passed to mw.html.element()
*/
this.Cdata = function( value ) {
this.value = value;
@@ -1095,7 +1127,7 @@ window.mediaWiki = new ( function( $ ) {
* See http://www.w3.org/TR/1999/REC-html401-19991224/appendix/notes.html#h-B.3.2
*
* Example:
- * var h = mediaWiki.html;
+ * var h = mw.html;
* return h.element( 'div', {},
* new h.Raw( h.element( 'img', {src: '<'} ) ) );
* Returns <div><img src="&lt;"/></div>
@@ -1105,14 +1137,14 @@ window.mediaWiki = new ( function( $ ) {
for ( var attrName in attrs ) {
s += ' ' + attrName + '="' + this.escape( attrs[attrName] ) + '"';
}
- if ( typeof contents == 'undefined' || contents === null ) {
+ if ( contents === undefined || contents === null ) {
// Self close tag
s += '/>';
return s;
}
// Regular open tag
s += '>';
- if ( typeof contents === 'string') {
+ if ( typeof contents === 'string' ) {
// Escaped
s += this.escape( contents );
} else if ( contents instanceof this.Raw ) {
@@ -1132,23 +1164,21 @@ window.mediaWiki = new ( function( $ ) {
};
} )();
-
/* Extension points */
this.legacy = {};
} )( jQuery );
+// Alias $j to jQuery for backwards compatibility
+window.$j = jQuery;
+
+// Global alias
+window.mw = mediaWiki;
+
/* Auto-register from pre-loaded startup scripts */
-if ( typeof startUp === 'function' ) {
+if ( jQuery.isFunction( startUp ) ) {
startUp();
delete startUp;
}
-
-// Add jQuery Cookie to initial payload (used in mediaWiki.user)
-mediaWiki.loader.load( 'jquery.cookie' );
-
-// Alias $j to jQuery for backwards compatibility
-window.$j = jQuery;
-window.mw = mediaWiki;
diff --git a/resources/mediawiki/mediawiki.log.js b/resources/mediawiki/mediawiki.log.js
index 55bf77f0..38f3411f 100644
--- a/resources/mediawiki/mediawiki.log.js
+++ b/resources/mediawiki/mediawiki.log.js
@@ -2,7 +2,7 @@
* Implementation for mediaWiki.log stub
*/
-(function ($, mw) {
+(function( $ ) {
/**
* Log output to the console.
@@ -13,16 +13,16 @@
*
* @author Michael Dale <mdale@wikimedia.org>
* @author Trevor Parscal <tparscal@wikimedia.org>
- * @param {string} string Message to output to console
+ * @param logmsg string Message to output to console.
*/
- mediaWiki.log = function( string ) {
- // Allow log messages to use a configured prefix
+ mw.log = function( logmsg ) {
+ // Allow log messages to use a configured prefix to identify the source window (ie. frame)
if ( mw.config.exists( 'mw.log.prefix' ) ) {
- string = mw.config.get( 'mw.log.prefix' ) + '> ' + string;
+ logmsg = mw.config.get( 'mw.log.prefix' ) + '> ' + logmsg;
}
// Try to use an existing console
- if ( typeof window.console !== 'undefined' && typeof window.console.log == 'function' ) {
- window.console.log( string );
+ if ( window.console !== undefined && $.isFunction( window.console.log ) ) {
+ window.console.log( logmsg );
} else {
// Set timestamp
var d = new Date();
@@ -35,7 +35,7 @@
if ( !$log.length ) {
$log = $( '<div id="mw-log-console"></div>' )
.css( {
- 'position': 'absolute',
+ 'position': 'fixed',
'overflow': 'auto',
'z-index': 500,
'bottom': '0px',
@@ -44,8 +44,10 @@
'height': '150px',
'background-color': 'white',
'border-top': 'solid 2px #ADADAD'
- } )
- .appendTo( 'body' );
+ } );
+ $( 'body' )
+ .css( 'padding-bottom', '150px' ) // don't hide anything
+ .append( $log );
}
$log.append(
$( '<div></div>' )
@@ -53,12 +55,13 @@
'border-bottom': 'solid 1px #DDDDDD',
'font-size': 'small',
'font-family': 'monospace',
+ 'white-space': 'pre-wrap',
'padding': '0.125em 0.25em'
} )
- .text( string )
- .append( '<span style="float:right">[' + time + ']</span>' )
+ .text( logmsg )
+ .prepend( '<span style="float:right">[' + time + ']</span>' )
);
}
};
-})(jQuery, mediaWiki);
+})(jQuery);
diff --git a/resources/mediawiki/mediawiki.user.js b/resources/mediawiki/mediawiki.user.js
new file mode 100644
index 00000000..b0176cf4
--- /dev/null
+++ b/resources/mediawiki/mediawiki.user.js
@@ -0,0 +1,181 @@
+/*
+ * Implementation for mediaWiki.log stub
+ */
+
+(function( $ ) {
+
+ /**
+ * User object
+ */
+ function User() {
+
+ /* Private Members */
+
+ var that = this;
+
+ /* Public Members */
+
+ this.options = new mw.Map();
+
+ this.tokens = new mw.Map();
+
+ /* Public Methods */
+
+ /**
+ * Generates a random user session ID (32 alpha-numeric characters).
+ *
+ * This information would potentially be stored in a cookie to identify a user during a
+ * session or series of sessions. It's uniqueness should not be depended on.
+ *
+ * @return String: Random set of 32 alpha-numeric characters
+ */
+ function generateId() {
+ var id = '';
+ var seed = '0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';
+ for ( var i = 0, r; i < 32; i++ ) {
+ r = Math.floor( Math.random() * seed.length );
+ id += seed.substring( r, r + 1 );
+ }
+ return id;
+ }
+
+ /**
+ * Gets the current user's name.
+ *
+ * @return Mixed: User name string or null if users is anonymous
+ */
+ this.name = function() {
+ return mw.config.get( 'wgUserName' );
+ };
+
+ /**
+ * Checks if the current user is anonymous.
+ *
+ * @return Boolean
+ */
+ this.anonymous = function() {
+ return that.name() ? false : true;
+ };
+
+ /**
+ * Gets a random session ID automatically generated and kept in a cookie.
+ *
+ * This ID is ephemeral for everyone, staying in their browser only until they close
+ * their browser.
+ *
+ * @return String: User name or random session ID
+ */
+ this.sessionId = function () {
+ var sessionId = $.cookie( 'mediaWiki.user.sessionId' );
+ if ( typeof sessionId == 'undefined' || sessionId === null ) {
+ sessionId = generateId();
+ $.cookie( 'mediaWiki.user.sessionId', sessionId, { 'expires': null, 'path': '/' } );
+ }
+ return sessionId;
+ };
+
+ /**
+ * Gets the current user's name or a random ID automatically generated and kept in a cookie.
+ *
+ * This ID is persistent for anonymous users, staying in their browser up to 1 year. The
+ * expiration time is reset each time the ID is queried, so in most cases this ID will
+ * persist until the browser's cookies are cleared or the user doesn't visit for 1 year.
+ *
+ * @return String: User name or random session ID
+ */
+ this.id = function() {
+ var name = that.name();
+ if ( name ) {
+ return name;
+ }
+ var id = $.cookie( 'mediaWiki.user.id' );
+ if ( typeof id == 'undefined' || id === null ) {
+ id = generateId();
+ }
+ // Set cookie if not set, or renew it if already set
+ $.cookie( 'mediaWiki.user.id', id, { 'expires': 365, 'path': '/' } );
+ return id;
+ };
+
+ /**
+ * Gets the user's bucket, placing them in one at random based on set odds if needed.
+ *
+ * @param key String: Name of bucket
+ * @param options Object: Bucket configuration options
+ * @param options.buckets Object: List of bucket-name/relative-probability pairs (required,
+ * must have at least one pair)
+ * @param options.version Number: Version of bucket test, changing this forces rebucketing
+ * (optional, default: 0)
+ * @param options.tracked Boolean: Track the event of bucketing through the API module of
+ * the ClickTracking extension (optional, default: false)
+ * @param options.expires Number: Length of time (in days) until the user gets rebucketed
+ * (optional, default: 30)
+ * @return String: Bucket name - the randomly chosen key of the options.buckets object
+ *
+ * @example
+ * mw.user.bucket( 'test', {
+ * 'buckets': { 'ignored': 50, 'control': 25, 'test': 25 },
+ * 'version': 1,
+ * 'tracked': true,
+ * 'expires': 7
+ * } );
+ */
+ this.bucket = function( key, options ) {
+ options = $.extend( {
+ 'buckets': {},
+ 'version': 0,
+ 'tracked': false,
+ 'expires': 30
+ }, options || {} );
+ var cookie = $.cookie( 'mediaWiki.user.bucket:' + key );
+ var bucket = null;
+ var version = 0;
+ // Bucket information is stored as 2 integers, together as version:bucket like: "1:2"
+ if ( typeof cookie === 'string' && cookie.length > 2 && cookie.indexOf( ':' ) > 0 ) {
+ var parts = cookie.split( ':' );
+ if ( parts.length > 1 && parts[0] == options.version ) {
+ version = Number( parts[0] );
+ bucket = String( parts[1] );
+ }
+ }
+ if ( bucket === null ) {
+ if ( !$.isPlainObject( options.buckets ) ) {
+ throw 'Invalid buckets error. Object expected for options.buckets.';
+ }
+ version = Number( options.version );
+ // Find range
+ var range = 0, k;
+ for ( k in options.buckets ) {
+ range += options.buckets[k];
+ }
+ // Select random value within range
+ var rand = Math.random() * range;
+ // Determine which bucket the value landed in
+ var total = 0;
+ for ( k in options.buckets ) {
+ bucket = k;
+ total += options.buckets[k];
+ if ( total >= rand ) {
+ break;
+ }
+ }
+ if ( options.tracked ) {
+ mw.loader.using( 'jquery.clickTracking', function() {
+ $.trackAction(
+ 'mediaWiki.user.bucket:' + key + '@' + version + ':' + bucket
+ );
+ } );
+ }
+ $.cookie(
+ 'mediaWiki.user.bucket:' + key,
+ version + ':' + bucket,
+ { 'path': '/', 'expires': Number( options.expires ) }
+ );
+ }
+ return bucket;
+ };
+ }
+
+ mw.user = new User();
+
+})(jQuery); \ No newline at end of file
diff --git a/resources/mediawiki/mediawiki.util.js b/resources/mediawiki/mediawiki.util.js
new file mode 100644
index 00000000..71875835
--- /dev/null
+++ b/resources/mediawiki/mediawiki.util.js
@@ -0,0 +1,598 @@
+/**
+ * Utilities
+ */
+( function( $ ) {
+
+ // Local cache and alias
+ var util = mw.util = {
+
+ /* Initialisation */
+ /**
+ * @var boolean Wether or not already initialised
+ */
+ 'initialised' : false,
+ 'init' : function() {
+ if ( this.initialised === false ) {
+ this.initialised = true;
+
+ // Folllowing the initialisation after the DOM is ready
+ $(document).ready( function() {
+
+ /* Set up $.messageBox */
+ $.messageBoxNew( {
+ 'id': 'mw-js-message',
+ 'parent': '#content'
+ } );
+
+ // Shortcut to client profile return
+ var profile = $.client.profile();
+
+ /* Set tooltipAccessKeyPrefix */
+
+ // Opera on any platform
+ if ( profile.name == 'opera' ) {
+ util.tooltipAccessKeyPrefix = 'shift-esc-';
+
+ // Chrome on any platform
+ } else if ( profile.name == 'chrome' ) {
+ // Chrome on Mac or Chrome on other platform ?
+ util.tooltipAccessKeyPrefix = ( profile.platform == 'mac'
+ ? 'ctrl-option-' : 'alt-' );
+
+ // Non-Windows Safari with webkit_version > 526
+ } else if ( profile.platform !== 'win'
+ && profile.name == 'safari'
+ && profile.layoutVersion > 526 ) {
+ util.tooltipAccessKeyPrefix = 'ctrl-alt-';
+
+ // Safari/Konqueror on any platform, or any browser on Mac
+ // (but not Safari on Windows)
+ } else if ( !( profile.platform == 'win' && profile.name == 'safari' )
+ && ( profile.name == 'safari'
+ || profile.platform == 'mac'
+ || profile.name == 'konqueror' ) ) {
+ util.tooltipAccessKeyPrefix = 'ctrl-';
+
+ // Firefox 2.x and later
+ } else if ( profile.name == 'firefox' && profile.versionBase > '1' ) {
+ util.tooltipAccessKeyPrefix = 'alt-shift-';
+ }
+
+ /* Fill $content var */
+ if ( $( '#bodyContent' ).length ) {
+ // Vector, Monobook, Chick etc.
+ util.$content = $( '#bodyContent' );
+
+ } else if ( $( '#mw_contentholder' ).length ) {
+ // Modern
+ util.$content = $( '#mw_contentholder' );
+
+ } else if ( $( '#article' ).length ) {
+ // Standard, CologneBlue
+ util.$content = $( '#article' );
+
+ } else {
+ // #content is present on almost all if not all skins. Most skins (the above cases)
+ // have #content too, but as an outer wrapper instead of the article text container.
+ // The skins that don't have an outer wrapper do have #content for everything
+ // so it's a good fallback
+ util.$content = $( '#content' );
+ }
+
+ /* Table of Contents toggle */
+ var $tocContainer = $( '#toc' ),
+ $tocTitle = $( '#toctitle' ),
+ $tocToggleLink = $( '#togglelink' );
+ // Only add it if there is a TOC and there is no toggle added already
+ if ( $tocContainer.size() && $tocTitle.size() && !$tocToggleLink.size() ) {
+ var hideTocCookie = $.cookie( 'mw_hidetoc' );
+ $tocToggleLink = $( '<a href="#" class="internal" id="togglelink"></a>' )
+ .text( mw.msg( 'hidetoc' ) )
+ .click( function(e){
+ e.preventDefault();
+ util.toggleToc( $(this) );
+ } );
+ $tocTitle.append( $tocToggleLink.wrap( '<span class="toctoggle"></span>' ).parent().prepend( '&nbsp;[' ).append( ']&nbsp;' ) );
+
+ if ( hideTocCookie == '1' ) {
+ // Cookie says user want toc hidden
+ $tocToggleLink.click();
+ }
+ }
+ } );
+
+ return true;
+ }
+ return false;
+ },
+
+ /* Main body */
+
+ /**
+ * Encode the string like PHP's rawurlencode
+ *
+ * @param str string String to be encoded
+ */
+ 'rawurlencode' : function( str ) {
+ str = ( str + '' ).toString();
+ return encodeURIComponent( str )
+ .replace( /!/g, '%21' ).replace( /'/g, '%27' ).replace( /\(/g, '%28' )
+ .replace( /\)/g, '%29' ).replace( /\*/g, '%2A' ).replace( /~/g, '%7E' );
+ },
+
+ /**
+ * Encode page titles for use in a URL
+ * We want / and : to be included as literal characters in our title URLs
+ * as they otherwise fatally break the title
+ *
+ * @param str string String to be encoded
+ */
+ 'wikiUrlencode' : function( str ) {
+ return this.rawurlencode( str )
+ .replace( /%20/g, '_' ).replace( /%3A/g, ':' ).replace( /%2F/g, '/' );
+ },
+
+ /**
+ * Get the link to a page name (relative to wgServer)
+ *
+ * @param str string Page name to get the link for.
+ * @return string Location for a page with name of 'str' or boolean false on error.
+ */
+ 'wikiGetlink' : function( str ) {
+ return mw.config.get( 'wgArticlePath' ).replace( '$1',
+ this.wikiUrlencode( str || mw.config.get( 'wgPageName' ) ) );
+ },
+
+ /**
+ * Get address to a script in the wiki root.
+ * For index.php use mw.config.get( 'wgScript' )
+ *
+ * @param str string Name of script (eg. 'api'), defaults to 'index'
+ * @return string Address to script (eg. '/w/api.php' )
+ */
+ 'wikiScript' : function( str ) {
+ return mw.config.get( 'wgScriptPath' ) + '/' + ( str || 'index' ) + mw.config.get( 'wgScriptExtension' );
+ },
+
+ /**
+ * Append a new style block to the head
+ *
+ * @param text string CSS to be appended
+ * @return CSSStyleSheet
+ */
+ 'addCSS' : function( text ) {
+ var s = document.createElement( 'style' );
+ s.type = 'text/css';
+ s.rel = 'stylesheet';
+ if ( s.styleSheet ) {
+ s.styleSheet.cssText = text; // IE
+ } else {
+ s.appendChild( document.createTextNode( text + '' ) ); // Safari sometimes borks on null
+ }
+ document.getElementsByTagName('head')[0].appendChild( s );
+ return s.sheet || s;
+ },
+
+ /**
+ * Hide/show the table of contents element
+ *
+ * @param $toggleLink jQuery A jQuery object of the toggle link.
+ * @param callback function Function to be called after the toggle is
+ * completed (including the animation) (optional)
+ * @return mixed Boolean visibility of the toc (true if it's visible)
+ * or Null if there was no table of contents.
+ */
+ 'toggleToc' : function( $toggleLink, callback ) {
+ var $tocList = $( '#toc ul:first' );
+
+ // This function shouldn't be called if there's no TOC,
+ // but just in case...
+ if ( $tocList.size() ) {
+ if ( $tocList.is( ':hidden' ) ) {
+ $tocList.slideDown( 'fast', callback );
+ $toggleLink.text( mw.msg( 'hidetoc' ) );
+ $( '#toc' ).removeClass( 'tochidden' );
+ $.cookie( 'mw_hidetoc', null, {
+ expires: 30,
+ path: '/'
+ } );
+ return true;
+ } else {
+ $tocList.slideUp( 'fast', callback );
+ $toggleLink.text( mw.msg( 'showtoc' ) );
+ $( '#toc' ).addClass( 'tochidden' );
+ $.cookie( 'mw_hidetoc', '1', {
+ expires: 30,
+ path: '/'
+ } );
+ return false;
+ }
+ } else {
+ return null;
+ }
+ },
+
+ /**
+ * Grab the URL parameter value for the given parameter.
+ * Returns null if not found.
+ *
+ * @param param string The parameter name.
+ * @param url string URL to search through (optional)
+ * @return mixed Parameter value or null.
+ */
+ 'getParamValue' : function( param, url ) {
+ url = url ? url : document.location.href;
+ // Get last match, stop at hash
+ var re = new RegExp( '^[^#]*[&?]' + $.escapeRE( param ) + '=([^&#]*)' );
+ var m = re.exec( url );
+ if ( m && m.length > 1 ) {
+ // Beware that decodeURIComponent is not required to understand '+'
+ // by spec, as encodeURIComponent does not produce it.
+ return decodeURIComponent( m[1].replace( /\+/g, '%20' ) );
+ }
+ return null;
+ },
+
+ /**
+ * @var string
+ * Access key prefix. Will be re-defined based on browser/operating system
+ * detection in mw.util.init().
+ */
+ 'tooltipAccessKeyPrefix' : 'alt-',
+
+ /**
+ * @var RegExp
+ * Regex to match accesskey tooltips.
+ */
+ 'tooltipAccessKeyRegexp': /\[(ctrl-)?(alt-)?(shift-)?(esc-)?(.)\]$/,
+
+ /**
+ * Add the appropriate prefix to the accesskey shown in the tooltip.
+ * If the nodeList parameter is given, only those nodes are updated;
+ * otherwise, all the nodes that will probably have accesskeys by
+ * default are updated.
+ *
+ * @param nodeList {Array|jQuery} (optional) A jQuery object, or array of elements to update.
+ */
+ 'updateTooltipAccessKeys' : function( nodeList ) {
+ var $nodes;
+ if ( !nodeList ) {
+
+ // Rather than scanning all links, just the elements that
+ // contain the relevant links
+ this.updateTooltipAccessKeys(
+ $( '#column-one a, #mw-head a, #mw-panel a, #p-logo a' ) );
+
+ // these are rare enough that no such optimization is needed
+ this.updateTooltipAccessKeys( $( 'input' ) );
+ this.updateTooltipAccessKeys( $( 'label' ) );
+
+ return;
+
+ } else if ( nodeList instanceof jQuery ) {
+ $nodes = nodeList;
+ } else {
+ $nodes = $( nodeList );
+ }
+
+ $nodes.each( function ( i ) {
+ var tip = $(this).attr( 'title' );
+ if ( !!tip && util.tooltipAccessKeyRegexp.exec( tip ) ) {
+ tip = tip.replace( util.tooltipAccessKeyRegexp,
+ '[' + util.tooltipAccessKeyPrefix + "$5]" );
+ $(this).attr( 'title', tip );
+ }
+ } );
+ },
+
+ /*
+ * @var jQuery
+ * A jQuery object that refers to the page-content element
+ * Populated by init().
+ */
+ '$content' : null,
+
+ /**
+ * Add a link to a portlet menu on the page, such as:
+ *
+ * p-cactions (Content actions), p-personal (Personal tools),
+ * p-navigation (Navigation), p-tb (Toolbox)
+ *
+ * The first three paramters are required, the others are optional and
+ * may be null. Though providing an id and tooltip is recommended.
+ *
+ * By default the new link will be added to the end of the list. To
+ * add the link before a given existing item, pass the DOM node
+ * (document.getElementById( 'foobar' )) or the jQuery-selector
+ * ( '#foobar' ) of that item.
+ *
+ * @example mw.util.addPortletLink(
+ * 'p-tb', 'http://mediawiki.org/',
+ * 'MediaWiki.org', 't-mworg', 'Go to MediaWiki.org ', 'm', '#t-print'
+ * )
+ *
+ * @param portlet string ID of the target portlet ( 'p-cactions' or 'p-personal' etc.)
+ * @param href string Link URL
+ * @param text string Link text
+ * @param id string ID of the new item, should be unique and preferably have
+ * the appropriate prefix ( 'ca-', 'pt-', 'n-' or 't-' )
+ * @param tooltip string Text to show when hovering over the link, without accesskey suffix
+ * @param accesskey string Access key to activate this link (one character, try
+ * to avoid conflicts. Use $( '[accesskey=x]' ).get() in the console to
+ * see if 'x' is already used.
+ * @param nextnode mixed DOM Node or jQuery-selector string of the item that the new
+ * item should be added before, should be another item in the same
+ * list, it will be ignored otherwise
+ *
+ * @return mixed The DOM Node of the added item (a ListItem or Anchor element,
+ * depending on the skin) or null if no element was added to the document.
+ */
+ 'addPortletLink' : function( portlet, href, text, id, tooltip, accesskey, nextnode ) {
+
+ // Check if there's atleast 3 arguments to prevent a TypeError
+ if ( arguments.length < 3 ) {
+ return null;
+ }
+ // Setup the anchor tag
+ var $link = $( '<a></a>' ).attr( 'href', href ).text( text );
+ if ( tooltip ) {
+ $link.attr( 'title', tooltip );
+ }
+
+ // Some skins don't have any portlets
+ // just add it to the bottom of their 'sidebar' element as a fallback
+ switch ( mw.config.get( 'skin' ) ) {
+ case 'standard' :
+ case 'cologneblue' :
+ $( '#quickbar' ).append( $link.after( '<br />' ) );
+ return $link[0];
+ case 'nostalgia' :
+ $( '#searchform' ).before( $link).before( ' &#124; ' );
+ return $link[0];
+ default : // Skins like chick, modern, monobook, myskin, simple, vector...
+
+ // Select the specified portlet
+ var $portlet = $( '#' + portlet );
+ if ( $portlet.length === 0 ) {
+ return null;
+ }
+ // Select the first (most likely only) unordered list inside the portlet
+ var $ul = $portlet.find( 'ul' );
+
+ // If it didn't have an unordered list yet, create it
+ if ( $ul.length === 0 ) {
+ // If there's no <div> inside, append it to the portlet directly
+ if ( $portlet.find( 'div:first' ).length === 0 ) {
+ $portlet.append( '<ul></ul>' );
+ } else {
+ // otherwise if there's a div (such as div.body or div.pBody)
+ // append the <ul> to last (most likely only) div
+ $portlet.find( 'div' ).eq( -1 ).append( '<ul></ul>' );
+ }
+ // Select the created element
+ $ul = $portlet.find( 'ul' ).eq( 0 );
+ }
+ // Just in case..
+ if ( $ul.length === 0 ) {
+ return null;
+ }
+
+ // Unhide portlet if it was hidden before
+ $portlet.removeClass( 'emptyPortlet' );
+
+ // Wrap the anchor tag in a list item (and a span if $portlet is a Vector tab)
+ // and back up the selector to the list item
+ var $item;
+ if ( $portlet.hasClass( 'vectorTabs' ) ) {
+ $item = $link.wrap( '<li><span></span></li>' ).parent().parent();
+ } else {
+ $item = $link.wrap( '<li></li>' ).parent();
+ }
+
+ // Implement the properties passed to the function
+ if ( id ) {
+ $item.attr( 'id', id );
+ }
+ if ( accesskey ) {
+ $link.attr( 'accesskey', accesskey );
+ tooltip += ' [' + accesskey + ']';
+ $link.attr( 'title', tooltip );
+ }
+ if ( accesskey && tooltip ) {
+ this.updateTooltipAccessKeys( $link );
+ }
+
+ // Where to put our node ?
+ // - nextnode is a DOM element (before MW 1.17, in wikibits.js, this was the only option)
+ if ( nextnode && nextnode.parentNode == $ul[0] ) {
+ $(nextnode).before( $item );
+
+ // - nextnode is a CSS selector for jQuery
+ } else if ( typeof nextnode == 'string' && $ul.find( nextnode ).length !== 0 ) {
+ $ul.find( nextnode ).eq( 0 ).before( $item );
+
+
+ // If the jQuery selector isn't found within the <ul>,
+ // or if nextnode was invalid or not passed at all,
+ // then just append it at the end of the <ul> (this is the default behaviour)
+ } else {
+ $ul.append( $item );
+ }
+
+
+ return $item[0];
+ }
+ },
+
+ /**
+ * Add a little box at the top of the screen to inform the user of
+ * something, replacing any previous message.
+ * Calling with no arguments, with an empty string or null will hide the message
+ *
+ * @param message mixed The DOM-element or HTML-string to be put inside the message box.
+ * @param className string Used in adding a class; should be different for each call
+ * to allow CSS/JS to hide different boxes. null = no class used.
+ * @return boolean True on success, false on failure.
+ */
+ 'jsMessage' : function( message, className ) {
+
+ if ( !arguments.length || message === '' || message === null ) {
+
+ $( '#mw-js-message' ).empty().hide();
+ return true; // Emptying and hiding message is intended behaviour, return true
+
+ } else {
+ // We special-case skin structures provided by the software. Skins that
+ // choose to abandon or significantly modify our formatting can just define
+ // an mw-js-message div to start with.
+ var $messageDiv = $( '#mw-js-message' );
+ if ( !$messageDiv.length ) {
+ $messageDiv = $( '<div id="mw-js-message">' );
+ if ( util.$content.parent().length ) {
+ util.$content.parent().prepend( $messageDiv );
+ } else {
+ return false;
+ }
+ }
+
+ if ( className ) {
+ $messageDiv.attr( 'class', 'mw-js-message-' + className );
+ }
+
+ if ( typeof message === 'object' ) {
+ $messageDiv.empty();
+ $messageDiv.append( message ); // Append new content
+ } else {
+ $messageDiv.html( message );
+ }
+
+ $messageDiv.slideDown();
+ return true;
+ }
+ },
+
+ /**
+ * Validate a string as representing a valid e-mail address
+ * according to HTML5 specification. Please note the specification
+ * does not validate a domain with one character.
+ *
+ * @todo FIXME: should be moved to or replaced by a JavaScript validation module.
+ *
+ * @param mailtxt string E-mail address to be validated.
+ * @return mixed Null if mailtxt was an empty string, otherwise true/false
+ * is determined by validation.
+ */
+ 'validateEmail' : function( mailtxt ) {
+ if( mailtxt === '' ) {
+ return null;
+ }
+
+ /**
+ * HTML5 defines a string as valid e-mail address if it matches
+ * the ABNF:
+ * 1 * ( atext / "." ) "@" ldh-str 1*( "." ldh-str )
+ * With:
+ * - atext : defined in RFC 5322 section 3.2.3
+ * - ldh-str : defined in RFC 1034 section 3.5
+ *
+ * (see STD 68 / RFC 5234 http://tools.ietf.org/html/std68):
+ */
+
+ /**
+ * First, define the RFC 5322 'atext' which is pretty easy :
+ * atext = ALPHA / DIGIT / ; Printable US-ASCII
+ "!" / "#" / ; characters not including
+ "$" / "%" / ; specials. Used for atoms.
+ "&" / "'" /
+ "*" / "+" /
+ "-" / "/" /
+ "=" / "?" /
+ "^" / "_" /
+ "`" / "{" /
+ "|" / "}" /
+ "~"
+ */
+ var rfc5322_atext = "a-z0-9!#$%&'*+\\-/=?^_`{|}~",
+
+ /**
+ * Next define the RFC 1034 'ldh-str'
+ * <domain> ::= <subdomain> | " "
+ * <subdomain> ::= <label> | <subdomain> "." <label>
+ * <label> ::= <letter> [ [ <ldh-str> ] <let-dig> ]
+ * <ldh-str> ::= <let-dig-hyp> | <let-dig-hyp> <ldh-str>
+ * <let-dig-hyp> ::= <let-dig> | "-"
+ * <let-dig> ::= <letter> | <digit>
+ */
+ rfc1034_ldh_str = "a-z0-9\\-",
+
+ HTML5_email_regexp = new RegExp(
+ // start of string
+ '^'
+ +
+ // User part which is liberal :p
+ '[' + rfc5322_atext + '\\.]+'
+ +
+ // 'at'
+ '@'
+ +
+ // Domain first part
+ '[' + rfc1034_ldh_str + ']+'
+ +
+ // Optional second part and following are separated by a dot
+ '(?:\\.[' + rfc1034_ldh_str + ']+)*'
+ +
+ // End of string
+ '$',
+ // RegExp is case insensitive
+ 'i'
+ );
+ return (null !== mailtxt.match( HTML5_email_regexp ) );
+ },
+
+ /**
+ * Note: borrows from IP::isIPv4
+ *
+ * @param address string
+ * @param allowBlock boolean
+ * @return boolean
+ */
+ 'isIPv4Address' : function( address, allowBlock ) {
+ var block = allowBlock ? '(?:\\/(?:3[0-2]|[12]?\\d))?' : '';
+ var RE_IP_BYTE = '(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|0?[0-9]?[0-9])';
+ var RE_IP_ADD = '(?:' + RE_IP_BYTE + '\\.){3}' + RE_IP_BYTE;
+ return typeof address === 'string' && address.search( new RegExp( '^' + RE_IP_ADD + block + '$' ) ) != -1;
+ },
+ /**
+ * Note: borrows from IP::isIPv6
+ *
+ * @param address string
+ * @param allowBlock boolean
+ * @return boolean
+ */
+ 'isIPv6Address' : function( address, allowBlock ) {
+ if ( typeof address !== 'string' ) {
+ return false;
+ }
+ var block = allowBlock ? '(?:\\/(?:12[0-8]|1[01][0-9]|[1-9]?\\d))?' : '';
+ var RE_IPV6_ADD =
+ '(?:' + // starts with "::" (including "::")
+ ':(?::|(?::' + '[0-9A-Fa-f]{1,4}' + '){1,7})' +
+ '|' + // ends with "::" (except "::")
+ '[0-9A-Fa-f]{1,4}' + '(?::' + '[0-9A-Fa-f]{1,4}' + '){0,6}::' +
+ '|' + // contains no "::"
+ '[0-9A-Fa-f]{1,4}' + '(?::' + '[0-9A-Fa-f]{1,4}' + '){7}' +
+ ')';
+ if ( address.search( new RegExp( '^' + RE_IPV6_ADD + block + '$' ) ) != -1 ) {
+ return true;
+ }
+ RE_IPV6_ADD = // contains one "::" in the middle (single '::' check below)
+ '[0-9A-Fa-f]{1,4}' + '(?:::?' + '[0-9A-Fa-f]{1,4}' + '){1,6}';
+ return address.search( new RegExp( '^' + RE_IPV6_ADD + block + '$' ) ) != -1
+ && address.search( /::/ ) != -1 && address.search( /::.*::/ ) == -1;
+ }
+
+ };
+
+ util.init();
+
+} )( jQuery );
diff --git a/serialized/Utf8Case.ser b/serialized/Utf8Case.ser
index 06a58f15..414500bd 100644
--- a/serialized/Utf8Case.ser
+++ b/serialized/Utf8Case.ser
@@ -1 +1 @@
-a:2:{s:14:"wikiUpperChars";a:1031:{s:1:"a";s:1:"A";s:1:"b";s:1:"B";s:1:"c";s:1:"C";s:1:"d";s:1:"D";s:1:"e";s:1:"E";s:1:"f";s:1:"F";s:1:"g";s:1:"G";s:1:"h";s:1:"H";s:1:"i";s:1:"I";s:1:"j";s:1:"J";s:1:"k";s:1:"K";s:1:"l";s:1:"L";s:1:"m";s:1:"M";s:1:"n";s:1:"N";s:1:"o";s:1:"O";s:1:"p";s:1:"P";s:1:"q";s:1:"Q";s:1:"r";s:1:"R";s:1:"s";s:1:"S";s:1:"t";s:1:"T";s:1:"u";s:1:"U";s:1:"v";s:1:"V";s:1:"w";s:1:"W";s:1:"x";s:1:"X";s:1:"y";s:1:"Y";s:1:"z";s:1:"Z";s:2:"µ";s:2:"Îœ";s:2:"à";s:2:"À";s:2:"á";s:2:"Ã";s:2:"â";s:2:"Â";s:2:"ã";s:2:"Ã";s:2:"ä";s:2:"Ä";s:2:"Ã¥";s:2:"Ã…";s:2:"æ";s:2:"Æ";s:2:"ç";s:2:"Ç";s:2:"è";s:2:"È";s:2:"é";s:2:"É";s:2:"ê";s:2:"Ê";s:2:"ë";s:2:"Ë";s:2:"ì";s:2:"ÃŒ";s:2:"í";s:2:"Ã";s:2:"î";s:2:"ÃŽ";s:2:"ï";s:2:"Ã";s:2:"ð";s:2:"Ã";s:2:"ñ";s:2:"Ñ";s:2:"ò";s:2:"Ã’";s:2:"ó";s:2:"Ó";s:2:"ô";s:2:"Ô";s:2:"õ";s:2:"Õ";s:2:"ö";s:2:"Ö";s:2:"ø";s:2:"Ø";s:2:"ù";s:2:"Ù";s:2:"ú";s:2:"Ú";s:2:"û";s:2:"Û";s:2:"ü";s:2:"Ãœ";s:2:"ý";s:2:"Ã";s:2:"þ";s:2:"Þ";s:2:"ÿ";s:2:"Ÿ";s:2:"Ä";s:2:"Ä€";s:2:"ă";s:2:"Ä‚";s:2:"Ä…";s:2:"Ä„";s:2:"ć";s:2:"Ć";s:2:"ĉ";s:2:"Ĉ";s:2:"Ä‹";s:2:"ÄŠ";s:2:"Ä";s:2:"ÄŒ";s:2:"Ä";s:2:"ÄŽ";s:2:"Ä‘";s:2:"Ä";s:2:"Ä“";s:2:"Ä’";s:2:"Ä•";s:2:"Ä”";s:2:"Ä—";s:2:"Ä–";s:2:"Ä™";s:2:"Ę";s:2:"Ä›";s:2:"Äš";s:2:"Ä";s:2:"Äœ";s:2:"ÄŸ";s:2:"Äž";s:2:"Ä¡";s:2:"Ä ";s:2:"Ä£";s:2:"Ä¢";s:2:"Ä¥";s:2:"Ĥ";s:2:"ħ";s:2:"Ħ";s:2:"Ä©";s:2:"Ĩ";s:2:"Ä«";s:2:"Ī";s:2:"Ä­";s:2:"Ĭ";s:2:"į";s:2:"Ä®";s:2:"ı";s:1:"I";s:2:"ij";s:2:"IJ";s:2:"ĵ";s:2:"Ä´";s:2:"Ä·";s:2:"Ķ";s:2:"ĺ";s:2:"Ĺ";s:2:"ļ";s:2:"Ä»";s:2:"ľ";s:2:"Ľ";s:2:"Å€";s:2:"Ä¿";s:2:"Å‚";s:2:"Å";s:2:"Å„";s:2:"Ń";s:2:"ņ";s:2:"Å…";s:2:"ň";s:2:"Ň";s:2:"Å‹";s:2:"ÅŠ";s:2:"Å";s:2:"ÅŒ";s:2:"Å";s:2:"ÅŽ";s:2:"Å‘";s:2:"Å";s:2:"Å“";s:2:"Å’";s:2:"Å•";s:2:"Å”";s:2:"Å—";s:2:"Å–";s:2:"Å™";s:2:"Ř";s:2:"Å›";s:2:"Åš";s:2:"Å";s:2:"Åœ";s:2:"ÅŸ";s:2:"Åž";s:2:"Å¡";s:2:"Å ";s:2:"Å£";s:2:"Å¢";s:2:"Å¥";s:2:"Ť";s:2:"ŧ";s:2:"Ŧ";s:2:"Å©";s:2:"Ũ";s:2:"Å«";s:2:"Ū";s:2:"Å­";s:2:"Ŭ";s:2:"ů";s:2:"Å®";s:2:"ű";s:2:"Å°";s:2:"ų";s:2:"Ų";s:2:"ŵ";s:2:"Å´";s:2:"Å·";s:2:"Ŷ";s:2:"ź";s:2:"Ź";s:2:"ż";s:2:"Å»";s:2:"ž";s:2:"Ž";s:2:"Å¿";s:1:"S";s:2:"Æ€";s:2:"Ƀ";s:2:"ƃ";s:2:"Æ‚";s:2:"Æ…";s:2:"Æ„";s:2:"ƈ";s:2:"Ƈ";s:2:"ÆŒ";s:2:"Æ‹";s:2:"Æ’";s:2:"Æ‘";s:2:"Æ•";s:2:"Ƕ";s:2:"Æ™";s:2:"Ƙ";s:2:"Æš";s:2:"Ƚ";s:2:"Æž";s:2:"È ";s:2:"Æ¡";s:2:"Æ ";s:2:"Æ£";s:2:"Æ¢";s:2:"Æ¥";s:2:"Ƥ";s:2:"ƨ";s:2:"Ƨ";s:2:"Æ­";s:2:"Ƭ";s:2:"Æ°";s:2:"Ư";s:2:"Æ´";s:2:"Ƴ";s:2:"ƶ";s:2:"Ƶ";s:2:"ƹ";s:2:"Ƹ";s:2:"ƽ";s:2:"Ƽ";s:2:"Æ¿";s:2:"Ç·";s:2:"Ç…";s:2:"Ç„";s:2:"dž";s:2:"Ç„";s:2:"Lj";s:2:"LJ";s:2:"lj";s:2:"LJ";s:2:"Ç‹";s:2:"ÇŠ";s:2:"ÇŒ";s:2:"ÇŠ";s:2:"ÇŽ";s:2:"Ç";s:2:"Ç";s:2:"Ç";s:2:"Ç’";s:2:"Ç‘";s:2:"Ç”";s:2:"Ç“";s:2:"Ç–";s:2:"Ç•";s:2:"ǘ";s:2:"Ç—";s:2:"Çš";s:2:"Ç™";s:2:"Çœ";s:2:"Ç›";s:2:"Ç";s:2:"ÆŽ";s:2:"ÇŸ";s:2:"Çž";s:2:"Ç¡";s:2:"Ç ";s:2:"Ç£";s:2:"Ç¢";s:2:"Ç¥";s:2:"Ǥ";s:2:"ǧ";s:2:"Ǧ";s:2:"Ç©";s:2:"Ǩ";s:2:"Ç«";s:2:"Ǫ";s:2:"Ç­";s:2:"Ǭ";s:2:"ǯ";s:2:"Ç®";s:2:"Dz";s:2:"DZ";s:2:"dz";s:2:"DZ";s:2:"ǵ";s:2:"Ç´";s:2:"ǹ";s:2:"Ǹ";s:2:"Ç»";s:2:"Ǻ";s:2:"ǽ";s:2:"Ǽ";s:2:"Ç¿";s:2:"Ǿ";s:2:"È";s:2:"È€";s:2:"ȃ";s:2:"È‚";s:2:"È…";s:2:"È„";s:2:"ȇ";s:2:"Ȇ";s:2:"ȉ";s:2:"Ȉ";s:2:"È‹";s:2:"ÈŠ";s:2:"È";s:2:"ÈŒ";s:2:"È";s:2:"ÈŽ";s:2:"È‘";s:2:"È";s:2:"È“";s:2:"È’";s:2:"È•";s:2:"È”";s:2:"È—";s:2:"È–";s:2:"È™";s:2:"Ș";s:2:"È›";s:2:"Èš";s:2:"È";s:2:"Èœ";s:2:"ÈŸ";s:2:"Èž";s:2:"È£";s:2:"È¢";s:2:"È¥";s:2:"Ȥ";s:2:"ȧ";s:2:"Ȧ";s:2:"È©";s:2:"Ȩ";s:2:"È«";s:2:"Ȫ";s:2:"È­";s:2:"Ȭ";s:2:"ȯ";s:2:"È®";s:2:"ȱ";s:2:"È°";s:2:"ȳ";s:2:"Ȳ";s:2:"ȼ";s:2:"È»";s:2:"É‚";s:2:"É";s:2:"ɇ";s:2:"Ɇ";s:2:"ɉ";s:2:"Ɉ";s:2:"É‹";s:2:"ÉŠ";s:2:"É";s:2:"ÉŒ";s:2:"É";s:2:"ÉŽ";s:2:"É";s:3:"Ɐ";s:2:"É‘";s:3:"â±­";s:2:"É“";s:2:"Æ";s:2:"É”";s:2:"Ɔ";s:2:"É–";s:2:"Ɖ";s:2:"É—";s:2:"ÆŠ";s:2:"É™";s:2:"Æ";s:2:"É›";s:2:"Æ";s:2:"É ";s:2:"Æ“";s:2:"É£";s:2:"Æ”";s:2:"ɨ";s:2:"Æ—";s:2:"É©";s:2:"Æ–";s:2:"É«";s:3:"â±¢";s:2:"ɯ";s:2:"Æœ";s:2:"ɱ";s:3:"â±®";s:2:"ɲ";s:2:"Æ";s:2:"ɵ";s:2:"ÆŸ";s:2:"ɽ";s:3:"Ɽ";s:2:"Ê€";s:2:"Ʀ";s:2:"ʃ";s:2:"Æ©";s:2:"ʈ";s:2:"Æ®";s:2:"ʉ";s:2:"É„";s:2:"ÊŠ";s:2:"Ʊ";s:2:"Ê‹";s:2:"Ʋ";s:2:"ÊŒ";s:2:"É…";s:2:"Ê’";s:2:"Æ·";s:2:"Í…";s:2:"Ι";s:2:"ͱ";s:2:"Í°";s:2:"ͳ";s:2:"Ͳ";s:2:"Í·";s:2:"Ͷ";s:2:"Í»";s:2:"Ͻ";s:2:"ͼ";s:2:"Ͼ";s:2:"ͽ";s:2:"Ï¿";s:2:"ά";s:2:"Ά";s:2:"έ";s:2:"Έ";s:2:"ή";s:2:"Ή";s:2:"ί";s:2:"Ί";s:2:"α";s:2:"Α";s:2:"β";s:2:"Î’";s:2:"γ";s:2:"Γ";s:2:"δ";s:2:"Δ";s:2:"ε";s:2:"Ε";s:2:"ζ";s:2:"Ζ";s:2:"η";s:2:"Η";s:2:"θ";s:2:"Θ";s:2:"ι";s:2:"Ι";s:2:"κ";s:2:"Κ";s:2:"λ";s:2:"Λ";s:2:"μ";s:2:"Îœ";s:2:"ν";s:2:"Î";s:2:"ξ";s:2:"Ξ";s:2:"ο";s:2:"Ο";s:2:"Ï€";s:2:"Π";s:2:"Ï";s:2:"Ρ";s:2:"Ï‚";s:2:"Σ";s:2:"σ";s:2:"Σ";s:2:"Ï„";s:2:"Τ";s:2:"Ï…";s:2:"Î¥";s:2:"φ";s:2:"Φ";s:2:"χ";s:2:"Χ";s:2:"ψ";s:2:"Ψ";s:2:"ω";s:2:"Ω";s:2:"ÏŠ";s:2:"Ϊ";s:2:"Ï‹";s:2:"Ϋ";s:2:"ÏŒ";s:2:"ÎŒ";s:2:"Ï";s:2:"ÎŽ";s:2:"ÏŽ";s:2:"Î";s:2:"Ï";s:2:"Î’";s:2:"Ï‘";s:2:"Θ";s:2:"Ï•";s:2:"Φ";s:2:"Ï–";s:2:"Π";s:2:"Ï—";s:2:"Ï";s:2:"Ï™";s:2:"Ϙ";s:2:"Ï›";s:2:"Ïš";s:2:"Ï";s:2:"Ïœ";s:2:"ÏŸ";s:2:"Ïž";s:2:"Ï¡";s:2:"Ï ";s:2:"Ï£";s:2:"Ï¢";s:2:"Ï¥";s:2:"Ϥ";s:2:"ϧ";s:2:"Ϧ";s:2:"Ï©";s:2:"Ϩ";s:2:"Ï«";s:2:"Ϫ";s:2:"Ï­";s:2:"Ϭ";s:2:"ϯ";s:2:"Ï®";s:2:"Ï°";s:2:"Κ";s:2:"ϱ";s:2:"Ρ";s:2:"ϲ";s:2:"Ϲ";s:2:"ϵ";s:2:"Ε";s:2:"ϸ";s:2:"Ï·";s:2:"Ï»";s:2:"Ϻ";s:2:"а";s:2:"Ð";s:2:"б";s:2:"Б";s:2:"в";s:2:"Ð’";s:2:"г";s:2:"Г";s:2:"д";s:2:"Д";s:2:"е";s:2:"Е";s:2:"ж";s:2:"Ж";s:2:"з";s:2:"З";s:2:"и";s:2:"И";s:2:"й";s:2:"Й";s:2:"к";s:2:"К";s:2:"л";s:2:"Л";s:2:"м";s:2:"Ðœ";s:2:"н";s:2:"Ð";s:2:"о";s:2:"О";s:2:"п";s:2:"П";s:2:"Ñ€";s:2:"Р";s:2:"Ñ";s:2:"С";s:2:"Ñ‚";s:2:"Т";s:2:"у";s:2:"У";s:2:"Ñ„";s:2:"Ф";s:2:"Ñ…";s:2:"Ð¥";s:2:"ц";s:2:"Ц";s:2:"ч";s:2:"Ч";s:2:"ш";s:2:"Ш";s:2:"щ";s:2:"Щ";s:2:"ÑŠ";s:2:"Ъ";s:2:"Ñ‹";s:2:"Ы";s:2:"ÑŒ";s:2:"Ь";s:2:"Ñ";s:2:"Э";s:2:"ÑŽ";s:2:"Ю";s:2:"Ñ";s:2:"Я";s:2:"Ñ";s:2:"Ѐ";s:2:"Ñ‘";s:2:"Ð";s:2:"Ñ’";s:2:"Ђ";s:2:"Ñ“";s:2:"Ѓ";s:2:"Ñ”";s:2:"Є";s:2:"Ñ•";s:2:"Ð…";s:2:"Ñ–";s:2:"І";s:2:"Ñ—";s:2:"Ї";s:2:"ј";s:2:"Ј";s:2:"Ñ™";s:2:"Љ";s:2:"Ñš";s:2:"Њ";s:2:"Ñ›";s:2:"Ћ";s:2:"Ñœ";s:2:"ÐŒ";s:2:"Ñ";s:2:"Ð";s:2:"Ñž";s:2:"ÐŽ";s:2:"ÑŸ";s:2:"Ð";s:2:"Ñ¡";s:2:"Ñ ";s:2:"Ñ£";s:2:"Ñ¢";s:2:"Ñ¥";s:2:"Ѥ";s:2:"ѧ";s:2:"Ѧ";s:2:"Ñ©";s:2:"Ѩ";s:2:"Ñ«";s:2:"Ѫ";s:2:"Ñ­";s:2:"Ѭ";s:2:"ѯ";s:2:"Ñ®";s:2:"ѱ";s:2:"Ñ°";s:2:"ѳ";s:2:"Ѳ";s:2:"ѵ";s:2:"Ñ´";s:2:"Ñ·";s:2:"Ѷ";s:2:"ѹ";s:2:"Ѹ";s:2:"Ñ»";s:2:"Ѻ";s:2:"ѽ";s:2:"Ѽ";s:2:"Ñ¿";s:2:"Ѿ";s:2:"Ò";s:2:"Ò€";s:2:"Ò‹";s:2:"ÒŠ";s:2:"Ò";s:2:"ÒŒ";s:2:"Ò";s:2:"ÒŽ";s:2:"Ò‘";s:2:"Ò";s:2:"Ò“";s:2:"Ò’";s:2:"Ò•";s:2:"Ò”";s:2:"Ò—";s:2:"Ò–";s:2:"Ò™";s:2:"Ò˜";s:2:"Ò›";s:2:"Òš";s:2:"Ò";s:2:"Òœ";s:2:"ÒŸ";s:2:"Òž";s:2:"Ò¡";s:2:"Ò ";s:2:"Ò£";s:2:"Ò¢";s:2:"Ò¥";s:2:"Ò¤";s:2:"Ò§";s:2:"Ò¦";s:2:"Ò©";s:2:"Ò¨";s:2:"Ò«";s:2:"Òª";s:2:"Ò­";s:2:"Ò¬";s:2:"Ò¯";s:2:"Ò®";s:2:"Ò±";s:2:"Ò°";s:2:"Ò³";s:2:"Ò²";s:2:"Òµ";s:2:"Ò´";s:2:"Ò·";s:2:"Ò¶";s:2:"Ò¹";s:2:"Ò¸";s:2:"Ò»";s:2:"Òº";s:2:"Ò½";s:2:"Ò¼";s:2:"Ò¿";s:2:"Ò¾";s:2:"Ó‚";s:2:"Ó";s:2:"Ó„";s:2:"Óƒ";s:2:"Ó†";s:2:"Ó…";s:2:"Óˆ";s:2:"Ó‡";s:2:"ÓŠ";s:2:"Ó‰";s:2:"ÓŒ";s:2:"Ó‹";s:2:"ÓŽ";s:2:"Ó";s:2:"Ó";s:2:"Ó€";s:2:"Ó‘";s:2:"Ó";s:2:"Ó“";s:2:"Ó’";s:2:"Ó•";s:2:"Ó”";s:2:"Ó—";s:2:"Ó–";s:2:"Ó™";s:2:"Ó˜";s:2:"Ó›";s:2:"Óš";s:2:"Ó";s:2:"Óœ";s:2:"ÓŸ";s:2:"Óž";s:2:"Ó¡";s:2:"Ó ";s:2:"Ó£";s:2:"Ó¢";s:2:"Ó¥";s:2:"Ó¤";s:2:"Ó§";s:2:"Ó¦";s:2:"Ó©";s:2:"Ó¨";s:2:"Ó«";s:2:"Óª";s:2:"Ó­";s:2:"Ó¬";s:2:"Ó¯";s:2:"Ó®";s:2:"Ó±";s:2:"Ó°";s:2:"Ó³";s:2:"Ó²";s:2:"Óµ";s:2:"Ó´";s:2:"Ó·";s:2:"Ó¶";s:2:"Ó¹";s:2:"Ó¸";s:2:"Ó»";s:2:"Óº";s:2:"Ó½";s:2:"Ó¼";s:2:"Ó¿";s:2:"Ó¾";s:2:"Ô";s:2:"Ô€";s:2:"Ôƒ";s:2:"Ô‚";s:2:"Ô…";s:2:"Ô„";s:2:"Ô‡";s:2:"Ô†";s:2:"Ô‰";s:2:"Ôˆ";s:2:"Ô‹";s:2:"ÔŠ";s:2:"Ô";s:2:"ÔŒ";s:2:"Ô";s:2:"ÔŽ";s:2:"Ô‘";s:2:"Ô";s:2:"Ô“";s:2:"Ô’";s:2:"Ô•";s:2:"Ô”";s:2:"Ô—";s:2:"Ô–";s:2:"Ô™";s:2:"Ô˜";s:2:"Ô›";s:2:"Ôš";s:2:"Ô";s:2:"Ôœ";s:2:"ÔŸ";s:2:"Ôž";s:2:"Ô¡";s:2:"Ô ";s:2:"Ô£";s:2:"Ô¢";s:2:"Õ¡";s:2:"Ô±";s:2:"Õ¢";s:2:"Ô²";s:2:"Õ£";s:2:"Ô³";s:2:"Õ¤";s:2:"Ô´";s:2:"Õ¥";s:2:"Ôµ";s:2:"Õ¦";s:2:"Ô¶";s:2:"Õ§";s:2:"Ô·";s:2:"Õ¨";s:2:"Ô¸";s:2:"Õ©";s:2:"Ô¹";s:2:"Õª";s:2:"Ôº";s:2:"Õ«";s:2:"Ô»";s:2:"Õ¬";s:2:"Ô¼";s:2:"Õ­";s:2:"Ô½";s:2:"Õ®";s:2:"Ô¾";s:2:"Õ¯";s:2:"Ô¿";s:2:"Õ°";s:2:"Õ€";s:2:"Õ±";s:2:"Õ";s:2:"Õ²";s:2:"Õ‚";s:2:"Õ³";s:2:"Õƒ";s:2:"Õ´";s:2:"Õ„";s:2:"Õµ";s:2:"Õ…";s:2:"Õ¶";s:2:"Õ†";s:2:"Õ·";s:2:"Õ‡";s:2:"Õ¸";s:2:"Õˆ";s:2:"Õ¹";s:2:"Õ‰";s:2:"Õº";s:2:"ÕŠ";s:2:"Õ»";s:2:"Õ‹";s:2:"Õ¼";s:2:"ÕŒ";s:2:"Õ½";s:2:"Õ";s:2:"Õ¾";s:2:"ÕŽ";s:2:"Õ¿";s:2:"Õ";s:2:"Ö€";s:2:"Õ";s:2:"Ö";s:2:"Õ‘";s:2:"Ö‚";s:2:"Õ’";s:2:"Öƒ";s:2:"Õ“";s:2:"Ö„";s:2:"Õ”";s:2:"Ö…";s:2:"Õ•";s:2:"Ö†";s:2:"Õ–";s:3:"áµ¹";s:3:"ê½";s:3:"áµ½";s:3:"â±£";s:3:"á¸";s:3:"Ḁ";s:3:"ḃ";s:3:"Ḃ";s:3:"ḅ";s:3:"Ḅ";s:3:"ḇ";s:3:"Ḇ";s:3:"ḉ";s:3:"Ḉ";s:3:"ḋ";s:3:"Ḋ";s:3:"á¸";s:3:"Ḍ";s:3:"á¸";s:3:"Ḏ";s:3:"ḑ";s:3:"á¸";s:3:"ḓ";s:3:"Ḓ";s:3:"ḕ";s:3:"Ḕ";s:3:"ḗ";s:3:"Ḗ";s:3:"ḙ";s:3:"Ḙ";s:3:"ḛ";s:3:"Ḛ";s:3:"á¸";s:3:"Ḝ";s:3:"ḟ";s:3:"Ḟ";s:3:"ḡ";s:3:"Ḡ";s:3:"ḣ";s:3:"Ḣ";s:3:"ḥ";s:3:"Ḥ";s:3:"ḧ";s:3:"Ḧ";s:3:"ḩ";s:3:"Ḩ";s:3:"ḫ";s:3:"Ḫ";s:3:"ḭ";s:3:"Ḭ";s:3:"ḯ";s:3:"Ḯ";s:3:"ḱ";s:3:"Ḱ";s:3:"ḳ";s:3:"Ḳ";s:3:"ḵ";s:3:"Ḵ";s:3:"ḷ";s:3:"Ḷ";s:3:"ḹ";s:3:"Ḹ";s:3:"ḻ";s:3:"Ḻ";s:3:"ḽ";s:3:"Ḽ";s:3:"ḿ";s:3:"Ḿ";s:3:"á¹";s:3:"á¹€";s:3:"ṃ";s:3:"Ṃ";s:3:"á¹…";s:3:"Ṅ";s:3:"ṇ";s:3:"Ṇ";s:3:"ṉ";s:3:"Ṉ";s:3:"ṋ";s:3:"Ṋ";s:3:"á¹";s:3:"Ṍ";s:3:"á¹";s:3:"Ṏ";s:3:"ṑ";s:3:"á¹";s:3:"ṓ";s:3:"á¹’";s:3:"ṕ";s:3:"á¹”";s:3:"á¹—";s:3:"á¹–";s:3:"á¹™";s:3:"Ṙ";s:3:"á¹›";s:3:"Ṛ";s:3:"á¹";s:3:"Ṝ";s:3:"ṟ";s:3:"Ṟ";s:3:"ṡ";s:3:"á¹ ";s:3:"á¹£";s:3:"á¹¢";s:3:"á¹¥";s:3:"Ṥ";s:3:"ṧ";s:3:"Ṧ";s:3:"ṩ";s:3:"Ṩ";s:3:"ṫ";s:3:"Ṫ";s:3:"á¹­";s:3:"Ṭ";s:3:"ṯ";s:3:"á¹®";s:3:"á¹±";s:3:"á¹°";s:3:"á¹³";s:3:"á¹²";s:3:"á¹µ";s:3:"á¹´";s:3:"á¹·";s:3:"Ṷ";s:3:"á¹¹";s:3:"Ṹ";s:3:"á¹»";s:3:"Ṻ";s:3:"á¹½";s:3:"á¹¼";s:3:"ṿ";s:3:"á¹¾";s:3:"áº";s:3:"Ẁ";s:3:"ẃ";s:3:"Ẃ";s:3:"ẅ";s:3:"Ẅ";s:3:"ẇ";s:3:"Ẇ";s:3:"ẉ";s:3:"Ẉ";s:3:"ẋ";s:3:"Ẋ";s:3:"áº";s:3:"Ẍ";s:3:"áº";s:3:"Ẏ";s:3:"ẑ";s:3:"áº";s:3:"ẓ";s:3:"Ẓ";s:3:"ẕ";s:3:"Ẕ";s:3:"ẛ";s:3:"á¹ ";s:3:"ạ";s:3:"Ạ";s:3:"ả";s:3:"Ả";s:3:"ấ";s:3:"Ấ";s:3:"ầ";s:3:"Ầ";s:3:"ẩ";s:3:"Ẩ";s:3:"ẫ";s:3:"Ẫ";s:3:"ậ";s:3:"Ậ";s:3:"ắ";s:3:"Ắ";s:3:"ằ";s:3:"Ằ";s:3:"ẳ";s:3:"Ẳ";s:3:"ẵ";s:3:"Ẵ";s:3:"ặ";s:3:"Ặ";s:3:"ẹ";s:3:"Ẹ";s:3:"ẻ";s:3:"Ẻ";s:3:"ẽ";s:3:"Ẽ";s:3:"ế";s:3:"Ế";s:3:"á»";s:3:"Ề";s:3:"ể";s:3:"Ể";s:3:"á»…";s:3:"Ễ";s:3:"ệ";s:3:"Ệ";s:3:"ỉ";s:3:"Ỉ";s:3:"ị";s:3:"Ị";s:3:"á»";s:3:"Ọ";s:3:"á»";s:3:"Ỏ";s:3:"ố";s:3:"á»";s:3:"ồ";s:3:"á»’";s:3:"ổ";s:3:"á»”";s:3:"á»—";s:3:"á»–";s:3:"á»™";s:3:"Ộ";s:3:"á»›";s:3:"Ớ";s:3:"á»";s:3:"Ờ";s:3:"ở";s:3:"Ở";s:3:"ỡ";s:3:"á» ";s:3:"ợ";s:3:"Ợ";s:3:"ụ";s:3:"Ụ";s:3:"ủ";s:3:"Ủ";s:3:"ứ";s:3:"Ứ";s:3:"ừ";s:3:"Ừ";s:3:"á»­";s:3:"Ử";s:3:"ữ";s:3:"á»®";s:3:"á»±";s:3:"á»°";s:3:"ỳ";s:3:"Ỳ";s:3:"ỵ";s:3:"á»´";s:3:"á»·";s:3:"Ỷ";s:3:"ỹ";s:3:"Ỹ";s:3:"á»»";s:3:"Ỻ";s:3:"ỽ";s:3:"Ỽ";s:3:"ỿ";s:3:"Ỿ";s:3:"á¼€";s:3:"Ἀ";s:3:"á¼";s:3:"Ἁ";s:3:"ἂ";s:3:"Ἂ";s:3:"ἃ";s:3:"Ἃ";s:3:"ἄ";s:3:"Ἄ";s:3:"á¼…";s:3:"á¼";s:3:"ἆ";s:3:"Ἆ";s:3:"ἇ";s:3:"á¼";s:3:"á¼";s:3:"Ἐ";s:3:"ἑ";s:3:"á¼™";s:3:"á¼’";s:3:"Ἒ";s:3:"ἓ";s:3:"á¼›";s:3:"á¼”";s:3:"Ἔ";s:3:"ἕ";s:3:"á¼";s:3:"á¼ ";s:3:"Ἠ";s:3:"ἡ";s:3:"Ἡ";s:3:"á¼¢";s:3:"Ἢ";s:3:"á¼£";s:3:"Ἣ";s:3:"ἤ";s:3:"Ἤ";s:3:"á¼¥";s:3:"á¼­";s:3:"ἦ";s:3:"á¼®";s:3:"ἧ";s:3:"Ἧ";s:3:"á¼°";s:3:"Ἰ";s:3:"á¼±";s:3:"á¼¹";s:3:"á¼²";s:3:"Ἲ";s:3:"á¼³";s:3:"á¼»";s:3:"á¼´";s:3:"á¼¼";s:3:"á¼µ";s:3:"á¼½";s:3:"ἶ";s:3:"á¼¾";s:3:"á¼·";s:3:"Ἷ";s:3:"á½€";s:3:"Ὀ";s:3:"á½";s:3:"Ὁ";s:3:"ὂ";s:3:"Ὂ";s:3:"ὃ";s:3:"Ὃ";s:3:"ὄ";s:3:"Ὄ";s:3:"á½…";s:3:"á½";s:3:"ὑ";s:3:"á½™";s:3:"ὓ";s:3:"á½›";s:3:"ὕ";s:3:"á½";s:3:"á½—";s:3:"Ὗ";s:3:"á½ ";s:3:"Ὠ";s:3:"ὡ";s:3:"Ὡ";s:3:"á½¢";s:3:"Ὢ";s:3:"á½£";s:3:"Ὣ";s:3:"ὤ";s:3:"Ὤ";s:3:"á½¥";s:3:"á½­";s:3:"ὦ";s:3:"á½®";s:3:"ὧ";s:3:"Ὧ";s:3:"á½°";s:3:"Ὰ";s:3:"á½±";s:3:"á¾»";s:3:"á½²";s:3:"Ὲ";s:3:"á½³";s:3:"Έ";s:3:"á½´";s:3:"á¿Š";s:3:"á½µ";s:3:"á¿‹";s:3:"ὶ";s:3:"á¿š";s:3:"á½·";s:3:"á¿›";s:3:"ὸ";s:3:"Ὸ";s:3:"á½¹";s:3:"Ό";s:3:"ὺ";s:3:"Ὺ";s:3:"á½»";s:3:"á¿«";s:3:"á½¼";s:3:"Ὼ";s:3:"á½½";s:3:"á¿»";s:3:"á¾€";s:3:"ᾈ";s:3:"á¾";s:3:"ᾉ";s:3:"ᾂ";s:3:"ᾊ";s:3:"ᾃ";s:3:"ᾋ";s:3:"ᾄ";s:3:"ᾌ";s:3:"á¾…";s:3:"á¾";s:3:"ᾆ";s:3:"ᾎ";s:3:"ᾇ";s:3:"á¾";s:3:"á¾";s:3:"ᾘ";s:3:"ᾑ";s:3:"á¾™";s:3:"á¾’";s:3:"ᾚ";s:3:"ᾓ";s:3:"á¾›";s:3:"á¾”";s:3:"ᾜ";s:3:"ᾕ";s:3:"á¾";s:3:"á¾–";s:3:"ᾞ";s:3:"á¾—";s:3:"ᾟ";s:3:"á¾ ";s:3:"ᾨ";s:3:"ᾡ";s:3:"ᾩ";s:3:"á¾¢";s:3:"ᾪ";s:3:"á¾£";s:3:"ᾫ";s:3:"ᾤ";s:3:"ᾬ";s:3:"á¾¥";s:3:"á¾­";s:3:"ᾦ";s:3:"á¾®";s:3:"ᾧ";s:3:"ᾯ";s:3:"á¾°";s:3:"Ᾰ";s:3:"á¾±";s:3:"á¾¹";s:3:"á¾³";s:3:"á¾¼";s:3:"á¾¾";s:2:"Ι";s:3:"ῃ";s:3:"á¿Œ";s:3:"á¿";s:3:"Ῐ";s:3:"á¿‘";s:3:"á¿™";s:3:"á¿ ";s:3:"Ῠ";s:3:"á¿¡";s:3:"á¿©";s:3:"á¿¥";s:3:"Ῥ";s:3:"ῳ";s:3:"ῼ";s:3:"â…Ž";s:3:"Ⅎ";s:3:"â…°";s:3:"â… ";s:3:"â…±";s:3:"â…¡";s:3:"â…²";s:3:"â…¢";s:3:"â…³";s:3:"â…£";s:3:"â…´";s:3:"â…¤";s:3:"â…µ";s:3:"â…¥";s:3:"â…¶";s:3:"â…¦";s:3:"â…·";s:3:"â…§";s:3:"â…¸";s:3:"â…¨";s:3:"â…¹";s:3:"â…©";s:3:"â…º";s:3:"â…ª";s:3:"â…»";s:3:"â…«";s:3:"â…¼";s:3:"â…¬";s:3:"â…½";s:3:"â…­";s:3:"â…¾";s:3:"â…®";s:3:"â…¿";s:3:"â…¯";s:3:"ↄ";s:3:"Ↄ";s:3:"â“";s:3:"â’¶";s:3:"â“‘";s:3:"â’·";s:3:"â“’";s:3:"â’¸";s:3:"â““";s:3:"â’¹";s:3:"â“”";s:3:"â’º";s:3:"â“•";s:3:"â’»";s:3:"â“–";s:3:"â’¼";s:3:"â“—";s:3:"â’½";s:3:"ⓘ";s:3:"â’¾";s:3:"â“™";s:3:"â’¿";s:3:"â“š";s:3:"â“€";s:3:"â“›";s:3:"â“";s:3:"â“œ";s:3:"â“‚";s:3:"â“";s:3:"Ⓝ";s:3:"â“ž";s:3:"â“„";s:3:"â“Ÿ";s:3:"â“…";s:3:"â“ ";s:3:"Ⓠ";s:3:"â“¡";s:3:"Ⓡ";s:3:"â“¢";s:3:"Ⓢ";s:3:"â“£";s:3:"Ⓣ";s:3:"ⓤ";s:3:"â“Š";s:3:"â“¥";s:3:"â“‹";s:3:"ⓦ";s:3:"â“Œ";s:3:"ⓧ";s:3:"â“";s:3:"ⓨ";s:3:"â“Ž";s:3:"â“©";s:3:"â“";s:3:"â°°";s:3:"â°€";s:3:"â°±";s:3:"â°";s:3:"â°²";s:3:"â°‚";s:3:"â°³";s:3:"â°ƒ";s:3:"â°´";s:3:"â°„";s:3:"â°µ";s:3:"â°…";s:3:"â°¶";s:3:"â°†";s:3:"â°·";s:3:"â°‡";s:3:"â°¸";s:3:"â°ˆ";s:3:"â°¹";s:3:"â°‰";s:3:"â°º";s:3:"â°Š";s:3:"â°»";s:3:"â°‹";s:3:"â°¼";s:3:"â°Œ";s:3:"â°½";s:3:"â°";s:3:"â°¾";s:3:"â°Ž";s:3:"â°¿";s:3:"â°";s:3:"â±€";s:3:"â°";s:3:"â±";s:3:"â°‘";s:3:"ⱂ";s:3:"â°’";s:3:"ⱃ";s:3:"â°“";s:3:"ⱄ";s:3:"â°”";s:3:"â±…";s:3:"â°•";s:3:"ⱆ";s:3:"â°–";s:3:"ⱇ";s:3:"â°—";s:3:"ⱈ";s:3:"â°˜";s:3:"ⱉ";s:3:"â°™";s:3:"ⱊ";s:3:"â°š";s:3:"ⱋ";s:3:"â°›";s:3:"ⱌ";s:3:"â°œ";s:3:"â±";s:3:"â°";s:3:"ⱎ";s:3:"â°ž";s:3:"â±";s:3:"â°Ÿ";s:3:"â±";s:3:"â° ";s:3:"ⱑ";s:3:"â°¡";s:3:"â±’";s:3:"â°¢";s:3:"ⱓ";s:3:"â°£";s:3:"â±”";s:3:"â°¤";s:3:"ⱕ";s:3:"â°¥";s:3:"â±–";s:3:"â°¦";s:3:"â±—";s:3:"â°§";s:3:"ⱘ";s:3:"â°¨";s:3:"â±™";s:3:"â°©";s:3:"ⱚ";s:3:"â°ª";s:3:"â±›";s:3:"â°«";s:3:"ⱜ";s:3:"â°¬";s:3:"â±";s:3:"â°­";s:3:"ⱞ";s:3:"â°®";s:3:"ⱡ";s:3:"â± ";s:3:"â±¥";s:2:"Ⱥ";s:3:"ⱦ";s:2:"Ⱦ";s:3:"ⱨ";s:3:"Ⱨ";s:3:"ⱪ";s:3:"Ⱪ";s:3:"ⱬ";s:3:"Ⱬ";s:3:"â±³";s:3:"â±²";s:3:"ⱶ";s:3:"â±µ";s:3:"â²";s:3:"â²€";s:3:"ⲃ";s:3:"Ⲃ";s:3:"â²…";s:3:"Ⲅ";s:3:"ⲇ";s:3:"Ⲇ";s:3:"ⲉ";s:3:"Ⲉ";s:3:"ⲋ";s:3:"Ⲋ";s:3:"â²";s:3:"Ⲍ";s:3:"â²";s:3:"Ⲏ";s:3:"ⲑ";s:3:"â²";s:3:"ⲓ";s:3:"â²’";s:3:"ⲕ";s:3:"â²”";s:3:"â²—";s:3:"â²–";s:3:"â²™";s:3:"Ⲙ";s:3:"â²›";s:3:"Ⲛ";s:3:"â²";s:3:"Ⲝ";s:3:"ⲟ";s:3:"Ⲟ";s:3:"ⲡ";s:3:"â² ";s:3:"â²£";s:3:"â²¢";s:3:"â²¥";s:3:"Ⲥ";s:3:"ⲧ";s:3:"Ⲧ";s:3:"ⲩ";s:3:"Ⲩ";s:3:"ⲫ";s:3:"Ⲫ";s:3:"â²­";s:3:"Ⲭ";s:3:"ⲯ";s:3:"â²®";s:3:"â²±";s:3:"â²°";s:3:"â²³";s:3:"â²²";s:3:"â²µ";s:3:"â²´";s:3:"â²·";s:3:"Ⲷ";s:3:"â²¹";s:3:"Ⲹ";s:3:"â²»";s:3:"Ⲻ";s:3:"â²½";s:3:"â²¼";s:3:"ⲿ";s:3:"â²¾";s:3:"â³";s:3:"â³€";s:3:"ⳃ";s:3:"Ⳃ";s:3:"â³…";s:3:"Ⳅ";s:3:"ⳇ";s:3:"Ⳇ";s:3:"ⳉ";s:3:"Ⳉ";s:3:"ⳋ";s:3:"Ⳋ";s:3:"â³";s:3:"Ⳍ";s:3:"â³";s:3:"Ⳏ";s:3:"ⳑ";s:3:"â³";s:3:"ⳓ";s:3:"â³’";s:3:"ⳕ";s:3:"â³”";s:3:"â³—";s:3:"â³–";s:3:"â³™";s:3:"Ⳙ";s:3:"â³›";s:3:"Ⳛ";s:3:"â³";s:3:"Ⳝ";s:3:"ⳟ";s:3:"Ⳟ";s:3:"ⳡ";s:3:"â³ ";s:3:"â³£";s:3:"â³¢";s:3:"â´€";s:3:"á‚ ";s:3:"â´";s:3:"á‚¡";s:3:"â´‚";s:3:"á‚¢";s:3:"â´ƒ";s:3:"á‚£";s:3:"â´„";s:3:"Ⴄ";s:3:"â´…";s:3:"á‚¥";s:3:"â´†";s:3:"Ⴆ";s:3:"â´‡";s:3:"Ⴇ";s:3:"â´ˆ";s:3:"Ⴈ";s:3:"â´‰";s:3:"á‚©";s:3:"â´Š";s:3:"Ⴊ";s:3:"â´‹";s:3:"á‚«";s:3:"â´Œ";s:3:"Ⴌ";s:3:"â´";s:3:"á‚­";s:3:"â´Ž";s:3:"á‚®";s:3:"â´";s:3:"Ⴏ";s:3:"â´";s:3:"á‚°";s:3:"â´‘";s:3:"Ⴑ";s:3:"â´’";s:3:"Ⴒ";s:3:"â´“";s:3:"Ⴓ";s:3:"â´”";s:3:"á‚´";s:3:"â´•";s:3:"Ⴕ";s:3:"â´–";s:3:"Ⴖ";s:3:"â´—";s:3:"á‚·";s:3:"â´˜";s:3:"Ⴘ";s:3:"â´™";s:3:"Ⴙ";s:3:"â´š";s:3:"Ⴚ";s:3:"â´›";s:3:"á‚»";s:3:"â´œ";s:3:"Ⴜ";s:3:"â´";s:3:"Ⴝ";s:3:"â´ž";s:3:"Ⴞ";s:3:"â´Ÿ";s:3:"á‚¿";s:3:"â´ ";s:3:"Ⴠ";s:3:"â´¡";s:3:"áƒ";s:3:"â´¢";s:3:"Ⴢ";s:3:"â´£";s:3:"Ⴣ";s:3:"â´¤";s:3:"Ⴤ";s:3:"â´¥";s:3:"Ⴥ";s:3:"ê™";s:3:"Ꙁ";s:3:"ꙃ";s:3:"Ꙃ";s:3:"ê™…";s:3:"Ꙅ";s:3:"ꙇ";s:3:"Ꙇ";s:3:"ꙉ";s:3:"Ꙉ";s:3:"ꙋ";s:3:"Ꙋ";s:3:"ê™";s:3:"Ꙍ";s:3:"ê™";s:3:"Ꙏ";s:3:"ꙑ";s:3:"ê™";s:3:"ꙓ";s:3:"ê™’";s:3:"ꙕ";s:3:"ê™”";s:3:"ê™—";s:3:"ê™–";s:3:"ê™™";s:3:"Ꙙ";s:3:"ê™›";s:3:"Ꙛ";s:3:"ê™";s:3:"Ꙝ";s:3:"ꙟ";s:3:"Ꙟ";s:3:"ꙣ";s:3:"Ꙣ";s:3:"ꙥ";s:3:"Ꙥ";s:3:"ꙧ";s:3:"Ꙧ";s:3:"ꙩ";s:3:"Ꙩ";s:3:"ꙫ";s:3:"Ꙫ";s:3:"ê™­";s:3:"Ꙭ";s:3:"êš";s:3:"Ꚁ";s:3:"ꚃ";s:3:"êš‚";s:3:"êš…";s:3:"êš„";s:3:"ꚇ";s:3:"Ꚇ";s:3:"ꚉ";s:3:"Ꚉ";s:3:"êš‹";s:3:"Ꚋ";s:3:"êš";s:3:"Ꚍ";s:3:"êš";s:3:"Ꚏ";s:3:"êš‘";s:3:"êš";s:3:"êš“";s:3:"êš’";s:3:"êš•";s:3:"êš”";s:3:"êš—";s:3:"êš–";s:3:"ꜣ";s:3:"Ꜣ";s:3:"ꜥ";s:3:"Ꜥ";s:3:"ꜧ";s:3:"Ꜧ";s:3:"ꜩ";s:3:"Ꜩ";s:3:"ꜫ";s:3:"Ꜫ";s:3:"ꜭ";s:3:"Ꜭ";s:3:"ꜯ";s:3:"Ꜯ";s:3:"ꜳ";s:3:"Ꜳ";s:3:"ꜵ";s:3:"Ꜵ";s:3:"ꜷ";s:3:"Ꜷ";s:3:"ꜹ";s:3:"Ꜹ";s:3:"ꜻ";s:3:"Ꜻ";s:3:"ꜽ";s:3:"Ꜽ";s:3:"ꜿ";s:3:"Ꜿ";s:3:"ê";s:3:"ê€";s:3:"êƒ";s:3:"ê‚";s:3:"ê…";s:3:"ê„";s:3:"ê‡";s:3:"ê†";s:3:"ê‰";s:3:"êˆ";s:3:"ê‹";s:3:"êŠ";s:3:"ê";s:3:"êŒ";s:3:"ê";s:3:"êŽ";s:3:"ê‘";s:3:"ê";s:3:"ê“";s:3:"ê’";s:3:"ê•";s:3:"ê”";s:3:"ê—";s:3:"ê–";s:3:"ê™";s:3:"ê˜";s:3:"ê›";s:3:"êš";s:3:"ê";s:3:"êœ";s:3:"êŸ";s:3:"êž";s:3:"ê¡";s:3:"ê ";s:3:"ê£";s:3:"ê¢";s:3:"ê¥";s:3:"ê¤";s:3:"ê§";s:3:"ê¦";s:3:"ê©";s:3:"ê¨";s:3:"ê«";s:3:"êª";s:3:"ê­";s:3:"ê¬";s:3:"ê¯";s:3:"ê®";s:3:"êº";s:3:"ê¹";s:3:"ê¼";s:3:"ê»";s:3:"ê¿";s:3:"ê¾";s:3:"êž";s:3:"Ꞁ";s:3:"ꞃ";s:3:"êž‚";s:3:"êž…";s:3:"êž„";s:3:"ꞇ";s:3:"Ꞇ";s:3:"ꞌ";s:3:"êž‹";s:3:"ï½";s:3:"A";s:3:"b";s:3:"ï¼¢";s:3:"c";s:3:"ï¼£";s:3:"d";s:3:"D";s:3:"ï½…";s:3:"ï¼¥";s:3:"f";s:3:"F";s:3:"g";s:3:"G";s:3:"h";s:3:"H";s:3:"i";s:3:"I";s:3:"j";s:3:"J";s:3:"k";s:3:"K";s:3:"l";s:3:"L";s:3:"ï½";s:3:"ï¼­";s:3:"n";s:3:"ï¼®";s:3:"ï½";s:3:"O";s:3:"ï½";s:3:"ï¼°";s:3:"q";s:3:"ï¼±";s:3:"ï½’";s:3:"ï¼²";s:3:"s";s:3:"ï¼³";s:3:"ï½”";s:3:"ï¼´";s:3:"u";s:3:"ï¼µ";s:3:"ï½–";s:3:"V";s:3:"ï½—";s:3:"ï¼·";s:3:"x";s:3:"X";s:3:"ï½™";s:3:"ï¼¹";s:3:"z";s:3:"Z";s:4:"ð¨";s:4:"ð€";s:4:"ð©";s:4:"ð";s:4:"ðª";s:4:"ð‚";s:4:"ð«";s:4:"ðƒ";s:4:"ð¬";s:4:"ð„";s:4:"ð­";s:4:"ð…";s:4:"ð®";s:4:"ð†";s:4:"ð¯";s:4:"ð‡";s:4:"ð°";s:4:"ðˆ";s:4:"ð±";s:4:"ð‰";s:4:"ð²";s:4:"ðŠ";s:4:"ð³";s:4:"ð‹";s:4:"ð´";s:4:"ðŒ";s:4:"ðµ";s:4:"ð";s:4:"ð¶";s:4:"ðŽ";s:4:"ð·";s:4:"ð";s:4:"ð¸";s:4:"ð";s:4:"ð¹";s:4:"ð‘";s:4:"ðº";s:4:"ð’";s:4:"ð»";s:4:"ð“";s:4:"ð¼";s:4:"ð”";s:4:"ð½";s:4:"ð•";s:4:"ð¾";s:4:"ð–";s:4:"ð¿";s:4:"ð—";s:4:"ð‘€";s:4:"ð˜";s:4:"ð‘";s:4:"ð™";s:4:"ð‘‚";s:4:"ðš";s:4:"ð‘ƒ";s:4:"ð›";s:4:"ð‘„";s:4:"ðœ";s:4:"ð‘…";s:4:"ð";s:4:"ð‘†";s:4:"ðž";s:4:"ð‘‡";s:4:"ðŸ";s:4:"ð‘ˆ";s:4:"ð ";s:4:"ð‘‰";s:4:"ð¡";s:4:"ð‘Š";s:4:"ð¢";s:4:"ð‘‹";s:4:"ð£";s:4:"ð‘Œ";s:4:"ð¤";s:4:"ð‘";s:4:"ð¥";s:4:"ð‘Ž";s:4:"ð¦";s:4:"ð‘";s:4:"ð§";}s:14:"wikiLowerChars";a:1023:{s:1:"A";s:1:"a";s:1:"B";s:1:"b";s:1:"C";s:1:"c";s:1:"D";s:1:"d";s:1:"E";s:1:"e";s:1:"F";s:1:"f";s:1:"G";s:1:"g";s:1:"H";s:1:"h";s:1:"I";s:1:"i";s:1:"J";s:1:"j";s:1:"K";s:1:"k";s:1:"L";s:1:"l";s:1:"M";s:1:"m";s:1:"N";s:1:"n";s:1:"O";s:1:"o";s:1:"P";s:1:"p";s:1:"Q";s:1:"q";s:1:"R";s:1:"r";s:1:"S";s:1:"s";s:1:"T";s:1:"t";s:1:"U";s:1:"u";s:1:"V";s:1:"v";s:1:"W";s:1:"w";s:1:"X";s:1:"x";s:1:"Y";s:1:"y";s:1:"Z";s:1:"z";s:2:"À";s:2:"à";s:2:"Ã";s:2:"á";s:2:"Â";s:2:"â";s:2:"Ã";s:2:"ã";s:2:"Ä";s:2:"ä";s:2:"Ã…";s:2:"Ã¥";s:2:"Æ";s:2:"æ";s:2:"Ç";s:2:"ç";s:2:"È";s:2:"è";s:2:"É";s:2:"é";s:2:"Ê";s:2:"ê";s:2:"Ë";s:2:"ë";s:2:"ÃŒ";s:2:"ì";s:2:"Ã";s:2:"í";s:2:"ÃŽ";s:2:"î";s:2:"Ã";s:2:"ï";s:2:"Ã";s:2:"ð";s:2:"Ñ";s:2:"ñ";s:2:"Ã’";s:2:"ò";s:2:"Ó";s:2:"ó";s:2:"Ô";s:2:"ô";s:2:"Õ";s:2:"õ";s:2:"Ö";s:2:"ö";s:2:"Ø";s:2:"ø";s:2:"Ù";s:2:"ù";s:2:"Ú";s:2:"ú";s:2:"Û";s:2:"û";s:2:"Ãœ";s:2:"ü";s:2:"Ã";s:2:"ý";s:2:"Þ";s:2:"þ";s:2:"Ä€";s:2:"Ä";s:2:"Ä‚";s:2:"ă";s:2:"Ä„";s:2:"Ä…";s:2:"Ć";s:2:"ć";s:2:"Ĉ";s:2:"ĉ";s:2:"ÄŠ";s:2:"Ä‹";s:2:"ÄŒ";s:2:"Ä";s:2:"ÄŽ";s:2:"Ä";s:2:"Ä";s:2:"Ä‘";s:2:"Ä’";s:2:"Ä“";s:2:"Ä”";s:2:"Ä•";s:2:"Ä–";s:2:"Ä—";s:2:"Ę";s:2:"Ä™";s:2:"Äš";s:2:"Ä›";s:2:"Äœ";s:2:"Ä";s:2:"Äž";s:2:"ÄŸ";s:2:"Ä ";s:2:"Ä¡";s:2:"Ä¢";s:2:"Ä£";s:2:"Ĥ";s:2:"Ä¥";s:2:"Ħ";s:2:"ħ";s:2:"Ĩ";s:2:"Ä©";s:2:"Ī";s:2:"Ä«";s:2:"Ĭ";s:2:"Ä­";s:2:"Ä®";s:2:"į";s:2:"Ä°";s:1:"i";s:2:"IJ";s:2:"ij";s:2:"Ä´";s:2:"ĵ";s:2:"Ķ";s:2:"Ä·";s:2:"Ĺ";s:2:"ĺ";s:2:"Ä»";s:2:"ļ";s:2:"Ľ";s:2:"ľ";s:2:"Ä¿";s:2:"Å€";s:2:"Å";s:2:"Å‚";s:2:"Ń";s:2:"Å„";s:2:"Å…";s:2:"ņ";s:2:"Ň";s:2:"ň";s:2:"ÅŠ";s:2:"Å‹";s:2:"ÅŒ";s:2:"Å";s:2:"ÅŽ";s:2:"Å";s:2:"Å";s:2:"Å‘";s:2:"Å’";s:2:"Å“";s:2:"Å”";s:2:"Å•";s:2:"Å–";s:2:"Å—";s:2:"Ř";s:2:"Å™";s:2:"Åš";s:2:"Å›";s:2:"Åœ";s:2:"Å";s:2:"Åž";s:2:"ÅŸ";s:2:"Å ";s:2:"Å¡";s:2:"Å¢";s:2:"Å£";s:2:"Ť";s:2:"Å¥";s:2:"Ŧ";s:2:"ŧ";s:2:"Ũ";s:2:"Å©";s:2:"Ū";s:2:"Å«";s:2:"Ŭ";s:2:"Å­";s:2:"Å®";s:2:"ů";s:2:"Å°";s:2:"ű";s:2:"Ų";s:2:"ų";s:2:"Å´";s:2:"ŵ";s:2:"Ŷ";s:2:"Å·";s:2:"Ÿ";s:2:"ÿ";s:2:"Ź";s:2:"ź";s:2:"Å»";s:2:"ż";s:2:"Ž";s:2:"ž";s:2:"Æ";s:2:"É“";s:2:"Æ‚";s:2:"ƃ";s:2:"Æ„";s:2:"Æ…";s:2:"Ɔ";s:2:"É”";s:2:"Ƈ";s:2:"ƈ";s:2:"Ɖ";s:2:"É–";s:2:"ÆŠ";s:2:"É—";s:2:"Æ‹";s:2:"ÆŒ";s:2:"ÆŽ";s:2:"Ç";s:2:"Æ";s:2:"É™";s:2:"Æ";s:2:"É›";s:2:"Æ‘";s:2:"Æ’";s:2:"Æ“";s:2:"É ";s:2:"Æ”";s:2:"É£";s:2:"Æ–";s:2:"É©";s:2:"Æ—";s:2:"ɨ";s:2:"Ƙ";s:2:"Æ™";s:2:"Æœ";s:2:"ɯ";s:2:"Æ";s:2:"ɲ";s:2:"ÆŸ";s:2:"ɵ";s:2:"Æ ";s:2:"Æ¡";s:2:"Æ¢";s:2:"Æ£";s:2:"Ƥ";s:2:"Æ¥";s:2:"Ʀ";s:2:"Ê€";s:2:"Ƨ";s:2:"ƨ";s:2:"Æ©";s:2:"ʃ";s:2:"Ƭ";s:2:"Æ­";s:2:"Æ®";s:2:"ʈ";s:2:"Ư";s:2:"Æ°";s:2:"Ʊ";s:2:"ÊŠ";s:2:"Ʋ";s:2:"Ê‹";s:2:"Ƴ";s:2:"Æ´";s:2:"Ƶ";s:2:"ƶ";s:2:"Æ·";s:2:"Ê’";s:2:"Ƹ";s:2:"ƹ";s:2:"Ƽ";s:2:"ƽ";s:2:"Ç„";s:2:"dž";s:2:"Ç…";s:2:"dž";s:2:"LJ";s:2:"lj";s:2:"Lj";s:2:"lj";s:2:"ÇŠ";s:2:"ÇŒ";s:2:"Ç‹";s:2:"ÇŒ";s:2:"Ç";s:2:"ÇŽ";s:2:"Ç";s:2:"Ç";s:2:"Ç‘";s:2:"Ç’";s:2:"Ç“";s:2:"Ç”";s:2:"Ç•";s:2:"Ç–";s:2:"Ç—";s:2:"ǘ";s:2:"Ç™";s:2:"Çš";s:2:"Ç›";s:2:"Çœ";s:2:"Çž";s:2:"ÇŸ";s:2:"Ç ";s:2:"Ç¡";s:2:"Ç¢";s:2:"Ç£";s:2:"Ǥ";s:2:"Ç¥";s:2:"Ǧ";s:2:"ǧ";s:2:"Ǩ";s:2:"Ç©";s:2:"Ǫ";s:2:"Ç«";s:2:"Ǭ";s:2:"Ç­";s:2:"Ç®";s:2:"ǯ";s:2:"DZ";s:2:"dz";s:2:"Dz";s:2:"dz";s:2:"Ç´";s:2:"ǵ";s:2:"Ƕ";s:2:"Æ•";s:2:"Ç·";s:2:"Æ¿";s:2:"Ǹ";s:2:"ǹ";s:2:"Ǻ";s:2:"Ç»";s:2:"Ǽ";s:2:"ǽ";s:2:"Ǿ";s:2:"Ç¿";s:2:"È€";s:2:"È";s:2:"È‚";s:2:"ȃ";s:2:"È„";s:2:"È…";s:2:"Ȇ";s:2:"ȇ";s:2:"Ȉ";s:2:"ȉ";s:2:"ÈŠ";s:2:"È‹";s:2:"ÈŒ";s:2:"È";s:2:"ÈŽ";s:2:"È";s:2:"È";s:2:"È‘";s:2:"È’";s:2:"È“";s:2:"È”";s:2:"È•";s:2:"È–";s:2:"È—";s:2:"Ș";s:2:"È™";s:2:"Èš";s:2:"È›";s:2:"Èœ";s:2:"È";s:2:"Èž";s:2:"ÈŸ";s:2:"È ";s:2:"Æž";s:2:"È¢";s:2:"È£";s:2:"Ȥ";s:2:"È¥";s:2:"Ȧ";s:2:"ȧ";s:2:"Ȩ";s:2:"È©";s:2:"Ȫ";s:2:"È«";s:2:"Ȭ";s:2:"È­";s:2:"È®";s:2:"ȯ";s:2:"È°";s:2:"ȱ";s:2:"Ȳ";s:2:"ȳ";s:2:"Ⱥ";s:3:"â±¥";s:2:"È»";s:2:"ȼ";s:2:"Ƚ";s:2:"Æš";s:2:"Ⱦ";s:3:"ⱦ";s:2:"É";s:2:"É‚";s:2:"Ƀ";s:2:"Æ€";s:2:"É„";s:2:"ʉ";s:2:"É…";s:2:"ÊŒ";s:2:"Ɇ";s:2:"ɇ";s:2:"Ɉ";s:2:"ɉ";s:2:"ÉŠ";s:2:"É‹";s:2:"ÉŒ";s:2:"É";s:2:"ÉŽ";s:2:"É";s:2:"Í°";s:2:"ͱ";s:2:"Ͳ";s:2:"ͳ";s:2:"Ͷ";s:2:"Í·";s:2:"Ά";s:2:"ά";s:2:"Έ";s:2:"έ";s:2:"Ή";s:2:"ή";s:2:"Ί";s:2:"ί";s:2:"ÎŒ";s:2:"ÏŒ";s:2:"ÎŽ";s:2:"Ï";s:2:"Î";s:2:"ÏŽ";s:2:"Α";s:2:"α";s:2:"Î’";s:2:"β";s:2:"Γ";s:2:"γ";s:2:"Δ";s:2:"δ";s:2:"Ε";s:2:"ε";s:2:"Ζ";s:2:"ζ";s:2:"Η";s:2:"η";s:2:"Θ";s:2:"θ";s:2:"Ι";s:2:"ι";s:2:"Κ";s:2:"κ";s:2:"Λ";s:2:"λ";s:2:"Îœ";s:2:"μ";s:2:"Î";s:2:"ν";s:2:"Ξ";s:2:"ξ";s:2:"Ο";s:2:"ο";s:2:"Π";s:2:"Ï€";s:2:"Ρ";s:2:"Ï";s:2:"Σ";s:2:"σ";s:2:"Τ";s:2:"Ï„";s:2:"Î¥";s:2:"Ï…";s:2:"Φ";s:2:"φ";s:2:"Χ";s:2:"χ";s:2:"Ψ";s:2:"ψ";s:2:"Ω";s:2:"ω";s:2:"Ϊ";s:2:"ÏŠ";s:2:"Ϋ";s:2:"Ï‹";s:2:"Ï";s:2:"Ï—";s:2:"Ϙ";s:2:"Ï™";s:2:"Ïš";s:2:"Ï›";s:2:"Ïœ";s:2:"Ï";s:2:"Ïž";s:2:"ÏŸ";s:2:"Ï ";s:2:"Ï¡";s:2:"Ï¢";s:2:"Ï£";s:2:"Ϥ";s:2:"Ï¥";s:2:"Ϧ";s:2:"ϧ";s:2:"Ϩ";s:2:"Ï©";s:2:"Ϫ";s:2:"Ï«";s:2:"Ϭ";s:2:"Ï­";s:2:"Ï®";s:2:"ϯ";s:2:"Ï´";s:2:"θ";s:2:"Ï·";s:2:"ϸ";s:2:"Ϲ";s:2:"ϲ";s:2:"Ϻ";s:2:"Ï»";s:2:"Ͻ";s:2:"Í»";s:2:"Ͼ";s:2:"ͼ";s:2:"Ï¿";s:2:"ͽ";s:2:"Ѐ";s:2:"Ñ";s:2:"Ð";s:2:"Ñ‘";s:2:"Ђ";s:2:"Ñ’";s:2:"Ѓ";s:2:"Ñ“";s:2:"Є";s:2:"Ñ”";s:2:"Ð…";s:2:"Ñ•";s:2:"І";s:2:"Ñ–";s:2:"Ї";s:2:"Ñ—";s:2:"Ј";s:2:"ј";s:2:"Љ";s:2:"Ñ™";s:2:"Њ";s:2:"Ñš";s:2:"Ћ";s:2:"Ñ›";s:2:"ÐŒ";s:2:"Ñœ";s:2:"Ð";s:2:"Ñ";s:2:"ÐŽ";s:2:"Ñž";s:2:"Ð";s:2:"ÑŸ";s:2:"Ð";s:2:"а";s:2:"Б";s:2:"б";s:2:"Ð’";s:2:"в";s:2:"Г";s:2:"г";s:2:"Д";s:2:"д";s:2:"Е";s:2:"е";s:2:"Ж";s:2:"ж";s:2:"З";s:2:"з";s:2:"И";s:2:"и";s:2:"Й";s:2:"й";s:2:"К";s:2:"к";s:2:"Л";s:2:"л";s:2:"Ðœ";s:2:"м";s:2:"Ð";s:2:"н";s:2:"О";s:2:"о";s:2:"П";s:2:"п";s:2:"Р";s:2:"Ñ€";s:2:"С";s:2:"Ñ";s:2:"Т";s:2:"Ñ‚";s:2:"У";s:2:"у";s:2:"Ф";s:2:"Ñ„";s:2:"Ð¥";s:2:"Ñ…";s:2:"Ц";s:2:"ц";s:2:"Ч";s:2:"ч";s:2:"Ш";s:2:"ш";s:2:"Щ";s:2:"щ";s:2:"Ъ";s:2:"ÑŠ";s:2:"Ы";s:2:"Ñ‹";s:2:"Ь";s:2:"ÑŒ";s:2:"Э";s:2:"Ñ";s:2:"Ю";s:2:"ÑŽ";s:2:"Я";s:2:"Ñ";s:2:"Ñ ";s:2:"Ñ¡";s:2:"Ñ¢";s:2:"Ñ£";s:2:"Ѥ";s:2:"Ñ¥";s:2:"Ѧ";s:2:"ѧ";s:2:"Ѩ";s:2:"Ñ©";s:2:"Ѫ";s:2:"Ñ«";s:2:"Ѭ";s:2:"Ñ­";s:2:"Ñ®";s:2:"ѯ";s:2:"Ñ°";s:2:"ѱ";s:2:"Ѳ";s:2:"ѳ";s:2:"Ñ´";s:2:"ѵ";s:2:"Ѷ";s:2:"Ñ·";s:2:"Ѹ";s:2:"ѹ";s:2:"Ѻ";s:2:"Ñ»";s:2:"Ѽ";s:2:"ѽ";s:2:"Ѿ";s:2:"Ñ¿";s:2:"Ò€";s:2:"Ò";s:2:"ÒŠ";s:2:"Ò‹";s:2:"ÒŒ";s:2:"Ò";s:2:"ÒŽ";s:2:"Ò";s:2:"Ò";s:2:"Ò‘";s:2:"Ò’";s:2:"Ò“";s:2:"Ò”";s:2:"Ò•";s:2:"Ò–";s:2:"Ò—";s:2:"Ò˜";s:2:"Ò™";s:2:"Òš";s:2:"Ò›";s:2:"Òœ";s:2:"Ò";s:2:"Òž";s:2:"ÒŸ";s:2:"Ò ";s:2:"Ò¡";s:2:"Ò¢";s:2:"Ò£";s:2:"Ò¤";s:2:"Ò¥";s:2:"Ò¦";s:2:"Ò§";s:2:"Ò¨";s:2:"Ò©";s:2:"Òª";s:2:"Ò«";s:2:"Ò¬";s:2:"Ò­";s:2:"Ò®";s:2:"Ò¯";s:2:"Ò°";s:2:"Ò±";s:2:"Ò²";s:2:"Ò³";s:2:"Ò´";s:2:"Òµ";s:2:"Ò¶";s:2:"Ò·";s:2:"Ò¸";s:2:"Ò¹";s:2:"Òº";s:2:"Ò»";s:2:"Ò¼";s:2:"Ò½";s:2:"Ò¾";s:2:"Ò¿";s:2:"Ó€";s:2:"Ó";s:2:"Ó";s:2:"Ó‚";s:2:"Óƒ";s:2:"Ó„";s:2:"Ó…";s:2:"Ó†";s:2:"Ó‡";s:2:"Óˆ";s:2:"Ó‰";s:2:"ÓŠ";s:2:"Ó‹";s:2:"ÓŒ";s:2:"Ó";s:2:"ÓŽ";s:2:"Ó";s:2:"Ó‘";s:2:"Ó’";s:2:"Ó“";s:2:"Ó”";s:2:"Ó•";s:2:"Ó–";s:2:"Ó—";s:2:"Ó˜";s:2:"Ó™";s:2:"Óš";s:2:"Ó›";s:2:"Óœ";s:2:"Ó";s:2:"Óž";s:2:"ÓŸ";s:2:"Ó ";s:2:"Ó¡";s:2:"Ó¢";s:2:"Ó£";s:2:"Ó¤";s:2:"Ó¥";s:2:"Ó¦";s:2:"Ó§";s:2:"Ó¨";s:2:"Ó©";s:2:"Óª";s:2:"Ó«";s:2:"Ó¬";s:2:"Ó­";s:2:"Ó®";s:2:"Ó¯";s:2:"Ó°";s:2:"Ó±";s:2:"Ó²";s:2:"Ó³";s:2:"Ó´";s:2:"Óµ";s:2:"Ó¶";s:2:"Ó·";s:2:"Ó¸";s:2:"Ó¹";s:2:"Óº";s:2:"Ó»";s:2:"Ó¼";s:2:"Ó½";s:2:"Ó¾";s:2:"Ó¿";s:2:"Ô€";s:2:"Ô";s:2:"Ô‚";s:2:"Ôƒ";s:2:"Ô„";s:2:"Ô…";s:2:"Ô†";s:2:"Ô‡";s:2:"Ôˆ";s:2:"Ô‰";s:2:"ÔŠ";s:2:"Ô‹";s:2:"ÔŒ";s:2:"Ô";s:2:"ÔŽ";s:2:"Ô";s:2:"Ô";s:2:"Ô‘";s:2:"Ô’";s:2:"Ô“";s:2:"Ô”";s:2:"Ô•";s:2:"Ô–";s:2:"Ô—";s:2:"Ô˜";s:2:"Ô™";s:2:"Ôš";s:2:"Ô›";s:2:"Ôœ";s:2:"Ô";s:2:"Ôž";s:2:"ÔŸ";s:2:"Ô ";s:2:"Ô¡";s:2:"Ô¢";s:2:"Ô£";s:2:"Ô±";s:2:"Õ¡";s:2:"Ô²";s:2:"Õ¢";s:2:"Ô³";s:2:"Õ£";s:2:"Ô´";s:2:"Õ¤";s:2:"Ôµ";s:2:"Õ¥";s:2:"Ô¶";s:2:"Õ¦";s:2:"Ô·";s:2:"Õ§";s:2:"Ô¸";s:2:"Õ¨";s:2:"Ô¹";s:2:"Õ©";s:2:"Ôº";s:2:"Õª";s:2:"Ô»";s:2:"Õ«";s:2:"Ô¼";s:2:"Õ¬";s:2:"Ô½";s:2:"Õ­";s:2:"Ô¾";s:2:"Õ®";s:2:"Ô¿";s:2:"Õ¯";s:2:"Õ€";s:2:"Õ°";s:2:"Õ";s:2:"Õ±";s:2:"Õ‚";s:2:"Õ²";s:2:"Õƒ";s:2:"Õ³";s:2:"Õ„";s:2:"Õ´";s:2:"Õ…";s:2:"Õµ";s:2:"Õ†";s:2:"Õ¶";s:2:"Õ‡";s:2:"Õ·";s:2:"Õˆ";s:2:"Õ¸";s:2:"Õ‰";s:2:"Õ¹";s:2:"ÕŠ";s:2:"Õº";s:2:"Õ‹";s:2:"Õ»";s:2:"ÕŒ";s:2:"Õ¼";s:2:"Õ";s:2:"Õ½";s:2:"ÕŽ";s:2:"Õ¾";s:2:"Õ";s:2:"Õ¿";s:2:"Õ";s:2:"Ö€";s:2:"Õ‘";s:2:"Ö";s:2:"Õ’";s:2:"Ö‚";s:2:"Õ“";s:2:"Öƒ";s:2:"Õ”";s:2:"Ö„";s:2:"Õ•";s:2:"Ö…";s:2:"Õ–";s:2:"Ö†";s:3:"á‚ ";s:3:"â´€";s:3:"á‚¡";s:3:"â´";s:3:"á‚¢";s:3:"â´‚";s:3:"á‚£";s:3:"â´ƒ";s:3:"Ⴄ";s:3:"â´„";s:3:"á‚¥";s:3:"â´…";s:3:"Ⴆ";s:3:"â´†";s:3:"Ⴇ";s:3:"â´‡";s:3:"Ⴈ";s:3:"â´ˆ";s:3:"á‚©";s:3:"â´‰";s:3:"Ⴊ";s:3:"â´Š";s:3:"á‚«";s:3:"â´‹";s:3:"Ⴌ";s:3:"â´Œ";s:3:"á‚­";s:3:"â´";s:3:"á‚®";s:3:"â´Ž";s:3:"Ⴏ";s:3:"â´";s:3:"á‚°";s:3:"â´";s:3:"Ⴑ";s:3:"â´‘";s:3:"Ⴒ";s:3:"â´’";s:3:"Ⴓ";s:3:"â´“";s:3:"á‚´";s:3:"â´”";s:3:"Ⴕ";s:3:"â´•";s:3:"Ⴖ";s:3:"â´–";s:3:"á‚·";s:3:"â´—";s:3:"Ⴘ";s:3:"â´˜";s:3:"Ⴙ";s:3:"â´™";s:3:"Ⴚ";s:3:"â´š";s:3:"á‚»";s:3:"â´›";s:3:"Ⴜ";s:3:"â´œ";s:3:"Ⴝ";s:3:"â´";s:3:"Ⴞ";s:3:"â´ž";s:3:"á‚¿";s:3:"â´Ÿ";s:3:"Ⴠ";s:3:"â´ ";s:3:"áƒ";s:3:"â´¡";s:3:"Ⴢ";s:3:"â´¢";s:3:"Ⴣ";s:3:"â´£";s:3:"Ⴤ";s:3:"â´¤";s:3:"Ⴥ";s:3:"â´¥";s:3:"Ḁ";s:3:"á¸";s:3:"Ḃ";s:3:"ḃ";s:3:"Ḅ";s:3:"ḅ";s:3:"Ḇ";s:3:"ḇ";s:3:"Ḉ";s:3:"ḉ";s:3:"Ḋ";s:3:"ḋ";s:3:"Ḍ";s:3:"á¸";s:3:"Ḏ";s:3:"á¸";s:3:"á¸";s:3:"ḑ";s:3:"Ḓ";s:3:"ḓ";s:3:"Ḕ";s:3:"ḕ";s:3:"Ḗ";s:3:"ḗ";s:3:"Ḙ";s:3:"ḙ";s:3:"Ḛ";s:3:"ḛ";s:3:"Ḝ";s:3:"á¸";s:3:"Ḟ";s:3:"ḟ";s:3:"Ḡ";s:3:"ḡ";s:3:"Ḣ";s:3:"ḣ";s:3:"Ḥ";s:3:"ḥ";s:3:"Ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"ḩ";s:3:"Ḫ";s:3:"ḫ";s:3:"Ḭ";s:3:"ḭ";s:3:"Ḯ";s:3:"ḯ";s:3:"Ḱ";s:3:"ḱ";s:3:"Ḳ";s:3:"ḳ";s:3:"Ḵ";s:3:"ḵ";s:3:"Ḷ";s:3:"ḷ";s:3:"Ḹ";s:3:"ḹ";s:3:"Ḻ";s:3:"ḻ";s:3:"Ḽ";s:3:"ḽ";s:3:"Ḿ";s:3:"ḿ";s:3:"á¹€";s:3:"á¹";s:3:"Ṃ";s:3:"ṃ";s:3:"Ṅ";s:3:"á¹…";s:3:"Ṇ";s:3:"ṇ";s:3:"Ṉ";s:3:"ṉ";s:3:"Ṋ";s:3:"ṋ";s:3:"Ṍ";s:3:"á¹";s:3:"Ṏ";s:3:"á¹";s:3:"á¹";s:3:"ṑ";s:3:"á¹’";s:3:"ṓ";s:3:"á¹”";s:3:"ṕ";s:3:"á¹–";s:3:"á¹—";s:3:"Ṙ";s:3:"á¹™";s:3:"Ṛ";s:3:"á¹›";s:3:"Ṝ";s:3:"á¹";s:3:"Ṟ";s:3:"ṟ";s:3:"á¹ ";s:3:"ṡ";s:3:"á¹¢";s:3:"á¹£";s:3:"Ṥ";s:3:"á¹¥";s:3:"Ṧ";s:3:"ṧ";s:3:"Ṩ";s:3:"ṩ";s:3:"Ṫ";s:3:"ṫ";s:3:"Ṭ";s:3:"á¹­";s:3:"á¹®";s:3:"ṯ";s:3:"á¹°";s:3:"á¹±";s:3:"á¹²";s:3:"á¹³";s:3:"á¹´";s:3:"á¹µ";s:3:"Ṷ";s:3:"á¹·";s:3:"Ṹ";s:3:"á¹¹";s:3:"Ṻ";s:3:"á¹»";s:3:"á¹¼";s:3:"á¹½";s:3:"á¹¾";s:3:"ṿ";s:3:"Ẁ";s:3:"áº";s:3:"Ẃ";s:3:"ẃ";s:3:"Ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"ẇ";s:3:"Ẉ";s:3:"ẉ";s:3:"Ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"áº";s:3:"Ẏ";s:3:"áº";s:3:"áº";s:3:"ẑ";s:3:"Ẓ";s:3:"ẓ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẞ";s:2:"ß";s:3:"Ạ";s:3:"ạ";s:3:"Ả";s:3:"ả";s:3:"Ấ";s:3:"ấ";s:3:"Ầ";s:3:"ầ";s:3:"Ẩ";s:3:"ẩ";s:3:"Ẫ";s:3:"ẫ";s:3:"Ậ";s:3:"ậ";s:3:"Ắ";s:3:"ắ";s:3:"Ằ";s:3:"ằ";s:3:"Ẳ";s:3:"ẳ";s:3:"Ẵ";s:3:"ẵ";s:3:"Ặ";s:3:"ặ";s:3:"Ẹ";s:3:"ẹ";s:3:"Ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"ẽ";s:3:"Ế";s:3:"ế";s:3:"Ề";s:3:"á»";s:3:"Ể";s:3:"ể";s:3:"Ễ";s:3:"á»…";s:3:"Ệ";s:3:"ệ";s:3:"Ỉ";s:3:"ỉ";s:3:"Ị";s:3:"ị";s:3:"Ọ";s:3:"á»";s:3:"Ỏ";s:3:"á»";s:3:"á»";s:3:"ố";s:3:"á»’";s:3:"ồ";s:3:"á»”";s:3:"ổ";s:3:"á»–";s:3:"á»—";s:3:"Ộ";s:3:"á»™";s:3:"Ớ";s:3:"á»›";s:3:"Ờ";s:3:"á»";s:3:"Ở";s:3:"ở";s:3:"á» ";s:3:"ỡ";s:3:"Ợ";s:3:"ợ";s:3:"Ụ";s:3:"ụ";s:3:"Ủ";s:3:"ủ";s:3:"Ứ";s:3:"ứ";s:3:"Ừ";s:3:"ừ";s:3:"Ử";s:3:"á»­";s:3:"á»®";s:3:"ữ";s:3:"á»°";s:3:"á»±";s:3:"Ỳ";s:3:"ỳ";s:3:"á»´";s:3:"ỵ";s:3:"Ỷ";s:3:"á»·";s:3:"Ỹ";s:3:"ỹ";s:3:"Ỻ";s:3:"á»»";s:3:"Ỽ";s:3:"ỽ";s:3:"Ỿ";s:3:"ỿ";s:3:"Ἀ";s:3:"á¼€";s:3:"Ἁ";s:3:"á¼";s:3:"Ἂ";s:3:"ἂ";s:3:"Ἃ";s:3:"ἃ";s:3:"Ἄ";s:3:"ἄ";s:3:"á¼";s:3:"á¼…";s:3:"Ἆ";s:3:"ἆ";s:3:"á¼";s:3:"ἇ";s:3:"Ἐ";s:3:"á¼";s:3:"á¼™";s:3:"ἑ";s:3:"Ἒ";s:3:"á¼’";s:3:"á¼›";s:3:"ἓ";s:3:"Ἔ";s:3:"á¼”";s:3:"á¼";s:3:"ἕ";s:3:"Ἠ";s:3:"á¼ ";s:3:"Ἡ";s:3:"ἡ";s:3:"Ἢ";s:3:"á¼¢";s:3:"Ἣ";s:3:"á¼£";s:3:"Ἤ";s:3:"ἤ";s:3:"á¼­";s:3:"á¼¥";s:3:"á¼®";s:3:"ἦ";s:3:"Ἧ";s:3:"ἧ";s:3:"Ἰ";s:3:"á¼°";s:3:"á¼¹";s:3:"á¼±";s:3:"Ἲ";s:3:"á¼²";s:3:"á¼»";s:3:"á¼³";s:3:"á¼¼";s:3:"á¼´";s:3:"á¼½";s:3:"á¼µ";s:3:"á¼¾";s:3:"ἶ";s:3:"Ἷ";s:3:"á¼·";s:3:"Ὀ";s:3:"á½€";s:3:"Ὁ";s:3:"á½";s:3:"Ὂ";s:3:"ὂ";s:3:"Ὃ";s:3:"ὃ";s:3:"Ὄ";s:3:"ὄ";s:3:"á½";s:3:"á½…";s:3:"á½™";s:3:"ὑ";s:3:"á½›";s:3:"ὓ";s:3:"á½";s:3:"ὕ";s:3:"Ὗ";s:3:"á½—";s:3:"Ὠ";s:3:"á½ ";s:3:"Ὡ";s:3:"ὡ";s:3:"Ὢ";s:3:"á½¢";s:3:"Ὣ";s:3:"á½£";s:3:"Ὤ";s:3:"ὤ";s:3:"á½­";s:3:"á½¥";s:3:"á½®";s:3:"ὦ";s:3:"Ὧ";s:3:"ὧ";s:3:"ᾈ";s:3:"á¾€";s:3:"ᾉ";s:3:"á¾";s:3:"ᾊ";s:3:"ᾂ";s:3:"ᾋ";s:3:"ᾃ";s:3:"ᾌ";s:3:"ᾄ";s:3:"á¾";s:3:"á¾…";s:3:"ᾎ";s:3:"ᾆ";s:3:"á¾";s:3:"ᾇ";s:3:"ᾘ";s:3:"á¾";s:3:"á¾™";s:3:"ᾑ";s:3:"ᾚ";s:3:"á¾’";s:3:"á¾›";s:3:"ᾓ";s:3:"ᾜ";s:3:"á¾”";s:3:"á¾";s:3:"ᾕ";s:3:"ᾞ";s:3:"á¾–";s:3:"ᾟ";s:3:"á¾—";s:3:"ᾨ";s:3:"á¾ ";s:3:"ᾩ";s:3:"ᾡ";s:3:"ᾪ";s:3:"á¾¢";s:3:"ᾫ";s:3:"á¾£";s:3:"ᾬ";s:3:"ᾤ";s:3:"á¾­";s:3:"á¾¥";s:3:"á¾®";s:3:"ᾦ";s:3:"ᾯ";s:3:"ᾧ";s:3:"Ᾰ";s:3:"á¾°";s:3:"á¾¹";s:3:"á¾±";s:3:"Ὰ";s:3:"á½°";s:3:"á¾»";s:3:"á½±";s:3:"á¾¼";s:3:"á¾³";s:3:"Ὲ";s:3:"á½²";s:3:"Έ";s:3:"á½³";s:3:"á¿Š";s:3:"á½´";s:3:"á¿‹";s:3:"á½µ";s:3:"á¿Œ";s:3:"ῃ";s:3:"Ῐ";s:3:"á¿";s:3:"á¿™";s:3:"á¿‘";s:3:"á¿š";s:3:"ὶ";s:3:"á¿›";s:3:"á½·";s:3:"Ῠ";s:3:"á¿ ";s:3:"á¿©";s:3:"á¿¡";s:3:"Ὺ";s:3:"ὺ";s:3:"á¿«";s:3:"á½»";s:3:"Ῥ";s:3:"á¿¥";s:3:"Ὸ";s:3:"ὸ";s:3:"Ό";s:3:"á½¹";s:3:"Ὼ";s:3:"á½¼";s:3:"á¿»";s:3:"á½½";s:3:"ῼ";s:3:"ῳ";s:3:"Ω";s:2:"ω";s:3:"K";s:1:"k";s:3:"â„«";s:2:"Ã¥";s:3:"Ⅎ";s:3:"â…Ž";s:3:"â… ";s:3:"â…°";s:3:"â…¡";s:3:"â…±";s:3:"â…¢";s:3:"â…²";s:3:"â…£";s:3:"â…³";s:3:"â…¤";s:3:"â…´";s:3:"â…¥";s:3:"â…µ";s:3:"â…¦";s:3:"â…¶";s:3:"â…§";s:3:"â…·";s:3:"â…¨";s:3:"â…¸";s:3:"â…©";s:3:"â…¹";s:3:"â…ª";s:3:"â…º";s:3:"â…«";s:3:"â…»";s:3:"â…¬";s:3:"â…¼";s:3:"â…­";s:3:"â…½";s:3:"â…®";s:3:"â…¾";s:3:"â…¯";s:3:"â…¿";s:3:"Ↄ";s:3:"ↄ";s:3:"â’¶";s:3:"â“";s:3:"â’·";s:3:"â“‘";s:3:"â’¸";s:3:"â“’";s:3:"â’¹";s:3:"â““";s:3:"â’º";s:3:"â“”";s:3:"â’»";s:3:"â“•";s:3:"â’¼";s:3:"â“–";s:3:"â’½";s:3:"â“—";s:3:"â’¾";s:3:"ⓘ";s:3:"â’¿";s:3:"â“™";s:3:"â“€";s:3:"â“š";s:3:"â“";s:3:"â“›";s:3:"â“‚";s:3:"â“œ";s:3:"Ⓝ";s:3:"â“";s:3:"â“„";s:3:"â“ž";s:3:"â“…";s:3:"â“Ÿ";s:3:"Ⓠ";s:3:"â“ ";s:3:"Ⓡ";s:3:"â“¡";s:3:"Ⓢ";s:3:"â“¢";s:3:"Ⓣ";s:3:"â“£";s:3:"â“Š";s:3:"ⓤ";s:3:"â“‹";s:3:"â“¥";s:3:"â“Œ";s:3:"ⓦ";s:3:"â“";s:3:"ⓧ";s:3:"â“Ž";s:3:"ⓨ";s:3:"â“";s:3:"â“©";s:3:"â°€";s:3:"â°°";s:3:"â°";s:3:"â°±";s:3:"â°‚";s:3:"â°²";s:3:"â°ƒ";s:3:"â°³";s:3:"â°„";s:3:"â°´";s:3:"â°…";s:3:"â°µ";s:3:"â°†";s:3:"â°¶";s:3:"â°‡";s:3:"â°·";s:3:"â°ˆ";s:3:"â°¸";s:3:"â°‰";s:3:"â°¹";s:3:"â°Š";s:3:"â°º";s:3:"â°‹";s:3:"â°»";s:3:"â°Œ";s:3:"â°¼";s:3:"â°";s:3:"â°½";s:3:"â°Ž";s:3:"â°¾";s:3:"â°";s:3:"â°¿";s:3:"â°";s:3:"â±€";s:3:"â°‘";s:3:"â±";s:3:"â°’";s:3:"ⱂ";s:3:"â°“";s:3:"ⱃ";s:3:"â°”";s:3:"ⱄ";s:3:"â°•";s:3:"â±…";s:3:"â°–";s:3:"ⱆ";s:3:"â°—";s:3:"ⱇ";s:3:"â°˜";s:3:"ⱈ";s:3:"â°™";s:3:"ⱉ";s:3:"â°š";s:3:"ⱊ";s:3:"â°›";s:3:"ⱋ";s:3:"â°œ";s:3:"ⱌ";s:3:"â°";s:3:"â±";s:3:"â°ž";s:3:"ⱎ";s:3:"â°Ÿ";s:3:"â±";s:3:"â° ";s:3:"â±";s:3:"â°¡";s:3:"ⱑ";s:3:"â°¢";s:3:"â±’";s:3:"â°£";s:3:"ⱓ";s:3:"â°¤";s:3:"â±”";s:3:"â°¥";s:3:"ⱕ";s:3:"â°¦";s:3:"â±–";s:3:"â°§";s:3:"â±—";s:3:"â°¨";s:3:"ⱘ";s:3:"â°©";s:3:"â±™";s:3:"â°ª";s:3:"ⱚ";s:3:"â°«";s:3:"â±›";s:3:"â°¬";s:3:"ⱜ";s:3:"â°­";s:3:"â±";s:3:"â°®";s:3:"ⱞ";s:3:"â± ";s:3:"ⱡ";s:3:"â±¢";s:2:"É«";s:3:"â±£";s:3:"áµ½";s:3:"Ɽ";s:2:"ɽ";s:3:"Ⱨ";s:3:"ⱨ";s:3:"Ⱪ";s:3:"ⱪ";s:3:"Ⱬ";s:3:"ⱬ";s:3:"â±­";s:2:"É‘";s:3:"â±®";s:2:"ɱ";s:3:"Ɐ";s:2:"É";s:3:"â±²";s:3:"â±³";s:3:"â±µ";s:3:"ⱶ";s:3:"â²€";s:3:"â²";s:3:"Ⲃ";s:3:"ⲃ";s:3:"Ⲅ";s:3:"â²…";s:3:"Ⲇ";s:3:"ⲇ";s:3:"Ⲉ";s:3:"ⲉ";s:3:"Ⲋ";s:3:"ⲋ";s:3:"Ⲍ";s:3:"â²";s:3:"Ⲏ";s:3:"â²";s:3:"â²";s:3:"ⲑ";s:3:"â²’";s:3:"ⲓ";s:3:"â²”";s:3:"ⲕ";s:3:"â²–";s:3:"â²—";s:3:"Ⲙ";s:3:"â²™";s:3:"Ⲛ";s:3:"â²›";s:3:"Ⲝ";s:3:"â²";s:3:"Ⲟ";s:3:"ⲟ";s:3:"â² ";s:3:"ⲡ";s:3:"â²¢";s:3:"â²£";s:3:"Ⲥ";s:3:"â²¥";s:3:"Ⲧ";s:3:"ⲧ";s:3:"Ⲩ";s:3:"ⲩ";s:3:"Ⲫ";s:3:"ⲫ";s:3:"Ⲭ";s:3:"â²­";s:3:"â²®";s:3:"ⲯ";s:3:"â²°";s:3:"â²±";s:3:"â²²";s:3:"â²³";s:3:"â²´";s:3:"â²µ";s:3:"Ⲷ";s:3:"â²·";s:3:"Ⲹ";s:3:"â²¹";s:3:"Ⲻ";s:3:"â²»";s:3:"â²¼";s:3:"â²½";s:3:"â²¾";s:3:"ⲿ";s:3:"â³€";s:3:"â³";s:3:"Ⳃ";s:3:"ⳃ";s:3:"Ⳅ";s:3:"â³…";s:3:"Ⳇ";s:3:"ⳇ";s:3:"Ⳉ";s:3:"ⳉ";s:3:"Ⳋ";s:3:"ⳋ";s:3:"Ⳍ";s:3:"â³";s:3:"Ⳏ";s:3:"â³";s:3:"â³";s:3:"ⳑ";s:3:"â³’";s:3:"ⳓ";s:3:"â³”";s:3:"ⳕ";s:3:"â³–";s:3:"â³—";s:3:"Ⳙ";s:3:"â³™";s:3:"Ⳛ";s:3:"â³›";s:3:"Ⳝ";s:3:"â³";s:3:"Ⳟ";s:3:"ⳟ";s:3:"â³ ";s:3:"ⳡ";s:3:"â³¢";s:3:"â³£";s:3:"Ꙁ";s:3:"ê™";s:3:"Ꙃ";s:3:"ꙃ";s:3:"Ꙅ";s:3:"ê™…";s:3:"Ꙇ";s:3:"ꙇ";s:3:"Ꙉ";s:3:"ꙉ";s:3:"Ꙋ";s:3:"ꙋ";s:3:"Ꙍ";s:3:"ê™";s:3:"Ꙏ";s:3:"ê™";s:3:"ê™";s:3:"ꙑ";s:3:"ê™’";s:3:"ꙓ";s:3:"ê™”";s:3:"ꙕ";s:3:"ê™–";s:3:"ê™—";s:3:"Ꙙ";s:3:"ê™™";s:3:"Ꙛ";s:3:"ê™›";s:3:"Ꙝ";s:3:"ê™";s:3:"Ꙟ";s:3:"ꙟ";s:3:"Ꙣ";s:3:"ꙣ";s:3:"Ꙥ";s:3:"ꙥ";s:3:"Ꙧ";s:3:"ꙧ";s:3:"Ꙩ";s:3:"ꙩ";s:3:"Ꙫ";s:3:"ꙫ";s:3:"Ꙭ";s:3:"ê™­";s:3:"Ꚁ";s:3:"êš";s:3:"êš‚";s:3:"ꚃ";s:3:"êš„";s:3:"êš…";s:3:"Ꚇ";s:3:"ꚇ";s:3:"Ꚉ";s:3:"ꚉ";s:3:"Ꚋ";s:3:"êš‹";s:3:"Ꚍ";s:3:"êš";s:3:"Ꚏ";s:3:"êš";s:3:"êš";s:3:"êš‘";s:3:"êš’";s:3:"êš“";s:3:"êš”";s:3:"êš•";s:3:"êš–";s:3:"êš—";s:3:"Ꜣ";s:3:"ꜣ";s:3:"Ꜥ";s:3:"ꜥ";s:3:"Ꜧ";s:3:"ꜧ";s:3:"Ꜩ";s:3:"ꜩ";s:3:"Ꜫ";s:3:"ꜫ";s:3:"Ꜭ";s:3:"ꜭ";s:3:"Ꜯ";s:3:"ꜯ";s:3:"Ꜳ";s:3:"ꜳ";s:3:"Ꜵ";s:3:"ꜵ";s:3:"Ꜷ";s:3:"ꜷ";s:3:"Ꜹ";s:3:"ꜹ";s:3:"Ꜻ";s:3:"ꜻ";s:3:"Ꜽ";s:3:"ꜽ";s:3:"Ꜿ";s:3:"ꜿ";s:3:"ê€";s:3:"ê";s:3:"ê‚";s:3:"êƒ";s:3:"ê„";s:3:"ê…";s:3:"ê†";s:3:"ê‡";s:3:"êˆ";s:3:"ê‰";s:3:"êŠ";s:3:"ê‹";s:3:"êŒ";s:3:"ê";s:3:"êŽ";s:3:"ê";s:3:"ê";s:3:"ê‘";s:3:"ê’";s:3:"ê“";s:3:"ê”";s:3:"ê•";s:3:"ê–";s:3:"ê—";s:3:"ê˜";s:3:"ê™";s:3:"êš";s:3:"ê›";s:3:"êœ";s:3:"ê";s:3:"êž";s:3:"êŸ";s:3:"ê ";s:3:"ê¡";s:3:"ê¢";s:3:"ê£";s:3:"ê¤";s:3:"ê¥";s:3:"ê¦";s:3:"ê§";s:3:"ê¨";s:3:"ê©";s:3:"êª";s:3:"ê«";s:3:"ê¬";s:3:"ê­";s:3:"ê®";s:3:"ê¯";s:3:"ê¹";s:3:"êº";s:3:"ê»";s:3:"ê¼";s:3:"ê½";s:3:"áµ¹";s:3:"ê¾";s:3:"ê¿";s:3:"Ꞁ";s:3:"êž";s:3:"êž‚";s:3:"ꞃ";s:3:"êž„";s:3:"êž…";s:3:"Ꞇ";s:3:"ꞇ";s:3:"êž‹";s:3:"ꞌ";s:3:"A";s:3:"ï½";s:3:"ï¼¢";s:3:"b";s:3:"ï¼£";s:3:"c";s:3:"D";s:3:"d";s:3:"ï¼¥";s:3:"ï½…";s:3:"F";s:3:"f";s:3:"G";s:3:"g";s:3:"H";s:3:"h";s:3:"I";s:3:"i";s:3:"J";s:3:"j";s:3:"K";s:3:"k";s:3:"L";s:3:"l";s:3:"ï¼­";s:3:"ï½";s:3:"ï¼®";s:3:"n";s:3:"O";s:3:"ï½";s:3:"ï¼°";s:3:"ï½";s:3:"ï¼±";s:3:"q";s:3:"ï¼²";s:3:"ï½’";s:3:"ï¼³";s:3:"s";s:3:"ï¼´";s:3:"ï½”";s:3:"ï¼µ";s:3:"u";s:3:"V";s:3:"ï½–";s:3:"ï¼·";s:3:"ï½—";s:3:"X";s:3:"x";s:3:"ï¼¹";s:3:"ï½™";s:3:"Z";s:3:"z";s:4:"ð€";s:4:"ð¨";s:4:"ð";s:4:"ð©";s:4:"ð‚";s:4:"ðª";s:4:"ðƒ";s:4:"ð«";s:4:"ð„";s:4:"ð¬";s:4:"ð…";s:4:"ð­";s:4:"ð†";s:4:"ð®";s:4:"ð‡";s:4:"ð¯";s:4:"ðˆ";s:4:"ð°";s:4:"ð‰";s:4:"ð±";s:4:"ðŠ";s:4:"ð²";s:4:"ð‹";s:4:"ð³";s:4:"ðŒ";s:4:"ð´";s:4:"ð";s:4:"ðµ";s:4:"ðŽ";s:4:"ð¶";s:4:"ð";s:4:"ð·";s:4:"ð";s:4:"ð¸";s:4:"ð‘";s:4:"ð¹";s:4:"ð’";s:4:"ðº";s:4:"ð“";s:4:"ð»";s:4:"ð”";s:4:"ð¼";s:4:"ð•";s:4:"ð½";s:4:"ð–";s:4:"ð¾";s:4:"ð—";s:4:"ð¿";s:4:"ð˜";s:4:"ð‘€";s:4:"ð™";s:4:"ð‘";s:4:"ðš";s:4:"ð‘‚";s:4:"ð›";s:4:"ð‘ƒ";s:4:"ðœ";s:4:"ð‘„";s:4:"ð";s:4:"ð‘…";s:4:"ðž";s:4:"ð‘†";s:4:"ðŸ";s:4:"ð‘‡";s:4:"ð ";s:4:"ð‘ˆ";s:4:"ð¡";s:4:"ð‘‰";s:4:"ð¢";s:4:"ð‘Š";s:4:"ð£";s:4:"ð‘‹";s:4:"ð¤";s:4:"ð‘Œ";s:4:"ð¥";s:4:"ð‘";s:4:"ð¦";s:4:"ð‘Ž";s:4:"ð§";s:4:"ð‘";}} \ No newline at end of file
+a:2:{s:14:"wikiUpperChars";a:1046:{s:1:"a";s:1:"A";s:1:"b";s:1:"B";s:1:"c";s:1:"C";s:1:"d";s:1:"D";s:1:"e";s:1:"E";s:1:"f";s:1:"F";s:1:"g";s:1:"G";s:1:"h";s:1:"H";s:1:"i";s:1:"I";s:1:"j";s:1:"J";s:1:"k";s:1:"K";s:1:"l";s:1:"L";s:1:"m";s:1:"M";s:1:"n";s:1:"N";s:1:"o";s:1:"O";s:1:"p";s:1:"P";s:1:"q";s:1:"Q";s:1:"r";s:1:"R";s:1:"s";s:1:"S";s:1:"t";s:1:"T";s:1:"u";s:1:"U";s:1:"v";s:1:"V";s:1:"w";s:1:"W";s:1:"x";s:1:"X";s:1:"y";s:1:"Y";s:1:"z";s:1:"Z";s:2:"µ";s:2:"Îœ";s:2:"à";s:2:"À";s:2:"á";s:2:"Ã";s:2:"â";s:2:"Â";s:2:"ã";s:2:"Ã";s:2:"ä";s:2:"Ä";s:2:"Ã¥";s:2:"Ã…";s:2:"æ";s:2:"Æ";s:2:"ç";s:2:"Ç";s:2:"è";s:2:"È";s:2:"é";s:2:"É";s:2:"ê";s:2:"Ê";s:2:"ë";s:2:"Ë";s:2:"ì";s:2:"ÃŒ";s:2:"í";s:2:"Ã";s:2:"î";s:2:"ÃŽ";s:2:"ï";s:2:"Ã";s:2:"ð";s:2:"Ã";s:2:"ñ";s:2:"Ñ";s:2:"ò";s:2:"Ã’";s:2:"ó";s:2:"Ó";s:2:"ô";s:2:"Ô";s:2:"õ";s:2:"Õ";s:2:"ö";s:2:"Ö";s:2:"ø";s:2:"Ø";s:2:"ù";s:2:"Ù";s:2:"ú";s:2:"Ú";s:2:"û";s:2:"Û";s:2:"ü";s:2:"Ãœ";s:2:"ý";s:2:"Ã";s:2:"þ";s:2:"Þ";s:2:"ÿ";s:2:"Ÿ";s:2:"Ä";s:2:"Ä€";s:2:"ă";s:2:"Ä‚";s:2:"Ä…";s:2:"Ä„";s:2:"ć";s:2:"Ć";s:2:"ĉ";s:2:"Ĉ";s:2:"Ä‹";s:2:"ÄŠ";s:2:"Ä";s:2:"ÄŒ";s:2:"Ä";s:2:"ÄŽ";s:2:"Ä‘";s:2:"Ä";s:2:"Ä“";s:2:"Ä’";s:2:"Ä•";s:2:"Ä”";s:2:"Ä—";s:2:"Ä–";s:2:"Ä™";s:2:"Ę";s:2:"Ä›";s:2:"Äš";s:2:"Ä";s:2:"Äœ";s:2:"ÄŸ";s:2:"Äž";s:2:"Ä¡";s:2:"Ä ";s:2:"Ä£";s:2:"Ä¢";s:2:"Ä¥";s:2:"Ĥ";s:2:"ħ";s:2:"Ħ";s:2:"Ä©";s:2:"Ĩ";s:2:"Ä«";s:2:"Ī";s:2:"Ä­";s:2:"Ĭ";s:2:"į";s:2:"Ä®";s:2:"ı";s:1:"I";s:2:"ij";s:2:"IJ";s:2:"ĵ";s:2:"Ä´";s:2:"Ä·";s:2:"Ķ";s:2:"ĺ";s:2:"Ĺ";s:2:"ļ";s:2:"Ä»";s:2:"ľ";s:2:"Ľ";s:2:"Å€";s:2:"Ä¿";s:2:"Å‚";s:2:"Å";s:2:"Å„";s:2:"Ń";s:2:"ņ";s:2:"Å…";s:2:"ň";s:2:"Ň";s:2:"Å‹";s:2:"ÅŠ";s:2:"Å";s:2:"ÅŒ";s:2:"Å";s:2:"ÅŽ";s:2:"Å‘";s:2:"Å";s:2:"Å“";s:2:"Å’";s:2:"Å•";s:2:"Å”";s:2:"Å—";s:2:"Å–";s:2:"Å™";s:2:"Ř";s:2:"Å›";s:2:"Åš";s:2:"Å";s:2:"Åœ";s:2:"ÅŸ";s:2:"Åž";s:2:"Å¡";s:2:"Å ";s:2:"Å£";s:2:"Å¢";s:2:"Å¥";s:2:"Ť";s:2:"ŧ";s:2:"Ŧ";s:2:"Å©";s:2:"Ũ";s:2:"Å«";s:2:"Ū";s:2:"Å­";s:2:"Ŭ";s:2:"ů";s:2:"Å®";s:2:"ű";s:2:"Å°";s:2:"ų";s:2:"Ų";s:2:"ŵ";s:2:"Å´";s:2:"Å·";s:2:"Ŷ";s:2:"ź";s:2:"Ź";s:2:"ż";s:2:"Å»";s:2:"ž";s:2:"Ž";s:2:"Å¿";s:1:"S";s:2:"Æ€";s:2:"Ƀ";s:2:"ƃ";s:2:"Æ‚";s:2:"Æ…";s:2:"Æ„";s:2:"ƈ";s:2:"Ƈ";s:2:"ÆŒ";s:2:"Æ‹";s:2:"Æ’";s:2:"Æ‘";s:2:"Æ•";s:2:"Ƕ";s:2:"Æ™";s:2:"Ƙ";s:2:"Æš";s:2:"Ƚ";s:2:"Æž";s:2:"È ";s:2:"Æ¡";s:2:"Æ ";s:2:"Æ£";s:2:"Æ¢";s:2:"Æ¥";s:2:"Ƥ";s:2:"ƨ";s:2:"Ƨ";s:2:"Æ­";s:2:"Ƭ";s:2:"Æ°";s:2:"Ư";s:2:"Æ´";s:2:"Ƴ";s:2:"ƶ";s:2:"Ƶ";s:2:"ƹ";s:2:"Ƹ";s:2:"ƽ";s:2:"Ƽ";s:2:"Æ¿";s:2:"Ç·";s:2:"Ç…";s:2:"Ç„";s:2:"dž";s:2:"Ç„";s:2:"Lj";s:2:"LJ";s:2:"lj";s:2:"LJ";s:2:"Ç‹";s:2:"ÇŠ";s:2:"ÇŒ";s:2:"ÇŠ";s:2:"ÇŽ";s:2:"Ç";s:2:"Ç";s:2:"Ç";s:2:"Ç’";s:2:"Ç‘";s:2:"Ç”";s:2:"Ç“";s:2:"Ç–";s:2:"Ç•";s:2:"ǘ";s:2:"Ç—";s:2:"Çš";s:2:"Ç™";s:2:"Çœ";s:2:"Ç›";s:2:"Ç";s:2:"ÆŽ";s:2:"ÇŸ";s:2:"Çž";s:2:"Ç¡";s:2:"Ç ";s:2:"Ç£";s:2:"Ç¢";s:2:"Ç¥";s:2:"Ǥ";s:2:"ǧ";s:2:"Ǧ";s:2:"Ç©";s:2:"Ǩ";s:2:"Ç«";s:2:"Ǫ";s:2:"Ç­";s:2:"Ǭ";s:2:"ǯ";s:2:"Ç®";s:2:"Dz";s:2:"DZ";s:2:"dz";s:2:"DZ";s:2:"ǵ";s:2:"Ç´";s:2:"ǹ";s:2:"Ǹ";s:2:"Ç»";s:2:"Ǻ";s:2:"ǽ";s:2:"Ǽ";s:2:"Ç¿";s:2:"Ǿ";s:2:"È";s:2:"È€";s:2:"ȃ";s:2:"È‚";s:2:"È…";s:2:"È„";s:2:"ȇ";s:2:"Ȇ";s:2:"ȉ";s:2:"Ȉ";s:2:"È‹";s:2:"ÈŠ";s:2:"È";s:2:"ÈŒ";s:2:"È";s:2:"ÈŽ";s:2:"È‘";s:2:"È";s:2:"È“";s:2:"È’";s:2:"È•";s:2:"È”";s:2:"È—";s:2:"È–";s:2:"È™";s:2:"Ș";s:2:"È›";s:2:"Èš";s:2:"È";s:2:"Èœ";s:2:"ÈŸ";s:2:"Èž";s:2:"È£";s:2:"È¢";s:2:"È¥";s:2:"Ȥ";s:2:"ȧ";s:2:"Ȧ";s:2:"È©";s:2:"Ȩ";s:2:"È«";s:2:"Ȫ";s:2:"È­";s:2:"Ȭ";s:2:"ȯ";s:2:"È®";s:2:"ȱ";s:2:"È°";s:2:"ȳ";s:2:"Ȳ";s:2:"ȼ";s:2:"È»";s:2:"È¿";s:3:"â±¾";s:2:"É€";s:3:"Ɀ";s:2:"É‚";s:2:"É";s:2:"ɇ";s:2:"Ɇ";s:2:"ɉ";s:2:"Ɉ";s:2:"É‹";s:2:"ÉŠ";s:2:"É";s:2:"ÉŒ";s:2:"É";s:2:"ÉŽ";s:2:"É";s:3:"Ɐ";s:2:"É‘";s:3:"â±­";s:2:"É’";s:3:"â±°";s:2:"É“";s:2:"Æ";s:2:"É”";s:2:"Ɔ";s:2:"É–";s:2:"Ɖ";s:2:"É—";s:2:"ÆŠ";s:2:"É™";s:2:"Æ";s:2:"É›";s:2:"Æ";s:2:"É ";s:2:"Æ“";s:2:"É£";s:2:"Æ”";s:2:"É¥";s:3:"êž";s:2:"ɨ";s:2:"Æ—";s:2:"É©";s:2:"Æ–";s:2:"É«";s:3:"â±¢";s:2:"ɯ";s:2:"Æœ";s:2:"ɱ";s:3:"â±®";s:2:"ɲ";s:2:"Æ";s:2:"ɵ";s:2:"ÆŸ";s:2:"ɽ";s:3:"Ɽ";s:2:"Ê€";s:2:"Ʀ";s:2:"ʃ";s:2:"Æ©";s:2:"ʈ";s:2:"Æ®";s:2:"ʉ";s:2:"É„";s:2:"ÊŠ";s:2:"Ʊ";s:2:"Ê‹";s:2:"Ʋ";s:2:"ÊŒ";s:2:"É…";s:2:"Ê’";s:2:"Æ·";s:2:"Í…";s:2:"Ι";s:2:"ͱ";s:2:"Í°";s:2:"ͳ";s:2:"Ͳ";s:2:"Í·";s:2:"Ͷ";s:2:"Í»";s:2:"Ͻ";s:2:"ͼ";s:2:"Ͼ";s:2:"ͽ";s:2:"Ï¿";s:2:"ά";s:2:"Ά";s:2:"έ";s:2:"Έ";s:2:"ή";s:2:"Ή";s:2:"ί";s:2:"Ί";s:2:"α";s:2:"Α";s:2:"β";s:2:"Î’";s:2:"γ";s:2:"Γ";s:2:"δ";s:2:"Δ";s:2:"ε";s:2:"Ε";s:2:"ζ";s:2:"Ζ";s:2:"η";s:2:"Η";s:2:"θ";s:2:"Θ";s:2:"ι";s:2:"Ι";s:2:"κ";s:2:"Κ";s:2:"λ";s:2:"Λ";s:2:"μ";s:2:"Îœ";s:2:"ν";s:2:"Î";s:2:"ξ";s:2:"Ξ";s:2:"ο";s:2:"Ο";s:2:"Ï€";s:2:"Π";s:2:"Ï";s:2:"Ρ";s:2:"Ï‚";s:2:"Σ";s:2:"σ";s:2:"Σ";s:2:"Ï„";s:2:"Τ";s:2:"Ï…";s:2:"Î¥";s:2:"φ";s:2:"Φ";s:2:"χ";s:2:"Χ";s:2:"ψ";s:2:"Ψ";s:2:"ω";s:2:"Ω";s:2:"ÏŠ";s:2:"Ϊ";s:2:"Ï‹";s:2:"Ϋ";s:2:"ÏŒ";s:2:"ÎŒ";s:2:"Ï";s:2:"ÎŽ";s:2:"ÏŽ";s:2:"Î";s:2:"Ï";s:2:"Î’";s:2:"Ï‘";s:2:"Θ";s:2:"Ï•";s:2:"Φ";s:2:"Ï–";s:2:"Π";s:2:"Ï—";s:2:"Ï";s:2:"Ï™";s:2:"Ϙ";s:2:"Ï›";s:2:"Ïš";s:2:"Ï";s:2:"Ïœ";s:2:"ÏŸ";s:2:"Ïž";s:2:"Ï¡";s:2:"Ï ";s:2:"Ï£";s:2:"Ï¢";s:2:"Ï¥";s:2:"Ϥ";s:2:"ϧ";s:2:"Ϧ";s:2:"Ï©";s:2:"Ϩ";s:2:"Ï«";s:2:"Ϫ";s:2:"Ï­";s:2:"Ϭ";s:2:"ϯ";s:2:"Ï®";s:2:"Ï°";s:2:"Κ";s:2:"ϱ";s:2:"Ρ";s:2:"ϲ";s:2:"Ϲ";s:2:"ϵ";s:2:"Ε";s:2:"ϸ";s:2:"Ï·";s:2:"Ï»";s:2:"Ϻ";s:2:"а";s:2:"Ð";s:2:"б";s:2:"Б";s:2:"в";s:2:"Ð’";s:2:"г";s:2:"Г";s:2:"д";s:2:"Д";s:2:"е";s:2:"Е";s:2:"ж";s:2:"Ж";s:2:"з";s:2:"З";s:2:"и";s:2:"И";s:2:"й";s:2:"Й";s:2:"к";s:2:"К";s:2:"л";s:2:"Л";s:2:"м";s:2:"Ðœ";s:2:"н";s:2:"Ð";s:2:"о";s:2:"О";s:2:"п";s:2:"П";s:2:"Ñ€";s:2:"Р";s:2:"Ñ";s:2:"С";s:2:"Ñ‚";s:2:"Т";s:2:"у";s:2:"У";s:2:"Ñ„";s:2:"Ф";s:2:"Ñ…";s:2:"Ð¥";s:2:"ц";s:2:"Ц";s:2:"ч";s:2:"Ч";s:2:"ш";s:2:"Ш";s:2:"щ";s:2:"Щ";s:2:"ÑŠ";s:2:"Ъ";s:2:"Ñ‹";s:2:"Ы";s:2:"ÑŒ";s:2:"Ь";s:2:"Ñ";s:2:"Э";s:2:"ÑŽ";s:2:"Ю";s:2:"Ñ";s:2:"Я";s:2:"Ñ";s:2:"Ѐ";s:2:"Ñ‘";s:2:"Ð";s:2:"Ñ’";s:2:"Ђ";s:2:"Ñ“";s:2:"Ѓ";s:2:"Ñ”";s:2:"Є";s:2:"Ñ•";s:2:"Ð…";s:2:"Ñ–";s:2:"І";s:2:"Ñ—";s:2:"Ї";s:2:"ј";s:2:"Ј";s:2:"Ñ™";s:2:"Љ";s:2:"Ñš";s:2:"Њ";s:2:"Ñ›";s:2:"Ћ";s:2:"Ñœ";s:2:"ÐŒ";s:2:"Ñ";s:2:"Ð";s:2:"Ñž";s:2:"ÐŽ";s:2:"ÑŸ";s:2:"Ð";s:2:"Ñ¡";s:2:"Ñ ";s:2:"Ñ£";s:2:"Ñ¢";s:2:"Ñ¥";s:2:"Ѥ";s:2:"ѧ";s:2:"Ѧ";s:2:"Ñ©";s:2:"Ѩ";s:2:"Ñ«";s:2:"Ѫ";s:2:"Ñ­";s:2:"Ѭ";s:2:"ѯ";s:2:"Ñ®";s:2:"ѱ";s:2:"Ñ°";s:2:"ѳ";s:2:"Ѳ";s:2:"ѵ";s:2:"Ñ´";s:2:"Ñ·";s:2:"Ѷ";s:2:"ѹ";s:2:"Ѹ";s:2:"Ñ»";s:2:"Ѻ";s:2:"ѽ";s:2:"Ѽ";s:2:"Ñ¿";s:2:"Ѿ";s:2:"Ò";s:2:"Ò€";s:2:"Ò‹";s:2:"ÒŠ";s:2:"Ò";s:2:"ÒŒ";s:2:"Ò";s:2:"ÒŽ";s:2:"Ò‘";s:2:"Ò";s:2:"Ò“";s:2:"Ò’";s:2:"Ò•";s:2:"Ò”";s:2:"Ò—";s:2:"Ò–";s:2:"Ò™";s:2:"Ò˜";s:2:"Ò›";s:2:"Òš";s:2:"Ò";s:2:"Òœ";s:2:"ÒŸ";s:2:"Òž";s:2:"Ò¡";s:2:"Ò ";s:2:"Ò£";s:2:"Ò¢";s:2:"Ò¥";s:2:"Ò¤";s:2:"Ò§";s:2:"Ò¦";s:2:"Ò©";s:2:"Ò¨";s:2:"Ò«";s:2:"Òª";s:2:"Ò­";s:2:"Ò¬";s:2:"Ò¯";s:2:"Ò®";s:2:"Ò±";s:2:"Ò°";s:2:"Ò³";s:2:"Ò²";s:2:"Òµ";s:2:"Ò´";s:2:"Ò·";s:2:"Ò¶";s:2:"Ò¹";s:2:"Ò¸";s:2:"Ò»";s:2:"Òº";s:2:"Ò½";s:2:"Ò¼";s:2:"Ò¿";s:2:"Ò¾";s:2:"Ó‚";s:2:"Ó";s:2:"Ó„";s:2:"Óƒ";s:2:"Ó†";s:2:"Ó…";s:2:"Óˆ";s:2:"Ó‡";s:2:"ÓŠ";s:2:"Ó‰";s:2:"ÓŒ";s:2:"Ó‹";s:2:"ÓŽ";s:2:"Ó";s:2:"Ó";s:2:"Ó€";s:2:"Ó‘";s:2:"Ó";s:2:"Ó“";s:2:"Ó’";s:2:"Ó•";s:2:"Ó”";s:2:"Ó—";s:2:"Ó–";s:2:"Ó™";s:2:"Ó˜";s:2:"Ó›";s:2:"Óš";s:2:"Ó";s:2:"Óœ";s:2:"ÓŸ";s:2:"Óž";s:2:"Ó¡";s:2:"Ó ";s:2:"Ó£";s:2:"Ó¢";s:2:"Ó¥";s:2:"Ó¤";s:2:"Ó§";s:2:"Ó¦";s:2:"Ó©";s:2:"Ó¨";s:2:"Ó«";s:2:"Óª";s:2:"Ó­";s:2:"Ó¬";s:2:"Ó¯";s:2:"Ó®";s:2:"Ó±";s:2:"Ó°";s:2:"Ó³";s:2:"Ó²";s:2:"Óµ";s:2:"Ó´";s:2:"Ó·";s:2:"Ó¶";s:2:"Ó¹";s:2:"Ó¸";s:2:"Ó»";s:2:"Óº";s:2:"Ó½";s:2:"Ó¼";s:2:"Ó¿";s:2:"Ó¾";s:2:"Ô";s:2:"Ô€";s:2:"Ôƒ";s:2:"Ô‚";s:2:"Ô…";s:2:"Ô„";s:2:"Ô‡";s:2:"Ô†";s:2:"Ô‰";s:2:"Ôˆ";s:2:"Ô‹";s:2:"ÔŠ";s:2:"Ô";s:2:"ÔŒ";s:2:"Ô";s:2:"ÔŽ";s:2:"Ô‘";s:2:"Ô";s:2:"Ô“";s:2:"Ô’";s:2:"Ô•";s:2:"Ô”";s:2:"Ô—";s:2:"Ô–";s:2:"Ô™";s:2:"Ô˜";s:2:"Ô›";s:2:"Ôš";s:2:"Ô";s:2:"Ôœ";s:2:"ÔŸ";s:2:"Ôž";s:2:"Ô¡";s:2:"Ô ";s:2:"Ô£";s:2:"Ô¢";s:2:"Ô¥";s:2:"Ô¤";s:2:"Ô§";s:2:"Ô¦";s:2:"Õ¡";s:2:"Ô±";s:2:"Õ¢";s:2:"Ô²";s:2:"Õ£";s:2:"Ô³";s:2:"Õ¤";s:2:"Ô´";s:2:"Õ¥";s:2:"Ôµ";s:2:"Õ¦";s:2:"Ô¶";s:2:"Õ§";s:2:"Ô·";s:2:"Õ¨";s:2:"Ô¸";s:2:"Õ©";s:2:"Ô¹";s:2:"Õª";s:2:"Ôº";s:2:"Õ«";s:2:"Ô»";s:2:"Õ¬";s:2:"Ô¼";s:2:"Õ­";s:2:"Ô½";s:2:"Õ®";s:2:"Ô¾";s:2:"Õ¯";s:2:"Ô¿";s:2:"Õ°";s:2:"Õ€";s:2:"Õ±";s:2:"Õ";s:2:"Õ²";s:2:"Õ‚";s:2:"Õ³";s:2:"Õƒ";s:2:"Õ´";s:2:"Õ„";s:2:"Õµ";s:2:"Õ…";s:2:"Õ¶";s:2:"Õ†";s:2:"Õ·";s:2:"Õ‡";s:2:"Õ¸";s:2:"Õˆ";s:2:"Õ¹";s:2:"Õ‰";s:2:"Õº";s:2:"ÕŠ";s:2:"Õ»";s:2:"Õ‹";s:2:"Õ¼";s:2:"ÕŒ";s:2:"Õ½";s:2:"Õ";s:2:"Õ¾";s:2:"ÕŽ";s:2:"Õ¿";s:2:"Õ";s:2:"Ö€";s:2:"Õ";s:2:"Ö";s:2:"Õ‘";s:2:"Ö‚";s:2:"Õ’";s:2:"Öƒ";s:2:"Õ“";s:2:"Ö„";s:2:"Õ”";s:2:"Ö…";s:2:"Õ•";s:2:"Ö†";s:2:"Õ–";s:3:"áµ¹";s:3:"ê½";s:3:"áµ½";s:3:"â±£";s:3:"á¸";s:3:"Ḁ";s:3:"ḃ";s:3:"Ḃ";s:3:"ḅ";s:3:"Ḅ";s:3:"ḇ";s:3:"Ḇ";s:3:"ḉ";s:3:"Ḉ";s:3:"ḋ";s:3:"Ḋ";s:3:"á¸";s:3:"Ḍ";s:3:"á¸";s:3:"Ḏ";s:3:"ḑ";s:3:"á¸";s:3:"ḓ";s:3:"Ḓ";s:3:"ḕ";s:3:"Ḕ";s:3:"ḗ";s:3:"Ḗ";s:3:"ḙ";s:3:"Ḙ";s:3:"ḛ";s:3:"Ḛ";s:3:"á¸";s:3:"Ḝ";s:3:"ḟ";s:3:"Ḟ";s:3:"ḡ";s:3:"Ḡ";s:3:"ḣ";s:3:"Ḣ";s:3:"ḥ";s:3:"Ḥ";s:3:"ḧ";s:3:"Ḧ";s:3:"ḩ";s:3:"Ḩ";s:3:"ḫ";s:3:"Ḫ";s:3:"ḭ";s:3:"Ḭ";s:3:"ḯ";s:3:"Ḯ";s:3:"ḱ";s:3:"Ḱ";s:3:"ḳ";s:3:"Ḳ";s:3:"ḵ";s:3:"Ḵ";s:3:"ḷ";s:3:"Ḷ";s:3:"ḹ";s:3:"Ḹ";s:3:"ḻ";s:3:"Ḻ";s:3:"ḽ";s:3:"Ḽ";s:3:"ḿ";s:3:"Ḿ";s:3:"á¹";s:3:"á¹€";s:3:"ṃ";s:3:"Ṃ";s:3:"á¹…";s:3:"Ṅ";s:3:"ṇ";s:3:"Ṇ";s:3:"ṉ";s:3:"Ṉ";s:3:"ṋ";s:3:"Ṋ";s:3:"á¹";s:3:"Ṍ";s:3:"á¹";s:3:"Ṏ";s:3:"ṑ";s:3:"á¹";s:3:"ṓ";s:3:"á¹’";s:3:"ṕ";s:3:"á¹”";s:3:"á¹—";s:3:"á¹–";s:3:"á¹™";s:3:"Ṙ";s:3:"á¹›";s:3:"Ṛ";s:3:"á¹";s:3:"Ṝ";s:3:"ṟ";s:3:"Ṟ";s:3:"ṡ";s:3:"á¹ ";s:3:"á¹£";s:3:"á¹¢";s:3:"á¹¥";s:3:"Ṥ";s:3:"ṧ";s:3:"Ṧ";s:3:"ṩ";s:3:"Ṩ";s:3:"ṫ";s:3:"Ṫ";s:3:"á¹­";s:3:"Ṭ";s:3:"ṯ";s:3:"á¹®";s:3:"á¹±";s:3:"á¹°";s:3:"á¹³";s:3:"á¹²";s:3:"á¹µ";s:3:"á¹´";s:3:"á¹·";s:3:"Ṷ";s:3:"á¹¹";s:3:"Ṹ";s:3:"á¹»";s:3:"Ṻ";s:3:"á¹½";s:3:"á¹¼";s:3:"ṿ";s:3:"á¹¾";s:3:"áº";s:3:"Ẁ";s:3:"ẃ";s:3:"Ẃ";s:3:"ẅ";s:3:"Ẅ";s:3:"ẇ";s:3:"Ẇ";s:3:"ẉ";s:3:"Ẉ";s:3:"ẋ";s:3:"Ẋ";s:3:"áº";s:3:"Ẍ";s:3:"áº";s:3:"Ẏ";s:3:"ẑ";s:3:"áº";s:3:"ẓ";s:3:"Ẓ";s:3:"ẕ";s:3:"Ẕ";s:3:"ẛ";s:3:"á¹ ";s:3:"ạ";s:3:"Ạ";s:3:"ả";s:3:"Ả";s:3:"ấ";s:3:"Ấ";s:3:"ầ";s:3:"Ầ";s:3:"ẩ";s:3:"Ẩ";s:3:"ẫ";s:3:"Ẫ";s:3:"ậ";s:3:"Ậ";s:3:"ắ";s:3:"Ắ";s:3:"ằ";s:3:"Ằ";s:3:"ẳ";s:3:"Ẳ";s:3:"ẵ";s:3:"Ẵ";s:3:"ặ";s:3:"Ặ";s:3:"ẹ";s:3:"Ẹ";s:3:"ẻ";s:3:"Ẻ";s:3:"ẽ";s:3:"Ẽ";s:3:"ế";s:3:"Ế";s:3:"á»";s:3:"Ề";s:3:"ể";s:3:"Ể";s:3:"á»…";s:3:"Ễ";s:3:"ệ";s:3:"Ệ";s:3:"ỉ";s:3:"Ỉ";s:3:"ị";s:3:"Ị";s:3:"á»";s:3:"Ọ";s:3:"á»";s:3:"Ỏ";s:3:"ố";s:3:"á»";s:3:"ồ";s:3:"á»’";s:3:"ổ";s:3:"á»”";s:3:"á»—";s:3:"á»–";s:3:"á»™";s:3:"Ộ";s:3:"á»›";s:3:"Ớ";s:3:"á»";s:3:"Ờ";s:3:"ở";s:3:"Ở";s:3:"ỡ";s:3:"á» ";s:3:"ợ";s:3:"Ợ";s:3:"ụ";s:3:"Ụ";s:3:"ủ";s:3:"Ủ";s:3:"ứ";s:3:"Ứ";s:3:"ừ";s:3:"Ừ";s:3:"á»­";s:3:"Ử";s:3:"ữ";s:3:"á»®";s:3:"á»±";s:3:"á»°";s:3:"ỳ";s:3:"Ỳ";s:3:"ỵ";s:3:"á»´";s:3:"á»·";s:3:"Ỷ";s:3:"ỹ";s:3:"Ỹ";s:3:"á»»";s:3:"Ỻ";s:3:"ỽ";s:3:"Ỽ";s:3:"ỿ";s:3:"Ỿ";s:3:"á¼€";s:3:"Ἀ";s:3:"á¼";s:3:"Ἁ";s:3:"ἂ";s:3:"Ἂ";s:3:"ἃ";s:3:"Ἃ";s:3:"ἄ";s:3:"Ἄ";s:3:"á¼…";s:3:"á¼";s:3:"ἆ";s:3:"Ἆ";s:3:"ἇ";s:3:"á¼";s:3:"á¼";s:3:"Ἐ";s:3:"ἑ";s:3:"á¼™";s:3:"á¼’";s:3:"Ἒ";s:3:"ἓ";s:3:"á¼›";s:3:"á¼”";s:3:"Ἔ";s:3:"ἕ";s:3:"á¼";s:3:"á¼ ";s:3:"Ἠ";s:3:"ἡ";s:3:"Ἡ";s:3:"á¼¢";s:3:"Ἢ";s:3:"á¼£";s:3:"Ἣ";s:3:"ἤ";s:3:"Ἤ";s:3:"á¼¥";s:3:"á¼­";s:3:"ἦ";s:3:"á¼®";s:3:"ἧ";s:3:"Ἧ";s:3:"á¼°";s:3:"Ἰ";s:3:"á¼±";s:3:"á¼¹";s:3:"á¼²";s:3:"Ἲ";s:3:"á¼³";s:3:"á¼»";s:3:"á¼´";s:3:"á¼¼";s:3:"á¼µ";s:3:"á¼½";s:3:"ἶ";s:3:"á¼¾";s:3:"á¼·";s:3:"Ἷ";s:3:"á½€";s:3:"Ὀ";s:3:"á½";s:3:"Ὁ";s:3:"ὂ";s:3:"Ὂ";s:3:"ὃ";s:3:"Ὃ";s:3:"ὄ";s:3:"Ὄ";s:3:"á½…";s:3:"á½";s:3:"ὑ";s:3:"á½™";s:3:"ὓ";s:3:"á½›";s:3:"ὕ";s:3:"á½";s:3:"á½—";s:3:"Ὗ";s:3:"á½ ";s:3:"Ὠ";s:3:"ὡ";s:3:"Ὡ";s:3:"á½¢";s:3:"Ὢ";s:3:"á½£";s:3:"Ὣ";s:3:"ὤ";s:3:"Ὤ";s:3:"á½¥";s:3:"á½­";s:3:"ὦ";s:3:"á½®";s:3:"ὧ";s:3:"Ὧ";s:3:"á½°";s:3:"Ὰ";s:3:"á½±";s:3:"á¾»";s:3:"á½²";s:3:"Ὲ";s:3:"á½³";s:3:"Έ";s:3:"á½´";s:3:"á¿Š";s:3:"á½µ";s:3:"á¿‹";s:3:"ὶ";s:3:"á¿š";s:3:"á½·";s:3:"á¿›";s:3:"ὸ";s:3:"Ὸ";s:3:"á½¹";s:3:"Ό";s:3:"ὺ";s:3:"Ὺ";s:3:"á½»";s:3:"á¿«";s:3:"á½¼";s:3:"Ὼ";s:3:"á½½";s:3:"á¿»";s:3:"á¾€";s:3:"ᾈ";s:3:"á¾";s:3:"ᾉ";s:3:"ᾂ";s:3:"ᾊ";s:3:"ᾃ";s:3:"ᾋ";s:3:"ᾄ";s:3:"ᾌ";s:3:"á¾…";s:3:"á¾";s:3:"ᾆ";s:3:"ᾎ";s:3:"ᾇ";s:3:"á¾";s:3:"á¾";s:3:"ᾘ";s:3:"ᾑ";s:3:"á¾™";s:3:"á¾’";s:3:"ᾚ";s:3:"ᾓ";s:3:"á¾›";s:3:"á¾”";s:3:"ᾜ";s:3:"ᾕ";s:3:"á¾";s:3:"á¾–";s:3:"ᾞ";s:3:"á¾—";s:3:"ᾟ";s:3:"á¾ ";s:3:"ᾨ";s:3:"ᾡ";s:3:"ᾩ";s:3:"á¾¢";s:3:"ᾪ";s:3:"á¾£";s:3:"ᾫ";s:3:"ᾤ";s:3:"ᾬ";s:3:"á¾¥";s:3:"á¾­";s:3:"ᾦ";s:3:"á¾®";s:3:"ᾧ";s:3:"ᾯ";s:3:"á¾°";s:3:"Ᾰ";s:3:"á¾±";s:3:"á¾¹";s:3:"á¾³";s:3:"á¾¼";s:3:"á¾¾";s:2:"Ι";s:3:"ῃ";s:3:"á¿Œ";s:3:"á¿";s:3:"Ῐ";s:3:"á¿‘";s:3:"á¿™";s:3:"á¿ ";s:3:"Ῠ";s:3:"á¿¡";s:3:"á¿©";s:3:"á¿¥";s:3:"Ῥ";s:3:"ῳ";s:3:"ῼ";s:3:"â…Ž";s:3:"Ⅎ";s:3:"â…°";s:3:"â… ";s:3:"â…±";s:3:"â…¡";s:3:"â…²";s:3:"â…¢";s:3:"â…³";s:3:"â…£";s:3:"â…´";s:3:"â…¤";s:3:"â…µ";s:3:"â…¥";s:3:"â…¶";s:3:"â…¦";s:3:"â…·";s:3:"â…§";s:3:"â…¸";s:3:"â…¨";s:3:"â…¹";s:3:"â…©";s:3:"â…º";s:3:"â…ª";s:3:"â…»";s:3:"â…«";s:3:"â…¼";s:3:"â…¬";s:3:"â…½";s:3:"â…­";s:3:"â…¾";s:3:"â…®";s:3:"â…¿";s:3:"â…¯";s:3:"ↄ";s:3:"Ↄ";s:3:"â“";s:3:"â’¶";s:3:"â“‘";s:3:"â’·";s:3:"â“’";s:3:"â’¸";s:3:"â““";s:3:"â’¹";s:3:"â“”";s:3:"â’º";s:3:"â“•";s:3:"â’»";s:3:"â“–";s:3:"â’¼";s:3:"â“—";s:3:"â’½";s:3:"ⓘ";s:3:"â’¾";s:3:"â“™";s:3:"â’¿";s:3:"â“š";s:3:"â“€";s:3:"â“›";s:3:"â“";s:3:"â“œ";s:3:"â“‚";s:3:"â“";s:3:"Ⓝ";s:3:"â“ž";s:3:"â“„";s:3:"â“Ÿ";s:3:"â“…";s:3:"â“ ";s:3:"Ⓠ";s:3:"â“¡";s:3:"Ⓡ";s:3:"â“¢";s:3:"Ⓢ";s:3:"â“£";s:3:"Ⓣ";s:3:"ⓤ";s:3:"â“Š";s:3:"â“¥";s:3:"â“‹";s:3:"ⓦ";s:3:"â“Œ";s:3:"ⓧ";s:3:"â“";s:3:"ⓨ";s:3:"â“Ž";s:3:"â“©";s:3:"â“";s:3:"â°°";s:3:"â°€";s:3:"â°±";s:3:"â°";s:3:"â°²";s:3:"â°‚";s:3:"â°³";s:3:"â°ƒ";s:3:"â°´";s:3:"â°„";s:3:"â°µ";s:3:"â°…";s:3:"â°¶";s:3:"â°†";s:3:"â°·";s:3:"â°‡";s:3:"â°¸";s:3:"â°ˆ";s:3:"â°¹";s:3:"â°‰";s:3:"â°º";s:3:"â°Š";s:3:"â°»";s:3:"â°‹";s:3:"â°¼";s:3:"â°Œ";s:3:"â°½";s:3:"â°";s:3:"â°¾";s:3:"â°Ž";s:3:"â°¿";s:3:"â°";s:3:"â±€";s:3:"â°";s:3:"â±";s:3:"â°‘";s:3:"ⱂ";s:3:"â°’";s:3:"ⱃ";s:3:"â°“";s:3:"ⱄ";s:3:"â°”";s:3:"â±…";s:3:"â°•";s:3:"ⱆ";s:3:"â°–";s:3:"ⱇ";s:3:"â°—";s:3:"ⱈ";s:3:"â°˜";s:3:"ⱉ";s:3:"â°™";s:3:"ⱊ";s:3:"â°š";s:3:"ⱋ";s:3:"â°›";s:3:"ⱌ";s:3:"â°œ";s:3:"â±";s:3:"â°";s:3:"ⱎ";s:3:"â°ž";s:3:"â±";s:3:"â°Ÿ";s:3:"â±";s:3:"â° ";s:3:"ⱑ";s:3:"â°¡";s:3:"â±’";s:3:"â°¢";s:3:"ⱓ";s:3:"â°£";s:3:"â±”";s:3:"â°¤";s:3:"ⱕ";s:3:"â°¥";s:3:"â±–";s:3:"â°¦";s:3:"â±—";s:3:"â°§";s:3:"ⱘ";s:3:"â°¨";s:3:"â±™";s:3:"â°©";s:3:"ⱚ";s:3:"â°ª";s:3:"â±›";s:3:"â°«";s:3:"ⱜ";s:3:"â°¬";s:3:"â±";s:3:"â°­";s:3:"ⱞ";s:3:"â°®";s:3:"ⱡ";s:3:"â± ";s:3:"â±¥";s:2:"Ⱥ";s:3:"ⱦ";s:2:"Ⱦ";s:3:"ⱨ";s:3:"Ⱨ";s:3:"ⱪ";s:3:"Ⱪ";s:3:"ⱬ";s:3:"Ⱬ";s:3:"â±³";s:3:"â±²";s:3:"ⱶ";s:3:"â±µ";s:3:"â²";s:3:"â²€";s:3:"ⲃ";s:3:"Ⲃ";s:3:"â²…";s:3:"Ⲅ";s:3:"ⲇ";s:3:"Ⲇ";s:3:"ⲉ";s:3:"Ⲉ";s:3:"ⲋ";s:3:"Ⲋ";s:3:"â²";s:3:"Ⲍ";s:3:"â²";s:3:"Ⲏ";s:3:"ⲑ";s:3:"â²";s:3:"ⲓ";s:3:"â²’";s:3:"ⲕ";s:3:"â²”";s:3:"â²—";s:3:"â²–";s:3:"â²™";s:3:"Ⲙ";s:3:"â²›";s:3:"Ⲛ";s:3:"â²";s:3:"Ⲝ";s:3:"ⲟ";s:3:"Ⲟ";s:3:"ⲡ";s:3:"â² ";s:3:"â²£";s:3:"â²¢";s:3:"â²¥";s:3:"Ⲥ";s:3:"ⲧ";s:3:"Ⲧ";s:3:"ⲩ";s:3:"Ⲩ";s:3:"ⲫ";s:3:"Ⲫ";s:3:"â²­";s:3:"Ⲭ";s:3:"ⲯ";s:3:"â²®";s:3:"â²±";s:3:"â²°";s:3:"â²³";s:3:"â²²";s:3:"â²µ";s:3:"â²´";s:3:"â²·";s:3:"Ⲷ";s:3:"â²¹";s:3:"Ⲹ";s:3:"â²»";s:3:"Ⲻ";s:3:"â²½";s:3:"â²¼";s:3:"ⲿ";s:3:"â²¾";s:3:"â³";s:3:"â³€";s:3:"ⳃ";s:3:"Ⳃ";s:3:"â³…";s:3:"Ⳅ";s:3:"ⳇ";s:3:"Ⳇ";s:3:"ⳉ";s:3:"Ⳉ";s:3:"ⳋ";s:3:"Ⳋ";s:3:"â³";s:3:"Ⳍ";s:3:"â³";s:3:"Ⳏ";s:3:"ⳑ";s:3:"â³";s:3:"ⳓ";s:3:"â³’";s:3:"ⳕ";s:3:"â³”";s:3:"â³—";s:3:"â³–";s:3:"â³™";s:3:"Ⳙ";s:3:"â³›";s:3:"Ⳛ";s:3:"â³";s:3:"Ⳝ";s:3:"ⳟ";s:3:"Ⳟ";s:3:"ⳡ";s:3:"â³ ";s:3:"â³£";s:3:"â³¢";s:3:"ⳬ";s:3:"Ⳬ";s:3:"â³®";s:3:"â³­";s:3:"â´€";s:3:"á‚ ";s:3:"â´";s:3:"á‚¡";s:3:"â´‚";s:3:"á‚¢";s:3:"â´ƒ";s:3:"á‚£";s:3:"â´„";s:3:"Ⴄ";s:3:"â´…";s:3:"á‚¥";s:3:"â´†";s:3:"Ⴆ";s:3:"â´‡";s:3:"Ⴇ";s:3:"â´ˆ";s:3:"Ⴈ";s:3:"â´‰";s:3:"á‚©";s:3:"â´Š";s:3:"Ⴊ";s:3:"â´‹";s:3:"á‚«";s:3:"â´Œ";s:3:"Ⴌ";s:3:"â´";s:3:"á‚­";s:3:"â´Ž";s:3:"á‚®";s:3:"â´";s:3:"Ⴏ";s:3:"â´";s:3:"á‚°";s:3:"â´‘";s:3:"Ⴑ";s:3:"â´’";s:3:"Ⴒ";s:3:"â´“";s:3:"Ⴓ";s:3:"â´”";s:3:"á‚´";s:3:"â´•";s:3:"Ⴕ";s:3:"â´–";s:3:"Ⴖ";s:3:"â´—";s:3:"á‚·";s:3:"â´˜";s:3:"Ⴘ";s:3:"â´™";s:3:"Ⴙ";s:3:"â´š";s:3:"Ⴚ";s:3:"â´›";s:3:"á‚»";s:3:"â´œ";s:3:"Ⴜ";s:3:"â´";s:3:"Ⴝ";s:3:"â´ž";s:3:"Ⴞ";s:3:"â´Ÿ";s:3:"á‚¿";s:3:"â´ ";s:3:"Ⴠ";s:3:"â´¡";s:3:"áƒ";s:3:"â´¢";s:3:"Ⴢ";s:3:"â´£";s:3:"Ⴣ";s:3:"â´¤";s:3:"Ⴤ";s:3:"â´¥";s:3:"Ⴥ";s:3:"ê™";s:3:"Ꙁ";s:3:"ꙃ";s:3:"Ꙃ";s:3:"ê™…";s:3:"Ꙅ";s:3:"ꙇ";s:3:"Ꙇ";s:3:"ꙉ";s:3:"Ꙉ";s:3:"ꙋ";s:3:"Ꙋ";s:3:"ê™";s:3:"Ꙍ";s:3:"ê™";s:3:"Ꙏ";s:3:"ꙑ";s:3:"ê™";s:3:"ꙓ";s:3:"ê™’";s:3:"ꙕ";s:3:"ê™”";s:3:"ê™—";s:3:"ê™–";s:3:"ê™™";s:3:"Ꙙ";s:3:"ê™›";s:3:"Ꙛ";s:3:"ê™";s:3:"Ꙝ";s:3:"ꙟ";s:3:"Ꙟ";s:3:"ꙡ";s:3:"ê™ ";s:3:"ꙣ";s:3:"Ꙣ";s:3:"ꙥ";s:3:"Ꙥ";s:3:"ꙧ";s:3:"Ꙧ";s:3:"ꙩ";s:3:"Ꙩ";s:3:"ꙫ";s:3:"Ꙫ";s:3:"ê™­";s:3:"Ꙭ";s:3:"êš";s:3:"Ꚁ";s:3:"ꚃ";s:3:"êš‚";s:3:"êš…";s:3:"êš„";s:3:"ꚇ";s:3:"Ꚇ";s:3:"ꚉ";s:3:"Ꚉ";s:3:"êš‹";s:3:"Ꚋ";s:3:"êš";s:3:"Ꚍ";s:3:"êš";s:3:"Ꚏ";s:3:"êš‘";s:3:"êš";s:3:"êš“";s:3:"êš’";s:3:"êš•";s:3:"êš”";s:3:"êš—";s:3:"êš–";s:3:"ꜣ";s:3:"Ꜣ";s:3:"ꜥ";s:3:"Ꜥ";s:3:"ꜧ";s:3:"Ꜧ";s:3:"ꜩ";s:3:"Ꜩ";s:3:"ꜫ";s:3:"Ꜫ";s:3:"ꜭ";s:3:"Ꜭ";s:3:"ꜯ";s:3:"Ꜯ";s:3:"ꜳ";s:3:"Ꜳ";s:3:"ꜵ";s:3:"Ꜵ";s:3:"ꜷ";s:3:"Ꜷ";s:3:"ꜹ";s:3:"Ꜹ";s:3:"ꜻ";s:3:"Ꜻ";s:3:"ꜽ";s:3:"Ꜽ";s:3:"ꜿ";s:3:"Ꜿ";s:3:"ê";s:3:"ê€";s:3:"êƒ";s:3:"ê‚";s:3:"ê…";s:3:"ê„";s:3:"ê‡";s:3:"ê†";s:3:"ê‰";s:3:"êˆ";s:3:"ê‹";s:3:"êŠ";s:3:"ê";s:3:"êŒ";s:3:"ê";s:3:"êŽ";s:3:"ê‘";s:3:"ê";s:3:"ê“";s:3:"ê’";s:3:"ê•";s:3:"ê”";s:3:"ê—";s:3:"ê–";s:3:"ê™";s:3:"ê˜";s:3:"ê›";s:3:"êš";s:3:"ê";s:3:"êœ";s:3:"êŸ";s:3:"êž";s:3:"ê¡";s:3:"ê ";s:3:"ê£";s:3:"ê¢";s:3:"ê¥";s:3:"ê¤";s:3:"ê§";s:3:"ê¦";s:3:"ê©";s:3:"ê¨";s:3:"ê«";s:3:"êª";s:3:"ê­";s:3:"ê¬";s:3:"ê¯";s:3:"ê®";s:3:"êº";s:3:"ê¹";s:3:"ê¼";s:3:"ê»";s:3:"ê¿";s:3:"ê¾";s:3:"êž";s:3:"Ꞁ";s:3:"ꞃ";s:3:"êž‚";s:3:"êž…";s:3:"êž„";s:3:"ꞇ";s:3:"Ꞇ";s:3:"ꞌ";s:3:"êž‹";s:3:"êž‘";s:3:"êž";s:3:"êž¡";s:3:"êž ";s:3:"ꞣ";s:3:"Ꞣ";s:3:"ꞥ";s:3:"Ꞥ";s:3:"ꞧ";s:3:"Ꞧ";s:3:"êž©";s:3:"Ꞩ";s:3:"ï½";s:3:"A";s:3:"b";s:3:"ï¼¢";s:3:"c";s:3:"ï¼£";s:3:"d";s:3:"D";s:3:"ï½…";s:3:"ï¼¥";s:3:"f";s:3:"F";s:3:"g";s:3:"G";s:3:"h";s:3:"H";s:3:"i";s:3:"I";s:3:"j";s:3:"J";s:3:"k";s:3:"K";s:3:"l";s:3:"L";s:3:"ï½";s:3:"ï¼­";s:3:"n";s:3:"ï¼®";s:3:"ï½";s:3:"O";s:3:"ï½";s:3:"ï¼°";s:3:"q";s:3:"ï¼±";s:3:"ï½’";s:3:"ï¼²";s:3:"s";s:3:"ï¼³";s:3:"ï½”";s:3:"ï¼´";s:3:"u";s:3:"ï¼µ";s:3:"ï½–";s:3:"V";s:3:"ï½—";s:3:"ï¼·";s:3:"x";s:3:"X";s:3:"ï½™";s:3:"ï¼¹";s:3:"z";s:3:"Z";s:4:"ð¨";s:4:"ð€";s:4:"ð©";s:4:"ð";s:4:"ðª";s:4:"ð‚";s:4:"ð«";s:4:"ðƒ";s:4:"ð¬";s:4:"ð„";s:4:"ð­";s:4:"ð…";s:4:"ð®";s:4:"ð†";s:4:"ð¯";s:4:"ð‡";s:4:"ð°";s:4:"ðˆ";s:4:"ð±";s:4:"ð‰";s:4:"ð²";s:4:"ðŠ";s:4:"ð³";s:4:"ð‹";s:4:"ð´";s:4:"ðŒ";s:4:"ðµ";s:4:"ð";s:4:"ð¶";s:4:"ðŽ";s:4:"ð·";s:4:"ð";s:4:"ð¸";s:4:"ð";s:4:"ð¹";s:4:"ð‘";s:4:"ðº";s:4:"ð’";s:4:"ð»";s:4:"ð“";s:4:"ð¼";s:4:"ð”";s:4:"ð½";s:4:"ð•";s:4:"ð¾";s:4:"ð–";s:4:"ð¿";s:4:"ð—";s:4:"ð‘€";s:4:"ð˜";s:4:"ð‘";s:4:"ð™";s:4:"ð‘‚";s:4:"ðš";s:4:"ð‘ƒ";s:4:"ð›";s:4:"ð‘„";s:4:"ðœ";s:4:"ð‘…";s:4:"ð";s:4:"ð‘†";s:4:"ðž";s:4:"ð‘‡";s:4:"ðŸ";s:4:"ð‘ˆ";s:4:"ð ";s:4:"ð‘‰";s:4:"ð¡";s:4:"ð‘Š";s:4:"ð¢";s:4:"ð‘‹";s:4:"ð£";s:4:"ð‘Œ";s:4:"ð¤";s:4:"ð‘";s:4:"ð¥";s:4:"ð‘Ž";s:4:"ð¦";s:4:"ð‘";s:4:"ð§";}s:14:"wikiLowerChars";a:1038:{s:1:"A";s:1:"a";s:1:"B";s:1:"b";s:1:"C";s:1:"c";s:1:"D";s:1:"d";s:1:"E";s:1:"e";s:1:"F";s:1:"f";s:1:"G";s:1:"g";s:1:"H";s:1:"h";s:1:"I";s:1:"i";s:1:"J";s:1:"j";s:1:"K";s:1:"k";s:1:"L";s:1:"l";s:1:"M";s:1:"m";s:1:"N";s:1:"n";s:1:"O";s:1:"o";s:1:"P";s:1:"p";s:1:"Q";s:1:"q";s:1:"R";s:1:"r";s:1:"S";s:1:"s";s:1:"T";s:1:"t";s:1:"U";s:1:"u";s:1:"V";s:1:"v";s:1:"W";s:1:"w";s:1:"X";s:1:"x";s:1:"Y";s:1:"y";s:1:"Z";s:1:"z";s:2:"À";s:2:"à";s:2:"Ã";s:2:"á";s:2:"Â";s:2:"â";s:2:"Ã";s:2:"ã";s:2:"Ä";s:2:"ä";s:2:"Ã…";s:2:"Ã¥";s:2:"Æ";s:2:"æ";s:2:"Ç";s:2:"ç";s:2:"È";s:2:"è";s:2:"É";s:2:"é";s:2:"Ê";s:2:"ê";s:2:"Ë";s:2:"ë";s:2:"ÃŒ";s:2:"ì";s:2:"Ã";s:2:"í";s:2:"ÃŽ";s:2:"î";s:2:"Ã";s:2:"ï";s:2:"Ã";s:2:"ð";s:2:"Ñ";s:2:"ñ";s:2:"Ã’";s:2:"ò";s:2:"Ó";s:2:"ó";s:2:"Ô";s:2:"ô";s:2:"Õ";s:2:"õ";s:2:"Ö";s:2:"ö";s:2:"Ø";s:2:"ø";s:2:"Ù";s:2:"ù";s:2:"Ú";s:2:"ú";s:2:"Û";s:2:"û";s:2:"Ãœ";s:2:"ü";s:2:"Ã";s:2:"ý";s:2:"Þ";s:2:"þ";s:2:"Ä€";s:2:"Ä";s:2:"Ä‚";s:2:"ă";s:2:"Ä„";s:2:"Ä…";s:2:"Ć";s:2:"ć";s:2:"Ĉ";s:2:"ĉ";s:2:"ÄŠ";s:2:"Ä‹";s:2:"ÄŒ";s:2:"Ä";s:2:"ÄŽ";s:2:"Ä";s:2:"Ä";s:2:"Ä‘";s:2:"Ä’";s:2:"Ä“";s:2:"Ä”";s:2:"Ä•";s:2:"Ä–";s:2:"Ä—";s:2:"Ę";s:2:"Ä™";s:2:"Äš";s:2:"Ä›";s:2:"Äœ";s:2:"Ä";s:2:"Äž";s:2:"ÄŸ";s:2:"Ä ";s:2:"Ä¡";s:2:"Ä¢";s:2:"Ä£";s:2:"Ĥ";s:2:"Ä¥";s:2:"Ħ";s:2:"ħ";s:2:"Ĩ";s:2:"Ä©";s:2:"Ī";s:2:"Ä«";s:2:"Ĭ";s:2:"Ä­";s:2:"Ä®";s:2:"į";s:2:"Ä°";s:1:"i";s:2:"IJ";s:2:"ij";s:2:"Ä´";s:2:"ĵ";s:2:"Ķ";s:2:"Ä·";s:2:"Ĺ";s:2:"ĺ";s:2:"Ä»";s:2:"ļ";s:2:"Ľ";s:2:"ľ";s:2:"Ä¿";s:2:"Å€";s:2:"Å";s:2:"Å‚";s:2:"Ń";s:2:"Å„";s:2:"Å…";s:2:"ņ";s:2:"Ň";s:2:"ň";s:2:"ÅŠ";s:2:"Å‹";s:2:"ÅŒ";s:2:"Å";s:2:"ÅŽ";s:2:"Å";s:2:"Å";s:2:"Å‘";s:2:"Å’";s:2:"Å“";s:2:"Å”";s:2:"Å•";s:2:"Å–";s:2:"Å—";s:2:"Ř";s:2:"Å™";s:2:"Åš";s:2:"Å›";s:2:"Åœ";s:2:"Å";s:2:"Åž";s:2:"ÅŸ";s:2:"Å ";s:2:"Å¡";s:2:"Å¢";s:2:"Å£";s:2:"Ť";s:2:"Å¥";s:2:"Ŧ";s:2:"ŧ";s:2:"Ũ";s:2:"Å©";s:2:"Ū";s:2:"Å«";s:2:"Ŭ";s:2:"Å­";s:2:"Å®";s:2:"ů";s:2:"Å°";s:2:"ű";s:2:"Ų";s:2:"ų";s:2:"Å´";s:2:"ŵ";s:2:"Ŷ";s:2:"Å·";s:2:"Ÿ";s:2:"ÿ";s:2:"Ź";s:2:"ź";s:2:"Å»";s:2:"ż";s:2:"Ž";s:2:"ž";s:2:"Æ";s:2:"É“";s:2:"Æ‚";s:2:"ƃ";s:2:"Æ„";s:2:"Æ…";s:2:"Ɔ";s:2:"É”";s:2:"Ƈ";s:2:"ƈ";s:2:"Ɖ";s:2:"É–";s:2:"ÆŠ";s:2:"É—";s:2:"Æ‹";s:2:"ÆŒ";s:2:"ÆŽ";s:2:"Ç";s:2:"Æ";s:2:"É™";s:2:"Æ";s:2:"É›";s:2:"Æ‘";s:2:"Æ’";s:2:"Æ“";s:2:"É ";s:2:"Æ”";s:2:"É£";s:2:"Æ–";s:2:"É©";s:2:"Æ—";s:2:"ɨ";s:2:"Ƙ";s:2:"Æ™";s:2:"Æœ";s:2:"ɯ";s:2:"Æ";s:2:"ɲ";s:2:"ÆŸ";s:2:"ɵ";s:2:"Æ ";s:2:"Æ¡";s:2:"Æ¢";s:2:"Æ£";s:2:"Ƥ";s:2:"Æ¥";s:2:"Ʀ";s:2:"Ê€";s:2:"Ƨ";s:2:"ƨ";s:2:"Æ©";s:2:"ʃ";s:2:"Ƭ";s:2:"Æ­";s:2:"Æ®";s:2:"ʈ";s:2:"Ư";s:2:"Æ°";s:2:"Ʊ";s:2:"ÊŠ";s:2:"Ʋ";s:2:"Ê‹";s:2:"Ƴ";s:2:"Æ´";s:2:"Ƶ";s:2:"ƶ";s:2:"Æ·";s:2:"Ê’";s:2:"Ƹ";s:2:"ƹ";s:2:"Ƽ";s:2:"ƽ";s:2:"Ç„";s:2:"dž";s:2:"Ç…";s:2:"dž";s:2:"LJ";s:2:"lj";s:2:"Lj";s:2:"lj";s:2:"ÇŠ";s:2:"ÇŒ";s:2:"Ç‹";s:2:"ÇŒ";s:2:"Ç";s:2:"ÇŽ";s:2:"Ç";s:2:"Ç";s:2:"Ç‘";s:2:"Ç’";s:2:"Ç“";s:2:"Ç”";s:2:"Ç•";s:2:"Ç–";s:2:"Ç—";s:2:"ǘ";s:2:"Ç™";s:2:"Çš";s:2:"Ç›";s:2:"Çœ";s:2:"Çž";s:2:"ÇŸ";s:2:"Ç ";s:2:"Ç¡";s:2:"Ç¢";s:2:"Ç£";s:2:"Ǥ";s:2:"Ç¥";s:2:"Ǧ";s:2:"ǧ";s:2:"Ǩ";s:2:"Ç©";s:2:"Ǫ";s:2:"Ç«";s:2:"Ǭ";s:2:"Ç­";s:2:"Ç®";s:2:"ǯ";s:2:"DZ";s:2:"dz";s:2:"Dz";s:2:"dz";s:2:"Ç´";s:2:"ǵ";s:2:"Ƕ";s:2:"Æ•";s:2:"Ç·";s:2:"Æ¿";s:2:"Ǹ";s:2:"ǹ";s:2:"Ǻ";s:2:"Ç»";s:2:"Ǽ";s:2:"ǽ";s:2:"Ǿ";s:2:"Ç¿";s:2:"È€";s:2:"È";s:2:"È‚";s:2:"ȃ";s:2:"È„";s:2:"È…";s:2:"Ȇ";s:2:"ȇ";s:2:"Ȉ";s:2:"ȉ";s:2:"ÈŠ";s:2:"È‹";s:2:"ÈŒ";s:2:"È";s:2:"ÈŽ";s:2:"È";s:2:"È";s:2:"È‘";s:2:"È’";s:2:"È“";s:2:"È”";s:2:"È•";s:2:"È–";s:2:"È—";s:2:"Ș";s:2:"È™";s:2:"Èš";s:2:"È›";s:2:"Èœ";s:2:"È";s:2:"Èž";s:2:"ÈŸ";s:2:"È ";s:2:"Æž";s:2:"È¢";s:2:"È£";s:2:"Ȥ";s:2:"È¥";s:2:"Ȧ";s:2:"ȧ";s:2:"Ȩ";s:2:"È©";s:2:"Ȫ";s:2:"È«";s:2:"Ȭ";s:2:"È­";s:2:"È®";s:2:"ȯ";s:2:"È°";s:2:"ȱ";s:2:"Ȳ";s:2:"ȳ";s:2:"Ⱥ";s:3:"â±¥";s:2:"È»";s:2:"ȼ";s:2:"Ƚ";s:2:"Æš";s:2:"Ⱦ";s:3:"ⱦ";s:2:"É";s:2:"É‚";s:2:"Ƀ";s:2:"Æ€";s:2:"É„";s:2:"ʉ";s:2:"É…";s:2:"ÊŒ";s:2:"Ɇ";s:2:"ɇ";s:2:"Ɉ";s:2:"ɉ";s:2:"ÉŠ";s:2:"É‹";s:2:"ÉŒ";s:2:"É";s:2:"ÉŽ";s:2:"É";s:2:"Í°";s:2:"ͱ";s:2:"Ͳ";s:2:"ͳ";s:2:"Ͷ";s:2:"Í·";s:2:"Ά";s:2:"ά";s:2:"Έ";s:2:"έ";s:2:"Ή";s:2:"ή";s:2:"Ί";s:2:"ί";s:2:"ÎŒ";s:2:"ÏŒ";s:2:"ÎŽ";s:2:"Ï";s:2:"Î";s:2:"ÏŽ";s:2:"Α";s:2:"α";s:2:"Î’";s:2:"β";s:2:"Γ";s:2:"γ";s:2:"Δ";s:2:"δ";s:2:"Ε";s:2:"ε";s:2:"Ζ";s:2:"ζ";s:2:"Η";s:2:"η";s:2:"Θ";s:2:"θ";s:2:"Ι";s:2:"ι";s:2:"Κ";s:2:"κ";s:2:"Λ";s:2:"λ";s:2:"Îœ";s:2:"μ";s:2:"Î";s:2:"ν";s:2:"Ξ";s:2:"ξ";s:2:"Ο";s:2:"ο";s:2:"Π";s:2:"Ï€";s:2:"Ρ";s:2:"Ï";s:2:"Σ";s:2:"σ";s:2:"Τ";s:2:"Ï„";s:2:"Î¥";s:2:"Ï…";s:2:"Φ";s:2:"φ";s:2:"Χ";s:2:"χ";s:2:"Ψ";s:2:"ψ";s:2:"Ω";s:2:"ω";s:2:"Ϊ";s:2:"ÏŠ";s:2:"Ϋ";s:2:"Ï‹";s:2:"Ï";s:2:"Ï—";s:2:"Ϙ";s:2:"Ï™";s:2:"Ïš";s:2:"Ï›";s:2:"Ïœ";s:2:"Ï";s:2:"Ïž";s:2:"ÏŸ";s:2:"Ï ";s:2:"Ï¡";s:2:"Ï¢";s:2:"Ï£";s:2:"Ϥ";s:2:"Ï¥";s:2:"Ϧ";s:2:"ϧ";s:2:"Ϩ";s:2:"Ï©";s:2:"Ϫ";s:2:"Ï«";s:2:"Ϭ";s:2:"Ï­";s:2:"Ï®";s:2:"ϯ";s:2:"Ï´";s:2:"θ";s:2:"Ï·";s:2:"ϸ";s:2:"Ϲ";s:2:"ϲ";s:2:"Ϻ";s:2:"Ï»";s:2:"Ͻ";s:2:"Í»";s:2:"Ͼ";s:2:"ͼ";s:2:"Ï¿";s:2:"ͽ";s:2:"Ѐ";s:2:"Ñ";s:2:"Ð";s:2:"Ñ‘";s:2:"Ђ";s:2:"Ñ’";s:2:"Ѓ";s:2:"Ñ“";s:2:"Є";s:2:"Ñ”";s:2:"Ð…";s:2:"Ñ•";s:2:"І";s:2:"Ñ–";s:2:"Ї";s:2:"Ñ—";s:2:"Ј";s:2:"ј";s:2:"Љ";s:2:"Ñ™";s:2:"Њ";s:2:"Ñš";s:2:"Ћ";s:2:"Ñ›";s:2:"ÐŒ";s:2:"Ñœ";s:2:"Ð";s:2:"Ñ";s:2:"ÐŽ";s:2:"Ñž";s:2:"Ð";s:2:"ÑŸ";s:2:"Ð";s:2:"а";s:2:"Б";s:2:"б";s:2:"Ð’";s:2:"в";s:2:"Г";s:2:"г";s:2:"Д";s:2:"д";s:2:"Е";s:2:"е";s:2:"Ж";s:2:"ж";s:2:"З";s:2:"з";s:2:"И";s:2:"и";s:2:"Й";s:2:"й";s:2:"К";s:2:"к";s:2:"Л";s:2:"л";s:2:"Ðœ";s:2:"м";s:2:"Ð";s:2:"н";s:2:"О";s:2:"о";s:2:"П";s:2:"п";s:2:"Р";s:2:"Ñ€";s:2:"С";s:2:"Ñ";s:2:"Т";s:2:"Ñ‚";s:2:"У";s:2:"у";s:2:"Ф";s:2:"Ñ„";s:2:"Ð¥";s:2:"Ñ…";s:2:"Ц";s:2:"ц";s:2:"Ч";s:2:"ч";s:2:"Ш";s:2:"ш";s:2:"Щ";s:2:"щ";s:2:"Ъ";s:2:"ÑŠ";s:2:"Ы";s:2:"Ñ‹";s:2:"Ь";s:2:"ÑŒ";s:2:"Э";s:2:"Ñ";s:2:"Ю";s:2:"ÑŽ";s:2:"Я";s:2:"Ñ";s:2:"Ñ ";s:2:"Ñ¡";s:2:"Ñ¢";s:2:"Ñ£";s:2:"Ѥ";s:2:"Ñ¥";s:2:"Ѧ";s:2:"ѧ";s:2:"Ѩ";s:2:"Ñ©";s:2:"Ѫ";s:2:"Ñ«";s:2:"Ѭ";s:2:"Ñ­";s:2:"Ñ®";s:2:"ѯ";s:2:"Ñ°";s:2:"ѱ";s:2:"Ѳ";s:2:"ѳ";s:2:"Ñ´";s:2:"ѵ";s:2:"Ѷ";s:2:"Ñ·";s:2:"Ѹ";s:2:"ѹ";s:2:"Ѻ";s:2:"Ñ»";s:2:"Ѽ";s:2:"ѽ";s:2:"Ѿ";s:2:"Ñ¿";s:2:"Ò€";s:2:"Ò";s:2:"ÒŠ";s:2:"Ò‹";s:2:"ÒŒ";s:2:"Ò";s:2:"ÒŽ";s:2:"Ò";s:2:"Ò";s:2:"Ò‘";s:2:"Ò’";s:2:"Ò“";s:2:"Ò”";s:2:"Ò•";s:2:"Ò–";s:2:"Ò—";s:2:"Ò˜";s:2:"Ò™";s:2:"Òš";s:2:"Ò›";s:2:"Òœ";s:2:"Ò";s:2:"Òž";s:2:"ÒŸ";s:2:"Ò ";s:2:"Ò¡";s:2:"Ò¢";s:2:"Ò£";s:2:"Ò¤";s:2:"Ò¥";s:2:"Ò¦";s:2:"Ò§";s:2:"Ò¨";s:2:"Ò©";s:2:"Òª";s:2:"Ò«";s:2:"Ò¬";s:2:"Ò­";s:2:"Ò®";s:2:"Ò¯";s:2:"Ò°";s:2:"Ò±";s:2:"Ò²";s:2:"Ò³";s:2:"Ò´";s:2:"Òµ";s:2:"Ò¶";s:2:"Ò·";s:2:"Ò¸";s:2:"Ò¹";s:2:"Òº";s:2:"Ò»";s:2:"Ò¼";s:2:"Ò½";s:2:"Ò¾";s:2:"Ò¿";s:2:"Ó€";s:2:"Ó";s:2:"Ó";s:2:"Ó‚";s:2:"Óƒ";s:2:"Ó„";s:2:"Ó…";s:2:"Ó†";s:2:"Ó‡";s:2:"Óˆ";s:2:"Ó‰";s:2:"ÓŠ";s:2:"Ó‹";s:2:"ÓŒ";s:2:"Ó";s:2:"ÓŽ";s:2:"Ó";s:2:"Ó‘";s:2:"Ó’";s:2:"Ó“";s:2:"Ó”";s:2:"Ó•";s:2:"Ó–";s:2:"Ó—";s:2:"Ó˜";s:2:"Ó™";s:2:"Óš";s:2:"Ó›";s:2:"Óœ";s:2:"Ó";s:2:"Óž";s:2:"ÓŸ";s:2:"Ó ";s:2:"Ó¡";s:2:"Ó¢";s:2:"Ó£";s:2:"Ó¤";s:2:"Ó¥";s:2:"Ó¦";s:2:"Ó§";s:2:"Ó¨";s:2:"Ó©";s:2:"Óª";s:2:"Ó«";s:2:"Ó¬";s:2:"Ó­";s:2:"Ó®";s:2:"Ó¯";s:2:"Ó°";s:2:"Ó±";s:2:"Ó²";s:2:"Ó³";s:2:"Ó´";s:2:"Óµ";s:2:"Ó¶";s:2:"Ó·";s:2:"Ó¸";s:2:"Ó¹";s:2:"Óº";s:2:"Ó»";s:2:"Ó¼";s:2:"Ó½";s:2:"Ó¾";s:2:"Ó¿";s:2:"Ô€";s:2:"Ô";s:2:"Ô‚";s:2:"Ôƒ";s:2:"Ô„";s:2:"Ô…";s:2:"Ô†";s:2:"Ô‡";s:2:"Ôˆ";s:2:"Ô‰";s:2:"ÔŠ";s:2:"Ô‹";s:2:"ÔŒ";s:2:"Ô";s:2:"ÔŽ";s:2:"Ô";s:2:"Ô";s:2:"Ô‘";s:2:"Ô’";s:2:"Ô“";s:2:"Ô”";s:2:"Ô•";s:2:"Ô–";s:2:"Ô—";s:2:"Ô˜";s:2:"Ô™";s:2:"Ôš";s:2:"Ô›";s:2:"Ôœ";s:2:"Ô";s:2:"Ôž";s:2:"ÔŸ";s:2:"Ô ";s:2:"Ô¡";s:2:"Ô¢";s:2:"Ô£";s:2:"Ô¤";s:2:"Ô¥";s:2:"Ô¦";s:2:"Ô§";s:2:"Ô±";s:2:"Õ¡";s:2:"Ô²";s:2:"Õ¢";s:2:"Ô³";s:2:"Õ£";s:2:"Ô´";s:2:"Õ¤";s:2:"Ôµ";s:2:"Õ¥";s:2:"Ô¶";s:2:"Õ¦";s:2:"Ô·";s:2:"Õ§";s:2:"Ô¸";s:2:"Õ¨";s:2:"Ô¹";s:2:"Õ©";s:2:"Ôº";s:2:"Õª";s:2:"Ô»";s:2:"Õ«";s:2:"Ô¼";s:2:"Õ¬";s:2:"Ô½";s:2:"Õ­";s:2:"Ô¾";s:2:"Õ®";s:2:"Ô¿";s:2:"Õ¯";s:2:"Õ€";s:2:"Õ°";s:2:"Õ";s:2:"Õ±";s:2:"Õ‚";s:2:"Õ²";s:2:"Õƒ";s:2:"Õ³";s:2:"Õ„";s:2:"Õ´";s:2:"Õ…";s:2:"Õµ";s:2:"Õ†";s:2:"Õ¶";s:2:"Õ‡";s:2:"Õ·";s:2:"Õˆ";s:2:"Õ¸";s:2:"Õ‰";s:2:"Õ¹";s:2:"ÕŠ";s:2:"Õº";s:2:"Õ‹";s:2:"Õ»";s:2:"ÕŒ";s:2:"Õ¼";s:2:"Õ";s:2:"Õ½";s:2:"ÕŽ";s:2:"Õ¾";s:2:"Õ";s:2:"Õ¿";s:2:"Õ";s:2:"Ö€";s:2:"Õ‘";s:2:"Ö";s:2:"Õ’";s:2:"Ö‚";s:2:"Õ“";s:2:"Öƒ";s:2:"Õ”";s:2:"Ö„";s:2:"Õ•";s:2:"Ö…";s:2:"Õ–";s:2:"Ö†";s:3:"á‚ ";s:3:"â´€";s:3:"á‚¡";s:3:"â´";s:3:"á‚¢";s:3:"â´‚";s:3:"á‚£";s:3:"â´ƒ";s:3:"Ⴄ";s:3:"â´„";s:3:"á‚¥";s:3:"â´…";s:3:"Ⴆ";s:3:"â´†";s:3:"Ⴇ";s:3:"â´‡";s:3:"Ⴈ";s:3:"â´ˆ";s:3:"á‚©";s:3:"â´‰";s:3:"Ⴊ";s:3:"â´Š";s:3:"á‚«";s:3:"â´‹";s:3:"Ⴌ";s:3:"â´Œ";s:3:"á‚­";s:3:"â´";s:3:"á‚®";s:3:"â´Ž";s:3:"Ⴏ";s:3:"â´";s:3:"á‚°";s:3:"â´";s:3:"Ⴑ";s:3:"â´‘";s:3:"Ⴒ";s:3:"â´’";s:3:"Ⴓ";s:3:"â´“";s:3:"á‚´";s:3:"â´”";s:3:"Ⴕ";s:3:"â´•";s:3:"Ⴖ";s:3:"â´–";s:3:"á‚·";s:3:"â´—";s:3:"Ⴘ";s:3:"â´˜";s:3:"Ⴙ";s:3:"â´™";s:3:"Ⴚ";s:3:"â´š";s:3:"á‚»";s:3:"â´›";s:3:"Ⴜ";s:3:"â´œ";s:3:"Ⴝ";s:3:"â´";s:3:"Ⴞ";s:3:"â´ž";s:3:"á‚¿";s:3:"â´Ÿ";s:3:"Ⴠ";s:3:"â´ ";s:3:"áƒ";s:3:"â´¡";s:3:"Ⴢ";s:3:"â´¢";s:3:"Ⴣ";s:3:"â´£";s:3:"Ⴤ";s:3:"â´¤";s:3:"Ⴥ";s:3:"â´¥";s:3:"Ḁ";s:3:"á¸";s:3:"Ḃ";s:3:"ḃ";s:3:"Ḅ";s:3:"ḅ";s:3:"Ḇ";s:3:"ḇ";s:3:"Ḉ";s:3:"ḉ";s:3:"Ḋ";s:3:"ḋ";s:3:"Ḍ";s:3:"á¸";s:3:"Ḏ";s:3:"á¸";s:3:"á¸";s:3:"ḑ";s:3:"Ḓ";s:3:"ḓ";s:3:"Ḕ";s:3:"ḕ";s:3:"Ḗ";s:3:"ḗ";s:3:"Ḙ";s:3:"ḙ";s:3:"Ḛ";s:3:"ḛ";s:3:"Ḝ";s:3:"á¸";s:3:"Ḟ";s:3:"ḟ";s:3:"Ḡ";s:3:"ḡ";s:3:"Ḣ";s:3:"ḣ";s:3:"Ḥ";s:3:"ḥ";s:3:"Ḧ";s:3:"ḧ";s:3:"Ḩ";s:3:"ḩ";s:3:"Ḫ";s:3:"ḫ";s:3:"Ḭ";s:3:"ḭ";s:3:"Ḯ";s:3:"ḯ";s:3:"Ḱ";s:3:"ḱ";s:3:"Ḳ";s:3:"ḳ";s:3:"Ḵ";s:3:"ḵ";s:3:"Ḷ";s:3:"ḷ";s:3:"Ḹ";s:3:"ḹ";s:3:"Ḻ";s:3:"ḻ";s:3:"Ḽ";s:3:"ḽ";s:3:"Ḿ";s:3:"ḿ";s:3:"á¹€";s:3:"á¹";s:3:"Ṃ";s:3:"ṃ";s:3:"Ṅ";s:3:"á¹…";s:3:"Ṇ";s:3:"ṇ";s:3:"Ṉ";s:3:"ṉ";s:3:"Ṋ";s:3:"ṋ";s:3:"Ṍ";s:3:"á¹";s:3:"Ṏ";s:3:"á¹";s:3:"á¹";s:3:"ṑ";s:3:"á¹’";s:3:"ṓ";s:3:"á¹”";s:3:"ṕ";s:3:"á¹–";s:3:"á¹—";s:3:"Ṙ";s:3:"á¹™";s:3:"Ṛ";s:3:"á¹›";s:3:"Ṝ";s:3:"á¹";s:3:"Ṟ";s:3:"ṟ";s:3:"á¹ ";s:3:"ṡ";s:3:"á¹¢";s:3:"á¹£";s:3:"Ṥ";s:3:"á¹¥";s:3:"Ṧ";s:3:"ṧ";s:3:"Ṩ";s:3:"ṩ";s:3:"Ṫ";s:3:"ṫ";s:3:"Ṭ";s:3:"á¹­";s:3:"á¹®";s:3:"ṯ";s:3:"á¹°";s:3:"á¹±";s:3:"á¹²";s:3:"á¹³";s:3:"á¹´";s:3:"á¹µ";s:3:"Ṷ";s:3:"á¹·";s:3:"Ṹ";s:3:"á¹¹";s:3:"Ṻ";s:3:"á¹»";s:3:"á¹¼";s:3:"á¹½";s:3:"á¹¾";s:3:"ṿ";s:3:"Ẁ";s:3:"áº";s:3:"Ẃ";s:3:"ẃ";s:3:"Ẅ";s:3:"ẅ";s:3:"Ẇ";s:3:"ẇ";s:3:"Ẉ";s:3:"ẉ";s:3:"Ẋ";s:3:"ẋ";s:3:"Ẍ";s:3:"áº";s:3:"Ẏ";s:3:"áº";s:3:"áº";s:3:"ẑ";s:3:"Ẓ";s:3:"ẓ";s:3:"Ẕ";s:3:"ẕ";s:3:"ẞ";s:2:"ß";s:3:"Ạ";s:3:"ạ";s:3:"Ả";s:3:"ả";s:3:"Ấ";s:3:"ấ";s:3:"Ầ";s:3:"ầ";s:3:"Ẩ";s:3:"ẩ";s:3:"Ẫ";s:3:"ẫ";s:3:"Ậ";s:3:"ậ";s:3:"Ắ";s:3:"ắ";s:3:"Ằ";s:3:"ằ";s:3:"Ẳ";s:3:"ẳ";s:3:"Ẵ";s:3:"ẵ";s:3:"Ặ";s:3:"ặ";s:3:"Ẹ";s:3:"ẹ";s:3:"Ẻ";s:3:"ẻ";s:3:"Ẽ";s:3:"ẽ";s:3:"Ế";s:3:"ế";s:3:"Ề";s:3:"á»";s:3:"Ể";s:3:"ể";s:3:"Ễ";s:3:"á»…";s:3:"Ệ";s:3:"ệ";s:3:"Ỉ";s:3:"ỉ";s:3:"Ị";s:3:"ị";s:3:"Ọ";s:3:"á»";s:3:"Ỏ";s:3:"á»";s:3:"á»";s:3:"ố";s:3:"á»’";s:3:"ồ";s:3:"á»”";s:3:"ổ";s:3:"á»–";s:3:"á»—";s:3:"Ộ";s:3:"á»™";s:3:"Ớ";s:3:"á»›";s:3:"Ờ";s:3:"á»";s:3:"Ở";s:3:"ở";s:3:"á» ";s:3:"ỡ";s:3:"Ợ";s:3:"ợ";s:3:"Ụ";s:3:"ụ";s:3:"Ủ";s:3:"ủ";s:3:"Ứ";s:3:"ứ";s:3:"Ừ";s:3:"ừ";s:3:"Ử";s:3:"á»­";s:3:"á»®";s:3:"ữ";s:3:"á»°";s:3:"á»±";s:3:"Ỳ";s:3:"ỳ";s:3:"á»´";s:3:"ỵ";s:3:"Ỷ";s:3:"á»·";s:3:"Ỹ";s:3:"ỹ";s:3:"Ỻ";s:3:"á»»";s:3:"Ỽ";s:3:"ỽ";s:3:"Ỿ";s:3:"ỿ";s:3:"Ἀ";s:3:"á¼€";s:3:"Ἁ";s:3:"á¼";s:3:"Ἂ";s:3:"ἂ";s:3:"Ἃ";s:3:"ἃ";s:3:"Ἄ";s:3:"ἄ";s:3:"á¼";s:3:"á¼…";s:3:"Ἆ";s:3:"ἆ";s:3:"á¼";s:3:"ἇ";s:3:"Ἐ";s:3:"á¼";s:3:"á¼™";s:3:"ἑ";s:3:"Ἒ";s:3:"á¼’";s:3:"á¼›";s:3:"ἓ";s:3:"Ἔ";s:3:"á¼”";s:3:"á¼";s:3:"ἕ";s:3:"Ἠ";s:3:"á¼ ";s:3:"Ἡ";s:3:"ἡ";s:3:"Ἢ";s:3:"á¼¢";s:3:"Ἣ";s:3:"á¼£";s:3:"Ἤ";s:3:"ἤ";s:3:"á¼­";s:3:"á¼¥";s:3:"á¼®";s:3:"ἦ";s:3:"Ἧ";s:3:"ἧ";s:3:"Ἰ";s:3:"á¼°";s:3:"á¼¹";s:3:"á¼±";s:3:"Ἲ";s:3:"á¼²";s:3:"á¼»";s:3:"á¼³";s:3:"á¼¼";s:3:"á¼´";s:3:"á¼½";s:3:"á¼µ";s:3:"á¼¾";s:3:"ἶ";s:3:"Ἷ";s:3:"á¼·";s:3:"Ὀ";s:3:"á½€";s:3:"Ὁ";s:3:"á½";s:3:"Ὂ";s:3:"ὂ";s:3:"Ὃ";s:3:"ὃ";s:3:"Ὄ";s:3:"ὄ";s:3:"á½";s:3:"á½…";s:3:"á½™";s:3:"ὑ";s:3:"á½›";s:3:"ὓ";s:3:"á½";s:3:"ὕ";s:3:"Ὗ";s:3:"á½—";s:3:"Ὠ";s:3:"á½ ";s:3:"Ὡ";s:3:"ὡ";s:3:"Ὢ";s:3:"á½¢";s:3:"Ὣ";s:3:"á½£";s:3:"Ὤ";s:3:"ὤ";s:3:"á½­";s:3:"á½¥";s:3:"á½®";s:3:"ὦ";s:3:"Ὧ";s:3:"ὧ";s:3:"ᾈ";s:3:"á¾€";s:3:"ᾉ";s:3:"á¾";s:3:"ᾊ";s:3:"ᾂ";s:3:"ᾋ";s:3:"ᾃ";s:3:"ᾌ";s:3:"ᾄ";s:3:"á¾";s:3:"á¾…";s:3:"ᾎ";s:3:"ᾆ";s:3:"á¾";s:3:"ᾇ";s:3:"ᾘ";s:3:"á¾";s:3:"á¾™";s:3:"ᾑ";s:3:"ᾚ";s:3:"á¾’";s:3:"á¾›";s:3:"ᾓ";s:3:"ᾜ";s:3:"á¾”";s:3:"á¾";s:3:"ᾕ";s:3:"ᾞ";s:3:"á¾–";s:3:"ᾟ";s:3:"á¾—";s:3:"ᾨ";s:3:"á¾ ";s:3:"ᾩ";s:3:"ᾡ";s:3:"ᾪ";s:3:"á¾¢";s:3:"ᾫ";s:3:"á¾£";s:3:"ᾬ";s:3:"ᾤ";s:3:"á¾­";s:3:"á¾¥";s:3:"á¾®";s:3:"ᾦ";s:3:"ᾯ";s:3:"ᾧ";s:3:"Ᾰ";s:3:"á¾°";s:3:"á¾¹";s:3:"á¾±";s:3:"Ὰ";s:3:"á½°";s:3:"á¾»";s:3:"á½±";s:3:"á¾¼";s:3:"á¾³";s:3:"Ὲ";s:3:"á½²";s:3:"Έ";s:3:"á½³";s:3:"á¿Š";s:3:"á½´";s:3:"á¿‹";s:3:"á½µ";s:3:"á¿Œ";s:3:"ῃ";s:3:"Ῐ";s:3:"á¿";s:3:"á¿™";s:3:"á¿‘";s:3:"á¿š";s:3:"ὶ";s:3:"á¿›";s:3:"á½·";s:3:"Ῠ";s:3:"á¿ ";s:3:"á¿©";s:3:"á¿¡";s:3:"Ὺ";s:3:"ὺ";s:3:"á¿«";s:3:"á½»";s:3:"Ῥ";s:3:"á¿¥";s:3:"Ὸ";s:3:"ὸ";s:3:"Ό";s:3:"á½¹";s:3:"Ὼ";s:3:"á½¼";s:3:"á¿»";s:3:"á½½";s:3:"ῼ";s:3:"ῳ";s:3:"Ω";s:2:"ω";s:3:"K";s:1:"k";s:3:"â„«";s:2:"Ã¥";s:3:"Ⅎ";s:3:"â…Ž";s:3:"â… ";s:3:"â…°";s:3:"â…¡";s:3:"â…±";s:3:"â…¢";s:3:"â…²";s:3:"â…£";s:3:"â…³";s:3:"â…¤";s:3:"â…´";s:3:"â…¥";s:3:"â…µ";s:3:"â…¦";s:3:"â…¶";s:3:"â…§";s:3:"â…·";s:3:"â…¨";s:3:"â…¸";s:3:"â…©";s:3:"â…¹";s:3:"â…ª";s:3:"â…º";s:3:"â…«";s:3:"â…»";s:3:"â…¬";s:3:"â…¼";s:3:"â…­";s:3:"â…½";s:3:"â…®";s:3:"â…¾";s:3:"â…¯";s:3:"â…¿";s:3:"Ↄ";s:3:"ↄ";s:3:"â’¶";s:3:"â“";s:3:"â’·";s:3:"â“‘";s:3:"â’¸";s:3:"â“’";s:3:"â’¹";s:3:"â““";s:3:"â’º";s:3:"â“”";s:3:"â’»";s:3:"â“•";s:3:"â’¼";s:3:"â“–";s:3:"â’½";s:3:"â“—";s:3:"â’¾";s:3:"ⓘ";s:3:"â’¿";s:3:"â“™";s:3:"â“€";s:3:"â“š";s:3:"â“";s:3:"â“›";s:3:"â“‚";s:3:"â“œ";s:3:"Ⓝ";s:3:"â“";s:3:"â“„";s:3:"â“ž";s:3:"â“…";s:3:"â“Ÿ";s:3:"Ⓠ";s:3:"â“ ";s:3:"Ⓡ";s:3:"â“¡";s:3:"Ⓢ";s:3:"â“¢";s:3:"Ⓣ";s:3:"â“£";s:3:"â“Š";s:3:"ⓤ";s:3:"â“‹";s:3:"â“¥";s:3:"â“Œ";s:3:"ⓦ";s:3:"â“";s:3:"ⓧ";s:3:"â“Ž";s:3:"ⓨ";s:3:"â“";s:3:"â“©";s:3:"â°€";s:3:"â°°";s:3:"â°";s:3:"â°±";s:3:"â°‚";s:3:"â°²";s:3:"â°ƒ";s:3:"â°³";s:3:"â°„";s:3:"â°´";s:3:"â°…";s:3:"â°µ";s:3:"â°†";s:3:"â°¶";s:3:"â°‡";s:3:"â°·";s:3:"â°ˆ";s:3:"â°¸";s:3:"â°‰";s:3:"â°¹";s:3:"â°Š";s:3:"â°º";s:3:"â°‹";s:3:"â°»";s:3:"â°Œ";s:3:"â°¼";s:3:"â°";s:3:"â°½";s:3:"â°Ž";s:3:"â°¾";s:3:"â°";s:3:"â°¿";s:3:"â°";s:3:"â±€";s:3:"â°‘";s:3:"â±";s:3:"â°’";s:3:"ⱂ";s:3:"â°“";s:3:"ⱃ";s:3:"â°”";s:3:"ⱄ";s:3:"â°•";s:3:"â±…";s:3:"â°–";s:3:"ⱆ";s:3:"â°—";s:3:"ⱇ";s:3:"â°˜";s:3:"ⱈ";s:3:"â°™";s:3:"ⱉ";s:3:"â°š";s:3:"ⱊ";s:3:"â°›";s:3:"ⱋ";s:3:"â°œ";s:3:"ⱌ";s:3:"â°";s:3:"â±";s:3:"â°ž";s:3:"ⱎ";s:3:"â°Ÿ";s:3:"â±";s:3:"â° ";s:3:"â±";s:3:"â°¡";s:3:"ⱑ";s:3:"â°¢";s:3:"â±’";s:3:"â°£";s:3:"ⱓ";s:3:"â°¤";s:3:"â±”";s:3:"â°¥";s:3:"ⱕ";s:3:"â°¦";s:3:"â±–";s:3:"â°§";s:3:"â±—";s:3:"â°¨";s:3:"ⱘ";s:3:"â°©";s:3:"â±™";s:3:"â°ª";s:3:"ⱚ";s:3:"â°«";s:3:"â±›";s:3:"â°¬";s:3:"ⱜ";s:3:"â°­";s:3:"â±";s:3:"â°®";s:3:"ⱞ";s:3:"â± ";s:3:"ⱡ";s:3:"â±¢";s:2:"É«";s:3:"â±£";s:3:"áµ½";s:3:"Ɽ";s:2:"ɽ";s:3:"Ⱨ";s:3:"ⱨ";s:3:"Ⱪ";s:3:"ⱪ";s:3:"Ⱬ";s:3:"ⱬ";s:3:"â±­";s:2:"É‘";s:3:"â±®";s:2:"ɱ";s:3:"Ɐ";s:2:"É";s:3:"â±°";s:2:"É’";s:3:"â±²";s:3:"â±³";s:3:"â±µ";s:3:"ⱶ";s:3:"â±¾";s:2:"È¿";s:3:"Ɀ";s:2:"É€";s:3:"â²€";s:3:"â²";s:3:"Ⲃ";s:3:"ⲃ";s:3:"Ⲅ";s:3:"â²…";s:3:"Ⲇ";s:3:"ⲇ";s:3:"Ⲉ";s:3:"ⲉ";s:3:"Ⲋ";s:3:"ⲋ";s:3:"Ⲍ";s:3:"â²";s:3:"Ⲏ";s:3:"â²";s:3:"â²";s:3:"ⲑ";s:3:"â²’";s:3:"ⲓ";s:3:"â²”";s:3:"ⲕ";s:3:"â²–";s:3:"â²—";s:3:"Ⲙ";s:3:"â²™";s:3:"Ⲛ";s:3:"â²›";s:3:"Ⲝ";s:3:"â²";s:3:"Ⲟ";s:3:"ⲟ";s:3:"â² ";s:3:"ⲡ";s:3:"â²¢";s:3:"â²£";s:3:"Ⲥ";s:3:"â²¥";s:3:"Ⲧ";s:3:"ⲧ";s:3:"Ⲩ";s:3:"ⲩ";s:3:"Ⲫ";s:3:"ⲫ";s:3:"Ⲭ";s:3:"â²­";s:3:"â²®";s:3:"ⲯ";s:3:"â²°";s:3:"â²±";s:3:"â²²";s:3:"â²³";s:3:"â²´";s:3:"â²µ";s:3:"Ⲷ";s:3:"â²·";s:3:"Ⲹ";s:3:"â²¹";s:3:"Ⲻ";s:3:"â²»";s:3:"â²¼";s:3:"â²½";s:3:"â²¾";s:3:"ⲿ";s:3:"â³€";s:3:"â³";s:3:"Ⳃ";s:3:"ⳃ";s:3:"Ⳅ";s:3:"â³…";s:3:"Ⳇ";s:3:"ⳇ";s:3:"Ⳉ";s:3:"ⳉ";s:3:"Ⳋ";s:3:"ⳋ";s:3:"Ⳍ";s:3:"â³";s:3:"Ⳏ";s:3:"â³";s:3:"â³";s:3:"ⳑ";s:3:"â³’";s:3:"ⳓ";s:3:"â³”";s:3:"ⳕ";s:3:"â³–";s:3:"â³—";s:3:"Ⳙ";s:3:"â³™";s:3:"Ⳛ";s:3:"â³›";s:3:"Ⳝ";s:3:"â³";s:3:"Ⳟ";s:3:"ⳟ";s:3:"â³ ";s:3:"ⳡ";s:3:"â³¢";s:3:"â³£";s:3:"Ⳬ";s:3:"ⳬ";s:3:"â³­";s:3:"â³®";s:3:"Ꙁ";s:3:"ê™";s:3:"Ꙃ";s:3:"ꙃ";s:3:"Ꙅ";s:3:"ê™…";s:3:"Ꙇ";s:3:"ꙇ";s:3:"Ꙉ";s:3:"ꙉ";s:3:"Ꙋ";s:3:"ꙋ";s:3:"Ꙍ";s:3:"ê™";s:3:"Ꙏ";s:3:"ê™";s:3:"ê™";s:3:"ꙑ";s:3:"ê™’";s:3:"ꙓ";s:3:"ê™”";s:3:"ꙕ";s:3:"ê™–";s:3:"ê™—";s:3:"Ꙙ";s:3:"ê™™";s:3:"Ꙛ";s:3:"ê™›";s:3:"Ꙝ";s:3:"ê™";s:3:"Ꙟ";s:3:"ꙟ";s:3:"ê™ ";s:3:"ꙡ";s:3:"Ꙣ";s:3:"ꙣ";s:3:"Ꙥ";s:3:"ꙥ";s:3:"Ꙧ";s:3:"ꙧ";s:3:"Ꙩ";s:3:"ꙩ";s:3:"Ꙫ";s:3:"ꙫ";s:3:"Ꙭ";s:3:"ê™­";s:3:"Ꚁ";s:3:"êš";s:3:"êš‚";s:3:"ꚃ";s:3:"êš„";s:3:"êš…";s:3:"Ꚇ";s:3:"ꚇ";s:3:"Ꚉ";s:3:"ꚉ";s:3:"Ꚋ";s:3:"êš‹";s:3:"Ꚍ";s:3:"êš";s:3:"Ꚏ";s:3:"êš";s:3:"êš";s:3:"êš‘";s:3:"êš’";s:3:"êš“";s:3:"êš”";s:3:"êš•";s:3:"êš–";s:3:"êš—";s:3:"Ꜣ";s:3:"ꜣ";s:3:"Ꜥ";s:3:"ꜥ";s:3:"Ꜧ";s:3:"ꜧ";s:3:"Ꜩ";s:3:"ꜩ";s:3:"Ꜫ";s:3:"ꜫ";s:3:"Ꜭ";s:3:"ꜭ";s:3:"Ꜯ";s:3:"ꜯ";s:3:"Ꜳ";s:3:"ꜳ";s:3:"Ꜵ";s:3:"ꜵ";s:3:"Ꜷ";s:3:"ꜷ";s:3:"Ꜹ";s:3:"ꜹ";s:3:"Ꜻ";s:3:"ꜻ";s:3:"Ꜽ";s:3:"ꜽ";s:3:"Ꜿ";s:3:"ꜿ";s:3:"ê€";s:3:"ê";s:3:"ê‚";s:3:"êƒ";s:3:"ê„";s:3:"ê…";s:3:"ê†";s:3:"ê‡";s:3:"êˆ";s:3:"ê‰";s:3:"êŠ";s:3:"ê‹";s:3:"êŒ";s:3:"ê";s:3:"êŽ";s:3:"ê";s:3:"ê";s:3:"ê‘";s:3:"ê’";s:3:"ê“";s:3:"ê”";s:3:"ê•";s:3:"ê–";s:3:"ê—";s:3:"ê˜";s:3:"ê™";s:3:"êš";s:3:"ê›";s:3:"êœ";s:3:"ê";s:3:"êž";s:3:"êŸ";s:3:"ê ";s:3:"ê¡";s:3:"ê¢";s:3:"ê£";s:3:"ê¤";s:3:"ê¥";s:3:"ê¦";s:3:"ê§";s:3:"ê¨";s:3:"ê©";s:3:"êª";s:3:"ê«";s:3:"ê¬";s:3:"ê­";s:3:"ê®";s:3:"ê¯";s:3:"ê¹";s:3:"êº";s:3:"ê»";s:3:"ê¼";s:3:"ê½";s:3:"áµ¹";s:3:"ê¾";s:3:"ê¿";s:3:"Ꞁ";s:3:"êž";s:3:"êž‚";s:3:"ꞃ";s:3:"êž„";s:3:"êž…";s:3:"Ꞇ";s:3:"ꞇ";s:3:"êž‹";s:3:"ꞌ";s:3:"êž";s:2:"É¥";s:3:"êž";s:3:"êž‘";s:3:"êž ";s:3:"êž¡";s:3:"Ꞣ";s:3:"ꞣ";s:3:"Ꞥ";s:3:"ꞥ";s:3:"Ꞧ";s:3:"ꞧ";s:3:"Ꞩ";s:3:"êž©";s:3:"A";s:3:"ï½";s:3:"ï¼¢";s:3:"b";s:3:"ï¼£";s:3:"c";s:3:"D";s:3:"d";s:3:"ï¼¥";s:3:"ï½…";s:3:"F";s:3:"f";s:3:"G";s:3:"g";s:3:"H";s:3:"h";s:3:"I";s:3:"i";s:3:"J";s:3:"j";s:3:"K";s:3:"k";s:3:"L";s:3:"l";s:3:"ï¼­";s:3:"ï½";s:3:"ï¼®";s:3:"n";s:3:"O";s:3:"ï½";s:3:"ï¼°";s:3:"ï½";s:3:"ï¼±";s:3:"q";s:3:"ï¼²";s:3:"ï½’";s:3:"ï¼³";s:3:"s";s:3:"ï¼´";s:3:"ï½”";s:3:"ï¼µ";s:3:"u";s:3:"V";s:3:"ï½–";s:3:"ï¼·";s:3:"ï½—";s:3:"X";s:3:"x";s:3:"ï¼¹";s:3:"ï½™";s:3:"Z";s:3:"z";s:4:"ð€";s:4:"ð¨";s:4:"ð";s:4:"ð©";s:4:"ð‚";s:4:"ðª";s:4:"ðƒ";s:4:"ð«";s:4:"ð„";s:4:"ð¬";s:4:"ð…";s:4:"ð­";s:4:"ð†";s:4:"ð®";s:4:"ð‡";s:4:"ð¯";s:4:"ðˆ";s:4:"ð°";s:4:"ð‰";s:4:"ð±";s:4:"ðŠ";s:4:"ð²";s:4:"ð‹";s:4:"ð³";s:4:"ðŒ";s:4:"ð´";s:4:"ð";s:4:"ðµ";s:4:"ðŽ";s:4:"ð¶";s:4:"ð";s:4:"ð·";s:4:"ð";s:4:"ð¸";s:4:"ð‘";s:4:"ð¹";s:4:"ð’";s:4:"ðº";s:4:"ð“";s:4:"ð»";s:4:"ð”";s:4:"ð¼";s:4:"ð•";s:4:"ð½";s:4:"ð–";s:4:"ð¾";s:4:"ð—";s:4:"ð¿";s:4:"ð˜";s:4:"ð‘€";s:4:"ð™";s:4:"ð‘";s:4:"ðš";s:4:"ð‘‚";s:4:"ð›";s:4:"ð‘ƒ";s:4:"ðœ";s:4:"ð‘„";s:4:"ð";s:4:"ð‘…";s:4:"ðž";s:4:"ð‘†";s:4:"ðŸ";s:4:"ð‘‡";s:4:"ð ";s:4:"ð‘ˆ";s:4:"ð¡";s:4:"ð‘‰";s:4:"ð¢";s:4:"ð‘Š";s:4:"ð£";s:4:"ð‘‹";s:4:"ð¤";s:4:"ð‘Œ";s:4:"ð¥";s:4:"ð‘";s:4:"ð¦";s:4:"ð‘Ž";s:4:"ð§";s:4:"ð‘";}} \ No newline at end of file
diff --git a/serialized/first-letters-root.ser b/serialized/first-letters-root.ser
index 896fc333..c8c05585 100644
--- a/serialized/first-letters-root.ser
+++ b/serialized/first-letters-root.ser
@@ -1 +1 @@
-a:14742:{i:0;s:2:"Ù€";i:1;s:1:"`";i:2;s:2:"´";i:3;s:2:"Ëœ";i:4;s:1:"^";i:5;s:2:"¯";i:6;s:3:"‾";i:7;s:2:"˘";i:8;s:2:"Ë™";i:9;s:2:"¨";i:10;s:2:"Ëš";i:11;s:2:"Ë";i:12;s:3:"á¾½";i:13;s:3:"á¿";i:14;s:2:"¸";i:15;s:2:"Ë›";i:16;s:1:"_";i:17;s:3:"‗";i:18;s:3:"á¿€";i:19;s:3:"﮲";i:20;s:3:"﮳";i:21;s:3:"ï®´";i:22;s:3:"﮵";i:23;s:3:"﮶";i:24;s:3:"ï®·";i:25;s:3:"﮸";i:26;s:3:"﮹";i:27;s:3:"﮺";i:28;s:3:"ï®»";i:29;s:3:"﮼";i:30;s:3:"﮽";i:31;s:3:"﮾";i:32;s:3:"﮿";i:33;s:3:"﯀";i:34;s:3:"ï¯";i:35;s:3:"ã‚›";i:36;s:3:"ã‚œ";i:37;s:1:"-";i:38;s:2:"ÖŠ";i:39;s:3:"á€";i:40;s:3:"á­ ";i:41;s:3:"á †";i:42;s:3:"á ‡";i:43;s:3:"â€";i:44;s:3:"‒";i:45;s:3:"–";i:46;s:3:"—";i:47;s:3:"―";i:48;s:3:"â“";i:49;s:3:"⸗";i:50;s:3:"ã‚ ";i:51;s:3:"・";i:52;s:1:",";i:53;s:2:"Õ";i:54;s:2:"ØŒ";i:55;s:2:"Ø";i:56;s:2:"Ù«";i:57;s:2:"Ù¬";i:58;s:2:"߸";i:59;s:3:"á ‚";i:60;s:3:"á ˆ";i:61;s:3:"꓾";i:62;s:3:"ê˜";i:63;s:3:"꛵";i:64;s:3:"︑";i:65;s:1:";";i:66;s:2:"Ø›";i:67;s:3:"â";i:68;s:3:"꛶";i:69;s:1:":";i:70;s:2:"Ö‰";i:71;s:2:"Øž";i:72;s:2:"܃";i:73;s:2:"Ü„";i:74;s:2:"Ü…";i:75;s:2:"܆";i:76;s:2:"܇";i:77;s:2:"܈";i:78;s:3:"à °";i:79;s:3:"à ±";i:80;s:3:"à ²";i:81;s:3:"à ³";i:82;s:3:"à ´";i:83;s:3:"à µ";i:84;s:3:"à ¶";i:85;s:3:"à ·";i:86;s:3:"à ¸";i:87;s:3:"à ¹";i:88;s:3:"à º";i:89;s:3:"à »";i:90;s:3:"à ¼";i:91;s:3:"à ½";i:92;s:3:"à ¾";i:93;s:3:"á¡";i:94;s:3:"á£";i:95;s:3:"á¤";i:96;s:3:"á¥";i:97;s:3:"á¦";i:98;s:3:"á „";i:99;s:3:"á …";i:100;s:3:"༔";i:101;s:3:"៖";i:102;s:3:"á­";i:103;s:3:"꧇";i:104;s:3:"᛫";i:105;s:3:"᛬";i:106;s:3:"á›­";i:107;s:3:"ê›´";i:108;s:1:"!";i:109;s:2:"¡";i:110;s:2:"Õœ";i:111;s:2:"ß¹";i:112;s:3:"᥄";i:113;s:1:"?";i:114;s:2:"¿";i:115;s:3:"⸮";i:116;s:2:"Õž";i:117;s:2:"ØŸ";i:118;s:2:"܉";i:119;s:3:"á§";i:120;s:3:"᥅";i:121;s:3:"⳺";i:122;s:3:"â³»";i:123;s:3:"ê˜";i:124;s:3:"ê›·";i:125;s:3:"‽";i:126;s:3:"⸘";i:127;s:1:".";i:128;s:3:"á ";i:129;s:2:"Û”";i:130;s:2:"Ü";i:131;s:2:"Ü‚";i:132;s:3:"á¢";i:133;s:3:"á ƒ";i:134;s:3:"á ‰";i:135;s:3:"á™®";i:136;s:3:"á­œ";i:137;s:3:"â³¹";i:138;s:3:"â³¾";i:139;s:3:"⸰";i:140;s:3:"ê“¿";i:141;s:3:"꘎";i:142;s:3:"꛳";i:143;s:3:"︒";i:144;s:2:"·";i:145;s:3:"⸱";i:146;s:3:"।";i:147;s:3:"॥";i:148;s:3:"꣎";i:149;s:3:"ê£";i:150;s:3:"á°»";i:151;s:3:"á°¼";i:152;s:3:"꡶";i:153;s:3:"ê¡·";i:154;s:3:"᜵";i:155;s:3:"᜶";i:156;s:3:"꤯";i:157;s:3:"áŠ";i:158;s:3:"á‹";i:159;s:3:"។";i:160;s:3:"៕";i:161;s:3:"᪨";i:162;s:3:"᪩";i:163;s:3:"᪪";i:164;s:3:"᪫";i:165;s:3:"á­ž";i:166;s:3:"á­Ÿ";i:167;s:3:"꧈";i:168;s:3:"꧉";i:169;s:3:"ê©";i:170;s:3:"ê©ž";i:171;s:3:"ê©Ÿ";i:172;s:3:"꯫";i:173;s:4:"ð©–";i:174;s:4:"ð©—";i:175;s:4:"ð‘‡";i:176;s:4:"ð‘ˆ";i:177;s:4:"𑃀";i:178;s:4:"ð‘ƒ";i:179;s:3:"á±¾";i:180;s:3:"᱿";i:181;s:2:"Ü€";i:182;s:2:"ß·";i:183;s:3:"჻";i:184;s:3:"á ";i:185;s:3:"á¨";i:186;s:3:"᨞";i:187;s:3:"᨟";i:188;s:3:"á­š";i:189;s:3:"á­›";i:190;s:3:"ê§";i:191;s:3:"꧂";i:192;s:3:"꧃";i:193;s:3:"꧄";i:194;s:3:"꧅";i:195;s:3:"꧆";i:196;s:3:"꧊";i:197;s:3:"꧋";i:198;s:3:"꧌";i:199;s:3:"ê§";i:200;s:3:"꛲";i:201;s:3:"꥟";i:202;s:4:"ð¡—";i:203;s:4:"ð¬º";i:204;s:4:"ð¬»";i:205;s:4:"ð¬¼";i:206;s:4:"ð¬½";i:207;s:4:"ð¬¾";i:208;s:4:"ð¬¿";i:209;s:4:"ð‘‚¾";i:210;s:4:"ð‘‚¿";i:211;s:3:"â•";i:212;s:3:"â–";i:213;s:3:"â˜";i:214;s:3:"â™";i:215;s:3:"âš";i:216;s:3:"â›";i:217;s:3:"âœ";i:218;s:3:"â";i:219;s:3:"âž";i:220;s:3:"⸪";i:221;s:3:"⸫";i:222;s:3:"⸬";i:223;s:3:"⸭";i:224;s:3:"â³¼";i:225;s:3:"⳿";i:226;s:3:"⸙";i:227;s:4:"ð¤¿";i:228;s:4:"ð„€";i:229;s:4:"ð„";i:230;s:4:"ð„‚";i:231;s:4:"ðŽŸ";i:232;s:4:"ð";i:233;s:4:"ð¤Ÿ";i:234;s:4:"ð’‘°";i:235;s:4:"ð’‘±";i:236;s:4:"ð’‘²";i:237;s:4:"ð’‘³";i:238;s:1:"'";i:239;s:3:"‘";i:240;s:3:"’";i:241;s:3:"‚";i:242;s:3:"‛";i:243;s:3:"‹";i:244;s:3:"›";i:245;s:1:""";i:246;s:3:"“";i:247;s:3:"â€";i:248;s:3:"„";i:249;s:3:"‟";i:250;s:2:"«";i:251;s:2:"»";i:252;s:1:"(";i:253;s:1:")";i:254;s:1:"[";i:255;s:1:"]";i:256;s:1:"{";i:257;s:1:"}";i:258;s:3:"༺";i:259;s:3:"༻";i:260;s:3:"༼";i:261;s:3:"༽";i:262;s:3:"áš›";i:263;s:3:"ášœ";i:264;s:3:"â…";i:265;s:3:"â†";i:266;s:3:"⧼";i:267;s:3:"⧽";i:268;s:3:"⦃";i:269;s:3:"⦄";i:270;s:3:"⦅";i:271;s:3:"⦆";i:272;s:3:"⦇";i:273;s:3:"⦈";i:274;s:3:"⦉";i:275;s:3:"⦊";i:276;s:3:"⦋";i:277;s:3:"⦌";i:278;s:3:"â¦";i:279;s:3:"⦎";i:280;s:3:"â¦";i:281;s:3:"â¦";i:282;s:3:"⦑";i:283;s:3:"⦒";i:284;s:3:"⦓";i:285;s:3:"⦔";i:286;s:3:"⦕";i:287;s:3:"⦖";i:288;s:3:"⦗";i:289;s:3:"⦘";i:290;s:3:"⟬";i:291;s:3:"⟭";i:292;s:3:"⟮";i:293;s:3:"⟯";i:294;s:3:"⸂";i:295;s:3:"⸃";i:296;s:3:"⸄";i:297;s:3:"⸅";i:298;s:3:"⸉";i:299;s:3:"⸊";i:300;s:3:"⸌";i:301;s:3:"â¸";i:302;s:3:"⸜";i:303;s:3:"â¸";i:304;s:3:"⸠";i:305;s:3:"⸡";i:306;s:3:"⸢";i:307;s:3:"⸣";i:308;s:3:"⸤";i:309;s:3:"⸥";i:310;s:3:"⸦";i:311;s:3:"⸧";i:312;s:3:"⸨";i:313;s:3:"⸩";i:314;s:3:"〈";i:315;s:3:"〉";i:316;s:3:"ï½¢";i:317;s:3:"ï½£";i:318;s:3:"ï¹";i:319;s:3:"﹞";i:320;s:3:"︗";i:321;s:3:"︘";i:322;s:3:"ï´¾";i:323;s:3:"ï´¿";i:324;s:2:"§";i:325;s:2:"¶";i:326;s:3:"â‹";i:327;s:2:"©";i:328;s:2:"®";i:329;s:1:"@";i:330;s:1:"*";i:331;s:3:"âŽ";i:332;s:3:"â‘";i:333;s:2:"Ù­";i:334;s:3:"꙳";i:335;s:1:"/";i:336;s:3:"â„";i:337;s:1:"\";i:338;s:1:"&";i:339;s:3:"â…‹";i:340;s:3:"âŠ";i:341;s:1:"#";i:342;s:1:"%";i:343;s:2:"Ùª";i:344;s:3:"‰";i:345;s:2:"؉";i:346;s:3:"‱";i:347;s:2:"ØŠ";i:348;s:3:"â’";i:349;s:3:"†";i:350;s:3:"‡";i:351;s:3:"•";i:352;s:3:"‣";i:353;s:3:"‧";i:354;s:3:"âƒ";i:355;s:3:"âŒ";i:356;s:3:"â";i:357;s:3:"′";i:358;s:3:"‵";i:359;s:3:"‸";i:360;s:3:"※";i:361;s:3:"‿";i:362;s:3:"â”";i:363;s:3:"â€";i:364;s:3:"â";i:365;s:3:"â";i:366;s:3:"â‚";i:367;s:3:"⸀";i:368;s:3:"â¸";i:369;s:3:"⸆";i:370;s:3:"⸇";i:371;s:3:"⸈";i:372;s:3:"⸋";i:373;s:3:"⸎";i:374;s:3:"â¸";i:375;s:3:"â¸";i:376;s:3:"⸑";i:377;s:3:"⸒";i:378;s:3:"⸓";i:379;s:3:"⸔";i:380;s:3:"⸕";i:381;s:3:"⸖";i:382;s:3:"⸚";i:383;s:3:"⸛";i:384;s:3:"⸞";i:385;s:3:"⸟";i:386;s:3:"꙾";i:387;s:2:"Õš";i:388;s:2:"Õ›";i:389;s:2:"ÕŸ";i:390;s:2:"Ö¾";i:391;s:2:"×€";i:392;s:2:"׃";i:393;s:2:"׆";i:394;s:2:"׳";i:395;s:2:"×´";i:396;s:2:"ÜŠ";i:397;s:2:"Ü‹";i:398;s:2:"ÜŒ";i:399;s:2:"Ü";i:400;s:3:"à¡ž";i:401;s:3:"á €";i:402;s:3:"॰";i:403;s:3:"꣸";i:404;s:3:"꣹";i:405;s:3:"꣺";i:406;s:3:"à·´";i:407;s:3:"๚";i:408;s:3:"๛";i:409;s:3:"ê«ž";i:410;s:3:"ê«Ÿ";i:411;s:3:"༄";i:412;s:3:"༅";i:413;s:3:"༆";i:414;s:3:"༇";i:415;s:3:"༈";i:416;s:3:"༉";i:417;s:3:"༊";i:418;s:3:"à¿";i:419;s:3:"à¿‘";i:420;s:3:"་";i:421;s:3:"à¼";i:422;s:3:"༎";i:423;s:3:"à¼";i:424;s:3:"à¼";i:425;s:3:"༑";i:426;s:3:"༒";i:427;s:3:"྅";i:428;s:3:"à¿’";i:429;s:3:"à¿“";i:430;s:3:"à¿”";i:431;s:3:"à¿™";i:432;s:3:"à¿š";i:433;s:3:"á°½";i:434;s:3:"á°¾";i:435;s:3:"á°¿";i:436;s:3:"᥀";i:437;s:3:"áŒ";i:438;s:3:"á";i:439;s:3:"áŽ";i:440;s:3:"á";i:441;s:3:"á‚ž";i:442;s:3:"á‚Ÿ";i:443;s:3:"ê©·";i:444;s:3:"꩸";i:445;s:3:"꩹";i:446;s:3:"ៗ";i:447;s:3:"៘";i:448;s:3:"៙";i:449;s:3:"៚";i:450;s:3:"᪠";i:451;s:3:"᪡";i:452;s:3:"᪢";i:453;s:3:"᪣";i:454;s:3:"᪤";i:455;s:3:"᪥";i:456;s:3:"᪦";i:457;s:3:"᪬";i:458;s:3:"᪭";i:459;s:3:"á™­";i:460;s:3:"âµ°";i:461;s:3:"ê¡´";i:462;s:3:"꡵";i:463;s:3:"᯼";i:464;s:3:"᯽";i:465;s:3:"᯾";i:466;s:3:"᯿";i:467;s:3:"꤮";i:468;s:3:"꧞";i:469;s:3:"꧟";i:470;s:3:"ê©œ";i:471;s:4:"ð‘‰";i:472;s:4:"ð‘Š";i:473;s:4:"ð‘‹";i:474;s:4:"ð‘Œ";i:475;s:4:"ð‘";i:476;s:4:"ð©";i:477;s:4:"ð©‘";i:478;s:4:"ð©’";i:479;s:4:"ð©“";i:480;s:4:"ð©”";i:481;s:4:"ð©•";i:482;s:4:"ð©˜";i:483;s:4:"ð¬¹";i:484;s:4:"ð‘‚»";i:485;s:4:"ð‘‚¼";i:486;s:2:"ʹ";i:487;s:2:"͵";i:488;s:2:"ʺ";i:489;s:2:"Ë‚";i:490;s:2:"˃";i:491;s:2:"Ë„";i:492;s:2:"Ë…";i:493;s:2:"ˆ";i:494;s:2:"ˇ";i:495;s:2:"ˈ";i:496;s:2:"ˉ";i:497;s:2:"ËŠ";i:498;s:2:"Ë‹";i:499;s:2:"ËŒ";i:500;s:2:"Ë";i:501;s:2:"ËŽ";i:502;s:2:"Ë";i:503;s:2:"Ë’";i:504;s:2:"Ë“";i:505;s:2:"Ë”";i:506;s:2:"Ë•";i:507;s:2:"Ë–";i:508;s:2:"Ë—";i:509;s:2:"Ëž";i:510;s:2:"ËŸ";i:511;s:2:"Ë¥";i:512;s:2:"˦";i:513;s:2:"˧";i:514;s:2:"˨";i:515;s:2:"Ë©";i:516;s:2:"˪";i:517;s:2:"Ë«";i:518;s:2:"ˬ";i:519;s:2:"Ë­";i:520;s:2:"˯";i:521;s:2:"Ë°";i:522;s:2:"˱";i:523;s:2:"˲";i:524;s:2:"˳";i:525;s:2:"Ë´";i:526;s:2:"˵";i:527;s:2:"˶";i:528;s:2:"Ë·";i:529;s:2:"˸";i:530;s:2:"˹";i:531;s:2:"˺";i:532;s:2:"Ë»";i:533;s:2:"˼";i:534;s:2:"˽";i:535;s:2:"˾";i:536;s:2:"Ë¿";i:537;s:3:"áŽ";i:538;s:3:"᎑";i:539;s:3:"᎒";i:540;s:3:"᎓";i:541;s:3:"᎔";i:542;s:3:"᎕";i:543;s:3:"᎖";i:544;s:3:"᎗";i:545;s:3:"᎘";i:546;s:3:"᎙";i:547;s:3:"꜀";i:548;s:3:"êœ";i:549;s:3:"꜂";i:550;s:3:"꜃";i:551;s:3:"꜄";i:552;s:3:"꜅";i:553;s:3:"꜆";i:554;s:3:"꜇";i:555;s:3:"꜈";i:556;s:3:"꜉";i:557;s:3:"꜊";i:558;s:3:"꜋";i:559;s:3:"꜌";i:560;s:3:"êœ";i:561;s:3:"꜎";i:562;s:3:"êœ";i:563;s:3:"êœ";i:564;s:3:"꜑";i:565;s:3:"꜒";i:566;s:3:"꜓";i:567;s:3:"꜔";i:568;s:3:"꜕";i:569;s:3:"꜖";i:570;s:3:"ꜗ";i:571;s:3:"ꜘ";i:572;s:3:"ꜙ";i:573;s:3:"ꜚ";i:574;s:3:"ꜛ";i:575;s:3:"ꜜ";i:576;s:3:"êœ";i:577;s:3:"ꜞ";i:578;s:3:"ꜟ";i:579;s:3:"꜠";i:580;s:3:"꜡";i:581;s:3:"ꞈ";i:582;s:3:"꞉";i:583;s:3:"꞊";i:584;s:2:"°";i:585;s:2:"Ò‚";i:586;s:2:"؈";i:587;s:2:"ØŽ";i:588;s:2:"Ø";i:589;s:2:"Ûž";i:590;s:2:"Û©";i:591;s:3:"ï·½";i:592;s:2:"߶";i:593;s:3:"৺";i:594;s:3:"à­°";i:595;s:3:"௳";i:596;s:3:"௴";i:597;s:3:"௵";i:598;s:3:"௶";i:599;s:3:"௷";i:600;s:3:"௸";i:601;s:3:"௺";i:602;s:3:"౿";i:603;s:3:"൹";i:604;s:3:"ê ¨";i:605;s:3:"ê ©";i:606;s:3:"ê ª";i:607;s:3:"ê «";i:608;s:3:"ê ¶";i:609;s:3:"ê ·";i:610;s:3:"ê ¹";i:611;s:3:"à¹";i:612;s:3:"à¼";i:613;s:3:"༂";i:614;s:3:"༃";i:615;s:3:"༓";i:616;s:3:"༕";i:617;s:3:"༖";i:618;s:3:"༗";i:619;s:3:"༚";i:620;s:3:"༛";i:621;s:3:"༜";i:622;s:3:"à¼";i:623;s:3:"༞";i:624;s:3:"༟";i:625;s:3:"༴";i:626;s:3:"༶";i:627;s:3:"༸";i:628;s:3:"྾";i:629;s:3:"྿";i:630;s:3:"à¿€";i:631;s:3:"à¿";i:632;s:3:"à¿‚";i:633;s:3:"࿃";i:634;s:3:"à¿„";i:635;s:3:"à¿…";i:636;s:3:"࿇";i:637;s:3:"࿈";i:638;s:3:"࿉";i:639;s:3:"à¿Š";i:640;s:3:"à¿‹";i:641;s:3:"à¿Œ";i:642;s:3:"à¿Ž";i:643;s:3:"à¿";i:644;s:3:"à¿•";i:645;s:3:"à¿–";i:646;s:3:"à¿—";i:647;s:3:"࿘";i:648;s:3:"᧠";i:649;s:3:"᧡";i:650;s:3:"᧢";i:651;s:3:"᧣";i:652;s:3:"᧤";i:653;s:3:"᧥";i:654;s:3:"᧦";i:655;s:3:"᧧";i:656;s:3:"᧨";i:657;s:3:"᧩";i:658;s:3:"᧪";i:659;s:3:"᧫";i:660;s:3:"᧬";i:661;s:3:"᧭";i:662;s:3:"᧮";i:663;s:3:"᧯";i:664;s:3:"᧰";i:665;s:3:"᧱";i:666;s:3:"᧲";i:667;s:3:"᧳";i:668;s:3:"᧴";i:669;s:3:"᧵";i:670;s:3:"᧶";i:671;s:3:"᧷";i:672;s:3:"᧸";i:673;s:3:"᧹";i:674;s:3:"᧺";i:675;s:3:"᧻";i:676;s:3:"᧼";i:677;s:3:"᧽";i:678;s:3:"᧾";i:679;s:3:"᧿";i:680;s:3:"á­¡";i:681;s:3:"á­¢";i:682;s:3:"á­£";i:683;s:3:"á­¤";i:684;s:3:"á­¥";i:685;s:3:"á­¦";i:686;s:3:"á­§";i:687;s:3:"á­¨";i:688;s:3:"á­©";i:689;s:3:"á­ª";i:690;s:3:"á­´";i:691;s:3:"á­µ";i:692;s:3:"á­¶";i:693;s:3:"á­·";i:694;s:3:"á­¸";i:695;s:3:"á­¹";i:696;s:3:"á­º";i:697;s:3:"á­»";i:698;s:3:"á­¼";i:699;s:3:"â„„";i:700;s:3:"℈";i:701;s:3:"â„”";i:702;s:3:"â„—";i:703;s:3:"℘";i:704;s:3:"â„ž";i:705;s:3:"â„Ÿ";i:706;s:3:"â„£";i:707;s:3:"â„¥";i:708;s:3:"℧";i:709;s:3:"â„©";i:710;s:3:"â„®";i:711;s:3:"℺";i:712;s:3:"â…";i:713;s:3:"â…‚";i:714;s:3:"â…ƒ";i:715;s:3:"â…„";i:716;s:3:"â…Š";i:717;s:3:"â…Œ";i:718;s:3:"â…";i:719;s:3:"â…";i:720;s:3:"â†";i:721;s:3:"→";i:722;s:3:"↑";i:723;s:3:"↓";i:724;s:3:"↔";i:725;s:3:"↕";i:726;s:3:"↖";i:727;s:3:"↗";i:728;s:3:"↘";i:729;s:3:"↙";i:730;s:3:"↜";i:731;s:3:"â†";i:732;s:3:"↞";i:733;s:3:"↟";i:734;s:3:"↠";i:735;s:3:"↡";i:736;s:3:"↢";i:737;s:3:"↣";i:738;s:3:"↤";i:739;s:3:"↥";i:740;s:3:"↦";i:741;s:3:"↧";i:742;s:3:"↨";i:743;s:3:"↩";i:744;s:3:"↪";i:745;s:3:"↫";i:746;s:3:"↬";i:747;s:3:"↭";i:748;s:3:"↯";i:749;s:3:"↰";i:750;s:3:"↱";i:751;s:3:"↲";i:752;s:3:"↳";i:753;s:3:"↴";i:754;s:3:"↵";i:755;s:3:"↶";i:756;s:3:"↷";i:757;s:3:"↸";i:758;s:3:"↹";i:759;s:3:"↺";i:760;s:3:"↻";i:761;s:3:"↼";i:762;s:3:"↽";i:763;s:3:"↾";i:764;s:3:"↿";i:765;s:3:"⇀";i:766;s:3:"â‡";i:767;s:3:"⇂";i:768;s:3:"⇃";i:769;s:3:"⇄";i:770;s:3:"⇅";i:771;s:3:"⇆";i:772;s:3:"⇇";i:773;s:3:"⇈";i:774;s:3:"⇉";i:775;s:3:"⇊";i:776;s:3:"⇋";i:777;s:3:"⇌";i:778;s:3:"â‡";i:779;s:3:"⇑";i:780;s:3:"⇒";i:781;s:3:"⇓";i:782;s:3:"⇔";i:783;s:3:"⇕";i:784;s:3:"⇖";i:785;s:3:"⇗";i:786;s:3:"⇘";i:787;s:3:"⇙";i:788;s:3:"⇚";i:789;s:3:"⇛";i:790;s:3:"⇜";i:791;s:3:"â‡";i:792;s:3:"⇞";i:793;s:3:"⇟";i:794;s:3:"⇠";i:795;s:3:"⇡";i:796;s:3:"⇢";i:797;s:3:"⇣";i:798;s:3:"⇤";i:799;s:3:"⇥";i:800;s:3:"⇦";i:801;s:3:"⇧";i:802;s:3:"⇨";i:803;s:3:"⇩";i:804;s:3:"⇪";i:805;s:3:"⇫";i:806;s:3:"⇬";i:807;s:3:"⇭";i:808;s:3:"⇮";i:809;s:3:"⇯";i:810;s:3:"⇰";i:811;s:3:"⇱";i:812;s:3:"⇲";i:813;s:3:"⇳";i:814;s:3:"⇴";i:815;s:3:"⇵";i:816;s:3:"⇶";i:817;s:3:"⇷";i:818;s:3:"⇸";i:819;s:3:"⇹";i:820;s:3:"⇺";i:821;s:3:"⇻";i:822;s:3:"⇼";i:823;s:3:"⇽";i:824;s:3:"⇾";i:825;s:3:"⇿";i:826;s:3:"∀";i:827;s:3:"âˆ";i:828;s:3:"∂";i:829;s:3:"∃";i:830;s:3:"∅";i:831;s:3:"∆";i:832;s:3:"∇";i:833;s:3:"∈";i:834;s:3:"∊";i:835;s:3:"∋";i:836;s:3:"âˆ";i:837;s:2:"϶";i:838;s:3:"∎";i:839;s:3:"âˆ";i:840;s:3:"âˆ";i:841;s:3:"∑";i:842;s:1:"+";i:843;s:2:"±";i:844;s:2:"÷";i:845;s:2:"×";i:846;s:1:"<";i:847;s:1:"=";i:848;s:1:">";i:849;s:2:"¬";i:850;s:1:"|";i:851;s:2:"¦";i:852;s:3:"‖";i:853;s:1:"~";i:854;s:3:"−";i:855;s:3:"∓";i:856;s:3:"∔";i:857;s:3:"∕";i:858;s:3:"∖";i:859;s:3:"∗";i:860;s:3:"∘";i:861;s:3:"∙";i:862;s:3:"√";i:863;s:3:"∛";i:864;s:2:"؆";i:865;s:3:"∜";i:866;s:2:"؇";i:867;s:3:"âˆ";i:868;s:3:"∞";i:869;s:3:"∟";i:870;s:3:"∠";i:871;s:3:"∡";i:872;s:3:"∢";i:873;s:3:"∣";i:874;s:3:"∥";i:875;s:3:"∧";i:876;s:3:"∨";i:877;s:3:"∩";i:878;s:3:"∪";i:879;s:3:"∫";i:880;s:3:"∮";i:881;s:3:"∱";i:882;s:3:"∲";i:883;s:3:"∳";i:884;s:3:"∴";i:885;s:3:"∵";i:886;s:3:"∶";i:887;s:3:"∷";i:888;s:3:"∸";i:889;s:3:"∹";i:890;s:3:"∺";i:891;s:3:"∻";i:892;s:3:"∼";i:893;s:3:"∽";i:894;s:3:"∾";i:895;s:3:"∿";i:896;s:3:"≀";i:897;s:3:"≂";i:898;s:3:"≃";i:899;s:3:"≅";i:900;s:3:"≆";i:901;s:3:"≈";i:902;s:3:"≊";i:903;s:3:"≋";i:904;s:3:"≌";i:905;s:3:"â‰";i:906;s:3:"≎";i:907;s:3:"â‰";i:908;s:3:"â‰";i:909;s:3:"≑";i:910;s:3:"≒";i:911;s:3:"≓";i:912;s:3:"≔";i:913;s:3:"≕";i:914;s:3:"≖";i:915;s:3:"≗";i:916;s:3:"≘";i:917;s:3:"≙";i:918;s:3:"≚";i:919;s:3:"≛";i:920;s:3:"≜";i:921;s:3:"â‰";i:922;s:3:"≞";i:923;s:3:"≟";i:924;s:3:"≡";i:925;s:3:"≣";i:926;s:3:"≤";i:927;s:3:"≥";i:928;s:3:"≦";i:929;s:3:"≧";i:930;s:3:"≨";i:931;s:3:"≩";i:932;s:3:"≪";i:933;s:3:"≫";i:934;s:3:"≬";i:935;s:3:"≲";i:936;s:3:"≳";i:937;s:3:"≶";i:938;s:3:"≷";i:939;s:3:"≺";i:940;s:3:"≻";i:941;s:3:"≼";i:942;s:3:"≽";i:943;s:3:"≾";i:944;s:3:"≿";i:945;s:3:"⊂";i:946;s:3:"⊃";i:947;s:3:"⊆";i:948;s:3:"⊇";i:949;s:3:"⊊";i:950;s:3:"⊋";i:951;s:3:"⊌";i:952;s:3:"âŠ";i:953;s:3:"⊎";i:954;s:3:"âŠ";i:955;s:3:"âŠ";i:956;s:3:"⊑";i:957;s:3:"⊒";i:958;s:3:"⊓";i:959;s:3:"⊔";i:960;s:3:"⊕";i:961;s:3:"⊖";i:962;s:3:"⊗";i:963;s:3:"⊘";i:964;s:3:"⊙";i:965;s:3:"⊚";i:966;s:3:"⊛";i:967;s:3:"⊜";i:968;s:3:"âŠ";i:969;s:3:"⊞";i:970;s:3:"⊟";i:971;s:3:"⊠";i:972;s:3:"⊡";i:973;s:3:"⊢";i:974;s:3:"⊣";i:975;s:3:"⊤";i:976;s:3:"⊥";i:977;s:3:"⊦";i:978;s:3:"⊧";i:979;s:3:"⊨";i:980;s:3:"⊩";i:981;s:3:"⊪";i:982;s:3:"⊫";i:983;s:3:"⊰";i:984;s:3:"⊱";i:985;s:3:"⊲";i:986;s:3:"⊳";i:987;s:3:"⊴";i:988;s:3:"⊵";i:989;s:3:"⊶";i:990;s:3:"⊷";i:991;s:3:"⊸";i:992;s:3:"⊹";i:993;s:3:"⊺";i:994;s:3:"⊻";i:995;s:3:"⊼";i:996;s:3:"⊽";i:997;s:3:"⊾";i:998;s:3:"⊿";i:999;s:3:"â‹€";i:1000;s:3:"â‹";i:1001;s:3:"â‹‚";i:1002;s:3:"⋃";i:1003;s:3:"â‹„";i:1004;s:3:"â‹…";i:1005;s:3:"⋆";i:1006;s:3:"⋇";i:1007;s:3:"⋈";i:1008;s:3:"⋉";i:1009;s:3:"â‹Š";i:1010;s:3:"â‹‹";i:1011;s:3:"â‹Œ";i:1012;s:3:"â‹";i:1013;s:3:"â‹Ž";i:1014;s:3:"â‹";i:1015;s:3:"â‹";i:1016;s:3:"â‹‘";i:1017;s:3:"â‹’";i:1018;s:3:"â‹“";i:1019;s:3:"â‹”";i:1020;s:3:"â‹•";i:1021;s:3:"â‹–";i:1022;s:3:"â‹—";i:1023;s:3:"⋘";i:1024;s:3:"â‹™";i:1025;s:3:"â‹š";i:1026;s:3:"â‹›";i:1027;s:3:"â‹œ";i:1028;s:3:"â‹";i:1029;s:3:"â‹ž";i:1030;s:3:"â‹Ÿ";i:1031;s:3:"⋤";i:1032;s:3:"â‹¥";i:1033;s:3:"⋦";i:1034;s:3:"⋧";i:1035;s:3:"⋨";i:1036;s:3:"â‹©";i:1037;s:3:"â‹®";i:1038;s:3:"⋯";i:1039;s:3:"â‹°";i:1040;s:3:"⋱";i:1041;s:3:"⋲";i:1042;s:3:"⋳";i:1043;s:3:"â‹´";i:1044;s:3:"⋵";i:1045;s:3:"⋶";i:1046;s:3:"â‹·";i:1047;s:3:"⋸";i:1048;s:3:"⋹";i:1049;s:3:"⋺";i:1050;s:3:"â‹»";i:1051;s:3:"⋼";i:1052;s:3:"⋽";i:1053;s:3:"⋾";i:1054;s:3:"â‹¿";i:1055;s:3:"⌀";i:1056;s:3:"âŒ";i:1057;s:3:"⌂";i:1058;s:3:"⌃";i:1059;s:3:"⌄";i:1060;s:3:"⌅";i:1061;s:3:"⌆";i:1062;s:3:"⌇";i:1063;s:3:"⌈";i:1064;s:3:"⌉";i:1065;s:3:"⌊";i:1066;s:3:"⌋";i:1067;s:3:"⌌";i:1068;s:3:"âŒ";i:1069;s:3:"⌎";i:1070;s:3:"âŒ";i:1071;s:3:"âŒ";i:1072;s:3:"⌑";i:1073;s:3:"⌒";i:1074;s:3:"⌓";i:1075;s:3:"⌔";i:1076;s:3:"⌕";i:1077;s:3:"⌖";i:1078;s:3:"⌗";i:1079;s:3:"⌘";i:1080;s:3:"⌙";i:1081;s:3:"⌚";i:1082;s:3:"⌛";i:1083;s:3:"⌜";i:1084;s:3:"âŒ";i:1085;s:3:"⌞";i:1086;s:3:"⌟";i:1087;s:3:"⌠";i:1088;s:3:"⌡";i:1089;s:3:"⌢";i:1090;s:3:"⌣";i:1091;s:3:"⌤";i:1092;s:3:"⌥";i:1093;s:3:"⌦";i:1094;s:3:"⌧";i:1095;s:3:"⌨";i:1096;s:3:"⌫";i:1097;s:3:"⌬";i:1098;s:3:"⌭";i:1099;s:3:"⌮";i:1100;s:3:"⌯";i:1101;s:3:"⌰";i:1102;s:3:"⌱";i:1103;s:3:"⌲";i:1104;s:3:"⌳";i:1105;s:3:"⌴";i:1106;s:3:"⌵";i:1107;s:3:"⌶";i:1108;s:3:"⌷";i:1109;s:3:"⌸";i:1110;s:3:"⌹";i:1111;s:3:"⌺";i:1112;s:3:"⌻";i:1113;s:3:"⌼";i:1114;s:3:"⌽";i:1115;s:3:"⌾";i:1116;s:3:"⌿";i:1117;s:3:"â€";i:1118;s:3:"â";i:1119;s:3:"â‚";i:1120;s:3:"âƒ";i:1121;s:3:"â„";i:1122;s:3:"â…";i:1123;s:3:"â†";i:1124;s:3:"â‡";i:1125;s:3:"âˆ";i:1126;s:3:"â‰";i:1127;s:3:"âŠ";i:1128;s:3:"â‹";i:1129;s:3:"âŒ";i:1130;s:3:"â";i:1131;s:3:"âŽ";i:1132;s:3:"â";i:1133;s:3:"â";i:1134;s:3:"â‘";i:1135;s:3:"â’";i:1136;s:3:"â“";i:1137;s:3:"â”";i:1138;s:3:"â•";i:1139;s:3:"â–";i:1140;s:3:"â—";i:1141;s:3:"â˜";i:1142;s:3:"â™";i:1143;s:3:"âš";i:1144;s:3:"â›";i:1145;s:3:"âœ";i:1146;s:3:"â";i:1147;s:3:"âž";i:1148;s:3:"âŸ";i:1149;s:3:"â ";i:1150;s:3:"â¡";i:1151;s:3:"â¢";i:1152;s:3:"â£";i:1153;s:3:"â¤";i:1154;s:3:"â¥";i:1155;s:3:"â¦";i:1156;s:3:"â§";i:1157;s:3:"â¨";i:1158;s:3:"â©";i:1159;s:3:"âª";i:1160;s:3:"â«";i:1161;s:3:"â¬";i:1162;s:3:"â­";i:1163;s:3:"â®";i:1164;s:3:"â¯";i:1165;s:3:"â°";i:1166;s:3:"â±";i:1167;s:3:"â²";i:1168;s:3:"â³";i:1169;s:3:"â´";i:1170;s:3:"âµ";i:1171;s:3:"â¶";i:1172;s:3:"â·";i:1173;s:3:"â¸";i:1174;s:3:"â¹";i:1175;s:3:"âº";i:1176;s:3:"â»";i:1177;s:3:"â¼";i:1178;s:3:"â½";i:1179;s:3:"â¾";i:1180;s:3:"â¿";i:1181;s:3:"⎀";i:1182;s:3:"âŽ";i:1183;s:3:"⎂";i:1184;s:3:"⎃";i:1185;s:3:"⎄";i:1186;s:3:"⎅";i:1187;s:3:"⎆";i:1188;s:3:"⎇";i:1189;s:3:"⎈";i:1190;s:3:"⎉";i:1191;s:3:"⎊";i:1192;s:3:"⎋";i:1193;s:3:"⎌";i:1194;s:3:"âŽ";i:1195;s:3:"⎎";i:1196;s:3:"âŽ";i:1197;s:3:"âŽ";i:1198;s:3:"⎑";i:1199;s:3:"⎒";i:1200;s:3:"⎓";i:1201;s:3:"⎔";i:1202;s:3:"⎕";i:1203;s:3:"⎖";i:1204;s:3:"⎗";i:1205;s:3:"⎘";i:1206;s:3:"⎙";i:1207;s:3:"⎚";i:1208;s:3:"⎛";i:1209;s:3:"⎜";i:1210;s:3:"âŽ";i:1211;s:3:"⎞";i:1212;s:3:"⎟";i:1213;s:3:"⎠";i:1214;s:3:"⎡";i:1215;s:3:"⎢";i:1216;s:3:"⎣";i:1217;s:3:"⎤";i:1218;s:3:"⎥";i:1219;s:3:"⎦";i:1220;s:3:"⎧";i:1221;s:3:"⎨";i:1222;s:3:"⎩";i:1223;s:3:"⎪";i:1224;s:3:"⎫";i:1225;s:3:"⎬";i:1226;s:3:"⎭";i:1227;s:3:"⎮";i:1228;s:3:"⎯";i:1229;s:3:"⎰";i:1230;s:3:"⎱";i:1231;s:3:"⎲";i:1232;s:3:"⎳";i:1233;s:3:"⎴";i:1234;s:3:"⎵";i:1235;s:3:"⎶";i:1236;s:3:"⎷";i:1237;s:3:"⎸";i:1238;s:3:"⎹";i:1239;s:3:"⎺";i:1240;s:3:"⎻";i:1241;s:3:"⎼";i:1242;s:3:"⎽";i:1243;s:3:"⎾";i:1244;s:3:"⎿";i:1245;s:3:"â€";i:1246;s:3:"â";i:1247;s:3:"â‚";i:1248;s:3:"âƒ";i:1249;s:3:"â„";i:1250;s:3:"â…";i:1251;s:3:"â†";i:1252;s:3:"â‡";i:1253;s:3:"âˆ";i:1254;s:3:"â‰";i:1255;s:3:"âŠ";i:1256;s:3:"â‹";i:1257;s:3:"âŒ";i:1258;s:3:"â";i:1259;s:3:"âŽ";i:1260;s:3:"â";i:1261;s:3:"â";i:1262;s:3:"â‘";i:1263;s:3:"â’";i:1264;s:3:"â“";i:1265;s:3:"â”";i:1266;s:3:"â•";i:1267;s:3:"â–";i:1268;s:3:"â—";i:1269;s:3:"â˜";i:1270;s:3:"â™";i:1271;s:3:"âš";i:1272;s:3:"â›";i:1273;s:3:"âœ";i:1274;s:3:"â";i:1275;s:3:"âž";i:1276;s:3:"âŸ";i:1277;s:3:"â ";i:1278;s:3:"â¡";i:1279;s:3:"â¢";i:1280;s:3:"â£";i:1281;s:3:"â¤";i:1282;s:3:"â¥";i:1283;s:3:"â¦";i:1284;s:3:"â§";i:1285;s:3:"â¨";i:1286;s:3:"â©";i:1287;s:3:"âª";i:1288;s:3:"â«";i:1289;s:3:"â¬";i:1290;s:3:"â­";i:1291;s:3:"â®";i:1292;s:3:"â¯";i:1293;s:3:"â°";i:1294;s:3:"â±";i:1295;s:3:"â²";i:1296;s:3:"â³";i:1297;s:3:"â€";i:1298;s:3:"â";i:1299;s:3:"â‚";i:1300;s:3:"âƒ";i:1301;s:3:"â„";i:1302;s:3:"â…";i:1303;s:3:"â†";i:1304;s:3:"â‡";i:1305;s:3:"âˆ";i:1306;s:3:"â‰";i:1307;s:3:"âŠ";i:1308;s:3:"â‹";i:1309;s:3:"âŒ";i:1310;s:3:"â";i:1311;s:3:"âŽ";i:1312;s:3:"â";i:1313;s:3:"â";i:1314;s:3:"â‘";i:1315;s:3:"â’";i:1316;s:3:"â“";i:1317;s:3:"â”";i:1318;s:3:"â•";i:1319;s:3:"â–";i:1320;s:3:"â—";i:1321;s:3:"â˜";i:1322;s:3:"â™";i:1323;s:3:"âš";i:1324;s:3:"â›";i:1325;s:3:"âœ";i:1326;s:3:"â";i:1327;s:3:"âž";i:1328;s:3:"âŸ";i:1329;s:3:"â ";i:1330;s:3:"â¡";i:1331;s:3:"â¢";i:1332;s:3:"â£";i:1333;s:3:"â¤";i:1334;s:3:"â¥";i:1335;s:3:"â¦";i:1336;s:3:"â‘€";i:1337;s:3:"â‘";i:1338;s:3:"â‘‚";i:1339;s:3:"⑃";i:1340;s:3:"â‘„";i:1341;s:3:"â‘…";i:1342;s:3:"⑆";i:1343;s:3:"⑇";i:1344;s:3:"⑈";i:1345;s:3:"⑉";i:1346;s:3:"â‘Š";i:1347;s:3:"─";i:1348;s:3:"â”";i:1349;s:3:"│";i:1350;s:3:"┃";i:1351;s:3:"┄";i:1352;s:3:"â”…";i:1353;s:3:"┆";i:1354;s:3:"┇";i:1355;s:3:"┈";i:1356;s:3:"┉";i:1357;s:3:"┊";i:1358;s:3:"┋";i:1359;s:3:"┌";i:1360;s:3:"â”";i:1361;s:3:"┎";i:1362;s:3:"â”";i:1363;s:3:"â”";i:1364;s:3:"┑";i:1365;s:3:"â”’";i:1366;s:3:"┓";i:1367;s:3:"â””";i:1368;s:3:"┕";i:1369;s:3:"â”–";i:1370;s:3:"â”—";i:1371;s:3:"┘";i:1372;s:3:"â”™";i:1373;s:3:"┚";i:1374;s:3:"â”›";i:1375;s:3:"├";i:1376;s:3:"â”";i:1377;s:3:"┞";i:1378;s:3:"┟";i:1379;s:3:"â” ";i:1380;s:3:"┡";i:1381;s:3:"┢";i:1382;s:3:"┣";i:1383;s:3:"┤";i:1384;s:3:"┥";i:1385;s:3:"┦";i:1386;s:3:"┧";i:1387;s:3:"┨";i:1388;s:3:"┩";i:1389;s:3:"┪";i:1390;s:3:"┫";i:1391;s:3:"┬";i:1392;s:3:"â”­";i:1393;s:3:"â”®";i:1394;s:3:"┯";i:1395;s:3:"â”°";i:1396;s:3:"â”±";i:1397;s:3:"┲";i:1398;s:3:"┳";i:1399;s:3:"â”´";i:1400;s:3:"┵";i:1401;s:3:"┶";i:1402;s:3:"â”·";i:1403;s:3:"┸";i:1404;s:3:"┹";i:1405;s:3:"┺";i:1406;s:3:"â”»";i:1407;s:3:"┼";i:1408;s:3:"┽";i:1409;s:3:"┾";i:1410;s:3:"┿";i:1411;s:3:"â•€";i:1412;s:3:"â•";i:1413;s:3:"â•‚";i:1414;s:3:"╃";i:1415;s:3:"â•„";i:1416;s:3:"â•…";i:1417;s:3:"╆";i:1418;s:3:"╇";i:1419;s:3:"╈";i:1420;s:3:"╉";i:1421;s:3:"â•Š";i:1422;s:3:"â•‹";i:1423;s:3:"â•Œ";i:1424;s:3:"â•";i:1425;s:3:"â•Ž";i:1426;s:3:"â•";i:1427;s:3:"â•";i:1428;s:3:"â•‘";i:1429;s:3:"â•’";i:1430;s:3:"â•“";i:1431;s:3:"â•”";i:1432;s:3:"â••";i:1433;s:3:"â•–";i:1434;s:3:"â•—";i:1435;s:3:"╘";i:1436;s:3:"â•™";i:1437;s:3:"â•š";i:1438;s:3:"â•›";i:1439;s:3:"â•œ";i:1440;s:3:"â•";i:1441;s:3:"â•ž";i:1442;s:3:"â•Ÿ";i:1443;s:3:"â• ";i:1444;s:3:"â•¡";i:1445;s:3:"â•¢";i:1446;s:3:"â•£";i:1447;s:3:"╤";i:1448;s:3:"â•¥";i:1449;s:3:"╦";i:1450;s:3:"╧";i:1451;s:3:"╨";i:1452;s:3:"â•©";i:1453;s:3:"╪";i:1454;s:3:"â•«";i:1455;s:3:"╬";i:1456;s:3:"â•­";i:1457;s:3:"â•®";i:1458;s:3:"╯";i:1459;s:3:"â•°";i:1460;s:3:"╱";i:1461;s:3:"╲";i:1462;s:3:"╳";i:1463;s:3:"â•´";i:1464;s:3:"╵";i:1465;s:3:"╶";i:1466;s:3:"â•·";i:1467;s:3:"╸";i:1468;s:3:"╹";i:1469;s:3:"╺";i:1470;s:3:"â•»";i:1471;s:3:"╼";i:1472;s:3:"╽";i:1473;s:3:"╾";i:1474;s:3:"â•¿";i:1475;s:3:"â–€";i:1476;s:3:"â–";i:1477;s:3:"â–‚";i:1478;s:3:"â–ƒ";i:1479;s:3:"â–„";i:1480;s:3:"â–…";i:1481;s:3:"â–†";i:1482;s:3:"â–‡";i:1483;s:3:"â–ˆ";i:1484;s:3:"â–‰";i:1485;s:3:"â–Š";i:1486;s:3:"â–‹";i:1487;s:3:"â–Œ";i:1488;s:3:"â–";i:1489;s:3:"â–Ž";i:1490;s:3:"â–";i:1491;s:3:"â–";i:1492;s:3:"â–‘";i:1493;s:3:"â–’";i:1494;s:3:"â–“";i:1495;s:3:"â–”";i:1496;s:3:"â–•";i:1497;s:3:"â––";i:1498;s:3:"â–—";i:1499;s:3:"â–˜";i:1500;s:3:"â–™";i:1501;s:3:"â–š";i:1502;s:3:"â–›";i:1503;s:3:"â–œ";i:1504;s:3:"â–";i:1505;s:3:"â–ž";i:1506;s:3:"â–Ÿ";i:1507;s:3:"â– ";i:1508;s:3:"â–¡";i:1509;s:3:"â–¢";i:1510;s:3:"â–£";i:1511;s:3:"â–¤";i:1512;s:3:"â–¥";i:1513;s:3:"â–¦";i:1514;s:3:"â–§";i:1515;s:3:"â–¨";i:1516;s:3:"â–©";i:1517;s:3:"â–ª";i:1518;s:3:"â–«";i:1519;s:3:"â–¬";i:1520;s:3:"â–­";i:1521;s:3:"â–®";i:1522;s:3:"â–¯";i:1523;s:3:"â–°";i:1524;s:3:"â–±";i:1525;s:3:"â–²";i:1526;s:3:"â–³";i:1527;s:3:"â–´";i:1528;s:3:"â–µ";i:1529;s:3:"â–¶";i:1530;s:3:"â–·";i:1531;s:3:"â–¸";i:1532;s:3:"â–¹";i:1533;s:3:"â–º";i:1534;s:3:"â–»";i:1535;s:3:"â–¼";i:1536;s:3:"â–½";i:1537;s:3:"â–¾";i:1538;s:3:"â–¿";i:1539;s:3:"â—€";i:1540;s:3:"â—";i:1541;s:3:"â—‚";i:1542;s:3:"â—ƒ";i:1543;s:3:"â—„";i:1544;s:3:"â—…";i:1545;s:3:"â—†";i:1546;s:3:"â—‡";i:1547;s:3:"â—ˆ";i:1548;s:3:"â—‰";i:1549;s:3:"â—Š";i:1550;s:3:"â—‹";i:1551;s:3:"â—Œ";i:1552;s:3:"â—";i:1553;s:3:"â—Ž";i:1554;s:3:"â—";i:1555;s:3:"â—";i:1556;s:3:"â—‘";i:1557;s:3:"â—’";i:1558;s:3:"â—“";i:1559;s:3:"â—”";i:1560;s:3:"â—•";i:1561;s:3:"â—–";i:1562;s:3:"â——";i:1563;s:3:"â—˜";i:1564;s:3:"â—™";i:1565;s:3:"â—š";i:1566;s:3:"â—›";i:1567;s:3:"â—œ";i:1568;s:3:"â—";i:1569;s:3:"â—ž";i:1570;s:3:"â—Ÿ";i:1571;s:3:"â— ";i:1572;s:3:"â—¡";i:1573;s:3:"â—¢";i:1574;s:3:"â—£";i:1575;s:3:"â—¤";i:1576;s:3:"â—¥";i:1577;s:3:"â—¦";i:1578;s:3:"â—§";i:1579;s:3:"â—¨";i:1580;s:3:"â—©";i:1581;s:3:"â—ª";i:1582;s:3:"â—«";i:1583;s:3:"â—¬";i:1584;s:3:"â—­";i:1585;s:3:"â—®";i:1586;s:3:"â—¯";i:1587;s:3:"â—°";i:1588;s:3:"â—±";i:1589;s:3:"â—²";i:1590;s:3:"â—³";i:1591;s:3:"â—´";i:1592;s:3:"â—µ";i:1593;s:3:"â—¶";i:1594;s:3:"â—·";i:1595;s:3:"â—¸";i:1596;s:3:"â—¹";i:1597;s:3:"â—º";i:1598;s:3:"â—»";i:1599;s:3:"â—¼";i:1600;s:3:"â—½";i:1601;s:3:"â—¾";i:1602;s:3:"â—¿";i:1603;s:3:"☀";i:1604;s:3:"â˜";i:1605;s:3:"☂";i:1606;s:3:"☃";i:1607;s:3:"☄";i:1608;s:3:"★";i:1609;s:3:"☆";i:1610;s:3:"☇";i:1611;s:3:"☈";i:1612;s:3:"☉";i:1613;s:3:"☊";i:1614;s:3:"☋";i:1615;s:3:"☌";i:1616;s:3:"â˜";i:1617;s:3:"☎";i:1618;s:3:"â˜";i:1619;s:3:"â˜";i:1620;s:3:"☑";i:1621;s:3:"☒";i:1622;s:3:"☓";i:1623;s:3:"☔";i:1624;s:3:"☕";i:1625;s:3:"☖";i:1626;s:3:"☗";i:1627;s:3:"☘";i:1628;s:3:"☙";i:1629;s:3:"☚";i:1630;s:3:"☛";i:1631;s:3:"☜";i:1632;s:3:"â˜";i:1633;s:3:"☞";i:1634;s:3:"☟";i:1635;s:3:"☠";i:1636;s:3:"☡";i:1637;s:3:"☢";i:1638;s:3:"☣";i:1639;s:3:"☤";i:1640;s:3:"☥";i:1641;s:3:"☦";i:1642;s:3:"☧";i:1643;s:3:"☨";i:1644;s:3:"☩";i:1645;s:3:"☪";i:1646;s:3:"☫";i:1647;s:3:"☬";i:1648;s:3:"☭";i:1649;s:3:"☮";i:1650;s:3:"☯";i:1651;s:3:"☸";i:1652;s:3:"☹";i:1653;s:3:"☺";i:1654;s:3:"☻";i:1655;s:3:"☼";i:1656;s:3:"☽";i:1657;s:3:"☾";i:1658;s:3:"☿";i:1659;s:3:"♀";i:1660;s:3:"â™";i:1661;s:3:"♂";i:1662;s:3:"♃";i:1663;s:3:"♄";i:1664;s:3:"â™…";i:1665;s:3:"♆";i:1666;s:3:"♇";i:1667;s:3:"♈";i:1668;s:3:"♉";i:1669;s:3:"♊";i:1670;s:3:"♋";i:1671;s:3:"♌";i:1672;s:3:"â™";i:1673;s:3:"♎";i:1674;s:3:"â™";i:1675;s:3:"â™";i:1676;s:3:"♑";i:1677;s:3:"â™’";i:1678;s:3:"♓";i:1679;s:3:"â™”";i:1680;s:3:"♕";i:1681;s:3:"â™–";i:1682;s:3:"â™—";i:1683;s:3:"♘";i:1684;s:3:"â™™";i:1685;s:3:"♚";i:1686;s:3:"â™›";i:1687;s:3:"♜";i:1688;s:3:"â™";i:1689;s:3:"♞";i:1690;s:3:"♟";i:1691;s:3:"â™ ";i:1692;s:3:"♡";i:1693;s:3:"♢";i:1694;s:3:"♣";i:1695;s:3:"♤";i:1696;s:3:"♥";i:1697;s:3:"♦";i:1698;s:3:"♧";i:1699;s:3:"♨";i:1700;s:3:"♩";i:1701;s:3:"♪";i:1702;s:3:"♫";i:1703;s:3:"♬";i:1704;s:3:"â™°";i:1705;s:3:"â™±";i:1706;s:3:"♲";i:1707;s:3:"♳";i:1708;s:3:"â™´";i:1709;s:3:"♵";i:1710;s:3:"♶";i:1711;s:3:"â™·";i:1712;s:3:"♸";i:1713;s:3:"♹";i:1714;s:3:"♺";i:1715;s:3:"â™»";i:1716;s:3:"♼";i:1717;s:3:"♽";i:1718;s:3:"♾";i:1719;s:3:"♿";i:1720;s:3:"⚀";i:1721;s:3:"âš";i:1722;s:3:"âš‚";i:1723;s:3:"⚃";i:1724;s:3:"âš„";i:1725;s:3:"âš…";i:1726;s:3:"⚆";i:1727;s:3:"⚇";i:1728;s:3:"⚈";i:1729;s:3:"⚉";i:1730;s:3:"âš";i:1731;s:3:"âš‘";i:1732;s:3:"âš’";i:1733;s:3:"âš“";i:1734;s:3:"âš”";i:1735;s:3:"âš•";i:1736;s:3:"âš–";i:1737;s:3:"âš—";i:1738;s:3:"⚘";i:1739;s:3:"âš™";i:1740;s:3:"âšš";i:1741;s:3:"âš›";i:1742;s:3:"âšœ";i:1743;s:3:"âš";i:1744;s:3:"âšž";i:1745;s:3:"⚟";i:1746;s:3:"âš ";i:1747;s:3:"âš¡";i:1748;s:3:"⚢";i:1749;s:3:"⚣";i:1750;s:3:"⚤";i:1751;s:3:"⚥";i:1752;s:3:"⚦";i:1753;s:3:"⚧";i:1754;s:3:"⚨";i:1755;s:3:"âš©";i:1756;s:3:"⚪";i:1757;s:3:"âš«";i:1758;s:3:"⚬";i:1759;s:3:"âš­";i:1760;s:3:"âš®";i:1761;s:3:"⚯";i:1762;s:3:"âš°";i:1763;s:3:"âš±";i:1764;s:3:"âš²";i:1765;s:3:"âš³";i:1766;s:3:"âš´";i:1767;s:3:"âšµ";i:1768;s:3:"⚶";i:1769;s:3:"âš·";i:1770;s:3:"⚸";i:1771;s:3:"âš¹";i:1772;s:3:"⚺";i:1773;s:3:"âš»";i:1774;s:3:"âš¼";i:1775;s:3:"âš½";i:1776;s:3:"âš¾";i:1777;s:3:"âš¿";i:1778;s:3:"⛀";i:1779;s:3:"â›";i:1780;s:3:"⛂";i:1781;s:3:"⛃";i:1782;s:3:"⛄";i:1783;s:3:"â›…";i:1784;s:3:"⛆";i:1785;s:3:"⛇";i:1786;s:3:"⛈";i:1787;s:3:"⛉";i:1788;s:3:"⛊";i:1789;s:3:"⛋";i:1790;s:3:"⛌";i:1791;s:3:"â›";i:1792;s:3:"⛎";i:1793;s:3:"â›";i:1794;s:3:"â›";i:1795;s:3:"⛑";i:1796;s:3:"â›’";i:1797;s:3:"⛓";i:1798;s:3:"â›”";i:1799;s:3:"⛕";i:1800;s:3:"â›–";i:1801;s:3:"â›—";i:1802;s:3:"⛘";i:1803;s:3:"â›™";i:1804;s:3:"⛚";i:1805;s:3:"â››";i:1806;s:3:"⛜";i:1807;s:3:"â›";i:1808;s:3:"⛞";i:1809;s:3:"⛟";i:1810;s:3:"â› ";i:1811;s:3:"⛡";i:1812;s:3:"⛢";i:1813;s:3:"⛣";i:1814;s:3:"⛤";i:1815;s:3:"⛥";i:1816;s:3:"⛦";i:1817;s:3:"⛧";i:1818;s:3:"⛨";i:1819;s:3:"⛩";i:1820;s:3:"⛪";i:1821;s:3:"⛫";i:1822;s:3:"⛬";i:1823;s:3:"â›­";i:1824;s:3:"â›®";i:1825;s:3:"⛯";i:1826;s:3:"â›°";i:1827;s:3:"â›±";i:1828;s:3:"⛲";i:1829;s:3:"⛳";i:1830;s:3:"â›´";i:1831;s:3:"⛵";i:1832;s:3:"⛶";i:1833;s:3:"â›·";i:1834;s:3:"⛸";i:1835;s:3:"⛹";i:1836;s:3:"⛺";i:1837;s:3:"â›»";i:1838;s:3:"⛼";i:1839;s:3:"⛽";i:1840;s:3:"⛾";i:1841;s:3:"⛿";i:1842;s:3:"âœ";i:1843;s:3:"✂";i:1844;s:3:"✃";i:1845;s:3:"✄";i:1846;s:3:"✅";i:1847;s:3:"✆";i:1848;s:3:"✇";i:1849;s:3:"✈";i:1850;s:3:"✉";i:1851;s:3:"✊";i:1852;s:3:"✋";i:1853;s:3:"✌";i:1854;s:3:"âœ";i:1855;s:3:"✎";i:1856;s:3:"âœ";i:1857;s:3:"âœ";i:1858;s:3:"✑";i:1859;s:3:"✒";i:1860;s:3:"✓";i:1861;s:3:"✔";i:1862;s:3:"✕";i:1863;s:3:"✖";i:1864;s:3:"✗";i:1865;s:3:"✘";i:1866;s:3:"✙";i:1867;s:3:"✚";i:1868;s:3:"✛";i:1869;s:3:"✜";i:1870;s:3:"âœ";i:1871;s:3:"✞";i:1872;s:3:"✟";i:1873;s:3:"✠";i:1874;s:3:"✡";i:1875;s:3:"✢";i:1876;s:3:"✣";i:1877;s:3:"✤";i:1878;s:3:"✥";i:1879;s:3:"✦";i:1880;s:3:"✧";i:1881;s:3:"✨";i:1882;s:3:"✩";i:1883;s:3:"✪";i:1884;s:3:"✫";i:1885;s:3:"✬";i:1886;s:3:"✭";i:1887;s:3:"✮";i:1888;s:3:"✯";i:1889;s:3:"✰";i:1890;s:3:"✱";i:1891;s:3:"✲";i:1892;s:3:"✳";i:1893;s:3:"✴";i:1894;s:3:"✵";i:1895;s:3:"✶";i:1896;s:3:"✷";i:1897;s:3:"✸";i:1898;s:3:"✹";i:1899;s:3:"✺";i:1900;s:3:"✻";i:1901;s:3:"✼";i:1902;s:3:"✽";i:1903;s:3:"✾";i:1904;s:3:"✿";i:1905;s:3:"â€";i:1906;s:3:"â";i:1907;s:3:"â‚";i:1908;s:3:"âƒ";i:1909;s:3:"â„";i:1910;s:3:"â…";i:1911;s:3:"â†";i:1912;s:3:"â‡";i:1913;s:3:"âˆ";i:1914;s:3:"â‰";i:1915;s:3:"âŠ";i:1916;s:3:"â‹";i:1917;s:3:"âŒ";i:1918;s:3:"â";i:1919;s:3:"âŽ";i:1920;s:3:"â";i:1921;s:3:"â";i:1922;s:3:"â‘";i:1923;s:3:"â’";i:1924;s:3:"â“";i:1925;s:3:"â”";i:1926;s:3:"â•";i:1927;s:3:"â–";i:1928;s:3:"â—";i:1929;s:3:"â˜";i:1930;s:3:"â™";i:1931;s:3:"âš";i:1932;s:3:"â›";i:1933;s:3:"âœ";i:1934;s:3:"â";i:1935;s:3:"âž";i:1936;s:3:"âŸ";i:1937;s:3:"â ";i:1938;s:3:"â¡";i:1939;s:3:"â¢";i:1940;s:3:"â£";i:1941;s:3:"â¤";i:1942;s:3:"â¥";i:1943;s:3:"â¦";i:1944;s:3:"â§";i:1945;s:3:"â¨";i:1946;s:3:"â©";i:1947;s:3:"âª";i:1948;s:3:"â«";i:1949;s:3:"â¬";i:1950;s:3:"â­";i:1951;s:3:"â®";i:1952;s:3:"â¯";i:1953;s:3:"â°";i:1954;s:3:"â±";i:1955;s:3:"â²";i:1956;s:3:"â³";i:1957;s:3:"â´";i:1958;s:3:"âµ";i:1959;s:3:"âž”";i:1960;s:3:"âž•";i:1961;s:3:"âž–";i:1962;s:3:"âž—";i:1963;s:3:"➘";i:1964;s:3:"âž™";i:1965;s:3:"âžš";i:1966;s:3:"âž›";i:1967;s:3:"âžœ";i:1968;s:3:"âž";i:1969;s:3:"âžž";i:1970;s:3:"➟";i:1971;s:3:"âž ";i:1972;s:3:"âž¡";i:1973;s:3:"➢";i:1974;s:3:"➣";i:1975;s:3:"➤";i:1976;s:3:"➥";i:1977;s:3:"➦";i:1978;s:3:"➧";i:1979;s:3:"➨";i:1980;s:3:"âž©";i:1981;s:3:"➪";i:1982;s:3:"âž«";i:1983;s:3:"➬";i:1984;s:3:"âž­";i:1985;s:3:"âž®";i:1986;s:3:"➯";i:1987;s:3:"âž°";i:1988;s:3:"âž±";i:1989;s:3:"âž²";i:1990;s:3:"âž³";i:1991;s:3:"âž´";i:1992;s:3:"âžµ";i:1993;s:3:"➶";i:1994;s:3:"âž·";i:1995;s:3:"➸";i:1996;s:3:"âž¹";i:1997;s:3:"➺";i:1998;s:3:"âž»";i:1999;s:3:"âž¼";i:2000;s:3:"âž½";i:2001;s:3:"âž¾";i:2002;s:3:"âž¿";i:2003;s:3:"⟀";i:2004;s:3:"âŸ";i:2005;s:3:"⟂";i:2006;s:3:"⟃";i:2007;s:3:"⟄";i:2008;s:3:"⟅";i:2009;s:3:"⟆";i:2010;s:3:"⟇";i:2011;s:3:"⟈";i:2012;s:3:"⟉";i:2013;s:3:"⟊";i:2014;s:3:"⟌";i:2015;s:3:"⟎";i:2016;s:3:"âŸ";i:2017;s:3:"âŸ";i:2018;s:3:"⟑";i:2019;s:3:"⟒";i:2020;s:3:"⟓";i:2021;s:3:"⟔";i:2022;s:3:"⟕";i:2023;s:3:"⟖";i:2024;s:3:"⟗";i:2025;s:3:"⟘";i:2026;s:3:"⟙";i:2027;s:3:"⟚";i:2028;s:3:"⟛";i:2029;s:3:"⟜";i:2030;s:3:"âŸ";i:2031;s:3:"⟞";i:2032;s:3:"⟟";i:2033;s:3:"⟠";i:2034;s:3:"⟡";i:2035;s:3:"⟢";i:2036;s:3:"⟣";i:2037;s:3:"⟤";i:2038;s:3:"⟥";i:2039;s:3:"⟦";i:2040;s:3:"⟧";i:2041;s:3:"⟨";i:2042;s:3:"⟩";i:2043;s:3:"⟪";i:2044;s:3:"⟫";i:2045;s:3:"⟰";i:2046;s:3:"⟱";i:2047;s:3:"⟲";i:2048;s:3:"⟳";i:2049;s:3:"⟴";i:2050;s:3:"⟵";i:2051;s:3:"⟶";i:2052;s:3:"⟷";i:2053;s:3:"⟸";i:2054;s:3:"⟹";i:2055;s:3:"⟺";i:2056;s:3:"⟻";i:2057;s:3:"⟼";i:2058;s:3:"⟽";i:2059;s:3:"⟾";i:2060;s:3:"⟿";i:2061;s:3:"⤀";i:2062;s:3:"â¤";i:2063;s:3:"⤂";i:2064;s:3:"⤃";i:2065;s:3:"⤄";i:2066;s:3:"⤅";i:2067;s:3:"⤆";i:2068;s:3:"⤇";i:2069;s:3:"⤈";i:2070;s:3:"⤉";i:2071;s:3:"⤊";i:2072;s:3:"⤋";i:2073;s:3:"⤌";i:2074;s:3:"â¤";i:2075;s:3:"⤎";i:2076;s:3:"â¤";i:2077;s:3:"â¤";i:2078;s:3:"⤑";i:2079;s:3:"⤒";i:2080;s:3:"⤓";i:2081;s:3:"⤔";i:2082;s:3:"⤕";i:2083;s:3:"⤖";i:2084;s:3:"⤗";i:2085;s:3:"⤘";i:2086;s:3:"⤙";i:2087;s:3:"⤚";i:2088;s:3:"⤛";i:2089;s:3:"⤜";i:2090;s:3:"â¤";i:2091;s:3:"⤞";i:2092;s:3:"⤟";i:2093;s:3:"⤠";i:2094;s:3:"⤡";i:2095;s:3:"⤢";i:2096;s:3:"⤣";i:2097;s:3:"⤤";i:2098;s:3:"⤥";i:2099;s:3:"⤦";i:2100;s:3:"⤧";i:2101;s:3:"⤨";i:2102;s:3:"⤩";i:2103;s:3:"⤪";i:2104;s:3:"⤫";i:2105;s:3:"⤬";i:2106;s:3:"⤭";i:2107;s:3:"⤮";i:2108;s:3:"⤯";i:2109;s:3:"⤰";i:2110;s:3:"⤱";i:2111;s:3:"⤲";i:2112;s:3:"⤳";i:2113;s:3:"⤴";i:2114;s:3:"⤵";i:2115;s:3:"⤶";i:2116;s:3:"⤷";i:2117;s:3:"⤸";i:2118;s:3:"⤹";i:2119;s:3:"⤺";i:2120;s:3:"⤻";i:2121;s:3:"⤼";i:2122;s:3:"⤽";i:2123;s:3:"⤾";i:2124;s:3:"⤿";i:2125;s:3:"⥀";i:2126;s:3:"â¥";i:2127;s:3:"⥂";i:2128;s:3:"⥃";i:2129;s:3:"⥄";i:2130;s:3:"⥅";i:2131;s:3:"⥆";i:2132;s:3:"⥇";i:2133;s:3:"⥈";i:2134;s:3:"⥉";i:2135;s:3:"⥊";i:2136;s:3:"⥋";i:2137;s:3:"⥌";i:2138;s:3:"â¥";i:2139;s:3:"⥎";i:2140;s:3:"â¥";i:2141;s:3:"â¥";i:2142;s:3:"⥑";i:2143;s:3:"⥒";i:2144;s:3:"⥓";i:2145;s:3:"⥔";i:2146;s:3:"⥕";i:2147;s:3:"⥖";i:2148;s:3:"⥗";i:2149;s:3:"⥘";i:2150;s:3:"⥙";i:2151;s:3:"⥚";i:2152;s:3:"⥛";i:2153;s:3:"⥜";i:2154;s:3:"â¥";i:2155;s:3:"⥞";i:2156;s:3:"⥟";i:2157;s:3:"⥠";i:2158;s:3:"⥡";i:2159;s:3:"⥢";i:2160;s:3:"⥣";i:2161;s:3:"⥤";i:2162;s:3:"⥥";i:2163;s:3:"⥦";i:2164;s:3:"⥧";i:2165;s:3:"⥨";i:2166;s:3:"⥩";i:2167;s:3:"⥪";i:2168;s:3:"⥫";i:2169;s:3:"⥬";i:2170;s:3:"⥭";i:2171;s:3:"⥮";i:2172;s:3:"⥯";i:2173;s:3:"⥰";i:2174;s:3:"⥱";i:2175;s:3:"⥲";i:2176;s:3:"⥳";i:2177;s:3:"⥴";i:2178;s:3:"⥵";i:2179;s:3:"⥶";i:2180;s:3:"⥷";i:2181;s:3:"⥸";i:2182;s:3:"⥹";i:2183;s:3:"⥺";i:2184;s:3:"⥻";i:2185;s:3:"⥼";i:2186;s:3:"⥽";i:2187;s:3:"⥾";i:2188;s:3:"⥿";i:2189;s:3:"⦀";i:2190;s:3:"â¦";i:2191;s:3:"⦂";i:2192;s:3:"⦙";i:2193;s:3:"⦚";i:2194;s:3:"⦛";i:2195;s:3:"⦜";i:2196;s:3:"â¦";i:2197;s:3:"⦞";i:2198;s:3:"⦟";i:2199;s:3:"⦠";i:2200;s:3:"⦡";i:2201;s:3:"⦢";i:2202;s:3:"⦣";i:2203;s:3:"⦤";i:2204;s:3:"⦥";i:2205;s:3:"⦦";i:2206;s:3:"⦧";i:2207;s:3:"⦨";i:2208;s:3:"⦩";i:2209;s:3:"⦪";i:2210;s:3:"⦫";i:2211;s:3:"⦬";i:2212;s:3:"⦭";i:2213;s:3:"⦮";i:2214;s:3:"⦯";i:2215;s:3:"⦰";i:2216;s:3:"⦱";i:2217;s:3:"⦲";i:2218;s:3:"⦳";i:2219;s:3:"⦴";i:2220;s:3:"⦵";i:2221;s:3:"⦶";i:2222;s:3:"⦷";i:2223;s:3:"⦸";i:2224;s:3:"⦹";i:2225;s:3:"⦺";i:2226;s:3:"⦻";i:2227;s:3:"⦼";i:2228;s:3:"⦽";i:2229;s:3:"⦾";i:2230;s:3:"⦿";i:2231;s:3:"⧀";i:2232;s:3:"â§";i:2233;s:3:"⧂";i:2234;s:3:"⧃";i:2235;s:3:"⧄";i:2236;s:3:"⧅";i:2237;s:3:"⧆";i:2238;s:3:"⧇";i:2239;s:3:"⧈";i:2240;s:3:"⧉";i:2241;s:3:"⧊";i:2242;s:3:"⧋";i:2243;s:3:"⧌";i:2244;s:3:"â§";i:2245;s:3:"⧎";i:2246;s:3:"â§";i:2247;s:3:"â§";i:2248;s:3:"⧑";i:2249;s:3:"⧒";i:2250;s:3:"⧓";i:2251;s:3:"⧔";i:2252;s:3:"⧕";i:2253;s:3:"⧖";i:2254;s:3:"⧗";i:2255;s:3:"⧘";i:2256;s:3:"⧙";i:2257;s:3:"⧚";i:2258;s:3:"⧛";i:2259;s:3:"⧜";i:2260;s:3:"â§";i:2261;s:3:"⧞";i:2262;s:3:"⧟";i:2263;s:3:"⧠";i:2264;s:3:"⧡";i:2265;s:3:"⧢";i:2266;s:3:"⧣";i:2267;s:3:"⧤";i:2268;s:3:"⧥";i:2269;s:3:"⧦";i:2270;s:3:"⧧";i:2271;s:3:"⧨";i:2272;s:3:"⧩";i:2273;s:3:"⧪";i:2274;s:3:"⧫";i:2275;s:3:"⧬";i:2276;s:3:"⧭";i:2277;s:3:"⧮";i:2278;s:3:"⧯";i:2279;s:3:"⧰";i:2280;s:3:"⧱";i:2281;s:3:"⧲";i:2282;s:3:"⧳";i:2283;s:3:"⧴";i:2284;s:3:"⧵";i:2285;s:3:"⧶";i:2286;s:3:"⧷";i:2287;s:3:"⧸";i:2288;s:3:"⧹";i:2289;s:3:"⧺";i:2290;s:3:"⧻";i:2291;s:3:"⧾";i:2292;s:3:"⧿";i:2293;s:3:"⨀";i:2294;s:3:"â¨";i:2295;s:3:"⨂";i:2296;s:3:"⨃";i:2297;s:3:"⨄";i:2298;s:3:"⨅";i:2299;s:3:"⨆";i:2300;s:3:"⨇";i:2301;s:3:"⨈";i:2302;s:3:"⨉";i:2303;s:3:"⨊";i:2304;s:3:"⨋";i:2305;s:3:"â¨";i:2306;s:3:"⨎";i:2307;s:3:"â¨";i:2308;s:3:"â¨";i:2309;s:3:"⨑";i:2310;s:3:"⨒";i:2311;s:3:"⨓";i:2312;s:3:"⨔";i:2313;s:3:"⨕";i:2314;s:3:"⨖";i:2315;s:3:"⨗";i:2316;s:3:"⨘";i:2317;s:3:"⨙";i:2318;s:3:"⨚";i:2319;s:3:"⨛";i:2320;s:3:"⨜";i:2321;s:3:"â¨";i:2322;s:3:"⨞";i:2323;s:3:"⨟";i:2324;s:3:"⨠";i:2325;s:3:"⨡";i:2326;s:3:"⨢";i:2327;s:3:"⨣";i:2328;s:3:"⨤";i:2329;s:3:"⨥";i:2330;s:3:"⨦";i:2331;s:3:"⨧";i:2332;s:3:"⨨";i:2333;s:3:"⨩";i:2334;s:3:"⨪";i:2335;s:3:"⨫";i:2336;s:3:"⨬";i:2337;s:3:"⨭";i:2338;s:3:"⨮";i:2339;s:3:"⨯";i:2340;s:3:"⨰";i:2341;s:3:"⨱";i:2342;s:3:"⨲";i:2343;s:3:"⨳";i:2344;s:3:"⨴";i:2345;s:3:"⨵";i:2346;s:3:"⨶";i:2347;s:3:"⨷";i:2348;s:3:"⨸";i:2349;s:3:"⨹";i:2350;s:3:"⨺";i:2351;s:3:"⨻";i:2352;s:3:"⨼";i:2353;s:3:"⨽";i:2354;s:3:"⨾";i:2355;s:3:"⨿";i:2356;s:3:"â©€";i:2357;s:3:"â©";i:2358;s:3:"â©‚";i:2359;s:3:"⩃";i:2360;s:3:"â©„";i:2361;s:3:"â©…";i:2362;s:3:"⩆";i:2363;s:3:"⩇";i:2364;s:3:"⩈";i:2365;s:3:"⩉";i:2366;s:3:"â©Š";i:2367;s:3:"â©‹";i:2368;s:3:"â©Œ";i:2369;s:3:"â©";i:2370;s:3:"â©Ž";i:2371;s:3:"â©";i:2372;s:3:"â©";i:2373;s:3:"â©‘";i:2374;s:3:"â©’";i:2375;s:3:"â©“";i:2376;s:3:"â©”";i:2377;s:3:"â©•";i:2378;s:3:"â©–";i:2379;s:3:"â©—";i:2380;s:3:"⩘";i:2381;s:3:"â©™";i:2382;s:3:"â©š";i:2383;s:3:"â©›";i:2384;s:3:"â©œ";i:2385;s:3:"â©";i:2386;s:3:"â©ž";i:2387;s:3:"â©Ÿ";i:2388;s:3:"â© ";i:2389;s:3:"â©¡";i:2390;s:3:"â©¢";i:2391;s:3:"â©£";i:2392;s:3:"⩤";i:2393;s:3:"â©¥";i:2394;s:3:"⩦";i:2395;s:3:"⩧";i:2396;s:3:"⩨";i:2397;s:3:"â©©";i:2398;s:3:"⩪";i:2399;s:3:"â©«";i:2400;s:3:"⩬";i:2401;s:3:"â©­";i:2402;s:3:"â©®";i:2403;s:3:"⩯";i:2404;s:3:"â©°";i:2405;s:3:"⩱";i:2406;s:3:"⩲";i:2407;s:3:"⩳";i:2408;s:3:"â©·";i:2409;s:3:"⩸";i:2410;s:3:"⩹";i:2411;s:3:"⩺";i:2412;s:3:"â©»";i:2413;s:3:"⩼";i:2414;s:3:"⩽";i:2415;s:3:"⩾";i:2416;s:3:"â©¿";i:2417;s:3:"⪀";i:2418;s:3:"âª";i:2419;s:3:"⪂";i:2420;s:3:"⪃";i:2421;s:3:"⪄";i:2422;s:3:"⪅";i:2423;s:3:"⪆";i:2424;s:3:"⪇";i:2425;s:3:"⪈";i:2426;s:3:"⪉";i:2427;s:3:"⪊";i:2428;s:3:"⪋";i:2429;s:3:"⪌";i:2430;s:3:"âª";i:2431;s:3:"⪎";i:2432;s:3:"âª";i:2433;s:3:"âª";i:2434;s:3:"⪑";i:2435;s:3:"⪒";i:2436;s:3:"⪓";i:2437;s:3:"⪔";i:2438;s:3:"⪕";i:2439;s:3:"⪖";i:2440;s:3:"⪗";i:2441;s:3:"⪘";i:2442;s:3:"⪙";i:2443;s:3:"⪚";i:2444;s:3:"⪛";i:2445;s:3:"⪜";i:2446;s:3:"âª";i:2447;s:3:"⪞";i:2448;s:3:"⪟";i:2449;s:3:"⪠";i:2450;s:3:"⪡";i:2451;s:3:"⪢";i:2452;s:3:"⪣";i:2453;s:3:"⪤";i:2454;s:3:"⪥";i:2455;s:3:"⪦";i:2456;s:3:"⪧";i:2457;s:3:"⪨";i:2458;s:3:"⪩";i:2459;s:3:"⪪";i:2460;s:3:"⪫";i:2461;s:3:"⪬";i:2462;s:3:"⪭";i:2463;s:3:"⪮";i:2464;s:3:"⪯";i:2465;s:3:"⪰";i:2466;s:3:"⪱";i:2467;s:3:"⪲";i:2468;s:3:"⪳";i:2469;s:3:"⪴";i:2470;s:3:"⪵";i:2471;s:3:"⪶";i:2472;s:3:"⪷";i:2473;s:3:"⪸";i:2474;s:3:"⪹";i:2475;s:3:"⪺";i:2476;s:3:"⪻";i:2477;s:3:"⪼";i:2478;s:3:"⪽";i:2479;s:3:"⪾";i:2480;s:3:"⪿";i:2481;s:3:"â«€";i:2482;s:3:"â«";i:2483;s:3:"â«‚";i:2484;s:3:"⫃";i:2485;s:3:"â«„";i:2486;s:3:"â«…";i:2487;s:3:"⫆";i:2488;s:3:"⫇";i:2489;s:3:"⫈";i:2490;s:3:"⫉";i:2491;s:3:"â«Š";i:2492;s:3:"â«‹";i:2493;s:3:"â«Œ";i:2494;s:3:"â«";i:2495;s:3:"â«Ž";i:2496;s:3:"â«";i:2497;s:3:"â«";i:2498;s:3:"â«‘";i:2499;s:3:"â«’";i:2500;s:3:"â«“";i:2501;s:3:"â«”";i:2502;s:3:"â«•";i:2503;s:3:"â«–";i:2504;s:3:"â«—";i:2505;s:3:"⫘";i:2506;s:3:"â«™";i:2507;s:3:"â«š";i:2508;s:3:"â«›";i:2509;s:3:"â«";i:2510;s:3:"â«ž";i:2511;s:3:"â«Ÿ";i:2512;s:3:"â« ";i:2513;s:3:"â«¡";i:2514;s:3:"â«¢";i:2515;s:3:"â«£";i:2516;s:3:"⫤";i:2517;s:3:"â«¥";i:2518;s:3:"⫦";i:2519;s:3:"⫧";i:2520;s:3:"⫨";i:2521;s:3:"â«©";i:2522;s:3:"⫪";i:2523;s:3:"â««";i:2524;s:3:"⫬";i:2525;s:3:"â«­";i:2526;s:3:"â«®";i:2527;s:3:"⫯";i:2528;s:3:"â«°";i:2529;s:3:"⫱";i:2530;s:3:"⫲";i:2531;s:3:"⫳";i:2532;s:3:"â«´";i:2533;s:3:"⫵";i:2534;s:3:"⫶";i:2535;s:3:"â«·";i:2536;s:3:"⫸";i:2537;s:3:"⫹";i:2538;s:3:"⫺";i:2539;s:3:"â«»";i:2540;s:3:"⫼";i:2541;s:3:"⫽";i:2542;s:3:"⫾";i:2543;s:3:"â«¿";i:2544;s:3:"⬀";i:2545;s:3:"â¬";i:2546;s:3:"⬂";i:2547;s:3:"⬃";i:2548;s:3:"⬄";i:2549;s:3:"⬅";i:2550;s:3:"⬆";i:2551;s:3:"⬇";i:2552;s:3:"⬈";i:2553;s:3:"⬉";i:2554;s:3:"⬊";i:2555;s:3:"⬋";i:2556;s:3:"⬌";i:2557;s:3:"â¬";i:2558;s:3:"⬎";i:2559;s:3:"â¬";i:2560;s:3:"â¬";i:2561;s:3:"⬑";i:2562;s:3:"⬒";i:2563;s:3:"⬓";i:2564;s:3:"⬔";i:2565;s:3:"⬕";i:2566;s:3:"⬖";i:2567;s:3:"⬗";i:2568;s:3:"⬘";i:2569;s:3:"⬙";i:2570;s:3:"⬚";i:2571;s:3:"⬛";i:2572;s:3:"⬜";i:2573;s:3:"â¬";i:2574;s:3:"⬞";i:2575;s:3:"⬟";i:2576;s:3:"⬠";i:2577;s:3:"⬡";i:2578;s:3:"⬢";i:2579;s:3:"⬣";i:2580;s:3:"⬤";i:2581;s:3:"⬥";i:2582;s:3:"⬦";i:2583;s:3:"⬧";i:2584;s:3:"⬨";i:2585;s:3:"⬩";i:2586;s:3:"⬪";i:2587;s:3:"⬫";i:2588;s:3:"⬬";i:2589;s:3:"⬭";i:2590;s:3:"⬮";i:2591;s:3:"⬯";i:2592;s:3:"⬰";i:2593;s:3:"⬱";i:2594;s:3:"⬲";i:2595;s:3:"⬳";i:2596;s:3:"⬴";i:2597;s:3:"⬵";i:2598;s:3:"⬶";i:2599;s:3:"⬷";i:2600;s:3:"⬸";i:2601;s:3:"⬹";i:2602;s:3:"⬺";i:2603;s:3:"⬻";i:2604;s:3:"⬼";i:2605;s:3:"⬽";i:2606;s:3:"⬾";i:2607;s:3:"⬿";i:2608;s:3:"â­€";i:2609;s:3:"â­";i:2610;s:3:"â­‚";i:2611;s:3:"â­ƒ";i:2612;s:3:"â­„";i:2613;s:3:"â­…";i:2614;s:3:"â­†";i:2615;s:3:"â­‡";i:2616;s:3:"â­ˆ";i:2617;s:3:"â­‰";i:2618;s:3:"â­Š";i:2619;s:3:"â­‹";i:2620;s:3:"â­Œ";i:2621;s:3:"â­";i:2622;s:3:"â­‘";i:2623;s:3:"â­’";i:2624;s:3:"â­“";i:2625;s:3:"â­”";i:2626;s:3:"â­•";i:2627;s:3:"â­–";i:2628;s:3:"â­—";i:2629;s:3:"â­˜";i:2630;s:3:"â­™";i:2631;s:3:"â³¥";i:2632;s:3:"⳦";i:2633;s:3:"⳧";i:2634;s:3:"⳨";i:2635;s:3:"⳩";i:2636;s:3:"⳪";i:2637;s:3:"â €";i:2638;s:3:"â ";i:2639;s:3:"â ‚";i:2640;s:3:"â ƒ";i:2641;s:3:"â „";i:2642;s:3:"â …";i:2643;s:3:"â †";i:2644;s:3:"â ‡";i:2645;s:3:"â ˆ";i:2646;s:3:"â ‰";i:2647;s:3:"â Š";i:2648;s:3:"â ‹";i:2649;s:3:"â Œ";i:2650;s:3:"â ";i:2651;s:3:"â Ž";i:2652;s:3:"â ";i:2653;s:3:"â ";i:2654;s:3:"â ‘";i:2655;s:3:"â ’";i:2656;s:3:"â “";i:2657;s:3:"â ”";i:2658;s:3:"â •";i:2659;s:3:"â –";i:2660;s:3:"â —";i:2661;s:3:"â ˜";i:2662;s:3:"â ™";i:2663;s:3:"â š";i:2664;s:3:"â ›";i:2665;s:3:"â œ";i:2666;s:3:"â ";i:2667;s:3:"â ž";i:2668;s:3:"â Ÿ";i:2669;s:3:"â  ";i:2670;s:3:"â ¡";i:2671;s:3:"â ¢";i:2672;s:3:"â £";i:2673;s:3:"â ¤";i:2674;s:3:"â ¥";i:2675;s:3:"â ¦";i:2676;s:3:"â §";i:2677;s:3:"â ¨";i:2678;s:3:"â ©";i:2679;s:3:"â ª";i:2680;s:3:"â «";i:2681;s:3:"â ¬";i:2682;s:3:"â ­";i:2683;s:3:"â ®";i:2684;s:3:"â ¯";i:2685;s:3:"â °";i:2686;s:3:"â ±";i:2687;s:3:"â ²";i:2688;s:3:"â ³";i:2689;s:3:"â ´";i:2690;s:3:"â µ";i:2691;s:3:"â ¶";i:2692;s:3:"â ·";i:2693;s:3:"â ¸";i:2694;s:3:"â ¹";i:2695;s:3:"â º";i:2696;s:3:"â »";i:2697;s:3:"â ¼";i:2698;s:3:"â ½";i:2699;s:3:"â ¾";i:2700;s:3:"â ¿";i:2701;s:3:"â¡€";i:2702;s:3:"â¡";i:2703;s:3:"â¡‚";i:2704;s:3:"⡃";i:2705;s:3:"â¡„";i:2706;s:3:"â¡…";i:2707;s:3:"⡆";i:2708;s:3:"⡇";i:2709;s:3:"⡈";i:2710;s:3:"⡉";i:2711;s:3:"â¡Š";i:2712;s:3:"â¡‹";i:2713;s:3:"â¡Œ";i:2714;s:3:"â¡";i:2715;s:3:"â¡Ž";i:2716;s:3:"â¡";i:2717;s:3:"â¡";i:2718;s:3:"â¡‘";i:2719;s:3:"â¡’";i:2720;s:3:"â¡“";i:2721;s:3:"â¡”";i:2722;s:3:"â¡•";i:2723;s:3:"â¡–";i:2724;s:3:"â¡—";i:2725;s:3:"⡘";i:2726;s:3:"â¡™";i:2727;s:3:"â¡š";i:2728;s:3:"â¡›";i:2729;s:3:"â¡œ";i:2730;s:3:"â¡";i:2731;s:3:"â¡ž";i:2732;s:3:"â¡Ÿ";i:2733;s:3:"â¡ ";i:2734;s:3:"â¡¡";i:2735;s:3:"â¡¢";i:2736;s:3:"â¡£";i:2737;s:3:"⡤";i:2738;s:3:"â¡¥";i:2739;s:3:"⡦";i:2740;s:3:"⡧";i:2741;s:3:"⡨";i:2742;s:3:"â¡©";i:2743;s:3:"⡪";i:2744;s:3:"â¡«";i:2745;s:3:"⡬";i:2746;s:3:"â¡­";i:2747;s:3:"â¡®";i:2748;s:3:"⡯";i:2749;s:3:"â¡°";i:2750;s:3:"⡱";i:2751;s:3:"⡲";i:2752;s:3:"⡳";i:2753;s:3:"â¡´";i:2754;s:3:"⡵";i:2755;s:3:"⡶";i:2756;s:3:"â¡·";i:2757;s:3:"⡸";i:2758;s:3:"⡹";i:2759;s:3:"⡺";i:2760;s:3:"â¡»";i:2761;s:3:"⡼";i:2762;s:3:"⡽";i:2763;s:3:"⡾";i:2764;s:3:"â¡¿";i:2765;s:3:"⢀";i:2766;s:3:"â¢";i:2767;s:3:"⢂";i:2768;s:3:"⢃";i:2769;s:3:"⢄";i:2770;s:3:"⢅";i:2771;s:3:"⢆";i:2772;s:3:"⢇";i:2773;s:3:"⢈";i:2774;s:3:"⢉";i:2775;s:3:"⢊";i:2776;s:3:"⢋";i:2777;s:3:"⢌";i:2778;s:3:"â¢";i:2779;s:3:"⢎";i:2780;s:3:"â¢";i:2781;s:3:"â¢";i:2782;s:3:"⢑";i:2783;s:3:"⢒";i:2784;s:3:"⢓";i:2785;s:3:"⢔";i:2786;s:3:"⢕";i:2787;s:3:"⢖";i:2788;s:3:"⢗";i:2789;s:3:"⢘";i:2790;s:3:"⢙";i:2791;s:3:"⢚";i:2792;s:3:"⢛";i:2793;s:3:"⢜";i:2794;s:3:"â¢";i:2795;s:3:"⢞";i:2796;s:3:"⢟";i:2797;s:3:"⢠";i:2798;s:3:"⢡";i:2799;s:3:"⢢";i:2800;s:3:"⢣";i:2801;s:3:"⢤";i:2802;s:3:"⢥";i:2803;s:3:"⢦";i:2804;s:3:"⢧";i:2805;s:3:"⢨";i:2806;s:3:"⢩";i:2807;s:3:"⢪";i:2808;s:3:"⢫";i:2809;s:3:"⢬";i:2810;s:3:"⢭";i:2811;s:3:"⢮";i:2812;s:3:"⢯";i:2813;s:3:"⢰";i:2814;s:3:"⢱";i:2815;s:3:"⢲";i:2816;s:3:"⢳";i:2817;s:3:"⢴";i:2818;s:3:"⢵";i:2819;s:3:"⢶";i:2820;s:3:"⢷";i:2821;s:3:"⢸";i:2822;s:3:"⢹";i:2823;s:3:"⢺";i:2824;s:3:"⢻";i:2825;s:3:"⢼";i:2826;s:3:"⢽";i:2827;s:3:"⢾";i:2828;s:3:"⢿";i:2829;s:3:"⣀";i:2830;s:3:"â£";i:2831;s:3:"⣂";i:2832;s:3:"⣃";i:2833;s:3:"⣄";i:2834;s:3:"⣅";i:2835;s:3:"⣆";i:2836;s:3:"⣇";i:2837;s:3:"⣈";i:2838;s:3:"⣉";i:2839;s:3:"⣊";i:2840;s:3:"⣋";i:2841;s:3:"⣌";i:2842;s:3:"â£";i:2843;s:3:"⣎";i:2844;s:3:"â£";i:2845;s:3:"â£";i:2846;s:3:"⣑";i:2847;s:3:"⣒";i:2848;s:3:"⣓";i:2849;s:3:"⣔";i:2850;s:3:"⣕";i:2851;s:3:"⣖";i:2852;s:3:"⣗";i:2853;s:3:"⣘";i:2854;s:3:"⣙";i:2855;s:3:"⣚";i:2856;s:3:"⣛";i:2857;s:3:"⣜";i:2858;s:3:"â£";i:2859;s:3:"⣞";i:2860;s:3:"⣟";i:2861;s:3:"⣠";i:2862;s:3:"⣡";i:2863;s:3:"⣢";i:2864;s:3:"⣣";i:2865;s:3:"⣤";i:2866;s:3:"⣥";i:2867;s:3:"⣦";i:2868;s:3:"⣧";i:2869;s:3:"⣨";i:2870;s:3:"⣩";i:2871;s:3:"⣪";i:2872;s:3:"⣫";i:2873;s:3:"⣬";i:2874;s:3:"⣭";i:2875;s:3:"⣮";i:2876;s:3:"⣯";i:2877;s:3:"⣰";i:2878;s:3:"⣱";i:2879;s:3:"⣲";i:2880;s:3:"⣳";i:2881;s:3:"⣴";i:2882;s:3:"⣵";i:2883;s:3:"⣶";i:2884;s:3:"⣷";i:2885;s:3:"⣸";i:2886;s:3:"⣹";i:2887;s:3:"⣺";i:2888;s:3:"⣻";i:2889;s:3:"⣼";i:2890;s:3:"⣽";i:2891;s:3:"⣾";i:2892;s:3:"⣿";i:2893;s:3:"⚊";i:2894;s:3:"âš‹";i:2895;s:3:"⚌";i:2896;s:3:"âš";i:2897;s:3:"⚎";i:2898;s:3:"âš";i:2899;s:3:"☰";i:2900;s:3:"☱";i:2901;s:3:"☲";i:2902;s:3:"☳";i:2903;s:3:"☴";i:2904;s:3:"☵";i:2905;s:3:"☶";i:2906;s:3:"☷";i:2907;s:3:"ä·€";i:2908;s:3:"ä·";i:2909;s:3:"ä·‚";i:2910;s:3:"ä·ƒ";i:2911;s:3:"ä·„";i:2912;s:3:"ä·…";i:2913;s:3:"ä·†";i:2914;s:3:"ä·‡";i:2915;s:3:"ä·ˆ";i:2916;s:3:"ä·‰";i:2917;s:3:"ä·Š";i:2918;s:3:"ä·‹";i:2919;s:3:"ä·Œ";i:2920;s:3:"ä·";i:2921;s:3:"ä·Ž";i:2922;s:3:"ä·";i:2923;s:3:"ä·";i:2924;s:3:"ä·‘";i:2925;s:3:"ä·’";i:2926;s:3:"ä·“";i:2927;s:3:"ä·”";i:2928;s:3:"ä·•";i:2929;s:3:"ä·–";i:2930;s:3:"ä·—";i:2931;s:3:"ä·˜";i:2932;s:3:"ä·™";i:2933;s:3:"ä·š";i:2934;s:3:"ä·›";i:2935;s:3:"ä·œ";i:2936;s:3:"ä·";i:2937;s:3:"ä·ž";i:2938;s:3:"ä·Ÿ";i:2939;s:3:"ä· ";i:2940;s:3:"ä·¡";i:2941;s:3:"ä·¢";i:2942;s:3:"ä·£";i:2943;s:3:"ä·¤";i:2944;s:3:"ä·¥";i:2945;s:3:"ä·¦";i:2946;s:3:"ä·§";i:2947;s:3:"ä·¨";i:2948;s:3:"ä·©";i:2949;s:3:"ä·ª";i:2950;s:3:"ä·«";i:2951;s:3:"ä·¬";i:2952;s:3:"ä·­";i:2953;s:3:"ä·®";i:2954;s:3:"ä·¯";i:2955;s:3:"ä·°";i:2956;s:3:"ä·±";i:2957;s:3:"ä·²";i:2958;s:3:"ä·³";i:2959;s:3:"ä·´";i:2960;s:3:"ä·µ";i:2961;s:3:"ä·¶";i:2962;s:3:"ä··";i:2963;s:3:"ä·¸";i:2964;s:3:"ä·¹";i:2965;s:3:"ä·º";i:2966;s:3:"ä·»";i:2967;s:3:"ä·¼";i:2968;s:3:"ä·½";i:2969;s:3:"ä·¾";i:2970;s:3:"ä·¿";i:2971;s:4:"ðŒ€";i:2972;s:4:"ðŒ";i:2973;s:4:"ðŒ‚";i:2974;s:4:"ðŒƒ";i:2975;s:4:"ðŒ„";i:2976;s:4:"ðŒ…";i:2977;s:4:"ðŒ†";i:2978;s:4:"ðŒ‡";i:2979;s:4:"ðŒˆ";i:2980;s:4:"ðŒ‰";i:2981;s:4:"ðŒŠ";i:2982;s:4:"ðŒ‹";i:2983;s:4:"ðŒŒ";i:2984;s:4:"ðŒ";i:2985;s:4:"ðŒŽ";i:2986;s:4:"ðŒ";i:2987;s:4:"ðŒ";i:2988;s:4:"ðŒ‘";i:2989;s:4:"ðŒ’";i:2990;s:4:"ðŒ“";i:2991;s:4:"ðŒ”";i:2992;s:4:"ðŒ•";i:2993;s:4:"ðŒ–";i:2994;s:4:"ðŒ—";i:2995;s:4:"ðŒ˜";i:2996;s:4:"ðŒ™";i:2997;s:4:"ðŒš";i:2998;s:4:"ðŒ›";i:2999;s:4:"ðŒœ";i:3000;s:4:"ðŒ";i:3001;s:4:"ðŒž";i:3002;s:4:"ðŒŸ";i:3003;s:4:"ðŒ ";i:3004;s:4:"ðŒ¡";i:3005;s:4:"ðŒ¢";i:3006;s:4:"ðŒ£";i:3007;s:4:"ðŒ¤";i:3008;s:4:"ðŒ¥";i:3009;s:4:"ðŒ¦";i:3010;s:4:"ðŒ§";i:3011;s:4:"ðŒ¨";i:3012;s:4:"ðŒ©";i:3013;s:4:"ðŒª";i:3014;s:4:"ðŒ«";i:3015;s:4:"ðŒ¬";i:3016;s:4:"ðŒ­";i:3017;s:4:"ðŒ®";i:3018;s:4:"ðŒ¯";i:3019;s:4:"ðŒ°";i:3020;s:4:"ðŒ±";i:3021;s:4:"ðŒ²";i:3022;s:4:"ðŒ³";i:3023;s:4:"ðŒ´";i:3024;s:4:"ðŒµ";i:3025;s:4:"ðŒ¶";i:3026;s:4:"ðŒ·";i:3027;s:4:"ðŒ¸";i:3028;s:4:"ðŒ¹";i:3029;s:4:"ðŒº";i:3030;s:4:"ðŒ»";i:3031;s:4:"ðŒ¼";i:3032;s:4:"ðŒ½";i:3033;s:4:"ðŒ¾";i:3034;s:4:"ðŒ¿";i:3035;s:4:"ð€";i:3036;s:4:"ð";i:3037;s:4:"ð‚";i:3038;s:4:"ðƒ";i:3039;s:4:"ð„";i:3040;s:4:"ð…";i:3041;s:4:"ð†";i:3042;s:4:"ð‡";i:3043;s:4:"ðˆ";i:3044;s:4:"ð‰";i:3045;s:4:"ðŠ";i:3046;s:4:"ð‹";i:3047;s:4:"ðŒ";i:3048;s:4:"ð";i:3049;s:4:"ðŽ";i:3050;s:4:"ð";i:3051;s:4:"ð";i:3052;s:4:"ð‘";i:3053;s:4:"ð’";i:3054;s:4:"ð“";i:3055;s:4:"ð”";i:3056;s:4:"ð•";i:3057;s:4:"ð–";i:3058;s:3:"ê’";i:3059;s:3:"ê’‘";i:3060;s:3:"ê’’";i:3061;s:3:"ê’“";i:3062;s:3:"ê’”";i:3063;s:3:"ê’•";i:3064;s:3:"ê’–";i:3065;s:3:"ê’—";i:3066;s:3:"ê’˜";i:3067;s:3:"ê’™";i:3068;s:3:"ê’š";i:3069;s:3:"ê’›";i:3070;s:3:"ê’œ";i:3071;s:3:"ê’";i:3072;s:3:"ê’ž";i:3073;s:3:"ê’Ÿ";i:3074;s:3:"ê’ ";i:3075;s:3:"ê’¡";i:3076;s:3:"ê’¢";i:3077;s:3:"ê’£";i:3078;s:3:"ê’¤";i:3079;s:3:"ê’¥";i:3080;s:3:"ê’¦";i:3081;s:3:"ê’§";i:3082;s:3:"ê’¨";i:3083;s:3:"ê’©";i:3084;s:3:"ê’ª";i:3085;s:3:"ê’«";i:3086;s:3:"ê’¬";i:3087;s:3:"ê’­";i:3088;s:3:"ê’®";i:3089;s:3:"ê’¯";i:3090;s:3:"ê’°";i:3091;s:3:"ê’±";i:3092;s:3:"ê’²";i:3093;s:3:"ê’³";i:3094;s:3:"ê’´";i:3095;s:3:"ê’µ";i:3096;s:3:"ê’¶";i:3097;s:3:"ê’·";i:3098;s:3:"ê’¸";i:3099;s:3:"ê’¹";i:3100;s:3:"ê’º";i:3101;s:3:"ê’»";i:3102;s:3:"ê’¼";i:3103;s:3:"ê’½";i:3104;s:3:"ê’¾";i:3105;s:3:"ê’¿";i:3106;s:3:"ê“€";i:3107;s:3:"ê“";i:3108;s:3:"ê“‚";i:3109;s:3:"꓃";i:3110;s:3:"ê“„";i:3111;s:3:"ê“…";i:3112;s:3:"꓆";i:3113;s:4:"ð„·";i:3114;s:4:"ð„¸";i:3115;s:4:"ð„¹";i:3116;s:4:"ð„º";i:3117;s:4:"ð„»";i:3118;s:4:"ð„¼";i:3119;s:4:"ð„½";i:3120;s:4:"ð„¾";i:3121;s:4:"ð„¿";i:3122;s:4:"ð…¹";i:3123;s:4:"ð…º";i:3124;s:4:"ð…»";i:3125;s:4:"ð…¼";i:3126;s:4:"ð…½";i:3127;s:4:"ð…¾";i:3128;s:4:"ð…¿";i:3129;s:4:"ð†€";i:3130;s:4:"ð†";i:3131;s:4:"ð†‚";i:3132;s:4:"ð†ƒ";i:3133;s:4:"ð†„";i:3134;s:4:"ð†…";i:3135;s:4:"ð††";i:3136;s:4:"ð†‡";i:3137;s:4:"ð†ˆ";i:3138;s:4:"ð†‰";i:3139;s:4:"ð†";i:3140;s:4:"ð†‘";i:3141;s:4:"ð†’";i:3142;s:4:"ð†“";i:3143;s:4:"ð†”";i:3144;s:4:"ð†•";i:3145;s:4:"ð†–";i:3146;s:4:"ð†—";i:3147;s:4:"ð†˜";i:3148;s:4:"ð†™";i:3149;s:4:"ð†š";i:3150;s:4:"ð†›";i:3151;s:4:"ð‡";i:3152;s:4:"ð‡‘";i:3153;s:4:"ð‡’";i:3154;s:4:"ð‡“";i:3155;s:4:"ð‡”";i:3156;s:4:"ð‡•";i:3157;s:4:"ð‡–";i:3158;s:4:"ð‡—";i:3159;s:4:"ð‡˜";i:3160;s:4:"ð‡™";i:3161;s:4:"ð‡š";i:3162;s:4:"ð‡›";i:3163;s:4:"ð‡œ";i:3164;s:4:"ð‡";i:3165;s:4:"ð‡ž";i:3166;s:4:"ð‡Ÿ";i:3167;s:4:"ð‡ ";i:3168;s:4:"ð‡¡";i:3169;s:4:"ð‡¢";i:3170;s:4:"ð‡£";i:3171;s:4:"ð‡¤";i:3172;s:4:"ð‡¥";i:3173;s:4:"ð‡¦";i:3174;s:4:"ð‡§";i:3175;s:4:"ð‡¨";i:3176;s:4:"ð‡©";i:3177;s:4:"ð‡ª";i:3178;s:4:"ð‡«";i:3179;s:4:"ð‡¬";i:3180;s:4:"ð‡­";i:3181;s:4:"ð‡®";i:3182;s:4:"ð‡¯";i:3183;s:4:"ð‡°";i:3184;s:4:"ð‡±";i:3185;s:4:"ð‡²";i:3186;s:4:"ð‡³";i:3187;s:4:"ð‡´";i:3188;s:4:"ð‡µ";i:3189;s:4:"ð‡¶";i:3190;s:4:"ð‡·";i:3191;s:4:"ð‡¸";i:3192;s:4:"ð‡¹";i:3193;s:4:"ð‡º";i:3194;s:4:"ð‡»";i:3195;s:4:"ð‡¼";i:3196;s:4:"ð€€";i:3197;s:4:"ð€";i:3198;s:4:"ð€‚";i:3199;s:4:"ð€ƒ";i:3200;s:4:"ð€„";i:3201;s:4:"ð€…";i:3202;s:4:"ð€†";i:3203;s:4:"ð€‡";i:3204;s:4:"ð€ˆ";i:3205;s:4:"ð€‰";i:3206;s:4:"ð€Š";i:3207;s:4:"ð€‹";i:3208;s:4:"ð€Œ";i:3209;s:4:"ð€";i:3210;s:4:"ð€Ž";i:3211;s:4:"ð€";i:3212;s:4:"ð€";i:3213;s:4:"ð€‘";i:3214;s:4:"ð€’";i:3215;s:4:"ð€“";i:3216;s:4:"ð€”";i:3217;s:4:"ð€•";i:3218;s:4:"ð€–";i:3219;s:4:"ð€—";i:3220;s:4:"ð€˜";i:3221;s:4:"ð€™";i:3222;s:4:"ð€š";i:3223;s:4:"ð€›";i:3224;s:4:"ð€œ";i:3225;s:4:"ð€";i:3226;s:4:"ð€ž";i:3227;s:4:"ð€Ÿ";i:3228;s:4:"ð€ ";i:3229;s:4:"ð€¡";i:3230;s:4:"ð€¢";i:3231;s:4:"ð€£";i:3232;s:4:"ð€¤";i:3233;s:4:"ð€¥";i:3234;s:4:"ð€¦";i:3235;s:4:"ð€§";i:3236;s:4:"ð€¨";i:3237;s:4:"ð€©";i:3238;s:4:"ð€ª";i:3239;s:4:"ð€«";i:3240;s:4:"ð€¬";i:3241;s:4:"ð€­";i:3242;s:4:"ð€®";i:3243;s:4:"ð€¯";i:3244;s:4:"ð€°";i:3245;s:4:"ð€±";i:3246;s:4:"ð€²";i:3247;s:4:"ð€³";i:3248;s:4:"ð€´";i:3249;s:4:"ð€µ";i:3250;s:4:"ð€¶";i:3251;s:4:"ð€·";i:3252;s:4:"ð€¸";i:3253;s:4:"ð€¹";i:3254;s:4:"ð€º";i:3255;s:4:"ð€»";i:3256;s:4:"ð€¼";i:3257;s:4:"ð€½";i:3258;s:4:"ð€¾";i:3259;s:4:"ð€¿";i:3260;s:4:"ð€";i:3261;s:4:"ð";i:3262;s:4:"ð‚";i:3263;s:4:"ðƒ";i:3264;s:4:"ð„";i:3265;s:4:"ð…";i:3266;s:4:"ð†";i:3267;s:4:"ð‡";i:3268;s:4:"ðˆ";i:3269;s:4:"ð‰";i:3270;s:4:"ðŠ";i:3271;s:4:"ð‹";i:3272;s:4:"ðŒ";i:3273;s:4:"ð";i:3274;s:4:"ðŽ";i:3275;s:4:"ð";i:3276;s:4:"ð";i:3277;s:4:"ð‘";i:3278;s:4:"ð’";i:3279;s:4:"ð“";i:3280;s:4:"ð”";i:3281;s:4:"ð•";i:3282;s:4:"ð–";i:3283;s:4:"ð—";i:3284;s:4:"ð˜";i:3285;s:4:"ð™";i:3286;s:4:"ðš";i:3287;s:4:"ð›";i:3288;s:4:"ðœ";i:3289;s:4:"ð";i:3290;s:4:"ðž";i:3291;s:4:"ðŸ";i:3292;s:4:"ð ";i:3293;s:4:"ð¡";i:3294;s:4:"ð¢";i:3295;s:4:"ð£";i:3296;s:4:"ð¤";i:3297;s:4:"ð¥";i:3298;s:4:"ð¦";i:3299;s:4:"ð§";i:3300;s:4:"ð¨";i:3301;s:4:"ð©";i:3302;s:4:"ðª";i:3303;s:4:"ð«";i:3304;s:4:"ð¬";i:3305;s:4:"ð­";i:3306;s:4:"ð®";i:3307;s:4:"ð¯";i:3308;s:4:"ð°";i:3309;s:4:"ð±";i:3310;s:4:"ð²";i:3311;s:4:"ð³";i:3312;s:4:"ð´";i:3313;s:4:"ðµ";i:3314;s:4:"ð¶";i:3315;s:4:"ð·";i:3316;s:4:"ð¸";i:3317;s:4:"ð¹";i:3318;s:4:"ðº";i:3319;s:4:"ð»";i:3320;s:4:"ð¼";i:3321;s:4:"ð½";i:3322;s:4:"ð¾";i:3323;s:4:"ð¿";i:3324;s:4:"ð‚€";i:3325;s:4:"ð‚";i:3326;s:4:"ð‚‚";i:3327;s:4:"ð‚ƒ";i:3328;s:4:"ð‚„";i:3329;s:4:"ð‚…";i:3330;s:4:"ð‚†";i:3331;s:4:"ð‚‡";i:3332;s:4:"ð‚ˆ";i:3333;s:4:"ð‚‰";i:3334;s:4:"ð‚Š";i:3335;s:4:"ð‚‹";i:3336;s:4:"ð‚Œ";i:3337;s:4:"ð‚";i:3338;s:4:"ð‚Ž";i:3339;s:4:"ð‚";i:3340;s:4:"ð‚";i:3341;s:4:"ð‚‘";i:3342;s:4:"ð‚’";i:3343;s:4:"ð‚“";i:3344;s:4:"ð‚”";i:3345;s:4:"ð‚•";i:3346;s:4:"ð‚–";i:3347;s:4:"ð‚—";i:3348;s:4:"ð‚˜";i:3349;s:4:"ð‚™";i:3350;s:4:"ð‚š";i:3351;s:4:"ð‚›";i:3352;s:4:"ð‚œ";i:3353;s:4:"ð‚";i:3354;s:4:"ð‚ž";i:3355;s:4:"ð‚Ÿ";i:3356;s:4:"ð‚ ";i:3357;s:4:"ð‚¡";i:3358;s:4:"ð‚¢";i:3359;s:4:"ð‚£";i:3360;s:4:"ð‚¤";i:3361;s:4:"ð‚¥";i:3362;s:4:"ð‚¦";i:3363;s:4:"ð‚§";i:3364;s:4:"ð‚¨";i:3365;s:4:"ð‚©";i:3366;s:4:"ð‚ª";i:3367;s:4:"ð‚«";i:3368;s:4:"ð‚¬";i:3369;s:4:"ð‚­";i:3370;s:4:"ð‚®";i:3371;s:4:"ð‚¯";i:3372;s:4:"ð‚°";i:3373;s:4:"ð‚±";i:3374;s:4:"ð‚²";i:3375;s:4:"ð‚³";i:3376;s:4:"ð‚´";i:3377;s:4:"ð‚µ";i:3378;s:4:"ð‚¶";i:3379;s:4:"ð‚·";i:3380;s:4:"ð‚¸";i:3381;s:4:"ð‚¹";i:3382;s:4:"ð‚º";i:3383;s:4:"ð‚»";i:3384;s:4:"ð‚¼";i:3385;s:4:"ð‚½";i:3386;s:4:"ð‚¾";i:3387;s:4:"ð‚¿";i:3388;s:4:"ðƒ€";i:3389;s:4:"ðƒ";i:3390;s:4:"ðƒ‚";i:3391;s:4:"ðƒƒ";i:3392;s:4:"ðƒ„";i:3393;s:4:"ðƒ…";i:3394;s:4:"ðƒ†";i:3395;s:4:"ðƒ‡";i:3396;s:4:"ðƒˆ";i:3397;s:4:"ðƒ‰";i:3398;s:4:"ðƒŠ";i:3399;s:4:"ðƒ‹";i:3400;s:4:"ðƒŒ";i:3401;s:4:"ðƒ";i:3402;s:4:"ðƒŽ";i:3403;s:4:"ðƒ";i:3404;s:4:"ðƒ";i:3405;s:4:"ðƒ‘";i:3406;s:4:"ðƒ’";i:3407;s:4:"ðƒ“";i:3408;s:4:"ðƒ”";i:3409;s:4:"ðƒ•";i:3410;s:4:"ðƒ–";i:3411;s:4:"ðƒ—";i:3412;s:4:"ðƒ˜";i:3413;s:4:"ðƒ™";i:3414;s:4:"ðƒš";i:3415;s:4:"ðƒ›";i:3416;s:4:"ðƒœ";i:3417;s:4:"ðƒ";i:3418;s:4:"ðƒž";i:3419;s:4:"ðƒŸ";i:3420;s:4:"ðƒ ";i:3421;s:4:"ðƒ¡";i:3422;s:4:"ðƒ¢";i:3423;s:4:"ðƒ£";i:3424;s:4:"ðƒ¤";i:3425;s:4:"ðƒ¥";i:3426;s:4:"ðƒ¦";i:3427;s:4:"ðƒ§";i:3428;s:4:"ðƒ¨";i:3429;s:4:"ðƒ©";i:3430;s:4:"ðƒª";i:3431;s:4:"ðƒ«";i:3432;s:4:"ðƒ¬";i:3433;s:4:"ðƒ­";i:3434;s:4:"ðƒ®";i:3435;s:4:"ðƒ¯";i:3436;s:4:"ðƒ°";i:3437;s:4:"ðƒ±";i:3438;s:4:"ðƒ²";i:3439;s:4:"ðƒ³";i:3440;s:4:"ðƒ´";i:3441;s:4:"ðƒµ";i:3442;s:4:"ð„€";i:3443;s:4:"ð„";i:3444;s:4:"ð„‚";i:3445;s:4:"ð„ƒ";i:3446;s:4:"ð„„";i:3447;s:4:"ð„…";i:3448;s:4:"ð„†";i:3449;s:4:"ð„‡";i:3450;s:4:"ð„ˆ";i:3451;s:4:"ð„‰";i:3452;s:4:"ð„Š";i:3453;s:4:"ð„‹";i:3454;s:4:"ð„Œ";i:3455;s:4:"ð„";i:3456;s:4:"ð„Ž";i:3457;s:4:"ð„";i:3458;s:4:"ð„";i:3459;s:4:"ð„‘";i:3460;s:4:"ð„’";i:3461;s:4:"ð„“";i:3462;s:4:"ð„”";i:3463;s:4:"ð„•";i:3464;s:4:"ð„–";i:3465;s:4:"ð„—";i:3466;s:4:"ð„˜";i:3467;s:4:"ð„™";i:3468;s:4:"ð„š";i:3469;s:4:"ð„›";i:3470;s:4:"ð„œ";i:3471;s:4:"ð„";i:3472;s:4:"ð„ž";i:3473;s:4:"ð„Ÿ";i:3474;s:4:"ð„ ";i:3475;s:4:"ð„¡";i:3476;s:4:"ð„¢";i:3477;s:4:"ð„£";i:3478;s:4:"ð„¤";i:3479;s:4:"ð„¥";i:3480;s:4:"ð„¦";i:3481;s:3:"â™­";i:3482;s:3:"â™®";i:3483;s:3:"♯";i:3484;s:4:"ð„ª";i:3485;s:4:"ð„«";i:3486;s:4:"ð„¬";i:3487;s:4:"ð„­";i:3488;s:4:"ð„®";i:3489;s:4:"ð„¯";i:3490;s:4:"ð„°";i:3491;s:4:"ð„±";i:3492;s:4:"ð„²";i:3493;s:4:"ð„³";i:3494;s:4:"ð„´";i:3495;s:4:"ð„µ";i:3496;s:4:"ð„¶";i:3497;s:4:"ð„·";i:3498;s:4:"ð„¸";i:3499;s:4:"ð„¹";i:3500;s:4:"ð„©";i:3501;s:4:"ð„º";i:3502;s:4:"ð„»";i:3503;s:4:"ð„¼";i:3504;s:4:"ð„½";i:3505;s:4:"ð„¾";i:3506;s:4:"ð„¿";i:3507;s:4:"ð…€";i:3508;s:4:"ð…";i:3509;s:4:"ð…‚";i:3510;s:4:"ð…ƒ";i:3511;s:4:"ð…„";i:3512;s:4:"ð……";i:3513;s:4:"ð…†";i:3514;s:4:"ð…‡";i:3515;s:4:"ð…ˆ";i:3516;s:4:"ð…‰";i:3517;s:4:"ð…Š";i:3518;s:4:"ð…‹";i:3519;s:4:"ð…Œ";i:3520;s:4:"ð…";i:3521;s:4:"ð…Ž";i:3522;s:4:"ð…";i:3523;s:4:"ð…";i:3524;s:4:"ð…‘";i:3525;s:4:"ð…’";i:3526;s:4:"ð…“";i:3527;s:4:"ð…”";i:3528;s:4:"ð…•";i:3529;s:4:"ð…–";i:3530;s:4:"ð…—";i:3531;s:4:"ð…˜";i:3532;s:4:"ð…™";i:3533;s:4:"ð…š";i:3534;s:4:"ð…›";i:3535;s:4:"ð…œ";i:3536;s:4:"ð…";i:3537;s:4:"ð…ª";i:3538;s:4:"ð…«";i:3539;s:4:"ð…¬";i:3540;s:4:"ð†ƒ";i:3541;s:4:"ð†„";i:3542;s:4:"ð†Œ";i:3543;s:4:"ð†";i:3544;s:4:"ð†Ž";i:3545;s:4:"ð†";i:3546;s:4:"ð†";i:3547;s:4:"ð†‘";i:3548;s:4:"ð†’";i:3549;s:4:"ð†“";i:3550;s:4:"ð†”";i:3551;s:4:"ð†•";i:3552;s:4:"ð†–";i:3553;s:4:"ð†—";i:3554;s:4:"ð†˜";i:3555;s:4:"ð†™";i:3556;s:4:"ð†š";i:3557;s:4:"ð†›";i:3558;s:4:"ð†œ";i:3559;s:4:"ð†";i:3560;s:4:"ð†ž";i:3561;s:4:"ð†Ÿ";i:3562;s:4:"ð† ";i:3563;s:4:"ð†¡";i:3564;s:4:"ð†¢";i:3565;s:4:"ð†£";i:3566;s:4:"ð†¤";i:3567;s:4:"ð†¥";i:3568;s:4:"ð†¦";i:3569;s:4:"ð†§";i:3570;s:4:"ð†¨";i:3571;s:4:"ð†©";i:3572;s:4:"ð†®";i:3573;s:4:"ð†¯";i:3574;s:4:"ð†°";i:3575;s:4:"ð†±";i:3576;s:4:"ð†²";i:3577;s:4:"ð†³";i:3578;s:4:"ð†´";i:3579;s:4:"ð†µ";i:3580;s:4:"ð†¶";i:3581;s:4:"ð†·";i:3582;s:4:"ð†¸";i:3583;s:4:"ð†¹";i:3584;s:4:"ð†º";i:3585;s:4:"ð‡";i:3586;s:4:"ð‡‚";i:3587;s:4:"ð‡ƒ";i:3588;s:4:"ð‡„";i:3589;s:4:"ð‡…";i:3590;s:4:"ð‡†";i:3591;s:4:"ð‡‡";i:3592;s:4:"ð‡ˆ";i:3593;s:4:"ð‡‰";i:3594;s:4:"ð‡Š";i:3595;s:4:"ð‡‹";i:3596;s:4:"ð‡Œ";i:3597;s:4:"ð‡";i:3598;s:4:"ð‡Ž";i:3599;s:4:"ð‡";i:3600;s:4:"ð‡";i:3601;s:4:"ð‡‘";i:3602;s:4:"ð‡’";i:3603;s:4:"ð‡“";i:3604;s:4:"ð‡”";i:3605;s:4:"ð‡•";i:3606;s:4:"ð‡–";i:3607;s:4:"ð‡—";i:3608;s:4:"ð‡˜";i:3609;s:4:"ð‡™";i:3610;s:4:"ð‡š";i:3611;s:4:"ð‡›";i:3612;s:4:"ð‡œ";i:3613;s:4:"ð‡";i:3614;s:4:"ðˆ€";i:3615;s:4:"ðˆ";i:3616;s:4:"ðˆ‚";i:3617;s:4:"ðˆƒ";i:3618;s:4:"ðˆ„";i:3619;s:4:"ðˆ…";i:3620;s:4:"ðˆ†";i:3621;s:4:"ðˆ‡";i:3622;s:4:"ðˆˆ";i:3623;s:4:"ðˆ‰";i:3624;s:4:"ðˆŠ";i:3625;s:4:"ðˆ‹";i:3626;s:4:"ðˆŒ";i:3627;s:4:"ðˆ";i:3628;s:4:"ðˆŽ";i:3629;s:4:"ðˆ";i:3630;s:4:"ðˆ";i:3631;s:4:"ðˆ‘";i:3632;s:4:"ðˆ’";i:3633;s:4:"ðˆ“";i:3634;s:4:"ðˆ”";i:3635;s:4:"ðˆ•";i:3636;s:4:"ðˆ–";i:3637;s:4:"ðˆ—";i:3638;s:4:"ðˆ˜";i:3639;s:4:"ðˆ™";i:3640;s:4:"ðˆš";i:3641;s:4:"ðˆ›";i:3642;s:4:"ðˆœ";i:3643;s:4:"ðˆ";i:3644;s:4:"ðˆž";i:3645;s:4:"ðˆŸ";i:3646;s:4:"ðˆ ";i:3647;s:4:"ðˆ¡";i:3648;s:4:"ðˆ¢";i:3649;s:4:"ðˆ£";i:3650;s:4:"ðˆ¤";i:3651;s:4:"ðˆ¥";i:3652;s:4:"ðˆ¦";i:3653;s:4:"ðˆ§";i:3654;s:4:"ðˆ¨";i:3655;s:4:"ðˆ©";i:3656;s:4:"ðˆª";i:3657;s:4:"ðˆ«";i:3658;s:4:"ðˆ¬";i:3659;s:4:"ðˆ­";i:3660;s:4:"ðˆ®";i:3661;s:4:"ðˆ¯";i:3662;s:4:"ðˆ°";i:3663;s:4:"ðˆ±";i:3664;s:4:"ðˆ²";i:3665;s:4:"ðˆ³";i:3666;s:4:"ðˆ´";i:3667;s:4:"ðˆµ";i:3668;s:4:"ðˆ¶";i:3669;s:4:"ðˆ·";i:3670;s:4:"ðˆ¸";i:3671;s:4:"ðˆ¹";i:3672;s:4:"ðˆº";i:3673;s:4:"ðˆ»";i:3674;s:4:"ðˆ¼";i:3675;s:4:"ðˆ½";i:3676;s:4:"ðˆ¾";i:3677;s:4:"ðˆ¿";i:3678;s:4:"ð‰€";i:3679;s:4:"ð‰";i:3680;s:4:"ð‰…";i:3681;s:4:"🀀";i:3682;s:4:"ðŸ€";i:3683;s:4:"🀂";i:3684;s:4:"🀃";i:3685;s:4:"🀄";i:3686;s:4:"🀅";i:3687;s:4:"🀆";i:3688;s:4:"🀇";i:3689;s:4:"🀈";i:3690;s:4:"🀉";i:3691;s:4:"🀊";i:3692;s:4:"🀋";i:3693;s:4:"🀌";i:3694;s:4:"ðŸ€";i:3695;s:4:"🀎";i:3696;s:4:"ðŸ€";i:3697;s:4:"ðŸ€";i:3698;s:4:"🀑";i:3699;s:4:"🀒";i:3700;s:4:"🀓";i:3701;s:4:"🀔";i:3702;s:4:"🀕";i:3703;s:4:"🀖";i:3704;s:4:"🀗";i:3705;s:4:"🀘";i:3706;s:4:"🀙";i:3707;s:4:"🀚";i:3708;s:4:"🀛";i:3709;s:4:"🀜";i:3710;s:4:"ðŸ€";i:3711;s:4:"🀞";i:3712;s:4:"🀟";i:3713;s:4:"🀠";i:3714;s:4:"🀡";i:3715;s:4:"🀢";i:3716;s:4:"🀣";i:3717;s:4:"🀤";i:3718;s:4:"🀥";i:3719;s:4:"🀦";i:3720;s:4:"🀧";i:3721;s:4:"🀨";i:3722;s:4:"🀩";i:3723;s:4:"🀪";i:3724;s:4:"🀫";i:3725;s:4:"🀰";i:3726;s:4:"🀱";i:3727;s:4:"🀲";i:3728;s:4:"🀳";i:3729;s:4:"🀴";i:3730;s:4:"🀵";i:3731;s:4:"🀶";i:3732;s:4:"🀷";i:3733;s:4:"🀸";i:3734;s:4:"🀹";i:3735;s:4:"🀺";i:3736;s:4:"🀻";i:3737;s:4:"🀼";i:3738;s:4:"🀽";i:3739;s:4:"🀾";i:3740;s:4:"🀿";i:3741;s:4:"ðŸ€";i:3742;s:4:"ðŸ";i:3743;s:4:"ðŸ‚";i:3744;s:4:"ðŸƒ";i:3745;s:4:"ðŸ„";i:3746;s:4:"ðŸ…";i:3747;s:4:"ðŸ†";i:3748;s:4:"ðŸ‡";i:3749;s:4:"ðŸˆ";i:3750;s:4:"ðŸ‰";i:3751;s:4:"ðŸŠ";i:3752;s:4:"ðŸ‹";i:3753;s:4:"ðŸŒ";i:3754;s:4:"ðŸ";i:3755;s:4:"ðŸŽ";i:3756;s:4:"ðŸ";i:3757;s:4:"ðŸ";i:3758;s:4:"ðŸ‘";i:3759;s:4:"ðŸ’";i:3760;s:4:"ðŸ“";i:3761;s:4:"ðŸ”";i:3762;s:4:"ðŸ•";i:3763;s:4:"ðŸ–";i:3764;s:4:"ðŸ—";i:3765;s:4:"ðŸ˜";i:3766;s:4:"ðŸ™";i:3767;s:4:"ðŸš";i:3768;s:4:"ðŸ›";i:3769;s:4:"ðŸœ";i:3770;s:4:"ðŸ";i:3771;s:4:"ðŸž";i:3772;s:4:"ðŸŸ";i:3773;s:4:"ðŸ ";i:3774;s:4:"ðŸ¡";i:3775;s:4:"ðŸ¢";i:3776;s:4:"ðŸ£";i:3777;s:4:"ðŸ¤";i:3778;s:4:"ðŸ¥";i:3779;s:4:"ðŸ¦";i:3780;s:4:"ðŸ§";i:3781;s:4:"ðŸ¨";i:3782;s:4:"ðŸ©";i:3783;s:4:"ðŸª";i:3784;s:4:"ðŸ«";i:3785;s:4:"ðŸ¬";i:3786;s:4:"ðŸ­";i:3787;s:4:"ðŸ®";i:3788;s:4:"ðŸ¯";i:3789;s:4:"ðŸ°";i:3790;s:4:"ðŸ±";i:3791;s:4:"ðŸ²";i:3792;s:4:"ðŸ³";i:3793;s:4:"ðŸ´";i:3794;s:4:"ðŸµ";i:3795;s:4:"ðŸ¶";i:3796;s:4:"ðŸ·";i:3797;s:4:"ðŸ¸";i:3798;s:4:"ðŸ¹";i:3799;s:4:"ðŸº";i:3800;s:4:"ðŸ»";i:3801;s:4:"ðŸ¼";i:3802;s:4:"ðŸ½";i:3803;s:4:"ðŸ¾";i:3804;s:4:"ðŸ¿";i:3805;s:4:"🂀";i:3806;s:4:"ðŸ‚";i:3807;s:4:"🂂";i:3808;s:4:"🂃";i:3809;s:4:"🂄";i:3810;s:4:"🂅";i:3811;s:4:"🂆";i:3812;s:4:"🂇";i:3813;s:4:"🂈";i:3814;s:4:"🂉";i:3815;s:4:"🂊";i:3816;s:4:"🂋";i:3817;s:4:"🂌";i:3818;s:4:"ðŸ‚";i:3819;s:4:"🂎";i:3820;s:4:"ðŸ‚";i:3821;s:4:"ðŸ‚";i:3822;s:4:"🂑";i:3823;s:4:"🂒";i:3824;s:4:"🂓";i:3825;s:4:"🂠";i:3826;s:4:"🂡";i:3827;s:4:"🂢";i:3828;s:4:"🂣";i:3829;s:4:"🂤";i:3830;s:4:"🂥";i:3831;s:4:"🂦";i:3832;s:4:"🂧";i:3833;s:4:"🂨";i:3834;s:4:"🂩";i:3835;s:4:"🂪";i:3836;s:4:"🂫";i:3837;s:4:"🂬";i:3838;s:4:"🂭";i:3839;s:4:"🂮";i:3840;s:4:"🂱";i:3841;s:4:"🂲";i:3842;s:4:"🂳";i:3843;s:4:"🂴";i:3844;s:4:"🂵";i:3845;s:4:"🂶";i:3846;s:4:"🂷";i:3847;s:4:"🂸";i:3848;s:4:"🂹";i:3849;s:4:"🂺";i:3850;s:4:"🂻";i:3851;s:4:"🂼";i:3852;s:4:"🂽";i:3853;s:4:"🂾";i:3854;s:4:"ðŸƒ";i:3855;s:4:"🃂";i:3856;s:4:"🃃";i:3857;s:4:"🃄";i:3858;s:4:"🃅";i:3859;s:4:"🃆";i:3860;s:4:"🃇";i:3861;s:4:"🃈";i:3862;s:4:"🃉";i:3863;s:4:"🃊";i:3864;s:4:"🃋";i:3865;s:4:"🃌";i:3866;s:4:"ðŸƒ";i:3867;s:4:"🃎";i:3868;s:4:"ðŸƒ";i:3869;s:4:"🃑";i:3870;s:4:"🃒";i:3871;s:4:"🃓";i:3872;s:4:"🃔";i:3873;s:4:"🃕";i:3874;s:4:"🃖";i:3875;s:4:"🃗";i:3876;s:4:"🃘";i:3877;s:4:"🃙";i:3878;s:4:"🃚";i:3879;s:4:"🃛";i:3880;s:4:"🃜";i:3881;s:4:"ðŸƒ";i:3882;s:4:"🃞";i:3883;s:4:"🃟";i:3884;s:4:"🌀";i:3885;s:4:"ðŸŒ";i:3886;s:4:"🌂";i:3887;s:4:"🌃";i:3888;s:4:"🌄";i:3889;s:4:"🌅";i:3890;s:4:"🌆";i:3891;s:4:"🌇";i:3892;s:4:"🌈";i:3893;s:4:"🌉";i:3894;s:4:"🌊";i:3895;s:4:"🌋";i:3896;s:4:"🌌";i:3897;s:4:"ðŸŒ";i:3898;s:4:"🌎";i:3899;s:4:"ðŸŒ";i:3900;s:4:"ðŸŒ";i:3901;s:4:"🌑";i:3902;s:4:"🌒";i:3903;s:4:"🌓";i:3904;s:4:"🌔";i:3905;s:4:"🌕";i:3906;s:4:"🌖";i:3907;s:4:"🌗";i:3908;s:4:"🌘";i:3909;s:4:"🌙";i:3910;s:4:"🌚";i:3911;s:4:"🌛";i:3912;s:4:"🌜";i:3913;s:4:"ðŸŒ";i:3914;s:4:"🌞";i:3915;s:4:"🌟";i:3916;s:4:"🌠";i:3917;s:4:"🌰";i:3918;s:4:"🌱";i:3919;s:4:"🌲";i:3920;s:4:"🌳";i:3921;s:4:"🌴";i:3922;s:4:"🌵";i:3923;s:4:"🌷";i:3924;s:4:"🌸";i:3925;s:4:"🌹";i:3926;s:4:"🌺";i:3927;s:4:"🌻";i:3928;s:4:"🌼";i:3929;s:4:"🌽";i:3930;s:4:"🌾";i:3931;s:4:"🌿";i:3932;s:4:"ðŸ€";i:3933;s:4:"ðŸ";i:3934;s:4:"ðŸ‚";i:3935;s:4:"ðŸƒ";i:3936;s:4:"ðŸ„";i:3937;s:4:"ðŸ…";i:3938;s:4:"ðŸ†";i:3939;s:4:"ðŸ‡";i:3940;s:4:"ðŸˆ";i:3941;s:4:"ðŸ‰";i:3942;s:4:"ðŸŠ";i:3943;s:4:"ðŸ‹";i:3944;s:4:"ðŸŒ";i:3945;s:4:"ðŸ";i:3946;s:4:"ðŸŽ";i:3947;s:4:"ðŸ";i:3948;s:4:"ðŸ";i:3949;s:4:"ðŸ‘";i:3950;s:4:"ðŸ’";i:3951;s:4:"ðŸ“";i:3952;s:4:"ðŸ”";i:3953;s:4:"ðŸ•";i:3954;s:4:"ðŸ–";i:3955;s:4:"ðŸ—";i:3956;s:4:"ðŸ˜";i:3957;s:4:"ðŸ™";i:3958;s:4:"ðŸš";i:3959;s:4:"ðŸ›";i:3960;s:4:"ðŸœ";i:3961;s:4:"ðŸ";i:3962;s:4:"ðŸž";i:3963;s:4:"ðŸŸ";i:3964;s:4:"ðŸ ";i:3965;s:4:"ðŸ¡";i:3966;s:4:"ðŸ¢";i:3967;s:4:"ðŸ£";i:3968;s:4:"ðŸ¤";i:3969;s:4:"ðŸ¥";i:3970;s:4:"ðŸ¦";i:3971;s:4:"ðŸ§";i:3972;s:4:"ðŸ¨";i:3973;s:4:"ðŸ©";i:3974;s:4:"ðŸª";i:3975;s:4:"ðŸ«";i:3976;s:4:"ðŸ¬";i:3977;s:4:"ðŸ­";i:3978;s:4:"ðŸ®";i:3979;s:4:"ðŸ¯";i:3980;s:4:"ðŸ°";i:3981;s:4:"ðŸ±";i:3982;s:4:"ðŸ²";i:3983;s:4:"ðŸ³";i:3984;s:4:"ðŸ´";i:3985;s:4:"ðŸµ";i:3986;s:4:"ðŸ¶";i:3987;s:4:"ðŸ·";i:3988;s:4:"ðŸ¸";i:3989;s:4:"ðŸ¹";i:3990;s:4:"ðŸº";i:3991;s:4:"ðŸ»";i:3992;s:4:"ðŸ¼";i:3993;s:4:"🎀";i:3994;s:4:"ðŸŽ";i:3995;s:4:"🎂";i:3996;s:4:"🎃";i:3997;s:4:"🎄";i:3998;s:4:"🎅";i:3999;s:4:"🎆";i:4000;s:4:"🎇";i:4001;s:4:"🎈";i:4002;s:4:"🎉";i:4003;s:4:"🎊";i:4004;s:4:"🎋";i:4005;s:4:"🎌";i:4006;s:4:"ðŸŽ";i:4007;s:4:"🎎";i:4008;s:4:"ðŸŽ";i:4009;s:4:"ðŸŽ";i:4010;s:4:"🎑";i:4011;s:4:"🎒";i:4012;s:4:"🎓";i:4013;s:4:"🎠";i:4014;s:4:"🎡";i:4015;s:4:"🎢";i:4016;s:4:"🎣";i:4017;s:4:"🎤";i:4018;s:4:"🎥";i:4019;s:4:"🎦";i:4020;s:4:"🎧";i:4021;s:4:"🎨";i:4022;s:4:"🎩";i:4023;s:4:"🎪";i:4024;s:4:"🎫";i:4025;s:4:"🎬";i:4026;s:4:"🎭";i:4027;s:4:"🎮";i:4028;s:4:"🎯";i:4029;s:4:"🎰";i:4030;s:4:"🎱";i:4031;s:4:"🎲";i:4032;s:4:"🎳";i:4033;s:4:"🎴";i:4034;s:4:"🎵";i:4035;s:4:"🎶";i:4036;s:4:"🎷";i:4037;s:4:"🎸";i:4038;s:4:"🎹";i:4039;s:4:"🎺";i:4040;s:4:"🎻";i:4041;s:4:"🎼";i:4042;s:4:"🎽";i:4043;s:4:"🎾";i:4044;s:4:"🎿";i:4045;s:4:"ðŸ€";i:4046;s:4:"ðŸ";i:4047;s:4:"ðŸ‚";i:4048;s:4:"ðŸƒ";i:4049;s:4:"ðŸ„";i:4050;s:4:"ðŸ†";i:4051;s:4:"ðŸ‡";i:4052;s:4:"ðŸˆ";i:4053;s:4:"ðŸ‰";i:4054;s:4:"ðŸŠ";i:4055;s:4:"ðŸ ";i:4056;s:4:"ðŸ¡";i:4057;s:4:"ðŸ¢";i:4058;s:4:"ðŸ£";i:4059;s:4:"ðŸ¤";i:4060;s:4:"ðŸ¥";i:4061;s:4:"ðŸ¦";i:4062;s:4:"ðŸ§";i:4063;s:4:"ðŸ¨";i:4064;s:4:"ðŸ©";i:4065;s:4:"ðŸª";i:4066;s:4:"ðŸ«";i:4067;s:4:"ðŸ¬";i:4068;s:4:"ðŸ­";i:4069;s:4:"ðŸ®";i:4070;s:4:"ðŸ¯";i:4071;s:4:"ðŸ°";i:4072;s:4:"ðŸ€";i:4073;s:4:"ðŸ";i:4074;s:4:"ðŸ‚";i:4075;s:4:"ðŸƒ";i:4076;s:4:"ðŸ„";i:4077;s:4:"ðŸ…";i:4078;s:4:"ðŸ†";i:4079;s:4:"ðŸ‡";i:4080;s:4:"ðŸˆ";i:4081;s:4:"ðŸ‰";i:4082;s:4:"ðŸŠ";i:4083;s:4:"ðŸ‹";i:4084;s:4:"ðŸŒ";i:4085;s:4:"ðŸ";i:4086;s:4:"ðŸŽ";i:4087;s:4:"ðŸ";i:4088;s:4:"ðŸ";i:4089;s:4:"ðŸ‘";i:4090;s:4:"ðŸ’";i:4091;s:4:"ðŸ“";i:4092;s:4:"ðŸ”";i:4093;s:4:"ðŸ•";i:4094;s:4:"ðŸ–";i:4095;s:4:"ðŸ—";i:4096;s:4:"ðŸ˜";i:4097;s:4:"ðŸ™";i:4098;s:4:"ðŸš";i:4099;s:4:"ðŸ›";i:4100;s:4:"ðŸœ";i:4101;s:4:"ðŸ";i:4102;s:4:"ðŸž";i:4103;s:4:"ðŸŸ";i:4104;s:4:"ðŸ ";i:4105;s:4:"ðŸ¡";i:4106;s:4:"ðŸ¢";i:4107;s:4:"ðŸ£";i:4108;s:4:"ðŸ¤";i:4109;s:4:"ðŸ¥";i:4110;s:4:"ðŸ¦";i:4111;s:4:"ðŸ§";i:4112;s:4:"ðŸ¨";i:4113;s:4:"ðŸ©";i:4114;s:4:"ðŸª";i:4115;s:4:"ðŸ«";i:4116;s:4:"ðŸ¬";i:4117;s:4:"ðŸ­";i:4118;s:4:"ðŸ®";i:4119;s:4:"ðŸ¯";i:4120;s:4:"ðŸ°";i:4121;s:4:"ðŸ±";i:4122;s:4:"ðŸ²";i:4123;s:4:"ðŸ³";i:4124;s:4:"ðŸ´";i:4125;s:4:"ðŸµ";i:4126;s:4:"ðŸ¶";i:4127;s:4:"ðŸ·";i:4128;s:4:"ðŸ¸";i:4129;s:4:"ðŸ¹";i:4130;s:4:"ðŸº";i:4131;s:4:"ðŸ»";i:4132;s:4:"ðŸ¼";i:4133;s:4:"ðŸ½";i:4134;s:4:"ðŸ¾";i:4135;s:4:"👀";i:4136;s:4:"👂";i:4137;s:4:"👃";i:4138;s:4:"👄";i:4139;s:4:"👅";i:4140;s:4:"👆";i:4141;s:4:"👇";i:4142;s:4:"👈";i:4143;s:4:"👉";i:4144;s:4:"👊";i:4145;s:4:"👋";i:4146;s:4:"👌";i:4147;s:4:"ðŸ‘";i:4148;s:4:"👎";i:4149;s:4:"ðŸ‘";i:4150;s:4:"ðŸ‘";i:4151;s:4:"👑";i:4152;s:4:"👒";i:4153;s:4:"👓";i:4154;s:4:"👔";i:4155;s:4:"👕";i:4156;s:4:"👖";i:4157;s:4:"👗";i:4158;s:4:"👘";i:4159;s:4:"👙";i:4160;s:4:"👚";i:4161;s:4:"👛";i:4162;s:4:"👜";i:4163;s:4:"ðŸ‘";i:4164;s:4:"👞";i:4165;s:4:"👟";i:4166;s:4:"👠";i:4167;s:4:"👡";i:4168;s:4:"👢";i:4169;s:4:"👣";i:4170;s:4:"👤";i:4171;s:4:"👥";i:4172;s:4:"👦";i:4173;s:4:"👧";i:4174;s:4:"👨";i:4175;s:4:"👩";i:4176;s:4:"👪";i:4177;s:4:"👫";i:4178;s:4:"👬";i:4179;s:4:"👭";i:4180;s:4:"👮";i:4181;s:4:"👯";i:4182;s:4:"👰";i:4183;s:4:"👱";i:4184;s:4:"👲";i:4185;s:4:"👳";i:4186;s:4:"👴";i:4187;s:4:"👵";i:4188;s:4:"👶";i:4189;s:4:"👷";i:4190;s:4:"👸";i:4191;s:4:"👹";i:4192;s:4:"👺";i:4193;s:4:"👻";i:4194;s:4:"👼";i:4195;s:4:"👽";i:4196;s:4:"👾";i:4197;s:4:"👿";i:4198;s:4:"💀";i:4199;s:4:"ðŸ’";i:4200;s:4:"💂";i:4201;s:4:"💃";i:4202;s:4:"💄";i:4203;s:4:"💅";i:4204;s:4:"💆";i:4205;s:4:"💇";i:4206;s:4:"💈";i:4207;s:4:"💉";i:4208;s:4:"💊";i:4209;s:4:"💋";i:4210;s:4:"💌";i:4211;s:4:"ðŸ’";i:4212;s:4:"💎";i:4213;s:4:"ðŸ’";i:4214;s:4:"ðŸ’";i:4215;s:4:"💑";i:4216;s:4:"💒";i:4217;s:4:"💓";i:4218;s:4:"💔";i:4219;s:4:"💕";i:4220;s:4:"💖";i:4221;s:4:"💗";i:4222;s:4:"💘";i:4223;s:4:"💙";i:4224;s:4:"💚";i:4225;s:4:"💛";i:4226;s:4:"💜";i:4227;s:4:"ðŸ’";i:4228;s:4:"💞";i:4229;s:4:"💟";i:4230;s:4:"💠";i:4231;s:4:"💡";i:4232;s:4:"💢";i:4233;s:4:"💣";i:4234;s:4:"💤";i:4235;s:4:"💥";i:4236;s:4:"💦";i:4237;s:4:"💧";i:4238;s:4:"💨";i:4239;s:4:"💩";i:4240;s:4:"💪";i:4241;s:4:"💫";i:4242;s:4:"💬";i:4243;s:4:"💭";i:4244;s:4:"💮";i:4245;s:4:"💯";i:4246;s:4:"💰";i:4247;s:4:"💱";i:4248;s:4:"💲";i:4249;s:4:"💳";i:4250;s:4:"💴";i:4251;s:4:"💵";i:4252;s:4:"💶";i:4253;s:4:"💷";i:4254;s:4:"💸";i:4255;s:4:"💹";i:4256;s:4:"💺";i:4257;s:4:"💻";i:4258;s:4:"💼";i:4259;s:4:"💽";i:4260;s:4:"💾";i:4261;s:4:"💿";i:4262;s:4:"📀";i:4263;s:4:"ðŸ“";i:4264;s:4:"📂";i:4265;s:4:"📃";i:4266;s:4:"📄";i:4267;s:4:"📅";i:4268;s:4:"📆";i:4269;s:4:"📇";i:4270;s:4:"📈";i:4271;s:4:"📉";i:4272;s:4:"📊";i:4273;s:4:"📋";i:4274;s:4:"📌";i:4275;s:4:"ðŸ“";i:4276;s:4:"📎";i:4277;s:4:"ðŸ“";i:4278;s:4:"ðŸ“";i:4279;s:4:"📑";i:4280;s:4:"📒";i:4281;s:4:"📓";i:4282;s:4:"📔";i:4283;s:4:"📕";i:4284;s:4:"📖";i:4285;s:4:"📗";i:4286;s:4:"📘";i:4287;s:4:"📙";i:4288;s:4:"📚";i:4289;s:4:"📛";i:4290;s:4:"📜";i:4291;s:4:"ðŸ“";i:4292;s:4:"📞";i:4293;s:4:"📟";i:4294;s:4:"📠";i:4295;s:4:"📡";i:4296;s:4:"📢";i:4297;s:4:"📣";i:4298;s:4:"📤";i:4299;s:4:"📥";i:4300;s:4:"📦";i:4301;s:4:"📧";i:4302;s:4:"📨";i:4303;s:4:"📩";i:4304;s:4:"📪";i:4305;s:4:"📫";i:4306;s:4:"📬";i:4307;s:4:"📭";i:4308;s:4:"📮";i:4309;s:4:"📯";i:4310;s:4:"📰";i:4311;s:4:"📱";i:4312;s:4:"📲";i:4313;s:4:"📳";i:4314;s:4:"📴";i:4315;s:4:"📵";i:4316;s:4:"📶";i:4317;s:4:"📷";i:4318;s:4:"📹";i:4319;s:4:"📺";i:4320;s:4:"📻";i:4321;s:4:"📼";i:4322;s:4:"🔀";i:4323;s:4:"ðŸ”";i:4324;s:4:"🔂";i:4325;s:4:"🔃";i:4326;s:4:"🔄";i:4327;s:4:"🔅";i:4328;s:4:"🔆";i:4329;s:4:"🔇";i:4330;s:4:"🔈";i:4331;s:4:"🔉";i:4332;s:4:"🔊";i:4333;s:4:"🔋";i:4334;s:4:"🔌";i:4335;s:4:"ðŸ”";i:4336;s:4:"🔎";i:4337;s:4:"ðŸ”";i:4338;s:4:"ðŸ”";i:4339;s:4:"🔑";i:4340;s:4:"🔒";i:4341;s:4:"🔓";i:4342;s:4:"🔔";i:4343;s:4:"🔕";i:4344;s:4:"🔖";i:4345;s:4:"🔗";i:4346;s:4:"🔘";i:4347;s:4:"🔙";i:4348;s:4:"🔚";i:4349;s:4:"🔛";i:4350;s:4:"🔜";i:4351;s:4:"ðŸ”";i:4352;s:4:"🔞";i:4353;s:4:"🔟";i:4354;s:4:"🔠";i:4355;s:4:"🔡";i:4356;s:4:"🔢";i:4357;s:4:"🔣";i:4358;s:4:"🔤";i:4359;s:4:"🔥";i:4360;s:4:"🔦";i:4361;s:4:"🔧";i:4362;s:4:"🔨";i:4363;s:4:"🔩";i:4364;s:4:"🔪";i:4365;s:4:"🔫";i:4366;s:4:"🔬";i:4367;s:4:"🔭";i:4368;s:4:"🔮";i:4369;s:4:"🔯";i:4370;s:4:"🔰";i:4371;s:4:"🔱";i:4372;s:4:"🔲";i:4373;s:4:"🔳";i:4374;s:4:"🔴";i:4375;s:4:"🔵";i:4376;s:4:"🔶";i:4377;s:4:"🔷";i:4378;s:4:"🔸";i:4379;s:4:"🔹";i:4380;s:4:"🔺";i:4381;s:4:"🔻";i:4382;s:4:"🔼";i:4383;s:4:"🔽";i:4384;s:4:"ðŸ•";i:4385;s:4:"🕑";i:4386;s:4:"🕒";i:4387;s:4:"🕓";i:4388;s:4:"🕔";i:4389;s:4:"🕕";i:4390;s:4:"🕖";i:4391;s:4:"🕗";i:4392;s:4:"🕘";i:4393;s:4:"🕙";i:4394;s:4:"🕚";i:4395;s:4:"🕛";i:4396;s:4:"🕜";i:4397;s:4:"ðŸ•";i:4398;s:4:"🕞";i:4399;s:4:"🕟";i:4400;s:4:"🕠";i:4401;s:4:"🕡";i:4402;s:4:"🕢";i:4403;s:4:"🕣";i:4404;s:4:"🕤";i:4405;s:4:"🕥";i:4406;s:4:"🕦";i:4407;s:4:"🕧";i:4408;s:4:"🗻";i:4409;s:4:"🗼";i:4410;s:4:"🗽";i:4411;s:4:"🗾";i:4412;s:4:"🗿";i:4413;s:4:"ðŸ˜";i:4414;s:4:"😂";i:4415;s:4:"😃";i:4416;s:4:"😄";i:4417;s:4:"😅";i:4418;s:4:"😆";i:4419;s:4:"😇";i:4420;s:4:"😈";i:4421;s:4:"😉";i:4422;s:4:"😊";i:4423;s:4:"😋";i:4424;s:4:"😌";i:4425;s:4:"ðŸ˜";i:4426;s:4:"😎";i:4427;s:4:"ðŸ˜";i:4428;s:4:"ðŸ˜";i:4429;s:4:"😒";i:4430;s:4:"😓";i:4431;s:4:"😔";i:4432;s:4:"😖";i:4433;s:4:"😘";i:4434;s:4:"😚";i:4435;s:4:"😜";i:4436;s:4:"ðŸ˜";i:4437;s:4:"😞";i:4438;s:4:"😠";i:4439;s:4:"😡";i:4440;s:4:"😢";i:4441;s:4:"😣";i:4442;s:4:"😤";i:4443;s:4:"😥";i:4444;s:4:"😨";i:4445;s:4:"😩";i:4446;s:4:"😪";i:4447;s:4:"😫";i:4448;s:4:"😭";i:4449;s:4:"😰";i:4450;s:4:"😱";i:4451;s:4:"😲";i:4452;s:4:"😳";i:4453;s:4:"😵";i:4454;s:4:"😶";i:4455;s:4:"😷";i:4456;s:4:"😸";i:4457;s:4:"😹";i:4458;s:4:"😺";i:4459;s:4:"😻";i:4460;s:4:"😼";i:4461;s:4:"😽";i:4462;s:4:"😾";i:4463;s:4:"😿";i:4464;s:4:"🙀";i:4465;s:4:"🙅";i:4466;s:4:"🙆";i:4467;s:4:"🙇";i:4468;s:4:"🙈";i:4469;s:4:"🙉";i:4470;s:4:"🙊";i:4471;s:4:"🙋";i:4472;s:4:"🙌";i:4473;s:4:"ðŸ™";i:4474;s:4:"🙎";i:4475;s:4:"ðŸ™";i:4476;s:4:"🚀";i:4477;s:4:"ðŸš";i:4478;s:4:"🚂";i:4479;s:4:"🚃";i:4480;s:4:"🚄";i:4481;s:4:"🚅";i:4482;s:4:"🚆";i:4483;s:4:"🚇";i:4484;s:4:"🚈";i:4485;s:4:"🚉";i:4486;s:4:"🚊";i:4487;s:4:"🚋";i:4488;s:4:"🚌";i:4489;s:4:"ðŸš";i:4490;s:4:"🚎";i:4491;s:4:"ðŸš";i:4492;s:4:"ðŸš";i:4493;s:4:"🚑";i:4494;s:4:"🚒";i:4495;s:4:"🚓";i:4496;s:4:"🚔";i:4497;s:4:"🚕";i:4498;s:4:"🚖";i:4499;s:4:"🚗";i:4500;s:4:"🚘";i:4501;s:4:"🚙";i:4502;s:4:"🚚";i:4503;s:4:"🚛";i:4504;s:4:"🚜";i:4505;s:4:"ðŸš";i:4506;s:4:"🚞";i:4507;s:4:"🚟";i:4508;s:4:"🚠";i:4509;s:4:"🚡";i:4510;s:4:"🚢";i:4511;s:4:"🚣";i:4512;s:4:"🚤";i:4513;s:4:"🚥";i:4514;s:4:"🚦";i:4515;s:4:"🚧";i:4516;s:4:"🚨";i:4517;s:4:"🚩";i:4518;s:4:"🚪";i:4519;s:4:"🚫";i:4520;s:4:"🚬";i:4521;s:4:"🚭";i:4522;s:4:"🚮";i:4523;s:4:"🚯";i:4524;s:4:"🚰";i:4525;s:4:"🚱";i:4526;s:4:"🚲";i:4527;s:4:"🚳";i:4528;s:4:"🚴";i:4529;s:4:"🚵";i:4530;s:4:"🚶";i:4531;s:4:"🚷";i:4532;s:4:"🚸";i:4533;s:4:"🚹";i:4534;s:4:"🚺";i:4535;s:4:"🚻";i:4536;s:4:"🚼";i:4537;s:4:"🚽";i:4538;s:4:"🚾";i:4539;s:4:"🚿";i:4540;s:4:"🛀";i:4541;s:4:"ðŸ›";i:4542;s:4:"🛂";i:4543;s:4:"🛃";i:4544;s:4:"🛄";i:4545;s:4:"🛅";i:4546;s:4:"🜀";i:4547;s:4:"ðŸœ";i:4548;s:4:"🜂";i:4549;s:4:"🜃";i:4550;s:4:"🜄";i:4551;s:4:"🜅";i:4552;s:4:"🜆";i:4553;s:4:"🜇";i:4554;s:4:"🜈";i:4555;s:4:"🜉";i:4556;s:4:"🜊";i:4557;s:4:"🜋";i:4558;s:4:"🜌";i:4559;s:4:"ðŸœ";i:4560;s:4:"🜎";i:4561;s:4:"ðŸœ";i:4562;s:4:"ðŸœ";i:4563;s:4:"🜑";i:4564;s:4:"🜒";i:4565;s:4:"🜓";i:4566;s:4:"🜔";i:4567;s:4:"🜕";i:4568;s:4:"🜖";i:4569;s:4:"🜗";i:4570;s:4:"🜘";i:4571;s:4:"🜙";i:4572;s:4:"🜚";i:4573;s:4:"🜛";i:4574;s:4:"🜜";i:4575;s:4:"ðŸœ";i:4576;s:4:"🜞";i:4577;s:4:"🜟";i:4578;s:4:"🜠";i:4579;s:4:"🜡";i:4580;s:4:"🜢";i:4581;s:4:"🜣";i:4582;s:4:"🜤";i:4583;s:4:"🜥";i:4584;s:4:"🜦";i:4585;s:4:"🜧";i:4586;s:4:"🜨";i:4587;s:4:"🜩";i:4588;s:4:"🜪";i:4589;s:4:"🜫";i:4590;s:4:"🜬";i:4591;s:4:"🜭";i:4592;s:4:"🜮";i:4593;s:4:"🜯";i:4594;s:4:"🜰";i:4595;s:4:"🜱";i:4596;s:4:"🜲";i:4597;s:4:"🜳";i:4598;s:4:"🜴";i:4599;s:4:"🜵";i:4600;s:4:"🜶";i:4601;s:4:"🜷";i:4602;s:4:"🜸";i:4603;s:4:"🜹";i:4604;s:4:"🜺";i:4605;s:4:"🜻";i:4606;s:4:"🜼";i:4607;s:4:"🜽";i:4608;s:4:"🜾";i:4609;s:4:"🜿";i:4610;s:4:"ðŸ€";i:4611;s:4:"ðŸ";i:4612;s:4:"ðŸ‚";i:4613;s:4:"ðŸƒ";i:4614;s:4:"ðŸ„";i:4615;s:4:"ðŸ…";i:4616;s:4:"ðŸ†";i:4617;s:4:"ðŸ‡";i:4618;s:4:"ðŸˆ";i:4619;s:4:"ðŸ‰";i:4620;s:4:"ðŸŠ";i:4621;s:4:"ðŸ‹";i:4622;s:4:"ðŸŒ";i:4623;s:4:"ðŸ";i:4624;s:4:"ðŸŽ";i:4625;s:4:"ðŸ";i:4626;s:4:"ðŸ";i:4627;s:4:"ðŸ‘";i:4628;s:4:"ðŸ’";i:4629;s:4:"ðŸ“";i:4630;s:4:"ðŸ”";i:4631;s:4:"ðŸ•";i:4632;s:4:"ðŸ–";i:4633;s:4:"ðŸ—";i:4634;s:4:"ðŸ˜";i:4635;s:4:"ðŸ™";i:4636;s:4:"ðŸš";i:4637;s:4:"ðŸ›";i:4638;s:4:"ðŸœ";i:4639;s:4:"ðŸ";i:4640;s:4:"ðŸž";i:4641;s:4:"ðŸŸ";i:4642;s:4:"ðŸ ";i:4643;s:4:"ðŸ¡";i:4644;s:4:"ðŸ¢";i:4645;s:4:"ðŸ£";i:4646;s:4:"ðŸ¤";i:4647;s:4:"ðŸ¥";i:4648;s:4:"ðŸ¦";i:4649;s:4:"ðŸ§";i:4650;s:4:"ðŸ¨";i:4651;s:4:"ðŸ©";i:4652;s:4:"ðŸª";i:4653;s:4:"ðŸ«";i:4654;s:4:"ðŸ¬";i:4655;s:4:"ðŸ­";i:4656;s:4:"ðŸ®";i:4657;s:4:"ðŸ¯";i:4658;s:4:"ðŸ°";i:4659;s:4:"ðŸ±";i:4660;s:4:"ðŸ²";i:4661;s:4:"ðŸ³";i:4662;s:3:"ã†";i:4663;s:3:"㆑";i:4664;s:3:"";i:4665;s:3:"�";i:4666;s:3:"৴";i:4667;s:3:"৵";i:4668;s:3:"৶";i:4669;s:3:"৷";i:4670;s:3:"৸";i:4671;s:3:"৹";i:4672;s:3:"à­²";i:4673;s:3:"à­³";i:4674;s:3:"à­´";i:4675;s:3:"à­µ";i:4676;s:3:"à­¶";i:4677;s:3:"à­·";i:4678;s:3:"ê °";i:4679;s:3:"ê ±";i:4680;s:3:"ê ²";i:4681;s:3:"ê ³";i:4682;s:3:"ê ´";i:4683;s:3:"ê µ";i:4684;s:3:"௰";i:4685;s:3:"௱";i:4686;s:3:"௲";i:4687;s:3:"൰";i:4688;s:3:"൱";i:4689;s:3:"൲";i:4690;s:3:"൳";i:4691;s:3:"൴";i:4692;s:3:"൵";i:4693;s:3:"á²";i:4694;s:3:"á³";i:4695;s:3:"á´";i:4696;s:3:"áµ";i:4697;s:3:"á¶";i:4698;s:3:"á·";i:4699;s:3:"á¸";i:4700;s:3:"á¹";i:4701;s:3:"áº";i:4702;s:3:"á»";i:4703;s:3:"á¼";i:4704;s:3:"ↀ";i:4705;s:3:"â†";i:4706;s:3:"ↂ";i:4707;s:3:"ↆ";i:4708;s:3:"ↇ";i:4709;s:3:"ↈ";i:4710;s:4:"ð¹©";i:4711;s:4:"ð¹ª";i:4712;s:4:"ð¹«";i:4713;s:4:"ð¹¬";i:4714;s:4:"ð¹­";i:4715;s:4:"ð¹®";i:4716;s:4:"ð¹¯";i:4717;s:4:"ð¹°";i:4718;s:4:"ð¹±";i:4719;s:4:"ð¹²";i:4720;s:4:"ð¹³";i:4721;s:4:"ð¹´";i:4722;s:4:"ð¹µ";i:4723;s:4:"ð¹¶";i:4724;s:4:"ð¹·";i:4725;s:4:"ð¹¸";i:4726;s:4:"ð¹¹";i:4727;s:4:"ð¹º";i:4728;s:4:"ð¹»";i:4729;s:4:"ð¹¼";i:4730;s:4:"ð¹½";i:4731;s:4:"ð¹¾";i:4732;s:3:"â³½";i:4733;s:4:"ðŒ¢";i:4734;s:4:"ðŒ£";i:4735;s:4:"ð„";i:4736;s:4:"ð„‘";i:4737;s:4:"ð„’";i:4738;s:4:"ð„“";i:4739;s:4:"ð„”";i:4740;s:4:"ð„•";i:4741;s:4:"ð„–";i:4742;s:4:"ð„—";i:4743;s:4:"ð„˜";i:4744;s:4:"ð„™";i:4745;s:4:"ð„š";i:4746;s:4:"ð„›";i:4747;s:4:"ð„œ";i:4748;s:4:"ð„";i:4749;s:4:"ð„ž";i:4750;s:4:"ð„Ÿ";i:4751;s:4:"ð„ ";i:4752;s:4:"ð„¡";i:4753;s:4:"ð„¢";i:4754;s:4:"ð„£";i:4755;s:4:"ð„¤";i:4756;s:4:"ð„¥";i:4757;s:4:"ð„¦";i:4758;s:4:"ð„§";i:4759;s:4:"ð„¨";i:4760;s:4:"ð„©";i:4761;s:4:"ð„ª";i:4762;s:4:"ð„«";i:4763;s:4:"ð„¬";i:4764;s:4:"ð„­";i:4765;s:4:"ð„®";i:4766;s:4:"ð„¯";i:4767;s:4:"ð„°";i:4768;s:4:"ð„±";i:4769;s:4:"ð„²";i:4770;s:4:"ð„³";i:4771;s:4:"ð…€";i:4772;s:4:"ð…";i:4773;s:4:"ð…„";i:4774;s:4:"ð……";i:4775;s:4:"ð…†";i:4776;s:4:"ð…‡";i:4777;s:4:"ð…‰";i:4778;s:4:"ð…Š";i:4779;s:4:"ð…‹";i:4780;s:4:"ð…Œ";i:4781;s:4:"ð…";i:4782;s:4:"ð…Ž";i:4783;s:4:"ð…";i:4784;s:4:"ð…‘";i:4785;s:4:"ð…’";i:4786;s:4:"ð…“";i:4787;s:4:"ð…”";i:4788;s:4:"ð…•";i:4789;s:4:"ð…–";i:4790;s:4:"ð…—";i:4791;s:4:"ð… ";i:4792;s:4:"ð…¡";i:4793;s:4:"ð…¢";i:4794;s:4:"ð…£";i:4795;s:4:"ð…¤";i:4796;s:4:"ð…¥";i:4797;s:4:"ð…¦";i:4798;s:4:"ð…§";i:4799;s:4:"ð…¨";i:4800;s:4:"ð…©";i:4801;s:4:"ð…ª";i:4802;s:4:"ð…«";i:4803;s:4:"ð…¬";i:4804;s:4:"ð…­";i:4805;s:4:"ð…®";i:4806;s:4:"ð…¯";i:4807;s:4:"ð…°";i:4808;s:4:"ð…±";i:4809;s:4:"ð…²";i:4810;s:4:"ð…´";i:4811;s:4:"ð…µ";i:4812;s:4:"ð…¶";i:4813;s:4:"ð…·";i:4814;s:4:"ð…¸";i:4815;s:4:"ð“";i:4816;s:4:"ð”";i:4817;s:4:"ð•";i:4818;s:4:"ð©¾";i:4819;s:4:"ð©¿";i:4820;s:4:"ð¤—";i:4821;s:4:"ð¤˜";i:4822;s:4:"ð¤™";i:4823;s:4:"ð¡›";i:4824;s:4:"ð¡œ";i:4825;s:4:"ð¡";i:4826;s:4:"ð¡ž";i:4827;s:4:"ð¡Ÿ";i:4828;s:4:"ð­œ";i:4829;s:4:"ð­";i:4830;s:4:"ð­ž";i:4831;s:4:"ð­Ÿ";i:4832;s:4:"ð­¼";i:4833;s:4:"ð­½";i:4834;s:4:"ð­¾";i:4835;s:4:"ð­¿";i:4836;s:4:"ð‘›";i:4837;s:4:"ð‘œ";i:4838;s:4:"ð‘";i:4839;s:4:"ð‘ž";i:4840;s:4:"ð‘Ÿ";i:4841;s:4:"ð‘ ";i:4842;s:4:"ð‘¡";i:4843;s:4:"ð‘¢";i:4844;s:4:"ð‘£";i:4845;s:4:"ð‘¤";i:4846;s:4:"ð‘¥";i:4847;s:4:"ð©„";i:4848;s:4:"ð©…";i:4849;s:4:"ð©†";i:4850;s:4:"ð©‡";i:4851;s:4:"ð’²";i:4852;s:4:"ð’³";i:4853;s:4:"ð’‘–";i:4854;s:4:"ð’‘—";i:4855;s:4:"ð’‘š";i:4856;s:4:"ð’‘›";i:4857;s:4:"ð’‘œ";i:4858;s:4:"ð’‘";i:4859;s:4:"ð’‘ž";i:4860;s:4:"ð’‘Ÿ";i:4861;s:4:"ð’‘ ";i:4862;s:4:"ð’‘¡";i:4863;s:4:"ð’‘¢";i:4864;s:4:"ð©";i:4865;s:4:"ðª";i:4866;s:4:"ð«";i:4867;s:4:"ð¬";i:4868;s:4:"ð­";i:4869;s:4:"ð®";i:4870;s:4:"ð¯";i:4871;s:4:"ð°";i:4872;s:4:"ð±";i:4873;s:2:"Ë";i:4874;s:2:"Ë‘";i:4875;s:3:"ॱ";i:4876;s:3:"ๆ";i:4877;s:3:"ໆ";i:4878;s:3:"ᪧ";i:4879;s:3:"ê§";i:4880;s:3:"ê©°";i:4881;s:3:"ê«";i:4882;s:3:"ã‚";i:4883;s:3:"ー";i:4884;s:3:"ヽ";i:4885;s:2:"¤";i:4886;s:2:"¢";i:4887;s:1:"$";i:4888;s:2:"£";i:4889;s:2:"Â¥";i:4890;s:2:"Ø‹";i:4891;s:3:"৲";i:4892;s:3:"৳";i:4893;s:3:"৻";i:4894;s:3:"૱";i:4895;s:3:"ê ¸";i:4896;s:3:"௹";i:4897;s:3:"฿";i:4898;s:3:"៛";i:4899;s:3:"â‚ ";i:4900;s:3:"â‚¡";i:4901;s:3:"â‚¢";i:4902;s:3:"â‚£";i:4903;s:3:"₤";i:4904;s:3:"â‚¥";i:4905;s:3:"₦";i:4906;s:3:"₧";i:4907;s:3:"â‚©";i:4908;s:3:"₪";i:4909;s:3:"â‚«";i:4910;s:3:"€";i:4911;s:3:"â‚­";i:4912;s:3:"â‚®";i:4913;s:3:"₯";i:4914;s:3:"â‚°";i:4915;s:3:"₱";i:4916;s:3:"₲";i:4917;s:3:"₳";i:4918;s:3:"â‚´";i:4919;s:3:"₵";i:4920;s:3:"₶";i:4921;s:3:"â‚·";i:4922;s:3:"₸";i:4923;s:3:"₹";i:4924;s:1:"0";i:4925;s:1:"1";i:4926;s:1:"2";i:4927;s:1:"3";i:4928;s:1:"4";i:4929;s:1:"5";i:4930;s:1:"6";i:4931;s:1:"7";i:4932;s:1:"8";i:4933;s:1:"9";i:4934;s:1:"A";i:4935;s:3:"á´€";i:4936;s:2:"Ⱥ";i:4937;s:3:"á¶";i:4938;s:3:"á´";i:4939;s:3:"á´‚";i:4940;s:3:"Ɐ";i:4941;s:3:"â±­";i:4942;s:3:"á¶";i:4943;s:3:"â±°";i:4944;s:1:"B";i:4945;s:2:"Ê™";i:4946;s:2:"Ƀ";i:4947;s:3:"á´¯";i:4948;s:3:"á´ƒ";i:4949;s:3:"ᵬ";i:4950;s:3:"ᶀ";i:4951;s:2:"Æ";i:4952;s:2:"Æ‚";i:4953;s:1:"C";i:4954;s:3:"á´„";i:4955;s:2:"È»";i:4956;s:2:"Ƈ";i:4957;s:2:"É•";i:4958;s:3:"Ↄ";i:4959;s:3:"Ꜿ";i:4960;s:1:"D";i:4961;s:3:"á´…";i:4962;s:3:"á´†";i:4963;s:3:"áµ­";i:4964;s:3:"á¶";i:4965;s:2:"Ɖ";i:4966;s:2:"ÆŠ";i:4967;s:3:"ᶑ";i:4968;s:2:"Æ‹";i:4969;s:2:"È¡";i:4970;s:3:"ê±";i:4971;s:3:"ẟ";i:4972;s:1:"E";i:4973;s:3:"á´‡";i:4974;s:2:"Ɇ";i:4975;s:3:"ᶒ";i:4976;s:3:"ⱸ";i:4977;s:2:"ÆŽ";i:4978;s:3:"â±»";i:4979;s:2:"Æ";i:4980;s:3:"ᶕ";i:4981;s:2:"Æ";i:4982;s:3:"ᶓ";i:4983;s:2:"ɘ";i:4984;s:2:"Éš";i:4985;s:2:"Éœ";i:4986;s:3:"ᶔ";i:4987;s:3:"á´ˆ";i:4988;s:2:"É";i:4989;s:2:"Éž";i:4990;s:2:"Êš";i:4991;s:2:"ɤ";i:4992;s:1:"F";i:4993;s:3:"ꜰ";i:4994;s:3:"áµ®";i:4995;s:3:"ᶂ";i:4996;s:2:"Æ‘";i:4997;s:3:"Ⅎ";i:4998;s:3:"ꟻ";i:4999;s:1:"G";i:5000;s:2:"É¡";i:5001;s:2:"É¢";i:5002;s:2:"Ǥ";i:5003;s:3:"ᶃ";i:5004;s:2:"Æ“";i:5005;s:2:"Ê›";i:5006;s:3:"áµ·";i:5007;s:3:"ê¾";i:5008;s:2:"Æ”";i:5009;s:2:"Æ¢";i:5010;s:1:"H";i:5011;s:2:"Êœ";i:5012;s:2:"Ƕ";i:5013;s:2:"ɦ";i:5014;s:3:"Ⱨ";i:5015;s:3:"â±µ";i:5016;s:3:"Ꜧ";i:5017;s:2:"ɧ";i:5018;s:2:"Ê»";i:5019;s:2:"ʽ";i:5020;s:1:"I";i:5021;s:2:"ı";i:5022;s:2:"ɪ";i:5023;s:3:"ꟾ";i:5024;s:3:"á´‰";i:5025;s:2:"Æ—";i:5026;s:3:"áµ»";i:5027;s:3:"ᶖ";i:5028;s:2:"Æ–";i:5029;s:3:"áµ¼";i:5030;s:1:"J";i:5031;s:2:"È·";i:5032;s:3:"á´Š";i:5033;s:2:"Ɉ";i:5034;s:2:"Ê";i:5035;s:2:"ÉŸ";i:5036;s:2:"Ê„";i:5037;s:1:"K";i:5038;s:3:"á´‹";i:5039;s:3:"ᶄ";i:5040;s:2:"Ƙ";i:5041;s:3:"Ⱪ";i:5042;s:3:"ê€";i:5043;s:3:"ê‚";i:5044;s:3:"ê„";i:5045;s:2:"Êž";i:5046;s:1:"L";i:5047;s:2:"ÊŸ";i:5048;s:3:"ê†";i:5049;s:3:"á´Œ";i:5050;s:3:"êˆ";i:5051;s:2:"Ƚ";i:5052;s:3:"â± ";i:5053;s:3:"â±¢";i:5054;s:2:"ɬ";i:5055;s:3:"ᶅ";i:5056;s:2:"É­";i:5057;s:3:"ꞎ";i:5058;s:2:"È´";i:5059;s:3:"ê²";i:5060;s:2:"É®";i:5061;s:3:"Ꞁ";i:5062;s:2:"Æ›";i:5063;s:2:"ÊŽ";i:5064;s:1:"M";i:5065;s:3:"á´";i:5066;s:3:"ᵯ";i:5067;s:3:"ᶆ";i:5068;s:3:"â±®";i:5069;s:3:"ꟽ";i:5070;s:3:"ꟿ";i:5071;s:3:"ê³";i:5072;s:1:"N";i:5073;s:2:"É´";i:5074;s:3:"á´»";i:5075;s:3:"á´Ž";i:5076;s:3:"áµ°";i:5077;s:2:"Æ";i:5078;s:2:"È ";i:5079;s:3:"êž";i:5080;s:3:"ᶇ";i:5081;s:2:"ɳ";i:5082;s:2:"ȵ";i:5083;s:3:"ê´";i:5084;s:2:"ÅŠ";i:5085;s:1:"O";i:5086;s:3:"á´";i:5087;s:3:"á´‘";i:5088;s:2:"ɶ";i:5089;s:3:"á´”";i:5090;s:3:"á´“";i:5091;s:2:"Ɔ";i:5092;s:3:"á´";i:5093;s:3:"á´’";i:5094;s:3:"ᶗ";i:5095;s:3:"êŒ";i:5096;s:3:"á´–";i:5097;s:3:"á´—";i:5098;s:3:"ⱺ";i:5099;s:2:"ÆŸ";i:5100;s:3:"êŠ";i:5101;s:2:"É·";i:5102;s:2:"È¢";i:5103;s:3:"á´•";i:5104;s:1:"P";i:5105;s:3:"á´˜";i:5106;s:3:"â±£";i:5107;s:3:"ê";i:5108;s:3:"áµ±";i:5109;s:3:"ᶈ";i:5110;s:2:"Ƥ";i:5111;s:3:"ê’";i:5112;s:3:"ê”";i:5113;s:3:"ꟼ";i:5114;s:2:"ɸ";i:5115;s:3:"â±·";i:5116;s:1:"Q";i:5117;s:3:"ê–";i:5118;s:3:"ê˜";i:5119;s:2:"Ê ";i:5120;s:2:"ÉŠ";i:5121;s:2:"ĸ";i:5122;s:1:"R";i:5123;s:2:"Ʀ";i:5124;s:3:"êš";i:5125;s:3:"á´™";i:5126;s:2:"ÉŒ";i:5127;s:3:"áµ²";i:5128;s:2:"ɹ";i:5129;s:3:"á´š";i:5130;s:2:"ɺ";i:5131;s:3:"ᶉ";i:5132;s:2:"É»";i:5133;s:3:"â±¹";i:5134;s:2:"ɼ";i:5135;s:3:"Ɽ";i:5136;s:2:"ɾ";i:5137;s:3:"áµ³";i:5138;s:2:"É¿";i:5139;s:2:"Ê";i:5140;s:3:"êµ";i:5141;s:3:"ê¶";i:5142;s:3:"êœ";i:5143;s:1:"S";i:5144;s:3:"ꜱ";i:5145;s:3:"áµ´";i:5146;s:3:"ᶊ";i:5147;s:2:"Ê‚";i:5148;s:3:"â±¾";i:5149;s:3:"ẜ";i:5150;s:3:"áº";i:5151;s:2:"Æ©";i:5152;s:3:"ᶋ";i:5153;s:2:"ƪ";i:5154;s:2:"Ê…";i:5155;s:3:"ᶘ";i:5156;s:2:"ʆ";i:5157;s:1:"T";i:5158;s:3:"á´›";i:5159;s:2:"Ŧ";i:5160;s:2:"Ⱦ";i:5161;s:3:"áµµ";i:5162;s:2:"Æ«";i:5163;s:2:"Ƭ";i:5164;s:2:"Æ®";i:5165;s:2:"ȶ";i:5166;s:3:"ê·";i:5167;s:2:"ʇ";i:5168;s:1:"U";i:5169;s:3:"á´œ";i:5170;s:3:"á´";i:5171;s:3:"á´ž";i:5172;s:3:"ᵫ";i:5173;s:2:"É„";i:5174;s:3:"áµ¾";i:5175;s:3:"ᶙ";i:5176;s:3:"êž";i:5177;s:2:"Ê®";i:5178;s:2:"ʯ";i:5179;s:2:"Æœ";i:5180;s:3:"ꟺ";i:5181;s:3:"á´Ÿ";i:5182;s:2:"É°";i:5183;s:2:"Ʊ";i:5184;s:3:"ᵿ";i:5185;s:1:"V";i:5186;s:3:"á´ ";i:5187;s:3:"êž";i:5188;s:3:"ᶌ";i:5189;s:2:"Ʋ";i:5190;s:3:"â±±";i:5191;s:3:"â±´";i:5192;s:3:"Ỽ";i:5193;s:2:"É…";i:5194;s:1:"W";i:5195;s:3:"á´¡";i:5196;s:3:"â±²";i:5197;s:2:"Ê";i:5198;s:1:"X";i:5199;s:3:"á¶";i:5200;s:1:"Y";i:5201;s:2:"Ê";i:5202;s:2:"ÉŽ";i:5203;s:2:"Ƴ";i:5204;s:3:"Ỿ";i:5205;s:1:"Z";i:5206;s:3:"á´¢";i:5207;s:2:"Ƶ";i:5208;s:3:"ᵶ";i:5209;s:3:"ᶎ";i:5210;s:2:"Ȥ";i:5211;s:2:"Ê";i:5212;s:2:"Ê‘";i:5213;s:3:"Ɀ";i:5214;s:3:"Ⱬ";i:5215;s:3:"ê¢";i:5216;s:2:"Æ·";i:5217;s:3:"á´£";i:5218;s:2:"Ƹ";i:5219;s:3:"ᶚ";i:5220;s:2:"ƺ";i:5221;s:2:"Ê“";i:5222;s:2:"Èœ";i:5223;s:2:"Þ";i:5224;s:3:"ê¤";i:5225;s:3:"ê¦";i:5226;s:2:"Ç·";i:5227;s:3:"ê¨";i:5228;s:3:"êª";i:5229;s:3:"ê¬";i:5230;s:3:"ê®";i:5231;s:3:"ê¸";i:5232;s:2:"Æ»";i:5233;s:3:"Ꜫ";i:5234;s:3:"Ꜭ";i:5235;s:3:"Ꜯ";i:5236;s:2:"Ƨ";i:5237;s:2:"Ƽ";i:5238;s:2:"Æ„";i:5239;s:2:"Ê”";i:5240;s:2:"É";i:5241;s:2:"Ë€";i:5242;s:2:"ʼ";i:5243;s:2:"Ë®";i:5244;s:2:"ʾ";i:5245;s:3:"Ꜣ";i:5246;s:3:"êž‹";i:5247;s:2:"Ê•";i:5248;s:2:"Ê¿";i:5249;s:2:"Ë";i:5250;s:3:"á´¤";i:5251;s:3:"á´¥";i:5252;s:3:"Ꜥ";i:5253;s:2:"Ê¡";i:5254;s:2:"Ê¢";i:5255;s:2:"Ê–";i:5256;s:2:"Ç€";i:5257;s:2:"Ç";i:5258;s:2:"Ç‚";i:5259;s:2:"ǃ";i:5260;s:2:"Ê—";i:5261;s:2:"ʘ";i:5262;s:2:"ʬ";i:5263;s:2:"Ê­";i:5264;s:2:"Α";i:5265;s:2:"Î’";i:5266;s:2:"Γ";i:5267;s:3:"á´¦";i:5268;s:2:"Δ";i:5269;s:2:"Ε";i:5270;s:2:"Ïœ";i:5271;s:2:"Ͷ";i:5272;s:2:"Ïš";i:5273;s:2:"Ζ";i:5274;s:2:"Í°";i:5275;s:2:"Η";i:5276;s:2:"Θ";i:5277;s:2:"Ι";i:5278;s:2:"ϳ";i:5279;s:2:"Κ";i:5280;s:2:"Λ";i:5281;s:3:"á´§";i:5282;s:2:"Îœ";i:5283;s:2:"Î";i:5284;s:2:"Ξ";i:5285;s:2:"Ο";i:5286;s:2:"Π";i:5287;s:3:"á´¨";i:5288;s:2:"Ϻ";i:5289;s:2:"Ïž";i:5290;s:2:"Ϙ";i:5291;s:2:"Ρ";i:5292;s:3:"á´©";i:5293;s:2:"ϼ";i:5294;s:2:"Σ";i:5295;s:2:"Ͼ";i:5296;s:2:"Ͻ";i:5297;s:2:"Ï¿";i:5298;s:2:"Τ";i:5299;s:2:"Î¥";i:5300;s:2:"Φ";i:5301;s:2:"Χ";i:5302;s:2:"Ψ";i:5303;s:3:"á´ª";i:5304;s:2:"Ω";i:5305;s:2:"Ï ";i:5306;s:2:"Ͳ";i:5307;s:2:"Ï·";i:5308;s:3:"â²€";i:5309;s:3:"Ⲃ";i:5310;s:3:"Ⲅ";i:5311;s:3:"Ⲇ";i:5312;s:3:"Ⲉ";i:5313;s:3:"Ⲷ";i:5314;s:3:"Ⲋ";i:5315;s:3:"Ⲍ";i:5316;s:3:"Ⲏ";i:5317;s:3:"â²";i:5318;s:3:"â²’";i:5319;s:3:"â²”";i:5320;s:3:"Ⲹ";i:5321;s:3:"â²–";i:5322;s:3:"Ⲙ";i:5323;s:3:"Ⲛ";i:5324;s:3:"Ⲻ";i:5325;s:3:"â²¼";i:5326;s:3:"Ⲝ";i:5327;s:3:"Ⲟ";i:5328;s:3:"â² ";i:5329;s:3:"â²¢";i:5330;s:3:"Ⲥ";i:5331;s:3:"Ⲧ";i:5332;s:3:"Ⲩ";i:5333;s:3:"Ⲫ";i:5334;s:3:"Ⲭ";i:5335;s:3:"â²®";i:5336;s:3:"â²°";i:5337;s:3:"â²¾";i:5338;s:3:"â³€";i:5339;s:2:"Ï¢";i:5340;s:3:"Ⳬ";i:5341;s:3:"Ⳃ";i:5342;s:3:"Ⳅ";i:5343;s:3:"Ⳇ";i:5344;s:2:"Ϥ";i:5345;s:2:"Ϧ";i:5346;s:3:"Ⳉ";i:5347;s:2:"Ϩ";i:5348;s:3:"Ⳋ";i:5349;s:3:"Ⳍ";i:5350;s:3:"Ⳏ";i:5351;s:3:"â³";i:5352;s:3:"â³’";i:5353;s:3:"â³”";i:5354;s:2:"Ϫ";i:5355;s:3:"â³­";i:5356;s:3:"â³–";i:5357;s:2:"Ϭ";i:5358;s:3:"Ⳙ";i:5359;s:3:"Ⳛ";i:5360;s:3:"Ⳝ";i:5361;s:2:"Ï®";i:5362;s:3:"â²²";i:5363;s:3:"â²´";i:5364;s:3:"Ⳟ";i:5365;s:3:"â³ ";i:5366;s:3:"â³¢";i:5367;s:2:"Ð";i:5368;s:2:"Ó";i:5369;s:2:"Ó’";i:5370;s:2:"Ó˜";i:5371;s:2:"Óš";i:5372;s:2:"Ó”";i:5373;s:2:"Б";i:5374;s:2:"Ð’";i:5375;s:2:"Г";i:5376;s:2:"Ò’";i:5377;s:2:"Óº";i:5378;s:2:"Ò”";i:5379;s:2:"Ó¶";i:5380;s:2:"Д";i:5381;s:2:"Ô€";i:5382;s:3:"Ꚁ";i:5383;s:2:"Ђ";i:5384;s:3:"Ꙣ";i:5385;s:2:"Ô‚";i:5386;s:2:"Ѓ";i:5387;s:2:"Ò˜";i:5388;s:2:"Е";i:5389;s:2:"Ó–";i:5390;s:2:"Є";i:5391;s:2:"Ж";i:5392;s:3:"êš„";i:5393;s:2:"Óœ";i:5394;s:2:"Ò–";i:5395;s:2:"З";i:5396;s:3:"Ꙁ";i:5397;s:2:"Ô„";i:5398;s:2:"Ô";i:5399;s:2:"Óž";i:5400;s:3:"Ꙃ";i:5401;s:2:"Ð…";i:5402;s:3:"Ꙅ";i:5403;s:2:"Ó ";i:5404;s:3:"Ꚉ";i:5405;s:2:"Ô†";i:5406;s:3:"êš‚";i:5407;s:2:"И";i:5408;s:2:"ÒŠ";i:5409;s:2:"Ó¤";i:5410;s:2:"І";i:5411;s:3:"Ꙇ";i:5412;s:2:"Ї";i:5413;s:2:"Й";i:5414;s:2:"Ј";i:5415;s:3:"Ꙉ";i:5416;s:2:"К";i:5417;s:2:"Òš";i:5418;s:2:"Óƒ";i:5419;s:2:"Ò ";i:5420;s:2:"Òž";i:5421;s:2:"Òœ";i:5422;s:2:"Ôž";i:5423;s:2:"Ôš";i:5424;s:2:"Л";i:5425;s:3:"á´«";i:5426;s:2:"Ó…";i:5427;s:2:"Ô’";i:5428;s:2:"Ô ";i:5429;s:2:"Љ";i:5430;s:3:"Ꙥ";i:5431;s:2:"Ôˆ";i:5432;s:2:"Ô”";i:5433;s:2:"Ðœ";i:5434;s:2:"Ó";i:5435;s:3:"Ꙧ";i:5436;s:2:"Ð";i:5437;s:2:"Ó‰";i:5438;s:2:"Ò¢";i:5439;s:2:"Ó‡";i:5440;s:2:"Ô¢";i:5441;s:2:"Ò¤";i:5442;s:2:"Њ";i:5443;s:2:"ÔŠ";i:5444;s:2:"О";i:5445;s:2:"Ó¦";i:5446;s:2:"Ó¨";i:5447;s:2:"Óª";i:5448;s:2:"П";i:5449;s:2:"Ô¤";i:5450;s:2:"Ò¦";i:5451;s:2:"Ò€";i:5452;s:2:"Р";i:5453;s:2:"ÒŽ";i:5454;s:2:"Ô–";i:5455;s:2:"С";i:5456;s:2:"ÔŒ";i:5457;s:2:"Òª";i:5458;s:2:"Т";i:5459;s:3:"Ꚍ";i:5460;s:2:"ÔŽ";i:5461;s:2:"Ò¬";i:5462;s:3:"Ꚋ";i:5463;s:2:"Ћ";i:5464;s:2:"ÐŒ";i:5465;s:2:"У";i:5466;s:2:"ÐŽ";i:5467;s:2:"Ó°";i:5468;s:2:"Ó²";i:5469;s:2:"Ò®";i:5470;s:2:"Ò°";i:5471;s:3:"Ꙋ";i:5472;s:2:"Ѹ";i:5473;s:2:"Ф";i:5474;s:2:"Ð¥";i:5475;s:2:"Ó¼";i:5476;s:2:"Ó¾";i:5477;s:2:"Ò²";i:5478;s:2:"Òº";i:5479;s:2:"Ô¦";i:5480;s:3:"êš”";i:5481;s:2:"Ñ ";i:5482;s:2:"Ѿ";i:5483;s:3:"Ꙍ";i:5484;s:2:"Ѽ";i:5485;s:2:"Ѻ";i:5486;s:2:"Ц";i:5487;s:3:"ê™ ";i:5488;s:3:"Ꚏ";i:5489;s:2:"Ò´";i:5490;s:3:"êš";i:5491;s:2:"Ч";i:5492;s:3:"êš’";i:5493;s:2:"Ó´";i:5494;s:2:"Ò¶";i:5495;s:2:"Ó‹";i:5496;s:2:"Ò¸";i:5497;s:3:"Ꚇ";i:5498;s:2:"Ò¼";i:5499;s:2:"Ò¾";i:5500;s:2:"Ð";i:5501;s:2:"Ш";i:5502;s:3:"êš–";i:5503;s:2:"Щ";i:5504;s:3:"Ꙏ";i:5505;s:3:"ⸯ";i:5506;s:3:"ꙿ";i:5507;s:2:"Ъ";i:5508;s:3:"ê™";i:5509;s:2:"Ы";i:5510;s:2:"Ó¸";i:5511;s:2:"Ь";i:5512;s:2:"ÒŒ";i:5513;s:2:"Ñ¢";i:5514;s:3:"ê™’";i:5515;s:2:"Э";i:5516;s:2:"Ó¬";i:5517;s:2:"Ю";i:5518;s:3:"ê™”";i:5519;s:3:"ê™–";i:5520;s:2:"Я";i:5521;s:2:"Ô˜";i:5522;s:2:"Ѥ";i:5523;s:2:"Ѧ";i:5524;s:3:"Ꙙ";i:5525;s:2:"Ѫ";i:5526;s:3:"Ꙛ";i:5527;s:2:"Ѩ";i:5528;s:3:"Ꙝ";i:5529;s:2:"Ѭ";i:5530;s:2:"Ñ®";i:5531;s:2:"Ñ°";i:5532;s:2:"Ѳ";i:5533;s:2:"Ñ´";i:5534;s:2:"Ѷ";i:5535;s:3:"Ꙟ";i:5536;s:2:"Ò¨";i:5537;s:2:"Ôœ";i:5538;s:2:"Ó€";i:5539;s:3:"â°€";i:5540;s:3:"â°";i:5541;s:3:"â°‚";i:5542;s:3:"â°ƒ";i:5543;s:3:"â°„";i:5544;s:3:"â°…";i:5545;s:3:"â°†";i:5546;s:3:"â°‡";i:5547;s:3:"â°ˆ";i:5548;s:3:"â°‰";i:5549;s:3:"â°Š";i:5550;s:3:"â°‹";i:5551;s:3:"â°Œ";i:5552;s:3:"â°";i:5553;s:3:"â°Ž";i:5554;s:3:"â°";i:5555;s:3:"â°";i:5556;s:3:"â°‘";i:5557;s:3:"â°’";i:5558;s:3:"â°“";i:5559;s:3:"â°”";i:5560;s:3:"â°•";i:5561;s:3:"â°–";i:5562;s:3:"â°—";i:5563;s:3:"â°˜";i:5564;s:3:"â°™";i:5565;s:3:"â°š";i:5566;s:3:"â°›";i:5567;s:3:"â°œ";i:5568;s:3:"â°";i:5569;s:3:"â°ž";i:5570;s:3:"â°Ÿ";i:5571;s:3:"â° ";i:5572;s:3:"â°¡";i:5573;s:3:"â°¢";i:5574;s:3:"â°£";i:5575;s:3:"â°¤";i:5576;s:3:"â°¥";i:5577;s:3:"â°¦";i:5578;s:3:"â°§";i:5579;s:3:"â°¨";i:5580;s:3:"â°©";i:5581;s:3:"â°ª";i:5582;s:3:"â°«";i:5583;s:3:"â°¬";i:5584;s:3:"â°­";i:5585;s:3:"â°®";i:5586;s:3:"áƒ";i:5587;s:3:"á‚ ";i:5588;s:3:"ბ";i:5589;s:3:"á‚¡";i:5590;s:3:"გ";i:5591;s:3:"á‚¢";i:5592;s:3:"დ";i:5593;s:3:"á‚£";i:5594;s:3:"ე";i:5595;s:3:"Ⴄ";i:5596;s:3:"ვ";i:5597;s:3:"á‚¥";i:5598;s:3:"ზ";i:5599;s:3:"Ⴆ";i:5600;s:3:"ჱ";i:5601;s:3:"áƒ";i:5602;s:3:"თ";i:5603;s:3:"Ⴇ";i:5604;s:3:"ი";i:5605;s:3:"Ⴈ";i:5606;s:3:"კ";i:5607;s:3:"á‚©";i:5608;s:3:"ლ";i:5609;s:3:"Ⴊ";i:5610;s:3:"მ";i:5611;s:3:"á‚«";i:5612;s:3:"ნ";i:5613;s:3:"Ⴌ";i:5614;s:3:"ჲ";i:5615;s:3:"Ⴢ";i:5616;s:3:"áƒ";i:5617;s:3:"á‚­";i:5618;s:3:"პ";i:5619;s:3:"á‚®";i:5620;s:3:"ჟ";i:5621;s:3:"Ⴏ";i:5622;s:3:"რ";i:5623;s:3:"á‚°";i:5624;s:3:"ს";i:5625;s:3:"Ⴑ";i:5626;s:3:"ტ";i:5627;s:3:"Ⴒ";i:5628;s:3:"ჳ";i:5629;s:3:"Ⴣ";i:5630;s:3:"უ";i:5631;s:3:"Ⴓ";i:5632;s:3:"ფ";i:5633;s:3:"á‚´";i:5634;s:3:"ქ";i:5635;s:3:"Ⴕ";i:5636;s:3:"ღ";i:5637;s:3:"Ⴖ";i:5638;s:3:"ყ";i:5639;s:3:"á‚·";i:5640;s:3:"შ";i:5641;s:3:"Ⴘ";i:5642;s:3:"ჩ";i:5643;s:3:"Ⴙ";i:5644;s:3:"ც";i:5645;s:3:"Ⴚ";i:5646;s:3:"ძ";i:5647;s:3:"á‚»";i:5648;s:3:"წ";i:5649;s:3:"Ⴜ";i:5650;s:3:"ჭ";i:5651;s:3:"Ⴝ";i:5652;s:3:"ხ";i:5653;s:3:"Ⴞ";i:5654;s:3:"ჴ";i:5655;s:3:"Ⴤ";i:5656;s:3:"ჯ";i:5657;s:3:"á‚¿";i:5658;s:3:"ჰ";i:5659;s:3:"Ⴠ";i:5660;s:3:"ჵ";i:5661;s:3:"Ⴥ";i:5662;s:3:"ჶ";i:5663;s:3:"ჷ";i:5664;s:3:"ჸ";i:5665;s:3:"ჹ";i:5666;s:3:"ჺ";i:5667;s:2:"Ô±";i:5668;s:2:"Ô²";i:5669;s:2:"Ô³";i:5670;s:2:"Ô´";i:5671;s:2:"Ôµ";i:5672;s:2:"Ô¶";i:5673;s:2:"Ô·";i:5674;s:2:"Ô¸";i:5675;s:2:"Ô¹";i:5676;s:2:"Ôº";i:5677;s:2:"Ô»";i:5678;s:2:"Ô¼";i:5679;s:2:"Ô½";i:5680;s:2:"Ô¾";i:5681;s:2:"Ô¿";i:5682;s:2:"Õ€";i:5683;s:2:"Õ";i:5684;s:2:"Õ‚";i:5685;s:2:"Õƒ";i:5686;s:2:"Õ„";i:5687;s:2:"Õ…";i:5688;s:2:"Õ†";i:5689;s:2:"Õ‡";i:5690;s:2:"Õˆ";i:5691;s:2:"Õ‰";i:5692;s:2:"ÕŠ";i:5693;s:2:"Õ‹";i:5694;s:2:"ÕŒ";i:5695;s:2:"Õ";i:5696;s:2:"ÕŽ";i:5697;s:2:"Õ";i:5698;s:2:"Õ";i:5699;s:2:"Õ‘";i:5700;s:2:"Õ’";i:5701;s:2:"Õ“";i:5702;s:2:"Õ”";i:5703;s:2:"Õ•";i:5704;s:2:"Õ–";i:5705;s:2:"Õ™";i:5706;s:2:"×";i:5707;s:2:"ב";i:5708;s:2:"×’";i:5709;s:2:"ד";i:5710;s:2:"×”";i:5711;s:2:"ו";i:5712;s:2:"×–";i:5713;s:2:"×—";i:5714;s:2:"ט";i:5715;s:2:"×™";i:5716;s:2:"ך";i:5717;s:2:"ל";i:5718;s:2:"×";i:5719;s:2:"ן";i:5720;s:2:"ס";i:5721;s:2:"×¢";i:5722;s:2:"×£";i:5723;s:2:"×¥";i:5724;s:2:"ק";i:5725;s:2:"ר";i:5726;s:2:"ש";i:5727;s:2:"ת";i:5728;s:4:"ð¤€";i:5729;s:4:"ð¤";i:5730;s:4:"ð¤‚";i:5731;s:4:"ð¤ƒ";i:5732;s:4:"ð¤„";i:5733;s:4:"ð¤…";i:5734;s:4:"ð¤†";i:5735;s:4:"ð¤‡";i:5736;s:4:"ð¤ˆ";i:5737;s:4:"ð¤‰";i:5738;s:4:"ð¤Š";i:5739;s:4:"ð¤‹";i:5740;s:4:"ð¤Œ";i:5741;s:4:"ð¤";i:5742;s:4:"ð¤Ž";i:5743;s:4:"ð¤";i:5744;s:4:"ð¤";i:5745;s:4:"ð¤‘";i:5746;s:4:"ð¤’";i:5747;s:4:"ð¤“";i:5748;s:4:"ð¤”";i:5749;s:4:"ð¤•";i:5750;s:3:"à €";i:5751;s:3:"à ";i:5752;s:3:"à ‚";i:5753;s:3:"à ƒ";i:5754;s:3:"à „";i:5755;s:3:"à …";i:5756;s:3:"à †";i:5757;s:3:"à ‡";i:5758;s:3:"à ˆ";i:5759;s:3:"à ‰";i:5760;s:3:"à Š";i:5761;s:3:"à ‹";i:5762;s:3:"à Œ";i:5763;s:3:"à ";i:5764;s:3:"à Ž";i:5765;s:3:"à ";i:5766;s:3:"à ";i:5767;s:3:"à ‘";i:5768;s:3:"à ’";i:5769;s:3:"à “";i:5770;s:3:"à ”";i:5771;s:3:"à •";i:5772;s:3:"à š";i:5773;s:2:"Ø¡";i:5774;s:2:"Ø¢";i:5775;s:2:"Ø£";i:5776;s:2:"Ù²";i:5777;s:2:"Ù±";i:5778;s:2:"ؤ";i:5779;s:2:"Ø¥";i:5780;s:2:"Ù³";i:5781;s:2:"ݳ";i:5782;s:2:"Ý´";i:5783;s:2:"ئ";i:5784;s:2:"ا";i:5785;s:2:"Ù®";i:5786;s:2:"ب";i:5787;s:2:"Ù»";i:5788;s:2:"Ù¾";i:5789;s:2:"Ú€";i:5790;s:2:"Ý";i:5791;s:2:"Ý‘";i:5792;s:2:"Ý’";i:5793;s:2:"Ý“";i:5794;s:2:"Ý”";i:5795;s:2:"Ý•";i:5796;s:2:"Ý–";i:5797;s:2:"Ø©";i:5798;s:2:"ت";i:5799;s:2:"Ø«";i:5800;s:2:"Ù¹";i:5801;s:2:"Ùº";i:5802;s:2:"Ù¼";i:5803;s:2:"Ù½";i:5804;s:2:"Ù¿";i:5805;s:2:"ج";i:5806;s:2:"Úƒ";i:5807;s:2:"Ú„";i:5808;s:2:"Ú†";i:5809;s:2:"Ú¿";i:5810;s:2:"Ú‡";i:5811;s:2:"Ø­";i:5812;s:2:"Ø®";i:5813;s:2:"Ú";i:5814;s:2:"Ú‚";i:5815;s:2:"Ú…";i:5816;s:2:"Ý—";i:5817;s:2:"ݘ";i:5818;s:2:"Ý®";i:5819;s:2:"ݯ";i:5820;s:2:"ݲ";i:5821;s:2:"ݼ";i:5822;s:2:"د";i:5823;s:2:"Ø°";i:5824;s:2:"Úˆ";i:5825;s:2:"Ú‰";i:5826;s:2:"ÚŠ";i:5827;s:2:"Ú‹";i:5828;s:2:"ÚŒ";i:5829;s:2:"Ú";i:5830;s:2:"ÚŽ";i:5831;s:2:"Ú";i:5832;s:2:"Ú";i:5833;s:2:"Û®";i:5834;s:2:"Ý™";i:5835;s:2:"Ýš";i:5836;s:2:"ر";i:5837;s:2:"ز";i:5838;s:2:"Ú‘";i:5839;s:2:"Ú’";i:5840;s:2:"Ú“";i:5841;s:2:"Ú”";i:5842;s:2:"Ú•";i:5843;s:2:"Ú–";i:5844;s:2:"Ú—";i:5845;s:2:"Ú˜";i:5846;s:2:"Ú™";i:5847;s:2:"Û¯";i:5848;s:2:"Ý›";i:5849;s:2:"Ý«";i:5850;s:2:"ݬ";i:5851;s:2:"ݱ";i:5852;s:2:"س";i:5853;s:2:"Ø´";i:5854;s:2:"Úš";i:5855;s:2:"Ú›";i:5856;s:2:"Úœ";i:5857;s:2:"Ûº";i:5858;s:2:"Ýœ";i:5859;s:2:"Ý­";i:5860;s:2:"Ý°";i:5861;s:2:"ݽ";i:5862;s:2:"ݾ";i:5863;s:2:"ص";i:5864;s:2:"ض";i:5865;s:2:"Ú";i:5866;s:2:"Úž";i:5867;s:2:"Û»";i:5868;s:2:"Ø·";i:5869;s:2:"ظ";i:5870;s:2:"ÚŸ";i:5871;s:2:"ع";i:5872;s:2:"غ";i:5873;s:2:"Ú ";i:5874;s:2:"Û¼";i:5875;s:2:"Ý";i:5876;s:2:"Ýž";i:5877;s:2:"ÝŸ";i:5878;s:2:"Ù";i:5879;s:2:"Ú¡";i:5880;s:2:"Ú¢";i:5881;s:2:"Ú£";i:5882;s:2:"Ú¤";i:5883;s:2:"Ú¥";i:5884;s:2:"Ú¦";i:5885;s:2:"Ý ";i:5886;s:2:"Ý¡";i:5887;s:2:"Ù¯";i:5888;s:2:"Ù‚";i:5889;s:2:"Ú§";i:5890;s:2:"Ú¨";i:5891;s:2:"Ùƒ";i:5892;s:2:"Ú©";i:5893;s:2:"Úª";i:5894;s:2:"Ú«";i:5895;s:2:"Ú¬";i:5896;s:2:"Ý¿";i:5897;s:2:"Ú­";i:5898;s:2:"Ú®";i:5899;s:2:"Ú¯";i:5900;s:2:"Ú°";i:5901;s:2:"Ú±";i:5902;s:2:"Ú²";i:5903;s:2:"Ú³";i:5904;s:2:"Ú´";i:5905;s:2:"Ý¢";i:5906;s:2:"Ø»";i:5907;s:2:"ؼ";i:5908;s:2:"Ý£";i:5909;s:2:"ݤ";i:5910;s:2:"Ù„";i:5911;s:2:"Úµ";i:5912;s:2:"Ú¶";i:5913;s:2:"Ú·";i:5914;s:2:"Ú¸";i:5915;s:2:"ݪ";i:5916;s:2:"Ù…";i:5917;s:2:"Ý¥";i:5918;s:2:"ݦ";i:5919;s:2:"Ù†";i:5920;s:2:"Úº";i:5921;s:2:"Ú»";i:5922;s:2:"Ú¼";i:5923;s:2:"Ú½";i:5924;s:2:"Ú¹";i:5925;s:2:"ݧ";i:5926;s:2:"ݨ";i:5927;s:2:"Ý©";i:5928;s:2:"Ù‡";i:5929;s:2:"Ú¾";i:5930;s:2:"Û";i:5931;s:2:"Ûƒ";i:5932;s:2:"Û¿";i:5933;s:2:"Û•";i:5934;s:2:"Ùˆ";i:5935;s:2:"Û„";i:5936;s:2:"Û…";i:5937;s:2:"Û†";i:5938;s:2:"Û‡";i:5939;s:2:"Ûˆ";i:5940;s:2:"Û‰";i:5941;s:2:"ÛŠ";i:5942;s:2:"Û‹";i:5943;s:2:"Û";i:5944;s:2:"ݸ";i:5945;s:2:"ݹ";i:5946;s:2:"Ù‰";i:5947;s:2:"ÙŠ";i:5948;s:2:"ÛŒ";i:5949;s:2:"Û";i:5950;s:2:"ÛŽ";i:5951;s:2:"Û";i:5952;s:2:"Û‘";i:5953;s:2:"ؽ";i:5954;s:2:"ؾ";i:5955;s:2:"Ø¿";i:5956;s:2:"Ø ";i:5957;s:2:"ݵ";i:5958;s:2:"ݶ";i:5959;s:2:"Ý·";i:5960;s:2:"Û’";i:5961;s:2:"ݺ";i:5962;s:2:"Ý»";i:5963;s:2:"Ü";i:5964;s:2:"Ü’";i:5965;s:2:"Ü“";i:5966;s:2:"Ü–";i:5967;s:2:"Ü•";i:5968;s:2:"Ü—";i:5969;s:2:"ܘ";i:5970;s:2:"Ü™";i:5971;s:2:"Ý";i:5972;s:2:"Üš";i:5973;s:2:"Ü›";i:5974;s:2:"Ü";i:5975;s:2:"Üž";i:5976;s:2:"ÜŸ";i:5977;s:2:"ÝŽ";i:5978;s:2:"Ü ";i:5979;s:2:"Ü¡";i:5980;s:2:"Ü¢";i:5981;s:2:"Ü£";i:5982;s:2:"Ü¥";i:5983;s:2:"ܦ";i:5984;s:2:"Ý";i:5985;s:2:"ܨ";i:5986;s:2:"Ü©";i:5987;s:2:"ܪ";i:5988;s:2:"Ü«";i:5989;s:2:"ܬ";i:5990;s:3:"à¡€";i:5991;s:3:"à¡";i:5992;s:3:"à¡‚";i:5993;s:3:"ࡃ";i:5994;s:3:"à¡„";i:5995;s:3:"à¡…";i:5996;s:3:"ࡆ";i:5997;s:3:"ࡇ";i:5998;s:3:"ࡈ";i:5999;s:3:"ࡉ";i:6000;s:3:"à¡Š";i:6001;s:3:"à¡‹";i:6002;s:3:"à¡Œ";i:6003;s:3:"à¡";i:6004;s:3:"à¡Ž";i:6005;s:3:"à¡";i:6006;s:3:"à¡";i:6007;s:3:"à¡‘";i:6008;s:3:"à¡’";i:6009;s:3:"à¡“";i:6010;s:3:"à¡”";i:6011;s:3:"à¡•";i:6012;s:3:"à¡–";i:6013;s:3:"à¡—";i:6014;s:3:"ࡘ";i:6015;s:2:"Þ€";i:6016;s:2:"Þ™";i:6017;s:2:"Þš";i:6018;s:2:"Þ";i:6019;s:2:"Þ‚";i:6020;s:2:"Þƒ";i:6021;s:2:"Þœ";i:6022;s:2:"Þ„";i:6023;s:2:"Þ…";i:6024;s:2:"Þ†";i:6025;s:2:"Þ‡";i:6026;s:2:"Þ¢";i:6027;s:2:"Þ£";i:6028;s:2:"Þˆ";i:6029;s:2:"Þ¥";i:6030;s:2:"Þ‰";i:6031;s:2:"ÞŠ";i:6032;s:2:"Þ‹";i:6033;s:2:"Þ›";i:6034;s:2:"ÞŒ";i:6035;s:2:"Þ˜";i:6036;s:2:"Þ ";i:6037;s:2:"Þ¡";i:6038;s:2:"Þ";i:6039;s:2:"ÞŽ";i:6040;s:2:"Þ¤";i:6041;s:2:"Þ";i:6042;s:2:"Þ";i:6043;s:2:"Þ";i:6044;s:2:"Þž";i:6045;s:2:"ÞŸ";i:6046;s:2:"Þ‘";i:6047;s:2:"Þ’";i:6048;s:2:"Þ“";i:6049;s:2:"Þ”";i:6050;s:2:"Þ•";i:6051;s:2:"Þ–";i:6052;s:2:"Þ—";i:6053;s:2:"Þ±";i:6054;s:2:"ߊ";i:6055;s:2:"ß‹";i:6056;s:2:"ߌ";i:6057;s:2:"ß";i:6058;s:2:"ߎ";i:6059;s:2:"ß";i:6060;s:2:"ß";i:6061;s:2:"ß‘";i:6062;s:2:"ß’";i:6063;s:2:"ß“";i:6064;s:2:"ß”";i:6065;s:2:"ß•";i:6066;s:2:"ß–";i:6067;s:2:"ß—";i:6068;s:2:"ߘ";i:6069;s:2:"ß™";i:6070;s:2:"ßš";i:6071;s:2:"ß›";i:6072;s:2:"ßœ";i:6073;s:2:"ß";i:6074;s:2:"ßž";i:6075;s:2:"ߟ";i:6076;s:2:"ß ";i:6077;s:2:"ß¡";i:6078;s:2:"ߢ";i:6079;s:2:"ߣ";i:6080;s:2:"ߤ";i:6081;s:2:"ߥ";i:6082;s:2:"ߦ";i:6083;s:2:"ߧ";i:6084;s:2:"ß´";i:6085;s:2:"ßµ";i:6086;s:3:"â´°";i:6087;s:3:"â´±";i:6088;s:3:"â´²";i:6089;s:3:"â´³";i:6090;s:3:"â´´";i:6091;s:3:"â´µ";i:6092;s:3:"â´¶";i:6093;s:3:"â´·";i:6094;s:3:"â´¸";i:6095;s:3:"â´¹";i:6096;s:3:"â´º";i:6097;s:3:"â´»";i:6098;s:3:"â´¼";i:6099;s:3:"â´½";i:6100;s:3:"â´¾";i:6101;s:3:"â´¿";i:6102;s:3:"âµ€";i:6103;s:3:"âµ";i:6104;s:3:"ⵂ";i:6105;s:3:"ⵃ";i:6106;s:3:"ⵄ";i:6107;s:3:"âµ…";i:6108;s:3:"ⵆ";i:6109;s:3:"ⵇ";i:6110;s:3:"ⵈ";i:6111;s:3:"ⵉ";i:6112;s:3:"ⵊ";i:6113;s:3:"ⵋ";i:6114;s:3:"ⵌ";i:6115;s:3:"âµ";i:6116;s:3:"ⵎ";i:6117;s:3:"âµ";i:6118;s:3:"âµ";i:6119;s:3:"ⵑ";i:6120;s:3:"âµ’";i:6121;s:3:"ⵓ";i:6122;s:3:"âµ”";i:6123;s:3:"ⵕ";i:6124;s:3:"âµ–";i:6125;s:3:"âµ—";i:6126;s:3:"ⵘ";i:6127;s:3:"âµ™";i:6128;s:3:"ⵚ";i:6129;s:3:"âµ›";i:6130;s:3:"ⵜ";i:6131;s:3:"âµ";i:6132;s:3:"ⵞ";i:6133;s:3:"ⵟ";i:6134;s:3:"âµ ";i:6135;s:3:"ⵡ";i:6136;s:3:"âµ¢";i:6137;s:3:"âµ£";i:6138;s:3:"ⵤ";i:6139;s:3:"âµ¥";i:6140;s:3:"ⵯ";i:6141;s:3:"ሀ";i:6142;s:3:"áˆ";i:6143;s:3:"ሂ";i:6144;s:3:"ሃ";i:6145;s:3:"ሄ";i:6146;s:3:"ህ";i:6147;s:3:"ሆ";i:6148;s:3:"ሇ";i:6149;s:3:"ለ";i:6150;s:3:"ሉ";i:6151;s:3:"ሊ";i:6152;s:3:"ላ";i:6153;s:3:"ሌ";i:6154;s:3:"áˆ";i:6155;s:3:"ሎ";i:6156;s:3:"áˆ";i:6157;s:3:"ⶀ";i:6158;s:3:"áˆ";i:6159;s:3:"ሑ";i:6160;s:3:"ሒ";i:6161;s:3:"ሓ";i:6162;s:3:"ሔ";i:6163;s:3:"ሕ";i:6164;s:3:"ሖ";i:6165;s:3:"ሗ";i:6166;s:3:"መ";i:6167;s:3:"ሙ";i:6168;s:3:"ሚ";i:6169;s:3:"ማ";i:6170;s:3:"ሜ";i:6171;s:3:"áˆ";i:6172;s:3:"ሞ";i:6173;s:3:"ሟ";i:6174;s:3:"ᎀ";i:6175;s:3:"áŽ";i:6176;s:3:"ᎂ";i:6177;s:3:"ᎃ";i:6178;s:3:"â¶";i:6179;s:3:"ሠ";i:6180;s:3:"ሡ";i:6181;s:3:"ሢ";i:6182;s:3:"ሣ";i:6183;s:3:"ሤ";i:6184;s:3:"ሥ";i:6185;s:3:"ሦ";i:6186;s:3:"ሧ";i:6187;s:3:"ረ";i:6188;s:3:"ሩ";i:6189;s:3:"ሪ";i:6190;s:3:"ራ";i:6191;s:3:"ሬ";i:6192;s:3:"ር";i:6193;s:3:"ሮ";i:6194;s:3:"ሯ";i:6195;s:3:"ⶂ";i:6196;s:3:"ሰ";i:6197;s:3:"ሱ";i:6198;s:3:"ሲ";i:6199;s:3:"ሳ";i:6200;s:3:"ሴ";i:6201;s:3:"ስ";i:6202;s:3:"ሶ";i:6203;s:3:"ሷ";i:6204;s:3:"ⶃ";i:6205;s:3:"ê¬";i:6206;s:3:"ꬂ";i:6207;s:3:"ꬃ";i:6208;s:3:"ꬄ";i:6209;s:3:"ꬅ";i:6210;s:3:"ꬆ";i:6211;s:3:"ሸ";i:6212;s:3:"ሹ";i:6213;s:3:"ሺ";i:6214;s:3:"ሻ";i:6215;s:3:"ሼ";i:6216;s:3:"ሽ";i:6217;s:3:"ሾ";i:6218;s:3:"ሿ";i:6219;s:3:"ⶄ";i:6220;s:3:"ቀ";i:6221;s:3:"á‰";i:6222;s:3:"ቂ";i:6223;s:3:"ቃ";i:6224;s:3:"ቄ";i:6225;s:3:"ቅ";i:6226;s:3:"ቆ";i:6227;s:3:"ቇ";i:6228;s:3:"ቈ";i:6229;s:3:"ቊ";i:6230;s:3:"ቋ";i:6231;s:3:"ቌ";i:6232;s:3:"á‰";i:6233;s:3:"á‰";i:6234;s:3:"ቑ";i:6235;s:3:"ቒ";i:6236;s:3:"ቓ";i:6237;s:3:"ቔ";i:6238;s:3:"ቕ";i:6239;s:3:"ቖ";i:6240;s:3:"ቘ";i:6241;s:3:"ቚ";i:6242;s:3:"ቛ";i:6243;s:3:"ቜ";i:6244;s:3:"á‰";i:6245;s:3:"በ";i:6246;s:3:"ቡ";i:6247;s:3:"ቢ";i:6248;s:3:"ባ";i:6249;s:3:"ቤ";i:6250;s:3:"ብ";i:6251;s:3:"ቦ";i:6252;s:3:"ቧ";i:6253;s:3:"ᎄ";i:6254;s:3:"ᎅ";i:6255;s:3:"ᎆ";i:6256;s:3:"ᎇ";i:6257;s:3:"ⶅ";i:6258;s:3:"ቨ";i:6259;s:3:"ቩ";i:6260;s:3:"ቪ";i:6261;s:3:"ቫ";i:6262;s:3:"ቬ";i:6263;s:3:"ቭ";i:6264;s:3:"ቮ";i:6265;s:3:"ቯ";i:6266;s:3:"ተ";i:6267;s:3:"ቱ";i:6268;s:3:"ቲ";i:6269;s:3:"ታ";i:6270;s:3:"ቴ";i:6271;s:3:"ት";i:6272;s:3:"ቶ";i:6273;s:3:"ቷ";i:6274;s:3:"ⶆ";i:6275;s:3:"ቸ";i:6276;s:3:"ቹ";i:6277;s:3:"ቺ";i:6278;s:3:"ቻ";i:6279;s:3:"ቼ";i:6280;s:3:"ች";i:6281;s:3:"ቾ";i:6282;s:3:"ቿ";i:6283;s:3:"ⶇ";i:6284;s:3:"ኀ";i:6285;s:3:"áŠ";i:6286;s:3:"ኂ";i:6287;s:3:"ኃ";i:6288;s:3:"ኄ";i:6289;s:3:"ኅ";i:6290;s:3:"ኆ";i:6291;s:3:"ኇ";i:6292;s:3:"ኈ";i:6293;s:3:"ኊ";i:6294;s:3:"ኋ";i:6295;s:3:"ኌ";i:6296;s:3:"áŠ";i:6297;s:3:"áŠ";i:6298;s:3:"ኑ";i:6299;s:3:"ኒ";i:6300;s:3:"ና";i:6301;s:3:"ኔ";i:6302;s:3:"ን";i:6303;s:3:"ኖ";i:6304;s:3:"ኗ";i:6305;s:3:"ⶈ";i:6306;s:3:"ኘ";i:6307;s:3:"ኙ";i:6308;s:3:"ኚ";i:6309;s:3:"ኛ";i:6310;s:3:"ኜ";i:6311;s:3:"áŠ";i:6312;s:3:"ኞ";i:6313;s:3:"ኟ";i:6314;s:3:"ⶉ";i:6315;s:3:"አ";i:6316;s:3:"ኡ";i:6317;s:3:"ኢ";i:6318;s:3:"ኣ";i:6319;s:3:"ኤ";i:6320;s:3:"እ";i:6321;s:3:"ኦ";i:6322;s:3:"ኧ";i:6323;s:3:"ⶊ";i:6324;s:3:"ከ";i:6325;s:3:"ኩ";i:6326;s:3:"ኪ";i:6327;s:3:"ካ";i:6328;s:3:"ኬ";i:6329;s:3:"ክ";i:6330;s:3:"ኮ";i:6331;s:3:"ኯ";i:6332;s:3:"ኰ";i:6333;s:3:"ኲ";i:6334;s:3:"ኳ";i:6335;s:3:"ኴ";i:6336;s:3:"ኵ";i:6337;s:3:"ኸ";i:6338;s:3:"ኹ";i:6339;s:3:"ኺ";i:6340;s:3:"ኻ";i:6341;s:3:"ኼ";i:6342;s:3:"ኽ";i:6343;s:3:"ኾ";i:6344;s:3:"á‹€";i:6345;s:3:"á‹‚";i:6346;s:3:"ዃ";i:6347;s:3:"á‹„";i:6348;s:3:"á‹…";i:6349;s:3:"ወ";i:6350;s:3:"ዉ";i:6351;s:3:"á‹Š";i:6352;s:3:"á‹‹";i:6353;s:3:"á‹Œ";i:6354;s:3:"á‹";i:6355;s:3:"á‹Ž";i:6356;s:3:"á‹";i:6357;s:3:"á‹";i:6358;s:3:"á‹‘";i:6359;s:3:"á‹’";i:6360;s:3:"á‹“";i:6361;s:3:"á‹”";i:6362;s:3:"á‹•";i:6363;s:3:"á‹–";i:6364;s:3:"ዘ";i:6365;s:3:"á‹™";i:6366;s:3:"á‹š";i:6367;s:3:"á‹›";i:6368;s:3:"á‹œ";i:6369;s:3:"á‹";i:6370;s:3:"á‹ž";i:6371;s:3:"á‹Ÿ";i:6372;s:3:"ⶋ";i:6373;s:3:"ꬑ";i:6374;s:3:"ꬒ";i:6375;s:3:"ꬓ";i:6376;s:3:"ꬔ";i:6377;s:3:"ꬕ";i:6378;s:3:"ꬖ";i:6379;s:3:"á‹ ";i:6380;s:3:"á‹¡";i:6381;s:3:"á‹¢";i:6382;s:3:"á‹£";i:6383;s:3:"ዤ";i:6384;s:3:"á‹¥";i:6385;s:3:"ዦ";i:6386;s:3:"ዧ";i:6387;s:3:"የ";i:6388;s:3:"á‹©";i:6389;s:3:"ዪ";i:6390;s:3:"á‹«";i:6391;s:3:"ዬ";i:6392;s:3:"á‹­";i:6393;s:3:"á‹®";i:6394;s:3:"ዯ";i:6395;s:3:"á‹°";i:6396;s:3:"ዱ";i:6397;s:3:"ዲ";i:6398;s:3:"ዳ";i:6399;s:3:"á‹´";i:6400;s:3:"ድ";i:6401;s:3:"ዶ";i:6402;s:3:"á‹·";i:6403;s:3:"ⶌ";i:6404;s:3:"ꬉ";i:6405;s:3:"ꬊ";i:6406;s:3:"ꬋ";i:6407;s:3:"ꬌ";i:6408;s:3:"ê¬";i:6409;s:3:"ꬎ";i:6410;s:3:"ዸ";i:6411;s:3:"ዹ";i:6412;s:3:"ዺ";i:6413;s:3:"á‹»";i:6414;s:3:"ዼ";i:6415;s:3:"ዽ";i:6416;s:3:"ዾ";i:6417;s:3:"á‹¿";i:6418;s:3:"â¶";i:6419;s:3:"ጀ";i:6420;s:3:"áŒ";i:6421;s:3:"ጂ";i:6422;s:3:"ጃ";i:6423;s:3:"ጄ";i:6424;s:3:"ጅ";i:6425;s:3:"ጆ";i:6426;s:3:"ጇ";i:6427;s:3:"ⶎ";i:6428;s:3:"ገ";i:6429;s:3:"ጉ";i:6430;s:3:"ጊ";i:6431;s:3:"ጋ";i:6432;s:3:"ጌ";i:6433;s:3:"áŒ";i:6434;s:3:"ጎ";i:6435;s:3:"áŒ";i:6436;s:3:"áŒ";i:6437;s:3:"ጒ";i:6438;s:3:"ጓ";i:6439;s:3:"ጔ";i:6440;s:3:"ጕ";i:6441;s:3:"ጘ";i:6442;s:3:"ጙ";i:6443;s:3:"ጚ";i:6444;s:3:"ጛ";i:6445;s:3:"ጜ";i:6446;s:3:"áŒ";i:6447;s:3:"ጞ";i:6448;s:3:"ጟ";i:6449;s:3:"ⶓ";i:6450;s:3:"ⶔ";i:6451;s:3:"ⶕ";i:6452;s:3:"ⶖ";i:6453;s:3:"ጠ";i:6454;s:3:"ጡ";i:6455;s:3:"ጢ";i:6456;s:3:"ጣ";i:6457;s:3:"ጤ";i:6458;s:3:"ጥ";i:6459;s:3:"ጦ";i:6460;s:3:"ጧ";i:6461;s:3:"â¶";i:6462;s:3:"ጨ";i:6463;s:3:"ጩ";i:6464;s:3:"ጪ";i:6465;s:3:"ጫ";i:6466;s:3:"ጬ";i:6467;s:3:"ጭ";i:6468;s:3:"ጮ";i:6469;s:3:"ጯ";i:6470;s:3:"â¶";i:6471;s:3:"ꬠ";i:6472;s:3:"ꬡ";i:6473;s:3:"ꬢ";i:6474;s:3:"ꬣ";i:6475;s:3:"ꬤ";i:6476;s:3:"ꬥ";i:6477;s:3:"ꬦ";i:6478;s:3:"ጰ";i:6479;s:3:"ጱ";i:6480;s:3:"ጲ";i:6481;s:3:"ጳ";i:6482;s:3:"ጴ";i:6483;s:3:"ጵ";i:6484;s:3:"ጶ";i:6485;s:3:"ጷ";i:6486;s:3:"ⶑ";i:6487;s:3:"ጸ";i:6488;s:3:"ጹ";i:6489;s:3:"ጺ";i:6490;s:3:"ጻ";i:6491;s:3:"ጼ";i:6492;s:3:"ጽ";i:6493;s:3:"ጾ";i:6494;s:3:"ጿ";i:6495;s:3:"ꬨ";i:6496;s:3:"ꬩ";i:6497;s:3:"ꬪ";i:6498;s:3:"ꬫ";i:6499;s:3:"ꬬ";i:6500;s:3:"ꬭ";i:6501;s:3:"ꬮ";i:6502;s:3:"á€";i:6503;s:3:"á";i:6504;s:3:"á‚";i:6505;s:3:"áƒ";i:6506;s:3:"á„";i:6507;s:3:"á…";i:6508;s:3:"á†";i:6509;s:3:"á‡";i:6510;s:3:"áˆ";i:6511;s:3:"á‰";i:6512;s:3:"áŠ";i:6513;s:3:"á‹";i:6514;s:3:"áŒ";i:6515;s:3:"á";i:6516;s:3:"áŽ";i:6517;s:3:"á";i:6518;s:3:"ᎈ";i:6519;s:3:"ᎉ";i:6520;s:3:"ᎊ";i:6521;s:3:"ᎋ";i:6522;s:3:"á";i:6523;s:3:"á‘";i:6524;s:3:"á’";i:6525;s:3:"á“";i:6526;s:3:"á”";i:6527;s:3:"á•";i:6528;s:3:"á–";i:6529;s:3:"á—";i:6530;s:3:"ᎌ";i:6531;s:3:"áŽ";i:6532;s:3:"ᎎ";i:6533;s:3:"áŽ";i:6534;s:3:"ⶒ";i:6535;s:3:"á˜";i:6536;s:3:"á™";i:6537;s:3:"áš";i:6538;s:3:"ⶠ";i:6539;s:3:"ⶡ";i:6540;s:3:"ⶢ";i:6541;s:3:"ⶣ";i:6542;s:3:"ⶤ";i:6543;s:3:"ⶥ";i:6544;s:3:"ⶦ";i:6545;s:3:"ⶨ";i:6546;s:3:"ⶩ";i:6547;s:3:"ⶪ";i:6548;s:3:"ⶫ";i:6549;s:3:"ⶬ";i:6550;s:3:"ⶭ";i:6551;s:3:"ⶮ";i:6552;s:3:"ⶰ";i:6553;s:3:"ⶱ";i:6554;s:3:"ⶲ";i:6555;s:3:"ⶳ";i:6556;s:3:"ⶴ";i:6557;s:3:"ⶵ";i:6558;s:3:"ⶶ";i:6559;s:3:"ⶸ";i:6560;s:3:"ⶹ";i:6561;s:3:"ⶺ";i:6562;s:3:"ⶻ";i:6563;s:3:"ⶼ";i:6564;s:3:"ⶽ";i:6565;s:3:"ⶾ";i:6566;s:3:"â·€";i:6567;s:3:"â·";i:6568;s:3:"â·‚";i:6569;s:3:"â·ƒ";i:6570;s:3:"â·„";i:6571;s:3:"â·…";i:6572;s:3:"â·†";i:6573;s:3:"â·ˆ";i:6574;s:3:"â·‰";i:6575;s:3:"â·Š";i:6576;s:3:"â·‹";i:6577;s:3:"â·Œ";i:6578;s:3:"â·";i:6579;s:3:"â·Ž";i:6580;s:3:"â·";i:6581;s:3:"â·‘";i:6582;s:3:"â·’";i:6583;s:3:"â·“";i:6584;s:3:"â·”";i:6585;s:3:"â·•";i:6586;s:3:"â·–";i:6587;s:3:"â·˜";i:6588;s:3:"â·™";i:6589;s:3:"â·š";i:6590;s:3:"â·›";i:6591;s:3:"â·œ";i:6592;s:3:"â·";i:6593;s:3:"â·ž";i:6594;s:3:"à¥";i:6595;s:3:"ॲ";i:6596;s:3:"ऄ";i:6597;s:3:"अ";i:6598;s:3:"आ";i:6599;s:3:"ॳ";i:6600;s:3:"ॴ";i:6601;s:3:"ॵ";i:6602;s:3:"ॶ";i:6603;s:3:"ॷ";i:6604;s:3:"इ";i:6605;s:3:"ई";i:6606;s:3:"उ";i:6607;s:3:"ऊ";i:6608;s:3:"ऋ";i:6609;s:3:"ॠ";i:6610;s:3:"ऌ";i:6611;s:3:"ॡ";i:6612;s:3:"à¤";i:6613;s:3:"ऎ";i:6614;s:3:"à¤";i:6615;s:3:"à¤";i:6616;s:3:"ऑ";i:6617;s:3:"ऒ";i:6618;s:3:"ओ";i:6619;s:3:"औ";i:6620;s:3:"क";i:6621;s:3:"ख";i:6622;s:3:"ग";i:6623;s:3:"ॻ";i:6624;s:3:"घ";i:6625;s:3:"ङ";i:6626;s:3:"च";i:6627;s:3:"छ";i:6628;s:3:"ज";i:6629;s:3:"ॹ";i:6630;s:3:"ॼ";i:6631;s:3:"à¤";i:6632;s:3:"ञ";i:6633;s:3:"ट";i:6634;s:3:"ठ";i:6635;s:3:"ड";i:6636;s:3:"ॾ";i:6637;s:3:"ढ";i:6638;s:3:"ण";i:6639;s:3:"त";i:6640;s:3:"थ";i:6641;s:3:"द";i:6642;s:3:"ध";i:6643;s:3:"न";i:6644;s:3:"प";i:6645;s:3:"फ";i:6646;s:3:"ब";i:6647;s:3:"ॿ";i:6648;s:3:"भ";i:6649;s:3:"म";i:6650;s:3:"य";i:6651;s:3:"ॺ";i:6652;s:3:"र";i:6653;s:3:"ल";i:6654;s:3:"ळ";i:6655;s:3:"व";i:6656;s:3:"श";i:6657;s:3:"ष";i:6658;s:3:"स";i:6659;s:3:"ह";i:6660;s:3:"ऽ";i:6661;s:3:"ॽ";i:6662;s:3:"ᳩ";i:6663;s:3:"ꣲ";i:6664;s:3:"ꣻ";i:6665;s:3:"অ";i:6666;s:3:"আ";i:6667;s:3:"ই";i:6668;s:3:"ঈ";i:6669;s:3:"উ";i:6670;s:3:"ঊ";i:6671;s:3:"ঋ";i:6672;s:3:"ৠ";i:6673;s:3:"ঌ";i:6674;s:3:"ৡ";i:6675;s:3:"à¦";i:6676;s:3:"à¦";i:6677;s:3:"ও";i:6678;s:3:"ঔ";i:6679;s:3:"ক";i:6680;s:3:"খ";i:6681;s:3:"গ";i:6682;s:3:"ঘ";i:6683;s:3:"ঙ";i:6684;s:3:"চ";i:6685;s:3:"ছ";i:6686;s:3:"জ";i:6687;s:3:"à¦";i:6688;s:3:"ঞ";i:6689;s:3:"ট";i:6690;s:3:"ঠ";i:6691;s:3:"ড";i:6692;s:3:"ঢ";i:6693;s:3:"ণ";i:6694;s:3:"ত";i:6695;s:3:"থ";i:6696;s:3:"দ";i:6697;s:3:"ধ";i:6698;s:3:"ন";i:6699;s:3:"প";i:6700;s:3:"ফ";i:6701;s:3:"ব";i:6702;s:3:"ভ";i:6703;s:3:"ম";i:6704;s:3:"য";i:6705;s:3:"র";i:6706;s:3:"ৰ";i:6707;s:3:"ল";i:6708;s:3:"ৱ";i:6709;s:3:"শ";i:6710;s:3:"ষ";i:6711;s:3:"স";i:6712;s:3:"হ";i:6713;s:3:"ঽ";i:6714;s:3:"à©´";i:6715;s:3:"ੳ";i:6716;s:3:"ਉ";i:6717;s:3:"ਊ";i:6718;s:3:"ਓ";i:6719;s:3:"ਅ";i:6720;s:3:"ਆ";i:6721;s:3:"à¨";i:6722;s:3:"ਔ";i:6723;s:3:"ੲ";i:6724;s:3:"ਇ";i:6725;s:3:"ਈ";i:6726;s:3:"à¨";i:6727;s:3:"ਸ";i:6728;s:3:"ਹ";i:6729;s:3:"ਕ";i:6730;s:3:"ਖ";i:6731;s:3:"ਗ";i:6732;s:3:"ਘ";i:6733;s:3:"ਙ";i:6734;s:3:"ਚ";i:6735;s:3:"ਛ";i:6736;s:3:"ਜ";i:6737;s:3:"à¨";i:6738;s:3:"ਞ";i:6739;s:3:"ਟ";i:6740;s:3:"ਠ";i:6741;s:3:"ਡ";i:6742;s:3:"ਢ";i:6743;s:3:"ਣ";i:6744;s:3:"ਤ";i:6745;s:3:"ਥ";i:6746;s:3:"ਦ";i:6747;s:3:"ਧ";i:6748;s:3:"ਨ";i:6749;s:3:"ਪ";i:6750;s:3:"ਫ";i:6751;s:3:"ਬ";i:6752;s:3:"ਭ";i:6753;s:3:"ਮ";i:6754;s:3:"ਯ";i:6755;s:3:"ਰ";i:6756;s:3:"ਲ";i:6757;s:3:"ਵ";i:6758;s:3:"à©œ";i:6759;s:3:"à«";i:6760;s:3:"અ";i:6761;s:3:"આ";i:6762;s:3:"ઇ";i:6763;s:3:"ઈ";i:6764;s:3:"ઉ";i:6765;s:3:"ઊ";i:6766;s:3:"ઋ";i:6767;s:3:"à« ";i:6768;s:3:"ઌ";i:6769;s:3:"à«¡";i:6770;s:3:"àª";i:6771;s:3:"àª";i:6772;s:3:"àª";i:6773;s:3:"ઑ";i:6774;s:3:"ઓ";i:6775;s:3:"ઔ";i:6776;s:3:"ક";i:6777;s:3:"ખ";i:6778;s:3:"ગ";i:6779;s:3:"ઘ";i:6780;s:3:"ઙ";i:6781;s:3:"ચ";i:6782;s:3:"છ";i:6783;s:3:"જ";i:6784;s:3:"àª";i:6785;s:3:"ઞ";i:6786;s:3:"ટ";i:6787;s:3:"ઠ";i:6788;s:3:"ડ";i:6789;s:3:"ઢ";i:6790;s:3:"ણ";i:6791;s:3:"ત";i:6792;s:3:"થ";i:6793;s:3:"દ";i:6794;s:3:"ધ";i:6795;s:3:"ન";i:6796;s:3:"પ";i:6797;s:3:"ફ";i:6798;s:3:"બ";i:6799;s:3:"ભ";i:6800;s:3:"મ";i:6801;s:3:"ય";i:6802;s:3:"ર";i:6803;s:3:"લ";i:6804;s:3:"વ";i:6805;s:3:"શ";i:6806;s:3:"ષ";i:6807;s:3:"સ";i:6808;s:3:"હ";i:6809;s:3:"ળ";i:6810;s:3:"ઽ";i:6811;s:3:"ଅ";i:6812;s:3:"ଆ";i:6813;s:3:"ଇ";i:6814;s:3:"ଈ";i:6815;s:3:"ଉ";i:6816;s:3:"ଊ";i:6817;s:3:"ଋ";i:6818;s:3:"à­ ";i:6819;s:3:"ଌ";i:6820;s:3:"à­¡";i:6821;s:3:"à¬";i:6822;s:3:"à¬";i:6823;s:3:"ଓ";i:6824;s:3:"ଔ";i:6825;s:3:"କ";i:6826;s:3:"ଖ";i:6827;s:3:"ଗ";i:6828;s:3:"ଘ";i:6829;s:3:"ଙ";i:6830;s:3:"ଚ";i:6831;s:3:"ଛ";i:6832;s:3:"ଜ";i:6833;s:3:"à¬";i:6834;s:3:"ଞ";i:6835;s:3:"ଟ";i:6836;s:3:"ଠ";i:6837;s:3:"ଡ";i:6838;s:3:"ଢ";i:6839;s:3:"ଣ";i:6840;s:3:"ତ";i:6841;s:3:"ଥ";i:6842;s:3:"ଦ";i:6843;s:3:"ଧ";i:6844;s:3:"ନ";i:6845;s:3:"ପ";i:6846;s:3:"ଫ";i:6847;s:3:"ବ";i:6848;s:3:"ଭ";i:6849;s:3:"ମ";i:6850;s:3:"ଯ";i:6851;s:3:"à­Ÿ";i:6852;s:3:"ର";i:6853;s:3:"ଲ";i:6854;s:3:"ଳ";i:6855;s:3:"ଵ";i:6856;s:3:"à­±";i:6857;s:3:"ଶ";i:6858;s:3:"ଷ";i:6859;s:3:"ସ";i:6860;s:3:"ହ";i:6861;s:3:"ଽ";i:6862;s:3:"à¯";i:6863;s:3:"à®…";i:6864;s:3:"ஆ";i:6865;s:3:"இ";i:6866;s:3:"ஈ";i:6867;s:3:"உ";i:6868;s:3:"ஊ";i:6869;s:3:"எ";i:6870;s:3:"à®";i:6871;s:3:"à®";i:6872;s:3:"à®’";i:6873;s:3:"ஓ";i:6874;s:3:"à®”";i:6875;s:3:"ஃ";i:6876;s:3:"க";i:6877;s:3:"à®™";i:6878;s:3:"ச";i:6879;s:3:"ஞ";i:6880;s:3:"ட";i:6881;s:3:"ண";i:6882;s:3:"த";i:6883;s:3:"ந";i:6884;s:3:"ப";i:6885;s:3:"à®®";i:6886;s:3:"ய";i:6887;s:3:"à®°";i:6888;s:3:"ல";i:6889;s:3:"வ";i:6890;s:3:"à®´";i:6891;s:3:"ள";i:6892;s:3:"à®±";i:6893;s:3:"ன";i:6894;s:3:"ஜ";i:6895;s:3:"ஶ";i:6896;s:3:"à®·";i:6897;s:3:"ஸ";i:6898;s:3:"ஹ";i:6899;s:3:"à°…";i:6900;s:3:"à°†";i:6901;s:3:"à°‡";i:6902;s:3:"à°ˆ";i:6903;s:3:"à°‰";i:6904;s:3:"à°Š";i:6905;s:3:"à°‹";i:6906;s:3:"à± ";i:6907;s:3:"à°Œ";i:6908;s:3:"ౡ";i:6909;s:3:"à°Ž";i:6910;s:3:"à°";i:6911;s:3:"à°";i:6912;s:3:"à°’";i:6913;s:3:"à°“";i:6914;s:3:"à°”";i:6915;s:3:"à°•";i:6916;s:3:"à°–";i:6917;s:3:"à°—";i:6918;s:3:"à°˜";i:6919;s:3:"à°™";i:6920;s:3:"à°š";i:6921;s:3:"ౘ";i:6922;s:3:"à°›";i:6923;s:3:"à°œ";i:6924;s:3:"à±™";i:6925;s:3:"à°";i:6926;s:3:"à°ž";i:6927;s:3:"à°Ÿ";i:6928;s:3:"à° ";i:6929;s:3:"à°¡";i:6930;s:3:"à°¢";i:6931;s:3:"à°£";i:6932;s:3:"à°¤";i:6933;s:3:"à°¥";i:6934;s:3:"à°¦";i:6935;s:3:"à°§";i:6936;s:3:"à°¨";i:6937;s:3:"à°ª";i:6938;s:3:"à°«";i:6939;s:3:"à°¬";i:6940;s:3:"à°­";i:6941;s:3:"à°®";i:6942;s:3:"à°¯";i:6943;s:3:"à°°";i:6944;s:3:"à°±";i:6945;s:3:"à°²";i:6946;s:3:"à°µ";i:6947;s:3:"à°¶";i:6948;s:3:"à°·";i:6949;s:3:"à°¸";i:6950;s:3:"à°¹";i:6951;s:3:"à°³";i:6952;s:3:"à°½";i:6953;s:3:"ಅ";i:6954;s:3:"ಆ";i:6955;s:3:"ಇ";i:6956;s:3:"ಈ";i:6957;s:3:"ಉ";i:6958;s:3:"ಊ";i:6959;s:3:"ಋ";i:6960;s:3:"à³ ";i:6961;s:3:"ಌ";i:6962;s:3:"ೡ";i:6963;s:3:"ಎ";i:6964;s:3:"à²";i:6965;s:3:"à²";i:6966;s:3:"ಒ";i:6967;s:3:"ಓ";i:6968;s:3:"ಔ";i:6969;s:3:"ಕ";i:6970;s:3:"ಖ";i:6971;s:3:"ಗ";i:6972;s:3:"ಘ";i:6973;s:3:"ಙ";i:6974;s:3:"ಚ";i:6975;s:3:"ಛ";i:6976;s:3:"ಜ";i:6977;s:3:"à²";i:6978;s:3:"ಞ";i:6979;s:3:"ಟ";i:6980;s:3:"ಠ";i:6981;s:3:"ಡ";i:6982;s:3:"ಢ";i:6983;s:3:"ಣ";i:6984;s:3:"ತ";i:6985;s:3:"ಥ";i:6986;s:3:"ದ";i:6987;s:3:"ಧ";i:6988;s:3:"ನ";i:6989;s:3:"ಪ";i:6990;s:3:"ಫ";i:6991;s:3:"ಬ";i:6992;s:3:"ಭ";i:6993;s:3:"ಮ";i:6994;s:3:"ಯ";i:6995;s:3:"ರ";i:6996;s:3:"ಱ";i:6997;s:3:"ಲ";i:6998;s:3:"ವ";i:6999;s:3:"ಶ";i:7000;s:3:"ಷ";i:7001;s:3:"ಸ";i:7002;s:3:"ಹ";i:7003;s:3:"ಳ";i:7004;s:3:"ೞ";i:7005;s:3:"ಽ";i:7006;s:3:"à³±";i:7007;s:3:"à³²";i:7008;s:3:"à´…";i:7009;s:3:"à´†";i:7010;s:3:"à´‡";i:7011;s:3:"à´ˆ";i:7012;s:3:"à´‰";i:7013;s:3:"à´Š";i:7014;s:3:"à´‹";i:7015;s:3:"ൠ";i:7016;s:3:"à´Œ";i:7017;s:3:"ൡ";i:7018;s:3:"à´Ž";i:7019;s:3:"à´";i:7020;s:3:"à´";i:7021;s:3:"à´’";i:7022;s:3:"à´“";i:7023;s:3:"à´”";i:7024;s:3:"à´•";i:7025;s:3:"à´–";i:7026;s:3:"à´—";i:7027;s:3:"à´˜";i:7028;s:3:"à´™";i:7029;s:3:"à´š";i:7030;s:3:"à´›";i:7031;s:3:"à´œ";i:7032;s:3:"à´";i:7033;s:3:"à´ž";i:7034;s:3:"à´Ÿ";i:7035;s:3:"à´ ";i:7036;s:3:"à´¡";i:7037;s:3:"à´¢";i:7038;s:3:"à´£";i:7039;s:3:"à´¤";i:7040;s:3:"à´¥";i:7041;s:3:"à´¦";i:7042;s:3:"à´§";i:7043;s:3:"à´¨";i:7044;s:3:"à´©";i:7045;s:3:"à´ª";i:7046;s:3:"à´«";i:7047;s:3:"à´¬";i:7048;s:3:"à´­";i:7049;s:3:"à´®";i:7050;s:3:"à´¯";i:7051;s:3:"à´°";i:7052;s:3:"à´²";i:7053;s:3:"à´µ";i:7054;s:3:"à´¶";i:7055;s:3:"à´·";i:7056;s:3:"à´¸";i:7057;s:3:"à´¹";i:7058;s:3:"à´³";i:7059;s:3:"à´´";i:7060;s:3:"à´±";i:7061;s:3:"à´º";i:7062;s:3:"à´½";i:7063;s:3:"අ";i:7064;s:3:"ආ";i:7065;s:3:"ඇ";i:7066;s:3:"ඈ";i:7067;s:3:"ඉ";i:7068;s:3:"ඊ";i:7069;s:3:"උ";i:7070;s:3:"ඌ";i:7071;s:3:"à¶";i:7072;s:3:"ඎ";i:7073;s:3:"à¶";i:7074;s:3:"à¶";i:7075;s:3:"එ";i:7076;s:3:"ඒ";i:7077;s:3:"ඓ";i:7078;s:3:"ඔ";i:7079;s:3:"ඕ";i:7080;s:3:"ඖ";i:7081;s:3:"ක";i:7082;s:3:"ඛ";i:7083;s:3:"ග";i:7084;s:3:"à¶";i:7085;s:3:"ඞ";i:7086;s:3:"ඟ";i:7087;s:3:"ච";i:7088;s:3:"ඡ";i:7089;s:3:"ජ";i:7090;s:3:"ඣ";i:7091;s:3:"ඤ";i:7092;s:3:"ඥ";i:7093;s:3:"ඦ";i:7094;s:3:"ට";i:7095;s:3:"ඨ";i:7096;s:3:"ඩ";i:7097;s:3:"ඪ";i:7098;s:3:"ණ";i:7099;s:3:"ඬ";i:7100;s:3:"ත";i:7101;s:3:"ථ";i:7102;s:3:"ද";i:7103;s:3:"ධ";i:7104;s:3:"න";i:7105;s:3:"ඳ";i:7106;s:3:"ප";i:7107;s:3:"ඵ";i:7108;s:3:"බ";i:7109;s:3:"භ";i:7110;s:3:"ම";i:7111;s:3:"ඹ";i:7112;s:3:"ය";i:7113;s:3:"ර";i:7114;s:3:"ල";i:7115;s:3:"à·€";i:7116;s:3:"à·";i:7117;s:3:"à·‚";i:7118;s:3:"à·ƒ";i:7119;s:3:"à·„";i:7120;s:3:"à·…";i:7121;s:3:"à·†";i:7122;s:3:"ꯀ";i:7123;s:3:"ê¯";i:7124;s:3:"ꯂ";i:7125;s:3:"ꯃ";i:7126;s:3:"ꯄ";i:7127;s:3:"ꯅ";i:7128;s:3:"ꯆ";i:7129;s:3:"ꯇ";i:7130;s:3:"ꯈ";i:7131;s:3:"ꯉ";i:7132;s:3:"ꯊ";i:7133;s:3:"ꯋ";i:7134;s:3:"ꯌ";i:7135;s:3:"ê¯";i:7136;s:3:"ꯎ";i:7137;s:3:"ê¯";i:7138;s:3:"ê¯";i:7139;s:3:"ꯑ";i:7140;s:3:"ꯒ";i:7141;s:3:"ꯓ";i:7142;s:3:"ꯔ";i:7143;s:3:"ꯕ";i:7144;s:3:"ꯖ";i:7145;s:3:"ꯗ";i:7146;s:3:"ꯘ";i:7147;s:3:"ꯙ";i:7148;s:3:"ꯚ";i:7149;s:3:"ꯛ";i:7150;s:3:"ꯜ";i:7151;s:3:"ê¯";i:7152;s:3:"ꯞ";i:7153;s:3:"ꯟ";i:7154;s:3:"ꯠ";i:7155;s:3:"ꯡ";i:7156;s:3:"ꯢ";i:7157;s:3:"ê €";i:7158;s:3:"ê ";i:7159;s:3:"ê ƒ";i:7160;s:3:"ê „";i:7161;s:3:"ê …";i:7162;s:3:"ê ‡";i:7163;s:3:"ê ˆ";i:7164;s:3:"ê ‰";i:7165;s:3:"ê Š";i:7166;s:3:"ê Œ";i:7167;s:3:"ê ";i:7168;s:3:"ê Ž";i:7169;s:3:"ê ";i:7170;s:3:"ê ";i:7171;s:3:"ê ‘";i:7172;s:3:"ê ’";i:7173;s:3:"ê “";i:7174;s:3:"ê ”";i:7175;s:3:"ê •";i:7176;s:3:"ê –";i:7177;s:3:"ê —";i:7178;s:3:"ê ˜";i:7179;s:3:"ê ™";i:7180;s:3:"ê š";i:7181;s:3:"ê ›";i:7182;s:3:"ê œ";i:7183;s:3:"ê ";i:7184;s:3:"ê ž";i:7185;s:3:"ê Ÿ";i:7186;s:3:"ê  ";i:7187;s:3:"ê ¡";i:7188;s:3:"ê ¢";i:7189;s:3:"ꢂ";i:7190;s:3:"ꢃ";i:7191;s:3:"ꢄ";i:7192;s:3:"ꢅ";i:7193;s:3:"ꢆ";i:7194;s:3:"ꢇ";i:7195;s:3:"ꢈ";i:7196;s:3:"ꢉ";i:7197;s:3:"ꢊ";i:7198;s:3:"ꢋ";i:7199;s:3:"ꢌ";i:7200;s:3:"ê¢";i:7201;s:3:"ꢎ";i:7202;s:3:"ê¢";i:7203;s:3:"ê¢";i:7204;s:3:"ꢑ";i:7205;s:3:"ꢒ";i:7206;s:3:"ꢓ";i:7207;s:3:"ꢔ";i:7208;s:3:"ꢕ";i:7209;s:3:"ꢖ";i:7210;s:3:"ꢗ";i:7211;s:3:"ꢘ";i:7212;s:3:"ꢙ";i:7213;s:3:"ꢚ";i:7214;s:3:"ꢛ";i:7215;s:3:"ꢜ";i:7216;s:3:"ê¢";i:7217;s:3:"ꢞ";i:7218;s:3:"ꢟ";i:7219;s:3:"ꢠ";i:7220;s:3:"ꢡ";i:7221;s:3:"ꢢ";i:7222;s:3:"ꢣ";i:7223;s:3:"ꢤ";i:7224;s:3:"ꢥ";i:7225;s:3:"ꢦ";i:7226;s:3:"ꢧ";i:7227;s:3:"ꢨ";i:7228;s:3:"ꢩ";i:7229;s:3:"ꢪ";i:7230;s:3:"ꢫ";i:7231;s:3:"ꢬ";i:7232;s:3:"ꢭ";i:7233;s:3:"ꢮ";i:7234;s:3:"ꢯ";i:7235;s:3:"ꢰ";i:7236;s:3:"ꢱ";i:7237;s:3:"ꢲ";i:7238;s:3:"ꢳ";i:7239;s:4:"𑂃";i:7240;s:4:"ð‘‚„";i:7241;s:4:"ð‘‚…";i:7242;s:4:"𑂆";i:7243;s:4:"𑂇";i:7244;s:4:"𑂈";i:7245;s:4:"𑂉";i:7246;s:4:"ð‘‚Š";i:7247;s:4:"ð‘‚‹";i:7248;s:4:"ð‘‚Œ";i:7249;s:4:"ð‘‚";i:7250;s:4:"ð‘‚Ž";i:7251;s:4:"ð‘‚";i:7252;s:4:"ð‘‚";i:7253;s:4:"ð‘‚‘";i:7254;s:4:"ð‘‚’";i:7255;s:4:"ð‘‚“";i:7256;s:4:"ð‘‚”";i:7257;s:4:"ð‘‚•";i:7258;s:4:"ð‘‚–";i:7259;s:4:"ð‘‚—";i:7260;s:4:"𑂘";i:7261;s:4:"ð‘‚™";i:7262;s:4:"ð‘‚›";i:7263;s:4:"ð‘‚";i:7264;s:4:"ð‘‚ž";i:7265;s:4:"ð‘‚Ÿ";i:7266;s:4:"ð‘‚ ";i:7267;s:4:"ð‘‚¡";i:7268;s:4:"ð‘‚¢";i:7269;s:4:"ð‘‚£";i:7270;s:4:"𑂤";i:7271;s:4:"ð‘‚¥";i:7272;s:4:"𑂦";i:7273;s:4:"𑂧";i:7274;s:4:"𑂨";i:7275;s:4:"ð‘‚©";i:7276;s:4:"𑂪";i:7277;s:4:"𑂬";i:7278;s:4:"ð‘‚­";i:7279;s:4:"ð‘‚®";i:7280;s:4:"𑂯";i:7281;s:3:"ᮃ";i:7282;s:3:"ᮄ";i:7283;s:3:"á®…";i:7284;s:3:"ᮆ";i:7285;s:3:"ᮇ";i:7286;s:3:"ᮈ";i:7287;s:3:"ᮉ";i:7288;s:3:"ᮊ";i:7289;s:3:"á®®";i:7290;s:3:"ᮋ";i:7291;s:3:"ᮌ";i:7292;s:3:"á®";i:7293;s:3:"ᮎ";i:7294;s:3:"á®";i:7295;s:3:"á®";i:7296;s:3:"ᮑ";i:7297;s:3:"á®’";i:7298;s:3:"ᮓ";i:7299;s:3:"á®”";i:7300;s:3:"ᮕ";i:7301;s:3:"á®–";i:7302;s:3:"á®—";i:7303;s:3:"ᮘ";i:7304;s:3:"á®™";i:7305;s:3:"ᮚ";i:7306;s:3:"á®›";i:7307;s:3:"ᮜ";i:7308;s:3:"á®";i:7309;s:3:"ᮞ";i:7310;s:3:"ᮟ";i:7311;s:3:"ᮯ";i:7312;s:3:"á® ";i:7313;s:4:"ð‘€…";i:7314;s:4:"𑀆";i:7315;s:4:"𑀇";i:7316;s:4:"𑀈";i:7317;s:4:"𑀉";i:7318;s:4:"𑀊";i:7319;s:4:"𑀋";i:7320;s:4:"𑀌";i:7321;s:4:"ð‘€";i:7322;s:4:"𑀎";i:7323;s:4:"ð‘€";i:7324;s:4:"ð‘€";i:7325;s:4:"𑀑";i:7326;s:4:"ð‘€’";i:7327;s:4:"𑀓";i:7328;s:4:"ð‘€”";i:7329;s:4:"𑀕";i:7330;s:4:"ð‘€–";i:7331;s:4:"ð‘€—";i:7332;s:4:"𑀘";i:7333;s:4:"ð‘€™";i:7334;s:4:"𑀚";i:7335;s:4:"ð‘€›";i:7336;s:4:"𑀜";i:7337;s:4:"ð‘€";i:7338;s:4:"𑀞";i:7339;s:4:"𑀟";i:7340;s:4:"ð‘€ ";i:7341;s:4:"𑀡";i:7342;s:4:"ð‘€¢";i:7343;s:4:"ð‘€£";i:7344;s:4:"𑀤";i:7345;s:4:"ð‘€¥";i:7346;s:4:"𑀦";i:7347;s:4:"𑀧";i:7348;s:4:"𑀨";i:7349;s:4:"𑀩";i:7350;s:4:"𑀪";i:7351;s:4:"𑀫";i:7352;s:4:"𑀬";i:7353;s:4:"ð‘€­";i:7354;s:4:"ð‘€®";i:7355;s:4:"𑀯";i:7356;s:4:"ð‘€°";i:7357;s:4:"ð‘€±";i:7358;s:4:"ð‘€²";i:7359;s:4:"ð‘€³";i:7360;s:4:"𑀃";i:7361;s:4:"𑀄";i:7362;s:4:"ð‘€´";i:7363;s:4:"ð‘€µ";i:7364;s:4:"𑀶";i:7365;s:4:"ð‘€·";i:7366;s:4:"ð¨€";i:7367;s:4:"ð¨";i:7368;s:4:"ð¨‘";i:7369;s:4:"ð¨’";i:7370;s:4:"ð¨“";i:7371;s:4:"ð¨•";i:7372;s:4:"ð¨–";i:7373;s:4:"ð¨—";i:7374;s:4:"ð¨™";i:7375;s:4:"ð¨š";i:7376;s:4:"ð¨›";i:7377;s:4:"ð¨œ";i:7378;s:4:"ð¨";i:7379;s:4:"ð¨ž";i:7380;s:4:"ð¨Ÿ";i:7381;s:4:"ð¨ ";i:7382;s:4:"ð¨¡";i:7383;s:4:"ð¨¢";i:7384;s:4:"ð¨£";i:7385;s:4:"ð¨¤";i:7386;s:4:"ð¨¥";i:7387;s:4:"ð¨¦";i:7388;s:4:"ð¨§";i:7389;s:4:"ð¨¨";i:7390;s:4:"ð¨©";i:7391;s:4:"ð¨ª";i:7392;s:4:"ð¨«";i:7393;s:4:"ð¨¬";i:7394;s:4:"ð¨­";i:7395;s:4:"ð¨®";i:7396;s:4:"ð¨¯";i:7397;s:4:"ð¨°";i:7398;s:4:"ð¨±";i:7399;s:4:"ð¨²";i:7400;s:4:"ð¨³";i:7401;s:3:"à¸";i:7402;s:3:"ข";i:7403;s:3:"ฃ";i:7404;s:3:"ค";i:7405;s:3:"ฅ";i:7406;s:3:"ฆ";i:7407;s:3:"ง";i:7408;s:3:"จ";i:7409;s:3:"ฉ";i:7410;s:3:"ช";i:7411;s:3:"ซ";i:7412;s:3:"ฌ";i:7413;s:3:"à¸";i:7414;s:3:"ฎ";i:7415;s:3:"à¸";i:7416;s:3:"à¸";i:7417;s:3:"ฑ";i:7418;s:3:"ฒ";i:7419;s:3:"ณ";i:7420;s:3:"ด";i:7421;s:3:"ต";i:7422;s:3:"ถ";i:7423;s:3:"ท";i:7424;s:3:"ธ";i:7425;s:3:"น";i:7426;s:3:"บ";i:7427;s:3:"ป";i:7428;s:3:"ผ";i:7429;s:3:"à¸";i:7430;s:3:"พ";i:7431;s:3:"ฟ";i:7432;s:3:"ภ";i:7433;s:3:"ม";i:7434;s:3:"ย";i:7435;s:3:"ร";i:7436;s:3:"ฤ";i:7437;s:3:"ล";i:7438;s:3:"ฦ";i:7439;s:3:"ว";i:7440;s:3:"ศ";i:7441;s:3:"ษ";i:7442;s:3:"ส";i:7443;s:3:"ห";i:7444;s:3:"ฬ";i:7445;s:3:"อ";i:7446;s:3:"ฮ";i:7447;s:3:"ฯ";i:7448;s:3:"ะ";i:7449;s:3:"า";i:7450;s:3:"ำ";i:7451;s:3:"เ";i:7452;s:3:"à¹";i:7453;s:3:"โ";i:7454;s:3:"ใ";i:7455;s:3:"ไ";i:7456;s:3:"ๅ";i:7457;s:3:"àº";i:7458;s:3:"ຂ";i:7459;s:3:"ຄ";i:7460;s:3:"ງ";i:7461;s:3:"ຈ";i:7462;s:3:"ສ";i:7463;s:3:"ຊ";i:7464;s:3:"àº";i:7465;s:3:"ດ";i:7466;s:3:"ຕ";i:7467;s:3:"ຖ";i:7468;s:3:"ທ";i:7469;s:3:"ນ";i:7470;s:3:"ບ";i:7471;s:3:"ປ";i:7472;s:3:"ຜ";i:7473;s:3:"àº";i:7474;s:3:"ພ";i:7475;s:3:"ຟ";i:7476;s:3:"ມ";i:7477;s:3:"ຢ";i:7478;s:3:"ຣ";i:7479;s:3:"ລ";i:7480;s:3:"ວ";i:7481;s:3:"ຫ";i:7482;s:3:"ອ";i:7483;s:3:"ຮ";i:7484;s:3:"ຯ";i:7485;s:3:"ະ";i:7486;s:3:"າ";i:7487;s:3:"ຳ";i:7488;s:3:"ຽ";i:7489;s:3:"ເ";i:7490;s:3:"à»";i:7491;s:3:"ໂ";i:7492;s:3:"ໃ";i:7493;s:3:"ໄ";i:7494;s:3:"ꪀ";i:7495;s:3:"êª";i:7496;s:3:"ꪂ";i:7497;s:3:"ꪃ";i:7498;s:3:"ꪄ";i:7499;s:3:"ꪅ";i:7500;s:3:"ꪆ";i:7501;s:3:"ꪇ";i:7502;s:3:"ꪈ";i:7503;s:3:"ꪉ";i:7504;s:3:"ꪊ";i:7505;s:3:"ꪋ";i:7506;s:3:"ꪌ";i:7507;s:3:"êª";i:7508;s:3:"ꪎ";i:7509;s:3:"êª";i:7510;s:3:"êª";i:7511;s:3:"ꪑ";i:7512;s:3:"ꪒ";i:7513;s:3:"ꪓ";i:7514;s:3:"ꪔ";i:7515;s:3:"ꪕ";i:7516;s:3:"ꪖ";i:7517;s:3:"ꪗ";i:7518;s:3:"ꪘ";i:7519;s:3:"ꪙ";i:7520;s:3:"ꪚ";i:7521;s:3:"ꪛ";i:7522;s:3:"ꪜ";i:7523;s:3:"êª";i:7524;s:3:"ꪞ";i:7525;s:3:"ꪟ";i:7526;s:3:"ꪠ";i:7527;s:3:"ꪡ";i:7528;s:3:"ꪢ";i:7529;s:3:"ꪣ";i:7530;s:3:"ꪤ";i:7531;s:3:"ꪥ";i:7532;s:3:"ꪦ";i:7533;s:3:"ꪧ";i:7534;s:3:"ꪨ";i:7535;s:3:"ꪩ";i:7536;s:3:"ꪪ";i:7537;s:3:"ꪫ";i:7538;s:3:"ꪬ";i:7539;s:3:"ꪭ";i:7540;s:3:"ꪮ";i:7541;s:3:"ꪯ";i:7542;s:3:"ꪱ";i:7543;s:3:"ꪵ";i:7544;s:3:"ꪶ";i:7545;s:3:"ꪹ";i:7546;s:3:"ꪺ";i:7547;s:3:"ꪻ";i:7548;s:3:"ꪼ";i:7549;s:3:"ꪽ";i:7550;s:3:"ê«€";i:7551;s:3:"ê«‚";i:7552;s:3:"ê«›";i:7553;s:3:"ê«œ";i:7554;s:3:"ཀ";i:7555;s:3:"ཫ";i:7556;s:3:"à½";i:7557;s:3:"ག";i:7558;s:3:"ང";i:7559;s:3:"ཅ";i:7560;s:3:"ཆ";i:7561;s:3:"ཇ";i:7562;s:3:"ཉ";i:7563;s:3:"ཊ";i:7564;s:3:"ཋ";i:7565;s:3:"ཌ";i:7566;s:3:"ཎ";i:7567;s:3:"à½";i:7568;s:3:"à½";i:7569;s:3:"ད";i:7570;s:3:"ན";i:7571;s:3:"པ";i:7572;s:3:"ཕ";i:7573;s:3:"བ";i:7574;s:3:"མ";i:7575;s:3:"ཙ";i:7576;s:3:"ཚ";i:7577;s:3:"ཛ";i:7578;s:3:"à½";i:7579;s:3:"ཞ";i:7580;s:3:"ཟ";i:7581;s:3:"འ";i:7582;s:3:"ཡ";i:7583;s:3:"ར";i:7584;s:3:"ཬ";i:7585;s:3:"ལ";i:7586;s:3:"ཤ";i:7587;s:3:"ཥ";i:7588;s:3:"ས";i:7589;s:3:"ཧ";i:7590;s:3:"ཨ";i:7591;s:3:"ྈ";i:7592;s:3:"ྉ";i:7593;s:3:"ྌ";i:7594;s:3:"ྊ";i:7595;s:3:"ྋ";i:7596;s:3:"á°€";i:7597;s:3:"á°";i:7598;s:3:"á°‚";i:7599;s:3:"á°ƒ";i:7600;s:3:"á°„";i:7601;s:3:"á°…";i:7602;s:3:"á°†";i:7603;s:3:"á°‡";i:7604;s:3:"á°ˆ";i:7605;s:3:"á°‰";i:7606;s:3:"á±";i:7607;s:3:"ᱎ";i:7608;s:3:"á±";i:7609;s:3:"á°Š";i:7610;s:3:"á°‹";i:7611;s:3:"á°Œ";i:7612;s:3:"á°";i:7613;s:3:"á°Ž";i:7614;s:3:"á°";i:7615;s:3:"á°";i:7616;s:3:"á°‘";i:7617;s:3:"á°’";i:7618;s:3:"á°“";i:7619;s:3:"á°”";i:7620;s:3:"á°•";i:7621;s:3:"á°–";i:7622;s:3:"á°—";i:7623;s:3:"á°˜";i:7624;s:3:"á°™";i:7625;s:3:"á°š";i:7626;s:3:"á°›";i:7627;s:3:"á°œ";i:7628;s:3:"á°";i:7629;s:3:"á°ž";i:7630;s:3:"á°Ÿ";i:7631;s:3:"á° ";i:7632;s:3:"á°¡";i:7633;s:3:"á°¢";i:7634;s:3:"á°£";i:7635;s:3:"ê¡€";i:7636;s:3:"ê¡";i:7637;s:3:"ê¡‚";i:7638;s:3:"ꡃ";i:7639;s:3:"ê¡„";i:7640;s:3:"ê¡…";i:7641;s:3:"ꡆ";i:7642;s:3:"ꡇ";i:7643;s:3:"ê¡©";i:7644;s:3:"ꡪ";i:7645;s:3:"ê¡«";i:7646;s:3:"ꡬ";i:7647;s:3:"ꡈ";i:7648;s:3:"ꡉ";i:7649;s:3:"ê¡Š";i:7650;s:3:"ê¡‹";i:7651;s:3:"ê¡Œ";i:7652;s:3:"ê¡";i:7653;s:3:"ê¡Ž";i:7654;s:3:"ê¡";i:7655;s:3:"ê¡";i:7656;s:3:"ê¡‘";i:7657;s:3:"ê¡’";i:7658;s:3:"ê¡“";i:7659;s:3:"ꡧ";i:7660;s:3:"ê¡”";i:7661;s:3:"ê¡•";i:7662;s:3:"ê¡–";i:7663;s:3:"ê¡—";i:7664;s:3:"ꡨ";i:7665;s:3:"ê¡­";i:7666;s:3:"ꡘ";i:7667;s:3:"ꡱ";i:7668;s:3:"ꡲ";i:7669;s:3:"ê¡™";i:7670;s:3:"ê¡š";i:7671;s:3:"ê¡®";i:7672;s:3:"ê¡›";i:7673;s:3:"ê¡œ";i:7674;s:3:"ꡯ";i:7675;s:3:"ê¡°";i:7676;s:3:"ê¡";i:7677;s:3:"ê¡¢";i:7678;s:3:"ê¡£";i:7679;s:3:"ꡤ";i:7680;s:3:"ê¡¥";i:7681;s:3:"ê¡ž";i:7682;s:3:"ê¡Ÿ";i:7683;s:3:"ê¡ ";i:7684;s:3:"ê¡¡";i:7685;s:3:"ꡦ";i:7686;s:3:"ꡳ";i:7687;s:3:"ᤀ";i:7688;s:3:"á¤";i:7689;s:3:"ᤂ";i:7690;s:3:"ᤃ";i:7691;s:3:"ᤄ";i:7692;s:3:"ᤅ";i:7693;s:3:"ᤆ";i:7694;s:3:"ᤇ";i:7695;s:3:"ᤈ";i:7696;s:3:"ᤉ";i:7697;s:3:"ᤊ";i:7698;s:3:"ᤋ";i:7699;s:3:"ᤌ";i:7700;s:3:"á¤";i:7701;s:3:"ᤎ";i:7702;s:3:"á¤";i:7703;s:3:"á¤";i:7704;s:3:"ᤑ";i:7705;s:3:"ᤒ";i:7706;s:3:"ᤓ";i:7707;s:3:"ᤔ";i:7708;s:3:"ᤕ";i:7709;s:3:"ᤖ";i:7710;s:3:"ᤗ";i:7711;s:3:"ᤘ";i:7712;s:3:"ᤙ";i:7713;s:3:"ᤚ";i:7714;s:3:"ᤛ";i:7715;s:3:"ᤜ";i:7716;s:3:"ᜀ";i:7717;s:3:"áœ";i:7718;s:3:"ᜂ";i:7719;s:3:"ᜃ";i:7720;s:3:"ᜄ";i:7721;s:3:"ᜅ";i:7722;s:3:"ᜆ";i:7723;s:3:"ᜇ";i:7724;s:3:"ᜈ";i:7725;s:3:"ᜉ";i:7726;s:3:"ᜊ";i:7727;s:3:"ᜋ";i:7728;s:3:"ᜌ";i:7729;s:3:"ᜎ";i:7730;s:3:"áœ";i:7731;s:3:"áœ";i:7732;s:3:"ᜑ";i:7733;s:3:"ᜠ";i:7734;s:3:"ᜡ";i:7735;s:3:"ᜢ";i:7736;s:3:"ᜣ";i:7737;s:3:"ᜤ";i:7738;s:3:"ᜥ";i:7739;s:3:"ᜦ";i:7740;s:3:"ᜧ";i:7741;s:3:"ᜨ";i:7742;s:3:"ᜩ";i:7743;s:3:"ᜪ";i:7744;s:3:"ᜫ";i:7745;s:3:"ᜬ";i:7746;s:3:"ᜭ";i:7747;s:3:"ᜮ";i:7748;s:3:"ᜯ";i:7749;s:3:"ᜰ";i:7750;s:3:"ᜱ";i:7751;s:3:"á€";i:7752;s:3:"á";i:7753;s:3:"á‚";i:7754;s:3:"áƒ";i:7755;s:3:"á„";i:7756;s:3:"á…";i:7757;s:3:"á†";i:7758;s:3:"á‡";i:7759;s:3:"áˆ";i:7760;s:3:"á‰";i:7761;s:3:"áŠ";i:7762;s:3:"á‹";i:7763;s:3:"áŒ";i:7764;s:3:"á";i:7765;s:3:"áŽ";i:7766;s:3:"á";i:7767;s:3:"á";i:7768;s:3:"á‘";i:7769;s:3:"á ";i:7770;s:3:"á¡";i:7771;s:3:"á¢";i:7772;s:3:"á£";i:7773;s:3:"á¤";i:7774;s:3:"á¥";i:7775;s:3:"á¦";i:7776;s:3:"á§";i:7777;s:3:"á¨";i:7778;s:3:"á©";i:7779;s:3:"áª";i:7780;s:3:"á«";i:7781;s:3:"á¬";i:7782;s:3:"á®";i:7783;s:3:"á¯";i:7784;s:3:"á°";i:7785;s:3:"ᨀ";i:7786;s:3:"á¨";i:7787;s:3:"ᨂ";i:7788;s:3:"ᨃ";i:7789;s:3:"ᨄ";i:7790;s:3:"ᨅ";i:7791;s:3:"ᨆ";i:7792;s:3:"ᨇ";i:7793;s:3:"ᨈ";i:7794;s:3:"ᨉ";i:7795;s:3:"ᨊ";i:7796;s:3:"ᨋ";i:7797;s:3:"ᨌ";i:7798;s:3:"á¨";i:7799;s:3:"ᨎ";i:7800;s:3:"á¨";i:7801;s:3:"á¨";i:7802;s:3:"ᨑ";i:7803;s:3:"ᨒ";i:7804;s:3:"ᨓ";i:7805;s:3:"ᨔ";i:7806;s:3:"ᨕ";i:7807;s:3:"ᨖ";i:7808;s:3:"ᯀ";i:7809;s:3:"ᯂ";i:7810;s:3:"ᯅ";i:7811;s:3:"ᯇ";i:7812;s:3:"ᯉ";i:7813;s:3:"ᯋ";i:7814;s:3:"ᯎ";i:7815;s:3:"á¯";i:7816;s:3:"ᯑ";i:7817;s:3:"ᯒ";i:7818;s:3:"ᯔ";i:7819;s:3:"ᯖ";i:7820;s:3:"ᯘ";i:7821;s:3:"ᯛ";i:7822;s:3:"á¯";i:7823;s:3:"ᯞ";i:7824;s:3:"ᯠ";i:7825;s:3:"ᯡ";i:7826;s:3:"ᯢ";i:7827;s:3:"ᯣ";i:7828;s:3:"ᯤ";i:7829;s:3:"ᯥ";i:7830;s:3:"ꤰ";i:7831;s:3:"ꤱ";i:7832;s:3:"ꤲ";i:7833;s:3:"ꤳ";i:7834;s:3:"ꤴ";i:7835;s:3:"ꤵ";i:7836;s:3:"ꤶ";i:7837;s:3:"ꤷ";i:7838;s:3:"ꤸ";i:7839;s:3:"ꤹ";i:7840;s:3:"ꤺ";i:7841;s:3:"ꤻ";i:7842;s:3:"ꤼ";i:7843;s:3:"ꤽ";i:7844;s:3:"ꤾ";i:7845;s:3:"ꤿ";i:7846;s:3:"ꥀ";i:7847;s:3:"ê¥";i:7848;s:3:"ꥂ";i:7849;s:3:"ꥃ";i:7850;s:3:"ꥄ";i:7851;s:3:"ꥅ";i:7852;s:3:"ꥆ";i:7853;s:3:"ꤊ";i:7854;s:3:"ꤋ";i:7855;s:3:"ꤌ";i:7856;s:3:"ê¤";i:7857;s:3:"ꤎ";i:7858;s:3:"ê¤";i:7859;s:3:"ê¤";i:7860;s:3:"ꤑ";i:7861;s:3:"ꤒ";i:7862;s:3:"ꤓ";i:7863;s:3:"ꤔ";i:7864;s:3:"ꤕ";i:7865;s:3:"ꤖ";i:7866;s:3:"ꤗ";i:7867;s:3:"ꤘ";i:7868;s:3:"ꤙ";i:7869;s:3:"ꤚ";i:7870;s:3:"ꤛ";i:7871;s:3:"ꤜ";i:7872;s:3:"ê¤";i:7873;s:3:"ꤞ";i:7874;s:3:"ꤟ";i:7875;s:3:"ꤠ";i:7876;s:3:"ꤡ";i:7877;s:3:"ꤢ";i:7878;s:3:"ꤣ";i:7879;s:3:"ꤤ";i:7880;s:3:"ꤥ";i:7881;s:3:"က";i:7882;s:3:"áµ";i:7883;s:3:"á€";i:7884;s:3:"á¶";i:7885;s:3:"ဂ";i:7886;s:3:"á·";i:7887;s:3:"ê© ";i:7888;s:3:"ဃ";i:7889;s:3:"င";i:7890;s:3:"áš";i:7891;s:3:"စ";i:7892;s:3:"á¸";i:7893;s:3:"ê©¡";i:7894;s:3:"ဆ";i:7895;s:3:"ê©¢";i:7896;s:3:"ဇ";i:7897;s:3:"ê©£";i:7898;s:3:"á¹";i:7899;s:3:"ꩲ";i:7900;s:3:"ဈ";i:7901;s:3:"á›";i:7902;s:3:"ꩤ";i:7903;s:3:"á¡";i:7904;s:3:"ဉ";i:7905;s:3:"áº";i:7906;s:3:"ê©¥";i:7907;s:3:"ည";i:7908;s:3:"ဋ";i:7909;s:3:"ꩦ";i:7910;s:3:"ဌ";i:7911;s:3:"ꩧ";i:7912;s:3:"á€";i:7913;s:3:"ꩨ";i:7914;s:3:"ဎ";i:7915;s:3:"ê©©";i:7916;s:3:"á€";i:7917;s:3:"á®";i:7918;s:3:"á€";i:7919;s:3:"ထ";i:7920;s:3:"ဒ";i:7921;s:3:"á»";i:7922;s:3:"ဓ";i:7923;s:3:"ꩪ";i:7924;s:3:"န";i:7925;s:3:"á¼";i:7926;s:3:"ê©«";i:7927;s:3:"ပ";i:7928;s:3:"ဖ";i:7929;s:3:"á½";i:7930;s:3:"á¾";i:7931;s:3:"ꩯ";i:7932;s:3:"á‚Ž";i:7933;s:3:"ဗ";i:7934;s:3:"á¿";i:7935;s:3:"ဘ";i:7936;s:3:"မ";i:7937;s:3:"ယ";i:7938;s:3:"ရ";i:7939;s:3:"ꩳ";i:7940;s:3:"ꩺ";i:7941;s:3:"လ";i:7942;s:3:"á€";i:7943;s:3:"á‚€";i:7944;s:3:"á";i:7945;s:3:"á‘";i:7946;s:3:"á¥";i:7947;s:3:"သ";i:7948;s:3:"ꩬ";i:7949;s:3:"ဟ";i:7950;s:3:"á‚";i:7951;s:3:"ê©­";i:7952;s:3:"ê©®";i:7953;s:3:"ꩱ";i:7954;s:3:"ဠ";i:7955;s:3:"áœ";i:7956;s:3:"á";i:7957;s:3:"á¯";i:7958;s:3:"á°";i:7959;s:3:"á¦";i:7960;s:3:"အ";i:7961;s:3:"ဢ";i:7962;s:3:"ဣ";i:7963;s:3:"ဤ";i:7964;s:3:"ဥ";i:7965;s:3:"ဦ";i:7966;s:3:"á’";i:7967;s:3:"á“";i:7968;s:3:"á”";i:7969;s:3:"á•";i:7970;s:3:"ဧ";i:7971;s:3:"ဨ";i:7972;s:3:"ဩ";i:7973;s:3:"ဪ";i:7974;s:3:"ê©´";i:7975;s:3:"ꩵ";i:7976;s:3:"ꩶ";i:7977;s:3:"ក";i:7978;s:3:"áž";i:7979;s:3:"áž‚";i:7980;s:3:"ឃ";i:7981;s:3:"áž„";i:7982;s:3:"áž…";i:7983;s:3:"ឆ";i:7984;s:3:"ជ";i:7985;s:3:"ឈ";i:7986;s:3:"ញ";i:7987;s:3:"ដ";i:7988;s:3:"áž‹";i:7989;s:3:"ឌ";i:7990;s:3:"áž";i:7991;s:3:"ណ";i:7992;s:3:"áž";i:7993;s:3:"áž";i:7994;s:3:"áž‘";i:7995;s:3:"áž’";i:7996;s:3:"áž“";i:7997;s:3:"áž”";i:7998;s:3:"áž•";i:7999;s:3:"áž–";i:8000;s:3:"áž—";i:8001;s:3:"ម";i:8002;s:3:"áž™";i:8003;s:3:"ážš";i:8004;s:3:"áž›";i:8005;s:3:"ážœ";i:8006;s:3:"áž";i:8007;s:3:"ážž";i:8008;s:3:"ស";i:8009;s:3:"áž ";i:8010;s:3:"áž¡";i:8011;s:3:"អ";i:8012;s:3:"ៜ";i:8013;s:3:"ឣ";i:8014;s:3:"ឤ";i:8015;s:3:"ឥ";i:8016;s:3:"ឦ";i:8017;s:3:"ឧ";i:8018;s:3:"ឨ";i:8019;s:3:"áž©";i:8020;s:3:"ឪ";i:8021;s:3:"áž«";i:8022;s:3:"ឬ";i:8023;s:3:"áž­";i:8024;s:3:"áž®";i:8025;s:3:"ឯ";i:8026;s:3:"áž°";i:8027;s:3:"áž±";i:8028;s:3:"áž²";i:8029;s:3:"áž³";i:8030;s:3:"á¥";i:8031;s:3:"ᥑ";i:8032;s:3:"ᥒ";i:8033;s:3:"ᥓ";i:8034;s:3:"ᥔ";i:8035;s:3:"ᥕ";i:8036;s:3:"ᥖ";i:8037;s:3:"ᥗ";i:8038;s:3:"ᥘ";i:8039;s:3:"ᥙ";i:8040;s:3:"ᥚ";i:8041;s:3:"ᥛ";i:8042;s:3:"ᥜ";i:8043;s:3:"á¥";i:8044;s:3:"ᥞ";i:8045;s:3:"ᥟ";i:8046;s:3:"ᥠ";i:8047;s:3:"ᥡ";i:8048;s:3:"ᥢ";i:8049;s:3:"ᥣ";i:8050;s:3:"ᥤ";i:8051;s:3:"ᥥ";i:8052;s:3:"ᥦ";i:8053;s:3:"ᥧ";i:8054;s:3:"ᥨ";i:8055;s:3:"ᥩ";i:8056;s:3:"ᥪ";i:8057;s:3:"ᥫ";i:8058;s:3:"ᥬ";i:8059;s:3:"ᥭ";i:8060;s:3:"ᥰ";i:8061;s:3:"ᥱ";i:8062;s:3:"ᥲ";i:8063;s:3:"ᥳ";i:8064;s:3:"ᥴ";i:8065;s:3:"ᦀ";i:8066;s:3:"á¦";i:8067;s:3:"ᦂ";i:8068;s:3:"ᦃ";i:8069;s:3:"ᦄ";i:8070;s:3:"ᦅ";i:8071;s:3:"ᦆ";i:8072;s:3:"ᦇ";i:8073;s:3:"ᦈ";i:8074;s:3:"ᦉ";i:8075;s:3:"ᦊ";i:8076;s:3:"ᦋ";i:8077;s:3:"ᦌ";i:8078;s:3:"á¦";i:8079;s:3:"ᦎ";i:8080;s:3:"á¦";i:8081;s:3:"á¦";i:8082;s:3:"ᦑ";i:8083;s:3:"ᦒ";i:8084;s:3:"ᦓ";i:8085;s:3:"ᦔ";i:8086;s:3:"ᦕ";i:8087;s:3:"ᦖ";i:8088;s:3:"ᦗ";i:8089;s:3:"ᦘ";i:8090;s:3:"ᦙ";i:8091;s:3:"ᦚ";i:8092;s:3:"ᦛ";i:8093;s:3:"ᦜ";i:8094;s:3:"á¦";i:8095;s:3:"ᦞ";i:8096;s:3:"ᦟ";i:8097;s:3:"ᦠ";i:8098;s:3:"ᦡ";i:8099;s:3:"ᦢ";i:8100;s:3:"ᦣ";i:8101;s:3:"ᦤ";i:8102;s:3:"ᦥ";i:8103;s:3:"ᦦ";i:8104;s:3:"ᦧ";i:8105;s:3:"ᦨ";i:8106;s:3:"ᦩ";i:8107;s:3:"ᦪ";i:8108;s:3:"ᦫ";i:8109;s:3:"á§";i:8110;s:3:"ᧂ";i:8111;s:3:"ᧃ";i:8112;s:3:"ᧄ";i:8113;s:3:"ᧅ";i:8114;s:3:"ᧆ";i:8115;s:3:"ᧇ";i:8116;s:3:"ᨠ";i:8117;s:3:"ᨡ";i:8118;s:3:"ᨢ";i:8119;s:3:"ᨣ";i:8120;s:3:"ᨤ";i:8121;s:3:"ᨥ";i:8122;s:3:"ᨦ";i:8123;s:3:"ᨧ";i:8124;s:3:"ᨨ";i:8125;s:3:"ᨩ";i:8126;s:3:"ᨪ";i:8127;s:3:"ᨫ";i:8128;s:3:"ᨬ";i:8129;s:3:"ᨭ";i:8130;s:3:"ᨮ";i:8131;s:3:"ᨯ";i:8132;s:3:"ᨰ";i:8133;s:3:"ᨱ";i:8134;s:3:"ᨲ";i:8135;s:3:"ᨳ";i:8136;s:3:"ᨴ";i:8137;s:3:"ᨵ";i:8138;s:3:"ᨶ";i:8139;s:3:"ᨷ";i:8140;s:3:"ᨸ";i:8141;s:3:"ᨹ";i:8142;s:3:"ᨺ";i:8143;s:3:"ᨻ";i:8144;s:3:"ᨼ";i:8145;s:3:"ᨽ";i:8146;s:3:"ᨾ";i:8147;s:3:"ᨿ";i:8148;s:3:"á©€";i:8149;s:3:"á©";i:8150;s:3:"á©‚";i:8151;s:3:"ᩃ";i:8152;s:3:"á©„";i:8153;s:3:"á©…";i:8154;s:3:"ᩆ";i:8155;s:3:"ᩇ";i:8156;s:3:"ᩈ";i:8157;s:3:"ᩉ";i:8158;s:3:"á©Š";i:8159;s:3:"á©‹";i:8160;s:3:"á©Œ";i:8161;s:3:"á©“";i:8162;s:3:"á©";i:8163;s:3:"á©Ž";i:8164;s:3:"á©";i:8165;s:3:"á©";i:8166;s:3:"á©‘";i:8167;s:3:"á©’";i:8168;s:3:"ꨀ";i:8169;s:3:"ê¨";i:8170;s:3:"ꨂ";i:8171;s:3:"ꨃ";i:8172;s:3:"ꨄ";i:8173;s:3:"ꨅ";i:8174;s:3:"ꨆ";i:8175;s:3:"ꨇ";i:8176;s:3:"ꨈ";i:8177;s:3:"ꨉ";i:8178;s:3:"ꨊ";i:8179;s:3:"ꨋ";i:8180;s:3:"ꨌ";i:8181;s:3:"ê¨";i:8182;s:3:"ꨎ";i:8183;s:3:"ê¨";i:8184;s:3:"ê¨";i:8185;s:3:"ꨑ";i:8186;s:3:"ꨒ";i:8187;s:3:"ꨓ";i:8188;s:3:"ꨔ";i:8189;s:3:"ꨕ";i:8190;s:3:"ꨖ";i:8191;s:3:"ꨗ";i:8192;s:3:"ꨘ";i:8193;s:3:"ꨙ";i:8194;s:3:"ꨚ";i:8195;s:3:"ꨛ";i:8196;s:3:"ꨜ";i:8197;s:3:"ê¨";i:8198;s:3:"ꨞ";i:8199;s:3:"ꨟ";i:8200;s:3:"ꨠ";i:8201;s:3:"ꨡ";i:8202;s:3:"ꨢ";i:8203;s:3:"ꨣ";i:8204;s:3:"ꨤ";i:8205;s:3:"ꨥ";i:8206;s:3:"ꨦ";i:8207;s:3:"ꨧ";i:8208;s:3:"ꨨ";i:8209;s:3:"ê©€";i:8210;s:3:"ê©";i:8211;s:3:"ê©‚";i:8212;s:3:"ê©„";i:8213;s:3:"ê©…";i:8214;s:3:"ꩆ";i:8215;s:3:"ꩇ";i:8216;s:3:"ꩈ";i:8217;s:3:"ꩉ";i:8218;s:3:"ê©Š";i:8219;s:3:"ê©‹";i:8220;s:3:"ᬅ";i:8221;s:3:"ᬆ";i:8222;s:3:"ᬇ";i:8223;s:3:"ᬈ";i:8224;s:3:"ᬉ";i:8225;s:3:"ᬊ";i:8226;s:3:"ᬋ";i:8227;s:3:"ᬌ";i:8228;s:3:"á¬";i:8229;s:3:"ᬎ";i:8230;s:3:"á¬";i:8231;s:3:"á¬";i:8232;s:3:"ᬑ";i:8233;s:3:"ᬒ";i:8234;s:3:"ᬓ";i:8235;s:3:"á­…";i:8236;s:3:"á­†";i:8237;s:3:"ᬔ";i:8238;s:3:"ᬕ";i:8239;s:3:"ᬖ";i:8240;s:3:"ᬗ";i:8241;s:3:"ᬘ";i:8242;s:3:"ᬙ";i:8243;s:3:"ᬚ";i:8244;s:3:"ᬛ";i:8245;s:3:"ᬜ";i:8246;s:3:"á¬";i:8247;s:3:"ᬞ";i:8248;s:3:"ᬟ";i:8249;s:3:"ᬠ";i:8250;s:3:"ᬡ";i:8251;s:3:"ᬢ";i:8252;s:3:"á­‡";i:8253;s:3:"ᬣ";i:8254;s:3:"ᬤ";i:8255;s:3:"ᬥ";i:8256;s:3:"ᬦ";i:8257;s:3:"ᬧ";i:8258;s:3:"á­ˆ";i:8259;s:3:"ᬨ";i:8260;s:3:"ᬩ";i:8261;s:3:"ᬪ";i:8262;s:3:"ᬫ";i:8263;s:3:"ᬬ";i:8264;s:3:"ᬭ";i:8265;s:3:"ᬮ";i:8266;s:3:"ᬯ";i:8267;s:3:"á­‰";i:8268;s:3:"ᬰ";i:8269;s:3:"ᬱ";i:8270;s:3:"ᬲ";i:8271;s:3:"á­Š";i:8272;s:3:"á­‹";i:8273;s:3:"ᬳ";i:8274;s:3:"ꦄ";i:8275;s:3:"ꦅ";i:8276;s:3:"ꦆ";i:8277;s:3:"ꦇ";i:8278;s:3:"ꦈ";i:8279;s:3:"ꦉ";i:8280;s:3:"ꦊ";i:8281;s:3:"ꦋ";i:8282;s:3:"ꦌ";i:8283;s:3:"ê¦";i:8284;s:3:"ꦎ";i:8285;s:3:"ê¦";i:8286;s:3:"ê¦";i:8287;s:3:"ꦑ";i:8288;s:3:"ꦒ";i:8289;s:3:"ꦓ";i:8290;s:3:"ꦔ";i:8291;s:3:"ꦕ";i:8292;s:3:"ꦖ";i:8293;s:3:"ꦗ";i:8294;s:3:"ꦘ";i:8295;s:3:"ꦙ";i:8296;s:3:"ꦚ";i:8297;s:3:"ꦛ";i:8298;s:3:"ꦜ";i:8299;s:3:"ê¦";i:8300;s:3:"ꦞ";i:8301;s:3:"ꦟ";i:8302;s:3:"ꦠ";i:8303;s:3:"ꦡ";i:8304;s:3:"ꦢ";i:8305;s:3:"ꦣ";i:8306;s:3:"ꦤ";i:8307;s:3:"ꦥ";i:8308;s:3:"ꦦ";i:8309;s:3:"ꦧ";i:8310;s:3:"ꦨ";i:8311;s:3:"ꦩ";i:8312;s:3:"ꦪ";i:8313;s:3:"ꦫ";i:8314;s:3:"ꦭ";i:8315;s:3:"ꦮ";i:8316;s:3:"ꦯ";i:8317;s:3:"ꦰ";i:8318;s:3:"ꦱ";i:8319;s:3:"ꦲ";i:8320;s:3:"ᢀ";i:8321;s:3:"á¢";i:8322;s:3:"ᢂ";i:8323;s:3:"ᢃ";i:8324;s:3:"ᢄ";i:8325;s:3:"ᢅ";i:8326;s:3:"ᢆ";i:8327;s:3:"ᡃ";i:8328;s:3:"á  ";i:8329;s:3:"ᢇ";i:8330;s:3:"á ¡";i:8331;s:3:"á¡„";i:8332;s:3:"á¡";i:8333;s:3:"á ¢";i:8334;s:3:"á¡…";i:8335;s:3:"á¡ž";i:8336;s:3:"ᡳ";i:8337;s:3:"ᢈ";i:8338;s:3:"á¡Ÿ";i:8339;s:3:"á £";i:8340;s:3:"ᡆ";i:8341;s:3:"á ¤";i:8342;s:3:"ᡇ";i:8343;s:3:"á¡¡";i:8344;s:3:"á ¥";i:8345;s:3:"ᡈ";i:8346;s:3:"á ¦";i:8347;s:3:"ᡉ";i:8348;s:3:"á¡ ";i:8349;s:3:"á §";i:8350;s:3:"á ¨";i:8351;s:3:"á ©";i:8352;s:3:"á¡Š";i:8353;s:3:"á¡¢";i:8354;s:3:"ᢊ";i:8355;s:3:"ᢛ";i:8356;s:3:"á ª";i:8357;s:3:"á¡‹";i:8358;s:3:"á «";i:8359;s:3:"á¡Œ";i:8360;s:3:"ᡦ";i:8361;s:3:"á ¬";i:8362;s:3:"á¡";i:8363;s:3:"á ­";i:8364;s:3:"á¡Ž";i:8365;s:3:"ᡤ";i:8366;s:3:"ᢚ";i:8367;s:3:"á¡¥";i:8368;s:3:"á ®";i:8369;s:3:"á¡";i:8370;s:3:"á ¯";i:8371;s:3:"á °";i:8372;s:3:"á ±";i:8373;s:3:"ᡧ";i:8374;s:3:"ᢜ";i:8375;s:3:"á¢";i:8376;s:3:"ᢢ";i:8377;s:3:"ᢤ";i:8378;s:3:"ᢥ";i:8379;s:3:"á ²";i:8380;s:3:"á¡";i:8381;s:3:"ᡨ";i:8382;s:3:"á ³";i:8383;s:3:"á¡‘";i:8384;s:3:"á¡©";i:8385;s:3:"á ´";i:8386;s:3:"á¡’";i:8387;s:3:"ᡱ";i:8388;s:3:"á¡œ";i:8389;s:3:"ᢋ";i:8390;s:3:"á µ";i:8391;s:3:"á¡“";i:8392;s:3:"ᡪ";i:8393;s:3:"á¡·";i:8394;s:3:"á ¶";i:8395;s:3:"á¡•";i:8396;s:3:"ᡲ";i:8397;s:3:"á ·";i:8398;s:3:"ᡵ";i:8399;s:3:"á ¸";i:8400;s:3:"á¡–";i:8401;s:3:"á ¹";i:8402;s:3:"á¡«";i:8403;s:3:"ᡶ";i:8404;s:3:"á º";i:8405;s:3:"á¡—";i:8406;s:3:"á¡£";i:8407;s:3:"á¡´";i:8408;s:3:"ᢉ";i:8409;s:3:"á »";i:8410;s:3:"á ¼";i:8411;s:3:"á¡”";i:8412;s:3:"á¡®";i:8413;s:3:"á ½";i:8414;s:3:"ᡯ";i:8415;s:3:"ᡘ";i:8416;s:3:"ᡬ";i:8417;s:3:"á ¾";i:8418;s:3:"á¡™";i:8419;s:3:"á¡­";i:8420;s:3:"á ¿";i:8421;s:3:"á¡€";i:8422;s:3:"á¡";i:8423;s:3:"á¡‚";i:8424;s:3:"á¡š";i:8425;s:3:"á¡›";i:8426;s:3:"á¡°";i:8427;s:3:"ᢌ";i:8428;s:3:"ᢞ";i:8429;s:3:"á¢";i:8430;s:3:"ᢎ";i:8431;s:3:"ᢟ";i:8432;s:3:"á¢";i:8433;s:3:"á¢";i:8434;s:3:"ᢘ";i:8435;s:3:"ᢠ";i:8436;s:3:"ᢑ";i:8437;s:3:"ᢡ";i:8438;s:3:"ᢒ";i:8439;s:3:"ᢓ";i:8440;s:3:"ᢨ";i:8441;s:3:"ᢔ";i:8442;s:3:"ᢣ";i:8443;s:3:"ᢕ";i:8444;s:3:"ᢙ";i:8445;s:3:"ᢖ";i:8446;s:3:"ᢗ";i:8447;s:3:"ᢦ";i:8448;s:3:"ᢧ";i:8449;s:3:"ᢪ";i:8450;s:3:"ᱚ";i:8451;s:3:"á±›";i:8452;s:3:"ᱜ";i:8453;s:3:"á±";i:8454;s:3:"ᱞ";i:8455;s:3:"ᱟ";i:8456;s:3:"á± ";i:8457;s:3:"ᱡ";i:8458;s:3:"á±¢";i:8459;s:3:"á±£";i:8460;s:3:"ᱤ";i:8461;s:3:"á±¥";i:8462;s:3:"ᱦ";i:8463;s:3:"ᱧ";i:8464;s:3:"ᱨ";i:8465;s:3:"ᱩ";i:8466;s:3:"ᱪ";i:8467;s:3:"ᱫ";i:8468;s:3:"ᱬ";i:8469;s:3:"á±­";i:8470;s:3:"á±®";i:8471;s:3:"ᱯ";i:8472;s:3:"á±°";i:8473;s:3:"á±±";i:8474;s:3:"á±²";i:8475;s:3:"á±³";i:8476;s:3:"á±´";i:8477;s:3:"á±µ";i:8478;s:3:"ᱶ";i:8479;s:3:"á±·";i:8480;s:3:"ᱸ";i:8481;s:3:"á±¹";i:8482;s:3:"ᱺ";i:8483;s:3:"á±»";i:8484;s:3:"á±¼";i:8485;s:3:"á±½";i:8486;s:3:"Ꭰ";i:8487;s:3:"Ꭱ";i:8488;s:3:"Ꭲ";i:8489;s:3:"Ꭳ";i:8490;s:3:"Ꭴ";i:8491;s:3:"Ꭵ";i:8492;s:3:"Ꭶ";i:8493;s:3:"Ꭷ";i:8494;s:3:"Ꭸ";i:8495;s:3:"Ꭹ";i:8496;s:3:"Ꭺ";i:8497;s:3:"Ꭻ";i:8498;s:3:"Ꭼ";i:8499;s:3:"Ꭽ";i:8500;s:3:"Ꭾ";i:8501;s:3:"Ꭿ";i:8502;s:3:"Ꮀ";i:8503;s:3:"Ꮁ";i:8504;s:3:"Ꮂ";i:8505;s:3:"Ꮃ";i:8506;s:3:"Ꮄ";i:8507;s:3:"Ꮅ";i:8508;s:3:"Ꮆ";i:8509;s:3:"Ꮇ";i:8510;s:3:"Ꮈ";i:8511;s:3:"Ꮉ";i:8512;s:3:"Ꮊ";i:8513;s:3:"Ꮋ";i:8514;s:3:"Ꮌ";i:8515;s:3:"Ꮍ";i:8516;s:3:"Ꮎ";i:8517;s:3:"Ꮏ";i:8518;s:3:"á€";i:8519;s:3:"á";i:8520;s:3:"á‚";i:8521;s:3:"áƒ";i:8522;s:3:"á„";i:8523;s:3:"á…";i:8524;s:3:"á†";i:8525;s:3:"á‡";i:8526;s:3:"áˆ";i:8527;s:3:"á‰";i:8528;s:3:"áŠ";i:8529;s:3:"á‹";i:8530;s:3:"áŒ";i:8531;s:3:"á";i:8532;s:3:"áŽ";i:8533;s:3:"á";i:8534;s:3:"á";i:8535;s:3:"á‘";i:8536;s:3:"á’";i:8537;s:3:"á“";i:8538;s:3:"á”";i:8539;s:3:"á•";i:8540;s:3:"á–";i:8541;s:3:"á—";i:8542;s:3:"á˜";i:8543;s:3:"á™";i:8544;s:3:"áš";i:8545;s:3:"á›";i:8546;s:3:"áœ";i:8547;s:3:"á";i:8548;s:3:"áž";i:8549;s:3:"áŸ";i:8550;s:3:"á ";i:8551;s:3:"á¡";i:8552;s:3:"á¢";i:8553;s:3:"á£";i:8554;s:3:"á¤";i:8555;s:3:"á¥";i:8556;s:3:"á¦";i:8557;s:3:"á§";i:8558;s:3:"á¨";i:8559;s:3:"á©";i:8560;s:3:"áª";i:8561;s:3:"á«";i:8562;s:3:"á¬";i:8563;s:3:"á­";i:8564;s:3:"á®";i:8565;s:3:"á¯";i:8566;s:3:"á°";i:8567;s:3:"á±";i:8568;s:3:"á²";i:8569;s:3:"á³";i:8570;s:3:"á´";i:8571;s:3:"á";i:8572;s:3:"á‚";i:8573;s:3:"áƒ";i:8574;s:3:"á„";i:8575;s:3:"á…";i:8576;s:3:"á†";i:8577;s:3:"á‡";i:8578;s:3:"áˆ";i:8579;s:3:"á‰";i:8580;s:3:"áŠ";i:8581;s:3:"á‹";i:8582;s:3:"áŒ";i:8583;s:3:"á";i:8584;s:3:"áŽ";i:8585;s:3:"á";i:8586;s:3:"á";i:8587;s:3:"á‘";i:8588;s:3:"á’";i:8589;s:3:"á“";i:8590;s:3:"á”";i:8591;s:3:"á•";i:8592;s:3:"á–";i:8593;s:3:"á—";i:8594;s:3:"á˜";i:8595;s:3:"á™";i:8596;s:3:"áš";i:8597;s:3:"á›";i:8598;s:3:"áœ";i:8599;s:3:"á";i:8600;s:3:"áž";i:8601;s:3:"áŸ";i:8602;s:3:"á ";i:8603;s:3:"á¡";i:8604;s:3:"á¢";i:8605;s:3:"á£";i:8606;s:3:"á¤";i:8607;s:3:"á¥";i:8608;s:3:"á¦";i:8609;s:3:"á§";i:8610;s:3:"á¨";i:8611;s:3:"á©";i:8612;s:3:"áª";i:8613;s:3:"á«";i:8614;s:3:"á¬";i:8615;s:3:"á­";i:8616;s:3:"á®";i:8617;s:3:"á¯";i:8618;s:3:"á°";i:8619;s:3:"á±";i:8620;s:3:"á²";i:8621;s:3:"á³";i:8622;s:3:"á´";i:8623;s:3:"áµ";i:8624;s:3:"á¶";i:8625;s:3:"á·";i:8626;s:3:"á¸";i:8627;s:3:"á¹";i:8628;s:3:"áº";i:8629;s:3:"á»";i:8630;s:3:"á¼";i:8631;s:3:"á½";i:8632;s:3:"á¾";i:8633;s:3:"á¿";i:8634;s:3:"á‘€";i:8635;s:3:"á‘";i:8636;s:3:"á‘‚";i:8637;s:3:"ᑃ";i:8638;s:3:"á‘„";i:8639;s:3:"á‘…";i:8640;s:3:"ᑆ";i:8641;s:3:"ᑇ";i:8642;s:3:"ᑈ";i:8643;s:3:"ᑉ";i:8644;s:3:"á‘Š";i:8645;s:3:"á‘‹";i:8646;s:3:"á‘Œ";i:8647;s:3:"á‘";i:8648;s:3:"á‘Ž";i:8649;s:3:"á‘";i:8650;s:3:"á‘";i:8651;s:3:"á‘‘";i:8652;s:3:"á‘’";i:8653;s:3:"á‘“";i:8654;s:3:"á‘”";i:8655;s:3:"á‘•";i:8656;s:3:"á‘–";i:8657;s:3:"á‘—";i:8658;s:3:"ᑘ";i:8659;s:3:"á‘™";i:8660;s:3:"á‘š";i:8661;s:3:"á‘›";i:8662;s:3:"á‘œ";i:8663;s:3:"á‘";i:8664;s:3:"á‘ž";i:8665;s:3:"á‘Ÿ";i:8666;s:3:"á‘ ";i:8667;s:3:"á‘¡";i:8668;s:3:"á‘¢";i:8669;s:3:"á‘£";i:8670;s:3:"ᑤ";i:8671;s:3:"á‘¥";i:8672;s:3:"ᑦ";i:8673;s:3:"ᑧ";i:8674;s:3:"ᑨ";i:8675;s:3:"á‘©";i:8676;s:3:"ᑪ";i:8677;s:3:"á‘«";i:8678;s:3:"ᑬ";i:8679;s:3:"á‘­";i:8680;s:3:"á‘®";i:8681;s:3:"ᑯ";i:8682;s:3:"á‘°";i:8683;s:3:"ᑱ";i:8684;s:3:"ᑲ";i:8685;s:3:"ᑳ";i:8686;s:3:"á‘´";i:8687;s:3:"ᑵ";i:8688;s:3:"ᑶ";i:8689;s:3:"á‘·";i:8690;s:3:"ᑸ";i:8691;s:3:"ᑹ";i:8692;s:3:"ᑺ";i:8693;s:3:"á‘»";i:8694;s:3:"ᑼ";i:8695;s:3:"ᑽ";i:8696;s:3:"ᑾ";i:8697;s:3:"á‘¿";i:8698;s:3:"á’€";i:8699;s:3:"á’";i:8700;s:3:"á’‚";i:8701;s:3:"á’ƒ";i:8702;s:3:"á’„";i:8703;s:3:"á’…";i:8704;s:3:"á’†";i:8705;s:3:"á’‡";i:8706;s:3:"á’ˆ";i:8707;s:3:"á’‰";i:8708;s:3:"á’Š";i:8709;s:3:"á’‹";i:8710;s:3:"á’Œ";i:8711;s:3:"á’";i:8712;s:3:"á’Ž";i:8713;s:3:"á’";i:8714;s:3:"á’";i:8715;s:3:"á’‘";i:8716;s:3:"á’’";i:8717;s:3:"á’“";i:8718;s:3:"á’”";i:8719;s:3:"á’•";i:8720;s:3:"á’–";i:8721;s:3:"á’—";i:8722;s:3:"á’˜";i:8723;s:3:"á’™";i:8724;s:3:"á’š";i:8725;s:3:"á’›";i:8726;s:3:"á’œ";i:8727;s:3:"á’";i:8728;s:3:"á’ž";i:8729;s:3:"á’Ÿ";i:8730;s:3:"á’ ";i:8731;s:3:"á’¡";i:8732;s:3:"á’¢";i:8733;s:3:"á’£";i:8734;s:3:"á’¤";i:8735;s:3:"á’¥";i:8736;s:3:"á’¦";i:8737;s:3:"á’§";i:8738;s:3:"á’¨";i:8739;s:3:"á’©";i:8740;s:3:"á’ª";i:8741;s:3:"á’«";i:8742;s:3:"á’¬";i:8743;s:3:"á’­";i:8744;s:3:"á’®";i:8745;s:3:"á’¯";i:8746;s:3:"á’°";i:8747;s:3:"á’±";i:8748;s:3:"á’²";i:8749;s:3:"á’³";i:8750;s:3:"á’´";i:8751;s:3:"á’µ";i:8752;s:3:"á’¶";i:8753;s:3:"á’·";i:8754;s:3:"á’¸";i:8755;s:3:"á’¹";i:8756;s:3:"á’º";i:8757;s:3:"á’»";i:8758;s:3:"á’¼";i:8759;s:3:"á’½";i:8760;s:3:"á’¾";i:8761;s:3:"á’¿";i:8762;s:3:"á“€";i:8763;s:3:"á“";i:8764;s:3:"á“‚";i:8765;s:3:"ᓃ";i:8766;s:3:"á“„";i:8767;s:3:"á“…";i:8768;s:3:"ᓆ";i:8769;s:3:"ᓇ";i:8770;s:3:"ᓈ";i:8771;s:3:"ᓉ";i:8772;s:3:"á“Š";i:8773;s:3:"á“‹";i:8774;s:3:"á“Œ";i:8775;s:3:"á“";i:8776;s:3:"á“Ž";i:8777;s:3:"á“";i:8778;s:3:"á“";i:8779;s:3:"á“‘";i:8780;s:3:"á“’";i:8781;s:3:"á““";i:8782;s:3:"á“”";i:8783;s:3:"á“•";i:8784;s:3:"á“–";i:8785;s:3:"á“—";i:8786;s:3:"ᓘ";i:8787;s:3:"á“™";i:8788;s:3:"á“š";i:8789;s:3:"á“›";i:8790;s:3:"á“œ";i:8791;s:3:"á“";i:8792;s:3:"á“ž";i:8793;s:3:"á“Ÿ";i:8794;s:3:"á“ ";i:8795;s:3:"á“¡";i:8796;s:3:"á“¢";i:8797;s:3:"á“£";i:8798;s:3:"ᓤ";i:8799;s:3:"á“¥";i:8800;s:3:"ᓦ";i:8801;s:3:"ᓧ";i:8802;s:3:"ᓨ";i:8803;s:3:"á“©";i:8804;s:3:"ᓪ";i:8805;s:3:"á“«";i:8806;s:3:"ᓬ";i:8807;s:3:"á“­";i:8808;s:3:"á“®";i:8809;s:3:"ᓯ";i:8810;s:3:"á“°";i:8811;s:3:"ᓱ";i:8812;s:3:"ᓲ";i:8813;s:3:"ᓳ";i:8814;s:3:"á“´";i:8815;s:3:"ᓵ";i:8816;s:3:"ᓶ";i:8817;s:3:"á“·";i:8818;s:3:"ᓸ";i:8819;s:3:"ᓹ";i:8820;s:3:"ᓺ";i:8821;s:3:"á“»";i:8822;s:3:"ᓼ";i:8823;s:3:"ᓽ";i:8824;s:3:"ᓾ";i:8825;s:3:"á“¿";i:8826;s:3:"ᔀ";i:8827;s:3:"á”";i:8828;s:3:"ᔂ";i:8829;s:3:"ᔃ";i:8830;s:3:"ᔄ";i:8831;s:3:"á”…";i:8832;s:3:"ᔆ";i:8833;s:3:"ᔇ";i:8834;s:3:"ᔈ";i:8835;s:3:"ᔉ";i:8836;s:3:"ᔊ";i:8837;s:3:"ᔋ";i:8838;s:3:"ᔌ";i:8839;s:3:"á”";i:8840;s:3:"ᔎ";i:8841;s:3:"á”";i:8842;s:3:"á”";i:8843;s:3:"ᔑ";i:8844;s:3:"á”’";i:8845;s:3:"ᔓ";i:8846;s:3:"á””";i:8847;s:3:"ᔕ";i:8848;s:3:"á”–";i:8849;s:3:"á”—";i:8850;s:3:"ᔘ";i:8851;s:3:"á”™";i:8852;s:3:"ᔚ";i:8853;s:3:"á”›";i:8854;s:3:"ᔜ";i:8855;s:3:"á”";i:8856;s:3:"ᔞ";i:8857;s:3:"ᔟ";i:8858;s:3:"á” ";i:8859;s:3:"ᔡ";i:8860;s:3:"ᔢ";i:8861;s:3:"ᔣ";i:8862;s:3:"ᔤ";i:8863;s:3:"ᔥ";i:8864;s:3:"ᔦ";i:8865;s:3:"ᔧ";i:8866;s:3:"ᔨ";i:8867;s:3:"ᔩ";i:8868;s:3:"ᔪ";i:8869;s:3:"ᔫ";i:8870;s:3:"ᔬ";i:8871;s:3:"á”­";i:8872;s:3:"á”®";i:8873;s:3:"ᔯ";i:8874;s:3:"á”°";i:8875;s:3:"á”±";i:8876;s:3:"ᔲ";i:8877;s:3:"ᔳ";i:8878;s:3:"á”´";i:8879;s:3:"ᔵ";i:8880;s:3:"ᔶ";i:8881;s:3:"á”·";i:8882;s:3:"ᔸ";i:8883;s:3:"ᔹ";i:8884;s:3:"ᔺ";i:8885;s:3:"á”»";i:8886;s:3:"ᔼ";i:8887;s:3:"ᔽ";i:8888;s:3:"ᔾ";i:8889;s:3:"ᔿ";i:8890;s:3:"á•€";i:8891;s:3:"á•";i:8892;s:3:"á•‚";i:8893;s:3:"ᕃ";i:8894;s:3:"á•„";i:8895;s:3:"á•…";i:8896;s:3:"ᕆ";i:8897;s:3:"ᕇ";i:8898;s:3:"ᕈ";i:8899;s:3:"ᕉ";i:8900;s:3:"á•Š";i:8901;s:3:"á•‹";i:8902;s:3:"á•Œ";i:8903;s:3:"á•";i:8904;s:3:"á•Ž";i:8905;s:3:"á•";i:8906;s:3:"á•";i:8907;s:3:"á•‘";i:8908;s:3:"á•’";i:8909;s:3:"á•“";i:8910;s:3:"á•”";i:8911;s:3:"á••";i:8912;s:3:"á•–";i:8913;s:3:"á•—";i:8914;s:3:"ᕘ";i:8915;s:3:"á•™";i:8916;s:3:"á•š";i:8917;s:3:"á•›";i:8918;s:3:"á•œ";i:8919;s:3:"á•";i:8920;s:3:"á•ž";i:8921;s:3:"á•Ÿ";i:8922;s:3:"á• ";i:8923;s:3:"á•¡";i:8924;s:3:"á•¢";i:8925;s:3:"á•£";i:8926;s:3:"ᕤ";i:8927;s:3:"á•¥";i:8928;s:3:"ᕦ";i:8929;s:3:"ᕧ";i:8930;s:3:"ᕨ";i:8931;s:3:"á•©";i:8932;s:3:"ᕪ";i:8933;s:3:"á•«";i:8934;s:3:"ᕬ";i:8935;s:3:"á•­";i:8936;s:3:"á•®";i:8937;s:3:"ᕯ";i:8938;s:3:"á•°";i:8939;s:3:"ᕱ";i:8940;s:3:"ᕲ";i:8941;s:3:"ᕳ";i:8942;s:3:"á•´";i:8943;s:3:"ᕵ";i:8944;s:3:"ᕶ";i:8945;s:3:"á•·";i:8946;s:3:"ᕸ";i:8947;s:3:"ᕹ";i:8948;s:3:"ᕺ";i:8949;s:3:"á•»";i:8950;s:3:"ᕽ";i:8951;s:3:"ᙯ";i:8952;s:3:"ᕾ";i:8953;s:3:"á•¿";i:8954;s:3:"á–€";i:8955;s:3:"á–";i:8956;s:3:"á–‚";i:8957;s:3:"á–ƒ";i:8958;s:3:"á–„";i:8959;s:3:"á–…";i:8960;s:3:"á–†";i:8961;s:3:"á–‡";i:8962;s:3:"á–ˆ";i:8963;s:3:"á–‰";i:8964;s:3:"á–Š";i:8965;s:3:"á–‹";i:8966;s:3:"á–Œ";i:8967;s:3:"á–";i:8968;s:3:"á™°";i:8969;s:3:"á–Ž";i:8970;s:3:"á–";i:8971;s:3:"á–";i:8972;s:3:"á–‘";i:8973;s:3:"á–’";i:8974;s:3:"á–“";i:8975;s:3:"á–”";i:8976;s:3:"á–•";i:8977;s:3:"á™±";i:8978;s:3:"ᙲ";i:8979;s:3:"ᙳ";i:8980;s:3:"á™´";i:8981;s:3:"ᙵ";i:8982;s:3:"ᙶ";i:8983;s:3:"á––";i:8984;s:3:"á–—";i:8985;s:3:"á–˜";i:8986;s:3:"á–™";i:8987;s:3:"á–š";i:8988;s:3:"á–›";i:8989;s:3:"á–œ";i:8990;s:3:"á–";i:8991;s:3:"á–ž";i:8992;s:3:"á–Ÿ";i:8993;s:3:"á– ";i:8994;s:3:"á–¡";i:8995;s:3:"á–¢";i:8996;s:3:"á–£";i:8997;s:3:"á–¤";i:8998;s:3:"á–¥";i:8999;s:3:"á–¦";i:9000;s:3:"ᕼ";i:9001;s:3:"á–§";i:9002;s:3:"á–¨";i:9003;s:3:"á–©";i:9004;s:3:"á–ª";i:9005;s:3:"á–«";i:9006;s:3:"á–¬";i:9007;s:3:"á–­";i:9008;s:3:"á–®";i:9009;s:3:"á–¯";i:9010;s:3:"á–°";i:9011;s:3:"á–±";i:9012;s:3:"á–²";i:9013;s:3:"á–³";i:9014;s:3:"á–´";i:9015;s:3:"á–µ";i:9016;s:3:"á–¶";i:9017;s:3:"á–·";i:9018;s:3:"á–¸";i:9019;s:3:"á–¹";i:9020;s:3:"á–º";i:9021;s:3:"á–»";i:9022;s:3:"á–¼";i:9023;s:3:"á–½";i:9024;s:3:"á–¾";i:9025;s:3:"á–¿";i:9026;s:3:"á—€";i:9027;s:3:"á—";i:9028;s:3:"á—‚";i:9029;s:3:"á—ƒ";i:9030;s:3:"á—„";i:9031;s:3:"á—…";i:9032;s:3:"á—†";i:9033;s:3:"á—‡";i:9034;s:3:"á—ˆ";i:9035;s:3:"á—‰";i:9036;s:3:"á—Š";i:9037;s:3:"á—‹";i:9038;s:3:"á—Œ";i:9039;s:3:"á—";i:9040;s:3:"á—Ž";i:9041;s:3:"á—";i:9042;s:3:"á—";i:9043;s:3:"á—‘";i:9044;s:3:"á—’";i:9045;s:3:"á—“";i:9046;s:3:"á—”";i:9047;s:3:"á—•";i:9048;s:3:"á—–";i:9049;s:3:"á——";i:9050;s:3:"á—˜";i:9051;s:3:"á—™";i:9052;s:3:"á—š";i:9053;s:3:"á—›";i:9054;s:3:"á—œ";i:9055;s:3:"á—";i:9056;s:3:"á—ž";i:9057;s:3:"á—Ÿ";i:9058;s:3:"á— ";i:9059;s:3:"á—¡";i:9060;s:3:"á—¢";i:9061;s:3:"á—£";i:9062;s:3:"á—¤";i:9063;s:3:"á—¥";i:9064;s:3:"á—¦";i:9065;s:3:"á—§";i:9066;s:3:"á—¨";i:9067;s:3:"á—©";i:9068;s:3:"á—ª";i:9069;s:3:"á—«";i:9070;s:3:"á—¬";i:9071;s:3:"á—­";i:9072;s:3:"á—®";i:9073;s:3:"á—¯";i:9074;s:3:"á—°";i:9075;s:3:"á—±";i:9076;s:3:"á—²";i:9077;s:3:"á—³";i:9078;s:3:"á—´";i:9079;s:3:"á—µ";i:9080;s:3:"á—¶";i:9081;s:3:"á—·";i:9082;s:3:"á—¸";i:9083;s:3:"á—¹";i:9084;s:3:"á—º";i:9085;s:3:"á—»";i:9086;s:3:"á—¼";i:9087;s:3:"á—½";i:9088;s:3:"á—¾";i:9089;s:3:"á—¿";i:9090;s:3:"ᘀ";i:9091;s:3:"á˜";i:9092;s:3:"ᘂ";i:9093;s:3:"ᘃ";i:9094;s:3:"ᘄ";i:9095;s:3:"ᘅ";i:9096;s:3:"ᘆ";i:9097;s:3:"ᘇ";i:9098;s:3:"ᘈ";i:9099;s:3:"ᘉ";i:9100;s:3:"ᘊ";i:9101;s:3:"ᘋ";i:9102;s:3:"ᘌ";i:9103;s:3:"á˜";i:9104;s:3:"ᘎ";i:9105;s:3:"á˜";i:9106;s:3:"á˜";i:9107;s:3:"ᘑ";i:9108;s:3:"ᘒ";i:9109;s:3:"ᘓ";i:9110;s:3:"ᘔ";i:9111;s:3:"ᘕ";i:9112;s:3:"ᘖ";i:9113;s:3:"ᘗ";i:9114;s:3:"ᘘ";i:9115;s:3:"ᘙ";i:9116;s:3:"ᘚ";i:9117;s:3:"ᘛ";i:9118;s:3:"ᘜ";i:9119;s:3:"á˜";i:9120;s:3:"ᘞ";i:9121;s:3:"ᘟ";i:9122;s:3:"ᘠ";i:9123;s:3:"ᘡ";i:9124;s:3:"ᘢ";i:9125;s:3:"ᘣ";i:9126;s:3:"ᘤ";i:9127;s:3:"ᘥ";i:9128;s:3:"ᘦ";i:9129;s:3:"ᘧ";i:9130;s:3:"ᘨ";i:9131;s:3:"ᘩ";i:9132;s:3:"ᘪ";i:9133;s:3:"ᘫ";i:9134;s:3:"ᘬ";i:9135;s:3:"ᘭ";i:9136;s:3:"ᘮ";i:9137;s:3:"ᘯ";i:9138;s:3:"ᘰ";i:9139;s:3:"ᘱ";i:9140;s:3:"ᘲ";i:9141;s:3:"ᘳ";i:9142;s:3:"ᘴ";i:9143;s:3:"ᘵ";i:9144;s:3:"ᘶ";i:9145;s:3:"ᘷ";i:9146;s:3:"ᘸ";i:9147;s:3:"ᘹ";i:9148;s:3:"ᘺ";i:9149;s:3:"ᘻ";i:9150;s:3:"ᘼ";i:9151;s:3:"ᘽ";i:9152;s:3:"ᘾ";i:9153;s:3:"ᘿ";i:9154;s:3:"ᙀ";i:9155;s:3:"á™";i:9156;s:3:"ᙂ";i:9157;s:3:"ᙃ";i:9158;s:3:"ᙄ";i:9159;s:3:"á™…";i:9160;s:3:"ᙆ";i:9161;s:3:"ᙇ";i:9162;s:3:"ᙈ";i:9163;s:3:"ᙉ";i:9164;s:3:"ᙊ";i:9165;s:3:"ᙋ";i:9166;s:3:"ᙌ";i:9167;s:3:"á™";i:9168;s:3:"ᙎ";i:9169;s:3:"á™";i:9170;s:3:"á™";i:9171;s:3:"ᙑ";i:9172;s:3:"á™’";i:9173;s:3:"ᙓ";i:9174;s:3:"á™”";i:9175;s:3:"ᙕ";i:9176;s:3:"á™–";i:9177;s:3:"á™—";i:9178;s:3:"ᙘ";i:9179;s:3:"á™™";i:9180;s:3:"ᙚ";i:9181;s:3:"á™›";i:9182;s:3:"ᙜ";i:9183;s:3:"á™";i:9184;s:3:"ᙞ";i:9185;s:3:"ᙟ";i:9186;s:3:"á™ ";i:9187;s:3:"ᙡ";i:9188;s:3:"ᙢ";i:9189;s:3:"ᙣ";i:9190;s:3:"ᙤ";i:9191;s:3:"ᙥ";i:9192;s:3:"ᙦ";i:9193;s:3:"ᙧ";i:9194;s:3:"ᙨ";i:9195;s:3:"ᙩ";i:9196;s:3:"ᙪ";i:9197;s:3:"ᙫ";i:9198;s:3:"ᙬ";i:9199;s:3:"á™·";i:9200;s:3:"ᙸ";i:9201;s:3:"ᙹ";i:9202;s:3:"ᙺ";i:9203;s:3:"á™»";i:9204;s:3:"ᙼ";i:9205;s:3:"ᙽ";i:9206;s:3:"ᙾ";i:9207;s:3:"ᙿ";i:9208;s:3:"ᢰ";i:9209;s:3:"ᢱ";i:9210;s:3:"ᢲ";i:9211;s:3:"ᢳ";i:9212;s:3:"ᢴ";i:9213;s:3:"ᢵ";i:9214;s:3:"ᢶ";i:9215;s:3:"ᢷ";i:9216;s:3:"ᢸ";i:9217;s:3:"ᢹ";i:9218;s:3:"ᢺ";i:9219;s:3:"ᢻ";i:9220;s:3:"ᢼ";i:9221;s:3:"ᢽ";i:9222;s:3:"ᢾ";i:9223;s:3:"ᢿ";i:9224;s:3:"ᣀ";i:9225;s:3:"á£";i:9226;s:3:"ᣂ";i:9227;s:3:"ᣃ";i:9228;s:3:"ᣄ";i:9229;s:3:"ᣅ";i:9230;s:3:"ᣆ";i:9231;s:3:"ᣇ";i:9232;s:3:"ᣈ";i:9233;s:3:"ᣉ";i:9234;s:3:"ᣊ";i:9235;s:3:"ᣋ";i:9236;s:3:"ᣌ";i:9237;s:3:"á£";i:9238;s:3:"ᣎ";i:9239;s:3:"á£";i:9240;s:3:"á£";i:9241;s:3:"ᣑ";i:9242;s:3:"ᣒ";i:9243;s:3:"ᣓ";i:9244;s:3:"ᣔ";i:9245;s:3:"ᣕ";i:9246;s:3:"ᣖ";i:9247;s:3:"ᣗ";i:9248;s:3:"ᣘ";i:9249;s:3:"ᣙ";i:9250;s:3:"ᣚ";i:9251;s:3:"ᣛ";i:9252;s:3:"ᣜ";i:9253;s:3:"á£";i:9254;s:3:"ᣞ";i:9255;s:3:"ᣟ";i:9256;s:3:"ᣠ";i:9257;s:3:"ᣡ";i:9258;s:3:"ᣢ";i:9259;s:3:"ᣣ";i:9260;s:3:"ᣤ";i:9261;s:3:"ᣥ";i:9262;s:3:"ᣦ";i:9263;s:3:"ᣧ";i:9264;s:3:"ᣨ";i:9265;s:3:"ᣩ";i:9266;s:3:"ᣪ";i:9267;s:3:"ᣫ";i:9268;s:3:"ᣬ";i:9269;s:3:"ᣭ";i:9270;s:3:"ᣮ";i:9271;s:3:"ᣯ";i:9272;s:3:"ᣰ";i:9273;s:3:"ᣱ";i:9274;s:3:"ᣲ";i:9275;s:3:"ᣳ";i:9276;s:3:"ᣴ";i:9277;s:3:"ᣵ";i:9278;s:3:"áš";i:9279;s:3:"áš‚";i:9280;s:3:"ᚃ";i:9281;s:3:"áš„";i:9282;s:3:"áš…";i:9283;s:3:"ᚆ";i:9284;s:3:"ᚇ";i:9285;s:3:"ᚈ";i:9286;s:3:"ᚉ";i:9287;s:3:"ᚊ";i:9288;s:3:"áš‹";i:9289;s:3:"ᚌ";i:9290;s:3:"áš";i:9291;s:3:"ᚎ";i:9292;s:3:"áš";i:9293;s:3:"áš";i:9294;s:3:"áš‘";i:9295;s:3:"áš’";i:9296;s:3:"áš“";i:9297;s:3:"áš”";i:9298;s:3:"áš•";i:9299;s:3:"áš–";i:9300;s:3:"áš—";i:9301;s:3:"ᚘ";i:9302;s:3:"áš™";i:9303;s:3:"ášš";i:9304;s:3:"áš ";i:9305;s:3:"ᚢ";i:9306;s:3:"ᚦ";i:9307;s:3:"ᚨ";i:9308;s:3:"ᚯ";i:9309;s:3:"áš°";i:9310;s:3:"áš±";i:9311;s:3:"áš²";i:9312;s:3:"áš·";i:9313;s:3:"áš¹";i:9314;s:3:"ᚺ";i:9315;s:3:"áš¾";i:9316;s:3:"á›";i:9317;s:3:"ᛃ";i:9318;s:3:"á›…";i:9319;s:3:"ᛇ";i:9320;s:3:"ᛈ";i:9321;s:3:"ᛉ";i:9322;s:3:"ᛊ";i:9323;s:3:"á›";i:9324;s:3:"á›’";i:9325;s:3:"á›–";i:9326;s:3:"á›—";i:9327;s:3:"ᛚ";i:9328;s:3:"ᛜ";i:9329;s:3:"ᛞ";i:9330;s:3:"ᛟ";i:9331;s:3:"ᚪ";i:9332;s:3:"áš«";i:9333;s:3:"ᚣ";i:9334;s:3:"á› ";i:9335;s:3:"ᛣ";i:9336;s:3:"ᚸ";i:9337;s:3:"ᛤ";i:9338;s:3:"ᛡ";i:9339;s:3:"ᛢ";i:9340;s:3:"ᛥ";i:9341;s:3:"ᛦ";i:9342;s:4:"ð°€";i:9343;s:4:"ð°‚";i:9344;s:4:"ð°ƒ";i:9345;s:4:"ð°…";i:9346;s:4:"ð°†";i:9347;s:4:"ð°‡";i:9348;s:4:"ð°‰";i:9349;s:4:"ð°‹";i:9350;s:4:"ð°";i:9351;s:4:"ð°";i:9352;s:4:"ð°‘";i:9353;s:4:"ð°“";i:9354;s:4:"ð°”";i:9355;s:4:"ð°–";i:9356;s:4:"ð°˜";i:9357;s:4:"ð°š";i:9358;s:4:"ð°œ";i:9359;s:4:"ð°ž";i:9360;s:4:"ð° ";i:9361;s:4:"ð°¡";i:9362;s:4:"ð°¢";i:9363;s:4:"ð°£";i:9364;s:4:"ð°¤";i:9365;s:4:"ð°¦";i:9366;s:4:"ð°¨";i:9367;s:4:"ð°ª";i:9368;s:4:"ð°¬";i:9369;s:4:"ð°­";i:9370;s:4:"ð°¯";i:9371;s:4:"ð°°";i:9372;s:4:"ð°±";i:9373;s:4:"ð°²";i:9374;s:4:"ð°´";i:9375;s:4:"ð°¶";i:9376;s:4:"ð°¸";i:9377;s:4:"ð°º";i:9378;s:4:"ð°¼";i:9379;s:4:"ð°½";i:9380;s:4:"ð°¾";i:9381;s:4:"ð°¿";i:9382;s:4:"ð±";i:9383;s:4:"ð±ƒ";i:9384;s:4:"ð±…";i:9385;s:4:"ð±‡";i:9386;s:4:"ð±ˆ";i:9387;s:3:"ꔀ";i:9388;s:3:"ê”";i:9389;s:3:"ꔂ";i:9390;s:3:"ꔃ";i:9391;s:3:"ꔄ";i:9392;s:3:"ê”…";i:9393;s:3:"ꔆ";i:9394;s:3:"ꔇ";i:9395;s:3:"ꔈ";i:9396;s:3:"ꔉ";i:9397;s:3:"ꔊ";i:9398;s:3:"ꔋ";i:9399;s:3:"ꔌ";i:9400;s:3:"ê”";i:9401;s:3:"ꔎ";i:9402;s:3:"ê”";i:9403;s:3:"ê”";i:9404;s:3:"ꔑ";i:9405;s:3:"ê”’";i:9406;s:3:"ꔓ";i:9407;s:3:"ê””";i:9408;s:3:"ꔕ";i:9409;s:3:"ê”–";i:9410;s:3:"ê”—";i:9411;s:3:"ꔘ";i:9412;s:3:"ê”™";i:9413;s:3:"ꔚ";i:9414;s:3:"ê”›";i:9415;s:3:"ꔜ";i:9416;s:3:"ê”";i:9417;s:3:"ꔞ";i:9418;s:3:"ꔟ";i:9419;s:3:"ê” ";i:9420;s:3:"ꔡ";i:9421;s:3:"ꔢ";i:9422;s:3:"ꔣ";i:9423;s:3:"ꔤ";i:9424;s:3:"ꔥ";i:9425;s:3:"ꔦ";i:9426;s:3:"ꔧ";i:9427;s:3:"ꔨ";i:9428;s:3:"ꔩ";i:9429;s:3:"ꔪ";i:9430;s:3:"ꔫ";i:9431;s:3:"ꔬ";i:9432;s:3:"ê”­";i:9433;s:3:"ê”®";i:9434;s:3:"ꔯ";i:9435;s:3:"ê”°";i:9436;s:3:"ê”±";i:9437;s:3:"ꔲ";i:9438;s:3:"ꔳ";i:9439;s:3:"ê”´";i:9440;s:3:"ꔵ";i:9441;s:3:"ꔶ";i:9442;s:3:"ê”·";i:9443;s:3:"ꔸ";i:9444;s:3:"ꔹ";i:9445;s:3:"ꔺ";i:9446;s:3:"ê”»";i:9447;s:3:"ꔼ";i:9448;s:3:"ꔽ";i:9449;s:3:"ꔾ";i:9450;s:3:"ꔿ";i:9451;s:3:"ê•€";i:9452;s:3:"ê•";i:9453;s:3:"ê•‚";i:9454;s:3:"ꕃ";i:9455;s:3:"ê•„";i:9456;s:3:"ê•…";i:9457;s:3:"ꕆ";i:9458;s:3:"ꕇ";i:9459;s:3:"ꕈ";i:9460;s:3:"ꕉ";i:9461;s:3:"ê•Š";i:9462;s:3:"ê•‹";i:9463;s:3:"ê•Œ";i:9464;s:3:"ê•";i:9465;s:3:"ê•Ž";i:9466;s:3:"ê•";i:9467;s:3:"ê•";i:9468;s:3:"ê•‘";i:9469;s:3:"ê•’";i:9470;s:3:"ê•“";i:9471;s:3:"ê•”";i:9472;s:3:"ê••";i:9473;s:3:"ê•–";i:9474;s:3:"ê•—";i:9475;s:3:"ꕘ";i:9476;s:3:"ê•™";i:9477;s:3:"ê•š";i:9478;s:3:"ê•›";i:9479;s:3:"ê•œ";i:9480;s:3:"ê•";i:9481;s:3:"ê•ž";i:9482;s:3:"ê•Ÿ";i:9483;s:3:"ê• ";i:9484;s:3:"ê•¡";i:9485;s:3:"ê•¢";i:9486;s:3:"ê•£";i:9487;s:3:"ꕤ";i:9488;s:3:"ê•¥";i:9489;s:3:"ꕦ";i:9490;s:3:"ꕧ";i:9491;s:3:"ꕨ";i:9492;s:3:"ê•©";i:9493;s:3:"ꕪ";i:9494;s:3:"ê•«";i:9495;s:3:"ꕬ";i:9496;s:3:"ê•­";i:9497;s:3:"ê•®";i:9498;s:3:"ꕯ";i:9499;s:3:"ê•°";i:9500;s:3:"ꕱ";i:9501;s:3:"ꕲ";i:9502;s:3:"ꕳ";i:9503;s:3:"ê•´";i:9504;s:3:"ꕵ";i:9505;s:3:"ꕶ";i:9506;s:3:"ê•·";i:9507;s:3:"ꕸ";i:9508;s:3:"ꕹ";i:9509;s:3:"ꕺ";i:9510;s:3:"ê•»";i:9511;s:3:"ꕼ";i:9512;s:3:"ꕽ";i:9513;s:3:"ꕾ";i:9514;s:3:"ê•¿";i:9515;s:3:"ê–€";i:9516;s:3:"ê–";i:9517;s:3:"ê–‚";i:9518;s:3:"ê–ƒ";i:9519;s:3:"ê–„";i:9520;s:3:"ê–…";i:9521;s:3:"ê–†";i:9522;s:3:"ê–‡";i:9523;s:3:"ê–ˆ";i:9524;s:3:"ê–‰";i:9525;s:3:"ê–Š";i:9526;s:3:"ê–‹";i:9527;s:3:"ê–Œ";i:9528;s:3:"ê–";i:9529;s:3:"ê–Ž";i:9530;s:3:"ê–";i:9531;s:3:"ê–";i:9532;s:3:"ê–‘";i:9533;s:3:"ê–’";i:9534;s:3:"ê–“";i:9535;s:3:"ê–”";i:9536;s:3:"ê–•";i:9537;s:3:"ê––";i:9538;s:3:"ê–—";i:9539;s:3:"ê–˜";i:9540;s:3:"ê–™";i:9541;s:3:"ê–š";i:9542;s:3:"ê–›";i:9543;s:3:"ê–œ";i:9544;s:3:"ê–";i:9545;s:3:"ê–ž";i:9546;s:3:"ê–Ÿ";i:9547;s:3:"ê– ";i:9548;s:3:"ê–¡";i:9549;s:3:"ê–¢";i:9550;s:3:"ê–£";i:9551;s:3:"ê–¤";i:9552;s:3:"ê–¥";i:9553;s:3:"ê–¦";i:9554;s:3:"ê–§";i:9555;s:3:"ê–¨";i:9556;s:3:"ê–©";i:9557;s:3:"ê–ª";i:9558;s:3:"ê–«";i:9559;s:3:"ê–¬";i:9560;s:3:"ê–­";i:9561;s:3:"ê–®";i:9562;s:3:"ê–¯";i:9563;s:3:"ê–°";i:9564;s:3:"ê–±";i:9565;s:3:"ê–²";i:9566;s:3:"ê–³";i:9567;s:3:"ê–´";i:9568;s:3:"ê–µ";i:9569;s:3:"ê–¶";i:9570;s:3:"ê–·";i:9571;s:3:"ê–¸";i:9572;s:3:"ê–¹";i:9573;s:3:"ê–º";i:9574;s:3:"ê–»";i:9575;s:3:"ê–¼";i:9576;s:3:"ê–½";i:9577;s:3:"ê–¾";i:9578;s:3:"ê–¿";i:9579;s:3:"ê—€";i:9580;s:3:"ê—";i:9581;s:3:"ê—‚";i:9582;s:3:"ê—ƒ";i:9583;s:3:"ê—„";i:9584;s:3:"ê—…";i:9585;s:3:"ê—†";i:9586;s:3:"ê—‡";i:9587;s:3:"ê—ˆ";i:9588;s:3:"ê—‰";i:9589;s:3:"ê—Š";i:9590;s:3:"ê—‹";i:9591;s:3:"ê—Œ";i:9592;s:3:"ê—";i:9593;s:3:"ê—Ž";i:9594;s:3:"ê—";i:9595;s:3:"ê—";i:9596;s:3:"ê—‘";i:9597;s:3:"ê—’";i:9598;s:3:"ê—“";i:9599;s:3:"ê—”";i:9600;s:3:"ê—•";i:9601;s:3:"ê—–";i:9602;s:3:"ê——";i:9603;s:3:"ê—˜";i:9604;s:3:"ê—™";i:9605;s:3:"ê—š";i:9606;s:3:"ê—›";i:9607;s:3:"ê—œ";i:9608;s:3:"ê—";i:9609;s:3:"ê—ž";i:9610;s:3:"ê—Ÿ";i:9611;s:3:"ê— ";i:9612;s:3:"ê—¡";i:9613;s:3:"ê—¢";i:9614;s:3:"ê—£";i:9615;s:3:"ê—¤";i:9616;s:3:"ê—¥";i:9617;s:3:"ê—¦";i:9618;s:3:"ê—§";i:9619;s:3:"ê—¨";i:9620;s:3:"ê—©";i:9621;s:3:"ê—ª";i:9622;s:3:"ê—«";i:9623;s:3:"ê—¬";i:9624;s:3:"ê—­";i:9625;s:3:"ê—®";i:9626;s:3:"ê—¯";i:9627;s:3:"ê—°";i:9628;s:3:"ê—±";i:9629;s:3:"ê—²";i:9630;s:3:"ê—³";i:9631;s:3:"ê—´";i:9632;s:3:"ê—µ";i:9633;s:3:"ê—¶";i:9634;s:3:"ê—·";i:9635;s:3:"ê—¸";i:9636;s:3:"ê—¹";i:9637;s:3:"ê—º";i:9638;s:3:"ê—»";i:9639;s:3:"ê—¼";i:9640;s:3:"ê—½";i:9641;s:3:"ê—¾";i:9642;s:3:"ê—¿";i:9643;s:3:"ꘀ";i:9644;s:3:"ê˜";i:9645;s:3:"ꘂ";i:9646;s:3:"ꘃ";i:9647;s:3:"ꘄ";i:9648;s:3:"ꘅ";i:9649;s:3:"ꘆ";i:9650;s:3:"ꘇ";i:9651;s:3:"ꘈ";i:9652;s:3:"ꘉ";i:9653;s:3:"ꘊ";i:9654;s:3:"ꘋ";i:9655;s:3:"ꘌ";i:9656;s:3:"êš ";i:9657;s:3:"êš¡";i:9658;s:3:"ꚢ";i:9659;s:3:"ꚣ";i:9660;s:3:"ꚤ";i:9661;s:3:"ꚥ";i:9662;s:3:"ꚦ";i:9663;s:3:"ꚧ";i:9664;s:3:"ꚨ";i:9665;s:3:"êš©";i:9666;s:3:"ꚪ";i:9667;s:3:"êš«";i:9668;s:3:"ꚬ";i:9669;s:3:"êš­";i:9670;s:3:"êš®";i:9671;s:3:"ꚯ";i:9672;s:3:"êš°";i:9673;s:3:"êš±";i:9674;s:3:"êš²";i:9675;s:3:"êš³";i:9676;s:3:"êš´";i:9677;s:3:"êšµ";i:9678;s:3:"ꚶ";i:9679;s:3:"êš·";i:9680;s:3:"ꚸ";i:9681;s:3:"êš¹";i:9682;s:3:"ꚺ";i:9683;s:3:"êš»";i:9684;s:3:"êš¼";i:9685;s:3:"êš½";i:9686;s:3:"êš¾";i:9687;s:3:"êš¿";i:9688;s:3:"ꛀ";i:9689;s:3:"ê›";i:9690;s:3:"ꛂ";i:9691;s:3:"ꛃ";i:9692;s:3:"ꛄ";i:9693;s:3:"ê›…";i:9694;s:3:"ꛆ";i:9695;s:3:"ꛇ";i:9696;s:3:"ꛈ";i:9697;s:3:"ꛉ";i:9698;s:3:"ꛊ";i:9699;s:3:"ꛋ";i:9700;s:3:"ꛌ";i:9701;s:3:"ê›";i:9702;s:3:"ꛎ";i:9703;s:3:"ê›";i:9704;s:3:"ê›";i:9705;s:3:"ꛑ";i:9706;s:3:"ê›’";i:9707;s:3:"ꛓ";i:9708;s:3:"ê›”";i:9709;s:3:"ꛕ";i:9710;s:3:"ê›–";i:9711;s:3:"ê›—";i:9712;s:3:"ꛘ";i:9713;s:3:"ê›™";i:9714;s:3:"ꛚ";i:9715;s:3:"ê››";i:9716;s:3:"ꛜ";i:9717;s:3:"ê›";i:9718;s:3:"ꛞ";i:9719;s:3:"ꛟ";i:9720;s:3:"ê› ";i:9721;s:3:"ꛡ";i:9722;s:3:"ꛢ";i:9723;s:3:"ꛣ";i:9724;s:3:"ꛤ";i:9725;s:3:"ꛥ";i:9726;s:3:"ꛦ";i:9727;s:3:"ꛧ";i:9728;s:3:"ꛨ";i:9729;s:3:"ꛩ";i:9730;s:3:"ꛪ";i:9731;s:3:"ꛫ";i:9732;s:3:"ꛬ";i:9733;s:3:"ê›­";i:9734;s:3:"ê›®";i:9735;s:3:"ꛯ";i:9736;s:4:"ð– €";i:9737;s:4:"ð– ";i:9738;s:4:"ð– ‚";i:9739;s:4:"ð– ƒ";i:9740;s:4:"ð– „";i:9741;s:4:"ð– …";i:9742;s:4:"ð– †";i:9743;s:4:"ð– ‡";i:9744;s:4:"ð– ˆ";i:9745;s:4:"ð– ‰";i:9746;s:4:"ð– Š";i:9747;s:4:"ð– ‹";i:9748;s:4:"ð– Œ";i:9749;s:4:"ð– ";i:9750;s:4:"ð– Ž";i:9751;s:4:"ð– ";i:9752;s:4:"ð– ";i:9753;s:4:"ð– ‘";i:9754;s:4:"ð– ’";i:9755;s:4:"ð– “";i:9756;s:4:"ð– ”";i:9757;s:4:"ð– •";i:9758;s:4:"ð– –";i:9759;s:4:"ð– —";i:9760;s:4:"ð– ˜";i:9761;s:4:"ð– ™";i:9762;s:4:"ð– š";i:9763;s:4:"ð– ›";i:9764;s:4:"ð– œ";i:9765;s:4:"ð– ";i:9766;s:4:"ð– ž";i:9767;s:4:"ð– Ÿ";i:9768;s:4:"ð–  ";i:9769;s:4:"ð– ¡";i:9770;s:4:"ð– ¢";i:9771;s:4:"ð– £";i:9772;s:4:"ð– ¤";i:9773;s:4:"ð– ¥";i:9774;s:4:"ð– ¦";i:9775;s:4:"ð– §";i:9776;s:4:"ð– ¨";i:9777;s:4:"ð– ©";i:9778;s:4:"ð– ª";i:9779;s:4:"ð– «";i:9780;s:4:"ð– ¬";i:9781;s:4:"ð– ­";i:9782;s:4:"ð– ®";i:9783;s:4:"ð– ¯";i:9784;s:4:"ð– °";i:9785;s:4:"ð– ±";i:9786;s:4:"ð– ²";i:9787;s:4:"ð– ³";i:9788;s:4:"ð– ´";i:9789;s:4:"ð– µ";i:9790;s:4:"ð– ¶";i:9791;s:4:"ð– ·";i:9792;s:4:"ð– ¸";i:9793;s:4:"ð– ¹";i:9794;s:4:"ð– º";i:9795;s:4:"ð– »";i:9796;s:4:"ð– ¼";i:9797;s:4:"ð– ½";i:9798;s:4:"ð– ¾";i:9799;s:4:"ð– ¿";i:9800;s:4:"ð–¡€";i:9801;s:4:"ð–¡";i:9802;s:4:"ð–¡‚";i:9803;s:4:"𖡃";i:9804;s:4:"ð–¡„";i:9805;s:4:"ð–¡…";i:9806;s:4:"𖡆";i:9807;s:4:"𖡇";i:9808;s:4:"𖡈";i:9809;s:4:"𖡉";i:9810;s:4:"ð–¡Š";i:9811;s:4:"ð–¡‹";i:9812;s:4:"ð–¡Œ";i:9813;s:4:"ð–¡";i:9814;s:4:"ð–¡Ž";i:9815;s:4:"ð–¡";i:9816;s:4:"ð–¡";i:9817;s:4:"ð–¡‘";i:9818;s:4:"ð–¡’";i:9819;s:4:"ð–¡“";i:9820;s:4:"ð–¡”";i:9821;s:4:"ð–¡•";i:9822;s:4:"ð–¡–";i:9823;s:4:"ð–¡—";i:9824;s:4:"𖡘";i:9825;s:4:"ð–¡™";i:9826;s:4:"ð–¡š";i:9827;s:4:"ð–¡›";i:9828;s:4:"ð–¡œ";i:9829;s:4:"ð–¡";i:9830;s:4:"ð–¡ž";i:9831;s:4:"ð–¡Ÿ";i:9832;s:4:"ð–¡ ";i:9833;s:4:"ð–¡¡";i:9834;s:4:"ð–¡¢";i:9835;s:4:"ð–¡£";i:9836;s:4:"𖡤";i:9837;s:4:"ð–¡¥";i:9838;s:4:"𖡦";i:9839;s:4:"𖡧";i:9840;s:4:"𖡨";i:9841;s:4:"ð–¡©";i:9842;s:4:"𖡪";i:9843;s:4:"ð–¡«";i:9844;s:4:"𖡬";i:9845;s:4:"ð–¡­";i:9846;s:4:"ð–¡®";i:9847;s:4:"𖡯";i:9848;s:4:"ð–¡°";i:9849;s:4:"ð–¡±";i:9850;s:4:"ð–¡²";i:9851;s:4:"ð–¡³";i:9852;s:4:"ð–¡´";i:9853;s:4:"ð–¡µ";i:9854;s:4:"𖡶";i:9855;s:4:"ð–¡·";i:9856;s:4:"𖡸";i:9857;s:4:"ð–¡¹";i:9858;s:4:"𖡺";i:9859;s:4:"ð–¡»";i:9860;s:4:"ð–¡¼";i:9861;s:4:"ð–¡½";i:9862;s:4:"ð–¡¾";i:9863;s:4:"ð–¡¿";i:9864;s:4:"ð–¢€";i:9865;s:4:"ð–¢";i:9866;s:4:"𖢂";i:9867;s:4:"𖢃";i:9868;s:4:"𖢄";i:9869;s:4:"ð–¢…";i:9870;s:4:"𖢆";i:9871;s:4:"𖢇";i:9872;s:4:"𖢈";i:9873;s:4:"𖢉";i:9874;s:4:"𖢊";i:9875;s:4:"𖢋";i:9876;s:4:"𖢌";i:9877;s:4:"ð–¢";i:9878;s:4:"𖢎";i:9879;s:4:"ð–¢";i:9880;s:4:"ð–¢";i:9881;s:4:"𖢑";i:9882;s:4:"ð–¢’";i:9883;s:4:"𖢓";i:9884;s:4:"ð–¢”";i:9885;s:4:"𖢕";i:9886;s:4:"ð–¢–";i:9887;s:4:"ð–¢—";i:9888;s:4:"𖢘";i:9889;s:4:"ð–¢™";i:9890;s:4:"𖢚";i:9891;s:4:"ð–¢›";i:9892;s:4:"𖢜";i:9893;s:4:"ð–¢";i:9894;s:4:"𖢞";i:9895;s:4:"𖢟";i:9896;s:4:"ð–¢ ";i:9897;s:4:"𖢡";i:9898;s:4:"ð–¢¢";i:9899;s:4:"ð–¢£";i:9900;s:4:"𖢤";i:9901;s:4:"ð–¢¥";i:9902;s:4:"𖢦";i:9903;s:4:"𖢧";i:9904;s:4:"𖢨";i:9905;s:4:"𖢩";i:9906;s:4:"𖢪";i:9907;s:4:"𖢫";i:9908;s:4:"𖢬";i:9909;s:4:"ð–¢­";i:9910;s:4:"ð–¢®";i:9911;s:4:"𖢯";i:9912;s:4:"ð–¢°";i:9913;s:4:"ð–¢±";i:9914;s:4:"ð–¢²";i:9915;s:4:"ð–¢³";i:9916;s:4:"ð–¢´";i:9917;s:4:"ð–¢µ";i:9918;s:4:"𖢶";i:9919;s:4:"ð–¢·";i:9920;s:4:"𖢸";i:9921;s:4:"ð–¢¹";i:9922;s:4:"𖢺";i:9923;s:4:"ð–¢»";i:9924;s:4:"ð–¢¼";i:9925;s:4:"ð–¢½";i:9926;s:4:"ð–¢¾";i:9927;s:4:"𖢿";i:9928;s:4:"ð–£€";i:9929;s:4:"ð–£";i:9930;s:4:"𖣂";i:9931;s:4:"𖣃";i:9932;s:4:"𖣄";i:9933;s:4:"ð–£…";i:9934;s:4:"𖣆";i:9935;s:4:"𖣇";i:9936;s:4:"𖣈";i:9937;s:4:"𖣉";i:9938;s:4:"𖣊";i:9939;s:4:"𖣋";i:9940;s:4:"𖣌";i:9941;s:4:"ð–£";i:9942;s:4:"𖣎";i:9943;s:4:"ð–£";i:9944;s:4:"ð–£";i:9945;s:4:"𖣑";i:9946;s:4:"ð–£’";i:9947;s:4:"𖣓";i:9948;s:4:"ð–£”";i:9949;s:4:"𖣕";i:9950;s:4:"ð–£–";i:9951;s:4:"ð–£—";i:9952;s:4:"𖣘";i:9953;s:4:"ð–£™";i:9954;s:4:"𖣚";i:9955;s:4:"ð–£›";i:9956;s:4:"𖣜";i:9957;s:4:"ð–£";i:9958;s:4:"𖣞";i:9959;s:4:"𖣟";i:9960;s:4:"ð–£ ";i:9961;s:4:"𖣡";i:9962;s:4:"ð–£¢";i:9963;s:4:"ð–££";i:9964;s:4:"𖣤";i:9965;s:4:"ð–£¥";i:9966;s:4:"𖣦";i:9967;s:4:"𖣧";i:9968;s:4:"𖣨";i:9969;s:4:"𖣩";i:9970;s:4:"𖣪";i:9971;s:4:"𖣫";i:9972;s:4:"𖣬";i:9973;s:4:"ð–£­";i:9974;s:4:"ð–£®";i:9975;s:4:"𖣯";i:9976;s:4:"ð–£°";i:9977;s:4:"ð–£±";i:9978;s:4:"ð–£²";i:9979;s:4:"ð–£³";i:9980;s:4:"ð–£´";i:9981;s:4:"ð–£µ";i:9982;s:4:"𖣶";i:9983;s:4:"ð–£·";i:9984;s:4:"𖣸";i:9985;s:4:"ð–£¹";i:9986;s:4:"𖣺";i:9987;s:4:"ð–£»";i:9988;s:4:"ð–£¼";i:9989;s:4:"ð–£½";i:9990;s:4:"ð–£¾";i:9991;s:4:"𖣿";i:9992;s:4:"𖤀";i:9993;s:4:"ð–¤";i:9994;s:4:"𖤂";i:9995;s:4:"𖤃";i:9996;s:4:"𖤄";i:9997;s:4:"ð–¤…";i:9998;s:4:"𖤆";i:9999;s:4:"𖤇";i:10000;s:4:"𖤈";i:10001;s:4:"𖤉";i:10002;s:4:"𖤊";i:10003;s:4:"𖤋";i:10004;s:4:"𖤌";i:10005;s:4:"ð–¤";i:10006;s:4:"𖤎";i:10007;s:4:"ð–¤";i:10008;s:4:"ð–¤";i:10009;s:4:"𖤑";i:10010;s:4:"ð–¤’";i:10011;s:4:"𖤓";i:10012;s:4:"𖤔";i:10013;s:4:"𖤕";i:10014;s:4:"ð–¤–";i:10015;s:4:"ð–¤—";i:10016;s:4:"𖤘";i:10017;s:4:"𖤙";i:10018;s:4:"𖤚";i:10019;s:4:"𖤛";i:10020;s:4:"𖤜";i:10021;s:4:"ð–¤";i:10022;s:4:"𖤞";i:10023;s:4:"𖤟";i:10024;s:4:"ð–¤ ";i:10025;s:4:"𖤡";i:10026;s:4:"𖤢";i:10027;s:4:"𖤣";i:10028;s:4:"𖤤";i:10029;s:4:"𖤥";i:10030;s:4:"𖤦";i:10031;s:4:"𖤧";i:10032;s:4:"𖤨";i:10033;s:4:"𖤩";i:10034;s:4:"𖤪";i:10035;s:4:"𖤫";i:10036;s:4:"𖤬";i:10037;s:4:"ð–¤­";i:10038;s:4:"𖤮";i:10039;s:4:"𖤯";i:10040;s:4:"ð–¤°";i:10041;s:4:"𖤱";i:10042;s:4:"𖤲";i:10043;s:4:"𖤳";i:10044;s:4:"ð–¤´";i:10045;s:4:"𖤵";i:10046;s:4:"𖤶";i:10047;s:4:"ð–¤·";i:10048;s:4:"𖤸";i:10049;s:4:"𖤹";i:10050;s:4:"𖤺";i:10051;s:4:"𖤻";i:10052;s:4:"𖤼";i:10053;s:4:"𖤽";i:10054;s:4:"𖤾";i:10055;s:4:"𖤿";i:10056;s:4:"ð–¥€";i:10057;s:4:"ð–¥";i:10058;s:4:"𖥂";i:10059;s:4:"𖥃";i:10060;s:4:"𖥄";i:10061;s:4:"ð–¥…";i:10062;s:4:"𖥆";i:10063;s:4:"𖥇";i:10064;s:4:"𖥈";i:10065;s:4:"𖥉";i:10066;s:4:"𖥊";i:10067;s:4:"𖥋";i:10068;s:4:"𖥌";i:10069;s:4:"ð–¥";i:10070;s:4:"𖥎";i:10071;s:4:"ð–¥";i:10072;s:4:"ð–¥";i:10073;s:4:"𖥑";i:10074;s:4:"ð–¥’";i:10075;s:4:"𖥓";i:10076;s:4:"ð–¥”";i:10077;s:4:"𖥕";i:10078;s:4:"ð–¥–";i:10079;s:4:"ð–¥—";i:10080;s:4:"𖥘";i:10081;s:4:"ð–¥™";i:10082;s:4:"𖥚";i:10083;s:4:"ð–¥›";i:10084;s:4:"𖥜";i:10085;s:4:"ð–¥";i:10086;s:4:"𖥞";i:10087;s:4:"𖥟";i:10088;s:4:"ð–¥ ";i:10089;s:4:"𖥡";i:10090;s:4:"ð–¥¢";i:10091;s:4:"ð–¥£";i:10092;s:4:"𖥤";i:10093;s:4:"ð–¥¥";i:10094;s:4:"𖥦";i:10095;s:4:"𖥧";i:10096;s:4:"𖥨";i:10097;s:4:"𖥩";i:10098;s:4:"𖥪";i:10099;s:4:"𖥫";i:10100;s:4:"𖥬";i:10101;s:4:"ð–¥­";i:10102;s:4:"ð–¥®";i:10103;s:4:"𖥯";i:10104;s:4:"ð–¥°";i:10105;s:4:"ð–¥±";i:10106;s:4:"ð–¥²";i:10107;s:4:"ð–¥³";i:10108;s:4:"ð–¥´";i:10109;s:4:"ð–¥µ";i:10110;s:4:"𖥶";i:10111;s:4:"ð–¥·";i:10112;s:4:"𖥸";i:10113;s:4:"ð–¥¹";i:10114;s:4:"𖥺";i:10115;s:4:"ð–¥»";i:10116;s:4:"ð–¥¼";i:10117;s:4:"ð–¥½";i:10118;s:4:"ð–¥¾";i:10119;s:4:"𖥿";i:10120;s:4:"𖦀";i:10121;s:4:"ð–¦";i:10122;s:4:"𖦂";i:10123;s:4:"𖦃";i:10124;s:4:"𖦄";i:10125;s:4:"ð–¦…";i:10126;s:4:"𖦆";i:10127;s:4:"𖦇";i:10128;s:4:"𖦈";i:10129;s:4:"𖦉";i:10130;s:4:"𖦊";i:10131;s:4:"𖦋";i:10132;s:4:"𖦌";i:10133;s:4:"ð–¦";i:10134;s:4:"𖦎";i:10135;s:4:"ð–¦";i:10136;s:4:"ð–¦";i:10137;s:4:"𖦑";i:10138;s:4:"ð–¦’";i:10139;s:4:"𖦓";i:10140;s:4:"𖦔";i:10141;s:4:"𖦕";i:10142;s:4:"ð–¦–";i:10143;s:4:"ð–¦—";i:10144;s:4:"𖦘";i:10145;s:4:"𖦙";i:10146;s:4:"𖦚";i:10147;s:4:"𖦛";i:10148;s:4:"𖦜";i:10149;s:4:"ð–¦";i:10150;s:4:"𖦞";i:10151;s:4:"𖦟";i:10152;s:4:"ð–¦ ";i:10153;s:4:"𖦡";i:10154;s:4:"𖦢";i:10155;s:4:"𖦣";i:10156;s:4:"𖦤";i:10157;s:4:"𖦥";i:10158;s:4:"𖦦";i:10159;s:4:"𖦧";i:10160;s:4:"𖦨";i:10161;s:4:"𖦩";i:10162;s:4:"𖦪";i:10163;s:4:"𖦫";i:10164;s:4:"𖦬";i:10165;s:4:"ð–¦­";i:10166;s:4:"𖦮";i:10167;s:4:"𖦯";i:10168;s:4:"ð–¦°";i:10169;s:4:"𖦱";i:10170;s:4:"𖦲";i:10171;s:4:"𖦳";i:10172;s:4:"ð–¦´";i:10173;s:4:"𖦵";i:10174;s:4:"𖦶";i:10175;s:4:"ð–¦·";i:10176;s:4:"𖦸";i:10177;s:4:"𖦹";i:10178;s:4:"𖦺";i:10179;s:4:"𖦻";i:10180;s:4:"𖦼";i:10181;s:4:"𖦽";i:10182;s:4:"𖦾";i:10183;s:4:"𖦿";i:10184;s:4:"𖧀";i:10185;s:4:"ð–§";i:10186;s:4:"𖧂";i:10187;s:4:"𖧃";i:10188;s:4:"𖧄";i:10189;s:4:"ð–§…";i:10190;s:4:"𖧆";i:10191;s:4:"𖧇";i:10192;s:4:"𖧈";i:10193;s:4:"𖧉";i:10194;s:4:"𖧊";i:10195;s:4:"𖧋";i:10196;s:4:"𖧌";i:10197;s:4:"ð–§";i:10198;s:4:"𖧎";i:10199;s:4:"ð–§";i:10200;s:4:"ð–§";i:10201;s:4:"𖧑";i:10202;s:4:"ð–§’";i:10203;s:4:"𖧓";i:10204;s:4:"𖧔";i:10205;s:4:"𖧕";i:10206;s:4:"ð–§–";i:10207;s:4:"ð–§—";i:10208;s:4:"𖧘";i:10209;s:4:"𖧙";i:10210;s:4:"𖧚";i:10211;s:4:"𖧛";i:10212;s:4:"𖧜";i:10213;s:4:"ð–§";i:10214;s:4:"𖧞";i:10215;s:4:"𖧟";i:10216;s:4:"ð–§ ";i:10217;s:4:"𖧡";i:10218;s:4:"𖧢";i:10219;s:4:"𖧣";i:10220;s:4:"𖧤";i:10221;s:4:"𖧥";i:10222;s:4:"𖧦";i:10223;s:4:"𖧧";i:10224;s:4:"𖧨";i:10225;s:4:"𖧩";i:10226;s:4:"𖧪";i:10227;s:4:"𖧫";i:10228;s:4:"𖧬";i:10229;s:4:"ð–§­";i:10230;s:4:"𖧮";i:10231;s:4:"𖧯";i:10232;s:4:"ð–§°";i:10233;s:4:"𖧱";i:10234;s:4:"𖧲";i:10235;s:4:"𖧳";i:10236;s:4:"ð–§´";i:10237;s:4:"𖧵";i:10238;s:4:"𖧶";i:10239;s:4:"ð–§·";i:10240;s:4:"𖧸";i:10241;s:4:"𖧹";i:10242;s:4:"𖧺";i:10243;s:4:"𖧻";i:10244;s:4:"𖧼";i:10245;s:4:"𖧽";i:10246;s:4:"𖧾";i:10247;s:4:"𖧿";i:10248;s:4:"𖨀";i:10249;s:4:"ð–¨";i:10250;s:4:"𖨂";i:10251;s:4:"𖨃";i:10252;s:4:"𖨄";i:10253;s:4:"ð–¨…";i:10254;s:4:"𖨆";i:10255;s:4:"𖨇";i:10256;s:4:"𖨈";i:10257;s:4:"𖨉";i:10258;s:4:"𖨊";i:10259;s:4:"𖨋";i:10260;s:4:"𖨌";i:10261;s:4:"ð–¨";i:10262;s:4:"𖨎";i:10263;s:4:"ð–¨";i:10264;s:4:"ð–¨";i:10265;s:4:"𖨑";i:10266;s:4:"ð–¨’";i:10267;s:4:"𖨓";i:10268;s:4:"𖨔";i:10269;s:4:"𖨕";i:10270;s:4:"ð–¨–";i:10271;s:4:"ð–¨—";i:10272;s:4:"𖨘";i:10273;s:4:"𖨙";i:10274;s:4:"𖨚";i:10275;s:4:"𖨛";i:10276;s:4:"𖨜";i:10277;s:4:"ð–¨";i:10278;s:4:"𖨞";i:10279;s:4:"𖨟";i:10280;s:4:"ð–¨ ";i:10281;s:4:"𖨡";i:10282;s:4:"𖨢";i:10283;s:4:"𖨣";i:10284;s:4:"𖨤";i:10285;s:4:"𖨥";i:10286;s:4:"𖨦";i:10287;s:4:"𖨧";i:10288;s:4:"𖨨";i:10289;s:4:"𖨩";i:10290;s:4:"𖨪";i:10291;s:4:"𖨫";i:10292;s:4:"𖨬";i:10293;s:4:"ð–¨­";i:10294;s:4:"𖨮";i:10295;s:4:"𖨯";i:10296;s:4:"ð–¨°";i:10297;s:4:"𖨱";i:10298;s:4:"𖨲";i:10299;s:4:"𖨳";i:10300;s:4:"ð–¨´";i:10301;s:4:"𖨵";i:10302;s:4:"𖨶";i:10303;s:4:"ð–¨·";i:10304;s:4:"𖨸";i:10305;s:3:"á„€";i:10306;s:3:"á„";i:10307;s:3:"á„‚";i:10308;s:3:"ᄃ";i:10309;s:3:"á„„";i:10310;s:3:"á„…";i:10311;s:3:"ᄆ";i:10312;s:3:"ᄇ";i:10313;s:3:"ᄈ";i:10314;s:3:"ᄉ";i:10315;s:3:"á„Š";i:10316;s:3:"á„‹";i:10317;s:3:"á„Œ";i:10318;s:3:"á„";i:10319;s:3:"á„Ž";i:10320;s:3:"á„";i:10321;s:3:"á„";i:10322;s:3:"á„‘";i:10323;s:3:"á„’";i:10324;s:3:"á„“";i:10325;s:3:"á„”";i:10326;s:3:"á„•";i:10327;s:3:"á„–";i:10328;s:3:"á„—";i:10329;s:3:"ᄘ";i:10330;s:3:"á„™";i:10331;s:3:"á„š";i:10332;s:3:"á„›";i:10333;s:3:"á„œ";i:10334;s:3:"á„";i:10335;s:3:"á„ž";i:10336;s:3:"á„Ÿ";i:10337;s:3:"á„ ";i:10338;s:3:"á„¡";i:10339;s:3:"á„¢";i:10340;s:3:"á„£";i:10341;s:3:"ᄤ";i:10342;s:3:"á„¥";i:10343;s:3:"ᄦ";i:10344;s:3:"ᄧ";i:10345;s:3:"ᄨ";i:10346;s:3:"á„©";i:10347;s:3:"ᄪ";i:10348;s:3:"á„«";i:10349;s:3:"ᄬ";i:10350;s:3:"á„­";i:10351;s:3:"á„®";i:10352;s:3:"ᄯ";i:10353;s:3:"á„°";i:10354;s:3:"ᄱ";i:10355;s:3:"ᄲ";i:10356;s:3:"ᄳ";i:10357;s:3:"á„´";i:10358;s:3:"ᄵ";i:10359;s:3:"ᄶ";i:10360;s:3:"á„·";i:10361;s:3:"ᄸ";i:10362;s:3:"ᄹ";i:10363;s:3:"ᄺ";i:10364;s:3:"á„»";i:10365;s:3:"ᄼ";i:10366;s:3:"ᄽ";i:10367;s:3:"ᄾ";i:10368;s:3:"á„¿";i:10369;s:3:"á…€";i:10370;s:3:"á…";i:10371;s:3:"á…‚";i:10372;s:3:"á…ƒ";i:10373;s:3:"á…„";i:10374;s:3:"á……";i:10375;s:3:"á…†";i:10376;s:3:"á…‡";i:10377;s:3:"á…ˆ";i:10378;s:3:"á…‰";i:10379;s:3:"á…Š";i:10380;s:3:"á…‹";i:10381;s:3:"á…Œ";i:10382;s:3:"á…";i:10383;s:3:"á…Ž";i:10384;s:3:"á…";i:10385;s:3:"á…";i:10386;s:3:"á…‘";i:10387;s:3:"á…’";i:10388;s:3:"á…“";i:10389;s:3:"á…”";i:10390;s:3:"á…•";i:10391;s:3:"á…–";i:10392;s:3:"á…—";i:10393;s:3:"á…˜";i:10394;s:3:"á…™";i:10395;s:3:"á…š";i:10396;s:3:"á…›";i:10397;s:3:"á…œ";i:10398;s:3:"á…";i:10399;s:3:"á…ž";i:10400;s:3:"ꥠ";i:10401;s:3:"ꥡ";i:10402;s:3:"ꥢ";i:10403;s:3:"ꥣ";i:10404;s:3:"ꥤ";i:10405;s:3:"ꥥ";i:10406;s:3:"ꥦ";i:10407;s:3:"ꥧ";i:10408;s:3:"ꥨ";i:10409;s:3:"ꥩ";i:10410;s:3:"ꥪ";i:10411;s:3:"ꥫ";i:10412;s:3:"ꥬ";i:10413;s:3:"ꥭ";i:10414;s:3:"ꥮ";i:10415;s:3:"ꥯ";i:10416;s:3:"ꥰ";i:10417;s:3:"ꥱ";i:10418;s:3:"ꥲ";i:10419;s:3:"ꥳ";i:10420;s:3:"ꥴ";i:10421;s:3:"ꥵ";i:10422;s:3:"ꥶ";i:10423;s:3:"ꥷ";i:10424;s:3:"ꥸ";i:10425;s:3:"ꥹ";i:10426;s:3:"ꥺ";i:10427;s:3:"ꥻ";i:10428;s:3:"ꥼ";i:10429;s:3:"á…Ÿ";i:10430;s:3:"á… ";i:10431;s:3:"á…¡";i:10432;s:3:"á…¢";i:10433;s:3:"á…£";i:10434;s:3:"á…¤";i:10435;s:3:"á…¥";i:10436;s:3:"á…¦";i:10437;s:3:"á…§";i:10438;s:3:"á…¨";i:10439;s:3:"á…©";i:10440;s:3:"á…ª";i:10441;s:3:"á…«";i:10442;s:3:"á…¬";i:10443;s:3:"á…­";i:10444;s:3:"á…®";i:10445;s:3:"á…¯";i:10446;s:3:"á…°";i:10447;s:3:"á…±";i:10448;s:3:"á…²";i:10449;s:3:"á…³";i:10450;s:3:"á…´";i:10451;s:3:"á…µ";i:10452;s:3:"á…¶";i:10453;s:3:"á…·";i:10454;s:3:"á…¸";i:10455;s:3:"á…¹";i:10456;s:3:"á…º";i:10457;s:3:"á…»";i:10458;s:3:"á…¼";i:10459;s:3:"á…½";i:10460;s:3:"á…¾";i:10461;s:3:"á…¿";i:10462;s:3:"ᆀ";i:10463;s:3:"á†";i:10464;s:3:"ᆂ";i:10465;s:3:"ᆃ";i:10466;s:3:"ᆄ";i:10467;s:3:"ᆅ";i:10468;s:3:"ᆆ";i:10469;s:3:"ᆇ";i:10470;s:3:"ᆈ";i:10471;s:3:"ᆉ";i:10472;s:3:"ᆊ";i:10473;s:3:"ᆋ";i:10474;s:3:"ᆌ";i:10475;s:3:"á†";i:10476;s:3:"ᆎ";i:10477;s:3:"á†";i:10478;s:3:"á†";i:10479;s:3:"ᆑ";i:10480;s:3:"ᆒ";i:10481;s:3:"ᆓ";i:10482;s:3:"ᆔ";i:10483;s:3:"ᆕ";i:10484;s:3:"ᆖ";i:10485;s:3:"ᆗ";i:10486;s:3:"ᆘ";i:10487;s:3:"ᆙ";i:10488;s:3:"ᆚ";i:10489;s:3:"ᆛ";i:10490;s:3:"ᆜ";i:10491;s:3:"á†";i:10492;s:3:"ᆞ";i:10493;s:3:"ᆟ";i:10494;s:3:"ᆠ";i:10495;s:3:"ᆡ";i:10496;s:3:"ᆢ";i:10497;s:3:"ᆣ";i:10498;s:3:"ᆤ";i:10499;s:3:"ᆥ";i:10500;s:3:"ᆦ";i:10501;s:3:"ᆧ";i:10502;s:3:"íž°";i:10503;s:3:"íž±";i:10504;s:3:"íž²";i:10505;s:3:"íž³";i:10506;s:3:"íž´";i:10507;s:3:"ížµ";i:10508;s:3:"ힶ";i:10509;s:3:"íž·";i:10510;s:3:"ힸ";i:10511;s:3:"íž¹";i:10512;s:3:"ힺ";i:10513;s:3:"íž»";i:10514;s:3:"íž¼";i:10515;s:3:"íž½";i:10516;s:3:"íž¾";i:10517;s:3:"íž¿";i:10518;s:3:"ퟀ";i:10519;s:3:"íŸ";i:10520;s:3:"ퟂ";i:10521;s:3:"ퟃ";i:10522;s:3:"ퟄ";i:10523;s:3:"ퟅ";i:10524;s:3:"ퟆ";i:10525;s:3:"ᆨ";i:10526;s:3:"ᆩ";i:10527;s:3:"ᆪ";i:10528;s:3:"ᆫ";i:10529;s:3:"ᆬ";i:10530;s:3:"ᆭ";i:10531;s:3:"ᆮ";i:10532;s:3:"ᆯ";i:10533;s:3:"ᆰ";i:10534;s:3:"ᆱ";i:10535;s:3:"ᆲ";i:10536;s:3:"ᆳ";i:10537;s:3:"ᆴ";i:10538;s:3:"ᆵ";i:10539;s:3:"ᆶ";i:10540;s:3:"ᆷ";i:10541;s:3:"ᆸ";i:10542;s:3:"ᆹ";i:10543;s:3:"ᆺ";i:10544;s:3:"ᆻ";i:10545;s:3:"ᆼ";i:10546;s:3:"ᆽ";i:10547;s:3:"ᆾ";i:10548;s:3:"ᆿ";i:10549;s:3:"ᇀ";i:10550;s:3:"á‡";i:10551;s:3:"ᇂ";i:10552;s:3:"ᇃ";i:10553;s:3:"ᇄ";i:10554;s:3:"ᇅ";i:10555;s:3:"ᇆ";i:10556;s:3:"ᇇ";i:10557;s:3:"ᇈ";i:10558;s:3:"ᇉ";i:10559;s:3:"ᇊ";i:10560;s:3:"ᇋ";i:10561;s:3:"ᇌ";i:10562;s:3:"á‡";i:10563;s:3:"ᇎ";i:10564;s:3:"á‡";i:10565;s:3:"á‡";i:10566;s:3:"ᇑ";i:10567;s:3:"ᇒ";i:10568;s:3:"ᇓ";i:10569;s:3:"ᇔ";i:10570;s:3:"ᇕ";i:10571;s:3:"ᇖ";i:10572;s:3:"ᇗ";i:10573;s:3:"ᇘ";i:10574;s:3:"ᇙ";i:10575;s:3:"ᇚ";i:10576;s:3:"ᇛ";i:10577;s:3:"ᇜ";i:10578;s:3:"á‡";i:10579;s:3:"ᇞ";i:10580;s:3:"ᇟ";i:10581;s:3:"ᇠ";i:10582;s:3:"ᇡ";i:10583;s:3:"ᇢ";i:10584;s:3:"ᇣ";i:10585;s:3:"ᇤ";i:10586;s:3:"ᇥ";i:10587;s:3:"ᇦ";i:10588;s:3:"ᇧ";i:10589;s:3:"ᇨ";i:10590;s:3:"ᇩ";i:10591;s:3:"ᇪ";i:10592;s:3:"ᇫ";i:10593;s:3:"ᇬ";i:10594;s:3:"ᇭ";i:10595;s:3:"ᇮ";i:10596;s:3:"ᇯ";i:10597;s:3:"ᇰ";i:10598;s:3:"ᇱ";i:10599;s:3:"ᇲ";i:10600;s:3:"ᇳ";i:10601;s:3:"ᇴ";i:10602;s:3:"ᇵ";i:10603;s:3:"ᇶ";i:10604;s:3:"ᇷ";i:10605;s:3:"ᇸ";i:10606;s:3:"ᇹ";i:10607;s:3:"ᇺ";i:10608;s:3:"ᇻ";i:10609;s:3:"ᇼ";i:10610;s:3:"ᇽ";i:10611;s:3:"ᇾ";i:10612;s:3:"ᇿ";i:10613;s:3:"ퟋ";i:10614;s:3:"ퟌ";i:10615;s:3:"íŸ";i:10616;s:3:"ퟎ";i:10617;s:3:"íŸ";i:10618;s:3:"íŸ";i:10619;s:3:"ퟑ";i:10620;s:3:"ퟒ";i:10621;s:3:"ퟓ";i:10622;s:3:"ퟔ";i:10623;s:3:"ퟕ";i:10624;s:3:"ퟖ";i:10625;s:3:"ퟗ";i:10626;s:3:"ퟘ";i:10627;s:3:"ퟙ";i:10628;s:3:"ퟚ";i:10629;s:3:"ퟛ";i:10630;s:3:"ퟜ";i:10631;s:3:"íŸ";i:10632;s:3:"ퟞ";i:10633;s:3:"ퟟ";i:10634;s:3:"ퟠ";i:10635;s:3:"ퟡ";i:10636;s:3:"ퟢ";i:10637;s:3:"ퟣ";i:10638;s:3:"ퟤ";i:10639;s:3:"ퟥ";i:10640;s:3:"ퟦ";i:10641;s:3:"ퟧ";i:10642;s:3:"ퟨ";i:10643;s:3:"ퟩ";i:10644;s:3:"ퟪ";i:10645;s:3:"ퟫ";i:10646;s:3:"ퟬ";i:10647;s:3:"ퟭ";i:10648;s:3:"ퟮ";i:10649;s:3:"ퟯ";i:10650;s:3:"ퟰ";i:10651;s:3:"ퟱ";i:10652;s:3:"ퟲ";i:10653;s:3:"ퟳ";i:10654;s:3:"ퟴ";i:10655;s:3:"ퟵ";i:10656;s:3:"ퟶ";i:10657;s:3:"ퟷ";i:10658;s:3:"ퟸ";i:10659;s:3:"ퟹ";i:10660;s:3:"ퟺ";i:10661;s:3:"ퟻ";i:10662;s:3:"ã‚";i:10663;s:3:"ã„";i:10664;s:3:"ã†";i:10665;s:4:"𛀀";i:10666;s:3:"ãˆ";i:10667;s:3:"ãŠ";i:10668;s:3:"ã‹";i:10669;s:3:"ã";i:10670;s:3:"ã";i:10671;s:3:"ã‘";i:10672;s:3:"ã“";i:10673;s:3:"ã•";i:10674;s:3:"ã—";i:10675;s:3:"ã™";i:10676;s:3:"ã›";i:10677;s:3:"ã";i:10678;s:3:"ãŸ";i:10679;s:3:"ã¡";i:10680;s:3:"ã¤";i:10681;s:3:"ã¦";i:10682;s:3:"ã¨";i:10683;s:3:"ãª";i:10684;s:3:"ã«";i:10685;s:3:"ã¬";i:10686;s:3:"ã­";i:10687;s:3:"ã®";i:10688;s:3:"ã¯";i:10689;s:3:"ã²";i:10690;s:3:"ãµ";i:10691;s:3:"ã¸";i:10692;s:3:"ã»";i:10693;s:3:"ã¾";i:10694;s:3:"ã¿";i:10695;s:3:"ã‚€";i:10696;s:3:"ã‚";i:10697;s:3:"ã‚‚";i:10698;s:3:"ã‚„";i:10699;s:3:"ゆ";i:10700;s:4:"ð›€";i:10701;s:3:"よ";i:10702;s:3:"ら";i:10703;s:3:"ã‚Š";i:10704;s:3:"ã‚‹";i:10705;s:3:"ã‚Œ";i:10706;s:3:"ã‚";i:10707;s:3:"ã‚";i:10708;s:3:"ã‚";i:10709;s:3:"ã‚‘";i:10710;s:3:"ã‚’";i:10711;s:3:"ã‚“";i:10712;s:3:"ã„…";i:10713;s:3:"ㄆ";i:10714;s:3:"ㄇ";i:10715;s:3:"ㄈ";i:10716;s:3:"ㄪ";i:10717;s:3:"ㄉ";i:10718;s:3:"ã„Š";i:10719;s:3:"ã„‹";i:10720;s:3:"ã„Œ";i:10721;s:3:"ã„";i:10722;s:3:"ã„Ž";i:10723;s:3:"ã„«";i:10724;s:3:"ㆭ";i:10725;s:3:"ã„";i:10726;s:3:"ã„";i:10727;s:3:"ã„‘";i:10728;s:3:"ã„’";i:10729;s:3:"ㄬ";i:10730;s:3:"ã„“";i:10731;s:3:"ã„”";i:10732;s:3:"ã„•";i:10733;s:3:"ã„–";i:10734;s:3:"ã„—";i:10735;s:3:"ㄘ";i:10736;s:3:"ã„™";i:10737;s:3:"ㆸ";i:10738;s:3:"ㆹ";i:10739;s:3:"ㆺ";i:10740;s:3:"ã„š";i:10741;s:3:"ã„›";i:10742;s:3:"ㆦ";i:10743;s:3:"ã„œ";i:10744;s:3:"ã„";i:10745;s:3:"ㆤ";i:10746;s:3:"ã„ž";i:10747;s:3:"ã„Ÿ";i:10748;s:3:"ã„ ";i:10749;s:3:"ã„¡";i:10750;s:3:"ã„¢";i:10751;s:3:"ã„£";i:10752;s:3:"ㄤ";i:10753;s:3:"ㆲ";i:10754;s:3:"ã„¥";i:10755;s:3:"ㆰ";i:10756;s:3:"ㆱ";i:10757;s:3:"ㆬ";i:10758;s:3:"ㄦ";i:10759;s:3:"ㄧ";i:10760;s:3:"ㄨ";i:10761;s:3:"ã„©";i:10762;s:3:"ã„­";i:10763;s:3:"ꀀ";i:10764;s:3:"ê€";i:10765;s:3:"ꀂ";i:10766;s:3:"ꀃ";i:10767;s:3:"ꀄ";i:10768;s:3:"ꀅ";i:10769;s:3:"ꀆ";i:10770;s:3:"ꀇ";i:10771;s:3:"ꀈ";i:10772;s:3:"ꀉ";i:10773;s:3:"ꀊ";i:10774;s:3:"ꀋ";i:10775;s:3:"ꀌ";i:10776;s:3:"ê€";i:10777;s:3:"ꀎ";i:10778;s:3:"ê€";i:10779;s:3:"ê€";i:10780;s:3:"ꀑ";i:10781;s:3:"ꀒ";i:10782;s:3:"ꀓ";i:10783;s:3:"ꀔ";i:10784;s:3:"ꀕ";i:10785;s:3:"ꀖ";i:10786;s:3:"ꀗ";i:10787;s:3:"ꀘ";i:10788;s:3:"ꀙ";i:10789;s:3:"ꀚ";i:10790;s:3:"ꀛ";i:10791;s:3:"ꀜ";i:10792;s:3:"ê€";i:10793;s:3:"ꀞ";i:10794;s:3:"ꀟ";i:10795;s:3:"ꀠ";i:10796;s:3:"ꀡ";i:10797;s:3:"ꀢ";i:10798;s:3:"ꀣ";i:10799;s:3:"ꀤ";i:10800;s:3:"ꀥ";i:10801;s:3:"ꀦ";i:10802;s:3:"ꀧ";i:10803;s:3:"ꀨ";i:10804;s:3:"ꀩ";i:10805;s:3:"ꀪ";i:10806;s:3:"ꀫ";i:10807;s:3:"ꀬ";i:10808;s:3:"ꀭ";i:10809;s:3:"ꀮ";i:10810;s:3:"ꀯ";i:10811;s:3:"ꀰ";i:10812;s:3:"ꀱ";i:10813;s:3:"ꀲ";i:10814;s:3:"ꀳ";i:10815;s:3:"ꀴ";i:10816;s:3:"ꀵ";i:10817;s:3:"ꀶ";i:10818;s:3:"ꀷ";i:10819;s:3:"ꀸ";i:10820;s:3:"ꀹ";i:10821;s:3:"ꀺ";i:10822;s:3:"ꀻ";i:10823;s:3:"ꀼ";i:10824;s:3:"ꀽ";i:10825;s:3:"ꀾ";i:10826;s:3:"ꀿ";i:10827;s:3:"ê€";i:10828;s:3:"ê";i:10829;s:3:"ê‚";i:10830;s:3:"êƒ";i:10831;s:3:"ê„";i:10832;s:3:"ê…";i:10833;s:3:"ê†";i:10834;s:3:"ê‡";i:10835;s:3:"êˆ";i:10836;s:3:"ê‰";i:10837;s:3:"êŠ";i:10838;s:3:"ê‹";i:10839;s:3:"êŒ";i:10840;s:3:"ê";i:10841;s:3:"êŽ";i:10842;s:3:"ê";i:10843;s:3:"ê";i:10844;s:3:"ê‘";i:10845;s:3:"ê’";i:10846;s:3:"ê“";i:10847;s:3:"ê”";i:10848;s:3:"ê•";i:10849;s:3:"ê–";i:10850;s:3:"ê—";i:10851;s:3:"ê˜";i:10852;s:3:"ê™";i:10853;s:3:"êš";i:10854;s:3:"ê›";i:10855;s:3:"êœ";i:10856;s:3:"ê";i:10857;s:3:"êž";i:10858;s:3:"êŸ";i:10859;s:3:"ê ";i:10860;s:3:"ê¡";i:10861;s:3:"ê¢";i:10862;s:3:"ê£";i:10863;s:3:"ê¤";i:10864;s:3:"ê¥";i:10865;s:3:"ê¦";i:10866;s:3:"ê§";i:10867;s:3:"ê¨";i:10868;s:3:"ê©";i:10869;s:3:"êª";i:10870;s:3:"ê«";i:10871;s:3:"ê¬";i:10872;s:3:"ê­";i:10873;s:3:"ê®";i:10874;s:3:"ê¯";i:10875;s:3:"ê°";i:10876;s:3:"ê±";i:10877;s:3:"ê²";i:10878;s:3:"ê³";i:10879;s:3:"ê´";i:10880;s:3:"êµ";i:10881;s:3:"ê¶";i:10882;s:3:"ê·";i:10883;s:3:"ê¸";i:10884;s:3:"ê¹";i:10885;s:3:"êº";i:10886;s:3:"ê»";i:10887;s:3:"ê¼";i:10888;s:3:"ê½";i:10889;s:3:"ê¾";i:10890;s:3:"ê¿";i:10891;s:3:"ê‚€";i:10892;s:3:"ê‚";i:10893;s:3:"ê‚‚";i:10894;s:3:"ꂃ";i:10895;s:3:"ê‚„";i:10896;s:3:"ê‚…";i:10897;s:3:"ꂆ";i:10898;s:3:"ꂇ";i:10899;s:3:"ꂈ";i:10900;s:3:"ꂉ";i:10901;s:3:"ê‚Š";i:10902;s:3:"ê‚‹";i:10903;s:3:"ê‚Œ";i:10904;s:3:"ê‚";i:10905;s:3:"ê‚Ž";i:10906;s:3:"ê‚";i:10907;s:3:"ê‚";i:10908;s:3:"ê‚‘";i:10909;s:3:"ê‚’";i:10910;s:3:"ê‚“";i:10911;s:3:"ê‚”";i:10912;s:3:"ê‚•";i:10913;s:3:"ê‚–";i:10914;s:3:"ê‚—";i:10915;s:3:"ꂘ";i:10916;s:3:"ê‚™";i:10917;s:3:"ê‚š";i:10918;s:3:"ê‚›";i:10919;s:3:"ê‚œ";i:10920;s:3:"ê‚";i:10921;s:3:"ê‚ž";i:10922;s:3:"ê‚Ÿ";i:10923;s:3:"ê‚ ";i:10924;s:3:"ê‚¡";i:10925;s:3:"ê‚¢";i:10926;s:3:"ê‚£";i:10927;s:3:"ꂤ";i:10928;s:3:"ê‚¥";i:10929;s:3:"ꂦ";i:10930;s:3:"ꂧ";i:10931;s:3:"ꂨ";i:10932;s:3:"ê‚©";i:10933;s:3:"ꂪ";i:10934;s:3:"ê‚«";i:10935;s:3:"ꂬ";i:10936;s:3:"ê‚­";i:10937;s:3:"ê‚®";i:10938;s:3:"ꂯ";i:10939;s:3:"ê‚°";i:10940;s:3:"ꂱ";i:10941;s:3:"ꂲ";i:10942;s:3:"ꂳ";i:10943;s:3:"ê‚´";i:10944;s:3:"ꂵ";i:10945;s:3:"ꂶ";i:10946;s:3:"ê‚·";i:10947;s:3:"ꂸ";i:10948;s:3:"ꂹ";i:10949;s:3:"ꂺ";i:10950;s:3:"ê‚»";i:10951;s:3:"ꂼ";i:10952;s:3:"ꂽ";i:10953;s:3:"ꂾ";i:10954;s:3:"ê‚¿";i:10955;s:3:"ꃀ";i:10956;s:3:"êƒ";i:10957;s:3:"ꃂ";i:10958;s:3:"ꃃ";i:10959;s:3:"ꃄ";i:10960;s:3:"ꃅ";i:10961;s:3:"ꃆ";i:10962;s:3:"ꃇ";i:10963;s:3:"ꃈ";i:10964;s:3:"ꃉ";i:10965;s:3:"ꃊ";i:10966;s:3:"ꃋ";i:10967;s:3:"ꃌ";i:10968;s:3:"êƒ";i:10969;s:3:"ꃎ";i:10970;s:3:"êƒ";i:10971;s:3:"êƒ";i:10972;s:3:"ꃑ";i:10973;s:3:"ꃒ";i:10974;s:3:"ꃓ";i:10975;s:3:"ꃔ";i:10976;s:3:"ꃕ";i:10977;s:3:"ꃖ";i:10978;s:3:"ꃗ";i:10979;s:3:"ꃘ";i:10980;s:3:"ꃙ";i:10981;s:3:"ꃚ";i:10982;s:3:"ꃛ";i:10983;s:3:"ꃜ";i:10984;s:3:"êƒ";i:10985;s:3:"ꃞ";i:10986;s:3:"ꃟ";i:10987;s:3:"ꃠ";i:10988;s:3:"ꃡ";i:10989;s:3:"ꃢ";i:10990;s:3:"ꃣ";i:10991;s:3:"ꃤ";i:10992;s:3:"ꃥ";i:10993;s:3:"ꃦ";i:10994;s:3:"ꃧ";i:10995;s:3:"ꃨ";i:10996;s:3:"ꃩ";i:10997;s:3:"ꃪ";i:10998;s:3:"ꃫ";i:10999;s:3:"ꃬ";i:11000;s:3:"ꃭ";i:11001;s:3:"ꃮ";i:11002;s:3:"ꃯ";i:11003;s:3:"ꃰ";i:11004;s:3:"ꃱ";i:11005;s:3:"ꃲ";i:11006;s:3:"ꃳ";i:11007;s:3:"ꃴ";i:11008;s:3:"ꃵ";i:11009;s:3:"ꃶ";i:11010;s:3:"ꃷ";i:11011;s:3:"ꃸ";i:11012;s:3:"ꃹ";i:11013;s:3:"ꃺ";i:11014;s:3:"ꃻ";i:11015;s:3:"ꃼ";i:11016;s:3:"ꃽ";i:11017;s:3:"ꃾ";i:11018;s:3:"ꃿ";i:11019;s:3:"ê„€";i:11020;s:3:"ê„";i:11021;s:3:"ê„‚";i:11022;s:3:"ꄃ";i:11023;s:3:"ê„„";i:11024;s:3:"ê„…";i:11025;s:3:"ꄆ";i:11026;s:3:"ꄇ";i:11027;s:3:"ꄈ";i:11028;s:3:"ꄉ";i:11029;s:3:"ê„Š";i:11030;s:3:"ê„‹";i:11031;s:3:"ê„Œ";i:11032;s:3:"ê„";i:11033;s:3:"ê„Ž";i:11034;s:3:"ê„";i:11035;s:3:"ê„";i:11036;s:3:"ê„‘";i:11037;s:3:"ê„’";i:11038;s:3:"ê„“";i:11039;s:3:"ê„”";i:11040;s:3:"ê„•";i:11041;s:3:"ê„–";i:11042;s:3:"ê„—";i:11043;s:3:"ꄘ";i:11044;s:3:"ê„™";i:11045;s:3:"ê„š";i:11046;s:3:"ê„›";i:11047;s:3:"ê„œ";i:11048;s:3:"ê„";i:11049;s:3:"ê„ž";i:11050;s:3:"ê„Ÿ";i:11051;s:3:"ê„ ";i:11052;s:3:"ê„¡";i:11053;s:3:"ê„¢";i:11054;s:3:"ê„£";i:11055;s:3:"ꄤ";i:11056;s:3:"ê„¥";i:11057;s:3:"ꄦ";i:11058;s:3:"ꄧ";i:11059;s:3:"ꄨ";i:11060;s:3:"ê„©";i:11061;s:3:"ꄪ";i:11062;s:3:"ê„«";i:11063;s:3:"ꄬ";i:11064;s:3:"ê„­";i:11065;s:3:"ê„®";i:11066;s:3:"ꄯ";i:11067;s:3:"ê„°";i:11068;s:3:"ꄱ";i:11069;s:3:"ꄲ";i:11070;s:3:"ꄳ";i:11071;s:3:"ê„´";i:11072;s:3:"ꄵ";i:11073;s:3:"ꄶ";i:11074;s:3:"ê„·";i:11075;s:3:"ꄸ";i:11076;s:3:"ꄹ";i:11077;s:3:"ꄺ";i:11078;s:3:"ê„»";i:11079;s:3:"ꄼ";i:11080;s:3:"ꄽ";i:11081;s:3:"ꄾ";i:11082;s:3:"ê„¿";i:11083;s:3:"ê…€";i:11084;s:3:"ê…";i:11085;s:3:"ê…‚";i:11086;s:3:"ê…ƒ";i:11087;s:3:"ê…„";i:11088;s:3:"ê……";i:11089;s:3:"ê…†";i:11090;s:3:"ê…‡";i:11091;s:3:"ê…ˆ";i:11092;s:3:"ê…‰";i:11093;s:3:"ê…Š";i:11094;s:3:"ê…‹";i:11095;s:3:"ê…Œ";i:11096;s:3:"ê…";i:11097;s:3:"ê…Ž";i:11098;s:3:"ê…";i:11099;s:3:"ê…";i:11100;s:3:"ê…‘";i:11101;s:3:"ê…’";i:11102;s:3:"ê…“";i:11103;s:3:"ê…”";i:11104;s:3:"ê…•";i:11105;s:3:"ê…–";i:11106;s:3:"ê…—";i:11107;s:3:"ê…˜";i:11108;s:3:"ê…™";i:11109;s:3:"ê…š";i:11110;s:3:"ê…›";i:11111;s:3:"ê…œ";i:11112;s:3:"ê…";i:11113;s:3:"ê…ž";i:11114;s:3:"ê…Ÿ";i:11115;s:3:"ê… ";i:11116;s:3:"ê…¡";i:11117;s:3:"ê…¢";i:11118;s:3:"ê…£";i:11119;s:3:"ê…¤";i:11120;s:3:"ê…¥";i:11121;s:3:"ê…¦";i:11122;s:3:"ê…§";i:11123;s:3:"ê…¨";i:11124;s:3:"ê…©";i:11125;s:3:"ê…ª";i:11126;s:3:"ê…«";i:11127;s:3:"ê…¬";i:11128;s:3:"ê…­";i:11129;s:3:"ê…®";i:11130;s:3:"ê…¯";i:11131;s:3:"ê…°";i:11132;s:3:"ê…±";i:11133;s:3:"ê…²";i:11134;s:3:"ê…³";i:11135;s:3:"ê…´";i:11136;s:3:"ê…µ";i:11137;s:3:"ê…¶";i:11138;s:3:"ê…·";i:11139;s:3:"ê…¸";i:11140;s:3:"ê…¹";i:11141;s:3:"ê…º";i:11142;s:3:"ê…»";i:11143;s:3:"ê…¼";i:11144;s:3:"ê…½";i:11145;s:3:"ê…¾";i:11146;s:3:"ê…¿";i:11147;s:3:"ꆀ";i:11148;s:3:"ê†";i:11149;s:3:"ꆂ";i:11150;s:3:"ꆃ";i:11151;s:3:"ꆄ";i:11152;s:3:"ꆅ";i:11153;s:3:"ꆆ";i:11154;s:3:"ꆇ";i:11155;s:3:"ꆈ";i:11156;s:3:"ꆉ";i:11157;s:3:"ꆊ";i:11158;s:3:"ꆋ";i:11159;s:3:"ꆌ";i:11160;s:3:"ê†";i:11161;s:3:"ꆎ";i:11162;s:3:"ê†";i:11163;s:3:"ê†";i:11164;s:3:"ꆑ";i:11165;s:3:"ꆒ";i:11166;s:3:"ꆓ";i:11167;s:3:"ꆔ";i:11168;s:3:"ꆕ";i:11169;s:3:"ꆖ";i:11170;s:3:"ꆗ";i:11171;s:3:"ꆘ";i:11172;s:3:"ꆙ";i:11173;s:3:"ꆚ";i:11174;s:3:"ꆛ";i:11175;s:3:"ꆜ";i:11176;s:3:"ê†";i:11177;s:3:"ꆞ";i:11178;s:3:"ꆟ";i:11179;s:3:"ꆠ";i:11180;s:3:"ꆡ";i:11181;s:3:"ꆢ";i:11182;s:3:"ꆣ";i:11183;s:3:"ꆤ";i:11184;s:3:"ꆥ";i:11185;s:3:"ꆦ";i:11186;s:3:"ꆧ";i:11187;s:3:"ꆨ";i:11188;s:3:"ꆩ";i:11189;s:3:"ꆪ";i:11190;s:3:"ꆫ";i:11191;s:3:"ꆬ";i:11192;s:3:"ꆭ";i:11193;s:3:"ꆮ";i:11194;s:3:"ꆯ";i:11195;s:3:"ꆰ";i:11196;s:3:"ꆱ";i:11197;s:3:"ꆲ";i:11198;s:3:"ꆳ";i:11199;s:3:"ꆴ";i:11200;s:3:"ꆵ";i:11201;s:3:"ꆶ";i:11202;s:3:"ꆷ";i:11203;s:3:"ꆸ";i:11204;s:3:"ꆹ";i:11205;s:3:"ꆺ";i:11206;s:3:"ꆻ";i:11207;s:3:"ꆼ";i:11208;s:3:"ꆽ";i:11209;s:3:"ꆾ";i:11210;s:3:"ꆿ";i:11211;s:3:"ꇀ";i:11212;s:3:"ê‡";i:11213;s:3:"ꇂ";i:11214;s:3:"ꇃ";i:11215;s:3:"ꇄ";i:11216;s:3:"ꇅ";i:11217;s:3:"ꇆ";i:11218;s:3:"ꇇ";i:11219;s:3:"ꇈ";i:11220;s:3:"ꇉ";i:11221;s:3:"ꇊ";i:11222;s:3:"ꇋ";i:11223;s:3:"ꇌ";i:11224;s:3:"ê‡";i:11225;s:3:"ꇎ";i:11226;s:3:"ê‡";i:11227;s:3:"ê‡";i:11228;s:3:"ꇑ";i:11229;s:3:"ꇒ";i:11230;s:3:"ꇓ";i:11231;s:3:"ꇔ";i:11232;s:3:"ꇕ";i:11233;s:3:"ꇖ";i:11234;s:3:"ꇗ";i:11235;s:3:"ꇘ";i:11236;s:3:"ꇙ";i:11237;s:3:"ꇚ";i:11238;s:3:"ꇛ";i:11239;s:3:"ꇜ";i:11240;s:3:"ê‡";i:11241;s:3:"ꇞ";i:11242;s:3:"ꇟ";i:11243;s:3:"ꇠ";i:11244;s:3:"ꇡ";i:11245;s:3:"ꇢ";i:11246;s:3:"ꇣ";i:11247;s:3:"ꇤ";i:11248;s:3:"ꇥ";i:11249;s:3:"ꇦ";i:11250;s:3:"ꇧ";i:11251;s:3:"ꇨ";i:11252;s:3:"ꇩ";i:11253;s:3:"ꇪ";i:11254;s:3:"ꇫ";i:11255;s:3:"ꇬ";i:11256;s:3:"ꇭ";i:11257;s:3:"ꇮ";i:11258;s:3:"ꇯ";i:11259;s:3:"ꇰ";i:11260;s:3:"ꇱ";i:11261;s:3:"ꇲ";i:11262;s:3:"ꇳ";i:11263;s:3:"ꇴ";i:11264;s:3:"ꇵ";i:11265;s:3:"ꇶ";i:11266;s:3:"ꇷ";i:11267;s:3:"ꇸ";i:11268;s:3:"ꇹ";i:11269;s:3:"ꇺ";i:11270;s:3:"ꇻ";i:11271;s:3:"ꇼ";i:11272;s:3:"ꇽ";i:11273;s:3:"ꇾ";i:11274;s:3:"ꇿ";i:11275;s:3:"ꈀ";i:11276;s:3:"êˆ";i:11277;s:3:"ꈂ";i:11278;s:3:"ꈃ";i:11279;s:3:"ꈄ";i:11280;s:3:"ꈅ";i:11281;s:3:"ꈆ";i:11282;s:3:"ꈇ";i:11283;s:3:"ꈈ";i:11284;s:3:"ꈉ";i:11285;s:3:"ꈊ";i:11286;s:3:"ꈋ";i:11287;s:3:"ꈌ";i:11288;s:3:"êˆ";i:11289;s:3:"ꈎ";i:11290;s:3:"êˆ";i:11291;s:3:"êˆ";i:11292;s:3:"ꈑ";i:11293;s:3:"ꈒ";i:11294;s:3:"ꈓ";i:11295;s:3:"ꈔ";i:11296;s:3:"ꈕ";i:11297;s:3:"ꈖ";i:11298;s:3:"ꈗ";i:11299;s:3:"ꈘ";i:11300;s:3:"ꈙ";i:11301;s:3:"ꈚ";i:11302;s:3:"ꈛ";i:11303;s:3:"ꈜ";i:11304;s:3:"êˆ";i:11305;s:3:"ꈞ";i:11306;s:3:"ꈟ";i:11307;s:3:"ꈠ";i:11308;s:3:"ꈡ";i:11309;s:3:"ꈢ";i:11310;s:3:"ꈣ";i:11311;s:3:"ꈤ";i:11312;s:3:"ꈥ";i:11313;s:3:"ꈦ";i:11314;s:3:"ꈧ";i:11315;s:3:"ꈨ";i:11316;s:3:"ꈩ";i:11317;s:3:"ꈪ";i:11318;s:3:"ꈫ";i:11319;s:3:"ꈬ";i:11320;s:3:"ꈭ";i:11321;s:3:"ꈮ";i:11322;s:3:"ꈯ";i:11323;s:3:"ꈰ";i:11324;s:3:"ꈱ";i:11325;s:3:"ꈲ";i:11326;s:3:"ꈳ";i:11327;s:3:"ꈴ";i:11328;s:3:"ꈵ";i:11329;s:3:"ꈶ";i:11330;s:3:"ꈷ";i:11331;s:3:"ꈸ";i:11332;s:3:"ꈹ";i:11333;s:3:"ꈺ";i:11334;s:3:"ꈻ";i:11335;s:3:"ꈼ";i:11336;s:3:"ꈽ";i:11337;s:3:"ꈾ";i:11338;s:3:"ꈿ";i:11339;s:3:"ꉀ";i:11340;s:3:"ê‰";i:11341;s:3:"ꉂ";i:11342;s:3:"ꉃ";i:11343;s:3:"ꉄ";i:11344;s:3:"ꉅ";i:11345;s:3:"ꉆ";i:11346;s:3:"ꉇ";i:11347;s:3:"ꉈ";i:11348;s:3:"ꉉ";i:11349;s:3:"ꉊ";i:11350;s:3:"ꉋ";i:11351;s:3:"ꉌ";i:11352;s:3:"ê‰";i:11353;s:3:"ꉎ";i:11354;s:3:"ê‰";i:11355;s:3:"ê‰";i:11356;s:3:"ꉑ";i:11357;s:3:"ꉒ";i:11358;s:3:"ꉓ";i:11359;s:3:"ꉔ";i:11360;s:3:"ꉕ";i:11361;s:3:"ꉖ";i:11362;s:3:"ꉗ";i:11363;s:3:"ꉘ";i:11364;s:3:"ꉙ";i:11365;s:3:"ꉚ";i:11366;s:3:"ꉛ";i:11367;s:3:"ꉜ";i:11368;s:3:"ê‰";i:11369;s:3:"ꉞ";i:11370;s:3:"ꉟ";i:11371;s:3:"ꉠ";i:11372;s:3:"ꉡ";i:11373;s:3:"ꉢ";i:11374;s:3:"ꉣ";i:11375;s:3:"ꉤ";i:11376;s:3:"ꉥ";i:11377;s:3:"ꉦ";i:11378;s:3:"ꉧ";i:11379;s:3:"ꉨ";i:11380;s:3:"ꉩ";i:11381;s:3:"ꉪ";i:11382;s:3:"ꉫ";i:11383;s:3:"ꉬ";i:11384;s:3:"ꉭ";i:11385;s:3:"ꉮ";i:11386;s:3:"ꉯ";i:11387;s:3:"ꉰ";i:11388;s:3:"ꉱ";i:11389;s:3:"ꉲ";i:11390;s:3:"ꉳ";i:11391;s:3:"ꉴ";i:11392;s:3:"ꉵ";i:11393;s:3:"ꉶ";i:11394;s:3:"ꉷ";i:11395;s:3:"ꉸ";i:11396;s:3:"ꉹ";i:11397;s:3:"ꉺ";i:11398;s:3:"ꉻ";i:11399;s:3:"ꉼ";i:11400;s:3:"ꉽ";i:11401;s:3:"ꉾ";i:11402;s:3:"ꉿ";i:11403;s:3:"ꊀ";i:11404;s:3:"êŠ";i:11405;s:3:"ꊂ";i:11406;s:3:"ꊃ";i:11407;s:3:"ꊄ";i:11408;s:3:"ꊅ";i:11409;s:3:"ꊆ";i:11410;s:3:"ꊇ";i:11411;s:3:"ꊈ";i:11412;s:3:"ꊉ";i:11413;s:3:"ꊊ";i:11414;s:3:"ꊋ";i:11415;s:3:"ꊌ";i:11416;s:3:"êŠ";i:11417;s:3:"ꊎ";i:11418;s:3:"êŠ";i:11419;s:3:"êŠ";i:11420;s:3:"ꊑ";i:11421;s:3:"ꊒ";i:11422;s:3:"ꊓ";i:11423;s:3:"ꊔ";i:11424;s:3:"ꊕ";i:11425;s:3:"ꊖ";i:11426;s:3:"ꊗ";i:11427;s:3:"ꊘ";i:11428;s:3:"ꊙ";i:11429;s:3:"ꊚ";i:11430;s:3:"ꊛ";i:11431;s:3:"ꊜ";i:11432;s:3:"êŠ";i:11433;s:3:"ꊞ";i:11434;s:3:"ꊟ";i:11435;s:3:"ꊠ";i:11436;s:3:"ꊡ";i:11437;s:3:"ꊢ";i:11438;s:3:"ꊣ";i:11439;s:3:"ꊤ";i:11440;s:3:"ꊥ";i:11441;s:3:"ꊦ";i:11442;s:3:"ꊧ";i:11443;s:3:"ꊨ";i:11444;s:3:"ꊩ";i:11445;s:3:"ꊪ";i:11446;s:3:"ꊫ";i:11447;s:3:"ꊬ";i:11448;s:3:"ꊭ";i:11449;s:3:"ꊮ";i:11450;s:3:"ꊯ";i:11451;s:3:"ꊰ";i:11452;s:3:"ꊱ";i:11453;s:3:"ꊲ";i:11454;s:3:"ꊳ";i:11455;s:3:"ꊴ";i:11456;s:3:"ꊵ";i:11457;s:3:"ꊶ";i:11458;s:3:"ꊷ";i:11459;s:3:"ꊸ";i:11460;s:3:"ꊹ";i:11461;s:3:"ꊺ";i:11462;s:3:"ꊻ";i:11463;s:3:"ꊼ";i:11464;s:3:"ꊽ";i:11465;s:3:"ꊾ";i:11466;s:3:"ꊿ";i:11467;s:3:"ê‹€";i:11468;s:3:"ê‹";i:11469;s:3:"ê‹‚";i:11470;s:3:"ꋃ";i:11471;s:3:"ê‹„";i:11472;s:3:"ê‹…";i:11473;s:3:"ꋆ";i:11474;s:3:"ꋇ";i:11475;s:3:"ꋈ";i:11476;s:3:"ꋉ";i:11477;s:3:"ê‹Š";i:11478;s:3:"ê‹‹";i:11479;s:3:"ê‹Œ";i:11480;s:3:"ê‹";i:11481;s:3:"ê‹Ž";i:11482;s:3:"ê‹";i:11483;s:3:"ê‹";i:11484;s:3:"ê‹‘";i:11485;s:3:"ê‹’";i:11486;s:3:"ê‹“";i:11487;s:3:"ê‹”";i:11488;s:3:"ê‹•";i:11489;s:3:"ê‹–";i:11490;s:3:"ê‹—";i:11491;s:3:"ꋘ";i:11492;s:3:"ê‹™";i:11493;s:3:"ê‹š";i:11494;s:3:"ê‹›";i:11495;s:3:"ê‹œ";i:11496;s:3:"ê‹";i:11497;s:3:"ê‹ž";i:11498;s:3:"ê‹Ÿ";i:11499;s:3:"ê‹ ";i:11500;s:3:"ê‹¡";i:11501;s:3:"ê‹¢";i:11502;s:3:"ê‹£";i:11503;s:3:"ꋤ";i:11504;s:3:"ê‹¥";i:11505;s:3:"ꋦ";i:11506;s:3:"ꋧ";i:11507;s:3:"ꋨ";i:11508;s:3:"ê‹©";i:11509;s:3:"ꋪ";i:11510;s:3:"ê‹«";i:11511;s:3:"ꋬ";i:11512;s:3:"ê‹­";i:11513;s:3:"ê‹®";i:11514;s:3:"ꋯ";i:11515;s:3:"ê‹°";i:11516;s:3:"ꋱ";i:11517;s:3:"ꋲ";i:11518;s:3:"ꋳ";i:11519;s:3:"ê‹´";i:11520;s:3:"ꋵ";i:11521;s:3:"ꋶ";i:11522;s:3:"ê‹·";i:11523;s:3:"ꋸ";i:11524;s:3:"ꋹ";i:11525;s:3:"ꋺ";i:11526;s:3:"ê‹»";i:11527;s:3:"ꋼ";i:11528;s:3:"ꋽ";i:11529;s:3:"ꋾ";i:11530;s:3:"ê‹¿";i:11531;s:3:"ꌀ";i:11532;s:3:"êŒ";i:11533;s:3:"ꌂ";i:11534;s:3:"ꌃ";i:11535;s:3:"ꌄ";i:11536;s:3:"ꌅ";i:11537;s:3:"ꌆ";i:11538;s:3:"ꌇ";i:11539;s:3:"ꌈ";i:11540;s:3:"ꌉ";i:11541;s:3:"ꌊ";i:11542;s:3:"ꌋ";i:11543;s:3:"ꌌ";i:11544;s:3:"êŒ";i:11545;s:3:"ꌎ";i:11546;s:3:"êŒ";i:11547;s:3:"êŒ";i:11548;s:3:"ꌑ";i:11549;s:3:"ꌒ";i:11550;s:3:"ꌓ";i:11551;s:3:"ꌔ";i:11552;s:3:"ꌕ";i:11553;s:3:"ꌖ";i:11554;s:3:"ꌗ";i:11555;s:3:"ꌘ";i:11556;s:3:"ꌙ";i:11557;s:3:"ꌚ";i:11558;s:3:"ꌛ";i:11559;s:3:"ꌜ";i:11560;s:3:"êŒ";i:11561;s:3:"ꌞ";i:11562;s:3:"ꌟ";i:11563;s:3:"ꌠ";i:11564;s:3:"ꌡ";i:11565;s:3:"ꌢ";i:11566;s:3:"ꌣ";i:11567;s:3:"ꌤ";i:11568;s:3:"ꌥ";i:11569;s:3:"ꌦ";i:11570;s:3:"ꌧ";i:11571;s:3:"ꌨ";i:11572;s:3:"ꌩ";i:11573;s:3:"ꌪ";i:11574;s:3:"ꌫ";i:11575;s:3:"ꌬ";i:11576;s:3:"ꌭ";i:11577;s:3:"ꌮ";i:11578;s:3:"ꌯ";i:11579;s:3:"ꌰ";i:11580;s:3:"ꌱ";i:11581;s:3:"ꌲ";i:11582;s:3:"ꌳ";i:11583;s:3:"ꌴ";i:11584;s:3:"ꌵ";i:11585;s:3:"ꌶ";i:11586;s:3:"ꌷ";i:11587;s:3:"ꌸ";i:11588;s:3:"ꌹ";i:11589;s:3:"ꌺ";i:11590;s:3:"ꌻ";i:11591;s:3:"ꌼ";i:11592;s:3:"ꌽ";i:11593;s:3:"ꌾ";i:11594;s:3:"ꌿ";i:11595;s:3:"ê€";i:11596;s:3:"ê";i:11597;s:3:"ê‚";i:11598;s:3:"êƒ";i:11599;s:3:"ê„";i:11600;s:3:"ê…";i:11601;s:3:"ê†";i:11602;s:3:"ê‡";i:11603;s:3:"êˆ";i:11604;s:3:"ê‰";i:11605;s:3:"êŠ";i:11606;s:3:"ê‹";i:11607;s:3:"êŒ";i:11608;s:3:"ê";i:11609;s:3:"êŽ";i:11610;s:3:"ê";i:11611;s:3:"ê";i:11612;s:3:"ê‘";i:11613;s:3:"ê’";i:11614;s:3:"ê“";i:11615;s:3:"ê”";i:11616;s:3:"ê•";i:11617;s:3:"ê–";i:11618;s:3:"ê—";i:11619;s:3:"ê˜";i:11620;s:3:"ê™";i:11621;s:3:"êš";i:11622;s:3:"ê›";i:11623;s:3:"êœ";i:11624;s:3:"ê";i:11625;s:3:"êž";i:11626;s:3:"êŸ";i:11627;s:3:"ê ";i:11628;s:3:"ê¡";i:11629;s:3:"ê¢";i:11630;s:3:"ê£";i:11631;s:3:"ê¤";i:11632;s:3:"ê¥";i:11633;s:3:"ê¦";i:11634;s:3:"ê§";i:11635;s:3:"ê¨";i:11636;s:3:"ê©";i:11637;s:3:"êª";i:11638;s:3:"ê«";i:11639;s:3:"ê¬";i:11640;s:3:"ê­";i:11641;s:3:"ê®";i:11642;s:3:"ê¯";i:11643;s:3:"ê°";i:11644;s:3:"ê±";i:11645;s:3:"ê²";i:11646;s:3:"ê³";i:11647;s:3:"ê´";i:11648;s:3:"êµ";i:11649;s:3:"ê¶";i:11650;s:3:"ê·";i:11651;s:3:"ê¸";i:11652;s:3:"ê¹";i:11653;s:3:"êº";i:11654;s:3:"ê»";i:11655;s:3:"ê¼";i:11656;s:3:"ê½";i:11657;s:3:"ê¾";i:11658;s:3:"ê¿";i:11659;s:3:"ꎀ";i:11660;s:3:"êŽ";i:11661;s:3:"ꎂ";i:11662;s:3:"ꎃ";i:11663;s:3:"ꎄ";i:11664;s:3:"ꎅ";i:11665;s:3:"ꎆ";i:11666;s:3:"ꎇ";i:11667;s:3:"ꎈ";i:11668;s:3:"ꎉ";i:11669;s:3:"ꎊ";i:11670;s:3:"ꎋ";i:11671;s:3:"ꎌ";i:11672;s:3:"êŽ";i:11673;s:3:"ꎎ";i:11674;s:3:"êŽ";i:11675;s:3:"êŽ";i:11676;s:3:"ꎑ";i:11677;s:3:"ꎒ";i:11678;s:3:"ꎓ";i:11679;s:3:"ꎔ";i:11680;s:3:"ꎕ";i:11681;s:3:"ꎖ";i:11682;s:3:"ꎗ";i:11683;s:3:"ꎘ";i:11684;s:3:"ꎙ";i:11685;s:3:"ꎚ";i:11686;s:3:"ꎛ";i:11687;s:3:"ꎜ";i:11688;s:3:"êŽ";i:11689;s:3:"ꎞ";i:11690;s:3:"ꎟ";i:11691;s:3:"ꎠ";i:11692;s:3:"ꎡ";i:11693;s:3:"ꎢ";i:11694;s:3:"ꎣ";i:11695;s:3:"ꎤ";i:11696;s:3:"ꎥ";i:11697;s:3:"ꎦ";i:11698;s:3:"ꎧ";i:11699;s:3:"ꎨ";i:11700;s:3:"ꎩ";i:11701;s:3:"ꎪ";i:11702;s:3:"ꎫ";i:11703;s:3:"ꎬ";i:11704;s:3:"ꎭ";i:11705;s:3:"ꎮ";i:11706;s:3:"ꎯ";i:11707;s:3:"ꎰ";i:11708;s:3:"ꎱ";i:11709;s:3:"ꎲ";i:11710;s:3:"ꎳ";i:11711;s:3:"ꎴ";i:11712;s:3:"ꎵ";i:11713;s:3:"ꎶ";i:11714;s:3:"ꎷ";i:11715;s:3:"ꎸ";i:11716;s:3:"ꎹ";i:11717;s:3:"ꎺ";i:11718;s:3:"ꎻ";i:11719;s:3:"ꎼ";i:11720;s:3:"ꎽ";i:11721;s:3:"ꎾ";i:11722;s:3:"ꎿ";i:11723;s:3:"ê€";i:11724;s:3:"ê";i:11725;s:3:"ê‚";i:11726;s:3:"êƒ";i:11727;s:3:"ê„";i:11728;s:3:"ê…";i:11729;s:3:"ê†";i:11730;s:3:"ê‡";i:11731;s:3:"êˆ";i:11732;s:3:"ê‰";i:11733;s:3:"êŠ";i:11734;s:3:"ê‹";i:11735;s:3:"êŒ";i:11736;s:3:"ê";i:11737;s:3:"êŽ";i:11738;s:3:"ê";i:11739;s:3:"ê";i:11740;s:3:"ê‘";i:11741;s:3:"ê’";i:11742;s:3:"ê“";i:11743;s:3:"ê”";i:11744;s:3:"ê•";i:11745;s:3:"ê–";i:11746;s:3:"ê—";i:11747;s:3:"ê˜";i:11748;s:3:"ê™";i:11749;s:3:"êš";i:11750;s:3:"ê›";i:11751;s:3:"êœ";i:11752;s:3:"ê";i:11753;s:3:"êž";i:11754;s:3:"êŸ";i:11755;s:3:"ê ";i:11756;s:3:"ê¡";i:11757;s:3:"ê¢";i:11758;s:3:"ê£";i:11759;s:3:"ê¤";i:11760;s:3:"ê¥";i:11761;s:3:"ê¦";i:11762;s:3:"ê§";i:11763;s:3:"ê¨";i:11764;s:3:"ê©";i:11765;s:3:"êª";i:11766;s:3:"ê«";i:11767;s:3:"ê¬";i:11768;s:3:"ê­";i:11769;s:3:"ê®";i:11770;s:3:"ê¯";i:11771;s:3:"ê°";i:11772;s:3:"ê±";i:11773;s:3:"ê²";i:11774;s:3:"ê³";i:11775;s:3:"ê´";i:11776;s:3:"êµ";i:11777;s:3:"ê¶";i:11778;s:3:"ê·";i:11779;s:3:"ê¸";i:11780;s:3:"ê¹";i:11781;s:3:"êº";i:11782;s:3:"ê»";i:11783;s:3:"ê¼";i:11784;s:3:"ê½";i:11785;s:3:"ê¾";i:11786;s:3:"ê¿";i:11787;s:3:"ê€";i:11788;s:3:"ê";i:11789;s:3:"ê‚";i:11790;s:3:"êƒ";i:11791;s:3:"ê„";i:11792;s:3:"ê…";i:11793;s:3:"ê†";i:11794;s:3:"ê‡";i:11795;s:3:"êˆ";i:11796;s:3:"ê‰";i:11797;s:3:"êŠ";i:11798;s:3:"ê‹";i:11799;s:3:"êŒ";i:11800;s:3:"ê";i:11801;s:3:"êŽ";i:11802;s:3:"ê";i:11803;s:3:"ê";i:11804;s:3:"ê‘";i:11805;s:3:"ê’";i:11806;s:3:"ê“";i:11807;s:3:"ê”";i:11808;s:3:"ê•";i:11809;s:3:"ê–";i:11810;s:3:"ê—";i:11811;s:3:"ê˜";i:11812;s:3:"ê™";i:11813;s:3:"êš";i:11814;s:3:"ê›";i:11815;s:3:"êœ";i:11816;s:3:"ê";i:11817;s:3:"êž";i:11818;s:3:"êŸ";i:11819;s:3:"ê ";i:11820;s:3:"ê¡";i:11821;s:3:"ê¢";i:11822;s:3:"ê£";i:11823;s:3:"ê¤";i:11824;s:3:"ê¥";i:11825;s:3:"ê¦";i:11826;s:3:"ê§";i:11827;s:3:"ê¨";i:11828;s:3:"ê©";i:11829;s:3:"êª";i:11830;s:3:"ê«";i:11831;s:3:"ê¬";i:11832;s:3:"ê­";i:11833;s:3:"ê®";i:11834;s:3:"ê¯";i:11835;s:3:"ê°";i:11836;s:3:"ê±";i:11837;s:3:"ê²";i:11838;s:3:"ê³";i:11839;s:3:"ê´";i:11840;s:3:"êµ";i:11841;s:3:"ê¶";i:11842;s:3:"ê·";i:11843;s:3:"ê¸";i:11844;s:3:"ê¹";i:11845;s:3:"êº";i:11846;s:3:"ê»";i:11847;s:3:"ê¼";i:11848;s:3:"ê½";i:11849;s:3:"ê¾";i:11850;s:3:"ê¿";i:11851;s:3:"ê‘€";i:11852;s:3:"ê‘";i:11853;s:3:"ê‘‚";i:11854;s:3:"ꑃ";i:11855;s:3:"ê‘„";i:11856;s:3:"ê‘…";i:11857;s:3:"ꑆ";i:11858;s:3:"ꑇ";i:11859;s:3:"ꑈ";i:11860;s:3:"ꑉ";i:11861;s:3:"ê‘Š";i:11862;s:3:"ê‘‹";i:11863;s:3:"ê‘Œ";i:11864;s:3:"ê‘";i:11865;s:3:"ê‘Ž";i:11866;s:3:"ê‘";i:11867;s:3:"ê‘";i:11868;s:3:"ê‘‘";i:11869;s:3:"ê‘’";i:11870;s:3:"ê‘“";i:11871;s:3:"ê‘”";i:11872;s:3:"ê‘•";i:11873;s:3:"ê‘–";i:11874;s:3:"ê‘—";i:11875;s:3:"ꑘ";i:11876;s:3:"ê‘™";i:11877;s:3:"ê‘š";i:11878;s:3:"ê‘›";i:11879;s:3:"ê‘œ";i:11880;s:3:"ê‘";i:11881;s:3:"ê‘ž";i:11882;s:3:"ê‘Ÿ";i:11883;s:3:"ê‘ ";i:11884;s:3:"ê‘¡";i:11885;s:3:"ê‘¢";i:11886;s:3:"ê‘£";i:11887;s:3:"ꑤ";i:11888;s:3:"ê‘¥";i:11889;s:3:"ꑦ";i:11890;s:3:"ꑧ";i:11891;s:3:"ꑨ";i:11892;s:3:"ê‘©";i:11893;s:3:"ꑪ";i:11894;s:3:"ê‘«";i:11895;s:3:"ꑬ";i:11896;s:3:"ê‘­";i:11897;s:3:"ê‘®";i:11898;s:3:"ꑯ";i:11899;s:3:"ê‘°";i:11900;s:3:"ꑱ";i:11901;s:3:"ꑲ";i:11902;s:3:"ꑳ";i:11903;s:3:"ê‘´";i:11904;s:3:"ꑵ";i:11905;s:3:"ꑶ";i:11906;s:3:"ê‘·";i:11907;s:3:"ꑸ";i:11908;s:3:"ꑹ";i:11909;s:3:"ꑺ";i:11910;s:3:"ê‘»";i:11911;s:3:"ꑼ";i:11912;s:3:"ꑽ";i:11913;s:3:"ꑾ";i:11914;s:3:"ê‘¿";i:11915;s:3:"ê’€";i:11916;s:3:"ê’";i:11917;s:3:"ê’‚";i:11918;s:3:"ê’ƒ";i:11919;s:3:"ê’„";i:11920;s:3:"ê’…";i:11921;s:3:"ê’†";i:11922;s:3:"ê’‡";i:11923;s:3:"ê’ˆ";i:11924;s:3:"ê’‰";i:11925;s:3:"ê’Š";i:11926;s:3:"ê’‹";i:11927;s:3:"ê’Œ";i:11928;s:3:"ꓸ";i:11929;s:3:"ꓹ";i:11930;s:3:"ꓺ";i:11931;s:3:"ê“»";i:11932;s:3:"ꓽ";i:11933;s:3:"ꓼ";i:11934;s:3:"ê“";i:11935;s:3:"ê“‘";i:11936;s:3:"ê“’";i:11937;s:3:"ê““";i:11938;s:3:"ê“”";i:11939;s:3:"ê“•";i:11940;s:3:"ê“–";i:11941;s:3:"ê“—";i:11942;s:3:"ꓘ";i:11943;s:3:"ê“™";i:11944;s:3:"ê“š";i:11945;s:3:"ê“›";i:11946;s:3:"ê“œ";i:11947;s:3:"ê“";i:11948;s:3:"ê“ž";i:11949;s:3:"ê“Ÿ";i:11950;s:3:"ê“ ";i:11951;s:3:"ê“¡";i:11952;s:3:"ê“¢";i:11953;s:3:"ê“£";i:11954;s:3:"ꓤ";i:11955;s:3:"ê“¥";i:11956;s:3:"ꓦ";i:11957;s:3:"ꓧ";i:11958;s:3:"ꓨ";i:11959;s:3:"ê“©";i:11960;s:3:"ê“«";i:11961;s:3:"ê“­";i:11962;s:3:"ꓪ";i:11963;s:3:"ꓬ";i:11964;s:3:"ê“®";i:11965;s:3:"ꓯ";i:11966;s:3:"ê“°";i:11967;s:3:"ꓱ";i:11968;s:3:"ꓲ";i:11969;s:3:"ꓳ";i:11970;s:3:"ê“´";i:11971;s:3:"ꓵ";i:11972;s:3:"ꓶ";i:11973;s:3:"ê“·";i:11974;s:4:"ðŠ€";i:11975;s:4:"ðŠ";i:11976;s:4:"ðŠ‚";i:11977;s:4:"ðŠƒ";i:11978;s:4:"ðŠ„";i:11979;s:4:"ðŠ…";i:11980;s:4:"ðŠ†";i:11981;s:4:"ðŠ‡";i:11982;s:4:"ðŠˆ";i:11983;s:4:"ðŠ‰";i:11984;s:4:"ðŠŠ";i:11985;s:4:"ðŠ‹";i:11986;s:4:"ðŠŒ";i:11987;s:4:"ðŠ";i:11988;s:4:"ðŠŽ";i:11989;s:4:"ðŠ";i:11990;s:4:"ðŠ";i:11991;s:4:"ðŠ‘";i:11992;s:4:"ðŠ’";i:11993;s:4:"ðŠ“";i:11994;s:4:"ðŠ”";i:11995;s:4:"ðŠ•";i:11996;s:4:"ðŠ–";i:11997;s:4:"ðŠ—";i:11998;s:4:"ðŠ˜";i:11999;s:4:"ðŠ™";i:12000;s:4:"ðŠš";i:12001;s:4:"ðŠ›";i:12002;s:4:"ðŠœ";i:12003;s:4:"ðŠ ";i:12004;s:4:"ðŠ¡";i:12005;s:4:"ðŠ¢";i:12006;s:4:"ðŠ£";i:12007;s:4:"ðŠ¤";i:12008;s:4:"ðŠ¥";i:12009;s:4:"ðŠ¦";i:12010;s:4:"ðŠ§";i:12011;s:4:"ðŠ¨";i:12012;s:4:"ðŠ©";i:12013;s:4:"ðŠª";i:12014;s:4:"ðŠ«";i:12015;s:4:"ðŠ¬";i:12016;s:4:"ðŠ­";i:12017;s:4:"ðŠ®";i:12018;s:4:"ðŠ¯";i:12019;s:4:"ðŠ°";i:12020;s:4:"ðŠ±";i:12021;s:4:"ðŠ²";i:12022;s:4:"ðŠ³";i:12023;s:4:"ðŠ´";i:12024;s:4:"ðŠµ";i:12025;s:4:"ðŠ¶";i:12026;s:4:"ðŠ·";i:12027;s:4:"ðŠ¸";i:12028;s:4:"ðŠ¹";i:12029;s:4:"ðŠº";i:12030;s:4:"ðŠ»";i:12031;s:4:"ðŠ¼";i:12032;s:4:"ðŠ½";i:12033;s:4:"ðŠ¾";i:12034;s:4:"ðŠ¿";i:12035;s:4:"ð‹€";i:12036;s:4:"ð‹";i:12037;s:4:"ð‹‚";i:12038;s:4:"ð‹ƒ";i:12039;s:4:"ð‹„";i:12040;s:4:"ð‹…";i:12041;s:4:"ð‹†";i:12042;s:4:"ð‹‡";i:12043;s:4:"ð‹ˆ";i:12044;s:4:"ð‹‰";i:12045;s:4:"ð‹Š";i:12046;s:4:"ð‹‹";i:12047;s:4:"ð‹Œ";i:12048;s:4:"ð‹";i:12049;s:4:"ð‹Ž";i:12050;s:4:"ð‹";i:12051;s:4:"ð‹";i:12052;s:4:"ð¤ ";i:12053;s:4:"ð¤¡";i:12054;s:4:"ð¤¢";i:12055;s:4:"ð¤£";i:12056;s:4:"ð¤¤";i:12057;s:4:"ð¤¥";i:12058;s:4:"ð¤¦";i:12059;s:4:"ð¤§";i:12060;s:4:"ð¤¨";i:12061;s:4:"ð¤©";i:12062;s:4:"ð¤ª";i:12063;s:4:"ð¤«";i:12064;s:4:"ð¤¬";i:12065;s:4:"ð¤­";i:12066;s:4:"ð¤®";i:12067;s:4:"ð¤¯";i:12068;s:4:"ð¤°";i:12069;s:4:"ð¤±";i:12070;s:4:"ð¤²";i:12071;s:4:"ð¤³";i:12072;s:4:"ð¤´";i:12073;s:4:"ð¤µ";i:12074;s:4:"ð¤¶";i:12075;s:4:"ð¤·";i:12076;s:4:"ð¤¸";i:12077;s:4:"ð¤¹";i:12078;s:4:"ðŒ€";i:12079;s:4:"ðŒ";i:12080;s:4:"ðŒ‚";i:12081;s:4:"ðŒƒ";i:12082;s:4:"ðŒ„";i:12083;s:4:"ðŒ…";i:12084;s:4:"ðŒ†";i:12085;s:4:"ðŒ‡";i:12086;s:4:"ðŒˆ";i:12087;s:4:"ðŒ‰";i:12088;s:4:"ðŒŠ";i:12089;s:4:"ðŒ‹";i:12090;s:4:"ðŒŒ";i:12091;s:4:"ðŒ";i:12092;s:4:"ðŒŽ";i:12093;s:4:"ðŒ";i:12094;s:4:"ðŒ";i:12095;s:4:"ðŒ‘";i:12096;s:4:"ðŒ’";i:12097;s:4:"ðŒ“";i:12098;s:4:"ðŒ”";i:12099;s:4:"ðŒ•";i:12100;s:4:"ðŒ–";i:12101;s:4:"ðŒ—";i:12102;s:4:"ðŒ˜";i:12103;s:4:"ðŒ™";i:12104;s:4:"ðŒš";i:12105;s:4:"ðŒ›";i:12106;s:4:"ðŒœ";i:12107;s:4:"ðŒ";i:12108;s:4:"ðŒž";i:12109;s:4:"ðŒ°";i:12110;s:4:"ðŒ±";i:12111;s:4:"ðŒ²";i:12112;s:4:"ðŒ³";i:12113;s:4:"ðŒ´";i:12114;s:4:"ðŒµ";i:12115;s:4:"ðŒ¶";i:12116;s:4:"ðŒ·";i:12117;s:4:"ðŒ¸";i:12118;s:4:"ðŒ¹";i:12119;s:4:"ðŒº";i:12120;s:4:"ðŒ»";i:12121;s:4:"ðŒ¼";i:12122;s:4:"ðŒ½";i:12123;s:4:"ðŒ¾";i:12124;s:4:"ðŒ¿";i:12125;s:4:"ð€";i:12126;s:4:"ð";i:12127;s:4:"ð‚";i:12128;s:4:"ðƒ";i:12129;s:4:"ð„";i:12130;s:4:"ð…";i:12131;s:4:"ð†";i:12132;s:4:"ð‡";i:12133;s:4:"ðˆ";i:12134;s:4:"ð‰";i:12135;s:4:"ðŠ";i:12136;s:4:"ð€";i:12137;s:4:"ð";i:12138;s:4:"ð‚";i:12139;s:4:"ðƒ";i:12140;s:4:"ð„";i:12141;s:4:"ð…";i:12142;s:4:"ð†";i:12143;s:4:"ð‡";i:12144;s:4:"ðˆ";i:12145;s:4:"ð‰";i:12146;s:4:"ðŠ";i:12147;s:4:"ð‹";i:12148;s:4:"ðŒ";i:12149;s:4:"ð";i:12150;s:4:"ðŽ";i:12151;s:4:"ð";i:12152;s:4:"ð";i:12153;s:4:"ð‘";i:12154;s:4:"ð’";i:12155;s:4:"ð“";i:12156;s:4:"ð”";i:12157;s:4:"ð•";i:12158;s:4:"ð–";i:12159;s:4:"ð—";i:12160;s:4:"ð˜";i:12161;s:4:"ð™";i:12162;s:4:"ðš";i:12163;s:4:"ð›";i:12164;s:4:"ðœ";i:12165;s:4:"ð";i:12166;s:4:"ðž";i:12167;s:4:"ðŸ";i:12168;s:4:"ð ";i:12169;s:4:"ð¡";i:12170;s:4:"ð¢";i:12171;s:4:"ð£";i:12172;s:4:"ð¤";i:12173;s:4:"ð¥";i:12174;s:4:"ð¦";i:12175;s:4:"ð§";i:12176;s:4:"ð‘";i:12177;s:4:"ð‘‘";i:12178;s:4:"ð‘’";i:12179;s:4:"ð‘“";i:12180;s:4:"ð‘”";i:12181;s:4:"ð‘•";i:12182;s:4:"ð‘–";i:12183;s:4:"ð‘—";i:12184;s:4:"ð‘˜";i:12185;s:4:"ð‘™";i:12186;s:4:"ð‘š";i:12187;s:4:"ð‘›";i:12188;s:4:"ð‘œ";i:12189;s:4:"ð‘";i:12190;s:4:"ð‘ž";i:12191;s:4:"ð‘Ÿ";i:12192;s:4:"ð‘ ";i:12193;s:4:"ð‘¡";i:12194;s:4:"ð‘¢";i:12195;s:4:"ð‘£";i:12196;s:4:"ð‘¤";i:12197;s:4:"ð‘¥";i:12198;s:4:"ð‘¦";i:12199;s:4:"ð‘§";i:12200;s:4:"ð‘¨";i:12201;s:4:"ð‘©";i:12202;s:4:"ð‘ª";i:12203;s:4:"ð‘«";i:12204;s:4:"ð‘¬";i:12205;s:4:"ð‘­";i:12206;s:4:"ð‘®";i:12207;s:4:"ð‘¯";i:12208;s:4:"ð‘°";i:12209;s:4:"ð‘±";i:12210;s:4:"ð‘²";i:12211;s:4:"ð‘³";i:12212;s:4:"ð‘´";i:12213;s:4:"ð‘µ";i:12214;s:4:"ð‘¶";i:12215;s:4:"ð‘·";i:12216;s:4:"ð‘¸";i:12217;s:4:"ð‘¹";i:12218;s:4:"ð‘º";i:12219;s:4:"ð‘»";i:12220;s:4:"ð‘¼";i:12221;s:4:"ð‘½";i:12222;s:4:"ð‘¾";i:12223;s:4:"ð‘¿";i:12224;s:4:"ð’€";i:12225;s:4:"ð’";i:12226;s:4:"ð’‚";i:12227;s:4:"ð’ƒ";i:12228;s:4:"ð’„";i:12229;s:4:"ð’…";i:12230;s:4:"ð’†";i:12231;s:4:"ð’‡";i:12232;s:4:"ð’ˆ";i:12233;s:4:"ð’‰";i:12234;s:4:"ð’Š";i:12235;s:4:"ð’‹";i:12236;s:4:"ð’Œ";i:12237;s:4:"ð’";i:12238;s:4:"ð’Ž";i:12239;s:4:"ð’";i:12240;s:4:"ð’";i:12241;s:4:"ð’‘";i:12242;s:4:"ð’’";i:12243;s:4:"ð’“";i:12244;s:4:"ð’”";i:12245;s:4:"ð’•";i:12246;s:4:"ð’–";i:12247;s:4:"ð’—";i:12248;s:4:"ð’˜";i:12249;s:4:"ð’™";i:12250;s:4:"ð’š";i:12251;s:4:"ð’›";i:12252;s:4:"ð’œ";i:12253;s:4:"ð’";i:12254;s:4:"ð€€";i:12255;s:4:"ð€";i:12256;s:4:"ð€‚";i:12257;s:4:"ð€ƒ";i:12258;s:4:"ð€„";i:12259;s:4:"ð€…";i:12260;s:4:"ð€†";i:12261;s:4:"ð€‡";i:12262;s:4:"ð€ˆ";i:12263;s:4:"ð€‰";i:12264;s:4:"ð€Š";i:12265;s:4:"ð€‹";i:12266;s:4:"ð€";i:12267;s:4:"ð€Ž";i:12268;s:4:"ð€";i:12269;s:4:"ð€";i:12270;s:4:"ð€‘";i:12271;s:4:"ð€’";i:12272;s:4:"ð€“";i:12273;s:4:"ð€”";i:12274;s:4:"ð€•";i:12275;s:4:"ð€–";i:12276;s:4:"ð€—";i:12277;s:4:"ð€˜";i:12278;s:4:"ð€™";i:12279;s:4:"ð€š";i:12280;s:4:"ð€›";i:12281;s:4:"ð€œ";i:12282;s:4:"ð€";i:12283;s:4:"ð€ž";i:12284;s:4:"ð€Ÿ";i:12285;s:4:"ð€ ";i:12286;s:4:"ð€¡";i:12287;s:4:"ð€¢";i:12288;s:4:"ð€£";i:12289;s:4:"ð€¤";i:12290;s:4:"ð€¥";i:12291;s:4:"ð€¦";i:12292;s:4:"ð€¨";i:12293;s:4:"ð€©";i:12294;s:4:"ð€ª";i:12295;s:4:"ð€«";i:12296;s:4:"ð€¬";i:12297;s:4:"ð€­";i:12298;s:4:"ð€®";i:12299;s:4:"ð€¯";i:12300;s:4:"ð€°";i:12301;s:4:"ð€±";i:12302;s:4:"ð€²";i:12303;s:4:"ð€³";i:12304;s:4:"ð€´";i:12305;s:4:"ð€µ";i:12306;s:4:"ð€¶";i:12307;s:4:"ð€·";i:12308;s:4:"ð€¸";i:12309;s:4:"ð€¹";i:12310;s:4:"ð€º";i:12311;s:4:"ð€¼";i:12312;s:4:"ð€½";i:12313;s:4:"ð€¿";i:12314;s:4:"ð€";i:12315;s:4:"ð";i:12316;s:4:"ð‚";i:12317;s:4:"ðƒ";i:12318;s:4:"ð„";i:12319;s:4:"ð…";i:12320;s:4:"ð†";i:12321;s:4:"ð‡";i:12322;s:4:"ðˆ";i:12323;s:4:"ð‰";i:12324;s:4:"ðŠ";i:12325;s:4:"ð‹";i:12326;s:4:"ðŒ";i:12327;s:4:"ð";i:12328;s:4:"ð";i:12329;s:4:"ð‘";i:12330;s:4:"ð’";i:12331;s:4:"ð“";i:12332;s:4:"ð”";i:12333;s:4:"ð•";i:12334;s:4:"ð–";i:12335;s:4:"ð—";i:12336;s:4:"ð˜";i:12337;s:4:"ð™";i:12338;s:4:"ðš";i:12339;s:4:"ð›";i:12340;s:4:"ðœ";i:12341;s:4:"ð";i:12342;s:4:"ð‚€";i:12343;s:4:"ð‚";i:12344;s:4:"ð‚‚";i:12345;s:4:"ð‚ƒ";i:12346;s:4:"ð‚„";i:12347;s:4:"ð‚…";i:12348;s:4:"ð‚†";i:12349;s:4:"ð‚‡";i:12350;s:4:"ð‚ˆ";i:12351;s:4:"ð‚‰";i:12352;s:4:"ð‚Š";i:12353;s:4:"ð‚‹";i:12354;s:4:"ð‚Œ";i:12355;s:4:"ð‚";i:12356;s:4:"ð‚Ž";i:12357;s:4:"ð‚";i:12358;s:4:"ð‚";i:12359;s:4:"ð‚‘";i:12360;s:4:"ð‚’";i:12361;s:4:"ð‚“";i:12362;s:4:"ð‚”";i:12363;s:4:"ð‚•";i:12364;s:4:"ð‚–";i:12365;s:4:"ð‚—";i:12366;s:4:"ð‚˜";i:12367;s:4:"ð‚™";i:12368;s:4:"ð‚š";i:12369;s:4:"ð‚›";i:12370;s:4:"ð‚œ";i:12371;s:4:"ð‚";i:12372;s:4:"ð‚ž";i:12373;s:4:"ð‚Ÿ";i:12374;s:4:"ð‚ ";i:12375;s:4:"ð‚¡";i:12376;s:4:"ð‚¢";i:12377;s:4:"ð‚£";i:12378;s:4:"ð‚¤";i:12379;s:4:"ð‚¥";i:12380;s:4:"ð‚¦";i:12381;s:4:"ð‚§";i:12382;s:4:"ð‚¨";i:12383;s:4:"ð‚©";i:12384;s:4:"ð‚ª";i:12385;s:4:"ð‚«";i:12386;s:4:"ð‚¬";i:12387;s:4:"ð‚­";i:12388;s:4:"ð‚®";i:12389;s:4:"ð‚¯";i:12390;s:4:"ð‚°";i:12391;s:4:"ð‚±";i:12392;s:4:"ð‚²";i:12393;s:4:"ð‚³";i:12394;s:4:"ð‚´";i:12395;s:4:"ð‚µ";i:12396;s:4:"ð‚¶";i:12397;s:4:"ð‚·";i:12398;s:4:"ð‚¸";i:12399;s:4:"ð‚¹";i:12400;s:4:"ð‚º";i:12401;s:4:"ð‚»";i:12402;s:4:"ð‚¼";i:12403;s:4:"ð‚½";i:12404;s:4:"ð‚¾";i:12405;s:4:"ð‚¿";i:12406;s:4:"ðƒ€";i:12407;s:4:"ðƒ";i:12408;s:4:"ðƒ‚";i:12409;s:4:"ðƒƒ";i:12410;s:4:"ðƒ„";i:12411;s:4:"ðƒ…";i:12412;s:4:"ðƒ†";i:12413;s:4:"ðƒ‡";i:12414;s:4:"ðƒˆ";i:12415;s:4:"ðƒ‰";i:12416;s:4:"ðƒŠ";i:12417;s:4:"ðƒ‹";i:12418;s:4:"ðƒŒ";i:12419;s:4:"ðƒ";i:12420;s:4:"ðƒŽ";i:12421;s:4:"ðƒ";i:12422;s:4:"ðƒ";i:12423;s:4:"ðƒ‘";i:12424;s:4:"ðƒ’";i:12425;s:4:"ðƒ“";i:12426;s:4:"ðƒ”";i:12427;s:4:"ðƒ•";i:12428;s:4:"ðƒ–";i:12429;s:4:"ðƒ—";i:12430;s:4:"ðƒ˜";i:12431;s:4:"ðƒ™";i:12432;s:4:"ðƒš";i:12433;s:4:"ðƒ›";i:12434;s:4:"ðƒœ";i:12435;s:4:"ðƒ";i:12436;s:4:"ðƒž";i:12437;s:4:"ðƒŸ";i:12438;s:4:"ðƒ ";i:12439;s:4:"ðƒ¡";i:12440;s:4:"ðƒ¢";i:12441;s:4:"ðƒ£";i:12442;s:4:"ðƒ¤";i:12443;s:4:"ðƒ¥";i:12444;s:4:"ðƒ¦";i:12445;s:4:"ðƒ§";i:12446;s:4:"ðƒ¨";i:12447;s:4:"ðƒ©";i:12448;s:4:"ðƒª";i:12449;s:4:"ðƒ«";i:12450;s:4:"ðƒ¬";i:12451;s:4:"ðƒ­";i:12452;s:4:"ðƒ®";i:12453;s:4:"ðƒ¯";i:12454;s:4:"ðƒ°";i:12455;s:4:"ðƒ±";i:12456;s:4:"ðƒ²";i:12457;s:4:"ðƒ³";i:12458;s:4:"ðƒ´";i:12459;s:4:"ðƒµ";i:12460;s:4:"ðƒ¶";i:12461;s:4:"ðƒ·";i:12462;s:4:"ðƒ¸";i:12463;s:4:"ðƒ¹";i:12464;s:4:"ðƒº";i:12465;s:4:"ð €";i:12466;s:4:"ð ";i:12467;s:4:"ð ‚";i:12468;s:4:"ð ƒ";i:12469;s:4:"ð „";i:12470;s:4:"ð …";i:12471;s:4:"ð ˆ";i:12472;s:4:"ð Š";i:12473;s:4:"ð ‹";i:12474;s:4:"ð Œ";i:12475;s:4:"ð ";i:12476;s:4:"ð Ž";i:12477;s:4:"ð ";i:12478;s:4:"ð ";i:12479;s:4:"ð ‘";i:12480;s:4:"ð ’";i:12481;s:4:"ð “";i:12482;s:4:"ð ”";i:12483;s:4:"ð •";i:12484;s:4:"ð –";i:12485;s:4:"ð —";i:12486;s:4:"ð ˜";i:12487;s:4:"ð ™";i:12488;s:4:"ð š";i:12489;s:4:"ð ›";i:12490;s:4:"ð œ";i:12491;s:4:"ð ";i:12492;s:4:"ð ž";i:12493;s:4:"ð Ÿ";i:12494;s:4:"ð  ";i:12495;s:4:"ð ¡";i:12496;s:4:"ð ¢";i:12497;s:4:"ð £";i:12498;s:4:"ð ¤";i:12499;s:4:"ð ¥";i:12500;s:4:"ð ¦";i:12501;s:4:"ð §";i:12502;s:4:"ð ¨";i:12503;s:4:"ð ©";i:12504;s:4:"ð ª";i:12505;s:4:"ð «";i:12506;s:4:"ð ¬";i:12507;s:4:"ð ­";i:12508;s:4:"ð ®";i:12509;s:4:"ð ¯";i:12510;s:4:"ð °";i:12511;s:4:"ð ±";i:12512;s:4:"ð ²";i:12513;s:4:"ð ³";i:12514;s:4:"ð ´";i:12515;s:4:"ð µ";i:12516;s:4:"ð ·";i:12517;s:4:"ð ¸";i:12518;s:4:"ð ¼";i:12519;s:4:"ð ¿";i:12520;s:4:"ð© ";i:12521;s:4:"ð©¡";i:12522;s:4:"ð©¢";i:12523;s:4:"ð©£";i:12524;s:4:"ð©¤";i:12525;s:4:"ð©¥";i:12526;s:4:"ð©¦";i:12527;s:4:"ð©§";i:12528;s:4:"ð©¨";i:12529;s:4:"ð©©";i:12530;s:4:"ð©ª";i:12531;s:4:"ð©«";i:12532;s:4:"ð©¬";i:12533;s:4:"ð©­";i:12534;s:4:"ð©®";i:12535;s:4:"ð©¯";i:12536;s:4:"ð©°";i:12537;s:4:"ð©±";i:12538;s:4:"ð©²";i:12539;s:4:"ð©³";i:12540;s:4:"ð©´";i:12541;s:4:"ð©µ";i:12542;s:4:"ð©¶";i:12543;s:4:"ð©·";i:12544;s:4:"ð©¸";i:12545;s:4:"ð©¹";i:12546;s:4:"ð©º";i:12547;s:4:"ð©»";i:12548;s:4:"ð©¼";i:12549;s:4:"ð¬€";i:12550;s:4:"ð¬";i:12551;s:4:"ð¬‚";i:12552;s:4:"ð¬ƒ";i:12553;s:4:"ð¬„";i:12554;s:4:"ð¬…";i:12555;s:4:"ð¬†";i:12556;s:4:"ð¬‡";i:12557;s:4:"ð¬ˆ";i:12558;s:4:"ð¬‰";i:12559;s:4:"ð¬Š";i:12560;s:4:"ð¬‹";i:12561;s:4:"ð¬Œ";i:12562;s:4:"ð¬";i:12563;s:4:"ð¬Ž";i:12564;s:4:"ð¬";i:12565;s:4:"ð¬";i:12566;s:4:"ð¬‘";i:12567;s:4:"ð¬’";i:12568;s:4:"ð¬“";i:12569;s:4:"ð¬”";i:12570;s:4:"ð¬•";i:12571;s:4:"ð¬–";i:12572;s:4:"ð¬—";i:12573;s:4:"ð¬˜";i:12574;s:4:"ð¬™";i:12575;s:4:"ð¬š";i:12576;s:4:"ð¬›";i:12577;s:4:"ð¬œ";i:12578;s:4:"ð¬";i:12579;s:4:"ð¬ž";i:12580;s:4:"ð¬Ÿ";i:12581;s:4:"ð¬ ";i:12582;s:4:"ð¬¡";i:12583;s:4:"ð¬¢";i:12584;s:4:"ð¬£";i:12585;s:4:"ð¬¤";i:12586;s:4:"ð¬¥";i:12587;s:4:"ð¬¦";i:12588;s:4:"ð¬§";i:12589;s:4:"ð¬¨";i:12590;s:4:"ð¬©";i:12591;s:4:"ð¬ª";i:12592;s:4:"ð¬«";i:12593;s:4:"ð¬¬";i:12594;s:4:"ð¬­";i:12595;s:4:"ð¬¯";i:12596;s:4:"ð¬°";i:12597;s:4:"ð¬±";i:12598;s:4:"ð¬²";i:12599;s:4:"ð¬³";i:12600;s:4:"ð¬´";i:12601;s:4:"ð¬µ";i:12602;s:4:"ð¡€";i:12603;s:4:"ð¡";i:12604;s:4:"ð¡‚";i:12605;s:4:"ð¡ƒ";i:12606;s:4:"ð¡„";i:12607;s:4:"ð¡…";i:12608;s:4:"ð¡†";i:12609;s:4:"ð¡‡";i:12610;s:4:"ð¡ˆ";i:12611;s:4:"ð¡‰";i:12612;s:4:"ð¡Š";i:12613;s:4:"ð¡‹";i:12614;s:4:"ð¡Œ";i:12615;s:4:"ð¡";i:12616;s:4:"ð¡Ž";i:12617;s:4:"ð¡";i:12618;s:4:"ð¡";i:12619;s:4:"ð¡‘";i:12620;s:4:"ð¡’";i:12621;s:4:"ð¡“";i:12622;s:4:"ð¡”";i:12623;s:4:"ð¡•";i:12624;s:4:"ð­€";i:12625;s:4:"ð­";i:12626;s:4:"ð­‚";i:12627;s:4:"ð­ƒ";i:12628;s:4:"ð­„";i:12629;s:4:"ð­…";i:12630;s:4:"ð­†";i:12631;s:4:"ð­‡";i:12632;s:4:"ð­ˆ";i:12633;s:4:"ð­‰";i:12634;s:4:"ð­Š";i:12635;s:4:"ð­‹";i:12636;s:4:"ð­Œ";i:12637;s:4:"ð­";i:12638;s:4:"ð­Ž";i:12639;s:4:"ð­";i:12640;s:4:"ð­";i:12641;s:4:"ð­‘";i:12642;s:4:"ð­’";i:12643;s:4:"ð­“";i:12644;s:4:"ð­”";i:12645;s:4:"ð­•";i:12646;s:4:"ð­ ";i:12647;s:4:"ð­¡";i:12648;s:4:"ð­¢";i:12649;s:4:"ð­£";i:12650;s:4:"ð­¤";i:12651;s:4:"ð­¥";i:12652;s:4:"ð­¦";i:12653;s:4:"ð­§";i:12654;s:4:"ð­¨";i:12655;s:4:"ð­©";i:12656;s:4:"ð­ª";i:12657;s:4:"ð­«";i:12658;s:4:"ð­¬";i:12659;s:4:"ð­­";i:12660;s:4:"ð­®";i:12661;s:4:"ð­¯";i:12662;s:4:"ð­°";i:12663;s:4:"ð­±";i:12664;s:4:"ð­²";i:12665;s:4:"ðŽ€";i:12666;s:4:"ðŽ";i:12667;s:4:"ðŽ‚";i:12668;s:4:"ðŽƒ";i:12669;s:4:"ðŽ„";i:12670;s:4:"ðŽ…";i:12671;s:4:"ðŽ†";i:12672;s:4:"ðŽ‡";i:12673;s:4:"ðŽˆ";i:12674;s:4:"ðŽ‰";i:12675;s:4:"ðŽŠ";i:12676;s:4:"ðŽ‹";i:12677;s:4:"ðŽŒ";i:12678;s:4:"ðŽ";i:12679;s:4:"ðŽŽ";i:12680;s:4:"ðŽ";i:12681;s:4:"ðŽ";i:12682;s:4:"ðŽ‘";i:12683;s:4:"ðŽ’";i:12684;s:4:"ðŽ“";i:12685;s:4:"ðŽ”";i:12686;s:4:"ðŽ•";i:12687;s:4:"ðŽ–";i:12688;s:4:"ðŽ—";i:12689;s:4:"ðŽ˜";i:12690;s:4:"ðŽ™";i:12691;s:4:"ðŽš";i:12692;s:4:"ðŽ›";i:12693;s:4:"ðŽœ";i:12694;s:4:"ðŽ";i:12695;s:4:"ðŽ ";i:12696;s:4:"ðŽ¡";i:12697;s:4:"ðŽ¢";i:12698;s:4:"ðŽ£";i:12699;s:4:"ðŽ¤";i:12700;s:4:"ðŽ¥";i:12701;s:4:"ðŽ¦";i:12702;s:4:"ðŽ§";i:12703;s:4:"ðŽ¨";i:12704;s:4:"ðŽ©";i:12705;s:4:"ðŽª";i:12706;s:4:"ðŽ«";i:12707;s:4:"ðŽ¬";i:12708;s:4:"ðŽ­";i:12709;s:4:"ðŽ®";i:12710;s:4:"ðŽ¯";i:12711;s:4:"ðŽ°";i:12712;s:4:"ðŽ±";i:12713;s:4:"ðŽ²";i:12714;s:4:"ðŽ³";i:12715;s:4:"ðŽ´";i:12716;s:4:"ðŽµ";i:12717;s:4:"ðŽ¶";i:12718;s:4:"ðŽ·";i:12719;s:4:"ðŽ¸";i:12720;s:4:"ðŽ¹";i:12721;s:4:"ðŽº";i:12722;s:4:"ðŽ»";i:12723;s:4:"ðŽ¼";i:12724;s:4:"ðŽ½";i:12725;s:4:"ðŽ¾";i:12726;s:4:"ðŽ¿";i:12727;s:4:"ð€";i:12728;s:4:"ð";i:12729;s:4:"ð‚";i:12730;s:4:"ðƒ";i:12731;s:4:"ðˆ";i:12732;s:4:"ð‰";i:12733;s:4:"ðŠ";i:12734;s:4:"ð‹";i:12735;s:4:"ðŒ";i:12736;s:4:"ð";i:12737;s:4:"ðŽ";i:12738;s:4:"ð";i:12739;s:4:"ð’€€";i:12740;s:4:"ð’€";i:12741;s:4:"𒀂";i:12742;s:4:"𒀃";i:12743;s:4:"𒀄";i:12744;s:4:"ð’€…";i:12745;s:4:"𒀆";i:12746;s:4:"𒀇";i:12747;s:4:"𒀈";i:12748;s:4:"𒀉";i:12749;s:4:"𒀊";i:12750;s:4:"𒀋";i:12751;s:4:"𒀌";i:12752;s:4:"ð’€";i:12753;s:4:"𒀎";i:12754;s:4:"ð’€";i:12755;s:4:"ð’€";i:12756;s:4:"𒀑";i:12757;s:4:"ð’€’";i:12758;s:4:"𒀓";i:12759;s:4:"ð’€”";i:12760;s:4:"𒀕";i:12761;s:4:"ð’€–";i:12762;s:4:"ð’€—";i:12763;s:4:"𒀘";i:12764;s:4:"ð’€™";i:12765;s:4:"𒀚";i:12766;s:4:"ð’€›";i:12767;s:4:"𒀜";i:12768;s:4:"ð’€";i:12769;s:4:"𒀞";i:12770;s:4:"𒀟";i:12771;s:4:"ð’€ ";i:12772;s:4:"𒀡";i:12773;s:4:"ð’€¢";i:12774;s:4:"ð’€£";i:12775;s:4:"𒀤";i:12776;s:4:"ð’€¥";i:12777;s:4:"𒀦";i:12778;s:4:"𒀧";i:12779;s:4:"𒀨";i:12780;s:4:"𒀩";i:12781;s:4:"𒀪";i:12782;s:4:"𒀫";i:12783;s:4:"𒀬";i:12784;s:4:"ð’€­";i:12785;s:4:"ð’€®";i:12786;s:4:"𒀯";i:12787;s:4:"ð’€°";i:12788;s:4:"ð’€±";i:12789;s:4:"ð’€²";i:12790;s:4:"ð’€³";i:12791;s:4:"ð’€´";i:12792;s:4:"ð’€µ";i:12793;s:4:"𒀶";i:12794;s:4:"ð’€·";i:12795;s:4:"𒀸";i:12796;s:4:"ð’€¹";i:12797;s:4:"𒀺";i:12798;s:4:"ð’€»";i:12799;s:4:"ð’€¼";i:12800;s:4:"ð’€½";i:12801;s:4:"ð’€¾";i:12802;s:4:"𒀿";i:12803;s:4:"ð’€";i:12804;s:4:"ð’";i:12805;s:4:"ð’‚";i:12806;s:4:"ð’ƒ";i:12807;s:4:"ð’„";i:12808;s:4:"ð’…";i:12809;s:4:"ð’†";i:12810;s:4:"ð’‡";i:12811;s:4:"ð’ˆ";i:12812;s:4:"ð’‰";i:12813;s:4:"ð’Š";i:12814;s:4:"ð’‹";i:12815;s:4:"ð’Œ";i:12816;s:4:"ð’";i:12817;s:4:"ð’Ž";i:12818;s:4:"ð’";i:12819;s:4:"ð’";i:12820;s:4:"ð’‘";i:12821;s:4:"ð’’";i:12822;s:4:"ð’“";i:12823;s:4:"ð’”";i:12824;s:4:"ð’•";i:12825;s:4:"ð’–";i:12826;s:4:"ð’—";i:12827;s:4:"ð’˜";i:12828;s:4:"ð’™";i:12829;s:4:"ð’š";i:12830;s:4:"ð’›";i:12831;s:4:"ð’œ";i:12832;s:4:"ð’";i:12833;s:4:"ð’ž";i:12834;s:4:"ð’Ÿ";i:12835;s:4:"ð’ ";i:12836;s:4:"ð’¡";i:12837;s:4:"ð’¢";i:12838;s:4:"ð’£";i:12839;s:4:"ð’¤";i:12840;s:4:"ð’¥";i:12841;s:4:"ð’¦";i:12842;s:4:"ð’§";i:12843;s:4:"ð’¨";i:12844;s:4:"ð’©";i:12845;s:4:"ð’ª";i:12846;s:4:"ð’«";i:12847;s:4:"ð’¬";i:12848;s:4:"ð’­";i:12849;s:4:"ð’®";i:12850;s:4:"ð’¯";i:12851;s:4:"ð’°";i:12852;s:4:"ð’±";i:12853;s:4:"ð’²";i:12854;s:4:"ð’³";i:12855;s:4:"ð’´";i:12856;s:4:"ð’µ";i:12857;s:4:"ð’¶";i:12858;s:4:"ð’·";i:12859;s:4:"ð’¸";i:12860;s:4:"ð’¹";i:12861;s:4:"ð’º";i:12862;s:4:"ð’»";i:12863;s:4:"ð’¼";i:12864;s:4:"ð’½";i:12865;s:4:"ð’¾";i:12866;s:4:"ð’¿";i:12867;s:4:"ð’‚€";i:12868;s:4:"ð’‚";i:12869;s:4:"ð’‚‚";i:12870;s:4:"𒂃";i:12871;s:4:"ð’‚„";i:12872;s:4:"ð’‚…";i:12873;s:4:"𒂆";i:12874;s:4:"𒂇";i:12875;s:4:"𒂈";i:12876;s:4:"𒂉";i:12877;s:4:"ð’‚Š";i:12878;s:4:"ð’‚‹";i:12879;s:4:"ð’‚Œ";i:12880;s:4:"ð’‚";i:12881;s:4:"ð’‚Ž";i:12882;s:4:"ð’‚";i:12883;s:4:"ð’‚";i:12884;s:4:"ð’‚‘";i:12885;s:4:"ð’‚’";i:12886;s:4:"ð’‚“";i:12887;s:4:"ð’‚”";i:12888;s:4:"ð’‚•";i:12889;s:4:"ð’‚–";i:12890;s:4:"ð’‚—";i:12891;s:4:"𒂘";i:12892;s:4:"ð’‚™";i:12893;s:4:"ð’‚š";i:12894;s:4:"ð’‚›";i:12895;s:4:"ð’‚œ";i:12896;s:4:"ð’‚";i:12897;s:4:"ð’‚ž";i:12898;s:4:"ð’‚Ÿ";i:12899;s:4:"ð’‚ ";i:12900;s:4:"ð’‚¡";i:12901;s:4:"ð’‚¢";i:12902;s:4:"ð’‚£";i:12903;s:4:"𒂤";i:12904;s:4:"ð’‚¥";i:12905;s:4:"𒂦";i:12906;s:4:"𒂧";i:12907;s:4:"𒂨";i:12908;s:4:"ð’‚©";i:12909;s:4:"𒂪";i:12910;s:4:"ð’‚«";i:12911;s:4:"𒂬";i:12912;s:4:"ð’‚­";i:12913;s:4:"ð’‚®";i:12914;s:4:"𒂯";i:12915;s:4:"ð’‚°";i:12916;s:4:"ð’‚±";i:12917;s:4:"ð’‚²";i:12918;s:4:"ð’‚³";i:12919;s:4:"ð’‚´";i:12920;s:4:"ð’‚µ";i:12921;s:4:"𒂶";i:12922;s:4:"ð’‚·";i:12923;s:4:"𒂸";i:12924;s:4:"ð’‚¹";i:12925;s:4:"𒂺";i:12926;s:4:"ð’‚»";i:12927;s:4:"ð’‚¼";i:12928;s:4:"ð’‚½";i:12929;s:4:"ð’‚¾";i:12930;s:4:"ð’‚¿";i:12931;s:4:"𒃀";i:12932;s:4:"ð’ƒ";i:12933;s:4:"𒃂";i:12934;s:4:"𒃃";i:12935;s:4:"𒃄";i:12936;s:4:"ð’ƒ…";i:12937;s:4:"𒃆";i:12938;s:4:"𒃇";i:12939;s:4:"𒃈";i:12940;s:4:"𒃉";i:12941;s:4:"𒃊";i:12942;s:4:"𒃋";i:12943;s:4:"𒃌";i:12944;s:4:"ð’ƒ";i:12945;s:4:"𒃎";i:12946;s:4:"ð’ƒ";i:12947;s:4:"ð’ƒ";i:12948;s:4:"𒃑";i:12949;s:4:"ð’ƒ’";i:12950;s:4:"𒃓";i:12951;s:4:"𒃔";i:12952;s:4:"𒃕";i:12953;s:4:"ð’ƒ–";i:12954;s:4:"ð’ƒ—";i:12955;s:4:"𒃘";i:12956;s:4:"𒃙";i:12957;s:4:"𒃚";i:12958;s:4:"𒃛";i:12959;s:4:"𒃜";i:12960;s:4:"ð’ƒ";i:12961;s:4:"𒃞";i:12962;s:4:"𒃟";i:12963;s:4:"ð’ƒ ";i:12964;s:4:"𒃡";i:12965;s:4:"𒃢";i:12966;s:4:"𒃣";i:12967;s:4:"𒃤";i:12968;s:4:"𒃥";i:12969;s:4:"𒃦";i:12970;s:4:"𒃧";i:12971;s:4:"𒃨";i:12972;s:4:"𒃩";i:12973;s:4:"𒃪";i:12974;s:4:"𒃫";i:12975;s:4:"𒃬";i:12976;s:4:"ð’ƒ­";i:12977;s:4:"𒃮";i:12978;s:4:"𒃯";i:12979;s:4:"ð’ƒ°";i:12980;s:4:"𒃱";i:12981;s:4:"𒃲";i:12982;s:4:"𒃳";i:12983;s:4:"ð’ƒ´";i:12984;s:4:"𒃵";i:12985;s:4:"𒃶";i:12986;s:4:"ð’ƒ·";i:12987;s:4:"𒃸";i:12988;s:4:"𒃹";i:12989;s:4:"𒃺";i:12990;s:4:"𒃻";i:12991;s:4:"𒃼";i:12992;s:4:"𒃽";i:12993;s:4:"𒃾";i:12994;s:4:"𒃿";i:12995;s:4:"ð’„€";i:12996;s:4:"ð’„";i:12997;s:4:"ð’„‚";i:12998;s:4:"𒄃";i:12999;s:4:"ð’„„";i:13000;s:4:"ð’„…";i:13001;s:4:"𒄆";i:13002;s:4:"𒄇";i:13003;s:4:"𒄈";i:13004;s:4:"𒄉";i:13005;s:4:"ð’„Š";i:13006;s:4:"ð’„‹";i:13007;s:4:"ð’„Œ";i:13008;s:4:"ð’„";i:13009;s:4:"ð’„Ž";i:13010;s:4:"ð’„";i:13011;s:4:"ð’„";i:13012;s:4:"ð’„‘";i:13013;s:4:"ð’„’";i:13014;s:4:"ð’„“";i:13015;s:4:"ð’„”";i:13016;s:4:"ð’„•";i:13017;s:4:"ð’„–";i:13018;s:4:"ð’„—";i:13019;s:4:"𒄘";i:13020;s:4:"ð’„™";i:13021;s:4:"ð’„š";i:13022;s:4:"ð’„›";i:13023;s:4:"ð’„œ";i:13024;s:4:"ð’„";i:13025;s:4:"ð’„ž";i:13026;s:4:"ð’„Ÿ";i:13027;s:4:"ð’„ ";i:13028;s:4:"ð’„¡";i:13029;s:4:"ð’„¢";i:13030;s:4:"ð’„£";i:13031;s:4:"𒄤";i:13032;s:4:"ð’„¥";i:13033;s:4:"𒄦";i:13034;s:4:"𒄧";i:13035;s:4:"𒄨";i:13036;s:4:"ð’„©";i:13037;s:4:"𒄪";i:13038;s:4:"ð’„«";i:13039;s:4:"𒄬";i:13040;s:4:"ð’„­";i:13041;s:4:"ð’„®";i:13042;s:4:"𒄯";i:13043;s:4:"ð’„°";i:13044;s:4:"ð’„±";i:13045;s:4:"ð’„²";i:13046;s:4:"ð’„³";i:13047;s:4:"ð’„´";i:13048;s:4:"ð’„µ";i:13049;s:4:"𒄶";i:13050;s:4:"ð’„·";i:13051;s:4:"𒄸";i:13052;s:4:"ð’„¹";i:13053;s:4:"𒄺";i:13054;s:4:"ð’„»";i:13055;s:4:"ð’„¼";i:13056;s:4:"ð’„½";i:13057;s:4:"ð’„¾";i:13058;s:4:"ð’„¿";i:13059;s:4:"ð’…€";i:13060;s:4:"ð’…";i:13061;s:4:"ð’…‚";i:13062;s:4:"ð’…ƒ";i:13063;s:4:"ð’…„";i:13064;s:4:"ð’……";i:13065;s:4:"ð’…†";i:13066;s:4:"ð’…‡";i:13067;s:4:"ð’…ˆ";i:13068;s:4:"ð’…‰";i:13069;s:4:"ð’…Š";i:13070;s:4:"ð’…‹";i:13071;s:4:"ð’…Œ";i:13072;s:4:"ð’…";i:13073;s:4:"ð’…Ž";i:13074;s:4:"ð’…";i:13075;s:4:"ð’…";i:13076;s:4:"ð’…‘";i:13077;s:4:"ð’…’";i:13078;s:4:"ð’…“";i:13079;s:4:"ð’…”";i:13080;s:4:"ð’…•";i:13081;s:4:"ð’…–";i:13082;s:4:"ð’…—";i:13083;s:4:"ð’…˜";i:13084;s:4:"ð’…™";i:13085;s:4:"ð’…š";i:13086;s:4:"ð’…›";i:13087;s:4:"ð’…œ";i:13088;s:4:"ð’…";i:13089;s:4:"ð’…ž";i:13090;s:4:"ð’…Ÿ";i:13091;s:4:"ð’… ";i:13092;s:4:"ð’…¡";i:13093;s:4:"ð’…¢";i:13094;s:4:"ð’…£";i:13095;s:4:"ð’…¤";i:13096;s:4:"ð’…¥";i:13097;s:4:"ð’…¦";i:13098;s:4:"ð’…§";i:13099;s:4:"ð’…¨";i:13100;s:4:"ð’…©";i:13101;s:4:"ð’…ª";i:13102;s:4:"ð’…«";i:13103;s:4:"ð’…¬";i:13104;s:4:"ð’…­";i:13105;s:4:"ð’…®";i:13106;s:4:"ð’…¯";i:13107;s:4:"ð’…°";i:13108;s:4:"ð’…±";i:13109;s:4:"ð’…²";i:13110;s:4:"ð’…³";i:13111;s:4:"ð’…´";i:13112;s:4:"ð’…µ";i:13113;s:4:"ð’…¶";i:13114;s:4:"ð’…·";i:13115;s:4:"ð’…¸";i:13116;s:4:"ð’…¹";i:13117;s:4:"ð’…º";i:13118;s:4:"ð’…»";i:13119;s:4:"ð’…¼";i:13120;s:4:"ð’…½";i:13121;s:4:"ð’…¾";i:13122;s:4:"ð’…¿";i:13123;s:4:"𒆀";i:13124;s:4:"ð’†";i:13125;s:4:"𒆂";i:13126;s:4:"𒆃";i:13127;s:4:"𒆄";i:13128;s:4:"ð’†…";i:13129;s:4:"𒆆";i:13130;s:4:"𒆇";i:13131;s:4:"𒆈";i:13132;s:4:"𒆉";i:13133;s:4:"𒆊";i:13134;s:4:"𒆋";i:13135;s:4:"𒆌";i:13136;s:4:"ð’†";i:13137;s:4:"𒆎";i:13138;s:4:"ð’†";i:13139;s:4:"ð’†";i:13140;s:4:"𒆑";i:13141;s:4:"ð’†’";i:13142;s:4:"𒆓";i:13143;s:4:"𒆔";i:13144;s:4:"𒆕";i:13145;s:4:"ð’†–";i:13146;s:4:"ð’†—";i:13147;s:4:"𒆘";i:13148;s:4:"𒆙";i:13149;s:4:"𒆚";i:13150;s:4:"𒆛";i:13151;s:4:"𒆜";i:13152;s:4:"ð’†";i:13153;s:4:"𒆞";i:13154;s:4:"𒆟";i:13155;s:4:"ð’† ";i:13156;s:4:"𒆡";i:13157;s:4:"𒆢";i:13158;s:4:"𒆣";i:13159;s:4:"𒆤";i:13160;s:4:"𒆥";i:13161;s:4:"𒆦";i:13162;s:4:"𒆧";i:13163;s:4:"𒆨";i:13164;s:4:"𒆩";i:13165;s:4:"𒆪";i:13166;s:4:"𒆫";i:13167;s:4:"𒆬";i:13168;s:4:"ð’†­";i:13169;s:4:"𒆮";i:13170;s:4:"𒆯";i:13171;s:4:"ð’†°";i:13172;s:4:"𒆱";i:13173;s:4:"𒆲";i:13174;s:4:"𒆳";i:13175;s:4:"ð’†´";i:13176;s:4:"𒆵";i:13177;s:4:"𒆶";i:13178;s:4:"ð’†·";i:13179;s:4:"𒆸";i:13180;s:4:"𒆹";i:13181;s:4:"𒆺";i:13182;s:4:"𒆻";i:13183;s:4:"𒆼";i:13184;s:4:"𒆽";i:13185;s:4:"𒆾";i:13186;s:4:"𒆿";i:13187;s:4:"𒇀";i:13188;s:4:"ð’‡";i:13189;s:4:"𒇂";i:13190;s:4:"𒇃";i:13191;s:4:"𒇄";i:13192;s:4:"ð’‡…";i:13193;s:4:"𒇆";i:13194;s:4:"𒇇";i:13195;s:4:"𒇈";i:13196;s:4:"𒇉";i:13197;s:4:"𒇊";i:13198;s:4:"𒇋";i:13199;s:4:"𒇌";i:13200;s:4:"ð’‡";i:13201;s:4:"𒇎";i:13202;s:4:"ð’‡";i:13203;s:4:"ð’‡";i:13204;s:4:"𒇑";i:13205;s:4:"ð’‡’";i:13206;s:4:"𒇓";i:13207;s:4:"𒇔";i:13208;s:4:"𒇕";i:13209;s:4:"ð’‡–";i:13210;s:4:"ð’‡—";i:13211;s:4:"𒇘";i:13212;s:4:"𒇙";i:13213;s:4:"𒇚";i:13214;s:4:"𒇛";i:13215;s:4:"𒇜";i:13216;s:4:"ð’‡";i:13217;s:4:"𒇞";i:13218;s:4:"𒇟";i:13219;s:4:"ð’‡ ";i:13220;s:4:"𒇡";i:13221;s:4:"𒇢";i:13222;s:4:"𒇣";i:13223;s:4:"𒇤";i:13224;s:4:"𒇥";i:13225;s:4:"𒇦";i:13226;s:4:"𒇧";i:13227;s:4:"𒇨";i:13228;s:4:"𒇩";i:13229;s:4:"𒇪";i:13230;s:4:"𒇫";i:13231;s:4:"𒇬";i:13232;s:4:"ð’‡­";i:13233;s:4:"𒇮";i:13234;s:4:"𒇯";i:13235;s:4:"ð’‡°";i:13236;s:4:"𒇱";i:13237;s:4:"𒇲";i:13238;s:4:"𒇳";i:13239;s:4:"ð’‡´";i:13240;s:4:"𒇵";i:13241;s:4:"𒇶";i:13242;s:4:"ð’‡·";i:13243;s:4:"𒇸";i:13244;s:4:"𒇹";i:13245;s:4:"𒇺";i:13246;s:4:"𒇻";i:13247;s:4:"𒇼";i:13248;s:4:"𒇽";i:13249;s:4:"𒇾";i:13250;s:4:"𒇿";i:13251;s:4:"𒈀";i:13252;s:4:"ð’ˆ";i:13253;s:4:"𒈂";i:13254;s:4:"𒈃";i:13255;s:4:"𒈄";i:13256;s:4:"ð’ˆ…";i:13257;s:4:"𒈆";i:13258;s:4:"𒈇";i:13259;s:4:"𒈈";i:13260;s:4:"𒈉";i:13261;s:4:"𒈊";i:13262;s:4:"𒈋";i:13263;s:4:"𒈌";i:13264;s:4:"ð’ˆ";i:13265;s:4:"𒈎";i:13266;s:4:"ð’ˆ";i:13267;s:4:"ð’ˆ";i:13268;s:4:"𒈑";i:13269;s:4:"ð’ˆ’";i:13270;s:4:"𒈓";i:13271;s:4:"𒈔";i:13272;s:4:"𒈕";i:13273;s:4:"ð’ˆ–";i:13274;s:4:"ð’ˆ—";i:13275;s:4:"𒈘";i:13276;s:4:"𒈙";i:13277;s:4:"𒈚";i:13278;s:4:"𒈛";i:13279;s:4:"𒈜";i:13280;s:4:"ð’ˆ";i:13281;s:4:"𒈞";i:13282;s:4:"𒈟";i:13283;s:4:"ð’ˆ ";i:13284;s:4:"𒈡";i:13285;s:4:"𒈢";i:13286;s:4:"𒈣";i:13287;s:4:"𒈤";i:13288;s:4:"𒈥";i:13289;s:4:"𒈦";i:13290;s:4:"𒈧";i:13291;s:4:"𒈨";i:13292;s:4:"𒈩";i:13293;s:4:"𒈪";i:13294;s:4:"𒈫";i:13295;s:4:"𒈬";i:13296;s:4:"ð’ˆ­";i:13297;s:4:"𒈮";i:13298;s:4:"𒈯";i:13299;s:4:"ð’ˆ°";i:13300;s:4:"𒈱";i:13301;s:4:"𒈲";i:13302;s:4:"𒈳";i:13303;s:4:"ð’ˆ´";i:13304;s:4:"𒈵";i:13305;s:4:"𒈶";i:13306;s:4:"ð’ˆ·";i:13307;s:4:"𒈸";i:13308;s:4:"𒈹";i:13309;s:4:"𒈺";i:13310;s:4:"𒈻";i:13311;s:4:"𒈼";i:13312;s:4:"𒈽";i:13313;s:4:"𒈾";i:13314;s:4:"𒈿";i:13315;s:4:"𒉀";i:13316;s:4:"ð’‰";i:13317;s:4:"𒉂";i:13318;s:4:"𒉃";i:13319;s:4:"𒉄";i:13320;s:4:"ð’‰…";i:13321;s:4:"𒉆";i:13322;s:4:"𒉇";i:13323;s:4:"𒉈";i:13324;s:4:"𒉉";i:13325;s:4:"𒉊";i:13326;s:4:"𒉋";i:13327;s:4:"𒉌";i:13328;s:4:"ð’‰";i:13329;s:4:"𒉎";i:13330;s:4:"ð’‰";i:13331;s:4:"ð’‰";i:13332;s:4:"𒉑";i:13333;s:4:"ð’‰’";i:13334;s:4:"𒉓";i:13335;s:4:"𒉔";i:13336;s:4:"𒉕";i:13337;s:4:"ð’‰–";i:13338;s:4:"ð’‰—";i:13339;s:4:"𒉘";i:13340;s:4:"𒉙";i:13341;s:4:"𒉚";i:13342;s:4:"𒉛";i:13343;s:4:"𒉜";i:13344;s:4:"ð’‰";i:13345;s:4:"𒉞";i:13346;s:4:"𒉟";i:13347;s:4:"ð’‰ ";i:13348;s:4:"𒉡";i:13349;s:4:"𒉢";i:13350;s:4:"𒉣";i:13351;s:4:"𒉤";i:13352;s:4:"𒉥";i:13353;s:4:"𒉦";i:13354;s:4:"𒉧";i:13355;s:4:"𒉨";i:13356;s:4:"𒉩";i:13357;s:4:"𒉪";i:13358;s:4:"𒉫";i:13359;s:4:"𒉬";i:13360;s:4:"ð’‰­";i:13361;s:4:"𒉮";i:13362;s:4:"𒉯";i:13363;s:4:"ð’‰°";i:13364;s:4:"𒉱";i:13365;s:4:"𒉲";i:13366;s:4:"𒉳";i:13367;s:4:"ð’‰´";i:13368;s:4:"𒉵";i:13369;s:4:"𒉶";i:13370;s:4:"ð’‰·";i:13371;s:4:"𒉸";i:13372;s:4:"𒉹";i:13373;s:4:"𒉺";i:13374;s:4:"𒉻";i:13375;s:4:"𒉼";i:13376;s:4:"𒉽";i:13377;s:4:"𒉾";i:13378;s:4:"𒉿";i:13379;s:4:"ð’Š€";i:13380;s:4:"ð’Š";i:13381;s:4:"ð’Š‚";i:13382;s:4:"𒊃";i:13383;s:4:"ð’Š„";i:13384;s:4:"ð’Š…";i:13385;s:4:"𒊆";i:13386;s:4:"𒊇";i:13387;s:4:"𒊈";i:13388;s:4:"𒊉";i:13389;s:4:"ð’ŠŠ";i:13390;s:4:"ð’Š‹";i:13391;s:4:"ð’ŠŒ";i:13392;s:4:"ð’Š";i:13393;s:4:"ð’ŠŽ";i:13394;s:4:"ð’Š";i:13395;s:4:"ð’Š";i:13396;s:4:"ð’Š‘";i:13397;s:4:"ð’Š’";i:13398;s:4:"ð’Š“";i:13399;s:4:"ð’Š”";i:13400;s:4:"ð’Š•";i:13401;s:4:"ð’Š–";i:13402;s:4:"ð’Š—";i:13403;s:4:"𒊘";i:13404;s:4:"ð’Š™";i:13405;s:4:"ð’Šš";i:13406;s:4:"ð’Š›";i:13407;s:4:"ð’Šœ";i:13408;s:4:"ð’Š";i:13409;s:4:"ð’Šž";i:13410;s:4:"ð’ŠŸ";i:13411;s:4:"ð’Š ";i:13412;s:4:"ð’Š¡";i:13413;s:4:"ð’Š¢";i:13414;s:4:"ð’Š£";i:13415;s:4:"𒊤";i:13416;s:4:"ð’Š¥";i:13417;s:4:"𒊦";i:13418;s:4:"𒊧";i:13419;s:4:"𒊨";i:13420;s:4:"ð’Š©";i:13421;s:4:"𒊪";i:13422;s:4:"ð’Š«";i:13423;s:4:"𒊬";i:13424;s:4:"ð’Š­";i:13425;s:4:"ð’Š®";i:13426;s:4:"𒊯";i:13427;s:4:"ð’Š°";i:13428;s:4:"𒊱";i:13429;s:4:"𒊲";i:13430;s:4:"𒊳";i:13431;s:4:"ð’Š´";i:13432;s:4:"𒊵";i:13433;s:4:"𒊶";i:13434;s:4:"ð’Š·";i:13435;s:4:"𒊸";i:13436;s:4:"𒊹";i:13437;s:4:"𒊺";i:13438;s:4:"ð’Š»";i:13439;s:4:"𒊼";i:13440;s:4:"𒊽";i:13441;s:4:"𒊾";i:13442;s:4:"ð’Š¿";i:13443;s:4:"ð’‹€";i:13444;s:4:"ð’‹";i:13445;s:4:"ð’‹‚";i:13446;s:4:"𒋃";i:13447;s:4:"ð’‹„";i:13448;s:4:"ð’‹…";i:13449;s:4:"𒋆";i:13450;s:4:"𒋇";i:13451;s:4:"𒋈";i:13452;s:4:"𒋉";i:13453;s:4:"ð’‹Š";i:13454;s:4:"ð’‹‹";i:13455;s:4:"ð’‹Œ";i:13456;s:4:"ð’‹";i:13457;s:4:"ð’‹Ž";i:13458;s:4:"ð’‹";i:13459;s:4:"ð’‹";i:13460;s:4:"ð’‹‘";i:13461;s:4:"ð’‹’";i:13462;s:4:"ð’‹“";i:13463;s:4:"ð’‹”";i:13464;s:4:"ð’‹•";i:13465;s:4:"ð’‹–";i:13466;s:4:"ð’‹—";i:13467;s:4:"𒋘";i:13468;s:4:"ð’‹™";i:13469;s:4:"ð’‹š";i:13470;s:4:"ð’‹›";i:13471;s:4:"ð’‹œ";i:13472;s:4:"ð’‹";i:13473;s:4:"ð’‹ž";i:13474;s:4:"ð’‹Ÿ";i:13475;s:4:"ð’‹ ";i:13476;s:4:"ð’‹¡";i:13477;s:4:"ð’‹¢";i:13478;s:4:"ð’‹£";i:13479;s:4:"𒋤";i:13480;s:4:"ð’‹¥";i:13481;s:4:"𒋦";i:13482;s:4:"𒋧";i:13483;s:4:"𒋨";i:13484;s:4:"ð’‹©";i:13485;s:4:"𒋪";i:13486;s:4:"ð’‹«";i:13487;s:4:"𒋬";i:13488;s:4:"ð’‹­";i:13489;s:4:"ð’‹®";i:13490;s:4:"𒋯";i:13491;s:4:"ð’‹°";i:13492;s:4:"ð’‹±";i:13493;s:4:"ð’‹²";i:13494;s:4:"ð’‹³";i:13495;s:4:"ð’‹´";i:13496;s:4:"ð’‹µ";i:13497;s:4:"𒋶";i:13498;s:4:"ð’‹·";i:13499;s:4:"𒋸";i:13500;s:4:"ð’‹¹";i:13501;s:4:"𒋺";i:13502;s:4:"ð’‹»";i:13503;s:4:"ð’‹¼";i:13504;s:4:"ð’‹½";i:13505;s:4:"ð’‹¾";i:13506;s:4:"ð’‹¿";i:13507;s:4:"𒌀";i:13508;s:4:"ð’Œ";i:13509;s:4:"𒌂";i:13510;s:4:"𒌃";i:13511;s:4:"𒌄";i:13512;s:4:"𒌅";i:13513;s:4:"𒌆";i:13514;s:4:"𒌇";i:13515;s:4:"𒌈";i:13516;s:4:"𒌉";i:13517;s:4:"𒌊";i:13518;s:4:"𒌋";i:13519;s:4:"𒌌";i:13520;s:4:"ð’Œ";i:13521;s:4:"𒌎";i:13522;s:4:"ð’Œ";i:13523;s:4:"ð’Œ";i:13524;s:4:"𒌑";i:13525;s:4:"𒌒";i:13526;s:4:"𒌓";i:13527;s:4:"𒌔";i:13528;s:4:"𒌕";i:13529;s:4:"𒌖";i:13530;s:4:"𒌗";i:13531;s:4:"𒌘";i:13532;s:4:"𒌙";i:13533;s:4:"𒌚";i:13534;s:4:"𒌛";i:13535;s:4:"𒌜";i:13536;s:4:"ð’Œ";i:13537;s:4:"𒌞";i:13538;s:4:"𒌟";i:13539;s:4:"𒌠";i:13540;s:4:"𒌡";i:13541;s:4:"𒌢";i:13542;s:4:"𒌣";i:13543;s:4:"𒌤";i:13544;s:4:"𒌥";i:13545;s:4:"𒌦";i:13546;s:4:"𒌧";i:13547;s:4:"𒌨";i:13548;s:4:"𒌩";i:13549;s:4:"𒌪";i:13550;s:4:"𒌫";i:13551;s:4:"𒌬";i:13552;s:4:"𒌭";i:13553;s:4:"𒌮";i:13554;s:4:"𒌯";i:13555;s:4:"𒌰";i:13556;s:4:"𒌱";i:13557;s:4:"𒌲";i:13558;s:4:"𒌳";i:13559;s:4:"𒌴";i:13560;s:4:"𒌵";i:13561;s:4:"𒌶";i:13562;s:4:"𒌷";i:13563;s:4:"𒌸";i:13564;s:4:"𒌹";i:13565;s:4:"𒌺";i:13566;s:4:"𒌻";i:13567;s:4:"𒌼";i:13568;s:4:"𒌽";i:13569;s:4:"𒌾";i:13570;s:4:"𒌿";i:13571;s:4:"ð’€";i:13572;s:4:"ð’";i:13573;s:4:"ð’‚";i:13574;s:4:"ð’ƒ";i:13575;s:4:"ð’„";i:13576;s:4:"ð’…";i:13577;s:4:"ð’†";i:13578;s:4:"ð’‡";i:13579;s:4:"ð’ˆ";i:13580;s:4:"ð’‰";i:13581;s:4:"ð’Š";i:13582;s:4:"ð’‹";i:13583;s:4:"ð’Œ";i:13584;s:4:"ð’";i:13585;s:4:"ð’Ž";i:13586;s:4:"ð’";i:13587;s:4:"ð’";i:13588;s:4:"ð’‘";i:13589;s:4:"ð’’";i:13590;s:4:"ð’“";i:13591;s:4:"ð’”";i:13592;s:4:"ð’•";i:13593;s:4:"ð’–";i:13594;s:4:"ð’—";i:13595;s:4:"ð’˜";i:13596;s:4:"ð’™";i:13597;s:4:"ð’š";i:13598;s:4:"ð’›";i:13599;s:4:"ð’œ";i:13600;s:4:"ð’";i:13601;s:4:"ð’ž";i:13602;s:4:"ð’Ÿ";i:13603;s:4:"ð’ ";i:13604;s:4:"ð’¡";i:13605;s:4:"ð’¢";i:13606;s:4:"ð’£";i:13607;s:4:"ð’¤";i:13608;s:4:"ð’¥";i:13609;s:4:"ð’¦";i:13610;s:4:"ð’§";i:13611;s:4:"ð’¨";i:13612;s:4:"ð’©";i:13613;s:4:"ð’ª";i:13614;s:4:"ð’«";i:13615;s:4:"ð’¬";i:13616;s:4:"ð’­";i:13617;s:4:"ð’®";i:13618;s:4:"ð“€€";i:13619;s:4:"ð“€";i:13620;s:4:"𓀂";i:13621;s:4:"𓀃";i:13622;s:4:"𓀄";i:13623;s:4:"ð“€…";i:13624;s:4:"𓀆";i:13625;s:4:"𓀇";i:13626;s:4:"𓀈";i:13627;s:4:"𓀉";i:13628;s:4:"𓀊";i:13629;s:4:"𓀋";i:13630;s:4:"𓀌";i:13631;s:4:"ð“€";i:13632;s:4:"𓀎";i:13633;s:4:"ð“€";i:13634;s:4:"ð“€";i:13635;s:4:"𓀑";i:13636;s:4:"ð“€’";i:13637;s:4:"𓀓";i:13638;s:4:"ð“€”";i:13639;s:4:"𓀕";i:13640;s:4:"ð“€–";i:13641;s:4:"ð“€—";i:13642;s:4:"𓀘";i:13643;s:4:"ð“€™";i:13644;s:4:"𓀚";i:13645;s:4:"ð“€›";i:13646;s:4:"𓀜";i:13647;s:4:"ð“€";i:13648;s:4:"𓀞";i:13649;s:4:"𓀟";i:13650;s:4:"ð“€ ";i:13651;s:4:"𓀡";i:13652;s:4:"ð“€¢";i:13653;s:4:"ð“€£";i:13654;s:4:"𓀤";i:13655;s:4:"ð“€¥";i:13656;s:4:"𓀦";i:13657;s:4:"𓀧";i:13658;s:4:"𓀨";i:13659;s:4:"𓀩";i:13660;s:4:"𓀪";i:13661;s:4:"𓀫";i:13662;s:4:"𓀬";i:13663;s:4:"ð“€­";i:13664;s:4:"ð“€®";i:13665;s:4:"𓀯";i:13666;s:4:"ð“€°";i:13667;s:4:"ð“€±";i:13668;s:4:"ð“€²";i:13669;s:4:"ð“€³";i:13670;s:4:"ð“€´";i:13671;s:4:"ð“€µ";i:13672;s:4:"𓀶";i:13673;s:4:"ð“€·";i:13674;s:4:"𓀸";i:13675;s:4:"ð“€¹";i:13676;s:4:"𓀺";i:13677;s:4:"ð“€»";i:13678;s:4:"ð“€¼";i:13679;s:4:"ð“€½";i:13680;s:4:"ð“€¾";i:13681;s:4:"𓀿";i:13682;s:4:"ð“€";i:13683;s:4:"ð“";i:13684;s:4:"ð“‚";i:13685;s:4:"ð“ƒ";i:13686;s:4:"ð“„";i:13687;s:4:"ð“…";i:13688;s:4:"ð“†";i:13689;s:4:"ð“‡";i:13690;s:4:"ð“ˆ";i:13691;s:4:"ð“‰";i:13692;s:4:"ð“Š";i:13693;s:4:"ð“‹";i:13694;s:4:"ð“Œ";i:13695;s:4:"ð“";i:13696;s:4:"ð“Ž";i:13697;s:4:"ð“";i:13698;s:4:"ð“";i:13699;s:4:"ð“‘";i:13700;s:4:"ð“’";i:13701;s:4:"ð““";i:13702;s:4:"ð“”";i:13703;s:4:"ð“•";i:13704;s:4:"ð“–";i:13705;s:4:"ð“—";i:13706;s:4:"ð“˜";i:13707;s:4:"ð“™";i:13708;s:4:"ð“š";i:13709;s:4:"ð“›";i:13710;s:4:"ð“œ";i:13711;s:4:"ð“";i:13712;s:4:"ð“ž";i:13713;s:4:"ð“Ÿ";i:13714;s:4:"ð“ ";i:13715;s:4:"ð“¡";i:13716;s:4:"ð“¢";i:13717;s:4:"ð“£";i:13718;s:4:"ð“¤";i:13719;s:4:"ð“¥";i:13720;s:4:"ð“¦";i:13721;s:4:"ð“§";i:13722;s:4:"ð“¨";i:13723;s:4:"ð“©";i:13724;s:4:"ð“ª";i:13725;s:4:"ð“«";i:13726;s:4:"ð“¬";i:13727;s:4:"ð“­";i:13728;s:4:"ð“®";i:13729;s:4:"ð“¯";i:13730;s:4:"ð“°";i:13731;s:4:"ð“±";i:13732;s:4:"ð“²";i:13733;s:4:"ð“³";i:13734;s:4:"ð“´";i:13735;s:4:"ð“µ";i:13736;s:4:"ð“¶";i:13737;s:4:"ð“·";i:13738;s:4:"ð“¸";i:13739;s:4:"ð“¹";i:13740;s:4:"ð“º";i:13741;s:4:"ð“»";i:13742;s:4:"ð“¼";i:13743;s:4:"ð“½";i:13744;s:4:"ð“¾";i:13745;s:4:"ð“¿";i:13746;s:4:"ð“‚€";i:13747;s:4:"ð“‚";i:13748;s:4:"ð“‚‚";i:13749;s:4:"𓂃";i:13750;s:4:"ð“‚„";i:13751;s:4:"ð“‚…";i:13752;s:4:"𓂆";i:13753;s:4:"𓂇";i:13754;s:4:"𓂈";i:13755;s:4:"𓂉";i:13756;s:4:"ð“‚Š";i:13757;s:4:"ð“‚‹";i:13758;s:4:"ð“‚Œ";i:13759;s:4:"ð“‚";i:13760;s:4:"ð“‚Ž";i:13761;s:4:"ð“‚";i:13762;s:4:"ð“‚";i:13763;s:4:"ð“‚‘";i:13764;s:4:"ð“‚’";i:13765;s:4:"ð“‚“";i:13766;s:4:"ð“‚”";i:13767;s:4:"ð“‚•";i:13768;s:4:"ð“‚–";i:13769;s:4:"ð“‚—";i:13770;s:4:"𓂘";i:13771;s:4:"ð“‚™";i:13772;s:4:"ð“‚š";i:13773;s:4:"ð“‚›";i:13774;s:4:"ð“‚œ";i:13775;s:4:"ð“‚";i:13776;s:4:"ð“‚ž";i:13777;s:4:"ð“‚Ÿ";i:13778;s:4:"ð“‚ ";i:13779;s:4:"ð“‚¡";i:13780;s:4:"ð“‚¢";i:13781;s:4:"ð“‚£";i:13782;s:4:"𓂤";i:13783;s:4:"ð“‚¥";i:13784;s:4:"𓂦";i:13785;s:4:"𓂧";i:13786;s:4:"𓂨";i:13787;s:4:"ð“‚©";i:13788;s:4:"𓂪";i:13789;s:4:"ð“‚«";i:13790;s:4:"𓂬";i:13791;s:4:"ð“‚­";i:13792;s:4:"ð“‚®";i:13793;s:4:"𓂯";i:13794;s:4:"ð“‚°";i:13795;s:4:"ð“‚±";i:13796;s:4:"ð“‚²";i:13797;s:4:"ð“‚³";i:13798;s:4:"ð“‚´";i:13799;s:4:"ð“‚µ";i:13800;s:4:"𓂶";i:13801;s:4:"ð“‚·";i:13802;s:4:"𓂸";i:13803;s:4:"ð“‚¹";i:13804;s:4:"𓂺";i:13805;s:4:"ð“‚»";i:13806;s:4:"ð“‚¼";i:13807;s:4:"ð“‚½";i:13808;s:4:"ð“‚¾";i:13809;s:4:"ð“‚¿";i:13810;s:4:"𓃀";i:13811;s:4:"ð“ƒ";i:13812;s:4:"𓃂";i:13813;s:4:"𓃃";i:13814;s:4:"𓃄";i:13815;s:4:"𓃅";i:13816;s:4:"𓃆";i:13817;s:4:"𓃇";i:13818;s:4:"𓃈";i:13819;s:4:"𓃉";i:13820;s:4:"𓃊";i:13821;s:4:"𓃋";i:13822;s:4:"𓃌";i:13823;s:4:"ð“ƒ";i:13824;s:4:"𓃎";i:13825;s:4:"ð“ƒ";i:13826;s:4:"ð“ƒ";i:13827;s:4:"𓃑";i:13828;s:4:"𓃒";i:13829;s:4:"𓃓";i:13830;s:4:"𓃔";i:13831;s:4:"𓃕";i:13832;s:4:"𓃖";i:13833;s:4:"𓃗";i:13834;s:4:"𓃘";i:13835;s:4:"𓃙";i:13836;s:4:"𓃚";i:13837;s:4:"𓃛";i:13838;s:4:"𓃜";i:13839;s:4:"ð“ƒ";i:13840;s:4:"𓃞";i:13841;s:4:"𓃟";i:13842;s:4:"𓃠";i:13843;s:4:"𓃡";i:13844;s:4:"𓃢";i:13845;s:4:"𓃣";i:13846;s:4:"𓃤";i:13847;s:4:"𓃥";i:13848;s:4:"𓃦";i:13849;s:4:"𓃧";i:13850;s:4:"𓃨";i:13851;s:4:"𓃩";i:13852;s:4:"𓃪";i:13853;s:4:"𓃫";i:13854;s:4:"𓃬";i:13855;s:4:"𓃭";i:13856;s:4:"𓃮";i:13857;s:4:"𓃯";i:13858;s:4:"𓃰";i:13859;s:4:"𓃱";i:13860;s:4:"𓃲";i:13861;s:4:"𓃳";i:13862;s:4:"𓃴";i:13863;s:4:"𓃵";i:13864;s:4:"𓃶";i:13865;s:4:"𓃷";i:13866;s:4:"𓃸";i:13867;s:4:"𓃹";i:13868;s:4:"𓃺";i:13869;s:4:"𓃻";i:13870;s:4:"𓃼";i:13871;s:4:"𓃽";i:13872;s:4:"𓃾";i:13873;s:4:"𓃿";i:13874;s:4:"ð“„€";i:13875;s:4:"ð“„";i:13876;s:4:"ð“„‚";i:13877;s:4:"𓄃";i:13878;s:4:"ð“„„";i:13879;s:4:"ð“„…";i:13880;s:4:"𓄆";i:13881;s:4:"𓄇";i:13882;s:4:"𓄈";i:13883;s:4:"𓄉";i:13884;s:4:"ð“„Š";i:13885;s:4:"ð“„‹";i:13886;s:4:"ð“„Œ";i:13887;s:4:"ð“„";i:13888;s:4:"ð“„Ž";i:13889;s:4:"ð“„";i:13890;s:4:"ð“„";i:13891;s:4:"ð“„‘";i:13892;s:4:"ð“„’";i:13893;s:4:"ð“„“";i:13894;s:4:"ð“„”";i:13895;s:4:"ð“„•";i:13896;s:4:"ð“„–";i:13897;s:4:"ð“„—";i:13898;s:4:"𓄘";i:13899;s:4:"ð“„™";i:13900;s:4:"ð“„š";i:13901;s:4:"ð“„›";i:13902;s:4:"ð“„œ";i:13903;s:4:"ð“„";i:13904;s:4:"ð“„ž";i:13905;s:4:"ð“„Ÿ";i:13906;s:4:"ð“„ ";i:13907;s:4:"ð“„¡";i:13908;s:4:"ð“„¢";i:13909;s:4:"ð“„£";i:13910;s:4:"𓄤";i:13911;s:4:"ð“„¥";i:13912;s:4:"𓄦";i:13913;s:4:"𓄧";i:13914;s:4:"𓄨";i:13915;s:4:"ð“„©";i:13916;s:4:"𓄪";i:13917;s:4:"ð“„«";i:13918;s:4:"𓄬";i:13919;s:4:"ð“„­";i:13920;s:4:"ð“„®";i:13921;s:4:"𓄯";i:13922;s:4:"ð“„°";i:13923;s:4:"ð“„±";i:13924;s:4:"ð“„²";i:13925;s:4:"ð“„³";i:13926;s:4:"ð“„´";i:13927;s:4:"ð“„µ";i:13928;s:4:"𓄶";i:13929;s:4:"ð“„·";i:13930;s:4:"𓄸";i:13931;s:4:"ð“„¹";i:13932;s:4:"𓄺";i:13933;s:4:"ð“„»";i:13934;s:4:"ð“„¼";i:13935;s:4:"ð“„½";i:13936;s:4:"ð“„¾";i:13937;s:4:"ð“„¿";i:13938;s:4:"ð“…€";i:13939;s:4:"ð“…";i:13940;s:4:"ð“…‚";i:13941;s:4:"ð“…ƒ";i:13942;s:4:"ð“…„";i:13943;s:4:"ð“……";i:13944;s:4:"ð“…†";i:13945;s:4:"ð“…‡";i:13946;s:4:"ð“…ˆ";i:13947;s:4:"ð“…‰";i:13948;s:4:"ð“…Š";i:13949;s:4:"ð“…‹";i:13950;s:4:"ð“…Œ";i:13951;s:4:"ð“…";i:13952;s:4:"ð“…Ž";i:13953;s:4:"ð“…";i:13954;s:4:"ð“…";i:13955;s:4:"ð“…‘";i:13956;s:4:"ð“…’";i:13957;s:4:"ð“…“";i:13958;s:4:"ð“…”";i:13959;s:4:"ð“…•";i:13960;s:4:"ð“…–";i:13961;s:4:"ð“…—";i:13962;s:4:"ð“…˜";i:13963;s:4:"ð“…™";i:13964;s:4:"ð“…š";i:13965;s:4:"ð“…›";i:13966;s:4:"ð“…œ";i:13967;s:4:"ð“…";i:13968;s:4:"ð“…ž";i:13969;s:4:"ð“…Ÿ";i:13970;s:4:"ð“… ";i:13971;s:4:"ð“…¡";i:13972;s:4:"ð“…¢";i:13973;s:4:"ð“…£";i:13974;s:4:"ð“…¤";i:13975;s:4:"ð“…¥";i:13976;s:4:"ð“…¦";i:13977;s:4:"ð“…§";i:13978;s:4:"ð“…¨";i:13979;s:4:"ð“…©";i:13980;s:4:"ð“…ª";i:13981;s:4:"ð“…«";i:13982;s:4:"ð“…¬";i:13983;s:4:"ð“…­";i:13984;s:4:"ð“…®";i:13985;s:4:"ð“…¯";i:13986;s:4:"ð“…°";i:13987;s:4:"ð“…±";i:13988;s:4:"ð“…²";i:13989;s:4:"ð“…³";i:13990;s:4:"ð“…´";i:13991;s:4:"ð“…µ";i:13992;s:4:"ð“…¶";i:13993;s:4:"ð“…·";i:13994;s:4:"ð“…¸";i:13995;s:4:"ð“…¹";i:13996;s:4:"ð“…º";i:13997;s:4:"ð“…»";i:13998;s:4:"ð“…¼";i:13999;s:4:"ð“…½";i:14000;s:4:"ð“…¾";i:14001;s:4:"ð“…¿";i:14002;s:4:"𓆀";i:14003;s:4:"ð“†";i:14004;s:4:"𓆂";i:14005;s:4:"𓆃";i:14006;s:4:"𓆄";i:14007;s:4:"𓆅";i:14008;s:4:"𓆆";i:14009;s:4:"𓆇";i:14010;s:4:"𓆈";i:14011;s:4:"𓆉";i:14012;s:4:"𓆊";i:14013;s:4:"𓆋";i:14014;s:4:"𓆌";i:14015;s:4:"ð“†";i:14016;s:4:"𓆎";i:14017;s:4:"ð“†";i:14018;s:4:"ð“†";i:14019;s:4:"𓆑";i:14020;s:4:"𓆒";i:14021;s:4:"𓆓";i:14022;s:4:"𓆔";i:14023;s:4:"𓆕";i:14024;s:4:"𓆖";i:14025;s:4:"𓆗";i:14026;s:4:"𓆘";i:14027;s:4:"𓆙";i:14028;s:4:"𓆚";i:14029;s:4:"𓆛";i:14030;s:4:"𓆜";i:14031;s:4:"ð“†";i:14032;s:4:"𓆞";i:14033;s:4:"𓆟";i:14034;s:4:"𓆠";i:14035;s:4:"𓆡";i:14036;s:4:"𓆢";i:14037;s:4:"𓆣";i:14038;s:4:"𓆤";i:14039;s:4:"𓆥";i:14040;s:4:"𓆦";i:14041;s:4:"𓆧";i:14042;s:4:"𓆨";i:14043;s:4:"𓆩";i:14044;s:4:"𓆪";i:14045;s:4:"𓆫";i:14046;s:4:"𓆬";i:14047;s:4:"𓆭";i:14048;s:4:"𓆮";i:14049;s:4:"𓆯";i:14050;s:4:"𓆰";i:14051;s:4:"𓆱";i:14052;s:4:"𓆲";i:14053;s:4:"𓆳";i:14054;s:4:"𓆴";i:14055;s:4:"𓆵";i:14056;s:4:"𓆶";i:14057;s:4:"𓆷";i:14058;s:4:"𓆸";i:14059;s:4:"𓆹";i:14060;s:4:"𓆺";i:14061;s:4:"𓆻";i:14062;s:4:"𓆼";i:14063;s:4:"𓆽";i:14064;s:4:"𓆾";i:14065;s:4:"𓆿";i:14066;s:4:"𓇀";i:14067;s:4:"ð“‡";i:14068;s:4:"𓇂";i:14069;s:4:"𓇃";i:14070;s:4:"𓇄";i:14071;s:4:"𓇅";i:14072;s:4:"𓇆";i:14073;s:4:"𓇇";i:14074;s:4:"𓇈";i:14075;s:4:"𓇉";i:14076;s:4:"𓇊";i:14077;s:4:"𓇋";i:14078;s:4:"𓇌";i:14079;s:4:"ð“‡";i:14080;s:4:"𓇎";i:14081;s:4:"ð“‡";i:14082;s:4:"ð“‡";i:14083;s:4:"𓇑";i:14084;s:4:"𓇒";i:14085;s:4:"𓇓";i:14086;s:4:"𓇔";i:14087;s:4:"𓇕";i:14088;s:4:"𓇖";i:14089;s:4:"𓇗";i:14090;s:4:"𓇘";i:14091;s:4:"𓇙";i:14092;s:4:"𓇚";i:14093;s:4:"𓇛";i:14094;s:4:"𓇜";i:14095;s:4:"ð“‡";i:14096;s:4:"𓇞";i:14097;s:4:"𓇟";i:14098;s:4:"𓇠";i:14099;s:4:"𓇡";i:14100;s:4:"𓇢";i:14101;s:4:"𓇣";i:14102;s:4:"𓇤";i:14103;s:4:"𓇥";i:14104;s:4:"𓇦";i:14105;s:4:"𓇧";i:14106;s:4:"𓇨";i:14107;s:4:"𓇩";i:14108;s:4:"𓇪";i:14109;s:4:"𓇫";i:14110;s:4:"𓇬";i:14111;s:4:"𓇭";i:14112;s:4:"𓇮";i:14113;s:4:"𓇯";i:14114;s:4:"𓇰";i:14115;s:4:"𓇱";i:14116;s:4:"𓇲";i:14117;s:4:"𓇳";i:14118;s:4:"𓇴";i:14119;s:4:"𓇵";i:14120;s:4:"𓇶";i:14121;s:4:"𓇷";i:14122;s:4:"𓇸";i:14123;s:4:"𓇹";i:14124;s:4:"𓇺";i:14125;s:4:"𓇻";i:14126;s:4:"𓇼";i:14127;s:4:"𓇽";i:14128;s:4:"𓇾";i:14129;s:4:"𓇿";i:14130;s:4:"𓈀";i:14131;s:4:"ð“ˆ";i:14132;s:4:"𓈂";i:14133;s:4:"𓈃";i:14134;s:4:"𓈄";i:14135;s:4:"𓈅";i:14136;s:4:"𓈆";i:14137;s:4:"𓈇";i:14138;s:4:"𓈈";i:14139;s:4:"𓈉";i:14140;s:4:"𓈊";i:14141;s:4:"𓈋";i:14142;s:4:"𓈌";i:14143;s:4:"ð“ˆ";i:14144;s:4:"𓈎";i:14145;s:4:"ð“ˆ";i:14146;s:4:"ð“ˆ";i:14147;s:4:"𓈑";i:14148;s:4:"𓈒";i:14149;s:4:"𓈓";i:14150;s:4:"𓈔";i:14151;s:4:"𓈕";i:14152;s:4:"𓈖";i:14153;s:4:"𓈗";i:14154;s:4:"𓈘";i:14155;s:4:"𓈙";i:14156;s:4:"𓈚";i:14157;s:4:"𓈛";i:14158;s:4:"𓈜";i:14159;s:4:"ð“ˆ";i:14160;s:4:"𓈞";i:14161;s:4:"𓈟";i:14162;s:4:"𓈠";i:14163;s:4:"𓈡";i:14164;s:4:"𓈢";i:14165;s:4:"𓈣";i:14166;s:4:"𓈤";i:14167;s:4:"𓈥";i:14168;s:4:"𓈦";i:14169;s:4:"𓈧";i:14170;s:4:"𓈨";i:14171;s:4:"𓈩";i:14172;s:4:"𓈪";i:14173;s:4:"𓈫";i:14174;s:4:"𓈬";i:14175;s:4:"𓈭";i:14176;s:4:"𓈮";i:14177;s:4:"𓈯";i:14178;s:4:"𓈰";i:14179;s:4:"𓈱";i:14180;s:4:"𓈲";i:14181;s:4:"𓈳";i:14182;s:4:"𓈴";i:14183;s:4:"𓈵";i:14184;s:4:"𓈶";i:14185;s:4:"𓈷";i:14186;s:4:"𓈸";i:14187;s:4:"𓈹";i:14188;s:4:"𓈺";i:14189;s:4:"𓈻";i:14190;s:4:"𓈼";i:14191;s:4:"𓈽";i:14192;s:4:"𓈾";i:14193;s:4:"𓈿";i:14194;s:4:"𓉀";i:14195;s:4:"ð“‰";i:14196;s:4:"𓉂";i:14197;s:4:"𓉃";i:14198;s:4:"𓉄";i:14199;s:4:"𓉅";i:14200;s:4:"𓉆";i:14201;s:4:"𓉇";i:14202;s:4:"𓉈";i:14203;s:4:"𓉉";i:14204;s:4:"𓉊";i:14205;s:4:"𓉋";i:14206;s:4:"𓉌";i:14207;s:4:"ð“‰";i:14208;s:4:"𓉎";i:14209;s:4:"ð“‰";i:14210;s:4:"ð“‰";i:14211;s:4:"𓉑";i:14212;s:4:"𓉒";i:14213;s:4:"𓉓";i:14214;s:4:"𓉔";i:14215;s:4:"𓉕";i:14216;s:4:"𓉖";i:14217;s:4:"𓉗";i:14218;s:4:"𓉘";i:14219;s:4:"𓉙";i:14220;s:4:"𓉚";i:14221;s:4:"𓉛";i:14222;s:4:"𓉜";i:14223;s:4:"ð“‰";i:14224;s:4:"𓉞";i:14225;s:4:"𓉟";i:14226;s:4:"𓉠";i:14227;s:4:"𓉡";i:14228;s:4:"𓉢";i:14229;s:4:"𓉣";i:14230;s:4:"𓉤";i:14231;s:4:"𓉥";i:14232;s:4:"𓉦";i:14233;s:4:"𓉧";i:14234;s:4:"𓉨";i:14235;s:4:"𓉩";i:14236;s:4:"𓉪";i:14237;s:4:"𓉫";i:14238;s:4:"𓉬";i:14239;s:4:"𓉭";i:14240;s:4:"𓉮";i:14241;s:4:"𓉯";i:14242;s:4:"𓉰";i:14243;s:4:"𓉱";i:14244;s:4:"𓉲";i:14245;s:4:"𓉳";i:14246;s:4:"𓉴";i:14247;s:4:"𓉵";i:14248;s:4:"𓉶";i:14249;s:4:"𓉷";i:14250;s:4:"𓉸";i:14251;s:4:"𓉹";i:14252;s:4:"𓉺";i:14253;s:4:"𓉻";i:14254;s:4:"𓉼";i:14255;s:4:"𓉽";i:14256;s:4:"𓉾";i:14257;s:4:"𓉿";i:14258;s:4:"ð“Š€";i:14259;s:4:"ð“Š";i:14260;s:4:"ð“Š‚";i:14261;s:4:"𓊃";i:14262;s:4:"ð“Š„";i:14263;s:4:"ð“Š…";i:14264;s:4:"𓊆";i:14265;s:4:"𓊇";i:14266;s:4:"𓊈";i:14267;s:4:"𓊉";i:14268;s:4:"ð“ŠŠ";i:14269;s:4:"ð“Š‹";i:14270;s:4:"ð“ŠŒ";i:14271;s:4:"ð“Š";i:14272;s:4:"ð“ŠŽ";i:14273;s:4:"ð“Š";i:14274;s:4:"ð“Š";i:14275;s:4:"ð“Š‘";i:14276;s:4:"ð“Š’";i:14277;s:4:"ð“Š“";i:14278;s:4:"ð“Š”";i:14279;s:4:"ð“Š•";i:14280;s:4:"ð“Š–";i:14281;s:4:"ð“Š—";i:14282;s:4:"𓊘";i:14283;s:4:"ð“Š™";i:14284;s:4:"ð“Šš";i:14285;s:4:"ð“Š›";i:14286;s:4:"ð“Šœ";i:14287;s:4:"ð“Š";i:14288;s:4:"ð“Šž";i:14289;s:4:"ð“ŠŸ";i:14290;s:4:"ð“Š ";i:14291;s:4:"ð“Š¡";i:14292;s:4:"ð“Š¢";i:14293;s:4:"ð“Š£";i:14294;s:4:"𓊤";i:14295;s:4:"ð“Š¥";i:14296;s:4:"𓊦";i:14297;s:4:"𓊧";i:14298;s:4:"𓊨";i:14299;s:4:"ð“Š©";i:14300;s:4:"𓊪";i:14301;s:4:"ð“Š«";i:14302;s:4:"𓊬";i:14303;s:4:"ð“Š­";i:14304;s:4:"ð“Š®";i:14305;s:4:"𓊯";i:14306;s:4:"ð“Š°";i:14307;s:4:"𓊱";i:14308;s:4:"𓊲";i:14309;s:4:"𓊳";i:14310;s:4:"ð“Š´";i:14311;s:4:"𓊵";i:14312;s:4:"𓊶";i:14313;s:4:"ð“Š·";i:14314;s:4:"𓊸";i:14315;s:4:"𓊹";i:14316;s:4:"𓊺";i:14317;s:4:"ð“Š»";i:14318;s:4:"𓊼";i:14319;s:4:"𓊽";i:14320;s:4:"𓊾";i:14321;s:4:"ð“Š¿";i:14322;s:4:"ð“‹€";i:14323;s:4:"ð“‹";i:14324;s:4:"ð“‹‚";i:14325;s:4:"𓋃";i:14326;s:4:"ð“‹„";i:14327;s:4:"ð“‹…";i:14328;s:4:"𓋆";i:14329;s:4:"𓋇";i:14330;s:4:"𓋈";i:14331;s:4:"𓋉";i:14332;s:4:"ð“‹Š";i:14333;s:4:"ð“‹‹";i:14334;s:4:"ð“‹Œ";i:14335;s:4:"ð“‹";i:14336;s:4:"ð“‹Ž";i:14337;s:4:"ð“‹";i:14338;s:4:"ð“‹";i:14339;s:4:"ð“‹‘";i:14340;s:4:"ð“‹’";i:14341;s:4:"ð“‹“";i:14342;s:4:"ð“‹”";i:14343;s:4:"ð“‹•";i:14344;s:4:"ð“‹–";i:14345;s:4:"ð“‹—";i:14346;s:4:"𓋘";i:14347;s:4:"ð“‹™";i:14348;s:4:"ð“‹š";i:14349;s:4:"ð“‹›";i:14350;s:4:"ð“‹œ";i:14351;s:4:"ð“‹";i:14352;s:4:"ð“‹ž";i:14353;s:4:"ð“‹Ÿ";i:14354;s:4:"ð“‹ ";i:14355;s:4:"ð“‹¡";i:14356;s:4:"ð“‹¢";i:14357;s:4:"ð“‹£";i:14358;s:4:"𓋤";i:14359;s:4:"ð“‹¥";i:14360;s:4:"𓋦";i:14361;s:4:"𓋧";i:14362;s:4:"𓋨";i:14363;s:4:"ð“‹©";i:14364;s:4:"𓋪";i:14365;s:4:"ð“‹«";i:14366;s:4:"𓋬";i:14367;s:4:"ð“‹­";i:14368;s:4:"ð“‹®";i:14369;s:4:"𓋯";i:14370;s:4:"ð“‹°";i:14371;s:4:"ð“‹±";i:14372;s:4:"ð“‹²";i:14373;s:4:"ð“‹³";i:14374;s:4:"ð“‹´";i:14375;s:4:"ð“‹µ";i:14376;s:4:"𓋶";i:14377;s:4:"ð“‹·";i:14378;s:4:"𓋸";i:14379;s:4:"ð“‹¹";i:14380;s:4:"𓋺";i:14381;s:4:"ð“‹»";i:14382;s:4:"ð“‹¼";i:14383;s:4:"ð“‹½";i:14384;s:4:"ð“‹¾";i:14385;s:4:"ð“‹¿";i:14386;s:4:"𓌀";i:14387;s:4:"ð“Œ";i:14388;s:4:"𓌂";i:14389;s:4:"𓌃";i:14390;s:4:"𓌄";i:14391;s:4:"𓌅";i:14392;s:4:"𓌆";i:14393;s:4:"𓌇";i:14394;s:4:"𓌈";i:14395;s:4:"𓌉";i:14396;s:4:"𓌊";i:14397;s:4:"𓌋";i:14398;s:4:"𓌌";i:14399;s:4:"ð“Œ";i:14400;s:4:"𓌎";i:14401;s:4:"ð“Œ";i:14402;s:4:"ð“Œ";i:14403;s:4:"𓌑";i:14404;s:4:"𓌒";i:14405;s:4:"𓌓";i:14406;s:4:"𓌔";i:14407;s:4:"𓌕";i:14408;s:4:"𓌖";i:14409;s:4:"𓌗";i:14410;s:4:"𓌘";i:14411;s:4:"𓌙";i:14412;s:4:"𓌚";i:14413;s:4:"𓌛";i:14414;s:4:"𓌜";i:14415;s:4:"ð“Œ";i:14416;s:4:"𓌞";i:14417;s:4:"𓌟";i:14418;s:4:"𓌠";i:14419;s:4:"𓌡";i:14420;s:4:"𓌢";i:14421;s:4:"𓌣";i:14422;s:4:"𓌤";i:14423;s:4:"𓌥";i:14424;s:4:"𓌦";i:14425;s:4:"𓌧";i:14426;s:4:"𓌨";i:14427;s:4:"𓌩";i:14428;s:4:"𓌪";i:14429;s:4:"𓌫";i:14430;s:4:"𓌬";i:14431;s:4:"𓌭";i:14432;s:4:"𓌮";i:14433;s:4:"𓌯";i:14434;s:4:"𓌰";i:14435;s:4:"𓌱";i:14436;s:4:"𓌲";i:14437;s:4:"𓌳";i:14438;s:4:"𓌴";i:14439;s:4:"𓌵";i:14440;s:4:"𓌶";i:14441;s:4:"𓌷";i:14442;s:4:"𓌸";i:14443;s:4:"𓌹";i:14444;s:4:"𓌺";i:14445;s:4:"𓌻";i:14446;s:4:"𓌼";i:14447;s:4:"𓌽";i:14448;s:4:"𓌾";i:14449;s:4:"𓌿";i:14450;s:4:"ð“€";i:14451;s:4:"ð“";i:14452;s:4:"ð“‚";i:14453;s:4:"ð“ƒ";i:14454;s:4:"ð“„";i:14455;s:4:"ð“…";i:14456;s:4:"ð“†";i:14457;s:4:"ð“‡";i:14458;s:4:"ð“ˆ";i:14459;s:4:"ð“‰";i:14460;s:4:"ð“Š";i:14461;s:4:"ð“‹";i:14462;s:4:"ð“Œ";i:14463;s:4:"ð“";i:14464;s:4:"ð“Ž";i:14465;s:4:"ð“";i:14466;s:4:"ð“";i:14467;s:4:"ð“‘";i:14468;s:4:"ð“’";i:14469;s:4:"ð““";i:14470;s:4:"ð“”";i:14471;s:4:"ð“•";i:14472;s:4:"ð“–";i:14473;s:4:"ð“—";i:14474;s:4:"ð“˜";i:14475;s:4:"ð“™";i:14476;s:4:"ð“š";i:14477;s:4:"ð“›";i:14478;s:4:"ð“œ";i:14479;s:4:"ð“";i:14480;s:4:"ð“ž";i:14481;s:4:"ð“Ÿ";i:14482;s:4:"ð“ ";i:14483;s:4:"ð“¡";i:14484;s:4:"ð“¢";i:14485;s:4:"ð“£";i:14486;s:4:"ð“¤";i:14487;s:4:"ð“¥";i:14488;s:4:"ð“¦";i:14489;s:4:"ð“§";i:14490;s:4:"ð“¨";i:14491;s:4:"ð“©";i:14492;s:4:"ð“ª";i:14493;s:4:"ð“«";i:14494;s:4:"ð“¬";i:14495;s:4:"ð“­";i:14496;s:4:"ð“®";i:14497;s:4:"ð“¯";i:14498;s:4:"ð“°";i:14499;s:4:"ð“±";i:14500;s:4:"ð“²";i:14501;s:4:"ð“³";i:14502;s:4:"ð“´";i:14503;s:4:"ð“µ";i:14504;s:4:"ð“¶";i:14505;s:4:"ð“·";i:14506;s:4:"ð“¸";i:14507;s:4:"ð“¹";i:14508;s:4:"ð“º";i:14509;s:4:"ð“»";i:14510;s:4:"ð“¼";i:14511;s:4:"ð“½";i:14512;s:4:"ð“¾";i:14513;s:4:"ð“¿";i:14514;s:4:"ð“Ž€";i:14515;s:4:"ð“Ž";i:14516;s:4:"ð“Ž‚";i:14517;s:4:"𓎃";i:14518;s:4:"ð“Ž„";i:14519;s:4:"ð“Ž…";i:14520;s:4:"𓎆";i:14521;s:4:"𓎇";i:14522;s:4:"𓎈";i:14523;s:4:"𓎉";i:14524;s:4:"ð“ŽŠ";i:14525;s:4:"ð“Ž‹";i:14526;s:4:"ð“ŽŒ";i:14527;s:4:"ð“Ž";i:14528;s:4:"ð“ŽŽ";i:14529;s:4:"ð“Ž";i:14530;s:4:"ð“Ž";i:14531;s:4:"ð“Ž‘";i:14532;s:4:"ð“Ž’";i:14533;s:4:"ð“Ž“";i:14534;s:4:"ð“Ž”";i:14535;s:4:"ð“Ž•";i:14536;s:4:"ð“Ž–";i:14537;s:4:"ð“Ž—";i:14538;s:4:"𓎘";i:14539;s:4:"ð“Ž™";i:14540;s:4:"ð“Žš";i:14541;s:4:"ð“Ž›";i:14542;s:4:"ð“Žœ";i:14543;s:4:"ð“Ž";i:14544;s:4:"ð“Žž";i:14545;s:4:"ð“ŽŸ";i:14546;s:4:"ð“Ž ";i:14547;s:4:"ð“Ž¡";i:14548;s:4:"ð“Ž¢";i:14549;s:4:"ð“Ž£";i:14550;s:4:"𓎤";i:14551;s:4:"ð“Ž¥";i:14552;s:4:"𓎦";i:14553;s:4:"𓎧";i:14554;s:4:"𓎨";i:14555;s:4:"ð“Ž©";i:14556;s:4:"𓎪";i:14557;s:4:"ð“Ž«";i:14558;s:4:"𓎬";i:14559;s:4:"ð“Ž­";i:14560;s:4:"ð“Ž®";i:14561;s:4:"𓎯";i:14562;s:4:"ð“Ž°";i:14563;s:4:"𓎱";i:14564;s:4:"𓎲";i:14565;s:4:"𓎳";i:14566;s:4:"ð“Ž´";i:14567;s:4:"𓎵";i:14568;s:4:"𓎶";i:14569;s:4:"ð“Ž·";i:14570;s:4:"𓎸";i:14571;s:4:"𓎹";i:14572;s:4:"𓎺";i:14573;s:4:"ð“Ž»";i:14574;s:4:"𓎼";i:14575;s:4:"𓎽";i:14576;s:4:"𓎾";i:14577;s:4:"ð“Ž¿";i:14578;s:4:"ð“€";i:14579;s:4:"ð“";i:14580;s:4:"ð“‚";i:14581;s:4:"ð“ƒ";i:14582;s:4:"ð“„";i:14583;s:4:"ð“…";i:14584;s:4:"ð“†";i:14585;s:4:"ð“‡";i:14586;s:4:"ð“ˆ";i:14587;s:4:"ð“‰";i:14588;s:4:"ð“Š";i:14589;s:4:"ð“‹";i:14590;s:4:"ð“Œ";i:14591;s:4:"ð“";i:14592;s:4:"ð“Ž";i:14593;s:4:"ð“";i:14594;s:4:"ð“";i:14595;s:4:"ð“‘";i:14596;s:4:"ð“’";i:14597;s:4:"ð““";i:14598;s:4:"ð“”";i:14599;s:4:"ð“•";i:14600;s:4:"ð“–";i:14601;s:4:"ð“—";i:14602;s:4:"ð“˜";i:14603;s:4:"ð“™";i:14604;s:4:"ð“š";i:14605;s:4:"ð“›";i:14606;s:4:"ð“œ";i:14607;s:4:"ð“";i:14608;s:4:"ð“ž";i:14609;s:4:"ð“Ÿ";i:14610;s:4:"ð“ ";i:14611;s:4:"ð“¡";i:14612;s:4:"ð“¢";i:14613;s:4:"ð“£";i:14614;s:4:"ð“¤";i:14615;s:4:"ð“¥";i:14616;s:4:"ð“¦";i:14617;s:4:"ð“§";i:14618;s:4:"ð“¨";i:14619;s:4:"ð“©";i:14620;s:4:"ð“ª";i:14621;s:4:"ð“«";i:14622;s:4:"ð“¬";i:14623;s:4:"ð“­";i:14624;s:4:"ð“®";i:14625;s:4:"ð“¯";i:14626;s:4:"ð“°";i:14627;s:4:"ð“±";i:14628;s:4:"ð“²";i:14629;s:4:"ð“³";i:14630;s:4:"ð“´";i:14631;s:4:"ð“µ";i:14632;s:4:"ð“¶";i:14633;s:4:"ð“·";i:14634;s:4:"ð“¸";i:14635;s:4:"ð“¹";i:14636;s:4:"ð“º";i:14637;s:4:"ð“»";i:14638;s:4:"ð“¼";i:14639;s:4:"ð“½";i:14640;s:4:"ð“¾";i:14641;s:4:"ð“¿";i:14642;s:4:"ð“€";i:14643;s:4:"ð“";i:14644;s:4:"ð“‚";i:14645;s:4:"ð“ƒ";i:14646;s:4:"ð“„";i:14647;s:4:"ð“…";i:14648;s:4:"ð“†";i:14649;s:4:"ð“‡";i:14650;s:4:"ð“ˆ";i:14651;s:4:"ð“‰";i:14652;s:4:"ð“Š";i:14653;s:4:"ð“‹";i:14654;s:4:"ð“Œ";i:14655;s:4:"ð“";i:14656;s:4:"ð“Ž";i:14657;s:4:"ð“";i:14658;s:4:"ð“";i:14659;s:4:"ð“‘";i:14660;s:4:"ð“’";i:14661;s:4:"ð““";i:14662;s:4:"ð“”";i:14663;s:4:"ð“•";i:14664;s:4:"ð“–";i:14665;s:4:"ð“—";i:14666;s:4:"ð“˜";i:14667;s:4:"ð“™";i:14668;s:4:"ð“š";i:14669;s:4:"ð“›";i:14670;s:4:"ð“œ";i:14671;s:4:"ð“";i:14672;s:4:"ð“ž";i:14673;s:4:"ð“Ÿ";i:14674;s:4:"ð“ ";i:14675;s:4:"ð“¡";i:14676;s:4:"ð“¢";i:14677;s:4:"ð“£";i:14678;s:4:"ð“¤";i:14679;s:4:"ð“¥";i:14680;s:4:"ð“¦";i:14681;s:4:"ð“§";i:14682;s:4:"ð“¨";i:14683;s:4:"ð“©";i:14684;s:4:"ð“ª";i:14685;s:4:"ð“«";i:14686;s:4:"ð“¬";i:14687;s:4:"ð“­";i:14688;s:4:"ð“®";i:14689;s:3:"㆒";i:14690;s:3:"㆜";i:14691;s:3:"㆔";i:14692;s:3:"㆖";i:14693;s:3:"㆘";i:14694;s:3:"㆛";i:14695;s:3:"㆗";i:14696;s:3:"㆚";i:14697;s:3:"㆓";i:14698;s:4:"🈘";i:14699;s:3:"㆟";i:14700;s:4:"🈞";i:14701;s:4:"🈠";i:14702;s:4:"🈜";i:14703;s:4:"🈹";i:14704;s:4:"🈒";i:14705;s:4:"🉑";i:14706;s:4:"🈮";i:14707;s:4:"🈴";i:14708;s:4:"🈥";i:14709;s:4:"🈺";i:14710;s:3:"㆕";i:14711;s:3:"㆞";i:14712;s:4:"🈤";i:14713;s:4:"🈕";i:14714;s:3:"ã†";i:14715;s:4:"🈑";i:14716;s:4:"🈬";i:14717;s:4:"ðŸˆ";i:14718;s:4:"ðŸ‰";i:14719;s:4:"ðŸˆ";i:14720;s:4:"🈱";i:14721;s:4:"🈧";i:14722;s:4:"🈯";i:14723;s:4:"🈨";i:14724;s:4:"🈛";i:14725;s:4:"🈟";i:14726;s:4:"🈙";i:14727;s:4:"🈷";i:14728;s:4:"🈶";i:14729;s:4:"🈵";i:14730;s:4:"🈦";i:14731;s:4:"🈚";i:14732;s:4:"🈢";i:14733;s:3:"㆙";i:14734;s:4:"🈸";i:14735;s:4:"🈲";i:14736;s:4:"🈳";i:14737;s:4:"🈡";i:14738;s:4:"🈖";i:14739;s:4:"🈣";i:14740;s:4:"🈰";i:14741;s:4:"🈫";} \ No newline at end of file
+a:14743:{i:0;s:2:"Ù€";i:1;s:1:" ";i:2;s:1:"`";i:3;s:2:"´";i:4;s:2:"Ëœ";i:5;s:1:"^";i:6;s:2:"¯";i:7;s:3:"‾";i:8;s:2:"˘";i:9;s:2:"Ë™";i:10;s:2:"¨";i:11;s:2:"Ëš";i:12;s:2:"Ë";i:13;s:3:"á¾½";i:14;s:3:"á¿";i:15;s:2:"¸";i:16;s:2:"Ë›";i:17;s:1:"_";i:18;s:3:"‗";i:19;s:3:"á¿€";i:20;s:3:"﮲";i:21;s:3:"﮳";i:22;s:3:"ï®´";i:23;s:3:"﮵";i:24;s:3:"﮶";i:25;s:3:"ï®·";i:26;s:3:"﮸";i:27;s:3:"﮹";i:28;s:3:"﮺";i:29;s:3:"ï®»";i:30;s:3:"﮼";i:31;s:3:"﮽";i:32;s:3:"﮾";i:33;s:3:"﮿";i:34;s:3:"﯀";i:35;s:3:"ï¯";i:36;s:3:"ã‚›";i:37;s:3:"ã‚œ";i:38;s:1:"-";i:39;s:2:"ÖŠ";i:40;s:3:"á€";i:41;s:3:"á­ ";i:42;s:3:"á †";i:43;s:3:"á ‡";i:44;s:3:"â€";i:45;s:3:"‒";i:46;s:3:"–";i:47;s:3:"—";i:48;s:3:"―";i:49;s:3:"â“";i:50;s:3:"⸗";i:51;s:3:"ã‚ ";i:52;s:3:"・";i:53;s:1:",";i:54;s:2:"Õ";i:55;s:2:"ØŒ";i:56;s:2:"Ø";i:57;s:2:"Ù«";i:58;s:2:"Ù¬";i:59;s:2:"߸";i:60;s:3:"á ‚";i:61;s:3:"á ˆ";i:62;s:3:"꓾";i:63;s:3:"ê˜";i:64;s:3:"꛵";i:65;s:3:"︑";i:66;s:1:";";i:67;s:2:"Ø›";i:68;s:3:"â";i:69;s:3:"꛶";i:70;s:1:":";i:71;s:2:"Ö‰";i:72;s:2:"Øž";i:73;s:2:"܃";i:74;s:2:"Ü„";i:75;s:2:"Ü…";i:76;s:2:"܆";i:77;s:2:"܇";i:78;s:2:"܈";i:79;s:3:"à °";i:80;s:3:"à ±";i:81;s:3:"à ²";i:82;s:3:"à ³";i:83;s:3:"à ´";i:84;s:3:"à µ";i:85;s:3:"à ¶";i:86;s:3:"à ·";i:87;s:3:"à ¸";i:88;s:3:"à ¹";i:89;s:3:"à º";i:90;s:3:"à »";i:91;s:3:"à ¼";i:92;s:3:"à ½";i:93;s:3:"à ¾";i:94;s:3:"á¡";i:95;s:3:"á£";i:96;s:3:"á¤";i:97;s:3:"á¥";i:98;s:3:"á¦";i:99;s:3:"á „";i:100;s:3:"á …";i:101;s:3:"༔";i:102;s:3:"៖";i:103;s:3:"á­";i:104;s:3:"꧇";i:105;s:3:"᛫";i:106;s:3:"᛬";i:107;s:3:"á›­";i:108;s:3:"ê›´";i:109;s:1:"!";i:110;s:2:"¡";i:111;s:2:"Õœ";i:112;s:2:"ß¹";i:113;s:3:"᥄";i:114;s:1:"?";i:115;s:2:"¿";i:116;s:3:"⸮";i:117;s:2:"Õž";i:118;s:2:"ØŸ";i:119;s:2:"܉";i:120;s:3:"á§";i:121;s:3:"᥅";i:122;s:3:"⳺";i:123;s:3:"â³»";i:124;s:3:"ê˜";i:125;s:3:"ê›·";i:126;s:3:"‽";i:127;s:3:"⸘";i:128;s:1:".";i:129;s:3:"á ";i:130;s:2:"Û”";i:131;s:2:"Ü";i:132;s:2:"Ü‚";i:133;s:3:"á¢";i:134;s:3:"á ƒ";i:135;s:3:"á ‰";i:136;s:3:"á™®";i:137;s:3:"á­œ";i:138;s:3:"â³¹";i:139;s:3:"â³¾";i:140;s:3:"⸰";i:141;s:3:"ê“¿";i:142;s:3:"꘎";i:143;s:3:"꛳";i:144;s:3:"︒";i:145;s:2:"·";i:146;s:3:"⸱";i:147;s:3:"।";i:148;s:3:"॥";i:149;s:3:"꣎";i:150;s:3:"ê£";i:151;s:3:"á°»";i:152;s:3:"á°¼";i:153;s:3:"꡶";i:154;s:3:"ê¡·";i:155;s:3:"᜵";i:156;s:3:"᜶";i:157;s:3:"꤯";i:158;s:3:"áŠ";i:159;s:3:"á‹";i:160;s:3:"។";i:161;s:3:"៕";i:162;s:3:"᪨";i:163;s:3:"᪩";i:164;s:3:"᪪";i:165;s:3:"᪫";i:166;s:3:"á­ž";i:167;s:3:"á­Ÿ";i:168;s:3:"꧈";i:169;s:3:"꧉";i:170;s:3:"ê©";i:171;s:3:"ê©ž";i:172;s:3:"ê©Ÿ";i:173;s:3:"꯫";i:174;s:4:"ð©–";i:175;s:4:"ð©—";i:176;s:4:"ð‘‡";i:177;s:4:"ð‘ˆ";i:178;s:4:"𑃀";i:179;s:4:"ð‘ƒ";i:180;s:3:"á±¾";i:181;s:3:"᱿";i:182;s:2:"Ü€";i:183;s:2:"ß·";i:184;s:3:"჻";i:185;s:3:"á ";i:186;s:3:"á¨";i:187;s:3:"᨞";i:188;s:3:"᨟";i:189;s:3:"á­š";i:190;s:3:"á­›";i:191;s:3:"ê§";i:192;s:3:"꧂";i:193;s:3:"꧃";i:194;s:3:"꧄";i:195;s:3:"꧅";i:196;s:3:"꧆";i:197;s:3:"꧊";i:198;s:3:"꧋";i:199;s:3:"꧌";i:200;s:3:"ê§";i:201;s:3:"꛲";i:202;s:3:"꥟";i:203;s:4:"ð¡—";i:204;s:4:"ð¬º";i:205;s:4:"ð¬»";i:206;s:4:"ð¬¼";i:207;s:4:"ð¬½";i:208;s:4:"ð¬¾";i:209;s:4:"ð¬¿";i:210;s:4:"ð‘‚¾";i:211;s:4:"ð‘‚¿";i:212;s:3:"â•";i:213;s:3:"â–";i:214;s:3:"â˜";i:215;s:3:"â™";i:216;s:3:"âš";i:217;s:3:"â›";i:218;s:3:"âœ";i:219;s:3:"â";i:220;s:3:"âž";i:221;s:3:"⸪";i:222;s:3:"⸫";i:223;s:3:"⸬";i:224;s:3:"⸭";i:225;s:3:"â³¼";i:226;s:3:"⳿";i:227;s:3:"⸙";i:228;s:4:"ð¤¿";i:229;s:4:"ð„€";i:230;s:4:"ð„";i:231;s:4:"ð„‚";i:232;s:4:"ðŽŸ";i:233;s:4:"ð";i:234;s:4:"ð¤Ÿ";i:235;s:4:"ð’‘°";i:236;s:4:"ð’‘±";i:237;s:4:"ð’‘²";i:238;s:4:"ð’‘³";i:239;s:1:"'";i:240;s:3:"‘";i:241;s:3:"’";i:242;s:3:"‚";i:243;s:3:"‛";i:244;s:3:"‹";i:245;s:3:"›";i:246;s:1:""";i:247;s:3:"“";i:248;s:3:"â€";i:249;s:3:"„";i:250;s:3:"‟";i:251;s:2:"«";i:252;s:2:"»";i:253;s:1:"(";i:254;s:1:")";i:255;s:1:"[";i:256;s:1:"]";i:257;s:1:"{";i:258;s:1:"}";i:259;s:3:"༺";i:260;s:3:"༻";i:261;s:3:"༼";i:262;s:3:"༽";i:263;s:3:"áš›";i:264;s:3:"ášœ";i:265;s:3:"â…";i:266;s:3:"â†";i:267;s:3:"⧼";i:268;s:3:"⧽";i:269;s:3:"⦃";i:270;s:3:"⦄";i:271;s:3:"⦅";i:272;s:3:"⦆";i:273;s:3:"⦇";i:274;s:3:"⦈";i:275;s:3:"⦉";i:276;s:3:"⦊";i:277;s:3:"⦋";i:278;s:3:"⦌";i:279;s:3:"â¦";i:280;s:3:"⦎";i:281;s:3:"â¦";i:282;s:3:"â¦";i:283;s:3:"⦑";i:284;s:3:"⦒";i:285;s:3:"⦓";i:286;s:3:"⦔";i:287;s:3:"⦕";i:288;s:3:"⦖";i:289;s:3:"⦗";i:290;s:3:"⦘";i:291;s:3:"⟬";i:292;s:3:"⟭";i:293;s:3:"⟮";i:294;s:3:"⟯";i:295;s:3:"⸂";i:296;s:3:"⸃";i:297;s:3:"⸄";i:298;s:3:"⸅";i:299;s:3:"⸉";i:300;s:3:"⸊";i:301;s:3:"⸌";i:302;s:3:"â¸";i:303;s:3:"⸜";i:304;s:3:"â¸";i:305;s:3:"⸠";i:306;s:3:"⸡";i:307;s:3:"⸢";i:308;s:3:"⸣";i:309;s:3:"⸤";i:310;s:3:"⸥";i:311;s:3:"⸦";i:312;s:3:"⸧";i:313;s:3:"⸨";i:314;s:3:"⸩";i:315;s:3:"〈";i:316;s:3:"〉";i:317;s:3:"ï½¢";i:318;s:3:"ï½£";i:319;s:3:"ï¹";i:320;s:3:"﹞";i:321;s:3:"︗";i:322;s:3:"︘";i:323;s:3:"ï´¾";i:324;s:3:"ï´¿";i:325;s:2:"§";i:326;s:2:"¶";i:327;s:3:"â‹";i:328;s:2:"©";i:329;s:2:"®";i:330;s:1:"@";i:331;s:1:"*";i:332;s:3:"âŽ";i:333;s:3:"â‘";i:334;s:2:"Ù­";i:335;s:3:"꙳";i:336;s:1:"/";i:337;s:3:"â„";i:338;s:1:"\";i:339;s:1:"&";i:340;s:3:"â…‹";i:341;s:3:"âŠ";i:342;s:1:"#";i:343;s:1:"%";i:344;s:2:"Ùª";i:345;s:3:"‰";i:346;s:2:"؉";i:347;s:3:"‱";i:348;s:2:"ØŠ";i:349;s:3:"â’";i:350;s:3:"†";i:351;s:3:"‡";i:352;s:3:"•";i:353;s:3:"‣";i:354;s:3:"‧";i:355;s:3:"âƒ";i:356;s:3:"âŒ";i:357;s:3:"â";i:358;s:3:"′";i:359;s:3:"‵";i:360;s:3:"‸";i:361;s:3:"※";i:362;s:3:"‿";i:363;s:3:"â”";i:364;s:3:"â€";i:365;s:3:"â";i:366;s:3:"â";i:367;s:3:"â‚";i:368;s:3:"⸀";i:369;s:3:"â¸";i:370;s:3:"⸆";i:371;s:3:"⸇";i:372;s:3:"⸈";i:373;s:3:"⸋";i:374;s:3:"⸎";i:375;s:3:"â¸";i:376;s:3:"â¸";i:377;s:3:"⸑";i:378;s:3:"⸒";i:379;s:3:"⸓";i:380;s:3:"⸔";i:381;s:3:"⸕";i:382;s:3:"⸖";i:383;s:3:"⸚";i:384;s:3:"⸛";i:385;s:3:"⸞";i:386;s:3:"⸟";i:387;s:3:"꙾";i:388;s:2:"Õš";i:389;s:2:"Õ›";i:390;s:2:"ÕŸ";i:391;s:2:"Ö¾";i:392;s:2:"×€";i:393;s:2:"׃";i:394;s:2:"׆";i:395;s:2:"׳";i:396;s:2:"×´";i:397;s:2:"ÜŠ";i:398;s:2:"Ü‹";i:399;s:2:"ÜŒ";i:400;s:2:"Ü";i:401;s:3:"à¡ž";i:402;s:3:"á €";i:403;s:3:"॰";i:404;s:3:"꣸";i:405;s:3:"꣹";i:406;s:3:"꣺";i:407;s:3:"à·´";i:408;s:3:"๚";i:409;s:3:"๛";i:410;s:3:"ê«ž";i:411;s:3:"ê«Ÿ";i:412;s:3:"༄";i:413;s:3:"༅";i:414;s:3:"༆";i:415;s:3:"༇";i:416;s:3:"༈";i:417;s:3:"༉";i:418;s:3:"༊";i:419;s:3:"à¿";i:420;s:3:"à¿‘";i:421;s:3:"་";i:422;s:3:"à¼";i:423;s:3:"༎";i:424;s:3:"à¼";i:425;s:3:"à¼";i:426;s:3:"༑";i:427;s:3:"༒";i:428;s:3:"྅";i:429;s:3:"à¿’";i:430;s:3:"à¿“";i:431;s:3:"à¿”";i:432;s:3:"à¿™";i:433;s:3:"à¿š";i:434;s:3:"á°½";i:435;s:3:"á°¾";i:436;s:3:"á°¿";i:437;s:3:"᥀";i:438;s:3:"áŒ";i:439;s:3:"á";i:440;s:3:"áŽ";i:441;s:3:"á";i:442;s:3:"á‚ž";i:443;s:3:"á‚Ÿ";i:444;s:3:"ê©·";i:445;s:3:"꩸";i:446;s:3:"꩹";i:447;s:3:"ៗ";i:448;s:3:"៘";i:449;s:3:"៙";i:450;s:3:"៚";i:451;s:3:"᪠";i:452;s:3:"᪡";i:453;s:3:"᪢";i:454;s:3:"᪣";i:455;s:3:"᪤";i:456;s:3:"᪥";i:457;s:3:"᪦";i:458;s:3:"᪬";i:459;s:3:"᪭";i:460;s:3:"á™­";i:461;s:3:"âµ°";i:462;s:3:"ê¡´";i:463;s:3:"꡵";i:464;s:3:"᯼";i:465;s:3:"᯽";i:466;s:3:"᯾";i:467;s:3:"᯿";i:468;s:3:"꤮";i:469;s:3:"꧞";i:470;s:3:"꧟";i:471;s:3:"ê©œ";i:472;s:4:"ð‘‰";i:473;s:4:"ð‘Š";i:474;s:4:"ð‘‹";i:475;s:4:"ð‘Œ";i:476;s:4:"ð‘";i:477;s:4:"ð©";i:478;s:4:"ð©‘";i:479;s:4:"ð©’";i:480;s:4:"ð©“";i:481;s:4:"ð©”";i:482;s:4:"ð©•";i:483;s:4:"ð©˜";i:484;s:4:"ð¬¹";i:485;s:4:"ð‘‚»";i:486;s:4:"ð‘‚¼";i:487;s:2:"ʹ";i:488;s:2:"͵";i:489;s:2:"ʺ";i:490;s:2:"Ë‚";i:491;s:2:"˃";i:492;s:2:"Ë„";i:493;s:2:"Ë…";i:494;s:2:"ˆ";i:495;s:2:"ˇ";i:496;s:2:"ˈ";i:497;s:2:"ˉ";i:498;s:2:"ËŠ";i:499;s:2:"Ë‹";i:500;s:2:"ËŒ";i:501;s:2:"Ë";i:502;s:2:"ËŽ";i:503;s:2:"Ë";i:504;s:2:"Ë’";i:505;s:2:"Ë“";i:506;s:2:"Ë”";i:507;s:2:"Ë•";i:508;s:2:"Ë–";i:509;s:2:"Ë—";i:510;s:2:"Ëž";i:511;s:2:"ËŸ";i:512;s:2:"Ë¥";i:513;s:2:"˦";i:514;s:2:"˧";i:515;s:2:"˨";i:516;s:2:"Ë©";i:517;s:2:"˪";i:518;s:2:"Ë«";i:519;s:2:"ˬ";i:520;s:2:"Ë­";i:521;s:2:"˯";i:522;s:2:"Ë°";i:523;s:2:"˱";i:524;s:2:"˲";i:525;s:2:"˳";i:526;s:2:"Ë´";i:527;s:2:"˵";i:528;s:2:"˶";i:529;s:2:"Ë·";i:530;s:2:"˸";i:531;s:2:"˹";i:532;s:2:"˺";i:533;s:2:"Ë»";i:534;s:2:"˼";i:535;s:2:"˽";i:536;s:2:"˾";i:537;s:2:"Ë¿";i:538;s:3:"áŽ";i:539;s:3:"᎑";i:540;s:3:"᎒";i:541;s:3:"᎓";i:542;s:3:"᎔";i:543;s:3:"᎕";i:544;s:3:"᎖";i:545;s:3:"᎗";i:546;s:3:"᎘";i:547;s:3:"᎙";i:548;s:3:"꜀";i:549;s:3:"êœ";i:550;s:3:"꜂";i:551;s:3:"꜃";i:552;s:3:"꜄";i:553;s:3:"꜅";i:554;s:3:"꜆";i:555;s:3:"꜇";i:556;s:3:"꜈";i:557;s:3:"꜉";i:558;s:3:"꜊";i:559;s:3:"꜋";i:560;s:3:"꜌";i:561;s:3:"êœ";i:562;s:3:"꜎";i:563;s:3:"êœ";i:564;s:3:"êœ";i:565;s:3:"꜑";i:566;s:3:"꜒";i:567;s:3:"꜓";i:568;s:3:"꜔";i:569;s:3:"꜕";i:570;s:3:"꜖";i:571;s:3:"ꜗ";i:572;s:3:"ꜘ";i:573;s:3:"ꜙ";i:574;s:3:"ꜚ";i:575;s:3:"ꜛ";i:576;s:3:"ꜜ";i:577;s:3:"êœ";i:578;s:3:"ꜞ";i:579;s:3:"ꜟ";i:580;s:3:"꜠";i:581;s:3:"꜡";i:582;s:3:"ꞈ";i:583;s:3:"꞉";i:584;s:3:"꞊";i:585;s:2:"°";i:586;s:2:"Ò‚";i:587;s:2:"؈";i:588;s:2:"ØŽ";i:589;s:2:"Ø";i:590;s:2:"Ûž";i:591;s:2:"Û©";i:592;s:3:"ï·½";i:593;s:2:"߶";i:594;s:3:"৺";i:595;s:3:"à­°";i:596;s:3:"௳";i:597;s:3:"௴";i:598;s:3:"௵";i:599;s:3:"௶";i:600;s:3:"௷";i:601;s:3:"௸";i:602;s:3:"௺";i:603;s:3:"౿";i:604;s:3:"൹";i:605;s:3:"ê ¨";i:606;s:3:"ê ©";i:607;s:3:"ê ª";i:608;s:3:"ê «";i:609;s:3:"ê ¶";i:610;s:3:"ê ·";i:611;s:3:"ê ¹";i:612;s:3:"à¹";i:613;s:3:"à¼";i:614;s:3:"༂";i:615;s:3:"༃";i:616;s:3:"༓";i:617;s:3:"༕";i:618;s:3:"༖";i:619;s:3:"༗";i:620;s:3:"༚";i:621;s:3:"༛";i:622;s:3:"༜";i:623;s:3:"à¼";i:624;s:3:"༞";i:625;s:3:"༟";i:626;s:3:"༴";i:627;s:3:"༶";i:628;s:3:"༸";i:629;s:3:"྾";i:630;s:3:"྿";i:631;s:3:"à¿€";i:632;s:3:"à¿";i:633;s:3:"à¿‚";i:634;s:3:"࿃";i:635;s:3:"à¿„";i:636;s:3:"à¿…";i:637;s:3:"࿇";i:638;s:3:"࿈";i:639;s:3:"࿉";i:640;s:3:"à¿Š";i:641;s:3:"à¿‹";i:642;s:3:"à¿Œ";i:643;s:3:"à¿Ž";i:644;s:3:"à¿";i:645;s:3:"à¿•";i:646;s:3:"à¿–";i:647;s:3:"à¿—";i:648;s:3:"࿘";i:649;s:3:"᧠";i:650;s:3:"᧡";i:651;s:3:"᧢";i:652;s:3:"᧣";i:653;s:3:"᧤";i:654;s:3:"᧥";i:655;s:3:"᧦";i:656;s:3:"᧧";i:657;s:3:"᧨";i:658;s:3:"᧩";i:659;s:3:"᧪";i:660;s:3:"᧫";i:661;s:3:"᧬";i:662;s:3:"᧭";i:663;s:3:"᧮";i:664;s:3:"᧯";i:665;s:3:"᧰";i:666;s:3:"᧱";i:667;s:3:"᧲";i:668;s:3:"᧳";i:669;s:3:"᧴";i:670;s:3:"᧵";i:671;s:3:"᧶";i:672;s:3:"᧷";i:673;s:3:"᧸";i:674;s:3:"᧹";i:675;s:3:"᧺";i:676;s:3:"᧻";i:677;s:3:"᧼";i:678;s:3:"᧽";i:679;s:3:"᧾";i:680;s:3:"᧿";i:681;s:3:"á­¡";i:682;s:3:"á­¢";i:683;s:3:"á­£";i:684;s:3:"á­¤";i:685;s:3:"á­¥";i:686;s:3:"á­¦";i:687;s:3:"á­§";i:688;s:3:"á­¨";i:689;s:3:"á­©";i:690;s:3:"á­ª";i:691;s:3:"á­´";i:692;s:3:"á­µ";i:693;s:3:"á­¶";i:694;s:3:"á­·";i:695;s:3:"á­¸";i:696;s:3:"á­¹";i:697;s:3:"á­º";i:698;s:3:"á­»";i:699;s:3:"á­¼";i:700;s:3:"â„„";i:701;s:3:"℈";i:702;s:3:"â„”";i:703;s:3:"â„—";i:704;s:3:"℘";i:705;s:3:"â„ž";i:706;s:3:"â„Ÿ";i:707;s:3:"â„£";i:708;s:3:"â„¥";i:709;s:3:"℧";i:710;s:3:"â„©";i:711;s:3:"â„®";i:712;s:3:"℺";i:713;s:3:"â…";i:714;s:3:"â…‚";i:715;s:3:"â…ƒ";i:716;s:3:"â…„";i:717;s:3:"â…Š";i:718;s:3:"â…Œ";i:719;s:3:"â…";i:720;s:3:"â…";i:721;s:3:"â†";i:722;s:3:"→";i:723;s:3:"↑";i:724;s:3:"↓";i:725;s:3:"↔";i:726;s:3:"↕";i:727;s:3:"↖";i:728;s:3:"↗";i:729;s:3:"↘";i:730;s:3:"↙";i:731;s:3:"↜";i:732;s:3:"â†";i:733;s:3:"↞";i:734;s:3:"↟";i:735;s:3:"↠";i:736;s:3:"↡";i:737;s:3:"↢";i:738;s:3:"↣";i:739;s:3:"↤";i:740;s:3:"↥";i:741;s:3:"↦";i:742;s:3:"↧";i:743;s:3:"↨";i:744;s:3:"↩";i:745;s:3:"↪";i:746;s:3:"↫";i:747;s:3:"↬";i:748;s:3:"↭";i:749;s:3:"↯";i:750;s:3:"↰";i:751;s:3:"↱";i:752;s:3:"↲";i:753;s:3:"↳";i:754;s:3:"↴";i:755;s:3:"↵";i:756;s:3:"↶";i:757;s:3:"↷";i:758;s:3:"↸";i:759;s:3:"↹";i:760;s:3:"↺";i:761;s:3:"↻";i:762;s:3:"↼";i:763;s:3:"↽";i:764;s:3:"↾";i:765;s:3:"↿";i:766;s:3:"⇀";i:767;s:3:"â‡";i:768;s:3:"⇂";i:769;s:3:"⇃";i:770;s:3:"⇄";i:771;s:3:"⇅";i:772;s:3:"⇆";i:773;s:3:"⇇";i:774;s:3:"⇈";i:775;s:3:"⇉";i:776;s:3:"⇊";i:777;s:3:"⇋";i:778;s:3:"⇌";i:779;s:3:"â‡";i:780;s:3:"⇑";i:781;s:3:"⇒";i:782;s:3:"⇓";i:783;s:3:"⇔";i:784;s:3:"⇕";i:785;s:3:"⇖";i:786;s:3:"⇗";i:787;s:3:"⇘";i:788;s:3:"⇙";i:789;s:3:"⇚";i:790;s:3:"⇛";i:791;s:3:"⇜";i:792;s:3:"â‡";i:793;s:3:"⇞";i:794;s:3:"⇟";i:795;s:3:"⇠";i:796;s:3:"⇡";i:797;s:3:"⇢";i:798;s:3:"⇣";i:799;s:3:"⇤";i:800;s:3:"⇥";i:801;s:3:"⇦";i:802;s:3:"⇧";i:803;s:3:"⇨";i:804;s:3:"⇩";i:805;s:3:"⇪";i:806;s:3:"⇫";i:807;s:3:"⇬";i:808;s:3:"⇭";i:809;s:3:"⇮";i:810;s:3:"⇯";i:811;s:3:"⇰";i:812;s:3:"⇱";i:813;s:3:"⇲";i:814;s:3:"⇳";i:815;s:3:"⇴";i:816;s:3:"⇵";i:817;s:3:"⇶";i:818;s:3:"⇷";i:819;s:3:"⇸";i:820;s:3:"⇹";i:821;s:3:"⇺";i:822;s:3:"⇻";i:823;s:3:"⇼";i:824;s:3:"⇽";i:825;s:3:"⇾";i:826;s:3:"⇿";i:827;s:3:"∀";i:828;s:3:"âˆ";i:829;s:3:"∂";i:830;s:3:"∃";i:831;s:3:"∅";i:832;s:3:"∆";i:833;s:3:"∇";i:834;s:3:"∈";i:835;s:3:"∊";i:836;s:3:"∋";i:837;s:3:"âˆ";i:838;s:2:"϶";i:839;s:3:"∎";i:840;s:3:"âˆ";i:841;s:3:"âˆ";i:842;s:3:"∑";i:843;s:1:"+";i:844;s:2:"±";i:845;s:2:"÷";i:846;s:2:"×";i:847;s:1:"<";i:848;s:1:"=";i:849;s:1:">";i:850;s:2:"¬";i:851;s:1:"|";i:852;s:2:"¦";i:853;s:3:"‖";i:854;s:1:"~";i:855;s:3:"−";i:856;s:3:"∓";i:857;s:3:"∔";i:858;s:3:"∕";i:859;s:3:"∖";i:860;s:3:"∗";i:861;s:3:"∘";i:862;s:3:"∙";i:863;s:3:"√";i:864;s:3:"∛";i:865;s:2:"؆";i:866;s:3:"∜";i:867;s:2:"؇";i:868;s:3:"âˆ";i:869;s:3:"∞";i:870;s:3:"∟";i:871;s:3:"∠";i:872;s:3:"∡";i:873;s:3:"∢";i:874;s:3:"∣";i:875;s:3:"∥";i:876;s:3:"∧";i:877;s:3:"∨";i:878;s:3:"∩";i:879;s:3:"∪";i:880;s:3:"∫";i:881;s:3:"∮";i:882;s:3:"∱";i:883;s:3:"∲";i:884;s:3:"∳";i:885;s:3:"∴";i:886;s:3:"∵";i:887;s:3:"∶";i:888;s:3:"∷";i:889;s:3:"∸";i:890;s:3:"∹";i:891;s:3:"∺";i:892;s:3:"∻";i:893;s:3:"∼";i:894;s:3:"∽";i:895;s:3:"∾";i:896;s:3:"∿";i:897;s:3:"≀";i:898;s:3:"≂";i:899;s:3:"≃";i:900;s:3:"≅";i:901;s:3:"≆";i:902;s:3:"≈";i:903;s:3:"≊";i:904;s:3:"≋";i:905;s:3:"≌";i:906;s:3:"â‰";i:907;s:3:"≎";i:908;s:3:"â‰";i:909;s:3:"â‰";i:910;s:3:"≑";i:911;s:3:"≒";i:912;s:3:"≓";i:913;s:3:"≔";i:914;s:3:"≕";i:915;s:3:"≖";i:916;s:3:"≗";i:917;s:3:"≘";i:918;s:3:"≙";i:919;s:3:"≚";i:920;s:3:"≛";i:921;s:3:"≜";i:922;s:3:"â‰";i:923;s:3:"≞";i:924;s:3:"≟";i:925;s:3:"≡";i:926;s:3:"≣";i:927;s:3:"≤";i:928;s:3:"≥";i:929;s:3:"≦";i:930;s:3:"≧";i:931;s:3:"≨";i:932;s:3:"≩";i:933;s:3:"≪";i:934;s:3:"≫";i:935;s:3:"≬";i:936;s:3:"≲";i:937;s:3:"≳";i:938;s:3:"≶";i:939;s:3:"≷";i:940;s:3:"≺";i:941;s:3:"≻";i:942;s:3:"≼";i:943;s:3:"≽";i:944;s:3:"≾";i:945;s:3:"≿";i:946;s:3:"⊂";i:947;s:3:"⊃";i:948;s:3:"⊆";i:949;s:3:"⊇";i:950;s:3:"⊊";i:951;s:3:"⊋";i:952;s:3:"⊌";i:953;s:3:"âŠ";i:954;s:3:"⊎";i:955;s:3:"âŠ";i:956;s:3:"âŠ";i:957;s:3:"⊑";i:958;s:3:"⊒";i:959;s:3:"⊓";i:960;s:3:"⊔";i:961;s:3:"⊕";i:962;s:3:"⊖";i:963;s:3:"⊗";i:964;s:3:"⊘";i:965;s:3:"⊙";i:966;s:3:"⊚";i:967;s:3:"⊛";i:968;s:3:"⊜";i:969;s:3:"âŠ";i:970;s:3:"⊞";i:971;s:3:"⊟";i:972;s:3:"⊠";i:973;s:3:"⊡";i:974;s:3:"⊢";i:975;s:3:"⊣";i:976;s:3:"⊤";i:977;s:3:"⊥";i:978;s:3:"⊦";i:979;s:3:"⊧";i:980;s:3:"⊨";i:981;s:3:"⊩";i:982;s:3:"⊪";i:983;s:3:"⊫";i:984;s:3:"⊰";i:985;s:3:"⊱";i:986;s:3:"⊲";i:987;s:3:"⊳";i:988;s:3:"⊴";i:989;s:3:"⊵";i:990;s:3:"⊶";i:991;s:3:"⊷";i:992;s:3:"⊸";i:993;s:3:"⊹";i:994;s:3:"⊺";i:995;s:3:"⊻";i:996;s:3:"⊼";i:997;s:3:"⊽";i:998;s:3:"⊾";i:999;s:3:"⊿";i:1000;s:3:"â‹€";i:1001;s:3:"â‹";i:1002;s:3:"â‹‚";i:1003;s:3:"⋃";i:1004;s:3:"â‹„";i:1005;s:3:"â‹…";i:1006;s:3:"⋆";i:1007;s:3:"⋇";i:1008;s:3:"⋈";i:1009;s:3:"⋉";i:1010;s:3:"â‹Š";i:1011;s:3:"â‹‹";i:1012;s:3:"â‹Œ";i:1013;s:3:"â‹";i:1014;s:3:"â‹Ž";i:1015;s:3:"â‹";i:1016;s:3:"â‹";i:1017;s:3:"â‹‘";i:1018;s:3:"â‹’";i:1019;s:3:"â‹“";i:1020;s:3:"â‹”";i:1021;s:3:"â‹•";i:1022;s:3:"â‹–";i:1023;s:3:"â‹—";i:1024;s:3:"⋘";i:1025;s:3:"â‹™";i:1026;s:3:"â‹š";i:1027;s:3:"â‹›";i:1028;s:3:"â‹œ";i:1029;s:3:"â‹";i:1030;s:3:"â‹ž";i:1031;s:3:"â‹Ÿ";i:1032;s:3:"⋤";i:1033;s:3:"â‹¥";i:1034;s:3:"⋦";i:1035;s:3:"⋧";i:1036;s:3:"⋨";i:1037;s:3:"â‹©";i:1038;s:3:"â‹®";i:1039;s:3:"⋯";i:1040;s:3:"â‹°";i:1041;s:3:"⋱";i:1042;s:3:"⋲";i:1043;s:3:"⋳";i:1044;s:3:"â‹´";i:1045;s:3:"⋵";i:1046;s:3:"⋶";i:1047;s:3:"â‹·";i:1048;s:3:"⋸";i:1049;s:3:"⋹";i:1050;s:3:"⋺";i:1051;s:3:"â‹»";i:1052;s:3:"⋼";i:1053;s:3:"⋽";i:1054;s:3:"⋾";i:1055;s:3:"â‹¿";i:1056;s:3:"⌀";i:1057;s:3:"âŒ";i:1058;s:3:"⌂";i:1059;s:3:"⌃";i:1060;s:3:"⌄";i:1061;s:3:"⌅";i:1062;s:3:"⌆";i:1063;s:3:"⌇";i:1064;s:3:"⌈";i:1065;s:3:"⌉";i:1066;s:3:"⌊";i:1067;s:3:"⌋";i:1068;s:3:"⌌";i:1069;s:3:"âŒ";i:1070;s:3:"⌎";i:1071;s:3:"âŒ";i:1072;s:3:"âŒ";i:1073;s:3:"⌑";i:1074;s:3:"⌒";i:1075;s:3:"⌓";i:1076;s:3:"⌔";i:1077;s:3:"⌕";i:1078;s:3:"⌖";i:1079;s:3:"⌗";i:1080;s:3:"⌘";i:1081;s:3:"⌙";i:1082;s:3:"⌚";i:1083;s:3:"⌛";i:1084;s:3:"⌜";i:1085;s:3:"âŒ";i:1086;s:3:"⌞";i:1087;s:3:"⌟";i:1088;s:3:"⌠";i:1089;s:3:"⌡";i:1090;s:3:"⌢";i:1091;s:3:"⌣";i:1092;s:3:"⌤";i:1093;s:3:"⌥";i:1094;s:3:"⌦";i:1095;s:3:"⌧";i:1096;s:3:"⌨";i:1097;s:3:"⌫";i:1098;s:3:"⌬";i:1099;s:3:"⌭";i:1100;s:3:"⌮";i:1101;s:3:"⌯";i:1102;s:3:"⌰";i:1103;s:3:"⌱";i:1104;s:3:"⌲";i:1105;s:3:"⌳";i:1106;s:3:"⌴";i:1107;s:3:"⌵";i:1108;s:3:"⌶";i:1109;s:3:"⌷";i:1110;s:3:"⌸";i:1111;s:3:"⌹";i:1112;s:3:"⌺";i:1113;s:3:"⌻";i:1114;s:3:"⌼";i:1115;s:3:"⌽";i:1116;s:3:"⌾";i:1117;s:3:"⌿";i:1118;s:3:"â€";i:1119;s:3:"â";i:1120;s:3:"â‚";i:1121;s:3:"âƒ";i:1122;s:3:"â„";i:1123;s:3:"â…";i:1124;s:3:"â†";i:1125;s:3:"â‡";i:1126;s:3:"âˆ";i:1127;s:3:"â‰";i:1128;s:3:"âŠ";i:1129;s:3:"â‹";i:1130;s:3:"âŒ";i:1131;s:3:"â";i:1132;s:3:"âŽ";i:1133;s:3:"â";i:1134;s:3:"â";i:1135;s:3:"â‘";i:1136;s:3:"â’";i:1137;s:3:"â“";i:1138;s:3:"â”";i:1139;s:3:"â•";i:1140;s:3:"â–";i:1141;s:3:"â—";i:1142;s:3:"â˜";i:1143;s:3:"â™";i:1144;s:3:"âš";i:1145;s:3:"â›";i:1146;s:3:"âœ";i:1147;s:3:"â";i:1148;s:3:"âž";i:1149;s:3:"âŸ";i:1150;s:3:"â ";i:1151;s:3:"â¡";i:1152;s:3:"â¢";i:1153;s:3:"â£";i:1154;s:3:"â¤";i:1155;s:3:"â¥";i:1156;s:3:"â¦";i:1157;s:3:"â§";i:1158;s:3:"â¨";i:1159;s:3:"â©";i:1160;s:3:"âª";i:1161;s:3:"â«";i:1162;s:3:"â¬";i:1163;s:3:"â­";i:1164;s:3:"â®";i:1165;s:3:"â¯";i:1166;s:3:"â°";i:1167;s:3:"â±";i:1168;s:3:"â²";i:1169;s:3:"â³";i:1170;s:3:"â´";i:1171;s:3:"âµ";i:1172;s:3:"â¶";i:1173;s:3:"â·";i:1174;s:3:"â¸";i:1175;s:3:"â¹";i:1176;s:3:"âº";i:1177;s:3:"â»";i:1178;s:3:"â¼";i:1179;s:3:"â½";i:1180;s:3:"â¾";i:1181;s:3:"â¿";i:1182;s:3:"⎀";i:1183;s:3:"âŽ";i:1184;s:3:"⎂";i:1185;s:3:"⎃";i:1186;s:3:"⎄";i:1187;s:3:"⎅";i:1188;s:3:"⎆";i:1189;s:3:"⎇";i:1190;s:3:"⎈";i:1191;s:3:"⎉";i:1192;s:3:"⎊";i:1193;s:3:"⎋";i:1194;s:3:"⎌";i:1195;s:3:"âŽ";i:1196;s:3:"⎎";i:1197;s:3:"âŽ";i:1198;s:3:"âŽ";i:1199;s:3:"⎑";i:1200;s:3:"⎒";i:1201;s:3:"⎓";i:1202;s:3:"⎔";i:1203;s:3:"⎕";i:1204;s:3:"⎖";i:1205;s:3:"⎗";i:1206;s:3:"⎘";i:1207;s:3:"⎙";i:1208;s:3:"⎚";i:1209;s:3:"⎛";i:1210;s:3:"⎜";i:1211;s:3:"âŽ";i:1212;s:3:"⎞";i:1213;s:3:"⎟";i:1214;s:3:"⎠";i:1215;s:3:"⎡";i:1216;s:3:"⎢";i:1217;s:3:"⎣";i:1218;s:3:"⎤";i:1219;s:3:"⎥";i:1220;s:3:"⎦";i:1221;s:3:"⎧";i:1222;s:3:"⎨";i:1223;s:3:"⎩";i:1224;s:3:"⎪";i:1225;s:3:"⎫";i:1226;s:3:"⎬";i:1227;s:3:"⎭";i:1228;s:3:"⎮";i:1229;s:3:"⎯";i:1230;s:3:"⎰";i:1231;s:3:"⎱";i:1232;s:3:"⎲";i:1233;s:3:"⎳";i:1234;s:3:"⎴";i:1235;s:3:"⎵";i:1236;s:3:"⎶";i:1237;s:3:"⎷";i:1238;s:3:"⎸";i:1239;s:3:"⎹";i:1240;s:3:"⎺";i:1241;s:3:"⎻";i:1242;s:3:"⎼";i:1243;s:3:"⎽";i:1244;s:3:"⎾";i:1245;s:3:"⎿";i:1246;s:3:"â€";i:1247;s:3:"â";i:1248;s:3:"â‚";i:1249;s:3:"âƒ";i:1250;s:3:"â„";i:1251;s:3:"â…";i:1252;s:3:"â†";i:1253;s:3:"â‡";i:1254;s:3:"âˆ";i:1255;s:3:"â‰";i:1256;s:3:"âŠ";i:1257;s:3:"â‹";i:1258;s:3:"âŒ";i:1259;s:3:"â";i:1260;s:3:"âŽ";i:1261;s:3:"â";i:1262;s:3:"â";i:1263;s:3:"â‘";i:1264;s:3:"â’";i:1265;s:3:"â“";i:1266;s:3:"â”";i:1267;s:3:"â•";i:1268;s:3:"â–";i:1269;s:3:"â—";i:1270;s:3:"â˜";i:1271;s:3:"â™";i:1272;s:3:"âš";i:1273;s:3:"â›";i:1274;s:3:"âœ";i:1275;s:3:"â";i:1276;s:3:"âž";i:1277;s:3:"âŸ";i:1278;s:3:"â ";i:1279;s:3:"â¡";i:1280;s:3:"â¢";i:1281;s:3:"â£";i:1282;s:3:"â¤";i:1283;s:3:"â¥";i:1284;s:3:"â¦";i:1285;s:3:"â§";i:1286;s:3:"â¨";i:1287;s:3:"â©";i:1288;s:3:"âª";i:1289;s:3:"â«";i:1290;s:3:"â¬";i:1291;s:3:"â­";i:1292;s:3:"â®";i:1293;s:3:"â¯";i:1294;s:3:"â°";i:1295;s:3:"â±";i:1296;s:3:"â²";i:1297;s:3:"â³";i:1298;s:3:"â€";i:1299;s:3:"â";i:1300;s:3:"â‚";i:1301;s:3:"âƒ";i:1302;s:3:"â„";i:1303;s:3:"â…";i:1304;s:3:"â†";i:1305;s:3:"â‡";i:1306;s:3:"âˆ";i:1307;s:3:"â‰";i:1308;s:3:"âŠ";i:1309;s:3:"â‹";i:1310;s:3:"âŒ";i:1311;s:3:"â";i:1312;s:3:"âŽ";i:1313;s:3:"â";i:1314;s:3:"â";i:1315;s:3:"â‘";i:1316;s:3:"â’";i:1317;s:3:"â“";i:1318;s:3:"â”";i:1319;s:3:"â•";i:1320;s:3:"â–";i:1321;s:3:"â—";i:1322;s:3:"â˜";i:1323;s:3:"â™";i:1324;s:3:"âš";i:1325;s:3:"â›";i:1326;s:3:"âœ";i:1327;s:3:"â";i:1328;s:3:"âž";i:1329;s:3:"âŸ";i:1330;s:3:"â ";i:1331;s:3:"â¡";i:1332;s:3:"â¢";i:1333;s:3:"â£";i:1334;s:3:"â¤";i:1335;s:3:"â¥";i:1336;s:3:"â¦";i:1337;s:3:"â‘€";i:1338;s:3:"â‘";i:1339;s:3:"â‘‚";i:1340;s:3:"⑃";i:1341;s:3:"â‘„";i:1342;s:3:"â‘…";i:1343;s:3:"⑆";i:1344;s:3:"⑇";i:1345;s:3:"⑈";i:1346;s:3:"⑉";i:1347;s:3:"â‘Š";i:1348;s:3:"─";i:1349;s:3:"â”";i:1350;s:3:"│";i:1351;s:3:"┃";i:1352;s:3:"┄";i:1353;s:3:"â”…";i:1354;s:3:"┆";i:1355;s:3:"┇";i:1356;s:3:"┈";i:1357;s:3:"┉";i:1358;s:3:"┊";i:1359;s:3:"┋";i:1360;s:3:"┌";i:1361;s:3:"â”";i:1362;s:3:"┎";i:1363;s:3:"â”";i:1364;s:3:"â”";i:1365;s:3:"┑";i:1366;s:3:"â”’";i:1367;s:3:"┓";i:1368;s:3:"â””";i:1369;s:3:"┕";i:1370;s:3:"â”–";i:1371;s:3:"â”—";i:1372;s:3:"┘";i:1373;s:3:"â”™";i:1374;s:3:"┚";i:1375;s:3:"â”›";i:1376;s:3:"├";i:1377;s:3:"â”";i:1378;s:3:"┞";i:1379;s:3:"┟";i:1380;s:3:"â” ";i:1381;s:3:"┡";i:1382;s:3:"┢";i:1383;s:3:"┣";i:1384;s:3:"┤";i:1385;s:3:"┥";i:1386;s:3:"┦";i:1387;s:3:"┧";i:1388;s:3:"┨";i:1389;s:3:"┩";i:1390;s:3:"┪";i:1391;s:3:"┫";i:1392;s:3:"┬";i:1393;s:3:"â”­";i:1394;s:3:"â”®";i:1395;s:3:"┯";i:1396;s:3:"â”°";i:1397;s:3:"â”±";i:1398;s:3:"┲";i:1399;s:3:"┳";i:1400;s:3:"â”´";i:1401;s:3:"┵";i:1402;s:3:"┶";i:1403;s:3:"â”·";i:1404;s:3:"┸";i:1405;s:3:"┹";i:1406;s:3:"┺";i:1407;s:3:"â”»";i:1408;s:3:"┼";i:1409;s:3:"┽";i:1410;s:3:"┾";i:1411;s:3:"┿";i:1412;s:3:"â•€";i:1413;s:3:"â•";i:1414;s:3:"â•‚";i:1415;s:3:"╃";i:1416;s:3:"â•„";i:1417;s:3:"â•…";i:1418;s:3:"╆";i:1419;s:3:"╇";i:1420;s:3:"╈";i:1421;s:3:"╉";i:1422;s:3:"â•Š";i:1423;s:3:"â•‹";i:1424;s:3:"â•Œ";i:1425;s:3:"â•";i:1426;s:3:"â•Ž";i:1427;s:3:"â•";i:1428;s:3:"â•";i:1429;s:3:"â•‘";i:1430;s:3:"â•’";i:1431;s:3:"â•“";i:1432;s:3:"â•”";i:1433;s:3:"â••";i:1434;s:3:"â•–";i:1435;s:3:"â•—";i:1436;s:3:"╘";i:1437;s:3:"â•™";i:1438;s:3:"â•š";i:1439;s:3:"â•›";i:1440;s:3:"â•œ";i:1441;s:3:"â•";i:1442;s:3:"â•ž";i:1443;s:3:"â•Ÿ";i:1444;s:3:"â• ";i:1445;s:3:"â•¡";i:1446;s:3:"â•¢";i:1447;s:3:"â•£";i:1448;s:3:"╤";i:1449;s:3:"â•¥";i:1450;s:3:"╦";i:1451;s:3:"╧";i:1452;s:3:"╨";i:1453;s:3:"â•©";i:1454;s:3:"╪";i:1455;s:3:"â•«";i:1456;s:3:"╬";i:1457;s:3:"â•­";i:1458;s:3:"â•®";i:1459;s:3:"╯";i:1460;s:3:"â•°";i:1461;s:3:"╱";i:1462;s:3:"╲";i:1463;s:3:"╳";i:1464;s:3:"â•´";i:1465;s:3:"╵";i:1466;s:3:"╶";i:1467;s:3:"â•·";i:1468;s:3:"╸";i:1469;s:3:"╹";i:1470;s:3:"╺";i:1471;s:3:"â•»";i:1472;s:3:"╼";i:1473;s:3:"╽";i:1474;s:3:"╾";i:1475;s:3:"â•¿";i:1476;s:3:"â–€";i:1477;s:3:"â–";i:1478;s:3:"â–‚";i:1479;s:3:"â–ƒ";i:1480;s:3:"â–„";i:1481;s:3:"â–…";i:1482;s:3:"â–†";i:1483;s:3:"â–‡";i:1484;s:3:"â–ˆ";i:1485;s:3:"â–‰";i:1486;s:3:"â–Š";i:1487;s:3:"â–‹";i:1488;s:3:"â–Œ";i:1489;s:3:"â–";i:1490;s:3:"â–Ž";i:1491;s:3:"â–";i:1492;s:3:"â–";i:1493;s:3:"â–‘";i:1494;s:3:"â–’";i:1495;s:3:"â–“";i:1496;s:3:"â–”";i:1497;s:3:"â–•";i:1498;s:3:"â––";i:1499;s:3:"â–—";i:1500;s:3:"â–˜";i:1501;s:3:"â–™";i:1502;s:3:"â–š";i:1503;s:3:"â–›";i:1504;s:3:"â–œ";i:1505;s:3:"â–";i:1506;s:3:"â–ž";i:1507;s:3:"â–Ÿ";i:1508;s:3:"â– ";i:1509;s:3:"â–¡";i:1510;s:3:"â–¢";i:1511;s:3:"â–£";i:1512;s:3:"â–¤";i:1513;s:3:"â–¥";i:1514;s:3:"â–¦";i:1515;s:3:"â–§";i:1516;s:3:"â–¨";i:1517;s:3:"â–©";i:1518;s:3:"â–ª";i:1519;s:3:"â–«";i:1520;s:3:"â–¬";i:1521;s:3:"â–­";i:1522;s:3:"â–®";i:1523;s:3:"â–¯";i:1524;s:3:"â–°";i:1525;s:3:"â–±";i:1526;s:3:"â–²";i:1527;s:3:"â–³";i:1528;s:3:"â–´";i:1529;s:3:"â–µ";i:1530;s:3:"â–¶";i:1531;s:3:"â–·";i:1532;s:3:"â–¸";i:1533;s:3:"â–¹";i:1534;s:3:"â–º";i:1535;s:3:"â–»";i:1536;s:3:"â–¼";i:1537;s:3:"â–½";i:1538;s:3:"â–¾";i:1539;s:3:"â–¿";i:1540;s:3:"â—€";i:1541;s:3:"â—";i:1542;s:3:"â—‚";i:1543;s:3:"â—ƒ";i:1544;s:3:"â—„";i:1545;s:3:"â—…";i:1546;s:3:"â—†";i:1547;s:3:"â—‡";i:1548;s:3:"â—ˆ";i:1549;s:3:"â—‰";i:1550;s:3:"â—Š";i:1551;s:3:"â—‹";i:1552;s:3:"â—Œ";i:1553;s:3:"â—";i:1554;s:3:"â—Ž";i:1555;s:3:"â—";i:1556;s:3:"â—";i:1557;s:3:"â—‘";i:1558;s:3:"â—’";i:1559;s:3:"â—“";i:1560;s:3:"â—”";i:1561;s:3:"â—•";i:1562;s:3:"â—–";i:1563;s:3:"â——";i:1564;s:3:"â—˜";i:1565;s:3:"â—™";i:1566;s:3:"â—š";i:1567;s:3:"â—›";i:1568;s:3:"â—œ";i:1569;s:3:"â—";i:1570;s:3:"â—ž";i:1571;s:3:"â—Ÿ";i:1572;s:3:"â— ";i:1573;s:3:"â—¡";i:1574;s:3:"â—¢";i:1575;s:3:"â—£";i:1576;s:3:"â—¤";i:1577;s:3:"â—¥";i:1578;s:3:"â—¦";i:1579;s:3:"â—§";i:1580;s:3:"â—¨";i:1581;s:3:"â—©";i:1582;s:3:"â—ª";i:1583;s:3:"â—«";i:1584;s:3:"â—¬";i:1585;s:3:"â—­";i:1586;s:3:"â—®";i:1587;s:3:"â—¯";i:1588;s:3:"â—°";i:1589;s:3:"â—±";i:1590;s:3:"â—²";i:1591;s:3:"â—³";i:1592;s:3:"â—´";i:1593;s:3:"â—µ";i:1594;s:3:"â—¶";i:1595;s:3:"â—·";i:1596;s:3:"â—¸";i:1597;s:3:"â—¹";i:1598;s:3:"â—º";i:1599;s:3:"â—»";i:1600;s:3:"â—¼";i:1601;s:3:"â—½";i:1602;s:3:"â—¾";i:1603;s:3:"â—¿";i:1604;s:3:"☀";i:1605;s:3:"â˜";i:1606;s:3:"☂";i:1607;s:3:"☃";i:1608;s:3:"☄";i:1609;s:3:"★";i:1610;s:3:"☆";i:1611;s:3:"☇";i:1612;s:3:"☈";i:1613;s:3:"☉";i:1614;s:3:"☊";i:1615;s:3:"☋";i:1616;s:3:"☌";i:1617;s:3:"â˜";i:1618;s:3:"☎";i:1619;s:3:"â˜";i:1620;s:3:"â˜";i:1621;s:3:"☑";i:1622;s:3:"☒";i:1623;s:3:"☓";i:1624;s:3:"☔";i:1625;s:3:"☕";i:1626;s:3:"☖";i:1627;s:3:"☗";i:1628;s:3:"☘";i:1629;s:3:"☙";i:1630;s:3:"☚";i:1631;s:3:"☛";i:1632;s:3:"☜";i:1633;s:3:"â˜";i:1634;s:3:"☞";i:1635;s:3:"☟";i:1636;s:3:"☠";i:1637;s:3:"☡";i:1638;s:3:"☢";i:1639;s:3:"☣";i:1640;s:3:"☤";i:1641;s:3:"☥";i:1642;s:3:"☦";i:1643;s:3:"☧";i:1644;s:3:"☨";i:1645;s:3:"☩";i:1646;s:3:"☪";i:1647;s:3:"☫";i:1648;s:3:"☬";i:1649;s:3:"☭";i:1650;s:3:"☮";i:1651;s:3:"☯";i:1652;s:3:"☸";i:1653;s:3:"☹";i:1654;s:3:"☺";i:1655;s:3:"☻";i:1656;s:3:"☼";i:1657;s:3:"☽";i:1658;s:3:"☾";i:1659;s:3:"☿";i:1660;s:3:"♀";i:1661;s:3:"â™";i:1662;s:3:"♂";i:1663;s:3:"♃";i:1664;s:3:"♄";i:1665;s:3:"â™…";i:1666;s:3:"♆";i:1667;s:3:"♇";i:1668;s:3:"♈";i:1669;s:3:"♉";i:1670;s:3:"♊";i:1671;s:3:"♋";i:1672;s:3:"♌";i:1673;s:3:"â™";i:1674;s:3:"♎";i:1675;s:3:"â™";i:1676;s:3:"â™";i:1677;s:3:"♑";i:1678;s:3:"â™’";i:1679;s:3:"♓";i:1680;s:3:"â™”";i:1681;s:3:"♕";i:1682;s:3:"â™–";i:1683;s:3:"â™—";i:1684;s:3:"♘";i:1685;s:3:"â™™";i:1686;s:3:"♚";i:1687;s:3:"â™›";i:1688;s:3:"♜";i:1689;s:3:"â™";i:1690;s:3:"♞";i:1691;s:3:"♟";i:1692;s:3:"â™ ";i:1693;s:3:"♡";i:1694;s:3:"♢";i:1695;s:3:"♣";i:1696;s:3:"♤";i:1697;s:3:"♥";i:1698;s:3:"♦";i:1699;s:3:"♧";i:1700;s:3:"♨";i:1701;s:3:"♩";i:1702;s:3:"♪";i:1703;s:3:"♫";i:1704;s:3:"♬";i:1705;s:3:"â™°";i:1706;s:3:"â™±";i:1707;s:3:"♲";i:1708;s:3:"♳";i:1709;s:3:"â™´";i:1710;s:3:"♵";i:1711;s:3:"♶";i:1712;s:3:"â™·";i:1713;s:3:"♸";i:1714;s:3:"♹";i:1715;s:3:"♺";i:1716;s:3:"â™»";i:1717;s:3:"♼";i:1718;s:3:"♽";i:1719;s:3:"♾";i:1720;s:3:"♿";i:1721;s:3:"⚀";i:1722;s:3:"âš";i:1723;s:3:"âš‚";i:1724;s:3:"⚃";i:1725;s:3:"âš„";i:1726;s:3:"âš…";i:1727;s:3:"⚆";i:1728;s:3:"⚇";i:1729;s:3:"⚈";i:1730;s:3:"⚉";i:1731;s:3:"âš";i:1732;s:3:"âš‘";i:1733;s:3:"âš’";i:1734;s:3:"âš“";i:1735;s:3:"âš”";i:1736;s:3:"âš•";i:1737;s:3:"âš–";i:1738;s:3:"âš—";i:1739;s:3:"⚘";i:1740;s:3:"âš™";i:1741;s:3:"âšš";i:1742;s:3:"âš›";i:1743;s:3:"âšœ";i:1744;s:3:"âš";i:1745;s:3:"âšž";i:1746;s:3:"⚟";i:1747;s:3:"âš ";i:1748;s:3:"âš¡";i:1749;s:3:"⚢";i:1750;s:3:"⚣";i:1751;s:3:"⚤";i:1752;s:3:"⚥";i:1753;s:3:"⚦";i:1754;s:3:"⚧";i:1755;s:3:"⚨";i:1756;s:3:"âš©";i:1757;s:3:"⚪";i:1758;s:3:"âš«";i:1759;s:3:"⚬";i:1760;s:3:"âš­";i:1761;s:3:"âš®";i:1762;s:3:"⚯";i:1763;s:3:"âš°";i:1764;s:3:"âš±";i:1765;s:3:"âš²";i:1766;s:3:"âš³";i:1767;s:3:"âš´";i:1768;s:3:"âšµ";i:1769;s:3:"⚶";i:1770;s:3:"âš·";i:1771;s:3:"⚸";i:1772;s:3:"âš¹";i:1773;s:3:"⚺";i:1774;s:3:"âš»";i:1775;s:3:"âš¼";i:1776;s:3:"âš½";i:1777;s:3:"âš¾";i:1778;s:3:"âš¿";i:1779;s:3:"⛀";i:1780;s:3:"â›";i:1781;s:3:"⛂";i:1782;s:3:"⛃";i:1783;s:3:"⛄";i:1784;s:3:"â›…";i:1785;s:3:"⛆";i:1786;s:3:"⛇";i:1787;s:3:"⛈";i:1788;s:3:"⛉";i:1789;s:3:"⛊";i:1790;s:3:"⛋";i:1791;s:3:"⛌";i:1792;s:3:"â›";i:1793;s:3:"⛎";i:1794;s:3:"â›";i:1795;s:3:"â›";i:1796;s:3:"⛑";i:1797;s:3:"â›’";i:1798;s:3:"⛓";i:1799;s:3:"â›”";i:1800;s:3:"⛕";i:1801;s:3:"â›–";i:1802;s:3:"â›—";i:1803;s:3:"⛘";i:1804;s:3:"â›™";i:1805;s:3:"⛚";i:1806;s:3:"â››";i:1807;s:3:"⛜";i:1808;s:3:"â›";i:1809;s:3:"⛞";i:1810;s:3:"⛟";i:1811;s:3:"â› ";i:1812;s:3:"⛡";i:1813;s:3:"⛢";i:1814;s:3:"⛣";i:1815;s:3:"⛤";i:1816;s:3:"⛥";i:1817;s:3:"⛦";i:1818;s:3:"⛧";i:1819;s:3:"⛨";i:1820;s:3:"⛩";i:1821;s:3:"⛪";i:1822;s:3:"⛫";i:1823;s:3:"⛬";i:1824;s:3:"â›­";i:1825;s:3:"â›®";i:1826;s:3:"⛯";i:1827;s:3:"â›°";i:1828;s:3:"â›±";i:1829;s:3:"⛲";i:1830;s:3:"⛳";i:1831;s:3:"â›´";i:1832;s:3:"⛵";i:1833;s:3:"⛶";i:1834;s:3:"â›·";i:1835;s:3:"⛸";i:1836;s:3:"⛹";i:1837;s:3:"⛺";i:1838;s:3:"â›»";i:1839;s:3:"⛼";i:1840;s:3:"⛽";i:1841;s:3:"⛾";i:1842;s:3:"⛿";i:1843;s:3:"âœ";i:1844;s:3:"✂";i:1845;s:3:"✃";i:1846;s:3:"✄";i:1847;s:3:"✅";i:1848;s:3:"✆";i:1849;s:3:"✇";i:1850;s:3:"✈";i:1851;s:3:"✉";i:1852;s:3:"✊";i:1853;s:3:"✋";i:1854;s:3:"✌";i:1855;s:3:"âœ";i:1856;s:3:"✎";i:1857;s:3:"âœ";i:1858;s:3:"âœ";i:1859;s:3:"✑";i:1860;s:3:"✒";i:1861;s:3:"✓";i:1862;s:3:"✔";i:1863;s:3:"✕";i:1864;s:3:"✖";i:1865;s:3:"✗";i:1866;s:3:"✘";i:1867;s:3:"✙";i:1868;s:3:"✚";i:1869;s:3:"✛";i:1870;s:3:"✜";i:1871;s:3:"âœ";i:1872;s:3:"✞";i:1873;s:3:"✟";i:1874;s:3:"✠";i:1875;s:3:"✡";i:1876;s:3:"✢";i:1877;s:3:"✣";i:1878;s:3:"✤";i:1879;s:3:"✥";i:1880;s:3:"✦";i:1881;s:3:"✧";i:1882;s:3:"✨";i:1883;s:3:"✩";i:1884;s:3:"✪";i:1885;s:3:"✫";i:1886;s:3:"✬";i:1887;s:3:"✭";i:1888;s:3:"✮";i:1889;s:3:"✯";i:1890;s:3:"✰";i:1891;s:3:"✱";i:1892;s:3:"✲";i:1893;s:3:"✳";i:1894;s:3:"✴";i:1895;s:3:"✵";i:1896;s:3:"✶";i:1897;s:3:"✷";i:1898;s:3:"✸";i:1899;s:3:"✹";i:1900;s:3:"✺";i:1901;s:3:"✻";i:1902;s:3:"✼";i:1903;s:3:"✽";i:1904;s:3:"✾";i:1905;s:3:"✿";i:1906;s:3:"â€";i:1907;s:3:"â";i:1908;s:3:"â‚";i:1909;s:3:"âƒ";i:1910;s:3:"â„";i:1911;s:3:"â…";i:1912;s:3:"â†";i:1913;s:3:"â‡";i:1914;s:3:"âˆ";i:1915;s:3:"â‰";i:1916;s:3:"âŠ";i:1917;s:3:"â‹";i:1918;s:3:"âŒ";i:1919;s:3:"â";i:1920;s:3:"âŽ";i:1921;s:3:"â";i:1922;s:3:"â";i:1923;s:3:"â‘";i:1924;s:3:"â’";i:1925;s:3:"â“";i:1926;s:3:"â”";i:1927;s:3:"â•";i:1928;s:3:"â–";i:1929;s:3:"â—";i:1930;s:3:"â˜";i:1931;s:3:"â™";i:1932;s:3:"âš";i:1933;s:3:"â›";i:1934;s:3:"âœ";i:1935;s:3:"â";i:1936;s:3:"âž";i:1937;s:3:"âŸ";i:1938;s:3:"â ";i:1939;s:3:"â¡";i:1940;s:3:"â¢";i:1941;s:3:"â£";i:1942;s:3:"â¤";i:1943;s:3:"â¥";i:1944;s:3:"â¦";i:1945;s:3:"â§";i:1946;s:3:"â¨";i:1947;s:3:"â©";i:1948;s:3:"âª";i:1949;s:3:"â«";i:1950;s:3:"â¬";i:1951;s:3:"â­";i:1952;s:3:"â®";i:1953;s:3:"â¯";i:1954;s:3:"â°";i:1955;s:3:"â±";i:1956;s:3:"â²";i:1957;s:3:"â³";i:1958;s:3:"â´";i:1959;s:3:"âµ";i:1960;s:3:"âž”";i:1961;s:3:"âž•";i:1962;s:3:"âž–";i:1963;s:3:"âž—";i:1964;s:3:"➘";i:1965;s:3:"âž™";i:1966;s:3:"âžš";i:1967;s:3:"âž›";i:1968;s:3:"âžœ";i:1969;s:3:"âž";i:1970;s:3:"âžž";i:1971;s:3:"➟";i:1972;s:3:"âž ";i:1973;s:3:"âž¡";i:1974;s:3:"➢";i:1975;s:3:"➣";i:1976;s:3:"➤";i:1977;s:3:"➥";i:1978;s:3:"➦";i:1979;s:3:"➧";i:1980;s:3:"➨";i:1981;s:3:"âž©";i:1982;s:3:"➪";i:1983;s:3:"âž«";i:1984;s:3:"➬";i:1985;s:3:"âž­";i:1986;s:3:"âž®";i:1987;s:3:"➯";i:1988;s:3:"âž°";i:1989;s:3:"âž±";i:1990;s:3:"âž²";i:1991;s:3:"âž³";i:1992;s:3:"âž´";i:1993;s:3:"âžµ";i:1994;s:3:"➶";i:1995;s:3:"âž·";i:1996;s:3:"➸";i:1997;s:3:"âž¹";i:1998;s:3:"➺";i:1999;s:3:"âž»";i:2000;s:3:"âž¼";i:2001;s:3:"âž½";i:2002;s:3:"âž¾";i:2003;s:3:"âž¿";i:2004;s:3:"⟀";i:2005;s:3:"âŸ";i:2006;s:3:"⟂";i:2007;s:3:"⟃";i:2008;s:3:"⟄";i:2009;s:3:"⟅";i:2010;s:3:"⟆";i:2011;s:3:"⟇";i:2012;s:3:"⟈";i:2013;s:3:"⟉";i:2014;s:3:"⟊";i:2015;s:3:"⟌";i:2016;s:3:"⟎";i:2017;s:3:"âŸ";i:2018;s:3:"âŸ";i:2019;s:3:"⟑";i:2020;s:3:"⟒";i:2021;s:3:"⟓";i:2022;s:3:"⟔";i:2023;s:3:"⟕";i:2024;s:3:"⟖";i:2025;s:3:"⟗";i:2026;s:3:"⟘";i:2027;s:3:"⟙";i:2028;s:3:"⟚";i:2029;s:3:"⟛";i:2030;s:3:"⟜";i:2031;s:3:"âŸ";i:2032;s:3:"⟞";i:2033;s:3:"⟟";i:2034;s:3:"⟠";i:2035;s:3:"⟡";i:2036;s:3:"⟢";i:2037;s:3:"⟣";i:2038;s:3:"⟤";i:2039;s:3:"⟥";i:2040;s:3:"⟦";i:2041;s:3:"⟧";i:2042;s:3:"⟨";i:2043;s:3:"⟩";i:2044;s:3:"⟪";i:2045;s:3:"⟫";i:2046;s:3:"⟰";i:2047;s:3:"⟱";i:2048;s:3:"⟲";i:2049;s:3:"⟳";i:2050;s:3:"⟴";i:2051;s:3:"⟵";i:2052;s:3:"⟶";i:2053;s:3:"⟷";i:2054;s:3:"⟸";i:2055;s:3:"⟹";i:2056;s:3:"⟺";i:2057;s:3:"⟻";i:2058;s:3:"⟼";i:2059;s:3:"⟽";i:2060;s:3:"⟾";i:2061;s:3:"⟿";i:2062;s:3:"⤀";i:2063;s:3:"â¤";i:2064;s:3:"⤂";i:2065;s:3:"⤃";i:2066;s:3:"⤄";i:2067;s:3:"⤅";i:2068;s:3:"⤆";i:2069;s:3:"⤇";i:2070;s:3:"⤈";i:2071;s:3:"⤉";i:2072;s:3:"⤊";i:2073;s:3:"⤋";i:2074;s:3:"⤌";i:2075;s:3:"â¤";i:2076;s:3:"⤎";i:2077;s:3:"â¤";i:2078;s:3:"â¤";i:2079;s:3:"⤑";i:2080;s:3:"⤒";i:2081;s:3:"⤓";i:2082;s:3:"⤔";i:2083;s:3:"⤕";i:2084;s:3:"⤖";i:2085;s:3:"⤗";i:2086;s:3:"⤘";i:2087;s:3:"⤙";i:2088;s:3:"⤚";i:2089;s:3:"⤛";i:2090;s:3:"⤜";i:2091;s:3:"â¤";i:2092;s:3:"⤞";i:2093;s:3:"⤟";i:2094;s:3:"⤠";i:2095;s:3:"⤡";i:2096;s:3:"⤢";i:2097;s:3:"⤣";i:2098;s:3:"⤤";i:2099;s:3:"⤥";i:2100;s:3:"⤦";i:2101;s:3:"⤧";i:2102;s:3:"⤨";i:2103;s:3:"⤩";i:2104;s:3:"⤪";i:2105;s:3:"⤫";i:2106;s:3:"⤬";i:2107;s:3:"⤭";i:2108;s:3:"⤮";i:2109;s:3:"⤯";i:2110;s:3:"⤰";i:2111;s:3:"⤱";i:2112;s:3:"⤲";i:2113;s:3:"⤳";i:2114;s:3:"⤴";i:2115;s:3:"⤵";i:2116;s:3:"⤶";i:2117;s:3:"⤷";i:2118;s:3:"⤸";i:2119;s:3:"⤹";i:2120;s:3:"⤺";i:2121;s:3:"⤻";i:2122;s:3:"⤼";i:2123;s:3:"⤽";i:2124;s:3:"⤾";i:2125;s:3:"⤿";i:2126;s:3:"⥀";i:2127;s:3:"â¥";i:2128;s:3:"⥂";i:2129;s:3:"⥃";i:2130;s:3:"⥄";i:2131;s:3:"⥅";i:2132;s:3:"⥆";i:2133;s:3:"⥇";i:2134;s:3:"⥈";i:2135;s:3:"⥉";i:2136;s:3:"⥊";i:2137;s:3:"⥋";i:2138;s:3:"⥌";i:2139;s:3:"â¥";i:2140;s:3:"⥎";i:2141;s:3:"â¥";i:2142;s:3:"â¥";i:2143;s:3:"⥑";i:2144;s:3:"⥒";i:2145;s:3:"⥓";i:2146;s:3:"⥔";i:2147;s:3:"⥕";i:2148;s:3:"⥖";i:2149;s:3:"⥗";i:2150;s:3:"⥘";i:2151;s:3:"⥙";i:2152;s:3:"⥚";i:2153;s:3:"⥛";i:2154;s:3:"⥜";i:2155;s:3:"â¥";i:2156;s:3:"⥞";i:2157;s:3:"⥟";i:2158;s:3:"⥠";i:2159;s:3:"⥡";i:2160;s:3:"⥢";i:2161;s:3:"⥣";i:2162;s:3:"⥤";i:2163;s:3:"⥥";i:2164;s:3:"⥦";i:2165;s:3:"⥧";i:2166;s:3:"⥨";i:2167;s:3:"⥩";i:2168;s:3:"⥪";i:2169;s:3:"⥫";i:2170;s:3:"⥬";i:2171;s:3:"⥭";i:2172;s:3:"⥮";i:2173;s:3:"⥯";i:2174;s:3:"⥰";i:2175;s:3:"⥱";i:2176;s:3:"⥲";i:2177;s:3:"⥳";i:2178;s:3:"⥴";i:2179;s:3:"⥵";i:2180;s:3:"⥶";i:2181;s:3:"⥷";i:2182;s:3:"⥸";i:2183;s:3:"⥹";i:2184;s:3:"⥺";i:2185;s:3:"⥻";i:2186;s:3:"⥼";i:2187;s:3:"⥽";i:2188;s:3:"⥾";i:2189;s:3:"⥿";i:2190;s:3:"⦀";i:2191;s:3:"â¦";i:2192;s:3:"⦂";i:2193;s:3:"⦙";i:2194;s:3:"⦚";i:2195;s:3:"⦛";i:2196;s:3:"⦜";i:2197;s:3:"â¦";i:2198;s:3:"⦞";i:2199;s:3:"⦟";i:2200;s:3:"⦠";i:2201;s:3:"⦡";i:2202;s:3:"⦢";i:2203;s:3:"⦣";i:2204;s:3:"⦤";i:2205;s:3:"⦥";i:2206;s:3:"⦦";i:2207;s:3:"⦧";i:2208;s:3:"⦨";i:2209;s:3:"⦩";i:2210;s:3:"⦪";i:2211;s:3:"⦫";i:2212;s:3:"⦬";i:2213;s:3:"⦭";i:2214;s:3:"⦮";i:2215;s:3:"⦯";i:2216;s:3:"⦰";i:2217;s:3:"⦱";i:2218;s:3:"⦲";i:2219;s:3:"⦳";i:2220;s:3:"⦴";i:2221;s:3:"⦵";i:2222;s:3:"⦶";i:2223;s:3:"⦷";i:2224;s:3:"⦸";i:2225;s:3:"⦹";i:2226;s:3:"⦺";i:2227;s:3:"⦻";i:2228;s:3:"⦼";i:2229;s:3:"⦽";i:2230;s:3:"⦾";i:2231;s:3:"⦿";i:2232;s:3:"⧀";i:2233;s:3:"â§";i:2234;s:3:"⧂";i:2235;s:3:"⧃";i:2236;s:3:"⧄";i:2237;s:3:"⧅";i:2238;s:3:"⧆";i:2239;s:3:"⧇";i:2240;s:3:"⧈";i:2241;s:3:"⧉";i:2242;s:3:"⧊";i:2243;s:3:"⧋";i:2244;s:3:"⧌";i:2245;s:3:"â§";i:2246;s:3:"⧎";i:2247;s:3:"â§";i:2248;s:3:"â§";i:2249;s:3:"⧑";i:2250;s:3:"⧒";i:2251;s:3:"⧓";i:2252;s:3:"⧔";i:2253;s:3:"⧕";i:2254;s:3:"⧖";i:2255;s:3:"⧗";i:2256;s:3:"⧘";i:2257;s:3:"⧙";i:2258;s:3:"⧚";i:2259;s:3:"⧛";i:2260;s:3:"⧜";i:2261;s:3:"â§";i:2262;s:3:"⧞";i:2263;s:3:"⧟";i:2264;s:3:"⧠";i:2265;s:3:"⧡";i:2266;s:3:"⧢";i:2267;s:3:"⧣";i:2268;s:3:"⧤";i:2269;s:3:"⧥";i:2270;s:3:"⧦";i:2271;s:3:"⧧";i:2272;s:3:"⧨";i:2273;s:3:"⧩";i:2274;s:3:"⧪";i:2275;s:3:"⧫";i:2276;s:3:"⧬";i:2277;s:3:"⧭";i:2278;s:3:"⧮";i:2279;s:3:"⧯";i:2280;s:3:"⧰";i:2281;s:3:"⧱";i:2282;s:3:"⧲";i:2283;s:3:"⧳";i:2284;s:3:"⧴";i:2285;s:3:"⧵";i:2286;s:3:"⧶";i:2287;s:3:"⧷";i:2288;s:3:"⧸";i:2289;s:3:"⧹";i:2290;s:3:"⧺";i:2291;s:3:"⧻";i:2292;s:3:"⧾";i:2293;s:3:"⧿";i:2294;s:3:"⨀";i:2295;s:3:"â¨";i:2296;s:3:"⨂";i:2297;s:3:"⨃";i:2298;s:3:"⨄";i:2299;s:3:"⨅";i:2300;s:3:"⨆";i:2301;s:3:"⨇";i:2302;s:3:"⨈";i:2303;s:3:"⨉";i:2304;s:3:"⨊";i:2305;s:3:"⨋";i:2306;s:3:"â¨";i:2307;s:3:"⨎";i:2308;s:3:"â¨";i:2309;s:3:"â¨";i:2310;s:3:"⨑";i:2311;s:3:"⨒";i:2312;s:3:"⨓";i:2313;s:3:"⨔";i:2314;s:3:"⨕";i:2315;s:3:"⨖";i:2316;s:3:"⨗";i:2317;s:3:"⨘";i:2318;s:3:"⨙";i:2319;s:3:"⨚";i:2320;s:3:"⨛";i:2321;s:3:"⨜";i:2322;s:3:"â¨";i:2323;s:3:"⨞";i:2324;s:3:"⨟";i:2325;s:3:"⨠";i:2326;s:3:"⨡";i:2327;s:3:"⨢";i:2328;s:3:"⨣";i:2329;s:3:"⨤";i:2330;s:3:"⨥";i:2331;s:3:"⨦";i:2332;s:3:"⨧";i:2333;s:3:"⨨";i:2334;s:3:"⨩";i:2335;s:3:"⨪";i:2336;s:3:"⨫";i:2337;s:3:"⨬";i:2338;s:3:"⨭";i:2339;s:3:"⨮";i:2340;s:3:"⨯";i:2341;s:3:"⨰";i:2342;s:3:"⨱";i:2343;s:3:"⨲";i:2344;s:3:"⨳";i:2345;s:3:"⨴";i:2346;s:3:"⨵";i:2347;s:3:"⨶";i:2348;s:3:"⨷";i:2349;s:3:"⨸";i:2350;s:3:"⨹";i:2351;s:3:"⨺";i:2352;s:3:"⨻";i:2353;s:3:"⨼";i:2354;s:3:"⨽";i:2355;s:3:"⨾";i:2356;s:3:"⨿";i:2357;s:3:"â©€";i:2358;s:3:"â©";i:2359;s:3:"â©‚";i:2360;s:3:"⩃";i:2361;s:3:"â©„";i:2362;s:3:"â©…";i:2363;s:3:"⩆";i:2364;s:3:"⩇";i:2365;s:3:"⩈";i:2366;s:3:"⩉";i:2367;s:3:"â©Š";i:2368;s:3:"â©‹";i:2369;s:3:"â©Œ";i:2370;s:3:"â©";i:2371;s:3:"â©Ž";i:2372;s:3:"â©";i:2373;s:3:"â©";i:2374;s:3:"â©‘";i:2375;s:3:"â©’";i:2376;s:3:"â©“";i:2377;s:3:"â©”";i:2378;s:3:"â©•";i:2379;s:3:"â©–";i:2380;s:3:"â©—";i:2381;s:3:"⩘";i:2382;s:3:"â©™";i:2383;s:3:"â©š";i:2384;s:3:"â©›";i:2385;s:3:"â©œ";i:2386;s:3:"â©";i:2387;s:3:"â©ž";i:2388;s:3:"â©Ÿ";i:2389;s:3:"â© ";i:2390;s:3:"â©¡";i:2391;s:3:"â©¢";i:2392;s:3:"â©£";i:2393;s:3:"⩤";i:2394;s:3:"â©¥";i:2395;s:3:"⩦";i:2396;s:3:"⩧";i:2397;s:3:"⩨";i:2398;s:3:"â©©";i:2399;s:3:"⩪";i:2400;s:3:"â©«";i:2401;s:3:"⩬";i:2402;s:3:"â©­";i:2403;s:3:"â©®";i:2404;s:3:"⩯";i:2405;s:3:"â©°";i:2406;s:3:"⩱";i:2407;s:3:"⩲";i:2408;s:3:"⩳";i:2409;s:3:"â©·";i:2410;s:3:"⩸";i:2411;s:3:"⩹";i:2412;s:3:"⩺";i:2413;s:3:"â©»";i:2414;s:3:"⩼";i:2415;s:3:"⩽";i:2416;s:3:"⩾";i:2417;s:3:"â©¿";i:2418;s:3:"⪀";i:2419;s:3:"âª";i:2420;s:3:"⪂";i:2421;s:3:"⪃";i:2422;s:3:"⪄";i:2423;s:3:"⪅";i:2424;s:3:"⪆";i:2425;s:3:"⪇";i:2426;s:3:"⪈";i:2427;s:3:"⪉";i:2428;s:3:"⪊";i:2429;s:3:"⪋";i:2430;s:3:"⪌";i:2431;s:3:"âª";i:2432;s:3:"⪎";i:2433;s:3:"âª";i:2434;s:3:"âª";i:2435;s:3:"⪑";i:2436;s:3:"⪒";i:2437;s:3:"⪓";i:2438;s:3:"⪔";i:2439;s:3:"⪕";i:2440;s:3:"⪖";i:2441;s:3:"⪗";i:2442;s:3:"⪘";i:2443;s:3:"⪙";i:2444;s:3:"⪚";i:2445;s:3:"⪛";i:2446;s:3:"⪜";i:2447;s:3:"âª";i:2448;s:3:"⪞";i:2449;s:3:"⪟";i:2450;s:3:"⪠";i:2451;s:3:"⪡";i:2452;s:3:"⪢";i:2453;s:3:"⪣";i:2454;s:3:"⪤";i:2455;s:3:"⪥";i:2456;s:3:"⪦";i:2457;s:3:"⪧";i:2458;s:3:"⪨";i:2459;s:3:"⪩";i:2460;s:3:"⪪";i:2461;s:3:"⪫";i:2462;s:3:"⪬";i:2463;s:3:"⪭";i:2464;s:3:"⪮";i:2465;s:3:"⪯";i:2466;s:3:"⪰";i:2467;s:3:"⪱";i:2468;s:3:"⪲";i:2469;s:3:"⪳";i:2470;s:3:"⪴";i:2471;s:3:"⪵";i:2472;s:3:"⪶";i:2473;s:3:"⪷";i:2474;s:3:"⪸";i:2475;s:3:"⪹";i:2476;s:3:"⪺";i:2477;s:3:"⪻";i:2478;s:3:"⪼";i:2479;s:3:"⪽";i:2480;s:3:"⪾";i:2481;s:3:"⪿";i:2482;s:3:"â«€";i:2483;s:3:"â«";i:2484;s:3:"â«‚";i:2485;s:3:"⫃";i:2486;s:3:"â«„";i:2487;s:3:"â«…";i:2488;s:3:"⫆";i:2489;s:3:"⫇";i:2490;s:3:"⫈";i:2491;s:3:"⫉";i:2492;s:3:"â«Š";i:2493;s:3:"â«‹";i:2494;s:3:"â«Œ";i:2495;s:3:"â«";i:2496;s:3:"â«Ž";i:2497;s:3:"â«";i:2498;s:3:"â«";i:2499;s:3:"â«‘";i:2500;s:3:"â«’";i:2501;s:3:"â«“";i:2502;s:3:"â«”";i:2503;s:3:"â«•";i:2504;s:3:"â«–";i:2505;s:3:"â«—";i:2506;s:3:"⫘";i:2507;s:3:"â«™";i:2508;s:3:"â«š";i:2509;s:3:"â«›";i:2510;s:3:"â«";i:2511;s:3:"â«ž";i:2512;s:3:"â«Ÿ";i:2513;s:3:"â« ";i:2514;s:3:"â«¡";i:2515;s:3:"â«¢";i:2516;s:3:"â«£";i:2517;s:3:"⫤";i:2518;s:3:"â«¥";i:2519;s:3:"⫦";i:2520;s:3:"⫧";i:2521;s:3:"⫨";i:2522;s:3:"â«©";i:2523;s:3:"⫪";i:2524;s:3:"â««";i:2525;s:3:"⫬";i:2526;s:3:"â«­";i:2527;s:3:"â«®";i:2528;s:3:"⫯";i:2529;s:3:"â«°";i:2530;s:3:"⫱";i:2531;s:3:"⫲";i:2532;s:3:"⫳";i:2533;s:3:"â«´";i:2534;s:3:"⫵";i:2535;s:3:"⫶";i:2536;s:3:"â«·";i:2537;s:3:"⫸";i:2538;s:3:"⫹";i:2539;s:3:"⫺";i:2540;s:3:"â«»";i:2541;s:3:"⫼";i:2542;s:3:"⫽";i:2543;s:3:"⫾";i:2544;s:3:"â«¿";i:2545;s:3:"⬀";i:2546;s:3:"â¬";i:2547;s:3:"⬂";i:2548;s:3:"⬃";i:2549;s:3:"⬄";i:2550;s:3:"⬅";i:2551;s:3:"⬆";i:2552;s:3:"⬇";i:2553;s:3:"⬈";i:2554;s:3:"⬉";i:2555;s:3:"⬊";i:2556;s:3:"⬋";i:2557;s:3:"⬌";i:2558;s:3:"â¬";i:2559;s:3:"⬎";i:2560;s:3:"â¬";i:2561;s:3:"â¬";i:2562;s:3:"⬑";i:2563;s:3:"⬒";i:2564;s:3:"⬓";i:2565;s:3:"⬔";i:2566;s:3:"⬕";i:2567;s:3:"⬖";i:2568;s:3:"⬗";i:2569;s:3:"⬘";i:2570;s:3:"⬙";i:2571;s:3:"⬚";i:2572;s:3:"⬛";i:2573;s:3:"⬜";i:2574;s:3:"â¬";i:2575;s:3:"⬞";i:2576;s:3:"⬟";i:2577;s:3:"⬠";i:2578;s:3:"⬡";i:2579;s:3:"⬢";i:2580;s:3:"⬣";i:2581;s:3:"⬤";i:2582;s:3:"⬥";i:2583;s:3:"⬦";i:2584;s:3:"⬧";i:2585;s:3:"⬨";i:2586;s:3:"⬩";i:2587;s:3:"⬪";i:2588;s:3:"⬫";i:2589;s:3:"⬬";i:2590;s:3:"⬭";i:2591;s:3:"⬮";i:2592;s:3:"⬯";i:2593;s:3:"⬰";i:2594;s:3:"⬱";i:2595;s:3:"⬲";i:2596;s:3:"⬳";i:2597;s:3:"⬴";i:2598;s:3:"⬵";i:2599;s:3:"⬶";i:2600;s:3:"⬷";i:2601;s:3:"⬸";i:2602;s:3:"⬹";i:2603;s:3:"⬺";i:2604;s:3:"⬻";i:2605;s:3:"⬼";i:2606;s:3:"⬽";i:2607;s:3:"⬾";i:2608;s:3:"⬿";i:2609;s:3:"â­€";i:2610;s:3:"â­";i:2611;s:3:"â­‚";i:2612;s:3:"â­ƒ";i:2613;s:3:"â­„";i:2614;s:3:"â­…";i:2615;s:3:"â­†";i:2616;s:3:"â­‡";i:2617;s:3:"â­ˆ";i:2618;s:3:"â­‰";i:2619;s:3:"â­Š";i:2620;s:3:"â­‹";i:2621;s:3:"â­Œ";i:2622;s:3:"â­";i:2623;s:3:"â­‘";i:2624;s:3:"â­’";i:2625;s:3:"â­“";i:2626;s:3:"â­”";i:2627;s:3:"â­•";i:2628;s:3:"â­–";i:2629;s:3:"â­—";i:2630;s:3:"â­˜";i:2631;s:3:"â­™";i:2632;s:3:"â³¥";i:2633;s:3:"⳦";i:2634;s:3:"⳧";i:2635;s:3:"⳨";i:2636;s:3:"⳩";i:2637;s:3:"⳪";i:2638;s:3:"â €";i:2639;s:3:"â ";i:2640;s:3:"â ‚";i:2641;s:3:"â ƒ";i:2642;s:3:"â „";i:2643;s:3:"â …";i:2644;s:3:"â †";i:2645;s:3:"â ‡";i:2646;s:3:"â ˆ";i:2647;s:3:"â ‰";i:2648;s:3:"â Š";i:2649;s:3:"â ‹";i:2650;s:3:"â Œ";i:2651;s:3:"â ";i:2652;s:3:"â Ž";i:2653;s:3:"â ";i:2654;s:3:"â ";i:2655;s:3:"â ‘";i:2656;s:3:"â ’";i:2657;s:3:"â “";i:2658;s:3:"â ”";i:2659;s:3:"â •";i:2660;s:3:"â –";i:2661;s:3:"â —";i:2662;s:3:"â ˜";i:2663;s:3:"â ™";i:2664;s:3:"â š";i:2665;s:3:"â ›";i:2666;s:3:"â œ";i:2667;s:3:"â ";i:2668;s:3:"â ž";i:2669;s:3:"â Ÿ";i:2670;s:3:"â  ";i:2671;s:3:"â ¡";i:2672;s:3:"â ¢";i:2673;s:3:"â £";i:2674;s:3:"â ¤";i:2675;s:3:"â ¥";i:2676;s:3:"â ¦";i:2677;s:3:"â §";i:2678;s:3:"â ¨";i:2679;s:3:"â ©";i:2680;s:3:"â ª";i:2681;s:3:"â «";i:2682;s:3:"â ¬";i:2683;s:3:"â ­";i:2684;s:3:"â ®";i:2685;s:3:"â ¯";i:2686;s:3:"â °";i:2687;s:3:"â ±";i:2688;s:3:"â ²";i:2689;s:3:"â ³";i:2690;s:3:"â ´";i:2691;s:3:"â µ";i:2692;s:3:"â ¶";i:2693;s:3:"â ·";i:2694;s:3:"â ¸";i:2695;s:3:"â ¹";i:2696;s:3:"â º";i:2697;s:3:"â »";i:2698;s:3:"â ¼";i:2699;s:3:"â ½";i:2700;s:3:"â ¾";i:2701;s:3:"â ¿";i:2702;s:3:"â¡€";i:2703;s:3:"â¡";i:2704;s:3:"â¡‚";i:2705;s:3:"⡃";i:2706;s:3:"â¡„";i:2707;s:3:"â¡…";i:2708;s:3:"⡆";i:2709;s:3:"⡇";i:2710;s:3:"⡈";i:2711;s:3:"⡉";i:2712;s:3:"â¡Š";i:2713;s:3:"â¡‹";i:2714;s:3:"â¡Œ";i:2715;s:3:"â¡";i:2716;s:3:"â¡Ž";i:2717;s:3:"â¡";i:2718;s:3:"â¡";i:2719;s:3:"â¡‘";i:2720;s:3:"â¡’";i:2721;s:3:"â¡“";i:2722;s:3:"â¡”";i:2723;s:3:"â¡•";i:2724;s:3:"â¡–";i:2725;s:3:"â¡—";i:2726;s:3:"⡘";i:2727;s:3:"â¡™";i:2728;s:3:"â¡š";i:2729;s:3:"â¡›";i:2730;s:3:"â¡œ";i:2731;s:3:"â¡";i:2732;s:3:"â¡ž";i:2733;s:3:"â¡Ÿ";i:2734;s:3:"â¡ ";i:2735;s:3:"â¡¡";i:2736;s:3:"â¡¢";i:2737;s:3:"â¡£";i:2738;s:3:"⡤";i:2739;s:3:"â¡¥";i:2740;s:3:"⡦";i:2741;s:3:"⡧";i:2742;s:3:"⡨";i:2743;s:3:"â¡©";i:2744;s:3:"⡪";i:2745;s:3:"â¡«";i:2746;s:3:"⡬";i:2747;s:3:"â¡­";i:2748;s:3:"â¡®";i:2749;s:3:"⡯";i:2750;s:3:"â¡°";i:2751;s:3:"⡱";i:2752;s:3:"⡲";i:2753;s:3:"⡳";i:2754;s:3:"â¡´";i:2755;s:3:"⡵";i:2756;s:3:"⡶";i:2757;s:3:"â¡·";i:2758;s:3:"⡸";i:2759;s:3:"⡹";i:2760;s:3:"⡺";i:2761;s:3:"â¡»";i:2762;s:3:"⡼";i:2763;s:3:"⡽";i:2764;s:3:"⡾";i:2765;s:3:"â¡¿";i:2766;s:3:"⢀";i:2767;s:3:"â¢";i:2768;s:3:"⢂";i:2769;s:3:"⢃";i:2770;s:3:"⢄";i:2771;s:3:"⢅";i:2772;s:3:"⢆";i:2773;s:3:"⢇";i:2774;s:3:"⢈";i:2775;s:3:"⢉";i:2776;s:3:"⢊";i:2777;s:3:"⢋";i:2778;s:3:"⢌";i:2779;s:3:"â¢";i:2780;s:3:"⢎";i:2781;s:3:"â¢";i:2782;s:3:"â¢";i:2783;s:3:"⢑";i:2784;s:3:"⢒";i:2785;s:3:"⢓";i:2786;s:3:"⢔";i:2787;s:3:"⢕";i:2788;s:3:"⢖";i:2789;s:3:"⢗";i:2790;s:3:"⢘";i:2791;s:3:"⢙";i:2792;s:3:"⢚";i:2793;s:3:"⢛";i:2794;s:3:"⢜";i:2795;s:3:"â¢";i:2796;s:3:"⢞";i:2797;s:3:"⢟";i:2798;s:3:"⢠";i:2799;s:3:"⢡";i:2800;s:3:"⢢";i:2801;s:3:"⢣";i:2802;s:3:"⢤";i:2803;s:3:"⢥";i:2804;s:3:"⢦";i:2805;s:3:"⢧";i:2806;s:3:"⢨";i:2807;s:3:"⢩";i:2808;s:3:"⢪";i:2809;s:3:"⢫";i:2810;s:3:"⢬";i:2811;s:3:"⢭";i:2812;s:3:"⢮";i:2813;s:3:"⢯";i:2814;s:3:"⢰";i:2815;s:3:"⢱";i:2816;s:3:"⢲";i:2817;s:3:"⢳";i:2818;s:3:"⢴";i:2819;s:3:"⢵";i:2820;s:3:"⢶";i:2821;s:3:"⢷";i:2822;s:3:"⢸";i:2823;s:3:"⢹";i:2824;s:3:"⢺";i:2825;s:3:"⢻";i:2826;s:3:"⢼";i:2827;s:3:"⢽";i:2828;s:3:"⢾";i:2829;s:3:"⢿";i:2830;s:3:"⣀";i:2831;s:3:"â£";i:2832;s:3:"⣂";i:2833;s:3:"⣃";i:2834;s:3:"⣄";i:2835;s:3:"⣅";i:2836;s:3:"⣆";i:2837;s:3:"⣇";i:2838;s:3:"⣈";i:2839;s:3:"⣉";i:2840;s:3:"⣊";i:2841;s:3:"⣋";i:2842;s:3:"⣌";i:2843;s:3:"â£";i:2844;s:3:"⣎";i:2845;s:3:"â£";i:2846;s:3:"â£";i:2847;s:3:"⣑";i:2848;s:3:"⣒";i:2849;s:3:"⣓";i:2850;s:3:"⣔";i:2851;s:3:"⣕";i:2852;s:3:"⣖";i:2853;s:3:"⣗";i:2854;s:3:"⣘";i:2855;s:3:"⣙";i:2856;s:3:"⣚";i:2857;s:3:"⣛";i:2858;s:3:"⣜";i:2859;s:3:"â£";i:2860;s:3:"⣞";i:2861;s:3:"⣟";i:2862;s:3:"⣠";i:2863;s:3:"⣡";i:2864;s:3:"⣢";i:2865;s:3:"⣣";i:2866;s:3:"⣤";i:2867;s:3:"⣥";i:2868;s:3:"⣦";i:2869;s:3:"⣧";i:2870;s:3:"⣨";i:2871;s:3:"⣩";i:2872;s:3:"⣪";i:2873;s:3:"⣫";i:2874;s:3:"⣬";i:2875;s:3:"⣭";i:2876;s:3:"⣮";i:2877;s:3:"⣯";i:2878;s:3:"⣰";i:2879;s:3:"⣱";i:2880;s:3:"⣲";i:2881;s:3:"⣳";i:2882;s:3:"⣴";i:2883;s:3:"⣵";i:2884;s:3:"⣶";i:2885;s:3:"⣷";i:2886;s:3:"⣸";i:2887;s:3:"⣹";i:2888;s:3:"⣺";i:2889;s:3:"⣻";i:2890;s:3:"⣼";i:2891;s:3:"⣽";i:2892;s:3:"⣾";i:2893;s:3:"⣿";i:2894;s:3:"⚊";i:2895;s:3:"âš‹";i:2896;s:3:"⚌";i:2897;s:3:"âš";i:2898;s:3:"⚎";i:2899;s:3:"âš";i:2900;s:3:"☰";i:2901;s:3:"☱";i:2902;s:3:"☲";i:2903;s:3:"☳";i:2904;s:3:"☴";i:2905;s:3:"☵";i:2906;s:3:"☶";i:2907;s:3:"☷";i:2908;s:3:"ä·€";i:2909;s:3:"ä·";i:2910;s:3:"ä·‚";i:2911;s:3:"ä·ƒ";i:2912;s:3:"ä·„";i:2913;s:3:"ä·…";i:2914;s:3:"ä·†";i:2915;s:3:"ä·‡";i:2916;s:3:"ä·ˆ";i:2917;s:3:"ä·‰";i:2918;s:3:"ä·Š";i:2919;s:3:"ä·‹";i:2920;s:3:"ä·Œ";i:2921;s:3:"ä·";i:2922;s:3:"ä·Ž";i:2923;s:3:"ä·";i:2924;s:3:"ä·";i:2925;s:3:"ä·‘";i:2926;s:3:"ä·’";i:2927;s:3:"ä·“";i:2928;s:3:"ä·”";i:2929;s:3:"ä·•";i:2930;s:3:"ä·–";i:2931;s:3:"ä·—";i:2932;s:3:"ä·˜";i:2933;s:3:"ä·™";i:2934;s:3:"ä·š";i:2935;s:3:"ä·›";i:2936;s:3:"ä·œ";i:2937;s:3:"ä·";i:2938;s:3:"ä·ž";i:2939;s:3:"ä·Ÿ";i:2940;s:3:"ä· ";i:2941;s:3:"ä·¡";i:2942;s:3:"ä·¢";i:2943;s:3:"ä·£";i:2944;s:3:"ä·¤";i:2945;s:3:"ä·¥";i:2946;s:3:"ä·¦";i:2947;s:3:"ä·§";i:2948;s:3:"ä·¨";i:2949;s:3:"ä·©";i:2950;s:3:"ä·ª";i:2951;s:3:"ä·«";i:2952;s:3:"ä·¬";i:2953;s:3:"ä·­";i:2954;s:3:"ä·®";i:2955;s:3:"ä·¯";i:2956;s:3:"ä·°";i:2957;s:3:"ä·±";i:2958;s:3:"ä·²";i:2959;s:3:"ä·³";i:2960;s:3:"ä·´";i:2961;s:3:"ä·µ";i:2962;s:3:"ä·¶";i:2963;s:3:"ä··";i:2964;s:3:"ä·¸";i:2965;s:3:"ä·¹";i:2966;s:3:"ä·º";i:2967;s:3:"ä·»";i:2968;s:3:"ä·¼";i:2969;s:3:"ä·½";i:2970;s:3:"ä·¾";i:2971;s:3:"ä·¿";i:2972;s:4:"ðŒ€";i:2973;s:4:"ðŒ";i:2974;s:4:"ðŒ‚";i:2975;s:4:"ðŒƒ";i:2976;s:4:"ðŒ„";i:2977;s:4:"ðŒ…";i:2978;s:4:"ðŒ†";i:2979;s:4:"ðŒ‡";i:2980;s:4:"ðŒˆ";i:2981;s:4:"ðŒ‰";i:2982;s:4:"ðŒŠ";i:2983;s:4:"ðŒ‹";i:2984;s:4:"ðŒŒ";i:2985;s:4:"ðŒ";i:2986;s:4:"ðŒŽ";i:2987;s:4:"ðŒ";i:2988;s:4:"ðŒ";i:2989;s:4:"ðŒ‘";i:2990;s:4:"ðŒ’";i:2991;s:4:"ðŒ“";i:2992;s:4:"ðŒ”";i:2993;s:4:"ðŒ•";i:2994;s:4:"ðŒ–";i:2995;s:4:"ðŒ—";i:2996;s:4:"ðŒ˜";i:2997;s:4:"ðŒ™";i:2998;s:4:"ðŒš";i:2999;s:4:"ðŒ›";i:3000;s:4:"ðŒœ";i:3001;s:4:"ðŒ";i:3002;s:4:"ðŒž";i:3003;s:4:"ðŒŸ";i:3004;s:4:"ðŒ ";i:3005;s:4:"ðŒ¡";i:3006;s:4:"ðŒ¢";i:3007;s:4:"ðŒ£";i:3008;s:4:"ðŒ¤";i:3009;s:4:"ðŒ¥";i:3010;s:4:"ðŒ¦";i:3011;s:4:"ðŒ§";i:3012;s:4:"ðŒ¨";i:3013;s:4:"ðŒ©";i:3014;s:4:"ðŒª";i:3015;s:4:"ðŒ«";i:3016;s:4:"ðŒ¬";i:3017;s:4:"ðŒ­";i:3018;s:4:"ðŒ®";i:3019;s:4:"ðŒ¯";i:3020;s:4:"ðŒ°";i:3021;s:4:"ðŒ±";i:3022;s:4:"ðŒ²";i:3023;s:4:"ðŒ³";i:3024;s:4:"ðŒ´";i:3025;s:4:"ðŒµ";i:3026;s:4:"ðŒ¶";i:3027;s:4:"ðŒ·";i:3028;s:4:"ðŒ¸";i:3029;s:4:"ðŒ¹";i:3030;s:4:"ðŒº";i:3031;s:4:"ðŒ»";i:3032;s:4:"ðŒ¼";i:3033;s:4:"ðŒ½";i:3034;s:4:"ðŒ¾";i:3035;s:4:"ðŒ¿";i:3036;s:4:"ð€";i:3037;s:4:"ð";i:3038;s:4:"ð‚";i:3039;s:4:"ðƒ";i:3040;s:4:"ð„";i:3041;s:4:"ð…";i:3042;s:4:"ð†";i:3043;s:4:"ð‡";i:3044;s:4:"ðˆ";i:3045;s:4:"ð‰";i:3046;s:4:"ðŠ";i:3047;s:4:"ð‹";i:3048;s:4:"ðŒ";i:3049;s:4:"ð";i:3050;s:4:"ðŽ";i:3051;s:4:"ð";i:3052;s:4:"ð";i:3053;s:4:"ð‘";i:3054;s:4:"ð’";i:3055;s:4:"ð“";i:3056;s:4:"ð”";i:3057;s:4:"ð•";i:3058;s:4:"ð–";i:3059;s:3:"ê’";i:3060;s:3:"ê’‘";i:3061;s:3:"ê’’";i:3062;s:3:"ê’“";i:3063;s:3:"ê’”";i:3064;s:3:"ê’•";i:3065;s:3:"ê’–";i:3066;s:3:"ê’—";i:3067;s:3:"ê’˜";i:3068;s:3:"ê’™";i:3069;s:3:"ê’š";i:3070;s:3:"ê’›";i:3071;s:3:"ê’œ";i:3072;s:3:"ê’";i:3073;s:3:"ê’ž";i:3074;s:3:"ê’Ÿ";i:3075;s:3:"ê’ ";i:3076;s:3:"ê’¡";i:3077;s:3:"ê’¢";i:3078;s:3:"ê’£";i:3079;s:3:"ê’¤";i:3080;s:3:"ê’¥";i:3081;s:3:"ê’¦";i:3082;s:3:"ê’§";i:3083;s:3:"ê’¨";i:3084;s:3:"ê’©";i:3085;s:3:"ê’ª";i:3086;s:3:"ê’«";i:3087;s:3:"ê’¬";i:3088;s:3:"ê’­";i:3089;s:3:"ê’®";i:3090;s:3:"ê’¯";i:3091;s:3:"ê’°";i:3092;s:3:"ê’±";i:3093;s:3:"ê’²";i:3094;s:3:"ê’³";i:3095;s:3:"ê’´";i:3096;s:3:"ê’µ";i:3097;s:3:"ê’¶";i:3098;s:3:"ê’·";i:3099;s:3:"ê’¸";i:3100;s:3:"ê’¹";i:3101;s:3:"ê’º";i:3102;s:3:"ê’»";i:3103;s:3:"ê’¼";i:3104;s:3:"ê’½";i:3105;s:3:"ê’¾";i:3106;s:3:"ê’¿";i:3107;s:3:"ê“€";i:3108;s:3:"ê“";i:3109;s:3:"ê“‚";i:3110;s:3:"꓃";i:3111;s:3:"ê“„";i:3112;s:3:"ê“…";i:3113;s:3:"꓆";i:3114;s:4:"ð„·";i:3115;s:4:"ð„¸";i:3116;s:4:"ð„¹";i:3117;s:4:"ð„º";i:3118;s:4:"ð„»";i:3119;s:4:"ð„¼";i:3120;s:4:"ð„½";i:3121;s:4:"ð„¾";i:3122;s:4:"ð„¿";i:3123;s:4:"ð…¹";i:3124;s:4:"ð…º";i:3125;s:4:"ð…»";i:3126;s:4:"ð…¼";i:3127;s:4:"ð…½";i:3128;s:4:"ð…¾";i:3129;s:4:"ð…¿";i:3130;s:4:"ð†€";i:3131;s:4:"ð†";i:3132;s:4:"ð†‚";i:3133;s:4:"ð†ƒ";i:3134;s:4:"ð†„";i:3135;s:4:"ð†…";i:3136;s:4:"ð††";i:3137;s:4:"ð†‡";i:3138;s:4:"ð†ˆ";i:3139;s:4:"ð†‰";i:3140;s:4:"ð†";i:3141;s:4:"ð†‘";i:3142;s:4:"ð†’";i:3143;s:4:"ð†“";i:3144;s:4:"ð†”";i:3145;s:4:"ð†•";i:3146;s:4:"ð†–";i:3147;s:4:"ð†—";i:3148;s:4:"ð†˜";i:3149;s:4:"ð†™";i:3150;s:4:"ð†š";i:3151;s:4:"ð†›";i:3152;s:4:"ð‡";i:3153;s:4:"ð‡‘";i:3154;s:4:"ð‡’";i:3155;s:4:"ð‡“";i:3156;s:4:"ð‡”";i:3157;s:4:"ð‡•";i:3158;s:4:"ð‡–";i:3159;s:4:"ð‡—";i:3160;s:4:"ð‡˜";i:3161;s:4:"ð‡™";i:3162;s:4:"ð‡š";i:3163;s:4:"ð‡›";i:3164;s:4:"ð‡œ";i:3165;s:4:"ð‡";i:3166;s:4:"ð‡ž";i:3167;s:4:"ð‡Ÿ";i:3168;s:4:"ð‡ ";i:3169;s:4:"ð‡¡";i:3170;s:4:"ð‡¢";i:3171;s:4:"ð‡£";i:3172;s:4:"ð‡¤";i:3173;s:4:"ð‡¥";i:3174;s:4:"ð‡¦";i:3175;s:4:"ð‡§";i:3176;s:4:"ð‡¨";i:3177;s:4:"ð‡©";i:3178;s:4:"ð‡ª";i:3179;s:4:"ð‡«";i:3180;s:4:"ð‡¬";i:3181;s:4:"ð‡­";i:3182;s:4:"ð‡®";i:3183;s:4:"ð‡¯";i:3184;s:4:"ð‡°";i:3185;s:4:"ð‡±";i:3186;s:4:"ð‡²";i:3187;s:4:"ð‡³";i:3188;s:4:"ð‡´";i:3189;s:4:"ð‡µ";i:3190;s:4:"ð‡¶";i:3191;s:4:"ð‡·";i:3192;s:4:"ð‡¸";i:3193;s:4:"ð‡¹";i:3194;s:4:"ð‡º";i:3195;s:4:"ð‡»";i:3196;s:4:"ð‡¼";i:3197;s:4:"ð€€";i:3198;s:4:"ð€";i:3199;s:4:"ð€‚";i:3200;s:4:"ð€ƒ";i:3201;s:4:"ð€„";i:3202;s:4:"ð€…";i:3203;s:4:"ð€†";i:3204;s:4:"ð€‡";i:3205;s:4:"ð€ˆ";i:3206;s:4:"ð€‰";i:3207;s:4:"ð€Š";i:3208;s:4:"ð€‹";i:3209;s:4:"ð€Œ";i:3210;s:4:"ð€";i:3211;s:4:"ð€Ž";i:3212;s:4:"ð€";i:3213;s:4:"ð€";i:3214;s:4:"ð€‘";i:3215;s:4:"ð€’";i:3216;s:4:"ð€“";i:3217;s:4:"ð€”";i:3218;s:4:"ð€•";i:3219;s:4:"ð€–";i:3220;s:4:"ð€—";i:3221;s:4:"ð€˜";i:3222;s:4:"ð€™";i:3223;s:4:"ð€š";i:3224;s:4:"ð€›";i:3225;s:4:"ð€œ";i:3226;s:4:"ð€";i:3227;s:4:"ð€ž";i:3228;s:4:"ð€Ÿ";i:3229;s:4:"ð€ ";i:3230;s:4:"ð€¡";i:3231;s:4:"ð€¢";i:3232;s:4:"ð€£";i:3233;s:4:"ð€¤";i:3234;s:4:"ð€¥";i:3235;s:4:"ð€¦";i:3236;s:4:"ð€§";i:3237;s:4:"ð€¨";i:3238;s:4:"ð€©";i:3239;s:4:"ð€ª";i:3240;s:4:"ð€«";i:3241;s:4:"ð€¬";i:3242;s:4:"ð€­";i:3243;s:4:"ð€®";i:3244;s:4:"ð€¯";i:3245;s:4:"ð€°";i:3246;s:4:"ð€±";i:3247;s:4:"ð€²";i:3248;s:4:"ð€³";i:3249;s:4:"ð€´";i:3250;s:4:"ð€µ";i:3251;s:4:"ð€¶";i:3252;s:4:"ð€·";i:3253;s:4:"ð€¸";i:3254;s:4:"ð€¹";i:3255;s:4:"ð€º";i:3256;s:4:"ð€»";i:3257;s:4:"ð€¼";i:3258;s:4:"ð€½";i:3259;s:4:"ð€¾";i:3260;s:4:"ð€¿";i:3261;s:4:"ð€";i:3262;s:4:"ð";i:3263;s:4:"ð‚";i:3264;s:4:"ðƒ";i:3265;s:4:"ð„";i:3266;s:4:"ð…";i:3267;s:4:"ð†";i:3268;s:4:"ð‡";i:3269;s:4:"ðˆ";i:3270;s:4:"ð‰";i:3271;s:4:"ðŠ";i:3272;s:4:"ð‹";i:3273;s:4:"ðŒ";i:3274;s:4:"ð";i:3275;s:4:"ðŽ";i:3276;s:4:"ð";i:3277;s:4:"ð";i:3278;s:4:"ð‘";i:3279;s:4:"ð’";i:3280;s:4:"ð“";i:3281;s:4:"ð”";i:3282;s:4:"ð•";i:3283;s:4:"ð–";i:3284;s:4:"ð—";i:3285;s:4:"ð˜";i:3286;s:4:"ð™";i:3287;s:4:"ðš";i:3288;s:4:"ð›";i:3289;s:4:"ðœ";i:3290;s:4:"ð";i:3291;s:4:"ðž";i:3292;s:4:"ðŸ";i:3293;s:4:"ð ";i:3294;s:4:"ð¡";i:3295;s:4:"ð¢";i:3296;s:4:"ð£";i:3297;s:4:"ð¤";i:3298;s:4:"ð¥";i:3299;s:4:"ð¦";i:3300;s:4:"ð§";i:3301;s:4:"ð¨";i:3302;s:4:"ð©";i:3303;s:4:"ðª";i:3304;s:4:"ð«";i:3305;s:4:"ð¬";i:3306;s:4:"ð­";i:3307;s:4:"ð®";i:3308;s:4:"ð¯";i:3309;s:4:"ð°";i:3310;s:4:"ð±";i:3311;s:4:"ð²";i:3312;s:4:"ð³";i:3313;s:4:"ð´";i:3314;s:4:"ðµ";i:3315;s:4:"ð¶";i:3316;s:4:"ð·";i:3317;s:4:"ð¸";i:3318;s:4:"ð¹";i:3319;s:4:"ðº";i:3320;s:4:"ð»";i:3321;s:4:"ð¼";i:3322;s:4:"ð½";i:3323;s:4:"ð¾";i:3324;s:4:"ð¿";i:3325;s:4:"ð‚€";i:3326;s:4:"ð‚";i:3327;s:4:"ð‚‚";i:3328;s:4:"ð‚ƒ";i:3329;s:4:"ð‚„";i:3330;s:4:"ð‚…";i:3331;s:4:"ð‚†";i:3332;s:4:"ð‚‡";i:3333;s:4:"ð‚ˆ";i:3334;s:4:"ð‚‰";i:3335;s:4:"ð‚Š";i:3336;s:4:"ð‚‹";i:3337;s:4:"ð‚Œ";i:3338;s:4:"ð‚";i:3339;s:4:"ð‚Ž";i:3340;s:4:"ð‚";i:3341;s:4:"ð‚";i:3342;s:4:"ð‚‘";i:3343;s:4:"ð‚’";i:3344;s:4:"ð‚“";i:3345;s:4:"ð‚”";i:3346;s:4:"ð‚•";i:3347;s:4:"ð‚–";i:3348;s:4:"ð‚—";i:3349;s:4:"ð‚˜";i:3350;s:4:"ð‚™";i:3351;s:4:"ð‚š";i:3352;s:4:"ð‚›";i:3353;s:4:"ð‚œ";i:3354;s:4:"ð‚";i:3355;s:4:"ð‚ž";i:3356;s:4:"ð‚Ÿ";i:3357;s:4:"ð‚ ";i:3358;s:4:"ð‚¡";i:3359;s:4:"ð‚¢";i:3360;s:4:"ð‚£";i:3361;s:4:"ð‚¤";i:3362;s:4:"ð‚¥";i:3363;s:4:"ð‚¦";i:3364;s:4:"ð‚§";i:3365;s:4:"ð‚¨";i:3366;s:4:"ð‚©";i:3367;s:4:"ð‚ª";i:3368;s:4:"ð‚«";i:3369;s:4:"ð‚¬";i:3370;s:4:"ð‚­";i:3371;s:4:"ð‚®";i:3372;s:4:"ð‚¯";i:3373;s:4:"ð‚°";i:3374;s:4:"ð‚±";i:3375;s:4:"ð‚²";i:3376;s:4:"ð‚³";i:3377;s:4:"ð‚´";i:3378;s:4:"ð‚µ";i:3379;s:4:"ð‚¶";i:3380;s:4:"ð‚·";i:3381;s:4:"ð‚¸";i:3382;s:4:"ð‚¹";i:3383;s:4:"ð‚º";i:3384;s:4:"ð‚»";i:3385;s:4:"ð‚¼";i:3386;s:4:"ð‚½";i:3387;s:4:"ð‚¾";i:3388;s:4:"ð‚¿";i:3389;s:4:"ðƒ€";i:3390;s:4:"ðƒ";i:3391;s:4:"ðƒ‚";i:3392;s:4:"ðƒƒ";i:3393;s:4:"ðƒ„";i:3394;s:4:"ðƒ…";i:3395;s:4:"ðƒ†";i:3396;s:4:"ðƒ‡";i:3397;s:4:"ðƒˆ";i:3398;s:4:"ðƒ‰";i:3399;s:4:"ðƒŠ";i:3400;s:4:"ðƒ‹";i:3401;s:4:"ðƒŒ";i:3402;s:4:"ðƒ";i:3403;s:4:"ðƒŽ";i:3404;s:4:"ðƒ";i:3405;s:4:"ðƒ";i:3406;s:4:"ðƒ‘";i:3407;s:4:"ðƒ’";i:3408;s:4:"ðƒ“";i:3409;s:4:"ðƒ”";i:3410;s:4:"ðƒ•";i:3411;s:4:"ðƒ–";i:3412;s:4:"ðƒ—";i:3413;s:4:"ðƒ˜";i:3414;s:4:"ðƒ™";i:3415;s:4:"ðƒš";i:3416;s:4:"ðƒ›";i:3417;s:4:"ðƒœ";i:3418;s:4:"ðƒ";i:3419;s:4:"ðƒž";i:3420;s:4:"ðƒŸ";i:3421;s:4:"ðƒ ";i:3422;s:4:"ðƒ¡";i:3423;s:4:"ðƒ¢";i:3424;s:4:"ðƒ£";i:3425;s:4:"ðƒ¤";i:3426;s:4:"ðƒ¥";i:3427;s:4:"ðƒ¦";i:3428;s:4:"ðƒ§";i:3429;s:4:"ðƒ¨";i:3430;s:4:"ðƒ©";i:3431;s:4:"ðƒª";i:3432;s:4:"ðƒ«";i:3433;s:4:"ðƒ¬";i:3434;s:4:"ðƒ­";i:3435;s:4:"ðƒ®";i:3436;s:4:"ðƒ¯";i:3437;s:4:"ðƒ°";i:3438;s:4:"ðƒ±";i:3439;s:4:"ðƒ²";i:3440;s:4:"ðƒ³";i:3441;s:4:"ðƒ´";i:3442;s:4:"ðƒµ";i:3443;s:4:"ð„€";i:3444;s:4:"ð„";i:3445;s:4:"ð„‚";i:3446;s:4:"ð„ƒ";i:3447;s:4:"ð„„";i:3448;s:4:"ð„…";i:3449;s:4:"ð„†";i:3450;s:4:"ð„‡";i:3451;s:4:"ð„ˆ";i:3452;s:4:"ð„‰";i:3453;s:4:"ð„Š";i:3454;s:4:"ð„‹";i:3455;s:4:"ð„Œ";i:3456;s:4:"ð„";i:3457;s:4:"ð„Ž";i:3458;s:4:"ð„";i:3459;s:4:"ð„";i:3460;s:4:"ð„‘";i:3461;s:4:"ð„’";i:3462;s:4:"ð„“";i:3463;s:4:"ð„”";i:3464;s:4:"ð„•";i:3465;s:4:"ð„–";i:3466;s:4:"ð„—";i:3467;s:4:"ð„˜";i:3468;s:4:"ð„™";i:3469;s:4:"ð„š";i:3470;s:4:"ð„›";i:3471;s:4:"ð„œ";i:3472;s:4:"ð„";i:3473;s:4:"ð„ž";i:3474;s:4:"ð„Ÿ";i:3475;s:4:"ð„ ";i:3476;s:4:"ð„¡";i:3477;s:4:"ð„¢";i:3478;s:4:"ð„£";i:3479;s:4:"ð„¤";i:3480;s:4:"ð„¥";i:3481;s:4:"ð„¦";i:3482;s:3:"â™­";i:3483;s:3:"â™®";i:3484;s:3:"♯";i:3485;s:4:"ð„ª";i:3486;s:4:"ð„«";i:3487;s:4:"ð„¬";i:3488;s:4:"ð„­";i:3489;s:4:"ð„®";i:3490;s:4:"ð„¯";i:3491;s:4:"ð„°";i:3492;s:4:"ð„±";i:3493;s:4:"ð„²";i:3494;s:4:"ð„³";i:3495;s:4:"ð„´";i:3496;s:4:"ð„µ";i:3497;s:4:"ð„¶";i:3498;s:4:"ð„·";i:3499;s:4:"ð„¸";i:3500;s:4:"ð„¹";i:3501;s:4:"ð„©";i:3502;s:4:"ð„º";i:3503;s:4:"ð„»";i:3504;s:4:"ð„¼";i:3505;s:4:"ð„½";i:3506;s:4:"ð„¾";i:3507;s:4:"ð„¿";i:3508;s:4:"ð…€";i:3509;s:4:"ð…";i:3510;s:4:"ð…‚";i:3511;s:4:"ð…ƒ";i:3512;s:4:"ð…„";i:3513;s:4:"ð……";i:3514;s:4:"ð…†";i:3515;s:4:"ð…‡";i:3516;s:4:"ð…ˆ";i:3517;s:4:"ð…‰";i:3518;s:4:"ð…Š";i:3519;s:4:"ð…‹";i:3520;s:4:"ð…Œ";i:3521;s:4:"ð…";i:3522;s:4:"ð…Ž";i:3523;s:4:"ð…";i:3524;s:4:"ð…";i:3525;s:4:"ð…‘";i:3526;s:4:"ð…’";i:3527;s:4:"ð…“";i:3528;s:4:"ð…”";i:3529;s:4:"ð…•";i:3530;s:4:"ð…–";i:3531;s:4:"ð…—";i:3532;s:4:"ð…˜";i:3533;s:4:"ð…™";i:3534;s:4:"ð…š";i:3535;s:4:"ð…›";i:3536;s:4:"ð…œ";i:3537;s:4:"ð…";i:3538;s:4:"ð…ª";i:3539;s:4:"ð…«";i:3540;s:4:"ð…¬";i:3541;s:4:"ð†ƒ";i:3542;s:4:"ð†„";i:3543;s:4:"ð†Œ";i:3544;s:4:"ð†";i:3545;s:4:"ð†Ž";i:3546;s:4:"ð†";i:3547;s:4:"ð†";i:3548;s:4:"ð†‘";i:3549;s:4:"ð†’";i:3550;s:4:"ð†“";i:3551;s:4:"ð†”";i:3552;s:4:"ð†•";i:3553;s:4:"ð†–";i:3554;s:4:"ð†—";i:3555;s:4:"ð†˜";i:3556;s:4:"ð†™";i:3557;s:4:"ð†š";i:3558;s:4:"ð†›";i:3559;s:4:"ð†œ";i:3560;s:4:"ð†";i:3561;s:4:"ð†ž";i:3562;s:4:"ð†Ÿ";i:3563;s:4:"ð† ";i:3564;s:4:"ð†¡";i:3565;s:4:"ð†¢";i:3566;s:4:"ð†£";i:3567;s:4:"ð†¤";i:3568;s:4:"ð†¥";i:3569;s:4:"ð†¦";i:3570;s:4:"ð†§";i:3571;s:4:"ð†¨";i:3572;s:4:"ð†©";i:3573;s:4:"ð†®";i:3574;s:4:"ð†¯";i:3575;s:4:"ð†°";i:3576;s:4:"ð†±";i:3577;s:4:"ð†²";i:3578;s:4:"ð†³";i:3579;s:4:"ð†´";i:3580;s:4:"ð†µ";i:3581;s:4:"ð†¶";i:3582;s:4:"ð†·";i:3583;s:4:"ð†¸";i:3584;s:4:"ð†¹";i:3585;s:4:"ð†º";i:3586;s:4:"ð‡";i:3587;s:4:"ð‡‚";i:3588;s:4:"ð‡ƒ";i:3589;s:4:"ð‡„";i:3590;s:4:"ð‡…";i:3591;s:4:"ð‡†";i:3592;s:4:"ð‡‡";i:3593;s:4:"ð‡ˆ";i:3594;s:4:"ð‡‰";i:3595;s:4:"ð‡Š";i:3596;s:4:"ð‡‹";i:3597;s:4:"ð‡Œ";i:3598;s:4:"ð‡";i:3599;s:4:"ð‡Ž";i:3600;s:4:"ð‡";i:3601;s:4:"ð‡";i:3602;s:4:"ð‡‘";i:3603;s:4:"ð‡’";i:3604;s:4:"ð‡“";i:3605;s:4:"ð‡”";i:3606;s:4:"ð‡•";i:3607;s:4:"ð‡–";i:3608;s:4:"ð‡—";i:3609;s:4:"ð‡˜";i:3610;s:4:"ð‡™";i:3611;s:4:"ð‡š";i:3612;s:4:"ð‡›";i:3613;s:4:"ð‡œ";i:3614;s:4:"ð‡";i:3615;s:4:"ðˆ€";i:3616;s:4:"ðˆ";i:3617;s:4:"ðˆ‚";i:3618;s:4:"ðˆƒ";i:3619;s:4:"ðˆ„";i:3620;s:4:"ðˆ…";i:3621;s:4:"ðˆ†";i:3622;s:4:"ðˆ‡";i:3623;s:4:"ðˆˆ";i:3624;s:4:"ðˆ‰";i:3625;s:4:"ðˆŠ";i:3626;s:4:"ðˆ‹";i:3627;s:4:"ðˆŒ";i:3628;s:4:"ðˆ";i:3629;s:4:"ðˆŽ";i:3630;s:4:"ðˆ";i:3631;s:4:"ðˆ";i:3632;s:4:"ðˆ‘";i:3633;s:4:"ðˆ’";i:3634;s:4:"ðˆ“";i:3635;s:4:"ðˆ”";i:3636;s:4:"ðˆ•";i:3637;s:4:"ðˆ–";i:3638;s:4:"ðˆ—";i:3639;s:4:"ðˆ˜";i:3640;s:4:"ðˆ™";i:3641;s:4:"ðˆš";i:3642;s:4:"ðˆ›";i:3643;s:4:"ðˆœ";i:3644;s:4:"ðˆ";i:3645;s:4:"ðˆž";i:3646;s:4:"ðˆŸ";i:3647;s:4:"ðˆ ";i:3648;s:4:"ðˆ¡";i:3649;s:4:"ðˆ¢";i:3650;s:4:"ðˆ£";i:3651;s:4:"ðˆ¤";i:3652;s:4:"ðˆ¥";i:3653;s:4:"ðˆ¦";i:3654;s:4:"ðˆ§";i:3655;s:4:"ðˆ¨";i:3656;s:4:"ðˆ©";i:3657;s:4:"ðˆª";i:3658;s:4:"ðˆ«";i:3659;s:4:"ðˆ¬";i:3660;s:4:"ðˆ­";i:3661;s:4:"ðˆ®";i:3662;s:4:"ðˆ¯";i:3663;s:4:"ðˆ°";i:3664;s:4:"ðˆ±";i:3665;s:4:"ðˆ²";i:3666;s:4:"ðˆ³";i:3667;s:4:"ðˆ´";i:3668;s:4:"ðˆµ";i:3669;s:4:"ðˆ¶";i:3670;s:4:"ðˆ·";i:3671;s:4:"ðˆ¸";i:3672;s:4:"ðˆ¹";i:3673;s:4:"ðˆº";i:3674;s:4:"ðˆ»";i:3675;s:4:"ðˆ¼";i:3676;s:4:"ðˆ½";i:3677;s:4:"ðˆ¾";i:3678;s:4:"ðˆ¿";i:3679;s:4:"ð‰€";i:3680;s:4:"ð‰";i:3681;s:4:"ð‰…";i:3682;s:4:"🀀";i:3683;s:4:"ðŸ€";i:3684;s:4:"🀂";i:3685;s:4:"🀃";i:3686;s:4:"🀄";i:3687;s:4:"🀅";i:3688;s:4:"🀆";i:3689;s:4:"🀇";i:3690;s:4:"🀈";i:3691;s:4:"🀉";i:3692;s:4:"🀊";i:3693;s:4:"🀋";i:3694;s:4:"🀌";i:3695;s:4:"ðŸ€";i:3696;s:4:"🀎";i:3697;s:4:"ðŸ€";i:3698;s:4:"ðŸ€";i:3699;s:4:"🀑";i:3700;s:4:"🀒";i:3701;s:4:"🀓";i:3702;s:4:"🀔";i:3703;s:4:"🀕";i:3704;s:4:"🀖";i:3705;s:4:"🀗";i:3706;s:4:"🀘";i:3707;s:4:"🀙";i:3708;s:4:"🀚";i:3709;s:4:"🀛";i:3710;s:4:"🀜";i:3711;s:4:"ðŸ€";i:3712;s:4:"🀞";i:3713;s:4:"🀟";i:3714;s:4:"🀠";i:3715;s:4:"🀡";i:3716;s:4:"🀢";i:3717;s:4:"🀣";i:3718;s:4:"🀤";i:3719;s:4:"🀥";i:3720;s:4:"🀦";i:3721;s:4:"🀧";i:3722;s:4:"🀨";i:3723;s:4:"🀩";i:3724;s:4:"🀪";i:3725;s:4:"🀫";i:3726;s:4:"🀰";i:3727;s:4:"🀱";i:3728;s:4:"🀲";i:3729;s:4:"🀳";i:3730;s:4:"🀴";i:3731;s:4:"🀵";i:3732;s:4:"🀶";i:3733;s:4:"🀷";i:3734;s:4:"🀸";i:3735;s:4:"🀹";i:3736;s:4:"🀺";i:3737;s:4:"🀻";i:3738;s:4:"🀼";i:3739;s:4:"🀽";i:3740;s:4:"🀾";i:3741;s:4:"🀿";i:3742;s:4:"ðŸ€";i:3743;s:4:"ðŸ";i:3744;s:4:"ðŸ‚";i:3745;s:4:"ðŸƒ";i:3746;s:4:"ðŸ„";i:3747;s:4:"ðŸ…";i:3748;s:4:"ðŸ†";i:3749;s:4:"ðŸ‡";i:3750;s:4:"ðŸˆ";i:3751;s:4:"ðŸ‰";i:3752;s:4:"ðŸŠ";i:3753;s:4:"ðŸ‹";i:3754;s:4:"ðŸŒ";i:3755;s:4:"ðŸ";i:3756;s:4:"ðŸŽ";i:3757;s:4:"ðŸ";i:3758;s:4:"ðŸ";i:3759;s:4:"ðŸ‘";i:3760;s:4:"ðŸ’";i:3761;s:4:"ðŸ“";i:3762;s:4:"ðŸ”";i:3763;s:4:"ðŸ•";i:3764;s:4:"ðŸ–";i:3765;s:4:"ðŸ—";i:3766;s:4:"ðŸ˜";i:3767;s:4:"ðŸ™";i:3768;s:4:"ðŸš";i:3769;s:4:"ðŸ›";i:3770;s:4:"ðŸœ";i:3771;s:4:"ðŸ";i:3772;s:4:"ðŸž";i:3773;s:4:"ðŸŸ";i:3774;s:4:"ðŸ ";i:3775;s:4:"ðŸ¡";i:3776;s:4:"ðŸ¢";i:3777;s:4:"ðŸ£";i:3778;s:4:"ðŸ¤";i:3779;s:4:"ðŸ¥";i:3780;s:4:"ðŸ¦";i:3781;s:4:"ðŸ§";i:3782;s:4:"ðŸ¨";i:3783;s:4:"ðŸ©";i:3784;s:4:"ðŸª";i:3785;s:4:"ðŸ«";i:3786;s:4:"ðŸ¬";i:3787;s:4:"ðŸ­";i:3788;s:4:"ðŸ®";i:3789;s:4:"ðŸ¯";i:3790;s:4:"ðŸ°";i:3791;s:4:"ðŸ±";i:3792;s:4:"ðŸ²";i:3793;s:4:"ðŸ³";i:3794;s:4:"ðŸ´";i:3795;s:4:"ðŸµ";i:3796;s:4:"ðŸ¶";i:3797;s:4:"ðŸ·";i:3798;s:4:"ðŸ¸";i:3799;s:4:"ðŸ¹";i:3800;s:4:"ðŸº";i:3801;s:4:"ðŸ»";i:3802;s:4:"ðŸ¼";i:3803;s:4:"ðŸ½";i:3804;s:4:"ðŸ¾";i:3805;s:4:"ðŸ¿";i:3806;s:4:"🂀";i:3807;s:4:"ðŸ‚";i:3808;s:4:"🂂";i:3809;s:4:"🂃";i:3810;s:4:"🂄";i:3811;s:4:"🂅";i:3812;s:4:"🂆";i:3813;s:4:"🂇";i:3814;s:4:"🂈";i:3815;s:4:"🂉";i:3816;s:4:"🂊";i:3817;s:4:"🂋";i:3818;s:4:"🂌";i:3819;s:4:"ðŸ‚";i:3820;s:4:"🂎";i:3821;s:4:"ðŸ‚";i:3822;s:4:"ðŸ‚";i:3823;s:4:"🂑";i:3824;s:4:"🂒";i:3825;s:4:"🂓";i:3826;s:4:"🂠";i:3827;s:4:"🂡";i:3828;s:4:"🂢";i:3829;s:4:"🂣";i:3830;s:4:"🂤";i:3831;s:4:"🂥";i:3832;s:4:"🂦";i:3833;s:4:"🂧";i:3834;s:4:"🂨";i:3835;s:4:"🂩";i:3836;s:4:"🂪";i:3837;s:4:"🂫";i:3838;s:4:"🂬";i:3839;s:4:"🂭";i:3840;s:4:"🂮";i:3841;s:4:"🂱";i:3842;s:4:"🂲";i:3843;s:4:"🂳";i:3844;s:4:"🂴";i:3845;s:4:"🂵";i:3846;s:4:"🂶";i:3847;s:4:"🂷";i:3848;s:4:"🂸";i:3849;s:4:"🂹";i:3850;s:4:"🂺";i:3851;s:4:"🂻";i:3852;s:4:"🂼";i:3853;s:4:"🂽";i:3854;s:4:"🂾";i:3855;s:4:"ðŸƒ";i:3856;s:4:"🃂";i:3857;s:4:"🃃";i:3858;s:4:"🃄";i:3859;s:4:"🃅";i:3860;s:4:"🃆";i:3861;s:4:"🃇";i:3862;s:4:"🃈";i:3863;s:4:"🃉";i:3864;s:4:"🃊";i:3865;s:4:"🃋";i:3866;s:4:"🃌";i:3867;s:4:"ðŸƒ";i:3868;s:4:"🃎";i:3869;s:4:"ðŸƒ";i:3870;s:4:"🃑";i:3871;s:4:"🃒";i:3872;s:4:"🃓";i:3873;s:4:"🃔";i:3874;s:4:"🃕";i:3875;s:4:"🃖";i:3876;s:4:"🃗";i:3877;s:4:"🃘";i:3878;s:4:"🃙";i:3879;s:4:"🃚";i:3880;s:4:"🃛";i:3881;s:4:"🃜";i:3882;s:4:"ðŸƒ";i:3883;s:4:"🃞";i:3884;s:4:"🃟";i:3885;s:4:"🌀";i:3886;s:4:"ðŸŒ";i:3887;s:4:"🌂";i:3888;s:4:"🌃";i:3889;s:4:"🌄";i:3890;s:4:"🌅";i:3891;s:4:"🌆";i:3892;s:4:"🌇";i:3893;s:4:"🌈";i:3894;s:4:"🌉";i:3895;s:4:"🌊";i:3896;s:4:"🌋";i:3897;s:4:"🌌";i:3898;s:4:"ðŸŒ";i:3899;s:4:"🌎";i:3900;s:4:"ðŸŒ";i:3901;s:4:"ðŸŒ";i:3902;s:4:"🌑";i:3903;s:4:"🌒";i:3904;s:4:"🌓";i:3905;s:4:"🌔";i:3906;s:4:"🌕";i:3907;s:4:"🌖";i:3908;s:4:"🌗";i:3909;s:4:"🌘";i:3910;s:4:"🌙";i:3911;s:4:"🌚";i:3912;s:4:"🌛";i:3913;s:4:"🌜";i:3914;s:4:"ðŸŒ";i:3915;s:4:"🌞";i:3916;s:4:"🌟";i:3917;s:4:"🌠";i:3918;s:4:"🌰";i:3919;s:4:"🌱";i:3920;s:4:"🌲";i:3921;s:4:"🌳";i:3922;s:4:"🌴";i:3923;s:4:"🌵";i:3924;s:4:"🌷";i:3925;s:4:"🌸";i:3926;s:4:"🌹";i:3927;s:4:"🌺";i:3928;s:4:"🌻";i:3929;s:4:"🌼";i:3930;s:4:"🌽";i:3931;s:4:"🌾";i:3932;s:4:"🌿";i:3933;s:4:"ðŸ€";i:3934;s:4:"ðŸ";i:3935;s:4:"ðŸ‚";i:3936;s:4:"ðŸƒ";i:3937;s:4:"ðŸ„";i:3938;s:4:"ðŸ…";i:3939;s:4:"ðŸ†";i:3940;s:4:"ðŸ‡";i:3941;s:4:"ðŸˆ";i:3942;s:4:"ðŸ‰";i:3943;s:4:"ðŸŠ";i:3944;s:4:"ðŸ‹";i:3945;s:4:"ðŸŒ";i:3946;s:4:"ðŸ";i:3947;s:4:"ðŸŽ";i:3948;s:4:"ðŸ";i:3949;s:4:"ðŸ";i:3950;s:4:"ðŸ‘";i:3951;s:4:"ðŸ’";i:3952;s:4:"ðŸ“";i:3953;s:4:"ðŸ”";i:3954;s:4:"ðŸ•";i:3955;s:4:"ðŸ–";i:3956;s:4:"ðŸ—";i:3957;s:4:"ðŸ˜";i:3958;s:4:"ðŸ™";i:3959;s:4:"ðŸš";i:3960;s:4:"ðŸ›";i:3961;s:4:"ðŸœ";i:3962;s:4:"ðŸ";i:3963;s:4:"ðŸž";i:3964;s:4:"ðŸŸ";i:3965;s:4:"ðŸ ";i:3966;s:4:"ðŸ¡";i:3967;s:4:"ðŸ¢";i:3968;s:4:"ðŸ£";i:3969;s:4:"ðŸ¤";i:3970;s:4:"ðŸ¥";i:3971;s:4:"ðŸ¦";i:3972;s:4:"ðŸ§";i:3973;s:4:"ðŸ¨";i:3974;s:4:"ðŸ©";i:3975;s:4:"ðŸª";i:3976;s:4:"ðŸ«";i:3977;s:4:"ðŸ¬";i:3978;s:4:"ðŸ­";i:3979;s:4:"ðŸ®";i:3980;s:4:"ðŸ¯";i:3981;s:4:"ðŸ°";i:3982;s:4:"ðŸ±";i:3983;s:4:"ðŸ²";i:3984;s:4:"ðŸ³";i:3985;s:4:"ðŸ´";i:3986;s:4:"ðŸµ";i:3987;s:4:"ðŸ¶";i:3988;s:4:"ðŸ·";i:3989;s:4:"ðŸ¸";i:3990;s:4:"ðŸ¹";i:3991;s:4:"ðŸº";i:3992;s:4:"ðŸ»";i:3993;s:4:"ðŸ¼";i:3994;s:4:"🎀";i:3995;s:4:"ðŸŽ";i:3996;s:4:"🎂";i:3997;s:4:"🎃";i:3998;s:4:"🎄";i:3999;s:4:"🎅";i:4000;s:4:"🎆";i:4001;s:4:"🎇";i:4002;s:4:"🎈";i:4003;s:4:"🎉";i:4004;s:4:"🎊";i:4005;s:4:"🎋";i:4006;s:4:"🎌";i:4007;s:4:"ðŸŽ";i:4008;s:4:"🎎";i:4009;s:4:"ðŸŽ";i:4010;s:4:"ðŸŽ";i:4011;s:4:"🎑";i:4012;s:4:"🎒";i:4013;s:4:"🎓";i:4014;s:4:"🎠";i:4015;s:4:"🎡";i:4016;s:4:"🎢";i:4017;s:4:"🎣";i:4018;s:4:"🎤";i:4019;s:4:"🎥";i:4020;s:4:"🎦";i:4021;s:4:"🎧";i:4022;s:4:"🎨";i:4023;s:4:"🎩";i:4024;s:4:"🎪";i:4025;s:4:"🎫";i:4026;s:4:"🎬";i:4027;s:4:"🎭";i:4028;s:4:"🎮";i:4029;s:4:"🎯";i:4030;s:4:"🎰";i:4031;s:4:"🎱";i:4032;s:4:"🎲";i:4033;s:4:"🎳";i:4034;s:4:"🎴";i:4035;s:4:"🎵";i:4036;s:4:"🎶";i:4037;s:4:"🎷";i:4038;s:4:"🎸";i:4039;s:4:"🎹";i:4040;s:4:"🎺";i:4041;s:4:"🎻";i:4042;s:4:"🎼";i:4043;s:4:"🎽";i:4044;s:4:"🎾";i:4045;s:4:"🎿";i:4046;s:4:"ðŸ€";i:4047;s:4:"ðŸ";i:4048;s:4:"ðŸ‚";i:4049;s:4:"ðŸƒ";i:4050;s:4:"ðŸ„";i:4051;s:4:"ðŸ†";i:4052;s:4:"ðŸ‡";i:4053;s:4:"ðŸˆ";i:4054;s:4:"ðŸ‰";i:4055;s:4:"ðŸŠ";i:4056;s:4:"ðŸ ";i:4057;s:4:"ðŸ¡";i:4058;s:4:"ðŸ¢";i:4059;s:4:"ðŸ£";i:4060;s:4:"ðŸ¤";i:4061;s:4:"ðŸ¥";i:4062;s:4:"ðŸ¦";i:4063;s:4:"ðŸ§";i:4064;s:4:"ðŸ¨";i:4065;s:4:"ðŸ©";i:4066;s:4:"ðŸª";i:4067;s:4:"ðŸ«";i:4068;s:4:"ðŸ¬";i:4069;s:4:"ðŸ­";i:4070;s:4:"ðŸ®";i:4071;s:4:"ðŸ¯";i:4072;s:4:"ðŸ°";i:4073;s:4:"ðŸ€";i:4074;s:4:"ðŸ";i:4075;s:4:"ðŸ‚";i:4076;s:4:"ðŸƒ";i:4077;s:4:"ðŸ„";i:4078;s:4:"ðŸ…";i:4079;s:4:"ðŸ†";i:4080;s:4:"ðŸ‡";i:4081;s:4:"ðŸˆ";i:4082;s:4:"ðŸ‰";i:4083;s:4:"ðŸŠ";i:4084;s:4:"ðŸ‹";i:4085;s:4:"ðŸŒ";i:4086;s:4:"ðŸ";i:4087;s:4:"ðŸŽ";i:4088;s:4:"ðŸ";i:4089;s:4:"ðŸ";i:4090;s:4:"ðŸ‘";i:4091;s:4:"ðŸ’";i:4092;s:4:"ðŸ“";i:4093;s:4:"ðŸ”";i:4094;s:4:"ðŸ•";i:4095;s:4:"ðŸ–";i:4096;s:4:"ðŸ—";i:4097;s:4:"ðŸ˜";i:4098;s:4:"ðŸ™";i:4099;s:4:"ðŸš";i:4100;s:4:"ðŸ›";i:4101;s:4:"ðŸœ";i:4102;s:4:"ðŸ";i:4103;s:4:"ðŸž";i:4104;s:4:"ðŸŸ";i:4105;s:4:"ðŸ ";i:4106;s:4:"ðŸ¡";i:4107;s:4:"ðŸ¢";i:4108;s:4:"ðŸ£";i:4109;s:4:"ðŸ¤";i:4110;s:4:"ðŸ¥";i:4111;s:4:"ðŸ¦";i:4112;s:4:"ðŸ§";i:4113;s:4:"ðŸ¨";i:4114;s:4:"ðŸ©";i:4115;s:4:"ðŸª";i:4116;s:4:"ðŸ«";i:4117;s:4:"ðŸ¬";i:4118;s:4:"ðŸ­";i:4119;s:4:"ðŸ®";i:4120;s:4:"ðŸ¯";i:4121;s:4:"ðŸ°";i:4122;s:4:"ðŸ±";i:4123;s:4:"ðŸ²";i:4124;s:4:"ðŸ³";i:4125;s:4:"ðŸ´";i:4126;s:4:"ðŸµ";i:4127;s:4:"ðŸ¶";i:4128;s:4:"ðŸ·";i:4129;s:4:"ðŸ¸";i:4130;s:4:"ðŸ¹";i:4131;s:4:"ðŸº";i:4132;s:4:"ðŸ»";i:4133;s:4:"ðŸ¼";i:4134;s:4:"ðŸ½";i:4135;s:4:"ðŸ¾";i:4136;s:4:"👀";i:4137;s:4:"👂";i:4138;s:4:"👃";i:4139;s:4:"👄";i:4140;s:4:"👅";i:4141;s:4:"👆";i:4142;s:4:"👇";i:4143;s:4:"👈";i:4144;s:4:"👉";i:4145;s:4:"👊";i:4146;s:4:"👋";i:4147;s:4:"👌";i:4148;s:4:"ðŸ‘";i:4149;s:4:"👎";i:4150;s:4:"ðŸ‘";i:4151;s:4:"ðŸ‘";i:4152;s:4:"👑";i:4153;s:4:"👒";i:4154;s:4:"👓";i:4155;s:4:"👔";i:4156;s:4:"👕";i:4157;s:4:"👖";i:4158;s:4:"👗";i:4159;s:4:"👘";i:4160;s:4:"👙";i:4161;s:4:"👚";i:4162;s:4:"👛";i:4163;s:4:"👜";i:4164;s:4:"ðŸ‘";i:4165;s:4:"👞";i:4166;s:4:"👟";i:4167;s:4:"👠";i:4168;s:4:"👡";i:4169;s:4:"👢";i:4170;s:4:"👣";i:4171;s:4:"👤";i:4172;s:4:"👥";i:4173;s:4:"👦";i:4174;s:4:"👧";i:4175;s:4:"👨";i:4176;s:4:"👩";i:4177;s:4:"👪";i:4178;s:4:"👫";i:4179;s:4:"👬";i:4180;s:4:"👭";i:4181;s:4:"👮";i:4182;s:4:"👯";i:4183;s:4:"👰";i:4184;s:4:"👱";i:4185;s:4:"👲";i:4186;s:4:"👳";i:4187;s:4:"👴";i:4188;s:4:"👵";i:4189;s:4:"👶";i:4190;s:4:"👷";i:4191;s:4:"👸";i:4192;s:4:"👹";i:4193;s:4:"👺";i:4194;s:4:"👻";i:4195;s:4:"👼";i:4196;s:4:"👽";i:4197;s:4:"👾";i:4198;s:4:"👿";i:4199;s:4:"💀";i:4200;s:4:"ðŸ’";i:4201;s:4:"💂";i:4202;s:4:"💃";i:4203;s:4:"💄";i:4204;s:4:"💅";i:4205;s:4:"💆";i:4206;s:4:"💇";i:4207;s:4:"💈";i:4208;s:4:"💉";i:4209;s:4:"💊";i:4210;s:4:"💋";i:4211;s:4:"💌";i:4212;s:4:"ðŸ’";i:4213;s:4:"💎";i:4214;s:4:"ðŸ’";i:4215;s:4:"ðŸ’";i:4216;s:4:"💑";i:4217;s:4:"💒";i:4218;s:4:"💓";i:4219;s:4:"💔";i:4220;s:4:"💕";i:4221;s:4:"💖";i:4222;s:4:"💗";i:4223;s:4:"💘";i:4224;s:4:"💙";i:4225;s:4:"💚";i:4226;s:4:"💛";i:4227;s:4:"💜";i:4228;s:4:"ðŸ’";i:4229;s:4:"💞";i:4230;s:4:"💟";i:4231;s:4:"💠";i:4232;s:4:"💡";i:4233;s:4:"💢";i:4234;s:4:"💣";i:4235;s:4:"💤";i:4236;s:4:"💥";i:4237;s:4:"💦";i:4238;s:4:"💧";i:4239;s:4:"💨";i:4240;s:4:"💩";i:4241;s:4:"💪";i:4242;s:4:"💫";i:4243;s:4:"💬";i:4244;s:4:"💭";i:4245;s:4:"💮";i:4246;s:4:"💯";i:4247;s:4:"💰";i:4248;s:4:"💱";i:4249;s:4:"💲";i:4250;s:4:"💳";i:4251;s:4:"💴";i:4252;s:4:"💵";i:4253;s:4:"💶";i:4254;s:4:"💷";i:4255;s:4:"💸";i:4256;s:4:"💹";i:4257;s:4:"💺";i:4258;s:4:"💻";i:4259;s:4:"💼";i:4260;s:4:"💽";i:4261;s:4:"💾";i:4262;s:4:"💿";i:4263;s:4:"📀";i:4264;s:4:"ðŸ“";i:4265;s:4:"📂";i:4266;s:4:"📃";i:4267;s:4:"📄";i:4268;s:4:"📅";i:4269;s:4:"📆";i:4270;s:4:"📇";i:4271;s:4:"📈";i:4272;s:4:"📉";i:4273;s:4:"📊";i:4274;s:4:"📋";i:4275;s:4:"📌";i:4276;s:4:"ðŸ“";i:4277;s:4:"📎";i:4278;s:4:"ðŸ“";i:4279;s:4:"ðŸ“";i:4280;s:4:"📑";i:4281;s:4:"📒";i:4282;s:4:"📓";i:4283;s:4:"📔";i:4284;s:4:"📕";i:4285;s:4:"📖";i:4286;s:4:"📗";i:4287;s:4:"📘";i:4288;s:4:"📙";i:4289;s:4:"📚";i:4290;s:4:"📛";i:4291;s:4:"📜";i:4292;s:4:"ðŸ“";i:4293;s:4:"📞";i:4294;s:4:"📟";i:4295;s:4:"📠";i:4296;s:4:"📡";i:4297;s:4:"📢";i:4298;s:4:"📣";i:4299;s:4:"📤";i:4300;s:4:"📥";i:4301;s:4:"📦";i:4302;s:4:"📧";i:4303;s:4:"📨";i:4304;s:4:"📩";i:4305;s:4:"📪";i:4306;s:4:"📫";i:4307;s:4:"📬";i:4308;s:4:"📭";i:4309;s:4:"📮";i:4310;s:4:"📯";i:4311;s:4:"📰";i:4312;s:4:"📱";i:4313;s:4:"📲";i:4314;s:4:"📳";i:4315;s:4:"📴";i:4316;s:4:"📵";i:4317;s:4:"📶";i:4318;s:4:"📷";i:4319;s:4:"📹";i:4320;s:4:"📺";i:4321;s:4:"📻";i:4322;s:4:"📼";i:4323;s:4:"🔀";i:4324;s:4:"ðŸ”";i:4325;s:4:"🔂";i:4326;s:4:"🔃";i:4327;s:4:"🔄";i:4328;s:4:"🔅";i:4329;s:4:"🔆";i:4330;s:4:"🔇";i:4331;s:4:"🔈";i:4332;s:4:"🔉";i:4333;s:4:"🔊";i:4334;s:4:"🔋";i:4335;s:4:"🔌";i:4336;s:4:"ðŸ”";i:4337;s:4:"🔎";i:4338;s:4:"ðŸ”";i:4339;s:4:"ðŸ”";i:4340;s:4:"🔑";i:4341;s:4:"🔒";i:4342;s:4:"🔓";i:4343;s:4:"🔔";i:4344;s:4:"🔕";i:4345;s:4:"🔖";i:4346;s:4:"🔗";i:4347;s:4:"🔘";i:4348;s:4:"🔙";i:4349;s:4:"🔚";i:4350;s:4:"🔛";i:4351;s:4:"🔜";i:4352;s:4:"ðŸ”";i:4353;s:4:"🔞";i:4354;s:4:"🔟";i:4355;s:4:"🔠";i:4356;s:4:"🔡";i:4357;s:4:"🔢";i:4358;s:4:"🔣";i:4359;s:4:"🔤";i:4360;s:4:"🔥";i:4361;s:4:"🔦";i:4362;s:4:"🔧";i:4363;s:4:"🔨";i:4364;s:4:"🔩";i:4365;s:4:"🔪";i:4366;s:4:"🔫";i:4367;s:4:"🔬";i:4368;s:4:"🔭";i:4369;s:4:"🔮";i:4370;s:4:"🔯";i:4371;s:4:"🔰";i:4372;s:4:"🔱";i:4373;s:4:"🔲";i:4374;s:4:"🔳";i:4375;s:4:"🔴";i:4376;s:4:"🔵";i:4377;s:4:"🔶";i:4378;s:4:"🔷";i:4379;s:4:"🔸";i:4380;s:4:"🔹";i:4381;s:4:"🔺";i:4382;s:4:"🔻";i:4383;s:4:"🔼";i:4384;s:4:"🔽";i:4385;s:4:"ðŸ•";i:4386;s:4:"🕑";i:4387;s:4:"🕒";i:4388;s:4:"🕓";i:4389;s:4:"🕔";i:4390;s:4:"🕕";i:4391;s:4:"🕖";i:4392;s:4:"🕗";i:4393;s:4:"🕘";i:4394;s:4:"🕙";i:4395;s:4:"🕚";i:4396;s:4:"🕛";i:4397;s:4:"🕜";i:4398;s:4:"ðŸ•";i:4399;s:4:"🕞";i:4400;s:4:"🕟";i:4401;s:4:"🕠";i:4402;s:4:"🕡";i:4403;s:4:"🕢";i:4404;s:4:"🕣";i:4405;s:4:"🕤";i:4406;s:4:"🕥";i:4407;s:4:"🕦";i:4408;s:4:"🕧";i:4409;s:4:"🗻";i:4410;s:4:"🗼";i:4411;s:4:"🗽";i:4412;s:4:"🗾";i:4413;s:4:"🗿";i:4414;s:4:"ðŸ˜";i:4415;s:4:"😂";i:4416;s:4:"😃";i:4417;s:4:"😄";i:4418;s:4:"😅";i:4419;s:4:"😆";i:4420;s:4:"😇";i:4421;s:4:"😈";i:4422;s:4:"😉";i:4423;s:4:"😊";i:4424;s:4:"😋";i:4425;s:4:"😌";i:4426;s:4:"ðŸ˜";i:4427;s:4:"😎";i:4428;s:4:"ðŸ˜";i:4429;s:4:"ðŸ˜";i:4430;s:4:"😒";i:4431;s:4:"😓";i:4432;s:4:"😔";i:4433;s:4:"😖";i:4434;s:4:"😘";i:4435;s:4:"😚";i:4436;s:4:"😜";i:4437;s:4:"ðŸ˜";i:4438;s:4:"😞";i:4439;s:4:"😠";i:4440;s:4:"😡";i:4441;s:4:"😢";i:4442;s:4:"😣";i:4443;s:4:"😤";i:4444;s:4:"😥";i:4445;s:4:"😨";i:4446;s:4:"😩";i:4447;s:4:"😪";i:4448;s:4:"😫";i:4449;s:4:"😭";i:4450;s:4:"😰";i:4451;s:4:"😱";i:4452;s:4:"😲";i:4453;s:4:"😳";i:4454;s:4:"😵";i:4455;s:4:"😶";i:4456;s:4:"😷";i:4457;s:4:"😸";i:4458;s:4:"😹";i:4459;s:4:"😺";i:4460;s:4:"😻";i:4461;s:4:"😼";i:4462;s:4:"😽";i:4463;s:4:"😾";i:4464;s:4:"😿";i:4465;s:4:"🙀";i:4466;s:4:"🙅";i:4467;s:4:"🙆";i:4468;s:4:"🙇";i:4469;s:4:"🙈";i:4470;s:4:"🙉";i:4471;s:4:"🙊";i:4472;s:4:"🙋";i:4473;s:4:"🙌";i:4474;s:4:"ðŸ™";i:4475;s:4:"🙎";i:4476;s:4:"ðŸ™";i:4477;s:4:"🚀";i:4478;s:4:"ðŸš";i:4479;s:4:"🚂";i:4480;s:4:"🚃";i:4481;s:4:"🚄";i:4482;s:4:"🚅";i:4483;s:4:"🚆";i:4484;s:4:"🚇";i:4485;s:4:"🚈";i:4486;s:4:"🚉";i:4487;s:4:"🚊";i:4488;s:4:"🚋";i:4489;s:4:"🚌";i:4490;s:4:"ðŸš";i:4491;s:4:"🚎";i:4492;s:4:"ðŸš";i:4493;s:4:"ðŸš";i:4494;s:4:"🚑";i:4495;s:4:"🚒";i:4496;s:4:"🚓";i:4497;s:4:"🚔";i:4498;s:4:"🚕";i:4499;s:4:"🚖";i:4500;s:4:"🚗";i:4501;s:4:"🚘";i:4502;s:4:"🚙";i:4503;s:4:"🚚";i:4504;s:4:"🚛";i:4505;s:4:"🚜";i:4506;s:4:"ðŸš";i:4507;s:4:"🚞";i:4508;s:4:"🚟";i:4509;s:4:"🚠";i:4510;s:4:"🚡";i:4511;s:4:"🚢";i:4512;s:4:"🚣";i:4513;s:4:"🚤";i:4514;s:4:"🚥";i:4515;s:4:"🚦";i:4516;s:4:"🚧";i:4517;s:4:"🚨";i:4518;s:4:"🚩";i:4519;s:4:"🚪";i:4520;s:4:"🚫";i:4521;s:4:"🚬";i:4522;s:4:"🚭";i:4523;s:4:"🚮";i:4524;s:4:"🚯";i:4525;s:4:"🚰";i:4526;s:4:"🚱";i:4527;s:4:"🚲";i:4528;s:4:"🚳";i:4529;s:4:"🚴";i:4530;s:4:"🚵";i:4531;s:4:"🚶";i:4532;s:4:"🚷";i:4533;s:4:"🚸";i:4534;s:4:"🚹";i:4535;s:4:"🚺";i:4536;s:4:"🚻";i:4537;s:4:"🚼";i:4538;s:4:"🚽";i:4539;s:4:"🚾";i:4540;s:4:"🚿";i:4541;s:4:"🛀";i:4542;s:4:"ðŸ›";i:4543;s:4:"🛂";i:4544;s:4:"🛃";i:4545;s:4:"🛄";i:4546;s:4:"🛅";i:4547;s:4:"🜀";i:4548;s:4:"ðŸœ";i:4549;s:4:"🜂";i:4550;s:4:"🜃";i:4551;s:4:"🜄";i:4552;s:4:"🜅";i:4553;s:4:"🜆";i:4554;s:4:"🜇";i:4555;s:4:"🜈";i:4556;s:4:"🜉";i:4557;s:4:"🜊";i:4558;s:4:"🜋";i:4559;s:4:"🜌";i:4560;s:4:"ðŸœ";i:4561;s:4:"🜎";i:4562;s:4:"ðŸœ";i:4563;s:4:"ðŸœ";i:4564;s:4:"🜑";i:4565;s:4:"🜒";i:4566;s:4:"🜓";i:4567;s:4:"🜔";i:4568;s:4:"🜕";i:4569;s:4:"🜖";i:4570;s:4:"🜗";i:4571;s:4:"🜘";i:4572;s:4:"🜙";i:4573;s:4:"🜚";i:4574;s:4:"🜛";i:4575;s:4:"🜜";i:4576;s:4:"ðŸœ";i:4577;s:4:"🜞";i:4578;s:4:"🜟";i:4579;s:4:"🜠";i:4580;s:4:"🜡";i:4581;s:4:"🜢";i:4582;s:4:"🜣";i:4583;s:4:"🜤";i:4584;s:4:"🜥";i:4585;s:4:"🜦";i:4586;s:4:"🜧";i:4587;s:4:"🜨";i:4588;s:4:"🜩";i:4589;s:4:"🜪";i:4590;s:4:"🜫";i:4591;s:4:"🜬";i:4592;s:4:"🜭";i:4593;s:4:"🜮";i:4594;s:4:"🜯";i:4595;s:4:"🜰";i:4596;s:4:"🜱";i:4597;s:4:"🜲";i:4598;s:4:"🜳";i:4599;s:4:"🜴";i:4600;s:4:"🜵";i:4601;s:4:"🜶";i:4602;s:4:"🜷";i:4603;s:4:"🜸";i:4604;s:4:"🜹";i:4605;s:4:"🜺";i:4606;s:4:"🜻";i:4607;s:4:"🜼";i:4608;s:4:"🜽";i:4609;s:4:"🜾";i:4610;s:4:"🜿";i:4611;s:4:"ðŸ€";i:4612;s:4:"ðŸ";i:4613;s:4:"ðŸ‚";i:4614;s:4:"ðŸƒ";i:4615;s:4:"ðŸ„";i:4616;s:4:"ðŸ…";i:4617;s:4:"ðŸ†";i:4618;s:4:"ðŸ‡";i:4619;s:4:"ðŸˆ";i:4620;s:4:"ðŸ‰";i:4621;s:4:"ðŸŠ";i:4622;s:4:"ðŸ‹";i:4623;s:4:"ðŸŒ";i:4624;s:4:"ðŸ";i:4625;s:4:"ðŸŽ";i:4626;s:4:"ðŸ";i:4627;s:4:"ðŸ";i:4628;s:4:"ðŸ‘";i:4629;s:4:"ðŸ’";i:4630;s:4:"ðŸ“";i:4631;s:4:"ðŸ”";i:4632;s:4:"ðŸ•";i:4633;s:4:"ðŸ–";i:4634;s:4:"ðŸ—";i:4635;s:4:"ðŸ˜";i:4636;s:4:"ðŸ™";i:4637;s:4:"ðŸš";i:4638;s:4:"ðŸ›";i:4639;s:4:"ðŸœ";i:4640;s:4:"ðŸ";i:4641;s:4:"ðŸž";i:4642;s:4:"ðŸŸ";i:4643;s:4:"ðŸ ";i:4644;s:4:"ðŸ¡";i:4645;s:4:"ðŸ¢";i:4646;s:4:"ðŸ£";i:4647;s:4:"ðŸ¤";i:4648;s:4:"ðŸ¥";i:4649;s:4:"ðŸ¦";i:4650;s:4:"ðŸ§";i:4651;s:4:"ðŸ¨";i:4652;s:4:"ðŸ©";i:4653;s:4:"ðŸª";i:4654;s:4:"ðŸ«";i:4655;s:4:"ðŸ¬";i:4656;s:4:"ðŸ­";i:4657;s:4:"ðŸ®";i:4658;s:4:"ðŸ¯";i:4659;s:4:"ðŸ°";i:4660;s:4:"ðŸ±";i:4661;s:4:"ðŸ²";i:4662;s:4:"ðŸ³";i:4663;s:3:"ã†";i:4664;s:3:"㆑";i:4665;s:3:"";i:4666;s:3:"�";i:4667;s:3:"৴";i:4668;s:3:"৵";i:4669;s:3:"৶";i:4670;s:3:"৷";i:4671;s:3:"৸";i:4672;s:3:"৹";i:4673;s:3:"à­²";i:4674;s:3:"à­³";i:4675;s:3:"à­´";i:4676;s:3:"à­µ";i:4677;s:3:"à­¶";i:4678;s:3:"à­·";i:4679;s:3:"ê °";i:4680;s:3:"ê ±";i:4681;s:3:"ê ²";i:4682;s:3:"ê ³";i:4683;s:3:"ê ´";i:4684;s:3:"ê µ";i:4685;s:3:"௰";i:4686;s:3:"௱";i:4687;s:3:"௲";i:4688;s:3:"൰";i:4689;s:3:"൱";i:4690;s:3:"൲";i:4691;s:3:"൳";i:4692;s:3:"൴";i:4693;s:3:"൵";i:4694;s:3:"á²";i:4695;s:3:"á³";i:4696;s:3:"á´";i:4697;s:3:"áµ";i:4698;s:3:"á¶";i:4699;s:3:"á·";i:4700;s:3:"á¸";i:4701;s:3:"á¹";i:4702;s:3:"áº";i:4703;s:3:"á»";i:4704;s:3:"á¼";i:4705;s:3:"ↀ";i:4706;s:3:"â†";i:4707;s:3:"ↂ";i:4708;s:3:"ↆ";i:4709;s:3:"ↇ";i:4710;s:3:"ↈ";i:4711;s:4:"ð¹©";i:4712;s:4:"ð¹ª";i:4713;s:4:"ð¹«";i:4714;s:4:"ð¹¬";i:4715;s:4:"ð¹­";i:4716;s:4:"ð¹®";i:4717;s:4:"ð¹¯";i:4718;s:4:"ð¹°";i:4719;s:4:"ð¹±";i:4720;s:4:"ð¹²";i:4721;s:4:"ð¹³";i:4722;s:4:"ð¹´";i:4723;s:4:"ð¹µ";i:4724;s:4:"ð¹¶";i:4725;s:4:"ð¹·";i:4726;s:4:"ð¹¸";i:4727;s:4:"ð¹¹";i:4728;s:4:"ð¹º";i:4729;s:4:"ð¹»";i:4730;s:4:"ð¹¼";i:4731;s:4:"ð¹½";i:4732;s:4:"ð¹¾";i:4733;s:3:"â³½";i:4734;s:4:"ðŒ¢";i:4735;s:4:"ðŒ£";i:4736;s:4:"ð„";i:4737;s:4:"ð„‘";i:4738;s:4:"ð„’";i:4739;s:4:"ð„“";i:4740;s:4:"ð„”";i:4741;s:4:"ð„•";i:4742;s:4:"ð„–";i:4743;s:4:"ð„—";i:4744;s:4:"ð„˜";i:4745;s:4:"ð„™";i:4746;s:4:"ð„š";i:4747;s:4:"ð„›";i:4748;s:4:"ð„œ";i:4749;s:4:"ð„";i:4750;s:4:"ð„ž";i:4751;s:4:"ð„Ÿ";i:4752;s:4:"ð„ ";i:4753;s:4:"ð„¡";i:4754;s:4:"ð„¢";i:4755;s:4:"ð„£";i:4756;s:4:"ð„¤";i:4757;s:4:"ð„¥";i:4758;s:4:"ð„¦";i:4759;s:4:"ð„§";i:4760;s:4:"ð„¨";i:4761;s:4:"ð„©";i:4762;s:4:"ð„ª";i:4763;s:4:"ð„«";i:4764;s:4:"ð„¬";i:4765;s:4:"ð„­";i:4766;s:4:"ð„®";i:4767;s:4:"ð„¯";i:4768;s:4:"ð„°";i:4769;s:4:"ð„±";i:4770;s:4:"ð„²";i:4771;s:4:"ð„³";i:4772;s:4:"ð…€";i:4773;s:4:"ð…";i:4774;s:4:"ð…„";i:4775;s:4:"ð……";i:4776;s:4:"ð…†";i:4777;s:4:"ð…‡";i:4778;s:4:"ð…‰";i:4779;s:4:"ð…Š";i:4780;s:4:"ð…‹";i:4781;s:4:"ð…Œ";i:4782;s:4:"ð…";i:4783;s:4:"ð…Ž";i:4784;s:4:"ð…";i:4785;s:4:"ð…‘";i:4786;s:4:"ð…’";i:4787;s:4:"ð…“";i:4788;s:4:"ð…”";i:4789;s:4:"ð…•";i:4790;s:4:"ð…–";i:4791;s:4:"ð…—";i:4792;s:4:"ð… ";i:4793;s:4:"ð…¡";i:4794;s:4:"ð…¢";i:4795;s:4:"ð…£";i:4796;s:4:"ð…¤";i:4797;s:4:"ð…¥";i:4798;s:4:"ð…¦";i:4799;s:4:"ð…§";i:4800;s:4:"ð…¨";i:4801;s:4:"ð…©";i:4802;s:4:"ð…ª";i:4803;s:4:"ð…«";i:4804;s:4:"ð…¬";i:4805;s:4:"ð…­";i:4806;s:4:"ð…®";i:4807;s:4:"ð…¯";i:4808;s:4:"ð…°";i:4809;s:4:"ð…±";i:4810;s:4:"ð…²";i:4811;s:4:"ð…´";i:4812;s:4:"ð…µ";i:4813;s:4:"ð…¶";i:4814;s:4:"ð…·";i:4815;s:4:"ð…¸";i:4816;s:4:"ð“";i:4817;s:4:"ð”";i:4818;s:4:"ð•";i:4819;s:4:"ð©¾";i:4820;s:4:"ð©¿";i:4821;s:4:"ð¤—";i:4822;s:4:"ð¤˜";i:4823;s:4:"ð¤™";i:4824;s:4:"ð¡›";i:4825;s:4:"ð¡œ";i:4826;s:4:"ð¡";i:4827;s:4:"ð¡ž";i:4828;s:4:"ð¡Ÿ";i:4829;s:4:"ð­œ";i:4830;s:4:"ð­";i:4831;s:4:"ð­ž";i:4832;s:4:"ð­Ÿ";i:4833;s:4:"ð­¼";i:4834;s:4:"ð­½";i:4835;s:4:"ð­¾";i:4836;s:4:"ð­¿";i:4837;s:4:"ð‘›";i:4838;s:4:"ð‘œ";i:4839;s:4:"ð‘";i:4840;s:4:"ð‘ž";i:4841;s:4:"ð‘Ÿ";i:4842;s:4:"ð‘ ";i:4843;s:4:"ð‘¡";i:4844;s:4:"ð‘¢";i:4845;s:4:"ð‘£";i:4846;s:4:"ð‘¤";i:4847;s:4:"ð‘¥";i:4848;s:4:"ð©„";i:4849;s:4:"ð©…";i:4850;s:4:"ð©†";i:4851;s:4:"ð©‡";i:4852;s:4:"ð’²";i:4853;s:4:"ð’³";i:4854;s:4:"ð’‘–";i:4855;s:4:"ð’‘—";i:4856;s:4:"ð’‘š";i:4857;s:4:"ð’‘›";i:4858;s:4:"ð’‘œ";i:4859;s:4:"ð’‘";i:4860;s:4:"ð’‘ž";i:4861;s:4:"ð’‘Ÿ";i:4862;s:4:"ð’‘ ";i:4863;s:4:"ð’‘¡";i:4864;s:4:"ð’‘¢";i:4865;s:4:"ð©";i:4866;s:4:"ðª";i:4867;s:4:"ð«";i:4868;s:4:"ð¬";i:4869;s:4:"ð­";i:4870;s:4:"ð®";i:4871;s:4:"ð¯";i:4872;s:4:"ð°";i:4873;s:4:"ð±";i:4874;s:2:"Ë";i:4875;s:2:"Ë‘";i:4876;s:3:"ॱ";i:4877;s:3:"ๆ";i:4878;s:3:"ໆ";i:4879;s:3:"ᪧ";i:4880;s:3:"ê§";i:4881;s:3:"ê©°";i:4882;s:3:"ê«";i:4883;s:3:"ã‚";i:4884;s:3:"ー";i:4885;s:3:"ヽ";i:4886;s:2:"¤";i:4887;s:2:"¢";i:4888;s:1:"$";i:4889;s:2:"£";i:4890;s:2:"Â¥";i:4891;s:2:"Ø‹";i:4892;s:3:"৲";i:4893;s:3:"৳";i:4894;s:3:"৻";i:4895;s:3:"૱";i:4896;s:3:"ê ¸";i:4897;s:3:"௹";i:4898;s:3:"฿";i:4899;s:3:"៛";i:4900;s:3:"â‚ ";i:4901;s:3:"â‚¡";i:4902;s:3:"â‚¢";i:4903;s:3:"â‚£";i:4904;s:3:"₤";i:4905;s:3:"â‚¥";i:4906;s:3:"₦";i:4907;s:3:"₧";i:4908;s:3:"â‚©";i:4909;s:3:"₪";i:4910;s:3:"â‚«";i:4911;s:3:"€";i:4912;s:3:"â‚­";i:4913;s:3:"â‚®";i:4914;s:3:"₯";i:4915;s:3:"â‚°";i:4916;s:3:"₱";i:4917;s:3:"₲";i:4918;s:3:"₳";i:4919;s:3:"â‚´";i:4920;s:3:"₵";i:4921;s:3:"₶";i:4922;s:3:"â‚·";i:4923;s:3:"₸";i:4924;s:3:"₹";i:4925;s:1:"0";i:4926;s:1:"1";i:4927;s:1:"2";i:4928;s:1:"3";i:4929;s:1:"4";i:4930;s:1:"5";i:4931;s:1:"6";i:4932;s:1:"7";i:4933;s:1:"8";i:4934;s:1:"9";i:4935;s:1:"A";i:4936;s:3:"á´€";i:4937;s:2:"Ⱥ";i:4938;s:3:"á¶";i:4939;s:3:"á´";i:4940;s:3:"á´‚";i:4941;s:3:"Ɐ";i:4942;s:3:"â±­";i:4943;s:3:"á¶";i:4944;s:3:"â±°";i:4945;s:1:"B";i:4946;s:2:"Ê™";i:4947;s:2:"Ƀ";i:4948;s:3:"á´¯";i:4949;s:3:"á´ƒ";i:4950;s:3:"ᵬ";i:4951;s:3:"ᶀ";i:4952;s:2:"Æ";i:4953;s:2:"Æ‚";i:4954;s:1:"C";i:4955;s:3:"á´„";i:4956;s:2:"È»";i:4957;s:2:"Ƈ";i:4958;s:2:"É•";i:4959;s:3:"Ↄ";i:4960;s:3:"Ꜿ";i:4961;s:1:"D";i:4962;s:3:"á´…";i:4963;s:3:"á´†";i:4964;s:3:"áµ­";i:4965;s:3:"á¶";i:4966;s:2:"Ɖ";i:4967;s:2:"ÆŠ";i:4968;s:3:"ᶑ";i:4969;s:2:"Æ‹";i:4970;s:2:"È¡";i:4971;s:3:"ê±";i:4972;s:3:"ẟ";i:4973;s:1:"E";i:4974;s:3:"á´‡";i:4975;s:2:"Ɇ";i:4976;s:3:"ᶒ";i:4977;s:3:"ⱸ";i:4978;s:2:"ÆŽ";i:4979;s:3:"â±»";i:4980;s:2:"Æ";i:4981;s:3:"ᶕ";i:4982;s:2:"Æ";i:4983;s:3:"ᶓ";i:4984;s:2:"ɘ";i:4985;s:2:"Éš";i:4986;s:2:"Éœ";i:4987;s:3:"ᶔ";i:4988;s:3:"á´ˆ";i:4989;s:2:"É";i:4990;s:2:"Éž";i:4991;s:2:"Êš";i:4992;s:2:"ɤ";i:4993;s:1:"F";i:4994;s:3:"ꜰ";i:4995;s:3:"áµ®";i:4996;s:3:"ᶂ";i:4997;s:2:"Æ‘";i:4998;s:3:"Ⅎ";i:4999;s:3:"ꟻ";i:5000;s:1:"G";i:5001;s:2:"É¡";i:5002;s:2:"É¢";i:5003;s:2:"Ǥ";i:5004;s:3:"ᶃ";i:5005;s:2:"Æ“";i:5006;s:2:"Ê›";i:5007;s:3:"áµ·";i:5008;s:3:"ê¾";i:5009;s:2:"Æ”";i:5010;s:2:"Æ¢";i:5011;s:1:"H";i:5012;s:2:"Êœ";i:5013;s:2:"Ƕ";i:5014;s:2:"ɦ";i:5015;s:3:"Ⱨ";i:5016;s:3:"â±µ";i:5017;s:3:"Ꜧ";i:5018;s:2:"ɧ";i:5019;s:2:"Ê»";i:5020;s:2:"ʽ";i:5021;s:1:"I";i:5022;s:2:"ı";i:5023;s:2:"ɪ";i:5024;s:3:"ꟾ";i:5025;s:3:"á´‰";i:5026;s:2:"Æ—";i:5027;s:3:"áµ»";i:5028;s:3:"ᶖ";i:5029;s:2:"Æ–";i:5030;s:3:"áµ¼";i:5031;s:1:"J";i:5032;s:2:"È·";i:5033;s:3:"á´Š";i:5034;s:2:"Ɉ";i:5035;s:2:"Ê";i:5036;s:2:"ÉŸ";i:5037;s:2:"Ê„";i:5038;s:1:"K";i:5039;s:3:"á´‹";i:5040;s:3:"ᶄ";i:5041;s:2:"Ƙ";i:5042;s:3:"Ⱪ";i:5043;s:3:"ê€";i:5044;s:3:"ê‚";i:5045;s:3:"ê„";i:5046;s:2:"Êž";i:5047;s:1:"L";i:5048;s:2:"ÊŸ";i:5049;s:3:"ê†";i:5050;s:3:"á´Œ";i:5051;s:3:"êˆ";i:5052;s:2:"Ƚ";i:5053;s:3:"â± ";i:5054;s:3:"â±¢";i:5055;s:2:"ɬ";i:5056;s:3:"ᶅ";i:5057;s:2:"É­";i:5058;s:3:"ꞎ";i:5059;s:2:"È´";i:5060;s:3:"ê²";i:5061;s:2:"É®";i:5062;s:3:"Ꞁ";i:5063;s:2:"Æ›";i:5064;s:2:"ÊŽ";i:5065;s:1:"M";i:5066;s:3:"á´";i:5067;s:3:"ᵯ";i:5068;s:3:"ᶆ";i:5069;s:3:"â±®";i:5070;s:3:"ꟽ";i:5071;s:3:"ꟿ";i:5072;s:3:"ê³";i:5073;s:1:"N";i:5074;s:2:"É´";i:5075;s:3:"á´»";i:5076;s:3:"á´Ž";i:5077;s:3:"áµ°";i:5078;s:2:"Æ";i:5079;s:2:"È ";i:5080;s:3:"êž";i:5081;s:3:"ᶇ";i:5082;s:2:"ɳ";i:5083;s:2:"ȵ";i:5084;s:3:"ê´";i:5085;s:2:"ÅŠ";i:5086;s:1:"O";i:5087;s:3:"á´";i:5088;s:3:"á´‘";i:5089;s:2:"ɶ";i:5090;s:3:"á´”";i:5091;s:3:"á´“";i:5092;s:2:"Ɔ";i:5093;s:3:"á´";i:5094;s:3:"á´’";i:5095;s:3:"ᶗ";i:5096;s:3:"êŒ";i:5097;s:3:"á´–";i:5098;s:3:"á´—";i:5099;s:3:"ⱺ";i:5100;s:2:"ÆŸ";i:5101;s:3:"êŠ";i:5102;s:2:"É·";i:5103;s:2:"È¢";i:5104;s:3:"á´•";i:5105;s:1:"P";i:5106;s:3:"á´˜";i:5107;s:3:"â±£";i:5108;s:3:"ê";i:5109;s:3:"áµ±";i:5110;s:3:"ᶈ";i:5111;s:2:"Ƥ";i:5112;s:3:"ê’";i:5113;s:3:"ê”";i:5114;s:3:"ꟼ";i:5115;s:2:"ɸ";i:5116;s:3:"â±·";i:5117;s:1:"Q";i:5118;s:3:"ê–";i:5119;s:3:"ê˜";i:5120;s:2:"Ê ";i:5121;s:2:"ÉŠ";i:5122;s:2:"ĸ";i:5123;s:1:"R";i:5124;s:2:"Ʀ";i:5125;s:3:"êš";i:5126;s:3:"á´™";i:5127;s:2:"ÉŒ";i:5128;s:3:"áµ²";i:5129;s:2:"ɹ";i:5130;s:3:"á´š";i:5131;s:2:"ɺ";i:5132;s:3:"ᶉ";i:5133;s:2:"É»";i:5134;s:3:"â±¹";i:5135;s:2:"ɼ";i:5136;s:3:"Ɽ";i:5137;s:2:"ɾ";i:5138;s:3:"áµ³";i:5139;s:2:"É¿";i:5140;s:2:"Ê";i:5141;s:3:"êµ";i:5142;s:3:"ê¶";i:5143;s:3:"êœ";i:5144;s:1:"S";i:5145;s:3:"ꜱ";i:5146;s:3:"áµ´";i:5147;s:3:"ᶊ";i:5148;s:2:"Ê‚";i:5149;s:3:"â±¾";i:5150;s:3:"ẜ";i:5151;s:3:"áº";i:5152;s:2:"Æ©";i:5153;s:3:"ᶋ";i:5154;s:2:"ƪ";i:5155;s:2:"Ê…";i:5156;s:3:"ᶘ";i:5157;s:2:"ʆ";i:5158;s:1:"T";i:5159;s:3:"á´›";i:5160;s:2:"Ŧ";i:5161;s:2:"Ⱦ";i:5162;s:3:"áµµ";i:5163;s:2:"Æ«";i:5164;s:2:"Ƭ";i:5165;s:2:"Æ®";i:5166;s:2:"ȶ";i:5167;s:3:"ê·";i:5168;s:2:"ʇ";i:5169;s:1:"U";i:5170;s:3:"á´œ";i:5171;s:3:"á´";i:5172;s:3:"á´ž";i:5173;s:3:"ᵫ";i:5174;s:2:"É„";i:5175;s:3:"áµ¾";i:5176;s:3:"ᶙ";i:5177;s:3:"êž";i:5178;s:2:"Ê®";i:5179;s:2:"ʯ";i:5180;s:2:"Æœ";i:5181;s:3:"ꟺ";i:5182;s:3:"á´Ÿ";i:5183;s:2:"É°";i:5184;s:2:"Ʊ";i:5185;s:3:"ᵿ";i:5186;s:1:"V";i:5187;s:3:"á´ ";i:5188;s:3:"êž";i:5189;s:3:"ᶌ";i:5190;s:2:"Ʋ";i:5191;s:3:"â±±";i:5192;s:3:"â±´";i:5193;s:3:"Ỽ";i:5194;s:2:"É…";i:5195;s:1:"W";i:5196;s:3:"á´¡";i:5197;s:3:"â±²";i:5198;s:2:"Ê";i:5199;s:1:"X";i:5200;s:3:"á¶";i:5201;s:1:"Y";i:5202;s:2:"Ê";i:5203;s:2:"ÉŽ";i:5204;s:2:"Ƴ";i:5205;s:3:"Ỿ";i:5206;s:1:"Z";i:5207;s:3:"á´¢";i:5208;s:2:"Ƶ";i:5209;s:3:"ᵶ";i:5210;s:3:"ᶎ";i:5211;s:2:"Ȥ";i:5212;s:2:"Ê";i:5213;s:2:"Ê‘";i:5214;s:3:"Ɀ";i:5215;s:3:"Ⱬ";i:5216;s:3:"ê¢";i:5217;s:2:"Æ·";i:5218;s:3:"á´£";i:5219;s:2:"Ƹ";i:5220;s:3:"ᶚ";i:5221;s:2:"ƺ";i:5222;s:2:"Ê“";i:5223;s:2:"Èœ";i:5224;s:2:"Þ";i:5225;s:3:"ê¤";i:5226;s:3:"ê¦";i:5227;s:2:"Ç·";i:5228;s:3:"ê¨";i:5229;s:3:"êª";i:5230;s:3:"ê¬";i:5231;s:3:"ê®";i:5232;s:3:"ê¸";i:5233;s:2:"Æ»";i:5234;s:3:"Ꜫ";i:5235;s:3:"Ꜭ";i:5236;s:3:"Ꜯ";i:5237;s:2:"Ƨ";i:5238;s:2:"Ƽ";i:5239;s:2:"Æ„";i:5240;s:2:"Ê”";i:5241;s:2:"É";i:5242;s:2:"Ë€";i:5243;s:2:"ʼ";i:5244;s:2:"Ë®";i:5245;s:2:"ʾ";i:5246;s:3:"Ꜣ";i:5247;s:3:"êž‹";i:5248;s:2:"Ê•";i:5249;s:2:"Ê¿";i:5250;s:2:"Ë";i:5251;s:3:"á´¤";i:5252;s:3:"á´¥";i:5253;s:3:"Ꜥ";i:5254;s:2:"Ê¡";i:5255;s:2:"Ê¢";i:5256;s:2:"Ê–";i:5257;s:2:"Ç€";i:5258;s:2:"Ç";i:5259;s:2:"Ç‚";i:5260;s:2:"ǃ";i:5261;s:2:"Ê—";i:5262;s:2:"ʘ";i:5263;s:2:"ʬ";i:5264;s:2:"Ê­";i:5265;s:2:"Α";i:5266;s:2:"Î’";i:5267;s:2:"Γ";i:5268;s:3:"á´¦";i:5269;s:2:"Δ";i:5270;s:2:"Ε";i:5271;s:2:"Ïœ";i:5272;s:2:"Ͷ";i:5273;s:2:"Ïš";i:5274;s:2:"Ζ";i:5275;s:2:"Í°";i:5276;s:2:"Η";i:5277;s:2:"Θ";i:5278;s:2:"Ι";i:5279;s:2:"ϳ";i:5280;s:2:"Κ";i:5281;s:2:"Λ";i:5282;s:3:"á´§";i:5283;s:2:"Îœ";i:5284;s:2:"Î";i:5285;s:2:"Ξ";i:5286;s:2:"Ο";i:5287;s:2:"Π";i:5288;s:3:"á´¨";i:5289;s:2:"Ϻ";i:5290;s:2:"Ïž";i:5291;s:2:"Ϙ";i:5292;s:2:"Ρ";i:5293;s:3:"á´©";i:5294;s:2:"ϼ";i:5295;s:2:"Σ";i:5296;s:2:"Ͼ";i:5297;s:2:"Ͻ";i:5298;s:2:"Ï¿";i:5299;s:2:"Τ";i:5300;s:2:"Î¥";i:5301;s:2:"Φ";i:5302;s:2:"Χ";i:5303;s:2:"Ψ";i:5304;s:3:"á´ª";i:5305;s:2:"Ω";i:5306;s:2:"Ï ";i:5307;s:2:"Ͳ";i:5308;s:2:"Ï·";i:5309;s:3:"â²€";i:5310;s:3:"Ⲃ";i:5311;s:3:"Ⲅ";i:5312;s:3:"Ⲇ";i:5313;s:3:"Ⲉ";i:5314;s:3:"Ⲷ";i:5315;s:3:"Ⲋ";i:5316;s:3:"Ⲍ";i:5317;s:3:"Ⲏ";i:5318;s:3:"â²";i:5319;s:3:"â²’";i:5320;s:3:"â²”";i:5321;s:3:"Ⲹ";i:5322;s:3:"â²–";i:5323;s:3:"Ⲙ";i:5324;s:3:"Ⲛ";i:5325;s:3:"Ⲻ";i:5326;s:3:"â²¼";i:5327;s:3:"Ⲝ";i:5328;s:3:"Ⲟ";i:5329;s:3:"â² ";i:5330;s:3:"â²¢";i:5331;s:3:"Ⲥ";i:5332;s:3:"Ⲧ";i:5333;s:3:"Ⲩ";i:5334;s:3:"Ⲫ";i:5335;s:3:"Ⲭ";i:5336;s:3:"â²®";i:5337;s:3:"â²°";i:5338;s:3:"â²¾";i:5339;s:3:"â³€";i:5340;s:2:"Ï¢";i:5341;s:3:"Ⳬ";i:5342;s:3:"Ⳃ";i:5343;s:3:"Ⳅ";i:5344;s:3:"Ⳇ";i:5345;s:2:"Ϥ";i:5346;s:2:"Ϧ";i:5347;s:3:"Ⳉ";i:5348;s:2:"Ϩ";i:5349;s:3:"Ⳋ";i:5350;s:3:"Ⳍ";i:5351;s:3:"Ⳏ";i:5352;s:3:"â³";i:5353;s:3:"â³’";i:5354;s:3:"â³”";i:5355;s:2:"Ϫ";i:5356;s:3:"â³­";i:5357;s:3:"â³–";i:5358;s:2:"Ϭ";i:5359;s:3:"Ⳙ";i:5360;s:3:"Ⳛ";i:5361;s:3:"Ⳝ";i:5362;s:2:"Ï®";i:5363;s:3:"â²²";i:5364;s:3:"â²´";i:5365;s:3:"Ⳟ";i:5366;s:3:"â³ ";i:5367;s:3:"â³¢";i:5368;s:2:"Ð";i:5369;s:2:"Ó";i:5370;s:2:"Ó’";i:5371;s:2:"Ó˜";i:5372;s:2:"Óš";i:5373;s:2:"Ó”";i:5374;s:2:"Б";i:5375;s:2:"Ð’";i:5376;s:2:"Г";i:5377;s:2:"Ò’";i:5378;s:2:"Óº";i:5379;s:2:"Ò”";i:5380;s:2:"Ó¶";i:5381;s:2:"Д";i:5382;s:2:"Ô€";i:5383;s:3:"Ꚁ";i:5384;s:2:"Ђ";i:5385;s:3:"Ꙣ";i:5386;s:2:"Ô‚";i:5387;s:2:"Ѓ";i:5388;s:2:"Ò˜";i:5389;s:2:"Е";i:5390;s:2:"Ó–";i:5391;s:2:"Є";i:5392;s:2:"Ж";i:5393;s:3:"êš„";i:5394;s:2:"Óœ";i:5395;s:2:"Ò–";i:5396;s:2:"З";i:5397;s:3:"Ꙁ";i:5398;s:2:"Ô„";i:5399;s:2:"Ô";i:5400;s:2:"Óž";i:5401;s:3:"Ꙃ";i:5402;s:2:"Ð…";i:5403;s:3:"Ꙅ";i:5404;s:2:"Ó ";i:5405;s:3:"Ꚉ";i:5406;s:2:"Ô†";i:5407;s:3:"êš‚";i:5408;s:2:"И";i:5409;s:2:"ÒŠ";i:5410;s:2:"Ó¤";i:5411;s:2:"І";i:5412;s:3:"Ꙇ";i:5413;s:2:"Ї";i:5414;s:2:"Й";i:5415;s:2:"Ј";i:5416;s:3:"Ꙉ";i:5417;s:2:"К";i:5418;s:2:"Òš";i:5419;s:2:"Óƒ";i:5420;s:2:"Ò ";i:5421;s:2:"Òž";i:5422;s:2:"Òœ";i:5423;s:2:"Ôž";i:5424;s:2:"Ôš";i:5425;s:2:"Л";i:5426;s:3:"á´«";i:5427;s:2:"Ó…";i:5428;s:2:"Ô’";i:5429;s:2:"Ô ";i:5430;s:2:"Љ";i:5431;s:3:"Ꙥ";i:5432;s:2:"Ôˆ";i:5433;s:2:"Ô”";i:5434;s:2:"Ðœ";i:5435;s:2:"Ó";i:5436;s:3:"Ꙧ";i:5437;s:2:"Ð";i:5438;s:2:"Ó‰";i:5439;s:2:"Ò¢";i:5440;s:2:"Ó‡";i:5441;s:2:"Ô¢";i:5442;s:2:"Ò¤";i:5443;s:2:"Њ";i:5444;s:2:"ÔŠ";i:5445;s:2:"О";i:5446;s:2:"Ó¦";i:5447;s:2:"Ó¨";i:5448;s:2:"Óª";i:5449;s:2:"П";i:5450;s:2:"Ô¤";i:5451;s:2:"Ò¦";i:5452;s:2:"Ò€";i:5453;s:2:"Р";i:5454;s:2:"ÒŽ";i:5455;s:2:"Ô–";i:5456;s:2:"С";i:5457;s:2:"ÔŒ";i:5458;s:2:"Òª";i:5459;s:2:"Т";i:5460;s:3:"Ꚍ";i:5461;s:2:"ÔŽ";i:5462;s:2:"Ò¬";i:5463;s:3:"Ꚋ";i:5464;s:2:"Ћ";i:5465;s:2:"ÐŒ";i:5466;s:2:"У";i:5467;s:2:"ÐŽ";i:5468;s:2:"Ó°";i:5469;s:2:"Ó²";i:5470;s:2:"Ò®";i:5471;s:2:"Ò°";i:5472;s:3:"Ꙋ";i:5473;s:2:"Ѹ";i:5474;s:2:"Ф";i:5475;s:2:"Ð¥";i:5476;s:2:"Ó¼";i:5477;s:2:"Ó¾";i:5478;s:2:"Ò²";i:5479;s:2:"Òº";i:5480;s:2:"Ô¦";i:5481;s:3:"êš”";i:5482;s:2:"Ñ ";i:5483;s:2:"Ѿ";i:5484;s:3:"Ꙍ";i:5485;s:2:"Ѽ";i:5486;s:2:"Ѻ";i:5487;s:2:"Ц";i:5488;s:3:"ê™ ";i:5489;s:3:"Ꚏ";i:5490;s:2:"Ò´";i:5491;s:3:"êš";i:5492;s:2:"Ч";i:5493;s:3:"êš’";i:5494;s:2:"Ó´";i:5495;s:2:"Ò¶";i:5496;s:2:"Ó‹";i:5497;s:2:"Ò¸";i:5498;s:3:"Ꚇ";i:5499;s:2:"Ò¼";i:5500;s:2:"Ò¾";i:5501;s:2:"Ð";i:5502;s:2:"Ш";i:5503;s:3:"êš–";i:5504;s:2:"Щ";i:5505;s:3:"Ꙏ";i:5506;s:3:"ⸯ";i:5507;s:3:"ꙿ";i:5508;s:2:"Ъ";i:5509;s:3:"ê™";i:5510;s:2:"Ы";i:5511;s:2:"Ó¸";i:5512;s:2:"Ь";i:5513;s:2:"ÒŒ";i:5514;s:2:"Ñ¢";i:5515;s:3:"ê™’";i:5516;s:2:"Э";i:5517;s:2:"Ó¬";i:5518;s:2:"Ю";i:5519;s:3:"ê™”";i:5520;s:3:"ê™–";i:5521;s:2:"Я";i:5522;s:2:"Ô˜";i:5523;s:2:"Ѥ";i:5524;s:2:"Ѧ";i:5525;s:3:"Ꙙ";i:5526;s:2:"Ѫ";i:5527;s:3:"Ꙛ";i:5528;s:2:"Ѩ";i:5529;s:3:"Ꙝ";i:5530;s:2:"Ѭ";i:5531;s:2:"Ñ®";i:5532;s:2:"Ñ°";i:5533;s:2:"Ѳ";i:5534;s:2:"Ñ´";i:5535;s:2:"Ѷ";i:5536;s:3:"Ꙟ";i:5537;s:2:"Ò¨";i:5538;s:2:"Ôœ";i:5539;s:2:"Ó€";i:5540;s:3:"â°€";i:5541;s:3:"â°";i:5542;s:3:"â°‚";i:5543;s:3:"â°ƒ";i:5544;s:3:"â°„";i:5545;s:3:"â°…";i:5546;s:3:"â°†";i:5547;s:3:"â°‡";i:5548;s:3:"â°ˆ";i:5549;s:3:"â°‰";i:5550;s:3:"â°Š";i:5551;s:3:"â°‹";i:5552;s:3:"â°Œ";i:5553;s:3:"â°";i:5554;s:3:"â°Ž";i:5555;s:3:"â°";i:5556;s:3:"â°";i:5557;s:3:"â°‘";i:5558;s:3:"â°’";i:5559;s:3:"â°“";i:5560;s:3:"â°”";i:5561;s:3:"â°•";i:5562;s:3:"â°–";i:5563;s:3:"â°—";i:5564;s:3:"â°˜";i:5565;s:3:"â°™";i:5566;s:3:"â°š";i:5567;s:3:"â°›";i:5568;s:3:"â°œ";i:5569;s:3:"â°";i:5570;s:3:"â°ž";i:5571;s:3:"â°Ÿ";i:5572;s:3:"â° ";i:5573;s:3:"â°¡";i:5574;s:3:"â°¢";i:5575;s:3:"â°£";i:5576;s:3:"â°¤";i:5577;s:3:"â°¥";i:5578;s:3:"â°¦";i:5579;s:3:"â°§";i:5580;s:3:"â°¨";i:5581;s:3:"â°©";i:5582;s:3:"â°ª";i:5583;s:3:"â°«";i:5584;s:3:"â°¬";i:5585;s:3:"â°­";i:5586;s:3:"â°®";i:5587;s:3:"áƒ";i:5588;s:3:"á‚ ";i:5589;s:3:"ბ";i:5590;s:3:"á‚¡";i:5591;s:3:"გ";i:5592;s:3:"á‚¢";i:5593;s:3:"დ";i:5594;s:3:"á‚£";i:5595;s:3:"ე";i:5596;s:3:"Ⴄ";i:5597;s:3:"ვ";i:5598;s:3:"á‚¥";i:5599;s:3:"ზ";i:5600;s:3:"Ⴆ";i:5601;s:3:"ჱ";i:5602;s:3:"áƒ";i:5603;s:3:"თ";i:5604;s:3:"Ⴇ";i:5605;s:3:"ი";i:5606;s:3:"Ⴈ";i:5607;s:3:"კ";i:5608;s:3:"á‚©";i:5609;s:3:"ლ";i:5610;s:3:"Ⴊ";i:5611;s:3:"მ";i:5612;s:3:"á‚«";i:5613;s:3:"ნ";i:5614;s:3:"Ⴌ";i:5615;s:3:"ჲ";i:5616;s:3:"Ⴢ";i:5617;s:3:"áƒ";i:5618;s:3:"á‚­";i:5619;s:3:"პ";i:5620;s:3:"á‚®";i:5621;s:3:"ჟ";i:5622;s:3:"Ⴏ";i:5623;s:3:"რ";i:5624;s:3:"á‚°";i:5625;s:3:"ს";i:5626;s:3:"Ⴑ";i:5627;s:3:"ტ";i:5628;s:3:"Ⴒ";i:5629;s:3:"ჳ";i:5630;s:3:"Ⴣ";i:5631;s:3:"უ";i:5632;s:3:"Ⴓ";i:5633;s:3:"ფ";i:5634;s:3:"á‚´";i:5635;s:3:"ქ";i:5636;s:3:"Ⴕ";i:5637;s:3:"ღ";i:5638;s:3:"Ⴖ";i:5639;s:3:"ყ";i:5640;s:3:"á‚·";i:5641;s:3:"შ";i:5642;s:3:"Ⴘ";i:5643;s:3:"ჩ";i:5644;s:3:"Ⴙ";i:5645;s:3:"ც";i:5646;s:3:"Ⴚ";i:5647;s:3:"ძ";i:5648;s:3:"á‚»";i:5649;s:3:"წ";i:5650;s:3:"Ⴜ";i:5651;s:3:"ჭ";i:5652;s:3:"Ⴝ";i:5653;s:3:"ხ";i:5654;s:3:"Ⴞ";i:5655;s:3:"ჴ";i:5656;s:3:"Ⴤ";i:5657;s:3:"ჯ";i:5658;s:3:"á‚¿";i:5659;s:3:"ჰ";i:5660;s:3:"Ⴠ";i:5661;s:3:"ჵ";i:5662;s:3:"Ⴥ";i:5663;s:3:"ჶ";i:5664;s:3:"ჷ";i:5665;s:3:"ჸ";i:5666;s:3:"ჹ";i:5667;s:3:"ჺ";i:5668;s:2:"Ô±";i:5669;s:2:"Ô²";i:5670;s:2:"Ô³";i:5671;s:2:"Ô´";i:5672;s:2:"Ôµ";i:5673;s:2:"Ô¶";i:5674;s:2:"Ô·";i:5675;s:2:"Ô¸";i:5676;s:2:"Ô¹";i:5677;s:2:"Ôº";i:5678;s:2:"Ô»";i:5679;s:2:"Ô¼";i:5680;s:2:"Ô½";i:5681;s:2:"Ô¾";i:5682;s:2:"Ô¿";i:5683;s:2:"Õ€";i:5684;s:2:"Õ";i:5685;s:2:"Õ‚";i:5686;s:2:"Õƒ";i:5687;s:2:"Õ„";i:5688;s:2:"Õ…";i:5689;s:2:"Õ†";i:5690;s:2:"Õ‡";i:5691;s:2:"Õˆ";i:5692;s:2:"Õ‰";i:5693;s:2:"ÕŠ";i:5694;s:2:"Õ‹";i:5695;s:2:"ÕŒ";i:5696;s:2:"Õ";i:5697;s:2:"ÕŽ";i:5698;s:2:"Õ";i:5699;s:2:"Õ";i:5700;s:2:"Õ‘";i:5701;s:2:"Õ’";i:5702;s:2:"Õ“";i:5703;s:2:"Õ”";i:5704;s:2:"Õ•";i:5705;s:2:"Õ–";i:5706;s:2:"Õ™";i:5707;s:2:"×";i:5708;s:2:"ב";i:5709;s:2:"×’";i:5710;s:2:"ד";i:5711;s:2:"×”";i:5712;s:2:"ו";i:5713;s:2:"×–";i:5714;s:2:"×—";i:5715;s:2:"ט";i:5716;s:2:"×™";i:5717;s:2:"ך";i:5718;s:2:"ל";i:5719;s:2:"×";i:5720;s:2:"ן";i:5721;s:2:"ס";i:5722;s:2:"×¢";i:5723;s:2:"×£";i:5724;s:2:"×¥";i:5725;s:2:"ק";i:5726;s:2:"ר";i:5727;s:2:"ש";i:5728;s:2:"ת";i:5729;s:4:"ð¤€";i:5730;s:4:"ð¤";i:5731;s:4:"ð¤‚";i:5732;s:4:"ð¤ƒ";i:5733;s:4:"ð¤„";i:5734;s:4:"ð¤…";i:5735;s:4:"ð¤†";i:5736;s:4:"ð¤‡";i:5737;s:4:"ð¤ˆ";i:5738;s:4:"ð¤‰";i:5739;s:4:"ð¤Š";i:5740;s:4:"ð¤‹";i:5741;s:4:"ð¤Œ";i:5742;s:4:"ð¤";i:5743;s:4:"ð¤Ž";i:5744;s:4:"ð¤";i:5745;s:4:"ð¤";i:5746;s:4:"ð¤‘";i:5747;s:4:"ð¤’";i:5748;s:4:"ð¤“";i:5749;s:4:"ð¤”";i:5750;s:4:"ð¤•";i:5751;s:3:"à €";i:5752;s:3:"à ";i:5753;s:3:"à ‚";i:5754;s:3:"à ƒ";i:5755;s:3:"à „";i:5756;s:3:"à …";i:5757;s:3:"à †";i:5758;s:3:"à ‡";i:5759;s:3:"à ˆ";i:5760;s:3:"à ‰";i:5761;s:3:"à Š";i:5762;s:3:"à ‹";i:5763;s:3:"à Œ";i:5764;s:3:"à ";i:5765;s:3:"à Ž";i:5766;s:3:"à ";i:5767;s:3:"à ";i:5768;s:3:"à ‘";i:5769;s:3:"à ’";i:5770;s:3:"à “";i:5771;s:3:"à ”";i:5772;s:3:"à •";i:5773;s:3:"à š";i:5774;s:2:"Ø¡";i:5775;s:2:"Ø¢";i:5776;s:2:"Ø£";i:5777;s:2:"Ù²";i:5778;s:2:"Ù±";i:5779;s:2:"ؤ";i:5780;s:2:"Ø¥";i:5781;s:2:"Ù³";i:5782;s:2:"ݳ";i:5783;s:2:"Ý´";i:5784;s:2:"ئ";i:5785;s:2:"ا";i:5786;s:2:"Ù®";i:5787;s:2:"ب";i:5788;s:2:"Ù»";i:5789;s:2:"Ù¾";i:5790;s:2:"Ú€";i:5791;s:2:"Ý";i:5792;s:2:"Ý‘";i:5793;s:2:"Ý’";i:5794;s:2:"Ý“";i:5795;s:2:"Ý”";i:5796;s:2:"Ý•";i:5797;s:2:"Ý–";i:5798;s:2:"Ø©";i:5799;s:2:"ت";i:5800;s:2:"Ø«";i:5801;s:2:"Ù¹";i:5802;s:2:"Ùº";i:5803;s:2:"Ù¼";i:5804;s:2:"Ù½";i:5805;s:2:"Ù¿";i:5806;s:2:"ج";i:5807;s:2:"Úƒ";i:5808;s:2:"Ú„";i:5809;s:2:"Ú†";i:5810;s:2:"Ú¿";i:5811;s:2:"Ú‡";i:5812;s:2:"Ø­";i:5813;s:2:"Ø®";i:5814;s:2:"Ú";i:5815;s:2:"Ú‚";i:5816;s:2:"Ú…";i:5817;s:2:"Ý—";i:5818;s:2:"ݘ";i:5819;s:2:"Ý®";i:5820;s:2:"ݯ";i:5821;s:2:"ݲ";i:5822;s:2:"ݼ";i:5823;s:2:"د";i:5824;s:2:"Ø°";i:5825;s:2:"Úˆ";i:5826;s:2:"Ú‰";i:5827;s:2:"ÚŠ";i:5828;s:2:"Ú‹";i:5829;s:2:"ÚŒ";i:5830;s:2:"Ú";i:5831;s:2:"ÚŽ";i:5832;s:2:"Ú";i:5833;s:2:"Ú";i:5834;s:2:"Û®";i:5835;s:2:"Ý™";i:5836;s:2:"Ýš";i:5837;s:2:"ر";i:5838;s:2:"ز";i:5839;s:2:"Ú‘";i:5840;s:2:"Ú’";i:5841;s:2:"Ú“";i:5842;s:2:"Ú”";i:5843;s:2:"Ú•";i:5844;s:2:"Ú–";i:5845;s:2:"Ú—";i:5846;s:2:"Ú˜";i:5847;s:2:"Ú™";i:5848;s:2:"Û¯";i:5849;s:2:"Ý›";i:5850;s:2:"Ý«";i:5851;s:2:"ݬ";i:5852;s:2:"ݱ";i:5853;s:2:"س";i:5854;s:2:"Ø´";i:5855;s:2:"Úš";i:5856;s:2:"Ú›";i:5857;s:2:"Úœ";i:5858;s:2:"Ûº";i:5859;s:2:"Ýœ";i:5860;s:2:"Ý­";i:5861;s:2:"Ý°";i:5862;s:2:"ݽ";i:5863;s:2:"ݾ";i:5864;s:2:"ص";i:5865;s:2:"ض";i:5866;s:2:"Ú";i:5867;s:2:"Úž";i:5868;s:2:"Û»";i:5869;s:2:"Ø·";i:5870;s:2:"ظ";i:5871;s:2:"ÚŸ";i:5872;s:2:"ع";i:5873;s:2:"غ";i:5874;s:2:"Ú ";i:5875;s:2:"Û¼";i:5876;s:2:"Ý";i:5877;s:2:"Ýž";i:5878;s:2:"ÝŸ";i:5879;s:2:"Ù";i:5880;s:2:"Ú¡";i:5881;s:2:"Ú¢";i:5882;s:2:"Ú£";i:5883;s:2:"Ú¤";i:5884;s:2:"Ú¥";i:5885;s:2:"Ú¦";i:5886;s:2:"Ý ";i:5887;s:2:"Ý¡";i:5888;s:2:"Ù¯";i:5889;s:2:"Ù‚";i:5890;s:2:"Ú§";i:5891;s:2:"Ú¨";i:5892;s:2:"Ùƒ";i:5893;s:2:"Ú©";i:5894;s:2:"Úª";i:5895;s:2:"Ú«";i:5896;s:2:"Ú¬";i:5897;s:2:"Ý¿";i:5898;s:2:"Ú­";i:5899;s:2:"Ú®";i:5900;s:2:"Ú¯";i:5901;s:2:"Ú°";i:5902;s:2:"Ú±";i:5903;s:2:"Ú²";i:5904;s:2:"Ú³";i:5905;s:2:"Ú´";i:5906;s:2:"Ý¢";i:5907;s:2:"Ø»";i:5908;s:2:"ؼ";i:5909;s:2:"Ý£";i:5910;s:2:"ݤ";i:5911;s:2:"Ù„";i:5912;s:2:"Úµ";i:5913;s:2:"Ú¶";i:5914;s:2:"Ú·";i:5915;s:2:"Ú¸";i:5916;s:2:"ݪ";i:5917;s:2:"Ù…";i:5918;s:2:"Ý¥";i:5919;s:2:"ݦ";i:5920;s:2:"Ù†";i:5921;s:2:"Úº";i:5922;s:2:"Ú»";i:5923;s:2:"Ú¼";i:5924;s:2:"Ú½";i:5925;s:2:"Ú¹";i:5926;s:2:"ݧ";i:5927;s:2:"ݨ";i:5928;s:2:"Ý©";i:5929;s:2:"Ù‡";i:5930;s:2:"Ú¾";i:5931;s:2:"Û";i:5932;s:2:"Ûƒ";i:5933;s:2:"Û¿";i:5934;s:2:"Û•";i:5935;s:2:"Ùˆ";i:5936;s:2:"Û„";i:5937;s:2:"Û…";i:5938;s:2:"Û†";i:5939;s:2:"Û‡";i:5940;s:2:"Ûˆ";i:5941;s:2:"Û‰";i:5942;s:2:"ÛŠ";i:5943;s:2:"Û‹";i:5944;s:2:"Û";i:5945;s:2:"ݸ";i:5946;s:2:"ݹ";i:5947;s:2:"Ù‰";i:5948;s:2:"ÙŠ";i:5949;s:2:"ÛŒ";i:5950;s:2:"Û";i:5951;s:2:"ÛŽ";i:5952;s:2:"Û";i:5953;s:2:"Û‘";i:5954;s:2:"ؽ";i:5955;s:2:"ؾ";i:5956;s:2:"Ø¿";i:5957;s:2:"Ø ";i:5958;s:2:"ݵ";i:5959;s:2:"ݶ";i:5960;s:2:"Ý·";i:5961;s:2:"Û’";i:5962;s:2:"ݺ";i:5963;s:2:"Ý»";i:5964;s:2:"Ü";i:5965;s:2:"Ü’";i:5966;s:2:"Ü“";i:5967;s:2:"Ü–";i:5968;s:2:"Ü•";i:5969;s:2:"Ü—";i:5970;s:2:"ܘ";i:5971;s:2:"Ü™";i:5972;s:2:"Ý";i:5973;s:2:"Üš";i:5974;s:2:"Ü›";i:5975;s:2:"Ü";i:5976;s:2:"Üž";i:5977;s:2:"ÜŸ";i:5978;s:2:"ÝŽ";i:5979;s:2:"Ü ";i:5980;s:2:"Ü¡";i:5981;s:2:"Ü¢";i:5982;s:2:"Ü£";i:5983;s:2:"Ü¥";i:5984;s:2:"ܦ";i:5985;s:2:"Ý";i:5986;s:2:"ܨ";i:5987;s:2:"Ü©";i:5988;s:2:"ܪ";i:5989;s:2:"Ü«";i:5990;s:2:"ܬ";i:5991;s:3:"à¡€";i:5992;s:3:"à¡";i:5993;s:3:"à¡‚";i:5994;s:3:"ࡃ";i:5995;s:3:"à¡„";i:5996;s:3:"à¡…";i:5997;s:3:"ࡆ";i:5998;s:3:"ࡇ";i:5999;s:3:"ࡈ";i:6000;s:3:"ࡉ";i:6001;s:3:"à¡Š";i:6002;s:3:"à¡‹";i:6003;s:3:"à¡Œ";i:6004;s:3:"à¡";i:6005;s:3:"à¡Ž";i:6006;s:3:"à¡";i:6007;s:3:"à¡";i:6008;s:3:"à¡‘";i:6009;s:3:"à¡’";i:6010;s:3:"à¡“";i:6011;s:3:"à¡”";i:6012;s:3:"à¡•";i:6013;s:3:"à¡–";i:6014;s:3:"à¡—";i:6015;s:3:"ࡘ";i:6016;s:2:"Þ€";i:6017;s:2:"Þ™";i:6018;s:2:"Þš";i:6019;s:2:"Þ";i:6020;s:2:"Þ‚";i:6021;s:2:"Þƒ";i:6022;s:2:"Þœ";i:6023;s:2:"Þ„";i:6024;s:2:"Þ…";i:6025;s:2:"Þ†";i:6026;s:2:"Þ‡";i:6027;s:2:"Þ¢";i:6028;s:2:"Þ£";i:6029;s:2:"Þˆ";i:6030;s:2:"Þ¥";i:6031;s:2:"Þ‰";i:6032;s:2:"ÞŠ";i:6033;s:2:"Þ‹";i:6034;s:2:"Þ›";i:6035;s:2:"ÞŒ";i:6036;s:2:"Þ˜";i:6037;s:2:"Þ ";i:6038;s:2:"Þ¡";i:6039;s:2:"Þ";i:6040;s:2:"ÞŽ";i:6041;s:2:"Þ¤";i:6042;s:2:"Þ";i:6043;s:2:"Þ";i:6044;s:2:"Þ";i:6045;s:2:"Þž";i:6046;s:2:"ÞŸ";i:6047;s:2:"Þ‘";i:6048;s:2:"Þ’";i:6049;s:2:"Þ“";i:6050;s:2:"Þ”";i:6051;s:2:"Þ•";i:6052;s:2:"Þ–";i:6053;s:2:"Þ—";i:6054;s:2:"Þ±";i:6055;s:2:"ߊ";i:6056;s:2:"ß‹";i:6057;s:2:"ߌ";i:6058;s:2:"ß";i:6059;s:2:"ߎ";i:6060;s:2:"ß";i:6061;s:2:"ß";i:6062;s:2:"ß‘";i:6063;s:2:"ß’";i:6064;s:2:"ß“";i:6065;s:2:"ß”";i:6066;s:2:"ß•";i:6067;s:2:"ß–";i:6068;s:2:"ß—";i:6069;s:2:"ߘ";i:6070;s:2:"ß™";i:6071;s:2:"ßš";i:6072;s:2:"ß›";i:6073;s:2:"ßœ";i:6074;s:2:"ß";i:6075;s:2:"ßž";i:6076;s:2:"ߟ";i:6077;s:2:"ß ";i:6078;s:2:"ß¡";i:6079;s:2:"ߢ";i:6080;s:2:"ߣ";i:6081;s:2:"ߤ";i:6082;s:2:"ߥ";i:6083;s:2:"ߦ";i:6084;s:2:"ߧ";i:6085;s:2:"ß´";i:6086;s:2:"ßµ";i:6087;s:3:"â´°";i:6088;s:3:"â´±";i:6089;s:3:"â´²";i:6090;s:3:"â´³";i:6091;s:3:"â´´";i:6092;s:3:"â´µ";i:6093;s:3:"â´¶";i:6094;s:3:"â´·";i:6095;s:3:"â´¸";i:6096;s:3:"â´¹";i:6097;s:3:"â´º";i:6098;s:3:"â´»";i:6099;s:3:"â´¼";i:6100;s:3:"â´½";i:6101;s:3:"â´¾";i:6102;s:3:"â´¿";i:6103;s:3:"âµ€";i:6104;s:3:"âµ";i:6105;s:3:"ⵂ";i:6106;s:3:"ⵃ";i:6107;s:3:"ⵄ";i:6108;s:3:"âµ…";i:6109;s:3:"ⵆ";i:6110;s:3:"ⵇ";i:6111;s:3:"ⵈ";i:6112;s:3:"ⵉ";i:6113;s:3:"ⵊ";i:6114;s:3:"ⵋ";i:6115;s:3:"ⵌ";i:6116;s:3:"âµ";i:6117;s:3:"ⵎ";i:6118;s:3:"âµ";i:6119;s:3:"âµ";i:6120;s:3:"ⵑ";i:6121;s:3:"âµ’";i:6122;s:3:"ⵓ";i:6123;s:3:"âµ”";i:6124;s:3:"ⵕ";i:6125;s:3:"âµ–";i:6126;s:3:"âµ—";i:6127;s:3:"ⵘ";i:6128;s:3:"âµ™";i:6129;s:3:"ⵚ";i:6130;s:3:"âµ›";i:6131;s:3:"ⵜ";i:6132;s:3:"âµ";i:6133;s:3:"ⵞ";i:6134;s:3:"ⵟ";i:6135;s:3:"âµ ";i:6136;s:3:"ⵡ";i:6137;s:3:"âµ¢";i:6138;s:3:"âµ£";i:6139;s:3:"ⵤ";i:6140;s:3:"âµ¥";i:6141;s:3:"ⵯ";i:6142;s:3:"ሀ";i:6143;s:3:"áˆ";i:6144;s:3:"ሂ";i:6145;s:3:"ሃ";i:6146;s:3:"ሄ";i:6147;s:3:"ህ";i:6148;s:3:"ሆ";i:6149;s:3:"ሇ";i:6150;s:3:"ለ";i:6151;s:3:"ሉ";i:6152;s:3:"ሊ";i:6153;s:3:"ላ";i:6154;s:3:"ሌ";i:6155;s:3:"áˆ";i:6156;s:3:"ሎ";i:6157;s:3:"áˆ";i:6158;s:3:"ⶀ";i:6159;s:3:"áˆ";i:6160;s:3:"ሑ";i:6161;s:3:"ሒ";i:6162;s:3:"ሓ";i:6163;s:3:"ሔ";i:6164;s:3:"ሕ";i:6165;s:3:"ሖ";i:6166;s:3:"ሗ";i:6167;s:3:"መ";i:6168;s:3:"ሙ";i:6169;s:3:"ሚ";i:6170;s:3:"ማ";i:6171;s:3:"ሜ";i:6172;s:3:"áˆ";i:6173;s:3:"ሞ";i:6174;s:3:"ሟ";i:6175;s:3:"ᎀ";i:6176;s:3:"áŽ";i:6177;s:3:"ᎂ";i:6178;s:3:"ᎃ";i:6179;s:3:"â¶";i:6180;s:3:"ሠ";i:6181;s:3:"ሡ";i:6182;s:3:"ሢ";i:6183;s:3:"ሣ";i:6184;s:3:"ሤ";i:6185;s:3:"ሥ";i:6186;s:3:"ሦ";i:6187;s:3:"ሧ";i:6188;s:3:"ረ";i:6189;s:3:"ሩ";i:6190;s:3:"ሪ";i:6191;s:3:"ራ";i:6192;s:3:"ሬ";i:6193;s:3:"ር";i:6194;s:3:"ሮ";i:6195;s:3:"ሯ";i:6196;s:3:"ⶂ";i:6197;s:3:"ሰ";i:6198;s:3:"ሱ";i:6199;s:3:"ሲ";i:6200;s:3:"ሳ";i:6201;s:3:"ሴ";i:6202;s:3:"ስ";i:6203;s:3:"ሶ";i:6204;s:3:"ሷ";i:6205;s:3:"ⶃ";i:6206;s:3:"ê¬";i:6207;s:3:"ꬂ";i:6208;s:3:"ꬃ";i:6209;s:3:"ꬄ";i:6210;s:3:"ꬅ";i:6211;s:3:"ꬆ";i:6212;s:3:"ሸ";i:6213;s:3:"ሹ";i:6214;s:3:"ሺ";i:6215;s:3:"ሻ";i:6216;s:3:"ሼ";i:6217;s:3:"ሽ";i:6218;s:3:"ሾ";i:6219;s:3:"ሿ";i:6220;s:3:"ⶄ";i:6221;s:3:"ቀ";i:6222;s:3:"á‰";i:6223;s:3:"ቂ";i:6224;s:3:"ቃ";i:6225;s:3:"ቄ";i:6226;s:3:"ቅ";i:6227;s:3:"ቆ";i:6228;s:3:"ቇ";i:6229;s:3:"ቈ";i:6230;s:3:"ቊ";i:6231;s:3:"ቋ";i:6232;s:3:"ቌ";i:6233;s:3:"á‰";i:6234;s:3:"á‰";i:6235;s:3:"ቑ";i:6236;s:3:"ቒ";i:6237;s:3:"ቓ";i:6238;s:3:"ቔ";i:6239;s:3:"ቕ";i:6240;s:3:"ቖ";i:6241;s:3:"ቘ";i:6242;s:3:"ቚ";i:6243;s:3:"ቛ";i:6244;s:3:"ቜ";i:6245;s:3:"á‰";i:6246;s:3:"በ";i:6247;s:3:"ቡ";i:6248;s:3:"ቢ";i:6249;s:3:"ባ";i:6250;s:3:"ቤ";i:6251;s:3:"ብ";i:6252;s:3:"ቦ";i:6253;s:3:"ቧ";i:6254;s:3:"ᎄ";i:6255;s:3:"ᎅ";i:6256;s:3:"ᎆ";i:6257;s:3:"ᎇ";i:6258;s:3:"ⶅ";i:6259;s:3:"ቨ";i:6260;s:3:"ቩ";i:6261;s:3:"ቪ";i:6262;s:3:"ቫ";i:6263;s:3:"ቬ";i:6264;s:3:"ቭ";i:6265;s:3:"ቮ";i:6266;s:3:"ቯ";i:6267;s:3:"ተ";i:6268;s:3:"ቱ";i:6269;s:3:"ቲ";i:6270;s:3:"ታ";i:6271;s:3:"ቴ";i:6272;s:3:"ት";i:6273;s:3:"ቶ";i:6274;s:3:"ቷ";i:6275;s:3:"ⶆ";i:6276;s:3:"ቸ";i:6277;s:3:"ቹ";i:6278;s:3:"ቺ";i:6279;s:3:"ቻ";i:6280;s:3:"ቼ";i:6281;s:3:"ች";i:6282;s:3:"ቾ";i:6283;s:3:"ቿ";i:6284;s:3:"ⶇ";i:6285;s:3:"ኀ";i:6286;s:3:"áŠ";i:6287;s:3:"ኂ";i:6288;s:3:"ኃ";i:6289;s:3:"ኄ";i:6290;s:3:"ኅ";i:6291;s:3:"ኆ";i:6292;s:3:"ኇ";i:6293;s:3:"ኈ";i:6294;s:3:"ኊ";i:6295;s:3:"ኋ";i:6296;s:3:"ኌ";i:6297;s:3:"áŠ";i:6298;s:3:"áŠ";i:6299;s:3:"ኑ";i:6300;s:3:"ኒ";i:6301;s:3:"ና";i:6302;s:3:"ኔ";i:6303;s:3:"ን";i:6304;s:3:"ኖ";i:6305;s:3:"ኗ";i:6306;s:3:"ⶈ";i:6307;s:3:"ኘ";i:6308;s:3:"ኙ";i:6309;s:3:"ኚ";i:6310;s:3:"ኛ";i:6311;s:3:"ኜ";i:6312;s:3:"áŠ";i:6313;s:3:"ኞ";i:6314;s:3:"ኟ";i:6315;s:3:"ⶉ";i:6316;s:3:"አ";i:6317;s:3:"ኡ";i:6318;s:3:"ኢ";i:6319;s:3:"ኣ";i:6320;s:3:"ኤ";i:6321;s:3:"እ";i:6322;s:3:"ኦ";i:6323;s:3:"ኧ";i:6324;s:3:"ⶊ";i:6325;s:3:"ከ";i:6326;s:3:"ኩ";i:6327;s:3:"ኪ";i:6328;s:3:"ካ";i:6329;s:3:"ኬ";i:6330;s:3:"ክ";i:6331;s:3:"ኮ";i:6332;s:3:"ኯ";i:6333;s:3:"ኰ";i:6334;s:3:"ኲ";i:6335;s:3:"ኳ";i:6336;s:3:"ኴ";i:6337;s:3:"ኵ";i:6338;s:3:"ኸ";i:6339;s:3:"ኹ";i:6340;s:3:"ኺ";i:6341;s:3:"ኻ";i:6342;s:3:"ኼ";i:6343;s:3:"ኽ";i:6344;s:3:"ኾ";i:6345;s:3:"á‹€";i:6346;s:3:"á‹‚";i:6347;s:3:"ዃ";i:6348;s:3:"á‹„";i:6349;s:3:"á‹…";i:6350;s:3:"ወ";i:6351;s:3:"ዉ";i:6352;s:3:"á‹Š";i:6353;s:3:"á‹‹";i:6354;s:3:"á‹Œ";i:6355;s:3:"á‹";i:6356;s:3:"á‹Ž";i:6357;s:3:"á‹";i:6358;s:3:"á‹";i:6359;s:3:"á‹‘";i:6360;s:3:"á‹’";i:6361;s:3:"á‹“";i:6362;s:3:"á‹”";i:6363;s:3:"á‹•";i:6364;s:3:"á‹–";i:6365;s:3:"ዘ";i:6366;s:3:"á‹™";i:6367;s:3:"á‹š";i:6368;s:3:"á‹›";i:6369;s:3:"á‹œ";i:6370;s:3:"á‹";i:6371;s:3:"á‹ž";i:6372;s:3:"á‹Ÿ";i:6373;s:3:"ⶋ";i:6374;s:3:"ꬑ";i:6375;s:3:"ꬒ";i:6376;s:3:"ꬓ";i:6377;s:3:"ꬔ";i:6378;s:3:"ꬕ";i:6379;s:3:"ꬖ";i:6380;s:3:"á‹ ";i:6381;s:3:"á‹¡";i:6382;s:3:"á‹¢";i:6383;s:3:"á‹£";i:6384;s:3:"ዤ";i:6385;s:3:"á‹¥";i:6386;s:3:"ዦ";i:6387;s:3:"ዧ";i:6388;s:3:"የ";i:6389;s:3:"á‹©";i:6390;s:3:"ዪ";i:6391;s:3:"á‹«";i:6392;s:3:"ዬ";i:6393;s:3:"á‹­";i:6394;s:3:"á‹®";i:6395;s:3:"ዯ";i:6396;s:3:"á‹°";i:6397;s:3:"ዱ";i:6398;s:3:"ዲ";i:6399;s:3:"ዳ";i:6400;s:3:"á‹´";i:6401;s:3:"ድ";i:6402;s:3:"ዶ";i:6403;s:3:"á‹·";i:6404;s:3:"ⶌ";i:6405;s:3:"ꬉ";i:6406;s:3:"ꬊ";i:6407;s:3:"ꬋ";i:6408;s:3:"ꬌ";i:6409;s:3:"ê¬";i:6410;s:3:"ꬎ";i:6411;s:3:"ዸ";i:6412;s:3:"ዹ";i:6413;s:3:"ዺ";i:6414;s:3:"á‹»";i:6415;s:3:"ዼ";i:6416;s:3:"ዽ";i:6417;s:3:"ዾ";i:6418;s:3:"á‹¿";i:6419;s:3:"â¶";i:6420;s:3:"ጀ";i:6421;s:3:"áŒ";i:6422;s:3:"ጂ";i:6423;s:3:"ጃ";i:6424;s:3:"ጄ";i:6425;s:3:"ጅ";i:6426;s:3:"ጆ";i:6427;s:3:"ጇ";i:6428;s:3:"ⶎ";i:6429;s:3:"ገ";i:6430;s:3:"ጉ";i:6431;s:3:"ጊ";i:6432;s:3:"ጋ";i:6433;s:3:"ጌ";i:6434;s:3:"áŒ";i:6435;s:3:"ጎ";i:6436;s:3:"áŒ";i:6437;s:3:"áŒ";i:6438;s:3:"ጒ";i:6439;s:3:"ጓ";i:6440;s:3:"ጔ";i:6441;s:3:"ጕ";i:6442;s:3:"ጘ";i:6443;s:3:"ጙ";i:6444;s:3:"ጚ";i:6445;s:3:"ጛ";i:6446;s:3:"ጜ";i:6447;s:3:"áŒ";i:6448;s:3:"ጞ";i:6449;s:3:"ጟ";i:6450;s:3:"ⶓ";i:6451;s:3:"ⶔ";i:6452;s:3:"ⶕ";i:6453;s:3:"ⶖ";i:6454;s:3:"ጠ";i:6455;s:3:"ጡ";i:6456;s:3:"ጢ";i:6457;s:3:"ጣ";i:6458;s:3:"ጤ";i:6459;s:3:"ጥ";i:6460;s:3:"ጦ";i:6461;s:3:"ጧ";i:6462;s:3:"â¶";i:6463;s:3:"ጨ";i:6464;s:3:"ጩ";i:6465;s:3:"ጪ";i:6466;s:3:"ጫ";i:6467;s:3:"ጬ";i:6468;s:3:"ጭ";i:6469;s:3:"ጮ";i:6470;s:3:"ጯ";i:6471;s:3:"â¶";i:6472;s:3:"ꬠ";i:6473;s:3:"ꬡ";i:6474;s:3:"ꬢ";i:6475;s:3:"ꬣ";i:6476;s:3:"ꬤ";i:6477;s:3:"ꬥ";i:6478;s:3:"ꬦ";i:6479;s:3:"ጰ";i:6480;s:3:"ጱ";i:6481;s:3:"ጲ";i:6482;s:3:"ጳ";i:6483;s:3:"ጴ";i:6484;s:3:"ጵ";i:6485;s:3:"ጶ";i:6486;s:3:"ጷ";i:6487;s:3:"ⶑ";i:6488;s:3:"ጸ";i:6489;s:3:"ጹ";i:6490;s:3:"ጺ";i:6491;s:3:"ጻ";i:6492;s:3:"ጼ";i:6493;s:3:"ጽ";i:6494;s:3:"ጾ";i:6495;s:3:"ጿ";i:6496;s:3:"ꬨ";i:6497;s:3:"ꬩ";i:6498;s:3:"ꬪ";i:6499;s:3:"ꬫ";i:6500;s:3:"ꬬ";i:6501;s:3:"ꬭ";i:6502;s:3:"ꬮ";i:6503;s:3:"á€";i:6504;s:3:"á";i:6505;s:3:"á‚";i:6506;s:3:"áƒ";i:6507;s:3:"á„";i:6508;s:3:"á…";i:6509;s:3:"á†";i:6510;s:3:"á‡";i:6511;s:3:"áˆ";i:6512;s:3:"á‰";i:6513;s:3:"áŠ";i:6514;s:3:"á‹";i:6515;s:3:"áŒ";i:6516;s:3:"á";i:6517;s:3:"áŽ";i:6518;s:3:"á";i:6519;s:3:"ᎈ";i:6520;s:3:"ᎉ";i:6521;s:3:"ᎊ";i:6522;s:3:"ᎋ";i:6523;s:3:"á";i:6524;s:3:"á‘";i:6525;s:3:"á’";i:6526;s:3:"á“";i:6527;s:3:"á”";i:6528;s:3:"á•";i:6529;s:3:"á–";i:6530;s:3:"á—";i:6531;s:3:"ᎌ";i:6532;s:3:"áŽ";i:6533;s:3:"ᎎ";i:6534;s:3:"áŽ";i:6535;s:3:"ⶒ";i:6536;s:3:"á˜";i:6537;s:3:"á™";i:6538;s:3:"áš";i:6539;s:3:"ⶠ";i:6540;s:3:"ⶡ";i:6541;s:3:"ⶢ";i:6542;s:3:"ⶣ";i:6543;s:3:"ⶤ";i:6544;s:3:"ⶥ";i:6545;s:3:"ⶦ";i:6546;s:3:"ⶨ";i:6547;s:3:"ⶩ";i:6548;s:3:"ⶪ";i:6549;s:3:"ⶫ";i:6550;s:3:"ⶬ";i:6551;s:3:"ⶭ";i:6552;s:3:"ⶮ";i:6553;s:3:"ⶰ";i:6554;s:3:"ⶱ";i:6555;s:3:"ⶲ";i:6556;s:3:"ⶳ";i:6557;s:3:"ⶴ";i:6558;s:3:"ⶵ";i:6559;s:3:"ⶶ";i:6560;s:3:"ⶸ";i:6561;s:3:"ⶹ";i:6562;s:3:"ⶺ";i:6563;s:3:"ⶻ";i:6564;s:3:"ⶼ";i:6565;s:3:"ⶽ";i:6566;s:3:"ⶾ";i:6567;s:3:"â·€";i:6568;s:3:"â·";i:6569;s:3:"â·‚";i:6570;s:3:"â·ƒ";i:6571;s:3:"â·„";i:6572;s:3:"â·…";i:6573;s:3:"â·†";i:6574;s:3:"â·ˆ";i:6575;s:3:"â·‰";i:6576;s:3:"â·Š";i:6577;s:3:"â·‹";i:6578;s:3:"â·Œ";i:6579;s:3:"â·";i:6580;s:3:"â·Ž";i:6581;s:3:"â·";i:6582;s:3:"â·‘";i:6583;s:3:"â·’";i:6584;s:3:"â·“";i:6585;s:3:"â·”";i:6586;s:3:"â·•";i:6587;s:3:"â·–";i:6588;s:3:"â·˜";i:6589;s:3:"â·™";i:6590;s:3:"â·š";i:6591;s:3:"â·›";i:6592;s:3:"â·œ";i:6593;s:3:"â·";i:6594;s:3:"â·ž";i:6595;s:3:"à¥";i:6596;s:3:"ॲ";i:6597;s:3:"ऄ";i:6598;s:3:"अ";i:6599;s:3:"आ";i:6600;s:3:"ॳ";i:6601;s:3:"ॴ";i:6602;s:3:"ॵ";i:6603;s:3:"ॶ";i:6604;s:3:"ॷ";i:6605;s:3:"इ";i:6606;s:3:"ई";i:6607;s:3:"उ";i:6608;s:3:"ऊ";i:6609;s:3:"ऋ";i:6610;s:3:"ॠ";i:6611;s:3:"ऌ";i:6612;s:3:"ॡ";i:6613;s:3:"à¤";i:6614;s:3:"ऎ";i:6615;s:3:"à¤";i:6616;s:3:"à¤";i:6617;s:3:"ऑ";i:6618;s:3:"ऒ";i:6619;s:3:"ओ";i:6620;s:3:"औ";i:6621;s:3:"क";i:6622;s:3:"ख";i:6623;s:3:"ग";i:6624;s:3:"ॻ";i:6625;s:3:"घ";i:6626;s:3:"ङ";i:6627;s:3:"च";i:6628;s:3:"छ";i:6629;s:3:"ज";i:6630;s:3:"ॹ";i:6631;s:3:"ॼ";i:6632;s:3:"à¤";i:6633;s:3:"ञ";i:6634;s:3:"ट";i:6635;s:3:"ठ";i:6636;s:3:"ड";i:6637;s:3:"ॾ";i:6638;s:3:"ढ";i:6639;s:3:"ण";i:6640;s:3:"त";i:6641;s:3:"थ";i:6642;s:3:"द";i:6643;s:3:"ध";i:6644;s:3:"न";i:6645;s:3:"प";i:6646;s:3:"फ";i:6647;s:3:"ब";i:6648;s:3:"ॿ";i:6649;s:3:"भ";i:6650;s:3:"म";i:6651;s:3:"य";i:6652;s:3:"ॺ";i:6653;s:3:"र";i:6654;s:3:"ल";i:6655;s:3:"ळ";i:6656;s:3:"व";i:6657;s:3:"श";i:6658;s:3:"ष";i:6659;s:3:"स";i:6660;s:3:"ह";i:6661;s:3:"ऽ";i:6662;s:3:"ॽ";i:6663;s:3:"ᳩ";i:6664;s:3:"ꣲ";i:6665;s:3:"ꣻ";i:6666;s:3:"অ";i:6667;s:3:"আ";i:6668;s:3:"ই";i:6669;s:3:"ঈ";i:6670;s:3:"উ";i:6671;s:3:"ঊ";i:6672;s:3:"ঋ";i:6673;s:3:"ৠ";i:6674;s:3:"ঌ";i:6675;s:3:"ৡ";i:6676;s:3:"à¦";i:6677;s:3:"à¦";i:6678;s:3:"ও";i:6679;s:3:"ঔ";i:6680;s:3:"ক";i:6681;s:3:"খ";i:6682;s:3:"গ";i:6683;s:3:"ঘ";i:6684;s:3:"ঙ";i:6685;s:3:"চ";i:6686;s:3:"ছ";i:6687;s:3:"জ";i:6688;s:3:"à¦";i:6689;s:3:"ঞ";i:6690;s:3:"ট";i:6691;s:3:"ঠ";i:6692;s:3:"ড";i:6693;s:3:"ঢ";i:6694;s:3:"ণ";i:6695;s:3:"ত";i:6696;s:3:"থ";i:6697;s:3:"দ";i:6698;s:3:"ধ";i:6699;s:3:"ন";i:6700;s:3:"প";i:6701;s:3:"ফ";i:6702;s:3:"ব";i:6703;s:3:"ভ";i:6704;s:3:"ম";i:6705;s:3:"য";i:6706;s:3:"র";i:6707;s:3:"ৰ";i:6708;s:3:"ল";i:6709;s:3:"ৱ";i:6710;s:3:"শ";i:6711;s:3:"ষ";i:6712;s:3:"স";i:6713;s:3:"হ";i:6714;s:3:"ঽ";i:6715;s:3:"à©´";i:6716;s:3:"ੳ";i:6717;s:3:"ਉ";i:6718;s:3:"ਊ";i:6719;s:3:"ਓ";i:6720;s:3:"ਅ";i:6721;s:3:"ਆ";i:6722;s:3:"à¨";i:6723;s:3:"ਔ";i:6724;s:3:"ੲ";i:6725;s:3:"ਇ";i:6726;s:3:"ਈ";i:6727;s:3:"à¨";i:6728;s:3:"ਸ";i:6729;s:3:"ਹ";i:6730;s:3:"ਕ";i:6731;s:3:"ਖ";i:6732;s:3:"ਗ";i:6733;s:3:"ਘ";i:6734;s:3:"ਙ";i:6735;s:3:"ਚ";i:6736;s:3:"ਛ";i:6737;s:3:"ਜ";i:6738;s:3:"à¨";i:6739;s:3:"ਞ";i:6740;s:3:"ਟ";i:6741;s:3:"ਠ";i:6742;s:3:"ਡ";i:6743;s:3:"ਢ";i:6744;s:3:"ਣ";i:6745;s:3:"ਤ";i:6746;s:3:"ਥ";i:6747;s:3:"ਦ";i:6748;s:3:"ਧ";i:6749;s:3:"ਨ";i:6750;s:3:"ਪ";i:6751;s:3:"ਫ";i:6752;s:3:"ਬ";i:6753;s:3:"ਭ";i:6754;s:3:"ਮ";i:6755;s:3:"ਯ";i:6756;s:3:"ਰ";i:6757;s:3:"ਲ";i:6758;s:3:"ਵ";i:6759;s:3:"à©œ";i:6760;s:3:"à«";i:6761;s:3:"અ";i:6762;s:3:"આ";i:6763;s:3:"ઇ";i:6764;s:3:"ઈ";i:6765;s:3:"ઉ";i:6766;s:3:"ઊ";i:6767;s:3:"ઋ";i:6768;s:3:"à« ";i:6769;s:3:"ઌ";i:6770;s:3:"à«¡";i:6771;s:3:"àª";i:6772;s:3:"àª";i:6773;s:3:"àª";i:6774;s:3:"ઑ";i:6775;s:3:"ઓ";i:6776;s:3:"ઔ";i:6777;s:3:"ક";i:6778;s:3:"ખ";i:6779;s:3:"ગ";i:6780;s:3:"ઘ";i:6781;s:3:"ઙ";i:6782;s:3:"ચ";i:6783;s:3:"છ";i:6784;s:3:"જ";i:6785;s:3:"àª";i:6786;s:3:"ઞ";i:6787;s:3:"ટ";i:6788;s:3:"ઠ";i:6789;s:3:"ડ";i:6790;s:3:"ઢ";i:6791;s:3:"ણ";i:6792;s:3:"ત";i:6793;s:3:"થ";i:6794;s:3:"દ";i:6795;s:3:"ધ";i:6796;s:3:"ન";i:6797;s:3:"પ";i:6798;s:3:"ફ";i:6799;s:3:"બ";i:6800;s:3:"ભ";i:6801;s:3:"મ";i:6802;s:3:"ય";i:6803;s:3:"ર";i:6804;s:3:"લ";i:6805;s:3:"વ";i:6806;s:3:"શ";i:6807;s:3:"ષ";i:6808;s:3:"સ";i:6809;s:3:"હ";i:6810;s:3:"ળ";i:6811;s:3:"ઽ";i:6812;s:3:"ଅ";i:6813;s:3:"ଆ";i:6814;s:3:"ଇ";i:6815;s:3:"ଈ";i:6816;s:3:"ଉ";i:6817;s:3:"ଊ";i:6818;s:3:"ଋ";i:6819;s:3:"à­ ";i:6820;s:3:"ଌ";i:6821;s:3:"à­¡";i:6822;s:3:"à¬";i:6823;s:3:"à¬";i:6824;s:3:"ଓ";i:6825;s:3:"ଔ";i:6826;s:3:"କ";i:6827;s:3:"ଖ";i:6828;s:3:"ଗ";i:6829;s:3:"ଘ";i:6830;s:3:"ଙ";i:6831;s:3:"ଚ";i:6832;s:3:"ଛ";i:6833;s:3:"ଜ";i:6834;s:3:"à¬";i:6835;s:3:"ଞ";i:6836;s:3:"ଟ";i:6837;s:3:"ଠ";i:6838;s:3:"ଡ";i:6839;s:3:"ଢ";i:6840;s:3:"ଣ";i:6841;s:3:"ତ";i:6842;s:3:"ଥ";i:6843;s:3:"ଦ";i:6844;s:3:"ଧ";i:6845;s:3:"ନ";i:6846;s:3:"ପ";i:6847;s:3:"ଫ";i:6848;s:3:"ବ";i:6849;s:3:"ଭ";i:6850;s:3:"ମ";i:6851;s:3:"ଯ";i:6852;s:3:"à­Ÿ";i:6853;s:3:"ର";i:6854;s:3:"ଲ";i:6855;s:3:"ଳ";i:6856;s:3:"ଵ";i:6857;s:3:"à­±";i:6858;s:3:"ଶ";i:6859;s:3:"ଷ";i:6860;s:3:"ସ";i:6861;s:3:"ହ";i:6862;s:3:"ଽ";i:6863;s:3:"à¯";i:6864;s:3:"à®…";i:6865;s:3:"ஆ";i:6866;s:3:"இ";i:6867;s:3:"ஈ";i:6868;s:3:"உ";i:6869;s:3:"ஊ";i:6870;s:3:"எ";i:6871;s:3:"à®";i:6872;s:3:"à®";i:6873;s:3:"à®’";i:6874;s:3:"ஓ";i:6875;s:3:"à®”";i:6876;s:3:"ஃ";i:6877;s:3:"க";i:6878;s:3:"à®™";i:6879;s:3:"ச";i:6880;s:3:"ஞ";i:6881;s:3:"ட";i:6882;s:3:"ண";i:6883;s:3:"த";i:6884;s:3:"ந";i:6885;s:3:"ப";i:6886;s:3:"à®®";i:6887;s:3:"ய";i:6888;s:3:"à®°";i:6889;s:3:"ல";i:6890;s:3:"வ";i:6891;s:3:"à®´";i:6892;s:3:"ள";i:6893;s:3:"à®±";i:6894;s:3:"ன";i:6895;s:3:"ஜ";i:6896;s:3:"ஶ";i:6897;s:3:"à®·";i:6898;s:3:"ஸ";i:6899;s:3:"ஹ";i:6900;s:3:"à°…";i:6901;s:3:"à°†";i:6902;s:3:"à°‡";i:6903;s:3:"à°ˆ";i:6904;s:3:"à°‰";i:6905;s:3:"à°Š";i:6906;s:3:"à°‹";i:6907;s:3:"à± ";i:6908;s:3:"à°Œ";i:6909;s:3:"ౡ";i:6910;s:3:"à°Ž";i:6911;s:3:"à°";i:6912;s:3:"à°";i:6913;s:3:"à°’";i:6914;s:3:"à°“";i:6915;s:3:"à°”";i:6916;s:3:"à°•";i:6917;s:3:"à°–";i:6918;s:3:"à°—";i:6919;s:3:"à°˜";i:6920;s:3:"à°™";i:6921;s:3:"à°š";i:6922;s:3:"ౘ";i:6923;s:3:"à°›";i:6924;s:3:"à°œ";i:6925;s:3:"à±™";i:6926;s:3:"à°";i:6927;s:3:"à°ž";i:6928;s:3:"à°Ÿ";i:6929;s:3:"à° ";i:6930;s:3:"à°¡";i:6931;s:3:"à°¢";i:6932;s:3:"à°£";i:6933;s:3:"à°¤";i:6934;s:3:"à°¥";i:6935;s:3:"à°¦";i:6936;s:3:"à°§";i:6937;s:3:"à°¨";i:6938;s:3:"à°ª";i:6939;s:3:"à°«";i:6940;s:3:"à°¬";i:6941;s:3:"à°­";i:6942;s:3:"à°®";i:6943;s:3:"à°¯";i:6944;s:3:"à°°";i:6945;s:3:"à°±";i:6946;s:3:"à°²";i:6947;s:3:"à°µ";i:6948;s:3:"à°¶";i:6949;s:3:"à°·";i:6950;s:3:"à°¸";i:6951;s:3:"à°¹";i:6952;s:3:"à°³";i:6953;s:3:"à°½";i:6954;s:3:"ಅ";i:6955;s:3:"ಆ";i:6956;s:3:"ಇ";i:6957;s:3:"ಈ";i:6958;s:3:"ಉ";i:6959;s:3:"ಊ";i:6960;s:3:"ಋ";i:6961;s:3:"à³ ";i:6962;s:3:"ಌ";i:6963;s:3:"ೡ";i:6964;s:3:"ಎ";i:6965;s:3:"à²";i:6966;s:3:"à²";i:6967;s:3:"ಒ";i:6968;s:3:"ಓ";i:6969;s:3:"ಔ";i:6970;s:3:"ಕ";i:6971;s:3:"ಖ";i:6972;s:3:"ಗ";i:6973;s:3:"ಘ";i:6974;s:3:"ಙ";i:6975;s:3:"ಚ";i:6976;s:3:"ಛ";i:6977;s:3:"ಜ";i:6978;s:3:"à²";i:6979;s:3:"ಞ";i:6980;s:3:"ಟ";i:6981;s:3:"ಠ";i:6982;s:3:"ಡ";i:6983;s:3:"ಢ";i:6984;s:3:"ಣ";i:6985;s:3:"ತ";i:6986;s:3:"ಥ";i:6987;s:3:"ದ";i:6988;s:3:"ಧ";i:6989;s:3:"ನ";i:6990;s:3:"ಪ";i:6991;s:3:"ಫ";i:6992;s:3:"ಬ";i:6993;s:3:"ಭ";i:6994;s:3:"ಮ";i:6995;s:3:"ಯ";i:6996;s:3:"ರ";i:6997;s:3:"ಱ";i:6998;s:3:"ಲ";i:6999;s:3:"ವ";i:7000;s:3:"ಶ";i:7001;s:3:"ಷ";i:7002;s:3:"ಸ";i:7003;s:3:"ಹ";i:7004;s:3:"ಳ";i:7005;s:3:"ೞ";i:7006;s:3:"ಽ";i:7007;s:3:"à³±";i:7008;s:3:"à³²";i:7009;s:3:"à´…";i:7010;s:3:"à´†";i:7011;s:3:"à´‡";i:7012;s:3:"à´ˆ";i:7013;s:3:"à´‰";i:7014;s:3:"à´Š";i:7015;s:3:"à´‹";i:7016;s:3:"ൠ";i:7017;s:3:"à´Œ";i:7018;s:3:"ൡ";i:7019;s:3:"à´Ž";i:7020;s:3:"à´";i:7021;s:3:"à´";i:7022;s:3:"à´’";i:7023;s:3:"à´“";i:7024;s:3:"à´”";i:7025;s:3:"à´•";i:7026;s:3:"à´–";i:7027;s:3:"à´—";i:7028;s:3:"à´˜";i:7029;s:3:"à´™";i:7030;s:3:"à´š";i:7031;s:3:"à´›";i:7032;s:3:"à´œ";i:7033;s:3:"à´";i:7034;s:3:"à´ž";i:7035;s:3:"à´Ÿ";i:7036;s:3:"à´ ";i:7037;s:3:"à´¡";i:7038;s:3:"à´¢";i:7039;s:3:"à´£";i:7040;s:3:"à´¤";i:7041;s:3:"à´¥";i:7042;s:3:"à´¦";i:7043;s:3:"à´§";i:7044;s:3:"à´¨";i:7045;s:3:"à´©";i:7046;s:3:"à´ª";i:7047;s:3:"à´«";i:7048;s:3:"à´¬";i:7049;s:3:"à´­";i:7050;s:3:"à´®";i:7051;s:3:"à´¯";i:7052;s:3:"à´°";i:7053;s:3:"à´²";i:7054;s:3:"à´µ";i:7055;s:3:"à´¶";i:7056;s:3:"à´·";i:7057;s:3:"à´¸";i:7058;s:3:"à´¹";i:7059;s:3:"à´³";i:7060;s:3:"à´´";i:7061;s:3:"à´±";i:7062;s:3:"à´º";i:7063;s:3:"à´½";i:7064;s:3:"අ";i:7065;s:3:"ආ";i:7066;s:3:"ඇ";i:7067;s:3:"ඈ";i:7068;s:3:"ඉ";i:7069;s:3:"ඊ";i:7070;s:3:"උ";i:7071;s:3:"ඌ";i:7072;s:3:"à¶";i:7073;s:3:"ඎ";i:7074;s:3:"à¶";i:7075;s:3:"à¶";i:7076;s:3:"එ";i:7077;s:3:"ඒ";i:7078;s:3:"ඓ";i:7079;s:3:"ඔ";i:7080;s:3:"ඕ";i:7081;s:3:"ඖ";i:7082;s:3:"ක";i:7083;s:3:"ඛ";i:7084;s:3:"ග";i:7085;s:3:"à¶";i:7086;s:3:"ඞ";i:7087;s:3:"ඟ";i:7088;s:3:"ච";i:7089;s:3:"ඡ";i:7090;s:3:"ජ";i:7091;s:3:"ඣ";i:7092;s:3:"ඤ";i:7093;s:3:"ඥ";i:7094;s:3:"ඦ";i:7095;s:3:"ට";i:7096;s:3:"ඨ";i:7097;s:3:"ඩ";i:7098;s:3:"ඪ";i:7099;s:3:"ණ";i:7100;s:3:"ඬ";i:7101;s:3:"ත";i:7102;s:3:"ථ";i:7103;s:3:"ද";i:7104;s:3:"ධ";i:7105;s:3:"න";i:7106;s:3:"ඳ";i:7107;s:3:"ප";i:7108;s:3:"ඵ";i:7109;s:3:"බ";i:7110;s:3:"භ";i:7111;s:3:"ම";i:7112;s:3:"ඹ";i:7113;s:3:"ය";i:7114;s:3:"ර";i:7115;s:3:"ල";i:7116;s:3:"à·€";i:7117;s:3:"à·";i:7118;s:3:"à·‚";i:7119;s:3:"à·ƒ";i:7120;s:3:"à·„";i:7121;s:3:"à·…";i:7122;s:3:"à·†";i:7123;s:3:"ꯀ";i:7124;s:3:"ê¯";i:7125;s:3:"ꯂ";i:7126;s:3:"ꯃ";i:7127;s:3:"ꯄ";i:7128;s:3:"ꯅ";i:7129;s:3:"ꯆ";i:7130;s:3:"ꯇ";i:7131;s:3:"ꯈ";i:7132;s:3:"ꯉ";i:7133;s:3:"ꯊ";i:7134;s:3:"ꯋ";i:7135;s:3:"ꯌ";i:7136;s:3:"ê¯";i:7137;s:3:"ꯎ";i:7138;s:3:"ê¯";i:7139;s:3:"ê¯";i:7140;s:3:"ꯑ";i:7141;s:3:"ꯒ";i:7142;s:3:"ꯓ";i:7143;s:3:"ꯔ";i:7144;s:3:"ꯕ";i:7145;s:3:"ꯖ";i:7146;s:3:"ꯗ";i:7147;s:3:"ꯘ";i:7148;s:3:"ꯙ";i:7149;s:3:"ꯚ";i:7150;s:3:"ꯛ";i:7151;s:3:"ꯜ";i:7152;s:3:"ê¯";i:7153;s:3:"ꯞ";i:7154;s:3:"ꯟ";i:7155;s:3:"ꯠ";i:7156;s:3:"ꯡ";i:7157;s:3:"ꯢ";i:7158;s:3:"ê €";i:7159;s:3:"ê ";i:7160;s:3:"ê ƒ";i:7161;s:3:"ê „";i:7162;s:3:"ê …";i:7163;s:3:"ê ‡";i:7164;s:3:"ê ˆ";i:7165;s:3:"ê ‰";i:7166;s:3:"ê Š";i:7167;s:3:"ê Œ";i:7168;s:3:"ê ";i:7169;s:3:"ê Ž";i:7170;s:3:"ê ";i:7171;s:3:"ê ";i:7172;s:3:"ê ‘";i:7173;s:3:"ê ’";i:7174;s:3:"ê “";i:7175;s:3:"ê ”";i:7176;s:3:"ê •";i:7177;s:3:"ê –";i:7178;s:3:"ê —";i:7179;s:3:"ê ˜";i:7180;s:3:"ê ™";i:7181;s:3:"ê š";i:7182;s:3:"ê ›";i:7183;s:3:"ê œ";i:7184;s:3:"ê ";i:7185;s:3:"ê ž";i:7186;s:3:"ê Ÿ";i:7187;s:3:"ê  ";i:7188;s:3:"ê ¡";i:7189;s:3:"ê ¢";i:7190;s:3:"ꢂ";i:7191;s:3:"ꢃ";i:7192;s:3:"ꢄ";i:7193;s:3:"ꢅ";i:7194;s:3:"ꢆ";i:7195;s:3:"ꢇ";i:7196;s:3:"ꢈ";i:7197;s:3:"ꢉ";i:7198;s:3:"ꢊ";i:7199;s:3:"ꢋ";i:7200;s:3:"ꢌ";i:7201;s:3:"ê¢";i:7202;s:3:"ꢎ";i:7203;s:3:"ê¢";i:7204;s:3:"ê¢";i:7205;s:3:"ꢑ";i:7206;s:3:"ꢒ";i:7207;s:3:"ꢓ";i:7208;s:3:"ꢔ";i:7209;s:3:"ꢕ";i:7210;s:3:"ꢖ";i:7211;s:3:"ꢗ";i:7212;s:3:"ꢘ";i:7213;s:3:"ꢙ";i:7214;s:3:"ꢚ";i:7215;s:3:"ꢛ";i:7216;s:3:"ꢜ";i:7217;s:3:"ê¢";i:7218;s:3:"ꢞ";i:7219;s:3:"ꢟ";i:7220;s:3:"ꢠ";i:7221;s:3:"ꢡ";i:7222;s:3:"ꢢ";i:7223;s:3:"ꢣ";i:7224;s:3:"ꢤ";i:7225;s:3:"ꢥ";i:7226;s:3:"ꢦ";i:7227;s:3:"ꢧ";i:7228;s:3:"ꢨ";i:7229;s:3:"ꢩ";i:7230;s:3:"ꢪ";i:7231;s:3:"ꢫ";i:7232;s:3:"ꢬ";i:7233;s:3:"ꢭ";i:7234;s:3:"ꢮ";i:7235;s:3:"ꢯ";i:7236;s:3:"ꢰ";i:7237;s:3:"ꢱ";i:7238;s:3:"ꢲ";i:7239;s:3:"ꢳ";i:7240;s:4:"𑂃";i:7241;s:4:"ð‘‚„";i:7242;s:4:"ð‘‚…";i:7243;s:4:"𑂆";i:7244;s:4:"𑂇";i:7245;s:4:"𑂈";i:7246;s:4:"𑂉";i:7247;s:4:"ð‘‚Š";i:7248;s:4:"ð‘‚‹";i:7249;s:4:"ð‘‚Œ";i:7250;s:4:"ð‘‚";i:7251;s:4:"ð‘‚Ž";i:7252;s:4:"ð‘‚";i:7253;s:4:"ð‘‚";i:7254;s:4:"ð‘‚‘";i:7255;s:4:"ð‘‚’";i:7256;s:4:"ð‘‚“";i:7257;s:4:"ð‘‚”";i:7258;s:4:"ð‘‚•";i:7259;s:4:"ð‘‚–";i:7260;s:4:"ð‘‚—";i:7261;s:4:"𑂘";i:7262;s:4:"ð‘‚™";i:7263;s:4:"ð‘‚›";i:7264;s:4:"ð‘‚";i:7265;s:4:"ð‘‚ž";i:7266;s:4:"ð‘‚Ÿ";i:7267;s:4:"ð‘‚ ";i:7268;s:4:"ð‘‚¡";i:7269;s:4:"ð‘‚¢";i:7270;s:4:"ð‘‚£";i:7271;s:4:"𑂤";i:7272;s:4:"ð‘‚¥";i:7273;s:4:"𑂦";i:7274;s:4:"𑂧";i:7275;s:4:"𑂨";i:7276;s:4:"ð‘‚©";i:7277;s:4:"𑂪";i:7278;s:4:"𑂬";i:7279;s:4:"ð‘‚­";i:7280;s:4:"ð‘‚®";i:7281;s:4:"𑂯";i:7282;s:3:"ᮃ";i:7283;s:3:"ᮄ";i:7284;s:3:"á®…";i:7285;s:3:"ᮆ";i:7286;s:3:"ᮇ";i:7287;s:3:"ᮈ";i:7288;s:3:"ᮉ";i:7289;s:3:"ᮊ";i:7290;s:3:"á®®";i:7291;s:3:"ᮋ";i:7292;s:3:"ᮌ";i:7293;s:3:"á®";i:7294;s:3:"ᮎ";i:7295;s:3:"á®";i:7296;s:3:"á®";i:7297;s:3:"ᮑ";i:7298;s:3:"á®’";i:7299;s:3:"ᮓ";i:7300;s:3:"á®”";i:7301;s:3:"ᮕ";i:7302;s:3:"á®–";i:7303;s:3:"á®—";i:7304;s:3:"ᮘ";i:7305;s:3:"á®™";i:7306;s:3:"ᮚ";i:7307;s:3:"á®›";i:7308;s:3:"ᮜ";i:7309;s:3:"á®";i:7310;s:3:"ᮞ";i:7311;s:3:"ᮟ";i:7312;s:3:"ᮯ";i:7313;s:3:"á® ";i:7314;s:4:"ð‘€…";i:7315;s:4:"𑀆";i:7316;s:4:"𑀇";i:7317;s:4:"𑀈";i:7318;s:4:"𑀉";i:7319;s:4:"𑀊";i:7320;s:4:"𑀋";i:7321;s:4:"𑀌";i:7322;s:4:"ð‘€";i:7323;s:4:"𑀎";i:7324;s:4:"ð‘€";i:7325;s:4:"ð‘€";i:7326;s:4:"𑀑";i:7327;s:4:"ð‘€’";i:7328;s:4:"𑀓";i:7329;s:4:"ð‘€”";i:7330;s:4:"𑀕";i:7331;s:4:"ð‘€–";i:7332;s:4:"ð‘€—";i:7333;s:4:"𑀘";i:7334;s:4:"ð‘€™";i:7335;s:4:"𑀚";i:7336;s:4:"ð‘€›";i:7337;s:4:"𑀜";i:7338;s:4:"ð‘€";i:7339;s:4:"𑀞";i:7340;s:4:"𑀟";i:7341;s:4:"ð‘€ ";i:7342;s:4:"𑀡";i:7343;s:4:"ð‘€¢";i:7344;s:4:"ð‘€£";i:7345;s:4:"𑀤";i:7346;s:4:"ð‘€¥";i:7347;s:4:"𑀦";i:7348;s:4:"𑀧";i:7349;s:4:"𑀨";i:7350;s:4:"𑀩";i:7351;s:4:"𑀪";i:7352;s:4:"𑀫";i:7353;s:4:"𑀬";i:7354;s:4:"ð‘€­";i:7355;s:4:"ð‘€®";i:7356;s:4:"𑀯";i:7357;s:4:"ð‘€°";i:7358;s:4:"ð‘€±";i:7359;s:4:"ð‘€²";i:7360;s:4:"ð‘€³";i:7361;s:4:"𑀃";i:7362;s:4:"𑀄";i:7363;s:4:"ð‘€´";i:7364;s:4:"ð‘€µ";i:7365;s:4:"𑀶";i:7366;s:4:"ð‘€·";i:7367;s:4:"ð¨€";i:7368;s:4:"ð¨";i:7369;s:4:"ð¨‘";i:7370;s:4:"ð¨’";i:7371;s:4:"ð¨“";i:7372;s:4:"ð¨•";i:7373;s:4:"ð¨–";i:7374;s:4:"ð¨—";i:7375;s:4:"ð¨™";i:7376;s:4:"ð¨š";i:7377;s:4:"ð¨›";i:7378;s:4:"ð¨œ";i:7379;s:4:"ð¨";i:7380;s:4:"ð¨ž";i:7381;s:4:"ð¨Ÿ";i:7382;s:4:"ð¨ ";i:7383;s:4:"ð¨¡";i:7384;s:4:"ð¨¢";i:7385;s:4:"ð¨£";i:7386;s:4:"ð¨¤";i:7387;s:4:"ð¨¥";i:7388;s:4:"ð¨¦";i:7389;s:4:"ð¨§";i:7390;s:4:"ð¨¨";i:7391;s:4:"ð¨©";i:7392;s:4:"ð¨ª";i:7393;s:4:"ð¨«";i:7394;s:4:"ð¨¬";i:7395;s:4:"ð¨­";i:7396;s:4:"ð¨®";i:7397;s:4:"ð¨¯";i:7398;s:4:"ð¨°";i:7399;s:4:"ð¨±";i:7400;s:4:"ð¨²";i:7401;s:4:"ð¨³";i:7402;s:3:"à¸";i:7403;s:3:"ข";i:7404;s:3:"ฃ";i:7405;s:3:"ค";i:7406;s:3:"ฅ";i:7407;s:3:"ฆ";i:7408;s:3:"ง";i:7409;s:3:"จ";i:7410;s:3:"ฉ";i:7411;s:3:"ช";i:7412;s:3:"ซ";i:7413;s:3:"ฌ";i:7414;s:3:"à¸";i:7415;s:3:"ฎ";i:7416;s:3:"à¸";i:7417;s:3:"à¸";i:7418;s:3:"ฑ";i:7419;s:3:"ฒ";i:7420;s:3:"ณ";i:7421;s:3:"ด";i:7422;s:3:"ต";i:7423;s:3:"ถ";i:7424;s:3:"ท";i:7425;s:3:"ธ";i:7426;s:3:"น";i:7427;s:3:"บ";i:7428;s:3:"ป";i:7429;s:3:"ผ";i:7430;s:3:"à¸";i:7431;s:3:"พ";i:7432;s:3:"ฟ";i:7433;s:3:"ภ";i:7434;s:3:"ม";i:7435;s:3:"ย";i:7436;s:3:"ร";i:7437;s:3:"ฤ";i:7438;s:3:"ล";i:7439;s:3:"ฦ";i:7440;s:3:"ว";i:7441;s:3:"ศ";i:7442;s:3:"ษ";i:7443;s:3:"ส";i:7444;s:3:"ห";i:7445;s:3:"ฬ";i:7446;s:3:"อ";i:7447;s:3:"ฮ";i:7448;s:3:"ฯ";i:7449;s:3:"ะ";i:7450;s:3:"า";i:7451;s:3:"ำ";i:7452;s:3:"เ";i:7453;s:3:"à¹";i:7454;s:3:"โ";i:7455;s:3:"ใ";i:7456;s:3:"ไ";i:7457;s:3:"ๅ";i:7458;s:3:"àº";i:7459;s:3:"ຂ";i:7460;s:3:"ຄ";i:7461;s:3:"ງ";i:7462;s:3:"ຈ";i:7463;s:3:"ສ";i:7464;s:3:"ຊ";i:7465;s:3:"àº";i:7466;s:3:"ດ";i:7467;s:3:"ຕ";i:7468;s:3:"ຖ";i:7469;s:3:"ທ";i:7470;s:3:"ນ";i:7471;s:3:"ບ";i:7472;s:3:"ປ";i:7473;s:3:"ຜ";i:7474;s:3:"àº";i:7475;s:3:"ພ";i:7476;s:3:"ຟ";i:7477;s:3:"ມ";i:7478;s:3:"ຢ";i:7479;s:3:"ຣ";i:7480;s:3:"ລ";i:7481;s:3:"ວ";i:7482;s:3:"ຫ";i:7483;s:3:"ອ";i:7484;s:3:"ຮ";i:7485;s:3:"ຯ";i:7486;s:3:"ະ";i:7487;s:3:"າ";i:7488;s:3:"ຳ";i:7489;s:3:"ຽ";i:7490;s:3:"ເ";i:7491;s:3:"à»";i:7492;s:3:"ໂ";i:7493;s:3:"ໃ";i:7494;s:3:"ໄ";i:7495;s:3:"ꪀ";i:7496;s:3:"êª";i:7497;s:3:"ꪂ";i:7498;s:3:"ꪃ";i:7499;s:3:"ꪄ";i:7500;s:3:"ꪅ";i:7501;s:3:"ꪆ";i:7502;s:3:"ꪇ";i:7503;s:3:"ꪈ";i:7504;s:3:"ꪉ";i:7505;s:3:"ꪊ";i:7506;s:3:"ꪋ";i:7507;s:3:"ꪌ";i:7508;s:3:"êª";i:7509;s:3:"ꪎ";i:7510;s:3:"êª";i:7511;s:3:"êª";i:7512;s:3:"ꪑ";i:7513;s:3:"ꪒ";i:7514;s:3:"ꪓ";i:7515;s:3:"ꪔ";i:7516;s:3:"ꪕ";i:7517;s:3:"ꪖ";i:7518;s:3:"ꪗ";i:7519;s:3:"ꪘ";i:7520;s:3:"ꪙ";i:7521;s:3:"ꪚ";i:7522;s:3:"ꪛ";i:7523;s:3:"ꪜ";i:7524;s:3:"êª";i:7525;s:3:"ꪞ";i:7526;s:3:"ꪟ";i:7527;s:3:"ꪠ";i:7528;s:3:"ꪡ";i:7529;s:3:"ꪢ";i:7530;s:3:"ꪣ";i:7531;s:3:"ꪤ";i:7532;s:3:"ꪥ";i:7533;s:3:"ꪦ";i:7534;s:3:"ꪧ";i:7535;s:3:"ꪨ";i:7536;s:3:"ꪩ";i:7537;s:3:"ꪪ";i:7538;s:3:"ꪫ";i:7539;s:3:"ꪬ";i:7540;s:3:"ꪭ";i:7541;s:3:"ꪮ";i:7542;s:3:"ꪯ";i:7543;s:3:"ꪱ";i:7544;s:3:"ꪵ";i:7545;s:3:"ꪶ";i:7546;s:3:"ꪹ";i:7547;s:3:"ꪺ";i:7548;s:3:"ꪻ";i:7549;s:3:"ꪼ";i:7550;s:3:"ꪽ";i:7551;s:3:"ê«€";i:7552;s:3:"ê«‚";i:7553;s:3:"ê«›";i:7554;s:3:"ê«œ";i:7555;s:3:"ཀ";i:7556;s:3:"ཫ";i:7557;s:3:"à½";i:7558;s:3:"ག";i:7559;s:3:"ང";i:7560;s:3:"ཅ";i:7561;s:3:"ཆ";i:7562;s:3:"ཇ";i:7563;s:3:"ཉ";i:7564;s:3:"ཊ";i:7565;s:3:"ཋ";i:7566;s:3:"ཌ";i:7567;s:3:"ཎ";i:7568;s:3:"à½";i:7569;s:3:"à½";i:7570;s:3:"ད";i:7571;s:3:"ན";i:7572;s:3:"པ";i:7573;s:3:"ཕ";i:7574;s:3:"བ";i:7575;s:3:"མ";i:7576;s:3:"ཙ";i:7577;s:3:"ཚ";i:7578;s:3:"ཛ";i:7579;s:3:"à½";i:7580;s:3:"ཞ";i:7581;s:3:"ཟ";i:7582;s:3:"འ";i:7583;s:3:"ཡ";i:7584;s:3:"ར";i:7585;s:3:"ཬ";i:7586;s:3:"ལ";i:7587;s:3:"ཤ";i:7588;s:3:"ཥ";i:7589;s:3:"ས";i:7590;s:3:"ཧ";i:7591;s:3:"ཨ";i:7592;s:3:"ྈ";i:7593;s:3:"ྉ";i:7594;s:3:"ྌ";i:7595;s:3:"ྊ";i:7596;s:3:"ྋ";i:7597;s:3:"á°€";i:7598;s:3:"á°";i:7599;s:3:"á°‚";i:7600;s:3:"á°ƒ";i:7601;s:3:"á°„";i:7602;s:3:"á°…";i:7603;s:3:"á°†";i:7604;s:3:"á°‡";i:7605;s:3:"á°ˆ";i:7606;s:3:"á°‰";i:7607;s:3:"á±";i:7608;s:3:"ᱎ";i:7609;s:3:"á±";i:7610;s:3:"á°Š";i:7611;s:3:"á°‹";i:7612;s:3:"á°Œ";i:7613;s:3:"á°";i:7614;s:3:"á°Ž";i:7615;s:3:"á°";i:7616;s:3:"á°";i:7617;s:3:"á°‘";i:7618;s:3:"á°’";i:7619;s:3:"á°“";i:7620;s:3:"á°”";i:7621;s:3:"á°•";i:7622;s:3:"á°–";i:7623;s:3:"á°—";i:7624;s:3:"á°˜";i:7625;s:3:"á°™";i:7626;s:3:"á°š";i:7627;s:3:"á°›";i:7628;s:3:"á°œ";i:7629;s:3:"á°";i:7630;s:3:"á°ž";i:7631;s:3:"á°Ÿ";i:7632;s:3:"á° ";i:7633;s:3:"á°¡";i:7634;s:3:"á°¢";i:7635;s:3:"á°£";i:7636;s:3:"ê¡€";i:7637;s:3:"ê¡";i:7638;s:3:"ê¡‚";i:7639;s:3:"ꡃ";i:7640;s:3:"ê¡„";i:7641;s:3:"ê¡…";i:7642;s:3:"ꡆ";i:7643;s:3:"ꡇ";i:7644;s:3:"ê¡©";i:7645;s:3:"ꡪ";i:7646;s:3:"ê¡«";i:7647;s:3:"ꡬ";i:7648;s:3:"ꡈ";i:7649;s:3:"ꡉ";i:7650;s:3:"ê¡Š";i:7651;s:3:"ê¡‹";i:7652;s:3:"ê¡Œ";i:7653;s:3:"ê¡";i:7654;s:3:"ê¡Ž";i:7655;s:3:"ê¡";i:7656;s:3:"ê¡";i:7657;s:3:"ê¡‘";i:7658;s:3:"ê¡’";i:7659;s:3:"ê¡“";i:7660;s:3:"ꡧ";i:7661;s:3:"ê¡”";i:7662;s:3:"ê¡•";i:7663;s:3:"ê¡–";i:7664;s:3:"ê¡—";i:7665;s:3:"ꡨ";i:7666;s:3:"ê¡­";i:7667;s:3:"ꡘ";i:7668;s:3:"ꡱ";i:7669;s:3:"ꡲ";i:7670;s:3:"ê¡™";i:7671;s:3:"ê¡š";i:7672;s:3:"ê¡®";i:7673;s:3:"ê¡›";i:7674;s:3:"ê¡œ";i:7675;s:3:"ꡯ";i:7676;s:3:"ê¡°";i:7677;s:3:"ê¡";i:7678;s:3:"ê¡¢";i:7679;s:3:"ê¡£";i:7680;s:3:"ꡤ";i:7681;s:3:"ê¡¥";i:7682;s:3:"ê¡ž";i:7683;s:3:"ê¡Ÿ";i:7684;s:3:"ê¡ ";i:7685;s:3:"ê¡¡";i:7686;s:3:"ꡦ";i:7687;s:3:"ꡳ";i:7688;s:3:"ᤀ";i:7689;s:3:"á¤";i:7690;s:3:"ᤂ";i:7691;s:3:"ᤃ";i:7692;s:3:"ᤄ";i:7693;s:3:"ᤅ";i:7694;s:3:"ᤆ";i:7695;s:3:"ᤇ";i:7696;s:3:"ᤈ";i:7697;s:3:"ᤉ";i:7698;s:3:"ᤊ";i:7699;s:3:"ᤋ";i:7700;s:3:"ᤌ";i:7701;s:3:"á¤";i:7702;s:3:"ᤎ";i:7703;s:3:"á¤";i:7704;s:3:"á¤";i:7705;s:3:"ᤑ";i:7706;s:3:"ᤒ";i:7707;s:3:"ᤓ";i:7708;s:3:"ᤔ";i:7709;s:3:"ᤕ";i:7710;s:3:"ᤖ";i:7711;s:3:"ᤗ";i:7712;s:3:"ᤘ";i:7713;s:3:"ᤙ";i:7714;s:3:"ᤚ";i:7715;s:3:"ᤛ";i:7716;s:3:"ᤜ";i:7717;s:3:"ᜀ";i:7718;s:3:"áœ";i:7719;s:3:"ᜂ";i:7720;s:3:"ᜃ";i:7721;s:3:"ᜄ";i:7722;s:3:"ᜅ";i:7723;s:3:"ᜆ";i:7724;s:3:"ᜇ";i:7725;s:3:"ᜈ";i:7726;s:3:"ᜉ";i:7727;s:3:"ᜊ";i:7728;s:3:"ᜋ";i:7729;s:3:"ᜌ";i:7730;s:3:"ᜎ";i:7731;s:3:"áœ";i:7732;s:3:"áœ";i:7733;s:3:"ᜑ";i:7734;s:3:"ᜠ";i:7735;s:3:"ᜡ";i:7736;s:3:"ᜢ";i:7737;s:3:"ᜣ";i:7738;s:3:"ᜤ";i:7739;s:3:"ᜥ";i:7740;s:3:"ᜦ";i:7741;s:3:"ᜧ";i:7742;s:3:"ᜨ";i:7743;s:3:"ᜩ";i:7744;s:3:"ᜪ";i:7745;s:3:"ᜫ";i:7746;s:3:"ᜬ";i:7747;s:3:"ᜭ";i:7748;s:3:"ᜮ";i:7749;s:3:"ᜯ";i:7750;s:3:"ᜰ";i:7751;s:3:"ᜱ";i:7752;s:3:"á€";i:7753;s:3:"á";i:7754;s:3:"á‚";i:7755;s:3:"áƒ";i:7756;s:3:"á„";i:7757;s:3:"á…";i:7758;s:3:"á†";i:7759;s:3:"á‡";i:7760;s:3:"áˆ";i:7761;s:3:"á‰";i:7762;s:3:"áŠ";i:7763;s:3:"á‹";i:7764;s:3:"áŒ";i:7765;s:3:"á";i:7766;s:3:"áŽ";i:7767;s:3:"á";i:7768;s:3:"á";i:7769;s:3:"á‘";i:7770;s:3:"á ";i:7771;s:3:"á¡";i:7772;s:3:"á¢";i:7773;s:3:"á£";i:7774;s:3:"á¤";i:7775;s:3:"á¥";i:7776;s:3:"á¦";i:7777;s:3:"á§";i:7778;s:3:"á¨";i:7779;s:3:"á©";i:7780;s:3:"áª";i:7781;s:3:"á«";i:7782;s:3:"á¬";i:7783;s:3:"á®";i:7784;s:3:"á¯";i:7785;s:3:"á°";i:7786;s:3:"ᨀ";i:7787;s:3:"á¨";i:7788;s:3:"ᨂ";i:7789;s:3:"ᨃ";i:7790;s:3:"ᨄ";i:7791;s:3:"ᨅ";i:7792;s:3:"ᨆ";i:7793;s:3:"ᨇ";i:7794;s:3:"ᨈ";i:7795;s:3:"ᨉ";i:7796;s:3:"ᨊ";i:7797;s:3:"ᨋ";i:7798;s:3:"ᨌ";i:7799;s:3:"á¨";i:7800;s:3:"ᨎ";i:7801;s:3:"á¨";i:7802;s:3:"á¨";i:7803;s:3:"ᨑ";i:7804;s:3:"ᨒ";i:7805;s:3:"ᨓ";i:7806;s:3:"ᨔ";i:7807;s:3:"ᨕ";i:7808;s:3:"ᨖ";i:7809;s:3:"ᯀ";i:7810;s:3:"ᯂ";i:7811;s:3:"ᯅ";i:7812;s:3:"ᯇ";i:7813;s:3:"ᯉ";i:7814;s:3:"ᯋ";i:7815;s:3:"ᯎ";i:7816;s:3:"á¯";i:7817;s:3:"ᯑ";i:7818;s:3:"ᯒ";i:7819;s:3:"ᯔ";i:7820;s:3:"ᯖ";i:7821;s:3:"ᯘ";i:7822;s:3:"ᯛ";i:7823;s:3:"á¯";i:7824;s:3:"ᯞ";i:7825;s:3:"ᯠ";i:7826;s:3:"ᯡ";i:7827;s:3:"ᯢ";i:7828;s:3:"ᯣ";i:7829;s:3:"ᯤ";i:7830;s:3:"ᯥ";i:7831;s:3:"ꤰ";i:7832;s:3:"ꤱ";i:7833;s:3:"ꤲ";i:7834;s:3:"ꤳ";i:7835;s:3:"ꤴ";i:7836;s:3:"ꤵ";i:7837;s:3:"ꤶ";i:7838;s:3:"ꤷ";i:7839;s:3:"ꤸ";i:7840;s:3:"ꤹ";i:7841;s:3:"ꤺ";i:7842;s:3:"ꤻ";i:7843;s:3:"ꤼ";i:7844;s:3:"ꤽ";i:7845;s:3:"ꤾ";i:7846;s:3:"ꤿ";i:7847;s:3:"ꥀ";i:7848;s:3:"ê¥";i:7849;s:3:"ꥂ";i:7850;s:3:"ꥃ";i:7851;s:3:"ꥄ";i:7852;s:3:"ꥅ";i:7853;s:3:"ꥆ";i:7854;s:3:"ꤊ";i:7855;s:3:"ꤋ";i:7856;s:3:"ꤌ";i:7857;s:3:"ê¤";i:7858;s:3:"ꤎ";i:7859;s:3:"ê¤";i:7860;s:3:"ê¤";i:7861;s:3:"ꤑ";i:7862;s:3:"ꤒ";i:7863;s:3:"ꤓ";i:7864;s:3:"ꤔ";i:7865;s:3:"ꤕ";i:7866;s:3:"ꤖ";i:7867;s:3:"ꤗ";i:7868;s:3:"ꤘ";i:7869;s:3:"ꤙ";i:7870;s:3:"ꤚ";i:7871;s:3:"ꤛ";i:7872;s:3:"ꤜ";i:7873;s:3:"ê¤";i:7874;s:3:"ꤞ";i:7875;s:3:"ꤟ";i:7876;s:3:"ꤠ";i:7877;s:3:"ꤡ";i:7878;s:3:"ꤢ";i:7879;s:3:"ꤣ";i:7880;s:3:"ꤤ";i:7881;s:3:"ꤥ";i:7882;s:3:"က";i:7883;s:3:"áµ";i:7884;s:3:"á€";i:7885;s:3:"á¶";i:7886;s:3:"ဂ";i:7887;s:3:"á·";i:7888;s:3:"ê© ";i:7889;s:3:"ဃ";i:7890;s:3:"င";i:7891;s:3:"áš";i:7892;s:3:"စ";i:7893;s:3:"á¸";i:7894;s:3:"ê©¡";i:7895;s:3:"ဆ";i:7896;s:3:"ê©¢";i:7897;s:3:"ဇ";i:7898;s:3:"ê©£";i:7899;s:3:"á¹";i:7900;s:3:"ꩲ";i:7901;s:3:"ဈ";i:7902;s:3:"á›";i:7903;s:3:"ꩤ";i:7904;s:3:"á¡";i:7905;s:3:"ဉ";i:7906;s:3:"áº";i:7907;s:3:"ê©¥";i:7908;s:3:"ည";i:7909;s:3:"ဋ";i:7910;s:3:"ꩦ";i:7911;s:3:"ဌ";i:7912;s:3:"ꩧ";i:7913;s:3:"á€";i:7914;s:3:"ꩨ";i:7915;s:3:"ဎ";i:7916;s:3:"ê©©";i:7917;s:3:"á€";i:7918;s:3:"á®";i:7919;s:3:"á€";i:7920;s:3:"ထ";i:7921;s:3:"ဒ";i:7922;s:3:"á»";i:7923;s:3:"ဓ";i:7924;s:3:"ꩪ";i:7925;s:3:"န";i:7926;s:3:"á¼";i:7927;s:3:"ê©«";i:7928;s:3:"ပ";i:7929;s:3:"ဖ";i:7930;s:3:"á½";i:7931;s:3:"á¾";i:7932;s:3:"ꩯ";i:7933;s:3:"á‚Ž";i:7934;s:3:"ဗ";i:7935;s:3:"á¿";i:7936;s:3:"ဘ";i:7937;s:3:"မ";i:7938;s:3:"ယ";i:7939;s:3:"ရ";i:7940;s:3:"ꩳ";i:7941;s:3:"ꩺ";i:7942;s:3:"လ";i:7943;s:3:"á€";i:7944;s:3:"á‚€";i:7945;s:3:"á";i:7946;s:3:"á‘";i:7947;s:3:"á¥";i:7948;s:3:"သ";i:7949;s:3:"ꩬ";i:7950;s:3:"ဟ";i:7951;s:3:"á‚";i:7952;s:3:"ê©­";i:7953;s:3:"ê©®";i:7954;s:3:"ꩱ";i:7955;s:3:"ဠ";i:7956;s:3:"áœ";i:7957;s:3:"á";i:7958;s:3:"á¯";i:7959;s:3:"á°";i:7960;s:3:"á¦";i:7961;s:3:"အ";i:7962;s:3:"ဢ";i:7963;s:3:"ဣ";i:7964;s:3:"ဤ";i:7965;s:3:"ဥ";i:7966;s:3:"ဦ";i:7967;s:3:"á’";i:7968;s:3:"á“";i:7969;s:3:"á”";i:7970;s:3:"á•";i:7971;s:3:"ဧ";i:7972;s:3:"ဨ";i:7973;s:3:"ဩ";i:7974;s:3:"ဪ";i:7975;s:3:"ê©´";i:7976;s:3:"ꩵ";i:7977;s:3:"ꩶ";i:7978;s:3:"ក";i:7979;s:3:"áž";i:7980;s:3:"áž‚";i:7981;s:3:"ឃ";i:7982;s:3:"áž„";i:7983;s:3:"áž…";i:7984;s:3:"ឆ";i:7985;s:3:"ជ";i:7986;s:3:"ឈ";i:7987;s:3:"ញ";i:7988;s:3:"ដ";i:7989;s:3:"áž‹";i:7990;s:3:"ឌ";i:7991;s:3:"áž";i:7992;s:3:"ណ";i:7993;s:3:"áž";i:7994;s:3:"áž";i:7995;s:3:"áž‘";i:7996;s:3:"áž’";i:7997;s:3:"áž“";i:7998;s:3:"áž”";i:7999;s:3:"áž•";i:8000;s:3:"áž–";i:8001;s:3:"áž—";i:8002;s:3:"ម";i:8003;s:3:"áž™";i:8004;s:3:"ážš";i:8005;s:3:"áž›";i:8006;s:3:"ážœ";i:8007;s:3:"áž";i:8008;s:3:"ážž";i:8009;s:3:"ស";i:8010;s:3:"áž ";i:8011;s:3:"áž¡";i:8012;s:3:"អ";i:8013;s:3:"ៜ";i:8014;s:3:"ឣ";i:8015;s:3:"ឤ";i:8016;s:3:"ឥ";i:8017;s:3:"ឦ";i:8018;s:3:"ឧ";i:8019;s:3:"ឨ";i:8020;s:3:"áž©";i:8021;s:3:"ឪ";i:8022;s:3:"áž«";i:8023;s:3:"ឬ";i:8024;s:3:"áž­";i:8025;s:3:"áž®";i:8026;s:3:"ឯ";i:8027;s:3:"áž°";i:8028;s:3:"áž±";i:8029;s:3:"áž²";i:8030;s:3:"áž³";i:8031;s:3:"á¥";i:8032;s:3:"ᥑ";i:8033;s:3:"ᥒ";i:8034;s:3:"ᥓ";i:8035;s:3:"ᥔ";i:8036;s:3:"ᥕ";i:8037;s:3:"ᥖ";i:8038;s:3:"ᥗ";i:8039;s:3:"ᥘ";i:8040;s:3:"ᥙ";i:8041;s:3:"ᥚ";i:8042;s:3:"ᥛ";i:8043;s:3:"ᥜ";i:8044;s:3:"á¥";i:8045;s:3:"ᥞ";i:8046;s:3:"ᥟ";i:8047;s:3:"ᥠ";i:8048;s:3:"ᥡ";i:8049;s:3:"ᥢ";i:8050;s:3:"ᥣ";i:8051;s:3:"ᥤ";i:8052;s:3:"ᥥ";i:8053;s:3:"ᥦ";i:8054;s:3:"ᥧ";i:8055;s:3:"ᥨ";i:8056;s:3:"ᥩ";i:8057;s:3:"ᥪ";i:8058;s:3:"ᥫ";i:8059;s:3:"ᥬ";i:8060;s:3:"ᥭ";i:8061;s:3:"ᥰ";i:8062;s:3:"ᥱ";i:8063;s:3:"ᥲ";i:8064;s:3:"ᥳ";i:8065;s:3:"ᥴ";i:8066;s:3:"ᦀ";i:8067;s:3:"á¦";i:8068;s:3:"ᦂ";i:8069;s:3:"ᦃ";i:8070;s:3:"ᦄ";i:8071;s:3:"ᦅ";i:8072;s:3:"ᦆ";i:8073;s:3:"ᦇ";i:8074;s:3:"ᦈ";i:8075;s:3:"ᦉ";i:8076;s:3:"ᦊ";i:8077;s:3:"ᦋ";i:8078;s:3:"ᦌ";i:8079;s:3:"á¦";i:8080;s:3:"ᦎ";i:8081;s:3:"á¦";i:8082;s:3:"á¦";i:8083;s:3:"ᦑ";i:8084;s:3:"ᦒ";i:8085;s:3:"ᦓ";i:8086;s:3:"ᦔ";i:8087;s:3:"ᦕ";i:8088;s:3:"ᦖ";i:8089;s:3:"ᦗ";i:8090;s:3:"ᦘ";i:8091;s:3:"ᦙ";i:8092;s:3:"ᦚ";i:8093;s:3:"ᦛ";i:8094;s:3:"ᦜ";i:8095;s:3:"á¦";i:8096;s:3:"ᦞ";i:8097;s:3:"ᦟ";i:8098;s:3:"ᦠ";i:8099;s:3:"ᦡ";i:8100;s:3:"ᦢ";i:8101;s:3:"ᦣ";i:8102;s:3:"ᦤ";i:8103;s:3:"ᦥ";i:8104;s:3:"ᦦ";i:8105;s:3:"ᦧ";i:8106;s:3:"ᦨ";i:8107;s:3:"ᦩ";i:8108;s:3:"ᦪ";i:8109;s:3:"ᦫ";i:8110;s:3:"á§";i:8111;s:3:"ᧂ";i:8112;s:3:"ᧃ";i:8113;s:3:"ᧄ";i:8114;s:3:"ᧅ";i:8115;s:3:"ᧆ";i:8116;s:3:"ᧇ";i:8117;s:3:"ᨠ";i:8118;s:3:"ᨡ";i:8119;s:3:"ᨢ";i:8120;s:3:"ᨣ";i:8121;s:3:"ᨤ";i:8122;s:3:"ᨥ";i:8123;s:3:"ᨦ";i:8124;s:3:"ᨧ";i:8125;s:3:"ᨨ";i:8126;s:3:"ᨩ";i:8127;s:3:"ᨪ";i:8128;s:3:"ᨫ";i:8129;s:3:"ᨬ";i:8130;s:3:"ᨭ";i:8131;s:3:"ᨮ";i:8132;s:3:"ᨯ";i:8133;s:3:"ᨰ";i:8134;s:3:"ᨱ";i:8135;s:3:"ᨲ";i:8136;s:3:"ᨳ";i:8137;s:3:"ᨴ";i:8138;s:3:"ᨵ";i:8139;s:3:"ᨶ";i:8140;s:3:"ᨷ";i:8141;s:3:"ᨸ";i:8142;s:3:"ᨹ";i:8143;s:3:"ᨺ";i:8144;s:3:"ᨻ";i:8145;s:3:"ᨼ";i:8146;s:3:"ᨽ";i:8147;s:3:"ᨾ";i:8148;s:3:"ᨿ";i:8149;s:3:"á©€";i:8150;s:3:"á©";i:8151;s:3:"á©‚";i:8152;s:3:"ᩃ";i:8153;s:3:"á©„";i:8154;s:3:"á©…";i:8155;s:3:"ᩆ";i:8156;s:3:"ᩇ";i:8157;s:3:"ᩈ";i:8158;s:3:"ᩉ";i:8159;s:3:"á©Š";i:8160;s:3:"á©‹";i:8161;s:3:"á©Œ";i:8162;s:3:"á©“";i:8163;s:3:"á©";i:8164;s:3:"á©Ž";i:8165;s:3:"á©";i:8166;s:3:"á©";i:8167;s:3:"á©‘";i:8168;s:3:"á©’";i:8169;s:3:"ꨀ";i:8170;s:3:"ê¨";i:8171;s:3:"ꨂ";i:8172;s:3:"ꨃ";i:8173;s:3:"ꨄ";i:8174;s:3:"ꨅ";i:8175;s:3:"ꨆ";i:8176;s:3:"ꨇ";i:8177;s:3:"ꨈ";i:8178;s:3:"ꨉ";i:8179;s:3:"ꨊ";i:8180;s:3:"ꨋ";i:8181;s:3:"ꨌ";i:8182;s:3:"ê¨";i:8183;s:3:"ꨎ";i:8184;s:3:"ê¨";i:8185;s:3:"ê¨";i:8186;s:3:"ꨑ";i:8187;s:3:"ꨒ";i:8188;s:3:"ꨓ";i:8189;s:3:"ꨔ";i:8190;s:3:"ꨕ";i:8191;s:3:"ꨖ";i:8192;s:3:"ꨗ";i:8193;s:3:"ꨘ";i:8194;s:3:"ꨙ";i:8195;s:3:"ꨚ";i:8196;s:3:"ꨛ";i:8197;s:3:"ꨜ";i:8198;s:3:"ê¨";i:8199;s:3:"ꨞ";i:8200;s:3:"ꨟ";i:8201;s:3:"ꨠ";i:8202;s:3:"ꨡ";i:8203;s:3:"ꨢ";i:8204;s:3:"ꨣ";i:8205;s:3:"ꨤ";i:8206;s:3:"ꨥ";i:8207;s:3:"ꨦ";i:8208;s:3:"ꨧ";i:8209;s:3:"ꨨ";i:8210;s:3:"ê©€";i:8211;s:3:"ê©";i:8212;s:3:"ê©‚";i:8213;s:3:"ê©„";i:8214;s:3:"ê©…";i:8215;s:3:"ꩆ";i:8216;s:3:"ꩇ";i:8217;s:3:"ꩈ";i:8218;s:3:"ꩉ";i:8219;s:3:"ê©Š";i:8220;s:3:"ê©‹";i:8221;s:3:"ᬅ";i:8222;s:3:"ᬆ";i:8223;s:3:"ᬇ";i:8224;s:3:"ᬈ";i:8225;s:3:"ᬉ";i:8226;s:3:"ᬊ";i:8227;s:3:"ᬋ";i:8228;s:3:"ᬌ";i:8229;s:3:"á¬";i:8230;s:3:"ᬎ";i:8231;s:3:"á¬";i:8232;s:3:"á¬";i:8233;s:3:"ᬑ";i:8234;s:3:"ᬒ";i:8235;s:3:"ᬓ";i:8236;s:3:"á­…";i:8237;s:3:"á­†";i:8238;s:3:"ᬔ";i:8239;s:3:"ᬕ";i:8240;s:3:"ᬖ";i:8241;s:3:"ᬗ";i:8242;s:3:"ᬘ";i:8243;s:3:"ᬙ";i:8244;s:3:"ᬚ";i:8245;s:3:"ᬛ";i:8246;s:3:"ᬜ";i:8247;s:3:"á¬";i:8248;s:3:"ᬞ";i:8249;s:3:"ᬟ";i:8250;s:3:"ᬠ";i:8251;s:3:"ᬡ";i:8252;s:3:"ᬢ";i:8253;s:3:"á­‡";i:8254;s:3:"ᬣ";i:8255;s:3:"ᬤ";i:8256;s:3:"ᬥ";i:8257;s:3:"ᬦ";i:8258;s:3:"ᬧ";i:8259;s:3:"á­ˆ";i:8260;s:3:"ᬨ";i:8261;s:3:"ᬩ";i:8262;s:3:"ᬪ";i:8263;s:3:"ᬫ";i:8264;s:3:"ᬬ";i:8265;s:3:"ᬭ";i:8266;s:3:"ᬮ";i:8267;s:3:"ᬯ";i:8268;s:3:"á­‰";i:8269;s:3:"ᬰ";i:8270;s:3:"ᬱ";i:8271;s:3:"ᬲ";i:8272;s:3:"á­Š";i:8273;s:3:"á­‹";i:8274;s:3:"ᬳ";i:8275;s:3:"ꦄ";i:8276;s:3:"ꦅ";i:8277;s:3:"ꦆ";i:8278;s:3:"ꦇ";i:8279;s:3:"ꦈ";i:8280;s:3:"ꦉ";i:8281;s:3:"ꦊ";i:8282;s:3:"ꦋ";i:8283;s:3:"ꦌ";i:8284;s:3:"ê¦";i:8285;s:3:"ꦎ";i:8286;s:3:"ê¦";i:8287;s:3:"ê¦";i:8288;s:3:"ꦑ";i:8289;s:3:"ꦒ";i:8290;s:3:"ꦓ";i:8291;s:3:"ꦔ";i:8292;s:3:"ꦕ";i:8293;s:3:"ꦖ";i:8294;s:3:"ꦗ";i:8295;s:3:"ꦘ";i:8296;s:3:"ꦙ";i:8297;s:3:"ꦚ";i:8298;s:3:"ꦛ";i:8299;s:3:"ꦜ";i:8300;s:3:"ê¦";i:8301;s:3:"ꦞ";i:8302;s:3:"ꦟ";i:8303;s:3:"ꦠ";i:8304;s:3:"ꦡ";i:8305;s:3:"ꦢ";i:8306;s:3:"ꦣ";i:8307;s:3:"ꦤ";i:8308;s:3:"ꦥ";i:8309;s:3:"ꦦ";i:8310;s:3:"ꦧ";i:8311;s:3:"ꦨ";i:8312;s:3:"ꦩ";i:8313;s:3:"ꦪ";i:8314;s:3:"ꦫ";i:8315;s:3:"ꦭ";i:8316;s:3:"ꦮ";i:8317;s:3:"ꦯ";i:8318;s:3:"ꦰ";i:8319;s:3:"ꦱ";i:8320;s:3:"ꦲ";i:8321;s:3:"ᢀ";i:8322;s:3:"á¢";i:8323;s:3:"ᢂ";i:8324;s:3:"ᢃ";i:8325;s:3:"ᢄ";i:8326;s:3:"ᢅ";i:8327;s:3:"ᢆ";i:8328;s:3:"ᡃ";i:8329;s:3:"á  ";i:8330;s:3:"ᢇ";i:8331;s:3:"á ¡";i:8332;s:3:"á¡„";i:8333;s:3:"á¡";i:8334;s:3:"á ¢";i:8335;s:3:"á¡…";i:8336;s:3:"á¡ž";i:8337;s:3:"ᡳ";i:8338;s:3:"ᢈ";i:8339;s:3:"á¡Ÿ";i:8340;s:3:"á £";i:8341;s:3:"ᡆ";i:8342;s:3:"á ¤";i:8343;s:3:"ᡇ";i:8344;s:3:"á¡¡";i:8345;s:3:"á ¥";i:8346;s:3:"ᡈ";i:8347;s:3:"á ¦";i:8348;s:3:"ᡉ";i:8349;s:3:"á¡ ";i:8350;s:3:"á §";i:8351;s:3:"á ¨";i:8352;s:3:"á ©";i:8353;s:3:"á¡Š";i:8354;s:3:"á¡¢";i:8355;s:3:"ᢊ";i:8356;s:3:"ᢛ";i:8357;s:3:"á ª";i:8358;s:3:"á¡‹";i:8359;s:3:"á «";i:8360;s:3:"á¡Œ";i:8361;s:3:"ᡦ";i:8362;s:3:"á ¬";i:8363;s:3:"á¡";i:8364;s:3:"á ­";i:8365;s:3:"á¡Ž";i:8366;s:3:"ᡤ";i:8367;s:3:"ᢚ";i:8368;s:3:"á¡¥";i:8369;s:3:"á ®";i:8370;s:3:"á¡";i:8371;s:3:"á ¯";i:8372;s:3:"á °";i:8373;s:3:"á ±";i:8374;s:3:"ᡧ";i:8375;s:3:"ᢜ";i:8376;s:3:"á¢";i:8377;s:3:"ᢢ";i:8378;s:3:"ᢤ";i:8379;s:3:"ᢥ";i:8380;s:3:"á ²";i:8381;s:3:"á¡";i:8382;s:3:"ᡨ";i:8383;s:3:"á ³";i:8384;s:3:"á¡‘";i:8385;s:3:"á¡©";i:8386;s:3:"á ´";i:8387;s:3:"á¡’";i:8388;s:3:"ᡱ";i:8389;s:3:"á¡œ";i:8390;s:3:"ᢋ";i:8391;s:3:"á µ";i:8392;s:3:"á¡“";i:8393;s:3:"ᡪ";i:8394;s:3:"á¡·";i:8395;s:3:"á ¶";i:8396;s:3:"á¡•";i:8397;s:3:"ᡲ";i:8398;s:3:"á ·";i:8399;s:3:"ᡵ";i:8400;s:3:"á ¸";i:8401;s:3:"á¡–";i:8402;s:3:"á ¹";i:8403;s:3:"á¡«";i:8404;s:3:"ᡶ";i:8405;s:3:"á º";i:8406;s:3:"á¡—";i:8407;s:3:"á¡£";i:8408;s:3:"á¡´";i:8409;s:3:"ᢉ";i:8410;s:3:"á »";i:8411;s:3:"á ¼";i:8412;s:3:"á¡”";i:8413;s:3:"á¡®";i:8414;s:3:"á ½";i:8415;s:3:"ᡯ";i:8416;s:3:"ᡘ";i:8417;s:3:"ᡬ";i:8418;s:3:"á ¾";i:8419;s:3:"á¡™";i:8420;s:3:"á¡­";i:8421;s:3:"á ¿";i:8422;s:3:"á¡€";i:8423;s:3:"á¡";i:8424;s:3:"á¡‚";i:8425;s:3:"á¡š";i:8426;s:3:"á¡›";i:8427;s:3:"á¡°";i:8428;s:3:"ᢌ";i:8429;s:3:"ᢞ";i:8430;s:3:"á¢";i:8431;s:3:"ᢎ";i:8432;s:3:"ᢟ";i:8433;s:3:"á¢";i:8434;s:3:"á¢";i:8435;s:3:"ᢘ";i:8436;s:3:"ᢠ";i:8437;s:3:"ᢑ";i:8438;s:3:"ᢡ";i:8439;s:3:"ᢒ";i:8440;s:3:"ᢓ";i:8441;s:3:"ᢨ";i:8442;s:3:"ᢔ";i:8443;s:3:"ᢣ";i:8444;s:3:"ᢕ";i:8445;s:3:"ᢙ";i:8446;s:3:"ᢖ";i:8447;s:3:"ᢗ";i:8448;s:3:"ᢦ";i:8449;s:3:"ᢧ";i:8450;s:3:"ᢪ";i:8451;s:3:"ᱚ";i:8452;s:3:"á±›";i:8453;s:3:"ᱜ";i:8454;s:3:"á±";i:8455;s:3:"ᱞ";i:8456;s:3:"ᱟ";i:8457;s:3:"á± ";i:8458;s:3:"ᱡ";i:8459;s:3:"á±¢";i:8460;s:3:"á±£";i:8461;s:3:"ᱤ";i:8462;s:3:"á±¥";i:8463;s:3:"ᱦ";i:8464;s:3:"ᱧ";i:8465;s:3:"ᱨ";i:8466;s:3:"ᱩ";i:8467;s:3:"ᱪ";i:8468;s:3:"ᱫ";i:8469;s:3:"ᱬ";i:8470;s:3:"á±­";i:8471;s:3:"á±®";i:8472;s:3:"ᱯ";i:8473;s:3:"á±°";i:8474;s:3:"á±±";i:8475;s:3:"á±²";i:8476;s:3:"á±³";i:8477;s:3:"á±´";i:8478;s:3:"á±µ";i:8479;s:3:"ᱶ";i:8480;s:3:"á±·";i:8481;s:3:"ᱸ";i:8482;s:3:"á±¹";i:8483;s:3:"ᱺ";i:8484;s:3:"á±»";i:8485;s:3:"á±¼";i:8486;s:3:"á±½";i:8487;s:3:"Ꭰ";i:8488;s:3:"Ꭱ";i:8489;s:3:"Ꭲ";i:8490;s:3:"Ꭳ";i:8491;s:3:"Ꭴ";i:8492;s:3:"Ꭵ";i:8493;s:3:"Ꭶ";i:8494;s:3:"Ꭷ";i:8495;s:3:"Ꭸ";i:8496;s:3:"Ꭹ";i:8497;s:3:"Ꭺ";i:8498;s:3:"Ꭻ";i:8499;s:3:"Ꭼ";i:8500;s:3:"Ꭽ";i:8501;s:3:"Ꭾ";i:8502;s:3:"Ꭿ";i:8503;s:3:"Ꮀ";i:8504;s:3:"Ꮁ";i:8505;s:3:"Ꮂ";i:8506;s:3:"Ꮃ";i:8507;s:3:"Ꮄ";i:8508;s:3:"Ꮅ";i:8509;s:3:"Ꮆ";i:8510;s:3:"Ꮇ";i:8511;s:3:"Ꮈ";i:8512;s:3:"Ꮉ";i:8513;s:3:"Ꮊ";i:8514;s:3:"Ꮋ";i:8515;s:3:"Ꮌ";i:8516;s:3:"Ꮍ";i:8517;s:3:"Ꮎ";i:8518;s:3:"Ꮏ";i:8519;s:3:"á€";i:8520;s:3:"á";i:8521;s:3:"á‚";i:8522;s:3:"áƒ";i:8523;s:3:"á„";i:8524;s:3:"á…";i:8525;s:3:"á†";i:8526;s:3:"á‡";i:8527;s:3:"áˆ";i:8528;s:3:"á‰";i:8529;s:3:"áŠ";i:8530;s:3:"á‹";i:8531;s:3:"áŒ";i:8532;s:3:"á";i:8533;s:3:"áŽ";i:8534;s:3:"á";i:8535;s:3:"á";i:8536;s:3:"á‘";i:8537;s:3:"á’";i:8538;s:3:"á“";i:8539;s:3:"á”";i:8540;s:3:"á•";i:8541;s:3:"á–";i:8542;s:3:"á—";i:8543;s:3:"á˜";i:8544;s:3:"á™";i:8545;s:3:"áš";i:8546;s:3:"á›";i:8547;s:3:"áœ";i:8548;s:3:"á";i:8549;s:3:"áž";i:8550;s:3:"áŸ";i:8551;s:3:"á ";i:8552;s:3:"á¡";i:8553;s:3:"á¢";i:8554;s:3:"á£";i:8555;s:3:"á¤";i:8556;s:3:"á¥";i:8557;s:3:"á¦";i:8558;s:3:"á§";i:8559;s:3:"á¨";i:8560;s:3:"á©";i:8561;s:3:"áª";i:8562;s:3:"á«";i:8563;s:3:"á¬";i:8564;s:3:"á­";i:8565;s:3:"á®";i:8566;s:3:"á¯";i:8567;s:3:"á°";i:8568;s:3:"á±";i:8569;s:3:"á²";i:8570;s:3:"á³";i:8571;s:3:"á´";i:8572;s:3:"á";i:8573;s:3:"á‚";i:8574;s:3:"áƒ";i:8575;s:3:"á„";i:8576;s:3:"á…";i:8577;s:3:"á†";i:8578;s:3:"á‡";i:8579;s:3:"áˆ";i:8580;s:3:"á‰";i:8581;s:3:"áŠ";i:8582;s:3:"á‹";i:8583;s:3:"áŒ";i:8584;s:3:"á";i:8585;s:3:"áŽ";i:8586;s:3:"á";i:8587;s:3:"á";i:8588;s:3:"á‘";i:8589;s:3:"á’";i:8590;s:3:"á“";i:8591;s:3:"á”";i:8592;s:3:"á•";i:8593;s:3:"á–";i:8594;s:3:"á—";i:8595;s:3:"á˜";i:8596;s:3:"á™";i:8597;s:3:"áš";i:8598;s:3:"á›";i:8599;s:3:"áœ";i:8600;s:3:"á";i:8601;s:3:"áž";i:8602;s:3:"áŸ";i:8603;s:3:"á ";i:8604;s:3:"á¡";i:8605;s:3:"á¢";i:8606;s:3:"á£";i:8607;s:3:"á¤";i:8608;s:3:"á¥";i:8609;s:3:"á¦";i:8610;s:3:"á§";i:8611;s:3:"á¨";i:8612;s:3:"á©";i:8613;s:3:"áª";i:8614;s:3:"á«";i:8615;s:3:"á¬";i:8616;s:3:"á­";i:8617;s:3:"á®";i:8618;s:3:"á¯";i:8619;s:3:"á°";i:8620;s:3:"á±";i:8621;s:3:"á²";i:8622;s:3:"á³";i:8623;s:3:"á´";i:8624;s:3:"áµ";i:8625;s:3:"á¶";i:8626;s:3:"á·";i:8627;s:3:"á¸";i:8628;s:3:"á¹";i:8629;s:3:"áº";i:8630;s:3:"á»";i:8631;s:3:"á¼";i:8632;s:3:"á½";i:8633;s:3:"á¾";i:8634;s:3:"á¿";i:8635;s:3:"á‘€";i:8636;s:3:"á‘";i:8637;s:3:"á‘‚";i:8638;s:3:"ᑃ";i:8639;s:3:"á‘„";i:8640;s:3:"á‘…";i:8641;s:3:"ᑆ";i:8642;s:3:"ᑇ";i:8643;s:3:"ᑈ";i:8644;s:3:"ᑉ";i:8645;s:3:"á‘Š";i:8646;s:3:"á‘‹";i:8647;s:3:"á‘Œ";i:8648;s:3:"á‘";i:8649;s:3:"á‘Ž";i:8650;s:3:"á‘";i:8651;s:3:"á‘";i:8652;s:3:"á‘‘";i:8653;s:3:"á‘’";i:8654;s:3:"á‘“";i:8655;s:3:"á‘”";i:8656;s:3:"á‘•";i:8657;s:3:"á‘–";i:8658;s:3:"á‘—";i:8659;s:3:"ᑘ";i:8660;s:3:"á‘™";i:8661;s:3:"á‘š";i:8662;s:3:"á‘›";i:8663;s:3:"á‘œ";i:8664;s:3:"á‘";i:8665;s:3:"á‘ž";i:8666;s:3:"á‘Ÿ";i:8667;s:3:"á‘ ";i:8668;s:3:"á‘¡";i:8669;s:3:"á‘¢";i:8670;s:3:"á‘£";i:8671;s:3:"ᑤ";i:8672;s:3:"á‘¥";i:8673;s:3:"ᑦ";i:8674;s:3:"ᑧ";i:8675;s:3:"ᑨ";i:8676;s:3:"á‘©";i:8677;s:3:"ᑪ";i:8678;s:3:"á‘«";i:8679;s:3:"ᑬ";i:8680;s:3:"á‘­";i:8681;s:3:"á‘®";i:8682;s:3:"ᑯ";i:8683;s:3:"á‘°";i:8684;s:3:"ᑱ";i:8685;s:3:"ᑲ";i:8686;s:3:"ᑳ";i:8687;s:3:"á‘´";i:8688;s:3:"ᑵ";i:8689;s:3:"ᑶ";i:8690;s:3:"á‘·";i:8691;s:3:"ᑸ";i:8692;s:3:"ᑹ";i:8693;s:3:"ᑺ";i:8694;s:3:"á‘»";i:8695;s:3:"ᑼ";i:8696;s:3:"ᑽ";i:8697;s:3:"ᑾ";i:8698;s:3:"á‘¿";i:8699;s:3:"á’€";i:8700;s:3:"á’";i:8701;s:3:"á’‚";i:8702;s:3:"á’ƒ";i:8703;s:3:"á’„";i:8704;s:3:"á’…";i:8705;s:3:"á’†";i:8706;s:3:"á’‡";i:8707;s:3:"á’ˆ";i:8708;s:3:"á’‰";i:8709;s:3:"á’Š";i:8710;s:3:"á’‹";i:8711;s:3:"á’Œ";i:8712;s:3:"á’";i:8713;s:3:"á’Ž";i:8714;s:3:"á’";i:8715;s:3:"á’";i:8716;s:3:"á’‘";i:8717;s:3:"á’’";i:8718;s:3:"á’“";i:8719;s:3:"á’”";i:8720;s:3:"á’•";i:8721;s:3:"á’–";i:8722;s:3:"á’—";i:8723;s:3:"á’˜";i:8724;s:3:"á’™";i:8725;s:3:"á’š";i:8726;s:3:"á’›";i:8727;s:3:"á’œ";i:8728;s:3:"á’";i:8729;s:3:"á’ž";i:8730;s:3:"á’Ÿ";i:8731;s:3:"á’ ";i:8732;s:3:"á’¡";i:8733;s:3:"á’¢";i:8734;s:3:"á’£";i:8735;s:3:"á’¤";i:8736;s:3:"á’¥";i:8737;s:3:"á’¦";i:8738;s:3:"á’§";i:8739;s:3:"á’¨";i:8740;s:3:"á’©";i:8741;s:3:"á’ª";i:8742;s:3:"á’«";i:8743;s:3:"á’¬";i:8744;s:3:"á’­";i:8745;s:3:"á’®";i:8746;s:3:"á’¯";i:8747;s:3:"á’°";i:8748;s:3:"á’±";i:8749;s:3:"á’²";i:8750;s:3:"á’³";i:8751;s:3:"á’´";i:8752;s:3:"á’µ";i:8753;s:3:"á’¶";i:8754;s:3:"á’·";i:8755;s:3:"á’¸";i:8756;s:3:"á’¹";i:8757;s:3:"á’º";i:8758;s:3:"á’»";i:8759;s:3:"á’¼";i:8760;s:3:"á’½";i:8761;s:3:"á’¾";i:8762;s:3:"á’¿";i:8763;s:3:"á“€";i:8764;s:3:"á“";i:8765;s:3:"á“‚";i:8766;s:3:"ᓃ";i:8767;s:3:"á“„";i:8768;s:3:"á“…";i:8769;s:3:"ᓆ";i:8770;s:3:"ᓇ";i:8771;s:3:"ᓈ";i:8772;s:3:"ᓉ";i:8773;s:3:"á“Š";i:8774;s:3:"á“‹";i:8775;s:3:"á“Œ";i:8776;s:3:"á“";i:8777;s:3:"á“Ž";i:8778;s:3:"á“";i:8779;s:3:"á“";i:8780;s:3:"á“‘";i:8781;s:3:"á“’";i:8782;s:3:"á““";i:8783;s:3:"á“”";i:8784;s:3:"á“•";i:8785;s:3:"á“–";i:8786;s:3:"á“—";i:8787;s:3:"ᓘ";i:8788;s:3:"á“™";i:8789;s:3:"á“š";i:8790;s:3:"á“›";i:8791;s:3:"á“œ";i:8792;s:3:"á“";i:8793;s:3:"á“ž";i:8794;s:3:"á“Ÿ";i:8795;s:3:"á“ ";i:8796;s:3:"á“¡";i:8797;s:3:"á“¢";i:8798;s:3:"á“£";i:8799;s:3:"ᓤ";i:8800;s:3:"á“¥";i:8801;s:3:"ᓦ";i:8802;s:3:"ᓧ";i:8803;s:3:"ᓨ";i:8804;s:3:"á“©";i:8805;s:3:"ᓪ";i:8806;s:3:"á“«";i:8807;s:3:"ᓬ";i:8808;s:3:"á“­";i:8809;s:3:"á“®";i:8810;s:3:"ᓯ";i:8811;s:3:"á“°";i:8812;s:3:"ᓱ";i:8813;s:3:"ᓲ";i:8814;s:3:"ᓳ";i:8815;s:3:"á“´";i:8816;s:3:"ᓵ";i:8817;s:3:"ᓶ";i:8818;s:3:"á“·";i:8819;s:3:"ᓸ";i:8820;s:3:"ᓹ";i:8821;s:3:"ᓺ";i:8822;s:3:"á“»";i:8823;s:3:"ᓼ";i:8824;s:3:"ᓽ";i:8825;s:3:"ᓾ";i:8826;s:3:"á“¿";i:8827;s:3:"ᔀ";i:8828;s:3:"á”";i:8829;s:3:"ᔂ";i:8830;s:3:"ᔃ";i:8831;s:3:"ᔄ";i:8832;s:3:"á”…";i:8833;s:3:"ᔆ";i:8834;s:3:"ᔇ";i:8835;s:3:"ᔈ";i:8836;s:3:"ᔉ";i:8837;s:3:"ᔊ";i:8838;s:3:"ᔋ";i:8839;s:3:"ᔌ";i:8840;s:3:"á”";i:8841;s:3:"ᔎ";i:8842;s:3:"á”";i:8843;s:3:"á”";i:8844;s:3:"ᔑ";i:8845;s:3:"á”’";i:8846;s:3:"ᔓ";i:8847;s:3:"á””";i:8848;s:3:"ᔕ";i:8849;s:3:"á”–";i:8850;s:3:"á”—";i:8851;s:3:"ᔘ";i:8852;s:3:"á”™";i:8853;s:3:"ᔚ";i:8854;s:3:"á”›";i:8855;s:3:"ᔜ";i:8856;s:3:"á”";i:8857;s:3:"ᔞ";i:8858;s:3:"ᔟ";i:8859;s:3:"á” ";i:8860;s:3:"ᔡ";i:8861;s:3:"ᔢ";i:8862;s:3:"ᔣ";i:8863;s:3:"ᔤ";i:8864;s:3:"ᔥ";i:8865;s:3:"ᔦ";i:8866;s:3:"ᔧ";i:8867;s:3:"ᔨ";i:8868;s:3:"ᔩ";i:8869;s:3:"ᔪ";i:8870;s:3:"ᔫ";i:8871;s:3:"ᔬ";i:8872;s:3:"á”­";i:8873;s:3:"á”®";i:8874;s:3:"ᔯ";i:8875;s:3:"á”°";i:8876;s:3:"á”±";i:8877;s:3:"ᔲ";i:8878;s:3:"ᔳ";i:8879;s:3:"á”´";i:8880;s:3:"ᔵ";i:8881;s:3:"ᔶ";i:8882;s:3:"á”·";i:8883;s:3:"ᔸ";i:8884;s:3:"ᔹ";i:8885;s:3:"ᔺ";i:8886;s:3:"á”»";i:8887;s:3:"ᔼ";i:8888;s:3:"ᔽ";i:8889;s:3:"ᔾ";i:8890;s:3:"ᔿ";i:8891;s:3:"á•€";i:8892;s:3:"á•";i:8893;s:3:"á•‚";i:8894;s:3:"ᕃ";i:8895;s:3:"á•„";i:8896;s:3:"á•…";i:8897;s:3:"ᕆ";i:8898;s:3:"ᕇ";i:8899;s:3:"ᕈ";i:8900;s:3:"ᕉ";i:8901;s:3:"á•Š";i:8902;s:3:"á•‹";i:8903;s:3:"á•Œ";i:8904;s:3:"á•";i:8905;s:3:"á•Ž";i:8906;s:3:"á•";i:8907;s:3:"á•";i:8908;s:3:"á•‘";i:8909;s:3:"á•’";i:8910;s:3:"á•“";i:8911;s:3:"á•”";i:8912;s:3:"á••";i:8913;s:3:"á•–";i:8914;s:3:"á•—";i:8915;s:3:"ᕘ";i:8916;s:3:"á•™";i:8917;s:3:"á•š";i:8918;s:3:"á•›";i:8919;s:3:"á•œ";i:8920;s:3:"á•";i:8921;s:3:"á•ž";i:8922;s:3:"á•Ÿ";i:8923;s:3:"á• ";i:8924;s:3:"á•¡";i:8925;s:3:"á•¢";i:8926;s:3:"á•£";i:8927;s:3:"ᕤ";i:8928;s:3:"á•¥";i:8929;s:3:"ᕦ";i:8930;s:3:"ᕧ";i:8931;s:3:"ᕨ";i:8932;s:3:"á•©";i:8933;s:3:"ᕪ";i:8934;s:3:"á•«";i:8935;s:3:"ᕬ";i:8936;s:3:"á•­";i:8937;s:3:"á•®";i:8938;s:3:"ᕯ";i:8939;s:3:"á•°";i:8940;s:3:"ᕱ";i:8941;s:3:"ᕲ";i:8942;s:3:"ᕳ";i:8943;s:3:"á•´";i:8944;s:3:"ᕵ";i:8945;s:3:"ᕶ";i:8946;s:3:"á•·";i:8947;s:3:"ᕸ";i:8948;s:3:"ᕹ";i:8949;s:3:"ᕺ";i:8950;s:3:"á•»";i:8951;s:3:"ᕽ";i:8952;s:3:"ᙯ";i:8953;s:3:"ᕾ";i:8954;s:3:"á•¿";i:8955;s:3:"á–€";i:8956;s:3:"á–";i:8957;s:3:"á–‚";i:8958;s:3:"á–ƒ";i:8959;s:3:"á–„";i:8960;s:3:"á–…";i:8961;s:3:"á–†";i:8962;s:3:"á–‡";i:8963;s:3:"á–ˆ";i:8964;s:3:"á–‰";i:8965;s:3:"á–Š";i:8966;s:3:"á–‹";i:8967;s:3:"á–Œ";i:8968;s:3:"á–";i:8969;s:3:"á™°";i:8970;s:3:"á–Ž";i:8971;s:3:"á–";i:8972;s:3:"á–";i:8973;s:3:"á–‘";i:8974;s:3:"á–’";i:8975;s:3:"á–“";i:8976;s:3:"á–”";i:8977;s:3:"á–•";i:8978;s:3:"á™±";i:8979;s:3:"ᙲ";i:8980;s:3:"ᙳ";i:8981;s:3:"á™´";i:8982;s:3:"ᙵ";i:8983;s:3:"ᙶ";i:8984;s:3:"á––";i:8985;s:3:"á–—";i:8986;s:3:"á–˜";i:8987;s:3:"á–™";i:8988;s:3:"á–š";i:8989;s:3:"á–›";i:8990;s:3:"á–œ";i:8991;s:3:"á–";i:8992;s:3:"á–ž";i:8993;s:3:"á–Ÿ";i:8994;s:3:"á– ";i:8995;s:3:"á–¡";i:8996;s:3:"á–¢";i:8997;s:3:"á–£";i:8998;s:3:"á–¤";i:8999;s:3:"á–¥";i:9000;s:3:"á–¦";i:9001;s:3:"ᕼ";i:9002;s:3:"á–§";i:9003;s:3:"á–¨";i:9004;s:3:"á–©";i:9005;s:3:"á–ª";i:9006;s:3:"á–«";i:9007;s:3:"á–¬";i:9008;s:3:"á–­";i:9009;s:3:"á–®";i:9010;s:3:"á–¯";i:9011;s:3:"á–°";i:9012;s:3:"á–±";i:9013;s:3:"á–²";i:9014;s:3:"á–³";i:9015;s:3:"á–´";i:9016;s:3:"á–µ";i:9017;s:3:"á–¶";i:9018;s:3:"á–·";i:9019;s:3:"á–¸";i:9020;s:3:"á–¹";i:9021;s:3:"á–º";i:9022;s:3:"á–»";i:9023;s:3:"á–¼";i:9024;s:3:"á–½";i:9025;s:3:"á–¾";i:9026;s:3:"á–¿";i:9027;s:3:"á—€";i:9028;s:3:"á—";i:9029;s:3:"á—‚";i:9030;s:3:"á—ƒ";i:9031;s:3:"á—„";i:9032;s:3:"á—…";i:9033;s:3:"á—†";i:9034;s:3:"á—‡";i:9035;s:3:"á—ˆ";i:9036;s:3:"á—‰";i:9037;s:3:"á—Š";i:9038;s:3:"á—‹";i:9039;s:3:"á—Œ";i:9040;s:3:"á—";i:9041;s:3:"á—Ž";i:9042;s:3:"á—";i:9043;s:3:"á—";i:9044;s:3:"á—‘";i:9045;s:3:"á—’";i:9046;s:3:"á—“";i:9047;s:3:"á—”";i:9048;s:3:"á—•";i:9049;s:3:"á—–";i:9050;s:3:"á——";i:9051;s:3:"á—˜";i:9052;s:3:"á—™";i:9053;s:3:"á—š";i:9054;s:3:"á—›";i:9055;s:3:"á—œ";i:9056;s:3:"á—";i:9057;s:3:"á—ž";i:9058;s:3:"á—Ÿ";i:9059;s:3:"á— ";i:9060;s:3:"á—¡";i:9061;s:3:"á—¢";i:9062;s:3:"á—£";i:9063;s:3:"á—¤";i:9064;s:3:"á—¥";i:9065;s:3:"á—¦";i:9066;s:3:"á—§";i:9067;s:3:"á—¨";i:9068;s:3:"á—©";i:9069;s:3:"á—ª";i:9070;s:3:"á—«";i:9071;s:3:"á—¬";i:9072;s:3:"á—­";i:9073;s:3:"á—®";i:9074;s:3:"á—¯";i:9075;s:3:"á—°";i:9076;s:3:"á—±";i:9077;s:3:"á—²";i:9078;s:3:"á—³";i:9079;s:3:"á—´";i:9080;s:3:"á—µ";i:9081;s:3:"á—¶";i:9082;s:3:"á—·";i:9083;s:3:"á—¸";i:9084;s:3:"á—¹";i:9085;s:3:"á—º";i:9086;s:3:"á—»";i:9087;s:3:"á—¼";i:9088;s:3:"á—½";i:9089;s:3:"á—¾";i:9090;s:3:"á—¿";i:9091;s:3:"ᘀ";i:9092;s:3:"á˜";i:9093;s:3:"ᘂ";i:9094;s:3:"ᘃ";i:9095;s:3:"ᘄ";i:9096;s:3:"ᘅ";i:9097;s:3:"ᘆ";i:9098;s:3:"ᘇ";i:9099;s:3:"ᘈ";i:9100;s:3:"ᘉ";i:9101;s:3:"ᘊ";i:9102;s:3:"ᘋ";i:9103;s:3:"ᘌ";i:9104;s:3:"á˜";i:9105;s:3:"ᘎ";i:9106;s:3:"á˜";i:9107;s:3:"á˜";i:9108;s:3:"ᘑ";i:9109;s:3:"ᘒ";i:9110;s:3:"ᘓ";i:9111;s:3:"ᘔ";i:9112;s:3:"ᘕ";i:9113;s:3:"ᘖ";i:9114;s:3:"ᘗ";i:9115;s:3:"ᘘ";i:9116;s:3:"ᘙ";i:9117;s:3:"ᘚ";i:9118;s:3:"ᘛ";i:9119;s:3:"ᘜ";i:9120;s:3:"á˜";i:9121;s:3:"ᘞ";i:9122;s:3:"ᘟ";i:9123;s:3:"ᘠ";i:9124;s:3:"ᘡ";i:9125;s:3:"ᘢ";i:9126;s:3:"ᘣ";i:9127;s:3:"ᘤ";i:9128;s:3:"ᘥ";i:9129;s:3:"ᘦ";i:9130;s:3:"ᘧ";i:9131;s:3:"ᘨ";i:9132;s:3:"ᘩ";i:9133;s:3:"ᘪ";i:9134;s:3:"ᘫ";i:9135;s:3:"ᘬ";i:9136;s:3:"ᘭ";i:9137;s:3:"ᘮ";i:9138;s:3:"ᘯ";i:9139;s:3:"ᘰ";i:9140;s:3:"ᘱ";i:9141;s:3:"ᘲ";i:9142;s:3:"ᘳ";i:9143;s:3:"ᘴ";i:9144;s:3:"ᘵ";i:9145;s:3:"ᘶ";i:9146;s:3:"ᘷ";i:9147;s:3:"ᘸ";i:9148;s:3:"ᘹ";i:9149;s:3:"ᘺ";i:9150;s:3:"ᘻ";i:9151;s:3:"ᘼ";i:9152;s:3:"ᘽ";i:9153;s:3:"ᘾ";i:9154;s:3:"ᘿ";i:9155;s:3:"ᙀ";i:9156;s:3:"á™";i:9157;s:3:"ᙂ";i:9158;s:3:"ᙃ";i:9159;s:3:"ᙄ";i:9160;s:3:"á™…";i:9161;s:3:"ᙆ";i:9162;s:3:"ᙇ";i:9163;s:3:"ᙈ";i:9164;s:3:"ᙉ";i:9165;s:3:"ᙊ";i:9166;s:3:"ᙋ";i:9167;s:3:"ᙌ";i:9168;s:3:"á™";i:9169;s:3:"ᙎ";i:9170;s:3:"á™";i:9171;s:3:"á™";i:9172;s:3:"ᙑ";i:9173;s:3:"á™’";i:9174;s:3:"ᙓ";i:9175;s:3:"á™”";i:9176;s:3:"ᙕ";i:9177;s:3:"á™–";i:9178;s:3:"á™—";i:9179;s:3:"ᙘ";i:9180;s:3:"á™™";i:9181;s:3:"ᙚ";i:9182;s:3:"á™›";i:9183;s:3:"ᙜ";i:9184;s:3:"á™";i:9185;s:3:"ᙞ";i:9186;s:3:"ᙟ";i:9187;s:3:"á™ ";i:9188;s:3:"ᙡ";i:9189;s:3:"ᙢ";i:9190;s:3:"ᙣ";i:9191;s:3:"ᙤ";i:9192;s:3:"ᙥ";i:9193;s:3:"ᙦ";i:9194;s:3:"ᙧ";i:9195;s:3:"ᙨ";i:9196;s:3:"ᙩ";i:9197;s:3:"ᙪ";i:9198;s:3:"ᙫ";i:9199;s:3:"ᙬ";i:9200;s:3:"á™·";i:9201;s:3:"ᙸ";i:9202;s:3:"ᙹ";i:9203;s:3:"ᙺ";i:9204;s:3:"á™»";i:9205;s:3:"ᙼ";i:9206;s:3:"ᙽ";i:9207;s:3:"ᙾ";i:9208;s:3:"ᙿ";i:9209;s:3:"ᢰ";i:9210;s:3:"ᢱ";i:9211;s:3:"ᢲ";i:9212;s:3:"ᢳ";i:9213;s:3:"ᢴ";i:9214;s:3:"ᢵ";i:9215;s:3:"ᢶ";i:9216;s:3:"ᢷ";i:9217;s:3:"ᢸ";i:9218;s:3:"ᢹ";i:9219;s:3:"ᢺ";i:9220;s:3:"ᢻ";i:9221;s:3:"ᢼ";i:9222;s:3:"ᢽ";i:9223;s:3:"ᢾ";i:9224;s:3:"ᢿ";i:9225;s:3:"ᣀ";i:9226;s:3:"á£";i:9227;s:3:"ᣂ";i:9228;s:3:"ᣃ";i:9229;s:3:"ᣄ";i:9230;s:3:"ᣅ";i:9231;s:3:"ᣆ";i:9232;s:3:"ᣇ";i:9233;s:3:"ᣈ";i:9234;s:3:"ᣉ";i:9235;s:3:"ᣊ";i:9236;s:3:"ᣋ";i:9237;s:3:"ᣌ";i:9238;s:3:"á£";i:9239;s:3:"ᣎ";i:9240;s:3:"á£";i:9241;s:3:"á£";i:9242;s:3:"ᣑ";i:9243;s:3:"ᣒ";i:9244;s:3:"ᣓ";i:9245;s:3:"ᣔ";i:9246;s:3:"ᣕ";i:9247;s:3:"ᣖ";i:9248;s:3:"ᣗ";i:9249;s:3:"ᣘ";i:9250;s:3:"ᣙ";i:9251;s:3:"ᣚ";i:9252;s:3:"ᣛ";i:9253;s:3:"ᣜ";i:9254;s:3:"á£";i:9255;s:3:"ᣞ";i:9256;s:3:"ᣟ";i:9257;s:3:"ᣠ";i:9258;s:3:"ᣡ";i:9259;s:3:"ᣢ";i:9260;s:3:"ᣣ";i:9261;s:3:"ᣤ";i:9262;s:3:"ᣥ";i:9263;s:3:"ᣦ";i:9264;s:3:"ᣧ";i:9265;s:3:"ᣨ";i:9266;s:3:"ᣩ";i:9267;s:3:"ᣪ";i:9268;s:3:"ᣫ";i:9269;s:3:"ᣬ";i:9270;s:3:"ᣭ";i:9271;s:3:"ᣮ";i:9272;s:3:"ᣯ";i:9273;s:3:"ᣰ";i:9274;s:3:"ᣱ";i:9275;s:3:"ᣲ";i:9276;s:3:"ᣳ";i:9277;s:3:"ᣴ";i:9278;s:3:"ᣵ";i:9279;s:3:"áš";i:9280;s:3:"áš‚";i:9281;s:3:"ᚃ";i:9282;s:3:"áš„";i:9283;s:3:"áš…";i:9284;s:3:"ᚆ";i:9285;s:3:"ᚇ";i:9286;s:3:"ᚈ";i:9287;s:3:"ᚉ";i:9288;s:3:"ᚊ";i:9289;s:3:"áš‹";i:9290;s:3:"ᚌ";i:9291;s:3:"áš";i:9292;s:3:"ᚎ";i:9293;s:3:"áš";i:9294;s:3:"áš";i:9295;s:3:"áš‘";i:9296;s:3:"áš’";i:9297;s:3:"áš“";i:9298;s:3:"áš”";i:9299;s:3:"áš•";i:9300;s:3:"áš–";i:9301;s:3:"áš—";i:9302;s:3:"ᚘ";i:9303;s:3:"áš™";i:9304;s:3:"ášš";i:9305;s:3:"áš ";i:9306;s:3:"ᚢ";i:9307;s:3:"ᚦ";i:9308;s:3:"ᚨ";i:9309;s:3:"ᚯ";i:9310;s:3:"áš°";i:9311;s:3:"áš±";i:9312;s:3:"áš²";i:9313;s:3:"áš·";i:9314;s:3:"áš¹";i:9315;s:3:"ᚺ";i:9316;s:3:"áš¾";i:9317;s:3:"á›";i:9318;s:3:"ᛃ";i:9319;s:3:"á›…";i:9320;s:3:"ᛇ";i:9321;s:3:"ᛈ";i:9322;s:3:"ᛉ";i:9323;s:3:"ᛊ";i:9324;s:3:"á›";i:9325;s:3:"á›’";i:9326;s:3:"á›–";i:9327;s:3:"á›—";i:9328;s:3:"ᛚ";i:9329;s:3:"ᛜ";i:9330;s:3:"ᛞ";i:9331;s:3:"ᛟ";i:9332;s:3:"ᚪ";i:9333;s:3:"áš«";i:9334;s:3:"ᚣ";i:9335;s:3:"á› ";i:9336;s:3:"ᛣ";i:9337;s:3:"ᚸ";i:9338;s:3:"ᛤ";i:9339;s:3:"ᛡ";i:9340;s:3:"ᛢ";i:9341;s:3:"ᛥ";i:9342;s:3:"ᛦ";i:9343;s:4:"ð°€";i:9344;s:4:"ð°‚";i:9345;s:4:"ð°ƒ";i:9346;s:4:"ð°…";i:9347;s:4:"ð°†";i:9348;s:4:"ð°‡";i:9349;s:4:"ð°‰";i:9350;s:4:"ð°‹";i:9351;s:4:"ð°";i:9352;s:4:"ð°";i:9353;s:4:"ð°‘";i:9354;s:4:"ð°“";i:9355;s:4:"ð°”";i:9356;s:4:"ð°–";i:9357;s:4:"ð°˜";i:9358;s:4:"ð°š";i:9359;s:4:"ð°œ";i:9360;s:4:"ð°ž";i:9361;s:4:"ð° ";i:9362;s:4:"ð°¡";i:9363;s:4:"ð°¢";i:9364;s:4:"ð°£";i:9365;s:4:"ð°¤";i:9366;s:4:"ð°¦";i:9367;s:4:"ð°¨";i:9368;s:4:"ð°ª";i:9369;s:4:"ð°¬";i:9370;s:4:"ð°­";i:9371;s:4:"ð°¯";i:9372;s:4:"ð°°";i:9373;s:4:"ð°±";i:9374;s:4:"ð°²";i:9375;s:4:"ð°´";i:9376;s:4:"ð°¶";i:9377;s:4:"ð°¸";i:9378;s:4:"ð°º";i:9379;s:4:"ð°¼";i:9380;s:4:"ð°½";i:9381;s:4:"ð°¾";i:9382;s:4:"ð°¿";i:9383;s:4:"ð±";i:9384;s:4:"ð±ƒ";i:9385;s:4:"ð±…";i:9386;s:4:"ð±‡";i:9387;s:4:"ð±ˆ";i:9388;s:3:"ꔀ";i:9389;s:3:"ê”";i:9390;s:3:"ꔂ";i:9391;s:3:"ꔃ";i:9392;s:3:"ꔄ";i:9393;s:3:"ê”…";i:9394;s:3:"ꔆ";i:9395;s:3:"ꔇ";i:9396;s:3:"ꔈ";i:9397;s:3:"ꔉ";i:9398;s:3:"ꔊ";i:9399;s:3:"ꔋ";i:9400;s:3:"ꔌ";i:9401;s:3:"ê”";i:9402;s:3:"ꔎ";i:9403;s:3:"ê”";i:9404;s:3:"ê”";i:9405;s:3:"ꔑ";i:9406;s:3:"ê”’";i:9407;s:3:"ꔓ";i:9408;s:3:"ê””";i:9409;s:3:"ꔕ";i:9410;s:3:"ê”–";i:9411;s:3:"ê”—";i:9412;s:3:"ꔘ";i:9413;s:3:"ê”™";i:9414;s:3:"ꔚ";i:9415;s:3:"ê”›";i:9416;s:3:"ꔜ";i:9417;s:3:"ê”";i:9418;s:3:"ꔞ";i:9419;s:3:"ꔟ";i:9420;s:3:"ê” ";i:9421;s:3:"ꔡ";i:9422;s:3:"ꔢ";i:9423;s:3:"ꔣ";i:9424;s:3:"ꔤ";i:9425;s:3:"ꔥ";i:9426;s:3:"ꔦ";i:9427;s:3:"ꔧ";i:9428;s:3:"ꔨ";i:9429;s:3:"ꔩ";i:9430;s:3:"ꔪ";i:9431;s:3:"ꔫ";i:9432;s:3:"ꔬ";i:9433;s:3:"ê”­";i:9434;s:3:"ê”®";i:9435;s:3:"ꔯ";i:9436;s:3:"ê”°";i:9437;s:3:"ê”±";i:9438;s:3:"ꔲ";i:9439;s:3:"ꔳ";i:9440;s:3:"ê”´";i:9441;s:3:"ꔵ";i:9442;s:3:"ꔶ";i:9443;s:3:"ê”·";i:9444;s:3:"ꔸ";i:9445;s:3:"ꔹ";i:9446;s:3:"ꔺ";i:9447;s:3:"ê”»";i:9448;s:3:"ꔼ";i:9449;s:3:"ꔽ";i:9450;s:3:"ꔾ";i:9451;s:3:"ꔿ";i:9452;s:3:"ê•€";i:9453;s:3:"ê•";i:9454;s:3:"ê•‚";i:9455;s:3:"ꕃ";i:9456;s:3:"ê•„";i:9457;s:3:"ê•…";i:9458;s:3:"ꕆ";i:9459;s:3:"ꕇ";i:9460;s:3:"ꕈ";i:9461;s:3:"ꕉ";i:9462;s:3:"ê•Š";i:9463;s:3:"ê•‹";i:9464;s:3:"ê•Œ";i:9465;s:3:"ê•";i:9466;s:3:"ê•Ž";i:9467;s:3:"ê•";i:9468;s:3:"ê•";i:9469;s:3:"ê•‘";i:9470;s:3:"ê•’";i:9471;s:3:"ê•“";i:9472;s:3:"ê•”";i:9473;s:3:"ê••";i:9474;s:3:"ê•–";i:9475;s:3:"ê•—";i:9476;s:3:"ꕘ";i:9477;s:3:"ê•™";i:9478;s:3:"ê•š";i:9479;s:3:"ê•›";i:9480;s:3:"ê•œ";i:9481;s:3:"ê•";i:9482;s:3:"ê•ž";i:9483;s:3:"ê•Ÿ";i:9484;s:3:"ê• ";i:9485;s:3:"ê•¡";i:9486;s:3:"ê•¢";i:9487;s:3:"ê•£";i:9488;s:3:"ꕤ";i:9489;s:3:"ê•¥";i:9490;s:3:"ꕦ";i:9491;s:3:"ꕧ";i:9492;s:3:"ꕨ";i:9493;s:3:"ê•©";i:9494;s:3:"ꕪ";i:9495;s:3:"ê•«";i:9496;s:3:"ꕬ";i:9497;s:3:"ê•­";i:9498;s:3:"ê•®";i:9499;s:3:"ꕯ";i:9500;s:3:"ê•°";i:9501;s:3:"ꕱ";i:9502;s:3:"ꕲ";i:9503;s:3:"ꕳ";i:9504;s:3:"ê•´";i:9505;s:3:"ꕵ";i:9506;s:3:"ꕶ";i:9507;s:3:"ê•·";i:9508;s:3:"ꕸ";i:9509;s:3:"ꕹ";i:9510;s:3:"ꕺ";i:9511;s:3:"ê•»";i:9512;s:3:"ꕼ";i:9513;s:3:"ꕽ";i:9514;s:3:"ꕾ";i:9515;s:3:"ê•¿";i:9516;s:3:"ê–€";i:9517;s:3:"ê–";i:9518;s:3:"ê–‚";i:9519;s:3:"ê–ƒ";i:9520;s:3:"ê–„";i:9521;s:3:"ê–…";i:9522;s:3:"ê–†";i:9523;s:3:"ê–‡";i:9524;s:3:"ê–ˆ";i:9525;s:3:"ê–‰";i:9526;s:3:"ê–Š";i:9527;s:3:"ê–‹";i:9528;s:3:"ê–Œ";i:9529;s:3:"ê–";i:9530;s:3:"ê–Ž";i:9531;s:3:"ê–";i:9532;s:3:"ê–";i:9533;s:3:"ê–‘";i:9534;s:3:"ê–’";i:9535;s:3:"ê–“";i:9536;s:3:"ê–”";i:9537;s:3:"ê–•";i:9538;s:3:"ê––";i:9539;s:3:"ê–—";i:9540;s:3:"ê–˜";i:9541;s:3:"ê–™";i:9542;s:3:"ê–š";i:9543;s:3:"ê–›";i:9544;s:3:"ê–œ";i:9545;s:3:"ê–";i:9546;s:3:"ê–ž";i:9547;s:3:"ê–Ÿ";i:9548;s:3:"ê– ";i:9549;s:3:"ê–¡";i:9550;s:3:"ê–¢";i:9551;s:3:"ê–£";i:9552;s:3:"ê–¤";i:9553;s:3:"ê–¥";i:9554;s:3:"ê–¦";i:9555;s:3:"ê–§";i:9556;s:3:"ê–¨";i:9557;s:3:"ê–©";i:9558;s:3:"ê–ª";i:9559;s:3:"ê–«";i:9560;s:3:"ê–¬";i:9561;s:3:"ê–­";i:9562;s:3:"ê–®";i:9563;s:3:"ê–¯";i:9564;s:3:"ê–°";i:9565;s:3:"ê–±";i:9566;s:3:"ê–²";i:9567;s:3:"ê–³";i:9568;s:3:"ê–´";i:9569;s:3:"ê–µ";i:9570;s:3:"ê–¶";i:9571;s:3:"ê–·";i:9572;s:3:"ê–¸";i:9573;s:3:"ê–¹";i:9574;s:3:"ê–º";i:9575;s:3:"ê–»";i:9576;s:3:"ê–¼";i:9577;s:3:"ê–½";i:9578;s:3:"ê–¾";i:9579;s:3:"ê–¿";i:9580;s:3:"ê—€";i:9581;s:3:"ê—";i:9582;s:3:"ê—‚";i:9583;s:3:"ê—ƒ";i:9584;s:3:"ê—„";i:9585;s:3:"ê—…";i:9586;s:3:"ê—†";i:9587;s:3:"ê—‡";i:9588;s:3:"ê—ˆ";i:9589;s:3:"ê—‰";i:9590;s:3:"ê—Š";i:9591;s:3:"ê—‹";i:9592;s:3:"ê—Œ";i:9593;s:3:"ê—";i:9594;s:3:"ê—Ž";i:9595;s:3:"ê—";i:9596;s:3:"ê—";i:9597;s:3:"ê—‘";i:9598;s:3:"ê—’";i:9599;s:3:"ê—“";i:9600;s:3:"ê—”";i:9601;s:3:"ê—•";i:9602;s:3:"ê—–";i:9603;s:3:"ê——";i:9604;s:3:"ê—˜";i:9605;s:3:"ê—™";i:9606;s:3:"ê—š";i:9607;s:3:"ê—›";i:9608;s:3:"ê—œ";i:9609;s:3:"ê—";i:9610;s:3:"ê—ž";i:9611;s:3:"ê—Ÿ";i:9612;s:3:"ê— ";i:9613;s:3:"ê—¡";i:9614;s:3:"ê—¢";i:9615;s:3:"ê—£";i:9616;s:3:"ê—¤";i:9617;s:3:"ê—¥";i:9618;s:3:"ê—¦";i:9619;s:3:"ê—§";i:9620;s:3:"ê—¨";i:9621;s:3:"ê—©";i:9622;s:3:"ê—ª";i:9623;s:3:"ê—«";i:9624;s:3:"ê—¬";i:9625;s:3:"ê—­";i:9626;s:3:"ê—®";i:9627;s:3:"ê—¯";i:9628;s:3:"ê—°";i:9629;s:3:"ê—±";i:9630;s:3:"ê—²";i:9631;s:3:"ê—³";i:9632;s:3:"ê—´";i:9633;s:3:"ê—µ";i:9634;s:3:"ê—¶";i:9635;s:3:"ê—·";i:9636;s:3:"ê—¸";i:9637;s:3:"ê—¹";i:9638;s:3:"ê—º";i:9639;s:3:"ê—»";i:9640;s:3:"ê—¼";i:9641;s:3:"ê—½";i:9642;s:3:"ê—¾";i:9643;s:3:"ê—¿";i:9644;s:3:"ꘀ";i:9645;s:3:"ê˜";i:9646;s:3:"ꘂ";i:9647;s:3:"ꘃ";i:9648;s:3:"ꘄ";i:9649;s:3:"ꘅ";i:9650;s:3:"ꘆ";i:9651;s:3:"ꘇ";i:9652;s:3:"ꘈ";i:9653;s:3:"ꘉ";i:9654;s:3:"ꘊ";i:9655;s:3:"ꘋ";i:9656;s:3:"ꘌ";i:9657;s:3:"êš ";i:9658;s:3:"êš¡";i:9659;s:3:"ꚢ";i:9660;s:3:"ꚣ";i:9661;s:3:"ꚤ";i:9662;s:3:"ꚥ";i:9663;s:3:"ꚦ";i:9664;s:3:"ꚧ";i:9665;s:3:"ꚨ";i:9666;s:3:"êš©";i:9667;s:3:"ꚪ";i:9668;s:3:"êš«";i:9669;s:3:"ꚬ";i:9670;s:3:"êš­";i:9671;s:3:"êš®";i:9672;s:3:"ꚯ";i:9673;s:3:"êš°";i:9674;s:3:"êš±";i:9675;s:3:"êš²";i:9676;s:3:"êš³";i:9677;s:3:"êš´";i:9678;s:3:"êšµ";i:9679;s:3:"ꚶ";i:9680;s:3:"êš·";i:9681;s:3:"ꚸ";i:9682;s:3:"êš¹";i:9683;s:3:"ꚺ";i:9684;s:3:"êš»";i:9685;s:3:"êš¼";i:9686;s:3:"êš½";i:9687;s:3:"êš¾";i:9688;s:3:"êš¿";i:9689;s:3:"ꛀ";i:9690;s:3:"ê›";i:9691;s:3:"ꛂ";i:9692;s:3:"ꛃ";i:9693;s:3:"ꛄ";i:9694;s:3:"ê›…";i:9695;s:3:"ꛆ";i:9696;s:3:"ꛇ";i:9697;s:3:"ꛈ";i:9698;s:3:"ꛉ";i:9699;s:3:"ꛊ";i:9700;s:3:"ꛋ";i:9701;s:3:"ꛌ";i:9702;s:3:"ê›";i:9703;s:3:"ꛎ";i:9704;s:3:"ê›";i:9705;s:3:"ê›";i:9706;s:3:"ꛑ";i:9707;s:3:"ê›’";i:9708;s:3:"ꛓ";i:9709;s:3:"ê›”";i:9710;s:3:"ꛕ";i:9711;s:3:"ê›–";i:9712;s:3:"ê›—";i:9713;s:3:"ꛘ";i:9714;s:3:"ê›™";i:9715;s:3:"ꛚ";i:9716;s:3:"ê››";i:9717;s:3:"ꛜ";i:9718;s:3:"ê›";i:9719;s:3:"ꛞ";i:9720;s:3:"ꛟ";i:9721;s:3:"ê› ";i:9722;s:3:"ꛡ";i:9723;s:3:"ꛢ";i:9724;s:3:"ꛣ";i:9725;s:3:"ꛤ";i:9726;s:3:"ꛥ";i:9727;s:3:"ꛦ";i:9728;s:3:"ꛧ";i:9729;s:3:"ꛨ";i:9730;s:3:"ꛩ";i:9731;s:3:"ꛪ";i:9732;s:3:"ꛫ";i:9733;s:3:"ꛬ";i:9734;s:3:"ê›­";i:9735;s:3:"ê›®";i:9736;s:3:"ꛯ";i:9737;s:4:"ð– €";i:9738;s:4:"ð– ";i:9739;s:4:"ð– ‚";i:9740;s:4:"ð– ƒ";i:9741;s:4:"ð– „";i:9742;s:4:"ð– …";i:9743;s:4:"ð– †";i:9744;s:4:"ð– ‡";i:9745;s:4:"ð– ˆ";i:9746;s:4:"ð– ‰";i:9747;s:4:"ð– Š";i:9748;s:4:"ð– ‹";i:9749;s:4:"ð– Œ";i:9750;s:4:"ð– ";i:9751;s:4:"ð– Ž";i:9752;s:4:"ð– ";i:9753;s:4:"ð– ";i:9754;s:4:"ð– ‘";i:9755;s:4:"ð– ’";i:9756;s:4:"ð– “";i:9757;s:4:"ð– ”";i:9758;s:4:"ð– •";i:9759;s:4:"ð– –";i:9760;s:4:"ð– —";i:9761;s:4:"ð– ˜";i:9762;s:4:"ð– ™";i:9763;s:4:"ð– š";i:9764;s:4:"ð– ›";i:9765;s:4:"ð– œ";i:9766;s:4:"ð– ";i:9767;s:4:"ð– ž";i:9768;s:4:"ð– Ÿ";i:9769;s:4:"ð–  ";i:9770;s:4:"ð– ¡";i:9771;s:4:"ð– ¢";i:9772;s:4:"ð– £";i:9773;s:4:"ð– ¤";i:9774;s:4:"ð– ¥";i:9775;s:4:"ð– ¦";i:9776;s:4:"ð– §";i:9777;s:4:"ð– ¨";i:9778;s:4:"ð– ©";i:9779;s:4:"ð– ª";i:9780;s:4:"ð– «";i:9781;s:4:"ð– ¬";i:9782;s:4:"ð– ­";i:9783;s:4:"ð– ®";i:9784;s:4:"ð– ¯";i:9785;s:4:"ð– °";i:9786;s:4:"ð– ±";i:9787;s:4:"ð– ²";i:9788;s:4:"ð– ³";i:9789;s:4:"ð– ´";i:9790;s:4:"ð– µ";i:9791;s:4:"ð– ¶";i:9792;s:4:"ð– ·";i:9793;s:4:"ð– ¸";i:9794;s:4:"ð– ¹";i:9795;s:4:"ð– º";i:9796;s:4:"ð– »";i:9797;s:4:"ð– ¼";i:9798;s:4:"ð– ½";i:9799;s:4:"ð– ¾";i:9800;s:4:"ð– ¿";i:9801;s:4:"ð–¡€";i:9802;s:4:"ð–¡";i:9803;s:4:"ð–¡‚";i:9804;s:4:"𖡃";i:9805;s:4:"ð–¡„";i:9806;s:4:"ð–¡…";i:9807;s:4:"𖡆";i:9808;s:4:"𖡇";i:9809;s:4:"𖡈";i:9810;s:4:"𖡉";i:9811;s:4:"ð–¡Š";i:9812;s:4:"ð–¡‹";i:9813;s:4:"ð–¡Œ";i:9814;s:4:"ð–¡";i:9815;s:4:"ð–¡Ž";i:9816;s:4:"ð–¡";i:9817;s:4:"ð–¡";i:9818;s:4:"ð–¡‘";i:9819;s:4:"ð–¡’";i:9820;s:4:"ð–¡“";i:9821;s:4:"ð–¡”";i:9822;s:4:"ð–¡•";i:9823;s:4:"ð–¡–";i:9824;s:4:"ð–¡—";i:9825;s:4:"𖡘";i:9826;s:4:"ð–¡™";i:9827;s:4:"ð–¡š";i:9828;s:4:"ð–¡›";i:9829;s:4:"ð–¡œ";i:9830;s:4:"ð–¡";i:9831;s:4:"ð–¡ž";i:9832;s:4:"ð–¡Ÿ";i:9833;s:4:"ð–¡ ";i:9834;s:4:"ð–¡¡";i:9835;s:4:"ð–¡¢";i:9836;s:4:"ð–¡£";i:9837;s:4:"𖡤";i:9838;s:4:"ð–¡¥";i:9839;s:4:"𖡦";i:9840;s:4:"𖡧";i:9841;s:4:"𖡨";i:9842;s:4:"ð–¡©";i:9843;s:4:"𖡪";i:9844;s:4:"ð–¡«";i:9845;s:4:"𖡬";i:9846;s:4:"ð–¡­";i:9847;s:4:"ð–¡®";i:9848;s:4:"𖡯";i:9849;s:4:"ð–¡°";i:9850;s:4:"ð–¡±";i:9851;s:4:"ð–¡²";i:9852;s:4:"ð–¡³";i:9853;s:4:"ð–¡´";i:9854;s:4:"ð–¡µ";i:9855;s:4:"𖡶";i:9856;s:4:"ð–¡·";i:9857;s:4:"𖡸";i:9858;s:4:"ð–¡¹";i:9859;s:4:"𖡺";i:9860;s:4:"ð–¡»";i:9861;s:4:"ð–¡¼";i:9862;s:4:"ð–¡½";i:9863;s:4:"ð–¡¾";i:9864;s:4:"ð–¡¿";i:9865;s:4:"ð–¢€";i:9866;s:4:"ð–¢";i:9867;s:4:"𖢂";i:9868;s:4:"𖢃";i:9869;s:4:"𖢄";i:9870;s:4:"ð–¢…";i:9871;s:4:"𖢆";i:9872;s:4:"𖢇";i:9873;s:4:"𖢈";i:9874;s:4:"𖢉";i:9875;s:4:"𖢊";i:9876;s:4:"𖢋";i:9877;s:4:"𖢌";i:9878;s:4:"ð–¢";i:9879;s:4:"𖢎";i:9880;s:4:"ð–¢";i:9881;s:4:"ð–¢";i:9882;s:4:"𖢑";i:9883;s:4:"ð–¢’";i:9884;s:4:"𖢓";i:9885;s:4:"ð–¢”";i:9886;s:4:"𖢕";i:9887;s:4:"ð–¢–";i:9888;s:4:"ð–¢—";i:9889;s:4:"𖢘";i:9890;s:4:"ð–¢™";i:9891;s:4:"𖢚";i:9892;s:4:"ð–¢›";i:9893;s:4:"𖢜";i:9894;s:4:"ð–¢";i:9895;s:4:"𖢞";i:9896;s:4:"𖢟";i:9897;s:4:"ð–¢ ";i:9898;s:4:"𖢡";i:9899;s:4:"ð–¢¢";i:9900;s:4:"ð–¢£";i:9901;s:4:"𖢤";i:9902;s:4:"ð–¢¥";i:9903;s:4:"𖢦";i:9904;s:4:"𖢧";i:9905;s:4:"𖢨";i:9906;s:4:"𖢩";i:9907;s:4:"𖢪";i:9908;s:4:"𖢫";i:9909;s:4:"𖢬";i:9910;s:4:"ð–¢­";i:9911;s:4:"ð–¢®";i:9912;s:4:"𖢯";i:9913;s:4:"ð–¢°";i:9914;s:4:"ð–¢±";i:9915;s:4:"ð–¢²";i:9916;s:4:"ð–¢³";i:9917;s:4:"ð–¢´";i:9918;s:4:"ð–¢µ";i:9919;s:4:"𖢶";i:9920;s:4:"ð–¢·";i:9921;s:4:"𖢸";i:9922;s:4:"ð–¢¹";i:9923;s:4:"𖢺";i:9924;s:4:"ð–¢»";i:9925;s:4:"ð–¢¼";i:9926;s:4:"ð–¢½";i:9927;s:4:"ð–¢¾";i:9928;s:4:"𖢿";i:9929;s:4:"ð–£€";i:9930;s:4:"ð–£";i:9931;s:4:"𖣂";i:9932;s:4:"𖣃";i:9933;s:4:"𖣄";i:9934;s:4:"ð–£…";i:9935;s:4:"𖣆";i:9936;s:4:"𖣇";i:9937;s:4:"𖣈";i:9938;s:4:"𖣉";i:9939;s:4:"𖣊";i:9940;s:4:"𖣋";i:9941;s:4:"𖣌";i:9942;s:4:"ð–£";i:9943;s:4:"𖣎";i:9944;s:4:"ð–£";i:9945;s:4:"ð–£";i:9946;s:4:"𖣑";i:9947;s:4:"ð–£’";i:9948;s:4:"𖣓";i:9949;s:4:"ð–£”";i:9950;s:4:"𖣕";i:9951;s:4:"ð–£–";i:9952;s:4:"ð–£—";i:9953;s:4:"𖣘";i:9954;s:4:"ð–£™";i:9955;s:4:"𖣚";i:9956;s:4:"ð–£›";i:9957;s:4:"𖣜";i:9958;s:4:"ð–£";i:9959;s:4:"𖣞";i:9960;s:4:"𖣟";i:9961;s:4:"ð–£ ";i:9962;s:4:"𖣡";i:9963;s:4:"ð–£¢";i:9964;s:4:"ð–££";i:9965;s:4:"𖣤";i:9966;s:4:"ð–£¥";i:9967;s:4:"𖣦";i:9968;s:4:"𖣧";i:9969;s:4:"𖣨";i:9970;s:4:"𖣩";i:9971;s:4:"𖣪";i:9972;s:4:"𖣫";i:9973;s:4:"𖣬";i:9974;s:4:"ð–£­";i:9975;s:4:"ð–£®";i:9976;s:4:"𖣯";i:9977;s:4:"ð–£°";i:9978;s:4:"ð–£±";i:9979;s:4:"ð–£²";i:9980;s:4:"ð–£³";i:9981;s:4:"ð–£´";i:9982;s:4:"ð–£µ";i:9983;s:4:"𖣶";i:9984;s:4:"ð–£·";i:9985;s:4:"𖣸";i:9986;s:4:"ð–£¹";i:9987;s:4:"𖣺";i:9988;s:4:"ð–£»";i:9989;s:4:"ð–£¼";i:9990;s:4:"ð–£½";i:9991;s:4:"ð–£¾";i:9992;s:4:"𖣿";i:9993;s:4:"𖤀";i:9994;s:4:"ð–¤";i:9995;s:4:"𖤂";i:9996;s:4:"𖤃";i:9997;s:4:"𖤄";i:9998;s:4:"ð–¤…";i:9999;s:4:"𖤆";i:10000;s:4:"𖤇";i:10001;s:4:"𖤈";i:10002;s:4:"𖤉";i:10003;s:4:"𖤊";i:10004;s:4:"𖤋";i:10005;s:4:"𖤌";i:10006;s:4:"ð–¤";i:10007;s:4:"𖤎";i:10008;s:4:"ð–¤";i:10009;s:4:"ð–¤";i:10010;s:4:"𖤑";i:10011;s:4:"ð–¤’";i:10012;s:4:"𖤓";i:10013;s:4:"𖤔";i:10014;s:4:"𖤕";i:10015;s:4:"ð–¤–";i:10016;s:4:"ð–¤—";i:10017;s:4:"𖤘";i:10018;s:4:"𖤙";i:10019;s:4:"𖤚";i:10020;s:4:"𖤛";i:10021;s:4:"𖤜";i:10022;s:4:"ð–¤";i:10023;s:4:"𖤞";i:10024;s:4:"𖤟";i:10025;s:4:"ð–¤ ";i:10026;s:4:"𖤡";i:10027;s:4:"𖤢";i:10028;s:4:"𖤣";i:10029;s:4:"𖤤";i:10030;s:4:"𖤥";i:10031;s:4:"𖤦";i:10032;s:4:"𖤧";i:10033;s:4:"𖤨";i:10034;s:4:"𖤩";i:10035;s:4:"𖤪";i:10036;s:4:"𖤫";i:10037;s:4:"𖤬";i:10038;s:4:"ð–¤­";i:10039;s:4:"𖤮";i:10040;s:4:"𖤯";i:10041;s:4:"ð–¤°";i:10042;s:4:"𖤱";i:10043;s:4:"𖤲";i:10044;s:4:"𖤳";i:10045;s:4:"ð–¤´";i:10046;s:4:"𖤵";i:10047;s:4:"𖤶";i:10048;s:4:"ð–¤·";i:10049;s:4:"𖤸";i:10050;s:4:"𖤹";i:10051;s:4:"𖤺";i:10052;s:4:"𖤻";i:10053;s:4:"𖤼";i:10054;s:4:"𖤽";i:10055;s:4:"𖤾";i:10056;s:4:"𖤿";i:10057;s:4:"ð–¥€";i:10058;s:4:"ð–¥";i:10059;s:4:"𖥂";i:10060;s:4:"𖥃";i:10061;s:4:"𖥄";i:10062;s:4:"ð–¥…";i:10063;s:4:"𖥆";i:10064;s:4:"𖥇";i:10065;s:4:"𖥈";i:10066;s:4:"𖥉";i:10067;s:4:"𖥊";i:10068;s:4:"𖥋";i:10069;s:4:"𖥌";i:10070;s:4:"ð–¥";i:10071;s:4:"𖥎";i:10072;s:4:"ð–¥";i:10073;s:4:"ð–¥";i:10074;s:4:"𖥑";i:10075;s:4:"ð–¥’";i:10076;s:4:"𖥓";i:10077;s:4:"ð–¥”";i:10078;s:4:"𖥕";i:10079;s:4:"ð–¥–";i:10080;s:4:"ð–¥—";i:10081;s:4:"𖥘";i:10082;s:4:"ð–¥™";i:10083;s:4:"𖥚";i:10084;s:4:"ð–¥›";i:10085;s:4:"𖥜";i:10086;s:4:"ð–¥";i:10087;s:4:"𖥞";i:10088;s:4:"𖥟";i:10089;s:4:"ð–¥ ";i:10090;s:4:"𖥡";i:10091;s:4:"ð–¥¢";i:10092;s:4:"ð–¥£";i:10093;s:4:"𖥤";i:10094;s:4:"ð–¥¥";i:10095;s:4:"𖥦";i:10096;s:4:"𖥧";i:10097;s:4:"𖥨";i:10098;s:4:"𖥩";i:10099;s:4:"𖥪";i:10100;s:4:"𖥫";i:10101;s:4:"𖥬";i:10102;s:4:"ð–¥­";i:10103;s:4:"ð–¥®";i:10104;s:4:"𖥯";i:10105;s:4:"ð–¥°";i:10106;s:4:"ð–¥±";i:10107;s:4:"ð–¥²";i:10108;s:4:"ð–¥³";i:10109;s:4:"ð–¥´";i:10110;s:4:"ð–¥µ";i:10111;s:4:"𖥶";i:10112;s:4:"ð–¥·";i:10113;s:4:"𖥸";i:10114;s:4:"ð–¥¹";i:10115;s:4:"𖥺";i:10116;s:4:"ð–¥»";i:10117;s:4:"ð–¥¼";i:10118;s:4:"ð–¥½";i:10119;s:4:"ð–¥¾";i:10120;s:4:"𖥿";i:10121;s:4:"𖦀";i:10122;s:4:"ð–¦";i:10123;s:4:"𖦂";i:10124;s:4:"𖦃";i:10125;s:4:"𖦄";i:10126;s:4:"ð–¦…";i:10127;s:4:"𖦆";i:10128;s:4:"𖦇";i:10129;s:4:"𖦈";i:10130;s:4:"𖦉";i:10131;s:4:"𖦊";i:10132;s:4:"𖦋";i:10133;s:4:"𖦌";i:10134;s:4:"ð–¦";i:10135;s:4:"𖦎";i:10136;s:4:"ð–¦";i:10137;s:4:"ð–¦";i:10138;s:4:"𖦑";i:10139;s:4:"ð–¦’";i:10140;s:4:"𖦓";i:10141;s:4:"𖦔";i:10142;s:4:"𖦕";i:10143;s:4:"ð–¦–";i:10144;s:4:"ð–¦—";i:10145;s:4:"𖦘";i:10146;s:4:"𖦙";i:10147;s:4:"𖦚";i:10148;s:4:"𖦛";i:10149;s:4:"𖦜";i:10150;s:4:"ð–¦";i:10151;s:4:"𖦞";i:10152;s:4:"𖦟";i:10153;s:4:"ð–¦ ";i:10154;s:4:"𖦡";i:10155;s:4:"𖦢";i:10156;s:4:"𖦣";i:10157;s:4:"𖦤";i:10158;s:4:"𖦥";i:10159;s:4:"𖦦";i:10160;s:4:"𖦧";i:10161;s:4:"𖦨";i:10162;s:4:"𖦩";i:10163;s:4:"𖦪";i:10164;s:4:"𖦫";i:10165;s:4:"𖦬";i:10166;s:4:"ð–¦­";i:10167;s:4:"𖦮";i:10168;s:4:"𖦯";i:10169;s:4:"ð–¦°";i:10170;s:4:"𖦱";i:10171;s:4:"𖦲";i:10172;s:4:"𖦳";i:10173;s:4:"ð–¦´";i:10174;s:4:"𖦵";i:10175;s:4:"𖦶";i:10176;s:4:"ð–¦·";i:10177;s:4:"𖦸";i:10178;s:4:"𖦹";i:10179;s:4:"𖦺";i:10180;s:4:"𖦻";i:10181;s:4:"𖦼";i:10182;s:4:"𖦽";i:10183;s:4:"𖦾";i:10184;s:4:"𖦿";i:10185;s:4:"𖧀";i:10186;s:4:"ð–§";i:10187;s:4:"𖧂";i:10188;s:4:"𖧃";i:10189;s:4:"𖧄";i:10190;s:4:"ð–§…";i:10191;s:4:"𖧆";i:10192;s:4:"𖧇";i:10193;s:4:"𖧈";i:10194;s:4:"𖧉";i:10195;s:4:"𖧊";i:10196;s:4:"𖧋";i:10197;s:4:"𖧌";i:10198;s:4:"ð–§";i:10199;s:4:"𖧎";i:10200;s:4:"ð–§";i:10201;s:4:"ð–§";i:10202;s:4:"𖧑";i:10203;s:4:"ð–§’";i:10204;s:4:"𖧓";i:10205;s:4:"𖧔";i:10206;s:4:"𖧕";i:10207;s:4:"ð–§–";i:10208;s:4:"ð–§—";i:10209;s:4:"𖧘";i:10210;s:4:"𖧙";i:10211;s:4:"𖧚";i:10212;s:4:"𖧛";i:10213;s:4:"𖧜";i:10214;s:4:"ð–§";i:10215;s:4:"𖧞";i:10216;s:4:"𖧟";i:10217;s:4:"ð–§ ";i:10218;s:4:"𖧡";i:10219;s:4:"𖧢";i:10220;s:4:"𖧣";i:10221;s:4:"𖧤";i:10222;s:4:"𖧥";i:10223;s:4:"𖧦";i:10224;s:4:"𖧧";i:10225;s:4:"𖧨";i:10226;s:4:"𖧩";i:10227;s:4:"𖧪";i:10228;s:4:"𖧫";i:10229;s:4:"𖧬";i:10230;s:4:"ð–§­";i:10231;s:4:"𖧮";i:10232;s:4:"𖧯";i:10233;s:4:"ð–§°";i:10234;s:4:"𖧱";i:10235;s:4:"𖧲";i:10236;s:4:"𖧳";i:10237;s:4:"ð–§´";i:10238;s:4:"𖧵";i:10239;s:4:"𖧶";i:10240;s:4:"ð–§·";i:10241;s:4:"𖧸";i:10242;s:4:"𖧹";i:10243;s:4:"𖧺";i:10244;s:4:"𖧻";i:10245;s:4:"𖧼";i:10246;s:4:"𖧽";i:10247;s:4:"𖧾";i:10248;s:4:"𖧿";i:10249;s:4:"𖨀";i:10250;s:4:"ð–¨";i:10251;s:4:"𖨂";i:10252;s:4:"𖨃";i:10253;s:4:"𖨄";i:10254;s:4:"ð–¨…";i:10255;s:4:"𖨆";i:10256;s:4:"𖨇";i:10257;s:4:"𖨈";i:10258;s:4:"𖨉";i:10259;s:4:"𖨊";i:10260;s:4:"𖨋";i:10261;s:4:"𖨌";i:10262;s:4:"ð–¨";i:10263;s:4:"𖨎";i:10264;s:4:"ð–¨";i:10265;s:4:"ð–¨";i:10266;s:4:"𖨑";i:10267;s:4:"ð–¨’";i:10268;s:4:"𖨓";i:10269;s:4:"𖨔";i:10270;s:4:"𖨕";i:10271;s:4:"ð–¨–";i:10272;s:4:"ð–¨—";i:10273;s:4:"𖨘";i:10274;s:4:"𖨙";i:10275;s:4:"𖨚";i:10276;s:4:"𖨛";i:10277;s:4:"𖨜";i:10278;s:4:"ð–¨";i:10279;s:4:"𖨞";i:10280;s:4:"𖨟";i:10281;s:4:"ð–¨ ";i:10282;s:4:"𖨡";i:10283;s:4:"𖨢";i:10284;s:4:"𖨣";i:10285;s:4:"𖨤";i:10286;s:4:"𖨥";i:10287;s:4:"𖨦";i:10288;s:4:"𖨧";i:10289;s:4:"𖨨";i:10290;s:4:"𖨩";i:10291;s:4:"𖨪";i:10292;s:4:"𖨫";i:10293;s:4:"𖨬";i:10294;s:4:"ð–¨­";i:10295;s:4:"𖨮";i:10296;s:4:"𖨯";i:10297;s:4:"ð–¨°";i:10298;s:4:"𖨱";i:10299;s:4:"𖨲";i:10300;s:4:"𖨳";i:10301;s:4:"ð–¨´";i:10302;s:4:"𖨵";i:10303;s:4:"𖨶";i:10304;s:4:"ð–¨·";i:10305;s:4:"𖨸";i:10306;s:3:"á„€";i:10307;s:3:"á„";i:10308;s:3:"á„‚";i:10309;s:3:"ᄃ";i:10310;s:3:"á„„";i:10311;s:3:"á„…";i:10312;s:3:"ᄆ";i:10313;s:3:"ᄇ";i:10314;s:3:"ᄈ";i:10315;s:3:"ᄉ";i:10316;s:3:"á„Š";i:10317;s:3:"á„‹";i:10318;s:3:"á„Œ";i:10319;s:3:"á„";i:10320;s:3:"á„Ž";i:10321;s:3:"á„";i:10322;s:3:"á„";i:10323;s:3:"á„‘";i:10324;s:3:"á„’";i:10325;s:3:"á„“";i:10326;s:3:"á„”";i:10327;s:3:"á„•";i:10328;s:3:"á„–";i:10329;s:3:"á„—";i:10330;s:3:"ᄘ";i:10331;s:3:"á„™";i:10332;s:3:"á„š";i:10333;s:3:"á„›";i:10334;s:3:"á„œ";i:10335;s:3:"á„";i:10336;s:3:"á„ž";i:10337;s:3:"á„Ÿ";i:10338;s:3:"á„ ";i:10339;s:3:"á„¡";i:10340;s:3:"á„¢";i:10341;s:3:"á„£";i:10342;s:3:"ᄤ";i:10343;s:3:"á„¥";i:10344;s:3:"ᄦ";i:10345;s:3:"ᄧ";i:10346;s:3:"ᄨ";i:10347;s:3:"á„©";i:10348;s:3:"ᄪ";i:10349;s:3:"á„«";i:10350;s:3:"ᄬ";i:10351;s:3:"á„­";i:10352;s:3:"á„®";i:10353;s:3:"ᄯ";i:10354;s:3:"á„°";i:10355;s:3:"ᄱ";i:10356;s:3:"ᄲ";i:10357;s:3:"ᄳ";i:10358;s:3:"á„´";i:10359;s:3:"ᄵ";i:10360;s:3:"ᄶ";i:10361;s:3:"á„·";i:10362;s:3:"ᄸ";i:10363;s:3:"ᄹ";i:10364;s:3:"ᄺ";i:10365;s:3:"á„»";i:10366;s:3:"ᄼ";i:10367;s:3:"ᄽ";i:10368;s:3:"ᄾ";i:10369;s:3:"á„¿";i:10370;s:3:"á…€";i:10371;s:3:"á…";i:10372;s:3:"á…‚";i:10373;s:3:"á…ƒ";i:10374;s:3:"á…„";i:10375;s:3:"á……";i:10376;s:3:"á…†";i:10377;s:3:"á…‡";i:10378;s:3:"á…ˆ";i:10379;s:3:"á…‰";i:10380;s:3:"á…Š";i:10381;s:3:"á…‹";i:10382;s:3:"á…Œ";i:10383;s:3:"á…";i:10384;s:3:"á…Ž";i:10385;s:3:"á…";i:10386;s:3:"á…";i:10387;s:3:"á…‘";i:10388;s:3:"á…’";i:10389;s:3:"á…“";i:10390;s:3:"á…”";i:10391;s:3:"á…•";i:10392;s:3:"á…–";i:10393;s:3:"á…—";i:10394;s:3:"á…˜";i:10395;s:3:"á…™";i:10396;s:3:"á…š";i:10397;s:3:"á…›";i:10398;s:3:"á…œ";i:10399;s:3:"á…";i:10400;s:3:"á…ž";i:10401;s:3:"ꥠ";i:10402;s:3:"ꥡ";i:10403;s:3:"ꥢ";i:10404;s:3:"ꥣ";i:10405;s:3:"ꥤ";i:10406;s:3:"ꥥ";i:10407;s:3:"ꥦ";i:10408;s:3:"ꥧ";i:10409;s:3:"ꥨ";i:10410;s:3:"ꥩ";i:10411;s:3:"ꥪ";i:10412;s:3:"ꥫ";i:10413;s:3:"ꥬ";i:10414;s:3:"ꥭ";i:10415;s:3:"ꥮ";i:10416;s:3:"ꥯ";i:10417;s:3:"ꥰ";i:10418;s:3:"ꥱ";i:10419;s:3:"ꥲ";i:10420;s:3:"ꥳ";i:10421;s:3:"ꥴ";i:10422;s:3:"ꥵ";i:10423;s:3:"ꥶ";i:10424;s:3:"ꥷ";i:10425;s:3:"ꥸ";i:10426;s:3:"ꥹ";i:10427;s:3:"ꥺ";i:10428;s:3:"ꥻ";i:10429;s:3:"ꥼ";i:10430;s:3:"á…Ÿ";i:10431;s:3:"á… ";i:10432;s:3:"á…¡";i:10433;s:3:"á…¢";i:10434;s:3:"á…£";i:10435;s:3:"á…¤";i:10436;s:3:"á…¥";i:10437;s:3:"á…¦";i:10438;s:3:"á…§";i:10439;s:3:"á…¨";i:10440;s:3:"á…©";i:10441;s:3:"á…ª";i:10442;s:3:"á…«";i:10443;s:3:"á…¬";i:10444;s:3:"á…­";i:10445;s:3:"á…®";i:10446;s:3:"á…¯";i:10447;s:3:"á…°";i:10448;s:3:"á…±";i:10449;s:3:"á…²";i:10450;s:3:"á…³";i:10451;s:3:"á…´";i:10452;s:3:"á…µ";i:10453;s:3:"á…¶";i:10454;s:3:"á…·";i:10455;s:3:"á…¸";i:10456;s:3:"á…¹";i:10457;s:3:"á…º";i:10458;s:3:"á…»";i:10459;s:3:"á…¼";i:10460;s:3:"á…½";i:10461;s:3:"á…¾";i:10462;s:3:"á…¿";i:10463;s:3:"ᆀ";i:10464;s:3:"á†";i:10465;s:3:"ᆂ";i:10466;s:3:"ᆃ";i:10467;s:3:"ᆄ";i:10468;s:3:"ᆅ";i:10469;s:3:"ᆆ";i:10470;s:3:"ᆇ";i:10471;s:3:"ᆈ";i:10472;s:3:"ᆉ";i:10473;s:3:"ᆊ";i:10474;s:3:"ᆋ";i:10475;s:3:"ᆌ";i:10476;s:3:"á†";i:10477;s:3:"ᆎ";i:10478;s:3:"á†";i:10479;s:3:"á†";i:10480;s:3:"ᆑ";i:10481;s:3:"ᆒ";i:10482;s:3:"ᆓ";i:10483;s:3:"ᆔ";i:10484;s:3:"ᆕ";i:10485;s:3:"ᆖ";i:10486;s:3:"ᆗ";i:10487;s:3:"ᆘ";i:10488;s:3:"ᆙ";i:10489;s:3:"ᆚ";i:10490;s:3:"ᆛ";i:10491;s:3:"ᆜ";i:10492;s:3:"á†";i:10493;s:3:"ᆞ";i:10494;s:3:"ᆟ";i:10495;s:3:"ᆠ";i:10496;s:3:"ᆡ";i:10497;s:3:"ᆢ";i:10498;s:3:"ᆣ";i:10499;s:3:"ᆤ";i:10500;s:3:"ᆥ";i:10501;s:3:"ᆦ";i:10502;s:3:"ᆧ";i:10503;s:3:"íž°";i:10504;s:3:"íž±";i:10505;s:3:"íž²";i:10506;s:3:"íž³";i:10507;s:3:"íž´";i:10508;s:3:"ížµ";i:10509;s:3:"ힶ";i:10510;s:3:"íž·";i:10511;s:3:"ힸ";i:10512;s:3:"íž¹";i:10513;s:3:"ힺ";i:10514;s:3:"íž»";i:10515;s:3:"íž¼";i:10516;s:3:"íž½";i:10517;s:3:"íž¾";i:10518;s:3:"íž¿";i:10519;s:3:"ퟀ";i:10520;s:3:"íŸ";i:10521;s:3:"ퟂ";i:10522;s:3:"ퟃ";i:10523;s:3:"ퟄ";i:10524;s:3:"ퟅ";i:10525;s:3:"ퟆ";i:10526;s:3:"ᆨ";i:10527;s:3:"ᆩ";i:10528;s:3:"ᆪ";i:10529;s:3:"ᆫ";i:10530;s:3:"ᆬ";i:10531;s:3:"ᆭ";i:10532;s:3:"ᆮ";i:10533;s:3:"ᆯ";i:10534;s:3:"ᆰ";i:10535;s:3:"ᆱ";i:10536;s:3:"ᆲ";i:10537;s:3:"ᆳ";i:10538;s:3:"ᆴ";i:10539;s:3:"ᆵ";i:10540;s:3:"ᆶ";i:10541;s:3:"ᆷ";i:10542;s:3:"ᆸ";i:10543;s:3:"ᆹ";i:10544;s:3:"ᆺ";i:10545;s:3:"ᆻ";i:10546;s:3:"ᆼ";i:10547;s:3:"ᆽ";i:10548;s:3:"ᆾ";i:10549;s:3:"ᆿ";i:10550;s:3:"ᇀ";i:10551;s:3:"á‡";i:10552;s:3:"ᇂ";i:10553;s:3:"ᇃ";i:10554;s:3:"ᇄ";i:10555;s:3:"ᇅ";i:10556;s:3:"ᇆ";i:10557;s:3:"ᇇ";i:10558;s:3:"ᇈ";i:10559;s:3:"ᇉ";i:10560;s:3:"ᇊ";i:10561;s:3:"ᇋ";i:10562;s:3:"ᇌ";i:10563;s:3:"á‡";i:10564;s:3:"ᇎ";i:10565;s:3:"á‡";i:10566;s:3:"á‡";i:10567;s:3:"ᇑ";i:10568;s:3:"ᇒ";i:10569;s:3:"ᇓ";i:10570;s:3:"ᇔ";i:10571;s:3:"ᇕ";i:10572;s:3:"ᇖ";i:10573;s:3:"ᇗ";i:10574;s:3:"ᇘ";i:10575;s:3:"ᇙ";i:10576;s:3:"ᇚ";i:10577;s:3:"ᇛ";i:10578;s:3:"ᇜ";i:10579;s:3:"á‡";i:10580;s:3:"ᇞ";i:10581;s:3:"ᇟ";i:10582;s:3:"ᇠ";i:10583;s:3:"ᇡ";i:10584;s:3:"ᇢ";i:10585;s:3:"ᇣ";i:10586;s:3:"ᇤ";i:10587;s:3:"ᇥ";i:10588;s:3:"ᇦ";i:10589;s:3:"ᇧ";i:10590;s:3:"ᇨ";i:10591;s:3:"ᇩ";i:10592;s:3:"ᇪ";i:10593;s:3:"ᇫ";i:10594;s:3:"ᇬ";i:10595;s:3:"ᇭ";i:10596;s:3:"ᇮ";i:10597;s:3:"ᇯ";i:10598;s:3:"ᇰ";i:10599;s:3:"ᇱ";i:10600;s:3:"ᇲ";i:10601;s:3:"ᇳ";i:10602;s:3:"ᇴ";i:10603;s:3:"ᇵ";i:10604;s:3:"ᇶ";i:10605;s:3:"ᇷ";i:10606;s:3:"ᇸ";i:10607;s:3:"ᇹ";i:10608;s:3:"ᇺ";i:10609;s:3:"ᇻ";i:10610;s:3:"ᇼ";i:10611;s:3:"ᇽ";i:10612;s:3:"ᇾ";i:10613;s:3:"ᇿ";i:10614;s:3:"ퟋ";i:10615;s:3:"ퟌ";i:10616;s:3:"íŸ";i:10617;s:3:"ퟎ";i:10618;s:3:"íŸ";i:10619;s:3:"íŸ";i:10620;s:3:"ퟑ";i:10621;s:3:"ퟒ";i:10622;s:3:"ퟓ";i:10623;s:3:"ퟔ";i:10624;s:3:"ퟕ";i:10625;s:3:"ퟖ";i:10626;s:3:"ퟗ";i:10627;s:3:"ퟘ";i:10628;s:3:"ퟙ";i:10629;s:3:"ퟚ";i:10630;s:3:"ퟛ";i:10631;s:3:"ퟜ";i:10632;s:3:"íŸ";i:10633;s:3:"ퟞ";i:10634;s:3:"ퟟ";i:10635;s:3:"ퟠ";i:10636;s:3:"ퟡ";i:10637;s:3:"ퟢ";i:10638;s:3:"ퟣ";i:10639;s:3:"ퟤ";i:10640;s:3:"ퟥ";i:10641;s:3:"ퟦ";i:10642;s:3:"ퟧ";i:10643;s:3:"ퟨ";i:10644;s:3:"ퟩ";i:10645;s:3:"ퟪ";i:10646;s:3:"ퟫ";i:10647;s:3:"ퟬ";i:10648;s:3:"ퟭ";i:10649;s:3:"ퟮ";i:10650;s:3:"ퟯ";i:10651;s:3:"ퟰ";i:10652;s:3:"ퟱ";i:10653;s:3:"ퟲ";i:10654;s:3:"ퟳ";i:10655;s:3:"ퟴ";i:10656;s:3:"ퟵ";i:10657;s:3:"ퟶ";i:10658;s:3:"ퟷ";i:10659;s:3:"ퟸ";i:10660;s:3:"ퟹ";i:10661;s:3:"ퟺ";i:10662;s:3:"ퟻ";i:10663;s:3:"ã‚";i:10664;s:3:"ã„";i:10665;s:3:"ã†";i:10666;s:4:"𛀀";i:10667;s:3:"ãˆ";i:10668;s:3:"ãŠ";i:10669;s:3:"ã‹";i:10670;s:3:"ã";i:10671;s:3:"ã";i:10672;s:3:"ã‘";i:10673;s:3:"ã“";i:10674;s:3:"ã•";i:10675;s:3:"ã—";i:10676;s:3:"ã™";i:10677;s:3:"ã›";i:10678;s:3:"ã";i:10679;s:3:"ãŸ";i:10680;s:3:"ã¡";i:10681;s:3:"ã¤";i:10682;s:3:"ã¦";i:10683;s:3:"ã¨";i:10684;s:3:"ãª";i:10685;s:3:"ã«";i:10686;s:3:"ã¬";i:10687;s:3:"ã­";i:10688;s:3:"ã®";i:10689;s:3:"ã¯";i:10690;s:3:"ã²";i:10691;s:3:"ãµ";i:10692;s:3:"ã¸";i:10693;s:3:"ã»";i:10694;s:3:"ã¾";i:10695;s:3:"ã¿";i:10696;s:3:"ã‚€";i:10697;s:3:"ã‚";i:10698;s:3:"ã‚‚";i:10699;s:3:"ã‚„";i:10700;s:3:"ゆ";i:10701;s:4:"ð›€";i:10702;s:3:"よ";i:10703;s:3:"ら";i:10704;s:3:"ã‚Š";i:10705;s:3:"ã‚‹";i:10706;s:3:"ã‚Œ";i:10707;s:3:"ã‚";i:10708;s:3:"ã‚";i:10709;s:3:"ã‚";i:10710;s:3:"ã‚‘";i:10711;s:3:"ã‚’";i:10712;s:3:"ã‚“";i:10713;s:3:"ã„…";i:10714;s:3:"ㄆ";i:10715;s:3:"ㄇ";i:10716;s:3:"ㄈ";i:10717;s:3:"ㄪ";i:10718;s:3:"ㄉ";i:10719;s:3:"ã„Š";i:10720;s:3:"ã„‹";i:10721;s:3:"ã„Œ";i:10722;s:3:"ã„";i:10723;s:3:"ã„Ž";i:10724;s:3:"ã„«";i:10725;s:3:"ㆭ";i:10726;s:3:"ã„";i:10727;s:3:"ã„";i:10728;s:3:"ã„‘";i:10729;s:3:"ã„’";i:10730;s:3:"ㄬ";i:10731;s:3:"ã„“";i:10732;s:3:"ã„”";i:10733;s:3:"ã„•";i:10734;s:3:"ã„–";i:10735;s:3:"ã„—";i:10736;s:3:"ㄘ";i:10737;s:3:"ã„™";i:10738;s:3:"ㆸ";i:10739;s:3:"ㆹ";i:10740;s:3:"ㆺ";i:10741;s:3:"ã„š";i:10742;s:3:"ã„›";i:10743;s:3:"ㆦ";i:10744;s:3:"ã„œ";i:10745;s:3:"ã„";i:10746;s:3:"ㆤ";i:10747;s:3:"ã„ž";i:10748;s:3:"ã„Ÿ";i:10749;s:3:"ã„ ";i:10750;s:3:"ã„¡";i:10751;s:3:"ã„¢";i:10752;s:3:"ã„£";i:10753;s:3:"ㄤ";i:10754;s:3:"ㆲ";i:10755;s:3:"ã„¥";i:10756;s:3:"ㆰ";i:10757;s:3:"ㆱ";i:10758;s:3:"ㆬ";i:10759;s:3:"ㄦ";i:10760;s:3:"ㄧ";i:10761;s:3:"ㄨ";i:10762;s:3:"ã„©";i:10763;s:3:"ã„­";i:10764;s:3:"ꀀ";i:10765;s:3:"ê€";i:10766;s:3:"ꀂ";i:10767;s:3:"ꀃ";i:10768;s:3:"ꀄ";i:10769;s:3:"ꀅ";i:10770;s:3:"ꀆ";i:10771;s:3:"ꀇ";i:10772;s:3:"ꀈ";i:10773;s:3:"ꀉ";i:10774;s:3:"ꀊ";i:10775;s:3:"ꀋ";i:10776;s:3:"ꀌ";i:10777;s:3:"ê€";i:10778;s:3:"ꀎ";i:10779;s:3:"ê€";i:10780;s:3:"ê€";i:10781;s:3:"ꀑ";i:10782;s:3:"ꀒ";i:10783;s:3:"ꀓ";i:10784;s:3:"ꀔ";i:10785;s:3:"ꀕ";i:10786;s:3:"ꀖ";i:10787;s:3:"ꀗ";i:10788;s:3:"ꀘ";i:10789;s:3:"ꀙ";i:10790;s:3:"ꀚ";i:10791;s:3:"ꀛ";i:10792;s:3:"ꀜ";i:10793;s:3:"ê€";i:10794;s:3:"ꀞ";i:10795;s:3:"ꀟ";i:10796;s:3:"ꀠ";i:10797;s:3:"ꀡ";i:10798;s:3:"ꀢ";i:10799;s:3:"ꀣ";i:10800;s:3:"ꀤ";i:10801;s:3:"ꀥ";i:10802;s:3:"ꀦ";i:10803;s:3:"ꀧ";i:10804;s:3:"ꀨ";i:10805;s:3:"ꀩ";i:10806;s:3:"ꀪ";i:10807;s:3:"ꀫ";i:10808;s:3:"ꀬ";i:10809;s:3:"ꀭ";i:10810;s:3:"ꀮ";i:10811;s:3:"ꀯ";i:10812;s:3:"ꀰ";i:10813;s:3:"ꀱ";i:10814;s:3:"ꀲ";i:10815;s:3:"ꀳ";i:10816;s:3:"ꀴ";i:10817;s:3:"ꀵ";i:10818;s:3:"ꀶ";i:10819;s:3:"ꀷ";i:10820;s:3:"ꀸ";i:10821;s:3:"ꀹ";i:10822;s:3:"ꀺ";i:10823;s:3:"ꀻ";i:10824;s:3:"ꀼ";i:10825;s:3:"ꀽ";i:10826;s:3:"ꀾ";i:10827;s:3:"ꀿ";i:10828;s:3:"ê€";i:10829;s:3:"ê";i:10830;s:3:"ê‚";i:10831;s:3:"êƒ";i:10832;s:3:"ê„";i:10833;s:3:"ê…";i:10834;s:3:"ê†";i:10835;s:3:"ê‡";i:10836;s:3:"êˆ";i:10837;s:3:"ê‰";i:10838;s:3:"êŠ";i:10839;s:3:"ê‹";i:10840;s:3:"êŒ";i:10841;s:3:"ê";i:10842;s:3:"êŽ";i:10843;s:3:"ê";i:10844;s:3:"ê";i:10845;s:3:"ê‘";i:10846;s:3:"ê’";i:10847;s:3:"ê“";i:10848;s:3:"ê”";i:10849;s:3:"ê•";i:10850;s:3:"ê–";i:10851;s:3:"ê—";i:10852;s:3:"ê˜";i:10853;s:3:"ê™";i:10854;s:3:"êš";i:10855;s:3:"ê›";i:10856;s:3:"êœ";i:10857;s:3:"ê";i:10858;s:3:"êž";i:10859;s:3:"êŸ";i:10860;s:3:"ê ";i:10861;s:3:"ê¡";i:10862;s:3:"ê¢";i:10863;s:3:"ê£";i:10864;s:3:"ê¤";i:10865;s:3:"ê¥";i:10866;s:3:"ê¦";i:10867;s:3:"ê§";i:10868;s:3:"ê¨";i:10869;s:3:"ê©";i:10870;s:3:"êª";i:10871;s:3:"ê«";i:10872;s:3:"ê¬";i:10873;s:3:"ê­";i:10874;s:3:"ê®";i:10875;s:3:"ê¯";i:10876;s:3:"ê°";i:10877;s:3:"ê±";i:10878;s:3:"ê²";i:10879;s:3:"ê³";i:10880;s:3:"ê´";i:10881;s:3:"êµ";i:10882;s:3:"ê¶";i:10883;s:3:"ê·";i:10884;s:3:"ê¸";i:10885;s:3:"ê¹";i:10886;s:3:"êº";i:10887;s:3:"ê»";i:10888;s:3:"ê¼";i:10889;s:3:"ê½";i:10890;s:3:"ê¾";i:10891;s:3:"ê¿";i:10892;s:3:"ê‚€";i:10893;s:3:"ê‚";i:10894;s:3:"ê‚‚";i:10895;s:3:"ꂃ";i:10896;s:3:"ê‚„";i:10897;s:3:"ê‚…";i:10898;s:3:"ꂆ";i:10899;s:3:"ꂇ";i:10900;s:3:"ꂈ";i:10901;s:3:"ꂉ";i:10902;s:3:"ê‚Š";i:10903;s:3:"ê‚‹";i:10904;s:3:"ê‚Œ";i:10905;s:3:"ê‚";i:10906;s:3:"ê‚Ž";i:10907;s:3:"ê‚";i:10908;s:3:"ê‚";i:10909;s:3:"ê‚‘";i:10910;s:3:"ê‚’";i:10911;s:3:"ê‚“";i:10912;s:3:"ê‚”";i:10913;s:3:"ê‚•";i:10914;s:3:"ê‚–";i:10915;s:3:"ê‚—";i:10916;s:3:"ꂘ";i:10917;s:3:"ê‚™";i:10918;s:3:"ê‚š";i:10919;s:3:"ê‚›";i:10920;s:3:"ê‚œ";i:10921;s:3:"ê‚";i:10922;s:3:"ê‚ž";i:10923;s:3:"ê‚Ÿ";i:10924;s:3:"ê‚ ";i:10925;s:3:"ê‚¡";i:10926;s:3:"ê‚¢";i:10927;s:3:"ê‚£";i:10928;s:3:"ꂤ";i:10929;s:3:"ê‚¥";i:10930;s:3:"ꂦ";i:10931;s:3:"ꂧ";i:10932;s:3:"ꂨ";i:10933;s:3:"ê‚©";i:10934;s:3:"ꂪ";i:10935;s:3:"ê‚«";i:10936;s:3:"ꂬ";i:10937;s:3:"ê‚­";i:10938;s:3:"ê‚®";i:10939;s:3:"ꂯ";i:10940;s:3:"ê‚°";i:10941;s:3:"ꂱ";i:10942;s:3:"ꂲ";i:10943;s:3:"ꂳ";i:10944;s:3:"ê‚´";i:10945;s:3:"ꂵ";i:10946;s:3:"ꂶ";i:10947;s:3:"ê‚·";i:10948;s:3:"ꂸ";i:10949;s:3:"ꂹ";i:10950;s:3:"ꂺ";i:10951;s:3:"ê‚»";i:10952;s:3:"ꂼ";i:10953;s:3:"ꂽ";i:10954;s:3:"ꂾ";i:10955;s:3:"ê‚¿";i:10956;s:3:"ꃀ";i:10957;s:3:"êƒ";i:10958;s:3:"ꃂ";i:10959;s:3:"ꃃ";i:10960;s:3:"ꃄ";i:10961;s:3:"ꃅ";i:10962;s:3:"ꃆ";i:10963;s:3:"ꃇ";i:10964;s:3:"ꃈ";i:10965;s:3:"ꃉ";i:10966;s:3:"ꃊ";i:10967;s:3:"ꃋ";i:10968;s:3:"ꃌ";i:10969;s:3:"êƒ";i:10970;s:3:"ꃎ";i:10971;s:3:"êƒ";i:10972;s:3:"êƒ";i:10973;s:3:"ꃑ";i:10974;s:3:"ꃒ";i:10975;s:3:"ꃓ";i:10976;s:3:"ꃔ";i:10977;s:3:"ꃕ";i:10978;s:3:"ꃖ";i:10979;s:3:"ꃗ";i:10980;s:3:"ꃘ";i:10981;s:3:"ꃙ";i:10982;s:3:"ꃚ";i:10983;s:3:"ꃛ";i:10984;s:3:"ꃜ";i:10985;s:3:"êƒ";i:10986;s:3:"ꃞ";i:10987;s:3:"ꃟ";i:10988;s:3:"ꃠ";i:10989;s:3:"ꃡ";i:10990;s:3:"ꃢ";i:10991;s:3:"ꃣ";i:10992;s:3:"ꃤ";i:10993;s:3:"ꃥ";i:10994;s:3:"ꃦ";i:10995;s:3:"ꃧ";i:10996;s:3:"ꃨ";i:10997;s:3:"ꃩ";i:10998;s:3:"ꃪ";i:10999;s:3:"ꃫ";i:11000;s:3:"ꃬ";i:11001;s:3:"ꃭ";i:11002;s:3:"ꃮ";i:11003;s:3:"ꃯ";i:11004;s:3:"ꃰ";i:11005;s:3:"ꃱ";i:11006;s:3:"ꃲ";i:11007;s:3:"ꃳ";i:11008;s:3:"ꃴ";i:11009;s:3:"ꃵ";i:11010;s:3:"ꃶ";i:11011;s:3:"ꃷ";i:11012;s:3:"ꃸ";i:11013;s:3:"ꃹ";i:11014;s:3:"ꃺ";i:11015;s:3:"ꃻ";i:11016;s:3:"ꃼ";i:11017;s:3:"ꃽ";i:11018;s:3:"ꃾ";i:11019;s:3:"ꃿ";i:11020;s:3:"ê„€";i:11021;s:3:"ê„";i:11022;s:3:"ê„‚";i:11023;s:3:"ꄃ";i:11024;s:3:"ê„„";i:11025;s:3:"ê„…";i:11026;s:3:"ꄆ";i:11027;s:3:"ꄇ";i:11028;s:3:"ꄈ";i:11029;s:3:"ꄉ";i:11030;s:3:"ê„Š";i:11031;s:3:"ê„‹";i:11032;s:3:"ê„Œ";i:11033;s:3:"ê„";i:11034;s:3:"ê„Ž";i:11035;s:3:"ê„";i:11036;s:3:"ê„";i:11037;s:3:"ê„‘";i:11038;s:3:"ê„’";i:11039;s:3:"ê„“";i:11040;s:3:"ê„”";i:11041;s:3:"ê„•";i:11042;s:3:"ê„–";i:11043;s:3:"ê„—";i:11044;s:3:"ꄘ";i:11045;s:3:"ê„™";i:11046;s:3:"ê„š";i:11047;s:3:"ê„›";i:11048;s:3:"ê„œ";i:11049;s:3:"ê„";i:11050;s:3:"ê„ž";i:11051;s:3:"ê„Ÿ";i:11052;s:3:"ê„ ";i:11053;s:3:"ê„¡";i:11054;s:3:"ê„¢";i:11055;s:3:"ê„£";i:11056;s:3:"ꄤ";i:11057;s:3:"ê„¥";i:11058;s:3:"ꄦ";i:11059;s:3:"ꄧ";i:11060;s:3:"ꄨ";i:11061;s:3:"ê„©";i:11062;s:3:"ꄪ";i:11063;s:3:"ê„«";i:11064;s:3:"ꄬ";i:11065;s:3:"ê„­";i:11066;s:3:"ê„®";i:11067;s:3:"ꄯ";i:11068;s:3:"ê„°";i:11069;s:3:"ꄱ";i:11070;s:3:"ꄲ";i:11071;s:3:"ꄳ";i:11072;s:3:"ê„´";i:11073;s:3:"ꄵ";i:11074;s:3:"ꄶ";i:11075;s:3:"ê„·";i:11076;s:3:"ꄸ";i:11077;s:3:"ꄹ";i:11078;s:3:"ꄺ";i:11079;s:3:"ê„»";i:11080;s:3:"ꄼ";i:11081;s:3:"ꄽ";i:11082;s:3:"ꄾ";i:11083;s:3:"ê„¿";i:11084;s:3:"ê…€";i:11085;s:3:"ê…";i:11086;s:3:"ê…‚";i:11087;s:3:"ê…ƒ";i:11088;s:3:"ê…„";i:11089;s:3:"ê……";i:11090;s:3:"ê…†";i:11091;s:3:"ê…‡";i:11092;s:3:"ê…ˆ";i:11093;s:3:"ê…‰";i:11094;s:3:"ê…Š";i:11095;s:3:"ê…‹";i:11096;s:3:"ê…Œ";i:11097;s:3:"ê…";i:11098;s:3:"ê…Ž";i:11099;s:3:"ê…";i:11100;s:3:"ê…";i:11101;s:3:"ê…‘";i:11102;s:3:"ê…’";i:11103;s:3:"ê…“";i:11104;s:3:"ê…”";i:11105;s:3:"ê…•";i:11106;s:3:"ê…–";i:11107;s:3:"ê…—";i:11108;s:3:"ê…˜";i:11109;s:3:"ê…™";i:11110;s:3:"ê…š";i:11111;s:3:"ê…›";i:11112;s:3:"ê…œ";i:11113;s:3:"ê…";i:11114;s:3:"ê…ž";i:11115;s:3:"ê…Ÿ";i:11116;s:3:"ê… ";i:11117;s:3:"ê…¡";i:11118;s:3:"ê…¢";i:11119;s:3:"ê…£";i:11120;s:3:"ê…¤";i:11121;s:3:"ê…¥";i:11122;s:3:"ê…¦";i:11123;s:3:"ê…§";i:11124;s:3:"ê…¨";i:11125;s:3:"ê…©";i:11126;s:3:"ê…ª";i:11127;s:3:"ê…«";i:11128;s:3:"ê…¬";i:11129;s:3:"ê…­";i:11130;s:3:"ê…®";i:11131;s:3:"ê…¯";i:11132;s:3:"ê…°";i:11133;s:3:"ê…±";i:11134;s:3:"ê…²";i:11135;s:3:"ê…³";i:11136;s:3:"ê…´";i:11137;s:3:"ê…µ";i:11138;s:3:"ê…¶";i:11139;s:3:"ê…·";i:11140;s:3:"ê…¸";i:11141;s:3:"ê…¹";i:11142;s:3:"ê…º";i:11143;s:3:"ê…»";i:11144;s:3:"ê…¼";i:11145;s:3:"ê…½";i:11146;s:3:"ê…¾";i:11147;s:3:"ê…¿";i:11148;s:3:"ꆀ";i:11149;s:3:"ê†";i:11150;s:3:"ꆂ";i:11151;s:3:"ꆃ";i:11152;s:3:"ꆄ";i:11153;s:3:"ꆅ";i:11154;s:3:"ꆆ";i:11155;s:3:"ꆇ";i:11156;s:3:"ꆈ";i:11157;s:3:"ꆉ";i:11158;s:3:"ꆊ";i:11159;s:3:"ꆋ";i:11160;s:3:"ꆌ";i:11161;s:3:"ê†";i:11162;s:3:"ꆎ";i:11163;s:3:"ê†";i:11164;s:3:"ê†";i:11165;s:3:"ꆑ";i:11166;s:3:"ꆒ";i:11167;s:3:"ꆓ";i:11168;s:3:"ꆔ";i:11169;s:3:"ꆕ";i:11170;s:3:"ꆖ";i:11171;s:3:"ꆗ";i:11172;s:3:"ꆘ";i:11173;s:3:"ꆙ";i:11174;s:3:"ꆚ";i:11175;s:3:"ꆛ";i:11176;s:3:"ꆜ";i:11177;s:3:"ê†";i:11178;s:3:"ꆞ";i:11179;s:3:"ꆟ";i:11180;s:3:"ꆠ";i:11181;s:3:"ꆡ";i:11182;s:3:"ꆢ";i:11183;s:3:"ꆣ";i:11184;s:3:"ꆤ";i:11185;s:3:"ꆥ";i:11186;s:3:"ꆦ";i:11187;s:3:"ꆧ";i:11188;s:3:"ꆨ";i:11189;s:3:"ꆩ";i:11190;s:3:"ꆪ";i:11191;s:3:"ꆫ";i:11192;s:3:"ꆬ";i:11193;s:3:"ꆭ";i:11194;s:3:"ꆮ";i:11195;s:3:"ꆯ";i:11196;s:3:"ꆰ";i:11197;s:3:"ꆱ";i:11198;s:3:"ꆲ";i:11199;s:3:"ꆳ";i:11200;s:3:"ꆴ";i:11201;s:3:"ꆵ";i:11202;s:3:"ꆶ";i:11203;s:3:"ꆷ";i:11204;s:3:"ꆸ";i:11205;s:3:"ꆹ";i:11206;s:3:"ꆺ";i:11207;s:3:"ꆻ";i:11208;s:3:"ꆼ";i:11209;s:3:"ꆽ";i:11210;s:3:"ꆾ";i:11211;s:3:"ꆿ";i:11212;s:3:"ꇀ";i:11213;s:3:"ê‡";i:11214;s:3:"ꇂ";i:11215;s:3:"ꇃ";i:11216;s:3:"ꇄ";i:11217;s:3:"ꇅ";i:11218;s:3:"ꇆ";i:11219;s:3:"ꇇ";i:11220;s:3:"ꇈ";i:11221;s:3:"ꇉ";i:11222;s:3:"ꇊ";i:11223;s:3:"ꇋ";i:11224;s:3:"ꇌ";i:11225;s:3:"ê‡";i:11226;s:3:"ꇎ";i:11227;s:3:"ê‡";i:11228;s:3:"ê‡";i:11229;s:3:"ꇑ";i:11230;s:3:"ꇒ";i:11231;s:3:"ꇓ";i:11232;s:3:"ꇔ";i:11233;s:3:"ꇕ";i:11234;s:3:"ꇖ";i:11235;s:3:"ꇗ";i:11236;s:3:"ꇘ";i:11237;s:3:"ꇙ";i:11238;s:3:"ꇚ";i:11239;s:3:"ꇛ";i:11240;s:3:"ꇜ";i:11241;s:3:"ê‡";i:11242;s:3:"ꇞ";i:11243;s:3:"ꇟ";i:11244;s:3:"ꇠ";i:11245;s:3:"ꇡ";i:11246;s:3:"ꇢ";i:11247;s:3:"ꇣ";i:11248;s:3:"ꇤ";i:11249;s:3:"ꇥ";i:11250;s:3:"ꇦ";i:11251;s:3:"ꇧ";i:11252;s:3:"ꇨ";i:11253;s:3:"ꇩ";i:11254;s:3:"ꇪ";i:11255;s:3:"ꇫ";i:11256;s:3:"ꇬ";i:11257;s:3:"ꇭ";i:11258;s:3:"ꇮ";i:11259;s:3:"ꇯ";i:11260;s:3:"ꇰ";i:11261;s:3:"ꇱ";i:11262;s:3:"ꇲ";i:11263;s:3:"ꇳ";i:11264;s:3:"ꇴ";i:11265;s:3:"ꇵ";i:11266;s:3:"ꇶ";i:11267;s:3:"ꇷ";i:11268;s:3:"ꇸ";i:11269;s:3:"ꇹ";i:11270;s:3:"ꇺ";i:11271;s:3:"ꇻ";i:11272;s:3:"ꇼ";i:11273;s:3:"ꇽ";i:11274;s:3:"ꇾ";i:11275;s:3:"ꇿ";i:11276;s:3:"ꈀ";i:11277;s:3:"êˆ";i:11278;s:3:"ꈂ";i:11279;s:3:"ꈃ";i:11280;s:3:"ꈄ";i:11281;s:3:"ꈅ";i:11282;s:3:"ꈆ";i:11283;s:3:"ꈇ";i:11284;s:3:"ꈈ";i:11285;s:3:"ꈉ";i:11286;s:3:"ꈊ";i:11287;s:3:"ꈋ";i:11288;s:3:"ꈌ";i:11289;s:3:"êˆ";i:11290;s:3:"ꈎ";i:11291;s:3:"êˆ";i:11292;s:3:"êˆ";i:11293;s:3:"ꈑ";i:11294;s:3:"ꈒ";i:11295;s:3:"ꈓ";i:11296;s:3:"ꈔ";i:11297;s:3:"ꈕ";i:11298;s:3:"ꈖ";i:11299;s:3:"ꈗ";i:11300;s:3:"ꈘ";i:11301;s:3:"ꈙ";i:11302;s:3:"ꈚ";i:11303;s:3:"ꈛ";i:11304;s:3:"ꈜ";i:11305;s:3:"êˆ";i:11306;s:3:"ꈞ";i:11307;s:3:"ꈟ";i:11308;s:3:"ꈠ";i:11309;s:3:"ꈡ";i:11310;s:3:"ꈢ";i:11311;s:3:"ꈣ";i:11312;s:3:"ꈤ";i:11313;s:3:"ꈥ";i:11314;s:3:"ꈦ";i:11315;s:3:"ꈧ";i:11316;s:3:"ꈨ";i:11317;s:3:"ꈩ";i:11318;s:3:"ꈪ";i:11319;s:3:"ꈫ";i:11320;s:3:"ꈬ";i:11321;s:3:"ꈭ";i:11322;s:3:"ꈮ";i:11323;s:3:"ꈯ";i:11324;s:3:"ꈰ";i:11325;s:3:"ꈱ";i:11326;s:3:"ꈲ";i:11327;s:3:"ꈳ";i:11328;s:3:"ꈴ";i:11329;s:3:"ꈵ";i:11330;s:3:"ꈶ";i:11331;s:3:"ꈷ";i:11332;s:3:"ꈸ";i:11333;s:3:"ꈹ";i:11334;s:3:"ꈺ";i:11335;s:3:"ꈻ";i:11336;s:3:"ꈼ";i:11337;s:3:"ꈽ";i:11338;s:3:"ꈾ";i:11339;s:3:"ꈿ";i:11340;s:3:"ꉀ";i:11341;s:3:"ê‰";i:11342;s:3:"ꉂ";i:11343;s:3:"ꉃ";i:11344;s:3:"ꉄ";i:11345;s:3:"ꉅ";i:11346;s:3:"ꉆ";i:11347;s:3:"ꉇ";i:11348;s:3:"ꉈ";i:11349;s:3:"ꉉ";i:11350;s:3:"ꉊ";i:11351;s:3:"ꉋ";i:11352;s:3:"ꉌ";i:11353;s:3:"ê‰";i:11354;s:3:"ꉎ";i:11355;s:3:"ê‰";i:11356;s:3:"ê‰";i:11357;s:3:"ꉑ";i:11358;s:3:"ꉒ";i:11359;s:3:"ꉓ";i:11360;s:3:"ꉔ";i:11361;s:3:"ꉕ";i:11362;s:3:"ꉖ";i:11363;s:3:"ꉗ";i:11364;s:3:"ꉘ";i:11365;s:3:"ꉙ";i:11366;s:3:"ꉚ";i:11367;s:3:"ꉛ";i:11368;s:3:"ꉜ";i:11369;s:3:"ê‰";i:11370;s:3:"ꉞ";i:11371;s:3:"ꉟ";i:11372;s:3:"ꉠ";i:11373;s:3:"ꉡ";i:11374;s:3:"ꉢ";i:11375;s:3:"ꉣ";i:11376;s:3:"ꉤ";i:11377;s:3:"ꉥ";i:11378;s:3:"ꉦ";i:11379;s:3:"ꉧ";i:11380;s:3:"ꉨ";i:11381;s:3:"ꉩ";i:11382;s:3:"ꉪ";i:11383;s:3:"ꉫ";i:11384;s:3:"ꉬ";i:11385;s:3:"ꉭ";i:11386;s:3:"ꉮ";i:11387;s:3:"ꉯ";i:11388;s:3:"ꉰ";i:11389;s:3:"ꉱ";i:11390;s:3:"ꉲ";i:11391;s:3:"ꉳ";i:11392;s:3:"ꉴ";i:11393;s:3:"ꉵ";i:11394;s:3:"ꉶ";i:11395;s:3:"ꉷ";i:11396;s:3:"ꉸ";i:11397;s:3:"ꉹ";i:11398;s:3:"ꉺ";i:11399;s:3:"ꉻ";i:11400;s:3:"ꉼ";i:11401;s:3:"ꉽ";i:11402;s:3:"ꉾ";i:11403;s:3:"ꉿ";i:11404;s:3:"ꊀ";i:11405;s:3:"êŠ";i:11406;s:3:"ꊂ";i:11407;s:3:"ꊃ";i:11408;s:3:"ꊄ";i:11409;s:3:"ꊅ";i:11410;s:3:"ꊆ";i:11411;s:3:"ꊇ";i:11412;s:3:"ꊈ";i:11413;s:3:"ꊉ";i:11414;s:3:"ꊊ";i:11415;s:3:"ꊋ";i:11416;s:3:"ꊌ";i:11417;s:3:"êŠ";i:11418;s:3:"ꊎ";i:11419;s:3:"êŠ";i:11420;s:3:"êŠ";i:11421;s:3:"ꊑ";i:11422;s:3:"ꊒ";i:11423;s:3:"ꊓ";i:11424;s:3:"ꊔ";i:11425;s:3:"ꊕ";i:11426;s:3:"ꊖ";i:11427;s:3:"ꊗ";i:11428;s:3:"ꊘ";i:11429;s:3:"ꊙ";i:11430;s:3:"ꊚ";i:11431;s:3:"ꊛ";i:11432;s:3:"ꊜ";i:11433;s:3:"êŠ";i:11434;s:3:"ꊞ";i:11435;s:3:"ꊟ";i:11436;s:3:"ꊠ";i:11437;s:3:"ꊡ";i:11438;s:3:"ꊢ";i:11439;s:3:"ꊣ";i:11440;s:3:"ꊤ";i:11441;s:3:"ꊥ";i:11442;s:3:"ꊦ";i:11443;s:3:"ꊧ";i:11444;s:3:"ꊨ";i:11445;s:3:"ꊩ";i:11446;s:3:"ꊪ";i:11447;s:3:"ꊫ";i:11448;s:3:"ꊬ";i:11449;s:3:"ꊭ";i:11450;s:3:"ꊮ";i:11451;s:3:"ꊯ";i:11452;s:3:"ꊰ";i:11453;s:3:"ꊱ";i:11454;s:3:"ꊲ";i:11455;s:3:"ꊳ";i:11456;s:3:"ꊴ";i:11457;s:3:"ꊵ";i:11458;s:3:"ꊶ";i:11459;s:3:"ꊷ";i:11460;s:3:"ꊸ";i:11461;s:3:"ꊹ";i:11462;s:3:"ꊺ";i:11463;s:3:"ꊻ";i:11464;s:3:"ꊼ";i:11465;s:3:"ꊽ";i:11466;s:3:"ꊾ";i:11467;s:3:"ꊿ";i:11468;s:3:"ê‹€";i:11469;s:3:"ê‹";i:11470;s:3:"ê‹‚";i:11471;s:3:"ꋃ";i:11472;s:3:"ê‹„";i:11473;s:3:"ê‹…";i:11474;s:3:"ꋆ";i:11475;s:3:"ꋇ";i:11476;s:3:"ꋈ";i:11477;s:3:"ꋉ";i:11478;s:3:"ê‹Š";i:11479;s:3:"ê‹‹";i:11480;s:3:"ê‹Œ";i:11481;s:3:"ê‹";i:11482;s:3:"ê‹Ž";i:11483;s:3:"ê‹";i:11484;s:3:"ê‹";i:11485;s:3:"ê‹‘";i:11486;s:3:"ê‹’";i:11487;s:3:"ê‹“";i:11488;s:3:"ê‹”";i:11489;s:3:"ê‹•";i:11490;s:3:"ê‹–";i:11491;s:3:"ê‹—";i:11492;s:3:"ꋘ";i:11493;s:3:"ê‹™";i:11494;s:3:"ê‹š";i:11495;s:3:"ê‹›";i:11496;s:3:"ê‹œ";i:11497;s:3:"ê‹";i:11498;s:3:"ê‹ž";i:11499;s:3:"ê‹Ÿ";i:11500;s:3:"ê‹ ";i:11501;s:3:"ê‹¡";i:11502;s:3:"ê‹¢";i:11503;s:3:"ê‹£";i:11504;s:3:"ꋤ";i:11505;s:3:"ê‹¥";i:11506;s:3:"ꋦ";i:11507;s:3:"ꋧ";i:11508;s:3:"ꋨ";i:11509;s:3:"ê‹©";i:11510;s:3:"ꋪ";i:11511;s:3:"ê‹«";i:11512;s:3:"ꋬ";i:11513;s:3:"ê‹­";i:11514;s:3:"ê‹®";i:11515;s:3:"ꋯ";i:11516;s:3:"ê‹°";i:11517;s:3:"ꋱ";i:11518;s:3:"ꋲ";i:11519;s:3:"ꋳ";i:11520;s:3:"ê‹´";i:11521;s:3:"ꋵ";i:11522;s:3:"ꋶ";i:11523;s:3:"ê‹·";i:11524;s:3:"ꋸ";i:11525;s:3:"ꋹ";i:11526;s:3:"ꋺ";i:11527;s:3:"ê‹»";i:11528;s:3:"ꋼ";i:11529;s:3:"ꋽ";i:11530;s:3:"ꋾ";i:11531;s:3:"ê‹¿";i:11532;s:3:"ꌀ";i:11533;s:3:"êŒ";i:11534;s:3:"ꌂ";i:11535;s:3:"ꌃ";i:11536;s:3:"ꌄ";i:11537;s:3:"ꌅ";i:11538;s:3:"ꌆ";i:11539;s:3:"ꌇ";i:11540;s:3:"ꌈ";i:11541;s:3:"ꌉ";i:11542;s:3:"ꌊ";i:11543;s:3:"ꌋ";i:11544;s:3:"ꌌ";i:11545;s:3:"êŒ";i:11546;s:3:"ꌎ";i:11547;s:3:"êŒ";i:11548;s:3:"êŒ";i:11549;s:3:"ꌑ";i:11550;s:3:"ꌒ";i:11551;s:3:"ꌓ";i:11552;s:3:"ꌔ";i:11553;s:3:"ꌕ";i:11554;s:3:"ꌖ";i:11555;s:3:"ꌗ";i:11556;s:3:"ꌘ";i:11557;s:3:"ꌙ";i:11558;s:3:"ꌚ";i:11559;s:3:"ꌛ";i:11560;s:3:"ꌜ";i:11561;s:3:"êŒ";i:11562;s:3:"ꌞ";i:11563;s:3:"ꌟ";i:11564;s:3:"ꌠ";i:11565;s:3:"ꌡ";i:11566;s:3:"ꌢ";i:11567;s:3:"ꌣ";i:11568;s:3:"ꌤ";i:11569;s:3:"ꌥ";i:11570;s:3:"ꌦ";i:11571;s:3:"ꌧ";i:11572;s:3:"ꌨ";i:11573;s:3:"ꌩ";i:11574;s:3:"ꌪ";i:11575;s:3:"ꌫ";i:11576;s:3:"ꌬ";i:11577;s:3:"ꌭ";i:11578;s:3:"ꌮ";i:11579;s:3:"ꌯ";i:11580;s:3:"ꌰ";i:11581;s:3:"ꌱ";i:11582;s:3:"ꌲ";i:11583;s:3:"ꌳ";i:11584;s:3:"ꌴ";i:11585;s:3:"ꌵ";i:11586;s:3:"ꌶ";i:11587;s:3:"ꌷ";i:11588;s:3:"ꌸ";i:11589;s:3:"ꌹ";i:11590;s:3:"ꌺ";i:11591;s:3:"ꌻ";i:11592;s:3:"ꌼ";i:11593;s:3:"ꌽ";i:11594;s:3:"ꌾ";i:11595;s:3:"ꌿ";i:11596;s:3:"ê€";i:11597;s:3:"ê";i:11598;s:3:"ê‚";i:11599;s:3:"êƒ";i:11600;s:3:"ê„";i:11601;s:3:"ê…";i:11602;s:3:"ê†";i:11603;s:3:"ê‡";i:11604;s:3:"êˆ";i:11605;s:3:"ê‰";i:11606;s:3:"êŠ";i:11607;s:3:"ê‹";i:11608;s:3:"êŒ";i:11609;s:3:"ê";i:11610;s:3:"êŽ";i:11611;s:3:"ê";i:11612;s:3:"ê";i:11613;s:3:"ê‘";i:11614;s:3:"ê’";i:11615;s:3:"ê“";i:11616;s:3:"ê”";i:11617;s:3:"ê•";i:11618;s:3:"ê–";i:11619;s:3:"ê—";i:11620;s:3:"ê˜";i:11621;s:3:"ê™";i:11622;s:3:"êš";i:11623;s:3:"ê›";i:11624;s:3:"êœ";i:11625;s:3:"ê";i:11626;s:3:"êž";i:11627;s:3:"êŸ";i:11628;s:3:"ê ";i:11629;s:3:"ê¡";i:11630;s:3:"ê¢";i:11631;s:3:"ê£";i:11632;s:3:"ê¤";i:11633;s:3:"ê¥";i:11634;s:3:"ê¦";i:11635;s:3:"ê§";i:11636;s:3:"ê¨";i:11637;s:3:"ê©";i:11638;s:3:"êª";i:11639;s:3:"ê«";i:11640;s:3:"ê¬";i:11641;s:3:"ê­";i:11642;s:3:"ê®";i:11643;s:3:"ê¯";i:11644;s:3:"ê°";i:11645;s:3:"ê±";i:11646;s:3:"ê²";i:11647;s:3:"ê³";i:11648;s:3:"ê´";i:11649;s:3:"êµ";i:11650;s:3:"ê¶";i:11651;s:3:"ê·";i:11652;s:3:"ê¸";i:11653;s:3:"ê¹";i:11654;s:3:"êº";i:11655;s:3:"ê»";i:11656;s:3:"ê¼";i:11657;s:3:"ê½";i:11658;s:3:"ê¾";i:11659;s:3:"ê¿";i:11660;s:3:"ꎀ";i:11661;s:3:"êŽ";i:11662;s:3:"ꎂ";i:11663;s:3:"ꎃ";i:11664;s:3:"ꎄ";i:11665;s:3:"ꎅ";i:11666;s:3:"ꎆ";i:11667;s:3:"ꎇ";i:11668;s:3:"ꎈ";i:11669;s:3:"ꎉ";i:11670;s:3:"ꎊ";i:11671;s:3:"ꎋ";i:11672;s:3:"ꎌ";i:11673;s:3:"êŽ";i:11674;s:3:"ꎎ";i:11675;s:3:"êŽ";i:11676;s:3:"êŽ";i:11677;s:3:"ꎑ";i:11678;s:3:"ꎒ";i:11679;s:3:"ꎓ";i:11680;s:3:"ꎔ";i:11681;s:3:"ꎕ";i:11682;s:3:"ꎖ";i:11683;s:3:"ꎗ";i:11684;s:3:"ꎘ";i:11685;s:3:"ꎙ";i:11686;s:3:"ꎚ";i:11687;s:3:"ꎛ";i:11688;s:3:"ꎜ";i:11689;s:3:"êŽ";i:11690;s:3:"ꎞ";i:11691;s:3:"ꎟ";i:11692;s:3:"ꎠ";i:11693;s:3:"ꎡ";i:11694;s:3:"ꎢ";i:11695;s:3:"ꎣ";i:11696;s:3:"ꎤ";i:11697;s:3:"ꎥ";i:11698;s:3:"ꎦ";i:11699;s:3:"ꎧ";i:11700;s:3:"ꎨ";i:11701;s:3:"ꎩ";i:11702;s:3:"ꎪ";i:11703;s:3:"ꎫ";i:11704;s:3:"ꎬ";i:11705;s:3:"ꎭ";i:11706;s:3:"ꎮ";i:11707;s:3:"ꎯ";i:11708;s:3:"ꎰ";i:11709;s:3:"ꎱ";i:11710;s:3:"ꎲ";i:11711;s:3:"ꎳ";i:11712;s:3:"ꎴ";i:11713;s:3:"ꎵ";i:11714;s:3:"ꎶ";i:11715;s:3:"ꎷ";i:11716;s:3:"ꎸ";i:11717;s:3:"ꎹ";i:11718;s:3:"ꎺ";i:11719;s:3:"ꎻ";i:11720;s:3:"ꎼ";i:11721;s:3:"ꎽ";i:11722;s:3:"ꎾ";i:11723;s:3:"ꎿ";i:11724;s:3:"ê€";i:11725;s:3:"ê";i:11726;s:3:"ê‚";i:11727;s:3:"êƒ";i:11728;s:3:"ê„";i:11729;s:3:"ê…";i:11730;s:3:"ê†";i:11731;s:3:"ê‡";i:11732;s:3:"êˆ";i:11733;s:3:"ê‰";i:11734;s:3:"êŠ";i:11735;s:3:"ê‹";i:11736;s:3:"êŒ";i:11737;s:3:"ê";i:11738;s:3:"êŽ";i:11739;s:3:"ê";i:11740;s:3:"ê";i:11741;s:3:"ê‘";i:11742;s:3:"ê’";i:11743;s:3:"ê“";i:11744;s:3:"ê”";i:11745;s:3:"ê•";i:11746;s:3:"ê–";i:11747;s:3:"ê—";i:11748;s:3:"ê˜";i:11749;s:3:"ê™";i:11750;s:3:"êš";i:11751;s:3:"ê›";i:11752;s:3:"êœ";i:11753;s:3:"ê";i:11754;s:3:"êž";i:11755;s:3:"êŸ";i:11756;s:3:"ê ";i:11757;s:3:"ê¡";i:11758;s:3:"ê¢";i:11759;s:3:"ê£";i:11760;s:3:"ê¤";i:11761;s:3:"ê¥";i:11762;s:3:"ê¦";i:11763;s:3:"ê§";i:11764;s:3:"ê¨";i:11765;s:3:"ê©";i:11766;s:3:"êª";i:11767;s:3:"ê«";i:11768;s:3:"ê¬";i:11769;s:3:"ê­";i:11770;s:3:"ê®";i:11771;s:3:"ê¯";i:11772;s:3:"ê°";i:11773;s:3:"ê±";i:11774;s:3:"ê²";i:11775;s:3:"ê³";i:11776;s:3:"ê´";i:11777;s:3:"êµ";i:11778;s:3:"ê¶";i:11779;s:3:"ê·";i:11780;s:3:"ê¸";i:11781;s:3:"ê¹";i:11782;s:3:"êº";i:11783;s:3:"ê»";i:11784;s:3:"ê¼";i:11785;s:3:"ê½";i:11786;s:3:"ê¾";i:11787;s:3:"ê¿";i:11788;s:3:"ê€";i:11789;s:3:"ê";i:11790;s:3:"ê‚";i:11791;s:3:"êƒ";i:11792;s:3:"ê„";i:11793;s:3:"ê…";i:11794;s:3:"ê†";i:11795;s:3:"ê‡";i:11796;s:3:"êˆ";i:11797;s:3:"ê‰";i:11798;s:3:"êŠ";i:11799;s:3:"ê‹";i:11800;s:3:"êŒ";i:11801;s:3:"ê";i:11802;s:3:"êŽ";i:11803;s:3:"ê";i:11804;s:3:"ê";i:11805;s:3:"ê‘";i:11806;s:3:"ê’";i:11807;s:3:"ê“";i:11808;s:3:"ê”";i:11809;s:3:"ê•";i:11810;s:3:"ê–";i:11811;s:3:"ê—";i:11812;s:3:"ê˜";i:11813;s:3:"ê™";i:11814;s:3:"êš";i:11815;s:3:"ê›";i:11816;s:3:"êœ";i:11817;s:3:"ê";i:11818;s:3:"êž";i:11819;s:3:"êŸ";i:11820;s:3:"ê ";i:11821;s:3:"ê¡";i:11822;s:3:"ê¢";i:11823;s:3:"ê£";i:11824;s:3:"ê¤";i:11825;s:3:"ê¥";i:11826;s:3:"ê¦";i:11827;s:3:"ê§";i:11828;s:3:"ê¨";i:11829;s:3:"ê©";i:11830;s:3:"êª";i:11831;s:3:"ê«";i:11832;s:3:"ê¬";i:11833;s:3:"ê­";i:11834;s:3:"ê®";i:11835;s:3:"ê¯";i:11836;s:3:"ê°";i:11837;s:3:"ê±";i:11838;s:3:"ê²";i:11839;s:3:"ê³";i:11840;s:3:"ê´";i:11841;s:3:"êµ";i:11842;s:3:"ê¶";i:11843;s:3:"ê·";i:11844;s:3:"ê¸";i:11845;s:3:"ê¹";i:11846;s:3:"êº";i:11847;s:3:"ê»";i:11848;s:3:"ê¼";i:11849;s:3:"ê½";i:11850;s:3:"ê¾";i:11851;s:3:"ê¿";i:11852;s:3:"ê‘€";i:11853;s:3:"ê‘";i:11854;s:3:"ê‘‚";i:11855;s:3:"ꑃ";i:11856;s:3:"ê‘„";i:11857;s:3:"ê‘…";i:11858;s:3:"ꑆ";i:11859;s:3:"ꑇ";i:11860;s:3:"ꑈ";i:11861;s:3:"ꑉ";i:11862;s:3:"ê‘Š";i:11863;s:3:"ê‘‹";i:11864;s:3:"ê‘Œ";i:11865;s:3:"ê‘";i:11866;s:3:"ê‘Ž";i:11867;s:3:"ê‘";i:11868;s:3:"ê‘";i:11869;s:3:"ê‘‘";i:11870;s:3:"ê‘’";i:11871;s:3:"ê‘“";i:11872;s:3:"ê‘”";i:11873;s:3:"ê‘•";i:11874;s:3:"ê‘–";i:11875;s:3:"ê‘—";i:11876;s:3:"ꑘ";i:11877;s:3:"ê‘™";i:11878;s:3:"ê‘š";i:11879;s:3:"ê‘›";i:11880;s:3:"ê‘œ";i:11881;s:3:"ê‘";i:11882;s:3:"ê‘ž";i:11883;s:3:"ê‘Ÿ";i:11884;s:3:"ê‘ ";i:11885;s:3:"ê‘¡";i:11886;s:3:"ê‘¢";i:11887;s:3:"ê‘£";i:11888;s:3:"ꑤ";i:11889;s:3:"ê‘¥";i:11890;s:3:"ꑦ";i:11891;s:3:"ꑧ";i:11892;s:3:"ꑨ";i:11893;s:3:"ê‘©";i:11894;s:3:"ꑪ";i:11895;s:3:"ê‘«";i:11896;s:3:"ꑬ";i:11897;s:3:"ê‘­";i:11898;s:3:"ê‘®";i:11899;s:3:"ꑯ";i:11900;s:3:"ê‘°";i:11901;s:3:"ꑱ";i:11902;s:3:"ꑲ";i:11903;s:3:"ꑳ";i:11904;s:3:"ê‘´";i:11905;s:3:"ꑵ";i:11906;s:3:"ꑶ";i:11907;s:3:"ê‘·";i:11908;s:3:"ꑸ";i:11909;s:3:"ꑹ";i:11910;s:3:"ꑺ";i:11911;s:3:"ê‘»";i:11912;s:3:"ꑼ";i:11913;s:3:"ꑽ";i:11914;s:3:"ꑾ";i:11915;s:3:"ê‘¿";i:11916;s:3:"ê’€";i:11917;s:3:"ê’";i:11918;s:3:"ê’‚";i:11919;s:3:"ê’ƒ";i:11920;s:3:"ê’„";i:11921;s:3:"ê’…";i:11922;s:3:"ê’†";i:11923;s:3:"ê’‡";i:11924;s:3:"ê’ˆ";i:11925;s:3:"ê’‰";i:11926;s:3:"ê’Š";i:11927;s:3:"ê’‹";i:11928;s:3:"ê’Œ";i:11929;s:3:"ꓸ";i:11930;s:3:"ꓹ";i:11931;s:3:"ꓺ";i:11932;s:3:"ê“»";i:11933;s:3:"ꓽ";i:11934;s:3:"ꓼ";i:11935;s:3:"ê“";i:11936;s:3:"ê“‘";i:11937;s:3:"ê“’";i:11938;s:3:"ê““";i:11939;s:3:"ê“”";i:11940;s:3:"ê“•";i:11941;s:3:"ê“–";i:11942;s:3:"ê“—";i:11943;s:3:"ꓘ";i:11944;s:3:"ê“™";i:11945;s:3:"ê“š";i:11946;s:3:"ê“›";i:11947;s:3:"ê“œ";i:11948;s:3:"ê“";i:11949;s:3:"ê“ž";i:11950;s:3:"ê“Ÿ";i:11951;s:3:"ê“ ";i:11952;s:3:"ê“¡";i:11953;s:3:"ê“¢";i:11954;s:3:"ê“£";i:11955;s:3:"ꓤ";i:11956;s:3:"ê“¥";i:11957;s:3:"ꓦ";i:11958;s:3:"ꓧ";i:11959;s:3:"ꓨ";i:11960;s:3:"ê“©";i:11961;s:3:"ê“«";i:11962;s:3:"ê“­";i:11963;s:3:"ꓪ";i:11964;s:3:"ꓬ";i:11965;s:3:"ê“®";i:11966;s:3:"ꓯ";i:11967;s:3:"ê“°";i:11968;s:3:"ꓱ";i:11969;s:3:"ꓲ";i:11970;s:3:"ꓳ";i:11971;s:3:"ê“´";i:11972;s:3:"ꓵ";i:11973;s:3:"ꓶ";i:11974;s:3:"ê“·";i:11975;s:4:"ðŠ€";i:11976;s:4:"ðŠ";i:11977;s:4:"ðŠ‚";i:11978;s:4:"ðŠƒ";i:11979;s:4:"ðŠ„";i:11980;s:4:"ðŠ…";i:11981;s:4:"ðŠ†";i:11982;s:4:"ðŠ‡";i:11983;s:4:"ðŠˆ";i:11984;s:4:"ðŠ‰";i:11985;s:4:"ðŠŠ";i:11986;s:4:"ðŠ‹";i:11987;s:4:"ðŠŒ";i:11988;s:4:"ðŠ";i:11989;s:4:"ðŠŽ";i:11990;s:4:"ðŠ";i:11991;s:4:"ðŠ";i:11992;s:4:"ðŠ‘";i:11993;s:4:"ðŠ’";i:11994;s:4:"ðŠ“";i:11995;s:4:"ðŠ”";i:11996;s:4:"ðŠ•";i:11997;s:4:"ðŠ–";i:11998;s:4:"ðŠ—";i:11999;s:4:"ðŠ˜";i:12000;s:4:"ðŠ™";i:12001;s:4:"ðŠš";i:12002;s:4:"ðŠ›";i:12003;s:4:"ðŠœ";i:12004;s:4:"ðŠ ";i:12005;s:4:"ðŠ¡";i:12006;s:4:"ðŠ¢";i:12007;s:4:"ðŠ£";i:12008;s:4:"ðŠ¤";i:12009;s:4:"ðŠ¥";i:12010;s:4:"ðŠ¦";i:12011;s:4:"ðŠ§";i:12012;s:4:"ðŠ¨";i:12013;s:4:"ðŠ©";i:12014;s:4:"ðŠª";i:12015;s:4:"ðŠ«";i:12016;s:4:"ðŠ¬";i:12017;s:4:"ðŠ­";i:12018;s:4:"ðŠ®";i:12019;s:4:"ðŠ¯";i:12020;s:4:"ðŠ°";i:12021;s:4:"ðŠ±";i:12022;s:4:"ðŠ²";i:12023;s:4:"ðŠ³";i:12024;s:4:"ðŠ´";i:12025;s:4:"ðŠµ";i:12026;s:4:"ðŠ¶";i:12027;s:4:"ðŠ·";i:12028;s:4:"ðŠ¸";i:12029;s:4:"ðŠ¹";i:12030;s:4:"ðŠº";i:12031;s:4:"ðŠ»";i:12032;s:4:"ðŠ¼";i:12033;s:4:"ðŠ½";i:12034;s:4:"ðŠ¾";i:12035;s:4:"ðŠ¿";i:12036;s:4:"ð‹€";i:12037;s:4:"ð‹";i:12038;s:4:"ð‹‚";i:12039;s:4:"ð‹ƒ";i:12040;s:4:"ð‹„";i:12041;s:4:"ð‹…";i:12042;s:4:"ð‹†";i:12043;s:4:"ð‹‡";i:12044;s:4:"ð‹ˆ";i:12045;s:4:"ð‹‰";i:12046;s:4:"ð‹Š";i:12047;s:4:"ð‹‹";i:12048;s:4:"ð‹Œ";i:12049;s:4:"ð‹";i:12050;s:4:"ð‹Ž";i:12051;s:4:"ð‹";i:12052;s:4:"ð‹";i:12053;s:4:"ð¤ ";i:12054;s:4:"ð¤¡";i:12055;s:4:"ð¤¢";i:12056;s:4:"ð¤£";i:12057;s:4:"ð¤¤";i:12058;s:4:"ð¤¥";i:12059;s:4:"ð¤¦";i:12060;s:4:"ð¤§";i:12061;s:4:"ð¤¨";i:12062;s:4:"ð¤©";i:12063;s:4:"ð¤ª";i:12064;s:4:"ð¤«";i:12065;s:4:"ð¤¬";i:12066;s:4:"ð¤­";i:12067;s:4:"ð¤®";i:12068;s:4:"ð¤¯";i:12069;s:4:"ð¤°";i:12070;s:4:"ð¤±";i:12071;s:4:"ð¤²";i:12072;s:4:"ð¤³";i:12073;s:4:"ð¤´";i:12074;s:4:"ð¤µ";i:12075;s:4:"ð¤¶";i:12076;s:4:"ð¤·";i:12077;s:4:"ð¤¸";i:12078;s:4:"ð¤¹";i:12079;s:4:"ðŒ€";i:12080;s:4:"ðŒ";i:12081;s:4:"ðŒ‚";i:12082;s:4:"ðŒƒ";i:12083;s:4:"ðŒ„";i:12084;s:4:"ðŒ…";i:12085;s:4:"ðŒ†";i:12086;s:4:"ðŒ‡";i:12087;s:4:"ðŒˆ";i:12088;s:4:"ðŒ‰";i:12089;s:4:"ðŒŠ";i:12090;s:4:"ðŒ‹";i:12091;s:4:"ðŒŒ";i:12092;s:4:"ðŒ";i:12093;s:4:"ðŒŽ";i:12094;s:4:"ðŒ";i:12095;s:4:"ðŒ";i:12096;s:4:"ðŒ‘";i:12097;s:4:"ðŒ’";i:12098;s:4:"ðŒ“";i:12099;s:4:"ðŒ”";i:12100;s:4:"ðŒ•";i:12101;s:4:"ðŒ–";i:12102;s:4:"ðŒ—";i:12103;s:4:"ðŒ˜";i:12104;s:4:"ðŒ™";i:12105;s:4:"ðŒš";i:12106;s:4:"ðŒ›";i:12107;s:4:"ðŒœ";i:12108;s:4:"ðŒ";i:12109;s:4:"ðŒž";i:12110;s:4:"ðŒ°";i:12111;s:4:"ðŒ±";i:12112;s:4:"ðŒ²";i:12113;s:4:"ðŒ³";i:12114;s:4:"ðŒ´";i:12115;s:4:"ðŒµ";i:12116;s:4:"ðŒ¶";i:12117;s:4:"ðŒ·";i:12118;s:4:"ðŒ¸";i:12119;s:4:"ðŒ¹";i:12120;s:4:"ðŒº";i:12121;s:4:"ðŒ»";i:12122;s:4:"ðŒ¼";i:12123;s:4:"ðŒ½";i:12124;s:4:"ðŒ¾";i:12125;s:4:"ðŒ¿";i:12126;s:4:"ð€";i:12127;s:4:"ð";i:12128;s:4:"ð‚";i:12129;s:4:"ðƒ";i:12130;s:4:"ð„";i:12131;s:4:"ð…";i:12132;s:4:"ð†";i:12133;s:4:"ð‡";i:12134;s:4:"ðˆ";i:12135;s:4:"ð‰";i:12136;s:4:"ðŠ";i:12137;s:4:"ð€";i:12138;s:4:"ð";i:12139;s:4:"ð‚";i:12140;s:4:"ðƒ";i:12141;s:4:"ð„";i:12142;s:4:"ð…";i:12143;s:4:"ð†";i:12144;s:4:"ð‡";i:12145;s:4:"ðˆ";i:12146;s:4:"ð‰";i:12147;s:4:"ðŠ";i:12148;s:4:"ð‹";i:12149;s:4:"ðŒ";i:12150;s:4:"ð";i:12151;s:4:"ðŽ";i:12152;s:4:"ð";i:12153;s:4:"ð";i:12154;s:4:"ð‘";i:12155;s:4:"ð’";i:12156;s:4:"ð“";i:12157;s:4:"ð”";i:12158;s:4:"ð•";i:12159;s:4:"ð–";i:12160;s:4:"ð—";i:12161;s:4:"ð˜";i:12162;s:4:"ð™";i:12163;s:4:"ðš";i:12164;s:4:"ð›";i:12165;s:4:"ðœ";i:12166;s:4:"ð";i:12167;s:4:"ðž";i:12168;s:4:"ðŸ";i:12169;s:4:"ð ";i:12170;s:4:"ð¡";i:12171;s:4:"ð¢";i:12172;s:4:"ð£";i:12173;s:4:"ð¤";i:12174;s:4:"ð¥";i:12175;s:4:"ð¦";i:12176;s:4:"ð§";i:12177;s:4:"ð‘";i:12178;s:4:"ð‘‘";i:12179;s:4:"ð‘’";i:12180;s:4:"ð‘“";i:12181;s:4:"ð‘”";i:12182;s:4:"ð‘•";i:12183;s:4:"ð‘–";i:12184;s:4:"ð‘—";i:12185;s:4:"ð‘˜";i:12186;s:4:"ð‘™";i:12187;s:4:"ð‘š";i:12188;s:4:"ð‘›";i:12189;s:4:"ð‘œ";i:12190;s:4:"ð‘";i:12191;s:4:"ð‘ž";i:12192;s:4:"ð‘Ÿ";i:12193;s:4:"ð‘ ";i:12194;s:4:"ð‘¡";i:12195;s:4:"ð‘¢";i:12196;s:4:"ð‘£";i:12197;s:4:"ð‘¤";i:12198;s:4:"ð‘¥";i:12199;s:4:"ð‘¦";i:12200;s:4:"ð‘§";i:12201;s:4:"ð‘¨";i:12202;s:4:"ð‘©";i:12203;s:4:"ð‘ª";i:12204;s:4:"ð‘«";i:12205;s:4:"ð‘¬";i:12206;s:4:"ð‘­";i:12207;s:4:"ð‘®";i:12208;s:4:"ð‘¯";i:12209;s:4:"ð‘°";i:12210;s:4:"ð‘±";i:12211;s:4:"ð‘²";i:12212;s:4:"ð‘³";i:12213;s:4:"ð‘´";i:12214;s:4:"ð‘µ";i:12215;s:4:"ð‘¶";i:12216;s:4:"ð‘·";i:12217;s:4:"ð‘¸";i:12218;s:4:"ð‘¹";i:12219;s:4:"ð‘º";i:12220;s:4:"ð‘»";i:12221;s:4:"ð‘¼";i:12222;s:4:"ð‘½";i:12223;s:4:"ð‘¾";i:12224;s:4:"ð‘¿";i:12225;s:4:"ð’€";i:12226;s:4:"ð’";i:12227;s:4:"ð’‚";i:12228;s:4:"ð’ƒ";i:12229;s:4:"ð’„";i:12230;s:4:"ð’…";i:12231;s:4:"ð’†";i:12232;s:4:"ð’‡";i:12233;s:4:"ð’ˆ";i:12234;s:4:"ð’‰";i:12235;s:4:"ð’Š";i:12236;s:4:"ð’‹";i:12237;s:4:"ð’Œ";i:12238;s:4:"ð’";i:12239;s:4:"ð’Ž";i:12240;s:4:"ð’";i:12241;s:4:"ð’";i:12242;s:4:"ð’‘";i:12243;s:4:"ð’’";i:12244;s:4:"ð’“";i:12245;s:4:"ð’”";i:12246;s:4:"ð’•";i:12247;s:4:"ð’–";i:12248;s:4:"ð’—";i:12249;s:4:"ð’˜";i:12250;s:4:"ð’™";i:12251;s:4:"ð’š";i:12252;s:4:"ð’›";i:12253;s:4:"ð’œ";i:12254;s:4:"ð’";i:12255;s:4:"ð€€";i:12256;s:4:"ð€";i:12257;s:4:"ð€‚";i:12258;s:4:"ð€ƒ";i:12259;s:4:"ð€„";i:12260;s:4:"ð€…";i:12261;s:4:"ð€†";i:12262;s:4:"ð€‡";i:12263;s:4:"ð€ˆ";i:12264;s:4:"ð€‰";i:12265;s:4:"ð€Š";i:12266;s:4:"ð€‹";i:12267;s:4:"ð€";i:12268;s:4:"ð€Ž";i:12269;s:4:"ð€";i:12270;s:4:"ð€";i:12271;s:4:"ð€‘";i:12272;s:4:"ð€’";i:12273;s:4:"ð€“";i:12274;s:4:"ð€”";i:12275;s:4:"ð€•";i:12276;s:4:"ð€–";i:12277;s:4:"ð€—";i:12278;s:4:"ð€˜";i:12279;s:4:"ð€™";i:12280;s:4:"ð€š";i:12281;s:4:"ð€›";i:12282;s:4:"ð€œ";i:12283;s:4:"ð€";i:12284;s:4:"ð€ž";i:12285;s:4:"ð€Ÿ";i:12286;s:4:"ð€ ";i:12287;s:4:"ð€¡";i:12288;s:4:"ð€¢";i:12289;s:4:"ð€£";i:12290;s:4:"ð€¤";i:12291;s:4:"ð€¥";i:12292;s:4:"ð€¦";i:12293;s:4:"ð€¨";i:12294;s:4:"ð€©";i:12295;s:4:"ð€ª";i:12296;s:4:"ð€«";i:12297;s:4:"ð€¬";i:12298;s:4:"ð€­";i:12299;s:4:"ð€®";i:12300;s:4:"ð€¯";i:12301;s:4:"ð€°";i:12302;s:4:"ð€±";i:12303;s:4:"ð€²";i:12304;s:4:"ð€³";i:12305;s:4:"ð€´";i:12306;s:4:"ð€µ";i:12307;s:4:"ð€¶";i:12308;s:4:"ð€·";i:12309;s:4:"ð€¸";i:12310;s:4:"ð€¹";i:12311;s:4:"ð€º";i:12312;s:4:"ð€¼";i:12313;s:4:"ð€½";i:12314;s:4:"ð€¿";i:12315;s:4:"ð€";i:12316;s:4:"ð";i:12317;s:4:"ð‚";i:12318;s:4:"ðƒ";i:12319;s:4:"ð„";i:12320;s:4:"ð…";i:12321;s:4:"ð†";i:12322;s:4:"ð‡";i:12323;s:4:"ðˆ";i:12324;s:4:"ð‰";i:12325;s:4:"ðŠ";i:12326;s:4:"ð‹";i:12327;s:4:"ðŒ";i:12328;s:4:"ð";i:12329;s:4:"ð";i:12330;s:4:"ð‘";i:12331;s:4:"ð’";i:12332;s:4:"ð“";i:12333;s:4:"ð”";i:12334;s:4:"ð•";i:12335;s:4:"ð–";i:12336;s:4:"ð—";i:12337;s:4:"ð˜";i:12338;s:4:"ð™";i:12339;s:4:"ðš";i:12340;s:4:"ð›";i:12341;s:4:"ðœ";i:12342;s:4:"ð";i:12343;s:4:"ð‚€";i:12344;s:4:"ð‚";i:12345;s:4:"ð‚‚";i:12346;s:4:"ð‚ƒ";i:12347;s:4:"ð‚„";i:12348;s:4:"ð‚…";i:12349;s:4:"ð‚†";i:12350;s:4:"ð‚‡";i:12351;s:4:"ð‚ˆ";i:12352;s:4:"ð‚‰";i:12353;s:4:"ð‚Š";i:12354;s:4:"ð‚‹";i:12355;s:4:"ð‚Œ";i:12356;s:4:"ð‚";i:12357;s:4:"ð‚Ž";i:12358;s:4:"ð‚";i:12359;s:4:"ð‚";i:12360;s:4:"ð‚‘";i:12361;s:4:"ð‚’";i:12362;s:4:"ð‚“";i:12363;s:4:"ð‚”";i:12364;s:4:"ð‚•";i:12365;s:4:"ð‚–";i:12366;s:4:"ð‚—";i:12367;s:4:"ð‚˜";i:12368;s:4:"ð‚™";i:12369;s:4:"ð‚š";i:12370;s:4:"ð‚›";i:12371;s:4:"ð‚œ";i:12372;s:4:"ð‚";i:12373;s:4:"ð‚ž";i:12374;s:4:"ð‚Ÿ";i:12375;s:4:"ð‚ ";i:12376;s:4:"ð‚¡";i:12377;s:4:"ð‚¢";i:12378;s:4:"ð‚£";i:12379;s:4:"ð‚¤";i:12380;s:4:"ð‚¥";i:12381;s:4:"ð‚¦";i:12382;s:4:"ð‚§";i:12383;s:4:"ð‚¨";i:12384;s:4:"ð‚©";i:12385;s:4:"ð‚ª";i:12386;s:4:"ð‚«";i:12387;s:4:"ð‚¬";i:12388;s:4:"ð‚­";i:12389;s:4:"ð‚®";i:12390;s:4:"ð‚¯";i:12391;s:4:"ð‚°";i:12392;s:4:"ð‚±";i:12393;s:4:"ð‚²";i:12394;s:4:"ð‚³";i:12395;s:4:"ð‚´";i:12396;s:4:"ð‚µ";i:12397;s:4:"ð‚¶";i:12398;s:4:"ð‚·";i:12399;s:4:"ð‚¸";i:12400;s:4:"ð‚¹";i:12401;s:4:"ð‚º";i:12402;s:4:"ð‚»";i:12403;s:4:"ð‚¼";i:12404;s:4:"ð‚½";i:12405;s:4:"ð‚¾";i:12406;s:4:"ð‚¿";i:12407;s:4:"ðƒ€";i:12408;s:4:"ðƒ";i:12409;s:4:"ðƒ‚";i:12410;s:4:"ðƒƒ";i:12411;s:4:"ðƒ„";i:12412;s:4:"ðƒ…";i:12413;s:4:"ðƒ†";i:12414;s:4:"ðƒ‡";i:12415;s:4:"ðƒˆ";i:12416;s:4:"ðƒ‰";i:12417;s:4:"ðƒŠ";i:12418;s:4:"ðƒ‹";i:12419;s:4:"ðƒŒ";i:12420;s:4:"ðƒ";i:12421;s:4:"ðƒŽ";i:12422;s:4:"ðƒ";i:12423;s:4:"ðƒ";i:12424;s:4:"ðƒ‘";i:12425;s:4:"ðƒ’";i:12426;s:4:"ðƒ“";i:12427;s:4:"ðƒ”";i:12428;s:4:"ðƒ•";i:12429;s:4:"ðƒ–";i:12430;s:4:"ðƒ—";i:12431;s:4:"ðƒ˜";i:12432;s:4:"ðƒ™";i:12433;s:4:"ðƒš";i:12434;s:4:"ðƒ›";i:12435;s:4:"ðƒœ";i:12436;s:4:"ðƒ";i:12437;s:4:"ðƒž";i:12438;s:4:"ðƒŸ";i:12439;s:4:"ðƒ ";i:12440;s:4:"ðƒ¡";i:12441;s:4:"ðƒ¢";i:12442;s:4:"ðƒ£";i:12443;s:4:"ðƒ¤";i:12444;s:4:"ðƒ¥";i:12445;s:4:"ðƒ¦";i:12446;s:4:"ðƒ§";i:12447;s:4:"ðƒ¨";i:12448;s:4:"ðƒ©";i:12449;s:4:"ðƒª";i:12450;s:4:"ðƒ«";i:12451;s:4:"ðƒ¬";i:12452;s:4:"ðƒ­";i:12453;s:4:"ðƒ®";i:12454;s:4:"ðƒ¯";i:12455;s:4:"ðƒ°";i:12456;s:4:"ðƒ±";i:12457;s:4:"ðƒ²";i:12458;s:4:"ðƒ³";i:12459;s:4:"ðƒ´";i:12460;s:4:"ðƒµ";i:12461;s:4:"ðƒ¶";i:12462;s:4:"ðƒ·";i:12463;s:4:"ðƒ¸";i:12464;s:4:"ðƒ¹";i:12465;s:4:"ðƒº";i:12466;s:4:"ð €";i:12467;s:4:"ð ";i:12468;s:4:"ð ‚";i:12469;s:4:"ð ƒ";i:12470;s:4:"ð „";i:12471;s:4:"ð …";i:12472;s:4:"ð ˆ";i:12473;s:4:"ð Š";i:12474;s:4:"ð ‹";i:12475;s:4:"ð Œ";i:12476;s:4:"ð ";i:12477;s:4:"ð Ž";i:12478;s:4:"ð ";i:12479;s:4:"ð ";i:12480;s:4:"ð ‘";i:12481;s:4:"ð ’";i:12482;s:4:"ð “";i:12483;s:4:"ð ”";i:12484;s:4:"ð •";i:12485;s:4:"ð –";i:12486;s:4:"ð —";i:12487;s:4:"ð ˜";i:12488;s:4:"ð ™";i:12489;s:4:"ð š";i:12490;s:4:"ð ›";i:12491;s:4:"ð œ";i:12492;s:4:"ð ";i:12493;s:4:"ð ž";i:12494;s:4:"ð Ÿ";i:12495;s:4:"ð  ";i:12496;s:4:"ð ¡";i:12497;s:4:"ð ¢";i:12498;s:4:"ð £";i:12499;s:4:"ð ¤";i:12500;s:4:"ð ¥";i:12501;s:4:"ð ¦";i:12502;s:4:"ð §";i:12503;s:4:"ð ¨";i:12504;s:4:"ð ©";i:12505;s:4:"ð ª";i:12506;s:4:"ð «";i:12507;s:4:"ð ¬";i:12508;s:4:"ð ­";i:12509;s:4:"ð ®";i:12510;s:4:"ð ¯";i:12511;s:4:"ð °";i:12512;s:4:"ð ±";i:12513;s:4:"ð ²";i:12514;s:4:"ð ³";i:12515;s:4:"ð ´";i:12516;s:4:"ð µ";i:12517;s:4:"ð ·";i:12518;s:4:"ð ¸";i:12519;s:4:"ð ¼";i:12520;s:4:"ð ¿";i:12521;s:4:"ð© ";i:12522;s:4:"ð©¡";i:12523;s:4:"ð©¢";i:12524;s:4:"ð©£";i:12525;s:4:"ð©¤";i:12526;s:4:"ð©¥";i:12527;s:4:"ð©¦";i:12528;s:4:"ð©§";i:12529;s:4:"ð©¨";i:12530;s:4:"ð©©";i:12531;s:4:"ð©ª";i:12532;s:4:"ð©«";i:12533;s:4:"ð©¬";i:12534;s:4:"ð©­";i:12535;s:4:"ð©®";i:12536;s:4:"ð©¯";i:12537;s:4:"ð©°";i:12538;s:4:"ð©±";i:12539;s:4:"ð©²";i:12540;s:4:"ð©³";i:12541;s:4:"ð©´";i:12542;s:4:"ð©µ";i:12543;s:4:"ð©¶";i:12544;s:4:"ð©·";i:12545;s:4:"ð©¸";i:12546;s:4:"ð©¹";i:12547;s:4:"ð©º";i:12548;s:4:"ð©»";i:12549;s:4:"ð©¼";i:12550;s:4:"ð¬€";i:12551;s:4:"ð¬";i:12552;s:4:"ð¬‚";i:12553;s:4:"ð¬ƒ";i:12554;s:4:"ð¬„";i:12555;s:4:"ð¬…";i:12556;s:4:"ð¬†";i:12557;s:4:"ð¬‡";i:12558;s:4:"ð¬ˆ";i:12559;s:4:"ð¬‰";i:12560;s:4:"ð¬Š";i:12561;s:4:"ð¬‹";i:12562;s:4:"ð¬Œ";i:12563;s:4:"ð¬";i:12564;s:4:"ð¬Ž";i:12565;s:4:"ð¬";i:12566;s:4:"ð¬";i:12567;s:4:"ð¬‘";i:12568;s:4:"ð¬’";i:12569;s:4:"ð¬“";i:12570;s:4:"ð¬”";i:12571;s:4:"ð¬•";i:12572;s:4:"ð¬–";i:12573;s:4:"ð¬—";i:12574;s:4:"ð¬˜";i:12575;s:4:"ð¬™";i:12576;s:4:"ð¬š";i:12577;s:4:"ð¬›";i:12578;s:4:"ð¬œ";i:12579;s:4:"ð¬";i:12580;s:4:"ð¬ž";i:12581;s:4:"ð¬Ÿ";i:12582;s:4:"ð¬ ";i:12583;s:4:"ð¬¡";i:12584;s:4:"ð¬¢";i:12585;s:4:"ð¬£";i:12586;s:4:"ð¬¤";i:12587;s:4:"ð¬¥";i:12588;s:4:"ð¬¦";i:12589;s:4:"ð¬§";i:12590;s:4:"ð¬¨";i:12591;s:4:"ð¬©";i:12592;s:4:"ð¬ª";i:12593;s:4:"ð¬«";i:12594;s:4:"ð¬¬";i:12595;s:4:"ð¬­";i:12596;s:4:"ð¬¯";i:12597;s:4:"ð¬°";i:12598;s:4:"ð¬±";i:12599;s:4:"ð¬²";i:12600;s:4:"ð¬³";i:12601;s:4:"ð¬´";i:12602;s:4:"ð¬µ";i:12603;s:4:"ð¡€";i:12604;s:4:"ð¡";i:12605;s:4:"ð¡‚";i:12606;s:4:"ð¡ƒ";i:12607;s:4:"ð¡„";i:12608;s:4:"ð¡…";i:12609;s:4:"ð¡†";i:12610;s:4:"ð¡‡";i:12611;s:4:"ð¡ˆ";i:12612;s:4:"ð¡‰";i:12613;s:4:"ð¡Š";i:12614;s:4:"ð¡‹";i:12615;s:4:"ð¡Œ";i:12616;s:4:"ð¡";i:12617;s:4:"ð¡Ž";i:12618;s:4:"ð¡";i:12619;s:4:"ð¡";i:12620;s:4:"ð¡‘";i:12621;s:4:"ð¡’";i:12622;s:4:"ð¡“";i:12623;s:4:"ð¡”";i:12624;s:4:"ð¡•";i:12625;s:4:"ð­€";i:12626;s:4:"ð­";i:12627;s:4:"ð­‚";i:12628;s:4:"ð­ƒ";i:12629;s:4:"ð­„";i:12630;s:4:"ð­…";i:12631;s:4:"ð­†";i:12632;s:4:"ð­‡";i:12633;s:4:"ð­ˆ";i:12634;s:4:"ð­‰";i:12635;s:4:"ð­Š";i:12636;s:4:"ð­‹";i:12637;s:4:"ð­Œ";i:12638;s:4:"ð­";i:12639;s:4:"ð­Ž";i:12640;s:4:"ð­";i:12641;s:4:"ð­";i:12642;s:4:"ð­‘";i:12643;s:4:"ð­’";i:12644;s:4:"ð­“";i:12645;s:4:"ð­”";i:12646;s:4:"ð­•";i:12647;s:4:"ð­ ";i:12648;s:4:"ð­¡";i:12649;s:4:"ð­¢";i:12650;s:4:"ð­£";i:12651;s:4:"ð­¤";i:12652;s:4:"ð­¥";i:12653;s:4:"ð­¦";i:12654;s:4:"ð­§";i:12655;s:4:"ð­¨";i:12656;s:4:"ð­©";i:12657;s:4:"ð­ª";i:12658;s:4:"ð­«";i:12659;s:4:"ð­¬";i:12660;s:4:"ð­­";i:12661;s:4:"ð­®";i:12662;s:4:"ð­¯";i:12663;s:4:"ð­°";i:12664;s:4:"ð­±";i:12665;s:4:"ð­²";i:12666;s:4:"ðŽ€";i:12667;s:4:"ðŽ";i:12668;s:4:"ðŽ‚";i:12669;s:4:"ðŽƒ";i:12670;s:4:"ðŽ„";i:12671;s:4:"ðŽ…";i:12672;s:4:"ðŽ†";i:12673;s:4:"ðŽ‡";i:12674;s:4:"ðŽˆ";i:12675;s:4:"ðŽ‰";i:12676;s:4:"ðŽŠ";i:12677;s:4:"ðŽ‹";i:12678;s:4:"ðŽŒ";i:12679;s:4:"ðŽ";i:12680;s:4:"ðŽŽ";i:12681;s:4:"ðŽ";i:12682;s:4:"ðŽ";i:12683;s:4:"ðŽ‘";i:12684;s:4:"ðŽ’";i:12685;s:4:"ðŽ“";i:12686;s:4:"ðŽ”";i:12687;s:4:"ðŽ•";i:12688;s:4:"ðŽ–";i:12689;s:4:"ðŽ—";i:12690;s:4:"ðŽ˜";i:12691;s:4:"ðŽ™";i:12692;s:4:"ðŽš";i:12693;s:4:"ðŽ›";i:12694;s:4:"ðŽœ";i:12695;s:4:"ðŽ";i:12696;s:4:"ðŽ ";i:12697;s:4:"ðŽ¡";i:12698;s:4:"ðŽ¢";i:12699;s:4:"ðŽ£";i:12700;s:4:"ðŽ¤";i:12701;s:4:"ðŽ¥";i:12702;s:4:"ðŽ¦";i:12703;s:4:"ðŽ§";i:12704;s:4:"ðŽ¨";i:12705;s:4:"ðŽ©";i:12706;s:4:"ðŽª";i:12707;s:4:"ðŽ«";i:12708;s:4:"ðŽ¬";i:12709;s:4:"ðŽ­";i:12710;s:4:"ðŽ®";i:12711;s:4:"ðŽ¯";i:12712;s:4:"ðŽ°";i:12713;s:4:"ðŽ±";i:12714;s:4:"ðŽ²";i:12715;s:4:"ðŽ³";i:12716;s:4:"ðŽ´";i:12717;s:4:"ðŽµ";i:12718;s:4:"ðŽ¶";i:12719;s:4:"ðŽ·";i:12720;s:4:"ðŽ¸";i:12721;s:4:"ðŽ¹";i:12722;s:4:"ðŽº";i:12723;s:4:"ðŽ»";i:12724;s:4:"ðŽ¼";i:12725;s:4:"ðŽ½";i:12726;s:4:"ðŽ¾";i:12727;s:4:"ðŽ¿";i:12728;s:4:"ð€";i:12729;s:4:"ð";i:12730;s:4:"ð‚";i:12731;s:4:"ðƒ";i:12732;s:4:"ðˆ";i:12733;s:4:"ð‰";i:12734;s:4:"ðŠ";i:12735;s:4:"ð‹";i:12736;s:4:"ðŒ";i:12737;s:4:"ð";i:12738;s:4:"ðŽ";i:12739;s:4:"ð";i:12740;s:4:"ð’€€";i:12741;s:4:"ð’€";i:12742;s:4:"𒀂";i:12743;s:4:"𒀃";i:12744;s:4:"𒀄";i:12745;s:4:"ð’€…";i:12746;s:4:"𒀆";i:12747;s:4:"𒀇";i:12748;s:4:"𒀈";i:12749;s:4:"𒀉";i:12750;s:4:"𒀊";i:12751;s:4:"𒀋";i:12752;s:4:"𒀌";i:12753;s:4:"ð’€";i:12754;s:4:"𒀎";i:12755;s:4:"ð’€";i:12756;s:4:"ð’€";i:12757;s:4:"𒀑";i:12758;s:4:"ð’€’";i:12759;s:4:"𒀓";i:12760;s:4:"ð’€”";i:12761;s:4:"𒀕";i:12762;s:4:"ð’€–";i:12763;s:4:"ð’€—";i:12764;s:4:"𒀘";i:12765;s:4:"ð’€™";i:12766;s:4:"𒀚";i:12767;s:4:"ð’€›";i:12768;s:4:"𒀜";i:12769;s:4:"ð’€";i:12770;s:4:"𒀞";i:12771;s:4:"𒀟";i:12772;s:4:"ð’€ ";i:12773;s:4:"𒀡";i:12774;s:4:"ð’€¢";i:12775;s:4:"ð’€£";i:12776;s:4:"𒀤";i:12777;s:4:"ð’€¥";i:12778;s:4:"𒀦";i:12779;s:4:"𒀧";i:12780;s:4:"𒀨";i:12781;s:4:"𒀩";i:12782;s:4:"𒀪";i:12783;s:4:"𒀫";i:12784;s:4:"𒀬";i:12785;s:4:"ð’€­";i:12786;s:4:"ð’€®";i:12787;s:4:"𒀯";i:12788;s:4:"ð’€°";i:12789;s:4:"ð’€±";i:12790;s:4:"ð’€²";i:12791;s:4:"ð’€³";i:12792;s:4:"ð’€´";i:12793;s:4:"ð’€µ";i:12794;s:4:"𒀶";i:12795;s:4:"ð’€·";i:12796;s:4:"𒀸";i:12797;s:4:"ð’€¹";i:12798;s:4:"𒀺";i:12799;s:4:"ð’€»";i:12800;s:4:"ð’€¼";i:12801;s:4:"ð’€½";i:12802;s:4:"ð’€¾";i:12803;s:4:"𒀿";i:12804;s:4:"ð’€";i:12805;s:4:"ð’";i:12806;s:4:"ð’‚";i:12807;s:4:"ð’ƒ";i:12808;s:4:"ð’„";i:12809;s:4:"ð’…";i:12810;s:4:"ð’†";i:12811;s:4:"ð’‡";i:12812;s:4:"ð’ˆ";i:12813;s:4:"ð’‰";i:12814;s:4:"ð’Š";i:12815;s:4:"ð’‹";i:12816;s:4:"ð’Œ";i:12817;s:4:"ð’";i:12818;s:4:"ð’Ž";i:12819;s:4:"ð’";i:12820;s:4:"ð’";i:12821;s:4:"ð’‘";i:12822;s:4:"ð’’";i:12823;s:4:"ð’“";i:12824;s:4:"ð’”";i:12825;s:4:"ð’•";i:12826;s:4:"ð’–";i:12827;s:4:"ð’—";i:12828;s:4:"ð’˜";i:12829;s:4:"ð’™";i:12830;s:4:"ð’š";i:12831;s:4:"ð’›";i:12832;s:4:"ð’œ";i:12833;s:4:"ð’";i:12834;s:4:"ð’ž";i:12835;s:4:"ð’Ÿ";i:12836;s:4:"ð’ ";i:12837;s:4:"ð’¡";i:12838;s:4:"ð’¢";i:12839;s:4:"ð’£";i:12840;s:4:"ð’¤";i:12841;s:4:"ð’¥";i:12842;s:4:"ð’¦";i:12843;s:4:"ð’§";i:12844;s:4:"ð’¨";i:12845;s:4:"ð’©";i:12846;s:4:"ð’ª";i:12847;s:4:"ð’«";i:12848;s:4:"ð’¬";i:12849;s:4:"ð’­";i:12850;s:4:"ð’®";i:12851;s:4:"ð’¯";i:12852;s:4:"ð’°";i:12853;s:4:"ð’±";i:12854;s:4:"ð’²";i:12855;s:4:"ð’³";i:12856;s:4:"ð’´";i:12857;s:4:"ð’µ";i:12858;s:4:"ð’¶";i:12859;s:4:"ð’·";i:12860;s:4:"ð’¸";i:12861;s:4:"ð’¹";i:12862;s:4:"ð’º";i:12863;s:4:"ð’»";i:12864;s:4:"ð’¼";i:12865;s:4:"ð’½";i:12866;s:4:"ð’¾";i:12867;s:4:"ð’¿";i:12868;s:4:"ð’‚€";i:12869;s:4:"ð’‚";i:12870;s:4:"ð’‚‚";i:12871;s:4:"𒂃";i:12872;s:4:"ð’‚„";i:12873;s:4:"ð’‚…";i:12874;s:4:"𒂆";i:12875;s:4:"𒂇";i:12876;s:4:"𒂈";i:12877;s:4:"𒂉";i:12878;s:4:"ð’‚Š";i:12879;s:4:"ð’‚‹";i:12880;s:4:"ð’‚Œ";i:12881;s:4:"ð’‚";i:12882;s:4:"ð’‚Ž";i:12883;s:4:"ð’‚";i:12884;s:4:"ð’‚";i:12885;s:4:"ð’‚‘";i:12886;s:4:"ð’‚’";i:12887;s:4:"ð’‚“";i:12888;s:4:"ð’‚”";i:12889;s:4:"ð’‚•";i:12890;s:4:"ð’‚–";i:12891;s:4:"ð’‚—";i:12892;s:4:"𒂘";i:12893;s:4:"ð’‚™";i:12894;s:4:"ð’‚š";i:12895;s:4:"ð’‚›";i:12896;s:4:"ð’‚œ";i:12897;s:4:"ð’‚";i:12898;s:4:"ð’‚ž";i:12899;s:4:"ð’‚Ÿ";i:12900;s:4:"ð’‚ ";i:12901;s:4:"ð’‚¡";i:12902;s:4:"ð’‚¢";i:12903;s:4:"ð’‚£";i:12904;s:4:"𒂤";i:12905;s:4:"ð’‚¥";i:12906;s:4:"𒂦";i:12907;s:4:"𒂧";i:12908;s:4:"𒂨";i:12909;s:4:"ð’‚©";i:12910;s:4:"𒂪";i:12911;s:4:"ð’‚«";i:12912;s:4:"𒂬";i:12913;s:4:"ð’‚­";i:12914;s:4:"ð’‚®";i:12915;s:4:"𒂯";i:12916;s:4:"ð’‚°";i:12917;s:4:"ð’‚±";i:12918;s:4:"ð’‚²";i:12919;s:4:"ð’‚³";i:12920;s:4:"ð’‚´";i:12921;s:4:"ð’‚µ";i:12922;s:4:"𒂶";i:12923;s:4:"ð’‚·";i:12924;s:4:"𒂸";i:12925;s:4:"ð’‚¹";i:12926;s:4:"𒂺";i:12927;s:4:"ð’‚»";i:12928;s:4:"ð’‚¼";i:12929;s:4:"ð’‚½";i:12930;s:4:"ð’‚¾";i:12931;s:4:"ð’‚¿";i:12932;s:4:"𒃀";i:12933;s:4:"ð’ƒ";i:12934;s:4:"𒃂";i:12935;s:4:"𒃃";i:12936;s:4:"𒃄";i:12937;s:4:"ð’ƒ…";i:12938;s:4:"𒃆";i:12939;s:4:"𒃇";i:12940;s:4:"𒃈";i:12941;s:4:"𒃉";i:12942;s:4:"𒃊";i:12943;s:4:"𒃋";i:12944;s:4:"𒃌";i:12945;s:4:"ð’ƒ";i:12946;s:4:"𒃎";i:12947;s:4:"ð’ƒ";i:12948;s:4:"ð’ƒ";i:12949;s:4:"𒃑";i:12950;s:4:"ð’ƒ’";i:12951;s:4:"𒃓";i:12952;s:4:"𒃔";i:12953;s:4:"𒃕";i:12954;s:4:"ð’ƒ–";i:12955;s:4:"ð’ƒ—";i:12956;s:4:"𒃘";i:12957;s:4:"𒃙";i:12958;s:4:"𒃚";i:12959;s:4:"𒃛";i:12960;s:4:"𒃜";i:12961;s:4:"ð’ƒ";i:12962;s:4:"𒃞";i:12963;s:4:"𒃟";i:12964;s:4:"ð’ƒ ";i:12965;s:4:"𒃡";i:12966;s:4:"𒃢";i:12967;s:4:"𒃣";i:12968;s:4:"𒃤";i:12969;s:4:"𒃥";i:12970;s:4:"𒃦";i:12971;s:4:"𒃧";i:12972;s:4:"𒃨";i:12973;s:4:"𒃩";i:12974;s:4:"𒃪";i:12975;s:4:"𒃫";i:12976;s:4:"𒃬";i:12977;s:4:"ð’ƒ­";i:12978;s:4:"𒃮";i:12979;s:4:"𒃯";i:12980;s:4:"ð’ƒ°";i:12981;s:4:"𒃱";i:12982;s:4:"𒃲";i:12983;s:4:"𒃳";i:12984;s:4:"ð’ƒ´";i:12985;s:4:"𒃵";i:12986;s:4:"𒃶";i:12987;s:4:"ð’ƒ·";i:12988;s:4:"𒃸";i:12989;s:4:"𒃹";i:12990;s:4:"𒃺";i:12991;s:4:"𒃻";i:12992;s:4:"𒃼";i:12993;s:4:"𒃽";i:12994;s:4:"𒃾";i:12995;s:4:"𒃿";i:12996;s:4:"ð’„€";i:12997;s:4:"ð’„";i:12998;s:4:"ð’„‚";i:12999;s:4:"𒄃";i:13000;s:4:"ð’„„";i:13001;s:4:"ð’„…";i:13002;s:4:"𒄆";i:13003;s:4:"𒄇";i:13004;s:4:"𒄈";i:13005;s:4:"𒄉";i:13006;s:4:"ð’„Š";i:13007;s:4:"ð’„‹";i:13008;s:4:"ð’„Œ";i:13009;s:4:"ð’„";i:13010;s:4:"ð’„Ž";i:13011;s:4:"ð’„";i:13012;s:4:"ð’„";i:13013;s:4:"ð’„‘";i:13014;s:4:"ð’„’";i:13015;s:4:"ð’„“";i:13016;s:4:"ð’„”";i:13017;s:4:"ð’„•";i:13018;s:4:"ð’„–";i:13019;s:4:"ð’„—";i:13020;s:4:"𒄘";i:13021;s:4:"ð’„™";i:13022;s:4:"ð’„š";i:13023;s:4:"ð’„›";i:13024;s:4:"ð’„œ";i:13025;s:4:"ð’„";i:13026;s:4:"ð’„ž";i:13027;s:4:"ð’„Ÿ";i:13028;s:4:"ð’„ ";i:13029;s:4:"ð’„¡";i:13030;s:4:"ð’„¢";i:13031;s:4:"ð’„£";i:13032;s:4:"𒄤";i:13033;s:4:"ð’„¥";i:13034;s:4:"𒄦";i:13035;s:4:"𒄧";i:13036;s:4:"𒄨";i:13037;s:4:"ð’„©";i:13038;s:4:"𒄪";i:13039;s:4:"ð’„«";i:13040;s:4:"𒄬";i:13041;s:4:"ð’„­";i:13042;s:4:"ð’„®";i:13043;s:4:"𒄯";i:13044;s:4:"ð’„°";i:13045;s:4:"ð’„±";i:13046;s:4:"ð’„²";i:13047;s:4:"ð’„³";i:13048;s:4:"ð’„´";i:13049;s:4:"ð’„µ";i:13050;s:4:"𒄶";i:13051;s:4:"ð’„·";i:13052;s:4:"𒄸";i:13053;s:4:"ð’„¹";i:13054;s:4:"𒄺";i:13055;s:4:"ð’„»";i:13056;s:4:"ð’„¼";i:13057;s:4:"ð’„½";i:13058;s:4:"ð’„¾";i:13059;s:4:"ð’„¿";i:13060;s:4:"ð’…€";i:13061;s:4:"ð’…";i:13062;s:4:"ð’…‚";i:13063;s:4:"ð’…ƒ";i:13064;s:4:"ð’…„";i:13065;s:4:"ð’……";i:13066;s:4:"ð’…†";i:13067;s:4:"ð’…‡";i:13068;s:4:"ð’…ˆ";i:13069;s:4:"ð’…‰";i:13070;s:4:"ð’…Š";i:13071;s:4:"ð’…‹";i:13072;s:4:"ð’…Œ";i:13073;s:4:"ð’…";i:13074;s:4:"ð’…Ž";i:13075;s:4:"ð’…";i:13076;s:4:"ð’…";i:13077;s:4:"ð’…‘";i:13078;s:4:"ð’…’";i:13079;s:4:"ð’…“";i:13080;s:4:"ð’…”";i:13081;s:4:"ð’…•";i:13082;s:4:"ð’…–";i:13083;s:4:"ð’…—";i:13084;s:4:"ð’…˜";i:13085;s:4:"ð’…™";i:13086;s:4:"ð’…š";i:13087;s:4:"ð’…›";i:13088;s:4:"ð’…œ";i:13089;s:4:"ð’…";i:13090;s:4:"ð’…ž";i:13091;s:4:"ð’…Ÿ";i:13092;s:4:"ð’… ";i:13093;s:4:"ð’…¡";i:13094;s:4:"ð’…¢";i:13095;s:4:"ð’…£";i:13096;s:4:"ð’…¤";i:13097;s:4:"ð’…¥";i:13098;s:4:"ð’…¦";i:13099;s:4:"ð’…§";i:13100;s:4:"ð’…¨";i:13101;s:4:"ð’…©";i:13102;s:4:"ð’…ª";i:13103;s:4:"ð’…«";i:13104;s:4:"ð’…¬";i:13105;s:4:"ð’…­";i:13106;s:4:"ð’…®";i:13107;s:4:"ð’…¯";i:13108;s:4:"ð’…°";i:13109;s:4:"ð’…±";i:13110;s:4:"ð’…²";i:13111;s:4:"ð’…³";i:13112;s:4:"ð’…´";i:13113;s:4:"ð’…µ";i:13114;s:4:"ð’…¶";i:13115;s:4:"ð’…·";i:13116;s:4:"ð’…¸";i:13117;s:4:"ð’…¹";i:13118;s:4:"ð’…º";i:13119;s:4:"ð’…»";i:13120;s:4:"ð’…¼";i:13121;s:4:"ð’…½";i:13122;s:4:"ð’…¾";i:13123;s:4:"ð’…¿";i:13124;s:4:"𒆀";i:13125;s:4:"ð’†";i:13126;s:4:"𒆂";i:13127;s:4:"𒆃";i:13128;s:4:"𒆄";i:13129;s:4:"ð’†…";i:13130;s:4:"𒆆";i:13131;s:4:"𒆇";i:13132;s:4:"𒆈";i:13133;s:4:"𒆉";i:13134;s:4:"𒆊";i:13135;s:4:"𒆋";i:13136;s:4:"𒆌";i:13137;s:4:"ð’†";i:13138;s:4:"𒆎";i:13139;s:4:"ð’†";i:13140;s:4:"ð’†";i:13141;s:4:"𒆑";i:13142;s:4:"ð’†’";i:13143;s:4:"𒆓";i:13144;s:4:"𒆔";i:13145;s:4:"𒆕";i:13146;s:4:"ð’†–";i:13147;s:4:"ð’†—";i:13148;s:4:"𒆘";i:13149;s:4:"𒆙";i:13150;s:4:"𒆚";i:13151;s:4:"𒆛";i:13152;s:4:"𒆜";i:13153;s:4:"ð’†";i:13154;s:4:"𒆞";i:13155;s:4:"𒆟";i:13156;s:4:"ð’† ";i:13157;s:4:"𒆡";i:13158;s:4:"𒆢";i:13159;s:4:"𒆣";i:13160;s:4:"𒆤";i:13161;s:4:"𒆥";i:13162;s:4:"𒆦";i:13163;s:4:"𒆧";i:13164;s:4:"𒆨";i:13165;s:4:"𒆩";i:13166;s:4:"𒆪";i:13167;s:4:"𒆫";i:13168;s:4:"𒆬";i:13169;s:4:"ð’†­";i:13170;s:4:"𒆮";i:13171;s:4:"𒆯";i:13172;s:4:"ð’†°";i:13173;s:4:"𒆱";i:13174;s:4:"𒆲";i:13175;s:4:"𒆳";i:13176;s:4:"ð’†´";i:13177;s:4:"𒆵";i:13178;s:4:"𒆶";i:13179;s:4:"ð’†·";i:13180;s:4:"𒆸";i:13181;s:4:"𒆹";i:13182;s:4:"𒆺";i:13183;s:4:"𒆻";i:13184;s:4:"𒆼";i:13185;s:4:"𒆽";i:13186;s:4:"𒆾";i:13187;s:4:"𒆿";i:13188;s:4:"𒇀";i:13189;s:4:"ð’‡";i:13190;s:4:"𒇂";i:13191;s:4:"𒇃";i:13192;s:4:"𒇄";i:13193;s:4:"ð’‡…";i:13194;s:4:"𒇆";i:13195;s:4:"𒇇";i:13196;s:4:"𒇈";i:13197;s:4:"𒇉";i:13198;s:4:"𒇊";i:13199;s:4:"𒇋";i:13200;s:4:"𒇌";i:13201;s:4:"ð’‡";i:13202;s:4:"𒇎";i:13203;s:4:"ð’‡";i:13204;s:4:"ð’‡";i:13205;s:4:"𒇑";i:13206;s:4:"ð’‡’";i:13207;s:4:"𒇓";i:13208;s:4:"𒇔";i:13209;s:4:"𒇕";i:13210;s:4:"ð’‡–";i:13211;s:4:"ð’‡—";i:13212;s:4:"𒇘";i:13213;s:4:"𒇙";i:13214;s:4:"𒇚";i:13215;s:4:"𒇛";i:13216;s:4:"𒇜";i:13217;s:4:"ð’‡";i:13218;s:4:"𒇞";i:13219;s:4:"𒇟";i:13220;s:4:"ð’‡ ";i:13221;s:4:"𒇡";i:13222;s:4:"𒇢";i:13223;s:4:"𒇣";i:13224;s:4:"𒇤";i:13225;s:4:"𒇥";i:13226;s:4:"𒇦";i:13227;s:4:"𒇧";i:13228;s:4:"𒇨";i:13229;s:4:"𒇩";i:13230;s:4:"𒇪";i:13231;s:4:"𒇫";i:13232;s:4:"𒇬";i:13233;s:4:"ð’‡­";i:13234;s:4:"𒇮";i:13235;s:4:"𒇯";i:13236;s:4:"ð’‡°";i:13237;s:4:"𒇱";i:13238;s:4:"𒇲";i:13239;s:4:"𒇳";i:13240;s:4:"ð’‡´";i:13241;s:4:"𒇵";i:13242;s:4:"𒇶";i:13243;s:4:"ð’‡·";i:13244;s:4:"𒇸";i:13245;s:4:"𒇹";i:13246;s:4:"𒇺";i:13247;s:4:"𒇻";i:13248;s:4:"𒇼";i:13249;s:4:"𒇽";i:13250;s:4:"𒇾";i:13251;s:4:"𒇿";i:13252;s:4:"𒈀";i:13253;s:4:"ð’ˆ";i:13254;s:4:"𒈂";i:13255;s:4:"𒈃";i:13256;s:4:"𒈄";i:13257;s:4:"ð’ˆ…";i:13258;s:4:"𒈆";i:13259;s:4:"𒈇";i:13260;s:4:"𒈈";i:13261;s:4:"𒈉";i:13262;s:4:"𒈊";i:13263;s:4:"𒈋";i:13264;s:4:"𒈌";i:13265;s:4:"ð’ˆ";i:13266;s:4:"𒈎";i:13267;s:4:"ð’ˆ";i:13268;s:4:"ð’ˆ";i:13269;s:4:"𒈑";i:13270;s:4:"ð’ˆ’";i:13271;s:4:"𒈓";i:13272;s:4:"𒈔";i:13273;s:4:"𒈕";i:13274;s:4:"ð’ˆ–";i:13275;s:4:"ð’ˆ—";i:13276;s:4:"𒈘";i:13277;s:4:"𒈙";i:13278;s:4:"𒈚";i:13279;s:4:"𒈛";i:13280;s:4:"𒈜";i:13281;s:4:"ð’ˆ";i:13282;s:4:"𒈞";i:13283;s:4:"𒈟";i:13284;s:4:"ð’ˆ ";i:13285;s:4:"𒈡";i:13286;s:4:"𒈢";i:13287;s:4:"𒈣";i:13288;s:4:"𒈤";i:13289;s:4:"𒈥";i:13290;s:4:"𒈦";i:13291;s:4:"𒈧";i:13292;s:4:"𒈨";i:13293;s:4:"𒈩";i:13294;s:4:"𒈪";i:13295;s:4:"𒈫";i:13296;s:4:"𒈬";i:13297;s:4:"ð’ˆ­";i:13298;s:4:"𒈮";i:13299;s:4:"𒈯";i:13300;s:4:"ð’ˆ°";i:13301;s:4:"𒈱";i:13302;s:4:"𒈲";i:13303;s:4:"𒈳";i:13304;s:4:"ð’ˆ´";i:13305;s:4:"𒈵";i:13306;s:4:"𒈶";i:13307;s:4:"ð’ˆ·";i:13308;s:4:"𒈸";i:13309;s:4:"𒈹";i:13310;s:4:"𒈺";i:13311;s:4:"𒈻";i:13312;s:4:"𒈼";i:13313;s:4:"𒈽";i:13314;s:4:"𒈾";i:13315;s:4:"𒈿";i:13316;s:4:"𒉀";i:13317;s:4:"ð’‰";i:13318;s:4:"𒉂";i:13319;s:4:"𒉃";i:13320;s:4:"𒉄";i:13321;s:4:"ð’‰…";i:13322;s:4:"𒉆";i:13323;s:4:"𒉇";i:13324;s:4:"𒉈";i:13325;s:4:"𒉉";i:13326;s:4:"𒉊";i:13327;s:4:"𒉋";i:13328;s:4:"𒉌";i:13329;s:4:"ð’‰";i:13330;s:4:"𒉎";i:13331;s:4:"ð’‰";i:13332;s:4:"ð’‰";i:13333;s:4:"𒉑";i:13334;s:4:"ð’‰’";i:13335;s:4:"𒉓";i:13336;s:4:"𒉔";i:13337;s:4:"𒉕";i:13338;s:4:"ð’‰–";i:13339;s:4:"ð’‰—";i:13340;s:4:"𒉘";i:13341;s:4:"𒉙";i:13342;s:4:"𒉚";i:13343;s:4:"𒉛";i:13344;s:4:"𒉜";i:13345;s:4:"ð’‰";i:13346;s:4:"𒉞";i:13347;s:4:"𒉟";i:13348;s:4:"ð’‰ ";i:13349;s:4:"𒉡";i:13350;s:4:"𒉢";i:13351;s:4:"𒉣";i:13352;s:4:"𒉤";i:13353;s:4:"𒉥";i:13354;s:4:"𒉦";i:13355;s:4:"𒉧";i:13356;s:4:"𒉨";i:13357;s:4:"𒉩";i:13358;s:4:"𒉪";i:13359;s:4:"𒉫";i:13360;s:4:"𒉬";i:13361;s:4:"ð’‰­";i:13362;s:4:"𒉮";i:13363;s:4:"𒉯";i:13364;s:4:"ð’‰°";i:13365;s:4:"𒉱";i:13366;s:4:"𒉲";i:13367;s:4:"𒉳";i:13368;s:4:"ð’‰´";i:13369;s:4:"𒉵";i:13370;s:4:"𒉶";i:13371;s:4:"ð’‰·";i:13372;s:4:"𒉸";i:13373;s:4:"𒉹";i:13374;s:4:"𒉺";i:13375;s:4:"𒉻";i:13376;s:4:"𒉼";i:13377;s:4:"𒉽";i:13378;s:4:"𒉾";i:13379;s:4:"𒉿";i:13380;s:4:"ð’Š€";i:13381;s:4:"ð’Š";i:13382;s:4:"ð’Š‚";i:13383;s:4:"𒊃";i:13384;s:4:"ð’Š„";i:13385;s:4:"ð’Š…";i:13386;s:4:"𒊆";i:13387;s:4:"𒊇";i:13388;s:4:"𒊈";i:13389;s:4:"𒊉";i:13390;s:4:"ð’ŠŠ";i:13391;s:4:"ð’Š‹";i:13392;s:4:"ð’ŠŒ";i:13393;s:4:"ð’Š";i:13394;s:4:"ð’ŠŽ";i:13395;s:4:"ð’Š";i:13396;s:4:"ð’Š";i:13397;s:4:"ð’Š‘";i:13398;s:4:"ð’Š’";i:13399;s:4:"ð’Š“";i:13400;s:4:"ð’Š”";i:13401;s:4:"ð’Š•";i:13402;s:4:"ð’Š–";i:13403;s:4:"ð’Š—";i:13404;s:4:"𒊘";i:13405;s:4:"ð’Š™";i:13406;s:4:"ð’Šš";i:13407;s:4:"ð’Š›";i:13408;s:4:"ð’Šœ";i:13409;s:4:"ð’Š";i:13410;s:4:"ð’Šž";i:13411;s:4:"ð’ŠŸ";i:13412;s:4:"ð’Š ";i:13413;s:4:"ð’Š¡";i:13414;s:4:"ð’Š¢";i:13415;s:4:"ð’Š£";i:13416;s:4:"𒊤";i:13417;s:4:"ð’Š¥";i:13418;s:4:"𒊦";i:13419;s:4:"𒊧";i:13420;s:4:"𒊨";i:13421;s:4:"ð’Š©";i:13422;s:4:"𒊪";i:13423;s:4:"ð’Š«";i:13424;s:4:"𒊬";i:13425;s:4:"ð’Š­";i:13426;s:4:"ð’Š®";i:13427;s:4:"𒊯";i:13428;s:4:"ð’Š°";i:13429;s:4:"𒊱";i:13430;s:4:"𒊲";i:13431;s:4:"𒊳";i:13432;s:4:"ð’Š´";i:13433;s:4:"𒊵";i:13434;s:4:"𒊶";i:13435;s:4:"ð’Š·";i:13436;s:4:"𒊸";i:13437;s:4:"𒊹";i:13438;s:4:"𒊺";i:13439;s:4:"ð’Š»";i:13440;s:4:"𒊼";i:13441;s:4:"𒊽";i:13442;s:4:"𒊾";i:13443;s:4:"ð’Š¿";i:13444;s:4:"ð’‹€";i:13445;s:4:"ð’‹";i:13446;s:4:"ð’‹‚";i:13447;s:4:"𒋃";i:13448;s:4:"ð’‹„";i:13449;s:4:"ð’‹…";i:13450;s:4:"𒋆";i:13451;s:4:"𒋇";i:13452;s:4:"𒋈";i:13453;s:4:"𒋉";i:13454;s:4:"ð’‹Š";i:13455;s:4:"ð’‹‹";i:13456;s:4:"ð’‹Œ";i:13457;s:4:"ð’‹";i:13458;s:4:"ð’‹Ž";i:13459;s:4:"ð’‹";i:13460;s:4:"ð’‹";i:13461;s:4:"ð’‹‘";i:13462;s:4:"ð’‹’";i:13463;s:4:"ð’‹“";i:13464;s:4:"ð’‹”";i:13465;s:4:"ð’‹•";i:13466;s:4:"ð’‹–";i:13467;s:4:"ð’‹—";i:13468;s:4:"𒋘";i:13469;s:4:"ð’‹™";i:13470;s:4:"ð’‹š";i:13471;s:4:"ð’‹›";i:13472;s:4:"ð’‹œ";i:13473;s:4:"ð’‹";i:13474;s:4:"ð’‹ž";i:13475;s:4:"ð’‹Ÿ";i:13476;s:4:"ð’‹ ";i:13477;s:4:"ð’‹¡";i:13478;s:4:"ð’‹¢";i:13479;s:4:"ð’‹£";i:13480;s:4:"𒋤";i:13481;s:4:"ð’‹¥";i:13482;s:4:"𒋦";i:13483;s:4:"𒋧";i:13484;s:4:"𒋨";i:13485;s:4:"ð’‹©";i:13486;s:4:"𒋪";i:13487;s:4:"ð’‹«";i:13488;s:4:"𒋬";i:13489;s:4:"ð’‹­";i:13490;s:4:"ð’‹®";i:13491;s:4:"𒋯";i:13492;s:4:"ð’‹°";i:13493;s:4:"ð’‹±";i:13494;s:4:"ð’‹²";i:13495;s:4:"ð’‹³";i:13496;s:4:"ð’‹´";i:13497;s:4:"ð’‹µ";i:13498;s:4:"𒋶";i:13499;s:4:"ð’‹·";i:13500;s:4:"𒋸";i:13501;s:4:"ð’‹¹";i:13502;s:4:"𒋺";i:13503;s:4:"ð’‹»";i:13504;s:4:"ð’‹¼";i:13505;s:4:"ð’‹½";i:13506;s:4:"ð’‹¾";i:13507;s:4:"ð’‹¿";i:13508;s:4:"𒌀";i:13509;s:4:"ð’Œ";i:13510;s:4:"𒌂";i:13511;s:4:"𒌃";i:13512;s:4:"𒌄";i:13513;s:4:"𒌅";i:13514;s:4:"𒌆";i:13515;s:4:"𒌇";i:13516;s:4:"𒌈";i:13517;s:4:"𒌉";i:13518;s:4:"𒌊";i:13519;s:4:"𒌋";i:13520;s:4:"𒌌";i:13521;s:4:"ð’Œ";i:13522;s:4:"𒌎";i:13523;s:4:"ð’Œ";i:13524;s:4:"ð’Œ";i:13525;s:4:"𒌑";i:13526;s:4:"𒌒";i:13527;s:4:"𒌓";i:13528;s:4:"𒌔";i:13529;s:4:"𒌕";i:13530;s:4:"𒌖";i:13531;s:4:"𒌗";i:13532;s:4:"𒌘";i:13533;s:4:"𒌙";i:13534;s:4:"𒌚";i:13535;s:4:"𒌛";i:13536;s:4:"𒌜";i:13537;s:4:"ð’Œ";i:13538;s:4:"𒌞";i:13539;s:4:"𒌟";i:13540;s:4:"𒌠";i:13541;s:4:"𒌡";i:13542;s:4:"𒌢";i:13543;s:4:"𒌣";i:13544;s:4:"𒌤";i:13545;s:4:"𒌥";i:13546;s:4:"𒌦";i:13547;s:4:"𒌧";i:13548;s:4:"𒌨";i:13549;s:4:"𒌩";i:13550;s:4:"𒌪";i:13551;s:4:"𒌫";i:13552;s:4:"𒌬";i:13553;s:4:"𒌭";i:13554;s:4:"𒌮";i:13555;s:4:"𒌯";i:13556;s:4:"𒌰";i:13557;s:4:"𒌱";i:13558;s:4:"𒌲";i:13559;s:4:"𒌳";i:13560;s:4:"𒌴";i:13561;s:4:"𒌵";i:13562;s:4:"𒌶";i:13563;s:4:"𒌷";i:13564;s:4:"𒌸";i:13565;s:4:"𒌹";i:13566;s:4:"𒌺";i:13567;s:4:"𒌻";i:13568;s:4:"𒌼";i:13569;s:4:"𒌽";i:13570;s:4:"𒌾";i:13571;s:4:"𒌿";i:13572;s:4:"ð’€";i:13573;s:4:"ð’";i:13574;s:4:"ð’‚";i:13575;s:4:"ð’ƒ";i:13576;s:4:"ð’„";i:13577;s:4:"ð’…";i:13578;s:4:"ð’†";i:13579;s:4:"ð’‡";i:13580;s:4:"ð’ˆ";i:13581;s:4:"ð’‰";i:13582;s:4:"ð’Š";i:13583;s:4:"ð’‹";i:13584;s:4:"ð’Œ";i:13585;s:4:"ð’";i:13586;s:4:"ð’Ž";i:13587;s:4:"ð’";i:13588;s:4:"ð’";i:13589;s:4:"ð’‘";i:13590;s:4:"ð’’";i:13591;s:4:"ð’“";i:13592;s:4:"ð’”";i:13593;s:4:"ð’•";i:13594;s:4:"ð’–";i:13595;s:4:"ð’—";i:13596;s:4:"ð’˜";i:13597;s:4:"ð’™";i:13598;s:4:"ð’š";i:13599;s:4:"ð’›";i:13600;s:4:"ð’œ";i:13601;s:4:"ð’";i:13602;s:4:"ð’ž";i:13603;s:4:"ð’Ÿ";i:13604;s:4:"ð’ ";i:13605;s:4:"ð’¡";i:13606;s:4:"ð’¢";i:13607;s:4:"ð’£";i:13608;s:4:"ð’¤";i:13609;s:4:"ð’¥";i:13610;s:4:"ð’¦";i:13611;s:4:"ð’§";i:13612;s:4:"ð’¨";i:13613;s:4:"ð’©";i:13614;s:4:"ð’ª";i:13615;s:4:"ð’«";i:13616;s:4:"ð’¬";i:13617;s:4:"ð’­";i:13618;s:4:"ð’®";i:13619;s:4:"ð“€€";i:13620;s:4:"ð“€";i:13621;s:4:"𓀂";i:13622;s:4:"𓀃";i:13623;s:4:"𓀄";i:13624;s:4:"ð“€…";i:13625;s:4:"𓀆";i:13626;s:4:"𓀇";i:13627;s:4:"𓀈";i:13628;s:4:"𓀉";i:13629;s:4:"𓀊";i:13630;s:4:"𓀋";i:13631;s:4:"𓀌";i:13632;s:4:"ð“€";i:13633;s:4:"𓀎";i:13634;s:4:"ð“€";i:13635;s:4:"ð“€";i:13636;s:4:"𓀑";i:13637;s:4:"ð“€’";i:13638;s:4:"𓀓";i:13639;s:4:"ð“€”";i:13640;s:4:"𓀕";i:13641;s:4:"ð“€–";i:13642;s:4:"ð“€—";i:13643;s:4:"𓀘";i:13644;s:4:"ð“€™";i:13645;s:4:"𓀚";i:13646;s:4:"ð“€›";i:13647;s:4:"𓀜";i:13648;s:4:"ð“€";i:13649;s:4:"𓀞";i:13650;s:4:"𓀟";i:13651;s:4:"ð“€ ";i:13652;s:4:"𓀡";i:13653;s:4:"ð“€¢";i:13654;s:4:"ð“€£";i:13655;s:4:"𓀤";i:13656;s:4:"ð“€¥";i:13657;s:4:"𓀦";i:13658;s:4:"𓀧";i:13659;s:4:"𓀨";i:13660;s:4:"𓀩";i:13661;s:4:"𓀪";i:13662;s:4:"𓀫";i:13663;s:4:"𓀬";i:13664;s:4:"ð“€­";i:13665;s:4:"ð“€®";i:13666;s:4:"𓀯";i:13667;s:4:"ð“€°";i:13668;s:4:"ð“€±";i:13669;s:4:"ð“€²";i:13670;s:4:"ð“€³";i:13671;s:4:"ð“€´";i:13672;s:4:"ð“€µ";i:13673;s:4:"𓀶";i:13674;s:4:"ð“€·";i:13675;s:4:"𓀸";i:13676;s:4:"ð“€¹";i:13677;s:4:"𓀺";i:13678;s:4:"ð“€»";i:13679;s:4:"ð“€¼";i:13680;s:4:"ð“€½";i:13681;s:4:"ð“€¾";i:13682;s:4:"𓀿";i:13683;s:4:"ð“€";i:13684;s:4:"ð“";i:13685;s:4:"ð“‚";i:13686;s:4:"ð“ƒ";i:13687;s:4:"ð“„";i:13688;s:4:"ð“…";i:13689;s:4:"ð“†";i:13690;s:4:"ð“‡";i:13691;s:4:"ð“ˆ";i:13692;s:4:"ð“‰";i:13693;s:4:"ð“Š";i:13694;s:4:"ð“‹";i:13695;s:4:"ð“Œ";i:13696;s:4:"ð“";i:13697;s:4:"ð“Ž";i:13698;s:4:"ð“";i:13699;s:4:"ð“";i:13700;s:4:"ð“‘";i:13701;s:4:"ð“’";i:13702;s:4:"ð““";i:13703;s:4:"ð“”";i:13704;s:4:"ð“•";i:13705;s:4:"ð“–";i:13706;s:4:"ð“—";i:13707;s:4:"ð“˜";i:13708;s:4:"ð“™";i:13709;s:4:"ð“š";i:13710;s:4:"ð“›";i:13711;s:4:"ð“œ";i:13712;s:4:"ð“";i:13713;s:4:"ð“ž";i:13714;s:4:"ð“Ÿ";i:13715;s:4:"ð“ ";i:13716;s:4:"ð“¡";i:13717;s:4:"ð“¢";i:13718;s:4:"ð“£";i:13719;s:4:"ð“¤";i:13720;s:4:"ð“¥";i:13721;s:4:"ð“¦";i:13722;s:4:"ð“§";i:13723;s:4:"ð“¨";i:13724;s:4:"ð“©";i:13725;s:4:"ð“ª";i:13726;s:4:"ð“«";i:13727;s:4:"ð“¬";i:13728;s:4:"ð“­";i:13729;s:4:"ð“®";i:13730;s:4:"ð“¯";i:13731;s:4:"ð“°";i:13732;s:4:"ð“±";i:13733;s:4:"ð“²";i:13734;s:4:"ð“³";i:13735;s:4:"ð“´";i:13736;s:4:"ð“µ";i:13737;s:4:"ð“¶";i:13738;s:4:"ð“·";i:13739;s:4:"ð“¸";i:13740;s:4:"ð“¹";i:13741;s:4:"ð“º";i:13742;s:4:"ð“»";i:13743;s:4:"ð“¼";i:13744;s:4:"ð“½";i:13745;s:4:"ð“¾";i:13746;s:4:"ð“¿";i:13747;s:4:"ð“‚€";i:13748;s:4:"ð“‚";i:13749;s:4:"ð“‚‚";i:13750;s:4:"𓂃";i:13751;s:4:"ð“‚„";i:13752;s:4:"ð“‚…";i:13753;s:4:"𓂆";i:13754;s:4:"𓂇";i:13755;s:4:"𓂈";i:13756;s:4:"𓂉";i:13757;s:4:"ð“‚Š";i:13758;s:4:"ð“‚‹";i:13759;s:4:"ð“‚Œ";i:13760;s:4:"ð“‚";i:13761;s:4:"ð“‚Ž";i:13762;s:4:"ð“‚";i:13763;s:4:"ð“‚";i:13764;s:4:"ð“‚‘";i:13765;s:4:"ð“‚’";i:13766;s:4:"ð“‚“";i:13767;s:4:"ð“‚”";i:13768;s:4:"ð“‚•";i:13769;s:4:"ð“‚–";i:13770;s:4:"ð“‚—";i:13771;s:4:"𓂘";i:13772;s:4:"ð“‚™";i:13773;s:4:"ð“‚š";i:13774;s:4:"ð“‚›";i:13775;s:4:"ð“‚œ";i:13776;s:4:"ð“‚";i:13777;s:4:"ð“‚ž";i:13778;s:4:"ð“‚Ÿ";i:13779;s:4:"ð“‚ ";i:13780;s:4:"ð“‚¡";i:13781;s:4:"ð“‚¢";i:13782;s:4:"ð“‚£";i:13783;s:4:"𓂤";i:13784;s:4:"ð“‚¥";i:13785;s:4:"𓂦";i:13786;s:4:"𓂧";i:13787;s:4:"𓂨";i:13788;s:4:"ð“‚©";i:13789;s:4:"𓂪";i:13790;s:4:"ð“‚«";i:13791;s:4:"𓂬";i:13792;s:4:"ð“‚­";i:13793;s:4:"ð“‚®";i:13794;s:4:"𓂯";i:13795;s:4:"ð“‚°";i:13796;s:4:"ð“‚±";i:13797;s:4:"ð“‚²";i:13798;s:4:"ð“‚³";i:13799;s:4:"ð“‚´";i:13800;s:4:"ð“‚µ";i:13801;s:4:"𓂶";i:13802;s:4:"ð“‚·";i:13803;s:4:"𓂸";i:13804;s:4:"ð“‚¹";i:13805;s:4:"𓂺";i:13806;s:4:"ð“‚»";i:13807;s:4:"ð“‚¼";i:13808;s:4:"ð“‚½";i:13809;s:4:"ð“‚¾";i:13810;s:4:"ð“‚¿";i:13811;s:4:"𓃀";i:13812;s:4:"ð“ƒ";i:13813;s:4:"𓃂";i:13814;s:4:"𓃃";i:13815;s:4:"𓃄";i:13816;s:4:"𓃅";i:13817;s:4:"𓃆";i:13818;s:4:"𓃇";i:13819;s:4:"𓃈";i:13820;s:4:"𓃉";i:13821;s:4:"𓃊";i:13822;s:4:"𓃋";i:13823;s:4:"𓃌";i:13824;s:4:"ð“ƒ";i:13825;s:4:"𓃎";i:13826;s:4:"ð“ƒ";i:13827;s:4:"ð“ƒ";i:13828;s:4:"𓃑";i:13829;s:4:"𓃒";i:13830;s:4:"𓃓";i:13831;s:4:"𓃔";i:13832;s:4:"𓃕";i:13833;s:4:"𓃖";i:13834;s:4:"𓃗";i:13835;s:4:"𓃘";i:13836;s:4:"𓃙";i:13837;s:4:"𓃚";i:13838;s:4:"𓃛";i:13839;s:4:"𓃜";i:13840;s:4:"ð“ƒ";i:13841;s:4:"𓃞";i:13842;s:4:"𓃟";i:13843;s:4:"𓃠";i:13844;s:4:"𓃡";i:13845;s:4:"𓃢";i:13846;s:4:"𓃣";i:13847;s:4:"𓃤";i:13848;s:4:"𓃥";i:13849;s:4:"𓃦";i:13850;s:4:"𓃧";i:13851;s:4:"𓃨";i:13852;s:4:"𓃩";i:13853;s:4:"𓃪";i:13854;s:4:"𓃫";i:13855;s:4:"𓃬";i:13856;s:4:"𓃭";i:13857;s:4:"𓃮";i:13858;s:4:"𓃯";i:13859;s:4:"𓃰";i:13860;s:4:"𓃱";i:13861;s:4:"𓃲";i:13862;s:4:"𓃳";i:13863;s:4:"𓃴";i:13864;s:4:"𓃵";i:13865;s:4:"𓃶";i:13866;s:4:"𓃷";i:13867;s:4:"𓃸";i:13868;s:4:"𓃹";i:13869;s:4:"𓃺";i:13870;s:4:"𓃻";i:13871;s:4:"𓃼";i:13872;s:4:"𓃽";i:13873;s:4:"𓃾";i:13874;s:4:"𓃿";i:13875;s:4:"ð“„€";i:13876;s:4:"ð“„";i:13877;s:4:"ð“„‚";i:13878;s:4:"𓄃";i:13879;s:4:"ð“„„";i:13880;s:4:"ð“„…";i:13881;s:4:"𓄆";i:13882;s:4:"𓄇";i:13883;s:4:"𓄈";i:13884;s:4:"𓄉";i:13885;s:4:"ð“„Š";i:13886;s:4:"ð“„‹";i:13887;s:4:"ð“„Œ";i:13888;s:4:"ð“„";i:13889;s:4:"ð“„Ž";i:13890;s:4:"ð“„";i:13891;s:4:"ð“„";i:13892;s:4:"ð“„‘";i:13893;s:4:"ð“„’";i:13894;s:4:"ð“„“";i:13895;s:4:"ð“„”";i:13896;s:4:"ð“„•";i:13897;s:4:"ð“„–";i:13898;s:4:"ð“„—";i:13899;s:4:"𓄘";i:13900;s:4:"ð“„™";i:13901;s:4:"ð“„š";i:13902;s:4:"ð“„›";i:13903;s:4:"ð“„œ";i:13904;s:4:"ð“„";i:13905;s:4:"ð“„ž";i:13906;s:4:"ð“„Ÿ";i:13907;s:4:"ð“„ ";i:13908;s:4:"ð“„¡";i:13909;s:4:"ð“„¢";i:13910;s:4:"ð“„£";i:13911;s:4:"𓄤";i:13912;s:4:"ð“„¥";i:13913;s:4:"𓄦";i:13914;s:4:"𓄧";i:13915;s:4:"𓄨";i:13916;s:4:"ð“„©";i:13917;s:4:"𓄪";i:13918;s:4:"ð“„«";i:13919;s:4:"𓄬";i:13920;s:4:"ð“„­";i:13921;s:4:"ð“„®";i:13922;s:4:"𓄯";i:13923;s:4:"ð“„°";i:13924;s:4:"ð“„±";i:13925;s:4:"ð“„²";i:13926;s:4:"ð“„³";i:13927;s:4:"ð“„´";i:13928;s:4:"ð“„µ";i:13929;s:4:"𓄶";i:13930;s:4:"ð“„·";i:13931;s:4:"𓄸";i:13932;s:4:"ð“„¹";i:13933;s:4:"𓄺";i:13934;s:4:"ð“„»";i:13935;s:4:"ð“„¼";i:13936;s:4:"ð“„½";i:13937;s:4:"ð“„¾";i:13938;s:4:"ð“„¿";i:13939;s:4:"ð“…€";i:13940;s:4:"ð“…";i:13941;s:4:"ð“…‚";i:13942;s:4:"ð“…ƒ";i:13943;s:4:"ð“…„";i:13944;s:4:"ð“……";i:13945;s:4:"ð“…†";i:13946;s:4:"ð“…‡";i:13947;s:4:"ð“…ˆ";i:13948;s:4:"ð“…‰";i:13949;s:4:"ð“…Š";i:13950;s:4:"ð“…‹";i:13951;s:4:"ð“…Œ";i:13952;s:4:"ð“…";i:13953;s:4:"ð“…Ž";i:13954;s:4:"ð“…";i:13955;s:4:"ð“…";i:13956;s:4:"ð“…‘";i:13957;s:4:"ð“…’";i:13958;s:4:"ð“…“";i:13959;s:4:"ð“…”";i:13960;s:4:"ð“…•";i:13961;s:4:"ð“…–";i:13962;s:4:"ð“…—";i:13963;s:4:"ð“…˜";i:13964;s:4:"ð“…™";i:13965;s:4:"ð“…š";i:13966;s:4:"ð“…›";i:13967;s:4:"ð“…œ";i:13968;s:4:"ð“…";i:13969;s:4:"ð“…ž";i:13970;s:4:"ð“…Ÿ";i:13971;s:4:"ð“… ";i:13972;s:4:"ð“…¡";i:13973;s:4:"ð“…¢";i:13974;s:4:"ð“…£";i:13975;s:4:"ð“…¤";i:13976;s:4:"ð“…¥";i:13977;s:4:"ð“…¦";i:13978;s:4:"ð“…§";i:13979;s:4:"ð“…¨";i:13980;s:4:"ð“…©";i:13981;s:4:"ð“…ª";i:13982;s:4:"ð“…«";i:13983;s:4:"ð“…¬";i:13984;s:4:"ð“…­";i:13985;s:4:"ð“…®";i:13986;s:4:"ð“…¯";i:13987;s:4:"ð“…°";i:13988;s:4:"ð“…±";i:13989;s:4:"ð“…²";i:13990;s:4:"ð“…³";i:13991;s:4:"ð“…´";i:13992;s:4:"ð“…µ";i:13993;s:4:"ð“…¶";i:13994;s:4:"ð“…·";i:13995;s:4:"ð“…¸";i:13996;s:4:"ð“…¹";i:13997;s:4:"ð“…º";i:13998;s:4:"ð“…»";i:13999;s:4:"ð“…¼";i:14000;s:4:"ð“…½";i:14001;s:4:"ð“…¾";i:14002;s:4:"ð“…¿";i:14003;s:4:"𓆀";i:14004;s:4:"ð“†";i:14005;s:4:"𓆂";i:14006;s:4:"𓆃";i:14007;s:4:"𓆄";i:14008;s:4:"𓆅";i:14009;s:4:"𓆆";i:14010;s:4:"𓆇";i:14011;s:4:"𓆈";i:14012;s:4:"𓆉";i:14013;s:4:"𓆊";i:14014;s:4:"𓆋";i:14015;s:4:"𓆌";i:14016;s:4:"ð“†";i:14017;s:4:"𓆎";i:14018;s:4:"ð“†";i:14019;s:4:"ð“†";i:14020;s:4:"𓆑";i:14021;s:4:"𓆒";i:14022;s:4:"𓆓";i:14023;s:4:"𓆔";i:14024;s:4:"𓆕";i:14025;s:4:"𓆖";i:14026;s:4:"𓆗";i:14027;s:4:"𓆘";i:14028;s:4:"𓆙";i:14029;s:4:"𓆚";i:14030;s:4:"𓆛";i:14031;s:4:"𓆜";i:14032;s:4:"ð“†";i:14033;s:4:"𓆞";i:14034;s:4:"𓆟";i:14035;s:4:"𓆠";i:14036;s:4:"𓆡";i:14037;s:4:"𓆢";i:14038;s:4:"𓆣";i:14039;s:4:"𓆤";i:14040;s:4:"𓆥";i:14041;s:4:"𓆦";i:14042;s:4:"𓆧";i:14043;s:4:"𓆨";i:14044;s:4:"𓆩";i:14045;s:4:"𓆪";i:14046;s:4:"𓆫";i:14047;s:4:"𓆬";i:14048;s:4:"𓆭";i:14049;s:4:"𓆮";i:14050;s:4:"𓆯";i:14051;s:4:"𓆰";i:14052;s:4:"𓆱";i:14053;s:4:"𓆲";i:14054;s:4:"𓆳";i:14055;s:4:"𓆴";i:14056;s:4:"𓆵";i:14057;s:4:"𓆶";i:14058;s:4:"𓆷";i:14059;s:4:"𓆸";i:14060;s:4:"𓆹";i:14061;s:4:"𓆺";i:14062;s:4:"𓆻";i:14063;s:4:"𓆼";i:14064;s:4:"𓆽";i:14065;s:4:"𓆾";i:14066;s:4:"𓆿";i:14067;s:4:"𓇀";i:14068;s:4:"ð“‡";i:14069;s:4:"𓇂";i:14070;s:4:"𓇃";i:14071;s:4:"𓇄";i:14072;s:4:"𓇅";i:14073;s:4:"𓇆";i:14074;s:4:"𓇇";i:14075;s:4:"𓇈";i:14076;s:4:"𓇉";i:14077;s:4:"𓇊";i:14078;s:4:"𓇋";i:14079;s:4:"𓇌";i:14080;s:4:"ð“‡";i:14081;s:4:"𓇎";i:14082;s:4:"ð“‡";i:14083;s:4:"ð“‡";i:14084;s:4:"𓇑";i:14085;s:4:"𓇒";i:14086;s:4:"𓇓";i:14087;s:4:"𓇔";i:14088;s:4:"𓇕";i:14089;s:4:"𓇖";i:14090;s:4:"𓇗";i:14091;s:4:"𓇘";i:14092;s:4:"𓇙";i:14093;s:4:"𓇚";i:14094;s:4:"𓇛";i:14095;s:4:"𓇜";i:14096;s:4:"ð“‡";i:14097;s:4:"𓇞";i:14098;s:4:"𓇟";i:14099;s:4:"𓇠";i:14100;s:4:"𓇡";i:14101;s:4:"𓇢";i:14102;s:4:"𓇣";i:14103;s:4:"𓇤";i:14104;s:4:"𓇥";i:14105;s:4:"𓇦";i:14106;s:4:"𓇧";i:14107;s:4:"𓇨";i:14108;s:4:"𓇩";i:14109;s:4:"𓇪";i:14110;s:4:"𓇫";i:14111;s:4:"𓇬";i:14112;s:4:"𓇭";i:14113;s:4:"𓇮";i:14114;s:4:"𓇯";i:14115;s:4:"𓇰";i:14116;s:4:"𓇱";i:14117;s:4:"𓇲";i:14118;s:4:"𓇳";i:14119;s:4:"𓇴";i:14120;s:4:"𓇵";i:14121;s:4:"𓇶";i:14122;s:4:"𓇷";i:14123;s:4:"𓇸";i:14124;s:4:"𓇹";i:14125;s:4:"𓇺";i:14126;s:4:"𓇻";i:14127;s:4:"𓇼";i:14128;s:4:"𓇽";i:14129;s:4:"𓇾";i:14130;s:4:"𓇿";i:14131;s:4:"𓈀";i:14132;s:4:"ð“ˆ";i:14133;s:4:"𓈂";i:14134;s:4:"𓈃";i:14135;s:4:"𓈄";i:14136;s:4:"𓈅";i:14137;s:4:"𓈆";i:14138;s:4:"𓈇";i:14139;s:4:"𓈈";i:14140;s:4:"𓈉";i:14141;s:4:"𓈊";i:14142;s:4:"𓈋";i:14143;s:4:"𓈌";i:14144;s:4:"ð“ˆ";i:14145;s:4:"𓈎";i:14146;s:4:"ð“ˆ";i:14147;s:4:"ð“ˆ";i:14148;s:4:"𓈑";i:14149;s:4:"𓈒";i:14150;s:4:"𓈓";i:14151;s:4:"𓈔";i:14152;s:4:"𓈕";i:14153;s:4:"𓈖";i:14154;s:4:"𓈗";i:14155;s:4:"𓈘";i:14156;s:4:"𓈙";i:14157;s:4:"𓈚";i:14158;s:4:"𓈛";i:14159;s:4:"𓈜";i:14160;s:4:"ð“ˆ";i:14161;s:4:"𓈞";i:14162;s:4:"𓈟";i:14163;s:4:"𓈠";i:14164;s:4:"𓈡";i:14165;s:4:"𓈢";i:14166;s:4:"𓈣";i:14167;s:4:"𓈤";i:14168;s:4:"𓈥";i:14169;s:4:"𓈦";i:14170;s:4:"𓈧";i:14171;s:4:"𓈨";i:14172;s:4:"𓈩";i:14173;s:4:"𓈪";i:14174;s:4:"𓈫";i:14175;s:4:"𓈬";i:14176;s:4:"𓈭";i:14177;s:4:"𓈮";i:14178;s:4:"𓈯";i:14179;s:4:"𓈰";i:14180;s:4:"𓈱";i:14181;s:4:"𓈲";i:14182;s:4:"𓈳";i:14183;s:4:"𓈴";i:14184;s:4:"𓈵";i:14185;s:4:"𓈶";i:14186;s:4:"𓈷";i:14187;s:4:"𓈸";i:14188;s:4:"𓈹";i:14189;s:4:"𓈺";i:14190;s:4:"𓈻";i:14191;s:4:"𓈼";i:14192;s:4:"𓈽";i:14193;s:4:"𓈾";i:14194;s:4:"𓈿";i:14195;s:4:"𓉀";i:14196;s:4:"ð“‰";i:14197;s:4:"𓉂";i:14198;s:4:"𓉃";i:14199;s:4:"𓉄";i:14200;s:4:"𓉅";i:14201;s:4:"𓉆";i:14202;s:4:"𓉇";i:14203;s:4:"𓉈";i:14204;s:4:"𓉉";i:14205;s:4:"𓉊";i:14206;s:4:"𓉋";i:14207;s:4:"𓉌";i:14208;s:4:"ð“‰";i:14209;s:4:"𓉎";i:14210;s:4:"ð“‰";i:14211;s:4:"ð“‰";i:14212;s:4:"𓉑";i:14213;s:4:"𓉒";i:14214;s:4:"𓉓";i:14215;s:4:"𓉔";i:14216;s:4:"𓉕";i:14217;s:4:"𓉖";i:14218;s:4:"𓉗";i:14219;s:4:"𓉘";i:14220;s:4:"𓉙";i:14221;s:4:"𓉚";i:14222;s:4:"𓉛";i:14223;s:4:"𓉜";i:14224;s:4:"ð“‰";i:14225;s:4:"𓉞";i:14226;s:4:"𓉟";i:14227;s:4:"𓉠";i:14228;s:4:"𓉡";i:14229;s:4:"𓉢";i:14230;s:4:"𓉣";i:14231;s:4:"𓉤";i:14232;s:4:"𓉥";i:14233;s:4:"𓉦";i:14234;s:4:"𓉧";i:14235;s:4:"𓉨";i:14236;s:4:"𓉩";i:14237;s:4:"𓉪";i:14238;s:4:"𓉫";i:14239;s:4:"𓉬";i:14240;s:4:"𓉭";i:14241;s:4:"𓉮";i:14242;s:4:"𓉯";i:14243;s:4:"𓉰";i:14244;s:4:"𓉱";i:14245;s:4:"𓉲";i:14246;s:4:"𓉳";i:14247;s:4:"𓉴";i:14248;s:4:"𓉵";i:14249;s:4:"𓉶";i:14250;s:4:"𓉷";i:14251;s:4:"𓉸";i:14252;s:4:"𓉹";i:14253;s:4:"𓉺";i:14254;s:4:"𓉻";i:14255;s:4:"𓉼";i:14256;s:4:"𓉽";i:14257;s:4:"𓉾";i:14258;s:4:"𓉿";i:14259;s:4:"ð“Š€";i:14260;s:4:"ð“Š";i:14261;s:4:"ð“Š‚";i:14262;s:4:"𓊃";i:14263;s:4:"ð“Š„";i:14264;s:4:"ð“Š…";i:14265;s:4:"𓊆";i:14266;s:4:"𓊇";i:14267;s:4:"𓊈";i:14268;s:4:"𓊉";i:14269;s:4:"ð“ŠŠ";i:14270;s:4:"ð“Š‹";i:14271;s:4:"ð“ŠŒ";i:14272;s:4:"ð“Š";i:14273;s:4:"ð“ŠŽ";i:14274;s:4:"ð“Š";i:14275;s:4:"ð“Š";i:14276;s:4:"ð“Š‘";i:14277;s:4:"ð“Š’";i:14278;s:4:"ð“Š“";i:14279;s:4:"ð“Š”";i:14280;s:4:"ð“Š•";i:14281;s:4:"ð“Š–";i:14282;s:4:"ð“Š—";i:14283;s:4:"𓊘";i:14284;s:4:"ð“Š™";i:14285;s:4:"ð“Šš";i:14286;s:4:"ð“Š›";i:14287;s:4:"ð“Šœ";i:14288;s:4:"ð“Š";i:14289;s:4:"ð“Šž";i:14290;s:4:"ð“ŠŸ";i:14291;s:4:"ð“Š ";i:14292;s:4:"ð“Š¡";i:14293;s:4:"ð“Š¢";i:14294;s:4:"ð“Š£";i:14295;s:4:"𓊤";i:14296;s:4:"ð“Š¥";i:14297;s:4:"𓊦";i:14298;s:4:"𓊧";i:14299;s:4:"𓊨";i:14300;s:4:"ð“Š©";i:14301;s:4:"𓊪";i:14302;s:4:"ð“Š«";i:14303;s:4:"𓊬";i:14304;s:4:"ð“Š­";i:14305;s:4:"ð“Š®";i:14306;s:4:"𓊯";i:14307;s:4:"ð“Š°";i:14308;s:4:"𓊱";i:14309;s:4:"𓊲";i:14310;s:4:"𓊳";i:14311;s:4:"ð“Š´";i:14312;s:4:"𓊵";i:14313;s:4:"𓊶";i:14314;s:4:"ð“Š·";i:14315;s:4:"𓊸";i:14316;s:4:"𓊹";i:14317;s:4:"𓊺";i:14318;s:4:"ð“Š»";i:14319;s:4:"𓊼";i:14320;s:4:"𓊽";i:14321;s:4:"𓊾";i:14322;s:4:"ð“Š¿";i:14323;s:4:"ð“‹€";i:14324;s:4:"ð“‹";i:14325;s:4:"ð“‹‚";i:14326;s:4:"𓋃";i:14327;s:4:"ð“‹„";i:14328;s:4:"ð“‹…";i:14329;s:4:"𓋆";i:14330;s:4:"𓋇";i:14331;s:4:"𓋈";i:14332;s:4:"𓋉";i:14333;s:4:"ð“‹Š";i:14334;s:4:"ð“‹‹";i:14335;s:4:"ð“‹Œ";i:14336;s:4:"ð“‹";i:14337;s:4:"ð“‹Ž";i:14338;s:4:"ð“‹";i:14339;s:4:"ð“‹";i:14340;s:4:"ð“‹‘";i:14341;s:4:"ð“‹’";i:14342;s:4:"ð“‹“";i:14343;s:4:"ð“‹”";i:14344;s:4:"ð“‹•";i:14345;s:4:"ð“‹–";i:14346;s:4:"ð“‹—";i:14347;s:4:"𓋘";i:14348;s:4:"ð“‹™";i:14349;s:4:"ð“‹š";i:14350;s:4:"ð“‹›";i:14351;s:4:"ð“‹œ";i:14352;s:4:"ð“‹";i:14353;s:4:"ð“‹ž";i:14354;s:4:"ð“‹Ÿ";i:14355;s:4:"ð“‹ ";i:14356;s:4:"ð“‹¡";i:14357;s:4:"ð“‹¢";i:14358;s:4:"ð“‹£";i:14359;s:4:"𓋤";i:14360;s:4:"ð“‹¥";i:14361;s:4:"𓋦";i:14362;s:4:"𓋧";i:14363;s:4:"𓋨";i:14364;s:4:"ð“‹©";i:14365;s:4:"𓋪";i:14366;s:4:"ð“‹«";i:14367;s:4:"𓋬";i:14368;s:4:"ð“‹­";i:14369;s:4:"ð“‹®";i:14370;s:4:"𓋯";i:14371;s:4:"ð“‹°";i:14372;s:4:"ð“‹±";i:14373;s:4:"ð“‹²";i:14374;s:4:"ð“‹³";i:14375;s:4:"ð“‹´";i:14376;s:4:"ð“‹µ";i:14377;s:4:"𓋶";i:14378;s:4:"ð“‹·";i:14379;s:4:"𓋸";i:14380;s:4:"ð“‹¹";i:14381;s:4:"𓋺";i:14382;s:4:"ð“‹»";i:14383;s:4:"ð“‹¼";i:14384;s:4:"ð“‹½";i:14385;s:4:"ð“‹¾";i:14386;s:4:"ð“‹¿";i:14387;s:4:"𓌀";i:14388;s:4:"ð“Œ";i:14389;s:4:"𓌂";i:14390;s:4:"𓌃";i:14391;s:4:"𓌄";i:14392;s:4:"𓌅";i:14393;s:4:"𓌆";i:14394;s:4:"𓌇";i:14395;s:4:"𓌈";i:14396;s:4:"𓌉";i:14397;s:4:"𓌊";i:14398;s:4:"𓌋";i:14399;s:4:"𓌌";i:14400;s:4:"ð“Œ";i:14401;s:4:"𓌎";i:14402;s:4:"ð“Œ";i:14403;s:4:"ð“Œ";i:14404;s:4:"𓌑";i:14405;s:4:"𓌒";i:14406;s:4:"𓌓";i:14407;s:4:"𓌔";i:14408;s:4:"𓌕";i:14409;s:4:"𓌖";i:14410;s:4:"𓌗";i:14411;s:4:"𓌘";i:14412;s:4:"𓌙";i:14413;s:4:"𓌚";i:14414;s:4:"𓌛";i:14415;s:4:"𓌜";i:14416;s:4:"ð“Œ";i:14417;s:4:"𓌞";i:14418;s:4:"𓌟";i:14419;s:4:"𓌠";i:14420;s:4:"𓌡";i:14421;s:4:"𓌢";i:14422;s:4:"𓌣";i:14423;s:4:"𓌤";i:14424;s:4:"𓌥";i:14425;s:4:"𓌦";i:14426;s:4:"𓌧";i:14427;s:4:"𓌨";i:14428;s:4:"𓌩";i:14429;s:4:"𓌪";i:14430;s:4:"𓌫";i:14431;s:4:"𓌬";i:14432;s:4:"𓌭";i:14433;s:4:"𓌮";i:14434;s:4:"𓌯";i:14435;s:4:"𓌰";i:14436;s:4:"𓌱";i:14437;s:4:"𓌲";i:14438;s:4:"𓌳";i:14439;s:4:"𓌴";i:14440;s:4:"𓌵";i:14441;s:4:"𓌶";i:14442;s:4:"𓌷";i:14443;s:4:"𓌸";i:14444;s:4:"𓌹";i:14445;s:4:"𓌺";i:14446;s:4:"𓌻";i:14447;s:4:"𓌼";i:14448;s:4:"𓌽";i:14449;s:4:"𓌾";i:14450;s:4:"𓌿";i:14451;s:4:"ð“€";i:14452;s:4:"ð“";i:14453;s:4:"ð“‚";i:14454;s:4:"ð“ƒ";i:14455;s:4:"ð“„";i:14456;s:4:"ð“…";i:14457;s:4:"ð“†";i:14458;s:4:"ð“‡";i:14459;s:4:"ð“ˆ";i:14460;s:4:"ð“‰";i:14461;s:4:"ð“Š";i:14462;s:4:"ð“‹";i:14463;s:4:"ð“Œ";i:14464;s:4:"ð“";i:14465;s:4:"ð“Ž";i:14466;s:4:"ð“";i:14467;s:4:"ð“";i:14468;s:4:"ð“‘";i:14469;s:4:"ð“’";i:14470;s:4:"ð““";i:14471;s:4:"ð“”";i:14472;s:4:"ð“•";i:14473;s:4:"ð“–";i:14474;s:4:"ð“—";i:14475;s:4:"ð“˜";i:14476;s:4:"ð“™";i:14477;s:4:"ð“š";i:14478;s:4:"ð“›";i:14479;s:4:"ð“œ";i:14480;s:4:"ð“";i:14481;s:4:"ð“ž";i:14482;s:4:"ð“Ÿ";i:14483;s:4:"ð“ ";i:14484;s:4:"ð“¡";i:14485;s:4:"ð“¢";i:14486;s:4:"ð“£";i:14487;s:4:"ð“¤";i:14488;s:4:"ð“¥";i:14489;s:4:"ð“¦";i:14490;s:4:"ð“§";i:14491;s:4:"ð“¨";i:14492;s:4:"ð“©";i:14493;s:4:"ð“ª";i:14494;s:4:"ð“«";i:14495;s:4:"ð“¬";i:14496;s:4:"ð“­";i:14497;s:4:"ð“®";i:14498;s:4:"ð“¯";i:14499;s:4:"ð“°";i:14500;s:4:"ð“±";i:14501;s:4:"ð“²";i:14502;s:4:"ð“³";i:14503;s:4:"ð“´";i:14504;s:4:"ð“µ";i:14505;s:4:"ð“¶";i:14506;s:4:"ð“·";i:14507;s:4:"ð“¸";i:14508;s:4:"ð“¹";i:14509;s:4:"ð“º";i:14510;s:4:"ð“»";i:14511;s:4:"ð“¼";i:14512;s:4:"ð“½";i:14513;s:4:"ð“¾";i:14514;s:4:"ð“¿";i:14515;s:4:"ð“Ž€";i:14516;s:4:"ð“Ž";i:14517;s:4:"ð“Ž‚";i:14518;s:4:"𓎃";i:14519;s:4:"ð“Ž„";i:14520;s:4:"ð“Ž…";i:14521;s:4:"𓎆";i:14522;s:4:"𓎇";i:14523;s:4:"𓎈";i:14524;s:4:"𓎉";i:14525;s:4:"ð“ŽŠ";i:14526;s:4:"ð“Ž‹";i:14527;s:4:"ð“ŽŒ";i:14528;s:4:"ð“Ž";i:14529;s:4:"ð“ŽŽ";i:14530;s:4:"ð“Ž";i:14531;s:4:"ð“Ž";i:14532;s:4:"ð“Ž‘";i:14533;s:4:"ð“Ž’";i:14534;s:4:"ð“Ž“";i:14535;s:4:"ð“Ž”";i:14536;s:4:"ð“Ž•";i:14537;s:4:"ð“Ž–";i:14538;s:4:"ð“Ž—";i:14539;s:4:"𓎘";i:14540;s:4:"ð“Ž™";i:14541;s:4:"ð“Žš";i:14542;s:4:"ð“Ž›";i:14543;s:4:"ð“Žœ";i:14544;s:4:"ð“Ž";i:14545;s:4:"ð“Žž";i:14546;s:4:"ð“ŽŸ";i:14547;s:4:"ð“Ž ";i:14548;s:4:"ð“Ž¡";i:14549;s:4:"ð“Ž¢";i:14550;s:4:"ð“Ž£";i:14551;s:4:"𓎤";i:14552;s:4:"ð“Ž¥";i:14553;s:4:"𓎦";i:14554;s:4:"𓎧";i:14555;s:4:"𓎨";i:14556;s:4:"ð“Ž©";i:14557;s:4:"𓎪";i:14558;s:4:"ð“Ž«";i:14559;s:4:"𓎬";i:14560;s:4:"ð“Ž­";i:14561;s:4:"ð“Ž®";i:14562;s:4:"𓎯";i:14563;s:4:"ð“Ž°";i:14564;s:4:"𓎱";i:14565;s:4:"𓎲";i:14566;s:4:"𓎳";i:14567;s:4:"ð“Ž´";i:14568;s:4:"𓎵";i:14569;s:4:"𓎶";i:14570;s:4:"ð“Ž·";i:14571;s:4:"𓎸";i:14572;s:4:"𓎹";i:14573;s:4:"𓎺";i:14574;s:4:"ð“Ž»";i:14575;s:4:"𓎼";i:14576;s:4:"𓎽";i:14577;s:4:"𓎾";i:14578;s:4:"ð“Ž¿";i:14579;s:4:"ð“€";i:14580;s:4:"ð“";i:14581;s:4:"ð“‚";i:14582;s:4:"ð“ƒ";i:14583;s:4:"ð“„";i:14584;s:4:"ð“…";i:14585;s:4:"ð“†";i:14586;s:4:"ð“‡";i:14587;s:4:"ð“ˆ";i:14588;s:4:"ð“‰";i:14589;s:4:"ð“Š";i:14590;s:4:"ð“‹";i:14591;s:4:"ð“Œ";i:14592;s:4:"ð“";i:14593;s:4:"ð“Ž";i:14594;s:4:"ð“";i:14595;s:4:"ð“";i:14596;s:4:"ð“‘";i:14597;s:4:"ð“’";i:14598;s:4:"ð““";i:14599;s:4:"ð“”";i:14600;s:4:"ð“•";i:14601;s:4:"ð“–";i:14602;s:4:"ð“—";i:14603;s:4:"ð“˜";i:14604;s:4:"ð“™";i:14605;s:4:"ð“š";i:14606;s:4:"ð“›";i:14607;s:4:"ð“œ";i:14608;s:4:"ð“";i:14609;s:4:"ð“ž";i:14610;s:4:"ð“Ÿ";i:14611;s:4:"ð“ ";i:14612;s:4:"ð“¡";i:14613;s:4:"ð“¢";i:14614;s:4:"ð“£";i:14615;s:4:"ð“¤";i:14616;s:4:"ð“¥";i:14617;s:4:"ð“¦";i:14618;s:4:"ð“§";i:14619;s:4:"ð“¨";i:14620;s:4:"ð“©";i:14621;s:4:"ð“ª";i:14622;s:4:"ð“«";i:14623;s:4:"ð“¬";i:14624;s:4:"ð“­";i:14625;s:4:"ð“®";i:14626;s:4:"ð“¯";i:14627;s:4:"ð“°";i:14628;s:4:"ð“±";i:14629;s:4:"ð“²";i:14630;s:4:"ð“³";i:14631;s:4:"ð“´";i:14632;s:4:"ð“µ";i:14633;s:4:"ð“¶";i:14634;s:4:"ð“·";i:14635;s:4:"ð“¸";i:14636;s:4:"ð“¹";i:14637;s:4:"ð“º";i:14638;s:4:"ð“»";i:14639;s:4:"ð“¼";i:14640;s:4:"ð“½";i:14641;s:4:"ð“¾";i:14642;s:4:"ð“¿";i:14643;s:4:"ð“€";i:14644;s:4:"ð“";i:14645;s:4:"ð“‚";i:14646;s:4:"ð“ƒ";i:14647;s:4:"ð“„";i:14648;s:4:"ð“…";i:14649;s:4:"ð“†";i:14650;s:4:"ð“‡";i:14651;s:4:"ð“ˆ";i:14652;s:4:"ð“‰";i:14653;s:4:"ð“Š";i:14654;s:4:"ð“‹";i:14655;s:4:"ð“Œ";i:14656;s:4:"ð“";i:14657;s:4:"ð“Ž";i:14658;s:4:"ð“";i:14659;s:4:"ð“";i:14660;s:4:"ð“‘";i:14661;s:4:"ð“’";i:14662;s:4:"ð““";i:14663;s:4:"ð“”";i:14664;s:4:"ð“•";i:14665;s:4:"ð“–";i:14666;s:4:"ð“—";i:14667;s:4:"ð“˜";i:14668;s:4:"ð“™";i:14669;s:4:"ð“š";i:14670;s:4:"ð“›";i:14671;s:4:"ð“œ";i:14672;s:4:"ð“";i:14673;s:4:"ð“ž";i:14674;s:4:"ð“Ÿ";i:14675;s:4:"ð“ ";i:14676;s:4:"ð“¡";i:14677;s:4:"ð“¢";i:14678;s:4:"ð“£";i:14679;s:4:"ð“¤";i:14680;s:4:"ð“¥";i:14681;s:4:"ð“¦";i:14682;s:4:"ð“§";i:14683;s:4:"ð“¨";i:14684;s:4:"ð“©";i:14685;s:4:"ð“ª";i:14686;s:4:"ð“«";i:14687;s:4:"ð“¬";i:14688;s:4:"ð“­";i:14689;s:4:"ð“®";i:14690;s:3:"㆒";i:14691;s:3:"㆜";i:14692;s:3:"㆔";i:14693;s:3:"㆖";i:14694;s:3:"㆘";i:14695;s:3:"㆛";i:14696;s:3:"㆗";i:14697;s:3:"㆚";i:14698;s:3:"㆓";i:14699;s:4:"🈘";i:14700;s:3:"㆟";i:14701;s:4:"🈞";i:14702;s:4:"🈠";i:14703;s:4:"🈜";i:14704;s:4:"🈹";i:14705;s:4:"🈒";i:14706;s:4:"🉑";i:14707;s:4:"🈮";i:14708;s:4:"🈴";i:14709;s:4:"🈥";i:14710;s:4:"🈺";i:14711;s:3:"㆕";i:14712;s:3:"㆞";i:14713;s:4:"🈤";i:14714;s:4:"🈕";i:14715;s:3:"ã†";i:14716;s:4:"🈑";i:14717;s:4:"🈬";i:14718;s:4:"ðŸˆ";i:14719;s:4:"ðŸ‰";i:14720;s:4:"ðŸˆ";i:14721;s:4:"🈱";i:14722;s:4:"🈧";i:14723;s:4:"🈯";i:14724;s:4:"🈨";i:14725;s:4:"🈛";i:14726;s:4:"🈟";i:14727;s:4:"🈙";i:14728;s:4:"🈷";i:14729;s:4:"🈶";i:14730;s:4:"🈵";i:14731;s:4:"🈦";i:14732;s:4:"🈚";i:14733;s:4:"🈢";i:14734;s:3:"㆙";i:14735;s:4:"🈸";i:14736;s:4:"🈲";i:14737;s:4:"🈳";i:14738;s:4:"🈡";i:14739;s:4:"🈖";i:14740;s:4:"🈣";i:14741;s:4:"🈰";i:14742;s:4:"🈫";} \ No newline at end of file
diff --git a/skins/ArchLinux.php b/skins/ArchLinux.php
index 62942536..02598641 100644
--- a/skins/ArchLinux.php
+++ b/skins/ArchLinux.php
@@ -22,25 +22,22 @@ class SkinArchLinux extends SkinTemplate {
function setupSkinUserCss( OutputPage $out ) {
global $wgHandheldStyle;
-
parent::setupSkinUserCss( $out );
- // Append to the default screen common & print styles...
- $out->addStyle( 'archlinux/main.css', 'screen' );
+ $out->addModuleStyles( 'skins.archlinux' );
+
+ // Ugh. Can't do this properly because $wgHandheldStyle may be a URL
if( $wgHandheldStyle ) {
// Currently in testing... try 'chick/main.css'
$out->addStyle( $wgHandheldStyle, 'handheld' );
}
+ // TODO: Migrate all of these
$out->addStyle( 'archlinux/IE50Fixes.css', 'screen', 'lt IE 5.5000' );
$out->addStyle( 'archlinux/IE55Fixes.css', 'screen', 'IE 5.5000' );
$out->addStyle( 'archlinux/IE60Fixes.css', 'screen', 'IE 6' );
$out->addStyle( 'archlinux/IE70Fixes.css', 'screen', 'IE 7' );
- $out->addStyle( 'archlinux/rtl.css', 'screen', '', 'rtl' );
-
- $out->addStyle( 'archlinux/archnavbar.css', 'screen' );
- $out->addStyle( 'archlinux/arch.css', 'screen' );
}
}
@@ -48,8 +45,13 @@ class SkinArchLinux extends SkinTemplate {
* @todo document
* @ingroup Skins
*/
-class ArchLinuxTemplate extends QuickTemplate {
+class ArchLinuxTemplate extends BaseTemplate {
+
+ /**
+ * @var Skin
+ */
var $skin;
+
/**
* Template filter callback for ArchLinux skin.
* Takes an associative array of data set from a SkinTemplate-based
@@ -59,37 +61,15 @@ class ArchLinuxTemplate extends QuickTemplate {
* @access private
*/
function execute() {
- global $wgRequest, $wgArchNavBar, $wgArchHome, $wgArchNavBarSelected, $wgArchNavBarSelectedDefault;
- $this->skin = $skin = $this->data['skin'];
- $action = $wgRequest->getText( 'action' );
+ global $wgArchNavBar, $wgArchHome, $wgArchNavBarSelected, $wgArchNavBarSelectedDefault;
+ $this->skin = $this->data['skin'];
// Suppress warnings to prevent notices about missing indexes in $this->data
wfSuppressWarnings();
- // Generate additional footer links
- $footerlinks = $this->data["footerlinks"];
- // fold footerlinks into a single array using a bit of trickery
- $footerlinks = call_user_func_array('array_merge', array_values($footerlinks));
- // Generate additional footer icons
- $footericons = $this->data["footericons"];
- // Unset any icons which don't have an image
- foreach ( $footericons as $footerIconsKey => &$footerIconsBlock ) {
- foreach ( $footerIconsBlock as $footerIconKey => $footerIcon ) {
- if ( !is_string($footerIcon) && !isset($footerIcon["src"]) ) {
- unset($footerIconsBlock[$footerIconKey]);
- }
- }
- }
- // Redo removal of any empty blocks
- foreach ( $footericons as $footerIconsKey => &$footerIconsBlock ) {
- if ( count($footerIconsBlock) <= 0 ) {
- unset($footericons[$footerIconsKey]);
- }
- }
-
$this->html( 'headelement' );
+?>
-if (empty($_REQUEST['printable'])) {?>
<div id="archnavbar"><!-- Arch Linux global navigation bar -->
<div id="archnavbarlogo">
<p><a id="logo" href="<?php if (isset($wgArchHome)) { echo $wgArchHome; } ?>"></a></p>
@@ -112,10 +92,9 @@ if (empty($_REQUEST['printable'])) {?>
</ul>
</div>
</div><!-- #archnavbar -->
-<?php }
-?><div id="globalWrapper">
-<div id="column-content"><div id="content" <?php $this->html("specialpageattributes") ?>>
+<div id="globalWrapper">
+<div id="column-content"><div id="content">
<a id="top"></a>
<?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
@@ -139,77 +118,45 @@ if (empty($_REQUEST['printable'])) {?>
</div>
</div></div>
<div id="column-one"<?php $this->html('userlangattributes') ?>>
- <div id="p-cactions" class="portlet">
- <h5><?php $this->msg('views') ?></h5>
- <div class="pBody">
- <ul><?php
- foreach($this->data['content_actions'] as $key => $tab) {
- echo '
- <li id="' . Sanitizer::escapeId( "ca-$key" ) . '"';
- if( $tab['class'] ) {
- echo ' class="'.htmlspecialchars($tab['class']).'"';
- }
- echo '><a href="'.htmlspecialchars($tab['href']).'"';
- # We don't want to give the watch tab an accesskey if the
- # page is being edited, because that conflicts with the
- # accesskey on the watch checkbox. We also don't want to
- # give the edit tab an accesskey, because that's fairly su-
- # perfluous and conflicts with an accesskey (Ctrl-E) often
- # used for editing in Safari.
- if( in_array( $action, array( 'edit', 'submit' ) )
- && in_array( $key, array( 'edit', 'watch', 'unwatch' ))) {
- echo $skin->tooltip( "ca-$key" );
- } else {
- echo $skin->tooltipAndAccesskey( "ca-$key" );
- }
- echo '>'.htmlspecialchars($tab['text']).'</a></li>';
- } ?>
-
- </ul>
- </div>
- </div>
+<?php $this->cactions(); ?>
<div class="portlet" id="p-personal">
<h5><?php $this->msg('personaltools') ?></h5>
<div class="pBody">
<ul<?php $this->html('userlangattributes') ?>>
-<?php foreach($this->data['personal_urls'] as $key => $item) { ?>
- <li id="<?php echo Sanitizer::escapeId( "pt-$key" ) ?>"<?php
- if ($item['active']) { ?> class="active"<?php } ?>><a href="<?php
- echo htmlspecialchars($item['href']) ?>"<?php echo $skin->tooltipAndAccesskey('pt-'.$key) ?><?php
- if(!empty($item['class'])) { ?> class="<?php
- echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php
- echo htmlspecialchars($item['text']) ?></a></li>
-<?php } ?>
+<?php foreach($this->getPersonalTools() as $key => $item) { ?>
+ <?php echo $this->makeListItem($key, $item); ?>
+
+<?php } ?>
</ul>
</div>
</div>
<div class="portlet" id="p-logo">
- <a style="background-image: url(<?php $this->text('logopath') ?>);" <?php
- ?>href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>"<?php
- echo $skin->tooltipAndAccesskey('p-logo') ?>></a>
+ <?php
+ $logoAttribs = array() + Linker::tooltipAndAccesskeyAttribs('p-logo');
+ $logoAttribs['style'] = "background-image: url({$this->data['logopath']});";
+ $logoAttribs['href'] = $this->data['nav_urls']['mainpage']['href'];
+ echo Html::element( 'a', $logoAttribs );
+ ?>
+
</div>
<script type="<?php $this->text('jsmimetype') ?>"> if (window.isMSIE55) fixalpha(); </script>
<?php
- $sidebar = $this->data['sidebar'];
- if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
- if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
- if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
- foreach ($sidebar as $boxName => $cont) {
- if ( $boxName == 'SEARCH' ) {
- $this->searchBox();
- } elseif ( $boxName == 'TOOLBOX' ) {
- $this->toolbox();
- } elseif ( $boxName == 'LANGUAGES' ) {
- $this->languageBox();
- } else {
- $this->customBox( $boxName, $cont );
- }
- }
+ $this->renderPortals( $this->data['sidebar'] );
?>
</div><!-- end of the left (by default at least) column -->
<div class="visualClear"></div>
+<?php
+ $validFooterIcons = $this->getFooterIcons( "icononly" );
+ $validFooterLinks = $this->getFooterLinks( "flat" ); // Additional footer links
+
+ if ( count( $validFooterIcons ) + count( $validFooterLinks ) > 0 ) { ?>
<div id="footer"<?php $this->html('userlangattributes') ?>>
-<?php foreach ( $footericons as $blockName => $footerIcons ) { ?>
+<?php
+ $footerEnd = '</div>';
+ } else {
+ $footerEnd = '';
+ }
+ foreach ( $validFooterIcons as $blockName => $footerIcons ) { ?>
<div id="f-<?php echo htmlspecialchars($blockName); ?>ico">
<?php foreach ( $footerIcons as $icon ) { ?>
<?php echo $this->skin->makeFooterIcon( $icon ); ?>
@@ -219,42 +166,50 @@ if (empty($_REQUEST['printable'])) {?>
</div>
<?php }
- // Generate additional footer links
- $validFooterLinks = array();
- foreach( $footerlinks as $aLink ) {
- if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
- $validFooterLinks[] = $aLink;
- }
- }
if ( count( $validFooterLinks ) > 0 ) {
?> <ul id="f-list">
<?php
- foreach( $validFooterLinks as $aLink ) {
- if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
-?> <li id="<?php echo $aLink ?>"><?php $this->html($aLink) ?></li>
-<?php }
+ foreach( $validFooterLinks as $aLink ) { ?>
+ <li id="<?php echo $aLink ?>"><?php $this->html($aLink) ?></li>
+<?php
}
?>
</ul>
<?php }
+echo $footerEnd;
?>
-</div>
-</div>
-<?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
-<?php $this->html('reporttime') ?>
-<?php if ( $this->data['debug'] ): ?>
-<!-- Debug output:
-<?php $this->text( 'debug' ); ?>
-
--->
-<?php endif;
+</div>
+<?php
+ $this->printTrail();
echo Html::closeElement( 'body' );
echo Html::closeElement( 'html' );
wfRestoreWarnings();
} // end of execute() method
/*************************************************************************************************/
+
+ protected function renderPortals( $sidebar ) {
+ if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
+ if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
+ if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
+
+ foreach( $sidebar as $boxName => $content ) {
+ if ( $content === false )
+ continue;
+
+ if ( $boxName == 'SEARCH' ) {
+ $this->searchBox();
+ } elseif ( $boxName == 'TOOLBOX' ) {
+ $this->toolbox();
+ } elseif ( $boxName == 'LANGUAGES' ) {
+ $this->languageBox();
+ } else {
+ $this->customBox( $boxName, $content );
+ }
+ }
+ }
+
function searchBox() {
global $wgUseTwoButtonsSearchForm;
?>
@@ -263,19 +218,15 @@ if (empty($_REQUEST['printable'])) {?>
<div id="searchBody" class="pBody">
<form action="<?php $this->text('wgScript') ?>" id="searchform">
<input type='hidden' name="title" value="<?php $this->text('searchtitle') ?>"/>
- <?php
- echo Html::input( 'search',
- isset( $this->data['search'] ) ? $this->data['search'] : '', 'search',
- array(
- 'id' => 'searchInput',
- 'title' => $this->skin->titleAttrib( 'search' ),
- 'accesskey' => $this->skin->accesskey( 'search' )
- ) ); ?>
+ <?php echo $this->makeSearchInput(array( "id" => "searchInput" )); ?>
- <input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('searcharticle') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> /><?php if ($wgUseTwoButtonsSearchForm) { ?>&#160;
- <input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> /><?php } else { ?>
+ <?php echo $this->makeSearchButton("go", array( "id" => "searchGoButton", "class" => "searchButton" ));
+ if ($wgUseTwoButtonsSearchForm): ?>&#160;
+ <?php echo $this->makeSearchButton("fulltext", array( "id" => "mw-searchButton", "class" => "searchButton" ));
+ else: ?>
- <div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php } ?>
+ <div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php
+ endif; ?>
</form>
</div>
@@ -283,6 +234,43 @@ if (empty($_REQUEST['printable'])) {?>
<?php
}
+ /**
+ * Prints the cactions bar.
+ * Shared between MonoBook and Modern
+ */
+ function cactions() {
+?>
+ <div id="p-cactions" class="portlet">
+ <h5><?php $this->msg('views') ?></h5>
+ <div class="pBody">
+ <ul><?php
+ foreach($this->data['content_actions'] as $key => $tab) {
+ $linkAttribs = array( 'href' => $tab['href'] );
+
+ if( isset( $tab["tooltiponly"] ) && $tab["tooltiponly"] ) {
+ $title = Linker::titleAttrib( "ca-$key" );
+ if ( $title !== false ) {
+ $linkAttribs['title'] = $title;
+ }
+ } else {
+ $linkAttribs += Linker::tooltipAndAccesskeyAttribs( "ca-$key" );
+ }
+ $linkHtml = Html::element( 'a', $linkAttribs, $tab['text'] );
+
+ /* Surround with a <li> */
+ $liAttribs = array( 'id' => Sanitizer::escapeId( "ca-$key" ) );
+ if( $tab['class'] ) {
+ $liAttribs['class'] = $tab['class'];
+ }
+ echo '
+ ' . Html::rawElement( 'li', $liAttribs, $linkHtml );
+ } ?>
+
+ </ul>
+ </div>
+ </div>
+<?php
+ }
/*************************************************************************************************/
function toolbox() {
?>
@@ -291,51 +279,13 @@ if (empty($_REQUEST['printable'])) {?>
<div class="pBody">
<ul>
<?php
- if($this->data['notspecialpage']) { ?>
- <li id="t-whatlinkshere"><a href="<?php
- echo htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href'])
- ?>"<?php echo $this->skin->tooltipAndAccesskey('t-whatlinkshere') ?>><?php $this->msg('whatlinkshere') ?></a></li>
-<?php
- if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
- <li id="t-recentchangeslinked"><a href="<?php
- echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
- ?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked-toolbox') ?></a></li>
-<?php }
- }
- if( isset( $this->data['nav_urls']['trackbacklink'] ) && $this->data['nav_urls']['trackbacklink'] ) { ?>
- <li id="t-trackbacklink"><a href="<?php
- echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
- ?>"<?php echo $this->skin->tooltipAndAccesskey('t-trackbacklink') ?>><?php $this->msg('trackbacklink') ?></a></li>
-<?php }
- if($this->data['feeds']) { ?>
- <li id="feedlinks"><?php foreach($this->data['feeds'] as $key => $feed) {
- ?><a id="<?php echo Sanitizer::escapeId( "feed-$key" ) ?>" href="<?php
- echo htmlspecialchars($feed['href']) ?>" rel="alternate" type="application/<?php echo $key ?>+xml" class="feedlink"<?php echo $this->skin->tooltipAndAccesskey('feed-'.$key) ?>><?php echo htmlspecialchars($feed['text'])?></a>&#160;
- <?php } ?></li><?php
- }
-
- foreach( array('contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) {
-
- if($this->data['nav_urls'][$special]) {
- ?><li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars($this->data['nav_urls'][$special]['href'])
- ?>"<?php echo $this->skin->tooltipAndAccesskey('t-'.$special) ?>><?php $this->msg($special) ?></a></li>
-<?php }
- }
-
- if(!empty($this->data['nav_urls']['print']['href'])) { ?>
- <li id="t-print"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['print']['href'])
- ?>" rel="alternate"<?php echo $this->skin->tooltipAndAccesskey('t-print') ?>><?php $this->msg('printableversion') ?></a></li><?php
- }
+ foreach ( $this->getToolbox() as $key => $tbitem ) { ?>
+ <?php echo $this->makeListItem($key, $tbitem); ?>
- if(!empty($this->data['nav_urls']['permalink']['href'])) { ?>
- <li id="t-permalink"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['permalink']['href'])
- ?>"<?php echo $this->skin->tooltipAndAccesskey('t-permalink') ?>><?php $this->msg('permalink') ?></a></li><?php
- } elseif ($this->data['nav_urls']['permalink']['href'] === '') { ?>
- <li id="t-ispermalink"<?php echo $this->skin->tooltip('t-ispermalink') ?>><?php $this->msg('permalink') ?></li><?php
+<?php
}
-
wfRunHooks( 'ArchLinuxTemplateToolboxEnd', array( &$this ) );
- wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this ) );
+ wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this, true ) );
?>
</ul>
</div>
@@ -351,10 +301,9 @@ if (empty($_REQUEST['printable'])) {?>
<h5<?php $this->html('userlangattributes') ?>><?php $this->msg('otherlanguages') ?></h5>
<div class="pBody">
<ul>
-<?php foreach($this->data['language_urls'] as $langlink) { ?>
- <li class="<?php echo htmlspecialchars($langlink['class'])?>"><?php
- ?><a href="<?php echo htmlspecialchars($langlink['href']) ?>" title="<?php
- echo htmlspecialchars($langlink['title']) ?>"><?php echo $langlink['text'] ?></a></li>
+<?php foreach($this->data['language_urls'] as $key => $langlink) { ?>
+ <?php echo $this->makeListItem($key, $langlink); ?>
+
<?php } ?>
</ul>
</div>
@@ -365,16 +314,21 @@ if (empty($_REQUEST['printable'])) {?>
/*************************************************************************************************/
function customBox( $bar, $cont ) {
+ $portletAttribs = array( 'class' => 'generated-sidebar portlet', 'id' => Sanitizer::escapeId( "p-$bar" ) );
+ $tooltip = Linker::titleAttrib( "p-$bar" );
+ if ( $tooltip !== false ) {
+ $portletAttribs['title'] = $tooltip;
+ }
+ echo ' ' . Html::openElement( 'div', $portletAttribs );
?>
- <div class='generated-sidebar portlet' id='<?php echo Sanitizer::escapeId( "p-$bar" ) ?>'<?php echo $this->skin->tooltip('p-'.$bar) ?>>
- <h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo htmlspecialchars($bar); else echo htmlspecialchars($out); ?></h5>
+
+ <h5><?php $msg = wfMessage( $bar ); echo htmlspecialchars( $msg->exists() ? $msg->text() : $bar ); ?></h5>
<div class='pBody'>
<?php if ( is_array( $cont ) ) { ?>
<ul>
-<?php foreach($cont as $val) { ?>
- <li id="<?php echo Sanitizer::escapeId($val['id']) ?>"<?php
- if ( $val['active'] ) { ?> class="active" <?php }
- ?>><a href="<?php echo htmlspecialchars($val['href']) ?>"<?php echo $this->skin->tooltipAndAccesskey($val['id']) ?>><?php echo htmlspecialchars($val['text']) ?></a></li>
+<?php foreach($cont as $key => $val) { ?>
+ <?php echo $this->makeListItem($key, $val); ?>
+
<?php } ?>
</ul>
<?php } else {
diff --git a/skins/Chick.php b/skins/Chick.php
index c8eb8152..b7cef695 100644
--- a/skins/Chick.php
+++ b/skins/Chick.php
@@ -23,8 +23,10 @@ class SkinChick extends SkinTemplate {
function setupSkinUserCss( OutputPage $out ){
parent::setupSkinUserCss( $out );
- // Append to the default screen common & print styles...
- $out->addStyle( 'chick/main.css', 'screen,handheld' );
+
+ $out->addModuleStyles( 'skins.chick' );
+
+ // TODO: Migrate all of these to RL
$out->addStyle( 'chick/IE50Fixes.css', 'screen,handheld', 'lt IE 5.5000' );
$out->addStyle( 'chick/IE55Fixes.css', 'screen,handheld', 'IE 5.5000' );
$out->addStyle( 'chick/IE60Fixes.css', 'screen,handheld', 'IE 6' );
diff --git a/skins/CologneBlue.php b/skins/CologneBlue.php
index 1ff2ccab..58b00fc6 100644
--- a/skins/CologneBlue.php
+++ b/skins/CologneBlue.php
@@ -15,37 +15,67 @@ if( !defined( 'MEDIAWIKI' ) ) {
* @todo document
* @ingroup Skins
*/
-class SkinCologneBlue extends Skin {
+class SkinCologneBlue extends SkinLegacy {
+ var $skinname = 'cologneblue', $stylename = 'cologneblue',
+ $template = 'CologneBlueTemplate';
- function getStylesheet() {
- return 'common/cologneblue.css';
- }
+ function setupSkinUserCss( OutputPage $out ){
+ parent::setupSkinUserCss( $out );
+ $out->addModuleStyles( 'skins.cologneblue' );
+
+ $qb = $this->qbSetting();
+ $rules = array();
- function getSkinName() {
- return 'cologneblue';
+ if ( 2 == $qb ) { # Right
+ $rules[] = "/* @noflip */#quickbar { position: absolute; right: 4px; }";
+ $rules[] = "/* @noflip */#article { margin-left: 4px; margin-right: 148px; }";
+ $rules[] = "/* @noflip */#footer { margin-right: 152px; }";
+ } elseif ( 1 == $qb ) {
+ $rules[] = "/* @noflip */#quickbar { position: absolute; left: 4px; }";
+ $rules[] = "/* @noflip */#article { margin-left: 148px; margin-right: 4px; }";
+ $rules[] = "/* @noflip */#footer { margin-left: 152px; }";
+ } elseif ( 3 == $qb ) { # Floating left
+ $rules[] = "/* @noflip */#quickbar { position:absolute; left:4px }";
+ $rules[] = "/* @noflip */#topbar { margin-left: 148px }";
+ $rules[] = "/* @noflip */#article { margin-left:148px; margin-right: 4px; }";
+ $rules[] = "/* @noflip */body>#quickbar { position:fixed; left:4px; top:4px; overflow:auto; bottom:4px;}"; # Hides from IE
+ $rules[] = "/* @noflip */#footer { margin-left: 152px; }";
+ } elseif ( 4 == $qb ) { # Floating right
+ $rules[] = "/* @noflip */#quickbar { position: fixed; right: 4px; }";
+ $rules[] = "/* @noflip */#topbar { margin-right: 148px }";
+ $rules[] = "/* @noflip */#article { margin-right: 148px; margin-left: 4px; }";
+ $rules[] = "/* @noflip */body>#quickbar { position: fixed; right: 4px; top: 4px; overflow: auto; bottom:4px;}"; # Hides from IE
+ $rules[] = "/* @noflip */#footer { margin-right: 152px; }";
+ }
+ $style = implode( "\n", $rules );
+ $out->addInlineStyle( $style, 'flip' );
}
+}
+
+class CologneBlueTemplate extends LegacyTemplate {
+
function doBeforeContent() {
$mainPageObj = Title::newMainPage();
$s = "\n<div id='content'>\n<div id='topbar'>" .
'<table width="100%" border="0" cellspacing="0" cellpadding="8"><tr>';
- $s .= '<td class="top" align="left" valign="middle" nowrap="nowrap">';
+ $s .= '<td class="top" nowrap="nowrap">';
$s .= '<a href="' . $mainPageObj->escapeLocalURL() . '">';
$s .= '<span id="sitetitle">' . wfMsg( 'sitetitle' ) . '</span></a>';
- $s .= '</td><td class="top" align="right" valign="bottom" width="100%">';
+ $s .= '</td><td class="top" id="top-syslinks" width="100%">';
$s .= $this->sysLinks();
- $s .= '</td></tr><tr><td valign="top">';
+ $s .= '</td></tr><tr><td class="top-subheader">';
$s .= '<font size="-1"><span id="sitesub">';
$s .= htmlspecialchars( wfMsg( 'sitesubtitle' ) ) . '</span></font>';
- $s .= '</td><td align="right">';
+ $s .= '</td><td class="top-linkcollection">';
$s .= '<font size="-1"><span id="langlinks">';
$s .= str_replace( '<br />', '', $this->otherLanguages() );
- $cat = $this->getCategoryLinks();
+ $cat = '<div id="catlinks" class="catlinks">' . $this->getSkin()->getCategoryLinks() . '</div>';
if( $cat ) {
$s .= "<br />$cat\n";
}
@@ -56,7 +86,7 @@ class SkinCologneBlue extends Skin {
$s .= "\n</div>\n<div id='article'>";
- $notice = wfGetSiteNotice();
+ $notice = $this->getSkin()->getSiteNotice();
if( $notice ) {
$s .= "\n<div id='siteNotice'>$notice</div>\n";
}
@@ -73,75 +103,38 @@ class SkinCologneBlue extends Skin {
$s .= "\n<div id='footer'>";
$s .= '<table width="98%" border="0" cellspacing="0"><tr>';
- $qb = $this->qbSetting();
- if ( 1 == $qb || 3 == $qb ) { # Left
- $s .= $this->getQuickbarCompensator();
- }
- $s .= '<td class="bottom" align="center" valign="top">';
+ $s .= '<td class="bottom">';
$s .= $this->bottomLinks();
$s .= $wgLang->pipeList( array(
- "\n<br />" . $this->link(
+ "\n<br />" . Linker::link(
Title::newMainPage(),
null,
array(),
array(),
array( 'known', 'noclasses' )
),
- $this->aboutLink(),
+ $this->getSkin()->aboutLink(),
$this->searchForm( wfMsg( 'qbfind' ) )
) );
$s .= "\n<br />" . $this->pageStats();
$s .= '</td>';
- if ( 2 == $qb ) { # Right
- $s .= $this->getQuickbarCompensator();
- }
$s .= "</tr></table>\n</div>\n</div>\n";
- if ( 0 != $qb ) {
+ if ( $this->getSkin()->qbSetting() != 0 ) {
$s .= $this->quickBar();
}
return $s;
}
- function setupSkinUserCss( OutputPage $out ){
- global $wgContLang;
- $qb = $this->qbSetting();
- $rules = array();
-
- if ( 2 == $qb ) { # Right
- $rules[] = "#quickbar { position: absolute; right: 4px; }";
- $rules[] = "#article { margin-left: 4px; margin-right: 148px; }";
- } elseif ( 1 == $qb ) {
- $rules[] = "#quickbar { position: absolute; left: 4px; }";
- $rules[] = "#article { margin-left: 148px; margin-right: 4px; }";
- } elseif ( 3 == $qb ) { # Floating left
- $rules[] = "#quickbar { position:absolute; left:4px }";
- $rules[] = "#topbar { margin-left: 148px }";
- $rules[] = "#article { margin-left:148px; margin-right: 4px; }";
- $rules[] = "body>#quickbar { position:fixed; left:4px; top:4px; overflow:auto ;bottom:4px;}"; # Hides from IE
- } elseif ( 4 == $qb ) { # Floating right
- $rules[] = "#quickbar { position: fixed; right: 4px; }";
- $rules[] = "#topbar { margin-right: 148px }";
- $rules[] = "#article { margin-right: 148px; margin-left: 4px; }";
- $rules[] = "body>#quickbar { position: fixed; right: 4px; top: 4px; overflow: auto ;bottom:4px;}"; # Hides from IE
- }
- $style = implode( "\n", $rules );
- if ( $wgContLang->getDir() === 'rtl' ) {
- $style = CSSJanus::transform( $style, true, false );
- }
- $out->addInlineStyle( $style );
- parent::setupSkinUserCss( $out );
- }
-
function sysLinks() {
global $wgUser, $wgLang;
$li = SpecialPage::getTitleFor( 'Userlogin' );
$lo = SpecialPage::getTitleFor( 'Userlogout' );
- $rt = $this->mTitle->getPrefixedURL();
+ $rt = $this->getSkin()->getTitle()->getPrefixedURL();
if ( 0 == strcasecmp( urlencode( $lo ), $rt ) ) {
$q = array();
} else {
@@ -149,20 +142,20 @@ class SkinCologneBlue extends Skin {
}
$s = array(
- $this->mainPageLink(),
- $this->linkKnown(
+ $this->getSkin()->mainPageLink(),
+ Linker::linkKnown(
Title::newFromText( wfMsgForContent( 'aboutpage' ) ),
wfMsg( 'about' )
),
- $this->linkKnown(
+ Linker::linkKnown(
Title::newFromText( wfMsgForContent( 'helppage' ) ),
wfMsg( 'help' )
),
- $this->linkKnown(
+ Linker::linkKnown(
Title::newFromText( wfMsgForContent( 'faqpage' ) ),
wfMsg( 'faq' )
),
- $this->specialLink( 'Specialpages' )
+ Linker::specialLink( 'Specialpages' )
);
/* show links to different language variants */
@@ -173,14 +166,14 @@ class SkinCologneBlue extends Skin {
$s[] = $this->extensionTabLinks();
}
if ( $wgUser->isLoggedIn() ) {
- $s[] = $this->linkKnown(
+ $s[] = Linker::linkKnown(
$lo,
wfMsg( 'logout' ),
array(),
$q
);
} else {
- $s[] = $this->linkKnown(
+ $s[] = Linker::linkKnown(
$li,
wfMsg( 'login' ),
array(),
@@ -198,7 +191,7 @@ class SkinCologneBlue extends Skin {
function quickBar(){
global $wgOut, $wgUser;
- $tns = $this->mTitle->getNamespace();
+ $tns = $this->getSkin()->getTitle()->getNamespace();
$s = "\n<div id='quickbar'>";
@@ -209,24 +202,38 @@ class SkinCologneBlue extends Skin {
$s .= $this->menuHead( 'qbbrowse' );
# Use the first heading from the Monobook sidebar as the "browse" section
- $bar = $this->buildSidebar();
+ $bar = $this->getSkin()->buildSidebar();
unset( $bar['SEARCH'] );
unset( $bar['LANGUAGES'] );
unset( $bar['TOOLBOX'] );
- $browseLinks = reset( $bar );
- foreach ( $browseLinks as $link ) {
- if ( $link['text'] != '-' ) {
- $s .= "<a href=\"{$link['href']}\">" .
- htmlspecialchars( $link['text'] ) . '</a>' . $sep;
+ $barnumber = 1;
+ foreach ( $bar as $heading => $browseLinks ) {
+ if ( $barnumber > 1 ) {
+ $headingMsg = wfMessage( $heading );
+ if ( $headingMsg->exists() ) {
+ $h = $headingMsg->text();
+ } else {
+ $h = $heading;
+ }
+ $s .= "\n<h6>" . htmlspecialchars( $h ) . "</h6>";
+ }
+ if( is_array( $browseLinks ) ) {
+ foreach ( $browseLinks as $link ) {
+ if ( $link['text'] != '-' ) {
+ $s .= "<a href=\"{$link['href']}\">" .
+ htmlspecialchars( $link['text'] ) . '</a>' . $sep;
+ }
+ }
}
+ $barnumber++;
}
if ( $wgOut->isArticle() ) {
$s .= $this->menuHead( 'qbedit' );
$s .= '<strong>' . $this->editThisPage() . '</strong>';
- $s .= $sep . $this->linkKnown(
+ $s .= $sep . Linker::linkKnown(
Title::newFromText( wfMsgForContent( 'edithelppage' ) ),
wfMsg( 'edithelp' )
);
@@ -264,10 +271,10 @@ class SkinCologneBlue extends Skin {
. $sep . $this->watchPageLinksLink();
if( $tns == NS_USER || $tns == NS_USER_TALK ) {
- $id = User::idFromName( $this->mTitle->getText() );
+ $id = User::idFromName( $this->getSkin()->getTitle()->getText() );
if( $id != 0 ) {
$s .= $sep . $this->userContribsLink();
- if( $this->showEmailUser( $id ) ) {
+ if( $this->getSkin()->showEmailUser( $id ) ) {
$s .= $sep . $this->emailUserLink();
}
}
@@ -277,7 +284,7 @@ class SkinCologneBlue extends Skin {
$s .= $this->menuHead( 'qbmyoptions' );
if ( $wgUser->isLoggedIn() ) {
- $tl = $this->link(
+ $tl = Linker::link(
$wgUser->getTalkPage(),
wfMsg( 'mytalk' ),
array(),
@@ -288,30 +295,30 @@ class SkinCologneBlue extends Skin {
$tl .= ' *';
}
- $s .= $this->link(
+ $s .= Linker::link(
$wgUser->getUserPage(),
wfMsg( 'mypage' ),
array(),
array(),
array( 'known', 'noclasses' )
- ) . $sep . $tl . $sep . $this->specialLink( 'Watchlist' )
+ ) . $sep . $tl . $sep . Linker::specialLink( 'Watchlist' )
. $sep .
- $this->link(
+ Linker::link(
SpecialPage::getSafeTitleFor( 'Contributions', $wgUser->getName() ),
wfMsg( 'mycontris' ),
array(),
array(),
array( 'known', 'noclasses' )
- ) . $sep . $this->specialLink( 'Preferences' )
- . $sep . $this->specialLink( 'Userlogout' );
+ ) . $sep . Linker::specialLink( 'Preferences' )
+ . $sep . Linker::specialLink( 'Userlogout' );
} else {
- $s .= $this->specialLink( 'Userlogin' );
+ $s .= Linker::specialLink( 'Userlogin' );
}
$s .= $this->menuHead( 'qbspecialpages' )
- . $this->specialLink( 'Newpages' )
- . $sep . $this->specialLink( 'Listfiles' )
- . $sep . $this->specialLink( 'Statistics' );
+ . Linker::specialLink( 'Newpages' )
+ . $sep . Linker::specialLink( 'Listfiles' )
+ . $sep . Linker::specialLink( 'Statistics' );
if( UploadBase::isEnabled() && UploadBase::isAllowed( $wgUser ) === true ) {
$s .= $sep . $this->getUploadLink();
}
@@ -323,7 +330,7 @@ class SkinCologneBlue extends Skin {
. wfMsg( 'sitesupport' ) . '</a>';
}
- $s .= $sep . $this->link(
+ $s .= $sep . Linker::link(
SpecialPage::getTitleFor( 'Specialpages' ),
wfMsg( 'moredotdotdot' ),
array(),
@@ -344,7 +351,7 @@ class SkinCologneBlue extends Skin {
global $wgRequest, $wgUseTwoButtonsSearchForm;
$search = $wgRequest->getText( 'search' );
- $action = $this->escapeSearchLink();
+ $action = $this->data['searchaction'];
$s = "<form id=\"searchform{$this->searchboxes}\" method=\"get\" class=\"inline\" action=\"$action\">";
if( $label != '' ) {
$s .= "{$label}: ";
diff --git a/skins/Modern.php b/skins/Modern.php
index 752d0ded..c4070b5d 100644
--- a/skins/Modern.php
+++ b/skins/Modern.php
@@ -22,11 +22,8 @@ class SkinModern extends SkinTemplate {
$template = 'ModernTemplate', $useHeadElement = true;
function setupSkinUserCss( OutputPage $out ){
- // Do not call parent::setupSkinUserCss(), we have our own print style
- $out->addStyle( 'common/shared.css', 'screen' );
- $out->addStyle( 'modern/main.css', 'screen' );
- $out->addStyle( 'modern/print.css', 'print' );
- $out->addStyle( 'modern/rtl.css', 'screen', '', 'rtl' );
+ parent::setupSkinUserCss( $out );
+ $out->addModuleStyles ('skins.modern');
}
}
@@ -35,6 +32,10 @@ class SkinModern extends SkinTemplate {
* @ingroup Skins
*/
class ModernTemplate extends MonoBookTemplate {
+
+ /**
+ * @var Skin
+ */
var $skin;
/**
* Template filter callback for Modern skin.
@@ -45,25 +46,11 @@ class ModernTemplate extends MonoBookTemplate {
* @access private
*/
function execute() {
- global $wgRequest;
$this->skin = $skin = $this->data['skin'];
- $action = $wgRequest->getText( 'action' );
// Suppress warnings to prevent notices about missing indexes in $this->data
wfSuppressWarnings();
- // Generate additional footer links
- $footerlinks = $this->data["footerlinks"];
- // fold footerlinks into a single array using a bit of trickery
- $footerlinks = call_user_func_array('array_merge', array_values($footerlinks));
- // Generate additional footer icons
- $footericons = $this->data["footericons"];
- // Unset copyright.copyright since we don't need the icon and already output a copyright from footerlinks
- unset($footericons["copyright"]["copyright"]);
- if ( count($footericons["copyright"]) <= 0 ) {
- unset($footericons["copyright"]);
- }
-
$this->html( 'headelement' );
?>
@@ -73,41 +60,14 @@ class ModernTemplate extends MonoBookTemplate {
<div id="mw_main">
<div id="mw_contentwrapper">
<!-- navigation portlet -->
- <div id="p-cactions" class="portlet">
- <h5><?php $this->msg('views') ?></h5>
- <div class="pBody">
- <ul>
- <?php foreach($this->data['content_actions'] as $key => $tab) {
- echo '
- <li id="' . Sanitizer::escapeId( "ca-$key" ) . '"';
- if( $tab['class'] ) {
- echo ' class="'.htmlspecialchars($tab['class']).'"';
- }
- echo'><a href="'.htmlspecialchars($tab['href']).'"';
- # We don't want to give the watch tab an accesskey if the
- # page is being edited, because that conflicts with the
- # accesskey on the watch checkbox. We also don't want to
- # give the edit tab an accesskey, because that's fairly su-
- # perfluous and conflicts with an accesskey (Ctrl-E) often
- # used for editing in Safari.
- if( in_array( $action, array( 'edit', 'submit' ) )
- && in_array( $key, array( 'edit', 'watch', 'unwatch' ))) {
- echo $skin->tooltip( "ca-$key" );
- } else {
- echo $skin->tooltipAndAccesskey( "ca-$key" );
- }
- echo '>'.htmlspecialchars($tab['text']).'</a></li>';
- } ?>
- </ul>
- </div>
- </div>
+<?php $this->cactions(); ?>
<!-- content -->
<div id="mw_content">
<!-- contentholder does nothing by default, but it allows users to style the text inside
the content area without affecting the meaning of 'em' in #mw_content, which is used
for the margins -->
- <div id="mw_contentholder" <?php $this->html("specialpageattributes") ?>>
+ <div id="mw_contentholder">
<div class='mw-topboxes'>
<div id="mw-js-message" style="display:none;"<?php $this->html('userlangattributes')?>></div>
<div class="mw-topbox" id="siteSub"><?php $this->msg('tagline') ?></div>
@@ -135,24 +95,7 @@ class ModernTemplate extends MonoBookTemplate {
<div id="mw_portlets"<?php $this->html("userlangattributes") ?>>
<!-- portlets -->
- <?php
- $sidebar = $this->data['sidebar'];
- if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
- if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
- if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
-
- foreach ($sidebar as $boxName => $cont) {
- if ( $boxName == 'SEARCH' ) {
- $this->searchBox();
- } elseif ( $boxName == 'TOOLBOX' ) {
- $this->toolbox();
- } elseif ( $boxName == 'LANGUAGES' ) {
- $this->languageBox();
- } else {
- $this->customBox( $boxName, $cont );
- }
- }
- ?>
+ <?php $this->renderPortals( $this->data['sidebar'] ); ?>
</div><!-- mw_portlets -->
@@ -166,14 +109,10 @@ class ModernTemplate extends MonoBookTemplate {
<h5><?php $this->msg('personaltools') ?></h5>
<div class="pBody">
<ul>
-<?php foreach($this->data['personal_urls'] as $key => $item) { ?>
- <li id="<?php echo Sanitizer::escapeId( "pt-$key" ) ?>"<?php
- if ($item['active']) { ?> class="active"<?php } ?>><a href="<?php
- echo htmlspecialchars($item['href']) ?>"<?php echo $skin->tooltipAndAccesskey('pt-'.$key) ?><?php
- if(!empty($item['class'])) { ?> class="<?php
- echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php
- echo htmlspecialchars($item['text']) ?></a></li>
-<?php } ?>
+<?php foreach($this->getPersonalTools() as $key => $item) { ?>
+ <?php echo $this->makeListItem($key, $item); ?>
+
+<?php } ?>
</ul>
</div>
</div>
@@ -183,7 +122,7 @@ class ModernTemplate extends MonoBookTemplate {
<div id="footer"<?php $this->html('userlangattributes') ?>>
<ul id="f-list">
<?php
- foreach( $footerlinks as $aLink ) {
+ foreach( $this->getFooterLinks("flat") as $aLink ) {
if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
?> <li id="<?php echo$aLink?>"><?php $this->html($aLink) ?></li>
<?php }
@@ -191,7 +130,7 @@ class ModernTemplate extends MonoBookTemplate {
?>
</ul>
<?php
- foreach ( $footericons as $blockName => $footerIcons ) { ?>
+ foreach ( $this->getFooterIcons("nocopyright") as $blockName => $footerIcons ) { ?>
<div id="mw_<?php echo htmlspecialchars($blockName); ?>">
<?php
foreach ( $footerIcons as $icon ) { ?>
@@ -205,13 +144,7 @@ class ModernTemplate extends MonoBookTemplate {
?>
</div>
- <?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
-<?php $this->html('reporttime') ?>
-<?php if ( $this->data['debug'] ): ?>
-<!-- Debug output:
-<?php $this->text( 'debug' ); ?>
--->
-<?php endif; ?>
+ <?php $this->printTrail(); ?>
</body></html>
<?php
wfRestoreWarnings();
diff --git a/skins/MonoBook.php b/skins/MonoBook.php
index 95833e56..0cf72e93 100644
--- a/skins/MonoBook.php
+++ b/skins/MonoBook.php
@@ -25,23 +25,22 @@ class SkinMonoBook extends SkinTemplate {
function setupSkinUserCss( OutputPage $out ) {
global $wgHandheldStyle;
-
parent::setupSkinUserCss( $out );
- // Append to the default screen common & print styles...
- $out->addStyle( 'monobook/main.css', 'screen' );
+ $out->addModuleStyles( 'skins.monobook' );
+
+ // Ugh. Can't do this properly because $wgHandheldStyle may be a URL
if( $wgHandheldStyle ) {
// Currently in testing... try 'chick/main.css'
$out->addStyle( $wgHandheldStyle, 'handheld' );
}
+ // TODO: Migrate all of these
$out->addStyle( 'monobook/IE50Fixes.css', 'screen', 'lt IE 5.5000' );
$out->addStyle( 'monobook/IE55Fixes.css', 'screen', 'IE 5.5000' );
$out->addStyle( 'monobook/IE60Fixes.css', 'screen', 'IE 6' );
$out->addStyle( 'monobook/IE70Fixes.css', 'screen', 'IE 7' );
- $out->addStyle( 'monobook/rtl.css', 'screen', '', 'rtl' );
-
}
}
@@ -49,8 +48,13 @@ class SkinMonoBook extends SkinTemplate {
* @todo document
* @ingroup Skins
*/
-class MonoBookTemplate extends QuickTemplate {
+class MonoBookTemplate extends BaseTemplate {
+
+ /**
+ * @var Skin
+ */
var $skin;
+
/**
* Template filter callback for MonoBook skin.
* Takes an associative array of data set from a SkinTemplate-based
@@ -60,38 +64,14 @@ class MonoBookTemplate extends QuickTemplate {
* @access private
*/
function execute() {
- global $wgRequest;
-
- $this->skin = $skin = $this->data['skin'];
- $action = $wgRequest->getText( 'action' );
+ $this->skin = $this->data['skin'];
// Suppress warnings to prevent notices about missing indexes in $this->data
wfSuppressWarnings();
- // Generate additional footer links
- $footerlinks = $this->data["footerlinks"];
- // fold footerlinks into a single array using a bit of trickery
- $footerlinks = call_user_func_array('array_merge', array_values($footerlinks));
- // Generate additional footer icons
- $footericons = $this->data["footericons"];
- // Unset any icons which don't have an image
- foreach ( $footericons as $footerIconsKey => &$footerIconsBlock ) {
- foreach ( $footerIconsBlock as $footerIconKey => $footerIcon ) {
- if ( !is_string($footerIcon) && !isset($footerIcon["src"]) ) {
- unset($footerIconsBlock[$footerIconKey]);
- }
- }
- }
- // Redo removal of any empty blocks
- foreach ( $footericons as $footerIconsKey => &$footerIconsBlock ) {
- if ( count($footerIconsBlock) <= 0 ) {
- unset($footericons[$footerIconsKey]);
- }
- }
-
$this->html( 'headelement' );
?><div id="globalWrapper">
-<div id="column-content"><div id="content"<?php $this->html("specialpageattributes") ?>>
+<div id="column-content"><div id="content">
<a id="top"></a>
<?php if($this->data['sitenotice']) { ?><div id="siteNotice"><?php $this->html('sitenotice') ?></div><?php } ?>
@@ -115,77 +95,45 @@ class MonoBookTemplate extends QuickTemplate {
</div>
</div></div>
<div id="column-one"<?php $this->html('userlangattributes') ?>>
- <div id="p-cactions" class="portlet">
- <h5><?php $this->msg('views') ?></h5>
- <div class="pBody">
- <ul><?php
- foreach($this->data['content_actions'] as $key => $tab) {
- echo '
- <li id="' . Sanitizer::escapeId( "ca-$key" ) . '"';
- if( $tab['class'] ) {
- echo ' class="'.htmlspecialchars($tab['class']).'"';
- }
- echo '><a href="'.htmlspecialchars($tab['href']).'"';
- # We don't want to give the watch tab an accesskey if the
- # page is being edited, because that conflicts with the
- # accesskey on the watch checkbox. We also don't want to
- # give the edit tab an accesskey, because that's fairly su-
- # perfluous and conflicts with an accesskey (Ctrl-E) often
- # used for editing in Safari.
- if( in_array( $action, array( 'edit', 'submit' ) )
- && in_array( $key, array( 'edit', 'watch', 'unwatch' ))) {
- echo $skin->tooltip( "ca-$key" );
- } else {
- echo $skin->tooltipAndAccesskey( "ca-$key" );
- }
- echo '>'.htmlspecialchars($tab['text']).'</a></li>';
- } ?>
-
- </ul>
- </div>
- </div>
+<?php $this->cactions(); ?>
<div class="portlet" id="p-personal">
<h5><?php $this->msg('personaltools') ?></h5>
<div class="pBody">
<ul<?php $this->html('userlangattributes') ?>>
-<?php foreach($this->data['personal_urls'] as $key => $item) { ?>
- <li id="<?php echo Sanitizer::escapeId( "pt-$key" ) ?>"<?php
- if ($item['active']) { ?> class="active"<?php } ?>><a href="<?php
- echo htmlspecialchars($item['href']) ?>"<?php echo $skin->tooltipAndAccesskey('pt-'.$key) ?><?php
- if(!empty($item['class'])) { ?> class="<?php
- echo htmlspecialchars($item['class']) ?>"<?php } ?>><?php
- echo htmlspecialchars($item['text']) ?></a></li>
-<?php } ?>
+<?php foreach($this->getPersonalTools() as $key => $item) { ?>
+ <?php echo $this->makeListItem($key, $item); ?>
+
+<?php } ?>
</ul>
</div>
</div>
<div class="portlet" id="p-logo">
- <a style="background-image: url(<?php $this->text('logopath') ?>);" <?php
- ?>href="<?php echo htmlspecialchars($this->data['nav_urls']['mainpage']['href'])?>"<?php
- echo $skin->tooltipAndAccesskey('p-logo') ?>></a>
+ <?php
+ $logoAttribs = array() + Linker::tooltipAndAccesskeyAttribs('p-logo');
+ $logoAttribs['style'] = "background-image: url({$this->data['logopath']});";
+ $logoAttribs['href'] = $this->data['nav_urls']['mainpage']['href'];
+ echo Html::element( 'a', $logoAttribs );
+ ?>
+
</div>
<script type="<?php $this->text('jsmimetype') ?>"> if (window.isMSIE55) fixalpha(); </script>
<?php
- $sidebar = $this->data['sidebar'];
- if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
- if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
- if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
- foreach ($sidebar as $boxName => $cont) {
- if ( $boxName == 'SEARCH' ) {
- $this->searchBox();
- } elseif ( $boxName == 'TOOLBOX' ) {
- $this->toolbox();
- } elseif ( $boxName == 'LANGUAGES' ) {
- $this->languageBox();
- } else {
- $this->customBox( $boxName, $cont );
- }
- }
+ $this->renderPortals( $this->data['sidebar'] );
?>
</div><!-- end of the left (by default at least) column -->
<div class="visualClear"></div>
+<?php
+ $validFooterIcons = $this->getFooterIcons( "icononly" );
+ $validFooterLinks = $this->getFooterLinks( "flat" ); // Additional footer links
+
+ if ( count( $validFooterIcons ) + count( $validFooterLinks ) > 0 ) { ?>
<div id="footer"<?php $this->html('userlangattributes') ?>>
-<?php foreach ( $footericons as $blockName => $footerIcons ) { ?>
+<?php
+ $footerEnd = '</div>';
+ } else {
+ $footerEnd = '';
+ }
+ foreach ( $validFooterIcons as $blockName => $footerIcons ) { ?>
<div id="f-<?php echo htmlspecialchars($blockName); ?>ico">
<?php foreach ( $footerIcons as $icon ) { ?>
<?php echo $this->skin->makeFooterIcon( $icon ); ?>
@@ -195,42 +143,50 @@ class MonoBookTemplate extends QuickTemplate {
</div>
<?php }
- // Generate additional footer links
- $validFooterLinks = array();
- foreach( $footerlinks as $aLink ) {
- if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
- $validFooterLinks[] = $aLink;
- }
- }
if ( count( $validFooterLinks ) > 0 ) {
?> <ul id="f-list">
<?php
- foreach( $validFooterLinks as $aLink ) {
- if( isset( $this->data[$aLink] ) && $this->data[$aLink] ) {
-?> <li id="<?php echo $aLink ?>"><?php $this->html($aLink) ?></li>
-<?php }
+ foreach( $validFooterLinks as $aLink ) { ?>
+ <li id="<?php echo $aLink ?>"><?php $this->html($aLink) ?></li>
+<?php
}
?>
</ul>
<?php }
+echo $footerEnd;
?>
-</div>
-</div>
-<?php $this->html('bottomscripts'); /* JS call to runBodyOnloadHook */ ?>
-<?php $this->html('reporttime') ?>
-<?php if ( $this->data['debug'] ): ?>
-<!-- Debug output:
-<?php $this->text( 'debug' ); ?>
-
--->
-<?php endif;
+</div>
+<?php
+ $this->printTrail();
echo Html::closeElement( 'body' );
echo Html::closeElement( 'html' );
wfRestoreWarnings();
} // end of execute() method
/*************************************************************************************************/
+
+ protected function renderPortals( $sidebar ) {
+ if ( !isset( $sidebar['SEARCH'] ) ) $sidebar['SEARCH'] = true;
+ if ( !isset( $sidebar['TOOLBOX'] ) ) $sidebar['TOOLBOX'] = true;
+ if ( !isset( $sidebar['LANGUAGES'] ) ) $sidebar['LANGUAGES'] = true;
+
+ foreach( $sidebar as $boxName => $content ) {
+ if ( $content === false )
+ continue;
+
+ if ( $boxName == 'SEARCH' ) {
+ $this->searchBox();
+ } elseif ( $boxName == 'TOOLBOX' ) {
+ $this->toolbox();
+ } elseif ( $boxName == 'LANGUAGES' ) {
+ $this->languageBox();
+ } else {
+ $this->customBox( $boxName, $content );
+ }
+ }
+ }
+
function searchBox() {
global $wgUseTwoButtonsSearchForm;
?>
@@ -239,19 +195,15 @@ class MonoBookTemplate extends QuickTemplate {
<div id="searchBody" class="pBody">
<form action="<?php $this->text('wgScript') ?>" id="searchform">
<input type='hidden' name="title" value="<?php $this->text('searchtitle') ?>"/>
- <?php
- echo Html::input( 'search',
- isset( $this->data['search'] ) ? $this->data['search'] : '', 'search',
- array(
- 'id' => 'searchInput',
- 'title' => $this->skin->titleAttrib( 'search' ),
- 'accesskey' => $this->skin->accesskey( 'search' )
- ) ); ?>
+ <?php echo $this->makeSearchInput(array( "id" => "searchInput" )); ?>
- <input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg('searcharticle') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> /><?php if ($wgUseTwoButtonsSearchForm) { ?>&#160;
- <input type='submit' name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg('searchbutton') ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> /><?php } else { ?>
+ <?php echo $this->makeSearchButton("go", array( "id" => "searchGoButton", "class" => "searchButton" ));
+ if ($wgUseTwoButtonsSearchForm): ?>&#160;
+ <?php echo $this->makeSearchButton("fulltext", array( "id" => "mw-searchButton", "class" => "searchButton" ));
+ else: ?>
- <div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php } ?>
+ <div><a href="<?php $this->text('searchaction') ?>" rel="search"><?php $this->msg('powersearch-legend') ?></a></div><?php
+ endif; ?>
</form>
</div>
@@ -259,6 +211,43 @@ class MonoBookTemplate extends QuickTemplate {
<?php
}
+ /**
+ * Prints the cactions bar.
+ * Shared between MonoBook and Modern
+ */
+ function cactions() {
+?>
+ <div id="p-cactions" class="portlet">
+ <h5><?php $this->msg('views') ?></h5>
+ <div class="pBody">
+ <ul><?php
+ foreach($this->data['content_actions'] as $key => $tab) {
+ $linkAttribs = array( 'href' => $tab['href'] );
+
+ if( isset( $tab["tooltiponly"] ) && $tab["tooltiponly"] ) {
+ $title = Linker::titleAttrib( "ca-$key" );
+ if ( $title !== false ) {
+ $linkAttribs['title'] = $title;
+ }
+ } else {
+ $linkAttribs += Linker::tooltipAndAccesskeyAttribs( "ca-$key" );
+ }
+ $linkHtml = Html::element( 'a', $linkAttribs, $tab['text'] );
+
+ /* Surround with a <li> */
+ $liAttribs = array( 'id' => Sanitizer::escapeId( "ca-$key" ) );
+ if( $tab['class'] ) {
+ $liAttribs['class'] = $tab['class'];
+ }
+ echo '
+ ' . Html::rawElement( 'li', $liAttribs, $linkHtml );
+ } ?>
+
+ </ul>
+ </div>
+ </div>
+<?php
+ }
/*************************************************************************************************/
function toolbox() {
?>
@@ -267,51 +256,13 @@ class MonoBookTemplate extends QuickTemplate {
<div class="pBody">
<ul>
<?php
- if($this->data['notspecialpage']) { ?>
- <li id="t-whatlinkshere"><a href="<?php
- echo htmlspecialchars($this->data['nav_urls']['whatlinkshere']['href'])
- ?>"<?php echo $this->skin->tooltipAndAccesskey('t-whatlinkshere') ?>><?php $this->msg('whatlinkshere') ?></a></li>
-<?php
- if( $this->data['nav_urls']['recentchangeslinked'] ) { ?>
- <li id="t-recentchangeslinked"><a href="<?php
- echo htmlspecialchars($this->data['nav_urls']['recentchangeslinked']['href'])
- ?>"<?php echo $this->skin->tooltipAndAccesskey('t-recentchangeslinked') ?>><?php $this->msg('recentchangeslinked-toolbox') ?></a></li>
-<?php }
- }
- if( isset( $this->data['nav_urls']['trackbacklink'] ) && $this->data['nav_urls']['trackbacklink'] ) { ?>
- <li id="t-trackbacklink"><a href="<?php
- echo htmlspecialchars($this->data['nav_urls']['trackbacklink']['href'])
- ?>"<?php echo $this->skin->tooltipAndAccesskey('t-trackbacklink') ?>><?php $this->msg('trackbacklink') ?></a></li>
-<?php }
- if($this->data['feeds']) { ?>
- <li id="feedlinks"><?php foreach($this->data['feeds'] as $key => $feed) {
- ?><a id="<?php echo Sanitizer::escapeId( "feed-$key" ) ?>" href="<?php
- echo htmlspecialchars($feed['href']) ?>" rel="alternate" type="application/<?php echo $key ?>+xml" class="feedlink"<?php echo $this->skin->tooltipAndAccesskey('feed-'.$key) ?>><?php echo htmlspecialchars($feed['text'])?></a>&#160;
- <?php } ?></li><?php
- }
-
- foreach( array('contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages') as $special ) {
-
- if($this->data['nav_urls'][$special]) {
- ?><li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars($this->data['nav_urls'][$special]['href'])
- ?>"<?php echo $this->skin->tooltipAndAccesskey('t-'.$special) ?>><?php $this->msg($special) ?></a></li>
-<?php }
- }
-
- if(!empty($this->data['nav_urls']['print']['href'])) { ?>
- <li id="t-print"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['print']['href'])
- ?>" rel="alternate"<?php echo $this->skin->tooltipAndAccesskey('t-print') ?>><?php $this->msg('printableversion') ?></a></li><?php
- }
+ foreach ( $this->getToolbox() as $key => $tbitem ) { ?>
+ <?php echo $this->makeListItem($key, $tbitem); ?>
- if(!empty($this->data['nav_urls']['permalink']['href'])) { ?>
- <li id="t-permalink"><a href="<?php echo htmlspecialchars($this->data['nav_urls']['permalink']['href'])
- ?>"<?php echo $this->skin->tooltipAndAccesskey('t-permalink') ?>><?php $this->msg('permalink') ?></a></li><?php
- } elseif ($this->data['nav_urls']['permalink']['href'] === '') { ?>
- <li id="t-ispermalink"<?php echo $this->skin->tooltip('t-ispermalink') ?>><?php $this->msg('permalink') ?></li><?php
+<?php
}
-
wfRunHooks( 'MonoBookTemplateToolboxEnd', array( &$this ) );
- wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this ) );
+ wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this, true ) );
?>
</ul>
</div>
@@ -327,10 +278,9 @@ class MonoBookTemplate extends QuickTemplate {
<h5<?php $this->html('userlangattributes') ?>><?php $this->msg('otherlanguages') ?></h5>
<div class="pBody">
<ul>
-<?php foreach($this->data['language_urls'] as $langlink) { ?>
- <li class="<?php echo htmlspecialchars($langlink['class'])?>"><?php
- ?><a href="<?php echo htmlspecialchars($langlink['href']) ?>" title="<?php
- echo htmlspecialchars($langlink['title']) ?>"><?php echo $langlink['text'] ?></a></li>
+<?php foreach($this->data['language_urls'] as $key => $langlink) { ?>
+ <?php echo $this->makeListItem($key, $langlink); ?>
+
<?php } ?>
</ul>
</div>
@@ -341,16 +291,21 @@ class MonoBookTemplate extends QuickTemplate {
/*************************************************************************************************/
function customBox( $bar, $cont ) {
+ $portletAttribs = array( 'class' => 'generated-sidebar portlet', 'id' => Sanitizer::escapeId( "p-$bar" ) );
+ $tooltip = Linker::titleAttrib( "p-$bar" );
+ if ( $tooltip !== false ) {
+ $portletAttribs['title'] = $tooltip;
+ }
+ echo ' ' . Html::openElement( 'div', $portletAttribs );
?>
- <div class='generated-sidebar portlet' id='<?php echo Sanitizer::escapeId( "p-$bar" ) ?>'<?php echo $this->skin->tooltip('p-'.$bar) ?>>
- <h5><?php $out = wfMsg( $bar ); if (wfEmptyMsg($bar, $out)) echo htmlspecialchars($bar); else echo htmlspecialchars($out); ?></h5>
+
+ <h5><?php $msg = wfMessage( $bar ); echo htmlspecialchars( $msg->exists() ? $msg->text() : $bar ); ?></h5>
<div class='pBody'>
<?php if ( is_array( $cont ) ) { ?>
<ul>
-<?php foreach($cont as $val) { ?>
- <li id="<?php echo Sanitizer::escapeId($val['id']) ?>"<?php
- if ( $val['active'] ) { ?> class="active" <?php }
- ?>><a href="<?php echo htmlspecialchars($val['href']) ?>"<?php echo $this->skin->tooltipAndAccesskey($val['id']) ?>><?php echo htmlspecialchars($val['text']) ?></a></li>
+<?php foreach($cont as $key => $val) { ?>
+ <?php echo $this->makeListItem($key, $val); ?>
+
<?php } ?>
</ul>
<?php } else {
diff --git a/skins/Nostalgia.php b/skins/Nostalgia.php
index 6c599b21..a4fd985d 100644
--- a/skins/Nostalgia.php
+++ b/skins/Nostalgia.php
@@ -14,19 +14,22 @@ if( !defined( 'MEDIAWIKI' ) ) {
* @todo document
* @ingroup Skins
*/
-class SkinNostalgia extends Skin {
+class SkinNostalgia extends SkinLegacy {
+ var $skinname = 'nostalgia', $stylename = 'nostalgia',
+ $template = 'NostalgiaTemplate';
- function getStylesheet() {
- return 'common/nostalgia.css';
+ function setupSkinUserCss( OutputPage $out ){
+ parent::setupSkinUserCss( $out );
+ $out->addModuleStyles( 'skins.nostalgia' );
}
- function getSkinName() {
- return 'nostalgia';
- }
+}
+
+class NostalgiaTemplate extends LegacyTemplate {
function doBeforeContent() {
$s = "\n<div id='content'>\n<div id='top'>\n";
- $s .= '<div id="logo">' . $this->logoText( 'right' ) . '</div>';
+ $s .= '<div id="logo">' . $this->getSkin()->logoText( 'right' ) . '</div>';
$s .= $this->pageTitle();
$s .= $this->pageSubtitle() . "\n";
@@ -34,7 +37,7 @@ class SkinNostalgia extends Skin {
$s .= '<div id="topbar">';
$s .= $this->topLinks() . "\n<br />";
- $notice = wfGetSiteNotice();
+ $notice = $this->getSkin()->getSiteNotice();
if( $notice ) {
$s .= "\n<div id='siteNotice'>$notice</div>\n";
}
@@ -45,7 +48,7 @@ class SkinNostalgia extends Skin {
$s .= '<br />' . $ol;
}
- $cat = $this->getCategoryLinks();
+ $cat = '<div id="catlinks" class="catlinks">' . $this->getSkin()->getCategoryLinks() . '</div>';
if( $cat ) {
$s .= '<br />' . $cat;
}
@@ -60,40 +63,41 @@ class SkinNostalgia extends Skin {
global $wgOut, $wgUser;
$sep = " |\n";
- $s = $this->mainPageLink() . $sep
- . $this->specialLink( 'Recentchanges' );
+ $s = $this->getSkin()->mainPageLink() . $sep
+ . Linker::specialLink( 'Recentchanges' );
if ( $wgOut->isArticle() ) {
- $s .= $sep . '<strong>' . $this->editThisPage() . '</strong>' . $sep . $this->historyLink();
+ $s .= $sep . '<strong>' . $this->editThisPage() . '</strong>' . $sep . $this->talkLink() .
+ $sep . $this->historyLink();
}
/* show links to different language variants */
$s .= $this->variantLinks();
$s .= $this->extensionTabLinks();
if ( $wgUser->isAnon() ) {
- $s .= $sep . $this->specialLink( 'Userlogin' );
+ $s .= $sep . Linker::specialLink( 'Userlogin' );
} else {
/* show user page and user talk links */
- $s .= $sep . $this->link( $wgUser->getUserPage(), wfMsgHtml( 'mypage' ) );
- $s .= $sep . $this->link( $wgUser->getTalkPage(), wfMsgHtml( 'mytalk' ) );
+ $s .= $sep . Linker::link( $wgUser->getUserPage(), wfMsgHtml( 'mypage' ) );
+ $s .= $sep . Linker::link( $wgUser->getTalkPage(), wfMsgHtml( 'mytalk' ) );
if ( $wgUser->getNewtalk() ) {
$s .= ' *';
}
/* show watchlist link */
- $s .= $sep . $this->specialLink( 'Watchlist' );
+ $s .= $sep . Linker::specialLink( 'Watchlist' );
/* show my contributions link */
- $s .= $sep . $this->link(
+ $s .= $sep . Linker::link(
SpecialPage::getSafeTitleFor( 'Contributions', $wgUser->getName() ),
wfMsgHtml( 'mycontris' ) );
/* show my preferences link */
- $s .= $sep . $this->specialLink( 'Preferences' );
+ $s .= $sep . Linker::specialLink( 'Preferences' );
/* show upload file link */
if( UploadBase::isEnabled() && UploadBase::isAllowed( $wgUser ) === true ) {
$s .= $sep . $this->getUploadLink();
}
/* show log out link */
- $s .= $sep . $this->specialLink( 'Userlogout' );
+ $s .= $sep . $this->getSkin()->specialLink( 'Userlogout' );
}
$s .= $sep . $this->specialPagesList();
@@ -108,8 +112,8 @@ class SkinNostalgia extends Skin {
$s .= $this->bottomLinks();
$s .= "\n<br />" . $this->pageStats();
- $s .= "\n<br />" . $this->mainPageLink()
- . ' | ' . $this->aboutLink()
+ $s .= "\n<br />" . $this->getSkin()->mainPageLink()
+ . ' | ' . $this->getSkin()->aboutLink()
. ' | ' . $this->searchForm();
$s .= "\n</div>\n</div>\n";
diff --git a/skins/Simple.php b/skins/Simple.php
index 87bb0b7e..61b6e786 100644
--- a/skins/Simple.php
+++ b/skins/Simple.php
@@ -27,12 +27,12 @@ class SkinSimple extends SkinTemplate {
$out->addModuleStyles( 'skins.simple' );
/* Add some userprefs specific CSS styling */
- global $wgUser, $wgContLang;
+ global $wgUser;
$rules = array();
$underline = "";
if ( $wgUser->getOption( 'underline' ) < 2 ) {
- $underline = "text-decoration: " . $wgUser->getOption( 'underline' ) ? 'underline' : 'none' . ";";
+ $underline = "text-decoration: " . $wgUser->getOption( 'underline' ) ? 'underline !important' : 'none' . ";";
}
/* Also inherits from resourceloader */
@@ -42,10 +42,7 @@ class SkinSimple extends SkinTemplate {
$rules[] = "a.stub:after { $underline; }";
}
$style = implode( "\n", $rules );
- if ( $wgContLang->getDir() === 'rtl' ) {
- $style = CSSJanus::transform( $style, true, false );
- }
- $out->addInlineStyle( $style );
+ $out->addInlineStyle( $style, 'flip' );
}
}
diff --git a/skins/Standard.php b/skins/Standard.php
index 2ea6896d..8ae4b3b1 100644
--- a/skins/Standard.php
+++ b/skins/Standard.php
@@ -14,38 +14,42 @@ if( !defined( 'MEDIAWIKI' ) ) {
* @todo document
* @ingroup Skins
*/
-class SkinStandard extends Skin {
+class SkinStandard extends SkinLegacy {
+ var $skinname = 'standard', $stylename = 'standard',
+ $template = 'StandardTemplate';
- /**
- *
- */
function setupSkinUserCss( OutputPage $out ){
- global $wgContLang;
+ parent::setupSkinUserCss( $out );
+ $out->AddModuleStyles( 'skins.standard' );
+
$qb = $this->qbSetting();
$rules = array();
if ( 2 == $qb ) { # Right
- $rules[] = "#quickbar { position: absolute; top: 4px; right: 4px; border-left: 2px solid #000000; }";
- $rules[] = "#article, #mw-data-after-content { margin-left: 4px; margin-right: 152px; }";
+ $rules[] = "/* @noflip */#quickbar { position: absolute; top: 4px; right: 4px; border-left: 2px solid #000000; }";
+ $rules[] = "/* @noflip */#article, #mw-data-after-content { margin-left: 4px; margin-right: 152px; }";
+ $rules[] = "/* @noflip */#topbar, #footer { margin-right: 152px; }";
} elseif ( 1 == $qb || 3 == $qb ) {
- $rules[] = "#quickbar { position: absolute; top: 4px; left: 4px; border-right: 1px solid gray; }";
- $rules[] = "#article, #mw-data-after-content { margin-left: 152px; margin-right: 4px; }";
+ $rules[] = "/* @noflip */#quickbar { position: absolute; top: 4px; left: 4px; border-right: 1px solid gray; }";
+ $rules[] = "/* @noflip */#article, #mw-data-after-content { margin-left: 152px; margin-right: 4px; }";
+ $rules[] = "/* @noflip */#topbar, #footer { margin-left: 152px; }";
if( 3 == $qb ) {
- $rules[] = "#quickbar { position: fixed; padding: 4px; }";
+ $rules[] = "/* @noflip */#quickbar { position: fixed; padding: 4px; }";
}
} elseif ( 4 == $qb ) {
- $rules[] = "#quickbar { position: fixed; right: 0px; top: 0px; padding: 4px;}";
- $rules[] = "#quickbar { border-right: 1px solid gray; }";
- $rules[] = "#article, #mw-data-after-content { margin-right: 152px; margin-left: 4px; }";
+ $rules[] = "/* @noflip */#quickbar { position: fixed; right: 0px; top: 0px; padding: 4px;}";
+ $rules[] = "/* @noflip */#quickbar { border-right: 1px solid gray; }";
+ $rules[] = "/* @noflip */#article, #mw-data-after-content { margin-right: 152px; margin-left: 4px; }";
+ $rules[] = "/* @noflip */#topbar, #footer { margin-right: 152px; }";
}
$style = implode( "\n", $rules );
- if ( $wgContLang->getDir() === 'rtl' ) {
- $style = CSSJanus::transform( $style, true, false );
- }
- $out->addInlineStyle( $style );
- parent::setupSkinUserCss( $out );
+ $out->addInlineStyle( $style, 'flip' );
}
+}
+
+class StandardTemplate extends LegacyTemplate {
+
function doAfterContent() {
global $wgContLang, $wgLang;
wfProfileIn( __METHOD__ );
@@ -57,42 +61,26 @@ class SkinStandard extends Skin {
wfProfileOut( __METHOD__ . '-1' );
wfProfileIn( __METHOD__ . '-2' );
-
- $qb = $this->qbSetting();
- $shove = ( $qb != 0 );
- $left = ( $qb == 1 || $qb == 3 );
- if( $wgContLang->isRTL() ) {
- $left = !$left;
- }
-
- if ( $shove && $left ) { # Left
- $s .= $this->getQuickbarCompensator();
- }
- wfProfileOut( __METHOD__ . '-2' );
- wfProfileIn( __METHOD__ . '-3' );
- $l = $wgContLang->alignStart();
+ $l = $this->getSkin()->getLang()->alignStart();
$s .= "<td class='bottom' align='$l' valign='top'>";
$s .= $this->bottomLinks();
$s .= "\n<br />" . $wgLang->pipeList( array(
- $this->mainPageLink(),
- $this->aboutLink(),
- $this->specialLink( 'Recentchanges' ),
+ $this->getSkin()->mainPageLink(),
+ $this->getSkin()->aboutLink(),
+ Linker::specialLink( 'Recentchanges' ),
$this->searchForm() ) )
. '<br /><span id="pagestats">' . $this->pageStats() . '</span>';
$s .= '</td>';
- if ( $shove && !$left ) { # Right
- $s .= $this->getQuickbarCompensator();
- }
$s .= "</tr></table>\n</div>\n</div>\n";
- wfProfileOut( __METHOD__ . '-3' );
- wfProfileIn( __METHOD__ . '-4' );
- if ( 0 != $qb ) {
+ wfProfileOut( __METHOD__ . '-2' );
+ wfProfileIn( __METHOD__ . '-3' );
+ if ( $this->getSkin()->qbSetting() != 0 ) {
$s .= $this->quickBar();
}
- wfProfileOut( __METHOD__ . '-4' );
+ wfProfileOut( __METHOD__ . '-3' );
wfProfileOut( __METHOD__ );
return $s;
}
@@ -104,39 +92,49 @@ class SkinStandard extends Skin {
$action = $wgRequest->getText( 'action' );
$wpPreview = $wgRequest->getBool( 'wpPreview' );
- $tns = $this->mTitle->getNamespace();
+ $tns = $this->getSkin()->getTitle()->getNamespace();
$s = "\n<div id='quickbar'>";
- $s .= "\n" . $this->logoText() . "\n<hr class='sep' />";
+ $s .= "\n" . $this->getSkin()->logoText() . "\n<hr class='sep' />";
$sep = "\n<br />";
# Use the first heading from the Monobook sidebar as the "browse" section
- $bar = $this->buildSidebar();
+ $bar = $this->getSkin()->buildSidebar();
unset( $bar['SEARCH'] );
unset( $bar['LANGUAGES'] );
unset( $bar['TOOLBOX'] );
- $browseLinks = reset( $bar );
- foreach ( $browseLinks as $link ) {
- if ( $link['text'] != '-' ) {
- $s .= "<a href=\"{$link['href']}\">" .
- htmlspecialchars( $link['text'] ) . '</a>' . $sep;
+ $barnumber = 1;
+ foreach ( $bar as $browseLinks ) {
+ if ( is_array( $browseLinks ) ) {
+ if ( $barnumber > 1 ) {
+ $s .= "\n<hr class='sep' />";
+ }
+ foreach ( $browseLinks as $link ) {
+ if ( $link['text'] != '-' ) {
+ $s .= "<a href=\"{$link['href']}\">" .
+ htmlspecialchars( $link['text'] ) . '</a>' . $sep;
+ }
+ }
+ }
+ if ( $barnumber == 1 ) {
+ // only show watchlist link if logged in
+ if( $wgUser->isLoggedIn() ) {
+ $s.= Linker::specialLink( 'Watchlist' ) ;
+ $s .= $sep . Linker::linkKnown(
+ SpecialPage::getTitleFor( 'Contributions' ),
+ wfMsg( 'mycontris' ),
+ array(),
+ array( 'target' => $wgUser->getName() )
+ );
+ }
}
+ $barnumber = $barnumber + 1;
}
- if( $wgUser->isLoggedIn() ) {
- $s.= $this->specialLink( 'Watchlist' ) ;
- $s .= $sep . $this->linkKnown(
- SpecialPage::getTitleFor( 'Contributions' ),
- wfMsg( 'mycontris' ),
- array(),
- array( 'target' => $wgUser->getName() )
- );
- }
- // only show watchlist link if logged in
$s .= "\n<hr class='sep' />";
- $articleExists = $this->mTitle->getArticleId();
+ $articleExists = $this->getSkin()->getTitle()->getArticleId();
if ( $wgOut->isArticle() || $action == 'edit' || $action == 'history' || $wpPreview ) {
if( $wgOut->isArticle() ) {
$s .= '<strong>' . $this->editThisPage() . '</strong>';
@@ -181,17 +179,14 @@ class SkinStandard extends Skin {
$text = wfMsg( 'articlepage' );
}
- $link = $this->mTitle->getText();
+ $link = $this->getSkin()->getTitle()->getText();
$nstext = $wgContLang->getNsText( $tns );
if( $nstext ) { # add namespace if necessary
$link = $nstext . ':' . $link;
}
- $s .= $this->link(
- Title::newFromText( $link ),
- $text
- );
- } elseif( $this->mTitle->getNamespace() != NS_SPECIAL ) {
+ $s .= Linker::link( Title::newFromText( $link ), $text );
+ } elseif( $this->getSkin()->getTitle()->getNamespace() != NS_SPECIAL ) {
# we just throw in a "New page" text to tell the user that he's in edit mode,
# and to avoid messing with the separator that is prepended to the next item
$s .= '<strong>' . wfMsg( 'newpage' ) . '</strong>';
@@ -199,9 +194,9 @@ class SkinStandard extends Skin {
}
# "Post a comment" link
- if( ( $this->mTitle->isTalkPage() || $wgOut->showNewSectionLink() ) && $action != 'edit' && !$wpPreview )
- $s .= '<br />' . $this->link(
- $this->mTitle,
+ if( ( $this->getSkin()->getTitle()->isTalkPage() || $wgOut->showNewSectionLink() ) && $action != 'edit' && !$wpPreview )
+ $s .= '<br />' . $this->getSkin()->link(
+ $this->getSkin()->getTitle(),
wfMsg( 'postcomment' ),
array(),
array(
@@ -221,7 +216,7 @@ class SkinStandard extends Skin {
if( $action != 'edit' && $action != 'submit' ) {
$s .= $sep . $this->watchThisPage();
}
- if ( $this->mTitle->userCan( 'edit' ) )
+ if ( $this->getSkin()->getTitle()->userCan( 'edit' ) )
$s .= $sep . $this->moveThisPage();
}
if ( $wgUser->isAllowed( 'delete' ) && $articleExists ) {
@@ -239,17 +234,17 @@ class SkinStandard extends Skin {
}
if (
- NS_USER == $this->mTitle->getNamespace() ||
- $this->mTitle->getNamespace() == NS_USER_TALK
+ NS_USER == $this->getSkin()->getTitle()->getNamespace() ||
+ $this->getSkin()->getTitle()->getNamespace() == NS_USER_TALK
) {
- $id = User::idFromName( $this->mTitle->getText() );
- $ip = User::isIP( $this->mTitle->getText() );
+ $id = User::idFromName( $this->getSkin()->getTitle()->getText() );
+ $ip = User::isIP( $this->getSkin()->getTitle()->getText() );
if( $id || $ip ){
$s .= $sep . $this->userContribsLink();
}
- if( $this->showEmailUser( $id ) ) {
+ if( $this->getSkin()->showEmailUser( $id ) ) {
$s .= $sep . $this->emailUserLink();
}
}
@@ -260,7 +255,7 @@ class SkinStandard extends Skin {
$s .= $this->getUploadLink() . $sep;
}
- $s .= $this->specialLink( 'Specialpages' );
+ $s .= Linker::specialLink( 'Specialpages' );
global $wgSiteSupportPage;
if( $wgSiteSupportPage ) {
diff --git a/skins/Vector.php b/skins/Vector.php
index 84f38d30..97161611 100644
--- a/skins/Vector.php
+++ b/skins/Vector.php
@@ -1,7 +1,7 @@
<?php
/**
- * Vector - Branch of MonoBook which has many usability improvements and
- * somewhat cleaner code.
+ * Vector - Modern version of MonoBook with fresh look and many usability
+ * improvements.
*
* @todo document
* @file
@@ -18,7 +18,6 @@ if( !defined( 'MEDIAWIKI' ) ) {
*/
class SkinVector extends SkinTemplate {
- /* Functions */
var $skinname = 'vector', $stylename = 'vector',
$template = 'VectorTemplate', $useHeadElement = true;
@@ -30,7 +29,7 @@ class SkinVector extends SkinTemplate {
global $wgLocalStylePath, $wgRequest;
parent::initPage( $out );
-
+
// Append CSS which includes IE only behavior fixes for hover support -
// this is better than including this in a CSS fille since it doesn't
// wait for the CSS file to load before fetching the HTC file.
@@ -40,6 +39,8 @@ class SkinVector extends SkinTemplate {
htmlspecialchars( $wgLocalStylePath ) .
"/{$this->stylename}/csshover{$min}.htc\")}</style><![endif]-->"
);
+
+ $out->addModuleScripts( 'skins.vector' );
}
/**
@@ -51,355 +52,66 @@ class SkinVector extends SkinTemplate {
parent::setupSkinUserCss( $out );
$out->addModuleStyles( 'skins.vector' );
}
-
- /**
- * Builds a structured array of links used for tabs and menus
- * @return array
- * @private
- */
- function buildNavigationUrls() {
- global $wgContLang, $wgLang, $wgOut, $wgUser, $wgRequest, $wgArticle;
- global $wgDisableLangConversion, $wgVectorUseIconWatch;
-
- wfProfileIn( __METHOD__ );
-
- $links = array(
- 'namespaces' => array(),
- 'views' => array(),
- 'actions' => array(),
- 'variants' => array()
- );
-
- // Detects parameters
- $action = $wgRequest->getVal( 'action', 'view' );
- $section = $wgRequest->getVal( 'section' );
-
- $userCanRead = $this->mTitle->userCanRead();
-
- // Checks if page is some kind of content
- if( $this->iscontent ) {
- // Gets page objects for the related namespaces
- $subjectPage = $this->mTitle->getSubjectPage();
- $talkPage = $this->mTitle->getTalkPage();
-
- // Determines if this is a talk page
- $isTalk = $this->mTitle->isTalkPage();
-
- // Generates XML IDs from namespace names
- $subjectId = $this->mTitle->getNamespaceKey( '' );
-
- if ( $subjectId == 'main' ) {
- $talkId = 'talk';
- } else {
- $talkId = "{$subjectId}_talk";
- }
-
- // Adds namespace links
- $links['namespaces'][$subjectId] = $this->tabAction(
- $subjectPage, 'nstab-' . $subjectId, !$isTalk, '', $userCanRead
- );
- $links['namespaces'][$subjectId]['context'] = 'subject';
- $links['namespaces'][$talkId] = $this->tabAction(
- $talkPage, 'talk', $isTalk, '', $userCanRead
- );
- $links['namespaces'][$talkId]['context'] = 'talk';
-
- // Adds view view link
- if ( $this->mTitle->exists() && $userCanRead ) {
- $links['views']['view'] = $this->tabAction(
- $isTalk ? $talkPage : $subjectPage,
- 'vector-view-view', ( $action == 'view' || $action == 'purge' ), '', true
- );
- }
-
- wfProfileIn( __METHOD__ . '-edit' );
-
- // Checks if user can...
- if (
- // read and edit the current page
- $userCanRead && $this->mTitle->quickUserCan( 'edit' ) &&
- (
- // if it exists
- $this->mTitle->exists() ||
- // or they can create one here
- $this->mTitle->quickUserCan( 'create' )
- )
- ) {
- // Builds CSS class for talk page links
- $isTalkClass = $isTalk ? ' istalk' : '';
-
- // Determines if we're in edit mode
- $selected = (
- ( $action == 'edit' || $action == 'submit' ) &&
- ( $section != 'new' )
- );
- $links['views']['edit'] = array(
- 'class' => ( $selected ? 'selected' : '' ) . $isTalkClass,
- 'text' => $this->mTitle->exists()
- ? wfMsg( 'vector-view-edit' )
- : wfMsg( 'vector-view-create' ),
- 'href' =>
- $this->mTitle->getLocalURL( $this->editUrlOptions() )
- );
- // Checks if this is a current rev of talk page and we should show a new
- // section link
- if ( ( $isTalk && $wgArticle && $wgArticle->isCurrent() ) || ( $wgOut->showNewSectionLink() ) ) {
- // Checks if we should ever show a new section link
- if ( !$wgOut->forceHideNewSectionLink() ) {
- // Adds new section link
- //$links['actions']['addsection']
- $links['views']['addsection'] = array(
- 'class' => 'collapsible ' . ( $section == 'new' ? 'selected' : false ),
- 'text' => wfMsg( 'vector-action-addsection' ),
- 'href' => $this->mTitle->getLocalURL(
- 'action=edit&section=new'
- )
- );
- }
- }
- // Checks if the page has some kind of viewable content
- } elseif ( $this->mTitle->hasSourceText() && $userCanRead ) {
- // Adds view source view link
- $links['views']['viewsource'] = array(
- 'class' => ( $action == 'edit' ) ? 'selected' : false,
- 'text' => wfMsg( 'vector-view-viewsource' ),
- 'href' =>
- $this->mTitle->getLocalURL( $this->editUrlOptions() )
- );
- }
- wfProfileOut( __METHOD__ . '-edit' );
-
- wfProfileIn( __METHOD__ . '-live' );
-
- // Checks if the page exists
- if ( $this->mTitle->exists() && $userCanRead ) {
- // Adds history view link
- $links['views']['history'] = array(
- 'class' => 'collapsible ' . ( ( $action == 'history' ) ? 'selected' : false ),
- 'text' => wfMsg( 'vector-view-history' ),
- 'href' => $this->mTitle->getLocalURL( 'action=history' ),
- 'rel' => 'archives',
- );
-
- if( $wgUser->isAllowed( 'delete' ) ) {
- $links['actions']['delete'] = array(
- 'class' => ( $action == 'delete' ) ? 'selected' : false,
- 'text' => wfMsg( 'vector-action-delete' ),
- 'href' => $this->mTitle->getLocalURL( 'action=delete' )
- );
- }
- if ( $this->mTitle->quickUserCan( 'move' ) ) {
- $moveTitle = SpecialPage::getTitleFor(
- 'Movepage', $this->thispage
- );
- $links['actions']['move'] = array(
- 'class' => $this->mTitle->isSpecial( 'Movepage' ) ?
- 'selected' : false,
- 'text' => wfMsg( 'vector-action-move' ),
- 'href' => $moveTitle->getLocalURL()
- );
- }
-
- if (
- $this->mTitle->getNamespace() !== NS_MEDIAWIKI &&
- $wgUser->isAllowed( 'protect' )
- ) {
- if ( !$this->mTitle->isProtected() ) {
- $links['actions']['protect'] = array(
- 'class' => ( $action == 'protect' ) ?
- 'selected' : false,
- 'text' => wfMsg( 'vector-action-protect' ),
- 'href' =>
- $this->mTitle->getLocalURL( 'action=protect' )
- );
-
- } else {
- $links['actions']['unprotect'] = array(
- 'class' => ( $action == 'unprotect' ) ?
- 'selected' : false,
- 'text' => wfMsg( 'vector-action-unprotect' ),
- 'href' =>
- $this->mTitle->getLocalURL( 'action=unprotect' )
- );
- }
- }
- } else {
- // article doesn't exist or is deleted
- if (
- $wgUser->isAllowed( 'deletedhistory' ) &&
- $wgUser->isAllowed( 'undelete' )
- ) {
- $n = $this->mTitle->isDeleted();
- if( $n ) {
- $undelTitle = SpecialPage::getTitleFor( 'Undelete' );
- $links['actions']['undelete'] = array(
- 'class' => false,
- 'text' => wfMsgExt(
- 'vector-action-undelete',
- array( 'parsemag' ),
- $wgLang->formatNum( $n )
- ),
- 'href' => $undelTitle->getLocalURL(
- 'target=' . urlencode( $this->thispage )
- )
- );
- }
- }
-
- if (
- $this->mTitle->getNamespace() !== NS_MEDIAWIKI &&
- $wgUser->isAllowed( 'protect' )
- ) {
- if ( !$this->mTitle->getRestrictions( 'create' ) ) {
- $links['actions']['protect'] = array(
- 'class' => ( $action == 'protect' ) ?
- 'selected' : false,
- 'text' => wfMsg( 'vector-action-protect' ),
- 'href' =>
- $this->mTitle->getLocalURL( 'action=protect' )
- );
-
- } else {
- $links['actions']['unprotect'] = array(
- 'class' => ( $action == 'unprotect' ) ?
- 'selected' : false,
- 'text' => wfMsg( 'vector-action-unprotect' ),
- 'href' =>
- $this->mTitle->getLocalURL( 'action=unprotect' )
- );
- }
- }
- }
- wfProfileOut( __METHOD__ . '-live' );
- /**
- * The following actions use messages which, if made particular to
- * the Vector skin, would break the Ajax code which makes this
- * action happen entirely inline. Skin::makeGlobalVariablesScript
- * defines a set of messages in a javascript object - and these
- * messages are assumed to be global for all skins. Without making
- * a change to that procedure these messages will have to remain as
- * the global versions.
- */
- // Checks if the user is logged in
- if ( $this->loggedin ) {
- if ( $wgVectorUseIconWatch ) {
- $class = 'icon';
- $place = 'views';
- } else {
- $class = '';
- $place = 'actions';
- }
- $mode = $this->mTitle->userIsWatching() ? 'unwatch' : 'watch';
- $links[$place][$mode] = array(
- 'class' => $class . ( ( $action == 'watch' || $action == 'unwatch' ) ? ' selected' : false ),
- 'text' => wfMsg( $mode ), // uses 'watch' or 'unwatch' message
- 'href' => $this->mTitle->getLocalURL( 'action=' . $mode )
- );
- }
- // This is instead of SkinTemplateTabs - which uses a flat array
- wfRunHooks( 'SkinTemplateNavigation', array( &$this, &$links ) );
-
- // If it's not content, it's got to be a special page
- } else {
- $links['namespaces']['special'] = array(
- 'class' => 'selected',
- 'text' => wfMsg( 'nstab-special' ),
- 'href' => $wgRequest->getRequestURL()
- );
- // Equiv to SkinTemplateBuildContentActionUrlsAfterSpecialPage
- wfRunHooks( 'SkinTemplateNavigation::SpecialPage', array( &$this, &$links ) );
- }
-
- // Gets list of language variants
- $variants = $wgContLang->getVariants();
- // Checks that language conversion is enabled and variants exist
- if( !$wgDisableLangConversion && count( $variants ) > 1 ) {
- // Gets preferred variant
- $preferred = $wgContLang->getPreferredVariant();
- // Loops over each variant
- foreach( $variants as $code ) {
- // Gets variant name from language code
- $varname = $wgContLang->getVariantname( $code );
- // Checks if the variant is marked as disabled
- if( $varname == 'disable' ) {
- // Skips this variant
- continue;
- }
- // Appends variant link
- $links['variants'][] = array(
- 'class' => ( $code == $preferred ) ? 'selected' : false,
- 'text' => $varname,
- 'href' => $this->mTitle->getLocalURL( '', $code )
- );
- }
- }
-
- // Equiv to SkinTemplateContentActions
- wfRunHooks( 'SkinTemplateNavigation::Universal', array( &$this, &$links ) );
-
- wfProfileOut( __METHOD__ );
-
- return $links;
- }
}
/**
* QuickTemplate class for Vector skin
* @ingroup Skins
*/
-class VectorTemplate extends QuickTemplate {
+class VectorTemplate extends BaseTemplate {
/* Members */
/**
- * @var Cached skin object
+ * @var Skin Cached skin object
*/
var $skin;
/* Functions */
/**
- * Outputs the entire contents of the XHTML page
+ * Outputs the entire contents of the (X)HTML page
*/
public function execute() {
- global $wgRequest, $wgLang;
+ global $wgLang, $wgVectorUseIconWatch;
$this->skin = $this->data['skin'];
- $action = $wgRequest->getText( 'action' );
// Build additional attributes for navigation urls
- $nav = $this->skin->buildNavigationUrls();
+ //$nav = $this->skin->buildNavigationUrls();
+ $nav = $this->data['content_navigation'];
+
+ if ( $wgVectorUseIconWatch ) {
+ $mode = $this->skin->getTitle()->userIsWatching() ? 'unwatch' : 'watch';
+ if ( isset( $nav['actions'][$mode] ) ) {
+ $nav['views'][$mode] = $nav['actions'][$mode];
+ $nav['views'][$mode]['class'] = rtrim( 'icon ' . $nav['views'][$mode]['class'], ' ' );
+ $nav['views'][$mode]['primary'] = true;
+ unset( $nav['actions'][$mode] );
+ }
+ }
+
+ $xmlID = '';
foreach ( $nav as $section => $links ) {
foreach ( $links as $key => $link ) {
- $xmlID = $key;
- if ( isset( $link['context'] ) && $link['context'] == 'subject' ) {
- $xmlID = 'ca-nstab-' . $xmlID;
- } else if ( isset( $link['context'] ) && $link['context'] == 'talk' ) {
- $xmlID = 'ca-talk';
- } else {
- $xmlID = 'ca-' . $xmlID;
+ if ( $section == 'views' && !( isset( $link['primary'] ) && $link['primary'] ) ) {
+ $link['class'] = rtrim( 'collapsible ' . $link['class'], ' ' );
}
+
+ $xmlID = isset( $link['id'] ) ? $link['id'] : 'ca-' . $xmlID;
$nav[$section][$key]['attributes'] =
' id="' . Sanitizer::escapeId( $xmlID ) . '"';
- if ( $nav[$section][$key]['class'] ) {
+ if ( $link['class'] ) {
$nav[$section][$key]['attributes'] .=
' class="' . htmlspecialchars( $link['class'] ) . '"';
unset( $nav[$section][$key]['class'] );
}
- // We don't want to give the watch tab an accesskey if the page
- // is being edited, because that conflicts with the accesskey on
- // the watch checkbox. We also don't want to give the edit tab
- // an accesskey, because that's fairly superfluous and conflicts
- // with an accesskey (Ctrl-E) often used for editing in Safari.
- if (
- in_array( $action, array( 'edit', 'submit' ) ) &&
- in_array( $key, array( 'edit', 'watch', 'unwatch' ) )
- ) {
+ if ( isset( $link['tooltiponly'] ) && $link['tooltiponly'] ) {
$nav[$section][$key]['key'] =
- $this->skin->tooltip( $xmlID );
+ Linker::tooltip( $xmlID );
} else {
$nav[$section][$key]['key'] =
- $this->skin->tooltipAndAccesskey( $xmlID );
+ Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( $xmlID ) );
}
}
}
@@ -407,49 +119,7 @@ class VectorTemplate extends QuickTemplate {
$this->data['view_urls'] = $nav['views'];
$this->data['action_urls'] = $nav['actions'];
$this->data['variant_urls'] = $nav['variants'];
- // Build additional attributes for personal_urls
- foreach ( $this->data['personal_urls'] as $key => $item) {
- $this->data['personal_urls'][$key]['attributes'] =
- ' id="' . Sanitizer::escapeId( "pt-$key" ) . '"';
- if ( isset( $item['active'] ) && $item['active'] ) {
- $this->data['personal_urls'][$key]['attributes'] .=
- ' class="active"';
- }
- $this->data['personal_urls'][$key]['key'] =
- $this->skin->tooltipAndAccesskey('pt-'.$key);
- }
- // Generate additional footer links
- $footerlinks = $this->data["footerlinks"];
-
- // Reduce footer links down to only those which are being used
- $validFooterLinks = array();
- foreach( $footerlinks as $category => $links ) {
- $validFooterLinks[$category] = array();
- foreach( $links as $link ) {
- if( isset( $this->data[$link] ) && $this->data[$link] ) {
- $validFooterLinks[$category][] = $link;
- }
- }
- }
-
- // Generate additional footer icons
- $footericons = $this->data["footericons"];
- // Unset any icons which don't have an image
- foreach ( $footericons as $footerIconsKey => &$footerIconsBlock ) {
- foreach ( $footerIconsBlock as $footerIconKey => $footerIcon ) {
- if ( !is_string($footerIcon) && !isset($footerIcon["src"]) ) {
- unset($footerIconsBlock[$footerIconKey]);
- }
- }
- }
- // Redo removal of any empty blocks
- foreach ( $footericons as $footerIconsKey => &$footerIconsBlock ) {
- if ( count($footerIconsBlock) <= 0 ) {
- unset($footericons[$footerIconsKey]);
- }
- }
-
// Reverse horizontally rendered navigation elements
if ( $wgLang->isRTL() ) {
$this->data['view_urls'] =
@@ -465,9 +135,9 @@ class VectorTemplate extends QuickTemplate {
<div id="mw-page-base" class="noprint"></div>
<div id="mw-head-base" class="noprint"></div>
<!-- content -->
- <div id="content"<?php $this->html('specialpageattributes') ?>>
+ <div id="content">
<a id="top"></a>
- <div id="mw-js-message" style="display:none;"<?php $this->html('userlangattributes') ?>></div>
+ <div id="mw-js-message" style="display:none;"<?php $this->html( 'userlangattributes' ) ?>></div>
<?php if ( $this->data['sitenotice'] ): ?>
<!-- sitenotice -->
<div id="siteNotice"><?php $this->html( 'sitenotice' ) ?></div>
@@ -478,18 +148,20 @@ class VectorTemplate extends QuickTemplate {
<!-- /firstHeading -->
<!-- bodyContent -->
<div id="bodyContent">
+ <?php if ( $this->data['isarticle'] ): ?>
<!-- tagline -->
<div id="siteSub"><?php $this->msg( 'tagline' ) ?></div>
<!-- /tagline -->
+ <?php endif; ?>
<!-- subtitle -->
- <div id="contentSub"<?php $this->html('userlangattributes') ?>><?php $this->html( 'subtitle' ) ?></div>
+ <div id="contentSub"<?php $this->html( 'userlangattributes' ) ?>><?php $this->html( 'subtitle' ) ?></div>
<!-- /subtitle -->
<?php if ( $this->data['undelete'] ): ?>
<!-- undelete -->
<div id="contentSub2"><?php $this->html( 'undelete' ) ?></div>
<!-- /undelete -->
<?php endif; ?>
- <?php if($this->data['newtalk'] ): ?>
+ <?php if( $this->data['newtalk'] ): ?>
<!-- newtalk -->
<div class="usermessage"><?php $this->html( 'newtalk' ) ?></div>
<!-- /newtalk -->
@@ -502,9 +174,16 @@ class VectorTemplate extends QuickTemplate {
</div>
<!-- /jumpto -->
<?php endif; ?>
- <!-- bodytext -->
- <?php $this->html( 'bodytext' ) ?>
- <!-- /bodytext -->
+ <!-- bodycontent -->
+ <?php $this->html( 'bodycontent' ) ?>
+ <!-- /bodycontent -->
+ <?php if ( $this->data['printfooter'] ): ?>
+ <!-- printfooter -->
+ <div class="printfooter">
+ <?php $this->html( 'printfooter' ); ?>
+ </div>
+ <!-- /printfooter -->
+ <?php endif; ?>
<?php if ( $this->data['catlinks'] ): ?>
<!-- catlinks -->
<?php $this->html( 'catlinks' ); ?>
@@ -516,6 +195,9 @@ class VectorTemplate extends QuickTemplate {
<!-- /dataAfterContent -->
<?php endif; ?>
<div class="visualClear"></div>
+ <!-- debughtml -->
+ <?php $this->html( 'debughtml' ); ?>
+ <!-- /debughtml -->
</div>
<!-- /bodyContent -->
</div>
@@ -534,28 +216,25 @@ class VectorTemplate extends QuickTemplate {
<!-- panel -->
<div id="mw-panel" class="noprint">
<!-- logo -->
- <div id="p-logo"><a style="background-image: url(<?php $this->text( 'logopath' ) ?>);" href="<?php echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] ) ?>" <?php echo $this->skin->tooltipAndAccesskey( 'p-logo' ) ?>></a></div>
+ <div id="p-logo"><a style="background-image: url(<?php $this->text( 'logopath' ) ?>);" href="<?php echo htmlspecialchars( $this->data['nav_urls']['mainpage']['href'] ) ?>" <?php echo Xml::expandAttributes( Linker::tooltipAndAccesskeyAttribs( 'p-logo' ) ) ?>></a></div>
<!-- /logo -->
<?php $this->renderPortals( $this->data['sidebar'] ); ?>
</div>
<!-- /panel -->
<!-- footer -->
- <div id="footer"<?php $this->html('userlangattributes') ?>>
- <?php foreach( $validFooterLinks as $category => $links ): ?>
- <?php if ( count( $links ) > 0 ): ?>
+ <div id="footer"<?php $this->html( 'userlangattributes' ) ?>>
+ <?php foreach( $this->getFooterLinks() as $category => $links ): ?>
<ul id="footer-<?php echo $category ?>">
<?php foreach( $links as $link ): ?>
- <?php if( isset( $this->data[$link] ) && $this->data[$link] ): ?>
<li id="footer-<?php echo $category ?>-<?php echo $link ?>"><?php $this->html( $link ) ?></li>
- <?php endif; ?>
<?php endforeach; ?>
</ul>
- <?php endif; ?>
<?php endforeach; ?>
-<?php if ( count( $footericons ) > 0 ): ?>
+ <?php $footericons = $this->getFooterIcons("icononly");
+ if ( count( $footericons ) > 0 ): ?>
<ul id="footer-icons" class="noprint">
<?php foreach ( $footericons as $blockName => $footerIcons ): ?>
- <li id="footer-<?php echo htmlspecialchars($blockName); ?>ico">
+ <li id="footer-<?php echo htmlspecialchars( $blockName ); ?>ico">
<?php foreach ( $footerIcons as $icon ): ?>
<?php echo $this->skin->makeFooterIcon( $icon ); ?>
@@ -567,14 +246,11 @@ class VectorTemplate extends QuickTemplate {
<div style="clear:both"></div>
</div>
<!-- /footer -->
- <?php $this->html( 'bottomscripts' ); /* JS call to runBodyOnloadHook */ ?>
<!-- fixalpha -->
- <script type="<?php $this->text('jsmimetype') ?>"> if ( window.isMSIE55 ) fixalpha(); </script>
+ <script type="<?php $this->text( 'jsmimetype' ) ?>"> if ( window.isMSIE55 ) fixalpha(); </script>
<!-- /fixalpha -->
- <?php $this->html( 'reporttime' ) ?>
- <?php if ( $this->data['debug'] ): ?>
- <!-- Debug output: <?php $this->text( 'debug' ); ?> -->
- <?php endif; ?>
+ <?php $this->printTrail(); ?>
+
</body>
</html>
<?php
@@ -582,96 +258,75 @@ class VectorTemplate extends QuickTemplate {
/**
* Render a series of portals
+ *
+ * @param $portals array
*/
private function renderPortals( $portals ) {
// Force the rendering of the following portals
- if ( !isset( $portals['SEARCH'] ) ) $portals['SEARCH'] = true;
- if ( !isset( $portals['TOOLBOX'] ) ) $portals['TOOLBOX'] = true;
- if ( !isset( $portals['LANGUAGES'] ) ) $portals['LANGUAGES'] = true;
+ if ( !isset( $portals['SEARCH'] ) ) {
+ $portals['SEARCH'] = true;
+ }
+ if ( !isset( $portals['TOOLBOX'] ) ) {
+ $portals['TOOLBOX'] = true;
+ }
+ if ( !isset( $portals['LANGUAGES'] ) ) {
+ $portals['LANGUAGES'] = true;
+ }
// Render portals
foreach ( $portals as $name => $content ) {
+ if ( $content === false )
+ continue;
+
echo "\n<!-- {$name} -->\n";
switch( $name ) {
case 'SEARCH':
break;
case 'TOOLBOX':
-?>
-<div class="portal" id="p-tb">
- <h5<?php $this->html('userlangattributes') ?>><?php $this->msg( 'toolbox' ) ?></h5>
- <div class="body">
- <ul>
- <?php if( $this->data['notspecialpage'] ): ?>
- <li id="t-whatlinkshere"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['whatlinkshere']['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-whatlinkshere' ) ?>><?php $this->msg( 'whatlinkshere' ) ?></a></li>
- <?php if( $this->data['nav_urls']['recentchangeslinked'] ): ?>
- <li id="t-recentchangeslinked"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['recentchangeslinked']['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-recentchangeslinked' ) ?>><?php $this->msg( 'recentchangeslinked-toolbox' ) ?></a></li>
- <?php endif; ?>
- <?php endif; ?>
- <?php if( isset( $this->data['nav_urls']['trackbacklink'] ) ): ?>
- <li id="t-trackbacklink"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['trackbacklink']['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-trackbacklink' ) ?>><?php $this->msg( 'trackbacklink' ) ?></a></li>
- <?php endif; ?>
- <?php if( $this->data['feeds']): ?>
- <li id="feedlinks">
- <?php foreach( $this->data['feeds'] as $key => $feed ): ?>
- <a id="<?php echo Sanitizer::escapeId( "feed-$key" ) ?>" href="<?php echo htmlspecialchars( $feed['href'] ) ?>" rel="alternate" type="application/<?php echo $key ?>+xml" class="feedlink"<?php echo $this->skin->tooltipAndAccesskey( 'feed-' . $key ) ?>><?php echo htmlspecialchars( $feed['text'] ) ?></a>
- <?php endforeach; ?>
- </li>
- <?php endif; ?>
- <?php foreach( array( 'contributions', 'log', 'blockip', 'emailuser', 'upload', 'specialpages' ) as $special ): ?>
- <?php if( $this->data['nav_urls'][$special]): ?>
- <li id="t-<?php echo $special ?>"><a href="<?php echo htmlspecialchars( $this->data['nav_urls'][$special]['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-' . $special ) ?>><?php $this->msg( $special ) ?></a></li>
- <?php endif; ?>
- <?php endforeach; ?>
- <?php if( !empty( $this->data['nav_urls']['print']['href'] ) ): ?>
- <li id="t-print"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['print']['href'] ) ?>" rel="alternate"<?php echo $this->skin->tooltipAndAccesskey( 't-print' ) ?>><?php $this->msg( 'printableversion' ) ?></a></li>
- <?php endif; ?>
- <?php if ( !empty( $this->data['nav_urls']['permalink']['href'] ) ): ?>
- <li id="t-permalink"><a href="<?php echo htmlspecialchars( $this->data['nav_urls']['permalink']['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 't-permalink' ) ?>><?php $this->msg( 'permalink' ) ?></a></li>
- <?php elseif ( $this->data['nav_urls']['permalink']['href'] === '' ): ?>
- <li id="t-ispermalink"<?php echo $this->skin->tooltip( 't-ispermalink' ) ?>><?php $this->msg( 'permalink' ) ?></li>
- <?php endif; ?>
- <?php wfRunHooks( 'SkinTemplateToolboxEnd', array( &$this ) ); ?>
- </ul>
- </div>
-</div>
-<?php
+ $this->renderPortal( 'tb', $this->getToolbox(), 'toolbox', 'SkinTemplateToolboxEnd' );
break;
case 'LANGUAGES':
if ( $this->data['language_urls'] ) {
-?>
-<div class="portal" id="p-lang">
- <h5<?php $this->html('userlangattributes') ?>><?php $this->msg( 'otherlanguages' ) ?></h5>
- <div class="body">
- <ul>
- <?php foreach ( $this->data['language_urls'] as $langlink ): ?>
- <li class="<?php echo htmlspecialchars( $langlink['class'] ) ?>"><a href="<?php echo htmlspecialchars( $langlink['href'] ) ?>" title="<?php echo htmlspecialchars( $langlink['title'] ) ?>"><?php echo $langlink['text'] ?></a></li>
- <?php endforeach; ?>
- </ul>
- </div>
-</div>
-<?php
+ $this->renderPortal( 'lang', $this->data['language_urls'], 'otherlanguages' );
}
break;
default:
-?>
-<div class="portal" id='<?php echo Sanitizer::escapeId( "p-$name" ) ?>'<?php echo $this->skin->tooltip( 'p-' . $name ) ?>>
- <h5<?php $this->html('userlangattributes') ?>><?php $out = wfMsg( $name ); if ( wfEmptyMsg( $name, $out ) ) echo htmlspecialchars( $name ); else echo htmlspecialchars( $out ); ?></h5>
+ $this->renderPortal( $name, $content );
+ break;
+ }
+ echo "\n<!-- /{$name} -->\n";
+ }
+ }
+
+ private function renderPortal( $name, $content, $msg = null, $hook = null ) {
+ if ( !isset( $msg ) ) {
+ $msg = $name;
+ }
+ ?>
+<div class="portal" id='<?php echo Sanitizer::escapeId( "p-$name" ) ?>'<?php echo Linker::tooltip( 'p-' . $name ) ?>>
+ <h5<?php $this->html( 'userlangattributes' ) ?>><?php $msgObj = wfMessage( $msg ); echo htmlspecialchars( $msgObj->exists() ? $msgObj->text() : $msg ); ?></h5>
<div class="body">
- <?php if ( is_array( $content ) ): ?>
+<?php
+ if ( is_array( $content ) ): ?>
<ul>
- <?php foreach( $content as $val ): ?>
- <li id="<?php echo Sanitizer::escapeId( $val['id'] ) ?>"<?php if ( $val['active'] ): ?> class="active" <?php endif; ?>><a href="<?php echo htmlspecialchars( $val['href'] ) ?>"<?php echo $this->skin->tooltipAndAccesskey( $val['id'] ) ?>><?php echo htmlspecialchars( $val['text'] ) ?></a></li>
- <?php endforeach; ?>
+<?php
+ foreach( $content as $key => $val ): ?>
+ <?php echo $this->makeListItem( $key, $val ); ?>
+
+<?php
+ endforeach;
+ if ( isset( $hook ) ) {
+ wfRunHooks( $hook, array( &$this, true ) );
+ }
+ ?>
</ul>
- <?php else: ?>
+<?php
+ else: ?>
<?php echo $content; /* Allow raw HTML block to be defined by extensions */ ?>
- <?php endif; ?>
+<?php
+ endif; ?>
</div>
</div>
<?php
- break;
- }
- echo "\n<!-- /{$name} -->\n";
- }
}
/**
@@ -679,14 +334,14 @@ class VectorTemplate extends QuickTemplate {
* when UI is in RTL mode
*/
private function renderNavigation( $elements ) {
- global $wgVectorUseSimpleSearch, $wgVectorShowVariantName, $wgUser;
+ global $wgVectorUseSimpleSearch, $wgVectorShowVariantName, $wgUser, $wgLang;
// If only one element was given, wrap it in an array, allowing more
// flexible arguments
if ( !is_array( $elements ) ) {
$elements = array( $elements );
// If there's a series of elements, reverse them when in RTL mode
- } else if ( wfUILang()->isRTL() ) {
+ } elseif ( $wgLang->isRTL() ) {
$elements = array_reverse( $elements );
}
// Render elements
@@ -696,9 +351,9 @@ class VectorTemplate extends QuickTemplate {
case 'NAMESPACES':
?>
<div id="p-namespaces" class="vectorTabs<?php if ( count( $this->data['namespace_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
- <h5><?php $this->msg('namespaces') ?></h5>
- <ul<?php $this->html('userlangattributes') ?>>
- <?php foreach ($this->data['namespace_urls'] as $link ): ?>
+ <h5><?php $this->msg( 'namespaces' ) ?></h5>
+ <ul<?php $this->html( 'userlangattributes' ) ?>>
+ <?php foreach ( $this->data['namespace_urls'] as $link ): ?>
<li <?php echo $link['attributes'] ?>><span><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></span></li>
<?php endforeach; ?>
</ul>
@@ -717,9 +372,9 @@ class VectorTemplate extends QuickTemplate {
<?php endforeach; ?>
</h4>
<?php endif; ?>
- <h5><span><?php $this->msg('variants') ?></span><a href="#"></a></h5>
+ <h5><span><?php $this->msg( 'variants' ) ?></span><a href="#"></a></h5>
<div class="menu">
- <ul<?php $this->html('userlangattributes') ?>>
+ <ul<?php $this->html( 'userlangattributes' ) ?>>
<?php foreach ( $this->data['variant_urls'] as $link ): ?>
<li<?php echo $link['attributes'] ?>><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></li>
<?php endforeach; ?>
@@ -730,11 +385,16 @@ class VectorTemplate extends QuickTemplate {
break;
case 'VIEWS':
?>
-<div id="p-views" class="vectorTabs<?php if ( count( $this->data['view_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
+<div id="p-views" class="vectorTabs<?php if ( count( $this->data['view_urls'] ) == 0 ) { echo ' emptyPortlet'; } ?>">
<h5><?php $this->msg('views') ?></h5>
<ul<?php $this->html('userlangattributes') ?>>
<?php foreach ( $this->data['view_urls'] as $link ): ?>
- <li<?php echo $link['attributes'] ?>><span><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo (array_key_exists('img',$link) ? '<img src="'.$link['img'].'" alt="'.$link['text'].'" />' : htmlspecialchars( $link['text'] ) ) ?></a></span></li>
+ <li<?php echo $link['attributes'] ?>><span><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php
+ // $link['text'] can be undefined - bug 27764
+ if ( array_key_exists( 'text', $link ) ) {
+ echo array_key_exists( 'img', $link ) ? '<img src="' . $link['img'] . '" alt="' . $link['text'] . '" />' : htmlspecialchars( $link['text'] );
+ }
+ ?></a></span></li>
<?php endforeach; ?>
</ul>
</div>
@@ -743,10 +403,10 @@ class VectorTemplate extends QuickTemplate {
case 'ACTIONS':
?>
<div id="p-cactions" class="vectorMenu<?php if ( count( $this->data['action_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
- <h5><span><?php $this->msg('actions') ?></span><a href="#"></a></h5>
+ <h5><span><?php $this->msg( 'actions' ) ?></span><a href="#"></a></h5>
<div class="menu">
- <ul<?php $this->html('userlangattributes') ?>>
- <?php foreach ($this->data['action_urls'] as $link ): ?>
+ <ul<?php $this->html( 'userlangattributes' ) ?>>
+ <?php foreach ( $this->data['action_urls'] as $link ): ?>
<li<?php echo $link['attributes'] ?>><a href="<?php echo htmlspecialchars( $link['href'] ) ?>" <?php echo $link['key'] ?>><?php echo htmlspecialchars( $link['text'] ) ?></a></li>
<?php endforeach; ?>
</ul>
@@ -757,11 +417,12 @@ class VectorTemplate extends QuickTemplate {
case 'PERSONAL':
?>
<div id="p-personal" class="<?php if ( count( $this->data['personal_urls'] ) == 0 ) echo ' emptyPortlet'; ?>">
- <h5><?php $this->msg('personaltools') ?></h5>
- <ul<?php $this->html('userlangattributes') ?>>
- <?php foreach($this->data['personal_urls'] as $item): ?>
- <li <?php echo $item['attributes'] ?>><a href="<?php echo htmlspecialchars($item['href']) ?>"<?php echo $item['key'] ?><?php if(!empty($item['class'])): ?> class="<?php echo htmlspecialchars($item['class']) ?>"<?php endif; ?>><?php echo htmlspecialchars($item['text']) ?></a></li>
- <?php endforeach; ?>
+ <h5><?php $this->msg( 'personaltools' ) ?></h5>
+ <ul<?php $this->html( 'userlangattributes' ) ?>>
+<?php foreach( $this->getPersonalTools() as $key => $item ) { ?>
+ <?php echo $this->makeListItem( $key, $item ); ?>
+
+<?php } ?>
</ul>
</div>
<?php
@@ -769,23 +430,23 @@ class VectorTemplate extends QuickTemplate {
case 'SEARCH':
?>
<div id="p-search">
- <h5<?php $this->html('userlangattributes') ?>><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h5>
+ <h5<?php $this->html( 'userlangattributes' ) ?>><label for="searchInput"><?php $this->msg( 'search' ) ?></label></h5>
<form action="<?php $this->text( 'wgScript' ) ?>" id="searchform">
<input type='hidden' name="title" value="<?php $this->text( 'searchtitle' ) ?>"/>
<?php if ( $wgVectorUseSimpleSearch && $wgUser->getOption( 'vector-simplesearch' ) ): ?>
<div id="simpleSearch">
<?php if ( $this->data['rtl'] ): ?>
- <button id="searchButton" type='submit' name='button' <?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?>><img src="<?php echo $this->skin->getSkinStylePath('images/search-rtl.png'); ?>" alt="<?php $this->msg( 'searchbutton' ) ?>" /></button>
+ <?php echo $this->makeSearchButton( 'image', array( 'id' => 'searchButton', 'src' => $this->skin->getSkinStylePath( 'images/search-rtl.png' ) ) ); ?>
<?php endif; ?>
- <input id="searchInput" name="search" type="text" <?php echo $this->skin->tooltipAndAccesskey( 'search' ); ?> <?php if( isset( $this->data['search'] ) ): ?> value="<?php $this->text( 'search' ) ?>"<?php endif; ?> />
+ <?php echo $this->makeSearchInput( array( 'id' => 'searchInput', 'type' => 'text' ) ); ?>
<?php if ( !$this->data['rtl'] ): ?>
- <button id="searchButton" type='submit' name='button' <?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?>><img src="<?php echo $this->skin->getSkinStylePath('images/search-ltr.png'); ?>" alt="<?php $this->msg( 'searchbutton' ) ?>" /></button>
+ <?php echo $this->makeSearchButton( 'image', array( 'id' => 'searchButton', 'src' => $this->skin->getSkinStylePath( 'images/search-ltr.png' ) ) ); ?>
<?php endif; ?>
</div>
<?php else: ?>
- <input id="searchInput" name="search" type="text" <?php echo $this->skin->tooltipAndAccesskey( 'search' ); ?> <?php if( isset( $this->data['search'] ) ): ?> value="<?php $this->text( 'search' ) ?>"<?php endif; ?> />
- <input type='submit' name="go" class="searchButton" id="searchGoButton" value="<?php $this->msg( 'searcharticle' ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-go' ); ?> />
- <input type="submit" name="fulltext" class="searchButton" id="mw-searchButton" value="<?php $this->msg( 'searchbutton' ) ?>"<?php echo $this->skin->tooltipAndAccesskey( 'search-fulltext' ); ?> />
+ <?php echo $this->makeSearchInput( array( 'id' => 'searchInput' ) ); ?>
+ <?php echo $this->makeSearchButton( 'go', array( 'id' => 'searchGoButton', 'class' => 'searchButton' ) ); ?>
+ <?php echo $this->makeSearchButton( 'fulltext', array( 'id' => 'mw-searchButton', 'class' => 'searchButton' ) ); ?>
<?php endif; ?>
</form>
</div>
diff --git a/skins/archlinux/IE60Fixes.css b/skins/archlinux/IE60Fixes.css
index 56e0a16b..3bcd0479 100644
--- a/skins/archlinux/IE60Fixes.css
+++ b/skins/archlinux/IE60Fixes.css
@@ -11,16 +11,33 @@ div#column-content div#content {
margin-top: 3em;
height: 1%;
}
+.rtl div#column-content div#content {
+ margin-right: 12.2em;
+ margin-left: 0;
+}
div#column-one {
position: absolute;
top: 0;
left: 0;
z-index: 4;
}
+.rtl div#column-one {
+ left: auto;
+ right: 0;
+}
div#footer {
margin-left: 13.6em;
border-left: 1px solid #fabd23;
}
+.rtl div#footer {
+ margin-left: 0;
+ margin-right: 13.6em;
+ border-left: none;
+ border-right: 1px solid #fabd23;
+}
+
+ /* the tabs */
+
/* the tabs */
@@ -85,7 +102,6 @@ textarea {
width: 96%;
}
-div.editsection,
#catlinks,
div.tright,
div.tleft {
diff --git a/skins/archlinux/IE70Fixes.css b/skins/archlinux/IE70Fixes.css
index 91b39efd..fc009e6e 100644
--- a/skins/archlinux/IE70Fixes.css
+++ b/skins/archlinux/IE70Fixes.css
@@ -9,6 +9,9 @@ div#column-content div#content {
height: 1%;
}
+.rtl div#column-content div#content { margin-right: 12.2em; margin-left: 0; }
+
+
.rtl div#column-one {
/* For some reason it tries to inherit the padding-top into every div,
* and I can't figure out how to get it back off.
@@ -18,9 +21,13 @@ div#column-content div#content {
margin-top: 160px;
}
-.rtl #bodyContent a.external {
- background-image: url(external-rtl.png);
- padding: 0 13px 0 0;
+/* These elements also have padding-left: 20px; in main.css, but in RTL mode this is flipped.
+ * That's good in normal browsers, but in IE7 it needs to not be flipped for some daft reason.
+ * Also clear the right margin (originally margin-left: 1em)
+ */
+li#pt-userpage, li#pt-anonuserpage, li#pt-login {
+ padding-left: 20px;
+ margin-right: 0;
}
.rtl a.feedlink {
@@ -69,7 +76,6 @@ textarea {
}
/*
-div.editsection,
#catlinks,
div.tright,
div.tleft {
diff --git a/skins/archlinux/external.png b/skins/archlinux/external-ltr.png
index acf260fc..acf260fc 100644
--- a/skins/archlinux/external.png
+++ b/skins/archlinux/external-ltr.png
Binary files differ
diff --git a/skins/archlinux/main.css b/skins/archlinux/main.css
index d2330eba..edf79abb 100644
--- a/skins/archlinux/main.css
+++ b/skins/archlinux/main.css
@@ -41,10 +41,13 @@ div#content {
body {
font: x-small sans-serif;
+ /* @embed */
background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat;
color: black;
margin: 0;
padding: 0;
+ direction: ltr; /* Needed for RTL flipping */
+ unicode-bidi: embed;
}
/* scale back up to a sane default */
@@ -136,6 +139,7 @@ ul {
list-style-type: square;
margin: .3em 0 0 1.5em;
padding: 0;
+ /* @embed */
list-style-image: url(bullet.gif);
}
ol {
@@ -263,6 +267,7 @@ span.subpages {
vertical-align: middle;
}
#siteNotice {
+ position: relative;
text-align: center;
font-size: 95%;
padding: 0 0.9em;
@@ -306,7 +311,7 @@ in the bottom-right corner of the content area */
margin-right: auto;
}
/* small for tables and similar */
-.small, .small * {
+.small {
font-size: 94%;
}
table.small {
@@ -344,7 +349,7 @@ table.small {
list-style-type: none;
list-style-image: none;
margin-left: 0;
- padding-left: 0;
+ padding: 0;
text-align: left;
}
#toc ul ul,
@@ -363,10 +368,7 @@ table.small {
}
/* images */
-div.floatright, table.floatright {
- clear: right;
- float: right;
- position: relative;
+/* @noflip */div.floatright, table.floatright {
margin: 0 0 .5em .5em;
border: 0;
/*
@@ -375,10 +377,7 @@ div.floatright, table.floatright {
*/
}
div.floatright p { font-style: italic; }
-div.floatleft, table.floatleft {
- float: left;
- clear: left;
- position: relative;
+/* @noflip */div.floatleft, table.floatleft {
margin: 0 .5em .5em 0;
border: 0;
/*
@@ -421,22 +420,15 @@ div.magnify a, div.magnify img {
border: none !important;
background: none !important;
}
-div.tright {
- clear: right;
- float: right;
+/* @noflip */div.tright {
margin: .5em 0 1.3em 1.4em;
}
-div.tleft {
- float: left;
- clear: left;
+/* @noflip */div.tleft {
margin: .5em 1.4em 1.3em 0;
}
img.thumbborder {
border: 1px solid #dddddd;
}
-.hiddenStructure {
- display: none;
-}
/*
** classes for special content elements like town boxes
@@ -476,36 +468,39 @@ table.rimage {
*/
#bodyContent a.external,
#bodyContent a.external[href ^="gopher://"] {
- background: url(external.png) center right no-repeat;
- padding: 0 13px;
-}
-.rtl #bodyContent a.external,
-.rtl #bodyContent a.external[href ^="gopher://"] {
- background-image: url(external-rtl.png);
+ /* @embed */
+ background: url(external-ltr.png) center right no-repeat;
+ padding-right: 13px;
}
#bodyContent a.external[href ^="https://"],
.link-https {
+ /* @embed */
background: url(lock_icon.gif) center right no-repeat;
- padding: 0 16px;
+ padding-right: 16px;
}
#bodyContent a.external[href ^="mailto:"],
.link-mailto {
+ /* @embed */
background: url(mail_icon.gif) center right no-repeat;
- padding: 0 18px;
+ padding-right: 18px;
}
#bodyContent a.external[href ^="news://"] {
+ /* @embed */
background: url(news_icon.png) center right no-repeat;
- padding: 0 18px;
+ padding-right: 18px;
}
#bodyContent a.external[href ^="ftp://"],
.link-ftp {
+ /* @embed */
background: url(file_icon.gif) center right no-repeat;
- padding: 0 18px;
+ padding-right: 18px;
}
#bodyContent a.external[href ^="irc://"],
+#bodyContent a.external[href ^="ircs://"],
.link-irc {
+ /* @embed */
background: url(discussionitem_icon.gif) center right no-repeat;
- padding: 0 18px;
+ padding-right: 18px;
}
#bodyContent a.external[href $=".ogg"], #bodyContent a.external[href $=".OGG"],
#bodyContent a.external[href $=".mid"], #bodyContent a.external[href $=".MID"],
@@ -514,49 +509,54 @@ table.rimage {
#bodyContent a.external[href $=".wav"], #bodyContent a.external[href $=".WAV"],
#bodyContent a.external[href $=".wma"], #bodyContent a.external[href $=".WMA"],
.link-audio {
+ /* @embed */
background: url("audio.png") center right no-repeat;
- padding: 0 13px;
+ padding-right: 13px;
}
#bodyContent a.external[href $=".ogm"], #bodyContent a.external[href $=".OGM"],
#bodyContent a.external[href $=".avi"], #bodyContent a.external[href $=".AVI"],
#bodyContent a.external[href $=".mpeg"], #bodyContent a.external[href $=".MPEG"],
#bodyContent a.external[href $=".mpg"], #bodyContent a.external[href $=".MPG"],
.link-video {
+ /* @embed */
background: url("video.png") center right no-repeat;
- padding: 0 13px;
+ padding-right: 13px;
}
#bodyContent a.external[href $=".pdf"], #bodyContent a.external[href $=".PDF"],
#bodyContent a.external[href *=".pdf#"], #bodyContent a.external[href *=".PDF#"],
#bodyContent a.external[href *=".pdf?"], #bodyContent a.external[href *=".PDF?"],
.link-document {
+ /* @embed */
background: url("document.png") center right no-repeat;
- padding: 0 12px;
-}
-
-/* for rtl wikis */
-.rtl #bodyContent a.external {
- background-position: left;
- padding-right: 0;
-}
-.rtl a.feedlink {
- background-position: right;
- padding-right: 16px;
- padding-left: 0;
+ padding-right: 12px;
}
-
-/* correction for ltr wikis */
-.ltr #bodyContent a.external {
- padding-left: 0;
-}
-
-/* disable interwiki styling */
+
+/* Interwiki Styling */
#bodyContent a.extiw,
#bodyContent a.extiw:active {
color: #36b;
+ /* Don't show icons for interwiki links */
+ background: none;
+ padding: 0;
}
+#bodyContent a.extiw:visited {
+ color: #636;
+}
+#bodyContent a.extiw:active {
+ color: #b63;
+}
+
+/* External links */
#bodyContent a.external {
color: #36b;
}
+#bodyContent a.external:visited {
+ color: #636; /* bug 3112 */
+}
+#bodyContent a.external:active {
+ color: #b63;
+}
+
/*
** Structural Elements
*/
@@ -617,6 +617,7 @@ table.rimage {
.portlet ul {
line-height: 1.5em;
list-style-type: square;
+ /* @embed */
list-style-image: url(bullet.gif);
font-size: 95%;
}
@@ -753,6 +754,7 @@ in bg url to hide it from iemac */
li#pt-userpage,
li#pt-anonuserpage,
li#pt-login {
+ /* @embed */
background: url(user.gif) top left no-repeat;
padding-left: 20px;
text-transform: none;
@@ -848,9 +850,6 @@ li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
border: 0;
padding: 0;
}
-#p-cactions .hiddenStructure {
- display: none;
-}
#p-cactions li a {
text-transform: lowercase;
}
@@ -1007,10 +1006,6 @@ div#userlogin form#userlogin2 {
background-color: #f9f9f9;
float: left;
}
-.rtl div#userloginForm form,
-.rtl div#userlogin form#userlogin2 {
- float: right;
-}
div#userloginForm table,
div#userlogin form#userlogin2 table {
@@ -1080,7 +1075,6 @@ div#userloginForm .captcha {
display: inline;
margin-bottom: 0;
}
-* html div.editsection { font-size: smaller; }
#pagehistory li.selected { position: relative; }
/* Mac IE 5.0 fix; floated content turns invisible */
@@ -1254,4 +1248,4 @@ div.mw-lag-warn-high {
/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */
.tipsy {
font-size: 127%;
-} \ No newline at end of file
+}
diff --git a/skins/archlinux/print.css b/skins/archlinux/print.css
new file mode 100644
index 00000000..a2780f7a
--- /dev/null
+++ b/skins/archlinux/print.css
@@ -0,0 +1,3 @@
+#archnavbar {
+ display: none;
+}
diff --git a/skins/archlinux/rtl.css b/skins/archlinux/rtl.css
deleted file mode 100644
index 52507676..00000000
--- a/skins/archlinux/rtl.css
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-Right-to-left fixes for MonoBook.
-Places sidebar on right, tweaks various alignment issues.
-
-Works mostly ok nicely on Safari 1.2.1; fine in Mozilla.
-
-Safari bugs (1.2.1):
-* Tabs are still appearing in left-to-right order. (Try after localizing)
-
-Opera bugs (7.23 linux):
-* Some bits of ltr text (sidebar box titles) have forward and backward versions overlapping each other
-
-IE/mac bugs:
-* The thing barfs on Hebrew and Arabic anyway, so no point testing.
-
-Missing features due to lack of support:
-* external link icons
-
-To test:
-* Opera6
-* IE 5.0
-* etc
-
-*/
-body {
- direction: rtl;
- unicode-bidi: embed;
-}
-div#column-content {
- margin: 0 -12.2em 0 0;
- float: left;
-}
-div#column-content div#content{
- margin-left: 0;
- margin-right: 12.2em;
- border-right: 1px solid #aaaaaa;
- border-left: none;
-}
-html > body .portlet {
- float: right;
- clear: right;
-}
-.editsection {
- float: left;
- margin-right: 5px;
- margin-left: 0; /* bug 9122: undo default LTR */
-}
-/* recover IEMac (might be fine with the float, but usually it's close to IE */
-*>body .portlet {
- float: none;
- clear: none;
-}
-.pBody {
- padding-right: 0.8em;
- padding-left: 0.5em;
-}
-
-/* Fix alignment */
-.documentByLine,
-.portletDetails,
-.portletMore,
-#p-personal {
- text-align: left;
-}
-
-div div.thumbcaption {
- text-align: right;
-}
-
-div.magnify,
-#p-logo {
- left: auto;
- right: 0;
-}
-#p-personal {
- left: auto;
- right: 0;
-}
-
-#p-cactions {
- left: auto;
- right: 11.5em;
- padding-left: 0;
- padding-right: 1em;
-}
-#p-cactions li {
- margin-left: 0.3em;
- margin-right: 0;
- float: right;
-}
-* html #p-cactions li a {
- display: block;
- padding-bottom: 0;
-}
-* html #p-cactions li a:hover {
- padding-bottom: 0.2em;
-}
-/* offsets to distinguish the tab groups */
-li#ca-talk {
- margin-right: auto;
- margin-left: 1.6em;
-}
-li#ca-watch,li#ca-unwatch {
- margin-right: 1.6em !important;
-}
-
-/* Fix margins for non-css2 browsers */
-/* top right bottom left */
-
-ul {
- margin-left: 0;
- margin-right: 1.5em;
-}
-ol {
- margin-left: 0;
- margin-right: 2.4em;
-}
-dd {
- margin-left: 0;
- margin-right: 1.6em;
-}
-#contentSub {
- margin-right: 1em;
- margin-left: 0;
-}
-.tocindent {
- margin-left: 0;
- margin-right: 2em;
-}
-div.tright, div.floatright, table.floatright {
- clear: none;
-}
-div.tleft, div.floatleft, table.floatleft {
- clear: left;
-}
-#p-personal li {
- margin-left: 0;
- margin-right: 1em;
-}
-
-li#ca-talk,
-li#ca-watch {
- margin-right: auto;
- margin-left: 1.6em;
-}
-
-#p-personal li {
- float: left;
-}
-/* Fix link icons
-.external, a.feedlink {
- padding: 0 !important;
- background: none !important;
-}
-*/
-div#footer {
- clear: both;
-}
-#f-poweredbyico {
- float: left;
- height: 1%;
-}
-#f-copyrightico {
- float: right;
- height: 1%;
-}
-* html div#footer {
- margin-left: 0;
- margin-right: 13.6em;
- border-left: 0;
- border-right: 1px solid #fabd23;
-}
-* html div#column-content {
- float: none;
- margin-left: 0;
- margin-right: 0;
-}
-* html div#column-content div#content {
- margin-left: 0;
- margin-top: 3em;
-}
-* html div#column-one { right: 0; }
-
-/* js pref toc */
-
-#preftoc {
- margin-right: 1em;
-}
-
-.errorbox, .successbox, #preftoc li, .prefsection fieldset {
- float: right;
-}
-
-.prefsection {
- padding-right: 2em;
-}
-
-/* workaround for moz bug, displayed bullets on left side */
-
-#toc ul {
- text-align: right;
-}
-
-#toc ul ul {
- margin: 0 2em 0 0;
-}
-
-input#wpSave, input#wpDiff {
- margin-right: 0;
- margin-left: .33em;
-}
-
-#userlogin {
- margin: 0 0 1em 3em;
-}
-/* Convenience links to edit block, delete and protect reasons */
-p.mw-ipb-conveniencelinks, p.mw-protect-editreasons,
-p.mw-filedelete-editreasons, p.mw-delete-editreasons {
- float: left;
-}
-
-.toggle {
- margin-left: 0em;
- margin-right: 2em;
-}
-table.filehistory th {
- text-align: right;
-}
-
-/* Special:AllPages styling */
-td.mw-allpages-nav, p.mw-allpages-nav, td.mw-allpages-alphaindexline {
- text-align: left;
-}
-
-/* Special:PrefixIndex styling */
-td#mw-prefixindex-nav-form {
- text-align: left;
-}
-
-/**
- * Lists:
- * The following lines don't have a visible effect on non-Gecko browsers
- * They fix a problem ith Gecko browsers rendering lists to the right of
- * left-floated objects in an RTL layout.
- */
-html > body div#article ul {
- display: table;
-}
-html > body div#bodyContent ul#filetoc {
- display: block;
-}
diff --git a/skins/chick/main.css b/skins/chick/main.css
index 961d1c0a..4501ccd0 100644
--- a/skins/chick/main.css
+++ b/skins/chick/main.css
@@ -231,7 +231,7 @@ in the bottom-right corner of the content area */
margin-right: auto;
}
/* small for tables and similar */
-.small, .small * { font-size: 94%; }
+.small { font-size: 94%; }
table.small { font-size: 100% }
/*
@@ -245,7 +245,7 @@ table.small { font-size: 100% }
padding:5px;
font-size: 95%;
}
-#toc ul { margin-left: 2em; }
+#toc ul { margin: 0 2em; }
#toc .toctoggle { font-size: 94%; }
#toc .editsection {
margin-top: 0.7em;
@@ -253,20 +253,14 @@ table.small { font-size: 100% }
}
/* images */
-div.floatright, table.floatright {
- clear: right;
- float: right;
+/* @noflip */div.floatright, table.floatright {
margin: 0;
- position: relative;
border: 0.5em solid white;
border-width: 0.5em 0 0.8em 1.4em;
}
div.floatright p { font-style: italic; }
-div.floatleft, table.floatleft {
- float: left;
- clear: left;
+/* @noflip */div.floatleft, table.floatleft {
margin: 0.3em 0.5em 0.5em 0;
- position: relative;
border: 0.5em solid white;
border-width: 0.5em 1.4em 0.8em 0;
}
@@ -303,24 +297,16 @@ div.magnify a, div.magnify img {
border: none !important;
background: none !important;
}
-div.tright {
- clear: right;
- float: right;
+/* @noflip */div.tright {
margin: 0.5em 0 1.3em 1.4em;
}
-div.tleft {
- float: left;
- clear: left;
+/* @noflip */div.tleft {
margin: 0.5em 1.4em 1.3em 0;
}
img.thumbborder {
border: 1px solid #dddddd;
}
-.hiddenStructure {
- display: none;
-}
-
/*
** classes for special content elements like town boxes
** intended to be referenced directly from the wiki src
diff --git a/skins/common/cologneblue.css b/skins/cologneblue/screen.css
index c7b6eac1..03504b99 100644
--- a/skins/common/cologneblue.css
+++ b/skins/cologneblue/screen.css
@@ -96,10 +96,30 @@ td.top a {
font-size: 10pt;
}
+td#top-syslinks {
+ text-align: right;
+ vertical-align: bottom;
+}
+td.top-linkcollection {
+ text-align: right;
+}
+td.top-subheader {
+ vertical-align: top;
+}
+
+/**
+ * Overrides text justification (user preference)
+ * See bug 31990
+ */
+td.top-linkcollection #catlinks {
+ text-align: right;
+}
td.bottom {
font-family: Verdana, Arial, sans-serif;
font-size: 10pt;
padding: 0;
+ text-align: center;
+ vertical-align: bottom;
}
#pagestats {
@@ -207,4 +227,4 @@ small {
input.mw-searchInput {
width: 106px;
-} \ No newline at end of file
+}
diff --git a/skins/common/IEFixes.js b/skins/common/IEFixes.js
index ba4dc66b..7f3b9c0f 100644
--- a/skins/common/IEFixes.js
+++ b/skins/common/IEFixes.js
@@ -69,9 +69,9 @@ window.relativeforfloats = function() {
if ( bc ) {
var tables = bc.getElementsByTagName( 'table' );
var divs = bc.getElementsByTagName( 'div' );
+ setrelative( tables );
+ setrelative( divs );
}
- setrelative( tables );
- setrelative( divs );
};
window.setrelative = function( nodes ) {
diff --git a/skins/common/Makefile b/skins/common/Makefile
deleted file mode 100644
index 56e60bd4..00000000
--- a/skins/common/Makefile
+++ /dev/null
@@ -1,2 +0,0 @@
-jquery.min.js: jquery.js
- php ../../maintenance/minify.php $< --outfile $@
diff --git a/skins/common/ajax.js b/skins/common/ajax.js
index 1cad75ed..2a93373f 100644
--- a/skins/common/ajax.js
+++ b/skins/common/ajax.js
@@ -154,8 +154,6 @@ window.sajax_do_call = function(func_name, args, target) {
} else {
alert( 'bad target for sajax_do_call: not a function or object: ' + target );
}
-
- return;
};
sajax_debug( func_name + ' uri = ' + uri + ' / post = ' + post_data );
diff --git a/skins/common/ajaxwatch.js b/skins/common/ajaxwatch.js
deleted file mode 100644
index aaf6360c..00000000
--- a/skins/common/ajaxwatch.js
+++ /dev/null
@@ -1,120 +0,0 @@
-/**
- * Animate watch/unwatch links to use asynchronous API requests to
- * watch pages, rather than clicking on links. Requires jQuery.
- * Uses jsMsg() from wikibits.js.
- */
-
-if ( typeof wgAjaxWatch === 'undefined' || !wgAjaxWatch ) {
- window.wgAjaxWatch = { };
-}
-
-wgAjaxWatch.setLinkText = function( $link, action ) {
- if ( action == 'watch' || action == 'unwatch' ) {
- // save the accesskey from the title
- var keyCommand = $link.attr( 'title' ).match( /\[.*?\]$/ ) ? $link.attr( 'title' ).match( /\[.*?\]$/ )[0] : '';
- $link.attr( 'title', mediaWiki.msg( 'tooltip-ca-' + action ) + ' ' + keyCommand );
- }
- if ( $link.data( 'icon' ) ) {
- $link.attr( 'alt', mediaWiki.msg( action ) );
- if ( action == 'watching' || action == 'unwatching' ) {
- $link.addClass( 'loading' );
- } else {
- $link.removeClass( 'loading' );
- }
- } else {
- $link.html( mediaWiki.msg( action ) );
- }
-};
-
-wgAjaxWatch.processResult = function( response ) {
- response = response.watch;
- var $link = $( this );
- // To ensure we set the same status for all watch links with the
- // same target we trigger a custom event on *all* watch links.
- if( response.watched !== undefined ) {
- wgAjaxWatch.$links.trigger( 'mw-ajaxwatch', [response.title, 'watch'] );
- } else if ( response.unwatched !== undefined ) {
- wgAjaxWatch.$links.trigger( 'mw-ajaxwatch', [response.title, 'unwatch'] );
- } else {
- // Either we got an error code or it just plain broke.
- window.location.href = $link.attr( 'href' );
- return;
- }
-
- jsMsg( response.message, 'watch' );
-
- // Bug 12395 - update the watch checkbox on edit pages when the
- // page is watched or unwatched via the tab.
- if( response.watched !== undefined ) {
- $( '#wpWatchthis' ).attr( 'checked', '1' );
- } else {
- $( '#wpWatchthis' ).removeAttr( 'checked' );
- }
-};
-
-$( document ).ready( function() {
- var $links = $( '.mw-watchlink a, a.mw-watchlink' );
- // BC with older skins
- $links = $links
- .add( $( '#ca-watch a, #ca-unwatch a, a#mw-unwatch-link1' ) )
- .add( $( 'a#mw-unwatch-link2, a#mw-watch-link2, a#mw-watch-link1' ) );
- // allowing people to add inline animated links is a little scary
- $links = $links.filter( ':not( #bodyContent *, #content * )' );
-
- $links.each( function() {
- var $link = $( this );
- $link
- .data( 'icon', $link.parents( 'li' ).hasClass( 'icon' ) )
- .data( 'action', $link.attr( 'href' ).match( /[\?&]action=unwatch/i ) ? 'unwatch' : 'watch' );
- var title = $link.attr( 'href' ).match( /[\?&]title=(.*?)&/i )[1];
- $link.data( 'target', decodeURIComponent( title ).replace( /_/g, ' ' ) );
- });
-
- $links.click( function( event ) {
- var $link = $( this );
-
- if( wgAjaxWatch.supported === false || !wgEnableWriteAPI || !wfSupportsAjax() ) {
- // Lazy initialization so we don't toss up
- // ActiveX warnings on initial page load
- // for IE 6 users with security settings.
- wgAjaxWatch.$links.unbind( 'click' );
- return true;
- }
-
- wgAjaxWatch.setLinkText( $link, $link.data( 'action' ) + 'ing' );
- $.get( wgScriptPath
- + '/api' + wgScriptExtension + '?action=watch&format=json&title='
- + encodeURIComponent( $link.data( 'target' ) )
- + ( $link.data( 'action' ) == 'unwatch' ? '&unwatch' : '' ),
- {},
- wgAjaxWatch.processResult,
- 'json'
- );
-
- return false;
- });
-
- // When a request returns, a custom event 'mw-ajaxwatch' is triggered
- // on *all* watch links, so they can be updated if necessary
- $links.bind( 'mw-ajaxwatch', function( event, target, action ) {
- var $link = $( this );
- var foo = $link.data( 'target' );
- if( $link.data( 'target' ) == target ) {
- var otheraction = action == 'watch'
- ? 'unwatch'
- : 'watch';
-
- $link.data( 'action', otheraction );
- wgAjaxWatch.setLinkText( $link, otheraction );
- $link.attr( 'href', $link.attr( 'href' ).replace( '/&action=' + action + '/', '&action=' + otheraction ) );
- if( $link.parents( 'li' ).attr( 'id' ) == 'ca-' + action ) {
- $link.parents( 'li' ).attr( 'id', 'ca-' + otheraction );
- // update the link text with the new message
- $link.text( mediaWiki.msg( otheraction ) );
- }
- };
- return false;
- });
-
- wgAjaxWatch.$links = $links;
-});
diff --git a/skins/common/block.js b/skins/common/block.js
deleted file mode 100644
index fb86cbd6..00000000
--- a/skins/common/block.js
+++ /dev/null
@@ -1,89 +0,0 @@
-// @TODO: find some better JS file for this
-// Note: borrows from IP.php
-window.isIPv4Address = function( address, allowBlock ) {
- var block = allowBlock ? '(?:\\/(?:3[0-2]|[12]?\\d))?' : '';
- var RE_IP_BYTE = '(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|0?[0-9]?[0-9])';
- var RE_IP_ADD = '(?:' + RE_IP_BYTE + '\\.){3}' + RE_IP_BYTE;
- return address.search( new RegExp( '^' + RE_IP_ADD + block + '$' ) ) != -1;
-};
-
-// @TODO: find some better JS file for this
-// Note: borrows from IP.php
-window.isIPv6Address = function( address, allowBlock ) {
- var block = allowBlock ? '(?:\\/(?:12[0-8]|1[01][0-9]|[1-9]?\\d))?' : '';
- var RE_IPV6_ADD =
- '(?:' + // starts with "::" (including "::")
- ':(?::|(?::' + '[0-9A-Fa-f]{1,4}' + '){1,7})' +
- '|' + // ends with "::" (except "::")
- '[0-9A-Fa-f]{1,4}' + '(?::' + '[0-9A-Fa-f]{1,4}' + '){0,6}::' +
- '|' + // contains no "::"
- '[0-9A-Fa-f]{1,4}' + '(?::' + '[0-9A-Fa-f]{1,4}' + '){7}' +
- ')';
- if ( address.search( new RegExp( '^' + RE_IPV6_ADD + block + '$' ) ) != -1 ) {
- return true;
- }
- var RE_IPV6_ADD = // contains one "::" in the middle (single '::' check below)
- '[0-9A-Fa-f]{1,4}' + '(?:::?' + '[0-9A-Fa-f]{1,4}' + '){1,6}';
- return address.search( new RegExp( '^' + RE_IPV6_ADD + block + '$' ) ) != -1
- && address.search( /::/ ) != -1 && address.search( /::.*::/ ) == -1;
-};
-
-window.considerChangingExpiryFocus = function() {
- if ( !document.getElementById ) {
- return;
- }
- var drop = document.getElementById( 'wpBlockExpiry' );
- if ( !drop ) {
- return;
- }
- var field = document.getElementById( 'wpBlockOther' );
- if ( !field ) {
- return;
- }
- var opt = drop.value;
- if ( opt == 'other' ) {
- field.style.display = '';
- } else {
- field.style.display = 'none';
- }
-};
-
-window.updateBlockOptions = function() {
- if ( !document.getElementById ) {
- return;
- }
-
- var target = document.getElementById( 'mw-bi-target' );
- if ( !target ) {
- return;
- }
-
- var addy = target.value.replace( /(^\s*|\s*$)/, '' ); // trim
- var isEmpty = (addy == "");
-
- var isIp = isIPv4Address( addy, true ) || isIPv6Address( addy, true );
- var isIpRange = isIp && addy.match(/\/\d+$/);
-
- var anonymousRow = document.getElementById( 'wpAnonOnlyRow' );
- if( anonymousRow ) {
- anonymousRow.style.display = ( !isIp && !isEmpty ) ? 'none' : '';
- }
-
- var autoblockRow = document.getElementById( 'wpEnableAutoblockRow' );
- if( autoblockRow ) {
- autoblockRow.style.display = isIp && !isEmpty ? 'none' : '';
- }
-
- var hideuserRow = document.getElementById( 'wpEnableHideUser' );
- if( hideuserRow ) {
- hideuserRow.style.display = isIp && !isEmpty ? 'none' : '';
- }
-
- var watchuserRow = document.getElementById( 'wpEnableWatchUser' );
- if( watchuserRow ) {
- watchuserRow.style.display = isIpRange && !isEmpty ? 'none' : '';
- }
-};
-
-addOnloadHook( updateBlockOptions );
-addOnloadHook( considerChangingExpiryFocus );
diff --git a/skins/common/commonPrint.css b/skins/common/commonPrint.css
index 56203aa4..58703a33 100644
--- a/skins/common/commonPrint.css
+++ b/skins/common/commonPrint.css
@@ -78,11 +78,13 @@ html .thumbcaption {
div.magnify {
display: none;
}
+/* @noflip */
div.tright {
float: right;
clear: right;
margin: 0.5em 0 0.8em 1.4em;
}
+/* @noflip */
div.tleft {
float: left;
clear: left;
@@ -139,11 +141,14 @@ ul {
border: none ! important;
padding: 0 ! important;
margin: 0 ! important;
+ direction: ltr;
}
#footer {
background : white;
color : black;
- border-top: 1px solid black;
+ margin-top: 1em;
+ border-top: 1px solid #AAA;
+ direction: ltr;
}
h1, h2, h3, h4, h5, h6 {
@@ -235,7 +240,6 @@ span.texhtml { font-family: serif; }
/* Galleries (see shared.css for more info) */
li.gallerybox {
vertical-align: top;
- background-color: #f9f9f9;
border: solid 2px white;
display: -moz-inline-box;
display: inline-block;
@@ -341,3 +345,31 @@ p {
widows: 3;
orphans: 3;
}
+
+/**
+ * Categories
+ */
+.catlinks ul {
+ display: inline;
+ margin: 0px;
+ list-style: none;
+ list-style-type: none;
+ list-style-image: none;
+ vertical-align: middle !ie;
+}
+
+.catlinks li {
+ display: inline-block;
+ line-height: 1.15em;
+ padding: 0 .4em;
+ border-left: 1px solid #AAA;
+ margin: 0.1em 0;
+ zoom: 1;
+ display: inline !ie;
+}
+
+.catlinks li:first-child {
+ padding-left: .2em;
+ border-left: none;
+}
+
diff --git a/skins/common/common_rtl.css b/skins/common/common_rtl.css
deleted file mode 100644
index a0c485f0..00000000
--- a/skins/common/common_rtl.css
+++ /dev/null
@@ -1,59 +0,0 @@
-/*
- * This file contains CSS settings common to RTL wikis use the old
- * pre-Monobook skins Wikistandard, Nostalgia and CologneBlue
- * NOTE: This file is not used in Monobook!
- */
-
-/* js pref toc */
-#preftoc { float: right; }
-/* workaround for moz bug, displayed bullets on left side */
-#preftoc li { list-style: none; }
-#prefcontrol { float: right; }
-fieldset.prefsection,
-fieldset.operaprefsection {
- margin-left: 0;
- margin-right: 18em;
-}
-/* page history */
-#pagehistory .history-user {
- margin-right: 1.4em;
- margin-left: 0.4em;
-}
-.editsection {
- float: left;
- margin-right: 5px;
-}
-div.tright, div.floatright {
- clear: none;
-}
-div.tleft, div.floatleft {
- clear: left;
-}
-/* Convenience links to edit block, delete and protect reasons */
-p.mw-ipb-conveniencelinks, p.mw-protect-editreasons,
-p.mw-filedelete-editreasons, p.mw-delete-editreasons,
-p.mw-revdel-editreasons {
- float: left;
-}
-table.filehistory th {
- text-align: right;
-}
-
-/**
- * Lists:
- * The following lines don't have a visible effect on non-Gecko browsers
- * They fix a problem ith Gecko browsers rendering lists to the right of
- * left-floated objects in an RTL layout.
- */
-html > body div#article ul {
- display: table;
-}
-html > body div#bodyContent ul#filetoc {
- display: block;
-}
-
-/* feed links */
-a.feedlink {
- background: none !important;
- padding-left: 0 !important;
-}
diff --git a/skins/common/config.css b/skins/common/config.css
index 341a9038..434f27d5 100644
--- a/skins/common/config.css
+++ b/skins/common/config.css
@@ -68,24 +68,6 @@
.config-error-box {
border: 2px solid #f00;
- margin: 0.4em;
- clear: left;
-}
-
-.config-warning-box {
- border: 2px solid #ff7f00;
- margin: 0.4em;
- clear: left;
-}
-
-.config-info-left {
- margin: 7px;
- float: left;
- width: 35px;
-}
-
-.config-info-right {
- margin: 0.5em 0.5em 0.5em 49px;
}
.config-page-current {
@@ -159,6 +141,6 @@
margin-left: 2em;
}
-#config-update-log {
- width: 75%;
+#config-live-log {
+ margin-right: 18em;
}
diff --git a/skins/common/config.js b/skins/common/config.js
index 511966ad..e5af7d14 100644
--- a/skins/common/config.js
+++ b/skins/common/config.js
@@ -29,7 +29,7 @@
} );
// Scroll to the bottom of upgrade log
- $( "#config-update-log" ).each( function() { this.scrollTop = this.scrollHeight; } );
+ $( '#config-live-log' ).find( '> textarea' ).each( function() { this.scrollTop = this.scrollHeight; } );
// Show/hide Creative Commons thingy
$( '.licenseRadio' ).click( function() {
diff --git a/skins/common/diff.js b/skins/common/diff.js
deleted file mode 100644
index 5fd151fc..00000000
--- a/skins/common/diff.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-Workaround for overflow bug in Mozilla 1.1 and earlier, where scrolling
-<div>s in <td> cells collapse their height to a single line.
-
-Known to be fixed in 1.2.1 (Gecko 20021130), but the CSS hacks I've tried
-with overflow-x disable the scrolling all the way until Mozilla 1.8 / FF 1.5
-and break Opera as well.
-
-So... we check for reaaaally old Gecko and hack in an alternate rule to let
-the wide cells spill instead of scrolling them. Not ideal as it won't work
-if JS is disabled, of course.
-*/
-
-if (navigator && navigator.product == "Gecko" && navigator.productSub < "20021130") {
- var sheets = document.styleSheets;
- var lastSheet = sheets[sheets.length-1];
- lastSheet.insertRule(
- "table.diff td div { overflow: visible; }",
- lastSheet.cssRules.length);
-}
diff --git a/skins/common/edit.js b/skins/common/edit.js
deleted file mode 100644
index f986c854..00000000
--- a/skins/common/edit.js
+++ /dev/null
@@ -1,231 +0,0 @@
-window.currentFocused = undefined;
-
-// this function adds a toolbar button to the mwEditButtons list
-window.addButton = function( imageFile, speedTip, tagOpen, tagClose, sampleText, imageId ) {
- // Don't generate buttons for browsers which don't fully
- // support it.
- mwEditButtons.push({
- 'imageId': imageId,
- 'imageFile': imageFile,
- 'speedTip': speedTip,
- 'tagOpen': tagOpen,
- 'tagClose': tagClose,
- 'sampleText': sampleText
- });
-};
-
-// this function adds one toolbar button from a mwEditButtons/mwCustomEditButtons item
-window.mwInsertEditButton = function( parent, item ) {
- var image = document.createElement( 'img' );
- image.width = 23;
- image.height = 22;
- image.className = 'mw-toolbar-editbutton';
- if ( item.imageId ) {
- image.id = item.imageId;
- }
- image.src = item.imageFile;
- image.border = 0;
- image.alt = item.speedTip;
- image.title = item.speedTip;
- image.style.cursor = 'pointer';
- image.onclick = function() {
- insertTags( item.tagOpen, item.tagClose, item.sampleText );
- // click tracking
- if ( ( typeof $ != 'undefined' ) && ( typeof $.trackAction != 'undefined' ) ) {
- $.trackAction( 'oldedit.' + item.speedTip.replace(/ /g, "-") );
- }
- return false;
- };
-
- parent.appendChild( image );
- return true;
-};
-
-// this function generates the actual toolbar buttons with localized text
-// we use it to avoid creating the toolbar where javascript is not enabled
-window.mwSetupToolbar = function() {
- var toolbar = document.getElementById( 'toolbar' );
- if ( !toolbar ) {
- return false;
- }
-
- // Don't generate buttons for browsers which don't fully
- // support it.
- // but don't assume wpTextbox1 is always here
- var textboxes = document.getElementsByTagName( 'textarea' );
- if ( !textboxes.length ) {
- // No toolbar if we can't find any textarea
- return false;
- }
- // Only check for selection capability if the textarea is visible - errors will occur otherwise - just because
- // the textarea is not visible, doesn't mean we shouldn't build out the toolbar though - it might have been replaced
- // with some other kind of control
- if ( textboxes[0].style.display != 'none' ) {
- if ( !( document.selection && document.selection.createRange )
- && textboxes[0].selectionStart === null ) {
- return false;
- }
- }
- for ( var i = 0; i < mwEditButtons.length; i++ ) {
- mwInsertEditButton( toolbar, mwEditButtons[i] );
- }
- for ( var i = 0; i < mwCustomEditButtons.length; i++ ) {
- mwInsertEditButton( toolbar, mwCustomEditButtons[i] );
- }
- return true;
-};
-
-// apply tagOpen/tagClose to selection in textarea,
-// use sampleText instead of selection if there is none
-window.insertTags = function( tagOpen, tagClose, sampleText ) {
- if ( typeof $ != 'undefined' && typeof $.fn.textSelection != 'undefined' && currentFocused &&
- ( currentFocused.nodeName.toLowerCase() == 'iframe' || currentFocused.id == 'wpTextbox1' ) ) {
- $( '#wpTextbox1' ).textSelection(
- 'encapsulateSelection', { 'pre': tagOpen, 'peri': sampleText, 'post': tagClose }
- );
- return;
- }
- var txtarea;
- if ( document.editform ) {
- txtarea = currentFocused;
- } else {
- // some alternate form? take the first one we can find
- var areas = document.getElementsByTagName( 'textarea' );
- txtarea = areas[0];
- }
- var selText, isSample = false;
-
- if ( document.selection && document.selection.createRange ) { // IE/Opera
- // save window scroll position
- if ( document.documentElement && document.documentElement.scrollTop ) {
- var winScroll = document.documentElement.scrollTop
- } else if ( document.body ) {
- var winScroll = document.body.scrollTop;
- }
- // get current selection
- txtarea.focus();
- var range = document.selection.createRange();
- selText = range.text;
- // insert tags
- checkSelectedText();
- range.text = tagOpen + selText + tagClose;
- // mark sample text as selected
- if ( isSample && range.moveStart ) {
- if ( window.opera ) {
- tagClose = tagClose.replace(/\n/g,'');
- }
- range.moveStart('character', - tagClose.length - selText.length);
- range.moveEnd('character', - tagClose.length);
- }
- range.select();
- // restore window scroll position
- if ( document.documentElement && document.documentElement.scrollTop ) {
- document.documentElement.scrollTop = winScroll;
- } else if ( document.body ) {
- document.body.scrollTop = winScroll;
- }
-
- } else if ( txtarea.selectionStart || txtarea.selectionStart == '0' ) { // Mozilla
- // save textarea scroll position
- var textScroll = txtarea.scrollTop;
- // get current selection
- txtarea.focus();
- var startPos = txtarea.selectionStart;
- var endPos = txtarea.selectionEnd;
- selText = txtarea.value.substring( startPos, endPos );
- // insert tags
- checkSelectedText();
- txtarea.value = txtarea.value.substring(0, startPos)
- + tagOpen + selText + tagClose
- + txtarea.value.substring(endPos, txtarea.value.length);
- // set new selection
- if ( isSample ) {
- txtarea.selectionStart = startPos + tagOpen.length;
- txtarea.selectionEnd = startPos + tagOpen.length + selText.length;
- } else {
- txtarea.selectionStart = startPos + tagOpen.length + selText.length + tagClose.length;
- txtarea.selectionEnd = txtarea.selectionStart;
- }
- // restore textarea scroll position
- txtarea.scrollTop = textScroll;
- }
-
- function checkSelectedText() {
- if ( !selText ) {
- selText = sampleText;
- isSample = true;
- } else if ( selText.charAt(selText.length - 1) == ' ' ) { // exclude ending space char
- selText = selText.substring(0, selText.length - 1);
- tagClose += ' ';
- }
- }
-
-};
-
-/**
- * Restore the edit box scroll state following a preview operation,
- * and set up a form submission handler to remember this state
- */
-window.scrollEditBox = function() {
- var editBox = document.getElementById( 'wpTextbox1' );
- var scrollTop = document.getElementById( 'wpScrolltop' );
- var editForm = document.getElementById( 'editform' );
- if( editForm && editBox && scrollTop ) {
- if( scrollTop.value ) {
- editBox.scrollTop = scrollTop.value;
- }
- addHandler( editForm, 'submit', function() {
- scrollTop.value = editBox.scrollTop;
- } );
- }
-};
-hookEvent( 'load', scrollEditBox );
-hookEvent( 'load', mwSetupToolbar );
-hookEvent( 'load', function() {
- currentFocused = document.getElementById( 'wpTextbox1' );
- // http://www.quirksmode.org/blog/archives/2008/04/delegating_the.html
- // focus does not bubble normally, but using a trick we can do event delegation
- // on the focus event on all text inputs to make the toolbox usable on all of them
- var editForm = document.getElementById( 'editform' );
- if ( !editForm ) {
- return;
- }
- function onfocus( e ) {
- var elm = e.target || e.srcElement;
- if ( !elm ) {
- return;
- }
- var tagName = elm.tagName.toLowerCase();
- var type = elm.type || '';
- if ( tagName !== 'textarea' && tagName !== 'input' ) {
- return;
- }
- if ( tagName === 'input' && type.toLowerCase() !== 'text' ) {
- return;
- }
-
- currentFocused = elm;
- }
-
- if ( editForm.addEventListener ) {
- // Gecko, WebKit, Opera, etc... (all standards compliant browsers)
- editForm.addEventListener( 'focus', onfocus, true ); // This MUST be true to work
- } else if ( editForm.attachEvent ) {
- // IE needs a specific trick here since it doesn't support the standard
- editForm.attachEvent( 'onfocusin', function() { onfocus( event ); } );
- }
-
- // HACK: make currentFocused work with the usability iframe
- // With proper focus detection support (HTML 5!) this'll be much cleaner
- if ( typeof $ != 'undefined' ) {
- var iframe = $( '.wikiEditor-ui-text iframe' );
- if ( iframe.length > 0 ) {
- $( iframe.get( 0 ).contentWindow.document )
- .add( iframe.get( 0 ).contentWindow.document.body ) // for IE
- .focus( function() { currentFocused = iframe.get( 0 ); } );
- }
- }
-
- editForm
-} );
-
diff --git a/skins/common/enhancedchanges.js b/skins/common/enhancedchanges.js
deleted file mode 100644
index bcc2cc88..00000000
--- a/skins/common/enhancedchanges.js
+++ /dev/null
@@ -1,40 +0,0 @@
-/*
- JavaScript file for enhanced recentchanges
- */
-
-/*
- * Add the CSS to hide parts that should be collapsed
- *
- * We do this with JS so everything will be expanded by default
- * if JS is disabled
- */
-appendCSS('.mw-changeslist-hidden {'+
- ' display:none;'+
- '}'+
- 'div.mw-changeslist-expanded {'+
- ' display:block;'+
- '}'+
- 'span.mw-changeslist-expanded {'+
- ' display:inline !important;'+
- ' visibility:visible !important;'+
- '}'
-);
-
-/*
- * Switch an RC line between hidden/shown
- * @param int idNumber : the id number of the RC group
-*/
-window.toggleVisibility = function(idNumber) {
- var openarrow = document.getElementById("mw-rc-openarrow-"+idNumber);
- var closearrow = document.getElementById("mw-rc-closearrow-"+idNumber);
- var subentries = document.getElementById("mw-rc-subentries-"+idNumber);
- if (openarrow.className == 'mw-changeslist-expanded') {
- openarrow.className = 'mw-changeslist-hidden';
- closearrow.className = 'mw-changeslist-expanded';
- subentries.className = 'mw-changeslist-expanded';
- } else {
- openarrow.className = 'mw-changeslist-expanded';
- closearrow.className = 'mw-changeslist-hidden';
- subentries.className = 'mw-changeslist-hidden';
- }
-};
diff --git a/skins/common/history.js b/skins/common/history.js
deleted file mode 100644
index 33845a75..00000000
--- a/skins/common/history.js
+++ /dev/null
@@ -1,77 +0,0 @@
-window.historyRadios = function(parent) {
- var inputs = parent.getElementsByTagName('input');
- var radios = [];
- for (var i = 0; i < inputs.length; i++) {
- if (inputs[i].name == "diff" || inputs[i].name == "oldid") {
- radios[radios.length] = inputs[i];
- }
- }
- return radios;
-};
-
-// check selection and tweak visibility/class onclick
-window.diffcheck = function() {
- var dli = false; // the li where the diff radio is checked
- var oli = false; // the li where the oldid radio is checked
- var hf = document.getElementById('pagehistory');
- if (!hf) {
- return true;
- }
- var lis = hf.getElementsByTagName('li');
- for (var i=0;i<lis.length;i++) {
- var inputs = historyRadios(lis[i]);
- if (inputs[1] && inputs[0]) {
- if (inputs[1].checked || inputs[0].checked) { // this row has a checked radio button
- if (inputs[1].checked && inputs[0].checked && inputs[0].value == inputs[1].value) {
- return false;
- }
- if (oli) { // it's the second checked radio
- if (inputs[1].checked) {
- if ( (typeof oli.className) != 'undefined') {
- oli.classNameOriginal = oli.className.replace( 'selected', '' );
- } else {
- oli.classNameOriginal = '';
- }
-
- oli.className = "selected "+oli.classNameOriginal;
- return false;
- }
- } else if (inputs[0].checked) {
- return false;
- }
- if (inputs[0].checked) {
- dli = lis[i];
- }
- if (!oli) {
- inputs[0].style.visibility = 'hidden';
- }
- if (dli) {
- inputs[1].style.visibility = 'hidden';
- }
- if ( (typeof lis[i].className) != 'undefined') {
- lis[i].classNameOriginal = lis[i].className.replace( 'selected', '' );
- } else {
- lis[i].classNameOriginal = '';
- }
-
- lis[i].className = "selected "+lis[i].classNameOriginal;
- oli = lis[i];
- } else { // no radio is checked in this row
- if (!oli) {
- inputs[0].style.visibility = 'hidden';
- } else {
- inputs[0].style.visibility = 'visible';
- }
- if (dli) {
- inputs[1].style.visibility = 'hidden';
- } else {
- inputs[1].style.visibility = 'visible';
- }
- if ( typeof lis[i].classNameOriginal != 'undefined' ) {
- lis[i].className = lis[i].classNameOriginal;
- }
- }
- }
- }
- return true;
-};
diff --git a/skins/common/htmlform.js b/skins/common/htmlform.js
deleted file mode 100644
index 900b1660..00000000
--- a/skins/common/htmlform.js
+++ /dev/null
@@ -1,40 +0,0 @@
-// Find select-or-other fields.
-addOnloadHook( function() {
- var fields = getElementsByClassName( document, 'select', 'mw-htmlform-select-or-other' );
-
- for( var i = 0; i < fields.length; i++ ) {
- var select = fields[i];
-
- addHandler( select, 'change', htmlforms.selectOrOtherSelectChanged );
-
- // Use a fake 'e' to update it.
- htmlforms.selectOrOtherSelectChanged( { 'target': select } );
- }
-} );
-
-window.htmlforms = {
- 'selectOrOtherSelectChanged' : function( e ) {
- var select;
- if ( !e ) {
- e = window.event;
- }
- if ( e.target ) {
- select = e.target;
- } else if ( e.srcElement ) {
- select = e.srcElement;
- }
- if ( select.nodeType == 3 ) { // defeat Safari bug
- select = select.parentNode;
- }
-
- var id = select.id;
- var textbox = document.getElementById( id + '-other' );
-
- if ( select.value == 'other' ) {
- textbox.disabled = false;
- } else {
- textbox.disabled = true;
- }
- }
-};
-
diff --git a/skins/common/images/cc-by.png b/skins/common/images/cc-by.png
new file mode 100644
index 00000000..822491ed
--- /dev/null
+++ b/skins/common/images/cc-by.png
Binary files differ
diff --git a/skins/common/images/critical-32.png b/skins/common/images/critical-32.png
index 8f65041e..2bff7511 100644
--- a/skins/common/images/critical-32.png
+++ b/skins/common/images/critical-32.png
Binary files differ
diff --git a/skins/common/images/download-32.png b/skins/common/images/download-32.png
index 0087e10d..c571ea30 100644
--- a/skins/common/images/download-32.png
+++ b/skins/common/images/download-32.png
Binary files differ
diff --git a/skins/common/images/info-32.png b/skins/common/images/info-32.png
index ecefa9a6..70d7f20a 100644
--- a/skins/common/images/info-32.png
+++ b/skins/common/images/info-32.png
Binary files differ
diff --git a/skins/common/images/magnify-clip-rtl.png b/skins/common/images/magnify-clip-rtl.png
new file mode 100644
index 00000000..8398a82c
--- /dev/null
+++ b/skins/common/images/magnify-clip-rtl.png
Binary files differ
diff --git a/skins/common/images/sort_down.gif b/skins/common/images/sort_down.gif
deleted file mode 100644
index d97e8285..00000000
--- a/skins/common/images/sort_down.gif
+++ /dev/null
Binary files differ
diff --git a/skins/common/images/sort_up.gif b/skins/common/images/sort_up.gif
deleted file mode 100644
index 488cf279..00000000
--- a/skins/common/images/sort_up.gif
+++ /dev/null
Binary files differ
diff --git a/skins/common/images/tick-32.png b/skins/common/images/tick-32.png
index 584cef22..dfde1707 100644
--- a/skins/common/images/tick-32.png
+++ b/skins/common/images/tick-32.png
Binary files differ
diff --git a/skins/common/images/warning-32.png b/skins/common/images/warning-32.png
index aa6b298b..6267cbc9 100644
--- a/skins/common/images/warning-32.png
+++ b/skins/common/images/warning-32.png
Binary files differ
diff --git a/skins/common/metadata.js b/skins/common/metadata.js
deleted file mode 100644
index 8fafc955..00000000
--- a/skins/common/metadata.js
+++ /dev/null
@@ -1,53 +0,0 @@
-// Exif metadata display for MediaWiki file uploads
-//
-// Add an expand/collapse link and collapse by default if set to
-// (with JS disabled, user will see all items)
-//
-// attachMetadataToggle('mw_metadata', 'More...', 'Fewer...');
-
-window.attachMetadataToggle = function( tableId, showText, hideText ) {
- if ( document.createTextNode ) {
- var box = document.getElementById( tableId );
- if ( !box ) {
- return false;
- }
-
- var tbody = box.getElementsByTagName('tbody')[0];
-
- var row = document.createElement( 'tr' );
-
- var col = document.createElement( 'td' );
- col.colSpan = 2;
-
- var link = document.createElement( 'a' );
- link.href = '#';
-
- link.onclick = function() {
- if ( box.className == 'mw_metadata collapsed' ) {
- changeText( link, hideText );
- box.className = 'mw_metadata expanded';
- } else {
- changeText( link, showText );
- box.className = 'mw_metadata collapsed';
- }
- return false;
- };
-
- var text = document.createTextNode( hideText );
-
- link.appendChild( text );
- col.appendChild( link );
- row.appendChild( col );
- tbody.appendChild( row );
-
- // And collapse!
- link.onclick();
-
- return true;
- }
- return false;
-};
-
-$( document ).ready( function() {
- attachMetadataToggle( 'mw_metadata', mediaWiki.msg( 'metadata-expand' ), mediaWiki.msg( 'metadata-collapse' ) );
-} );
diff --git a/skins/common/mwsuggest.js b/skins/common/mwsuggest.js
index d7dd5ad8..6971d30d 100644
--- a/skins/common/mwsuggest.js
+++ b/skins/common/mwsuggest.js
@@ -52,14 +52,16 @@ window.os_enabled = true;
/**
* <datalist> is a new HTML5 element that allows you to manually supply
* suggestion lists and have them rendered according to the right platform
- * conventions. However, the only shipping browser as of early 2010 is Opera,
- * and that has a fatal problem: the suggestion lags behind what the user types
- * by one keypress. (Reported as DSK-276870 to Opera's secret bug tracker.)
- * The code here otherwise seems to work, though, so this can be flipped on
- * (maybe with a UA check) when some browser has a better implementation.
+ * conventions. Opera as of version 11 has a fatal problem: the suggestion
+ * lags behind what the user types by one keypress. (Reported as DSK-276870 to
+ * Opera's secret bug tracker.) However, Firefox 4 supports it without
+ * problems, so Opera is just blacklisted here. Ideally we wouldn't blacklist
+ * future versions, in case they fix it, but the fallback isn't bad at all and
+ * the failure if they don't fix it is very annoying, so in this case we'll
+ * blacklist future versions too.
*/
-// var os_use_datalist = 'list' in document.createElement( 'input' );
-window.os_use_datalist = false;
+window.os_use_datalist = 'list' in document.createElement( 'input' )
+ && $.client.profile().name != 'opera';
/** Timeout timer class that will fetch the results */
window.os_Timer = function( id, r, query ) {
@@ -750,36 +752,28 @@ window.os_getElementPosition = function( elemID ) {
};
/** Create the container div that will hold the suggested titles */
-window.os_createContainer = function(r) {
- var c = document.createElement('div');
- var s = document.getElementById(r.searchbox);
- var pos = os_getElementPosition(r.searchbox);
+window.os_createContainer = function( r ) {
+ var c = document.createElement( 'div' );
+ var s = document.getElementById( r.searchbox );
+ var pos = os_getElementPosition( r.searchbox );
var left = pos.left;
var top = pos.top + s.offsetHeight;
c.className = 'os-suggest';
- c.setAttribute('id', r.container);
- document.body.appendChild(c);
+ c.setAttribute( 'id', r.container );
+ document.body.appendChild( c );
// dynamically generated style params
// IE workaround, cannot explicitely set "style" attribute
- c = document.getElementById(r.container);
+ c = document.getElementById( r.container );
c.style.top = top + 'px';
c.style.left = left + 'px';
c.style.width = s.offsetWidth + 'px';
// mouse event handlers
- c.onmouseover = function(event) {
- os_eventMouseover(r.searchbox, event);
- };
- c.onmousemove = function(event) {
- os_eventMousemove(r.searchbox, event);
- };
- c.onmousedown = function(event) {
- return os_eventMousedown(r.searchbox, event);
- };
- c.onmouseup = function(event) {
- os_eventMouseup(r.searchbox, event);
- };
+ c.onmouseover = function( event ) { os_eventMouseover( r.searchbox, event ); };
+ c.onmousemove = function( event ) { os_eventMousemove( r.searchbox, event ); };
+ c.onmousedown = function( event ) { return os_eventMousedown( r.searchbox, event ); };
+ c.onmouseup = function( event ) { os_eventMouseup( r.searchbox, event ); };
return c;
};
diff --git a/skins/common/oldshared.css b/skins/common/oldshared.css
index 33047ec9..4be14f37 100644
--- a/skins/common/oldshared.css
+++ b/skins/common/oldshared.css
@@ -30,22 +30,26 @@ h6 .editsection { font-size: 133%; }
#footer { clear: both }
/* images */
+/* @noflip */
div.floatright {
float: right;
clear: right;
margin: 0 0 1em 1em;
}
+/* @noflip */
div.floatright p {
font-style: italic;
}
+/* @noflip */
div.floatleft {
float: left;
clear: left;
margin: 0.3em 0.5em 0.5em 0;
}
+/* @noflip */
div.floatleft p {
font-style: italic;
}
@@ -100,11 +104,13 @@ div.magnify a, div.magnify img {
border: none !important;
background: none !important;
}
+/* @noflip */
div.tright {
clear: right;
float: right;
border-width: .5em 0 .8em 1.4em;
}
+/* @noflip */
div.tleft {
float: left;
clear: left;
@@ -141,8 +147,7 @@ img { border: none; }
.toc ul {
list-style-type: none;
list-style-image: none;
- margin-left: 0;
- padding-left: 0;
+ padding: 0;
text-align: left;
}
#toc ul ul,
@@ -208,7 +213,7 @@ fieldset.operaprefsection {
}
/* small for tables and similar */
-.small, .small * {
+.small {
font-size: 94%;
}
table.small {
@@ -428,8 +433,29 @@ form#specialpages {
}
body {
+ direction: ltr;
+ unicode-bidi: embed;
background-color: #ffffec;
}
body.ns-0 {
background-color: white;
}
+
+/** RTL specific CSS starts here **/
+
+/**
+ * Lists:
+ * The following lines don't have a visible effect on non-Gecko browsers
+ * They fix a problem with Gecko browsers rendering lists to the right of
+ * left-floated objects in an RTL layout.
+ */
+/* @noflip */
+html > body.rtl div#article ul {
+ display: table;
+}
+/* @noflip */
+html > body.rtl div#bodyContent ul#filetoc {
+ display: block;
+}
+
+/* RTL specific CSS ends here **/ \ No newline at end of file
diff --git a/skins/common/prefs.js b/skins/common/prefs.js
deleted file mode 100644
index 1eb8e5bf..00000000
--- a/skins/common/prefs.js
+++ /dev/null
@@ -1,138 +0,0 @@
-// Timezone stuff
-// tz in format [+-]HHMM
-window.checkTimezone = function( tz, msg ) {
- var localclock = new Date();
- // returns negative offset from GMT in minutes
- var tzRaw = localclock.getTimezoneOffset();
- var tzHour = Math.floor( Math.abs( tzRaw ) / 60 );
- var tzMin = Math.abs( tzRaw ) % 60;
- var tzString = ( ( tzRaw >= 0 ) ? '-' : '+' ) + ( ( tzHour < 10 ) ? '0' : '' ) + tzHour + ( ( tzMin < 10 ) ? '0' : '' ) + tzMin;
- if ( tz != tzString ) {
- var junk = msg.split('$1');
- document.write( junk[0] + 'UTC' + tzString + junk[1] );
- }
-};
-
-window.timezoneSetup = function() {
- var tzSelect = document.getElementById( 'mw-input-wptimecorrection' );
- var tzTextbox = document.getElementById( 'mw-input-wptimecorrection-other' );
-
- if ( tzSelect && tzTextbox ) {
- addHandler( tzSelect, 'change', function( e ) { updateTimezoneSelection( false ); } );
- addHandler( tzTextbox, 'blur', function( e ) { updateTimezoneSelection( true ); } );
- }
-
- updateTimezoneSelection( false );
-};
-
-// in [-]HH:MM format...
-// won't yet work with non-even tzs
-window.fetchTimezone = function() {
- // FIXME: work around Safari bug
- var localclock = new Date();
- // returns negative offset from GMT in minutes
- var tzRaw = localclock.getTimezoneOffset();
- var tzHour = Math.floor( Math.abs( tzRaw ) / 60 );
- var tzMin = Math.abs( tzRaw ) % 60;
- var tzString = ( ( tzRaw >= 0 ) ? '-' : '' ) + ( ( tzHour < 10 ) ? '0' : '' ) + tzHour +
- ':' + ( ( tzMin < 10 ) ? '0' : '' ) + tzMin;
- return tzString;
-};
-
-window.guessTimezone = function() {
- var textbox = document.getElementById( 'mw-input-wptimecorrection-other' );
- var selector = document.getElementById( 'mw-input-wptimecorrection' );
-
- selector.value = 'other';
- textbox.value = fetchTimezone();
- textbox.disabled = false; // The changed handler doesn't trip, obviously.
- updateTimezoneSelection( true );
-};
-
-window.updateTimezoneSelection = function( force_offset ) {
- var selector = document.getElementById( 'mw-input-wptimecorrection' );
-
- if ( selector.value == 'guess' ) {
- return guessTimezone();
- }
-
- var textbox = document.getElementById( 'mw-input-wptimecorrection-other' );
- var localtimeHolder = document.getElementById( 'wpLocalTime' );
- var servertime = document.getElementsByName( 'wpServerTime' )[0].value;
- var minDiff = 0;
-
- // Compatibility code.
- if ( !selector.value ) {
- selector.value = selector.options[selector.selectedIndex].value;
- }
-
- // Handle force_offset
- if ( force_offset ) {
- selector.value = 'other';
- }
-
- // Get min_diff
- if ( selector.value == 'other' ) {
- // Grab data from the textbox, parse it.
- var diffArr = textbox.value.split(':');
- if ( diffArr.length == 1 ) {
- // Specification is of the form [-]XX
- minDiff = parseInt( diffArr[0], 10 ) * 60;
- } else {
- // Specification is of the form [-]XX:XX
- minDiff = Math.abs( parseInt( diffArr[0], 10 ) ) * 60 + parseInt( diffArr[1], 10 );
- if ( parseInt( diffArr[0], 10 ) < 0 ) {
- minDiff = -minDiff;
- }
- }
- } else {
- // Grab data from the selector value
- var diffArr = selector.value.split('|');
- minDiff = parseInt( diffArr[1], 10 );
- }
-
- // Gracefully handle non-numbers.
- if ( isNaN( minDiff ) ) {
- minDiff = 0;
- }
-
- // Determine local time from server time and minutes difference, for display.
- var localTime = parseInt( servertime, 10 ) + minDiff;
-
- // Bring time within the [0,1440) range.
- while ( localTime < 0 ) {
- localTime += 1440;
- }
- while ( localTime >= 1440 ) {
- localTime -= 1440;
- }
-
- // Split to hour and minute
- var hour = String( Math.floor( localTime / 60 ) );
- if ( hour.length < 2 ) {
- hour = '0' + hour;
- }
- var min = String(localTime%60);
- if ( min.length < 2 ) {
- min = '0' + min;
- }
- changeText( localtimeHolder, hour + ':' + min );
-
- // If the user selected from the drop-down, fill the offset field.
- if ( selector.value != 'other' ) {
- hour = String( Math.abs( Math.floor( minDiff / 60 ) ) );
- if ( hour.length < 2 ) {
- hour = '0' + hour;
- }
- if ( minDiff < 0 ) {
- hour = '-' + hour;
- }
- min = String(minDiff%60);
- if ( min.length < 2 ) {
- min = '0' + min;
- }
- textbox.value = hour + ':' + min;
- }
-};
-
-addOnloadHook( timezoneSetup );
diff --git a/skins/common/preview.js b/skins/common/preview.js
index 234dd545..82b27bc1 100644
--- a/skins/common/preview.js
+++ b/skins/common/preview.js
@@ -9,28 +9,28 @@
var postData = $('#editform').formToArray();
postData.push( { 'name' : 'wpPreview', 'value' : '1' } );
-
+
// Hide active diff, used templates, old preview if shown
var copyElements = ['#wikiPreview', '.templatesUsed', '.hiddencats',
'#catlinks'];
var copySelector = copyElements.join(',');
-
+
$.each( copyElements, function(k,v) { $(v).fadeOut('fast'); } );
// Display a loading graphic
var loadSpinner = $('<div class="mw-ajax-loader"/>');
$('#wikiPreview').before( loadSpinner );
-
+
var page = $('<div/>');
var target = $('#editform').attr('action');
-
+
if ( !target ) {
target = window.location.href;
}
-
+
page.load( target + ' ' + copySelector, postData,
function() {
-
+
for( var i=0; i<copyElements.length; ++i) {
// For all the specified elements, find the elements in the loaded page
// and the real page, empty the element in the real page, and fill it
@@ -40,12 +40,12 @@
var newClasses = page.find( copyElements[i] ).attr('class');
$(copyElements[i]).attr( 'class', newClasses );
}
-
+
$.each( copyElements, function(k,v) {
// Don't belligerently show elements that are supposed to be hidden
$(v).fadeIn( 'fast', function() { $(this).css('display', ''); } );
} );
-
+
loadSpinner.remove();
$( mw ).trigger( 'LivePreviewDone', [copyElements] );
diff --git a/skins/common/protect.js b/skins/common/protect.js
index a284c3f8..b77c2e06 100644
--- a/skins/common/protect.js
+++ b/skins/common/protect.js
@@ -45,6 +45,8 @@ window.ProtectionForm = {
check.checked = !this.areAllTypesMatching();
this.enableUnchainedInputs( check.checked );
}
+
+ $( '#mwProtect-reason' ).byteLimit( 180 );
this.updateCascadeCheckbox();
diff --git a/skins/common/search.js b/skins/common/search.js
deleted file mode 100644
index 26d807db..00000000
--- a/skins/common/search.js
+++ /dev/null
@@ -1,50 +0,0 @@
-// JS specific to Special:Search
-
-// change the search link to what user entered
-window.mwSearchHeaderClick = function( obj ) {
- var searchbox = document.getElementById( 'searchText' );
- if( searchbox === null ) {
- searchbox = document.getElementById( 'powerSearchText' );
- }
- if( searchbox === null ) {
- return; // should always have either normal or advanced search
- }
-
- var searchterm = searchbox.value;
- var parts = obj.getAttribute( 'href', 2).split( 'search=' );
- var lastpart = '';
- var prefix = 'search=';
- if( parts.length > 1 && parts[1].indexOf('&') >= 0 ) {
- lastpart = parts[1].substring( parts[1].indexOf('&') );
- } else {
- prefix = '&search=';
- }
- obj.href = parts[0] + prefix + encodeURIComponent( searchterm ) + lastpart;
-};
-
-window.mwToggleSearchCheckboxes = function( btn ) {
- if( !document.getElementById ) {
- return;
- }
-
- var nsInputs = document.getElementById( 'powersearch' ).getElementsByTagName( 'input' );
- var isChecked = false;
-
- for ( var i = 0; i < nsInputs.length; i++ ) {
- var pattern = /^ns/;
- if ( ( nsInputs[i].type == 'checkbox' ) && ( pattern.test( nsInputs[i].name ) ) ) {
- switch ( btn ) {
- case 'none':
- if ( nsInputs[i].checked ) {
- nsInputs[i].checked = false;
- }
- break;
- case 'all':
- if ( !nsInputs[i].checked ) {
- nsInputs[i].checked = true;
- }
- break;
- }
- }
- }
-};
diff --git a/skins/common/shared.css b/skins/common/shared.css
index 00032b3f..3612ee0f 100644
--- a/skins/common/shared.css
+++ b/skins/common/shared.css
@@ -1,9 +1,23 @@
/**
* CSS in this file is used by *all* skins (that have any CSS at all). Be
* careful what you put in here, since what looks good in one skin may not in
- * another, but don't ignore the poor non-Monobook users either.
+ * another, but don't ignore the poor pre-Monobook users either.
*/
+/* GENERAL CLASSES FOR DIRECTIONALITY SUPPORT */
+/* These classes should be used for text depending on the content direction.
+Content stuff like editsection, ul/ol and TOC depend on this. */
+ /* @noflip */.mw-content-ltr { direction: ltr; }
+/* @noflip */.mw-content-rtl { direction: rtl; }
+/* Most input fields should be in site direction */
+/* @noflip */.sitedir-ltr textarea, .sitedir-ltr input { direction: ltr; }
+/* @noflip */.sitedir-rtl textarea, .sitedir-rtl input { direction: rtl; }
+/* Input types that should follow user direction, like buttons */
+input[type="submit"], input[type="button"], input[type="reset"], input[type="file"] { direction: ltr; }
+/* Override default values */
+/* @noflip */textarea[dir="ltr"], input[dir="ltr"] { direction: ltr; }
+/* @noflip */textarea[dir="rtl"], input[dir="rtl"] { direction: rtl; }
+
/* Default style for semantic tags */
abbr, acronym, .explain {
border-bottom: 1px dotted black;
@@ -17,7 +31,10 @@ abbr, acronym, .explain {
/* Links to redirects appear italicized on [[Special:AllPages]], [[Special:PrefixIndex]],
[[Special:Watchlist/edit]] and in category listings */
-.allpagesredirect, .redirect-in-category, .watchlistredir { font-style: italic; }
+.allpagesredirect, .redirect-in-category, .watchlistredir {
+ font-style: italic;
+}
+
/* Comment and username portions of RC entries */
span.comment {
@@ -44,7 +61,9 @@ span.texhtml { font-family: serif; }
#editform, #toolbar, #wpTextbox1 {
clear: both;
}
-
+#toolbar img {
+ cursor: pointer;
+}
div#mw-js-message {
margin: 1em 5%;
padding: 0.5em 2.5%;
@@ -57,7 +76,9 @@ div#mw-js-message {
float: right;
margin-left: 5px;
}
-
+/* Correct directionality when page dir is different from site/user dir */
+/* @noflip */.mw-content-ltr .editsection, .mw-content-rtl .mw-content-ltr .editsection { float: right; }
+/* @noflip */.mw-content-rtl .editsection, .mw-content-ltr .mw-content-rtl .editsection { float: left; }
/**
* File histories
*/
@@ -127,6 +148,15 @@ tr.mw-htmlform-vertical-label td.mw-label {
text-align: left !important;
}
+.mw-htmlform-invalid-input td.mw-input input {
+ border-color: red;
+}
+.mw-htmlform-multiselect-flatlist div.mw-htmlform-multiselect-item {
+ display: inline;
+ margin-right: 1em;
+ white-space: nowrap;
+}
+
input#wpSummary {
width: 80%;
}
@@ -138,226 +168,53 @@ input#wpSummary {
.magnify { float: right; }
/**
- * Hidden categories
+ * Categories
*/
-.mw-hidden-cats-hidden { display: none; }
-.catlinks-allhidden { display: none; }
-
-/* Convenience links to edit block, delete and protect reasons */
-p.mw-ipb-conveniencelinks, p.mw-protect-editreasons,
-p.mw-filedelete-editreasons, p.mw-delete-editreasons,
-p.mw-revdel-editreasons {
- font-size: 90%;
- float: right;
-}
-
-/* Search results */
-.searchresults {
-}
-
-.searchresults p {
- margin-left: 0.4em;
- margin-top: 1em;
- margin-bottom: 1.2em;
-}
-
-div.searchresult {
- font-size: 95%;
- width: 38em;
-}
-
-.mw-search-results {
- margin-left: 0.4em;
+#catlinks {
+ /**
+ * Overrides text justification (user preference)
+ * See bug 31990
+ */
+ text-align: left;
}
-
-.mw-search-results li {
- padding-bottom: 1em;
+#catlinks ul {
+ display:inline;
+ margin: 0px;
+ padding: 0px;
list-style: none;
+ list-style-type: none;
list-style-image: none;
-}
-.mw-search-results li a {
- font-size: 108%;
-}
-
-.mw-search-result-data {
- color: green;
- font-size: 97%;
-}
-
-.mw-search-formheader {
- background-color: #f3f3f3;
- margin-top: 1em;
- border: 1px solid silver;
-}
-.mw-search-formheader div.search-types {
- float: left;
- padding-left: 0.25em;
-}
-.mw-search-formheader div.search-types ul {
- margin: 0 !important;
- padding: 0 !important;
- list-style: none !important;
-}
-.mw-search-formheader div.search-types ul li {
- float: left;
- margin: 0;
- padding: 0;
-}
-.mw-search-formheader div.search-types ul li a {
- display: block;
- padding: 0.5em;
-}
-.mw-search-formheader div.search-types ul li.current a {
- color: #333333;
- cursor: default;
-}
-.mw-search-formheader div.search-types ul li.current a:hover {
- text-decoration: none;
-}
-.mw-search-formheader div.results-info {
- float: right;
- padding: 0.5em;
- padding-right: 0.75em;
-}
-.mw-search-formheader div.results-info ul {
- margin: 0 !important;
- padding: 0 !important;
- list-style: none !important;
-}
-.mw-search-formheader div.results-info ul li {
- float: right;
- margin: 0;
- padding: 0;
-}
-fieldset#mw-searchoptions {
- margin: 0;
- padding-left: 0.75em !important;
- padding-right: 0.75em !important;
- padding-bottom: 0.5em !important;
- padding-top: 0.5em !important;
- border: none;
- background-color: #f9f9f9;
- border: 1px solid silver !important;
- border-top-width: 0 !important;
-}
-fieldset#mw-searchoptions legend {
- display: none;
-}
-fieldset#mw-searchoptions h4 {
- padding: 0;
- margin: 0;
- float: left;
-}
-fieldset#mw-searchoptions div#mw-search-togglebox {
- float: right;
-}
-
-fieldset#mw-searchoptions div#mw-search-togglebox label {
- margin-right: 0.25em;
-}
-fieldset#mw-searchoptions div#mw-search-togglebox input {
- margin-left: 0.25em;
-}
-fieldset#mw-searchoptions table {
- float: left;
- margin-right: 3em;
-}
-fieldset#mw-searchoptions table td {
- padding-right: 1em;
-}
-fieldset#mw-searchoptions div.divider {
- clear: both;
- border-bottom: 1px solid #DDDDDD;
- padding-top: 0.5em;
- margin-bottom: 0.5em;
-}
-
-td#mw-search-menu {
- padding-left:6em;
- font-size:85%;
+ vertical-align: middle !ie;
}
-div#mw-search-interwiki {
- float: right;
- width: 18em;
- border-style: solid;
- border-color: #AAAAAA;
- border-width: 1px;
- margin-top: 2ex;
+#catlinks li {
+ display:inline-block;
+ line-height: 1.35em;
+ padding: 0 .7em;
+ border-left: 1px solid #AAA;
+ margin: 0.3em 0;
+ zoom: 1;
+ display:inline !ie;
}
-div#mw-search-interwiki li {
- font-size: 95%;
+#catlinks li:first-child {
+ padding-left: .4em;
+ border-left: none;
}
+/**
+ * Hidden categories
+ */
+.mw-hidden-cats-hidden { display: none; }
+.catlinks-allhidden { display: none; }
-.mw-search-interwiki-more {
- float: right;
+/* Convenience links to edit block, delete and protect reasons */
+p.mw-ipb-conveniencelinks, p.mw-protect-editreasons,
+p.mw-filedelete-editreasons, p.mw-delete-editreasons,
+p.mw-revdel-editreasons {
font-size: 90%;
-}
-
-div#mw-search-interwiki-caption {
- text-align: center;
- font-weight: bold;
- font-size: 95%;
-}
-
-.mw-search-interwiki-project {
- font-size: 97%;
- text-align: left;
- padding-left: 0.2em;
- padding-right: 0.15em;
- padding-bottom: 0.2em;
- padding-top: 0.15em;
- background-color: #ececec;
- border-top: 1px solid #BBBBBB;
-}
-
-span.searchalttitle {
- font-size: 95%;
-}
-
-div.searchdidyoumean {
- font-size: 127%;
- margin-top: 0.8em;
- /* Note that this color won't affect the link, as desired. */
- color: #c00;
-}
-
-div.searchdidyoumean em {
- font-weight: bold;
-}
-
-.searchmatch {
- font-weight: bold;
-}
-
-
-/*
- * Advanced PowerSearch box
- */
-td#mw-search-togglebox {
text-align: right;
}
-table#mw-search-powertable {
- width: 100%;
-}
-
-form#powersearch {
- clear: both;
-}
-
-/*
- * UserRights stuff
- */
-.mw-userrights-disabled {
- color: #888;
-}
-
-table.mw-userrights-groups * td,table.mw-userrights-groups * th {
- padding-right: 1.5em;
-}
-
/*
* OpenSearch ajax suggestions
*/
@@ -436,36 +293,12 @@ table.os-suggest-results {
border: 1px dashed #aaa;
}
-/** Generic minor/bot/newpage styling */
-.newpage, .minor, .bot {
- font-weight: bold;
-}
-
-/* Special:Contributions styling */
-.mw-uctop {
- font-weight: bold;
-}
-
-/* Special:ListGroupRights styling */
-table.mw-listgrouprights-table tr {
- vertical-align: top;
-}
-.listgrouprights-revoked {
- text-decoration: line-through;
-}
-
-/* Special:Statistics styling */
-td.mw-statistics-numbers {
- text-align: right;
+.mw-history-revisiondelete-button, #mw-fileduplicatesearch-icon {
+ float: right;
}
-/* Special:SpecialPages styling */
-h4.mw-specialpagesgroup {
- background-color: #dcdcdc;
- padding: 2px;
- margin: .3em 0em 0em 0em;
-}
-.mw-specialpagerestricted {
+/** Generic minor/bot/newpage styling */
+.newpage, .minor, .bot {
font-weight: bold;
}
@@ -473,42 +306,6 @@ h4.mw-specialpagesgroup {
font-style: italic;
}
-/* Special:EmailUser styling */
-table.mw-emailuser-table {
- width: 98%;
-}
-td#mw-emailuser-sender, td#mw-emailuser-recipient {
- font-weight: bold;
-}
-
-/* Special:Allpages styling */
-table.mw-allpages-table-form, table.mw-allpages-table-chunk {
- width: 100%;
-}
-td.mw-allpages-alphaindexline {
- text-align: right;
-}
-td.mw-allpages-nav, p.mw-allpages-nav {
- text-align: right;
- font-size: smaller;
- margin-bottom: 1em;
-}
-table.mw-allpages-table-form tr {
- vertical-align: top;
-}
-
-/* Special:Prefixindex styling */
-table#mw-prefixindex-list-table,
-table#mw-prefixindex-nav-table {
- width: 98%;
-}
-td#mw-prefixindex-nav-form {
- font-size: smaller;
- margin-bottom: 1em;
- text-align: right;
- vertical-align: top;
-}
-
/*
* Recreating deleted page warning
* Reupload file warning
@@ -553,6 +350,11 @@ a.feedlink {
background: none !important;
padding: 0 !important;
}
+/* External URLs should always be treated as LTR (bug 4330) */
+/* @noflip */ .rtl a.external.free, .rtl a.external.autonumber {
+ direction: ltr;
+ unicode-bidi: embed;
+}
/* wikitable class for skinning normal tables
* keep on sync with commonPrint.css
@@ -586,11 +388,15 @@ table.collapsed tr.collapsable {
color: green;
font-size: larger;
}
+.warning {
+ color: #FFA500; /* orange */
+ font-size: larger;
+}
.error {
color: red;
font-size: larger;
}
-.errorbox, .successbox {
+.errorbox, .warningbox, .successbox {
font-size: larger;
border: 2px solid;
padding: .5em 1em;
@@ -602,11 +408,15 @@ table.collapsed tr.collapsable {
border-color: red;
background-color: #fff2f2;
}
+.warningbox {
+ border-color: #FF8C00; /* darkorange */
+ background-color: #FFFFC0;
+}
.successbox {
border-color: green;
background-color: #dfd;
}
-.errorbox h2, .successbox h2 {
+.errorbox h2, .warningbox h2, .successbox h2 {
font-size: 1em;
font-weight: bold;
display: inline;
@@ -614,6 +424,24 @@ table.collapsed tr.collapsable {
border: none;
}
+/* general info/warning box for SP */
+.mw-infobox {
+ border: 2px solid #ff7f00;
+ margin: 0.5em;
+ clear: left;
+ overflow: hidden;
+}
+
+.mw-infobox-left {
+ margin: 7px;
+ float: left;
+ width: 35px;
+}
+
+.mw-infobox-right {
+ margin: 0.5em 0.5em 0.5em 49px;
+}
+
/* Note on preview page */
.previewnote {
color: #c00;
@@ -647,6 +475,13 @@ table.collapsed tr.collapsable {
min-width: 80%;
border-collapse: collapse;
}
+.TablePager_nav {
+ margin: 0 auto;
+}
+.TablePager_nav td {
+ padding: 3px;
+ text-align: center;
+}
.TablePager_nav a {
text-decoration: none;
}
@@ -677,23 +512,6 @@ table.collapsed tr.collapsable {
background-color: #ccccff;
}
- /* Allmessages table */
-#mw-allmessagestable .allmessages-customised td.am_default {
- background-color: #fcffc4;
-}
-
-#mw-allmessagestable tr.allmessages-customised:hover td.am_default {
- background-color: #faff90;
-}
-
-#mw-allmessagestable td.am_actual {
- background-color: #e2ffe2;
-}
-
-#mw-allmessagestable tr.allmessages-customised:hover + tr.allmessages-customised td.am_actual {
- background-color: #b1ffb1;
-}
-
/* filetoc */
ul#filetoc {
text-align: center;
@@ -717,7 +535,7 @@ table.mw_metadata {
font-size: 0.8em;
margin-left: 0.5em;
margin-bottom: 0.5em;
- width: 300px;
+ width: 400px;
}
table.mw_metadata caption {
@@ -740,8 +558,8 @@ table.mw_metadata {
table.mw_metadata td, table.mw_metadata th {
text-align: center;
border: 1px solid #aaaaaa;
- padding-left: 0.1em;
- padding-right: 0.1em;
+ padding-left: 5px;
+ padding-right: 5px;
}
table.mw_metadata th {
@@ -752,18 +570,65 @@ table.mw_metadata td {
background-color: #fcfcfc;
}
+table.mw_metadata ul.metadata-langlist {
+ list-style-type: none;
+ list-style-image: none;
+ padding-right: 5px;
+ padding-left: 5px;
+ margin: 0;
+}
+
+/* Correct directionality when page dir is different from site/user dir */
+.mw-content-ltr ul,
+.mw-content-rtl .mw-content-ltr ul {
+ /* @noflip */
+ margin: 0.3em 0 0 1.5em;
+ padding: 0;
+}
+.mw-content-rtl ul,
+.mw-content-ltr .mw-content-rtl ul {
+ /* @noflip */
+ margin: 0.3em 1.5em 0 0;
+ padding: 0;
+}
+.mw-content-ltr ol,
+.mw-content-rtl .mw-content-ltr ol {
+ /* @noflip */
+ margin: 0.3em 0 0 3.2em;
+ padding: 0;
+}
+.mw-content-rtl ol,
+.mw-content-ltr .mw-content-rtl ol {
+ /* @noflip */
+ margin: 0.3em 3.2em 0 0;
+ padding: 0;
+}
+
+/* Correct directionality when page dir is different from site/user dir */
+/* @noflip */.mw-content-ltr ul, .mw-content-rtl .mw-content-ltr ul {
+ margin: .3em 0 0 1.5em;
+}
+/* @noflip */.mw-content-rtl ul, .mw-content-ltr .mw-content-rtl ul {
+ margin: .3em 1.5em 0 0;
+}
+/* @noflip */.mw-content-ltr ol, .mw-content-rtl .mw-content-ltr ol {
+ margin: .3em 0 0 3.2em;
+}
+/* @noflip */.mw-content-rtl ol, .mw-content-ltr .mw-content-rtl ol {
+ margin: .3em 3.2em 0 0;
+}
+
/* Galleries */
/* These display attributes look nonsensical, but are needed to support IE and FF2 */
/* Don't forget to update commonPrint.css */
li.gallerybox {
vertical-align: top;
- background-color: #f9f9f9;
border: solid 2px white;
display: -moz-inline-box;
+ display: inline-block;
}
ul.gallery, li.gallerybox {
- display: inline-block;
zoom: 1;
*display: inline;
}
@@ -784,9 +649,15 @@ li.gallerycaption {
li.gallerybox div.thumb {
text-align: center;
border: 1px solid #ccc;
+ background-color: #f9f9f9;
margin: 2px;
}
+li.gallerybox div.thumb img {
+ display: block;
+ margin: 0 auto;
+}
+
div.gallerytext {
overflow: hidden;
font-size: 94%;
@@ -794,44 +665,6 @@ div.gallerytext {
word-wrap: break-word;
}
-table.mw-enhanced-rc {
- background: none;
- border:0;
- border-spacing:0;
-}
-td.mw-enhanced-rc {
- white-space:nowrap;
- padding:0;
- vertical-align:top;
- font-family:monospace
-}
-
-#mw-addcategory-prompt {
- display: inline;
- margin-left: 1em;
-}
-
-#mw-addcategory-prompt input {
- margin-left: 0.5em;
- margin-right: 0.5em;
-}
-
-.mw-remove-category {
- padding: 8px;
- /* @embed */
- background-image: url(images/remove.png);
- background-position: center center;
- background-repeat: no-repeat;
-}
-
-.mw-ajax-addcategory {
- padding-left: 20px;
- /* @embed */
- background-image: url(images/add.png);
- background-position: left center;
- background-repeat: no-repeat;
-}
-
.mw-ajax-loader {
/* @embed */
background-image: url(images/ajax-loader.gif);
@@ -851,11 +684,6 @@ td.mw-enhanced-rc {
background-repeat: no-repeat;
}
-/* Sort arrows added by SortableTables */
-a.sortheader {
- margin: 0 0.3em;
-}
-
/* Localised ordered list numbering for some languages */
ol:lang(bcc) li,
ol:lang(bqi) li,
@@ -872,26 +700,60 @@ ol:lang(ckb) li {
list-style-type: arabic-indic;
}
+ol:lang(as) li,
ol:lang(bn) li {
list-style-type: -moz-bengali;
list-style-type: bengali;
}
+ol:lang(or) li {
+ list-style-type: -moz-oriya;
+ list-style-type: oriya;
+}
+
+#toc ul, .toc ul {
+ margin: .3em 0;
+}
+
+/* Correct directionality when page dir is different from site/user dir */
+/* @noflip */.mw-content-ltr .toc ul, .mw-content-ltr #toc ul,
+.mw-content-rtl .mw-content-ltr .toc ul, .mw-content-rtl .mw-content-ltr #toc ul {
+ text-align: left;
+}
+/* @noflip */.mw-content-rtl .toc ul, .mw-content-rtl #toc ul,
+.mw-content-ltr .mw-content-rtl .toc ul, .mw-content-ltr .mw-content-rtl #toc ul {
+ text-align: right;
+}
+/* @noflip */.mw-content-ltr .toc ul ul, .mw-content-ltr #toc ul ul,
+.mw-content-rtl .mw-content-ltr .toc ul ul, .mw-content-rtl .mw-content-ltr #toc ul ul {
+ margin: 0 0 0 2em;
+}
+/* @noflip */.mw-content-rtl .toc ul ul, .mw-content-rtl #toc ul ul,
+.mw-content-ltr .mw-content-rtl .toc ul ul, .mw-content-ltr .mw-content-rtl #toc ul ul {
+ margin: 0 2em 0 0;
+}
+
+#toc #toctitle,
+.toc #toctitle,
+#toc .toctitle,
+.toc .toctitle {
+ direction: ltr;
+}
+
/* tooltip styles */
.mw-help-field-hint {
display: none;
- padding: 0px;
- padding-left: 15px;
margin-left: 2px;
margin-bottom: -8px;
+ padding: 0px 0px 0px 15px;
/* @embed */
background-image: url('images/help-question.gif');
background-position: left center;
background-repeat: no-repeat;
- color: #0645ad;
- text-decoration: underline;
cursor: pointer;
font-size: .8em;
+ text-decoration: underline;
+ color: #0645ad;
}
.mw-help-field-hint:hover {
/* @embed */
@@ -904,9 +766,94 @@ ol:lang(bn) li {
border: 1px solid #5dc9f4;
margin-left: 20px;
}
-.tipsy { padding: 5px 5px 10px; font-size: 12px; position: absolute; z-index: 100000; overflow: visible; }
-.tipsy-inner { padding: 5px 8px 4px 8px; background-color: #d6f3ff; color: black; border: 1px solid #5dc9f4; max-width: 300px; text-align: left; }
-.tipsy-arrow { position: absolute; /* @embed */ background: url( 'images/tipsy-arrow.gif' ) no-repeat top left; width: 13px; height: 13px; }
-.tipsy-se .tipsy-arrow { bottom: -2px; right: 10px; background-position: 0% 100%; }
+.tipsy {
+ padding: 5px 5px 10px;
+ font-size: 12px;
+ position: absolute;
+ z-index: 100000;
+ overflow: visible;
+}
+.tipsy-inner {
+ padding: 5px 8px 4px 8px;
+ background-color: #d6f3ff;
+ color: black;
+ border: 1px solid #5dc9f4;
+ max-width: 300px;
+ text-align: left;
+}
+.tipsy-arrow {
+ position: absolute;
+ /* @embed */
+ background: url(images/tipsy-arrow.gif) no-repeat top left;
+ width: 13px;
+ height: 13px;
+}
+.tipsy-se .tipsy-arrow {
+ bottom: -2px;
+ right: 10px;
+ background-position: 0% 100%;
+}
+/* Table Sorting */
+table.sortable th.headerSort {
+ background-image: url(images/sort_both.gif);
+ cursor: pointer;
+ background-repeat: no-repeat;
+ background-position: center right;
+ padding-right: 21px;
+}
+table.sortable th.headerSortUp {
+ background-image: url(images/sort_up.gif);
+}
+table.sortable th.headerSortDown {
+ background-image: url(images/sort_down.gif);
+}
+
+/* LTR content in RTL layout */
+.ltr {
+ /* @noflip */
+ direction: ltr;
+ unicode-bidi: embed;
+}
+#mw-clearyourcache, #mw-sitecsspreview, #mw-sitejspreview, #mw-usercsspreview, #mw-userjspreview {
+ direction: ltr;
+ unicode-bidi: embed;
+}
+
+/* Correct user & content directionality when viewing a diff */
+.diff-currentversion-title, .diff {
+ direction: ltr;
+ unicode-bidi: embed;
+}
+/* @noflip */ .diff-contentalign-right td {
+ direction: rtl;
+ unicode-bidi: embed;
+}
+/* @noflip */ .diff-contentalign-left td {
+ direction: ltr;
+ unicode-bidi: embed;
+}
+.diff-otitle, .diff-ntitle, .diff-lineno {
+ direction: ltr !important;
+ unicode-bidi: embed;
+}
+
+#mw-revision-info, #mw-revision-nav {
+ direction: ltr;
+}
+
+/* Images */
+/* @noflip */div.tright, div.floatright, table.floatright {
+ clear: right;
+ float: right;
+}
+/* @noflip */div.tleft, div.floatleft, table.floatleft {
+ float: left;
+ clear: left;
+}
+div.floatright, table.floatright, div.floatleft, table.floatleft {
+ position: relative;
+}
+/* bug 12205 */
+#mw-credits a { unicode-bidi: embed; }
diff --git a/skins/common/upload.js b/skins/common/upload.js
index c877620b..99917c75 100644
--- a/skins/common/upload.js
+++ b/skins/common/upload.js
@@ -35,11 +35,6 @@ window.wgUploadSetup = function() {
}
}
- // Toggle source type
- var sourceTypeCheckboxes = document.getElementsByName( 'wpSourceType' );
- for ( var i = 0; i < sourceTypeCheckboxes.length; i++ ) {
- sourceTypeCheckboxes[i].onchange = toggleUploadInputs;
- }
// AJAX wpDestFile warnings
if ( wgAjaxUploadDestCheck ) {
@@ -86,44 +81,6 @@ window.wgUploadSetup = function() {
};
};
-/**
- * Iterate over all upload source fields and disable all except the selected one.
- *
- * @return emptiness
- */
-window.toggleUploadInputs = function() {
- // Iterate over all rows with UploadSourceField
- var rows;
- if ( document.getElementsByClassName ) {
- rows = document.getElementsByClassName( 'mw-htmlform-field-UploadSourceField' );
- } else {
- // Older browsers don't support getElementsByClassName
- rows = new Array();
-
- var allRows = document.getElementsByTagName( 'tr' );
- for ( var i = 0; i < allRows.length; i++ ) {
- if ( allRows[i].className == 'mw-htmlform-field-UploadSourceField' )
- rows.push( allRows[i] );
- }
- }
-
- for ( var i = 0; i < rows.length; i++ ) {
- var inputs = rows[i].getElementsByTagName( 'input' );
-
- // Check if this row is selected
- var isChecked = true; // Default true in case wpSourceType is not found
- for ( var j = 0; j < inputs.length; j++ ) {
- if ( inputs[j].name == 'wpSourceType' )
- isChecked = inputs[j].checked;
- }
-
- // Disable all unselected rows
- for ( var j = 0; j < inputs.length; j++ ) {
- if ( inputs[j].type != 'radio')
- inputs[j].disabled = !isChecked;
- }
- }
-};
window.wgUploadWarningObj = {
'responseCache' : { '' : '&nbsp;' },
@@ -289,11 +246,7 @@ window.toggleFilenameFiller = function() {
if(!document.getElementById) return;
var upfield = document.getElementById('wpUploadFile');
var destName = document.getElementById('wpDestFile').value;
- if (destName=='' || destName==' ') {
- wgUploadAutoFill = true;
- } else {
- wgUploadAutoFill = false;
- }
+ wgUploadAutoFill = ( destName == '' || destName == ' ' );
};
window.wgUploadLicenseObj = {
diff --git a/skins/common/wikibits.js b/skins/common/wikibits.js
index fcf2713e..5cb037be 100644
--- a/skins/common/wikibits.js
+++ b/skins/common/wikibits.js
@@ -136,42 +136,6 @@ if ( 'wgBreakFrames' in window && window.wgBreakFrames ) {
}
}
-window.showTocToggle = function() {
- if ( document.createTextNode ) {
- // Uses DOM calls to avoid document.write + XHTML issues
-
- var linkHolder = document.getElementById( 'toctitle' );
- var existingLink = document.getElementById( 'togglelink' );
- if ( !linkHolder || existingLink ) {
- // Don't add the toggle link twice
- return;
- }
-
- var outerSpan = document.createElement( 'span' );
- outerSpan.className = 'toctoggle';
-
- var toggleLink = document.createElement( 'a' );
- toggleLink.id = 'togglelink';
- toggleLink.className = 'internal';
- toggleLink.href = '#';
- addClickHandler( toggleLink, function( evt ) { toggleToc(); return killEvt( evt ); } );
-
- toggleLink.appendChild( document.createTextNode( mediaWiki.msg( 'hidetoc' ) ) );
-
- outerSpan.appendChild( document.createTextNode( '[' ) );
- outerSpan.appendChild( toggleLink );
- outerSpan.appendChild( document.createTextNode( ']' ) );
-
- linkHolder.appendChild( document.createTextNode( ' ' ) );
- linkHolder.appendChild( outerSpan );
-
- var cookiePos = document.cookie.indexOf( "hidetoc=" );
- if ( cookiePos > -1 && document.cookie.charAt( cookiePos + 8 ) == 1 ) {
- toggleToc();
- }
- }
-};
-
window.changeText = function( el, newText ) {
// Safari work around
if ( el.innerText ) {
@@ -192,25 +156,6 @@ window.killEvt = function( evt ) {
return false; // Don't follow the link (IE)
};
-window.toggleToc = function() {
- var tocmain = document.getElementById( 'toc' );
- var toc = document.getElementById('toc').getElementsByTagName('ul')[0];
- var toggleLink = document.getElementById( 'togglelink' );
-
- if ( toc && toggleLink && toc.style.display == 'none' ) {
- changeText( toggleLink, mediaWiki.msg( 'hidetoc' ) );
- toc.style.display = 'block';
- document.cookie = "hidetoc=0";
- tocmain.className = 'toc';
- } else {
- changeText( toggleLink, mediaWiki.msg( 'showtoc' ) );
- toc.style.display = 'none';
- document.cookie = "hidetoc=1";
- tocmain.className = 'toc tochidden';
- }
- return false;
-};
-
window.mwEditButtons = [];
window.mwCustomEditButtons = []; // eg to add in MediaWiki:Common.js
@@ -412,7 +357,7 @@ window.getInnerText = function( el ) {
for ( var i = 0; i < l; i++ ) {
switch ( cs[i].nodeType ) {
case 1: // ELEMENT_NODE
- str += ts_getInnerText( cs[i] );
+ str += getInnerText( cs[i] );
break;
case 3: // TEXT_NODE
str += cs[i].nodeValue;
@@ -572,380 +517,6 @@ window.redirectToFragment = function( fragment ) {
}
};
-/*
- * Table sorting script based on one (c) 1997-2006 Stuart Langridge and Joost
- * de Valk:
- * http://www.joostdevalk.nl/code/sortable-table/
- * http://www.kryogenix.org/code/browser/sorttable/
- *
- * @todo don't break on colspans/rowspans (bug 8028)
- * @todo language-specific digit grouping/decimals (bug 8063)
- * @todo support all accepted date formats (bug 8226)
- */
-
-window.ts_image_path = stylepath + '/common/images/';
-window.ts_image_up = 'sort_up.gif';
-window.ts_image_down = 'sort_down.gif';
-window.ts_image_none = 'sort_none.gif';
-window.ts_europeandate = wgContentLanguage != 'en'; // The non-American-inclined can change to "true"
-window.ts_alternate_row_colors = false;
-window.ts_number_transform_table = null;
-window.ts_number_regex = null;
-
-window.sortables_init = function() {
- var idnum = 0;
- // Find all tables with class sortable and make them sortable
- var tables = getElementsByClassName( document, 'table', 'sortable' );
- for ( var ti = 0; ti < tables.length ; ti++ ) {
- if ( !tables[ti].id ) {
- tables[ti].setAttribute( 'id', 'sortable_table_id_' + idnum );
- ++idnum;
- }
- ts_makeSortable( tables[ti] );
- }
-};
-
-window.ts_makeSortable = function( table ) {
- var firstRow;
- if ( table.rows && table.rows.length > 0 ) {
- if ( table.tHead && table.tHead.rows.length > 0 ) {
- firstRow = table.tHead.rows[table.tHead.rows.length-1];
- } else {
- firstRow = table.rows[0];
- }
- }
- if ( !firstRow ) {
- return;
- }
-
- // We have a first row: assume it's the header, and make its contents clickable links
- for ( var i = 0; i < firstRow.cells.length; i++ ) {
- var cell = firstRow.cells[i];
- if ( (' ' + cell.className + ' ').indexOf(' unsortable ') == -1 ) {
- $(cell).append ( '<a href="#" class="sortheader" '
- + 'onclick="ts_resortTable(this);return false;">'
- + '<span class="sortarrow">'
- + '<img src="'
- + ts_image_path
- + ts_image_none
- + '" alt="&darr;"/></span></a>');
- }
- }
- if ( ts_alternate_row_colors ) {
- ts_alternate( table );
- }
-};
-
-window.ts_getInnerText = function( el ) {
- return getInnerText( el );
-};
-
-window.ts_resortTable = function( lnk ) {
- // get the span
- var span = lnk.getElementsByTagName('span')[0];
-
- var td = lnk.parentNode;
- var tr = td.parentNode;
- var column = td.cellIndex;
-
- var table = tr.parentNode;
- while ( table && !( table.tagName && table.tagName.toLowerCase() == 'table' ) ) {
- table = table.parentNode;
- }
- if ( !table ) {
- return;
- }
-
- if ( table.rows.length <= 1 ) {
- return;
- }
-
- // Generate the number transform table if it's not done already
- if ( ts_number_transform_table === null ) {
- ts_initTransformTable();
- }
-
- // Work out a type for the column
- // Skip the first row if that's where the headings are
- var rowStart = ( table.tHead && table.tHead.rows.length > 0 ? 0 : 1 );
- var bodyRows = 0;
- if (rowStart == 0 && table.tBodies) {
- for (var i=0; i < table.tBodies.length; i++ ) {
- bodyRows += table.tBodies[i].rows.length;
- }
- if (bodyRows < table.rows.length)
- rowStart = 1;
- }
-
- var itm = '';
- for ( var i = rowStart; i < table.rows.length; i++ ) {
- if ( table.rows[i].cells.length > column ) {
- itm = ts_getInnerText(table.rows[i].cells[column]);
- itm = itm.replace(/^[\s\xa0]+/, '').replace(/[\s\xa0]+$/, '');
- if ( itm != '' ) {
- break;
- }
- }
- }
-
- // TODO: bug 8226, localised date formats
- var sortfn = ts_sort_generic;
- var preprocessor = ts_toLowerCase;
- if ( /^\d\d[\/. -][a-zA-Z]{3}[\/. -]\d\d\d\d$/.test( itm ) ) {
- preprocessor = ts_dateToSortKey;
- } else if ( /^\d\d[\/.-]\d\d[\/.-]\d\d\d\d$/.test( itm ) ) {
- preprocessor = ts_dateToSortKey;
- } else if ( /^\d\d[\/.-]\d\d[\/.-]\d\d$/.test( itm ) ) {
- preprocessor = ts_dateToSortKey;
- // (minus sign)([pound dollar euro yen currency]|cents)
- } else if ( /(^([-\u2212] *)?[\u00a3$\u20ac\u00a4\u00a5]|\u00a2$)/.test( itm ) ) {
- preprocessor = ts_currencyToSortKey;
- } else if ( ts_number_regex.test( itm ) ) {
- preprocessor = ts_parseFloat;
- }
-
- var reverse = ( span.getAttribute( 'sortdir' ) == 'down' );
-
- var newRows = new Array();
- var staticRows = new Array();
- for ( var j = rowStart; j < table.rows.length; j++ ) {
- var row = table.rows[j];
- if( (' ' + row.className + ' ').indexOf(' unsortable ') < 0 ) {
- var keyText = ts_getInnerText( row.cells[column] );
- if( keyText === undefined ) {
- keyText = '';
- }
- var oldIndex = ( reverse ? -j : j );
- var preprocessed = preprocessor( keyText.replace(/^[\s\xa0]+/, '').replace(/[\s\xa0]+$/, '') );
-
- newRows[newRows.length] = new Array( row, preprocessed, oldIndex );
- } else {
- staticRows[staticRows.length] = new Array( row, false, j-rowStart );
- }
- }
-
- newRows.sort( sortfn );
-
- var arrowHTML;
- if ( reverse ) {
- arrowHTML = '<img src="' + ts_image_path + ts_image_down + '" alt="&darr;"/>';
- newRows.reverse();
- span.setAttribute( 'sortdir', 'up' );
- } else {
- arrowHTML = '<img src="' + ts_image_path + ts_image_up + '" alt="&uarr;"/>';
- span.setAttribute( 'sortdir', 'down' );
- }
-
- for ( var i = 0; i < staticRows.length; i++ ) {
- var row = staticRows[i];
- newRows.splice( row[2], 0, row );
- }
-
- // We appendChild rows that already exist to the tbody, so it moves them rather than creating new ones
- // don't do sortbottom rows
- for ( var i = 0; i < newRows.length; i++ ) {
- if ( ( ' ' + newRows[i][0].className + ' ').indexOf(' sortbottom ') == -1 ) {
- table.tBodies[0].appendChild( newRows[i][0] );
- }
- }
- // do sortbottom rows only
- for ( var i = 0; i < newRows.length; i++ ) {
- if ( ( ' ' + newRows[i][0].className + ' ').indexOf(' sortbottom ') != -1 ) {
- table.tBodies[0].appendChild( newRows[i][0] );
- }
- }
-
- // Delete any other arrows there may be showing
- var spans = getElementsByClassName( tr, 'span', 'sortarrow' );
- for ( var i = 0; i < spans.length; i++ ) {
- spans[i].innerHTML = '<img src="' + ts_image_path + ts_image_none + '" alt="&darr;"/>';
- }
- span.innerHTML = arrowHTML;
-
- if ( ts_alternate_row_colors ) {
- ts_alternate( table );
- }
-};
-
-window.ts_initTransformTable = function() {
- if ( typeof wgSeparatorTransformTable == 'undefined'
- || ( wgSeparatorTransformTable[0] == '' && wgDigitTransformTable[2] == '' ) )
- {
- var digitClass = "[0-9,.]";
- ts_number_transform_table = false;
- } else {
- ts_number_transform_table = {};
- // Unpack the transform table
- // Separators
- var ascii = wgSeparatorTransformTable[0].split("\t");
- var localised = wgSeparatorTransformTable[1].split("\t");
- for ( var i = 0; i < ascii.length; i++ ) {
- ts_number_transform_table[localised[i]] = ascii[i];
- }
- // Digits
- ascii = wgDigitTransformTable[0].split("\t");
- localised = wgDigitTransformTable[1].split("\t");
- for ( var i = 0; i < ascii.length; i++ ) {
- ts_number_transform_table[localised[i]] = ascii[i];
- }
-
- // Construct regex for number identification
- var digits = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9', ',', '\\.'];
- var maxDigitLength = 1;
- for ( var digit in ts_number_transform_table ) {
- // Escape regex metacharacters
- digits.push(
- digit.replace( /[\\\\$\*\+\?\.\(\)\|\{\}\[\]\-]/,
- function( s ) { return '\\' + s; } )
- );
- if ( digit.length > maxDigitLength ) {
- maxDigitLength = digit.length;
- }
- }
- if ( maxDigitLength > 1 ) {
- var digitClass = '[' + digits.join( '', digits ) + ']';
- } else {
- var digitClass = '(' + digits.join( '|', digits ) + ')';
- }
- }
-
- // We allow a trailing percent sign, which we just strip. This works fine
- // if percents and regular numbers aren't being mixed.
- ts_number_regex = new RegExp(
- "^(" +
- "[-+\u2212]?[0-9][0-9,]*(\\.[0-9,]*)?(E[-+\u2212]?[0-9][0-9,]*)?" + // Fortran-style scientific
- "|" +
- "[-+\u2212]?" + digitClass + "+%?" + // Generic localised
- ")$", "i"
- );
-};
-
-window.ts_toLowerCase = function( s ) {
- return s.toLowerCase();
-};
-
-window.ts_dateToSortKey = function( date ) {
- // y2k notes: two digit years less than 50 are treated as 20XX, greater than 50 are treated as 19XX
- if ( date.length == 11 ) {
- switch ( date.substr( 3, 3 ).toLowerCase() ) {
- case 'jan':
- var month = '01';
- break;
- case 'feb':
- var month = '02';
- break;
- case 'mar':
- var month = '03';
- break;
- case 'apr':
- var month = '04';
- break;
- case 'may':
- var month = '05';
- break;
- case 'jun':
- var month = '06';
- break;
- case 'jul':
- var month = '07';
- break;
- case 'aug':
- var month = '08';
- break;
- case 'sep':
- var month = '09';
- break;
- case 'oct':
- var month = '10';
- break;
- case 'nov':
- var month = '11';
- break;
- case 'dec':
- var month = '12';
- break;
- // default: var month = '00';
- }
- return date.substr( 7, 4 ) + month + date.substr( 0, 2 );
- } else if ( date.length == 10 ) {
- if ( ts_europeandate == false ) {
- return date.substr( 6, 4 ) + date.substr( 0, 2 ) + date.substr( 3, 2 );
- } else {
- return date.substr( 6, 4 ) + date.substr( 3, 2 ) + date.substr( 0, 2 );
- }
- } else if ( date.length == 8 ) {
- var yr = date.substr( 6, 2 );
- if ( parseInt( yr ) < 50 ) {
- yr = '20' + yr;
- } else {
- yr = '19' + yr;
- }
- if ( ts_europeandate == true ) {
- return yr + date.substr( 3, 2 ) + date.substr( 0, 2 );
- } else {
- return yr + date.substr( 0, 2 ) + date.substr( 3, 2 );
- }
- }
- return '00000000';
-};
-
-window.ts_parseFloat = function( s ) {
- if ( !s ) {
- return 0;
- }
- if ( ts_number_transform_table != false ) {
- var newNum = '', c;
-
- for ( var p = 0; p < s.length; p++ ) {
- c = s.charAt( p );
- if ( c in ts_number_transform_table ) {
- newNum += ts_number_transform_table[c];
- } else {
- newNum += c;
- }
- }
- s = newNum;
- }
- var num = parseFloat( s.replace(/[, ]/g, '').replace("\u2212", '-') );
- return ( isNaN( num ) ? -Infinity : num );
-};
-
-window.ts_currencyToSortKey = function( s ) {
- return ts_parseFloat(s.replace(/[^-\u22120-9.,]/g,''));
-};
-
-window.ts_sort_generic = function( a, b ) {
- return a[1] < b[1] ? -1 : a[1] > b[1] ? 1 : a[2] - b[2];
-};
-
-window.ts_alternate = function( table ) {
- // Take object table and get all it's tbodies.
- var tableBodies = table.getElementsByTagName( 'tbody' );
- // Loop through these tbodies
- for ( var i = 0; i < tableBodies.length; i++ ) {
- // Take the tbody, and get all it's rows
- var tableRows = tableBodies[i].getElementsByTagName( 'tr' );
- // Loop through these rows
- // Start at 1 because we want to leave the heading row untouched
- for ( var j = 0; j < tableRows.length; j++ ) {
- // Check if j is even, and apply classes for both possible results
- var oldClasses = tableRows[j].className.split(' ');
- var newClassName = '';
- for ( var k = 0; k < oldClasses.length; k++ ) {
- if ( oldClasses[k] != '' && oldClasses[k] != 'even' && oldClasses[k] != 'odd' ) {
- newClassName += oldClasses[k] + ' ';
- }
- }
- tableRows[j].className = newClassName + ( j % 2 == 0 ? 'even' : 'odd' );
- }
- }
-};
-
-/*
- * End of table sorting code
- */
-
-
/**
* Add a cute little box at the top of the screen to inform the user of
* something, replacing any preexisting message.
@@ -1041,11 +612,6 @@ window.runOnloadHook = function() {
// might cause the function to terminate prematurely
doneOnloadHook = true;
- updateTooltipAccessKeys( null );
- setupCheckboxShiftClick();
-
- jQuery( document ).ready( sortables_init );
-
// Run any added-on functions
for ( var i = 0; i < onloadFuncts.length; i++ ) {
onloadFuncts[i]();
@@ -1101,6 +667,4 @@ hookEvent( 'load', runOnloadHook );
if ( ie6_bugs ) {
importScriptURI( stylepath + '/common/IEFixes.js' );
-}
-
-showTocToggle();
+} \ No newline at end of file
diff --git a/skins/modern/main.css b/skins/modern/main.css
index 9dc17170..910a53bc 100644
--- a/skins/modern/main.css
+++ b/skins/modern/main.css
@@ -8,6 +8,9 @@ body {
font-family: sans-serif;
color: black;
background-color: #f0f0f0;
+
+ direction: ltr;
+ unicode-bidi: embed;
}
#mw_main,
@@ -182,6 +185,7 @@ textarea {
}
ul {
+ /* @embed */
list-style-image: url(bullet.gif);
}
@@ -245,6 +249,7 @@ ul {
#footer {
background-color: #f0f0f0;
+ /* @embed */
background: url(footer-grad.png) repeat-x 0 0;
padding: 10px 1em 1em 1em;
clear:both;
@@ -406,32 +411,38 @@ h1, h2, h3, h4, h5, h6 {
}
#mw_content a.external,
-#mw_content a[href ^="gopher://"] {
+#mw_content a.external[href ^="gopher://"] {
+ /* @embed */
background: url(external.png) center right no-repeat;
padding-right: 13px;
}
-#mw_content a[href ^="https://"],
+#mw_content a.external[href ^="https://"],
.link-https {
+ /* @embed */
background: url(lock_icon.gif) center right no-repeat;
padding-right: 16px;
}
-#mw_content a[href ^="mailto:"],
+#mw_content a.external[href ^="mailto:"],
.link-mailto {
+ /* @embed */
background: url(mail_icon.gif) center right no-repeat;
padding-right: 18px;
}
-#mw_content a[href ^="news://"] {
+#mw_content a.external[href ^="news://"] {
+ /* @embed */
background: url(news_icon.png) center right no-repeat;
padding-right: 18px;
}
-#mw_content a[href ^="ftp://"],
+#mw_content a.external[href ^="ftp://"],
.link-ftp {
+ /* @embed */
background: url(file_icon.gif) center right no-repeat;
padding-right: 18px;
}
-#mw_content a[href ^="irc://"],
-#mw_content a.extiw[href ^="irc://"],
+#mw_content a.external[href ^="irc://"],
+#mw_content a.external[href ^="ircs://"],
.link-irc {
+ /* @embed */
background: url(discussionitem_icon.gif) center right no-repeat;
padding-right: 18px;
}
@@ -443,6 +454,7 @@ h1, h2, h3, h4, h5, h6 {
#mw_content a.external[href $=".wav"], #mw_content a.external[href $=".WAV"],
#mw_content a.external[href $=".wma"], #mw_content a.external[href $=".WMA"],
.link-audio {
+ /* @embed */
background: url("audio.png") center right no-repeat;
padding-right: 13px;
}
@@ -451,6 +463,7 @@ h1, h2, h3, h4, h5, h6 {
#mw_content a.external[href $=".mpeg"], #mw_content a.external[href $=".MPEG"],
#mw_content a.external[href $=".mpg"], #mw_content a.external[href $=".MPG"],
.link-video {
+ /* @embed */
background: url("video.png") center right no-repeat;
padding-right: 13px;
}
@@ -458,15 +471,13 @@ h1, h2, h3, h4, h5, h6 {
#mw_content a.external[href *=".pdf#"], #mw_content a.external[href *=".PDF#"],
#mw_content a.external[href *=".pdf?"], #mw_content a.external[href *=".PDF?"],
.link-document {
+ /* @embed */
background: url("document.png") center right no-repeat;
padding-right: 12px;
}
/* images */
-div.floatright, table.floatright {
- clear: right;
- float: right;
- position: relative;
+/* @noflip */div.floatright, table.floatright {
margin: 0 0 .5em .5em;
border: 0;
/*
@@ -475,10 +486,7 @@ div.floatright, table.floatright {
*/
}
div.floatright p { font-style: italic; }
-div.floatleft, table.floatleft {
- float: left;
- clear: left;
- position: relative;
+/* @noflip */div.floatleft, table.floatleft {
margin: 0 .5em .5em 0;
border: 0;
/*
@@ -521,22 +529,15 @@ div.magnify a, div.magnify img {
border: none !important;
background: none !important;
}
-div.tright {
- clear: right;
- float: right;
+/* @noflip */div.tright {
margin: .5em 0 .8em 1.4em;
}
-div.tleft {
- float: left;
- clear: left;
+/* @noflip */div.tleft {
margin: .5em 1.4em .8em 0;
}
img.thumbborder {
border: 1px solid #dddddd;
}
-.hiddenStructure {
- display: none;
-}
.mw-warning {
border: 1px solid #aaa;
background-color: #f9f9f9;
@@ -584,7 +585,7 @@ img.thumbborder {
list-style-type: none;
list-style-image: none;
margin: 0 1em 0 1em;
- padding-left: 0;
+ padding: 0;
text-align: left;
}
@@ -621,15 +622,12 @@ img.thumbborder {
#mw_content a.extiw,
#mw_content a.extiw:active {
color: #36b;
- background: none;
- padding: 0;
}
#mw_content a.external {
color: #36b;
}
-
.redirectText {
font-size: 150%;
margin: 5px;
@@ -793,6 +791,7 @@ ul {
list-style-type: square;
margin: .3em 0 0 1.5em;
padding: 0;
+ /* @embed */
list-style-image: url(bullet.gif);
}
ol {
@@ -836,6 +835,7 @@ pre {
border-collapse: collapse;
margin: 0 -1em 1em -1em;
padding: 0 0 8px 0;
+ /* @embed */
background: url(footer-grad.png) repeat-x bottom left;
}
@@ -880,4 +880,20 @@ pre {
/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */
.tipsy {
font-size: 130%;
-} \ No newline at end of file
+}
+
+/**
+ * Lists:
+ * The following lines don't have a visible effect on non-Gecko browsers
+ * They fix a problem ith Gecko browsers rendering lists to the right of
+ * left-floated objects in an RTL layout.
+ */
+/* @noflip */
+html > body.rtl div#mw_contentholder ul {
+ display: table;
+}
+
+/* @noflip */
+html > body.rtl div#mw_contentholder ul#filetoc {
+ display: block;
+}
diff --git a/skins/modern/rtl.css b/skins/modern/rtl.css
deleted file mode 100644
index 66d9017a..00000000
--- a/skins/modern/rtl.css
+++ /dev/null
@@ -1,162 +0,0 @@
-body {
- direction: rtl;
- unicode-bidi: embed;
-}
-
-.editsection {
- float: left;
- margin-right: 5px;
- margin-left: 0; /* bug 9122: undo default LTR */
-}
-
-/* Fix alignment */
-.documentByLine,
-.portletDetails,
-.portletMore {
- text-align: left;
-}
-
-div div.thumbcaption {
- text-align: right;
-}
-
-div.magnify {
- left: auto;
- right: 0;
-}
-
-/* Fix margins for non-css2 browsers */
-/* top right bottom left */
-
-dd {
- margin-left: 0;
- margin-right: 1.6em;
-}
-.tocindent {
- margin-left: 0;
- margin-right: 2em;
-}
-div.tright, div.floatright, table.floatright {
- clear: none;
-}
-div.tleft, div.floatleft, table.floatleft {
- clear: left;
-}
-
-/* Fix link icons */
-.external, a.feedlink {
- padding: 0 !important;
- background: none !important;
-}
-
-/* js pref toc */
-
-#preftoc {
- margin-right: 1em;
-}
-
-.errorbox, .successbox, #preftoc li, .prefsection fieldset {
- float: right;
-}
-
-.prefsection {
- padding-right: 2em;
-}
-
-/* workaround for moz bug, displayed bullets on left side */
-
-#toc ul {
- text-align: right;
-}
-
-#toc ul ul {
- margin: 0 2em 0 0;
-}
-
-input#wpSave, input#wpDiff {
- margin-right: 0;
- margin-left: .33em;
-}
-
-#userlogin {
- margin: 0 0 1em 3em;
-}
-/* Convenience links to edit block, delete and protect reasons */
-p.mw-ipb-conveniencelinks, p.mw-protect-editreasons,
-p.mw-filedelete-editreasons, p.mw-delete-editreasons {
- float: left;
-}
-
-.toggle {
- margin-left: 0em;
- margin-right: 2em;
-}
-table.filehistory th {
- text-align: right;
-}
-
-#mw_contentwrapper {
- margin: 0 -15em 0 0;
- float: left;
-}
-
-#mw_content {
- margin: 0 14em 0 0;
- border-left: none;
- border-right: solid 1px #bbbbbb;
-}
-
-.portlet ul {
- margin: 0 1.5em 0 0;
- padding: 0 0 0 0;
-}
-
-.portlet h5 {
- padding: 0.1em 1em 0.3em 0;
-}
-
-#p-cactions li {
- float: right;
-}
-
-#p-personal li {
- float: right;
-}
-
-#p-cactions {
- margin: 0 14em 0 0;
-}
-
-#mw_portlets {
- border-right: none;
- border-left: solid 1px #bbbbbb;
-}
-
-/**
- * Lists:
- * The following lines don't have a visible effect on non-Gecko browsers
- * They fix a problem ith Gecko browsers rendering lists to the right of
- * left-floated objects in an RTL layout.
- */
-html > body div#mw_contentholder ul {
- display: table;
-}
-html > body div#mw_contentholder ul li {
- margin-right:10px;
-}
-html > body div.pBody ul li {
- margin-right:4px;
-}
-html > body div#mw_contentholder ul#filetoc {
- display: block;
-}
-
-/* Special:Allpages styling */
-td.mw-allpages-nav, p.mw-allpages-nav, td.mw-allpages-alphaindexline {
- text-align: left;
-}
-
-/* Special:PrefixIndex styling */
-td#mw-prefixindex-nav-form {
- text-align: left;
-}
diff --git a/skins/monobook/IE60Fixes.css b/skins/monobook/IE60Fixes.css
index 56e0a16b..3bcd0479 100644
--- a/skins/monobook/IE60Fixes.css
+++ b/skins/monobook/IE60Fixes.css
@@ -11,16 +11,33 @@ div#column-content div#content {
margin-top: 3em;
height: 1%;
}
+.rtl div#column-content div#content {
+ margin-right: 12.2em;
+ margin-left: 0;
+}
div#column-one {
position: absolute;
top: 0;
left: 0;
z-index: 4;
}
+.rtl div#column-one {
+ left: auto;
+ right: 0;
+}
div#footer {
margin-left: 13.6em;
border-left: 1px solid #fabd23;
}
+.rtl div#footer {
+ margin-left: 0;
+ margin-right: 13.6em;
+ border-left: none;
+ border-right: 1px solid #fabd23;
+}
+
+ /* the tabs */
+
/* the tabs */
@@ -85,7 +102,6 @@ textarea {
width: 96%;
}
-div.editsection,
#catlinks,
div.tright,
div.tleft {
diff --git a/skins/monobook/IE70Fixes.css b/skins/monobook/IE70Fixes.css
index 91b39efd..fc009e6e 100644
--- a/skins/monobook/IE70Fixes.css
+++ b/skins/monobook/IE70Fixes.css
@@ -9,6 +9,9 @@ div#column-content div#content {
height: 1%;
}
+.rtl div#column-content div#content { margin-right: 12.2em; margin-left: 0; }
+
+
.rtl div#column-one {
/* For some reason it tries to inherit the padding-top into every div,
* and I can't figure out how to get it back off.
@@ -18,9 +21,13 @@ div#column-content div#content {
margin-top: 160px;
}
-.rtl #bodyContent a.external {
- background-image: url(external-rtl.png);
- padding: 0 13px 0 0;
+/* These elements also have padding-left: 20px; in main.css, but in RTL mode this is flipped.
+ * That's good in normal browsers, but in IE7 it needs to not be flipped for some daft reason.
+ * Also clear the right margin (originally margin-left: 1em)
+ */
+li#pt-userpage, li#pt-anonuserpage, li#pt-login {
+ padding-left: 20px;
+ margin-right: 0;
}
.rtl a.feedlink {
@@ -69,7 +76,6 @@ textarea {
}
/*
-div.editsection,
#catlinks,
div.tright,
div.tleft {
diff --git a/skins/monobook/external.png b/skins/monobook/external-ltr.png
index acf260fc..acf260fc 100644
--- a/skins/monobook/external.png
+++ b/skins/monobook/external-ltr.png
Binary files differ
diff --git a/skins/monobook/main.css b/skins/monobook/main.css
index d2330eba..edf79abb 100644
--- a/skins/monobook/main.css
+++ b/skins/monobook/main.css
@@ -41,10 +41,13 @@ div#content {
body {
font: x-small sans-serif;
+ /* @embed */
background: #f9f9f9 url(headbg.jpg) 0 0 no-repeat;
color: black;
margin: 0;
padding: 0;
+ direction: ltr; /* Needed for RTL flipping */
+ unicode-bidi: embed;
}
/* scale back up to a sane default */
@@ -136,6 +139,7 @@ ul {
list-style-type: square;
margin: .3em 0 0 1.5em;
padding: 0;
+ /* @embed */
list-style-image: url(bullet.gif);
}
ol {
@@ -263,6 +267,7 @@ span.subpages {
vertical-align: middle;
}
#siteNotice {
+ position: relative;
text-align: center;
font-size: 95%;
padding: 0 0.9em;
@@ -306,7 +311,7 @@ in the bottom-right corner of the content area */
margin-right: auto;
}
/* small for tables and similar */
-.small, .small * {
+.small {
font-size: 94%;
}
table.small {
@@ -344,7 +349,7 @@ table.small {
list-style-type: none;
list-style-image: none;
margin-left: 0;
- padding-left: 0;
+ padding: 0;
text-align: left;
}
#toc ul ul,
@@ -363,10 +368,7 @@ table.small {
}
/* images */
-div.floatright, table.floatright {
- clear: right;
- float: right;
- position: relative;
+/* @noflip */div.floatright, table.floatright {
margin: 0 0 .5em .5em;
border: 0;
/*
@@ -375,10 +377,7 @@ div.floatright, table.floatright {
*/
}
div.floatright p { font-style: italic; }
-div.floatleft, table.floatleft {
- float: left;
- clear: left;
- position: relative;
+/* @noflip */div.floatleft, table.floatleft {
margin: 0 .5em .5em 0;
border: 0;
/*
@@ -421,22 +420,15 @@ div.magnify a, div.magnify img {
border: none !important;
background: none !important;
}
-div.tright {
- clear: right;
- float: right;
+/* @noflip */div.tright {
margin: .5em 0 1.3em 1.4em;
}
-div.tleft {
- float: left;
- clear: left;
+/* @noflip */div.tleft {
margin: .5em 1.4em 1.3em 0;
}
img.thumbborder {
border: 1px solid #dddddd;
}
-.hiddenStructure {
- display: none;
-}
/*
** classes for special content elements like town boxes
@@ -476,36 +468,39 @@ table.rimage {
*/
#bodyContent a.external,
#bodyContent a.external[href ^="gopher://"] {
- background: url(external.png) center right no-repeat;
- padding: 0 13px;
-}
-.rtl #bodyContent a.external,
-.rtl #bodyContent a.external[href ^="gopher://"] {
- background-image: url(external-rtl.png);
+ /* @embed */
+ background: url(external-ltr.png) center right no-repeat;
+ padding-right: 13px;
}
#bodyContent a.external[href ^="https://"],
.link-https {
+ /* @embed */
background: url(lock_icon.gif) center right no-repeat;
- padding: 0 16px;
+ padding-right: 16px;
}
#bodyContent a.external[href ^="mailto:"],
.link-mailto {
+ /* @embed */
background: url(mail_icon.gif) center right no-repeat;
- padding: 0 18px;
+ padding-right: 18px;
}
#bodyContent a.external[href ^="news://"] {
+ /* @embed */
background: url(news_icon.png) center right no-repeat;
- padding: 0 18px;
+ padding-right: 18px;
}
#bodyContent a.external[href ^="ftp://"],
.link-ftp {
+ /* @embed */
background: url(file_icon.gif) center right no-repeat;
- padding: 0 18px;
+ padding-right: 18px;
}
#bodyContent a.external[href ^="irc://"],
+#bodyContent a.external[href ^="ircs://"],
.link-irc {
+ /* @embed */
background: url(discussionitem_icon.gif) center right no-repeat;
- padding: 0 18px;
+ padding-right: 18px;
}
#bodyContent a.external[href $=".ogg"], #bodyContent a.external[href $=".OGG"],
#bodyContent a.external[href $=".mid"], #bodyContent a.external[href $=".MID"],
@@ -514,49 +509,54 @@ table.rimage {
#bodyContent a.external[href $=".wav"], #bodyContent a.external[href $=".WAV"],
#bodyContent a.external[href $=".wma"], #bodyContent a.external[href $=".WMA"],
.link-audio {
+ /* @embed */
background: url("audio.png") center right no-repeat;
- padding: 0 13px;
+ padding-right: 13px;
}
#bodyContent a.external[href $=".ogm"], #bodyContent a.external[href $=".OGM"],
#bodyContent a.external[href $=".avi"], #bodyContent a.external[href $=".AVI"],
#bodyContent a.external[href $=".mpeg"], #bodyContent a.external[href $=".MPEG"],
#bodyContent a.external[href $=".mpg"], #bodyContent a.external[href $=".MPG"],
.link-video {
+ /* @embed */
background: url("video.png") center right no-repeat;
- padding: 0 13px;
+ padding-right: 13px;
}
#bodyContent a.external[href $=".pdf"], #bodyContent a.external[href $=".PDF"],
#bodyContent a.external[href *=".pdf#"], #bodyContent a.external[href *=".PDF#"],
#bodyContent a.external[href *=".pdf?"], #bodyContent a.external[href *=".PDF?"],
.link-document {
+ /* @embed */
background: url("document.png") center right no-repeat;
- padding: 0 12px;
-}
-
-/* for rtl wikis */
-.rtl #bodyContent a.external {
- background-position: left;
- padding-right: 0;
-}
-.rtl a.feedlink {
- background-position: right;
- padding-right: 16px;
- padding-left: 0;
+ padding-right: 12px;
}
-
-/* correction for ltr wikis */
-.ltr #bodyContent a.external {
- padding-left: 0;
-}
-
-/* disable interwiki styling */
+
+/* Interwiki Styling */
#bodyContent a.extiw,
#bodyContent a.extiw:active {
color: #36b;
+ /* Don't show icons for interwiki links */
+ background: none;
+ padding: 0;
}
+#bodyContent a.extiw:visited {
+ color: #636;
+}
+#bodyContent a.extiw:active {
+ color: #b63;
+}
+
+/* External links */
#bodyContent a.external {
color: #36b;
}
+#bodyContent a.external:visited {
+ color: #636; /* bug 3112 */
+}
+#bodyContent a.external:active {
+ color: #b63;
+}
+
/*
** Structural Elements
*/
@@ -617,6 +617,7 @@ table.rimage {
.portlet ul {
line-height: 1.5em;
list-style-type: square;
+ /* @embed */
list-style-image: url(bullet.gif);
font-size: 95%;
}
@@ -753,6 +754,7 @@ in bg url to hide it from iemac */
li#pt-userpage,
li#pt-anonuserpage,
li#pt-login {
+ /* @embed */
background: url(user.gif) top left no-repeat;
padding-left: 20px;
text-transform: none;
@@ -848,9 +850,6 @@ li#ca-watch, li#ca-unwatch, li#ca-varlang-0, li#ca-print {
border: 0;
padding: 0;
}
-#p-cactions .hiddenStructure {
- display: none;
-}
#p-cactions li a {
text-transform: lowercase;
}
@@ -1007,10 +1006,6 @@ div#userlogin form#userlogin2 {
background-color: #f9f9f9;
float: left;
}
-.rtl div#userloginForm form,
-.rtl div#userlogin form#userlogin2 {
- float: right;
-}
div#userloginForm table,
div#userlogin form#userlogin2 table {
@@ -1080,7 +1075,6 @@ div#userloginForm .captcha {
display: inline;
margin-bottom: 0;
}
-* html div.editsection { font-size: smaller; }
#pagehistory li.selected { position: relative; }
/* Mac IE 5.0 fix; floated content turns invisible */
@@ -1254,4 +1248,4 @@ div.mw-lag-warn-high {
/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */
.tipsy {
font-size: 127%;
-} \ No newline at end of file
+}
diff --git a/skins/monobook/rtl.css b/skins/monobook/rtl.css
deleted file mode 100644
index 52507676..00000000
--- a/skins/monobook/rtl.css
+++ /dev/null
@@ -1,251 +0,0 @@
-/*
-Right-to-left fixes for MonoBook.
-Places sidebar on right, tweaks various alignment issues.
-
-Works mostly ok nicely on Safari 1.2.1; fine in Mozilla.
-
-Safari bugs (1.2.1):
-* Tabs are still appearing in left-to-right order. (Try after localizing)
-
-Opera bugs (7.23 linux):
-* Some bits of ltr text (sidebar box titles) have forward and backward versions overlapping each other
-
-IE/mac bugs:
-* The thing barfs on Hebrew and Arabic anyway, so no point testing.
-
-Missing features due to lack of support:
-* external link icons
-
-To test:
-* Opera6
-* IE 5.0
-* etc
-
-*/
-body {
- direction: rtl;
- unicode-bidi: embed;
-}
-div#column-content {
- margin: 0 -12.2em 0 0;
- float: left;
-}
-div#column-content div#content{
- margin-left: 0;
- margin-right: 12.2em;
- border-right: 1px solid #aaaaaa;
- border-left: none;
-}
-html > body .portlet {
- float: right;
- clear: right;
-}
-.editsection {
- float: left;
- margin-right: 5px;
- margin-left: 0; /* bug 9122: undo default LTR */
-}
-/* recover IEMac (might be fine with the float, but usually it's close to IE */
-*>body .portlet {
- float: none;
- clear: none;
-}
-.pBody {
- padding-right: 0.8em;
- padding-left: 0.5em;
-}
-
-/* Fix alignment */
-.documentByLine,
-.portletDetails,
-.portletMore,
-#p-personal {
- text-align: left;
-}
-
-div div.thumbcaption {
- text-align: right;
-}
-
-div.magnify,
-#p-logo {
- left: auto;
- right: 0;
-}
-#p-personal {
- left: auto;
- right: 0;
-}
-
-#p-cactions {
- left: auto;
- right: 11.5em;
- padding-left: 0;
- padding-right: 1em;
-}
-#p-cactions li {
- margin-left: 0.3em;
- margin-right: 0;
- float: right;
-}
-* html #p-cactions li a {
- display: block;
- padding-bottom: 0;
-}
-* html #p-cactions li a:hover {
- padding-bottom: 0.2em;
-}
-/* offsets to distinguish the tab groups */
-li#ca-talk {
- margin-right: auto;
- margin-left: 1.6em;
-}
-li#ca-watch,li#ca-unwatch {
- margin-right: 1.6em !important;
-}
-
-/* Fix margins for non-css2 browsers */
-/* top right bottom left */
-
-ul {
- margin-left: 0;
- margin-right: 1.5em;
-}
-ol {
- margin-left: 0;
- margin-right: 2.4em;
-}
-dd {
- margin-left: 0;
- margin-right: 1.6em;
-}
-#contentSub {
- margin-right: 1em;
- margin-left: 0;
-}
-.tocindent {
- margin-left: 0;
- margin-right: 2em;
-}
-div.tright, div.floatright, table.floatright {
- clear: none;
-}
-div.tleft, div.floatleft, table.floatleft {
- clear: left;
-}
-#p-personal li {
- margin-left: 0;
- margin-right: 1em;
-}
-
-li#ca-talk,
-li#ca-watch {
- margin-right: auto;
- margin-left: 1.6em;
-}
-
-#p-personal li {
- float: left;
-}
-/* Fix link icons
-.external, a.feedlink {
- padding: 0 !important;
- background: none !important;
-}
-*/
-div#footer {
- clear: both;
-}
-#f-poweredbyico {
- float: left;
- height: 1%;
-}
-#f-copyrightico {
- float: right;
- height: 1%;
-}
-* html div#footer {
- margin-left: 0;
- margin-right: 13.6em;
- border-left: 0;
- border-right: 1px solid #fabd23;
-}
-* html div#column-content {
- float: none;
- margin-left: 0;
- margin-right: 0;
-}
-* html div#column-content div#content {
- margin-left: 0;
- margin-top: 3em;
-}
-* html div#column-one { right: 0; }
-
-/* js pref toc */
-
-#preftoc {
- margin-right: 1em;
-}
-
-.errorbox, .successbox, #preftoc li, .prefsection fieldset {
- float: right;
-}
-
-.prefsection {
- padding-right: 2em;
-}
-
-/* workaround for moz bug, displayed bullets on left side */
-
-#toc ul {
- text-align: right;
-}
-
-#toc ul ul {
- margin: 0 2em 0 0;
-}
-
-input#wpSave, input#wpDiff {
- margin-right: 0;
- margin-left: .33em;
-}
-
-#userlogin {
- margin: 0 0 1em 3em;
-}
-/* Convenience links to edit block, delete and protect reasons */
-p.mw-ipb-conveniencelinks, p.mw-protect-editreasons,
-p.mw-filedelete-editreasons, p.mw-delete-editreasons {
- float: left;
-}
-
-.toggle {
- margin-left: 0em;
- margin-right: 2em;
-}
-table.filehistory th {
- text-align: right;
-}
-
-/* Special:AllPages styling */
-td.mw-allpages-nav, p.mw-allpages-nav, td.mw-allpages-alphaindexline {
- text-align: left;
-}
-
-/* Special:PrefixIndex styling */
-td#mw-prefixindex-nav-form {
- text-align: left;
-}
-
-/**
- * Lists:
- * The following lines don't have a visible effect on non-Gecko browsers
- * They fix a problem ith Gecko browsers rendering lists to the right of
- * left-floated objects in an RTL layout.
- */
-html > body div#article ul {
- display: table;
-}
-html > body div#bodyContent ul#filetoc {
- display: block;
-}
diff --git a/skins/common/nostalgia.css b/skins/nostalgia/screen.css
index e1b774df..1cac7a73 100644
--- a/skins/common/nostalgia.css
+++ b/skins/nostalgia/screen.css
@@ -46,3 +46,6 @@ p.subtitle {
padding-top: 0;
margin-top: 0;
}
+div.sitenotice {
+ clear: both;
+}
diff --git a/skins/simple/main.css b/skins/simple/main.css
index 8b65d4de..b4b24d23 100644
--- a/skins/simple/main.css
+++ b/skins/simple/main.css
@@ -198,32 +198,32 @@ pre {
h1.firstHeading, h2 {
border-bottom: solid 1px black;
}
-#bodyContent a[href ^="http://"],
-#bodyContent a[href ^="gopher://"] {
+#bodyContent a.external,
+#bodyContent a.external[href ^="gopher://"] {
background: url("external.png") center right no-repeat;
padding-right: 13px;
}
-#bodyContent a[href ^="https://"],
+#bodyContent a.external[href ^="https://"],
.link-https {
background: url("lock_icon.gif") center right no-repeat;
padding-right: 16px;
}
-#bodyContent a[href ^="mailto:"],
+#bodyContent a.external[href ^="mailto:"],
.link-mailto {
background: url("mail_icon.gif") center right no-repeat;
padding-right: 18px;
}
-#bodyContent a[href ^="news://"] {
+#bodyContent a.external[href ^="news://"] {
background: url("news_icon.png") center right no-repeat;
padding-right: 18px;
}
-#bodyContent a[href ^="ftp://"],
+#bodyContent a.external[href ^="ftp://"],
.link-ftp {
background: url("file_icon.gif") center right no-repeat;
padding-right: 18px;
}
-#bodyContent a[href ^="irc://"],
-#bodyContent a.extiw[href ^="irc://"],
+#bodyContent a.external[href ^="irc://"],
+#bodyContent a.external[href ^="ircs://"],
.link-irc {
background: url("discussionitem_icon.gif") center right no-repeat;
padding-right: 18px;
@@ -232,8 +232,6 @@ h1.firstHeading, h2 {
#bodyContent a.extiw,
#bodyContent a.extiw:active {
color: #5E7CFF;
- background: none;
- padding: 0;
}
td.diff-addedline {
@@ -257,19 +255,13 @@ div.tocindent {
border-bottom: solid 1px black;
}
-div.floatright, table.floatright {
- clear: right;
- float: right;
+/* @noflip */div.floatright, table.floatright {
margin: 0;
- position: relative;
border-width: 0.5em 0 0.8em 1.4em;
}
div.floatright p { font-style: italic; }
-div.floatleft, table.floatleft {
- float: left;
- clear: left;
+/* @noflip */div.floatleft, table.floatleft {
margin: 0.3em 0.5em 0.5em 0;
- position: relative;
border-width: 0.5em 1.4em 0.8em 0;
}
div.floatleft p { font-style: italic; }
@@ -300,14 +292,10 @@ div.magnify a, div.magnify img {
border: none !important;
background: none !important;
}
-div.tright {
- clear: right;
- float: right;
+/* @noflip */div.tright {
border-width: 0.5em 0 0.8em 1.4em;
}
-div.tleft {
- float: left;
- clear: left;
+/* @noflip */div.tleft {
margin-right:0.5em;
border-width: 0.5em 1.4em 0.8em 0;
}
@@ -323,6 +311,13 @@ a.new,
li.new {
text-decoration: line-through;
}
+/**
+ * Overrides text justification (user preference)
+ * See bug 31990
+ */
+#catlinks {
+ text-align: center;
+}
.catlinks {
text-align: center;
width: 80%;
diff --git a/skins/vector/images/arrow-down-icon.png b/skins/vector/images/arrow-down-icon.png
index 437b9518..90c907bf 100644
--- a/skins/vector/images/arrow-down-icon.png
+++ b/skins/vector/images/arrow-down-icon.png
Binary files differ
diff --git a/skins/vector/images/user-icon.png b/skins/vector/images/user-icon.png
index 2fbfe4e5..a3b38b3a 100644
--- a/skins/vector/images/user-icon.png
+++ b/skins/vector/images/user-icon.png
Binary files differ
diff --git a/skins/vector/screen.css b/skins/vector/screen.css
index 703db0ab..a7428473 100644
--- a/skins/vector/screen.css
+++ b/skins/vector/screen.css
@@ -165,10 +165,6 @@ div#mw-head h5 {
height: 1.9em;
padding-left: 0.5em;
padding-right: 0.5em;
- /* @embed */
- background-image: url(images/tab-break.png);
- background-position: bottom right;
- background-repeat: no-repeat;
color: #0645ad;
cursor: pointer;
font-size: 0.8em;
@@ -177,6 +173,10 @@ div#mw-head h5 {
div.vectorTabs li > a {
display: block;
}
+ div.vectorTabs li.icon a {
+ background-position: bottom right;
+ background-repeat: no-repeat;
+ }
/* OVERRIDDEN BY COMPLIANT BROWSERS */
div.vectorTabs span a {
display: inline-block;
@@ -188,6 +188,13 @@ div#mw-head h5 {
float: left;
display: block;
}
+ div.vectorTabs span {
+ display: inline-block;
+ /* @embed */
+ background-image: url(images/tab-break.png);
+ background-position: bottom right;
+ background-repeat: no-repeat;
+ }
div.vectorTabs li.selected a,
div.vectorTabs li.selected a:visited{
color: #333333;
@@ -204,10 +211,15 @@ div#mw-head h5 {
float: left;
/* @embed */
background-image: url(images/arrow-down-icon.png);
- background-position: 100% 60%;
+ background-position: 0px 60%;
background-repeat: no-repeat;
cursor: pointer;
}
+ div.vectorMenuFocus {
+ /* @embed */
+ background-image: url(images/arrow-down-focus-icon.png);
+ background-position: 100% 60%;
+ }
/* @noflip */
body.rtl div.vectorMenu {
direction: rtl;
@@ -280,7 +292,8 @@ div#mw-head h5 {
x:-moz-any-link {
margin-left: 23px;
}
- div.vectorMenu:hover div.menu {
+ /* Enable forcing showing of the menu for accessibility */
+ div.vectorMenu:hover div.menu, div.vectorMenu div.menuForceShow {
display: block;
}
div.vectorMenu ul {
@@ -411,13 +424,14 @@ div#mw-head h5 {
right: 0;
top: 0;
padding: 0;
- padding-top: 0.2em;
+ padding-top: 0.3em;
padding-bottom: 0.2em;
padding-right: 0.4em;
margin: 0;
border: none;
cursor: pointer;
background-color: transparent;
+ background-image: none;
}
/* OVERRIDDEN BY COMPLIANT BROWSERS */
div#simpleSearch button#searchButton img {
@@ -522,6 +536,7 @@ div#footer #footer-icons li {
float: left;
margin-left: 0.5em;
line-height: 2em;
+ text-align: right;
}
div#footer #footer-places li {
float: left;
@@ -617,15 +632,15 @@ div#footer #footer-places li {
/* @embed */
background-image: url(images/preferences-base.png);
}
+#preferences fieldset {
+ border: none;
+ border-top: solid 1px #cccccc;
+}
#preferences fieldset.prefsection {
border: none;
padding: 0;
margin: 1em;
}
-#preferences fieldset.prefsection fieldset {
- border: none;
- border-top: solid 1px #cccccc;
-}
#preferences legend {
color: #666666;
}
@@ -781,7 +796,7 @@ pre {
border: 1px dashed #2f6fab;
color: black;
background-color: #f9f9f9;
- line-height: 1.1em;
+ line-height: 1.3em;
}
ul {
line-height: 1.5em;
@@ -871,7 +886,7 @@ select {
list-style-type: none;
list-style-image: none;
margin-left: 0;
- padding-left: 0;
+ padding: 0;
text-align: left;
}
#toc ul ul,
@@ -883,18 +898,12 @@ select {
font-size: 94%;
}
/* Images */
-div.floatright, table.floatright {
- clear: right;
- float: right;
- position: relative;
+/* @noflip */div.floatright, table.floatright {
margin: 0 0 .5em .5em;
border: 0;
}
div.floatright p { font-style: italic; }
-div.floatleft, table.floatleft {
- float: left;
- clear: left;
- position: relative;
+/* @noflip */div.floatleft, table.floatleft {
margin: 0 .5em .5em 0;
border: 0;
}
@@ -933,24 +942,15 @@ div.magnify a, div.magnify img {
border: none !important;
background: none !important;
}
-/* @noflip */
-div.tright {
- clear: right;
- float: right;
+/* @noflip */div.tright {
margin: .5em 0 1.3em 1.4em;
}
-/* @noflip */
-div.tleft {
- float: left;
- clear: left;
+/* @noflip */div.tleft {
margin: .5em 1.4em 1.3em 0;
}
img.thumbborder {
border: 1px solid #dddddd;
}
-.hiddenStructure {
- display: none;
-}
/* Warning */
.mw-warning {
margin-left: 50px;
@@ -1012,7 +1012,7 @@ span.subpages {
margin-right: auto;
}
/* Small for tables and similar */
-.small, .small * {
+.small {
font-size: 94%;
}
table.small {
@@ -1035,36 +1035,36 @@ h3, h4, h5 {
padding-bottom: 0;
}
div#content a.external,
-div#content a[href ^="gopher://"] {
+div#content a.external[href ^="gopher://"] {
/* @embed */
background: url(images/external-link-ltr-icon.png) center right no-repeat;
padding-right: 13px;
}
-div#content a[href ^="https://"],
+div#content a.external[href ^="https://"],
.link-https {
/* @embed */
background: url(images/lock-icon.png) center right no-repeat;
padding-right: 13px;
}
-div#content a[href ^="mailto:"],
+div#content a.external[href ^="mailto:"],
.link-mailto {
/* @embed */
background: url(images/mail-icon.png) center right no-repeat;
padding-right: 13px;
}
-div#content a[href ^="news://"] {
+div#content a.external[href ^="news://"] {
/* @embed */
background: url(images/news-icon.png) center right no-repeat;
padding-right: 13px;
}
-div#content a[href ^="ftp://"],
+div#content a.external[href ^="ftp://"],
.link-ftp {
/* @embed */
background: url(images/file-icon.png) center right no-repeat;
padding-right: 13px;
}
-div#content a[href ^="irc://"],
-div#content a.extiw[href ^="irc://"],
+div#content a.external[href ^="irc://"],
+div#content a.external[href ^="ircs://"],
.link-irc {
/* @embed */
background: url(images/talk-icon.png) center right no-repeat;
@@ -1098,16 +1098,34 @@ div#content a.external[href *=".pdf?"], div#content a.external[href *=".PDF?"],
background: url("images/document-icon.png?2") center right no-repeat;
padding-right: 13px;
}
-/* Interwiki Styling (Disabled) */
+
+/* Interwiki Styling */
div#content a.extiw,
div#content a.extiw:active {
color: #36b;
+ /* Don't show icons for interwiki links */
background: none;
padding: 0;
}
+div#content a.extiw:visited {
+ color: #636;
+}
+div#content a.extiw:active {
+ color: #b63;
+}
+
+/* External links */
div#content a.external {
color: #36b;
}
+div#content a.external:visited {
+ color: #636; /* bug 3112 */
+}
+div#content a.external:active {
+ color: #b63;
+}
+
+
div#content .printfooter {
display: none;
}
@@ -1121,6 +1139,14 @@ div#content .printfooter {
text-transform: none;
}
+.redirectText {
+ font-size: 140%;
+}
+
+.redirectMsg img {
+ vertical-align: text-bottom;
+}
+
.toccolours {
border: 1px solid #aaa;
background-color: #f9f9f9;
@@ -1139,10 +1165,6 @@ div#bodyContent {
}
/* Watch/Unwatch Icon Styling */
-#ca-unwatch.icon,
-#ca-watch.icon {
- margin-right:1px;
-}
#ca-unwatch.icon a,
#ca-watch.icon a {
margin: 0;
@@ -1191,13 +1213,7 @@ div.vectorTabs ul {
background-repeat:no-repeat;
}
-/* Convenience links to edit block, delete and protect reasons */
-p.mw-ipb-conveniencelinks, p.mw-protect-editreasons,
-p.mw-filedelete-editreasons, p.mw-delete-editreasons {
- float: right;
-}
-
/* Tooltips are outside of the normal body code, so this helps make the size of the text sensible */
.tipsy {
font-size: 0.8em;
-} \ No newline at end of file
+}
diff --git a/skins/vector/vector.js b/skins/vector/vector.js
new file mode 100644
index 00000000..757f7c8c
--- /dev/null
+++ b/skins/vector/vector.js
@@ -0,0 +1,19 @@
+/*
+ * Vector-specific scripts
+ */
+jQuery( function( $ ) {
+ var $pCactions = $( '#p-cactions' );
+ $pCactions.find( 'h5 a' )
+ // For accessibility, show the menu when the hidden link in the menu is clicked (bug 24298)
+ .click( function( e ) {
+ $pCactions.find( '.menu' ).toggleClass( 'menuForceShow' );
+ e.preventDefault();
+ })
+ // When the hidden link has focus, also set a class that will change the arrow icon
+ .focus( function() {
+ $pCactions.addClass( 'vectorMenuFocus' );
+ })
+ .blur( function() {
+ $pCactions.removeClass( 'vectorMenuFocus' );
+ });
+});
diff --git a/math/.htaccess b/tests/.htaccess
index 3a428827..3a428827 100644
--- a/math/.htaccess
+++ b/tests/.htaccess
diff --git a/maintenance/tests/RunSeleniumTests.php b/tests/RunSeleniumTests.php
index 2574f4b2..9cadd759 100644
--- a/maintenance/tests/RunSeleniumTests.php
+++ b/tests/RunSeleniumTests.php
@@ -3,7 +3,7 @@
/**
* @file
* @ingroup Maintenance
- * @copyright Copyright © Wikimedia Deuschland, 2009
+ * @copyright Copyright © Wikimedia Deuschland, 2009
* @author Hallo Welt! Medienwerkstatt GmbH
* @author Markus Glaser, Dan Nessett, Priyanka Dhanda
* initial idea by Daniel Kinzler
@@ -24,12 +24,25 @@
* http://www.gnu.org/copyleft/gpl.html
*/
+$IP = dirname( dirname( __FILE__ ) );
+
define( 'SELENIUMTEST', true );
-require_once( dirname( dirname( __FILE__ ) )."/Maintenance.php" );
-require_once( 'PHPUnit/Framework.php' );
+//require_once( dirname( __FILE__ ) . '/../maintenance/commandLine.inc' );
+require( dirname( __FILE__ ) . '/../maintenance/Maintenance.php' );
+
+require_once( 'PHPUnit/Runner/Version.php' );
+if( version_compare( PHPUnit_Runner_Version::id(), '3.5.0', '>=' ) ) {
+ # PHPUnit 3.5.0 introduced a nice autoloader based on class name
+ require_once( 'PHPUnit/Autoload.php' );
+} else {
+ # Keep the old pre PHPUnit 3.5.0 behaviour for compatibility
+ require_once( 'PHPUnit/TextUI/Command.php' );
+}
+
require_once( 'PHPUnit/Extensions/SeleniumTestCase.php' );
include_once( 'PHPUnit/Util/Log/JUnit.php' );
+
require_once( dirname( __FILE__ ) . "/selenium/SeleniumServerManager.php" );
class SeleniumTester extends Maintenance {
@@ -151,8 +164,8 @@ class SeleniumTester extends Maintenance {
$seleniumBrowsers,
$seleniumTestSuites,
$configFile );
- } else if ( !isset( $wgHooks['SeleniumSettings'] ) ) {
- $this->output("No command line configuration file or configuration hook found.\n");
+ } elseif ( !isset( $wgHooks['SeleniumSettings'] ) ) {
+ $this->output("No command line, configuration file or configuration hook found.\n");
SeleniumConfig::getSeleniumSettings( $seleniumSettings,
$seleniumBrowsers,
$seleniumTestSuites
@@ -167,8 +180,8 @@ class SeleniumTester extends Maintenance {
// State for starting/stopping the Selenium server has nothing to do with the Selenium
// class. Keep this state local to SeleniumTester class. Using getOption() is clumsy, but
// the Maintenance class does not have a setOption()
- if ( isset( $seleniumSettings['startserver'] ) ) $this->getOption( 'startserver', true );
- if ( isset( $seleniumSettings['stopserver'] ) ) $this->getOption( 'stopserver', true );
+ if ( ! isset( $seleniumSettings['startserver'] ) ) $this->getOption( 'startserver', true );
+ if ( ! isset( $seleniumSettings['stopserver'] ) ) $this->getOption( 'stopserver', true );
if ( !isset( $seleniumSettings['seleniumserverexecpath'] ) ) $seleniumSettings['seleniumserverexecpath'] = '';
$this->seleniumServerExecPath = $seleniumSettings['seleniumserverexecpath'];
@@ -217,4 +230,4 @@ class SeleniumTester extends Maintenance {
$maintClass = "SeleniumTester";
-require_once( DO_MAINTENANCE );
+require_once( RUN_MAINTENANCE_IF_MAIN );
diff --git a/tests/TestsAutoLoader.php b/tests/TestsAutoLoader.php
new file mode 100644
index 00000000..cccf7bf2
--- /dev/null
+++ b/tests/TestsAutoLoader.php
@@ -0,0 +1,33 @@
+<?php
+
+global $wgAutoloadClasses;
+$testFolder = dirname( __FILE__ );
+
+$wgAutoloadClasses += array(
+
+ //PHPUnit
+ 'MediaWikiTestCase' => "$testFolder/phpunit/MediaWikiTestCase.php",
+ 'MediaWikiPHPUnitCommand' => "$testFolder/phpunit/MediaWikiPHPUnitCommand.php",
+ 'MediaWikiLangTestCase' => "$testFolder/phpunit/MediaWikiLangTestCase.php",
+
+ //includes
+ 'BlockTest' => "$testFolder/phpunit/includes/BlockTest.php",
+
+ //API
+ 'ApiFormatTestBase' => "$testFolder/phpunit/includes/api/format/ApiFormatTestBase.php",
+ 'ApiTestCase' => "$testFolder/phpunit/includes/api/ApiTestCase.php",
+ 'ApiTestUser' => "$testFolder/phpunit/includes/api/ApiTestUser.php",
+ 'MockApi' => "$testFolder/phpunit/includes/api/ApiTestCase.php",
+ 'RandomImageGenerator' => "$testFolder/phpunit/includes/api/RandomImageGenerator.php",
+ 'UserWrapper' => "$testFolder/phpunit/includes/api/ApiTestCase.php",
+
+ //Parser
+ 'ParserTestFileIterator' => "$testFolder/phpunit/includes/parser/NewParserHelpers.php",
+
+ //Selenium
+ 'SeleniumTestConstants' => "$testFolder/selenium/SeleniumTestConstants.php",
+
+ //Generic providers
+ 'MediaWikiProvide' => "$testFolder/phpunit/includes/Providers.php",
+);
+
diff --git a/maintenance/tests/parser/ExtraParserTests.txt b/tests/parser/extraParserTests.txt
index 66b8032d..bef8f506 100644
--- a/maintenance/tests/parser/ExtraParserTests.txt
+++ b/tests/parser/extraParserTests.txt
Binary files differ
diff --git a/maintenance/tests/parser/parserTest.inc b/tests/parser/parserTest.inc
index c553550c..4b4c7f72 100644
--- a/maintenance/tests/parser/parserTest.inc
+++ b/tests/parser/parserTest.inc
@@ -21,11 +21,11 @@
* @todo Make this more independent of the configuration (and if possible the database)
* @todo document
* @file
- * @ingroup Maintenance
+ * @ingroup Testing
*/
/**
- * @ingroup Maintenance
+ * @ingroup Testing
*/
class ParserTest {
/**
@@ -49,6 +49,18 @@ class ParserTest {
private $databaseSetupDone = false;
/**
+ * Our connection to the database
+ * @var DatabaseBase
+ */
+ private $db;
+
+ /**
+ * Database clone helper
+ * @var CloneDatabase
+ */
+ private $dbClone;
+
+ /**
* string $oldTablePrefix Original table prefix
*/
private $oldTablePrefix;
@@ -64,7 +76,7 @@ class ParserTest {
* Sets terminal colorization and diff/quick modes depending on OS and
* command-line options (--color and --quick).
*/
- public function ParserTest( $options = array() ) {
+ public function __construct( $options = array() ) {
# Only colorize output if stdout is a terminal.
$this->color = !wfIsWindows() && posix_isatty( 1 );
@@ -122,9 +134,8 @@ class ParserTest {
static function setUp() {
global $wgParser, $wgParserConf, $IP, $messageMemc, $wgMemc, $wgDeferredUpdateList,
$wgUser, $wgLang, $wgOut, $wgRequest, $wgStyleDirectory, $wgEnableParserCache,
- $wgMessageCache, $wgUseDatabaseMessages, $wgMsgCacheExpiry, $parserMemc,
$wgNamespaceAliases, $wgNamespaceProtection, $wgLocalFileRepo,
- $wgThumbnailScriptPath, $wgScriptPath,
+ $parserMemc, $wgThumbnailScriptPath, $wgScriptPath,
$wgArticlePath, $wgStyleSheetPath, $wgScript, $wgStylePath;
$wgScript = '/index.php';
@@ -149,20 +160,18 @@ class ParserTest {
$wgEnableParserCache = false;
$wgDeferredUpdateList = array();
- $wgMemc = &wfGetMainCache();
- $messageMemc = &wfGetMessageCacheStorage();
- $parserMemc = &wfGetParserCacheStorage();
+ $wgMemc = wfGetMainCache();
+ $messageMemc = wfGetMessageCacheStorage();
+ $parserMemc = wfGetParserCacheStorage();
// $wgContLang = new StubContLang;
$wgUser = new User;
- $wgLang = new StubUserLang;
- $wgOut = new StubObject( 'wgOut', 'OutputPage' );
+ $context = new RequestContext;
+ $wgLang = $context->getLang();
+ $wgOut = $context->getOutput();
$wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
$wgRequest = new WebRequest;
- $wgMessageCache = new StubObject( 'wgMessageCache', 'MessageCache',
- array( $messageMemc, $wgUseDatabaseMessages,
- $wgMsgCacheExpiry ) );
if ( $wgStyleDirectory === false ) {
$wgStyleDirectory = "$IP/skins";
}
@@ -176,8 +185,6 @@ class ParserTest {
$options['setversion'] : SpecialVersion::getVersion();
} elseif ( isset( $options['compare'] ) ) {
$this->recorder = new DbTestPreviewer( $this );
- } elseif ( isset( $options['upload'] ) ) {
- $this->recorder = new RemoteTestRecorder( $this );
} else {
$this->recorder = new TestRecorder( $this );
}
@@ -241,8 +248,7 @@ class ParserTest {
if ( $fail ) {
echo "Test failed with seed {$this->fuzzSeed}\n";
echo "Input:\n";
- var_dump( $input );
- echo "\n\n";
+ printf( "string(%d) \"%s\"\n\n", strlen( $input ), $input );
echo "$exception\n";
} else {
$numSuccess++;
@@ -343,7 +349,7 @@ class ParserTest {
try {
$this->setupDatabase();
$ok = true;
-
+
foreach ( $filenames as $filename ) {
$tests = new TestFileIterator( $filename, $this );
$ok = $this->runTests( $tests ) && $ok;
@@ -437,7 +443,7 @@ class ParserTest {
if ( isset( $opts['pst'] ) ) {
$out = $parser->preSaveTransform( $input, $title, $user, $options );
} elseif ( isset( $opts['msg'] ) ) {
- $out = $parser->transformMsg( $input, $options );
+ $out = $parser->transformMsg( $input, $options, $title );
} elseif ( isset( $opts['section'] ) ) {
$section = $opts['section'];
$out = $parser->getSection( $input, $section );
@@ -584,8 +590,6 @@ class ParserTest {
* Ideally this should replace the global configuration entirely.
*/
private function setupGlobals( $opts = '', $config = '' ) {
- global $wgDBtype;
-
# Find out values for some special options.
$lang =
self::getOptionValue( 'language', $opts, 'en' );
@@ -615,7 +619,7 @@ class ParserTest {
'wgStyleSheetPath' => '/skins',
'wgSitename' => 'MediaWiki',
'wgLanguageCode' => $lang,
- 'wgDBprefix' => $wgDBtype != 'oracle' ? 'parsertest_' : 'pt_',
+ 'wgDBprefix' => $this->db->getType() != 'oracle' ? 'parsertest_' : 'pt_',
'wgRawHtml' => isset( $opts['rawhtml'] ),
'wgLang' => null,
'wgContLang' => null,
@@ -626,8 +630,6 @@ class ParserTest {
'wgNoFollowDomainExceptions' => array(),
'wgThumbnailScriptPath' => false,
'wgUseImageResize' => false,
- 'wgUseTeX' => isset( $opts['math'] ),
- 'wgMathDirectory' => $this->uploadDir . '/math',
'wgLocaltimezone' => 'UTC',
'wgAllowExternalImages' => true,
'wgUseTidy' => false,
@@ -650,6 +652,9 @@ class ParserTest {
'wgHtml5' => true,
'wgWellFormedXml' => true,
'wgAllowMicrodataAttributes' => true,
+ 'wgAdaptiveMessageCache' => true,
+ 'wgDisableLangConversion' => false,
+ 'wgDisableTitleConversion' => false,
);
if ( $config ) {
@@ -672,11 +677,14 @@ class ParserTest {
$GLOBALS[$var] = $val;
}
- $langObj = Language::factory( $lang );
- $GLOBALS['wgLang'] = $langObj;
- $GLOBALS['wgContLang'] = $langObj;
- $GLOBALS['wgMemc'] = new FakeMemCachedClient;
- $GLOBALS['wgOut'] = new OutputPage;
+ $GLOBALS['wgContLang'] = Language::factory( $lang );
+ $GLOBALS['wgMemc'] = new EmptyBagOStuff;
+
+ $context = new RequestContext();
+ $GLOBALS['wgLang'] = $context->getLang();
+ $GLOBALS['wgOut'] = $context->getOutput();
+
+ $GLOBALS['wgUser'] = new User();
global $wgHooks;
@@ -685,9 +693,6 @@ class ParserTest {
$wgHooks['ParserGetVariableValueTs'][] = 'ParserTest::getFakeTimestamp';
MagicWord::clearCache();
-
- global $wgUser;
- $wgUser = new User();
}
/**
@@ -695,18 +700,16 @@ class ParserTest {
* Some of these probably aren't necessary.
*/
private function listTables() {
- global $wgDBtype;
-
$tables = array( 'user', 'user_properties', 'page', 'page_restrictions',
'protected_titles', 'revision', 'text', 'pagelinks', 'imagelinks',
'categorylinks', 'templatelinks', 'externallinks', 'langlinks', 'iwlinks',
'site_stats', 'hitcounter', 'ipblocks', 'image', 'oldimage',
- 'recentchanges', 'watchlist', 'math', 'interwiki', 'logging',
+ 'recentchanges', 'watchlist', 'interwiki', 'logging',
'querycache', 'objectcache', 'job', 'l10n_cache', 'redirect', 'querycachetwo',
'archive', 'user_groups', 'page_props', 'category', 'msg_resource', 'msg_resource_links'
);
- if ( in_array( $wgDBtype, array( 'mysql', 'sqlite', 'oracle' ) ) )
+ if ( in_array( $this->db->getType(), array( 'mysql', 'sqlite', 'oracle' ) ) )
array_push( $tables, 'searchindex' );
// Allow extensions to add to the list of tables to duplicate;
@@ -723,13 +726,16 @@ class ParserTest {
* the db will be visible to later tests in the run.
*/
public function setupDatabase() {
- global $wgDBprefix, $wgDBtype;
+ global $wgDBprefix;
if ( $this->databaseSetupDone ) {
return;
}
- if ( $wgDBprefix === 'parsertest_' || ( $wgDBtype == 'oracle' && $wgDBprefix === 'pt_' ) ) {
+ $this->db = wfGetDB( DB_MASTER );
+ $dbType = $this->db->getType();
+
+ if ( $wgDBprefix === 'parsertest_' || ( $dbType == 'oracle' && $wgDBprefix === 'pt_' ) ) {
throw new MWException( 'setupDatabase should be called before setupGlobals' );
}
@@ -737,60 +743,38 @@ class ParserTest {
$this->oldTablePrefix = $wgDBprefix;
# SqlBagOStuff broke when using temporary tables on r40209 (bug 15892).
- # It seems to have been fixed since (r55079?).
- # If it fails, $wgCaches[CACHE_DB] = new HashBagOStuff(); should work around it.
+ # It seems to have been fixed since (r55079?), but regressed at some point before r85701.
+ # This works around it for now...
+ ObjectCache::$instances[CACHE_DB] = new HashBagOStuff;
# CREATE TEMPORARY TABLE breaks if there is more than one server
if ( wfGetLB()->getServerCount() != 1 ) {
$this->useTemporaryTables = false;
}
- $temporary = $this->useTemporaryTables || $wgDBtype == 'postgres';
-
- $db = wfGetDB( DB_MASTER );
+ $temporary = $this->useTemporaryTables || $dbType == 'postgres';
$tables = $this->listTables();
+ $prefix = $dbType != 'oracle' ? 'parsertest_' : 'pt_';
- foreach ( $tables as $tbl ) {
- # Clean up from previous aborted run. So that table escaping
- # works correctly across DB engines, we need to change the pre-
- # fix back and forth so tableName() works right.
- $this->changePrefix( $this->oldTablePrefix );
- $oldTableName = $db->tableName( $tbl );
- $this->changePrefix( $wgDBtype != 'oracle' ? 'parsertest_' : 'pt_' );
- $newTableName = $db->tableName( $tbl );
-
- if ( $wgDBtype == 'mysql' ) {
- $db->query( "DROP TABLE IF EXISTS $newTableName" );
- } elseif ( in_array( $wgDBtype, array( 'postgres', 'oracle' ) ) ) {
- /* DROPs wouldn't work due to Foreign Key Constraints (bug 14990, r58669)
- * Use "DROP TABLE IF EXISTS $newTableName CASCADE" for postgres? That
- * syntax would also work for mysql.
- */
- } elseif ( $db->tableExists( $tbl ) ) {
- $db->query( "DROP TABLE $newTableName" );
- }
+ $this->dbClone = new CloneDatabase( $this->db, $this->listTables(), $prefix );
+ $this->dbClone->useTemporaryTables( $temporary );
+ $this->dbClone->cloneTableStructure();
- # Create new table
- $db->duplicateTableStructure( $oldTableName, $newTableName, $temporary );
- }
-
- if ( $wgDBtype == 'oracle' )
- $db->query( 'BEGIN FILL_WIKI_INFO; END;' );
+ if ( $dbType == 'oracle' )
+ $this->db->query( 'BEGIN FILL_WIKI_INFO; END;' );
- $this->changePrefix( $wgDBtype != 'oracle' ? 'parsertest_' : 'pt_' );
-
- if ( $wgDBtype == 'oracle' ) {
+ if ( $dbType == 'oracle' ) {
# Insert 0 user to prevent FK violations
# Anonymous user
- $db->insert( 'user', array(
+ $this->db->insert( 'user', array(
'user_id' => 0,
'user_name' => 'Anonymous' ) );
}
# Hack: insert a few Wikipedia in-project interwiki prefixes,
# for testing inter-language links
- $db->insert( 'interwiki', array(
+ $this->db->insert( 'interwiki', array(
array( 'iw_prefix' => 'wikipedia',
'iw_url' => 'http://en.wikipedia.org/wiki/$1',
'iw_api' => '',
@@ -825,14 +809,13 @@ class ParserTest {
# Update certain things in site_stats
- $db->insert( 'site_stats', array( 'ss_row_id' => 1, 'ss_images' => 2, 'ss_good_articles' => 1 ) );
+ $this->db->insert( 'site_stats', array( 'ss_row_id' => 1, 'ss_images' => 2, 'ss_good_articles' => 1 ) );
# Reinitialise the LocalisationCache to match the database state
Language::getLocalisationCache()->unloadAll();
- # Make a new message cache
- global $wgMessageCache, $wgMemc;
- $wgMessageCache = new MessageCache( $wgMemc, true, 3600 );
+ # Clear the message cache
+ MessageCache::singleton()->clear();
$this->uploadDir = $this->setupUploadDir();
$user = User::createNew( 'WikiSysop' );
@@ -847,7 +830,7 @@ class ParserTest {
'metadata' => serialize( array() ),
'sha1' => wfBaseConvert( '', 16, 36, 31 ),
'fileExists' => true
- ), $db->timestamp( '20010115123500' ), $user );
+ ), $this->db->timestamp( '20010115123500' ), $user );
# This image will be blacklisted in [[MediaWiki:Bad image list]]
$image = wfLocalFile( Title::makeTitle( NS_FILE, 'Bad.jpg' ) );
@@ -861,54 +844,41 @@ class ParserTest {
'metadata' => serialize( array() ),
'sha1' => wfBaseConvert( '', 16, 36, 31 ),
'fileExists' => true
- ), $db->timestamp( '20010115123500' ), $user );
- }
-
- /**
- * Change the table prefix on all open DB connections/
- */
- protected function changePrefix( $prefix ) {
- global $wgDBprefix;
- wfGetLBFactory()->forEachLB( array( $this, 'changeLBPrefix' ), array( $prefix ) );
- $wgDBprefix = $prefix;
- }
-
- public function changeLBPrefix( $lb, $prefix ) {
- $lb->forEachOpenConnection( array( $this, 'changeDBPrefix' ), array( $prefix ) );
- }
-
- public function changeDBPrefix( $db, $prefix ) {
- $db->tablePrefix( $prefix );
+ ), $this->db->timestamp( '20010115123500' ), $user );
}
public function teardownDatabase() {
- global $wgDBtype;
-
if ( !$this->databaseSetupDone ) {
$this->teardownGlobals();
return;
}
$this->teardownUploadDir( $this->uploadDir );
- $this->changePrefix( $this->oldTablePrefix );
+ $this->dbClone->destroy();
$this->databaseSetupDone = false;
if ( $this->useTemporaryTables ) {
+ if( $this->db->getType() == 'sqlite' ) {
+ # Under SQLite the searchindex table is virtual and need
+ # to be explicitly destroyed. See bug 29912
+ # See also MediaWikiTestCase::destroyDB()
+ wfDebug( __METHOD__ . " explicitly destroying sqlite virtual table parsertest_searchindex\n" );
+ $this->db->query( "DROP TABLE `parsertest_searchindex`" );
+ }
# Don't need to do anything
$this->teardownGlobals();
return;
}
$tables = $this->listTables();
- $db = wfGetDB( DB_MASTER );
foreach ( $tables as $table ) {
- $sql = $wgDBtype == 'oracle' ? "DROP TABLE pt_$table DROP CONSTRAINTS" : "DROP TABLE `parsertest_$table`";
- $db->query( $sql );
+ $sql = $this->db->getType() == 'oracle' ? "DROP TABLE pt_$table DROP CONSTRAINTS" : "DROP TABLE `parsertest_$table`";
+ $this->db->query( $sql );
}
- if ( $wgDBtype == 'oracle' )
- $db->query( 'BEGIN FILL_WIKI_INFO; END;' );
+ if ( $this->db->getType() == 'oracle' )
+ $this->db->query( 'BEGIN FILL_WIKI_INFO; END;' );
$this->teardownGlobals();
}
@@ -1094,7 +1064,9 @@ class ParserTest {
* @return String
*/
protected function quickDiff( $input, $output, $inFileTail = 'expected', $outFileTail = 'actual' ) {
- $prefix = wfTempDir() . "/mwParser-" . mt_rand();
+ # Windows, or at least the fc utility, is retarded
+ $slash = wfIsWindows() ? '\\' : '/';
+ $prefix = wfTempDir() . "{$slash}mwParser-" . mt_rand();
$infile = "$prefix-$inFileTail";
$this->dumpToFile( $input, $infile );
@@ -1102,7 +1074,12 @@ class ParserTest {
$outfile = "$prefix-$outFileTail";
$this->dumpToFile( $output, $outfile );
- $diff = `diff -au $infile $outfile`;
+ $shellInfile = wfEscapeShellArg($infile);
+ $shellOutfile = wfEscapeShellArg($outfile);
+
+ $diff = wfIsWindows()
+ ? `fc $shellInfile $shellOutfile`
+ : `diff -au $shellInfile $shellOutfile`;
unlink( $infile );
unlink( $outfile );
@@ -1166,18 +1143,17 @@ class ParserTest {
$title = Title::newFromText( $name );
if ( is_null( $title ) ) {
- wfDie( "invalid title ('$name' => '$title') at line $line\n" );
+ throw new MWException( "invalid title ('$name' => '$title') at line $line\n" );
}
$aid = $title->getArticleID( Title::GAID_FOR_UPDATE );
if ( $aid != 0 ) {
- debug_print_backtrace();
- wfDie( "duplicate article '$name' at line $line\n" );
+ throw new MWException( "duplicate article '$name' at line $line\n" );
}
$art = new Article( $title );
- $art->insertNewArticle( $text, '', false, false );
+ $art->doEdit( $text, '', EDIT_NEW );
$wgCapitalLinks = $oldCapitalLinks;
}
@@ -1234,7 +1210,6 @@ class ParserTest {
*
* @param $text String: the text to tidy
* @return String
- * @static
*/
private function tidy( $text ) {
global $wgUseTidy;
diff --git a/maintenance/tests/parser/parserTests.txt b/tests/parser/parserTests.txt
index b3fa560c..6ea832e3 100644
--- a/maintenance/tests/parser/parserTests.txt
+++ b/tests/parser/parserTests.txt
@@ -5,25 +5,25 @@
# The syntax should be fairly self-explanatory.
#
# Currently supported test options:
-# One of the following three:
+# One of the following three:
#
-# (default) generate HTML output
-# pst apply pre-save transform
-# msg apply message transform
+# (default) generate HTML output
+# pst apply pre-save transform
+# msg apply message transform
#
-# Plus any combination of these:
+# Plus any combination of these:
#
-# cat add category links
-# ill add inter-language links
-# subpage enable subpages (disabled by default)
-# noxml don't check for XML well formdness
-# title=[[XXX]] run test using article title XXX
-# language=XXX set content language to XXX for this test
-# variant=XXX set the variant of language for this test (eg zh-tw)
-# disabled do not run test
-# showtitle make the first line the title
-# comment run through Linker::formatComment() instead of main parser
-# local format section links in edit comment text as local links
+# cat add category links
+# ill add inter-language links
+# subpage enable subpages (disabled by default)
+# noxml don't check for XML well formdness
+# title=[[XXX]] run test using article title XXX
+# language=XXX set content language to XXX for this test
+# variant=XXX set the variant of language for this test (eg zh-tw)
+# disabled do not run test
+# showtitle make the first line the title
+# comment run through Linker::formatComment() instead of main parser
+# local format section links in edit comment text as local links
#
# For testing purposes, temporary articles can created:
# !!article / NAMESPACE:TITLE / !!text / ARTICLE TEXT / !!endarticle
@@ -518,7 +518,7 @@ Definition list with URL link
!! input
; http://example.com/ : definition
!! result
-<dl><dt> <a href="http://example.com/" class="external free" rel="nofollow">http://example.com/</a>&#160;</dt><dd> definition
+<dl><dt> <a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a>&#160;</dt><dd> definition
</dd></dl>
!! end
@@ -528,7 +528,7 @@ Definition list with bracketed URL link
!! input
;[http://www.example.com/ Example]:Something about it
!! result
-<dl><dt><a href="http://www.example.com/" class="external text" rel="nofollow">Example</a></dt><dd>Something about it
+<dl><dt><a rel="nofollow" class="external text" href="http://www.example.com/">Example</a></dt><dd>Something about it
</dd></dl>
!! end
@@ -549,7 +549,7 @@ Definition list with news link containing colon
!! input
; news:alt.wikipedia.rox: This isn't even a real newsgroup!
!! result
-<dl><dt> <a href="news:alt.wikipedia.rox" class="external free" rel="nofollow">news:alt.wikipedia.rox</a></dt><dd> This isn't even a real newsgroup!
+<dl><dt> <a rel="nofollow" class="external free" href="news:alt.wikipedia.rox">news:alt.wikipedia.rox</a></dt><dd> This isn't even a real newsgroup!
</dd></dl>
!! end
@@ -559,7 +559,7 @@ Malformed definition list with colon
!! input
; news:alt.wikipedia.rox -- don't crash or enter an infinite loop
!! result
-<dl><dt> <a href="news:alt.wikipedia.rox" class="external free" rel="nofollow">news:alt.wikipedia.rox</a> -- don't crash or enter an infinite loop
+<dl><dt> <a rel="nofollow" class="external free" href="news:alt.wikipedia.rox">news:alt.wikipedia.rox</a> -- don't crash or enter an infinite loop
</dt></dl>
!! end
@@ -569,7 +569,7 @@ Definition lists: colon in external link text
!! input
; [http://www.wikipedia2.org/ Wikipedia : The Next Generation]: OK, I made that up
!! result
-<dl><dt> <a href="http://www.wikipedia2.org/" class="external text" rel="nofollow">Wikipedia&#160;: The Next Generation</a></dt><dd> OK, I made that up
+<dl><dt> <a rel="nofollow" class="external text" href="http://www.wikipedia2.org/">Wikipedia&#160;: The Next Generation</a></dt><dd> OK, I made that up
</dd></dl>
!! end
@@ -595,6 +595,25 @@ Definition lists: self-closed tag
!! end
+!! test
+Bug 11748: Literal closing tags
+!! options
+disabled
+!! input
+<dl>
+<dt>test 1</dt>
+<dd>test test test test test</dd>
+<dt>test 2</dt>
+<dd>test test test test test</dd>
+</dl>
+!! result
+<dl>
+<dt>test 1</dt>
+<dd>test test test test test</dd>
+<dt>test 2</dt>
+<dd>test test test test test</dd>
+</dl>
+!! end
###
### External links
@@ -604,7 +623,7 @@ External links: non-bracketed
!! input
Non-bracketed: http://example.com
!! result
-<p>Non-bracketed: <a href="http://example.com" class="external free" rel="nofollow">http://example.com</a>
+<p>Non-bracketed: <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
</p>
!! end
@@ -615,9 +634,9 @@ Numbered: [http://example.com]
Numbered: [http://example.net]
Numbered: [http://example.com]
!! result
-<p>Numbered: <a href="http://example.com" class="external autonumber" rel="nofollow">[1]</a>
-Numbered: <a href="http://example.net" class="external autonumber" rel="nofollow">[2]</a>
-Numbered: <a href="http://example.com" class="external autonumber" rel="nofollow">[3]</a>
+<p>Numbered: <a rel="nofollow" class="external autonumber" href="http://example.com">[1]</a>
+Numbered: <a rel="nofollow" class="external autonumber" href="http://example.net">[2]</a>
+Numbered: <a rel="nofollow" class="external autonumber" href="http://example.com">[3]</a>
</p>
!!end
@@ -626,7 +645,7 @@ External links: specified text
!! input
Specified text: [http://example.com link]
!! result
-<p>Specified text: <a href="http://example.com" class="external text" rel="nofollow">link</a>
+<p>Specified text: <a rel="nofollow" class="external text" href="http://example.com">link</a>
</p>
!!end
@@ -635,7 +654,7 @@ External links: trail
!! input
Linktrails should not work for external links: [http://example.com link]s
!! result
-<p>Linktrails should not work for external links: <a href="http://example.com" class="external text" rel="nofollow">link</a>s
+<p>Linktrails should not work for external links: <a rel="nofollow" class="external text" href="http://example.com">link</a>s
</p>
!! end
@@ -644,7 +663,7 @@ External links: dollar sign in URL
!! input
http://example.com/1$2345
!! result
-<p><a href="http://example.com/1$2345" class="external free" rel="nofollow">http://example.com/1$2345</a>
+<p><a rel="nofollow" class="external free" href="http://example.com/1$2345">http://example.com/1$2345</a>
</p>
!! end
@@ -653,7 +672,7 @@ External links: dollar sign in URL (named)
!! input
[http://example.com/1$2345]
!! result
-<p><a href="http://example.com/1$2345" class="external autonumber" rel="nofollow">[1]</a>
+<p><a rel="nofollow" class="external autonumber" href="http://example.com/1$2345">[1]</a>
</p>
!!end
@@ -662,7 +681,7 @@ External links: open square bracket forbidden in URL (bug 4377)
!! input
http://example.com/1[2345
!! result
-<p><a href="http://example.com/1" class="external free" rel="nofollow">http://example.com/1</a>[2345
+<p><a rel="nofollow" class="external free" href="http://example.com/1">http://example.com/1</a>[2345
</p>
!! end
@@ -671,7 +690,7 @@ External links: open square bracket forbidden in URL (named) (bug 4377)
!! input
[http://example.com/1[2345]
!! result
-<p><a href="http://example.com/1" class="external text" rel="nofollow">[2345</a>
+<p><a rel="nofollow" class="external text" href="http://example.com/1">[2345</a>
</p>
!!end
@@ -680,7 +699,7 @@ External links: nowiki in URL link text (bug 6230)
!!input
[http://example.com/ <nowiki>''example site''</nowiki>]
!! result
-<p><a href="http://example.com/" class="external text" rel="nofollow">''example site''</a>
+<p><a rel="nofollow" class="external text" href="http://example.com/">''example site''</a>
</p>
!! end
@@ -690,12 +709,48 @@ External links: newline forbidden in text (bug 6230 regression check)
[http://example.com/ first
second]
!! result
-<p>[<a href="http://example.com/" class="external free" rel="nofollow">http://example.com/</a> first
+<p>[<a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a> first
second]
</p>
!!end
!! test
+External links: protocol-relative URL in brackets
+!! input
+[//example.com/ Test]
+!! result
+<p><a rel="nofollow" class="external text" href="//example.com/">Test</a>
+</p>
+!! end
+
+!! test
+External links: protocol-relative URL in brackets without text
+!! input
+[//example.com]
+!! result
+<p><a rel="nofollow" class="external autonumber" href="//example.com">[1]</a>
+</p>
+!! end
+
+!! test
+External links: protocol-relative URL in free text is left alone
+!! input
+//example.com/Foo
+!! result
+<p>//example.com/Foo
+</p>
+!!end
+
+!! test
+External links: protocol-relative URL in the middle of a word is left alone (bug 30269)
+!! input
+foo//example.com/Foo
+!! result
+<p>foo//example.com/Foo
+</p>
+!! end
+
+!! test
External image
!! input
External image: http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png
@@ -718,7 +773,7 @@ Link to non-http image, no img tag
!! input
Link to non-http image, no img tag: ftp://example.com/test.jpg
!! result
-<p>Link to non-http image, no img tag: <a href="ftp://example.com/test.jpg" class="external free" rel="nofollow">ftp://example.com/test.jpg</a>
+<p>Link to non-http image, no img tag: <a rel="nofollow" class="external free" href="ftp://example.com/test.jpg">ftp://example.com/test.jpg</a>
</p>
!! end
@@ -727,7 +782,7 @@ External links: terminating separator
!! input
Terminating separator: http://example.com/thing,
!! result
-<p>Terminating separator: <a href="http://example.com/thing" class="external free" rel="nofollow">http://example.com/thing</a>,
+<p>Terminating separator: <a rel="nofollow" class="external free" href="http://example.com/thing">http://example.com/thing</a>,
</p>
!! end
@@ -736,7 +791,7 @@ External links: intervening separator
!! input
Intervening separator: http://example.com/1,2,3
!! result
-<p>Intervening separator: <a href="http://example.com/1,2,3" class="external free" rel="nofollow">http://example.com/1,2,3</a>
+<p>Intervening separator: <a rel="nofollow" class="external free" href="http://example.com/1,2,3">http://example.com/1,2,3</a>
</p>
!! end
@@ -745,7 +800,7 @@ External links: old bug with URL in query
!! input
Old bug with URL in query: [http://example.com/thing?url=http://example.com link]
!! result
-<p>Old bug with URL in query: <a href="http://example.com/thing?url=http://example.com" class="external text" rel="nofollow">link</a>
+<p>Old bug with URL in query: <a rel="nofollow" class="external text" href="http://example.com/thing?url=http://example.com">link</a>
</p>
!! end
@@ -754,7 +809,7 @@ External links: old URL-in-URL bug, mixed protocols
!! input
And again with mixed protocols: [ftp://example.com?url=http://example.com link]
!! result
-<p>And again with mixed protocols: <a href="ftp://example.com?url=http://example.com" class="external text" rel="nofollow">link</a>
+<p>And again with mixed protocols: <a rel="nofollow" class="external text" href="ftp://example.com?url=http://example.com">link</a>
</p>
!!end
@@ -763,7 +818,7 @@ External links: URL in text
!! input
URL in text: [http://example.com http://example.com]
!! result
-<p>URL in text: <a href="http://example.com" class="external free" rel="nofollow">http://example.com</a>
+<p>URL in text: <a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>
</p>
!! end
@@ -772,7 +827,7 @@ External links: Clickable images
!! input
ja-style clickable images: [http://example.com http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png]
!! result
-<p>ja-style clickable images: <a href="http://example.com" class="external text" rel="nofollow"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" /></a>
+<p>ja-style clickable images: <a rel="nofollow" class="external text" href="http://example.com"><img src="http://meta.wikimedia.org/upload/f/f1/Ncwikicol.png" alt="Ncwikicol.png" /></a>
</p>
!!end
@@ -781,7 +836,7 @@ External links: raw ampersand
!! input
Old &amp; use: http://x&y
!! result
-<p>Old &amp; use: <a href="http://x&amp;y" class="external free" rel="nofollow">http://x&amp;y</a>
+<p>Old &amp; use: <a rel="nofollow" class="external free" href="http://x&amp;y">http://x&amp;y</a>
</p>
!! end
@@ -790,7 +845,7 @@ External links: encoded ampersand
!! input
Old &amp; use: http://x&amp;y
!! result
-<p>Old &amp; use: <a href="http://x&amp;y" class="external free" rel="nofollow">http://x&amp;y</a>
+<p>Old &amp; use: <a rel="nofollow" class="external free" href="http://x&amp;y">http://x&amp;y</a>
</p>
!! end
@@ -799,7 +854,7 @@ External links: encoded equals (bug 6102)
!! input
http://example.com/?foo&#61;bar
!! result
-<p><a href="http://example.com/?foo=bar" class="external free" rel="nofollow">http://example.com/?foo=bar</a>
+<p><a rel="nofollow" class="external free" href="http://example.com/?foo=bar">http://example.com/?foo=bar</a>
</p>
!! end
@@ -808,7 +863,7 @@ External links: [raw ampersand]
!! input
Old &amp; use: [http://x&y]
!! result
-<p>Old &amp; use: <a href="http://x&amp;y" class="external autonumber" rel="nofollow">[1]</a>
+<p>Old &amp; use: <a rel="nofollow" class="external autonumber" href="http://x&amp;y">[1]</a>
</p>
!! end
@@ -817,7 +872,7 @@ External links: [encoded ampersand]
!! input
Old &amp; use: [http://x&amp;y]
!! result
-<p>Old &amp; use: <a href="http://x&amp;y" class="external autonumber" rel="nofollow">[1]</a>
+<p>Old &amp; use: <a rel="nofollow" class="external autonumber" href="http://x&amp;y">[1]</a>
</p>
!! end
@@ -826,7 +881,7 @@ External links: [encoded equals] (bug 6102)
!! input
[http://example.com/?foo&#61;bar]
!! result
-<p><a href="http://example.com/?foo=bar" class="external autonumber" rel="nofollow">[1]</a>
+<p><a rel="nofollow" class="external autonumber" href="http://example.com/?foo=bar">[1]</a>
</p>
!! end
@@ -835,7 +890,7 @@ External links: [IDN ignored character reference in hostname; strip it right off
!! input
[http://e&zwnj;xample.com/]
!! result
-<p><a href="http://example.com/" class="external autonumber" rel="nofollow">[1]</a>
+<p><a rel="nofollow" class="external autonumber" href="http://example.com/">[1]</a>
</p>
!! end
@@ -844,7 +899,7 @@ External links: IDN ignored character reference in hostname; strip it right off
!! input
http://e&zwnj;xample.com/
!! result
-<p><a href="http://example.com/" class="external free" rel="nofollow">http://example.com/</a>
+<p><a rel="nofollow" class="external free" href="http://example.com/">http://example.com/</a>
</p>
!! end
@@ -853,7 +908,7 @@ External links: www.jpeg.org (bug 554)
!! input
http://www.jpeg.org
!!result
-<p><a href="http://www.jpeg.org" class="external free" rel="nofollow">http://www.jpeg.org</a>
+<p><a rel="nofollow" class="external free" href="http://www.jpeg.org">http://www.jpeg.org</a>
</p>
!! end
@@ -862,7 +917,7 @@ External links: URL within URL (original bug 2)
!! input
[http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp]
!! result
-<p><a href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp" class="external autonumber" rel="nofollow">[1]</a>
+<p><a rel="nofollow" class="external autonumber" href="http://www.unausa.org/newindex.asp?place=http://www.unausa.org/programs/mun.asp">[1]</a>
</p>
!! end
@@ -871,7 +926,7 @@ BUG 361: URL inside bracketed URL
!! input
[http://www.example.com/foo http://www.example.com/bar]
!! result
-<p><a href="http://www.example.com/foo" class="external text" rel="nofollow">http://www.example.com/bar</a>
+<p><a rel="nofollow" class="external text" href="http://www.example.com/foo">http://www.example.com/bar</a>
</p>
!! end
@@ -880,7 +935,7 @@ BUG 361: URL within URL, not bracketed
!! input
http://www.example.com/foo?=http://www.example.com/bar
!! result
-<p><a href="http://www.example.com/foo?=http://www.example.com/bar" class="external free" rel="nofollow">http://www.example.com/foo?=http://www.example.com/bar</a>
+<p><a rel="nofollow" class="external free" href="http://www.example.com/foo?=http://www.example.com/bar">http://www.example.com/foo?=http://www.example.com/bar</a>
</p>
!! end
@@ -889,7 +944,7 @@ BUG 289: ">"-token in URL-tail
!! input
http://www.example.com/<hello>
!! result
-<p><a href="http://www.example.com/" class="external free" rel="nofollow">http://www.example.com/</a>&lt;hello&gt;
+<p><a rel="nofollow" class="external free" href="http://www.example.com/">http://www.example.com/</a>&lt;hello&gt;
</p>
!!end
@@ -898,7 +953,7 @@ BUG 289: literal ">"-token in URL-tail
!! input
http://www.example.com/<b>html</b>
!! result
-<p><a href="http://www.example.com/" class="external free" rel="nofollow">http://www.example.com/</a><b>html</b>
+<p><a rel="nofollow" class="external free" href="http://www.example.com/">http://www.example.com/</a><b>html</b>
</p>
!!end
@@ -907,7 +962,7 @@ BUG 289: ">"-token in bracketed URL
!! input
[http://www.example.com/<hello> stuff]
!! result
-<p><a href="http://www.example.com/" class="external text" rel="nofollow">&lt;hello&gt; stuff</a>
+<p><a rel="nofollow" class="external text" href="http://www.example.com/">&lt;hello&gt; stuff</a>
</p>
!!end
@@ -916,7 +971,7 @@ BUG 289: literal ">"-token in bracketed URL
!! input
[http://www.example.com/<b>html</b> stuff]
!! result
-<p><a href="http://www.example.com/" class="external text" rel="nofollow"><b>html</b> stuff</a>
+<p><a rel="nofollow" class="external text" href="http://www.example.com/"><b>html</b> stuff</a>
</p>
!!end
@@ -925,7 +980,7 @@ BUG 289: literal double quote at end of URL
!! input
http://www.example.com/"hello"
!! result
-<p><a href="http://www.example.com/" class="external free" rel="nofollow">http://www.example.com/</a>"hello"
+<p><a rel="nofollow" class="external free" href="http://www.example.com/">http://www.example.com/</a>"hello"
</p>
!!end
@@ -934,7 +989,7 @@ BUG 289: literal double quote in bracketed URL
!! input
[http://www.example.com/"hello" stuff]
!! result
-<p><a href="http://www.example.com/" class="external text" rel="nofollow">"hello" stuff</a>
+<p><a rel="nofollow" class="external text" href="http://www.example.com/">"hello" stuff</a>
</p>
!!end
@@ -943,7 +998,7 @@ External links: multiple legal whitespace is fine, Magnus. Don't break it please
!! input
[http://www.example.com test]
!! result
-<p><a href="http://www.example.com" class="external text" rel="nofollow">test</a>
+<p><a rel="nofollow" class="external text" href="http://www.example.com">test</a>
</p>
!! end
@@ -952,7 +1007,7 @@ External links: wiki links within external link (Bug 3695)
!! input
[http://example.com [[wikilink]] embedded in ext link]
!! result
-<p><a href="http://example.com" class="external text" rel="nofollow"></a><a href="/index.php?title=Wikilink&amp;action=edit&amp;redlink=1" class="new" title="Wikilink (page does not exist)">wikilink</a><a href="http://example.com" class="external text" rel="nofollow"> embedded in ext link</a>
+<p><a rel="nofollow" class="external text" href="http://example.com"></a><a href="/index.php?title=Wikilink&amp;action=edit&amp;redlink=1" class="new" title="Wikilink (page does not exist)">wikilink</a><a rel="nofollow" class="external text" href="http://example.com"> embedded in ext link</a>
</p>
!! end
@@ -977,11 +1032,11 @@ Bug 2702: Mismatched <i>, <b> and <a> tags are invalid
''Something [http://example.com mixed''''', even bold]'''
'''''Now [http://example.com both''''']
!! result
-<p><a href="http://example.com" class="external text" rel="nofollow"><i>text</i></a>
-<a href="http://example.com" class="external text" rel="nofollow"><b>text</b></a>
-<i>Something </i><a href="http://example.com" class="external text" rel="nofollow"><i>in italic</i></a>
-<i>Something </i><a href="http://example.com" class="external text" rel="nofollow"><i>mixed</i><b>, even bold</b></a>
-<i><b>Now </b></i><a href="http://example.com" class="external text" rel="nofollow"><i><b>both</b></i></a>
+<p><a rel="nofollow" class="external text" href="http://example.com"><i>text</i></a>
+<a rel="nofollow" class="external text" href="http://example.com"><b>text</b></a>
+<i>Something </i><a rel="nofollow" class="external text" href="http://example.com"><i>in italic</i></a>
+<i>Something </i><a rel="nofollow" class="external text" href="http://example.com"><i>mixed</i><b>, even bold</b></a>
+<i><b>Now </b></i><a rel="nofollow" class="external text" href="http://example.com"><i><b>both</b></i></a>
</p>
!! end
@@ -991,7 +1046,7 @@ Bug 4781: %26 in URL
!! input
http://www.example.com/?title=AT%26T
!! result
-<p><a href="http://www.example.com/?title=AT%26T" class="external free" rel="nofollow">http://www.example.com/?title=AT%26T</a>
+<p><a rel="nofollow" class="external free" href="http://www.example.com/?title=AT%26T">http://www.example.com/?title=AT%26T</a>
</p>
!! end
@@ -1000,7 +1055,7 @@ Bug 4781, 5267: %26 in URL
!! input
http://www.example.com/?title=100%25_Bran
!! result
-<p><a href="http://www.example.com/?title=100%25_Bran" class="external free" rel="nofollow">http://www.example.com/?title=100%25_Bran</a>
+<p><a rel="nofollow" class="external free" href="http://www.example.com/?title=100%25_Bran">http://www.example.com/?title=100%25_Bran</a>
</p>
!! end
@@ -1009,7 +1064,7 @@ Bug 4781, 5267: %28, %29 in URL
!! input
http://www.example.com/?title=Ben-Hur_%281959_film%29
!! result
-<p><a href="http://www.example.com/?title=Ben-Hur_%281959_film%29" class="external free" rel="nofollow">http://www.example.com/?title=Ben-Hur_%281959_film%29</a>
+<p><a rel="nofollow" class="external free" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">http://www.example.com/?title=Ben-Hur_%281959_film%29</a>
</p>
!! end
@@ -1019,7 +1074,7 @@ Bug 4781: %26 in autonumber URL
!! input
[http://www.example.com/?title=AT%26T]
!! result
-<p><a href="http://www.example.com/?title=AT%26T" class="external autonumber" rel="nofollow">[1]</a>
+<p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=AT%26T">[1]</a>
</p>
!! end
@@ -1028,7 +1083,7 @@ Bug 4781, 5267: %26 in autonumber URL
!! input
[http://www.example.com/?title=100%25_Bran]
!! result
-<p><a href="http://www.example.com/?title=100%25_Bran" class="external autonumber" rel="nofollow">[1]</a>
+<p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=100%25_Bran">[1]</a>
</p>
!! end
@@ -1037,7 +1092,7 @@ Bug 4781, 5267: %28, %29 in autonumber URL
!! input
[http://www.example.com/?title=Ben-Hur_%281959_film%29]
!! result
-<p><a href="http://www.example.com/?title=Ben-Hur_%281959_film%29" class="external autonumber" rel="nofollow">[1]</a>
+<p><a rel="nofollow" class="external autonumber" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">[1]</a>
</p>
!! end
@@ -1047,7 +1102,7 @@ Bug 4781: %26 in bracketed URL
!! input
[http://www.example.com/?title=AT%26T link]
!! result
-<p><a href="http://www.example.com/?title=AT%26T" class="external text" rel="nofollow">link</a>
+<p><a rel="nofollow" class="external text" href="http://www.example.com/?title=AT%26T">link</a>
</p>
!! end
@@ -1056,7 +1111,7 @@ Bug 4781, 5267: %26 in bracketed URL
!! input
[http://www.example.com/?title=100%25_Bran link]
!! result
-<p><a href="http://www.example.com/?title=100%25_Bran" class="external text" rel="nofollow">link</a>
+<p><a rel="nofollow" class="external text" href="http://www.example.com/?title=100%25_Bran">link</a>
</p>
!! end
@@ -1065,7 +1120,7 @@ Bug 4781, 5267: %28, %29 in bracketed URL
!! input
[http://www.example.com/?title=Ben-Hur_%281959_film%29 link]
!! result
-<p><a href="http://www.example.com/?title=Ben-Hur_%281959_film%29" class="external text" rel="nofollow">link</a>
+<p><a rel="nofollow" class="external text" href="http://www.example.com/?title=Ben-Hur_%281959_film%29">link</a>
</p>
!! end
@@ -1074,7 +1129,7 @@ External link containing double-single-quotes in text '' (bug 4598 sanity check)
!! input
Some [http://example.com/ pretty ''italics'' and stuff]!
!! result
-<p>Some <a href="http://example.com/" class="external text" rel="nofollow">pretty <i>italics</i> and stuff</a>!
+<p>Some <a rel="nofollow" class="external text" href="http://example.com/">pretty <i>italics</i> and stuff</a>!
</p>
!! end
@@ -1083,7 +1138,7 @@ External link containing double-single-quotes in text embedded in italics (bug 4
!! input
''Some [http://example.com/ pretty ''italics'' and stuff]!''
!! result
-<p><i>Some </i><a href="http://example.com/" class="external text" rel="nofollow"><i>pretty </i>italics<i> and stuff</i></a><i>!</i>
+<p><i>Some </i><a rel="nofollow" class="external text" href="http://example.com/"><i>pretty </i>italics<i> and stuff</i></a><i>!</i>
</p>
!! end
@@ -1092,7 +1147,7 @@ External link containing double-single-quotes with no space separating the url f
!! input
[http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm''La muerte de Casagemas'' (1901) en el sitio de [[Museo Picasso (París)|Museo Picasso]].]
!! result
-<p><a href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm" class="external text" rel="nofollow"><i>La muerte de Casagemas</i> (1901) en el sitio de <a href="/index.php?title=Museo_Picasso_(Par%C3%ADs)&amp;action=edit&amp;redlink=1" class="new" title="Museo Picasso (París) (page does not exist)">Museo Picasso</a>.</a>
+<p><a rel="nofollow" class="external text" href="http://www.musee-picasso.fr/pages/page_id18528_u1l2.htm"><i>La muerte de Casagemas</i> (1901) en el sitio de <a href="/index.php?title=Museo_Picasso_(Par%C3%ADs)&amp;action=edit&amp;redlink=1" class="new" title="Museo Picasso (París) (page does not exist)">Museo Picasso</a>.</a>
</p>
!! end
@@ -1245,7 +1300,7 @@ Multiplication table
<caption>Multiplication table
</caption>
<tr>
-<th> &times; </th>
+<th> &#215; </th>
<th> 1 </th>
<th> 2 </th>
<th> 3
@@ -1332,7 +1387,7 @@ Nested table
!! result
<table border="1">
<tr>
-<td> &alpha;
+<td> &#945;
</td>
<td>
<table bgcolor="#ABCDEF" border="2">
@@ -1371,7 +1426,7 @@ Table security: embedded pipes (http://lists.wikimedia.org/mailman/htdig/wikitec
!! result
<table>
<tr>
-<td>[<a href="ftp://%7Cx" class="external free" rel="nofollow">ftp://%7Cx</a></td>
+<td>[<a rel="nofollow" class="external free" href="ftp://%7Cx">ftp://%7Cx</a></td>
<td>]" onmouseover="alert(document.cookie)"&gt;test
</td>
</tr>
@@ -1380,6 +1435,7 @@ Table security: embedded pipes (http://lists.wikimedia.org/mailman/htdig/wikitec
!! end
+
###
### Internal links
###
@@ -1388,7 +1444,7 @@ Plain link, capitalized
!! input
[[Main Page]]
!! result
-<p><a href="/wiki/Main_Page">Main Page</a>
+<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p>
!! end
@@ -1397,7 +1453,7 @@ Plain link, uncapitalized
!! input
[[main Page]]
!! result
-<p><a href="/wiki/Main_Page">main Page</a>
+<p><a href="/wiki/Main_Page" title="Main Page">main Page</a>
</p>
!! end
@@ -1451,7 +1507,7 @@ Link with prefix
!! input
xxx[[main Page]], xxx[[Main Page]], Xxx[[main Page]] XXX[[main Page]], XXX[[Main Page]]
!! result
-<p>xxx<a href="/wiki/Main_Page">main Page</a>, xxx<a href="/wiki/Main_Page">Main Page</a>, Xxx<a href="/wiki/Main_Page">main Page</a> XXX<a href="/wiki/Main_Page">main Page</a>, XXX<a href="/wiki/Main_Page">Main Page</a>
+<p>xxx<a href="/wiki/Main_Page" title="Main Page">main Page</a>, xxx<a href="/wiki/Main_Page" title="Main Page">Main Page</a>, Xxx<a href="/wiki/Main_Page" title="Main Page">main Page</a> XXX<a href="/wiki/Main_Page" title="Main Page">main Page</a>, XXX<a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p>
!! end
@@ -1460,7 +1516,7 @@ Link with suffix
!! input
[[Main Page]]xxx, [[Main Page]]XXX, [[Main Page]]!!!
!! result
-<p><a href="/wiki/Main_Page" title="Main Page">Main Pagexxx</a>, <a href="/wiki/Main_Page">Main Page</a>XXX, <a href="/wiki/Main_Page">Main Page</a>!!!
+<p><a href="/wiki/Main_Page" title="Main Page">Main Pagexxx</a>, <a href="/wiki/Main_Page" title="Main Page">Main Page</a>XXX, <a href="/wiki/Main_Page" title="Main Page">Main Page</a>!!!
</p>
!! end
@@ -1614,10 +1670,38 @@ Plain link to URL
!! input
[[http://www.example.com]]
!! result
-<p>[<a href="http://www.example.com" class="external autonumber" rel="nofollow">[1]</a>]
+<p>[<a rel="nofollow" class="external autonumber" href="http://www.example.com">[1]</a>]
+</p>
+!! end
+
+!! test
+Plain link to URL with link text
+!! input
+[[http://www.example.com Link text]]
+!! result
+<p>[<a rel="nofollow" class="external text" href="http://www.example.com">Link text</a>]
+</p>
+!! end
+
+!! test
+Plain link to protocol-relative URL
+!! input
+[[//www.example.com]]
+!! result
+<p>[<a rel="nofollow" class="external autonumber" href="//www.example.com">[1]</a>]
+</p>
+!! end
+
+!! test
+Plain link to protocol-relative URL with link text
+!! input
+[[//www.example.com Link text]]
+!! result
+<p>[<a rel="nofollow" class="external text" href="//www.example.com">Link text</a>]
</p>
!! end
+
# I'm fairly sure the expected result here is wrong.
# We want these to be URL links, not pseudo-pages with URLs for titles....
# However the current output is also pretty screwy.
@@ -1634,7 +1718,7 @@ Piped link to URL
!! input
Piped link to URL: [[http://www.example.com|an example URL]]
!! result
-<p>Piped link to URL: [<a href="http://www.example.com%7Can" class="external text" rel="nofollow">example URL</a>]
+<p>Piped link to URL: [<a rel="nofollow" class="external text" href="http://www.example.com%7Can">example URL</a>]
</p>
!! end
@@ -1693,7 +1777,7 @@ title=[[0]]
!!input
[[00]]
!!result
-<p><a href="/wiki/00">00</a>
+<p><a href="/wiki/00" title="00">00</a>
</p>
!!end
@@ -1711,10 +1795,64 @@ Non-breaking spaces in title
!! input
[[&nbsp; Main &nbsp; Page &nbsp;]]
!! result
-<p><a href="/wiki/Main_Page" title="Main Page">&nbsp; Main &nbsp; Page &nbsp;</a>
+<p><a href="/wiki/Main_Page" title="Main Page">&#160; Main &#160; Page &#160;</a>
</p>
!!end
+!! test
+Internal link with ca linktrail, surrounded by bold apostrophes (bug 27473 primary issue)
+!! options
+language=ca
+!! input
+'''[[Main Page]]'''
+!! result
+<p><b><a href="/wiki/Main_Page" title="Main Page">Main Page</a></b>
+</p>
+!! end
+
+!! test
+Internal link with ca linktrail, surrounded by italic apostrophes (bug 27473 primary issue)
+!! options
+language=ca
+!! input
+''[[Main Page]]''
+!! result
+<p><i><a href="/wiki/Main_Page" title="Main Page">Main Page</a></i>
+</p>
+!! end
+
+!! test
+Internal link with en linktrail: no apostrophes (bug 27473)
+!! options
+language=en
+!! input
+[[Something]]'nice
+!! result
+<p><a href="/index.php?title=Something&amp;action=edit&amp;redlink=1" class="new" title="Something (page does not exist)">Something</a>'nice
+</p>
+!! end
+
+!! test
+Internal link with ca linktrail with apostrophes (bug 27473)
+!! options
+language=ca
+!! input
+[[Something]]'nice
+!! result
+<p><a href="/index.php?title=Something&amp;action=edit&amp;redlink=1" class="new" title="Something (encara no existeix)">Something'nice</a>
+</p>
+!! end
+
+!! test
+Internal link with kaa linktrail with apostrophes (bug 27473)
+!! options
+language=kaa
+!! input
+[[Something]]'nice
+!! result
+<p><a href="/index.php?title=Something&amp;action=edit&amp;redlink=1" class="new" title="Something (bet ele jaratılmag'an)">Something'nice</a>
+</p>
+!! end
###
### Interwiki links (see maintenance/interwiki.sql)
@@ -1725,7 +1863,7 @@ Inline interwiki link
!! input
[[MeatBall:SoftSecurity]]
!! result
-<p><a href="http://www.usemod.com/cgi-bin/mb.pl?SoftSecurity" class="extiw">MeatBall:SoftSecurity</a>
+<p><a href="http://www.usemod.com/cgi-bin/mb.pl?SoftSecurity" class="extiw" title="meatball:SoftSecurity">MeatBall:SoftSecurity</a>
</p>
!! end
@@ -1734,7 +1872,7 @@ Inline interwiki link with empty title (bug 2372)
!! input
[[MeatBall:]]
!! result
-<p><a href="http://www.usemod.com/cgi-bin/mb.pl?" class="extiw">MeatBall:</a>
+<p><a href="http://www.usemod.com/cgi-bin/mb.pl?" class="extiw" title="meatball:">MeatBall:</a>
</p>
!! end
@@ -2110,6 +2248,28 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
!! end
!! test
+Magic Word: {{PAGENAME}} with metacharacters
+!! options
+title=[['foo & bar = baz']]
+!! input
+''{{PAGENAME}}''
+!! result
+<p><i>&#39;foo &#38; bar &#61; baz&#39;</i>
+</p>
+!! end
+
+!! test
+Magic Word: {{PAGENAME}} with metacharacters (bug 26781)
+!! options
+title=[[*RFC 1234 http://example.com/]]
+!! input
+{{PAGENAME}}
+!! result
+<p>&#42;RFC&#32;1234 http&#58;//example.com/
+</p>
+!! end
+
+!! test
Magic Word: {{PAGENAMEE}}
!! options
title=[[User:Ævar Arnfjörð Bjarmason]]
@@ -2121,6 +2281,17 @@ title=[[User:Ævar Arnfjörð Bjarmason]]
!! end
!! test
+Magic Word: {{PAGENAMEE}} with metacharacters (bug 26781)
+!! options
+title=[[*RFC 1234 http://example.com/]]
+!! input
+{{PAGENAMEE}}
+!! result
+<p>&#42;RFC_1234_http&#58;//example.com/
+</p>
+!! end
+
+!! test
Magic Word: {{REVISIONID}}
!! input
{{REVISIONID}}
@@ -2143,7 +2314,7 @@ Magic Word: {{SERVER}}
!! input
{{SERVER}}
!! result
-<p><a href="http://Britney-Spears" class="external free" rel="nofollow">http://Britney-Spears</a>
+<p><a rel="nofollow" class="external free" href="http://Britney-Spears">http://Britney-Spears</a>
</p>
!! end
@@ -2308,7 +2479,7 @@ Magic links: RFC (bug 479)
!! input
RFC 822
!! result
-<p><a href="http://tools.ietf.org/html/rfc822" class="external mw-magiclink-rfc">RFC 822</a>
+<p><a class="external mw-magiclink-rfc" href="//tools.ietf.org/html/rfc822">RFC 822</a>
</p>
!! end
@@ -2326,7 +2497,7 @@ Magic links: PMID incorrectly converts space to underscore
!! input
PMID 1234
!! result
-<p><a href="http://www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract" class="external mw-magiclink-pmid">PMID 1234</a>
+<p><a class="external mw-magiclink-pmid" href="//www.ncbi.nlm.nih.gov/pubmed/1234?dopt=Abstract">PMID 1234</a>
</p>
!! end
@@ -2608,7 +2779,7 @@ Template as link source
!! input
[[{{linktest2}}]]
!! result
-<p><a href="/wiki/Main_Page">Main Page</a>
+<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p>
!! end
@@ -2630,7 +2801,7 @@ Template infinite loop
!! input
{{loop1}}
!! result
-<p><span class="error">Template loop detected: <a href="/wiki/Template:Loop1">Template:Loop1</a></span>
+<p><span class="error">Template loop detected: <a href="/wiki/Template:Loop1" title="Template:Loop1">Template:Loop1</a></span>
</p>
!! end
@@ -2856,6 +3027,35 @@ section=1
!! result
==Section 1==
!! end
+!! article
+Template:Top-level template
+!! text
+{{Nested template}}
+!! endarticle
+
+!! article
+Template:Nested template
+!! text
+*Item 1
+*Item 2
+!! endarticle
+
+!! test
+Line-start flag in a nested template call
+!! input
+*Item A
+*Item B
+
+{{Top-level template}}
+!! result
+<ul><li>Item A
+</li><li>Item B
+</li></ul>
+<ul><li>Item 1
+</li><li>Item 2
+</li></ul>
+
+!! end
###
### Pre-save transform tests
@@ -3021,16 +3221,6 @@ pst
!!end
!! test
-pre-save transform: comment containing math
-!! options
-pst
-!! input
-<!-- <math>data</math> -->
-!!result
-<!-- <math>data</math> -->
-!!end
-
-!! test
pre-save transform: <noinclude> in subst (bug 3298)
!! options
pst
@@ -3230,6 +3420,80 @@ pst title=[[Ns:Somearticle (IGNORED), Context]]
[[Ns:Article, Context|Article]]
!! end
+!! test
+pre-save transform: trim trailing empty lines
+!! options
+pst
+!! input
+Empty lines are trimmed
+
+
+
+
+!! result
+Empty lines are trimmed
+!! end
+
+!! test
+pre-save transform: Signature expansion
+!! options
+pst
+!! input
+* ~~~
+* <noinclude>~~~</noinclude>
+* <includeonly>~~~</includeonly>
+* <onlyinclude>~~~</onlyinclude>
+!! result
+* [[Special:Contributions/127.0.0.1|127.0.0.1]]
+* <noinclude>[[Special:Contributions/127.0.0.1|127.0.0.1]]</noinclude>
+* <includeonly>[[Special:Contributions/127.0.0.1|127.0.0.1]]</includeonly>
+* <onlyinclude>[[Special:Contributions/127.0.0.1|127.0.0.1]]</onlyinclude>
+!! end
+
+
+!! test
+pre-save transform: Signature expansion in nowiki tags (bug 93)
+!! options
+pst disabled
+!! input
+Shall not expand:
+
+<nowiki>~~~~</nowiki>
+
+<includeonly><nowiki>~~~~</nowiki></includeonly>
+
+<noinclude><nowiki>~~~~</nowiki></noinclude>
+
+<onlyinclude><nowiki>~~~~</nowiki></onlyinclude>
+
+{{subst:Foo}} shall be converted to FOO
+
+As well as inside noinclude/onlyinclude
+<noinclude>{{subst:Foo}}</noinclude>
+<onlyinclude>{{subst:Foo}}</onlyinclude>
+
+But not inside includeonly
+<includeonly>{{subst:Foo}}</includeonly>
+!! result
+Shall not expand:
+
+<nowiki>~~~~</nowiki>
+
+<includeonly><nowiki>~~~~</nowiki></includeonly>
+
+<noinclude><nowiki>~~~~</nowiki></noinclude>
+
+<onlyinclude><nowiki>~~~~</nowiki></onlyinclude>
+
+FOO shall be converted to FOO
+
+As well as inside noinclude/onlyinclude
+<noinclude>FOO</noinclude>
+<onlyinclude>FOO</onlyinclude>
+
+But not inside includeonly
+<includeonly>{{subst:Foo}}</includeonly>
+!! end
###
### Message transform tests
@@ -3362,6 +3626,28 @@ Image with link parameter, URL target
!! end
!! test
+Image with link parameter, wgExternalLinkTarget
+!! input
+[[Image:foobar.jpg|link=http://example.com/]]
+!! config
+wgExternalLinkTarget='foobar'
+!! result
+<p><a href="http://example.com/" target="foobar"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+!! end
+
+!! test
+Image with link parameter, wgExternalLinkTarget, unnamed parameter
+!! input
+[[Image:foobar.jpg|link=http://example.com/|Title]]
+!! config
+wgExternalLinkTarget='foobar'
+!! result
+<p><a href="http://example.com/" title="Title" target="foobar"><img alt="Title" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+</p>
+!! end
+
+!! test
Image with empty link parameter
!! input
[[Image:foobar.jpg|link=]]
@@ -3402,7 +3688,7 @@ Image with frame and link
!! input
[[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]]]
!! result
-<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page">Main Page</a></div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
!! end
@@ -3411,7 +3697,7 @@ Image with frame and link and explicit alt
!! input
[[Image:Foobar.jpg|frame|left|This is a test image [[Main Page]]|alt=Altitude]]
!! result
-<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Altitude" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page">Main Page</a></div></div></div>
+<div class="thumb tleft"><div class="thumbinner" style="width:1943px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Altitude" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" class="thumbimage" /></a> <div class="thumbcaption">This is a test image <a href="/wiki/Main_Page" title="Main Page">Main Page</a></div></div></div>
!! end
@@ -3467,7 +3753,7 @@ Thumbnail image caption with a free URL
!! input
[[Image:foobar.jpg|thumb|http://example.com]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a href="http://example.com" class="external free" rel="nofollow">http://example.com</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
!! end
@@ -3476,7 +3762,7 @@ Thumbnail image caption with a free URL and explicit alt
!! input
[[Image:foobar.jpg|thumb|http://example.com|alt=Alteration]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Alteration" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a href="http://example.com" class="external free" rel="nofollow">http://example.com</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Alteration" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a></div></div></div>
!! end
@@ -3494,7 +3780,7 @@ BUG 1887: A RFC with a thumbnail
!! input
[[Image:foobar.jpg|thumb|This is RFC 12354]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is <a href="http://tools.ietf.org/html/rfc12354" class="external mw-magiclink-rfc">RFC 12354</a></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This is <a class="external mw-magiclink-rfc" href="//tools.ietf.org/html/rfc12354">RFC 12354</a></div></div></div>
!! end
@@ -3503,28 +3789,7 @@ BUG 1887: A mailto link with a thumbnail
!! input
[[Image:foobar.jpg|thumb|Please mailto:nobody@example.com]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Please <a href="mailto:nobody@example.com" class="external free" rel="nofollow">mailto:nobody@example.com</a></div></div></div>
-
-!! end
-
-!! test
-BUG 1887: A <math> with a thumbnail- we don't render math in the parsertests by default,
-so math is not stripped and turns up as escaped &lt;math&gt; tags.
-!! input
-[[Image:foobar.jpg|thumb|<math>2+2</math>]]
-!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>&lt;math&gt;2+2&lt;/math&gt;</div></div></div>
-
-!! end
-
-!! test
-BUG 1887, part 2: A <math> with a thumbnail- math enabled
-!! options
-math
-!! input
-[[Image:foobar.jpg|thumb|<math>2+2</math>]]
-!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div><span class="texhtml">2 + 2</span></div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>Please <a rel="nofollow" class="external free" href="mailto:nobody@example.com">mailto:nobody@example.com</a></div></div></div>
!! end
@@ -3617,7 +3882,7 @@ Bug 3090: External links other than http: in image captions
!! input
[[Image:Foobar.jpg|thumb|200px|This caption has [irc://example.net irc] and [https://example.com Secure] ext links in it.]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="200" height="23" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This caption has <a href="irc://example.net" class="external text" rel="nofollow">irc</a> and <a href="https://example.com" class="external text" rel="nofollow">Secure</a> ext links in it.</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:202px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="200" height="23" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>This caption has <a rel="nofollow" class="external text" href="irc://example.net">irc</a> and <a rel="nofollow" class="external text" href="https://example.com">Secure</a> ext links in it.</div></div></div>
!! end
@@ -3632,7 +3897,7 @@ Redirected image
!! input
[[Image:Barfoo.jpg]]
!! result
-<p><a href="/wiki/File:Barfoo.jpg">File:Barfoo.jpg</a>
+<p><a href="/wiki/File:Barfoo.jpg" title="File:Barfoo.jpg">File:Barfoo.jpg</a>
</p>
!! end
@@ -3643,7 +3908,7 @@ wgEnableUploads=0
!! input
[[Image:Foobaz.jpg]]
!! result
-<p><a href="/wiki/File:Foobaz.jpg">File:Foobaz.jpg</a>
+<p><a href="/wiki/File:Foobaz.jpg" title="File:Foobaz.jpg">File:Foobaz.jpg</a>
</p>
!! end
@@ -3713,7 +3978,7 @@ Link to category
!! input
[[:Category:MediaWiki User's Guide]]
!! result
-<p><a href="/wiki/Category:MediaWiki_User%27s_Guide">Category:MediaWiki User's Guide</a>
+<p><a href="/wiki/Category:MediaWiki_User%27s_Guide" title="Category:MediaWiki User's Guide">Category:MediaWiki User's Guide</a>
</p>
!! end
@@ -4076,7 +4341,7 @@ BUG 1219 URL next to image (good)
!! input
http://example.com [[Image:foobar.jpg]]
!! result
-<p><a href="http://example.com" class="external free" rel="nofollow">http://example.com</a> <a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> <a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!!end
@@ -4150,7 +4415,7 @@ BUG 1219 URL next to image (broken)
!! input
http://example.com[[Image:foobar.jpg]]
!! result
-<p><a href="http://example.com" class="external free" rel="nofollow">http://example.com</a><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
+<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="1941" height="220" /></a>
</p>
!!end
@@ -4159,7 +4424,7 @@ Bug 1186 news: in the middle of text
!! input
http://en.wikinews.org/wiki/Wikinews:Workplace
!! result
-<p><a href="http://en.wikinews.org/wiki/Wikinews:Workplace" class="external free" rel="nofollow">http://en.wikinews.org/wiki/Wikinews:Workplace</a>
+<p><a rel="nofollow" class="external free" href="http://en.wikinews.org/wiki/Wikinews:Workplace">http://en.wikinews.org/wiki/Wikinews:Workplace</a>
</p>
!!end
@@ -4275,7 +4540,7 @@ text with character entity: eacute
!! input
I always thought &eacute; was a cute letter.
!! result
-<p>I always thought &eacute; was a cute letter.
+<p>I always thought &#233; was a cute letter.
</p>
!! end
@@ -4381,7 +4646,7 @@ The page's name is U+05d0 U+05b7, with non-canonical form U+FB2E
<a href="/wiki/%D7%90%D6%B7" title="×Ö·">&#x5d0;&#x5b7;</a>
<a href="/wiki/%D7%90%D6%B7" title="×Ö·">&#x5d0;Ö·</a>
<a href="/wiki/%D7%90%D6%B7" title="×Ö·">×&#x5b7;</a>
-<a href="/wiki/%D7%90%D6%B7">×Ö·</a>
+<a href="/wiki/%D7%90%D6%B7" title="×Ö·">×Ö·</a>
</p>
!! end
@@ -4444,7 +4709,7 @@ Bug 2095: link with three closing brackets
!! input
[[Main Page]]]
!! result
-<p><a href="/wiki/Main_Page">Main Page</a>]
+<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>]
</p>
!! end
@@ -4643,15 +4908,6 @@ Bug 3244: HTML attribute safety (extension; unsafe)
!! end
-!! test
-Math section safety when disabled
-!! input
-<math><script>alert(document.cookies);</script></math>
-!! result
-<p>&lt;math&gt;&lt;script&gt;alert(document.cookies);&lt;/script&gt;&lt;/math&gt;
-</p>
-!! end
-
# More MSIE fun discovered by Tom Gilder
!! test
@@ -5315,11 +5571,11 @@ ftp://inlineftp
mailto:inline@mail.tld
!! result
-<p><a href="http://first/" class="external autonumber" rel="nofollow">[1]</a> <a href="http://second" class="external autonumber" rel="nofollow">[2]</a> <a href="ftp://ftp" class="external autonumber" rel="nofollow">[3]</a>
-</p><p><a href="ftp://inlineftp" class="external free" rel="nofollow">ftp://inlineftp</a>
-</p><p><a href="mailto:enclosed@mail.tld" class="external text" rel="nofollow">With target</a>
-</p><p><a href="mailto:enclosed@mail.tld" class="external autonumber" rel="nofollow">[4]</a>
-</p><p><a href="mailto:inline@mail.tld" class="external free" rel="nofollow">mailto:inline@mail.tld</a>
+<p><a rel="nofollow" class="external autonumber" href="http://first/">[1]</a> <a rel="nofollow" class="external autonumber" href="http://second">[2]</a> <a rel="nofollow" class="external autonumber" href="ftp://ftp">[3]</a>
+</p><p><a rel="nofollow" class="external free" href="ftp://inlineftp">ftp://inlineftp</a>
+</p><p><a rel="nofollow" class="external text" href="mailto:enclosed@mail.tld">With target</a>
+</p><p><a rel="nofollow" class="external autonumber" href="mailto:enclosed@mail.tld">[4]</a>
+</p><p><a rel="nofollow" class="external free" href="mailto:inline@mail.tld">mailto:inline@mail.tld</a>
</p>
!! end
@@ -5402,7 +5658,7 @@ Fuzz testing: Parser21
!! result
<table>
<tr>
-<th> <a href="irc://{{ftp://a" class="external free" rel="nofollow">irc://{{ftp://a</a>" onmouseover="alert('hello world');"
+<th> <a rel="nofollow" class="external free" href="irc://{{ftp://a">irc://{{ftp://a</a>" onmouseover="alert('hello world');"
</th>
<td>
</td>
@@ -5418,7 +5674,7 @@ http://===r:::https://b
{|
!!result
-<p><a href="http://===r:::https://b" class="external free" rel="nofollow">http://===r:::https://b</a>
+<p><a rel="nofollow" class="external free" href="http://===r:::https://b">http://===r:::https://b</a>
</p>
<table>
<tr><td></td></tr>
@@ -5482,7 +5738,7 @@ Fuzz testing: URL adjacent extension (with space, clean)
!! input
http://example.com <nowiki>junk</nowiki>
!! result
-<p><a href="http://example.com" class="external free" rel="nofollow">http://example.com</a> junk
+<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a> junk
</p>
!!end
@@ -5492,7 +5748,7 @@ Fuzz testing: URL adjacent extension (no space, dirty; nowiki)
!! input
http://example.com<nowiki>junk</nowiki>
!! result
-<p><a href="http://example.com" class="external free" rel="nofollow">http://example.com</a>junk
+<p><a rel="nofollow" class="external free" href="http://example.com">http://example.com</a>junk
</p>
!!end
@@ -5502,7 +5758,7 @@ Fuzz testing: URL adjacent extension (no space, dirty; pre)
!! input
http://example.com<pre>junk</pre>
!! result
-<a href="http://example.com" class="external free" rel="nofollow">http://example.com</a><pre>junk</pre>
+<a rel="nofollow" class="external free" href="http://example.com">http://example.com</a><pre>junk</pre>
!!end
@@ -5635,7 +5891,7 @@ Special page transclusion
!! result
<p><br />
</p>
-<table border="0" id="mw-prefixindex-list-table"><tr><td><a href="/wiki/Xyzzyx">Xyzzyx</a></td></tr></table>
+<table border="0" id="mw-prefixindex-list-table"><tr><td><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></td></tr></table>
!! end
@@ -5648,10 +5904,10 @@ Special page transclusion twice (bug 5021)
!! result
<p><br />
</p>
-<table border="0" id="mw-prefixindex-list-table"><tr><td><a href="/wiki/Xyzzyx">Xyzzyx</a></td></tr></table>
+<table border="0" id="mw-prefixindex-list-table"><tr><td><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></td></tr></table>
<p><br />
</p>
-<table border="0" id="mw-prefixindex-list-table"><tr><td><a href="/wiki/Xyzzyx">Xyzzyx</a></td></tr></table>
+<table border="0" id="mw-prefixindex-list-table"><tr><td><a href="/wiki/Xyzzyx" title="Xyzzyx">Xyzzyx</a></td></tr></table>
!! end
@@ -6528,7 +6784,7 @@ Handling of &#x0A; in URLs
!! input
**irc://&#x0A;a
!! result
-<ul><li><ul><li><a href="irc://%0Aa" class="external free" rel="nofollow">irc://%0Aa</a>
+<ul><li><ul><li><a rel="nofollow" class="external free" href="irc://%0Aa">irc://%0Aa</a>
</li></ul>
</li></ul>
@@ -6546,7 +6802,7 @@ Special:Search page linking.
!! input
{{Special:search}}
!! result
-<p><a href="/wiki/Special:Search">Special:Search</a>
+<p><a href="/wiki/Special:Search" title="Special:Search">Special:Search</a>
</p>
!! end
@@ -6635,7 +6891,7 @@ image4 |300px| centre
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
<div style="height: 150px;">Image5.svg</div>
<div class="gallerytext">
-<p><a href="http://///////" class="external free" rel="nofollow">http://///////</a>
+<p><a rel="nofollow" class="external free" href="http://///////">http://///////</a>
</p>
</div>
</div></li>
@@ -6651,37 +6907,72 @@ image4 |300px| centre
!! test
Gallery (with options)
!! input
-<gallery widths='60px' heights='40px' perrow='2' caption='Foo [[Main Page]]' >
+<gallery widths='70px' heights='40px' perrow='2' caption='Foo [[Main Page]]' >
File:Nonexistant.jpg|caption
File:Nonexistant.jpg
image:foobar.jpg|some '''caption''' [[Main Page]]
image:foobar.jpg
+image:foobar.jpg|Blabla|alt=This is a foo-bar.|blabla.
</gallery>
!! result
-<ul class="gallery" style="max-width: 206px;_width: 206px;">
- <li class='gallerycaption'>Foo <a href="/wiki/Main_Page">Main Page</a></li>
- <li class="gallerybox" style="width: 95px"><div style="width: 95px">
+<ul class="gallery" style="max-width: 226px;_width: 226px;">
+ <li class='gallerycaption'>Foo <a href="/wiki/Main_Page" title="Main Page">Main Page</a></li>
+ <li class="gallerybox" style="width: 105px"><div style="width: 105px">
<div style="height: 70px;">Nonexistant.jpg</div>
<div class="gallerytext">
<p>caption
</p>
</div>
</div></li>
- <li class="gallerybox" style="width: 95px"><div style="width: 95px">
+ <li class="gallerybox" style="width: 105px"><div style="width: 105px">
<div style="height: 70px;">Nonexistant.jpg</div>
<div class="gallerytext">
</div>
</div></li>
- <li class="gallerybox" style="width: 95px"><div style="width: 95px">
- <div class="thumb" style="width: 90px; height: 70px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="60" height="7" /></a></div></div>
+ <li class="gallerybox" style="width: 105px"><div style="width: 105px">
+ <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="70" height="8" /></a></div></div>
<div class="gallerytext">
-<p>some <b>caption</b> <a href="/wiki/Main_Page">Main Page</a>
+<p>some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p>
</div>
</div></li>
- <li class="gallerybox" style="width: 95px"><div style="width: 95px">
- <div class="thumb" style="width: 90px; height: 70px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="60" height="7" /></a></div></div>
+ <li class="gallerybox" style="width: 105px"><div style="width: 105px">
+ <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="70" height="8" /></a></div></div>
+ <div class="gallerytext">
+ </div>
+ </div></li>
+ <li class="gallerybox" style="width: 105px"><div style="width: 105px">
+ <div class="thumb" style="width: 100px;"><div style="margin:31px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="This is a foo-bar." src="http://example.com/images/3/3a/Foobar.jpg" width="70" height="8" /></a></div></div>
<div class="gallerytext">
+<p>Blabla|blabla.
+</p>
+ </div>
+ </div></li>
+</ul>
+
+!! end
+
+!! test
+Gallery with wikitext inside caption
+!! input
+<gallery>
+File:foobar.jpg|[[File:foobar.jpg|20px|desc|alt=inneralt]]|alt=galleryalt
+File:foobar.jpg|{{Test|unamedParam|alt=param}}|alt=galleryalt
+</gallery>
+!! result
+<ul class="gallery">
+ <li class="gallerybox" style="width: 155px"><div style="width: 155px">
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/3/3a/Foobar.jpg" width="120" height="14" /></a></div></div>
+ <div class="gallerytext">
+<p><a href="/wiki/File:Foobar.jpg" class="image" title="desc"><img alt="inneralt" src="http://example.com/images/3/3a/Foobar.jpg" width="20" height="2" /></a>
+</p>
+ </div>
+ </div></li>
+ <li class="gallerybox" style="width: 155px"><div style="width: 155px">
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="galleryalt" src="http://example.com/images/3/3a/Foobar.jpg" width="120" height="14" /></a></div></div>
+ <div class="gallerytext">
+<p>This is a test template
+</p>
</div>
</div></li>
</ul>
@@ -6715,15 +7006,15 @@ caption
</div>
</div></li>
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px; height: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="120" height="14" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="120" height="14" /></a></div></div>
<div class="gallerytext">
<p><a href="/wiki/File:Foobar.jpg" title="File:Foobar.jpg">Foobar.jpg</a><br />
-some <b>caption</b> <a href="/wiki/Main_Page">Main Page</a>
+some <b>caption</b> <a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p>
</div>
</div></li>
<li class="gallerybox" style="width: 155px"><div style="width: 155px">
- <div class="thumb" style="width: 150px; height: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="120" height="14" /></a></div></div>
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="120" height="14" /></a></div></div>
<div class="gallerytext">
<p><a href="/wiki/File:Foobar.jpg" title="File:Foobar.jpg">Foobar.jpg</a><br />
</p>
@@ -6734,6 +7025,41 @@ some <b>caption</b> <a href="/wiki/Main_Page">Main Page</a>
!! end
!! test
+Gallery (with namespace-less filenames)
+!! input
+<gallery>
+File:Nonexistant.jpg
+Nonexistant.jpg
+image:foobar.jpg
+foobar.jpg
+</gallery>
+!! result
+<ul class="gallery">
+ <li class="gallerybox" style="width: 155px"><div style="width: 155px">
+ <div style="height: 150px;">Nonexistant.jpg</div>
+ <div class="gallerytext">
+ </div>
+ </div></li>
+ <li class="gallerybox" style="width: 155px"><div style="width: 155px">
+ <div style="height: 150px;">Nonexistant.jpg</div>
+ <div class="gallerytext">
+ </div>
+ </div></li>
+ <li class="gallerybox" style="width: 155px"><div style="width: 155px">
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="120" height="14" /></a></div></div>
+ <div class="gallerytext">
+ </div>
+ </div></li>
+ <li class="gallerybox" style="width: 155px"><div style="width: 155px">
+ <div class="thumb" style="width: 150px;"><div style="margin:68px auto;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="Foobar.jpg" src="http://example.com/images/3/3a/Foobar.jpg" width="120" height="14" /></a></div></div>
+ <div class="gallerytext">
+ </div>
+ </div></li>
+</ul>
+
+!! end
+
+!! test
HTML Hex character encoding (spells the word "JavaScript")
!! input
&#x4A;&#x061;&#x0076;&#x00061;&#x000053;&#x0000063;&#114;&#x0000069;&#00000112;&#x0000000074;
@@ -6743,6 +7069,24 @@ HTML Hex character encoding (spells the word "JavaScript")
!! end
!! test
+HTML Hex character encoding bogus encoding (bug 26437 regression check)
+!! input
+&#xsee;&#XSEE;
+!! result
+<p>&amp;#xsee;&amp;#XSEE;
+</p>
+!! end
+
+!! test
+HTML Hex character encoding mixed case
+!! input
+&#xEE;&#Xee;
+!! result
+<p>&#xee;&#xee;
+</p>
+!! end
+
+!! test
__FORCETOC__ override
!! input
__NEWSECTIONLINK__
@@ -6784,7 +7128,7 @@ Bug 22905: <abbr> followed by ISBN followed by </a>
!! input
<abbr>(fr)</abbr> ISBN 2753300917 [http://www.example.com example.com]
!! result
-<p><abbr>(fr)</abbr> <a href="/wiki/Special:BookSources/2753300917" class="internal mw-magiclink-isbn">ISBN 2753300917</a> <a href="http://www.example.com" class="external text" rel="nofollow">example.com</a>
+<p><abbr>(fr)</abbr> <a href="/wiki/Special:BookSources/2753300917" class="internal mw-magiclink-isbn">ISBN 2753300917</a> <a rel="nofollow" class="external text" href="http://www.example.com">example.com</a>
</p>
!! end
@@ -6793,7 +7137,7 @@ Double RFC
!! input
RFC RFC 1234
!! result
-<p>RFC <a href="http://tools.ietf.org/html/rfc1234" class="external mw-magiclink-rfc">RFC 1234</a>
+<p>RFC <a class="external mw-magiclink-rfc" href="//tools.ietf.org/html/rfc1234">RFC 1234</a>
</p>
!! end
@@ -6811,7 +7155,7 @@ RFC code coverage
!! input
RFC 983&#x20;987
!! result
-<p><a href="http://tools.ietf.org/html/rfc983" class="external mw-magiclink-rfc">RFC 983</a>&#x20;987
+<p><a class="external mw-magiclink-rfc" href="//tools.ietf.org/html/rfc983">RFC 983</a>&#x20;987
</p>
!! end
@@ -6905,7 +7249,7 @@ Images with the "|" character in the comment
!! input
[[image:Foobar.jpg|thumb|An [http://test/?param1=|left|&param2=|x external] URL]]
!! result
-<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>An <a href="http://test/?param1=%7Cleft%7C&amp;param2=%7Cx" class="external text" rel="nofollow">external</a> URL</div></div></div>
+<div class="thumb tright"><div class="thumbinner" style="width:182px;"><a href="/wiki/File:Foobar.jpg" class="image"><img alt="" src="http://example.com/images/3/3a/Foobar.jpg" width="180" height="20" class="thumbimage" /></a> <div class="thumbcaption"><div class="magnify"><a href="/wiki/File:Foobar.jpg" class="internal" title="Enlarge"><img src="/skins/common/images/magnify-clip.png" width="15" height="11" alt="" /></a></div>An <a rel="nofollow" class="external text" href="http://test/?param1=%7Cleft%7C&amp;param2=%7Cx">external</a> URL</div></div></div>
!!end
@@ -7291,7 +7635,7 @@ language=sr
!! input
[[Main Page]] can be written as [[Маин Паге]] same as [[Маин Паге]].
!! result
-<p><a href="/wiki/Main_Page">Main Page</a> can be written as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a> same as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a>.
+<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a> can be written as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a> same as <a href="/wiki/Main_Page" title="Main Page">Маин Паге</a>.
</p>
!!end
@@ -7386,7 +7730,7 @@ language=sr variant=sr-ec
!! input
-{[[Main Page]]}-
!! result
-<p><a href="/wiki/Main_Page">Main Page</a>
+<p><a href="/wiki/Main_Page" title="Main Page">Main Page</a>
</p>
!! end
@@ -7398,7 +7742,7 @@ language=sr variant=sr-ec
!! input
== -{Naslov}- ==
!! result
-<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Уреди део: Naslov">уреди</a>]</span> <span class="mw-headline" id="-.7BNaslov.7D-"> Naslov </span></h2>
+<h2><span class="editsection">[<a href="/index.php?title=Parser_test&amp;action=edit&amp;section=1" title="Уредите одељак „Naslov“">уреди</a>]</span> <span class="mw-headline" id="-.7BNaslov.7D-"> Naslov </span></h2>
!! end
@@ -7888,9 +8232,9 @@ wgLinkHolderBatchSize=0
[[meatball:2]]
[[meatball:3]]
!! result
-<p><a href="http://www.usemod.com/cgi-bin/mb.pl?1" class="extiw">meatball:1</a>
-<a href="http://www.usemod.com/cgi-bin/mb.pl?2" class="extiw">meatball:2</a>
-<a href="http://www.usemod.com/cgi-bin/mb.pl?3" class="extiw">meatball:3</a>
+<p><a href="http://www.usemod.com/cgi-bin/mb.pl?1" class="extiw" title="meatball:1">meatball:1</a>
+<a href="http://www.usemod.com/cgi-bin/mb.pl?2" class="extiw" title="meatball:2">meatball:2</a>
+<a href="http://www.usemod.com/cgi-bin/mb.pl?3" class="extiw" title="meatball:3">meatball:3</a>
</p>
!! end
@@ -7910,7 +8254,7 @@ language=fa
!! input
[http://en.wikipedia.org/]
!! result
-<p><a href="http://en.wikipedia.org/" class="external autonumber" rel="nofollow">[Û±]</a>
+<p><a rel="nofollow" class="external autonumber" href="http://en.wikipedia.org/">[Û±]</a>
</p>
!! end
@@ -8007,7 +8351,7 @@ comment
!! input
I like the [[Main Page]] a lot
!! result
-I like the <a href="/wiki/Main_Page">Main Page</a> a lot
+I like the <a href="/wiki/Main_Page" title="Main Page">Main Page</a> a lot
!!end
!! test
@@ -8109,6 +8453,24 @@ title=[[Main Page]]
!! end
!! test
+Anchor starting with underscore
+!!input
+[[#_ref|One]]
+!! result
+<p><a href="#_ref">One</a>
+</p>
+!! end
+
+!! test
+Id starting with underscore
+!!input
+<div id="_ref"></div>
+!! result
+<div id="_ref"></div>
+
+!! end
+
+!! test
Space normalisation on autocomment (bug 22784)
!! options
comment
@@ -8120,6 +8482,16 @@ title=[[Main Page]]
!! end
!! test
+percent-encoding and + signs in comments (Bug 26410)
+!! options
+comment
+!!input
+[[ABC%33D% ++]] [[ABC%33D% ++|+%20]]
+!! result
+<a href="/index.php?title=ABC3D%25_%2B%2B&amp;action=edit&amp;redlink=1" class="new" title="ABC3D% ++ (page does not exist)">ABC3D% ++</a> <a href="/index.php?title=ABC3D%25_%2B%2B&amp;action=edit&amp;redlink=1" class="new" title="ABC3D% ++ (page does not exist)">+%20</a>
+!! end
+
+!! test
Bad images - basic functionality
!! input
[[File:Bad.jpg]]
@@ -8305,6 +8677,143 @@ HTML5 data attributes
!! end
+!! test
+percent-encoding and + signs in internal links (Bug 26410)
+!! input
+[[User:+%]] [[Page+title%]]
+[[%+]] [[%+|%20]] [[%+ ]] [[%+r]]
+[[%]] [[+]] [[image:%+abc%39|foo|[[bar]]]]
+[[%33%45]] [[%33%45+]]
+!! result
+<p><a href="/index.php?title=User:%2B%25&amp;action=edit&amp;redlink=1" class="new" title="User:+% (page does not exist)">User:+%</a> <a href="/index.php?title=Page%2Btitle%25&amp;action=edit&amp;redlink=1" class="new" title="Page+title% (page does not exist)">Page+title%</a>
+<a href="/index.php?title=%25%2B&amp;action=edit&amp;redlink=1" class="new" title="%+ (page does not exist)">%+</a> <a href="/index.php?title=%25%2B&amp;action=edit&amp;redlink=1" class="new" title="%+ (page does not exist)">%20</a> <a href="/index.php?title=%25%2B&amp;action=edit&amp;redlink=1" class="new" title="%+ (page does not exist)">%+ </a> <a href="/index.php?title=%25%2Br&amp;action=edit&amp;redlink=1" class="new" title="%+r (page does not exist)">%+r</a>
+<a href="/index.php?title=%25&amp;action=edit&amp;redlink=1" class="new" title="% (page does not exist)">%</a> <a href="/index.php?title=%2B&amp;action=edit&amp;redlink=1" class="new" title="+ (page does not exist)">+</a> <a href="/index.php?title=Special:Upload&amp;wpDestFile=%25%2Babc9" class="new" title="File:%+abc9">bar</a>
+<a href="/index.php?title=3E&amp;action=edit&amp;redlink=1" class="new" title="3E (page does not exist)">3E</a> <a href="/index.php?title=3E%2B&amp;action=edit&amp;redlink=1" class="new" title="3E+ (page does not exist)">3E+</a>
+</p>
+!! end
+
+!! test
+Special characters in embedded file links (bug 27679)
+!! input
+[[File:Contains & ampersand.jpg]]
+[[File:Does not exist.jpg|Title with & ampersand]]
+!! result
+<p><a href="/index.php?title=Special:Upload&amp;wpDestFile=Contains_%26_ampersand.jpg" class="new" title="File:Contains &amp; ampersand.jpg">File:Contains &amp; ampersand.jpg</a>
+<a href="/index.php?title=Special:Upload&amp;wpDestFile=Does_not_exist.jpg" class="new" title="File:Does not exist.jpg">Title with &amp; ampersand</a>
+</p>
+!! end
+
+
+!! test
+Confirm that 'apos' named character reference doesn't make it to output (not legal in HTML 4)
+!! input
+Text&apos;s been normalized?
+!! result
+<p>Text&#39;s been normalized?
+</p>
+!! end
+
+!! article
+Mediawiki:loop1
+!! text
+{{Identical|A}}
+!! endarticle
+
+!! article
+Mediawiki:loop2
+!! text
+{{Identical|B}}
+!! endarticle
+
+!! article
+Template:Identical
+!! text
+{{int:loop1}}
+{{int:loop2}}
+!! endarticle
+
+!! test
+Bug 31098 Template which includes system messages which includes the template
+!! input
+{{Identical}}
+!! result
+<p><span class="error">Template loop detected: <a href="/wiki/Template:Identical" title="Template:Identical">Template:Identical</a></span>
+<span class="error">Template loop detected: <a href="/wiki/Template:Identical" title="Template:Identical">Template:Identical</a></span>
+</p>
+!! end
+
+!! test
+Bug31490 Turkish: ucfirst 'blah'
+!! options
+language=tr
+!! input
+{{ucfirst:blah}}
+!! result
+<p>Blah
+</p>
+!! end
+
+!! test
+Bug31490 Turkish: ucfirst 'ix'
+!! options
+language=tr
+!! input
+{{ucfirst:ix}}
+!! result
+<p>Ä°x
+</p>
+!! end
+
+!! test
+Bug31490 Turkish: lcfirst 'BLAH'
+!! options
+language=tr
+!! input
+{{lcfirst:BLAH}}
+!! result
+<p>bLAH
+</p>
+!! end
+
+!! test
+Bug31490 Turkish: ucfırst (with a dotless i)
+!! options
+language=tr
+!! input
+{{ucfırst:blah}}
+!! result
+<p><a href="/index.php?title=%C5%9Eablon:Ucf%C4%B1rst:blah&amp;action=edit&amp;redlink=1" class="new" title="Şablon:Ucfırst:blah (sayfa mevcut değil)">Şablon:Ucfırst:blah</a>
+</p>
+!! end
+
+!! test
+Bug31490 ucfırst (with a dotless i) with English language
+!! options
+language=en
+!! input
+{{ucfırst:blah}}
+!! result
+<p><a href="/index.php?title=Template:Ucf%C4%B1rst:blah&amp;action=edit&amp;redlink=1" class="new" title="Template:Ucfırst:blah (page does not exist)">Template:Ucfırst:blah</a>
+</p>
+!! end
+
+
+!! article
+MediaWiki:Bug32057
+!! text
+== {{int:headline_sample}} ==
+!! endarticle
+
+!! test
+Bug 32057: Title needed when expanding <h> nodes.
+!! options
+title=[[Main Page]]
+!! input
+{{int:Bug32057}}
+!! result
+<h2><span class="editsection">[<a href="/index.php?title=Main_Page&amp;action=edit&amp;section=1" title="Edit section: Headline text">edit</a>]</span> <span class="mw-headline" id="Headline_text"> Headline text </span></h2>
+
+!! end
TODO:
more images
diff --git a/maintenance/tests/parser/parserTestsParserHook.php b/tests/parser/parserTestsParserHook.php
index 6387208a..324b8e5c 100644
--- a/maintenance/tests/parser/parserTestsParserHook.php
+++ b/tests/parser/parserTestsParserHook.php
@@ -21,19 +21,19 @@
* http://www.gnu.org/copyleft/gpl.html
*
* @file
- * @ingroup Maintenance
+ * @ingroup Testing
* @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
*/
class ParserTestParserHook {
static function setup( &$parser ) {
- $parser->setHook( 'tag', array( __CLASS__, 'hook' ) );
+ $parser->setHook( 'tag', array( __CLASS__, 'dumpHook' ) );
return true;
}
- static function hook( $in, $argv ) {
+ static function dumpHook( $in, $argv ) {
ob_start();
var_dump(
$in,
diff --git a/maintenance/tests/parser/parserTestsStaticParserHook.php b/tests/parser/parserTestsStaticParserHook.php
index 72f82276..e82f7f3f 100644
--- a/maintenance/tests/parser/parserTestsStaticParserHook.php
+++ b/tests/parser/parserTestsStaticParserHook.php
@@ -21,7 +21,7 @@
* http://www.gnu.org/copyleft/gpl.html
*
* @file
- * @ingroup Maintenance
+ * @ingroup Testing
* @author Ævar Arnfjörð Bjarmason <avarab@gmail.com>
*/
@@ -36,7 +36,7 @@ class ParserTestStaticParserHook {
if ( ! count( $argv ) ) {
$parser->static_tag_buf = $in;
return '';
- } else if ( count( $argv ) === 1 && isset( $argv['action'] )
+ } elseif ( count( $argv ) === 1 && isset( $argv['action'] )
&& $argv['action'] === 'flush' && $in === null )
{
// Clear the buffer, we probably don't need to
diff --git a/tests/parser/preprocess/All_system_messages.expected b/tests/parser/preprocess/All_system_messages.expected
new file mode 100644
index 00000000..96d4569b
--- /dev/null
+++ b/tests/parser/preprocess/All_system_messages.expected
@@ -0,0 +1,5646 @@
+<root><template lineStart="1"><title>int:allmessagestext</title></template>
+
+&lt;table border=1 width=100%&gt;&lt;tr&gt;&lt;td&gt;
+'''Name'''
+&lt;/td&gt;&lt;td&gt;
+'''Default text'''
+&lt;/td&gt;&lt;td&gt;
+'''Current text'''
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1movedto2&amp;action=edit 1movedto2]&lt;br&gt;
+[[MediaWiki_talk:1movedto2|Talk]]
+&lt;/td&gt;&lt;td&gt;
+$1 moved to $2
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:1movedto2</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Monobook.css&amp;action=edit Monobook.css]&lt;br&gt;
+[[MediaWiki_talk:Monobook.css|Talk]]
+&lt;/td&gt;&lt;td&gt;
+/* edit this file to customize the monobook skin for the entire site */
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Monobook.css</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:About&amp;action=edit about]&lt;br&gt;
+[[MediaWiki_talk:About|Talk]]
+&lt;/td&gt;&lt;td&gt;
+About
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:About</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Aboutpage&amp;action=edit aboutpage]&lt;br&gt;
+[[MediaWiki_talk:Aboutpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary:About
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Aboutpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Aboutwikipedia&amp;action=edit aboutwikipedia]&lt;br&gt;
+[[MediaWiki_talk:Aboutwikipedia|Talk]]
+&lt;/td&gt;&lt;td&gt;
+About Wiktionary
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Aboutwikipedia</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-addsection&amp;action=edit accesskey-addsection]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-addsection|Talk]]
+&lt;/td&gt;&lt;td&gt;
++
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-addsection</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-anontalk&amp;action=edit accesskey-anontalk]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-anontalk|Talk]]
+&lt;/td&gt;&lt;td&gt;
+n
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-anontalk</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-anonuserpage&amp;action=edit accesskey-anonuserpage]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-anonuserpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-anonuserpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-article&amp;action=edit accesskey-article]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-article|Talk]]
+&lt;/td&gt;&lt;td&gt;
+a
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-article</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-compareselectedversions&amp;action=edit accesskey-compareselectedversions]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-compareselectedversions|Talk]]
+&lt;/td&gt;&lt;td&gt;
+v
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-compareselectedversions</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-contributions&amp;action=edit accesskey-contributions]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-contributions|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;amp;lt;accesskey-contributions&amp;amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-contributions</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-currentevents&amp;action=edit accesskey-currentevents]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-currentevents|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;amp;lt;accesskey-currentevents&amp;amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-currentevents</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-delete&amp;action=edit accesskey-delete]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-delete|Talk]]
+&lt;/td&gt;&lt;td&gt;
+d
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-delete</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-edit&amp;action=edit accesskey-edit]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-edit|Talk]]
+&lt;/td&gt;&lt;td&gt;
+e
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-edit</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-emailuser&amp;action=edit accesskey-emailuser]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-emailuser|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;amp;lt;accesskey-emailuser&amp;amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-emailuser</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-help&amp;action=edit accesskey-help]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-help|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;amp;lt;accesskey-help&amp;amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-help</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-history&amp;action=edit accesskey-history]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-history|Talk]]
+&lt;/td&gt;&lt;td&gt;
+h
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-history</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-login&amp;action=edit accesskey-login]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-login|Talk]]
+&lt;/td&gt;&lt;td&gt;
+o
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-login</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-logout&amp;action=edit accesskey-logout]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-logout|Talk]]
+&lt;/td&gt;&lt;td&gt;
+o
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-logout</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-mainpage&amp;action=edit accesskey-mainpage]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-mainpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+z
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-mainpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-minoredit&amp;action=edit accesskey-minoredit]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-minoredit|Talk]]
+&lt;/td&gt;&lt;td&gt;
+i
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-minoredit</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-move&amp;action=edit accesskey-move]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-move|Talk]]
+&lt;/td&gt;&lt;td&gt;
+m
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-move</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-mycontris&amp;action=edit accesskey-mycontris]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-mycontris|Talk]]
+&lt;/td&gt;&lt;td&gt;
+y
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-mycontris</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-mytalk&amp;action=edit accesskey-mytalk]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-mytalk|Talk]]
+&lt;/td&gt;&lt;td&gt;
+n
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-mytalk</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-portal&amp;action=edit accesskey-portal]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-portal|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;amp;lt;accesskey-portal&amp;amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-portal</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-preferences&amp;action=edit accesskey-preferences]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-preferences|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;amp;lt;accesskey-preferences&amp;amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-preferences</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-preview&amp;action=edit accesskey-preview]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-preview|Talk]]
+&lt;/td&gt;&lt;td&gt;
+p
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-preview</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-protect&amp;action=edit accesskey-protect]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-protect|Talk]]
+&lt;/td&gt;&lt;td&gt;
+=
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-protect</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-randompage&amp;action=edit accesskey-randompage]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-randompage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+x
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-randompage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-recentchanges&amp;action=edit accesskey-recentchanges]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-recentchanges|Talk]]
+&lt;/td&gt;&lt;td&gt;
+r
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-recentchanges</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-recentchangeslinked&amp;action=edit accesskey-recentchangeslinked]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-recentchangeslinked|Talk]]
+&lt;/td&gt;&lt;td&gt;
+c
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-recentchangeslinked</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-save&amp;action=edit accesskey-save]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-save|Talk]]
+&lt;/td&gt;&lt;td&gt;
+s
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-save</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-search&amp;action=edit accesskey-search]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-search|Talk]]
+&lt;/td&gt;&lt;td&gt;
+f
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-search</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-sitesupport&amp;action=edit accesskey-sitesupport]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-sitesupport|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;amp;lt;accesskey-sitesupport&amp;amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-sitesupport</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-specialpage&amp;action=edit accesskey-specialpage]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-specialpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;amp;lt;accesskey-specialpage&amp;amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-specialpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-specialpages&amp;action=edit accesskey-specialpages]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-specialpages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+q
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-specialpages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-talk&amp;action=edit accesskey-talk]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-talk|Talk]]
+&lt;/td&gt;&lt;td&gt;
+t
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-talk</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-undelete&amp;action=edit accesskey-undelete]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-undelete|Talk]]
+&lt;/td&gt;&lt;td&gt;
+d
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-undelete</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-unwatch&amp;action=edit accesskey-unwatch]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-unwatch|Talk]]
+&lt;/td&gt;&lt;td&gt;
+w
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-unwatch</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-upload&amp;action=edit accesskey-upload]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-upload|Talk]]
+&lt;/td&gt;&lt;td&gt;
+u
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-upload</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-userpage&amp;action=edit accesskey-userpage]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-userpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-userpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-viewsource&amp;action=edit accesskey-viewsource]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-viewsource|Talk]]
+&lt;/td&gt;&lt;td&gt;
+e
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-viewsource</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-watch&amp;action=edit accesskey-watch]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-watch|Talk]]
+&lt;/td&gt;&lt;td&gt;
+w
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-watch</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-watchlist&amp;action=edit accesskey-watchlist]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-watchlist|Talk]]
+&lt;/td&gt;&lt;td&gt;
+l
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-watchlist</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-whatlinkshere&amp;action=edit accesskey-whatlinkshere]&lt;br&gt;
+[[MediaWiki_talk:Accesskey-whatlinkshere|Talk]]
+&lt;/td&gt;&lt;td&gt;
+b
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accesskey-whatlinkshere</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accmailtext&amp;action=edit accmailtext]&lt;br&gt;
+[[MediaWiki_talk:Accmailtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The Password for &amp;#39;$1&amp;#39; has been sent to $2.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accmailtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accmailtitle&amp;action=edit accmailtitle]&lt;br&gt;
+[[MediaWiki_talk:Accmailtitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Password sent.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Accmailtitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Actioncomplete&amp;action=edit actioncomplete]&lt;br&gt;
+[[MediaWiki_talk:Actioncomplete|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Action complete
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Actioncomplete</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Addedwatch&amp;action=edit addedwatch]&lt;br&gt;
+[[MediaWiki_talk:Addedwatch|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Added to watchlist
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Addedwatch</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Addedwatchtext&amp;action=edit addedwatchtext]&lt;br&gt;
+[[MediaWiki_talk:Addedwatchtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The page &amp;quot;$1&amp;quot; has been added to your &amp;#91;&amp;#91;Special:Watchlist&amp;#124;watchlist]].
+Future changes to this page and its associated Talk page will be listed there,
+and the page will appear &amp;#39;&amp;#39;&amp;#39;bolded&amp;#39;&amp;#39;&amp;#39; in the &amp;#91;&amp;#91;Special:Recentchanges&amp;#124;list of recent changes]] to
+make it easier to pick out.
+
+&amp;lt;p&amp;gt;If you want to remove the page from your watchlist later, click &amp;quot;Stop watching&amp;quot; in the sidebar.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Addedwatchtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Addsection&amp;action=edit addsection]&lt;br&gt;
+[[MediaWiki_talk:Addsection|Talk]]
+&lt;/td&gt;&lt;td&gt;
++
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Addsection</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Administrators&amp;action=edit administrators]&lt;br&gt;
+[[MediaWiki_talk:Administrators|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary:Administrators
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Administrators</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Affirmation&amp;action=edit affirmation]&lt;br&gt;
+[[MediaWiki_talk:Affirmation|Talk]]
+&lt;/td&gt;&lt;td&gt;
+I affirm that the copyright holder of this file
+agrees to license it under the terms of the $1.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Affirmation</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:All&amp;action=edit all]&lt;br&gt;
+[[MediaWiki_talk:All|Talk]]
+&lt;/td&gt;&lt;td&gt;
+all
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:All</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Allmessages&amp;action=edit allmessages]&lt;br&gt;
+[[MediaWiki_talk:Allmessages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+All system messages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Allmessages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Allmessagestext&amp;action=edit allmessagestext]&lt;br&gt;
+[[MediaWiki_talk:Allmessagestext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This is a list of all system messages available in the MediaWiki: namespace.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Allmessagestext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Allpages&amp;action=edit allpages]&lt;br&gt;
+[[MediaWiki_talk:Allpages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+All pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Allpages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Alphaindexline&amp;action=edit alphaindexline]&lt;br&gt;
+[[MediaWiki_talk:Alphaindexline|Talk]]
+&lt;/td&gt;&lt;td&gt;
+$1 to $2
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Alphaindexline</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Alreadyloggedin&amp;action=edit alreadyloggedin]&lt;br&gt;
+[[MediaWiki_talk:Alreadyloggedin|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;font color=red&amp;gt;&amp;lt;b&amp;gt;User $1, you are already logged in!&amp;lt;/b&amp;gt;&amp;lt;/font&amp;gt;&amp;lt;br /&amp;gt;
+
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Alreadyloggedin</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Alreadyrolled&amp;action=edit alreadyrolled]&lt;br&gt;
+[[MediaWiki_talk:Alreadyrolled|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Cannot rollback last edit of &amp;#91;&amp;#91;$1]]
+by &amp;#91;&amp;#91;User:$2&amp;#124;$2]] (&amp;#91;&amp;#91;User talk:$2&amp;#124;Talk]]); someone else has edited or rolled back the page already.
+
+Last edit was by &amp;#91;&amp;#91;User:$3&amp;#124;$3]] (&amp;#91;&amp;#91;User talk:$3&amp;#124;Talk]]).
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Alreadyrolled</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ancientpages&amp;action=edit ancientpages]&lt;br&gt;
+[[MediaWiki_talk:Ancientpages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Oldest pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ancientpages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:And&amp;action=edit and]&lt;br&gt;
+[[MediaWiki_talk:And|Talk]]
+&lt;/td&gt;&lt;td&gt;
+and
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:And</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Anontalk&amp;action=edit anontalk]&lt;br&gt;
+[[MediaWiki_talk:Anontalk|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Talk for this IP
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Anontalk</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Anontalkpagetext&amp;action=edit anontalkpagetext]&lt;br&gt;
+[[MediaWiki_talk:Anontalkpagetext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+----&amp;#39;&amp;#39;This is the discussion page for an anonymous user who has not created an account yet or who does not use it. We therefore have to use the numerical &amp;#91;&amp;#91;IP address]] to identify him/her. Such an IP address can be shared by several users. If you are an anonymous user and feel that irrelevant comments have been directed at you, please &amp;#91;&amp;#91;Special:Userlogin&amp;#124;create an account or log in]] to avoid future confusion with other anonymous users.&amp;#39;&amp;#39;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Anontalkpagetext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Anonymous&amp;action=edit anonymous]&lt;br&gt;
+[[MediaWiki_talk:Anonymous|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Anonymous user(s) of Wiktionary
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Anonymous</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Article&amp;action=edit article]&lt;br&gt;
+[[MediaWiki_talk:Article|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Content page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Article</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Articleexists&amp;action=edit articleexists]&lt;br&gt;
+[[MediaWiki_talk:Articleexists|Talk]]
+&lt;/td&gt;&lt;td&gt;
+A page of that name already exists, or the
+name you have chosen is not valid.
+Please choose another name.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Articleexists</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Articlepage&amp;action=edit articlepage]&lt;br&gt;
+[[MediaWiki_talk:Articlepage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+View content page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Articlepage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Asksql&amp;action=edit asksql]&lt;br&gt;
+[[MediaWiki_talk:Asksql|Talk]]
+&lt;/td&gt;&lt;td&gt;
+SQL query
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Asksql</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Asksqltext&amp;action=edit asksqltext]&lt;br&gt;
+[[MediaWiki_talk:Asksqltext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Use the form below to make a direct query of the
+database.
+Use single quotes (&amp;#39;like this&amp;#39;) to delimit string literals.
+This can often add considerable load to the server, so please use
+this function sparingly.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Asksqltext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Autoblocker&amp;action=edit autoblocker]&lt;br&gt;
+[[MediaWiki_talk:Autoblocker|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Autoblocked because you share an IP address with &amp;quot;$1&amp;quot;. Reason &amp;quot;$2&amp;quot;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Autoblocker</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badarticleerror&amp;action=edit badarticleerror]&lt;br&gt;
+[[MediaWiki_talk:Badarticleerror|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This action cannot be performed on this page.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Badarticleerror</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badfilename&amp;action=edit badfilename]&lt;br&gt;
+[[MediaWiki_talk:Badfilename|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Image name has been changed to &amp;quot;$1&amp;quot;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Badfilename</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badfiletype&amp;action=edit badfiletype]&lt;br&gt;
+[[MediaWiki_talk:Badfiletype|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;quot;.$1&amp;quot; is not a recommended image file format.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Badfiletype</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badipaddress&amp;action=edit badipaddress]&lt;br&gt;
+[[MediaWiki_talk:Badipaddress|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Invalid IP address
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Badipaddress</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badquery&amp;action=edit badquery]&lt;br&gt;
+[[MediaWiki_talk:Badquery|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Badly formed search query
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Badquery</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badquerytext&amp;action=edit badquerytext]&lt;br&gt;
+[[MediaWiki_talk:Badquerytext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+We could not process your query.
+This is probably because you have attempted to search for a
+word fewer than three letters long, which is not yet supported.
+It could also be that you have mistyped the expression, for
+example &amp;quot;fish and and scales&amp;quot;.
+Please try another query.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Badquerytext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badretype&amp;action=edit badretype]&lt;br&gt;
+[[MediaWiki_talk:Badretype|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The passwords you entered do not match.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Badretype</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badtitle&amp;action=edit badtitle]&lt;br&gt;
+[[MediaWiki_talk:Badtitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Bad title
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Badtitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badtitletext&amp;action=edit badtitletext]&lt;br&gt;
+[[MediaWiki_talk:Badtitletext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The requested page title was invalid, empty, or
+an incorrectly linked inter-language or inter-wiki title.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Badtitletext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blanknamespace&amp;action=edit blanknamespace]&lt;br&gt;
+[[MediaWiki_talk:Blanknamespace|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(Main)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Blanknamespace</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockedtext&amp;action=edit blockedtext]&lt;br&gt;
+[[MediaWiki_talk:Blockedtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Your user name or IP address has been blocked by $1.
+The reason given is this:&amp;lt;br /&amp;gt;&amp;#39;&amp;#39;$2&amp;#39;&amp;#39;&amp;lt;p&amp;gt;You may contact $1 or one of the other
+&amp;#91;&amp;#91;Wiktionary:Administrators&amp;#124;administrators]] to discuss the block.
+
+Note that you may not use the &amp;quot;email this user&amp;quot; feature unless you have a valid email address registered in your &amp;#91;&amp;#91;Special:Preferences&amp;#124;user preferences]].
+
+Your IP address is $3. Please include this address in any queries you make.
+
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Blockedtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockedtitle&amp;action=edit blockedtitle]&lt;br&gt;
+[[MediaWiki_talk:Blockedtitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+User is blocked
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Blockedtitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockip&amp;action=edit blockip]&lt;br&gt;
+[[MediaWiki_talk:Blockip|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Block user
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Blockip</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockipsuccesssub&amp;action=edit blockipsuccesssub]&lt;br&gt;
+[[MediaWiki_talk:Blockipsuccesssub|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Block succeeded
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Blockipsuccesssub</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockipsuccesstext&amp;action=edit blockipsuccesstext]&lt;br&gt;
+[[MediaWiki_talk:Blockipsuccesstext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;quot;$1&amp;quot; has been blocked.
+&amp;lt;br /&amp;gt;See &amp;#91;&amp;#91;Special:Ipblocklist&amp;#124;IP block list]] to review blocks.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Blockipsuccesstext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockiptext&amp;action=edit blockiptext]&lt;br&gt;
+[[MediaWiki_talk:Blockiptext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Use the form below to block write access
+from a specific IP address or username.
+This should be done only only to prevent vandalism, and in
+accordance with &amp;#91;&amp;#91;Wiktionary:Policy&amp;#124;policy]].
+Fill in a specific reason below (for example, citing particular
+pages that were vandalized).
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Blockiptext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklink&amp;action=edit blocklink]&lt;br&gt;
+[[MediaWiki_talk:Blocklink|Talk]]
+&lt;/td&gt;&lt;td&gt;
+block
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Blocklink</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklistline&amp;action=edit blocklistline]&lt;br&gt;
+[[MediaWiki_talk:Blocklistline|Talk]]
+&lt;/td&gt;&lt;td&gt;
+$1, $2 blocked $3 (expires $4)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Blocklistline</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklogentry&amp;action=edit blocklogentry]&lt;br&gt;
+[[MediaWiki_talk:Blocklogentry|Talk]]
+&lt;/td&gt;&lt;td&gt;
+blocked &amp;quot;$1&amp;quot; with an expiry time of $2
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Blocklogentry</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklogpage&amp;action=edit blocklogpage]&lt;br&gt;
+[[MediaWiki_talk:Blocklogpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Block_log
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Blocklogpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklogtext&amp;action=edit blocklogtext]&lt;br&gt;
+[[MediaWiki_talk:Blocklogtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This is a log of user blocking and unblocking actions. Automatically
+blocked IP addresses are not be listed. See the &amp;#91;&amp;#91;Special:Ipblocklist&amp;#124;IP block list]] for
+the list of currently operational bans and blocks.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Blocklogtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bold_sample&amp;action=edit bold_sample]&lt;br&gt;
+[[MediaWiki_talk:Bold_sample|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Bold text
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Bold_sample</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bold_tip&amp;action=edit bold_tip]&lt;br&gt;
+[[MediaWiki_talk:Bold_tip|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Bold text
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Bold_tip</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Booksources&amp;action=edit booksources]&lt;br&gt;
+[[MediaWiki_talk:Booksources|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Book sources
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Booksources</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Booksourcetext&amp;action=edit booksourcetext]&lt;br&gt;
+[[MediaWiki_talk:Booksourcetext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Below is a list of links to other sites that
+sell new and used books, and may also have further information
+about books you are looking for.Wiktionary is not affiliated with any of these businesses, and
+this list should not be construed as an endorsement.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Booksourcetext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Brokenredirects&amp;action=edit brokenredirects]&lt;br&gt;
+[[MediaWiki_talk:Brokenredirects|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Broken Redirects
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Brokenredirects</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Brokenredirectstext&amp;action=edit brokenredirectstext]&lt;br&gt;
+[[MediaWiki_talk:Brokenredirectstext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The following redirects link to a non-existing pages.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Brokenredirectstext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bugreports&amp;action=edit bugreports]&lt;br&gt;
+[[MediaWiki_talk:Bugreports|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Bug reports
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Bugreports</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bugreportspage&amp;action=edit bugreportspage]&lt;br&gt;
+[[MediaWiki_talk:Bugreportspage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary:Bug_reports
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Bugreportspage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucratlog&amp;action=edit bureaucratlog]&lt;br&gt;
+[[MediaWiki_talk:Bureaucratlog|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Bureaucrat_log
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Bureaucratlog</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucratlogentry&amp;action=edit bureaucratlogentry]&lt;br&gt;
+[[MediaWiki_talk:Bureaucratlogentry|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Rights for user &amp;quot;$1&amp;quot; set &amp;quot;$2&amp;quot;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Bureaucratlogentry</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucrattext&amp;action=edit bureaucrattext]&lt;br&gt;
+[[MediaWiki_talk:Bureaucrattext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The action you have requested can only be
+performed by sysops with &amp;quot;bureaucrat&amp;quot; status.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Bureaucrattext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucrattitle&amp;action=edit bureaucrattitle]&lt;br&gt;
+[[MediaWiki_talk:Bureaucrattitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Bureaucrat access required
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Bureaucrattitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bydate&amp;action=edit bydate]&lt;br&gt;
+[[MediaWiki_talk:Bydate|Talk]]
+&lt;/td&gt;&lt;td&gt;
+by date
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Bydate</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Byname&amp;action=edit byname]&lt;br&gt;
+[[MediaWiki_talk:Byname|Talk]]
+&lt;/td&gt;&lt;td&gt;
+by name
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Byname</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bysize&amp;action=edit bysize]&lt;br&gt;
+[[MediaWiki_talk:Bysize|Talk]]
+&lt;/td&gt;&lt;td&gt;
+by size
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Bysize</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cachederror&amp;action=edit cachederror]&lt;br&gt;
+[[MediaWiki_talk:Cachederror|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The following is a cached copy of the requested page, and may not be up to date.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Cachederror</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cancel&amp;action=edit cancel]&lt;br&gt;
+[[MediaWiki_talk:Cancel|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Cancel
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Cancel</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cannotdelete&amp;action=edit cannotdelete]&lt;br&gt;
+[[MediaWiki_talk:Cannotdelete|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Could not delete the page or image specified. (It may have already been deleted by someone else.)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Cannotdelete</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cantrollback&amp;action=edit cantrollback]&lt;br&gt;
+[[MediaWiki_talk:Cantrollback|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Cannot revert edit; last contributor is only author of this page.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Cantrollback</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Categories&amp;action=edit categories]&lt;br&gt;
+[[MediaWiki_talk:Categories|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Categories
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Categories</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Category&amp;action=edit category]&lt;br&gt;
+[[MediaWiki_talk:Category|Talk]]
+&lt;/td&gt;&lt;td&gt;
+category
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Category</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Category_header&amp;action=edit category_header]&lt;br&gt;
+[[MediaWiki_talk:Category_header|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Articles in category &amp;quot;$1&amp;quot;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Category_header</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Changepassword&amp;action=edit changepassword]&lt;br&gt;
+[[MediaWiki_talk:Changepassword|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Change password
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Changepassword</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Changes&amp;action=edit changes]&lt;br&gt;
+[[MediaWiki_talk:Changes|Talk]]
+&lt;/td&gt;&lt;td&gt;
+changes
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Changes</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Columns&amp;action=edit columns]&lt;br&gt;
+[[MediaWiki_talk:Columns|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Columns
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Columns</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Commentedit&amp;action=edit commentedit]&lt;br&gt;
+[[MediaWiki_talk:Commentedit|Talk]]
+&lt;/td&gt;&lt;td&gt;
+ (comment)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Commentedit</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Compareselectedversions&amp;action=edit compareselectedversions]&lt;br&gt;
+[[MediaWiki_talk:Compareselectedversions|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Compare selected versions
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Compareselectedversions</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirm&amp;action=edit confirm]&lt;br&gt;
+[[MediaWiki_talk:Confirm|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Confirm
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Confirm</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmcheck&amp;action=edit confirmcheck]&lt;br&gt;
+[[MediaWiki_talk:Confirmcheck|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Yes, I really want to delete this.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Confirmcheck</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmdelete&amp;action=edit confirmdelete]&lt;br&gt;
+[[MediaWiki_talk:Confirmdelete|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Confirm delete
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Confirmdelete</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmdeletetext&amp;action=edit confirmdeletetext]&lt;br&gt;
+[[MediaWiki_talk:Confirmdeletetext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You are about to permanently delete a page
+or image along with all of its history from the database.
+Please confirm that you intend to do this, that you understand the
+consequences, and that you are doing this in accordance with
+&amp;#91;&amp;#91;Wiktionary:Policy]].
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Confirmdeletetext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmprotect&amp;action=edit confirmprotect]&lt;br&gt;
+[[MediaWiki_talk:Confirmprotect|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Confirm protection
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Confirmprotect</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmprotecttext&amp;action=edit confirmprotecttext]&lt;br&gt;
+[[MediaWiki_talk:Confirmprotecttext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Do you really want to protect this page?
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Confirmprotecttext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmunprotect&amp;action=edit confirmunprotect]&lt;br&gt;
+[[MediaWiki_talk:Confirmunprotect|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Confirm unprotection
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Confirmunprotect</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmunprotecttext&amp;action=edit confirmunprotecttext]&lt;br&gt;
+[[MediaWiki_talk:Confirmunprotecttext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Do you really want to unprotect this page?
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Confirmunprotecttext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contextchars&amp;action=edit contextchars]&lt;br&gt;
+[[MediaWiki_talk:Contextchars|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Characters of context per line
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Contextchars</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contextlines&amp;action=edit contextlines]&lt;br&gt;
+[[MediaWiki_talk:Contextlines|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Lines to show per hit
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Contextlines</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contribslink&amp;action=edit contribslink]&lt;br&gt;
+[[MediaWiki_talk:Contribslink|Talk]]
+&lt;/td&gt;&lt;td&gt;
+contribs
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Contribslink</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contribsub&amp;action=edit contribsub]&lt;br&gt;
+[[MediaWiki_talk:Contribsub|Talk]]
+&lt;/td&gt;&lt;td&gt;
+For $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Contribsub</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contributions&amp;action=edit contributions]&lt;br&gt;
+[[MediaWiki_talk:Contributions|Talk]]
+&lt;/td&gt;&lt;td&gt;
+User contributions
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Contributions</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyright&amp;action=edit copyright]&lt;br&gt;
+[[MediaWiki_talk:Copyright|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Content is available under $1.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Copyright</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyrightpage&amp;action=edit copyrightpage]&lt;br&gt;
+[[MediaWiki_talk:Copyrightpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary:Copyrights
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Copyrightpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyrightpagename&amp;action=edit copyrightpagename]&lt;br&gt;
+[[MediaWiki_talk:Copyrightpagename|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary copyright
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Copyrightpagename</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyrightwarning&amp;action=edit copyrightwarning]&lt;br&gt;
+[[MediaWiki_talk:Copyrightwarning|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Please note that all contributions to Wiktionary are
+considered to be released under the GNU Free Documentation License
+(see $1 for details).
+If you don&amp;#39;t want your writing to be edited mercilessly and redistributed
+at will, then don&amp;#39;t submit it here.&amp;lt;br /&amp;gt;
+You are also promising us that you wrote this yourself, or copied it from a
+public domain or similar free resource.
+&amp;lt;strong&amp;gt;DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!&amp;lt;/strong&amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Copyrightwarning</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Couldntremove&amp;action=edit couldntremove]&lt;br&gt;
+[[MediaWiki_talk:Couldntremove|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Couldn&amp;#39;t remove item &amp;#39;$1&amp;#39;...
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Couldntremove</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Createaccount&amp;action=edit createaccount]&lt;br&gt;
+[[MediaWiki_talk:Createaccount|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Create new account
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Createaccount</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Createaccountmail&amp;action=edit createaccountmail]&lt;br&gt;
+[[MediaWiki_talk:Createaccountmail|Talk]]
+&lt;/td&gt;&lt;td&gt;
+by email
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Createaccountmail</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cur&amp;action=edit cur]&lt;br&gt;
+[[MediaWiki_talk:Cur|Talk]]
+&lt;/td&gt;&lt;td&gt;
+cur
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Cur</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Currentevents&amp;action=edit currentevents]&lt;br&gt;
+[[MediaWiki_talk:Currentevents|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Current events
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Currentevents</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Currentrev&amp;action=edit currentrev]&lt;br&gt;
+[[MediaWiki_talk:Currentrev|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Current revision
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Currentrev</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Databaseerror&amp;action=edit databaseerror]&lt;br&gt;
+[[MediaWiki_talk:Databaseerror|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Database error
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Databaseerror</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dateformat&amp;action=edit dateformat]&lt;br&gt;
+[[MediaWiki_talk:Dateformat|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Date format
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Dateformat</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dberrortext&amp;action=edit dberrortext]&lt;br&gt;
+[[MediaWiki_talk:Dberrortext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+A database query syntax error has occurred.
+This could be because of an illegal search query (see $5),
+or it may indicate a bug in the software.
+The last attempted database query was:
+&amp;lt;blockquote&amp;gt;&amp;lt;tt&amp;gt;$1&amp;lt;/tt&amp;gt;&amp;lt;/blockquote&amp;gt;
+from within function &amp;quot;&amp;lt;tt&amp;gt;$2&amp;lt;/tt&amp;gt;&amp;quot;.
+MySQL returned error &amp;quot;&amp;lt;tt&amp;gt;$3: $4&amp;lt;/tt&amp;gt;&amp;quot;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Dberrortext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dberrortextcl&amp;action=edit dberrortextcl]&lt;br&gt;
+[[MediaWiki_talk:Dberrortextcl|Talk]]
+&lt;/td&gt;&lt;td&gt;
+A database query syntax error has occurred.
+The last attempted database query was:
+&amp;quot;$1&amp;quot;
+from within function &amp;quot;$2&amp;quot;.
+MySQL returned error &amp;quot;$3: $4&amp;quot;.
+
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Dberrortextcl</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deadendpages&amp;action=edit deadendpages]&lt;br&gt;
+[[MediaWiki_talk:Deadendpages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Dead-end pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Deadendpages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Debug&amp;action=edit debug]&lt;br&gt;
+[[MediaWiki_talk:Debug|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Debug
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Debug</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Defaultns&amp;action=edit defaultns]&lt;br&gt;
+[[MediaWiki_talk:Defaultns|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Search in these namespaces by default:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Defaultns</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Defemailsubject&amp;action=edit defemailsubject]&lt;br&gt;
+[[MediaWiki_talk:Defemailsubject|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary e-mail
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Defemailsubject</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Delete&amp;action=edit delete]&lt;br&gt;
+[[MediaWiki_talk:Delete|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Delete
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Delete</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletecomment&amp;action=edit deletecomment]&lt;br&gt;
+[[MediaWiki_talk:Deletecomment|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Reason for deletion
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Deletecomment</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletedarticle&amp;action=edit deletedarticle]&lt;br&gt;
+[[MediaWiki_talk:Deletedarticle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+deleted &amp;quot;$1&amp;quot;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Deletedarticle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletedtext&amp;action=edit deletedtext]&lt;br&gt;
+[[MediaWiki_talk:Deletedtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;quot;$1&amp;quot; has been deleted.
+See $2 for a record of recent deletions.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Deletedtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deleteimg&amp;action=edit deleteimg]&lt;br&gt;
+[[MediaWiki_talk:Deleteimg|Talk]]
+&lt;/td&gt;&lt;td&gt;
+del
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Deleteimg</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletepage&amp;action=edit deletepage]&lt;br&gt;
+[[MediaWiki_talk:Deletepage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Delete page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Deletepage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletesub&amp;action=edit deletesub]&lt;br&gt;
+[[MediaWiki_talk:Deletesub|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(Deleting &amp;quot;$1&amp;quot;)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Deletesub</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletethispage&amp;action=edit deletethispage]&lt;br&gt;
+[[MediaWiki_talk:Deletethispage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Delete this page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Deletethispage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletionlog&amp;action=edit deletionlog]&lt;br&gt;
+[[MediaWiki_talk:Deletionlog|Talk]]
+&lt;/td&gt;&lt;td&gt;
+deletion log
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Deletionlog</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dellogpage&amp;action=edit dellogpage]&lt;br&gt;
+[[MediaWiki_talk:Dellogpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Deletion_log
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Dellogpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dellogpagetext&amp;action=edit dellogpagetext]&lt;br&gt;
+[[MediaWiki_talk:Dellogpagetext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Below is a list of the most recent deletions.
+All times shown are server time (UTC).
+&amp;lt;ul&amp;gt;
+&amp;lt;/ul&amp;gt;
+
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Dellogpagetext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Developerspheading&amp;action=edit developerspheading]&lt;br&gt;
+[[MediaWiki_talk:Developerspheading|Talk]]
+&lt;/td&gt;&lt;td&gt;
+For developer use only
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Developerspheading</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Developertext&amp;action=edit developertext]&lt;br&gt;
+[[MediaWiki_talk:Developertext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The action you have requested can only be
+performed by users with &amp;quot;developer&amp;quot; status.
+See $1.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Developertext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Developertitle&amp;action=edit developertitle]&lt;br&gt;
+[[MediaWiki_talk:Developertitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Developer access required
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Developertitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Diff&amp;action=edit diff]&lt;br&gt;
+[[MediaWiki_talk:Diff|Talk]]
+&lt;/td&gt;&lt;td&gt;
+diff
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Diff</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Difference&amp;action=edit difference]&lt;br&gt;
+[[MediaWiki_talk:Difference|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(Difference between revisions)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Difference</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disambiguations&amp;action=edit disambiguations]&lt;br&gt;
+[[MediaWiki_talk:Disambiguations|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Disambiguation pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Disambiguations</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disambiguationspage&amp;action=edit disambiguationspage]&lt;br&gt;
+[[MediaWiki_talk:Disambiguationspage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary:Links_to_disambiguating_pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Disambiguationspage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disambiguationstext&amp;action=edit disambiguationstext]&lt;br&gt;
+[[MediaWiki_talk:Disambiguationstext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The following pages link to a &amp;lt;i&amp;gt;disambiguation page&amp;lt;/i&amp;gt;. They should link to the appropriate topic instead.&amp;lt;br /&amp;gt;A page is treated as dismbiguation if it is linked from $1.&amp;lt;br /&amp;gt;Links from other namespaces are &amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt; listed here.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Disambiguationstext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disclaimerpage&amp;action=edit disclaimerpage]&lt;br&gt;
+[[MediaWiki_talk:Disclaimerpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary:General_disclaimer
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Disclaimerpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disclaimers&amp;action=edit disclaimers]&lt;br&gt;
+[[MediaWiki_talk:Disclaimers|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Disclaimers
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Disclaimers</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Doubleredirects&amp;action=edit doubleredirects]&lt;br&gt;
+[[MediaWiki_talk:Doubleredirects|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Double Redirects
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Doubleredirects</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Doubleredirectstext&amp;action=edit doubleredirectstext]&lt;br&gt;
+[[MediaWiki_talk:Doubleredirectstext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;b&amp;gt;Attention:&amp;lt;/b&amp;gt; This list may contain false positives. That usually means there is additional text with links below the first #REDIRECT.&amp;lt;br /&amp;gt;
+Each row contains links to the first and second redirect, as well as the first line of the second redirect text, usually giving the &amp;quot;real&amp;quot; target page, which the first redirect should point to.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Doubleredirectstext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Edit&amp;action=edit edit]&lt;br&gt;
+[[MediaWiki_talk:Edit|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Edit
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Edit</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editcomment&amp;action=edit editcomment]&lt;br&gt;
+[[MediaWiki_talk:Editcomment|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The edit comment was: &amp;quot;&amp;lt;i&amp;gt;$1&amp;lt;/i&amp;gt;&amp;quot;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Editcomment</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editconflict&amp;action=edit editconflict]&lt;br&gt;
+[[MediaWiki_talk:Editconflict|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Edit conflict: $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Editconflict</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editcurrent&amp;action=edit editcurrent]&lt;br&gt;
+[[MediaWiki_talk:Editcurrent|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Edit the current version of this page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Editcurrent</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Edithelp&amp;action=edit edithelp]&lt;br&gt;
+[[MediaWiki_talk:Edithelp|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Editing help
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Edithelp</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Edithelppage&amp;action=edit edithelppage]&lt;br&gt;
+[[MediaWiki_talk:Edithelppage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Help:Editing
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Edithelppage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editing&amp;action=edit editing]&lt;br&gt;
+[[MediaWiki_talk:Editing|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Editing $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Editing</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editingold&amp;action=edit editingold]&lt;br&gt;
+[[MediaWiki_talk:Editingold|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;strong&amp;gt;WARNING: You are editing an out-of-date
+revision of this page.
+If you save it, any changes made since this revision will be lost.&amp;lt;/strong&amp;gt;
+
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Editingold</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editsection&amp;action=edit editsection]&lt;br&gt;
+[[MediaWiki_talk:Editsection|Talk]]
+&lt;/td&gt;&lt;td&gt;
+edit
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Editsection</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editthispage&amp;action=edit editthispage]&lt;br&gt;
+[[MediaWiki_talk:Editthispage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Edit this page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Editthispage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailflag&amp;action=edit emailflag]&lt;br&gt;
+[[MediaWiki_talk:Emailflag|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Disable e-mail from other users
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Emailflag</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailforlost&amp;action=edit emailforlost]&lt;br&gt;
+[[MediaWiki_talk:Emailforlost|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Fields marked with a star (*) are optional. Storing an email address enables people to contact you through the website without you having to reveal your
+email address to them, and it can be used to send you a new password if you forget it.&amp;lt;br /&amp;gt;&amp;lt;br /&amp;gt;Your real name, if you choose to provide it, will be used for giving you attribution for your work.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Emailforlost</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailfrom&amp;action=edit emailfrom]&lt;br&gt;
+[[MediaWiki_talk:Emailfrom|Talk]]
+&lt;/td&gt;&lt;td&gt;
+From
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Emailfrom</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailmessage&amp;action=edit emailmessage]&lt;br&gt;
+[[MediaWiki_talk:Emailmessage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Message
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Emailmessage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailpage&amp;action=edit emailpage]&lt;br&gt;
+[[MediaWiki_talk:Emailpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+E-mail user
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Emailpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailpagetext&amp;action=edit emailpagetext]&lt;br&gt;
+[[MediaWiki_talk:Emailpagetext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+If this user has entered a valid e-mail address in
+his or her user preferences, the form below will send a single message.
+The e-mail address you entered in your user preferences will appear
+as the &amp;quot;From&amp;quot; address of the mail, so the recipient will be able
+to reply.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Emailpagetext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsend&amp;action=edit emailsend]&lt;br&gt;
+[[MediaWiki_talk:Emailsend|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Send
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Emailsend</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsent&amp;action=edit emailsent]&lt;br&gt;
+[[MediaWiki_talk:Emailsent|Talk]]
+&lt;/td&gt;&lt;td&gt;
+E-mail sent
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Emailsent</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsenttext&amp;action=edit emailsenttext]&lt;br&gt;
+[[MediaWiki_talk:Emailsenttext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Your e-mail message has been sent.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Emailsenttext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsubject&amp;action=edit emailsubject]&lt;br&gt;
+[[MediaWiki_talk:Emailsubject|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Subject
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Emailsubject</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailto&amp;action=edit emailto]&lt;br&gt;
+[[MediaWiki_talk:Emailto|Talk]]
+&lt;/td&gt;&lt;td&gt;
+To
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Emailto</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailuser&amp;action=edit emailuser]&lt;br&gt;
+[[MediaWiki_talk:Emailuser|Talk]]
+&lt;/td&gt;&lt;td&gt;
+E-mail this user
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Emailuser</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Enterlockreason&amp;action=edit enterlockreason]&lt;br&gt;
+[[MediaWiki_talk:Enterlockreason|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Enter a reason for the lock, including an estimate
+of when the lock will be released
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Enterlockreason</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Error&amp;action=edit error]&lt;br&gt;
+[[MediaWiki_talk:Error|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Error
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Error</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Errorpagetitle&amp;action=edit errorpagetitle]&lt;br&gt;
+[[MediaWiki_talk:Errorpagetitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Error
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Errorpagetitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exbeforeblank&amp;action=edit exbeforeblank]&lt;br&gt;
+[[MediaWiki_talk:Exbeforeblank|Talk]]
+&lt;/td&gt;&lt;td&gt;
+content before blanking was:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Exbeforeblank</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exblank&amp;action=edit exblank]&lt;br&gt;
+[[MediaWiki_talk:Exblank|Talk]]
+&lt;/td&gt;&lt;td&gt;
+page was empty
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Exblank</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Excontent&amp;action=edit excontent]&lt;br&gt;
+[[MediaWiki_talk:Excontent|Talk]]
+&lt;/td&gt;&lt;td&gt;
+content was:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Excontent</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Explainconflict&amp;action=edit explainconflict]&lt;br&gt;
+[[MediaWiki_talk:Explainconflict|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Someone else has changed this page since you
+started editing it.
+The upper text area contains the page text as it currently exists.
+Your changes are shown in the lower text area.
+You will have to merge your changes into the existing text.
+&amp;lt;b&amp;gt;Only&amp;lt;/b&amp;gt; the text in the upper text area will be saved when you
+press &amp;quot;Save page&amp;quot;.
+&amp;lt;p&amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Explainconflict</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Export&amp;action=edit export]&lt;br&gt;
+[[MediaWiki_talk:Export|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Export pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Export</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exportcuronly&amp;action=edit exportcuronly]&lt;br&gt;
+[[MediaWiki_talk:Exportcuronly|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Include only the current revision, not the full history
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Exportcuronly</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exporttext&amp;action=edit exporttext]&lt;br&gt;
+[[MediaWiki_talk:Exporttext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You can export the text and editing history of a particular
+page or set of pages wrapped in some XML; this can then be imported into another
+wiki running MediaWiki software, transformed, or just kept for your private
+amusement.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Exporttext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Extlink_sample&amp;action=edit extlink_sample]&lt;br&gt;
+[[MediaWiki_talk:Extlink_sample|Talk]]
+&lt;/td&gt;&lt;td&gt;
+http&amp;#58;//www.example.com link title
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Extlink_sample</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Extlink_tip&amp;action=edit extlink_tip]&lt;br&gt;
+[[MediaWiki_talk:Extlink_tip|Talk]]
+&lt;/td&gt;&lt;td&gt;
+External link (remember http&amp;#58;// prefix)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Extlink_tip</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Faq&amp;action=edit faq]&lt;br&gt;
+[[MediaWiki_talk:Faq|Talk]]
+&lt;/td&gt;&lt;td&gt;
+FAQ
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Faq</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Faqpage&amp;action=edit faqpage]&lt;br&gt;
+[[MediaWiki_talk:Faqpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary:FAQ
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Faqpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Feedlinks&amp;action=edit feedlinks]&lt;br&gt;
+[[MediaWiki_talk:Feedlinks|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Feed:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Feedlinks</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filecopyerror&amp;action=edit filecopyerror]&lt;br&gt;
+[[MediaWiki_talk:Filecopyerror|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Could not copy file &amp;quot;$1&amp;quot; to &amp;quot;$2&amp;quot;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Filecopyerror</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filedeleteerror&amp;action=edit filedeleteerror]&lt;br&gt;
+[[MediaWiki_talk:Filedeleteerror|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Could not delete file &amp;quot;$1&amp;quot;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Filedeleteerror</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filedesc&amp;action=edit filedesc]&lt;br&gt;
+[[MediaWiki_talk:Filedesc|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Summary
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Filedesc</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filename&amp;action=edit filename]&lt;br&gt;
+[[MediaWiki_talk:Filename|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Filename
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Filename</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filenotfound&amp;action=edit filenotfound]&lt;br&gt;
+[[MediaWiki_talk:Filenotfound|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Could not find file &amp;quot;$1&amp;quot;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Filenotfound</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filerenameerror&amp;action=edit filerenameerror]&lt;br&gt;
+[[MediaWiki_talk:Filerenameerror|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Could not rename file &amp;quot;$1&amp;quot; to &amp;quot;$2&amp;quot;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Filerenameerror</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filesource&amp;action=edit filesource]&lt;br&gt;
+[[MediaWiki_talk:Filesource|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Source
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Filesource</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filestatus&amp;action=edit filestatus]&lt;br&gt;
+[[MediaWiki_talk:Filestatus|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Copyright status
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Filestatus</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Fileuploaded&amp;action=edit fileuploaded]&lt;br&gt;
+[[MediaWiki_talk:Fileuploaded|Talk]]
+&lt;/td&gt;&lt;td&gt;
+File &amp;quot;$1&amp;quot; uploaded successfully.
+Please follow this link: $2 to the description page and fill
+in information about the file, such as where it came from, when it was
+created and by whom, and anything else you may know about it.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Fileuploaded</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Formerror&amp;action=edit formerror]&lt;br&gt;
+[[MediaWiki_talk:Formerror|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Error: could not submit form
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Formerror</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Fromwikipedia&amp;action=edit fromwikipedia]&lt;br&gt;
+[[MediaWiki_talk:Fromwikipedia|Talk]]
+&lt;/td&gt;&lt;td&gt;
+From Wiktionary
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Fromwikipedia</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Getimagelist&amp;action=edit getimagelist]&lt;br&gt;
+[[MediaWiki_talk:Getimagelist|Talk]]
+&lt;/td&gt;&lt;td&gt;
+fetching image list
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Getimagelist</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Go&amp;action=edit go]&lt;br&gt;
+[[MediaWiki_talk:Go|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Go
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Go</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Googlesearch&amp;action=edit googlesearch]&lt;br&gt;
+[[MediaWiki_talk:Googlesearch|Talk]]
+&lt;/td&gt;&lt;td&gt;
+
+&amp;lt;!-- SiteSearch Google --&amp;gt;
+&amp;lt;FORM method=GET action=&amp;quot;http&amp;#58;//www.google.com/search&amp;quot;&amp;gt;
+&amp;lt;TABLE bgcolor=&amp;quot;#FFFFFF&amp;quot;&amp;gt;&amp;lt;tr&amp;gt;&amp;lt;td&amp;gt;
+&amp;lt;A HREF=&amp;quot;http&amp;#58;//www.google.com/&amp;quot;&amp;gt;
+&amp;lt;IMG SRC=&amp;quot;http&amp;#58;//www.google.com/logos/Logo_40wht.gif&amp;quot;
+border=&amp;quot;0&amp;quot; ALT=&amp;quot;Google&amp;quot;&amp;gt;&amp;lt;/A&amp;gt;
+&amp;lt;/td&amp;gt;
+&amp;lt;td&amp;gt;
+&amp;lt;INPUT TYPE=text name=q size=31 maxlength=255 value=&amp;quot;$1&amp;quot;&amp;gt;
+&amp;lt;INPUT type=submit name=btnG VALUE=&amp;quot;Google Search&amp;quot;&amp;gt;
+&amp;lt;font size=-1&amp;gt;
+&amp;lt;input type=hidden name=domains value=&amp;quot;http&amp;#58;//tl.wiktionary.org&amp;quot;&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;input type=radio name=sitesearch value=&amp;quot;&amp;quot;&amp;gt; WWW &amp;lt;input type=radio name=sitesearch value=&amp;quot;http&amp;#58;//tl.wiktionary.org&amp;quot; checked&amp;gt; http&amp;#58;//tl.wiktionary.org &amp;lt;br /&amp;gt;
+&amp;lt;input type=&amp;#39;hidden&amp;#39; name=&amp;#39;ie&amp;#39; value=&amp;#39;$2&amp;#39;&amp;gt;
+&amp;lt;input type=&amp;#39;hidden&amp;#39; name=&amp;#39;oe&amp;#39; value=&amp;#39;$2&amp;#39;&amp;gt;
+&amp;lt;/font&amp;gt;
+&amp;lt;/td&amp;gt;&amp;lt;/tr&amp;gt;&amp;lt;/TABLE&amp;gt;
+&amp;lt;/FORM&amp;gt;
+&amp;lt;!-- SiteSearch Google --&amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Googlesearch</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Guesstimezone&amp;action=edit guesstimezone]&lt;br&gt;
+[[MediaWiki_talk:Guesstimezone|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Fill in from browser
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Guesstimezone</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Headline_sample&amp;action=edit headline_sample]&lt;br&gt;
+[[MediaWiki_talk:Headline_sample|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Headline text
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Headline_sample</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Headline_tip&amp;action=edit headline_tip]&lt;br&gt;
+[[MediaWiki_talk:Headline_tip|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Level 2 headline
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Headline_tip</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Help&amp;action=edit help]&lt;br&gt;
+[[MediaWiki_talk:Help|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Help
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Help</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Helppage&amp;action=edit helppage]&lt;br&gt;
+[[MediaWiki_talk:Helppage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Help:Contents
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Helppage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hide&amp;action=edit hide]&lt;br&gt;
+[[MediaWiki_talk:Hide|Talk]]
+&lt;/td&gt;&lt;td&gt;
+hide
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Hide</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hidetoc&amp;action=edit hidetoc]&lt;br&gt;
+[[MediaWiki_talk:Hidetoc|Talk]]
+&lt;/td&gt;&lt;td&gt;
+hide
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Hidetoc</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hist&amp;action=edit hist]&lt;br&gt;
+[[MediaWiki_talk:Hist|Talk]]
+&lt;/td&gt;&lt;td&gt;
+hist
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Hist</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Histlegend&amp;action=edit histlegend]&lt;br&gt;
+[[MediaWiki_talk:Histlegend|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Diff selection: mark the radio boxes of the versions to compare and hit enter or the button at the bottom.&amp;lt;br/&amp;gt;
+Legend: (cur) = difference with current version,
+(last) = difference with preceding version, M = minor edit.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Histlegend</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:History&amp;action=edit history]&lt;br&gt;
+[[MediaWiki_talk:History|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Page history
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:History</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:History_short&amp;action=edit history_short]&lt;br&gt;
+[[MediaWiki_talk:History_short|Talk]]
+&lt;/td&gt;&lt;td&gt;
+History
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:History_short</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Historywarning&amp;action=edit historywarning]&lt;br&gt;
+[[MediaWiki_talk:Historywarning|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Warning: The page you are about to delete has a history:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Historywarning</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hr_tip&amp;action=edit hr_tip]&lt;br&gt;
+[[MediaWiki_talk:Hr_tip|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Horizontal line (use sparingly)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Hr_tip</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ignorewarning&amp;action=edit ignorewarning]&lt;br&gt;
+[[MediaWiki_talk:Ignorewarning|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Ignore warning and save file anyway.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ignorewarning</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ilshowmatch&amp;action=edit ilshowmatch]&lt;br&gt;
+[[MediaWiki_talk:Ilshowmatch|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Show all images with names matching
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ilshowmatch</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ilsubmit&amp;action=edit ilsubmit]&lt;br&gt;
+[[MediaWiki_talk:Ilsubmit|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Search
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ilsubmit</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Image_sample&amp;action=edit image_sample]&lt;br&gt;
+[[MediaWiki_talk:Image_sample|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Example.jpg
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Image_sample</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Image_tip&amp;action=edit image_tip]&lt;br&gt;
+[[MediaWiki_talk:Image_tip|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Embedded image
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Image_tip</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagelinks&amp;action=edit imagelinks]&lt;br&gt;
+[[MediaWiki_talk:Imagelinks|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Image links
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Imagelinks</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagelist&amp;action=edit imagelist]&lt;br&gt;
+[[MediaWiki_talk:Imagelist|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Image list
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Imagelist</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagelisttext&amp;action=edit imagelisttext]&lt;br&gt;
+[[MediaWiki_talk:Imagelisttext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Below is a list of $1 images sorted $2.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Imagelisttext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagepage&amp;action=edit imagepage]&lt;br&gt;
+[[MediaWiki_talk:Imagepage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+View image page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Imagepage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagereverted&amp;action=edit imagereverted]&lt;br&gt;
+[[MediaWiki_talk:Imagereverted|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Revert to earlier version was successful.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Imagereverted</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imgdelete&amp;action=edit imgdelete]&lt;br&gt;
+[[MediaWiki_talk:Imgdelete|Talk]]
+&lt;/td&gt;&lt;td&gt;
+del
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Imgdelete</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imgdesc&amp;action=edit imgdesc]&lt;br&gt;
+[[MediaWiki_talk:Imgdesc|Talk]]
+&lt;/td&gt;&lt;td&gt;
+desc
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Imgdesc</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imghistlegend&amp;action=edit imghistlegend]&lt;br&gt;
+[[MediaWiki_talk:Imghistlegend|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Legend: (cur) = this is the current image, (del) = delete
+this old version, (rev) = revert to this old version.
+&amp;lt;br /&amp;gt;&amp;lt;i&amp;gt;Click on date to see image uploaded on that date&amp;lt;/i&amp;gt;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Imghistlegend</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imghistory&amp;action=edit imghistory]&lt;br&gt;
+[[MediaWiki_talk:Imghistory|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Image history
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Imghistory</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imglegend&amp;action=edit imglegend]&lt;br&gt;
+[[MediaWiki_talk:Imglegend|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Legend: (desc) = show/edit image description.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Imglegend</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Import&amp;action=edit import]&lt;br&gt;
+[[MediaWiki_talk:Import|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Import pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Import</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importfailed&amp;action=edit importfailed]&lt;br&gt;
+[[MediaWiki_talk:Importfailed|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Import failed: $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Importfailed</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importhistoryconflict&amp;action=edit importhistoryconflict]&lt;br&gt;
+[[MediaWiki_talk:Importhistoryconflict|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Conflicting history revision exists (may have imported this page before)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Importhistoryconflict</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importnotext&amp;action=edit importnotext]&lt;br&gt;
+[[MediaWiki_talk:Importnotext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Empty or no text
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Importnotext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importsuccess&amp;action=edit importsuccess]&lt;br&gt;
+[[MediaWiki_talk:Importsuccess|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Import succeeded!
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Importsuccess</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importtext&amp;action=edit importtext]&lt;br&gt;
+[[MediaWiki_talk:Importtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Please export the file from the source wiki using the Special:Export utility, save it to your disk and upload it here.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Importtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Infobox&amp;action=edit infobox]&lt;br&gt;
+[[MediaWiki_talk:Infobox|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Click a button to get an example text
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Infobox</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Infobox_alert&amp;action=edit infobox_alert]&lt;br&gt;
+[[MediaWiki_talk:Infobox_alert|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Please enter the text you want to be formatted.\n It will be shown in the infobox for copy and pasting.\nExample:\n$1\nwill become:\n$2
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Infobox_alert</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Internalerror&amp;action=edit internalerror]&lt;br&gt;
+[[MediaWiki_talk:Internalerror|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Internal error
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Internalerror</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Intl&amp;action=edit intl]&lt;br&gt;
+[[MediaWiki_talk:Intl|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Interlanguage links
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Intl</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ip_range_invalid&amp;action=edit ip_range_invalid]&lt;br&gt;
+[[MediaWiki_talk:Ip_range_invalid|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Invalid IP range.
+
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ip_range_invalid</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipaddress&amp;action=edit ipaddress]&lt;br&gt;
+[[MediaWiki_talk:Ipaddress|Talk]]
+&lt;/td&gt;&lt;td&gt;
+IP Address/username
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ipaddress</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipb_expiry_invalid&amp;action=edit ipb_expiry_invalid]&lt;br&gt;
+[[MediaWiki_talk:Ipb_expiry_invalid|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Expiry time invalid.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ipb_expiry_invalid</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipbexpiry&amp;action=edit ipbexpiry]&lt;br&gt;
+[[MediaWiki_talk:Ipbexpiry|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Expiry
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ipbexpiry</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipblocklist&amp;action=edit ipblocklist]&lt;br&gt;
+[[MediaWiki_talk:Ipblocklist|Talk]]
+&lt;/td&gt;&lt;td&gt;
+List of blocked IP addresses and usernames
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ipblocklist</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipbreason&amp;action=edit ipbreason]&lt;br&gt;
+[[MediaWiki_talk:Ipbreason|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Reason
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ipbreason</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipbsubmit&amp;action=edit ipbsubmit]&lt;br&gt;
+[[MediaWiki_talk:Ipbsubmit|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Block this user
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ipbsubmit</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipusubmit&amp;action=edit ipusubmit]&lt;br&gt;
+[[MediaWiki_talk:Ipusubmit|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Unblock this address
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ipusubmit</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipusuccess&amp;action=edit ipusuccess]&lt;br&gt;
+[[MediaWiki_talk:Ipusuccess|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;quot;$1&amp;quot; unblocked
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ipusuccess</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Isbn&amp;action=edit isbn]&lt;br&gt;
+[[MediaWiki_talk:Isbn|Talk]]
+&lt;/td&gt;&lt;td&gt;
+ISBN
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Isbn</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Isredirect&amp;action=edit isredirect]&lt;br&gt;
+[[MediaWiki_talk:Isredirect|Talk]]
+&lt;/td&gt;&lt;td&gt;
+redirect page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Isredirect</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Italic_sample&amp;action=edit italic_sample]&lt;br&gt;
+[[MediaWiki_talk:Italic_sample|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Italic text
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Italic_sample</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Italic_tip&amp;action=edit italic_tip]&lt;br&gt;
+[[MediaWiki_talk:Italic_tip|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Italic text
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Italic_tip</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Iteminvalidname&amp;action=edit iteminvalidname]&lt;br&gt;
+[[MediaWiki_talk:Iteminvalidname|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Problem with item &amp;#39;$1&amp;#39;, invalid name...
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Iteminvalidname</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Largefile&amp;action=edit largefile]&lt;br&gt;
+[[MediaWiki_talk:Largefile|Talk]]
+&lt;/td&gt;&lt;td&gt;
+It is recommended that images not exceed 100k in size.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Largefile</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Last&amp;action=edit last]&lt;br&gt;
+[[MediaWiki_talk:Last|Talk]]
+&lt;/td&gt;&lt;td&gt;
+last
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Last</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lastmodified&amp;action=edit lastmodified]&lt;br&gt;
+[[MediaWiki_talk:Lastmodified|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This page was last modified $1.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Lastmodified</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lastmodifiedby&amp;action=edit lastmodifiedby]&lt;br&gt;
+[[MediaWiki_talk:Lastmodifiedby|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This page was last modified $1 by $2.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Lastmodifiedby</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lineno&amp;action=edit lineno]&lt;br&gt;
+[[MediaWiki_talk:Lineno|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Line $1:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Lineno</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Link_sample&amp;action=edit link_sample]&lt;br&gt;
+[[MediaWiki_talk:Link_sample|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Link title
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Link_sample</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Link_tip&amp;action=edit link_tip]&lt;br&gt;
+[[MediaWiki_talk:Link_tip|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Internal link
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Link_tip</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linklistsub&amp;action=edit linklistsub]&lt;br&gt;
+[[MediaWiki_talk:Linklistsub|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(List of links)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Linklistsub</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linkshere&amp;action=edit linkshere]&lt;br&gt;
+[[MediaWiki_talk:Linkshere|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The following pages link to here:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Linkshere</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linkstoimage&amp;action=edit linkstoimage]&lt;br&gt;
+[[MediaWiki_talk:Linkstoimage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The following pages link to this image:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Linkstoimage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linktrail&amp;action=edit linktrail]&lt;br&gt;
+[[MediaWiki_talk:Linktrail|Talk]]
+&lt;/td&gt;&lt;td&gt;
+/^(&amp;#91;a-z]+)(.*)$/sD
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Linktrail</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Listform&amp;action=edit listform]&lt;br&gt;
+[[MediaWiki_talk:Listform|Talk]]
+&lt;/td&gt;&lt;td&gt;
+list
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Listform</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Listusers&amp;action=edit listusers]&lt;br&gt;
+[[MediaWiki_talk:Listusers|Talk]]
+&lt;/td&gt;&lt;td&gt;
+User list
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Listusers</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loadhist&amp;action=edit loadhist]&lt;br&gt;
+[[MediaWiki_talk:Loadhist|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Loading page history
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Loadhist</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loadingrev&amp;action=edit loadingrev]&lt;br&gt;
+[[MediaWiki_talk:Loadingrev|Talk]]
+&lt;/td&gt;&lt;td&gt;
+loading revision for diff
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Loadingrev</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Localtime&amp;action=edit localtime]&lt;br&gt;
+[[MediaWiki_talk:Localtime|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Local time display
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Localtime</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockbtn&amp;action=edit lockbtn]&lt;br&gt;
+[[MediaWiki_talk:Lockbtn|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Lock database
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Lockbtn</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockconfirm&amp;action=edit lockconfirm]&lt;br&gt;
+[[MediaWiki_talk:Lockconfirm|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Yes, I really want to lock the database.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Lockconfirm</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdb&amp;action=edit lockdb]&lt;br&gt;
+[[MediaWiki_talk:Lockdb|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Lock database
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Lockdb</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdbsuccesssub&amp;action=edit lockdbsuccesssub]&lt;br&gt;
+[[MediaWiki_talk:Lockdbsuccesssub|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Database lock succeeded
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Lockdbsuccesssub</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdbsuccesstext&amp;action=edit lockdbsuccesstext]&lt;br&gt;
+[[MediaWiki_talk:Lockdbsuccesstext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The database has been locked.
+&amp;lt;br /&amp;gt;Remember to remove the lock after your maintenance is complete.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Lockdbsuccesstext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdbtext&amp;action=edit lockdbtext]&lt;br&gt;
+[[MediaWiki_talk:Lockdbtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Locking the database will suspend the ability of all
+users to edit pages, change their preferences, edit their watchlists, and
+other things requiring changes in the database.
+Please confirm that this is what you intend to do, and that you will
+unlock the database when your maintenance is done.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Lockdbtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Locknoconfirm&amp;action=edit locknoconfirm]&lt;br&gt;
+[[MediaWiki_talk:Locknoconfirm|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You did not check the confirmation box.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Locknoconfirm</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Login&amp;action=edit login]&lt;br&gt;
+[[MediaWiki_talk:Login|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Log in
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Login</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginend&amp;action=edit loginend]&lt;br&gt;
+[[MediaWiki_talk:Loginend|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;amp;nbsp;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Loginend</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginerror&amp;action=edit loginerror]&lt;br&gt;
+[[MediaWiki_talk:Loginerror|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Login error
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Loginerror</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginpagetitle&amp;action=edit loginpagetitle]&lt;br&gt;
+[[MediaWiki_talk:Loginpagetitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+User login
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Loginpagetitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginproblem&amp;action=edit loginproblem]&lt;br&gt;
+[[MediaWiki_talk:Loginproblem|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;b&amp;gt;There has been a problem with your login.&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;Try again!
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Loginproblem</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginprompt&amp;action=edit loginprompt]&lt;br&gt;
+[[MediaWiki_talk:Loginprompt|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You must have cookies enabled to log in to Wiktionary.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Loginprompt</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginreqtext&amp;action=edit loginreqtext]&lt;br&gt;
+[[MediaWiki_talk:Loginreqtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You must &amp;#91;&amp;#91;special:Userlogin&amp;#124;login]] to view other pages.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Loginreqtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginreqtitle&amp;action=edit loginreqtitle]&lt;br&gt;
+[[MediaWiki_talk:Loginreqtitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Login Required
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Loginreqtitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginsuccess&amp;action=edit loginsuccess]&lt;br&gt;
+[[MediaWiki_talk:Loginsuccess|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You are now logged in to Wiktionary as &amp;quot;$1&amp;quot;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Loginsuccess</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginsuccesstitle&amp;action=edit loginsuccesstitle]&lt;br&gt;
+[[MediaWiki_talk:Loginsuccesstitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Login successful
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Loginsuccesstitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Logout&amp;action=edit logout]&lt;br&gt;
+[[MediaWiki_talk:Logout|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Log out
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Logout</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Logouttext&amp;action=edit logouttext]&lt;br&gt;
+[[MediaWiki_talk:Logouttext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You are now logged out.
+You can continue to use Wiktionary anonymously, or you can log in
+again as the same or as a different user. Note that some pages may
+continue to be displayed as if you were still logged in, until you clear
+your browser cache
+
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Logouttext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Logouttitle&amp;action=edit logouttitle]&lt;br&gt;
+[[MediaWiki_talk:Logouttitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+User logout
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Logouttitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lonelypages&amp;action=edit lonelypages]&lt;br&gt;
+[[MediaWiki_talk:Lonelypages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Orphaned pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Lonelypages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Longpages&amp;action=edit longpages]&lt;br&gt;
+[[MediaWiki_talk:Longpages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Long pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Longpages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Longpagewarning&amp;action=edit longpagewarning]&lt;br&gt;
+[[MediaWiki_talk:Longpagewarning|Talk]]
+&lt;/td&gt;&lt;td&gt;
+WARNING: This page is $1 kilobytes long; some
+browsers may have problems editing pages approaching or longer than 32kb.
+Please consider breaking the page into smaller sections.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Longpagewarning</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailerror&amp;action=edit mailerror]&lt;br&gt;
+[[MediaWiki_talk:Mailerror|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Error sending mail: $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Mailerror</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailmypassword&amp;action=edit mailmypassword]&lt;br&gt;
+[[MediaWiki_talk:Mailmypassword|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Mail me a new password
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Mailmypassword</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailnologin&amp;action=edit mailnologin]&lt;br&gt;
+[[MediaWiki_talk:Mailnologin|Talk]]
+&lt;/td&gt;&lt;td&gt;
+No send address
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Mailnologin</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailnologintext&amp;action=edit mailnologintext]&lt;br&gt;
+[[MediaWiki_talk:Mailnologintext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You must be &amp;lt;a href=&amp;quot;{{localurl:Special:Userlogin&amp;quot;&amp;gt;logged in&amp;lt;/a&amp;gt;
+and have a valid e-mail address in your &amp;lt;a href=&amp;quot;/wiki/Special:Preferences&amp;quot;&amp;gt;preferences&amp;lt;/a&amp;gt;
+to send e-mail to other users.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Mailnologintext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mainpage&amp;action=edit mainpage]&lt;br&gt;
+[[MediaWiki_talk:Mainpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Main Page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Mainpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mainpagedocfooter&amp;action=edit mainpagedocfooter]&lt;br&gt;
+[[MediaWiki_talk:Mainpagedocfooter|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Please see &amp;#91;http&amp;#58;//meta.wikipedia.org/wiki/MediaWiki_i18n documentation on customizing the interface]
+and the &amp;#91;http&amp;#58;//meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide User&amp;#39;s Guide] for usage and configuration help.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Mainpagedocfooter</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mainpagetext&amp;action=edit mainpagetext]&lt;br&gt;
+[[MediaWiki_talk:Mainpagetext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiki software successfully installed.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Mainpagetext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Maintenance&amp;action=edit maintenance]&lt;br&gt;
+[[MediaWiki_talk:Maintenance|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Maintenance page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Maintenance</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Maintenancebacklink&amp;action=edit maintenancebacklink]&lt;br&gt;
+[[MediaWiki_talk:Maintenancebacklink|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Back to Maintenance Page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Maintenancebacklink</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Maintnancepagetext&amp;action=edit maintnancepagetext]&lt;br&gt;
+[[MediaWiki_talk:Maintnancepagetext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This page includes several handy tools for everyday maintenance. Some of these functions tend to stress the database, so please do not hit reload after every item you fixed ;-)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Maintnancepagetext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysop&amp;action=edit makesysop]&lt;br&gt;
+[[MediaWiki_talk:Makesysop|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Make a user into a sysop
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Makesysop</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopfail&amp;action=edit makesysopfail]&lt;br&gt;
+[[MediaWiki_talk:Makesysopfail|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;b&amp;gt;User &amp;quot;$1&amp;quot; could not be made into a sysop. (Did you enter the name correctly?)&amp;lt;/b&amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Makesysopfail</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopname&amp;action=edit makesysopname]&lt;br&gt;
+[[MediaWiki_talk:Makesysopname|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Name of the user:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Makesysopname</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopok&amp;action=edit makesysopok]&lt;br&gt;
+[[MediaWiki_talk:Makesysopok|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;b&amp;gt;User &amp;quot;$1&amp;quot; is now a sysop&amp;lt;/b&amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Makesysopok</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopsubmit&amp;action=edit makesysopsubmit]&lt;br&gt;
+[[MediaWiki_talk:Makesysopsubmit|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Make this user into a sysop
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Makesysopsubmit</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysoptext&amp;action=edit makesysoptext]&lt;br&gt;
+[[MediaWiki_talk:Makesysoptext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This form is used by bureaucrats to turn ordinary users into administrators.
+Type the name of the user in the box and press the button to make the user an administrator
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Makesysoptext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysoptitle&amp;action=edit makesysoptitle]&lt;br&gt;
+[[MediaWiki_talk:Makesysoptitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Make a user into a sysop
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Makesysoptitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Matchtotals&amp;action=edit matchtotals]&lt;br&gt;
+[[MediaWiki_talk:Matchtotals|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The query &amp;quot;$1&amp;quot; matched $2 page titles
+and the text of $3 pages.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Matchtotals</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math&amp;action=edit math]&lt;br&gt;
+[[MediaWiki_talk:Math|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Rendering math
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Math</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_bad_output&amp;action=edit math_bad_output]&lt;br&gt;
+[[MediaWiki_talk:Math_bad_output|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Can&amp;#39;t write to or create math output directory
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Math_bad_output</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_bad_tmpdir&amp;action=edit math_bad_tmpdir]&lt;br&gt;
+[[MediaWiki_talk:Math_bad_tmpdir|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Can&amp;#39;t write to or create math temp directory
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Math_bad_tmpdir</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_failure&amp;action=edit math_failure]&lt;br&gt;
+[[MediaWiki_talk:Math_failure|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Failed to parse
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Math_failure</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_image_error&amp;action=edit math_image_error]&lt;br&gt;
+[[MediaWiki_talk:Math_image_error|Talk]]
+&lt;/td&gt;&lt;td&gt;
+PNG conversion failed; check for correct installation of latex, dvips, gs, and convert
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Math_image_error</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_lexing_error&amp;action=edit math_lexing_error]&lt;br&gt;
+[[MediaWiki_talk:Math_lexing_error|Talk]]
+&lt;/td&gt;&lt;td&gt;
+lexing error
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Math_lexing_error</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_notexvc&amp;action=edit math_notexvc]&lt;br&gt;
+[[MediaWiki_talk:Math_notexvc|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Missing texvc executable; please see math/README to configure.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Math_notexvc</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_sample&amp;action=edit math_sample]&lt;br&gt;
+[[MediaWiki_talk:Math_sample|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Insert formula here
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Math_sample</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_syntax_error&amp;action=edit math_syntax_error]&lt;br&gt;
+[[MediaWiki_talk:Math_syntax_error|Talk]]
+&lt;/td&gt;&lt;td&gt;
+syntax error
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Math_syntax_error</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_tip&amp;action=edit math_tip]&lt;br&gt;
+[[MediaWiki_talk:Math_tip|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Mathematical formula (LaTeX)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Math_tip</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_unknown_error&amp;action=edit math_unknown_error]&lt;br&gt;
+[[MediaWiki_talk:Math_unknown_error|Talk]]
+&lt;/td&gt;&lt;td&gt;
+unknown error
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Math_unknown_error</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_unknown_function&amp;action=edit math_unknown_function]&lt;br&gt;
+[[MediaWiki_talk:Math_unknown_function|Talk]]
+&lt;/td&gt;&lt;td&gt;
+unknown function
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Math_unknown_function</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Media_sample&amp;action=edit media_sample]&lt;br&gt;
+[[MediaWiki_talk:Media_sample|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Example.mp3
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Media_sample</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Media_tip&amp;action=edit media_tip]&lt;br&gt;
+[[MediaWiki_talk:Media_tip|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Media file link
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Media_tip</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Minlength&amp;action=edit minlength]&lt;br&gt;
+[[MediaWiki_talk:Minlength|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Image names must be at least three letters.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Minlength</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Minoredit&amp;action=edit minoredit]&lt;br&gt;
+[[MediaWiki_talk:Minoredit|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This is a minor edit
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Minoredit</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Minoreditletter&amp;action=edit minoreditletter]&lt;br&gt;
+[[MediaWiki_talk:Minoreditletter|Talk]]
+&lt;/td&gt;&lt;td&gt;
+M
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Minoreditletter</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mispeelings&amp;action=edit mispeelings]&lt;br&gt;
+[[MediaWiki_talk:Mispeelings|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Pages with misspellings
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Mispeelings</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mispeelingspage&amp;action=edit mispeelingspage]&lt;br&gt;
+[[MediaWiki_talk:Mispeelingspage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+List of common misspellings
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Mispeelingspage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mispeelingstext&amp;action=edit mispeelingstext]&lt;br&gt;
+[[MediaWiki_talk:Mispeelingstext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The following pages contain a common misspelling, which are listed on $1. The correct spelling might be given (like this).
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Mispeelingstext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missingarticle&amp;action=edit missingarticle]&lt;br&gt;
+[[MediaWiki_talk:Missingarticle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The database did not find the text of a page
+that it should have found, named &amp;quot;$1&amp;quot;.
+
+&amp;lt;p&amp;gt;This is usually caused by following an outdated diff or history link to a
+page that has been deleted.
+
+&amp;lt;p&amp;gt;If this is not the case, you may have found a bug in the software.
+Please report this to an administrator, making note of the URL.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Missingarticle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missingimage&amp;action=edit missingimage]&lt;br&gt;
+[[MediaWiki_talk:Missingimage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;b&amp;gt;Missing image&amp;lt;/b&amp;gt;&amp;lt;br /&amp;gt;&amp;lt;i&amp;gt;$1&amp;lt;/i&amp;gt;
+
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Missingimage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missinglanguagelinks&amp;action=edit missinglanguagelinks]&lt;br&gt;
+[[MediaWiki_talk:Missinglanguagelinks|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Missing Language Links
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Missinglanguagelinks</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missinglanguagelinksbutton&amp;action=edit missinglanguagelinksbutton]&lt;br&gt;
+[[MediaWiki_talk:Missinglanguagelinksbutton|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Find missing language links for
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Missinglanguagelinksbutton</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missinglanguagelinkstext&amp;action=edit missinglanguagelinkstext]&lt;br&gt;
+[[MediaWiki_talk:Missinglanguagelinkstext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+These pages do &amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt; link to their counterpart in $1. Redirects and subpages are &amp;lt;i&amp;gt;not&amp;lt;/i&amp;gt; shown.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Missinglanguagelinkstext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Moredotdotdot&amp;action=edit moredotdotdot]&lt;br&gt;
+[[MediaWiki_talk:Moredotdotdot|Talk]]
+&lt;/td&gt;&lt;td&gt;
+More...
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Moredotdotdot</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Move&amp;action=edit move]&lt;br&gt;
+[[MediaWiki_talk:Move|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Move
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Move</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movearticle&amp;action=edit movearticle]&lt;br&gt;
+[[MediaWiki_talk:Movearticle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Move page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Movearticle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movedto&amp;action=edit movedto]&lt;br&gt;
+[[MediaWiki_talk:Movedto|Talk]]
+&lt;/td&gt;&lt;td&gt;
+moved to
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Movedto</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movenologin&amp;action=edit movenologin]&lt;br&gt;
+[[MediaWiki_talk:Movenologin|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Not logged in
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Movenologin</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movenologintext&amp;action=edit movenologintext]&lt;br&gt;
+[[MediaWiki_talk:Movenologintext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You must be a registered user and &amp;lt;a href=&amp;quot;/wiki/Special:Userlogin&amp;quot;&amp;gt;logged in&amp;lt;/a&amp;gt;
+to move a page.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Movenologintext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepage&amp;action=edit movepage]&lt;br&gt;
+[[MediaWiki_talk:Movepage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Move page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Movepage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepagebtn&amp;action=edit movepagebtn]&lt;br&gt;
+[[MediaWiki_talk:Movepagebtn|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Move page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Movepagebtn</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepagetalktext&amp;action=edit movepagetalktext]&lt;br&gt;
+[[MediaWiki_talk:Movepagetalktext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The associated talk page, if any, will be automatically moved along with it &amp;#39;&amp;#39;&amp;#39;unless:&amp;#39;&amp;#39;&amp;#39;
+*You are moving the page across namespaces,
+*A non-empty talk page already exists under the new name, or
+*You uncheck the box below.
+
+In those cases, you will have to move or merge the page manually if desired.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Movepagetalktext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepagetext&amp;action=edit movepagetext]&lt;br&gt;
+[[MediaWiki_talk:Movepagetext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Using the form below will rename a page, moving all
+of its history to the new name.
+The old title will become a redirect page to the new title.
+Links to the old page title will not be changed; be sure to
+&amp;#91;&amp;#91;Special:Maintenance&amp;#124;check]] for double or broken redirects.
+You are responsible for making sure that links continue to
+point where they are supposed to go.
+
+Note that the page will &amp;#39;&amp;#39;&amp;#39;not&amp;#39;&amp;#39;&amp;#39; be moved if there is already
+a page at the new title, unless it is empty or a redirect and has no
+past edit history. This means that you can rename a page back to where
+it was just renamed from if you make a mistake, and you cannot overwrite
+an existing page.
+
+&amp;lt;b&amp;gt;WARNING!&amp;lt;/b&amp;gt;
+This can be a drastic and unexpected change for a popular page;
+please be sure you understand the consequences of this before
+proceeding.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Movepagetext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movetalk&amp;action=edit movetalk]&lt;br&gt;
+[[MediaWiki_talk:Movetalk|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Move &amp;quot;talk&amp;quot; page as well, if applicable.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Movetalk</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movethispage&amp;action=edit movethispage]&lt;br&gt;
+[[MediaWiki_talk:Movethispage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Move this page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Movethispage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mycontris&amp;action=edit mycontris]&lt;br&gt;
+[[MediaWiki_talk:Mycontris|Talk]]
+&lt;/td&gt;&lt;td&gt;
+My contributions
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Mycontris</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mypage&amp;action=edit mypage]&lt;br&gt;
+[[MediaWiki_talk:Mypage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+My page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Mypage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mytalk&amp;action=edit mytalk]&lt;br&gt;
+[[MediaWiki_talk:Mytalk|Talk]]
+&lt;/td&gt;&lt;td&gt;
+My talk
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Mytalk</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Navigation&amp;action=edit navigation]&lt;br&gt;
+[[MediaWiki_talk:Navigation|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Navigation
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Navigation</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nbytes&amp;action=edit nbytes]&lt;br&gt;
+[[MediaWiki_talk:Nbytes|Talk]]
+&lt;/td&gt;&lt;td&gt;
+$1 bytes
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nbytes</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nchanges&amp;action=edit nchanges]&lt;br&gt;
+[[MediaWiki_talk:Nchanges|Talk]]
+&lt;/td&gt;&lt;td&gt;
+$1 changes
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nchanges</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newarticle&amp;action=edit newarticle]&lt;br&gt;
+[[MediaWiki_talk:Newarticle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(New)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Newarticle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newarticletext&amp;action=edit newarticletext]&lt;br&gt;
+[[MediaWiki_talk:Newarticletext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You&amp;#39;ve followed a link to a page that doesn&amp;#39;t exist yet.
+To create the page, start typing in the box below
+(see the &amp;#91;&amp;#91;Wiktionary:Help&amp;#124;help page]] for more info).
+If you are here by mistake, just click your browser&amp;#39;s &amp;#39;&amp;#39;&amp;#39;back&amp;#39;&amp;#39;&amp;#39; button.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Newarticletext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newmessages&amp;action=edit newmessages]&lt;br&gt;
+[[MediaWiki_talk:Newmessages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You have $1.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Newmessages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newmessageslink&amp;action=edit newmessageslink]&lt;br&gt;
+[[MediaWiki_talk:Newmessageslink|Talk]]
+&lt;/td&gt;&lt;td&gt;
+new messages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Newmessageslink</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpage&amp;action=edit newpage]&lt;br&gt;
+[[MediaWiki_talk:Newpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+New page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Newpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpageletter&amp;action=edit newpageletter]&lt;br&gt;
+[[MediaWiki_talk:Newpageletter|Talk]]
+&lt;/td&gt;&lt;td&gt;
+N
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Newpageletter</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpages&amp;action=edit newpages]&lt;br&gt;
+[[MediaWiki_talk:Newpages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+New pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Newpages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpassword&amp;action=edit newpassword]&lt;br&gt;
+[[MediaWiki_talk:Newpassword|Talk]]
+&lt;/td&gt;&lt;td&gt;
+New password
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Newpassword</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newtitle&amp;action=edit newtitle]&lt;br&gt;
+[[MediaWiki_talk:Newtitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+To new title
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Newtitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newusersonly&amp;action=edit newusersonly]&lt;br&gt;
+[[MediaWiki_talk:Newusersonly|Talk]]
+&lt;/td&gt;&lt;td&gt;
+ (new users only)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Newusersonly</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Next&amp;action=edit next]&lt;br&gt;
+[[MediaWiki_talk:Next|Talk]]
+&lt;/td&gt;&lt;td&gt;
+next
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Next</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nextn&amp;action=edit nextn]&lt;br&gt;
+[[MediaWiki_talk:Nextn|Talk]]
+&lt;/td&gt;&lt;td&gt;
+next $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nextn</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nlinks&amp;action=edit nlinks]&lt;br&gt;
+[[MediaWiki_talk:Nlinks|Talk]]
+&lt;/td&gt;&lt;td&gt;
+$1 links
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nlinks</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noaffirmation&amp;action=edit noaffirmation]&lt;br&gt;
+[[MediaWiki_talk:Noaffirmation|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You must affirm that your upload does not violate
+any copyrights.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Noaffirmation</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noarticletext&amp;action=edit noarticletext]&lt;br&gt;
+[[MediaWiki_talk:Noarticletext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(There is currently no text in this page)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Noarticletext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noblockreason&amp;action=edit noblockreason]&lt;br&gt;
+[[MediaWiki_talk:Noblockreason|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You must supply a reason for the block.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Noblockreason</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noconnect&amp;action=edit noconnect]&lt;br&gt;
+[[MediaWiki_talk:Noconnect|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Sorry! The wiki is experiencing some technical difficulties, and cannot contact the database server.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Noconnect</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocontribs&amp;action=edit nocontribs]&lt;br&gt;
+[[MediaWiki_talk:Nocontribs|Talk]]
+&lt;/td&gt;&lt;td&gt;
+No changes were found matching these criteria.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nocontribs</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocookieslogin&amp;action=edit nocookieslogin]&lt;br&gt;
+[[MediaWiki_talk:Nocookieslogin|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary uses cookies to log in users. You have cookies disabled. Please enable them and try again.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nocookieslogin</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocookiesnew&amp;action=edit nocookiesnew]&lt;br&gt;
+[[MediaWiki_talk:Nocookiesnew|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The user account was created, but you are not logged in. Wiktionary uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nocookiesnew</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocreativecommons&amp;action=edit nocreativecommons]&lt;br&gt;
+[[MediaWiki_talk:Nocreativecommons|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Creative Commons RDF metadata disabled for this server.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nocreativecommons</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nodb&amp;action=edit nodb]&lt;br&gt;
+[[MediaWiki_talk:Nodb|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Could not select database $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nodb</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nodublincore&amp;action=edit nodublincore]&lt;br&gt;
+[[MediaWiki_talk:Nodublincore|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Dublin Core RDF metadata disabled for this server.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nodublincore</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noemail&amp;action=edit noemail]&lt;br&gt;
+[[MediaWiki_talk:Noemail|Talk]]
+&lt;/td&gt;&lt;td&gt;
+There is no e-mail address recorded for user &amp;quot;$1&amp;quot;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Noemail</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noemailtext&amp;action=edit noemailtext]&lt;br&gt;
+[[MediaWiki_talk:Noemailtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This user has not specified a valid e-mail address,
+or has chosen not to receive e-mail from other users.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Noemailtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noemailtitle&amp;action=edit noemailtitle]&lt;br&gt;
+[[MediaWiki_talk:Noemailtitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+No e-mail address
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Noemailtitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nogomatch&amp;action=edit nogomatch]&lt;br&gt;
+[[MediaWiki_talk:Nogomatch|Talk]]
+&lt;/td&gt;&lt;td&gt;
+No page with this exact title exists, trying full text search.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nogomatch</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nohistory&amp;action=edit nohistory]&lt;br&gt;
+[[MediaWiki_talk:Nohistory|Talk]]
+&lt;/td&gt;&lt;td&gt;
+There is no edit history for this page.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nohistory</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nolinkshere&amp;action=edit nolinkshere]&lt;br&gt;
+[[MediaWiki_talk:Nolinkshere|Talk]]
+&lt;/td&gt;&lt;td&gt;
+No pages link to here.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nolinkshere</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nolinkstoimage&amp;action=edit nolinkstoimage]&lt;br&gt;
+[[MediaWiki_talk:Nolinkstoimage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+There are no pages that link to this image.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nolinkstoimage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noname&amp;action=edit noname]&lt;br&gt;
+[[MediaWiki_talk:Noname|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You have not specified a valid user name.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Noname</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nonefound&amp;action=edit nonefound]&lt;br&gt;
+[[MediaWiki_talk:Nonefound|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;strong&amp;gt;Note&amp;lt;/strong&amp;gt;: unsuccessful searches are
+often caused by searching for common words like &amp;quot;have&amp;quot; and &amp;quot;from&amp;quot;,
+which are not indexed, or by specifying more than one search term (only pages
+containing all of the search terms will appear in the result).
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nonefound</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nospecialpagetext&amp;action=edit nospecialpagetext]&lt;br&gt;
+[[MediaWiki_talk:Nospecialpagetext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You have requested a special page that is not
+recognized by the wiki.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nospecialpagetext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchaction&amp;action=edit nosuchaction]&lt;br&gt;
+[[MediaWiki_talk:Nosuchaction|Talk]]
+&lt;/td&gt;&lt;td&gt;
+No such action
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nosuchaction</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchactiontext&amp;action=edit nosuchactiontext]&lt;br&gt;
+[[MediaWiki_talk:Nosuchactiontext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The action specified by the URL is not
+recognized by the wiki
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nosuchactiontext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchspecialpage&amp;action=edit nosuchspecialpage]&lt;br&gt;
+[[MediaWiki_talk:Nosuchspecialpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+No such special page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nosuchspecialpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchuser&amp;action=edit nosuchuser]&lt;br&gt;
+[[MediaWiki_talk:Nosuchuser|Talk]]
+&lt;/td&gt;&lt;td&gt;
+There is no user by the name &amp;quot;$1&amp;quot;.
+Check your spelling, or use the form below to create a new user account.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nosuchuser</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notacceptable&amp;action=edit notacceptable]&lt;br&gt;
+[[MediaWiki_talk:Notacceptable|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The wiki server can&amp;#39;t provide data in a format your client can read.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Notacceptable</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notanarticle&amp;action=edit notanarticle]&lt;br&gt;
+[[MediaWiki_talk:Notanarticle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Not a content page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Notanarticle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notargettext&amp;action=edit notargettext]&lt;br&gt;
+[[MediaWiki_talk:Notargettext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You have not specified a target page or user
+to perform this function on.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Notargettext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notargettitle&amp;action=edit notargettitle]&lt;br&gt;
+[[MediaWiki_talk:Notargettitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+No target
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Notargettitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Note&amp;action=edit note]&lt;br&gt;
+[[MediaWiki_talk:Note|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;strong&amp;gt;Note:&amp;lt;/strong&amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Note</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notextmatches&amp;action=edit notextmatches]&lt;br&gt;
+[[MediaWiki_talk:Notextmatches|Talk]]
+&lt;/td&gt;&lt;td&gt;
+No page text matches
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Notextmatches</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notitlematches&amp;action=edit notitlematches]&lt;br&gt;
+[[MediaWiki_talk:Notitlematches|Talk]]
+&lt;/td&gt;&lt;td&gt;
+No page title matches
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Notitlematches</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notloggedin&amp;action=edit notloggedin]&lt;br&gt;
+[[MediaWiki_talk:Notloggedin|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Not logged in
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Notloggedin</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nowatchlist&amp;action=edit nowatchlist]&lt;br&gt;
+[[MediaWiki_talk:Nowatchlist|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You have no items on your watchlist.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nowatchlist</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nowiki_sample&amp;action=edit nowiki_sample]&lt;br&gt;
+[[MediaWiki_talk:Nowiki_sample|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Insert non-formatted text here
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nowiki_sample</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nowiki_tip&amp;action=edit nowiki_tip]&lt;br&gt;
+[[MediaWiki_talk:Nowiki_tip|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Ignore wiki formatting
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nowiki_tip</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-category&amp;action=edit nstab-category]&lt;br&gt;
+[[MediaWiki_talk:Nstab-category|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Category
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nstab-category</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-help&amp;action=edit nstab-help]&lt;br&gt;
+[[MediaWiki_talk:Nstab-help|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Help
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nstab-help</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-image&amp;action=edit nstab-image]&lt;br&gt;
+[[MediaWiki_talk:Nstab-image|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Image
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nstab-image</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-main&amp;action=edit nstab-main]&lt;br&gt;
+[[MediaWiki_talk:Nstab-main|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Article
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nstab-main</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-media&amp;action=edit nstab-media]&lt;br&gt;
+[[MediaWiki_talk:Nstab-media|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Media
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nstab-media</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-mediawiki&amp;action=edit nstab-mediawiki]&lt;br&gt;
+[[MediaWiki_talk:Nstab-mediawiki|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Message
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nstab-mediawiki</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-special&amp;action=edit nstab-special]&lt;br&gt;
+[[MediaWiki_talk:Nstab-special|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Special
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nstab-special</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-template&amp;action=edit nstab-template]&lt;br&gt;
+[[MediaWiki_talk:Nstab-template|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Template
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nstab-template</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-user&amp;action=edit nstab-user]&lt;br&gt;
+[[MediaWiki_talk:Nstab-user|Talk]]
+&lt;/td&gt;&lt;td&gt;
+User page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nstab-user</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-wp&amp;action=edit nstab-wp]&lt;br&gt;
+[[MediaWiki_talk:Nstab-wp|Talk]]
+&lt;/td&gt;&lt;td&gt;
+About
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nstab-wp</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nviews&amp;action=edit nviews]&lt;br&gt;
+[[MediaWiki_talk:Nviews|Talk]]
+&lt;/td&gt;&lt;td&gt;
+$1 views
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Nviews</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ok&amp;action=edit ok]&lt;br&gt;
+[[MediaWiki_talk:Ok|Talk]]
+&lt;/td&gt;&lt;td&gt;
+OK
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ok</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Oldpassword&amp;action=edit oldpassword]&lt;br&gt;
+[[MediaWiki_talk:Oldpassword|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Old password
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Oldpassword</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Orig&amp;action=edit orig]&lt;br&gt;
+[[MediaWiki_talk:Orig|Talk]]
+&lt;/td&gt;&lt;td&gt;
+orig
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Orig</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Orphans&amp;action=edit orphans]&lt;br&gt;
+[[MediaWiki_talk:Orphans|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Orphaned pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Orphans</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Othercontribs&amp;action=edit othercontribs]&lt;br&gt;
+[[MediaWiki_talk:Othercontribs|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Based on work by $1.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Othercontribs</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Otherlanguages&amp;action=edit otherlanguages]&lt;br&gt;
+[[MediaWiki_talk:Otherlanguages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Other languages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Otherlanguages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Pagemovedsub&amp;action=edit pagemovedsub]&lt;br&gt;
+[[MediaWiki_talk:Pagemovedsub|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Move succeeded
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Pagemovedsub</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Pagemovedtext&amp;action=edit pagemovedtext]&lt;br&gt;
+[[MediaWiki_talk:Pagemovedtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Page &amp;quot;&amp;#91;&amp;#91;$1]]&amp;quot; moved to &amp;quot;&amp;#91;&amp;#91;$2]]&amp;quot;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Pagemovedtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Pagetitle&amp;action=edit pagetitle]&lt;br&gt;
+[[MediaWiki_talk:Pagetitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+$1 - Wiktionary
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Pagetitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Passwordremindertext&amp;action=edit passwordremindertext]&lt;br&gt;
+[[MediaWiki_talk:Passwordremindertext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Someone (probably you, from IP address $1)
+requested that we send you a new Wiktionary login password.
+The password for user &amp;quot;$2&amp;quot; is now &amp;quot;$3&amp;quot;.
+You should log in and change your password now.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Passwordremindertext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Passwordremindertitle&amp;action=edit passwordremindertitle]&lt;br&gt;
+[[MediaWiki_talk:Passwordremindertitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Password reminder from Wiktionary
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Passwordremindertitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Passwordsent&amp;action=edit passwordsent]&lt;br&gt;
+[[MediaWiki_talk:Passwordsent|Talk]]
+&lt;/td&gt;&lt;td&gt;
+A new password has been sent to the e-mail address
+registered for &amp;quot;$1&amp;quot;.
+Please log in again after you receive it.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Passwordsent</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Perfcached&amp;action=edit perfcached]&lt;br&gt;
+[[MediaWiki_talk:Perfcached|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The following data is cached and may not be completely up to date:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Perfcached</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Perfdisabled&amp;action=edit perfdisabled]&lt;br&gt;
+[[MediaWiki_talk:Perfdisabled|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Sorry! This feature has been temporarily disabled
+because it slows the database down to the point that no one can use
+the wiki.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Perfdisabled</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Perfdisabledsub&amp;action=edit perfdisabledsub]&lt;br&gt;
+[[MediaWiki_talk:Perfdisabledsub|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Here&amp;#39;s a saved copy from $1:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Perfdisabledsub</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Personaltools&amp;action=edit personaltools]&lt;br&gt;
+[[MediaWiki_talk:Personaltools|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Personal tools
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Personaltools</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Popularpages&amp;action=edit popularpages]&lt;br&gt;
+[[MediaWiki_talk:Popularpages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Popular pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Popularpages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Portal&amp;action=edit portal]&lt;br&gt;
+[[MediaWiki_talk:Portal|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Community portal
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Portal</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Portal-url&amp;action=edit portal-url]&lt;br&gt;
+[[MediaWiki_talk:Portal-url|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary:Community Portal
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Portal-url</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Postcomment&amp;action=edit postcomment]&lt;br&gt;
+[[MediaWiki_talk:Postcomment|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Post a comment
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Postcomment</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Poweredby&amp;action=edit poweredby]&lt;br&gt;
+[[MediaWiki_talk:Poweredby|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary is powered by &amp;#91;http&amp;#58;//www.mediawiki.org/ MediaWiki], an open source wiki engine.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Poweredby</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Powersearch&amp;action=edit powersearch]&lt;br&gt;
+[[MediaWiki_talk:Powersearch|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Search
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Powersearch</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Powersearchtext&amp;action=edit powersearchtext]&lt;br&gt;
+[[MediaWiki_talk:Powersearchtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+
+Search in namespaces :&amp;lt;br /&amp;gt;
+$1&amp;lt;br /&amp;gt;
+$2 List redirects &amp;amp;nbsp; Search for $3 $9
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Powersearchtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Preferences&amp;action=edit preferences]&lt;br&gt;
+[[MediaWiki_talk:Preferences|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Preferences
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Preferences</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-help-userdata&amp;action=edit prefs-help-userdata]&lt;br&gt;
+[[MediaWiki_talk:Prefs-help-userdata|Talk]]
+&lt;/td&gt;&lt;td&gt;
+* &amp;lt;strong&amp;gt;Real name&amp;lt;/strong&amp;gt; (optional): if you choose to provide it this will be used for giving you attribution for your work.&amp;lt;br/&amp;gt;
+* &amp;lt;strong&amp;gt;Email&amp;lt;/strong&amp;gt; (optional): Enables people to contact you through the website without you having to reveal your
+email address to them, and it can be used to send you a new password if you forget it.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Prefs-help-userdata</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-misc&amp;action=edit prefs-misc]&lt;br&gt;
+[[MediaWiki_talk:Prefs-misc|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Misc settings
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Prefs-misc</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-personal&amp;action=edit prefs-personal]&lt;br&gt;
+[[MediaWiki_talk:Prefs-personal|Talk]]
+&lt;/td&gt;&lt;td&gt;
+User data
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Prefs-personal</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-rc&amp;action=edit prefs-rc]&lt;br&gt;
+[[MediaWiki_talk:Prefs-rc|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Recent changes and stub display
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Prefs-rc</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefslogintext&amp;action=edit prefslogintext]&lt;br&gt;
+[[MediaWiki_talk:Prefslogintext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You are logged in as &amp;quot;$1&amp;quot;.
+Your internal ID number is $2.
+
+See &amp;#91;&amp;#91;Wiktionary:User preferences help]] for help deciphering the options.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Prefslogintext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefsnologin&amp;action=edit prefsnologin]&lt;br&gt;
+[[MediaWiki_talk:Prefsnologin|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Not logged in
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Prefsnologin</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefsnologintext&amp;action=edit prefsnologintext]&lt;br&gt;
+[[MediaWiki_talk:Prefsnologintext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You must be &amp;lt;a href=&amp;quot;/wiki/Special:Userlogin&amp;quot;&amp;gt;logged in&amp;lt;/a&amp;gt;
+to set user preferences.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Prefsnologintext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefsreset&amp;action=edit prefsreset]&lt;br&gt;
+[[MediaWiki_talk:Prefsreset|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Preferences have been reset from storage.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Prefsreset</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Preview&amp;action=edit preview]&lt;br&gt;
+[[MediaWiki_talk:Preview|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Preview
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Preview</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Previewconflict&amp;action=edit previewconflict]&lt;br&gt;
+[[MediaWiki_talk:Previewconflict|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This preview reflects the text in the upper
+text editing area as it will appear if you choose to save.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Previewconflict</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Previewnote&amp;action=edit previewnote]&lt;br&gt;
+[[MediaWiki_talk:Previewnote|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Remember that this is only a preview, and has not yet been saved!
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Previewnote</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prevn&amp;action=edit prevn]&lt;br&gt;
+[[MediaWiki_talk:Prevn|Talk]]
+&lt;/td&gt;&lt;td&gt;
+previous $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Prevn</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Printableversion&amp;action=edit printableversion]&lt;br&gt;
+[[MediaWiki_talk:Printableversion|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Printable version
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Printableversion</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Printsubtitle&amp;action=edit printsubtitle]&lt;br&gt;
+[[MediaWiki_talk:Printsubtitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(From http&amp;#58;//tl.wiktionary.org)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Printsubtitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protect&amp;action=edit protect]&lt;br&gt;
+[[MediaWiki_talk:Protect|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Protect
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Protect</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectcomment&amp;action=edit protectcomment]&lt;br&gt;
+[[MediaWiki_talk:Protectcomment|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Reason for protecting
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Protectcomment</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedarticle&amp;action=edit protectedarticle]&lt;br&gt;
+[[MediaWiki_talk:Protectedarticle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+protected &amp;#91;&amp;#91;$1]]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Protectedarticle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedpage&amp;action=edit protectedpage]&lt;br&gt;
+[[MediaWiki_talk:Protectedpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Protected page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Protectedpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedpagewarning&amp;action=edit protectedpagewarning]&lt;br&gt;
+[[MediaWiki_talk:Protectedpagewarning|Talk]]
+&lt;/td&gt;&lt;td&gt;
+WARNING: This page has been locked so that only
+users with sysop privileges can edit it. Be sure you are following the
+&amp;lt;a href=&amp;#39;/w/wiki.phtml/Wiktionary:Protected_page_guidelines&amp;#39;&amp;gt;protected page
+guidelines&amp;lt;/a&amp;gt;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Protectedpagewarning</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedtext&amp;action=edit protectedtext]&lt;br&gt;
+[[MediaWiki_talk:Protectedtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This page has been locked to prevent editing; there are
+a number of reasons why this may be so, please see
+&amp;#91;&amp;#91;Wiktionary:Protected page]].
+
+You can view and copy the source of this page:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Protectedtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectlogpage&amp;action=edit protectlogpage]&lt;br&gt;
+[[MediaWiki_talk:Protectlogpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Protection_log
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Protectlogpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectlogtext&amp;action=edit protectlogtext]&lt;br&gt;
+[[MediaWiki_talk:Protectlogtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Below is a list of page locks/unlocks.
+See &amp;#91;&amp;#91;Wiktionary:Protected page]] for more information.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Protectlogtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectpage&amp;action=edit protectpage]&lt;br&gt;
+[[MediaWiki_talk:Protectpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Protect page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Protectpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectreason&amp;action=edit protectreason]&lt;br&gt;
+[[MediaWiki_talk:Protectreason|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(give a reason)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Protectreason</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectsub&amp;action=edit protectsub]&lt;br&gt;
+[[MediaWiki_talk:Protectsub|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(Protecting &amp;quot;$1&amp;quot;)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Protectsub</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectthispage&amp;action=edit protectthispage]&lt;br&gt;
+[[MediaWiki_talk:Protectthispage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Protect this page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Protectthispage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Proxyblocker&amp;action=edit proxyblocker]&lt;br&gt;
+[[MediaWiki_talk:Proxyblocker|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Proxy blocker
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Proxyblocker</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Proxyblockreason&amp;action=edit proxyblockreason]&lt;br&gt;
+[[MediaWiki_talk:Proxyblockreason|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Your IP address has been blocked because it is an open proxy. Please contact your Internet service provider or tech support and inform them of this serious security problem.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Proxyblockreason</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Proxyblocksuccess&amp;action=edit proxyblocksuccess]&lt;br&gt;
+[[MediaWiki_talk:Proxyblocksuccess|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Done.
+
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Proxyblocksuccess</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbbrowse&amp;action=edit qbbrowse]&lt;br&gt;
+[[MediaWiki_talk:Qbbrowse|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Browse
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Qbbrowse</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbedit&amp;action=edit qbedit]&lt;br&gt;
+[[MediaWiki_talk:Qbedit|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Edit
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Qbedit</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbfind&amp;action=edit qbfind]&lt;br&gt;
+[[MediaWiki_talk:Qbfind|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Find
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Qbfind</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbmyoptions&amp;action=edit qbmyoptions]&lt;br&gt;
+[[MediaWiki_talk:Qbmyoptions|Talk]]
+&lt;/td&gt;&lt;td&gt;
+My pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Qbmyoptions</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbpageinfo&amp;action=edit qbpageinfo]&lt;br&gt;
+[[MediaWiki_talk:Qbpageinfo|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Context
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Qbpageinfo</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbpageoptions&amp;action=edit qbpageoptions]&lt;br&gt;
+[[MediaWiki_talk:Qbpageoptions|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Qbpageoptions</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbsettings&amp;action=edit qbsettings]&lt;br&gt;
+[[MediaWiki_talk:Qbsettings|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Quickbar settings
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Qbsettings</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbspecialpages&amp;action=edit qbspecialpages]&lt;br&gt;
+[[MediaWiki_talk:Qbspecialpages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Special pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Qbspecialpages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Querybtn&amp;action=edit querybtn]&lt;br&gt;
+[[MediaWiki_talk:Querybtn|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Submit query
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Querybtn</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Querysuccessful&amp;action=edit querysuccessful]&lt;br&gt;
+[[MediaWiki_talk:Querysuccessful|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Query successful
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Querysuccessful</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Randompage&amp;action=edit randompage]&lt;br&gt;
+[[MediaWiki_talk:Randompage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Random page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Randompage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Range_block_disabled&amp;action=edit range_block_disabled]&lt;br&gt;
+[[MediaWiki_talk:Range_block_disabled|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The sysop ability to create range blocks is disabled.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Range_block_disabled</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rchide&amp;action=edit rchide]&lt;br&gt;
+[[MediaWiki_talk:Rchide|Talk]]
+&lt;/td&gt;&lt;td&gt;
+in $4 form; $1 minor edits; $2 secondary namespaces; $3 multiple edits.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rchide</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rclinks&amp;action=edit rclinks]&lt;br&gt;
+[[MediaWiki_talk:Rclinks|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Show last $1 changes in last $2 days&amp;lt;br /&amp;gt;$3
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rclinks</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rclistfrom&amp;action=edit rclistfrom]&lt;br&gt;
+[[MediaWiki_talk:Rclistfrom|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Show new changes starting from $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rclistfrom</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcliu&amp;action=edit rcliu]&lt;br&gt;
+[[MediaWiki_talk:Rcliu|Talk]]
+&lt;/td&gt;&lt;td&gt;
+; $1 edits from logged in users
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rcliu</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcloaderr&amp;action=edit rcloaderr]&lt;br&gt;
+[[MediaWiki_talk:Rcloaderr|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Loading recent changes
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rcloaderr</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rclsub&amp;action=edit rclsub]&lt;br&gt;
+[[MediaWiki_talk:Rclsub|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(to pages linked from &amp;quot;$1&amp;quot;)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rclsub</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcnote&amp;action=edit rcnote]&lt;br&gt;
+[[MediaWiki_talk:Rcnote|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Below are the last &amp;lt;strong&amp;gt;$1&amp;lt;/strong&amp;gt; changes in last &amp;lt;strong&amp;gt;$2&amp;lt;/strong&amp;gt; days.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rcnote</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcnotefrom&amp;action=edit rcnotefrom]&lt;br&gt;
+[[MediaWiki_talk:Rcnotefrom|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Below are the changes since &amp;lt;b&amp;gt;$2&amp;lt;/b&amp;gt; (up to &amp;lt;b&amp;gt;$1&amp;lt;/b&amp;gt; shown).
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rcnotefrom</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Readonly&amp;action=edit readonly]&lt;br&gt;
+[[MediaWiki_talk:Readonly|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Database locked
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Readonly</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Readonlytext&amp;action=edit readonlytext]&lt;br&gt;
+[[MediaWiki_talk:Readonlytext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The database is currently locked to new
+entries and other modifications, probably for routine database maintenance,
+after which it will be back to normal.
+The administrator who locked it offered this explanation:
+&amp;lt;p&amp;gt;$1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Readonlytext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Readonlywarning&amp;action=edit readonlywarning]&lt;br&gt;
+[[MediaWiki_talk:Readonlywarning|Talk]]
+&lt;/td&gt;&lt;td&gt;
+WARNING: The database has been locked for maintenance,
+so you will not be able to save your edits right now. You may wish to cut-n-paste
+the text into a text file and save it for later.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Readonlywarning</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchanges&amp;action=edit recentchanges]&lt;br&gt;
+[[MediaWiki_talk:Recentchanges|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Recent changes
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Recentchanges</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchangescount&amp;action=edit recentchangescount]&lt;br&gt;
+[[MediaWiki_talk:Recentchangescount|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Number of titles in recent changes
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Recentchangescount</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchangeslinked&amp;action=edit recentchangeslinked]&lt;br&gt;
+[[MediaWiki_talk:Recentchangeslinked|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Related changes
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Recentchangeslinked</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchangestext&amp;action=edit recentchangestext]&lt;br&gt;
+[[MediaWiki_talk:Recentchangestext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Track the most recent changes to the wiki on this page.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Recentchangestext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Redirectedfrom&amp;action=edit redirectedfrom]&lt;br&gt;
+[[MediaWiki_talk:Redirectedfrom|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(Redirected from $1)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Redirectedfrom</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Remembermypassword&amp;action=edit remembermypassword]&lt;br&gt;
+[[MediaWiki_talk:Remembermypassword|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Remember my password across sessions.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Remembermypassword</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removechecked&amp;action=edit removechecked]&lt;br&gt;
+[[MediaWiki_talk:Removechecked|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Remove checked items from watchlist
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Removechecked</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removedwatch&amp;action=edit removedwatch]&lt;br&gt;
+[[MediaWiki_talk:Removedwatch|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Removed from watchlist
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Removedwatch</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removedwatchtext&amp;action=edit removedwatchtext]&lt;br&gt;
+[[MediaWiki_talk:Removedwatchtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The page &amp;quot;$1&amp;quot; has been removed from your watchlist.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Removedwatchtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removingchecked&amp;action=edit removingchecked]&lt;br&gt;
+[[MediaWiki_talk:Removingchecked|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Removing requested items from watchlist...
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Removingchecked</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Resetprefs&amp;action=edit resetprefs]&lt;br&gt;
+[[MediaWiki_talk:Resetprefs|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Reset preferences
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Resetprefs</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Restorelink&amp;action=edit restorelink]&lt;br&gt;
+[[MediaWiki_talk:Restorelink|Talk]]
+&lt;/td&gt;&lt;td&gt;
+$1 deleted edits
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Restorelink</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Resultsperpage&amp;action=edit resultsperpage]&lt;br&gt;
+[[MediaWiki_talk:Resultsperpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Hits to show per page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Resultsperpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Retrievedfrom&amp;action=edit retrievedfrom]&lt;br&gt;
+[[MediaWiki_talk:Retrievedfrom|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Retrieved from &amp;quot;$1&amp;quot;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Retrievedfrom</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Returnto&amp;action=edit returnto]&lt;br&gt;
+[[MediaWiki_talk:Returnto|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Return to $1.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Returnto</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Retypenew&amp;action=edit retypenew]&lt;br&gt;
+[[MediaWiki_talk:Retypenew|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Retype new password
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Retypenew</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Reupload&amp;action=edit reupload]&lt;br&gt;
+[[MediaWiki_talk:Reupload|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Re-upload
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Reupload</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Reuploaddesc&amp;action=edit reuploaddesc]&lt;br&gt;
+[[MediaWiki_talk:Reuploaddesc|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Return to the upload form.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Reuploaddesc</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Reverted&amp;action=edit reverted]&lt;br&gt;
+[[MediaWiki_talk:Reverted|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Reverted to earlier revision
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Reverted</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revertimg&amp;action=edit revertimg]&lt;br&gt;
+[[MediaWiki_talk:Revertimg|Talk]]
+&lt;/td&gt;&lt;td&gt;
+rev
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Revertimg</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revertpage&amp;action=edit revertpage]&lt;br&gt;
+[[MediaWiki_talk:Revertpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Reverted edit of $2, changed back to last version by $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Revertpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revhistory&amp;action=edit revhistory]&lt;br&gt;
+[[MediaWiki_talk:Revhistory|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Revision history
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Revhistory</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revisionasof&amp;action=edit revisionasof]&lt;br&gt;
+[[MediaWiki_talk:Revisionasof|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Revision as of $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Revisionasof</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revnotfound&amp;action=edit revnotfound]&lt;br&gt;
+[[MediaWiki_talk:Revnotfound|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Revision not found
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Revnotfound</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revnotfoundtext&amp;action=edit revnotfoundtext]&lt;br&gt;
+[[MediaWiki_talk:Revnotfoundtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The old revision of the page you asked for could not be found.
+Please check the URL you used to access this page.
+
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Revnotfoundtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rfcurl&amp;action=edit rfcurl]&lt;br&gt;
+[[MediaWiki_talk:Rfcurl|Talk]]
+&lt;/td&gt;&lt;td&gt;
+http&amp;#58;//www.faqs.org/rfcs/rfc$1.html
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rfcurl</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rights&amp;action=edit rights]&lt;br&gt;
+[[MediaWiki_talk:Rights|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Rights:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rights</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollback&amp;action=edit rollback]&lt;br&gt;
+[[MediaWiki_talk:Rollback|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Roll back edits
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rollback</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollback_short&amp;action=edit rollback_short]&lt;br&gt;
+[[MediaWiki_talk:Rollback_short|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Rollback
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rollback_short</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollbackfailed&amp;action=edit rollbackfailed]&lt;br&gt;
+[[MediaWiki_talk:Rollbackfailed|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Rollback failed
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rollbackfailed</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollbacklink&amp;action=edit rollbacklink]&lt;br&gt;
+[[MediaWiki_talk:Rollbacklink|Talk]]
+&lt;/td&gt;&lt;td&gt;
+rollback
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rollbacklink</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rows&amp;action=edit rows]&lt;br&gt;
+[[MediaWiki_talk:Rows|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Rows
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Rows</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Savearticle&amp;action=edit savearticle]&lt;br&gt;
+[[MediaWiki_talk:Savearticle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Save page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Savearticle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Savedprefs&amp;action=edit savedprefs]&lt;br&gt;
+[[MediaWiki_talk:Savedprefs|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Your preferences have been saved.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Savedprefs</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Savefile&amp;action=edit savefile]&lt;br&gt;
+[[MediaWiki_talk:Savefile|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Save file
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Savefile</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Saveprefs&amp;action=edit saveprefs]&lt;br&gt;
+[[MediaWiki_talk:Saveprefs|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Save preferences
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Saveprefs</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Search&amp;action=edit search]&lt;br&gt;
+[[MediaWiki_talk:Search|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Search
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Search</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchdisabled&amp;action=edit searchdisabled]&lt;br&gt;
+[[MediaWiki_talk:Searchdisabled|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;p&amp;gt;Sorry! Full text search has been disabled temporarily, for performance reasons. In the meantime, you can use the Google search below, which may be out of date.&amp;lt;/p&amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Searchdisabled</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchhelppage&amp;action=edit searchhelppage]&lt;br&gt;
+[[MediaWiki_talk:Searchhelppage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary:Searching
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Searchhelppage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchingwikipedia&amp;action=edit searchingwikipedia]&lt;br&gt;
+[[MediaWiki_talk:Searchingwikipedia|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Searching Wiktionary
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Searchingwikipedia</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchquery&amp;action=edit searchquery]&lt;br&gt;
+[[MediaWiki_talk:Searchquery|Talk]]
+&lt;/td&gt;&lt;td&gt;
+For query &amp;quot;$1&amp;quot;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Searchquery</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchresults&amp;action=edit searchresults]&lt;br&gt;
+[[MediaWiki_talk:Searchresults|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Search results
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Searchresults</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchresultshead&amp;action=edit searchresultshead]&lt;br&gt;
+[[MediaWiki_talk:Searchresultshead|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Search result settings
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Searchresultshead</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchresulttext&amp;action=edit searchresulttext]&lt;br&gt;
+[[MediaWiki_talk:Searchresulttext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+For more information about searching Wiktionary, see $1.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Searchresulttext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sectionedit&amp;action=edit sectionedit]&lt;br&gt;
+[[MediaWiki_talk:Sectionedit|Talk]]
+&lt;/td&gt;&lt;td&gt;
+ (section)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Sectionedit</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selectnewerversionfordiff&amp;action=edit selectnewerversionfordiff]&lt;br&gt;
+[[MediaWiki_talk:Selectnewerversionfordiff|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Select a newer version for comparison
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Selectnewerversionfordiff</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selectolderversionfordiff&amp;action=edit selectolderversionfordiff]&lt;br&gt;
+[[MediaWiki_talk:Selectolderversionfordiff|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Select an older version for comparison
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Selectolderversionfordiff</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selectonly&amp;action=edit selectonly]&lt;br&gt;
+[[MediaWiki_talk:Selectonly|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Only read-only queries are allowed.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Selectonly</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selflinks&amp;action=edit selflinks]&lt;br&gt;
+[[MediaWiki_talk:Selflinks|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Pages with Self Links
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Selflinks</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selflinkstext&amp;action=edit selflinkstext]&lt;br&gt;
+[[MediaWiki_talk:Selflinkstext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The following pages contain a link to themselves, which they should not.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Selflinkstext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Seriousxhtmlerrors&amp;action=edit seriousxhtmlerrors]&lt;br&gt;
+[[MediaWiki_talk:Seriousxhtmlerrors|Talk]]
+&lt;/td&gt;&lt;td&gt;
+There were serious xhtml markup errors detected by tidy.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Seriousxhtmlerrors</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Servertime&amp;action=edit servertime]&lt;br&gt;
+[[MediaWiki_talk:Servertime|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Server time is now
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Servertime</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Set_rights_fail&amp;action=edit set_rights_fail]&lt;br&gt;
+[[MediaWiki_talk:Set_rights_fail|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;b&amp;gt;User rights for &amp;quot;$1&amp;quot; could not be set. (Did you enter the name correctly?)&amp;lt;/b&amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Set_rights_fail</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Set_user_rights&amp;action=edit set_user_rights]&lt;br&gt;
+[[MediaWiki_talk:Set_user_rights|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Set user rights
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Set_user_rights</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Setbureaucratflag&amp;action=edit setbureaucratflag]&lt;br&gt;
+[[MediaWiki_talk:Setbureaucratflag|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Set bureaucrat flag
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Setbureaucratflag</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Shortpages&amp;action=edit shortpages]&lt;br&gt;
+[[MediaWiki_talk:Shortpages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Short pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Shortpages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Show&amp;action=edit show]&lt;br&gt;
+[[MediaWiki_talk:Show|Talk]]
+&lt;/td&gt;&lt;td&gt;
+show
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Show</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showhideminor&amp;action=edit showhideminor]&lt;br&gt;
+[[MediaWiki_talk:Showhideminor|Talk]]
+&lt;/td&gt;&lt;td&gt;
+$1 minor edits &amp;#124; $2 bots &amp;#124; $3 logged in users
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Showhideminor</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showingresults&amp;action=edit showingresults]&lt;br&gt;
+[[MediaWiki_talk:Showingresults|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Showing below &amp;lt;b&amp;gt;$1&amp;lt;/b&amp;gt; results starting with #&amp;lt;b&amp;gt;$2&amp;lt;/b&amp;gt;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Showingresults</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showingresultsnum&amp;action=edit showingresultsnum]&lt;br&gt;
+[[MediaWiki_talk:Showingresultsnum|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Showing below &amp;lt;b&amp;gt;$3&amp;lt;/b&amp;gt; results starting with #&amp;lt;b&amp;gt;$2&amp;lt;/b&amp;gt;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Showingresultsnum</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showlast&amp;action=edit showlast]&lt;br&gt;
+[[MediaWiki_talk:Showlast|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Show last $1 images sorted $2.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Showlast</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showpreview&amp;action=edit showpreview]&lt;br&gt;
+[[MediaWiki_talk:Showpreview|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Show preview
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Showpreview</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showtoc&amp;action=edit showtoc]&lt;br&gt;
+[[MediaWiki_talk:Showtoc|Talk]]
+&lt;/td&gt;&lt;td&gt;
+show
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Showtoc</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sig_tip&amp;action=edit sig_tip]&lt;br&gt;
+[[MediaWiki_talk:Sig_tip|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Your signature with timestamp
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Sig_tip</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitestats&amp;action=edit sitestats]&lt;br&gt;
+[[MediaWiki_talk:Sitestats|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Site statistics
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Sitestats</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitestatstext&amp;action=edit sitestatstext]&lt;br&gt;
+[[MediaWiki_talk:Sitestatstext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+There are &amp;#39;&amp;#39;&amp;#39;$1&amp;#39;&amp;#39;&amp;#39; total pages in the database.
+This includes &amp;quot;talk&amp;quot; pages, pages about Wiktionary, minimal &amp;quot;stub&amp;quot;
+pages, redirects, and others that probably don&amp;#39;t qualify as content pages.
+Excluding those, there are &amp;#39;&amp;#39;&amp;#39;$2&amp;#39;&amp;#39;&amp;#39; pages that are probably legitimate
+content pages.
+
+There have been a total of &amp;#39;&amp;#39;&amp;#39;$3&amp;#39;&amp;#39;&amp;#39; page views, and &amp;#39;&amp;#39;&amp;#39;$4&amp;#39;&amp;#39;&amp;#39; page edits
+since the wiki was setup.
+That comes to &amp;#39;&amp;#39;&amp;#39;$5&amp;#39;&amp;#39;&amp;#39; average edits per page, and &amp;#39;&amp;#39;&amp;#39;$6&amp;#39;&amp;#39;&amp;#39; views per edit.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Sitestatstext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitesubtitle&amp;action=edit sitesubtitle]&lt;br&gt;
+[[MediaWiki_talk:Sitesubtitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The Free Encyclopedia
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Sitesubtitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitesupport&amp;action=edit sitesupport]&lt;br&gt;
+[[MediaWiki_talk:Sitesupport|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Donations
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Sitesupport</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitetitle&amp;action=edit sitetitle]&lt;br&gt;
+[[MediaWiki_talk:Sitetitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Sitetitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Siteuser&amp;action=edit siteuser]&lt;br&gt;
+[[MediaWiki_talk:Siteuser|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary user $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Siteuser</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Siteusers&amp;action=edit siteusers]&lt;br&gt;
+[[MediaWiki_talk:Siteusers|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary user(s) $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Siteusers</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Skin&amp;action=edit skin]&lt;br&gt;
+[[MediaWiki_talk:Skin|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Skin
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Skin</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Spamprotectiontext&amp;action=edit spamprotectiontext]&lt;br&gt;
+[[MediaWiki_talk:Spamprotectiontext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The page you wanted to save was blocked by the spam filter. This is probably caused by a link to an external site.
+
+You might want to check the following regular expression for patterns that are currently blocked:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Spamprotectiontext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Spamprotectiontitle&amp;action=edit spamprotectiontitle]&lt;br&gt;
+[[MediaWiki_talk:Spamprotectiontitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Spam protection filter
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Spamprotectiontitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Specialpage&amp;action=edit specialpage]&lt;br&gt;
+[[MediaWiki_talk:Specialpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Special Page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Specialpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Specialpages&amp;action=edit specialpages]&lt;br&gt;
+[[MediaWiki_talk:Specialpages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Special pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Specialpages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Spheading&amp;action=edit spheading]&lt;br&gt;
+[[MediaWiki_talk:Spheading|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Special pages for all users
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Spheading</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sqlislogged&amp;action=edit sqlislogged]&lt;br&gt;
+[[MediaWiki_talk:Sqlislogged|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Please note that all queries are logged.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Sqlislogged</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sqlquery&amp;action=edit sqlquery]&lt;br&gt;
+[[MediaWiki_talk:Sqlquery|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Enter query
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Sqlquery</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Statistics&amp;action=edit statistics]&lt;br&gt;
+[[MediaWiki_talk:Statistics|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Statistics
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Statistics</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Storedversion&amp;action=edit storedversion]&lt;br&gt;
+[[MediaWiki_talk:Storedversion|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Stored version
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Storedversion</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Stubthreshold&amp;action=edit stubthreshold]&lt;br&gt;
+[[MediaWiki_talk:Stubthreshold|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Threshold for stub display
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Stubthreshold</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Subcategories&amp;action=edit subcategories]&lt;br&gt;
+[[MediaWiki_talk:Subcategories|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Subcategories
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Subcategories</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Subject&amp;action=edit subject]&lt;br&gt;
+[[MediaWiki_talk:Subject|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Subject/headline
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Subject</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Subjectpage&amp;action=edit subjectpage]&lt;br&gt;
+[[MediaWiki_talk:Subjectpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+View subject
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Subjectpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Successfulupload&amp;action=edit successfulupload]&lt;br&gt;
+[[MediaWiki_talk:Successfulupload|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Successful upload
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Successfulupload</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Summary&amp;action=edit summary]&lt;br&gt;
+[[MediaWiki_talk:Summary|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Summary
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Summary</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sysopspheading&amp;action=edit sysopspheading]&lt;br&gt;
+[[MediaWiki_talk:Sysopspheading|Talk]]
+&lt;/td&gt;&lt;td&gt;
+For sysop use only
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Sysopspheading</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sysoptext&amp;action=edit sysoptext]&lt;br&gt;
+[[MediaWiki_talk:Sysoptext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The action you have requested can only be
+performed by users with &amp;quot;sysop&amp;quot; status.
+See $1.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Sysoptext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sysoptitle&amp;action=edit sysoptitle]&lt;br&gt;
+[[MediaWiki_talk:Sysoptitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Sysop access required
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Sysoptitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tableform&amp;action=edit tableform]&lt;br&gt;
+[[MediaWiki_talk:Tableform|Talk]]
+&lt;/td&gt;&lt;td&gt;
+table
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tableform</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talk&amp;action=edit talk]&lt;br&gt;
+[[MediaWiki_talk:Talk|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Discussion
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Talk</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkexists&amp;action=edit talkexists]&lt;br&gt;
+[[MediaWiki_talk:Talkexists|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The page itself was moved successfully, but the
+talk page could not be moved because one already exists at the new
+title. Please merge them manually.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Talkexists</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpage&amp;action=edit talkpage]&lt;br&gt;
+[[MediaWiki_talk:Talkpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Discuss this page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Talkpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpagemoved&amp;action=edit talkpagemoved]&lt;br&gt;
+[[MediaWiki_talk:Talkpagemoved|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The corresponding talk page was also moved.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Talkpagemoved</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpagenotmoved&amp;action=edit talkpagenotmoved]&lt;br&gt;
+[[MediaWiki_talk:Talkpagenotmoved|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The corresponding talk page was &amp;lt;strong&amp;gt;not&amp;lt;/strong&amp;gt; moved.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Talkpagenotmoved</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpagetext&amp;action=edit talkpagetext]&lt;br&gt;
+[[MediaWiki_talk:Talkpagetext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;!-- MediaWiki:talkpagetext --&amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Talkpagetext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Textboxsize&amp;action=edit textboxsize]&lt;br&gt;
+[[MediaWiki_talk:Textboxsize|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Textbox dimensions
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Textboxsize</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Textmatches&amp;action=edit textmatches]&lt;br&gt;
+[[MediaWiki_talk:Textmatches|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Page text matches
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Textmatches</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Thisisdeleted&amp;action=edit thisisdeleted]&lt;br&gt;
+[[MediaWiki_talk:Thisisdeleted|Talk]]
+&lt;/td&gt;&lt;td&gt;
+View or restore $1?
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Thisisdeleted</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Thumbnail-more&amp;action=edit thumbnail-more]&lt;br&gt;
+[[MediaWiki_talk:Thumbnail-more|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Enlarge
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Thumbnail-more</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Timezonelegend&amp;action=edit timezonelegend]&lt;br&gt;
+[[MediaWiki_talk:Timezonelegend|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Time zone
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Timezonelegend</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Timezoneoffset&amp;action=edit timezoneoffset]&lt;br&gt;
+[[MediaWiki_talk:Timezoneoffset|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Offset
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Timezoneoffset</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Timezonetext&amp;action=edit timezonetext]&lt;br&gt;
+[[MediaWiki_talk:Timezonetext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Enter number of hours your local time differs
+from server time (UTC).
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Timezonetext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Titlematches&amp;action=edit titlematches]&lt;br&gt;
+[[MediaWiki_talk:Titlematches|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Article title matches
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Titlematches</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Toc&amp;action=edit toc]&lt;br&gt;
+[[MediaWiki_talk:Toc|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Table of contents
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Toc</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Toolbox&amp;action=edit toolbox]&lt;br&gt;
+[[MediaWiki_talk:Toolbox|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Toolbox
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Toolbox</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-addsection&amp;action=edit tooltip-addsection]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-addsection|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Add a comment to this page. &amp;#91;alt-+]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-addsection</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-anontalk&amp;action=edit tooltip-anontalk]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-anontalk|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Discussion about edits from this ip address &amp;#91;alt-n]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-anontalk</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-anonuserpage&amp;action=edit tooltip-anonuserpage]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-anonuserpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The user page for the ip you&amp;#39;re editing as &amp;#91;alt-.]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-anonuserpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-article&amp;action=edit tooltip-article]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-article|Talk]]
+&lt;/td&gt;&lt;td&gt;
+View the content page &amp;#91;alt-a]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-article</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-atom&amp;action=edit tooltip-atom]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-atom|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Atom feed for this page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-atom</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-compareselectedversions&amp;action=edit tooltip-compareselectedversions]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-compareselectedversions|Talk]]
+&lt;/td&gt;&lt;td&gt;
+See the differences between the two selected versions of this page. &amp;#91;alt-v]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-compareselectedversions</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-contributions&amp;action=edit tooltip-contributions]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-contributions|Talk]]
+&lt;/td&gt;&lt;td&gt;
+View the list of contributions of this user
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-contributions</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-currentevents&amp;action=edit tooltip-currentevents]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-currentevents|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Find background information on current events
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-currentevents</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-delete&amp;action=edit tooltip-delete]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-delete|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Delete this page &amp;#91;alt-d]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-delete</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-edit&amp;action=edit tooltip-edit]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-edit|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You can edit this page. Please use the preview button before saving. &amp;#91;alt-e]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-edit</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-emailuser&amp;action=edit tooltip-emailuser]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-emailuser|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Send a mail to this user
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-emailuser</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-help&amp;action=edit tooltip-help]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-help|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The place to find out.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-help</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-history&amp;action=edit tooltip-history]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-history|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Past versions of this page, &amp;#91;alt-h]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-history</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-login&amp;action=edit tooltip-login]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-login|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You are encouraged to log in, it is not mandatory however. &amp;#91;alt-o]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-login</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-logout&amp;action=edit tooltip-logout]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-logout|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Log out &amp;#91;alt-o]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-logout</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-mainpage&amp;action=edit tooltip-mainpage]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-mainpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Visit the Main Page &amp;#91;alt-z]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-mainpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-minoredit&amp;action=edit tooltip-minoredit]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-minoredit|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Mark this as a minor edit &amp;#91;alt-i]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-minoredit</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-move&amp;action=edit tooltip-move]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-move|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Move this page &amp;#91;alt-m]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-move</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-mycontris&amp;action=edit tooltip-mycontris]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-mycontris|Talk]]
+&lt;/td&gt;&lt;td&gt;
+List of my contributions &amp;#91;alt-y]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-mycontris</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-mytalk&amp;action=edit tooltip-mytalk]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-mytalk|Talk]]
+&lt;/td&gt;&lt;td&gt;
+My talk page &amp;#91;alt-n]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-mytalk</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-nomove&amp;action=edit tooltip-nomove]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-nomove|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You don&amp;#39;t have the permissions to move this page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-nomove</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-portal&amp;action=edit tooltip-portal]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-portal|Talk]]
+&lt;/td&gt;&lt;td&gt;
+About the project, what you can do, where to find things
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-portal</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-preferences&amp;action=edit tooltip-preferences]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-preferences|Talk]]
+&lt;/td&gt;&lt;td&gt;
+My preferences
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-preferences</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-preview&amp;action=edit tooltip-preview]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-preview|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Preview your changes, please use this before saving! &amp;#91;alt-p]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-preview</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-protect&amp;action=edit tooltip-protect]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-protect|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Protect this page &amp;#91;alt-=]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-protect</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-randompage&amp;action=edit tooltip-randompage]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-randompage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Load a random page &amp;#91;alt-x]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-randompage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-recentchanges&amp;action=edit tooltip-recentchanges]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-recentchanges|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The list of recent changes in the wiki. &amp;#91;alt-r]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-recentchanges</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-recentchangeslinked&amp;action=edit tooltip-recentchangeslinked]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-recentchangeslinked|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Recent changes in pages linking to this page &amp;#91;alt-c]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-recentchangeslinked</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-rss&amp;action=edit tooltip-rss]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-rss|Talk]]
+&lt;/td&gt;&lt;td&gt;
+RSS feed for this page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-rss</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-save&amp;action=edit tooltip-save]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-save|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Save your changes &amp;#91;alt-s]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-save</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-search&amp;action=edit tooltip-search]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-search|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Search this wiki &amp;#91;alt-f]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-search</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-sitesupport&amp;action=edit tooltip-sitesupport]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-sitesupport|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Support Wiktionary
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-sitesupport</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-specialpage&amp;action=edit tooltip-specialpage]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-specialpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This is a special page, you can&amp;#39;t edit the page itself.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-specialpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-specialpages&amp;action=edit tooltip-specialpages]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-specialpages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+List of all special pages &amp;#91;alt-q]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-specialpages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-talk&amp;action=edit tooltip-talk]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-talk|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Discussion about the content page &amp;#91;alt-t]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-talk</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-undelete&amp;action=edit tooltip-undelete]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-undelete|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Restore the $1 edits done to this page before it was deleted &amp;#91;alt-d]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-undelete</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-unwatch&amp;action=edit tooltip-unwatch]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-unwatch|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Remove this page from your watchlist &amp;#91;alt-w]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-unwatch</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-upload&amp;action=edit tooltip-upload]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-upload|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Upload images or media files &amp;#91;alt-u]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-upload</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-userpage&amp;action=edit tooltip-userpage]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-userpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+My user page &amp;#91;alt-.]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-userpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-viewsource&amp;action=edit tooltip-viewsource]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-viewsource|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This page is protected. You can view its source. &amp;#91;alt-e]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-viewsource</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-watch&amp;action=edit tooltip-watch]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-watch|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Add this page to your watchlist &amp;#91;alt-w]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-watch</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-watchlist&amp;action=edit tooltip-watchlist]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-watchlist|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The list of pages you&amp;#39;re monitoring for changes. &amp;#91;alt-l]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-watchlist</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-whatlinkshere&amp;action=edit tooltip-whatlinkshere]&lt;br&gt;
+[[MediaWiki_talk:Tooltip-whatlinkshere|Talk]]
+&lt;/td&gt;&lt;td&gt;
+List of all wiki pages that link here &amp;#91;alt-b]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Tooltip-whatlinkshere</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uclinks&amp;action=edit uclinks]&lt;br&gt;
+[[MediaWiki_talk:Uclinks|Talk]]
+&lt;/td&gt;&lt;td&gt;
+View the last $1 changes; view the last $2 days.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uclinks</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ucnote&amp;action=edit ucnote]&lt;br&gt;
+[[MediaWiki_talk:Ucnote|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Below are this user&amp;#39;s last &amp;lt;b&amp;gt;$1&amp;lt;/b&amp;gt; changes in the last &amp;lt;b&amp;gt;$2&amp;lt;/b&amp;gt; days.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Ucnote</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uctop&amp;action=edit uctop]&lt;br&gt;
+[[MediaWiki_talk:Uctop|Talk]]
+&lt;/td&gt;&lt;td&gt;
+ (top)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uctop</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblockip&amp;action=edit unblockip]&lt;br&gt;
+[[MediaWiki_talk:Unblockip|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Unblock user
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unblockip</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblockiptext&amp;action=edit unblockiptext]&lt;br&gt;
+[[MediaWiki_talk:Unblockiptext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Use the form below to restore write access
+to a previously blocked IP address or username.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unblockiptext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblocklink&amp;action=edit unblocklink]&lt;br&gt;
+[[MediaWiki_talk:Unblocklink|Talk]]
+&lt;/td&gt;&lt;td&gt;
+unblock
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unblocklink</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblocklogentry&amp;action=edit unblocklogentry]&lt;br&gt;
+[[MediaWiki_talk:Unblocklogentry|Talk]]
+&lt;/td&gt;&lt;td&gt;
+unblocked &amp;quot;$1&amp;quot;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unblocklogentry</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undelete&amp;action=edit undelete]&lt;br&gt;
+[[MediaWiki_talk:Undelete|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Restore deleted page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Undelete</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undelete_short&amp;action=edit undelete_short]&lt;br&gt;
+[[MediaWiki_talk:Undelete_short|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Undelete $1 edits
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Undelete_short</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletearticle&amp;action=edit undeletearticle]&lt;br&gt;
+[[MediaWiki_talk:Undeletearticle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Restore deleted page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Undeletearticle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletebtn&amp;action=edit undeletebtn]&lt;br&gt;
+[[MediaWiki_talk:Undeletebtn|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Restore!
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Undeletebtn</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletedarticle&amp;action=edit undeletedarticle]&lt;br&gt;
+[[MediaWiki_talk:Undeletedarticle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+restored &amp;quot;$1&amp;quot;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Undeletedarticle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletedtext&amp;action=edit undeletedtext]&lt;br&gt;
+[[MediaWiki_talk:Undeletedtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;#91;&amp;#91;$1]] has been successfully restored.
+See &amp;#91;&amp;#91;Wiktionary:Deletion_log]] for a record of recent deletions and restorations.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Undeletedtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletehistory&amp;action=edit undeletehistory]&lt;br&gt;
+[[MediaWiki_talk:Undeletehistory|Talk]]
+&lt;/td&gt;&lt;td&gt;
+If you restore the page, all revisions will be restored to the history.
+If a new page with the same name has been created since the deletion, the restored
+revisions will appear in the prior history, and the current revision of the live page
+will not be automatically replaced.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Undeletehistory</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletepage&amp;action=edit undeletepage]&lt;br&gt;
+[[MediaWiki_talk:Undeletepage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+View and restore deleted pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Undeletepage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletepagetext&amp;action=edit undeletepagetext]&lt;br&gt;
+[[MediaWiki_talk:Undeletepagetext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The following pages have been deleted but are still in the archive and
+can be restored. The archive may be periodically cleaned out.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Undeletepagetext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeleterevision&amp;action=edit undeleterevision]&lt;br&gt;
+[[MediaWiki_talk:Undeleterevision|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Deleted revision as of $1
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Undeleterevision</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeleterevisions&amp;action=edit undeleterevisions]&lt;br&gt;
+[[MediaWiki_talk:Undeleterevisions|Talk]]
+&lt;/td&gt;&lt;td&gt;
+$1 revisions archived
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Undeleterevisions</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unexpected&amp;action=edit unexpected]&lt;br&gt;
+[[MediaWiki_talk:Unexpected|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Unexpected value: &amp;quot;$1&amp;quot;=&amp;quot;$2&amp;quot;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unexpected</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockbtn&amp;action=edit unlockbtn]&lt;br&gt;
+[[MediaWiki_talk:Unlockbtn|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Unlock database
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unlockbtn</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockconfirm&amp;action=edit unlockconfirm]&lt;br&gt;
+[[MediaWiki_talk:Unlockconfirm|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Yes, I really want to unlock the database.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unlockconfirm</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdb&amp;action=edit unlockdb]&lt;br&gt;
+[[MediaWiki_talk:Unlockdb|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Unlock database
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unlockdb</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdbsuccesssub&amp;action=edit unlockdbsuccesssub]&lt;br&gt;
+[[MediaWiki_talk:Unlockdbsuccesssub|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Database lock removed
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unlockdbsuccesssub</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdbsuccesstext&amp;action=edit unlockdbsuccesstext]&lt;br&gt;
+[[MediaWiki_talk:Unlockdbsuccesstext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The database has been unlocked.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unlockdbsuccesstext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdbtext&amp;action=edit unlockdbtext]&lt;br&gt;
+[[MediaWiki_talk:Unlockdbtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Unlocking the database will restore the ability of all
+users to edit pages, change their preferences, edit their watchlists, and
+other things requiring changes in the database.
+Please confirm that this is what you intend to do.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unlockdbtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotect&amp;action=edit unprotect]&lt;br&gt;
+[[MediaWiki_talk:Unprotect|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Unprotect
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unprotect</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectcomment&amp;action=edit unprotectcomment]&lt;br&gt;
+[[MediaWiki_talk:Unprotectcomment|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Reason for unprotecting
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unprotectcomment</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectedarticle&amp;action=edit unprotectedarticle]&lt;br&gt;
+[[MediaWiki_talk:Unprotectedarticle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+unprotected &amp;#91;&amp;#91;$1]]
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unprotectedarticle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectsub&amp;action=edit unprotectsub]&lt;br&gt;
+[[MediaWiki_talk:Unprotectsub|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(Unprotecting &amp;quot;$1&amp;quot;)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unprotectsub</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectthispage&amp;action=edit unprotectthispage]&lt;br&gt;
+[[MediaWiki_talk:Unprotectthispage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Unprotect this page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unprotectthispage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unusedimages&amp;action=edit unusedimages]&lt;br&gt;
+[[MediaWiki_talk:Unusedimages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Unused images
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unusedimages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unusedimagestext&amp;action=edit unusedimagestext]&lt;br&gt;
+[[MediaWiki_talk:Unusedimagestext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;p&amp;gt;Please note that other web sites may link to an image with
+a direct URL, and so may still be listed here despite being
+in active use.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unusedimagestext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unwatch&amp;action=edit unwatch]&lt;br&gt;
+[[MediaWiki_talk:Unwatch|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Unwatch
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unwatch</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unwatchthispage&amp;action=edit unwatchthispage]&lt;br&gt;
+[[MediaWiki_talk:Unwatchthispage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Stop watching
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Unwatchthispage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Updated&amp;action=edit updated]&lt;br&gt;
+[[MediaWiki_talk:Updated|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(Updated)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Updated</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Upload&amp;action=edit upload]&lt;br&gt;
+[[MediaWiki_talk:Upload|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Upload file
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Upload</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadbtn&amp;action=edit uploadbtn]&lt;br&gt;
+[[MediaWiki_talk:Uploadbtn|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Upload file
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploadbtn</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploaddisabled&amp;action=edit uploaddisabled]&lt;br&gt;
+[[MediaWiki_talk:Uploaddisabled|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Sorry, uploading is disabled.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploaddisabled</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadedfiles&amp;action=edit uploadedfiles]&lt;br&gt;
+[[MediaWiki_talk:Uploadedfiles|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Uploaded files
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploadedfiles</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadedimage&amp;action=edit uploadedimage]&lt;br&gt;
+[[MediaWiki_talk:Uploadedimage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+uploaded &amp;quot;$1&amp;quot;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploadedimage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploaderror&amp;action=edit uploaderror]&lt;br&gt;
+[[MediaWiki_talk:Uploaderror|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Upload error
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploaderror</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadfile&amp;action=edit uploadfile]&lt;br&gt;
+[[MediaWiki_talk:Uploadfile|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Upload images, sounds, documents etc.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploadfile</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlink&amp;action=edit uploadlink]&lt;br&gt;
+[[MediaWiki_talk:Uploadlink|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Upload images
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploadlink</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlog&amp;action=edit uploadlog]&lt;br&gt;
+[[MediaWiki_talk:Uploadlog|Talk]]
+&lt;/td&gt;&lt;td&gt;
+upload log
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploadlog</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlogpage&amp;action=edit uploadlogpage]&lt;br&gt;
+[[MediaWiki_talk:Uploadlogpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Upload_log
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploadlogpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlogpagetext&amp;action=edit uploadlogpagetext]&lt;br&gt;
+[[MediaWiki_talk:Uploadlogpagetext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Below is a list of the most recent file uploads.
+All times shown are server time (UTC).
+&amp;lt;ul&amp;gt;
+&amp;lt;/ul&amp;gt;
+
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploadlogpagetext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadnologin&amp;action=edit uploadnologin]&lt;br&gt;
+[[MediaWiki_talk:Uploadnologin|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Not logged in
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploadnologin</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadnologintext&amp;action=edit uploadnologintext]&lt;br&gt;
+[[MediaWiki_talk:Uploadnologintext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You must be &amp;lt;a href=&amp;quot;/wiki/Special:Userlogin&amp;quot;&amp;gt;logged in&amp;lt;/a&amp;gt;
+to upload files.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploadnologintext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadtext&amp;action=edit uploadtext]&lt;br&gt;
+[[MediaWiki_talk:Uploadtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;strong&amp;gt;STOP!&amp;lt;/strong&amp;gt; Before you upload here,
+make sure to read and follow the &amp;lt;a href=&amp;quot;/wiki/Special:Image_use_policy&amp;quot;&amp;gt;image use policy&amp;lt;/a&amp;gt;.
+&amp;lt;p&amp;gt;If a file with the name you are specifying already
+exists on the wiki, it&amp;#39;ll be replaced without warning.
+So unless you mean to update a file, it&amp;#39;s a good idea
+to first check if such a file exists.
+&amp;lt;p&amp;gt;To view or search previously uploaded images,
+go to the &amp;lt;a href=&amp;quot;/wiki/Special:Imagelist&amp;quot;&amp;gt;list of uploaded images&amp;lt;/a&amp;gt;.
+Uploads and deletions are logged on the &amp;lt;a href=&amp;quot;/wiki/Wiktionary:Upload_log&amp;quot;&amp;gt;upload log&amp;lt;/a&amp;gt;.
+&amp;lt;/p&amp;gt;&amp;lt;p&amp;gt;Use the form below to upload new image files for use in
+illustrating your pages.
+On most browsers, you will see a &amp;quot;Browse...&amp;quot; button, which will
+bring up your operating system&amp;#39;s standard file open dialog.
+Choosing a file will fill the name of that file into the text
+field next to the button.
+You must also check the box affirming that you are not
+violating any copyrights by uploading the file.
+Press the &amp;quot;Upload&amp;quot; button to finish the upload.
+This may take some time if you have a slow internet connection.
+&amp;lt;p&amp;gt;The preferred formats are JPEG for photographic images, PNG
+for drawings and other iconic images, and OGG for sounds.
+Please name your files descriptively to avoid confusion.
+To include the image in a page, use a link in the form
+&amp;lt;b&amp;gt;&amp;#91;&amp;#91;Image:file.jpg]]&amp;lt;/b&amp;gt; or &amp;lt;b&amp;gt;&amp;#91;&amp;#91;Image:file.png&amp;#124;alt text]]&amp;lt;/b&amp;gt;
+or &amp;lt;b&amp;gt;&amp;#91;&amp;#91;Media:file.ogg]]&amp;lt;/b&amp;gt; for sounds.
+&amp;lt;p&amp;gt;Please note that as with wiki pages, others may edit or
+delete your uploads if they think it serves the project, and
+you may be blocked from uploading if you abuse the system.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploadtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadwarning&amp;action=edit uploadwarning]&lt;br&gt;
+[[MediaWiki_talk:Uploadwarning|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Upload warning
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Uploadwarning</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:User_rights_set&amp;action=edit user_rights_set]&lt;br&gt;
+[[MediaWiki_talk:User_rights_set|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;b&amp;gt;User rights for &amp;quot;$1&amp;quot; updated&amp;lt;/b&amp;gt;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:User_rights_set</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usercssjs&amp;action=edit usercssjs]&lt;br&gt;
+[[MediaWiki_talk:Usercssjs|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;#39;&amp;#39;&amp;#39;Note:&amp;#39;&amp;#39;&amp;#39; After saving, you have to tell your bowser to get the new version: &amp;#39;&amp;#39;&amp;#39;Mozilla:&amp;#39;&amp;#39;&amp;#39; click &amp;#39;&amp;#39;reload&amp;#39;&amp;#39;(or &amp;#39;&amp;#39;ctrl-r&amp;#39;&amp;#39;), &amp;#39;&amp;#39;&amp;#39;IE / Opera:&amp;#39;&amp;#39;&amp;#39; &amp;#39;&amp;#39;ctrl-f5&amp;#39;&amp;#39;, &amp;#39;&amp;#39;&amp;#39;Safari:&amp;#39;&amp;#39;&amp;#39; &amp;#39;&amp;#39;cmd-r&amp;#39;&amp;#39;, &amp;#39;&amp;#39;&amp;#39;Konqueror&amp;#39;&amp;#39;&amp;#39; &amp;#39;&amp;#39;ctrl-r&amp;#39;&amp;#39;.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Usercssjs</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usercssjsyoucanpreview&amp;action=edit usercssjsyoucanpreview]&lt;br&gt;
+[[MediaWiki_talk:Usercssjsyoucanpreview|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;strong&amp;gt;Tip:&amp;lt;/strong&amp;gt; Use the &amp;#39;Show preview&amp;#39; button to test your new css/js before saving.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Usercssjsyoucanpreview</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usercsspreview&amp;action=edit usercsspreview]&lt;br&gt;
+[[MediaWiki_talk:Usercsspreview|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;#39;&amp;#39;&amp;#39;Remember that you are only previewing your user css, it has not yet been saved!&amp;#39;&amp;#39;&amp;#39;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Usercsspreview</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userexists&amp;action=edit userexists]&lt;br&gt;
+[[MediaWiki_talk:Userexists|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The user name you entered is already in use. Please choose a different name.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Userexists</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userjspreview&amp;action=edit userjspreview]&lt;br&gt;
+[[MediaWiki_talk:Userjspreview|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;#39;&amp;#39;&amp;#39;Remember that you are only testing/previewing your user javascript, it has not yet been saved!&amp;#39;&amp;#39;&amp;#39;
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Userjspreview</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userlogin&amp;action=edit userlogin]&lt;br&gt;
+[[MediaWiki_talk:Userlogin|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Log in
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Userlogin</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userlogout&amp;action=edit userlogout]&lt;br&gt;
+[[MediaWiki_talk:Userlogout|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Log out
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Userlogout</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usermailererror&amp;action=edit usermailererror]&lt;br&gt;
+[[MediaWiki_talk:Usermailererror|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Mail object returned error:
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Usermailererror</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userpage&amp;action=edit userpage]&lt;br&gt;
+[[MediaWiki_talk:Userpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+View user page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Userpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userstats&amp;action=edit userstats]&lt;br&gt;
+[[MediaWiki_talk:Userstats|Talk]]
+&lt;/td&gt;&lt;td&gt;
+User statistics
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Userstats</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userstatstext&amp;action=edit userstatstext]&lt;br&gt;
+[[MediaWiki_talk:Userstatstext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+There are &amp;#39;&amp;#39;&amp;#39;$1&amp;#39;&amp;#39;&amp;#39; registered users.
+&amp;#39;&amp;#39;&amp;#39;$2&amp;#39;&amp;#39;&amp;#39; of these are administrators (see $3).
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Userstatstext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Version&amp;action=edit version]&lt;br&gt;
+[[MediaWiki_talk:Version|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Version
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Version</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewcount&amp;action=edit viewcount]&lt;br&gt;
+[[MediaWiki_talk:Viewcount|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This page has been accessed $1 times.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Viewcount</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewprevnext&amp;action=edit viewprevnext]&lt;br&gt;
+[[MediaWiki_talk:Viewprevnext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+View ($1) ($2) ($3).
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Viewprevnext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewsource&amp;action=edit viewsource]&lt;br&gt;
+[[MediaWiki_talk:Viewsource|Talk]]
+&lt;/td&gt;&lt;td&gt;
+View source
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Viewsource</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewtalkpage&amp;action=edit viewtalkpage]&lt;br&gt;
+[[MediaWiki_talk:Viewtalkpage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+View discussion
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Viewtalkpage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wantedpages&amp;action=edit wantedpages]&lt;br&gt;
+[[MediaWiki_talk:Wantedpages|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wanted pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Wantedpages</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watch&amp;action=edit watch]&lt;br&gt;
+[[MediaWiki_talk:Watch|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Watch
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Watch</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchdetails&amp;action=edit watchdetails]&lt;br&gt;
+[[MediaWiki_talk:Watchdetails|Talk]]
+&lt;/td&gt;&lt;td&gt;
+($1 pages watched not counting talk pages;
+$2 total pages edited since cutoff;
+$3...
+&amp;lt;a href=&amp;#39;$4&amp;#39;&amp;gt;show and edit complete list&amp;lt;/a&amp;gt;.)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Watchdetails</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watcheditlist&amp;action=edit watcheditlist]&lt;br&gt;
+[[MediaWiki_talk:Watcheditlist|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Here&amp;#39;s an alphabetical list of your
+watched pages. Check the boxes of pages you want to remove
+from your watchlist and click the &amp;#39;remove checked&amp;#39; button
+at the bottom of the screen.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Watcheditlist</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchlist&amp;action=edit watchlist]&lt;br&gt;
+[[MediaWiki_talk:Watchlist|Talk]]
+&lt;/td&gt;&lt;td&gt;
+My watchlist
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Watchlist</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchlistcontains&amp;action=edit watchlistcontains]&lt;br&gt;
+[[MediaWiki_talk:Watchlistcontains|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Your watchlist contains $1 pages.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Watchlistcontains</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchlistsub&amp;action=edit watchlistsub]&lt;br&gt;
+[[MediaWiki_talk:Watchlistsub|Talk]]
+&lt;/td&gt;&lt;td&gt;
+(for user &amp;quot;$1&amp;quot;)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Watchlistsub</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchmethod-list&amp;action=edit watchmethod-list]&lt;br&gt;
+[[MediaWiki_talk:Watchmethod-list|Talk]]
+&lt;/td&gt;&lt;td&gt;
+checking watched pages for recent edits
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Watchmethod-list</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchmethod-recent&amp;action=edit watchmethod-recent]&lt;br&gt;
+[[MediaWiki_talk:Watchmethod-recent|Talk]]
+&lt;/td&gt;&lt;td&gt;
+checking recent edits for watched pages
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Watchmethod-recent</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchnochange&amp;action=edit watchnochange]&lt;br&gt;
+[[MediaWiki_talk:Watchnochange|Talk]]
+&lt;/td&gt;&lt;td&gt;
+None of your watched items were edited in the time period displayed.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Watchnochange</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchnologin&amp;action=edit watchnologin]&lt;br&gt;
+[[MediaWiki_talk:Watchnologin|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Not logged in
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Watchnologin</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchnologintext&amp;action=edit watchnologintext]&lt;br&gt;
+[[MediaWiki_talk:Watchnologintext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You must be &amp;lt;a href=&amp;quot;/wiki/Special:Userlogin&amp;quot;&amp;gt;logged in&amp;lt;/a&amp;gt;
+to modify your watchlist.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Watchnologintext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchthis&amp;action=edit watchthis]&lt;br&gt;
+[[MediaWiki_talk:Watchthis|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Watch this page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Watchthis</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchthispage&amp;action=edit watchthispage]&lt;br&gt;
+[[MediaWiki_talk:Watchthispage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Watch this page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Watchthispage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Welcomecreation&amp;action=edit welcomecreation]&lt;br&gt;
+[[MediaWiki_talk:Welcomecreation|Talk]]
+&lt;/td&gt;&lt;td&gt;
+&amp;lt;h2&amp;gt;Welcome, $1!&amp;lt;/h2&amp;gt;&amp;lt;p&amp;gt;Your account has been created.
+Don&amp;#39;t forget to change your Wiktionary preferences.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Welcomecreation</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whatlinkshere&amp;action=edit whatlinkshere]&lt;br&gt;
+[[MediaWiki_talk:Whatlinkshere|Talk]]
+&lt;/td&gt;&lt;td&gt;
+What links here
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Whatlinkshere</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistacctext&amp;action=edit whitelistacctext]&lt;br&gt;
+[[MediaWiki_talk:Whitelistacctext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+To be allowed to create accounts in this Wiki you have to &amp;#91;&amp;#91;Special:Userlogin&amp;#124;log]] in and have the appropriate permissions.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Whitelistacctext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistacctitle&amp;action=edit whitelistacctitle]&lt;br&gt;
+[[MediaWiki_talk:Whitelistacctitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You are not allowed to create an account
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Whitelistacctitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistedittext&amp;action=edit whitelistedittext]&lt;br&gt;
+[[MediaWiki_talk:Whitelistedittext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You have to &amp;#91;&amp;#91;Special:Userlogin&amp;#124;login]] to edit pages.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Whitelistedittext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistedittitle&amp;action=edit whitelistedittitle]&lt;br&gt;
+[[MediaWiki_talk:Whitelistedittitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Login required to edit
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Whitelistedittitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistreadtext&amp;action=edit whitelistreadtext]&lt;br&gt;
+[[MediaWiki_talk:Whitelistreadtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+You have to &amp;#91;&amp;#91;Special:Userlogin&amp;#124;login]] to read pages.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Whitelistreadtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistreadtitle&amp;action=edit whitelistreadtitle]&lt;br&gt;
+[[MediaWiki_talk:Whitelistreadtitle|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Login required to read
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Whitelistreadtitle</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wikipediapage&amp;action=edit wikipediapage]&lt;br&gt;
+[[MediaWiki_talk:Wikipediapage|Talk]]
+&lt;/td&gt;&lt;td&gt;
+View project page
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Wikipediapage</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wikititlesuffix&amp;action=edit wikititlesuffix]&lt;br&gt;
+[[MediaWiki_talk:Wikititlesuffix|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Wiktionary
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Wikititlesuffix</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wlnote&amp;action=edit wlnote]&lt;br&gt;
+[[MediaWiki_talk:Wlnote|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Below are the last $1 changes in the last &amp;lt;b&amp;gt;$2&amp;lt;/b&amp;gt; hours.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Wlnote</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wlsaved&amp;action=edit wlsaved]&lt;br&gt;
+[[MediaWiki_talk:Wlsaved|Talk]]
+&lt;/td&gt;&lt;td&gt;
+This is a saved version of your watchlist.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Wlsaved</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wlshowlast&amp;action=edit wlshowlast]&lt;br&gt;
+[[MediaWiki_talk:Wlshowlast|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Show last $1 hours $2 days $3
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Wlshowlast</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wrong_wfQuery_params&amp;action=edit wrong_wfQuery_params]&lt;br&gt;
+[[MediaWiki_talk:Wrong_wfQuery_params|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Incorrect parameters to wfQuery()&amp;lt;br /&amp;gt;
+Function: $1&amp;lt;br /&amp;gt;
+Query: $2
+
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Wrong_wfQuery_params</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wrongpassword&amp;action=edit wrongpassword]&lt;br&gt;
+[[MediaWiki_talk:Wrongpassword|Talk]]
+&lt;/td&gt;&lt;td&gt;
+The password you entered is incorrect. Please try again.
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Wrongpassword</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourdiff&amp;action=edit yourdiff]&lt;br&gt;
+[[MediaWiki_talk:Yourdiff|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Differences
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Yourdiff</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Youremail&amp;action=edit youremail]&lt;br&gt;
+[[MediaWiki_talk:Youremail|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Your email*
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Youremail</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourname&amp;action=edit yourname]&lt;br&gt;
+[[MediaWiki_talk:Yourname|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Your user name
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Yourname</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yournick&amp;action=edit yournick]&lt;br&gt;
+[[MediaWiki_talk:Yournick|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Your nickname (for signatures)
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Yournick</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourpassword&amp;action=edit yourpassword]&lt;br&gt;
+[[MediaWiki_talk:Yourpassword|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Your password
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Yourpassword</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourpasswordagain&amp;action=edit yourpasswordagain]&lt;br&gt;
+[[MediaWiki_talk:Yourpasswordagain|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Retype password
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Yourpasswordagain</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourrealname&amp;action=edit yourrealname]&lt;br&gt;
+[[MediaWiki_talk:Yourrealname|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Your real name*
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Yourrealname</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;tr&gt;&lt;td&gt;
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourtext&amp;action=edit yourtext]&lt;br&gt;
+[[MediaWiki_talk:Yourtext|Talk]]
+&lt;/td&gt;&lt;td&gt;
+Your text
+&lt;/td&gt;&lt;td&gt;
+<template lineStart="1"><title>int:Yourtext</title></template>
+&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
+
+</root> \ No newline at end of file
diff --git a/tests/parser/preprocess/All_system_messages.txt b/tests/parser/preprocess/All_system_messages.txt
new file mode 100644
index 00000000..fc10d7cf
--- /dev/null
+++ b/tests/parser/preprocess/All_system_messages.txt
@@ -0,0 +1,5645 @@
+{{int:allmessagestext}}
+
+<table border=1 width=100%><tr><td>
+'''Name'''
+</td><td>
+'''Default text'''
+</td><td>
+'''Current text'''
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:1movedto2&action=edit 1movedto2]<br>
+[[MediaWiki_talk:1movedto2|Talk]]
+</td><td>
+$1 moved to $2
+</td><td>
+{{int:1movedto2}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Monobook.css&action=edit Monobook.css]<br>
+[[MediaWiki_talk:Monobook.css|Talk]]
+</td><td>
+/* edit this file to customize the monobook skin for the entire site */
+</td><td>
+{{int:Monobook.css}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:About&action=edit about]<br>
+[[MediaWiki_talk:About|Talk]]
+</td><td>
+About
+</td><td>
+{{int:About}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Aboutpage&action=edit aboutpage]<br>
+[[MediaWiki_talk:Aboutpage|Talk]]
+</td><td>
+Wiktionary:About
+</td><td>
+{{int:Aboutpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Aboutwikipedia&action=edit aboutwikipedia]<br>
+[[MediaWiki_talk:Aboutwikipedia|Talk]]
+</td><td>
+About Wiktionary
+</td><td>
+{{int:Aboutwikipedia}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-addsection&action=edit accesskey-addsection]<br>
+[[MediaWiki_talk:Accesskey-addsection|Talk]]
+</td><td>
++
+</td><td>
+{{int:Accesskey-addsection}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-anontalk&action=edit accesskey-anontalk]<br>
+[[MediaWiki_talk:Accesskey-anontalk|Talk]]
+</td><td>
+n
+</td><td>
+{{int:Accesskey-anontalk}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-anonuserpage&action=edit accesskey-anonuserpage]<br>
+[[MediaWiki_talk:Accesskey-anonuserpage|Talk]]
+</td><td>
+.
+</td><td>
+{{int:Accesskey-anonuserpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-article&action=edit accesskey-article]<br>
+[[MediaWiki_talk:Accesskey-article|Talk]]
+</td><td>
+a
+</td><td>
+{{int:Accesskey-article}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-compareselectedversions&action=edit accesskey-compareselectedversions]<br>
+[[MediaWiki_talk:Accesskey-compareselectedversions|Talk]]
+</td><td>
+v
+</td><td>
+{{int:Accesskey-compareselectedversions}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-contributions&action=edit accesskey-contributions]<br>
+[[MediaWiki_talk:Accesskey-contributions|Talk]]
+</td><td>
+&amp;lt;accesskey-contributions&amp;gt;
+</td><td>
+{{int:Accesskey-contributions}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-currentevents&action=edit accesskey-currentevents]<br>
+[[MediaWiki_talk:Accesskey-currentevents|Talk]]
+</td><td>
+&amp;lt;accesskey-currentevents&amp;gt;
+</td><td>
+{{int:Accesskey-currentevents}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-delete&action=edit accesskey-delete]<br>
+[[MediaWiki_talk:Accesskey-delete|Talk]]
+</td><td>
+d
+</td><td>
+{{int:Accesskey-delete}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-edit&action=edit accesskey-edit]<br>
+[[MediaWiki_talk:Accesskey-edit|Talk]]
+</td><td>
+e
+</td><td>
+{{int:Accesskey-edit}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-emailuser&action=edit accesskey-emailuser]<br>
+[[MediaWiki_talk:Accesskey-emailuser|Talk]]
+</td><td>
+&amp;lt;accesskey-emailuser&amp;gt;
+</td><td>
+{{int:Accesskey-emailuser}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-help&action=edit accesskey-help]<br>
+[[MediaWiki_talk:Accesskey-help|Talk]]
+</td><td>
+&amp;lt;accesskey-help&amp;gt;
+</td><td>
+{{int:Accesskey-help}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-history&action=edit accesskey-history]<br>
+[[MediaWiki_talk:Accesskey-history|Talk]]
+</td><td>
+h
+</td><td>
+{{int:Accesskey-history}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-login&action=edit accesskey-login]<br>
+[[MediaWiki_talk:Accesskey-login|Talk]]
+</td><td>
+o
+</td><td>
+{{int:Accesskey-login}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-logout&action=edit accesskey-logout]<br>
+[[MediaWiki_talk:Accesskey-logout|Talk]]
+</td><td>
+o
+</td><td>
+{{int:Accesskey-logout}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-mainpage&action=edit accesskey-mainpage]<br>
+[[MediaWiki_talk:Accesskey-mainpage|Talk]]
+</td><td>
+z
+</td><td>
+{{int:Accesskey-mainpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-minoredit&action=edit accesskey-minoredit]<br>
+[[MediaWiki_talk:Accesskey-minoredit|Talk]]
+</td><td>
+i
+</td><td>
+{{int:Accesskey-minoredit}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-move&action=edit accesskey-move]<br>
+[[MediaWiki_talk:Accesskey-move|Talk]]
+</td><td>
+m
+</td><td>
+{{int:Accesskey-move}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-mycontris&action=edit accesskey-mycontris]<br>
+[[MediaWiki_talk:Accesskey-mycontris|Talk]]
+</td><td>
+y
+</td><td>
+{{int:Accesskey-mycontris}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-mytalk&action=edit accesskey-mytalk]<br>
+[[MediaWiki_talk:Accesskey-mytalk|Talk]]
+</td><td>
+n
+</td><td>
+{{int:Accesskey-mytalk}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-portal&action=edit accesskey-portal]<br>
+[[MediaWiki_talk:Accesskey-portal|Talk]]
+</td><td>
+&amp;lt;accesskey-portal&amp;gt;
+</td><td>
+{{int:Accesskey-portal}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-preferences&action=edit accesskey-preferences]<br>
+[[MediaWiki_talk:Accesskey-preferences|Talk]]
+</td><td>
+&amp;lt;accesskey-preferences&amp;gt;
+</td><td>
+{{int:Accesskey-preferences}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-preview&action=edit accesskey-preview]<br>
+[[MediaWiki_talk:Accesskey-preview|Talk]]
+</td><td>
+p
+</td><td>
+{{int:Accesskey-preview}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-protect&action=edit accesskey-protect]<br>
+[[MediaWiki_talk:Accesskey-protect|Talk]]
+</td><td>
+=
+</td><td>
+{{int:Accesskey-protect}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-randompage&action=edit accesskey-randompage]<br>
+[[MediaWiki_talk:Accesskey-randompage|Talk]]
+</td><td>
+x
+</td><td>
+{{int:Accesskey-randompage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-recentchanges&action=edit accesskey-recentchanges]<br>
+[[MediaWiki_talk:Accesskey-recentchanges|Talk]]
+</td><td>
+r
+</td><td>
+{{int:Accesskey-recentchanges}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-recentchangeslinked&action=edit accesskey-recentchangeslinked]<br>
+[[MediaWiki_talk:Accesskey-recentchangeslinked|Talk]]
+</td><td>
+c
+</td><td>
+{{int:Accesskey-recentchangeslinked}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-save&action=edit accesskey-save]<br>
+[[MediaWiki_talk:Accesskey-save|Talk]]
+</td><td>
+s
+</td><td>
+{{int:Accesskey-save}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-search&action=edit accesskey-search]<br>
+[[MediaWiki_talk:Accesskey-search|Talk]]
+</td><td>
+f
+</td><td>
+{{int:Accesskey-search}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-sitesupport&action=edit accesskey-sitesupport]<br>
+[[MediaWiki_talk:Accesskey-sitesupport|Talk]]
+</td><td>
+&amp;lt;accesskey-sitesupport&amp;gt;
+</td><td>
+{{int:Accesskey-sitesupport}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-specialpage&action=edit accesskey-specialpage]<br>
+[[MediaWiki_talk:Accesskey-specialpage|Talk]]
+</td><td>
+&amp;lt;accesskey-specialpage&amp;gt;
+</td><td>
+{{int:Accesskey-specialpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-specialpages&action=edit accesskey-specialpages]<br>
+[[MediaWiki_talk:Accesskey-specialpages|Talk]]
+</td><td>
+q
+</td><td>
+{{int:Accesskey-specialpages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-talk&action=edit accesskey-talk]<br>
+[[MediaWiki_talk:Accesskey-talk|Talk]]
+</td><td>
+t
+</td><td>
+{{int:Accesskey-talk}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-undelete&action=edit accesskey-undelete]<br>
+[[MediaWiki_talk:Accesskey-undelete|Talk]]
+</td><td>
+d
+</td><td>
+{{int:Accesskey-undelete}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-unwatch&action=edit accesskey-unwatch]<br>
+[[MediaWiki_talk:Accesskey-unwatch|Talk]]
+</td><td>
+w
+</td><td>
+{{int:Accesskey-unwatch}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-upload&action=edit accesskey-upload]<br>
+[[MediaWiki_talk:Accesskey-upload|Talk]]
+</td><td>
+u
+</td><td>
+{{int:Accesskey-upload}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-userpage&action=edit accesskey-userpage]<br>
+[[MediaWiki_talk:Accesskey-userpage|Talk]]
+</td><td>
+.
+</td><td>
+{{int:Accesskey-userpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-viewsource&action=edit accesskey-viewsource]<br>
+[[MediaWiki_talk:Accesskey-viewsource|Talk]]
+</td><td>
+e
+</td><td>
+{{int:Accesskey-viewsource}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-watch&action=edit accesskey-watch]<br>
+[[MediaWiki_talk:Accesskey-watch|Talk]]
+</td><td>
+w
+</td><td>
+{{int:Accesskey-watch}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-watchlist&action=edit accesskey-watchlist]<br>
+[[MediaWiki_talk:Accesskey-watchlist|Talk]]
+</td><td>
+l
+</td><td>
+{{int:Accesskey-watchlist}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accesskey-whatlinkshere&action=edit accesskey-whatlinkshere]<br>
+[[MediaWiki_talk:Accesskey-whatlinkshere|Talk]]
+</td><td>
+b
+</td><td>
+{{int:Accesskey-whatlinkshere}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accmailtext&action=edit accmailtext]<br>
+[[MediaWiki_talk:Accmailtext|Talk]]
+</td><td>
+The Password for &#39;$1&#39; has been sent to $2.
+</td><td>
+{{int:Accmailtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Accmailtitle&action=edit accmailtitle]<br>
+[[MediaWiki_talk:Accmailtitle|Talk]]
+</td><td>
+Password sent.
+</td><td>
+{{int:Accmailtitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Actioncomplete&action=edit actioncomplete]<br>
+[[MediaWiki_talk:Actioncomplete|Talk]]
+</td><td>
+Action complete
+</td><td>
+{{int:Actioncomplete}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Addedwatch&action=edit addedwatch]<br>
+[[MediaWiki_talk:Addedwatch|Talk]]
+</td><td>
+Added to watchlist
+</td><td>
+{{int:Addedwatch}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Addedwatchtext&action=edit addedwatchtext]<br>
+[[MediaWiki_talk:Addedwatchtext|Talk]]
+</td><td>
+The page &quot;$1&quot; has been added to your &#91;&#91;Special:Watchlist&#124;watchlist]].
+Future changes to this page and its associated Talk page will be listed there,
+and the page will appear &#39;&#39;&#39;bolded&#39;&#39;&#39; in the &#91;&#91;Special:Recentchanges&#124;list of recent changes]] to
+make it easier to pick out.
+
+&lt;p&gt;If you want to remove the page from your watchlist later, click &quot;Stop watching&quot; in the sidebar.
+</td><td>
+{{int:Addedwatchtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Addsection&action=edit addsection]<br>
+[[MediaWiki_talk:Addsection|Talk]]
+</td><td>
++
+</td><td>
+{{int:Addsection}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Administrators&action=edit administrators]<br>
+[[MediaWiki_talk:Administrators|Talk]]
+</td><td>
+Wiktionary:Administrators
+</td><td>
+{{int:Administrators}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Affirmation&action=edit affirmation]<br>
+[[MediaWiki_talk:Affirmation|Talk]]
+</td><td>
+I affirm that the copyright holder of this file
+agrees to license it under the terms of the $1.
+</td><td>
+{{int:Affirmation}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:All&action=edit all]<br>
+[[MediaWiki_talk:All|Talk]]
+</td><td>
+all
+</td><td>
+{{int:All}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Allmessages&action=edit allmessages]<br>
+[[MediaWiki_talk:Allmessages|Talk]]
+</td><td>
+All system messages
+</td><td>
+{{int:Allmessages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Allmessagestext&action=edit allmessagestext]<br>
+[[MediaWiki_talk:Allmessagestext|Talk]]
+</td><td>
+This is a list of all system messages available in the MediaWiki: namespace.
+</td><td>
+{{int:Allmessagestext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Allpages&action=edit allpages]<br>
+[[MediaWiki_talk:Allpages|Talk]]
+</td><td>
+All pages
+</td><td>
+{{int:Allpages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Alphaindexline&action=edit alphaindexline]<br>
+[[MediaWiki_talk:Alphaindexline|Talk]]
+</td><td>
+$1 to $2
+</td><td>
+{{int:Alphaindexline}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Alreadyloggedin&action=edit alreadyloggedin]<br>
+[[MediaWiki_talk:Alreadyloggedin|Talk]]
+</td><td>
+&lt;font color=red&gt;&lt;b&gt;User $1, you are already logged in!&lt;/b&gt;&lt;/font&gt;&lt;br /&gt;
+
+</td><td>
+{{int:Alreadyloggedin}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Alreadyrolled&action=edit alreadyrolled]<br>
+[[MediaWiki_talk:Alreadyrolled|Talk]]
+</td><td>
+Cannot rollback last edit of &#91;&#91;$1]]
+by &#91;&#91;User:$2&#124;$2]] (&#91;&#91;User talk:$2&#124;Talk]]); someone else has edited or rolled back the page already.
+
+Last edit was by &#91;&#91;User:$3&#124;$3]] (&#91;&#91;User talk:$3&#124;Talk]]).
+</td><td>
+{{int:Alreadyrolled}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ancientpages&action=edit ancientpages]<br>
+[[MediaWiki_talk:Ancientpages|Talk]]
+</td><td>
+Oldest pages
+</td><td>
+{{int:Ancientpages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:And&action=edit and]<br>
+[[MediaWiki_talk:And|Talk]]
+</td><td>
+and
+</td><td>
+{{int:And}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Anontalk&action=edit anontalk]<br>
+[[MediaWiki_talk:Anontalk|Talk]]
+</td><td>
+Talk for this IP
+</td><td>
+{{int:Anontalk}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Anontalkpagetext&action=edit anontalkpagetext]<br>
+[[MediaWiki_talk:Anontalkpagetext|Talk]]
+</td><td>
+----&#39;&#39;This is the discussion page for an anonymous user who has not created an account yet or who does not use it. We therefore have to use the numerical &#91;&#91;IP address]] to identify him/her. Such an IP address can be shared by several users. If you are an anonymous user and feel that irrelevant comments have been directed at you, please &#91;&#91;Special:Userlogin&#124;create an account or log in]] to avoid future confusion with other anonymous users.&#39;&#39;
+</td><td>
+{{int:Anontalkpagetext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Anonymous&action=edit anonymous]<br>
+[[MediaWiki_talk:Anonymous|Talk]]
+</td><td>
+Anonymous user(s) of Wiktionary
+</td><td>
+{{int:Anonymous}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Article&action=edit article]<br>
+[[MediaWiki_talk:Article|Talk]]
+</td><td>
+Content page
+</td><td>
+{{int:Article}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Articleexists&action=edit articleexists]<br>
+[[MediaWiki_talk:Articleexists|Talk]]
+</td><td>
+A page of that name already exists, or the
+name you have chosen is not valid.
+Please choose another name.
+</td><td>
+{{int:Articleexists}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Articlepage&action=edit articlepage]<br>
+[[MediaWiki_talk:Articlepage|Talk]]
+</td><td>
+View content page
+</td><td>
+{{int:Articlepage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Asksql&action=edit asksql]<br>
+[[MediaWiki_talk:Asksql|Talk]]
+</td><td>
+SQL query
+</td><td>
+{{int:Asksql}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Asksqltext&action=edit asksqltext]<br>
+[[MediaWiki_talk:Asksqltext|Talk]]
+</td><td>
+Use the form below to make a direct query of the
+database.
+Use single quotes (&#39;like this&#39;) to delimit string literals.
+This can often add considerable load to the server, so please use
+this function sparingly.
+</td><td>
+{{int:Asksqltext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Autoblocker&action=edit autoblocker]<br>
+[[MediaWiki_talk:Autoblocker|Talk]]
+</td><td>
+Autoblocked because you share an IP address with &quot;$1&quot;. Reason &quot;$2&quot;.
+</td><td>
+{{int:Autoblocker}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badarticleerror&action=edit badarticleerror]<br>
+[[MediaWiki_talk:Badarticleerror|Talk]]
+</td><td>
+This action cannot be performed on this page.
+</td><td>
+{{int:Badarticleerror}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badfilename&action=edit badfilename]<br>
+[[MediaWiki_talk:Badfilename|Talk]]
+</td><td>
+Image name has been changed to &quot;$1&quot;.
+</td><td>
+{{int:Badfilename}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badfiletype&action=edit badfiletype]<br>
+[[MediaWiki_talk:Badfiletype|Talk]]
+</td><td>
+&quot;.$1&quot; is not a recommended image file format.
+</td><td>
+{{int:Badfiletype}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badipaddress&action=edit badipaddress]<br>
+[[MediaWiki_talk:Badipaddress|Talk]]
+</td><td>
+Invalid IP address
+</td><td>
+{{int:Badipaddress}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badquery&action=edit badquery]<br>
+[[MediaWiki_talk:Badquery|Talk]]
+</td><td>
+Badly formed search query
+</td><td>
+{{int:Badquery}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badquerytext&action=edit badquerytext]<br>
+[[MediaWiki_talk:Badquerytext|Talk]]
+</td><td>
+We could not process your query.
+This is probably because you have attempted to search for a
+word fewer than three letters long, which is not yet supported.
+It could also be that you have mistyped the expression, for
+example &quot;fish and and scales&quot;.
+Please try another query.
+</td><td>
+{{int:Badquerytext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badretype&action=edit badretype]<br>
+[[MediaWiki_talk:Badretype|Talk]]
+</td><td>
+The passwords you entered do not match.
+</td><td>
+{{int:Badretype}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badtitle&action=edit badtitle]<br>
+[[MediaWiki_talk:Badtitle|Talk]]
+</td><td>
+Bad title
+</td><td>
+{{int:Badtitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Badtitletext&action=edit badtitletext]<br>
+[[MediaWiki_talk:Badtitletext|Talk]]
+</td><td>
+The requested page title was invalid, empty, or
+an incorrectly linked inter-language or inter-wiki title.
+</td><td>
+{{int:Badtitletext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blanknamespace&action=edit blanknamespace]<br>
+[[MediaWiki_talk:Blanknamespace|Talk]]
+</td><td>
+(Main)
+</td><td>
+{{int:Blanknamespace}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockedtext&action=edit blockedtext]<br>
+[[MediaWiki_talk:Blockedtext|Talk]]
+</td><td>
+Your user name or IP address has been blocked by $1.
+The reason given is this:&lt;br /&gt;&#39;&#39;$2&#39;&#39;&lt;p&gt;You may contact $1 or one of the other
+&#91;&#91;Wiktionary:Administrators&#124;administrators]] to discuss the block.
+
+Note that you may not use the &quot;email this user&quot; feature unless you have a valid email address registered in your &#91;&#91;Special:Preferences&#124;user preferences]].
+
+Your IP address is $3. Please include this address in any queries you make.
+
+</td><td>
+{{int:Blockedtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockedtitle&action=edit blockedtitle]<br>
+[[MediaWiki_talk:Blockedtitle|Talk]]
+</td><td>
+User is blocked
+</td><td>
+{{int:Blockedtitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockip&action=edit blockip]<br>
+[[MediaWiki_talk:Blockip|Talk]]
+</td><td>
+Block user
+</td><td>
+{{int:Blockip}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockipsuccesssub&action=edit blockipsuccesssub]<br>
+[[MediaWiki_talk:Blockipsuccesssub|Talk]]
+</td><td>
+Block succeeded
+</td><td>
+{{int:Blockipsuccesssub}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockipsuccesstext&action=edit blockipsuccesstext]<br>
+[[MediaWiki_talk:Blockipsuccesstext|Talk]]
+</td><td>
+&quot;$1&quot; has been blocked.
+&lt;br /&gt;See &#91;&#91;Special:Ipblocklist&#124;IP block list]] to review blocks.
+</td><td>
+{{int:Blockipsuccesstext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blockiptext&action=edit blockiptext]<br>
+[[MediaWiki_talk:Blockiptext|Talk]]
+</td><td>
+Use the form below to block write access
+from a specific IP address or username.
+This should be done only only to prevent vandalism, and in
+accordance with &#91;&#91;Wiktionary:Policy&#124;policy]].
+Fill in a specific reason below (for example, citing particular
+pages that were vandalized).
+</td><td>
+{{int:Blockiptext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklink&action=edit blocklink]<br>
+[[MediaWiki_talk:Blocklink|Talk]]
+</td><td>
+block
+</td><td>
+{{int:Blocklink}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklistline&action=edit blocklistline]<br>
+[[MediaWiki_talk:Blocklistline|Talk]]
+</td><td>
+$1, $2 blocked $3 (expires $4)
+</td><td>
+{{int:Blocklistline}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklogentry&action=edit blocklogentry]<br>
+[[MediaWiki_talk:Blocklogentry|Talk]]
+</td><td>
+blocked &quot;$1&quot; with an expiry time of $2
+</td><td>
+{{int:Blocklogentry}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklogpage&action=edit blocklogpage]<br>
+[[MediaWiki_talk:Blocklogpage|Talk]]
+</td><td>
+Block_log
+</td><td>
+{{int:Blocklogpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Blocklogtext&action=edit blocklogtext]<br>
+[[MediaWiki_talk:Blocklogtext|Talk]]
+</td><td>
+This is a log of user blocking and unblocking actions. Automatically
+blocked IP addresses are not be listed. See the &#91;&#91;Special:Ipblocklist&#124;IP block list]] for
+the list of currently operational bans and blocks.
+</td><td>
+{{int:Blocklogtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bold_sample&action=edit bold_sample]<br>
+[[MediaWiki_talk:Bold_sample|Talk]]
+</td><td>
+Bold text
+</td><td>
+{{int:Bold_sample}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bold_tip&action=edit bold_tip]<br>
+[[MediaWiki_talk:Bold_tip|Talk]]
+</td><td>
+Bold text
+</td><td>
+{{int:Bold_tip}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Booksources&action=edit booksources]<br>
+[[MediaWiki_talk:Booksources|Talk]]
+</td><td>
+Book sources
+</td><td>
+{{int:Booksources}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Booksourcetext&action=edit booksourcetext]<br>
+[[MediaWiki_talk:Booksourcetext|Talk]]
+</td><td>
+Below is a list of links to other sites that
+sell new and used books, and may also have further information
+about books you are looking for.Wiktionary is not affiliated with any of these businesses, and
+this list should not be construed as an endorsement.
+</td><td>
+{{int:Booksourcetext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Brokenredirects&action=edit brokenredirects]<br>
+[[MediaWiki_talk:Brokenredirects|Talk]]
+</td><td>
+Broken Redirects
+</td><td>
+{{int:Brokenredirects}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Brokenredirectstext&action=edit brokenredirectstext]<br>
+[[MediaWiki_talk:Brokenredirectstext|Talk]]
+</td><td>
+The following redirects link to a non-existing pages.
+</td><td>
+{{int:Brokenredirectstext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bugreports&action=edit bugreports]<br>
+[[MediaWiki_talk:Bugreports|Talk]]
+</td><td>
+Bug reports
+</td><td>
+{{int:Bugreports}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bugreportspage&action=edit bugreportspage]<br>
+[[MediaWiki_talk:Bugreportspage|Talk]]
+</td><td>
+Wiktionary:Bug_reports
+</td><td>
+{{int:Bugreportspage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucratlog&action=edit bureaucratlog]<br>
+[[MediaWiki_talk:Bureaucratlog|Talk]]
+</td><td>
+Bureaucrat_log
+</td><td>
+{{int:Bureaucratlog}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucratlogentry&action=edit bureaucratlogentry]<br>
+[[MediaWiki_talk:Bureaucratlogentry|Talk]]
+</td><td>
+Rights for user &quot;$1&quot; set &quot;$2&quot;
+</td><td>
+{{int:Bureaucratlogentry}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucrattext&action=edit bureaucrattext]<br>
+[[MediaWiki_talk:Bureaucrattext|Talk]]
+</td><td>
+The action you have requested can only be
+performed by sysops with &quot;bureaucrat&quot; status.
+</td><td>
+{{int:Bureaucrattext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bureaucrattitle&action=edit bureaucrattitle]<br>
+[[MediaWiki_talk:Bureaucrattitle|Talk]]
+</td><td>
+Bureaucrat access required
+</td><td>
+{{int:Bureaucrattitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bydate&action=edit bydate]<br>
+[[MediaWiki_talk:Bydate|Talk]]
+</td><td>
+by date
+</td><td>
+{{int:Bydate}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Byname&action=edit byname]<br>
+[[MediaWiki_talk:Byname|Talk]]
+</td><td>
+by name
+</td><td>
+{{int:Byname}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Bysize&action=edit bysize]<br>
+[[MediaWiki_talk:Bysize|Talk]]
+</td><td>
+by size
+</td><td>
+{{int:Bysize}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cachederror&action=edit cachederror]<br>
+[[MediaWiki_talk:Cachederror|Talk]]
+</td><td>
+The following is a cached copy of the requested page, and may not be up to date.
+</td><td>
+{{int:Cachederror}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cancel&action=edit cancel]<br>
+[[MediaWiki_talk:Cancel|Talk]]
+</td><td>
+Cancel
+</td><td>
+{{int:Cancel}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cannotdelete&action=edit cannotdelete]<br>
+[[MediaWiki_talk:Cannotdelete|Talk]]
+</td><td>
+Could not delete the page or image specified. (It may have already been deleted by someone else.)
+</td><td>
+{{int:Cannotdelete}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cantrollback&action=edit cantrollback]<br>
+[[MediaWiki_talk:Cantrollback|Talk]]
+</td><td>
+Cannot revert edit; last contributor is only author of this page.
+</td><td>
+{{int:Cantrollback}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Categories&action=edit categories]<br>
+[[MediaWiki_talk:Categories|Talk]]
+</td><td>
+Categories
+</td><td>
+{{int:Categories}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Category&action=edit category]<br>
+[[MediaWiki_talk:Category|Talk]]
+</td><td>
+category
+</td><td>
+{{int:Category}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Category_header&action=edit category_header]<br>
+[[MediaWiki_talk:Category_header|Talk]]
+</td><td>
+Articles in category &quot;$1&quot;
+</td><td>
+{{int:Category_header}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Changepassword&action=edit changepassword]<br>
+[[MediaWiki_talk:Changepassword|Talk]]
+</td><td>
+Change password
+</td><td>
+{{int:Changepassword}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Changes&action=edit changes]<br>
+[[MediaWiki_talk:Changes|Talk]]
+</td><td>
+changes
+</td><td>
+{{int:Changes}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Columns&action=edit columns]<br>
+[[MediaWiki_talk:Columns|Talk]]
+</td><td>
+Columns
+</td><td>
+{{int:Columns}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Commentedit&action=edit commentedit]<br>
+[[MediaWiki_talk:Commentedit|Talk]]
+</td><td>
+ (comment)
+</td><td>
+{{int:Commentedit}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Compareselectedversions&action=edit compareselectedversions]<br>
+[[MediaWiki_talk:Compareselectedversions|Talk]]
+</td><td>
+Compare selected versions
+</td><td>
+{{int:Compareselectedversions}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirm&action=edit confirm]<br>
+[[MediaWiki_talk:Confirm|Talk]]
+</td><td>
+Confirm
+</td><td>
+{{int:Confirm}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmcheck&action=edit confirmcheck]<br>
+[[MediaWiki_talk:Confirmcheck|Talk]]
+</td><td>
+Yes, I really want to delete this.
+</td><td>
+{{int:Confirmcheck}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmdelete&action=edit confirmdelete]<br>
+[[MediaWiki_talk:Confirmdelete|Talk]]
+</td><td>
+Confirm delete
+</td><td>
+{{int:Confirmdelete}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmdeletetext&action=edit confirmdeletetext]<br>
+[[MediaWiki_talk:Confirmdeletetext|Talk]]
+</td><td>
+You are about to permanently delete a page
+or image along with all of its history from the database.
+Please confirm that you intend to do this, that you understand the
+consequences, and that you are doing this in accordance with
+&#91;&#91;Wiktionary:Policy]].
+</td><td>
+{{int:Confirmdeletetext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmprotect&action=edit confirmprotect]<br>
+[[MediaWiki_talk:Confirmprotect|Talk]]
+</td><td>
+Confirm protection
+</td><td>
+{{int:Confirmprotect}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmprotecttext&action=edit confirmprotecttext]<br>
+[[MediaWiki_talk:Confirmprotecttext|Talk]]
+</td><td>
+Do you really want to protect this page?
+</td><td>
+{{int:Confirmprotecttext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmunprotect&action=edit confirmunprotect]<br>
+[[MediaWiki_talk:Confirmunprotect|Talk]]
+</td><td>
+Confirm unprotection
+</td><td>
+{{int:Confirmunprotect}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Confirmunprotecttext&action=edit confirmunprotecttext]<br>
+[[MediaWiki_talk:Confirmunprotecttext|Talk]]
+</td><td>
+Do you really want to unprotect this page?
+</td><td>
+{{int:Confirmunprotecttext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contextchars&action=edit contextchars]<br>
+[[MediaWiki_talk:Contextchars|Talk]]
+</td><td>
+Characters of context per line
+</td><td>
+{{int:Contextchars}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contextlines&action=edit contextlines]<br>
+[[MediaWiki_talk:Contextlines|Talk]]
+</td><td>
+Lines to show per hit
+</td><td>
+{{int:Contextlines}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contribslink&action=edit contribslink]<br>
+[[MediaWiki_talk:Contribslink|Talk]]
+</td><td>
+contribs
+</td><td>
+{{int:Contribslink}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contribsub&action=edit contribsub]<br>
+[[MediaWiki_talk:Contribsub|Talk]]
+</td><td>
+For $1
+</td><td>
+{{int:Contribsub}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Contributions&action=edit contributions]<br>
+[[MediaWiki_talk:Contributions|Talk]]
+</td><td>
+User contributions
+</td><td>
+{{int:Contributions}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyright&action=edit copyright]<br>
+[[MediaWiki_talk:Copyright|Talk]]
+</td><td>
+Content is available under $1.
+</td><td>
+{{int:Copyright}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyrightpage&action=edit copyrightpage]<br>
+[[MediaWiki_talk:Copyrightpage|Talk]]
+</td><td>
+Wiktionary:Copyrights
+</td><td>
+{{int:Copyrightpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyrightpagename&action=edit copyrightpagename]<br>
+[[MediaWiki_talk:Copyrightpagename|Talk]]
+</td><td>
+Wiktionary copyright
+</td><td>
+{{int:Copyrightpagename}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Copyrightwarning&action=edit copyrightwarning]<br>
+[[MediaWiki_talk:Copyrightwarning|Talk]]
+</td><td>
+Please note that all contributions to Wiktionary are
+considered to be released under the GNU Free Documentation License
+(see $1 for details).
+If you don&#39;t want your writing to be edited mercilessly and redistributed
+at will, then don&#39;t submit it here.&lt;br /&gt;
+You are also promising us that you wrote this yourself, or copied it from a
+public domain or similar free resource.
+&lt;strong&gt;DO NOT SUBMIT COPYRIGHTED WORK WITHOUT PERMISSION!&lt;/strong&gt;
+</td><td>
+{{int:Copyrightwarning}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Couldntremove&action=edit couldntremove]<br>
+[[MediaWiki_talk:Couldntremove|Talk]]
+</td><td>
+Couldn&#39;t remove item &#39;$1&#39;...
+</td><td>
+{{int:Couldntremove}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Createaccount&action=edit createaccount]<br>
+[[MediaWiki_talk:Createaccount|Talk]]
+</td><td>
+Create new account
+</td><td>
+{{int:Createaccount}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Createaccountmail&action=edit createaccountmail]<br>
+[[MediaWiki_talk:Createaccountmail|Talk]]
+</td><td>
+by email
+</td><td>
+{{int:Createaccountmail}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Cur&action=edit cur]<br>
+[[MediaWiki_talk:Cur|Talk]]
+</td><td>
+cur
+</td><td>
+{{int:Cur}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Currentevents&action=edit currentevents]<br>
+[[MediaWiki_talk:Currentevents|Talk]]
+</td><td>
+Current events
+</td><td>
+{{int:Currentevents}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Currentrev&action=edit currentrev]<br>
+[[MediaWiki_talk:Currentrev|Talk]]
+</td><td>
+Current revision
+</td><td>
+{{int:Currentrev}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Databaseerror&action=edit databaseerror]<br>
+[[MediaWiki_talk:Databaseerror|Talk]]
+</td><td>
+Database error
+</td><td>
+{{int:Databaseerror}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dateformat&action=edit dateformat]<br>
+[[MediaWiki_talk:Dateformat|Talk]]
+</td><td>
+Date format
+</td><td>
+{{int:Dateformat}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dberrortext&action=edit dberrortext]<br>
+[[MediaWiki_talk:Dberrortext|Talk]]
+</td><td>
+A database query syntax error has occurred.
+This could be because of an illegal search query (see $5),
+or it may indicate a bug in the software.
+The last attempted database query was:
+&lt;blockquote&gt;&lt;tt&gt;$1&lt;/tt&gt;&lt;/blockquote&gt;
+from within function &quot;&lt;tt&gt;$2&lt;/tt&gt;&quot;.
+MySQL returned error &quot;&lt;tt&gt;$3: $4&lt;/tt&gt;&quot;.
+</td><td>
+{{int:Dberrortext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dberrortextcl&action=edit dberrortextcl]<br>
+[[MediaWiki_talk:Dberrortextcl|Talk]]
+</td><td>
+A database query syntax error has occurred.
+The last attempted database query was:
+&quot;$1&quot;
+from within function &quot;$2&quot;.
+MySQL returned error &quot;$3: $4&quot;.
+
+</td><td>
+{{int:Dberrortextcl}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deadendpages&action=edit deadendpages]<br>
+[[MediaWiki_talk:Deadendpages|Talk]]
+</td><td>
+Dead-end pages
+</td><td>
+{{int:Deadendpages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Debug&action=edit debug]<br>
+[[MediaWiki_talk:Debug|Talk]]
+</td><td>
+Debug
+</td><td>
+{{int:Debug}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Defaultns&action=edit defaultns]<br>
+[[MediaWiki_talk:Defaultns|Talk]]
+</td><td>
+Search in these namespaces by default:
+</td><td>
+{{int:Defaultns}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Defemailsubject&action=edit defemailsubject]<br>
+[[MediaWiki_talk:Defemailsubject|Talk]]
+</td><td>
+Wiktionary e-mail
+</td><td>
+{{int:Defemailsubject}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Delete&action=edit delete]<br>
+[[MediaWiki_talk:Delete|Talk]]
+</td><td>
+Delete
+</td><td>
+{{int:Delete}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletecomment&action=edit deletecomment]<br>
+[[MediaWiki_talk:Deletecomment|Talk]]
+</td><td>
+Reason for deletion
+</td><td>
+{{int:Deletecomment}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletedarticle&action=edit deletedarticle]<br>
+[[MediaWiki_talk:Deletedarticle|Talk]]
+</td><td>
+deleted &quot;$1&quot;
+</td><td>
+{{int:Deletedarticle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletedtext&action=edit deletedtext]<br>
+[[MediaWiki_talk:Deletedtext|Talk]]
+</td><td>
+&quot;$1&quot; has been deleted.
+See $2 for a record of recent deletions.
+</td><td>
+{{int:Deletedtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deleteimg&action=edit deleteimg]<br>
+[[MediaWiki_talk:Deleteimg|Talk]]
+</td><td>
+del
+</td><td>
+{{int:Deleteimg}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletepage&action=edit deletepage]<br>
+[[MediaWiki_talk:Deletepage|Talk]]
+</td><td>
+Delete page
+</td><td>
+{{int:Deletepage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletesub&action=edit deletesub]<br>
+[[MediaWiki_talk:Deletesub|Talk]]
+</td><td>
+(Deleting &quot;$1&quot;)
+</td><td>
+{{int:Deletesub}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletethispage&action=edit deletethispage]<br>
+[[MediaWiki_talk:Deletethispage|Talk]]
+</td><td>
+Delete this page
+</td><td>
+{{int:Deletethispage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Deletionlog&action=edit deletionlog]<br>
+[[MediaWiki_talk:Deletionlog|Talk]]
+</td><td>
+deletion log
+</td><td>
+{{int:Deletionlog}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dellogpage&action=edit dellogpage]<br>
+[[MediaWiki_talk:Dellogpage|Talk]]
+</td><td>
+Deletion_log
+</td><td>
+{{int:Dellogpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Dellogpagetext&action=edit dellogpagetext]<br>
+[[MediaWiki_talk:Dellogpagetext|Talk]]
+</td><td>
+Below is a list of the most recent deletions.
+All times shown are server time (UTC).
+&lt;ul&gt;
+&lt;/ul&gt;
+
+</td><td>
+{{int:Dellogpagetext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Developerspheading&action=edit developerspheading]<br>
+[[MediaWiki_talk:Developerspheading|Talk]]
+</td><td>
+For developer use only
+</td><td>
+{{int:Developerspheading}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Developertext&action=edit developertext]<br>
+[[MediaWiki_talk:Developertext|Talk]]
+</td><td>
+The action you have requested can only be
+performed by users with &quot;developer&quot; status.
+See $1.
+</td><td>
+{{int:Developertext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Developertitle&action=edit developertitle]<br>
+[[MediaWiki_talk:Developertitle|Talk]]
+</td><td>
+Developer access required
+</td><td>
+{{int:Developertitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Diff&action=edit diff]<br>
+[[MediaWiki_talk:Diff|Talk]]
+</td><td>
+diff
+</td><td>
+{{int:Diff}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Difference&action=edit difference]<br>
+[[MediaWiki_talk:Difference|Talk]]
+</td><td>
+(Difference between revisions)
+</td><td>
+{{int:Difference}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disambiguations&action=edit disambiguations]<br>
+[[MediaWiki_talk:Disambiguations|Talk]]
+</td><td>
+Disambiguation pages
+</td><td>
+{{int:Disambiguations}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disambiguationspage&action=edit disambiguationspage]<br>
+[[MediaWiki_talk:Disambiguationspage|Talk]]
+</td><td>
+Wiktionary:Links_to_disambiguating_pages
+</td><td>
+{{int:Disambiguationspage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disambiguationstext&action=edit disambiguationstext]<br>
+[[MediaWiki_talk:Disambiguationstext|Talk]]
+</td><td>
+The following pages link to a &lt;i&gt;disambiguation page&lt;/i&gt;. They should link to the appropriate topic instead.&lt;br /&gt;A page is treated as dismbiguation if it is linked from $1.&lt;br /&gt;Links from other namespaces are &lt;i&gt;not&lt;/i&gt; listed here.
+</td><td>
+{{int:Disambiguationstext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disclaimerpage&action=edit disclaimerpage]<br>
+[[MediaWiki_talk:Disclaimerpage|Talk]]
+</td><td>
+Wiktionary:General_disclaimer
+</td><td>
+{{int:Disclaimerpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Disclaimers&action=edit disclaimers]<br>
+[[MediaWiki_talk:Disclaimers|Talk]]
+</td><td>
+Disclaimers
+</td><td>
+{{int:Disclaimers}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Doubleredirects&action=edit doubleredirects]<br>
+[[MediaWiki_talk:Doubleredirects|Talk]]
+</td><td>
+Double Redirects
+</td><td>
+{{int:Doubleredirects}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Doubleredirectstext&action=edit doubleredirectstext]<br>
+[[MediaWiki_talk:Doubleredirectstext|Talk]]
+</td><td>
+&lt;b&gt;Attention:&lt;/b&gt; This list may contain false positives. That usually means there is additional text with links below the first #REDIRECT.&lt;br /&gt;
+Each row contains links to the first and second redirect, as well as the first line of the second redirect text, usually giving the &quot;real&quot; target page, which the first redirect should point to.
+</td><td>
+{{int:Doubleredirectstext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Edit&action=edit edit]<br>
+[[MediaWiki_talk:Edit|Talk]]
+</td><td>
+Edit
+</td><td>
+{{int:Edit}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editcomment&action=edit editcomment]<br>
+[[MediaWiki_talk:Editcomment|Talk]]
+</td><td>
+The edit comment was: &quot;&lt;i&gt;$1&lt;/i&gt;&quot;.
+</td><td>
+{{int:Editcomment}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editconflict&action=edit editconflict]<br>
+[[MediaWiki_talk:Editconflict|Talk]]
+</td><td>
+Edit conflict: $1
+</td><td>
+{{int:Editconflict}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editcurrent&action=edit editcurrent]<br>
+[[MediaWiki_talk:Editcurrent|Talk]]
+</td><td>
+Edit the current version of this page
+</td><td>
+{{int:Editcurrent}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Edithelp&action=edit edithelp]<br>
+[[MediaWiki_talk:Edithelp|Talk]]
+</td><td>
+Editing help
+</td><td>
+{{int:Edithelp}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Edithelppage&action=edit edithelppage]<br>
+[[MediaWiki_talk:Edithelppage|Talk]]
+</td><td>
+Help:Editing
+</td><td>
+{{int:Edithelppage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editing&action=edit editing]<br>
+[[MediaWiki_talk:Editing|Talk]]
+</td><td>
+Editing $1
+</td><td>
+{{int:Editing}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editingold&action=edit editingold]<br>
+[[MediaWiki_talk:Editingold|Talk]]
+</td><td>
+&lt;strong&gt;WARNING: You are editing an out-of-date
+revision of this page.
+If you save it, any changes made since this revision will be lost.&lt;/strong&gt;
+
+</td><td>
+{{int:Editingold}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editsection&action=edit editsection]<br>
+[[MediaWiki_talk:Editsection|Talk]]
+</td><td>
+edit
+</td><td>
+{{int:Editsection}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Editthispage&action=edit editthispage]<br>
+[[MediaWiki_talk:Editthispage|Talk]]
+</td><td>
+Edit this page
+</td><td>
+{{int:Editthispage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailflag&action=edit emailflag]<br>
+[[MediaWiki_talk:Emailflag|Talk]]
+</td><td>
+Disable e-mail from other users
+</td><td>
+{{int:Emailflag}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailforlost&action=edit emailforlost]<br>
+[[MediaWiki_talk:Emailforlost|Talk]]
+</td><td>
+Fields marked with a star (*) are optional. Storing an email address enables people to contact you through the website without you having to reveal your
+email address to them, and it can be used to send you a new password if you forget it.&lt;br /&gt;&lt;br /&gt;Your real name, if you choose to provide it, will be used for giving you attribution for your work.
+</td><td>
+{{int:Emailforlost}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailfrom&action=edit emailfrom]<br>
+[[MediaWiki_talk:Emailfrom|Talk]]
+</td><td>
+From
+</td><td>
+{{int:Emailfrom}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailmessage&action=edit emailmessage]<br>
+[[MediaWiki_talk:Emailmessage|Talk]]
+</td><td>
+Message
+</td><td>
+{{int:Emailmessage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailpage&action=edit emailpage]<br>
+[[MediaWiki_talk:Emailpage|Talk]]
+</td><td>
+E-mail user
+</td><td>
+{{int:Emailpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailpagetext&action=edit emailpagetext]<br>
+[[MediaWiki_talk:Emailpagetext|Talk]]
+</td><td>
+If this user has entered a valid e-mail address in
+his or her user preferences, the form below will send a single message.
+The e-mail address you entered in your user preferences will appear
+as the &quot;From&quot; address of the mail, so the recipient will be able
+to reply.
+</td><td>
+{{int:Emailpagetext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsend&action=edit emailsend]<br>
+[[MediaWiki_talk:Emailsend|Talk]]
+</td><td>
+Send
+</td><td>
+{{int:Emailsend}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsent&action=edit emailsent]<br>
+[[MediaWiki_talk:Emailsent|Talk]]
+</td><td>
+E-mail sent
+</td><td>
+{{int:Emailsent}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsenttext&action=edit emailsenttext]<br>
+[[MediaWiki_talk:Emailsenttext|Talk]]
+</td><td>
+Your e-mail message has been sent.
+</td><td>
+{{int:Emailsenttext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailsubject&action=edit emailsubject]<br>
+[[MediaWiki_talk:Emailsubject|Talk]]
+</td><td>
+Subject
+</td><td>
+{{int:Emailsubject}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailto&action=edit emailto]<br>
+[[MediaWiki_talk:Emailto|Talk]]
+</td><td>
+To
+</td><td>
+{{int:Emailto}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Emailuser&action=edit emailuser]<br>
+[[MediaWiki_talk:Emailuser|Talk]]
+</td><td>
+E-mail this user
+</td><td>
+{{int:Emailuser}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Enterlockreason&action=edit enterlockreason]<br>
+[[MediaWiki_talk:Enterlockreason|Talk]]
+</td><td>
+Enter a reason for the lock, including an estimate
+of when the lock will be released
+</td><td>
+{{int:Enterlockreason}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Error&action=edit error]<br>
+[[MediaWiki_talk:Error|Talk]]
+</td><td>
+Error
+</td><td>
+{{int:Error}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Errorpagetitle&action=edit errorpagetitle]<br>
+[[MediaWiki_talk:Errorpagetitle|Talk]]
+</td><td>
+Error
+</td><td>
+{{int:Errorpagetitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exbeforeblank&action=edit exbeforeblank]<br>
+[[MediaWiki_talk:Exbeforeblank|Talk]]
+</td><td>
+content before blanking was:
+</td><td>
+{{int:Exbeforeblank}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exblank&action=edit exblank]<br>
+[[MediaWiki_talk:Exblank|Talk]]
+</td><td>
+page was empty
+</td><td>
+{{int:Exblank}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Excontent&action=edit excontent]<br>
+[[MediaWiki_talk:Excontent|Talk]]
+</td><td>
+content was:
+</td><td>
+{{int:Excontent}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Explainconflict&action=edit explainconflict]<br>
+[[MediaWiki_talk:Explainconflict|Talk]]
+</td><td>
+Someone else has changed this page since you
+started editing it.
+The upper text area contains the page text as it currently exists.
+Your changes are shown in the lower text area.
+You will have to merge your changes into the existing text.
+&lt;b&gt;Only&lt;/b&gt; the text in the upper text area will be saved when you
+press &quot;Save page&quot;.
+&lt;p&gt;
+</td><td>
+{{int:Explainconflict}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Export&action=edit export]<br>
+[[MediaWiki_talk:Export|Talk]]
+</td><td>
+Export pages
+</td><td>
+{{int:Export}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exportcuronly&action=edit exportcuronly]<br>
+[[MediaWiki_talk:Exportcuronly|Talk]]
+</td><td>
+Include only the current revision, not the full history
+</td><td>
+{{int:Exportcuronly}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Exporttext&action=edit exporttext]<br>
+[[MediaWiki_talk:Exporttext|Talk]]
+</td><td>
+You can export the text and editing history of a particular
+page or set of pages wrapped in some XML; this can then be imported into another
+wiki running MediaWiki software, transformed, or just kept for your private
+amusement.
+</td><td>
+{{int:Exporttext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Extlink_sample&action=edit extlink_sample]<br>
+[[MediaWiki_talk:Extlink_sample|Talk]]
+</td><td>
+http&#58;//www.example.com link title
+</td><td>
+{{int:Extlink_sample}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Extlink_tip&action=edit extlink_tip]<br>
+[[MediaWiki_talk:Extlink_tip|Talk]]
+</td><td>
+External link (remember http&#58;// prefix)
+</td><td>
+{{int:Extlink_tip}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Faq&action=edit faq]<br>
+[[MediaWiki_talk:Faq|Talk]]
+</td><td>
+FAQ
+</td><td>
+{{int:Faq}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Faqpage&action=edit faqpage]<br>
+[[MediaWiki_talk:Faqpage|Talk]]
+</td><td>
+Wiktionary:FAQ
+</td><td>
+{{int:Faqpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Feedlinks&action=edit feedlinks]<br>
+[[MediaWiki_talk:Feedlinks|Talk]]
+</td><td>
+Feed:
+</td><td>
+{{int:Feedlinks}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filecopyerror&action=edit filecopyerror]<br>
+[[MediaWiki_talk:Filecopyerror|Talk]]
+</td><td>
+Could not copy file &quot;$1&quot; to &quot;$2&quot;.
+</td><td>
+{{int:Filecopyerror}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filedeleteerror&action=edit filedeleteerror]<br>
+[[MediaWiki_talk:Filedeleteerror|Talk]]
+</td><td>
+Could not delete file &quot;$1&quot;.
+</td><td>
+{{int:Filedeleteerror}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filedesc&action=edit filedesc]<br>
+[[MediaWiki_talk:Filedesc|Talk]]
+</td><td>
+Summary
+</td><td>
+{{int:Filedesc}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filename&action=edit filename]<br>
+[[MediaWiki_talk:Filename|Talk]]
+</td><td>
+Filename
+</td><td>
+{{int:Filename}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filenotfound&action=edit filenotfound]<br>
+[[MediaWiki_talk:Filenotfound|Talk]]
+</td><td>
+Could not find file &quot;$1&quot;.
+</td><td>
+{{int:Filenotfound}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filerenameerror&action=edit filerenameerror]<br>
+[[MediaWiki_talk:Filerenameerror|Talk]]
+</td><td>
+Could not rename file &quot;$1&quot; to &quot;$2&quot;.
+</td><td>
+{{int:Filerenameerror}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filesource&action=edit filesource]<br>
+[[MediaWiki_talk:Filesource|Talk]]
+</td><td>
+Source
+</td><td>
+{{int:Filesource}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Filestatus&action=edit filestatus]<br>
+[[MediaWiki_talk:Filestatus|Talk]]
+</td><td>
+Copyright status
+</td><td>
+{{int:Filestatus}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Fileuploaded&action=edit fileuploaded]<br>
+[[MediaWiki_talk:Fileuploaded|Talk]]
+</td><td>
+File &quot;$1&quot; uploaded successfully.
+Please follow this link: $2 to the description page and fill
+in information about the file, such as where it came from, when it was
+created and by whom, and anything else you may know about it.
+</td><td>
+{{int:Fileuploaded}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Formerror&action=edit formerror]<br>
+[[MediaWiki_talk:Formerror|Talk]]
+</td><td>
+Error: could not submit form
+</td><td>
+{{int:Formerror}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Fromwikipedia&action=edit fromwikipedia]<br>
+[[MediaWiki_talk:Fromwikipedia|Talk]]
+</td><td>
+From Wiktionary
+</td><td>
+{{int:Fromwikipedia}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Getimagelist&action=edit getimagelist]<br>
+[[MediaWiki_talk:Getimagelist|Talk]]
+</td><td>
+fetching image list
+</td><td>
+{{int:Getimagelist}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Go&action=edit go]<br>
+[[MediaWiki_talk:Go|Talk]]
+</td><td>
+Go
+</td><td>
+{{int:Go}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Googlesearch&action=edit googlesearch]<br>
+[[MediaWiki_talk:Googlesearch|Talk]]
+</td><td>
+
+&lt;!-- SiteSearch Google --&gt;
+&lt;FORM method=GET action=&quot;http&#58;//www.google.com/search&quot;&gt;
+&lt;TABLE bgcolor=&quot;#FFFFFF&quot;&gt;&lt;tr&gt;&lt;td&gt;
+&lt;A HREF=&quot;http&#58;//www.google.com/&quot;&gt;
+&lt;IMG SRC=&quot;http&#58;//www.google.com/logos/Logo_40wht.gif&quot;
+border=&quot;0&quot; ALT=&quot;Google&quot;&gt;&lt;/A&gt;
+&lt;/td&gt;
+&lt;td&gt;
+&lt;INPUT TYPE=text name=q size=31 maxlength=255 value=&quot;$1&quot;&gt;
+&lt;INPUT type=submit name=btnG VALUE=&quot;Google Search&quot;&gt;
+&lt;font size=-1&gt;
+&lt;input type=hidden name=domains value=&quot;http&#58;//tl.wiktionary.org&quot;&gt;&lt;br /&gt;&lt;input type=radio name=sitesearch value=&quot;&quot;&gt; WWW &lt;input type=radio name=sitesearch value=&quot;http&#58;//tl.wiktionary.org&quot; checked&gt; http&#58;//tl.wiktionary.org &lt;br /&gt;
+&lt;input type=&#39;hidden&#39; name=&#39;ie&#39; value=&#39;$2&#39;&gt;
+&lt;input type=&#39;hidden&#39; name=&#39;oe&#39; value=&#39;$2&#39;&gt;
+&lt;/font&gt;
+&lt;/td&gt;&lt;/tr&gt;&lt;/TABLE&gt;
+&lt;/FORM&gt;
+&lt;!-- SiteSearch Google --&gt;
+</td><td>
+{{int:Googlesearch}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Guesstimezone&action=edit guesstimezone]<br>
+[[MediaWiki_talk:Guesstimezone|Talk]]
+</td><td>
+Fill in from browser
+</td><td>
+{{int:Guesstimezone}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Headline_sample&action=edit headline_sample]<br>
+[[MediaWiki_talk:Headline_sample|Talk]]
+</td><td>
+Headline text
+</td><td>
+{{int:Headline_sample}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Headline_tip&action=edit headline_tip]<br>
+[[MediaWiki_talk:Headline_tip|Talk]]
+</td><td>
+Level 2 headline
+</td><td>
+{{int:Headline_tip}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Help&action=edit help]<br>
+[[MediaWiki_talk:Help|Talk]]
+</td><td>
+Help
+</td><td>
+{{int:Help}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Helppage&action=edit helppage]<br>
+[[MediaWiki_talk:Helppage|Talk]]
+</td><td>
+Help:Contents
+</td><td>
+{{int:Helppage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hide&action=edit hide]<br>
+[[MediaWiki_talk:Hide|Talk]]
+</td><td>
+hide
+</td><td>
+{{int:Hide}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hidetoc&action=edit hidetoc]<br>
+[[MediaWiki_talk:Hidetoc|Talk]]
+</td><td>
+hide
+</td><td>
+{{int:Hidetoc}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hist&action=edit hist]<br>
+[[MediaWiki_talk:Hist|Talk]]
+</td><td>
+hist
+</td><td>
+{{int:Hist}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Histlegend&action=edit histlegend]<br>
+[[MediaWiki_talk:Histlegend|Talk]]
+</td><td>
+Diff selection: mark the radio boxes of the versions to compare and hit enter or the button at the bottom.&lt;br/&gt;
+Legend: (cur) = difference with current version,
+(last) = difference with preceding version, M = minor edit.
+</td><td>
+{{int:Histlegend}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:History&action=edit history]<br>
+[[MediaWiki_talk:History|Talk]]
+</td><td>
+Page history
+</td><td>
+{{int:History}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:History_short&action=edit history_short]<br>
+[[MediaWiki_talk:History_short|Talk]]
+</td><td>
+History
+</td><td>
+{{int:History_short}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Historywarning&action=edit historywarning]<br>
+[[MediaWiki_talk:Historywarning|Talk]]
+</td><td>
+Warning: The page you are about to delete has a history:
+</td><td>
+{{int:Historywarning}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Hr_tip&action=edit hr_tip]<br>
+[[MediaWiki_talk:Hr_tip|Talk]]
+</td><td>
+Horizontal line (use sparingly)
+</td><td>
+{{int:Hr_tip}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ignorewarning&action=edit ignorewarning]<br>
+[[MediaWiki_talk:Ignorewarning|Talk]]
+</td><td>
+Ignore warning and save file anyway.
+</td><td>
+{{int:Ignorewarning}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ilshowmatch&action=edit ilshowmatch]<br>
+[[MediaWiki_talk:Ilshowmatch|Talk]]
+</td><td>
+Show all images with names matching
+</td><td>
+{{int:Ilshowmatch}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ilsubmit&action=edit ilsubmit]<br>
+[[MediaWiki_talk:Ilsubmit|Talk]]
+</td><td>
+Search
+</td><td>
+{{int:Ilsubmit}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Image_sample&action=edit image_sample]<br>
+[[MediaWiki_talk:Image_sample|Talk]]
+</td><td>
+Example.jpg
+</td><td>
+{{int:Image_sample}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Image_tip&action=edit image_tip]<br>
+[[MediaWiki_talk:Image_tip|Talk]]
+</td><td>
+Embedded image
+</td><td>
+{{int:Image_tip}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagelinks&action=edit imagelinks]<br>
+[[MediaWiki_talk:Imagelinks|Talk]]
+</td><td>
+Image links
+</td><td>
+{{int:Imagelinks}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagelist&action=edit imagelist]<br>
+[[MediaWiki_talk:Imagelist|Talk]]
+</td><td>
+Image list
+</td><td>
+{{int:Imagelist}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagelisttext&action=edit imagelisttext]<br>
+[[MediaWiki_talk:Imagelisttext|Talk]]
+</td><td>
+Below is a list of $1 images sorted $2.
+</td><td>
+{{int:Imagelisttext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagepage&action=edit imagepage]<br>
+[[MediaWiki_talk:Imagepage|Talk]]
+</td><td>
+View image page
+</td><td>
+{{int:Imagepage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imagereverted&action=edit imagereverted]<br>
+[[MediaWiki_talk:Imagereverted|Talk]]
+</td><td>
+Revert to earlier version was successful.
+</td><td>
+{{int:Imagereverted}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imgdelete&action=edit imgdelete]<br>
+[[MediaWiki_talk:Imgdelete|Talk]]
+</td><td>
+del
+</td><td>
+{{int:Imgdelete}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imgdesc&action=edit imgdesc]<br>
+[[MediaWiki_talk:Imgdesc|Talk]]
+</td><td>
+desc
+</td><td>
+{{int:Imgdesc}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imghistlegend&action=edit imghistlegend]<br>
+[[MediaWiki_talk:Imghistlegend|Talk]]
+</td><td>
+Legend: (cur) = this is the current image, (del) = delete
+this old version, (rev) = revert to this old version.
+&lt;br /&gt;&lt;i&gt;Click on date to see image uploaded on that date&lt;/i&gt;.
+</td><td>
+{{int:Imghistlegend}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imghistory&action=edit imghistory]<br>
+[[MediaWiki_talk:Imghistory|Talk]]
+</td><td>
+Image history
+</td><td>
+{{int:Imghistory}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Imglegend&action=edit imglegend]<br>
+[[MediaWiki_talk:Imglegend|Talk]]
+</td><td>
+Legend: (desc) = show/edit image description.
+</td><td>
+{{int:Imglegend}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Import&action=edit import]<br>
+[[MediaWiki_talk:Import|Talk]]
+</td><td>
+Import pages
+</td><td>
+{{int:Import}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importfailed&action=edit importfailed]<br>
+[[MediaWiki_talk:Importfailed|Talk]]
+</td><td>
+Import failed: $1
+</td><td>
+{{int:Importfailed}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importhistoryconflict&action=edit importhistoryconflict]<br>
+[[MediaWiki_talk:Importhistoryconflict|Talk]]
+</td><td>
+Conflicting history revision exists (may have imported this page before)
+</td><td>
+{{int:Importhistoryconflict}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importnotext&action=edit importnotext]<br>
+[[MediaWiki_talk:Importnotext|Talk]]
+</td><td>
+Empty or no text
+</td><td>
+{{int:Importnotext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importsuccess&action=edit importsuccess]<br>
+[[MediaWiki_talk:Importsuccess|Talk]]
+</td><td>
+Import succeeded!
+</td><td>
+{{int:Importsuccess}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Importtext&action=edit importtext]<br>
+[[MediaWiki_talk:Importtext|Talk]]
+</td><td>
+Please export the file from the source wiki using the Special:Export utility, save it to your disk and upload it here.
+</td><td>
+{{int:Importtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Infobox&action=edit infobox]<br>
+[[MediaWiki_talk:Infobox|Talk]]
+</td><td>
+Click a button to get an example text
+</td><td>
+{{int:Infobox}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Infobox_alert&action=edit infobox_alert]<br>
+[[MediaWiki_talk:Infobox_alert|Talk]]
+</td><td>
+Please enter the text you want to be formatted.\n It will be shown in the infobox for copy and pasting.\nExample:\n$1\nwill become:\n$2
+</td><td>
+{{int:Infobox_alert}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Internalerror&action=edit internalerror]<br>
+[[MediaWiki_talk:Internalerror|Talk]]
+</td><td>
+Internal error
+</td><td>
+{{int:Internalerror}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Intl&action=edit intl]<br>
+[[MediaWiki_talk:Intl|Talk]]
+</td><td>
+Interlanguage links
+</td><td>
+{{int:Intl}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ip_range_invalid&action=edit ip_range_invalid]<br>
+[[MediaWiki_talk:Ip_range_invalid|Talk]]
+</td><td>
+Invalid IP range.
+
+</td><td>
+{{int:Ip_range_invalid}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipaddress&action=edit ipaddress]<br>
+[[MediaWiki_talk:Ipaddress|Talk]]
+</td><td>
+IP Address/username
+</td><td>
+{{int:Ipaddress}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipb_expiry_invalid&action=edit ipb_expiry_invalid]<br>
+[[MediaWiki_talk:Ipb_expiry_invalid|Talk]]
+</td><td>
+Expiry time invalid.
+</td><td>
+{{int:Ipb_expiry_invalid}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipbexpiry&action=edit ipbexpiry]<br>
+[[MediaWiki_talk:Ipbexpiry|Talk]]
+</td><td>
+Expiry
+</td><td>
+{{int:Ipbexpiry}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipblocklist&action=edit ipblocklist]<br>
+[[MediaWiki_talk:Ipblocklist|Talk]]
+</td><td>
+List of blocked IP addresses and usernames
+</td><td>
+{{int:Ipblocklist}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipbreason&action=edit ipbreason]<br>
+[[MediaWiki_talk:Ipbreason|Talk]]
+</td><td>
+Reason
+</td><td>
+{{int:Ipbreason}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipbsubmit&action=edit ipbsubmit]<br>
+[[MediaWiki_talk:Ipbsubmit|Talk]]
+</td><td>
+Block this user
+</td><td>
+{{int:Ipbsubmit}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipusubmit&action=edit ipusubmit]<br>
+[[MediaWiki_talk:Ipusubmit|Talk]]
+</td><td>
+Unblock this address
+</td><td>
+{{int:Ipusubmit}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ipusuccess&action=edit ipusuccess]<br>
+[[MediaWiki_talk:Ipusuccess|Talk]]
+</td><td>
+&quot;$1&quot; unblocked
+</td><td>
+{{int:Ipusuccess}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Isbn&action=edit isbn]<br>
+[[MediaWiki_talk:Isbn|Talk]]
+</td><td>
+ISBN
+</td><td>
+{{int:Isbn}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Isredirect&action=edit isredirect]<br>
+[[MediaWiki_talk:Isredirect|Talk]]
+</td><td>
+redirect page
+</td><td>
+{{int:Isredirect}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Italic_sample&action=edit italic_sample]<br>
+[[MediaWiki_talk:Italic_sample|Talk]]
+</td><td>
+Italic text
+</td><td>
+{{int:Italic_sample}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Italic_tip&action=edit italic_tip]<br>
+[[MediaWiki_talk:Italic_tip|Talk]]
+</td><td>
+Italic text
+</td><td>
+{{int:Italic_tip}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Iteminvalidname&action=edit iteminvalidname]<br>
+[[MediaWiki_talk:Iteminvalidname|Talk]]
+</td><td>
+Problem with item &#39;$1&#39;, invalid name...
+</td><td>
+{{int:Iteminvalidname}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Largefile&action=edit largefile]<br>
+[[MediaWiki_talk:Largefile|Talk]]
+</td><td>
+It is recommended that images not exceed 100k in size.
+</td><td>
+{{int:Largefile}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Last&action=edit last]<br>
+[[MediaWiki_talk:Last|Talk]]
+</td><td>
+last
+</td><td>
+{{int:Last}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lastmodified&action=edit lastmodified]<br>
+[[MediaWiki_talk:Lastmodified|Talk]]
+</td><td>
+This page was last modified $1.
+</td><td>
+{{int:Lastmodified}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lastmodifiedby&action=edit lastmodifiedby]<br>
+[[MediaWiki_talk:Lastmodifiedby|Talk]]
+</td><td>
+This page was last modified $1 by $2.
+</td><td>
+{{int:Lastmodifiedby}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lineno&action=edit lineno]<br>
+[[MediaWiki_talk:Lineno|Talk]]
+</td><td>
+Line $1:
+</td><td>
+{{int:Lineno}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Link_sample&action=edit link_sample]<br>
+[[MediaWiki_talk:Link_sample|Talk]]
+</td><td>
+Link title
+</td><td>
+{{int:Link_sample}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Link_tip&action=edit link_tip]<br>
+[[MediaWiki_talk:Link_tip|Talk]]
+</td><td>
+Internal link
+</td><td>
+{{int:Link_tip}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linklistsub&action=edit linklistsub]<br>
+[[MediaWiki_talk:Linklistsub|Talk]]
+</td><td>
+(List of links)
+</td><td>
+{{int:Linklistsub}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linkshere&action=edit linkshere]<br>
+[[MediaWiki_talk:Linkshere|Talk]]
+</td><td>
+The following pages link to here:
+</td><td>
+{{int:Linkshere}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linkstoimage&action=edit linkstoimage]<br>
+[[MediaWiki_talk:Linkstoimage|Talk]]
+</td><td>
+The following pages link to this image:
+</td><td>
+{{int:Linkstoimage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Linktrail&action=edit linktrail]<br>
+[[MediaWiki_talk:Linktrail|Talk]]
+</td><td>
+/^(&#91;a-z]+)(.*)$/sD
+</td><td>
+{{int:Linktrail}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Listform&action=edit listform]<br>
+[[MediaWiki_talk:Listform|Talk]]
+</td><td>
+list
+</td><td>
+{{int:Listform}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Listusers&action=edit listusers]<br>
+[[MediaWiki_talk:Listusers|Talk]]
+</td><td>
+User list
+</td><td>
+{{int:Listusers}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loadhist&action=edit loadhist]<br>
+[[MediaWiki_talk:Loadhist|Talk]]
+</td><td>
+Loading page history
+</td><td>
+{{int:Loadhist}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loadingrev&action=edit loadingrev]<br>
+[[MediaWiki_talk:Loadingrev|Talk]]
+</td><td>
+loading revision for diff
+</td><td>
+{{int:Loadingrev}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Localtime&action=edit localtime]<br>
+[[MediaWiki_talk:Localtime|Talk]]
+</td><td>
+Local time display
+</td><td>
+{{int:Localtime}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockbtn&action=edit lockbtn]<br>
+[[MediaWiki_talk:Lockbtn|Talk]]
+</td><td>
+Lock database
+</td><td>
+{{int:Lockbtn}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockconfirm&action=edit lockconfirm]<br>
+[[MediaWiki_talk:Lockconfirm|Talk]]
+</td><td>
+Yes, I really want to lock the database.
+</td><td>
+{{int:Lockconfirm}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdb&action=edit lockdb]<br>
+[[MediaWiki_talk:Lockdb|Talk]]
+</td><td>
+Lock database
+</td><td>
+{{int:Lockdb}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdbsuccesssub&action=edit lockdbsuccesssub]<br>
+[[MediaWiki_talk:Lockdbsuccesssub|Talk]]
+</td><td>
+Database lock succeeded
+</td><td>
+{{int:Lockdbsuccesssub}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdbsuccesstext&action=edit lockdbsuccesstext]<br>
+[[MediaWiki_talk:Lockdbsuccesstext|Talk]]
+</td><td>
+The database has been locked.
+&lt;br /&gt;Remember to remove the lock after your maintenance is complete.
+</td><td>
+{{int:Lockdbsuccesstext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lockdbtext&action=edit lockdbtext]<br>
+[[MediaWiki_talk:Lockdbtext|Talk]]
+</td><td>
+Locking the database will suspend the ability of all
+users to edit pages, change their preferences, edit their watchlists, and
+other things requiring changes in the database.
+Please confirm that this is what you intend to do, and that you will
+unlock the database when your maintenance is done.
+</td><td>
+{{int:Lockdbtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Locknoconfirm&action=edit locknoconfirm]<br>
+[[MediaWiki_talk:Locknoconfirm|Talk]]
+</td><td>
+You did not check the confirmation box.
+</td><td>
+{{int:Locknoconfirm}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Login&action=edit login]<br>
+[[MediaWiki_talk:Login|Talk]]
+</td><td>
+Log in
+</td><td>
+{{int:Login}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginend&action=edit loginend]<br>
+[[MediaWiki_talk:Loginend|Talk]]
+</td><td>
+&amp;nbsp;
+</td><td>
+{{int:Loginend}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginerror&action=edit loginerror]<br>
+[[MediaWiki_talk:Loginerror|Talk]]
+</td><td>
+Login error
+</td><td>
+{{int:Loginerror}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginpagetitle&action=edit loginpagetitle]<br>
+[[MediaWiki_talk:Loginpagetitle|Talk]]
+</td><td>
+User login
+</td><td>
+{{int:Loginpagetitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginproblem&action=edit loginproblem]<br>
+[[MediaWiki_talk:Loginproblem|Talk]]
+</td><td>
+&lt;b&gt;There has been a problem with your login.&lt;/b&gt;&lt;br /&gt;Try again!
+</td><td>
+{{int:Loginproblem}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginprompt&action=edit loginprompt]<br>
+[[MediaWiki_talk:Loginprompt|Talk]]
+</td><td>
+You must have cookies enabled to log in to Wiktionary.
+</td><td>
+{{int:Loginprompt}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginreqtext&action=edit loginreqtext]<br>
+[[MediaWiki_talk:Loginreqtext|Talk]]
+</td><td>
+You must &#91;&#91;special:Userlogin&#124;login]] to view other pages.
+</td><td>
+{{int:Loginreqtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginreqtitle&action=edit loginreqtitle]<br>
+[[MediaWiki_talk:Loginreqtitle|Talk]]
+</td><td>
+Login Required
+</td><td>
+{{int:Loginreqtitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginsuccess&action=edit loginsuccess]<br>
+[[MediaWiki_talk:Loginsuccess|Talk]]
+</td><td>
+You are now logged in to Wiktionary as &quot;$1&quot;.
+</td><td>
+{{int:Loginsuccess}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Loginsuccesstitle&action=edit loginsuccesstitle]<br>
+[[MediaWiki_talk:Loginsuccesstitle|Talk]]
+</td><td>
+Login successful
+</td><td>
+{{int:Loginsuccesstitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Logout&action=edit logout]<br>
+[[MediaWiki_talk:Logout|Talk]]
+</td><td>
+Log out
+</td><td>
+{{int:Logout}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Logouttext&action=edit logouttext]<br>
+[[MediaWiki_talk:Logouttext|Talk]]
+</td><td>
+You are now logged out.
+You can continue to use Wiktionary anonymously, or you can log in
+again as the same or as a different user. Note that some pages may
+continue to be displayed as if you were still logged in, until you clear
+your browser cache
+
+</td><td>
+{{int:Logouttext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Logouttitle&action=edit logouttitle]<br>
+[[MediaWiki_talk:Logouttitle|Talk]]
+</td><td>
+User logout
+</td><td>
+{{int:Logouttitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Lonelypages&action=edit lonelypages]<br>
+[[MediaWiki_talk:Lonelypages|Talk]]
+</td><td>
+Orphaned pages
+</td><td>
+{{int:Lonelypages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Longpages&action=edit longpages]<br>
+[[MediaWiki_talk:Longpages|Talk]]
+</td><td>
+Long pages
+</td><td>
+{{int:Longpages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Longpagewarning&action=edit longpagewarning]<br>
+[[MediaWiki_talk:Longpagewarning|Talk]]
+</td><td>
+WARNING: This page is $1 kilobytes long; some
+browsers may have problems editing pages approaching or longer than 32kb.
+Please consider breaking the page into smaller sections.
+</td><td>
+{{int:Longpagewarning}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailerror&action=edit mailerror]<br>
+[[MediaWiki_talk:Mailerror|Talk]]
+</td><td>
+Error sending mail: $1
+</td><td>
+{{int:Mailerror}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailmypassword&action=edit mailmypassword]<br>
+[[MediaWiki_talk:Mailmypassword|Talk]]
+</td><td>
+Mail me a new password
+</td><td>
+{{int:Mailmypassword}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailnologin&action=edit mailnologin]<br>
+[[MediaWiki_talk:Mailnologin|Talk]]
+</td><td>
+No send address
+</td><td>
+{{int:Mailnologin}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mailnologintext&action=edit mailnologintext]<br>
+[[MediaWiki_talk:Mailnologintext|Talk]]
+</td><td>
+You must be &lt;a href=&quot;{{localurl:Special:Userlogin&quot;&gt;logged in&lt;/a&gt;
+and have a valid e-mail address in your &lt;a href=&quot;/wiki/Special:Preferences&quot;&gt;preferences&lt;/a&gt;
+to send e-mail to other users.
+</td><td>
+{{int:Mailnologintext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mainpage&action=edit mainpage]<br>
+[[MediaWiki_talk:Mainpage|Talk]]
+</td><td>
+Main Page
+</td><td>
+{{int:Mainpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mainpagedocfooter&action=edit mainpagedocfooter]<br>
+[[MediaWiki_talk:Mainpagedocfooter|Talk]]
+</td><td>
+Please see &#91;http&#58;//meta.wikipedia.org/wiki/MediaWiki_i18n documentation on customizing the interface]
+and the &#91;http&#58;//meta.wikipedia.org/wiki/MediaWiki_User%27s_Guide User&#39;s Guide] for usage and configuration help.
+</td><td>
+{{int:Mainpagedocfooter}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mainpagetext&action=edit mainpagetext]<br>
+[[MediaWiki_talk:Mainpagetext|Talk]]
+</td><td>
+Wiki software successfully installed.
+</td><td>
+{{int:Mainpagetext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Maintenance&action=edit maintenance]<br>
+[[MediaWiki_talk:Maintenance|Talk]]
+</td><td>
+Maintenance page
+</td><td>
+{{int:Maintenance}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Maintenancebacklink&action=edit maintenancebacklink]<br>
+[[MediaWiki_talk:Maintenancebacklink|Talk]]
+</td><td>
+Back to Maintenance Page
+</td><td>
+{{int:Maintenancebacklink}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Maintnancepagetext&action=edit maintnancepagetext]<br>
+[[MediaWiki_talk:Maintnancepagetext|Talk]]
+</td><td>
+This page includes several handy tools for everyday maintenance. Some of these functions tend to stress the database, so please do not hit reload after every item you fixed ;-)
+</td><td>
+{{int:Maintnancepagetext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysop&action=edit makesysop]<br>
+[[MediaWiki_talk:Makesysop|Talk]]
+</td><td>
+Make a user into a sysop
+</td><td>
+{{int:Makesysop}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopfail&action=edit makesysopfail]<br>
+[[MediaWiki_talk:Makesysopfail|Talk]]
+</td><td>
+&lt;b&gt;User &quot;$1&quot; could not be made into a sysop. (Did you enter the name correctly?)&lt;/b&gt;
+</td><td>
+{{int:Makesysopfail}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopname&action=edit makesysopname]<br>
+[[MediaWiki_talk:Makesysopname|Talk]]
+</td><td>
+Name of the user:
+</td><td>
+{{int:Makesysopname}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopok&action=edit makesysopok]<br>
+[[MediaWiki_talk:Makesysopok|Talk]]
+</td><td>
+&lt;b&gt;User &quot;$1&quot; is now a sysop&lt;/b&gt;
+</td><td>
+{{int:Makesysopok}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysopsubmit&action=edit makesysopsubmit]<br>
+[[MediaWiki_talk:Makesysopsubmit|Talk]]
+</td><td>
+Make this user into a sysop
+</td><td>
+{{int:Makesysopsubmit}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysoptext&action=edit makesysoptext]<br>
+[[MediaWiki_talk:Makesysoptext|Talk]]
+</td><td>
+This form is used by bureaucrats to turn ordinary users into administrators.
+Type the name of the user in the box and press the button to make the user an administrator
+</td><td>
+{{int:Makesysoptext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Makesysoptitle&action=edit makesysoptitle]<br>
+[[MediaWiki_talk:Makesysoptitle|Talk]]
+</td><td>
+Make a user into a sysop
+</td><td>
+{{int:Makesysoptitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Matchtotals&action=edit matchtotals]<br>
+[[MediaWiki_talk:Matchtotals|Talk]]
+</td><td>
+The query &quot;$1&quot; matched $2 page titles
+and the text of $3 pages.
+</td><td>
+{{int:Matchtotals}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math&action=edit math]<br>
+[[MediaWiki_talk:Math|Talk]]
+</td><td>
+Rendering math
+</td><td>
+{{int:Math}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_bad_output&action=edit math_bad_output]<br>
+[[MediaWiki_talk:Math_bad_output|Talk]]
+</td><td>
+Can&#39;t write to or create math output directory
+</td><td>
+{{int:Math_bad_output}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_bad_tmpdir&action=edit math_bad_tmpdir]<br>
+[[MediaWiki_talk:Math_bad_tmpdir|Talk]]
+</td><td>
+Can&#39;t write to or create math temp directory
+</td><td>
+{{int:Math_bad_tmpdir}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_failure&action=edit math_failure]<br>
+[[MediaWiki_talk:Math_failure|Talk]]
+</td><td>
+Failed to parse
+</td><td>
+{{int:Math_failure}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_image_error&action=edit math_image_error]<br>
+[[MediaWiki_talk:Math_image_error|Talk]]
+</td><td>
+PNG conversion failed; check for correct installation of latex, dvips, gs, and convert
+</td><td>
+{{int:Math_image_error}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_lexing_error&action=edit math_lexing_error]<br>
+[[MediaWiki_talk:Math_lexing_error|Talk]]
+</td><td>
+lexing error
+</td><td>
+{{int:Math_lexing_error}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_notexvc&action=edit math_notexvc]<br>
+[[MediaWiki_talk:Math_notexvc|Talk]]
+</td><td>
+Missing texvc executable; please see math/README to configure.
+</td><td>
+{{int:Math_notexvc}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_sample&action=edit math_sample]<br>
+[[MediaWiki_talk:Math_sample|Talk]]
+</td><td>
+Insert formula here
+</td><td>
+{{int:Math_sample}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_syntax_error&action=edit math_syntax_error]<br>
+[[MediaWiki_talk:Math_syntax_error|Talk]]
+</td><td>
+syntax error
+</td><td>
+{{int:Math_syntax_error}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_tip&action=edit math_tip]<br>
+[[MediaWiki_talk:Math_tip|Talk]]
+</td><td>
+Mathematical formula (LaTeX)
+</td><td>
+{{int:Math_tip}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_unknown_error&action=edit math_unknown_error]<br>
+[[MediaWiki_talk:Math_unknown_error|Talk]]
+</td><td>
+unknown error
+</td><td>
+{{int:Math_unknown_error}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Math_unknown_function&action=edit math_unknown_function]<br>
+[[MediaWiki_talk:Math_unknown_function|Talk]]
+</td><td>
+unknown function
+</td><td>
+{{int:Math_unknown_function}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Media_sample&action=edit media_sample]<br>
+[[MediaWiki_talk:Media_sample|Talk]]
+</td><td>
+Example.mp3
+</td><td>
+{{int:Media_sample}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Media_tip&action=edit media_tip]<br>
+[[MediaWiki_talk:Media_tip|Talk]]
+</td><td>
+Media file link
+</td><td>
+{{int:Media_tip}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Minlength&action=edit minlength]<br>
+[[MediaWiki_talk:Minlength|Talk]]
+</td><td>
+Image names must be at least three letters.
+</td><td>
+{{int:Minlength}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Minoredit&action=edit minoredit]<br>
+[[MediaWiki_talk:Minoredit|Talk]]
+</td><td>
+This is a minor edit
+</td><td>
+{{int:Minoredit}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Minoreditletter&action=edit minoreditletter]<br>
+[[MediaWiki_talk:Minoreditletter|Talk]]
+</td><td>
+M
+</td><td>
+{{int:Minoreditletter}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mispeelings&action=edit mispeelings]<br>
+[[MediaWiki_talk:Mispeelings|Talk]]
+</td><td>
+Pages with misspellings
+</td><td>
+{{int:Mispeelings}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mispeelingspage&action=edit mispeelingspage]<br>
+[[MediaWiki_talk:Mispeelingspage|Talk]]
+</td><td>
+List of common misspellings
+</td><td>
+{{int:Mispeelingspage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mispeelingstext&action=edit mispeelingstext]<br>
+[[MediaWiki_talk:Mispeelingstext|Talk]]
+</td><td>
+The following pages contain a common misspelling, which are listed on $1. The correct spelling might be given (like this).
+</td><td>
+{{int:Mispeelingstext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missingarticle&action=edit missingarticle]<br>
+[[MediaWiki_talk:Missingarticle|Talk]]
+</td><td>
+The database did not find the text of a page
+that it should have found, named &quot;$1&quot;.
+
+&lt;p&gt;This is usually caused by following an outdated diff or history link to a
+page that has been deleted.
+
+&lt;p&gt;If this is not the case, you may have found a bug in the software.
+Please report this to an administrator, making note of the URL.
+</td><td>
+{{int:Missingarticle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missingimage&action=edit missingimage]<br>
+[[MediaWiki_talk:Missingimage|Talk]]
+</td><td>
+&lt;b&gt;Missing image&lt;/b&gt;&lt;br /&gt;&lt;i&gt;$1&lt;/i&gt;
+
+</td><td>
+{{int:Missingimage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missinglanguagelinks&action=edit missinglanguagelinks]<br>
+[[MediaWiki_talk:Missinglanguagelinks|Talk]]
+</td><td>
+Missing Language Links
+</td><td>
+{{int:Missinglanguagelinks}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missinglanguagelinksbutton&action=edit missinglanguagelinksbutton]<br>
+[[MediaWiki_talk:Missinglanguagelinksbutton|Talk]]
+</td><td>
+Find missing language links for
+</td><td>
+{{int:Missinglanguagelinksbutton}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Missinglanguagelinkstext&action=edit missinglanguagelinkstext]<br>
+[[MediaWiki_talk:Missinglanguagelinkstext|Talk]]
+</td><td>
+These pages do &lt;i&gt;not&lt;/i&gt; link to their counterpart in $1. Redirects and subpages are &lt;i&gt;not&lt;/i&gt; shown.
+</td><td>
+{{int:Missinglanguagelinkstext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Moredotdotdot&action=edit moredotdotdot]<br>
+[[MediaWiki_talk:Moredotdotdot|Talk]]
+</td><td>
+More...
+</td><td>
+{{int:Moredotdotdot}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Move&action=edit move]<br>
+[[MediaWiki_talk:Move|Talk]]
+</td><td>
+Move
+</td><td>
+{{int:Move}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movearticle&action=edit movearticle]<br>
+[[MediaWiki_talk:Movearticle|Talk]]
+</td><td>
+Move page
+</td><td>
+{{int:Movearticle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movedto&action=edit movedto]<br>
+[[MediaWiki_talk:Movedto|Talk]]
+</td><td>
+moved to
+</td><td>
+{{int:Movedto}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movenologin&action=edit movenologin]<br>
+[[MediaWiki_talk:Movenologin|Talk]]
+</td><td>
+Not logged in
+</td><td>
+{{int:Movenologin}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movenologintext&action=edit movenologintext]<br>
+[[MediaWiki_talk:Movenologintext|Talk]]
+</td><td>
+You must be a registered user and &lt;a href=&quot;/wiki/Special:Userlogin&quot;&gt;logged in&lt;/a&gt;
+to move a page.
+</td><td>
+{{int:Movenologintext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepage&action=edit movepage]<br>
+[[MediaWiki_talk:Movepage|Talk]]
+</td><td>
+Move page
+</td><td>
+{{int:Movepage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepagebtn&action=edit movepagebtn]<br>
+[[MediaWiki_talk:Movepagebtn|Talk]]
+</td><td>
+Move page
+</td><td>
+{{int:Movepagebtn}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepagetalktext&action=edit movepagetalktext]<br>
+[[MediaWiki_talk:Movepagetalktext|Talk]]
+</td><td>
+The associated talk page, if any, will be automatically moved along with it &#39;&#39;&#39;unless:&#39;&#39;&#39;
+*You are moving the page across namespaces,
+*A non-empty talk page already exists under the new name, or
+*You uncheck the box below.
+
+In those cases, you will have to move or merge the page manually if desired.
+</td><td>
+{{int:Movepagetalktext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movepagetext&action=edit movepagetext]<br>
+[[MediaWiki_talk:Movepagetext|Talk]]
+</td><td>
+Using the form below will rename a page, moving all
+of its history to the new name.
+The old title will become a redirect page to the new title.
+Links to the old page title will not be changed; be sure to
+&#91;&#91;Special:Maintenance&#124;check]] for double or broken redirects.
+You are responsible for making sure that links continue to
+point where they are supposed to go.
+
+Note that the page will &#39;&#39;&#39;not&#39;&#39;&#39; be moved if there is already
+a page at the new title, unless it is empty or a redirect and has no
+past edit history. This means that you can rename a page back to where
+it was just renamed from if you make a mistake, and you cannot overwrite
+an existing page.
+
+&lt;b&gt;WARNING!&lt;/b&gt;
+This can be a drastic and unexpected change for a popular page;
+please be sure you understand the consequences of this before
+proceeding.
+</td><td>
+{{int:Movepagetext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movetalk&action=edit movetalk]<br>
+[[MediaWiki_talk:Movetalk|Talk]]
+</td><td>
+Move &quot;talk&quot; page as well, if applicable.
+</td><td>
+{{int:Movetalk}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Movethispage&action=edit movethispage]<br>
+[[MediaWiki_talk:Movethispage|Talk]]
+</td><td>
+Move this page
+</td><td>
+{{int:Movethispage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mycontris&action=edit mycontris]<br>
+[[MediaWiki_talk:Mycontris|Talk]]
+</td><td>
+My contributions
+</td><td>
+{{int:Mycontris}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mypage&action=edit mypage]<br>
+[[MediaWiki_talk:Mypage|Talk]]
+</td><td>
+My page
+</td><td>
+{{int:Mypage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Mytalk&action=edit mytalk]<br>
+[[MediaWiki_talk:Mytalk|Talk]]
+</td><td>
+My talk
+</td><td>
+{{int:Mytalk}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Navigation&action=edit navigation]<br>
+[[MediaWiki_talk:Navigation|Talk]]
+</td><td>
+Navigation
+</td><td>
+{{int:Navigation}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nbytes&action=edit nbytes]<br>
+[[MediaWiki_talk:Nbytes|Talk]]
+</td><td>
+$1 bytes
+</td><td>
+{{int:Nbytes}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nchanges&action=edit nchanges]<br>
+[[MediaWiki_talk:Nchanges|Talk]]
+</td><td>
+$1 changes
+</td><td>
+{{int:Nchanges}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newarticle&action=edit newarticle]<br>
+[[MediaWiki_talk:Newarticle|Talk]]
+</td><td>
+(New)
+</td><td>
+{{int:Newarticle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newarticletext&action=edit newarticletext]<br>
+[[MediaWiki_talk:Newarticletext|Talk]]
+</td><td>
+You&#39;ve followed a link to a page that doesn&#39;t exist yet.
+To create the page, start typing in the box below
+(see the &#91;&#91;Wiktionary:Help&#124;help page]] for more info).
+If you are here by mistake, just click your browser&#39;s &#39;&#39;&#39;back&#39;&#39;&#39; button.
+</td><td>
+{{int:Newarticletext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newmessages&action=edit newmessages]<br>
+[[MediaWiki_talk:Newmessages|Talk]]
+</td><td>
+You have $1.
+</td><td>
+{{int:Newmessages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newmessageslink&action=edit newmessageslink]<br>
+[[MediaWiki_talk:Newmessageslink|Talk]]
+</td><td>
+new messages
+</td><td>
+{{int:Newmessageslink}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpage&action=edit newpage]<br>
+[[MediaWiki_talk:Newpage|Talk]]
+</td><td>
+New page
+</td><td>
+{{int:Newpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpageletter&action=edit newpageletter]<br>
+[[MediaWiki_talk:Newpageletter|Talk]]
+</td><td>
+N
+</td><td>
+{{int:Newpageletter}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpages&action=edit newpages]<br>
+[[MediaWiki_talk:Newpages|Talk]]
+</td><td>
+New pages
+</td><td>
+{{int:Newpages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newpassword&action=edit newpassword]<br>
+[[MediaWiki_talk:Newpassword|Talk]]
+</td><td>
+New password
+</td><td>
+{{int:Newpassword}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newtitle&action=edit newtitle]<br>
+[[MediaWiki_talk:Newtitle|Talk]]
+</td><td>
+To new title
+</td><td>
+{{int:Newtitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Newusersonly&action=edit newusersonly]<br>
+[[MediaWiki_talk:Newusersonly|Talk]]
+</td><td>
+ (new users only)
+</td><td>
+{{int:Newusersonly}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Next&action=edit next]<br>
+[[MediaWiki_talk:Next|Talk]]
+</td><td>
+next
+</td><td>
+{{int:Next}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nextn&action=edit nextn]<br>
+[[MediaWiki_talk:Nextn|Talk]]
+</td><td>
+next $1
+</td><td>
+{{int:Nextn}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nlinks&action=edit nlinks]<br>
+[[MediaWiki_talk:Nlinks|Talk]]
+</td><td>
+$1 links
+</td><td>
+{{int:Nlinks}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noaffirmation&action=edit noaffirmation]<br>
+[[MediaWiki_talk:Noaffirmation|Talk]]
+</td><td>
+You must affirm that your upload does not violate
+any copyrights.
+</td><td>
+{{int:Noaffirmation}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noarticletext&action=edit noarticletext]<br>
+[[MediaWiki_talk:Noarticletext|Talk]]
+</td><td>
+(There is currently no text in this page)
+</td><td>
+{{int:Noarticletext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noblockreason&action=edit noblockreason]<br>
+[[MediaWiki_talk:Noblockreason|Talk]]
+</td><td>
+You must supply a reason for the block.
+</td><td>
+{{int:Noblockreason}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noconnect&action=edit noconnect]<br>
+[[MediaWiki_talk:Noconnect|Talk]]
+</td><td>
+Sorry! The wiki is experiencing some technical difficulties, and cannot contact the database server.
+</td><td>
+{{int:Noconnect}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocontribs&action=edit nocontribs]<br>
+[[MediaWiki_talk:Nocontribs|Talk]]
+</td><td>
+No changes were found matching these criteria.
+</td><td>
+{{int:Nocontribs}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocookieslogin&action=edit nocookieslogin]<br>
+[[MediaWiki_talk:Nocookieslogin|Talk]]
+</td><td>
+Wiktionary uses cookies to log in users. You have cookies disabled. Please enable them and try again.
+</td><td>
+{{int:Nocookieslogin}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocookiesnew&action=edit nocookiesnew]<br>
+[[MediaWiki_talk:Nocookiesnew|Talk]]
+</td><td>
+The user account was created, but you are not logged in. Wiktionary uses cookies to log in users. You have cookies disabled. Please enable them, then log in with your new username and password.
+</td><td>
+{{int:Nocookiesnew}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nocreativecommons&action=edit nocreativecommons]<br>
+[[MediaWiki_talk:Nocreativecommons|Talk]]
+</td><td>
+Creative Commons RDF metadata disabled for this server.
+</td><td>
+{{int:Nocreativecommons}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nodb&action=edit nodb]<br>
+[[MediaWiki_talk:Nodb|Talk]]
+</td><td>
+Could not select database $1
+</td><td>
+{{int:Nodb}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nodublincore&action=edit nodublincore]<br>
+[[MediaWiki_talk:Nodublincore|Talk]]
+</td><td>
+Dublin Core RDF metadata disabled for this server.
+</td><td>
+{{int:Nodublincore}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noemail&action=edit noemail]<br>
+[[MediaWiki_talk:Noemail|Talk]]
+</td><td>
+There is no e-mail address recorded for user &quot;$1&quot;.
+</td><td>
+{{int:Noemail}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noemailtext&action=edit noemailtext]<br>
+[[MediaWiki_talk:Noemailtext|Talk]]
+</td><td>
+This user has not specified a valid e-mail address,
+or has chosen not to receive e-mail from other users.
+</td><td>
+{{int:Noemailtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noemailtitle&action=edit noemailtitle]<br>
+[[MediaWiki_talk:Noemailtitle|Talk]]
+</td><td>
+No e-mail address
+</td><td>
+{{int:Noemailtitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nogomatch&action=edit nogomatch]<br>
+[[MediaWiki_talk:Nogomatch|Talk]]
+</td><td>
+No page with this exact title exists, trying full text search.
+</td><td>
+{{int:Nogomatch}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nohistory&action=edit nohistory]<br>
+[[MediaWiki_talk:Nohistory|Talk]]
+</td><td>
+There is no edit history for this page.
+</td><td>
+{{int:Nohistory}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nolinkshere&action=edit nolinkshere]<br>
+[[MediaWiki_talk:Nolinkshere|Talk]]
+</td><td>
+No pages link to here.
+</td><td>
+{{int:Nolinkshere}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nolinkstoimage&action=edit nolinkstoimage]<br>
+[[MediaWiki_talk:Nolinkstoimage|Talk]]
+</td><td>
+There are no pages that link to this image.
+</td><td>
+{{int:Nolinkstoimage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Noname&action=edit noname]<br>
+[[MediaWiki_talk:Noname|Talk]]
+</td><td>
+You have not specified a valid user name.
+</td><td>
+{{int:Noname}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nonefound&action=edit nonefound]<br>
+[[MediaWiki_talk:Nonefound|Talk]]
+</td><td>
+&lt;strong&gt;Note&lt;/strong&gt;: unsuccessful searches are
+often caused by searching for common words like &quot;have&quot; and &quot;from&quot;,
+which are not indexed, or by specifying more than one search term (only pages
+containing all of the search terms will appear in the result).
+</td><td>
+{{int:Nonefound}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nospecialpagetext&action=edit nospecialpagetext]<br>
+[[MediaWiki_talk:Nospecialpagetext|Talk]]
+</td><td>
+You have requested a special page that is not
+recognized by the wiki.
+</td><td>
+{{int:Nospecialpagetext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchaction&action=edit nosuchaction]<br>
+[[MediaWiki_talk:Nosuchaction|Talk]]
+</td><td>
+No such action
+</td><td>
+{{int:Nosuchaction}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchactiontext&action=edit nosuchactiontext]<br>
+[[MediaWiki_talk:Nosuchactiontext|Talk]]
+</td><td>
+The action specified by the URL is not
+recognized by the wiki
+</td><td>
+{{int:Nosuchactiontext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchspecialpage&action=edit nosuchspecialpage]<br>
+[[MediaWiki_talk:Nosuchspecialpage|Talk]]
+</td><td>
+No such special page
+</td><td>
+{{int:Nosuchspecialpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nosuchuser&action=edit nosuchuser]<br>
+[[MediaWiki_talk:Nosuchuser|Talk]]
+</td><td>
+There is no user by the name &quot;$1&quot;.
+Check your spelling, or use the form below to create a new user account.
+</td><td>
+{{int:Nosuchuser}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notacceptable&action=edit notacceptable]<br>
+[[MediaWiki_talk:Notacceptable|Talk]]
+</td><td>
+The wiki server can&#39;t provide data in a format your client can read.
+</td><td>
+{{int:Notacceptable}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notanarticle&action=edit notanarticle]<br>
+[[MediaWiki_talk:Notanarticle|Talk]]
+</td><td>
+Not a content page
+</td><td>
+{{int:Notanarticle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notargettext&action=edit notargettext]<br>
+[[MediaWiki_talk:Notargettext|Talk]]
+</td><td>
+You have not specified a target page or user
+to perform this function on.
+</td><td>
+{{int:Notargettext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notargettitle&action=edit notargettitle]<br>
+[[MediaWiki_talk:Notargettitle|Talk]]
+</td><td>
+No target
+</td><td>
+{{int:Notargettitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Note&action=edit note]<br>
+[[MediaWiki_talk:Note|Talk]]
+</td><td>
+&lt;strong&gt;Note:&lt;/strong&gt;
+</td><td>
+{{int:Note}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notextmatches&action=edit notextmatches]<br>
+[[MediaWiki_talk:Notextmatches|Talk]]
+</td><td>
+No page text matches
+</td><td>
+{{int:Notextmatches}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notitlematches&action=edit notitlematches]<br>
+[[MediaWiki_talk:Notitlematches|Talk]]
+</td><td>
+No page title matches
+</td><td>
+{{int:Notitlematches}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Notloggedin&action=edit notloggedin]<br>
+[[MediaWiki_talk:Notloggedin|Talk]]
+</td><td>
+Not logged in
+</td><td>
+{{int:Notloggedin}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nowatchlist&action=edit nowatchlist]<br>
+[[MediaWiki_talk:Nowatchlist|Talk]]
+</td><td>
+You have no items on your watchlist.
+</td><td>
+{{int:Nowatchlist}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nowiki_sample&action=edit nowiki_sample]<br>
+[[MediaWiki_talk:Nowiki_sample|Talk]]
+</td><td>
+Insert non-formatted text here
+</td><td>
+{{int:Nowiki_sample}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nowiki_tip&action=edit nowiki_tip]<br>
+[[MediaWiki_talk:Nowiki_tip|Talk]]
+</td><td>
+Ignore wiki formatting
+</td><td>
+{{int:Nowiki_tip}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-category&action=edit nstab-category]<br>
+[[MediaWiki_talk:Nstab-category|Talk]]
+</td><td>
+Category
+</td><td>
+{{int:Nstab-category}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-help&action=edit nstab-help]<br>
+[[MediaWiki_talk:Nstab-help|Talk]]
+</td><td>
+Help
+</td><td>
+{{int:Nstab-help}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-image&action=edit nstab-image]<br>
+[[MediaWiki_talk:Nstab-image|Talk]]
+</td><td>
+Image
+</td><td>
+{{int:Nstab-image}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-main&action=edit nstab-main]<br>
+[[MediaWiki_talk:Nstab-main|Talk]]
+</td><td>
+Article
+</td><td>
+{{int:Nstab-main}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-media&action=edit nstab-media]<br>
+[[MediaWiki_talk:Nstab-media|Talk]]
+</td><td>
+Media
+</td><td>
+{{int:Nstab-media}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-mediawiki&action=edit nstab-mediawiki]<br>
+[[MediaWiki_talk:Nstab-mediawiki|Talk]]
+</td><td>
+Message
+</td><td>
+{{int:Nstab-mediawiki}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-special&action=edit nstab-special]<br>
+[[MediaWiki_talk:Nstab-special|Talk]]
+</td><td>
+Special
+</td><td>
+{{int:Nstab-special}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-template&action=edit nstab-template]<br>
+[[MediaWiki_talk:Nstab-template|Talk]]
+</td><td>
+Template
+</td><td>
+{{int:Nstab-template}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-user&action=edit nstab-user]<br>
+[[MediaWiki_talk:Nstab-user|Talk]]
+</td><td>
+User page
+</td><td>
+{{int:Nstab-user}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nstab-wp&action=edit nstab-wp]<br>
+[[MediaWiki_talk:Nstab-wp|Talk]]
+</td><td>
+About
+</td><td>
+{{int:Nstab-wp}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Nviews&action=edit nviews]<br>
+[[MediaWiki_talk:Nviews|Talk]]
+</td><td>
+$1 views
+</td><td>
+{{int:Nviews}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ok&action=edit ok]<br>
+[[MediaWiki_talk:Ok|Talk]]
+</td><td>
+OK
+</td><td>
+{{int:Ok}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Oldpassword&action=edit oldpassword]<br>
+[[MediaWiki_talk:Oldpassword|Talk]]
+</td><td>
+Old password
+</td><td>
+{{int:Oldpassword}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Orig&action=edit orig]<br>
+[[MediaWiki_talk:Orig|Talk]]
+</td><td>
+orig
+</td><td>
+{{int:Orig}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Orphans&action=edit orphans]<br>
+[[MediaWiki_talk:Orphans|Talk]]
+</td><td>
+Orphaned pages
+</td><td>
+{{int:Orphans}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Othercontribs&action=edit othercontribs]<br>
+[[MediaWiki_talk:Othercontribs|Talk]]
+</td><td>
+Based on work by $1.
+</td><td>
+{{int:Othercontribs}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Otherlanguages&action=edit otherlanguages]<br>
+[[MediaWiki_talk:Otherlanguages|Talk]]
+</td><td>
+Other languages
+</td><td>
+{{int:Otherlanguages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Pagemovedsub&action=edit pagemovedsub]<br>
+[[MediaWiki_talk:Pagemovedsub|Talk]]
+</td><td>
+Move succeeded
+</td><td>
+{{int:Pagemovedsub}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Pagemovedtext&action=edit pagemovedtext]<br>
+[[MediaWiki_talk:Pagemovedtext|Talk]]
+</td><td>
+Page &quot;&#91;&#91;$1]]&quot; moved to &quot;&#91;&#91;$2]]&quot;.
+</td><td>
+{{int:Pagemovedtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Pagetitle&action=edit pagetitle]<br>
+[[MediaWiki_talk:Pagetitle|Talk]]
+</td><td>
+$1 - Wiktionary
+</td><td>
+{{int:Pagetitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Passwordremindertext&action=edit passwordremindertext]<br>
+[[MediaWiki_talk:Passwordremindertext|Talk]]
+</td><td>
+Someone (probably you, from IP address $1)
+requested that we send you a new Wiktionary login password.
+The password for user &quot;$2&quot; is now &quot;$3&quot;.
+You should log in and change your password now.
+</td><td>
+{{int:Passwordremindertext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Passwordremindertitle&action=edit passwordremindertitle]<br>
+[[MediaWiki_talk:Passwordremindertitle|Talk]]
+</td><td>
+Password reminder from Wiktionary
+</td><td>
+{{int:Passwordremindertitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Passwordsent&action=edit passwordsent]<br>
+[[MediaWiki_talk:Passwordsent|Talk]]
+</td><td>
+A new password has been sent to the e-mail address
+registered for &quot;$1&quot;.
+Please log in again after you receive it.
+</td><td>
+{{int:Passwordsent}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Perfcached&action=edit perfcached]<br>
+[[MediaWiki_talk:Perfcached|Talk]]
+</td><td>
+The following data is cached and may not be completely up to date:
+</td><td>
+{{int:Perfcached}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Perfdisabled&action=edit perfdisabled]<br>
+[[MediaWiki_talk:Perfdisabled|Talk]]
+</td><td>
+Sorry! This feature has been temporarily disabled
+because it slows the database down to the point that no one can use
+the wiki.
+</td><td>
+{{int:Perfdisabled}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Perfdisabledsub&action=edit perfdisabledsub]<br>
+[[MediaWiki_talk:Perfdisabledsub|Talk]]
+</td><td>
+Here&#39;s a saved copy from $1:
+</td><td>
+{{int:Perfdisabledsub}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Personaltools&action=edit personaltools]<br>
+[[MediaWiki_talk:Personaltools|Talk]]
+</td><td>
+Personal tools
+</td><td>
+{{int:Personaltools}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Popularpages&action=edit popularpages]<br>
+[[MediaWiki_talk:Popularpages|Talk]]
+</td><td>
+Popular pages
+</td><td>
+{{int:Popularpages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Portal&action=edit portal]<br>
+[[MediaWiki_talk:Portal|Talk]]
+</td><td>
+Community portal
+</td><td>
+{{int:Portal}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Portal-url&action=edit portal-url]<br>
+[[MediaWiki_talk:Portal-url|Talk]]
+</td><td>
+Wiktionary:Community Portal
+</td><td>
+{{int:Portal-url}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Postcomment&action=edit postcomment]<br>
+[[MediaWiki_talk:Postcomment|Talk]]
+</td><td>
+Post a comment
+</td><td>
+{{int:Postcomment}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Poweredby&action=edit poweredby]<br>
+[[MediaWiki_talk:Poweredby|Talk]]
+</td><td>
+Wiktionary is powered by &#91;http&#58;//www.mediawiki.org/ MediaWiki], an open source wiki engine.
+</td><td>
+{{int:Poweredby}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Powersearch&action=edit powersearch]<br>
+[[MediaWiki_talk:Powersearch|Talk]]
+</td><td>
+Search
+</td><td>
+{{int:Powersearch}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Powersearchtext&action=edit powersearchtext]<br>
+[[MediaWiki_talk:Powersearchtext|Talk]]
+</td><td>
+
+Search in namespaces :&lt;br /&gt;
+$1&lt;br /&gt;
+$2 List redirects &amp;nbsp; Search for $3 $9
+</td><td>
+{{int:Powersearchtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Preferences&action=edit preferences]<br>
+[[MediaWiki_talk:Preferences|Talk]]
+</td><td>
+Preferences
+</td><td>
+{{int:Preferences}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-help-userdata&action=edit prefs-help-userdata]<br>
+[[MediaWiki_talk:Prefs-help-userdata|Talk]]
+</td><td>
+* &lt;strong&gt;Real name&lt;/strong&gt; (optional): if you choose to provide it this will be used for giving you attribution for your work.&lt;br/&gt;
+* &lt;strong&gt;Email&lt;/strong&gt; (optional): Enables people to contact you through the website without you having to reveal your
+email address to them, and it can be used to send you a new password if you forget it.
+</td><td>
+{{int:Prefs-help-userdata}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-misc&action=edit prefs-misc]<br>
+[[MediaWiki_talk:Prefs-misc|Talk]]
+</td><td>
+Misc settings
+</td><td>
+{{int:Prefs-misc}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-personal&action=edit prefs-personal]<br>
+[[MediaWiki_talk:Prefs-personal|Talk]]
+</td><td>
+User data
+</td><td>
+{{int:Prefs-personal}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefs-rc&action=edit prefs-rc]<br>
+[[MediaWiki_talk:Prefs-rc|Talk]]
+</td><td>
+Recent changes and stub display
+</td><td>
+{{int:Prefs-rc}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefslogintext&action=edit prefslogintext]<br>
+[[MediaWiki_talk:Prefslogintext|Talk]]
+</td><td>
+You are logged in as &quot;$1&quot;.
+Your internal ID number is $2.
+
+See &#91;&#91;Wiktionary:User preferences help]] for help deciphering the options.
+</td><td>
+{{int:Prefslogintext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefsnologin&action=edit prefsnologin]<br>
+[[MediaWiki_talk:Prefsnologin|Talk]]
+</td><td>
+Not logged in
+</td><td>
+{{int:Prefsnologin}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefsnologintext&action=edit prefsnologintext]<br>
+[[MediaWiki_talk:Prefsnologintext|Talk]]
+</td><td>
+You must be &lt;a href=&quot;/wiki/Special:Userlogin&quot;&gt;logged in&lt;/a&gt;
+to set user preferences.
+</td><td>
+{{int:Prefsnologintext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prefsreset&action=edit prefsreset]<br>
+[[MediaWiki_talk:Prefsreset|Talk]]
+</td><td>
+Preferences have been reset from storage.
+</td><td>
+{{int:Prefsreset}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Preview&action=edit preview]<br>
+[[MediaWiki_talk:Preview|Talk]]
+</td><td>
+Preview
+</td><td>
+{{int:Preview}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Previewconflict&action=edit previewconflict]<br>
+[[MediaWiki_talk:Previewconflict|Talk]]
+</td><td>
+This preview reflects the text in the upper
+text editing area as it will appear if you choose to save.
+</td><td>
+{{int:Previewconflict}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Previewnote&action=edit previewnote]<br>
+[[MediaWiki_talk:Previewnote|Talk]]
+</td><td>
+Remember that this is only a preview, and has not yet been saved!
+</td><td>
+{{int:Previewnote}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Prevn&action=edit prevn]<br>
+[[MediaWiki_talk:Prevn|Talk]]
+</td><td>
+previous $1
+</td><td>
+{{int:Prevn}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Printableversion&action=edit printableversion]<br>
+[[MediaWiki_talk:Printableversion|Talk]]
+</td><td>
+Printable version
+</td><td>
+{{int:Printableversion}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Printsubtitle&action=edit printsubtitle]<br>
+[[MediaWiki_talk:Printsubtitle|Talk]]
+</td><td>
+(From http&#58;//tl.wiktionary.org)
+</td><td>
+{{int:Printsubtitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protect&action=edit protect]<br>
+[[MediaWiki_talk:Protect|Talk]]
+</td><td>
+Protect
+</td><td>
+{{int:Protect}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectcomment&action=edit protectcomment]<br>
+[[MediaWiki_talk:Protectcomment|Talk]]
+</td><td>
+Reason for protecting
+</td><td>
+{{int:Protectcomment}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedarticle&action=edit protectedarticle]<br>
+[[MediaWiki_talk:Protectedarticle|Talk]]
+</td><td>
+protected &#91;&#91;$1]]
+</td><td>
+{{int:Protectedarticle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedpage&action=edit protectedpage]<br>
+[[MediaWiki_talk:Protectedpage|Talk]]
+</td><td>
+Protected page
+</td><td>
+{{int:Protectedpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedpagewarning&action=edit protectedpagewarning]<br>
+[[MediaWiki_talk:Protectedpagewarning|Talk]]
+</td><td>
+WARNING: This page has been locked so that only
+users with sysop privileges can edit it. Be sure you are following the
+&lt;a href=&#39;/w/wiki.phtml/Wiktionary:Protected_page_guidelines&#39;&gt;protected page
+guidelines&lt;/a&gt;.
+</td><td>
+{{int:Protectedpagewarning}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectedtext&action=edit protectedtext]<br>
+[[MediaWiki_talk:Protectedtext|Talk]]
+</td><td>
+This page has been locked to prevent editing; there are
+a number of reasons why this may be so, please see
+&#91;&#91;Wiktionary:Protected page]].
+
+You can view and copy the source of this page:
+</td><td>
+{{int:Protectedtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectlogpage&action=edit protectlogpage]<br>
+[[MediaWiki_talk:Protectlogpage|Talk]]
+</td><td>
+Protection_log
+</td><td>
+{{int:Protectlogpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectlogtext&action=edit protectlogtext]<br>
+[[MediaWiki_talk:Protectlogtext|Talk]]
+</td><td>
+Below is a list of page locks/unlocks.
+See &#91;&#91;Wiktionary:Protected page]] for more information.
+</td><td>
+{{int:Protectlogtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectpage&action=edit protectpage]<br>
+[[MediaWiki_talk:Protectpage|Talk]]
+</td><td>
+Protect page
+</td><td>
+{{int:Protectpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectreason&action=edit protectreason]<br>
+[[MediaWiki_talk:Protectreason|Talk]]
+</td><td>
+(give a reason)
+</td><td>
+{{int:Protectreason}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectsub&action=edit protectsub]<br>
+[[MediaWiki_talk:Protectsub|Talk]]
+</td><td>
+(Protecting &quot;$1&quot;)
+</td><td>
+{{int:Protectsub}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Protectthispage&action=edit protectthispage]<br>
+[[MediaWiki_talk:Protectthispage|Talk]]
+</td><td>
+Protect this page
+</td><td>
+{{int:Protectthispage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Proxyblocker&action=edit proxyblocker]<br>
+[[MediaWiki_talk:Proxyblocker|Talk]]
+</td><td>
+Proxy blocker
+</td><td>
+{{int:Proxyblocker}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Proxyblockreason&action=edit proxyblockreason]<br>
+[[MediaWiki_talk:Proxyblockreason|Talk]]
+</td><td>
+Your IP address has been blocked because it is an open proxy. Please contact your Internet service provider or tech support and inform them of this serious security problem.
+</td><td>
+{{int:Proxyblockreason}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Proxyblocksuccess&action=edit proxyblocksuccess]<br>
+[[MediaWiki_talk:Proxyblocksuccess|Talk]]
+</td><td>
+Done.
+
+</td><td>
+{{int:Proxyblocksuccess}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbbrowse&action=edit qbbrowse]<br>
+[[MediaWiki_talk:Qbbrowse|Talk]]
+</td><td>
+Browse
+</td><td>
+{{int:Qbbrowse}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbedit&action=edit qbedit]<br>
+[[MediaWiki_talk:Qbedit|Talk]]
+</td><td>
+Edit
+</td><td>
+{{int:Qbedit}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbfind&action=edit qbfind]<br>
+[[MediaWiki_talk:Qbfind|Talk]]
+</td><td>
+Find
+</td><td>
+{{int:Qbfind}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbmyoptions&action=edit qbmyoptions]<br>
+[[MediaWiki_talk:Qbmyoptions|Talk]]
+</td><td>
+My pages
+</td><td>
+{{int:Qbmyoptions}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbpageinfo&action=edit qbpageinfo]<br>
+[[MediaWiki_talk:Qbpageinfo|Talk]]
+</td><td>
+Context
+</td><td>
+{{int:Qbpageinfo}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbpageoptions&action=edit qbpageoptions]<br>
+[[MediaWiki_talk:Qbpageoptions|Talk]]
+</td><td>
+This page
+</td><td>
+{{int:Qbpageoptions}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbsettings&action=edit qbsettings]<br>
+[[MediaWiki_talk:Qbsettings|Talk]]
+</td><td>
+Quickbar settings
+</td><td>
+{{int:Qbsettings}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Qbspecialpages&action=edit qbspecialpages]<br>
+[[MediaWiki_talk:Qbspecialpages|Talk]]
+</td><td>
+Special pages
+</td><td>
+{{int:Qbspecialpages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Querybtn&action=edit querybtn]<br>
+[[MediaWiki_talk:Querybtn|Talk]]
+</td><td>
+Submit query
+</td><td>
+{{int:Querybtn}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Querysuccessful&action=edit querysuccessful]<br>
+[[MediaWiki_talk:Querysuccessful|Talk]]
+</td><td>
+Query successful
+</td><td>
+{{int:Querysuccessful}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Randompage&action=edit randompage]<br>
+[[MediaWiki_talk:Randompage|Talk]]
+</td><td>
+Random page
+</td><td>
+{{int:Randompage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Range_block_disabled&action=edit range_block_disabled]<br>
+[[MediaWiki_talk:Range_block_disabled|Talk]]
+</td><td>
+The sysop ability to create range blocks is disabled.
+</td><td>
+{{int:Range_block_disabled}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rchide&action=edit rchide]<br>
+[[MediaWiki_talk:Rchide|Talk]]
+</td><td>
+in $4 form; $1 minor edits; $2 secondary namespaces; $3 multiple edits.
+</td><td>
+{{int:Rchide}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rclinks&action=edit rclinks]<br>
+[[MediaWiki_talk:Rclinks|Talk]]
+</td><td>
+Show last $1 changes in last $2 days&lt;br /&gt;$3
+</td><td>
+{{int:Rclinks}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rclistfrom&action=edit rclistfrom]<br>
+[[MediaWiki_talk:Rclistfrom|Talk]]
+</td><td>
+Show new changes starting from $1
+</td><td>
+{{int:Rclistfrom}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcliu&action=edit rcliu]<br>
+[[MediaWiki_talk:Rcliu|Talk]]
+</td><td>
+; $1 edits from logged in users
+</td><td>
+{{int:Rcliu}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcloaderr&action=edit rcloaderr]<br>
+[[MediaWiki_talk:Rcloaderr|Talk]]
+</td><td>
+Loading recent changes
+</td><td>
+{{int:Rcloaderr}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rclsub&action=edit rclsub]<br>
+[[MediaWiki_talk:Rclsub|Talk]]
+</td><td>
+(to pages linked from &quot;$1&quot;)
+</td><td>
+{{int:Rclsub}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcnote&action=edit rcnote]<br>
+[[MediaWiki_talk:Rcnote|Talk]]
+</td><td>
+Below are the last &lt;strong&gt;$1&lt;/strong&gt; changes in last &lt;strong&gt;$2&lt;/strong&gt; days.
+</td><td>
+{{int:Rcnote}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rcnotefrom&action=edit rcnotefrom]<br>
+[[MediaWiki_talk:Rcnotefrom|Talk]]
+</td><td>
+Below are the changes since &lt;b&gt;$2&lt;/b&gt; (up to &lt;b&gt;$1&lt;/b&gt; shown).
+</td><td>
+{{int:Rcnotefrom}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Readonly&action=edit readonly]<br>
+[[MediaWiki_talk:Readonly|Talk]]
+</td><td>
+Database locked
+</td><td>
+{{int:Readonly}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Readonlytext&action=edit readonlytext]<br>
+[[MediaWiki_talk:Readonlytext|Talk]]
+</td><td>
+The database is currently locked to new
+entries and other modifications, probably for routine database maintenance,
+after which it will be back to normal.
+The administrator who locked it offered this explanation:
+&lt;p&gt;$1
+</td><td>
+{{int:Readonlytext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Readonlywarning&action=edit readonlywarning]<br>
+[[MediaWiki_talk:Readonlywarning|Talk]]
+</td><td>
+WARNING: The database has been locked for maintenance,
+so you will not be able to save your edits right now. You may wish to cut-n-paste
+the text into a text file and save it for later.
+</td><td>
+{{int:Readonlywarning}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchanges&action=edit recentchanges]<br>
+[[MediaWiki_talk:Recentchanges|Talk]]
+</td><td>
+Recent changes
+</td><td>
+{{int:Recentchanges}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchangescount&action=edit recentchangescount]<br>
+[[MediaWiki_talk:Recentchangescount|Talk]]
+</td><td>
+Number of titles in recent changes
+</td><td>
+{{int:Recentchangescount}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchangeslinked&action=edit recentchangeslinked]<br>
+[[MediaWiki_talk:Recentchangeslinked|Talk]]
+</td><td>
+Related changes
+</td><td>
+{{int:Recentchangeslinked}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Recentchangestext&action=edit recentchangestext]<br>
+[[MediaWiki_talk:Recentchangestext|Talk]]
+</td><td>
+Track the most recent changes to the wiki on this page.
+</td><td>
+{{int:Recentchangestext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Redirectedfrom&action=edit redirectedfrom]<br>
+[[MediaWiki_talk:Redirectedfrom|Talk]]
+</td><td>
+(Redirected from $1)
+</td><td>
+{{int:Redirectedfrom}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Remembermypassword&action=edit remembermypassword]<br>
+[[MediaWiki_talk:Remembermypassword|Talk]]
+</td><td>
+Remember my password across sessions.
+</td><td>
+{{int:Remembermypassword}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removechecked&action=edit removechecked]<br>
+[[MediaWiki_talk:Removechecked|Talk]]
+</td><td>
+Remove checked items from watchlist
+</td><td>
+{{int:Removechecked}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removedwatch&action=edit removedwatch]<br>
+[[MediaWiki_talk:Removedwatch|Talk]]
+</td><td>
+Removed from watchlist
+</td><td>
+{{int:Removedwatch}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removedwatchtext&action=edit removedwatchtext]<br>
+[[MediaWiki_talk:Removedwatchtext|Talk]]
+</td><td>
+The page &quot;$1&quot; has been removed from your watchlist.
+</td><td>
+{{int:Removedwatchtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Removingchecked&action=edit removingchecked]<br>
+[[MediaWiki_talk:Removingchecked|Talk]]
+</td><td>
+Removing requested items from watchlist...
+</td><td>
+{{int:Removingchecked}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Resetprefs&action=edit resetprefs]<br>
+[[MediaWiki_talk:Resetprefs|Talk]]
+</td><td>
+Reset preferences
+</td><td>
+{{int:Resetprefs}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Restorelink&action=edit restorelink]<br>
+[[MediaWiki_talk:Restorelink|Talk]]
+</td><td>
+$1 deleted edits
+</td><td>
+{{int:Restorelink}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Resultsperpage&action=edit resultsperpage]<br>
+[[MediaWiki_talk:Resultsperpage|Talk]]
+</td><td>
+Hits to show per page
+</td><td>
+{{int:Resultsperpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Retrievedfrom&action=edit retrievedfrom]<br>
+[[MediaWiki_talk:Retrievedfrom|Talk]]
+</td><td>
+Retrieved from &quot;$1&quot;
+</td><td>
+{{int:Retrievedfrom}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Returnto&action=edit returnto]<br>
+[[MediaWiki_talk:Returnto|Talk]]
+</td><td>
+Return to $1.
+</td><td>
+{{int:Returnto}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Retypenew&action=edit retypenew]<br>
+[[MediaWiki_talk:Retypenew|Talk]]
+</td><td>
+Retype new password
+</td><td>
+{{int:Retypenew}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Reupload&action=edit reupload]<br>
+[[MediaWiki_talk:Reupload|Talk]]
+</td><td>
+Re-upload
+</td><td>
+{{int:Reupload}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Reuploaddesc&action=edit reuploaddesc]<br>
+[[MediaWiki_talk:Reuploaddesc|Talk]]
+</td><td>
+Return to the upload form.
+</td><td>
+{{int:Reuploaddesc}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Reverted&action=edit reverted]<br>
+[[MediaWiki_talk:Reverted|Talk]]
+</td><td>
+Reverted to earlier revision
+</td><td>
+{{int:Reverted}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revertimg&action=edit revertimg]<br>
+[[MediaWiki_talk:Revertimg|Talk]]
+</td><td>
+rev
+</td><td>
+{{int:Revertimg}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revertpage&action=edit revertpage]<br>
+[[MediaWiki_talk:Revertpage|Talk]]
+</td><td>
+Reverted edit of $2, changed back to last version by $1
+</td><td>
+{{int:Revertpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revhistory&action=edit revhistory]<br>
+[[MediaWiki_talk:Revhistory|Talk]]
+</td><td>
+Revision history
+</td><td>
+{{int:Revhistory}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revisionasof&action=edit revisionasof]<br>
+[[MediaWiki_talk:Revisionasof|Talk]]
+</td><td>
+Revision as of $1
+</td><td>
+{{int:Revisionasof}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revnotfound&action=edit revnotfound]<br>
+[[MediaWiki_talk:Revnotfound|Talk]]
+</td><td>
+Revision not found
+</td><td>
+{{int:Revnotfound}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Revnotfoundtext&action=edit revnotfoundtext]<br>
+[[MediaWiki_talk:Revnotfoundtext|Talk]]
+</td><td>
+The old revision of the page you asked for could not be found.
+Please check the URL you used to access this page.
+
+</td><td>
+{{int:Revnotfoundtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rfcurl&action=edit rfcurl]<br>
+[[MediaWiki_talk:Rfcurl|Talk]]
+</td><td>
+http&#58;//www.faqs.org/rfcs/rfc$1.html
+</td><td>
+{{int:Rfcurl}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rights&action=edit rights]<br>
+[[MediaWiki_talk:Rights|Talk]]
+</td><td>
+Rights:
+</td><td>
+{{int:Rights}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollback&action=edit rollback]<br>
+[[MediaWiki_talk:Rollback|Talk]]
+</td><td>
+Roll back edits
+</td><td>
+{{int:Rollback}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollback_short&action=edit rollback_short]<br>
+[[MediaWiki_talk:Rollback_short|Talk]]
+</td><td>
+Rollback
+</td><td>
+{{int:Rollback_short}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollbackfailed&action=edit rollbackfailed]<br>
+[[MediaWiki_talk:Rollbackfailed|Talk]]
+</td><td>
+Rollback failed
+</td><td>
+{{int:Rollbackfailed}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rollbacklink&action=edit rollbacklink]<br>
+[[MediaWiki_talk:Rollbacklink|Talk]]
+</td><td>
+rollback
+</td><td>
+{{int:Rollbacklink}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Rows&action=edit rows]<br>
+[[MediaWiki_talk:Rows|Talk]]
+</td><td>
+Rows
+</td><td>
+{{int:Rows}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Savearticle&action=edit savearticle]<br>
+[[MediaWiki_talk:Savearticle|Talk]]
+</td><td>
+Save page
+</td><td>
+{{int:Savearticle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Savedprefs&action=edit savedprefs]<br>
+[[MediaWiki_talk:Savedprefs|Talk]]
+</td><td>
+Your preferences have been saved.
+</td><td>
+{{int:Savedprefs}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Savefile&action=edit savefile]<br>
+[[MediaWiki_talk:Savefile|Talk]]
+</td><td>
+Save file
+</td><td>
+{{int:Savefile}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Saveprefs&action=edit saveprefs]<br>
+[[MediaWiki_talk:Saveprefs|Talk]]
+</td><td>
+Save preferences
+</td><td>
+{{int:Saveprefs}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Search&action=edit search]<br>
+[[MediaWiki_talk:Search|Talk]]
+</td><td>
+Search
+</td><td>
+{{int:Search}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchdisabled&action=edit searchdisabled]<br>
+[[MediaWiki_talk:Searchdisabled|Talk]]
+</td><td>
+&lt;p&gt;Sorry! Full text search has been disabled temporarily, for performance reasons. In the meantime, you can use the Google search below, which may be out of date.&lt;/p&gt;
+</td><td>
+{{int:Searchdisabled}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchhelppage&action=edit searchhelppage]<br>
+[[MediaWiki_talk:Searchhelppage|Talk]]
+</td><td>
+Wiktionary:Searching
+</td><td>
+{{int:Searchhelppage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchingwikipedia&action=edit searchingwikipedia]<br>
+[[MediaWiki_talk:Searchingwikipedia|Talk]]
+</td><td>
+Searching Wiktionary
+</td><td>
+{{int:Searchingwikipedia}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchquery&action=edit searchquery]<br>
+[[MediaWiki_talk:Searchquery|Talk]]
+</td><td>
+For query &quot;$1&quot;
+</td><td>
+{{int:Searchquery}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchresults&action=edit searchresults]<br>
+[[MediaWiki_talk:Searchresults|Talk]]
+</td><td>
+Search results
+</td><td>
+{{int:Searchresults}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchresultshead&action=edit searchresultshead]<br>
+[[MediaWiki_talk:Searchresultshead|Talk]]
+</td><td>
+Search result settings
+</td><td>
+{{int:Searchresultshead}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Searchresulttext&action=edit searchresulttext]<br>
+[[MediaWiki_talk:Searchresulttext|Talk]]
+</td><td>
+For more information about searching Wiktionary, see $1.
+</td><td>
+{{int:Searchresulttext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sectionedit&action=edit sectionedit]<br>
+[[MediaWiki_talk:Sectionedit|Talk]]
+</td><td>
+ (section)
+</td><td>
+{{int:Sectionedit}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selectnewerversionfordiff&action=edit selectnewerversionfordiff]<br>
+[[MediaWiki_talk:Selectnewerversionfordiff|Talk]]
+</td><td>
+Select a newer version for comparison
+</td><td>
+{{int:Selectnewerversionfordiff}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selectolderversionfordiff&action=edit selectolderversionfordiff]<br>
+[[MediaWiki_talk:Selectolderversionfordiff|Talk]]
+</td><td>
+Select an older version for comparison
+</td><td>
+{{int:Selectolderversionfordiff}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selectonly&action=edit selectonly]<br>
+[[MediaWiki_talk:Selectonly|Talk]]
+</td><td>
+Only read-only queries are allowed.
+</td><td>
+{{int:Selectonly}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selflinks&action=edit selflinks]<br>
+[[MediaWiki_talk:Selflinks|Talk]]
+</td><td>
+Pages with Self Links
+</td><td>
+{{int:Selflinks}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Selflinkstext&action=edit selflinkstext]<br>
+[[MediaWiki_talk:Selflinkstext|Talk]]
+</td><td>
+The following pages contain a link to themselves, which they should not.
+</td><td>
+{{int:Selflinkstext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Seriousxhtmlerrors&action=edit seriousxhtmlerrors]<br>
+[[MediaWiki_talk:Seriousxhtmlerrors|Talk]]
+</td><td>
+There were serious xhtml markup errors detected by tidy.
+</td><td>
+{{int:Seriousxhtmlerrors}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Servertime&action=edit servertime]<br>
+[[MediaWiki_talk:Servertime|Talk]]
+</td><td>
+Server time is now
+</td><td>
+{{int:Servertime}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Set_rights_fail&action=edit set_rights_fail]<br>
+[[MediaWiki_talk:Set_rights_fail|Talk]]
+</td><td>
+&lt;b&gt;User rights for &quot;$1&quot; could not be set. (Did you enter the name correctly?)&lt;/b&gt;
+</td><td>
+{{int:Set_rights_fail}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Set_user_rights&action=edit set_user_rights]<br>
+[[MediaWiki_talk:Set_user_rights|Talk]]
+</td><td>
+Set user rights
+</td><td>
+{{int:Set_user_rights}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Setbureaucratflag&action=edit setbureaucratflag]<br>
+[[MediaWiki_talk:Setbureaucratflag|Talk]]
+</td><td>
+Set bureaucrat flag
+</td><td>
+{{int:Setbureaucratflag}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Shortpages&action=edit shortpages]<br>
+[[MediaWiki_talk:Shortpages|Talk]]
+</td><td>
+Short pages
+</td><td>
+{{int:Shortpages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Show&action=edit show]<br>
+[[MediaWiki_talk:Show|Talk]]
+</td><td>
+show
+</td><td>
+{{int:Show}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showhideminor&action=edit showhideminor]<br>
+[[MediaWiki_talk:Showhideminor|Talk]]
+</td><td>
+$1 minor edits &#124; $2 bots &#124; $3 logged in users
+</td><td>
+{{int:Showhideminor}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showingresults&action=edit showingresults]<br>
+[[MediaWiki_talk:Showingresults|Talk]]
+</td><td>
+Showing below &lt;b&gt;$1&lt;/b&gt; results starting with #&lt;b&gt;$2&lt;/b&gt;.
+</td><td>
+{{int:Showingresults}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showingresultsnum&action=edit showingresultsnum]<br>
+[[MediaWiki_talk:Showingresultsnum|Talk]]
+</td><td>
+Showing below &lt;b&gt;$3&lt;/b&gt; results starting with #&lt;b&gt;$2&lt;/b&gt;.
+</td><td>
+{{int:Showingresultsnum}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showlast&action=edit showlast]<br>
+[[MediaWiki_talk:Showlast|Talk]]
+</td><td>
+Show last $1 images sorted $2.
+</td><td>
+{{int:Showlast}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showpreview&action=edit showpreview]<br>
+[[MediaWiki_talk:Showpreview|Talk]]
+</td><td>
+Show preview
+</td><td>
+{{int:Showpreview}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Showtoc&action=edit showtoc]<br>
+[[MediaWiki_talk:Showtoc|Talk]]
+</td><td>
+show
+</td><td>
+{{int:Showtoc}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sig_tip&action=edit sig_tip]<br>
+[[MediaWiki_talk:Sig_tip|Talk]]
+</td><td>
+Your signature with timestamp
+</td><td>
+{{int:Sig_tip}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitestats&action=edit sitestats]<br>
+[[MediaWiki_talk:Sitestats|Talk]]
+</td><td>
+Site statistics
+</td><td>
+{{int:Sitestats}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitestatstext&action=edit sitestatstext]<br>
+[[MediaWiki_talk:Sitestatstext|Talk]]
+</td><td>
+There are &#39;&#39;&#39;$1&#39;&#39;&#39; total pages in the database.
+This includes &quot;talk&quot; pages, pages about Wiktionary, minimal &quot;stub&quot;
+pages, redirects, and others that probably don&#39;t qualify as content pages.
+Excluding those, there are &#39;&#39;&#39;$2&#39;&#39;&#39; pages that are probably legitimate
+content pages.
+
+There have been a total of &#39;&#39;&#39;$3&#39;&#39;&#39; page views, and &#39;&#39;&#39;$4&#39;&#39;&#39; page edits
+since the wiki was setup.
+That comes to &#39;&#39;&#39;$5&#39;&#39;&#39; average edits per page, and &#39;&#39;&#39;$6&#39;&#39;&#39; views per edit.
+</td><td>
+{{int:Sitestatstext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitesubtitle&action=edit sitesubtitle]<br>
+[[MediaWiki_talk:Sitesubtitle|Talk]]
+</td><td>
+The Free Encyclopedia
+</td><td>
+{{int:Sitesubtitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitesupport&action=edit sitesupport]<br>
+[[MediaWiki_talk:Sitesupport|Talk]]
+</td><td>
+Donations
+</td><td>
+{{int:Sitesupport}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sitetitle&action=edit sitetitle]<br>
+[[MediaWiki_talk:Sitetitle|Talk]]
+</td><td>
+Wiktionary
+</td><td>
+{{int:Sitetitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Siteuser&action=edit siteuser]<br>
+[[MediaWiki_talk:Siteuser|Talk]]
+</td><td>
+Wiktionary user $1
+</td><td>
+{{int:Siteuser}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Siteusers&action=edit siteusers]<br>
+[[MediaWiki_talk:Siteusers|Talk]]
+</td><td>
+Wiktionary user(s) $1
+</td><td>
+{{int:Siteusers}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Skin&action=edit skin]<br>
+[[MediaWiki_talk:Skin|Talk]]
+</td><td>
+Skin
+</td><td>
+{{int:Skin}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Spamprotectiontext&action=edit spamprotectiontext]<br>
+[[MediaWiki_talk:Spamprotectiontext|Talk]]
+</td><td>
+The page you wanted to save was blocked by the spam filter. This is probably caused by a link to an external site.
+
+You might want to check the following regular expression for patterns that are currently blocked:
+</td><td>
+{{int:Spamprotectiontext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Spamprotectiontitle&action=edit spamprotectiontitle]<br>
+[[MediaWiki_talk:Spamprotectiontitle|Talk]]
+</td><td>
+Spam protection filter
+</td><td>
+{{int:Spamprotectiontitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Specialpage&action=edit specialpage]<br>
+[[MediaWiki_talk:Specialpage|Talk]]
+</td><td>
+Special Page
+</td><td>
+{{int:Specialpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Specialpages&action=edit specialpages]<br>
+[[MediaWiki_talk:Specialpages|Talk]]
+</td><td>
+Special pages
+</td><td>
+{{int:Specialpages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Spheading&action=edit spheading]<br>
+[[MediaWiki_talk:Spheading|Talk]]
+</td><td>
+Special pages for all users
+</td><td>
+{{int:Spheading}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sqlislogged&action=edit sqlislogged]<br>
+[[MediaWiki_talk:Sqlislogged|Talk]]
+</td><td>
+Please note that all queries are logged.
+</td><td>
+{{int:Sqlislogged}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sqlquery&action=edit sqlquery]<br>
+[[MediaWiki_talk:Sqlquery|Talk]]
+</td><td>
+Enter query
+</td><td>
+{{int:Sqlquery}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Statistics&action=edit statistics]<br>
+[[MediaWiki_talk:Statistics|Talk]]
+</td><td>
+Statistics
+</td><td>
+{{int:Statistics}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Storedversion&action=edit storedversion]<br>
+[[MediaWiki_talk:Storedversion|Talk]]
+</td><td>
+Stored version
+</td><td>
+{{int:Storedversion}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Stubthreshold&action=edit stubthreshold]<br>
+[[MediaWiki_talk:Stubthreshold|Talk]]
+</td><td>
+Threshold for stub display
+</td><td>
+{{int:Stubthreshold}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Subcategories&action=edit subcategories]<br>
+[[MediaWiki_talk:Subcategories|Talk]]
+</td><td>
+Subcategories
+</td><td>
+{{int:Subcategories}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Subject&action=edit subject]<br>
+[[MediaWiki_talk:Subject|Talk]]
+</td><td>
+Subject/headline
+</td><td>
+{{int:Subject}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Subjectpage&action=edit subjectpage]<br>
+[[MediaWiki_talk:Subjectpage|Talk]]
+</td><td>
+View subject
+</td><td>
+{{int:Subjectpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Successfulupload&action=edit successfulupload]<br>
+[[MediaWiki_talk:Successfulupload|Talk]]
+</td><td>
+Successful upload
+</td><td>
+{{int:Successfulupload}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Summary&action=edit summary]<br>
+[[MediaWiki_talk:Summary|Talk]]
+</td><td>
+Summary
+</td><td>
+{{int:Summary}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sysopspheading&action=edit sysopspheading]<br>
+[[MediaWiki_talk:Sysopspheading|Talk]]
+</td><td>
+For sysop use only
+</td><td>
+{{int:Sysopspheading}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sysoptext&action=edit sysoptext]<br>
+[[MediaWiki_talk:Sysoptext|Talk]]
+</td><td>
+The action you have requested can only be
+performed by users with &quot;sysop&quot; status.
+See $1.
+</td><td>
+{{int:Sysoptext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Sysoptitle&action=edit sysoptitle]<br>
+[[MediaWiki_talk:Sysoptitle|Talk]]
+</td><td>
+Sysop access required
+</td><td>
+{{int:Sysoptitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tableform&action=edit tableform]<br>
+[[MediaWiki_talk:Tableform|Talk]]
+</td><td>
+table
+</td><td>
+{{int:Tableform}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talk&action=edit talk]<br>
+[[MediaWiki_talk:Talk|Talk]]
+</td><td>
+Discussion
+</td><td>
+{{int:Talk}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkexists&action=edit talkexists]<br>
+[[MediaWiki_talk:Talkexists|Talk]]
+</td><td>
+The page itself was moved successfully, but the
+talk page could not be moved because one already exists at the new
+title. Please merge them manually.
+</td><td>
+{{int:Talkexists}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpage&action=edit talkpage]<br>
+[[MediaWiki_talk:Talkpage|Talk]]
+</td><td>
+Discuss this page
+</td><td>
+{{int:Talkpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpagemoved&action=edit talkpagemoved]<br>
+[[MediaWiki_talk:Talkpagemoved|Talk]]
+</td><td>
+The corresponding talk page was also moved.
+</td><td>
+{{int:Talkpagemoved}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpagenotmoved&action=edit talkpagenotmoved]<br>
+[[MediaWiki_talk:Talkpagenotmoved|Talk]]
+</td><td>
+The corresponding talk page was &lt;strong&gt;not&lt;/strong&gt; moved.
+</td><td>
+{{int:Talkpagenotmoved}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Talkpagetext&action=edit talkpagetext]<br>
+[[MediaWiki_talk:Talkpagetext|Talk]]
+</td><td>
+&lt;!-- MediaWiki:talkpagetext --&gt;
+</td><td>
+{{int:Talkpagetext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Textboxsize&action=edit textboxsize]<br>
+[[MediaWiki_talk:Textboxsize|Talk]]
+</td><td>
+Textbox dimensions
+</td><td>
+{{int:Textboxsize}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Textmatches&action=edit textmatches]<br>
+[[MediaWiki_talk:Textmatches|Talk]]
+</td><td>
+Page text matches
+</td><td>
+{{int:Textmatches}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Thisisdeleted&action=edit thisisdeleted]<br>
+[[MediaWiki_talk:Thisisdeleted|Talk]]
+</td><td>
+View or restore $1?
+</td><td>
+{{int:Thisisdeleted}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Thumbnail-more&action=edit thumbnail-more]<br>
+[[MediaWiki_talk:Thumbnail-more|Talk]]
+</td><td>
+Enlarge
+</td><td>
+{{int:Thumbnail-more}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Timezonelegend&action=edit timezonelegend]<br>
+[[MediaWiki_talk:Timezonelegend|Talk]]
+</td><td>
+Time zone
+</td><td>
+{{int:Timezonelegend}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Timezoneoffset&action=edit timezoneoffset]<br>
+[[MediaWiki_talk:Timezoneoffset|Talk]]
+</td><td>
+Offset
+</td><td>
+{{int:Timezoneoffset}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Timezonetext&action=edit timezonetext]<br>
+[[MediaWiki_talk:Timezonetext|Talk]]
+</td><td>
+Enter number of hours your local time differs
+from server time (UTC).
+</td><td>
+{{int:Timezonetext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Titlematches&action=edit titlematches]<br>
+[[MediaWiki_talk:Titlematches|Talk]]
+</td><td>
+Article title matches
+</td><td>
+{{int:Titlematches}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Toc&action=edit toc]<br>
+[[MediaWiki_talk:Toc|Talk]]
+</td><td>
+Table of contents
+</td><td>
+{{int:Toc}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Toolbox&action=edit toolbox]<br>
+[[MediaWiki_talk:Toolbox|Talk]]
+</td><td>
+Toolbox
+</td><td>
+{{int:Toolbox}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-addsection&action=edit tooltip-addsection]<br>
+[[MediaWiki_talk:Tooltip-addsection|Talk]]
+</td><td>
+Add a comment to this page. &#91;alt-+]
+</td><td>
+{{int:Tooltip-addsection}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-anontalk&action=edit tooltip-anontalk]<br>
+[[MediaWiki_talk:Tooltip-anontalk|Talk]]
+</td><td>
+Discussion about edits from this ip address &#91;alt-n]
+</td><td>
+{{int:Tooltip-anontalk}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-anonuserpage&action=edit tooltip-anonuserpage]<br>
+[[MediaWiki_talk:Tooltip-anonuserpage|Talk]]
+</td><td>
+The user page for the ip you&#39;re editing as &#91;alt-.]
+</td><td>
+{{int:Tooltip-anonuserpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-article&action=edit tooltip-article]<br>
+[[MediaWiki_talk:Tooltip-article|Talk]]
+</td><td>
+View the content page &#91;alt-a]
+</td><td>
+{{int:Tooltip-article}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-atom&action=edit tooltip-atom]<br>
+[[MediaWiki_talk:Tooltip-atom|Talk]]
+</td><td>
+Atom feed for this page
+</td><td>
+{{int:Tooltip-atom}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-compareselectedversions&action=edit tooltip-compareselectedversions]<br>
+[[MediaWiki_talk:Tooltip-compareselectedversions|Talk]]
+</td><td>
+See the differences between the two selected versions of this page. &#91;alt-v]
+</td><td>
+{{int:Tooltip-compareselectedversions}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-contributions&action=edit tooltip-contributions]<br>
+[[MediaWiki_talk:Tooltip-contributions|Talk]]
+</td><td>
+View the list of contributions of this user
+</td><td>
+{{int:Tooltip-contributions}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-currentevents&action=edit tooltip-currentevents]<br>
+[[MediaWiki_talk:Tooltip-currentevents|Talk]]
+</td><td>
+Find background information on current events
+</td><td>
+{{int:Tooltip-currentevents}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-delete&action=edit tooltip-delete]<br>
+[[MediaWiki_talk:Tooltip-delete|Talk]]
+</td><td>
+Delete this page &#91;alt-d]
+</td><td>
+{{int:Tooltip-delete}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-edit&action=edit tooltip-edit]<br>
+[[MediaWiki_talk:Tooltip-edit|Talk]]
+</td><td>
+You can edit this page. Please use the preview button before saving. &#91;alt-e]
+</td><td>
+{{int:Tooltip-edit}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-emailuser&action=edit tooltip-emailuser]<br>
+[[MediaWiki_talk:Tooltip-emailuser|Talk]]
+</td><td>
+Send a mail to this user
+</td><td>
+{{int:Tooltip-emailuser}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-help&action=edit tooltip-help]<br>
+[[MediaWiki_talk:Tooltip-help|Talk]]
+</td><td>
+The place to find out.
+</td><td>
+{{int:Tooltip-help}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-history&action=edit tooltip-history]<br>
+[[MediaWiki_talk:Tooltip-history|Talk]]
+</td><td>
+Past versions of this page, &#91;alt-h]
+</td><td>
+{{int:Tooltip-history}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-login&action=edit tooltip-login]<br>
+[[MediaWiki_talk:Tooltip-login|Talk]]
+</td><td>
+You are encouraged to log in, it is not mandatory however. &#91;alt-o]
+</td><td>
+{{int:Tooltip-login}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-logout&action=edit tooltip-logout]<br>
+[[MediaWiki_talk:Tooltip-logout|Talk]]
+</td><td>
+Log out &#91;alt-o]
+</td><td>
+{{int:Tooltip-logout}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-mainpage&action=edit tooltip-mainpage]<br>
+[[MediaWiki_talk:Tooltip-mainpage|Talk]]
+</td><td>
+Visit the Main Page &#91;alt-z]
+</td><td>
+{{int:Tooltip-mainpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-minoredit&action=edit tooltip-minoredit]<br>
+[[MediaWiki_talk:Tooltip-minoredit|Talk]]
+</td><td>
+Mark this as a minor edit &#91;alt-i]
+</td><td>
+{{int:Tooltip-minoredit}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-move&action=edit tooltip-move]<br>
+[[MediaWiki_talk:Tooltip-move|Talk]]
+</td><td>
+Move this page &#91;alt-m]
+</td><td>
+{{int:Tooltip-move}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-mycontris&action=edit tooltip-mycontris]<br>
+[[MediaWiki_talk:Tooltip-mycontris|Talk]]
+</td><td>
+List of my contributions &#91;alt-y]
+</td><td>
+{{int:Tooltip-mycontris}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-mytalk&action=edit tooltip-mytalk]<br>
+[[MediaWiki_talk:Tooltip-mytalk|Talk]]
+</td><td>
+My talk page &#91;alt-n]
+</td><td>
+{{int:Tooltip-mytalk}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-nomove&action=edit tooltip-nomove]<br>
+[[MediaWiki_talk:Tooltip-nomove|Talk]]
+</td><td>
+You don&#39;t have the permissions to move this page
+</td><td>
+{{int:Tooltip-nomove}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-portal&action=edit tooltip-portal]<br>
+[[MediaWiki_talk:Tooltip-portal|Talk]]
+</td><td>
+About the project, what you can do, where to find things
+</td><td>
+{{int:Tooltip-portal}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-preferences&action=edit tooltip-preferences]<br>
+[[MediaWiki_talk:Tooltip-preferences|Talk]]
+</td><td>
+My preferences
+</td><td>
+{{int:Tooltip-preferences}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-preview&action=edit tooltip-preview]<br>
+[[MediaWiki_talk:Tooltip-preview|Talk]]
+</td><td>
+Preview your changes, please use this before saving! &#91;alt-p]
+</td><td>
+{{int:Tooltip-preview}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-protect&action=edit tooltip-protect]<br>
+[[MediaWiki_talk:Tooltip-protect|Talk]]
+</td><td>
+Protect this page &#91;alt-=]
+</td><td>
+{{int:Tooltip-protect}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-randompage&action=edit tooltip-randompage]<br>
+[[MediaWiki_talk:Tooltip-randompage|Talk]]
+</td><td>
+Load a random page &#91;alt-x]
+</td><td>
+{{int:Tooltip-randompage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-recentchanges&action=edit tooltip-recentchanges]<br>
+[[MediaWiki_talk:Tooltip-recentchanges|Talk]]
+</td><td>
+The list of recent changes in the wiki. &#91;alt-r]
+</td><td>
+{{int:Tooltip-recentchanges}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-recentchangeslinked&action=edit tooltip-recentchangeslinked]<br>
+[[MediaWiki_talk:Tooltip-recentchangeslinked|Talk]]
+</td><td>
+Recent changes in pages linking to this page &#91;alt-c]
+</td><td>
+{{int:Tooltip-recentchangeslinked}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-rss&action=edit tooltip-rss]<br>
+[[MediaWiki_talk:Tooltip-rss|Talk]]
+</td><td>
+RSS feed for this page
+</td><td>
+{{int:Tooltip-rss}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-save&action=edit tooltip-save]<br>
+[[MediaWiki_talk:Tooltip-save|Talk]]
+</td><td>
+Save your changes &#91;alt-s]
+</td><td>
+{{int:Tooltip-save}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-search&action=edit tooltip-search]<br>
+[[MediaWiki_talk:Tooltip-search|Talk]]
+</td><td>
+Search this wiki &#91;alt-f]
+</td><td>
+{{int:Tooltip-search}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-sitesupport&action=edit tooltip-sitesupport]<br>
+[[MediaWiki_talk:Tooltip-sitesupport|Talk]]
+</td><td>
+Support Wiktionary
+</td><td>
+{{int:Tooltip-sitesupport}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-specialpage&action=edit tooltip-specialpage]<br>
+[[MediaWiki_talk:Tooltip-specialpage|Talk]]
+</td><td>
+This is a special page, you can&#39;t edit the page itself.
+</td><td>
+{{int:Tooltip-specialpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-specialpages&action=edit tooltip-specialpages]<br>
+[[MediaWiki_talk:Tooltip-specialpages|Talk]]
+</td><td>
+List of all special pages &#91;alt-q]
+</td><td>
+{{int:Tooltip-specialpages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-talk&action=edit tooltip-talk]<br>
+[[MediaWiki_talk:Tooltip-talk|Talk]]
+</td><td>
+Discussion about the content page &#91;alt-t]
+</td><td>
+{{int:Tooltip-talk}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-undelete&action=edit tooltip-undelete]<br>
+[[MediaWiki_talk:Tooltip-undelete|Talk]]
+</td><td>
+Restore the $1 edits done to this page before it was deleted &#91;alt-d]
+</td><td>
+{{int:Tooltip-undelete}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-unwatch&action=edit tooltip-unwatch]<br>
+[[MediaWiki_talk:Tooltip-unwatch|Talk]]
+</td><td>
+Remove this page from your watchlist &#91;alt-w]
+</td><td>
+{{int:Tooltip-unwatch}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-upload&action=edit tooltip-upload]<br>
+[[MediaWiki_talk:Tooltip-upload|Talk]]
+</td><td>
+Upload images or media files &#91;alt-u]
+</td><td>
+{{int:Tooltip-upload}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-userpage&action=edit tooltip-userpage]<br>
+[[MediaWiki_talk:Tooltip-userpage|Talk]]
+</td><td>
+My user page &#91;alt-.]
+</td><td>
+{{int:Tooltip-userpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-viewsource&action=edit tooltip-viewsource]<br>
+[[MediaWiki_talk:Tooltip-viewsource|Talk]]
+</td><td>
+This page is protected. You can view its source. &#91;alt-e]
+</td><td>
+{{int:Tooltip-viewsource}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-watch&action=edit tooltip-watch]<br>
+[[MediaWiki_talk:Tooltip-watch|Talk]]
+</td><td>
+Add this page to your watchlist &#91;alt-w]
+</td><td>
+{{int:Tooltip-watch}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-watchlist&action=edit tooltip-watchlist]<br>
+[[MediaWiki_talk:Tooltip-watchlist|Talk]]
+</td><td>
+The list of pages you&#39;re monitoring for changes. &#91;alt-l]
+</td><td>
+{{int:Tooltip-watchlist}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Tooltip-whatlinkshere&action=edit tooltip-whatlinkshere]<br>
+[[MediaWiki_talk:Tooltip-whatlinkshere|Talk]]
+</td><td>
+List of all wiki pages that link here &#91;alt-b]
+</td><td>
+{{int:Tooltip-whatlinkshere}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uclinks&action=edit uclinks]<br>
+[[MediaWiki_talk:Uclinks|Talk]]
+</td><td>
+View the last $1 changes; view the last $2 days.
+</td><td>
+{{int:Uclinks}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Ucnote&action=edit ucnote]<br>
+[[MediaWiki_talk:Ucnote|Talk]]
+</td><td>
+Below are this user&#39;s last &lt;b&gt;$1&lt;/b&gt; changes in the last &lt;b&gt;$2&lt;/b&gt; days.
+</td><td>
+{{int:Ucnote}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uctop&action=edit uctop]<br>
+[[MediaWiki_talk:Uctop|Talk]]
+</td><td>
+ (top)
+</td><td>
+{{int:Uctop}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblockip&action=edit unblockip]<br>
+[[MediaWiki_talk:Unblockip|Talk]]
+</td><td>
+Unblock user
+</td><td>
+{{int:Unblockip}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblockiptext&action=edit unblockiptext]<br>
+[[MediaWiki_talk:Unblockiptext|Talk]]
+</td><td>
+Use the form below to restore write access
+to a previously blocked IP address or username.
+</td><td>
+{{int:Unblockiptext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblocklink&action=edit unblocklink]<br>
+[[MediaWiki_talk:Unblocklink|Talk]]
+</td><td>
+unblock
+</td><td>
+{{int:Unblocklink}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unblocklogentry&action=edit unblocklogentry]<br>
+[[MediaWiki_talk:Unblocklogentry|Talk]]
+</td><td>
+unblocked &quot;$1&quot;
+</td><td>
+{{int:Unblocklogentry}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undelete&action=edit undelete]<br>
+[[MediaWiki_talk:Undelete|Talk]]
+</td><td>
+Restore deleted page
+</td><td>
+{{int:Undelete}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undelete_short&action=edit undelete_short]<br>
+[[MediaWiki_talk:Undelete_short|Talk]]
+</td><td>
+Undelete $1 edits
+</td><td>
+{{int:Undelete_short}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletearticle&action=edit undeletearticle]<br>
+[[MediaWiki_talk:Undeletearticle|Talk]]
+</td><td>
+Restore deleted page
+</td><td>
+{{int:Undeletearticle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletebtn&action=edit undeletebtn]<br>
+[[MediaWiki_talk:Undeletebtn|Talk]]
+</td><td>
+Restore!
+</td><td>
+{{int:Undeletebtn}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletedarticle&action=edit undeletedarticle]<br>
+[[MediaWiki_talk:Undeletedarticle|Talk]]
+</td><td>
+restored &quot;$1&quot;
+</td><td>
+{{int:Undeletedarticle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletedtext&action=edit undeletedtext]<br>
+[[MediaWiki_talk:Undeletedtext|Talk]]
+</td><td>
+&#91;&#91;$1]] has been successfully restored.
+See &#91;&#91;Wiktionary:Deletion_log]] for a record of recent deletions and restorations.
+</td><td>
+{{int:Undeletedtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletehistory&action=edit undeletehistory]<br>
+[[MediaWiki_talk:Undeletehistory|Talk]]
+</td><td>
+If you restore the page, all revisions will be restored to the history.
+If a new page with the same name has been created since the deletion, the restored
+revisions will appear in the prior history, and the current revision of the live page
+will not be automatically replaced.
+</td><td>
+{{int:Undeletehistory}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletepage&action=edit undeletepage]<br>
+[[MediaWiki_talk:Undeletepage|Talk]]
+</td><td>
+View and restore deleted pages
+</td><td>
+{{int:Undeletepage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeletepagetext&action=edit undeletepagetext]<br>
+[[MediaWiki_talk:Undeletepagetext|Talk]]
+</td><td>
+The following pages have been deleted but are still in the archive and
+can be restored. The archive may be periodically cleaned out.
+</td><td>
+{{int:Undeletepagetext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeleterevision&action=edit undeleterevision]<br>
+[[MediaWiki_talk:Undeleterevision|Talk]]
+</td><td>
+Deleted revision as of $1
+</td><td>
+{{int:Undeleterevision}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Undeleterevisions&action=edit undeleterevisions]<br>
+[[MediaWiki_talk:Undeleterevisions|Talk]]
+</td><td>
+$1 revisions archived
+</td><td>
+{{int:Undeleterevisions}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unexpected&action=edit unexpected]<br>
+[[MediaWiki_talk:Unexpected|Talk]]
+</td><td>
+Unexpected value: &quot;$1&quot;=&quot;$2&quot;.
+</td><td>
+{{int:Unexpected}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockbtn&action=edit unlockbtn]<br>
+[[MediaWiki_talk:Unlockbtn|Talk]]
+</td><td>
+Unlock database
+</td><td>
+{{int:Unlockbtn}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockconfirm&action=edit unlockconfirm]<br>
+[[MediaWiki_talk:Unlockconfirm|Talk]]
+</td><td>
+Yes, I really want to unlock the database.
+</td><td>
+{{int:Unlockconfirm}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdb&action=edit unlockdb]<br>
+[[MediaWiki_talk:Unlockdb|Talk]]
+</td><td>
+Unlock database
+</td><td>
+{{int:Unlockdb}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdbsuccesssub&action=edit unlockdbsuccesssub]<br>
+[[MediaWiki_talk:Unlockdbsuccesssub|Talk]]
+</td><td>
+Database lock removed
+</td><td>
+{{int:Unlockdbsuccesssub}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdbsuccesstext&action=edit unlockdbsuccesstext]<br>
+[[MediaWiki_talk:Unlockdbsuccesstext|Talk]]
+</td><td>
+The database has been unlocked.
+</td><td>
+{{int:Unlockdbsuccesstext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unlockdbtext&action=edit unlockdbtext]<br>
+[[MediaWiki_talk:Unlockdbtext|Talk]]
+</td><td>
+Unlocking the database will restore the ability of all
+users to edit pages, change their preferences, edit their watchlists, and
+other things requiring changes in the database.
+Please confirm that this is what you intend to do.
+</td><td>
+{{int:Unlockdbtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotect&action=edit unprotect]<br>
+[[MediaWiki_talk:Unprotect|Talk]]
+</td><td>
+Unprotect
+</td><td>
+{{int:Unprotect}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectcomment&action=edit unprotectcomment]<br>
+[[MediaWiki_talk:Unprotectcomment|Talk]]
+</td><td>
+Reason for unprotecting
+</td><td>
+{{int:Unprotectcomment}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectedarticle&action=edit unprotectedarticle]<br>
+[[MediaWiki_talk:Unprotectedarticle|Talk]]
+</td><td>
+unprotected &#91;&#91;$1]]
+</td><td>
+{{int:Unprotectedarticle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectsub&action=edit unprotectsub]<br>
+[[MediaWiki_talk:Unprotectsub|Talk]]
+</td><td>
+(Unprotecting &quot;$1&quot;)
+</td><td>
+{{int:Unprotectsub}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unprotectthispage&action=edit unprotectthispage]<br>
+[[MediaWiki_talk:Unprotectthispage|Talk]]
+</td><td>
+Unprotect this page
+</td><td>
+{{int:Unprotectthispage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unusedimages&action=edit unusedimages]<br>
+[[MediaWiki_talk:Unusedimages|Talk]]
+</td><td>
+Unused images
+</td><td>
+{{int:Unusedimages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unusedimagestext&action=edit unusedimagestext]<br>
+[[MediaWiki_talk:Unusedimagestext|Talk]]
+</td><td>
+&lt;p&gt;Please note that other web sites may link to an image with
+a direct URL, and so may still be listed here despite being
+in active use.
+</td><td>
+{{int:Unusedimagestext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unwatch&action=edit unwatch]<br>
+[[MediaWiki_talk:Unwatch|Talk]]
+</td><td>
+Unwatch
+</td><td>
+{{int:Unwatch}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Unwatchthispage&action=edit unwatchthispage]<br>
+[[MediaWiki_talk:Unwatchthispage|Talk]]
+</td><td>
+Stop watching
+</td><td>
+{{int:Unwatchthispage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Updated&action=edit updated]<br>
+[[MediaWiki_talk:Updated|Talk]]
+</td><td>
+(Updated)
+</td><td>
+{{int:Updated}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Upload&action=edit upload]<br>
+[[MediaWiki_talk:Upload|Talk]]
+</td><td>
+Upload file
+</td><td>
+{{int:Upload}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadbtn&action=edit uploadbtn]<br>
+[[MediaWiki_talk:Uploadbtn|Talk]]
+</td><td>
+Upload file
+</td><td>
+{{int:Uploadbtn}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploaddisabled&action=edit uploaddisabled]<br>
+[[MediaWiki_talk:Uploaddisabled|Talk]]
+</td><td>
+Sorry, uploading is disabled.
+</td><td>
+{{int:Uploaddisabled}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadedfiles&action=edit uploadedfiles]<br>
+[[MediaWiki_talk:Uploadedfiles|Talk]]
+</td><td>
+Uploaded files
+</td><td>
+{{int:Uploadedfiles}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadedimage&action=edit uploadedimage]<br>
+[[MediaWiki_talk:Uploadedimage|Talk]]
+</td><td>
+uploaded &quot;$1&quot;
+</td><td>
+{{int:Uploadedimage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploaderror&action=edit uploaderror]<br>
+[[MediaWiki_talk:Uploaderror|Talk]]
+</td><td>
+Upload error
+</td><td>
+{{int:Uploaderror}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadfile&action=edit uploadfile]<br>
+[[MediaWiki_talk:Uploadfile|Talk]]
+</td><td>
+Upload images, sounds, documents etc.
+</td><td>
+{{int:Uploadfile}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlink&action=edit uploadlink]<br>
+[[MediaWiki_talk:Uploadlink|Talk]]
+</td><td>
+Upload images
+</td><td>
+{{int:Uploadlink}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlog&action=edit uploadlog]<br>
+[[MediaWiki_talk:Uploadlog|Talk]]
+</td><td>
+upload log
+</td><td>
+{{int:Uploadlog}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlogpage&action=edit uploadlogpage]<br>
+[[MediaWiki_talk:Uploadlogpage|Talk]]
+</td><td>
+Upload_log
+</td><td>
+{{int:Uploadlogpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadlogpagetext&action=edit uploadlogpagetext]<br>
+[[MediaWiki_talk:Uploadlogpagetext|Talk]]
+</td><td>
+Below is a list of the most recent file uploads.
+All times shown are server time (UTC).
+&lt;ul&gt;
+&lt;/ul&gt;
+
+</td><td>
+{{int:Uploadlogpagetext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadnologin&action=edit uploadnologin]<br>
+[[MediaWiki_talk:Uploadnologin|Talk]]
+</td><td>
+Not logged in
+</td><td>
+{{int:Uploadnologin}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadnologintext&action=edit uploadnologintext]<br>
+[[MediaWiki_talk:Uploadnologintext|Talk]]
+</td><td>
+You must be &lt;a href=&quot;/wiki/Special:Userlogin&quot;&gt;logged in&lt;/a&gt;
+to upload files.
+</td><td>
+{{int:Uploadnologintext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadtext&action=edit uploadtext]<br>
+[[MediaWiki_talk:Uploadtext|Talk]]
+</td><td>
+&lt;strong&gt;STOP!&lt;/strong&gt; Before you upload here,
+make sure to read and follow the &lt;a href=&quot;/wiki/Special:Image_use_policy&quot;&gt;image use policy&lt;/a&gt;.
+&lt;p&gt;If a file with the name you are specifying already
+exists on the wiki, it&#39;ll be replaced without warning.
+So unless you mean to update a file, it&#39;s a good idea
+to first check if such a file exists.
+&lt;p&gt;To view or search previously uploaded images,
+go to the &lt;a href=&quot;/wiki/Special:Imagelist&quot;&gt;list of uploaded images&lt;/a&gt;.
+Uploads and deletions are logged on the &lt;a href=&quot;/wiki/Wiktionary:Upload_log&quot;&gt;upload log&lt;/a&gt;.
+&lt;/p&gt;&lt;p&gt;Use the form below to upload new image files for use in
+illustrating your pages.
+On most browsers, you will see a &quot;Browse...&quot; button, which will
+bring up your operating system&#39;s standard file open dialog.
+Choosing a file will fill the name of that file into the text
+field next to the button.
+You must also check the box affirming that you are not
+violating any copyrights by uploading the file.
+Press the &quot;Upload&quot; button to finish the upload.
+This may take some time if you have a slow internet connection.
+&lt;p&gt;The preferred formats are JPEG for photographic images, PNG
+for drawings and other iconic images, and OGG for sounds.
+Please name your files descriptively to avoid confusion.
+To include the image in a page, use a link in the form
+&lt;b&gt;&#91;&#91;Image:file.jpg]]&lt;/b&gt; or &lt;b&gt;&#91;&#91;Image:file.png&#124;alt text]]&lt;/b&gt;
+or &lt;b&gt;&#91;&#91;Media:file.ogg]]&lt;/b&gt; for sounds.
+&lt;p&gt;Please note that as with wiki pages, others may edit or
+delete your uploads if they think it serves the project, and
+you may be blocked from uploading if you abuse the system.
+</td><td>
+{{int:Uploadtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Uploadwarning&action=edit uploadwarning]<br>
+[[MediaWiki_talk:Uploadwarning|Talk]]
+</td><td>
+Upload warning
+</td><td>
+{{int:Uploadwarning}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:User_rights_set&action=edit user_rights_set]<br>
+[[MediaWiki_talk:User_rights_set|Talk]]
+</td><td>
+&lt;b&gt;User rights for &quot;$1&quot; updated&lt;/b&gt;
+</td><td>
+{{int:User_rights_set}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usercssjs&action=edit usercssjs]<br>
+[[MediaWiki_talk:Usercssjs|Talk]]
+</td><td>
+&#39;&#39;&#39;Note:&#39;&#39;&#39; After saving, you have to tell your bowser to get the new version: &#39;&#39;&#39;Mozilla:&#39;&#39;&#39; click &#39;&#39;reload&#39;&#39;(or &#39;&#39;ctrl-r&#39;&#39;), &#39;&#39;&#39;IE / Opera:&#39;&#39;&#39; &#39;&#39;ctrl-f5&#39;&#39;, &#39;&#39;&#39;Safari:&#39;&#39;&#39; &#39;&#39;cmd-r&#39;&#39;, &#39;&#39;&#39;Konqueror&#39;&#39;&#39; &#39;&#39;ctrl-r&#39;&#39;.
+</td><td>
+{{int:Usercssjs}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usercssjsyoucanpreview&action=edit usercssjsyoucanpreview]<br>
+[[MediaWiki_talk:Usercssjsyoucanpreview|Talk]]
+</td><td>
+&lt;strong&gt;Tip:&lt;/strong&gt; Use the &#39;Show preview&#39; button to test your new css/js before saving.
+</td><td>
+{{int:Usercssjsyoucanpreview}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usercsspreview&action=edit usercsspreview]<br>
+[[MediaWiki_talk:Usercsspreview|Talk]]
+</td><td>
+&#39;&#39;&#39;Remember that you are only previewing your user css, it has not yet been saved!&#39;&#39;&#39;
+</td><td>
+{{int:Usercsspreview}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userexists&action=edit userexists]<br>
+[[MediaWiki_talk:Userexists|Talk]]
+</td><td>
+The user name you entered is already in use. Please choose a different name.
+</td><td>
+{{int:Userexists}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userjspreview&action=edit userjspreview]<br>
+[[MediaWiki_talk:Userjspreview|Talk]]
+</td><td>
+&#39;&#39;&#39;Remember that you are only testing/previewing your user javascript, it has not yet been saved!&#39;&#39;&#39;
+</td><td>
+{{int:Userjspreview}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userlogin&action=edit userlogin]<br>
+[[MediaWiki_talk:Userlogin|Talk]]
+</td><td>
+Log in
+</td><td>
+{{int:Userlogin}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userlogout&action=edit userlogout]<br>
+[[MediaWiki_talk:Userlogout|Talk]]
+</td><td>
+Log out
+</td><td>
+{{int:Userlogout}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Usermailererror&action=edit usermailererror]<br>
+[[MediaWiki_talk:Usermailererror|Talk]]
+</td><td>
+Mail object returned error:
+</td><td>
+{{int:Usermailererror}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userpage&action=edit userpage]<br>
+[[MediaWiki_talk:Userpage|Talk]]
+</td><td>
+View user page
+</td><td>
+{{int:Userpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userstats&action=edit userstats]<br>
+[[MediaWiki_talk:Userstats|Talk]]
+</td><td>
+User statistics
+</td><td>
+{{int:Userstats}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Userstatstext&action=edit userstatstext]<br>
+[[MediaWiki_talk:Userstatstext|Talk]]
+</td><td>
+There are &#39;&#39;&#39;$1&#39;&#39;&#39; registered users.
+&#39;&#39;&#39;$2&#39;&#39;&#39; of these are administrators (see $3).
+</td><td>
+{{int:Userstatstext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Version&action=edit version]<br>
+[[MediaWiki_talk:Version|Talk]]
+</td><td>
+Version
+</td><td>
+{{int:Version}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewcount&action=edit viewcount]<br>
+[[MediaWiki_talk:Viewcount|Talk]]
+</td><td>
+This page has been accessed $1 times.
+</td><td>
+{{int:Viewcount}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewprevnext&action=edit viewprevnext]<br>
+[[MediaWiki_talk:Viewprevnext|Talk]]
+</td><td>
+View ($1) ($2) ($3).
+</td><td>
+{{int:Viewprevnext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewsource&action=edit viewsource]<br>
+[[MediaWiki_talk:Viewsource|Talk]]
+</td><td>
+View source
+</td><td>
+{{int:Viewsource}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Viewtalkpage&action=edit viewtalkpage]<br>
+[[MediaWiki_talk:Viewtalkpage|Talk]]
+</td><td>
+View discussion
+</td><td>
+{{int:Viewtalkpage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wantedpages&action=edit wantedpages]<br>
+[[MediaWiki_talk:Wantedpages|Talk]]
+</td><td>
+Wanted pages
+</td><td>
+{{int:Wantedpages}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watch&action=edit watch]<br>
+[[MediaWiki_talk:Watch|Talk]]
+</td><td>
+Watch
+</td><td>
+{{int:Watch}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchdetails&action=edit watchdetails]<br>
+[[MediaWiki_talk:Watchdetails|Talk]]
+</td><td>
+($1 pages watched not counting talk pages;
+$2 total pages edited since cutoff;
+$3...
+&lt;a href=&#39;$4&#39;&gt;show and edit complete list&lt;/a&gt;.)
+</td><td>
+{{int:Watchdetails}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watcheditlist&action=edit watcheditlist]<br>
+[[MediaWiki_talk:Watcheditlist|Talk]]
+</td><td>
+Here&#39;s an alphabetical list of your
+watched pages. Check the boxes of pages you want to remove
+from your watchlist and click the &#39;remove checked&#39; button
+at the bottom of the screen.
+</td><td>
+{{int:Watcheditlist}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchlist&action=edit watchlist]<br>
+[[MediaWiki_talk:Watchlist|Talk]]
+</td><td>
+My watchlist
+</td><td>
+{{int:Watchlist}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchlistcontains&action=edit watchlistcontains]<br>
+[[MediaWiki_talk:Watchlistcontains|Talk]]
+</td><td>
+Your watchlist contains $1 pages.
+</td><td>
+{{int:Watchlistcontains}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchlistsub&action=edit watchlistsub]<br>
+[[MediaWiki_talk:Watchlistsub|Talk]]
+</td><td>
+(for user &quot;$1&quot;)
+</td><td>
+{{int:Watchlistsub}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchmethod-list&action=edit watchmethod-list]<br>
+[[MediaWiki_talk:Watchmethod-list|Talk]]
+</td><td>
+checking watched pages for recent edits
+</td><td>
+{{int:Watchmethod-list}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchmethod-recent&action=edit watchmethod-recent]<br>
+[[MediaWiki_talk:Watchmethod-recent|Talk]]
+</td><td>
+checking recent edits for watched pages
+</td><td>
+{{int:Watchmethod-recent}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchnochange&action=edit watchnochange]<br>
+[[MediaWiki_talk:Watchnochange|Talk]]
+</td><td>
+None of your watched items were edited in the time period displayed.
+</td><td>
+{{int:Watchnochange}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchnologin&action=edit watchnologin]<br>
+[[MediaWiki_talk:Watchnologin|Talk]]
+</td><td>
+Not logged in
+</td><td>
+{{int:Watchnologin}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchnologintext&action=edit watchnologintext]<br>
+[[MediaWiki_talk:Watchnologintext|Talk]]
+</td><td>
+You must be &lt;a href=&quot;/wiki/Special:Userlogin&quot;&gt;logged in&lt;/a&gt;
+to modify your watchlist.
+</td><td>
+{{int:Watchnologintext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchthis&action=edit watchthis]<br>
+[[MediaWiki_talk:Watchthis|Talk]]
+</td><td>
+Watch this page
+</td><td>
+{{int:Watchthis}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Watchthispage&action=edit watchthispage]<br>
+[[MediaWiki_talk:Watchthispage|Talk]]
+</td><td>
+Watch this page
+</td><td>
+{{int:Watchthispage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Welcomecreation&action=edit welcomecreation]<br>
+[[MediaWiki_talk:Welcomecreation|Talk]]
+</td><td>
+&lt;h2&gt;Welcome, $1!&lt;/h2&gt;&lt;p&gt;Your account has been created.
+Don&#39;t forget to change your Wiktionary preferences.
+</td><td>
+{{int:Welcomecreation}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whatlinkshere&action=edit whatlinkshere]<br>
+[[MediaWiki_talk:Whatlinkshere|Talk]]
+</td><td>
+What links here
+</td><td>
+{{int:Whatlinkshere}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistacctext&action=edit whitelistacctext]<br>
+[[MediaWiki_talk:Whitelistacctext|Talk]]
+</td><td>
+To be allowed to create accounts in this Wiki you have to &#91;&#91;Special:Userlogin&#124;log]] in and have the appropriate permissions.
+</td><td>
+{{int:Whitelistacctext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistacctitle&action=edit whitelistacctitle]<br>
+[[MediaWiki_talk:Whitelistacctitle|Talk]]
+</td><td>
+You are not allowed to create an account
+</td><td>
+{{int:Whitelistacctitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistedittext&action=edit whitelistedittext]<br>
+[[MediaWiki_talk:Whitelistedittext|Talk]]
+</td><td>
+You have to &#91;&#91;Special:Userlogin&#124;login]] to edit pages.
+</td><td>
+{{int:Whitelistedittext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistedittitle&action=edit whitelistedittitle]<br>
+[[MediaWiki_talk:Whitelistedittitle|Talk]]
+</td><td>
+Login required to edit
+</td><td>
+{{int:Whitelistedittitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistreadtext&action=edit whitelistreadtext]<br>
+[[MediaWiki_talk:Whitelistreadtext|Talk]]
+</td><td>
+You have to &#91;&#91;Special:Userlogin&#124;login]] to read pages.
+</td><td>
+{{int:Whitelistreadtext}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Whitelistreadtitle&action=edit whitelistreadtitle]<br>
+[[MediaWiki_talk:Whitelistreadtitle|Talk]]
+</td><td>
+Login required to read
+</td><td>
+{{int:Whitelistreadtitle}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wikipediapage&action=edit wikipediapage]<br>
+[[MediaWiki_talk:Wikipediapage|Talk]]
+</td><td>
+View project page
+</td><td>
+{{int:Wikipediapage}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wikititlesuffix&action=edit wikititlesuffix]<br>
+[[MediaWiki_talk:Wikititlesuffix|Talk]]
+</td><td>
+Wiktionary
+</td><td>
+{{int:Wikititlesuffix}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wlnote&action=edit wlnote]<br>
+[[MediaWiki_talk:Wlnote|Talk]]
+</td><td>
+Below are the last $1 changes in the last &lt;b&gt;$2&lt;/b&gt; hours.
+</td><td>
+{{int:Wlnote}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wlsaved&action=edit wlsaved]<br>
+[[MediaWiki_talk:Wlsaved|Talk]]
+</td><td>
+This is a saved version of your watchlist.
+</td><td>
+{{int:Wlsaved}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wlshowlast&action=edit wlshowlast]<br>
+[[MediaWiki_talk:Wlshowlast|Talk]]
+</td><td>
+Show last $1 hours $2 days $3
+</td><td>
+{{int:Wlshowlast}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wrong_wfQuery_params&action=edit wrong_wfQuery_params]<br>
+[[MediaWiki_talk:Wrong_wfQuery_params|Talk]]
+</td><td>
+Incorrect parameters to wfQuery()&lt;br /&gt;
+Function: $1&lt;br /&gt;
+Query: $2
+
+</td><td>
+{{int:Wrong_wfQuery_params}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Wrongpassword&action=edit wrongpassword]<br>
+[[MediaWiki_talk:Wrongpassword|Talk]]
+</td><td>
+The password you entered is incorrect. Please try again.
+</td><td>
+{{int:Wrongpassword}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourdiff&action=edit yourdiff]<br>
+[[MediaWiki_talk:Yourdiff|Talk]]
+</td><td>
+Differences
+</td><td>
+{{int:Yourdiff}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Youremail&action=edit youremail]<br>
+[[MediaWiki_talk:Youremail|Talk]]
+</td><td>
+Your email*
+</td><td>
+{{int:Youremail}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourname&action=edit yourname]<br>
+[[MediaWiki_talk:Yourname|Talk]]
+</td><td>
+Your user name
+</td><td>
+{{int:Yourname}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yournick&action=edit yournick]<br>
+[[MediaWiki_talk:Yournick|Talk]]
+</td><td>
+Your nickname (for signatures)
+</td><td>
+{{int:Yournick}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourpassword&action=edit yourpassword]<br>
+[[MediaWiki_talk:Yourpassword|Talk]]
+</td><td>
+Your password
+</td><td>
+{{int:Yourpassword}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourpasswordagain&action=edit yourpasswordagain]<br>
+[[MediaWiki_talk:Yourpasswordagain|Talk]]
+</td><td>
+Retype password
+</td><td>
+{{int:Yourpasswordagain}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourrealname&action=edit yourrealname]<br>
+[[MediaWiki_talk:Yourrealname|Talk]]
+</td><td>
+Your real name*
+</td><td>
+{{int:Yourrealname}}
+</td></tr><tr><td>
+[http://tl.wiktionary.org/w/wiki.phtml?title=MediaWiki:Yourtext&action=edit yourtext]<br>
+[[MediaWiki_talk:Yourtext|Talk]]
+</td><td>
+Your text
+</td><td>
+{{int:Yourtext}}
+</td></tr></table>
+
diff --git a/tests/parser/preprocess/Factorial.expected b/tests/parser/preprocess/Factorial.expected
new file mode 100644
index 00000000..099029c0
--- /dev/null
+++ b/tests/parser/preprocess/Factorial.expected
@@ -0,0 +1,17 @@
+<root><template lineStart="1"><title>#expr:<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=00</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>01<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=01</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*01<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=02</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*02<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=03</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*03<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=04</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*04<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=05</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*05<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=06</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*06<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=07</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*07<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=08</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*08<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=09</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*09<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=10</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*10<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=11</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*11<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=12</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*12<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=13</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*13<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=14</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*14<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=15</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*15<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=16</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*16<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=17</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*17<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=18</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*18<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=19</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*19<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=20</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*20<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=21</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*21<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=22</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*22<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=23</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*23<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=24</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*24<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=25</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*25<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=26</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*26<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=27</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*27<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=28</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*28<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=29</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*29<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=30</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*30<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=31</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*31<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=32</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*32<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=33</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*33<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=34</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*34<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=35</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*35<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=36</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*36<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=37</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*37<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=38</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*38<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=39</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*39<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=40</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*40<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=41</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*41<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=42</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*42<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=43</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*43<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=44</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*44<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=45</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*45<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=46</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*46<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=47</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*47<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=48</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*48<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=49</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*49<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=50</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*50<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=51</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*51<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=52</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*52<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=53</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*53<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=54</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*54<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=55</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*55<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=56</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*56<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=57</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*57<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=58</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*58<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=59</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*59<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=60</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*60<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=61</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*61<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=62</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*62<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=63</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*63<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=64</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*64<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=65</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*65<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=66</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*66<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=67</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*67<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=68</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*68<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=69</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*69<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=70</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*70<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=71</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*71<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=72</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*72<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=73</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*73<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=74</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*74<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=75</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*75<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=76</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*76<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=77</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*77<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=78</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*78<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=79</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*79<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=80</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*80<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=81</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*81<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=82</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*82<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=83</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*83<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=84</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*84<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=85</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*85<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=86</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*86<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=87</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*87<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=88</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*88<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=89</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*89<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=90</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*90<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=91</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*91<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=92</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*92<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=93</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*93<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=94</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*94<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=95</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*95<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=96</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*96<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=97</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*97<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=98</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*98<template><title>#ifeq:<template><title>#expr:<tplarg><title>1</title></tplarg>&gt;=99</title></template></title><part><name index="1" /><value>1</value></part><part><name index="2" /><value>*99</value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></value></part></template></title></template><ignore>&lt;noinclude&gt;</ignore>
+<template lineStart="1"><title>Template documentation</title></template>
+This template finds the [[factorial]] of a number. To use it, enter:&lt;br /&gt;
+&lt;code&gt;&lt;nowiki&gt;<template><title>factorial</title><part><name index="1" /><value>input</value></part></template>&lt;/nowiki&gt;&lt;/code&gt;&lt;br /&gt;
+The input must be a positive interger smaller than 100 (better than most calculators, which go up to only 69). This template works by repeating conditional multiplications. Examples:&lt;br /&gt;
+*&lt;nowiki&gt;<template><title>factorial</title><part><name index="1" /><value>2</value></part></template>&lt;/nowiki&gt; gives <template><title>factorial</title><part><name index="1" /><value>2</value></part></template>
+*&lt;nowiki&gt;<template><title>factorial</title><part><name index="1" /><value>3</value></part></template>&lt;/nowiki&gt; gives <template><title>factorial</title><part><name index="1" /><value>3</value></part></template>
+*&lt;nowiki&gt;<template><title>factorial</title><part><name index="1" /><value>5</value></part></template>&lt;/nowiki&gt; gives <template><title>factorial</title><part><name index="1" /><value>5</value></part></template>
+*&lt;nowiki&gt;<template><title>factorial</title><part><name index="1" /><value>10</value></part></template>&lt;/nowiki&gt; gives <template><title>factorial</title><part><name index="1" /><value>10</value></part></template>
+*&lt;nowiki&gt;<template><title>factorial</title><part><name index="1" /><value>80</value></part></template>&lt;/nowiki&gt; gives <template><title>factorial</title><part><name index="1" /><value>80</value></part></template>
+*&lt;nowiki&gt;<template><title>factorial</title><part><name index="1" /><value>0.5</value></part></template>&lt;/nowiki&gt; gives <template><title>factorial</title><part><name index="1" /><value>0.5</value></part></template> (invalid input)
+*&lt;nowiki&gt;<template><title>factorial</title><part><name index="1" /><value>-1</value></part></template>&lt;/nowiki&gt; gives <template><title>factorial</title><part><name index="1" /><value>-1</value></part></template> (invalid input)
+<template lineStart="1"><title>esoteric</title></template>
+[[Category:Mathematical templates|<template><title>PAGENAME</title></template>]]
+<ignore>&lt;/noinclude&gt;</ignore>
+
+</root> \ No newline at end of file
diff --git a/tests/parser/preprocess/Factorial.txt b/tests/parser/preprocess/Factorial.txt
new file mode 100644
index 00000000..316f0792
--- /dev/null
+++ b/tests/parser/preprocess/Factorial.txt
@@ -0,0 +1,16 @@
+{{#expr:{{#ifeq:{{#expr:{{{1}}}>=00}}|1|01{{#ifeq:{{#expr:{{{1}}}>=01}}|1|*01{{#ifeq:{{#expr:{{{1}}}>=02}}|1|*02{{#ifeq:{{#expr:{{{1}}}>=03}}|1|*03{{#ifeq:{{#expr:{{{1}}}>=04}}|1|*04{{#ifeq:{{#expr:{{{1}}}>=05}}|1|*05{{#ifeq:{{#expr:{{{1}}}>=06}}|1|*06{{#ifeq:{{#expr:{{{1}}}>=07}}|1|*07{{#ifeq:{{#expr:{{{1}}}>=08}}|1|*08{{#ifeq:{{#expr:{{{1}}}>=09}}|1|*09{{#ifeq:{{#expr:{{{1}}}>=10}}|1|*10{{#ifeq:{{#expr:{{{1}}}>=11}}|1|*11{{#ifeq:{{#expr:{{{1}}}>=12}}|1|*12{{#ifeq:{{#expr:{{{1}}}>=13}}|1|*13{{#ifeq:{{#expr:{{{1}}}>=14}}|1|*14{{#ifeq:{{#expr:{{{1}}}>=15}}|1|*15{{#ifeq:{{#expr:{{{1}}}>=16}}|1|*16{{#ifeq:{{#expr:{{{1}}}>=17}}|1|*17{{#ifeq:{{#expr:{{{1}}}>=18}}|1|*18{{#ifeq:{{#expr:{{{1}}}>=19}}|1|*19{{#ifeq:{{#expr:{{{1}}}>=20}}|1|*20{{#ifeq:{{#expr:{{{1}}}>=21}}|1|*21{{#ifeq:{{#expr:{{{1}}}>=22}}|1|*22{{#ifeq:{{#expr:{{{1}}}>=23}}|1|*23{{#ifeq:{{#expr:{{{1}}}>=24}}|1|*24{{#ifeq:{{#expr:{{{1}}}>=25}}|1|*25{{#ifeq:{{#expr:{{{1}}}>=26}}|1|*26{{#ifeq:{{#expr:{{{1}}}>=27}}|1|*27{{#ifeq:{{#expr:{{{1}}}>=28}}|1|*28{{#ifeq:{{#expr:{{{1}}}>=29}}|1|*29{{#ifeq:{{#expr:{{{1}}}>=30}}|1|*30{{#ifeq:{{#expr:{{{1}}}>=31}}|1|*31{{#ifeq:{{#expr:{{{1}}}>=32}}|1|*32{{#ifeq:{{#expr:{{{1}}}>=33}}|1|*33{{#ifeq:{{#expr:{{{1}}}>=34}}|1|*34{{#ifeq:{{#expr:{{{1}}}>=35}}|1|*35{{#ifeq:{{#expr:{{{1}}}>=36}}|1|*36{{#ifeq:{{#expr:{{{1}}}>=37}}|1|*37{{#ifeq:{{#expr:{{{1}}}>=38}}|1|*38{{#ifeq:{{#expr:{{{1}}}>=39}}|1|*39{{#ifeq:{{#expr:{{{1}}}>=40}}|1|*40{{#ifeq:{{#expr:{{{1}}}>=41}}|1|*41{{#ifeq:{{#expr:{{{1}}}>=42}}|1|*42{{#ifeq:{{#expr:{{{1}}}>=43}}|1|*43{{#ifeq:{{#expr:{{{1}}}>=44}}|1|*44{{#ifeq:{{#expr:{{{1}}}>=45}}|1|*45{{#ifeq:{{#expr:{{{1}}}>=46}}|1|*46{{#ifeq:{{#expr:{{{1}}}>=47}}|1|*47{{#ifeq:{{#expr:{{{1}}}>=48}}|1|*48{{#ifeq:{{#expr:{{{1}}}>=49}}|1|*49{{#ifeq:{{#expr:{{{1}}}>=50}}|1|*50{{#ifeq:{{#expr:{{{1}}}>=51}}|1|*51{{#ifeq:{{#expr:{{{1}}}>=52}}|1|*52{{#ifeq:{{#expr:{{{1}}}>=53}}|1|*53{{#ifeq:{{#expr:{{{1}}}>=54}}|1|*54{{#ifeq:{{#expr:{{{1}}}>=55}}|1|*55{{#ifeq:{{#expr:{{{1}}}>=56}}|1|*56{{#ifeq:{{#expr:{{{1}}}>=57}}|1|*57{{#ifeq:{{#expr:{{{1}}}>=58}}|1|*58{{#ifeq:{{#expr:{{{1}}}>=59}}|1|*59{{#ifeq:{{#expr:{{{1}}}>=60}}|1|*60{{#ifeq:{{#expr:{{{1}}}>=61}}|1|*61{{#ifeq:{{#expr:{{{1}}}>=62}}|1|*62{{#ifeq:{{#expr:{{{1}}}>=63}}|1|*63{{#ifeq:{{#expr:{{{1}}}>=64}}|1|*64{{#ifeq:{{#expr:{{{1}}}>=65}}|1|*65{{#ifeq:{{#expr:{{{1}}}>=66}}|1|*66{{#ifeq:{{#expr:{{{1}}}>=67}}|1|*67{{#ifeq:{{#expr:{{{1}}}>=68}}|1|*68{{#ifeq:{{#expr:{{{1}}}>=69}}|1|*69{{#ifeq:{{#expr:{{{1}}}>=70}}|1|*70{{#ifeq:{{#expr:{{{1}}}>=71}}|1|*71{{#ifeq:{{#expr:{{{1}}}>=72}}|1|*72{{#ifeq:{{#expr:{{{1}}}>=73}}|1|*73{{#ifeq:{{#expr:{{{1}}}>=74}}|1|*74{{#ifeq:{{#expr:{{{1}}}>=75}}|1|*75{{#ifeq:{{#expr:{{{1}}}>=76}}|1|*76{{#ifeq:{{#expr:{{{1}}}>=77}}|1|*77{{#ifeq:{{#expr:{{{1}}}>=78}}|1|*78{{#ifeq:{{#expr:{{{1}}}>=79}}|1|*79{{#ifeq:{{#expr:{{{1}}}>=80}}|1|*80{{#ifeq:{{#expr:{{{1}}}>=81}}|1|*81{{#ifeq:{{#expr:{{{1}}}>=82}}|1|*82{{#ifeq:{{#expr:{{{1}}}>=83}}|1|*83{{#ifeq:{{#expr:{{{1}}}>=84}}|1|*84{{#ifeq:{{#expr:{{{1}}}>=85}}|1|*85{{#ifeq:{{#expr:{{{1}}}>=86}}|1|*86{{#ifeq:{{#expr:{{{1}}}>=87}}|1|*87{{#ifeq:{{#expr:{{{1}}}>=88}}|1|*88{{#ifeq:{{#expr:{{{1}}}>=89}}|1|*89{{#ifeq:{{#expr:{{{1}}}>=90}}|1|*90{{#ifeq:{{#expr:{{{1}}}>=91}}|1|*91{{#ifeq:{{#expr:{{{1}}}>=92}}|1|*92{{#ifeq:{{#expr:{{{1}}}>=93}}|1|*93{{#ifeq:{{#expr:{{{1}}}>=94}}|1|*94{{#ifeq:{{#expr:{{{1}}}>=95}}|1|*95{{#ifeq:{{#expr:{{{1}}}>=96}}|1|*96{{#ifeq:{{#expr:{{{1}}}>=97}}|1|*97{{#ifeq:{{#expr:{{{1}}}>=98}}|1|*98{{#ifeq:{{#expr:{{{1}}}>=99}}|1|*99}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}<noinclude>
+{{Template documentation}}
+This template finds the [[factorial]] of a number. To use it, enter:<br />
+<code><nowiki>{{factorial|input}}</nowiki></code><br />
+The input must be a positive interger smaller than 100 (better than most calculators, which go up to only 69). This template works by repeating conditional multiplications. Examples:<br />
+*<nowiki>{{factorial|2}}</nowiki> gives {{factorial|2}}
+*<nowiki>{{factorial|3}}</nowiki> gives {{factorial|3}}
+*<nowiki>{{factorial|5}}</nowiki> gives {{factorial|5}}
+*<nowiki>{{factorial|10}}</nowiki> gives {{factorial|10}}
+*<nowiki>{{factorial|80}}</nowiki> gives {{factorial|80}}
+*<nowiki>{{factorial|0.5}}</nowiki> gives {{factorial|0.5}} (invalid input)
+*<nowiki>{{factorial|-1}}</nowiki> gives {{factorial|-1}} (invalid input)
+{{esoteric}}
+[[Category:Mathematical templates|{{PAGENAME}}]]
+</noinclude>
+
diff --git a/tests/parser/preprocess/Fundraising.expected b/tests/parser/preprocess/Fundraising.expected
new file mode 100644
index 00000000..f5b32cc5
--- /dev/null
+++ b/tests/parser/preprocess/Fundraising.expected
@@ -0,0 +1,18 @@
+<root>&lt;div name=&quot;fundraising&quot; id=&quot;fundraising&quot; class=&quot;plainlinks&quot; style=&quot;margin-top:5px; text-align: center; background-color: #ffffe0; border: solid 1px #e0e0c0&quot;&gt;
+'''Pwede kang [[Wikimedia:give the gift of knowledge|maghandog ng kaalaman]] sa paraan ng [[Wikimedia:Fundraising#Donation_methods|pagbibigay ng donasyon sa Pundasyong Wikimedia!]]'''
+&lt;br /&gt;
+&lt;fundraising/&gt;
+&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;
+&lt;fundraisinglogo/&gt;
+&lt;br /&gt;
+&lt;b&gt;Ngayon, ang iyong [[Wikimedia:Fundraising|kontribusyon]] ay [[Wikimedia:Fundraising FAQ|itatambal]] ng isang anonimong kaibigan.&lt;/b&gt;
+&lt;br /&gt;
+&lt;small&gt;
+[[Wikimedia:Deductibility of donations|Pagbabawas sa mga buwis ng donasyon]]
+|
+[[Wikimedia:Fundraising FAQ|FAQ]]
+|
+[http://upload.wikimedia.org/wikipedia/foundation/2/28/Wikimedia_2006_fs.pdf Mga pampananalaping pahayag]
+&lt;/small&gt;
+&lt;/div&gt;
+</root> \ No newline at end of file
diff --git a/tests/parser/preprocess/Fundraising.txt b/tests/parser/preprocess/Fundraising.txt
new file mode 100644
index 00000000..b868b4d8
--- /dev/null
+++ b/tests/parser/preprocess/Fundraising.txt
@@ -0,0 +1,17 @@
+<div name="fundraising" id="fundraising" class="plainlinks" style="margin-top:5px; text-align: center; background-color: #ffffe0; border: solid 1px #e0e0c0">
+'''Pwede kang [[Wikimedia:give the gift of knowledge|maghandog ng kaalaman]] sa paraan ng [[Wikimedia:Fundraising#Donation_methods|pagbibigay ng donasyon sa Pundasyong Wikimedia!]]'''
+<br />
+<fundraising/>
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
+<fundraisinglogo/>
+<br />
+<b>Ngayon, ang iyong [[Wikimedia:Fundraising|kontribusyon]] ay [[Wikimedia:Fundraising FAQ|itatambal]] ng isang anonimong kaibigan.</b>
+<br />
+<small>
+[[Wikimedia:Deductibility of donations|Pagbabawas sa mga buwis ng donasyon]]
+|
+[[Wikimedia:Fundraising FAQ|FAQ]]
+|
+[http://upload.wikimedia.org/wikipedia/foundation/2/28/Wikimedia_2006_fs.pdf Mga pampananalaping pahayag]
+</small>
+</div>
diff --git a/tests/parser/preprocess/QuoteQuran.expected b/tests/parser/preprocess/QuoteQuran.expected
new file mode 100644
index 00000000..e9a78e46
--- /dev/null
+++ b/tests/parser/preprocess/QuoteQuran.expected
@@ -0,0 +1,140 @@
+<root><ignore>&lt;noinclude&gt;</ignore><template><title>Template sandbox notice</title></template><ignore>&lt;/noinclude&gt;</ignore>
+&lt;div class=&quot;boilerplate metadata rfa&quot; style=&quot;background-color:#FFFFF5; margin: 2em 0 0 0; padding: 0 10px 0 10px; border: 1px solid #AAAAAA;&quot;&gt;The [[Qur'an]], [[sura|chapter]] <template><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 1) </title><part><name index="1" /><value> 1 ([[Al-Fatiha]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 2) </title><part><name index="1" /><value> 2 ([[Al-Baqara]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 3) </title><part><name index="1" /><value> 3 ([[Ali Imran]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 4) </title><part><name index="1" /><value> 4 ([[An-Nisa]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 5) </title><part><name index="1" /><value> 5 ([[Al-Ma'ida]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 6) </title><part><name index="1" /><value> 6 ([[Al-An'am]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 7) </title><part><name index="1" /><value> 7 ([[Al-A'raf]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 8) </title><part><name index="1" /><value> 8 ([[Al-Anfal]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 9) </title><part><name index="1" /><value> 9 ([[At-Tawba]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 10) </title><part><name index="1" /><value> 10 ([[Yunus (sura)|Yunus]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 11) </title><part><name index="1" /><value> 11 ([[Hud (sura)|Hud]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 12) </title><part><name index="1" /><value> 12 ([[Yusuf (sura)|Yusuf]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 13) </title><part><name index="1" /><value> 13 ([[Ar-Ra'd]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 14) </title><part><name index="1" /><value> 14 ([[Ibrahim (sura)|Ibrahim]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 15) </title><part><name index="1" /><value> 15 ([[Al-Hijr]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 16) </title><part><name index="1" /><value> 16 ([[An-Nahl]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 17) </title><part><name index="1" /><value> 17 ([[Al-Isra]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 18) </title><part><name index="1" /><value> 18 ([[Al-Kahf]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 19) </title><part><name index="1" /><value> 19 ([[Maryam (sura)|Maryam]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 20) </title><part><name index="1" /><value> 20 ([[Ta-Ha]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 21) </title><part><name index="1" /><value> 21 ([[Al-Anbiya]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 22) </title><part><name index="1" /><value> 22 ([[Al-Hajj]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 23) </title><part><name index="1" /><value> 23 ([[Al-Muminun]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 24) </title><part><name index="1" /><value> 24 ([[An-Noor]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 25) </title><part><name index="1" /><value> 25 ([[Al-Furqan]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 26) </title><part><name index="1" /><value> 26 ([[Ash-Shu'ara]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 27) </title><part><name index="1" /><value> 27 ([[An-Naml]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 28) </title><part><name index="1" /><value> 28 ([[Al-Qisas]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 29) </title><part><name index="1" /><value> 29 ([[Al-Ankabut]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 30) </title><part><name index="1" /><value> 30 ([[Ar-Rum]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 31) </title><part><name index="1" /><value> 31 ([[Luqman (sura)|Luqman]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 32) </title><part><name index="1" /><value> 32 ([[As-Sajda]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 33) </title><part><name index="1" /><value> 33 ([[Al-Ahzab]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 34) </title><part><name index="1" /><value> 34 ([[Saba (sura)|Saba]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 35) </title><part><name index="1" /><value> 35 ([[Fatir]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 36) </title><part><name index="1" /><value> 36 ([[Ya-Seen]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 37) </title><part><name index="1" /><value> 37 ([[As-Saaffat]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 38) </title><part><name index="1" /><value> 38 ([[Sad (sura)|Sad]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 39) </title><part><name index="1" /><value> 39 ([[Az-Zumar]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 40) </title><part><name index="1" /><value> 40 ([[Ghafir]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 41) </title><part><name index="1" /><value> 41 ([[Fussilat]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 42) </title><part><name index="1" /><value> 42 ([[Ash-Shura]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 43) </title><part><name index="1" /><value> 43 ([[Az-Zukhruf]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 44) </title><part><name index="1" /><value> 44 ([[Ad-Dukhan]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 45) </title><part><name index="1" /><value> 45 ([[Al-Jathiya]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 46) </title><part><name index="1" /><value> 46 ([[Al-Ahqaf]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 47) </title><part><name index="1" /><value> 47 ([[Muhammad (sura)|Muhammad]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 48) </title><part><name index="1" /><value> 48 ([[Al-Fath]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 49) </title><part><name index="1" /><value> 49 ([[Al-Hujraat]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 50) </title><part><name index="1" /><value> 50 ([[Qaf (sura)|Qaf]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 51) </title><part><name index="1" /><value> 51 ([[Adh-Dhariyat]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 52) </title><part><name index="1" /><value> 52 ([[At-Tur]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 53) </title><part><name index="1" /><value> 53 ([[An-Najm]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 54) </title><part><name index="1" /><value> 54 ([[Al-Qamar]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 55) </title><part><name index="1" /><value> 55 ([[Ar-Rahman]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 56) </title><part><name index="1" /><value> 56 ([[Al-Waqia]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 57) </title><part><name index="1" /><value> 57 ([[Al-Hadid]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 58) </title><part><name index="1" /><value> 58 ([[Al-Mujadila]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 59) </title><part><name index="1" /><value> 59 ([[Al-Hashr]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 60) </title><part><name index="1" /><value> 60 ([[Al-Mumtahina]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 61) </title><part><name index="1" /><value> 61 ([[As-Saff]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 62) </title><part><name index="1" /><value> 62 ([[Al-Jumua]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 63) </title><part><name index="1" /><value> 63 ([[Al-Munafiqoon]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 64) </title><part><name index="1" /><value> 64 ([[At-Taghabun]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 65) </title><part><name index="1" /><value> 65 ([[At-Talaq]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 66) </title><part><name index="1" /><value> 66 ([[At-Tahrim]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 67) </title><part><name index="1" /><value> 67 ([[Al-Mulk]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 68) </title><part><name index="1" /><value> 68 ([[Al-Qalam]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 69) </title><part><name index="1" /><value> 69 ([[Al-Haaqqa]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 70) </title><part><name index="1" /><value> 70 ([[Al-Maarij]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 71) </title><part><name index="1" /><value> 71 ([[Nooh (sura)|Nooh]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 72) </title><part><name index="1" /><value> 72 ([[Al-Jinn]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 73) </title><part><name index="1" /><value> 73 ([[Al-Muzzammil]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 74) </title><part><name index="1" /><value> 74 ([[Al-Muddaththir]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 75) </title><part><name index="1" /><value> 75 ([[Al-Qiyama]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 76) </title><part><name index="1" /><value> 76 ([[Al-Insan]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 77) </title><part><name index="1" /><value> 77 ([[Al-Mursalat]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 78) </title><part><name index="1" /><value> 78 ([[An-Naba]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 79) </title><part><name index="1" /><value> 79 ([[An-Naziat]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 80) </title><part><name index="1" /><value> 80 ([[Abasa]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 81) </title><part><name index="1" /><value> 81 ([[At-Takwir]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 82) </title><part><name index="1" /><value> 82 ([[Al-Infitar]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 83) </title><part><name index="1" /><value> 83 ([[Al-Mutaffifin]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 84) </title><part><name index="1" /><value> 84 ([[Al-Inshiqaq]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 85) </title><part><name index="1" /><value> 85 ([[Al-Burooj]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 86) </title><part><name index="1" /><value> 86 ([[At-Tariq]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 87) </title><part><name index="1" /><value> 87 ([[Al-Ala]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 88) </title><part><name index="1" /><value> 88 ([[Al-Ghashiya]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 89) </title><part><name index="1" /><value> 89 ([[Al-Fajr (sura)|Al-Fajr]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 90) </title><part><name index="1" /><value> 90 ([[Al-Balad]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 91) </title><part><name index="1" /><value> 91 ([[Ash-Shams]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 92) </title><part><name index="1" /><value> 92 ([[Al-Lail]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 93) </title><part><name index="1" /><value> 93 ([[Ad-Dhuha]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 94) </title><part><name index="1" /><value> 94 ([[Al-Inshirah]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 95) </title><part><name index="1" /><value> 95 ([[At-Tin]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 96) </title><part><name index="1" /><value> 96 ([[Al-Alaq]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 97) </title><part><name index="1" /><value> 97 ([[Al-Qadr]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 98) </title><part><name index="1" /><value> 98 ([[Al-Bayyina]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 99) </title><part><name index="1" /><value> 99 ([[Az-Zalzala]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 100) </title><part><name index="1" /><value> 100 ([[Al-Adiyat]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 101) </title><part><name index="1" /><value> 101 ([[Al-Qaria]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 102) </title><part><name index="1" /><value> 102 ([[At-Takathur]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 103) </title><part><name index="1" /><value> 103 ([[Al-Asr]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 104) </title><part><name index="1" /><value> 104 ([[Al-Humaza]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 105) </title><part><name index="1" /><value> 105 ([[Al-Fil]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 106) </title><part><name index="1" /><value> 106 ([[Quraysh (sura)|Quraysh]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 107) </title><part><name index="1" /><value> 107 ([[Al-Ma'un]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 108) </title><part><name index="1" /><value> 108 ([[Al-Kawthar]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 109) </title><part><name index="1" /><value> 109 ([[Al-Kafirun]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 110) </title><part><name index="1" /><value> 110 ([[An-Nasr]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 111) </title><part><name index="1" /><value> 111 ([[Al-Masadd]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 112) </title><part><name index="1" /><value> 112 ([[Al-Ikhlas]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 113) </title><part><name index="1" /><value> 113 ([[Al-Falaq]]) </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg> = 114) </title><part><name index="1" /><value> 114 ([[An-Nas]]) </value></part><part><name index="2" /><value>
+error </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template>, [[ayat|verse]] [http://www.usc.edu/dept/MSA/quran/<template><title>three digit</title><part><name index="1" /><value><tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg></value></part></template>.qmt.html#<template><title>three digit</title><part><name index="1" /><value><tplarg><title>1</title><part><name index="1" /><value>1</value></part></tplarg></value></part></template>.<template><title>three digit</title><part><name index="1" /><value><tplarg><title>2</title><part><name index="1" /><value>1</value></part></tplarg></value></part></template> <tplarg><title>2</title><part><name index="1" /><value>1</value></part></tplarg>]''':'''<template><title>cquote</title><part><name index="1" /><value> <tplarg><title>3</title><part><name index="1" /><value>Default text</value></part></tplarg>&amp;mdash; &lt;small&gt;[[Qur'an translations|translated]] by <template><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 0) </title><part><name index="1" /><value> Unknown </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 1) </title><part><name index="1" /><value> [[Salman the Persian]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 101) </title><part><name index="1" /><value> [[Marmaduke Pickthall]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 102) </title><part><name index="1" /><value> [[Abdullah Yusuf Ali]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 601) </title><part><name index="1" /><value> [[Muhammad Muhsin Khan]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 701) </title><part><name index="1" /><value> [[Mohammed Habib Shakir|M. H. Shakir]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 901) </title><part><name index="1" /><value> [[Maulana Muhammad Ali]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 902) </title><part><name index="1" /><value> [[Rashad Khalifa]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 1001) </title><part><name index="1" /><value> [[Theodor Bibliander]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 1002) </title><part><name index="1" /><value> [[Robert of Ketton]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 1003) </title><part><name index="1" /><value> [[Andre du Ryer]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 1004) </title><part><name index="1" /><value> [[Alexander Ross (writer)|Alexander Ross]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 1005) </title><part><name index="1" /><value> [[Abraham Hinckelmann]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 1006) </title><part><name index="1" /><value> [[George Sale]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 1007) </title><part><name index="1" /><value> [[John Medows Rodwell]] </value></part><part><name index="2" /><value>
+<template lineStart="1"><title>#ifexpr: (<tplarg><title>4</title><part><name index="1" /><value>0</value></part></tplarg> = 1008) </title><part><name index="1" /><value> [[Arthur John Arberry]] </value></part><part><name index="2" /><value>
+error </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template> </value></part></template>&lt;/small&gt;
+<template lineStart="1"><title>#if:<tplarg><title>trans</title><part><name index="1" /><value></value></part></tplarg></title><part><name index="1" /><value>
+----
+[[Transliteration]]: <tplarg><title>trans</title></tplarg></value></part><part><name index="2" /><value> </value></part></template>
+<template lineStart="1"><title>#if:<tplarg><title>arab</title><part><name index="1" /><value></value></part></tplarg></title><part><name index="1" /><value>
+----
+[[Arabic language|Arabic]]: <tplarg><title>arab</title></tplarg></value></part><part><name index="2" /><value> </value></part></template> </value></part></template>&lt;/font&gt;&lt;/div&gt;
+
+</root> \ No newline at end of file
diff --git a/tests/parser/preprocess/QuoteQuran.txt b/tests/parser/preprocess/QuoteQuran.txt
new file mode 100644
index 00000000..3cfac5b2
--- /dev/null
+++ b/tests/parser/preprocess/QuoteQuran.txt
@@ -0,0 +1,139 @@
+<noinclude>{{Template sandbox notice}}</noinclude>
+<div class="boilerplate metadata rfa" style="background-color:#FFFFF5; margin: 2em 0 0 0; padding: 0 10px 0 10px; border: 1px solid #AAAAAA;">The [[Qur'an]], [[sura|chapter]] {{#ifexpr: ({{{1|1}}} = 1) | 1 ([[Al-Fatiha]]) |
+{{#ifexpr: ({{{1|1}}} = 2) | 2 ([[Al-Baqara]]) |
+{{#ifexpr: ({{{1|1}}} = 3) | 3 ([[Ali Imran]]) |
+{{#ifexpr: ({{{1|1}}} = 4) | 4 ([[An-Nisa]]) |
+{{#ifexpr: ({{{1|1}}} = 5) | 5 ([[Al-Ma'ida]]) |
+{{#ifexpr: ({{{1|1}}} = 6) | 6 ([[Al-An'am]]) |
+{{#ifexpr: ({{{1|1}}} = 7) | 7 ([[Al-A'raf]]) |
+{{#ifexpr: ({{{1|1}}} = 8) | 8 ([[Al-Anfal]]) |
+{{#ifexpr: ({{{1|1}}} = 9) | 9 ([[At-Tawba]]) |
+{{#ifexpr: ({{{1|1}}} = 10) | 10 ([[Yunus (sura)|Yunus]]) |
+{{#ifexpr: ({{{1|1}}} = 11) | 11 ([[Hud (sura)|Hud]]) |
+{{#ifexpr: ({{{1|1}}} = 12) | 12 ([[Yusuf (sura)|Yusuf]]) |
+{{#ifexpr: ({{{1|1}}} = 13) | 13 ([[Ar-Ra'd]]) |
+{{#ifexpr: ({{{1|1}}} = 14) | 14 ([[Ibrahim (sura)|Ibrahim]]) |
+{{#ifexpr: ({{{1|1}}} = 15) | 15 ([[Al-Hijr]]) |
+{{#ifexpr: ({{{1|1}}} = 16) | 16 ([[An-Nahl]]) |
+{{#ifexpr: ({{{1|1}}} = 17) | 17 ([[Al-Isra]]) |
+{{#ifexpr: ({{{1|1}}} = 18) | 18 ([[Al-Kahf]]) |
+{{#ifexpr: ({{{1|1}}} = 19) | 19 ([[Maryam (sura)|Maryam]]) |
+{{#ifexpr: ({{{1|1}}} = 20) | 20 ([[Ta-Ha]]) |
+{{#ifexpr: ({{{1|1}}} = 21) | 21 ([[Al-Anbiya]]) |
+{{#ifexpr: ({{{1|1}}} = 22) | 22 ([[Al-Hajj]]) |
+{{#ifexpr: ({{{1|1}}} = 23) | 23 ([[Al-Muminun]]) |
+{{#ifexpr: ({{{1|1}}} = 24) | 24 ([[An-Noor]]) |
+{{#ifexpr: ({{{1|1}}} = 25) | 25 ([[Al-Furqan]]) |
+{{#ifexpr: ({{{1|1}}} = 26) | 26 ([[Ash-Shu'ara]]) |
+{{#ifexpr: ({{{1|1}}} = 27) | 27 ([[An-Naml]]) |
+{{#ifexpr: ({{{1|1}}} = 28) | 28 ([[Al-Qisas]]) |
+{{#ifexpr: ({{{1|1}}} = 29) | 29 ([[Al-Ankabut]]) |
+{{#ifexpr: ({{{1|1}}} = 30) | 30 ([[Ar-Rum]]) |
+{{#ifexpr: ({{{1|1}}} = 31) | 31 ([[Luqman (sura)|Luqman]]) |
+{{#ifexpr: ({{{1|1}}} = 32) | 32 ([[As-Sajda]]) |
+{{#ifexpr: ({{{1|1}}} = 33) | 33 ([[Al-Ahzab]]) |
+{{#ifexpr: ({{{1|1}}} = 34) | 34 ([[Saba (sura)|Saba]]) |
+{{#ifexpr: ({{{1|1}}} = 35) | 35 ([[Fatir]]) |
+{{#ifexpr: ({{{1|1}}} = 36) | 36 ([[Ya-Seen]]) |
+{{#ifexpr: ({{{1|1}}} = 37) | 37 ([[As-Saaffat]]) |
+{{#ifexpr: ({{{1|1}}} = 38) | 38 ([[Sad (sura)|Sad]]) |
+{{#ifexpr: ({{{1|1}}} = 39) | 39 ([[Az-Zumar]]) |
+{{#ifexpr: ({{{1|1}}} = 40) | 40 ([[Ghafir]]) |
+{{#ifexpr: ({{{1|1}}} = 41) | 41 ([[Fussilat]]) |
+{{#ifexpr: ({{{1|1}}} = 42) | 42 ([[Ash-Shura]]) |
+{{#ifexpr: ({{{1|1}}} = 43) | 43 ([[Az-Zukhruf]]) |
+{{#ifexpr: ({{{1|1}}} = 44) | 44 ([[Ad-Dukhan]]) |
+{{#ifexpr: ({{{1|1}}} = 45) | 45 ([[Al-Jathiya]]) |
+{{#ifexpr: ({{{1|1}}} = 46) | 46 ([[Al-Ahqaf]]) |
+{{#ifexpr: ({{{1|1}}} = 47) | 47 ([[Muhammad (sura)|Muhammad]]) |
+{{#ifexpr: ({{{1|1}}} = 48) | 48 ([[Al-Fath]]) |
+{{#ifexpr: ({{{1|1}}} = 49) | 49 ([[Al-Hujraat]]) |
+{{#ifexpr: ({{{1|1}}} = 50) | 50 ([[Qaf (sura)|Qaf]]) |
+{{#ifexpr: ({{{1|1}}} = 51) | 51 ([[Adh-Dhariyat]]) |
+{{#ifexpr: ({{{1|1}}} = 52) | 52 ([[At-Tur]]) |
+{{#ifexpr: ({{{1|1}}} = 53) | 53 ([[An-Najm]]) |
+{{#ifexpr: ({{{1|1}}} = 54) | 54 ([[Al-Qamar]]) |
+{{#ifexpr: ({{{1|1}}} = 55) | 55 ([[Ar-Rahman]]) |
+{{#ifexpr: ({{{1|1}}} = 56) | 56 ([[Al-Waqia]]) |
+{{#ifexpr: ({{{1|1}}} = 57) | 57 ([[Al-Hadid]]) |
+{{#ifexpr: ({{{1|1}}} = 58) | 58 ([[Al-Mujadila]]) |
+{{#ifexpr: ({{{1|1}}} = 59) | 59 ([[Al-Hashr]]) |
+{{#ifexpr: ({{{1|1}}} = 60) | 60 ([[Al-Mumtahina]]) |
+{{#ifexpr: ({{{1|1}}} = 61) | 61 ([[As-Saff]]) |
+{{#ifexpr: ({{{1|1}}} = 62) | 62 ([[Al-Jumua]]) |
+{{#ifexpr: ({{{1|1}}} = 63) | 63 ([[Al-Munafiqoon]]) |
+{{#ifexpr: ({{{1|1}}} = 64) | 64 ([[At-Taghabun]]) |
+{{#ifexpr: ({{{1|1}}} = 65) | 65 ([[At-Talaq]]) |
+{{#ifexpr: ({{{1|1}}} = 66) | 66 ([[At-Tahrim]]) |
+{{#ifexpr: ({{{1|1}}} = 67) | 67 ([[Al-Mulk]]) |
+{{#ifexpr: ({{{1|1}}} = 68) | 68 ([[Al-Qalam]]) |
+{{#ifexpr: ({{{1|1}}} = 69) | 69 ([[Al-Haaqqa]]) |
+{{#ifexpr: ({{{1|1}}} = 70) | 70 ([[Al-Maarij]]) |
+{{#ifexpr: ({{{1|1}}} = 71) | 71 ([[Nooh (sura)|Nooh]]) |
+{{#ifexpr: ({{{1|1}}} = 72) | 72 ([[Al-Jinn]]) |
+{{#ifexpr: ({{{1|1}}} = 73) | 73 ([[Al-Muzzammil]]) |
+{{#ifexpr: ({{{1|1}}} = 74) | 74 ([[Al-Muddaththir]]) |
+{{#ifexpr: ({{{1|1}}} = 75) | 75 ([[Al-Qiyama]]) |
+{{#ifexpr: ({{{1|1}}} = 76) | 76 ([[Al-Insan]]) |
+{{#ifexpr: ({{{1|1}}} = 77) | 77 ([[Al-Mursalat]]) |
+{{#ifexpr: ({{{1|1}}} = 78) | 78 ([[An-Naba]]) |
+{{#ifexpr: ({{{1|1}}} = 79) | 79 ([[An-Naziat]]) |
+{{#ifexpr: ({{{1|1}}} = 80) | 80 ([[Abasa]]) |
+{{#ifexpr: ({{{1|1}}} = 81) | 81 ([[At-Takwir]]) |
+{{#ifexpr: ({{{1|1}}} = 82) | 82 ([[Al-Infitar]]) |
+{{#ifexpr: ({{{1|1}}} = 83) | 83 ([[Al-Mutaffifin]]) |
+{{#ifexpr: ({{{1|1}}} = 84) | 84 ([[Al-Inshiqaq]]) |
+{{#ifexpr: ({{{1|1}}} = 85) | 85 ([[Al-Burooj]]) |
+{{#ifexpr: ({{{1|1}}} = 86) | 86 ([[At-Tariq]]) |
+{{#ifexpr: ({{{1|1}}} = 87) | 87 ([[Al-Ala]]) |
+{{#ifexpr: ({{{1|1}}} = 88) | 88 ([[Al-Ghashiya]]) |
+{{#ifexpr: ({{{1|1}}} = 89) | 89 ([[Al-Fajr (sura)|Al-Fajr]]) |
+{{#ifexpr: ({{{1|1}}} = 90) | 90 ([[Al-Balad]]) |
+{{#ifexpr: ({{{1|1}}} = 91) | 91 ([[Ash-Shams]]) |
+{{#ifexpr: ({{{1|1}}} = 92) | 92 ([[Al-Lail]]) |
+{{#ifexpr: ({{{1|1}}} = 93) | 93 ([[Ad-Dhuha]]) |
+{{#ifexpr: ({{{1|1}}} = 94) | 94 ([[Al-Inshirah]]) |
+{{#ifexpr: ({{{1|1}}} = 95) | 95 ([[At-Tin]]) |
+{{#ifexpr: ({{{1|1}}} = 96) | 96 ([[Al-Alaq]]) |
+{{#ifexpr: ({{{1|1}}} = 97) | 97 ([[Al-Qadr]]) |
+{{#ifexpr: ({{{1|1}}} = 98) | 98 ([[Al-Bayyina]]) |
+{{#ifexpr: ({{{1|1}}} = 99) | 99 ([[Az-Zalzala]]) |
+{{#ifexpr: ({{{1|1}}} = 100) | 100 ([[Al-Adiyat]]) |
+{{#ifexpr: ({{{1|1}}} = 101) | 101 ([[Al-Qaria]]) |
+{{#ifexpr: ({{{1|1}}} = 102) | 102 ([[At-Takathur]]) |
+{{#ifexpr: ({{{1|1}}} = 103) | 103 ([[Al-Asr]]) |
+{{#ifexpr: ({{{1|1}}} = 104) | 104 ([[Al-Humaza]]) |
+{{#ifexpr: ({{{1|1}}} = 105) | 105 ([[Al-Fil]]) |
+{{#ifexpr: ({{{1|1}}} = 106) | 106 ([[Quraysh (sura)|Quraysh]]) |
+{{#ifexpr: ({{{1|1}}} = 107) | 107 ([[Al-Ma'un]]) |
+{{#ifexpr: ({{{1|1}}} = 108) | 108 ([[Al-Kawthar]]) |
+{{#ifexpr: ({{{1|1}}} = 109) | 109 ([[Al-Kafirun]]) |
+{{#ifexpr: ({{{1|1}}} = 110) | 110 ([[An-Nasr]]) |
+{{#ifexpr: ({{{1|1}}} = 111) | 111 ([[Al-Masadd]]) |
+{{#ifexpr: ({{{1|1}}} = 112) | 112 ([[Al-Ikhlas]]) |
+{{#ifexpr: ({{{1|1}}} = 113) | 113 ([[Al-Falaq]]) |
+{{#ifexpr: ({{{1|1}}} = 114) | 114 ([[An-Nas]]) |
+error }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }}, [[ayat|verse]] [http://www.usc.edu/dept/MSA/quran/{{three digit|{{{1|1}}}}}.qmt.html#{{three digit|{{{1|1}}}}}.{{three digit|{{{2|1}}}}} {{{2|1}}}]''':'''{{cquote| {{{3|Default text}}}&mdash; <small>[[Qur'an translations|translated]] by {{#ifexpr: ({{{4|0}}} = 0) | Unknown |
+{{#ifexpr: ({{{4|0}}} = 1) | [[Salman the Persian]] |
+{{#ifexpr: ({{{4|0}}} = 101) | [[Marmaduke Pickthall]] |
+{{#ifexpr: ({{{4|0}}} = 102) | [[Abdullah Yusuf Ali]] |
+{{#ifexpr: ({{{4|0}}} = 601) | [[Muhammad Muhsin Khan]] |
+{{#ifexpr: ({{{4|0}}} = 701) | [[Mohammed Habib Shakir|M. H. Shakir]] |
+{{#ifexpr: ({{{4|0}}} = 901) | [[Maulana Muhammad Ali]] |
+{{#ifexpr: ({{{4|0}}} = 902) | [[Rashad Khalifa]] |
+{{#ifexpr: ({{{4|0}}} = 1001) | [[Theodor Bibliander]] |
+{{#ifexpr: ({{{4|0}}} = 1002) | [[Robert of Ketton]] |
+{{#ifexpr: ({{{4|0}}} = 1003) | [[Andre du Ryer]] |
+{{#ifexpr: ({{{4|0}}} = 1004) | [[Alexander Ross (writer)|Alexander Ross]] |
+{{#ifexpr: ({{{4|0}}} = 1005) | [[Abraham Hinckelmann]] |
+{{#ifexpr: ({{{4|0}}} = 1006) | [[George Sale]] |
+{{#ifexpr: ({{{4|0}}} = 1007) | [[John Medows Rodwell]] |
+{{#ifexpr: ({{{4|0}}} = 1008) | [[Arthur John Arberry]] |
+error }} }} }} }} }} }} }} }} }} }} }} }} }} }} }} }}</small>
+{{#if:{{{trans|}}}|
+----
+[[Transliteration]]: {{{trans}}}| }}
+{{#if:{{{arab|}}}|
+----
+[[Arabic language|Arabic]]: {{{arab}}}| }} }}</font></div>
+
diff --git a/maintenance/tests/parserTests.php b/tests/parserTests.php
index 7793e6b8..99ea2ed4 100644
--- a/maintenance/tests/parserTests.php
+++ b/tests/parserTests.php
@@ -21,13 +21,13 @@
* http://www.gnu.org/copyleft/gpl.html
*
* @file
- * @ingroup Maintenance
+ * @ingroup Testing
*/
$options = array( 'quick', 'color', 'quiet', 'help', 'show-output', 'record', 'run-disabled' );
$optionsWithArgs = array( 'regex', 'seed', 'setversion' );
-require_once( dirname( __FILE__ ) . '/../commandLine.inc' );
+require_once( dirname( __FILE__ ) . '/../maintenance/commandLine.inc' );
if ( isset( $options['help'] ) ) {
echo <<<ENDS
@@ -51,7 +51,6 @@ Options:
--seed <n> Start the fuzz test from the specified seed
--help Show this help message
--run-disabled run disabled tests
- --upload Upload test results to remote wiki (per \$wgParserTestRemote)
ENDS;
exit( 0 );
diff --git a/tests/phpunit/Makefile b/tests/phpunit/Makefile
new file mode 100644
index 00000000..24536efc
--- /dev/null
+++ b/tests/phpunit/Makefile
@@ -0,0 +1,82 @@
+.PHONY: help test phpunit install coverage warning destructive parser noparser safe databaseless list-groups
+.DEFAULT: warning
+
+SHELL = /bin/sh
+CONFIG_FILE = $(shell pwd)/suite.xml
+PHP = php
+PU = ${PHP} phpunit.php --configuration ${CONFIG_FILE} ${FLAGS}
+
+all test: warning
+
+warning:
+ @echo "Run 'make help' to get usage"
+ @echo ""
+ @echo "WARNING -- some tests are DESTRUCTIVE and will alter your wiki."
+ @echo "DO NOT RUN THESE TESTS on a production wiki."
+ @echo ""
+ @echo "Until the default tests are made non-destructive, you can run"
+ @echo "the destructive tests like so:"
+ @echo ""
+ @echo " make destructive"
+ @echo ""
+ @echo "Some tests are expected to be safe, you can run them with"
+ @echo ""
+ @echo " make safe"
+ @echo ""
+ @echo "You are recommended to run the tests with read-only credentials."
+ @echo ""
+ @echo "If you don't have a database running, you can still run"
+ @echo ""
+ @echo " make databaseless"
+ @echo ""
+
+destructive: phpunit
+
+phpunit:
+ ${PU}
+
+install:
+ ./install-phpunit.sh
+
+tap:
+ ${PU} --tap
+
+coverage:
+ ${PU} --coverage-html ../../docs/code-coverage
+
+parser:
+ ${PU} --group Parser
+noparser:
+ ${PU} --exclude-group Parser,Broken,Stub
+
+safe:
+ ${PU} --exclude-group Broken,Destructive,Stub
+
+databaseless:
+ ${PU} --exclude-group Broken,Destructive,Database,Stub
+
+database:
+ ${PU} --exclude-group Broken,Destructive,Stub --group Database
+
+list-groups:
+ ${PU} --list-groups
+
+help:
+ # Usage:
+ # make <target> [OPTION=value]
+ #
+ # Targets:
+ # phpunit (default) Run all the tests with phpunit
+ # install Install PHPUnit from phpunit.de
+ # tap Run the tests individually through Test::Harness's prove(1)
+ # help You're looking at it!
+ # coverage Run the tests and generates an HTML code coverage report
+ # You will need the Xdebug PHP extension for the later.
+ # [no]parser Skip or only run Parser tests
+ #
+ # list-groups List availabe Tests groups.
+ #
+ # Options:
+ # CONFIG_FILE Path to a PHPUnit configuration file (default: suite.xml)
+ # FLAGS Additional flags to pass to PHPUnit
+ # PHP Path to php
diff --git a/tests/phpunit/MediaWikiLangTestCase.php b/tests/phpunit/MediaWikiLangTestCase.php
new file mode 100644
index 00000000..1cd6a3ba
--- /dev/null
+++ b/tests/phpunit/MediaWikiLangTestCase.php
@@ -0,0 +1,33 @@
+<?php
+
+/**
+ * Base class that store and restore the Language objects
+ */
+abstract class MediaWikiLangTestCase extends MediaWikiTestCase {
+ private static $oldLang;
+ private static $oldContLang;
+
+ public function setUp() {
+ global $wgLanguageCode, $wgLang, $wgContLang;
+
+ self::$oldLang = $wgLang;
+ self::$oldContLang = $wgContLang;
+
+ if( $wgLanguageCode != $wgContLang->getCode() ) die("nooo!");
+
+ $wgLanguageCode = 'en'; # For mainpage to be 'Main Page'
+
+ $wgContLang = $wgLang = Language::factory( $wgLanguageCode );
+ MessageCache::singleton()->disable();
+ }
+
+ public function tearDown() {
+ global $wgContLang, $wgLang, $wgLanguageCode;
+ $wgLang = self::$oldLang;
+
+ $wgContLang = self::$oldContLang;
+ $wgLanguageCode = $wgContLang->getCode();
+ self::$oldContLang = self::$oldLang = null;
+ }
+
+}
diff --git a/tests/phpunit/MediaWikiPHPUnitCommand.php b/tests/phpunit/MediaWikiPHPUnitCommand.php
new file mode 100644
index 00000000..c0d9f363
--- /dev/null
+++ b/tests/phpunit/MediaWikiPHPUnitCommand.php
@@ -0,0 +1,46 @@
+<?php
+
+class MediaWikiPHPUnitCommand extends PHPUnit_TextUI_Command {
+
+ static $additionalOptions = array(
+ 'regex=' => false,
+ 'file=' => false,
+ 'keep-uploads' => false,
+ );
+
+ public function __construct() {
+ foreach( self::$additionalOptions as $option => $default ) {
+ $this->longOptions[$option] = $option . 'Handler';
+ }
+
+ }
+
+ public static function main( $exit = true ) {
+ $command = new self;
+ $command->run($_SERVER['argv'], $exit);
+ }
+
+ public function __call( $func, $args ) {
+
+ if( substr( $func, -7 ) == 'Handler' ) {
+ if( is_null( $args[0] ) ) $args[0] = true; //Booleans
+ self::$additionalOptions[substr( $func, 0, -7 ) ] = $args[0];
+ }
+ }
+
+ public function showHelp() {
+ parent::showHelp();
+
+ print <<<EOT
+
+ParserTest-specific options:
+
+ --regex="<regex>" Only run parser tests that match the given regex
+ --file="<filename>" Prints the version and exits.
+ --keep-uploads Re-use the same upload directory for each test, don't delete it
+
+
+EOT;
+ }
+
+}
diff --git a/tests/phpunit/MediaWikiTestCase.php b/tests/phpunit/MediaWikiTestCase.php
new file mode 100644
index 00000000..64cb486b
--- /dev/null
+++ b/tests/phpunit/MediaWikiTestCase.php
@@ -0,0 +1,239 @@
+<?php
+
+abstract class MediaWikiTestCase extends PHPUnit_Framework_TestCase {
+ public $suite;
+ public $regex = '';
+ public $runDisabled = false;
+
+ /**
+ * @var DatabaseBase
+ */
+ protected $db;
+ protected $oldTablePrefix;
+ protected $useTemporaryTables = true;
+ private static $dbSetup = false;
+
+ /**
+ * Table name prefixes. Oracle likes it shorter.
+ */
+ const DB_PREFIX = 'unittest_';
+ const ORA_DB_PREFIX = 'ut_';
+
+ protected $supportedDBs = array(
+ 'mysql',
+ 'sqlite',
+ 'oracle'
+ );
+
+ function __construct( $name = null, array $data = array(), $dataName = '' ) {
+ parent::__construct( $name, $data, $dataName );
+
+ $this->backupGlobals = false;
+ $this->backupStaticAttributes = false;
+ }
+
+ function run( PHPUnit_Framework_TestResult $result = NULL ) {
+ /* Some functions require some kind of caching, and will end up using the db,
+ * which we can't allow, as that would open a new connection for mysql.
+ * Replace with a HashBag. They would not be going to persist anyway.
+ */
+ ObjectCache::$instances[CACHE_DB] = new HashBagOStuff;
+
+ if( $this->needsDB() ) {
+
+ global $wgDBprefix;
+
+ $this->db = wfGetDB( DB_MASTER );
+
+ $this->checkDbIsSupported();
+
+ $this->oldTablePrefix = $wgDBprefix;
+
+ if( !self::$dbSetup ) {
+ $this->initDB();
+ self::$dbSetup = true;
+ }
+
+ $this->addCoreDBData();
+ $this->addDBData();
+
+ parent::run( $result );
+
+ $this->resetDB();
+ } else {
+ parent::run( $result );
+ }
+ }
+
+ function dbPrefix() {
+ return $this->db->getType() == 'oracle' ? self::ORA_DB_PREFIX : self::DB_PREFIX;
+ }
+
+ function needsDB() {
+ $rc = new ReflectionClass( $this );
+ return strpos( $rc->getDocComment(), '@group Database' ) !== false;
+ }
+
+ /**
+ * Stub. If a test needs to add additional data to the database, it should
+ * implement this method and do so
+ */
+ function addDBData() {}
+
+ private function addCoreDBData() {
+
+ User::resetIdByNameCache();
+
+ //Make sysop user
+ $user = User::newFromName( 'UTSysop' );
+
+ if ( $user->idForName() == 0 ) {
+ $user->addToDatabase();
+ $user->setPassword( 'UTSysopPassword' );
+
+ $user->addGroup( 'sysop' );
+ $user->addGroup( 'bureaucrat' );
+ $user->saveSettings();
+ }
+
+
+ //Make 1 page with 1 revision
+ $article = new Article( Title::newFromText( 'UTPage' ) );
+ $article->doEdit( 'UTContent',
+ 'UTPageSummary',
+ EDIT_NEW,
+ false,
+ User::newFromName( 'UTSysop' ) );
+ }
+
+ private function initDB() {
+ global $wgDBprefix;
+ if ( $wgDBprefix === $this->dbPrefix() ) {
+ throw new MWException( 'Cannot run unit tests, the database prefix is already "unittest_"' );
+ }
+
+ $dbClone = new CloneDatabase( $this->db, $this->listTables(), $this->dbPrefix() );
+ $dbClone->useTemporaryTables( $this->useTemporaryTables );
+ $dbClone->cloneTableStructure();
+
+ if ( $this->db->getType() == 'oracle' ) {
+ $this->db->query( 'BEGIN FILL_WIKI_INFO; END;' );
+
+ # Insert 0 user to prevent FK violations
+ # Anonymous user
+ $this->db->insert( 'user', array(
+ 'user_id' => 0,
+ 'user_name' => 'Anonymous' ) );
+ }
+ }
+
+ /**
+ * Empty all tables so they can be repopulated for tests
+ */
+ private function resetDB() {
+ if( $this->db ) {
+ foreach( $this->listTables() as $tbl ) {
+ if( $tbl == 'interwiki' || $tbl == 'user' ) continue;
+ $this->db->delete( $tbl, '*', __METHOD__ );
+ }
+ }
+ }
+
+ protected function destroyDB() {
+ if ( $this->useTemporaryTables || is_null( $this->db ) ) {
+ # Don't need to do anything
+ return;
+ }
+
+ $tables = $this->db->listTables( $this->dbPrefix(), __METHOD__ );
+
+ foreach ( $tables as $table ) {
+ try {
+ $sql = $this->db->getType() == 'oracle' ? "DROP TABLE $table CASCADE CONSTRAINTS PURGE" : "DROP TABLE `$table`";
+ $this->db->query( $sql, __METHOD__ );
+ } catch( MWException $mwe ) {}
+ }
+
+ if ( $this->db->getType() == 'oracle' )
+ $this->db->query( 'BEGIN FILL_WIKI_INFO; END;', __METHOD__ );
+
+ CloneDatabase::changePrefix( $this->oldTablePrefix );
+ }
+
+
+ function __call( $func, $args ) {
+ static $compatibility = array(
+ 'assertInternalType' => 'assertType',
+ 'assertNotInternalType' => 'assertNotType',
+ 'assertInstanceOf' => 'assertType',
+ 'assertEmpty' => 'assertEmpty2',
+ );
+
+ if ( method_exists( $this->suite, $func ) ) {
+ return call_user_func_array( array( $this->suite, $func ), $args);
+ } elseif ( isset( $compatibility[$func] ) ) {
+ return call_user_func_array( array( $this, $compatibility[$func] ), $args);
+ } else {
+ throw new MWException( "Called non-existant $func method on "
+ . get_class( $this ) );
+ }
+ }
+
+ private function assertEmpty2( $value, $msg ) {
+ return $this->assertTrue( $value == '', $msg );
+ }
+
+ static private function unprefixTable( $tableName ) {
+ global $wgDBprefix;
+ return substr( $tableName, strlen( $wgDBprefix ) );
+ }
+
+ static private function isNotUnittest( $table ) {
+ return strpos( $table, 'unittest_' ) !== 0;
+ }
+
+ protected function listTables() {
+ global $wgDBprefix;
+
+ $tables = $this->db->listTables( $wgDBprefix, __METHOD__ );
+ $tables = array_map( array( __CLASS__, 'unprefixTable' ), $tables );
+
+ // Don't duplicate test tables from the previous fataled run
+ $tables = array_filter( $tables, array( __CLASS__, 'isNotUnittest' ) );
+
+ if ( $this->db->getType() == 'sqlite' ) {
+ $tables = array_flip( $tables );
+ // these are subtables of searchindex and don't need to be duped/dropped separately
+ unset( $tables['searchindex_content'] );
+ unset( $tables['searchindex_segdir'] );
+ unset( $tables['searchindex_segments'] );
+ $tables = array_flip( $tables );
+ }
+ return $tables;
+ }
+
+ protected function checkDbIsSupported() {
+ if( !in_array( $this->db->getType(), $this->supportedDBs ) ) {
+ throw new MWException( $this->db->getType() . " is not currently supported for unit testing." );
+ }
+ }
+
+ public function getCliArg( $offset ) {
+
+ if( isset( MediaWikiPHPUnitCommand::$additionalOptions[$offset] ) ) {
+ return MediaWikiPHPUnitCommand::$additionalOptions[$offset];
+ }
+
+ }
+
+ public function setCliArg( $offset, $value ) {
+
+ MediaWikiPHPUnitCommand::$additionalOptions[$offset] = $value;
+
+ }
+
+ public static function disableInterwikis( $prefix, &$data ) {
+ return false;
+ }
+}
+
diff --git a/tests/phpunit/README b/tests/phpunit/README
new file mode 100644
index 00000000..0a32ba17
--- /dev/null
+++ b/tests/phpunit/README
@@ -0,0 +1,53 @@
+== MediaWiki PHPUnit Tests ==
+
+The unit tests for MediaWiki are implemented using the PHPUnit testing
+framework and require PHPUnit to run.
+
+
+=== WARNING ===
+
+Some of the unit tests are DESTRUCTIVE and WILL ALTER YOUR WIKI'S CONTENTS.
+
+DO NOT RUN THESE TESTS ON A PRODUCTION SYSTEM OR ON ANY SYSTEM WHERE YOU NEED
+TO RETAIN YOUR DATA.
+
+
+== Installation ==
+
+If PHPUnit is not installed, follow the installation instructions in the
+PHPUnit Manual at:
+
+ http://www.phpunit.de/manual/current/en/installation.html
+
+- or -
+
+On Unix-like operating systems, run:
+
+ make install
+
+
+== Running tests ==
+
+The tests are run from your operating system's command line.
+
+Ensure that you are in the tests/phpunit directory of your MediaWiki
+installation.
+
+
+On Unix-like operating systems, the tests runs are controlled with a makefile.
+Run command:
+
+ make help
+
+for a full list of options for running tests.
+
+
+On Windows-family operating systems, run the 'run-tests.bat' batch file.
+
+
+=== Writing tests ===
+
+A guide to writing unit tests for MediaWiki can be found at:
+
+ http://mediawiki.org/wiki/Unit_Testing
+
diff --git a/tests/phpunit/TODO b/tests/phpunit/TODO
new file mode 100644
index 00000000..b2fa7fb6
--- /dev/null
+++ b/tests/phpunit/TODO
@@ -0,0 +1,10 @@
+== Things To Do ==
+* Most of the tests are named poorly; naming should describe a use case in story-like language, not simply identify the
+unit under test. An example would be the difference between testCalculate and testAddingIntegersTogetherWorks.
+* Many of the tests make multiple assertions, and are thus not unitary tests. By using data-providers and more use-case
+oriented test selection nearly all of these cases can be easily resolved.
+* Some of the test files are either incorrectly named or in the wrong folder. Tests should be organized in a mirrored
+structure to the source they are testing, and named the same, with the exception of the word "Test" at the end.
+* Shared set-up code or base classes are present, but usually named improperly or appear to be poorly factored. Support
+code should share as much of the same naming as the code it's supporting, and test and test-case depenencies should be
+considered to resolve other shared needs.
diff --git a/tests/phpunit/bootstrap.php b/tests/phpunit/bootstrap.php
new file mode 100644
index 00000000..b023fdcf
--- /dev/null
+++ b/tests/phpunit/bootstrap.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * Bootstrapping for MediaWiki PHPUnit tests
+ * This file is included by phpunit and is NOT in the global scope.
+ *
+ * @file
+ */
+
+if ( !defined( 'MW_PHPUNIT_TEST' ) ) {
+ echo <<<EOF
+You are running these tests directly from phpunit. You may not have all globals correctly set.
+Running phpunit.php instead is recommended.
+EOF;
+ require_once ( dirname( __FILE__ ) . "/phpunit.php" );
+}
+
+// Output a notice when running with older versions of PHPUnit
+if ( !version_compare( PHPUnit_Runner_Version::id(), "3.4.1", ">" ) ) {
+ echo <<<EOF
+********************************************************************************
+
+These tests run best with version PHPUnit 3.4.2 or better. Earlier versions may
+show failures because earlier versions of PHPUnit do not properly implement
+dependencies.
+
+********************************************************************************
+
+EOF;
+}
+
+/** @todo Check if this is really needed */
+MessageCache::destroyInstance();
diff --git a/tests/phpunit/data/media/1bit-png.png b/tests/phpunit/data/media/1bit-png.png
new file mode 100644
index 00000000..254e403a
--- /dev/null
+++ b/tests/phpunit/data/media/1bit-png.png
Binary files differ
diff --git a/tests/phpunit/data/media/Animated_PNG_example_bouncing_beach_ball.png b/tests/phpunit/data/media/Animated_PNG_example_bouncing_beach_ball.png
new file mode 100644
index 00000000..c2f45d90
--- /dev/null
+++ b/tests/phpunit/data/media/Animated_PNG_example_bouncing_beach_ball.png
Binary files differ
diff --git a/tests/phpunit/data/media/Gtk-media-play-ltr.svg b/tests/phpunit/data/media/Gtk-media-play-ltr.svg
new file mode 100644
index 00000000..fc22338a
--- /dev/null
+++ b/tests/phpunit/data/media/Gtk-media-play-ltr.svg
@@ -0,0 +1,35 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN" "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd" [
+ <!ATTLIST svg
+ xmlns:xlink CDATA #FIXED "http://www.w3.org/1999/xlink">
+]>
+<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:a="http://ns.adobe.com/AdobeSVGViewerExtensions/3.0/" version="1" x="0.00000000" y="0.00000000" width="60.0000000" height="60.0000000" viewBox="0 0 256 256" id="svg548">
+ <defs id="defs572"/>
+ <g style="font-size:12;stroke:#000000;" id="Layer_1">
+ <path d="M 256 256 L 0 256 L 0 0 L 256 0 L 256 256 z " style="fill:none;stroke:none;" id="path550"/>
+ </g>
+ <g style="font-size:12;stroke:#000000;" id="Layer_2">
+ <path d="M 35.159 8.29 C 32.18 10.01 30.329 13.216 30.329 16.656 L 30.329 245.539 C 30.329 248.978 32.179 252.184 35.158 253.902 C 38.138 255.623 41.839 255.623 44.817 253.904 L 243.037 139.463 C 246.016 137.742 247.867 134.537 247.867 131.098 C 247.867 127.658 246.016 124.452 243.037 122.731 L 44.818 8.29 C 41.839 6.57 38.138 6.57 35.159 8.29 z " style="opacity:0.2;stroke:none;" id="path552"/>
+ <path d="M 27.314 2.29 C 24.335 4.01 22.484 7.216 22.484 10.656 L 22.484 239.538 C 22.484 242.977 24.335 246.184 27.313 247.903 C 30.293 249.623 33.994 249.623 36.973 247.905 L 235.193 133.464 C 238.172 131.742 240.023 128.536 240.023 125.098 C 240.023 121.658 238.172 118.452 235.193 116.732 L 36.975 2.29 C 33.996 0.57 30.294 0.57 27.314 2.29 z " style="fill:#003399;stroke:none;" id="path553"/>
+ <path d="M 29.247 5.636 C 27.454 6.672 26.349 8.585 26.349 10.656 L 26.349 239.538 C 26.349 241.608 27.453 243.521 29.247 244.558 C 31.04 245.592 33.249 245.592 35.042 244.558 L 233.261 130.117 C 235.054 129.081 236.159 127.169 236.159 125.098 C 236.159 123.027 235.054 121.114 233.261 120.078 L 35.042 5.636 C 33.25 4.601 31.041 4.601 29.247 5.636 z " style="fill:#003399;stroke:none;" id="path554"/>
+ <path d="M 32.145 10.656 L 230.364 125.097 L 32.145 239.538 L 32.145 10.656 z " style="fill:#3399ff;stroke:none;" id="path555"/>
+ <linearGradient x1="109.971703" y1="8.70849991" x2="109.971703" y2="107.238800" id="XMLID_1_" gradientUnits="userSpaceOnUse" spreadMethod="pad">
+ <stop style="stop-color:#ffffff;stop-opacity:1;" offset="0.00000000" id="stop557"/>
+ <stop style="stop-color:#3399ff;stop-opacity:1;" offset="1.00000000" id="stop558"/>
+ <a:midPointStop offset="0" style="stop-color:#FFFFFF" id="midPointStop559"/>
+ <a:midPointStop offset="0.5" style="stop-color:#FFFFFF" id="midPointStop560"/>
+ <a:midPointStop offset="1" style="stop-color:#3399FF" id="midPointStop561"/>
+ </linearGradient>
+ <path d="M 32.145 141.057 C 36.775 141.258 41.456 141.368 46.183 141.368 C 105.41 141.368 157.526 125.124 187.799 100.524 L 32.145 10.656 L 32.145 141.057 z " style="fill:url(#XMLID_1_);stroke:none;" id="path562"/>
+ <linearGradient x1="109.972198" y1="264.875000" x2="109.972198" y2="145.249298" id="XMLID_2_" gradientUnits="userSpaceOnUse" spreadMethod="pad">
+ <stop style="stop-color:#ccffff;stop-opacity:1;" offset="0.00000000" id="stop564"/>
+ <stop style="stop-color:#3399ff;stop-opacity:1;" offset="1.00000000" id="stop565"/>
+ <a:midPointStop offset="0" style="stop-color:#CCFFFF" id="midPointStop566"/>
+ <a:midPointStop offset="0.5" style="stop-color:#CCFFFF" id="midPointStop567"/>
+ <a:midPointStop offset="1" style="stop-color:#3399FF" id="midPointStop568"/>
+ </linearGradient>
+ <path d="M 32.145 108.517 C 36.775 108.315 41.456 108.206 46.183 108.206 C 105.41 108.206 157.526 124.451 187.799 149.05 L 32.145 238.916 L 32.145 108.517 z " style="fill:url(#XMLID_2_);stroke:none;" id="path569"/>
+ <path d="M 37.145 19.316 C 36.526 19.673 36.145 20.334 36.145 21.048 L 36.145 162.69 C 36.145 163.768 36.999 198.629 38.077 198.667 C 39.154 198.703 40.41 48.03 48.066 40.375 C 55.722 32.72 212.492 122.951 213 122 C 213.507 121.049 186.703 104.509 185.77 103.97 L 39.145 19.316 C 38.526 18.959 37.764 18.959 37.145 19.316 z " style="opacity:0.5;fill:#ffffff;stroke:none;" id="path570"/>
+ </g>
+</svg> \ No newline at end of file
diff --git a/tests/phpunit/data/media/Png-native-test.png b/tests/phpunit/data/media/Png-native-test.png
new file mode 100644
index 00000000..a0b81ca9
--- /dev/null
+++ b/tests/phpunit/data/media/Png-native-test.png
Binary files differ
diff --git a/tests/phpunit/data/media/QA_icon.svg b/tests/phpunit/data/media/QA_icon.svg
new file mode 100644
index 00000000..6b5d86e4
--- /dev/null
+++ b/tests/phpunit/data/media/QA_icon.svg
@@ -0,0 +1,77 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+<svg:svg xmlns:svg="http://www.w3.org/2000/svg" version="1.0" width="60" height="60" viewBox="0 0 128 128" id="svg548">
+ <svg:defs id="defs601">
+ <svg:linearGradient id="linearGradient2802">
+ <svg:stop style="stop-color:#1d12aa;stop-opacity:1" offset="0" id="stop2804"/>
+ <svg:stop style="stop-color:#8b12aa;stop-opacity:0" offset="1" id="stop2806"/>
+ </svg:linearGradient>
+ <svg:linearGradient id="linearGradient2812">
+ <svg:stop style="stop-color:#1d25aa;stop-opacity:1" offset="0" id="stop2814"/>
+ <svg:stop style="stop-color:#8b12aa;stop-opacity:0" offset="1" id="stop2816"/>
+ </svg:linearGradient>
+ <svg:marker refX="0" refY="0" orient="auto" style="overflow:visible" id="Arrow1Lstart">
+ <svg:path d="M 0,0 L 5,-5 L -12.5,0 L 5,5 L 0,0 z " transform="scale(0.8)" style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt;marker-start:none" id="path2991"/>
+ </svg:marker>
+ <svg:linearGradient id="linearGradient4766">
+ <svg:stop style="stop-color:#0447ff;stop-opacity:1" offset="0" id="stop4768"/>
+ <svg:stop style="stop-color:#000000;stop-opacity:0" offset="1" id="stop4770"/>
+ </svg:linearGradient>
+ <svg:linearGradient x1="55.4272" y1="102.1953" x2="55.4272" y2="-7.1773" id="XMLID_1_" gradientUnits="userSpaceOnUse" gradientTransform="translate(0, -0.496766)" spreadMethod="pad">
+ <svg:stop style="stop-color:#7c74ff;stop-opacity:1" offset="0" id="stop556"/>
+ <svg:stop style="stop-color:#b3caff;stop-opacity:1" offset="0.41010001" id="stop557"/>
+ <svg:stop style="stop-color:#dfeaff;stop-opacity:1" offset="0.8258" id="stop558"/>
+ <svg:stop style="stop-color:#ffffff;stop-opacity:1" offset="1" id="stop559"/>
+ <midPointStop offset="0" style="stop-color:#7C74FF" id="midPointStop560"/>
+ <midPointStop offset="0.5" style="stop-color:#7C74FF" id="midPointStop561"/>
+ <midPointStop offset="0.4101" style="stop-color:#B3CAFF" id="midPointStop562"/>
+ <midPointStop offset="0.5" style="stop-color:#B3CAFF" id="midPointStop563"/>
+ <midPointStop offset="0.8258" style="stop-color:#DFEAFF" id="midPointStop564"/>
+ <midPointStop offset="0.5" style="stop-color:#DFEAFF" id="midPointStop565"/>
+ <midPointStop offset="1" style="stop-color:#FFFFFF" id="midPointStop566"/>
+ </svg:linearGradient>
+ <svg:linearGradient x1="54.7607" y1="7.2758999" x2="54.7607" y2="57.487301" id="XMLID_2_" gradientUnits="userSpaceOnUse" spreadMethod="pad">
+ <svg:stop style="stop-color:#ffffff;stop-opacity:1" offset="0" id="stop569"/>
+ <svg:stop style="stop-color:#b3caff;stop-opacity:1" offset="1" id="stop570"/>
+ <midPointStop offset="0" style="stop-color:#FFFFFF" id="midPointStop571"/>
+ <midPointStop offset="0.5" style="stop-color:#FFFFFF" id="midPointStop572"/>
+ <midPointStop offset="1" style="stop-color:#B3CAFF" id="midPointStop573"/>
+ </svg:linearGradient>
+ <svg:linearGradient x1="83.637703" y1="119.3457" x2="83.637703" y2="42.033901" id="XMLID_3_" gradientUnits="userSpaceOnUse" spreadMethod="pad">
+ <svg:stop style="stop-color:#006dff;stop-opacity:1" offset="0" id="stop577"/>
+ <svg:stop style="stop-color:#94caff;stop-opacity:1" offset="0.41010001" id="stop578"/>
+ <svg:stop style="stop-color:#dcf0ff;stop-opacity:1" offset="0.8258" id="stop579"/>
+ <svg:stop style="stop-color:#ffffff;stop-opacity:1" offset="1" id="stop580"/>
+ <midPointStop offset="0" style="stop-color:#006DFF" id="midPointStop581"/>
+ <midPointStop offset="0.5" style="stop-color:#006DFF" id="midPointStop582"/>
+ <midPointStop offset="0.4101" style="stop-color:#94CAFF" id="midPointStop583"/>
+ <midPointStop offset="0.5" style="stop-color:#94CAFF" id="midPointStop584"/>
+ <midPointStop offset="0.8258" style="stop-color:#DCF0FF" id="midPointStop585"/>
+ <midPointStop offset="0.5" style="stop-color:#DCF0FF" id="midPointStop586"/>
+ <midPointStop offset="1" style="stop-color:#FFFFFF" id="midPointStop587"/>
+ </svg:linearGradient>
+ <svg:linearGradient x1="265.11331" y1="52.250999" x2="265.11331" y2="87.743599" id="XMLID_4_" gradientUnits="userSpaceOnUse" gradientTransform="matrix(-1, 0, 0, 1, 349, 0)" spreadMethod="pad">
+ <svg:stop style="stop-color:#ffffff;stop-opacity:1" offset="0" id="stop590"/>
+ <svg:stop style="stop-color:#94caff;stop-opacity:1" offset="1" id="stop591"/>
+ <midPointStop offset="0" style="stop-color:#FFFFFF" id="midPointStop592"/>
+ <midPointStop offset="0.5" style="stop-color:#FFFFFF" id="midPointStop593"/>
+ <midPointStop offset="1" style="stop-color:#94CAFF" id="midPointStop594"/>
+ </svg:linearGradient>
+ </svg:defs>
+ <svg:g style="font-size:12px;stroke:#000000" id="Layer_2">
+ <svg:path d="M 128,128 L 0,128 L 0,0 L 128,0 L 128,128 z " style="fill:none;stroke:none" id="path550"/>
+ </svg:g>
+ <svg:g style="font-size:12px;stroke:#000000" id="Layer_1"/>
+ <svg:path d="M 9.041,92.189 C 9.041,92.189 21.955,85.393 30.11,67.382 L 52.198,76.897 C 52.198,76.897 46.422,92.189 9.041,92.189 z " style="font-size:12px;fill:#00008d;stroke:none" id="path553"/>
+ <svg:path d="M 1.905,49.712 C 1.905,70.733 25.867,87.773 55.427,87.773 C 84.987,87.773 108.949,70.733 108.949,49.712 C 108.949,28.692 84.987,11.651 55.427,11.651 C 25.867,11.651 1.905,28.692 1.905,49.712 z " style="font-size:12px;fill:#00008d;stroke:none" id="path554"/>
+ <svg:path d="M 55.427,13.193234 C 27.039,13.193234 3.943,29.352234 3.943,49.214234 C 3.943,61.333234 12.55,72.067234 25.703,78.598234 C 22.202,83.521234 18.6,87.075234 15.722,89.464234 C 27.71,88.800234 35.664,86.388234 40.883,83.762234 C 45.498,84.716234 50.377,85.236234 55.427,85.236234 C 83.815,85.236234 106.91,69.077234 106.91,49.215234 C 106.91,29.353234 83.815,13.193234 55.427,13.193234 z " style="font-size:12px;fill:url(#XMLID_1_);stroke:none" id="path567"/>
+ <svg:path d="M 12.999,35.282 C 30.044,44.81 49.474,47.149 69.356,41.962 C 73.46,40.821 77.627,39.436 81.656,38.096 C 86.51,36.482 91.504,34.846 96.524,33.573 C 88.559,23.302 72.888,16.748 55.428,16.748 C 37.091,16.749 20.396,24.128 12.999,35.282 z " style="font-size:12px;fill:url(#XMLID_2_);stroke:none" id="path574"/>
+ <svg:text x="32.487015" y="68.006958" style="font-size:48px;font-style:normal;font-weight:bold;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:Microsoft Sans Serif" id="text2303" xml:space="preserve"><svg:tspan x="32.487015" y="68.006958" style="font-size:64px;font-style:normal;font-weight:bold;fill:#000000;fill-opacity:1;font-family:sans" id="tspan2305">?</svg:tspan></svg:text>
+ <svg:path d="M 42.401,82.248 C 42.401,98.96 60.9,112.557 83.638,112.557 C 86.794,112.557 90.053,112.231 93.329,111.651 C 98.255,113.817 104.317,115.142 111.437,115.538 L 126.095,116.35 L 114.798,106.972 C 114.067,106.367 113.056,105.441 111.922,104.237 C 120.165,98.531 124.875,90.66 124.875,82.25 C 124.875,65.538 106.376,51.942 83.637,51.942 C 60.9,51.94 42.401,65.536 42.401,82.248 z " style="font-size:12px;fill:#0032a4;stroke:none" id="path575"/>
+ <svg:path d="M 44.823,82.248 C 44.823,97.624 62.236,110.133 83.637,110.133 C 87.009,110.133 90.357,109.784 93.616,109.163 C 98.327,111.368 104.334,112.717 111.571,113.118 L 118.9,113.524 L 113.251,108.835 C 111.96,107.763 110.162,106.071 108.268,103.754 C 117.176,98.487 122.454,90.629 122.454,82.248 C 122.454,66.871 105.042,54.363 83.639,54.363 C 62.236,54.363 44.823,66.871 44.823,82.248 z " style="font-size:12px;fill:url(#XMLID_3_);stroke:none" id="path588"/>
+ <svg:path d="M 83.638,57.505 C 98.257,57.505 110.759,63.777 115.655,72.576 C 102.935,80.147 88.183,82.013 73.429,78.165 C 66.228,76.163 59.247,73.276 52.12,71.719 C 57.332,63.374 69.498,57.505 83.638,57.505 z " style="font-size:12px;fill:url(#XMLID_4_);stroke:none" id="path595"/>
+ <svg:g transform="matrix(1.38561, 0, 0, 1.38561, -32.2514, -30.5491)" id="g4248">
+ <svg:path d="M 103.21356 24.205935 A 24.311146 23.627199 0 1 1 54.591267,24.205935 A 24.311146 23.627199 0 1 1 103.21356 24.205935 z" transform="matrix(0.148134, 0, 0, 0.152972, 71.9504, 64.0705)" style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:6.64218044;stroke-linecap:square;marker-start:none;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" id="path3881"/>
+ <svg:path d="M 87.539971,77.627004 C 87.539971,78.31674 87.591107,91.916423 87.60756,94.355578 C 87.61771,95.860439 89.879004,95.050778 90.026509,95.980703 C 90.2785,97.569343 86.888685,97.025111 86.718511,97.01762 C 85.743882,96.974724 82.425764,97.036144 81.376943,97.036144 C 81.101002,97.036144 77.578516,97.69007 77.314172,96.309196 C 77.071189,95.039902 79.49446,95.29146 79.833236,94.380195 C 81.070282,91.052684 81.154686,84.029315 80.322646,79.891188 C 79.902772,77.802954 76.928763,78.363984 77.263297,76.859643 C 77.479369,75.888015 78.579837,75.778912 79.35102,75.513942 C 81.049574,74.930337 83.123826,75.068206 84.579101,74.012707 C 86.187481,72.846162 87.539971,75.631913 87.539971,77.627004 z " style="fill:#ffffff;fill-opacity:1;stroke:#000000;stroke-width:0.99986994;stroke-linecap:square;marker-start:none;stroke-miterlimit:4;stroke-dashoffset:0;stroke-opacity:1" id="path4774"/>
+ </svg:g>
+</svg:svg> \ No newline at end of file
diff --git a/tests/phpunit/data/media/README b/tests/phpunit/data/media/README
new file mode 100644
index 00000000..fe3bc682
--- /dev/null
+++ b/tests/phpunit/data/media/README
@@ -0,0 +1,38 @@
+This directory contains media files for use with the
+tests in includes/media directory.
+
+Image credits:
+
+QA_icon.svg:
+http://es.wikipedia.org/wiki/Archivo:QA_icon.svg
+GNU Lesser General Public License
+~~helix84 (16.4.2007), Philverney (6.12.2005) David Vignoni
+
+Gtk-media-play-ltr.svg
+http://commons.wikimedia.org/wiki/File:Gtk-media-play-ltr.svg
+GNU Lesser General Public License
+http://ftp.gnome.org/pub/GNOME/sources/gnome-themes-extras/0.9/gnome-themes-extras-0.9.0.tar.gz
+David Vignoni
+
+US_states_by_total_state_tax_revenue.svg
+http://commons.wikimedia.org/wiki/File:US_states_by_total_state_tax_revenue.svg
+CC-BY 3.0
+TastyCakes on English Wikipedia
+
+greyscale-na-png.png, rgb-png.png, Xmp-exif-multilingual_test.jpg
+greyscale-png.png, 1bit-png.png, Png-native-test.png, rgb-na-png.png,
+test.tiff, test.jpg, jpeg-comment-multiple.jpg, jpeg-comment-utf.jpg,
+jpeg-comment-iso8859-1.jpg, jpeg-comment-binary.jpg, jpeg-xmp-psir.jpg,
+jpeg-xmp-alt.jpg, animated.gif, exif-user-comment.jpg, animated-xmp.gif,
+iptc-timetest-invalid.jpg, jpeg-iptc-bad-hash.jpg, iptc-timetest.jpg,
+xmp.png, nonanimated.gif, exif-gps.jpg, jpeg-xmp-psir.xmp, jpeg-iptc-good-hash.jpg,
+jpeg-padding-even.jpg, jpeg-padding-odd.jpg
+Are all by Bawolff. I don't think they contain enough originality to
+claim copyright, but on the off chance they do, feel free to use them
+however you feel fit, without restriction.
+
+Animated_PNG_example_bouncing_beach_ball.png
+http://commons.wikimedia.org/wiki/File:Animated_PNG_example_bouncing_beach_ball.png (originally http://www.treebuilder.de/default.asp?file=89031.xml )
+Public Domain
+Holger Will
+
diff --git a/tests/phpunit/data/media/US_states_by_total_state_tax_revenue.svg b/tests/phpunit/data/media/US_states_by_total_state_tax_revenue.svg
new file mode 100644
index 00000000..9afea859
--- /dev/null
+++ b/tests/phpunit/data/media/US_states_by_total_state_tax_revenue.svg
@@ -0,0 +1,248 @@
+<ns0:svg height="592.78998" id="svg2275" version="1.0" width="958.69" ns1:docbase="C:\Users\Adam\Desktop" ns1:docname="Blank_US_Map_with_borders.svg" ns1:version="0.32" ns2:output_extension="org.inkscape.output.svg.inkscape" ns2:version="0.46" xmlns:ns0="http://www.w3.org/2000/svg" xmlns:ns1="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" xmlns:ns2="http://www.inkscape.org/namespaces/inkscape">
+ <ns0:metadata id="metadata2625">
+ <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <ns4:Work rdf:about="" xmlns:ns4="http://creativecommons.org/ns#">
+ <ns5:format xmlns:ns5="http://purl.org/dc/elements/1.1/">image/svg+xml</ns5:format>
+ <ns5:type rdf:resource="http://purl.org/dc/dcmitype/StillImage" xmlns:ns5="http://purl.org/dc/elements/1.1/" />
+ </ns4:Work>
+ </rdf:RDF>
+ </ns0:metadata>
+ <ns0:defs id="defs2623">
+ <ns2:perspective id="perspective226" ns1:type="inkscape:persp3d" ns2:persp3d-origin="479.345 : 197.59666 : 1" ns2:vp_x="0 : 296.39499 : 1" ns2:vp_y="0 : 1000 : 0" ns2:vp_z="958.69 : 296.39499 : 1" />
+ </ns0:defs>
+ <ns1:namedview bordercolor="#666666" borderopacity="1.0" gridtolerance="10.0" guidetolerance="10.0" id="base" objecttolerance="10.0" pagecolor="#ffffff" showgrid="false" ns2:current-layer="svg2275" ns2:cx="479.345" ns2:cy="299.1307" ns2:pageopacity="0.0" ns2:pageshadow="2" ns2:window-height="820" ns2:window-width="1440" ns2:window-x="-8" ns2:window-y="-8" ns2:zoom="0.99941554" />
+ <ns0:path d="M 798.49579,591.98217 L 799.73403,593.07468 L 802.54072,590.88965 L 807.98899,586.51962 L 811.78627,582.48573 L 814.3453,575.59451 L 815.3359,573.82969 L 815.501,570.30004 L 814.75805,570.80427 L 813.76746,573.74564 L 812.28156,578.53588 L 808.97958,583.99844 L 804.52191,588.36847 L 801.05483,590.38542 L 798.49579,591.98217 z M 784.71002,597.19259 L 787.18651,596.52028 L 788.5073,596.26817 L 789.99319,593.83102 L 792.38713,592.15024 L 793.70792,592.65448 L 795.44146,592.99063 L 795.8542,594.08315 L 792.30458,595.34374 L 788.012,596.85644 L 785.61807,598.11703 L 784.71002,597.19259 z M 657.3254,482.07418 L 660.96585,481.47149 L 667.07449,479.28647 L 673.18314,478.78224 L 677.6408,478.10993 L 685.40042,479.95879 L 693.65535,483.99266 L 695.30633,485.50536 L 698.2781,486.6819 L 699.92909,488.69884 L 700.25929,491.55616 L 703.56126,490.21154 L 707.52362,490.21154 L 711.15578,488.1946 L 714.95305,484.49689 L 718.08992,484.66497 L 718.58522,483.48842 L 717.75972,482.47995 L 717.92482,480.46302 L 722.05228,479.62263 L 724.69386,479.62263 L 727.66563,481.13533 L 731.95819,482.64803 L 734.43467,486.51382 L 737.24134,487.52229 L 738.39703,491.05193 L 741.8641,492.73271 L 743.51508,495.42195 L 745.49627,496.09427 L 750.77942,497.43889 L 752.1002,500.63237 L 755.23708,504.49816 L 755.23708,514.41476 L 753.75119,519.28902 L 754.08139,522.14634 L 755.40217,527.18868 L 757.21826,531.39063 L 758.04375,530.8864 L 759.52964,526.18021 L 756.88806,525.17175 L 756.55786,524.49943 L 758.20885,523.82712 L 762.83161,524.83559 L 762.9967,526.51637 L 759.69473,532.23102 L 757.54845,534.75219 L 761.18062,538.61798 L 763.8222,541.81146 L 766.79397,547.35803 L 769.76574,551.3919 L 771.91202,556.60232 L 773.7281,556.93847 L 775.37909,554.75346 L 777.19517,555.93001 L 779.83675,560.13195 L 780.49714,563.82967 L 783.63401,568.36777 L 784.4595,567.02315 L 788.42187,567.3593 L 792.05403,569.7124 L 795.5211,575.09089 L 796.34659,578.62053 L 796.67679,581.64593 L 797.83248,582.6544 L 799.15327,583.15863 L 801.62975,582.15016 L 803.11563,580.46938 L 807.078,580.3013 L 810.21487,578.7886 L 813.02154,575.42704 L 812.52624,573.41011 L 812.19605,570.88894 L 812.85644,568.87201 L 812.52624,566.85507 L 815.00272,565.51045 L 815.33292,561.98081 L 814.67252,560.13195 L 814.17723,547.69419 L 812.85644,539.79453 L 808.23368,531.22255 L 804.60152,525.17175 L 801.95994,519.62517 L 798.98817,516.59977 L 796.0164,508.86819 L 796.84189,507.52356 L 797.99758,506.17894 L 796.34659,503.15354 L 792.21913,499.28775 L 787.26618,493.5731 L 783.46891,487.01806 L 778.02066,477.26954 L 774.21165,467.14054 L 771.56179,458.12552" id="FL_Gulf" style="fill:#cccccc;fill-opacity:0;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 772.07835,458.61245 L 774.21165,467.14054 L 778.02066,477.26954 L 783.46891,487.01806 L 787.26618,493.5731 L 792.21913,499.28775 L 796.34659,503.15354 L 797.99758,506.17894 L 796.84189,507.52356 L 796.0164,508.86819 L 798.98817,516.59977 L 801.95994,519.62517 L 804.60152,525.17175 L 808.23368,531.22255 L 812.85644,539.79453 L 814.17723,547.69419 L 814.67252,560.13195 L 815.33292,561.98081 L 815.00272,565.51045 L 812.52624,566.85507 L 812.85644,568.87201 L 812.19605,570.88894 L 812.52624,573.41011 L 813.02154,575.42704 L 810.21487,578.7886 L 807.078,580.3013 L 803.11563,580.46938 L 801.62975,582.15016 L 799.15327,583.15863 L 797.83248,582.6544 L 796.67679,581.64593 L 796.34659,578.62053 L 795.5211,575.09089 L 792.05403,569.7124 L 788.42187,567.3593 L 784.4595,567.02315 L 783.63401,568.36777 L 780.49714,563.82967 L 779.83675,560.13195 L 777.19517,555.93001 L 775.37909,554.75346 L 773.7281,556.93847 L 771.91202,556.60232 L 769.76574,551.3919 L 766.79397,547.35803 L 763.8222,541.81146 L 761.18062,538.61798 L 757.54845,534.75219 L 759.69473,532.23102 L 762.9967,526.51637 L 762.83161,524.83559 L 758.20885,523.82712 L 756.55786,524.49943 L 756.88806,525.17175 L 759.52964,526.18021 L 758.04375,530.8864 L 757.21826,531.39063 L 755.40217,527.18868 L 754.08139,522.14634 L 753.75119,519.28902 L 755.23708,514.41476 L 755.23708,504.49816 L 752.1002,500.63237 L 750.77942,497.43889 L 745.49627,496.09427 L 743.51508,495.42195 L 741.8641,492.73271 L 738.39703,491.05193 L 737.24134,487.52229 L 734.43467,486.51382 L 731.95819,482.64803 L 727.66563,481.13533 L 724.69386,479.62263 L 722.05228,479.62263 L 717.92482,480.46302 L 717.75972,482.47995 L 718.58522,483.48842 L 718.08992,484.66497 L 714.95305,484.49689 L 711.15578,488.1946 L 707.52362,490.21154 L 703.56126,490.21154 L 700.25929,491.55616 L 699.92909,488.69884 L 698.2781,486.6819 L 695.30633,485.50536 L 693.65535,483.99266 L 685.40042,479.95879 L 677.6408,478.10993 L 673.18314,478.78224 L 667.07449,479.28647 L 660.96585,481.47149 L 657.41261,482.10878 L 657.16963,473.73948 L 654.52806,471.72255 L 652.71197,469.87369 L 653.04217,466.6802 L 663.44338,465.33558 L 689.52898,462.31017 L 696.46313,461.63786 L 702.73688,461.46977 L 705.37846,465.50365 L 706.86434,467.01635 L 714.95419,467.18443 L 726.00404,466.51212 L 747.97393,465.1675 L 753.53546,464.46636 L 758.21005,464.49519 L 758.37515,467.52059 L 761.01673,468.36098 L 761.34692,463.82287 L 759.69594,459.11668 L 760.85163,457.4359 L 766.79518,458.27629 L 772.07835,458.61245 z M 784.71002,597.19259 L 787.18651,596.52028 L 788.5073,596.26817 L 789.99319,593.83102 L 792.38713,592.15024 L 793.70792,592.65448 L 795.44146,592.99063 L 795.8542,594.08315 L 792.30458,595.34374 L 788.012,596.85644 L 785.61807,598.11703 L 784.71002,597.19259 z M 798.49579,591.98217 L 799.73403,593.07468 L 802.54072,590.88965 L 807.98899,586.51962 L 811.78627,582.48573 L 814.3453,575.59451 L 815.3359,573.82969 L 815.501,570.30004 L 814.75805,570.80427 L 813.76746,573.74564 L 812.28156,578.53588 L 808.97958,583.99844 L 804.52191,588.36847 L 801.05483,590.38542 L 798.49579,591.98217 z " id="FL" style="fill:#501616" />
+ <ns0:path d="M 777.85557,425.66962 L 776.04071,426.6776 L 773.39913,425.33297 L 772.73874,423.14795 L 771.41795,419.45024 L 769.10656,417.26521 L 766.46499,416.5929 L 764.814,411.55057 L 762.00732,405.33167 L 757.71476,403.31473 L 755.56847,401.29779 L 754.24768,398.60854 L 752.1014,396.5916 L 749.79002,395.24697 L 747.47863,392.22157 L 744.34176,389.86848 L 739.71899,388.01961 L 739.2237,386.50691 L 736.74722,383.48151 L 736.25192,381.9688 L 732.78485,376.5903 L 729.31778,376.75838 L 725.19031,374.2372 L 723.86952,372.89258 L 723.53932,371.04372 L 724.36481,369.02679 L 726.67619,368.01831 L 726.346,365.8333 L 732.61975,363.14405 L 741.86527,358.43786 L 749.29471,357.59747 L 766.13479,357.09323 L 768.44617,359.11017 L 770.09715,362.47174 L 774.55482,361.9675 L 787.43252,360.45479 L 790.4043,361.29519 L 803.282,369.19486 L 813.60504,377.63896 L 808.06859,383.31398 L 805.42701,389.70094 L 804.93171,396.25598 L 803.28073,397.09637 L 802.12504,399.95369 L 799.64856,400.62601 L 797.50228,404.32372 L 794.69561,407.18104 L 792.38423,410.71068 L 790.73325,411.55107 L 787.10108,415.08071 L 784.12931,415.24879 L 785.1199,418.61034 L 780.00185,424.32499 L 777.85557,425.66962 z " id="SC" style="fill:#e9afaf" />
+ <ns0:path d="M 704.71806,368.52255 L 699.7651,369.36294 L 691.17997,370.53949 L 682.42974,371.46391 L 682.42974,373.73297 L 682.59484,375.91799 L 683.25523,379.44763 L 686.72231,387.68346 L 689.19879,397.93623 L 690.68467,404.3232 L 692.33566,409.36554 L 693.82155,416.5929 L 695.96784,423.14795 L 698.60941,426.6776 L 699.10471,430.20724 L 701.0859,431.04763 L 701.251,433.23265 L 699.4349,438.27499 L 698.93961,441.63656 L 698.77451,443.65349 L 700.4255,448.19161 L 700.7557,453.73818 L 699.9302,456.25936 L 700.5906,457.09975 L 702.07649,457.94014 L 702.73688,461.46977 L 705.37846,465.50365 L 706.86434,467.01635 L 714.95419,467.18443 L 726.00404,466.51212 L 747.97393,465.1675 L 753.53546,464.46636 L 758.21005,464.49519 L 758.37515,467.52059 L 761.01673,468.36098 L 761.34692,463.82287 L 759.69594,459.11668 L 760.85163,457.4359 L 766.79518,458.27629 L 771.87844,458.60669 L 771.08653,452.05785 L 773.39791,441.63702 L 774.88379,437.26699 L 774.3885,434.57775 L 778.51596,427.3504 L 777.90454,425.66937 L 776.04071,426.6776 L 773.39913,425.33297 L 772.73874,423.14795 L 771.41795,419.45024 L 769.10656,417.26521 L 766.46499,416.5929 L 764.814,411.55057 L 762.00732,405.33167 L 757.71476,403.31473 L 755.56847,401.29779 L 754.24768,398.60854 L 752.1014,396.5916 L 749.79002,395.24697 L 747.47863,392.22157 L 744.34176,389.86848 L 739.71899,388.01961 L 739.2237,386.50691 L 736.74722,383.48151 L 736.25192,381.9688 L 732.78485,376.5903 L 729.31778,376.75838 L 725.19031,374.2372 L 723.86952,372.89258 L 723.53932,371.04372 L 724.36481,369.02679 L 726.67619,368.01831 L 726.51109,365.64481 L 724.69501,366.16945 L 718.75146,367.17792 L 711.65221,368.01831 L 704.71806,368.52255 z " id="GA" style="fill:#d35f5f" />
+ <ns0:path d="M 639.33795,481.63956 L 637.68799,465.83981 L 634.88131,446.34274 L 635.04641,431.71994 L 635.8719,399.44893 L 635.7068,382.13688 L 635.87539,375.46299 L 643.79664,375.07759 L 672.19362,372.38834 L 682.58068,371.46391 L 682.42974,373.73297 L 682.59484,375.91799 L 683.25523,379.44763 L 686.72231,387.68346 L 689.19879,397.93623 L 690.68467,404.3232 L 692.33566,409.36554 L 693.82155,416.5929 L 695.96784,423.14795 L 698.60941,426.6776 L 699.10471,430.20724 L 701.0859,431.04763 L 701.251,433.23265 L 699.4349,438.27499 L 698.93961,441.63656 L 698.77451,443.65349 L 700.4255,448.19161 L 700.7557,453.73818 L 699.9302,456.25936 L 700.5906,457.09975 L 702.07649,457.94014 L 702.90198,461.63786 L 696.46313,461.63786 L 689.52898,462.31017 L 663.44338,465.33558 L 653.04217,466.6802 L 652.71197,469.87369 L 654.52806,471.72255 L 657.16963,473.73948 L 657.76284,481.98993 L 651.05994,484.66497 L 648.25327,484.32881 L 651.05994,482.31188 L 651.05994,481.30341 L 647.92307,475.08453 L 645.61169,474.41221 L 644.12581,478.95032 L 642.80502,481.80764 L 642.14462,481.63956 L 639.33795,481.63956 z " id="AL" style="fill:#e9afaf" />
+ <ns0:path d="M 850.23842,306.65958 L 851.98478,311.54471 L 855.61694,318.26782 L 858.09342,320.78899 L 858.75382,323.14208 L 856.27734,323.31016 L 857.10283,323.98247 L 856.77263,328.3525 L 854.13106,329.69712 L 853.47066,331.88214 L 852.14988,334.90754 L 848.35261,336.58832 L 845.87614,336.25216 L 844.39025,336.08408 L 842.73926,334.73946 L 843.06946,336.08408 L 843.06946,337.09255 L 845.05064,337.09255 L 845.87614,338.43717 L 843.89495,344.99221 L 848.18751,344.99221 L 848.84791,346.67299 L 851.15929,344.3199 L 852.48007,343.81567 L 850.49889,347.51338 L 847.36202,352.55572 L 846.04123,352.55572 L 844.88554,352.05149 L 842.07887,352.7238 L 836.79572,355.24497 L 830.19178,360.79154 L 826.72471,365.6658 L 824.74353,372.38892 L 824.24824,374.91008 L 819.46038,375.41432 L 813.43993,377.723 L 803.282,369.19486 L 790.4043,361.29519 L 787.43252,360.45479 L 774.55482,361.9675 L 770.09715,362.47174 L 768.44617,359.11017 L 766.13479,357.09323 L 749.29471,357.59747 L 741.86527,358.43786 L 732.61975,363.14405 L 726.346,365.8333 L 724.69501,366.16945 L 718.75146,367.17792 L 711.65221,368.01831 L 704.71806,368.52255 L 705.04826,363.4802 L 706.86434,361.9675 L 709.67103,361.29519 L 710.33142,357.42939 L 714.62399,354.57206 L 718.58636,353.05935 L 722.87893,349.36164 L 727.33659,347.17662 L 727.99698,343.98313 L 731.95935,339.94926 L 732.61975,339.78119 C 732.61975,339.78119 732.61975,340.95773 733.44524,340.95773 C 734.27073,340.95773 735.42643,341.29389 735.42643,341.29389 L 737.73781,337.59616 L 739.88409,336.92385 L 742.19547,337.26001 L 743.84646,333.56229 L 746.81824,330.87303 L 747.31353,328.68802 L 747.31353,324.57011 L 751.9363,325.32646 L 759.22415,323.98183 L 775.38031,321.96489 L 792.88078,319.27565 L 813.92151,315.35219 L 833.49506,311.37597 L 845.21707,308.35056 L 850.23842,306.65958 z M 854.21672,340.95692 L 856.85831,338.3517 L 860.07773,335.66244 L 861.64617,334.99013 L 861.81127,332.88915 L 861.15088,326.50217 L 859.66499,324.06503 L 859.00459,322.13213 L 859.74753,321.88001 L 862.55422,327.59468 L 862.96697,332.21684 L 862.80187,335.74649 L 859.33479,337.34323 L 856.44555,339.86441 L 855.28987,341.125 L 854.21672,340.95692 z " id="NC" style="fill:#c83737" />
+ <ns0:path d="M 712.3126,329.69649 L 659.31592,334.90691 L 643.2212,336.75577 L 638.50172,337.28883 L 634.55111,337.26001 L 634.55111,341.29389 L 625.96598,341.79812 L 618.86673,342.47043 L 607.53473,342.52544 L 607.26436,348.59252 L 605.08072,355.11718 L 604.06449,358.25292 L 602.68706,362.80789 L 602.35687,365.49714 L 598.22939,367.85023 L 599.71528,371.54796 L 598.72469,376.08606 L 597.15628,377.85089 L 605.49374,377.76685 L 630.09345,375.74991 L 635.54175,375.58184 L 643.79664,375.07759 L 672.19362,372.38834 L 682.58068,371.54796 L 691.17997,370.53949 L 699.7651,369.36294 L 704.71806,368.52255 L 705.04826,363.4802 L 706.86434,361.9675 L 709.67103,361.29519 L 710.33142,357.42939 L 714.62399,354.57206 L 718.58636,353.05935 L 722.87893,349.36164 L 727.33659,347.17662 L 727.99698,343.98313 L 731.95935,339.94926 L 732.61975,339.78119 C 732.61975,339.78119 732.61975,340.95773 733.44524,340.95773 C 734.27073,340.95773 735.42643,341.29389 735.42643,341.29389 L 737.73781,337.59616 L 739.88409,336.92385 L 742.19547,337.26001 L 743.84646,333.56229 L 746.81824,330.87303 L 747.31353,328.68802 L 747.49366,324.59981 L 745.16725,324.65414 L 742.69078,326.67109 L 734.60093,326.83916 L 722.3505,328.8153 L 712.3126,329.69649 z " id="TN" style="fill:#de8787" />
+ <ns0:path d="M 893.09433,183.30123 L 892.6011,178.92994 L 891.77561,174.39182 L 890.04208,168.25697 L 895.90308,166.66023 L 897.55407,167.83677 L 901.02115,172.37489 L 903.99187,176.99768 L 901.01902,178.59507 L 899.69824,178.42699 L 898.54255,180.27585 L 896.06607,182.29279 L 893.09433,183.30123 z " id="RI" style="fill:#f4d7d7" />
+ <ns0:path d="M 893.58963,183.30123 L 892.6011,178.92994 L 891.77561,174.39182 L 890.12463,168.17293 L 884.84146,169.34947 L 862.55312,174.30778 L 863.21351,177.75339 L 864.6994,185.31692 L 864.6994,193.72083 L 863.54371,196.07393 L 865.41508,198.26677 L 870.47581,194.73055 L 874.10797,191.36899 L 876.08916,189.18398 L 876.91465,189.85629 L 879.72132,188.34359 L 885.00447,187.16705 L 893.58963,183.30123 z " id="CT" style="fill:#de8787" />
+ <ns0:path d="M 919.55232,177.09192 L 921.77043,176.37882 L 922.23741,174.59609 L 923.28809,174.71493 L 924.33877,177.09192 L 923.0546,177.56732 L 919.08535,177.68617 L 919.55232,177.09192 z M 909.97943,177.92387 L 912.31427,175.19033 L 913.94868,175.19033 L 915.81656,176.73537 L 913.36497,177.80501 L 911.14686,178.87466 L 909.97943,177.92387 z M 874.44023,155.06282 L 892.27091,150.69278 L 894.5823,150.02047 L 896.72858,146.65891 L 900.54482,144.92957 L 903.4955,149.51759 L 901.01902,154.89608 L 900.68883,156.40879 L 902.67001,159.09803 L 903.8257,158.25764 L 905.64178,158.25764 L 907.95316,160.94689 L 911.91552,167.16577 L 915.54769,167.67001 L 917.85907,166.66154 L 919.67515,164.81268 L 918.84966,161.95536 L 916.70338,160.27458 L 915.21749,161.11497 L 914.2269,159.77034 L 914.7222,159.26611 L 916.86848,159.09803 L 918.68456,159.93842 L 920.66574,162.45959 L 921.65633,165.48499 L 921.98653,168.00616 L 917.69397,169.51886 L 913.73161,171.5358 L 909.76924,176.24198 L 907.78806,177.75468 L 907.78806,176.74621 L 910.26454,175.23351 L 910.75983,173.38466 L 909.93434,170.19118 L 906.96257,171.70388 L 906.13708,173.21658 L 906.63237,175.56967 L 903.82678,177.08172 L 901.02115,172.37489 L 897.55407,167.83677 L 895.90308,166.66023 L 890.04208,168.25697 L 884.84146,169.34947 L 862.55312,174.30778 L 861.56253,168.34101 L 862.22292,157.33189 L 867.50608,156.40745 L 874.44023,155.06282" id="MA" style="fill:#c83737" />
+ <ns0:path d="M 943.28423,76.73985 L 945.26541,78.924863 L 947.57679,82.790656 L 947.57679,84.807591 L 945.43051,89.68185 L 943.44933,90.354162 L 939.98226,93.547643 L 935.02931,99.262292 C 935.02931,99.262292 934.36891,99.262292 933.70852,99.262292 C 933.04813,99.262292 932.71793,97.077279 932.71793,97.077279 L 930.90185,97.245357 L 929.91126,98.758058 L 927.43478,100.27076 L 926.44419,101.78346 L 928.09517,103.29616 L 927.59988,103.96847 L 927.10458,106.8258 L 925.1234,106.65772 L 925.1234,104.97694 L 924.7932,103.63232 L 923.30732,103.96847 L 921.49123,100.60692 L 919.34495,101.95154 L 920.66574,103.46424 L 920.99594,104.64079 L 920.17045,105.98541 L 920.50064,109.17889 L 920.66574,110.85967 L 919.01476,113.54892 L 916.04298,114.05315 L 915.71279,117.07855 L 910.26454,120.27203 L 908.94375,120.77627 L 907.29277,119.26356 L 904.15589,122.96128 L 905.14649,126.32284 L 903.6606,127.66746 L 903.4955,132.20556 L 901.88477,140.12915 L 899.37016,138.9273 L 898.87486,135.73381 L 894.91249,134.55727 L 894.5823,131.69993 L 887.15284,107.32858 L 882.28553,91.967581 L 884.77927,91.608771 L 886.32526,92.034941 L 886.32526,89.345695 L 887.15075,83.631045 L 889.79233,78.756786 L 891.27821,74.554837 L 889.29703,72.033669 L 889.29703,65.814786 L 890.12252,64.806318 L 890.94802,61.948993 L 890.78292,60.436292 L 890.61782,55.393954 L 892.4339,50.351617 L 895.40568,41.107331 L 897.55196,36.737305 L 898.87274,36.737305 L 900.19353,36.905383 L 900.19353,38.081928 L 901.51432,40.435019 L 904.32099,41.107331 L 905.14649,40.266941 L 905.14649,39.258474 L 909.27395,36.233071 L 911.09003,34.384214 L 912.57592,34.552292 L 918.68456,37.073461 L 920.66574,38.081928 L 929.91126,69.176344 L 936.0199,69.176344 L 936.84539,71.193279 L 937.01049,76.235617 L 939.98226,78.588708 L 940.80775,78.588708 L 940.97285,78.084474 L 940.47756,76.907928 L 943.28423,76.73985 z M 921.90732,108.08415 L 923.47577,106.48741 L 924.87911,107.57992 L 925.45696,110.1011 L 923.72342,111.02553 L 921.90732,108.08415 z M 928.75894,101.94929 L 930.57502,103.88219 C 930.57502,103.88219 931.89582,103.96623 931.89582,103.63007 C 931.89582,103.29391 932.14346,101.52909 932.14346,101.52909 L 933.05151,100.6887 L 932.22602,98.839833 L 930.16228,99.596189 L 928.75894,101.94929 z " id="ME" style="fill:#f4d7d7" />
+ <ns0:path d="M 900.54588,144.88986 L 900.85393,143.29871 L 901.96733,139.87704 L 899.37016,138.9273 L 898.87486,135.73381 L 894.91249,134.55727 L 894.5823,131.69993 L 887.15284,107.32858 L 882.45357,92.208279 L 881.5374,92.203019 L 880.87701,93.883799 L 880.21662,93.379565 L 879.22603,92.371097 L 877.74014,94.388032 L 876.76354,100.09176 L 877.08182,105.98396 L 879.063,108.84129 L 879.063,113.04325 L 875.26572,117.2452 L 872.62415,118.42176 L 872.62415,119.5983 L 873.77984,121.44716 L 873.77984,130.35531 L 872.95434,139.93577 L 872.78925,144.97812 L 873.77984,146.32275 L 873.61474,151.02894 L 873.11944,152.8778 L 874.60533,154.97877 L 892.27091,150.69278 L 894.5823,150.02047 L 896.72858,146.65891 L 900.54588,144.88986 z " id="NH" style="fill:#f4d7d7" />
+ <ns0:path d="M 862.38802,157.584 L 861.56253,151.70126 L 858.42565,140.27193 L 857.76525,139.93577 L 854.79347,138.59115 L 855.61896,135.56574 L 854.79347,133.38072 L 852.1519,128.67453 L 853.14249,124.64065 L 852.31699,119.26214 L 849.84051,112.53901 L 849.0178,107.42109 L 876.75058,99.933872 L 877.08182,105.98396 L 879.063,108.84129 L 879.063,113.04325 L 875.26572,117.2452 L 872.62415,118.42176 L 872.62415,119.5983 L 873.77984,121.44716 L 873.77984,130.35531 L 872.95434,139.93577 L 872.78925,144.97812 L 873.77984,146.32275 L 873.61474,151.02894 L 873.11944,152.8778 L 874.60533,154.97877 L 867.50608,156.40745 L 862.38802,157.584 z " id="VT" style="fill:#f4d7d7" />
+ <ns0:path d="M 846.20833,194.22506 L 845.05264,193.21659 L 842.41105,193.04851 L 840.09968,191.03158 L 837.62319,185.485 L 834.55471,184.51732 L 832.17493,182.29151 L 813.18856,186.49346 L 769.27227,195.56969 L 760.19184,197.08239 L 759.43798,189.88537 L 762.17121,188.00743 L 763.492,186.83089 L 764.48259,185.15011 L 766.29867,183.97356 L 768.27985,182.12471 L 768.77515,180.44393 L 770.92143,177.5866 L 772.07712,176.57814 L 771.91202,175.56967 L 770.59123,172.37619 L 768.77515,172.20811 L 766.79397,165.82115 L 769.76574,163.97229 L 774.2234,162.45959 L 778.35086,161.11497 L 781.65283,160.61073 L 788.09167,160.44266 L 790.07285,161.78728 L 791.72384,161.95536 L 793.87012,160.61073 L 796.51169,159.43419 L 801.79484,158.92995 L 803.94112,157.0811 L 805.75721,153.71954 L 807.40819,151.7026 L 809.55447,151.7026 L 811.53565,150.52606 L 811.70075,148.17297 L 810.21487,145.98795 L 809.88467,144.47525 L 811.04036,142.29024 L 811.04036,140.77754 L 809.22428,140.77754 L 807.40819,139.93715 L 806.5827,138.7606 L 806.4176,136.07136 L 812.36115,130.35671 L 813.02154,129.51632 L 814.50743,126.49092 L 817.4792,121.78473 L 820.28587,117.91894 L 822.43215,115.39777 L 824.89861,113.49969 L 828.0455,112.20429 L 833.65885,110.85967 L 836.96082,111.02775 L 841.58358,109.51505 L 849.30966,107.36166 L 849.84051,112.53901 L 852.31699,119.26214 L 853.14249,124.64065 L 852.1519,128.67453 L 854.79347,133.38072 L 855.61896,135.56574 L 854.79347,138.59115 L 857.76525,139.93577 L 858.42565,140.27193 L 861.56253,151.70126 L 862.05782,157.07976 L 861.56253,168.34101 L 862.38802,174.05567 L 863.21351,177.75339 L 864.6994,185.31692 L 864.6994,193.72083 L 863.54371,196.07393 L 865.42216,198.14582 L 865.19266,199.77289 L 863.21147,201.62175 L 863.54167,202.96637 L 864.86246,202.63021 L 866.34835,201.28559 L 868.65972,198.59634 L 869.81541,197.92403 L 871.4664,198.59634 L 873.77778,198.76442 L 881.8676,194.73055 L 884.83937,191.87323 L 886.16016,190.36053 L 890.45272,192.0413 L 886.98565,195.73902 L 883.02329,198.76442 L 875.75896,204.31099 L 873.11738,205.31946 L 867.17384,207.3364 L 863.04638,208.51294 L 861.49899,207.95886 L 860.90212,204.47784 L 861.39742,201.62051 L 861.23232,199.4355 L 858.59075,198.25894 L 853.96798,197.25047 L 850.0056,196.07393 L 846.20833,194.22506 z " id="NY" style="fill:#280b0b" />
+ <ns0:path d="M 846.20833,194.22506 L 844.06205,196.74624 L 844.06205,199.93973 L 842.08086,203.13321 L 841.91576,204.814 L 843.23656,206.15862 L 843.07146,208.6798 L 840.76007,209.85635 L 841.58556,212.71367 L 841.75066,213.89023 L 844.55734,214.22639 L 845.54794,216.91563 L 849.18011,219.43681 L 851.65659,221.11759 L 851.65659,221.95798 L 848.35462,225.15147 L 846.70362,227.50456 L 845.21774,230.3619 L 842.90636,231.70652 L 841.66812,232.46288 L 841.42046,233.72347 L 840.79828,236.43369 L 841.91377,238.76697 L 845.21574,241.79237 L 850.1687,244.14546 L 854.29616,244.81777 L 854.46126,246.33047 L 853.63576,247.33894 L 853.96596,250.19627 L 854.79145,250.19627 L 856.93773,247.6751 L 857.76322,242.63276 L 860.5699,238.43081 L 863.70677,231.70769 L 864.86246,225.99305 L 864.20207,224.8165 L 864.03697,215.06798 L 862.38598,211.53834 L 861.23029,212.37873 L 858.42362,212.71489 L 857.92832,212.21066 L 859.08401,211.20219 L 861.23029,209.18525 L 861.29469,208.048 L 860.90212,204.47784 L 861.39742,201.62051 L 861.23232,199.4355 L 858.59075,198.25894 L 853.96798,197.25047 L 850.0056,196.07393 L 846.20833,194.22506 z " id="NJ" style="fill:#a02c2c" />
+ <ns0:path d="M 841.75066,232.37883 L 842.90636,231.70652 L 845.21774,230.3619 L 846.70362,227.50456 L 848.35462,225.15147 L 851.65659,221.95798 L 851.65659,221.11759 L 849.18011,219.43681 L 845.54794,216.91563 L 844.55734,214.22639 L 841.75066,213.89023 L 841.58556,212.71367 L 840.76007,209.85635 L 843.07146,208.6798 L 843.23656,206.15862 L 841.91576,204.814 L 842.08086,203.13321 L 844.06205,199.93973 L 844.06205,196.74624 L 846.45598,194.22507 L 845.05264,193.21659 L 842.41105,193.04851 L 840.09968,191.03158 L 837.62319,185.485 L 834.55471,184.51732 L 832.17493,182.29151 L 813.18856,186.49346 L 769.27227,195.56969 L 760.19184,197.08239 L 759.68563,189.71729 L 754.08139,195.57094 L 752.7606,196.07518 L 748.46894,199.20351 L 751.4416,219.10066 L 753.16482,230.27806 L 756.81257,250.30417 L 761.54207,249.5232 L 773.73965,247.96108 L 812.47286,239.9916 L 827.66544,237.0562 L 836.14231,235.36944 L 837.45809,234.05962 L 839.60438,232.37883 L 841.75066,232.37883 z " id="PA" style="fill:#782121" />
+ <ns0:path d="M 840.59298,235.90964 L 841.42046,233.72347 L 841.66812,232.37883 L 839.60438,232.37883 L 837.45809,234.05962 L 835.9722,235.57232 L 837.45809,239.94236 L 839.76948,245.8251 L 841.91576,255.9098 L 843.56675,262.46486 L 848.68482,262.29678 L 854.95755,261.03674 L 852.64517,253.38975 L 851.65458,253.89398 L 848.02242,251.37281 L 846.20633,246.49855 L 844.22515,242.80084 L 841.91377,241.79237 L 839.76749,238.09466 L 840.59298,235.90964 z " id="DE" style="fill:#f4d7d7" />
+ <ns0:path d="M 854.95655,260.95325 L 848.68482,262.29678 L 843.56675,262.46486 L 841.91576,255.9098 L 839.76948,245.8251 L 837.45809,239.94236 L 836.14231,235.36944 L 827.66544,237.0562 L 812.47286,239.9916 L 774.22495,247.84224 L 775.38031,253.05285 L 776.37091,258.93558 L 776.7011,258.59942 L 778.84739,256.07825 L 781.15877,252.88476 L 783.63525,252.71668 L 785.12115,251.20398 L 786.93723,248.51473 L 788.25802,249.18705 L 791.22979,248.85089 L 793.87137,246.66588 L 795.92094,245.15492 L 797.80542,244.65068 L 799.48473,245.82549 L 802.45651,247.33819 L 804.43769,249.18705 L 805.67593,250.78379 L 809.88595,252.5486 L 809.88595,255.57402 L 815.49931,256.91864 L 817.48049,258.26326 L 818.47108,256.24633 L 820.78247,257.92711 L 819.29657,261.28868 L 818.96637,264.146 L 817.15029,266.83525 L 817.15029,269.02027 L 817.81068,270.86913 L 822.98233,272.27864 L 827.38511,272.21447 L 830.52198,273.22294 L 832.66826,273.5591 L 833.65885,271.37408 L 832.17296,269.18907 L 832.17296,267.34021 L 829.69649,265.1552 L 827.55021,259.44055 L 828.87099,253.89398 L 828.70589,251.70897 L 827.38511,250.36434 C 827.38511,250.36434 828.87099,248.68356 828.87099,248.01125 C 828.87099,247.33894 829.36629,245.82624 829.36629,245.82624 L 831.34747,244.48162 L 833.32865,242.80084 L 833.82395,243.8093 L 832.33806,245.49008 L 831.01727,249.35588 L 831.34747,250.53242 L 833.16355,250.86858 L 833.65885,256.58323 L 831.51257,257.59169 L 831.84277,261.28941 L 832.33806,261.12133 L 833.49375,259.1044 L 835.14473,260.95325 L 833.49375,262.29788 L 833.16355,265.82751 L 835.80513,269.35715 L 839.76749,269.86138 L 841.41848,269.02099 L 844.72045,274.39949 L 846.53653,274.90372 L 846.53653,278.60143 L 844.22515,283.64377 L 843.72986,290.87112 L 845.21574,294.40076 L 846.70163,294.56884 L 848.68281,290.19881 L 849.5083,286.5011 L 849.6734,279.10567 L 852.81027,274.06333 L 854.95655,266.83598 L 854.95655,260.95325 z M 838.20212,271.12031 L 839.3578,273.72552 L 839.5229,275.57439 L 840.67859,277.50729 C 840.67859,277.50729 841.58664,276.58285 841.58664,276.2467 C 841.58664,275.91054 840.8437,273.05321 840.8437,273.05321 L 840.10075,270.61606 L 838.20212,271.12031 z " id="MD" style="fill:#d35f5f" />
+ <ns0:path d="M 822.59725,272.21447 L 827.38511,272.21447 L 830.52198,273.22294 L 832.66826,273.5591 L 833.65885,271.37408 L 832.17296,269.18907 L 832.17296,267.34021 L 829.69649,265.1552 L 827.55021,259.44055 L 828.87099,253.89398 L 828.70589,251.70897 L 827.38511,250.36434 C 827.38511,250.36434 828.87099,248.68356 828.87099,248.01125 C 828.87099,247.33894 829.36629,245.82624 829.36629,245.82624 L 831.34747,244.48162 L 833.32865,242.80084 L 833.82395,243.8093 L 832.33806,245.49008 L 831.01727,249.35588 L 831.34747,250.53242 L 833.16355,250.86858 L 833.65885,256.58323 L 831.51257,257.59169 L 831.84277,261.28941 L 832.33806,261.12133 L 833.49375,259.1044 L 835.14473,260.95325 L 833.49375,262.29788 L 833.16355,265.82751 L 835.80513,269.35715 L 839.76749,269.86138 L 841.41848,269.02099 L 844.72045,274.39949 L 846.53653,274.90372 L 846.53653,278.60143 L 844.22515,283.64377 L 843.72986,290.87112 L 845.21574,294.40076 L 846.70163,294.56884 L 848.68281,290.19881 L 849.5083,286.5011 L 849.6734,279.10567 L 852.81027,274.06333 L 854.95655,266.83598 L 854.95655,260.95325 M 838.20212,271.12031 L 839.3578,273.72552 L 839.5229,275.57439 L 840.67859,277.50729 C 840.67859,277.50729 841.58664,276.58285 841.58664,276.2467 C 841.58664,275.91054 840.8437,273.05321 840.8437,273.05321 L 840.10075,270.61606 L 838.20212,271.12031 z " id="MD_Atlantic" style="fill:#0000ff;fill-opacity:0;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 774.24466,247.91204 L 775.38031,253.05285 L 776.37091,258.93558 L 776.7011,258.59942 L 778.84739,256.07825 L 781.15877,252.88476 L 783.63525,252.71668 L 785.12115,251.20398 L 786.93723,248.51473 L 788.25802,249.18705 L 791.22979,248.85089 L 793.87137,246.66588 L 795.92094,245.15492 L 797.80542,244.65068 L 799.48473,245.82549 L 802.45651,247.33819 L 804.43769,249.18705 L 805.84103,250.53167 L 804.7679,255.7421 L 798.98943,252.5486 L 794.36667,250.69975 L 794.20157,256.24633 L 793.70628,258.43134 L 792.05529,261.28868 L 791.39489,262.96946 L 788.25802,265.49063 L 787.76272,267.84373 L 784.29564,268.17988 L 783.96545,271.37336 L 782.80976,277.08802 L 780.16818,277.08802 L 778.84739,276.24763 L 777.1964,273.3903 L 775.38031,273.55838 L 775.05012,278.09649 L 772.90384,284.9877 L 767.78577,296.24894 L 768.61127,297.59356 L 768.44617,300.45089 L 766.29989,302.46782 L 764.814,302.13167 L 761.51202,304.65285 L 758.87045,303.64438 L 757.05436,308.51864 C 757.05436,308.51864 753.25709,309.35903 752.59669,309.52711 C 751.9363,309.69518 750.12022,308.18248 750.12022,308.18248 L 747.64373,310.53557 L 745.00215,311.2079 L 742.03037,310.36749 L 740.70958,309.02287 L 738.47074,305.8795 L 735.26132,303.81246 L 732.61975,300.95512 L 729.64798,297.08933 L 728.98758,294.73623 L 726.346,293.22353 L 725.5205,291.54275 L 725.27285,286.0802 L 727.50168,285.99616 L 729.48288,285.15577 L 729.64798,282.29845 L 731.29896,280.78574 L 731.46406,275.57532 L 732.45465,271.54144 L 733.77544,270.86913 L 735.09623,272.04567 L 735.59153,273.89453 L 737.40761,272.88606 L 737.90291,271.20529 L 736.74722,269.35643 L 736.74722,266.83525 L 737.73781,265.49063 L 740.04919,261.96099 L 741.36998,260.44829 L 743.51627,260.95252 L 745.82765,259.27173 L 748.96452,255.7421 L 751.27591,251.70821 L 751.6061,245.82549 L 752.1014,240.61506 L 752.1014,235.74079 L 750.94571,232.54731 L 751.9363,231.0346 L 753.24707,229.68997 L 756.81257,250.30417 L 761.54207,249.5232 L 774.24466,247.91204 z " id="WV" style="fill:#f4d7d7" />
+ <ns0:path d="M 738.61165,306.09768 L 735.42643,309.35903 L 731.13386,313.05675 L 726.51109,318.60333 L 724.69501,320.45219 L 724.69501,322.6372 L 720.73264,324.82222 L 714.95419,328.35186 L 712.28688,329.81359 L 659.31592,334.90691 L 643.2212,336.75577 L 638.50172,337.28883 L 634.55111,337.26001 L 634.55111,341.29389 L 625.96598,341.79812 L 618.86673,342.47043 L 608.21432,342.68419 L 609.24067,341.39196 L 611.46709,339.55999 L 613.56845,338.3715 L 613.80194,335.04372 L 614.73588,333.14213 L 613.09488,330.50244 L 613.91377,328.51994 L 616.22516,326.67109 L 618.37144,325.99877 L 621.17811,327.3434 L 624.81029,328.68802 L 625.96598,328.35186 L 626.13108,325.99877 L 624.81029,323.47759 L 625.14049,321.1245 L 627.12167,319.6118 L 629.76325,318.93949 L 631.41424,318.26718 L 630.58875,316.41831 L 629.92835,314.40138 L 631.08404,313.56099 L 632.15718,310.11537 L 635.2115,308.35056 L 641.15506,307.34209 L 644.78724,306.83786 L 646.27312,308.85479 L 648.08921,309.69518 L 649.90529,306.33362 L 652.87707,304.82092 L 654.85825,306.5017 L 655.68375,307.67825 L 657.83004,307.17401 L 657.66493,303.64438 L 660.63671,301.96359 L 661.7924,301.1232 L 662.94809,302.80398 L 667.73595,302.80398 L 668.56145,300.61896 L 668.23125,298.26587 L 671.20302,294.56815 L 675.99089,290.53428 L 676.48618,285.82809 L 679.29287,285.49193 L 683.25523,283.64307 L 686.06192,281.62613 L 685.73171,279.60919 L 684.24582,278.09649 L 684.82367,275.82744 L 689.03369,275.57532 L 691.51017,274.73493 L 694.48195,276.41571 L 696.13293,280.95382 L 702.07649,281.28997 L 703.89257,283.13884 L 706.03885,283.30692 L 708.51534,281.79422 L 711.65221,282.29845 L 712.973,283.81115 L 715.77968,281.12189 L 717.59577,279.77727 L 719.24675,279.77727 L 719.90714,282.63461 L 721.72324,283.64307 L 725.3554,285.82809 L 725.5205,291.54275 L 726.346,293.22353 L 728.98758,294.73623 L 729.64798,297.08933 L 732.61975,300.95512 L 735.26132,303.81246 L 738.61165,306.09768 z " id="KY" style="fill:#e9afaf" />
+ <ns0:path d="M 748.46982,198.97029 L 741.20371,203.30253 L 737.24134,205.65562 L 733.77427,209.52141 L 729.64681,213.55528 L 726.34484,214.39567 L 723.37307,214.8999 L 717.75972,217.58915 L 715.61344,217.75723 L 712.14638,214.56375 L 706.86322,215.23606 L 704.22165,213.72336 L 701.78994,212.3189 L 696.79333,213.05024 L 686.39211,214.73102 L 678.46737,215.99161 L 679.78816,231.20268 L 681.60425,245.48932 L 684.24582,269.86066 L 684.82367,275.82744 L 689.03369,275.57532 L 691.51017,274.73493 L 694.48195,276.41571 L 696.13293,280.95382 L 702.07649,281.28997 L 703.89257,283.13884 L 706.03885,283.30692 L 708.51534,281.79422 L 711.65221,282.29845 L 712.973,283.81115 L 715.77968,281.12189 L 717.59577,279.77727 L 719.24675,279.77727 L 719.90714,282.63461 L 721.72324,283.64307 L 725.27285,286.0802 L 727.50168,285.99616 L 729.48288,285.15577 L 729.64798,282.29845 L 731.29896,280.78574 L 731.46406,275.57532 L 732.45465,271.54144 L 733.77544,270.86913 L 735.09623,272.04567 L 735.59153,273.89453 L 737.40761,272.88606 L 737.90291,271.20529 L 736.74722,269.35643 L 736.74722,266.83525 L 737.73781,265.49063 L 740.04919,261.96099 L 741.36998,260.44829 L 743.51627,260.95252 L 745.82765,259.27173 L 748.96452,255.7421 L 751.27591,251.70821 L 751.6061,245.82549 L 752.1014,240.61506 L 752.1014,235.74079 L 750.94571,232.54731 L 751.9363,231.0346 L 753.33994,230.27806 L 751.4416,219.10066 L 748.46982,198.97029 z " id="OH" style="fill:#c83737" />
+ <ns0:path d="M 594.42414,81.655837 L 596.29202,79.516552 L 598.51013,78.684606 L 603.99703,74.643722 L 606.33188,74.049474 L 606.79885,74.524879 L 601.54544,79.873103 L 598.1599,81.893534 L 596.05854,82.844333 L 594.42414,81.655837 z M 682.43117,115.05941 L 683.09156,117.66462 L 686.39354,117.8327 L 687.71434,116.57211 C 687.71434,116.57211 687.63178,115.05941 687.30159,114.89133 C 686.97139,114.72326 685.6506,112.95843 685.6506,112.95843 L 683.42177,113.21054 L 681.77077,113.37862 L 681.44058,114.55518 L 682.43117,115.05941 z M 713.13697,180.61201 L 709.835,172.04003 L 707.52362,162.62767 L 705.04714,159.26611 L 702.40557,157.41725 L 700.75458,158.5938 L 696.79222,160.44266 L 694.81104,165.65307 L 692.00436,169.51886 L 690.84867,170.19118 L 689.36279,169.51886 C 689.36279,169.51886 686.72121,168.00616 686.88631,167.33385 C 687.05141,166.66154 687.38161,162.12343 687.38161,162.12343 L 690.84867,160.77881 L 691.67417,157.24918 L 692.33456,154.55993 L 694.81104,152.87915 L 694.48084,142.45832 L 692.82985,140.10523 L 691.50907,139.26484 L 690.68357,137.07982 L 691.50907,136.23943 L 693.16005,136.57559 L 693.32515,134.89481 L 690.84867,132.54172 L 689.52789,129.85247 L 686.88631,129.85247 L 682.26355,128.33977 L 676.6502,124.81014 L 673.84353,124.81014 L 673.18314,125.48245 L 672.19255,124.97821 L 669.05568,122.62512 L 666.0839,124.47398 L 663.11213,126.82707 L 663.44233,130.52479 L 664.43292,130.86094 L 666.5792,131.36518 L 667.07449,132.20556 L 664.43292,133.04595 L 661.79134,133.38211 L 660.30546,135.23097 L 659.97526,137.41598 L 660.30546,139.09676 L 660.63565,144.81141 L 657.00349,146.99642 L 656.34309,146.82834 L 656.34309,142.45832 L 657.66388,139.93715 L 658.32427,137.41598 L 657.49878,136.57559 L 655.5176,137.41598 L 654.52701,141.78601 L 651.72034,142.96255 L 649.90425,144.97949 L 649.73915,145.98795 L 650.39955,146.82834 L 649.73915,149.51759 L 647.42778,150.02182 L 647.42778,151.19837 L 648.25327,153.71954 L 647.09758,160.1065 L 645.44659,164.30845 L 646.10699,169.18271 L 646.60228,170.35925 L 645.77679,172.88042 L 645.44659,173.72081 L 645.1164,176.57814 L 648.74856,182.79702 L 651.72034,189.52014 L 653.20622,194.56247 L 652.38073,199.43673 L 651.39014,205.65562 L 648.91366,211.03411 L 648.58347,213.89143 L 645.43483,217.12572 L 644.67586,217.92491 L 649.40999,217.75643 L 671.86343,215.40333 L 678.13717,214.73102 L 678.46737,215.99161 L 686.39211,214.73102 L 696.79333,213.05024 L 702.12014,212.57103 L 700.75458,211.37027 L 700.91968,209.85756 L 703.06596,205.99177 L 705.10906,204.18493 L 704.88204,198.9325 L 706.51299,197.27212 L 707.62681,196.91556 L 707.85382,193.21785 L 709.42225,190.0664 L 710.49539,190.69668 L 710.66049,191.36899 L 711.48598,191.53707 L 713.46716,190.5286 L 713.13697,180.61201 z M 578.8376,112.43927 L 580.72799,111.3639 L 583.53467,110.52351 L 587.16683,108.17042 L 587.16683,107.16195 L 587.82723,106.48964 L 593.93587,105.48118 L 596.41235,103.46424 L 600.87001,101.27923 L 601.03511,99.934604 L 603.01629,96.909201 L 604.83237,96.068811 L 606.15316,94.219954 L 608.46454,91.866863 L 612.9222,89.345695 L 617.71005,88.841461 L 618.86574,90.018006 L 618.53554,91.026474 L 614.73828,92.034941 L 613.25239,95.228422 L 610.94101,96.068811 L 610.44572,98.58998 L 607.96924,101.95154 L 607.63904,104.64079 L 608.46454,105.14502 L 609.45513,103.96847 L 613.08729,100.94307 L 614.40808,102.28769 L 616.71946,102.28769 L 620.02143,103.29616 L 621.50732,104.47271 L 622.9932,107.66619 L 625.79988,110.52351 L 629.76224,110.35543 L 631.24813,109.34697 L 632.89911,110.69159 L 634.5501,111.19582 L 635.87088,110.35543 L 637.02657,110.35543 L 638.67756,109.34697 L 642.80502,105.64925 L 646.27209,104.47271 L 653.04112,104.13655 L 657.66388,102.11962 L 660.30546,100.77499 L 661.79134,100.94307 L 661.79134,106.8258 L 662.28664,107.16195 L 665.25841,108.00234 L 667.23959,107.49811 L 673.51333,105.81733 L 674.66902,104.64079 L 676.15491,105.14502 L 676.15491,112.37237 L 679.45688,115.56585 L 680.77767,116.23816 L 682.09845,117.24663 L 680.77767,117.58279 L 679.95217,117.24663 L 676.15491,116.7424 L 674.00863,117.41471 L 671.69725,117.24663 L 668.39528,118.75933 L 666.5792,118.75933 L 660.63565,117.41471 L 655.3525,117.58279 L 653.37132,120.27203 L 646.27209,120.94434 L 643.79561,121.78473 L 642.63992,124.97821 L 641.31913,126.15476 L 640.82384,125.98668 L 639.33795,124.3059 L 634.71519,126.82707 L 634.0548,126.82707 L 632.89911,125.14629 L 632.07362,125.31437 L 630.09244,129.85247 L 629.10185,134.05442 L 625.27363,142.51293 L 623.6083,141.31962 L 622.20739,139.89342 L 620.57299,129.197 L 616.83724,128.00851 L 615.43633,125.63153 L 602.59467,122.77914 L 600.02634,121.59066 L 591.62089,119.21367 L 583.21544,118.02518 L 578.8376,112.43927 z " id="MI" style="fill:#c83737" />
+ <ns0:path d="M 363.20447,145.98954 L 351.44763,144.98362 L 318.67723,141.55738 L 302.09981,139.41809 L 273.14771,135.13952 L 252.83454,132.04945 L 251.38528,143.66906 L 247.4644,168.89268 L 242.09425,200.50655 L 240.53069,211.44019 L 238.82546,223.80098 L 245.48808,224.7662 L 262.73518,227.14318 L 271.75391,228.36645 L 292.76047,230.93187 L 330.81813,235.21041 L 355.80134,237.34972 L 360.23755,191.23625 L 361.87193,164.85174 L 363.20447,145.98954 z " id="WY" style="fill:#f4d7d7" />
+ <ns0:path d="M 365.51098,123.96764 L 366.33647,111.87386 L 368.64299,85.935913 L 370.0439,70.247815 L 371.33142,55.452236 L 338.69364,52.032396 L 308.81082,48.334682 L 278.92799,44.132734 L 245.9083,38.586162 L 227.08707,35.056526 L 193.6675,27.848581 L 189.09322,50.043547 L 192.59549,57.887585 L 191.19458,62.64155 L 193.06246,67.395514 L 196.33125,68.821708 L 200.067,79.518133 L 203.80276,83.321298 L 204.26973,84.509794 L 207.772,85.698291 L 208.23897,87.837565 L 201.00095,106.14034 L 201.00095,108.75502 L 203.56928,112.08279 L 204.50321,112.08279 L 209.40639,108.99272 L 210.10685,107.80422 L 211.74124,108.51732 L 211.50775,113.98438 L 214.30957,127.05779 L 217.34487,129.67247 L 218.2788,130.38556 L 220.14668,132.76254 L 219.67972,136.32802 L 220.38017,139.89349 L 221.5476,140.84429 L 223.88244,138.4673 L 226.68426,138.4673 L 229.95305,140.13119 L 232.52138,139.1804 L 236.7241,139.1804 L 240.45985,140.84429 L 243.26167,140.36889 L 243.72864,137.27881 L 246.76394,136.56572 L 248.16485,137.99191 L 248.63182,141.31968 L 251.26853,143.90677 L 252.83454,132.04945 L 273.14771,135.13952 L 302.09981,139.41809 L 318.67723,141.55738 L 351.44763,144.98362 L 363.16317,146.23449 L 364.89307,129.69427 L 365.51098,123.96764 z " id="MT" style="fill:#f4d7d7" />
+ <ns0:path d="M 144.08485,180.96023 L 148.93381,161.76187 L 153.37002,143.34026 L 154.77093,138.94284 L 157.33926,132.76269 L 156.0551,130.38571 L 153.48676,130.50455 L 152.66957,129.43491 L 153.13654,128.24642 L 153.48676,125.0375 L 158.03971,119.33273 L 159.90759,118.85734 L 161.07501,117.66885 L 161.65873,114.34107 L 162.59266,113.62798 L 166.5619,107.56668 L 170.53114,103.05041 L 170.76463,99.128389 L 167.26235,96.394856 L 165.91982,91.819167 L 166.32842,81.776422 L 170.06418,64.662142 L 174.61712,43.031605 L 178.46962,29.00742 L 179.24775,25.053259 L 193.6675,27.848581 L 189.09322,50.043547 L 192.59549,57.887585 L 191.19458,62.64155 L 193.06246,67.395514 L 196.33125,68.821708 L 200.067,79.518133 L 203.80276,83.321298 L 204.26973,84.509794 L 207.772,85.698291 L 208.23897,87.837565 L 201.00095,106.14034 L 201.00095,108.75502 L 203.56928,112.08279 L 204.50321,112.08279 L 209.40639,108.99272 L 210.10685,107.80422 L 211.74124,108.51732 L 211.50775,113.98438 L 214.30957,127.05779 L 217.34487,129.67247 L 218.2788,130.38556 L 220.14668,132.76254 L 219.67972,136.32802 L 220.38017,139.89349 L 221.5476,140.84429 L 223.88244,138.4673 L 226.68426,138.4673 L 229.95305,140.13119 L 232.52138,139.1804 L 236.7241,139.1804 L 240.45985,140.84429 L 243.26167,140.36889 L 243.72864,137.27881 L 246.76394,136.56572 L 248.16485,137.99191 L 248.63182,141.31968 L 251.31689,143.45897 L 247.4644,168.89268 L 242.21095,200.38777 L 237.30774,199.55589 L 228.78555,198.12969 L 218.27875,196.22811 L 206.02081,194.08882 L 193.0624,191.65242 L 184.89044,189.57255 L 175.43432,187.67098 L 165.51122,185.65054 L 144.08485,180.96023 z " id="ID" style="fill:#f4d7d7" />
+ <ns0:path d="M 95.99889,2.9536428 L 100.45655,4.4663441 L 110.36246,7.3236687 L 119.11268,9.3406038 L 139.58489,15.223331 L 163.02887,21.106058 L 179.49525,24.969183 L 178.46962,29.00742 L 174.61712,43.031605 L 170.06418,64.662142 L 166.32842,81.776422 L 166.13328,91.861195 L 151.85237,88.313121 L 136.44238,84.628799 L 120.68217,84.747642 L 120.21521,83.321459 L 114.61157,85.460744 L 110.05862,84.866496 L 107.60703,83.202605 L 106.32286,83.915707 L 101.53644,83.678 L 99.785303,82.251817 L 94.415149,80.112532 L 93.597952,80.231386 L 89.161743,78.686338 L 87.177124,80.587926 L 80.873036,80.231386 L 74.802439,75.952816 L 75.50289,75.12087 L 75.736374,67.039124 L 73.401527,62.998262 L 69.198802,62.404014 L 68.498351,59.789335 L 66.094359,59.304248 L 64.13488,57.747045 L 62.318797,58.755513 L 60.007419,55.73011 L 60.337616,52.704708 L 63.14429,52.368552 L 64.795274,48.166604 L 62.153699,46.990058 L 62.318797,43.124266 L 66.776456,42.451954 L 63.969782,39.59463 L 62.483896,32.199201 L 63.14429,29.173799 L 63.14429,20.93798 L 61.328206,17.576422 L 63.639585,7.8279025 L 65.785865,8.3321363 L 68.262342,11.357539 L 71.069016,14.046786 L 74.370985,16.063721 L 78.993743,18.248734 L 82.130616,18.921045 L 85.102388,20.433747 L 88.569459,21.442214 L 90.880838,21.274136 L 90.880838,18.752967 L 92.201625,17.576422 L 94.347905,16.231799 L 94.678102,17.408344 L 95.008299,19.257201 L 92.696921,19.761435 L 92.366724,21.946448 L 94.182807,23.459149 L 95.338496,25.980318 L 95.99889,27.997253 L 97.484776,27.829175 L 97.649875,26.484552 L 96.659284,25.139928 L 96.163989,21.77837 L 96.989481,19.929513 L 96.329087,18.416812 L 96.329087,16.063721 L 98.14517,12.366006 L 96.989481,9.6767597 L 94.513004,4.634422 L 94.843201,3.7940324 L 95.99889,2.9536428 z M 86.341086,9.169955 L 88.404826,9.001877 L 88.900121,10.430545 L 90.468562,8.7497548 L 92.862495,8.7497548 L 93.687987,10.3465 L 92.119546,12.111324 L 92.779951,12.951724 L 92.037002,15.052704 L 90.63366,15.472893 C 90.63366,15.472893 89.725613,15.556938 89.725613,15.220782 C 89.725613,14.884626 91.21151,12.531524 91.21151,12.531524 L 89.477971,11.943246 L 89.147774,13.455958 L 88.404826,14.12827 L 86.836382,11.775168 L 86.341086,9.169955 z " id="WA" style="fill:#d35f5f" />
+ <ns0:path d="M 224.65378,521.59843 L 226.52879,518.16091 L 228.7163,517.84841 L 229.0288,518.62966 L 226.99754,521.59843 L 224.65378,521.59843 z M 234.49758,518.00466 L 240.43511,520.50467 L 242.46637,520.19217 L 244.02887,516.44215 L 243.40387,513.16089 L 239.34135,512.69214 L 235.43508,514.41089 L 234.49758,518.00466 z M 264.18522,527.69221 L 267.77898,533.00473 L 270.12274,532.69223 L 271.2165,532.22348 L 272.62275,533.47348 L 276.21652,533.31723 L 277.15403,531.91098 L 274.34151,530.19222 L 272.4665,526.59845 L 270.43524,523.16094 L 264.81022,525.97345 L 264.18522,527.69221 z M 283.71656,536.286 L 284.96656,534.41099 L 289.49783,535.34849 L 290.12284,534.87974 L 296.06036,535.50474 L 295.74786,536.75475 L 293.24785,538.161 L 289.02908,537.8485 L 283.71656,536.286 z M 288.87283,541.28602 L 290.74784,545.03604 L 293.7166,543.94228 L 294.0291,542.37977 L 292.4666,540.34851 L 288.87283,540.03601 L 288.87283,541.28602 z M 295.59161,540.19226 L 297.77912,537.37975 L 302.31039,539.72351 L 306.52916,540.81727 L 310.74793,543.47353 L 310.74793,545.34854 L 307.31042,547.0673 L 302.62289,548.0048 L 300.27913,546.59854 L 295.59161,540.19226 z M 311.68544,555.19233 L 313.24794,553.94233 L 316.52921,555.50484 L 323.87299,558.94235 L 327.15426,560.97361 L 328.71676,563.31737 L 330.59177,567.53614 L 334.49804,570.03615 L 334.18554,571.28616 L 330.43552,574.41117 L 326.373,575.81743 L 324.96675,575.19243 L 321.99798,576.91118 L 319.65422,580.0362 L 317.46671,582.84871 L 315.74795,582.69246 L 312.31044,580.19245 L 311.99794,575.81743 L 312.62294,573.47367 L 311.06043,568.00489 L 309.02917,566.28613 L 308.87292,563.78612 L 311.06043,562.84862 L 313.09169,559.87986 L 313.56044,558.94235 L 311.99794,557.22359 L 311.68544,555.19233 z " id="HI_Pacific" style="fill:none;fill-opacity:0.26666697;stroke:#80b0f0;stroke-width:1pt" />
+ <ns0:path d="M 224.65378,521.59843 L 226.52879,518.16091 L 228.7163,517.84841 L 229.0288,518.62966 L 226.99754,521.59843 L 224.65378,521.59843 z M 234.49758,518.00466 L 240.43511,520.50467 L 242.46637,520.19217 L 244.02887,516.44215 L 243.40387,513.16089 L 239.34135,512.69214 L 235.43508,514.41089 L 234.49758,518.00466 z M 264.18522,527.69221 L 267.77898,533.00473 L 270.12274,532.69223 L 271.2165,532.22348 L 272.62275,533.47348 L 276.21652,533.31723 L 277.15403,531.91098 L 274.34151,530.19222 L 272.4665,526.59845 L 270.43524,523.16094 L 264.81022,525.97345 L 264.18522,527.69221 z M 283.71656,536.286 L 284.96656,534.41099 L 289.49783,535.34849 L 290.12284,534.87974 L 296.06036,535.50474 L 295.74786,536.75475 L 293.24785,538.161 L 289.02908,537.8485 L 283.71656,536.286 z M 288.87283,541.28602 L 290.74784,545.03604 L 293.7166,543.94228 L 294.0291,542.37977 L 292.4666,540.34851 L 288.87283,540.03601 L 288.87283,541.28602 z M 295.59161,540.19226 L 297.77912,537.37975 L 302.31039,539.72351 L 306.52916,540.81727 L 310.74793,543.47353 L 310.74793,545.34854 L 307.31042,547.0673 L 302.62289,548.0048 L 300.27913,546.59854 L 295.59161,540.19226 z M 311.68544,555.19233 L 313.24794,553.94233 L 316.52921,555.50484 L 323.87299,558.94235 L 327.15426,560.97361 L 328.71676,563.31737 L 330.59177,567.53614 L 334.49804,570.03615 L 334.18554,571.28616 L 330.43552,574.41117 L 326.373,575.81743 L 324.96675,575.19243 L 321.99798,576.91118 L 319.65422,580.0362 L 317.46671,582.84871 L 315.74795,582.69246 L 312.31044,580.19245 L 311.99794,575.81743 L 312.62294,573.47367 L 311.06043,568.00489 L 309.02917,566.28613 L 308.87292,563.78612 L 311.06043,562.84862 L 313.09169,559.87986 L 313.56044,558.94235 L 311.99794,557.22359 L 311.68544,555.19233 z " id="HI" style="fill:#e9afaf" />
+ <ns0:path d="M 365.08234,342.9472 L 388.2557,344.07626 L 420.00963,345.26475 L 418.60872,369.98537 L 418.14175,388.52584 L 418.37523,390.18973 L 422.81144,393.9929 L 424.9128,395.18139 L 425.61327,394.94369 L 426.31372,392.80441 L 427.71463,394.70599 L 429.81599,394.70599 L 429.81599,393.2798 L 432.6178,394.70599 L 432.15084,398.74687 L 436.35356,398.98457 L 438.92189,400.17306 L 443.12462,400.88615 L 445.69295,402.78774 L 448.02779,400.64846 L 451.53007,401.36155 L 454.0984,404.92703 L 455.03233,404.92703 L 455.03233,407.30401 L 457.36718,408.0171 L 459.70203,405.64012 L 461.5699,406.35321 L 464.13823,406.35321 L 465.07218,408.9679 L 469.97536,410.86948 L 471.37627,410.15638 L 473.24415,405.87781 L 474.41156,405.87781 L 475.57899,408.0171 L 479.78172,408.73019 L 483.51747,410.15638 L 486.55277,411.10718 L 488.42065,410.15638 L 489.1211,407.54171 L 493.55731,407.54171 L 495.65868,408.49249 L 498.46049,406.35321 L 499.62792,406.35321 L 500.32837,408.0171 L 504.53109,408.0171 L 506.16549,405.87781 L 508.03337,406.35321 L 510.13473,408.9679 L 513.40351,410.86948 L 516.6723,411.82028 L 519.47412,413.12761 L 521.80896,415.14805 L 524.84426,413.72186 L 527.64608,414.91035 L 528.33194,426.45357 L 528.34653,436.5409 L 529.04699,446.28652 L 529.74745,450.3274 L 532.31578,454.60597 L 533.24971,459.83533 L 537.68592,465.54009 L 537.9194,468.86787 L 538.61987,469.58096 L 537.9194,478.3758 L 534.88411,483.60516 L 536.5185,485.74444 L 535.81804,488.35912 L 535.11759,495.96547 L 533.71668,499.29324 L 534.00598,503.01936 L 527.40119,504.83432 L 517.33018,509.5405 L 516.33959,511.55743 L 513.69802,513.57437 L 511.55174,515.08707 L 510.23095,515.92746 L 504.4525,521.47403 L 501.64583,523.65904 L 496.19758,527.0206 L 490.41913,529.54177 L 483.98029,533.07141 L 482.16421,534.58411 L 476.22066,538.28182 L 472.7536,538.95414 L 468.79123,544.66878 L 464.66377,545.00494 L 463.67318,547.02188 L 465.98456,549.03881 L 464.49867,554.75346 L 463.17788,559.45964 L 462.0222,563.49351 L 461.1967,568.19969 L 462.0222,570.72086 L 463.83828,577.94821 L 464.82887,584.33517 L 466.64495,587.1925 L 465.65436,588.7052 L 462.51749,590.72214 L 456.73904,586.68827 L 451.1257,585.51172 L 449.80491,586.01595 L 446.50294,585.34364 L 442.21038,582.15016 L 436.92723,580.97362 L 429.1676,577.44398 L 427.02132,573.41011 L 425.70053,566.68699 L 422.39856,564.67006 L 421.73817,562.31697 L 422.39856,561.64466 L 422.72876,558.11502 L 421.40797,557.44271 L 420.74758,556.43424 L 422.06837,551.89614 L 420.41738,549.54304 L 417.11541,548.19842 L 413.64834,543.66032 L 410.01618,536.76912 L 405.72362,534.07988 L 405.88872,532.06294 L 400.44047,519.28902 L 399.61497,514.91899 L 397.79889,512.90206 L 397.63379,511.38936 L 391.52515,505.84279 L 388.88357,502.6493 L 388.88357,501.47276 L 386.242,499.28775 L 379.30786,498.1112 L 371.71333,497.43889 L 368.57646,495.0858 L 363.9537,496.93466 L 360.32154,498.44736 L 358.01016,501.80891 L 357.01957,505.67471 L 352.56191,512.06167 L 350.08543,514.58284 L 347.44386,513.57437 L 345.62777,512.39782 L 343.64659,511.72551 L 339.68423,509.37242 L 339.68423,508.70011 L 337.86815,506.68317 L 332.585,504.49816 L 324.99047,496.43042 L 322.67909,491.55616 L 322.67909,483.15227 L 319.37712,476.42915 L 318.88182,473.57182 L 317.23084,472.56336 L 316.07515,470.37834 L 310.9571,468.19333 L 309.63631,466.51255 L 302.37198,458.27673 L 301.05119,454.91517 L 296.26332,452.56207 L 294.77744,448.02394 L 292.13584,444.99855 L 290.15467,444.49434 L 289.49163,439.63101 L 297.66367,440.34413 L 327.31615,443.19648 L 356.96871,444.86037 L 359.30356,420.13975 L 363.27277,362.37936 L 364.90719,342.88781 L 366.3081,342.91754 M 467.38967,586.18345 L 466.81183,578.788 L 464.00514,571.30851 L 463.42729,563.99709 L 464.99573,555.42509 L 468.38027,548.28176 L 471.92989,542.65112 L 475.14933,538.95339 L 475.80972,539.20552 L 470.9393,546.09673 L 466.48163,552.90391 L 464.41788,559.79513 L 464.08769,565.17365 L 464.99573,571.56063 L 467.63732,579.04012 L 468.13261,584.41863 L 468.29771,585.93134 L 467.38967,586.18345 z " id="TX" style="fill:#280b0b" />
+ <ns0:path d="M 140.74058,399.1133 L 144.96457,398.27159 L 146.48222,396.01346 L 147.06593,393.16108 L 143.33019,392.56684 L 142.86321,391.73489 L 143.33019,389.95216 L 143.44692,383.89086 L 145.54828,383.17775 L 148.46685,380.32538 L 149.05056,375.21486 L 150.56821,371.4117 L 152.55282,369.39125 L 156.0551,367.60852 L 157.68948,366.18234 L 157.80623,363.80536 L 156.75555,363.21111 L 155.93835,362.14147 L 154.65419,356.08016 L 151.85237,350.96965 L 152.44317,347.57226 L 149.86775,344.19525 L 135.04148,320.54427 L 115.19528,290.35661 L 91.963567,255.17727 L 79.318752,235.85757 L 80.989783,229.03046 L 88.111072,202.05171 L 96.399776,169.3682 L 82.624178,165.56503 L 68.848582,161.99955 L 56.006928,157.72098 L 48.301935,155.58169 L 36.627704,152.49162 L 29.426941,149.98419 L 27.813217,154.89608 L 27.648119,162.62767 L 22.364968,174.89736 L 19.228097,177.5866 L 18.8979,178.76315 L 17.081817,179.60354 L 15.595931,183.97356 L 14.770438,187.33512 L 17.577112,191.70515 L 19.228097,196.07518 L 20.383786,199.77289 L 20.053589,206.49601 L 18.237506,209.68949 L 17.577112,215.74029 L 16.586521,219.60608 L 18.402605,223.63995 L 21.209279,228.34614 L 23.520657,233.38847 L 24.841445,237.59042 L 24.511248,240.95198 L 24.181051,241.45621 L 24.181051,243.64123 L 29.959497,250.19627 L 29.464202,252.71743 L 28.803808,255.07053 L 28.143414,257.08746 L 28.308513,265.65943 L 30.454793,269.52523 L 32.435974,272.21447 L 35.242648,272.71871 L 36.233239,275.57603 L 35.07755,279.27375 L 32.93127,280.95453 L 31.775581,280.95453 L 30.950088,284.9884 L 31.445384,288.0138 L 34.747353,292.5519 L 36.398338,298.09847 L 37.884224,302.97273 L 39.205012,306.16621 L 42.672079,312.21702 L 44.157966,314.90627 L 44.653261,317.93167 L 46.304246,318.94014 L 46.304246,321.4613 L 45.478753,323.47824 L 43.66267,330.87367 L 43.167375,332.8906 L 45.643852,335.74793 L 49.936412,336.25216 L 54.559169,338.10102 L 58.521532,340.28603 L 61.493305,340.28603 L 64.465077,343.47951 L 67.106653,348.52185 L 68.262342,350.87494 L 72.224705,353.05995 L 77.177659,353.90034 L 78.663546,356.08536 L 79.32394,359.44692 L 77.838053,360.11923 L 78.16825,361.12769 L 81.470222,361.96808 L 84.276896,362.13616 L 87.248668,367.01042 L 91.211035,371.38045 L 92.036527,373.73354 L 94.678102,378.10356 L 95.008299,381.46512 L 95.008299,391.21364 L 95.503595,393.0625 L 105.7397,394.5752 L 125.88171,397.43253 L 140.74058,399.1133 z M 50.26694,346.75563 L 51.587732,348.35237 L 51.422633,349.697 L 48.120652,349.61296 L 47.542806,348.35237 L 46.88241,346.83966 L 50.26694,346.75563 z M 52.248128,346.75563 L 53.48637,346.08332 L 57.118549,348.26833 L 60.255432,349.52892 L 59.347387,350.20124 L 54.724613,349.94912 L 53.073623,348.26833 L 52.248128,346.75563 z M 73.380807,367.34524 L 75.19689,369.78238 L 76.022393,370.79086 L 77.590834,371.37912 L 78.168673,369.86642 L 77.178082,368.01756 L 74.453952,365.91658 L 73.380807,366.08465 L 73.380807,367.34524 z M 71.89491,376.33744 L 73.711004,379.61497 L 74.949248,381.63192 L 73.463351,381.88403 L 72.142563,380.62344 C 72.142563,380.62344 71.399615,379.11074 71.399615,378.69054 C 71.399615,378.27035 71.399615,376.42148 71.399615,376.42148 L 71.89491,376.33744 z " id="CA" style="fill:#280b0b" />
+ <ns0:path d="M 141.11208,399.22238 L 138.4292,401.4664 L 138.099,402.9791 L 138.5943,403.98756 L 157.91082,415.08071 L 170.2932,422.98037 L 185.31716,431.8885 L 202.4874,442.30933 L 215.03489,444.8305 L 242.33612,448.47703 L 244.42909,434.63935 L 248.26156,406.64864 L 255.37454,351.33455 L 259.72234,319.30647 L 233.45531,315.31482 L 205.67064,310.56085 L 171.53056,303.99238 L 168.54652,322.80241 L 168.07955,323.2778 L 166.32842,326.01134 L 163.76009,325.89248 L 162.47592,323.04011 L 159.67411,322.68356 L 158.74017,321.49507 L 157.80623,321.49507 L 156.87229,322.08932 L 154.88767,323.15896 L 154.77093,330.40875 L 154.53744,332.19149 L 153.95374,345.26489 L 152.43609,347.52302 L 151.85237,350.96965 L 154.65419,356.08016 L 155.93835,362.14147 L 156.75555,363.21111 L 157.80623,363.80536 L 157.68948,366.18234 L 156.0551,367.60852 L 152.55282,369.39125 L 150.56821,371.4117 L 149.05056,375.21486 L 148.46685,380.32538 L 145.54828,383.17775 L 143.44692,383.89086 L 143.33019,389.95216 L 142.86321,391.73489 L 143.33019,392.56684 L 147.06593,393.16108 L 146.48222,396.01346 L 144.96457,398.27159 L 141.11208,399.22238 z " id="AZ" style="fill:#de8787" />
+ <ns0:path d="M 144.08485,180.96023 L 165.51122,185.65054 L 175.43432,187.67098 L 184.89044,189.57255 L 193.12078,191.77126 L 191.89498,197.53545 L 188.27597,215.71936 L 184.42347,236.99336 L 182.43886,246.26359 L 180.22075,260.40663 L 176.83522,277.63975 L 173.56644,293.44668 L 171.55619,304.36486 L 168.54652,322.80241 L 168.07955,323.2778 L 166.32842,326.01134 L 163.76009,325.89248 L 162.47592,323.04011 L 159.67411,322.68356 L 158.74017,321.49507 L 157.80623,321.49507 L 156.87229,322.08932 L 154.88767,323.15896 L 154.77093,330.40875 L 154.53744,332.19149 L 153.95374,345.26489 L 152.43963,347.54764 L 149.86775,344.19525 L 135.04148,320.54427 L 115.19528,290.35661 L 91.963567,255.17727 L 79.318752,235.85757 L 80.989783,229.03046 L 88.111072,202.05171 L 96.166292,169.45944 L 130.48854,177.92533 L 144.49761,181.0154" id="NV" style="fill:#e9afaf" />
+ <ns0:path d="M 259.6056,319.59339 L 233.45531,315.31482 L 205.67064,310.56085 L 171.45228,304.13508 L 173.56644,293.44668 L 176.83522,277.63975 L 180.22075,260.40663 L 182.43886,246.26359 L 184.42347,236.99336 L 188.27597,215.71936 L 191.89498,197.53545 L 193.03322,191.74155 L 206.02081,194.08882 L 218.27875,196.22811 L 228.78555,198.12969 L 237.30774,199.55589 L 242.21095,200.38777 L 240.53069,211.44019 L 238.82546,223.80098 L 245.48808,224.7662 L 262.73518,227.14318 L 272.10412,228.36648 L 268.94498,251.37398 L 265.6762,274.66841 L 261.84373,303.76606 L 260.30605,315.31482 L 259.6056,319.59339 z " id="UT" style="fill:#e9afaf" />
+ <ns0:path d="M 384.05299,331.95365 L 388.2557,263.49654 L 389.8901,240.2021 L 355.80134,237.34972 L 330.81813,235.21041 L 292.76047,230.93187 L 271.63008,228.31722 L 268.94498,251.37398 L 265.6762,274.66841 L 261.84373,303.76606 L 260.30605,315.31482 L 259.72234,319.35569 L 294.86179,323.63426 L 332.58567,328.23704 L 366.04543,330.52751 L 372.84567,331.2406 L 384.5199,331.83485" id="CO" style="fill:#e9afaf" />
+ <ns0:path d="M 290.31977,444.66242 L 289.49163,439.63101 L 297.66367,440.34413 L 327.31615,443.19648 L 356.96871,444.86037 L 359.30356,420.13975 L 363.27277,362.37936 L 364.90719,342.88781 L 366.3081,342.91754 L 366.29351,330.73549 L 332.58567,328.23704 L 294.86179,323.63426 L 259.66398,319.35569 L 255.37454,351.33455 L 248.26156,406.64864 L 244.42909,434.63935 L 242.33612,448.47703 L 258.12559,450.54515 L 259.44637,440.12432 L 276.45152,442.81356 L 290.31977,444.66242 z " id="NM" style="fill:#e9afaf" />
+ <ns0:path d="M 144.38087,180.54003 L 148.93381,161.76187 L 153.37002,143.34026 L 154.77093,138.94284 L 157.33926,132.76269 L 156.0551,130.38571 L 153.48676,130.50455 L 152.66957,129.43491 L 153.13654,128.24642 L 153.48676,125.0375 L 158.03971,119.33273 L 159.90759,118.85734 L 161.07501,117.66885 L 161.65873,114.34107 L 162.59266,113.62798 L 166.5619,107.56668 L 170.53114,103.05041 L 170.76463,99.128389 L 167.26235,96.394856 L 166.19165,92.03947 L 151.85237,88.313121 L 136.44238,84.628799 L 120.68217,84.747642 L 120.21521,83.321459 L 114.61157,85.460744 L 110.05862,84.866496 L 107.60703,83.202605 L 106.32286,83.915707 L 101.53644,83.678 L 99.785303,82.251817 L 94.415149,80.112532 L 93.597952,80.231386 L 89.161743,78.686338 L 87.177124,80.587926 L 80.873036,80.231386 L 74.802439,75.952816 L 75.50289,75.12087 L 75.736374,67.039124 L 73.401527,62.998262 L 69.198802,62.404014 L 68.498351,59.789335 L 66.094359,59.304248 L 60.172517,61.44476 L 57.861139,68.167876 L 54.559169,78.588708 L 51.2572,85.311824 L 46.139147,99.934604 L 39.535209,114.05315 L 31.280285,127.16323 L 29.299104,130.18863 L 28.473611,139.09676 L 27.152823,145.31564 L 29.426941,149.98419 L 36.627704,152.49162 L 48.301935,155.58169 L 56.006928,157.72098 L 68.848582,161.99955 L 82.624178,165.56503 L 96.399776,169.60589 M 144.08485,180.96023 L 96.166292,169.45944 L 130.48854,177.92533 L 144.49761,181.0154" id="OR" style="fill:#e9afaf" />
+ <ns0:path d="M 482.58353,129.91009 L 481.88308,121.11525 L 480.0152,113.50891 L 478.14732,99.484714 L 477.68036,89.263683 L 475.81248,85.698205 L 474.17808,80.468846 L 474.17808,69.772421 L 474.87853,65.731548 L 472.88209,60.014242 L 442.87077,59.427825 L 423.88445,58.755513 L 396.8083,57.410889 L 371.33142,55.452236 L 370.0439,70.247815 L 368.64299,85.935913 L 366.33647,111.87386 L 365.67607,124.49947 L 423.04492,128.24621 L 482.58353,129.91009 z " id="ND" style="fill:#f4d7d7" />
+ <ns0:path d="M 484.10703,208.42015 L 483.13305,206.29529 L 481.4161,203.35887 L 483.28398,198.8426 L 484.6849,192.90014 L 481.88308,190.76086 L 481.4161,187.90848 L 482.35005,185.29379 L 484.21793,185.29379 L 484.6849,178.16284 L 484.45141,146.54897 L 483.98444,143.4589 L 479.78172,139.89342 L 478.61429,137.99183 L 478.61429,136.32794 L 480.71565,134.66406 L 482.11657,133.23787 L 482.4668,129.91009 L 423.04492,128.24621 L 365.67608,124.20534 L 364.89307,129.69427 L 363.24575,146.19243 L 361.87193,164.85174 L 360.23755,191.5928 L 376.1145,192.66245 L 396.66115,193.85093 L 414.87297,195.03943 L 439.15538,196.22791 L 450.12916,195.75252 L 452.23052,198.1295 L 457.1337,201.21959 L 458.30112,202.17037 L 462.73733,200.74418 L 466.70658,200.26879 L 469.50839,200.03109 L 471.37627,201.45728 L 476.51293,203.12117 L 479.54822,204.78505 L 480.0152,206.44894 L 480.94914,208.58823 L 482.81702,208.58823 L 484.10703,208.42015 z " id="SD" style="fill:#f4d7d7" />
+ <ns0:path d="M 496.12564,252.80011 L 497.52656,255.41479 L 497.29307,257.79177 L 499.8614,261.83265 L 503.13018,266.11122 L 496.82609,266.11122 L 451.76325,265.63581 L 410.43676,264.20963 L 388.13897,263.37769 L 389.8901,240.2021 L 355.80134,237.34972 L 360.23755,191.5928 L 376.1145,192.66245 L 396.66115,193.85093 L 414.87297,195.03943 L 439.15538,196.22791 L 450.12916,195.75252 L 452.23052,198.1295 L 457.1337,201.21959 L 458.30112,202.17037 L 462.73733,200.74418 L 466.70658,200.26879 L 469.50839,200.03109 L 471.37627,201.45728 L 476.51293,203.12117 L 479.54822,204.78505 L 480.0152,206.44894 L 480.94914,208.58823 L 482.81702,208.58823 L 484.45141,208.46938 L 485.61883,214.05529 L 488.42065,221.89933 L 489.35459,226.891 L 491.68943,230.69417 L 492.38988,236.16123 L 494.02428,240.4398 L 494.25776,247.33306 L 496.23653,253.05224" id="NE" style="fill:#f4d7d7" />
+ <ns0:path d="M 580.12177,205.73586 L 580.18014,207.63744 L 582.51499,208.35053 L 583.44892,209.53902 L 583.91589,211.44061 L 587.88513,215.00608 L 588.58559,217.38307 L 587.88513,220.94855 L 586.01725,224.75171 L 585.3168,227.36639 L 582.98196,229.26798 L 581.11408,229.98108 L 575.74393,231.40726 L 575.04347,233.30885 L 574.34302,235.44814 L 575.04347,236.87433 L 576.91135,238.53822 L 576.67787,242.81678 L 574.80999,244.48067 L 574.10954,246.14456 L 574.10954,248.99694 L 572.24166,249.47233 L 570.60726,250.66083 L 570.37378,252.08702 L 570.60726,254.22631 L 568.85613,256.06846 L 565.4706,252.56242 L 564.30317,250.18543 L 556.3647,250.89852 L 546.32485,251.37392 L 520.40805,252.32472 L 506.63246,252.56242 L 497.05959,252.80011 L 495.9476,252.92617 L 494.25776,247.33306 L 494.02428,240.4398 L 492.38988,236.16123 L 491.68943,230.69417 L 489.35459,226.891 L 488.42065,221.89933 L 485.61883,214.05529 L 484.45141,208.46938 L 483.0505,206.21125 L 481.4161,203.35887 L 483.28398,198.8426 L 484.6849,192.90014 L 481.88308,190.76086 L 481.4161,187.90848 L 482.35005,185.29379 L 484.10119,185.29379 L 495.89216,185.29379 L 546.55834,184.5807 L 565.00364,183.86761 L 569.20636,183.74877 L 569.90681,187.19538 L 572.24166,188.85927 L 572.47514,190.28546 L 570.37378,193.85093 L 570.60726,197.17871 L 573.1756,201.21959 L 575.74393,202.40807 L 578.77923,202.88347 L 580.12177,205.73586 z " id="IA" style="fill:#e9afaf" />
+ <ns0:path d="M 639.20393,481.84625 L 638.01716,483.15227 L 632.73401,483.15227 L 631.24813,482.31188 L 629.10185,481.97572 L 622.16771,483.99266 L 620.35163,483.15227 L 617.71005,487.52229 L 616.58406,488.3312 L 615.43633,485.74444 L 614.2689,481.70357 L 610.76664,478.3758 L 611.93406,470.53175 L 611.23361,469.58096 L 609.36573,469.81866 L 600.96028,470.53175 L 576.2109,471.24485 L 575.74393,469.58096 L 576.44438,461.26152 L 579.94666,454.84366 L 585.3168,445.33573 L 584.38287,443.19645 L 585.55029,443.19645 L 586.25075,439.86868 L 583.91589,437.96709 L 584.14938,436.0655 L 582.04802,431.31154 L 581.75616,425.75534 L 583.15706,422.99209 L 582.74847,418.47583 L 581.34756,415.38574 L 582.74847,413.95956 L 581.34756,411.82028 L 581.81454,409.91869 L 582.74847,403.50083 L 585.78377,400.64846 L 585.08332,398.50917 L 588.81908,393.0421 L 591.62089,392.09132 L 591.62089,389.47664 L 590.92044,388.05044 L 593.72225,382.58339 L 596.52407,381.39489 L 596.63379,377.84737 L 605.49374,377.76685 L 630.09345,375.74991 L 635.69855,375.51222 L 635.7068,382.13688 L 635.8719,399.44893 L 635.04641,431.71994 L 634.88131,446.34274 L 637.68799,465.83981 L 639.20393,481.84625 z " id="MS" style="fill:#e9afaf" />
+ <ns0:path d="M 632.23973,310.19942 L 632.07463,306.16555 L 632.56993,301.45935 L 634.88131,298.43395 L 636.6974,294.40007 L 639.33898,290.03004 L 638.84368,283.97923 L 637.0276,281.12189 L 636.6974,277.76034 L 637.52289,272.04567 L 637.0276,264.81831 L 635.7068,248.17858 L 634.38601,232.21115 L 633.3949,220.02589 L 636.53128,220.95071 L 638.01716,221.95917 L 639.17285,221.62302 L 641.31913,219.60608 L 644.20888,217.92491 L 649.40999,217.75643 L 671.86343,215.40333 L 678.13717,214.73102 L 678.30227,215.90756 L 679.78816,231.20268 L 681.60425,245.48932 L 684.24582,269.86066 L 684.74112,275.7434 L 684.24582,278.09649 L 685.73171,279.60919 L 686.06192,281.62613 L 683.25523,283.64307 L 679.29287,285.49193 L 676.48618,285.82809 L 675.99089,290.53428 L 671.20302,294.56815 L 668.23125,298.26587 L 668.56145,300.61896 L 667.73595,302.80398 L 662.94809,302.80398 L 661.7924,301.1232 L 660.63671,301.96359 L 657.66493,303.64438 L 657.83004,307.17401 L 655.68375,307.67825 L 654.85825,306.5017 L 652.87707,304.82092 L 649.90529,306.33362 L 648.08921,309.69518 L 646.27312,308.85479 L 644.78724,306.83786 L 641.15506,307.34209 L 635.2115,308.35056 L 632.23973,310.19942 z " id="IN" style="fill:#de8787" />
+ <ns0:path d="M 632.07463,310.03134 L 632.07463,306.16555 L 632.56993,301.45935 L 634.88131,298.43395 L 636.6974,294.40007 L 639.33898,290.03004 L 638.84368,283.97923 L 637.0276,281.12189 L 636.6974,277.76034 L 637.52289,272.04567 L 637.0276,264.81831 L 635.7068,248.17858 L 634.38601,232.21115 L 633.56001,220.10992 L 632.23872,219.26993 L 631.41322,216.58068 L 630.09244,212.71489 L 628.44145,210.86603 L 626.95557,208.17679 L 626.71703,202.46993 L 616.60376,203.83427 L 588.81909,205.617 L 579.94666,205.17133 L 580.18014,207.63744 L 582.51499,208.35053 L 583.44892,209.53902 L 583.91589,211.44061 L 587.88513,215.00608 L 588.58559,217.38307 L 587.88513,220.94855 L 586.01725,224.75171 L 585.3168,227.36639 L 582.98196,229.26798 L 581.11408,229.98108 L 575.74393,231.40726 L 575.04347,233.30885 L 574.34302,235.44814 L 575.04347,236.87433 L 576.91135,238.53822 L 576.67787,242.81678 L 574.80999,244.48067 L 574.10954,246.14456 L 574.10954,248.99694 L 572.24166,249.47233 L 570.60726,250.66083 L 570.37378,252.08702 L 570.60726,254.22631 L 568.85613,255.59306 L 567.80545,258.50488 L 568.27242,262.30804 L 570.60726,269.91439 L 578.07878,277.75843 L 583.68241,281.56161 L 583.44892,286.07787 L 584.38287,287.50407 L 590.92044,287.97946 L 593.72225,289.40566 L 593.0218,293.20882 L 590.68696,299.38898 L 589.98649,302.71676 L 592.32134,306.75762 L 598.85891,312.22469 L 603.52862,312.93778 L 605.62997,318.16715 L 607.73133,321.49492 L 606.7974,324.58499 L 608.43179,328.86356 L 610.29967,331.00285 L 613.32836,330.65102 L 613.91377,328.51994 L 616.22516,326.67109 L 618.37144,325.99877 L 621.17811,327.3434 L 624.81029,328.68802 L 625.96598,328.35186 L 626.13108,325.99877 L 624.81029,323.47759 L 625.14049,321.1245 L 627.12167,319.6118 L 629.76325,318.93949 L 631.41424,318.26718 L 630.58875,316.41831 L 629.92835,314.40138 L 631.08404,313.56099 L 632.07463,310.03134 z " id="IL" style="fill:#782121" />
+ <ns0:path d="M 482.35005,129.91009 L 481.88308,121.11525 L 480.0152,113.50891 L 478.14732,99.484714 L 477.68036,89.263683 L 475.81248,85.698205 L 474.17808,80.468846 L 474.17808,69.772421 L 474.87853,65.731548 L 473.01887,60.063466 L 503.79211,60.100136 L 504.1223,51.528162 L 504.7827,51.360084 L 507.09408,51.864318 L 509.07526,52.704708 L 509.90075,58.419357 L 511.38664,64.806318 L 513.03762,66.487097 L 517.99058,66.487097 L 518.32077,67.999799 L 524.75961,68.335954 L 524.75961,70.520967 L 529.71257,70.520967 L 530.04276,69.176344 L 531.19845,67.999799 L 533.50983,67.327487 L 534.83062,68.335954 L 537.80239,68.335954 L 541.76476,71.025201 L 547.21301,73.54637 L 549.68948,74.050604 L 550.18478,73.042136 L 551.67066,72.537902 L 552.16596,75.563305 L 554.80753,76.907928 L 555.30283,76.403695 L 556.62362,76.571773 L 556.62362,78.756786 L 559.26519,79.765253 L 562.40206,79.765253 L 564.05305,78.924863 L 567.35502,75.563305 L 569.99659,75.059071 L 570.82209,76.907928 L 571.31738,78.252552 L 572.30797,78.252552 L 573.29856,77.412162 L 582.37898,77.076006 L 584.19506,80.269487 L 584.85546,80.269487 L 585.58425,79.142165 L 590.11857,78.756786 L 589.49346,81.126733 L 585.47097,83.036786 L 576.02857,87.25913 L 571.15228,89.345695 L 568.01541,92.034941 L 565.53894,95.732656 L 563.22756,99.766526 L 561.41147,100.60692 L 556.78872,105.81733 L 555.46793,105.98541 L 552.00086,109.17889 L 552.70347,109.74365 L 549.82713,112.55812 L 549.59365,115.4105 L 549.59365,124.20534 L 548.42622,125.86923 L 543.05607,129.91009 L 540.72123,136.09025 L 541.18819,136.32794 L 543.75652,138.46723 L 544.45698,141.79501 L 542.5891,145.12278 L 542.5891,149.16365 L 543.05607,156.0569 L 546.09137,159.14699 L 549.59365,159.14699 L 551.46153,162.47476 L 554.96379,162.95015 L 558.93303,168.89261 L 566.17105,173.17118 L 568.27242,176.02356 L 569.20636,183.86761 L 565.00364,183.86761 L 546.55834,184.5807 L 495.89216,185.29379 L 484.10119,185.29379 L 484.6849,178.16284 L 484.45141,146.54897 L 483.98444,143.4589 L 479.78172,139.89342 L 478.61429,137.99183 L 478.61429,136.32794 L 480.71565,134.66406 L 482.11657,133.23787 L 482.35005,129.91009 z " id="MN" style="fill:#d35f5f" />
+ <ns0:path d="M 626.6436,202.64577 L 626.79047,198.26019 L 625.13948,193.55401 L 624.47909,187.16705 L 623.3234,184.64588 L 624.31399,181.4524 L 625.13948,178.42699 L 626.62537,175.73775 L 625.96497,172.20811 L 625.30458,168.5104 L 625.79988,166.66154 L 627.78106,164.14037 L 627.94616,161.28305 L 627.12066,159.93842 L 627.78106,157.24918 L 628.27635,153.88762 L 631.08303,148.00489 L 634.0548,140.94562 L 634.2199,138.59253 L 633.8897,137.58406 L 633.06421,138.08829 L 628.77165,144.64333 L 625.96497,148.84528 L 623.98379,150.69414 L 623.1583,153.04723 L 621.67241,153.88762 L 620.51673,155.90455 L 619.03084,155.5684 L 618.86574,153.71954 L 620.18653,151.19837 L 622.33281,146.32411 L 624.14889,144.64333 L 625.27363,142.26081 L 623.6083,141.31962 L 622.20739,139.89342 L 620.57299,129.197 L 616.83724,128.00851 L 615.43633,125.63153 L 602.59467,122.77914 L 600.02634,121.59066 L 591.62089,119.21367 L 583.21544,118.02518 L 578.9573,112.40581 L 578.41662,113.71699 L 577.26093,113.54892 L 576.60053,112.37237 L 573.79386,111.53198 L 572.63817,111.70006 L 570.82209,112.70853 L 569.8315,112.03621 L 570.49189,110.01928 L 572.47307,106.8258 L 573.62876,105.64925 L 571.64758,104.13655 L 569.5013,104.97694 L 566.52953,106.99388 L 558.935,110.35543 L 555.96322,111.02775 L 552.99145,110.52351 L 551.98885,109.6104 L 549.82713,112.55812 L 549.59365,115.4105 L 549.59365,124.20534 L 548.42622,125.86923 L 543.05607,129.91009 L 540.72123,136.09025 L 541.18819,136.32794 L 543.75652,138.46723 L 544.45698,141.79501 L 542.5891,145.12278 L 542.5891,149.16365 L 543.05607,156.0569 L 546.09137,159.14699 L 549.59365,159.14699 L 551.46153,162.47476 L 554.96379,162.95015 L 558.93303,168.89261 L 566.17105,173.17118 L 568.27242,176.02356 L 569.20636,183.74877 L 569.90681,187.19538 L 572.24166,188.85927 L 572.47514,190.28546 L 570.37378,193.85093 L 570.60726,197.17871 L 573.1756,201.21959 L 575.74393,202.40807 L 578.77923,202.88347 L 580.03422,205.49817 L 589.40281,205.49815 L 616.60376,203.83427 L 626.6436,202.64577 z " id="WI" style="fill:#de8787" />
+ <ns0:path d="M 568.73938,255.89021 L 565.4706,252.56242 L 564.30317,250.18543 L 556.3647,250.89852 L 546.32485,251.37392 L 520.40805,252.32472 L 506.63246,252.56242 L 498.57727,252.68126 L 496.24239,252.80011 L 497.52656,255.41479 L 497.29307,257.79177 L 499.8614,261.83265 L 503.01343,266.11122 L 506.16549,268.96359 L 508.50034,269.20129 L 509.90124,270.15209 L 509.90124,273.24216 L 508.03337,274.90605 L 507.56639,277.28304 L 509.66775,280.84852 L 512.23609,283.93859 L 514.80442,285.84018 L 516.20533,297.96278 L 515.50487,334.68718 L 515.73836,339.55999 L 516.20533,346.69094 L 540.02077,346.21554 L 563.83621,345.50245 L 585.08332,344.55165 L 596.29058,344.07626 L 598.15846,347.16634 L 597.69149,349.54332 L 594.4227,352.3957 L 593.72225,355.48577 L 600.02634,355.96118 L 605.163,355.24808 L 607.26436,348.59252 L 607.11843,342.73921 L 610.06619,341.22388 L 611.46709,339.55999 L 613.56845,338.3715 L 613.80194,335.04372 L 614.73588,333.14213 L 613.33497,330.61659 L 610.29967,331.00285 L 608.43179,328.86356 L 606.7974,324.58499 L 607.73133,321.49492 L 605.62997,318.16715 L 603.52862,312.93778 L 598.85891,312.22469 L 592.32134,306.75762 L 589.98649,302.71676 L 590.68696,299.38898 L 593.0218,293.20882 L 593.72225,289.40566 L 590.92044,287.97946 L 584.38287,287.50407 L 583.44892,286.07787 L 583.68241,281.56161 L 578.07878,277.75843 L 570.60726,269.91439 L 568.27242,262.30804 L 567.80545,258.50488 L 568.73938,255.89021 z " id="MO" style="fill:#de8787" />
+ <ns0:path d="M 604.99844,354.98628 L 600.02634,355.96118 L 593.72225,355.48577 L 594.4227,352.3957 L 597.69149,349.54332 L 598.15846,347.16634 L 596.29058,344.07626 L 585.08332,344.55165 L 563.83621,345.50245 L 540.02077,346.21554 L 516.20533,346.69094 L 517.83972,353.82189 L 517.83971,362.37904 L 519.24063,373.78867 L 519.47412,413.12761 L 521.80896,415.14805 L 524.84426,413.72186 L 527.64608,414.91035 L 528.31735,426.58728 L 550.99455,426.55757 L 570.60726,425.60677 L 581.63941,425.75534 L 583.15706,422.99209 L 582.74847,418.47583 L 581.34756,415.38574 L 582.74847,413.95956 L 581.34756,411.82028 L 581.81454,409.91869 L 582.74847,403.50083 L 585.78377,400.64846 L 585.08332,398.50917 L 588.81908,393.0421 L 591.62089,392.09132 L 591.62089,389.47664 L 590.92044,388.05044 L 593.72225,382.58339 L 596.52407,381.39489 L 596.22104,377.59524 L 598.72469,376.42223 L 599.71528,371.54796 L 598.22939,367.85023 L 602.35687,365.49714 L 602.68706,362.80789 L 604.06449,358.25292 L 604.99844,354.98628 z " id="AR" style="fill:#e9afaf" />
+ <ns0:path d="M 383.76113,331.71594 L 372.84567,331.2406 L 366.27891,330.73549 L 366.54158,330.94347 L 365.98708,342.94722 L 388.2557,344.07626 L 420.00963,345.26475 L 418.60872,369.98537 L 418.14175,388.52584 L 418.37523,390.18973 L 422.81144,393.9929 L 424.9128,395.18139 L 425.61327,394.94369 L 426.31372,392.80441 L 427.71463,394.70599 L 429.81599,394.70599 L 429.81599,393.2798 L 432.6178,394.70599 L 432.15084,398.74687 L 436.35356,398.98457 L 438.92189,400.17306 L 443.12462,400.88615 L 445.69295,402.78774 L 448.02779,400.64846 L 451.53007,401.36155 L 454.0984,404.92703 L 455.03233,404.92703 L 455.03233,407.30401 L 457.36718,408.0171 L 459.70203,405.64012 L 461.5699,406.35321 L 464.13823,406.35321 L 465.07218,408.9679 L 469.97536,410.86948 L 471.37627,410.15638 L 473.24415,405.87781 L 474.41156,405.87781 L 475.57899,408.0171 L 479.78172,408.73019 L 483.51747,410.15638 L 486.55277,411.10718 L 488.42065,410.15638 L 489.1211,407.54171 L 493.55731,407.54171 L 495.65868,408.49249 L 498.46049,406.35321 L 499.62792,406.35321 L 500.32837,408.0171 L 504.53109,408.0171 L 506.16549,405.87781 L 508.03337,406.35321 L 510.13473,408.9679 L 513.40351,410.86948 L 516.6723,411.82028 L 519.47412,413.48417 L 519.24063,373.78867 L 517.83971,362.37904 L 517.83972,353.82189 L 516.20533,346.69094 L 515.73836,339.55999 L 515.50487,334.92488 L 501.9627,335.75681 L 454.56566,335.28143 L 408.56892,333.14212 L 383.76113,331.71594 z " id="OK" style="fill:#e9afaf" />
+ <ns0:path d="M 515.50487,335.04372 L 501.9627,335.75681 L 454.56566,335.28143 L 408.56892,333.14212 L 383.90706,331.83479 L 388.13897,263.37769 L 410.43676,264.20963 L 451.76325,265.63581 L 496.82609,266.11122 L 503.01343,266.11122 L 506.16549,268.96359 L 508.50034,269.20129 L 509.90124,270.15209 L 509.90124,273.24216 L 508.03337,274.90605 L 507.56639,277.28304 L 509.66775,280.84852 L 512.23609,283.93859 L 514.80442,285.84018 L 516.20533,297.96278 L 515.50487,335.04372 z " id="KS" style="fill:#e9afaf" />
+ <ns0:path d="M 616.71945,488.11058 L 615.43633,485.74444 L 614.2689,481.70357 L 610.76664,478.3758 L 611.93406,470.53175 L 611.23361,469.58096 L 609.36573,469.81866 L 600.96028,470.53175 L 576.2109,471.24485 L 575.74393,469.58096 L 576.44438,461.26152 L 579.94666,454.84366 L 585.3168,445.33573 L 584.38287,443.19645 L 585.55029,443.19645 L 586.25075,439.86868 L 583.91589,437.96709 L 584.14938,436.0655 L 582.04802,431.31154 L 581.69779,425.60677 L 570.60726,425.60677 L 550.99455,426.55757 L 528.31735,426.58728 L 528.34653,436.5409 L 529.04699,446.28652 L 529.74745,450.3274 L 532.31578,454.60597 L 533.24971,459.83533 L 537.68592,465.54009 L 537.9194,468.86787 L 538.61987,469.58096 L 537.9194,478.3758 L 534.88411,483.60516 L 536.5185,485.74444 L 535.81804,488.35912 L 535.11759,495.96547 L 533.71668,499.29324 L 533.84174,503.05325 L 538.62788,501.47276 L 546.88281,501.1366 L 557.44911,504.83432 L 564.05305,506.01086 L 567.85031,504.49816 L 571.15228,505.67471 L 574.45425,506.68317 L 575.27974,504.49816 L 571.97778,503.32162 L 569.3362,503.82585 L 566.52953,502.14507 C 566.52953,502.14507 566.69462,500.80045 567.35502,500.63237 C 568.01541,500.46429 570.49189,499.6239 570.49189,499.6239 L 572.30797,501.1366 L 574.12406,500.12814 L 577.42603,500.80045 L 578.91191,503.32162 L 579.24211,505.67471 L 583.86487,506.01086 L 585.68095,507.85972 L 584.85546,509.5405 L 583.53467,510.38089 L 585.18565,512.06167 L 593.77077,515.75938 L 597.40294,514.41476 L 598.39353,511.89359 L 601.03511,511.22128 L 602.85119,509.70858 L 604.17198,510.71704 L 604.99747,513.74245 L 602.68609,514.58284 L 603.34648,515.25515 L 606.81355,513.91053 L 609.12493,510.38089 L 609.95042,509.87666 L 607.80414,509.5405 L 608.62964,507.85972 L 608.46454,506.34702 L 610.61082,505.84279 L 611.76651,504.49816 L 612.4269,505.33855 C 612.4269,505.33855 612.2618,508.53203 613.08729,508.53203 C 613.91279,508.53203 617.37985,509.20434 617.37985,509.20434 L 621.50732,511.22128 L 622.49791,512.73398 L 625.46968,512.73398 L 626.62537,513.74245 L 628.93675,510.54897 L 628.93675,509.03627 L 627.61596,509.03627 L 624.14889,506.17894 L 618.20535,505.33855 L 614.90338,502.98546 L 616.05907,500.12814 L 618.37045,500.46429 L 618.53554,499.79198 L 616.71946,498.78351 L 616.71946,498.27928 L 620.02143,498.27928 L 621.83751,495.0858 L 620.51673,493.06886 L 620.18653,490.21154 L 618.70064,490.37962 L 616.71946,492.56463 L 616.05907,495.25388 L 612.9222,494.58156 L 611.93161,492.73271 L 613.74769,490.71577 L 615.81141,488.86693 L 616.71945,488.11058 z " id="LA" style="fill:#de8787" />
+ <ns0:path d="M 817.62464,258.28441 L 818.55858,256.38283 L 820.84673,258.09426 L 819.7727,260.66139 L 818.09161,259.04505 L 817.62464,258.28441 z " id="path6656" style="fill:#0000ff;fill-opacity:1;fill-rule:evenodd;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" />
+ <ns0:g id="g8180" style="fill:#cccccc">
+ <ns0:path d="M 738.7284,305.32516 L 740.70958,309.02287 L 742.03037,310.36749 L 745.00215,311.2079 L 747.64373,310.53557 L 750.12022,308.18248 C 750.12022,308.18248 751.9363,309.69518 752.59669,309.52711 C 753.25709,309.35903 757.05436,308.51864 757.05436,308.51864 L 758.87045,303.64438 L 761.51202,304.65285 L 764.814,302.13167 L 766.29989,302.46782 L 768.44617,300.45089 L 768.61127,297.59356 L 767.78577,296.24894 L 772.90384,284.9877 L 775.05012,278.09649 L 775.38031,273.55838 L 777.1964,273.3903 L 778.84739,276.24763 L 780.16818,277.08802 L 782.80976,277.08802 L 783.96545,271.37336 L 784.29564,268.17988 L 787.76272,267.84373 L 788.25802,265.49063 L 791.39489,262.96946 L 792.05529,261.28868 L 793.70628,258.43134 L 794.20157,256.24633 L 794.36667,250.69975 L 798.98943,252.5486 L 804.7679,255.7421 L 805.59338,250.44764 L 809.88595,252.5486 L 809.88595,255.57402 L 815.49931,256.91864 L 817.48049,258.26326 L 818.47108,256.24633 L 820.78247,257.92711 L 819.29657,261.28868 L 818.96637,264.146 L 817.15029,266.83525 L 817.15029,269.02027 L 817.81068,270.86913 L 822.98233,272.27864 L 824.90863,273.89525 L 830.19178,274.23141 L 832.83336,276.5845 L 836.13533,277.25681 L 837.45611,278.60143 L 836.96082,283.30762 L 837.95141,284.31608 L 838.11651,286.66917 L 839.43729,288.85419 L 839.2722,290.70305 L 835.97023,289.5265 L 835.97023,290.53497 L 837.95141,292.21575 L 837.95141,293.39229 L 839.43729,294.56884 L 840.75808,296.24962 L 840.92318,298.60271 L 838.6118,300.11541 L 838.942,300.61964 L 841.58358,300.11541 L 844.88554,299.4431 L 846.04123,299.27502 L 850.20356,306.58097 L 845.21707,308.35056 L 833.49506,311.37597 L 813.92151,315.35219 L 792.88078,319.27565 L 775.38031,321.96489 L 759.22415,323.98183 L 751.9363,325.32646 L 747.32856,324.68385 L 745.16725,324.65414 L 742.69078,326.67109 L 734.60093,326.83916 L 722.3505,328.8153 L 712.13922,329.78475 L 714.95419,328.35186 L 720.73264,324.82222 L 724.69501,322.6372 L 724.69501,320.45219 L 726.51109,318.60333 L 731.13386,313.05675 L 735.42643,309.35903 L 738.7284,305.32516 z " id="VA" style="fill:#d35f5f" />
+ <ns0:path d="M 845.69487,293.77543 L 844.35758,290.76684 L 844.75381,282.95122 L 847.26331,278.51396 L 847.13123,274.21116 L 853.07478,271.9253 L 852.41438,274.21116 L 849.24449,278.3795 L 848.92256,286.54808 L 848.17135,289.94326 L 846.33876,293.85948 L 845.69487,293.77543 z " id="path3106" style="fill:#d35f5f" ns1:nodetypes="cccccccccccc" />
+ </ns0:g>
+ <ns0:path d="M 467.38967,586.18345 L 466.81183,578.788 L 464.00514,571.30851 L 463.42729,563.99709 L 464.99573,555.42509 L 468.38027,548.28176 L 471.92989,542.65112 L 475.14933,538.95339 L 475.80972,539.20552 L 470.9393,546.09673 L 466.48163,552.90391 L 464.41788,559.79513 L 464.08769,565.17365 L 464.99573,571.56063 L 467.63732,579.04012 L 468.13261,584.41863 L 468.29771,585.93134 L 467.38967,586.18345 z M 465.65436,588.7052 L 466.64495,587.1925 L 464.82887,584.33517 L 463.83828,577.94821 L 462.0222,570.72086 L 461.1967,568.19969 L 462.0222,563.49351 L 463.17788,559.45964 L 464.49867,554.75346 L 465.98456,549.03881 L 463.67318,547.02188 L 464.66377,545.00494 L 468.79123,544.66878 L 472.7536,538.95414 L 476.22066,538.28182 L 482.16421,534.58411 L 483.98029,533.07141 L 490.41913,529.54177 L 496.19758,527.0206 L 501.64583,523.65904 L 504.4525,521.47403 L 510.23095,515.92746 L 511.55174,515.08707 L 513.69802,513.57437 L 516.33959,511.55743 L 517.33018,509.5405 L 527.40119,504.83432 L 534.17024,502.98546" id="TX_Gulf" style="fill:none;fill-opacity:0.26666697;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 900.52373,145.31564 L 900.85393,143.29871 L 902.00961,139.60099" id="NH_Atlantic" style="fill:#0000ff;fill-opacity:0;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 919.55232,177.09192 L 921.77043,176.37882 L 922.23741,174.59609 L 923.28809,174.71493 L 924.33877,177.09192 L 923.0546,177.56732 L 919.08535,177.68617 L 919.55232,177.09192 z M 909.97943,177.92387 L 912.31427,175.19033 L 913.94868,175.19033 L 915.81656,176.73537 L 913.36497,177.80501 L 911.14686,178.87466 L 909.97943,177.92387 z M 903.66061,177.08236 L 906.63237,175.56967 L 906.13708,173.21658 L 906.96257,171.70388 L 909.93434,170.19118 L 910.75983,173.38466 L 910.26454,175.23351 L 907.78806,176.74621 L 907.78806,177.75468 L 909.76924,176.24198 L 913.73161,171.5358 L 917.69397,169.51886 L 921.98653,168.00616 L 921.65633,165.48499 L 920.66574,162.45959 L 918.68456,159.93842 L 916.86848,159.09803 L 914.7222,159.26611 L 914.2269,159.77034 L 915.21749,161.11497 L 916.70338,160.27458 L 918.84966,161.95536 L 919.67515,164.81268 L 917.85907,166.66154 L 915.54769,167.67001 L 911.91552,167.16577 L 907.95316,160.94689 L 905.64178,158.25764 L 903.8257,158.25764 L 902.67001,159.09803 L 900.68883,156.40879 L 901.01902,154.89608 L 903.4955,149.51759 L 900.35862,144.81139" id="MA_Atlantic" style="fill:#0000ff;fill-opacity:0;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 771.67854,458.60093 L 771.08653,452.05785 L 773.39791,441.63702 L 774.88379,437.26699 L 774.3885,434.57775 L 778.51596,427.3504 L 777.85557,425.66962" id="GA_Atlantic" style="fill:#6666e6;fill-opacity:0;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 777.85557,425.66962 L 780.00185,424.32499 L 785.1199,418.61034 L 784.12931,415.24879 L 787.10108,415.08071 L 790.73325,411.55107 L 792.38423,410.71068 L 794.69561,407.18104 L 797.50228,404.32372 L 799.64856,400.62601 L 802.12504,399.95369 L 803.28073,397.09637 L 804.93171,396.25598 L 805.42701,389.70094 L 808.06859,383.31398 L 813.51684,377.43125" id="SC_Atlantic" style="fill:#0000ff;fill-opacity:0;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 813.18663,377.59933 L 819.46038,375.41432 L 824.24824,374.91008 L 824.74353,372.38892 L 826.72471,365.6658 L 830.19178,360.79154 L 836.79572,355.24497 L 842.07887,352.7238 L 844.88554,352.05149 L 846.04123,352.55572 L 847.36202,352.55572 L 850.49889,347.51338 L 852.48007,343.81567 L 851.15929,344.3199 L 848.84791,346.67299 L 848.18751,344.99221 L 843.89495,344.99221 L 845.87614,338.43717 L 845.05064,337.09255 L 843.06946,337.09255 L 843.06946,336.08408 L 842.73926,334.73946 L 844.39025,336.08408 L 845.87614,336.25216 L 848.35261,336.58832 L 852.14988,334.90754 L 853.47066,331.88214 L 854.13106,329.69712 L 856.77263,328.3525 L 857.10283,323.98247 L 856.27734,323.31016 L 858.75382,323.14208 L 858.09342,320.78899 L 855.61694,318.26782 L 851.98478,311.54471 L 850.1687,306.50237 M 854.21672,340.95692 L 856.85831,338.3517 L 860.07773,335.66244 L 861.64617,334.99013 L 861.81127,332.88915 L 861.15088,326.50217 L 859.66499,324.06503 L 859.00459,322.13213 L 859.74753,321.88001 L 862.55422,327.59468 L 862.96697,332.21684 L 862.80187,335.74649 L 859.33479,337.34323 L 856.44555,339.86441 L 855.28987,341.125 L 854.21672,340.95692 z " id="NC_Atlantic" style="fill:#0000ff;fill-opacity:0;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 850.1687,306.50237 L 846.04123,299.27502 L 844.88554,299.4431 L 841.58358,300.11541 L 838.942,300.61964 L 838.6118,300.11541 L 840.92318,298.60271 L 840.75808,296.24962 L 839.43729,294.56884 L 837.95141,293.39229 L 837.95141,292.21575 L 835.97023,290.53497 L 835.97023,289.5265 L 839.2722,290.70305 L 839.43729,288.85419 L 838.11651,286.66917 L 837.95141,284.31608 L 836.96082,283.30762 L 837.45611,278.60143 L 836.13533,277.25681 L 832.83336,276.5845 L 830.19178,274.23141 L 824.90863,273.89525 L 822.59725,272.21447" id="VA_Atlantic" style="fill:#0000ff;fill-opacity:0;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 893.09433,183.30123 L 896.06607,182.29279 L 898.54255,180.27585 L 899.69824,178.42699 L 901.01902,178.59507 L 903.99082,176.91428" id="RI_Atlantic" style="fill:#0000ff;fill-opacity:0;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 865.2752,198.17615 L 870.47581,194.73055 L 874.10797,191.36899 L 876.08916,189.18398 L 876.91465,189.85629 L 879.72132,188.34359 L 885.00447,187.16705 L 893.58963,183.30123" id="CT_Atlantic" style="fill:#0000ff;fill-opacity:0;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 840.75808,236.41389 L 841.91377,238.76697 L 845.21574,241.79237 L 850.1687,244.14546 L 854.29616,244.81777 L 854.46126,246.33047 L 853.63576,247.33894 L 853.96596,250.19627 L 854.79145,250.19627 L 856.93773,247.6751 L 857.76322,242.63276 L 860.5699,238.43081 L 863.70677,231.70769 L 864.86246,225.99305 L 864.20207,224.8165 L 864.03697,215.06798 L 862.38598,211.53834 L 861.23029,212.37873 L 858.42362,212.71489 L 857.92832,212.21066 L 859.08401,211.20219 L 861.23029,209.18525 L 861.06519,207.84063" id="NJ_Atlantic" style="fill:#0000ff;fill-opacity:0;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 861.06519,207.84063 L 863.04638,208.51294 L 867.17384,207.3364 L 873.11738,205.31946 L 875.75896,204.31099 L 883.02329,198.76442 L 886.98565,195.73902 L 890.45272,192.0413 L 886.16016,190.36053 L 884.83937,191.87323 L 881.8676,194.73055 L 873.77778,198.76442 L 871.4664,198.59634 L 869.81541,197.92403 L 868.65972,198.59634 L 866.34835,201.28559 L 864.86246,202.63021 L 863.54167,202.96637 L 863.21147,201.62175 L 865.19266,199.77289 L 865.52285,197.75595" id="NY_Atlantic" style="fill:#0000ff;fill-opacity:0;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 854.95655,260.95325 L 852.64517,253.38975 L 851.65458,253.89398 L 848.02242,251.37281 L 846.20633,246.49855 L 844.22515,242.80084 L 841.91377,241.79237 L 839.76749,238.09466 L 840.59298,235.90964" id="DE_Atlantic" style="fill:#cccccc;fill-opacity:0.26666697;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 29.464207,149.85375 L 27.813223,154.89608 L 27.648124,162.62767 L 22.364973,174.89736 L 19.228102,177.5866 L 18.897905,178.76315 L 17.081822,179.60354 L 15.595936,183.97356 L 14.770444,187.33512 L 17.577118,191.70515 L 19.228102,196.07518 L 20.383791,199.77289 L 20.053595,206.49601 L 18.237511,209.68949 L 17.577118,215.74029 L 16.586527,219.60608 L 18.40261,223.63995 L 21.209284,228.34614 L 23.520662,233.38847 L 24.84145,237.59042 L 24.511253,240.95198 L 24.181056,241.45621 L 24.181056,243.64123 L 29.959503,250.19627 L 29.464207,252.71743 L 28.803813,255.07053 L 28.14342,257.08746 L 28.308518,265.65943 L 30.454798,269.52523 L 32.43598,272.21447 L 35.242654,272.71871 L 36.233244,275.57603 L 35.077555,279.27375 L 32.931275,280.95453 L 31.775586,280.95453 L 30.950093,284.9884 L 31.445389,288.0138 L 34.747358,292.5519 L 36.398343,298.09847 L 37.884229,302.97273 L 39.205017,306.16621 L 42.672085,312.21702 L 44.157971,314.90627 L 44.653266,317.93167 L 46.304251,318.94014 L 46.304251,321.4613 L 45.478759,323.47824 L 43.662676,330.87367 L 43.16738,332.8906 L 45.643857,335.74793 L 49.936417,336.25216 L 54.559175,338.10102 L 58.521538,340.28603 L 61.49331,340.28603 L 64.465083,343.47951 L 67.106658,348.52185 L 68.262347,350.87494 L 72.224711,353.05995 L 77.177665,353.90034 L 78.663551,356.08536 L 79.323945,359.44692 L 77.838059,360.11923 L 78.168256,361.12769 L 81.470225,361.96808 L 84.276899,362.13616 L 87.248671,367.01042 L 91.211035,371.38045 L 92.036527,373.73354 L 94.678102,378.10356 L 95.008299,381.46512 L 95.008299,391.21364 L 95.503595,393.0625 M 50.266945,346.75563 L 51.587737,348.35237 L 51.422639,349.697 L 48.120658,349.61296 L 47.542811,348.35237 L 46.882415,346.83966 L 50.266945,346.75563 z M 52.248133,346.75563 L 53.486376,346.08332 L 57.118555,348.26833 L 60.255437,349.52892 L 59.347393,350.20124 L 54.724619,349.94912 L 53.073629,348.26833 L 52.248133,346.75563 z M 73.380812,367.34524 L 75.196895,369.78238 L 76.022398,370.79086 L 77.590839,371.37912 L 78.168678,369.86642 L 77.178087,368.01756 L 74.453957,365.91658 L 73.380812,366.08465 L 73.380812,367.34524 z M 71.894915,376.33744 L 73.711009,379.61497 L 74.949253,381.63192 L 73.463356,381.88403 L 72.142568,380.62344 C 72.142568,380.62344 71.39962,379.11074 71.39962,378.69054 C 71.39962,378.27035 71.39962,376.42148 71.39962,376.42148 L 71.894915,376.33744 z " id="CA_Pacific" style="fill:none;fill-opacity:0.26666697;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 95.99889,2.9536428 L 94.843201,3.7940324 L 94.513004,4.634422 L 96.989481,9.6767597 L 98.14517,12.366006 L 96.329087,16.063721 L 96.329087,18.416812 L 96.989481,19.929513 L 96.163989,21.77837 L 96.659284,25.139928 L 97.649875,26.484552 L 97.484776,27.829175 L 95.99889,27.997253 L 95.338496,25.980318 L 94.182807,23.459149 L 92.366724,21.946448 L 92.696921,19.761435 L 95.008299,19.257201 L 94.678102,17.408344 L 94.347905,16.231799 L 92.201625,17.576422 L 90.880838,18.752967 L 90.880838,21.274136 L 88.569459,21.442214 L 85.102391,20.433747 L 82.130619,18.921045 L 78.993748,18.248734 L 74.370991,16.063721 L 71.069021,14.046786 L 68.262347,11.357539 L 65.78587,8.3321363 L 63.63959,7.8279025 L 61.328212,17.576422 L 63.144295,20.93798 L 63.144295,29.173799 L 62.483901,32.199201 L 63.969787,39.59463 L 66.776461,42.451954 L 62.318803,43.124266 L 62.153704,46.990058 L 64.79528,48.166604 L 63.144295,52.368552 L 60.337621,52.704708 L 60.007424,55.73011 L 62.318803,58.755513 L 64.134886,57.747045 L 66.446264,59.427825 M 86.341089,9.169955 L 88.404826,9.001877 L 88.900121,10.430545 L 90.468562,8.7497548 L 92.862495,8.7497548 L 93.687987,10.3465 L 92.119546,12.111324 L 92.779951,12.951724 L 92.037002,15.052704 L 90.63366,15.472893 C 90.63366,15.472893 89.725613,15.556938 89.725613,15.220782 C 89.725613,14.884626 91.21151,12.531524 91.21151,12.531524 L 89.477971,11.943246 L 89.147774,13.455958 L 88.404826,14.12827 L 86.836385,11.775168 L 86.341089,9.169955 z " id="WA_Pacific" style="fill:none;fill-opacity:0.26666697;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 66.446264,59.427825 L 60.172522,61.44476 L 57.861144,68.167876 L 54.559175,78.588708 L 51.257205,85.311824 L 46.139153,99.934604 L 39.535214,114.05315 L 31.28029,127.16323 L 29.299109,130.18863 L 28.473616,139.09676 L 27.152829,145.31564 L 29.464207,149.85375" id="OR_Pacific" style="fill:none;fill-opacity:0.26666697;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 639.33795,481.63956 L 642.14462,481.63956 L 642.80502,481.80764 L 644.12581,478.95032 L 645.61169,474.41221 L 647.92307,475.08453 L 651.05994,481.30341 L 651.05994,482.31188 L 648.25327,484.32881 L 651.05994,484.66497 L 658.02586,481.83647" id="AL_Gulf" style="fill:none;fill-opacity:0.26666697;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 616.38926,488.36268 L 617.71005,487.52229 L 620.35163,483.15227 L 622.16771,483.99266 L 629.10185,481.97572 L 631.24813,482.31188 L 632.73401,483.15227 L 638.01716,483.15227 L 639.33795,481.63956" id="MS_Gulf" style="fill:none;fill-opacity:0.26666697;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:path d="M 533.67494,503.06949 L 538.62788,501.47276 L 546.88281,501.1366 L 557.44911,504.83432 L 564.05305,506.01086 L 567.85031,504.49816 L 571.15228,505.67471 L 574.45425,506.68317 L 575.27974,504.49816 L 571.97778,503.32162 L 569.3362,503.82585 L 566.52953,502.14507 C 566.52953,502.14507 566.69462,500.80045 567.35502,500.63237 C 568.01541,500.46429 570.49189,499.6239 570.49189,499.6239 L 572.30797,501.1366 L 574.12406,500.12814 L 577.42603,500.80045 L 578.91191,503.32162 L 579.24211,505.67471 L 583.86487,506.01086 L 585.68095,507.85972 L 584.85546,509.5405 L 583.53467,510.38089 L 585.18565,512.06167 L 593.77077,515.75938 L 597.40294,514.41476 L 598.39353,511.89359 L 601.03511,511.22128 L 602.85119,509.70858 L 604.17198,510.71704 L 604.99747,513.74245 L 602.68609,514.58284 L 603.34648,515.25515 L 606.81355,513.91053 L 609.12493,510.38089 L 609.95042,509.87666 L 607.80414,509.5405 L 608.62964,507.85972 L 608.46454,506.34702 L 610.61082,505.84279 L 611.76651,504.49816 L 612.4269,505.33855 C 612.4269,505.33855 612.2618,508.53203 613.08729,508.53203 C 613.91279,508.53203 617.37985,509.20434 617.37985,509.20434 L 621.50732,511.22128 L 622.49791,512.73398 L 625.46968,512.73398 L 626.62537,513.74245 L 628.93675,510.54897 L 628.93675,509.03627 L 627.61596,509.03627 L 624.14889,506.17894 L 618.20535,505.33855 L 614.90338,502.98546 L 616.05907,500.12814 L 618.37045,500.46429 L 618.53554,499.79198 L 616.71946,498.78351 L 616.71946,498.27928 L 620.02143,498.27928 L 621.83751,495.0858 L 620.51673,493.06886 L 620.18653,490.21154 L 618.70064,490.37962 L 616.71946,492.56463 L 616.05907,495.25388 L 612.9222,494.58156 L 611.93161,492.73271 L 613.74769,490.71577 L 616.38926,488.36268 L 617.2973,487.77441" id="LA_Gulf" style="fill:none;fill-opacity:0.26666697;stroke:#80b0f0;stroke-width:1.06612186pt" />
+ <ns0:g id="Great_Lakes_borders" style="fill:none;stroke:#80b0f0" transform="matrix(1.0566302,0,0,1.0756987,-45.325399,-166.80506)">
+ <ns0:path d="M 652.1875,357.8125 L 649.84375,359.21875 L 647.8125,361.09375 L 646.71875,361.40625 L 645.3125,360.46875 L 642.18749,359.53125" id="IN_Great_Lakes" style="fill:none;stroke:#80b0f0;stroke-width:1pt" />
+ <ns0:path d="M 712.53906,338.43751 L 712.8125,334.6875 L 714.29687,331.75782 L 715.50782,330.39062 M 717.85156,323.16407 L 714.6875,315 L 712.5,306.25 L 710.15625,303.125 L 707.65625,301.40625 L 706.09375,302.5 L 702.34375,304.21875 L 700.46875,309.0625 L 697.8125,312.65625 L 696.71875,313.28125 L 695.3125,312.65625 C 695.3125,312.65625 692.8125,311.25 692.96875,310.625 C 693.125,310 693.4375,305.78125 693.4375,305.78125 L 696.71875,304.53125 L 697.5,301.25 L 698.125,298.75 L 700.46875,297.1875 L 700.15625,287.5 L 698.59375,285.3125 L 697.34375,284.53125 L 696.5625,282.5 L 697.34375,281.71875 L 698.90625,282.03125 L 699.0625,280.46875 L 696.71875,278.28125 L 695.46875,275.78125 L 692.96875,275.78125 L 688.59375,274.375 L 683.28125,271.09375 L 680.625,271.09375 L 680,271.71875 L 679.0625,271.25 L 676.09375,269.0625 L 673.28125,270.78125 L 670.46875,272.96875 L 670.78125,276.40625 L 671.71875,276.71875 L 673.75,277.1875 L 674.21875,277.96875 L 671.71875,278.75 L 669.21875,279.0625 L 667.8125,280.78125 L 667.5,282.8125 L 667.8125,284.375 L 668.125,289.6875 L 664.6875,291.71875 L 664.0625,291.5625 L 664.0625,287.5 L 665.3125,285.15625 L 665.9375,282.8125 L 665.15625,282.03125 L 663.28125,282.8125 L 662.34375,286.875 L 659.6875,287.96875 L 657.96875,289.84375 L 657.8125,290.78125 L 658.4375,291.5625 L 657.8125,294.0625 L 655.625,294.53125 L 655.625,295.625 L 656.40625,297.96875 L 655.3125,303.90625 L 653.75,307.8125 L 654.375,312.34375 L 654.84375,313.4375 L 654.0625,315.78125 L 653.75,316.5625 L 653.4375,319.21875 L 656.875,325 L 659.6875,331.25 L 661.09375,335.9375 L 660.3125,340.46875 L 659.375,346.25 L 657.03125,351.25 L 656.71875,353.90625 L 654.84375,356.25 L 652.1875,357.8125 M 605.4621,230.97629 L 607.22987,228.98755 L 609.3291,228.21415 L 614.52193,224.45763 L 616.73164,223.9052 L 617.17359,224.34715 L 612.20173,229.31901 L 608.99764,231.19726 L 607.0089,232.08115 L 605.4621,230.97629 z M 634.68749,287.50003 L 638.28125,279.6875 L 639.21875,275.78125 L 641.09375,271.5625 L 641.875,271.40625 L 642.96875,272.96875 L 643.59375,272.96875 L 647.96875,270.625 L 649.375,272.1875 L 649.84375,272.34375 L 651.09375,271.25 L 652.1875,268.28125 L 654.53125,267.5 L 661.25,266.875 L 663.125,264.375 L 668.125,264.21875 L 673.75,265.46875 L 675.46875,265.46875 L 678.59375,264.0625 L 680.78125,264.21875 L 682.8125,263.59375 L 686.40625,264.0625 L 687.1875,264.375 L 688.4375,264.0625 L 687.1875,263.125 L 685.9375,262.5 L 682.8125,259.53125 L 682.8125,252.8125 L 681.40625,252.34375 L 680.3125,253.4375 L 674.375,255 L 672.5,255.46875 L 669.6875,254.6875 L 669.21875,254.375 L 669.21875,248.90625 L 667.8125,248.75 L 665.3125,250 L 660.9375,251.875 L 654.53125,252.1875 L 651.25,253.28125 L 647.34375,256.71875 L 645.78125,257.65625 L 644.6875,257.65625 L 643.4375,258.4375 L 641.875,257.96875 L 640.3125,256.71875 L 638.90625,257.65625 L 635.15625,257.8125 L 632.5,255.15625 L 631.09375,252.1875 L 629.6875,251.09375 L 626.5625,250.15625 L 624.375,250.15625 L 623.125,248.90625 L 619.6875,251.71875 L 618.75,252.8125 L 617.96875,252.34375 L 618.28125,249.84375 L 620.625,246.71875 L 621.09375,244.375 L 623.28125,243.59375 L 624.6875,240.625 L 628.28125,239.6875 L 628.59375,238.75 L 627.5,237.65625 L 622.96875,238.125 L 618.75,240.46875 L 616.5625,242.65625 L 615.3125,244.375 L 613.59375,245.15625 L 611.71875,247.96875 L 611.5625,249.21875 L 607.34375,251.25 L 605,253.125 L 599.21875,254.0625 L 598.59375,254.6875 L 598.59375,255.625 L 595.15625,257.8125 L 592.5,258.59375 L 590.9375,259.53125 M 688.75238,262.0292 L 689.37738,264.45108 L 692.50239,264.60733 L 693.7524,263.43545 C 693.7524,263.43545 693.67427,262.0292 693.36177,261.87295 C 693.04927,261.7167 691.79927,260.07607 691.79927,260.07607 L 689.68989,260.31044 L 688.12738,260.46669 L 687.81488,261.56045 L 688.75238,262.0292 z M 707.34375,352.8125 L 706.09375,351.5625 L 706.25,350.15625 L 708.28125,346.5625 L 710.42969,344.60937" id="MI_Great_Lakes" style="fill:none;stroke:#80b0f0;stroke-width:1pt" />
+ <ns0:path d="M 762.03126,331.40624 L 756.5625,336.875 L 755.3125,337.34375 L 751.25001,340.46875" id="PA_Great_Lakes" style="fill:none;stroke:#80b0f0;stroke-width:1pt" />
+ <ns0:path d="M 773.4375,318.28125 L 773.59375,319.21875 L 772.5,320.15625 L 770.46875,322.8125 L 770,324.375 L 768.125,326.09375 L 766.40625,327.1875 L 765.46875,328.75 L 764.21875,329.84375 L 761.56251,331.71874 M 823.75,260.46875 L 821.25,262.34375 L 819.21875,264.6875 L 816.5625,268.28125 L 813.75,272.65625 L 812.34375,275.46875 L 811.71875,276.25 L 806.09375,281.5625 L 806.25,284.0625 L 807.03125,285.15625 L 808.75,285.9375 L 810.46875,285.9375 L 810.46875,287.34375 L 809.375,289.375 L 809.6875,290.78125 L 811.09375,292.8125 L 810.9375,295 L 809.0625,296.09375 L 807.03125,296.09375 L 805.46875,297.96875 L 803.75,301.09375 L 801.71875,302.8125 L 796.71875,303.28125 L 794.21875,304.375 L 792.1875,305.625 L 790.625,305.46875 L 788.75,304.21875 L 782.65625,304.375 L 779.53125,304.84375 L 775.625,306.09375 L 771.40625,307.5 L 768.59375,309.21875" id="NY_Great_Lakes" style="fill:none;stroke:#80b0f0;stroke-width:1pt" />
+ <ns0:path d="M 751.40626,340.46875 L 744.375,344.0625 L 740.625,346.25 L 737.34375,349.84375 L 733.4375,353.59375 L 730.3125,354.375 L 727.5,354.84375 L 722.1875,357.34375 L 720.15625,357.5 L 716.875,354.53125 L 711.875,355.15625 L 709.375,353.75 L 706.71874,352.34374" id="OH_Great_Lakes" style="fill:none;stroke:#80b0f0;stroke-width:1pt" />
+ <ns0:path d="M 642.5,359.6875 L 641.25,358.90625 L 640.46875,356.40625 L 639.21875,352.8125 L 637.65625,351.09375 L 636.25,348.59375 L 636.09375,343.12504" id="IL_Great_Lakes" style="fill:none;stroke:#80b0f0;stroke-width:1pt" />
+ <ns0:path d="M 590.9375,259.53125 L 590.3125,260.78125 L 589.21875,260.625 L 588.59375,259.53125 L 585.9375,258.75 L 584.84375,258.90625 L 583.125,259.84375 L 582.1875,259.21875 L 582.8125,257.34375 L 584.6875,254.375 L 585.78125,253.28125 L 583.90625,251.875 L 581.875,252.65625 L 579.0625,254.53125 L 571.875,257.65625 L 569.0625,258.28125 L 566.25,257.8125 L 565.46875,256.875 M 636.25,343.43744 L 636.09375,339.375 L 634.53125,335 L 633.90625,329.0625 L 632.8125,326.71875 L 633.75,323.75 L 634.53125,320.9375 L 635.9375,318.4375 L 635.3125,315.15625 L 634.6875,311.71875 L 635.15625,310 L 637.03125,307.65625 L 637.1875,305 L 636.40625,303.75 L 637.03125,301.25 L 637.5,298.125 L 640.15625,292.65625 L 642.96875,286.09375 L 643.125,283.90625 L 642.8125,282.96875 L 642.03125,283.4375 L 637.96875,289.53125 L 635.3125,293.4375 L 633.4375,295.15625 L 632.65625,297.34375 L 631.25,298.125 L 630.15625,300 L 628.75,299.6875 L 628.59375,297.96875 L 629.84375,295.625 L 631.875,291.09375 L 633.59375,289.53125 L 634.68749,287.03127" id="WI_Great_Lakes" style="fill:none;stroke:#80b0f0;stroke-width:1pt" />
+ <ns0:path d="M 565.9375,257.34374 L 565.3125,256.5625 L 568.59375,253.59375 L 569.84375,253.4375 L 574.21875,248.59375 L 575.9375,247.8125 L 578.125,244.0625 L 580.46875,240.625 L 583.4375,238.125 L 587.5,236.40625 L 595,232.8125 L 597.8125,232.03125 C 597.8125,232.03125 600.78125,230.3125 601.09375,229.6875 C 601.40625,229.0625 601.71875,228.28125 601.71875,228.28125" id="MN_Great_Lakes" style="fill:none;stroke:#80b0f0;stroke-width:1pt" />
+ </ns0:g>
+ <ns0:path d="M 152.15345,458.16063 L 151.84095,540.66102 L 153.40345,541.59852 L 156.37222,541.75477 L 157.77847,540.66102 L 160.27848,540.66102 L 160.43474,543.47353 L 167.15352,550.03606 L 167.62227,552.53607 L 170.90353,550.66106 L 171.52854,550.50481 L 171.84104,547.53605 L 173.24729,545.97354 L 174.34105,545.81729 L 176.21606,544.41103 L 179.18482,546.44229 L 179.80983,549.25481 L 181.68483,550.34856 L 182.77859,552.69232 L 186.52861,554.41108 L 189.80987,560.19236 L 192.46613,563.94237 L 194.65364,566.59864 L 196.0599,570.1924 L 200.90367,571.91116 L 205.9037,573.94242 L 206.8412,578.16119 L 207.30995,581.12995 L 206.37245,584.41122 L 204.65369,586.59873 L 203.09118,585.81748 L 201.68493,582.84871 L 199.02866,581.44246 L 197.30991,580.3487 L 196.52865,581.12995 L 197.93491,583.78622 L 198.09116,587.37998 L 196.9974,587.84873 L 195.1224,585.97373 L 193.09114,584.72372 L 193.55989,586.28623 L 194.80989,588.00499 L 194.02864,588.78624 C 194.02864,588.78624 193.24739,588.47374 192.77864,587.84873 C 192.30988,587.22373 190.74738,584.56747 190.74738,584.56747 L 189.80987,582.37996 C 189.80987,582.37996 189.49737,583.62997 188.87237,583.31746 C 188.24736,583.00496 187.62236,581.91121 187.62236,581.91121 L 189.34112,580.0362 L 187.93486,578.62994 L 187.93486,573.78617 L 187.15361,573.78617 L 186.37236,577.06743 L 185.2786,577.53619 L 184.3411,573.94242 L 183.71609,570.34865 L 182.93484,569.8799 L 183.24734,575.34868 L 183.24734,576.44243 L 181.84108,575.19243 L 178.40357,569.41115 L 176.37231,568.9424 L 175.74731,565.34863 L 174.1848,562.53612 L 172.62229,561.44236 L 172.62229,559.25485 L 174.65355,558.00485 L 174.1848,557.69235 L 171.68479,558.31735 L 168.40352,555.97359 L 165.90351,553.16107 L 161.21599,550.66106 L 157.30972,548.16105 L 158.55973,545.03604 L 158.55973,543.47353 L 156.84097,545.03604 L 154.02846,546.12979 L 150.43469,545.03604 L 144.96591,542.69228 L 139.65339,542.69228 L 139.02839,543.16103 L 132.77836,539.41101 L 130.7471,539.09851 L 128.09084,533.47348 L 124.65332,533.78598 L 121.2158,535.19224 L 121.68456,539.56726 L 122.77831,536.75475 L 123.71582,537.06725 L 122.30956,541.28602 L 125.43457,538.62976 L 126.05958,540.19226 L 122.30956,544.41103 L 121.05955,544.09853 L 120.5908,542.22352 L 119.3408,541.44227 L 118.09079,542.53603 L 115.43453,540.81727 L 112.46576,542.84853 L 110.74701,544.87979 L 107.46574,546.91105 L 102.93447,546.75479 L 102.46572,544.72354 L 106.05948,544.09853 L 106.05948,542.84853 L 103.87197,542.22352 L 104.80948,539.87976 L 106.99699,536.12975 L 106.99699,534.41099 L 107.15324,533.62973 L 111.37201,531.44222 L 112.30951,532.69223 L 114.96578,532.69223 L 113.71577,530.19222 L 110.122,529.87972 L 105.27823,532.53598 L 102.93447,535.81724 L 101.21571,538.31726 L 100.12196,540.50477 L 96.059441,541.91102 L 93.090671,544.41103 L 92.778171,545.97354 L 94.965681,546.91105 L 95.746941,548.9423 L 93.090671,552.06732 L 86.840651,556.12984 L 79.340608,560.19236 L 77.309348,561.28611 L 72.153076,562.37987 L 66.996796,564.56738 L 68.715556,565.81738 L 67.309296,567.22364 L 66.840546,568.31739 L 64.184286,567.37989 L 61.059276,567.53614 L 60.278016,569.72365 L 59.340516,569.72365 L 59.653016,567.37989 L 56.215496,568.6299 L 53.402986,569.5674 L 50.121721,568.31739 L 47.309208,570.1924 L 44.184194,570.1924 L 42.152934,571.44241 L 40.590427,572.22366 L 38.559168,571.91116 L 36.059156,570.81741 L 33.871646,571.44241 L 32.934142,572.37991 L 31.371634,571.28616 L 31.371634,569.41115 L 34.340398,568.16114 L 40.434176,568.78615 L 44.652946,567.22364 L 46.684205,565.19238 L 49.496718,564.56738 L 51.215476,563.78612 L 53.871739,563.94237 L 55.434246,565.19238 L 56.371746,564.87988 L 58.559256,562.22362 L 61.528026,561.28611 L 64.809286,560.66111 L 66.059296,560.34861 L 66.684296,560.81736 L 67.465556,560.81736 L 68.715556,557.22359 L 72.621826,555.81734 L 74.496836,552.22357 L 76.684348,547.84855 L 78.246858,546.44229 L 78.559358,543.94228 L 76.996848,545.19229 L 73.715576,545.81729 L 73.090576,543.47353 L 71.840576,543.16103 L 70.903066,544.09853 L 70.746816,546.91105 L 69.340556,546.75479 L 67.934306,541.12977 L 66.684296,542.37977 L 65.590546,541.91102 L 65.278046,540.03601 L 61.371776,540.19226 L 59.340516,541.28602 L 56.840506,540.97352 L 58.246756,539.56726 L 58.715506,537.06725 L 58.090506,535.19224 L 59.496766,534.25474 L 60.746766,534.09849 L 60.121766,532.37973 L 60.121766,528.16096 L 59.184266,527.22345 L 58.403006,528.62971 L 52.465482,528.62971 L 51.059226,527.3797 L 50.434223,523.62969 L 48.402963,520.19217 L 48.402963,519.25467 L 50.434223,518.47341 L 50.590473,516.44215 L 51.684228,515.3484 L 50.902975,514.87965 L 49.652969,515.3484 L 48.559214,512.69214 L 49.496718,507.84836 L 53.871739,504.72335 L 56.371746,503.16084 L 58.246756,499.56708 L 60.903026,498.31707 L 63.403036,499.41083 L 63.715536,501.75459 L 66.059296,501.44208 L 69.184306,499.09832 L 70.746816,499.72333 L 71.684316,500.34833 L 73.246826,500.34833 L 75.434338,499.09832 L 76.215598,494.87955 C 76.215598,494.87955 76.528098,492.06704 77.153098,491.59829 C 77.778098,491.12954 78.090598,490.66079 78.090598,490.66079 L 76.996848,488.78578 L 74.496836,489.56703 L 71.371816,490.34828 L 69.496806,489.87953 L 66.059296,488.16077 L 61.215526,488.00452 L 57.778006,484.41076 L 58.246756,480.66074 L 58.871766,478.31698 L 56.840506,476.59822 L 54.965494,473.00445 L 55.434246,472.2232 L 61.996776,471.75445 L 64.028036,471.75445 L 64.965536,472.69195 L 65.590546,472.69195 L 65.434296,471.12944 L 69.184306,470.50444 L 71.684316,470.81694 L 73.090576,471.9107 L 71.684316,473.94196 L 71.215566,475.34821 L 73.871836,476.91072 L 78.715608,478.62948 L 80.434368,477.69198 L 78.246858,473.47321 L 77.309348,470.34819 L 78.246858,469.56694 L 74.965588,467.69193 L 74.496836,466.59817 L 74.965588,465.03567 L 74.184336,461.28565 L 71.371816,456.75438 L 69.028056,452.69186 L 71.840576,450.81685 L 74.965588,450.81685 L 76.684348,451.44185 L 80.746868,451.2856 L 84.340631,447.84809 L 85.434391,444.87932 L 89.028161,442.53556 L 90.590661,443.47307 L 93.246921,442.84806 L 96.840691,440.8168 L 97.934451,440.66055 L 98.871951,441.44181 L 103.24697,441.28556 L 105.90323,438.31679 L 106.99699,438.31679 L 110.4345,440.66055 L 112.30951,442.69181 L 111.84076,443.78557 L 112.46576,444.87932 L 114.02827,443.31682 L 117.77829,443.62932 L 118.09079,447.22308 L 119.9658,448.62934 L 126.84083,449.25434 L 132.93461,453.31686 L 134.34086,452.37936 L 139.34089,454.87937 L 141.37215,454.25437 L 143.24716,453.47311 L 147.93468,455.34812 L 152.15345,458.16063 z M 40.902929,486.12951 L 42.934188,491.28579 L 42.777937,492.22329 L 39.965424,491.91079 L 38.246666,488.00452 L 36.527908,486.59827 L 34.184147,486.59827 L 34.027897,484.09825 L 35.746655,481.75449 L 36.84041,484.09825 L 38.246666,485.50451 L 40.902929,486.12951 z M 38.402917,518.47341 L 41.996684,519.25467 L 45.59045,520.19217 L 46.371704,521.12968 L 44.809197,524.72344 L 41.840433,524.56719 L 38.559168,521.12968 L 38.402917,518.47341 z M 18.402824,504.8796 L 19.49658,507.37961 L 20.590335,508.94212 L 19.49658,509.72337 L 17.46532,506.75461 L 17.46532,504.8796 L 18.402824,504.8796 z M 5.1215129,575.50493 L 8.4027779,573.31742 L 11.684043,572.37991 L 14.184055,572.69241 L 14.652807,574.25492 L 16.527816,574.72367 L 18.402824,572.84867 L 18.090323,571.28616 L 20.746585,570.66116 L 23.559098,573.16117 L 22.465343,574.87992 L 18.246574,575.97368 L 15.590311,575.50493 L 11.996545,574.41117 L 7.7777749,575.81743 L 6.2152679,576.12993 L 5.1215129,575.50493 z M 52.465482,571.12991 L 54.027989,573.00492 L 56.059246,571.44241 L 54.652992,570.1924 L 52.465482,571.12991 z M 55.277995,574.09867 L 56.371746,571.91116 L 58.403006,572.22366 L 57.621756,574.09867 L 55.277995,574.09867 z M 78.090598,572.22366 L 79.496858,573.94242 L 80.434368,572.84867 L 79.653108,570.97366 L 78.090598,572.22366 z M 86.528141,560.19236 L 87.621901,565.81738 L 90.434411,566.59864 L 95.278181,563.78612 L 99.496951,561.28611 L 97.934451,558.94235 L 98.403201,556.59859 L 96.371941,557.8486 L 93.559431,557.06734 L 95.121931,555.97359 L 96.996941,556.75484 L 100.74696,555.03608 L 101.21571,553.62983 L 98.871951,552.84857 L 99.653201,550.97356 L 96.996941,552.84857 L 92.465671,556.28609 L 87.778151,559.0986 L 86.528141,560.19236 z M 127.46583,540.97352 L 129.80959,539.56726 L 128.87209,537.8485 L 127.15333,538.78601 L 127.46583,540.97352 z " id="AK" style="fill:#f4d7d7" />
+ <ns0:g id="g16325" style="stroke:#000000;stroke-opacity:1">
+ <ns0:g id="g5778" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-opacity:1">
+ <ns0:path d="M 816.92419,258.09425 C 817.71859,258.70718 818.14466,259.56702 819.77271,260.56631 L 819.77271,260.61385" id="path6654" style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#000000;stroke-width:1.33265233;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" ns1:nodetypes="ccc" />
+ <ns0:g id="g4679" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-opacity:1">
+ <ns0:g id="g3580" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-opacity:1">
+ <ns0:g id="State_borders_old" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-opacity:1" transform="matrix(1.0566302,0,0,1.0756987,-45.325399,-166.80506)">
+ <ns0:path d="M 389.29574,462.33445 L 395.75915,462.99736 L 406.8077,463.54979" id="CO_OK" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 389.79293,462.72114 L 389.2405,473.88019" id="NM_OK" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 389.90342,473.82495 L 388.24613,473.82494 L 386.69931,491.94483 L 382.94283,545.64053 L 380.73312,568.62152 L 352.66979,567.07472 L 324.60654,564.42309 L 316.87248,563.76016 L 317.5354,568.62152" id="NM_TX" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 299.63678,367.31684 L 319.96612,369.74752 L 355.98408,373.72497 L 379.62831,375.71374" id="WY_CO" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 379.62831,375.71374 L 411.89008,378.36539 L 410.34328,400.02056" id="NE_CO" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 410.34328,400.02056 L 406.36581,463.66023" id="CO_KS" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 379.62831,375.71374 L 383.82676,332.84535" id="WY_NE" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 383.82676,332.84535 L 385.37355,308.31756 L 386.63467,290.78272" id="WY_SD" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 386.7128,291.15996 L 388.23277,275.63418 L 388.81756,270.31054" id="MT_SD" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 388.81755,270.85742 L 389.59881,259.06782 L 391.78171,234.95517 L 393.10754,220.37107 L 394.43337,206.67087" id="MT_ND" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 389.13006,270.75248 L 443.26797,274.28802 L 499.6156,275.83481" id="ND_SD" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 490.55578,211.09029 L 492.32355,216.17262 L 491.66064,219.92913 L 491.66064,229.87283 L 493.20744,234.73419 L 494.97521,238.04876 L 495.41715,247.55052 L 497.18492,260.58781 L 498.95269,267.65888 L 499.39463,275.83481" id="ND_MN" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 499.39463,275.83481 L 499.17366,278.92841 L 497.84783,280.25424 L 495.85909,281.80103 L 495.85909,283.34783 L 496.96395,285.1156 L 500.94143,288.43017 L 501.38337,291.30279 L 501.60434,320.69194 L 501.1624,327.32107" id="SD_MN" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 501.1624,327.32107 L 499.39463,327.32107 L 498.51074,329.75176 L 498.95269,332.40341 L 501.60434,334.39215 L 500.27851,339.91643 L 498.51074,344.11488 L 500.05754,346.76653 L 501.60434,348.97624" id="SD_IA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 501.60434,348.97624 L 499.83657,348.97624 L 498.0688,348.97624 L 497.18492,346.9875 L 496.74297,345.4407 L 493.87035,343.89391 L 489.00899,342.34711 L 487.24122,341.02128 L 484.58957,341.24225 L 480.83306,341.68419 L 476.63461,343.01002 L 475.52975,342.12614 L 470.88936,339.25351 L 468.90062,337.0438 L 458.51498,337.48574 L 435.53399,336.38089 L 418.29824,335.27603 L 398.85279,334.17118 L 383.82676,333.50826" id="SD_NE" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 500.94143,327.32107 L 512.21095,327.32107 L 560.16167,326.65816 L 577.61839,325.99525 L 581.59587,325.99525" id="MN_IA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 581.59587,325.99525 L 580.71198,318.7032 L 578.72324,316.05155 L 571.87314,312.07407 L 568.11663,306.54979 L 564.80207,306.10785 L 563.0343,303.01426 L 559.71973,303.01426 L 556.84711,300.14163 L 556.40516,293.73347 L 556.40516,289.97696 L 558.17293,286.88337 L 557.51002,283.78977 L 555.07934,281.80103 L 554.6374,281.58006 L 556.84711,275.83481 L 561.92944,272.07831 L 563.0343,270.53151 L 563.0343,262.35558 L 563.25527,259.70393 L 566.01741,256.8313" id="MN_WI" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 590.71092,259.59344 L 594.85413,264.78626 L 602.80909,265.89112 L 610.76405,268.10083 L 613.19473,269.20568 L 625.34814,271.85734 L 626.67397,274.06705 L 630.2095,275.1719 L 631.7563,285.1156 L 633.08213,286.44143 L 634.62893,287.60152" id="WI_MI" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 581.59587,325.77428 L 582.25878,329.08884 L 584.46849,330.63564 L 584.68946,331.96147 L 582.70072,335.27603 L 582.92169,338.36963 L 585.35238,342.12614 L 587.78306,343.23099 L 590.65568,343.67293 L 591.92627,346.3246" id="IA_WI" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 591.76054,345.88265 L 601.04136,346.10361 L 626.453,344.55682 L 635.95475,343.45196" id="WI_IL" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 591.76054,345.71692 L 591.98151,348.09236 L 594.19122,348.75527 L 595.0751,349.86012 L 595.51704,351.62789 L 599.27355,354.94246 L 599.93647,357.15217 L 599.27355,360.46674 L 597.50578,364.00227 L 596.84287,366.43295 L 594.63316,368.20072 L 592.86539,368.86364 L 587.78306,370.18946 L 587.12014,371.95723 L 586.45723,373.94597 L 587.12014,375.2718 L 588.88791,376.8186 L 588.66694,380.79607 L 586.89917,382.34287 L 586.23626,383.88967 L 586.23626,386.54132 L 584.46849,386.98326 L 582.92169,388.08812 L 582.70072,389.41395 L 582.92169,391.40269 L 581.15393,393.05996" id="IA_IL" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 581.3749,393.17045 L 578.06033,389.85589 L 576.95547,387.64618 L 569.44246,388.30909 L 559.9407,388.75103 L 535.41291,389.63492 L 522.37562,389.85589 L 513.31581,390.07686 L 511.98998,390.07686" id="IA_MO" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 512.53686,390.31124 L 510.66415,384.99453 L 510.44318,378.58636 L 508.89638,374.60888 L 508.23347,369.52655 L 506.02376,365.99101 L 505.13988,361.35062 L 502.48822,354.05857 L 501.1624,348.75527" id="NE_IA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 410.12231,399.79959 L 431.33554,400.68347 L 470.44713,402.00929 L 513.09483,402.45124 L 519.06105,402.45124" id="NE_KS" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 519.06105,402.45124 L 515.96746,398.47376 L 513.53678,394.71725 L 513.75775,392.50754 L 512.43192,390.07686" id="NE_MO" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 518.84008,402.45124 L 521.93368,405.10289 L 524.14339,405.32386 L 525.46921,406.20775 L 525.46921,409.08037 L 523.70145,410.62717 L 523.2595,412.83688 L 525.24824,416.15145 L 527.67893,419.02407 L 530.10961,420.79184 L 531.43543,432.06136 L 530.77252,466.53285" id="KS_MO" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 530.77252,466.53285 L 517.95614,467.19576 L 473.09935,466.75383 L 429.56781,464.76507 L 406.08959,463.43925" id="KS_OK" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 388.4119,473.88015 L 410.34328,474.92975 L 440.39535,476.03461 L 439.06952,499.0156 L 438.62758,516.25134 L 438.84855,517.79814 L 443.047,521.33368 L 445.03574,522.43853 L 445.69866,522.21756 L 446.36157,520.22882 L 447.6874,521.99659 L 449.67614,521.99659 L 449.67614,520.67076 L 452.32779,521.99659 L 451.88585,525.7531 L 455.86333,525.97407 L 458.29401,527.07893 L 462.27149,527.74184 L 464.70217,529.50961 L 466.91188,527.52087 L 470.22645,528.18378 L 472.65713,531.49835 L 473.54101,531.49835 L 473.54101,533.70806 L 475.75072,534.37097 L 477.96043,532.16126 L 479.7282,532.82417 L 482.15888,532.82417 L 483.04277,535.25486 L 487.68316,537.02262 L 489.00899,536.35971 L 490.77676,532.38223 L 491.88161,532.38223 L 492.98647,534.37097 L 496.96395,535.03388 L 500.49948,536.35971 L 503.37211,537.2436 L 505.13988,536.35971 L 505.80279,533.92903 L 510.00124,533.92903 L 511.98998,534.81291 L 514.64163,532.82417 L 515.74649,532.82417 L 516.4094,534.37097 L 520.38688,534.37097 L 521.93368,532.38223 L 523.70145,532.82417 L 525.69019,535.25486 L 528.78378,537.02262 L 531.87738,537.90651 L 534.52903,539.45331" id="OK_TX" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 534.52903,539.45331 L 534.30806,502.55125 L 532.98222,491.94454 L 532.98223,483.98957 L 531.43543,477.36043" id="OK_AR" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 531.43543,477.36043 L 530.99349,470.7313 L 530.77252,465.86994" id="OK_MO" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 531.43543,477.36043 L 553.97448,476.91849 L 576.51353,476.25558 L 596.6219,475.37169 L 607.22851,474.92975 L 608.99628,477.80238 L 608.55434,480.01209 L 605.46074,482.66374 L 604.79783,485.53636 L 610.76405,485.97831 L 615.62541,485.31539" id="MO_AR" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 615.62541,485.31539 L 617.61415,479.1282 L 617.61415,473.38295" id="MO_TN" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 617.33793,473.99063 L 620.26581,472.2781 L 621.59163,470.7313 L 623.58037,469.62645 L 623.80134,466.53285 L 624.68523,464.76508 L 623.13842,462.27915" id="MO_KY" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 623.58037,462.55537 L 620.48678,462.77634 L 618.71901,460.7876 L 617.17221,456.81012 L 618.05609,453.9375 L 616.06735,450.84391 L 614.07862,445.98254 L 609.65919,445.31963 L 603.472,440.23729 L 601.26229,436.48079 L 601.92521,433.38719 L 604.13492,427.64194 L 604.79783,424.10641 L 602.14618,422.78058 L 595.95899,422.33864 L 595.0751,421.01281 L 595.29607,416.81436 L 589.99277,413.27882 L 582.92169,405.98678 L 580.71198,398.9157 L 580.27004,395.38017 L 581.3749,392.28657" id="MO_IL" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 534.52903,538.79039 L 536.73874,541.0001 L 539.61136,539.67428 L 542.26302,540.77913 L 542.92593,551.38574" id="TX_AR" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 542.92593,551.38574 L 542.92593,560.8875 L 543.58884,569.94731 L 544.25176,573.70382 L 546.68244,577.6813 L 547.56632,582.54267 L 551.76477,587.84597 L 551.98574,590.93957 L 552.64866,591.60248 L 551.98574,599.77841 L 549.11312,604.63977 L 550.65992,606.62851 L 549.997,609.05919 L 549.33409,616.13027 L 548.00826,619.22386 L 548.28448,622.70416" id="TX_LA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 542.87069,551.88293 L 564.36012,551.60672 L 582.92169,550.72283 L 593.30733,550.72283" id="AR_LA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 593.52831,550.72283 L 593.74928,556.02614 L 595.73802,560.44556 L 595.51704,562.21333 L 597.72676,563.9811 L 597.06384,567.07469 L 595.95899,567.07469 L 596.84287,569.06343 L 591.76054,577.90227 L 588.44597,583.86849 L 587.78306,591.60248 L 588.225,593.14928 L 611.64793,592.48636 L 619.60289,591.82345 L 621.37066,591.60248 L 622.03357,592.48636 L 620.92872,599.77841 L 624.24328,602.872 L 625.34814,606.62851 L 626.61872,609.00395" id="LA_MS" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 593.41781,550.99905 L 594.79888,548.29215 L 594.41219,544.0937 L 593.08636,541.22107 L 594.41219,539.89525 L 593.08636,537.90651 L 593.52831,536.13874 L 594.41219,530.17252 L 597.28481,527.52087 L 596.6219,525.53213 L 600.15744,520.44979 L 602.80909,519.56591 L 602.80909,517.13523 L 602.14618,515.8094 L 604.79783,510.72707 L 607.44948,509.62221 L 607.44948,506.08667" id="AR_MS" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 642.50096,359.68676 L 643.28221,370.93678 L 644.53221,385.78055 L 645.78222,401.24932 L 646.25097,407.96808 L 645.46972,413.28059 L 645.78222,416.40559 L 647.50097,419.06185 L 647.96972,424.68686 L 645.46972,428.74936 L 643.75096,432.49937 L 641.56346,435.31187 L 641.09471,439.68688 L 641.09471,443.28063" id="IL_IN" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 641.09471,443.28063 L 640.15721,446.56189 L 639.06346,447.34314 L 639.68846,449.21814 L 640.46971,450.9369 L 638.90721,451.5619 L 636.4072,452.1869 L 634.5322,453.59315 L 634.2197,455.78065 L 635.4697,458.12441 L 635.31345,460.31191 L 634.2197,460.62441 L 630.78219,459.37441 L 628.12594,458.12441 L 626.09469,458.74941 L 623.90718,460.46816 L 623.12593,462.34316" id="IL_KY" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 641.25096,443.43688 L 644.06346,441.71813 L 649.68847,440.78063 L 653.12598,440.31188 L 654.53223,442.18688 L 656.25098,442.96813 L 657.96973,439.84313 L 660.78224,438.43688 L 662.65724,439.99938 L 663.43849,441.09313 L 665.46975,440.62438 L 665.31349,437.34313 L 668.126,435.78062 L 669.21975,434.99937 L 670.3135,436.56187 L 674.84476,436.56187 L 675.62601,434.53062 L 675.31351,432.34312 L 678.12601,428.90561 L 682.65727,425.15561 L 683.12602,420.7806 L 685.78228,420.4681 L 689.53228,418.74935 L 692.18854,416.87434 L 691.87603,414.99934 L 690.46978,413.59309 L 690.93853,411.40559" id="IN_KY" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 690.93853,411.40559 L 690.46978,405.93683 L 687.96978,383.28054 L 686.25103,369.99927 L 684.84477,355.7805" id="IN_OH" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 684.84477,355.7805 L 684.68852,354.68675 L 678.75102,355.31175 L 657.50098,357.49926 L 652.96973,357.49926" id="IN_MI" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 615.46967,485.07202 L 614.58577,488.10878 L 613.28217,492.34321 L 612.96967,494.84321 L 609.06341,497.03071 L 610.46966,500.46822 L 609.53216,504.99948 L 606.87591,506.09323" id="AR_TN" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 607.65716,506.56198 L 615.93842,506.24948 L 639.21971,504.37448 L 642.96971,504.21823" id="TN_MS" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 644.51654,503.77628 L 644.53221,510.31198 L 644.68846,526.40576 L 643.90721,556.4058 L 643.75096,569.99957 L 646.40722,588.1246 L 647.9524,603.33611" id="MS_AL" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 642.65721,504.21823 L 652.18848,503.74947 L 679.06352,501.24947 L 689.03673,500.46822" id="TN_AL" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 199.86827,240.25868 L 200.31021,231.08839 L 203.84575,215.17847 L 208.15468,195.07011 L 211.8007,182.03283 L 212.5741,178.27632" id="WA_ID" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 105.11516,210.08273 L 107.72336,210.64857 L 108.38627,213.07925 L 112.36375,213.63168 L 114.57346,217.38818 L 114.35249,224.9012 L 113.68958,225.6746 L 119.43482,229.65208 L 125.40104,229.98353 L 127.27929,228.21576 L 131.47774,229.65208 L 132.25114,229.54159 L 137.33348,231.53033 L 138.99076,232.85615 L 143.52066,233.07713 L 144.736,232.41421 L 147.0562,233.96101 L 151.36513,234.51344 L 156.66844,232.5247 L 157.11038,233.85052 L 172.02592,233.74004 L 186.61001,237.16509 L 200.38279,240.66827" id="WA_OR" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 199.97875,240.59014 L 201.19409,244.6781 L 204.50866,247.21927 L 204.28769,250.86529 L 200.53118,255.06374 L 196.77467,260.6985 L 195.89079,261.36141 L 195.33836,264.45501 L 194.23351,265.55986 L 192.46574,266.0018 L 188.1568,271.30511 L 187.82535,274.28822 L 187.38341,275.39307 L 188.1568,276.38744 L 190.58749,276.27696 L 191.80283,278.48667 L 189.37215,284.23191 L 188.04632,288.31988 L 183.84787,305.44513 L 179.53894,322.90184" id="OR_ID" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 134.1294,312.29523 L 126.28493,342.89971 L 119.54531,367.97992 L 117.96384,374.32659 L 129.93095,392.28673 L 151.91756,424.99044 L 170.7001,453.05375 L 184.73175,475.04037 L 187.28633,478.33598" id="CA_NV" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 179.25879,323.29247 L 199.53681,327.65271 L 208.92808,329.53097 L 217.8774,331.29873 L 225.72187,333.17699" id="ID_NV" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 225.5009,333.28747 L 237.87528,335.49718 L 249.47626,337.48592 L 259.41995,339.25369 L 267.48539,340.57952 L 272.23627,341.24243" id="ID_UT" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 187.05195,478.02348 L 186.61001,481.33804 L 189.26166,486.08892 L 190.477,491.72368 L 191.2504,492.71805 L 192.24477,493.27048 L 192.13428,495.48019 L 190.58749,496.80601 L 187.27292,498.46329 L 185.39467,500.34155 L 183.95836,503.87708 L 183.40593,508.62796 L 180.64379,511.27961 L 178.65505,511.94253 L 178.54457,517.57729 L 178.10262,519.23457 L 178.54457,520.00797 L 182.0801,520.56039 L 181.52767,523.21205 L 180.09136,525.31127 L 176.44534,526.19515" id="CA_AZ" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 187.27292,478.24445 L 188.59875,476.03474 L 189.15117,463.88133 L 189.37215,462.22405 L 189.48263,455.48444 L 191.36088,454.49007 L 192.24477,453.93764 L 193.12865,453.93764 L 194.01254,455.04249 L 196.66419,455.37395 L 197.87953,458.0256 L 200.31021,458.13609 L 201.96749,455.59492 L 202.40943,455.15298 L 205.40595,437.74758" id="NV_AZ" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 205.28206,438.35918 L 207.16031,427.86306 L 210.2539,413.16849 L 213.45798,397.14809 L 215.55721,384.00032 L 217.43546,375.38245 L 221.08148,355.60554 L 224.50653,338.70126 L 225.61139,333.50844" id="NV_UT" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 70.710722,294.61753 L 77.560823,296.82724 L 88.609373,299.69986 L 95.901416,301.6886 L 108.05482,305.66608 L 121.09211,308.98065 L 134.1294,312.73715" id="OR_CA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 133.68746,312.68584 L 166.39117,320.47114 L 179.64943,323.34376" id="OR_NV" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 226.27435,180.81733 L 221.85493,201.58861 L 225.1695,208.88065 L 223.84367,213.30007 L 225.61144,217.71949 L 228.70504,219.04532 L 232.24057,228.98902 L 235.77611,232.52455 L 236.21805,233.62941 L 239.53262,234.73427 L 239.97456,236.723 L 233.12446,253.73778 L 233.12446,256.16846 L 235.55514,259.26205 L 236.43902,259.26205 L 241.07941,256.38943 L 241.74233,255.28457 L 243.28913,255.94749 L 243.06815,261.02982 L 245.71981,273.18323 L 248.59243,275.61391 L 249.47631,276.27682 L 251.24408,278.48653 L 250.80214,281.8011 L 251.46505,285.11566 L 252.56991,285.99955 L 254.77962,283.78984 L 257.43127,283.78984 L 260.52487,285.33664 L 262.95555,284.45275 L 266.93303,284.45275 L 270.46856,285.99955 L 273.12022,285.55761 L 273.56216,282.68498 L 276.43478,282.02207 L 277.76061,283.3479 L 278.20255,286.44149 L 280.63323,288.6512" id="ID_MT" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 280.76267,289.04183 L 282.18003,277.82362 L 301.40451,280.69624 L 328.80492,284.67372 L 344.49387,286.66246 L 375.50794,289.84759 L 386.47836,290.86091" id="MT_WY" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 280.8542,288.20926 L 277.0977,312.07413 L 272.01536,341.46328" id="ID_WY" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 272.01536,341.46328 L 270.5356,351.6275 L 268.92177,363.11844 L 275.2273,364.01574 L 291.55004,366.22545 L 300.53404,367.40842" id="UT_WY" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 300.29966,367.31689 L 297.42703,388.75109 L 294.33344,410.40625 L 290.70637,437.45625 L 289.2511,448.1923 L 288.58819,452.16978" id="UT_CO" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 205.06113,437.58569 L 237.54388,443.77288 L 263.83943,448.1923 L 288.80916,451.85728" id="UT_AZ" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 288.58819,451.94881 L 284.5839,481.67727 L 277.85214,533.09881 L 274.22507,559.11977 L 272.4573,571.93609" id="AZ_NM" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 288.80916,451.72784 L 321.95482,455.92629 L 357.65689,460.20517 L 389.35099,462.33445" id="CO_NM" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 685.15727,355.93675 L 692.50104,354.68675 L 702.3448,353.12425 L 707.42849,352.54501" id="MI_OH" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 691.09478,411.56184 L 695.00104,411.24934 L 697.34479,410.46809 L 700.1573,412.03059 L 701.7198,416.24934 L 707.34481,416.56184 L 709.06356,418.2806 L 711.09481,418.43685 L 713.43857,417.0306 L 716.40732,417.49935 L 717.65732,418.9056 L 720.31358,416.40559 L 722.03233,415.15559 L 723.59483,415.15559 L 724.21983,417.81185 L 725.93859,418.74935 L 729.37609,420.7806" id="OH_KY" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 729.37609,420.7806 L 729.53234,426.09311 L 730.31359,427.65561 L 732.8136,429.06186 L 733.4386,431.24937 L 736.2511,434.84312 L 738.7511,437.49938 L 741.92187,439.62379" id="KY_WV" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 742.03236,438.90563 L 738.90736,442.65563 L 734.84485,446.09314 L 730.46984,451.2494 L 728.75109,452.96815 L 728.75109,454.9994 L 725.00108,457.03065 L 719.53233,460.31191 L 716.70413,461.72601" id="KY_VA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 717.31181,461.61552 L 666.876,466.40567 L 651.64388,468.12442 L 647.17734,468.61997 L 643.43846,468.59317 L 643.43846,472.34318 L 635.31345,472.81193 L 628.59469,473.43693 L 618.12592,473.59318" id="KY_TN" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 665.15724,603.28087 L 664.84474,595.46836 L 662.34474,593.59336 L 660.62599,591.87461 L 660.93849,588.90585 L 670.78225,587.65585 L 695.46979,584.84335 L 702.0323,584.21835 L 708.12606,584.21835" id="AL_FL" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 708.12606,584.21835 L 707.34481,580.78084 L 705.93856,579.99959 L 705.31355,579.21834 L 706.09481,576.87458 L 705.78231,571.71833 L 704.2198,567.49957 L 704.37605,565.62457 L 704.8448,562.49956 L 706.56356,557.81206 L 706.40731,555.7808 L 704.5323,554.99955 L 704.06355,551.7183 L 701.56355,548.43704 L 699.5323,542.34328 L 698.12604,535.62452 L 696.56354,530.93702 L 695.15729,524.99951 L 692.81354,515.46824 L 689.53228,507.81198 L 688.90728,504.53073 L 688.75103,502.49947 L 688.75103,500.31197" id="AL_GA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 707.81356,583.90584 L 710.46981,587.8121 L 711.87606,589.21835 L 719.53233,589.3746 L 729.98996,588.7496 L 750.78237,587.4996 L 756.04583,586.8478 L 760.46989,586.8746 L 760.62614,589.6871 L 763.12614,590.46835 L 763.43864,586.2496 L 761.87614,581.87459 L 762.96989,580.31209 L 768.5949,581.09334 L 773.59491,581.40584" id="GA_FL" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 688.75103,500.46822 L 697.03229,499.53072 L 705.1573,498.43697 L 709.84481,497.65572" id="TN_GA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 709.84481,497.65572 L 716.40732,497.18696 L 723.12608,496.40571 L 728.75109,495.46821 L 730.46984,495.31196" id="NC_GA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 730.46984,495.31196 L 730.62609,497.18696 L 728.43859,498.12447 L 727.65734,499.99947 L 727.96984,501.71822 L 729.21984,502.96822 L 733.1261,505.31198 L 736.40735,505.15573 L 739.68861,510.15573 L 740.15736,511.56199 L 742.50111,514.37449 L 742.96986,515.78074 L 747.34487,517.4995 L 750.31362,519.687 L 752.50113,522.4995 L 754.68863,523.7495 L 756.71988,525.62451 L 757.96988,528.12451 L 760.00114,529.99951 L 764.06364,531.87452 L 766.7199,537.65578 L 768.2824,542.34328 L 770.7824,542.96828 L 772.96991,544.99954 L 774.21991,548.43704 L 774.84491,550.46829 L 777.34491,551.7183 L 779.37617,550.7808" id="GA_SC" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 730.15734,494.99946 L 736.2511,492.65571 L 745.00111,488.2807 L 752.03237,487.49945 L 767.9699,487.0307 L 770.1574,488.9057 L 771.7199,492.03071 L 775.93866,491.56196 L 788.12618,490.1557 L 790.93868,490.93696 L 803.1262,498.28072 L 812.97945,506.32368" id="NC_SC" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 709.84481,497.65572 L 710.15731,492.96821 L 711.87606,491.56196 L 714.53232,490.93696 L 715.15732,487.3432 L 719.21983,484.68695 L 722.96983,483.28069 L 727.03234,479.84319 L 731.25109,477.81194 L 731.87609,474.84318 L 735.6261,471.09318 L 736.2511,470.93693 C 736.2511,470.93693 736.2511,472.03068 737.03235,472.03068 C 737.8136,472.03068 738.90736,472.34318 738.90736,472.34318 L 741.09486,468.90567 L 743.12611,468.28067 L 745.31361,468.59317 L 746.87612,465.15567 L 749.68862,462.65566 L 750.15737,460.62441 L 750.31362,456.71815" id="TN_NC" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 717.03232,461.56191 L 726.53223,460.74273 L 738.1261,458.90566 L 745.78237,458.74941 L 748.12612,456.8744 L 750.34206,456.92964" id="VA_TN" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 750.00112,456.8744 L 754.53238,457.49941 L 761.42964,456.2494 L 776.71991,454.3744 L 793.28244,451.8744 L 813.19549,448.22704 L 831.71999,444.53064 L 842.81376,441.71813 L 847.56599,440.14615" id="VA_NC" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 741.65514,439.21813 L 743.90736,442.34313 L 745.15736,443.59313 L 747.96987,444.37439 L 750.46987,443.74938 L 752.81363,441.56188 C 752.81363,441.56188 754.53238,442.96813 755.15738,442.81188 C 755.78238,442.65563 759.37614,441.87438 759.37614,441.87438 L 761.09489,437.34313 L 763.59489,438.28063 L 766.7199,435.93687 L 768.12615,436.24937 L 770.1574,434.37437 L 770.31365,431.71812 L 769.5324,430.46812 L 774.37616,419.99935 L 776.40741,413.59309 L 776.71991,409.37433 L 778.43866,409.21808 L 780.00117,411.87434 L 781.25117,412.65559 L 783.75117,412.65559 L 784.84492,407.34308 L 785.15742,404.37433 L 788.43868,404.06183 L 788.90743,401.87432 L 791.87618,399.53057 L 792.50119,397.96807 L 794.06369,395.31181 L 794.53244,393.28056 L 794.68869,388.1243 L 799.06369,389.84305 L 804.53246,392.81181 L 805.46995,387.65555" id="WV_VA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 805.15745,388.1243 L 809.37621,389.84305 L 809.37621,392.65556 L 814.68872,393.90556 L 816.56372,395.15556 L 817.50122,393.28056 L 819.68873,394.84306 L 818.28247,397.96807 L 817.96997,400.62432 L 816.25122,403.12432 L 816.25122,405.15558 L 816.87622,406.87433 L 822.13512,408.2443" id="VA_MD" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 805.6262,388.28055 L 804.21995,386.71805 L 802.34495,384.9993 L 799.53245,383.59305 L 797.94314,382.50092 L 796.15966,382.96967 L 794.21994,384.3743 L 791.71993,386.40555 L 788.90743,386.71805 L 787.65743,386.09305 L 785.93868,388.59305 L 784.53242,389.9993 L 782.18867,390.15555 L 780.00117,393.12431 L 777.96991,395.46806 L 777.65741,395.78056 L 776.71991,390.31181 L 775.31366,385.3118" id="WV_MD" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 775.64512,385.53277 L 763.62333,387.03055 L 759.14731,387.75656 L 755.60717,368.59302" id="PA_WV" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 755.93863,368.59302 L 754.53238,369.84302 L 753.59488,371.24928 L 754.68863,374.21803 L 754.68863,378.74929 L 754.21988,383.59305 L 753.90738,389.0618 L 751.71987,392.81181 L 748.75112,396.09306 L 746.56362,397.65557 L 744.53236,397.18682 L 743.28236,398.59307 L 741.09486,401.87432 L 740.15736,403.12432 L 740.15736,405.46808 L 741.25111,407.18683 L 740.78236,408.74933 L 739.06361,409.68683 L 738.59485,407.96808 L 737.34485,406.87433 L 736.09485,407.49933 L 735.15735,411.24934 L 735.0011,416.09309 L 733.4386,417.49935 L 733.28235,420.1556 L 731.40734,420.93685 L 729.21984,421.24935" id="OH_WV" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 751.25169,340.03513 L 754.06419,358.74889 L 755.78295,369.68641" id="OH_PA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 761.7015,331.46032 L 762.34546,338.28009 L 770.93923,336.87384 L 812.50182,328.43632 L 830.47061,324.53006 L 832.72285,326.59924 L 835.62687,327.49882 L 837.97063,332.65508 L 840.15813,334.53008 L 842.65814,334.68633 L 843.90814,335.78009" id="NY_PA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 843.75189,335.62383 L 847.34565,337.34259 L 851.09566,338.43634 L 855.47067,339.37384 L 857.97067,340.4676 L 858.12692,342.49885 L 857.65817,345.15511 L 858.24689,348.66681" id="NY_NJ" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 844.06439,335.46758 L 841.72064,337.96759 L 841.72064,340.93635 L 839.84563,343.9051 L 839.68938,345.46761 L 840.93939,346.71761 L 840.78314,349.06137 L 838.59563,350.15512 L 839.37688,352.81137 L 839.53313,353.90513 L 842.18939,354.21763 L 843.12689,356.71763 L 846.5644,359.06139 L 848.90815,360.62389 L 848.90815,361.40514 L 845.78315,364.3739 L 844.22064,366.5614 L 842.81439,369.21766 L 840.62689,370.46766 L 839.53313,371.24891" id="PA_NJ" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 839.37688,371.09266 L 839.22063,372.34267 L 838.66983,374.88059" id="DE_NJ" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 839.53313,371.09266 L 837.50188,371.09266 L 835.47062,372.65517 L 834.06437,374.06142" id="NY_DE" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 834.06437,374.06142 L 835.47062,378.12393 L 837.65813,383.59269 L 839.68938,392.96771 L 841.25189,399.06148 L 846.09565,398.90523 L 852.03316,397.81147" id="MD_DE" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 834.38635,373.6842 L 826.20281,375.44087 L 811.82448,378.1697 L 774.68924,385.62395" id="PA_MD" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 862.06162,339.46537 L 860.15818,337.34259 L 861.25193,335.15508 L 861.25193,327.34257 L 859.84568,320.3113 L 859.06443,316.87379" id="NY_CT" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 859.06443,316.87379 L 858.28318,311.56128 L 858.75193,301.09251" id="NY_MA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 858.75193,301.09251 L 858.28318,296.0925 L 855.31442,285.46747 L 854.68942,285.15497 L 851.87691,283.90497 L 852.65816,281.09246 L 851.87691,279.06121 L 849.37691,274.6862 L 850.31441,270.93619 L 849.53316,265.93618 L 847.1894,259.68616 L 846.5644,254.8424" id="NY_VT" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 872.65821,247.81114 L 872.97071,253.5924 L 874.84571,256.24866 L 874.84571,260.15492 L 871.25195,264.06117 L 868.75195,265.15493 L 868.75195,266.24868 L 869.8457,267.96743 L 869.8457,276.2487 L 869.06445,285.15497 L 868.9082,289.84248 L 869.8457,291.09249 L 869.68945,295.46749 L 869.2207,297.18625 L 870.7832,299.06125" id="VT_NH" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 859.06443,301.56126 L 863.90819,300.46751 L 870.4707,299.2175" id="VT_MA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 870.4707,299.2175 L 887.34574,295.15499 L 889.53325,294.52999 L 891.5645,291.40499 L 895.50868,289.5947" id="NH_MA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 896.48246,285.35698 L 894.06451,284.21747 L 893.59575,281.24871 L 889.84575,280.15496 L 889.53325,277.4987 L 882.50198,254.8424 L 877.81447,240.46737" id="NH_ME" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 859.37693,317.34254 L 880.31447,312.49878 L 885.31449,311.40503" id="MA_CT" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 885.31449,311.40503 L 886.87699,317.18629 L 887.65824,321.40505 L 888.28324,325.46756" id="CT_RI" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ <ns0:path d="M 885.15824,311.56128 L 890.78325,309.99878 L 892.34575,311.09253 L 895.62701,315.31129 L 898.43952,319.6863" id="RI_MA" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:1pt;stroke-opacity:1" />
+ </ns0:g>
+ <ns0:g id="g3561" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-opacity:1">
+ <ns0:path d="M 242.11104,448.52821 L 258.12559,450.54515 L 259.44637,440.12432 L 276.45152,442.81356 L 290.31977,444.66242" id="NM_Mexico" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-dasharray:none;stroke-opacity:1" />
+ <ns0:path d="M 289.98957,444.32625 L 292.13584,444.99855 L 294.77744,448.02394 L 296.26332,452.56207 L 301.05119,454.91517 L 302.37198,458.27673 L 309.63631,466.51255 L 310.9571,468.19333 L 316.07515,470.37834 L 317.23084,472.56336 L 318.88182,473.57182 L 319.37712,476.42915 L 322.67909,483.15227 L 322.67909,491.55616 L 324.99047,496.43042 L 332.585,504.49816 L 337.86815,506.68317 L 339.68423,508.70011 L 339.68423,509.37242 L 343.64659,511.72551 L 345.62777,512.39782 L 347.44386,513.57437 L 350.08543,514.58284 L 352.56191,512.06167 L 357.01957,505.67471 L 358.01016,501.80891 L 360.32154,498.44736 L 363.9537,496.93466 L 368.57646,495.0858 L 371.71333,497.43889 L 379.30786,498.1112 L 386.242,499.28775 L 388.88357,501.47276 L 388.88357,502.6493 L 391.52515,505.84279 L 397.63379,511.38936 L 397.79889,512.90206 L 399.61497,514.91899 L 400.44047,519.28902 L 405.88872,532.06294 L 405.72362,534.07988 L 410.01618,536.76912 L 413.64834,543.66032 L 417.11541,548.19842 L 420.41738,549.54304 L 422.06837,551.89614 L 420.74758,556.43424 L 421.40797,557.44271 L 422.72876,558.11502 L 422.39856,561.64466 L 421.73817,562.31697 L 422.39856,564.67006 L 425.70053,566.68699 L 427.02132,573.41011 L 429.1676,577.44398 L 436.92723,580.97362 L 442.21038,582.15016 L 446.50294,585.34364 L 449.80491,586.01595 L 451.1257,585.51172 L 456.73904,586.68827 L 462.51749,590.72214 L 465.65436,588.7052" id="TX_Mexico" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-dasharray:none;stroke-opacity:1" />
+ <ns0:path d="M 95.503595,393.0625 L 105.7397,394.5752 L 125.88171,397.43253 L 140.74058,399.1133" id="CA_Mexico" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-dasharray:none;stroke-opacity:1" />
+ <ns0:path d="M 140.74058,399.1133 L 138.4292,401.4664 L 138.099,402.9791 L 138.5943,403.98756 L 157.91082,415.08071 L 170.2932,422.98037 L 185.31716,431.8885 L 202.4874,442.30933 L 215.03489,444.8305 L 242.11104,448.52821" id="AZ_Mexico" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-dasharray:none;stroke-opacity:1" />
+ <ns0:g id="g3547" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-opacity:1">
+ <ns0:path d="M 876.74955,100.10268 L 848.85548,107.51359" id="VT_Canada" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-dasharray:none;stroke-opacity:1" />
+ <ns0:path d="M 943.28423,76.73985 L 940.47756,76.907928 L 940.97285,78.084474 L 940.80775,78.588708 L 939.98226,78.588708 L 937.01049,76.235617 L 936.84539,71.193279 L 936.0199,69.176344 L 929.91126,69.176344 L 920.66574,38.081928 L 918.68456,37.073461 L 912.57592,34.552292 L 911.09003,34.384214 L 909.27395,36.233071 L 905.14649,39.258474 L 905.14649,40.266941 L 904.32099,41.107331 L 901.51432,40.435019 L 900.19353,38.081928 L 900.19353,36.905383 L 898.87274,36.737305 L 897.55196,36.737305 L 895.40568,41.107331 L 892.4339,50.351617 L 890.61782,55.393954 L 890.78292,60.436292 L 890.94802,61.948993 L 890.12252,64.806318 L 889.29703,65.814786 L 889.29703,72.033669 L 891.27821,74.554837 L 889.79233,78.756786 L 887.15075,83.631045 L 886.32526,89.345695 L 886.32526,92.034941 L 884.77927,91.608771 L 881.71077,91.733617" id="ME_Canada" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-dasharray:none;stroke-opacity:1" />
+ <ns0:path d="M 882.59051,91.36264 L 881.5374,92.203019 L 880.87701,93.883799 L 880.21662,93.379565 L 879.22603,92.371097 L 877.74014,94.388032 L 875.84148,100.77501" id="NH_Canada" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-dasharray:none;stroke-opacity:1" />
+ <ns0:g id="g3537" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-opacity:1">
+ <ns0:path d="M 710.49539,188.67975 L 711.48598,189.52014 L 710.49539,190.69668 L 710.66049,191.36899 L 711.48598,191.53707 L 713.46716,190.5286 L 713.13697,180.61201 M 704.88204,204.47907 L 704.88204,198.9325 L 706.86322,196.91556 L 707.68872,196.57941" id="MI_Canada" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-dasharray:none;stroke-opacity:1" />
+ <ns0:path d="M 766.79397,165.82115 L 768.77515,172.20811 L 770.59123,172.37619 L 771.91202,175.56967 M 849.4392,107.39474 L 841.58358,109.51505 L 836.96082,111.02775 L 833.65885,110.85967 L 828.0455,112.20429 L 824.7235,113.61855" id="NY_Canada" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-opacity:1" />
+ <ns0:g id="g3530" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-opacity:1">
+ <ns0:path d="M 179.70368,24.971818 L 163.02887,21.106058 L 139.58489,15.223331 L 119.11268,9.3406038 L 110.36246,7.3236687 L 100.45655,4.4663441 L 95.99889,2.9536428" id="WA_Canada" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-dasharray:none;stroke-opacity:1" />
+ <ns0:path d="M 193.57209,27.997253 L 179.20868,25.139971" id="ID_Canada" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-dasharray:none;stroke-opacity:1" />
+ <ns0:path d="M 371.21804,55.393954 L 338.69364,52.032396 L 308.81082,48.334682 L 278.92799,44.132734 L 245.9083,38.586162 L 227.08707,35.056526 L 193.57209,27.997253" id="MT_Canada" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-dasharray:none;stroke-opacity:1" />
+ <ns0:path d="M 472.75352,59.76398 L 442.87077,59.427825 L 423.88445,58.755513 L 396.8083,57.410889 L 371.21804,55.393954" id="ND_Canada" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-dasharray:none;stroke-opacity:1" />
+ <ns0:path d="M 590.4688,78.756786 L 585.35075,79.261019 L 584.85546,80.269487 L 584.19506,80.269487 L 582.37898,77.076006 L 573.29856,77.412162 L 572.30797,78.252552 L 571.31738,78.252552 L 570.82209,76.907928 L 569.99659,75.059071 L 567.35502,75.563305 L 564.05305,78.924863 L 562.40206,79.765253 L 559.26519,79.765253 L 556.62362,78.756786 L 556.62362,76.571773 L 555.30283,76.403695 L 554.80753,76.907928 L 552.16596,75.563305 L 551.67066,72.537902 L 550.18478,73.042136 L 549.68948,74.050604 L 547.21301,73.54637 L 541.76476,71.025201 L 537.80239,68.335954 L 534.83062,68.335954 L 533.50983,67.327487 L 531.19845,67.999799 L 530.04276,69.176344 L 529.71257,70.520967 L 524.75961,70.520967 L 524.75961,68.335954 L 518.32077,67.999799 L 517.99058,66.487097 L 513.03762,66.487097 L 511.38664,64.806318 L 509.90075,58.419357 L 509.07526,52.704708 L 507.09408,51.864318 L 504.7827,51.360084 L 504.1223,51.528162 L 503.79211,60.100136 L 472.09313,60.100136" id="MN_Canada" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-width:2.66530466;stroke-dasharray:none;stroke-opacity:1" />
+ </ns0:g>
+ </ns0:g>
+ </ns0:g>
+ </ns0:g>
+ </ns0:g>
+ <ns0:g id="g4675" style="fill:#000000;fill-opacity:0;stroke:#000000;stroke-opacity:1">
+ <ns0:path d="M 846.52085,274.72594 L 847.80814,273.69012 L 850.29359,272.77823 L 852.1404,272.10064 L 852.89317,271.82446 L 853.40684,271.87199" id="path3995" style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#000000;stroke-width:1.33265233;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" ns1:nodetypes="cccccc" />
+ <ns0:path d="M 817.25107,257.90409 C 818.2317,258.85489 818.79206,259.61552 818.79206,259.61552 L 819.39913,260.85156 L 819.53922,260.70894" id="path5767" style="fill:#000000;fill-opacity:0;fill-rule:evenodd;stroke:#000000;stroke-width:0.41898587;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" ns1:nodetypes="cccc" />
+ </ns0:g>
+ </ns0:g>
+ </ns0:g>
+ <ns0:path d="M 152.15345,458.16063 L 151.84095,540.66102 L 153.40345,541.59852 L 156.37222,541.75477 L 157.77847,540.66102 L 160.27848,540.66102 L 160.43474,543.47353 L 167.15352,550.03606 L 167.62227,552.53607 L 170.90353,550.66106 L 171.52854,550.50481 L 171.84104,547.53605 L 173.24729,545.97354 L 174.34105,545.81729 L 176.21606,544.41103 L 179.18482,546.44229 L 179.80983,549.25481 L 181.68483,550.34856 L 182.77859,552.69232 L 186.52861,554.41108 L 189.80987,560.19236 L 192.46613,563.94237 L 194.65364,566.59864 L 196.0599,570.1924 L 200.90367,571.91116 L 205.9037,573.94242 L 206.8412,578.16119 L 207.30995,581.12995 L 206.37245,584.41122 L 204.34118,587.14562" id="AK_Canada" style="fill:none;stroke:#000000;stroke-width:2.5;stroke-dasharray:none;stroke-opacity:1" />
+ </ns0:g>
+ <ns0:path d="M 127.46583,540.97352 L 129.80959,539.56726 L 128.87209,537.8485 L 127.15333,538.78601 L 127.46583,540.97352 z M 86.528141,560.19236 L 87.621901,565.81738 L 90.434411,566.59864 L 95.278181,563.78612 L 99.496951,561.28611 L 97.934451,558.94235 L 98.403201,556.59859 L 96.371941,557.8486 L 93.559431,557.06734 L 95.121931,555.97359 L 96.996941,556.75484 L 100.74696,555.03608 L 101.21571,553.62983 L 98.871951,552.84857 L 99.653201,550.97356 L 96.996941,552.84857 L 92.465671,556.28609 L 87.778151,559.0986 L 86.528141,560.19236 z M 78.090601,572.22366 L 79.496861,573.94242 L 80.434371,572.84867 L 79.653111,570.97366 L 78.090601,572.22366 z M 55.278,574.09867 L 56.371751,571.91116 L 58.403011,572.22366 L 57.621761,574.09867 L 55.278,574.09867 z M 52.465487,571.12991 L 54.027994,573.00492 L 56.059251,571.44241 L 54.652997,570.1924 L 52.465487,571.12991 z M 5.1215179,575.50493 L 8.4027829,573.31742 L 11.684048,572.37991 L 14.18406,572.69241 L 14.652812,574.25492 L 16.527821,574.72367 L 18.402829,572.84867 L 18.090328,571.28616 L 20.74659,570.66116 L 23.559103,573.16117 L 22.465348,574.87992 L 18.246579,575.97368 L 15.590316,575.50493 L 11.99655,574.41117 L 7.7777799,575.81743 L 6.2152729,576.12993 L 5.1215179,575.50493 z M 18.402829,504.8796 L 19.496585,507.37961 L 20.59034,508.94212 L 19.496585,509.72337 L 17.465325,506.75461 L 17.465325,504.8796 L 18.402829,504.8796 z M 38.402922,518.47341 L 41.996689,519.25467 L 45.590455,520.19217 L 46.371709,521.12968 L 44.809202,524.72344 L 41.840438,524.56719 L 38.559173,521.12968 L 38.402922,518.47341 z M 40.902934,486.12951 L 42.934193,491.28579 L 42.777942,492.22329 L 39.965429,491.91079 L 38.246671,488.00452 L 36.527913,486.59827 L 34.184152,486.59827 L 34.027902,484.09825 L 35.74666,481.75449 L 36.840415,484.09825 L 38.246671,485.50451 L 40.902934,486.12951 z M 204.65369,586.59873 L 203.09118,585.81748 L 201.68493,582.84871 L 199.02866,581.44246 L 197.30991,580.3487 L 196.52865,581.12995 L 197.93491,583.78622 L 198.09116,587.37998 L 196.9974,587.84873 L 195.1224,585.97373 L 193.09114,584.72372 L 193.55989,586.28623 L 194.80989,588.00499 L 194.02864,588.78624 C 194.02864,588.78624 193.24739,588.47374 192.77864,587.84873 C 192.30988,587.22373 190.74738,584.56747 190.74738,584.56747 L 189.80987,582.37996 C 189.80987,582.37996 189.49737,583.62997 188.87237,583.31746 C 188.24736,583.00496 187.62236,581.91121 187.62236,581.91121 L 189.34112,580.0362 L 187.93486,578.62994 L 187.93486,573.78617 L 187.15361,573.78617 L 186.37236,577.06743 L 185.2786,577.53619 L 184.3411,573.94242 L 183.71609,570.34865 L 182.93484,569.8799 L 183.24734,575.34868 L 183.24734,576.44243 L 181.84108,575.19243 L 178.40357,569.41115 L 176.37231,568.9424 L 175.74731,565.34863 L 174.1848,562.53612 L 172.62229,561.44236 L 172.62229,559.25485 L 174.65355,558.00485 L 174.1848,557.69235 L 171.68479,558.31735 L 168.40352,555.97359 L 165.90351,553.16107 L 161.21599,550.66106 L 157.30972,548.16105 L 158.55973,545.03604 L 158.55973,543.47353 L 156.84097,545.03604 L 154.02846,546.12979 L 150.43469,545.03604 L 144.96591,542.69228 L 139.65339,542.69228 L 139.02839,543.16103 L 132.77836,539.41101 L 130.7471,539.09851 L 128.09084,533.47348 L 124.65332,533.78598 L 121.2158,535.19224 L 121.68456,539.56726 L 122.77831,536.75475 L 123.71582,537.06725 L 122.30956,541.28602 L 125.43457,538.62976 L 126.05958,540.19226 L 122.30956,544.41103 L 121.05955,544.09853 L 120.5908,542.22352 L 119.3408,541.44227 L 118.09079,542.53603 L 115.43453,540.81727 L 112.46576,542.84853 L 110.74701,544.87979 L 107.46574,546.91105 L 102.93447,546.75479 L 102.46572,544.72354 L 106.05948,544.09853 L 106.05948,542.84853 L 103.87197,542.22352 L 104.80948,539.87976 L 106.99699,536.12975 L 106.99699,534.41099 L 107.15324,533.62973 L 111.37201,531.44222 L 112.30951,532.69223 L 114.96578,532.69223 L 113.71577,530.19222 L 110.122,529.87972 L 105.27823,532.53598 L 102.93447,535.81724 L 101.21571,538.31726 L 100.12196,540.50477 L 96.059441,541.91102 L 93.090671,544.41103 L 92.778171,545.97354 L 94.965681,546.91105 L 95.746941,548.9423 L 93.090671,552.06732 L 86.840651,556.12984 L 79.340611,560.19236 L 77.309351,561.28611 L 72.153081,562.37987 L 66.996801,564.56738 L 68.715561,565.81738 L 67.309301,567.22364 L 66.840551,568.31739 L 64.184291,567.37989 L 61.059281,567.53614 L 60.278021,569.72365 L 59.340521,569.72365 L 59.653021,567.37989 L 56.215501,568.6299 L 53.402991,569.5674 L 50.121726,568.31739 L 47.309213,570.1924 L 44.184199,570.1924 L 42.152939,571.44241 L 40.590432,572.22366 L 38.559173,571.91116 L 36.059161,570.81741 L 33.871651,571.44241 L 32.934147,572.37991 L 31.371639,571.28616 L 31.371639,569.41115 L 34.340403,568.16114 L 40.434181,568.78615 L 44.652951,567.22364 L 46.68421,565.19238 L 49.496723,564.56738 L 51.215481,563.78612 L 53.871744,563.94237 L 55.434251,565.19238 L 56.371751,564.87988 L 58.559261,562.22362 L 61.528031,561.28611 L 64.809291,560.66111 L 66.059301,560.34861 L 66.684301,560.81736 L 67.465561,560.81736 L 68.715561,557.22359 L 72.621831,555.81734 L 74.496841,552.22357 L 76.684351,547.84855 L 78.246861,546.44229 L 78.559361,543.94228 L 76.996851,545.19229 L 73.715581,545.81729 L 73.090581,543.47353 L 71.840581,543.16103 L 70.903071,544.09853 L 70.746821,546.91105 L 69.340561,546.75479 L 67.934311,541.12977 L 66.684301,542.37977 L 65.590551,541.91102 L 65.278051,540.03601 L 61.371781,540.19226 L 59.340521,541.28602 L 56.840511,540.97352 L 58.246761,539.56726 L 58.715511,537.06725 L 58.090511,535.19224 L 59.496771,534.25474 L 60.746771,534.09849 L 60.121771,532.37973 L 60.121771,528.16096 L 59.184271,527.22345 L 58.403011,528.62971 L 52.465487,528.62971 L 51.059231,527.3797 L 50.434228,523.62969 L 48.402968,520.19217 L 48.402968,519.25467 L 50.434228,518.47341 L 50.590478,516.44215 L 51.684233,515.3484 L 50.90298,514.87965 L 49.652974,515.3484 L 48.559219,512.69214 L 49.496723,507.84836 L 53.871744,504.72335 L 56.371751,503.16084 L 58.246761,499.56708 L 60.903031,498.31707 L 63.403041,499.41083 L 63.715541,501.75459 L 66.059301,501.44208 L 69.184311,499.09832 L 70.746821,499.72333 L 71.684321,500.34833 L 73.246831,500.34833 L 75.434341,499.09832 L 76.215601,494.87955 C 76.215601,494.87955 76.528101,492.06704 77.153101,491.59829 C 77.778101,491.12954 78.090601,490.66079 78.090601,490.66079 L 76.996851,488.78578 L 74.496841,489.56703 L 71.371821,490.34828 L 69.496811,489.87953 L 66.059301,488.16077 L 61.215531,488.00452 L 57.778011,484.41076 L 58.246761,480.66074 L 58.871771,478.31698 L 56.840511,476.59822 L 54.965499,473.00445 L 55.434251,472.2232 L 61.996781,471.75445 L 64.028041,471.75445 L 64.965541,472.69195 L 65.590551,472.69195 L 65.434301,471.12944 L 69.184311,470.50444 L 71.684321,470.81694 L 73.090581,471.9107 L 71.684321,473.94196 L 71.215571,475.34821 L 73.871841,476.91072 L 78.715611,478.62948 L 80.434371,477.69198 L 78.246861,473.47321 L 77.309351,470.34819 L 78.246861,469.56694 L 74.965591,467.69193 L 74.496841,466.59817 L 74.965591,465.03567 L 74.184341,461.28565 L 71.371821,456.75438 L 69.028061,452.69186 L 71.840581,450.81685 L 74.965591,450.81685 L 76.684351,451.44185 L 80.746871,451.2856 L 84.340631,447.84809 L 85.434391,444.87932 L 89.028161,442.53556 L 90.590661,443.47307 L 93.246921,442.84806 L 96.840691,440.8168 L 97.934451,440.66055 L 98.871951,441.44181 L 103.24697,441.28556 L 105.90323,438.31679 L 106.99699,438.31679 L 110.4345,440.66055 L 112.30951,442.69181 L 111.84076,443.78557 L 112.46576,444.87932 L 114.02827,443.31682 L 117.77829,443.62932 L 118.09079,447.22308 L 119.9658,448.62934 L 126.84083,449.25434 L 132.93461,453.31686 L 134.34086,452.37936 L 139.34089,454.87937 L 141.37215,454.25437 L 143.24716,453.47311 L 147.93468,455.34812 L 152.15345,458.16063" id="AK_Pacific" style="fill:none;fill-opacity:0.26666697;stroke:#80b0f0;stroke-width:1pt" />
+ <ns0:g id="Frames" transform="translate(-18.307669,-131.99439)">
+ <ns0:path d="M 229.21212,631.12334 L 229.68087,688.43625 L 264.68114,723.74902 M 18.429285,562.99783 L 161.86786,563.31033 L 229.52462,631.59209 L 314.68151,631.74834 L 370.43191,685.18624 L 370.11941,723.43652" id="Inset_border" style="fill:none;fill-opacity:0.75;stroke:#000000;stroke-width:1.875;stroke-dasharray:none" ns1:nodetypes="ccccccccc" />
+ <ns0:rect height="590.28674" id="Outer_border" style="fill:none;stroke:#000000;stroke-width:2.5;stroke-dasharray:none" width="955.48639" x="19.444839" y="133.89751" />
+ </ns0:g>
+ <ns0:path d="M 822.91849,258.28198 A 4.1274123,3.62712 0 1 1 814.66366,258.28198 A 4.1274123,3.62712 0 1 1 822.91849,258.28198 z" id="DC" style="opacity:1;fill:#a02c2c;fill-opacity:1;fill-rule:evenodd;stroke:#000000;stroke-width:1;stroke-linecap:butt;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-dashoffset:0;stroke-opacity:1" transform="matrix(0.9707988,0,0,1.0018987,24.345102,-0.4278704)" ns1:cx="818.79108" ns1:cy="258.28198" ns1:rx="4.1274123" ns1:ry="3.62712" ns1:type="arc" ns2:label="#DC" />
+</ns0:svg> \ No newline at end of file
diff --git a/tests/phpunit/data/media/Wikimedia-logo.svg b/tests/phpunit/data/media/Wikimedia-logo.svg
new file mode 100644
index 00000000..1e17acbe
--- /dev/null
+++ b/tests/phpunit/data/media/Wikimedia-logo.svg
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
+<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Wikimedia logo" viewBox="-599 -599 1198 1198" width="1024" height="1024">
+<defs>
+ <clipPath id="mask">
+ <path d="M 47.5,-87.5 v 425 h -95 v -425 l -552,-552 v 1250 h 1199 v -1250 z"/>
+ </clipPath>
+</defs>
+<g clip-path="url(#mask)">
+ <circle id="green parts" fill="#396" r="336.5"/>
+ <circle id="blue arc" fill="none" stroke="#069" r="480.25" stroke-width="135.5"/>
+</g>
+<circle fill="#900" cy="-379.5" r="184.5" id="red circle"/>
+</svg> \ No newline at end of file
diff --git a/tests/phpunit/data/media/Xmp-exif-multilingual_test.jpg b/tests/phpunit/data/media/Xmp-exif-multilingual_test.jpg
new file mode 100644
index 00000000..f7b23025
--- /dev/null
+++ b/tests/phpunit/data/media/Xmp-exif-multilingual_test.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/animated-xmp.gif b/tests/phpunit/data/media/animated-xmp.gif
new file mode 100644
index 00000000..fcba079d
--- /dev/null
+++ b/tests/phpunit/data/media/animated-xmp.gif
Binary files differ
diff --git a/tests/phpunit/data/media/animated.gif b/tests/phpunit/data/media/animated.gif
new file mode 100644
index 00000000..a8f248b3
--- /dev/null
+++ b/tests/phpunit/data/media/animated.gif
Binary files differ
diff --git a/tests/phpunit/data/media/broken_exif_date.jpg b/tests/phpunit/data/media/broken_exif_date.jpg
new file mode 100644
index 00000000..82f62f57
--- /dev/null
+++ b/tests/phpunit/data/media/broken_exif_date.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/exif-gps.jpg b/tests/phpunit/data/media/exif-gps.jpg
new file mode 100644
index 00000000..f99b484d
--- /dev/null
+++ b/tests/phpunit/data/media/exif-gps.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/exif-user-comment.jpg b/tests/phpunit/data/media/exif-user-comment.jpg
new file mode 100644
index 00000000..9f23966a
--- /dev/null
+++ b/tests/phpunit/data/media/exif-user-comment.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/greyscale-na-png.png b/tests/phpunit/data/media/greyscale-na-png.png
new file mode 100644
index 00000000..4a4b7452
--- /dev/null
+++ b/tests/phpunit/data/media/greyscale-na-png.png
Binary files differ
diff --git a/tests/phpunit/data/media/greyscale-png.png b/tests/phpunit/data/media/greyscale-png.png
new file mode 100644
index 00000000..340a67b4
--- /dev/null
+++ b/tests/phpunit/data/media/greyscale-png.png
Binary files differ
diff --git a/tests/phpunit/data/media/iptc-timetest-invalid.jpg b/tests/phpunit/data/media/iptc-timetest-invalid.jpg
new file mode 100644
index 00000000..b03e192a
--- /dev/null
+++ b/tests/phpunit/data/media/iptc-timetest-invalid.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/iptc-timetest.jpg b/tests/phpunit/data/media/iptc-timetest.jpg
new file mode 100644
index 00000000..db9932ba
--- /dev/null
+++ b/tests/phpunit/data/media/iptc-timetest.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/jpeg-comment-binary.jpg b/tests/phpunit/data/media/jpeg-comment-binary.jpg
new file mode 100644
index 00000000..b467fe43
--- /dev/null
+++ b/tests/phpunit/data/media/jpeg-comment-binary.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/jpeg-comment-iso8859-1.jpg b/tests/phpunit/data/media/jpeg-comment-iso8859-1.jpg
new file mode 100644
index 00000000..d9ffbac1
--- /dev/null
+++ b/tests/phpunit/data/media/jpeg-comment-iso8859-1.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/jpeg-comment-multiple.jpg b/tests/phpunit/data/media/jpeg-comment-multiple.jpg
new file mode 100644
index 00000000..363c7385
--- /dev/null
+++ b/tests/phpunit/data/media/jpeg-comment-multiple.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/jpeg-comment-utf.jpg b/tests/phpunit/data/media/jpeg-comment-utf.jpg
new file mode 100644
index 00000000..d6d35b4b
--- /dev/null
+++ b/tests/phpunit/data/media/jpeg-comment-utf.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/jpeg-iptc-bad-hash.jpg b/tests/phpunit/data/media/jpeg-iptc-bad-hash.jpg
new file mode 100644
index 00000000..6464c5b8
--- /dev/null
+++ b/tests/phpunit/data/media/jpeg-iptc-bad-hash.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/jpeg-iptc-good-hash.jpg b/tests/phpunit/data/media/jpeg-iptc-good-hash.jpg
new file mode 100644
index 00000000..ef970854
--- /dev/null
+++ b/tests/phpunit/data/media/jpeg-iptc-good-hash.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/jpeg-padding-even.jpg b/tests/phpunit/data/media/jpeg-padding-even.jpg
new file mode 100644
index 00000000..c83c66bd
--- /dev/null
+++ b/tests/phpunit/data/media/jpeg-padding-even.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/jpeg-padding-odd.jpg b/tests/phpunit/data/media/jpeg-padding-odd.jpg
new file mode 100644
index 00000000..25b93308
--- /dev/null
+++ b/tests/phpunit/data/media/jpeg-padding-odd.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/jpeg-xmp-alt.jpg b/tests/phpunit/data/media/jpeg-xmp-alt.jpg
new file mode 100644
index 00000000..0e2c3f63
--- /dev/null
+++ b/tests/phpunit/data/media/jpeg-xmp-alt.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/jpeg-xmp-psir.jpg b/tests/phpunit/data/media/jpeg-xmp-psir.jpg
new file mode 100644
index 00000000..4d19fcbe
--- /dev/null
+++ b/tests/phpunit/data/media/jpeg-xmp-psir.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/jpeg-xmp-psir.xmp b/tests/phpunit/data/media/jpeg-xmp-psir.xmp
new file mode 100644
index 00000000..fee6ee18
--- /dev/null
+++ b/tests/phpunit/data/media/jpeg-xmp-psir.xmp
@@ -0,0 +1,35 @@
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 7.30'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
+
+ <rdf:Description rdf:about=''
+ xmlns:dc='http://purl.org/dc/elements/1.1/'>
+ <dc:identifier>jpeg-xmp-psir.jpg</dc:identifier>
+ </rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end='w'?> \ No newline at end of file
diff --git a/tests/phpunit/data/media/landscape-plain.jpg b/tests/phpunit/data/media/landscape-plain.jpg
new file mode 100644
index 00000000..cf296555
--- /dev/null
+++ b/tests/phpunit/data/media/landscape-plain.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/nonanimated.gif b/tests/phpunit/data/media/nonanimated.gif
new file mode 100644
index 00000000..9e52a7f0
--- /dev/null
+++ b/tests/phpunit/data/media/nonanimated.gif
Binary files differ
diff --git a/tests/phpunit/data/media/portrait-rotated.jpg b/tests/phpunit/data/media/portrait-rotated.jpg
new file mode 100644
index 00000000..445feaed
--- /dev/null
+++ b/tests/phpunit/data/media/portrait-rotated.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/rgb-na-png.png b/tests/phpunit/data/media/rgb-na-png.png
new file mode 100644
index 00000000..2f2a5ca0
--- /dev/null
+++ b/tests/phpunit/data/media/rgb-na-png.png
Binary files differ
diff --git a/tests/phpunit/data/media/rgb-png.png b/tests/phpunit/data/media/rgb-png.png
new file mode 100644
index 00000000..6f40cc92
--- /dev/null
+++ b/tests/phpunit/data/media/rgb-png.png
Binary files differ
diff --git a/tests/phpunit/data/media/test.jpg b/tests/phpunit/data/media/test.jpg
new file mode 100644
index 00000000..cb084253
--- /dev/null
+++ b/tests/phpunit/data/media/test.jpg
Binary files differ
diff --git a/tests/phpunit/data/media/test.tiff b/tests/phpunit/data/media/test.tiff
new file mode 100644
index 00000000..6a36f760
--- /dev/null
+++ b/tests/phpunit/data/media/test.tiff
Binary files differ
diff --git a/tests/phpunit/data/media/xmp.png b/tests/phpunit/data/media/xmp.png
new file mode 100644
index 00000000..6b9f7a87
--- /dev/null
+++ b/tests/phpunit/data/media/xmp.png
Binary files differ
diff --git a/tests/phpunit/data/xmp/1.result.php b/tests/phpunit/data/xmp/1.result.php
new file mode 100644
index 00000000..beead1bd
--- /dev/null
+++ b/tests/phpunit/data/xmp/1.result.php
@@ -0,0 +1,8 @@
+<?php
+
+$result = array( 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ 'Flash' => '9'
+ )
+);
diff --git a/tests/phpunit/data/xmp/1.xmp b/tests/phpunit/data/xmp/1.xmp
new file mode 100644
index 00000000..66e15427
--- /dev/null
+++ b/tests/phpunit/data/xmp/1.xmp
@@ -0,0 +1,11 @@
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core
+ 4.1.3-c001 49.282696, Mon Apr 02 2007 21:16:10 ">
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/"
+ exif:DigitalZoomRatio="0/10">
+<exif:Flash rdf:parseType='Resource'>
+<exif:Fired>True</exif:Fired> <exif:Return>0</exif:Return> <exif:Mode>1</exif:Mode> <exif:Function>False</exif:Function> <exif:RedEyeMode>False</exif:RedEyeMode></exif:Flash> </rdf:Description> </rdf:RDF> </x:xmpmeta>
+
+<?xpacket end="w"?>
diff --git a/tests/phpunit/data/xmp/2.result.php b/tests/phpunit/data/xmp/2.result.php
new file mode 100644
index 00000000..beead1bd
--- /dev/null
+++ b/tests/phpunit/data/xmp/2.result.php
@@ -0,0 +1,8 @@
+<?php
+
+$result = array( 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ 'Flash' => '9'
+ )
+);
diff --git a/tests/phpunit/data/xmp/2.xmp b/tests/phpunit/data/xmp/2.xmp
new file mode 100644
index 00000000..0fa6a894
--- /dev/null
+++ b/tests/phpunit/data/xmp/2.xmp
@@ -0,0 +1,12 @@
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core
+ 4.1.3-c001 49.282696, Mon Apr 02 2007 21:16:10 ">
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/"
+ exif:DigitalZoomRatio="0/10">
+<exif:Flash>
+<rdf:Description exif:Return="0">
+<exif:Fired>True</exif:Fired> <exif:Mode>1</exif:Mode> <exif:Function>False</exif:Function> <exif:RedEyeMode>False</exif:RedEyeMode></rdf:Description></exif:Flash> </rdf:Description> </rdf:RDF> </x:xmpmeta>
+
+<?xpacket end="w"?>
diff --git a/tests/phpunit/data/xmp/3-invalid.result.php b/tests/phpunit/data/xmp/3-invalid.result.php
new file mode 100644
index 00000000..5741b2c9
--- /dev/null
+++ b/tests/phpunit/data/xmp/3-invalid.result.php
@@ -0,0 +1,7 @@
+<?php
+
+$result = array( 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ )
+);
diff --git a/tests/phpunit/data/xmp/3-invalid.xmp b/tests/phpunit/data/xmp/3-invalid.xmp
new file mode 100644
index 00000000..2425e254
--- /dev/null
+++ b/tests/phpunit/data/xmp/3-invalid.xmp
@@ -0,0 +1,31 @@
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core
+ 4.1.3-c001 49.282696, Mon Apr 02 2007 21:16:10 ">
+<!--
+This file has an invalid flash compoenent (one of the values are a qualifier)
+-->
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/"
+>
+<exif:DigitalZoomRatio>
+
+<rdf:Description>
+<rdf:value>
+0/10
+</rdf:value>
+<exif:foobarbaz>fred</exif:foobarbaz>
+
+</rdf:Description>
+
+</exif:DigitalZoomRatio>
+
+<exif:Flash>
+<rdf:Description exif:Return="0">
+<exif:Mode><rdf:Description>
+<rdf:value>1</rdf:value>
+<exif:Fired>False</exif:Fired> <!-- qualifier. should be ignored-->
+</rdf:Description>
+</exif:Mode> <exif:Function>False</exif:Function> <exif:RedEyeMode>False</exif:RedEyeMode></rdf:Description></exif:Flash> </rdf:Description> </rdf:RDF> </x:xmpmeta>
+
+<?xpacket end="w"?>
diff --git a/tests/phpunit/data/xmp/3.result.php b/tests/phpunit/data/xmp/3.result.php
new file mode 100644
index 00000000..beead1bd
--- /dev/null
+++ b/tests/phpunit/data/xmp/3.result.php
@@ -0,0 +1,8 @@
+<?php
+
+$result = array( 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ 'Flash' => '9'
+ )
+);
diff --git a/tests/phpunit/data/xmp/3.xmp b/tests/phpunit/data/xmp/3.xmp
new file mode 100644
index 00000000..2cf19883
--- /dev/null
+++ b/tests/phpunit/data/xmp/3.xmp
@@ -0,0 +1,29 @@
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core
+ 4.1.3-c001 49.282696, Mon Apr 02 2007 21:16:10 ">
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/"
+>
+<exif:DigitalZoomRatio>
+
+<rdf:Description>
+<rdf:value>
+0/10
+</rdf:value>
+<exif:foobarbaz>fred</exif:foobarbaz>
+
+</rdf:Description>
+
+</exif:DigitalZoomRatio>
+
+<exif:Flash>
+<rdf:Description exif:Return="0">
+<exif:Fired>True</exif:Fired>
+<exif:Mode><rdf:Description>
+<rdf:value>1</rdf:value>
+<exif:Fired>False</exif:Fired> <!-- qualifier. should be ignored-->
+</rdf:Description>
+</exif:Mode> <exif:Function>False</exif:Function> <exif:RedEyeMode>False</exif:RedEyeMode></rdf:Description></exif:Flash> </rdf:Description> </rdf:RDF> </x:xmpmeta>
+
+<?xpacket end="w"?>
diff --git a/tests/phpunit/data/xmp/4.result.php b/tests/phpunit/data/xmp/4.result.php
new file mode 100644
index 00000000..5741b2c9
--- /dev/null
+++ b/tests/phpunit/data/xmp/4.result.php
@@ -0,0 +1,7 @@
+<?php
+
+$result = array( 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ )
+);
diff --git a/tests/phpunit/data/xmp/4.xmp b/tests/phpunit/data/xmp/4.xmp
new file mode 100644
index 00000000..29eb614b
--- /dev/null
+++ b/tests/phpunit/data/xmp/4.xmp
@@ -0,0 +1,22 @@
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core
+ 4.1.3-c001 49.282696, Mon Apr 02 2007 21:16:10 ">
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<!-- Valid output is just the DigitalZoomRatio
+as the flash is a qualifier
+-->
+<rdf:Description
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/">
+ <exif:DigitalZoomRatio>
+<rdf:Description>
+<rdf:value>
+0/10
+</rdf:value>
+<exif:Flash rdf:parseType='Resource'>
+<exif:Fired>True</exif:Fired> <exif:Return>0</exif:Return> <exif:Mode>1</exif:Mode> <exif:Function>False</exif:Function> <exif:RedEyeMode>False</exif:RedEyeMode></exif:Flash>
+</rdf:Description>
+</exif:DigitalZoomRatio>
+</rdf:Description> </rdf:RDF> </x:xmpmeta>
+
+
+<?xpacket end="w"?>
diff --git a/tests/phpunit/data/xmp/5.result.php b/tests/phpunit/data/xmp/5.result.php
new file mode 100644
index 00000000..5741b2c9
--- /dev/null
+++ b/tests/phpunit/data/xmp/5.result.php
@@ -0,0 +1,7 @@
+<?php
+
+$result = array( 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ )
+);
diff --git a/tests/phpunit/data/xmp/5.xmp b/tests/phpunit/data/xmp/5.xmp
new file mode 100644
index 00000000..3cc61d68
--- /dev/null
+++ b/tests/phpunit/data/xmp/5.xmp
@@ -0,0 +1,16 @@
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core
+ 4.1.3-c001 49.282696, Mon Apr 02 2007 21:16:10 ">
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/">
+ <exif:DigitalZoomRatio>
+<rdf:Description rdf:value="0/10">
+<exif:Flash rdf:parseType='Resource'>
+<exif:Fired>True</exif:Fired> <exif:Return>0</exif:Return> <exif:Mode>1</exif:Mode> <exif:Function>False</exif:Function> <exif:RedEyeMode>False</exif:RedEyeMode></exif:Flash>
+</rdf:Description>
+</exif:DigitalZoomRatio>
+</rdf:Description> </rdf:RDF> </x:xmpmeta>
+
+
+<?xpacket end="w"?>
diff --git a/tests/phpunit/data/xmp/6.result.php b/tests/phpunit/data/xmp/6.result.php
new file mode 100644
index 00000000..beead1bd
--- /dev/null
+++ b/tests/phpunit/data/xmp/6.result.php
@@ -0,0 +1,8 @@
+<?php
+
+$result = array( 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ 'Flash' => '9'
+ )
+);
diff --git a/tests/phpunit/data/xmp/6.xmp b/tests/phpunit/data/xmp/6.xmp
new file mode 100644
index 00000000..f435ab23
--- /dev/null
+++ b/tests/phpunit/data/xmp/6.xmp
@@ -0,0 +1,18 @@
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core
+ 4.1.3-c001 49.282696, Mon Apr 02 2007 21:16:10 ">
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/">
+<exif:DigitalZoomRatio>
+0/10
+</exif:DigitalZoomRatio>
+</rdf:Description>
+<rdf:Description
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/">
+
+<exif:Flash rdf:parseType='Resource'>
+<exif:Fired>True</exif:Fired> <exif:Return>0</exif:Return> <exif:Mode>1</exif:Mode> <exif:Function>False</exif:Function> <exif:RedEyeMode>False</exif:RedEyeMode></exif:Flash> </rdf:Description> </rdf:RDF> </x:xmpmeta>
+
+<?xpacket end="w"?>
diff --git a/tests/phpunit/data/xmp/7.result.php b/tests/phpunit/data/xmp/7.result.php
new file mode 100644
index 00000000..0efcfa36
--- /dev/null
+++ b/tests/phpunit/data/xmp/7.result.php
@@ -0,0 +1,52 @@
+<?php
+$result = array (
+ 'xmp-exif' =>
+ array (
+ 'CameraOwnerName' => 'Me!',
+ ),
+ 'xmp-general' =>
+ array (
+ 'LicenseUrl' => 'http://creativecommons.com/cc-by-2.9',
+ 'ImageDescription' =>
+ array (
+ 'x-default' => 'Test image for the cc: xmp: xmpRights: namespaces in xmp',
+ '_type' => 'lang',
+ ),
+ 'ObjectName' =>
+ array (
+ 'x-default' => 'xmp core/xmp rights/cc ns test',
+ '_type' => 'lang',
+ ),
+ 'DateTimeDigitized' => '2005:04:03',
+ 'Software' => 'The one true editor: Vi (ok i used gimp)',
+ 'Identifier' =>
+ array (
+ 0 => 'http://example.com/identifierurl',
+ 1 => 'urn:sha1:342524abcdef',
+ '_type' => 'ul',
+ ),
+ 'Label' => 'Test image',
+ 'DateTimeMetadata' => '2011:05:12',
+ 'DateTime' => '2007:03:04 06:34:10',
+ 'Nickname' => 'My little xmp test image',
+ 'Rating' => '5',
+ 'RightsCertificate' => 'http://example.com/rights-certificate/',
+ 'Copyrighted' => 'True',
+ 'CopyrightOwner' =>
+ array (
+ 0 => 'Bawolff is copyright owner',
+ '_type' => 'ul',
+ ),
+ 'UsageTerms' =>
+ array (
+ 'x-default' => 'do whatever you want',
+ 'en-gb' => 'Do whatever you want in british english',
+ '_type' => 'lang',
+ ),
+ 'WebStatement' => 'http://example.com/web_statement',
+ ),
+ 'xmp-deprecated' =>
+ array (
+ 'Identifier' => 'http://example.com/identifierurl/wrong',
+ ),
+);
diff --git a/tests/phpunit/data/xmp/7.xmp b/tests/phpunit/data/xmp/7.xmp
new file mode 100644
index 00000000..e18e13d9
--- /dev/null
+++ b/tests/phpunit/data/xmp/7.xmp
@@ -0,0 +1,67 @@
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 7.30'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
+
+ <rdf:Description rdf:about=''
+ xmlns:aux='http://ns.adobe.com/exif/1.0/aux/'>
+ <aux:OwnerName>Me!</aux:OwnerName>
+ </rdf:Description>
+
+ <rdf:Description rdf:about=''
+ xmlns:cc='http://creativecommons.org/ns#'>
+ <cc:license>http://creativecommons.com/cc-by-2.9</cc:license>
+ </rdf:Description>
+
+ <rdf:Description rdf:about=''
+ xmlns:dc='http://purl.org/dc/elements/1.1/'>
+ <dc:description>
+ <rdf:Alt>
+ <rdf:li xml:lang='x-default'>Test image for the cc: xmp: xmpRights: namespaces in xmp</rdf:li>
+ </rdf:Alt>
+ </dc:description>
+ <dc:identifier>http://example.com/identifierurl/wrong</dc:identifier>
+ <dc:title>
+ <rdf:Alt>
+ <rdf:li xml:lang='x-default'>xmp core/xmp rights/cc ns test</rdf:li>
+ </rdf:Alt>
+ </dc:title>
+ </rdf:Description>
+
+ <rdf:Description rdf:about=''
+ xmlns:xmp='http://ns.adobe.com/xap/1.0/'>
+ <xmp:CreateDate>2005-04-03</xmp:CreateDate>
+ <xmp:CreatorTool>The one true editor: Vi (ok i used gimp)</xmp:CreatorTool>
+ <xmp:Identifier>
+ <rdf:Bag>
+ <rdf:li>http://example.com/identifierurl
+</rdf:li>
+ <rdf:li>urn:sha1:342524abcdef</rdf:li>
+ </rdf:Bag>
+ </xmp:Identifier>
+ <xmp:Label>Test image</xmp:Label>
+ <xmp:MetadataDate>2011-05-12</xmp:MetadataDate>
+ <xmp:ModifyDate>2007-03-04T12:34:10-06:00</xmp:ModifyDate>
+ <xmp:Nickname>My little xmp test image</xmp:Nickname>
+ <xmp:Rating>7</xmp:Rating>
+ </rdf:Description>
+
+ <rdf:Description rdf:about=''
+ xmlns:xmpRights='http://ns.adobe.com/xap/1.0/rights/'>
+ <xmpRights:Certificate>http://example.com/rights-certificate/</xmpRights:Certificate>
+ <xmpRights:Marked>True</xmpRights:Marked>
+ <xmpRights:Owner>
+ <rdf:Bag>
+ <rdf:li>Bawolff is copyright owner</rdf:li>
+ </rdf:Bag>
+ </xmpRights:Owner>
+ <xmpRights:UsageTerms>
+ <rdf:Alt>
+ <rdf:li xml:lang='x-default'>do whatever you want</rdf:li>
+ <rdf:li xml:lang='en-GB'>Do whatever you want in british english</rdf:li>
+ </rdf:Alt>
+ </xmpRights:UsageTerms>
+ <xmpRights:WebStatement>http://example.com/web_statement</xmpRights:WebStatement>
+ </rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+<?xpacket end='r'?>
diff --git a/tests/phpunit/data/xmp/README b/tests/phpunit/data/xmp/README
new file mode 100644
index 00000000..bd949176
--- /dev/null
+++ b/tests/phpunit/data/xmp/README
@@ -0,0 +1,3 @@
+This directory contains a bunch of XMP files
+as well as a bunch of php files containing what the
+parsed version of the XMP looks like.
diff --git a/tests/phpunit/data/xmp/bag-for-seq.result.php b/tests/phpunit/data/xmp/bag-for-seq.result.php
new file mode 100644
index 00000000..b5244f88
--- /dev/null
+++ b/tests/phpunit/data/xmp/bag-for-seq.result.php
@@ -0,0 +1,10 @@
+<?php
+
+$result = array(
+ 'xmp-general' => array(
+ 'Artist' => array(
+ '_type' => 'ul',
+ 0 => 'The author',
+ )
+ )
+);
diff --git a/tests/phpunit/data/xmp/bag-for-seq.xmp b/tests/phpunit/data/xmp/bag-for-seq.xmp
new file mode 100644
index 00000000..c6ed5b7c
--- /dev/null
+++ b/tests/phpunit/data/xmp/bag-for-seq.xmp
@@ -0,0 +1 @@
+<?xpacket begin=""?> <x:xmpmeta xmlns:x="adobe:ns:meta/"> <rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"> <rdf:Description rdf:about="" xmlns:dc="http://purl.org/dc/elements/1.1/"> <dc:creator> <rdf:Bag> <rdf:li>The author</rdf:li> </rdf:Bag> </dc:creator> </rdf:Description> </rdf:RDF> </x:xmpmeta>
diff --git a/tests/phpunit/data/xmp/flash.result.php b/tests/phpunit/data/xmp/flash.result.php
new file mode 100644
index 00000000..018c0ac1
--- /dev/null
+++ b/tests/phpunit/data/xmp/flash.result.php
@@ -0,0 +1,8 @@
+<?php
+
+$result = array( 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ 'Flash' => '127'
+ )
+);
diff --git a/tests/phpunit/data/xmp/flash.xmp b/tests/phpunit/data/xmp/flash.xmp
new file mode 100644
index 00000000..b1373cc2
--- /dev/null
+++ b/tests/phpunit/data/xmp/flash.xmp
@@ -0,0 +1,11 @@
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core
+ 4.1.3-c001 49.282696, Mon Apr 02 2007 21:16:10 ">
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/"
+ exif:DigitalZoomRatio="0/10">
+<exif:Flash rdf:parseType='Resource'>
+<exif:Fired>True</exif:Fired> <exif:Return>3</exif:Return> <exif:Mode>3</exif:Mode> <exif:Function>True</exif:Function> <exif:RedEyeMode>True</exif:RedEyeMode></exif:Flash> </rdf:Description> </rdf:RDF> </x:xmpmeta>
+
+<?xpacket end="w"?>
diff --git a/tests/phpunit/data/xmp/invalid-child-not-struct.result.php b/tests/phpunit/data/xmp/invalid-child-not-struct.result.php
new file mode 100644
index 00000000..5741b2c9
--- /dev/null
+++ b/tests/phpunit/data/xmp/invalid-child-not-struct.result.php
@@ -0,0 +1,7 @@
+<?php
+
+$result = array( 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ )
+);
diff --git a/tests/phpunit/data/xmp/invalid-child-not-struct.xmp b/tests/phpunit/data/xmp/invalid-child-not-struct.xmp
new file mode 100644
index 00000000..6aa0c10b
--- /dev/null
+++ b/tests/phpunit/data/xmp/invalid-child-not-struct.xmp
@@ -0,0 +1,12 @@
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core
+ 4.1.3-c001 49.282696, Mon Apr 02 2007 21:16:10 ">
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/"
+ exif:DigitalZoomRatio="0/10">
+<exif:Fired>True</exif:Fired> <exif:Return>0</exif:Return> <exif:Mode>1</exif:Mode> <exif:Function>False</exif:Function> <exif:RedEyeMode>False</exif:RedEyeMode>
+
+ </rdf:Description> </rdf:RDF> </x:xmpmeta>
+
+<?xpacket end="w"?>
diff --git a/tests/phpunit/data/xmp/no-namespace.result.php b/tests/phpunit/data/xmp/no-namespace.result.php
new file mode 100644
index 00000000..3ff69201
--- /dev/null
+++ b/tests/phpunit/data/xmp/no-namespace.result.php
@@ -0,0 +1,7 @@
+<?php
+
+$result = array( 'xmp-exif' =>
+ array(
+ 'FNumber' => '28/10',
+ )
+);
diff --git a/tests/phpunit/data/xmp/no-namespace.xmp b/tests/phpunit/data/xmp/no-namespace.xmp
new file mode 100644
index 00000000..7d6cdb2f
--- /dev/null
+++ b/tests/phpunit/data/xmp/no-namespace.xmp
@@ -0,0 +1,11 @@
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<!-- Testing it handles random non-namespaced properties in files ok.
+ Some older photoshop's did not include the rdf: prefix on about. -->
+<rdf:Description
+ about=""
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/"
+ exif:FNumber="28/10">
+</rdf:Description>
+</rdf:RDF>
+<?xpacket end="w"?>
diff --git a/tests/phpunit/data/xmp/no-recognized-props.result.php b/tests/phpunit/data/xmp/no-recognized-props.result.php
new file mode 100644
index 00000000..b3ca9f5a
--- /dev/null
+++ b/tests/phpunit/data/xmp/no-recognized-props.result.php
@@ -0,0 +1,2 @@
+<?php
+$result = array();
diff --git a/tests/phpunit/data/xmp/no-recognized-props.xmp b/tests/phpunit/data/xmp/no-recognized-props.xmp
new file mode 100644
index 00000000..54e80901
--- /dev/null
+++ b/tests/phpunit/data/xmp/no-recognized-props.xmp
@@ -0,0 +1,8 @@
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/not-exif-namespace"
+ exif:FNumber="2/10">
+</rdf:Description>
+</rdf:RDF>
+<?xpacket end="w"?>
diff --git a/tests/phpunit/data/xmp/utf16BE.result.php b/tests/phpunit/data/xmp/utf16BE.result.php
new file mode 100644
index 00000000..ac7ea506
--- /dev/null
+++ b/tests/phpunit/data/xmp/utf16BE.result.php
@@ -0,0 +1,12 @@
+<?php
+
+$result = array(
+ 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ ),
+ 'xmp-general' =>
+ array(
+ 'Label' => 'ôŠ¯'
+ ),
+);
diff --git a/tests/phpunit/data/xmp/utf16BE.xmp b/tests/phpunit/data/xmp/utf16BE.xmp
new file mode 100644
index 00000000..0cf60d60
--- /dev/null
+++ b/tests/phpunit/data/xmp/utf16BE.xmp
Binary files differ
diff --git a/tests/phpunit/data/xmp/utf16LE.result.php b/tests/phpunit/data/xmp/utf16LE.result.php
new file mode 100644
index 00000000..ac7ea506
--- /dev/null
+++ b/tests/phpunit/data/xmp/utf16LE.result.php
@@ -0,0 +1,12 @@
+<?php
+
+$result = array(
+ 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ ),
+ 'xmp-general' =>
+ array(
+ 'Label' => 'ôŠ¯'
+ ),
+);
diff --git a/tests/phpunit/data/xmp/utf16LE.xmp b/tests/phpunit/data/xmp/utf16LE.xmp
new file mode 100644
index 00000000..66d71f4c
--- /dev/null
+++ b/tests/phpunit/data/xmp/utf16LE.xmp
Binary files differ
diff --git a/tests/phpunit/data/xmp/utf32BE.result.php b/tests/phpunit/data/xmp/utf32BE.result.php
new file mode 100644
index 00000000..ac7ea506
--- /dev/null
+++ b/tests/phpunit/data/xmp/utf32BE.result.php
@@ -0,0 +1,12 @@
+<?php
+
+$result = array(
+ 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ ),
+ 'xmp-general' =>
+ array(
+ 'Label' => 'ôŠ¯'
+ ),
+);
diff --git a/tests/phpunit/data/xmp/utf32BE.xmp b/tests/phpunit/data/xmp/utf32BE.xmp
new file mode 100644
index 00000000..06afdf92
--- /dev/null
+++ b/tests/phpunit/data/xmp/utf32BE.xmp
Binary files differ
diff --git a/tests/phpunit/data/xmp/utf32LE.result.php b/tests/phpunit/data/xmp/utf32LE.result.php
new file mode 100644
index 00000000..ac7ea506
--- /dev/null
+++ b/tests/phpunit/data/xmp/utf32LE.result.php
@@ -0,0 +1,12 @@
+<?php
+
+$result = array(
+ 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ ),
+ 'xmp-general' =>
+ array(
+ 'Label' => 'ôŠ¯'
+ ),
+);
diff --git a/tests/phpunit/data/xmp/utf32LE.xmp b/tests/phpunit/data/xmp/utf32LE.xmp
new file mode 100644
index 00000000..bf2097fe
--- /dev/null
+++ b/tests/phpunit/data/xmp/utf32LE.xmp
Binary files differ
diff --git a/tests/phpunit/data/xmp/xmpExt.result.php b/tests/phpunit/data/xmp/xmpExt.result.php
new file mode 100644
index 00000000..beead1bd
--- /dev/null
+++ b/tests/phpunit/data/xmp/xmpExt.result.php
@@ -0,0 +1,8 @@
+<?php
+
+$result = array( 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ 'Flash' => '9'
+ )
+);
diff --git a/tests/phpunit/data/xmp/xmpExt.xmp b/tests/phpunit/data/xmp/xmpExt.xmp
new file mode 100644
index 00000000..da0383f8
--- /dev/null
+++ b/tests/phpunit/data/xmp/xmpExt.xmp
@@ -0,0 +1,13 @@
+<?xpacket begin="" id="W5M0MpCehiHzreSzNTczkc9d"?> <x:xmpmeta xmlns:x="adobe:ns:meta/" x:xmptk="Adobe XMP Core
+ 4.1.3-c001 49.282696, Mon Apr 02 2007 21:16:10 ">
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/"
+ xmlns:xmpNote="http://ns.adobe.com/xmp/note/"
+ exif:DigitalZoomRatio="0/10"
+ xmpNote:HasExtendedXMP="28C74E0AC2D796886759006FBE2E57B7">
+<exif:Flash rdf:parseType='Resource'>
+<exif:Fired>True</exif:Fired> <exif:Return>0</exif:Return> <exif:Mode>1</exif:Mode> <exif:Function>False</exif:Function> <exif:RedEyeMode>False</exif:RedEyeMode></exif:Flash> </rdf:Description> </rdf:RDF> </x:xmpmeta>
+
+<?xpacket end="w"?>
diff --git a/tests/phpunit/data/xmp/xmpExt2.xmp b/tests/phpunit/data/xmp/xmpExt2.xmp
new file mode 100644
index 00000000..060abb2c
--- /dev/null
+++ b/tests/phpunit/data/xmp/xmpExt2.xmp
@@ -0,0 +1,8 @@
+<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+<rdf:Description
+ rdf:about=""
+ xmlns:exif="http://ns.adobe.com/exif/1.0/"
+ exif:FNumber="2/10">
+</rdf:Description>
+</rdf:RDF>
+<?xpacket end="w"?>
diff --git a/tests/phpunit/data/zip/cd-gap.zip b/tests/phpunit/data/zip/cd-gap.zip
new file mode 100644
index 00000000..b5ae6ccd
--- /dev/null
+++ b/tests/phpunit/data/zip/cd-gap.zip
Binary files differ
diff --git a/tests/phpunit/data/zip/cd-truncated.zip b/tests/phpunit/data/zip/cd-truncated.zip
new file mode 100644
index 00000000..4d40d7d4
--- /dev/null
+++ b/tests/phpunit/data/zip/cd-truncated.zip
Binary files differ
diff --git a/tests/phpunit/data/zip/class-trailing-null.zip b/tests/phpunit/data/zip/class-trailing-null.zip
new file mode 100644
index 00000000..31dcf3d8
--- /dev/null
+++ b/tests/phpunit/data/zip/class-trailing-null.zip
Binary files differ
diff --git a/tests/phpunit/data/zip/class-trailing-slash.zip b/tests/phpunit/data/zip/class-trailing-slash.zip
new file mode 100644
index 00000000..9eb1f037
--- /dev/null
+++ b/tests/phpunit/data/zip/class-trailing-slash.zip
Binary files differ
diff --git a/tests/phpunit/data/zip/class.zip b/tests/phpunit/data/zip/class.zip
new file mode 100644
index 00000000..98a625b7
--- /dev/null
+++ b/tests/phpunit/data/zip/class.zip
Binary files differ
diff --git a/tests/phpunit/data/zip/empty.zip b/tests/phpunit/data/zip/empty.zip
new file mode 100644
index 00000000..15cb0ecb
--- /dev/null
+++ b/tests/phpunit/data/zip/empty.zip
Binary files differ
diff --git a/tests/phpunit/data/zip/looks-like-zip64.zip b/tests/phpunit/data/zip/looks-like-zip64.zip
new file mode 100644
index 00000000..7428cddd
--- /dev/null
+++ b/tests/phpunit/data/zip/looks-like-zip64.zip
Binary files differ
diff --git a/tests/phpunit/data/zip/nosig.zip b/tests/phpunit/data/zip/nosig.zip
new file mode 100644
index 00000000..a22c73a4
--- /dev/null
+++ b/tests/phpunit/data/zip/nosig.zip
Binary files differ
diff --git a/tests/phpunit/data/zip/split.zip b/tests/phpunit/data/zip/split.zip
new file mode 100644
index 00000000..6984ae6d
--- /dev/null
+++ b/tests/phpunit/data/zip/split.zip
Binary files differ
diff --git a/tests/phpunit/data/zip/trail.zip b/tests/phpunit/data/zip/trail.zip
new file mode 100644
index 00000000..50bcea12
--- /dev/null
+++ b/tests/phpunit/data/zip/trail.zip
Binary files differ
diff --git a/tests/phpunit/data/zip/wrong-cd-start-disk.zip b/tests/phpunit/data/zip/wrong-cd-start-disk.zip
new file mode 100644
index 00000000..59b45938
--- /dev/null
+++ b/tests/phpunit/data/zip/wrong-cd-start-disk.zip
Binary files differ
diff --git a/tests/phpunit/data/zip/wrong-central-entry-sig.zip b/tests/phpunit/data/zip/wrong-central-entry-sig.zip
new file mode 100644
index 00000000..05329b43
--- /dev/null
+++ b/tests/phpunit/data/zip/wrong-central-entry-sig.zip
Binary files differ
diff --git a/tests/phpunit/includes/ArticleTablesTest.php b/tests/phpunit/includes/ArticleTablesTest.php
new file mode 100644
index 00000000..01776c95
--- /dev/null
+++ b/tests/phpunit/includes/ArticleTablesTest.php
@@ -0,0 +1,34 @@
+<?php
+
+/**
+ * @group Database
+ */
+class ArticleTablesTest extends MediaWikiLangTestCase {
+
+ function testbug14404() {
+ global $wgUser, $wgContLang, $wgLanguageCode, $wgLang;
+
+ $title = Title::newFromText("Bug 14404");
+ $article = new Article( $title );
+ $wgUser = new User();
+ $wgUser->mRights = array( 'createpage', 'edit', 'purge' );
+ $wgLanguageCode = 'es';
+ $wgContLang = Language::factory( 'es' );
+
+ $wgLang = Language::factory( 'fr' );
+ $status = $article->doEdit( '{{:{{int:history}}}}', 'Test code for bug 14404', 0 );
+ $templates1 = $article->getUsedTemplates();
+
+ $wgLang = Language::factory( 'de' );
+ $article->mParserOptions = null; // Let it pick the new user language
+ $article->mPreparedEdit = false; // In order to force the rerendering of the same wikitext
+
+ // We need an edit, a purge is not enough to regenerate the tables
+ $status = $article->doEdit( '{{:{{int:history}}}}', 'Test code for bug 14404', EDIT_UPDATE );
+ $templates2 = $article->getUsedTemplates();
+
+ $this->assertEquals( $templates1, $templates2 );
+ $this->assertEquals( $templates1[0]->getFullText(), 'Historial' );
+ }
+
+}
diff --git a/tests/phpunit/includes/ArticleTest.php b/tests/phpunit/includes/ArticleTest.php
new file mode 100644
index 00000000..285efee9
--- /dev/null
+++ b/tests/phpunit/includes/ArticleTest.php
@@ -0,0 +1,82 @@
+<?php
+
+class ArticleTest extends MediaWikiTestCase {
+
+ private $title; // holds a Title object
+ private $article; // holds an article
+
+ /** creates a title object and its article object */
+ function setUp() {
+ $this->title = Title::makeTitle( NS_MAIN, 'SomePage' );
+ $this->article = new Article( $this->title );
+
+ }
+
+ /** cleanup title object and its article object */
+ function tearDown() {
+ $this->title = null;
+ $this->article = null;
+
+ }
+
+ function testImplementsGetMagic() {
+ $this->assertEquals( -1, $this->article->mCounter, "Article __get magic" );
+ }
+
+ /**
+ * @depends testImplementsGetMagic
+ */
+ function testImplementsSetMagic() {
+
+ $this->article->mCounter = 2;
+ $this->assertEquals( 2, $this->article->mCounter, "Article __set magic" );
+ }
+
+ /**
+ * @depends testImplementsSetMagic
+ */
+ function testImplementsCallMagic() {
+ $this->article->mCounter = 33;
+ $this->assertEquals( 33, $this->article->getCount(), "Article __call magic" );
+ }
+
+ function testGetOrSetOnNewProperty() {
+ $this->article->ext_someNewProperty = 12;
+ $this->assertEquals( 12, $this->article->ext_someNewProperty,
+ "Article get/set magic on new field" );
+
+ $this->article->ext_someNewProperty = -8;
+ $this->assertEquals( -8, $this->article->ext_someNewProperty,
+ "Article get/set magic on update to new field" );
+ }
+
+ /**
+ * Checks for the existence of the backwards compatibility static functions (forwarders to WikiPage class)
+ */
+ function testStaticFunctions() {
+ $this->assertEquals( WikiPage::selectFields(), Article::selectFields(),
+ "Article static functions" );
+ $this->assertEquals( true, is_callable( "Article::onArticleCreate" ),
+ "Article static functions" );
+ $this->assertEquals( true, is_callable( "Article::onArticleDelete" ),
+ "Article static functions" );
+ $this->assertEquals( true, is_callable( "ImagePage::onArticleEdit" ),
+ "Article static functions" );
+ $this->assertTrue( is_string( CategoryPage::getAutosummary( '', '', 0 ) ),
+ "Article static functions" );
+ }
+
+ function testWikiPageFactory() {
+ $title = Title::makeTitle( NS_FILE, 'Someimage.png' );
+ $page = WikiPage::factory( $title );
+ $this->assertEquals( 'WikiFilePage', get_class( $page ) );
+
+ $title = Title::makeTitle( NS_CATEGORY, 'SomeCategory' );
+ $page = WikiPage::factory( $title );
+ $this->assertEquals( 'WikiCategoryPage', get_class( $page ) );
+
+ $title = Title::makeTitle( NS_MAIN, 'SomePage' );
+ $page = WikiPage::factory( $title );
+ $this->assertEquals( 'WikiPage', get_class( $page ) );
+ }
+}
diff --git a/tests/phpunit/includes/BlockTest.php b/tests/phpunit/includes/BlockTest.php
new file mode 100644
index 00000000..2f224ba8
--- /dev/null
+++ b/tests/phpunit/includes/BlockTest.php
@@ -0,0 +1,124 @@
+<?php
+
+/**
+ * @group Database
+ */
+class BlockTest extends MediaWikiLangTestCase {
+
+ const REASON = "Some reason";
+
+ private $block, $madeAt;
+
+ /* variable used to save up the blockID we insert in this test suite */
+ private $blockId;
+
+ function setUp() {
+ global $wgContLang;
+ parent::setUp();
+ $wgContLang = Language::factory( 'en' );
+ }
+
+ function addDBData() {
+ //$this->dumpBlocks();
+
+ $user = User::newFromName( 'UTBlockee' );
+ if( $user->getID() == 0 ) {
+ $user->addToDatabase();
+ $user->setPassword( 'UTBlockeePassword' );
+
+ $user->saveSettings();
+ }
+
+ // Delete the last round's block if it's still there
+ $oldBlock = Block::newFromTarget( 'UTBlockee' );
+ if ( $oldBlock ) {
+ // An old block will prevent our new one from saving.
+ $oldBlock->delete();
+ }
+
+ $this->block = new Block( 'UTBlockee', 1, 0,
+ self::REASON
+ );
+ $this->madeAt = wfTimestamp( TS_MW );
+
+ $this->block->insert();
+ // save up ID for use in assertion. Since ID is an autoincrement,
+ // its value might change depending on the order the tests are run.
+ // ApiBlockTest insert its own blocks!
+ $newBlockId = $this->block->getId();
+ if ($newBlockId) {
+ $this->blockId = $newBlockId;
+ } else {
+ throw new MWException( "Failed to insert block for BlockTest; old leftover block remaining?" );
+ }
+ }
+
+ /**
+ * debug function : dump the ipblocks table
+ */
+ function dumpBlocks() {
+ $v = $this->db->query( 'SELECT * FROM unittest_ipblocks' );
+ print "Got " . $v->numRows() . " rows. Full dump follow:\n";
+ foreach( $v as $row ) {
+ print_r( $row );
+ }
+ }
+
+ function testInitializerFunctionsReturnCorrectBlock() {
+ // $this->dumpBlocks();
+
+ $this->assertTrue( $this->block->equals( Block::newFromTarget('UTBlockee') ), "newFromTarget() returns the same block as the one that was made");
+
+ $this->assertTrue( $this->block->equals( Block::newFromID( $this->blockId ) ), "newFromID() returns the same block as the one that was made");
+
+ }
+
+ /**
+ * per bug 26425
+ */
+ function testBug26425BlockTimestampDefaultsToTime() {
+
+ $this->assertEquals( $this->madeAt, $this->block->mTimestamp, "If no timestamp is specified, the block is recorded as time()");
+
+ }
+
+ /**
+ * This is the method previously used to load block info in CheckUser etc
+ * passing an empty value (empty string, null, etc) as the ip parameter bypasses IP lookup checks.
+ *
+ * This stopped working with r84475 and friends: regression being fixed for bug 29116.
+ *
+ * @dataProvider dataBug29116
+ */
+ function testBug29116LoadWithEmptyIp( $vagueTarget ) {
+ $uid = User::idFromName( 'UTBlockee' );
+ $this->assertTrue( ($uid > 0), 'Must be able to look up the target user during tests' );
+
+ $block = new Block();
+ $ok = $block->load( $vagueTarget, $uid );
+ $this->assertTrue( $ok, "Block->load() with empty IP and user ID '$uid' should return a block" );
+
+ $this->assertTrue( $this->block->equals( $block ), "Block->load() returns the same block as the one that was made when given empty ip param " . var_export( $vagueTarget, true ) );
+ }
+
+ /**
+ * CheckUser since being changed to use Block::newFromTarget started failing
+ * because the new function didn't accept empty strings like Block::load()
+ * had. Regression bug 29116.
+ *
+ * @dataProvider dataBug29116
+ */
+ function testBug29116NewFromTargetWithEmptyIp( $vagueTarget ) {
+ $block = Block::newFromTarget('UTBlockee', $vagueTarget);
+ $this->assertTrue( $this->block->equals( $block ), "newFromTarget() returns the same block as the one that was made when given empty vagueTarget param " . var_export( $vagueTarget, true ) );
+ }
+
+ function dataBug29116() {
+ return array(
+ array( null ),
+ array( '' ),
+ array( false )
+ );
+ }
+}
+
diff --git a/tests/phpunit/includes/CdbTest.php b/tests/phpunit/includes/CdbTest.php
new file mode 100644
index 00000000..6c3e6664
--- /dev/null
+++ b/tests/phpunit/includes/CdbTest.php
@@ -0,0 +1,84 @@
+<?php
+
+/**
+ * Test the CDB reader/writer
+ */
+
+class CdbTest extends MediaWikiTestCase {
+
+ public function setUp() {
+ if ( !CdbReader::haveExtension() ) {
+ $this->markTestIncomplete( 'This test requires native CDB support to be present.' );
+ }
+ }
+
+ public function testCdb() {
+ $dir = wfTempDir();
+ if ( !is_writable( $dir ) ) {
+ $this->markTestSkipped( "Temp dir isn't writable" );
+ }
+
+ $w1 = new CdbWriter_PHP( "$dir/php.cdb" );
+ $w2 = new CdbWriter_DBA( "$dir/dba.cdb" );
+
+ $data = array();
+ for ( $i = 0; $i < 1000; $i++ ) {
+ $key = $this->randomString();
+ $value = $this->randomString();
+ $w1->set( $key, $value );
+ $w2->set( $key, $value );
+
+ if ( !isset( $data[$key] ) ) {
+ $data[$key] = $value;
+ }
+ }
+
+ $w1->close();
+ $w2->close();
+
+ $this->assertEquals(
+ md5_file( "$dir/dba.cdb" ),
+ md5_file( "$dir/php.cdb" ),
+ 'same hash'
+ );
+
+ $r1 = new CdbReader_PHP( "$dir/php.cdb" );
+ $r2 = new CdbReader_DBA( "$dir/dba.cdb" );
+
+ foreach ( $data as $key => $value ) {
+ if ( $key === '' ) {
+ // Known bug
+ continue;
+ }
+ $v1 = $r1->get( $key );
+ $v2 = $r2->get( $key );
+
+ $v1 = $v1 === false ? '(not found)' : $v1;
+ $v2 = $v2 === false ? '(not found)' : $v2;
+
+ # cdbAssert( 'Mismatch', $key, $v1, $v2 );
+ $this->cdbAssert( "PHP error", $key, $v1, $value );
+ $this->cdbAssert( "DBA error", $key, $v2, $value );
+ }
+
+ unlink( "$dir/dba.cdb" );
+ unlink( "$dir/php.cdb" );
+ }
+
+ private function randomString() {
+ $len = mt_rand( 0, 10 );
+ $s = '';
+ for ( $j = 0; $j < $len; $j++ ) {
+ $s .= chr( mt_rand( 0, 255 ) );
+ }
+ return $s;
+ }
+
+ private function cdbAssert( $msg, $key, $v1, $v2 ) {
+ $this->assertEquals(
+ $v2,
+ $v1,
+ $msg . ', k=' . bin2hex( $key )
+ );
+ }
+}
diff --git a/tests/phpunit/includes/ExternalStoreTest.php b/tests/phpunit/includes/ExternalStoreTest.php
new file mode 100644
index 00000000..92ec7344
--- /dev/null
+++ b/tests/phpunit/includes/ExternalStoreTest.php
@@ -0,0 +1,32 @@
+<?php
+/**
+ * External Store tests
+ */
+
+class ExternalStoreTest extends MediaWikiTestCase {
+ private $saved_wgExternalStores;
+
+ function setUp() {
+ global $wgExternalStores;
+ $this->saved_wgExternalStores = $wgExternalStores ;
+ }
+
+ function tearDown() {
+ global $wgExternalStores;
+ $wgExternalStores = $this->saved_wgExternalStores ;
+ }
+
+ function testExternalStoreDoesNotFetchIncorrectURL() {
+ global $wgExternalStores;
+ $wgExternalStores = true;
+
+ # Assertions for r68900
+ $this->assertFalse(
+ ExternalStore::fetchFromURL( 'http://' ) );
+ $this->assertFalse(
+ ExternalStore::fetchFromURL( 'ftp.wikimedia.org' ) );
+ $this->assertFalse(
+ ExternalStore::fetchFromURL( '/super.txt' ) );
+ }
+}
+
diff --git a/tests/phpunit/includes/ExtraParserTest.php b/tests/phpunit/includes/ExtraParserTest.php
new file mode 100644
index 00000000..5b0aa98b
--- /dev/null
+++ b/tests/phpunit/includes/ExtraParserTest.php
@@ -0,0 +1,113 @@
+<?php
+
+/**
+ * Parser-related tests that don't suit for parserTests.txt
+ */
+class ExtraParserTest extends MediaWikiTestCase {
+
+ function setUp() {
+ global $wgMemc;
+ global $wgContLang;
+ global $wgShowDBErrorBacktrace;
+ global $wgLanguageCode;
+
+ $wgShowDBErrorBacktrace = true;
+ $wgLanguageCode = 'en';
+ $wgContLang = new Language( 'en' );
+ $wgMemc = new EmptyBagOStuff;
+
+ $this->options = new ParserOptions;
+ $this->options->setTemplateCallback( array( __CLASS__, 'statelessFetchTemplate' ) );
+ $this->parser = new Parser;
+ }
+
+ // Bug 8689 - Long numeric lines kill the parser
+ function testBug8689() {
+ global $wgLang;
+ global $wgUser;
+ $longLine = '1.' . str_repeat( '1234567890', 100000 ) . "\n";
+
+ if ( $wgLang === null ) $wgLang = new Language;
+
+ $t = Title::newFromText( 'Unit test' );
+ $options = ParserOptions::newFromUser( $wgUser );
+ $this->assertEquals( "<p>$longLine</p>",
+ $this->parser->parse( $longLine, $t, $options )->getText() );
+ }
+
+ /* Test the parser entry points */
+ function testParse() {
+ $title = Title::newFromText( __FUNCTION__ );
+ $parserOutput = $this->parser->parse( "Test\n{{Foo}}\n{{Bar}}" , $title, $this->options );
+ $this->assertEquals( "<p>Test\nContent of <i>Template:Foo</i>\nContent of <i>Template:Bar</i>\n</p>", $parserOutput->getText() );
+ }
+
+ function testPreSaveTransform() {
+ global $wgUser;
+ $title = Title::newFromText( __FUNCTION__ );
+ $outputText = $this->parser->preSaveTransform( "Test\r\n{{subst:Foo}}\n{{Bar}}", $title, $wgUser, $this->options );
+
+ $this->assertEquals( "Test\nContent of ''Template:Foo''\n{{Bar}}", $outputText );
+ }
+
+ function testPreprocess() {
+ $title = Title::newFromText( __FUNCTION__ );
+ $outputText = $this->parser->preprocess( "Test\n{{Foo}}\n{{Bar}}" , $title, $this->options );
+
+ $this->assertEquals( "Test\nContent of ''Template:Foo''\nContent of ''Template:Bar''", $outputText );
+ }
+
+ /**
+ * cleanSig() makes all templates substs and removes tildes
+ */
+ function testCleanSig() {
+ $title = Title::newFromText( __FUNCTION__ );
+ $outputText = $this->parser->cleanSig( "{{Foo}} ~~~~" );
+
+ $this->assertEquals( "{{SUBST:Foo}} ", $outputText );
+ }
+
+ /**
+ * cleanSigInSig() just removes tildes
+ */
+ function testCleanSigInSig() {
+ $title = Title::newFromText( __FUNCTION__ );
+ $outputText = $this->parser->cleanSigInSig( "{{Foo}} ~~~~" );
+
+ $this->assertEquals( "{{Foo}} ", $outputText );
+ }
+
+ function testGetSection() {
+ $outputText2 = $this->parser->getSection( "Section 0\n== Heading 1 ==\nSection 1\n=== Heading 2 ===\nSection 2\n== Heading 3 ==\nSection 3\n", 2 );
+ $outputText1 = $this->parser->getSection( "Section 0\n== Heading 1 ==\nSection 1\n=== Heading 2 ===\nSection 2\n== Heading 3 ==\nSection 3\n", 1 );
+
+ $this->assertEquals( "=== Heading 2 ===\nSection 2", $outputText2 );
+ $this->assertEquals( "== Heading 1 ==\nSection 1\n=== Heading 2 ===\nSection 2", $outputText1 );
+ }
+
+ function testReplaceSection() {
+ $outputText = $this->parser->replaceSection( "Section 0\n== Heading 1 ==\nSection 1\n=== Heading 2 ===\nSection 2\n== Heading 3 ==\nSection 3\n", 1, "New section 1" );
+
+ $this->assertEquals( "Section 0\nNew section 1\n\n== Heading 3 ==\nSection 3", $outputText );
+ }
+
+ /**
+ * Templates and comments are not affected, but noinclude/onlyinclude is.
+ */
+ function testGetPreloadText() {
+ $title = Title::newFromText( __FUNCTION__ );
+ $outputText = $this->parser->getPreloadText( "{{Foo}}<noinclude> censored</noinclude> information <!-- is very secret -->", $title, $this->options );
+
+ $this->assertEquals( "{{Foo}} information <!-- is very secret -->", $outputText );
+ }
+
+ static function statelessFetchTemplate( $title, $parser=false ) {
+ $text = "Content of ''" . $title->getFullText() . "''";
+ $deps = array();
+
+ return array(
+ 'text' => $text,
+ 'finalTitle' => $title,
+ 'deps' => $deps );
+ }
+ }
diff --git a/tests/phpunit/includes/FauxResponseTest.php b/tests/phpunit/includes/FauxResponseTest.php
new file mode 100644
index 00000000..c0420049
--- /dev/null
+++ b/tests/phpunit/includes/FauxResponseTest.php
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Tests for the FauxResponse class
+ *
+ * Copyright @ 2011 Alexandre Emsenhuber
+ *
+ * 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 FauxResponseTest extends MediaWikiTestCase {
+ var $response;
+
+ function setUp() {
+ $this->response = new FauxResponse;
+ }
+
+ function testCookie() {
+ $this->assertEquals( null, $this->response->getcookie( 'key' ), 'Non-existing cookie' );
+ $this->response->setcookie( 'key', 'val' );
+ $this->assertEquals( 'val', $this->response->getcookie( 'key' ), 'Existing cookie' );
+ }
+
+ function testHeader() {
+ $this->assertEquals( null, $this->response->getheader( 'Location' ), 'Non-existing header' );
+
+ $this->response->header( 'Location: http://localhost/' );
+ $this->assertEquals( 'http://localhost/', $this->response->getheader( 'Location' ), 'Set header' );
+
+ $this->response->header( 'Location: http://127.0.0.1/' );
+ $this->assertEquals( 'http://127.0.0.1/', $this->response->getheader( 'Location' ), 'Same header' );
+
+ $this->response->header( 'Location: http://127.0.0.2/', false );
+ $this->assertEquals( 'http://127.0.0.1/', $this->response->getheader( 'Location' ), 'Same header with override disabled' );
+ }
+
+ function testResponseCode() {
+ $this->response->header( 'HTTP/1.1 200' );
+ $this->assertEquals( 200, $this->response->getStatusCode(), 'Header with no message' );
+
+ $this->response->header( 'HTTP/1.x 201' );
+ $this->assertEquals( 201, $this->response->getStatusCode(), 'Header with no message and protocol 1.x' );
+
+ $this->response->header( 'HTTP/1.1 202 OK' );
+ $this->assertEquals( 202, $this->response->getStatusCode(), 'Normal header' );
+
+ $this->response->header( 'HTTP/1.x 203 OK' );
+ $this->assertEquals( 203, $this->response->getStatusCode(), 'Normal header with no message and protocol 1.x' );
+
+ $this->response->header( 'HTTP/1.x 204 OK', false, 205 );
+ $this->assertEquals( 205, $this->response->getStatusCode(), 'Third parameter overrides the HTTP/... header' );
+
+ $this->response->header( 'Location: http://localhost/', false, 206 );
+ $this->assertEquals( 206, $this->response->getStatusCode(), 'Third parameter with another header' );
+ }
+}
diff --git a/tests/phpunit/includes/FormOptionsInitializationTest.php b/tests/phpunit/includes/FormOptionsInitializationTest.php
new file mode 100644
index 00000000..85d76271
--- /dev/null
+++ b/tests/phpunit/includes/FormOptionsInitializationTest.php
@@ -0,0 +1,85 @@
+<?php
+/**
+ * This file host two test case classes for the MediaWiki FormOptions class:
+ * - FormOptionsInitializationTest : tests initialization of the class.
+ * - FormOptionsTest : tests methods an on instance
+ *
+ * The split let us take advantage of setting up a fixture for the methods
+ * tests.
+ */
+
+/**
+ * Dummy class to makes FormOptions::$options public.
+ * Used by FormOptionsInitializationTest which need to verify the $options
+ * array is correctly set through the FormOptions::add() function.
+ */
+class FormOptionsExposed extends FormOptions {
+ public function getOptions() {
+ return $this->options;
+ }
+}
+
+/**
+ * Test class for FormOptions initialization
+ * Ensure the FormOptions::add() does what we want it to do.
+ *
+ * Generated by PHPUnit on 2011-02-28 at 20:46:27.
+ *
+ * Copyright © 2011, Ashar Voultoiz
+ *
+ * @author Ashar Voultoiz
+ */
+class FormOptionsInitializationTest extends MediaWikiTestCase {
+ /**
+ * @var FormOptions
+ */
+ protected $object;
+
+
+ /**
+ * A new fresh and empty FormOptions object to test initialization
+ * with.
+ */
+ protected function setUp() {
+ $this->object = new FormOptionsExposed();
+
+ }
+
+ public function testAddStringOption() {
+ $this->object->add( 'foo', 'string value' );
+ $this->assertEquals(
+ array(
+ 'foo' => array(
+ 'default' => 'string value',
+ 'consumed' => false,
+ 'type' => FormOptions::STRING,
+ 'value' => null,
+ )
+ ),
+ $this->object->getOptions()
+ );
+ }
+
+ public function testAddIntegers() {
+ $this->object->add( 'one', 1 );
+ $this->object->add( 'negone', -1 );
+ $this->assertEquals(
+ array(
+ 'negone' => array(
+ 'default' => -1,
+ 'value' => null,
+ 'consumed' => false,
+ 'type' => FormOptions::INT,
+ ),
+ 'one' => array(
+ 'default' => 1,
+ 'value' => null,
+ 'consumed' => false,
+ 'type' => FormOptions::INT,
+ )
+ ),
+ $this->object->getOptions()
+ );
+ }
+
+}
diff --git a/tests/phpunit/includes/FormOptionsTest.php b/tests/phpunit/includes/FormOptionsTest.php
new file mode 100644
index 00000000..86618d93
--- /dev/null
+++ b/tests/phpunit/includes/FormOptionsTest.php
@@ -0,0 +1,90 @@
+<?php
+/**
+ * This file host two test case classes for the MediaWiki FormOptions class:
+ * - FormOptionsInitializationTest : tests initialization of the class.
+ * - FormOptionsTest : tests methods an on instance
+ *
+ * The split let us take advantage of setting up a fixture for the methods
+ * tests.
+ */
+
+/**
+ * Test class for FormOptions methods.
+ * Generated by PHPUnit on 2011-02-28 at 20:46:27.
+ *
+ * Copyright © 2011, Ashar Voultoiz
+ *
+ * @author Ashar Voultoiz
+ */
+class FormOptionsTest extends MediaWikiTestCase {
+ /**
+ * @var FormOptions
+ */
+ protected $object;
+
+ /**
+ * Instanciates a FormOptions object to play with.
+ * FormOptions::add() is tested by the class FormOptionsInitializationTest
+ * so we assume the function is well tested already an use it to create
+ * the fixture.
+ */
+ protected function setUp() {
+ $this->object = new FormOptions;
+ $this->object->add( 'string1', 'string one' );
+ $this->object->add( 'string2', 'string two' );
+ $this->object->add( 'integer', 0 );
+ $this->object->add( 'intnull', 0, FormOptions::INTNULL );
+ }
+
+ /** Helpers for testGuessType() */
+ /* @{ */
+ private function assertGuessBoolean( $data ) {
+ $this->guess( FormOptions::BOOL, $data );
+ }
+ private function assertGuessInt( $data ) {
+ $this->guess( FormOptions::INT, $data );
+ }
+ private function assertGuessString( $data ) {
+ $this->guess( FormOptions::STRING, $data );
+ }
+
+ /** Generic helper */
+ private function guess( $expected, $data ) {
+ $this->assertEquals(
+ $expected,
+ FormOptions::guessType( $data )
+ );
+ }
+ /* @} */
+
+ /**
+ * Reuse helpers above assertGuessBoolean assertGuessInt assertGuessString
+ */
+ public function testGuessTypeDetection() {
+ $this->assertGuessBoolean( true );
+ $this->assertGuessBoolean( false );
+
+ $this->assertGuessInt( 0 );
+ $this->assertGuessInt( -5 );
+ $this->assertGuessInt( 5 );
+ $this->assertGuessInt( 0x0F );
+
+ $this->assertGuessString( 'true' );
+ $this->assertGuessString( 'false' );
+ $this->assertGuessString( '5' );
+ $this->assertGuessString( '0' );
+ }
+
+ /**
+ * @expectedException MWException
+ */
+ public function testGuessTypeOnArrayThrowException() {
+ $this->object->guessType( array( 'foo' ) );
+ }
+ /**
+ * @expectedException MWException
+ */
+ public function testGuessTypeOnNullThrowException() {
+ $this->object->guessType( null );
+ }
+}
diff --git a/tests/phpunit/includes/GlobalFunctions/GlobalTest.php b/tests/phpunit/includes/GlobalFunctions/GlobalTest.php
new file mode 100644
index 00000000..3d157d0a
--- /dev/null
+++ b/tests/phpunit/includes/GlobalFunctions/GlobalTest.php
@@ -0,0 +1,902 @@
+<?php
+
+class GlobalTest extends MediaWikiTestCase {
+ function setUp() {
+ global $wgReadOnlyFile, $wgUrlProtocols;
+ $this->originals['wgReadOnlyFile'] = $wgReadOnlyFile;
+ $this->originals['wgUrlProtocols'] = $wgUrlProtocols;
+ $wgReadOnlyFile = tempnam( wfTempDir(), "mwtest_readonly" );
+ $wgUrlProtocols[] = 'file://';
+ unlink( $wgReadOnlyFile );
+ }
+
+ function tearDown() {
+ global $wgReadOnlyFile, $wgUrlProtocols;
+ if ( file_exists( $wgReadOnlyFile ) ) {
+ unlink( $wgReadOnlyFile );
+ }
+ $wgReadOnlyFile = $this->originals['wgReadOnlyFile'];
+ $wgUrlProtocols = $this->originals['wgUrlProtocols'];
+ }
+
+ /** @dataProvider provideForWfArrayDiff2 */
+ public function testWfArrayDiff2( $a, $b, $expected ) {
+ $this->assertEquals(
+ wfArrayDiff2( $a, $b), $expected
+ );
+ }
+
+ // @todo Provide more tests
+ public function provideForWfArrayDiff2() {
+ // $a $b $expected
+ return array(
+ array(
+ array( 'a', 'b'),
+ array( 'a', 'b'),
+ array(),
+ ),
+ array(
+ array( array( 'a'), array( 'a', 'b', 'c' )),
+ array( array( 'a'), array( 'a', 'b' )),
+ array( 1 => array( 'a', 'b', 'c' ) ),
+ ),
+ );
+ }
+
+ function testRandom() {
+ # This could hypothetically fail, but it shouldn't ;)
+ $this->assertFalse(
+ wfRandom() == wfRandom() );
+ }
+
+ function testUrlencode() {
+ $this->assertEquals(
+ "%E7%89%B9%E5%88%A5:Contributions/Foobar",
+ wfUrlencode( "\xE7\x89\xB9\xE5\x88\xA5:Contributions/Foobar" ) );
+ }
+
+ function testReadOnlyEmpty() {
+ global $wgReadOnly;
+ $wgReadOnly = null;
+
+ $this->assertFalse( wfReadOnly() );
+ $this->assertFalse( wfReadOnly() );
+ }
+
+ function testReadOnlySet() {
+ global $wgReadOnly, $wgReadOnlyFile;
+
+ $f = fopen( $wgReadOnlyFile, "wt" );
+ fwrite( $f, 'Message' );
+ fclose( $f );
+ $wgReadOnly = null; # Check on $wgReadOnlyFile
+
+ $this->assertTrue( wfReadOnly() );
+ $this->assertTrue( wfReadOnly() ); # Check cached
+
+ unlink( $wgReadOnlyFile );
+ $wgReadOnly = null; # Clean cache
+
+ $this->assertFalse( wfReadOnly() );
+ $this->assertFalse( wfReadOnly() );
+ }
+
+ function testQuotedPrintable() {
+ $this->assertEquals(
+ "=?UTF-8?Q?=C4=88u=20legebla=3F?=",
+ UserMailer::quotedPrintable( "\xc4\x88u legebla?", "UTF-8" ) );
+ }
+
+ function testTime() {
+ $start = wfTime();
+ $this->assertInternalType( 'float', $start );
+ $end = wfTime();
+ $this->assertTrue( $end > $start, "Time is running backwards!" );
+ }
+
+ function testArrayToCGI() {
+ $this->assertEquals(
+ "baz=AT%26T&foo=bar",
+ wfArrayToCGI(
+ array( 'baz' => 'AT&T', 'ignore' => '' ),
+ array( 'foo' => 'bar', 'baz' => 'overridden value' ) ) );
+ $this->assertEquals(
+ "path%5B0%5D=wiki&path%5B1%5D=test&cfg%5Bservers%5D%5Bhttp%5D=localhost",
+ wfArrayToCGI( array(
+ 'path' => array( 'wiki', 'test' ),
+ 'cfg' => array( 'servers' => array( 'http' => 'localhost' ) ) ) ) );
+ }
+
+ function testCgiToArray() {
+ $this->assertEquals(
+ array( 'path' => array( 'wiki', 'test' ),
+ 'cfg' => array( 'servers' => array( 'http' => 'localhost' ) ) ),
+ wfCgiToArray( 'path%5B0%5D=wiki&path%5B1%5D=test&cfg%5Bservers%5D%5Bhttp%5D=localhost' ) );
+ }
+
+ function testMimeTypeMatch() {
+ $this->assertEquals(
+ 'text/html',
+ mimeTypeMatch( 'text/html',
+ array( 'application/xhtml+xml' => 1.0,
+ 'text/html' => 0.7,
+ 'text/plain' => 0.3 ) ) );
+ $this->assertEquals(
+ 'text/*',
+ mimeTypeMatch( 'text/html',
+ array( 'image/*' => 1.0,
+ 'text/*' => 0.5 ) ) );
+ $this->assertEquals(
+ '*/*',
+ mimeTypeMatch( 'text/html',
+ array( '*/*' => 1.0 ) ) );
+ $this->assertNull(
+ mimeTypeMatch( 'text/html',
+ array( 'image/png' => 1.0,
+ 'image/svg+xml' => 0.5 ) ) );
+ }
+
+ function testNegotiateType() {
+ $this->assertEquals(
+ 'text/html',
+ wfNegotiateType(
+ array( 'application/xhtml+xml' => 1.0,
+ 'text/html' => 0.7,
+ 'text/plain' => 0.5,
+ 'text/*' => 0.2 ),
+ array( 'text/html' => 1.0 ) ) );
+ $this->assertEquals(
+ 'application/xhtml+xml',
+ wfNegotiateType(
+ array( 'application/xhtml+xml' => 1.0,
+ 'text/html' => 0.7,
+ 'text/plain' => 0.5,
+ 'text/*' => 0.2 ),
+ array( 'application/xhtml+xml' => 1.0,
+ 'text/html' => 0.5 ) ) );
+ $this->assertEquals(
+ 'text/html',
+ wfNegotiateType(
+ array( 'text/html' => 1.0,
+ 'text/plain' => 0.5,
+ 'text/*' => 0.5,
+ 'application/xhtml+xml' => 0.2 ),
+ array( 'application/xhtml+xml' => 1.0,
+ 'text/html' => 0.5 ) ) );
+ $this->assertEquals(
+ 'text/html',
+ wfNegotiateType(
+ array( 'text/*' => 1.0,
+ 'image/*' => 0.7,
+ '*/*' => 0.3 ),
+ array( 'application/xhtml+xml' => 1.0,
+ 'text/html' => 0.5 ) ) );
+ $this->assertNull(
+ wfNegotiateType(
+ array( 'text/*' => 1.0 ),
+ array( 'application/xhtml+xml' => 1.0 ) ) );
+ }
+
+ function testTimestamp() {
+ $t = gmmktime( 12, 34, 56, 1, 15, 2001 );
+ $this->assertEquals(
+ '20010115123456',
+ wfTimestamp( TS_MW, $t ),
+ 'TS_UNIX to TS_MW' );
+ $this->assertEquals(
+ '19690115123456',
+ wfTimestamp( TS_MW, -30281104 ),
+ 'Negative TS_UNIX to TS_MW' );
+ $this->assertEquals(
+ 979562096,
+ wfTimestamp( TS_UNIX, $t ),
+ 'TS_UNIX to TS_UNIX' );
+ $this->assertEquals(
+ '2001-01-15 12:34:56',
+ wfTimestamp( TS_DB, $t ),
+ 'TS_UNIX to TS_DB' );
+ $this->assertEquals(
+ '20010115T123456Z',
+ wfTimestamp( TS_ISO_8601_BASIC, $t ),
+ 'TS_ISO_8601_BASIC to TS_DB' );
+
+ $this->assertEquals(
+ '20010115123456',
+ wfTimestamp( TS_MW, '20010115123456' ),
+ 'TS_MW to TS_MW' );
+ $this->assertEquals(
+ 979562096,
+ wfTimestamp( TS_UNIX, '20010115123456' ),
+ 'TS_MW to TS_UNIX' );
+ $this->assertEquals(
+ '2001-01-15 12:34:56',
+ wfTimestamp( TS_DB, '20010115123456' ),
+ 'TS_MW to TS_DB' );
+ $this->assertEquals(
+ '20010115T123456Z',
+ wfTimestamp( TS_ISO_8601_BASIC, '20010115123456' ),
+ 'TS_MW to TS_ISO_8601_BASIC' );
+
+ $this->assertEquals(
+ '20010115123456',
+ wfTimestamp( TS_MW, '2001-01-15 12:34:56' ),
+ 'TS_DB to TS_MW' );
+ $this->assertEquals(
+ 979562096,
+ wfTimestamp( TS_UNIX, '2001-01-15 12:34:56' ),
+ 'TS_DB to TS_UNIX' );
+ $this->assertEquals(
+ '2001-01-15 12:34:56',
+ wfTimestamp( TS_DB, '2001-01-15 12:34:56' ),
+ 'TS_DB to TS_DB' );
+ $this->assertEquals(
+ '20010115T123456Z',
+ wfTimestamp( TS_ISO_8601_BASIC, '2001-01-15 12:34:56' ),
+ 'TS_DB to TS_ISO_8601_BASIC' );
+
+ # rfc2822 section 3.3
+
+ $this->assertEquals(
+ 'Mon, 15 Jan 2001 12:34:56 GMT',
+ wfTimestamp( TS_RFC2822, '20010115123456' ),
+ 'TS_MW to TS_RFC2822' );
+
+ $this->assertEquals(
+ '20010115123456',
+ wfTimestamp( TS_MW, 'Mon, 15 Jan 2001 12:34:56 GMT' ),
+ 'TS_RFC2822 to TS_MW' );
+
+ $this->assertEquals(
+ '20010115123456',
+ wfTimestamp( TS_MW, ' Mon, 15 Jan 2001 12:34:56 GMT' ),
+ 'TS_RFC2822 with leading space to TS_MW' );
+
+ $this->assertEquals(
+ '20010115123456',
+ wfTimestamp( TS_MW, '15 Jan 2001 12:34:56 GMT' ),
+ 'TS_RFC2822 without optional day-of-week to TS_MW' );
+
+ # FWS = ([*WSP CRLF] 1*WSP) / obs-FWS ; Folding white space
+ # obs-FWS = 1*WSP *(CRLF 1*WSP) ; Section 4.2
+ $this->assertEquals(
+ '20010115123456',
+ wfTimestamp( TS_MW, 'Mon, 15 Jan 2001 12:34:56 GMT' ),
+ 'TS_RFC2822 to TS_MW' );
+
+ # WSP = SP / HTAB ; rfc2234
+ $this->assertEquals(
+ '20010115123456',
+ wfTimestamp( TS_MW, "Mon, 15 Jan\x092001 12:34:56 GMT" ),
+ 'TS_RFC2822 with HTAB to TS_MW' );
+
+ $this->assertEquals(
+ '20010115123456',
+ wfTimestamp( TS_MW, "Mon, 15 Jan\x09 \x09 2001 12:34:56 GMT" ),
+ 'TS_RFC2822 with HTAB and SP to TS_MW' );
+
+ $this->assertEquals(
+ '19941106084937',
+ wfTimestamp( TS_MW, "Sun, 6 Nov 94 08:49:37 GMT" ),
+ 'TS_RFC2822 with obsolete year to TS_MW' );
+ }
+
+ /**
+ * This test checks wfTimestamp() with values outside.
+ * It needs PHP 64 bits or PHP > 5.1.
+ * See r74778 and bug 25451
+ */
+ function testOldTimestamps() {
+ $this->assertEquals( 'Fri, 13 Dec 1901 20:45:54 GMT',
+ wfTimestamp( TS_RFC2822, '19011213204554' ),
+ 'Earliest time according to php documentation' );
+
+ $this->assertEquals( 'Tue, 19 Jan 2038 03:14:07 GMT',
+ wfTimestamp( TS_RFC2822, '20380119031407' ),
+ 'Latest 32 bit time' );
+
+ $this->assertEquals( '-2147483648',
+ wfTimestamp( TS_UNIX, '19011213204552' ),
+ 'Earliest 32 bit unix time' );
+
+ $this->assertEquals( '2147483647',
+ wfTimestamp( TS_UNIX, '20380119031407' ),
+ 'Latest 32 bit unix time' );
+
+ $this->assertEquals( 'Fri, 13 Dec 1901 20:45:52 GMT',
+ wfTimestamp( TS_RFC2822, '19011213204552' ),
+ 'Earliest 32 bit time' );
+
+ $this->assertEquals( 'Fri, 13 Dec 1901 20:45:51 GMT',
+ wfTimestamp( TS_RFC2822, '19011213204551' ),
+ 'Earliest 32 bit time - 1' );
+
+ $this->assertEquals( 'Tue, 19 Jan 2038 03:14:08 GMT',
+ wfTimestamp( TS_RFC2822, '20380119031408' ),
+ 'Latest 32 bit time + 1' );
+
+ $this->assertEquals( '19011212000000',
+ wfTimestamp(TS_MW, '19011212000000'),
+ 'Convert to itself r74778#c10645' );
+
+ $this->assertEquals( '-2147483649',
+ wfTimestamp( TS_UNIX, '19011213204551' ),
+ 'Earliest 32 bit unix time - 1' );
+
+ $this->assertEquals( '2147483648',
+ wfTimestamp( TS_UNIX, '20380119031408' ),
+ 'Latest 32 bit unix time + 1' );
+
+ $this->assertEquals( '19011213204551',
+ wfTimestamp( TS_MW, '-2147483649' ),
+ '1901 negative unix time to MediaWiki' );
+
+ $this->assertEquals( '18010115123456',
+ wfTimestamp( TS_MW, '-5331871504' ),
+ '1801 negative unix time to MediaWiki' );
+
+ $this->assertEquals( 'Tue, 09 Aug 0117 12:34:56 GMT',
+ wfTimestamp( TS_RFC2822, '0117-08-09 12:34:56'),
+ 'Death of Roman Emperor [[Trajan]]');
+
+ /* @todo FIXME: 00 to 101 years are taken as being in [1970-2069] */
+
+ $this->assertEquals( 'Sun, 01 Jan 0101 00:00:00 GMT',
+ wfTimestamp( TS_RFC2822, '-58979923200'),
+ '1/1/101');
+
+ $this->assertEquals( 'Mon, 01 Jan 0001 00:00:00 GMT',
+ wfTimestamp( TS_RFC2822, '-62135596800'),
+ 'Year 1');
+
+ /* It is not clear if we should generate a year 0 or not
+ * We are completely off RFC2822 requirement of year being
+ * 1900 or later.
+ */
+ $this->assertEquals( 'Wed, 18 Oct 0000 00:00:00 GMT',
+ wfTimestamp( TS_RFC2822, '-62142076800'),
+ 'ISO 8601:2004 [[year 0]], also called [[1 BC]]');
+ }
+
+ function testHttpDate() {
+ # The Resource Loader uses wfTimestamp() to convert timestamps
+ # from If-Modified-Since header.
+ # Thus it must be able to parse all rfc2616 date formats
+ # http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1
+
+ $this->assertEquals(
+ '19941106084937',
+ wfTimestamp( TS_MW, 'Sun, 06 Nov 1994 08:49:37 GMT' ),
+ 'RFC 822 date' );
+
+ $this->assertEquals(
+ '19941106084937',
+ wfTimestamp( TS_MW, 'Sunday, 06-Nov-94 08:49:37 GMT' ),
+ 'RFC 850 date' );
+
+ $this->assertEquals(
+ '19941106084937',
+ wfTimestamp( TS_MW, 'Sun Nov 6 08:49:37 1994' ),
+ "ANSI C's asctime() format" );
+
+ // See http://www.squid-cache.org/mail-archive/squid-users/200307/0122.html and r77171
+ $this->assertEquals(
+ '20101122141242',
+ wfTimestamp( TS_MW, 'Mon, 22 Nov 2010 14:12:42 GMT; length=52626' ),
+ "Netscape extension to HTTP/1.0" );
+
+ }
+
+ function testTimestampParameter() {
+ // There are a number of assumptions in our codebase where wfTimestamp() should give
+ // the current date but it is not given a 0 there. See r71751 CR
+
+ $now = wfTimestamp( TS_UNIX );
+ // We check that wfTimestamp doesn't return false (error) and use a LessThan assert
+ // for the cases where the test is run in a second boundary.
+
+ $zero = wfTimestamp( TS_UNIX, 0 );
+ $this->assertNotEquals( false, $zero );
+ $this->assertLessThan( 5, $zero - $now );
+
+ $empty = wfTimestamp( TS_UNIX, '' );
+ $this->assertNotEquals( false, $empty );
+ $this->assertLessThan( 5, $empty - $now );
+
+ $null = wfTimestamp( TS_UNIX, null );
+ $this->assertNotEquals( false, $null );
+ $this->assertLessThan( 5, $null - $now );
+ }
+
+ function testBasename() {
+ $sets = array(
+ '' => '',
+ '/' => '',
+ '\\' => '',
+ '//' => '',
+ '\\\\' => '',
+ 'a' => 'a',
+ 'aaaa' => 'aaaa',
+ '/a' => 'a',
+ '\\a' => 'a',
+ '/aaaa' => 'aaaa',
+ '\\aaaa' => 'aaaa',
+ '/aaaa/' => 'aaaa',
+ '\\aaaa\\' => 'aaaa',
+ '\\aaaa\\' => 'aaaa',
+ '/mnt/upload3/wikipedia/en/thumb/8/8b/Zork_Grand_Inquisitor_box_cover.jpg/93px-Zork_Grand_Inquisitor_box_cover.jpg' => '93px-Zork_Grand_Inquisitor_box_cover.jpg',
+ 'C:\\Progra~1\\Wikime~1\\Wikipe~1\\VIEWER.EXE' => 'VIEWER.EXE',
+ 'Östergötland_coat_of_arms.png' => 'Östergötland_coat_of_arms.png',
+ );
+ foreach ( $sets as $from => $to ) {
+ $this->assertEquals( $to, wfBaseName( $from ),
+ "wfBaseName('$from') => '$to'" );
+ }
+ }
+
+
+ function testFallbackMbstringFunctions() {
+
+ if( !extension_loaded( 'mbstring' ) ) {
+ $this->markTestSkipped( "The mb_string functions must be installed to test the fallback functions" );
+ }
+
+ $sampleUTF = "Östergötland_coat_of_arms.png";
+
+
+ //mb_substr
+ $substr_params = array(
+ array( 0, 0 ),
+ array( 5, -4 ),
+ array( 33 ),
+ array( 100, -5 ),
+ array( -8, 10 ),
+ array( 1, 1 ),
+ array( 2, -1 )
+ );
+
+ foreach( $substr_params as $param_set ) {
+ $old_param_set = $param_set;
+ array_unshift( $param_set, $sampleUTF );
+
+ $this->assertEquals(
+ MWFunction::callArray( 'mb_substr', $param_set ),
+ MWFunction::callArray( 'Fallback::mb_substr', $param_set ),
+ 'Fallback mb_substr with params ' . implode( ', ', $old_param_set )
+ );
+ }
+
+
+ //mb_strlen
+ $this->assertEquals(
+ mb_strlen( $sampleUTF ),
+ Fallback::mb_strlen( $sampleUTF ),
+ 'Fallback mb_strlen'
+ );
+
+
+ //mb_str(r?)pos
+ $strpos_params = array(
+ //array( 'ter' ),
+ //array( 'Ö' ),
+ //array( 'Ö', 3 ),
+ //array( 'oat_', 100 ),
+ //array( 'c', -10 ),
+ //Broken for now
+ );
+
+ foreach( $strpos_params as $param_set ) {
+ $old_param_set = $param_set;
+ array_unshift( $param_set, $sampleUTF );
+
+ $this->assertEquals(
+ MWFunction::callArray( 'mb_strpos', $param_set ),
+ MWFunction::callArray( 'Fallback::mb_strpos', $param_set ),
+ 'Fallback mb_strpos with params ' . implode( ', ', $old_param_set )
+ );
+
+ $this->assertEquals(
+ MWFunction::callArray( 'mb_strrpos', $param_set ),
+ MWFunction::callArray( 'Fallback::mb_strrpos', $param_set ),
+ 'Fallback mb_strrpos with params ' . implode( ', ', $old_param_set )
+ );
+ }
+
+ }
+
+
+ function testDebugFunctionTest() {
+
+ global $wgDebugLogFile, $wgOut, $wgShowDebug, $wgDebugTimestamps;
+
+ $old_log_file = $wgDebugLogFile;
+ $wgDebugLogFile = tempnam( wfTempDir(), 'mw-' );
+ # @todo FIXME: This setting should be tested
+ $wgDebugTimestamps = false;
+
+
+
+ wfDebug( "This is a normal string" );
+ $this->assertEquals( "This is a normal string", file_get_contents( $wgDebugLogFile ) );
+ unlink( $wgDebugLogFile );
+
+
+ wfDebug( "This is nöt an ASCII string" );
+ $this->assertEquals( "This is nöt an ASCII string", file_get_contents( $wgDebugLogFile ) );
+ unlink( $wgDebugLogFile );
+
+
+ wfDebug( "\00305This has böth UTF and control chars\003" );
+ $this->assertEquals( " 05This has böth UTF and control chars ", file_get_contents( $wgDebugLogFile ) );
+ unlink( $wgDebugLogFile );
+
+
+
+ $old_wgOut = $wgOut;
+ $old_wgShowDebug = $wgShowDebug;
+
+ $wgOut = new MockOutputPage;
+
+ $wgShowDebug = true;
+
+ $message = "\00305This has böth UTF and control chars\003";
+
+ wfDebug( $message );
+
+ if( $wgOut->message == "JAJA is a stupid error message. Anyway, here's your message: $message" ) {
+ $this->assertTrue( true, 'MockOutputPage called, set the proper message.' );
+ }
+ else {
+ $this->assertTrue( false, 'MockOutputPage was not called.' );
+ }
+
+ $wgOut = $old_wgOut;
+ $wgShowDebug = $old_wgShowDebug;
+ unlink( $wgDebugLogFile );
+
+
+
+ wfDebugMem();
+ $this->assertGreaterThan( 5000, preg_replace( '/\D/', '', file_get_contents( $wgDebugLogFile ) ) );
+ unlink( $wgDebugLogFile );
+
+ wfDebugMem(true);
+ $this->assertGreaterThan( 5000000, preg_replace( '/\D/', '', file_get_contents( $wgDebugLogFile ) ) );
+ unlink( $wgDebugLogFile );
+
+
+
+ $wgDebugLogFile = $old_log_file;
+
+ }
+
+ function testClientAcceptsGzipTest() {
+
+ $settings = array(
+ 'gzip' => true,
+ 'bzip' => false,
+ '*' => false,
+ 'compress, gzip' => true,
+ 'gzip;q=1.0' => true,
+ 'foozip' => false,
+ 'foo*zip' => false,
+ 'gzip;q=abcde' => true, //is this REALLY valid?
+ 'gzip;q=12345678.9' => true,
+ ' gzip' => true,
+ );
+
+ if( isset( $_SERVER['HTTP_ACCEPT_ENCODING'] ) ) $old_server_setting = $_SERVER['HTTP_ACCEPT_ENCODING'];
+
+ foreach ( $settings as $encoding => $expect ) {
+ $_SERVER['HTTP_ACCEPT_ENCODING'] = $encoding;
+
+ $this->assertEquals( $expect, wfClientAcceptsGzip( true ),
+ "'$encoding' => " . wfBoolToStr( $expect ) );
+ }
+
+ if( isset( $old_server_setting ) ) $_SERVER['HTTP_ACCEPT_ENCODING'] = $old_server_setting;
+
+ }
+
+
+
+ function testSwapVarsTest() {
+
+
+ $var1 = 1;
+ $var2 = 2;
+
+ $this->assertEquals( $var1, 1, 'var1 is set originally' );
+ $this->assertEquals( $var2, 2, 'var1 is set originally' );
+
+ swap( $var1, $var2 );
+
+ $this->assertEquals( $var1, 2, 'var1 is swapped' );
+ $this->assertEquals( $var2, 1, 'var2 is swapped' );
+
+ }
+
+
+ function testWfPercentTest() {
+
+ $pcts = array(
+ array( 6/7, '0.86%', 2, false ),
+ array( 3/3, '1%' ),
+ array( 22/7, '3.14286%', 5 ),
+ array( 3/6, '0.5%' ),
+ array( 1/3, '0%', 0 ),
+ array( 10/3, '0%', -1 ),
+ array( 3/4/5, '0.1%', 1 ),
+ array( 6/7*8, '6.8571428571%', 10 ),
+ );
+
+ foreach( $pcts as $pct ) {
+ if( !isset( $pct[2] ) ) $pct[2] = 2;
+ if( !isset( $pct[3] ) ) $pct[3] = true;
+
+ $this->assertEquals( wfPercent( $pct[0], $pct[2], $pct[3] ), $pct[1], $pct[1] );
+ }
+
+ }
+
+
+ function testInStringTest() {
+
+ $this->assertTrue( in_string( 'foo', 'foobar' ), 'foo is in foobar' );
+ $this->assertFalse( in_string( 'Bar', 'foobar' ), 'Case-sensitive by default' );
+ $this->assertTrue( in_string( 'Foo', 'foobar', true ), 'Case-insensitive when asked' );
+
+ }
+
+ /**
+ * test @see wfShorthandToInteger()
+ * @dataProvider provideShorthand
+ */
+ public function testWfShorthandToInteger( $shorthand, $expected ) {
+ $this->assertEquals( $expected,
+ wfShorthandToInteger( $shorthand )
+ );
+ }
+
+ /** array( shorthand, expected integer ) */
+ public function provideShorthand() {
+ return array(
+ # Null, empty ...
+ array( '', -1),
+ array( ' ', -1),
+ array( null, -1),
+
+ # Failures returns 0 :(
+ array( 'ABCDEFG', 0 ),
+ array( 'Ak', 0 ),
+
+ # Int, strings with spaces
+ array( 1, 1 ),
+ array( ' 1 ', 1 ),
+ array( 1023, 1023 ),
+ array( ' 1023 ', 1023 ),
+
+ # kilo, Mega, Giga
+ array( '1k', 1024 ),
+ array( '1K', 1024 ),
+ array( '1m', 1024 * 1024 ),
+ array( '1M', 1024 * 1024 ),
+ array( '1g', 1024 * 1024 * 1024 ),
+ array( '1G', 1024 * 1024 * 1024 ),
+
+ # Negatives
+ array( -1, -1 ),
+ array( -500, -500 ),
+ array( '-500', -500 ),
+ array( '-1k', -1024 ),
+
+ # Zeroes
+ array( '0', 0 ),
+ array( '0k', 0 ),
+ array( '0M', 0 ),
+ array( '0G', 0 ),
+ array( '-0', 0 ),
+ array( '-0k', 0 ),
+ array( '-0M', 0 ),
+ array( '-0G', 0 ),
+ );
+ }
+
+
+ /**
+ * test @see wfBCP47().
+ * Please note the BCP explicitly state that language codes are case
+ * insensitive, there are some exceptions to the rule :)
+ * This test is used to verify our formatting against all lower and
+ * all upper cases language code.
+ *
+ * @see http://tools.ietf.org/html/bcp47
+ * @dataProvider provideLanguageCodes()
+ */
+ function testBCP47( $code, $expected ) {
+ $code = strtolower( $code );
+ $this->assertEquals( $expected, wfBCP47($code),
+ "Applying BCP47 standard to lower case '$code'"
+ );
+
+ $code = strtoupper( $code );
+ $this->assertEquals( $expected, wfBCP47($code),
+ "Applying BCP47 standard to upper case '$code'"
+ );
+ }
+
+ /**
+ * Array format is ($code, $expected)
+ */
+ function provideLanguageCodes() {
+ return array(
+ // Extracted from BCP47 (list not exhaustive)
+ # 2.1.1
+ array( 'en-ca-x-ca' , 'en-CA-x-ca' ),
+ array( 'sgn-be-fr' , 'sgn-BE-FR' ),
+ array( 'az-latn-x-latn', 'az-Latn-x-latn' ),
+ # 2.2
+ array( 'sr-Latn-RS', 'sr-Latn-RS' ),
+ array( 'az-arab-ir', 'az-Arab-IR' ),
+
+ # 2.2.5
+ array( 'sl-nedis' , 'sl-nedis' ),
+ array( 'de-ch-1996', 'de-CH-1996' ),
+
+ # 2.2.6
+ array(
+ 'en-latn-gb-boont-r-extended-sequence-x-private',
+ 'en-Latn-GB-boont-r-extended-sequence-x-private'
+ ),
+
+ // Examples from BCP47 Appendix A
+ # Simple language subtag:
+ array( 'DE', 'de' ),
+ array( 'fR', 'fr' ),
+ array( 'ja', 'ja' ),
+
+ # Language subtag plus script subtag:
+ array( 'zh-hans', 'zh-Hans'),
+ array( 'sr-cyrl', 'sr-Cyrl'),
+ array( 'sr-latn', 'sr-Latn'),
+
+ # Extended language subtags and their primary language subtag
+ # counterparts:
+ array( 'zh-cmn-hans-cn', 'zh-cmn-Hans-CN' ),
+ array( 'cmn-hans-cn' , 'cmn-Hans-CN' ),
+ array( 'zh-yue-hk' , 'zh-yue-HK' ),
+ array( 'yue-hk' , 'yue-HK' ),
+
+ # Language-Script-Region:
+ array( 'zh-hans-cn', 'zh-Hans-CN' ),
+ array( 'sr-latn-RS', 'sr-Latn-RS' ),
+
+ # Language-Variant:
+ array( 'sl-rozaj' , 'sl-rozaj' ),
+ array( 'sl-rozaj-biske', 'sl-rozaj-biske' ),
+ array( 'sl-nedis' , 'sl-nedis' ),
+
+ # Language-Region-Variant:
+ array( 'de-ch-1901' , 'de-CH-1901' ),
+ array( 'sl-it-nedis' , 'sl-IT-nedis' ),
+
+ # Language-Script-Region-Variant:
+ array( 'hy-latn-it-arevela', 'hy-Latn-IT-arevela' ),
+
+ # Language-Region:
+ array( 'de-de' , 'de-DE' ),
+ array( 'en-us' , 'en-US' ),
+ array( 'es-419', 'es-419'),
+
+ # Private use subtags:
+ array( 'de-ch-x-phonebk' , 'de-CH-x-phonebk' ),
+ array( 'az-arab-x-aze-derbend', 'az-Arab-x-aze-derbend' ),
+ /**
+ * Previous test does not reflect the BCP which states:
+ * az-Arab-x-AZE-derbend
+ * AZE being private, it should be lower case, hence the test above
+ * should probably be:
+ #array( 'az-arab-x-aze-derbend', 'az-Arab-x-AZE-derbend' ),
+ */
+
+ # Private use registry values:
+ array( 'x-whatever', 'x-whatever' ),
+ array( 'qaa-qaaa-qm-x-southern', 'qaa-Qaaa-QM-x-southern' ),
+ array( 'de-qaaa' , 'de-Qaaa' ),
+ array( 'sr-latn-qm', 'sr-Latn-QM' ),
+ array( 'sr-qaaa-rs', 'sr-Qaaa-RS' ),
+
+ # Tags that use extensions
+ array( 'en-us-u-islamcal', 'en-US-u-islamcal' ),
+ array( 'zh-cn-a-myext-x-private', 'zh-CN-a-myext-x-private' ),
+ array( 'en-a-myext-b-another', 'en-a-myext-b-another' ),
+
+ # Invalid:
+ // de-419-DE
+ // a-DE
+ // ar-a-aaa-b-bbb-a-ccc
+
+ /*
+ // ISO 15924 :
+ array( 'sr-Cyrl', 'sr-Cyrl' ),
+ # @todo FIXME: Fix our function?
+ array( 'SR-lATN', 'sr-Latn' ),
+ array( 'fr-latn', 'fr-Latn' ),
+ // Use lowercase for single segment
+ // ISO 3166-1-alpha-2 code
+ array( 'US', 'us' ), # USA
+ array( 'uS', 'us' ), # USA
+ array( 'Fr', 'fr' ), # France
+ array( 'va', 'va' ), # Holy See (Vatican City State)
+ */);
+ }
+
+ /**
+ * @dataProvider provideMakeUrlIndexes()
+ */
+ function testMakeUrlIndexes( $url, $expected ) {
+ $index = wfMakeUrlIndexes( $url );
+ $this->assertEquals( $expected, $index, "wfMakeUrlIndexes(\"$url\")" );
+ }
+
+ function provideMakeUrlIndexes() {
+ return array(
+ array(
+ // just a regular :)
+ 'https://bugzilla.wikimedia.org/show_bug.cgi?id=28627',
+ array( 'https://org.wikimedia.bugzilla./show_bug.cgi?id=28627' )
+ ),
+ array(
+ // mailtos are handled special
+ // is this really right though? that final . probably belongs earlier?
+ 'mailto:wiki@wikimedia.org',
+ array( 'mailto:org.wikimedia@wiki.' )
+ ),
+
+ // file URL cases per bug 28627...
+ array(
+ // three slashes: local filesystem path Unix-style
+ 'file:///whatever/you/like.txt',
+ array( 'file://./whatever/you/like.txt' )
+ ),
+ array(
+ // three slashes: local filesystem path Windows-style
+ 'file:///c:/whatever/you/like.txt',
+ array( 'file://./c:/whatever/you/like.txt' )
+ ),
+ array(
+ // two slashes: UNC filesystem path Windows-style
+ 'file://intranet/whatever/you/like.txt',
+ array( 'file://intranet./whatever/you/like.txt' )
+ ),
+ // Multiple-slash cases that can sorta work on Mozilla
+ // if you hack it just right are kinda pathological,
+ // and unreliable cross-platform or on IE which means they're
+ // unlikely to appear on intranets.
+ //
+ // Those will survive the algorithm but with results that
+ // are less consistent.
+
+ // protocol-relative URL cases per bug 29854...
+ array(
+ '//bugzilla.wikimedia.org/show_bug.cgi?id=28627',
+ array(
+ 'http://org.wikimedia.bugzilla./show_bug.cgi?id=28627',
+ 'https://org.wikimedia.bugzilla./show_bug.cgi?id=28627'
+ )
+ ),
+ );
+ }
+
+ /* TODO: many more! */
+}
+
+
+class MockOutputPage {
+
+ public $message;
+
+ function debug( $message ) {
+ $this->message = "JAJA is a stupid error message. Anyway, here's your message: $message";
+ }
+}
+
diff --git a/tests/phpunit/includes/GlobalFunctions/README b/tests/phpunit/includes/GlobalFunctions/README
new file mode 100644
index 00000000..0042bdac
--- /dev/null
+++ b/tests/phpunit/includes/GlobalFunctions/README
@@ -0,0 +1,2 @@
+This directory hold tests for includes/GlobalFunctions.php file
+which is a pile of functions.
diff --git a/tests/phpunit/includes/GlobalFunctions/wfExpandUrl.php b/tests/phpunit/includes/GlobalFunctions/wfExpandUrl.php
new file mode 100644
index 00000000..b388b266
--- /dev/null
+++ b/tests/phpunit/includes/GlobalFunctions/wfExpandUrl.php
@@ -0,0 +1,78 @@
+<?php
+/*
+ * Unit tests for wfExpandUrl()
+ */
+
+class wfExpandUrl extends MediaWikiTestCase {
+ /** @dataProvider provideExpandableUrls */
+ public function testWfExpandUrl( $fullUrl, $shortUrl, $defaultProto, $server, $canServer, $httpsMode, $message ) {
+ // Fake $wgServer and $wgCanonicalServer
+ global $wgServer, $wgCanonicalServer;
+ $oldServer = $wgServer;
+ $oldCanServer = $wgCanonicalServer;
+ $wgServer = $server;
+ $wgCanonicalServer = $canServer;
+
+ // Fake $_SERVER['HTTPS'] if needed
+ if ( $httpsMode ) {
+ $_SERVER['HTTPS'] = 'on';
+ } else {
+ unset( $_SERVER['HTTPS'] );
+ }
+
+ $this->assertEquals( $fullUrl, wfExpandUrl( $shortUrl, $defaultProto ), $message );
+
+ // Restore $wgServer and $wgCanonicalServer
+ $wgServer = $oldServer;
+ $wgCanonicalServer = $oldCanServer;
+ }
+
+ /**
+ * Provider of URL examples for testing wfExpandUrl()
+ */
+ public function provideExpandableUrls() {
+ $modes = array( 'http', 'https' );
+ $servers = array( 'http' => 'http://example.com', 'https' => 'https://example.com', 'protocol-relative' => '//example.com' );
+ $defaultProtos = array( 'http' => PROTO_HTTP, 'https' => PROTO_HTTPS, 'protocol-relative' => PROTO_RELATIVE, 'current' => PROTO_CURRENT, 'canonical' => PROTO_CANONICAL );
+
+ $retval = array();
+ foreach ( $modes as $mode ) {
+ $httpsMode = $mode == 'https';
+ foreach ( $servers as $serverDesc => $server ) {
+ foreach ( $modes as $canServerMode ) {
+ $canServer = "$canServerMode://example2.com";
+ foreach ( $defaultProtos as $protoDesc => $defaultProto ) {
+ $retval[] = array( 'http://example.com', 'http://example.com', $defaultProto, $server, $canServer, $httpsMode, "Testing fully qualified http URLs (no need to expand) (defaultProto: $protoDesc , wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )" );
+ $retval[] = array( 'https://example.com', 'https://example.com', $defaultProto, $server, $canServer, $httpsMode, "Testing fully qualified https URLs (no need to expand) (defaultProto: $protoDesc , wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )" );
+ # Would be nice to support this, see fixme on wfExpandUrl()
+ $retval[] = array( "wiki/FooBar", 'wiki/FooBar', $defaultProto, $server, $canServer, $httpsMode, "Test non-expandable relative URLs (defaultProto: $protoDesc , wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )" );
+
+ // Determine expected protocol
+ $p = $protoDesc . ':'; // default case
+ if ( $protoDesc == 'protocol-relative' ) {
+ $p = '';
+ } else if ( $protoDesc == 'current' ) {
+ $p = "$mode:";
+ } else if ( $protoDesc == 'canonical' ) {
+ $p = "$canServerMode:";
+ } else {
+ $p = $protoDesc . ':';
+ }
+ // Determine expected server name
+ if ( $protoDesc == 'canonical' ) {
+ $srv = $canServer;
+ } else if ( $serverDesc == 'protocol-relative' ) {
+ $srv = $p . $server;
+ } else {
+ $srv = $server;
+ }
+
+ $retval[] = array( "$p//wikipedia.org", '//wikipedia.org', $defaultProto, $server, $canServer, $httpsMode, "Test protocol-relative URL (defaultProto: $protoDesc, wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )" );
+ $retval[] = array( "$srv/wiki/FooBar", '/wiki/FooBar', $defaultProto, $server, $canServer, $httpsMode, "Testing expanding URL beginning with / (defaultProto: $protoDesc , wgServer: $server, wgCanonicalServer: $canServer, current request protocol: $mode )" );
+ }
+ }
+ }
+ }
+ return $retval;
+ }
+}
diff --git a/tests/phpunit/includes/GlobalFunctions/wfUrlencodeTest.php b/tests/phpunit/includes/GlobalFunctions/wfUrlencodeTest.php
new file mode 100644
index 00000000..cd1a8dbd
--- /dev/null
+++ b/tests/phpunit/includes/GlobalFunctions/wfUrlencodeTest.php
@@ -0,0 +1,120 @@
+<?php
+/**
+ * Tests for includes/GlobalFunctions.php -> wfUrlencode()
+ *
+ * The function only need a string parameter and might react to IIS7.0
+ */
+
+class wfUrlencodeTest extends MediaWikiTestCase {
+
+ #### TESTS ##############################################################
+
+ /** @dataProvider provideURLS */
+ public function testEncodingUrlWith( $input, $expected ) {
+ $this->verifyEncodingFor( 'Apache', $input, $expected );
+ }
+
+ /** @dataProvider provideURLS */
+ public function testEncodingUrlWithMicrosoftIis7( $input, $expected ) {
+ $this->verifyEncodingFor( 'Microsoft-IIS/7', $input, $expected );
+ }
+
+ #### HELPERS #############################################################
+
+ /**
+ * Internal helper that actually run the test.
+ * Called by the public methods testEncodingUrlWith...()
+ *
+ */
+ private function verifyEncodingFor( $server, $input, $expectations ) {
+ $expected = $this->extractExpect( $server, $expectations );
+
+ // save up global
+ $old = isset($_SERVER['SERVER_SOFTWARE'])
+ ? $_SERVER['SERVER_SOFTWARE']
+ : null
+ ;
+ $_SERVER['SERVER_SOFTWARE'] = $server;
+ wfUrlencode( null );
+
+ // do the requested test
+ $this->assertEquals(
+ $expected,
+ wfUrlencode( $input ),
+ "Encoding '$input' for server '$server' should be '$expected'"
+ );
+
+ // restore global
+ if( $old === null ) {
+ unset( $_SERVER['SERVER_SOFTWARE'] );
+ } else {
+ $_SERVER['SERVER_SOFTWARE'] = $old;
+ }
+ wfUrlencode( null );
+ }
+
+ /**
+ * Interprets the provider array. Return expected value depending
+ * the HTTP server name.
+ */
+ private function extractExpect( $server, $expectations ) {
+ if( is_string( $expectations ) ) {
+ return $expectations;
+ } elseif( is_array( $expectations ) ) {
+ if( !array_key_exists( $server, $expectations ) ) {
+ throw new MWException( __METHOD__ . " expectation does not have any value for server name $server. Check the provider array.\n" );
+ } else {
+ return $expectations[$server];
+ }
+ } else {
+ throw new MWException( __METHOD__ . " given invalid expectation for '$server'. Should be a string or an array( <http server name> => <string> ).\n" );
+ }
+ }
+
+
+ #### PROVIDERS ###########################################################
+
+ /**
+ * Format is either:
+ * array( 'input', 'expected' );
+ * Or:
+ * array( 'input',
+ * array( 'Apache', 'expected' ),
+ * array( 'Microsoft-IIS/7', 'expected' ),
+ * ),
+ * If you want to add other HTTP server name, you will have to add a new
+ * testing method much like the testEncodingUrlWith() method above.
+ */
+ public function provideURLS() {
+ return array(
+ ### RFC 1738 chars
+ // + is not safe
+ array( '+', '%2B' ),
+ // & and = not safe in queries
+ array( '&', '%26' ),
+ array( '=', '%3D' ),
+
+ array( ':', array(
+ 'Apache' => ':',
+ 'Microsoft-IIS/7' => '%3A',
+ ) ),
+
+ // remaining chars do not need encoding
+ array(
+ ';@$-_.!*',
+ ';@$-_.!*',
+ ),
+
+ ### Other tests
+ // slash remain unchanged. %2F seems to break things
+ array( '/', '/' ),
+
+ // Other 'funnies' chars
+ array( '[]', '%5B%5D' ),
+ array( '<>', '%3C%3E' ),
+
+ // Apostrophe is encoded
+ array( '\'', '%27' ),
+ );
+ }
+}
diff --git a/tests/phpunit/includes/HooksTest.php b/tests/phpunit/includes/HooksTest.php
new file mode 100644
index 00000000..2f9d9f8d
--- /dev/null
+++ b/tests/phpunit/includes/HooksTest.php
@@ -0,0 +1,102 @@
+<?php
+
+class HooksTest extends MediaWikiTestCase {
+
+ public function testOldStyleHooks() {
+ $foo = 'Foo';
+ $bar = 'Bar';
+
+ $i = new NothingClass();
+
+ global $wgHooks;
+
+ $wgHooks['MediaWikiHooksTest001'][] = array( $i, 'someNonStatic' );
+
+ wfRunHooks( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+
+ $this->assertEquals( 'fOO', $foo, 'Standard method' );
+ $foo = 'Foo';
+
+ $wgHooks['MediaWikiHooksTest001'][] = $i;
+
+ wfRunHooks( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+
+ $this->assertEquals( 'foo', $foo, 'onEventName style' );
+ $foo = 'Foo';
+
+ $wgHooks['MediaWikiHooksTest001'][] = array( $i, 'someNonStaticWithData', 'baz' );
+
+ wfRunHooks( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+
+ $this->assertEquals( 'baz', $foo, 'Data included' );
+ $foo = 'Foo';
+
+ $wgHooks['MediaWikiHooksTest001'][] = array( $i, 'someStatic' );
+
+ wfRunHooks( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+
+ $this->assertEquals( 'bah', $foo, 'Standard static method' );
+ //$foo = 'Foo';
+
+ unset( $wgHooks['MediaWikiHooksTest001'] );
+
+ }
+
+ public function testNewStyleHooks() {
+ $foo = 'Foo';
+ $bar = 'Bar';
+
+ $i = new NothingClass();
+
+ Hooks::register( 'MediaWikiHooksTest001', array( $i, 'someNonStatic' ) );
+
+ Hooks::run( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+
+ $this->assertEquals( 'fOO', $foo, 'Standard method' );
+ $foo = 'Foo';
+
+ Hooks::register( 'MediaWikiHooksTest001', $i );
+
+ Hooks::run( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+
+ $this->assertEquals( 'foo', $foo, 'onEventName style' );
+ $foo = 'Foo';
+
+ Hooks::register( 'MediaWikiHooksTest001', array( $i, 'someNonStaticWithData', 'baz' ) );
+
+ Hooks::run( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+
+ $this->assertEquals( 'baz', $foo, 'Data included' );
+ $foo = 'Foo';
+
+ Hooks::register( 'MediaWikiHooksTest001', array( $i, 'someStatic' ) );
+
+ Hooks::run( 'MediaWikiHooksTest001', array( &$foo, &$bar ) );
+
+ $this->assertEquals( 'bah', $foo, 'Standard static method' );
+ $foo = 'Foo';
+ }
+}
+
+class NothingClass {
+ static public function someStatic( &$foo, &$bar ) {
+ $foo = 'bah';
+ return true;
+ }
+
+ public function someNonStatic( &$foo, &$bar ) {
+ $foo = 'fOO';
+ $bar = 'bAR';
+ return true;
+ }
+
+ public function onMediaWikiHooksTest001( &$foo, &$bar ) {
+ $foo = 'foo';
+ return true;
+ }
+
+ public function someNonStaticWithData( $foo, &$bar ) {
+ $bar = $foo;
+ return true;
+ }
+}
diff --git a/tests/phpunit/includes/HtmlTest.php b/tests/phpunit/includes/HtmlTest.php
new file mode 100644
index 00000000..96bb1803
--- /dev/null
+++ b/tests/phpunit/includes/HtmlTest.php
@@ -0,0 +1,90 @@
+<?php
+/** tests for includes/Html.php */
+
+class HtmlTest extends MediaWikiTestCase {
+ private static $oldLang;
+
+ public function setUp() {
+ global $wgLang, $wgLanguageCode;
+
+ self::$oldLang = $wgLang;
+ $wgLanguageCode = 'en';
+ $wgLang = Language::factory( $wgLanguageCode );
+ }
+
+ public function tearDown() {
+ global $wgLang, $wgLanguageCode;
+ $wgLang = self::$oldLang;
+ $wgLanguageCode = $wgLang->getCode();
+ }
+
+ public function testExpandAttributesSkipsNullAndFalse() {
+
+ ### EMPTY ########
+ $this->AssertEmpty(
+ Html::expandAttributes( array( 'foo'=>null) ),
+ 'skip keys with null value'
+ );
+ $this->AssertEmpty(
+ Html::expandAttributes( array( 'foo'=>false) ),
+ 'skip keys with false value'
+ );
+ $this->AssertNotEmpty(
+ Html::expandAttributes( array( 'foo'=>'') ),
+ 'keep keys with an empty string'
+ );
+ }
+
+ public function testExpandAttributesForBooleans() {
+ $this->AssertEquals(
+ '',
+ Html::expandAttributes( array( 'selected'=>false) ),
+ 'Boolean attributes do not generates output when value is false'
+ );
+ $this->AssertEquals(
+ '',
+ Html::expandAttributes( array( 'selected'=>null) ),
+ 'Boolean attributes do not generates output when value is null'
+ );
+
+ ### FIXME: maybe they should just output 'selected'
+ $this->AssertEquals(
+ ' selected=""',
+ Html::expandAttributes( array( 'selected'=>true ) ),
+ 'Boolean attributes skip value output'
+ );
+ $this->AssertEquals(
+ ' selected=""',
+ Html::expandAttributes( array( 'selected' ) ),
+ 'Boolean attributes (ex: selected) do not need a value'
+ );
+ }
+
+ /**
+ * Test for Html::expandAttributes()
+ * Please note it output a string prefixed with a space!
+ */
+ public function testExpandAttributesVariousExpansions() {
+ ### NOT EMPTY ####
+ $this->AssertEquals(
+ ' empty_string=""',
+ Html::expandAttributes( array( 'empty_string'=>'') ),
+ 'Value with an empty string'
+ );
+ $this->AssertEquals(
+ ' key="value"',
+ Html::expandAttributes( array( 'key'=>'value') ),
+ 'Value is a string'
+ );
+ $this->AssertEquals(
+ ' one="1"',
+ Html::expandAttributes( array( 'one'=>1) ),
+ 'Value is a numeric one'
+ );
+ $this->AssertEquals(
+ ' zero="0"',
+ Html::expandAttributes( array( 'zero'=>0) ),
+ 'Value is a numeric zero'
+ );
+ }
+}
diff --git a/tests/phpunit/includes/HttpTest.php b/tests/phpunit/includes/HttpTest.php
new file mode 100644
index 00000000..1a99af7d
--- /dev/null
+++ b/tests/phpunit/includes/HttpTest.php
@@ -0,0 +1,618 @@
+<?php
+
+class MockCookie extends Cookie {
+ public function canServeDomain( $arg ) { return parent::canServeDomain( $arg ); }
+ public function canServePath( $arg ) { return parent::canServePath( $arg ); }
+ public function isUnExpired() { return parent::isUnExpired(); }
+}
+
+/**
+ * @group Broken
+ */
+class HttpTest extends MediaWikiTestCase {
+ static $content;
+ static $headers;
+ static $has_curl;
+ static $has_fopen;
+ static $has_proxy = false;
+ static $proxy = "http://hulk:8080/";
+ var $test_geturl = array(
+ "http://en.wikipedia.org/robots.txt",
+ "https://secure.wikimedia.org/",
+ "http://pecl.php.net/feeds/pkg_apc.rss",
+ "http://meta.wikimedia.org/w/index.php?title=Interwiki_map&action=raw",
+ "http://www.mediawiki.org/w/api.php?action=query&list=categorymembers&cmtitle=Category:MediaWiki_hooks&format=php",
+ );
+ var $test_requesturl = array( "http://en.wikipedia.org/wiki/Special:Export/User:MarkAHershberger" );
+
+ var $test_posturl = array( "http://www.comp.leeds.ac.uk/cgi-bin/Perl/environment-example" => "review=test" );
+
+ function setUp() {
+ putenv( "http_proxy" ); /* Remove any proxy env var, so curl doesn't get confused */
+ if ( is_array( self::$content ) ) {
+ return;
+ }
+ self::$has_curl = function_exists( 'curl_init' );
+ self::$has_fopen = wfIniGetBool( 'allow_url_fopen' );
+
+ if ( !file_exists( "/usr/bin/curl" ) ) {
+ $this->markTestIncomplete( "This test requires the curl binary at /usr/bin/curl. If you have curl, please file a bug on this test, or, better yet, provide a patch." );
+ }
+
+ $content = tempnam( wfTempDir(), "" );
+ $headers = tempnam( wfTempDir(), "" );
+ if ( !$content && !$headers ) {
+ die( "Couldn't create temp file!" );
+ }
+
+ // This probably isn't the best test for a proxy, but it works on my system!
+ system( "curl -0 -o $content -s " . self::$proxy );
+ $out = file_get_contents( $content );
+ if ( $out ) {
+ self::$has_proxy = true;
+ }
+
+ /* Maybe use wget instead of curl here ... just to use a different codebase? */
+ foreach ( $this->test_geturl as $u ) {
+ system( "curl -0 -s -D $headers '$u' -o $content" );
+ self::$content["GET $u"] = file_get_contents( $content );
+ self::$headers["GET $u"] = file_get_contents( $headers );
+ }
+ foreach ( $this->test_requesturl as $u ) {
+ system( "curl -0 -s -X POST -H 'Content-Length: 0' -D $headers '$u' -o $content" );
+ self::$content["POST $u"] = file_get_contents( $content );
+ self::$headers["POST $u"] = file_get_contents( $headers );
+ }
+ foreach ( $this->test_posturl as $u => $postData ) {
+ system( "curl -0 -s -X POST -d '$postData' -D $headers '$u' -o $content" );
+ self::$content["POST $u => $postData"] = file_get_contents( $content );
+ self::$headers["POST $u => $postData"] = file_get_contents( $headers );
+ }
+ unlink( $content );
+ unlink( $headers );
+ }
+
+
+ function testInstantiation() {
+ Http::$httpEngine = false;
+
+ $r = MWHttpRequest::factory( "http://www.example.com/" );
+ if ( self::$has_curl ) {
+ $this->assertThat( $r, $this->isInstanceOf( 'CurlHttpRequest' ) );
+ } else {
+ $this->assertThat( $r, $this->isInstanceOf( 'PhpHttpRequest' ) );
+ }
+ unset( $r );
+
+ if ( !self::$has_fopen ) {
+ $this->setExpectedException( 'MWException' );
+ }
+ Http::$httpEngine = 'php';
+ $r = MWHttpRequest::factory( "http://www.example.com/" );
+ $this->assertThat( $r, $this->isInstanceOf( 'PhpHttpRequest' ) );
+ unset( $r );
+
+ if ( !self::$has_curl ) {
+ $this->setExpectedException( 'MWException' );
+ }
+ Http::$httpEngine = 'curl';
+ $r = MWHttpRequest::factory( "http://www.example.com/" );
+ if ( self::$has_curl ) {
+ $this->assertThat( $r, $this->isInstanceOf( 'CurlHttpRequest' ) );
+ }
+ }
+
+ function runHTTPFailureChecks() {
+ // Each of the following requests should result in a failure.
+
+ $timeout = 1;
+ $start_time = time();
+ $r = Http::get( "http://www.example.com:1/", $timeout );
+ $end_time = time();
+ $this->assertLessThan( $timeout + 2, $end_time - $start_time,
+ "Request took less than {$timeout}s via " . Http::$httpEngine );
+ $this->assertEquals( $r, false, "false -- what we get on error from Http::get()" );
+
+ $r = Http::get( "http://www.mediawiki.org/xml/made-up-url", $timeout );
+ $this->assertFalse( $r, "False on 404s" );
+
+
+ $r = MWHttpRequest::factory( "http://www.mediawiki.org/xml/made-up-url" );
+ $er = $r->execute();
+ if ( $r instanceof PhpHttpRequest && version_compare( '5.2.10', phpversion(), '>' ) ) {
+ $this->assertRegexp( "/HTTP request failed/", $er->getWikiText() );
+ } else {
+ $this->assertRegexp( "/404 Not Found/", $er->getWikiText() );
+ }
+ }
+
+ function testFailureDefault() {
+ Http::$httpEngine = false;
+ $this->runHTTPFailureChecks();
+ }
+
+ function testFailurePhp() {
+ if ( !self::$has_fopen ) {
+ $this->markTestIncomplete( "This test requires allow_url_fopen=true." );
+ }
+
+ Http::$httpEngine = "php";
+ $this->runHTTPFailureChecks();
+ }
+
+ function testFailureCurl() {
+ if ( !self::$has_curl ) {
+ $this->markTestIncomplete( "This test requires curl." );
+ }
+
+ Http::$httpEngine = "curl";
+ $this->runHTTPFailureChecks();
+ }
+
+ /* ./phase3/includes/Import.php:1108: $data = Http::request( $method, $url ); */
+ /* ./includes/Import.php:1124: $link = Title::newFromText( "$interwiki:Special:Export/$page" ); */
+ /* ./includes/Import.php:1134: return ImportStreamSource::newFromURL( $url, "POST" ); */
+ function runHTTPRequests( $proxy = null ) {
+ $opt = array();
+
+ if ( $proxy ) {
+ $opt['proxy'] = $proxy;
+ } elseif ( $proxy === false ) {
+ $opt['noProxy'] = true;
+ }
+
+ /* no postData here because the only request I could find in code so far didn't have any */
+ foreach ( $this->test_requesturl as $u ) {
+ $r = Http::request( "POST", $u, $opt );
+ $this->assertEquals( self::$content["POST $u"], "$r", "POST $u with " . Http::$httpEngine );
+ }
+ }
+
+ function testRequestDefault() {
+ Http::$httpEngine = false;
+ $this->runHTTPRequests();
+ }
+
+ function testRequestPhp() {
+ if ( !self::$has_fopen ) {
+ $this->markTestIncomplete( "This test requires allow_url_fopen=true." );
+ }
+
+ Http::$httpEngine = "php";
+ $this->runHTTPRequests();
+ }
+
+ function testRequestCurl() {
+ if ( !self::$has_curl ) {
+ $this->markTestIncomplete( "This test requires curl." );
+ }
+
+ Http::$httpEngine = "curl";
+ $this->runHTTPRequests();
+ }
+
+ function runHTTPGets( $proxy = null ) {
+ $opt = array();
+
+ if ( $proxy ) {
+ $opt['proxy'] = $proxy;
+ } elseif ( $proxy === false ) {
+ $opt['noProxy'] = true;
+ }
+
+ foreach ( $this->test_geturl as $u ) {
+ $r = Http::get( $u, 30, $opt ); /* timeout of 30s */
+ $this->assertEquals( self::$content["GET $u"], "$r", "Get $u with " . Http::$httpEngine );
+ }
+ }
+
+ function testGetDefault() {
+ Http::$httpEngine = false;
+ $this->runHTTPGets();
+ }
+
+ function testGetPhp() {
+ if ( !self::$has_fopen ) {
+ $this->markTestIncomplete( "This test requires allow_url_fopen=true." );
+ }
+
+ Http::$httpEngine = "php";
+ $this->runHTTPGets();
+ }
+
+ function testGetCurl() {
+ if ( !self::$has_curl ) {
+ $this->markTestIncomplete( "This test requires curl." );
+ }
+
+ Http::$httpEngine = "curl";
+ $this->runHTTPGets();
+ }
+
+ function runHTTPPosts( $proxy = null ) {
+ $opt = array();
+
+ if ( $proxy ) {
+ $opt['proxy'] = $proxy;
+ } elseif ( $proxy === false ) {
+ $opt['noProxy'] = true;
+ }
+
+ foreach ( $this->test_posturl as $u => $postData ) {
+ $opt['postData'] = $postData;
+ $r = Http::post( $u, $opt );
+ $this->assertEquals( self::$content["POST $u => $postData"], "$r",
+ "POST $u (postData=$postData) with " . Http::$httpEngine );
+ }
+ }
+
+ function testPostDefault() {
+ Http::$httpEngine = false;
+ $this->runHTTPPosts();
+ }
+
+ function testPostPhp() {
+ if ( !self::$has_fopen ) {
+ $this->markTestIncomplete( "This test requires allow_url_fopen=true." );
+ }
+
+ Http::$httpEngine = "php";
+ $this->runHTTPPosts();
+ }
+
+ function testPostCurl() {
+ if ( !self::$has_curl ) {
+ $this->markTestIncomplete( "This test requires curl." );
+ }
+
+ Http::$httpEngine = "curl";
+ $this->runHTTPPosts();
+ }
+
+ function runProxyRequests() {
+ if ( !self::$has_proxy ) {
+ $this->markTestIncomplete( "This test requires a proxy." );
+ }
+ $this->runHTTPGets( self::$proxy );
+ $this->runHTTPPosts( self::$proxy );
+ $this->runHTTPRequests( self::$proxy );
+
+ // Set false here to do noProxy
+ $this->runHTTPGets( false );
+ $this->runHTTPPosts( false );
+ $this->runHTTPRequests( false );
+ }
+
+ function testProxyDefault() {
+ Http::$httpEngine = false;
+ $this->runProxyRequests();
+ }
+
+ function testProxyPhp() {
+ if ( !self::$has_fopen ) {
+ $this->markTestIncomplete( "This test requires allow_url_fopen=true." );
+ }
+
+ Http::$httpEngine = 'php';
+ $this->runProxyRequests();
+ }
+
+ function testProxyCurl() {
+ if ( !self::$has_curl ) {
+ $this->markTestIncomplete( "This test requires curl." );
+ }
+
+ Http::$httpEngine = 'curl';
+ $this->runProxyRequests();
+ }
+
+ function testIsLocalUrl() {
+ }
+
+ /* ./extensions/DonationInterface/payflowpro_gateway/payflowpro_gateway.body.php:559: $user_agent = Http::userAgent(); */
+ function testUserAgent() {
+ }
+
+ function testIsValidUrl() {
+ }
+
+ /**
+ * @dataProvider cookieDomains
+ */
+ function testValidateCookieDomain( $expected, $domain, $origin=null ) {
+ if ( $origin ) {
+ $ok = Cookie::validateCookieDomain( $domain, $origin );
+ $msg = "$domain against origin $origin";
+ } else {
+ $ok = Cookie::validateCookieDomain( $domain );
+ $msg = "$domain";
+ }
+ $this->assertEquals( $expected, $ok, $msg );
+ }
+
+ function cookieDomains() {
+ return array(
+ array( false, "org"),
+ array( false, ".org"),
+ array( true, "wikipedia.org"),
+ array( true, ".wikipedia.org"),
+ array( false, "co.uk" ),
+ array( false, ".co.uk" ),
+ array( false, "gov.uk" ),
+ array( false, ".gov.uk" ),
+ array( true, "supermarket.uk" ),
+ array( false, "uk" ),
+ array( false, ".uk" ),
+ array( false, "127.0.0." ),
+ array( false, "127." ),
+ array( false, "127.0.0.1." ),
+ array( true, "127.0.0.1" ),
+ array( false, "333.0.0.1" ),
+ array( true, "example.com" ),
+ array( false, "example.com." ),
+ array( true, ".example.com" ),
+
+ array( true, ".example.com", "www.example.com" ),
+ array( false, "example.com", "www.example.com" ),
+ array( true, "127.0.0.1", "127.0.0.1" ),
+ array( false, "127.0.0.1", "localhost" ),
+ );
+ }
+
+ function testSetCooke() {
+ $c = new MockCookie( "name", "value",
+ array(
+ "domain" => "ac.th",
+ "path" => "/path/",
+ ) );
+ $this->assertFalse( $c->canServeDomain( "ac.th" ) );
+
+ $c = new MockCookie( "name", "value",
+ array(
+ "domain" => "example.com",
+ "path" => "/path/",
+ ) );
+
+ $this->assertTrue( $c->canServeDomain( "example.com" ) );
+ $this->assertFalse( $c->canServeDomain( "www.example.com" ) );
+
+ $c = new MockCookie( "name", "value",
+ array(
+ "domain" => ".example.com",
+ "path" => "/path/",
+ ) );
+
+ $this->assertFalse( $c->canServeDomain( "www.example.net" ) );
+ $this->assertFalse( $c->canServeDomain( "example.com" ) );
+ $this->assertTrue( $c->canServeDomain( "www.example.com" ) );
+
+ $this->assertFalse( $c->canServePath( "/" ) );
+ $this->assertFalse( $c->canServePath( "/bogus/path/" ) );
+ $this->assertFalse( $c->canServePath( "/path" ) );
+ $this->assertTrue( $c->canServePath( "/path/" ) );
+
+ $this->assertTrue( $c->isUnExpired() );
+
+ $this->assertEquals( "", $c->serializeToHttpRequest( "/path/", "www.example.net" ) );
+ $this->assertEquals( "", $c->serializeToHttpRequest( "/", "www.example.com" ) );
+ $this->assertEquals( "name=value", $c->serializeToHttpRequest( "/path/", "www.example.com" ) );
+
+ $c = new MockCookie( "name", "value",
+ array(
+ "domain" => "www.example.com",
+ "path" => "/path/",
+ ) );
+ $this->assertFalse( $c->canServeDomain( "example.com" ) );
+ $this->assertFalse( $c->canServeDomain( "www.example.net" ) );
+ $this->assertTrue( $c->canServeDomain( "www.example.com" ) );
+
+ $c = new MockCookie( "name", "value",
+ array(
+ "domain" => ".example.com",
+ "path" => "/path/",
+ "expires" => "-1 day",
+ ) );
+ $this->assertFalse( $c->isUnExpired() );
+ $this->assertEquals( "", $c->serializeToHttpRequest( "/path/", "www.example.com" ) );
+
+ $c = new MockCookie( "name", "value",
+ array(
+ "domain" => ".example.com",
+ "path" => "/path/",
+ "expires" => "+1 day",
+ ) );
+ $this->assertTrue( $c->isUnExpired() );
+ $this->assertEquals( "name=value", $c->serializeToHttpRequest( "/path/", "www.example.com" ) );
+ }
+
+ function testCookieJarSetCookie() {
+ $cj = new CookieJar;
+ $cj->setCookie( "name", "value",
+ array(
+ "domain" => ".example.com",
+ "path" => "/path/",
+ ) );
+ $cj->setCookie( "name2", "value",
+ array(
+ "domain" => ".example.com",
+ "path" => "/path/sub",
+ ) );
+ $cj->setCookie( "name3", "value",
+ array(
+ "domain" => ".example.com",
+ "path" => "/",
+ ) );
+ $cj->setCookie( "name4", "value",
+ array(
+ "domain" => ".example.net",
+ "path" => "/path/",
+ ) );
+ $cj->setCookie( "name5", "value",
+ array(
+ "domain" => ".example.net",
+ "path" => "/path/",
+ "expires" => "-1 day",
+ ) );
+
+ $this->assertEquals( "name4=value", $cj->serializeToHttpRequest( "/path/", "www.example.net" ) );
+ $this->assertEquals( "name3=value", $cj->serializeToHttpRequest( "/", "www.example.com" ) );
+ $this->assertEquals( "name=value; name3=value", $cj->serializeToHttpRequest( "/path/", "www.example.com" ) );
+
+ $cj->setCookie( "name5", "value",
+ array(
+ "domain" => ".example.net",
+ "path" => "/path/",
+ "expires" => "+1 day",
+ ) );
+ $this->assertEquals( "name4=value; name5=value", $cj->serializeToHttpRequest( "/path/", "www.example.net" ) );
+
+ $cj->setCookie( "name4", "value",
+ array(
+ "domain" => ".example.net",
+ "path" => "/path/",
+ "expires" => "-1 day",
+ ) );
+ $this->assertEquals( "name5=value", $cj->serializeToHttpRequest( "/path/", "www.example.net" ) );
+ }
+
+ function testParseResponseHeader() {
+ $cj = new CookieJar;
+
+ $h[] = "Set-Cookie: name4=value; domain=.example.com; path=/; expires=Mon, 09-Dec-2029 13:46:00 GMT";
+ $cj->parseCookieResponseHeader( $h[0], "www.example.com" );
+ $this->assertEquals( "name4=value", $cj->serializeToHttpRequest( "/", "www.example.com" ) );
+
+ $h[] = "name4=value2; domain=.example.com; path=/path/; expires=Mon, 09-Dec-2029 13:46:00 GMT";
+ $cj->parseCookieResponseHeader( $h[1], "www.example.com" );
+ $this->assertEquals( "", $cj->serializeToHttpRequest( "/", "www.example.com" ) );
+ $this->assertEquals( "name4=value2", $cj->serializeToHttpRequest( "/path/", "www.example.com" ) );
+
+ $h[] = "name5=value3; domain=.example.com; path=/path/; expires=Mon, 09-Dec-2029 13:46:00 GMT";
+ $cj->parseCookieResponseHeader( $h[2], "www.example.com" );
+ $this->assertEquals( "name4=value2; name5=value3", $cj->serializeToHttpRequest( "/path/", "www.example.com" ) );
+
+ $h[] = "name6=value3; domain=.example.net; path=/path/; expires=Mon, 09-Dec-2029 13:46:00 GMT";
+ $cj->parseCookieResponseHeader( $h[3], "www.example.com" );
+ $this->assertEquals( "", $cj->serializeToHttpRequest( "/path/", "www.example.net" ) );
+
+ $h[] = "name6=value0; domain=.example.net; path=/path/; expires=Mon, 09-Dec-1999 13:46:00 GMT";
+ $cj->parseCookieResponseHeader( $h[4], "www.example.net" );
+ $this->assertEquals( "", $cj->serializeToHttpRequest( "/path/", "www.example.net" ) );
+
+ $h[] = "name6=value4; domain=.example.net; path=/path/; expires=Mon, 09-Dec-2029 13:46:00 GMT";
+ $cj->parseCookieResponseHeader( $h[5], "www.example.net" );
+ $this->assertEquals( "name6=value4", $cj->serializeToHttpRequest( "/path/", "www.example.net" ) );
+ }
+
+ function runCookieRequests() {
+ $r = MWHttpRequest::factory( "http://www.php.net/manual", array( 'followRedirects' => true ) );
+ $r->execute();
+
+ $jar = $r->getCookieJar();
+ $this->assertThat( $jar, $this->isInstanceOf( 'CookieJar' ) );
+
+ $serialized = $jar->serializeToHttpRequest( "/search?q=test", "www.php.net" );
+ $this->assertRegExp( '/\bCOUNTRY=[^=;]+/', $serialized );
+ $this->assertRegExp( '/\bLAST_LANG=[^=;]+/', $serialized );
+ $this->assertEquals( '', $jar->serializeToHttpRequest( "/search?q=test", "www.php.com" ) );
+ }
+
+ function testCookieRequestDefault() {
+ Http::$httpEngine = false;
+ $this->runCookieRequests();
+ }
+ function testCookieRequestPhp() {
+ if ( !self::$has_fopen ) {
+ $this->markTestIncomplete( "This test requires allow_url_fopen=true." );
+ }
+
+ Http::$httpEngine = 'php';
+ $this->runCookieRequests();
+ }
+ function testCookieRequestCurl() {
+ if ( !self::$has_curl ) {
+ $this->markTestIncomplete( "This test requires curl." );
+ }
+
+ Http::$httpEngine = 'curl';
+ $this->runCookieRequests();
+ }
+
+ /**
+ * Test Http::isValidURI()
+ * @bug 27854 : Http::isValidURI is to lax
+ *@dataProvider provideURI */
+ function testIsValidUri( $expect, $URI, $message = '' ) {
+ $this->assertEquals(
+ $expect,
+ (bool) Http::isValidURI( $URI ),
+ $message
+ );
+ }
+
+ /**
+ * Feeds URI to test a long regular expression in Http::isValidURI
+ */
+ function provideURI() {
+ /** Format: 'boolean expectation', 'URI to test', 'Optional message' */
+ return array(
+ array( false, '¿non sens before!! http://a', 'Allow anything before URI' ),
+
+ # (http|https) - only two schemes allowed
+ array( true, 'http://www.example.org/' ),
+ array( true, 'https://www.example.org/' ),
+ array( true, 'http://www.example.org', 'URI without directory' ),
+ array( true, 'http://a', 'Short name' ),
+ array( true, 'http://étoile', 'Allow UTF-8 in hostname' ), # 'étoile' is french for 'star'
+ array( false, '\\host\directory', 'CIFS share' ),
+ array( false, 'gopher://host/dir', 'Reject gopher scheme' ),
+ array( false, 'telnet://host', 'Reject telnet scheme' ),
+
+ # :\/\/ - double slashes
+ array( false, 'http//example.org', 'Reject missing colon in protocol' ),
+ array( false, 'http:/example.org', 'Reject missing slash in protocol' ),
+ array( false, 'http:example.org', 'Must have two slashes' ),
+ # Following fail since hostname can be made of anything
+ array( false, 'http:///example.org', 'Must have exactly two slashes, not three' ),
+
+ # (\w+:{0,1}\w*@)? - optional user:pass
+ array( true, 'http://user@host', 'Username provided' ),
+ array( true, 'http://user:@host', 'Username provided, no password' ),
+ array( true, 'http://user:pass@host', 'Username and password provided' ),
+
+ # (\S+) - host part is made of anything not whitespaces
+ array( false, 'http://!"èèè¿¿¿~~\'', 'hostname is made of any non whitespace' ),
+ array( false, 'http://exam:ple.org/', 'hostname can not use colons!' ),
+
+ # (:[0-9]+)? - port number
+ array( true, 'http://example.org:80/' ),
+ array( true, 'https://example.org:80/' ),
+ array( true, 'http://example.org:443/' ),
+ array( true, 'https://example.org:443/' ),
+
+ # Part after the hostname is / or / with something else
+ array( true, 'http://example/#' ),
+ array( true, 'http://example/!' ),
+ array( true, 'http://example/:' ),
+ array( true, 'http://example/.' ),
+ array( true, 'http://example/?' ),
+ array( true, 'http://example/+' ),
+ array( true, 'http://example/=' ),
+ array( true, 'http://example/&' ),
+ array( true, 'http://example/%' ),
+ array( true, 'http://example/@' ),
+ array( true, 'http://example/-' ),
+ array( true, 'http://example//' ),
+ array( true, 'http://example/&' ),
+
+ # Fragment
+ array( true, 'http://exam#ple.org', ), # This one is valid, really!
+ array( true, 'http://example.org:80#anchor' ),
+ array( true, 'http://example.org/?id#anchor' ),
+ array( true, 'http://example.org/?#anchor' ),
+
+ array( false, 'http://a ¿non !!sens after', 'Allow anything after URI' ),
+ );
+ }
+
+}
diff --git a/tests/phpunit/includes/IPTest.php b/tests/phpunit/includes/IPTest.php
new file mode 100644
index 00000000..c77dd852
--- /dev/null
+++ b/tests/phpunit/includes/IPTest.php
@@ -0,0 +1,508 @@
+<?php
+/*
+ * Tests for IP validity functions. Ported from /t/inc/IP.t by avar.
+ */
+
+class IPTest extends MediaWikiTestCase {
+ /**
+ * not sure it should be tested with boolean false. hashar 20100924
+ * @covers IP::isIPAddress
+ */
+ public function testisIPAddress() {
+ $this->assertFalse( IP::isIPAddress( false ), 'Boolean false is not an IP' );
+ $this->assertFalse( IP::isIPAddress( true ), 'Boolean true is not an IP' );
+ $this->assertFalse( IP::isIPAddress( "" ), 'Empty string is not an IP' );
+ $this->assertFalse( IP::isIPAddress( 'abc' ), 'Garbage IP string' );
+ $this->assertFalse( IP::isIPAddress( ':' ), 'Single ":" is not an IP' );
+ $this->assertFalse( IP::isIPAddress( '2001:0DB8::A:1::1'), 'IPv6 with a double :: occurence' );
+ $this->assertFalse( IP::isIPAddress( '2001:0DB8::A:1::'), 'IPv6 with a double :: occurence, last at end' );
+ $this->assertFalse( IP::isIPAddress( '::2001:0DB8::5:1'), 'IPv6 with a double :: occurence, firt at beginning' );
+ $this->assertFalse( IP::isIPAddress( '124.24.52' ), 'IPv4 not enough quads' );
+ $this->assertFalse( IP::isIPAddress( '24.324.52.13' ), 'IPv4 out of range' );
+ $this->assertFalse( IP::isIPAddress( '.24.52.13' ), 'IPv4 starts with period' );
+ $this->assertFalse( IP::isIPAddress( 'fc:100:300' ), 'IPv6 with only 3 words' );
+
+ $this->assertTrue( IP::isIPAddress( '::' ), 'RFC 4291 IPv6 Unspecified Address' );
+ $this->assertTrue( IP::isIPAddress( '::1' ), 'RFC 4291 IPv6 Loopback Address' );
+ $this->assertTrue( IP::isIPAddress( '74.24.52.13/20', 'IPv4 range' ) );
+ $this->assertTrue( IP::isIPAddress( 'fc:100:a:d:1:e:ac:0/24' ), 'IPv6 range' );
+ $this->assertTrue( IP::isIPAddress( 'fc::100:a:d:1:e:ac/96' ), 'IPv6 range with "::"' );
+
+ $validIPs = array( 'fc:100::', 'fc:100:a:d:1:e:ac::', 'fc::100', '::fc:100:a:d:1:e:ac',
+ '::fc', 'fc::100:a:d:1:e:ac', 'fc:100:a:d:1:e:ac:0', '124.24.52.13', '1.24.52.13' );
+ foreach ( $validIPs as $ip ) {
+ $this->assertTrue( IP::isIPAddress( $ip ), "$ip is a valid IP address" );
+ }
+ }
+
+ /**
+ * @covers IP::isIPv6
+ */
+ public function testisIPv6() {
+ $this->assertFalse( IP::isIPv6( ':fc:100::' ), 'IPv6 starting with lone ":"' );
+ $this->assertFalse( IP::isIPv6( 'fc:100:::' ), 'IPv6 ending with a ":::"' );
+ $this->assertFalse( IP::isIPv6( 'fc:300' ), 'IPv6 with only 2 words' );
+ $this->assertFalse( IP::isIPv6( 'fc:100:300' ), 'IPv6 with only 3 words' );
+
+ $this->assertTrue( IP::isIPv6( 'fc:100::' ) );
+ $this->assertTrue( IP::isIPv6( 'fc:100:a::' ) );
+ $this->assertTrue( IP::isIPv6( 'fc:100:a:d::' ) );
+ $this->assertTrue( IP::isIPv6( 'fc:100:a:d:1::' ) );
+ $this->assertTrue( IP::isIPv6( 'fc:100:a:d:1:e::' ) );
+ $this->assertTrue( IP::isIPv6( 'fc:100:a:d:1:e:ac::' ) );
+
+ $this->assertFalse( IP::isIPv6( 'fc:100:a:d:1:e:ac:0::' ), 'IPv6 with 8 words ending with "::"' );
+ $this->assertFalse( IP::isIPv6( 'fc:100:a:d:1:e:ac:0:1::' ), 'IPv6 with 9 words ending with "::"' );
+
+ $this->assertFalse( IP::isIPv6( ':::' ) );
+ $this->assertFalse( IP::isIPv6( '::0:' ), 'IPv6 ending in a lone ":"' );
+
+ $this->assertTrue( IP::isIPv6( '::' ), 'IPv6 zero address' );
+ $this->assertTrue( IP::isIPv6( '::0' ) );
+ $this->assertTrue( IP::isIPv6( '::fc' ) );
+ $this->assertTrue( IP::isIPv6( '::fc:100' ) );
+ $this->assertTrue( IP::isIPv6( '::fc:100:a' ) );
+ $this->assertTrue( IP::isIPv6( '::fc:100:a:d' ) );
+ $this->assertTrue( IP::isIPv6( '::fc:100:a:d:1' ) );
+ $this->assertTrue( IP::isIPv6( '::fc:100:a:d:1:e' ) );
+ $this->assertTrue( IP::isIPv6( '::fc:100:a:d:1:e:ac' ) );
+
+ $this->assertFalse( IP::isIPv6( '::fc:100:a:d:1:e:ac:0' ), 'IPv6 with "::" and 8 words' );
+ $this->assertFalse( IP::isIPv6( '::fc:100:a:d:1:e:ac:0:1' ), 'IPv6 with 9 words' );
+
+ $this->assertFalse( IP::isIPv6( ':fc::100' ), 'IPv6 starting with lone ":"' );
+ $this->assertFalse( IP::isIPv6( 'fc::100:' ), 'IPv6 ending with lone ":"' );
+ $this->assertFalse( IP::isIPv6( 'fc:::100' ), 'IPv6 with ":::" in the middle' );
+
+ $this->assertTrue( IP::isIPv6( 'fc::100' ), 'IPv6 with "::" and 2 words' );
+ $this->assertTrue( IP::isIPv6( 'fc::100:a' ), 'IPv6 with "::" and 3 words' );
+ $this->assertTrue( IP::isIPv6( 'fc::100:a:d', 'IPv6 with "::" and 4 words' ) );
+ $this->assertTrue( IP::isIPv6( 'fc::100:a:d:1' ), 'IPv6 with "::" and 5 words' );
+ $this->assertTrue( IP::isIPv6( 'fc::100:a:d:1:e' ), 'IPv6 with "::" and 6 words' );
+ $this->assertTrue( IP::isIPv6( 'fc::100:a:d:1:e:ac' ), 'IPv6 with "::" and 7 words' );
+ $this->assertTrue( IP::isIPv6( '2001::df'), 'IPv6 with "::" and 2 words' );
+ $this->assertTrue( IP::isIPv6( '2001:5c0:1400:a::df'), 'IPv6 with "::" and 5 words' );
+ $this->assertTrue( IP::isIPv6( '2001:5c0:1400:a::df:2'), 'IPv6 with "::" and 6 words' );
+
+ $this->assertFalse( IP::isIPv6( 'fc::100:a:d:1:e:ac:0' ), 'IPv6 with "::" and 8 words' );
+ $this->assertFalse( IP::isIPv6( 'fc::100:a:d:1:e:ac:0:1' ), 'IPv6 with 9 words' );
+
+ $this->assertTrue( IP::isIPv6( 'fc:100:a:d:1:e:ac:0' ) );
+ }
+
+ /**
+ * @covers IP::isIPv4
+ */
+ public function testisIPv4() {
+ $this->assertFalse( IP::isIPv4( false ), 'Boolean false is not an IP' );
+ $this->assertFalse( IP::isIPv4( true ), 'Boolean true is not an IP' );
+ $this->assertFalse( IP::isIPv4( "" ), 'Empty string is not an IP' );
+ $this->assertFalse( IP::isIPv4( 'abc' ) );
+ $this->assertFalse( IP::isIPv4( ':' ) );
+ $this->assertFalse( IP::isIPv4( '124.24.52' ), 'IPv4 not enough quads' );
+ $this->assertFalse( IP::isIPv4( '24.324.52.13' ), 'IPv4 out of range' );
+ $this->assertFalse( IP::isIPv4( '.24.52.13' ), 'IPv4 starts with period' );
+
+ $this->assertTrue( IP::isIPv4( '124.24.52.13' ) );
+ $this->assertTrue( IP::isIPv4( '1.24.52.13' ) );
+ $this->assertTrue( IP::isIPv4( '74.24.52.13/20', 'IPv4 range' ) );
+ }
+
+ /**
+ * @covers IP::isValid
+ */
+ public function testValidIPs() {
+ foreach ( range( 0, 255 ) as $i ) {
+ $a = sprintf( "%03d", $i );
+ $b = sprintf( "%02d", $i );
+ $c = sprintf( "%01d", $i );
+ foreach ( array_unique( array( $a, $b, $c ) ) as $f ) {
+ $ip = "$f.$f.$f.$f";
+ $this->assertTrue( IP::isValid( $ip ) , "$ip is a valid IPv4 address" );
+ }
+ }
+ foreach ( range( 0x0, 0xFFFF, 0xF ) as $i ) {
+ $a = sprintf( "%04x", $i );
+ $b = sprintf( "%03x", $i );
+ $c = sprintf( "%02x", $i );
+ foreach ( array_unique( array( $a, $b, $c ) ) as $f ) {
+ $ip = "$f:$f:$f:$f:$f:$f:$f:$f";
+ $this->assertTrue( IP::isValid( $ip ) , "$ip is a valid IPv6 address" );
+ }
+ }
+ // test with some abbreviations
+ $this->assertFalse( IP::isValid( ':fc:100::' ), 'IPv6 starting with lone ":"' );
+ $this->assertFalse( IP::isValid( 'fc:100:::' ), 'IPv6 ending with a ":::"' );
+ $this->assertFalse( IP::isValid( 'fc:300' ), 'IPv6 with only 2 words' );
+ $this->assertFalse( IP::isValid( 'fc:100:300' ), 'IPv6 with only 3 words' );
+
+ $this->assertTrue( IP::isValid( 'fc:100::' ) );
+ $this->assertTrue( IP::isValid( 'fc:100:a:d:1:e::' ) );
+ $this->assertTrue( IP::isValid( 'fc:100:a:d:1:e:ac::' ) );
+
+ $this->assertTrue( IP::isValid( 'fc::100' ), 'IPv6 with "::" and 2 words' );
+ $this->assertTrue( IP::isValid( 'fc::100:a' ), 'IPv6 with "::" and 3 words' );
+ $this->assertTrue( IP::isValid( '2001::df'), 'IPv6 with "::" and 2 words' );
+ $this->assertTrue( IP::isValid( '2001:5c0:1400:a::df'), 'IPv6 with "::" and 5 words' );
+ $this->assertTrue( IP::isValid( '2001:5c0:1400:a::df:2'), 'IPv6 with "::" and 6 words' );
+ $this->assertTrue( IP::isValid( 'fc::100:a:d:1' ), 'IPv6 with "::" and 5 words' );
+ $this->assertTrue( IP::isValid( 'fc::100:a:d:1:e:ac' ), 'IPv6 with "::" and 7 words' );
+
+ $this->assertFalse( IP::isValid( 'fc:100:a:d:1:e:ac:0::' ), 'IPv6 with 8 words ending with "::"' );
+ $this->assertFalse( IP::isValid( 'fc:100:a:d:1:e:ac:0:1::' ), 'IPv6 with 9 words ending with "::"' );
+ }
+
+ /**
+ * @covers IP::isValid
+ */
+ public function testInvalidIPs() {
+ // Out of range...
+ foreach ( range( 256, 999 ) as $i ) {
+ $a = sprintf( "%03d", $i );
+ $b = sprintf( "%02d", $i );
+ $c = sprintf( "%01d", $i );
+ foreach ( array_unique( array( $a, $b, $c ) ) as $f ) {
+ $ip = "$f.$f.$f.$f";
+ $this->assertFalse( IP::isValid( $ip ), "$ip is not a valid IPv4 address" );
+ }
+ }
+ foreach ( range( 'g', 'z' ) as $i ) {
+ $a = sprintf( "%04s", $i );
+ $b = sprintf( "%03s", $i );
+ $c = sprintf( "%02s", $i );
+ foreach ( array_unique( array( $a, $b, $c ) ) as $f ) {
+ $ip = "$f:$f:$f:$f:$f:$f:$f:$f";
+ $this->assertFalse( IP::isValid( $ip ) , "$ip is not a valid IPv6 address" );
+ }
+ }
+ // Have CIDR
+ $ipCIDRs = array(
+ '212.35.31.121/32',
+ '212.35.31.121/18',
+ '212.35.31.121/24',
+ '::ff:d:321:5/96',
+ 'ff::d3:321:5/116',
+ 'c:ff:12:1:ea:d:321:5/120',
+ );
+ foreach ( $ipCIDRs as $i ) {
+ $this->assertFalse( IP::isValid( $i ),
+ "$i is an invalid IP address because it is a block" );
+ }
+ // Incomplete/garbage
+ $invalid = array(
+ 'www.xn--var-xla.net',
+ '216.17.184.G',
+ '216.17.184.1.',
+ '216.17.184',
+ '216.17.184.',
+ '256.17.184.1'
+ );
+ foreach ( $invalid as $i ) {
+ $this->assertFalse( IP::isValid( $i ), "$i is an invalid IP address" );
+ }
+ }
+
+ /**
+ * @covers IP::isValidBlock
+ */
+ public function testValidBlocks() {
+ $valid = array(
+ '116.17.184.5/32',
+ '0.17.184.5/30',
+ '16.17.184.1/24',
+ '30.242.52.14/1',
+ '10.232.52.13/8',
+ '30.242.52.14/0',
+ '::e:f:2001/96',
+ '::c:f:2001/128',
+ '::10:f:2001/70',
+ '::fe:f:2001/1',
+ '::6d:f:2001/8',
+ '::fe:f:2001/0',
+ );
+ foreach ( $valid as $i ) {
+ $this->assertTrue( IP::isValidBlock( $i ), "$i is a valid IP block" );
+ }
+ }
+
+ /**
+ * @covers IP::isValidBlock
+ */
+ public function testInvalidBlocks() {
+ $invalid = array(
+ '116.17.184.5/33',
+ '0.17.184.5/130',
+ '16.17.184.1/-1',
+ '10.232.52.13/*',
+ '7.232.52.13/ab',
+ '11.232.52.13/',
+ '::e:f:2001/129',
+ '::c:f:2001/228',
+ '::10:f:2001/-1',
+ '::6d:f:2001/*',
+ '::86:f:2001/ab',
+ '::23:f:2001/',
+ );
+ foreach ( $invalid as $i ) {
+ $this->assertFalse( IP::isValidBlock( $i ), "$i is not a valid IP block" );
+ }
+ }
+
+ /**
+ * Improve IP::sanitizeIP() code coverage
+ * @todo Most probably incomplete
+ */
+ public function testSanitizeIP() {
+ $this->assertNull( IP::sanitizeIP('') );
+ $this->assertNull( IP::sanitizeIP(' ') );
+ }
+
+ /**
+ * test wrapper around ip2long which might return -1 or false depending on PHP version
+ * @covers IP::toUnsigned
+ */
+ public function testip2longWrapper() {
+ // @todo FIXME: Add more tests ?
+ $this->assertEquals( pow(2,32) - 1, IP::toUnsigned( '255.255.255.255' ));
+ $i = 'IN.VA.LI.D';
+ $this->assertFalse( IP::toUnSigned( $i ) );
+ }
+
+ /**
+ * @covers IP::isPublic
+ */
+ public function testPrivateIPs() {
+ $private = array( 'fc00::3', 'fc00::ff', '::1', '10.0.0.1', '172.16.0.1', '192.168.0.1' );
+ foreach ( $private as $p ) {
+ $this->assertFalse( IP::isPublic( $p ), "$p is not a public IP address" );
+ }
+ $public = array( '2001:5c0:1000:a::133', 'fc::3' );
+ foreach ( $public as $p ) {
+ $this->assertTrue( IP::isPublic( $p ), "$p is a public IP address" );
+ }
+ }
+
+ // Private wrapper used to test CIDR Parsing.
+ private function assertFalseCIDR( $CIDR, $msg='' ) {
+ $ff = array( false, false );
+ $this->assertEquals( $ff, IP::parseCIDR( $CIDR ), $msg );
+ }
+
+ // Private wrapper to test network shifting using only dot notation
+ private function assertNet( $expected, $CIDR ) {
+ $parse = IP::parseCIDR( $CIDR );
+ $this->assertEquals( $expected, long2ip( $parse[0] ), "network shifting $CIDR" );
+ }
+
+ /**
+ * @covers IP::hexToQuad
+ */
+ public function testHexToQuad() {
+ $this->assertEquals( '0.0.0.1' , IP::hexToQuad( '00000001' ) );
+ $this->assertEquals( '255.0.0.0' , IP::hexToQuad( 'FF000000' ) );
+ $this->assertEquals( '255.255.255.255', IP::hexToQuad( 'FFFFFFFF' ) );
+ $this->assertEquals( '10.188.222.255' , IP::hexToQuad( '0ABCDEFF' ) );
+ // hex not left-padded...
+ $this->assertEquals( '0.0.0.0' , IP::hexToQuad( '0' ) );
+ $this->assertEquals( '0.0.0.1' , IP::hexToQuad( '1' ) );
+ $this->assertEquals( '0.0.0.255' , IP::hexToQuad( 'FF' ) );
+ $this->assertEquals( '0.0.255.0' , IP::hexToQuad( 'FF00' ) );
+ }
+
+ /**
+ * @covers IP::hexToOctet
+ */
+ public function testHexToOctet() {
+ $this->assertEquals( '0:0:0:0:0:0:0:1',
+ IP::hexToOctet( '00000000000000000000000000000001' ) );
+ $this->assertEquals( '0:0:0:0:0:0:FF:3',
+ IP::hexToOctet( '00000000000000000000000000FF0003' ) );
+ $this->assertEquals( '0:0:0:0:0:0:FF00:6',
+ IP::hexToOctet( '000000000000000000000000FF000006' ) );
+ $this->assertEquals( '0:0:0:0:0:0:FCCF:FAFF',
+ IP::hexToOctet( '000000000000000000000000FCCFFAFF' ) );
+ $this->assertEquals( 'FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF',
+ IP::hexToOctet( 'FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF' ) );
+ // hex not left-padded...
+ $this->assertEquals( '0:0:0:0:0:0:0:0' , IP::hexToOctet( '0' ) );
+ $this->assertEquals( '0:0:0:0:0:0:0:1' , IP::hexToOctet( '1' ) );
+ $this->assertEquals( '0:0:0:0:0:0:0:FF' , IP::hexToOctet( 'FF' ) );
+ $this->assertEquals( '0:0:0:0:0:0:0:FFD0' , IP::hexToOctet( 'FFD0' ) );
+ $this->assertEquals( '0:0:0:0:0:0:FA00:0' , IP::hexToOctet( 'FA000000' ) );
+ $this->assertEquals( '0:0:0:0:0:0:FCCF:FAFF', IP::hexToOctet( 'FCCFFAFF' ) );
+ }
+
+ /*
+ * IP::parseCIDR() returns an array containing a signed IP address
+ * representing the network mask and the bit mask.
+ * @covers IP::parseCIDR
+ */
+ function testCIDRParsing() {
+ $this->assertFalseCIDR( '192.0.2.0' , "missing mask" );
+ $this->assertFalseCIDR( '192.0.2.0/', "missing bitmask" );
+
+ // Verify if statement
+ $this->assertFalseCIDR( '256.0.0.0/32', "invalid net" );
+ $this->assertFalseCIDR( '192.0.2.0/AA', "mask not numeric" );
+ $this->assertFalseCIDR( '192.0.2.0/-1', "mask < 0" );
+ $this->assertFalseCIDR( '192.0.2.0/33', "mask > 32" );
+
+ // Check internal logic
+ # 0 mask always result in array(0,0)
+ $this->assertEquals( array( 0, 0 ), IP::parseCIDR('192.0.0.2/0') );
+ $this->assertEquals( array( 0, 0 ), IP::parseCIDR('0.0.0.0/0') );
+ $this->assertEquals( array( 0, 0 ), IP::parseCIDR('255.255.255.255/0') );
+
+ // @todo FIXME: Add more tests.
+
+ # This part test network shifting
+ $this->assertNet( '192.0.0.0' , '192.0.0.2/24' );
+ $this->assertNet( '192.168.5.0', '192.168.5.13/24');
+ $this->assertNet( '10.0.0.160' , '10.0.0.161/28' );
+ $this->assertNet( '10.0.0.0' , '10.0.0.3/28' );
+ $this->assertNet( '10.0.0.0' , '10.0.0.3/30' );
+ $this->assertNet( '10.0.0.4' , '10.0.0.4/30' );
+ $this->assertNet( '172.17.32.0', '172.17.35.48/21' );
+ $this->assertNet( '10.128.0.0' , '10.135.0.0/9' );
+ $this->assertNet( '134.0.0.0' , '134.0.5.1/8' );
+ }
+
+
+ /**
+ * @covers IP::canonicalize
+ */
+ public function testIPCanonicalizeOnValidIp() {
+ $this->assertEquals( '192.0.2.152', IP::canonicalize( '192.0.2.152' ),
+ 'Canonicalization of a valid IP returns it unchanged' );
+ }
+
+ /**
+ * @covers IP::canonicalize
+ */
+ public function testIPCanonicalizeMappedAddress() {
+ $this->assertEquals(
+ '192.0.2.152',
+ IP::canonicalize( '::ffff:192.0.2.152' )
+ );
+ $this->assertEquals(
+ '192.0.2.152',
+ IP::canonicalize( '::192.0.2.152' )
+ );
+ }
+
+ /**
+ * Issues there are most probably from IP::toHex() or IP::parseRange()
+ * @covers IP::isInRange
+ * @dataProvider provideIPsAndRanges
+ */
+ public function testIPIsInRange( $expected, $addr, $range, $message = '' ) {
+ $this->assertEquals(
+ $expected,
+ IP::isInRange( $addr, $range ),
+ $message
+ );
+ }
+
+ /** Provider for testIPIsInRange() */
+ function provideIPsAndRanges() {
+ # Format: (expected boolean, address, range, optional message)
+ return array(
+ # IPv4
+ array( true , '192.0.2.0' , '192.0.2.0/24', 'Network address' ),
+ array( true , '192.0.2.77' , '192.0.2.0/24', 'Simple address' ),
+ array( true , '192.0.2.255' , '192.0.2.0/24', 'Broadcast address' ),
+
+ array( false, '0.0.0.0' , '192.0.2.0/24' ),
+ array( false, '255.255.255' , '192.0.2.0/24' ),
+
+ # IPv6
+ array( false, '::1' , '2001:DB8::/32' ),
+ array( false, '::' , '2001:DB8::/32' ),
+ array( false, 'FE80::1', '2001:DB8::/32' ),
+
+ array( true , '2001:DB8::' , '2001:DB8::/32' ),
+ array( true , '2001:0DB8::' , '2001:DB8::/32' ),
+ array( true , '2001:DB8::1' , '2001:DB8::/32' ),
+ array( true , '2001:0DB8::1', '2001:DB8::/32' ),
+ array( true , '2001:0DB8:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF',
+ '2001:DB8::/32' ),
+
+ array( false, '2001:0DB8:F::', '2001:DB8::/96' ),
+ );
+ }
+
+ /**
+ * Test for IP::splitHostAndPort().
+ * @dataProvider provideSplitHostAndPort
+ */
+ function testSplitHostAndPort( $expected, $input, $description ) {
+ $this->assertEquals( $expected, IP::splitHostAndPort( $input ), $description );
+ }
+
+ /**
+ * Provider for IP::splitHostAndPort()
+ */
+ function provideSplitHostAndPort() {
+ return array(
+ array( false, '[', 'Unclosed square bracket' ),
+ array( false, '[::', 'Unclosed square bracket 2' ),
+ array( array( '::', false ), '::', 'Bare IPv6 0' ),
+ array( array( '::1', false ), '::1', 'Bare IPv6 1' ),
+ array( array( '::', false ), '[::]', 'Bracketed IPv6 0' ),
+ array( array( '::1', false ), '[::1]', 'Bracketed IPv6 1' ),
+ array( array( '::1', 80 ), '[::1]:80', 'Bracketed IPv6 with port' ),
+ array( false, '::x', 'Double colon but no IPv6' ),
+ array( array( 'x', 80 ), 'x:80', 'Hostname and port' ),
+ array( false, 'x:x', 'Hostname and invalid port' ),
+ array( array( 'x', false ), 'x', 'Plain hostname' )
+ );
+ }
+
+ /**
+ * Test for IP::combineHostAndPort()
+ * @dataProvider provideCombineHostAndPort
+ */
+ function testCombineHostAndPort( $expected, $input, $description ) {
+ list( $host, $port, $defaultPort ) = $input;
+ $this->assertEquals(
+ $expected,
+ IP::combineHostAndPort( $host, $port, $defaultPort ),
+ $description );
+ }
+
+ /**
+ * Provider for IP::combineHostAndPort()
+ */
+ function provideCombineHostAndPort() {
+ return array(
+ array( '[::1]', array( '::1', 2, 2 ), 'IPv6 default port' ),
+ array( '[::1]:2', array( '::1', 2, 3 ), 'IPv6 non-default port' ),
+ array( 'x', array( 'x', 2, 2 ), 'Normal default port' ),
+ array( 'x:2', array( 'x', 2, 3 ), 'Normal non-default port' ),
+ );
+ }
+
+ /**
+ * Test for IP::sanitizeRange()
+ * @dataProvider provideIPCIDRs
+ */
+ function testSanitizeRange( $input, $expected, $description ) {
+ $this->assertEquals( $expected, IP::sanitizeRange( $input ), $description );
+ }
+
+ /**
+ * Provider for IP::testSanitizeRange()
+ */
+ function provideIPCIDRs() {
+ return array(
+ array( '35.56.31.252/16', '35.56.0.0/16', 'IPv4 range' ),
+ array( '135.16.21.252/24', '135.16.21.0/24', 'IPv4 range' ),
+ array( '5.36.71.252/32', '5.36.71.252/32', 'IPv4 silly range' ),
+ array( '5.36.71.252', '5.36.71.252', 'IPv4 non-range' ),
+ array( '0:1:2:3:4:c5:f6:7/96', '0:1:2:3:4:C5:0:0/96', 'IPv6 range' ),
+ array( '0:1:2:3:4:5:6:7/120', '0:1:2:3:4:5:6:0/120', 'IPv6 range' ),
+ array( '0:e1:2:3:4:5:e6:7/128', '0:E1:2:3:4:5:E6:7/128', 'IPv6 silly range' ),
+ array( '0:c1:A2:3:4:5:c6:7', '0:C1:A2:3:4:5:C6:7', 'IPv6 non range' ),
+ );
+ }
+}
diff --git a/tests/phpunit/includes/ImageFunctionsTest.php b/tests/phpunit/includes/ImageFunctionsTest.php
new file mode 100644
index 00000000..cb7e67f3
--- /dev/null
+++ b/tests/phpunit/includes/ImageFunctionsTest.php
@@ -0,0 +1,48 @@
+<?php
+
+class ImageFunctionsTest extends MediaWikiTestCase {
+ function testFitBoxWidth() {
+ $vals = array(
+ array(
+ 'width' => 50,
+ 'height' => 50,
+ 'tests' => array(
+ 50 => 50,
+ 17 => 17,
+ 18 => 18 ) ),
+ array(
+ 'width' => 366,
+ 'height' => 300,
+ 'tests' => array(
+ 50 => 61,
+ 17 => 21,
+ 18 => 22 ) ),
+ array(
+ 'width' => 300,
+ 'height' => 366,
+ 'tests' => array(
+ 50 => 41,
+ 17 => 14,
+ 18 => 15 ) ),
+ array(
+ 'width' => 100,
+ 'height' => 400,
+ 'tests' => array(
+ 50 => 12,
+ 17 => 4,
+ 18 => 4 ) ) );
+ foreach ( $vals as $row ) {
+ extract( $row );
+ foreach ( $tests as $max => $expected ) {
+ $y = round( $expected * $height / $width );
+ $result = wfFitBoxWidth( $width, $height, $max );
+ $y2 = round( $result * $height / $width );
+ $this->assertEquals( $expected,
+ $result,
+ "($width, $height, $max) wanted: {$expected}x$y, got: {$result}x$y2" );
+ }
+ }
+ }
+}
+
+
diff --git a/tests/phpunit/includes/JsonTest.php b/tests/phpunit/includes/JsonTest.php
new file mode 100644
index 00000000..75dd18d5
--- /dev/null
+++ b/tests/phpunit/includes/JsonTest.php
@@ -0,0 +1,33 @@
+<?php
+
+class JsonTest extends MediaWikiTestCase {
+
+ function testPhpBug46944Test() {
+
+ $this->assertNotEquals(
+ '\ud840\udc00',
+ strtolower( FormatJson::encode( "\xf0\xa0\x80\x80" ) ),
+ 'Test encoding an broken json_encode character (U+20000)'
+ );
+
+
+ }
+
+ function testDecodeVarTypes() {
+
+ $this->assertInternalType(
+ 'object',
+ FormatJson::decode( '{"Name": "Cheeso", "Rank": 7}' ),
+ 'Default to object'
+ );
+
+ $this->assertInternalType(
+ 'array',
+ FormatJson::decode( '{"Name": "Cheeso", "Rank": 7}', true ),
+ 'Optional array'
+ );
+
+ }
+
+}
+
diff --git a/tests/phpunit/includes/LanguageConverterTest.php b/tests/phpunit/includes/LanguageConverterTest.php
new file mode 100644
index 00000000..baf28b07
--- /dev/null
+++ b/tests/phpunit/includes/LanguageConverterTest.php
@@ -0,0 +1,130 @@
+<?php
+
+class LanguageConverterTest extends MediaWikiLangTestCase {
+ protected $lang = null;
+ protected $lc = null;
+
+ function setUp() {
+ parent::setUp();
+ global $wgMemc, $wgRequest, $wgUser, $wgContLang;
+
+ $wgUser = new User;
+ $wgRequest = new FauxRequest( array() );
+ $wgMemc = new EmptyBagOStuff;
+ $wgContLang = Language::factory( 'tg' );
+ $this->lang = new LanguageToTest();
+ $this->lc = new TestConverter( $this->lang, 'tg',
+ array( 'tg', 'tg-latn' ) );
+ }
+
+ function tearDown() {
+ global $wgMemc;
+ unset( $wgMemc );
+ unset( $this->lc );
+ unset( $this->lang );
+ parent::tearDown();
+ }
+
+ function testGetPreferredVariantDefaults() {
+ $this->assertEquals( 'tg', $this->lc->getPreferredVariant() );
+ }
+
+ function testGetPreferredVariantHeaders() {
+ global $wgRequest;
+ $wgRequest->setHeader( 'Accept-Language', 'tg-latn' );
+
+ $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
+ }
+
+ function testGetPreferredVariantHeaderWeight() {
+ global $wgRequest;
+ $wgRequest->setHeader( 'Accept-Language', 'tg;q=1' );
+
+ $this->assertEquals( 'tg', $this->lc->getPreferredVariant() );
+ }
+
+ function testGetPreferredVariantHeaderWeight2() {
+ global $wgRequest;
+ $wgRequest->setHeader( 'Accept-Language', 'tg-latn;q=1' );
+
+ $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
+ }
+
+ function testGetPreferredVariantHeaderMulti() {
+ global $wgRequest;
+ $wgRequest->setHeader( 'Accept-Language', 'en, tg-latn;q=1' );
+
+ $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
+ }
+
+ function testGetPreferredVariantUserOption() {
+ global $wgUser;
+
+ $wgUser = new User;
+ $wgUser->load(); // from 'defaults'
+ $wgUser->mId = 1;
+ $wgUser->mDataLoaded = true;
+ $wgUser->mOptionsLoaded = true;
+ $wgUser->setOption( 'variant', 'tg-latn' );
+
+ $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
+ }
+
+ function testGetPreferredVariantHeaderUserVsUrl() {
+ global $wgRequest, $wgUser, $wgContLang;
+
+ $wgContLang = Language::factory( 'tg-latn' );
+ $wgRequest->setVal( 'variant', 'tg' );
+ $wgUser = User::newFromId( "admin" );
+ $wgUser->setId( 1 );
+ $wgUser->mFrom = 'defaults';
+ $wgUser->mOptionsLoaded = true;
+ $wgUser->setOption( 'variant', 'tg-latn' ); // The user's data is ignored
+ // because the variant is set in the URL.
+ $this->assertEquals( 'tg', $this->lc->getPreferredVariant() );
+ }
+
+
+ function testGetPreferredVariantDefaultLanguageVariant() {
+ global $wgDefaultLanguageVariant;
+
+ $wgDefaultLanguageVariant = 'tg-latn';
+ $this->assertEquals( 'tg-latn', $this->lc->getPreferredVariant() );
+ }
+
+ function testGetPreferredVariantDefaultLanguageVsUrlVariant() {
+ global $wgDefaultLanguageVariant, $wgRequest, $wgContLang;
+
+ $wgContLang = Language::factory( 'tg-latn' );
+ $wgDefaultLanguageVariant = 'tg';
+ $wgRequest->setVal( 'variant', null );
+ $this->assertEquals( 'tg', $this->lc->getPreferredVariant() );
+ }
+}
+
+/**
+ * Test converter (from Tajiki to latin orthography)
+ */
+class TestConverter extends LanguageConverter {
+ private $table = array(
+ 'б' => 'b',
+ 'в' => 'v',
+ 'г' => 'g',
+ );
+
+ function loadDefaultTables() {
+ $this->mTables = array(
+ 'tg-latn' => new ReplacementArray( $this->table ),
+ 'tg' => new ReplacementArray()
+ );
+ }
+
+}
+
+class LanguageToTest extends Language {
+ function __construct() {
+ parent::__construct();
+ $variants = array( 'tg', 'tg-latn' );
+ $this->mConverter = new TestConverter( $this, 'tg', $variants );
+ }
+}
diff --git a/tests/phpunit/includes/LicensesTest.php b/tests/phpunit/includes/LicensesTest.php
new file mode 100644
index 00000000..e467f3cd
--- /dev/null
+++ b/tests/phpunit/includes/LicensesTest.php
@@ -0,0 +1,22 @@
+<?php
+
+class LicensesTest extends MediaWikiTestCase {
+
+ function testLicenses() {
+ $str = "
+* Free licenses:
+** GFDL|Debian disagrees
+";
+
+ $lc = new Licenses( array(
+ 'fieldname' => 'FooField',
+ 'type' => 'select',
+ 'section' => 'description',
+ 'id' => 'wpLicense',
+ 'label' => 'A label text', # Note can't test label-message because $wgOut is not defined
+ 'name' => 'AnotherName',
+ 'licenses' => $str,
+ ) );
+ $this->assertThat( $lc, $this->isInstanceOf( 'Licenses' ) );
+ }
+}
diff --git a/tests/phpunit/includes/LocalFileTest.php b/tests/phpunit/includes/LocalFileTest.php
new file mode 100644
index 00000000..e08d4d7e
--- /dev/null
+++ b/tests/phpunit/includes/LocalFileTest.php
@@ -0,0 +1,99 @@
+<?php
+
+/**
+ * These tests should work regardless of $wgCapitalLinks
+ * @group Database
+ */
+
+class LocalFileTest extends MediaWikiTestCase {
+ function setUp() {
+ global $wgCapitalLinks;
+
+ $wgCapitalLinks = true;
+ $info = array(
+ 'name' => 'test',
+ 'directory' => '/testdir',
+ 'url' => '/testurl',
+ 'hashLevels' => 2,
+ 'transformVia404' => false,
+ );
+ $this->repo_hl0 = new LocalRepo( array( 'hashLevels' => 0 ) + $info );
+ $this->repo_hl2 = new LocalRepo( array( 'hashLevels' => 2 ) + $info );
+ $this->repo_lc = new LocalRepo( array( 'initialCapital' => false ) + $info );
+ $this->file_hl0 = $this->repo_hl0->newFile( 'test!' );
+ $this->file_hl2 = $this->repo_hl2->newFile( 'test!' );
+ $this->file_lc = $this->repo_lc->newFile( 'test!' );
+ }
+
+ function testGetHashPath() {
+ $this->assertEquals( '', $this->file_hl0->getHashPath() );
+ $this->assertEquals( 'a/a2/', $this->file_hl2->getHashPath() );
+ $this->assertEquals( 'c/c4/', $this->file_lc->getHashPath() );
+ }
+
+ function testGetRel() {
+ $this->assertEquals( 'Test!', $this->file_hl0->getRel() );
+ $this->assertEquals( 'a/a2/Test!', $this->file_hl2->getRel() );
+ $this->assertEquals( 'c/c4/test!', $this->file_lc->getRel() );
+ }
+
+ function testGetUrlRel() {
+ $this->assertEquals( 'Test%21', $this->file_hl0->getUrlRel() );
+ $this->assertEquals( 'a/a2/Test%21', $this->file_hl2->getUrlRel() );
+ $this->assertEquals( 'c/c4/test%21', $this->file_lc->getUrlRel() );
+ }
+
+ function testGetArchivePath() {
+ $this->assertEquals( '/testdir/archive', $this->file_hl0->getArchivePath() );
+ $this->assertEquals( '/testdir/archive/a/a2', $this->file_hl2->getArchivePath() );
+ $this->assertEquals( '/testdir/archive/!', $this->file_hl0->getArchivePath( '!' ) );
+ $this->assertEquals( '/testdir/archive/a/a2/!', $this->file_hl2->getArchivePath( '!' ) );
+ }
+
+ function testGetThumbPath() {
+ $this->assertEquals( '/testdir/thumb/Test!', $this->file_hl0->getThumbPath() );
+ $this->assertEquals( '/testdir/thumb/a/a2/Test!', $this->file_hl2->getThumbPath() );
+ $this->assertEquals( '/testdir/thumb/Test!/x', $this->file_hl0->getThumbPath( 'x' ) );
+ $this->assertEquals( '/testdir/thumb/a/a2/Test!/x', $this->file_hl2->getThumbPath( 'x' ) );
+ }
+
+ function testGetArchiveUrl() {
+ $this->assertEquals( '/testurl/archive', $this->file_hl0->getArchiveUrl() );
+ $this->assertEquals( '/testurl/archive/a/a2', $this->file_hl2->getArchiveUrl() );
+ $this->assertEquals( '/testurl/archive/%21', $this->file_hl0->getArchiveUrl( '!' ) );
+ $this->assertEquals( '/testurl/archive/a/a2/%21', $this->file_hl2->getArchiveUrl( '!' ) );
+ }
+
+ function testGetThumbUrl() {
+ $this->assertEquals( '/testurl/thumb/Test%21', $this->file_hl0->getThumbUrl() );
+ $this->assertEquals( '/testurl/thumb/a/a2/Test%21', $this->file_hl2->getThumbUrl() );
+ $this->assertEquals( '/testurl/thumb/Test%21/x', $this->file_hl0->getThumbUrl( 'x' ) );
+ $this->assertEquals( '/testurl/thumb/a/a2/Test%21/x', $this->file_hl2->getThumbUrl( 'x' ) );
+ }
+
+ function testGetArchiveVirtualUrl() {
+ $this->assertEquals( 'mwrepo://test/public/archive', $this->file_hl0->getArchiveVirtualUrl() );
+ $this->assertEquals( 'mwrepo://test/public/archive/a/a2', $this->file_hl2->getArchiveVirtualUrl() );
+ $this->assertEquals( 'mwrepo://test/public/archive/%21', $this->file_hl0->getArchiveVirtualUrl( '!' ) );
+ $this->assertEquals( 'mwrepo://test/public/archive/a/a2/%21', $this->file_hl2->getArchiveVirtualUrl( '!' ) );
+ }
+
+ function testGetThumbVirtualUrl() {
+ $this->assertEquals( 'mwrepo://test/thumb/Test%21', $this->file_hl0->getThumbVirtualUrl() );
+ $this->assertEquals( 'mwrepo://test/thumb/a/a2/Test%21', $this->file_hl2->getThumbVirtualUrl() );
+ $this->assertEquals( 'mwrepo://test/thumb/Test%21/%21', $this->file_hl0->getThumbVirtualUrl( '!' ) );
+ $this->assertEquals( 'mwrepo://test/thumb/a/a2/Test%21/%21', $this->file_hl2->getThumbVirtualUrl( '!' ) );
+ }
+
+ function testGetUrl() {
+ $this->assertEquals( '/testurl/Test%21', $this->file_hl0->getUrl() );
+ $this->assertEquals( '/testurl/a/a2/Test%21', $this->file_hl2->getUrl() );
+ }
+
+ function testWfLocalFile() {
+ $file = wfLocalFile( "File:Some_file_that_probably_doesn't exist.png" );
+ $this->assertThat( $file, $this->isInstanceOf( 'LocalFile' ), 'wfLocalFile() returns LocalFile for valid Titles' );
+ }
+}
+
+
diff --git a/tests/phpunit/includes/MWFunctionTest.php b/tests/phpunit/includes/MWFunctionTest.php
new file mode 100644
index 00000000..ed5e7602
--- /dev/null
+++ b/tests/phpunit/includes/MWFunctionTest.php
@@ -0,0 +1,86 @@
+<?php
+
+class MWFunctionTest extends MediaWikiTestCase {
+
+ function testCallUserFuncWorkarounds() {
+
+ $this->assertEquals(
+ call_user_func( array( 'MWFunctionTest', 'someMethod' ) ),
+ MWFunction::call( 'MWFunctionTest::someMethod' )
+ );
+ $this->assertEquals(
+ call_user_func( array( 'MWFunctionTest', 'someMethod' ), 'foo', 'bar', 'baz' ),
+ MWFunction::call( 'MWFunctionTest::someMethod', 'foo', 'bar', 'baz' )
+ );
+
+
+
+ $this->assertEquals(
+ call_user_func_array( array( 'MWFunctionTest', 'someMethod' ), array() ),
+ MWFunction::callArray( 'MWFunctionTest::someMethod', array() )
+ );
+ $this->assertEquals(
+ call_user_func_array( array( 'MWFunctionTest', 'someMethod' ), array( 'foo', 'bar', 'baz' ) ),
+ MWFunction::callArray( 'MWFunctionTest::someMethod', array( 'foo', 'bar', 'baz' ) )
+ );
+
+ }
+
+ function testNewObjFunction() {
+
+ $arg1 = 'Foo';
+ $arg2 = 'Bar';
+ $arg3 = array( 'Baz' );
+ $arg4 = new ExampleObject;
+
+ $args = array( $arg1, $arg2, $arg3, $arg4 );
+
+ $newObject = new MWBlankClass( $arg1, $arg2, $arg3, $arg4 );
+
+ $this->assertEquals(
+ MWFunction::newObj( 'MWBlankClass', $args )->args,
+ $newObject->args
+ );
+
+ $this->assertEquals(
+ MWFunction::newObj( 'MWBlankClass', $args, true )->args,
+ $newObject->args,
+ 'Works even with PHP version < 5.1.3'
+ );
+
+ }
+
+ /**
+ * @expectedException MWException
+ */
+ function testCallingParentFails() {
+
+ MWFunction::call( 'parent::foo' );
+ }
+
+ /**
+ * @expectedException MWException
+ */
+ function testCallingSelfFails() {
+
+ MWFunction::call( 'self::foo' );
+ }
+
+ public static function someMethod() {
+ return func_get_args();
+ }
+
+}
+
+class MWBlankClass {
+
+ public $args = array();
+
+ function __construct( $arg1, $arg2, $arg3, $arg4 ) {
+ $this->args = array( $arg1, $arg2, $arg3, $arg4 );
+ }
+
+}
+
+class ExampleObject {
+}
diff --git a/tests/phpunit/includes/MWNamespaceTest.php b/tests/phpunit/includes/MWNamespaceTest.php
new file mode 100644
index 00000000..462afc24
--- /dev/null
+++ b/tests/phpunit/includes/MWNamespaceTest.php
@@ -0,0 +1,460 @@
+<?php
+/**
+ * @author Ashar Voultoiz
+ * @copyright Copyright © 2011, Ashar Voultoiz
+ * @file
+ */
+
+/**
+ * Test class for MWNamespace.
+ * Generated by PHPUnit on 2011-02-20 at 21:01:55.
+ *
+ */
+class MWNamespaceTest extends MediaWikiTestCase {
+ /**
+ * Sets up the fixture, for example, opens a network connection.
+ * This method is called before a test is executed.
+ */
+ protected function setUp() {
+ }
+
+ /**
+ * Tears down the fixture, for example, closes a network connection.
+ * This method is called after a test is executed.
+ */
+ protected function tearDown() {
+ }
+
+
+#### START OF TESTS #########################################################
+
+ /**
+ * @todo Write more texts, handle $wgAllowImageMoving setting
+ */
+ public function testIsMovable() {
+ $this->assertFalse( MWNamespace::isMovable( NS_CATEGORY ) );
+ # @todo FIXME: Write more tests!!
+ }
+
+ /**
+ * Please make sure to change testIsTalk() if you change the assertions below
+ */
+ public function testIsMain() {
+ // Special namespaces
+ $this->assertTrue( MWNamespace::isMain( NS_MEDIA ) );
+ $this->assertTrue( MWNamespace::isMain( NS_SPECIAL ) );
+
+ // Subject pages
+ $this->assertTrue( MWNamespace::isMain( NS_MAIN ) );
+ $this->assertTrue( MWNamespace::isMain( NS_USER ) );
+ $this->assertTrue( MWNamespace::isMain( 100 ) ); # user defined
+
+ // Talk pages
+ $this->assertFalse( MWNamespace::isMain( NS_TALK ) );
+ $this->assertFalse( MWNamespace::isMain( NS_USER_TALK ) );
+ $this->assertFalse( MWNamespace::isMain( 101 ) ); # user defined
+ }
+
+ /**
+ * Reverse of testIsMain().
+ * Please update testIsMain() if you change assertions below
+ */
+ public function testIsTalk() {
+ // Special namespaces
+ $this->assertFalse( MWNamespace::isTalk( NS_MEDIA ) );
+ $this->assertFalse( MWNamespace::isTalk( NS_SPECIAL ) );
+
+ // Subject pages
+ $this->assertFalse( MWNamespace::isTalk( NS_MAIN ) );
+ $this->assertFalse( MWNamespace::isTalk( NS_USER ) );
+ $this->assertFalse( MWNamespace::isTalk( 100 ) ); # user defined
+
+ // Talk pages
+ $this->assertTrue( MWNamespace::isTalk( NS_TALK ) );
+ $this->assertTrue( MWNamespace::isTalk( NS_USER_TALK ) );
+ $this->assertTrue( MWNamespace::isTalk( 101 ) ); # user defined
+ }
+
+ /**
+ * Regular getTalk() calls
+ * Namespaces without a talk page (NS_MEDIA, NS_SPECIAL) are tested in
+ * the function testGetTalkExceptions()
+ */
+ public function testGetTalk() {
+ $this->assertEquals( NS_TALK, MWNamespace::getTalk( NS_MAIN ) );
+ }
+
+ /**
+ * Exceptions with getTalk()
+ * NS_MEDIA does not have talk pages. MediaWiki raise an exception for them.
+ * @expectedException MWException
+ */
+ public function testGetTalkExceptionsForNsMedia() {
+ $this->assertNull( MWNamespace::getTalk( NS_MEDIA ) );
+ }
+
+ /**
+ * Exceptions with getTalk()
+ * NS_SPECIAL does not have talk pages. MediaWiki raise an exception for them.
+ * @expectedException MWException
+ */
+ public function testGetTalkExceptionsForNsSpecial() {
+ $this->assertNull( MWNamespace::getTalk( NS_SPECIAL ) );
+ }
+
+ /**
+ * Regular getAssociated() calls
+ * Namespaces without an associated page (NS_MEDIA, NS_SPECIAL) are tested in
+ * the function testGetAssociatedExceptions()
+ */
+ public function testGetAssociated() {
+ $this->assertEquals( NS_TALK, MWNamespace::getAssociated( NS_MAIN ) );
+ $this->assertEquals( NS_MAIN, MWNamespace::getAssociated( NS_TALK ) );
+
+ }
+
+ ### Exceptions with getAssociated()
+ ### NS_MEDIA and NS_SPECIAL do not have talk pages. MediaWiki raises
+ ### an exception for them.
+ /**
+ * @expectedException MWException
+ */
+ public function testGetAssociatedExceptionsForNsMedia() {
+ $this->assertNull( MWNamespace::getAssociated( NS_MEDIA ) );
+ }
+
+ /**
+ * @expectedException MWException
+ */
+ public function testGetAssociatedExceptionsForNsSpecial() {
+ $this->assertNull( MWNamespace::getAssociated( NS_SPECIAL ) );
+ }
+
+ /**
+ */
+ public function testGetSubject() {
+ // Special namespaces are their own subjects
+ $this->assertEquals( NS_MEDIA, MWNamespace::getSubject( NS_MEDIA ) );
+ $this->assertEquals( NS_SPECIAL, MWNamespace::getSubject( NS_SPECIAL ) );
+
+ $this->assertEquals( NS_MAIN, MWNamespace::getSubject( NS_TALK ) );
+ $this->assertEquals( NS_USER, MWNamespace::getSubject( NS_USER_TALK ) );
+ }
+
+ /**
+ * @todo Implement testExists().
+ */
+ public function testExists() {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.'
+ );
+ }
+
+ /**
+ * @todo Implement testGetCanonicalNamespaces().
+ */
+ public function testGetCanonicalNamespaces() {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.'
+ );
+ }
+
+ /**
+ * @todo Implement testGetCanonicalName().
+ */
+ public function testGetCanonicalName() {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.'
+ );
+ }
+
+ /**
+ * @todo Implement testGetCanonicalIndex().
+ */
+ public function testGetCanonicalIndex() {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.'
+ );
+ }
+
+ /**
+ * @todo Implement testGetValidNamespaces().
+ */
+ public function testGetValidNamespaces() {
+ // Remove the following lines when you implement this test.
+ $this->markTestIncomplete(
+ 'This test has not been implemented yet. Rely on $wgCanonicalNamespaces.'
+ );
+ }
+
+ /**
+ */
+ public function testCanTalk() {
+ $this->assertFalse( MWNamespace::canTalk( NS_MEDIA ) );
+ $this->assertFalse( MWNamespace::canTalk( NS_SPECIAL ) );
+
+ $this->assertTrue( MWNamespace::canTalk( NS_MAIN ) );
+ $this->assertTrue( MWNamespace::canTalk( NS_TALK ) );
+ $this->assertTrue( MWNamespace::canTalk( NS_USER ) );
+ $this->assertTrue( MWNamespace::canTalk( NS_USER_TALK ) );
+
+ // User defined namespaces
+ $this->assertTrue( MWNamespace::canTalk( 100 ) );
+ $this->assertTrue( MWNamespace::canTalk( 101 ) );
+ }
+
+ /**
+ */
+ public function testIsContent() {
+ // NS_MAIN is a content namespace per DefaultSettings.php
+ // and per function definition.
+ $this->assertTrue( MWNamespace::isContent( NS_MAIN ) );
+
+ // Other namespaces which are not expected to be content
+ $this->assertFalse( MWNamespace::isContent( NS_MEDIA ) );
+ $this->assertFalse( MWNamespace::isContent( NS_SPECIAL ) );
+ $this->assertFalse( MWNamespace::isContent( NS_TALK ) );
+ $this->assertFalse( MWNamespace::isContent( NS_USER ) );
+ $this->assertFalse( MWNamespace::isContent( NS_CATEGORY ) );
+ // User defined namespace:
+ $this->assertFalse( MWNamespace::isContent( 100 ) );
+ }
+
+ /**
+ * Similar to testIsContent() but alters the $wgContentNamespaces
+ * global variable.
+ */
+ public function testIsContentWithAdditionsInWgContentNamespaces() {
+ // NS_MAIN is a content namespace per DefaultSettings.php
+ // and per function definition.
+ $this->assertTrue( MWNamespace::isContent( NS_MAIN ) );
+
+ // Tests that user defined namespace #252 is not content:
+ $this->assertFalse( MWNamespace::isContent( 252 ) );
+
+ # @todo FIXME: Is global saving really required for PHPUnit?
+ // Bless namespace # 252 as a content namespace
+ global $wgContentNamespaces;
+ $savedGlobal = $wgContentNamespaces;
+ $wgContentNamespaces[] = 252;
+ $this->assertTrue( MWNamespace::isContent( 252 ) );
+
+ // Makes sure NS_MAIN was not impacted
+ $this->assertTrue( MWNamespace::isContent( NS_MAIN ) );
+
+ // Restore global
+ $wgContentNamespaces = $savedGlobal;
+
+ // Verify namespaces after global restauration
+ $this->assertTrue( MWNamespace::isContent( NS_MAIN ) );
+ $this->assertFalse( MWNamespace::isContent( 252 ) );
+ }
+
+ public function testIsWatchable() {
+ // Specials namespaces are not watchable
+ $this->assertFalse( MWNamespace::isWatchable( NS_MEDIA ) );
+ $this->assertFalse( MWNamespace::isWatchable( NS_SPECIAL ) );
+
+ // Core defined namespaces are watchables
+ $this->assertTrue( MWNamespace::isWatchable( NS_MAIN ) );
+ $this->assertTrue( MWNamespace::isWatchable( NS_TALK ) );
+
+ // Additional, user defined namespaces are watchables
+ $this->assertTrue( MWNamespace::isWatchable( 100 ) );
+ $this->assertTrue( MWNamespace::isWatchable( 101 ) );
+ }
+
+ public function testHasSubpages() {
+ // Special namespaces:
+ $this->assertFalse( MWNamespace::hasSubpages( NS_MEDIA ) );
+ $this->assertFalse( MWNamespace::hasSubpages( NS_SPECIAL ) );
+
+ // namespaces without subpages
+ # save up global
+ global $wgNamespacesWithSubpages;
+ $saved = null;
+ if( array_key_exists( NS_MAIN, $wgNamespacesWithSubpages ) ) {
+ $saved = $wgNamespacesWithSubpages[NS_MAIN];
+ unset( $wgNamespacesWithSubpages[NS_MAIN] );
+ }
+
+ $this->assertFalse( MWNamespace::hasSubpages( NS_MAIN ) );
+
+ $wgNamespacesWithSubpages[NS_MAIN] = true;
+ $this->assertTrue( MWNamespace::hasSubpages( NS_MAIN ) );
+ $wgNamespacesWithSubpages[NS_MAIN] = false;
+ $this->assertFalse( MWNamespace::hasSubpages( NS_MAIN ) );
+
+ # restore global
+ if( $saved !== null ) {
+ $wgNamespacesWithSubpages[NS_MAIN] = $saved;
+ }
+
+ // Some namespaces with subpages
+ $this->assertTrue( MWNamespace::hasSubpages( NS_TALK ) );
+ $this->assertTrue( MWNamespace::hasSubpages( NS_USER ) );
+ $this->assertTrue( MWNamespace::hasSubpages( NS_USER_TALK ) );
+ }
+
+ /**
+ */
+ public function testGetContentNamespaces() {
+ $this->assertEquals(
+ array( NS_MAIN ),
+ MWNamespace::getcontentNamespaces(),
+ '$wgContentNamespaces is an array with only NS_MAIN by default'
+ );
+
+ global $wgContentNamespaces;
+
+ # test !is_array( $wgcontentNamespaces )
+ $wgContentNamespaces = '';
+ $this->assertEquals( NS_MAIN, MWNamespace::getcontentNamespaces() );
+ $wgContentNamespaces = false;
+ $this->assertEquals( NS_MAIN, MWNamespace::getcontentNamespaces() );
+ $wgContentNamespaces = null;
+ $this->assertEquals( NS_MAIN, MWNamespace::getcontentNamespaces() );
+ $wgContentNamespaces = 5;
+ $this->assertEquals( NS_MAIN, MWNamespace::getcontentNamespaces() );
+
+ # test $wgContentNamespaces === array()
+ $wgContentNamespaces = array();
+ $this->assertEquals( NS_MAIN, MWNamespace::getcontentNamespaces() );
+
+ # test !in_array( NS_MAIN, $wgContentNamespaces )
+ $wgContentNamespaces = array( NS_USER, NS_CATEGORY );
+ $this->assertEquals(
+ array( NS_MAIN, NS_USER, NS_CATEGORY ),
+ MWNamespace::getcontentNamespaces(),
+ 'NS_MAIN is forced in wgContentNamespaces even if unwanted'
+ );
+
+ # test other cases, return $wgcontentNamespaces as is
+ $wgContentNamespaces = array( NS_MAIN );
+ $this->assertEquals(
+ array( NS_MAIN ),
+ MWNamespace::getcontentNamespaces()
+ );
+
+ $wgContentNamespaces = array( NS_MAIN, NS_USER, NS_CATEGORY );
+ $this->assertEquals(
+ array( NS_MAIN, NS_USER, NS_CATEGORY ),
+ MWNamespace::getcontentNamespaces()
+ );
+
+ }
+
+ /**
+ * Some namespaces are always capitalized per code definition
+ * in MWNamespace::$alwaysCapitalizedNamespaces
+ */
+ public function testIsCapitalizedHardcodedAssertions() {
+ // NS_MEDIA and NS_FILE are treated the same
+ $this->assertEquals(
+ MWNamespace::isCapitalized( NS_MEDIA ),
+ MWNamespace::isCapitalized( NS_FILE ),
+ 'NS_MEDIA and NS_FILE have same capitalization rendering'
+ );
+
+ // Boths are capitalized by default
+ $this->assertTrue( MWNamespace::isCapitalized( NS_MEDIA ) );
+ $this->assertTrue( MWNamespace::isCapitalized( NS_FILE ) );
+
+ // Always capitalized namespaces
+ // @see MWNamespace::$alwaysCapitalizedNamespaces
+ $this->assertTrue( MWNamespace::isCapitalized( NS_SPECIAL ) );
+ $this->assertTrue( MWNamespace::isCapitalized( NS_USER ) );
+ $this->assertTrue( MWNamespace::isCapitalized( NS_MEDIAWIKI ) );
+ }
+
+ /**
+ * Follows up for testIsCapitalizedHardcodedAssertions() but alter the
+ * global $wgCapitalLink setting to have extended coverage.
+ *
+ * MWNamespace::isCapitalized() rely on two global settings:
+ * $wgCapitalLinkOverrides = array(); by default
+ * $wgCapitalLinks = true; by default
+ * This function test $wgCapitalLinks
+ *
+ * Global setting correctness is tested against the NS_PROJECT and
+ * NS_PROJECT_TALK namespaces since they are not hardcoded nor specials
+ */
+ public function testIsCapitalizedWithWgCapitalLinks() {
+ global $wgCapitalLinks;
+ // Save the global to easily reset to MediaWiki default settings
+ $savedGlobal = $wgCapitalLinks;
+
+ $wgCapitalLinks = true;
+ $this->assertTrue( MWNamespace::isCapitalized( NS_PROJECT ) );
+ $this->assertTrue( MWNamespace::isCapitalized( NS_PROJECT_TALK ) );
+
+ $wgCapitalLinks = false;
+ // hardcoded namespaces (see above function) are still capitalized:
+ $this->assertTrue( MWNamespace::isCapitalized( NS_SPECIAL ) );
+ $this->assertTrue( MWNamespace::isCapitalized( NS_USER ) );
+ $this->assertTrue( MWNamespace::isCapitalized( NS_MEDIAWIKI ) );
+ // setting is correctly applied
+ $this->assertFalse( MWNamespace::isCapitalized( NS_PROJECT ) );
+ $this->assertFalse( MWNamespace::isCapitalized( NS_PROJECT_TALK ) );
+
+ // reset global state:
+ $wgCapitalLinks = $savedGlobal;
+ }
+
+ /**
+ * Counter part for MWNamespace::testIsCapitalizedWithWgCapitalLinks() now
+ * testing the $wgCapitalLinkOverrides global.
+ *
+ * @todo split groups of assertions in autonomous testing functions
+ */
+ public function testIsCapitalizedWithWgCapitalLinkOverrides() {
+ global $wgCapitalLinkOverrides;
+ // Save the global to easily reset to MediaWiki default settings
+ $savedGlobal = $wgCapitalLinkOverrides;
+
+ // Test default settings
+ $this->assertTrue( MWNamespace::isCapitalized( NS_PROJECT ) );
+ $this->assertTrue( MWNamespace::isCapitalized( NS_PROJECT_TALK ) );
+ // hardcoded namespaces (see above function) are capitalized:
+ $this->assertTrue( MWNamespace::isCapitalized( NS_SPECIAL ) );
+ $this->assertTrue( MWNamespace::isCapitalized( NS_USER ) );
+ $this->assertTrue( MWNamespace::isCapitalized( NS_MEDIAWIKI ) );
+
+ // Hardcoded namespaces remains capitalized
+ $wgCapitalLinkOverrides[NS_SPECIAL] = false;
+ $wgCapitalLinkOverrides[NS_USER] = false;
+ $wgCapitalLinkOverrides[NS_MEDIAWIKI] = false;
+ $this->assertTrue( MWNamespace::isCapitalized( NS_SPECIAL ) );
+ $this->assertTrue( MWNamespace::isCapitalized( NS_USER ) );
+ $this->assertTrue( MWNamespace::isCapitalized( NS_MEDIAWIKI ) );
+
+ $wgCapitalLinkOverrides = $savedGlobal;
+ $wgCapitalLinkOverrides[NS_PROJECT] = false;
+ $this->assertFalse( MWNamespace::isCapitalized( NS_PROJECT ) );
+ $wgCapitalLinkOverrides[NS_PROJECT] = true ;
+ $this->assertTrue( MWNamespace::isCapitalized( NS_PROJECT ) );
+ unset( $wgCapitalLinkOverrides[NS_PROJECT] );
+ $this->assertTrue( MWNamespace::isCapitalized( NS_PROJECT ) );
+
+ // reset global state:
+ $wgCapitalLinkOverrides = $savedGlobal;
+ }
+
+ public function testHasGenderDistinction() {
+ // Namespaces with gender distinctions
+ $this->assertTrue( MWNamespace::hasGenderDistinction( NS_USER ) );
+ $this->assertTrue( MWNamespace::hasGenderDistinction( NS_USER_TALK ) );
+
+ // Other ones, "genderless"
+ $this->assertFalse( MWNamespace::hasGenderDistinction( NS_MEDIA ) );
+ $this->assertFalse( MWNamespace::hasGenderDistinction( NS_SPECIAL ) );
+ $this->assertFalse( MWNamespace::hasGenderDistinction( NS_MAIN ) );
+ $this->assertFalse( MWNamespace::hasGenderDistinction( NS_TALK ) );
+
+ }
+}
+
diff --git a/tests/phpunit/includes/MessageTest.php b/tests/phpunit/includes/MessageTest.php
new file mode 100644
index 00000000..45c02bbe
--- /dev/null
+++ b/tests/phpunit/includes/MessageTest.php
@@ -0,0 +1,62 @@
+<?php
+
+class MessageTest extends MediaWikiLangTestCase {
+
+ function testExists() {
+ $this->assertTrue( wfMessage( 'mainpage' )->exists() );
+ $this->assertTrue( wfMessage( 'mainpage' )->params( array() )->exists() );
+ $this->assertTrue( wfMessage( 'mainpage' )->rawParams( 'foo', 123 )->exists() );
+ $this->assertFalse( wfMessage( 'i-dont-exist-evar' )->exists() );
+ $this->assertFalse( wfMessage( 'i-dont-exist-evar' )->params( array() )->exists() );
+ $this->assertFalse( wfMessage( 'i-dont-exist-evar' )->rawParams( 'foo', 123 )->exists() );
+ }
+
+ function testKey() {
+ $this->assertInstanceOf( 'Message', wfMessage( 'mainpage' ) );
+ $this->assertInstanceOf( 'Message', wfMessage( 'i-dont-exist-evar' ) );
+ $this->assertEquals( 'Main Page', wfMessage( 'mainpage' )->text() );
+ $this->assertEquals( '&lt;i-dont-exist-evar&gt;', wfMessage( 'i-dont-exist-evar' )->text() );
+ }
+
+ function testInLanguage() {
+ $this->assertEquals( 'Main Page', wfMessage( 'mainpage' )->inLanguage( 'en' )->text() );
+ $this->assertEquals( 'Ð—Ð°Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница', wfMessage( 'mainpage' )->inLanguage( 'ru' )->text() );
+ $this->assertEquals( 'Main Page', wfMessage( 'mainpage' )->inLanguage( Language::factory( 'en' ) )->text() );
+ $this->assertEquals( 'Ð—Ð°Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница', wfMessage( 'mainpage' )->inLanguage( Language::factory( 'ru' ) )->text() );
+ }
+
+ function testMessageParams() {
+ $this->assertEquals( 'Return to $1.', wfMessage( 'returnto' )->text() );
+ $this->assertEquals( 'Return to $1.', wfMessage( 'returnto', array() )->text() );
+ $this->assertEquals( 'You have foo (bar).', wfMessage( 'youhavenewmessages', 'foo', 'bar' )->text() );
+ $this->assertEquals( 'You have foo (bar).', wfMessage( 'youhavenewmessages', array( 'foo', 'bar' ) )->text() );
+ }
+
+ function testMessageParamSubstitution() {
+ $this->assertEquals( '(Ð—Ð°Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница)', wfMessage( 'parentheses', 'Ð—Ð°Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница' )->plain() );
+ $this->assertEquals( '(Ð—Ð°Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница $1)', wfMessage( 'parentheses', 'Ð—Ð°Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница $1' )->plain() );
+ $this->assertEquals( '(Ð—Ð°Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница)', wfMessage( 'parentheses' )->rawParams( 'Ð—Ð°Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница' )->plain() );
+ $this->assertEquals( '(Ð—Ð°Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница $1)', wfMessage( 'parentheses' )->rawParams( 'Ð—Ð°Ð³Ð»Ð°Ð²Ð½Ð°Ñ Ñтраница $1' )->plain() );
+ }
+
+ function testInContentLanguage() {
+ global $wgLang, $wgForceUIMsgAsContentMsg;
+ $oldLang = $wgLang;
+ $wgLang = Language::factory( 'fr' );
+
+ $this->assertEquals( 'Main Page', wfMessage( 'mainpage' )->inContentLanguage()->plain(), 'ForceUIMsg disabled' );
+ $wgForceUIMsgAsContentMsg['testInContentLanguage'] = 'mainpage';
+ $this->assertEquals( 'Accueil', wfMessage( 'mainpage' )->inContentLanguage()->plain(), 'ForceUIMsg enabled' );
+
+ /* Restore globals */
+ $wgLang = $oldLang;
+ unset( $wgForceUIMsgAsContentMsg['testInContentLanguage'] );
+ }
+
+ /**
+ * @expectedException MWException
+ */
+ function testInLanguageThrows() {
+ wfMessage( 'foo' )->inLanguage( 123 );
+ }
+}
diff --git a/tests/phpunit/includes/ParserOptionsTest.php b/tests/phpunit/includes/ParserOptionsTest.php
new file mode 100644
index 00000000..58c89146
--- /dev/null
+++ b/tests/phpunit/includes/ParserOptionsTest.php
@@ -0,0 +1,36 @@
+<?php
+
+class ParserOptionsTest extends MediaWikiTestCase {
+
+ private $popts;
+ private $pcache;
+
+ function setUp() {
+ ParserTest::setUp(); //reuse setup from parser tests
+ global $wgContLang, $wgUser, $wgLanguageCode;
+ $wgContLang = Language::factory( $wgLanguageCode );
+ $this->popts = new ParserOptions( $wgUser );
+ $this->pcache = ParserCache::singleton();
+ }
+
+ function tearDown() {
+ parent::tearDown();
+ }
+
+ /**
+ * ParserOptions::optionsHash was not giving consistent results when $wgUseDynamicDates was set
+ * @group Database
+ */
+ function testGetParserCacheKeyWithDynamicDates() {
+ global $wgUseDynamicDates;
+ $wgUseDynamicDates = true;
+
+ $title = Title::newFromText( "Some test article" );
+ $article = new Article( $title );
+
+ $pcacheKeyBefore = $this->pcache->getKey( $article, $this->popts );
+ $this->assertNotNull( $this->popts->getDateFormat() );
+ $pcacheKeyAfter = $this->pcache->getKey( $article, $this->popts );
+ $this->assertEquals( $pcacheKeyBefore, $pcacheKeyAfter );
+ }
+}
diff --git a/tests/phpunit/includes/Providers.php b/tests/phpunit/includes/Providers.php
new file mode 100644
index 00000000..02898673
--- /dev/null
+++ b/tests/phpunit/includes/Providers.php
@@ -0,0 +1,44 @@
+<?php
+/**
+ * Generic providers for the MediaWiki PHPUnit test suite
+ *
+ * @author Ashar Voultoiz
+ * @copyright Copyright © 2011, Ashar Voultoiz
+ * @file
+ */
+
+/** */
+class MediaWikiProvide {
+
+ /* provide an array of numbers from 1 up to @param $num */
+ private static function createProviderUpTo( $num ) {
+ $ret = array();
+ for( $i=1; $i<=$num;$i++ ) {
+ $ret[] = array( $i );
+ }
+ return $ret;
+ }
+
+ /* array of months numbers (as an integer) */
+ public static function Months() {
+ return self::createProviderUpTo( 12 );
+ }
+
+ /* array of days numbers (as an integer) */
+ public static function Days() {
+ return self::createProviderUpTo( 31 );
+ }
+
+ public static function DaysMonths() {
+ $ret = array();
+
+ $months = self::Months();
+ $days = self::Days();
+ foreach( $months as $month) {
+ foreach( $days as $day ) {
+ $ret[] = array( $day[0], $month[0] );
+ }
+ }
+ return $ret;
+ }
+}
diff --git a/tests/phpunit/includes/ResourceLoaderTest.php b/tests/phpunit/includes/ResourceLoaderTest.php
new file mode 100644
index 00000000..30a69c5e
--- /dev/null
+++ b/tests/phpunit/includes/ResourceLoaderTest.php
@@ -0,0 +1,91 @@
+<?php
+
+class ResourceLoaderTest extends PHPUnit_Framework_TestCase {
+
+ protected static $resourceLoaderRegisterModulesHook;
+
+ /* Hook Methods */
+
+ /**
+ * ResourceLoaderRegisterModules hook
+ */
+ public static function resourceLoaderRegisterModules( &$resourceLoader ) {
+ self::$resourceLoaderRegisterModulesHook = true;
+ return true;
+ }
+
+ /* Provider Methods */
+ public function provideValidModules() {
+ return array(
+ array( 'TEST.validModule1', new ResourceLoaderTestModule() ),
+ );
+ }
+
+ /* Test Methods */
+
+ /**
+ * Ensures that the ResourceLoaderRegisterModules hook is called when a new ResourceLoader object is constructed
+ * @covers ResourceLoader::__construct
+ */
+ public function testCreatingNewResourceLoaderCallsRegistrationHook() {
+ self::$resourceLoaderRegisterModulesHook = false;
+ $resourceLoader = new ResourceLoader();
+ $this->assertTrue( self::$resourceLoaderRegisterModulesHook );
+ return $resourceLoader;
+ }
+
+ /**
+ * @dataProvider provideValidModules
+ * @depends testCreatingNewResourceLoaderCallsRegistrationHook
+ * @covers ResourceLoader::register
+ * @covers ResourceLoader::getModule
+ */
+ public function testRegisteredValidModulesAreAccessible(
+ $name, ResourceLoaderModule $module, ResourceLoader $resourceLoader
+ ) {
+ $resourceLoader->register( $name, $module );
+ $this->assertEquals( $module, $resourceLoader->getModule( $name ) );
+ }
+
+ /**
+ * @dataProvider providePackedModules
+ */
+ public function testMakePackedModulesString( $desc, $modules, $packed ) {
+ $this->assertEquals( $packed, ResourceLoader::makePackedModulesString( $modules ), $desc );
+ }
+
+ /**
+ * @dataProvider providePackedModules
+ */
+ public function testexpandModuleNames( $desc, $modules, $packed ) {
+ $this->assertEquals( $modules, ResourceLoaderContext::expandModuleNames( $packed ), $desc );
+ }
+
+ public function providePackedModules() {
+ return array(
+ array(
+ 'Example from makePackedModulesString doc comment',
+ array( 'foo.bar', 'foo.baz', 'bar.baz', 'bar.quux' ),
+ 'foo.bar,baz|bar.baz,quux',
+ ),
+ array(
+ 'Example from expandModuleNames doc comment',
+ array( 'jquery.foo', 'jquery.bar', 'jquery.ui.baz', 'jquery.ui.quux' ),
+ 'jquery.foo,bar|jquery.ui.baz,quux',
+ ),
+ array(
+ 'Regression fixed in r88706 with dotless names',
+ array( 'foo', 'bar', 'baz' ),
+ 'foo,bar,baz',
+ )
+ );
+ }
+}
+
+/* Stubs */
+
+class ResourceLoaderTestModule extends ResourceLoaderModule { }
+
+/* Hooks */
+global $wgHooks;
+$wgHooks['ResourceLoaderRegisterModules'][] = 'ResourceLoaderTest::resourceLoaderRegisterModules';
diff --git a/tests/phpunit/includes/RevisionTest.php b/tests/phpunit/includes/RevisionTest.php
new file mode 100644
index 00000000..d7654db9
--- /dev/null
+++ b/tests/phpunit/includes/RevisionTest.php
@@ -0,0 +1,125 @@
+<?php
+
+class RevisionTest extends MediaWikiTestCase {
+ var $saveGlobals = array();
+
+ function setUp() {
+ global $wgContLang;
+ $wgContLang = Language::factory( 'en' );
+ $globalSet = array(
+ 'wgLegacyEncoding' => false,
+ 'wgCompressRevisions' => false,
+ );
+ foreach ( $globalSet as $var => $data ) {
+ $this->saveGlobals[$var] = $GLOBALS[$var];
+ $GLOBALS[$var] = $data;
+ }
+ }
+
+ function tearDown() {
+ foreach ( $this->saveGlobals as $var => $data ) {
+ $GLOBALS[$var] = $data;
+ }
+ }
+
+ function testGetRevisionText() {
+ $row = new stdClass;
+ $row->old_flags = '';
+ $row->old_text = 'This is a bunch of revision text.';
+ $this->assertEquals(
+ 'This is a bunch of revision text.',
+ Revision::getRevisionText( $row ) );
+ }
+
+ function testGetRevisionTextGzip() {
+ if ( !function_exists( 'gzdeflate' ) ) {
+ $this->markTestSkipped( 'Gzip compression is not enabled (requires zlib).' );
+ } else {
+ $row = new stdClass;
+ $row->old_flags = 'gzip';
+ $row->old_text = gzdeflate( 'This is a bunch of revision text.' );
+ $this->assertEquals(
+ 'This is a bunch of revision text.',
+ Revision::getRevisionText( $row ) );
+ }
+ }
+
+ function testGetRevisionTextUtf8Native() {
+ $row = new stdClass;
+ $row->old_flags = 'utf-8';
+ $row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
+ $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
+ $this->assertEquals(
+ "Wiki est l'\xc3\xa9cole superieur !",
+ Revision::getRevisionText( $row ) );
+ }
+
+ function testGetRevisionTextUtf8Legacy() {
+ $row = new stdClass;
+ $row->old_flags = '';
+ $row->old_text = "Wiki est l'\xe9cole superieur !";
+ $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
+ $this->assertEquals(
+ "Wiki est l'\xc3\xa9cole superieur !",
+ Revision::getRevisionText( $row ) );
+ }
+
+ function testGetRevisionTextUtf8NativeGzip() {
+ if ( !function_exists( 'gzdeflate' ) ) {
+ $this->markTestSkipped( 'Gzip compression is not enabled (requires zlib).' );
+ } else {
+ $row = new stdClass;
+ $row->old_flags = 'gzip,utf-8';
+ $row->old_text = gzdeflate( "Wiki est l'\xc3\xa9cole superieur !" );
+ $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
+ $this->assertEquals(
+ "Wiki est l'\xc3\xa9cole superieur !",
+ Revision::getRevisionText( $row ) );
+ }
+ }
+
+ function testGetRevisionTextUtf8LegacyGzip() {
+ if ( !function_exists( 'gzdeflate' ) ) {
+ $this->markTestSkipped( 'Gzip compression is not enabled (requires zlib).' );
+ } else {
+ $row = new stdClass;
+ $row->old_flags = 'gzip';
+ $row->old_text = gzdeflate( "Wiki est l'\xe9cole superieur !" );
+ $GLOBALS['wgLegacyEncoding'] = 'iso-8859-1';
+ $this->assertEquals(
+ "Wiki est l'\xc3\xa9cole superieur !",
+ Revision::getRevisionText( $row ) );
+ }
+ }
+
+ function testCompressRevisionTextUtf8() {
+ $row = new stdClass;
+ $row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
+ $row->old_flags = Revision::compressRevisionText( $row->old_text );
+ $this->assertTrue( false !== strpos( $row->old_flags, 'utf-8' ),
+ "Flags should contain 'utf-8'" );
+ $this->assertFalse( false !== strpos( $row->old_flags, 'gzip' ),
+ "Flags should not contain 'gzip'" );
+ $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
+ $row->old_text, "Direct check" );
+ $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
+ Revision::getRevisionText( $row ), "getRevisionText" );
+ }
+
+ function testCompressRevisionTextUtf8Gzip() {
+ $GLOBALS['wgCompressRevisions'] = true;
+ $row = new stdClass;
+ $row->old_text = "Wiki est l'\xc3\xa9cole superieur !";
+ $row->old_flags = Revision::compressRevisionText( $row->old_text );
+ $this->assertTrue( false !== strpos( $row->old_flags, 'utf-8' ),
+ "Flags should contain 'utf-8'" );
+ $this->assertTrue( false !== strpos( $row->old_flags, 'gzip' ),
+ "Flags should contain 'gzip'" );
+ $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
+ gzinflate( $row->old_text ), "Direct check" );
+ $this->assertEquals( "Wiki est l'\xc3\xa9cole superieur !",
+ Revision::getRevisionText( $row ), "getRevisionText" );
+ }
+}
+
+
diff --git a/tests/phpunit/includes/SampleTest.php b/tests/phpunit/includes/SampleTest.php
new file mode 100644
index 00000000..77a371d5
--- /dev/null
+++ b/tests/phpunit/includes/SampleTest.php
@@ -0,0 +1,98 @@
+<?php
+
+class TestSample extends MediaWikiLangTestCase {
+
+ /**
+ * Anything that needs to happen before your tests should go here.
+ */
+ function setUp() {
+ global $wgContLang;
+ parent::setUp();
+
+ /* For example, we need to set $wgContLang for creating a new Title */
+ $wgContLang = Language::factory( 'en' );
+ }
+
+ /**
+ * Anything cleanup you need to do should go here.
+ */
+ function tearDown() {
+ parent::tearDown();
+ }
+
+ /**
+ * Name tests so that PHPUnit can turn them into sentances when
+ * they run. While MediaWiki isn't strictly an Agile Programming
+ * project, you are encouraged to use the naming described under
+ * "Agile Documentation" at
+ * http://www.phpunit.de/manual/3.4/en/other-uses-for-tests.html
+ */
+ function testTitleObjectStringConversion() {
+ $title = Title::newFromText("text");
+ $this->assertEquals("Text", $title->__toString(), "Title creation");
+ $this->assertEquals("Text", "Text", "Automatic string conversion");
+
+ $title = Title::newFromText("text", NS_MEDIA);
+ $this->assertEquals("Media:Text", $title->__toString(), "Title creation with namespace");
+
+ }
+
+ /**
+ * If you want to run a the same test with a variety of data. use a data provider.
+ * see: http://www.phpunit.de/manual/3.4/en/writing-tests-for-phpunit.html
+ */
+ public function provideTitles() {
+ return array(
+ array( 'Text', NS_MEDIA, 'Media:Text' ),
+ array( 'Text', null, 'Text' ),
+ array( 'text', null, 'Text' ),
+ array( 'Text', NS_USER, 'User:Text' ),
+ array( 'Photo.jpg', NS_IMAGE, 'File:Photo.jpg' )
+ );
+ }
+
+ /**
+ * @dataProvider provideTitles
+ * See http://www.phpunit.de/manual/3.4/en/appendixes.annotations.html#appendixes.annotations.dataProvider
+ */
+ public function testCreateBasicListOfTitles($titleName, $ns, $text) {
+ $title = Title::newFromText($titleName, $ns);
+ $this->assertEquals($text, "$title", "see if '$titleName' matches '$text'");
+ }
+
+ public function testSetUpMainPageTitleForNextTest() {
+ $title = Title::newMainPage();
+ $this->assertEquals("Main Page", "$title", "Test initial creation of a title");
+
+ return $title;
+ }
+
+ /**
+ * Instead of putting a bunch of tests in a single test method,
+ * you should put only one or two tests in each test method. This
+ * way, the test method names can remain descriptive.
+ *
+ * If you want to make tests depend on data created in another
+ * method, you can create dependencies feed whatever you return
+ * from the dependant method (e.g. testInitialCreation in this
+ * example) as arguments to the next method (e.g. $title in
+ * testTitleDepends is whatever testInitialCreatiion returned.)
+ */
+ /**
+ * @depends testSetUpMainPageTitleForNextTest
+ * See http://www.phpunit.de/manual/3.4/en/appendixes.annotations.html#appendixes.annotations.depends
+ */
+ public function testCheckMainPageTitleIsConsideredLocal( $title ) {
+ $this->assertTrue( $title->isLocal() );
+ }
+
+ /**
+ * @expectedException MWException object
+ * See http://www.phpunit.de/manual/3.4/en/appendixes.annotations.html#appendixes.annotations.expectedException
+ */
+ function testTitleObjectFromObject() {
+ $title = Title::newFromText( Title::newFromText( "test" ) );
+ $this->assertEquals( "Test", $title->isLocal() );
+ }
+}
+
diff --git a/tests/phpunit/includes/SanitizerTest.php b/tests/phpunit/includes/SanitizerTest.php
new file mode 100644
index 00000000..40d6cf77
--- /dev/null
+++ b/tests/phpunit/includes/SanitizerTest.php
@@ -0,0 +1,113 @@
+<?php
+
+class SanitizerTest extends MediaWikiTestCase {
+
+ function setUp() {
+ AutoLoader::loadClass( 'Sanitizer' );
+ }
+
+ function testDecodeNamedEntities() {
+ $this->assertEquals(
+ "\xc3\xa9cole",
+ Sanitizer::decodeCharReferences( '&eacute;cole' ),
+ 'decode named entities'
+ );
+ }
+
+ function testDecodeNumericEntities() {
+ $this->assertEquals(
+ "\xc4\x88io bonas dans l'\xc3\xa9cole!",
+ Sanitizer::decodeCharReferences( "&#x108;io bonas dans l'&#233;cole!" ),
+ 'decode numeric entities'
+ );
+ }
+
+ function testDecodeMixedEntities() {
+ $this->assertEquals(
+ "\xc4\x88io bonas dans l'\xc3\xa9cole!",
+ Sanitizer::decodeCharReferences( "&#x108;io bonas dans l'&eacute;cole!" ),
+ 'decode mixed numeric/named entities'
+ );
+ }
+
+ function testDecodeMixedComplexEntities() {
+ $this->assertEquals(
+ "\xc4\x88io bonas dans l'\xc3\xa9cole! (mais pas &#x108;io dans l'&eacute;cole)",
+ Sanitizer::decodeCharReferences(
+ "&#x108;io bonas dans l'&eacute;cole! (mais pas &amp;#x108;io dans l'&#38;eacute;cole)"
+ ),
+ 'decode mixed complex entities'
+ );
+ }
+
+ function testInvalidAmpersand() {
+ $this->assertEquals(
+ 'a & b',
+ Sanitizer::decodeCharReferences( 'a & b' ),
+ 'Invalid ampersand'
+ );
+ }
+
+ function testInvalidEntities() {
+ $this->assertEquals(
+ '&foo;',
+ Sanitizer::decodeCharReferences( '&foo;' ),
+ 'Invalid named entity'
+ );
+ }
+
+ function testInvalidNumberedEntities() {
+ $this->assertEquals( UTF8_REPLACEMENT, Sanitizer::decodeCharReferences( "&#88888888888888;" ), 'Invalid numbered entity' );
+ }
+
+ function testSelfClosingTag() {
+ $GLOBALS['wgUseTidy'] = false;
+ $this->assertEquals(
+ '<div>Hello world</div>',
+ Sanitizer::removeHTMLtags( '<div>Hello world</div />' ),
+ 'Self-closing closing div'
+ );
+ }
+
+ function testDecodeTagAttributes() {
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo=bar' ), array( 'foo' => 'bar' ), 'Unquoted attribute' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( ' foo = bar ' ), array( 'foo' => 'bar' ), 'Spaced attribute' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo="bar"' ), array( 'foo' => 'bar' ), 'Double-quoted attribute' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo=\'bar\'' ), array( 'foo' => 'bar' ), 'Single-quoted attribute' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo=\'bar\' baz="foo"' ), array( 'foo' => 'bar', 'baz' => 'foo' ), 'Several attributes' );
+
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo=\'bar\' baz="foo"' ), array( 'foo' => 'bar', 'baz' => 'foo' ), 'Several attributes' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo=\'bar\' baz="foo"' ), array( 'foo' => 'bar', 'baz' => 'foo' ), 'Several attributes' );
+
+ $this->assertEquals( Sanitizer::decodeTagAttributes( ':foo=\'bar\'' ), array( ':foo' => 'bar' ), 'Leading :' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( '_foo=\'bar\'' ), array( '_foo' => 'bar' ), 'Leading _' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'Foo=\'bar\'' ), array( 'foo' => 'bar' ), 'Leading capital' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'FOO=BAR' ), array( 'foo' => 'BAR' ), 'Attribute keys are normalized to lowercase' );
+
+ # Invalid beginning
+ $this->assertEquals( Sanitizer::decodeTagAttributes( '-foo=bar' ), array(), 'Leading - is forbidden' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( '.foo=bar' ), array(), 'Leading . is forbidden' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo-bar=bar' ), array( 'foo-bar' => 'bar' ), 'A - is allowed inside the attribute' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo-=bar' ), array( 'foo-' => 'bar' ), 'A - is allowed inside the attribute' );
+
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo.bar=baz' ), array( 'foo.bar' => 'baz' ), 'A . is allowed inside the attribute' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo.=baz' ), array( 'foo.' => 'baz' ), 'A . is allowed as last character' );
+
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo6=baz' ), array( 'foo6' => 'baz' ), 'Numbers are allowed' );
+
+ # This bit is more relaxed than XML rules, but some extensions use it, like ProofreadPage (see bug 27539)
+ $this->assertEquals( Sanitizer::decodeTagAttributes( '1foo=baz' ), array( '1foo' => 'baz' ), 'Leading numbers are allowed' );
+
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo$=baz' ), array(), 'Symbols are not allowed' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo@=baz' ), array(), 'Symbols are not allowed' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo~=baz' ), array(), 'Symbols are not allowed' );
+
+
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo=1[#^`*%w/(' ), array( 'foo' => '1[#^`*%w/(' ), 'All kind of characters are allowed as values' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo="1[#^`*%\'w/("' ), array( 'foo' => '1[#^`*%\'w/(' ), 'Double quotes are allowed if quoted by single quotes' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo=\'1[#^`*%"w/(\'' ), array( 'foo' => '1[#^`*%"w/(' ), 'Single quotes are allowed if quoted by double quotes' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo=&amp;&quot;' ), array( 'foo' => '&"' ), 'Special chars can be provided as entities' );
+ $this->assertEquals( Sanitizer::decodeTagAttributes( 'foo=&foobar;' ), array( 'foo' => '&foobar;' ), 'Entity-like items are accepted' );
+ }
+}
+
diff --git a/tests/phpunit/includes/SeleniumConfigurationTest.php b/tests/phpunit/includes/SeleniumConfigurationTest.php
new file mode 100644
index 00000000..750524eb
--- /dev/null
+++ b/tests/phpunit/includes/SeleniumConfigurationTest.php
@@ -0,0 +1,228 @@
+<?php
+
+class SeleniumConfigurationTest extends MediaWikiTestCase {
+
+ /*
+ * The file where the test temporarity stores the selenium config.
+ * This should be cleaned up as part of teardown.
+ */
+ private $tempFileName;
+
+ /*
+ * String containing the a sample selenium settings
+ */
+ private $testConfig0 =
+'
+[SeleniumSettings]
+browsers[firefox] = "*firefox"
+browsers[iexplorer] = "*iexploreproxy"
+browsers[chrome] = "*chrome"
+host = "localhost"
+port = "foobarr"
+wikiUrl = "http://localhost/deployment"
+username = "xxxxxxx"
+userPassword = ""
+testBrowser = "chrome"
+startserver =
+stopserver =
+jUnitLogFile =
+runAgainstGrid = false
+
+[SeleniumTests]
+testSuite[SimpleSeleniumTestSuite] = "tests/selenium/SimpleSeleniumTestSuite.php"
+testSuite[TestSuiteName] = "testSuitePath"
+';
+ /*
+ * Array of expected browsers from $testConfig0
+ */
+ private $testBrowsers0 = array( 'firefox' => '*firefox',
+ 'iexplorer' => '*iexploreproxy',
+ 'chrome' => '*chrome'
+ );
+ /*
+ * Array of expected selenium settings from $testConfig0
+ */
+ private $testSettings0 = array(
+ 'host' => 'localhost',
+ 'port' => 'foobarr',
+ 'wikiUrl' => 'http://localhost/deployment',
+ 'username' => 'xxxxxxx',
+ 'userPassword' => '',
+ 'testBrowser' => 'chrome',
+ 'startserver' => null,
+ 'stopserver' => null,
+ 'seleniumserverexecpath' => null,
+ 'jUnitLogFile' => null,
+ 'runAgainstGrid' => null
+ );
+ /*
+ * Array of expected testSuites from $testConfig0
+ */
+ private $testSuites0 = array(
+ 'SimpleSeleniumTestSuite' => 'tests/selenium/SimpleSeleniumTestSuite.php',
+ 'TestSuiteName' => 'testSuitePath'
+ );
+
+
+ /*
+ * Another sample selenium settings file contents
+ */
+ private $testConfig1 =
+'
+[SeleniumSettings]
+host = "localhost"
+testBrowser = "firefox"
+';
+ /*
+ * Expected browsers from $testConfig1
+ */
+ private $testBrowsers1 = null;
+ /*
+ * Expected selenium settings from $testConfig1
+ */
+ private $testSettings1 = array(
+ 'host' => 'localhost',
+ 'port' => null,
+ 'wikiUrl' => null,
+ 'username' => null,
+ 'userPassword' => null,
+ 'testBrowser' => 'firefox',
+ 'startserver' => null,
+ 'stopserver' => null,
+ 'seleniumserverexecpath' => null,
+ 'jUnitLogFile' => null,
+ 'runAgainstGrid' => null
+ );
+ /*
+ * Expected test suites from $testConfig1
+ */
+ private $testSuites1 = null;
+
+
+ public function setUp() {
+ if ( !defined( 'SELENIUMTEST' ) ) {
+ define( 'SELENIUMTEST', true );
+ }
+ }
+
+ /*
+ * Clean up the temporary file used to store the selenium settings.
+ */
+ public function tearDown() {
+ if ( strlen( $this->tempFileName ) > 0 ) {
+ unlink( $this->tempFileName );
+ unset( $this->tempFileName );
+ }
+ parent::tearDown();
+ }
+
+ /**
+ * @expectedException MWException
+ * @group SeleniumFramework
+ */
+ public function testErrorOnIncorrectConfigFile() {
+ $seleniumSettings = array();
+ $seleniumBrowsers = array();
+ $seleniumTestSuites = array();
+
+ SeleniumConfig::getSeleniumSettings($seleniumSettings,
+ $seleniumBrowsers,
+ $seleniumTestSuites,
+ "Some_fake_settings_file.ini" );
+
+ }
+
+ /**
+ * @expectedException MWException
+ * @group SeleniumFramework
+ */
+ public function testErrorOnMissingConfigFile() {
+ $seleniumSettings = array();
+ $seleniumBrowsers = array();
+ $seleniumTestSuites = array();
+ global $wgSeleniumConfigFile;
+ $wgSeleniumConfigFile = '';
+ SeleniumConfig::getSeleniumSettings($seleniumSettings,
+ $seleniumBrowsers,
+ $seleniumTestSuites);
+ }
+
+ /**
+ * @group SeleniumFramework
+ */
+ public function testUsesGlobalVarForConfigFile() {
+ $seleniumSettings = array();
+ $seleniumBrowsers = array();
+ $seleniumTestSuites = array();
+ global $wgSeleniumConfigFile;
+ $this->writeToTempFile( $this->testConfig0 );
+ $wgSeleniumConfigFile = $this->tempFileName;
+ SeleniumConfig::getSeleniumSettings($seleniumSettings,
+ $seleniumBrowsers,
+ $seleniumTestSuites);
+ $this->assertEquals($seleniumSettings, $this->testSettings0 ,
+ 'The selenium settings should have been read from the file defined in $wgSeleniumConfigFile'
+ );
+ $this->assertEquals($seleniumBrowsers, $this->testBrowsers0,
+ 'The available browsers should have been read from the file defined in $wgSeleniumConfigFile'
+ );
+ $this->assertEquals($seleniumTestSuites, $this->testSuites0,
+ 'The test suites should have been read from the file defined in $wgSeleniumConfigFile'
+ );
+ }
+
+ /**
+ * @group SeleniumFramework
+ * @dataProvider sampleConfigs
+ */
+ public function testgetSeleniumSettings($sampleConfig, $expectedSettings, $expectedBrowsers, $expectedSuites ) {
+ $this->writeToTempFile( $sampleConfig );
+ $seleniumSettings = array();
+ $seleniumBrowsers = array();
+ $seleniumTestSuites = null;
+
+ SeleniumConfig::getSeleniumSettings($seleniumSettings,
+ $seleniumBrowsers,
+ $seleniumTestSuites,
+ $this->tempFileName );
+
+ $this->assertEquals($seleniumSettings, $expectedSettings,
+ "The selenium settings for the following test configuration was not retrieved correctly" . $sampleConfig
+ );
+ $this->assertEquals($seleniumBrowsers, $expectedBrowsers,
+ "The available browsers for the following test configuration was not retrieved correctly" . $sampleConfig
+ );
+ $this->assertEquals($seleniumTestSuites, $expectedSuites,
+ "The test suites for the following test configuration was not retrieved correctly" . $sampleConfig
+ );
+
+
+ }
+
+ /*
+ * create a temp file and write text to it.
+ * @param $testToWrite the text to write to the temp file
+ */
+ private function writeToTempFile($textToWrite) {
+ $this->tempFileName = tempnam(sys_get_temp_dir(), 'test_settings.');
+ $tempFile = fopen( $this->tempFileName, "w" );
+ fwrite($tempFile , $textToWrite);
+ fclose($tempFile);
+ }
+
+ /*
+ * Returns an array containing:
+ * The contents of the selenium cingiguration ini file
+ * The expected selenium configuration array that getSeleniumSettings should return
+ * The expected available browsers array that getSeleniumSettings should return
+ * The expected test suites arrya that getSeleniumSettings should return
+ */
+ public function sampleConfigs() {
+ return array(
+ array($this->testConfig0, $this->testSettings0, $this->testBrowsers0, $this->testSuites0 ),
+ array($this->testConfig1, $this->testSettings1, $this->testBrowsers1, $this->testSuites1 )
+ );
+ }
+
+
+}
diff --git a/tests/phpunit/includes/SiteConfigurationTest.php b/tests/phpunit/includes/SiteConfigurationTest.php
new file mode 100644
index 00000000..57d3532a
--- /dev/null
+++ b/tests/phpunit/includes/SiteConfigurationTest.php
@@ -0,0 +1,311 @@
+<?php
+
+function getSiteParams( $conf, $wiki ) {
+ $site = null;
+ $lang = null;
+ foreach ( $conf->suffixes as $suffix ) {
+ if ( substr( $wiki, -strlen( $suffix ) ) == $suffix ) {
+ $site = $suffix;
+ $lang = substr( $wiki, 0, -strlen( $suffix ) );
+ break;
+ }
+ }
+ return array(
+ 'suffix' => $site,
+ 'lang' => $lang,
+ 'params' => array(
+ 'lang' => $lang,
+ 'site' => $site,
+ 'wiki' => $wiki,
+ ),
+ 'tags' => array( 'tag' ),
+ );
+}
+
+class SiteConfigurationTest extends MediaWikiTestCase {
+ var $mConf;
+
+ function setUp() {
+ $this->mConf = new SiteConfiguration;
+
+ $this->mConf->suffixes = array( 'wiki' );
+ $this->mConf->wikis = array( 'enwiki', 'dewiki', 'frwiki' );
+ $this->mConf->settings = array(
+ 'simple' => array(
+ 'wiki' => 'wiki',
+ 'tag' => 'tag',
+ 'enwiki' => 'enwiki',
+ 'dewiki' => 'dewiki',
+ 'frwiki' => 'frwiki',
+ ),
+
+ 'fallback' => array(
+ 'default' => 'default',
+ 'wiki' => 'wiki',
+ 'tag' => 'tag',
+ ),
+
+ 'params' => array(
+ 'default' => '$lang $site $wiki',
+ ),
+
+ '+global' => array(
+ 'wiki' => array(
+ 'wiki' => 'wiki',
+ ),
+ 'tag' => array(
+ 'tag' => 'tag',
+ ),
+ 'enwiki' => array(
+ 'enwiki' => 'enwiki',
+ ),
+ 'dewiki' => array(
+ 'dewiki' => 'dewiki',
+ ),
+ 'frwiki' => array(
+ 'frwiki' => 'frwiki',
+ ),
+ ),
+
+ 'merge' => array(
+ '+wiki' => array(
+ 'wiki' => 'wiki',
+ ),
+ '+tag' => array(
+ 'tag' => 'tag',
+ ),
+ 'default' => array(
+ 'default' => 'default',
+ ),
+ '+enwiki' => array(
+ 'enwiki' => 'enwiki',
+ ),
+ '+dewiki' => array(
+ 'dewiki' => 'dewiki',
+ ),
+ '+frwiki' => array(
+ 'frwiki' => 'frwiki',
+ ),
+ ),
+ );
+
+ $GLOBALS['global'] = array( 'global' => 'global' );
+ }
+
+
+ function testSiteFromDb() {
+ $this->assertEquals(
+ array( 'wikipedia', 'en' ),
+ $this->mConf->siteFromDB( 'enwiki' ),
+ 'siteFromDB()'
+ );
+ $this->assertEquals(
+ array( 'wikipedia', '' ),
+ $this->mConf->siteFromDB( 'wiki' ),
+ 'siteFromDB() on a suffix'
+ );
+ $this->assertEquals(
+ array( null, null ),
+ $this->mConf->siteFromDB( 'wikien' ),
+ 'siteFromDB() on a non-existing wiki'
+ );
+
+ $this->mConf->suffixes = array( 'wiki', '' );
+ $this->assertEquals(
+ array( '', 'wikien' ),
+ $this->mConf->siteFromDB( 'wikien' ),
+ 'siteFromDB() on a non-existing wiki (2)'
+ );
+ }
+
+ function testGetLocalDatabases() {
+ $this->assertEquals(
+ array( 'enwiki', 'dewiki', 'frwiki' ),
+ $this->mConf->getLocalDatabases(),
+ 'getLocalDatabases()'
+ );
+ }
+
+ function testGetConfVariables() {
+ $this->assertEquals(
+ 'enwiki',
+ $this->mConf->get( 'simple', 'enwiki', 'wiki' ),
+ 'get(): simple setting on an existing wiki'
+ );
+ $this->assertEquals(
+ 'dewiki',
+ $this->mConf->get( 'simple', 'dewiki', 'wiki' ),
+ 'get(): simple setting on an existing wiki (2)'
+ );
+ $this->assertEquals(
+ 'frwiki',
+ $this->mConf->get( 'simple', 'frwiki', 'wiki' ),
+ 'get(): simple setting on an existing wiki (3)'
+ );
+ $this->assertEquals(
+ 'wiki',
+ $this->mConf->get( 'simple', 'wiki', 'wiki' ),
+ 'get(): simple setting on an suffix'
+ );
+ $this->assertEquals(
+ 'wiki',
+ $this->mConf->get( 'simple', 'eswiki', 'wiki' ),
+ 'get(): simple setting on an non-existing wiki'
+ );
+
+ $this->assertEquals(
+ 'wiki',
+ $this->mConf->get( 'fallback', 'enwiki', 'wiki' ),
+ 'get(): fallback setting on an existing wiki'
+ );
+ $this->assertEquals(
+ 'tag',
+ $this->mConf->get( 'fallback', 'dewiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): fallback setting on an existing wiki (with wiki tag)'
+ );
+ $this->assertEquals(
+ 'wiki',
+ $this->mConf->get( 'fallback', 'wiki', 'wiki' ),
+ 'get(): fallback setting on an suffix'
+ );
+ $this->assertEquals(
+ 'wiki',
+ $this->mConf->get( 'fallback', 'wiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): fallback setting on an suffix (with wiki tag)'
+ );
+ $this->assertEquals(
+ 'wiki',
+ $this->mConf->get( 'fallback', 'eswiki', 'wiki' ),
+ 'get(): fallback setting on an non-existing wiki'
+ );
+ $this->assertEquals(
+ 'tag',
+ $this->mConf->get( 'fallback', 'eswiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): fallback setting on an non-existing wiki (with wiki tag)'
+ );
+
+ $common = array( 'wiki' => 'wiki', 'default' => 'default' );
+ $commonTag = array( 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' );
+ $this->assertEquals(
+ array( 'enwiki' => 'enwiki' ) + $common,
+ $this->mConf->get( 'merge', 'enwiki', 'wiki' ),
+ 'get(): merging setting on an existing wiki'
+ );
+ $this->assertEquals(
+ array( 'enwiki' => 'enwiki' ) + $commonTag,
+ $this->mConf->get( 'merge', 'enwiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): merging setting on an existing wiki (with tag)'
+ );
+ $this->assertEquals(
+ array( 'dewiki' => 'dewiki' ) + $common,
+ $this->mConf->get( 'merge', 'dewiki', 'wiki' ),
+ 'get(): merging setting on an existing wiki (2)'
+ );
+ $this->assertEquals(
+ array( 'dewiki' => 'dewiki' ) + $commonTag,
+ $this->mConf->get( 'merge', 'dewiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): merging setting on an existing wiki (2) (with tag)'
+ );
+ $this->assertEquals(
+ array( 'frwiki' => 'frwiki' ) + $common,
+ $this->mConf->get( 'merge', 'frwiki', 'wiki' ),
+ 'get(): merging setting on an existing wiki (3)'
+ );
+ $this->assertEquals(
+ array( 'frwiki' => 'frwiki' ) + $commonTag,
+ $this->mConf->get( 'merge', 'frwiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): merging setting on an existing wiki (3) (with tag)'
+ );
+ $this->assertEquals(
+ array( 'wiki' => 'wiki' ) + $common,
+ $this->mConf->get( 'merge', 'wiki', 'wiki' ),
+ 'get(): merging setting on an suffix'
+ );
+ $this->assertEquals(
+ array( 'wiki' => 'wiki' ) + $commonTag,
+ $this->mConf->get( 'merge', 'wiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): merging setting on an suffix (with tag)'
+ );
+ $this->assertEquals(
+ $common,
+ $this->mConf->get( 'merge', 'eswiki', 'wiki' ),
+ 'get(): merging setting on an non-existing wiki'
+ );
+ $this->assertEquals(
+ $commonTag,
+ $this->mConf->get( 'merge', 'eswiki', 'wiki', array(), array( 'tag' ) ),
+ 'get(): merging setting on an non-existing wiki (with tag)'
+ );
+ }
+
+ function testSiteFromDbWithCallback() {
+ $this->mConf->siteParamsCallback = 'getSiteParams';
+
+ $this->assertEquals(
+ array( 'wiki', 'en' ),
+ $this->mConf->siteFromDB( 'enwiki' ),
+ 'siteFromDB() with callback'
+ );
+ $this->assertEquals(
+ array( 'wiki', '' ),
+ $this->mConf->siteFromDB( 'wiki' ),
+ 'siteFromDB() with callback on a suffix'
+ );
+ $this->assertEquals(
+ array( null, null ),
+ $this->mConf->siteFromDB( 'wikien' ),
+ 'siteFromDB() with callback on a non-existing wiki'
+ );
+ }
+
+ function testParameterReplacement() {
+ $this->mConf->siteParamsCallback = 'getSiteParams';
+
+ $this->assertEquals(
+ 'en wiki enwiki',
+ $this->mConf->get( 'params', 'enwiki', 'wiki' ),
+ 'get(): parameter replacement on an existing wiki'
+ );
+ $this->assertEquals(
+ 'de wiki dewiki',
+ $this->mConf->get( 'params', 'dewiki', 'wiki' ),
+ 'get(): parameter replacement on an existing wiki (2)'
+ );
+ $this->assertEquals(
+ 'fr wiki frwiki',
+ $this->mConf->get( 'params', 'frwiki', 'wiki' ),
+ 'get(): parameter replacement on an existing wiki (3)'
+ );
+ $this->assertEquals(
+ ' wiki wiki',
+ $this->mConf->get( 'params', 'wiki', 'wiki' ),
+ 'get(): parameter replacement on an suffix'
+ );
+ $this->assertEquals(
+ 'es wiki eswiki',
+ $this->mConf->get( 'params', 'eswiki', 'wiki' ),
+ 'get(): parameter replacement on an non-existing wiki'
+ );
+ }
+
+ function testGetAllGlobals() {
+ $this->mConf->siteParamsCallback = 'getSiteParams';
+
+ $getall = array(
+ 'simple' => 'enwiki',
+ 'fallback' => 'tag',
+ 'params' => 'en wiki enwiki',
+ 'global' => array( 'enwiki' => 'enwiki' ) + $GLOBALS['global'],
+ 'merge' => array( 'enwiki' => 'enwiki', 'tag' => 'tag', 'wiki' => 'wiki', 'default' => 'default' ),
+ );
+ $this->assertEquals( $getall, $this->mConf->getAll( 'enwiki' ), 'getAll()' );
+
+ $this->mConf->extractAllGlobals( 'enwiki', 'wiki' );
+
+ $this->assertEquals( $getall['simple'], $GLOBALS['simple'], 'extractAllGlobals(): simple setting' );
+ $this->assertEquals( $getall['fallback'], $GLOBALS['fallback'], 'extractAllGlobals(): fallback setting' );
+ $this->assertEquals( $getall['params'], $GLOBALS['params'], 'extractAllGlobals(): parameter replacement' );
+ $this->assertEquals( $getall['global'], $GLOBALS['global'], 'extractAllGlobals(): merging with global' );
+ $this->assertEquals( $getall['merge'], $GLOBALS['merge'], 'extractAllGlobals(): merging setting' );
+ }
+}
diff --git a/tests/phpunit/includes/TimeAdjustTest.php b/tests/phpunit/includes/TimeAdjustTest.php
new file mode 100644
index 00000000..cd027c5b
--- /dev/null
+++ b/tests/phpunit/includes/TimeAdjustTest.php
@@ -0,0 +1,51 @@
+<?php
+
+class TimeAdjustTest extends MediaWikiLangTestCase {
+ static $offset;
+
+ public function setUp() {
+ parent::setUp();
+ global $wgLocalTZoffset;
+ self::$offset = $wgLocalTZoffset;
+
+ $this->iniSet( 'precision', 15 );
+ }
+
+ public function tearDown() {
+ global $wgLocalTZoffset;
+ $wgLocalTZoffset = self::$offset;
+ parent::tearDown();
+ }
+
+ # Test offset usage for a given language::userAdjust
+ function testUserAdjust() {
+ global $wgLocalTZoffset, $wgContLang;
+
+ $wgContLang = $en = Language::factory( 'en' );
+
+ #  Collection of parameters for Language_t_Offset.
+ # Format: date to be formatted, localTZoffset value, expected date
+ $userAdjust_tests = array(
+ array( 20061231235959, 0, 20061231235959 ),
+ array( 20061231235959, 5, 20070101000459 ),
+ array( 20061231235959, 15, 20070101001459 ),
+ array( 20061231235959, 60, 20070101005959 ),
+ array( 20061231235959, 90, 20070101012959 ),
+ array( 20061231235959, 120, 20070101015959 ),
+ array( 20061231235959, 540, 20070101085959 ),
+ array( 20061231235959, -5, 20061231235459 ),
+ array( 20061231235959, -30, 20061231232959 ),
+ array( 20061231235959, -60, 20061231225959 ),
+ );
+
+ foreach ( $userAdjust_tests as $data ) {
+ $wgLocalTZoffset = $data[1];
+
+ $this->assertEquals(
+ strval( $data[2] ),
+ strval( $en->userAdjust( $data[0], '' ) ),
+ "User adjust {$data[0]} by {$data[1]} minutes should give {$data[2]}"
+ );
+ }
+ }
+}
diff --git a/tests/phpunit/includes/TitlePermissionTest.php b/tests/phpunit/includes/TitlePermissionTest.php
new file mode 100644
index 00000000..1b179686
--- /dev/null
+++ b/tests/phpunit/includes/TitlePermissionTest.php
@@ -0,0 +1,654 @@
+<?php
+
+/**
+ * @group Database
+ */
+class TitlePermissionTest extends MediaWikiLangTestCase {
+ protected $title;
+ protected $user;
+ protected $anonUser;
+ protected $userUser;
+ protected $altUser;
+ protected $userName;
+ protected $altUserName;
+
+ function setUp() {
+ global $wgLocaltimezone, $wgLocalTZoffset, $wgMemc, $wgContLang, $wgLang;
+ parent::setUp();
+
+ if(!$wgMemc) {
+ $wgMemc = new EmptyBagOStuff;
+ }
+ $wgContLang = $wgLang = Language::factory( 'en' );
+
+ $this->userName = "Useruser";
+ $this->altUserName = "Altuseruser";
+ date_default_timezone_set( $wgLocaltimezone );
+ $wgLocalTZoffset = date( "Z" ) / 60;
+
+ $this->title = Title::makeTitle( NS_MAIN, "Main Page" );
+ if ( !isset( $this->userUser ) || !( $this->userUser instanceOf User ) ) {
+ $this->userUser = User::newFromName( $this->userName );
+
+ if ( !$this->userUser->getID() ) {
+ $this->userUser = User::createNew( $this->userName, array(
+ "email" => "test@example.com",
+ "real_name" => "Test User" ) );
+ $this->userUser->load();
+ }
+
+ $this->altUser = User::newFromName( $this->altUserName );
+ if ( !$this->altUser->getID() ) {
+ $this->altUser = User::createNew( $this->altUserName, array(
+ "email" => "alttest@example.com",
+ "real_name" => "Test User Alt" ) );
+ $this->altUser->load();
+ }
+
+ $this->anonUser = User::newFromId( 0 );
+
+ $this->user = $this->userUser;
+ }
+ }
+
+ function tearDown() {
+ parent::tearDown();
+ }
+
+ function setUserPerm( $perm ) {
+ if ( is_array( $perm ) ) {
+ $this->user->mRights = $perm;
+ } else {
+ $this->user->mRights = array( $perm );
+ }
+ }
+
+ function setTitle( $ns, $title = "Main_Page" ) {
+ $this->title = Title::makeTitle( $ns, $title );
+ }
+
+ function setUser( $userName = null ) {
+ if ( $userName === 'anon' ) {
+ $this->user = $this->anonUser;
+ } elseif ( $userName === null || $userName === $this->userName ) {
+ $this->user = $this->userUser;
+ } else {
+ $this->user = $this->altUser;
+ }
+
+ global $wgUser;
+ $wgUser = $this->user;
+ }
+
+ function testQuickPermissions() {
+ global $wgContLang;
+ $prefix = $wgContLang->getFormattedNsText( NS_PROJECT );
+
+ $this->setUser( 'anon' );
+ $this->setTitle( NS_TALK );
+ $this->setUserPerm( "createtalk" );
+ $res = $this->title->getUserPermissionsErrors( 'create', $this->user );
+ $this->assertEquals( array(), $res );
+
+ $this->setTitle( NS_TALK );
+ $this->setUserPerm( "createpage" );
+ $res = $this->title->getUserPermissionsErrors( 'create', $this->user );
+ $this->assertEquals( array( array( "nocreatetext" ) ), $res );
+
+ $this->setTitle( NS_TALK );
+ $this->setUserPerm( "" );
+ $res = $this->title->getUserPermissionsErrors( 'create', $this->user );
+ $this->assertEquals( array( array( 'nocreatetext' ) ), $res );
+
+ $this->setTitle( NS_MAIN );
+ $this->setUserPerm( "createpage" );
+ $res = $this->title->getUserPermissionsErrors( 'create', $this->user );
+ $this->assertEquals( array( ), $res );
+
+ $this->setTitle( NS_MAIN );
+ $this->setUserPerm( "createtalk" );
+ $res = $this->title->getUserPermissionsErrors( 'create', $this->user );
+ $this->assertEquals( array( array( 'nocreatetext' ) ), $res );
+
+ $this->setUser( $this->userName );
+ $this->setTitle( NS_TALK );
+ $this->setUserPerm( "createtalk" );
+ $res = $this->title->getUserPermissionsErrors( 'create', $this->user );
+ $this->assertEquals( array( ), $res );
+
+ $this->setTitle( NS_TALK );
+ $this->setUserPerm( "createpage" );
+ $res = $this->title->getUserPermissionsErrors( 'create', $this->user );
+ $this->assertEquals( array( array( 'nocreate-loggedin' ) ), $res );
+
+ $this->setTitle( NS_TALK );
+ $this->setUserPerm( "" );
+ $res = $this->title->getUserPermissionsErrors( 'create', $this->user );
+ $this->assertEquals( array( array( 'nocreate-loggedin' ) ), $res );
+
+ $this->setTitle( NS_MAIN );
+ $this->setUserPerm( "createpage" );
+ $res = $this->title->getUserPermissionsErrors( 'create', $this->user );
+ $this->assertEquals( array( ), $res );
+
+ $this->setTitle( NS_MAIN );
+ $this->setUserPerm( "createtalk" );
+ $res = $this->title->getUserPermissionsErrors( 'create', $this->user );
+ $this->assertEquals( array( array( 'nocreate-loggedin' ) ), $res );
+
+ $this->setTitle( NS_MAIN );
+ $this->setUserPerm( "" );
+ $res = $this->title->getUserPermissionsErrors( 'create', $this->user );
+ $this->assertEquals( array( array( 'nocreate-loggedin' ) ), $res );
+
+ $this->setUser( 'anon' );
+ $this->setTitle( NS_USER, $this->userName . '' );
+ $this->setUserPerm( "" );
+ $res = $this->title->getUserPermissionsErrors( 'move', $this->user );
+ $this->assertEquals( array( array( 'cant-move-user-page' ), array( 'movenologintext' ) ), $res );
+
+ $this->setTitle( NS_USER, $this->userName . '/subpage' );
+ $this->setUserPerm( "" );
+ $res = $this->title->getUserPermissionsErrors( 'move', $this->user );
+ $this->assertEquals( array( array( 'movenologintext' ) ), $res );
+
+ $this->setTitle( NS_USER, $this->userName . '' );
+ $this->setUserPerm( "move-rootuserpages" );
+ $res = $this->title->getUserPermissionsErrors( 'move', $this->user );
+ $this->assertEquals( array( array( 'movenologintext' ) ), $res );
+
+ $this->setTitle( NS_USER, $this->userName . '/subpage' );
+ $this->setUserPerm( "move-rootuserpages" );
+ $res = $this->title->getUserPermissionsErrors( 'move', $this->user );
+ $this->assertEquals( array( array( 'movenologintext' ) ), $res );
+
+ $this->setTitle( NS_USER, $this->userName . '' );
+ $this->setUserPerm( "" );
+ $res = $this->title->getUserPermissionsErrors( 'move', $this->user );
+ $this->assertEquals( array( array( 'cant-move-user-page' ), array( 'movenologintext' ) ), $res );
+
+ $this->setTitle( NS_USER, $this->userName . '/subpage' );
+ $this->setUserPerm( "" );
+ $res = $this->title->getUserPermissionsErrors( 'move', $this->user );
+ $this->assertEquals( array( array( 'movenologintext' ) ), $res );
+
+ $this->setTitle( NS_USER, $this->userName . '' );
+ $this->setUserPerm( "move-rootuserpages" );
+ $res = $this->title->getUserPermissionsErrors( 'move', $this->user );
+ $this->assertEquals( array( array( 'movenologintext' ) ), $res );
+
+ $this->setTitle( NS_USER, $this->userName . '/subpage' );
+ $this->setUserPerm( "move-rootuserpages" );
+ $res = $this->title->getUserPermissionsErrors( 'move', $this->user );
+ $this->assertEquals( array( array( 'movenologintext' ) ), $res );
+
+ $this->setUser( $this->userName );
+ $this->setTitle( NS_FILE, "img.png" );
+ $this->setUserPerm( "" );
+ $res = $this->title->getUserPermissionsErrors( 'move', $this->user );
+ $this->assertEquals( array( array( 'movenotallowedfile' ), array( 'movenotallowed' ) ), $res );
+
+ $this->setTitle( NS_FILE, "img.png" );
+ $this->setUserPerm( "movefile" );
+ $res = $this->title->getUserPermissionsErrors( 'move', $this->user );
+ $this->assertEquals( array( array( 'movenotallowed' ) ), $res );
+
+ $this->setUser( 'anon' );
+ $this->setTitle( NS_FILE, "img.png" );
+ $this->setUserPerm( "" );
+ $res = $this->title->getUserPermissionsErrors( 'move', $this->user );
+ $this->assertEquals( array( array( 'movenotallowedfile' ), array( 'movenologintext' ) ), $res );
+
+ $this->setTitle( NS_FILE, "img.png" );
+ $this->setUserPerm( "movefile" );
+ $res = $this->title->getUserPermissionsErrors( 'move', $this->user );
+ $this->assertEquals( array( array( 'movenologintext' ) ), $res );
+
+ $this->setUser( $this->userName );
+ $this->setUserPerm( "move" );
+ $this->runGroupPermissions( 'move', array( array( 'movenotallowedfile' ) ) );
+
+ $this->setUserPerm( "" );
+ $this->runGroupPermissions( 'move', array( array( 'movenotallowedfile' ), array( 'movenotallowed' ) ) );
+
+ $this->setUser( 'anon' );
+ $this->setUserPerm( "move" );
+ $this->runGroupPermissions( 'move', array( array( 'movenotallowedfile' ) ) );
+
+ $this->setUserPerm( "" );
+ $this->runGroupPermissions( 'move', array( array( 'movenotallowedfile' ), array( 'movenotallowed' ) ),
+ array( array( 'movenotallowedfile' ), array( 'movenologintext' ) ) );
+
+ $this->setTitle( NS_MAIN );
+ $this->setUser( 'anon' );
+ $this->setUserPerm( "move" );
+ $this->runGroupPermissions( 'move', array( ) );
+
+ $this->setUserPerm( "" );
+ $this->runGroupPermissions( 'move', array( array( 'movenotallowed' ) ),
+ array( array( 'movenologintext' ) ) );
+
+ $this->setUser( $this->userName );
+ $this->setUserPerm( "" );
+ $this->runGroupPermissions( 'move', array( array( 'movenotallowed' ) ) );
+
+ $this->setUserPerm( "move" );
+ $this->runGroupPermissions( 'move', array( ) );
+
+ $this->setUser( 'anon' );
+ $this->setUserPerm( 'move' );
+ $res = $this->title->getUserPermissionsErrors( 'move-target', $this->user );
+ $this->assertEquals( array( ), $res );
+
+ $this->setUserPerm( '' );
+ $res = $this->title->getUserPermissionsErrors( 'move-target', $this->user );
+ $this->assertEquals( array( array( 'movenotallowed' ) ), $res );
+
+ $this->setTitle( NS_USER );
+ $this->setUser( $this->userName );
+ $this->setUserPerm( array( "move", "move-rootuserpages" ) );
+ $res = $this->title->getUserPermissionsErrors( 'move-target', $this->user );
+ $this->assertEquals( array( ), $res );
+
+ $this->setUserPerm( "move" );
+ $res = $this->title->getUserPermissionsErrors( 'move-target', $this->user );
+ $this->assertEquals( array( array( 'cant-move-to-user-page' ) ), $res );
+
+ $this->setUser( 'anon' );
+ $this->setUserPerm( array( "move", "move-rootuserpages" ) );
+ $res = $this->title->getUserPermissionsErrors( 'move-target', $this->user );
+ $this->assertEquals( array( ), $res );
+
+ $this->setTitle( NS_USER, "User/subpage" );
+ $this->setUserPerm( array( "move", "move-rootuserpages" ) );
+ $res = $this->title->getUserPermissionsErrors( 'move-target', $this->user );
+ $this->assertEquals( array( ), $res );
+
+ $this->setUserPerm( "move" );
+ $res = $this->title->getUserPermissionsErrors( 'move-target', $this->user );
+ $this->assertEquals( array( ), $res );
+
+ $this->setUser( 'anon' );
+ $check = array( 'edit' => array( array( array( 'badaccess-groups', "*, [[$prefix:Users|Users]]", 2 ) ),
+ array( array( 'badaccess-group0' ) ),
+ array( ), true ),
+ 'protect' => array( array( array( 'badaccess-groups', "[[$prefix:Administrators|Administrators]]", 1 ), array( 'protect-cantedit' ) ),
+ array( array( 'badaccess-group0' ), array( 'protect-cantedit' ) ),
+ array( array( 'protect-cantedit' ) ), false ),
+ '' => array( array( ), array( ), array( ), true ) );
+ global $wgUser;
+ $wgUser = $this->user;
+ foreach ( array( "edit", "protect", "" ) as $action ) {
+ $this->setUserPerm( null );
+ $this->assertEquals( $check[$action][0],
+ $this->title->getUserPermissionsErrors( $action, $this->user, true ) );
+
+ global $wgGroupPermissions;
+ $old = $wgGroupPermissions;
+ $wgGroupPermissions = array();
+
+ $this->assertEquals( $check[$action][1],
+ $this->title->getUserPermissionsErrors( $action, $this->user, true ) );
+ $wgGroupPermissions = $old;
+
+ $this->setUserPerm( $action );
+ $this->assertEquals( $check[$action][2],
+ $this->title->getUserPermissionsErrors( $action, $this->user, true ) );
+
+ $this->setUserPerm( $action );
+ $this->assertEquals( $check[$action][3],
+ $this->title->userCan( $action, true ) );
+ $this->assertEquals( $check[$action][3],
+ $this->title->quickUserCan( $action, false ) );
+
+ # count( User::getGroupsWithPermissions( $action ) ) < 1
+ }
+ }
+
+ function runGroupPermissions( $action, $result, $result2 = null ) {
+ global $wgGroupPermissions;
+
+ if ( $result2 === null ) $result2 = $result;
+
+ $wgGroupPermissions['autoconfirmed']['move'] = false;
+ $wgGroupPermissions['user']['move'] = false;
+ $res = $this->title->getUserPermissionsErrors( $action, $this->user );
+ $this->assertEquals( $result, $res );
+
+ $wgGroupPermissions['autoconfirmed']['move'] = true;
+ $wgGroupPermissions['user']['move'] = false;
+ $res = $this->title->getUserPermissionsErrors( $action, $this->user );
+ $this->assertEquals( $result2, $res );
+
+ $wgGroupPermissions['autoconfirmed']['move'] = true;
+ $wgGroupPermissions['user']['move'] = true;
+ $res = $this->title->getUserPermissionsErrors( $action, $this->user );
+ $this->assertEquals( $result2, $res );
+
+ $wgGroupPermissions['autoconfirmed']['move'] = false;
+ $wgGroupPermissions['user']['move'] = true;
+ $res = $this->title->getUserPermissionsErrors( $action, $this->user );
+ $this->assertEquals( $result2, $res );
+ }
+
+ function testSpecialsAndNSPermissions() {
+ $this->setUser( $this->userName );
+ global $wgUser;
+ $wgUser = $this->user;
+
+ $this->setTitle( NS_SPECIAL );
+
+ $this->assertEquals( array( array( 'badaccess-group0' ), array( 'ns-specialprotected' ) ),
+ $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
+ $this->assertEquals( array( array( 'badaccess-group0' ) ),
+ $this->title->getUserPermissionsErrors( 'execute', $this->user ) );
+
+ $this->setTitle( NS_MAIN );
+ $this->setUserPerm( 'bogus' );
+ $this->assertEquals( array( ),
+ $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
+
+ $this->setTitle( NS_MAIN );
+ $this->setUserPerm( '' );
+ $this->assertEquals( array( array( 'badaccess-group0' ) ),
+ $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
+
+ global $wgNamespaceProtection;
+ $wgNamespaceProtection[NS_USER] = array ( 'bogus' );
+ $this->setTitle( NS_USER );
+ $this->setUserPerm( '' );
+ $this->assertEquals( array( array( 'badaccess-group0' ), array( 'namespaceprotected', 'User' ) ),
+ $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
+
+ $this->setTitle( NS_MEDIAWIKI );
+ $this->setUserPerm( 'bogus' );
+ $this->assertEquals( array( array( 'protectedinterface' ) ),
+ $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
+
+ $this->setTitle( NS_MEDIAWIKI );
+ $this->setUserPerm( 'bogus' );
+ $this->assertEquals( array( array( 'protectedinterface' ) ),
+ $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
+
+ $wgNamespaceProtection = null;
+ $this->setUserPerm( 'bogus' );
+ $this->assertEquals( array( ),
+ $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
+ $this->assertEquals( true,
+ $this->title->userCan( 'bogus' ) );
+
+ $this->setUserPerm( '' );
+ $this->assertEquals( array( array( 'badaccess-group0' ) ),
+ $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
+ $this->assertEquals( false,
+ $this->title->userCan( 'bogus' ) );
+ }
+
+ function testCssAndJavascriptPermissions() {
+ $this->setUser( $this->userName );
+ global $wgUser;
+ $wgUser = $this->user;
+
+ $this->setTitle( NS_USER, $this->altUserName . '/test.js' );
+ $this->runCSSandJSPermissions(
+ array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
+ array( array( 'badaccess-group0' ), array( 'customjsprotected' ) ),
+ array( array( 'badaccess-group0' ) ) );
+
+ $this->setTitle( NS_USER, $this->altUserName . '/test.css' );
+ $this->runCSSandJSPermissions(
+ array( array( 'badaccess-group0' ), array( 'customcssprotected' ) ),
+ array( array( 'badaccess-group0' ) ),
+ array( array( 'badaccess-group0' ), array( 'customcssprotected' ) ) );
+
+ $this->setTitle( NS_USER, $this->altUserName . '/tempo' );
+ $this->runCSSandJSPermissions(
+ array( array( 'badaccess-group0' ) ),
+ array( array( 'badaccess-group0' ) ),
+ array( array( 'badaccess-group0' ) ) );
+ }
+
+ function runCSSandJSPermissions( $result0, $result1, $result2 ) {
+ $this->setUserPerm( '' );
+ $this->assertEquals( $result0,
+ $this->title->getUserPermissionsErrors( 'bogus',
+ $this->user ) );
+
+ $this->setUserPerm( 'editusercss' );
+ $this->assertEquals( $result1,
+ $this->title->getUserPermissionsErrors( 'bogus',
+ $this->user ) );
+
+ $this->setUserPerm( 'edituserjs' );
+ $this->assertEquals( $result2,
+ $this->title->getUserPermissionsErrors( 'bogus',
+ $this->user ) );
+
+ $this->setUserPerm( 'editusercssjs' );
+ $this->assertEquals( array( array( 'badaccess-group0' ) ),
+ $this->title->getUserPermissionsErrors( 'bogus',
+ $this->user ) );
+
+ $this->setUserPerm( array( 'edituserjs', 'editusercss' ) );
+ $this->assertEquals( array( array( 'badaccess-group0' ) ),
+ $this->title->getUserPermissionsErrors( 'bogus',
+ $this->user ) );
+ }
+
+ function testPageRestrictions() {
+ global $wgUser, $wgContLang;
+
+ $prefix = $wgContLang->getFormattedNsText( NS_PROJECT );
+
+ $wgUser = $this->user;
+ $this->setTitle( NS_MAIN );
+ $this->title->mRestrictionsLoaded = true;
+ $this->setUserPerm( "edit" );
+ $this->title->mRestrictions = array( "bogus" => array( 'bogus', "sysop", "protect", "" ) );
+
+ $this->assertEquals( array( ),
+ $this->title->getUserPermissionsErrors( 'edit',
+ $this->user ) );
+
+ $this->assertEquals( true,
+ $this->title->quickUserCan( 'edit', false ) );
+ $this->title->mRestrictions = array( "edit" => array( 'bogus', "sysop", "protect", "" ),
+ "bogus" => array( 'bogus', "sysop", "protect", "" ) );
+
+ $this->assertEquals( array( array( 'badaccess-group0' ),
+ array( 'protectedpagetext', 'bogus' ),
+ array( 'protectedpagetext', 'protect' ),
+ array( 'protectedpagetext', 'protect' ) ),
+ $this->title->getUserPermissionsErrors( 'bogus',
+ $this->user ) );
+ $this->assertEquals( array( array( 'protectedpagetext', 'bogus' ),
+ array( 'protectedpagetext', 'protect' ),
+ array( 'protectedpagetext', 'protect' ) ),
+ $this->title->getUserPermissionsErrors( 'edit',
+ $this->user ) );
+ $this->setUserPerm( "" );
+ $this->assertEquals( array( array( 'badaccess-group0' ),
+ array( 'protectedpagetext', 'bogus' ),
+ array( 'protectedpagetext', 'protect' ),
+ array( 'protectedpagetext', 'protect' ) ),
+ $this->title->getUserPermissionsErrors( 'bogus',
+ $this->user ) );
+ $this->assertEquals( array( array( 'badaccess-groups', "*, [[$prefix:Users|Users]]", 2 ),
+ array( 'protectedpagetext', 'bogus' ),
+ array( 'protectedpagetext', 'protect' ),
+ array( 'protectedpagetext', 'protect' ) ),
+ $this->title->getUserPermissionsErrors( 'edit',
+ $this->user ) );
+ $this->setUserPerm( array( "edit", "editprotected" ) );
+ $this->assertEquals( array( array( 'badaccess-group0' ),
+ array( 'protectedpagetext', 'bogus' ),
+ array( 'protectedpagetext', 'protect' ),
+ array( 'protectedpagetext', 'protect' ) ),
+ $this->title->getUserPermissionsErrors( 'bogus',
+ $this->user ) );
+ $this->assertEquals( array( ),
+ $this->title->getUserPermissionsErrors( 'edit',
+ $this->user ) );
+ $this->title->mCascadeRestriction = true;
+ $this->assertEquals( false,
+ $this->title->quickUserCan( 'bogus', false ) );
+ $this->assertEquals( false,
+ $this->title->quickUserCan( 'edit', false ) );
+ $this->assertEquals( array( array( 'badaccess-group0' ),
+ array( 'protectedpagetext', 'bogus' ),
+ array( 'protectedpagetext', 'protect' ),
+ array( 'protectedpagetext', 'protect' ) ),
+ $this->title->getUserPermissionsErrors( 'bogus',
+ $this->user ) );
+ $this->assertEquals( array( array( 'protectedpagetext', 'bogus' ),
+ array( 'protectedpagetext', 'protect' ),
+ array( 'protectedpagetext', 'protect' ) ),
+ $this->title->getUserPermissionsErrors( 'edit',
+ $this->user ) );
+ }
+
+ function testCascadingSourcesRestrictions() {
+ global $wgUser;
+ $wgUser = $this->user;
+ $this->setTitle( NS_MAIN, "test page" );
+ $this->setUserPerm( array( "edit", "bogus" ) );
+
+ $this->title->mCascadeSources = array( Title::makeTitle( NS_MAIN, "Bogus" ), Title::makeTitle( NS_MAIN, "UnBogus" ) );
+ $this->title->mCascadingRestrictions = array( "bogus" => array( 'bogus', "sysop", "protect", "" ) );
+
+ $this->assertEquals( false,
+ $this->title->userCan( 'bogus' ) );
+ $this->assertEquals( array( array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n" ),
+ array( "cascadeprotected", 2, "* [[:Bogus]]\n* [[:UnBogus]]\n" ) ),
+ $this->title->getUserPermissionsErrors( 'bogus', $this->user ) );
+
+ $this->assertEquals( true,
+ $this->title->userCan( 'edit' ) );
+ $this->assertEquals( array( ),
+ $this->title->getUserPermissionsErrors( 'edit', $this->user ) );
+
+ }
+
+ function testActionPermissions() {
+ global $wgUser;
+ $wgUser = $this->user;
+
+ $this->setUserPerm( array( "createpage" ) );
+ $this->setTitle( NS_MAIN, "test page" );
+ $this->title->mTitleProtection['pt_create_perm'] = '';
+ $this->title->mTitleProtection['pt_user'] = $this->user->getID();
+ $this->title->mTitleProtection['pt_expiry'] = Block::infinity();
+ $this->title->mTitleProtection['pt_reason'] = 'test';
+ $this->title->mCascadeRestriction = false;
+
+ $this->assertEquals( array( array( 'titleprotected', 'Useruser', 'test' ) ),
+ $this->title->getUserPermissionsErrors( 'create', $this->user ) );
+ $this->assertEquals( false,
+ $this->title->userCan( 'create' ) );
+
+ $this->title->mTitleProtection['pt_create_perm'] = 'sysop';
+ $this->setUserPerm( array( 'createpage', 'protect' ) );
+ $this->assertEquals( array( ),
+ $this->title->getUserPermissionsErrors( 'create', $this->user ) );
+ $this->assertEquals( true,
+ $this->title->userCan( 'create' ) );
+
+
+ $this->setUserPerm( array( 'createpage' ) );
+ $this->assertEquals( array( array( 'titleprotected', 'Useruser', 'test' ) ),
+ $this->title->getUserPermissionsErrors( 'create', $this->user ) );
+ $this->assertEquals( false,
+ $this->title->userCan( 'create' ) );
+
+ $this->setTitle( NS_MEDIA, "test page" );
+ $this->setUserPerm( array( "move" ) );
+ $this->assertEquals( false,
+ $this->title->userCan( 'move' ) );
+ $this->assertEquals( array( array( 'immobile-source-namespace', 'Media' ) ),
+ $this->title->getUserPermissionsErrors( 'move', $this->user ) );
+
+ $this->setTitle( NS_MAIN, "test page" );
+ $this->assertEquals( array( ),
+ $this->title->getUserPermissionsErrors( 'move', $this->user ) );
+ $this->assertEquals( true,
+ $this->title->userCan( 'move' ) );
+
+ $this->title->mInterwiki = "no";
+ $this->assertEquals( array( array( 'immobile-page' ) ),
+ $this->title->getUserPermissionsErrors( 'move', $this->user ) );
+ $this->assertEquals( false,
+ $this->title->userCan( 'move' ) );
+
+ $this->setTitle( NS_MEDIA, "test page" );
+ $this->assertEquals( false,
+ $this->title->userCan( 'move-target' ) );
+ $this->assertEquals( array( array( 'immobile-target-namespace', 'Media' ) ),
+ $this->title->getUserPermissionsErrors( 'move-target', $this->user ) );
+
+ $this->setTitle( NS_MAIN, "test page" );
+ $this->assertEquals( array( ),
+ $this->title->getUserPermissionsErrors( 'move-target', $this->user ) );
+ $this->assertEquals( true,
+ $this->title->userCan( 'move-target' ) );
+
+ $this->title->mInterwiki = "no";
+ $this->assertEquals( array( array( 'immobile-target-page' ) ),
+ $this->title->getUserPermissionsErrors( 'move-target', $this->user ) );
+ $this->assertEquals( false,
+ $this->title->userCan( 'move-target' ) );
+
+ }
+
+ function testUserBlock() {
+ global $wgUser, $wgEmailConfirmToEdit, $wgEmailAuthentication;
+ $wgEmailConfirmToEdit = true;
+ $wgEmailAuthentication = true;
+ $wgUser = $this->user;
+
+ $this->setUserPerm( array( "createpage", "move" ) );
+ $this->setTitle( NS_MAIN, "test page" );
+
+ # $short
+ $this->assertEquals( array( array( 'confirmedittext' ) ),
+ $this->title->getUserPermissionsErrors( 'move-target', $this->user ) );
+ $wgEmailConfirmToEdit = false;
+ $this->assertEquals( true, $this->title->userCan( 'move-target' ) );
+
+ # $wgEmailConfirmToEdit && !$user->isEmailConfirmed() && $action != 'createaccount'
+ $this->assertEquals( array( ),
+ $this->title->getUserPermissionsErrors( 'move-target',
+ $this->user ) );
+
+ global $wgLang;
+ $prev = time();
+ $now = time() + 120;
+ $this->user->mBlockedby = $this->user->getId();
+ $this->user->mBlock = new Block( '127.0.8.1', $this->user->getId(), $this->user->getId(),
+ 'no reason given', $prev + 3600, 1, 0 );
+ $this->user->mBlock->mTimestamp = 0;
+ $this->assertEquals( array( array( 'autoblockedtext',
+ '[[User:Useruser|Useruser]]', 'no reason given', '127.0.0.1',
+ 'Useruser', null, 'infinite', '127.0.8.1',
+ $wgLang->timeanddate( wfTimestamp( TS_MW, $prev ), true ) ) ),
+ $this->title->getUserPermissionsErrors( 'move-target',
+ $this->user ) );
+
+ $this->assertEquals( false, $this->title->userCan( 'move-target' ) );
+ // quickUserCan should ignore user blocks
+ $this->assertEquals( true, $this->title->quickUserCan( 'move-target' ) );
+
+ global $wgLocalTZoffset;
+ $wgLocalTZoffset = -60;
+ $this->user->mBlockedby = $this->user->getName();
+ $this->user->mBlock = new Block( '127.0.8.1', 2, 1, 'no reason given', $now, 0, 10 );
+ $this->assertEquals( array( array( 'blockedtext',
+ '[[User:Useruser|Useruser]]', 'no reason given', '127.0.0.1',
+ 'Useruser', null, '23:00, 31 December 1969', '127.0.8.1',
+ $wgLang->timeanddate( wfTimestamp( TS_MW, $now ), true ) ) ),
+ $this->title->getUserPermissionsErrors( 'move-target', $this->user ) );
+
+ # $action != 'read' && $action != 'createaccount' && $user->isBlockedFrom( $this )
+ # $user->blockedFor() == ''
+ # $user->mBlock->mExpiry == 'infinity'
+ }
+}
diff --git a/tests/phpunit/includes/TitleTest.php b/tests/phpunit/includes/TitleTest.php
new file mode 100644
index 00000000..51b36160
--- /dev/null
+++ b/tests/phpunit/includes/TitleTest.php
@@ -0,0 +1,79 @@
+<?php
+
+class TitleTest extends MediaWikiTestCase {
+
+ function testLegalChars() {
+ $titlechars = Title::legalChars();
+
+ foreach ( range( 1, 255 ) as $num ) {
+ $chr = chr( $num );
+ if ( strpos( "#[]{}<>|", $chr ) !== false || preg_match( "/[\\x00-\\x1f\\x7f]/", $chr ) ) {
+ $this->assertFalse( (bool)preg_match( "/[$titlechars]/", $chr ), "chr($num) = $chr is not a valid titlechar" );
+ } else {
+ $this->assertTrue( (bool)preg_match( "/[$titlechars]/", $chr ), "chr($num) = $chr is a valid titlechar" );
+ }
+ }
+ }
+
+ /**
+ * @dataProvider dataBug31100
+ */
+ function testBug31100FixSpecialName( $text, $expectedParam ) {
+ $title = Title::newFromText( $text );
+ $fixed = $title->fixSpecialName();
+ $stuff = explode( '/', $fixed->getDbKey(), 2 );
+ if ( count( $stuff ) == 2 ) {
+ $par = $stuff[1];
+ } else {
+ $par = null;
+ }
+ $this->assertEquals( $expectedParam, $par, "Bug 31100 regression check: Title->fixSpecialName() should preserve parameter" );
+ }
+
+ function dataBug31100() {
+ return array(
+ array( 'Special:Version', null ),
+ array( 'Special:Version/', '' ),
+ array( 'Special:Version/param', 'param' ),
+ );
+ }
+
+ /**
+ * Auth-less test of Title::isValidMoveOperation
+ *
+ * @param string $source
+ * @param string $target
+ * @param array|string|true $requiredErrors
+ * @dataProvider dataTestIsValidMoveOperation
+ */
+ function testIsValidMoveOperation( $source, $target, $expected ) {
+ $title = Title::newFromText( $source );
+ $nt = Title::newFromText( $target );
+ $errors = $title->isValidMoveOperation( $nt, false );
+ if ( $expected === true ) {
+ $this->assertTrue( $errors );
+ } else {
+ $errors = $this->flattenErrorsArray( $errors );
+ foreach ( (array)$expected as $error ) {
+ $this->assertContains( $error, $errors );
+ }
+ }
+ }
+
+ function flattenErrorsArray( $errors ) {
+ $result = array();
+ foreach ( $errors as $error ) {
+ $result[] = $error[0];
+ }
+ return $result;
+ }
+
+ function dataTestIsValidMoveOperation() {
+ return array(
+ array( 'Test', 'Test', 'selfmove' ),
+ array( 'File:Test.jpg', 'Page', 'imagenocrossnamespace' )
+ );
+ }
+
+
+}
diff --git a/tests/phpunit/includes/UserIsValidEmailAddrTest.php b/tests/phpunit/includes/UserIsValidEmailAddrTest.php
new file mode 100644
index 00000000..99bf718e
--- /dev/null
+++ b/tests/phpunit/includes/UserIsValidEmailAddrTest.php
@@ -0,0 +1,79 @@
+<?php
+
+class UserIsValidEmailAddrTest extends MediaWikiTestCase {
+
+ private function checkEmail( $addr, $expected = true, $msg = '') {
+ if( $msg == '' ) { $msg = "Testing $addr"; }
+ $this->assertEquals(
+ $expected,
+ User::isValidEmailAddr( $addr ),
+ $msg
+ );
+ }
+ private function valid( $addr, $msg = '' ) {
+ $this->checkEmail( $addr, true, $msg );
+ }
+ private function invalid( $addr, $msg = '' ) {
+ $this->checkEmail( $addr, false, $msg );
+ }
+
+ function testEmailWellKnownUserAtHostDotTldAreValid() {
+ $this->valid( 'user@example.com' );
+ $this->valid( 'user@example.museum' );
+ }
+ function testEmailWithUpperCaseCharactersAreValid() {
+ $this->valid( 'USER@example.com' );
+ $this->valid( 'user@EXAMPLE.COM' );
+ $this->valid( 'user@Example.com' );
+ $this->valid( 'USER@eXAMPLE.com' );
+ }
+ function testEmailWithAPlusInUserName() {
+ $this->valid( 'user+sub@example.com' );
+ $this->valid( 'user+@example.com' );
+ }
+ function testEmailDoesNotNeedATopLevelDomain() {
+ $this->valid( "user@localhost" );
+ $this->valid( "FooBar@localdomain" );
+ $this->valid( "nobody@mycompany" );
+ }
+ function testEmailWithWhiteSpacesBeforeOrAfterAreInvalids() {
+ $this->invalid( " user@host.com" );
+ $this->invalid( "user@host.com " );
+ $this->invalid( "\tuser@host.com" );
+ $this->invalid( "user@host.com\t" );
+ }
+ function testEmailWithWhiteSpacesAreInvalids() {
+ $this->invalid( "User user@host" );
+ $this->invalid( "first last@mycompany" );
+ $this->invalid( "firstlast@my company" );
+ }
+ // bug 26948 : comma were matched by an incorrect regexp range
+ function testEmailWithCommasAreInvalids() {
+ $this->invalid( "user,foo@example.org" );
+ $this->invalid( "userfoo@ex,ample.org" );
+ }
+ function testEmailWithHyphens() {
+ $this->valid( "user-foo@example.org" );
+ $this->valid( "userfoo@ex-ample.org" );
+ }
+ function testEmailDomainCanNotBeginWithDot() {
+ $this->invalid( "user@." );
+ $this->invalid( "user@.localdomain" );
+ $this->invalid( "user@localdomain." );
+ $this->valid( "user.@localdomain" );
+ $this->valid( ".@localdomain" );
+ $this->invalid( ".@a............" );
+ }
+ function testEmailWithFunnyCharacters() {
+ $this->valid( "\$user!ex{this}@123.com" );
+ }
+ function testEmailTopLevelDomainCanBeNumerical() {
+ $this->valid( "user@example.1234" );
+ }
+ function testEmailWithoutAtSignIsInvalid() {
+ $this->invalid( 'useràexample.com' );
+ }
+ function testEmailWithOneCharacterDomainIsValid() {
+ $this->valid( 'user@a' );
+ }
+}
diff --git a/tests/phpunit/includes/UserTest.php b/tests/phpunit/includes/UserTest.php
new file mode 100644
index 00000000..df91aca8
--- /dev/null
+++ b/tests/phpunit/includes/UserTest.php
@@ -0,0 +1,58 @@
+<?php
+
+class UserTest extends MediaWikiTestCase {
+ protected $savedGroupPermissions, $savedRevokedPermissions;
+
+ public function setUp() {
+ parent::setUp();
+
+ $this->savedGroupPermissions = $GLOBALS['wgGroupPermissions'];
+ $this->savedRevokedPermissions = $GLOBALS['wgRevokePermissions'];
+
+ $this->setUpPermissionGlobals();
+ }
+ private function setUpPermissionGlobals() {
+ global $wgGroupPermissions, $wgRevokePermissions;
+
+ $wgGroupPermissions['unittesters'] = array(
+ 'runtest' => true,
+ 'writetest' => false,
+ 'nukeworld' => false,
+ );
+ $wgGroupPermissions['testwriters'] = array(
+ 'writetest' => true,
+ 'modifytest' => true,
+ );
+
+ $wgRevokePermissions['formertesters'] = array(
+ 'runtest' => true,
+ );
+ }
+ public function tearDown() {
+ parent::tearDown();
+
+ $GLOBALS['wgGroupPermissions'] = $this->savedGroupPermissions;
+ $GLOBALS['wgRevokePermissions'] = $this->savedRevokedPermissions;
+ }
+
+ public function testGroupPermissions() {
+ $rights = User::getGroupPermissions( array( 'unittesters' ) );
+ $this->assertContains( 'runtest', $rights );
+ $this->assertNotContains( 'writetest', $rights );
+ $this->assertNotContains( 'modifytest', $rights );
+ $this->assertNotContains( 'nukeworld', $rights );
+
+ $rights = User::getGroupPermissions( array( 'unittesters', 'testwriters' ) );
+ $this->assertContains( 'runtest', $rights );
+ $this->assertContains( 'writetest', $rights );
+ $this->assertContains( 'modifytest', $rights );
+ $this->assertNotContains( 'nukeworld', $rights );
+ }
+ public function testRevokePermissions() {
+ $rights = User::getGroupPermissions( array( 'unittesters', 'formertesters' ) );
+ $this->assertNotContains( 'runtest', $rights );
+ $this->assertNotContains( 'writetest', $rights );
+ $this->assertNotContains( 'modifytest', $rights );
+ $this->assertNotContains( 'nukeworld', $rights );
+ }
+} \ No newline at end of file
diff --git a/tests/phpunit/includes/WebRequestTest.php b/tests/phpunit/includes/WebRequestTest.php
new file mode 100644
index 00000000..1cfbd3fc
--- /dev/null
+++ b/tests/phpunit/includes/WebRequestTest.php
@@ -0,0 +1,88 @@
+<?php
+
+class WebRequestTest extends MediaWikiTestCase {
+ /**
+ * @dataProvider provideDetectServer
+ */
+ function testDetectServer( $expected, $input, $description ) {
+ $oldServer = $_SERVER;
+ $_SERVER = $input;
+ $result = WebRequest::detectServer();
+ $_SERVER = $oldServer;
+ $this->assertEquals( $expected, $result, $description );
+ }
+
+ function provideDetectServer() {
+ return array(
+ array(
+ 'http://x',
+ array(
+ 'HTTP_HOST' => 'x'
+ ),
+ 'Host header'
+ ),
+ array(
+ 'https://x',
+ array(
+ 'HTTP_HOST' => 'x',
+ 'HTTPS' => 'on',
+ ),
+ 'Host header with secure'
+ ),
+ array(
+ 'http://x',
+ array(
+ 'HTTP_HOST' => 'x',
+ 'SERVER_PORT' => 80,
+ ),
+ 'Default SERVER_PORT',
+ ),
+ array(
+ 'http://x',
+ array(
+ 'HTTP_HOST' => 'x',
+ 'HTTPS' => 'off',
+ ),
+ 'Secure off'
+ ),
+ array(
+ 'http://y',
+ array(
+ 'SERVER_NAME' => 'y',
+ ),
+ 'Server name'
+ ),
+ array(
+ 'http://x',
+ array(
+ 'HTTP_HOST' => 'x',
+ 'SERVER_NAME' => 'y',
+ ),
+ 'Host server name precedence'
+ ),
+ array(
+ 'http://[::1]:81',
+ array(
+ 'HTTP_HOST' => '[::1]',
+ 'SERVER_NAME' => '::1',
+ 'SERVER_PORT' => '81',
+ ),
+ 'Apache bug 26005'
+ ),
+ array(
+ 'http://localhost',
+ array(
+ 'SERVER_NAME' => '[2001'
+ ),
+ 'Kind of like lighttpd per commit message in MW r83847',
+ ),
+ array(
+ 'http://[2a01:e35:2eb4:1::2]:777',
+ array(
+ 'SERVER_NAME' => '[2a01:e35:2eb4:1::2]:777'
+ ),
+ 'Possible lighttpd environment per bug 14977 comment 13',
+ ),
+ );
+ }
+}
diff --git a/tests/phpunit/includes/XmlJsTest.php b/tests/phpunit/includes/XmlJsTest.php
new file mode 100644
index 00000000..c5b411fb
--- /dev/null
+++ b/tests/phpunit/includes/XmlJsTest.php
@@ -0,0 +1,9 @@
+<?php
+class XmlJs extends MediaWikiTestCase {
+ public function testConstruction() {
+ $obj = new XmlJsCode( null );
+ $this->assertNull( $obj->value );
+ $obj = new XmlJsCode( '' );
+ $this->assertSame( $obj->value, '' );
+ }
+}
diff --git a/tests/phpunit/includes/XmlSelectTest.php b/tests/phpunit/includes/XmlSelectTest.php
new file mode 100644
index 00000000..bf761e3d
--- /dev/null
+++ b/tests/phpunit/includes/XmlSelectTest.php
@@ -0,0 +1,139 @@
+<?php
+
+// TODO
+class XmlSelectTest extends MediaWikiTestCase {
+ protected $select;
+
+ protected function setUp() {
+ $this->select = new XmlSelect();
+ }
+ protected function tearDown() {
+ $this->select = null;
+ }
+
+ ### START OF TESTS ###
+
+ public function testConstructWithoutParameters() {
+ $this->assertEquals( '<select></select>', $this->select->getHTML() );
+ }
+
+ /**
+ * Parameters are $name (false), $id (false), $default (false)
+ * @dataProvider provideConstructionParameters
+ */
+ public function testConstructParameters( $name, $id, $default, $expected ) {
+ $this->select = new XmlSelect( $name, $id, $default );
+ $this->assertEquals( $expected, $this->select->getHTML() );
+ }
+
+ /**
+ * Provide parameters for testConstructParameters() which use three
+ * parameters:
+ * - $name (default: false)
+ * - $id (default: false)
+ * - $default (default: false)
+ * Provides a fourth parameters representing the expected HTML output
+ *
+ */
+ public function provideConstructionParameters() {
+ return array(
+ /**
+ * Values are set following a 3-bit Gray code where two successive
+ * values differ by only one value.
+ * See http://en.wikipedia.org/wiki/Gray_code
+ */
+ # $name $id $default
+ array( false , false, false, '<select></select>' ),
+ array( false , false, 'foo', '<select></select>' ),
+ array( false , 'id' , 'foo', '<select id="id"></select>' ),
+ array( false , 'id' , false, '<select id="id"></select>' ),
+ array( 'name', 'id' , false, '<select name="name" id="id"></select>' ),
+ array( 'name', 'id' , 'foo', '<select name="name" id="id"></select>' ),
+ array( 'name', false, 'foo', '<select name="name"></select>' ),
+ array( 'name', false, false, '<select name="name"></select>' ),
+ );
+ }
+
+ # Begin XmlSelect::addOption() similar to Xml::option
+ public function testAddOption() {
+ $this->select->addOption( 'foo' );
+ $this->assertEquals( '<select><option value="foo">foo</option></select>', $this->select->getHTML() );
+ }
+ public function testAddOptionWithDefault() {
+ $this->select->addOption( 'foo', true );
+ $this->assertEquals( '<select><option value="1">foo</option></select>', $this->select->getHTML() );
+ }
+ public function testAddOptionWithFalse() {
+ $this->select->addOption( 'foo', false );
+ $this->assertEquals( '<select><option value="foo">foo</option></select>', $this->select->getHTML() );
+ }
+ public function testAddOptionWithValueZero() {
+ $this->select->addOption( 'foo', 0 );
+ $this->assertEquals( '<select><option value="0">foo</option></select>', $this->select->getHTML() );
+ }
+ # End XmlSelect::addOption() similar to Xml::option
+
+ public function testSetDefault() {
+ $this->select->setDefault( 'bar1' );
+ $this->select->addOption( 'foo1' );
+ $this->select->addOption( 'bar1' );
+ $this->select->addOption( 'foo2' );
+ $this->assertEquals(
+'<select><option value="foo1">foo1</option>' . "\n" .
+'<option value="bar1" selected="selected">bar1</option>' . "\n" .
+'<option value="foo2">foo2</option></select>', $this->select->getHTML() );
+ }
+
+ /**
+ * Adding default later on should set the correct selection or
+ * raise an exception.
+ * To handle this, we need to render the options in getHtml()
+ */
+ public function testSetDefaultAfterAddingOptions() {
+ $this->select->addOption( 'foo1' );
+ $this->select->addOption( 'bar1' );
+ $this->select->addOption( 'foo2' );
+ $this->select->setDefault( 'bar1' ); # setting default after adding options
+ $this->assertEquals(
+'<select><option value="foo1">foo1</option>' . "\n" .
+'<option value="bar1" selected="selected">bar1</option>' . "\n" .
+'<option value="foo2">foo2</option></select>', $this->select->getHTML() );
+ }
+
+ public function testGetAttributes() {
+ # create some attributes
+ $this->select->setAttribute( 'dummy', 0x777 );
+ $this->select->setAttribute( 'string', 'euro €' );
+ $this->select->setAttribute( 1911, 'razor' );
+
+ # verify we can retrieve them
+ $this->assertEquals(
+ $this->select->getAttribute( 'dummy' ),
+ 0x777
+ );
+ $this->assertEquals(
+ $this->select->getAttribute( 'string' ),
+ 'euro €'
+ );
+ $this->assertEquals(
+ $this->select->getAttribute( 1911 ),
+ 'razor'
+ );
+
+ # inexistant keys should give us 'null'
+ $this->assertEquals(
+ $this->select->getAttribute( 'I DO NOT EXIT' ),
+ null
+ );
+
+ # verify string / integer
+ $this->assertEquals(
+ $this->select->getAttribute( '1911' ),
+ 'razor'
+ );
+ $this->assertEquals(
+ $this->select->getAttribute( 'dummy' ),
+ 0x777
+ );
+ }
+}
diff --git a/tests/phpunit/includes/XmlTest.php b/tests/phpunit/includes/XmlTest.php
new file mode 100644
index 00000000..fbb498d8
--- /dev/null
+++ b/tests/phpunit/includes/XmlTest.php
@@ -0,0 +1,304 @@
+<?php
+
+class XmlTest extends MediaWikiTestCase {
+ private static $oldLang;
+
+ public function setUp() {
+ global $wgLang, $wgLanguageCode;
+
+ self::$oldLang = $wgLang;
+ $wgLanguageCode = 'en';
+ $wgLang = Language::factory( $wgLanguageCode );
+ }
+
+ public function tearDown() {
+ global $wgLang, $wgLanguageCode;
+ $wgLang = self::$oldLang;
+ $wgLanguageCode = $wgLang->getCode();
+ }
+
+ public function testExpandAttributes() {
+ $this->assertNull( Xml::expandAttributes(null),
+ 'Converting a null list of attributes'
+ );
+ $this->assertEquals( '', Xml::expandAttributes( array() ),
+ 'Converting an empty list of attributes'
+ );
+ }
+
+ public function testExpandAttributesException() {
+ $this->setExpectedException('MWException');
+ Xml::expandAttributes('string');
+ }
+
+ function testElementOpen() {
+ $this->assertEquals(
+ '<element>',
+ Xml::element( 'element', null, null ),
+ 'Opening element with no attributes'
+ );
+ }
+
+ function testElementEmpty() {
+ $this->assertEquals(
+ '<element />',
+ Xml::element( 'element', null, '' ),
+ 'Terminated empty element'
+ );
+ }
+
+ function testElementInputCanHaveAValueOfZero() {
+ $this->assertEquals(
+ '<input name="name" value="0" />',
+ Xml::input( 'name', false, 0 ),
+ 'Input with a value of 0 (bug 23797)'
+ );
+ }
+ function testElementEscaping() {
+ $this->assertEquals(
+ '<element>hello &lt;there&gt; you &amp; you</element>',
+ Xml::element( 'element', null, 'hello <there> you & you' ),
+ 'Element with no attributes and content that needs escaping'
+ );
+ }
+
+ public function testEscapeTagsOnly() {
+ $this->assertEquals( '&quot;&gt;&lt;', Xml::escapeTagsOnly( '"><' ),
+ 'replace " > and < with their HTML entitites'
+ );
+ }
+
+ function testElementAttributes() {
+ $this->assertEquals(
+ '<element key="value" <>="&lt;&gt;">',
+ Xml::element( 'element', array( 'key' => 'value', '<>' => '<>' ), null ),
+ 'Element attributes, keys are not escaped'
+ );
+ }
+
+ function testOpenElement() {
+ $this->assertEquals(
+ '<element k="v">',
+ Xml::openElement( 'element', array( 'k' => 'v' ) ),
+ 'openElement() shortcut'
+ );
+ }
+
+ function testCloseElement() {
+ $this->assertEquals( '</element>', Xml::closeElement( 'element' ), 'closeElement() shortcut' );
+ }
+
+ public function testDateMenu( ) {
+ $curYear = intval(gmdate('Y'));
+ $prevYear = $curYear - 1;
+
+ $curMonth = intval(gmdate('n'));
+ $prevMonth = $curMonth - 1;
+ if( $prevMonth == 0 ) { $prevMonth = 12; }
+ $nextMonth = $curMonth + 1;
+ if( $nextMonth == 13 ) { $nextMonth = 1; }
+
+
+ $this->assertEquals(
+ '<label for="year">From year (and earlier):</label> <input name="year" size="4" value="2011" id="year" maxlength="4" /> <label for="month">From month (and earlier):</label> <select id="month" name="month" class="mw-month-selector"><option value="-1">all</option>' . "\n" .
+'<option value="1">January</option>' . "\n" .
+'<option value="2" selected="selected">February</option>' . "\n" .
+'<option value="3">March</option>' . "\n" .
+'<option value="4">April</option>' . "\n" .
+'<option value="5">May</option>' . "\n" .
+'<option value="6">June</option>' . "\n" .
+'<option value="7">July</option>' . "\n" .
+'<option value="8">August</option>' . "\n" .
+'<option value="9">September</option>' . "\n" .
+'<option value="10">October</option>' . "\n" .
+'<option value="11">November</option>' . "\n" .
+'<option value="12">December</option></select>',
+ Xml::dateMenu( 2011, 02 ),
+ "Date menu for february 2011"
+ );
+ $this->assertEquals(
+ '<label for="year">From year (and earlier):</label> <input name="year" size="4" value="2011" id="year" maxlength="4" /> <label for="month">From month (and earlier):</label> <select id="month" name="month" class="mw-month-selector"><option value="-1">all</option>' . "\n" .
+'<option value="1">January</option>' . "\n" .
+'<option value="2">February</option>' . "\n" .
+'<option value="3">March</option>' . "\n" .
+'<option value="4">April</option>' . "\n" .
+'<option value="5">May</option>' . "\n" .
+'<option value="6">June</option>' . "\n" .
+'<option value="7">July</option>' . "\n" .
+'<option value="8">August</option>' . "\n" .
+'<option value="9">September</option>' . "\n" .
+'<option value="10">October</option>' . "\n" .
+'<option value="11">November</option>' . "\n" .
+'<option value="12">December</option></select>',
+ Xml::dateMenu( 2011, -1),
+ "Date menu with negative month for 'All'"
+ );
+ $this->assertEquals(
+ Xml::dateMenu( $curYear, $curMonth ),
+ Xml::dateMenu( '' , $curMonth ),
+ "Date menu year is the current one when not specified"
+ );
+ $this->assertEquals(
+ Xml::dateMenu( $prevYear, $nextMonth ),
+ Xml::dateMenu( '', $nextMonth ),
+ "Date menu next month is 11 months ago"
+ );
+
+ # @todo FIXME: Please note there is no year there!
+ $this->assertEquals(
+ '<label for="year">From year (and earlier):</label> <input name="year" size="4" value="" id="year" maxlength="4" /> <label for="month">From month (and earlier):</label> <select id="month" name="month" class="mw-month-selector"><option value="-1">all</option>' . "\n" .
+'<option value="1">January</option>' . "\n" .
+'<option value="2">February</option>' . "\n" .
+'<option value="3">March</option>' . "\n" .
+'<option value="4">April</option>' . "\n" .
+'<option value="5">May</option>' . "\n" .
+'<option value="6">June</option>' . "\n" .
+'<option value="7">July</option>' . "\n" .
+'<option value="8">August</option>' . "\n" .
+'<option value="9">September</option>' . "\n" .
+'<option value="10">October</option>' . "\n" .
+'<option value="11">November</option>' . "\n" .
+'<option value="12">December</option></select>',
+ Xml::dateMenu( '', ''),
+ "Date menu with neither year or month"
+ );
+ }
+
+ #
+ # textarea
+ #
+ function testTextareaNoContent() {
+ $this->assertEquals(
+ '<textarea name="name" id="name" cols="40" rows="5"></textarea>',
+ Xml::textarea( 'name', '' ),
+ 'textarea() with not content'
+ );
+ }
+
+ function testTextareaAttribs() {
+ $this->assertEquals(
+ '<textarea name="name" id="name" cols="20" rows="10">&lt;txt&gt;</textarea>',
+ Xml::textarea( 'name', '<txt>', 20, 10 ),
+ 'textarea() with custom attribs'
+ );
+ }
+
+ #
+ # input and label
+ #
+ function testLabelCreation() {
+ $this->assertEquals(
+ '<label for="id">name</label>',
+ Xml::label( 'name', 'id' ),
+ 'label() with no attribs'
+ );
+ }
+ function testLabelAttributeCanOnlyBeClassOrTitle() {
+ $this->assertEquals(
+ '<label for="id">name</label>',
+ Xml::label( 'name', 'id', array( 'generated' => true ) ),
+ 'label() can not be given a generated attribute'
+ );
+ $this->assertEquals(
+ '<label for="id" class="nice">name</label>',
+ Xml::label( 'name', 'id', array( 'class' => 'nice' ) ),
+ 'label() can get a class attribute'
+ );
+ $this->assertEquals(
+ '<label for="id" title="nice tooltip">name</label>',
+ Xml::label( 'name', 'id', array( 'title' => 'nice tooltip' ) ),
+ 'label() can get a title attribute'
+ );
+ $this->assertEquals(
+ '<label for="id" class="nice" title="nice tooltip">name</label>',
+ Xml::label( 'name', 'id', array(
+ 'generated' => true,
+ 'class' => 'nice',
+ 'title' => 'nice tooltip',
+ 'anotherattr' => 'value',
+ )
+ ),
+ 'label() skip all attributes but "class" and "title"'
+ );
+ }
+
+ #
+ # JS
+ #
+ function testEscapeJsStringSpecialChars() {
+ $this->assertEquals(
+ '\\\\\r\n',
+ Xml::escapeJsString( "\\\r\n" ),
+ 'escapeJsString() with special characters'
+ );
+ }
+
+ function testEncodeJsVarBoolean() {
+ $this->assertEquals(
+ 'true',
+ Xml::encodeJsVar( true ),
+ 'encodeJsVar() with boolean'
+ );
+ }
+
+ function testEncodeJsVarNull() {
+ $this->assertEquals(
+ 'null',
+ Xml::encodeJsVar( null ),
+ 'encodeJsVar() with null'
+ );
+ }
+
+ function testEncodeJsVarArray() {
+ $this->assertEquals(
+ '["a", 1]',
+ Xml::encodeJsVar( array( 'a', 1 ) ),
+ 'encodeJsVar() with array'
+ );
+ $this->assertEquals(
+ '{"a": "a", "b": 1}',
+ Xml::encodeJsVar( array( 'a' => 'a', 'b' => 1 ) ),
+ 'encodeJsVar() with associative array'
+ );
+ }
+
+ function testEncodeJsVarObject() {
+ $this->assertEquals(
+ '{"a": "a", "b": 1}',
+ Xml::encodeJsVar( (object)array( 'a' => 'a', 'b' => 1 ) ),
+ 'encodeJsVar() with object'
+ );
+ }
+
+ function testEncodeJsVarInt() {
+ $this->assertEquals(
+ '123456',
+ Xml::encodeJsVar( 123456 ),
+ 'encodeJsVar() with int'
+ );
+ }
+
+ function testEncodeJsVarFloat() {
+ $this->assertEquals(
+ '1.23456',
+ Xml::encodeJsVar( 1.23456 ),
+ 'encodeJsVar() with float'
+ );
+ }
+
+ function testEncodeJsVarIntString() {
+ $this->assertEquals(
+ '"123456"',
+ Xml::encodeJsVar( '123456' ),
+ 'encodeJsVar() with int-like string'
+ );
+ }
+
+ function testEncodeJsVarFloatString() {
+ $this->assertEquals(
+ '"1.23456"',
+ Xml::encodeJsVar( '1.23456' ),
+ 'encodeJsVar() with float-like string'
+ );
+ }
+}
diff --git a/tests/phpunit/includes/ZipDirectoryReaderTest.php b/tests/phpunit/includes/ZipDirectoryReaderTest.php
new file mode 100644
index 00000000..f7ca59e2
--- /dev/null
+++ b/tests/phpunit/includes/ZipDirectoryReaderTest.php
@@ -0,0 +1,79 @@
+<?php
+
+class ZipDirectoryReaderTest extends MediaWikiTestCase {
+ var $zipDir, $entries;
+
+ function setUp() {
+ $this->zipDir = dirname( __FILE__ ) . '/../data/zip';
+ }
+
+ function zipCallback( $entry ) {
+ $this->entries[] = $entry;
+ }
+
+ function readZipAssertError( $file, $error, $assertMessage ) {
+ $this->entries = array();
+ $status = ZipDirectoryReader::read( "{$this->zipDir}/$file", array( $this, 'zipCallback' ) );
+ $this->assertTrue( $status->hasMessage( $error ), $assertMessage );
+ }
+
+ function readZipAssertSuccess( $file, $assertMessage ) {
+ $this->entries = array();
+ $status = ZipDirectoryReader::read( "{$this->zipDir}/$file", array( $this, 'zipCallback' ) );
+ $this->assertTrue( $status->isOK(), $assertMessage );
+ }
+
+ function testEmpty() {
+ $this->readZipAssertSuccess( 'empty.zip', 'Empty zip' );
+ }
+
+ function testMultiDisk0() {
+ $this->readZipAssertError( 'split.zip', 'zip-unsupported',
+ 'Split zip error' );
+ }
+
+ function testNoSignature() {
+ $this->readZipAssertError( 'nosig.zip', 'zip-wrong-format',
+ 'No signature should give "wrong format" error' );
+ }
+
+ function testSimple() {
+ $this->readZipAssertSuccess( 'class.zip', 'Simple ZIP' );
+ $this->assertEquals( $this->entries, array( array(
+ 'name' => 'Class.class',
+ 'mtime' => '20010115000000',
+ 'size' => 1,
+ ) ) );
+ }
+
+ function testBadCentralEntrySignature() {
+ $this->readZipAssertError( 'wrong-central-entry-sig.zip', 'zip-bad',
+ 'Bad central entry error' );
+ }
+
+ function testTrailingBytes() {
+ $this->readZipAssertError( 'trail.zip', 'zip-bad',
+ 'Trailing bytes error' );
+ }
+
+ function testWrongCDStart() {
+ $this->readZipAssertError( 'wrong-cd-start-disk.zip', 'zip-unsupported',
+ 'Wrong CD start disk error' );
+ }
+
+
+ function testCentralDirectoryGap() {
+ $this->readZipAssertError( 'cd-gap.zip', 'zip-bad',
+ 'CD gap error' );
+ }
+
+ function testCentralDirectoryTruncated() {
+ $this->readZipAssertError( 'cd-truncated.zip', 'zip-bad',
+ 'CD truncated error (should hit unpack() overrun)' );
+ }
+
+ function testLooksLikeZip64() {
+ $this->readZipAssertError( 'looks-like-zip64.zip', 'zip-unsupported',
+ 'A file which looks like ZIP64 but isn\'t, should give error' );
+ }
+}
diff --git a/tests/phpunit/includes/api/ApiBlockTest.php b/tests/phpunit/includes/api/ApiBlockTest.php
new file mode 100644
index 00000000..227555eb
--- /dev/null
+++ b/tests/phpunit/includes/api/ApiBlockTest.php
@@ -0,0 +1,62 @@
+<?php
+
+/**
+ * @group Database
+ */
+class ApiBlockTest extends ApiTestCase {
+
+ function setUp() {
+ parent::setUp();
+ $this->doLogin();
+ }
+
+ function getTokens() {
+ return $this->getTokenList( self::$users['sysop'] );
+ }
+
+ function addDBData() {
+ $user = User::newFromName( 'UTBlockee' );
+
+ if ( $user->getId() == 0 ) {
+ $user->addToDatabase();
+ $user->setPassword( 'UTBlockeePassword' );
+
+ $user->saveSettings();
+ }
+ }
+
+ function testMakeNormalBlock() {
+
+ $data = $this->getTokens();
+
+ $user = User::newFromName( 'UTBlockee' );
+
+ if ( !$user->getId() ) {
+ $this->markTestIncomplete( "The user UTBlockee does not exist" );
+ }
+
+ if( !isset( $data[0]['query']['pages'] ) ) {
+ $this->markTestIncomplete( "No block token found" );
+ }
+
+ $keys = array_keys( $data[0]['query']['pages'] );
+ $key = array_pop( $keys );
+ $pageinfo = $data[0]['query']['pages'][$key];
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'block',
+ 'user' => 'UTBlockee',
+ 'reason' => BlockTest::REASON,
+ 'token' => $pageinfo['blocktoken'] ), $data );
+
+ $block = Block::newFromTarget('UTBlockee');
+
+ $this->assertTrue( !is_null( $block ), 'Block is valid' );
+
+ $this->assertEquals( 'UTBlockee', (string)$block->getTarget() );
+ $this->assertEquals( 'Some reason', $block->mReason );
+ $this->assertEquals( 'infinity', $block->mExpiry );
+
+ }
+
+}
diff --git a/tests/phpunit/includes/api/ApiPurgeTest.php b/tests/phpunit/includes/api/ApiPurgeTest.php
new file mode 100644
index 00000000..db1563e9
--- /dev/null
+++ b/tests/phpunit/includes/api/ApiPurgeTest.php
@@ -0,0 +1,41 @@
+<?php
+
+/**
+ * @group Database
+ */
+class ApiPurgeTest extends ApiTestCase {
+
+ function setUp() {
+ parent::setUp();
+ $this->doLogin();
+ }
+
+ function testPurgeMainPage() {
+
+ if ( !Title::newFromText( 'UTPage' )->exists() ) {
+ $this->markTestIncomplete( "The article [[UTPage]] does not exist" );
+ }
+
+ $somePage = mt_rand();
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'purge',
+ 'titles' => 'UTPage|' . $somePage . '|%5D' ) );
+
+ $this->assertArrayHasKey( 'purge', $data[0] );
+
+ $this->assertArrayHasKey( 0, $data[0]['purge'] );
+ $this->assertArrayHasKey( 'purged', $data[0]['purge'][0] );
+ $this->assertEquals( 'UTPage', $data[0]['purge'][0]['title'] );
+
+ $this->assertArrayHasKey( 1, $data[0]['purge'] );
+ $this->assertArrayHasKey( 'missing', $data[0]['purge'][1] );
+ $this->assertEquals( $somePage, $data[0]['purge'][1]['title'] );
+
+ $this->assertArrayHasKey( 2, $data[0]['purge'] );
+ $this->assertArrayHasKey( 'invalid', $data[0]['purge'][2] );
+ $this->assertEquals( '%5D', $data[0]['purge'][2]['title'] );
+
+ }
+
+}
diff --git a/tests/phpunit/includes/api/ApiQueryTest.php b/tests/phpunit/includes/api/ApiQueryTest.php
new file mode 100644
index 00000000..114eadf3
--- /dev/null
+++ b/tests/phpunit/includes/api/ApiQueryTest.php
@@ -0,0 +1,67 @@
+<?php
+
+/**
+ * @group Database
+ */
+class ApiQueryTest extends ApiTestCase {
+
+ function setUp() {
+ parent::setUp();
+ $this->doLogin();
+ }
+
+ function testTitlesGetNormalized() {
+
+ global $wgMetaNamespace;
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'query',
+ 'titles' => 'Project:articleA|article_B' ) );
+
+
+ $this->assertArrayHasKey( 'query', $data[0] );
+ $this->assertArrayHasKey( 'normalized', $data[0]['query'] );
+
+ $this->assertEquals(
+ array(
+ 'from' => 'Project:articleA',
+ 'to' => $wgMetaNamespace . ':ArticleA'
+ ),
+ $data[0]['query']['normalized'][0]
+ );
+
+ $this->assertEquals(
+ array(
+ 'from' => 'article_B',
+ 'to' => 'Article B'
+ ),
+ $data[0]['query']['normalized'][1]
+ );
+
+ }
+
+ function testTitlesAreRejectedIfInvalid() {
+ $title = false;
+ while( !$title || Title::newFromText( $title )->exists() ) {
+ $title = md5( mt_rand( 0, 10000 ) + rand( 0, 999000 ) );
+ }
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'query',
+ 'titles' => $title . '|Talk:' ) );
+
+
+ $this->assertArrayHasKey( 'query', $data[0] );
+ $this->assertArrayHasKey( 'pages', $data[0]['query'] );
+ $this->assertEquals( 2, count( $data[0]['query']['pages'] ) );
+
+ $this->assertArrayHasKey( -2, $data[0]['query']['pages'] );
+ $this->assertArrayHasKey( -1, $data[0]['query']['pages'] );
+
+ $this->assertArrayHasKey( 'missing', $data[0]['query']['pages'][-2] );
+ $this->assertArrayHasKey( 'invalid', $data[0]['query']['pages'][-1] );
+
+
+ }
+
+}
diff --git a/tests/phpunit/includes/api/ApiTest.php b/tests/phpunit/includes/api/ApiTest.php
new file mode 100644
index 00000000..a587e6b1
--- /dev/null
+++ b/tests/phpunit/includes/api/ApiTest.php
@@ -0,0 +1,277 @@
+<?php
+
+/**
+ * @group Database
+ */
+class ApiTest extends ApiTestCase {
+
+ function testRequireOnlyOneParameterDefault() {
+ $mock = new MockApi();
+
+ $this->assertEquals(
+ null, $mock->requireOnlyOneParameter( array( "filename" => "foo.txt",
+ "enablechunks" => false ), "filename", "enablechunks" ) );
+ }
+
+ /**
+ * @expectedException UsageException
+ */
+ function testRequireOnlyOneParameterZero() {
+ $mock = new MockApi();
+
+ $this->assertEquals(
+ null, $mock->requireOnlyOneParameter( array( "filename" => "foo.txt",
+ "enablechunks" => 0 ), "filename", "enablechunks" ) );
+ }
+
+ /**
+ * @expectedException UsageException
+ */
+ function testRequireOnlyOneParameterTrue() {
+ $mock = new MockApi();
+
+ $this->assertEquals(
+ null, $mock->requireOnlyOneParameter( array( "filename" => "foo.txt",
+ "enablechunks" => true ), "filename", "enablechunks" ) );
+ }
+
+ /**
+ * Test that the API will accept a FauxRequest and execute. The help action
+ * (default) throws a UsageException. Just validate we're getting proper XML
+ *
+ * @expectedException UsageException
+ */
+ function testApi() {
+
+ $api = new ApiMain(
+ new FauxRequest( array( 'action' => 'help', 'format' => 'xml' ) )
+ );
+ $api->execute();
+ $api->getPrinter()->setBufferResult( true );
+ $api->printResult( false );
+ $resp = $api->getPrinter()->getBuffer();
+
+ libxml_use_internal_errors( true );
+ $sxe = simplexml_load_string( $resp );
+ $this->assertNotInternalType( "bool", $sxe );
+ $this->assertThat( $sxe, $this->isInstanceOf( "SimpleXMLElement" ) );
+ }
+
+ /**
+ * Test result of attempted login with an empty username
+ */
+ function testApiLoginNoName() {
+ $data = $this->doApiRequest( array( 'action' => 'login',
+ 'lgname' => '', 'lgpassword' => self::$users['sysop']->password,
+ ) );
+ $this->assertEquals( 'NoName', $data[0]['login']['result'] );
+ }
+
+ function testApiLoginBadPass() {
+ global $wgServer;
+
+ $user = self::$users['sysop'];
+ $user->user->logOut();
+
+ if ( !isset( $wgServer ) ) {
+ $this->markTestIncomplete( 'This test needs $wgServer to be set in LocalSettings.php' );
+ }
+ $ret = $this->doApiRequest( array(
+ "action" => "login",
+ "lgname" => $user->username,
+ "lgpassword" => "bad",
+ )
+ );
+
+ $result = $ret[0];
+
+ $this->assertNotInternalType( "bool", $result );
+ $a = $result["login"]["result"];
+ $this->assertEquals( "NeedToken", $a );
+
+ $token = $result["login"]["token"];
+
+ $ret = $this->doApiRequest( array(
+ "action" => "login",
+ "lgtoken" => $token,
+ "lgname" => $user->username,
+ "lgpassword" => "badnowayinhell",
+ )
+ );
+
+ $result = $ret[0];
+
+ $this->assertNotInternalType( "bool", $result );
+ $a = $result["login"]["result"];
+
+ $this->assertEquals( "WrongPass", $a );
+ }
+
+ function testApiLoginGoodPass() {
+ global $wgServer;
+
+ if ( !isset( $wgServer ) ) {
+ $this->markTestIncomplete( 'This test needs $wgServer to be set in LocalSettings.php' );
+ }
+
+ $user = self::$users['sysop'];
+ $user->user->logOut();
+
+ $ret = $this->doApiRequest( array(
+ "action" => "login",
+ "lgname" => $user->username,
+ "lgpassword" => $user->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" => $user->username,
+ "lgpassword" => $user->password,
+ )
+ );
+
+ $result = $ret[0];
+
+ $this->assertNotInternalType( "bool", $result );
+ $a = $result["login"]["result"];
+
+ $this->assertEquals( "Success", $a );
+ }
+
+ function testApiGotCookie() {
+ $this->markTestIncomplete( "The server can't do external HTTP requests, and the internal one won't give cookies" );
+
+ global $wgServer, $wgScriptPath;
+
+ if ( !isset( $wgServer ) ) {
+ $this->markTestIncomplete( 'This test needs $wgServer to be set in LocalSettings.php' );
+ }
+ $user = self::$users['sysop'];
+
+ $req = MWHttpRequest::factory( self::$apiUrl . "?action=login&format=xml",
+ array( "method" => "POST",
+ "postData" => array(
+ "lgname" => $user->username,
+ "lgpassword" => $user->password ) ) );
+ $req->execute();
+
+ libxml_use_internal_errors( true );
+ $sxe = simplexml_load_string( $req->getContent() );
+ $this->assertNotInternalType( "bool", $sxe );
+ $this->assertThat( $sxe, $this->isInstanceOf( "SimpleXMLElement" ) );
+ $this->assertNotInternalType( "null", $sxe->login[0] );
+
+ $a = $sxe->login[0]->attributes()->result[0];
+ $this->assertEquals( ' result="NeedToken"', $a->asXML() );
+ $token = (string)$sxe->login[0]->attributes()->token;
+
+ $req->setData( array(
+ "lgtoken" => $token,
+ "lgname" => $user->username,
+ "lgpassword" => $user->password ) );
+ $req->execute();
+
+ $cj = $req->getCookieJar();
+ $serverName = parse_url( $wgServer, PHP_URL_HOST );
+ $this->assertNotEquals( false, $serverName );
+ $serializedCookie = $cj->serializeToHttpRequest( $wgScriptPath, $serverName );
+ $this->assertNotEquals( '', $serializedCookie );
+ $this->assertRegexp( '/_session=[^;]*; .*UserID=[0-9]*; .*UserName=' . $user->userName . '; .*Token=/', $serializedCookie );
+
+ return $cj;
+ }
+
+ /**
+ * @depends testApiGotCookie
+ */
+ function testApiListPages( CookieJar $cj ) {
+ $this->markTestIncomplete( "Not done with this yet" );
+ global $wgServer;
+
+ if ( $wgServer == "http://localhost" ) {
+ $this->markTestIncomplete( 'This test needs $wgServer to be set in LocalSettings.php' );
+ }
+ $req = MWHttpRequest::factory( self::$apiUrl . "?action=query&format=xml&prop=revisions&" .
+ "titles=Main%20Page&rvprop=timestamp|user|comment|content" );
+ $req->setCookieJar( $cj );
+ $req->execute();
+ libxml_use_internal_errors( true );
+ $sxe = simplexml_load_string( $req->getContent() );
+ $this->assertNotInternalType( "bool", $sxe );
+ $this->assertThat( $sxe, $this->isInstanceOf( "SimpleXMLElement" ) );
+ $a = $sxe->query[0]->pages[0]->page[0]->attributes();
+ }
+
+ function testRunLogin() {
+ $sysopUser = self::$users['sysop'];
+ $data = $this->doApiRequest( array(
+ 'action' => 'login',
+ 'lgname' => $sysopUser->username,
+ 'lgpassword' => $sysopUser->password ) );
+
+ $this->assertArrayHasKey( "login", $data[0] );
+ $this->assertArrayHasKey( "result", $data[0]['login'] );
+ $this->assertEquals( "NeedToken", $data[0]['login']['result'] );
+ $token = $data[0]['login']['token'];
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'login',
+ "lgtoken" => $token,
+ "lgname" => $sysopUser->username,
+ "lgpassword" => $sysopUser->password ), $data );
+
+ $this->assertArrayHasKey( "login", $data[0] );
+ $this->assertArrayHasKey( "result", $data[0]['login'] );
+ $this->assertEquals( "Success", $data[0]['login']['result'] );
+ $this->assertArrayHasKey( 'lgtoken', $data[0]['login'] );
+
+ return $data;
+ }
+
+ function testGettingToken() {
+ foreach ( self::$users as $user ) {
+ $this->runTokenTest( $user );
+ }
+ }
+
+ function runTokenTest( $user ) {
+
+ $data = $this->getTokenList( $user );
+
+ $this->assertArrayHasKey( 'query', $data[0] );
+ $this->assertArrayHasKey( 'pages', $data[0]['query'] );
+ $keys = array_keys( $data[0]['query']['pages'] );
+ $key = array_pop( $keys );
+
+ $rights = $user->user->getRights();
+
+ $this->assertArrayHasKey( $key, $data[0]['query']['pages'] );
+ $this->assertArrayHasKey( 'edittoken', $data[0]['query']['pages'][$key] );
+ $this->assertArrayHasKey( 'movetoken', $data[0]['query']['pages'][$key] );
+
+ if ( isset( $rights['delete'] ) ) {
+ $this->assertArrayHasKey( 'deletetoken', $data[0]['query']['pages'][$key] );
+ }
+
+ if ( isset( $rights['block'] ) ) {
+ $this->assertArrayHasKey( 'blocktoken', $data[0]['query']['pages'][$key] );
+ $this->assertArrayHasKey( 'unblocktoken', $data[0]['query']['pages'][$key] );
+ }
+
+ if ( isset( $rights['protect'] ) ) {
+ $this->assertArrayHasKey( 'protecttoken', $data[0]['query']['pages'][$key] );
+ }
+
+ return $data;
+ }
+}
diff --git a/tests/phpunit/includes/api/ApiTestCase.php b/tests/phpunit/includes/api/ApiTestCase.php
new file mode 100644
index 00000000..2917c880
--- /dev/null
+++ b/tests/phpunit/includes/api/ApiTestCase.php
@@ -0,0 +1,139 @@
+<?php
+
+abstract class ApiTestCase extends MediaWikiLangTestCase {
+ /**
+ * @var Array of ApiTestUser
+ */
+ public static $users;
+ protected static $apiUrl;
+
+ function setUp() {
+ global $wgContLang, $wgAuth, $wgMemc, $wgRequest, $wgUser, $wgServer;
+
+ parent::setUp();
+ self::$apiUrl = $wgServer . wfScript( 'api' );
+ $wgMemc = new EmptyBagOStuff();
+ $wgContLang = Language::factory( 'en' );
+ $wgAuth = new StubObject( 'wgAuth', 'AuthPlugin' );
+ $wgRequest = new FauxRequest( array() );
+
+ self::$users = array(
+ 'sysop' => new ApiTestUser(
+ 'Apitestsysop',
+ 'Api Test Sysop',
+ 'api_test_sysop@sample.com',
+ array( 'sysop' )
+ ),
+ 'uploader' => new ApiTestUser(
+ 'Apitestuser',
+ 'Api Test User',
+ 'api_test_user@sample.com',
+ array()
+ )
+ );
+
+ $wgUser = self::$users['sysop']->user;
+
+ }
+
+ protected function doApiRequest( $params, $session = null, $appendModule = false ) {
+ if ( is_null( $session ) ) {
+ $session = array();
+ }
+
+ $request = new FauxRequest( $params, true, $session );
+ $module = new ApiMain( $request, true );
+ $module->execute();
+
+ $results = array( $module->getResultData(), $request, $request->getSessionArray() );
+ if( $appendModule ) {
+ $results[] = $module;
+ }
+
+ return $results;
+ }
+
+ /**
+ * Add an edit token to the API request
+ * This is cheating a bit -- we grab a token in the correct format and then add it to the pseudo-session and to the
+ * request, without actually requesting a "real" edit token
+ * @param $params: key-value API params
+ * @param $session: session array
+ */
+ protected function doApiRequestWithToken( $params, $session ) {
+ if ( $session['wsToken'] ) {
+ // add edit token to fake session
+ $session['wsEditToken'] = $session['wsToken'];
+ // add token to request parameters
+ $params['token'] = md5( $session['wsToken'] ) . User::EDIT_TOKEN_SUFFIX;
+ return $this->doApiRequest( $params, $session );
+ } else {
+ throw new Exception( "request data not in right format" );
+ }
+ }
+
+ protected function doLogin() {
+ $data = $this->doApiRequest( array(
+ 'action' => 'login',
+ 'lgname' => self::$users['sysop']->username,
+ 'lgpassword' => self::$users['sysop']->password ) );
+
+ $token = $data[0]['login']['token'];
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'login',
+ 'lgtoken' => $token,
+ 'lgname' => self::$users['sysop']->username,
+ 'lgpassword' => self::$users['sysop']->password
+ ), $data );
+
+ return $data;
+ }
+
+ protected function getTokenList( $user ) {
+ $GLOBALS['wgUser'] = $user->user;
+ $data = $this->doApiRequest( array(
+ 'action' => 'query',
+ 'titles' => 'Main Page',
+ 'intoken' => 'edit|delete|protect|move|block|unblock',
+ 'prop' => 'info' ) );
+ return $data;
+ }
+}
+
+class UserWrapper {
+ public $userName, $password, $user;
+
+ public function __construct( $userName, $password, $group = '' ) {
+ $this->userName = $userName;
+ $this->password = $password;
+
+ $this->user = User::newFromName( $this->userName );
+ if ( !$this->user->getID() ) {
+ $this->user = User::createNew( $this->userName, array(
+ "email" => "test@example.com",
+ "real_name" => "Test User" ) );
+ }
+ $this->user->setPassword( $this->password );
+
+ if ( $group !== '' ) {
+ $this->user->addGroup( $group );
+ }
+ $this->user->saveSettings();
+ }
+}
+
+class MockApi extends ApiBase {
+ public function execute() { }
+ public function getVersion() { }
+
+ public function __construct() { }
+
+ public function getAllowedParams() {
+ return array(
+ 'filename' => null,
+ 'enablechunks' => false,
+ 'sessionkey' => null,
+ );
+ }
+}
diff --git a/tests/phpunit/includes/api/ApiTestCaseUpload.php b/tests/phpunit/includes/api/ApiTestCaseUpload.php
new file mode 100644
index 00000000..e51e7214
--- /dev/null
+++ b/tests/phpunit/includes/api/ApiTestCaseUpload.php
@@ -0,0 +1,114 @@
+<?php
+
+/**
+ * * Abstract class to support upload tests
+ */
+
+abstract class ApiTestCaseUpload extends ApiTestCase {
+ /**
+ * Fixture -- run before every test
+ */
+ public function setUp() {
+ global $wgEnableUploads, $wgEnableAPI;
+ parent::setUp();
+
+ $wgEnableUploads = true;
+ $wgEnableAPI = true;
+ wfSetupSession();
+
+ $this->clearFakeUploads();
+ }
+
+ /**
+ * Helper function -- remove files and associated articles by Title
+ * @param $title Title: title to be removed
+ */
+ public function deleteFileByTitle( $title ) {
+ if ( $title->exists() ) {
+ $file = wfFindFile( $title, array( 'ignoreRedirect' => true ) );
+ $noOldArchive = ""; // yes this really needs to be set this way
+ $comment = "removing for test";
+ $restrictDeletedVersions = false;
+ $status = FileDeleteForm::doDelete( $title, $file, $noOldArchive, $comment, $restrictDeletedVersions );
+ if ( !$status->isGood() ) {
+ return false;
+ }
+ $article = new Article( $title );
+ $article->doDeleteArticle( "removing for test" );
+
+ // see if it now doesn't exist; reload
+ $title = Title::newFromText( $title->getText(), NS_FILE );
+ }
+ return ! ( $title && $title instanceof Title && $title->exists() );
+ }
+
+ /**
+ * Helper function -- remove files and associated articles with a particular filename
+ * @param $fileName String: filename to be removed
+ */
+ public function deleteFileByFileName( $fileName ) {
+ return $this->deleteFileByTitle( Title::newFromText( $fileName, NS_FILE ) );
+ }
+
+
+ /**
+ * Helper function -- given a file on the filesystem, find matching content in the db (and associated articles) and remove them.
+ * @param $filePath String: path to file on the filesystem
+ */
+ public function deleteFileByContent( $filePath ) {
+ $hash = File::sha1Base36( $filePath );
+ $dupes = RepoGroup::singleton()->findBySha1( $hash );
+ $success = true;
+ foreach ( $dupes as $dupe ) {
+ $success &= $this->deleteFileByTitle( $dupe->getTitle() );
+ }
+ return $success;
+ }
+
+ /**
+ * Fake an upload by dumping the file into temp space, and adding info to $_FILES.
+ * (This is what PHP would normally do).
+ * @param $fieldName String: name this would have in the upload form
+ * @param $fileName String: name to title this
+ * @param $type String: mime type
+ * @param $filePath String: path where to find file contents
+ */
+ function fakeUploadFile( $fieldName, $fileName, $type, $filePath ) {
+ $tmpName = tempnam( wfTempDir(), "" );
+ if ( !file_exists( $filePath ) ) {
+ throw new Exception( "$filePath doesn't exist!" );
+ };
+
+ if ( !copy( $filePath, $tmpName ) ) {
+ throw new Exception( "couldn't copy $filePath to $tmpName" );
+ }
+
+ clearstatcache();
+ $size = filesize( $tmpName );
+ if ( $size === false ) {
+ throw new Exception( "couldn't stat $tmpName" );
+ }
+
+ $_FILES[ $fieldName ] = array(
+ 'name' => $fileName,
+ 'type' => $type,
+ 'tmp_name' => $tmpName,
+ 'size' => $size,
+ 'error' => null
+ );
+
+ return true;
+
+ }
+
+ /**
+ * Remove traces of previous fake uploads
+ */
+ function clearFakeUploads() {
+ $_FILES = array();
+ }
+
+
+
+
+}
diff --git a/tests/phpunit/includes/api/ApiTestUser.php b/tests/phpunit/includes/api/ApiTestUser.php
new file mode 100644
index 00000000..df60682f
--- /dev/null
+++ b/tests/phpunit/includes/api/ApiTestUser.php
@@ -0,0 +1,59 @@
+<?php
+
+/* Wraps the user object, so we can also retain full access to properties like password if we log in via the API */
+class ApiTestUser {
+ public $username;
+ public $password;
+ public $email;
+ public $groups;
+ public $user;
+
+ function __construct( $username, $realname = 'Real Name', $email = 'sample@sample.com', $groups = array() ) {
+ $this->username = $username;
+ $this->realname = $realname;
+ $this->email = $email;
+ $this->groups = $groups;
+
+ // don't allow user to hardcode or select passwords -- people sometimes run tests
+ // on live wikis. Sometimes we create sysop users in these tests. A sysop user with
+ // a known password would be a Bad Thing.
+ $this->password = User::randomPassword();
+
+ $this->user = User::newFromName( $this->username );
+ $this->user->load();
+
+ // In an ideal world we'd have a new wiki (or mock data store) for every single test.
+ // But for now, we just need to create or update the user with the desired properties.
+ // we particularly need the new password, since we just generated it randomly.
+ // In core MediaWiki, there is no functionality to delete users, so this is the best we can do.
+ if ( !$this->user->getID() ) {
+ // create the user
+ $this->user = User::createNew(
+ $this->username, array(
+ "email" => $this->email,
+ "real_name" => $this->realname
+ )
+ );
+ if ( !$this->user ) {
+ throw new Exception( "error creating user" );
+ }
+ }
+
+ // update the user to use the new random password and other details
+ $this->user->setPassword( $this->password );
+ $this->user->setEmail( $this->email );
+ $this->user->setRealName( $this->realname );
+ // remove all groups, replace with any groups specified
+ foreach ( $this->user->getGroups() as $group ) {
+ $this->user->removeGroup( $group );
+ }
+ if ( count( $this->groups ) ) {
+ foreach ( $this->groups as $group ) {
+ $this->user->addGroup( $group );
+ }
+ }
+ $this->user->saveSettings();
+
+ }
+
+}
diff --git a/tests/phpunit/includes/api/ApiUploadTest.php b/tests/phpunit/includes/api/ApiUploadTest.php
new file mode 100644
index 00000000..5c929784
--- /dev/null
+++ b/tests/phpunit/includes/api/ApiUploadTest.php
@@ -0,0 +1,433 @@
+<?php
+
+/**
+ * @group Database
+ */
+
+/**
+ * n.b. Ensure that you can write to the images/ directory as the
+ * user that will run tests.
+ */
+
+// Note for reviewers: this intentionally duplicates functionality already in "ApiSetup" and so on.
+// This framework works better IMO and has less strangeness (such as test cases inheriting from "ApiSetup"...)
+// (and in the case of the other Upload tests, this flat out just actually works... )
+
+// TODO: port the other Upload tests, and other API tests to this framework
+
+require_once( 'ApiTestCaseUpload.php' );
+
+/**
+ * @group Database
+ *
+ * This is pretty sucky... needs to be prettified.
+ */
+class ApiUploadTest extends ApiTestCaseUpload {
+
+ /**
+ * Testing login
+ * XXX this is a funny way of getting session context
+ */
+ function testLogin() {
+ $user = self::$users['uploader'];
+
+ $params = array(
+ 'action' => 'login',
+ 'lgname' => $user->username,
+ 'lgpassword' => $user->password
+ );
+ list( $result, , $session ) = $this->doApiRequest( $params );
+ $this->assertArrayHasKey( "login", $result );
+ $this->assertArrayHasKey( "result", $result['login'] );
+ $this->assertEquals( "NeedToken", $result['login']['result'] );
+ $token = $result['login']['token'];
+
+ $params = array(
+ 'action' => 'login',
+ 'lgtoken' => $token,
+ 'lgname' => $user->username,
+ 'lgpassword' => $user->password
+ );
+ list( $result, , $session ) = $this->doApiRequest( $params, $session );
+ $this->assertArrayHasKey( "login", $result );
+ $this->assertArrayHasKey( "result", $result['login'] );
+ $this->assertEquals( "Success", $result['login']['result'] );
+ $this->assertArrayHasKey( 'lgtoken', $result['login'] );
+
+ return $session;
+
+ }
+
+ /**
+ * @depends testLogin
+ */
+ public function testUploadRequiresToken( $session ) {
+ $exception = false;
+ try {
+ $this->doApiRequest( array(
+ 'action' => 'upload'
+ ) );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ $this->assertEquals( "The token parameter must be set", $e->getMessage() );
+ }
+ $this->assertTrue( $exception, "Got exception" );
+ }
+
+ /**
+ * @depends testLogin
+ */
+ public function testUploadMissingParams( $session ) {
+ global $wgUser;
+ $wgUser = self::$users['uploader']->user;
+
+ $exception = false;
+ try {
+ $this->doApiRequestWithToken( array(
+ 'action' => 'upload',
+ ), $session );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ $this->assertEquals( "One of the parameters filekey, file, url, statuskey is required",
+ $e->getMessage() );
+ }
+ $this->assertTrue( $exception, "Got exception" );
+ }
+
+
+ /**
+ * @depends testLogin
+ */
+ public function testUpload( $session ) {
+ global $wgUser;
+ $wgUser = self::$users['uploader']->user;
+
+ $extension = 'png';
+ $mimeType = 'image/png';
+
+ try {
+ $randomImageGenerator = new RandomImageGenerator();
+ }
+ catch ( Exception $e ) {
+ $this->markTestIncomplete( $e->getMessage() );
+ }
+
+ $filePaths = $randomImageGenerator->writeImages( 1, $extension, wfTempDir() );
+ $filePath = $filePaths[0];
+ $fileSize = filesize( $filePath );
+ $fileName = basename( $filePath );
+
+ $this->deleteFileByFileName( $fileName );
+ $this->deleteFileByContent( $filePath );
+
+
+ if (! $this->fakeUploadFile( 'file', $fileName, $mimeType, $filePath ) ) {
+ $this->markTestIncomplete( "Couldn't upload file!\n" );
+ }
+
+ $params = array(
+ 'action' => 'upload',
+ 'filename' => $fileName,
+ 'file' => 'dummy content',
+ 'comment' => 'dummy comment',
+ 'text' => "This is the page text for $fileName",
+ );
+
+ $exception = false;
+ try {
+ list( $result, , ) = $this->doApiRequestWithToken( $params, $session );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ }
+ $this->assertTrue( isset( $result['upload'] ) );
+ $this->assertEquals( 'Success', $result['upload']['result'] );
+ $this->assertEquals( $fileSize, ( int )$result['upload']['imageinfo']['size'] );
+ $this->assertEquals( $mimeType, $result['upload']['imageinfo']['mime'] );
+ $this->assertFalse( $exception );
+
+ // clean up
+ $this->deleteFileByFilename( $fileName );
+ unlink( $filePath );
+ }
+
+
+ /**
+ * @depends testLogin
+ */
+ public function testUploadZeroLength( $session ) {
+ global $wgUser;
+ $wgUser = self::$users['uploader']->user;
+
+ $mimeType = 'image/png';
+
+ $filePath = tempnam( wfTempDir(), "" );
+ $fileName = "apiTestUploadZeroLength.png";
+
+ $this->deleteFileByFileName( $fileName );
+
+ if (! $this->fakeUploadFile( 'file', $fileName, $mimeType, $filePath ) ) {
+ $this->markTestIncomplete( "Couldn't upload file!\n" );
+ }
+
+ $params = array(
+ 'action' => 'upload',
+ 'filename' => $fileName,
+ 'file' => 'dummy content',
+ 'comment' => 'dummy comment',
+ 'text' => "This is the page text for $fileName",
+ );
+
+ $exception = false;
+ try {
+ $this->doApiRequestWithToken( $params, $session );
+ } catch ( UsageException $e ) {
+ $this->assertContains( 'The file you submitted was empty', $e->getMessage() );
+ $exception = true;
+ }
+ $this->assertTrue( $exception );
+
+ // clean up
+ $this->deleteFileByFilename( $fileName );
+ unlink( $filePath );
+ }
+
+
+ /**
+ * @depends testLogin
+ */
+ public function testUploadSameFileName( $session ) {
+ global $wgUser;
+ $wgUser = self::$users['uploader']->user;
+
+ $extension = 'png';
+ $mimeType = 'image/png';
+
+ try {
+ $randomImageGenerator = new RandomImageGenerator();
+ }
+ catch ( Exception $e ) {
+ $this->markTestIncomplete( $e->getMessage() );
+ }
+
+ $filePaths = $randomImageGenerator->writeImages( 2, $extension, wfTempDir() );
+ // we'll reuse this filename
+ $fileName = basename( $filePaths[0] );
+
+ // clear any other files with the same name
+ $this->deleteFileByFileName( $fileName );
+
+ // we reuse these params
+ $params = array(
+ 'action' => 'upload',
+ 'filename' => $fileName,
+ 'file' => 'dummy content',
+ 'comment' => 'dummy comment',
+ 'text' => "This is the page text for $fileName",
+ );
+
+ // first upload .... should succeed
+
+ if (! $this->fakeUploadFile( 'file', $fileName, $mimeType, $filePaths[0] ) ) {
+ $this->markTestIncomplete( "Couldn't upload file!\n" );
+ }
+
+ $exception = false;
+ try {
+ list( $result, , $session ) = $this->doApiRequestWithToken( $params, $session );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ }
+ $this->assertTrue( isset( $result['upload'] ) );
+ $this->assertEquals( 'Success', $result['upload']['result'] );
+ $this->assertFalse( $exception );
+
+ // second upload with the same name (but different content)
+
+ if (! $this->fakeUploadFile( 'file', $fileName, $mimeType, $filePaths[1] ) ) {
+ $this->markTestIncomplete( "Couldn't upload file!\n" );
+ }
+
+ $exception = false;
+ try {
+ list( $result, , ) = $this->doApiRequestWithToken( $params, $session );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ }
+ $this->assertTrue( isset( $result['upload'] ) );
+ $this->assertEquals( 'Warning', $result['upload']['result'] );
+ $this->assertTrue( isset( $result['upload']['warnings'] ) );
+ $this->assertTrue( isset( $result['upload']['warnings']['exists'] ) );
+ $this->assertFalse( $exception );
+
+ // clean up
+ $this->deleteFileByFilename( $fileName );
+ unlink( $filePaths[0] );
+ unlink( $filePaths[1] );
+ }
+
+
+ /**
+ * @depends testLogin
+ */
+ public function testUploadSameContent( $session ) {
+ global $wgUser;
+ $wgUser = self::$users['uploader']->user;
+
+ $extension = 'png';
+ $mimeType = 'image/png';
+
+ try {
+ $randomImageGenerator = new RandomImageGenerator();
+ }
+ catch ( Exception $e ) {
+ $this->markTestIncomplete( $e->getMessage() );
+ }
+ $filePaths = $randomImageGenerator->writeImages( 1, $extension, wfTempDir() );
+ $fileNames[0] = basename( $filePaths[0] );
+ $fileNames[1] = "SameContentAs" . $fileNames[0];
+
+ // clear any other files with the same name or content
+ $this->deleteFileByContent( $filePaths[0] );
+ $this->deleteFileByFileName( $fileNames[0] );
+ $this->deleteFileByFileName( $fileNames[1] );
+
+ // first upload .... should succeed
+
+ $params = array(
+ 'action' => 'upload',
+ 'filename' => $fileNames[0],
+ 'file' => 'dummy content',
+ 'comment' => 'dummy comment',
+ 'text' => "This is the page text for " . $fileNames[0],
+ );
+
+ if (! $this->fakeUploadFile( 'file', $fileNames[0], $mimeType, $filePaths[0] ) ) {
+ $this->markTestIncomplete( "Couldn't upload file!\n" );
+ }
+
+ $exception = false;
+ try {
+ list( $result, $request, $session ) = $this->doApiRequestWithToken( $params, $session );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ }
+ $this->assertTrue( isset( $result['upload'] ) );
+ $this->assertEquals( 'Success', $result['upload']['result'] );
+ $this->assertFalse( $exception );
+
+
+ // second upload with the same content (but different name)
+
+ if (! $this->fakeUploadFile( 'file', $fileNames[1], $mimeType, $filePaths[0] ) ) {
+ $this->markTestIncomplete( "Couldn't upload file!\n" );
+ }
+
+ $params = array(
+ 'action' => 'upload',
+ 'filename' => $fileNames[1],
+ 'file' => 'dummy content',
+ 'comment' => 'dummy comment',
+ 'text' => "This is the page text for " . $fileNames[1],
+ );
+
+ $exception = false;
+ try {
+ list( $result, $request, $session ) = $this->doApiRequestWithToken( $params, $session );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ }
+ $this->assertTrue( isset( $result['upload'] ) );
+ $this->assertEquals( 'Warning', $result['upload']['result'] );
+ $this->assertTrue( isset( $result['upload']['warnings'] ) );
+ $this->assertTrue( isset( $result['upload']['warnings']['duplicate'] ) );
+ $this->assertFalse( $exception );
+
+ // clean up
+ $this->deleteFileByFilename( $fileNames[0] );
+ $this->deleteFileByFilename( $fileNames[1] );
+ unlink( $filePaths[0] );
+ }
+
+
+ /**
+ * @depends testLogin
+ */
+ public function testUploadStash( $session ) {
+ global $wgUser;
+ $wgUser = self::$users['uploader']->user;
+
+ $extension = 'png';
+ $mimeType = 'image/png';
+
+ try {
+ $randomImageGenerator = new RandomImageGenerator();
+ }
+ catch ( Exception $e ) {
+ $this->markTestIncomplete( $e->getMessage() );
+ }
+
+ $filePaths = $randomImageGenerator->writeImages( 1, $extension, wfTempDir() );
+ $filePath = $filePaths[0];
+ $fileSize = filesize( $filePath );
+ $fileName = basename( $filePath );
+
+ $this->deleteFileByFileName( $fileName );
+ $this->deleteFileByContent( $filePath );
+
+ if (! $this->fakeUploadFile( 'file', $fileName, $mimeType, $filePath ) ) {
+ $this->markTestIncomplete( "Couldn't upload file!\n" );
+ }
+
+ $params = array(
+ 'action' => 'upload',
+ 'stash' => 1,
+ 'filename' => $fileName,
+ 'file' => 'dummy content',
+ 'comment' => 'dummy comment',
+ 'text' => "This is the page text for $fileName",
+ );
+
+ $exception = false;
+ try {
+ list( $result, $request, $session ) = $this->doApiRequestWithToken( $params, $session );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ }
+ $this->assertFalse( $exception );
+ $this->assertTrue( isset( $result['upload'] ) );
+ $this->assertEquals( 'Success', $result['upload']['result'] );
+ $this->assertEquals( $fileSize, ( int )$result['upload']['imageinfo']['size'] );
+ $this->assertEquals( $mimeType, $result['upload']['imageinfo']['mime'] );
+ $this->assertTrue( isset( $result['upload']['filekey'] ) );
+ $this->assertEquals( $result['upload']['sessionkey'], $result['upload']['filekey'] );
+ $filekey = $result['upload']['filekey'];
+
+ // it should be visible from Special:UploadStash
+ // XXX ...but how to test this, with a fake WebRequest with the session?
+
+ // now we should try to release the file from stash
+ $params = array(
+ 'action' => 'upload',
+ 'filekey' => $filekey,
+ 'filename' => $fileName,
+ 'comment' => 'dummy comment',
+ 'text' => "This is the page text for $fileName, altered",
+ );
+
+ $this->clearFakeUploads();
+ $exception = false;
+ try {
+ list( $result, $request, $session ) = $this->doApiRequestWithToken( $params, $session );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ }
+ $this->assertTrue( isset( $result['upload'] ) );
+ $this->assertEquals( 'Success', $result['upload']['result'] );
+ $this->assertFalse( $exception );
+
+ // clean up
+ $this->deleteFileByFilename( $fileName );
+ unlink( $filePath );
+ }
+}
+
diff --git a/tests/phpunit/includes/api/ApiWatchTest.php b/tests/phpunit/includes/api/ApiWatchTest.php
new file mode 100644
index 00000000..3c7ff304
--- /dev/null
+++ b/tests/phpunit/includes/api/ApiWatchTest.php
@@ -0,0 +1,179 @@
+<?php
+
+/**
+ * @group Database
+ * @todo This test suite is severly broken and need a full review
+ */
+class ApiWatchTest extends ApiTestCase {
+
+ function setUp() {
+ parent::setUp();
+ $this->doLogin();
+ }
+
+ function getTokens() {
+ return $this->getTokenList( self::$users['sysop'] );
+ }
+
+ /**
+ * @group Broken
+ */
+ function testWatchEdit() {
+
+ $data = $this->getTokens();
+
+ $keys = array_keys( $data[0]['query']['pages'] );
+ $key = array_pop( $keys );
+ $pageinfo = $data[0]['query']['pages'][$key];
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'edit',
+ 'title' => 'UTPage',
+ 'text' => 'new text',
+ 'token' => $pageinfo['edittoken'],
+ 'watchlist' => 'watch' ), $data );
+ $this->assertArrayHasKey( 'edit', $data[0] );
+ $this->assertArrayHasKey( 'result', $data[0]['edit'] );
+ $this->assertEquals( 'Success', $data[0]['edit']['result'] );
+
+ return $data;
+ }
+
+ /**
+ * @depends testWatchEdit
+ */
+ function testWatchClear() {
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'query',
+ 'list' => 'watchlist' ), $data );
+
+ if ( isset( $data[0]['query']['watchlist'] ) ) {
+ $wl = $data[0]['query']['watchlist'];
+
+ foreach ( $wl as $page ) {
+ $data = $this->doApiRequest( array(
+ 'action' => 'watch',
+ 'title' => $page['title'],
+ 'unwatch' => true ), $data );
+ }
+ }
+ $data = $this->doApiRequest( array(
+ 'action' => 'query',
+ 'list' => 'watchlist' ), $data );
+ $this->assertArrayHasKey( 'query', $data[0] );
+ $this->assertArrayHasKey( 'watchlist', $data[0]['query'] );
+ $this->assertEquals( 0, count( $data[0]['query']['watchlist'] ) );
+
+ return $data;
+ }
+
+ /**
+ * @group Broken
+ */
+ function testWatchProtect() {
+
+ $data = $this->getTokens();
+
+ $keys = array_keys( $data[0]['query']['pages'] );
+ $key = array_pop( $keys );
+ $pageinfo = $data[0]['query']['pages'][$key];
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'protect',
+ 'token' => $pageinfo['protecttoken'],
+ 'title' => 'UTPage',
+ 'protections' => 'edit=sysop',
+ 'watchlist' => 'unwatch' ), $data );
+
+ $this->assertArrayHasKey( 'protect', $data[0] );
+ $this->assertArrayHasKey( 'protections', $data[0]['protect'] );
+ $this->assertEquals( 1, count( $data[0]['protect']['protections'] ) );
+ $this->assertArrayHasKey( 'edit', $data[0]['protect']['protections'][0] );
+ }
+
+
+ function testGetRollbackToken() {
+
+ $data = $this->getTokens();
+
+ if ( !Title::newFromText( 'UTPage' )->exists() ) {
+ $this->markTestIncomplete( "The article [[UTPage]] does not exist" );
+ }
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'query',
+ 'prop' => 'revisions',
+ 'titles' => 'UTPage',
+ 'rvtoken' => 'rollback' ), $data );
+
+ $this->assertArrayHasKey( 'query', $data[0] );
+ $this->assertArrayHasKey( 'pages', $data[0]['query'] );
+ $keys = array_keys( $data[0]['query']['pages'] );
+ $key = array_pop( $keys );
+
+ if ( isset( $data[0]['query']['pages'][$key]['missing'] ) ) {
+ $this->markTestIncomplete( "Target page (UTPage) doesn't exist" );
+ }
+
+ $this->assertArrayHasKey( 'pageid', $data[0]['query']['pages'][$key] );
+ $this->assertArrayHasKey( 'revisions', $data[0]['query']['pages'][$key] );
+ $this->assertArrayHasKey( 0, $data[0]['query']['pages'][$key]['revisions'] );
+ $this->assertArrayHasKey( 'rollbacktoken', $data[0]['query']['pages'][$key]['revisions'][0] );
+
+ return $data;
+ }
+
+ /**
+ * @depends testGetRollbackToken
+ * @group Broken
+ */
+ function testWatchRollback( $data ) {
+ $keys = array_keys( $data[0]['query']['pages'] );
+ $key = array_pop( $keys );
+ $pageinfo = $data[0]['query']['pages'][$key]['revisions'][0];
+
+ try {
+ $data = $this->doApiRequest( array(
+ 'action' => 'rollback',
+ 'title' => 'UTPage',
+ 'user' => $pageinfo['user'],
+ 'token' => $pageinfo['rollbacktoken'],
+ 'watchlist' => 'watch' ), $data );
+ } catch( UsageException $ue ) {
+ if( $ue->getCodeString() == 'onlyauthor' ) {
+ $this->markTestIncomplete( "Only one author to 'UTPage', cannot test rollback" );
+ } else {
+ $this->fail( "Received error '" . $ue->getCodeString() . "'" );
+ }
+ }
+
+ $this->assertArrayHasKey( 'rollback', $data[0] );
+ $this->assertArrayHasKey( 'title', $data[0]['rollback'] );
+ }
+
+ /**
+ * @group Broken
+ */
+ function testWatchDelete() {
+
+ $data = $this->getTokens();
+
+ $keys = array_keys( $data[0]['query']['pages'] );
+ $key = array_pop( $keys );
+ $pageinfo = $data[0]['query']['pages'][$key];
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'delete',
+ 'token' => $pageinfo['deletetoken'],
+ 'title' => 'UTPage' ), $data );
+ $this->assertArrayHasKey( 'delete', $data[0] );
+ $this->assertArrayHasKey( 'title', $data[0]['delete'] );
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'query',
+ 'list' => 'watchlist' ), $data );
+
+ $this->markTestIncomplete( 'This test needs to verify the deleted article was added to the users watchlist' );
+ }
+}
diff --git a/tests/phpunit/includes/api/RandomImageGenerator.php b/tests/phpunit/includes/api/RandomImageGenerator.php
new file mode 100644
index 00000000..ae349978
--- /dev/null
+++ b/tests/phpunit/includes/api/RandomImageGenerator.php
@@ -0,0 +1,473 @@
+<?php
+
+/*
+ * RandomImageGenerator -- does what it says on the tin.
+ * Requires Imagick, the ImageMagick library for PHP, or the command line equivalent (usually 'convert').
+ *
+ * Because MediaWiki tests the uniqueness of media upload content, and filenames, it is sometimes useful to generate
+ * files that are guaranteed (or at least very likely) to be unique in both those ways.
+ * This generates a number of filenames with random names and random content (colored triangles)
+ *
+ * It is also useful to have fresh content because our tests currently run in a "destructive" mode, and don't create a fresh new wiki for each
+ * test run.
+ * Consequently, if we just had a few static files we kept re-uploading, we'd get lots of warnings about matching content or filenames,
+ * and even if we deleted those files, we'd get warnings about archived files.
+ *
+ * This can also be used with a cronjob to generate random files all the time -- I use it to have a constant, never ending supply when I'm
+ * testing interactively.
+ *
+ * @file
+ * @author Neil Kandalgaonkar <neilk@wikimedia.org>
+ */
+
+/**
+ * RandomImageGenerator: does what it says on the tin.
+ * Can fetch a random image, or also write a number of them to disk with random filenames.
+ */
+class RandomImageGenerator {
+
+ private $dictionaryFile;
+ private $minWidth = 400;
+ private $maxWidth = 800;
+ private $minHeight = 400;
+ private $maxHeight = 800;
+ private $shapesToDraw = 5;
+ private $imageWriteMethod;
+
+ /**
+ * Orientations: 0th row, 0th column, EXIF orientation code, rotation 2x2 matrix that is opposite of orientation
+ * n.b. we do not handle the 'flipped' orientations, which is why there is no entry for 2, 4, 5, or 7. Those
+ * seem to be rare in real images anyway
+ * (we also would need a non-symmetric shape for the images to test those, like a letter F)
+ */
+ private static $orientations = array(
+ array(
+ '0thRow' => 'top',
+ '0thCol' => 'left',
+ 'exifCode' => 1,
+ 'counterRotation' => array( array( 1, 0 ), array( 0, 1 ) )
+ ),
+ array(
+ '0thRow' => 'bottom',
+ '0thCol' => 'right',
+ 'exifCode' => 3,
+ 'counterRotation' => array( array( -1, 0 ), array( 0, -1 ) )
+ ),
+ array(
+ '0thRow' => 'right',
+ '0thCol' => 'top',
+ 'exifCode' => 6,
+ 'counterRotation' => array( array( 0, 1 ), array( 1, 0 ) )
+ ),
+ array(
+ '0thRow' => 'left',
+ '0thCol' => 'bottom',
+ 'exifCode' => 8,
+ 'counterRotation' => array( array( 0, -1 ), array( -1, 0 ) )
+ )
+ );
+
+
+ public function __construct( $options = array() ) {
+ foreach ( array( 'dictionaryFile', 'minWidth', 'minHeight', 'maxHeight', 'shapesToDraw' ) as $property ) {
+ if ( isset( $options[$property] ) ) {
+ $this->$property = $options[$property];
+ }
+ }
+
+ // find the dictionary file, to generate random names
+ if ( !isset( $this->dictionaryFile ) ) {
+ foreach ( array(
+ '/usr/share/dict/words',
+ '/usr/dict/words',
+ dirname( __FILE__ ) . '/words.txt' )
+ as $dictionaryFile ) {
+ if ( is_file( $dictionaryFile ) and is_readable( $dictionaryFile ) ) {
+ $this->dictionaryFile = $dictionaryFile;
+ break;
+ }
+ }
+ }
+ if ( !isset( $this->dictionaryFile ) ) {
+ throw new Exception( "RandomImageGenerator: dictionary file not found or not specified properly" );
+ }
+
+ if ( !class_exists( 'Imagick' ) ) {
+ throw new Exception( 'No Imagick extension' );
+ }
+ global $wgExiv2Command;
+ if ( !$wgExiv2Command || !is_executable( $wgExiv2Command ) ) {
+ throw new Exception( 'exiv2 not executable or $wgExiv2Command not set' );
+ }
+ }
+
+ /**
+ * Writes random images with random filenames to disk in the directory you specify, or current working directory
+ *
+ * @param $number Integer: number of filenames to write
+ * @param $format String: optional, must be understood by ImageMagick, such as 'jpg' or 'gif'
+ * @param $dir String: directory, optional (will default to current working directory)
+ * @return Array: filenames we just wrote
+ */
+ function writeImages( $number, $format = 'jpg', $dir = null ) {
+ $filenames = $this->getRandomFilenames( $number, $format, $dir );
+ $imageWriteMethod = $this->getImageWriteMethod( $format );
+ foreach( $filenames as $filename ) {
+ $this->{$imageWriteMethod}( $this->getImageSpec(), $format, $filename );
+ }
+ return $filenames;
+ }
+
+
+ /**
+ * Figure out how we write images. This is a factor of both format and the local system
+ * @param $format (a typical extension like 'svg', 'jpg', etc.)
+ */
+ function getImageWriteMethod( $format ) {
+ global $wgUseImageMagick, $wgImageMagickConvertCommand;
+ if ( $format === 'svg' ) {
+ return 'writeSvg';
+ } else {
+ // figure out how to write images
+ if ( class_exists( 'Imagick' ) ) {
+ return 'writeImageWithApi';
+ } elseif ( $wgUseImageMagick && $wgImageMagickConvertCommand && is_executable( $wgImageMagickConvertCommand ) ) {
+ return 'writeImageWithCommandLine';
+ }
+ }
+ throw new Exception( "RandomImageGenerator: could not find a suitable method to write images in '$format' format" );
+ }
+
+ /**
+ * Return a number of randomly-generated filenames
+ * Each filename uses two words randomly drawn from the dictionary, like elephantine_spatula.jpg
+ *
+ * @param $number Integer: of filenames to generate
+ * @param $extension String: optional, defaults to 'jpg'
+ * @param $dir String: optional, defaults to current working directory
+ * @return Array: of filenames
+ */
+ private function getRandomFilenames( $number, $extension = 'jpg', $dir = null ) {
+ if ( is_null( $dir ) ) {
+ $dir = getcwd();
+ }
+ $filenames = array();
+ foreach( $this->getRandomWordPairs( $number ) as $pair ) {
+ $basename = $pair[0] . '_' . $pair[1];
+ if ( !is_null( $extension ) ) {
+ $basename .= '.' . $extension;
+ }
+ $basename = preg_replace( '/\s+/', '', $basename );
+ $filenames[] = "$dir/$basename";
+ }
+
+ return $filenames;
+
+ }
+
+
+ /**
+ * Generate data representing an image of random size (within limits),
+ * consisting of randomly colored and sized upward pointing triangles against a random background color
+ * (This data is used in the writeImage* methods).
+ * @return {Mixed}
+ */
+ public function getImageSpec() {
+ $spec = array();
+
+ $spec['width'] = mt_rand( $this->minWidth, $this->maxWidth );
+ $spec['height'] = mt_rand( $this->minHeight, $this->maxHeight );
+ $spec['fill'] = $this->getRandomColor();
+
+ $diagonalLength = sqrt( pow( $spec['width'], 2 ) + pow( $spec['height'], 2 ) );
+
+ $draws = array();
+ for ( $i = 0; $i <= $this->shapesToDraw; $i++ ) {
+ $radius = mt_rand( 0, $diagonalLength / 4 );
+ if ( $radius == 0 ) {
+ continue;
+ }
+ $originX = mt_rand( -1 * $radius, $spec['width'] + $radius );
+ $originY = mt_rand( -1 * $radius, $spec['height'] + $radius );
+ $angle = mt_rand( 0, ( 3.141592/2 ) * $radius ) / $radius;
+ $legDeltaX = round( $radius * sin( $angle ) );
+ $legDeltaY = round( $radius * cos( $angle ) );
+
+ $draw = array();
+ $draw['fill'] = $this->getRandomColor();
+ $draw['shape'] = array(
+ array( 'x' => $originX, 'y' => $originY - $radius ),
+ array( 'x' => $originX + $legDeltaX, 'y' => $originY + $legDeltaY ),
+ array( 'x' => $originX - $legDeltaX, 'y' => $originY + $legDeltaY ),
+ array( 'x' => $originX, 'y' => $originY - $radius )
+ );
+ $draws[] = $draw;
+
+ }
+
+ $spec['draws'] = $draws;
+
+ return $spec;
+ }
+
+ /**
+ * Given array( array('x' => 10, 'y' => 20), array( 'x' => 30, y=> 5 ) )
+ * returns "10,20 30,5"
+ * Useful for SVG and imagemagick command line arguments
+ * @param $shape: Array of arrays, each array containing x & y keys mapped to numeric values
+ * @return string
+ */
+ static function shapePointsToString( $shape ) {
+ $points = array();
+ foreach ( $shape as $point ) {
+ $points[] = $point['x'] . ',' . $point['y'];
+ }
+ return join( " ", $points );
+ }
+
+ /**
+ * Based on image specification, write a very simple SVG file to disk.
+ * Ignores the background spec because transparency is cool. :)
+ * @param $spec: spec describing background and shapes to draw
+ * @param $format: file format to write (which is obviously always svg here)
+ * @param $filename: filename to write to
+ */
+ public function writeSvg( $spec, $format, $filename ) {
+ $svg = new SimpleXmlElement( '<svg/>' );
+ $svg->addAttribute( 'xmlns', 'http://www.w3.org/2000/svg' );
+ $svg->addAttribute( 'version', '1.1' );
+ $svg->addAttribute( 'width', $spec['width'] );
+ $svg->addAttribute( 'height', $spec['height'] );
+ $g = $svg->addChild( 'g' );
+ foreach ( $spec['draws'] as $drawSpec ) {
+ $shape = $g->addChild( 'polygon' );
+ $shape->addAttribute( 'fill', $drawSpec['fill'] );
+ $shape->addAttribute( 'points', self::shapePointsToString( $drawSpec['shape'] ) );
+ };
+ if ( ! $fh = fopen( $filename, 'w' ) ) {
+ throw new Exception( "couldn't open $filename for writing" );
+ }
+ fwrite( $fh, $svg->asXML() );
+ if ( !fclose($fh) ) {
+ throw new Exception( "couldn't close $filename" );
+ }
+ }
+
+ /**
+ * Based on an image specification, write such an image to disk, using Imagick PHP extension
+ * @param $spec: spec describing background and circles to draw
+ * @param $format: file format to write
+ * @param $filename: filename to write to
+ */
+ public function writeImageWithApi( $spec, $format, $filename ) {
+ // this is a hack because I can't get setImageOrientation() to work. See below.
+ global $wgExiv2Command;
+
+ $image = new Imagick();
+ /**
+ * If the format is 'jpg', will also add a random orientation -- the image will be drawn rotated with triangle points
+ * facing in some direction (0, 90, 180 or 270 degrees) and a countering rotation should turn the triangle points upward again
+ */
+ $orientation = self::$orientations[0]; // default is normal orientation
+ if ( $format == 'jpg' ) {
+ $orientation = self::$orientations[ array_rand( self::$orientations ) ];
+ $spec = self::rotateImageSpec( $spec, $orientation['counterRotation'] );
+ }
+
+ $image->newImage( $spec['width'], $spec['height'], new ImagickPixel( $spec['fill'] ) );
+
+ foreach ( $spec['draws'] as $drawSpec ) {
+ $draw = new ImagickDraw();
+ $draw->setFillColor( $drawSpec['fill'] );
+ $draw->polygon( $drawSpec['shape'] );
+ $image->drawImage( $draw );
+ }
+
+ $image->setImageFormat( $format );
+
+ // this doesn't work, even though it's documented to do so...
+ // $image->setImageOrientation( $orientation['exifCode'] );
+
+ $image->writeImage( $filename );
+
+ // because the above setImageOrientation call doesn't work... nor can I get an external imagemagick binary to do this either...
+ // hacking this for now (only works if you have exiv2 installed, a program to read and manipulate exif)
+ if ( $wgExiv2Command ) {
+ $cmd = wfEscapeShellArg( $wgExiv2Command )
+ . " -M "
+ . wfEscapeShellArg( "set Exif.Image.Orientation " . $orientation['exifCode'] )
+ . " "
+ . wfEscapeShellArg( $filename );
+
+ $retval = 0;
+ $err = wfShellExec( $cmd, $retval );
+ if ( $retval !== 0 ) {
+ print "Error with $cmd: $retval, $err\n";
+ }
+ }
+
+
+ }
+
+ /**
+ * Given an image specification, produce rotated version
+ * This is used when simulating a rotated image capture with EXIF orientation
+ * @param $spec Object returned by getImageSpec
+ * @param $matrix 2x2 transformation matrix
+ * @return transformed Spec
+ */
+ private static function rotateImageSpec( &$spec, $matrix ) {
+ $tSpec = array();
+ $dims = self::matrixMultiply2x2( $matrix, $spec['width'], $spec['height'] );
+ $correctionX = 0;
+ $correctionY = 0;
+ if ( $dims['x'] < 0 ) {
+ $correctionX = abs( $dims['x'] );
+ }
+ if ( $dims['y'] < 0 ) {
+ $correctionY = abs( $dims['y'] );
+ }
+ $tSpec['width'] = abs( $dims['x'] );
+ $tSpec['height'] = abs( $dims['y'] );
+ $tSpec['fill'] = $spec['fill'];
+ $tSpec['draws'] = array();
+ foreach( $spec['draws'] as $draw ) {
+ $tDraw = array(
+ 'fill' => $draw['fill'],
+ 'shape' => array()
+ );
+ foreach( $draw['shape'] as $point ) {
+ $tPoint = self::matrixMultiply2x2( $matrix, $point['x'], $point['y'] );
+ $tPoint['x'] += $correctionX;
+ $tPoint['y'] += $correctionY;
+ $tDraw['shape'][] = $tPoint;
+ }
+ $tSpec['draws'][] = $tDraw;
+ }
+ return $tSpec;
+ }
+
+ /**
+ * Given a matrix and a pair of images, return new position
+ * @param $matrix: 2x2 rotation matrix
+ * @param $x: x-coordinate number
+ * @param $y: y-coordinate number
+ * @return Array transformed with properties x, y
+ */
+ private static function matrixMultiply2x2( $matrix, $x, $y ) {
+ return array(
+ 'x' => $x * $matrix[0][0] + $y * $matrix[0][1],
+ 'y' => $x * $matrix[1][0] + $y * $matrix[1][1]
+ );
+ }
+
+
+ /**
+ * Based on an image specification, write such an image to disk, using the command line ImageMagick program ('convert').
+ *
+ * Sample command line:
+ * $ convert -size 100x60 xc:rgb(90,87,45) \
+ * -draw 'fill rgb(12,34,56) polygon 41,39 44,57 50,57 41,39' \
+ * -draw 'fill rgb(99,123,231) circle 59,39 56,57' \
+ * -draw 'fill rgb(240,12,32) circle 50,21 50,3' filename.png
+ *
+ * @param $spec: spec describing background and shapes to draw
+ * @param $format: file format to write (unused by this method but kept so it has the same signature as writeImageWithApi)
+ * @param $filename: filename to write to
+ */
+ public function writeImageWithCommandLine( $spec, $format, $filename ) {
+ global $wgImageMagickConvertCommand;
+ $args = array();
+ $args[] = "-size " . wfEscapeShellArg( $spec['width'] . 'x' . $spec['height'] );
+ $args[] = wfEscapeShellArg( "xc:" . $spec['fill'] );
+ foreach( $spec['draws'] as $draw ) {
+ $fill = $draw['fill'];
+ $polygon = self::shapePointsToString( $draw['shape'] );
+ $drawCommand = "fill $fill polygon $polygon";
+ $args[] = '-draw ' . wfEscapeShellArg( $drawCommand );
+ }
+ $args[] = wfEscapeShellArg( $filename );
+
+ $command = wfEscapeShellArg( $wgImageMagickConvertCommand ) . " " . implode( " ", $args );
+ $retval = null;
+ wfShellExec( $command, $retval );
+ return ( $retval === 0 );
+ }
+
+ /**
+ * Generate a string of random colors for ImageMagick or SVG, like "rgb(12, 37, 98)"
+ *
+ * @return {String}
+ */
+ public function getRandomColor() {
+ $components = array();
+ for ($i = 0; $i <= 2; $i++ ) {
+ $components[] = mt_rand( 0, 255 );
+ }
+ return 'rgb(' . join(', ', $components) . ')';
+ }
+
+ /**
+ * Get an array of random pairs of random words, like array( array( 'foo', 'bar' ), array( 'quux', 'baz' ) );
+ *
+ * @param $number Integer: number of pairs
+ * @return Array: of two-element arrays
+ */
+ private function getRandomWordPairs( $number ) {
+ $lines = $this->getRandomLines( $number * 2 );
+ // construct pairs of words
+ $pairs = array();
+ $count = count( $lines );
+ for( $i = 0; $i < $count; $i += 2 ) {
+ $pairs[] = array( $lines[$i], $lines[$i+1] );
+ }
+ return $pairs;
+ }
+
+
+ /**
+ * Return N random lines from a file
+ *
+ * Will throw exception if the file could not be read or if it had fewer lines than requested.
+ *
+ * @param $number_desired Integer: number of lines desired
+ * @return Array: of exactly n elements, drawn randomly from lines the file
+ */
+ private function getRandomLines( $number_desired ) {
+ $filepath = $this->dictionaryFile;
+
+ // initialize array of lines
+ $lines = array();
+ for ( $i = 0; $i < $number_desired; $i++ ) {
+ $lines[] = null;
+ }
+
+ /*
+ * This algorithm obtains N random lines from a file in one single pass. It does this by replacing elements of
+ * a fixed-size array of lines, less and less frequently as it reads the file.
+ */
+ $fh = fopen( $filepath, "r" );
+ if ( !$fh ) {
+ throw new Exception( "couldn't open $filepath" );
+ }
+ $line_number = 0;
+ $max_index = $number_desired - 1;
+ while( !feof( $fh ) ) {
+ $line = fgets( $fh );
+ if ( $line !== false ) {
+ $line_number++;
+ $line = trim( $line );
+ if ( mt_rand( 0, $line_number ) <= $max_index ) {
+ $lines[ mt_rand( 0, $max_index ) ] = $line;
+ }
+ }
+ }
+ fclose( $fh );
+ if ( $line_number < $number_desired ) {
+ throw new Exception( "not enough lines in $filepath" );
+ }
+
+ return $lines;
+ }
+
+}
diff --git a/tests/phpunit/includes/api/format/ApiFormatPhpTest.php b/tests/phpunit/includes/api/format/ApiFormatPhpTest.php
new file mode 100644
index 00000000..8209f591
--- /dev/null
+++ b/tests/phpunit/includes/api/format/ApiFormatPhpTest.php
@@ -0,0 +1,19 @@
+<?php
+
+/**
+ * @group API
+ * @group Database
+ */
+class ApiFormatPhpTest extends ApiFormatTestBase {
+
+ function testValidPhpSyntax() {
+
+ $data = $this->apiRequest( 'php', array( 'action' => 'query', 'meta' => 'siteinfo' ) );
+
+ $this->assertInternalType( 'array', unserialize( $data ) );
+ $this->assertGreaterThan( 0, count( (array) $data ) );
+
+
+ }
+
+}
diff --git a/tests/phpunit/includes/api/format/ApiFormatTestBase.php b/tests/phpunit/includes/api/format/ApiFormatTestBase.php
new file mode 100644
index 00000000..a0b7b020
--- /dev/null
+++ b/tests/phpunit/includes/api/format/ApiFormatTestBase.php
@@ -0,0 +1,22 @@
+<?php
+
+abstract class ApiFormatTestBase extends ApiTestCase {
+ protected function apiRequest( $format, $params, $data = null ) {
+ $data = parent::doApiRequest( $params, $data, true );
+
+ $module = $data[3];
+
+ $printer = $module->createPrinterByName( $format );
+ $printer->setUnescapeAmps( false );
+
+ $printer->initPrinter( false );
+
+ ob_start();
+ $printer->execute();
+ $out = ob_get_clean();
+
+ $printer->closePrinter();
+
+ return $out;
+ }
+}
diff --git a/tests/phpunit/includes/api/generateRandomImages.php b/tests/phpunit/includes/api/generateRandomImages.php
new file mode 100644
index 00000000..f3a14e5b
--- /dev/null
+++ b/tests/phpunit/includes/api/generateRandomImages.php
@@ -0,0 +1,47 @@
+<?php
+/**
+ * Bootstrapping for test image file generation
+ *
+ * @file
+ */
+
+// Evaluate the include path relative to this file
+$IP = dirname( dirname( dirname( dirname( dirname( __FILE__ ) ) ) ) );
+
+// Start up MediaWiki in command-line mode
+require_once( "$IP/maintenance/Maintenance.php" );
+require("RandomImageGenerator.php");
+
+class GenerateRandomImages extends Maintenance {
+
+ public function execute() {
+
+ $getOptSpec = array(
+ 'dictionaryFile::',
+ 'minWidth::',
+ 'maxWidth::',
+ 'minHeight::',
+ 'maxHeight::',
+ 'shapesToDraw::',
+ 'shape::',
+
+ 'number::',
+ 'format::'
+ );
+ $options = getopt( null, $getOptSpec );
+
+ $format = isset( $options['format'] ) ? $options['format'] : 'jpg';
+ unset( $options['format'] );
+
+ $number = isset( $options['number'] ) ? intval( $options['number'] ) : 10;
+ unset( $options['number'] );
+
+ $randomImageGenerator = new RandomImageGenerator( $options );
+ $randomImageGenerator->writeImages( $number, $format );
+ }
+}
+
+$maintClass = 'GenerateRandomImages';
+require( RUN_MAINTENANCE_IF_MAIN );
+
+
diff --git a/tests/phpunit/includes/api/words.txt b/tests/phpunit/includes/api/words.txt
new file mode 100644
index 00000000..7ce23ee3
--- /dev/null
+++ b/tests/phpunit/includes/api/words.txt
@@ -0,0 +1,1000 @@
+Andaquian
+Anoplanthus
+Araquaju
+Astrophyton
+Avarish
+Batonga
+Bdellidae
+Betoyan
+Bismarck
+Britishness
+Carmen
+Chatillon
+Clement
+Coryphaena
+Croton
+Cyrillianism
+Dagomba
+Decimus
+Dichorisandra
+Duculinae
+Empusa
+Escallonia
+Fathometer
+Fon
+Fundulinae
+Gadswoons
+Gederathite
+Gemini
+Gerbera
+Gregarinida
+Gyracanthus
+Halopsychidae
+Hasidim
+Hemerobius
+Ichthyosauridae
+Iscariot
+Jeames
+Jesuitry
+Jovian
+Judaization
+Katie
+Ladin
+Langhian
+Lapithaean
+Lisette
+Macrochira
+Malaxis
+Malvastrum
+Maranhao
+Marxian
+Maurist
+Metrosideros
+Micky
+Microsporon
+Odacidae
+Ophiuchid
+Osmorhiza
+Paguma
+Palesman
+Papayaceae
+Pastinaca
+Philoxenian
+Pleurostigma
+Rarotongan
+Rhodoraceae
+Rong
+Saho
+Sanyakoan
+Sardanapalian
+Sauropoda
+Sedentaria
+Shambu
+Shukulumbwe
+Solonian
+Spaniardization
+Spirochaetaceae
+Stomatopoda
+Stratiotes
+Taiwanhemp
+Titanically
+Venetianed
+Victrola
+Yuman
+abatis
+abaton
+abjoint
+acanthoma
+acari
+acceptance
+actinography
+acuteness
+addiment
+adelite
+adelomorphic
+adelphogamy
+adipocele
+aelurophobia
+affined
+aflaunt
+agathokakological
+aischrolatreia
+alarmedly
+alebench
+aleurone
+allelotropic
+allerion
+alloplastic
+allowable
+alternacy
+alternariose
+altricial
+ambitionist
+amendment
+amiableness
+amicableness
+ammo
+amortizable
+anchorate
+anemometrically
+angelocracy
+angelological
+anodal
+anomalure
+antedate
+antiagglutinin
+antirationalist
+antiscorbutic
+antisplasher
+antithesize
+antiunionist
+antoecian
+apolegamic
+appropriation
+archididascalian
+archival
+arteriophlebotomy
+articulable
+asseveration
+assignation
+atelo
+atrienses
+atrophy
+atterminement
+atypic
+automower
+aveloz
+awrist
+azteca
+bairnteam
+balsamweed
+bannerman
+beardy
+becry
+beek
+beggarwise
+bescab
+bestness
+bethel
+bewildering
+bibliophilism
+bitterblain
+blakeberyed
+boccarella
+bocedization
+boobyalla
+bourbon
+bowbent
+bowerbird
+brachygnathous
+brail
+branchiferous
+brelaw
+brew
+brideweed
+bridgeable
+brombenzamide
+buddler
+burbankian
+burr
+buskin
+cacochymical
+calefactory
+caliper
+canaliculus
+candidature
+canellaceous
+canniness
+canning
+cantilene
+carbonatation
+carthamic
+caseum
+caudated
+causationist
+ceruleite
+chalder
+chalta
+charmel
+chekan
+chillness
+chirogymnast
+chirpling
+chlorinous
+cholanthrene
+chondroblast
+chromatography
+chromophilous
+chronical
+cicatrice
+cinchonine
+city
+clubbing
+coastal
+coaxially
+coercible
+coeternity
+coff
+coinventor
+collyba
+combinator
+complanation
+comprehensibility
+conchuela
+congenital
+context
+contranatural
+corallum
+cordately
+cornupete
+corolliferous
+coroneted
+corticosterone
+coseat
+cottage
+crocetin
+crossleted
+crottels
+curvedness
+cycadeous
+cyclism
+cylindrically
+cynanche
+cyrtoceratitic
+cystospasm
+danceress
+dancette
+dawny
+daydreamy
+debar
+decarburization
+decorousness
+decrepitness
+delirious
+deozonizer
+dermatosis
+desma
+deutencephalic
+diacetate
+diarthrodial
+diathermy
+dicolic
+dimastigate
+dimidiation
+dipetto
+disavowable
+disintrench
+disman
+dismay
+disorder
+disoxygenation
+dithionous
+dogman
+dragonfly
+dramatical
+drawspan
+drubbly
+drunk
+duskly
+ecderonic
+ectocuniform
+ectocyst
+ehrwaldite
+electrocute
+elemicin
+embracing
+emotionality
+enactment
+enamor
+enclave
+endameba
+endochylous
+endocrinologist
+endolymph
+endothecal
+entasia
+epigeous
+episcopicide
+epitrichial
+erminee
+erraticalness
+eruptivity
+erythrocytoschisis
+esperance
+estuous
+eucrystalline
+eugeny
+evacuant
+everbloomer
+evocation
+exarchateship
+exasperate
+excorticate
+excrementary
+exile
+expandedly
+exponency
+expressionist
+expulsion
+extemporary
+extollation
+extortive
+extrabulbar
+extraprostatic
+facticide
+fairer
+fakery
+fasibitikite
+fatiscent
+fearless
+febrifuge
+ferie
+fibrousness
+fingered
+fisheye
+flagpole
+flagrantness
+fleche
+fluidism
+folliculin
+footbreadth
+forceps
+forecontrive
+forthbring
+foveated
+fuchsin
+fungicidal
+funori
+gamelang
+gametically
+garvanzo
+gasoliner
+gastrophile
+germproof
+gerontism
+gigantical
+glaciology
+godmotherhood
+gooseherd
+gordunite
+gove
+gracilis
+greathead
+grieveship
+guidable
+gyromancy
+gyrostat
+habitus
+hailweed
+handhole
+hangalai
+haznadar
+heliced
+hemihypertrophy
+hemimorphic
+hemistrumectomy
+heptavalent
+heptite
+herbalist
+herpetology
+hesperid
+hexacarbon
+hieromnemon
+hobbyless
+holodactylic
+homoeoarchy
+hopperings
+hospitable
+houseboat
+huh
+huntedly
+hydroponics
+hydrosomal
+hyperdactylia
+hyperperistalsis
+hypogeocarpous
+ideogram
+idiopathical
+illegitimate
+imambarah
+impotently
+improvise
+impuberal
+inaccurately
+incarnant
+inchoation
+incliner
+incredulous
+indiscriminateness
+indulgenced
+inebriation
+inexpressiveness
+infibulate
+inflectedness
+iniome
+ink
+inquietly
+insaturable
+insinuative
+instiller
+institutive
+insultproof
+interactionist
+intercensal
+interpenetrable
+intertranspicuous
+intrinsicality
+inwards
+iridiocyte
+iridoparalysis
+irreportable
+isoprene
+isosmotic
+izard
+jacuaru
+jaculative
+jerkined
+joe
+joyous
+julienne
+justicehood
+kali
+kalidium
+katha
+kathal
+keelage
+keratomycosis
+khaki
+khedival
+kinkily
+knife
+kolo
+kraken
+kwarta
+labba
+labber
+laboress
+lacunar
+latch
+lauric
+lawter
+lectotype
+leeches
+legible
+lepidosteoid
+leucobasalt
+leverer
+libellate
+limnimeter
+lithography
+lithotypic
+locomotor
+logarithmetically
+logistician
+lyncine
+lysogenesis
+machan
+macromyelon
+maharana
+mandibulate
+manganapatite
+marchpane
+mas
+masochistic
+mastaba
+matching
+meditatively
+megalopolitan
+melaniline
+mentum
+mercaptides
+mestome
+metasomatism
+meterless
+micronuclear
+micropetalous
+microreaction
+microsporophore
+mileway
+milliarium
+millisecond
+misbind
+miscollocation
+misreader
+modernicide
+modification
+modulant
+monkfish
+monoamino
+monocarbide
+monographical
+morphinomaniac
+mullein
+munge
+mutilate
+mycophagist
+myelosarcoma
+myospasm
+myriadly
+nagaika
+naphthionate
+natant
+naviculaeform
+nayward
+neallotype
+necrophilia
+nectared
+neigher
+neogamous
+neurodynia
+neurorthopteran
+nidation
+nieceship
+nitrobacteria
+nitrosification
+nogheaded
+nonassertive
+noneuphonious
+nonextant
+nonincrease
+nonintermittent
+nonmetallic
+nonprehensile
+nonremunerative
+nonsocial
+nonvesting
+noontime
+noreaster
+nounal
+nub
+nucleoplasm
+nullisome
+numero
+numerous
+oblongatal
+observe
+obtusilingual
+obvert
+occipitoatlantal
+oceanside
+ochlophobist
+odontiasis
+opalescence
+opticon
+oraculousness
+orarium
+organically
+orthopedically
+ostosis
+overadvance
+overbuilt
+overdiscouragement
+overdoer
+overhardy
+overjocular
+overmagnify
+overofficered
+overpotent
+overprizer
+overrunner
+overshrink
+oversimply
+oversplash
+ovology
+oxskin
+oxychloride
+oxygenant
+ozokerite
+pactional
+palaeoanthropography
+palaeographical
+palaeopsychology
+palliasse
+palpebral
+pandaric
+pantelegraph
+papicolist
+papulate
+parakinetic
+parasitism
+parochialic
+parochialize
+passionlike
+patch
+paucidentate
+pawnbrokeress
+pecite
+pecky
+pedipulation
+pellitory
+perfilograph
+periblast
+perigemmal
+periost
+periplus
+perishable
+periwig
+permansive
+persistingly
+persymmetrical
+phantom
+phasmatrope
+philocaly
+philogyny
+philosophister
+philotherianism
+phorology
+phototrophic
+phrator
+phratral
+phthisipneumony
+physogastry
+phytologic
+phytoptid
+pianograph
+picqueter
+piculet
+pigeoner
+pimaric
+pinesap
+pist
+planometer
+platano
+playful
+plea
+pleuropneumonic
+plowwoman
+plump
+pluviographical
+pneumocele
+podophthalmate
+polyad
+polythalamian
+poppyhead
+portamento
+portmanteau
+portraitlike
+possible
+potassamide
+powderer
+praepubis
+preanesthetic
+prebarbaric
+predealer
+predomination
+prefactory
+preirrigational
+prelector
+presbytership
+presecure
+preservable
+prespecialist
+preventionism
+prewound
+princely
+priorship
+proannexationist
+proanthropos
+probeable
+probouleutic
+profitless
+proplasma
+prosectorial
+protecting
+protochemistry
+protosulphate
+pseudoataxia
+psilology
+psychoneurotic
+pterygial
+publicist
+purgation
+purplishness
+putatively
+pyracene
+pyrenomycete
+pyromancy
+pyrophone
+quadroon
+quailhead
+qualifier
+quaternal
+rabblelike
+rambunctious
+rapidness
+ratably
+rationalism
+razor
+reannoy
+recultivation
+regulable
+reimplant
+reimposition
+reimprison
+reinjure
+reinspiration
+reintroduce
+remantle
+reprehensibility
+reptant
+require
+resteal
+restful
+returnability
+revisableness
+rewash
+rewhirl
+reyield
+rhizotomy
+rhodamine
+rigwiddie
+rimester
+ripper
+rippet
+rockish
+rockwards
+rollicky
+roosters
+rooted
+rosal
+rozum
+saccharated
+sagamore
+sagy
+salesmanship
+salivous
+sallet
+salta
+saprostomous
+satiation
+sauropsid
+sawarra
+sawback
+scabish
+scabrate
+scampavia
+scientificophilosophical
+scirrosity
+scoliometer
+scolopendrelloid
+secantly
+seignioral
+semibull
+semic
+seminarianism
+semiped
+semiprivate
+semispherical
+semispontaneous
+seneschal
+septendecimal
+serotherapist
+servation
+sesquisulphuret
+severish
+sextipartite
+sextubercular
+shipyard
+shuckpen
+siderosis
+silex
+sillyhow
+silverbelly
+silverbelly
+simulacrum
+sisham
+sixte
+skeiner
+skiapod
+slopped
+slubby
+smalts
+sockmaker
+solute
+somethingness
+somnify
+southwester
+spathilla
+spectrochemical
+sphagnology
+spinales
+spiriting
+spirling
+spirochetemia
+spreadboard
+spurflower
+squawdom
+squeezing
+staircase
+staker
+stamphead
+statolith
+stekan
+stellulate
+stinker
+stomodaea
+streamingly
+strikingness
+strouthocamelian
+stuprum
+subacutely
+subboreal
+subcontractor
+subendorsement
+subprofitable
+subserviate
+subsneer
+subungual
+sucuruju
+sugan
+sulphocarbolate
+summerwood
+superficialist
+superinference
+superregenerative
+supplicate
+suspendible
+synchronizer
+syntectic
+tachyglossate
+tailless
+taintment
+takingly
+taletelling
+tarpon
+tasteful
+taxeater
+taxy
+teache
+teachless
+teg
+tegmen
+teletyper
+temperable
+ten
+tenent
+teskere
+testes
+thallogen
+thapsia
+thewness
+thickety
+thiobacteria
+thorniness
+throwing
+thyroprivic
+tinnitus
+tocalote
+tolerationist
+tonalamatl
+torvous
+totality
+tottering
+toug
+tracheopathia
+tragedical
+translucent
+trifoveolate
+trilaurin
+trophoplasmatic
+trunkless
+turbanless
+turnpiker
+twangle
+twitterboned
+ultraornate
+umbilication
+unabatingly
+unabjured
+unadequateness
+unaffectedness
+unarriving
+unassorted
+unattacked
+unbenumbed
+unboasted
+unburning
+uncensorious
+uncongested
+uncontemnedly
+uncontemporary
+uncrook
+uncrystallizability
+uncurb
+uncustomariness
+underbillow
+undercanopy
+underestimation
+underhanging
+underpetticoated
+underpropped
+undersole
+understocking
+underworld
+undevout
+undisappointing
+undistinctive
+unfiscal
+unfluted
+unfreckled
+ungentilize
+unglobe
+unhelped
+unhomogeneously
+unifoliate
+uninflammable
+uninterrogated
+unisonal
+unkindled
+unlikeableness
+unlisty
+unlocked
+unmoving
+unmultipliable
+unnestled
+unnoticed
+unobservable
+unobviated
+unoffensively
+unofficerlike
+unpoetic
+unpractically
+unquestionableness
+unrehearsed
+unrevised
+unrhetorical
+unsadden
+unsaluting
+unscriptural
+unseeking
+unshowed
+unsolicitous
+unsprouted
+unsubjective
+unsubsidized
+unsymbolic
+untenant
+unterrified
+untranquil
+untraversed
+untrusty
+untying
+unwillful
+unwinding
+upspring
+uptwist
+urachovesical
+uropygial
+vagabondism
+varicoid
+varletess
+vasal
+ventrocaudal
+verisimilitude
+vermigerous
+vibrometer
+viminal
+virus
+vocationalism
+voguey
+vulnerability
+waggle
+wamblingly
+warmus
+waxer
+waying
+wedgeable
+wellmaker
+whomever
+wigged
+witchlike
+wokas
+woodrowel
+woodsman
+woolding
+xanthelasmic
+xiphosternum
+yachtman
+yachtsmanlike
+yelp
+zoophytal \ No newline at end of file
diff --git a/tests/phpunit/includes/db/DatabaseSqliteTest.php b/tests/phpunit/includes/db/DatabaseSqliteTest.php
new file mode 100644
index 00000000..914ab27c
--- /dev/null
+++ b/tests/phpunit/includes/db/DatabaseSqliteTest.php
@@ -0,0 +1,312 @@
+<?php
+
+class MockDatabaseSqlite extends DatabaseSqliteStandalone {
+ var $lastQuery;
+
+ function __construct( ) {
+ parent::__construct( ':memory:' );
+ }
+
+ function query( $sql, $fname = '', $tempIgnore = false ) {
+ $this->lastQuery = $sql;
+ return true;
+ }
+
+ function replaceVars( $s ) {
+ return parent::replaceVars( $s );
+ }
+}
+
+/**
+ * @group sqlite
+ */
+class DatabaseSqliteTest extends MediaWikiTestCase {
+ var $db;
+
+ public function setUp() {
+ if ( !Sqlite::isPresent() ) {
+ $this->markTestSkipped( 'No SQLite support detected' );
+ }
+ $this->db = new MockDatabaseSqlite();
+ if ( version_compare( $this->db->getServerVersion(), '3.6.0', '<' ) ) {
+ $this->markTestSkipped( "SQLite at least 3.6 required, {$this->db->getServerVersion()} found" );
+ }
+ }
+
+ private function replaceVars( $sql ) {
+ // normalize spacing to hide implementation details
+ return preg_replace( '/\s+/', ' ', $this->db->replaceVars( $sql ) );
+ }
+
+ private function assertResultIs( $expected, $res ) {
+ $this->assertNotNull( $res );
+ $i = 0;
+ foreach( $res as $row ) {
+ foreach( $expected[$i] as $key => $value ) {
+ $this->assertTrue( isset( $row->$key ) );
+ $this->assertEquals( $value, $row->$key );
+ }
+ $i++;
+ }
+ $this->assertEquals( count( $expected ), $i, 'Unexpected number of rows' );
+ }
+
+ public function testReplaceVars() {
+ $this->assertEquals( 'foo', $this->replaceVars( 'foo' ), "Don't break anything accidentally" );
+
+ $this->assertEquals( "CREATE TABLE /**/foo (foo_key INTEGER NOT NULL PRIMARY KEY AUTOINCREMENT, "
+ . "foo_bar TEXT, foo_name TEXT NOT NULL DEFAULT '', foo_int INTEGER, foo_int2 INTEGER );",
+ $this->replaceVars( "CREATE TABLE /**/foo (foo_key int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ foo_bar char(13), foo_name varchar(255) binary NOT NULL DEFAULT '', foo_int tinyint ( 8 ), foo_int2 int(16) ) ENGINE=MyISAM;" )
+ );
+
+ $this->assertEquals( "CREATE TABLE foo ( foo1 REAL, foo2 REAL, foo3 REAL );",
+ $this->replaceVars( "CREATE TABLE foo ( foo1 FLOAT, foo2 DOUBLE( 1,10), foo3 DOUBLE PRECISION );" )
+ );
+
+ $this->assertEquals( "CREATE TABLE foo ( foo_binary1 BLOB, foo_binary2 BLOB );",
+ $this->replaceVars( "CREATE TABLE foo ( foo_binary1 binary(16), foo_binary2 varbinary(32) );" )
+ );
+
+ $this->assertEquals( "CREATE TABLE text ( text_foo TEXT );",
+ $this->replaceVars( "CREATE TABLE text ( text_foo tinytext );" ),
+ 'Table name changed'
+ );
+
+ $this->assertEquals( "CREATE TABLE foo ( foobar INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL );",
+ $this->replaceVars("CREATE TABLE foo ( foobar INT PRIMARY KEY NOT NULL AUTO_INCREMENT );" )
+ );
+ $this->assertEquals( "CREATE TABLE foo ( foobar INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL );",
+ $this->replaceVars("CREATE TABLE foo ( foobar INT PRIMARY KEY AUTO_INCREMENT NOT NULL );" )
+ );
+
+ $this->assertEquals( "CREATE TABLE enums( enum1 TEXT, myenum TEXT)",
+ $this->replaceVars( "CREATE TABLE enums( enum1 ENUM('A', 'B'), myenum ENUM ('X', 'Y'))" )
+ );
+
+ $this->assertEquals( "ALTER TABLE foo ADD COLUMN foo_bar INTEGER DEFAULT 42",
+ $this->replaceVars( "ALTER TABLE foo\nADD COLUMN foo_bar int(10) unsigned DEFAULT 42" )
+ );
+ }
+
+ public function testTableName() {
+ // @todo Moar!
+ $db = new DatabaseSqliteStandalone( ':memory:' );
+ $this->assertEquals( 'foo', $db->tableName( 'foo' ) );
+ $this->assertEquals( 'sqlite_master', $db->tableName( 'sqlite_master' ) );
+ $db->tablePrefix( 'foo' );
+ $this->assertEquals( 'sqlite_master', $db->tableName( 'sqlite_master' ) );
+ $this->assertEquals( 'foobar', $db->tableName( 'bar' ) );
+ }
+
+ public function testDuplicateTableStructure() {
+ $db = new DatabaseSqliteStandalone( ':memory:' );
+ $db->query( 'CREATE TABLE foo(foo, barfoo)' );
+
+ $db->duplicateTableStructure( 'foo', 'bar' );
+ $this->assertEquals( 'CREATE TABLE "bar"(foo, barfoo)',
+ $db->selectField( 'sqlite_master', 'sql', array( 'name' => 'bar' ) ),
+ 'Normal table duplication'
+ );
+
+ $db->duplicateTableStructure( 'foo', 'baz', true );
+ $this->assertEquals( 'CREATE TABLE "baz"(foo, barfoo)',
+ $db->selectField( 'sqlite_temp_master', 'sql', array( 'name' => 'baz' ) ),
+ 'Creation of temporary duplicate'
+ );
+ $this->assertEquals( 0,
+ $db->selectField( 'sqlite_master', 'COUNT(*)', array( 'name' => 'baz' ) ),
+ 'Create a temporary duplicate only'
+ );
+ }
+
+ public function testDuplicateTableStructureVirtual() {
+ $db = new DatabaseSqliteStandalone( ':memory:' );
+ if ( $db->getFulltextSearchModule() != 'FTS3' ) {
+ $this->markTestSkipped( 'FTS3 not supported, cannot create virtual tables' );
+ }
+ $db->query( 'CREATE VIRTUAL TABLE "foo" USING FTS3(foobar)' );
+
+ $db->duplicateTableStructure( 'foo', 'bar' );
+ $this->assertEquals( 'CREATE VIRTUAL TABLE "bar" USING FTS3(foobar)',
+ $db->selectField( 'sqlite_master', 'sql', array( 'name' => 'bar' ) ),
+ 'Duplication of virtual tables'
+ );
+
+ $db->duplicateTableStructure( 'foo', 'baz', true );
+ $this->assertEquals( 'CREATE VIRTUAL TABLE "baz" USING FTS3(foobar)',
+ $db->selectField( 'sqlite_master', 'sql', array( 'name' => 'baz' ) ),
+ "Can't create temporary virtual tables, should fall back to non-temporary duplication"
+ );
+ }
+
+ public function testDeleteJoin() {
+ $db = new DatabaseSqliteStandalone( ':memory:' );
+ $db->query( 'CREATE TABLE a (a_1)', __METHOD__ );
+ $db->query( 'CREATE TABLE b (b_1, b_2)', __METHOD__ );
+ $db->insert( 'a', array(
+ array( 'a_1' => 1 ),
+ array( 'a_1' => 2 ),
+ array( 'a_1' => 3 ),
+ ),
+ __METHOD__
+ );
+ $db->insert( 'b', array(
+ array( 'b_1' => 2, 'b_2' => 'a' ),
+ array( 'b_1' => 3, 'b_2' => 'b' ),
+ ),
+ __METHOD__
+ );
+ $db->deleteJoin( 'a', 'b', 'a_1', 'b_1', array( 'b_2' => 'a' ), __METHOD__ );
+ $res = $db->query( "SELECT * FROM a", __METHOD__ );
+ $this->assertResultIs( array(
+ array( 'a_1' => 1 ),
+ array( 'a_1' => 3 ),
+ ),
+ $res
+ );
+ }
+
+ public function testEntireSchema() {
+ global $IP;
+
+ $result = Sqlite::checkSqlSyntax( "$IP/maintenance/tables.sql" );
+ if ( $result !== true ) {
+ $this->fail( $result );
+ }
+ $this->assertTrue( true ); // avoid test being marked as incomplete due to lack of assertions
+ }
+
+ /**
+ * Runs upgrades of older databases and compares results with current schema
+ * @todo: currently only checks list of tables
+ */
+ public function testUpgrades() {
+ global $IP, $wgVersion;
+
+ // Versions tested
+ $versions = array(
+ //'1.13', disabled for now, was totally screwed up
+ // SQLite wasn't included in 1.14
+ '1.15',
+ '1.16',
+ '1.17',
+ );
+
+ // Mismatches for these columns we can safely ignore
+ $ignoredColumns = array(
+ 'user_newtalk.user_last_timestamp', // r84185
+ );
+
+ $currentDB = new DatabaseSqliteStandalone( ':memory:' );
+ $currentDB->sourceFile( "$IP/maintenance/tables.sql" );
+ $currentTables = $this->getTables( $currentDB );
+ sort( $currentTables );
+
+ foreach ( $versions as $version ) {
+ $versions = "upgrading from $version to $wgVersion";
+ $db = $this->prepareDB( $version );
+ $tables = $this->getTables( $db );
+ $this->assertEquals( $currentTables, $tables, "Different tables $versions" );
+ foreach ( $tables as $table ) {
+ $currentCols = $this->getColumns( $currentDB, $table );
+ $cols = $this->getColumns( $db, $table );
+ $this->assertEquals(
+ array_keys( $currentCols ),
+ array_keys( $cols ),
+ "Mismatching columns for table \"$table\" $versions"
+ );
+ foreach ( $currentCols as $name => $column ) {
+ $fullName = "$table.$name";
+ $this->assertEquals(
+ (bool)$column->pk,
+ (bool)$cols[$name]->pk,
+ "PRIMARY KEY status does not match for column $fullName $versions"
+ );
+ if ( !in_array( $fullName, $ignoredColumns ) ) {
+ $this->assertEquals(
+ (bool)$column->notnull,
+ (bool)$cols[$name]->notnull,
+ "NOT NULL status does not match for column $fullName $versions"
+ );
+ $this->assertEquals(
+ $column->dflt_value,
+ $cols[$name]->dflt_value,
+ "Default values does not match for column $fullName $versions"
+ );
+ }
+ }
+ $currentIndexes = $this->getIndexes( $currentDB, $table );
+ $indexes = $this->getIndexes( $db, $table );
+ $this->assertEquals(
+ array_keys( $currentIndexes ),
+ array_keys( $indexes ),
+ "mismatching indexes for table \"$table\" $versions"
+ );
+ }
+ $db->close();
+ }
+ }
+
+ private function prepareDB( $version ) {
+ static $maint = null;
+ if ( $maint === null ) {
+ $maint = new FakeMaintenance();
+ $maint->loadParamsAndArgs( null, array( 'quiet' => 1 ) );
+ }
+
+ $db = new DatabaseSqliteStandalone( ':memory:' );
+ $db->sourceFile( dirname( __FILE__ ) . "/sqlite/tables-$version.sql" );
+ $updater = DatabaseUpdater::newForDB( $db, false, $maint );
+ $updater->doUpdates( array( 'core' ) );
+ return $db;
+ }
+
+ private function getTables( $db ) {
+ $list = array_flip( $db->listTables() );
+ $excluded = array(
+ 'math', // moved out of core in 1.18
+ 'searchindex',
+ 'searchindex_content',
+ 'searchindex_segments',
+ 'searchindex_segdir',
+ // FTS4 ready!!1
+ 'searchindex_docsize',
+ 'searchindex_stat',
+ );
+ foreach ( $excluded as $t ) {
+ unset( $list[$t] );
+ }
+ $list = array_flip( $list );
+ sort( $list );
+ return $list;
+ }
+
+ private function getColumns( $db, $table ) {
+ $cols = array();
+ $res = $db->query( "PRAGMA table_info($table)" );
+ $this->assertNotNull( $res );
+ foreach ( $res as $col ) {
+ $cols[$col->name] = $col;
+ }
+ ksort( $cols );
+ return $cols;
+ }
+
+ private function getIndexes( $db, $table ) {
+ $indexes = array();
+ $res = $db->query( "PRAGMA index_list($table)" );
+ $this->assertNotNull( $res );
+ foreach ( $res as $index ) {
+ $res2 = $db->query( "PRAGMA index_info({$index->name})" );
+ $this->assertNotNull( $res2 );
+ $index->columns = array();
+ foreach ( $res2 as $col ) {
+ $index->columns[] = $col;
+ }
+ $indexes[$index->name] = $index;
+ }
+ ksort( $indexes );
+ return $indexes;
+ }
+}
diff --git a/tests/phpunit/includes/db/DatabaseTest.php b/tests/phpunit/includes/db/DatabaseTest.php
new file mode 100644
index 00000000..d480ac6e
--- /dev/null
+++ b/tests/phpunit/includes/db/DatabaseTest.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * @group Database
+ */
+class DatabaseTest extends MediaWikiTestCase {
+ var $db;
+
+ function setUp() {
+ $this->db = wfGetDB( DB_SLAVE );
+ }
+
+ function testAddQuotesNull() {
+ $check = "NULL";
+ if ( $this->db->getType() === 'sqlite' || $this->db->getType() === 'oracle' ) {
+ $check = "''";
+ }
+ $this->assertEquals( $check, $this->db->addQuotes( null ) );
+ }
+
+ function testAddQuotesInt() {
+ # returning just "1234" should be ok too, though...
+ # maybe
+ $this->assertEquals(
+ "'1234'",
+ $this->db->addQuotes( 1234 ) );
+ }
+
+ function testAddQuotesFloat() {
+ # returning just "1234.5678" would be ok too, though
+ $this->assertEquals(
+ "'1234.5678'",
+ $this->db->addQuotes( 1234.5678 ) );
+ }
+
+ function testAddQuotesString() {
+ $this->assertEquals(
+ "'string'",
+ $this->db->addQuotes( 'string' ) );
+ }
+
+ function testAddQuotesStringQuote() {
+ $check = "'string''s cause trouble'";
+ if ( $this->db->getType() === 'mysql' ) {
+ $check = "'string\'s cause trouble'";
+ }
+ $this->assertEquals(
+ $check,
+ $this->db->addQuotes( "string's cause trouble" ) );
+ }
+
+ function testFillPreparedEmpty() {
+ $sql = $this->db->fillPrepared(
+ 'SELECT * FROM interwiki', array() );
+ $this->assertEquals(
+ "SELECT * FROM interwiki",
+ $sql );
+ }
+
+ function testFillPreparedQuestion() {
+ $sql = $this->db->fillPrepared(
+ 'SELECT * FROM cur WHERE cur_namespace=? AND cur_title=?',
+ array( 4, "Snicker's_paradox" ) );
+
+ $check = "SELECT * FROM cur WHERE cur_namespace='4' AND cur_title='Snicker''s_paradox'";
+ if ( $this->db->getType() === 'mysql' ) {
+ $check = "SELECT * FROM cur WHERE cur_namespace='4' AND cur_title='Snicker\'s_paradox'";
+ }
+ $this->assertEquals( $check, $sql );
+ }
+
+ function testFillPreparedBang() {
+ $sql = $this->db->fillPrepared(
+ 'SELECT user_id FROM ! WHERE user_name=?',
+ array( '"user"', "Slash's Dot" ) );
+
+ $check = "SELECT user_id FROM \"user\" WHERE user_name='Slash''s Dot'";
+ if ( $this->db->getType() === 'mysql' ) {
+ $check = "SELECT user_id FROM \"user\" WHERE user_name='Slash\'s Dot'";
+ }
+ $this->assertEquals( $check, $sql );
+ }
+
+ function testFillPreparedRaw() {
+ $sql = $this->db->fillPrepared(
+ "SELECT * FROM cur WHERE cur_title='This_\\&_that,_WTF\\?\\!'",
+ array( '"user"', "Slash's Dot" ) );
+ $this->assertEquals(
+ "SELECT * FROM cur WHERE cur_title='This_&_that,_WTF?!'",
+ $sql );
+ }
+
+}
+
+
diff --git a/tests/phpunit/includes/db/sqlite/tables-1.13.sql b/tests/phpunit/includes/db/sqlite/tables-1.13.sql
new file mode 100644
index 00000000..a0dcb553
--- /dev/null
+++ b/tests/phpunit/includes/db/sqlite/tables-1.13.sql
@@ -0,0 +1,342 @@
+-- This is a copy of SQLite schema from MediaWiki 1.13 used for updater testing
+
+CREATE TABLE /*$wgDBprefix*/user (
+ user_id INTEGER PRIMARY KEY AUTOINCREMENT,
+ user_name varchar(255) default '',
+ user_real_name varchar(255) default '',
+ user_password tinyblob ,
+ user_newpassword tinyblob ,
+ user_newpass_time BLOB,
+ user_email tinytext ,
+ user_options blob ,
+ user_touched BLOB default '',
+ user_token BLOB default '',
+ user_email_authenticated BLOB,
+ user_email_token BLOB,
+ user_email_token_expires BLOB,
+ user_registration BLOB,
+ user_editcount int) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/user_groups (
+ ug_user INTEGER default '0',
+ ug_group varBLOB default '') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/user_newtalk (
+ user_id INTEGER default '0',
+ user_ip varBLOB default '',
+ user_last_timestamp BLOB default '') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/page (
+ page_id INTEGER PRIMARY KEY AUTOINCREMENT,
+ page_namespace INTEGER ,
+ page_title varchar(255) ,
+ page_restrictions tinyblob ,
+ page_counter bigint default '0',
+ page_is_redirect tinyint default '0',
+ page_is_new tinyint default '0',
+ page_random real ,
+ page_touched BLOB default '',
+ page_latest INTEGER ,
+ page_len INTEGER ) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/revision (
+ rev_id INTEGER PRIMARY KEY AUTOINCREMENT,
+ rev_page INTEGER ,
+ rev_text_id INTEGER ,
+ rev_comment tinyblob ,
+ rev_user INTEGER default '0',
+ rev_user_text varchar(255) default '',
+ rev_timestamp BLOB default '',
+ rev_minor_edit tinyint default '0',
+ rev_deleted tinyint default '0',
+ rev_len int,
+ rev_parent_id INTEGER default NULL) /*$wgDBTableOptions*/ ;
+
+CREATE TABLE /*$wgDBprefix*/text (
+ old_id INTEGER PRIMARY KEY AUTOINCREMENT,
+ old_text mediumblob ,
+ old_flags tinyblob ) /*$wgDBTableOptions*/ ;
+
+CREATE TABLE /*$wgDBprefix*/archive (
+ ar_namespace INTEGER default '0',
+ ar_title varchar(255) default '',
+ ar_text mediumblob ,
+ ar_comment tinyblob ,
+ ar_user INTEGER default '0',
+ ar_user_text varchar(255) ,
+ ar_timestamp BLOB default '',
+ ar_minor_edit tinyint default '0',
+ ar_flags tinyblob ,
+ ar_rev_id int,
+ ar_text_id int,
+ ar_deleted tinyint default '0',
+ ar_len int,
+ ar_page_id int,
+ ar_parent_id INTEGER default NULL) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/pagelinks (
+ pl_from INTEGER default '0',
+ pl_namespace INTEGER default '0',
+ pl_title varchar(255) default '') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/templatelinks (
+ tl_from INTEGER default '0',
+ tl_namespace INTEGER default '0',
+ tl_title varchar(255) default '') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/imagelinks (
+ il_from INTEGER default '0',
+ il_to varchar(255) default '') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/categorylinks (
+ cl_from INTEGER default '0',
+ cl_to varchar(255) default '',
+ cl_sortkey varchar(70) default '',
+ cl_timestamp timestamp ) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/category (
+ cat_id INTEGER PRIMARY KEY AUTOINCREMENT,
+ cat_title varchar(255) ,
+ cat_pages INTEGER signed default 0,
+ cat_subcats INTEGER signed default 0,
+ cat_files INTEGER signed default 0,
+ cat_hidden tinyint default 0) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/externallinks (
+ el_from INTEGER default '0',
+ el_to blob ,
+ el_index blob ) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/langlinks (
+ ll_from INTEGER default '0',
+ ll_lang varBLOB default '',
+ ll_title varchar(255) default '') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/site_stats (
+ ss_row_id INTEGER ,
+ ss_total_views bigint default '0',
+ ss_total_edits bigint default '0',
+ ss_good_articles bigint default '0',
+ ss_total_pages bigint default '-1',
+ ss_users bigint default '-1',
+ ss_admins INTEGER default '-1',
+ ss_images INTEGER default '0') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/hitcounter (
+ hc_id INTEGER
+) ;
+
+CREATE TABLE /*$wgDBprefix*/ipblocks (
+ ipb_id INTEGER PRIMARY KEY AUTOINCREMENT,
+ ipb_address tinyblob ,
+ ipb_user INTEGER default '0',
+ ipb_by INTEGER default '0',
+ ipb_by_text varchar(255) default '',
+ ipb_reason tinyblob ,
+ ipb_timestamp BLOB default '',
+ ipb_auto bool default 0,
+ ipb_anon_only bool default 0,
+ ipb_create_account bool default 1,
+ ipb_enable_autoblock bool default '1',
+ ipb_expiry varBLOB default '',
+ ipb_range_start tinyblob ,
+ ipb_range_end tinyblob ,
+ ipb_deleted bool default 0,
+ ipb_block_email bool default 0) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/image (
+ img_name varchar(255) default '',
+ img_size INTEGER default '0',
+ img_width INTEGER default '0',
+ img_height INTEGER default '0',
+ img_metadata mediumblob ,
+ img_bits INTEGER default '0',
+ img_media_type TEXT default NULL,
+ img_major_mime TEXT default "unknown",
+ img_minor_mime varBLOB default "unknown",
+ img_description tinyblob ,
+ img_user INTEGER default '0',
+ img_user_text varchar(255) ,
+ img_timestamp varBLOB default '',
+ img_sha1 varBLOB default '') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/oldimage (
+ oi_name varchar(255) default '',
+ oi_archive_name varchar(255) default '',
+ oi_size INTEGER default 0,
+ oi_width INTEGER default 0,
+ oi_height INTEGER default 0,
+ oi_bits INTEGER default 0,
+ oi_description tinyblob ,
+ oi_user INTEGER default '0',
+ oi_user_text varchar(255) ,
+ oi_timestamp BLOB default '',
+ oi_metadata mediumblob ,
+ oi_media_type TEXT default NULL,
+ oi_major_mime TEXT default "unknown",
+ oi_minor_mime varBLOB default "unknown",
+ oi_deleted tinyint default '0',
+ oi_sha1 varBLOB default '') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/filearchive (
+ fa_id INTEGER PRIMARY KEY AUTOINCREMENT,
+ fa_name varchar(255) default '',
+ fa_archive_name varchar(255) default '',
+ fa_storage_group varBLOB,
+ fa_storage_key varBLOB default '',
+ fa_deleted_user int,
+ fa_deleted_timestamp BLOB default '',
+ fa_deleted_reason text,
+ fa_size INTEGER default '0',
+ fa_width INTEGER default '0',
+ fa_height INTEGER default '0',
+ fa_metadata mediumblob,
+ fa_bits INTEGER default '0',
+ fa_media_type TEXT default NULL,
+ fa_major_mime TEXT default "unknown",
+ fa_minor_mime varBLOB default "unknown",
+ fa_description tinyblob,
+ fa_user INTEGER default '0',
+ fa_user_text varchar(255) ,
+ fa_timestamp BLOB default '',
+ fa_deleted tinyint default '0') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/recentchanges (
+ rc_id INTEGER PRIMARY KEY AUTOINCREMENT,
+ rc_timestamp varBLOB default '',
+ rc_cur_time varBLOB default '',
+ rc_user INTEGER default '0',
+ rc_user_text varchar(255) ,
+ rc_namespace INTEGER default '0',
+ rc_title varchar(255) default '',
+ rc_comment varchar(255) default '',
+ rc_minor tinyint default '0',
+ rc_bot tinyint default '0',
+ rc_new tinyint default '0',
+ rc_cur_id INTEGER default '0',
+ rc_this_oldid INTEGER default '0',
+ rc_last_oldid INTEGER default '0',
+ rc_type tinyint default '0',
+ rc_moved_to_ns tinyint default '0',
+ rc_moved_to_title varchar(255) default '',
+ rc_patrolled tinyint default '0',
+ rc_ip varBLOB default '',
+ rc_old_len int,
+ rc_new_len int,
+ rc_deleted tinyint default '0',
+ rc_logid INTEGER default '0',
+ rc_log_type varBLOB NULL default NULL,
+ rc_log_action varBLOB NULL default NULL,
+ rc_params blob NULL) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/watchlist (
+ wl_user INTEGER ,
+ wl_namespace INTEGER default '0',
+ wl_title varchar(255) default '',
+ wl_notificationtimestamp varBLOB) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/math (
+ math_inputhash varBLOB ,
+ math_outputhash varBLOB ,
+ math_html_conservativeness tinyint ,
+ math_html text,
+ math_mathml text) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/searchindex (
+ si_page INTEGER ,
+ si_title varchar(255) default '',
+ si_text mediumtext ) ;
+
+CREATE TABLE /*$wgDBprefix*/interwiki (
+ iw_prefix varchar(32) ,
+ iw_url blob ,
+ iw_local bool ,
+ iw_trans tinyint default 0) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/querycache (
+ qc_type varBLOB ,
+ qc_value INTEGER default '0',
+ qc_namespace INTEGER default '0',
+ qc_title varchar(255) default '') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/objectcache (
+ keyname varBLOB default '',
+ value mediumblob,
+ exptime datetime) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/transcache (
+ tc_url varBLOB ,
+ tc_contents text,
+ tc_time INTEGER ) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/logging (
+ log_id INTEGER PRIMARY KEY AUTOINCREMENT,
+ log_type varBLOB default '',
+ log_action varBLOB default '',
+ log_timestamp BLOB default '19700101000000',
+ log_user INTEGER default 0,
+ log_namespace INTEGER default 0,
+ log_title varchar(255) default '',
+ log_comment varchar(255) default '',
+ log_params blob ,
+ log_deleted tinyint default '0') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/trackbacks (
+ tb_id INTEGER PRIMARY KEY AUTOINCREMENT,
+ tb_page INTEGER REFERENCES /*$wgDBprefix*/page(page_id) ON DELETE CASCADE,
+ tb_title varchar(255) ,
+ tb_url blob ,
+ tb_ex text,
+ tb_name varchar(255)) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/job (
+ job_id INTEGER PRIMARY KEY AUTOINCREMENT,
+ job_cmd varBLOB default '',
+ job_namespace INTEGER ,
+ job_title varchar(255) ,
+ job_params blob ) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/querycache_info (
+ qci_type varBLOB default '',
+ qci_timestamp BLOB default '19700101000000') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/redirect (
+ rd_from INTEGER default '0',
+ rd_namespace INTEGER default '0',
+ rd_title varchar(255) default '') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/querycachetwo (
+ qcc_type varBLOB ,
+ qcc_value INTEGER default '0',
+ qcc_namespace INTEGER default '0',
+ qcc_title varchar(255) default '',
+ qcc_namespacetwo INTEGER default '0',
+ qcc_titletwo varchar(255) default '') /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/page_restrictions (
+ pr_page INTEGER ,
+ pr_type varBLOB ,
+ pr_level varBLOB ,
+ pr_cascade tinyint ,
+ pr_user INTEGER NULL,
+ pr_expiry varBLOB NULL,
+ pr_id INTEGER PRIMARY KEY AUTOINCREMENT) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/protected_titles (
+ pt_namespace INTEGER ,
+ pt_title varchar(255) ,
+ pt_user INTEGER ,
+ pt_reason tinyblob,
+ pt_timestamp BLOB ,
+ pt_expiry varBLOB default '',
+ pt_create_perm varBLOB ) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/page_props (
+ pp_page INTEGER ,
+ pp_propname varBLOB ,
+ pp_value blob ) /*$wgDBTableOptions*/;
+
+CREATE TABLE /*$wgDBprefix*/updatelog (
+ ul_key varchar(255) ) /*$wgDBTableOptions*/;
+
+
diff --git a/tests/phpunit/includes/db/sqlite/tables-1.15.sql b/tests/phpunit/includes/db/sqlite/tables-1.15.sql
new file mode 100644
index 00000000..901bac52
--- /dev/null
+++ b/tests/phpunit/includes/db/sqlite/tables-1.15.sql
@@ -0,0 +1,454 @@
+-- This is a copy of MediaWiki 1.15 schema shared by MySQL and SQLite.
+-- It is used for updater testing. Comments are stripped to decrease
+-- file size, as we don't need to maintain it.
+
+CREATE TABLE /*_*/user (
+ user_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ user_name varchar(255) binary NOT NULL default '',
+ user_real_name varchar(255) binary NOT NULL default '',
+ user_password tinyblob NOT NULL,
+ user_newpassword tinyblob NOT NULL,
+ user_newpass_time binary(14),
+ user_email tinytext NOT NULL,
+ user_options blob NOT NULL,
+ user_touched binary(14) NOT NULL default '',
+ user_token binary(32) NOT NULL default '',
+ user_email_authenticated binary(14),
+ user_email_token binary(32),
+ user_email_token_expires binary(14),
+ user_registration binary(14),
+ user_editcount int
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/user_name ON /*_*/user (user_name);
+CREATE INDEX /*i*/user_email_token ON /*_*/user (user_email_token);
+CREATE TABLE /*_*/user_groups (
+ ug_user int unsigned NOT NULL default 0,
+ ug_group varbinary(16) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ug_user_group ON /*_*/user_groups (ug_user,ug_group);
+CREATE INDEX /*i*/ug_group ON /*_*/user_groups (ug_group);
+CREATE TABLE /*_*/user_newtalk (
+ user_id int NOT NULL default 0,
+ user_ip varbinary(40) NOT NULL default '',
+ user_last_timestamp binary(14) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/un_user_id ON /*_*/user_newtalk (user_id);
+CREATE INDEX /*i*/un_user_ip ON /*_*/user_newtalk (user_ip);
+CREATE TABLE /*_*/page (
+ page_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ page_namespace int NOT NULL,
+ page_title varchar(255) binary NOT NULL,
+ page_restrictions tinyblob NOT NULL,
+ page_counter bigint unsigned NOT NULL default 0,
+ page_is_redirect tinyint unsigned NOT NULL default 0,
+ page_is_new tinyint unsigned NOT NULL default 0,
+ page_random real unsigned NOT NULL,
+ page_touched binary(14) NOT NULL default '',
+ page_latest int unsigned NOT NULL,
+ page_len int unsigned NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/name_title ON /*_*/page (page_namespace,page_title);
+CREATE INDEX /*i*/page_random ON /*_*/page (page_random);
+CREATE INDEX /*i*/page_len ON /*_*/page (page_len);
+CREATE TABLE /*_*/revision (
+ rev_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ rev_page int unsigned NOT NULL,
+ rev_text_id int unsigned NOT NULL,
+ rev_comment tinyblob NOT NULL,
+ rev_user int unsigned NOT NULL default 0,
+ rev_user_text varchar(255) binary NOT NULL default '',
+ rev_timestamp binary(14) NOT NULL default '',
+ rev_minor_edit tinyint unsigned NOT NULL default 0,
+ rev_deleted tinyint unsigned NOT NULL default 0,
+ rev_len int unsigned,
+ rev_parent_id int unsigned default NULL
+) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
+CREATE UNIQUE INDEX /*i*/rev_page_id ON /*_*/revision (rev_page, rev_id);
+CREATE INDEX /*i*/rev_timestamp ON /*_*/revision (rev_timestamp);
+CREATE INDEX /*i*/page_timestamp ON /*_*/revision (rev_page,rev_timestamp);
+CREATE INDEX /*i*/user_timestamp ON /*_*/revision (rev_user,rev_timestamp);
+CREATE INDEX /*i*/usertext_timestamp ON /*_*/revision (rev_user_text,rev_timestamp);
+CREATE TABLE /*_*/text (
+ old_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ old_text mediumblob NOT NULL,
+ old_flags tinyblob NOT NULL
+) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=10240;
+CREATE TABLE /*_*/archive (
+ ar_namespace int NOT NULL default 0,
+ ar_title varchar(255) binary NOT NULL default '',
+ ar_text mediumblob NOT NULL,
+ ar_comment tinyblob NOT NULL,
+ ar_user int unsigned NOT NULL default 0,
+ ar_user_text varchar(255) binary NOT NULL,
+ ar_timestamp binary(14) NOT NULL default '',
+ ar_minor_edit tinyint NOT NULL default 0,
+ ar_flags tinyblob NOT NULL,
+ ar_rev_id int unsigned,
+ ar_text_id int unsigned,
+ ar_deleted tinyint unsigned NOT NULL default 0,
+ ar_len int unsigned,
+ ar_page_id int unsigned,
+ ar_parent_id int unsigned default NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp);
+CREATE INDEX /*i*/ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp);
+CREATE TABLE /*_*/pagelinks (
+ pl_from int unsigned NOT NULL default 0,
+ pl_namespace int NOT NULL default 0,
+ pl_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/pl_from ON /*_*/pagelinks (pl_from,pl_namespace,pl_title);
+CREATE UNIQUE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from);
+CREATE TABLE /*_*/templatelinks (
+ tl_from int unsigned NOT NULL default 0,
+ tl_namespace int NOT NULL default 0,
+ tl_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/tl_from ON /*_*/templatelinks (tl_from,tl_namespace,tl_title);
+CREATE UNIQUE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from);
+CREATE TABLE /*_*/imagelinks (
+ il_from int unsigned NOT NULL default 0,
+ il_to varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/il_from ON /*_*/imagelinks (il_from,il_to);
+CREATE UNIQUE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from);
+CREATE TABLE /*_*/categorylinks (
+ cl_from int unsigned NOT NULL default 0,
+ cl_to varchar(255) binary NOT NULL default '',
+ cl_sortkey varchar(70) binary NOT NULL default '',
+ cl_timestamp timestamp NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/cl_from ON /*_*/categorylinks (cl_from,cl_to);
+CREATE INDEX /*i*/cl_sortkey ON /*_*/categorylinks (cl_to,cl_sortkey,cl_from);
+CREATE INDEX /*i*/cl_timestamp ON /*_*/categorylinks (cl_to,cl_timestamp);
+CREATE TABLE /*_*/category (
+ cat_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ cat_title varchar(255) binary NOT NULL,
+ cat_pages int signed NOT NULL default 0,
+ cat_subcats int signed NOT NULL default 0,
+ cat_files int signed NOT NULL default 0,
+ cat_hidden tinyint unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/cat_title ON /*_*/category (cat_title);
+CREATE INDEX /*i*/cat_pages ON /*_*/category (cat_pages);
+CREATE TABLE /*_*/externallinks (
+ el_from int unsigned NOT NULL default 0,
+ el_to blob NOT NULL,
+ el_index blob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/el_from ON /*_*/externallinks (el_from, el_to(40));
+CREATE INDEX /*i*/el_to ON /*_*/externallinks (el_to(60), el_from);
+CREATE INDEX /*i*/el_index ON /*_*/externallinks (el_index(60));
+CREATE TABLE /*_*/langlinks (
+ ll_from int unsigned NOT NULL default 0,
+
+ ll_lang varbinary(20) NOT NULL default '',
+ ll_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ll_from ON /*_*/langlinks (ll_from, ll_lang);
+CREATE INDEX /*i*/ll_lang ON /*_*/langlinks (ll_lang, ll_title);
+CREATE TABLE /*_*/site_stats (
+ ss_row_id int unsigned NOT NULL,
+ ss_total_views bigint unsigned default 0,
+ ss_total_edits bigint unsigned default 0,
+ ss_good_articles bigint unsigned default 0,
+ ss_total_pages bigint default '-1',
+ ss_users bigint default '-1',
+ ss_active_users bigint default '-1',
+ ss_admins int default '-1',
+ ss_images int default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ss_row_id ON /*_*/site_stats (ss_row_id);
+CREATE TABLE /*_*/hitcounter (
+ hc_id int unsigned NOT NULL
+) ENGINE=HEAP MAX_ROWS=25000;
+CREATE TABLE /*_*/ipblocks (
+ ipb_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ ipb_address tinyblob NOT NULL,
+ ipb_user int unsigned NOT NULL default 0,
+ ipb_by int unsigned NOT NULL default 0,
+ ipb_by_text varchar(255) binary NOT NULL default '',
+ ipb_reason tinyblob NOT NULL,
+ ipb_timestamp binary(14) NOT NULL default '',
+ ipb_auto bool NOT NULL default 0,
+ ipb_anon_only bool NOT NULL default 0,
+ ipb_create_account bool NOT NULL default 1,
+ ipb_enable_autoblock bool NOT NULL default '1',
+ ipb_expiry varbinary(14) NOT NULL default '',
+ ipb_range_start tinyblob NOT NULL,
+ ipb_range_end tinyblob NOT NULL,
+ ipb_deleted bool NOT NULL default 0,
+ ipb_block_email bool NOT NULL default 0,
+ ipb_allow_usertalk bool NOT NULL default 0
+) /*$wgDBTableOptions*/;
+
+CREATE UNIQUE INDEX /*i*/ipb_address ON /*_*/ipblocks (ipb_address(255), ipb_user, ipb_auto, ipb_anon_only);
+CREATE INDEX /*i*/ipb_user ON /*_*/ipblocks (ipb_user);
+CREATE INDEX /*i*/ipb_range ON /*_*/ipblocks (ipb_range_start(8), ipb_range_end(8));
+CREATE INDEX /*i*/ipb_timestamp ON /*_*/ipblocks (ipb_timestamp);
+CREATE INDEX /*i*/ipb_expiry ON /*_*/ipblocks (ipb_expiry);
+CREATE TABLE /*_*/image (
+ img_name varchar(255) binary NOT NULL default '' PRIMARY KEY,
+ img_size int unsigned NOT NULL default 0,
+ img_width int NOT NULL default 0,
+ img_height int NOT NULL default 0,
+ img_metadata mediumblob NOT NULL,
+ img_bits int NOT NULL default 0,
+ img_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
+ img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
+ img_minor_mime varbinary(32) NOT NULL default "unknown",
+ img_description tinyblob NOT NULL,
+ img_user int unsigned NOT NULL default 0,
+ img_user_text varchar(255) binary NOT NULL,
+ img_timestamp varbinary(14) NOT NULL default '',
+ img_sha1 varbinary(32) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/img_usertext_timestamp ON /*_*/image (img_user_text,img_timestamp);
+CREATE INDEX /*i*/img_size ON /*_*/image (img_size);
+CREATE INDEX /*i*/img_timestamp ON /*_*/image (img_timestamp);
+CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1);
+CREATE TABLE /*_*/oldimage (
+ oi_name varchar(255) binary NOT NULL default '',
+ oi_archive_name varchar(255) binary NOT NULL default '',
+ oi_size int unsigned NOT NULL default 0,
+ oi_width int NOT NULL default 0,
+ oi_height int NOT NULL default 0,
+ oi_bits int NOT NULL default 0,
+ oi_description tinyblob NOT NULL,
+ oi_user int unsigned NOT NULL default 0,
+ oi_user_text varchar(255) binary NOT NULL,
+ oi_timestamp binary(14) NOT NULL default '',
+ oi_metadata mediumblob NOT NULL,
+ oi_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
+ oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
+ oi_minor_mime varbinary(32) NOT NULL default "unknown",
+ oi_deleted tinyint unsigned NOT NULL default 0,
+ oi_sha1 varbinary(32) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/oi_usertext_timestamp ON /*_*/oldimage (oi_user_text,oi_timestamp);
+CREATE INDEX /*i*/oi_name_timestamp ON /*_*/oldimage (oi_name,oi_timestamp);
+CREATE INDEX /*i*/oi_name_archive_name ON /*_*/oldimage (oi_name,oi_archive_name(14));
+CREATE INDEX /*i*/oi_sha1 ON /*_*/oldimage (oi_sha1);
+CREATE TABLE /*_*/filearchive (
+ fa_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ fa_name varchar(255) binary NOT NULL default '',
+ fa_archive_name varchar(255) binary default '',
+ fa_storage_group varbinary(16),
+ fa_storage_key varbinary(64) default '',
+ fa_deleted_user int,
+ fa_deleted_timestamp binary(14) default '',
+ fa_deleted_reason text,
+ fa_size int unsigned default 0,
+ fa_width int default 0,
+ fa_height int default 0,
+ fa_metadata mediumblob,
+ fa_bits int default 0,
+ fa_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
+ fa_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") default "unknown",
+ fa_minor_mime varbinary(32) default "unknown",
+ fa_description tinyblob,
+ fa_user int unsigned default 0,
+ fa_user_text varchar(255) binary,
+ fa_timestamp binary(14) default '',
+ fa_deleted tinyint unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/fa_name ON /*_*/filearchive (fa_name, fa_timestamp);
+CREATE INDEX /*i*/fa_storage_group ON /*_*/filearchive (fa_storage_group, fa_storage_key);
+CREATE INDEX /*i*/fa_deleted_timestamp ON /*_*/filearchive (fa_deleted_timestamp);
+CREATE INDEX /*i*/fa_user_timestamp ON /*_*/filearchive (fa_user_text,fa_timestamp);
+CREATE TABLE /*_*/recentchanges (
+ rc_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ rc_timestamp varbinary(14) NOT NULL default '',
+ rc_cur_time varbinary(14) NOT NULL default '',
+ rc_user int unsigned NOT NULL default 0,
+ rc_user_text varchar(255) binary NOT NULL,
+ rc_namespace int NOT NULL default 0,
+ rc_title varchar(255) binary NOT NULL default '',
+ rc_comment varchar(255) binary NOT NULL default '',
+ rc_minor tinyint unsigned NOT NULL default 0,
+ rc_bot tinyint unsigned NOT NULL default 0,
+ rc_new tinyint unsigned NOT NULL default 0,
+ rc_cur_id int unsigned NOT NULL default 0,
+ rc_this_oldid int unsigned NOT NULL default 0,
+ rc_last_oldid int unsigned NOT NULL default 0,
+ rc_type tinyint unsigned NOT NULL default 0,
+ rc_moved_to_ns tinyint unsigned NOT NULL default 0,
+ rc_moved_to_title varchar(255) binary NOT NULL default '',
+ rc_patrolled tinyint unsigned NOT NULL default 0,
+ rc_ip varbinary(40) NOT NULL default '',
+ rc_old_len int,
+ rc_new_len int,
+ rc_deleted tinyint unsigned NOT NULL default 0,
+ rc_logid int unsigned NOT NULL default 0,
+ rc_log_type varbinary(255) NULL default NULL,
+ rc_log_action varbinary(255) NULL default NULL,
+ rc_params blob NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/rc_timestamp ON /*_*/recentchanges (rc_timestamp);
+CREATE INDEX /*i*/rc_namespace_title ON /*_*/recentchanges (rc_namespace, rc_title);
+CREATE INDEX /*i*/rc_cur_id ON /*_*/recentchanges (rc_cur_id);
+CREATE INDEX /*i*/new_name_timestamp ON /*_*/recentchanges (rc_new,rc_namespace,rc_timestamp);
+CREATE INDEX /*i*/rc_ip ON /*_*/recentchanges (rc_ip);
+CREATE INDEX /*i*/rc_ns_usertext ON /*_*/recentchanges (rc_namespace, rc_user_text);
+CREATE INDEX /*i*/rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp);
+CREATE TABLE /*_*/watchlist (
+ wl_user int unsigned NOT NULL,
+ wl_namespace int NOT NULL default 0,
+ wl_title varchar(255) binary NOT NULL default '',
+ wl_notificationtimestamp varbinary(14)
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/wl_user ON /*_*/watchlist (wl_user, wl_namespace, wl_title);
+CREATE INDEX /*i*/namespace_title ON /*_*/watchlist (wl_namespace, wl_title);
+CREATE TABLE /*_*/math (
+ math_inputhash varbinary(16) NOT NULL,
+ math_outputhash varbinary(16) NOT NULL,
+ math_html_conservativeness tinyint NOT NULL,
+ math_html text,
+ math_mathml text
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/math_inputhash ON /*_*/math (math_inputhash);
+CREATE TABLE /*_*/searchindex (
+ si_page int unsigned NOT NULL,
+ si_title varchar(255) NOT NULL default '',
+ si_text mediumtext NOT NULL
+) ENGINE=MyISAM;
+CREATE UNIQUE INDEX /*i*/si_page ON /*_*/searchindex (si_page);
+CREATE FULLTEXT INDEX /*i*/si_title ON /*_*/searchindex (si_title);
+CREATE FULLTEXT INDEX /*i*/si_text ON /*_*/searchindex (si_text);
+CREATE TABLE /*_*/interwiki (
+ iw_prefix varchar(32) NOT NULL,
+ iw_url blob NOT NULL,
+ iw_local bool NOT NULL,
+ iw_trans tinyint NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/iw_prefix ON /*_*/interwiki (iw_prefix);
+CREATE TABLE /*_*/querycache (
+ qc_type varbinary(32) NOT NULL,
+ qc_value int unsigned NOT NULL default 0,
+ qc_namespace int NOT NULL default 0,
+ qc_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/qc_type ON /*_*/querycache (qc_type,qc_value);
+CREATE TABLE /*_*/objectcache (
+ keyname varbinary(255) NOT NULL default '' PRIMARY KEY,
+ value mediumblob,
+ exptime datetime
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/exptime ON /*_*/objectcache (exptime);
+CREATE TABLE /*_*/transcache (
+ tc_url varbinary(255) NOT NULL,
+ tc_contents text,
+ tc_time int NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/tc_url_idx ON /*_*/transcache (tc_url);
+CREATE TABLE /*_*/logging (
+ log_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ log_type varbinary(10) NOT NULL default '',
+ log_action varbinary(10) NOT NULL default '',
+ log_timestamp binary(14) NOT NULL default '19700101000000',
+ log_user int unsigned NOT NULL default 0,
+ log_namespace int NOT NULL default 0,
+ log_title varchar(255) binary NOT NULL default '',
+ log_comment varchar(255) NOT NULL default '',
+ log_params blob NOT NULL,
+ log_deleted tinyint unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/type_time ON /*_*/logging (log_type, log_timestamp);
+CREATE INDEX /*i*/user_time ON /*_*/logging (log_user, log_timestamp);
+CREATE INDEX /*i*/page_time ON /*_*/logging (log_namespace, log_title, log_timestamp);
+CREATE INDEX /*i*/times ON /*_*/logging (log_timestamp);
+CREATE TABLE /*_*/trackbacks (
+ tb_id int PRIMARY KEY AUTO_INCREMENT,
+ tb_page int REFERENCES /*_*/page(page_id) ON DELETE CASCADE,
+ tb_title varchar(255) NOT NULL,
+ tb_url blob NOT NULL,
+ tb_ex text,
+ tb_name varchar(255)
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/tb_page ON /*_*/trackbacks (tb_page);
+CREATE TABLE /*_*/job (
+ job_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ job_cmd varbinary(60) NOT NULL default '',
+ job_namespace int NOT NULL,
+ job_title varchar(255) binary NOT NULL,
+ job_params blob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/job_cmd ON /*_*/job (job_cmd, job_namespace, job_title);
+CREATE TABLE /*_*/querycache_info (
+ qci_type varbinary(32) NOT NULL default '',
+ qci_timestamp binary(14) NOT NULL default '19700101000000'
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/qci_type ON /*_*/querycache_info (qci_type);
+CREATE TABLE /*_*/redirect (
+ rd_from int unsigned NOT NULL default 0 PRIMARY KEY,
+ rd_namespace int NOT NULL default 0,
+ rd_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/rd_ns_title ON /*_*/redirect (rd_namespace,rd_title,rd_from);
+CREATE TABLE /*_*/querycachetwo (
+ qcc_type varbinary(32) NOT NULL,
+ qcc_value int unsigned NOT NULL default 0,
+ qcc_namespace int NOT NULL default 0,
+ qcc_title varchar(255) binary NOT NULL default '',
+ qcc_namespacetwo int NOT NULL default 0,
+ qcc_titletwo varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/qcc_type ON /*_*/querycachetwo (qcc_type,qcc_value);
+CREATE INDEX /*i*/qcc_title ON /*_*/querycachetwo (qcc_type,qcc_namespace,qcc_title);
+CREATE INDEX /*i*/qcc_titletwo ON /*_*/querycachetwo (qcc_type,qcc_namespacetwo,qcc_titletwo);
+CREATE TABLE /*_*/page_restrictions (
+ pr_page int NOT NULL,
+ pr_type varbinary(60) NOT NULL,
+ pr_level varbinary(60) NOT NULL,
+ pr_cascade tinyint NOT NULL,
+ pr_user int NULL,
+ pr_expiry varbinary(14) NULL,
+ pr_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/pr_pagetype ON /*_*/page_restrictions (pr_page,pr_type);
+CREATE INDEX /*i*/pr_typelevel ON /*_*/page_restrictions (pr_type,pr_level);
+CREATE INDEX /*i*/pr_level ON /*_*/page_restrictions (pr_level);
+CREATE INDEX /*i*/pr_cascade ON /*_*/page_restrictions (pr_cascade);
+CREATE TABLE /*_*/protected_titles (
+ pt_namespace int NOT NULL,
+ pt_title varchar(255) binary NOT NULL,
+ pt_user int unsigned NOT NULL,
+ pt_reason tinyblob,
+ pt_timestamp binary(14) NOT NULL,
+ pt_expiry varbinary(14) NOT NULL default '',
+ pt_create_perm varbinary(60) NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/pt_namespace_title ON /*_*/protected_titles (pt_namespace,pt_title);
+CREATE INDEX /*i*/pt_timestamp ON /*_*/protected_titles (pt_timestamp);
+CREATE TABLE /*_*/page_props (
+ pp_page int NOT NULL,
+ pp_propname varbinary(60) NOT NULL,
+ pp_value blob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/pp_page_propname ON /*_*/page_props (pp_page,pp_propname);
+CREATE TABLE /*_*/updatelog (
+ ul_key varchar(255) NOT NULL PRIMARY KEY
+) /*$wgDBTableOptions*/;
+CREATE TABLE /*_*/change_tag (
+ ct_rc_id int NULL,
+ ct_log_id int NULL,
+ ct_rev_id int NULL,
+ ct_tag varchar(255) NOT NULL,
+ ct_params blob NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/change_tag_rc_tag ON /*_*/change_tag (ct_rc_id,ct_tag);
+CREATE UNIQUE INDEX /*i*/change_tag_log_tag ON /*_*/change_tag (ct_log_id,ct_tag);
+CREATE UNIQUE INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag (ct_rev_id,ct_tag);
+CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
+CREATE TABLE /*_*/tag_summary (
+ ts_rc_id int NULL,
+ ts_log_id int NULL,
+ ts_rev_id int NULL,
+ ts_tags blob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
+CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
+CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
+CREATE TABLE /*_*/valid_tag (
+ vt_tag varchar(255) NOT NULL PRIMARY KEY
+) /*$wgDBTableOptions*/;
diff --git a/tests/phpunit/includes/db/sqlite/tables-1.16.sql b/tests/phpunit/includes/db/sqlite/tables-1.16.sql
new file mode 100644
index 00000000..6e56add2
--- /dev/null
+++ b/tests/phpunit/includes/db/sqlite/tables-1.16.sql
@@ -0,0 +1,483 @@
+-- This is a copy of MediaWiki 1.16 schema shared by MySQL and SQLite.
+-- It is used for updater testing. Comments are stripped to decrease
+-- file size, as we don't need to maintain it.
+
+CREATE TABLE /*_*/user (
+ user_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ user_name varchar(255) binary NOT NULL default '',
+ user_real_name varchar(255) binary NOT NULL default '',
+ user_password tinyblob NOT NULL,
+ user_newpassword tinyblob NOT NULL,
+ user_newpass_time binary(14),
+ user_email tinytext NOT NULL,
+ user_options blob NOT NULL,
+ user_touched binary(14) NOT NULL default '',
+ user_token binary(32) NOT NULL default '',
+ user_email_authenticated binary(14),
+ user_email_token binary(32),
+ user_email_token_expires binary(14),
+ user_registration binary(14),
+ user_editcount int
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/user_name ON /*_*/user (user_name);
+CREATE INDEX /*i*/user_email_token ON /*_*/user (user_email_token);
+CREATE TABLE /*_*/user_groups (
+ ug_user int unsigned NOT NULL default 0,
+ ug_group varbinary(16) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ug_user_group ON /*_*/user_groups (ug_user,ug_group);
+CREATE INDEX /*i*/ug_group ON /*_*/user_groups (ug_group);
+CREATE TABLE /*_*/user_newtalk (
+ user_id int NOT NULL default 0,
+ user_ip varbinary(40) NOT NULL default '',
+ user_last_timestamp binary(14) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/un_user_id ON /*_*/user_newtalk (user_id);
+CREATE INDEX /*i*/un_user_ip ON /*_*/user_newtalk (user_ip);
+CREATE TABLE /*_*/user_properties (
+ up_user int NOT NULL,
+ up_property varbinary(32) NOT NULL,
+ up_value blob
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/user_properties_user_property ON /*_*/user_properties (up_user,up_property);
+CREATE INDEX /*i*/user_properties_property ON /*_*/user_properties (up_property);
+CREATE TABLE /*_*/page (
+ page_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ page_namespace int NOT NULL,
+ page_title varchar(255) binary NOT NULL,
+ page_restrictions tinyblob NOT NULL,
+ page_counter bigint unsigned NOT NULL default 0,
+ page_is_redirect tinyint unsigned NOT NULL default 0,
+ page_is_new tinyint unsigned NOT NULL default 0,
+ page_random real unsigned NOT NULL,
+ page_touched binary(14) NOT NULL default '',
+ page_latest int unsigned NOT NULL,
+ page_len int unsigned NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/name_title ON /*_*/page (page_namespace,page_title);
+CREATE INDEX /*i*/page_random ON /*_*/page (page_random);
+CREATE INDEX /*i*/page_len ON /*_*/page (page_len);
+CREATE TABLE /*_*/revision (
+ rev_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ rev_page int unsigned NOT NULL,
+ rev_text_id int unsigned NOT NULL,
+ rev_comment tinyblob NOT NULL,
+ rev_user int unsigned NOT NULL default 0,
+ rev_user_text varchar(255) binary NOT NULL default '',
+ rev_timestamp binary(14) NOT NULL default '',
+ rev_minor_edit tinyint unsigned NOT NULL default 0,
+ rev_deleted tinyint unsigned NOT NULL default 0,
+ rev_len int unsigned,
+ rev_parent_id int unsigned default NULL
+) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
+CREATE UNIQUE INDEX /*i*/rev_page_id ON /*_*/revision (rev_page, rev_id);
+CREATE INDEX /*i*/rev_timestamp ON /*_*/revision (rev_timestamp);
+CREATE INDEX /*i*/page_timestamp ON /*_*/revision (rev_page,rev_timestamp);
+CREATE INDEX /*i*/user_timestamp ON /*_*/revision (rev_user,rev_timestamp);
+CREATE INDEX /*i*/usertext_timestamp ON /*_*/revision (rev_user_text,rev_timestamp);
+CREATE TABLE /*_*/text (
+ old_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ old_text mediumblob NOT NULL,
+ old_flags tinyblob NOT NULL
+) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=10240;
+CREATE TABLE /*_*/archive (
+ ar_namespace int NOT NULL default 0,
+ ar_title varchar(255) binary NOT NULL default '',
+ ar_text mediumblob NOT NULL,
+ ar_comment tinyblob NOT NULL,
+ ar_user int unsigned NOT NULL default 0,
+ ar_user_text varchar(255) binary NOT NULL,
+ ar_timestamp binary(14) NOT NULL default '',
+ ar_minor_edit tinyint NOT NULL default 0,
+ ar_flags tinyblob NOT NULL,
+ ar_rev_id int unsigned,
+ ar_text_id int unsigned,
+ ar_deleted tinyint unsigned NOT NULL default 0,
+ ar_len int unsigned,
+ ar_page_id int unsigned,
+ ar_parent_id int unsigned default NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp);
+CREATE INDEX /*i*/ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp);
+CREATE TABLE /*_*/pagelinks (
+ pl_from int unsigned NOT NULL default 0,
+ pl_namespace int NOT NULL default 0,
+ pl_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/pl_from ON /*_*/pagelinks (pl_from,pl_namespace,pl_title);
+CREATE UNIQUE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from);
+CREATE TABLE /*_*/templatelinks (
+ tl_from int unsigned NOT NULL default 0,
+ tl_namespace int NOT NULL default 0,
+ tl_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/tl_from ON /*_*/templatelinks (tl_from,tl_namespace,tl_title);
+CREATE UNIQUE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from);
+CREATE TABLE /*_*/imagelinks (
+ il_from int unsigned NOT NULL default 0,
+ il_to varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/il_from ON /*_*/imagelinks (il_from,il_to);
+CREATE UNIQUE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from);
+CREATE TABLE /*_*/categorylinks (
+ cl_from int unsigned NOT NULL default 0,
+ cl_to varchar(255) binary NOT NULL default '',
+ cl_sortkey varchar(70) binary NOT NULL default '',
+ cl_timestamp timestamp NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/cl_from ON /*_*/categorylinks (cl_from,cl_to);
+CREATE INDEX /*i*/cl_sortkey ON /*_*/categorylinks (cl_to,cl_sortkey,cl_from);
+CREATE INDEX /*i*/cl_timestamp ON /*_*/categorylinks (cl_to,cl_timestamp);
+CREATE TABLE /*_*/category (
+ cat_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ cat_title varchar(255) binary NOT NULL,
+ cat_pages int signed NOT NULL default 0,
+ cat_subcats int signed NOT NULL default 0,
+ cat_files int signed NOT NULL default 0,
+ cat_hidden tinyint unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/cat_title ON /*_*/category (cat_title);
+CREATE INDEX /*i*/cat_pages ON /*_*/category (cat_pages);
+CREATE TABLE /*_*/externallinks (
+ el_from int unsigned NOT NULL default 0,
+ el_to blob NOT NULL,
+ el_index blob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/el_from ON /*_*/externallinks (el_from, el_to(40));
+CREATE INDEX /*i*/el_to ON /*_*/externallinks (el_to(60), el_from);
+CREATE INDEX /*i*/el_index ON /*_*/externallinks (el_index(60));
+CREATE TABLE /*_*/external_user (
+ eu_local_id int unsigned NOT NULL PRIMARY KEY,
+ eu_external_id varchar(255) binary NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/eu_external_id ON /*_*/external_user (eu_external_id);
+CREATE TABLE /*_*/langlinks (
+ ll_from int unsigned NOT NULL default 0,
+ ll_lang varbinary(20) NOT NULL default '',
+ ll_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ll_from ON /*_*/langlinks (ll_from, ll_lang);
+CREATE INDEX /*i*/ll_lang ON /*_*/langlinks (ll_lang, ll_title);
+CREATE TABLE /*_*/site_stats (
+ ss_row_id int unsigned NOT NULL,
+ ss_total_views bigint unsigned default 0,
+ ss_total_edits bigint unsigned default 0,
+ ss_good_articles bigint unsigned default 0,
+ ss_total_pages bigint default '-1',
+ ss_users bigint default '-1',
+ ss_active_users bigint default '-1',
+ ss_admins int default '-1',
+ ss_images int default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ss_row_id ON /*_*/site_stats (ss_row_id);
+CREATE TABLE /*_*/hitcounter (
+ hc_id int unsigned NOT NULL
+) ENGINE=HEAP MAX_ROWS=25000;
+CREATE TABLE /*_*/ipblocks (
+ ipb_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ ipb_address tinyblob NOT NULL,
+ ipb_user int unsigned NOT NULL default 0,
+ ipb_by int unsigned NOT NULL default 0,
+ ipb_by_text varchar(255) binary NOT NULL default '',
+ ipb_reason tinyblob NOT NULL,
+ ipb_timestamp binary(14) NOT NULL default '',
+ ipb_auto bool NOT NULL default 0,
+ ipb_anon_only bool NOT NULL default 0,
+ ipb_create_account bool NOT NULL default 1,
+ ipb_enable_autoblock bool NOT NULL default '1',
+ ipb_expiry varbinary(14) NOT NULL default '',
+ ipb_range_start tinyblob NOT NULL,
+ ipb_range_end tinyblob NOT NULL,
+ ipb_deleted bool NOT NULL default 0,
+ ipb_block_email bool NOT NULL default 0,
+ ipb_allow_usertalk bool NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ipb_address ON /*_*/ipblocks (ipb_address(255), ipb_user, ipb_auto, ipb_anon_only);
+CREATE INDEX /*i*/ipb_user ON /*_*/ipblocks (ipb_user);
+CREATE INDEX /*i*/ipb_range ON /*_*/ipblocks (ipb_range_start(8), ipb_range_end(8));
+CREATE INDEX /*i*/ipb_timestamp ON /*_*/ipblocks (ipb_timestamp);
+CREATE INDEX /*i*/ipb_expiry ON /*_*/ipblocks (ipb_expiry);
+CREATE TABLE /*_*/image (
+ img_name varchar(255) binary NOT NULL default '' PRIMARY KEY,
+ img_size int unsigned NOT NULL default 0,
+ img_width int NOT NULL default 0,
+ img_height int NOT NULL default 0,
+ img_metadata mediumblob NOT NULL,
+ img_bits int NOT NULL default 0,
+ img_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
+ img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
+ img_minor_mime varbinary(100) NOT NULL default "unknown",
+ img_description tinyblob NOT NULL,
+ img_user int unsigned NOT NULL default 0,
+ img_user_text varchar(255) binary NOT NULL,
+ img_timestamp varbinary(14) NOT NULL default '',
+ img_sha1 varbinary(32) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/img_usertext_timestamp ON /*_*/image (img_user_text,img_timestamp);
+CREATE INDEX /*i*/img_size ON /*_*/image (img_size);
+CREATE INDEX /*i*/img_timestamp ON /*_*/image (img_timestamp);
+CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1);
+CREATE TABLE /*_*/oldimage (
+ oi_name varchar(255) binary NOT NULL default '',
+ oi_archive_name varchar(255) binary NOT NULL default '',
+ oi_size int unsigned NOT NULL default 0,
+ oi_width int NOT NULL default 0,
+ oi_height int NOT NULL default 0,
+ oi_bits int NOT NULL default 0,
+ oi_description tinyblob NOT NULL,
+ oi_user int unsigned NOT NULL default 0,
+ oi_user_text varchar(255) binary NOT NULL,
+ oi_timestamp binary(14) NOT NULL default '',
+ oi_metadata mediumblob NOT NULL,
+ oi_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
+ oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
+ oi_minor_mime varbinary(100) NOT NULL default "unknown",
+ oi_deleted tinyint unsigned NOT NULL default 0,
+ oi_sha1 varbinary(32) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/oi_usertext_timestamp ON /*_*/oldimage (oi_user_text,oi_timestamp);
+CREATE INDEX /*i*/oi_name_timestamp ON /*_*/oldimage (oi_name,oi_timestamp);
+CREATE INDEX /*i*/oi_name_archive_name ON /*_*/oldimage (oi_name,oi_archive_name(14));
+CREATE INDEX /*i*/oi_sha1 ON /*_*/oldimage (oi_sha1);
+CREATE TABLE /*_*/filearchive (
+ fa_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ fa_name varchar(255) binary NOT NULL default '',
+ fa_archive_name varchar(255) binary default '',
+ fa_storage_group varbinary(16),
+ fa_storage_key varbinary(64) default '',
+ fa_deleted_user int,
+ fa_deleted_timestamp binary(14) default '',
+ fa_deleted_reason text,
+ fa_size int unsigned default 0,
+ fa_width int default 0,
+ fa_height int default 0,
+ fa_metadata mediumblob,
+ fa_bits int default 0,
+ fa_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
+ fa_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") default "unknown",
+ fa_minor_mime varbinary(100) default "unknown",
+ fa_description tinyblob,
+ fa_user int unsigned default 0,
+ fa_user_text varchar(255) binary,
+ fa_timestamp binary(14) default '',
+ fa_deleted tinyint unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/fa_name ON /*_*/filearchive (fa_name, fa_timestamp);
+CREATE INDEX /*i*/fa_storage_group ON /*_*/filearchive (fa_storage_group, fa_storage_key);
+CREATE INDEX /*i*/fa_deleted_timestamp ON /*_*/filearchive (fa_deleted_timestamp);
+CREATE INDEX /*i*/fa_user_timestamp ON /*_*/filearchive (fa_user_text,fa_timestamp);
+CREATE TABLE /*_*/recentchanges (
+ rc_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ rc_timestamp varbinary(14) NOT NULL default '',
+ rc_cur_time varbinary(14) NOT NULL default '',
+ rc_user int unsigned NOT NULL default 0,
+ rc_user_text varchar(255) binary NOT NULL,
+ rc_namespace int NOT NULL default 0,
+ rc_title varchar(255) binary NOT NULL default '',
+ rc_comment varchar(255) binary NOT NULL default '',
+ rc_minor tinyint unsigned NOT NULL default 0,
+ rc_bot tinyint unsigned NOT NULL default 0,
+ rc_new tinyint unsigned NOT NULL default 0,
+ rc_cur_id int unsigned NOT NULL default 0,
+ rc_this_oldid int unsigned NOT NULL default 0,
+ rc_last_oldid int unsigned NOT NULL default 0,
+ rc_type tinyint unsigned NOT NULL default 0,
+ rc_moved_to_ns tinyint unsigned NOT NULL default 0,
+ rc_moved_to_title varchar(255) binary NOT NULL default '',
+ rc_patrolled tinyint unsigned NOT NULL default 0,
+ rc_ip varbinary(40) NOT NULL default '',
+ rc_old_len int,
+ rc_new_len int,
+ rc_deleted tinyint unsigned NOT NULL default 0,
+ rc_logid int unsigned NOT NULL default 0,
+ rc_log_type varbinary(255) NULL default NULL,
+ rc_log_action varbinary(255) NULL default NULL,
+ rc_params blob NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/rc_timestamp ON /*_*/recentchanges (rc_timestamp);
+CREATE INDEX /*i*/rc_namespace_title ON /*_*/recentchanges (rc_namespace, rc_title);
+CREATE INDEX /*i*/rc_cur_id ON /*_*/recentchanges (rc_cur_id);
+CREATE INDEX /*i*/new_name_timestamp ON /*_*/recentchanges (rc_new,rc_namespace,rc_timestamp);
+CREATE INDEX /*i*/rc_ip ON /*_*/recentchanges (rc_ip);
+CREATE INDEX /*i*/rc_ns_usertext ON /*_*/recentchanges (rc_namespace, rc_user_text);
+CREATE INDEX /*i*/rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp);
+CREATE TABLE /*_*/watchlist (
+ wl_user int unsigned NOT NULL,
+ wl_namespace int NOT NULL default 0,
+ wl_title varchar(255) binary NOT NULL default '',
+ wl_notificationtimestamp varbinary(14)
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/wl_user ON /*_*/watchlist (wl_user, wl_namespace, wl_title);
+CREATE INDEX /*i*/namespace_title ON /*_*/watchlist (wl_namespace, wl_title);
+CREATE TABLE /*_*/math (
+ math_inputhash varbinary(16) NOT NULL,
+ math_outputhash varbinary(16) NOT NULL,
+ math_html_conservativeness tinyint NOT NULL,
+ math_html text,
+ math_mathml text
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/math_inputhash ON /*_*/math (math_inputhash);
+CREATE TABLE /*_*/searchindex (
+ si_page int unsigned NOT NULL,
+ si_title varchar(255) NOT NULL default '',
+ si_text mediumtext NOT NULL
+) ENGINE=MyISAM;
+CREATE UNIQUE INDEX /*i*/si_page ON /*_*/searchindex (si_page);
+CREATE FULLTEXT INDEX /*i*/si_title ON /*_*/searchindex (si_title);
+CREATE FULLTEXT INDEX /*i*/si_text ON /*_*/searchindex (si_text);
+CREATE TABLE /*_*/interwiki (
+ iw_prefix varchar(32) NOT NULL,
+ iw_url blob NOT NULL,
+ iw_local bool NOT NULL,
+ iw_trans tinyint NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/iw_prefix ON /*_*/interwiki (iw_prefix);
+CREATE TABLE /*_*/querycache (
+ qc_type varbinary(32) NOT NULL,
+ qc_value int unsigned NOT NULL default 0,
+ qc_namespace int NOT NULL default 0,
+ qc_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/qc_type ON /*_*/querycache (qc_type,qc_value);
+CREATE TABLE /*_*/objectcache (
+ keyname varbinary(255) NOT NULL default '' PRIMARY KEY,
+ value mediumblob,
+ exptime datetime
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/exptime ON /*_*/objectcache (exptime);
+CREATE TABLE /*_*/transcache (
+ tc_url varbinary(255) NOT NULL,
+ tc_contents text,
+ tc_time binary(14) NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/tc_url_idx ON /*_*/transcache (tc_url);
+CREATE TABLE /*_*/logging (
+ log_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ log_type varbinary(32) NOT NULL default '',
+ log_action varbinary(32) NOT NULL default '',
+ log_timestamp binary(14) NOT NULL default '19700101000000',
+ log_user int unsigned NOT NULL default 0,
+ log_user_text varchar(255) binary NOT NULL default '',
+ log_namespace int NOT NULL default 0,
+ log_title varchar(255) binary NOT NULL default '',
+ log_page int unsigned NULL,
+ log_comment varchar(255) NOT NULL default '',
+ log_params blob NOT NULL,
+ log_deleted tinyint unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/type_time ON /*_*/logging (log_type, log_timestamp);
+CREATE INDEX /*i*/user_time ON /*_*/logging (log_user, log_timestamp);
+CREATE INDEX /*i*/page_time ON /*_*/logging (log_namespace, log_title, log_timestamp);
+CREATE INDEX /*i*/times ON /*_*/logging (log_timestamp);
+CREATE INDEX /*i*/log_user_type_time ON /*_*/logging (log_user, log_type, log_timestamp);
+CREATE INDEX /*i*/log_page_id_time ON /*_*/logging (log_page,log_timestamp);
+CREATE TABLE /*_*/log_search (
+ ls_field varbinary(32) NOT NULL,
+ ls_value varchar(255) NOT NULL,
+ ls_log_id int unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ls_field_val ON /*_*/log_search (ls_field,ls_value,ls_log_id);
+CREATE INDEX /*i*/ls_log_id ON /*_*/log_search (ls_log_id);
+CREATE TABLE /*_*/trackbacks (
+ tb_id int PRIMARY KEY AUTO_INCREMENT,
+ tb_page int REFERENCES /*_*/page(page_id) ON DELETE CASCADE,
+ tb_title varchar(255) NOT NULL,
+ tb_url blob NOT NULL,
+ tb_ex text,
+ tb_name varchar(255)
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/tb_page ON /*_*/trackbacks (tb_page);
+CREATE TABLE /*_*/job (
+ job_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ job_cmd varbinary(60) NOT NULL default '',
+ job_namespace int NOT NULL,
+ job_title varchar(255) binary NOT NULL,
+ job_params blob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/job_cmd ON /*_*/job (job_cmd, job_namespace, job_title, job_params(128));
+CREATE TABLE /*_*/querycache_info (
+ qci_type varbinary(32) NOT NULL default '',
+ qci_timestamp binary(14) NOT NULL default '19700101000000'
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/qci_type ON /*_*/querycache_info (qci_type);
+CREATE TABLE /*_*/redirect (
+ rd_from int unsigned NOT NULL default 0 PRIMARY KEY,
+ rd_namespace int NOT NULL default 0,
+ rd_title varchar(255) binary NOT NULL default '',
+ rd_interwiki varchar(32) default NULL,
+ rd_fragment varchar(255) binary default NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/rd_ns_title ON /*_*/redirect (rd_namespace,rd_title,rd_from);
+CREATE TABLE /*_*/querycachetwo (
+ qcc_type varbinary(32) NOT NULL,
+ qcc_value int unsigned NOT NULL default 0,
+ qcc_namespace int NOT NULL default 0,
+ qcc_title varchar(255) binary NOT NULL default '',
+ qcc_namespacetwo int NOT NULL default 0,
+ qcc_titletwo varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/qcc_type ON /*_*/querycachetwo (qcc_type,qcc_value);
+CREATE INDEX /*i*/qcc_title ON /*_*/querycachetwo (qcc_type,qcc_namespace,qcc_title);
+CREATE INDEX /*i*/qcc_titletwo ON /*_*/querycachetwo (qcc_type,qcc_namespacetwo,qcc_titletwo);
+CREATE TABLE /*_*/page_restrictions (
+ pr_page int NOT NULL,
+ pr_type varbinary(60) NOT NULL,
+ pr_level varbinary(60) NOT NULL,
+ pr_cascade tinyint NOT NULL,
+ pr_user int NULL,
+ pr_expiry varbinary(14) NULL,
+ pr_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/pr_pagetype ON /*_*/page_restrictions (pr_page,pr_type);
+CREATE INDEX /*i*/pr_typelevel ON /*_*/page_restrictions (pr_type,pr_level);
+CREATE INDEX /*i*/pr_level ON /*_*/page_restrictions (pr_level);
+CREATE INDEX /*i*/pr_cascade ON /*_*/page_restrictions (pr_cascade);
+CREATE TABLE /*_*/protected_titles (
+ pt_namespace int NOT NULL,
+ pt_title varchar(255) binary NOT NULL,
+ pt_user int unsigned NOT NULL,
+ pt_reason tinyblob,
+ pt_timestamp binary(14) NOT NULL,
+ pt_expiry varbinary(14) NOT NULL default '',
+ pt_create_perm varbinary(60) NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/pt_namespace_title ON /*_*/protected_titles (pt_namespace,pt_title);
+CREATE INDEX /*i*/pt_timestamp ON /*_*/protected_titles (pt_timestamp);
+CREATE TABLE /*_*/page_props (
+ pp_page int NOT NULL,
+ pp_propname varbinary(60) NOT NULL,
+ pp_value blob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/pp_page_propname ON /*_*/page_props (pp_page,pp_propname);
+CREATE TABLE /*_*/updatelog (
+ ul_key varchar(255) NOT NULL PRIMARY KEY
+) /*$wgDBTableOptions*/;
+CREATE TABLE /*_*/change_tag (
+ ct_rc_id int NULL,
+ ct_log_id int NULL,
+ ct_rev_id int NULL,
+ ct_tag varchar(255) NOT NULL,
+ ct_params blob NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/change_tag_rc_tag ON /*_*/change_tag (ct_rc_id,ct_tag);
+CREATE UNIQUE INDEX /*i*/change_tag_log_tag ON /*_*/change_tag (ct_log_id,ct_tag);
+CREATE UNIQUE INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag (ct_rev_id,ct_tag);
+CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
+CREATE TABLE /*_*/tag_summary (
+ ts_rc_id int NULL,
+ ts_log_id int NULL,
+ ts_rev_id int NULL,
+ ts_tags blob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
+CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
+CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
+CREATE TABLE /*_*/valid_tag (
+ vt_tag varchar(255) NOT NULL PRIMARY KEY
+) /*$wgDBTableOptions*/;
+CREATE TABLE /*_*/l10n_cache (
+ lc_lang varbinary(32) NOT NULL,
+ lc_key varchar(255) NOT NULL,
+ lc_value mediumblob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/lc_lang_key ON /*_*/l10n_cache (lc_lang, lc_key);
diff --git a/tests/phpunit/includes/db/sqlite/tables-1.17.sql b/tests/phpunit/includes/db/sqlite/tables-1.17.sql
new file mode 100644
index 00000000..69ae3764
--- /dev/null
+++ b/tests/phpunit/includes/db/sqlite/tables-1.17.sql
@@ -0,0 +1,516 @@
+-- This is a copy of MediaWiki 1.17 schema shared by MySQL and SQLite.
+-- It is used for updater testing. Comments are stripped to decrease
+-- file size, as we don't need to maintain it.
+
+CREATE TABLE /*_*/user (
+ user_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ user_name varchar(255) binary NOT NULL default '',
+ user_real_name varchar(255) binary NOT NULL default '',
+ user_password tinyblob NOT NULL,
+ user_newpassword tinyblob NOT NULL,
+ user_newpass_time binary(14),
+ user_email tinytext NOT NULL,
+ user_options blob NOT NULL,
+ user_touched binary(14) NOT NULL default '',
+ user_token binary(32) NOT NULL default '',
+ user_email_authenticated binary(14),
+ user_email_token binary(32),
+ user_email_token_expires binary(14),
+ user_registration binary(14),
+ user_editcount int
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/user_name ON /*_*/user (user_name);
+CREATE INDEX /*i*/user_email_token ON /*_*/user (user_email_token);
+CREATE TABLE /*_*/user_groups (
+ ug_user int unsigned NOT NULL default 0,
+ ug_group varbinary(16) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ug_user_group ON /*_*/user_groups (ug_user,ug_group);
+CREATE INDEX /*i*/ug_group ON /*_*/user_groups (ug_group);
+CREATE TABLE /*_*/user_newtalk (
+ user_id int NOT NULL default 0,
+ user_ip varbinary(40) NOT NULL default '',
+ user_last_timestamp binary(14) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/un_user_id ON /*_*/user_newtalk (user_id);
+CREATE INDEX /*i*/un_user_ip ON /*_*/user_newtalk (user_ip);
+CREATE TABLE /*_*/user_properties (
+ up_user int NOT NULL,
+ up_property varbinary(32) NOT NULL,
+ up_value blob
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/user_properties_user_property ON /*_*/user_properties (up_user,up_property);
+CREATE INDEX /*i*/user_properties_property ON /*_*/user_properties (up_property);
+CREATE TABLE /*_*/page (
+ page_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ page_namespace int NOT NULL,
+ page_title varchar(255) binary NOT NULL,
+ page_restrictions tinyblob NOT NULL,
+ page_counter bigint unsigned NOT NULL default 0,
+ page_is_redirect tinyint unsigned NOT NULL default 0,
+ page_is_new tinyint unsigned NOT NULL default 0,
+ page_random real unsigned NOT NULL,
+ page_touched binary(14) NOT NULL default '',
+ page_latest int unsigned NOT NULL,
+ page_len int unsigned NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/name_title ON /*_*/page (page_namespace,page_title);
+CREATE INDEX /*i*/page_random ON /*_*/page (page_random);
+CREATE INDEX /*i*/page_len ON /*_*/page (page_len);
+CREATE TABLE /*_*/revision (
+ rev_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ rev_page int unsigned NOT NULL,
+ rev_text_id int unsigned NOT NULL,
+ rev_comment tinyblob NOT NULL,
+ rev_user int unsigned NOT NULL default 0,
+ rev_user_text varchar(255) binary NOT NULL default '',
+ rev_timestamp binary(14) NOT NULL default '',
+ rev_minor_edit tinyint unsigned NOT NULL default 0,
+ rev_deleted tinyint unsigned NOT NULL default 0,
+ rev_len int unsigned,
+ rev_parent_id int unsigned default NULL
+) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
+CREATE UNIQUE INDEX /*i*/rev_page_id ON /*_*/revision (rev_page, rev_id);
+CREATE INDEX /*i*/rev_timestamp ON /*_*/revision (rev_timestamp);
+CREATE INDEX /*i*/page_timestamp ON /*_*/revision (rev_page,rev_timestamp);
+CREATE INDEX /*i*/user_timestamp ON /*_*/revision (rev_user,rev_timestamp);
+CREATE INDEX /*i*/usertext_timestamp ON /*_*/revision (rev_user_text,rev_timestamp);
+CREATE TABLE /*_*/text (
+ old_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ old_text mediumblob NOT NULL,
+ old_flags tinyblob NOT NULL
+) /*$wgDBTableOptions*/ MAX_ROWS=10000000 AVG_ROW_LENGTH=10240;
+CREATE TABLE /*_*/archive (
+ ar_namespace int NOT NULL default 0,
+ ar_title varchar(255) binary NOT NULL default '',
+ ar_text mediumblob NOT NULL,
+ ar_comment tinyblob NOT NULL,
+ ar_user int unsigned NOT NULL default 0,
+ ar_user_text varchar(255) binary NOT NULL,
+ ar_timestamp binary(14) NOT NULL default '',
+ ar_minor_edit tinyint NOT NULL default 0,
+ ar_flags tinyblob NOT NULL,
+ ar_rev_id int unsigned,
+ ar_text_id int unsigned,
+ ar_deleted tinyint unsigned NOT NULL default 0,
+ ar_len int unsigned,
+ ar_page_id int unsigned,
+ ar_parent_id int unsigned default NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/name_title_timestamp ON /*_*/archive (ar_namespace,ar_title,ar_timestamp);
+CREATE INDEX /*i*/ar_usertext_timestamp ON /*_*/archive (ar_user_text,ar_timestamp);
+CREATE INDEX /*i*/ar_revid ON /*_*/archive (ar_rev_id);
+CREATE TABLE /*_*/pagelinks (
+ pl_from int unsigned NOT NULL default 0,
+ pl_namespace int NOT NULL default 0,
+ pl_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/pl_from ON /*_*/pagelinks (pl_from,pl_namespace,pl_title);
+CREATE UNIQUE INDEX /*i*/pl_namespace ON /*_*/pagelinks (pl_namespace,pl_title,pl_from);
+CREATE TABLE /*_*/templatelinks (
+ tl_from int unsigned NOT NULL default 0,
+ tl_namespace int NOT NULL default 0,
+ tl_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/tl_from ON /*_*/templatelinks (tl_from,tl_namespace,tl_title);
+CREATE UNIQUE INDEX /*i*/tl_namespace ON /*_*/templatelinks (tl_namespace,tl_title,tl_from);
+CREATE TABLE /*_*/imagelinks (
+ il_from int unsigned NOT NULL default 0,
+ il_to varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/il_from ON /*_*/imagelinks (il_from,il_to);
+CREATE UNIQUE INDEX /*i*/il_to ON /*_*/imagelinks (il_to,il_from);
+CREATE TABLE /*_*/categorylinks (
+ cl_from int unsigned NOT NULL default 0,
+ cl_to varchar(255) binary NOT NULL default '',
+ cl_sortkey varbinary(230) NOT NULL default '',
+ cl_sortkey_prefix varchar(255) binary NOT NULL default '',
+ cl_timestamp timestamp NOT NULL,
+ cl_collation varbinary(32) NOT NULL default '',
+ cl_type ENUM('page', 'subcat', 'file') NOT NULL default 'page'
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/cl_from ON /*_*/categorylinks (cl_from,cl_to);
+CREATE INDEX /*i*/cl_sortkey ON /*_*/categorylinks (cl_to,cl_type,cl_sortkey,cl_from);
+CREATE INDEX /*i*/cl_timestamp ON /*_*/categorylinks (cl_to,cl_timestamp);
+CREATE INDEX /*i*/cl_collation ON /*_*/categorylinks (cl_collation);
+CREATE TABLE /*_*/category (
+ cat_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ cat_title varchar(255) binary NOT NULL,
+ cat_pages int signed NOT NULL default 0,
+ cat_subcats int signed NOT NULL default 0,
+ cat_files int signed NOT NULL default 0,
+ cat_hidden tinyint unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/cat_title ON /*_*/category (cat_title);
+CREATE INDEX /*i*/cat_pages ON /*_*/category (cat_pages);
+CREATE TABLE /*_*/externallinks (
+ el_from int unsigned NOT NULL default 0,
+ el_to blob NOT NULL,
+ el_index blob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/el_from ON /*_*/externallinks (el_from, el_to(40));
+CREATE INDEX /*i*/el_to ON /*_*/externallinks (el_to(60), el_from);
+CREATE INDEX /*i*/el_index ON /*_*/externallinks (el_index(60));
+CREATE TABLE /*_*/external_user (
+ eu_local_id int unsigned NOT NULL PRIMARY KEY,
+ eu_external_id varchar(255) binary NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/eu_external_id ON /*_*/external_user (eu_external_id);
+CREATE TABLE /*_*/langlinks (
+ ll_from int unsigned NOT NULL default 0,
+ ll_lang varbinary(20) NOT NULL default '',
+ ll_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ll_from ON /*_*/langlinks (ll_from, ll_lang);
+CREATE INDEX /*i*/ll_lang ON /*_*/langlinks (ll_lang, ll_title);
+CREATE TABLE /*_*/iwlinks (
+ iwl_from int unsigned NOT NULL default 0,
+ iwl_prefix varbinary(20) NOT NULL default '',
+ iwl_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/iwl_from ON /*_*/iwlinks (iwl_from, iwl_prefix, iwl_title);
+CREATE UNIQUE INDEX /*i*/iwl_prefix_title_from ON /*_*/iwlinks (iwl_prefix, iwl_title, iwl_from);
+CREATE TABLE /*_*/site_stats (
+ ss_row_id int unsigned NOT NULL,
+ ss_total_views bigint unsigned default 0,
+ ss_total_edits bigint unsigned default 0,
+ ss_good_articles bigint unsigned default 0,
+ ss_total_pages bigint default '-1',
+ ss_users bigint default '-1',
+ ss_active_users bigint default '-1',
+ ss_admins int default '-1',
+ ss_images int default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ss_row_id ON /*_*/site_stats (ss_row_id);
+CREATE TABLE /*_*/hitcounter (
+ hc_id int unsigned NOT NULL
+) ENGINE=HEAP MAX_ROWS=25000;
+CREATE TABLE /*_*/ipblocks (
+ ipb_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ ipb_address tinyblob NOT NULL,
+ ipb_user int unsigned NOT NULL default 0,
+ ipb_by int unsigned NOT NULL default 0,
+ ipb_by_text varchar(255) binary NOT NULL default '',
+ ipb_reason tinyblob NOT NULL,
+ ipb_timestamp binary(14) NOT NULL default '',
+ ipb_auto bool NOT NULL default 0,
+ ipb_anon_only bool NOT NULL default 0,
+ ipb_create_account bool NOT NULL default 1,
+ ipb_enable_autoblock bool NOT NULL default '1',
+ ipb_expiry varbinary(14) NOT NULL default '',
+ ipb_range_start tinyblob NOT NULL,
+ ipb_range_end tinyblob NOT NULL,
+ ipb_deleted bool NOT NULL default 0,
+ ipb_block_email bool NOT NULL default 0,
+ ipb_allow_usertalk bool NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ipb_address ON /*_*/ipblocks (ipb_address(255), ipb_user, ipb_auto, ipb_anon_only);
+CREATE INDEX /*i*/ipb_user ON /*_*/ipblocks (ipb_user);
+CREATE INDEX /*i*/ipb_range ON /*_*/ipblocks (ipb_range_start(8), ipb_range_end(8));
+CREATE INDEX /*i*/ipb_timestamp ON /*_*/ipblocks (ipb_timestamp);
+CREATE INDEX /*i*/ipb_expiry ON /*_*/ipblocks (ipb_expiry);
+CREATE TABLE /*_*/image (
+ img_name varchar(255) binary NOT NULL default '' PRIMARY KEY,
+ img_size int unsigned NOT NULL default 0,
+ img_width int NOT NULL default 0,
+ img_height int NOT NULL default 0,
+ img_metadata mediumblob NOT NULL,
+ img_bits int NOT NULL default 0,
+ img_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
+ img_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
+ img_minor_mime varbinary(100) NOT NULL default "unknown",
+ img_description tinyblob NOT NULL,
+ img_user int unsigned NOT NULL default 0,
+ img_user_text varchar(255) binary NOT NULL,
+ img_timestamp varbinary(14) NOT NULL default '',
+ img_sha1 varbinary(32) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/img_usertext_timestamp ON /*_*/image (img_user_text,img_timestamp);
+CREATE INDEX /*i*/img_size ON /*_*/image (img_size);
+CREATE INDEX /*i*/img_timestamp ON /*_*/image (img_timestamp);
+CREATE INDEX /*i*/img_sha1 ON /*_*/image (img_sha1);
+CREATE TABLE /*_*/oldimage (
+ oi_name varchar(255) binary NOT NULL default '',
+ oi_archive_name varchar(255) binary NOT NULL default '',
+ oi_size int unsigned NOT NULL default 0,
+ oi_width int NOT NULL default 0,
+ oi_height int NOT NULL default 0,
+ oi_bits int NOT NULL default 0,
+ oi_description tinyblob NOT NULL,
+ oi_user int unsigned NOT NULL default 0,
+ oi_user_text varchar(255) binary NOT NULL,
+ oi_timestamp binary(14) NOT NULL default '',
+ oi_metadata mediumblob NOT NULL,
+ oi_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
+ oi_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") NOT NULL default "unknown",
+ oi_minor_mime varbinary(100) NOT NULL default "unknown",
+ oi_deleted tinyint unsigned NOT NULL default 0,
+ oi_sha1 varbinary(32) NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/oi_usertext_timestamp ON /*_*/oldimage (oi_user_text,oi_timestamp);
+CREATE INDEX /*i*/oi_name_timestamp ON /*_*/oldimage (oi_name,oi_timestamp);
+CREATE INDEX /*i*/oi_name_archive_name ON /*_*/oldimage (oi_name,oi_archive_name(14));
+CREATE INDEX /*i*/oi_sha1 ON /*_*/oldimage (oi_sha1);
+CREATE TABLE /*_*/filearchive (
+ fa_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ fa_name varchar(255) binary NOT NULL default '',
+ fa_archive_name varchar(255) binary default '',
+ fa_storage_group varbinary(16),
+ fa_storage_key varbinary(64) default '',
+ fa_deleted_user int,
+ fa_deleted_timestamp binary(14) default '',
+ fa_deleted_reason text,
+ fa_size int unsigned default 0,
+ fa_width int default 0,
+ fa_height int default 0,
+ fa_metadata mediumblob,
+ fa_bits int default 0,
+ fa_media_type ENUM("UNKNOWN", "BITMAP", "DRAWING", "AUDIO", "VIDEO", "MULTIMEDIA", "OFFICE", "TEXT", "EXECUTABLE", "ARCHIVE") default NULL,
+ fa_major_mime ENUM("unknown", "application", "audio", "image", "text", "video", "message", "model", "multipart") default "unknown",
+ fa_minor_mime varbinary(100) default "unknown",
+ fa_description tinyblob,
+ fa_user int unsigned default 0,
+ fa_user_text varchar(255) binary,
+ fa_timestamp binary(14) default '',
+ fa_deleted tinyint unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/fa_name ON /*_*/filearchive (fa_name, fa_timestamp);
+CREATE INDEX /*i*/fa_storage_group ON /*_*/filearchive (fa_storage_group, fa_storage_key);
+CREATE INDEX /*i*/fa_deleted_timestamp ON /*_*/filearchive (fa_deleted_timestamp);
+CREATE INDEX /*i*/fa_user_timestamp ON /*_*/filearchive (fa_user_text,fa_timestamp);
+CREATE TABLE /*_*/recentchanges (
+ rc_id int NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ rc_timestamp varbinary(14) NOT NULL default '',
+ rc_cur_time varbinary(14) NOT NULL default '',
+ rc_user int unsigned NOT NULL default 0,
+ rc_user_text varchar(255) binary NOT NULL,
+ rc_namespace int NOT NULL default 0,
+ rc_title varchar(255) binary NOT NULL default '',
+ rc_comment varchar(255) binary NOT NULL default '',
+ rc_minor tinyint unsigned NOT NULL default 0,
+ rc_bot tinyint unsigned NOT NULL default 0,
+ rc_new tinyint unsigned NOT NULL default 0,
+ rc_cur_id int unsigned NOT NULL default 0,
+ rc_this_oldid int unsigned NOT NULL default 0,
+ rc_last_oldid int unsigned NOT NULL default 0,
+ rc_type tinyint unsigned NOT NULL default 0,
+ rc_moved_to_ns tinyint unsigned NOT NULL default 0,
+ rc_moved_to_title varchar(255) binary NOT NULL default '',
+ rc_patrolled tinyint unsigned NOT NULL default 0,
+ rc_ip varbinary(40) NOT NULL default '',
+ rc_old_len int,
+ rc_new_len int,
+ rc_deleted tinyint unsigned NOT NULL default 0,
+ rc_logid int unsigned NOT NULL default 0,
+ rc_log_type varbinary(255) NULL default NULL,
+ rc_log_action varbinary(255) NULL default NULL,
+ rc_params blob NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/rc_timestamp ON /*_*/recentchanges (rc_timestamp);
+CREATE INDEX /*i*/rc_namespace_title ON /*_*/recentchanges (rc_namespace, rc_title);
+CREATE INDEX /*i*/rc_cur_id ON /*_*/recentchanges (rc_cur_id);
+CREATE INDEX /*i*/new_name_timestamp ON /*_*/recentchanges (rc_new,rc_namespace,rc_timestamp);
+CREATE INDEX /*i*/rc_ip ON /*_*/recentchanges (rc_ip);
+CREATE INDEX /*i*/rc_ns_usertext ON /*_*/recentchanges (rc_namespace, rc_user_text);
+CREATE INDEX /*i*/rc_user_text ON /*_*/recentchanges (rc_user_text, rc_timestamp);
+CREATE TABLE /*_*/watchlist (
+ wl_user int unsigned NOT NULL,
+ wl_namespace int NOT NULL default 0,
+ wl_title varchar(255) binary NOT NULL default '',
+ wl_notificationtimestamp varbinary(14)
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/wl_user ON /*_*/watchlist (wl_user, wl_namespace, wl_title);
+CREATE INDEX /*i*/namespace_title ON /*_*/watchlist (wl_namespace, wl_title);
+CREATE TABLE /*_*/math (
+ math_inputhash varbinary(16) NOT NULL,
+ math_outputhash varbinary(16) NOT NULL,
+ math_html_conservativeness tinyint NOT NULL,
+ math_html text,
+ math_mathml text
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/math_inputhash ON /*_*/math (math_inputhash);
+CREATE TABLE /*_*/searchindex (
+ si_page int unsigned NOT NULL,
+ si_title varchar(255) NOT NULL default '',
+ si_text mediumtext NOT NULL
+) ENGINE=MyISAM;
+CREATE UNIQUE INDEX /*i*/si_page ON /*_*/searchindex (si_page);
+CREATE FULLTEXT INDEX /*i*/si_title ON /*_*/searchindex (si_title);
+CREATE FULLTEXT INDEX /*i*/si_text ON /*_*/searchindex (si_text);
+CREATE TABLE /*_*/interwiki (
+ iw_prefix varchar(32) NOT NULL,
+ iw_url blob NOT NULL,
+ iw_api blob NOT NULL,
+ iw_wikiid varchar(64) NOT NULL,
+ iw_local bool NOT NULL,
+ iw_trans tinyint NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/iw_prefix ON /*_*/interwiki (iw_prefix);
+CREATE TABLE /*_*/querycache (
+ qc_type varbinary(32) NOT NULL,
+ qc_value int unsigned NOT NULL default 0,
+ qc_namespace int NOT NULL default 0,
+ qc_title varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/qc_type ON /*_*/querycache (qc_type,qc_value);
+CREATE TABLE /*_*/objectcache (
+ keyname varbinary(255) NOT NULL default '' PRIMARY KEY,
+ value mediumblob,
+ exptime datetime
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/exptime ON /*_*/objectcache (exptime);
+CREATE TABLE /*_*/transcache (
+ tc_url varbinary(255) NOT NULL,
+ tc_contents text,
+ tc_time binary(14) NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/tc_url_idx ON /*_*/transcache (tc_url);
+CREATE TABLE /*_*/logging (
+ log_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ log_type varbinary(32) NOT NULL default '',
+ log_action varbinary(32) NOT NULL default '',
+ log_timestamp binary(14) NOT NULL default '19700101000000',
+ log_user int unsigned NOT NULL default 0,
+ log_user_text varchar(255) binary NOT NULL default '',
+ log_namespace int NOT NULL default 0,
+ log_title varchar(255) binary NOT NULL default '',
+ log_page int unsigned NULL,
+ log_comment varchar(255) NOT NULL default '',
+ log_params blob NOT NULL,
+ log_deleted tinyint unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/type_time ON /*_*/logging (log_type, log_timestamp);
+CREATE INDEX /*i*/user_time ON /*_*/logging (log_user, log_timestamp);
+CREATE INDEX /*i*/page_time ON /*_*/logging (log_namespace, log_title, log_timestamp);
+CREATE INDEX /*i*/times ON /*_*/logging (log_timestamp);
+CREATE INDEX /*i*/log_user_type_time ON /*_*/logging (log_user, log_type, log_timestamp);
+CREATE INDEX /*i*/log_page_id_time ON /*_*/logging (log_page,log_timestamp);
+CREATE TABLE /*_*/log_search (
+ ls_field varbinary(32) NOT NULL,
+ ls_value varchar(255) NOT NULL,
+ ls_log_id int unsigned NOT NULL default 0
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/ls_field_val ON /*_*/log_search (ls_field,ls_value,ls_log_id);
+CREATE INDEX /*i*/ls_log_id ON /*_*/log_search (ls_log_id);
+CREATE TABLE /*_*/trackbacks (
+ tb_id int PRIMARY KEY AUTO_INCREMENT,
+ tb_page int REFERENCES /*_*/page(page_id) ON DELETE CASCADE,
+ tb_title varchar(255) NOT NULL,
+ tb_url blob NOT NULL,
+ tb_ex text,
+ tb_name varchar(255)
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/tb_page ON /*_*/trackbacks (tb_page);
+CREATE TABLE /*_*/job (
+ job_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT,
+ job_cmd varbinary(60) NOT NULL default '',
+ job_namespace int NOT NULL,
+ job_title varchar(255) binary NOT NULL,
+ job_params blob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/job_cmd ON /*_*/job (job_cmd, job_namespace, job_title, job_params(128));
+CREATE TABLE /*_*/querycache_info (
+ qci_type varbinary(32) NOT NULL default '',
+ qci_timestamp binary(14) NOT NULL default '19700101000000'
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/qci_type ON /*_*/querycache_info (qci_type);
+CREATE TABLE /*_*/redirect (
+ rd_from int unsigned NOT NULL default 0 PRIMARY KEY,
+ rd_namespace int NOT NULL default 0,
+ rd_title varchar(255) binary NOT NULL default '',
+ rd_interwiki varchar(32) default NULL,
+ rd_fragment varchar(255) binary default NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/rd_ns_title ON /*_*/redirect (rd_namespace,rd_title,rd_from);
+CREATE TABLE /*_*/querycachetwo (
+ qcc_type varbinary(32) NOT NULL,
+ qcc_value int unsigned NOT NULL default 0,
+ qcc_namespace int NOT NULL default 0,
+ qcc_title varchar(255) binary NOT NULL default '',
+ qcc_namespacetwo int NOT NULL default 0,
+ qcc_titletwo varchar(255) binary NOT NULL default ''
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/qcc_type ON /*_*/querycachetwo (qcc_type,qcc_value);
+CREATE INDEX /*i*/qcc_title ON /*_*/querycachetwo (qcc_type,qcc_namespace,qcc_title);
+CREATE INDEX /*i*/qcc_titletwo ON /*_*/querycachetwo (qcc_type,qcc_namespacetwo,qcc_titletwo);
+CREATE TABLE /*_*/page_restrictions (
+ pr_page int NOT NULL,
+ pr_type varbinary(60) NOT NULL,
+ pr_level varbinary(60) NOT NULL,
+ pr_cascade tinyint NOT NULL,
+ pr_user int NULL,
+ pr_expiry varbinary(14) NULL,
+ pr_id int unsigned NOT NULL PRIMARY KEY AUTO_INCREMENT
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/pr_pagetype ON /*_*/page_restrictions (pr_page,pr_type);
+CREATE INDEX /*i*/pr_typelevel ON /*_*/page_restrictions (pr_type,pr_level);
+CREATE INDEX /*i*/pr_level ON /*_*/page_restrictions (pr_level);
+CREATE INDEX /*i*/pr_cascade ON /*_*/page_restrictions (pr_cascade);
+CREATE TABLE /*_*/protected_titles (
+ pt_namespace int NOT NULL,
+ pt_title varchar(255) binary NOT NULL,
+ pt_user int unsigned NOT NULL,
+ pt_reason tinyblob,
+ pt_timestamp binary(14) NOT NULL,
+ pt_expiry varbinary(14) NOT NULL default '',
+ pt_create_perm varbinary(60) NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/pt_namespace_title ON /*_*/protected_titles (pt_namespace,pt_title);
+CREATE INDEX /*i*/pt_timestamp ON /*_*/protected_titles (pt_timestamp);
+CREATE TABLE /*_*/page_props (
+ pp_page int NOT NULL,
+ pp_propname varbinary(60) NOT NULL,
+ pp_value blob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/pp_page_propname ON /*_*/page_props (pp_page,pp_propname);
+CREATE TABLE /*_*/updatelog (
+ ul_key varchar(255) NOT NULL PRIMARY KEY,
+ ul_value blob
+) /*$wgDBTableOptions*/;
+CREATE TABLE /*_*/change_tag (
+ ct_rc_id int NULL,
+ ct_log_id int NULL,
+ ct_rev_id int NULL,
+ ct_tag varchar(255) NOT NULL,
+ ct_params blob NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/change_tag_rc_tag ON /*_*/change_tag (ct_rc_id,ct_tag);
+CREATE UNIQUE INDEX /*i*/change_tag_log_tag ON /*_*/change_tag (ct_log_id,ct_tag);
+CREATE UNIQUE INDEX /*i*/change_tag_rev_tag ON /*_*/change_tag (ct_rev_id,ct_tag);
+CREATE INDEX /*i*/change_tag_tag_id ON /*_*/change_tag (ct_tag,ct_rc_id,ct_rev_id,ct_log_id);
+CREATE TABLE /*_*/tag_summary (
+ ts_rc_id int NULL,
+ ts_log_id int NULL,
+ ts_rev_id int NULL,
+ ts_tags blob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/tag_summary_rc_id ON /*_*/tag_summary (ts_rc_id);
+CREATE UNIQUE INDEX /*i*/tag_summary_log_id ON /*_*/tag_summary (ts_log_id);
+CREATE UNIQUE INDEX /*i*/tag_summary_rev_id ON /*_*/tag_summary (ts_rev_id);
+CREATE TABLE /*_*/valid_tag (
+ vt_tag varchar(255) NOT NULL PRIMARY KEY
+) /*$wgDBTableOptions*/;
+CREATE TABLE /*_*/l10n_cache (
+ lc_lang varbinary(32) NOT NULL,
+ lc_key varchar(255) NOT NULL,
+ lc_value mediumblob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE INDEX /*i*/lc_lang_key ON /*_*/l10n_cache (lc_lang, lc_key);
+CREATE TABLE /*_*/msg_resource (
+ mr_resource varbinary(255) NOT NULL,
+ mr_lang varbinary(32) NOT NULL,
+ mr_blob mediumblob NOT NULL,
+ mr_timestamp binary(14) NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/mr_resource_lang ON /*_*/msg_resource (mr_resource, mr_lang);
+CREATE TABLE /*_*/msg_resource_links (
+ mrl_resource varbinary(255) NOT NULL,
+ mrl_message varbinary(255) NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/mrl_message_resource ON /*_*/msg_resource_links (mrl_message, mrl_resource);
+CREATE TABLE /*_*/module_deps (
+ md_module varbinary(255) NOT NULL,
+ md_skin varbinary(32) NOT NULL,
+ md_deps mediumblob NOT NULL
+) /*$wgDBTableOptions*/;
+CREATE UNIQUE INDEX /*i*/md_module_skin ON /*_*/module_deps (md_module, md_skin);
diff --git a/tests/phpunit/includes/installer/InstallDocFormatterTest.php b/tests/phpunit/includes/installer/InstallDocFormatterTest.php
new file mode 100644
index 00000000..56485d3e
--- /dev/null
+++ b/tests/phpunit/includes/installer/InstallDocFormatterTest.php
@@ -0,0 +1,64 @@
+<?php
+/*
+ * To change this template, choose Tools | Templates
+ * and open the template in the editor.
+ */
+
+class InstallDocFormatterTest extends MediaWikiTestCase {
+ /**
+ * @covers InstallDocFormatter::format
+ * @dataProvider provideDocFormattingTests
+ */
+ function testFormat( $expected, $unformattedText, $message = '' ) {
+ $this->assertEquals(
+ $expected,
+ InstallDocFormatter::format( $unformattedText ),
+ $message
+ );
+ }
+
+ /**
+ * Provider for testFormat()
+ */
+ function provideDocFormattingTests() {
+ # Format: (expected string, unformattedText string, optional message)
+ return array(
+ # Escape some wikitext
+ array( 'Install &lt;tag>' , 'Install <tag>', 'Escaping <' ),
+ array( 'Install &#123;&#123;template}}' , 'Install {{template}}', 'Escaping [[' ),
+ array( 'Install &#91;&#91;page]]' , 'Install [[page]]', 'Escaping {{' ),
+ array( 'Install ' , "Install \r", 'Removing \r' ),
+
+ # Transform \t{1,2} into :{1,2}
+ array( ':One indentation', "\tOne indentation", 'Replacing a single \t' ),
+ array( '::Two indentations', "\t\tTwo indentations", 'Replacing 2 x \t' ),
+
+ # Transform 'bug 123' links
+ array(
+ '<span class="config-plainlink">[https://bugzilla.wikimedia.org/123 bug 123]</span>',
+ 'bug 123', 'Testing bug 123 links' ),
+ array(
+ '(<span class="config-plainlink">[https://bugzilla.wikimedia.org/987654 bug 987654]</span>)',
+ '(bug 987654)', 'Testing (bug 987654) links' ),
+
+ # "bug abc" shouldn't work
+ array( 'bug foobar', 'bug foobar', "Don't match bug followed by non-digits" ),
+ array( 'bug !!fakefake!!', 'bug !!fakefake!!', "Don't match bug followed by non-digits" ),
+
+ # Transform '$wgFooBar' links
+ array(
+ '<span class="config-plainlink">[http://www.mediawiki.org/wiki/Manual:$wgFooBar $wgFooBar]</span>',
+ '$wgFooBar', 'Testing basic $wgFooBar' ),
+ array(
+ '<span class="config-plainlink">[http://www.mediawiki.org/wiki/Manual:$wgFooBar45 $wgFooBar45]</span>',
+ '$wgFooBar45', 'Testing $wgFooBar45 (with numbers)' ),
+ array(
+ '<span class="config-plainlink">[http://www.mediawiki.org/wiki/Manual:$wgFoo_Bar $wgFoo_Bar]</span>',
+ '$wgFoo_Bar', 'Testing $wgFoo_Bar (with underscore)' ),
+
+ # Icky variables that shouldn't link
+ array( '$myAwesomeVariable', '$myAwesomeVariable', 'Testing $myAwesomeVariable (not starting with $wg)' ),
+ array( '$()not!a&Var', '$()not!a&Var', 'Testing $()not!a&Var (obviously not a variable)' ),
+ );
+ }
+}
diff --git a/tests/phpunit/includes/libs/IEUrlExtensionTest.php b/tests/phpunit/includes/libs/IEUrlExtensionTest.php
new file mode 100644
index 00000000..c6270e90
--- /dev/null
+++ b/tests/phpunit/includes/libs/IEUrlExtensionTest.php
@@ -0,0 +1,118 @@
+<?php
+
+/**
+ * Tests for IEUrlExtension::findIE6Extension
+ */
+class IEUrlExtensionTest extends MediaWikiTestCase {
+ function testSimple() {
+ $this->assertEquals(
+ 'y',
+ IEUrlExtension::findIE6Extension( 'x.y' ),
+ 'Simple extension'
+ );
+ }
+
+ function testSimpleNoExt() {
+ $this->assertEquals(
+ '',
+ IEUrlExtension::findIE6Extension( 'x' ),
+ 'No extension'
+ );
+ }
+
+ function testEmpty() {
+ $this->assertEquals(
+ '',
+ IEUrlExtension::findIE6Extension( '' ),
+ 'Empty string'
+ );
+ }
+
+ function testQuestionMark() {
+ $this->assertEquals(
+ '',
+ IEUrlExtension::findIE6Extension( '?' ),
+ 'Question mark only'
+ );
+ }
+
+ function testExtQuestionMark() {
+ $this->assertEquals(
+ 'x',
+ IEUrlExtension::findIE6Extension( '.x?' ),
+ 'Extension then question mark'
+ );
+ }
+
+ function testQuestionMarkExt() {
+ $this->assertEquals(
+ 'x',
+ IEUrlExtension::findIE6Extension( '?.x' ),
+ 'Question mark then extension'
+ );
+ }
+
+ function testInvalidChar() {
+ $this->assertEquals(
+ '',
+ IEUrlExtension::findIE6Extension( '.x*' ),
+ 'Extension with invalid character'
+ );
+ }
+
+ function testInvalidCharThenExtension() {
+ $this->assertEquals(
+ 'x',
+ IEUrlExtension::findIE6Extension( '*.x' ),
+ 'Invalid character followed by an extension'
+ );
+ }
+
+ function testMultipleQuestionMarks() {
+ $this->assertEquals(
+ 'c',
+ IEUrlExtension::findIE6Extension( 'a?b?.c?.d?e?f' ),
+ 'Multiple question marks'
+ );
+ }
+
+ function testExeException() {
+ $this->assertEquals(
+ 'd',
+ IEUrlExtension::findIE6Extension( 'a?b?.exe?.d?.e' ),
+ '.exe exception'
+ );
+ }
+
+ function testExeException2() {
+ $this->assertEquals(
+ 'exe',
+ IEUrlExtension::findIE6Extension( 'a?b?.exe' ),
+ '.exe exception 2'
+ );
+ }
+
+ function testHash() {
+ $this->assertEquals(
+ '',
+ IEUrlExtension::findIE6Extension( 'a#b.c' ),
+ 'Hash character preceding extension'
+ );
+ }
+
+ function testHash2() {
+ $this->assertEquals(
+ '',
+ IEUrlExtension::findIE6Extension( 'a?#b.c' ),
+ 'Hash character preceding extension 2'
+ );
+ }
+
+ function testDotAtEnd() {
+ $this->assertEquals(
+ '',
+ IEUrlExtension::findIE6Extension( '.' ),
+ 'Dot at end of string'
+ );
+ }
+}
diff --git a/tests/phpunit/includes/libs/JavaScriptMinifierTest.php b/tests/phpunit/includes/libs/JavaScriptMinifierTest.php
new file mode 100644
index 00000000..aa05500e
--- /dev/null
+++ b/tests/phpunit/includes/libs/JavaScriptMinifierTest.php
@@ -0,0 +1,105 @@
+<?php
+
+class JavaScriptMinifierTest extends MediaWikiTestCase {
+
+ function provideCases() {
+ return array(
+ // Basic tokens
+ array( "\r\t\f \v\n\r", "" ),
+ array( "/* Foo *\n*bar\n*/", "" ),
+ /**
+ * ' Foo \' bar \
+ * baz \' quox ' .
+ */
+ array( "' Foo \\' bar \\\n baz \\' quox ' .length", "' Foo \\' bar \\\n baz \\' quox '.length" ),
+ array( "\" Foo \\\" bar \\\n baz \\\" quox \" .length", "\" Foo \\\" bar \\\n baz \\\" quox \".length" ),
+ array( "// Foo b/ar baz", "" ),
+ array( "/ Foo \\/ bar [ / \\] / ] baz / .length", "/ Foo \\/ bar [ / \\] / ] baz /.length" ),
+ // HTML comments
+ array( "<!-- Foo bar", "" ),
+ array( "<!-- Foo --> bar", "" ),
+ array( "--> Foo", "" ),
+ array( "x --> y", "x-->y" ),
+ // Semicolon insertion
+ array( "(function(){return\nx;})", "(function(){return\nx;})" ),
+ array( "throw\nx;", "throw\nx;" ),
+ array( "while(p){continue\nx;}", "while(p){continue\nx;}" ),
+ array( "while(p){break\nx;}", "while(p){break\nx;}" ),
+ array( "var\nx;", "var x;" ),
+ array( "x\ny;", "x\ny;" ),
+ array( "x\n++y;", "x\n++y;" ),
+ array( "x\n!y;", "x\n!y;" ),
+ array( "x\n{y}", "x\n{y}" ),
+ array( "x\n+y;", "x+y;" ),
+ array( "x\n(y);", "x(y);" ),
+ array( "5.\nx;", "5.\nx;" ),
+ array( "0xFF.\nx;", "0xFF.x;" ),
+ array( "5.3.\nx;", "5.3.x;" ),
+ // Token separation
+ array( "x in y", "x in y" ),
+ array( "/x/g in y", "/x/g in y" ),
+ array( "x in 30", "x in 30" ),
+ array( "x + ++ y", "x+ ++y" ),
+ array( "x / /y/.exec(z)", "x/ /y/.exec(z)" ),
+ // State machine
+ array( "/ x/g", "/ x/g" ),
+ array( "(function(){return/ x/g})", "(function(){return/ x/g})" ),
+ array( "+/ x/g", "+/ x/g" ),
+ array( "++/ x/g", "++/ x/g" ),
+ array( "x/ x/g", "x/x/g" ),
+ array( "(/ x/g)", "(/ x/g)" ),
+ array( "if(/ x/g);", "if(/ x/g);" ),
+ array( "(x/ x/g)", "(x/x/g)" ),
+ array( "([/ x/g])", "([/ x/g])" ),
+ array( "+x/ x/g", "+x/x/g" ),
+ array( "{}/ x/g", "{}/ x/g" ),
+ array( "+{}/ x/g", "+{}/x/g" ),
+ array( "(x)/ x/g", "(x)/x/g" ),
+ array( "if(x)/ x/g", "if(x)/ x/g" ),
+ array( "for(x;x;{}/ x/g);", "for(x;x;{}/x/g);" ),
+ array( "x;x;{}/ x/g", "x;x;{}/ x/g" ),
+ array( "x:{}/ x/g", "x:{}/ x/g" ),
+ array( "switch(x){case y?z:{}/ x/g:{}/ x/g;}", "switch(x){case y?z:{}/x/g:{}/ x/g;}" ),
+ array( "function x(){}/ x/g", "function x(){}/ x/g" ),
+ array( "+function x(){}/ x/g", "+function x(){}/x/g" ),
+
+ // Tests for things that broke in the past
+ // Multiline quoted string
+ array( "var foo=\"\\\nblah\\\n\";", "var foo=\"\\\nblah\\\n\";" ),
+ // Multiline quoted string followed by string with spaces
+ array( "var foo=\"\\\nblah\\\n\";\nvar baz = \" foo \";\n", "var foo=\"\\\nblah\\\n\";var baz=\" foo \";" ),
+ // URL in quoted string ( // is not a comment)
+ array( "aNode.setAttribute('href','http://foo.bar.org/baz');", "aNode.setAttribute('href','http://foo.bar.org/baz');" ),
+ // URL in quoted string after multiline quoted string
+ array( "var foo=\"\\\nblah\\\n\";\naNode.setAttribute('href','http://foo.bar.org/baz');", "var foo=\"\\\nblah\\\n\";aNode.setAttribute('href','http://foo.bar.org/baz');" ),
+ // Division vs. regex nastiness
+ array( "alert( (10+10) / '/'.charCodeAt( 0 ) + '//' );", "alert((10+10)/'/'.charCodeAt(0)+'//');" ),
+ array( "if(1)/a /g.exec('Pa ss');", "if(1)/a /g.exec('Pa ss');" ),
+
+ // newline insertion after 1000 chars: break after the "++", not before
+ array( str_repeat( ';', 996 ) . "if(x++);", str_repeat( ';', 996 ) . "if(x++\n);" ),
+
+ // Unicode letter characters should pass through ok in identifiers (bug 31187)
+ array( "var KaÅSkatolVal = {}", 'var KaÅSkatolVal={}'),
+ // And also per spec unicode char escape values should work in identifiers,
+ // as long as it's a valid char. In future it might get normalized.
+ array( "var Ka\\u015dSkatolVal = {}", 'var Ka\\u015dSkatolVal={}'),
+ );
+ }
+
+ /**
+ * @dataProvider provideCases
+ */
+ function testJavaScriptMinifierOutput( $code, $expectedOutput ) {
+ $minified = JavaScriptMinifier::minify( $code );
+
+ // JSMin+'s parser will throw an exception if output is not valid JS.
+ // suppression of warnings needed for stupid crap
+ wfSuppressWarnings();
+ $parser = new JSParser();
+ wfRestoreWarnings();
+ $parser->parse( $minified, 'minify-test.js', 1 );
+
+ $this->assertEquals( $expectedOutput, $minified, "Minified output should be in the form expected." );
+ }
+}
diff --git a/tests/phpunit/includes/media/BitmapMetadataHandlerTest.php b/tests/phpunit/includes/media/BitmapMetadataHandlerTest.php
new file mode 100644
index 00000000..a0d5cd86
--- /dev/null
+++ b/tests/phpunit/includes/media/BitmapMetadataHandlerTest.php
@@ -0,0 +1,125 @@
+<?php
+class BitmapMetadataHandlerTest extends MediaWikiTestCase {
+
+ public function setUp() {
+ $this->filePath = dirname( __FILE__ ) . '/../../data/media/';
+ }
+
+ /**
+ * Test if having conflicting metadata values from different
+ * types of metadata, that the right one takes precedence.
+ *
+ * Basically the file has IPTC and XMP metadata, the
+ * IPTC should override the XMP, except for the multilingual
+ * translation (to en) where XMP should win.
+ */
+ public function testMultilingualCascade() {
+ global $wgShowEXIF;
+ if ( !$wgShowEXIF ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+
+ $meta = BitmapMetadataHandler::Jpeg( $this->filePath .
+ '/Xmp-exif-multilingual_test.jpg' );
+
+ $expected = array(
+ 'x-default' => 'right(iptc)',
+ 'en' => 'right translation',
+ '_type' => 'lang'
+ );
+
+ $this->assertArrayHasKey( 'ImageDescription', $meta,
+ 'Did not extract any ImageDescription info?!' );
+
+ $this->assertEquals( $expected, $meta['ImageDescription'] );
+ }
+
+ /**
+ * Test for jpeg comments are being handled by
+ * BitmapMetadataHandler correctly.
+ *
+ * There's more extensive tests of comment extraction in
+ * JpegMetadataExtractorTests.php
+ */
+ public function testJpegComment() {
+ $meta = BitmapMetadataHandler::Jpeg( $this->filePath .
+ 'jpeg-comment-utf.jpg' );
+
+ $this->assertEquals( 'UTF-8 JPEG Comment — ¼',
+ $meta['JPEGFileComment'][0] );
+ }
+
+ public function testIPTCDates() {
+ $meta = BitmapMetadataHandler::Jpeg( $this->filePath .
+ 'iptc-timetest.jpg' );
+
+ $this->assertEquals( '2020:07:14 01:36:05', $meta['DateTimeDigitized'] );
+ $this->assertEquals( '1997:03:02 00:01:02', $meta['DateTimeOriginal'] );
+ }
+ /* File has an invalid time (+ one valid but really weird time)
+ * that shouldn't be included
+ */
+ public function testIPTCDatesInvalid() {
+ $meta = BitmapMetadataHandler::Jpeg( $this->filePath .
+ 'iptc-timetest-invalid.jpg' );
+
+ $this->assertEquals( '1845:03:02 00:01:02', $meta['DateTimeOriginal'] );
+ $this->assertFalse( isset( $meta['DateTimeDigitized'] ) );
+ }
+
+ /**
+ * XMP data should take priority over iptc data
+ * when hash has been updated, but not when
+ * the hash is wrong.
+ */
+ public function testMerging() {
+ $merger = new BitmapMetadataHandler();
+ $merger->addMetadata( array( 'foo' => 'xmp' ), 'xmp-general' );
+ $merger->addMetadata( array( 'bar' => 'xmp' ), 'xmp-general' );
+ $merger->addMetadata( array( 'baz' => 'xmp' ), 'xmp-general' );
+ $merger->addMetadata( array( 'fred' => 'xmp' ), 'xmp-general' );
+ $merger->addMetadata( array( 'foo' => 'iptc (hash)' ), 'iptc-good-hash' );
+ $merger->addMetadata( array( 'bar' => 'iptc (bad hash)' ), 'iptc-bad-hash' );
+ $merger->addMetadata( array( 'baz' => 'iptc (bad hash)' ), 'iptc-bad-hash' );
+ $merger->addMetadata( array( 'fred' => 'iptc (no hash)' ), 'iptc-no-hash' );
+ $merger->addMetadata( array( 'baz' => 'exif' ), 'exif' );
+
+ $actual = $merger->getMetadataArray();
+ $expected = array(
+ 'foo' => 'xmp',
+ 'bar' => 'iptc (bad hash)',
+ 'baz' => 'exif',
+ 'fred' => 'xmp',
+ );
+ $this->assertEquals( $expected, $actual );
+ }
+
+ public function testPNGXMP() {
+ $handler = new BitmapMetadataHandler();
+ $result = $handler->png( $this->filePath . 'xmp.png' );
+ $expected = array (
+ 'frameCount' => 0,
+ 'loopCount' => 1,
+ 'duration' => 0,
+ 'bitDepth' => 1,
+ 'colorType' => 'index-coloured',
+ 'metadata' => array (
+ 'SerialNumber' => '123456789',
+ '_MW_PNG_VERSION' => 1,
+ ),
+ );
+ $this->assertEquals( $expected, $result );
+ }
+ public function testPNGNative() {
+ $handler = new BitmapMetadataHandler();
+ $result = $handler->png( $this->filePath . 'Png-native-test.png' );
+ $expected = 'http://example.com/url';
+ $this->assertEquals( $expected, $result['metadata']['Identifier']['x-default'] );
+ }
+ public function testTiffByteOrder() {
+ $handler = new BitmapMetadataHandler();
+ $res = $handler->getTiffByteOrder( $this->filePath . 'test.tiff' );
+ $this->assertEquals( 'LE', $res );
+ }
+
+}
diff --git a/tests/phpunit/includes/media/BitmapScalingTest.php b/tests/phpunit/includes/media/BitmapScalingTest.php
new file mode 100644
index 00000000..5bcd3232
--- /dev/null
+++ b/tests/phpunit/includes/media/BitmapScalingTest.php
@@ -0,0 +1,136 @@
+<?php
+
+class BitmapScalingTest extends MediaWikiTestCase {
+
+ function setUp() {
+ global $wgMaxImageArea;
+ $this->oldMaxImageArea = $wgMaxImageArea;
+ $wgMaxImageArea = 1.25e7; // 3500x3500
+ }
+ function tearDown() {
+ global $wgMaxImageArea;
+ $wgMaxImageArea = $this->oldMaxImageArea;
+ }
+ /**
+ * @dataProvider provideNormaliseParams
+ */
+ function testNormaliseParams( $fileDimensions, $expectedParams, $params, $msg ) {
+ $file = new FakeDimensionFile( $fileDimensions );
+ $handler = new BitmapHandler;
+ $valid = $handler->normaliseParams( $file, $params );
+ $this->assertTrue( $valid );
+ $this->assertEquals( $expectedParams, $params, $msg );
+ }
+
+ function provideNormaliseParams() {
+ return array(
+ /* Regular resize operations */
+ array(
+ array( 1024, 768 ),
+ array(
+ 'width' => 512, 'height' => 384,
+ 'physicalWidth' => 512, 'physicalHeight' => 384,
+ 'page' => 1,
+ ),
+ array( 'width' => 512 ),
+ 'Resizing with width set',
+ ),
+ array(
+ array( 1024, 768 ),
+ array(
+ 'width' => 512, 'height' => 384,
+ 'physicalWidth' => 512, 'physicalHeight' => 384,
+ 'page' => 1,
+ ),
+ array( 'width' => 512, 'height' => 768 ),
+ 'Resizing with height set too high',
+ ),
+ array(
+ array( 1024, 768 ),
+ array(
+ 'width' => 512, 'height' => 384,
+ 'physicalWidth' => 512, 'physicalHeight' => 384,
+ 'page' => 1,
+ ),
+ array( 'width' => 1024, 'height' => 384 ),
+ 'Resizing with height set',
+ ),
+
+ /* Very tall images */
+ array(
+ array( 1000, 100 ),
+ array(
+ 'width' => 5, 'height' => 1,
+ 'physicalWidth' => 5, 'physicalHeight' => 1,
+ 'page' => 1,
+ ),
+ array( 'width' => 5 ),
+ 'Very wide image',
+ ),
+
+ array(
+ array( 100, 1000 ),
+ array(
+ 'width' => 1, 'height' => 10,
+ 'physicalWidth' => 1, 'physicalHeight' => 10,
+ 'page' => 1,
+ ),
+ array( 'width' => 1 ),
+ 'Very high image',
+ ),
+ array(
+ array( 100, 1000 ),
+ array(
+ 'width' => 1, 'height' => 5,
+ 'physicalWidth' => 1, 'physicalHeight' => 10,
+ 'page' => 1,
+ ),
+ array( 'width' => 10, 'height' => 5 ),
+ 'Very high image with height set',
+ ),
+ /* Max image area */
+ array(
+ array( 4000, 4000 ),
+ array(
+ 'width' => 5000, 'height' => 5000,
+ 'physicalWidth' => 4000, 'physicalHeight' => 4000,
+ 'page' => 1,
+ ),
+ array( 'width' => 5000 ),
+ 'Bigger than max image size but doesn\'t need scaling',
+ ),
+ );
+ }
+ function testTooBigImage() {
+ $file = new FakeDimensionFile( array( 4000, 4000 ) );
+ $handler = new BitmapHandler;
+ $params = array( 'width' => '3700' ); // Still bigger than max size.
+ $this->assertFalse( $handler->normaliseParams( $file, $params ) );
+ }
+ function testTooBigMustRenderImage() {
+ $file = new FakeDimensionFile( array( 4000, 4000 ) );
+ $file->mustRender = true;
+ $handler = new BitmapHandler;
+ $params = array( 'width' => '5000' ); // Still bigger than max size.
+ $this->assertFalse( $handler->normaliseParams( $file, $params ) );
+ }
+}
+
+class FakeDimensionFile extends File {
+ public $mustRender = false;
+
+ public function __construct( $dimensions ) {
+ parent::__construct( Title::makeTitle( NS_FILE, 'Test' ), null );
+
+ $this->dimensions = $dimensions;
+ }
+ public function getWidth( $page = 1 ) {
+ return $this->dimensions[0];
+ }
+ public function getHeight( $page = 1 ) {
+ return $this->dimensions[1];
+ }
+ public function mustRender() {
+ return $this->mustRender;
+ }
+}
diff --git a/tests/phpunit/includes/media/ExifBitmapTest.php b/tests/phpunit/includes/media/ExifBitmapTest.php
new file mode 100644
index 00000000..4282d3c8
--- /dev/null
+++ b/tests/phpunit/includes/media/ExifBitmapTest.php
@@ -0,0 +1,122 @@
+<?php
+class ExifBitmapTest extends MediaWikiTestCase {
+
+ public function setUp() {
+ global $wgShowEXIF;
+ $this->showExif = $wgShowEXIF;
+ $wgShowEXIF = true;
+ $this->handler = new ExifBitmapHandler;
+ if ( !wfDl( 'exif' ) ) {
+ $this->markTestSkipped( "This test needs the exif extension." );
+ }
+ }
+
+ public function tearDown() {
+ global $wgShowEXIF;
+ $wgShowEXIF = $this->showExif;
+ }
+
+ public function testIsOldBroken() {
+ if ( !wfDl( 'exif' ) ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+ $res = $this->handler->isMetadataValid( null, ExifBitmapHandler::OLD_BROKEN_FILE );
+ $this->assertEquals( ExifBitmapHandler::METADATA_COMPATIBLE, $res );
+ }
+ public function testIsBrokenFile() {
+ global $wgShowEXIF;
+ if ( !$wgShowEXIF ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+ $res = $this->handler->isMetadataValid( null, ExifBitmapHandler::BROKEN_FILE );
+ $this->assertEquals( ExifBitmapHandler::METADATA_GOOD, $res );
+ }
+ public function testIsInvalid() {
+ global $wgShowEXIF;
+ if ( !$wgShowEXIF ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+ $res = $this->handler->isMetadataValid( null, 'Something Invalid Here.' );
+ $this->assertEquals( ExifBitmapHandler::METADATA_BAD, $res );
+ }
+ public function testGoodMetadata() {
+ global $wgShowEXIF;
+ if ( !$wgShowEXIF ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+ $meta = 'a:16:{s:10:"ImageWidth";i:20;s:11:"ImageLength";i:20;s:13:"BitsPerSample";a:3:{i:0;i:8;i:1;i:8;i:2;i:8;}s:11:"Compression";i:5;s:25:"PhotometricInterpretation";i:2;s:16:"ImageDescription";s:17:"Created with GIMP";s:12:"StripOffsets";i:8;s:11:"Orientation";i:1;s:15:"SamplesPerPixel";i:3;s:12:"RowsPerStrip";i:64;s:15:"StripByteCounts";i:238;s:11:"XResolution";s:19:"1207959552/16777216";s:11:"YResolution";s:19:"1207959552/16777216";s:19:"PlanarConfiguration";i:1;s:14:"ResolutionUnit";i:2;s:22:"MEDIAWIKI_EXIF_VERSION";i:2;}';
+ $res = $this->handler->isMetadataValid( null, $meta );
+ $this->assertEquals( ExifBitmapHandler::METADATA_GOOD, $res );
+ }
+ public function testIsOldGood() {
+ global $wgShowEXIF;
+ if ( !$wgShowEXIF ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+ $meta = 'a:16:{s:10:"ImageWidth";i:20;s:11:"ImageLength";i:20;s:13:"BitsPerSample";a:3:{i:0;i:8;i:1;i:8;i:2;i:8;}s:11:"Compression";i:5;s:25:"PhotometricInterpretation";i:2;s:16:"ImageDescription";s:17:"Created with GIMP";s:12:"StripOffsets";i:8;s:11:"Orientation";i:1;s:15:"SamplesPerPixel";i:3;s:12:"RowsPerStrip";i:64;s:15:"StripByteCounts";i:238;s:11:"XResolution";s:19:"1207959552/16777216";s:11:"YResolution";s:19:"1207959552/16777216";s:19:"PlanarConfiguration";i:1;s:14:"ResolutionUnit";i:2;s:22:"MEDIAWIKI_EXIF_VERSION";i:1;}';
+ $res = $this->handler->isMetadataValid( null, $meta );
+ $this->assertEquals( ExifBitmapHandler::METADATA_COMPATIBLE, $res );
+ }
+ // Handle metadata from paged tiff handler (gotten via instant commons)
+ // gracefully.
+ public function testPagedTiffHandledGracefully() {
+ global $wgShowEXIF;
+ if ( !$wgShowEXIF ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+ $meta = 'a:6:{s:9:"page_data";a:1:{i:1;a:5:{s:5:"width";i:643;s:6:"height";i:448;s:5:"alpha";s:4:"true";s:4:"page";i:1;s:6:"pixels";i:288064;}}s:10:"page_count";i:1;s:10:"first_page";i:1;s:9:"last_page";i:1;s:4:"exif";a:9:{s:10:"ImageWidth";i:643;s:11:"ImageLength";i:448;s:11:"Compression";i:5;s:25:"PhotometricInterpretation";i:2;s:11:"Orientation";i:1;s:15:"SamplesPerPixel";i:4;s:12:"RowsPerStrip";i:50;s:19:"PlanarConfiguration";i:1;s:22:"MEDIAWIKI_EXIF_VERSION";i:1;}s:21:"TIFF_METADATA_VERSION";s:3:"1.4";}';
+ $res = $this->handler->isMetadataValid( null, $meta );
+ $this->assertEquals( ExifBitmapHandler::METADATA_BAD, $res );
+ }
+
+ function testConvertMetadataLatest() {
+ $metadata = array(
+ 'foo' => array( 'First', 'Second', '_type' => 'ol' ),
+ 'MEDIAWIKI_EXIF_VERSION' => 2
+ );
+ $res = $this->handler->convertMetadataVersion( $metadata, 2 );
+ $this->assertEquals( $metadata, $res );
+ }
+ function testConvertMetadataToOld() {
+ $metadata = array(
+ 'foo' => array( 'First', 'Second', '_type' => 'ol' ),
+ 'bar' => array( 'First', 'Second', '_type' => 'ul' ),
+ 'baz' => array( 'First', 'Second' ),
+ 'fred' => 'Single',
+ 'MEDIAWIKI_EXIF_VERSION' => 2,
+ );
+ $expected = array(
+ 'foo' => "\n#First\n#Second",
+ 'bar' => "\n*First\n*Second",
+ 'baz' => "\n*First\n*Second",
+ 'fred' => 'Single',
+ 'MEDIAWIKI_EXIF_VERSION' => 1,
+ );
+ $res = $this->handler->convertMetadataVersion( $metadata, 1 );
+ $this->assertEquals( $expected, $res );
+ }
+ function testConvertMetadataSoftware() {
+ $metadata = array(
+ 'Software' => array( array('GIMP', '1.1' ) ),
+ 'MEDIAWIKI_EXIF_VERSION' => 2,
+ );
+ $expected = array(
+ 'Software' => 'GIMP (Version 1.1)',
+ 'MEDIAWIKI_EXIF_VERSION' => 1,
+ );
+ $res = $this->handler->convertMetadataVersion( $metadata, 1 );
+ $this->assertEquals( $expected, $res );
+ }
+ function testConvertMetadataSoftwareNormal() {
+ $metadata = array(
+ 'Software' => array( "GIMP 1.2", "vim" ),
+ 'MEDIAWIKI_EXIF_VERSION' => 2,
+ );
+ $expected = array(
+ 'Software' => "\n*GIMP 1.2\n*vim",
+ 'MEDIAWIKI_EXIF_VERSION' => 1,
+ );
+ $res = $this->handler->convertMetadataVersion( $metadata, 1 );
+ $this->assertEquals( $expected, $res );
+ }
+}
diff --git a/tests/phpunit/includes/media/ExifRotationTest.php b/tests/phpunit/includes/media/ExifRotationTest.php
new file mode 100644
index 00000000..639091d0
--- /dev/null
+++ b/tests/phpunit/includes/media/ExifRotationTest.php
@@ -0,0 +1,249 @@
+<?php
+
+/**
+ * Tests related to auto rotation
+ */
+class ExifRotationTest extends MediaWikiTestCase {
+
+ function setUp() {
+ parent::setUp();
+ $this->filePath = dirname( __FILE__ ) . '/../../data/media/';
+ $this->handler = new BitmapHandler();
+ $this->repo = new FSRepo(array(
+ 'name' => 'temp',
+ 'directory' => wfTempDir() . '/exif-test-' . time() . '-' . mt_rand(),
+ 'url' => 'http://localhost/thumbtest'
+ ));
+ if ( !wfDl( 'exif' ) ) {
+ $this->markTestSkipped( "This test needs the exif extension." );
+ }
+ global $wgShowEXIF;
+ $this->show = $wgShowEXIF;
+ $wgShowEXIF = true;
+
+ global $wgEnableAutoRotation;
+ $this->oldAuto = $wgEnableAutoRotation;
+ $wgEnableAutoRotation = true;
+ }
+ public function tearDown() {
+ global $wgShowEXIF, $wgEnableAutoRotation;
+ $wgShowEXIF = $this->show;
+ $wgEnableAutoRotation = $this->oldAuto;
+ }
+
+ /**
+ *
+ * @dataProvider providerFiles
+ */
+ function testMetadata( $name, $type, $info ) {
+ if ( !BitmapHandler::canRotate() ) {
+ $this->markTestSkipped( "This test needs a rasterizer that can auto-rotate." );
+ }
+ $file = UnregisteredLocalFile::newFromPath( $this->filePath . $name, $type );
+ $this->assertEquals( $info['width'], $file->getWidth(), "$name: width check" );
+ $this->assertEquals( $info['height'], $file->getHeight(), "$name: height check" );
+ }
+
+ /**
+ *
+ * @dataProvider providerFiles
+ */
+ function testRotationRendering( $name, $type, $info, $thumbs ) {
+ if ( !BitmapHandler::canRotate() ) {
+ $this->markTestSkipped( "This test needs a rasterizer that can auto-rotate." );
+ }
+ foreach( $thumbs as $size => $out ) {
+ if( preg_match('/^(\d+)px$/', $size, $matches ) ) {
+ $params = array(
+ 'width' => $matches[1],
+ );
+ } elseif ( preg_match( '/^(\d+)x(\d+)px$/', $size, $matches ) ) {
+ $params = array(
+ 'width' => $matches[1],
+ 'height' => $matches[2]
+ );
+ } else {
+ throw new MWException('bogus test data format ' . $size);
+ }
+
+ $file = $this->localFile( $name, $type );
+ $thumb = $file->transform( $params, File::RENDER_NOW );
+
+ $this->assertEquals( $out[0], $thumb->getWidth(), "$name: thumb reported width check for $size" );
+ $this->assertEquals( $out[1], $thumb->getHeight(), "$name: thumb reported height check for $size" );
+
+ $gis = getimagesize( $thumb->getPath() );
+ if ($out[0] > $info['width']) {
+ // Physical image won't be scaled bigger than the original.
+ $this->assertEquals( $info['width'], $gis[0], "$name: thumb actual width check for $size");
+ $this->assertEquals( $info['height'], $gis[1], "$name: thumb actual height check for $size");
+ } else {
+ $this->assertEquals( $out[0], $gis[0], "$name: thumb actual width check for $size");
+ $this->assertEquals( $out[1], $gis[1], "$name: thumb actual height check for $size");
+ }
+ }
+ }
+
+ private function localFile( $name, $type ) {
+ return new UnregisteredLocalFile( false, $this->repo, $this->filePath . $name, $type );
+ }
+
+ function providerFiles() {
+ return array(
+ array(
+ 'landscape-plain.jpg',
+ 'image/jpeg',
+ array(
+ 'width' => 1024,
+ 'height' => 768,
+ ),
+ array(
+ '800x600px' => array( 800, 600 ),
+ '9999x800px' => array( 1067, 800 ),
+ '800px' => array( 800, 600 ),
+ '600px' => array( 600, 450 ),
+ )
+ ),
+ array(
+ 'portrait-rotated.jpg',
+ 'image/jpeg',
+ array(
+ 'width' => 768, // as rotated
+ 'height' => 1024, // as rotated
+ ),
+ array(
+ '800x600px' => array( 450, 600 ),
+ '9999x800px' => array( 600, 800 ),
+ '800px' => array( 800, 1067 ),
+ '600px' => array( 600, 800 ),
+ )
+ )
+ );
+ }
+
+ /**
+ * Same as before, but with auto-rotation disabled.
+ * @dataProvider providerFilesNoAutoRotate
+ */
+ function testMetadataNoAutoRotate( $name, $type, $info ) {
+ global $wgEnableAutoRotation;
+ $wgEnableAutoRotation = false;
+
+ $file = UnregisteredLocalFile::newFromPath( $this->filePath . $name, $type );
+ $this->assertEquals( $info['width'], $file->getWidth(), "$name: width check" );
+ $this->assertEquals( $info['height'], $file->getHeight(), "$name: height check" );
+
+ $wgEnableAutoRotation = true;
+ }
+
+ /**
+ *
+ * @dataProvider providerFilesNoAutoRotate
+ */
+ function testRotationRenderingNoAutoRotate( $name, $type, $info, $thumbs ) {
+ global $wgEnableAutoRotation;
+ $wgEnableAutoRotation = false;
+
+ foreach( $thumbs as $size => $out ) {
+ if( preg_match('/^(\d+)px$/', $size, $matches ) ) {
+ $params = array(
+ 'width' => $matches[1],
+ );
+ } elseif ( preg_match( '/^(\d+)x(\d+)px$/', $size, $matches ) ) {
+ $params = array(
+ 'width' => $matches[1],
+ 'height' => $matches[2]
+ );
+ } else {
+ throw new MWException('bogus test data format ' . $size);
+ }
+
+ $file = $this->localFile( $name, $type );
+ $thumb = $file->transform( $params, File::RENDER_NOW );
+
+ $this->assertEquals( $out[0], $thumb->getWidth(), "$name: thumb reported width check for $size" );
+ $this->assertEquals( $out[1], $thumb->getHeight(), "$name: thumb reported height check for $size" );
+
+ $gis = getimagesize( $thumb->getPath() );
+ if ($out[0] > $info['width']) {
+ // Physical image won't be scaled bigger than the original.
+ $this->assertEquals( $info['width'], $gis[0], "$name: thumb actual width check for $size");
+ $this->assertEquals( $info['height'], $gis[1], "$name: thumb actual height check for $size");
+ } else {
+ $this->assertEquals( $out[0], $gis[0], "$name: thumb actual width check for $size");
+ $this->assertEquals( $out[1], $gis[1], "$name: thumb actual height check for $size");
+ }
+ }
+ $wgEnableAutoRotation = true;
+ }
+
+ function providerFilesNoAutoRotate() {
+ return array(
+ array(
+ 'landscape-plain.jpg',
+ 'image/jpeg',
+ array(
+ 'width' => 1024,
+ 'height' => 768,
+ ),
+ array(
+ '800x600px' => array( 800, 600 ),
+ '9999x800px' => array( 1067, 800 ),
+ '800px' => array( 800, 600 ),
+ '600px' => array( 600, 450 ),
+ )
+ ),
+ array(
+ 'portrait-rotated.jpg',
+ 'image/jpeg',
+ array(
+ 'width' => 1024, // since not rotated
+ 'height' => 768, // since not rotated
+ ),
+ array(
+ '800x600px' => array( 800, 600 ),
+ '9999x800px' => array( 1067, 800 ),
+ '800px' => array( 800, 600 ),
+ '600px' => array( 600, 450 ),
+ )
+ )
+ );
+ }
+
+
+ const TEST_WIDTH = 100;
+ const TEST_HEIGHT = 200;
+
+ /**
+ * @dataProvider provideBitmapExtractPreRotationDimensions
+ */
+ function testBitmapExtractPreRotationDimensions( $rotation, $expected ) {
+ $result = $this->handler->extractPreRotationDimensions( array(
+ 'physicalWidth' => self::TEST_WIDTH,
+ 'physicalHeight' => self::TEST_HEIGHT,
+ ), $rotation );
+ $this->assertEquals( $expected, $result );
+ }
+
+ function provideBitmapExtractPreRotationDimensions() {
+ return array(
+ array(
+ 0,
+ array( self::TEST_WIDTH, self::TEST_HEIGHT )
+ ),
+ array(
+ 90,
+ array( self::TEST_HEIGHT, self::TEST_WIDTH )
+ ),
+ array(
+ 180,
+ array( self::TEST_WIDTH, self::TEST_HEIGHT )
+ ),
+ array(
+ 270,
+ array( self::TEST_HEIGHT, self::TEST_WIDTH )
+ ),
+ );
+ }
+}
+
diff --git a/tests/phpunit/includes/media/ExifTest.php b/tests/phpunit/includes/media/ExifTest.php
new file mode 100644
index 00000000..9b490e92
--- /dev/null
+++ b/tests/phpunit/includes/media/ExifTest.php
@@ -0,0 +1,51 @@
+<?php
+class ExifTest extends MediaWikiTestCase {
+
+ public function setUp() {
+ $this->mediaPath = dirname( __FILE__ ) . '/../../data/media/';
+
+ global $wgShowEXIF;
+ $this->showExif = $wgShowEXIF;
+ $wgShowEXIF = true;
+ }
+ public function tearDown() {
+ global $wgShowEXIF;
+ $wgShowEXIF = $this->showExif;
+ }
+
+ public function testGPSExtraction() {
+ if ( !wfDl( 'exif' ) ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+
+ $filename = $this->mediaPath . 'exif-gps.jpg';
+ $seg = JpegMetadataExtractor::segmentSplitter( $filename );
+ $exif = new Exif( $filename, $seg['byteOrder'] );
+ $data = $exif->getFilteredData();
+ $expected = array(
+ 'GPSLatitude' => 88.5180555556,
+ 'GPSLongitude' => -21.12357,
+ 'GPSAltitude' => -200,
+ 'GPSDOP' => '5/1',
+ 'GPSVersionID' => '2.2.0.0',
+ );
+ $this->assertEquals( $expected, $data, '', 0.0000000001 );
+ }
+ public function testUnicodeUserComment() {
+ if ( !wfDl( 'exif' ) ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+
+ $filename = $this->mediaPath . 'exif-user-comment.jpg';
+ $seg = JpegMetadataExtractor::segmentSplitter( $filename );
+ $exif = new Exif( $filename, $seg['byteOrder'] );
+ $data = $exif->getFilteredData();
+
+ $expected = array(
+ 'UserComment' => 'testâ”comment'
+ );
+ $this->assertEquals( $expected, $data );
+ }
+
+
+}
diff --git a/tests/phpunit/includes/media/FormatMetadataTest.php b/tests/phpunit/includes/media/FormatMetadataTest.php
new file mode 100644
index 00000000..db36dea3
--- /dev/null
+++ b/tests/phpunit/includes/media/FormatMetadataTest.php
@@ -0,0 +1,29 @@
+<?php
+class FormatMetadataTest extends MediaWikiTestCase {
+ public function testInvalidDate() {
+ global $wgShowEXIF;
+ if ( !$wgShowEXIF ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+
+ $file = UnregisteredLocalFile::newFromPath( dirname( __FILE__ ) .
+ '/../../data/media/broken_exif_date.jpg', 'image/jpeg' );
+
+ // Throws an error if bug hit
+ $meta = $file->formatMetadata();
+ $this->assertNotEquals( false, $meta, 'Valid metadata extracted' );
+
+ // Find date exif entry
+ $this->assertArrayHasKey( 'visible', $meta );
+ $dateIndex = null;
+ foreach ( $meta['visible'] as $i => $data ) {
+ if ( $data['id'] == 'exif-datetimeoriginal' ) {
+ $dateIndex = $i;
+ }
+ }
+ $this->assertNotNull( $dateIndex, 'Date entry exists in metadata' );
+ $this->assertEquals( '0000:01:00 00:02:27',
+ $meta['visible'][$dateIndex]['value'],
+ 'File with invalid date metadata (bug 29471)' );
+ }
+} \ No newline at end of file
diff --git a/tests/phpunit/includes/media/GIFMetadataExtractorTest.php b/tests/phpunit/includes/media/GIFMetadataExtractorTest.php
new file mode 100644
index 00000000..59b30441
--- /dev/null
+++ b/tests/phpunit/includes/media/GIFMetadataExtractorTest.php
@@ -0,0 +1,95 @@
+<?php
+class GIFMetadataExtractorTest extends MediaWikiTestCase {
+
+ public function setUp() {
+ $this->mediaPath = dirname( __FILE__ ) . '/../../data/media/';
+ }
+ /**
+ * Put in a file, and see if the metadata coming out is as expected.
+ * @param $filename String
+ * @param $expected Array The extracted metadata.
+ * @dataProvider dataGetMetadata
+ */
+ public function testGetMetadata( $filename, $expected ) {
+ $actual = GIFMetadataExtractor::getMetadata( $this->mediaPath . $filename );
+ $this->assertEquals( $expected, $actual );
+ }
+ public function dataGetMetadata() {
+
+ $xmpNugget = <<<EOF
+<?xpacket begin='' id='W5M0MpCehiHzreSzNTczkc9d'?>
+<x:xmpmeta xmlns:x='adobe:ns:meta/' x:xmptk='Image::ExifTool 7.30'>
+<rdf:RDF xmlns:rdf='http://www.w3.org/1999/02/22-rdf-syntax-ns#'>
+
+ <rdf:Description rdf:about=''
+ xmlns:Iptc4xmpCore='http://iptc.org/std/Iptc4xmpCore/1.0/xmlns/'>
+ <Iptc4xmpCore:Location>The interwebs</Iptc4xmpCore:Location>
+ </rdf:Description>
+
+ <rdf:Description rdf:about=''
+ xmlns:tiff='http://ns.adobe.com/tiff/1.0/'>
+ <tiff:Artist>Bawolff</tiff:Artist>
+ <tiff:ImageDescription>
+ <rdf:Alt>
+ <rdf:li xml:lang='x-default'>A file to test GIF</rdf:li>
+ </rdf:Alt>
+ </tiff:ImageDescription>
+ </rdf:Description>
+</rdf:RDF>
+</x:xmpmeta>
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+<?xpacket end='w'?>
+EOF;
+
+ return array(
+ array( 'nonanimated.gif', array(
+ 'comment' => array( 'GIF test file â• Created with GIMP' ),
+ 'duration' => 0.1,
+ 'frameCount' => 1,
+ 'looped' => false,
+ 'xmp' => '',
+ )
+ ),
+ array( 'animated.gif', array(
+ 'comment' => array( 'GIF test file . Created with GIMP' ),
+ 'duration' => 2.4,
+ 'frameCount' => 4,
+ 'looped' => true,
+ 'xmp' => '',
+ )
+ ),
+
+ array( 'animated-xmp.gif', array(
+ 'xmp' => $xmpNugget,
+ 'duration' => 2.4,
+ 'frameCount' => 4,
+ 'looped' => true,
+ 'comment' => array( 'GIƒ·test·file' ),
+ )
+ ),
+ );
+ }
+}
diff --git a/tests/phpunit/includes/media/GIFTest.php b/tests/phpunit/includes/media/GIFTest.php
new file mode 100644
index 00000000..42c25ca5
--- /dev/null
+++ b/tests/phpunit/includes/media/GIFTest.php
@@ -0,0 +1,85 @@
+<?php
+class GIFHandlerTest extends MediaWikiTestCase {
+
+ public function setUp() {
+ $this->filePath = dirname( __FILE__ ) . '/../../data/media/';
+ $this->handler = new GIFHandler();
+ }
+
+ public function testInvalidFile() {
+ $res = $this->handler->getMetadata( null, $this->filePath . 'README' );
+ $this->assertEquals( GIFHandler::BROKEN_FILE, $res );
+ }
+ /**
+ * @param $filename String basename of the file to check
+ * @param $expected boolean Expected result.
+ * @dataProvider dataIsAnimated
+ */
+ public function testIsAnimanted( $filename, $expected ) {
+ $file = UnregisteredLocalFile::newFromPath( $this->filePath . $filename,
+ 'image/gif' );
+ $actual = $this->handler->isAnimatedImage( $file );
+ $this->assertEquals( $expected, $actual );
+ }
+ public function dataIsAnimated() {
+ return array(
+ array( 'animated.gif', true ),
+ array( 'nonanimated.gif', false ),
+ );
+ }
+
+ /**
+ * @param $filename String
+ * @param $expected Integer Total image area
+ * @dataProvider dataGetImageArea
+ */
+ public function testGetImageArea( $filename, $expected ) {
+ $file = UnregisteredLocalFile::newFromPath( $this->filePath . $filename,
+ 'image/gif' );
+ $actual = $this->handler->getImageArea( $file, $file->getWidth(), $file->getHeight() );
+ $this->assertEquals( $expected, $actual );
+ }
+ public function dataGetImageArea() {
+ return array(
+ array( 'animated.gif', 5400 ),
+ array( 'nonanimated.gif', 1350 ),
+ );
+ }
+
+ /**
+ * @param $metadata String Serialized metadata
+ * @param $expected Integer One of the class constants of GIFHandler
+ * @dataProvider dataIsMetadataValid
+ */
+ public function testIsMetadataValid( $metadata, $expected ) {
+ $actual = $this->handler->isMetadataValid( null, $metadata );
+ $this->assertEquals( $expected, $actual );
+ }
+ public function dataIsMetadataValid() {
+ return array(
+ array( GIFHandler::BROKEN_FILE, GIFHandler::METADATA_GOOD ),
+ array( '', GIFHandler::METADATA_BAD ),
+ array( null, GIFHandler::METADATA_BAD ),
+ array( 'Something invalid!', GIFHandler::METADATA_BAD ),
+ array( 'a:4:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file â• Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}}', GIFHandler::METADATA_GOOD ),
+ );
+ }
+
+ /**
+ * @param $filename String
+ * @param $expected String Serialized array
+ * @dataProvider dataGetMetadata
+ */
+ public function testGetMetadata( $filename, $expected ) {
+ $file = UnregisteredLocalFile::newFromPath( $this->filePath . $filename,
+ 'image/gif' );
+ $actual = $this->handler->getMetadata( $file, $this->filePath . $filename );
+ $this->assertEquals( unserialize( $expected ), unserialize( $actual ) );
+ }
+ public function dataGetMetadata() {
+ return array(
+ array( 'nonanimated.gif', 'a:4:{s:10:"frameCount";i:1;s:6:"looped";b:0;s:8:"duration";d:0.1000000000000000055511151231257827021181583404541015625;s:8:"metadata";a:2:{s:14:"GIFFileComment";a:1:{i:0;s:35:"GIF test file â• Created with GIMP";}s:15:"_MW_GIF_VERSION";i:1;}}' ),
+ array( 'animated-xmp.gif', 'a:4:{s:10:"frameCount";i:4;s:6:"looped";b:1;s:8:"duration";d:2.399999999999999911182158029987476766109466552734375;s:8:"metadata";a:5:{s:6:"Artist";s:7:"Bawolff";s:16:"ImageDescription";a:2:{s:9:"x-default";s:18:"A file to test GIF";s:5:"_type";s:4:"lang";}s:15:"SublocationDest";s:13:"The interwebs";s:14:"GIFFileComment";a:1:{i:0;s:16:"GIƒ·test·file";}s:15:"_MW_GIF_VERSION";i:1;}}' ),
+ );
+ }
+}
diff --git a/tests/phpunit/includes/media/IPTCTest.php b/tests/phpunit/includes/media/IPTCTest.php
new file mode 100644
index 00000000..ec6deeb8
--- /dev/null
+++ b/tests/phpunit/includes/media/IPTCTest.php
@@ -0,0 +1,55 @@
+<?php
+class IPTCTest extends MediaWikiTestCase {
+ public function testRecognizeUtf8() {
+ // utf-8 is the only one used in practise.
+ $res = IPTC::getCharset( "\x1b%G" );
+ $this->assertEquals( 'UTF-8', $res );
+ }
+
+ public function testIPTCParseNoCharset88591() {
+ // basically IPTC for keyword with value of 0xBC which is 1/4 in iso-8859-1
+ // This data doesn't specify a charset. We're supposed to guess
+ // (which basically means utf-8 if valid, windows 1252 (iso 8859-1) if not)
+ $iptcData = "Photoshop 3.0\08BIM\4\4\0\0\0\0\0\x06\x1c\x02\x19\x00\x01\xBC";
+ $res = IPTC::Parse( $iptcData );
+ $this->assertEquals( array( '¼' ), $res['Keywords'] );
+ }
+ /* This one contains a sequence that's valid iso 8859-1 but not valid utf8 */
+ /* \xC3 = Ã, \xB8 = ¸ */
+ public function testIPTCParseNoCharset88591b() {
+ $iptcData = "Photoshop 3.0\08BIM\4\4\0\0\0\0\0\x09\x1c\x02\x19\x00\x04\xC3\xC3\xC3\xB8";
+ $res = IPTC::Parse( $iptcData );
+ $this->assertEquals( array( 'ÃÃø' ), $res['Keywords'] );
+ }
+ /* Same as testIPTCParseNoCharset88591b, but forcing the charset to utf-8.
+ * What should happen is the first "\xC3\xC3" should be dropped as invalid,
+ * leaving \xC3\xB8, which is ø
+ */
+ public function testIPTCParseForcedUTFButInvalid() {
+ $iptcData = "Photoshop 3.0\08BIM\4\4\0\0\0\0\0\x11\x1c\x02\x19\x00\x04\xC3\xC3\xC3\xB8"
+ . "\x1c\x01\x5A\x00\x03\x1B\x25\x47";
+ $res = IPTC::Parse( $iptcData );
+ $this->assertEquals( array( 'ø' ), $res['Keywords'] );
+ }
+ public function testIPTCParseNoCharsetUTF8() {
+ $iptcData = "Photoshop 3.0\08BIM\4\4\0\0\0\0\0\x07\x1c\x02\x19\x00\x02¼";
+ $res = IPTC::Parse( $iptcData );
+ $this->assertEquals( array( '¼' ), $res['Keywords'] );
+ }
+ // Testing something that has 2 values for keyword
+ public function testIPTCParseMulti() {
+ $iptcData = /* identifier */ "Photoshop 3.0\08BIM\4\4"
+ /* length */ . "\0\0\0\0\0\x0D"
+ . "\x1c\x02\x19" . "\x00\x01" . "\xBC"
+ . "\x1c\x02\x19" . "\x00\x02" . "\xBC\xBD";
+ $res = IPTC::Parse( $iptcData );
+ $this->assertEquals( array( '¼', '¼½' ), $res['Keywords'] );
+ }
+ public function testIPTCParseUTF8() {
+ // This has the magic "\x1c\x01\x5A\x00\x03\x1B\x25\x47" which marks content as UTF8.
+ $iptcData = "Photoshop 3.0\08BIM\4\4\0\0\0\0\0\x0F\x1c\x02\x19\x00\x02¼\x1c\x01\x5A\x00\x03\x1B\x25\x47";
+ $res = IPTC::Parse( $iptcData );
+ $this->assertEquals( array( '¼' ), $res['Keywords'] );
+ }
+
+}
diff --git a/tests/phpunit/includes/media/JpegMetadataExtractorTest.php b/tests/phpunit/includes/media/JpegMetadataExtractorTest.php
new file mode 100644
index 00000000..61fc9c81
--- /dev/null
+++ b/tests/phpunit/includes/media/JpegMetadataExtractorTest.php
@@ -0,0 +1,94 @@
+<?php
+/*
+ * @todo Could use a test of extended XMP segments. Hard to find programs that
+ * create example files, and creating my own in vim propbably wouldn't
+ * serve as a very good "test". (Adobe photoshop probably creates such files
+ * but it costs money). The implementation of it currently in MediaWiki is based
+ * solely on reading the standard, without any real world test files.
+ */
+class JpegMetadataExtractorTest extends MediaWikiTestCase {
+
+ public function setUp() {
+ $this->filePath = dirname( __FILE__ ) . '/../../data/media/';
+ }
+
+ /**
+ * We also use this test to test padding bytes don't
+ * screw stuff up
+ *
+ * @param $file filename
+ *
+ * @dataProvider dataUtf8Comment
+ */
+ public function testUtf8Comment( $file ) {
+ $res = JpegMetadataExtractor::segmentSplitter( $this->filePath . $file );
+ $this->assertEquals( array( 'UTF-8 JPEG Comment — ¼' ), $res['COM'] );
+ }
+ public function dataUtf8Comment() {
+ return array(
+ array( 'jpeg-comment-utf.jpg' ),
+ array( 'jpeg-padding-even.jpg' ),
+ array( 'jpeg-padding-odd.jpg' ),
+ );
+ }
+ /** The file is iso-8859-1, but it should get auto converted */
+ public function testIso88591Comment() {
+ $res = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'jpeg-comment-iso8859-1.jpg' );
+ $this->assertEquals( array( 'ISO-8859-1 JPEG Comment - ¼' ), $res['COM'] );
+ }
+ /** Comment values that are non-textual (random binary junk) should not be shown.
+ * The example test file has a comment with a 0x5 byte in it which is a control character
+ * and considered binary junk for our purposes.
+ */
+ public function testBinaryCommentStripped() {
+ $res = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'jpeg-comment-binary.jpg' );
+ $this->assertEmpty( $res['COM'] );
+ }
+ /* Very rarely a file can have multiple comments.
+ * Order of comments is based on order inside the file.
+ */
+ public function testMultipleComment() {
+ $res = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'jpeg-comment-multiple.jpg' );
+ $this->assertEquals( array( 'foo', 'bar' ), $res['COM'] );
+ }
+ public function testXMPExtraction() {
+ $res = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'jpeg-xmp-psir.jpg' );
+ $expected = file_get_contents( $this->filePath . 'jpeg-xmp-psir.xmp' );
+ $this->assertEquals( $expected, $res['XMP'] );
+ }
+ public function testPSIRExtraction() {
+ $res = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'jpeg-xmp-psir.jpg' );
+ $expected = '50686f746f73686f7020332e30003842494d04040000000000181c02190004746573741c02190003666f6f1c020000020004';
+ $this->assertEquals( $expected, bin2hex( $res['PSIR'] ) );
+ }
+ public function testXMPExtractionAltAppId() {
+ $res = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'jpeg-xmp-alt.jpg' );
+ $expected = file_get_contents( $this->filePath . 'jpeg-xmp-psir.xmp' );
+ $this->assertEquals( $expected, $res['XMP'] );
+ }
+
+
+ public function testIPTCHashComparisionNoHash() {
+ $segments = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'jpeg-xmp-psir.jpg' );
+ $res = JpegMetadataExtractor::doPSIR( $segments['PSIR'] );
+
+ $this->assertEquals( 'iptc-no-hash', $res );
+ }
+ public function testIPTCHashComparisionBadHash() {
+ $segments = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'jpeg-iptc-bad-hash.jpg' );
+ $res = JpegMetadataExtractor::doPSIR( $segments['PSIR'] );
+
+ $this->assertEquals( 'iptc-bad-hash', $res );
+ }
+ public function testIPTCHashComparisionGoodHash() {
+ $segments = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'jpeg-iptc-good-hash.jpg' );
+ $res = JpegMetadataExtractor::doPSIR( $segments['PSIR'] );
+
+ $this->assertEquals( 'iptc-good-hash', $res );
+ }
+ public function testExifByteOrder() {
+ $res = JpegMetadataExtractor::segmentSplitter( $this->filePath . 'exif-user-comment.jpg' );
+ $expected = 'BE';
+ $this->assertEquals( $expected, $res['byteOrder'] );
+ }
+}
diff --git a/tests/phpunit/includes/media/JpegTest.php b/tests/phpunit/includes/media/JpegTest.php
new file mode 100644
index 00000000..713a3410
--- /dev/null
+++ b/tests/phpunit/includes/media/JpegTest.php
@@ -0,0 +1,29 @@
+<?php
+class JpegTest extends MediaWikiTestCase {
+
+ public function setUp() {
+ $this->filePath = dirname( __FILE__ ) . '/../../data/media/';
+ }
+
+ public function testInvalidFile() {
+ global $wgShowEXIF;
+ if ( !$wgShowEXIF ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+ $jpeg = new JpegHandler;
+ $res = $jpeg->getMetadata( null, $this->filePath . 'README' );
+ $this->assertEquals( ExifBitmapHandler::BROKEN_FILE, $res );
+ }
+ public function testJpegMetadataExtraction() {
+ global $wgShowEXIF;
+ if ( !$wgShowEXIF ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+ $h = new JpegHandler;
+ $res = $h->getMetadata( null, $this->filePath . 'test.jpg' );
+ $expected = 'a:7:{s:16:"ImageDescription";s:9:"Test file";s:11:"XResolution";s:4:"72/1";s:11:"YResolution";s:4:"72/1";s:14:"ResolutionUnit";i:2;s:16:"YCbCrPositioning";i:1;s:15:"JPEGFileComment";a:1:{i:0;s:17:"Created with GIMP";}s:22:"MEDIAWIKI_EXIF_VERSION";i:2;}';
+
+ // Unserialize in case serialization format ever changes.
+ $this->assertEquals( unserialize( $expected ), unserialize( $res ) );
+ }
+}
diff --git a/tests/phpunit/includes/media/PNGMetadataExtractorTest.php b/tests/phpunit/includes/media/PNGMetadataExtractorTest.php
new file mode 100644
index 00000000..9f702c50
--- /dev/null
+++ b/tests/phpunit/includes/media/PNGMetadataExtractorTest.php
@@ -0,0 +1,141 @@
+<?php
+class PNGMetadataExtractorTest extends MediaWikiTestCase {
+
+ function setUp() {
+ $this->filePath = dirname( __FILE__ ) . '/../../data/media/';
+ }
+ /**
+ * Tests zTXt tag (compressed textual metadata)
+ */
+ function testPngNativetZtxt() {
+ $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
+ 'Png-native-test.png' );
+ $expected = "foo bar baz foo foo foo foof foo foo foo foo";
+ $this->assertArrayHasKey( 'text', $meta );
+ $meta = $meta['text'];
+ $this->assertArrayHasKey( 'Make', $meta );
+ $this->assertArrayHasKey( 'x-default', $meta['Make'] );
+
+ $this->assertEquals( $expected, $meta['Make']['x-default'] );
+ }
+
+ /**
+ * Test tEXt tag (Uncompressed textual metadata)
+ */
+ function testPngNativeText() {
+ $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
+ 'Png-native-test.png' );
+ $expected = "Some long image desc";
+ $this->assertArrayHasKey( 'text', $meta );
+ $meta = $meta['text'];
+ $this->assertArrayHasKey( 'ImageDescription', $meta );
+ $this->assertArrayHasKey( 'x-default', $meta['ImageDescription'] );
+ $this->assertArrayHasKey( '_type', $meta['ImageDescription'] );
+
+ $this->assertEquals( $expected, $meta['ImageDescription']['x-default'] );
+ }
+
+ /**
+ * tEXt tags must be encoded iso-8859-1 (vs iTXt which are utf-8)
+ * Make sure non-ascii characters get converted properly
+ */
+ function testPngNativeTextNonAscii() {
+ $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
+ 'Png-native-test.png' );
+
+ // Note the Copyright symbol here is a utf-8 one
+ // (aka \xC2\xA9) where in the file its iso-8859-1
+ // encoded as just \xA9.
+ $expected = "© 2010 Bawolff";
+
+
+ $this->assertArrayHasKey( 'text', $meta );
+ $meta = $meta['text'];
+ $this->assertArrayHasKey( 'Copyright', $meta );
+ $this->assertArrayHasKey( 'x-default', $meta['Copyright'] );
+
+ $this->assertEquals( $expected, $meta['Copyright']['x-default'] );
+ }
+
+ /**
+ * Test extraction of pHYs tags, which can tell what the
+ * actual resolution of the image is (aka in dots per meter).
+ function testPngPhysTag () {
+ $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
+ 'Png-native-test.png' );
+
+ $this->assertArrayHasKey( 'text', $meta );
+ $meta = $meta['text'];
+
+ $this->assertEquals( '2835/100', $meta['XResolution'] );
+ $this->assertEquals( '2835/100', $meta['YResolution'] );
+ $this->assertEquals( 3, $meta['ResolutionUnit'] ); // 3 = cm
+ }
+
+ /**
+ * Given a normal static PNG, check the animation metadata returned.
+ */
+ function testStaticPngAnimationMetadata() {
+ $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
+ 'Png-native-test.png' );
+
+ $this->assertEquals( 0, $meta['frameCount'] );
+ $this->assertEquals( 1, $meta['loopCount'] );
+ $this->assertEquals( 0, $meta['duration'] );
+ }
+
+ /**
+ * Given an animated APNG image file
+ * check it gets animated metadata right.
+ */
+ function testApngAnimationMetadata() {
+ $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
+ 'Animated_PNG_example_bouncing_beach_ball.png' );
+
+ $this->assertEquals( 20, $meta['frameCount'] );
+ // Note loop count of 0 = infinity
+ $this->assertEquals( 0, $meta['loopCount'] );
+ $this->assertEquals( 1.5, $meta['duration'], '', 0.00001 );
+ }
+
+ function testPngBitDepth8() {
+ $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
+ 'Png-native-test.png' );
+
+ $this->assertEquals( 8, $meta['bitDepth'] );
+ }
+ function testPngBitDepth1() {
+ $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
+ '1bit-png.png' );
+ $this->assertEquals( 1, $meta['bitDepth'] );
+ }
+
+
+ function testPngIndexColour() {
+ $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
+ 'Png-native-test.png' );
+
+ $this->assertEquals( 'index-coloured', $meta['colorType'] );
+ }
+ function testPngRgbColour() {
+ $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
+ 'rgb-png.png' );
+ $this->assertEquals( 'truecolour-alpha', $meta['colorType'] );
+ }
+ function testPngRgbNoAlphaColour() {
+ $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
+ 'rgb-na-png.png' );
+ $this->assertEquals( 'truecolour', $meta['colorType'] );
+ }
+ function testPngGreyscaleColour() {
+ $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
+ 'greyscale-png.png' );
+ $this->assertEquals( 'greyscale-alpha', $meta['colorType'] );
+ }
+ function testPngGreyscaleNoAlphaColour() {
+ $meta = PNGMetadataExtractor::getMetadata( $this->filePath .
+ 'greyscale-na-png.png' );
+ $this->assertEquals( 'greyscale', $meta['colorType'] );
+ }
+
+}
diff --git a/tests/phpunit/includes/media/PNGTest.php b/tests/phpunit/includes/media/PNGTest.php
new file mode 100644
index 00000000..b782918c
--- /dev/null
+++ b/tests/phpunit/includes/media/PNGTest.php
@@ -0,0 +1,88 @@
+<?php
+class PNGHandlerTest extends MediaWikiTestCase {
+
+ public function setUp() {
+ $this->filePath = dirname( __FILE__ ) . '/../../data/media/';
+ $this->handler = new PNGHandler();
+ }
+
+ public function testInvalidFile() {
+ $res = $this->handler->getMetadata( null, $this->filePath . 'README' );
+ $this->assertEquals( PNGHandler::BROKEN_FILE, $res );
+ }
+ /**
+ * @param $filename String basename of the file to check
+ * @param $expected boolean Expected result.
+ * @dataProvider dataIsAnimated
+ */
+ public function testIsAnimanted( $filename, $expected ) {
+ $file = UnregisteredLocalFile::newFromPath( $this->filePath . $filename,
+ 'image/png' );
+ $actual = $this->handler->isAnimatedImage( $file );
+ $this->assertEquals( $expected, $actual );
+ }
+ public function dataIsAnimated() {
+ return array(
+ array( 'Animated_PNG_example_bouncing_beach_ball.png', true ),
+ array( '1bit-png.png', false ),
+ );
+ }
+
+ /**
+ * @param $filename String
+ * @param $expected Integer Total image area
+ * @dataProvider dataGetImageArea
+ */
+ public function testGetImageArea( $filename, $expected ) {
+ $file = UnregisteredLocalFile::newFromPath( $this->filePath . $filename,
+ 'image/png' );
+ $actual = $this->handler->getImageArea( $file, $file->getWidth(), $file->getHeight() );
+ $this->assertEquals( $expected, $actual );
+ }
+ public function dataGetImageArea() {
+ return array(
+ array( '1bit-png.png', 2500 ),
+ array( 'greyscale-png.png', 2500 ),
+ array( 'Png-native-test.png', 126000 ),
+ array( 'Animated_PNG_example_bouncing_beach_ball.png', 10000 ),
+ );
+ }
+
+ /**
+ * @param $metadata String Serialized metadata
+ * @param $expected Integer One of the class constants of PNGHandler
+ * @dataProvider dataIsMetadataValid
+ */
+ public function testIsMetadataValid( $metadata, $expected ) {
+ $actual = $this->handler->isMetadataValid( null, $metadata );
+ $this->assertEquals( $expected, $actual );
+ }
+ public function dataIsMetadataValid() {
+ return array(
+ array( PNGHandler::BROKEN_FILE, PNGHandler::METADATA_GOOD ),
+ array( '', PNGHandler::METADATA_BAD ),
+ array( null, PNGHandler::METADATA_BAD ),
+ array( 'Something invalid!', PNGHandler::METADATA_BAD ),
+ array( 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}', PNGHandler::METADATA_GOOD ),
+ );
+ }
+
+ /**
+ * @param $filename String
+ * @param $expected String Serialized array
+ * @dataProvider dataGetMetadata
+ */
+ public function testGetMetadata( $filename, $expected ) {
+ $file = UnregisteredLocalFile::newFromPath( $this->filePath . $filename,
+ 'image/png' );
+ $actual = $this->handler->getMetadata( $file, $this->filePath . $filename );
+// $this->assertEquals( unserialize( $expected ), unserialize( $actual ) );
+ $this->assertEquals( ( $expected ), ( $actual ) );
+ }
+ public function dataGetMetadata() {
+ return array(
+ array( 'rgb-na-png.png', 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:8;s:9:"colorType";s:10:"truecolour";s:8:"metadata";a:1:{s:15:"_MW_PNG_VERSION";i:1;}}' ),
+ array( 'xmp.png', 'a:6:{s:10:"frameCount";i:0;s:9:"loopCount";i:1;s:8:"duration";d:0;s:8:"bitDepth";i:1;s:9:"colorType";s:14:"index-coloured";s:8:"metadata";a:2:{s:12:"SerialNumber";s:9:"123456789";s:15:"_MW_PNG_VERSION";i:1;}}' ),
+ );
+ }
+}
diff --git a/tests/phpunit/includes/media/SVGMetadataExtractorTest.php b/tests/phpunit/includes/media/SVGMetadataExtractorTest.php
new file mode 100644
index 00000000..c2c81b98
--- /dev/null
+++ b/tests/phpunit/includes/media/SVGMetadataExtractorTest.php
@@ -0,0 +1,88 @@
+<?php
+
+class SVGMetadataExtractorTest extends MediaWikiTestCase {
+
+ function setUp() {
+ AutoLoader::loadClass( 'SVGMetadataExtractorTest' );
+ }
+
+ /**
+ * @dataProvider providerSvgFiles
+ */
+ function testGetMetadata( $infile, $expected ) {
+ $this->assertMetadata( $infile, $expected );
+ }
+
+ /**
+ * @dataProvider providerSvgFilesWithXMLMetadata
+ */
+ function testGetXMLMetadata( $infile, $expected ) {
+ $r = new XMLReader();
+ if( !method_exists( $r, 'readInnerXML' ) ) {
+ $this->markTestSkipped( 'XMLReader::readInnerXML() does not exist (libxml >2.6.20 needed).' );
+ return;
+ }
+ $this->assertMetadata( $infile, $expected );
+ }
+
+ function assertMetadata( $infile, $expected ) {
+ try {
+ $data = SVGMetadataExtractor::getMetadata( $infile );
+ $this->assertEquals( $expected, $data, 'SVG metadata extraction test' );
+ } catch ( MWException $e ) {
+ if ( $expected === false ) {
+ $this->assertTrue( true, 'SVG metadata extracted test (expected failure)' );
+ } else {
+ throw $e;
+ }
+ }
+ }
+
+ function providerSvgFiles() {
+ $base = dirname( __FILE__ ) . '/../../data/media';
+ return array(
+ array(
+ "$base/Wikimedia-logo.svg",
+ array(
+ 'width' => 1024,
+ 'height' => 1024
+ )
+ ),
+ array(
+ "$base/QA_icon.svg",
+ array(
+ 'width' => 60,
+ 'height' => 60
+ )
+ ),
+ array(
+ "$base/Gtk-media-play-ltr.svg",
+ array(
+ 'width' => 60,
+ 'height' => 60
+ )
+ ),
+ );
+ }
+
+ function providerSvgFilesWithXMLMetadata() {
+ $base = dirname( __FILE__ ) . '/../../data/media';
+ return array(
+ array(
+ "$base/US_states_by_total_state_tax_revenue.svg",
+ array(
+ 'height' => 593,
+ 'metadata' =>
+ '<rdf:RDF xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#">
+ <ns4:Work xmlns:ns4="http://creativecommons.org/ns#" rdf:about="">
+ <ns5:format xmlns:ns5="http://purl.org/dc/elements/1.1/">image/svg+xml</ns5:format>
+ <ns5:type xmlns:ns5="http://purl.org/dc/elements/1.1/" rdf:resource="http://purl.org/dc/dcmitype/StillImage"/>
+ </ns4:Work>
+ </rdf:RDF>',
+ 'width' => 959
+ )
+ ),
+ );
+ }
+}
+
diff --git a/tests/phpunit/includes/media/TiffTest.php b/tests/phpunit/includes/media/TiffTest.php
new file mode 100644
index 00000000..0a7e8e8c
--- /dev/null
+++ b/tests/phpunit/includes/media/TiffTest.php
@@ -0,0 +1,36 @@
+<?php
+class TiffTest extends MediaWikiTestCase {
+
+ public function setUp() {
+ global $wgShowEXIF;
+ $this->showExif = $wgShowEXIF;
+ $wgShowEXIF = true;
+ $this->filePath = dirname( __FILE__ ) . '/../../data/media/';
+ $this->handler = new TiffHandler;
+ }
+
+ public function tearDown() {
+ global $wgShowEXIF;
+ $wgShowEXIF = $this->showExif;
+ }
+
+ public function testInvalidFile() {
+ global $wgShowEXIF;
+ if ( !$wgShowEXIF ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+ $res = $this->handler->getMetadata( null, $this->filePath . 'README' );
+ $this->assertEquals( ExifBitmapHandler::BROKEN_FILE, $res );
+ }
+ public function testTiffMetadataExtraction() {
+ global $wgShowEXIF;
+ if ( !$wgShowEXIF ) {
+ $this->markTestIncomplete( "This test needs the exif extension." );
+ }
+ $res = $this->handler->getMetadata( null, $this->filePath . 'test.tiff' );
+ $expected = 'a:16:{s:10:"ImageWidth";i:20;s:11:"ImageLength";i:20;s:13:"BitsPerSample";a:3:{i:0;i:8;i:1;i:8;i:2;i:8;}s:11:"Compression";i:5;s:25:"PhotometricInterpretation";i:2;s:16:"ImageDescription";s:17:"Created with GIMP";s:12:"StripOffsets";i:8;s:11:"Orientation";i:1;s:15:"SamplesPerPixel";i:3;s:12:"RowsPerStrip";i:64;s:15:"StripByteCounts";i:238;s:11:"XResolution";s:19:"1207959552/16777216";s:11:"YResolution";s:19:"1207959552/16777216";s:19:"PlanarConfiguration";i:1;s:14:"ResolutionUnit";i:2;s:22:"MEDIAWIKI_EXIF_VERSION";i:2;}';
+ // Re-unserialize in case there are subtle differences between how versions
+ // of php serialize stuff.
+ $this->assertEquals( unserialize( $expected ), unserialize( $res ) );
+ }
+}
diff --git a/tests/phpunit/includes/media/XMPTest.php b/tests/phpunit/includes/media/XMPTest.php
new file mode 100644
index 00000000..d1ec4767
--- /dev/null
+++ b/tests/phpunit/includes/media/XMPTest.php
@@ -0,0 +1,154 @@
+<?php
+class XMPTest extends MediaWikiTestCase {
+
+ /**
+ * Put XMP in, compare what comes out...
+ *
+ * @param $xmp String the actual xml data.
+ * @param $expected Array expected result of parsing the xmp.
+ * @param $info String Short sentence on what's being tested.
+ *
+ * @dataProvider dataXMPParse
+ */
+ public function testXMPParse( $xmp, $expected, $info ) {
+ if ( !function_exists( 'xml_parser_create_ns' ) ) {
+ $this->markIncomplete( 'Requires libxml to do XMP parsing' );
+ }
+ if ( !is_string( $xmp ) || !is_array( $expected ) ) {
+ throw new Exception( "Invalid data provided to " . __METHOD__ );
+ }
+ $reader = new XMPReader;
+ $reader->parse( $xmp );
+ $this->assertEquals( $expected, $reader->getResults(), $info );
+ }
+
+ public function dataXMPParse() {
+ $xmpPath = dirname( __FILE__ ) . '/../../data/xmp/' ;
+ $data = array();
+
+ // $xmpFiles format: array of arrays with first arg file base name,
+ // with the actual file having .xmp on the end for the xmp
+ // and .result.php on the end for a php file containing the result
+ // array. Second argument is some info on what's being tested.
+ $xmpFiles = array(
+ array( '1', 'parseType=Resource test' ),
+ array( '2', 'Structure with mixed attribute and element props' ),
+ array( '3', 'Extra qualifiers (that should be ignored)' ),
+ array( '3-invalid', 'Test ignoring qualifiers that look like normal props' ),
+ array( '4', 'Flash as qualifier' ),
+ array( '5', 'Flash as qualifier 2' ),
+ array( '6', 'Multiple rdf:Description' ),
+ array( '7', 'Generic test of several property types' ),
+ array( 'flash', 'Test of Flash property' ),
+ array( 'invalid-child-not-struct', 'Test child props not in struct or ignored' ),
+ array( 'no-recognized-props', 'Test namespace and no recognized props' ),
+ array( 'no-namespace', 'Test non-namespaced attributes are ignored' ),
+ array( 'bag-for-seq', "Allow bag's instead of seq's. (bug 27105)" ),
+ array( 'utf16BE', 'UTF-16BE encoding' ),
+ array( 'utf16LE', 'UTF-16LE encoding' ),
+ array( 'utf32BE', 'UTF-32BE encoding' ),
+ array( 'utf32LE', 'UTF-32LE encoding' ),
+ array( 'xmpExt', 'Extended XMP missing second part' ),
+ );
+ foreach( $xmpFiles as $file ) {
+ $xmp = file_get_contents( $xmpPath . $file[0] . '.xmp' );
+ // I'm not sure if this is the best way to handle getting the
+ // result array, but it seems kind of big to put directly in the test
+ // file.
+ $result = null;
+ include( $xmpPath . $file[0] . '.result.php' );
+ $data[] = array( $xmp, $result, '[' . $file[0] . '.xmp] ' . $file[1] );
+ }
+ return $data;
+ }
+
+ /** Test ExtendedXMP block support. (Used when the XMP has to be split
+ * over multiple jpeg segments, due to 64k size limit on jpeg segments.
+ *
+ * @todo This is based on what the standard says. Need to find a real
+ * world example file to double check the support for this is right.
+ */
+ function testExtendedXMP() {
+ $xmpPath = dirname( __FILE__ ) . '/../../data/xmp/';
+ $standardXMP = file_get_contents( $xmpPath . 'xmpExt.xmp' );
+ $extendedXMP = file_get_contents( $xmpPath . 'xmpExt2.xmp' );
+
+ $md5sum = '28C74E0AC2D796886759006FBE2E57B7'; // of xmpExt2.xmp
+ $length = pack( 'N', strlen( $extendedXMP ) );
+ $offset = pack( 'N', 0 );
+ $extendedPacket = $md5sum . $length . $offset . $extendedXMP;
+
+ $reader = new XMPReader();
+ $reader->parse( $standardXMP );
+ $reader->parseExtended( $extendedPacket );
+ $actual = $reader->getResults();
+
+ $expected = array( 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ 'Flash' => 9,
+ 'FNumber' => '2/10',
+ )
+ );
+
+ $this->assertEquals( $expected, $actual );
+ }
+
+ /**
+ * This test has an extended XMP block with a wrong guid (md5sum)
+ * and thus should only return the StandardXMP, not the ExtendedXMP.
+ */
+ function testExtendedXMPWithWrongGUID() {
+ $xmpPath = dirname( __FILE__ ) . '/../../data/xmp/';
+ $standardXMP = file_get_contents( $xmpPath . 'xmpExt.xmp' );
+ $extendedXMP = file_get_contents( $xmpPath . 'xmpExt2.xmp' );
+
+ $md5sum = '28C74E0AC2D796886759006FBE2E57B9'; // Note last digit.
+ $length = pack( 'N', strlen( $extendedXMP ) );
+ $offset = pack( 'N', 0 );
+ $extendedPacket = $md5sum . $length . $offset . $extendedXMP;
+
+ $reader = new XMPReader();
+ $reader->parse( $standardXMP );
+ $reader->parseExtended( $extendedPacket );
+ $actual = $reader->getResults();
+
+ $expected = array( 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ 'Flash' => 9,
+ )
+ );
+
+ $this->assertEquals( $expected, $actual );
+ }
+ /**
+ * Have a high offset to simulate a missing packet,
+ * which should cause it to ignore the ExtendedXMP packet.
+ */
+ function testExtendedXMPMissingPacket() {
+ $xmpPath = dirname( __FILE__ ) . '/../../data/xmp/';
+ $standardXMP = file_get_contents( $xmpPath . 'xmpExt.xmp' );
+ $extendedXMP = file_get_contents( $xmpPath . 'xmpExt2.xmp' );
+
+ $md5sum = '28C74E0AC2D796886759006FBE2E57B7'; // of xmpExt2.xmp
+ $length = pack( 'N', strlen( $extendedXMP ) );
+ $offset = pack( 'N', 2048 );
+ $extendedPacket = $md5sum . $length . $offset . $extendedXMP;
+
+ $reader = new XMPReader();
+ $reader->parse( $standardXMP );
+ $reader->parseExtended( $extendedPacket );
+ $actual = $reader->getResults();
+
+ $expected = array( 'xmp-exif' =>
+ array(
+ 'DigitalZoomRatio' => '0/10',
+ 'Flash' => 9,
+ )
+ );
+
+ $this->assertEquals( $expected, $actual );
+ }
+
+}
diff --git a/includes/normal/CleanUpTest.php b/tests/phpunit/includes/normal/CleanUpTest.php
index 549a0406..d5ad18d8 100644
--- a/includes/normal/CleanUpTest.php
+++ b/tests/phpunit/includes/normal/CleanUpTest.php
@@ -21,50 +21,16 @@
* http://www.gnu.org/copyleft/gpl.html
*
* @file
- * @ingroup UtfNormal
*/
-
-if( php_sapi_name() != 'cli' ) {
- die( "Run me from the command line please.\n" );
-}
-
-/** */
-if( isset( $_SERVER['argv'] ) && in_array( '--icu', $_SERVER['argv'] ) ) {
- dl( 'php_utfnormal.so' );
-}
-
-#ini_set( 'memory_limit', '40M' );
-
-require_once( 'PHPUnit/Runner/Version.php' );
-if( version_compare( PHPUnit_Runner_Version::id(), '3.5.0', '>=' ) ) {
- # PHPUnit 3.5.0 introduced a nice autoloader based on class name
- require_once( 'PHPUnit/Autoload.php' );
-} else {
- # Keep the old pre PHPUnit 3.5.0 behaviour for compatibility
- require_once 'PHPUnit/Framework.php';
-}
-require_once 'PHPUnit/TextUI/TestRunner.php';
-
-require_once 'UtfNormal.php';
-
/**
* Additional tests for UtfNormal::cleanUp() function, inclusion
* regression checks for known problems.
* Requires PHPUnit.
*
* @ingroup UtfNormal
- * @private
*/
-class CleanUpTest extends PHPUnit_Framework_TestCase {
- /** @todo document */
- function setUp() {
- }
-
- /** @todo document */
- function tearDown() {
- }
-
+class CleanUpTest extends MediaWikiTestCase {
/** @todo document */
function testAscii() {
$text = 'This is plain ASCII text.';
@@ -174,8 +140,8 @@ class CleanUpTest extends PHPUnit_Framework_TestCase {
* @todo document
*/
function doTestDoubleBytes( $head, $tail ) {
- for( $first = 0xc0; $first < 0x100; $first++ ) {
- for( $second = 0x80; $second < 0x100; $second++ ) {
+ for( $first = 0xc0; $first < 0x100; $first+=2 ) {
+ for( $second = 0x80; $second < 0x100; $second+=2 ) {
$char = $head . chr( $first ) . chr( $second ) . $tail;
$clean = UtfNormal::cleanUp( $char );
$x = sprintf( "%02X,%02X", $first, $second );
@@ -218,8 +184,8 @@ class CleanUpTest extends PHPUnit_Framework_TestCase {
/** @todo document */
function doTestTripleBytes( $head, $tail ) {
- for( $first = 0xc0; $first < 0x100; $first++ ) {
- for( $second = 0x80; $second < 0x100; $second++ ) {
+ for( $first = 0xc0; $first < 0x100; $first+=2 ) {
+ for( $second = 0x80; $second < 0x100; $second+=2 ) {
#for( $third = 0x80; $third < 0x100; $third++ ) {
for( $third = 0x80; $third < 0x81; $third++ ) {
$char = $head . chr( $first ) . chr( $second ) . chr( $third ) . $tail;
@@ -414,12 +380,3 @@ class CleanUpTest extends PHPUnit_Framework_TestCase {
bin2hex( UtfNormal::cleanUp( $text ) ) );
}
}
-
-
-$suite = new PHPUnit_Framework_TestSuite( 'CleanUpTest' );
-$result = PHPUnit_TextUI_TestRunner::run( $suite );
-
-if( !$result->wasSuccessful() ) {
- exit( -1 );
-}
-exit( 0 );
diff --git a/tests/phpunit/includes/parser/MagicVariableTest.php b/tests/phpunit/includes/parser/MagicVariableTest.php
new file mode 100644
index 00000000..a47653e3
--- /dev/null
+++ b/tests/phpunit/includes/parser/MagicVariableTest.php
@@ -0,0 +1,195 @@
+<?php
+/**
+ * This file is intended to test magic variables in the parser
+ * It was inspired by Raymond & Matěj Grabovský commenting about r66200
+ *
+ * As of february 2011, it only tests some revisions and date related
+ * magic variables.
+ *
+ * @author Ashar Voultoiz
+ * @copyright Copyright © 2011, Ashar Voultoiz
+ * @file
+ */
+
+/** */
+class MagicVariableTest extends MediaWikiTestCase {
+ /** Will contains a parser object*/
+ private $testParser = null;
+
+ /**
+ * An array of magicword returned as type integer by the parser
+ * They are usually returned as a string for i18n since we support
+ * persan numbers for example, but some magic explicitly return
+ * them as integer.
+ * @see MagicVariableTest::assertMagic()
+ */
+ private $expectedAsInteger = array(
+ 'revisionday',
+ 'revisionmonth1',
+ );
+
+ /** setup a basic parser object */
+ function setUp() {
+ global $wgContLang;
+ $wgContLang = Language::factory( 'en' );
+
+ $this->testParser = new Parser();
+ $this->testParser->Options( new ParserOptions() );
+
+ # initialize parser output
+ $this->testParser->clearState();
+ }
+
+ /** destroy parser (TODO: is it really neded?)*/
+ function tearDown() {
+ unset( $this->testParser );
+ }
+
+ ############### TESTS #############################################
+ # @todo FIXME:
+ # - those got copy pasted, we can probably make them cleaner
+ # - tests are lacking useful messages
+
+ # day
+
+ /** @dataProvider MediaWikiProvide::Days */
+ function testCurrentdayIsUnPadded( $day ) {
+ $this->assertUnPadded( 'currentday', $day );
+ }
+ /** @dataProvider MediaWikiProvide::Days */
+ function testCurrentdaytwoIsZeroPadded( $day ) {
+ $this->assertZeroPadded( 'currentday2', $day );
+ }
+ /** @dataProvider MediaWikiProvide::Days */
+ function testLocaldayIsUnPadded( $day ) {
+ $this->assertUnPadded( 'localday', $day );
+ }
+ /** @dataProvider MediaWikiProvide::Days */
+ function testLocaldaytwoIsZeroPadded( $day ) {
+ $this->assertZeroPadded( 'localday2', $day );
+ }
+
+ # month
+
+ /** @dataProvider MediaWikiProvide::Months */
+ function testCurrentmonthIsZeroPadded( $month ) {
+ $this->assertZeroPadded( 'currentmonth', $month );
+ }
+ /** @dataProvider MediaWikiProvide::Months */
+ function testCurrentmonthoneIsUnPadded( $month ) {
+ $this->assertUnPadded( 'currentmonth1', $month );
+ }
+ /** @dataProvider MediaWikiProvide::Months */
+ function testLocalmonthIsZeroPadded( $month ) {
+ $this->assertZeroPadded( 'localmonth', $month );
+ }
+ /** @dataProvider MediaWikiProvide::Months */
+ function testLocalmonthoneIsUnPadded( $month ) {
+ $this->assertUnPadded( 'localmonth1', $month );
+ }
+
+
+ # revision day
+
+ /** @dataProvider MediaWikiProvide::Days */
+ function testRevisiondayIsUnPadded( $day ) {
+ $this->assertUnPadded( 'revisionday', $day );
+ }
+ /** @dataProvider MediaWikiProvide::Days */
+ function testRevisiondaytwoIsZeroPadded( $day ) {
+ $this->assertZeroPadded( 'revisionday2', $day );
+ }
+
+ # revision month
+
+ /** @dataProvider MediaWikiProvide::Months */
+ function testRevisionmonthIsZeroPadded( $month ) {
+ $this->assertZeroPadded( 'revisionmonth', $month );
+ }
+ /** @dataProvider MediaWikiProvide::Months */
+ function testRevisionmonthoneIsUnPadded( $month ) {
+ $this->assertUnPadded( 'revisionmonth1', $month );
+ }
+
+ /**
+ * Rough tests for {{SERVERNAME}} magic word
+ * Bug 31176
+ */
+ function testServernameFromDifferentProtocols() {
+ global $wgServer;
+ $saved_wgServer= $wgServer;
+
+ $wgServer = 'http://localhost/';
+ $this->assertMagic( 'localhost', 'servername' );
+ $wgServer = 'https://localhost/';
+ $this->assertMagic( 'localhost', 'servername' );
+ $wgServer = '//localhost/'; # bug 31176
+ $this->assertMagic( 'localhost', 'servername' );
+
+ $wgServer = $saved_wgServer;
+ }
+
+ ############### HELPERS ############################################
+
+ /** assertion helper expecting a magic output which is zero padded */
+ PUBLIC function assertZeroPadded( $magic, $value ) {
+ $this->assertMagicPadding( $magic, $value, '%02d' );
+ }
+
+ /** assertion helper expecting a magic output which is unpadded */
+ PUBLIC function assertUnPadded( $magic, $value ) {
+ $this->assertMagicPadding( $magic, $value, '%d' );
+ }
+
+ /**
+ * Main assertion helper for magic variables padding
+ * @param $magic string Magic variable name
+ * @param $value mixed Month or day
+ * @param $format string sprintf format for $value
+ */
+ private function assertMagicPadding( $magic, $value, $format ) {
+ # Initialize parser timestamp as year 2010 at 12h34 56s.
+ # month and day are given by the caller ($value). Month < 12!
+ if( $value > 12 ) { $month = $value % 12; }
+ else { $month = $value; }
+
+ $this->setParserTS(
+ sprintf( '2010%02d%02d123456', $month, $value )
+ );
+
+ # please keep the following commented line of code. It helps debugging.
+ //print "\nDEBUG (value $value):" . sprintf( '2010%02d%02d123456', $value, $value ) . "\n";
+
+ # format expectation and test it
+ $expected = sprintf( $format, $value );
+ $this->assertMagic( $expected, $magic );
+ }
+
+ /** helper to set the parser timestamp and revision timestamp */
+ private function setParserTS( $ts ) {
+ $this->testParser->Options()->setTimestamp( $ts );
+ $this->testParser->mRevisionTimestamp = $ts;
+ }
+
+ /**
+ * Assertion helper to test a magic variable output
+ */
+ private function assertMagic( $expected, $magic ) {
+ if( in_array( $magic, $this->expectedAsInteger ) ) {
+ $expected = (int) $expected;
+ }
+
+ # Generate a message for the assertion
+ $msg = sprintf( "Magic %s should be <%s:%s>",
+ $magic,
+ $expected,
+ gettype( $expected )
+ );
+
+ $this->assertSame(
+ $expected,
+ $this->testParser->getVariableValue( $magic ),
+ $msg
+ );
+ }
+}
diff --git a/tests/phpunit/includes/parser/MediaWikiParserTest.php b/tests/phpunit/includes/parser/MediaWikiParserTest.php
new file mode 100644
index 00000000..18510d9a
--- /dev/null
+++ b/tests/phpunit/includes/parser/MediaWikiParserTest.php
@@ -0,0 +1,34 @@
+<?php
+
+require_once( dirname( __FILE__ ) . '/ParserHelpers.php' );
+require_once( dirname( __FILE__ ) . '/NewParserTest.php' );
+
+/**
+ * The UnitTest must be either a class that inherits from PHPUnit_Framework_TestCase
+ * or a class that provides a public static suite() method which returns
+ * an PHPUnit_Framework_Test object
+ *
+ * @group Parser
+ * @group Database
+ */
+class MediaWikiParserTest {
+
+ public static function suite() {
+ global $wgParserTestFiles;
+
+ $suite = new PHPUnit_Framework_TestSuite;
+
+ foreach ( $wgParserTestFiles as $filename ) {
+ $testsName = basename( $filename, '.txt' );
+ $className = /*ucfirst( basename( dirname( $filename ) ) ) .*/ ucfirst( basename( $filename, '.txt' ) );
+
+ eval( "/** @group Database\n@group Parser\n*/ class $className extends NewParserTest { protected \$file = \"" . addslashes( $filename ) . "\"; } " );
+
+ $parserTester = new $className( $testsName );
+ $suite->addTestSuite( new ReflectionClass ( $parserTester ) );
+ }
+
+
+ return $suite;
+ }
+}
diff --git a/tests/phpunit/includes/parser/NewParserTest.php b/tests/phpunit/includes/parser/NewParserTest.php
new file mode 100644
index 00000000..f4d5f757
--- /dev/null
+++ b/tests/phpunit/includes/parser/NewParserTest.php
@@ -0,0 +1,850 @@
+<?php
+
+/**
+ * Although marked as a stub, can work independently.
+ *
+ * @group Database
+ * @group Parser
+ * @group Stub
+ */
+class NewParserTest extends MediaWikiTestCase {
+
+ static protected $articles = array(); // Array of test articles defined by the tests
+ /* The dataProvider is run on a different instance than the test, so it must be static
+ * When running tests from several files, all tests will see all articles.
+ */
+
+ public $uploadDir;
+ public $keepUploads = false;
+ public $runDisabled = false;
+ public $regex = '';
+ public $showProgress = true;
+ public $savedInitialGlobals = array();
+ public $savedWeirdGlobals = array();
+ public $savedGlobals = array();
+ public $hooks = array();
+ public $functionHooks = array();
+
+ //Fuzz test
+ public $maxFuzzTestLength = 300;
+ public $fuzzSeed = 0;
+ public $memoryLimit = 50;
+
+ protected $file = false;
+
+ /*function __construct($a = null,$b = array(),$c = null ) {
+ parent::__construct($a,$b,$c);
+ }*/
+
+ function setUp() {
+ global $wgContLang, $wgNamespaceProtection, $wgNamespaceAliases;
+ global $wgHooks, $IP;
+ $wgContLang = Language::factory( 'en' );
+
+ //Setup CLI arguments
+ if ( $this->getCliArg( 'regex=' ) ) {
+ $this->regex = $this->getCliArg( 'regex=' );
+ } else {
+ # Matches anything
+ $this->regex = '';
+ }
+
+ $this->keepUploads = $this->getCliArg( 'keep-uploads' );
+
+ $tmpGlobals = array();
+
+ $tmpGlobals['wgScript'] = '/index.php';
+ $tmpGlobals['wgScriptPath'] = '/';
+ $tmpGlobals['wgArticlePath'] = '/wiki/$1';
+ $tmpGlobals['wgStyleSheetPath'] = '/skins';
+ $tmpGlobals['wgStylePath'] = '/skins';
+ $tmpGlobals['wgThumbnailScriptPath'] = false;
+ $tmpGlobals['wgLocalFileRepo'] = array(
+ 'class' => 'LocalRepo',
+ 'name' => 'local',
+ 'directory' => wfTempDir() . '/test-repo',
+ 'url' => 'http://example.com/images',
+ 'deletedDir' => wfTempDir() . '/test-repo/delete',
+ 'hashLevels' => 2,
+ 'transformVia404' => false,
+ );
+
+ $tmpGlobals['wgEnableParserCache'] = false;
+ $tmpGlobals['wgHooks'] = $wgHooks;
+ $tmpGlobals['wgDeferredUpdateList'] = array();
+ $tmpGlobals['wgMemc'] = wfGetMainCache();
+ $tmpGlobals['messageMemc'] = wfGetMessageCacheStorage();
+ $tmpGlobals['parserMemc'] = wfGetParserCacheStorage();
+
+ // $tmpGlobals['wgContLang'] = new StubContLang;
+ $tmpGlobals['wgUser'] = new User;
+ $context = new RequestContext();
+ $tmpGlobals['wgLang'] = $context->getLang();
+ $tmpGlobals['wgOut'] = $context->getOutput();
+ $tmpGlobals['wgParser'] = new StubObject( 'wgParser', $GLOBALS['wgParserConf']['class'], array( $GLOBALS['wgParserConf'] ) );
+ $tmpGlobals['wgRequest'] = new WebRequest;
+
+ if ( $GLOBALS['wgStyleDirectory'] === false ) {
+ $tmpGlobals['wgStyleDirectory'] = "$IP/skins";
+ }
+
+
+ foreach ( $tmpGlobals as $var => $val ) {
+ if ( array_key_exists( $var, $GLOBALS ) ) {
+ $this->savedInitialGlobals[$var] = $GLOBALS[$var];
+ }
+
+ $GLOBALS[$var] = $val;
+ }
+
+ $this->savedWeirdGlobals['mw_namespace_protection'] = $wgNamespaceProtection[NS_MEDIAWIKI];
+ $this->savedWeirdGlobals['image_alias'] = $wgNamespaceAliases['Image'];
+ $this->savedWeirdGlobals['image_talk_alias'] = $wgNamespaceAliases['Image_talk'];
+
+ $wgNamespaceProtection[NS_MEDIAWIKI] = 'editinterface';
+ $wgNamespaceAliases['Image'] = NS_FILE;
+ $wgNamespaceAliases['Image_talk'] = NS_FILE_TALK;
+
+ }
+
+ public function tearDown() {
+
+ foreach ( $this->savedInitialGlobals as $var => $val ) {
+ $GLOBALS[$var] = $val;
+ }
+
+ global $wgNamespaceProtection, $wgNamespaceAliases;
+
+ $wgNamespaceProtection[NS_MEDIAWIKI] = $this->savedWeirdGlobals['mw_namespace_protection'];
+ $wgNamespaceAliases['Image'] = $this->savedWeirdGlobals['image_alias'];
+ $wgNamespaceAliases['Image_talk'] = $this->savedWeirdGlobals['image_talk_alias'];
+ }
+
+ function addDBData() {
+ # Hack: insert a few Wikipedia in-project interwiki prefixes,
+ # for testing inter-language links
+ $this->db->insert( 'interwiki', array(
+ array( 'iw_prefix' => 'wikipedia',
+ 'iw_url' => 'http://en.wikipedia.org/wiki/$1',
+ 'iw_api' => '',
+ 'iw_wikiid' => '',
+ 'iw_local' => 0 ),
+ array( 'iw_prefix' => 'meatball',
+ 'iw_url' => 'http://www.usemod.com/cgi-bin/mb.pl?$1',
+ 'iw_api' => '',
+ 'iw_wikiid' => '',
+ 'iw_local' => 0 ),
+ array( 'iw_prefix' => 'zh',
+ 'iw_url' => 'http://zh.wikipedia.org/wiki/$1',
+ 'iw_api' => '',
+ 'iw_wikiid' => '',
+ 'iw_local' => 1 ),
+ array( 'iw_prefix' => 'es',
+ 'iw_url' => 'http://es.wikipedia.org/wiki/$1',
+ 'iw_api' => '',
+ 'iw_wikiid' => '',
+ 'iw_local' => 1 ),
+ array( 'iw_prefix' => 'fr',
+ 'iw_url' => 'http://fr.wikipedia.org/wiki/$1',
+ 'iw_api' => '',
+ 'iw_wikiid' => '',
+ 'iw_local' => 1 ),
+ array( 'iw_prefix' => 'ru',
+ 'iw_url' => 'http://ru.wikipedia.org/wiki/$1',
+ 'iw_api' => '',
+ 'iw_wikiid' => '',
+ 'iw_local' => 1 ),
+ /**
+ * @todo Fixme! Why are we inserting duplicate data here? Shouldn't
+ * need this IGNORE or shouldn't need the insert at all.
+ */
+ ), __METHOD__, array( 'IGNORE' ) );
+
+
+ # Update certain things in site_stats
+ $this->db->insert( 'site_stats',
+ array( 'ss_row_id' => 1, 'ss_images' => 2, 'ss_good_articles' => 1 ),
+ __METHOD__,
+ /**
+ * @todo Fixme! Same as above!
+ */
+ array( 'IGNORE' )
+ );
+
+ # Reinitialise the LocalisationCache to match the database state
+ Language::getLocalisationCache()->unloadAll();
+
+ # Clear the message cache
+ MessageCache::singleton()->clear();
+
+ $this->uploadDir = $this->setupUploadDir();
+
+ $user = User::newFromId( 0 );
+ LinkCache::singleton()->clear(); # Avoids the odd failure at creating the nullRevision
+
+ $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Foobar.jpg' ) );
+ $image->recordUpload2( '', 'Upload of some lame file', 'Some lame file', array(
+ 'size' => 12345,
+ 'width' => 1941,
+ 'height' => 220,
+ 'bits' => 24,
+ 'media_type' => MEDIATYPE_BITMAP,
+ 'mime' => 'image/jpeg',
+ 'metadata' => serialize( array() ),
+ 'sha1' => wfBaseConvert( '', 16, 36, 31 ),
+ 'fileExists' => true
+ ), $this->db->timestamp( '20010115123500' ), $user );
+
+ # This image will be blacklisted in [[MediaWiki:Bad image list]]
+ $image = wfLocalFile( Title::makeTitle( NS_FILE, 'Bad.jpg' ) );
+ $image->recordUpload2( '', 'zomgnotcensored', 'Borderline image', array(
+ 'size' => 12345,
+ 'width' => 320,
+ 'height' => 240,
+ 'bits' => 24,
+ 'media_type' => MEDIATYPE_BITMAP,
+ 'mime' => 'image/jpeg',
+ 'metadata' => serialize( array() ),
+ 'sha1' => wfBaseConvert( '', 16, 36, 31 ),
+ 'fileExists' => true
+ ), $this->db->timestamp( '20010115123500' ), $user );
+
+ }
+
+
+
+
+ //ParserTest setup/teardown functions
+
+ /**
+ * Set up the global variables for a consistent environment for each test.
+ * Ideally this should replace the global configuration entirely.
+ */
+ protected function setupGlobals( $opts = '', $config = '' ) {
+ # Find out values for some special options.
+ $lang =
+ self::getOptionValue( 'language', $opts, 'en' );
+ $variant =
+ self::getOptionValue( 'variant', $opts, false );
+ $maxtoclevel =
+ self::getOptionValue( 'wgMaxTocLevel', $opts, 999 );
+ $linkHolderBatchSize =
+ self::getOptionValue( 'wgLinkHolderBatchSize', $opts, 1000 );
+
+ $settings = array(
+ 'wgServer' => 'http://Britney-Spears',
+ 'wgScript' => '/index.php',
+ 'wgScriptPath' => '/',
+ 'wgArticlePath' => '/wiki/$1',
+ 'wgActionPaths' => array(),
+ 'wgLocalFileRepo' => array(
+ 'class' => 'LocalRepo',
+ 'name' => 'local',
+ 'directory' => $this->uploadDir,
+ 'url' => 'http://example.com/images',
+ 'hashLevels' => 2,
+ 'transformVia404' => false,
+ ),
+ 'wgEnableUploads' => self::getOptionValue( 'wgEnableUploads', $opts, true ),
+ 'wgStylePath' => '/skins',
+ 'wgStyleSheetPath' => '/skins',
+ 'wgSitename' => 'MediaWiki',
+ 'wgLanguageCode' => $lang,
+ 'wgDBprefix' => $this->db->getType() != 'oracle' ? 'unittest_' : 'ut_',
+ 'wgRawHtml' => isset( $opts['rawhtml'] ),
+ 'wgLang' => null,
+ 'wgContLang' => null,
+ 'wgNamespacesWithSubpages' => array( 0 => isset( $opts['subpage'] ) ),
+ 'wgMaxTocLevel' => $maxtoclevel,
+ 'wgCapitalLinks' => true,
+ 'wgNoFollowLinks' => true,
+ 'wgNoFollowDomainExceptions' => array(),
+ 'wgThumbnailScriptPath' => false,
+ 'wgUseImageResize' => false,
+ 'wgUseTeX' => isset( $opts['math'] ),
+ 'wgMathDirectory' => $this->uploadDir . '/math',
+ 'wgLocaltimezone' => 'UTC',
+ 'wgAllowExternalImages' => true,
+ 'wgUseTidy' => false,
+ 'wgDefaultLanguageVariant' => $variant,
+ 'wgVariantArticlePath' => false,
+ 'wgGroupPermissions' => array( '*' => array(
+ 'createaccount' => true,
+ 'read' => true,
+ 'edit' => true,
+ 'createpage' => true,
+ 'createtalk' => true,
+ ) ),
+ 'wgNamespaceProtection' => array( NS_MEDIAWIKI => 'editinterface' ),
+ 'wgDefaultExternalStore' => array(),
+ 'wgForeignFileRepos' => array(),
+ 'wgLinkHolderBatchSize' => $linkHolderBatchSize,
+ 'wgExperimentalHtmlIds' => false,
+ 'wgExternalLinkTarget' => false,
+ 'wgAlwaysUseTidy' => false,
+ 'wgHtml5' => true,
+ 'wgWellFormedXml' => true,
+ 'wgAllowMicrodataAttributes' => true,
+ 'wgAdaptiveMessageCache' => true,
+ 'wgUseDatabaseMessages' => true,
+ );
+
+ if ( $config ) {
+ $configLines = explode( "\n", $config );
+
+ foreach ( $configLines as $line ) {
+ list( $var, $value ) = explode( '=', $line, 2 );
+
+ $settings[$var] = eval( "return $value;" ); //???
+ }
+ }
+
+ $this->savedGlobals = array();
+
+ foreach ( $settings as $var => $val ) {
+ if ( array_key_exists( $var, $GLOBALS ) ) {
+ $this->savedGlobals[$var] = $GLOBALS[$var];
+ }
+
+ $GLOBALS[$var] = $val;
+ }
+
+ $langObj = Language::factory( $lang );
+ $GLOBALS['wgContLang'] = $langObj;
+ $context = new RequestContext();
+ $GLOBALS['wgLang'] = $context->getLang();
+
+ $GLOBALS['wgMemc'] = new EmptyBagOStuff;
+ $GLOBALS['wgOut'] = $context->getOutput();
+
+ global $wgHooks;
+
+ $wgHooks['ParserTestParser'][] = 'ParserTestParserHook::setup';
+ $wgHooks['ParserTestParser'][] = 'ParserTestStaticParserHook::setup';
+ $wgHooks['ParserGetVariableValueTs'][] = 'ParserTest::getFakeTimestamp';
+
+ MagicWord::clearCache();
+
+ # Publish the articles after we have the final language set
+ $this->publishTestArticles();
+
+ # The entries saved into RepoGroup cache with previous globals will be wrong.
+ RepoGroup::destroySingleton();
+ MessageCache::singleton()->destroyInstance();
+
+ global $wgUser;
+ $wgUser = new User();
+ }
+
+ /**
+ * Create a dummy uploads directory which will contain a couple
+ * of files in order to pass existence tests.
+ *
+ * @return String: the directory
+ */
+ protected function setupUploadDir() {
+ global $IP;
+
+ if ( $this->keepUploads ) {
+ $dir = wfTempDir() . '/mwParser-images';
+
+ if ( is_dir( $dir ) ) {
+ return $dir;
+ }
+ } else {
+ $dir = wfTempDir() . "/mwParser-" . mt_rand() . "-images";
+ }
+
+ // wfDebug( "Creating upload directory $dir\n" );
+ if ( file_exists( $dir ) ) {
+ wfDebug( "Already exists!\n" );
+ return $dir;
+ }
+
+ wfMkdirParents( $dir . '/3/3a' );
+ copy( "$IP/skins/monobook/headbg.jpg", "$dir/3/3a/Foobar.jpg" );
+ wfMkdirParents( $dir . '/0/09' );
+ copy( "$IP/skins/monobook/headbg.jpg", "$dir/0/09/Bad.jpg" );
+
+ return $dir;
+ }
+
+ /**
+ * Restore default values and perform any necessary clean-up
+ * after each test runs.
+ */
+ protected function teardownGlobals() {
+ RepoGroup::destroySingleton();
+ LinkCache::singleton()->clear();
+
+ foreach ( $this->savedGlobals as $var => $val ) {
+ $GLOBALS[$var] = $val;
+ }
+
+ $this->teardownUploadDir( $this->uploadDir );
+ }
+
+ /**
+ * Remove the dummy uploads directory
+ */
+ private function teardownUploadDir( $dir ) {
+ if ( $this->keepUploads ) {
+ return;
+ }
+
+ // delete the files first, then the dirs.
+ self::deleteFiles(
+ array (
+ "$dir/3/3a/Foobar.jpg",
+ "$dir/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg",
+ "$dir/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg",
+ "$dir/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg",
+ "$dir/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg",
+
+ "$dir/0/09/Bad.jpg",
+
+ "$dir/math/f/a/5/fa50b8b616463173474302ca3e63586b.png",
+ )
+ );
+
+ self::deleteDirs(
+ array (
+ "$dir/3/3a",
+ "$dir/3",
+ "$dir/thumb/6/65",
+ "$dir/thumb/6",
+ "$dir/thumb/3/3a/Foobar.jpg",
+ "$dir/thumb/3/3a",
+ "$dir/thumb/3",
+
+ "$dir/0/09/",
+ "$dir/0/",
+ "$dir/thumb",
+ "$dir/math/f/a/5",
+ "$dir/math/f/a",
+ "$dir/math/f",
+ "$dir/math",
+ "$dir",
+ )
+ );
+ }
+
+ /**
+ * Delete the specified files, if they exist.
+ * @param $files Array: full paths to files to delete.
+ */
+ private static function deleteFiles( $files ) {
+ foreach ( $files as $file ) {
+ if ( file_exists( $file ) ) {
+ unlink( $file );
+ }
+ }
+ }
+
+ /**
+ * Delete the specified directories, if they exist. Must be empty.
+ * @param $dirs Array: full paths to directories to delete.
+ */
+ private static function deleteDirs( $dirs ) {
+ foreach ( $dirs as $dir ) {
+ if ( is_dir( $dir ) ) {
+ rmdir( $dir );
+ }
+ }
+ }
+
+ public function parserTestProvider() {
+ if ( $this->file === false ) {
+ global $wgParserTestFiles;
+ $this->file = $wgParserTestFiles[0];
+ }
+ return new TestFileIterator( $this->file, $this );
+ }
+
+ /**
+ * Set the file from whose tests will be run by this instance
+ */
+ public function setParserTestFile( $filename ) {
+ $this->file = $filename;
+ }
+
+ /** @dataProvider parserTestProvider */
+ public function testParserTest( $desc, $input, $result, $opts, $config ) {
+ if ( !preg_match( '/' . $this->regex . '/', $desc ) ) return; //$this->markTestSkipped( 'Filtered out by the user' );
+
+ wfDebug( "Running parser test: $desc\n" );
+
+ $opts = $this->parseOptions( $opts );
+ $this->setupGlobals( $opts, $config );
+
+ $user = new User();
+ $options = ParserOptions::newFromUser( $user );
+
+ if ( isset( $opts['title'] ) ) {
+ $titleText = $opts['title'];
+ }
+ else {
+ $titleText = 'Parser test';
+ }
+
+ $local = isset( $opts['local'] );
+ $preprocessor = isset( $opts['preprocessor'] ) ? $opts['preprocessor'] : null;
+ $parser = $this->getParser( $preprocessor );
+
+ $title = Title::newFromText( $titleText );
+
+ if ( isset( $opts['pst'] ) ) {
+ $out = $parser->preSaveTransform( $input, $title, $user, $options );
+ } elseif ( isset( $opts['msg'] ) ) {
+ $out = $parser->transformMsg( $input, $options, $title );
+ } elseif ( isset( $opts['section'] ) ) {
+ $section = $opts['section'];
+ $out = $parser->getSection( $input, $section );
+ } elseif ( isset( $opts['replace'] ) ) {
+ $section = $opts['replace'][0];
+ $replace = $opts['replace'][1];
+ $out = $parser->replaceSection( $input, $section, $replace );
+ } elseif ( isset( $opts['comment'] ) ) {
+ $linker = $user->getSkin();
+ $out = $linker->formatComment( $input, $title, $local );
+ } elseif ( isset( $opts['preload'] ) ) {
+ $out = $parser->getpreloadText( $input, $title, $options );
+ } else {
+ $output = $parser->parse( $input, $title, $options, true, true, 1337 );
+ $out = $output->getText();
+
+ if ( isset( $opts['showtitle'] ) ) {
+ if ( $output->getTitleText() ) {
+ $title = $output->getTitleText();
+ }
+
+ $out = "$title\n$out";
+ }
+
+ if ( isset( $opts['ill'] ) ) {
+ $out = $this->tidy( implode( ' ', $output->getLanguageLinks() ) );
+ } elseif ( isset( $opts['cat'] ) ) {
+ global $wgOut;
+
+ $wgOut->addCategoryLinks( $output->getCategories() );
+ $cats = $wgOut->getCategoryLinks();
+
+ if ( isset( $cats['normal'] ) ) {
+ $out = $this->tidy( implode( ' ', $cats['normal'] ) );
+ } else {
+ $out = '';
+ }
+ }
+ $parser->mPreprocessor = null;
+
+ $result = $this->tidy( $result );
+ }
+
+ $this->teardownGlobals();
+
+ $this->assertEquals( $result, $out, $desc );
+ }
+
+ /**
+ * Run a fuzz test series
+ * Draw input from a set of test files
+ */
+ function testFuzzTests() {
+
+ $this->markTestIncomplete( "Somebody is serializing PDO objects, that's a no-no" );
+
+ global $wgParserTestFiles;
+
+ $files = $wgParserTestFiles;
+
+ if( $this->getCliArg( 'file=' ) ) {
+ $files = array( $this->getCliArg( 'file=' ) );
+ }
+
+ $dict = $this->getFuzzInput( $files );
+ $dictSize = strlen( $dict );
+ $logMaxLength = log( $this->maxFuzzTestLength );
+
+ $user = new User;
+ $opts = ParserOptions::newFromUser( $user );
+ $title = Title::makeTitle( NS_MAIN, 'Parser_test' );
+
+ $id = 1;
+
+ while ( true ) {
+
+ // Generate test input
+ mt_srand( ++$this->fuzzSeed );
+ $totalLength = mt_rand( 1, $this->maxFuzzTestLength );
+ $input = '';
+
+ while ( strlen( $input ) < $totalLength ) {
+ $logHairLength = mt_rand( 0, 1000000 ) / 1000000 * $logMaxLength;
+ $hairLength = min( intval( exp( $logHairLength ) ), $dictSize );
+ $offset = mt_rand( 0, $dictSize - $hairLength );
+ $input .= substr( $dict, $offset, $hairLength );
+ }
+
+ $this->setupGlobals();
+ $parser = $this->getParser();
+
+ // Run the test
+ try {
+ $parser->parse( $input, $title, $opts );
+ $this->assertTrue( true, "Test $id, fuzz seed {$this->fuzzSeed}" );
+ } catch ( Exception $exception ) {
+ $input_dump = sprintf( "string(%d) \"%s\"\n", strlen( $input ), $input );
+
+ $this->assertTrue( false, "Test $id, fuzz seed {$this->fuzzSeed}. \n\nInput: $input_dump\n\nError: {$exception->getMessage()}\n\nBacktrace: {$exception->getTraceAsString()}" );
+ }
+
+ $this->teardownGlobals();
+ $parser->__destruct();
+
+ if ( $id % 100 == 0 ) {
+ $usage = intval( memory_get_usage( true ) / $this->memoryLimit / 1048576 * 100 );
+ //echo "{$this->fuzzSeed}: $numSuccess/$numTotal (mem: $usage%)\n";
+ if ( $usage > 90 ) {
+ $ret = "Out of memory:\n";
+ $memStats = $this->getMemoryBreakdown();
+
+ foreach ( $memStats as $name => $usage ) {
+ $ret .= "$name: $usage\n";
+ }
+
+ throw new MWException( $ret );
+ }
+ }
+
+ $id++;
+
+ }
+ }
+
+ //Various getter functions
+
+ /**
+ * Get an input dictionary from a set of parser test files
+ */
+ function getFuzzInput( $filenames ) {
+ $dict = '';
+
+ foreach ( $filenames as $filename ) {
+ $contents = file_get_contents( $filename );
+ preg_match_all( '/!!\s*input\n(.*?)\n!!\s*result/s', $contents, $matches );
+
+ foreach ( $matches[1] as $match ) {
+ $dict .= $match . "\n";
+ }
+ }
+
+ return $dict;
+ }
+
+ /**
+ * Get a memory usage breakdown
+ */
+ function getMemoryBreakdown() {
+ $memStats = array();
+
+ foreach ( $GLOBALS as $name => $value ) {
+ $memStats['$' . $name] = strlen( serialize( $value ) );
+ }
+
+ $classes = get_declared_classes();
+
+ foreach ( $classes as $class ) {
+ $rc = new ReflectionClass( $class );
+ $props = $rc->getStaticProperties();
+ $memStats[$class] = strlen( serialize( $props ) );
+ $methods = $rc->getMethods();
+
+ foreach ( $methods as $method ) {
+ $memStats[$class] += strlen( serialize( $method->getStaticVariables() ) );
+ }
+ }
+
+ $functions = get_defined_functions();
+
+ foreach ( $functions['user'] as $function ) {
+ $rf = new ReflectionFunction( $function );
+ $memStats["$function()"] = strlen( serialize( $rf->getStaticVariables() ) );
+ }
+
+ asort( $memStats );
+
+ return $memStats;
+ }
+
+ /**
+ * Get a Parser object
+ */
+ function getParser( $preprocessor = null ) {
+ global $wgParserConf;
+
+ $class = $wgParserConf['class'];
+ $parser = new $class( array( 'preprocessorClass' => $preprocessor ) + $wgParserConf );
+
+ wfRunHooks( 'ParserTestParser', array( &$parser ) );
+
+ return $parser;
+ }
+
+ //Various action functions
+
+ public function addArticle( $name, $text, $line ) {
+ self::$articles[$name] = $text;
+ }
+
+ public function publishTestArticles() {
+ if ( empty( self::$articles ) ) {
+ return;
+ }
+
+ foreach ( self::$articles as $name => $text ) {
+ $title = Title::newFromText( $name );
+
+ if ( $title->getArticleID( Title::GAID_FOR_UPDATE ) == 0 ) {
+ ParserTest::addArticle( $name, $text );
+ }
+ }
+ }
+
+ /**
+ * Steal a callback function from the primary parser, save it for
+ * application to our scary parser. If the hook is not installed,
+ * abort processing of this file.
+ *
+ * @param $name String
+ * @return Bool true if tag hook is present
+ */
+ public function requireHook( $name ) {
+ global $wgParser;
+ $wgParser->firstCallInit( ); // make sure hooks are loaded.
+ return isset( $wgParser->mTagHooks[$name] );
+ }
+
+ public function requireFunctionHook( $name ) {
+ global $wgParser;
+ $wgParser->firstCallInit( ); // make sure hooks are loaded.
+ return isset( $wgParser->mFunctionHooks[$name] );
+ }
+ //Various "cleanup" functions
+
+ /*
+ * Run the "tidy" command on text if the $wgUseTidy
+ * global is true
+ *
+ * @param $text String: the text to tidy
+ * @return String
+ */
+ protected function tidy( $text ) {
+ global $wgUseTidy;
+
+ if ( $wgUseTidy ) {
+ $text = MWTidy::tidy( $text );
+ }
+
+ return $text;
+ }
+
+ /**
+ * Remove last character if it is a newline
+ */
+ public function removeEndingNewline( $s ) {
+ if ( substr( $s, -1 ) === "\n" ) {
+ return substr( $s, 0, -1 );
+ }
+ else {
+ return $s;
+ }
+ }
+
+ public function showRunFile( $file ) {
+ /* NOP */
+ }
+
+ //Test options parser functions
+
+ protected function parseOptions( $instring ) {
+ $opts = array();
+ // foo
+ // foo=bar
+ // foo="bar baz"
+ // foo=[[bar baz]]
+ // foo=bar,"baz quux"
+ $regex = '/\b
+ ([\w-]+) # Key
+ \b
+ (?:\s*
+ = # First sub-value
+ \s*
+ (
+ "
+ [^"]* # Quoted val
+ "
+ |
+ \[\[
+ [^]]* # Link target
+ \]\]
+ |
+ [\w-]+ # Plain word
+ )
+ (?:\s*
+ , # Sub-vals 1..N
+ \s*
+ (
+ "[^"]*" # Quoted val
+ |
+ \[\[[^]]*\]\] # Link target
+ |
+ [\w-]+ # Plain word
+ )
+ )*
+ )?
+ /x';
+
+ if ( preg_match_all( $regex, $instring, $matches, PREG_SET_ORDER ) ) {
+ foreach ( $matches as $bits ) {
+ array_shift( $bits );
+ $key = strtolower( array_shift( $bits ) );
+ if ( count( $bits ) == 0 ) {
+ $opts[$key] = true;
+ } elseif ( count( $bits ) == 1 ) {
+ $opts[$key] = $this->cleanupOption( array_shift( $bits ) );
+ } else {
+ // Array!
+ $opts[$key] = array_map( array( $this, 'cleanupOption' ), $bits );
+ }
+ }
+ }
+ return $opts;
+ }
+
+ protected function cleanupOption( $opt ) {
+ if ( substr( $opt, 0, 1 ) == '"' ) {
+ return substr( $opt, 1, -1 );
+ }
+
+ if ( substr( $opt, 0, 2 ) == '[[' ) {
+ return substr( $opt, 2, -2 );
+ }
+ return $opt;
+ }
+
+ /**
+ * Use a regex to find out the value of an option
+ * @param $key String: name of option val to retrieve
+ * @param $opts Options array to look in
+ * @param $default Mixed: default value returned if not found
+ */
+ protected static function getOptionValue( $key, $opts, $default ) {
+ $key = strtolower( $key );
+
+ if ( isset( $opts[$key] ) ) {
+ return $opts[$key];
+ } else {
+ return $default;
+ }
+ }
+}
diff --git a/tests/phpunit/includes/parser/ParserHelpers.php b/tests/phpunit/includes/parser/ParserHelpers.php
new file mode 100644
index 00000000..4a6ce7c4
--- /dev/null
+++ b/tests/phpunit/includes/parser/ParserHelpers.php
@@ -0,0 +1,136 @@
+<?php
+
+class PHPUnitParserTest extends ParserTest {
+ function showTesting( $desc ) {
+ /* Do nothing since we don't want to show info during PHPUnit testing. */
+ }
+
+ public function showSuccess( $desc ) {
+ PHPUnit_Framework_Assert::assertTrue( true, $desc );
+ return true;
+ }
+
+ public function showFailure( $desc, $expected, $got ) {
+ PHPUnit_Framework_Assert::assertEquals( $expected, $got, $desc );
+ return false;
+ }
+
+ public function setupRecorder( $options ) {
+ $this->recorder = new PHPUnitTestRecorder( $this );
+ }
+}
+
+class ParserUnitTest extends MediaWikiTestCase {
+ private $test = "";
+
+ public function __construct( $suite, $test = null ) {
+ parent::__construct();
+ $this->test = $test;
+ $this->suite = $suite;
+ }
+
+ function count() { return 1; }
+
+ public function run( PHPUnit_Framework_TestResult $result = null ) {
+ PHPUnit_Framework_Assert::resetCount();
+ if ( $result === NULL ) {
+ $result = new PHPUnit_Framework_TestResult;
+ }
+
+ $this->suite->publishTestArticles(); // Add articles needed by the tests.
+ $backend = new ParserTestSuiteBackend;
+ $result->startTest( $this );
+
+ // Support the transition to PHPUnit 3.5 where PHPUnit_Util_Timer is replaced with PHP_Timer
+ if ( class_exists( 'PHP_Timer' ) ) {
+ PHP_Timer::start();
+ } else {
+ PHPUnit_Util_Timer::start();
+ }
+
+ $r = false;
+ try {
+ # Run the test.
+ # On failure, the subclassed backend will throw an exception with
+ # the details.
+ $pt = new PHPUnitParserTest;
+ $r = $pt->runTest( $this->test['test'], $this->test['input'],
+ $this->test['result'], $this->test['options'], $this->test['config']
+ );
+ }
+ catch ( PHPUnit_Framework_AssertionFailedError $e ) {
+
+ // PHPUnit_Util_Timer -> PHP_Timer support (see above)
+ if ( class_exists( 'PHP_Timer' ) ) {
+ $result->addFailure( $this, $e, PHP_Timer::stop() );
+ } else {
+ $result->addFailure( $this, $e, PHPUnit_Util_Timer::stop() );
+ }
+ }
+ catch ( Exception $e ) {
+ // PHPUnit_Util_Timer -> PHP_Timer support (see above)
+ if ( class_exists( 'PHP_Timer' ) ) {
+ $result->addFailure( $this, $e, PHP_Timer::stop() );
+ } else {
+ $result->addFailure( $this, $e, PHPUnit_Util_Timer::stop() );
+ }
+ }
+
+ // PHPUnit_Util_Timer -> PHP_Timer support (see above)
+ if ( class_exists( 'PHP_Timer' ) ) {
+ $result->endTest( $this, PHP_Timer::stop() );
+ } else {
+ $result->endTest( $this, PHPUnit_Util_Timer::stop() );
+ }
+
+ $backend->recorder->record( $this->test['test'], $r );
+ $this->addToAssertionCount( PHPUnit_Framework_Assert::getCount() );
+
+ return $result;
+ }
+
+ public function toString() {
+ return $this->test['test'];
+ }
+
+}
+
+class ParserTestSuiteBackend extends PHPUnit_FrameWork_TestSuite {
+ public $recorder;
+ public $term;
+ static $usePHPUnit = false;
+
+ function __construct() {
+ parent::__construct();
+ $this->setupRecorder(null);
+ self::$usePHPUnit = method_exists('PHPUnit_Framework_Assert', 'assertEquals');
+ }
+
+ function showTesting( $desc ) {
+ }
+
+ function showRunFile( $path ) {
+ }
+
+ function showTestResult( $desc, $result, $out ) {
+ if ( $result === $out ) {
+ return self::showSuccess( $desc, $result, $out );
+ } else {
+ return self::showFailure( $desc, $result, $out );
+ }
+ }
+
+ public function setupRecorder( $options ) {
+ $this->recorder = new PHPUnitTestRecorder( $this );
+ }
+}
+
+class PHPUnitTestRecorder extends TestRecorder {
+ function record( $test, $result ) {
+ $this->total++;
+ $this->success += $result;
+
+ }
+
+ function reportPercentage( $success, $total ) { }
+}
diff --git a/tests/phpunit/includes/parser/PreprocessorTest.php b/tests/phpunit/includes/parser/PreprocessorTest.php
new file mode 100644
index 00000000..7a5948d4
--- /dev/null
+++ b/tests/phpunit/includes/parser/PreprocessorTest.php
@@ -0,0 +1,195 @@
+<?php
+
+class PreprocessorTest extends MediaWikiTestCase {
+ var $mTitle = 'Page title';
+ var $mPPNodeCount = 0;
+ var $mOptions;
+
+ function setUp() {
+ global $wgParserConf;
+ $this->mOptions = new ParserOptions();
+ $name = isset( $wgParserConf['preprocessorClass'] ) ? $wgParserConf['preprocessorClass'] : 'Preprocessor_DOM';
+
+ $this->mPreprocessor = new $name( $this );
+ }
+
+ function getStripList() {
+ return array( 'gallery', 'display map' /* Used by Maps, see r80025 CR */, '/foo' );
+ }
+
+ function provideCases() {
+ return array(
+ array( "Foo", "<root>Foo</root>" ),
+ array( "<!-- Foo -->", "<root><comment>&lt;!-- Foo --&gt;</comment></root>" ),
+ array( "<!-- Foo --><!-- Bar -->", "<root><comment>&lt;!-- Foo --&gt;</comment><comment>&lt;!-- Bar --&gt;</comment></root>" ),
+ array( "<!-- Foo --> <!-- Bar -->", "<root><comment>&lt;!-- Foo --&gt;</comment> <comment>&lt;!-- Bar --&gt;</comment></root>" ),
+ array( "<!-- Foo --> \n <!-- Bar -->", "<root><comment>&lt;!-- Foo --&gt;</comment> \n <comment>&lt;!-- Bar --&gt;</comment></root>" ),
+ array( "<!-- Foo --> \n <!-- Bar -->\n", "<root><comment>&lt;!-- Foo --&gt;</comment> \n<comment> &lt;!-- Bar --&gt;\n</comment></root>" ),
+ array( "<!-- Foo --> <!-- Bar -->\n", "<root><comment>&lt;!-- Foo --&gt;</comment> <comment>&lt;!-- Bar --&gt;</comment>\n</root>" ),
+ array( "<!-->Bar", "<root><comment>&lt;!--&gt;Bar</comment></root>" ),
+ array( "<!-- Comment -- comment", "<root><comment>&lt;!-- Comment -- comment</comment></root>" ),
+ array( "== Foo ==\n <!-- Bar -->\n== Baz ==\n", "<root><h level=\"2\" i=\"1\">== Foo ==</h>\n<comment> &lt;!-- Bar --&gt;\n</comment><h level=\"2\" i=\"2\">== Baz ==</h>\n</root>" ),
+ array( "<gallery/>", "<root><ext><name>gallery</name><attr></attr></ext></root>" ),
+ array( "Foo <gallery/> Bar", "<root>Foo <ext><name>gallery</name><attr></attr></ext> Bar</root>" ),
+ array( "<gallery></gallery>", "<root><ext><name>gallery</name><attr></attr><inner></inner><close>&lt;/gallery&gt;</close></ext></root>" ),
+ array( "<foo> <gallery></gallery>", "<root>&lt;foo&gt; <ext><name>gallery</name><attr></attr><inner></inner><close>&lt;/gallery&gt;</close></ext></root>" ),
+ array( "<foo> <gallery><gallery></gallery>", "<root>&lt;foo&gt; <ext><name>gallery</name><attr></attr><inner>&lt;gallery&gt;</inner><close>&lt;/gallery&gt;</close></ext></root>" ),
+ array( "<noinclude> Foo bar </noinclude>", "<root><ignore>&lt;noinclude&gt;</ignore> Foo bar <ignore>&lt;/noinclude&gt;</ignore></root>" ),
+ array( "<noinclude>\n{{Foo}}\n</noinclude>", "<root><ignore>&lt;noinclude&gt;</ignore>\n<template lineStart=\"1\"><title>Foo</title></template>\n<ignore>&lt;/noinclude&gt;</ignore></root>" ),
+ array( "<noinclude>\n{{Foo}}\n</noinclude>\n", "<root><ignore>&lt;noinclude&gt;</ignore>\n<template lineStart=\"1\"><title>Foo</title></template>\n<ignore>&lt;/noinclude&gt;</ignore>\n</root>" ),
+ array( "<gallery>foo bar", "<root><ext><name>gallery</name><attr></attr><inner>foo bar</inner></ext></root>" ),
+ array( "<{{foo}}>", "<root>&lt;<template><title>foo</title></template>&gt;</root>" ),
+ array( "<{{{foo}}}>", "<root>&lt;<tplarg><title>foo</title></tplarg>&gt;</root>" ),
+ array( "<gallery></gallery</gallery>", "<root><ext><name>gallery</name><attr></attr><inner>&lt;/gallery</inner><close>&lt;/gallery&gt;</close></ext></root>" ),
+ array( "=== Foo === ", "<root><h level=\"3\" i=\"1\">=== Foo === </h></root>" ),
+ array( "==<!-- -->= Foo === ", "<root><h level=\"2\" i=\"1\">==<comment>&lt;!-- --&gt;</comment>= Foo === </h></root>" ),
+ array( "=== Foo ==<!-- -->= ", "<root><h level=\"1\" i=\"1\">=== Foo ==<comment>&lt;!-- --&gt;</comment>= </h></root>" ),
+ array( "=== Foo ===<!-- -->\n", "<root><h level=\"3\" i=\"1\">=== Foo ===<comment>&lt;!-- --&gt;</comment></h>\n</root>" ),
+ array( "=== Foo ===<!-- --> <!-- -->\n", "<root><h level=\"3\" i=\"1\">=== Foo ===<comment>&lt;!-- --&gt;</comment> <comment>&lt;!-- --&gt;</comment></h>\n</root>" ),
+ array( "== Foo ==\n== Bar == \n", "<root><h level=\"2\" i=\"1\">== Foo ==</h>\n<h level=\"2\" i=\"2\">== Bar == </h>\n</root>" ),
+ array( "===========", "<root><h level=\"5\" i=\"1\">===========</h></root>" ),
+ array( "Foo\n=\n==\n=\n", "<root>Foo\n=\n==\n=\n</root>" ),
+ array( "{{Foo}}", "<root><template lineStart=\"1\"><title>Foo</title></template></root>" ),
+ array( "\n{{Foo}}", "<root>\n<template lineStart=\"1\"><title>Foo</title></template></root>" ),
+ array( "{{Foo|bar}}", "<root><template lineStart=\"1\"><title>Foo</title><part><name index=\"1\" /><value>bar</value></part></template></root>" ),
+ array( "{{Foo|bar}}a", "<root><template lineStart=\"1\"><title>Foo</title><part><name index=\"1\" /><value>bar</value></part></template>a</root>" ),
+ array( "{{Foo|bar|baz}}", "<root><template lineStart=\"1\"><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name index=\"2\" /><value>baz</value></part></template></root>" ),
+ array( "{{Foo|1=bar}}", "<root><template lineStart=\"1\"><title>Foo</title><part><name>1</name>=<value>bar</value></part></template></root>" ),
+ array( "{{Foo|=bar}}", "<root><template lineStart=\"1\"><title>Foo</title><part><name></name>=<value>bar</value></part></template></root>" ),
+ array( "{{Foo|bar=baz}}", "<root><template lineStart=\"1\"><title>Foo</title><part><name>bar</name>=<value>baz</value></part></template></root>" ),
+ array( "{{Foo|1=bar|baz}}", "<root><template lineStart=\"1\"><title>Foo</title><part><name>1</name>=<value>bar</value></part><part><name index=\"1\" /><value>baz</value></part></template></root>" ),
+ array( "{{Foo|1=bar|2=baz}}", "<root><template lineStart=\"1\"><title>Foo</title><part><name>1</name>=<value>bar</value></part><part><name>2</name>=<value>baz</value></part></template></root>" ),
+ array( "{{Foo|bar|foo=baz}}", "<root><template lineStart=\"1\"><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name>foo</name>=<value>baz</value></part></template></root>" ),
+ array( "{{{1}}}", "<root><tplarg lineStart=\"1\"><title>1</title></tplarg></root>" ),
+ array( "{{{1|}}}", "<root><tplarg lineStart=\"1\"><title>1</title><part><name index=\"1\" /><value></value></part></tplarg></root>" ),
+ array( "{{{Foo}}}", "<root><tplarg lineStart=\"1\"><title>Foo</title></tplarg></root>" ),
+ array( "{{{Foo|}}}", "<root><tplarg lineStart=\"1\"><title>Foo</title><part><name index=\"1\" /><value></value></part></tplarg></root>" ),
+ array( "{{{Foo|bar|baz}}}", "<root><tplarg lineStart=\"1\"><title>Foo</title><part><name index=\"1\" /><value>bar</value></part><part><name index=\"2\" /><value>baz</value></part></tplarg></root>" ),
+ array( "{<!-- -->{Foo}}", "<root>{<comment>&lt;!-- --&gt;</comment>{Foo}}</root>" ),
+ array( "{{{{Foobar}}}}", "<root>{<tplarg><title>Foobar</title></tplarg>}</root>" ),
+ array( "{{{ {{Foo}} }}}", "<root><tplarg lineStart=\"1\"><title> <template><title>Foo</title></template> </title></tplarg></root>" ),
+ array( "{{ {{{Foo}}} }}", "<root><template lineStart=\"1\"><title> <tplarg><title>Foo</title></tplarg> </title></template></root>" ),
+ array( "{{{{{Foo}}}}}", "<root><template lineStart=\"1\"><title><tplarg><title>Foo</title></tplarg></title></template></root>" ),
+ array( "{{{{{Foo}} }}}", "<root><tplarg lineStart=\"1\"><title><template><title>Foo</title></template> </title></tplarg></root>" ),
+ array( "{{{{{{Foo}}}}}}", "<root><tplarg lineStart=\"1\"><title><tplarg><title>Foo</title></tplarg></title></tplarg></root>" ),
+ array( "{{{{{{Foo}}}}}", "<root>{<template><title><tplarg><title>Foo</title></tplarg></title></template></root>" ),
+ array( "[[[Foo]]", "<root>[[[Foo]]</root>" ),
+ array( "{{Foo|[[[[bar]]|baz]]}}", "<root><template lineStart=\"1\"><title>Foo</title><part><name index=\"1\" /><value>[[[[bar]]|baz]]</value></part></template></root>" ), // This test is important, since it means the difference between having the [[ rule stacked or not
+ array( "{{Foo|[[[[bar]|baz]]}}", "<root>{{Foo|[[[[bar]|baz]]}}</root>" ),
+ array( "{{Foo|Foo [[[[bar]|baz]]}}", "<root>{{Foo|Foo [[[[bar]|baz]]}}</root>" ),
+ array( "Foo <display map>Bar</display map >Baz", "<root>Foo <ext><name>display map</name><attr></attr><inner>Bar</inner><close>&lt;/display map &gt;</close></ext>Baz</root>" ),
+ array( "Foo <display map foo>Bar</display map >Baz", "<root>Foo <ext><name>display map</name><attr> foo</attr><inner>Bar</inner><close>&lt;/display map &gt;</close></ext>Baz</root>" ),
+ array( "Foo <gallery bar=\"baz\" />", "<root>Foo <ext><name>gallery</name><attr> bar=&quot;baz&quot; </attr></ext></root>" ),
+ array( "</foo>Foo<//foo>", "<root><ext><name>/foo</name><attr></attr><inner>Foo</inner><close>&lt;//foo&gt;</close></ext></root>" ), # Worth blacklisting IMHO
+ array( "{{#ifexpr: ({{{1|1}}} = 2) | Foo | Bar }}", "<root><template lineStart=\"1\"><title>#ifexpr: (<tplarg><title>1</title><part><name index=\"1\" /><value>1</value></part></tplarg> = 2) </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> Bar </value></part></template></root>"),
+ array( "{{#if: {{{1|}}} | Foo | {{Bar}} }}", "<root><template lineStart=\"1\"><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> <template><title>Bar</title></template> </value></part></template></root>"),
+ array( "{{#if: {{{1|}}} | Foo | [[Bar]] }}", "<root><template lineStart=\"1\"><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> Foo </value></part><part><name index=\"2\" /><value> [[Bar]] </value></part></template></root>"),
+ array( "{{#if: {{{1|}}} | [[Foo]] | Bar }}", "<root><template lineStart=\"1\"><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> [[Foo]] </value></part><part><name index=\"2\" /><value> Bar </value></part></template></root>"),
+ array( "{{#if: {{{1|}}} | 1 | {{#if: {{{1|}}} | 2 | 3 }} }}", "<root><template lineStart=\"1\"><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> 1 </value></part><part><name index=\"2\" /><value> <template><title>#if: <tplarg><title>1</title><part><name index=\"1\" /><value></value></part></tplarg> </title><part><name index=\"1\" /><value> 2 </value></part><part><name index=\"2\" /><value> 3 </value></part></template> </value></part></template></root>"),
+ array( "{{ {{Foo}}", "<root>{{ <template><title>Foo</title></template></root>"),
+ array( "{{Foobar {{Foo}} {{Bar}} {{Baz}} ", "<root>{{Foobar <template><title>Foo</title></template> <template><title>Bar</title></template> <template><title>Baz</title></template> </root>"),
+ array( "[[Foo]] |", "<root>[[Foo]] |</root>"),
+ array( "{{Foo|Bar|", "<root>{{Foo|Bar|</root>"),
+ array( "[[Foo]", "<root>[[Foo]</root>"),
+ array( "[[Foo|Bar]", "<root>[[Foo|Bar]</root>"),
+ array( "{{Foo| [[Bar] }}", "<root>{{Foo| [[Bar] }}</root>"),
+ array( "{{Foo| [[Bar|Baz] }}", "<root>{{Foo| [[Bar|Baz] }}</root>"),
+ array( "{{Foo|bar=[[baz]}}", "<root>{{Foo|bar=[[baz]}}</root>"),
+ array( "{{foo|", "<root>{{foo|</root>"),
+ array( "{{foo|}", "<root>{{foo|}</root>"),
+ array( "{{foo|} }}", "<root><template lineStart=\"1\"><title>foo</title><part><name index=\"1\" /><value>} </value></part></template></root>"),
+ array( "{{foo|bar=|}", "<root>{{foo|bar=|}</root>"),
+ array( "{{Foo|} Bar=", "<root>{{Foo|} Bar=</root>"),
+ array( "{{Foo|} Bar=}}", "<root><template lineStart=\"1\"><title>Foo</title><part><name>} Bar</name>=<value></value></part></template></root>"),
+ /* array( file_get_contents( dirname( __FILE__ ) . '/QuoteQuran.txt' ), file_get_contents( dirname( __FILE__ ) . '/QuoteQuranExpanded.txt' ) ), */
+ );
+ }
+
+ /**
+ * @dataProvider provideCases
+ */
+ function testPreprocessorOutput( $wikiText, $expectedXml ) {
+ $this->assertEquals( $expectedXml, $this->mPreprocessor->preprocessToXml( $wikiText ) );
+ }
+
+ /**
+ * These are more complex test cases taken out of wiki articles.
+ */
+ function provideFiles() {
+ return array(
+ array( "QuoteQuran" ), # http://en.wikipedia.org/w/index.php?title=Template:QuoteQuran/sandbox&oldid=237348988 GFDL + CC-BY-SA by Striver
+ array( "Factorial" ), # http://en.wikipedia.org/w/index.php?title=Template:Factorial&oldid=98548758 GFDL + CC-BY-SA by Polonium
+ array( "All_system_messages" ), # http://tl.wiktionary.org/w/index.php?title=Suleras:All_system_messages&oldid=2765 GPL text generated by MediaWiki
+ array( "Fundraising" ), # http://tl.wiktionary.org/w/index.php?title=MediaWiki:Sitenotice&oldid=5716 GFDL + CC-BY-SA, copied there by Sky Harbor.
+ );
+ }
+
+ /**
+ * @dataProvider provideFiles
+ */
+ function testPreprocessorOutputFiles( $filename ) {
+ $folder = dirname( __FILE__ ) . "/../../../parser/preprocess";
+ $wikiText = file_get_contents( "$folder/$filename.txt" );
+ $output = $this->mPreprocessor->preprocessToXml( $wikiText );
+
+ $expectedFilename = "$folder/$filename.expected";
+ if ( file_exists( $expectedFilename ) ) {
+ $this->assertStringEqualsFile( $expectedFilename, $output );
+ } else {
+ $tempFilename = tempnam( $folder, "$filename." );
+ file_put_contents( $tempFilename, $output );
+ $this->markTestIncomplete( "File $expectedFilename missing. Output stored as $tempFilename" );
+ }
+ }
+
+ /**
+ * Tests from Bug 28642 · https://bugzilla.wikimedia.org/28642
+ */
+ function provideHeadings() {
+ return array( /* These should become headings: */
+ array( "== h ==<!--c1-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment></h></root>" ),
+ array( "== h == <!--c1-->", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment></h></root>" ),
+ array( "== h ==<!--c1--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment> </h></root>" ),
+ array( "== h == <!--c1--> ", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment> </h></root>" ),
+ array( "== h ==<!--c1--><!--c2-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment></h></root>" ),
+ array( "== h == <!--c1--><!--c2-->", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment></h></root>" ),
+ array( "== h ==<!--c1--><!--c2--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment> </h></root>" ),
+ array( "== h == <!--c1--><!--c2--> ", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment> </h></root>" ),
+ array( "== h == <!--c1--> <!--c2-->", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment></h></root>" ),
+ array( "== h ==<!--c1--> <!--c2--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment> </h></root>" ),
+ array( "== h == <!--c1--> <!--c2--> ", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment> </h></root>" ),
+ array( "== h ==<!--c1--><!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment></h></root>" ),
+ array( "== h ==<!--c1--> <!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment></h></root>" ),
+ array( "== h ==<!--c1--><!--c2--> <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment> <comment>&lt;!--c3--&gt;</comment></h></root>" ),
+ array( "== h ==<!--c1--> <!--c2--> <!--c3-->", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment> <comment>&lt;!--c3--&gt;</comment></h></root>" ),
+ array( "== h == <!--c1--><!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment></h></root>" ),
+ array( "== h == <!--c1--> <!--c2--><!--c3-->", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment></h></root>" ),
+ array( "== h == <!--c1--><!--c2--> <!--c3-->", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment> <comment>&lt;!--c3--&gt;</comment></h></root>" ),
+ array( "== h == <!--c1--> <!--c2--> <!--c3-->", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment> <comment>&lt;!--c3--&gt;</comment></h></root>" ),
+ array( "== h ==<!--c1--><!--c2--><!--c3--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment> </h></root>" ),
+ array( "== h ==<!--c1--> <!--c2--><!--c3--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment> </h></root>" ),
+ array( "== h ==<!--c1--><!--c2--> <!--c3--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment> <comment>&lt;!--c3--&gt;</comment> </h></root>" ),
+ array( "== h ==<!--c1--> <!--c2--> <!--c3--> ", "<root><h level=\"2\" i=\"1\">== h ==<comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment> <comment>&lt;!--c3--&gt;</comment> </h></root>" ),
+ array( "== h == <!--c1--><!--c2--><!--c3--> ", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment> </h></root>" ),
+ array( "== h == <!--c1--> <!--c2--><!--c3--> ", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment> </h></root>" ),
+ array( "== h == <!--c1--><!--c2--> <!--c3--> ", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment> <comment>&lt;!--c3--&gt;</comment> </h></root>" ),
+ array( "== h == <!--c1--> <!--c2--> <!--c3--> ", "<root><h level=\"2\" i=\"1\">== h == <comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment> <comment>&lt;!--c3--&gt;</comment> </h></root>" ),
+
+ /* These are not working: */
+ array( "== h ==<!--c1--> <!--c2-->", "<root>== h ==<comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment></root>" ),
+ array( "== h == <!--c1--> <!--c2-->", "<root>== h == <comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment></root>" ),
+ array( "== h ==<!--c1--> <!--c2--> ", "<root>== h ==<comment>&lt;!--c1--&gt;</comment> <comment>&lt;!--c2--&gt;</comment> </root>" ),
+ array( "== h == x <!--c1--><!--c2--><!--c3--> ", "<root>== h == x <comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment> </root>" ),
+ array( "== h ==<!--c1--> x <!--c2--><!--c3--> ", "<root>== h ==<comment>&lt;!--c1--&gt;</comment> x <comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment> </root>" ),
+ array( "== h ==<!--c1--><!--c2--><!--c3--> x ", "<root>== h ==<comment>&lt;!--c1--&gt;</comment><comment>&lt;!--c2--&gt;</comment><comment>&lt;!--c3--&gt;</comment> x </root>" ),
+ );
+ }
+
+ /**
+ * @dataProvider provideHeadings
+ */
+ function testHeadings( $wikiText, $expectedXml ) {
+ $this->assertEquals( $expectedXml, $this->mPreprocessor->preprocessToXml( $wikiText ) );
+ }
+}
+
diff --git a/tests/phpunit/includes/parser/TagHooks.php b/tests/phpunit/includes/parser/TagHooks.php
new file mode 100644
index 00000000..713ce846
--- /dev/null
+++ b/tests/phpunit/includes/parser/TagHooks.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * @group Parser
+ */
+class TagHookTest extends MediaWikiTestCase {
+
+ public static function provideValidNames() {
+ return array( array( 'foo' ), array( 'foo-bar' ), array( 'foo_bar' ), array( 'FOO-BAR' ), array( 'foo bar' ) );
+ }
+
+ public static function provideBadNames() {
+ return array( array( "foo<bar" ), array( "foo>bar" ), array( "foo\nbar" ), array( "foo\rbar" ) );
+ }
+
+ /**
+ * @dataProvider provideValidNames
+ */
+ function testTagHooks( $tag ) {
+ global $wgParserConf;
+ $parser = new Parser( $wgParserConf );
+
+ $parser->setHook( $tag, array( $this, 'tagCallback' ) );
+ $parserOutput = $parser->parse( "Foo<$tag>Bar</$tag>Baz", Title::newFromText( 'Test' ), new ParserOptions );
+ $this->assertEquals( "<p>FooOneBaz\n</p>", $parserOutput->getText() );
+
+ $parser->mPreprocessor = null; # Break the Parser <-> Preprocessor cycle
+ }
+
+ /**
+ * @dataProvider provideBadNames
+ * @expectedException MWException
+ */
+ function testBadTagHooks( $tag ) {
+ global $wgParserConf;
+ $parser = new Parser( $wgParserConf );
+
+ $parser->setHook( $tag, array( $this, 'tagCallback' ) );
+ $parser->parse( "Foo<$tag>Bar</$tag>Baz", Title::newFromText( 'Test' ), new ParserOptions );
+ $this->fail('Exception not thrown.');
+ }
+
+ /**
+ * @dataProvider provideValidNames
+ */
+ function testFunctionTagHooks( $tag ) {
+ global $wgParserConf;
+ $parser = new Parser( $wgParserConf );
+
+ $parser->setFunctionTagHook( $tag, array( $this, 'functionTagCallback' ), 0 );
+ $parserOutput = $parser->parse( "Foo<$tag>Bar</$tag>Baz", Title::newFromText( 'Test' ), new ParserOptions );
+ $this->assertEquals( "<p>FooOneBaz\n</p>", $parserOutput->getText() );
+
+ $parser->mPreprocessor = null; # Break the Parser <-> Preprocessor cycle
+ }
+
+ /**
+ * @dataProvider provideBadNames
+ * @expectedException MWException
+ */
+ function testBadFunctionTagHooks( $tag ) {
+ global $wgParserConf;
+ $parser = new Parser( $wgParserConf );
+
+ $parser->setFunctionTagHook( $tag, array( $this, 'functionTagCallback' ), SFH_OBJECT_ARGS );
+ $parser->parse( "Foo<$tag>Bar</$tag>Baz", Title::newFromText( 'Test' ), new ParserOptions );
+ $this->fail('Exception not thrown.');
+ }
+
+ function tagCallback( $text, $params, $parser ) {
+ return str_rot13( $text );
+ }
+
+ function functionTagCallback( &$parser, $frame, $code, $attribs ) {
+ return str_rot13( $code );
+ }
+}
diff --git a/tests/phpunit/includes/search/SearchEngineTest.php b/tests/phpunit/includes/search/SearchEngineTest.php
new file mode 100644
index 00000000..1a0fcd31
--- /dev/null
+++ b/tests/phpunit/includes/search/SearchEngineTest.php
@@ -0,0 +1,163 @@
+<?php
+
+/**
+ * This class is not directly tested. Instead it is extended by SearchDbTest.
+ * @group Search
+ * @group Database
+ */
+class SearchEngineTest extends MediaWikiTestCase {
+ protected $search, $pageList;
+
+ function tearDown() {
+ unset( $this->search );
+ }
+
+ /*
+ * Checks for database type & version.
+ * Will skip current test if DB does not support search.
+ */
+ function setUp() {
+ parent::setUp();
+ // Search tests require MySQL or SQLite with FTS
+ # Get database type and version
+ $dbType = $this->db->getType();
+ $dbSupported =
+ ($dbType === 'mysql')
+ || ( $dbType === 'sqlite' && $this->db->getFulltextSearchModule() == 'FTS3' );
+
+ if( !$dbSupported ) {
+ $this->markTestSkipped( "MySQL or SQLite with FTS3 only" );
+ }
+
+ $searchType = $this->db->getSearchEngine();
+ $this->search = new $searchType( $this->db );
+ }
+
+ function pageExists( $title ) {
+ return false;
+ }
+
+ function addDBData() {
+ if ( $this->pageExists( 'Not_Main_Page' ) ) {
+ return;
+ }
+ $this->insertPage( "Not_Main_Page", "This is not a main page", 0 );
+ $this->insertPage( 'Talk:Not_Main_Page', 'This is not a talk page to the main page, see [[smithee]]', 1 );
+ $this->insertPage( 'Smithee', 'A smithee is one who smiths. See also [[Alan Smithee]]', 0 );
+ $this->insertPage( 'Talk:Smithee', 'This article sucks.', 1 );
+ $this->insertPage( 'Unrelated_page', 'Nothing in this page is about the S word.', 0 );
+ $this->insertPage( 'Another_page', 'This page also is unrelated.', 0 );
+ $this->insertPage( 'Help:Help', 'Help me!', 4 );
+ $this->insertPage( 'Thppt', 'Blah blah', 0 );
+ $this->insertPage( 'Alan_Smithee', 'yum', 0 );
+ $this->insertPage( 'Pages', 'are\'food', 0 );
+ $this->insertPage( 'HalfOneUp', 'AZ', 0 );
+ $this->insertPage( 'FullOneUp', 'AZ', 0 );
+ $this->insertPage( 'HalfTwoLow', 'az', 0 );
+ $this->insertPage( 'FullTwoLow', 'ï½ï½š', 0 );
+ $this->insertPage( 'HalfNumbers', '1234567890', 0 );
+ $this->insertPage( 'FullNumbers', '123456789ï¼', 0 );
+ $this->insertPage( 'DomainName', 'example.com', 0 );
+ }
+
+ function fetchIds( $results ) {
+ $this->assertTrue( is_object( $results ) );
+
+ $matches = array();
+ while ( $row = $results->next() ) {
+ $matches[] = $row->getTitle()->getPrefixedText();
+ }
+ $results->free();
+ # Search is not guaranteed to return results in a certain order;
+ # sort them numerically so we will compare simply that we received
+ # the expected matches.
+ sort( $matches );
+ return $matches;
+ }
+
+ /**
+ * Insert a new page
+ *
+ * @param $pageName String: page name
+ * @param $text String: page's content
+ * @param $n Integer: unused
+ */
+ function insertPage( $pageName, $text, $ns ) {
+ $dbw = $this->db;
+ $title = Title::newFromText( $pageName );
+
+ $user = User::newFromName( 'WikiSysop' );
+ $comment = 'Search Test';
+
+ // avoid memory leak...?
+ $linkCache = LinkCache::singleton();
+ $linkCache->clear();
+
+ $article = new Article( $title );
+ $article->doEdit( $text, $comment, 0, false, $user );
+
+ $this->pageList[] = array( $title, $article->getId() );
+
+ return true;
+ }
+
+ function testFullWidth() {
+ $this->assertEquals(
+ array( 'FullOneUp', 'FullTwoLow', 'HalfOneUp', 'HalfTwoLow' ),
+ $this->fetchIds( $this->search->searchText( 'AZ' ) ),
+ "Search for normalized from Half-width Upper" );
+ $this->assertEquals(
+ array( 'FullOneUp', 'FullTwoLow', 'HalfOneUp', 'HalfTwoLow' ),
+ $this->fetchIds( $this->search->searchText( 'az' ) ),
+ "Search for normalized from Half-width Lower" );
+ $this->assertEquals(
+ array( 'FullOneUp', 'FullTwoLow', 'HalfOneUp', 'HalfTwoLow' ),
+ $this->fetchIds( $this->search->searchText( 'AZ' ) ),
+ "Search for normalized from Full-width Upper" );
+ $this->assertEquals(
+ array( 'FullOneUp', 'FullTwoLow', 'HalfOneUp', 'HalfTwoLow' ),
+ $this->fetchIds( $this->search->searchText( 'ï½ï½š' ) ),
+ "Search for normalized from Full-width Lower" );
+ }
+
+ function testTextSearch() {
+ $this->assertEquals(
+ array( 'Smithee' ),
+ $this->fetchIds( $this->search->searchText( 'smithee' ) ),
+ "Plain search failed" );
+ }
+
+ function testTextPowerSearch() {
+ $this->search->setNamespaces( array( 0, 1, 4 ) );
+ $this->assertEquals(
+ array(
+ 'Smithee',
+ 'Talk:Not Main Page',
+ ),
+ $this->fetchIds( $this->search->searchText( 'smithee' ) ),
+ "Power search failed" );
+ }
+
+ function testTitleSearch() {
+ $this->assertEquals(
+ array(
+ 'Alan Smithee',
+ 'Smithee',
+ ),
+ $this->fetchIds( $this->search->searchTitle( 'smithee' ) ),
+ "Title search failed" );
+ }
+
+ function testTextTitlePowerSearch() {
+ $this->search->setNamespaces( array( 0, 1, 4 ) );
+ $this->assertEquals(
+ array(
+ 'Alan Smithee',
+ 'Smithee',
+ 'Talk:Smithee',
+ ),
+ $this->fetchIds( $this->search->searchTitle( 'smithee' ) ),
+ "Title power search failed" );
+ }
+
+}
diff --git a/tests/phpunit/includes/search/SearchUpdateTest.php b/tests/phpunit/includes/search/SearchUpdateTest.php
new file mode 100644
index 00000000..935425a6
--- /dev/null
+++ b/tests/phpunit/includes/search/SearchUpdateTest.php
@@ -0,0 +1,80 @@
+<?php
+
+class MockSearch extends SearchEngine {
+ public static $id;
+ public static $title;
+ public static $text;
+
+ public function __construct( $db ) {
+ }
+
+ public function update( $id, $title, $text ) {
+ self::$id = $id;
+ self::$title = $title;
+ self::$text = $text;
+ }
+}
+
+/**
+ * @group Search
+ */
+class SearchUpdateTest extends MediaWikiTestCase {
+ static $searchType;
+
+ function update( $text, $title = 'Test', $id = 1 ) {
+ $u = new SearchUpdate( $id, $title, $text );
+ $u->doUpdate();
+ return array( MockSearch::$title, MockSearch::$text );
+ }
+
+ function updateText( $text ) {
+ list( , $resultText ) = $this->update( $text );
+ $resultText = trim( $resultText ); // abstract from some implementation details
+ return $resultText;
+ }
+
+ function setUp() {
+ global $wgSearchType;
+
+ self::$searchType = $wgSearchType;
+ $wgSearchType = 'MockSearch';
+ }
+
+ function tearDown() {
+ global $wgSearchType;
+
+ $wgSearchType = self::$searchType;
+ }
+
+ function testUpdateText() {
+ $this->assertEquals(
+ 'test',
+ $this->updateText( '<div>TeSt</div>' ),
+ 'HTML stripped, text lowercased'
+ );
+
+ $this->assertEquals(
+ 'foo bar boz quux',
+ $this->updateText( <<<EOT
+<table style="color:red; font-size:100px">
+ <tr class="scary"><td><div>foo</div></td><tr>bar</td></tr>
+ <tr><td>boz</td><tr>quux</td></tr>
+</table>
+EOT
+ ), 'Stripping HTML tables' );
+
+ $this->assertEquals(
+ 'a b',
+ $this->updateText( 'a > b' ),
+ 'Handle unclosed tags'
+ );
+
+ $text = str_pad( "foo <barbarbar \n", 10000, 'x' );
+
+ $this->assertNotEquals(
+ '',
+ $this->updateText( $text ),
+ 'Bug 18609'
+ );
+ }
+}
diff --git a/tests/phpunit/includes/specials/SpecialRecentchanges.php b/tests/phpunit/includes/specials/SpecialRecentchanges.php
new file mode 100644
index 00000000..a98e7c1a
--- /dev/null
+++ b/tests/phpunit/includes/specials/SpecialRecentchanges.php
@@ -0,0 +1,134 @@
+<?php
+/**
+ * Test class for SpecialRecentchanges class
+ *
+ * Copyright © 2011, Ashar Voultoiz
+ *
+ * @author Ashar Voultoiz
+ */
+class SpecialRecentchangesTest extends MediaWikiTestCase {
+
+ /**
+ * @var SpecialRecentChanges
+ */
+ protected $rc;
+
+ function setUp() {
+ }
+
+ /** helper to test SpecialRecentchanges::buildMainQueryConds() */
+ private function assertConditions( $expected, $requestOptions = null, $message = '' ) {
+ global $wgRequest;
+ $savedGlobal = $wgRequest;
+
+ # Initialize a WebRequest object ...
+ $wgRequest = new FauxRequest( $requestOptions );
+ # ... then setup the rc object (which use wgRequest internally)
+ $this->rc = new SpecialRecentChanges();
+ $formOptions = $this->rc->setup( null );
+
+ # Filter out rc_timestamp conditions which depends on the test runtime
+ # This condition is not needed as of march 2, 2011 -- hashar
+ # @todo FIXME: Find a way to generate the correct rc_timestamp
+ $queryConditions = array_filter(
+ $this->rc->buildMainQueryConds( $formOptions ),
+ 'SpecialRecentchangesTest::filterOutRcTimestampCondition'
+ );
+
+ $this->assertEquals(
+ $expected,
+ $queryConditions,
+ $message
+ );
+
+ $wgRequest = $savedGlobal;
+ }
+
+ /** return false if condition begin with 'rc_timestamp ' */
+ private static function filterOutRcTimestampCondition( $var ) {
+ return (false === strpos( $var, 'rc_timestamp ' ));
+
+ }
+
+ public function testRcNsFilter() {
+ $this->assertConditions(
+ array( # expected
+ 'rc_bot' => 0,
+ #0 => "rc_timestamp >= '20110223000000'",
+ 1 => "rc_namespace = '0'",
+ ),
+ array(
+ 'namespace' => NS_MAIN,
+ ),
+ "rc conditions with no options (aka default setting)"
+ );
+ }
+
+ public function testRcNsFilterInversion() {
+ $this->assertConditions(
+ array( # expected
+ #0 => "rc_timestamp >= '20110223000000'",
+ 'rc_bot' => 0,
+ 1 => sprintf( "rc_namespace != '%s'", NS_MAIN ),
+ ),
+ array(
+ 'namespace' => NS_MAIN,
+ 'invert' => 1,
+ ),
+ "rc conditions with namespace inverted"
+ );
+ }
+
+ /**
+ * @bug 2429
+ * @dataProvider provideNamespacesAssociations
+ */
+ public function testRcNsFilterAssociation( $ns1, $ns2 ) {
+ $this->assertConditions(
+ array( # expected
+ #0 => "rc_timestamp >= '20110223000000'",
+ 'rc_bot' => 0,
+ 1 => sprintf( "(rc_namespace = '%s' OR rc_namespace = '%s')", $ns1, $ns2 ),
+ ),
+ array(
+ 'namespace' => $ns1,
+ 'associated' => 1,
+ ),
+ "rc conditions with namespace inverted"
+ );
+ }
+
+ /**
+ * @bug 2429
+ * @dataProvider provideNamespacesAssociations
+ */
+ public function testRcNsFilterAssociationWithInversion( $ns1, $ns2 ) {
+ $this->assertConditions(
+ array( # expected
+ #0 => "rc_timestamp >= '20110223000000'",
+ 'rc_bot' => 0,
+ 1 => sprintf( "(rc_namespace != '%s' AND rc_namespace != '%s')", $ns1, $ns2 ),
+ ),
+ array(
+ 'namespace' => $ns1,
+ 'associated' => 1,
+ 'invert' => 1,
+ ),
+ "rc conditions with namespace inverted"
+ );
+ }
+
+ /**
+ * Provides associated namespaces to test recent changes
+ * namespaces association filtering.
+ */
+ public function provideNamespacesAssociations() {
+ return array( # (NS => Associated_NS)
+ array( NS_MAIN, NS_TALK),
+ array( NS_TALK, NS_MAIN),
+ );
+ }
+
+}
+
+
diff --git a/tests/phpunit/includes/upload/UploadFromUrlTest.php b/tests/phpunit/includes/upload/UploadFromUrlTest.php
new file mode 100644
index 00000000..4722d408
--- /dev/null
+++ b/tests/phpunit/includes/upload/UploadFromUrlTest.php
@@ -0,0 +1,348 @@
+<?php
+
+/**
+ * @group Broken
+ * @group Upload
+ */
+class UploadFromUrlTest extends ApiTestCase {
+
+ public function setUp() {
+ global $wgEnableUploads, $wgAllowCopyUploads, $wgAllowAsyncCopyUploads;
+ parent::setUp();
+
+ $wgEnableUploads = true;
+ $wgAllowCopyUploads = true;
+ $wgAllowAsyncCopyUploads = true;
+ wfSetupSession();
+
+ if ( wfLocalFile( 'UploadFromUrlTest.png' )->exists() ) {
+ $this->deleteFile( 'UploadFromUrlTest.png' );
+ }
+ }
+
+ protected function doApiRequest( $params, $unused = null, $appendModule = false ) {
+ $sessionId = session_id();
+ session_write_close();
+
+ $req = new FauxRequest( $params, true, $_SESSION );
+ $module = new ApiMain( $req, true );
+ $module->execute();
+
+ wfSetupSession( $sessionId );
+ return array( $module->getResultData(), $req );
+ }
+
+ /**
+ * Ensure that the job queue is empty before continuing
+ */
+ public function testClearQueue() {
+ while ( $job = Job::pop() ) { }
+ $this->assertFalse( $job );
+ }
+
+ /**
+ * @todo Document why we test login, since the $wgUser hack used doesn't
+ * require login
+ */
+ public function testLogin() {
+ $data = $this->doApiRequest( array(
+ 'action' => 'login',
+ 'lgname' => $this->user->userName,
+ 'lgpassword' => $this->user->passWord ) );
+ $this->assertArrayHasKey( "login", $data[0] );
+ $this->assertArrayHasKey( "result", $data[0]['login'] );
+ $this->assertEquals( "NeedToken", $data[0]['login']['result'] );
+ $token = $data[0]['login']['token'];
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'login',
+ "lgtoken" => $token,
+ 'lgname' => $this->user->userName,
+ 'lgpassword' => $this->user->passWord ) );
+
+ $this->assertArrayHasKey( "login", $data[0] );
+ $this->assertArrayHasKey( "result", $data[0]['login'] );
+ $this->assertEquals( "Success", $data[0]['login']['result'] );
+ $this->assertArrayHasKey( 'lgtoken', $data[0]['login'] );
+
+ return $data;
+ }
+
+ /**
+ * @depends testLogin
+ * @depends testClearQueue
+ */
+ public function testSetupUrlDownload( $data ) {
+ $token = $this->user->editToken();
+ $exception = false;
+
+ try {
+ $this->doApiRequest( array(
+ 'action' => 'upload',
+ ) );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ $this->assertEquals( "The token parameter must be set", $e->getMessage() );
+ }
+ $this->assertTrue( $exception, "Got exception" );
+
+ $exception = false;
+ try {
+ $this->doApiRequest( array(
+ 'action' => 'upload',
+ 'token' => $token,
+ ), $data );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ $this->assertEquals( "One of the parameters sessionkey, file, url, statuskey is required",
+ $e->getMessage() );
+ }
+ $this->assertTrue( $exception, "Got exception" );
+
+ $exception = false;
+ try {
+ $this->doApiRequest( array(
+ 'action' => 'upload',
+ 'url' => 'http://www.example.com/test.png',
+ 'token' => $token,
+ ), $data );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ $this->assertEquals( "The filename parameter must be set", $e->getMessage() );
+ }
+ $this->assertTrue( $exception, "Got exception" );
+
+ $this->user->removeGroup( 'sysop' );
+ $exception = false;
+ try {
+ $this->doApiRequest( array(
+ 'action' => 'upload',
+ 'url' => 'http://www.example.com/test.png',
+ 'filename' => 'UploadFromUrlTest.png',
+ 'token' => $token,
+ ), $data );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ $this->assertEquals( "Permission denied", $e->getMessage() );
+ }
+ $this->assertTrue( $exception, "Got exception" );
+
+ $this->user->addGroup( 'sysop' );
+ $data = $this->doApiRequest( array(
+ 'action' => 'upload',
+ 'url' => 'http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png',
+ 'asyncdownload' => 1,
+ 'filename' => 'UploadFromUrlTest.png',
+ 'token' => $token,
+ ), $data );
+
+ $this->assertEquals( $data[0]['upload']['result'], 'Queued', 'Queued upload' );
+
+ $job = Job::pop();
+ $this->assertThat( $job, $this->isInstanceOf( 'UploadFromUrlJob' ), 'Queued upload inserted' );
+ }
+
+ /**
+ * @depends testLogin
+ * @depends testClearQueue
+ */
+ public function testAsyncUpload( $data ) {
+ $token = $this->user->editToken();
+
+ $this->user->addGroup( 'users' );
+
+ $data = $this->doAsyncUpload( $token, true );
+ $this->assertEquals( $data[0]['upload']['result'], 'Success' );
+ $this->assertEquals( $data[0]['upload']['filename'], 'UploadFromUrlTest.png' );
+ $this->assertTrue( wfLocalFile( $data[0]['upload']['filename'] )->exists() );
+
+ $this->deleteFile( 'UploadFromUrlTest.png' );
+
+ return $data;
+ }
+
+ /**
+ * @depends testLogin
+ * @depends testClearQueue
+ */
+ public function testAsyncUploadWarning( $data ) {
+ $token = $this->user->editToken();
+
+ $this->user->addGroup( 'users' );
+
+
+ $data = $this->doAsyncUpload( $token );
+
+ $this->assertEquals( $data[0]['upload']['result'], 'Warning' );
+ $this->assertTrue( isset( $data[0]['upload']['sessionkey'] ) );
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'upload',
+ 'sessionkey' => $data[0]['upload']['sessionkey'],
+ 'filename' => 'UploadFromUrlTest.png',
+ 'ignorewarnings' => 1,
+ 'token' => $token,
+ ) );
+ $this->assertEquals( $data[0]['upload']['result'], 'Success' );
+ $this->assertEquals( $data[0]['upload']['filename'], 'UploadFromUrlTest.png' );
+ $this->assertTrue( wfLocalFile( $data[0]['upload']['filename'] )->exists() );
+
+ $this->deleteFile( 'UploadFromUrlTest.png' );
+
+ return $data;
+ }
+
+ /**
+ * @depends testLogin
+ * @depends testClearQueue
+ */
+ public function testSyncDownload( $data ) {
+ $token = $this->user->editToken();
+
+ $job = Job::pop();
+ $this->assertFalse( $job, 'Starting with an empty jobqueue' );
+
+ $this->user->addGroup( 'users' );
+ $data = $this->doApiRequest( array(
+ 'action' => 'upload',
+ 'filename' => 'UploadFromUrlTest.png',
+ 'url' => 'http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png',
+ 'ignorewarnings' => true,
+ 'token' => $token,
+ ), $data );
+
+ $job = Job::pop();
+ $this->assertFalse( $job );
+
+ $this->assertEquals( 'Success', $data[0]['upload']['result'] );
+ $this->deleteFile( 'UploadFromUrlTest.png' );
+
+ return $data;
+ }
+
+ public function testLeaveMessage() {
+ $token = $this->user->user->editToken();
+
+ $talk = $this->user->user->getTalkPage();
+ if ( $talk->exists() ) {
+ $a = new Article( $talk );
+ $a->doDeleteArticle( '' );
+ }
+
+ $this->assertFalse( (bool)$talk->getArticleId( Title::GAID_FOR_UPDATE ), 'User talk does not exist' );
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'upload',
+ 'filename' => 'UploadFromUrlTest.png',
+ 'url' => 'http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png',
+ 'asyncdownload' => 1,
+ 'token' => $token,
+ 'leavemessage' => 1,
+ 'ignorewarnings' => 1,
+ ) );
+
+ $job = Job::pop();
+ $this->assertEquals( 'UploadFromUrlJob', get_class( $job ) );
+ $job->run();
+
+ $this->assertTrue( wfLocalFile( 'UploadFromUrlTest.png' )->exists() );
+ $this->assertTrue( (bool)$talk->getArticleId( Title::GAID_FOR_UPDATE ), 'User talk exists' );
+
+ $this->deleteFile( 'UploadFromUrlTest.png' );
+
+ $talkRev = Revision::newFromTitle( $talk );
+ $talkSize = $talkRev->getSize();
+
+ $exception = false;
+ try {
+ $data = $this->doApiRequest( array(
+ 'action' => 'upload',
+ 'filename' => 'UploadFromUrlTest.png',
+ 'url' => 'http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png',
+ 'asyncdownload' => 1,
+ 'token' => $token,
+ 'leavemessage' => 1,
+ ) );
+ } catch ( UsageException $e ) {
+ $exception = true;
+ $this->assertEquals( 'Using leavemessage without ignorewarnings is not supported', $e->getMessage() );
+ }
+ $this->assertTrue( $exception );
+
+ $job = Job::pop();
+ $this->assertFalse( $job );
+
+ return;
+
+ /**
+ // Broken until using leavemessage with ignorewarnings is supported
+ $job->run();
+
+ $this->assertFalse( wfLocalFile( 'UploadFromUrlTest.png' )->exists() );
+
+ $talkRev = Revision::newFromTitle( $talk );
+ $this->assertTrue( $talkRev->getSize() > $talkSize, 'New message left' );
+ */
+ }
+
+ /**
+ * Helper function to perform an async upload, execute the job and fetch
+ * the status
+ *
+ * @return array The result of action=upload&statuskey=key
+ */
+ private function doAsyncUpload( $token, $ignoreWarnings = false, $leaveMessage = false ) {
+ $params = array(
+ 'action' => 'upload',
+ 'filename' => 'UploadFromUrlTest.png',
+ 'url' => 'http://bits.wikimedia.org/skins-1.5/common/images/poweredby_mediawiki_88x31.png',
+ 'asyncdownload' => 1,
+ 'token' => $token,
+ );
+ if ( $ignoreWarnings ) {
+ $params['ignorewarnings'] = 1;
+ }
+ if ( $leaveMessage ) {
+ $params['leavemessage'] = 1;
+ }
+
+ $data = $this->doApiRequest( $params );
+ $this->assertEquals( $data[0]['upload']['result'], 'Queued' );
+ $this->assertTrue( isset( $data[0]['upload']['statuskey'] ) );
+ $statusKey = $data[0]['upload']['statuskey'];
+
+ $job = Job::pop();
+ $this->assertEquals( 'UploadFromUrlJob', get_class( $job ) );
+
+ $status = $job->run();
+ $this->assertTrue( $status );
+
+ $data = $this->doApiRequest( array(
+ 'action' => 'upload',
+ 'statuskey' => $statusKey,
+ 'token' => $token,
+ ) );
+
+ return $data;
+ }
+
+
+ /**
+ *
+ */
+ protected function deleteFile( $name ) {
+ $t = Title::newFromText( $name, NS_FILE );
+ $this->assertTrue($t->exists(), "File '$name' exists");
+
+ if ( $t->exists() ) {
+ $file = wfFindFile( $name, array( 'ignoreRedirect' => true ) );
+ $empty = "";
+ FileDeleteForm::doDelete( $t, $file, $empty, "none", true );
+ $a = new Article ( $t );
+ $a->doDeleteArticle( "testing" );
+ }
+ $t = Title::newFromText( $name, NS_FILE );
+
+ $this->assertFalse($t->exists(), "File '$name' was deleted");
+ }
+ }
diff --git a/tests/phpunit/includes/upload/UploadStashTest.php b/tests/phpunit/includes/upload/UploadStashTest.php
new file mode 100644
index 00000000..9c39bc61
--- /dev/null
+++ b/tests/phpunit/includes/upload/UploadStashTest.php
@@ -0,0 +1,53 @@
+<?php
+
+class UploadStashTest extends MediaWikiTestCase {
+ /**
+ * @var Array of UploadStashTestUser
+ */
+ public static $users;
+
+ public function setUp() {
+ parent::setUp();
+
+ // Setup a file for bug 29408
+ $this->bug29408File = dirname( __FILE__ ) . '/bug29408';
+ file_put_contents( $this->bug29408File, "\x00" );
+
+ self::$users = array(
+ 'sysop' => new ApiTestUser(
+ 'Uploadstashtestsysop',
+ 'Upload Stash Test Sysop',
+ 'upload_stash_test_sysop@sample.com',
+ array( 'sysop' )
+ ),
+ 'uploader' => new ApiTestUser(
+ 'Uploadstashtestuser',
+ 'Upload Stash Test User',
+ 'upload_stash_test_user@sample.com',
+ array()
+ )
+ );
+ }
+
+ public function testBug29408() {
+ global $wgUser;
+ $wgUser = self::$users['uploader']->user;
+
+ $repo = RepoGroup::singleton()->getLocalRepo();
+ $stash = new UploadStash( $repo );
+
+ // Throws exception caught by PHPUnit on failure
+ $file = $stash->stashFile( $this->bug29408File );
+ // We'll never reach this point if we hit bug 29408
+ $this->assertTrue( true, 'Unrecognized file without extension' );
+
+ $stash->removeFile( $file->getFileKey() );
+ }
+
+ public function tearDown() {
+ parent::tearDown();
+
+ unlink( $this->bug29408File . "." );
+
+ }
+}
diff --git a/tests/phpunit/includes/upload/UploadTest.php b/tests/phpunit/includes/upload/UploadTest.php
new file mode 100644
index 00000000..69c29032
--- /dev/null
+++ b/tests/phpunit/includes/upload/UploadTest.php
@@ -0,0 +1,142 @@
+<?php
+/**
+ * @group Upload
+ */
+class UploadTest extends MediaWikiTestCase {
+ protected $upload;
+
+
+ function setUp() {
+ global $wgHooks;
+ parent::setUp();
+
+ $this->upload = new UploadTestHandler;
+ $this->hooks = $wgHooks;
+ $wgHooks['InterwikiLoadPrefix'][] = 'MediaWikiTestCase::disableInterwikis';
+ }
+
+ function tearDown() {
+ global $wgHooks;
+ $wgHooks = $this->hooks;
+ }
+
+ /**
+ * Test various forms of valid and invalid titles that can be supplied.
+ */
+ public function testTitleValidation() {
+
+
+ /* Test a valid title */
+ $this->assertUploadTitleAndCode( 'ValidTitle.jpg',
+ 'ValidTitle.jpg', UploadBase::OK,
+ 'upload valid title' );
+
+ /* A title with a slash */
+ $this->assertUploadTitleAndCode( 'A/B.jpg',
+ 'B.jpg', UploadBase::OK,
+ 'upload title with slash' );
+
+ /* A title with illegal char */
+ $this->assertUploadTitleAndCode( 'A:B.jpg',
+ 'A-B.jpg', UploadBase::OK,
+ 'upload title with colon' );
+
+ /* Stripping leading File: prefix */
+ $this->assertUploadTitleAndCode( 'File:C.jpg',
+ 'C.jpg', UploadBase::OK,
+ 'upload title with File prefix' );
+
+ /* Test illegal suggested title (r94601) */
+ $this->assertUploadTitleAndCode( '%281%29.JPG',
+ null, UploadBase::ILLEGAL_FILENAME,
+ 'illegal title for upload' );
+
+ /* A title without extension */
+ $this->assertUploadTitleAndCode( 'A',
+ null, UploadBase::FILETYPE_MISSING,
+ 'upload title without extension' );
+
+ /* A title with no basename */
+ $this->assertUploadTitleAndCode( '.jpg',
+ null, UploadBase::MIN_LENGTH_PARTNAME,
+ 'upload title without basename' );
+
+ }
+ /**
+ * Helper function for testTitleValidation. First checks the return code
+ * of UploadBase::getTitle() and then the actual returned titl
+ */
+ private function assertUploadTitleAndCode( $srcFilename, $dstFilename, $code, $msg ) {
+ /* Check the result code */
+ $this->assertEquals( $code,
+ $this->upload->testTitleValidation( $srcFilename ),
+ "$msg code" );
+
+ /* If we expect a valid title, check the title itself. */
+ if ( $code == UploadBase::OK ) {
+ $this->assertEquals( $dstFilename,
+ $this->upload->getTitle()->getText(),
+ "$msg text" );
+ }
+ }
+
+ /**
+ * Test the upload verification functions
+ */
+ public function testVerifyUpload() {
+ /* Setup with zero file size */
+ $this->upload->initializePathInfo( '', '', 0 );
+ $result = $this->upload->verifyUpload();
+ $this->assertEquals( UploadBase::EMPTY_FILE,
+ $result['status'],
+ 'upload empty file' );
+ }
+
+ // Helper used to create an empty file of size $size.
+ private function createFileOfSize( $size ) {
+ $filename = tempnam( wfTempDir(), "mwuploadtest" );
+
+ $fh = fopen( $filename, 'w' );
+ ftruncate( $fh, $size );
+ fclose( $fh );
+
+ return $filename;
+ }
+
+ /**
+ * test uploading a 100 bytes file with wgMaxUploadSize = 100
+ *
+ * This method should be abstracted so we can test different settings.
+ */
+
+ public function testMaxUploadSize() {
+ global $wgMaxUploadSize;
+ $savedGlobal = $wgMaxUploadSize; // save global
+ global $wgFileExtensions;
+ $wgFileExtensions[] = 'txt';
+
+ $wgMaxUploadSize = 100;
+
+ $filename = $this->createFileOfSize( $wgMaxUploadSize );
+ $this->upload->initializePathInfo( basename($filename) . '.txt', $filename, 100 );
+ $result = $this->upload->verifyUpload();
+ unlink( $filename );
+
+ $this->assertEquals(
+ array( 'status' => UploadBase::OK ), $result );
+
+ $wgMaxUploadSize = $savedGlobal; // restore global
+ }
+}
+
+class UploadTestHandler extends UploadBase {
+ public function initializeFromRequest( &$request ) { }
+ public function testTitleValidation( $name ) {
+ $this->mTitle = false;
+ $this->mDesiredDestName = $name;
+ $this->getTitle();
+ return $this->mTitleError;
+ }
+
+
+}
diff --git a/tests/phpunit/install-phpunit.sh b/tests/phpunit/install-phpunit.sh
new file mode 100644
index 00000000..2d2b53ab
--- /dev/null
+++ b/tests/phpunit/install-phpunit.sh
@@ -0,0 +1,36 @@
+#!/bin/sh
+
+has_binary () {
+ if [ -z `which $1` ]; then
+ return 1
+ fi
+ return 0
+}
+
+if [ `id -u` -ne 0 ]; then
+ echo '*** ERROR' Must be root to run
+ exit 1
+fi
+
+if ( has_binary phpunit ); then
+ echo PHPUnit already installed
+else if ( has_binary pear ); then
+ echo Installing phpunit with pear
+ pear channel-discover pear.phpunit.de
+ pear channel-discover components.ez.no
+ pear channel-discover pear.symfony-project.com
+ pear install phpunit/PHPUnit
+else if ( has_binary apt-get ); then
+ echo Installing phpunit with apt-get
+ apt-get install phpunit
+else if ( has_binary yum ); then
+ echo Installing phpunit with yum
+ yum install phpunit
+else if ( has_binary port ); then
+ echo Installing phpunit with macports
+ port install php5-unit
+fi
+fi
+fi
+fi
+fi
diff --git a/tests/phpunit/languages/LanguageBe_taraskTest.php b/tests/phpunit/languages/LanguageBe_taraskTest.php
new file mode 100644
index 00000000..e7fdb7ca
--- /dev/null
+++ b/tests/phpunit/languages/LanguageBe_taraskTest.php
@@ -0,0 +1,30 @@
+<?php
+
+class LanguageBeTaraskTest extends MediaWikiTestCase {
+ private $lang;
+
+ function setUp() {
+ $this->lang = Language::factory( 'Be-tarask' );
+ }
+ function tearDown() {
+ unset( $this->lang );
+ }
+
+ /** see bug 23156 & r64981 */
+ function testSearchRightSingleQuotationMarkAsApostroph() {
+ $this->assertEquals(
+ "'",
+ $this->lang->normalizeForSearch( '’' ),
+ 'bug 23156: U+2019 conversion to U+0027'
+ );
+ }
+ /** see bug 23156 & r64981 */
+ function testCommafy() {
+ $this->assertEquals( '1,234,567', $this->lang->commafy( '1234567' ) );
+ $this->assertEquals( '12,345', $this->lang->commafy( '12345' ) );
+ }
+ /** see bug 23156 & r64981 */
+ function testDoesNotCommafyFourDigitsNumber() {
+ $this->assertEquals( '1234', $this->lang->commafy( '1234' ) );
+ }
+}
diff --git a/tests/phpunit/languages/LanguageTest.php b/tests/phpunit/languages/LanguageTest.php
new file mode 100644
index 00000000..aaad9c31
--- /dev/null
+++ b/tests/phpunit/languages/LanguageTest.php
@@ -0,0 +1,246 @@
+<?php
+
+class LanguageTest extends MediaWikiTestCase {
+ private $lang;
+
+ function setUp() {
+ $this->lang = Language::factory( 'en' );
+ }
+ function tearDown() {
+ unset( $this->lang );
+ }
+
+ function testLanguageConvertDoubleWidthToSingleWidth() {
+ $this->assertEquals(
+ "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz",
+ $this->lang->normalizeForSearch(
+ "ï¼ï¼‘23456789ABCDEFGHIJKLMNOPQRSTUVWXYZï½ï½‚cdefghijklï½ï½Žï½ï½ï½‘rstuvwxyz"
+ ),
+ 'convertDoubleWidth() with the full alphabet and digits'
+ );
+ }
+
+ function testFormatTimePeriod() {
+ $this->assertEquals(
+ "9.5s",
+ $this->lang->formatTimePeriod( 9.45 ),
+ 'formatTimePeriod() rounding (<10s)'
+ );
+
+ $this->assertEquals(
+ "10s",
+ $this->lang->formatTimePeriod( 9.95 ),
+ 'formatTimePeriod() rounding (<10s)'
+ );
+
+ $this->assertEquals(
+ "1m 0s",
+ $this->lang->formatTimePeriod( 59.55 ),
+ 'formatTimePeriod() rounding (<60s)'
+ );
+
+ $this->assertEquals(
+ "2m 0s",
+ $this->lang->formatTimePeriod( 119.55 ),
+ 'formatTimePeriod() rounding (<1h)'
+ );
+
+ $this->assertEquals(
+ "1h 0m 0s",
+ $this->lang->formatTimePeriod( 3599.55 ),
+ 'formatTimePeriod() rounding (<1h)'
+ );
+
+ $this->assertEquals(
+ "2h 0m 0s",
+ $this->lang->formatTimePeriod( 7199.55 ),
+ 'formatTimePeriod() rounding (>=1h)'
+ );
+
+ $this->assertEquals(
+ "2h 0m",
+ $this->lang->formatTimePeriod( 7199.55, 'avoidseconds' ),
+ 'formatTimePeriod() rounding (>=1h), avoidseconds'
+ );
+
+ $this->assertEquals(
+ "2h 0m",
+ $this->lang->formatTimePeriod( 7199.55, 'avoidminutes' ),
+ 'formatTimePeriod() rounding (>=1h), avoidminutes'
+ );
+
+ $this->assertEquals(
+ "48h 0m",
+ $this->lang->formatTimePeriod( 172799.55, 'avoidseconds' ),
+ 'formatTimePeriod() rounding (=48h), avoidseconds'
+ );
+
+ $this->assertEquals(
+ "3d 0h",
+ $this->lang->formatTimePeriod( 259199.55, 'avoidminutes' ),
+ 'formatTimePeriod() rounding (>48h), avoidminutes'
+ );
+
+ $this->assertEquals(
+ "2d 1h 0m",
+ $this->lang->formatTimePeriod( 176399.55, 'avoidseconds' ),
+ 'formatTimePeriod() rounding (>48h), avoidseconds'
+ );
+
+ $this->assertEquals(
+ "2d 1h",
+ $this->lang->formatTimePeriod( 176399.55, 'avoidminutes' ),
+ 'formatTimePeriod() rounding (>48h), avoidminutes'
+ );
+
+ $this->assertEquals(
+ "3d 0h 0m",
+ $this->lang->formatTimePeriod( 259199.55, 'avoidseconds' ),
+ 'formatTimePeriod() rounding (>48h), avoidminutes'
+ );
+
+ $this->assertEquals(
+ "2d 0h 0m",
+ $this->lang->formatTimePeriod( 172801.55, 'avoidseconds' ),
+ 'formatTimePeriod() rounding, (>48h), avoidseconds'
+ );
+
+ $this->assertEquals(
+ "2d 1h 1m 1s",
+ $this->lang->formatTimePeriod( 176460.55 ),
+ 'formatTimePeriod() rounding, recursion, (>48h)'
+ );
+ }
+
+ function testTruncate() {
+ $this->assertEquals(
+ "XXX",
+ $this->lang->truncate( "1234567890", 0, 'XXX' ),
+ 'truncate prefix, len 0, small ellipsis'
+ );
+
+ $this->assertEquals(
+ "12345XXX",
+ $this->lang->truncate( "1234567890", 8, 'XXX' ),
+ 'truncate prefix, small ellipsis'
+ );
+
+ $this->assertEquals(
+ "123456789",
+ $this->lang->truncate( "123456789", 5, 'XXXXXXXXXXXXXXX' ),
+ 'truncate prefix, large ellipsis'
+ );
+
+ $this->assertEquals(
+ "XXX67890",
+ $this->lang->truncate( "1234567890", -8, 'XXX' ),
+ 'truncate suffix, small ellipsis'
+ );
+
+ $this->assertEquals(
+ "123456789",
+ $this->lang->truncate( "123456789", -5, 'XXXXXXXXXXXXXXX' ),
+ 'truncate suffix, large ellipsis'
+ );
+ }
+
+ /**
+ * @dataProvider provideHTMLTruncateData()
+ */
+ function testTruncateHtml( $len, $ellipsis, $input, $expected ) {
+ // Actual HTML...
+ $this->assertEquals(
+ $expected,
+ $this->lang->truncateHTML( $input, $len, $ellipsis )
+ );
+ }
+
+ /**
+ * Array format is ($len, $ellipsis, $input, $expected)
+ */
+ function provideHTMLTruncateData() {
+ return array(
+ array( 0, 'XXX', "1234567890", "XXX" ),
+ array( 8, 'XXX', "1234567890", "12345XXX" ),
+ array( 5, 'XXXXXXXXXXXXXXX', '1234567890', "1234567890" ),
+ array( 2, '***',
+ '<p><span style="font-weight:bold;"></span></p>',
+ '<p><span style="font-weight:bold;"></span></p>',
+ ),
+ array( 2, '***',
+ '<p><span style="font-weight:bold;">123456789</span></p>',
+ '<p><span style="font-weight:bold;">***</span></p>',
+ ),
+ array( 2, '***',
+ '<p><span style="font-weight:bold;">&nbsp;23456789</span></p>',
+ '<p><span style="font-weight:bold;">***</span></p>',
+ ),
+ array( 3, '***',
+ '<p><span style="font-weight:bold;">123456789</span></p>',
+ '<p><span style="font-weight:bold;">***</span></p>',
+ ),
+ array( 4, '***',
+ '<p><span style="font-weight:bold;">123456789</span></p>',
+ '<p><span style="font-weight:bold;">1***</span></p>',
+ ),
+ array( 5, '***',
+ '<tt><span style="font-weight:bold;">123456789</span></tt>',
+ '<tt><span style="font-weight:bold;">12***</span></tt>',
+ ),
+ array( 6, '***',
+ '<p><a href="www.mediawiki.org">123456789</a></p>',
+ '<p><a href="www.mediawiki.org">123***</a></p>',
+ ),
+ array( 6, '***',
+ '<p><a href="www.mediawiki.org">12&nbsp;456789</a></p>',
+ '<p><a href="www.mediawiki.org">12&nbsp;***</a></p>',
+ ),
+ array( 7, '***',
+ '<small><span style="font-weight:bold;">123<p id="#moo">456</p>789</span></small>',
+ '<small><span style="font-weight:bold;">123<p id="#moo">4***</p></span></small>',
+ ),
+ array( 8, '***',
+ '<div><span style="font-weight:bold;">123<span>4</span>56789</span></div>',
+ '<div><span style="font-weight:bold;">123<span>4</span>5***</span></div>',
+ ),
+ array( 9, '***',
+ '<p><table style="font-weight:bold;"><tr><td>123456789</td></tr></table></p>',
+ '<p><table style="font-weight:bold;"><tr><td>123456789</td></tr></table></p>',
+ ),
+ array( 10, '***',
+ '<p><font style="font-weight:bold;">123456789</font></p>',
+ '<p><font style="font-weight:bold;">123456789</font></p>',
+ ),
+ );
+ }
+
+ /**
+ * Test Language::isValidBuiltInCode()
+ * @dataProvider provideLanguageCodes
+ */
+ function testBuiltInCodeValidation( $code, $message = '' ) {
+ $this->assertTrue(
+ (bool) Language::isValidBuiltInCode( $code ),
+ "validating code $code $message"
+ );
+ }
+
+ function testBuiltInCodeValidationRejectUnderscore() {
+ $this->assertFalse(
+ (bool) Language::isValidBuiltInCode( 'be_tarask' ),
+ "reject underscore in language code"
+ );
+ }
+
+ function provideLanguageCodes() {
+ return array(
+ array( 'fr' , 'Two letters, minor case' ),
+ array( 'EN' , 'Two letters, upper case' ),
+ array( 'tyv' , 'Three letters' ),
+ array( 'tokipona' , 'long language code' ),
+ array( 'be-tarask', 'With dash' ),
+ array( 'Zh-classical', 'Begin with upper case, dash' ),
+ array( 'Be-x-old', 'With extension (two dashes)' ),
+ );
+ }
+}
diff --git a/tests/phpunit/languages/LanguageTrTest.php b/tests/phpunit/languages/LanguageTrTest.php
new file mode 100644
index 00000000..d2a5ff36
--- /dev/null
+++ b/tests/phpunit/languages/LanguageTrTest.php
@@ -0,0 +1,65 @@
+<?php
+/**
+ * @author Ashar Voultoiz
+ * @copyright Copyright © 2011, Ashar Voultoiz
+ * @file
+ */
+
+/** Tests for MediaWiki languages/LanguageTr.php */
+class LanguageTrTest extends MediaWikiTestCase {
+ private $lang;
+
+ function setUp() {
+ $this->lang = Language::factory( 'Tr' );
+ }
+ function tearDown() {
+ unset( $this->lang );
+ }
+
+ /**
+ * See @bug 28040
+ * Credits to #wikipedia-tr users berm, []LuCkY[] and Emperyan
+ * @see http://en.wikipedia.org/wiki/Dotted_and_dotless_I
+ * @dataProvider provideDottedAndDotlessI
+ */
+ function testDottedAndDotlessI( $func, $input, $inputCase, $expected ) {
+ if( $func == 'ucfirst' ) {
+ $res = $this->lang->ucfirst( $input );
+ } elseif( $func == 'lcfirst' ) {
+ $res = $this->lang->lcfirst( $input );
+ } else {
+ throw new MWException( __METHOD__ . " given an invalid function name '$func'" );
+ }
+
+ $msg = "Converting $inputCase case '$input' with $func should give '$expected'";
+
+ $this->assertEquals( $expected, $res, $msg );
+ }
+
+ function provideDottedAndDotlessI() {
+ return array(
+ # function, input, input case, expected
+ # Case changed:
+ array( 'ucfirst', 'ı', 'lower', 'I' ),
+ array( 'ucfirst', 'i', 'lower', 'Ä°' ),
+ array( 'lcfirst', 'I', 'upper', 'ı' ),
+ array( 'lcfirst', 'Ä°', 'upper', 'i' ),
+
+ # Already using the correct case
+ array( 'ucfirst', 'I', 'upper', 'I' ),
+ array( 'ucfirst', 'Ä°', 'upper', 'Ä°' ),
+ array( 'lcfirst', 'ı', 'lower', 'ı' ),
+ array( 'lcfirst', 'i', 'lower', 'i' ),
+
+ # A real example taken from bug 28040 using
+ # http://tr.wikipedia.org/wiki/%C4%B0Phone
+ array( 'lcfirst', 'iPhone', 'lower', 'iPhone' ),
+
+ # next case is valid in Turkish but are different words if we
+ # consider IPhone is English!
+ array( 'lcfirst', 'IPhone', 'upper', 'ıPhone' ),
+
+ );
+ }
+
+}
diff --git a/tests/phpunit/phpunit.php b/tests/phpunit/phpunit.php
new file mode 100644
index 00000000..39cccf80
--- /dev/null
+++ b/tests/phpunit/phpunit.php
@@ -0,0 +1,61 @@
+#!/usr/bin/env php
+<?php
+/**
+ * Bootstrapping for MediaWiki PHPUnit tests
+ *
+ * @file
+ */
+
+/* Configuration */
+
+// Evaluate the include path relative to this file
+$IP = dirname( dirname( dirname( __FILE__ ) ) );
+
+// Set a flag which can be used to detect when other scripts have been entered through this entry point or not
+define( 'MW_PHPUNIT_TEST', true );
+
+// Start up MediaWiki in command-line mode
+require_once( "$IP/maintenance/Maintenance.php" );
+
+class PHPUnitMaintClass extends Maintenance {
+ public function finalSetup() {
+ parent::finalSetup();
+
+ global $wgMainCacheType, $wgMessageCacheType, $wgParserCacheType, $wgUseDatabaseMessages;
+ global $wgLocaltimezone, $wgLocalisationCacheConf;
+
+ $wgMainCacheType = CACHE_NONE;
+ $wgMessageCacheType = CACHE_NONE;
+ $wgParserCacheType = CACHE_NONE;
+
+ $wgUseDatabaseMessages = false; # Set for future resets
+
+ // Assume UTC for testing purposes
+ $wgLocaltimezone = 'UTC';
+
+ $wgLocalisationCacheConf['storeClass'] = 'LCStore_Null';
+ }
+ public function execute() { }
+ public function getDbType() {
+ return Maintenance::DB_ADMIN;
+ }
+}
+
+$maintClass = 'PHPUnitMaintClass';
+require( RUN_MAINTENANCE_IF_MAIN );
+
+if( !in_array( '--configuration', $_SERVER['argv'] ) ) {
+ //Hack to eliminate the need to use the Makefile (which sucks ATM)
+ $_SERVER['argv'][] = '--configuration';
+ $_SERVER['argv'][] = $IP . '/tests/phpunit/suite.xml';
+}
+
+require_once( 'PHPUnit/Runner/Version.php' );
+if( version_compare( PHPUnit_Runner_Version::id(), '3.5.0', '<' ) ) {
+ die( 'PHPUnit 3.5 or later required, you have ' . PHPUnit_Runner_Version::id() . ".\n" );
+}
+require_once( 'PHPUnit/Autoload.php' );
+
+require_once( "$IP/tests/TestsAutoLoader.php" );
+MediaWikiPHPUnitCommand::main();
+
diff --git a/tests/phpunit/run-tests.bat b/tests/phpunit/run-tests.bat
new file mode 100644
index 00000000..e6eb3e0c
--- /dev/null
+++ b/tests/phpunit/run-tests.bat
@@ -0,0 +1 @@
+php phpunit.php --configuration suite.xml %*
diff --git a/tests/phpunit/skins/SideBarTest.php b/tests/phpunit/skins/SideBarTest.php
new file mode 100644
index 00000000..47182a71
--- /dev/null
+++ b/tests/phpunit/skins/SideBarTest.php
@@ -0,0 +1,175 @@
+<?php
+
+/**
+ * @group Skin
+ */
+class SideBarTest extends MediaWikiLangTestCase {
+
+ /** A skin template, reinitialized before each test */
+ private $skin;
+ /** Local cache for sidebar messages */
+ private $messages;
+
+ function __construct() {
+ parent::__construct();
+ }
+
+ /** Build $this->messages array */
+ private function initMessagesHref() {
+ # List of default messages for the sidebar:
+ $URL_messages = array(
+ 'mainpage',
+ 'portal-url',
+ 'currentevents-url',
+ 'recentchanges-url',
+ 'randompage-url',
+ 'helppage',
+ );
+
+ foreach( $URL_messages as $m ) {
+ $titleName = MessageCache::singleton()->get($m);
+ $title = Title::newFromText( $titleName );
+ $this->messages[$m]['href'] = $title->getLocalURL();
+ }
+ }
+
+ function setUp() {
+ parent::setUp();
+ $this->initMessagesHref();
+ $this->skin = new SkinTemplate();
+ }
+ function tearDown() {
+ parent::tearDown();
+ $this->skin = null;
+ }
+
+ /**
+ * Internal helper to test the sidebar
+ * @param $expected
+ * @param $text
+ * @param $message (Default: '')
+ */
+ private function assertSideBar( $expected, $text, $message = '' ) {
+ $bar = array();
+ $this->skin->addToSidebarPlain( $bar, $text );
+ $this->assertEquals( $expected, $bar, $message );
+ }
+
+ function testSidebarWithOnlyTwoTitles() {
+ $this->assertSideBar(
+ array(
+ 'Title1' => array(),
+ 'Title2' => array(),
+ ),
+'* Title1
+* Title2
+'
+ );
+ }
+
+ function testExpandMessages() {
+ $this->assertSidebar(
+ array( 'Title' => array(
+ array(
+ 'text' => 'Help',
+ 'href' => $this->messages['helppage']['href'],
+ 'id' => 'n-help',
+ 'active' => null
+ )
+ )),
+'* Title
+** helppage|help
+'
+ );
+ }
+
+ function testExternalUrlsRequireADescription() {
+ $this->assertSidebar(
+ array( 'Title' => array(
+ # ** http://www.mediawiki.org/| Home
+ array(
+ 'text' => 'Home',
+ 'href' => 'http://www.mediawiki.org/',
+ 'id' => 'n-Home',
+ 'active' => null,
+ 'rel' => 'nofollow',
+ ),
+ # ** http://valid.no.desc.org/
+ # ... skipped since it is missing a pipe with a description
+ )),
+'* Title
+** http://www.mediawiki.org/| Home
+** http://valid.no.desc.org/
+'
+
+ );
+
+ }
+
+
+ #### Attributes for external links ##########################
+ private function getAttribs( ) {
+ # Sidebar text we will use everytime
+ $text = '* Title
+** http://www.mediawiki.org/| Home';
+
+ $bar = array();
+ $this->skin->addToSideBarPlain( $bar, $text );
+
+ return $bar['Title'][0];
+ }
+
+ /**
+ * Simple test to verify our helper assertAttribs() is functional
+ * Please note this assume MediaWiki default settings:
+ * $wgNoFollowLinks = true
+ * $wgExternalLinkTarget = false
+ */
+ function testTestAttributesAssertionHelper() {
+ $attribs = $this->getAttribs();
+
+ $this->assertArrayHasKey( 'rel', $attribs );
+ $this->assertEquals( 'nofollow', $attribs['rel'] );
+
+ $this->assertArrayNotHasKey( 'target', $attribs );
+ }
+
+ /**
+ * Test wgNoFollowLinks in sidebar
+ */
+ function testRespectWgnofollowlinks() {
+ global $wgNoFollowLinks;
+ $saved = $wgNoFollowLinks;
+ $wgNoFollowLinks = false;
+
+ $attribs = $this->getAttribs();
+ $this->assertArrayNotHasKey( 'rel', $attribs,
+ 'External URL in sidebar do not have rel=nofollow when wgNoFollowLinks = false'
+ );
+
+ // Restore global
+ $wgNoFollowLinks = $saved;
+ }
+
+ /**
+ * Test wgExternaLinkTarget in sidebar
+ */
+ function testRespectExternallinktarget() {
+ global $wgExternalLinkTarget;
+ $saved = $wgExternalLinkTarget;
+
+ $wgExternalLinkTarget = '_blank';
+ $attribs = $this->getAttribs();
+ $this->assertArrayHasKey( 'target', $attribs );
+ $this->assertEquals( $attribs['target'], '_blank' );
+
+ $wgExternalLinkTarget = '_self';
+ $attribs = $this->getAttribs();
+ $this->assertArrayHasKey( 'target', $attribs );
+ $this->assertEquals( $attribs['target'], '_self' );
+
+ // Restore global
+ $wgExternalLinkTarget = $saved;
+ }
+
+}
diff --git a/tests/phpunit/suite.xml b/tests/phpunit/suite.xml
new file mode 100644
index 00000000..e6649beb
--- /dev/null
+++ b/tests/phpunit/suite.xml
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!-- colors don't work on Windows! -->
+<phpunit bootstrap="./bootstrap.php"
+ colors="false"
+ backupGlobals="false"
+ convertErrorsToExceptions="true"
+ convertNoticesToExceptions="true"
+ convertWarningsToExceptions="true"
+ stopOnFailure="false"
+ strict="true"
+ verbose="true">
+ <testsuites>
+ <testsuite name="includes">
+ <directory>./includes</directory>
+ </testsuite>
+ <testsuite name="languages">
+ <directory>./languages</directory>
+ </testsuite>
+ <testsuite name="skins">
+ <directory>./skins</directory>
+ </testsuite>
+ <testsuite name="uploadfromurl">
+ <file>./suites/UploadFromUrlTestSuite.php</file>
+ </testsuite>
+ <testsuite name="extensions">
+ <file>./suites/ExtensionsTestSuite.php</file>
+ </testsuite>
+ </testsuites>
+ <groups>
+ <exclude>
+ <group>Utility</group>
+ <group>Broken</group>
+ <group>Stub</group>
+ </exclude>
+ </groups>
+</phpunit>
diff --git a/tests/phpunit/suites/ExtensionsTestSuite.php b/tests/phpunit/suites/ExtensionsTestSuite.php
new file mode 100644
index 00000000..d728807f
--- /dev/null
+++ b/tests/phpunit/suites/ExtensionsTestSuite.php
@@ -0,0 +1,33 @@
+<?php
+/**
+ * This test suite runs unit tests registered by extensions.
+ * See http://www.mediawiki.org/wiki/Manual:Hooks/UnitTestsList for details of how to register your tests.
+ */
+
+class ExtensionsTestSuite extends PHPUnit_Framework_TestSuite {
+ public function __construct() {
+ parent::__construct();
+ $files = array();
+ wfRunHooks( 'UnitTestsList', array( &$files ) );
+ foreach ( $files as $file ) {
+ $this->addTestFile( $file );
+ }
+ if ( !count( $files ) ) {
+ $this->addTest( new DummyExtensionsTest( 'testNothing' ) );
+ }
+ }
+
+ public static function suite() {
+ return new self;
+ }
+}
+
+/**
+ * Needed to avoid warnings like 'No tests found in class "ExtensionsTestSuite".'
+ * when no extensions with tests are used.
+ */
+class DummyExtensionsTest extends MediaWikiTestCase {
+ public function testNothing() {
+ $this->assertTrue( true );
+ }
+}
diff --git a/tests/phpunit/suites/UploadFromUrlTestSuite.php b/tests/phpunit/suites/UploadFromUrlTestSuite.php
new file mode 100644
index 00000000..9b666825
--- /dev/null
+++ b/tests/phpunit/suites/UploadFromUrlTestSuite.php
@@ -0,0 +1,178 @@
+<?php
+
+require_once( dirname( dirname( __FILE__ ) ) . '/includes/upload/UploadFromUrlTest.php' );
+
+class UploadFromUrlTestSuite extends PHPUnit_Framework_TestSuite {
+ public static function addTables( &$tables ) {
+ $tables[] = 'user_properties';
+ $tables[] = 'filearchive';
+ $tables[] = 'logging';
+ $tables[] = 'updatelog';
+ $tables[] = 'iwlinks';
+
+ return true;
+ }
+
+ function setUp() {
+ global $wgParser, $wgParserConf, $IP, $messageMemc, $wgMemc, $wgDeferredUpdateList,
+ $wgUser, $wgLang, $wgOut, $wgRequest, $wgStyleDirectory, $wgEnableParserCache,
+ $wgNamespaceAliases, $wgNamespaceProtection, $wgLocalFileRepo,
+ $parserMemc, $wgThumbnailScriptPath, $wgScriptPath,
+ $wgArticlePath, $wgStyleSheetPath, $wgScript, $wgStylePath;
+
+ $wgScript = '/index.php';
+ $wgScriptPath = '/';
+ $wgArticlePath = '/wiki/$1';
+ $wgStyleSheetPath = '/skins';
+ $wgStylePath = '/skins';
+ $wgThumbnailScriptPath = false;
+ $wgLocalFileRepo = array(
+ 'class' => 'LocalRepo',
+ 'name' => 'local',
+ 'directory' => wfTempDir() . '/test-repo',
+ 'url' => 'http://example.com/images',
+ 'deletedDir' => wfTempDir() . '/test-repo/delete',
+ 'hashLevels' => 2,
+ 'transformVia404' => false,
+ );
+ $wgNamespaceProtection[NS_MEDIAWIKI] = 'editinterface';
+ $wgNamespaceAliases['Image'] = NS_FILE;
+ $wgNamespaceAliases['Image_talk'] = NS_FILE_TALK;
+
+
+ $wgEnableParserCache = false;
+ $wgDeferredUpdateList = array();
+ $wgMemc = wfGetMainCache();
+ $messageMemc = wfGetMessageCacheStorage();
+ $parserMemc = wfGetParserCacheStorage();
+
+ // $wgContLang = new StubContLang;
+ $wgUser = new User;
+ $context = new RequestContext;
+ $wgLang = $context->getLang();
+ $wgOut = $context->getOutput();
+ $wgParser = new StubObject( 'wgParser', $wgParserConf['class'], array( $wgParserConf ) );
+ $wgRequest = new WebRequest;
+
+ if ( $wgStyleDirectory === false ) {
+ $wgStyleDirectory = "$IP/skins";
+ }
+
+ }
+
+ public function tearDown() {
+ $this->teardownUploadDir( $this->uploadDir );
+ }
+
+ private $uploadDir;
+ private $keepUploads;
+
+ /**
+ * Remove the dummy uploads directory
+ */
+ private function teardownUploadDir( $dir ) {
+ if ( $this->keepUploads ) {
+ return;
+ }
+
+ // delete the files first, then the dirs.
+ self::deleteFiles(
+ array (
+ "$dir/3/3a/Foobar.jpg",
+ "$dir/thumb/3/3a/Foobar.jpg/180px-Foobar.jpg",
+ "$dir/thumb/3/3a/Foobar.jpg/200px-Foobar.jpg",
+ "$dir/thumb/3/3a/Foobar.jpg/640px-Foobar.jpg",
+ "$dir/thumb/3/3a/Foobar.jpg/120px-Foobar.jpg",
+
+ "$dir/0/09/Bad.jpg",
+ )
+ );
+
+ self::deleteDirs(
+ array (
+ "$dir/3/3a",
+ "$dir/3",
+ "$dir/thumb/6/65",
+ "$dir/thumb/6",
+ "$dir/thumb/3/3a/Foobar.jpg",
+ "$dir/thumb/3/3a",
+ "$dir/thumb/3",
+
+ "$dir/0/09/",
+ "$dir/0/",
+
+ "$dir/thumb",
+ "$dir",
+ )
+ );
+ }
+
+ /**
+ * Delete the specified files, if they exist.
+ *
+ * @param $files Array: full paths to files to delete.
+ */
+ private static function deleteFiles( $files ) {
+ foreach ( $files as $file ) {
+ if ( file_exists( $file ) ) {
+ unlink( $file );
+ }
+ }
+ }
+
+ /**
+ * Delete the specified directories, if they exist. Must be empty.
+ *
+ * @param $dirs Array: full paths to directories to delete.
+ */
+ private static function deleteDirs( $dirs ) {
+ foreach ( $dirs as $dir ) {
+ if ( is_dir( $dir ) ) {
+ rmdir( $dir );
+ }
+ }
+ }
+
+ /**
+ * Create a dummy uploads directory which will contain a couple
+ * of files in order to pass existence tests.
+ *
+ * @return String: the directory
+ */
+ private function setupUploadDir() {
+ global $IP;
+
+ if ( $this->keepUploads ) {
+ $dir = wfTempDir() . '/mwParser-images';
+
+ if ( is_dir( $dir ) ) {
+ return $dir;
+ }
+ } else {
+ $dir = wfTempDir() . "/mwParser-" . mt_rand() . "-images";
+ }
+
+ wfDebug( "Creating upload directory $dir\n" );
+
+ if ( file_exists( $dir ) ) {
+ wfDebug( "Already exists!\n" );
+ return $dir;
+ }
+
+ wfMkdirParents( $dir . '/3/3a' );
+ copy( "$IP/skins/monobook/headbg.jpg", "$dir/3/3a/Foobar.jpg" );
+
+ wfMkdirParents( $dir . '/0/09' );
+ copy( "$IP/skins/monobook/headbg.jpg", "$dir/0/09/Bad.jpg" );
+
+ return $dir;
+ }
+
+ public static function suite() {
+ // Hack to invoke the autoloader required to get phpunit to recognize
+ // the UploadFromUrlTest class
+ class_exists( 'UploadFromUrlTest' );
+ $suite = new UploadFromUrlTestSuite( 'UploadFromUrlTest' );
+ return $suite;
+ }
+}
diff --git a/tests/qunit/.htaccess b/tests/qunit/.htaccess
new file mode 100644
index 00000000..605d2f4c
--- /dev/null
+++ b/tests/qunit/.htaccess
@@ -0,0 +1 @@
+Allow from all
diff --git a/tests/qunit/data/defineTestCallback.js b/tests/qunit/data/defineTestCallback.js
new file mode 100644
index 00000000..6fcd4595
--- /dev/null
+++ b/tests/qunit/data/defineTestCallback.js
@@ -0,0 +1,4 @@
+window.mw.loader.testCallback = function() {
+ start();
+ ok( true, 'Implementing a module, is the callback timed properly ?');
+};
diff --git a/tests/qunit/data/testrunner.js b/tests/qunit/data/testrunner.js
new file mode 100644
index 00000000..dbfe9fad
--- /dev/null
+++ b/tests/qunit/data/testrunner.js
@@ -0,0 +1,92 @@
+( function( $ ) {
+
+/**
+ * Add bogus to url to prevent IE crazy caching
+ *
+ * @param value {String} a relative path (eg. 'data/defineTestCallback.js' or 'data/test.php?foo=bar')
+ * @return {String} Such as 'data/defineTestCallback.js?131031765087663960'
+ */
+QUnit.fixurl = function(value) {
+ return value + (/\?/.test(value) ? "&" : "?") + new Date().getTime() + "" + parseInt(Math.random()*100000);
+};
+
+/**
+ * Load TestSwarm agent
+ */
+if ( QUnit.urlParams.swarmURL ) {
+ document.write("<scr" + "ipt src='" + QUnit.fixurl( 'data/testwarm.inject.js' ) + "'></scr" + "ipt>");
+}
+
+/**
+ * Load completenesstest
+ */
+if ( QUnit.urlParams.completenesstest ) {
+
+ // Return true to ignore
+ var mwTestIgnore = function( val, tester, funcPath ) {
+
+ // Don't record methods of the properties of constructors,
+ // to avoid getting into a loop (prototype.constructor.prototype..).
+ // Since we're therefor skipping any injection for
+ // "new mw.Foo()", manually set it to true here.
+ if ( val instanceof mw.Map ) {
+ tester.methodCallTracker['Map'] = true;
+ return true;
+ }
+
+ // Don't record methods of the properties of a jQuery object
+ if ( val instanceof $ ) {
+ return true;
+ }
+
+ return false;
+ };
+
+ var mwTester = new CompletenessTest( mw, mwTestIgnore );
+}
+
+/**
+ * Add-on assertion helpers
+ */
+// Define the add-ons
+var addons = {
+
+ // Expect boolean true
+ assertTrue: function( actual, message ) {
+ strictEqual( actual, true, message );
+ },
+
+ // Expect boolean false
+ assertFalse: function( actual, message ) {
+ strictEqual( actual, false, message );
+ },
+
+ // Expect numerical value less than X
+ lt: function( actual, expected, message ) {
+ QUnit.push( actual < expected, actual, 'less than ' + expected, message );
+ },
+
+ // Expect numerical value less than or equal to X
+ ltOrEq: function( actual, expected, message ) {
+ QUnit.push( actual <= expected, actual, 'less than or equal to ' + expected, message );
+ },
+
+ // Expect numerical value greater than X
+ gt: function( actual, expected, message ) {
+ QUnit.push( actual > expected, actual, 'greater than ' + expected, message );
+ },
+
+ // Expect numerical value greater than or equal to X
+ gtOrEq: function( actual, expected, message ) {
+ QUnit.push( actual >= expected, actual, 'greater than or equal to ' + expected, message );
+ },
+
+ // Backwards compatible with new verions of QUnit
+ equals: window.equal,
+ same: window.deepEqual
+};
+
+$.extend( QUnit, addons );
+$.extend( window, addons );
+
+})( jQuery );
diff --git a/tests/qunit/data/testwarm.inject.js b/tests/qunit/data/testwarm.inject.js
new file mode 100644
index 00000000..14ee8f93
--- /dev/null
+++ b/tests/qunit/data/testwarm.inject.js
@@ -0,0 +1,349 @@
+/*
+ Copyright (c) 2009 John Resig
+
+ Permission is hereby granted, free of charge, to any person
+ obtaining a copy of this software and associated documentation
+ files (the "Software"), to deal in the Software without
+ restriction, including without limitation the rights to use,
+ copy, modify, merge, publish, distribute, sublicense, and/or sell
+ copies of the Software, and to permit persons to whom the
+ Software is furnished to do so, subject to the following
+ conditions:
+
+ The above copyright notice and this permission notice shall be
+ included in all copies or substantial portions of the Software.
+
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ OTHER DEALINGS IN THE SOFTWARE.
+
+*/
+(function(){
+
+ var DEBUG = false;
+
+ var doPost = false;
+
+ try {
+ doPost = !!window.top.postMessage;
+ } catch(e){}
+
+ var search = window.location.search,
+ url, index;
+ if( ( index = search.indexOf( "swarmURL=" ) ) != -1 )
+ url = decodeURIComponent( search.slice( index + 9 ) );
+
+ if ( !DEBUG && (!url || url.indexOf("http") !== 0) ) {
+ return;
+ }
+
+ var submitTimeout = 5;
+
+ var curHeartbeat;
+ var beatRate = 20;
+
+ // Expose the TestSwarm API
+ window.TestSwarm = {
+ submit: submit,
+ heartbeat: function(){
+ if ( curHeartbeat ) {
+ clearTimeout( curHeartbeat );
+ }
+
+ curHeartbeat = setTimeout(function(){
+ submit({ fail: -1, total: -1 });
+ }, beatRate * 1000);
+ },
+ serialize: function(){
+ return trimSerialize();
+ }
+ };
+
+ // Prevent careless things from executing
+ window.print = window.confirm = window.alert = window.open = function(){};
+
+ window.onerror = function(e){
+ document.body.appendChild( document.createTextNode( "ERROR: " + e ));
+ submit({ fail: 0, error: 1, total: 1 });
+ return false;
+ };
+
+ // QUnit (jQuery)
+ // http://docs.jquery.com/QUnit
+ if ( typeof QUnit !== "undefined" ) {
+ QUnit.done = function(results){
+ submit({
+ fail: results.failed,
+ error: 0,
+ total: results.total
+ });
+ };
+
+ QUnit.log = window.TestSwarm.heartbeat;
+ window.TestSwarm.heartbeat();
+
+ window.TestSwarm.serialize = function(){
+ // Clean up the HTML (remove any un-needed test markup)
+ remove("nothiddendiv");
+ remove("loadediframe");
+ remove("dl");
+ remove("main");
+
+ // Show any collapsed results
+ var ol = document.getElementsByTagName("ol");
+ for ( var i = 0; i < ol.length; i++ ) {
+ ol[i].style.display = "block";
+ }
+
+ return trimSerialize();
+ };
+
+ // UnitTestJS (Prototype, Scriptaculous)
+ // http://github.com/tobie/unittest_js/tree/master
+ } else if ( typeof Test !== "undefined" && Test && Test.Unit && Test.Unit.runners ) {
+ var total_runners = Test.Unit.runners.length, cur_runners = 0;
+ var total = 0, fail = 0, error = 0;
+
+ for (var i = 0; i < Test.Unit.runners.length; i++) (function(i){
+ var finish = Test.Unit.runners[i].finish;
+ Test.Unit.runners[i].finish = function(){
+ finish.call( this );
+
+ var results = this.getResult();
+ total += results.assertions;
+ fail += results.failures;
+ error += results.errors;
+
+ if ( ++cur_runners === total_runners ) {
+ submit({
+ fail: fail,
+ error: error,
+ total: total
+ });
+ }
+ };
+ })(i);
+
+ // JSSpec (MooTools)
+ // http://jania.pe.kr/aw/moin.cgi/JSSpec
+ } else if ( typeof JSSpec !== "undefined" && JSSpec && JSSpec.Logger ) {
+ var onRunnerEnd = JSSpec.Logger.prototype.onRunnerEnd;
+ JSSpec.Logger.prototype.onRunnerEnd = function(){
+ onRunnerEnd.call(this);
+
+ // Show any collapsed results
+ var ul = document.getElementsByTagName("ul");
+ for ( var i = 0; i < ul.length; i++ ) {
+ ul[i].style.display = "block";
+ }
+
+ submit({
+ fail: JSSpec.runner.getTotalFailures(),
+ error: JSSpec.runner.getTotalErrors(),
+ total: JSSpec.runner.totalExamples
+ });
+ };
+
+ window.TestSwarm.serialize = function(){
+ // Show any collapsed results
+ var ul = document.getElementsByTagName("ul");
+ for ( var i = 0; i < ul.length; i++ ) {
+ ul[i].style.display = "block";
+ }
+
+ return trimSerialize();
+ };
+
+ // JSUnit
+ // http://www.jsunit.net/
+ // Note: Injection file must be included before the frames
+ // are document.write()d into the page.
+ } else if ( typeof JsUnitTestManager !== "undefined" ) {
+ var _done = JsUnitTestManager.prototype._done;
+ JsUnitTestManager.prototype._done = function(){
+ _done.call(this);
+
+ submit({
+ fail: this.failureCount,
+ error: this.errorCount,
+ total: this.totalCount
+ });
+ };
+
+ window.TestSwarm.serialize = function(){
+ return "<pre>" + this.log.join("\n") + "</pre>";
+ };
+
+ // Selenium Core
+ // http://seleniumhq.org/projects/core/
+ } else if ( typeof SeleniumTestResult !== "undefined" && typeof LOG !== "undefined" ) {
+ // Completely overwrite the postback
+ SeleniumTestResult.prototype.post = function(){
+ submit({
+ fail: this.metrics.numCommandFailures,
+ error: this.metrics.numCommandErrors,
+ total: this.metrics.numCommandPasses + this.metrics.numCommandFailures + this.metrics.numCommandErrors
+ });
+ };
+
+ window.TestSwarm.serialize = function(){
+ var results = [];
+ while ( LOG.pendingMessages.length ) {
+ var msg = LOG.pendingMessages.shift();
+ results.push( msg.type + ": " + msg.msg );
+ }
+
+ return "<pre>" + results.join("\n") + "</pre>";
+ };
+
+ // Dojo Objective Harness
+ // http://docs.dojocampus.org/quickstart/doh
+ } else if ( typeof doh !== "undefined" && doh._report ) {
+ var _report = doh._report;
+ doh._report = function(){
+ _report.apply(this, arguments);
+
+ submit({
+ fail: doh._failureCount,
+ error: doh._errorCount,
+ total: doh._testCount
+ });
+ };
+
+ window.TestSwarm.serialize = function(){
+ return "<pre>" + document.getElementById("logBody").innerHTML + "</pre>";
+ };
+ // Screw.Unit
+ // git://github.com/nathansobo/screw-unit.git
+ } else if ( typeof Screw !== "undefined" && typeof jQuery !== 'undefined' && Screw && Screw.Unit ) {
+ $(Screw).bind("after", function() {
+ var passed = $('.passed').length;
+ var failed = $('.failed').length;
+ submit({
+ fail: failed,
+ error: 0,
+ total: failed + passed
+ });
+ });
+
+ $(Screw).bind("loaded", function() {
+ $('.it')
+ .bind("passed", window.TestSwarm.heartbeat)
+ .bind("failed", window.TestSwarm.heartbeat);
+ window.TestSwarm.heartbeat();
+ });
+
+ window.TestSwarm.serialize = function(){
+ return trimSerialize();
+ };
+ }
+
+ function trimSerialize(doc) {
+ doc = doc || document;
+
+ var scripts = doc.getElementsByTagName("script");
+ while ( scripts.length ) {
+ remove( scripts[0] );
+ }
+
+ var root = window.location.href.replace(/(https?:\/\/.*?)\/.*/, "$1");
+ var cur = window.location.href.replace(/[^\/]*$/, "");
+
+ var links = doc.getElementsByTagName("link");
+ for ( var i = 0; i < links.length; i++ ) {
+ var href = links[i].href;
+ if ( href.indexOf("/") === 0 ) {
+ href = root + href;
+ } else if ( !/^https?:\/\//.test( href ) ) {
+ href = cur + href;
+ }
+ links[i].href = href;
+ }
+
+ return ("<html>" + doc.documentElement.innerHTML + "</html>")
+ .replace(/\s+/g, " ");
+ }
+
+ function remove(elem){
+ if ( typeof elem === "string" ) {
+ elem = document.getElementById( elem );
+ }
+
+ if ( elem ) {
+ elem.parentNode.removeChild( elem );
+ }
+ }
+
+ function submit(params){
+ if ( curHeartbeat ) {
+ clearTimeout( curHeartbeat );
+ }
+
+ var paramItems = (url.split("?")[1] || "").split("&");
+
+ for ( var i = 0; i < paramItems.length; i++ ) {
+ if ( paramItems[i] ) {
+ var parts = paramItems[i].split("=");
+ if ( !params[ parts[0] ] ) {
+ params[ parts[0] ] = parts[1];
+ }
+ }
+ }
+
+ if ( !params.state ) {
+ params.state = "saverun";
+ }
+
+ if ( !params.results ) {
+ params.results = window.TestSwarm.serialize();
+ }
+
+ if ( doPost ) {
+ // Build Query String
+ var query = "";
+
+ for ( var i in params ) {
+ query += ( query ? "&" : "" ) + i + "=" +
+ encodeURIComponent(params[i]);
+ }
+
+ if ( DEBUG ) {
+ alert( query );
+ } else {
+ window.top.postMessage( query, "*" );
+ }
+
+ } else {
+ var form = document.createElement("form");
+ form.action = url;
+ form.method = "POST";
+
+ for ( var i in params ) {
+ var input = document.createElement("input");
+ input.type = "hidden";
+ input.name = i;
+ input.value = params[i];
+ form.appendChild( input );
+ }
+
+ if ( DEBUG ) {
+ alert( form.innerHTML );
+ } else {
+
+ // Watch for the result submission timing out
+ setTimeout(function(){
+ submit( params );
+ }, submitTimeout * 1000);
+
+ document.body.appendChild( form );
+ form.submit();
+ }
+ }
+ }
+
+})();
diff --git a/tests/qunit/index.html b/tests/qunit/index.html
new file mode 100644
index 00000000..d4bbe7e2
--- /dev/null
+++ b/tests/qunit/index.html
@@ -0,0 +1,90 @@
+<!DOCTYPE html>
+<html>
+<head>
+ <title>MediaWiki JavaScript Test Suite</title>
+ <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
+ <!-- MediaWiki Modules -->
+
+ <!-- MW: startup -->
+ <script>
+ function startUp(){
+ mw.config = new mw.Map( false );
+ }
+ </script>
+
+ <!-- MW: jquery|mediawiki -->
+ <script src="../../resources/jquery/jquery.js"></script>
+ <script src="../../resources/mediawiki/mediawiki.js"></script>
+
+ <!-- MW: mediawiki.page.startup -->
+ <script src="../../resources/jquery/jquery.client.js"></script>
+ <script src="../../resources/mediawiki.page/mediawiki.page.startup.js"></script>
+
+ <!-- MW: mediawiki.user|mediawiki.util|mediawiki.page.ready -->
+ <script src="../../resources/jquery/jquery.cookie.js"></script>
+ <script src="../../resources/mediawiki/mediawiki.user.js"></script>
+
+ <script src="../../resources/jquery/jquery.messageBox.js"></script>
+ <script src="../../resources/jquery/jquery.mwPrototypes.js"></script>
+ <script src="../../resources/mediawiki/mediawiki.util.js"></script>
+
+ <script src="../../resources/jquery/jquery.checkboxShiftClick.js"></script>
+ <script src="../../resources/jquery/jquery.makeCollapsible.js"></script>
+ <script src="../../resources/jquery/jquery.placeholder.js"></script>
+ <script src="../../resources/mediawiki.page/mediawiki.page.ready.js"></script>
+
+ <!-- MW: user.options -->
+ <script>
+ mw.user.options.set({"skin": "vector"});
+ </script>
+
+ <!-- MW: Non-default modules -->
+ <script src="../../resources/jquery/jquery.autoEllipsis.js"></script>
+ <script src="../../resources/jquery/jquery.byteLength.js"></script>
+ <script src="../../resources/jquery/jquery.byteLimit.js"></script>
+ <script src="../../resources/jquery/jquery.colorUtil.js"></script>
+ <script src="../../resources/jquery/jquery.getAttrs.js"></script>
+ <script src="../../resources/jquery/jquery.localize.js"></script>
+ <script src="../../resources/jquery/jquery.tabIndex.js"></script>
+ <script src="../../resources/jquery/jquery.tablesorter.js"></script>
+ <script src="../../resources/mediawiki.special/mediawiki.special.js"></script>
+ <script src="../../resources/mediawiki.special/mediawiki.special.recentchanges.js"></script>
+
+ <!-- QUnit: Load framework -->
+ <link rel="stylesheet" href="../../resources/jquery/jquery.qunit.css" />
+ <script src="../../resources/jquery/jquery.qunit.js"></script>
+ <script src="../../resources/jquery/jquery.qunit.completenessTest.js"></script>
+ <script src="data/testrunner.js"></script>
+
+ <!-- QUnit: Load test suites (maintain the same order as above please) -->
+ <script src="suites/resources/mediawiki/mediawiki.jscompat.test.js"></script>
+ <script src="suites/resources/mediawiki/mediawiki.js"></script>
+ <script src="suites/resources/mediawiki/mediawiki.user.js"></script>
+
+ <script src="suites/resources/jquery/jquery.client.js"></script>
+ <script src="suites/resources/jquery/jquery.mwPrototypes.js"></script>
+ <script src="suites/resources/mediawiki/mediawiki.util.js"></script>
+
+ <script src="suites/resources/jquery/jquery.autoEllipsis.js"></script>
+ <script src="suites/resources/jquery/jquery.byteLength.js"></script>
+ <script src="suites/resources/jquery/jquery.byteLimit.js"></script>
+ <script src="suites/resources/jquery/jquery.colorUtil.js"></script>
+ <script src="suites/resources/jquery/jquery.getAttrs.js"></script>
+ <script src="suites/resources/jquery/jquery.localize.js"></script>
+ <script src="suites/resources/jquery/jquery.tabIndex.js"></script>
+ <script src="suites/resources/jquery/jquery.tablesorter.test.js" charset="UTF-8"></script>
+ <script src="suites/resources/mediawiki.special/mediawiki.special.recentchanges.js"></script>
+</head>
+<body>
+ <h1 id="qunit-header">MediaWiki JavaScript Test Suite</h1>
+ <h2 id="qunit-banner"></h2>
+ <div id="qunit-testrunner-toolbar">
+ <p><a href="http://www.mediawiki.org/wiki/Manual:JavaScript_unit_testing">See testing documentation on mediawiki.org</a></p>
+ </div>
+ <h2 id="qunit-userAgent"></h2>
+ <ol id="qunit-tests"></ol>
+
+<!-- Scripts inserting stuff here shall remove it themselfs! -->
+<div id="content"></div>
+</body>
+</html>
diff --git a/tests/qunit/suites/resources/jquery/jquery.autoEllipsis.js b/tests/qunit/suites/resources/jquery/jquery.autoEllipsis.js
new file mode 100644
index 00000000..caf5a6f1
--- /dev/null
+++ b/tests/qunit/suites/resources/jquery/jquery.autoEllipsis.js
@@ -0,0 +1,58 @@
+module( 'jquery.autoEllipsis.js' );
+
+test( '-- Initial check', function() {
+ expect(1);
+ ok( $.fn.autoEllipsis, 'jQuery.fn.autoEllipsis defined' );
+});
+
+function createWrappedDiv( text, width ) {
+ var $wrapper = $( '<div />' ).css( 'width', width );
+ var $div = $( '<div />' ).text( text );
+ $wrapper.append( $div );
+ return $wrapper;
+}
+
+function findDivergenceIndex( a, b ) {
+ var i = 0;
+ while ( i < a.length && i < b.length && a[i] == b[i] ) {
+ i++;
+ }
+ return i;
+}
+
+test( 'Position right', function() {
+ expect(4);
+
+ // We need this thing to be visible, so append it to the DOM
+ var origText = 'This is a really long random string and there is no way it fits in 100 pixels.';
+ var $wrapper = createWrappedDiv( origText, '100px' );
+ $( 'body' ).append( $wrapper );
+ $wrapper.autoEllipsis( { position: 'right' } );
+
+ // Verify that, and only one, span element was created
+ var $span = $wrapper.find( '> span' );
+ strictEqual( $span.length, 1, 'autoEllipsis wrapped the contents in a span element' );
+
+ // Check that the text fits by turning on word wrapping
+ $span.css( 'whiteSpace', 'nowrap' );
+ ltOrEq( $span.width(), $span.parent().width(), "Text fits (making the span 'white-space:nowrap' does not make it wider than its parent)" );
+
+ // Add two characters using scary black magic
+ var spanText = $span.text();
+ var d = findDivergenceIndex( origText, spanText );
+ var spanTextNew = spanText.substr( 0, d ) + origText[d] + origText[d] + '...';
+
+ gt( spanTextNew.length, spanText.length, 'Verify that the new span-length is indeed greater' );
+
+ // Put this text in the span and verify it doesn't fit
+ $span.text( spanTextNew );
+ // In IE6 width works like min-width, allow IE6's width to be "equal to"
+ if ( $.browser.msie && Number( $.browser.version ) == 6 ) {
+ gtOrEq( $span.width(), $span.parent().width(), 'Fit is maximal (adding two characters makes it not fit any more) - IE6: Maybe equal to as well due to width behaving like min-width in IE6' );
+ } else {
+ gt( $span.width(), $span.parent().width(), 'Fit is maximal (adding two characters makes it not fit any more)' );
+ }
+
+ // Clean up
+ $wrapper.remove();
+});
diff --git a/tests/qunit/suites/resources/jquery/jquery.byteLength.js b/tests/qunit/suites/resources/jquery/jquery.byteLength.js
new file mode 100644
index 00000000..f82fda27
--- /dev/null
+++ b/tests/qunit/suites/resources/jquery/jquery.byteLength.js
@@ -0,0 +1,42 @@
+module( 'jquery.byteLength.js' );
+
+test( '-- Initial check', function() {
+ expect(1);
+ ok( $.byteLength, 'jQuery.byteLength defined' );
+} );
+
+test( 'Simple text', function() {
+ expect(5);
+
+ var azLc = 'abcdefghijklmnopqrstuvwxyz',
+ azUc = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ',
+ num = '0123456789',
+ x = '*',
+ space = ' ';
+
+ equal( $.byteLength( azLc ), 26, 'Lowercase a-z' );
+ equal( $.byteLength( azUc ), 26, 'Uppercase A-Z' );
+ equal( $.byteLength( num ), 10, 'Numbers 0-9' );
+ equal( $.byteLength( x ), 1, 'An asterisk' );
+ equal( $.byteLength( space ), 3, '3 spaces' );
+
+} );
+
+test( 'Special text', window.foo = function() {
+ expect(5);
+
+ // http://en.wikipedia.org/wiki/UTF-8
+ var U_0024 = '\u0024',
+ U_00A2 = '\u00A2',
+ U_20AC = '\u20AC',
+ U_024B62 = '\u024B62',
+ // The normal one doesn't display properly, try the below which is the same
+ // according to http://www.fileformat.info/info/unicode/char/24B62/index.htm
+ U_024B62_alt = '\uD852\uDF62';
+
+ strictEqual( $.byteLength( U_0024 ), 1, 'U+0024: 1 byte. \u0024 (dollar sign)' );
+ strictEqual( $.byteLength( U_00A2 ), 2, 'U+00A2: 2 bytes. \u00A2 (cent sign)' );
+ strictEqual( $.byteLength( U_20AC ), 3, 'U+20AC: 3 bytes. \u20AC (euro sign)' );
+ strictEqual( $.byteLength( U_024B62 ), 4, 'U+024B62: 4 bytes. \uD852\uDF62 (a Han character)' );
+ strictEqual( $.byteLength( U_024B62_alt ), 4, 'U+024B62: 4 bytes. \uD852\uDF62 (a Han character) - alternative method' );
+} );
diff --git a/tests/qunit/suites/resources/jquery/jquery.byteLimit.js b/tests/qunit/suites/resources/jquery/jquery.byteLimit.js
new file mode 100644
index 00000000..461ea49b
--- /dev/null
+++ b/tests/qunit/suites/resources/jquery/jquery.byteLimit.js
@@ -0,0 +1,155 @@
+module( 'jquery.byteLimit.js' );
+
+test( '-- Initial check', function() {
+ expect(1);
+ ok( $.fn.byteLimit, 'jQuery.fn.byteLimit defined' );
+} );
+
+// Basic sendkey-implementation
+$.addChars = function( $input, charstr ) {
+ var len = charstr.length;
+ for ( var i = 0; i < len; i++ ) {
+ // Keep track of the previous value
+ var prevVal = $input.val();
+
+ // Get the key code
+ var code = charstr.charCodeAt(i);
+
+ // Trigger event and undo if prevented
+ var event = new jQuery.Event( 'keypress', { keyCode: code, which: code, charCode: code } );
+ $input.trigger( event );
+ if ( !event.isDefaultPrevented() ) {
+ $input.val( prevVal + charstr.charAt(i) );
+ }
+ }
+};
+var blti = 0;
+/**
+ * Test factory for $.fn.byteLimit
+ *
+ * @param $input {jQuery} jQuery object in an input element
+ * @param useLimit {Boolean} Wether a limit should apply at all
+ * @param limit {Number} Limit (if used) otherwise undefined
+ * The limit should be less than 20 (the sample data's length)
+ */
+var byteLimitTest = function( options ) {
+ var opt = $.extend({
+ description: '',
+ $input: null,
+ sample: '',
+ useLimit: false,
+ expected: 0,
+ limit: null
+ }, options);
+ var i = blti++;
+
+ test( opt.description, function() {
+
+ opt.$input.appendTo( 'body' );
+
+ // Simulate pressing keys for each of the sample characters
+ $.addChars( opt.$input, opt.sample );
+ var newVal = opt.$input.val();
+
+ if ( opt.useLimit ) {
+ expect(2);
+
+ ltOrEq( $.byteLength( newVal ), opt.limit, 'Prevent keypresses after byteLimit was reached, length never exceeded the limit' );
+ equal( $.byteLength( newVal ), opt.expected, 'Not preventing keypresses too early, length has reached the expected length' );
+
+ } else {
+ expect(1);
+ equal( $.byteLength( newVal ), opt.expected, 'Unlimited scenarios are not affected, expected length reached' );
+ }
+
+ opt.$input.remove();
+ } );
+};
+
+var
+ // Simple sample (20 chars, 20 bytes)
+ simpleSample = '12345678901234567890',
+
+ // 3 bytes (euro-symbol)
+ U_20AC = '\u20AC',
+
+ // Multi-byte sample (22 chars, 26 bytes)
+ mbSample = '1234567890' + U_20AC + '1234567890' + U_20AC;
+
+byteLimitTest({
+ description: 'Plain text input',
+ $input: $( '<input>' )
+ .attr( {
+ 'type': 'text'
+ }),
+ sample: simpleSample,
+ useLimit: false,
+ expected: $.byteLength( simpleSample )
+});
+
+byteLimitTest({
+ description: 'Limit using the maxlength attribute',
+ $input: $( '<input>' )
+ .attr( {
+ 'type': 'text',
+ 'maxlength': '10'
+ })
+ .byteLimit(),
+ sample: simpleSample,
+ useLimit: true,
+ limit: 10,
+ expected: 10
+});
+
+byteLimitTest({
+ description: 'Limit using a custom value',
+ $input: $( '<input>' )
+ .attr( {
+ 'type': 'text'
+ })
+ .byteLimit( 10 ),
+ sample: simpleSample,
+ useLimit: true,
+ limit: 10,
+ expected: 10
+});
+
+byteLimitTest({
+ description: 'Limit using a custom value, overriding maxlength attribute',
+ $input: $( '<input>' )
+ .attr( {
+ 'type': 'text',
+ 'maxLength': '10'
+ })
+ .byteLimit( 15 ),
+ sample: simpleSample,
+ useLimit: true,
+ limit: 15,
+ expected: 15
+});
+
+byteLimitTest({
+ description: 'Limit using a custom value (multibyte)',
+ $input: $( '<input>' )
+ .attr( {
+ 'type': 'text'
+ })
+ .byteLimit( 14 ),
+ sample: mbSample,
+ useLimit: true,
+ limit: 14,
+ expected: 14 // (10 x 1-byte char) + (1 x 3-byte char) + (1 x 1-byte char)
+});
+
+byteLimitTest({
+ description: 'Limit using a custom value (multibyte) overlapping a byte',
+ $input: $( '<input>' )
+ .attr( {
+ 'type': 'text'
+ })
+ .byteLimit( 12 ),
+ sample: mbSample,
+ useLimit: true,
+ limit: 12,
+ expected: 12 // 10 x 1-byte char. The next 3-byte char exceeds limit of 12, but 2 more 1-byte chars come in after.
+});
diff --git a/tests/qunit/suites/resources/jquery/jquery.client.js b/tests/qunit/suites/resources/jquery/jquery.client.js
new file mode 100644
index 00000000..50df2928
--- /dev/null
+++ b/tests/qunit/suites/resources/jquery/jquery.client.js
@@ -0,0 +1,205 @@
+module( 'jquery.client.js' );
+
+test( '-- Initial check', function() {
+ expect(1);
+ ok( jQuery.client, 'jQuery.client defined' );
+});
+
+test( 'profile userAgent support', function() {
+ expect(8);
+
+ // Object keyed by userAgent. Value is an array (human-readable name, client-profile object, navigator.platform value)
+ // Info based on results from http://toolserver.org/~krinkle/testswarm/job/174/
+ var uas = {
+ // Internet Explorer 6
+ // Internet Explorer 7
+ 'Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)': {
+ title: 'Internet Explorer 7',
+ platform: 'Win32',
+ profile: {
+ "name": "msie",
+ "layout": "trident",
+ "layoutVersion": "unknown",
+ "platform": "win",
+ "version": "7.0",
+ "versionBase": "7",
+ "versionNumber": 7
+ }
+ },
+ // Internet Explorer 8
+ // Internet Explorer 9
+ // Internet Explorer 10
+ // Firefox 2
+ // Firefox 3.5
+ 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.5; en-US; rv:1.9.1.19) Gecko/20110420 Firefox/3.5.19': {
+ title: 'Firefox 3.5',
+ platform: 'MacIntel',
+ profile: {
+ "name": "firefox",
+ "layout": "gecko",
+ "layoutVersion": 20110420,
+ "platform": "mac",
+ "version": "3.5.19",
+ "versionBase": "3",
+ "versionNumber": 3.5
+ }
+ },
+ // Firefox 3.6
+ 'Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.17) Gecko/20110422 Ubuntu/10.10 (maverick) Firefox/3.6.17': {
+ title: 'Firefox 3.6',
+ platform: 'Linux i686',
+ profile: {
+ "name": "firefox",
+ "layout": "gecko",
+ "layoutVersion": 20110422,
+ "platform": "linux",
+ "version": "3.6.17",
+ "versionBase": "3",
+ "versionNumber": 3.6
+ }
+ },
+ // Firefox 4
+ 'Mozilla/5.0 (Windows NT 6.0; rv:2.0.1) Gecko/20100101 Firefox/4.0.1': {
+ title: 'Firefox 4',
+ platform: 'Win32',
+ profile: {
+ "name": "firefox",
+ "layout": "gecko",
+ "layoutVersion": 20100101,
+ "platform": "win",
+ "version": "4.0.1",
+ "versionBase": "4",
+ "versionNumber": 4
+ }
+ },
+ // Firefox 5
+ // Safari 3
+ // Safari 4
+ 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_7; nl-nl) AppleWebKit/531.22.7 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7': {
+ title: 'Safari 4',
+ platform: 'MacIntel',
+ profile: {
+ "name": "safari",
+ "layout": "webkit",
+ "layoutVersion": 531,
+ "platform": "mac",
+ "version": "4.0.5",
+ "versionBase": "4",
+ "versionNumber": 4
+ }
+ },
+ 'Mozilla/5.0 (Windows; U; Windows NT 6.0; cs-CZ) AppleWebKit/533.21.1 (KHTML, like Gecko) Version/4.0.5 Safari/531.22.7': {
+ title: 'Safari 4',
+ platform: 'Win32',
+ profile: {
+ "name": "safari",
+ "layout": "webkit",
+ "layoutVersion": 533,
+ "platform": "win",
+ "version": "4.0.5",
+ "versionBase": "4",
+ "versionNumber": 4
+ }
+ },
+ // Safari 5
+ // Opera 10
+ // Chrome 5
+ // Chrome 6
+ // Chrome 7
+ // Chrome 8
+ // Chrome 9
+ // Chrome 10
+ // Chrome 11
+ // Chrome 12
+ 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_5_8) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.112 Safari/534.30': {
+ title: 'Chrome 12',
+ platform: 'MacIntel',
+ profile: {
+ "name": "chrome",
+ "layout": "webkit",
+ "layoutVersion": 534,
+ "platform": "mac",
+ "version": "12.0.742.112",
+ "versionBase": "12",
+ "versionNumber": 12
+ }
+ },
+ 'Mozilla/5.0 (X11; Linux i686) AppleWebKit/534.30 (KHTML, like Gecko) Chrome/12.0.742.68 Safari/534.30': {
+ title: 'Chrome 12',
+ platform: 'Linux i686',
+ profile: {
+ "name": "chrome",
+ "layout": "webkit",
+ "layoutVersion": 534,
+ "platform": "linux",
+ "version": "12.0.742.68",
+ "versionBase": "12",
+ "versionNumber": 12
+ }
+ }
+ };
+
+ // Generate a client profile object and compare recursively
+ var uaTest = function( rawUserAgent, data ) {
+ var ret = $.client.profile( {
+ userAgent: rawUserAgent,
+ platform: data.platform
+ } );
+ deepEqual( ret, data.profile, 'Client profile support check for ' + data.title + ' (' + data.platform + '): ' + rawUserAgent );
+ };
+
+ // Loop through and run tests
+ $.each( uas, uaTest );
+} );
+
+test( 'profile return validation for current user agent', function() {
+ expect(7);
+ var p = $.client.profile();
+ var unknownOrType = function( val, type, summary ) {
+ return ok( typeof val === type || val === 'unknown', summary );
+ };
+
+ equal( typeof p, 'object', 'profile returns an object' );
+ unknownOrType( p.layout, 'string', 'p.layout is a string (or "unknown")' );
+ unknownOrType( p.layoutVersion, 'number', 'p.layoutVersion is a number (or "unknown")' );
+ unknownOrType( p.platform, 'string', 'p.platform is a string (or "unknown")' );
+ unknownOrType( p.version, 'string', 'p.version is a string (or "unknown")' );
+ unknownOrType( p.versionBase, 'string', 'p.versionBase is a string (or "unknown")' );
+ equal( typeof p.versionNumber, 'number', 'p.versionNumber is a number' );
+});
+
+test( 'test', function() {
+ expect(1);
+
+ // Example from WikiEditor
+ var testMap = {
+ 'ltr': {
+ 'msie': [['>=', 7]],
+ 'firefox': [['>=', 2]],
+ 'opera': [['>=', 9.6]],
+ 'safari': [['>=', 3]],
+ 'chrome': [['>=', 3]],
+ 'netscape': [['>=', 9]],
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false
+ },
+ 'rtl': {
+ 'msie': [['>=', 8]],
+ 'firefox': [['>=', 2]],
+ 'opera': [['>=', 9.6]],
+ 'safari': [['>=', 3]],
+ 'chrome': [['>=', 3]],
+ 'netscape': [['>=', 9]],
+ 'blackberry': false,
+ 'ipod': false,
+ 'iphone': false
+ }
+ };
+ // .test() uses eval, make sure no exceptions are thrown
+ // then do a basic return value type check
+ var testMatch = $.client.test( testMap );
+
+ equal( typeof testMatch, 'boolean', 'test returns a boolean value' );
+
+});
diff --git a/tests/qunit/suites/resources/jquery/jquery.colorUtil.js b/tests/qunit/suites/resources/jquery/jquery.colorUtil.js
new file mode 100644
index 00000000..93f12b82
--- /dev/null
+++ b/tests/qunit/suites/resources/jquery/jquery.colorUtil.js
@@ -0,0 +1,71 @@
+module( 'jquery.colorUtil.js' );
+
+test( '-- Initial check', function() {
+ expect(1);
+ ok( $.colorUtil, '$.colorUtil defined' );
+});
+
+test( 'getRGB', function() {
+ expect(18);
+
+ strictEqual( $.colorUtil.getRGB(), undefined, 'No arguments' );
+ strictEqual( $.colorUtil.getRGB( '' ), undefined, 'Empty string' );
+ deepEqual( $.colorUtil.getRGB( [0, 100, 255] ), [0, 100, 255], 'Parse array of rgb values' );
+ deepEqual( $.colorUtil.getRGB( 'rgb(0,100,255)' ), [0, 100, 255], 'Parse simple rgb string' );
+ deepEqual( $.colorUtil.getRGB( 'rgb(0, 100, 255)' ), [0, 100, 255], 'Parse simple rgb string with spaces' );
+ deepEqual( $.colorUtil.getRGB( 'rgb(0%,20%,40%)' ), [0, 51, 102], 'Parse rgb string with percentages' );
+ deepEqual( $.colorUtil.getRGB( 'rgb(0%, 20%, 40%)' ), [0, 51, 102], 'Parse rgb string with percentages and spaces' );
+ deepEqual( $.colorUtil.getRGB( '#f2ddee' ), [242, 221, 238], 'Hex string: 6 char lowercase' );
+ deepEqual( $.colorUtil.getRGB( '#f2DDEE' ), [242, 221, 238], 'Hex string: 6 char uppercase' );
+ deepEqual( $.colorUtil.getRGB( '#f2DdEe' ), [242, 221, 238], 'Hex string: 6 char mixed' );
+ deepEqual( $.colorUtil.getRGB( '#eee' ), [238, 238, 238], 'Hex string: 3 char lowercase' );
+ deepEqual( $.colorUtil.getRGB( '#EEE' ), [238, 238, 238], 'Hex string: 3 char uppercase' );
+ deepEqual( $.colorUtil.getRGB( '#eEe' ), [238, 238, 238], 'Hex string: 3 char mixed' );
+ deepEqual( $.colorUtil.getRGB( 'rgba(0, 0, 0, 0)' ), [255, 255, 255], 'Zero rgba for Safari 3; Transparent (whitespace)' );
+
+ // Perhaps this is a bug in colorUtil, but it is the current behaviour so, let's keep
+ // track of it, so we will know in case it would ever change.
+ strictEqual( $.colorUtil.getRGB( 'rgba(0,0,0,0)' ), undefined, 'Zero rgba without whitespace' );
+
+ deepEqual( $.colorUtil.getRGB( 'lightGreen' ), [144, 238, 144], 'Color names (lightGreen)' );
+ deepEqual( $.colorUtil.getRGB( 'transparent' ), [255, 255, 255], 'Color names (transparent)' );
+ strictEqual( $.colorUtil.getRGB( 'mediaWiki' ), undefined, 'Inexisting color name' );
+});
+
+test( 'rgbToHsl', function() {
+ expect(1);
+
+ var hsl = $.colorUtil.rgbToHsl( 144, 238, 144 );
+
+ // Cross-browser differences in decimals...
+ // Round to two decimals so they can be more reliably checked.
+ var dualDecimals = function(a,b){
+ return Math.round(a*100)/100;
+ };
+ // Re-create the rgbToHsl return array items, limited to two decimals.
+ var ret = [dualDecimals(hsl[0]), dualDecimals(hsl[1]), dualDecimals(hsl[2])];
+
+ deepEqual( ret, [0.33, 0.73, 0.75], 'rgb(144, 238, 144): hsl(0.33, 0.73, 0.75)' );
+});
+
+test( 'hslToRgb', function() {
+ expect(1);
+
+ var rgb = $.colorUtil.hslToRgb( 0.3, 0.7, 0.8 );
+
+ // Cross-browser differences in decimals...
+ // Re-create the hslToRgb return array items, rounded to whole numbers.
+ var ret = [Math.round(rgb[0]), Math.round(rgb[1]), Math.round(rgb[2])];
+
+ deepEqual( ret ,[183, 240, 168], 'hsl(0.3, 0.7, 0.8): rgb(183, 240, 168)' );
+});
+
+test( 'getColorBrightness', function() {
+ expect(2);
+
+ var a = $.colorUtil.getColorBrightness( 'red', +0.1 );
+ equal( a, 'rgb(255,50,50)', 'Start with named color "red", brighten 10%' );
+
+ var b = $.colorUtil.getColorBrightness( 'rgb(200,50,50)', -0.2 );
+ equal( b, 'rgb(118,29,29)', 'Start with rgb string "rgb(200,50,50)", darken 20%' );
+});
diff --git a/tests/qunit/suites/resources/jquery/jquery.getAttrs.js b/tests/qunit/suites/resources/jquery/jquery.getAttrs.js
new file mode 100644
index 00000000..3d3d01e1
--- /dev/null
+++ b/tests/qunit/suites/resources/jquery/jquery.getAttrs.js
@@ -0,0 +1,17 @@
+module( 'jquery.getAttrs.js' );
+
+test( '-- Initial check', function() {
+ expect(1);
+ ok( $.fn.getAttrs, 'jQuery.fn.getAttrs defined' );
+} );
+
+test( 'Check', function() {
+ expect(1);
+ var attrs = {
+ foo: 'bar',
+ 'class': 'lorem'
+ },
+ $el = $( '<div>', attrs );
+
+ deepEqual( $el.getAttrs(), attrs, 'getAttrs() return object should match the attributes set, no more, no less' );
+} );
diff --git a/tests/qunit/suites/resources/jquery/jquery.localize.js b/tests/qunit/suites/resources/jquery/jquery.localize.js
new file mode 100644
index 00000000..40b58687
--- /dev/null
+++ b/tests/qunit/suites/resources/jquery/jquery.localize.js
@@ -0,0 +1,119 @@
+module( 'jquery.localize.js' );
+
+test( '-- Initial check', function() {
+ expect(1);
+ ok( $.fn.localize, 'jQuery.fn.localize defined' );
+} );
+
+test( 'Handle basic replacements', function() {
+ expect(3);
+
+ var html, $lc;
+ mw.messages.set( 'basic', 'Basic stuff' );
+
+ // Tag: html:msg
+ html = '<div><span><html:msg key="basic" /></span></div>';
+ $lc = $( html ).localize().find( 'span' );
+
+ strictEqual( $lc.text(), 'Basic stuff', 'Tag: html:msg' );
+
+ // Attribute: title-msg
+ html = '<div><span title-msg="basic" /></span></div>';
+ $lc = $( html ).localize().find( 'span' );
+
+ strictEqual( $lc.attr( 'title' ), 'Basic stuff', 'Attribute: title-msg' );
+
+ // Attribute: alt-msg
+ html = '<div><span alt-msg="basic" /></span></div>';
+ $lc = $( html ).localize().find( 'span' );
+
+ strictEqual( $lc.attr( 'alt' ), 'Basic stuff', 'Attribute: alt-msg' );
+} );
+
+test( 'Proper escaping', function() {
+ expect(2);
+
+ var html, $lc;
+ mw.messages.set( 'properfoo', '<proper esc="test">' );
+
+ // This is handled by jQuery inside $.fn.localize, just a simple sanity checked
+ // making sure it is actually using text() and attr() (or something with the same effect)
+
+ // Text escaping
+ html = '<div><span><html:msg key="properfoo" /></span></div>';
+ $lc = $( html ).localize().find( 'span' );
+
+ strictEqual( $lc.text(), mw.msg( 'properfoo' ), 'Content is inserted as text, not as html.' );
+
+ // Attribute escaping
+ html = '<div><span title-msg="properfoo" /></span></div>';
+ $lc = $( html ).localize().find( 'span' );
+
+ strictEqual( $lc.attr( 'title' ), mw.msg( 'properfoo' ), 'Attributes are not inserted raw.' );
+} );
+
+test( 'Options', function() {
+ expect(7);
+
+ mw.messages.set( {
+ 'foo-lorem': 'Lorem',
+ 'foo-ipsum': 'Ipsum',
+ 'foo-bar-title': 'Read more about bars',
+ 'foo-bar-label': 'The Bars',
+ 'foo-bazz-title': 'Read more about bazz at $1 (last modified: $2)',
+ 'foo-bazz-label': 'The Bazz ($1)',
+ 'foo-welcome': 'Welcome to $1! (last visit: $2)'
+ } );
+ var html, $lc, attrs, x, sitename = 'Wikipedia';
+
+ // Message key prefix
+ html = '<div><span title-msg="lorem"><html:msg key="ipsum" /></span></div>';
+ $lc = $( html ).localize( {
+ prefix: 'foo-'
+ } ).find( 'span' );
+
+ strictEqual( $lc.attr( 'title' ), 'Lorem', 'Message key prefix - attr' );
+ strictEqual( $lc.text(), 'Ipsum', 'Message key prefix - text' );
+
+ // Variable keys mapping
+ x = 'bar';
+ html = '<div><span title-msg="title"><html:msg key="label" /></span></div>';
+ $lc = $( html ).localize( {
+ keys: {
+ 'title': 'foo-' + x + '-title',
+ 'label': 'foo-' + x + '-label'
+ }
+ } ).find( 'span' );
+
+ strictEqual( $lc.attr( 'title' ), 'Read more about bars', 'Variable keys mapping - attr' );
+ strictEqual( $lc.text(), 'The Bars', 'Variable keys mapping - text' );
+
+ // Passing parameteters to mw.msg
+ html = '<div><span><html:msg key="foo-welcome" /></span></div>';
+ $lc = $( html ).localize( {
+ params: {
+ 'foo-welcome': [sitename, 'yesterday']
+ }
+ } ).find( 'span' );
+
+ strictEqual( $lc.text(), 'Welcome to Wikipedia! (last visit: yesterday)', 'Passing parameteters to mw.msg' );
+
+ // Combination of options prefix, params and keys
+ x = 'bazz';
+ html = '<div><span title-msg="title"><html:msg key="label" /></span></div>';
+ $lc = $( html ).localize( {
+ prefix: 'foo-',
+ keys: {
+ 'title': x + '-title',
+ 'label': x + '-label'
+ },
+ params: {
+ 'title': [sitename, '3 minutes ago'],
+ 'label': [sitename, '3 minutes ago']
+
+ }
+ } ).find( 'span' );
+
+ strictEqual( $lc.text(), 'The Bazz (Wikipedia)', 'Combination of options prefix, params and keys - text' );
+ strictEqual( $lc.attr( 'title' ), 'Read more about bazz at Wikipedia (last modified: 3 minutes ago)', 'Combination of options prefix, params and keys - attr' );
+} );
diff --git a/tests/qunit/suites/resources/jquery/jquery.mwPrototypes.js b/tests/qunit/suites/resources/jquery/jquery.mwPrototypes.js
new file mode 100644
index 00000000..bb6d2a1b
--- /dev/null
+++ b/tests/qunit/suites/resources/jquery/jquery.mwPrototypes.js
@@ -0,0 +1,56 @@
+module( 'jquery.mwPrototypes.js' );
+
+test( 'String functions', function() {
+
+ equal( $.trimLeft( ' foo bar ' ), 'foo bar ', 'trimLeft' );
+ equal( $.trimRight( ' foo bar ' ), ' foo bar', 'trimRight' );
+ equal( $.ucFirst( 'foo'), 'Foo', 'ucFirst' );
+
+ equal( $.escapeRE( '<!-- ([{+mW+}]) $^|?>' ),
+ '<!\\-\\- \\(\\[\\{\\+mW\\+\\}\\]\\) \\$\\^\\|\\?>', 'escapeRE - Escape specials' );
+ equal( $.escapeRE( 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' ),
+ 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'escapeRE - Leave uppercase alone' );
+ equal( $.escapeRE( 'abcdefghijklmnopqrstuvwxyz' ),
+ 'abcdefghijklmnopqrstuvwxyz', 'escapeRE - Leave lowercase alone' );
+ equal( $.escapeRE( '0123456789' ), '0123456789', 'escapeRE - Leave numbers alone' );
+});
+
+test( 'Is functions', function() {
+
+ strictEqual( $.isDomElement( document.getElementById( 'qunit-header' ) ), true,
+ 'isDomElement: #qunit-header Node' );
+ strictEqual( $.isDomElement( document.getElementById( 'random-name' ) ), false,
+ 'isDomElement: #random-name (null)' );
+ strictEqual( $.isDomElement( document.getElementsByTagName( 'div' ) ), false,
+ 'isDomElement: getElementsByTagName Array' );
+ strictEqual( $.isDomElement( document.getElementsByTagName( 'div' )[0] ), true,
+ 'isDomElement: getElementsByTagName(..)[0] Node' );
+ strictEqual( $.isDomElement( $( 'div' ) ), false,
+ 'isDomElement: jQuery object' );
+ strictEqual( $.isDomElement( $( 'div' ).get(0) ), true,
+ 'isDomElement: jQuery object > Get node' );
+ strictEqual( $.isDomElement( document.createElement( 'div' ) ), true,
+ 'isDomElement: createElement' );
+ strictEqual( $.isDomElement( { foo: 1 } ), false,
+ 'isDomElement: Object' );
+
+ strictEqual( $.isEmpty( 'string' ), false, 'isEmptry: "string"' );
+ strictEqual( $.isEmpty( '0' ), true, 'isEmptry: "0"' );
+ strictEqual( $.isEmpty( [] ), true, 'isEmptry: []' );
+ strictEqual( $.isEmpty( {} ), true, 'isEmptry: {}' );
+
+ // Documented behaviour
+ strictEqual( $.isEmpty( { length: 0 } ), true, 'isEmptry: { length: 0 }' );
+});
+
+test( 'Comparison functions', function() {
+
+ ok( $.compareArray( [0, 'a', [], [2, 'b'] ], [0, "a", [], [2, "b"] ] ),
+ 'compareArray: Two deep arrays that are excactly the same' );
+ ok( !$.compareArray( [1], [2] ), 'compareArray: Two different arrays (false)' );
+
+ ok( $.compareObject( {}, {} ), 'compareObject: Two empty objects' );
+ ok( $.compareObject( { foo: 1 }, { foo: 1 } ), 'compareObject: Two the same objects' );
+ ok( !$.compareObject( { bar: true }, { baz: false } ),
+ 'compareObject: Two different objects (false)' );
+});
diff --git a/tests/qunit/suites/resources/jquery/jquery.tabIndex.js b/tests/qunit/suites/resources/jquery/jquery.tabIndex.js
new file mode 100644
index 00000000..1ff81e58
--- /dev/null
+++ b/tests/qunit/suites/resources/jquery/jquery.tabIndex.js
@@ -0,0 +1,50 @@
+module( 'jquery.tabIndex.js' );
+
+test( '-- Initial check', function() {
+ expect(2);
+
+ ok( $.fn.firstTabIndex, '$.fn.firstTabIndex defined' );
+ ok( $.fn.lastTabIndex, '$.fn.lastTabIndex defined' );
+});
+
+test( 'firstTabIndex', function() {
+ expect(2);
+
+ var testEnvironment =
+'<form>' +
+ '<input tabindex="7" />' +
+ '<input tabindex="9" />' +
+ '<textarea tabindex="2">Foobar</textarea>' +
+ '<textarea tabindex="5">Foobar</textarea>' +
+'</form>';
+
+ var $testA = $( '<div>' ).html( testEnvironment ).appendTo( 'body' );
+ strictEqual( $testA.firstTabIndex(), 2, 'First tabindex should be 2 within this context.' );
+
+ var $testB = $( '<div>' );
+ strictEqual( $testB.firstTabIndex(), null, 'Return null if none available.' );
+
+ // Clean up
+ $testA.add( $testB ).remove();
+});
+
+test( 'lastTabIndex', function() {
+ expect(2);
+
+ var testEnvironment =
+'<form>' +
+ '<input tabindex="7" />' +
+ '<input tabindex="9" />' +
+ '<textarea tabindex="2">Foobar</textarea>' +
+ '<textarea tabindex="5">Foobar</textarea>' +
+'</form>';
+
+ var $testA = $( '<div>' ).html( testEnvironment ).appendTo( 'body' );
+ strictEqual( $testA.lastTabIndex(), 9, 'Last tabindex should be 9 within this context.' );
+
+ var $testB = $( '<div>' );
+ strictEqual( $testB.lastTabIndex(), null, 'Return null if none available.' );
+
+ // Clean up
+ $testA.add( $testB ).remove();
+});
diff --git a/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js b/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
new file mode 100644
index 00000000..f47b7f40
--- /dev/null
+++ b/tests/qunit/suites/resources/jquery/jquery.tablesorter.test.js
@@ -0,0 +1,475 @@
+(function() {
+
+module( 'jquery.tablesorter.test.js' );
+
+// setup hack
+mw.config.set('wgMonthNames', window.wgMonthNames = ['', 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']);
+mw.config.set('wgMonthNamesShort', window.wgMonthNamesShort = ['', 'Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']);
+mw.config.set('wgDefaultDateFormat', window.wgDefaultDateFormat = 'dmy');
+
+test( '-- Initial check', function() {
+ expect(1);
+ ok( $.tablesorter, '$.tablesorter defined' );
+});
+
+/**
+ * Create an HTML table from an array of row arrays containing text strings.
+ * First row will be header row. No fancy rowspan/colspan stuff.
+ *
+ * @param {String[]} header
+ * @param {String[][]} data
+ * @return jQuery
+ */
+var tableCreate = function( header, data ) {
+ var $table = $('<table class="sortable"><thead></thead><tbody></tbody></table>'),
+ $thead = $table.find('thead'),
+ $tbody = $table.find('tbody');
+ var $tr = $('<tr>');
+ $.each(header, function(i, str) {
+ var $th = $('<th>');
+ $th.text(str).appendTo($tr);
+ });
+ $tr.appendTo($thead);
+
+ for (var i = 0; i < data.length; i++) {
+ $tr = $('<tr>');
+ $.each(data[i], function(j, str) {
+ var $td = $('<td>');
+ $td.text(str).appendTo($tr);
+ });
+ $tr.appendTo($tbody);
+ }
+ return $table;
+};
+
+/**
+ * Extract text from table.
+ *
+ * @param {jQuery} $table
+ * @return String[][]
+ */
+var tableExtract = function( $table ) {
+ var data = [];
+ $table.find('tbody').find('tr').each(function(i, tr) {
+ var row = [];
+ $(tr).find('td,th').each(function(i, td) {
+ row.push($(td).text());
+ });
+ data.push(row);
+ });
+ return data;
+};
+
+/**
+ * Run a table test by building a table with the given data,
+ * running some callback on it, then checking the results.
+ *
+ * @param {String} msg text to pass on to qunit for the comparison
+ * @param {String[]} header cols to make the table
+ * @param {String[][]} data rows/cols to make the table
+ * @param {String[][]} expected rows/cols to compare against at end
+ * @param {function($table)} callback something to do with the table before we compare
+ */
+var tableTest = function( msg, header, data, expected, callback ) {
+ test( msg, function() {
+ expect(1);
+
+ var $table = tableCreate( header, data );
+ //$('body').append($table);
+
+ // Give caller a chance to set up sorting and manipulate the table.
+ callback( $table );
+
+ // Table sorting is done synchronously; if it ever needs to change back
+ // to asynchronous, we'll need a timeout or a callback here.
+ var extracted = tableExtract( $table );
+ deepEqual( extracted, expected, msg );
+ });
+};
+
+var reversed = function(arr) {
+ var arr2 = arr.slice(0);
+ arr2.reverse();
+ return arr2;
+};
+
+// Sample data set: some planets!
+var header = ['Planet', 'Radius (km)'],
+ mercury = ['Mercury', '2439.7'],
+ venus = ['Venus', '6051.8'],
+ earth = ['Earth', '6371.0'],
+ mars = ['Mars', '3390.0'],
+ jupiter = ['Jupiter', '69911'],
+ saturn = ['Saturn', '58232'];
+
+// Initial data set
+var planets = [mercury, venus, earth, mars, jupiter, saturn];
+var ascendingName = [earth, jupiter, mars, mercury, saturn, venus];
+var ascendingRadius = [mercury, mars, venus, earth, saturn, jupiter];
+
+tableTest(
+ 'Basic planet table: ascending by name',
+ header,
+ planets,
+ ascendingName,
+ function( $table ) {
+ $table.tablesorter();
+ $table.find('.headerSort:eq(0)').click();
+ }
+);
+tableTest(
+ 'Basic planet table: ascending by name a second time',
+ header,
+ planets,
+ ascendingName,
+ function( $table ) {
+ $table.tablesorter();
+ $table.find('.headerSort:eq(0)').click();
+ }
+);
+tableTest(
+ 'Basic planet table: descending by name',
+ header,
+ planets,
+ reversed(ascendingName),
+ function( $table ) {
+ $table.tablesorter();
+ $table.find('.headerSort:eq(0)').click().click();
+ }
+);
+tableTest(
+ 'Basic planet table: ascending radius',
+ header,
+ planets,
+ ascendingRadius,
+ function( $table ) {
+ $table.tablesorter();
+ $table.find('.headerSort:eq(1)').click();
+ }
+);
+tableTest(
+ 'Basic planet table: descending radius',
+ header,
+ planets,
+ reversed(ascendingRadius),
+ function( $table ) {
+ $table.tablesorter();
+ $table.find('.headerSort:eq(1)').click().click();
+ }
+);
+
+
+// Regression tests!
+tableTest(
+ 'Bug 28775: German-style short numeric dates',
+ ['Date'],
+ [
+ // German-style dates are day-month-year
+ ['11.11.2011'],
+ ['01.11.2011'],
+ ['02.10.2011'],
+ ['03.08.2011'],
+ ['09.11.2011']
+ ],
+ [
+ // Sorted by ascending date
+ ['03.08.2011'],
+ ['02.10.2011'],
+ ['01.11.2011'],
+ ['09.11.2011'],
+ ['11.11.2011']
+ ],
+ function( $table ) {
+ // @fixme reset it at end or change module to allow us to override it
+ mw.config.set('wgDefaultDateFormat', window.wgDefaultDateFormat = 'dmy');
+ $table.tablesorter();
+ $table.find('.headerSort:eq(0)').click();
+ }
+);
+tableTest(
+ 'Bug 28775: American-style short numeric dates',
+ ['Date'],
+ [
+ // American-style dates are month-day-year
+ ['11.11.2011'],
+ ['01.11.2011'],
+ ['02.10.2011'],
+ ['03.08.2011'],
+ ['09.11.2011']
+ ],
+ [
+ // Sorted by ascending date
+ ['01.11.2011'],
+ ['02.10.2011'],
+ ['03.08.2011'],
+ ['09.11.2011'],
+ ['11.11.2011']
+ ],
+ function( $table ) {
+ // @fixme reset it at end or change module to allow us to override it
+ mw.config.set('wgDefaultDateFormat', window.wgDefaultDateFormat = 'mdy');
+ $table.tablesorter();
+ $table.find('.headerSort:eq(0)').click();
+ }
+);
+
+var ipv4 = [
+ // Some randomly generated fake IPs
+ ['45.238.27.109'],
+ ['44.172.9.22'],
+ ['247.240.82.209'],
+ ['204.204.132.158'],
+ ['170.38.91.162'],
+ ['197.219.164.9'],
+ ['45.68.154.72'],
+ ['182.195.149.80']
+];
+var ipv4Sorted = [
+ // Sort order should go octet by octet
+ ['44.172.9.22'],
+ ['45.68.154.72'],
+ ['45.238.27.109'],
+ ['170.38.91.162'],
+ ['182.195.149.80'],
+ ['197.219.164.9'],
+ ['204.204.132.158'],
+ ['247.240.82.209']
+];
+tableTest(
+ 'Bug 17141: IPv4 address sorting',
+ ['IP'],
+ ipv4,
+ ipv4Sorted,
+ function( $table ) {
+ $table.tablesorter();
+ $table.find('.headerSort:eq(0)').click();
+ }
+);
+tableTest(
+ 'Bug 17141: IPv4 address sorting (reverse)',
+ ['IP'],
+ ipv4,
+ reversed(ipv4Sorted),
+ function( $table ) {
+ $table.tablesorter();
+ $table.find('.headerSort:eq(0)').click().click();
+ }
+);
+
+var umlautWords = [
+ // Some words with Umlauts
+ ['Günther'],
+ ['Peter'],
+ ['Björn'],
+ ['Bjorn'],
+ ['Apfel'],
+ ['Äpfel'],
+ ['Strasse'],
+ ['Sträßschen']
+];
+
+var umlautWordsSorted = [
+ // Some words with Umlauts
+ ['Äpfel'],
+ ['Apfel'],
+ ['Björn'],
+ ['Bjorn'],
+ ['Günther'],
+ ['Peter'],
+ ['Sträßschen'],
+ ['Strasse']
+];
+
+tableTest(
+ 'Accented Characters with custom collation',
+ ['Name'],
+ umlautWords,
+ umlautWordsSorted,
+ function( $table ) {
+ mw.config.set('tableSorterCollation', {'ä':'ae', 'ö' : 'oe', 'ß': 'ss', 'ü':'ue'});
+ $table.tablesorter();
+ $table.find('.headerSort:eq(0)').click();
+ mw.config.set('tableSorterCollation', {});
+ }
+);
+
+var planetsRowspan =[["Earth","6051.8"], jupiter, ["Mars","6051.8"], mercury, saturn, venus];
+var planetsRowspanII =[jupiter, mercury, saturn, ['Venus', '6371.0'], venus, ['Venus', '3390.0']];
+
+tableTest(
+ 'Basic planet table: Same value for multiple rows via rowspan',
+ header,
+ planets,
+ planetsRowspan,
+ function( $table ) {
+ //Quick&Dirty mod
+ $table.find('tr:eq(3) td:eq(1), tr:eq(4) td:eq(1)').remove();
+ $table.find('tr:eq(2) td:eq(1)').attr('rowspan', '3');
+ $table.tablesorter();
+ $table.find('.headerSort:eq(0)').click();
+ }
+);
+tableTest(
+ 'Basic planet table: Same value for multiple rows via rowspan II',
+ header,
+ planets,
+ planetsRowspanII,
+ function( $table ) {
+ //Quick&Dirty mod
+ $table.find('tr:eq(3) td:eq(0), tr:eq(4) td:eq(0)').remove();
+ $table.find('tr:eq(2) td:eq(0)').attr('rowspan', '3');
+ $table.tablesorter();
+ $table.find('.headerSort:eq(0)').click();
+ }
+);
+
+var complexMDYDates = [
+ // Some words with Umlauts
+ ['January, 19 2010'],
+ ['April 21 1991'],
+ ['04 22 1991'],
+ ['5.12.1990'],
+ ['December 12 \'10']
+];
+
+var complexMDYSorted = [
+ ["5.12.1990"],
+ ["April 21 1991"],
+ ["04 22 1991"],
+ ["January, 19 2010"],
+ ["December 12 '10"]
+];
+
+tableTest(
+ 'Complex date parsing I',
+ ['date'],
+ complexMDYDates,
+ complexMDYSorted,
+ function( $table ) {
+ mw.config.set('wgDefaultDateFormat', window.wgDefaultDateFormat = 'mdy');
+ $table.tablesorter();
+ $table.find('.headerSort:eq(0)').click();
+ }
+);
+
+var ascendingNameLegacy = ascendingName.slice(0);
+ascendingNameLegacy[4] = ascendingNameLegacy[5];
+ascendingNameLegacy.pop();
+
+tableTest(
+ 'Legacy compat with .sortbottom',
+ header,
+ planets,
+ ascendingNameLegacy,
+ function( $table ) {
+ $table.find('tr:last').addClass('sortbottom');
+ $table.tablesorter();
+ $table.find('.headerSort:eq(0)').click();
+ }
+);
+
+/** FIXME: the diff output is not very readeable. */
+test( 'bug 32047 - caption must be before thead', function() {
+ var $table;
+ $table = $(
+ '<table class="sortable">' +
+ '<caption>CAPTION</caption>' +
+ '<tr><th>THEAD</th></tr>' +
+ '<tr><td>A</td></tr>' +
+ '<tr><td>B</td></tr>' +
+ '<tr class="sortbottom"><td>TFOOT</td></tr>' +
+ '</table>'
+ );
+ $table.tablesorter();
+
+ equals(
+ $table.children( ).get( 0 ).nodeName,
+ 'CAPTION',
+ 'First element after <thead> must be <caption> (bug 32047)'
+ );
+});
+
+test( 'data-sort-value attribute, when available, should override sorting position', function() {
+ var $table, data;
+
+ // Simple example, one without data-sort-value which should be sorted at it's text.
+ $table = $(
+ '<table class="sortable"><thead><tr><th>Data</th></tr></thead>' +
+ '<tbody>' +
+ '<tr><td>Cheetah</td></tr>' +
+ '<tr><td data-sort-value="Apple">Bird</td></tr>' +
+ '<tr><td data-sort-value="Bananna">Ferret</td></tr>' +
+ '<tr><td data-sort-value="Drupe">Elephant</td></tr>' +
+ '<tr><td data-sort-value="Cherry">Dolphin</td></tr>' +
+ '</tbody></table>'
+ );
+ $table.tablesorter().find( '.headerSort:eq(0)' ).click();
+
+ data = [];
+ $table.find( 'tbody > tr' ).each( function( i, tr ) {
+ $( tr ).find( 'td' ).each( function( i, td ) {
+ data.push( { data: $( td ).data( 'sort-value' ), text: $( td ).text() } );
+ });
+ });
+
+ deepEqual( data, [
+ {
+ "data": "Apple",
+ "text": "Bird"
+ }, {
+ "data": "Bananna",
+ "text": "Ferret"
+ }, {
+ "data": undefined,
+ "text": "Cheetah"
+ }, {
+ "data": "Cherry",
+ "text": "Dolphin"
+ }, {
+ "data": "Drupe",
+ "text": "Elephant"
+ }
+ ] );
+
+ // Another example
+ $table = $(
+ '<table class="sortable"><thead><tr><th>Data</th></tr></thead>' +
+ '<tbody>' +
+ '<tr><td>D</td></tr>' +
+ '<tr><td data-sort-value="E">A</td></tr>' +
+ '<tr><td>B</td></tr>' +
+ '<tr><td>G</td></tr>' +
+ '<tr><td data-sort-value="F">C</td></tr>' +
+ '</tbody></table>'
+ );
+ $table.tablesorter().find( '.headerSort:eq(0)' ).click();
+
+ data = [];
+ $table.find( 'tbody > tr' ).each( function( i, tr ) {
+ $( tr ).find( 'td' ).each( function( i, td ) {
+ data.push( { data: $( td ).data( 'sort-value' ), text: $( td ).text() } );
+ });
+ });
+
+ deepEqual( data, [
+ {
+ "data": undefined,
+ "text": "B"
+ }, {
+ "data": undefined,
+ "text": "D"
+ }, {
+ "data": "E",
+ "text": "A"
+ }, {
+ "data": "F",
+ "text": "C"
+ }, {
+ "data": undefined,
+ "text": "G"
+ }
+ ] );
+
+});
+
+})();
diff --git a/tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.js b/tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.js
new file mode 100644
index 00000000..bcc9b96b
--- /dev/null
+++ b/tests/qunit/suites/resources/mediawiki.special/mediawiki.special.recentchanges.js
@@ -0,0 +1,71 @@
+module( 'mediawiki.special.recentchanges.js' );
+
+test( '-- Initial check', function() {
+ expect( 2 );
+ ok( mw.special.recentchanges.init,
+ 'mw.special.recentchanges.init defined'
+ );
+ ok( mw.special.recentchanges.updateCheckboxes,
+ 'mw.special.recentchanges.updateCheckboxes defined'
+ );
+ // TODO: verify checkboxes == [ 'nsassociated', 'nsinvert' ]
+});
+
+test( '"all" namespace disable checkboxes', function() {
+
+ // from Special:Recentchanges
+ var select =
+ '<select id="namespace" name="namespace" class="namespaceselector">'
+ + '<option value="" selected="selected">all</option>'
+ + '<option value="0">(Main)</option>'
+ + '<option value="1">Talk</option>'
+ + '<option value="2">User</option>'
+ + '<option value="3">User talk</option>'
+ + '<option value="4">ProjectName</option>'
+ + '<option value="5">ProjectName talk</option>'
+ + '</select>'
+ + '<input name="invert" type="checkbox" value="1" id="nsinvert" title="no title" />'
+ + '<label for="nsinvert" title="no title">Invert selection</label>'
+ + '<input name="associated" type="checkbox" value="1" id="nsassociated" title="no title" />'
+ + '<label for="nsassociated" title="no title">Associated namespace</label>'
+ + '<input type="submit" value="Go" />'
+ + '<input type="hidden" value="Special:RecentChanges" name="title" />'
+ ;
+
+ var $env = $( '<div>' ).html( select ).appendTo( 'body' );
+
+ // TODO abstract the double strictEquals
+
+ // At first checkboxes are enabled
+ strictEqual( $( '#nsinvert' ).attr( 'disabled' ), undefined );
+ strictEqual( $( '#nsassociated' ).attr( 'disabled' ), undefined );
+
+ // Initiate the recentchanges module
+ mw.special.recentchanges.init();
+
+ // By default
+ strictEqual( $( '#nsinvert' ).attr( 'disabled' ), 'disabled' );
+ strictEqual( $( '#nsassociated' ).attr( 'disabled' ), 'disabled' );
+
+ // select second option...
+ var $options = $( '#namespace' ).find( 'option' );
+ $options.eq(0).removeAttr( 'selected' );
+ $options.eq(1).attr( 'selected', 'selected' );
+ $( '#namespace' ).change();
+
+ // ... and checkboxes should be enabled again
+ strictEqual( $( '#nsinvert' ).attr( 'disabled' ), undefined );
+ strictEqual( $( '#nsassociated' ).attr( 'disabled' ), undefined );
+
+ // select first option ( 'all' namespace)...
+ $options.eq(1).removeAttr( 'selected' );
+ $options.eq(0).attr( 'selected', 'selected' );;
+ $( '#namespace' ).change();
+
+ // ... and checkboxes should now be disabled
+ strictEqual( $( '#nsinvert' ).attr( 'disabled' ), 'disabled' );
+ strictEqual( $( '#nsassociated' ).attr( 'disabled' ), 'disabled' );
+
+ // DOM cleanup
+ $env.remove();
+});
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.js b/tests/qunit/suites/resources/mediawiki/mediawiki.js
new file mode 100644
index 00000000..4beed881
--- /dev/null
+++ b/tests/qunit/suites/resources/mediawiki/mediawiki.js
@@ -0,0 +1,232 @@
+module( 'mediawiki.js' );
+
+test( '-- Initial check', function() {
+ expect(8);
+
+ ok( window.jQuery, 'jQuery defined' );
+ ok( window.$, '$j defined' );
+ ok( window.$j, '$j defined' );
+ strictEqual( window.$, window.jQuery, '$ alias to jQuery' );
+ strictEqual( window.$j, window.jQuery, '$j alias to jQuery' );
+
+ ok( window.mediaWiki, 'mediaWiki defined' );
+ ok( window.mw, 'mw defined' );
+ strictEqual( window.mw, window.mediaWiki, 'mw alias to mediaWiki' );
+});
+
+test( 'mw.Map', function() {
+ expect(17);
+
+ ok( mw.Map, 'mw.Map defined' );
+
+ var conf = new mw.Map(),
+ // Dummy variables
+ funky = function() {},
+ arry = [],
+ nummy = 7;
+
+ // Tests for input validation
+ strictEqual( conf.get( 'inexistantKey' ), null, 'Map.get returns null if selection was a string and the key was not found' );
+ strictEqual( conf.set( 'myKey', 'myValue' ), true, 'Map.set returns boolean true if a value was set for a valid key string' );
+ strictEqual( conf.set( funky, 'Funky' ), false, 'Map.set returns boolean false if key was invalid (Function)' );
+ strictEqual( conf.set( arry, 'Arry' ), false, 'Map.set returns boolean false if key was invalid (Array)' );
+ strictEqual( conf.set( nummy, 'Nummy' ), false, 'Map.set returns boolean false if key was invalid (Number)' );
+ equal( conf.get( 'myKey' ), 'myValue', 'Map.get returns a single value value correctly' );
+ strictEqual( conf.get( nummy ), null, 'Map.get ruturns null if selection was invalid (Number)' );
+ strictEqual( conf.get( funky ), null, 'Map.get ruturns null if selection was invalid (Function)' );
+
+ // Multiple values at once
+ var someValues = {
+ 'foo': 'bar',
+ 'lorem': 'ipsum',
+ 'MediaWiki': true
+ };
+ strictEqual( conf.set( someValues ), true, 'Map.set returns boolean true if multiple values were set by passing an object' );
+ deepEqual( conf.get( ['foo', 'lorem'] ), {
+ 'foo': 'bar',
+ 'lorem': 'ipsum'
+ }, 'Map.get returns multiple values correctly as an object' );
+
+ deepEqual( conf.get( ['foo', 'notExist'] ), {
+ 'foo': 'bar',
+ 'notExist': null
+ }, 'Map.get return includes keys that were not found as null values' );
+
+ strictEqual( conf.exists( 'foo' ), true, 'Map.exists returns boolean true if a key exists' );
+ strictEqual( conf.exists( 'notExist' ), false, 'Map.exists returns boolean false if a key does not exists' );
+
+ // Interacting with globals and accessing the values object
+ strictEqual( conf.get(), conf.values, 'Map.get returns the entire values object by reference (if called without arguments)' );
+
+ conf.set( 'globalMapChecker', 'Hi' );
+
+ ok( false === 'globalMapChecker' in window, 'new mw.Map did not store its values in the global window object by default' );
+
+ var globalConf = new mw.Map( true );
+ globalConf.set( 'anotherGlobalMapChecker', 'Hello' );
+
+ ok( 'anotherGlobalMapChecker' in window, 'new mw.Map( true ) did store its values in the global window object' );
+
+ // Whitelist this global variable for QUnit's 'noglobal' mode
+ if ( QUnit.config.noglobals ) {
+ QUnit.config.pollution.push( 'anotherGlobalMapChecker' );
+ }
+});
+
+test( 'mw.config', function() {
+ expect(1);
+
+ ok( mw.config instanceof mw.Map, 'mw.config instance of mw.Map' );
+});
+
+test( 'mw.message & mw.messages', function() {
+ expect(17);
+
+ ok( mw.messages, 'messages defined' );
+ ok( mw.messages instanceof mw.Map, 'mw.messages instance of mw.Map' );
+ ok( mw.messages.set( 'hello', 'Hello <b>awesome</b> world' ), 'mw.messages.set: Register' );
+
+ var hello = mw.message( 'hello' );
+
+ equal( hello.format, 'parse', 'Message property "format" defaults to "parse"' );
+ strictEqual( hello.map, mw.messages, 'Message property "map" defaults to the global instance in mw.messages' );
+ equal( hello.key, 'hello', 'Message property "key" (currect key)' );
+ deepEqual( hello.parameters, [], 'Message property "parameters" defaults to an empty array' );
+
+ // Todo
+ ok( hello.params, 'Message prototype "params"' );
+
+ hello.format = 'plain';
+ equal( hello.toString(), 'Hello <b>awesome</b> world', 'Message.toString returns the message as a string with the current "format"' );
+
+ equal( hello.escaped(), 'Hello &lt;b&gt;awesome&lt;/b&gt; world', 'Message.escaped returns the escaped message' );
+ equal( hello.format, 'escaped', 'Message.escaped correctly updated the "format" property' );
+
+ hello.parse();
+ equal( hello.format, 'parse', 'Message.parse correctly updated the "format" property' );
+
+ hello.plain();
+ equal( hello.format, 'plain', 'Message.plain correctly updated the "format" property' );
+
+ strictEqual( hello.exists(), true, 'Message.exists returns true for existing messages' );
+
+ var goodbye = mw.message( 'goodbye' );
+ strictEqual( goodbye.exists(), false, 'Message.exists returns false for inexisting messages' );
+
+ equal( goodbye.plain(), '<goodbye>', 'Message.toString returns plain <key> if format is "plain" and key does not exist' );
+ // bug 30684
+ equal( goodbye.escaped(), '&lt;goodbye&gt;', 'Message.toString returns properly escaped &lt;key&gt; if format is "escaped" and key does not exist' );
+});
+
+test( 'mw.msg', function() {
+ expect(3);
+
+ ok( mw.messages.set( 'hello', 'Hello <b>awesome</b> world' ), 'mw.messages.set: Register' );
+
+ equal( mw.msg( 'hello' ), 'Hello <b>awesome</b> world', 'Gets message with default options (existing message)' );
+ equal( mw.msg( 'goodbye' ), '<goodbye>', 'Gets message with default options (inexisting message)' );
+});
+
+test( 'mw.loader', function() {
+ expect(5);
+
+ // Regular expression to extract the path for the QUnit tests
+ // Takes into account that tests could be run from a file:// URL
+ // by excluding the 'index.html' part from the URL
+ var rePath = /(?:[^#\?](?!index.html))*\/?/;
+
+ // Four assertions to test the above regular expression:
+ equal(
+ rePath.exec( 'http://path/to/tests/?foobar' )[0],
+ "http://path/to/tests/",
+ "Extracting path from http URL with query"
+ );
+ equal(
+ rePath.exec( 'http://path/to/tests/#frag' )[0],
+ "http://path/to/tests/",
+ "Extracting path from http URL with fragment"
+ );
+ equal(
+ rePath.exec( 'file://path/to/tests/index.html?foobar' )[0],
+ "file://path/to/tests/",
+ "Extracting path from local URL (file://) with query"
+ );
+ equal(
+ rePath.exec( 'file://path/to/tests/index.html#frag' )[0],
+ "file://path/to/tests/",
+ "Extracting path from local URL (file://) with fragment"
+ );
+
+ // Asynchronous ahead
+ stop(5000);
+
+ // Extract path
+ var tests_path = rePath.exec( location.href );
+
+ mw.loader.implement( 'is.awesome', [QUnit.fixurl( tests_path + 'data/defineTestCallback.js')], {}, {} );
+
+ mw.loader.using( 'is.awesome', function() {
+
+ // /sample/awesome.js declares the "mw.loader.testCallback" function
+ // which contains a call to start() and ok()
+ mw.loader.testCallback();
+ mw.loader.testCallback = undefined;
+
+ }, function() {
+ start();
+ ok( false, 'Error callback fired while implementing "is.awesome" module' );
+ });
+
+});
+
+test( 'mw.loader.bug29107' , function() {
+ expect(2);
+
+ // Message doesn't exist already
+ ok( !mw.messages.exists( 'bug29107' ) );
+
+ // Async! Include a timeout, as failure in this test leads to neither the
+ // success nor failure callbacks getting called.
+ stop(5000);
+
+ mw.loader.implement( 'bug29107.messages-only', [], {}, {'bug29107': 'loaded'} );
+ mw.loader.using( 'bug29107.messages-only', function() {
+ start();
+ ok( mw.messages.exists( 'bug29107' ), 'Bug 29107: messages-only module should implement ok' );
+ }, function() {
+ start();
+ ok( false, 'Error callback fired while implementing "bug29107.messages-only" module' );
+ });
+});
+
+test( 'mw.html', function() {
+ expect(7);
+
+ raises( function(){
+ mw.html.escape();
+ }, TypeError, 'html.escape throws a TypeError if argument given is not a string' );
+
+ equal( mw.html.escape( '<mw awesome="awesome" value=\'test\' />' ),
+ '&lt;mw awesome=&quot;awesome&quot; value=&#039;test&#039; /&gt;', 'html.escape escapes html snippet' );
+
+ equal( mw.html.element(),
+ '<undefined/>', 'html.element Always return a valid html string (even without arguments)' );
+
+ equal( mw.html.element( 'div' ), '<div/>', 'html.element DIV (simple)' );
+
+ equal( mw.html.element( 'div',
+ { id: 'foobar' } ),
+ '<div id="foobar"/>',
+ 'html.element DIV (attribs)' );
+
+ equal( mw.html.element( 'div',
+ null, 'a' ),
+ '<div>a</div>',
+ 'html.element DIV (content)' );
+
+ equal( mw.html.element( 'a',
+ { href: 'http://mediawiki.org/w/index.php?title=RL&action=history' }, 'a' ),
+ '<a href="http://mediawiki.org/w/index.php?title=RL&amp;action=history">a</a>',
+ 'html.element DIV (attribs + content)' );
+
+});
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js b/tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js
new file mode 100644
index 00000000..52cd32c8
--- /dev/null
+++ b/tests/qunit/suites/resources/mediawiki/mediawiki.jscompat.test.js
@@ -0,0 +1,35 @@
+/* Some misc JavaScript compatibility tests, just to make sure the environments we run in are consistent */
+
+module( 'mediawiki.jscompat' );
+
+test( 'Variable with Unicode letter in name', function() {
+ expect(3);
+ var orig = "some token";
+ var Åablono = orig;
+ deepEqual( Åablono, orig, 'Åablono' );
+ deepEqual( \u015dablono, orig, '\\u015dablono' );
+ deepEqual( \u015Dablono, orig, '\\u015Dablono' );
+});
+
+/*
+// Not that we need this. ;)
+// This fails on IE 6-8
+// Works on IE 9, Firefox 6, Chrome 14
+test( 'Keyword workaround: "if" as variable name using Unicode escapes', function() {
+ var orig = "another token";
+ \u0069\u0066 = orig;
+ deepEqual( \u0069\u0066, orig, '\\u0069\\u0066' );
+});
+*/
+
+/*
+// Not that we need this. ;)
+// This fails on IE 6-9
+// Works on Firefox 6, Chrome 14
+test( 'Keyword workaround: "if" as member variable name using Unicode escapes', function() {
+ var orig = "another token";
+ var foo = {};
+ foo.\u0069\u0066 = orig;
+ deepEqual( foo.\u0069\u0066, orig, 'foo.\\u0069\\u0066' );
+});
+*/
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.user.js b/tests/qunit/suites/resources/mediawiki/mediawiki.user.js
new file mode 100644
index 00000000..d5c6baad
--- /dev/null
+++ b/tests/qunit/suites/resources/mediawiki/mediawiki.user.js
@@ -0,0 +1,29 @@
+module( 'mediawiki.user.js' );
+
+test( '-- Initial check', function() {
+ expect(1);
+
+ ok( mw.user, 'mw.user defined' );
+});
+
+
+test( 'options', function() {
+ expect(1);
+
+ ok( mw.user.options instanceof mw.Map, 'options instance of mw.Map' );
+});
+
+test( 'User login status', function() {
+ expect(5);
+
+ strictEqual( mw.user.name(), null, 'user.name should return null when anonymous' );
+ ok( mw.user.anonymous(), 'user.anonymous should reutrn true when anonymous' );
+
+ // Not part of startUp module
+ mw.config.set( 'wgUserName', 'John' );
+
+ equal( mw.user.name(), 'John', 'user.name returns username when logged-in' );
+ ok( !mw.user.anonymous(), 'user.anonymous returns false when logged-in' );
+
+ equal( mw.user.id(), 'John', 'user.id Returns username when logged-in' );
+});
diff --git a/tests/qunit/suites/resources/mediawiki/mediawiki.util.js b/tests/qunit/suites/resources/mediawiki/mediawiki.util.js
new file mode 100644
index 00000000..9c05d9b2
--- /dev/null
+++ b/tests/qunit/suites/resources/mediawiki/mediawiki.util.js
@@ -0,0 +1,307 @@
+module( 'mediawiki.util.js' );
+
+test( '-- Initial check', function() {
+ expect(1);
+
+ ok( mw.util, 'mw.util defined' );
+});
+
+test( 'rawurlencode', function() {
+ expect(1);
+
+ equal( mw.util.rawurlencode( 'Test:A & B/Here' ), 'Test%3AA%20%26%20B%2FHere' );
+});
+
+test( 'wikiUrlencode', function() {
+ expect(1);
+
+ equal( mw.util.wikiUrlencode( 'Test:A & B/Here' ), 'Test:A_%26_B/Here' );
+});
+
+test( 'wikiGetlink', function() {
+ expect(3);
+
+ // Not part of startUp module
+ mw.config.set( 'wgArticlePath', '/wiki/$1' );
+ mw.config.set( 'wgPageName', 'Foobar' );
+
+ var hrefA = mw.util.wikiGetlink( 'Sandbox' );
+ equal( hrefA, '/wiki/Sandbox', 'Simple title; Get link for "Sandbox"' );
+
+ var hrefB = mw.util.wikiGetlink( 'Foo:Sandbox ? 5+5=10 ! (test)/subpage' );
+ equal( hrefB, '/wiki/Foo:Sandbox_%3F_5%2B5%3D10_%21_%28test%29/subpage',
+ 'Advanced title; Get link for "Foo:Sandbox ? 5+5=10 ! (test)/subpage"' );
+
+ var hrefC = mw.util.wikiGetlink();
+ equal( hrefC, '/wiki/Foobar', 'Default title; Get link for current page ("Foobar")' );
+});
+
+test( 'wikiScript', function() {
+ expect(2);
+
+ mw.config.set({
+ 'wgScript': '/w/index.php',
+ 'wgScriptPath': '/w',
+ 'wgScriptExtension': '.php'
+ });
+
+ equal( mw.util.wikiScript(), mw.config.get( 'wgScript' ), 'Defaults to index.php and is equal to wgScript' );
+ equal( mw.util.wikiScript( 'api' ), '/w/api.php', 'API path' );
+
+});
+
+test( 'addCSS', function() {
+ expect(3);
+
+ var $testEl = $( '<div>' ).attr( 'id', 'mw-addcsstest' ).appendTo( 'body' );
+
+ var style = mw.util.addCSS( '#mw-addcsstest { visibility: hidden; }' );
+ equal( typeof style, 'object', 'addCSS returned an object' );
+ strictEqual( style.disabled, false, 'property "disabled" is available and set to false' );
+
+ equal( $testEl.css( 'visibility' ), 'hidden', 'Added style properties are in effect' );
+
+ // Clean up
+ $( style.ownerNode )
+ .add( $testEl )
+ .remove();
+});
+
+test( 'toggleToc', function() {
+ expect(4);
+
+ strictEqual( mw.util.toggleToc(), null, 'Return null if there is no table of contents on the page.' );
+
+ var tocHtml =
+ '<table id="toc" class="toc"><tr><td>' +
+ '<div id="toctitle">' +
+ '<h2>Contents</h2>' +
+ '<span class="toctoggle">&nbsp;[<a href="#" class="internal" id="togglelink">Hide</a>&nbsp;]</span>' +
+ '</div>' +
+ '<ul><li></li></ul>' +
+ '</td></tr></table>',
+ $toc = $(tocHtml).appendTo( 'body' ),
+ $toggleLink = $( '#togglelink' );
+
+ strictEqual( $toggleLink.length, 1, 'Toggle link is appended to the page.' );
+
+ // Toggle animation is asynchronous
+ // QUnit should not finish this test() untill they are all done
+ stop();
+
+ var actionC = function() {
+ start();
+
+ // Clean up
+ $toc.remove();
+ };
+ var actionB = function() {
+ start(); stop();
+ strictEqual( mw.util.toggleToc( $toggleLink, actionC ), true, 'Return boolean true if the TOC is now visible.' );
+ };
+ var actionA = function() {
+ strictEqual( mw.util.toggleToc( $toggleLink, actionB ), false, 'Return boolean false if the TOC is now hidden.' );
+ };
+
+ actionA();
+});
+
+test( 'getParamValue', function() {
+ expect(5);
+
+ var url1 = 'http://mediawiki.org/?foo=wrong&foo=right#&foo=bad';
+
+ equal( mw.util.getParamValue( 'foo', url1 ), 'right', 'Use latest one, ignore hash' );
+ strictEqual( mw.util.getParamValue( 'bar', url1 ), null, 'Return null when not found' );
+
+ var url2 = 'http://mediawiki.org/#&foo=bad';
+ strictEqual( mw.util.getParamValue( 'foo', url2 ), null, 'Ignore hash if param is not in querystring but in hash (bug 27427)' );
+
+ var url3 = 'example.com?' + $.param({ 'TEST': 'a b+c' });
+ strictEqual( mw.util.getParamValue( 'TEST', url3 ), 'a b+c', 'Bug 30441: getParamValue must understand "+" encoding of space' );
+
+ var url4 = 'example.com?' + $.param({ 'TEST': 'a b+c d' }); // check for sloppy code from r95332 :)
+ strictEqual( mw.util.getParamValue( 'TEST', url4 ), 'a b+c d', 'Bug 30441: getParamValue must understand "+" encoding of space (multiple spaces)' );
+});
+
+test( 'tooltipAccessKey', function() {
+ expect(3);
+
+ equal( typeof mw.util.tooltipAccessKeyPrefix, 'string', 'mw.util.tooltipAccessKeyPrefix must be a string' );
+ ok( mw.util.tooltipAccessKeyRegexp instanceof RegExp, 'mw.util.tooltipAccessKeyRegexp instance of RegExp' );
+ ok( mw.util.updateTooltipAccessKeys, 'mw.util.updateTooltipAccessKeys' );
+});
+
+test( '$content', function() {
+ expect(2);
+
+ ok( mw.util.$content instanceof jQuery, 'mw.util.$content instance of jQuery' );
+ strictEqual( mw.util.$content.length, 1, 'mw.util.$content must have length of 1' );
+});
+
+test( 'addPortletLink', function() {
+ expect(7);
+
+ var mwPanel = '<div id="mw-panel" class="noprint">\
+ <h5>Toolbox</h5>\
+ <div class="portlet" id="p-tb">\
+ <ul class="body"></ul>\
+ </div>\
+</div>',
+ vectorTabs = '<div id="p-views" class="vectorTabs">\
+ <h5>Views</h5>\
+ <ul></ul>\
+</div>',
+ $mwPanel = $(mwPanel).appendTo( 'body' ),
+ $vectorTabs = $(vectorTabs).appendTo( 'body' );
+
+ var tbRL = mw.util.addPortletLink( 'p-tb', 'http://mediawiki.org/wiki/ResourceLoader',
+ 'ResourceLoader', 't-rl', 'More info about ResourceLoader on MediaWiki.org ', 'l' );
+
+ ok( $.isDomElement( tbRL ), 'addPortletLink returns a valid DOM Element according to $.isDomElement' );
+
+ var tbMW = mw.util.addPortletLink( 'p-tb', 'http://mediawiki.org/',
+ 'MediaWiki.org', 't-mworg', 'Go to MediaWiki.org ', 'm', tbRL ),
+ $tbMW = $( tbMW );
+
+
+ equal( $tbMW.attr( 'id' ), 't-mworg', 'Link has correct ID set' );
+ equal( $tbMW.closest( '.portlet' ).attr( 'id' ), 'p-tb', 'Link was inserted within correct portlet' );
+ equal( $tbMW.next().attr( 'id' ), 't-rl', 'Link is in the correct position (by passing nextnode)' );
+
+ var tbRLDM = mw.util.addPortletLink( 'p-tb', 'http://mediawiki.org/wiki/RL/DM',
+ 'Default modules', 't-rldm', 'List of all default modules ', 'd', '#t-rl' );
+
+ equal( $( tbRLDM ).next().attr( 'id' ), 't-rl', 'Link is in the correct position (by passing CSS selector)' );
+
+ var caFoo = mw.util.addPortletLink( 'p-views', '#', 'Foo' );
+
+ strictEqual( $tbMW.find( 'span').length, 0, 'No <span> element should be added for porlets without vectorTabs class.' );
+ strictEqual( $( caFoo ).find( 'span').length, 1, 'A <span> element should be added for porlets with vectorTabs class.' );
+
+ // Clean up
+ $( [tbRL, tbMW, tbRLDM, caFoo] )
+ .add( $mwPanel )
+ .add( $vectorTabs )
+ .remove();
+});
+
+test( 'jsMessage', function() {
+ expect(1);
+
+ var a = mw.util.jsMessage( "MediaWiki is <b>Awesome</b>." );
+ ok( a, 'Basic checking of return value' );
+
+ // Clean up
+ $( '#mw-js-message' ).remove();
+});
+
+test( 'validateEmail', function() {
+ expect(6);
+
+ strictEqual( mw.util.validateEmail( "" ), null, 'Should return null for empty string ' );
+ strictEqual( mw.util.validateEmail( "user@localhost" ), true, 'Return true for a valid e-mail address' );
+
+ // testEmailWithCommasAreInvalids
+ strictEqual( mw.util.validateEmail( "user,foo@example.org" ), false, 'Emails with commas are invalid' );
+ strictEqual( mw.util.validateEmail( "userfoo@ex,ample.org" ), false, 'Emails with commas are invalid' );
+
+ // testEmailWithHyphens
+ strictEqual( mw.util.validateEmail( "user-foo@example.org" ), true, 'Emails may contain a hyphen' );
+ strictEqual( mw.util.validateEmail( "userfoo@ex-ample.org" ), true, 'Emails may contain a hyphen' );
+});
+
+test( 'isIPv6Address', function() {
+ expect(40);
+
+ // Shortcuts
+ var assertFalseIPv6 = function( addy, summary ) {
+ return strictEqual( mw.util.isIPv6Address( addy ), false, summary );
+ },
+ assertTrueIPv6 = function( addy, summary ) {
+ return strictEqual( mw.util.isIPv6Address( addy ), true, summary );
+ };
+
+ // Based on IPTest.php > testisIPv6
+ assertFalseIPv6( ':fc:100::', 'IPv6 starting with lone ":"' );
+ assertFalseIPv6( 'fc:100:::', 'IPv6 ending with a ":::"' );
+ assertFalseIPv6( 'fc:300', 'IPv6 with only 2 words' );
+ assertFalseIPv6( 'fc:100:300', 'IPv6 with only 3 words' );
+
+ $.each(
+ ['fc:100::',
+ 'fc:100:a::',
+ 'fc:100:a:d::',
+ 'fc:100:a:d:1::',
+ 'fc:100:a:d:1:e::',
+ 'fc:100:a:d:1:e:ac::'], function( i, addy ){
+ assertTrueIPv6( addy, addy + ' is a valid IP' );
+ });
+
+ assertFalseIPv6( 'fc:100:a:d:1:e:ac:0::', 'IPv6 with 8 words ending with "::"' );
+ assertFalseIPv6( 'fc:100:a:d:1:e:ac:0:1::', 'IPv6 with 9 words ending with "::"' );
+
+ assertFalseIPv6( ':::' );
+ assertFalseIPv6( '::0:', 'IPv6 ending in a lone ":"' );
+
+ assertTrueIPv6( '::', 'IPv6 zero address' );
+ $.each(
+ ['::0',
+ '::fc',
+ '::fc:100',
+ '::fc:100:a',
+ '::fc:100:a:d',
+ '::fc:100:a:d:1',
+ '::fc:100:a:d:1:e',
+ '::fc:100:a:d:1:e:ac',
+
+ 'fc:100:a:d:1:e:ac:0'], function( i, addy ){
+ assertTrueIPv6( addy, addy + ' is a valid IP' );
+ });
+
+ assertFalseIPv6( '::fc:100:a:d:1:e:ac:0', 'IPv6 with "::" and 8 words' );
+ assertFalseIPv6( '::fc:100:a:d:1:e:ac:0:1', 'IPv6 with 9 words' );
+
+ assertFalseIPv6( ':fc::100', 'IPv6 starting with lone ":"' );
+ assertFalseIPv6( 'fc::100:', 'IPv6 ending with lone ":"' );
+ assertFalseIPv6( 'fc:::100', 'IPv6 with ":::" in the middle' );
+
+ assertTrueIPv6( 'fc::100', 'IPv6 with "::" and 2 words' );
+ assertTrueIPv6( 'fc::100:a', 'IPv6 with "::" and 3 words' );
+ assertTrueIPv6( 'fc::100:a:d', 'IPv6 with "::" and 4 words' );
+ assertTrueIPv6( 'fc::100:a:d:1', 'IPv6 with "::" and 5 words' );
+ assertTrueIPv6( 'fc::100:a:d:1:e', 'IPv6 with "::" and 6 words' );
+ assertTrueIPv6( 'fc::100:a:d:1:e:ac', 'IPv6 with "::" and 7 words' );
+ assertTrueIPv6( '2001::df', 'IPv6 with "::" and 2 words' );
+ assertTrueIPv6( '2001:5c0:1400:a::df', 'IPv6 with "::" and 5 words' );
+ assertTrueIPv6( '2001:5c0:1400:a::df:2', 'IPv6 with "::" and 6 words' );
+
+ assertFalseIPv6( 'fc::100:a:d:1:e:ac:0', 'IPv6 with "::" and 8 words' );
+ assertFalseIPv6( 'fc::100:a:d:1:e:ac:0:1', 'IPv6 with 9 words' );
+});
+
+test( 'isIPv4Address', function() {
+ expect(11);
+
+ // Shortcuts
+ var assertFalseIPv4 = function( addy, summary ) {
+ return strictEqual( mw.util.isIPv4Address( addy ), false, summary );
+ },
+ assertTrueIPv4 = function( addy, summary ) {
+ return strictEqual( mw.util.isIPv4Address( addy ), true, summary );
+ };
+
+ // Based on IPTest.php > testisIPv4
+ assertFalseIPv4( false, 'Boolean false is not an IP' );
+ assertFalseIPv4( true, 'Boolean true is not an IP' );
+ assertFalseIPv4( '', 'Empty string is not an IP' );
+ assertFalseIPv4( 'abc', '"abc" is not an IP' );
+ assertFalseIPv4( ':', 'Colon is not an IP' );
+ assertFalseIPv4( '124.24.52', 'IPv4 not enough quads' );
+ assertFalseIPv4( '24.324.52.13', 'IPv4 out of range' );
+ assertFalseIPv4( '.24.52.13', 'IPv4 starts with period' );
+
+ assertTrueIPv4( '124.24.52.13', '124.24.52.134 is a valid IP' );
+ assertTrueIPv4( '1.24.52.13', '1.24.52.13 is a valid IP' );
+ assertFalseIPv4( '74.24.52.13/20', 'IPv4 ranges are not recogzized as valid IPs' );
+});
diff --git a/maintenance/tests/selenium/Selenium.php b/tests/selenium/Selenium.php
index ecf7f9ec..ecf7f9ec 100644
--- a/maintenance/tests/selenium/Selenium.php
+++ b/tests/selenium/Selenium.php
diff --git a/maintenance/tests/selenium/SeleniumConfig.php b/tests/selenium/SeleniumConfig.php
index ca69b1f0..b8cdf1c5 100644
--- a/maintenance/tests/selenium/SeleniumConfig.php
+++ b/tests/selenium/SeleniumConfig.php
@@ -61,28 +61,53 @@ class SeleniumConfig {
return true;
}
- private static function parse_5_2_ini_file ( $ConfigFile ) {
-
- $configArray = parse_ini_file( $ConfigFile, true );
- if ( $configArray === false ) return false;
-
- // PHP 5.2 ini files have [browsers] and [testSuite] sections
- // to get around lack of support for array keys. It then
- // inserts the section arrays into the appropriate places in
- // the SeleniumSettings and SeleniumTests arrays.
-
- if ( isset( $configArray['browsers'] ) ) {
- $configArray['SeleniumSettings']['browsers'] = $configArray['browsers'];
- unset ( $configArray['browsers'] );
+ /**
+ * PHP 5.2 parse_ini_file() doesn't have support for array keys.
+ * This function parses simple ini files with such syntax using just
+ * 5.2 functions.
+ */
+ private static function parse_5_2_ini_file( $ConfigFile ) {
+ $file = fopen( $ConfigFile, "rt" );
+ if ( !$file ) {
+ return false;
}
-
- if ( isset( $configArray['testSuite'] ) ) {
- $configArray['SeleniumTests']['testSuite'] = $configArray['testSuite'];
- unset ( $configArray['testSuite'] );
+ $header = '';
+
+ $configArray = array();
+
+ while ( ( $line = fgets( $file ) ) !== false ) {
+ $line = strtok( $line, "\r\n" );
+
+ if ( !$line || $line[0] == ';' ) continue;
+
+ if ( $line[0] == '[' && substr( $line, -1 ) == ']' ) {
+ $header = substr( $line, 1, -1 );
+ $configArray[$header] = array();
+ } else {
+ $configArray[$header] = array_merge_recursive( $configArray[$header], self::parse_ini_line( $line ) );
+ }
}
-
return $configArray;
-
}
+ private static function parse_ini_line( $iniLine ) {
+ static $specialValues = array( 'false' => false, 'true' => true, 'null' => null );
+ list( $key, $value ) = explode( '=', $iniLine, 2 );
+ $key = trim( $key );
+ $value = trim( $value );
+
+ if ( isset( $specialValues[$value] ) ) {
+ $value = $specialValues[$value];
+ } else {
+ $value = trim( $value, '"' );
+ }
+
+ /* Support one-level arrays */
+ if ( preg_match( '/^([A-Za-z]+)\[([A-Za-z]+)\]/', $key, $m ) ) {
+ $key = $m[1];
+ $value = array( $m[2] => $value );
+ }
+
+ return array( $key => $value );
+ }
}
diff --git a/maintenance/tests/selenium/SeleniumLoader.php b/tests/selenium/SeleniumLoader.php
index 8d5e7713..8d5e7713 100644
--- a/maintenance/tests/selenium/SeleniumLoader.php
+++ b/tests/selenium/SeleniumLoader.php
diff --git a/maintenance/tests/selenium/SeleniumServerManager.php b/tests/selenium/SeleniumServerManager.php
index ae5ea682..9e2d4aa8 100644
--- a/maintenance/tests/selenium/SeleniumServerManager.php
+++ b/tests/selenium/SeleniumServerManager.php
@@ -3,7 +3,7 @@
* Selenium server manager
*
* @file
- * @ingroup Maintenance
+ * @ingroup Testing
* Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
* http://citizendium.org/
*
@@ -22,7 +22,7 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @addtogroup Maintenance
+ * @addtogroup Testing
*/
class SeleniumServerManager {
@@ -141,7 +141,7 @@ class SeleniumServerManager {
$output = array();
$user = $_ENV['USER'];
- // @fixme this should be a little more generalized :)
+ // @todo FIXME: This should be a little more generalized :)
if (PHP_OS == 'Darwin') {
// Mac OS X's ps barfs on the 'w' param, but doesn't need it.
$ps = "ps -U %s";
diff --git a/tests/selenium/SeleniumTestCase.php b/tests/selenium/SeleniumTestCase.php
new file mode 100644
index 00000000..7976c16a
--- /dev/null
+++ b/tests/selenium/SeleniumTestCase.php
@@ -0,0 +1,127 @@
+<?php
+include("SeleniumTestConstants.php");
+
+class SeleniumTestCase extends PHPUnit_Framework_TestCase { // PHPUnit_Extensions_SeleniumTestCase
+ protected $selenium;
+
+ public function setUp() {
+ set_time_limit( 60 );
+ $this->selenium = Selenium::getInstance();
+ }
+
+ public function tearDown() {
+
+ }
+
+ public function __call( $method, $args ) {
+ return call_user_func_array( array( $this->selenium, $method ), $args );
+ }
+
+ public function assertSeleniumAttributeEquals( $attribute, $value ) {
+ $attr = $this->getAttribute( $attribute );
+ $this->assertEquals( $attr, $value );
+ }
+
+ public function assertSeleniumHTMLContains( $element, $text ) {
+ $innerHTML = $this->getText( $element );
+ // or assertContains
+ $this->assertRegExp( "/$text/", $innerHTML );
+ }
+
+
+ /**
+ * Create a test fixture page if one does not exist
+ * @param $pageName The fixture page name. If none is supplied, it uses SeleniumTestConstants::WIKI_INTERNAL_LINK
+ */
+ function createTestPageIfMissing( $pageName = null ) {
+ if ( $pageName == null ) {
+ $pageName = SeleniumTestConstants::WIKI_INTERNAL_LINK;
+ }
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, $pageName );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_START . $pageName );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $location = $this->getLocation() . "\n";
+ if ( strpos( $location, '&redlink=1') !== false ) {
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, "Test fixture page. No real content here" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertTrue( $this->isTextPresent( $pageName ),
+ $this->getText( SeleniumTestConstants::TEXT_PAGE_HEADING ) );
+ }
+ }
+
+ /**
+ * Create a test page using date as part of the name so that it is unique
+ * @param $pagePrefix The prefix to use for the page name. The current date will be appended to this to make it unique
+ * @param $watchThis Whether to add the page to my watchlist. Defaults to false.
+ */
+ function createNewTestPage( $pagePrefix, $watchThis = false ) {
+ $pageName = $pagePrefix . date("Ymd-His");
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, $pageName );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_START . $pageName );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $location = $this->getLocation() . "\n";
+ $this->assertContains( '&redlink=1', $location ).
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, "Test fixture page. No real content here" );
+ if ( $watchThis ) {
+ $this->click( "wpWatchthis" );
+ }
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->assertTrue( $this->isTextPresent( $pageName ),
+ $this->getText( SeleniumTestConstants::TEXT_PAGE_HEADING ) );
+ return $pageName;
+ }
+
+ public function getExistingPage(){
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->type("searchInput", "new" );
+ $this->click("searchGoButton");
+ $this->waitForPageToLoad("30000");
+ }
+
+ public function getNewPage($pageName){
+
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ $this->type("searchInput", $pageName );
+ $this->click("searchGoButton");
+ $this->waitForPageToLoad("30000");
+ $this->click("link=".$pageName);
+ $this->waitForPageToLoad("600000");
+
+
+ }
+ // Loading the mediawiki editor
+ public function loadWikiEditor(){
+ $this->open( $this->getUrl() .
+ '/index.php?title=Main_Page&action=edit' );
+ }
+
+ // Clear the content of the mediawiki editor
+ public function clearWikiEditor(){
+ $this->type("wpTextbox1", "");
+ }
+
+ // Click on the 'Show preview' button of the mediawiki editor
+ public function clickShowPreviewBtn(){
+ $this->click("wpPreview");
+ }
+
+ // Click on the 'Save Page' button of the mediawiki editor
+ public function clickSavePageBtn(){
+ $this->click("wpSave");
+ }
+
+ // Click on the 'Edit' link
+ public function clickEditLink(){
+ $this->click("link=Edit");
+ $this->waitForPageToLoad("30000");
+ }
+
+}
diff --git a/maintenance/tests/selenium/SeleniumTestConsoleLogger.php b/tests/selenium/SeleniumTestConsoleLogger.php
index b6f5496c..b6f5496c 100644
--- a/maintenance/tests/selenium/SeleniumTestConsoleLogger.php
+++ b/tests/selenium/SeleniumTestConsoleLogger.php
diff --git a/tests/selenium/SeleniumTestConstants.php b/tests/selenium/SeleniumTestConstants.php
new file mode 100644
index 00000000..1defb73c
--- /dev/null
+++ b/tests/selenium/SeleniumTestConstants.php
@@ -0,0 +1,24 @@
+<?php
+
+class SeleniumTestConstants {
+ const WIKI_TEST_WAIT_TIME = 3000; // Waiting time
+
+ //commonly used links
+ const LINK_MAIN_PAGE = 'link=Main page';
+ const LINK_RANDOM_PAGE = 'link=Random article';
+ const TEXT_PAGE_HEADING = 'firstHeading';
+
+ const LINK_START = 'link=';
+ const TEXT_EDITOR = 'wpTextbox1';
+ const LINK_PREVIEW = 'wpPreview';
+ const LINK_EDIT = 'link=Edit';
+
+ const WIKI_SEARCH_PAGE = 'Hair (musical)'; // Page name to search
+ const WIKI_TEXT_SEARCH = 'TV'; // Text to search
+ const WIKI_INTERNAL_LINK = 'Wikieditor-Fixture-Page'; // Exisiting page name to add as an internal tag
+
+ const INPUT_SEARCH_BOX = 'searchInput';
+ const BUTTON_SEARCH = 'mw-searchButton';
+ const BUTTON_SAVE = 'wpSave';
+}
+
diff --git a/maintenance/tests/selenium/SeleniumTestHTMLLogger.php b/tests/selenium/SeleniumTestHTMLLogger.php
index 21332cf0..21332cf0 100644
--- a/maintenance/tests/selenium/SeleniumTestHTMLLogger.php
+++ b/tests/selenium/SeleniumTestHTMLLogger.php
diff --git a/maintenance/tests/selenium/SeleniumTestListener.php b/tests/selenium/SeleniumTestListener.php
index 9436f672..9436f672 100644
--- a/maintenance/tests/selenium/SeleniumTestListener.php
+++ b/tests/selenium/SeleniumTestListener.php
diff --git a/maintenance/tests/selenium/SeleniumTestSuite.php b/tests/selenium/SeleniumTestSuite.php
index ba178051..81a630f8 100644
--- a/maintenance/tests/selenium/SeleniumTestSuite.php
+++ b/tests/selenium/SeleniumTestSuite.php
@@ -4,6 +4,7 @@ abstract class SeleniumTestSuite extends PHPUnit_Framework_TestSuite {
private $selenium;
private $isSetUp = false;
private $loginBeforeTests = true;
+ private $triggerClientTestResources = true;
// Do not add line break after test output
const CONTINUE_LINE = 1;
@@ -21,14 +22,20 @@ abstract class SeleniumTestSuite extends PHPUnit_Framework_TestSuite {
$this->isSetUp = true;
$this->selenium = Selenium::getInstance();
$this->selenium->start();
- $this->selenium->open( $this->selenium->getUrl() . '/index.php?setupTestSuite=' . $this->getName() );
+ if ( $this->triggerClientTestResources ) {
+ $this->selenium->open( $this->selenium->getUrl() . '/index.php?setupTestSuite=' . $this->getName() );
+ //wait a little longer for the db operation
+ $this->selenium->waitForPageToLoad( 6000 );
+ }
if ( $this->loginBeforeTests ) {
$this->login();
}
}
public function tearDown() {
- $this->selenium->open( $this->selenium->getUrl() . '/index.php?clearTestSuite=' . $this->getName() );
+ if ( $this->triggerClientTestResources ) {
+ $this->selenium->open( $this->selenium->getUrl() . '/index.php?clearTestSuite=' . $this->getName() );
+ }
$this->selenium->stop();
}
@@ -43,4 +50,8 @@ abstract class SeleniumTestSuite extends PHPUnit_Framework_TestSuite {
protected function setLoginBeforeTests( $loginBeforeTests = true ) {
$this->loginBeforeTests = $loginBeforeTests;
}
+
+ protected function setTriggerClientTestResources( $triggerClientTestResources = true ) {
+ $this->triggerClientTestResources = $triggerClientTestResources;
+ }
}
diff --git a/tests/selenium/data/SimpleSeleniumTestDB.sql b/tests/selenium/data/SimpleSeleniumTestDB.sql
new file mode 100644
index 00000000..7944c45f
--- /dev/null
+++ b/tests/selenium/data/SimpleSeleniumTestDB.sql
@@ -0,0 +1,1454 @@
+-- MySQL dump 10.13 Distrib 5.1.41, for debian-linux-gnu (x86_64)
+--
+-- Host: localhost Database: test_wiki
+-- ------------------------------------------------------
+-- Server version 5.1.41-3ubuntu12.7
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `mw_archive`
+--
+
+DROP TABLE IF EXISTS `mw_archive`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_archive` (
+ `ar_namespace` int(11) NOT NULL DEFAULT '0',
+ `ar_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `ar_text` mediumblob NOT NULL,
+ `ar_comment` tinyblob NOT NULL,
+ `ar_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `ar_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `ar_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `ar_minor_edit` tinyint(4) NOT NULL DEFAULT '0',
+ `ar_flags` tinyblob NOT NULL,
+ `ar_rev_id` int(10) unsigned DEFAULT NULL,
+ `ar_text_id` int(10) unsigned DEFAULT NULL,
+ `ar_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `ar_len` int(10) unsigned DEFAULT NULL,
+ `ar_page_id` int(10) unsigned DEFAULT NULL,
+ `ar_parent_id` int(10) unsigned DEFAULT NULL,
+ KEY `name_title_timestamp` (`ar_namespace`,`ar_title`,`ar_timestamp`),
+ KEY `usertext_timestamp` (`ar_user_text`,`ar_timestamp`),
+ KEY `ar_revid` (`ar_rev_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_archive`
+--
+
+LOCK TABLES `mw_archive` WRITE;
+/*!40000 ALTER TABLE `mw_archive` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_archive` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_category`
+--
+
+DROP TABLE IF EXISTS `mw_category`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_category` (
+ `cat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cat_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `cat_pages` int(11) NOT NULL DEFAULT '0',
+ `cat_subcats` int(11) NOT NULL DEFAULT '0',
+ `cat_files` int(11) NOT NULL DEFAULT '0',
+ `cat_hidden` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`cat_id`),
+ UNIQUE KEY `cat_title` (`cat_title`),
+ KEY `cat_pages` (`cat_pages`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_category`
+--
+
+LOCK TABLES `mw_category` WRITE;
+/*!40000 ALTER TABLE `mw_category` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_category` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_categorylinks`
+--
+
+DROP TABLE IF EXISTS `mw_categorylinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_categorylinks` (
+ `cl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `cl_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `cl_sortkey` varbinary(230) NOT NULL DEFAULT '',
+ `cl_sortkey_prefix` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `cl_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `cl_collation` varbinary(32) NOT NULL DEFAULT '',
+ `cl_type` enum('page','subcat','file') NOT NULL DEFAULT 'page',
+ UNIQUE KEY `cl_from` (`cl_from`,`cl_to`),
+ KEY `cl_sortkey` (`cl_to`,`cl_type`,`cl_sortkey`,`cl_from`),
+ KEY `cl_timestamp` (`cl_to`,`cl_timestamp`),
+ KEY `cl_collation` (`cl_collation`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_categorylinks`
+--
+
+LOCK TABLES `mw_categorylinks` WRITE;
+/*!40000 ALTER TABLE `mw_categorylinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_categorylinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_change_tag`
+--
+
+DROP TABLE IF EXISTS `mw_change_tag`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_change_tag` (
+ `ct_rc_id` int(11) DEFAULT NULL,
+ `ct_log_id` int(11) DEFAULT NULL,
+ `ct_rev_id` int(11) DEFAULT NULL,
+ `ct_tag` varchar(255) NOT NULL,
+ `ct_params` blob,
+ UNIQUE KEY `change_tag_rc_tag` (`ct_rc_id`,`ct_tag`),
+ UNIQUE KEY `change_tag_log_tag` (`ct_log_id`,`ct_tag`),
+ UNIQUE KEY `change_tag_rev_tag` (`ct_rev_id`,`ct_tag`),
+ KEY `change_tag_tag_id` (`ct_tag`,`ct_rc_id`,`ct_rev_id`,`ct_log_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_change_tag`
+--
+
+LOCK TABLES `mw_change_tag` WRITE;
+/*!40000 ALTER TABLE `mw_change_tag` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_change_tag` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_external_user`
+--
+
+DROP TABLE IF EXISTS `mw_external_user`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_external_user` (
+ `eu_local_id` int(10) unsigned NOT NULL,
+ `eu_external_id` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ PRIMARY KEY (`eu_local_id`),
+ UNIQUE KEY `eu_external_id` (`eu_external_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_external_user`
+--
+
+LOCK TABLES `mw_external_user` WRITE;
+/*!40000 ALTER TABLE `mw_external_user` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_external_user` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_externallinks`
+--
+
+DROP TABLE IF EXISTS `mw_externallinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_externallinks` (
+ `el_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `el_to` blob NOT NULL,
+ `el_index` blob NOT NULL,
+ KEY `el_from` (`el_from`,`el_to`(40)),
+ KEY `el_to` (`el_to`(60),`el_from`),
+ KEY `el_index` (`el_index`(60))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_externallinks`
+--
+
+LOCK TABLES `mw_externallinks` WRITE;
+/*!40000 ALTER TABLE `mw_externallinks` DISABLE KEYS */;
+INSERT INTO `mw_externallinks` VALUES (1,'http://meta.wikimedia.org/wiki/Help:Contents','http://org.wikimedia.meta./wiki/Help:Contents'),(1,'http://www.mediawiki.org/wiki/Manual:Configuration_settings','http://org.mediawiki.www./wiki/Manual:Configuration_settings'),(1,'http://www.mediawiki.org/wiki/Manual:FAQ','http://org.mediawiki.www./wiki/Manual:FAQ'),(1,'https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce','https://org.wikimedia.lists./mailman/listinfo/mediawiki-announce');
+/*!40000 ALTER TABLE `mw_externallinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_filearchive`
+--
+
+DROP TABLE IF EXISTS `mw_filearchive`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_filearchive` (
+ `fa_id` int(11) NOT NULL AUTO_INCREMENT,
+ `fa_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `fa_archive_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT '',
+ `fa_storage_group` varbinary(16) DEFAULT NULL,
+ `fa_storage_key` varbinary(64) DEFAULT '',
+ `fa_deleted_user` int(11) DEFAULT NULL,
+ `fa_deleted_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `fa_deleted_reason` text,
+ `fa_size` int(10) unsigned DEFAULT '0',
+ `fa_width` int(11) DEFAULT '0',
+ `fa_height` int(11) DEFAULT '0',
+ `fa_metadata` mediumblob,
+ `fa_bits` int(11) DEFAULT '0',
+ `fa_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
+ `fa_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') DEFAULT 'unknown',
+ `fa_minor_mime` varbinary(100) DEFAULT 'unknown',
+ `fa_description` tinyblob,
+ `fa_user` int(10) unsigned DEFAULT '0',
+ `fa_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
+ `fa_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `fa_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`fa_id`),
+ KEY `fa_name` (`fa_name`,`fa_timestamp`),
+ KEY `fa_storage_group` (`fa_storage_group`,`fa_storage_key`),
+ KEY `fa_deleted_timestamp` (`fa_deleted_timestamp`),
+ KEY `fa_user_timestamp` (`fa_user_text`,`fa_timestamp`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_filearchive`
+--
+
+LOCK TABLES `mw_filearchive` WRITE;
+/*!40000 ALTER TABLE `mw_filearchive` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_filearchive` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_hitcounter`
+--
+
+DROP TABLE IF EXISTS `mw_hitcounter`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_hitcounter` (
+ `hc_id` int(10) unsigned NOT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 MAX_ROWS=25000;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_hitcounter`
+--
+
+LOCK TABLES `mw_hitcounter` WRITE;
+/*!40000 ALTER TABLE `mw_hitcounter` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_hitcounter` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_image`
+--
+
+DROP TABLE IF EXISTS `mw_image`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_image` (
+ `img_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `img_size` int(10) unsigned NOT NULL DEFAULT '0',
+ `img_width` int(11) NOT NULL DEFAULT '0',
+ `img_height` int(11) NOT NULL DEFAULT '0',
+ `img_metadata` mediumblob NOT NULL,
+ `img_bits` int(11) NOT NULL DEFAULT '0',
+ `img_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
+ `img_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') NOT NULL DEFAULT 'unknown',
+ `img_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown',
+ `img_description` tinyblob NOT NULL,
+ `img_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `img_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `img_timestamp` varbinary(14) NOT NULL DEFAULT '',
+ `img_sha1` varbinary(32) NOT NULL DEFAULT '',
+ PRIMARY KEY (`img_name`),
+ KEY `img_usertext_timestamp` (`img_user_text`,`img_timestamp`),
+ KEY `img_size` (`img_size`),
+ KEY `img_timestamp` (`img_timestamp`),
+ KEY `img_sha1` (`img_sha1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_image`
+--
+
+LOCK TABLES `mw_image` WRITE;
+/*!40000 ALTER TABLE `mw_image` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_image` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_imagelinks`
+--
+
+DROP TABLE IF EXISTS `mw_imagelinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_imagelinks` (
+ `il_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `il_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `il_from` (`il_from`,`il_to`),
+ UNIQUE KEY `il_to` (`il_to`,`il_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_imagelinks`
+--
+
+LOCK TABLES `mw_imagelinks` WRITE;
+/*!40000 ALTER TABLE `mw_imagelinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_imagelinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_interwiki`
+--
+
+DROP TABLE IF EXISTS `mw_interwiki`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_interwiki` (
+ `iw_prefix` varchar(32) NOT NULL,
+ `iw_url` blob NOT NULL,
+ `iw_api` blob NOT NULL,
+ `iw_wikiid` varchar(64) NOT NULL,
+ `iw_local` tinyint(1) NOT NULL,
+ `iw_trans` tinyint(4) NOT NULL DEFAULT '0',
+ UNIQUE KEY `iw_prefix` (`iw_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_interwiki`
+--
+
+LOCK TABLES `mw_interwiki` WRITE;
+/*!40000 ALTER TABLE `mw_interwiki` DISABLE KEYS */;
+INSERT INTO `mw_interwiki` VALUES ('acronym','http://www.acronymfinder.com/af-query.asp?String=exact&Acronym=$1','','',0,0),('advogato','http://www.advogato.org/$1','','',0,0),('annotationwiki','http://www.seedwiki.com/page.cfm?wikiid=368&doc=$1','','',0,0),('arxiv','http://www.arxiv.org/abs/$1','','',0,0),('c2find','http://c2.com/cgi/wiki?FindPage&value=$1','','',0,0),('cache','http://www.google.com/search?q=cache:$1','','',0,0),('commons','http://commons.wikimedia.org/wiki/$1','','',0,0),('corpknowpedia','http://corpknowpedia.org/wiki/index.php/$1','','',0,0),('dictionary','http://www.dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1','','',0,0),('disinfopedia','http://www.disinfopedia.org/wiki.phtml?title=$1','','',0,0),('docbook','http://wiki.docbook.org/topic/$1','','',0,0),('doi','http://dx.doi.org/$1','','',0,0),('drumcorpswiki','http://www.drumcorpswiki.com/index.php/$1','','',0,0),('dwjwiki','http://www.suberic.net/cgi-bin/dwj/wiki.cgi?$1','','',0,0),('elibre','http://enciclopedia.us.es/index.php/$1','','',0,0),('emacswiki','http://www.emacswiki.org/cgi-bin/wiki.pl?$1','','',0,0),('foldoc','http://foldoc.org/?$1','','',0,0),('foxwiki','http://fox.wikis.com/wc.dll?Wiki~$1','','',0,0),('freebsdman','http://www.FreeBSD.org/cgi/man.cgi?apropos=1&query=$1','','',0,0),('gej','http://www.esperanto.de/cgi-bin/aktivikio/wiki.pl?$1','','',0,0),('gentoo-wiki','http://gentoo-wiki.com/$1','','',0,0),('google','http://www.google.com/search?q=$1','','',0,0),('googlegroups','http://groups.google.com/groups?q=$1','','',0,0),('hammondwiki','http://www.dairiki.org/HammondWiki/$1','','',0,0),('hewikisource','http://he.wikisource.org/wiki/$1','','',1,0),('hrwiki','http://www.hrwiki.org/index.php/$1','','',0,0),('imdb','http://us.imdb.com/Title?$1','','',0,0),('jargonfile','http://sunir.org/apps/meta.pl?wiki=JargonFile&redirect=$1','','',0,0),('jspwiki','http://www.jspwiki.org/wiki/$1','','',0,0),('keiki','http://kei.ki/en/$1','','',0,0),('kmwiki','http://kmwiki.wikispaces.com/$1','','',0,0),('linuxwiki','http://linuxwiki.de/$1','','',0,0),('lojban','http://www.lojban.org/tiki/tiki-index.php?page=$1','','',0,0),('lqwiki','http://wiki.linuxquestions.org/wiki/$1','','',0,0),('lugkr','http://lug-kr.sourceforge.net/cgi-bin/lugwiki.pl?$1','','',0,0),('mathsongswiki','http://SeedWiki.com/page.cfm?wikiid=237&doc=$1','','',0,0),('meatball','http://www.usemod.com/cgi-bin/mb.pl?$1','','',0,0),('mediawikiwiki','http://www.mediawiki.org/wiki/$1','','',0,0),('mediazilla','https://bugzilla.wikimedia.org/$1','','',1,0),('memoryalpha','http://www.memory-alpha.org/en/index.php/$1','','',0,0),('metawiki','http://sunir.org/apps/meta.pl?$1','','',0,0),('metawikipedia','http://meta.wikimedia.org/wiki/$1','','',0,0),('moinmoin','http://purl.net/wiki/moin/$1','','',0,0),('mozillawiki','http://wiki.mozilla.org/index.php/$1','','',0,0),('mw','http://www.mediawiki.org/wiki/$1','','',0,0),('oeis','http://www.research.att.com/cgi-bin/access.cgi/as/njas/sequences/eisA.cgi?Anum=$1','','',0,0),('openfacts','http://openfacts.berlios.de/index.phtml?title=$1','','',0,0),('openwiki','http://openwiki.com/?$1','','',0,0),('pmeg','http://www.bertilow.com/pmeg/$1.php','','',0,0),('ppr','http://c2.com/cgi/wiki?$1','','',0,0),('pythoninfo','http://wiki.python.org/moin/$1','','',0,0),('rfc','http://www.rfc-editor.org/rfc/rfc$1.txt','','',0,0),('s23wiki','http://is-root.de/wiki/index.php/$1','','',0,0),('seattlewiki','http://seattle.wikia.com/wiki/$1','','',0,0),('seattlewireless','http://seattlewireless.net/?$1','','',0,0),('senseislibrary','http://senseis.xmp.net/?$1','','',0,0),('sourceforge','http://sourceforge.net/$1','','',0,0),('squeak','http://wiki.squeak.org/squeak/$1','','',0,0),('susning','http://www.susning.nu/$1','','',0,0),('svgwiki','http://wiki.svg.org/$1','','',0,0),('tavi','http://tavi.sourceforge.net/$1','','',0,0),('tejo','http://www.tejo.org/vikio/$1','','',0,0),('theopedia','http://www.theopedia.com/$1','','',0,0),('tmbw','http://www.tmbw.net/wiki/$1','','',0,0),('tmnet','http://www.technomanifestos.net/?$1','','',0,0),('tmwiki','http://www.EasyTopicMaps.com/?page=$1','','',0,0),('twiki','http://twiki.org/cgi-bin/view/$1','','',0,0),('uea','http://www.tejo.org/uea/$1','','',0,0),('unreal','http://wiki.beyondunreal.com/wiki/$1','','',0,0),('usemod','http://www.usemod.com/cgi-bin/wiki.pl?$1','','',0,0),('vinismo','http://vinismo.com/en/$1','','',0,0),('webseitzwiki','http://webseitz.fluxent.com/wiki/$1','','',0,0),('why','http://clublet.com/c/c/why?$1','','',0,0),('wiki','http://c2.com/cgi/wiki?$1','','',0,0),('wikia','http://www.wikia.com/wiki/$1','','',0,0),('wikibooks','http://en.wikibooks.org/wiki/$1','','',1,0),('wikicities','http://www.wikia.com/wiki/$1','','',0,0),('wikif1','http://www.wikif1.org/$1','','',0,0),('wikihow','http://www.wikihow.com/$1','','',0,0),('wikimedia','http://wikimediafoundation.org/wiki/$1','','',0,0),('wikinews','http://en.wikinews.org/wiki/$1','','',1,0),('wikinfo','http://www.wikinfo.org/index.php/$1','','',0,0),('wikipedia','http://en.wikipedia.org/wiki/$1','','',1,0),('wikiquote','http://en.wikiquote.org/wiki/$1','','',1,0),('wikisource','http://wikisource.org/wiki/$1','','',1,0),('wikispecies','http://species.wikimedia.org/wiki/$1','','',1,0),('wikitravel','http://wikitravel.org/en/$1','','',0,0),('wikiversity','http://en.wikiversity.org/wiki/$1','','',1,0),('wikt','http://en.wiktionary.org/wiki/$1','','',1,0),('wiktionary','http://en.wiktionary.org/wiki/$1','','',1,0),('wlug','http://www.wlug.org.nz/$1','','',0,0),('zwiki','http://zwiki.org/$1','','',0,0),('zzz wiki','http://wiki.zzz.ee/index.php/$1','','',0,0);
+/*!40000 ALTER TABLE `mw_interwiki` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_ipblocks`
+--
+
+DROP TABLE IF EXISTS `mw_ipblocks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_ipblocks` (
+ `ipb_id` int(11) NOT NULL AUTO_INCREMENT,
+ `ipb_address` tinyblob NOT NULL,
+ `ipb_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `ipb_by` int(10) unsigned NOT NULL DEFAULT '0',
+ `ipb_by_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `ipb_reason` tinyblob NOT NULL,
+ `ipb_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `ipb_auto` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_anon_only` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_create_account` tinyint(1) NOT NULL DEFAULT '1',
+ `ipb_enable_autoblock` tinyint(1) NOT NULL DEFAULT '1',
+ `ipb_expiry` varbinary(14) NOT NULL DEFAULT '',
+ `ipb_range_start` tinyblob NOT NULL,
+ `ipb_range_end` tinyblob NOT NULL,
+ `ipb_deleted` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_block_email` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_allow_usertalk` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ipb_id`),
+ UNIQUE KEY `ipb_address` (`ipb_address`(255),`ipb_user`,`ipb_auto`,`ipb_anon_only`),
+ KEY `ipb_user` (`ipb_user`),
+ KEY `ipb_range` (`ipb_range_start`(8),`ipb_range_end`(8)),
+ KEY `ipb_timestamp` (`ipb_timestamp`),
+ KEY `ipb_expiry` (`ipb_expiry`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_ipblocks`
+--
+
+LOCK TABLES `mw_ipblocks` WRITE;
+/*!40000 ALTER TABLE `mw_ipblocks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_ipblocks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_iwlinks`
+--
+
+DROP TABLE IF EXISTS `mw_iwlinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_iwlinks` (
+ `iwl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `iwl_prefix` varbinary(20) NOT NULL DEFAULT '',
+ `iwl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `iwl_from` (`iwl_from`,`iwl_prefix`,`iwl_title`),
+ UNIQUE KEY `iwl_prefix_title_from` (`iwl_prefix`,`iwl_title`,`iwl_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_iwlinks`
+--
+
+LOCK TABLES `mw_iwlinks` WRITE;
+/*!40000 ALTER TABLE `mw_iwlinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_iwlinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_job`
+--
+
+DROP TABLE IF EXISTS `mw_job`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_job` (
+ `job_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `job_cmd` varbinary(60) NOT NULL DEFAULT '',
+ `job_namespace` int(11) NOT NULL,
+ `job_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `job_params` blob NOT NULL,
+ PRIMARY KEY (`job_id`),
+ KEY `job_cmd` (`job_cmd`,`job_namespace`,`job_title`,`job_params`(128))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_job`
+--
+
+LOCK TABLES `mw_job` WRITE;
+/*!40000 ALTER TABLE `mw_job` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_job` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_l10n_cache`
+--
+
+DROP TABLE IF EXISTS `mw_l10n_cache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_l10n_cache` (
+ `lc_lang` varbinary(32) NOT NULL,
+ `lc_key` varchar(255) NOT NULL,
+ `lc_value` mediumblob NOT NULL,
+ KEY `lc_lang_key` (`lc_lang`,`lc_key`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_l10n_cache`
+--
+
+LOCK TABLES `mw_l10n_cache` WRITE;
+/*!40000 ALTER TABLE `mw_l10n_cache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_l10n_cache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_langlinks`
+--
+
+DROP TABLE IF EXISTS `mw_langlinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_langlinks` (
+ `ll_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `ll_lang` varbinary(20) NOT NULL DEFAULT '',
+ `ll_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `ll_from` (`ll_from`,`ll_lang`),
+ KEY `ll_lang` (`ll_lang`,`ll_title`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_langlinks`
+--
+
+LOCK TABLES `mw_langlinks` WRITE;
+/*!40000 ALTER TABLE `mw_langlinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_langlinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_log_search`
+--
+
+DROP TABLE IF EXISTS `mw_log_search`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_log_search` (
+ `ls_field` varbinary(32) NOT NULL,
+ `ls_value` varchar(255) NOT NULL,
+ `ls_log_id` int(10) unsigned NOT NULL DEFAULT '0',
+ UNIQUE KEY `ls_field_val` (`ls_field`,`ls_value`,`ls_log_id`),
+ KEY `ls_log_id` (`ls_log_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_log_search`
+--
+
+LOCK TABLES `mw_log_search` WRITE;
+/*!40000 ALTER TABLE `mw_log_search` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_log_search` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_logging`
+--
+
+DROP TABLE IF EXISTS `mw_logging`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_logging` (
+ `log_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `log_type` varbinary(32) NOT NULL DEFAULT '',
+ `log_action` varbinary(32) NOT NULL DEFAULT '',
+ `log_timestamp` binary(14) NOT NULL DEFAULT '19700101000000',
+ `log_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `log_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `log_namespace` int(11) NOT NULL DEFAULT '0',
+ `log_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `log_page` int(10) unsigned DEFAULT NULL,
+ `log_comment` varchar(255) NOT NULL DEFAULT '',
+ `log_params` blob NOT NULL,
+ `log_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`log_id`),
+ KEY `type_time` (`log_type`,`log_timestamp`),
+ KEY `user_time` (`log_user`,`log_timestamp`),
+ KEY `page_time` (`log_namespace`,`log_title`,`log_timestamp`),
+ KEY `times` (`log_timestamp`),
+ KEY `log_user_type_time` (`log_user`,`log_type`,`log_timestamp`),
+ KEY `log_page_id_time` (`log_page`,`log_timestamp`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_logging`
+--
+
+LOCK TABLES `mw_logging` WRITE;
+/*!40000 ALTER TABLE `mw_logging` DISABLE KEYS */;
+INSERT INTO `mw_logging` VALUES (1,'patrol','patrol','20110110173131',1,'WikiSysop',0,'TestResources',2,'','2\n0\n1',0);
+/*!40000 ALTER TABLE `mw_logging` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_math`
+--
+
+DROP TABLE IF EXISTS `mw_math`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_math` (
+ `math_inputhash` varbinary(16) NOT NULL,
+ `math_outputhash` varbinary(16) NOT NULL,
+ `math_html_conservativeness` tinyint(4) NOT NULL,
+ `math_html` text,
+ `math_mathml` text,
+ UNIQUE KEY `math_inputhash` (`math_inputhash`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_math`
+--
+
+LOCK TABLES `mw_math` WRITE;
+/*!40000 ALTER TABLE `mw_math` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_math` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_module_deps`
+--
+
+DROP TABLE IF EXISTS `mw_module_deps`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_module_deps` (
+ `md_module` varbinary(255) NOT NULL,
+ `md_skin` varbinary(32) NOT NULL,
+ `md_deps` mediumblob NOT NULL,
+ UNIQUE KEY `md_module_skin` (`md_module`,`md_skin`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_module_deps`
+--
+
+LOCK TABLES `mw_module_deps` WRITE;
+/*!40000 ALTER TABLE `mw_module_deps` DISABLE KEYS */;
+INSERT INTO `mw_module_deps` VALUES ('ext.vector.collapsibleNav','vector','[\"\\/home\\/pdhanda\\/deployment\\/extensions\\/Vector\\/modules\\/.\\/images\\/portal-break.png\",\"\\/home\\/pdhanda\\/deployment\\/extensions\\/Vector\\/modules\\/.\\/images\\/open.png\",\"\\/home\\/pdhanda\\/deployment\\/extensions\\/Vector\\/modules\\/.\\/images\\/closed-ltr.png\"]'),('jquery.wikiEditor','vector','[\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/loading.gif\"]'),('jquery.wikiEditor.toolbar','vector','{\"0\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/base.png\",\"1\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/loading.gif\",\"2\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/button-sprite.png\",\"3\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/arrow-right.png\",\"4\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/arrow-left.png\",\"5\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/arrow-down.png\",\"7\":\"\\/home\\/pdhanda\\/deployment\\/extensions\\/WikiEditor\\/modules\\/.\\/images\\/toolbar\\/loading-small.gif\"}'),('mediawiki.legacy.shared','vector','[\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/feed-icon.png\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/remove.png\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/add.png\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/ajax-loader.gif\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/spinner.gif\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/help-question.gif\",\"\\/home\\/pdhanda\\/deployment\\/skins\\/common\\/images\\/help-question-hover.gif\"]'),('skins.vector','vector','{\"0\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/page-base.png\",\"1\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/border.png\",\"2\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/page-fade.png\",\"4\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/tab-break.png\",\"5\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/tab-normal-fade.png\",\"6\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/tab-current-fade.png\",\"8\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/arrow-down-icon.png\",\"11\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/search-fade.png\",\"12\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/portal-break.png\",\"14\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/preferences-break.png\",\"16\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/preferences-fade.png\",\"17\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/preferences-base.png\",\"18\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/bullet-icon.png\",\"19\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/external-link-ltr-icon.png\",\"20\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/lock-icon.png\",\"21\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/mail-icon.png\",\"22\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/news-icon.png\",\"23\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/file-icon.png\",\"24\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/talk-icon.png\",\"25\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/audio-icon.png\",\"26\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/video-icon.png\",\"27\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/document-icon.png\",\"28\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/user-icon.png\",\"29\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/watch-icons.png\",\"30\":\"\\/home\\/pdhanda\\/deployment\\/skins\\/vector\\/images\\/watch-icon-loading.gif\"}');
+/*!40000 ALTER TABLE `mw_module_deps` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_msg_resource`
+--
+
+DROP TABLE IF EXISTS `mw_msg_resource`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_msg_resource` (
+ `mr_resource` varbinary(255) NOT NULL,
+ `mr_lang` varbinary(32) NOT NULL,
+ `mr_blob` mediumblob NOT NULL,
+ `mr_timestamp` binary(14) NOT NULL,
+ UNIQUE KEY `mr_resource_lang` (`mr_resource`,`mr_lang`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_msg_resource`
+--
+
+LOCK TABLES `mw_msg_resource` WRITE;
+/*!40000 ALTER TABLE `mw_msg_resource` DISABLE KEYS */;
+INSERT INTO `mw_msg_resource` VALUES ('ext.vector.collapsibleNav','en','{\"vector-collapsiblenav-more\":\"More languages\"}','20110108005000'),('ext.vector.collapsibleTabs','en','{}','20110108005000'),('ext.vector.simpleSearch','en','{\"vector-simplesearch-search\":\"Search\",\"vector-simplesearch-containing\":\"containing...\"}','20110108005000'),('ext.wikiEditor','en','{}','20110110172914'),('ext.wikiEditor.toolbar','en','{\"wikieditor-toolbar-loading\":\"Loading...\",\"wikieditor-toolbar-tool-bold\":\"Bold\",\"wikieditor-toolbar-tool-bold-example\":\"Bold text\",\"wikieditor-toolbar-tool-italic\":\"Italic\",\"wikieditor-toolbar-tool-italic-example\":\"Italic text\",\"wikieditor-toolbar-tool-ilink\":\"Internal link\",\"wikieditor-toolbar-tool-ilink-example\":\"Link title\",\"wikieditor-toolbar-tool-xlink\":\"External link (remember http:\\/\\/ prefix)\",\"wikieditor-toolbar-tool-xlink-example\":\"http:\\/\\/www.example.com link title\",\"wikieditor-toolbar-tool-link\":\"Link\",\"wikieditor-toolbar-tool-link-title\":\"Insert link\",\"wikieditor-toolbar-tool-link-int\":\"To a wiki page\",\"wikieditor-toolbar-tool-link-int-target\":\"Target page or URL:\",\"wikieditor-toolbar-tool-link-int-target-tooltip\":\"Page title or URL\",\"wikieditor-toolbar-tool-link-int-text\":\"Text to display:\",\"wikieditor-toolbar-tool-link-int-text-tooltip\":\"Text to be displayed\",\"wikieditor-toolbar-tool-link-ext\":\"To an external web page\",\"wikieditor-toolbar-tool-link-ext-target\":\"Link URL:\",\"wikieditor-toolbar-tool-link-ext-text\":\"Link text:\",\"wikieditor-toolbar-tool-link-insert\":\"Insert link\",\"wikieditor-toolbar-tool-link-cancel\":\"Cancel\",\"wikieditor-toolbar-tool-link-int-target-status-exists\":\"Page exists\",\"wikieditor-toolbar-tool-link-int-target-status-notexists\":\"Page does not exist\",\"wikieditor-toolbar-tool-link-int-target-status-invalid\":\"Invalid title\",\"wikieditor-toolbar-tool-link-int-target-status-external\":\"External link\",\"wikieditor-toolbar-tool-link-int-target-status-loading\":\"Checking page existence...\",\"wikieditor-toolbar-tool-link-int-invalid\":\"The title you specified is invalid.\",\"wikieditor-toolbar-tool-link-lookslikeinternal\":\"The URL you specified looks like it was intended as a link to another wiki page.\\nDo you want to make it an internal link?\",\"wikieditor-toolbar-tool-link-lookslikeinternal-int\":\"Internal link\",\"wikieditor-toolbar-tool-link-lookslikeinternal-ext\":\"External link\",\"wikieditor-toolbar-tool-link-empty\":\"You did not enter anything to link to.\",\"wikieditor-toolbar-tool-file\":\"Embedded file\",\"wikieditor-toolbar-tool-file-pre\":\"$1{{ns:file}}:\",\"wikieditor-toolbar-tool-file-example\":\"Example.jpg\",\"wikieditor-toolbar-tool-reference\":\"Reference\",\"wikieditor-toolbar-tool-reference-title\":\"Insert reference\",\"wikieditor-toolbar-tool-reference-cancel\":\"Cancel\",\"wikieditor-toolbar-tool-reference-text\":\"Reference text\",\"wikieditor-toolbar-tool-reference-insert\":\"Insert\",\"wikieditor-toolbar-tool-reference-example\":\"Insert footnote text here\",\"wikieditor-toolbar-tool-signature\":\"Signature and timestamp\",\"wikieditor-toolbar-section-advanced\":\"Advanced\",\"wikieditor-toolbar-tool-heading\":\"Heading\",\"wikieditor-toolbar-tool-heading-1\":\"Level 1\",\"wikieditor-toolbar-tool-heading-2\":\"Level 2\",\"wikieditor-toolbar-tool-heading-3\":\"Level 3\",\"wikieditor-toolbar-tool-heading-4\":\"Level 4\",\"wikieditor-toolbar-tool-heading-5\":\"Level 5\",\"wikieditor-toolbar-tool-heading-example\":\"Heading text\",\"wikieditor-toolbar-group-format\":\"Format\",\"wikieditor-toolbar-tool-ulist\":\"Bulleted list\",\"wikieditor-toolbar-tool-ulist-example\":\"Bulleted list item\",\"wikieditor-toolbar-tool-olist\":\"Numbered list\",\"wikieditor-toolbar-tool-olist-example\":\"Numbered list item\",\"wikieditor-toolbar-tool-indent\":\"Indentation\",\"wikieditor-toolbar-tool-indent-example\":\"Indented line\",\"wikieditor-toolbar-tool-nowiki\":\"No wiki formatting\",\"wikieditor-toolbar-tool-nowiki-example\":\"Insert non-formatted text here\",\"wikieditor-toolbar-tool-redirect\":\"Redirect\",\"wikieditor-toolbar-tool-redirect-example\":\"Target page name\",\"wikieditor-toolbar-tool-big\":\"Big\",\"wikieditor-toolbar-tool-big-example\":\"Big text\",\"wikieditor-toolbar-tool-small\":\"Small\",\"wikieditor-toolbar-tool-small-example\":\"Small text\",\"wikieditor-toolbar-tool-superscript\":\"Superscript\",\"wikieditor-toolbar-tool-superscript-example\":\"Superscript text\",\"wikieditor-toolbar-tool-subscript\":\"Subscript\",\"wikieditor-toolbar-tool-subscript-example\":\"Subscript text\",\"wikieditor-toolbar-group-insert\":\"Insert\",\"wikieditor-toolbar-tool-gallery\":\"Picture gallery\",\"wikieditor-toolbar-tool-gallery-example\":\"{{ns:file}}:Example.jpg|Caption1\\n{{ns:file}}:Example.jpg|Caption2\",\"wikieditor-toolbar-tool-newline\":\"New line\",\"wikieditor-toolbar-tool-table\":\"Table\",\"wikieditor-toolbar-tool-table-example-old\":\"-\\n! header 1\\n! header 2\\n! header 3\\n|-\\n| row 1, cell 1\\n| row 1, cell 2\\n| row 1, cell 3\\n|-\\n| row 2, cell 1\\n| row 2, cell 2\\n| row 2, cell 3\",\"wikieditor-toolbar-tool-table-example-cell-text\":\"Cell text\",\"wikieditor-toolbar-tool-table-example\":\"Example\",\"wikieditor-toolbar-tool-table-example-header\":\"Header text\",\"wikieditor-toolbar-tool-table-title\":\"Insert table\",\"wikieditor-toolbar-tool-table-dimensions-rows\":\"Rows\",\"wikieditor-toolbar-tool-table-dimensions-columns\":\"Columns\",\"wikieditor-toolbar-tool-table-dimensions-header\":\"Add header row\",\"wikieditor-toolbar-tool-table-wikitable\":\"Style with borders\",\"wikieditor-toolbar-tool-table-sortable\":\"Make table sortable\",\"wikieditor-toolbar-tool-table-insert\":\"Insert\",\"wikieditor-toolbar-tool-table-cancel\":\"Cancel\",\"wikieditor-toolbar-tool-table-example-text\":\"Lorem ipsum dolor sit amet, consectetur adipiscing elit. Ut nec purus diam. Sed aliquam imperdiet nunc quis lacinia. Donec rutrum consectetur placerat. Sed volutpat neque non purus faucibus id ultricies enim euismod.\",\"wikieditor-toolbar-tool-table-toomany\":\"Inserting a table with more than $1 cells is not possible with this dialog.\",\"wikieditor-toolbar-tool-table-invalidnumber\":\"You have not entered a valid number of rows or columns.\",\"wikieditor-toolbar-tool-table-zero\":\"You cannot insert a table with zero rows or columns.\",\"wikieditor-toolbar-tool-replace\":\"Search and replace\",\"wikieditor-toolbar-tool-replace-title\":\"Search and replace\",\"wikieditor-toolbar-tool-replace-search\":\"Search for:\",\"wikieditor-toolbar-tool-replace-replace\":\"Replace with:\",\"wikieditor-toolbar-tool-replace-case\":\"Match case\",\"wikieditor-toolbar-tool-replace-regex\":\"Treat search string as a regular expression\",\"wikieditor-toolbar-tool-replace-button-findnext\":\"Find next\",\"wikieditor-toolbar-tool-replace-button-replacenext\":\"Replace next\",\"wikieditor-toolbar-tool-replace-button-replaceall\":\"Replace all\",\"wikieditor-toolbar-tool-replace-close\":\"Close\",\"wikieditor-toolbar-tool-replace-nomatch\":\"Your search did not match anything.\",\"wikieditor-toolbar-tool-replace-success\":\"$1 replacement(s) made.\",\"wikieditor-toolbar-tool-replace-emptysearch\":\"You did not enter anything to search for.\",\"wikieditor-toolbar-tool-replace-invalidregex\":\"The regular expression you entered is invalid: $1\",\"wikieditor-toolbar-section-characters\":\"Special characters\",\"wikieditor-toolbar-characters-page-latin\":\"Latin\",\"wikieditor-toolbar-characters-page-latinextended\":\"Latin extended\",\"wikieditor-toolbar-characters-page-ipa\":\"IPA\",\"wikieditor-toolbar-characters-page-symbols\":\"Symbols\",\"wikieditor-toolbar-characters-page-greek\":\"Greek\",\"wikieditor-toolbar-characters-page-cyrillic\":\"Cyrillic\",\"wikieditor-toolbar-characters-page-arabic\":\"Arabic\",\"wikieditor-toolbar-characters-page-persian\":\"Persian\",\"wikieditor-toolbar-characters-page-hebrew\":\"Hebrew\",\"wikieditor-toolbar-characters-page-bangla\":\"Bangla\",\"wikieditor-toolbar-characters-page-telugu\":\"Telugu\",\"wikieditor-toolbar-characters-page-sinhala\":\"Sinhala\",\"wikieditor-toolbar-characters-page-gujarati\":\"Gujarati\",\"wikieditor-toolbar-characters-page-thai\":\"Thai\",\"wikieditor-toolbar-characters-page-lao\":\"Lao\",\"wikieditor-toolbar-characters-page-khmer\":\"Khmer\",\"wikieditor-toolbar-section-help\":\"Help\",\"wikieditor-toolbar-help-heading-description\":\"Description\",\"wikieditor-toolbar-help-heading-syntax\":\"What you type\",\"wikieditor-toolbar-help-heading-result\":\"What you get\",\"wikieditor-toolbar-help-page-format\":\"Formatting\",\"wikieditor-toolbar-help-page-link\":\"Links\",\"wikieditor-toolbar-help-page-heading\":\"Headings\",\"wikieditor-toolbar-help-page-list\":\"Lists\",\"wikieditor-toolbar-help-page-file\":\"Files\",\"wikieditor-toolbar-help-page-reference\":\"References\",\"wikieditor-toolbar-help-page-discussion\":\"Discussion\",\"wikieditor-toolbar-help-content-bold-description\":\"Bold\",\"wikieditor-toolbar-help-content-bold-syntax\":\"\'\'\'Bold text\'\'\'\",\"wikieditor-toolbar-help-content-bold-result\":\"<strong>Bold text<\\/strong>\",\"wikieditor-toolbar-help-content-italic-description\":\"Italic\",\"wikieditor-toolbar-help-content-italic-syntax\":\"\'\'Italic text\'\'\",\"wikieditor-toolbar-help-content-italic-result\":\"<em>Italic text<\\/em>\",\"wikieditor-toolbar-help-content-bolditalic-description\":\"Bold &amp; italic\",\"wikieditor-toolbar-help-content-bolditalic-syntax\":\"\'\'\'\'\'Bold &amp; italic text\'\'\'\'\'\",\"wikieditor-toolbar-help-content-bolditalic-result\":\"<strong><em>Bold &amp; italic text<\\/em><\\/strong>\",\"wikieditor-toolbar-help-content-ilink-description\":\"Internal link\",\"wikieditor-toolbar-help-content-ilink-syntax\":\"[[Page title|Link label]]<br \\/>[[Page title]]\",\"wikieditor-toolbar-help-content-ilink-result\":\"<a href=\'#\'>Link label<\\/a><br \\/><a href=\'#\'>Page title<\\/a>\",\"wikieditor-toolbar-help-content-xlink-description\":\"External link\",\"wikieditor-toolbar-help-content-xlink-syntax\":\"[http:\\/\\/www.example.org Link label]<br \\/>[http:\\/\\/www.example.org]<br \\/>http:\\/\\/www.example.org\",\"wikieditor-toolbar-help-content-xlink-result\":\"<a href=\'#\' class=\'external\'>Link label<\\/a><br \\/><a href=\'#\' class=\'external autonumber\'>[1]<\\/a><br \\/><a href=\'#\' class=\'external\'>http:\\/\\/www.example.org<\\/a>\",\"wikieditor-toolbar-help-content-heading1-description\":\"&lt;wikieditor-toolbar-help-content-heading1-description&gt;\",\"wikieditor-toolbar-help-content-heading1-syntax\":\"&lt;wikieditor-toolbar-help-content-heading1-syntax&gt;\",\"wikieditor-toolbar-help-content-heading1-result\":\"&lt;wikieditor-toolbar-help-content-heading1-result&gt;\",\"wikieditor-toolbar-help-content-heading2-description\":\"2nd level heading\",\"wikieditor-toolbar-help-content-heading2-syntax\":\"== Heading text ==\",\"wikieditor-toolbar-help-content-heading2-result\":\"<h2>Heading text<\\/h2>\",\"wikieditor-toolbar-help-content-heading3-description\":\"3rd level heading\",\"wikieditor-toolbar-help-content-heading3-syntax\":\"=== Heading text ===\",\"wikieditor-toolbar-help-content-heading3-result\":\"<h3>Heading text<\\/h3>\",\"wikieditor-toolbar-help-content-heading4-description\":\"4th level heading\",\"wikieditor-toolbar-help-content-heading4-syntax\":\"==== Heading text ====\",\"wikieditor-toolbar-help-content-heading4-result\":\"<h4>Heading text<\\/h4>\",\"wikieditor-toolbar-help-content-heading5-description\":\"5th level heading\",\"wikieditor-toolbar-help-content-heading5-syntax\":\"===== Heading text =====\",\"wikieditor-toolbar-help-content-heading5-result\":\"<h5>Heading text<\\/h5>\",\"wikieditor-toolbar-help-content-ulist-description\":\"Bulleted list\",\"wikieditor-toolbar-help-content-ulist-syntax\":\"* List item<br \\/>* List item\",\"wikieditor-toolbar-help-content-ulist-result\":\"<ul><li>List item<\\/li><li>List item<\\/li><\\/ul>\",\"wikieditor-toolbar-help-content-olist-description\":\"Numbered list\",\"wikieditor-toolbar-help-content-olist-syntax\":\"# List item<br \\/># List item\",\"wikieditor-toolbar-help-content-olist-result\":\"<ol><li>List item<\\/li><li>List item<\\/li><\\/ol>\",\"wikieditor-toolbar-help-content-file-description\":\"Embedded file\",\"wikieditor-toolbar-help-content-file-syntax\":\"[[{{ns:file}}:Example.png|thumb|Caption text]]\",\"wikieditor-toolbar-help-content-file-result\":\"<div style=\'width:104px;\' class=\'thumbinner\'><a title=\'Caption text\' class=\'image\' href=\'#\'><img height=\'50\' width=\'100\' border=\'0\' class=\'thumbimage\' src=\'extensions\\/UsabilityInitiative\\/images\\/wikiEditor\\/toolbar\\/example-image.png\' alt=\'\'\\/><\\/a><div class=\'thumbcaption\'><div class=\'magnify\'><a title=\'Enlarge\' class=\'internal\' href=\'#\'><img height=\'11\' width=\'15\' alt=\'\' src=\'$1\\/common\\/images\\/magnify-clip.png\'\\/><\\/a><\\/div>Caption text<\\/div><\\/div>\",\"wikieditor-toolbar-help-content-reference-description\":\"Reference\",\"wikieditor-toolbar-help-content-reference-syntax\":\"Page text.&lt;ref name=\\\"test\\\"&gt;[http:\\/\\/www.example.org Link text], additional text.&lt;\\/ref&gt;\",\"wikieditor-toolbar-help-content-reference-result\":\"Page text.<sup><a href=\'#\'>[1]<\\/a><\\/sup>\",\"wikieditor-toolbar-help-content-rereference-description\":\"Additional use of same reference\",\"wikieditor-toolbar-help-content-rereference-syntax\":\"&lt;ref name=\\\"test\\\" \\/&gt;\",\"wikieditor-toolbar-help-content-rereference-result\":\"Page text.<sup><a href=\'#\'>[1]<\\/a><\\/sup>\",\"wikieditor-toolbar-help-content-showreferences-description\":\"Display references\",\"wikieditor-toolbar-help-content-showreferences-syntax\":\"&lt;references \\/&gt;\",\"wikieditor-toolbar-help-content-showreferences-result\":\"<ol class=\'references\'><li id=\'cite_note-test-0\'><b><a title=\'\' href=\'#\'>^<\\/a><\\/b> <a rel=\'nofollow\' title=\'http:\\/\\/www.example.org\' class=\'external text\' href=\'#\'>Link text<\\/a>, additional text.<\\/li><\\/ol>\",\"wikieditor-toolbar-help-content-signaturetimestamp-description\":\"Signature with timestamp\",\"wikieditor-toolbar-help-content-signaturetimestamp-syntax\":\"~~~~\",\"wikieditor-toolbar-help-content-signaturetimestamp-result\":\"<a href=\'#\' title=\'{{#special:mypage}}\'>Username<\\/a> (<a href=\'#\' title=\'{{#special:mytalk}}\'>talk<\\/a>) 15:54, 10 June 2009 (UTC)\",\"wikieditor-toolbar-help-content-signature-description\":\"Signature\",\"wikieditor-toolbar-help-content-signature-syntax\":\"~~~\",\"wikieditor-toolbar-help-content-signature-result\":\"<a href=\'#\' title=\'{{#special:mypage}}\'>Username<\\/a> (<a href=\'#\' title=\'{{#special:mytalk}}\'>talk<\\/a>)\",\"wikieditor-toolbar-help-content-indent-description\":\"Indent\",\"wikieditor-toolbar-help-content-indent-syntax\":\"Normal text<br \\/>:Indented text<br \\/>::Indented text\",\"wikieditor-toolbar-help-content-indent-result\":\"Normal text<dl><dd>Indented text<dl><dd>Indented text<\\/dd><\\/dl><\\/dd><\\/dl>\"}','20110110172914'),('jquery.async','en','{}','20110110172915'),('jquery.autoEllipsis','en','{}','20110110172915'),('jquery.checkboxShiftClick','en','{}','20110110172915'),('jquery.client','en','{}','20110110172915'),('jquery.collapsibleTabs','en','{}','20110110172915'),('jquery.cookie','en','{}','20110110172915'),('jquery.delayedBind','en','{}','20110110172915'),('jquery.highlightText','en','{}','20110110172915'),('jquery.makeCollapsible','en','{\"collapsible-expand\":\"Expand\",\"collapsible-collapse\":\"Collapse\"}','20110110172915'),('jquery.placeholder','en','{}','20110110172915'),('jquery.suggestions','en','{}','20110110172915'),('jquery.tabIndex','en','{}','20110110172915'),('jquery.textSelection','en','{}','20110110172915'),('jquery.wikiEditor','en','{\"wikieditor-wikitext-tab\":\"Wikitext\",\"wikieditor-loading\":\"Loading\"}','20110110172914'),('jquery.wikiEditor.toolbar','en','{}','20110110172914'),('mediawiki.action.watch.ajax','en','{}','20110110172915'),('mediawiki.language','en','{}','20110110172915'),('mediawiki.legacy.ajax','en','{\"watch\":\"Watch\",\"unwatch\":\"Unwatch\",\"watching\":\"Watching...\",\"unwatching\":\"Unwatching...\",\"tooltip-ca-watch\":\"Add this page to your watchlist\",\"tooltip-ca-unwatch\":\"Remove this page from your watchlist\"}','20110110172915'),('mediawiki.legacy.edit','en','{}','20110110172915'),('mediawiki.legacy.wikibits','en','{\"showtoc\":\"show\",\"hidetoc\":\"hide\"}','20110110172915'),('mediawiki.util','en','{}','20110110172915');
+/*!40000 ALTER TABLE `mw_msg_resource` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_msg_resource_links`
+--
+
+DROP TABLE IF EXISTS `mw_msg_resource_links`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_msg_resource_links` (
+ `mrl_resource` varbinary(255) NOT NULL,
+ `mrl_message` varbinary(255) NOT NULL,
+ UNIQUE KEY `mrl_message_resource` (`mrl_message`,`mrl_resource`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_msg_resource_links`
+--
+
+LOCK TABLES `mw_msg_resource_links` WRITE;
+/*!40000 ALTER TABLE `mw_msg_resource_links` DISABLE KEYS */;
+INSERT INTO `mw_msg_resource_links` VALUES ('jquery.makeCollapsible','collapsible-collapse'),('jquery.makeCollapsible','collapsible-expand'),('mediawiki.legacy.wikibits','hidetoc'),('mediawiki.legacy.wikibits','showtoc'),('mediawiki.legacy.ajax','tooltip-ca-unwatch'),('mediawiki.legacy.ajax','tooltip-ca-watch'),('mediawiki.legacy.ajax','unwatch'),('mediawiki.legacy.ajax','unwatching'),('ext.vector.collapsibleNav','vector-collapsiblenav-more'),('ext.vector.simpleSearch','vector-simplesearch-containing'),('ext.vector.simpleSearch','vector-simplesearch-search'),('mediawiki.legacy.ajax','watch'),('mediawiki.legacy.ajax','watching'),('jquery.wikiEditor','wikieditor-loading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-arabic'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-bangla'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-cyrillic'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-greek'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-gujarati'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-hebrew'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-ipa'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-khmer'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-lao'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-latin'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-latinextended'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-persian'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-sinhala'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-symbols'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-telugu'),('ext.wikiEditor.toolbar','wikieditor-toolbar-characters-page-thai'),('ext.wikiEditor.toolbar','wikieditor-toolbar-group-format'),('ext.wikiEditor.toolbar','wikieditor-toolbar-group-insert'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bold-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bold-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bold-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bolditalic-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bolditalic-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-bolditalic-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-file-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-file-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-file-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading1-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading1-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading1-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading2-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading2-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading2-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading3-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading3-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading3-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading4-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading4-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading4-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading5-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading5-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-heading5-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ilink-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ilink-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ilink-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-indent-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-indent-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-indent-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-italic-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-italic-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-italic-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-olist-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-olist-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-olist-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-reference-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-reference-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-reference-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-rereference-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-rereference-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-rereference-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-showreferences-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-showreferences-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-showreferences-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signature-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signature-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signature-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signaturetimestamp-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signaturetimestamp-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-signaturetimestamp-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ulist-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ulist-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-ulist-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-xlink-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-xlink-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-content-xlink-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-heading-description'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-heading-result'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-heading-syntax'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-discussion'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-file'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-format'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-heading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-link'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-list'),('ext.wikiEditor.toolbar','wikieditor-toolbar-help-page-reference'),('ext.wikiEditor.toolbar','wikieditor-toolbar-loading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-section-advanced'),('ext.wikiEditor.toolbar','wikieditor-toolbar-section-characters'),('ext.wikiEditor.toolbar','wikieditor-toolbar-section-help'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-big'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-big-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-bold'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-bold-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-file'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-file-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-file-pre'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-gallery'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-gallery-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-1'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-2'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-3'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-4'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-5'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-heading-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-ilink'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-ilink-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-indent'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-indent-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-italic'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-italic-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-cancel'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-empty'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-ext'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-ext-target'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-ext-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-insert'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-invalid'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-exists'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-external'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-invalid'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-loading'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-status-notexists'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-target-tooltip'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-int-text-tooltip'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-lookslikeinternal'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-lookslikeinternal-ext'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-lookslikeinternal-int'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-link-title'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-newline'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-nowiki'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-nowiki-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-olist'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-olist-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-redirect'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-redirect-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-cancel'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-insert'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-reference-title'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-button-findnext'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-button-replaceall'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-button-replacenext'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-case'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-close'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-emptysearch'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-invalidregex'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-nomatch'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-regex'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-replace'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-search'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-success'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-replace-title'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-signature'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-small'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-small-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-subscript'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-subscript-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-superscript'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-superscript-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-cancel'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-dimensions-columns'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-dimensions-header'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-dimensions-rows'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example-cell-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example-header'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example-old'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-example-text'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-insert'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-invalidnumber'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-sortable'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-title'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-toomany'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-wikitable'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-table-zero'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-ulist'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-ulist-example'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-xlink'),('ext.wikiEditor.toolbar','wikieditor-toolbar-tool-xlink-example'),('jquery.wikiEditor','wikieditor-wikitext-tab');
+/*!40000 ALTER TABLE `mw_msg_resource_links` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_objectcache`
+--
+
+DROP TABLE IF EXISTS `mw_objectcache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_objectcache` (
+ `keyname` varbinary(255) NOT NULL DEFAULT '',
+ `value` mediumblob,
+ `exptime` datetime DEFAULT NULL,
+ PRIMARY KEY (`keyname`),
+ KEY `exptime` (`exptime`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_objectcache`
+--
+
+LOCK TABLES `mw_objectcache` WRITE;
+/*!40000 ALTER TABLE `mw_objectcache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_objectcache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_oldimage`
+--
+
+DROP TABLE IF EXISTS `mw_oldimage`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_oldimage` (
+ `oi_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `oi_archive_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `oi_size` int(10) unsigned NOT NULL DEFAULT '0',
+ `oi_width` int(11) NOT NULL DEFAULT '0',
+ `oi_height` int(11) NOT NULL DEFAULT '0',
+ `oi_bits` int(11) NOT NULL DEFAULT '0',
+ `oi_description` tinyblob NOT NULL,
+ `oi_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `oi_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `oi_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `oi_metadata` mediumblob NOT NULL,
+ `oi_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
+ `oi_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') NOT NULL DEFAULT 'unknown',
+ `oi_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown',
+ `oi_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `oi_sha1` varbinary(32) NOT NULL DEFAULT '',
+ KEY `oi_usertext_timestamp` (`oi_user_text`,`oi_timestamp`),
+ KEY `oi_name_timestamp` (`oi_name`,`oi_timestamp`),
+ KEY `oi_name_archive_name` (`oi_name`,`oi_archive_name`(14)),
+ KEY `oi_sha1` (`oi_sha1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_oldimage`
+--
+
+LOCK TABLES `mw_oldimage` WRITE;
+/*!40000 ALTER TABLE `mw_oldimage` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_oldimage` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_page`
+--
+
+DROP TABLE IF EXISTS `mw_page`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_page` (
+ `page_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `page_namespace` int(11) NOT NULL,
+ `page_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `page_restrictions` tinyblob NOT NULL,
+ `page_counter` bigint(20) unsigned NOT NULL DEFAULT '0',
+ `page_is_redirect` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `page_is_new` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `page_random` double unsigned NOT NULL,
+ `page_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `page_latest` int(10) unsigned NOT NULL,
+ `page_len` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`page_id`),
+ UNIQUE KEY `name_title` (`page_namespace`,`page_title`),
+ KEY `page_random` (`page_random`),
+ KEY `page_len` (`page_len`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_page`
+--
+
+LOCK TABLES `mw_page` WRITE;
+/*!40000 ALTER TABLE `mw_page` DISABLE KEYS */;
+INSERT INTO `mw_page` VALUES (1,0,'Main_Page','',3,0,1,0.045389076294,'20110107184113',1,438),(2,0,'TestResources','',0,0,1,0.227355086893,'20110110173217',2,57);
+/*!40000 ALTER TABLE `mw_page` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_page_props`
+--
+
+DROP TABLE IF EXISTS `mw_page_props`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_page_props` (
+ `pp_page` int(11) NOT NULL,
+ `pp_propname` varbinary(60) NOT NULL,
+ `pp_value` blob NOT NULL,
+ UNIQUE KEY `pp_page_propname` (`pp_page`,`pp_propname`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_page_props`
+--
+
+LOCK TABLES `mw_page_props` WRITE;
+/*!40000 ALTER TABLE `mw_page_props` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_page_props` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_page_restrictions`
+--
+
+DROP TABLE IF EXISTS `mw_page_restrictions`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_page_restrictions` (
+ `pr_page` int(11) NOT NULL,
+ `pr_type` varbinary(60) NOT NULL,
+ `pr_level` varbinary(60) NOT NULL,
+ `pr_cascade` tinyint(4) NOT NULL,
+ `pr_user` int(11) DEFAULT NULL,
+ `pr_expiry` varbinary(14) DEFAULT NULL,
+ `pr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ PRIMARY KEY (`pr_id`),
+ UNIQUE KEY `pr_pagetype` (`pr_page`,`pr_type`),
+ KEY `pr_typelevel` (`pr_type`,`pr_level`),
+ KEY `pr_level` (`pr_level`),
+ KEY `pr_cascade` (`pr_cascade`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_page_restrictions`
+--
+
+LOCK TABLES `mw_page_restrictions` WRITE;
+/*!40000 ALTER TABLE `mw_page_restrictions` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_page_restrictions` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_pagelinks`
+--
+
+DROP TABLE IF EXISTS `mw_pagelinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_pagelinks` (
+ `pl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `pl_namespace` int(11) NOT NULL DEFAULT '0',
+ `pl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `pl_from` (`pl_from`,`pl_namespace`,`pl_title`),
+ UNIQUE KEY `pl_namespace` (`pl_namespace`,`pl_title`,`pl_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_pagelinks`
+--
+
+LOCK TABLES `mw_pagelinks` WRITE;
+/*!40000 ALTER TABLE `mw_pagelinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_pagelinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_protected_titles`
+--
+
+DROP TABLE IF EXISTS `mw_protected_titles`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_protected_titles` (
+ `pt_namespace` int(11) NOT NULL,
+ `pt_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `pt_user` int(10) unsigned NOT NULL,
+ `pt_reason` tinyblob,
+ `pt_timestamp` binary(14) NOT NULL,
+ `pt_expiry` varbinary(14) NOT NULL DEFAULT '',
+ `pt_create_perm` varbinary(60) NOT NULL,
+ UNIQUE KEY `pt_namespace_title` (`pt_namespace`,`pt_title`),
+ KEY `pt_timestamp` (`pt_timestamp`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_protected_titles`
+--
+
+LOCK TABLES `mw_protected_titles` WRITE;
+/*!40000 ALTER TABLE `mw_protected_titles` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_protected_titles` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_querycache`
+--
+
+DROP TABLE IF EXISTS `mw_querycache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_querycache` (
+ `qc_type` varbinary(32) NOT NULL,
+ `qc_value` int(10) unsigned NOT NULL DEFAULT '0',
+ `qc_namespace` int(11) NOT NULL DEFAULT '0',
+ `qc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ KEY `qc_type` (`qc_type`,`qc_value`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_querycache`
+--
+
+LOCK TABLES `mw_querycache` WRITE;
+/*!40000 ALTER TABLE `mw_querycache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_querycache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_querycache_info`
+--
+
+DROP TABLE IF EXISTS `mw_querycache_info`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_querycache_info` (
+ `qci_type` varbinary(32) NOT NULL DEFAULT '',
+ `qci_timestamp` binary(14) NOT NULL DEFAULT '19700101000000',
+ UNIQUE KEY `qci_type` (`qci_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_querycache_info`
+--
+
+LOCK TABLES `mw_querycache_info` WRITE;
+/*!40000 ALTER TABLE `mw_querycache_info` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_querycache_info` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_querycachetwo`
+--
+
+DROP TABLE IF EXISTS `mw_querycachetwo`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_querycachetwo` (
+ `qcc_type` varbinary(32) NOT NULL,
+ `qcc_value` int(10) unsigned NOT NULL DEFAULT '0',
+ `qcc_namespace` int(11) NOT NULL DEFAULT '0',
+ `qcc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `qcc_namespacetwo` int(11) NOT NULL DEFAULT '0',
+ `qcc_titletwo` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ KEY `qcc_type` (`qcc_type`,`qcc_value`),
+ KEY `qcc_title` (`qcc_type`,`qcc_namespace`,`qcc_title`),
+ KEY `qcc_titletwo` (`qcc_type`,`qcc_namespacetwo`,`qcc_titletwo`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_querycachetwo`
+--
+
+LOCK TABLES `mw_querycachetwo` WRITE;
+/*!40000 ALTER TABLE `mw_querycachetwo` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_querycachetwo` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_recentchanges`
+--
+
+DROP TABLE IF EXISTS `mw_recentchanges`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_recentchanges` (
+ `rc_id` int(11) NOT NULL AUTO_INCREMENT,
+ `rc_timestamp` varbinary(14) NOT NULL DEFAULT '',
+ `rc_cur_time` varbinary(14) NOT NULL DEFAULT '',
+ `rc_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `rc_namespace` int(11) NOT NULL DEFAULT '0',
+ `rc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rc_comment` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rc_minor` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_bot` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_new` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_cur_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_this_oldid` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_last_oldid` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_type` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_moved_to_ns` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_moved_to_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rc_patrolled` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_ip` varbinary(40) NOT NULL DEFAULT '',
+ `rc_old_len` int(11) DEFAULT NULL,
+ `rc_new_len` int(11) DEFAULT NULL,
+ `rc_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_logid` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_log_type` varbinary(255) DEFAULT NULL,
+ `rc_log_action` varbinary(255) DEFAULT NULL,
+ `rc_params` blob,
+ PRIMARY KEY (`rc_id`),
+ KEY `rc_timestamp` (`rc_timestamp`),
+ KEY `rc_namespace_title` (`rc_namespace`,`rc_title`),
+ KEY `rc_cur_id` (`rc_cur_id`),
+ KEY `new_name_timestamp` (`rc_new`,`rc_namespace`,`rc_timestamp`),
+ KEY `rc_ip` (`rc_ip`),
+ KEY `rc_ns_usertext` (`rc_namespace`,`rc_user_text`),
+ KEY `rc_user_text` (`rc_user_text`,`rc_timestamp`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_recentchanges`
+--
+
+LOCK TABLES `mw_recentchanges` WRITE;
+/*!40000 ALTER TABLE `mw_recentchanges` DISABLE KEYS */;
+INSERT INTO `mw_recentchanges` VALUES (1,'20110107184113','20110107184113',0,'MediaWiki Default',0,'Main_Page','',0,0,1,1,1,0,1,0,'',0,'::1',0,438,0,0,NULL,'',''),(2,'20110110173131','20110110173131',1,'WikiSysop',0,'TestResources','Created page with \"Test the the SimpleSelenium database was loaded correctly\"',0,0,1,2,2,0,1,0,'',1,'::1',0,57,0,0,NULL,'','');
+/*!40000 ALTER TABLE `mw_recentchanges` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_redirect`
+--
+
+DROP TABLE IF EXISTS `mw_redirect`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_redirect` (
+ `rd_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `rd_namespace` int(11) NOT NULL DEFAULT '0',
+ `rd_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rd_interwiki` varchar(32) DEFAULT NULL,
+ `rd_fragment` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
+ PRIMARY KEY (`rd_from`),
+ KEY `rd_ns_title` (`rd_namespace`,`rd_title`,`rd_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_redirect`
+--
+
+LOCK TABLES `mw_redirect` WRITE;
+/*!40000 ALTER TABLE `mw_redirect` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_redirect` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_revision`
+--
+
+DROP TABLE IF EXISTS `mw_revision`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_revision` (
+ `rev_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `rev_page` int(10) unsigned NOT NULL,
+ `rev_text_id` int(10) unsigned NOT NULL,
+ `rev_comment` tinyblob NOT NULL,
+ `rev_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `rev_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rev_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `rev_minor_edit` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rev_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rev_len` int(10) unsigned DEFAULT NULL,
+ `rev_parent_id` int(10) unsigned DEFAULT NULL,
+ PRIMARY KEY (`rev_id`),
+ UNIQUE KEY `rev_page_id` (`rev_page`,`rev_id`),
+ KEY `rev_timestamp` (`rev_timestamp`),
+ KEY `page_timestamp` (`rev_page`,`rev_timestamp`),
+ KEY `user_timestamp` (`rev_user`,`rev_timestamp`),
+ KEY `usertext_timestamp` (`rev_user_text`,`rev_timestamp`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_revision`
+--
+
+LOCK TABLES `mw_revision` WRITE;
+/*!40000 ALTER TABLE `mw_revision` DISABLE KEYS */;
+INSERT INTO `mw_revision` VALUES (1,1,1,'',0,'MediaWiki Default','20110107184113',0,0,438,0),(2,2,2,'Created page with \"Test the the SimpleSelenium database was loaded correctly\"',1,'WikiSysop','20110110173131',0,0,57,0);
+/*!40000 ALTER TABLE `mw_revision` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_searchindex`
+--
+
+DROP TABLE IF EXISTS `mw_searchindex`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_searchindex` (
+ `si_page` int(10) unsigned NOT NULL,
+ `si_title` varchar(255) NOT NULL DEFAULT '',
+ `si_text` mediumtext NOT NULL,
+ UNIQUE KEY `si_page` (`si_page`),
+ FULLTEXT KEY `si_title` (`si_title`),
+ FULLTEXT KEY `si_text` (`si_text`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_searchindex`
+--
+
+LOCK TABLES `mw_searchindex` WRITE;
+/*!40000 ALTER TABLE `mw_searchindex` DISABLE KEYS */;
+INSERT INTO `mw_searchindex` VALUES (1,'main page',' mediawiki hasu800 been successfully installed. consult theu800 user user\'su800 guide foru800 information onu800 using theu800 wiki software. getting started getting started getting started configuration settings list mediawiki faqu800 mediawiki release mailing list '),(2,'testresources',' test theu800 theu800 simpleselenium database wasu800 loaded correctly ');
+/*!40000 ALTER TABLE `mw_searchindex` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_site_stats`
+--
+
+DROP TABLE IF EXISTS `mw_site_stats`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_site_stats` (
+ `ss_row_id` int(10) unsigned NOT NULL,
+ `ss_total_views` bigint(20) unsigned DEFAULT '0',
+ `ss_total_edits` bigint(20) unsigned DEFAULT '0',
+ `ss_good_articles` bigint(20) unsigned DEFAULT '0',
+ `ss_total_pages` bigint(20) DEFAULT '-1',
+ `ss_users` bigint(20) DEFAULT '-1',
+ `ss_active_users` bigint(20) DEFAULT '-1',
+ `ss_admins` int(11) DEFAULT '-1',
+ `ss_images` int(11) DEFAULT '0',
+ UNIQUE KEY `ss_row_id` (`ss_row_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_site_stats`
+--
+
+LOCK TABLES `mw_site_stats` WRITE;
+/*!40000 ALTER TABLE `mw_site_stats` DISABLE KEYS */;
+INSERT INTO `mw_site_stats` VALUES (1,3,2,1,2,1,-1,-1,0);
+/*!40000 ALTER TABLE `mw_site_stats` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_tag_summary`
+--
+
+DROP TABLE IF EXISTS `mw_tag_summary`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_tag_summary` (
+ `ts_rc_id` int(11) DEFAULT NULL,
+ `ts_log_id` int(11) DEFAULT NULL,
+ `ts_rev_id` int(11) DEFAULT NULL,
+ `ts_tags` blob NOT NULL,
+ UNIQUE KEY `tag_summary_rc_id` (`ts_rc_id`),
+ UNIQUE KEY `tag_summary_log_id` (`ts_log_id`),
+ UNIQUE KEY `tag_summary_rev_id` (`ts_rev_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_tag_summary`
+--
+
+LOCK TABLES `mw_tag_summary` WRITE;
+/*!40000 ALTER TABLE `mw_tag_summary` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_tag_summary` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_templatelinks`
+--
+
+DROP TABLE IF EXISTS `mw_templatelinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_templatelinks` (
+ `tl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `tl_namespace` int(11) NOT NULL DEFAULT '0',
+ `tl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `tl_from` (`tl_from`,`tl_namespace`,`tl_title`),
+ UNIQUE KEY `tl_namespace` (`tl_namespace`,`tl_title`,`tl_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_templatelinks`
+--
+
+LOCK TABLES `mw_templatelinks` WRITE;
+/*!40000 ALTER TABLE `mw_templatelinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_templatelinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_text`
+--
+
+DROP TABLE IF EXISTS `mw_text`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_text` (
+ `old_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `old_text` mediumblob NOT NULL,
+ `old_flags` tinyblob NOT NULL,
+ PRIMARY KEY (`old_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 MAX_ROWS=10000000 AVG_ROW_LENGTH=10240;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_text`
+--
+
+LOCK TABLES `mw_text` WRITE;
+/*!40000 ALTER TABLE `mw_text` DISABLE KEYS */;
+INSERT INTO `mw_text` VALUES (1,'\'\'\'MediaWiki has been successfully installed.\'\'\'\n\nConsult the [http://meta.wikimedia.org/wiki/Help:Contents User\'s Guide] for information on using the wiki software.\n\n== Getting started ==\n* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]\n* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]','utf-8'),(2,'Test the the SimpleSelenium database was loaded correctly','utf-8');
+/*!40000 ALTER TABLE `mw_text` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_trackbacks`
+--
+
+DROP TABLE IF EXISTS `mw_trackbacks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_trackbacks` (
+ `tb_id` int(11) NOT NULL AUTO_INCREMENT,
+ `tb_page` int(11) DEFAULT NULL,
+ `tb_title` varchar(255) NOT NULL,
+ `tb_url` blob NOT NULL,
+ `tb_ex` text,
+ `tb_name` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`tb_id`),
+ KEY `tb_page` (`tb_page`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_trackbacks`
+--
+
+LOCK TABLES `mw_trackbacks` WRITE;
+/*!40000 ALTER TABLE `mw_trackbacks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_trackbacks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_transcache`
+--
+
+DROP TABLE IF EXISTS `mw_transcache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_transcache` (
+ `tc_url` varbinary(255) NOT NULL,
+ `tc_contents` text,
+ `tc_time` binary(14) DEFAULT NULL,
+ UNIQUE KEY `tc_url_idx` (`tc_url`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_transcache`
+--
+
+LOCK TABLES `mw_transcache` WRITE;
+/*!40000 ALTER TABLE `mw_transcache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_transcache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_updatelog`
+--
+
+DROP TABLE IF EXISTS `mw_updatelog`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_updatelog` (
+ `ul_key` varchar(255) NOT NULL,
+ `ul_value` blob,
+ PRIMARY KEY (`ul_key`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_updatelog`
+--
+
+LOCK TABLES `mw_updatelog` WRITE;
+/*!40000 ALTER TABLE `mw_updatelog` DISABLE KEYS */;
+INSERT INTO `mw_updatelog` VALUES ('cl_fields_update',NULL),('convert transcache field',NULL),('mime_minor_length',NULL),('populate category',NULL),('populate rev_len',NULL),('populate rev_parent_id',NULL),('updatelist-1.18alpha-1294425799','a:128:{i:0;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:6:\"ipb_id\";i:3;s:18:\"patch-ipblocks.sql\";}i:1;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:10:\"ipb_expiry\";i:3;s:20:\"patch-ipb_expiry.sql\";}i:2;a:1:{i:0;s:17:\"doInterwikiUpdate\";}i:3;a:1:{i:0;s:13:\"doIndexUpdate\";}i:4;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"hitcounter\";i:2;s:20:\"patch-hitcounter.sql\";}i:5;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:7:\"rc_type\";i:3;s:17:\"patch-rc_type.sql\";}i:6;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:14:\"user_real_name\";i:3;s:23:\"patch-user-realname.sql\";}i:7;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"querycache\";i:2;s:20:\"patch-querycache.sql\";}i:8;a:3:{i:0;s:8:\"addTable\";i:1;s:11:\"objectcache\";i:2;s:21:\"patch-objectcache.sql\";}i:9;a:3:{i:0;s:8:\"addTable\";i:1;s:13:\"categorylinks\";i:2;s:23:\"patch-categorylinks.sql\";}i:10;a:1:{i:0;s:16:\"doOldLinksUpdate\";}i:11;a:1:{i:0;s:22:\"doFixAncientImagelinks\";}i:12;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:5:\"rc_ip\";i:3;s:15:\"patch-rc_ip.sql\";}i:13;a:4:{i:0;s:8:\"addIndex\";i:1;s:5:\"image\";i:2;s:7:\"PRIMARY\";i:3;s:28:\"patch-image_name_primary.sql\";}i:14;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:5:\"rc_id\";i:3;s:15:\"patch-rc_id.sql\";}i:15;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:12:\"rc_patrolled\";i:3;s:19:\"patch-rc-patrol.sql\";}i:16;a:3:{i:0;s:8:\"addTable\";i:1;s:7:\"logging\";i:2;s:17:\"patch-logging.sql\";}i:17;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:10:\"user_token\";i:3;s:20:\"patch-user_token.sql\";}i:18;a:4:{i:0;s:8:\"addField\";i:1;s:9:\"watchlist\";i:2;s:24:\"wl_notificationtimestamp\";i:3;s:28:\"patch-email-notification.sql\";}i:19;a:1:{i:0;s:17:\"doWatchlistUpdate\";}i:20;a:4:{i:0;s:9:\"dropField\";i:1;s:4:\"user\";i:2;s:33:\"user_emailauthenticationtimestamp\";i:3;s:30:\"patch-email-authentication.sql\";}i:21;a:1:{i:0;s:21:\"doSchemaRestructuring\";}i:22;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"logging\";i:2;s:10:\"log_params\";i:3;s:20:\"patch-log_params.sql\";}i:23;a:4:{i:0;s:8:\"checkBin\";i:1;s:7:\"logging\";i:2;s:9:\"log_title\";i:3;s:23:\"patch-logging-title.sql\";}i:24;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:9:\"ar_rev_id\";i:3;s:24:\"patch-archive-rev_id.sql\";}i:25;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"page\";i:2;s:8:\"page_len\";i:3;s:18:\"patch-page_len.sql\";}i:26;a:4:{i:0;s:9:\"dropField\";i:1;s:8:\"revision\";i:2;s:17:\"inverse_timestamp\";i:3;s:27:\"patch-inverse_timestamp.sql\";}i:27;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"revision\";i:2;s:11:\"rev_text_id\";i:3;s:21:\"patch-rev_text_id.sql\";}i:28;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"revision\";i:2;s:11:\"rev_deleted\";i:3;s:21:\"patch-rev_deleted.sql\";}i:29;a:4:{i:0;s:8:\"addField\";i:1;s:5:\"image\";i:2;s:9:\"img_width\";i:3;s:19:\"patch-img_width.sql\";}i:30;a:4:{i:0;s:8:\"addField\";i:1;s:5:\"image\";i:2;s:12:\"img_metadata\";i:3;s:22:\"patch-img_metadata.sql\";}i:31;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:16:\"user_email_token\";i:3;s:26:\"patch-user_email_token.sql\";}i:32;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:10:\"ar_text_id\";i:3;s:25:\"patch-archive-text_id.sql\";}i:33;a:1:{i:0;s:15:\"doNamespaceSize\";}i:34;a:4:{i:0;s:8:\"addField\";i:1;s:5:\"image\";i:2;s:14:\"img_media_type\";i:3;s:24:\"patch-img_media_type.sql\";}i:35;a:1:{i:0;s:17:\"doPagelinksUpdate\";}i:36;a:4:{i:0;s:9:\"dropField\";i:1;s:5:\"image\";i:2;s:8:\"img_type\";i:3;s:23:\"patch-drop_img_type.sql\";}i:37;a:1:{i:0;s:18:\"doUserUniqueUpdate\";}i:38;a:1:{i:0;s:18:\"doUserGroupsUpdate\";}i:39;a:4:{i:0;s:8:\"addField\";i:1;s:10:\"site_stats\";i:2;s:14:\"ss_total_pages\";i:3;s:27:\"patch-ss_total_articles.sql\";}i:40;a:3:{i:0;s:8:\"addTable\";i:1;s:12:\"user_newtalk\";i:2;s:22:\"patch-usernewtalk2.sql\";}i:41;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"transcache\";i:2;s:20:\"patch-transcache.sql\";}i:42;a:4:{i:0;s:8:\"addField\";i:1;s:9:\"interwiki\";i:2;s:8:\"iw_trans\";i:3;s:25:\"patch-interwiki-trans.sql\";}i:43;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"trackbacks\";i:2;s:20:\"patch-trackbacks.sql\";}i:44;a:1:{i:0;s:15:\"doWatchlistNull\";}i:45;a:4:{i:0;s:8:\"addIndex\";i:1;s:7:\"logging\";i:2;s:5:\"times\";i:3;s:29:\"patch-logging-times-index.sql\";}i:46;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:15:\"ipb_range_start\";i:3;s:25:\"patch-ipb_range_start.sql\";}i:47;a:1:{i:0;s:18:\"doPageRandomUpdate\";}i:48;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:17:\"user_registration\";i:3;s:27:\"patch-user_registration.sql\";}i:49;a:1:{i:0;s:21:\"doTemplatelinksUpdate\";}i:50;a:3:{i:0;s:8:\"addTable\";i:1;s:13:\"externallinks\";i:2;s:23:\"patch-externallinks.sql\";}i:51;a:3:{i:0;s:8:\"addTable\";i:1;s:3:\"job\";i:2;s:13:\"patch-job.sql\";}i:52;a:4:{i:0;s:8:\"addField\";i:1;s:10:\"site_stats\";i:2;s:9:\"ss_images\";i:3;s:19:\"patch-ss_images.sql\";}i:53;a:3:{i:0;s:8:\"addTable\";i:1;s:9:\"langlinks\";i:2;s:19:\"patch-langlinks.sql\";}i:54;a:3:{i:0;s:8:\"addTable\";i:1;s:15:\"querycache_info\";i:2;s:24:\"patch-querycacheinfo.sql\";}i:55;a:3:{i:0;s:8:\"addTable\";i:1;s:11:\"filearchive\";i:2;s:21:\"patch-filearchive.sql\";}i:56;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:13:\"ipb_anon_only\";i:3;s:23:\"patch-ipb_anon_only.sql\";}i:57;a:4:{i:0;s:8:\"addIndex\";i:1;s:13:\"recentchanges\";i:2;s:14:\"rc_ns_usertext\";i:3;s:31:\"patch-recentchanges-utindex.sql\";}i:58;a:4:{i:0;s:8:\"addIndex\";i:1;s:13:\"recentchanges\";i:2;s:12:\"rc_user_text\";i:3;s:28:\"patch-rc_user_text-index.sql\";}i:59;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:17:\"user_newpass_time\";i:3;s:27:\"patch-user_newpass_time.sql\";}i:60;a:3:{i:0;s:8:\"addTable\";i:1;s:8:\"redirect\";i:2;s:18:\"patch-redirect.sql\";}i:61;a:3:{i:0;s:8:\"addTable\";i:1;s:13:\"querycachetwo\";i:2;s:23:\"patch-querycachetwo.sql\";}i:62;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:20:\"ipb_enable_autoblock\";i:3;s:32:\"patch-ipb_optional_autoblock.sql\";}i:63;a:1:{i:0;s:26:\"doBacklinkingIndicesUpdate\";}i:64;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:10:\"rc_old_len\";i:3;s:16:\"patch-rc_len.sql\";}i:65;a:4:{i:0;s:8:\"addField\";i:1;s:4:\"user\";i:2;s:14:\"user_editcount\";i:3;s:24:\"patch-user_editcount.sql\";}i:66;a:1:{i:0;s:20:\"doRestrictionsUpdate\";}i:67;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"logging\";i:2;s:6:\"log_id\";i:3;s:16:\"patch-log_id.sql\";}i:68;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"revision\";i:2;s:13:\"rev_parent_id\";i:3;s:23:\"patch-rev_parent_id.sql\";}i:69;a:4:{i:0;s:8:\"addField\";i:1;s:17:\"page_restrictions\";i:2;s:5:\"pr_id\";i:3;s:35:\"patch-page_restrictions_sortkey.sql\";}i:70;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"revision\";i:2;s:7:\"rev_len\";i:3;s:17:\"patch-rev_len.sql\";}i:71;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"recentchanges\";i:2;s:10:\"rc_deleted\";i:3;s:20:\"patch-rc_deleted.sql\";}i:72;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"logging\";i:2;s:11:\"log_deleted\";i:3;s:21:\"patch-log_deleted.sql\";}i:73;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:10:\"ar_deleted\";i:3;s:20:\"patch-ar_deleted.sql\";}i:74;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:11:\"ipb_deleted\";i:3;s:21:\"patch-ipb_deleted.sql\";}i:75;a:4:{i:0;s:8:\"addField\";i:1;s:11:\"filearchive\";i:2;s:10:\"fa_deleted\";i:3;s:20:\"patch-fa_deleted.sql\";}i:76;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:6:\"ar_len\";i:3;s:16:\"patch-ar_len.sql\";}i:77;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:15:\"ipb_block_email\";i:3;s:22:\"patch-ipb_emailban.sql\";}i:78;a:1:{i:0;s:28:\"doCategorylinksIndicesUpdate\";}i:79;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"oldimage\";i:2;s:11:\"oi_metadata\";i:3;s:21:\"patch-oi_metadata.sql\";}i:80;a:4:{i:0;s:8:\"addIndex\";i:1;s:7:\"archive\";i:2;s:18:\"usertext_timestamp\";i:3;s:28:\"patch-archive-user-index.sql\";}i:81;a:4:{i:0;s:8:\"addIndex\";i:1;s:5:\"image\";i:2;s:22:\"img_usertext_timestamp\";i:3;s:26:\"patch-image-user-index.sql\";}i:82;a:4:{i:0;s:8:\"addIndex\";i:1;s:8:\"oldimage\";i:2;s:21:\"oi_usertext_timestamp\";i:3;s:29:\"patch-oldimage-user-index.sql\";}i:83;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:10:\"ar_page_id\";i:3;s:25:\"patch-archive-page_id.sql\";}i:84;a:4:{i:0;s:8:\"addField\";i:1;s:5:\"image\";i:2;s:8:\"img_sha1\";i:3;s:18:\"patch-img_sha1.sql\";}i:85;a:3:{i:0;s:8:\"addTable\";i:1;s:16:\"protected_titles\";i:2;s:26:\"patch-protected_titles.sql\";}i:86;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:11:\"ipb_by_text\";i:3;s:21:\"patch-ipb_by_text.sql\";}i:87;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"page_props\";i:2;s:20:\"patch-page_props.sql\";}i:88;a:3:{i:0;s:8:\"addTable\";i:1;s:9:\"updatelog\";i:2;s:19:\"patch-updatelog.sql\";}i:89;a:3:{i:0;s:8:\"addTable\";i:1;s:8:\"category\";i:2;s:18:\"patch-category.sql\";}i:90;a:1:{i:0;s:20:\"doCategoryPopulation\";}i:91;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"archive\";i:2;s:12:\"ar_parent_id\";i:3;s:22:\"patch-ar_parent_id.sql\";}i:92;a:4:{i:0;s:8:\"addField\";i:1;s:12:\"user_newtalk\";i:2;s:19:\"user_last_timestamp\";i:3;s:29:\"patch-user_last_timestamp.sql\";}i:93;a:1:{i:0;s:18:\"doPopulateParentId\";}i:94;a:4:{i:0;s:8:\"checkBin\";i:1;s:16:\"protected_titles\";i:2;s:8:\"pt_title\";i:3;s:27:\"patch-pt_title-encoding.sql\";}i:95;a:1:{i:0;s:28:\"doMaybeProfilingMemoryUpdate\";}i:96;a:1:{i:0;s:26:\"doFilearchiveIndicesUpdate\";}i:97;a:4:{i:0;s:8:\"addField\";i:1;s:10:\"site_stats\";i:2;s:15:\"ss_active_users\";i:3;s:25:\"patch-ss_active_users.sql\";}i:98;a:1:{i:0;s:17:\"doActiveUsersInit\";}i:99;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"ipblocks\";i:2;s:18:\"ipb_allow_usertalk\";i:3;s:28:\"patch-ipb_allow_usertalk.sql\";}i:100;a:1:{i:0;s:14:\"doUniquePlTlIl\";}i:101;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"change_tag\";i:2;s:20:\"patch-change_tag.sql\";}i:102;a:3:{i:0;s:8:\"addTable\";i:1;s:11:\"tag_summary\";i:2;s:20:\"patch-change_tag.sql\";}i:103;a:3:{i:0;s:8:\"addTable\";i:1;s:9:\"valid_tag\";i:2;s:20:\"patch-change_tag.sql\";}i:104;a:3:{i:0;s:8:\"addTable\";i:1;s:15:\"user_properties\";i:2;s:25:\"patch-user_properties.sql\";}i:105;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"log_search\";i:2;s:20:\"patch-log_search.sql\";}i:106;a:1:{i:0;s:21:\"doLogSearchPopulation\";}i:107;a:4:{i:0;s:8:\"addField\";i:1;s:7:\"logging\";i:2;s:13:\"log_user_text\";i:3;s:23:\"patch-log_user_text.sql\";}i:108;a:3:{i:0;s:8:\"addTable\";i:1;s:10:\"l10n_cache\";i:2;s:20:\"patch-l10n_cache.sql\";}i:109;a:3:{i:0;s:8:\"addTable\";i:1;s:13:\"external_user\";i:2;s:23:\"patch-external_user.sql\";}i:110;a:4:{i:0;s:8:\"addIndex\";i:1;s:10:\"log_search\";i:2;s:12:\"ls_field_val\";i:3;s:33:\"patch-log_search-rename-index.sql\";}i:111;a:4:{i:0;s:8:\"addIndex\";i:1;s:10:\"change_tag\";i:2;s:17:\"change_tag_rc_tag\";i:3;s:28:\"patch-change_tag-indexes.sql\";}i:112;a:4:{i:0;s:8:\"addField\";i:1;s:8:\"redirect\";i:2;s:12:\"rd_interwiki\";i:3;s:22:\"patch-rd_interwiki.sql\";}i:113;a:1:{i:0;s:23:\"doUpdateTranscacheField\";}i:114;a:1:{i:0;s:14:\"renameEuWikiId\";}i:115;a:1:{i:0;s:22:\"doUpdateMimeMinorField\";}i:116;a:1:{i:0;s:16:\"doPopulateRevLen\";}i:117;a:3:{i:0;s:8:\"addTable\";i:1;s:7:\"iwlinks\";i:2;s:17:\"patch-iwlinks.sql\";}i:118;a:4:{i:0;s:8:\"addIndex\";i:1;s:7:\"iwlinks\";i:2;s:21:\"iwl_prefix_title_from\";i:3;s:27:\"patch-rename-iwl_prefix.sql\";}i:119;a:4:{i:0;s:8:\"addField\";i:1;s:9:\"updatelog\";i:2;s:8:\"ul_value\";i:3;s:18:\"patch-ul_value.sql\";}i:120;a:4:{i:0;s:8:\"addField\";i:1;s:9:\"interwiki\";i:2;s:6:\"iw_api\";i:3;s:27:\"patch-iw_api_and_wikiid.sql\";}i:121;a:4:{i:0;s:9:\"dropIndex\";i:1;s:7:\"iwlinks\";i:2;s:10:\"iwl_prefix\";i:3;s:25:\"patch-kill-iwl_prefix.sql\";}i:122;a:4:{i:0;s:9:\"dropIndex\";i:1;s:7:\"iwlinks\";i:2;s:21:\"iwl_prefix_from_title\";i:3;s:22:\"patch-kill-iwl_pft.sql\";}i:123;a:4:{i:0;s:8:\"addField\";i:1;s:13:\"categorylinks\";i:2;s:12:\"cl_collation\";i:3;s:40:\"patch-categorylinks-better-collation.sql\";}i:124;a:1:{i:0;s:16:\"doClFieldsUpdate\";}i:125;a:1:{i:0;s:17:\"doCollationUpdate\";}i:126;a:3:{i:0;s:8:\"addTable\";i:1;s:12:\"msg_resource\";i:2;s:22:\"patch-msg_resource.sql\";}i:127;a:3:{i:0;s:8:\"addTable\";i:1;s:11:\"module_deps\";i:2;s:21:\"patch-module_deps.sql\";}}');
+/*!40000 ALTER TABLE `mw_updatelog` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user`
+--
+
+DROP TABLE IF EXISTS `mw_user`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user` (
+ `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `user_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `user_real_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `user_password` tinyblob NOT NULL,
+ `user_newpassword` tinyblob NOT NULL,
+ `user_newpass_time` binary(14) DEFAULT NULL,
+ `user_email` tinytext NOT NULL,
+ `user_options` blob NOT NULL,
+ `user_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `user_token` binary(32) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `user_email_authenticated` binary(14) DEFAULT NULL,
+ `user_email_token` binary(32) DEFAULT NULL,
+ `user_email_token_expires` binary(14) DEFAULT NULL,
+ `user_registration` binary(14) DEFAULT NULL,
+ `user_editcount` int(11) DEFAULT NULL,
+ PRIMARY KEY (`user_id`),
+ UNIQUE KEY `user_name` (`user_name`),
+ KEY `user_email_token` (`user_email_token`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user`
+--
+
+LOCK TABLES `mw_user` WRITE;
+/*!40000 ALTER TABLE `mw_user` DISABLE KEYS */;
+INSERT INTO `mw_user` VALUES (1,'WikiSysop','',':B:9c595470:df2c1237ae75896744457e7dfbeb7f90','',NULL,'','','20110110173136','5e3b582786fa8150118cfa78f18de0c5',NULL,'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',NULL,'20110107184113',1);
+/*!40000 ALTER TABLE `mw_user` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user_groups`
+--
+
+DROP TABLE IF EXISTS `mw_user_groups`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user_groups` (
+ `ug_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `ug_group` varbinary(16) NOT NULL DEFAULT '',
+ UNIQUE KEY `ug_user_group` (`ug_user`,`ug_group`),
+ KEY `ug_group` (`ug_group`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user_groups`
+--
+
+LOCK TABLES `mw_user_groups` WRITE;
+/*!40000 ALTER TABLE `mw_user_groups` DISABLE KEYS */;
+INSERT INTO `mw_user_groups` VALUES (1,'bureaucrat'),(1,'sysop');
+/*!40000 ALTER TABLE `mw_user_groups` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user_newtalk`
+--
+
+DROP TABLE IF EXISTS `mw_user_newtalk`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user_newtalk` (
+ `user_id` int(11) NOT NULL DEFAULT '0',
+ `user_ip` varbinary(40) NOT NULL DEFAULT '',
+ `user_last_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ KEY `user_id` (`user_id`),
+ KEY `user_ip` (`user_ip`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user_newtalk`
+--
+
+LOCK TABLES `mw_user_newtalk` WRITE;
+/*!40000 ALTER TABLE `mw_user_newtalk` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_user_newtalk` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user_properties`
+--
+
+DROP TABLE IF EXISTS `mw_user_properties`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user_properties` (
+ `up_user` int(11) NOT NULL,
+ `up_property` varbinary(32) NOT NULL,
+ `up_value` blob,
+ UNIQUE KEY `user_properties_user_property` (`up_user`,`up_property`),
+ KEY `user_properties_property` (`up_property`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user_properties`
+--
+
+LOCK TABLES `mw_user_properties` WRITE;
+/*!40000 ALTER TABLE `mw_user_properties` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_user_properties` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_valid_tag`
+--
+
+DROP TABLE IF EXISTS `mw_valid_tag`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_valid_tag` (
+ `vt_tag` varchar(255) NOT NULL,
+ PRIMARY KEY (`vt_tag`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_valid_tag`
+--
+
+LOCK TABLES `mw_valid_tag` WRITE;
+/*!40000 ALTER TABLE `mw_valid_tag` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_valid_tag` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_watchlist`
+--
+
+DROP TABLE IF EXISTS `mw_watchlist`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_watchlist` (
+ `wl_user` int(10) unsigned NOT NULL,
+ `wl_namespace` int(11) NOT NULL DEFAULT '0',
+ `wl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `wl_notificationtimestamp` varbinary(14) DEFAULT NULL,
+ UNIQUE KEY `wl_user` (`wl_user`,`wl_namespace`,`wl_title`),
+ KEY `namespace_title` (`wl_namespace`,`wl_title`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_watchlist`
+--
+
+LOCK TABLES `mw_watchlist` WRITE;
+/*!40000 ALTER TABLE `mw_watchlist` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_watchlist` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2011-01-10 9:34:34
diff --git a/tests/selenium/data/SimpleSeleniumTestImages.zip b/tests/selenium/data/SimpleSeleniumTestImages.zip
new file mode 100644
index 00000000..0374a1fb
--- /dev/null
+++ b/tests/selenium/data/SimpleSeleniumTestImages.zip
Binary files differ
diff --git a/maintenance/tests/selenium/data/Wikipedia-logo-v2-de.png b/tests/selenium/data/Wikipedia-logo-v2-de.png
index 70385243..70385243 100644
--- a/maintenance/tests/selenium/data/Wikipedia-logo-v2-de.png
+++ b/tests/selenium/data/Wikipedia-logo-v2-de.png
Binary files differ
diff --git a/tests/selenium/data/mediawiki118_fresh_installation.sql b/tests/selenium/data/mediawiki118_fresh_installation.sql
new file mode 100644
index 00000000..89bc3191
--- /dev/null
+++ b/tests/selenium/data/mediawiki118_fresh_installation.sql
@@ -0,0 +1,1544 @@
+-- MySQL dump 10.13 Distrib 5.1.41, for Win32 (ia32)
+--
+-- Host: localhost Database: test_wiki
+-- ------------------------------------------------------
+-- Server version 5.1.41
+
+/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
+/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
+/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
+/*!40101 SET NAMES utf8 */;
+/*!40103 SET @OLD_TIME_ZONE=@@TIME_ZONE */;
+/*!40103 SET TIME_ZONE='+00:00' */;
+/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
+/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
+/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
+/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
+
+--
+-- Table structure for table `mw_archive`
+--
+
+DROP TABLE IF EXISTS `mw_archive`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_archive` (
+ `ar_namespace` int(11) NOT NULL DEFAULT '0',
+ `ar_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `ar_text` mediumblob NOT NULL,
+ `ar_comment` tinyblob NOT NULL,
+ `ar_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `ar_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `ar_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `ar_minor_edit` tinyint(4) NOT NULL DEFAULT '0',
+ `ar_flags` tinyblob NOT NULL,
+ `ar_rev_id` int(10) unsigned DEFAULT NULL,
+ `ar_text_id` int(10) unsigned DEFAULT NULL,
+ `ar_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `ar_len` int(10) unsigned DEFAULT NULL,
+ `ar_page_id` int(10) unsigned DEFAULT NULL,
+ `ar_parent_id` int(10) unsigned DEFAULT NULL,
+ KEY `name_title_timestamp` (`ar_namespace`,`ar_title`,`ar_timestamp`),
+ KEY `usertext_timestamp` (`ar_user_text`,`ar_timestamp`),
+ KEY `ar_page_revid` (`ar_namespace`,`ar_title`,`ar_rev_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_archive`
+--
+
+LOCK TABLES `mw_archive` WRITE;
+/*!40000 ALTER TABLE `mw_archive` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_archive` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_category`
+--
+
+DROP TABLE IF EXISTS `mw_category`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_category` (
+ `cat_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `cat_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `cat_pages` int(11) NOT NULL DEFAULT '0',
+ `cat_subcats` int(11) NOT NULL DEFAULT '0',
+ `cat_files` int(11) NOT NULL DEFAULT '0',
+ `cat_hidden` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`cat_id`),
+ UNIQUE KEY `cat_title` (`cat_title`),
+ KEY `cat_pages` (`cat_pages`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_category`
+--
+
+LOCK TABLES `mw_category` WRITE;
+/*!40000 ALTER TABLE `mw_category` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_category` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_categorylinks`
+--
+
+DROP TABLE IF EXISTS `mw_categorylinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_categorylinks` (
+ `cl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `cl_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `cl_sortkey` varbinary(230) NOT NULL DEFAULT '',
+ `cl_sortkey_prefix` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `cl_timestamp` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
+ `cl_collation` varbinary(32) NOT NULL DEFAULT '',
+ `cl_type` enum('page','subcat','file') NOT NULL DEFAULT 'page',
+ UNIQUE KEY `cl_from` (`cl_from`,`cl_to`),
+ KEY `cl_sortkey` (`cl_to`,`cl_type`,`cl_sortkey`,`cl_from`),
+ KEY `cl_timestamp` (`cl_to`,`cl_timestamp`),
+ KEY `cl_collation` (`cl_collation`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_categorylinks`
+--
+
+LOCK TABLES `mw_categorylinks` WRITE;
+/*!40000 ALTER TABLE `mw_categorylinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_categorylinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_change_tag`
+--
+
+DROP TABLE IF EXISTS `mw_change_tag`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_change_tag` (
+ `ct_rc_id` int(11) DEFAULT NULL,
+ `ct_log_id` int(11) DEFAULT NULL,
+ `ct_rev_id` int(11) DEFAULT NULL,
+ `ct_tag` varchar(255) NOT NULL,
+ `ct_params` blob,
+ UNIQUE KEY `change_tag_rc_tag` (`ct_rc_id`,`ct_tag`),
+ UNIQUE KEY `change_tag_log_tag` (`ct_log_id`,`ct_tag`),
+ UNIQUE KEY `change_tag_rev_tag` (`ct_rev_id`,`ct_tag`),
+ KEY `change_tag_tag_id` (`ct_tag`,`ct_rc_id`,`ct_rev_id`,`ct_log_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_change_tag`
+--
+
+LOCK TABLES `mw_change_tag` WRITE;
+/*!40000 ALTER TABLE `mw_change_tag` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_change_tag` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_external_user`
+--
+
+DROP TABLE IF EXISTS `mw_external_user`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_external_user` (
+ `eu_local_id` int(10) unsigned NOT NULL,
+ `eu_external_id` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ PRIMARY KEY (`eu_local_id`),
+ UNIQUE KEY `eu_external_id` (`eu_external_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_external_user`
+--
+
+LOCK TABLES `mw_external_user` WRITE;
+/*!40000 ALTER TABLE `mw_external_user` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_external_user` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_externallinks`
+--
+
+DROP TABLE IF EXISTS `mw_externallinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_externallinks` (
+ `el_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `el_to` blob NOT NULL,
+ `el_index` blob NOT NULL,
+ KEY `el_from` (`el_from`,`el_to`(40)),
+ KEY `el_to` (`el_to`(60),`el_from`),
+ KEY `el_index` (`el_index`(60))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_externallinks`
+--
+
+LOCK TABLES `mw_externallinks` WRITE;
+/*!40000 ALTER TABLE `mw_externallinks` DISABLE KEYS */;
+INSERT INTO `mw_externallinks` VALUES (1,'http://meta.wikimedia.org/wiki/Help:Contents','http://org.wikimedia.meta./wiki/Help:Contents');
+INSERT INTO `mw_externallinks` VALUES (1,'http://www.mediawiki.org/wiki/Manual:Configuration_settings','http://org.mediawiki.www./wiki/Manual:Configuration_settings');
+INSERT INTO `mw_externallinks` VALUES (1,'http://www.mediawiki.org/wiki/Manual:FAQ','http://org.mediawiki.www./wiki/Manual:FAQ');
+INSERT INTO `mw_externallinks` VALUES (1,'https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce','https://org.wikimedia.lists./mailman/listinfo/mediawiki-announce');
+/*!40000 ALTER TABLE `mw_externallinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_filearchive`
+--
+
+DROP TABLE IF EXISTS `mw_filearchive`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_filearchive` (
+ `fa_id` int(11) NOT NULL AUTO_INCREMENT,
+ `fa_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `fa_archive_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT '',
+ `fa_storage_group` varbinary(16) DEFAULT NULL,
+ `fa_storage_key` varbinary(64) DEFAULT '',
+ `fa_deleted_user` int(11) DEFAULT NULL,
+ `fa_deleted_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `fa_deleted_reason` text,
+ `fa_size` int(10) unsigned DEFAULT '0',
+ `fa_width` int(11) DEFAULT '0',
+ `fa_height` int(11) DEFAULT '0',
+ `fa_metadata` mediumblob,
+ `fa_bits` int(11) DEFAULT '0',
+ `fa_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
+ `fa_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') DEFAULT 'unknown',
+ `fa_minor_mime` varbinary(100) DEFAULT 'unknown',
+ `fa_description` tinyblob,
+ `fa_user` int(10) unsigned DEFAULT '0',
+ `fa_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
+ `fa_timestamp` binary(14) DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `fa_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`fa_id`),
+ KEY `fa_name` (`fa_name`,`fa_timestamp`),
+ KEY `fa_storage_group` (`fa_storage_group`,`fa_storage_key`),
+ KEY `fa_deleted_timestamp` (`fa_deleted_timestamp`),
+ KEY `fa_user_timestamp` (`fa_user_text`,`fa_timestamp`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_filearchive`
+--
+
+LOCK TABLES `mw_filearchive` WRITE;
+/*!40000 ALTER TABLE `mw_filearchive` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_filearchive` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_hitcounter`
+--
+
+DROP TABLE IF EXISTS `mw_hitcounter`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_hitcounter` (
+ `hc_id` int(10) unsigned NOT NULL
+) ENGINE=MEMORY DEFAULT CHARSET=latin1 MAX_ROWS=25000;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_hitcounter`
+--
+
+LOCK TABLES `mw_hitcounter` WRITE;
+/*!40000 ALTER TABLE `mw_hitcounter` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_hitcounter` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_image`
+--
+
+DROP TABLE IF EXISTS `mw_image`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_image` (
+ `img_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `img_size` int(10) unsigned NOT NULL DEFAULT '0',
+ `img_width` int(11) NOT NULL DEFAULT '0',
+ `img_height` int(11) NOT NULL DEFAULT '0',
+ `img_metadata` mediumblob NOT NULL,
+ `img_bits` int(11) NOT NULL DEFAULT '0',
+ `img_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
+ `img_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') NOT NULL DEFAULT 'unknown',
+ `img_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown',
+ `img_description` tinyblob NOT NULL,
+ `img_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `img_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `img_timestamp` varbinary(14) NOT NULL DEFAULT '',
+ `img_sha1` varbinary(32) NOT NULL DEFAULT '',
+ PRIMARY KEY (`img_name`),
+ KEY `img_usertext_timestamp` (`img_user_text`,`img_timestamp`),
+ KEY `img_size` (`img_size`),
+ KEY `img_timestamp` (`img_timestamp`),
+ KEY `img_sha1` (`img_sha1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_image`
+--
+
+LOCK TABLES `mw_image` WRITE;
+/*!40000 ALTER TABLE `mw_image` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_image` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_imagelinks`
+--
+
+DROP TABLE IF EXISTS `mw_imagelinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_imagelinks` (
+ `il_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `il_to` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `il_from` (`il_from`,`il_to`),
+ UNIQUE KEY `il_to` (`il_to`,`il_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_imagelinks`
+--
+
+LOCK TABLES `mw_imagelinks` WRITE;
+/*!40000 ALTER TABLE `mw_imagelinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_imagelinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_interwiki`
+--
+
+DROP TABLE IF EXISTS `mw_interwiki`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_interwiki` (
+ `iw_prefix` varchar(32) NOT NULL,
+ `iw_url` blob NOT NULL,
+ `iw_api` blob NOT NULL,
+ `iw_wikiid` varchar(64) NOT NULL,
+ `iw_local` tinyint(1) NOT NULL,
+ `iw_trans` tinyint(4) NOT NULL DEFAULT '0',
+ UNIQUE KEY `iw_prefix` (`iw_prefix`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_interwiki`
+--
+
+LOCK TABLES `mw_interwiki` WRITE;
+/*!40000 ALTER TABLE `mw_interwiki` DISABLE KEYS */;
+INSERT INTO `mw_interwiki` VALUES ('acronym','http://www.acronymfinder.com/af-query.asp?String=exact&Acronym=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('advogato','http://www.advogato.org/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('annotationwiki','http://www.seedwiki.com/page.cfm?wikiid=368&doc=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('arxiv','http://www.arxiv.org/abs/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('c2find','http://c2.com/cgi/wiki?FindPage&value=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('cache','http://www.google.com/search?q=cache:$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('commons','http://commons.wikimedia.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('corpknowpedia','http://corpknowpedia.org/wiki/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('dictionary','http://www.dict.org/bin/Dict?Database=*&Form=Dict1&Strategy=*&Query=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('disinfopedia','http://www.disinfopedia.org/wiki.phtml?title=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('docbook','http://wiki.docbook.org/topic/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('doi','http://dx.doi.org/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('drumcorpswiki','http://www.drumcorpswiki.com/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('dwjwiki','http://www.suberic.net/cgi-bin/dwj/wiki.cgi?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('elibre','http://enciclopedia.us.es/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('emacswiki','http://www.emacswiki.org/cgi-bin/wiki.pl?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('foldoc','http://foldoc.org/?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('foxwiki','http://fox.wikis.com/wc.dll?Wiki~$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('freebsdman','http://www.FreeBSD.org/cgi/man.cgi?apropos=1&query=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('gej','http://www.esperanto.de/cgi-bin/aktivikio/wiki.pl?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('gentoo-wiki','http://gentoo-wiki.com/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('google','http://www.google.com/search?q=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('googlegroups','http://groups.google.com/groups?q=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('hammondwiki','http://www.dairiki.org/HammondWiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('hewikisource','http://he.wikisource.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('hrwiki','http://www.hrwiki.org/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('imdb','http://us.imdb.com/Title?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('jargonfile','http://sunir.org/apps/meta.pl?wiki=JargonFile&redirect=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('jspwiki','http://www.jspwiki.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('keiki','http://kei.ki/en/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('kmwiki','http://kmwiki.wikispaces.com/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('linuxwiki','http://linuxwiki.de/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('lojban','http://www.lojban.org/tiki/tiki-index.php?page=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('lqwiki','http://wiki.linuxquestions.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('lugkr','http://lug-kr.sourceforge.net/cgi-bin/lugwiki.pl?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('mathsongswiki','http://SeedWiki.com/page.cfm?wikiid=237&doc=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('meatball','http://www.usemod.com/cgi-bin/mb.pl?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('mediawikiwiki','http://www.mediawiki.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('mediazilla','https://bugzilla.wikimedia.org/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('memoryalpha','http://www.memory-alpha.org/en/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('metawiki','http://sunir.org/apps/meta.pl?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('metawikipedia','http://meta.wikimedia.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('moinmoin','http://purl.net/wiki/moin/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('mozillawiki','http://wiki.mozilla.org/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('mw','http://www.mediawiki.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('oeis','http://www.research.att.com/cgi-bin/access.cgi/as/njas/sequences/eisA.cgi?Anum=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('openfacts','http://openfacts.berlios.de/index.phtml?title=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('openwiki','http://openwiki.com/?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('pmeg','http://www.bertilow.com/pmeg/$1.php','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('ppr','http://c2.com/cgi/wiki?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('pythoninfo','http://wiki.python.org/moin/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('rfc','http://www.rfc-editor.org/rfc/rfc$1.txt','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('s23wiki','http://is-root.de/wiki/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('seattlewiki','http://seattle.wikia.com/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('seattlewireless','http://seattlewireless.net/?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('senseislibrary','http://senseis.xmp.net/?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('sourceforge','http://sourceforge.net/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('squeak','http://wiki.squeak.org/squeak/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('susning','http://www.susning.nu/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('svgwiki','http://wiki.svg.org/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('tavi','http://tavi.sourceforge.net/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('tejo','http://www.tejo.org/vikio/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('theopedia','http://www.theopedia.com/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('tmbw','http://www.tmbw.net/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('tmnet','http://www.technomanifestos.net/?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('tmwiki','http://www.EasyTopicMaps.com/?page=$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('twiki','http://twiki.org/cgi-bin/view/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('uea','http://www.tejo.org/uea/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('unreal','http://wiki.beyondunreal.com/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('usemod','http://www.usemod.com/cgi-bin/wiki.pl?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('vinismo','http://vinismo.com/en/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('webseitzwiki','http://webseitz.fluxent.com/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('why','http://clublet.com/c/c/why?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wiki','http://c2.com/cgi/wiki?$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikia','http://www.wikia.com/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikibooks','http://en.wikibooks.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikicities','http://www.wikia.com/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikif1','http://www.wikif1.org/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikihow','http://www.wikihow.com/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikimedia','http://wikimediafoundation.org/wiki/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikinews','http://en.wikinews.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikinfo','http://www.wikinfo.org/index.php/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikipedia','http://en.wikipedia.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikiquote','http://en.wikiquote.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikisource','http://wikisource.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikispecies','http://species.wikimedia.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikitravel','http://wikitravel.org/en/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('wikiversity','http://en.wikiversity.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wikt','http://en.wiktionary.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wiktionary','http://en.wiktionary.org/wiki/$1','','',1,0);
+INSERT INTO `mw_interwiki` VALUES ('wlug','http://www.wlug.org.nz/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('zwiki','http://zwiki.org/$1','','',0,0);
+INSERT INTO `mw_interwiki` VALUES ('zzz wiki','http://wiki.zzz.ee/index.php/$1','','',0,0);
+/*!40000 ALTER TABLE `mw_interwiki` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_ipblocks`
+--
+
+DROP TABLE IF EXISTS `mw_ipblocks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_ipblocks` (
+ `ipb_id` int(11) NOT NULL AUTO_INCREMENT,
+ `ipb_address` tinyblob NOT NULL,
+ `ipb_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `ipb_by` int(10) unsigned NOT NULL DEFAULT '0',
+ `ipb_by_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `ipb_reason` tinyblob NOT NULL,
+ `ipb_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `ipb_auto` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_anon_only` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_create_account` tinyint(1) NOT NULL DEFAULT '1',
+ `ipb_enable_autoblock` tinyint(1) NOT NULL DEFAULT '1',
+ `ipb_expiry` varbinary(14) NOT NULL DEFAULT '',
+ `ipb_range_start` tinyblob NOT NULL,
+ `ipb_range_end` tinyblob NOT NULL,
+ `ipb_deleted` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_block_email` tinyint(1) NOT NULL DEFAULT '0',
+ `ipb_allow_usertalk` tinyint(1) NOT NULL DEFAULT '0',
+ PRIMARY KEY (`ipb_id`),
+ UNIQUE KEY `ipb_address` (`ipb_address`(255),`ipb_user`,`ipb_auto`,`ipb_anon_only`),
+ KEY `ipb_user` (`ipb_user`),
+ KEY `ipb_range` (`ipb_range_start`(8),`ipb_range_end`(8)),
+ KEY `ipb_timestamp` (`ipb_timestamp`),
+ KEY `ipb_expiry` (`ipb_expiry`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_ipblocks`
+--
+
+LOCK TABLES `mw_ipblocks` WRITE;
+/*!40000 ALTER TABLE `mw_ipblocks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_ipblocks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_iwlinks`
+--
+
+DROP TABLE IF EXISTS `mw_iwlinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_iwlinks` (
+ `iwl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `iwl_prefix` varbinary(20) NOT NULL DEFAULT '',
+ `iwl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `iwl_from` (`iwl_from`,`iwl_prefix`,`iwl_title`),
+ UNIQUE KEY `iwl_prefix_title_from` (`iwl_prefix`,`iwl_title`,`iwl_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_iwlinks`
+--
+
+LOCK TABLES `mw_iwlinks` WRITE;
+/*!40000 ALTER TABLE `mw_iwlinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_iwlinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_job`
+--
+
+DROP TABLE IF EXISTS `mw_job`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_job` (
+ `job_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `job_cmd` varbinary(60) NOT NULL DEFAULT '',
+ `job_namespace` int(11) NOT NULL,
+ `job_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `job_params` blob NOT NULL,
+ PRIMARY KEY (`job_id`),
+ KEY `job_cmd` (`job_cmd`,`job_namespace`,`job_title`,`job_params`(128))
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_job`
+--
+
+LOCK TABLES `mw_job` WRITE;
+/*!40000 ALTER TABLE `mw_job` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_job` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_l10n_cache`
+--
+
+DROP TABLE IF EXISTS `mw_l10n_cache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_l10n_cache` (
+ `lc_lang` varbinary(32) NOT NULL,
+ `lc_key` varchar(255) NOT NULL,
+ `lc_value` mediumblob NOT NULL,
+ KEY `lc_lang_key` (`lc_lang`,`lc_key`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+
+
+--
+-- Table structure for table `mw_langlinks`
+--
+
+DROP TABLE IF EXISTS `mw_langlinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_langlinks` (
+ `ll_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `ll_lang` varbinary(20) NOT NULL DEFAULT '',
+ `ll_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `ll_from` (`ll_from`,`ll_lang`),
+ KEY `ll_lang` (`ll_lang`,`ll_title`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_langlinks`
+--
+
+LOCK TABLES `mw_langlinks` WRITE;
+/*!40000 ALTER TABLE `mw_langlinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_langlinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_log_search`
+--
+
+DROP TABLE IF EXISTS `mw_log_search`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_log_search` (
+ `ls_field` varbinary(32) NOT NULL,
+ `ls_value` varchar(255) NOT NULL,
+ `ls_log_id` int(10) unsigned NOT NULL DEFAULT '0',
+ UNIQUE KEY `ls_field_val` (`ls_field`,`ls_value`,`ls_log_id`),
+ KEY `ls_log_id` (`ls_log_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_log_search`
+--
+
+LOCK TABLES `mw_log_search` WRITE;
+/*!40000 ALTER TABLE `mw_log_search` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_log_search` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_logging`
+--
+
+DROP TABLE IF EXISTS `mw_logging`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_logging` (
+ `log_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `log_type` varbinary(32) NOT NULL DEFAULT '',
+ `log_action` varbinary(32) NOT NULL DEFAULT '',
+ `log_timestamp` binary(14) NOT NULL DEFAULT '19700101000000',
+ `log_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `log_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `log_namespace` int(11) NOT NULL DEFAULT '0',
+ `log_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `log_page` int(10) unsigned DEFAULT NULL,
+ `log_comment` varchar(255) NOT NULL DEFAULT '',
+ `log_params` blob NOT NULL,
+ `log_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ PRIMARY KEY (`log_id`),
+ KEY `type_time` (`log_type`,`log_timestamp`),
+ KEY `user_time` (`log_user`,`log_timestamp`),
+ KEY `page_time` (`log_namespace`,`log_title`,`log_timestamp`),
+ KEY `times` (`log_timestamp`),
+ KEY `log_user_type_time` (`log_user`,`log_type`,`log_timestamp`),
+ KEY `log_page_id_time` (`log_page`,`log_timestamp`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_logging`
+--
+
+LOCK TABLES `mw_logging` WRITE;
+/*!40000 ALTER TABLE `mw_logging` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_logging` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_math`
+--
+
+DROP TABLE IF EXISTS `mw_math`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_math` (
+ `math_inputhash` varbinary(16) NOT NULL,
+ `math_outputhash` varbinary(16) NOT NULL,
+ `math_html_conservativeness` tinyint(4) NOT NULL,
+ `math_html` text,
+ `math_mathml` text,
+ UNIQUE KEY `math_inputhash` (`math_inputhash`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_math`
+--
+
+LOCK TABLES `mw_math` WRITE;
+/*!40000 ALTER TABLE `mw_math` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_math` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_module_deps`
+--
+
+DROP TABLE IF EXISTS `mw_module_deps`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_module_deps` (
+ `md_module` varbinary(255) NOT NULL,
+ `md_skin` varbinary(32) NOT NULL,
+ `md_deps` mediumblob NOT NULL,
+ UNIQUE KEY `md_module_skin` (`md_module`,`md_skin`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_module_deps`
+--
+
+LOCK TABLES `mw_module_deps` WRITE;
+/*!40000 ALTER TABLE `mw_module_deps` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_module_deps` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_msg_resource`
+--
+
+DROP TABLE IF EXISTS `mw_msg_resource`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_msg_resource` (
+ `mr_resource` varbinary(255) NOT NULL,
+ `mr_lang` varbinary(32) NOT NULL,
+ `mr_blob` mediumblob NOT NULL,
+ `mr_timestamp` binary(14) NOT NULL,
+ UNIQUE KEY `mr_resource_lang` (`mr_resource`,`mr_lang`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_msg_resource`
+--
+
+LOCK TABLES `mw_msg_resource` WRITE;
+/*!40000 ALTER TABLE `mw_msg_resource` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_msg_resource` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_msg_resource_links`
+--
+
+DROP TABLE IF EXISTS `mw_msg_resource_links`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_msg_resource_links` (
+ `mrl_resource` varbinary(255) NOT NULL,
+ `mrl_message` varbinary(255) NOT NULL,
+ UNIQUE KEY `mrl_message_resource` (`mrl_message`,`mrl_resource`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_msg_resource_links`
+--
+
+LOCK TABLES `mw_msg_resource_links` WRITE;
+/*!40000 ALTER TABLE `mw_msg_resource_links` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_msg_resource_links` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_objectcache`
+--
+
+DROP TABLE IF EXISTS `mw_objectcache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_objectcache` (
+ `keyname` varbinary(255) NOT NULL DEFAULT '',
+ `value` mediumblob,
+ `exptime` datetime DEFAULT NULL,
+ PRIMARY KEY (`keyname`),
+ KEY `exptime` (`exptime`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_objectcache`
+--
+
+LOCK TABLES `mw_objectcache` WRITE;
+/*!40000 ALTER TABLE `mw_objectcache` DISABLE KEYS */;
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:messages:en','K´2´ª.¶2·R\ns\r\nöô÷S²Î´2´®\0','2010-12-31 13:16:31');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:pcache:idhash:1-0!*!*!!en!*','¥V[oâFÞg~ÅÄ­´ØBšÁP­¢m)$TK»U…û\0£ŒÇÖÌ8$íï9ƒa\rI«l— X>×ïܹãq—Sa,˜»Ê•• x÷Œ?[~ʃ|.ZÇç$å8YŒ\'IñYÞK¶–-\04³Uš‚µËJ©\'&µuB)È:I¸·’µÊñE¡m¥sk`‰`kËQ°v®äa˜ƒ\rZÌÉt§0«ÞÂ+P%GEÚÙ€¥JX;\n-sŽP£@ËB©bŒÿÀ8~¶ì²’$¡³eaþÏ…“…fø­¬Ô+„Ü0[,ÝFèx¬­dÝ\'¶zï0“ÎBJÚÁø¯=ø°Äø¡JÁc§\\—¿:éŒ&BêùT¬à\'‘—CáõFdÿ׆FqÀ¶âÁGd±šÌÙ%8Gè0‡ÆAŒI“ù; Ô˜`Ë7í5ˆLI\r“Ù(¨õç{ýc‹¬¶“„g+©Ô8Qrü¢&›Í¦ãËA)úV’‰Ð•PT”¥\\UƧtn·ÞZ¢e¶SfJZ(VýP¿}øý¾µ0êü—O‹N —=jÏ\\H• íyÔ\\áU[h]T:… À†bd›êu”+Õj%\'í6kÝÂf:E;Ç@YךâÓ4…ØïºÈ€¥ÃqÖ ãÈZÓº6<bñ3œˆTU(dåà,\n»ÑùY|Úe‹\'¶5ƒ¼TÂfUå8}ÿ\"÷ñ±må°Ò/¶ÄÈ}Ukç9oµÛ;äŸÄó|*R?…nÍîá 3dÝÜg1ßÌyé¹\\f8gk·£“÷øwúä=£›:/Y7Š£¸Û‹â^<èÅŒüù­ÕÇv#ôªÂi¼‘úÞCÁ#þü•6\Zò.0ÆUa$4í=\ZÍÝò;çÍ4£™¦÷Y=²æ•ê¬5éÝý:kpÎq£Å¦4áýX·ËÞCŸ–qYßµ-‡’LjõôœÿÐD×fúÑÍÐ Ö:ƒÿáò¦(3tŒ®14Cü×J‰#ñ©ÞÑƵΞWXT®Ûâ’Δy: ^á6½v7ìÿ‚äI‘UêEe·óª(šp0ãùgaô6MjÂScþ,Ñ«@ëÏÞ…+R ö•ãAýŽÎxÐ¥\'6ßôutÇ·bÛ›ºÊ`jµ8ØšòGªIC<KSäþ5š|¾krJ\ry±\\b3xPƒ³­¡ÓuaŽ@ìÎðë®$SS”`ÜÁtQ.gwW³É\r@\'ôè¢ÕwÍß ï°ØxZ(™>5{Ñ Áþ§dwå>·=J)\rÓ6t ·ÅXø̸æM¯É­B»\n÷Å–TÃýŒõb>‘qgÐéï„ 7Ô ›z·n7‘§vwr¸-%uÛ-QiþiX1çöNe±’éA#ÎvÛíÓ§ý3Ìó?','2010-12-31 13:16:31');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:pcache:idoptions:1','EÁ‚@ Dÿ¥`¶ \"vÆ£á¢ÞWh°‰,†b¢!ü»»â­™7íL+Ú|}ç³t ´¥I©$è®<¨ôœF\rpSlò4£‰ìïOJN`\r\Z´™Á ‹ Õ®¾ãû)ÃœPYäÆ$¶K¬£— Õ£9ùVjp72ëâE¹©žcÌWpž2šäcVxu7îì ­¦»˜p#£r=.µ…¬[>y)Zpóü','2010-12-31 13:16:31');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-css:3832ee25d9c44988461f5f339b9b6a48','+¶26²RrÈMMÉLTHÌÉ©V\0‚Z(¿ (3¯(R«d\r\0','2038-01-19 03:14:07');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-css:aa0df16258ad99a1d249e796b5067ed9','+¶2±°RrÈMMÉLTHÌÉ©NÔËK-×Q.,ÍLÎNJ,R\0ó«“ósò‹¬”“\r€ ¶VÉ\Z\0','2038-01-19 03:14:07');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-js:22814eeadc9cf0a9ebcd844e14198e66','m”ÉrÛ0 †ïy žÚÇrê&Qޡמ!\n’qQ¹Xq;}÷‚¤$ËÃÞˆ øc!]]].o5SØ\nø)Fq íÑL^íŽý—?Œs…F£!«OÆM\\¼¦•öøéù\0–ÈåN¤Ðɵà‘լłôŒ€è:£å-…j…ƒF¦Ø{Û…¾Gç\"ižø‡ \ZÝ6’KÁÇÍÏ!ÊY]=ØF[Ñ~ç«ÚØ䶃¯ÚÖî`¬Š9NÐÇ´ª•Ï@¹Káü²|zÔí¶±1«AÆÔ@J#_Ôæ7\'úlË1) J͵ê).’3 zÔfÖT†A´˜²HÑšÀ[#)ðBzRA©7ÖŒ˜ë\"TÔ*~SWÎöå‘/Pà‡ä’B®ÅŽ;\Zç”ayƒ6ø€ëÚè+UŠº?.$º6ÀÇ-uTƒv@h…îsÉ&ª¹ÀÙèNØ¥bòfJ’~ê]6–·p£³/q)…>ŸE…1úÎÍ”A\neÍL®g\ZE‡`cW’ÿ™¶Ü`fJ©EÍa‚ˆ>‚šb\n¹Ó‘dÑ.u•doܾ[¹\nt£ b³+õ†l\Z?X* ‘Y•(äÖ…;ßL¶JqÅ¥ÉõÀòd$Ü\"¤WzGûŽ-@b~+‰#™kÇžÙŽÅÆ‚~ˆ¶âÆøÿP)B ï£ø€ã¬ðqŒÒ–2×åÍríRl묀ô`z º4«ÛúÃXímÀ;¨XÝt;r.ÈsA¾äRïy)ÈkAÞ\nRJTª®JÙU©»*…W«ò¿_ߟžîŸ¼4@óvtžþfúà÷>•«½±x„½ÿ','2038-01-19 03:14:07');
+INSERT INTO `mw_objectcache` VALUES ('test_wiki-mw_:resourceloader:filter:minify-js:dd9440c19c575629ac5ec90e489cf62e','+¶21·RâÜÔ”ÌÄðÌìL½œüÄ”Ô\"½â’Ä’Tj¥âÌ’T%+¥¢ÔÄ”J¥ZMk.%k\0','2038-01-19 03:14:07');
+/*!40000 ALTER TABLE `mw_objectcache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_oldimage`
+--
+
+DROP TABLE IF EXISTS `mw_oldimage`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_oldimage` (
+ `oi_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `oi_archive_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `oi_size` int(10) unsigned NOT NULL DEFAULT '0',
+ `oi_width` int(11) NOT NULL DEFAULT '0',
+ `oi_height` int(11) NOT NULL DEFAULT '0',
+ `oi_bits` int(11) NOT NULL DEFAULT '0',
+ `oi_description` tinyblob NOT NULL,
+ `oi_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `oi_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `oi_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `oi_metadata` mediumblob NOT NULL,
+ `oi_media_type` enum('UNKNOWN','BITMAP','DRAWING','AUDIO','VIDEO','MULTIMEDIA','OFFICE','TEXT','EXECUTABLE','ARCHIVE') DEFAULT NULL,
+ `oi_major_mime` enum('unknown','application','audio','image','text','video','message','model','multipart') NOT NULL DEFAULT 'unknown',
+ `oi_minor_mime` varbinary(100) NOT NULL DEFAULT 'unknown',
+ `oi_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `oi_sha1` varbinary(32) NOT NULL DEFAULT '',
+ KEY `oi_usertext_timestamp` (`oi_user_text`,`oi_timestamp`),
+ KEY `oi_name_timestamp` (`oi_name`,`oi_timestamp`),
+ KEY `oi_name_archive_name` (`oi_name`,`oi_archive_name`(14)),
+ KEY `oi_sha1` (`oi_sha1`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_oldimage`
+--
+
+LOCK TABLES `mw_oldimage` WRITE;
+/*!40000 ALTER TABLE `mw_oldimage` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_oldimage` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_page`
+--
+
+DROP TABLE IF EXISTS `mw_page`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_page` (
+ `page_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `page_namespace` int(11) NOT NULL,
+ `page_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `page_restrictions` tinyblob NOT NULL,
+ `page_counter` bigint(20) unsigned NOT NULL DEFAULT '0',
+ `page_is_redirect` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `page_is_new` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `page_random` double unsigned NOT NULL,
+ `page_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `page_latest` int(10) unsigned NOT NULL,
+ `page_len` int(10) unsigned NOT NULL,
+ PRIMARY KEY (`page_id`),
+ UNIQUE KEY `name_title` (`page_namespace`,`page_title`),
+ KEY `page_random` (`page_random`),
+ KEY `page_len` (`page_len`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_page`
+--
+
+LOCK TABLES `mw_page` WRITE;
+/*!40000 ALTER TABLE `mw_page` DISABLE KEYS */;
+INSERT INTO `mw_page` VALUES (1,0,'Main_Page','',1,0,1,0.334989576352,'20101230131547',1,438);
+/*!40000 ALTER TABLE `mw_page` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_page_props`
+--
+
+DROP TABLE IF EXISTS `mw_page_props`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_page_props` (
+ `pp_page` int(11) NOT NULL,
+ `pp_propname` varbinary(60) NOT NULL,
+ `pp_value` blob NOT NULL,
+ UNIQUE KEY `pp_page_propname` (`pp_page`,`pp_propname`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_page_props`
+--
+
+LOCK TABLES `mw_page_props` WRITE;
+/*!40000 ALTER TABLE `mw_page_props` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_page_props` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_page_restrictions`
+--
+
+DROP TABLE IF EXISTS `mw_page_restrictions`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_page_restrictions` (
+ `pr_page` int(11) NOT NULL,
+ `pr_type` varbinary(60) NOT NULL,
+ `pr_level` varbinary(60) NOT NULL,
+ `pr_cascade` tinyint(4) NOT NULL,
+ `pr_user` int(11) DEFAULT NULL,
+ `pr_expiry` varbinary(14) DEFAULT NULL,
+ `pr_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ PRIMARY KEY (`pr_id`),
+ UNIQUE KEY `pr_pagetype` (`pr_page`,`pr_type`),
+ KEY `pr_typelevel` (`pr_type`,`pr_level`),
+ KEY `pr_level` (`pr_level`),
+ KEY `pr_cascade` (`pr_cascade`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_page_restrictions`
+--
+
+LOCK TABLES `mw_page_restrictions` WRITE;
+/*!40000 ALTER TABLE `mw_page_restrictions` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_page_restrictions` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_pagelinks`
+--
+
+DROP TABLE IF EXISTS `mw_pagelinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_pagelinks` (
+ `pl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `pl_namespace` int(11) NOT NULL DEFAULT '0',
+ `pl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `pl_from` (`pl_from`,`pl_namespace`,`pl_title`),
+ UNIQUE KEY `pl_namespace` (`pl_namespace`,`pl_title`,`pl_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_pagelinks`
+--
+
+LOCK TABLES `mw_pagelinks` WRITE;
+/*!40000 ALTER TABLE `mw_pagelinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_pagelinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_protected_titles`
+--
+
+DROP TABLE IF EXISTS `mw_protected_titles`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_protected_titles` (
+ `pt_namespace` int(11) NOT NULL,
+ `pt_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `pt_user` int(10) unsigned NOT NULL,
+ `pt_reason` tinyblob,
+ `pt_timestamp` binary(14) NOT NULL,
+ `pt_expiry` varbinary(14) NOT NULL DEFAULT '',
+ `pt_create_perm` varbinary(60) NOT NULL,
+ UNIQUE KEY `pt_namespace_title` (`pt_namespace`,`pt_title`),
+ KEY `pt_timestamp` (`pt_timestamp`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_protected_titles`
+--
+
+LOCK TABLES `mw_protected_titles` WRITE;
+/*!40000 ALTER TABLE `mw_protected_titles` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_protected_titles` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_querycache`
+--
+
+DROP TABLE IF EXISTS `mw_querycache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_querycache` (
+ `qc_type` varbinary(32) NOT NULL,
+ `qc_value` int(10) unsigned NOT NULL DEFAULT '0',
+ `qc_namespace` int(11) NOT NULL DEFAULT '0',
+ `qc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ KEY `qc_type` (`qc_type`,`qc_value`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_querycache`
+--
+
+LOCK TABLES `mw_querycache` WRITE;
+/*!40000 ALTER TABLE `mw_querycache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_querycache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_querycache_info`
+--
+
+DROP TABLE IF EXISTS `mw_querycache_info`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_querycache_info` (
+ `qci_type` varbinary(32) NOT NULL DEFAULT '',
+ `qci_timestamp` binary(14) NOT NULL DEFAULT '19700101000000',
+ UNIQUE KEY `qci_type` (`qci_type`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_querycache_info`
+--
+
+LOCK TABLES `mw_querycache_info` WRITE;
+/*!40000 ALTER TABLE `mw_querycache_info` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_querycache_info` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_querycachetwo`
+--
+
+DROP TABLE IF EXISTS `mw_querycachetwo`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_querycachetwo` (
+ `qcc_type` varbinary(32) NOT NULL,
+ `qcc_value` int(10) unsigned NOT NULL DEFAULT '0',
+ `qcc_namespace` int(11) NOT NULL DEFAULT '0',
+ `qcc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `qcc_namespacetwo` int(11) NOT NULL DEFAULT '0',
+ `qcc_titletwo` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ KEY `qcc_type` (`qcc_type`,`qcc_value`),
+ KEY `qcc_title` (`qcc_type`,`qcc_namespace`,`qcc_title`),
+ KEY `qcc_titletwo` (`qcc_type`,`qcc_namespacetwo`,`qcc_titletwo`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_querycachetwo`
+--
+
+LOCK TABLES `mw_querycachetwo` WRITE;
+/*!40000 ALTER TABLE `mw_querycachetwo` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_querycachetwo` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_recentchanges`
+--
+
+DROP TABLE IF EXISTS `mw_recentchanges`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_recentchanges` (
+ `rc_id` int(11) NOT NULL AUTO_INCREMENT,
+ `rc_timestamp` varbinary(14) NOT NULL DEFAULT '',
+ `rc_cur_time` varbinary(14) NOT NULL DEFAULT '',
+ `rc_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL,
+ `rc_namespace` int(11) NOT NULL DEFAULT '0',
+ `rc_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rc_comment` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rc_minor` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_bot` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_new` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_cur_id` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_this_oldid` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_last_oldid` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_type` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_moved_to_ns` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_moved_to_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rc_patrolled` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_ip` varbinary(40) NOT NULL DEFAULT '',
+ `rc_old_len` int(11) DEFAULT NULL,
+ `rc_new_len` int(11) DEFAULT NULL,
+ `rc_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rc_logid` int(10) unsigned NOT NULL DEFAULT '0',
+ `rc_log_type` varbinary(255) DEFAULT NULL,
+ `rc_log_action` varbinary(255) DEFAULT NULL,
+ `rc_params` blob,
+ PRIMARY KEY (`rc_id`),
+ KEY `rc_timestamp` (`rc_timestamp`),
+ KEY `rc_namespace_title` (`rc_namespace`,`rc_title`),
+ KEY `rc_cur_id` (`rc_cur_id`),
+ KEY `new_name_timestamp` (`rc_new`,`rc_namespace`,`rc_timestamp`),
+ KEY `rc_ip` (`rc_ip`),
+ KEY `rc_ns_usertext` (`rc_namespace`,`rc_user_text`),
+ KEY `rc_user_text` (`rc_user_text`,`rc_timestamp`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_recentchanges`
+--
+
+LOCK TABLES `mw_recentchanges` WRITE;
+/*!40000 ALTER TABLE `mw_recentchanges` DISABLE KEYS */;
+INSERT INTO `mw_recentchanges` VALUES (1,'20101230131547','20101230131547',0,'MediaWiki Default',0,'Main_Page','',0,0,1,1,1,0,1,0,'',0,'::1',0,438,0,0,NULL,'','');
+/*!40000 ALTER TABLE `mw_recentchanges` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_redirect`
+--
+
+DROP TABLE IF EXISTS `mw_redirect`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_redirect` (
+ `rd_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `rd_namespace` int(11) NOT NULL DEFAULT '0',
+ `rd_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rd_interwiki` varchar(32) DEFAULT NULL,
+ `rd_fragment` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin DEFAULT NULL,
+ PRIMARY KEY (`rd_from`),
+ KEY `rd_ns_title` (`rd_namespace`,`rd_title`,`rd_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_redirect`
+--
+
+LOCK TABLES `mw_redirect` WRITE;
+/*!40000 ALTER TABLE `mw_redirect` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_redirect` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_revision`
+--
+
+DROP TABLE IF EXISTS `mw_revision`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_revision` (
+ `rev_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `rev_page` int(10) unsigned NOT NULL,
+ `rev_text_id` int(10) unsigned NOT NULL,
+ `rev_comment` tinyblob NOT NULL,
+ `rev_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `rev_user_text` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `rev_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `rev_minor_edit` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rev_deleted` tinyint(3) unsigned NOT NULL DEFAULT '0',
+ `rev_len` int(10) unsigned DEFAULT NULL,
+ `rev_parent_id` int(10) unsigned DEFAULT NULL,
+ PRIMARY KEY (`rev_id`),
+ UNIQUE KEY `rev_page_id` (`rev_page`,`rev_id`),
+ KEY `rev_timestamp` (`rev_timestamp`),
+ KEY `page_timestamp` (`rev_page`,`rev_timestamp`),
+ KEY `user_timestamp` (`rev_user`,`rev_timestamp`),
+ KEY `usertext_timestamp` (`rev_user_text`,`rev_timestamp`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 MAX_ROWS=10000000 AVG_ROW_LENGTH=1024;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_revision`
+--
+
+LOCK TABLES `mw_revision` WRITE;
+/*!40000 ALTER TABLE `mw_revision` DISABLE KEYS */;
+INSERT INTO `mw_revision` VALUES (1,1,1,'',0,'MediaWiki Default','20101230131547',0,0,438,0);
+/*!40000 ALTER TABLE `mw_revision` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_searchindex`
+--
+
+DROP TABLE IF EXISTS `mw_searchindex`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_searchindex` (
+ `si_page` int(10) unsigned NOT NULL,
+ `si_title` varchar(255) NOT NULL DEFAULT '',
+ `si_text` mediumtext NOT NULL,
+ UNIQUE KEY `si_page` (`si_page`),
+ FULLTEXT KEY `si_title` (`si_title`),
+ FULLTEXT KEY `si_text` (`si_text`)
+) ENGINE=MyISAM DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_searchindex`
+--
+
+LOCK TABLES `mw_searchindex` WRITE;
+/*!40000 ALTER TABLE `mw_searchindex` DISABLE KEYS */;
+INSERT INTO `mw_searchindex` VALUES (1,'main page',' mediawiki hasu800 been successfully installed. consult theu800 user user\'su800 guide foru800 information onu800 using theu800 wiki software. getting started getting started getting started configuration settings list mediawiki faqu800 mediawiki release mailing list ');
+/*!40000 ALTER TABLE `mw_searchindex` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_site_stats`
+--
+
+DROP TABLE IF EXISTS `mw_site_stats`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_site_stats` (
+ `ss_row_id` int(10) unsigned NOT NULL,
+ `ss_total_views` bigint(20) unsigned DEFAULT '0',
+ `ss_total_edits` bigint(20) unsigned DEFAULT '0',
+ `ss_good_articles` bigint(20) unsigned DEFAULT '0',
+ `ss_total_pages` bigint(20) DEFAULT '-1',
+ `ss_users` bigint(20) DEFAULT '-1',
+ `ss_active_users` bigint(20) DEFAULT '-1',
+ `ss_admins` int(11) DEFAULT '-1',
+ `ss_images` int(11) DEFAULT '0',
+ UNIQUE KEY `ss_row_id` (`ss_row_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_site_stats`
+--
+
+LOCK TABLES `mw_site_stats` WRITE;
+/*!40000 ALTER TABLE `mw_site_stats` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_site_stats` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_tag_summary`
+--
+
+DROP TABLE IF EXISTS `mw_tag_summary`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_tag_summary` (
+ `ts_rc_id` int(11) DEFAULT NULL,
+ `ts_log_id` int(11) DEFAULT NULL,
+ `ts_rev_id` int(11) DEFAULT NULL,
+ `ts_tags` blob NOT NULL,
+ UNIQUE KEY `tag_summary_rc_id` (`ts_rc_id`),
+ UNIQUE KEY `tag_summary_log_id` (`ts_log_id`),
+ UNIQUE KEY `tag_summary_rev_id` (`ts_rev_id`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_tag_summary`
+--
+
+LOCK TABLES `mw_tag_summary` WRITE;
+/*!40000 ALTER TABLE `mw_tag_summary` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_tag_summary` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_templatelinks`
+--
+
+DROP TABLE IF EXISTS `mw_templatelinks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_templatelinks` (
+ `tl_from` int(10) unsigned NOT NULL DEFAULT '0',
+ `tl_namespace` int(11) NOT NULL DEFAULT '0',
+ `tl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ UNIQUE KEY `tl_from` (`tl_from`,`tl_namespace`,`tl_title`),
+ UNIQUE KEY `tl_namespace` (`tl_namespace`,`tl_title`,`tl_from`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_templatelinks`
+--
+
+LOCK TABLES `mw_templatelinks` WRITE;
+/*!40000 ALTER TABLE `mw_templatelinks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_templatelinks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_text`
+--
+
+DROP TABLE IF EXISTS `mw_text`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_text` (
+ `old_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `old_text` mediumblob NOT NULL,
+ `old_flags` tinyblob NOT NULL,
+ PRIMARY KEY (`old_id`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1 MAX_ROWS=10000000 AVG_ROW_LENGTH=10240;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_text`
+--
+
+LOCK TABLES `mw_text` WRITE;
+/*!40000 ALTER TABLE `mw_text` DISABLE KEYS */;
+INSERT INTO `mw_text` VALUES (1,'\'\'\'MediaWiki has been successfully installed.\'\'\'\n\nConsult the [http://meta.wikimedia.org/wiki/Help:Contents User\'s Guide] for information on using the wiki software.\n\n== Getting started ==\n* [http://www.mediawiki.org/wiki/Manual:Configuration_settings Configuration settings list]\n* [http://www.mediawiki.org/wiki/Manual:FAQ MediaWiki FAQ]\n* [https://lists.wikimedia.org/mailman/listinfo/mediawiki-announce MediaWiki release mailing list]','utf-8');
+/*!40000 ALTER TABLE `mw_text` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_trackbacks`
+--
+
+DROP TABLE IF EXISTS `mw_trackbacks`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_trackbacks` (
+ `tb_id` int(11) NOT NULL AUTO_INCREMENT,
+ `tb_page` int(11) DEFAULT NULL,
+ `tb_title` varchar(255) NOT NULL,
+ `tb_url` blob NOT NULL,
+ `tb_ex` text,
+ `tb_name` varchar(255) DEFAULT NULL,
+ PRIMARY KEY (`tb_id`),
+ KEY `tb_page` (`tb_page`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_trackbacks`
+--
+
+LOCK TABLES `mw_trackbacks` WRITE;
+/*!40000 ALTER TABLE `mw_trackbacks` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_trackbacks` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_transcache`
+--
+
+DROP TABLE IF EXISTS `mw_transcache`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_transcache` (
+ `tc_url` varbinary(255) NOT NULL,
+ `tc_contents` text,
+ `tc_time` binary(14) NOT NULL,
+ UNIQUE KEY `tc_url_idx` (`tc_url`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_transcache`
+--
+
+LOCK TABLES `mw_transcache` WRITE;
+/*!40000 ALTER TABLE `mw_transcache` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_transcache` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_updatelog`
+--
+
+DROP TABLE IF EXISTS `mw_updatelog`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_updatelog` (
+ `ul_key` varchar(255) NOT NULL,
+ `ul_value` blob,
+ PRIMARY KEY (`ul_key`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_updatelog`
+--
+
+LOCK TABLES `mw_updatelog` WRITE;
+/*!40000 ALTER TABLE `mw_updatelog` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_updatelog` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user`
+--
+
+DROP TABLE IF EXISTS `mw_user`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user` (
+ `user_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
+ `user_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `user_real_name` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `user_password` tinyblob NOT NULL,
+ `user_newpassword` tinyblob NOT NULL,
+ `user_newpass_time` binary(14) DEFAULT NULL,
+ `user_email` tinytext NOT NULL,
+ `user_options` blob NOT NULL,
+ `user_touched` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `user_token` binary(32) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ `user_email_authenticated` binary(14) DEFAULT NULL,
+ `user_email_token` binary(32) DEFAULT NULL,
+ `user_email_token_expires` binary(14) DEFAULT NULL,
+ `user_registration` binary(14) DEFAULT NULL,
+ `user_editcount` int(11) DEFAULT NULL,
+ PRIMARY KEY (`user_id`),
+ UNIQUE KEY `user_name` (`user_name`),
+ KEY `user_email_token` (`user_email_token`)
+) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user`
+--
+
+LOCK TABLES `mw_user` WRITE;
+/*!40000 ALTER TABLE `mw_user` DISABLE KEYS */;
+INSERT INTO `mw_user` VALUES (1,'WikiSysop','',':B:b1373470:f7e87db0c9596055f39a1225b0c31508','',NULL,'','','20101230131552','de4ddde7c4eef6e3609f4287324a0a18',NULL,'\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0',NULL,'20101230131547',0);
+/*!40000 ALTER TABLE `mw_user` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user_groups`
+--
+
+DROP TABLE IF EXISTS `mw_user_groups`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user_groups` (
+ `ug_user` int(10) unsigned NOT NULL DEFAULT '0',
+ `ug_group` varbinary(16) NOT NULL DEFAULT '',
+ UNIQUE KEY `ug_user_group` (`ug_user`,`ug_group`),
+ KEY `ug_group` (`ug_group`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user_groups`
+--
+
+LOCK TABLES `mw_user_groups` WRITE;
+/*!40000 ALTER TABLE `mw_user_groups` DISABLE KEYS */;
+INSERT INTO `mw_user_groups` VALUES (1,'bureaucrat');
+INSERT INTO `mw_user_groups` VALUES (1,'sysop');
+/*!40000 ALTER TABLE `mw_user_groups` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user_newtalk`
+--
+
+DROP TABLE IF EXISTS `mw_user_newtalk`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user_newtalk` (
+ `user_id` int(11) NOT NULL DEFAULT '0',
+ `user_ip` varbinary(40) NOT NULL DEFAULT '',
+ `user_last_timestamp` binary(14) NOT NULL DEFAULT '\0\0\0\0\0\0\0\0\0\0\0\0\0\0',
+ KEY `user_id` (`user_id`),
+ KEY `user_ip` (`user_ip`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user_newtalk`
+--
+
+LOCK TABLES `mw_user_newtalk` WRITE;
+/*!40000 ALTER TABLE `mw_user_newtalk` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_user_newtalk` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_user_properties`
+--
+
+DROP TABLE IF EXISTS `mw_user_properties`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_user_properties` (
+ `up_user` int(11) NOT NULL,
+ `up_property` varbinary(32) NOT NULL,
+ `up_value` blob,
+ UNIQUE KEY `user_properties_user_property` (`up_user`,`up_property`),
+ KEY `user_properties_property` (`up_property`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_user_properties`
+--
+
+LOCK TABLES `mw_user_properties` WRITE;
+/*!40000 ALTER TABLE `mw_user_properties` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_user_properties` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_valid_tag`
+--
+
+DROP TABLE IF EXISTS `mw_valid_tag`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_valid_tag` (
+ `vt_tag` varchar(255) NOT NULL,
+ PRIMARY KEY (`vt_tag`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_valid_tag`
+--
+
+LOCK TABLES `mw_valid_tag` WRITE;
+/*!40000 ALTER TABLE `mw_valid_tag` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_valid_tag` ENABLE KEYS */;
+UNLOCK TABLES;
+
+--
+-- Table structure for table `mw_watchlist`
+--
+
+DROP TABLE IF EXISTS `mw_watchlist`;
+/*!40101 SET @saved_cs_client = @@character_set_client */;
+/*!40101 SET character_set_client = utf8 */;
+CREATE TABLE `mw_watchlist` (
+ `wl_user` int(10) unsigned NOT NULL,
+ `wl_namespace` int(11) NOT NULL DEFAULT '0',
+ `wl_title` varchar(255) CHARACTER SET latin1 COLLATE latin1_bin NOT NULL DEFAULT '',
+ `wl_notificationtimestamp` varbinary(14) DEFAULT NULL,
+ UNIQUE KEY `wl_user` (`wl_user`,`wl_namespace`,`wl_title`),
+ KEY `namespace_title` (`wl_namespace`,`wl_title`)
+) ENGINE=InnoDB DEFAULT CHARSET=latin1;
+/*!40101 SET character_set_client = @saved_cs_client */;
+
+--
+-- Dumping data for table `mw_watchlist`
+--
+
+LOCK TABLES `mw_watchlist` WRITE;
+/*!40000 ALTER TABLE `mw_watchlist` DISABLE KEYS */;
+/*!40000 ALTER TABLE `mw_watchlist` ENABLE KEYS */;
+UNLOCK TABLES;
+/*!40103 SET TIME_ZONE=@OLD_TIME_ZONE */;
+
+/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
+/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
+/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
+/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;
+/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;
+/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;
+/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
+
+-- Dump completed on 2010-12-31 1:20:11
diff --git a/tests/selenium/installer/MediaWikiButtonsAvailabilityTestCase.php b/tests/selenium/installer/MediaWikiButtonsAvailabilityTestCase.php
new file mode 100644
index 00000000..3557f516
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiButtonsAvailabilityTestCase.php
@@ -0,0 +1,102 @@
+<?php
+
+/**
+ * MediaWikiButtonsAvailabilityTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 30 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name :'Back' and 'Continue' button availability
+ * Version : MediaWiki 1.18alpha
+*/
+
+
+class MediaWikiButtonsAvailabilityTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+
+ // Verify only 'Continue' button available on 'Language' page
+ public function testOnlyContinueButtonAvailability() {
+
+ parent::navigateLanguagePage();
+
+ // Verify only 'Continue' button avaialble
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+
+ // 'Back' button is not avaialble
+ $this->assertElementNotPresent( "submit-back" );
+ }
+
+
+ // Verify 'Continue' and 'Back' buttons availability
+ public function testBothButtonsAvailability() {
+
+ // Verify buttons availability on 'Welcome to MediaWiki' page
+ parent::navigateWelcometoMediaWikiPage();
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+ parent::restartInstallation();
+
+ // Verify buttons availability on 'Connect to Database' page
+ parent::navigateConnetToDatabasePage();
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+ parent::restartInstallation();
+
+ // Verify buttons availability on 'Database settings' page
+ $databaseName = DB_NAME_PREFIX."_db_settings";
+ parent::navigateDatabaseSettingsPage( $databaseName );
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+ parent::restartInstallation();
+
+ // Verify buttons availability on 'Name' page
+ $databaseName = DB_NAME_PREFIX."_name";
+ parent::navigateNamePage( $databaseName );
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+ parent::restartInstallation();
+
+ // Verify buttons availability on 'Options' page
+ $databaseName = DB_NAME_PREFIX."_options";
+ parent::navigateOptionsPage( $databaseName );
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+ parent::restartInstallation();
+
+ // Verify buttons availability on 'Install' page
+ $databaseName = DB_NAME_PREFIX."_install";
+ parent::navigateInstallPage($databaseName);
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ $this->assertTrue( $this->isElementPresent( "submit-continue" ));
+ }
+} \ No newline at end of file
diff --git a/tests/selenium/installer/MediaWikiDifferentDatabaseAccountTestCase.php b/tests/selenium/installer/MediaWikiDifferentDatabaseAccountTestCase.php
new file mode 100644
index 00000000..4afcdc0e
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiDifferentDatabaseAccountTestCase.php
@@ -0,0 +1,82 @@
+<?php
+
+/**
+ * MediaWikiDifferentDatabaseAccountTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once ( dirname( __FILE__ ) . '/MediaWikiInstallationCommonFunction.php' );
+
+/*
+ * Test Case ID : 04 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install MediaWiki with different Database accounts for web access.
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiDifferentDatabaseAccountTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+
+ // Install Mediawiki using 'MySQL' database type.
+ public function testDifferentDatabaseAccount() {
+
+ $databaseName = DB_NAME_PREFIX."_dif_accounts";
+
+ // Navigate to the 'Database settings' page
+ parent::navigateDatabaseSettingsPage( $databaseName );
+
+ // Click on the 'Use the same account as for installation' check box
+ $this->click( "mysql__SameAccount" );
+
+ // Change the 'Database username'
+ $this->type( "mysql_wgDBuser", DB_WEB_USER );
+
+ // Enter 'Database password:'
+ $this->type( "mysql_wgDBpassword", DB_WEB_USER_PASSWORD );
+
+ // Select 'Create the account if it does not already exist' check box
+ $this->click( "mysql__CreateDBAccount" );
+ parent::clickContinueButton();
+
+ // 'Name' page
+ parent::completeNamePage();
+
+ // 'Options' page
+ parent::clickContinueButton();
+
+ // 'Install' page
+ $this->assertEquals("Creating database user... done",
+ $this->getText( LINK_FORM."ul/li[3]"));
+ parent::clickContinueButton();
+
+ // 'Complete' page
+ parent::completePageSuccessfull();
+ $this->chooseCancelOnNextConfirmation();
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiDifferntDatabasePrefixTestCase.php b/tests/selenium/installer/MediaWikiDifferntDatabasePrefixTestCase.php
new file mode 100644
index 00000000..b6a0fc09
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiDifferntDatabasePrefixTestCase.php
@@ -0,0 +1,95 @@
+<?php
+
+/**
+ * MediaWikiDifferntDatabasePrefixTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+require_once ( dirname( __FILE__ ) . '/MediaWikiInstallationCommonFunction.php' );
+
+/*
+ * Test Case ID : 02 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install MediaWiki with the same database and the different
+ * database prefixes(Share one database between multiple wikis).
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiDifferntDatabasePrefixTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Install Mediawiki using 'MySQL' database type.
+ public function testDifferentDatabasePrefix() {
+
+ $databaseName = DB_NAME_PREFIX."_db_prefix";
+ parent::navigateInstallPage( $databaseName );
+
+ // To 'Options' page
+ parent::clickBackButton();
+
+ // To 'Name' page
+ parent::clickBackButton();
+
+ // To 'Database settings' page
+ parent::clickBackButton();
+
+ // To 'Connect to database' page
+ parent::clickBackButton();
+
+ // From 'Connect to database' page without database prefix
+ parent::clickContinueButton();
+
+ // Verify upgrade existing message
+ $this->assertEquals( "Upgrade existing installation",
+ $this->getText( LINK_DIV."h2" ));
+
+ // To 'Connect to database' page
+ parent::clickBackButton();
+
+ // Input the database prefix
+ $this->type( "mysql_wgDBprefix", DATABASE_PREFIX );
+
+ // From 'Connect to database' page with database prefix
+ parent::clickContinueButton();
+
+ // To 'Complete' page
+ parent::clickContinueButton();
+ parent::completeNamePage();
+ parent::clickContinueButton();
+
+ // Verify already installed warning message
+ $this->assertEquals( "Install",
+ $this->getText( LINK_DIV."h2" ));
+ $this->assertEquals( "Warning: You seem to have already installed MediaWiki and are trying to install it again. Please proceed to the next page.",
+ $this->getText( LINK_FORM."div[1]" ));
+
+ parent::clickContinueButton();
+ parent::completePageSuccessfull();
+ $this->chooseCancelOnNextConfirmation();
+ parent::restartInstallation();
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiErrorsConnectToDatabasePageTestCase.php b/tests/selenium/installer/MediaWikiErrorsConnectToDatabasePageTestCase.php
new file mode 100644
index 00000000..3642a8ef
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiErrorsConnectToDatabasePageTestCase.php
@@ -0,0 +1,136 @@
+<?php
+
+/**
+ * MediaWikiErrorsConnectToDatabasePageTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once ( dirname( __FILE__ ) . '/MediaWikiInstallationCommonFunction.php' );
+
+/*
+ * Test Case ID : 09 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Invalid/ blank values for fields in 'Connect to database' page.
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiErrorsConnectToDatabasePageTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Verify warning messages for the 'Connet to database' page
+ public function testErrorsConnectToDatabasePage() {
+
+ parent::navigateConnetToDatabasePage();
+
+ // Verify warning mesage for invalid database host
+ $this->type( "mysql_wgDBserver", INVALID_DB_HOST );
+ parent::clickContinueButton();
+ $this->assertEquals( "DB connection error: php_network_getaddresses: getaddrinfo failed: No such host is known. (".INVALID_DB_HOST.").",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[1]" ));
+ $this->assertEquals( "Check the host, username and password below and try again.",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[2]" ));
+ // Verify warning message for the blank database host
+ $this->type( "mysql_wgDBserver", "" );
+ parent::clickContinueButton();
+ $this->assertEquals( "MySQL 4.0.14 or later is required, you have .",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+ // Valid Database Host
+ $this->type( "mysql_wgDBserver", VALID_DB_HOST );
+
+ // Verify warning message for the invalid database name
+ $this->type( "mysql_wgDBname", INVALID_DB_NAME );
+ parent::clickContinueButton();
+ $this->assertEquals( "Invalid database name \"".INVALID_DB_NAME."\". Use only ASCII letters (a-z, A-Z), numbers (0-9) and underscores (_).",
+ $this->getText( LINK_DIV."div[2]/div[2]/p" ));
+
+ // Verify warning message for the blank database name
+ $this->type( "mysql_wgDBname", "");
+ parent::clickContinueButton();
+ $this->assertEquals( "You must enter a value for \"Database name\"",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+ // valid Database name
+ $this->type( "mysql_wgDBname", VALID_DB_NAME);
+
+ // Verify warning message for the invalid databaase prefix
+ $this->type( "mysql_wgDBprefix", INVALID_DB_PREFIX );
+ parent::clickContinueButton();
+ $this->assertEquals( "Invalid database prefix \"".INVALID_DB_PREFIX."\". Use only ASCII letters (a-z, A-Z), numbers (0-9) and underscores (_).",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+ // Valid Database prefix
+ $this->type( "mysql_wgDBprefix", VALID_DB_PREFIX );
+
+ // Verify warning message for the invalid database user name
+ $this->type( "mysql__InstallUser", INVALID_DB_USER_NAME );
+ parent::clickContinueButton();
+ $this->assertEquals( "DB connection error: Access denied for user '".INVALID_DB_USER_NAME."'@'localhost' (using password: NO) (localhost).",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[1]" ));
+ $this->assertEquals( "Check the host, username and password below and try again.",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[2]"));
+
+ // Verify warning message for the blank database user name
+ $this->type( "mysql__InstallUser", "" );
+ parent::clickContinueButton();
+ $this->assertEquals( "DB connection error: Access denied for user 'SYSTEM'@'localhost' (using password: NO) (localhost).",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[1]" ));
+ $this->assertEquals( "Check the host, username and password below and try again.",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[2]" ));
+
+ // Valid Database username
+ $this->type( "mysql__InstallUser", VALID_DB_USER_NAME );
+
+ // Verify warning message for the invalid password
+ $this->type( "mysql__InstallPassword", INVALID_DB_PASSWORD );
+ parent::clickContinueButton();
+
+ $this->assertEquals( "DB connection error: Access denied for user 'root'@'localhost' (using password: YES) (localhost).",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[1]" ));
+ $this->assertEquals( "Check the host, username and password below and try again.",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[2]" ));
+
+ // Verify warning message for the invalid username and password
+ $this->type( "mysql__InstallUser", INVALID_DB_USER_NAME );
+ $this->type( "mysql__InstallPassword", INVALID_DB_PASSWORD );
+ parent::clickContinueButton();
+ $this->assertEquals( "DB connection error: Access denied for user '".INVALID_DB_USER_NAME."'@'localhost' (using password: YES) (localhost).",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[1]" ));
+ $this->assertEquals( "Check the host, username and password below and try again.",
+ $this->getText( LINK_DIV."div[2]/div[2]/p[2]" ));
+
+ // Valid username and valid password
+ $this->type( "mysql__InstallUser", VALID_DB_USER_NAME );
+ $this->type( "mysql__InstallPassword", "" );
+ parent::clickContinueButton();
+
+ // successfully completes the 'Connect to database' page
+ $this->assertEquals( "Database settings",
+ $this->getText( LINK_DIV."h2" ));
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiErrorsNamepageTestCase.php b/tests/selenium/installer/MediaWikiErrorsNamepageTestCase.php
new file mode 100644
index 00000000..d70dcc42
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiErrorsNamepageTestCase.php
@@ -0,0 +1,132 @@
+<?php
+
+/**
+ * MediaWikiErrorsNamepageTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+/*
+ * Test Case ID : 10 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Invalid/ blank values for fields in 'Name' page.
+ * Version : MediaWiki 1.18alpha
+*/
+
+require_once ( dirname( __FILE__ ) . '/MediaWikiInstallationCommonFunction.php' );
+
+class MediaWikiErrorsNamepageTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Verify warning message for the 'Name' page
+ public function testErrorsNamePage() {
+
+ $databaseName = DB_NAME_PREFIX."_error_name";
+
+ parent::navigateNamePage( $databaseName );
+
+ // Verify warning message for all blank fields
+ parent::clickContinueButton();
+ $this->assertEquals( "Enter a site name.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+ $this->assertEquals( "Enter an administrator username.",
+ $this->getText( LINK_DIV."div[3]/div[2]" ));
+ $this->assertEquals( "Enter a password for the administrator account.",
+ $this->getText( LINK_DIV."div[4]/div[2]" ));
+
+ // Verify warning message for the blank 'Site name'
+ $this->type( "config__AdminName", VALID_YOUR_NAME );
+ $this->type( "config__AdminPassword", VALID_PASSWORD );
+ $this->type( "config__AdminPassword2", VALID_PASSWORD_AGAIN );
+ parent::clickContinueButton();
+ $this->assertEquals( "Enter a site name.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+ // Input valid 'Site name'
+ $this->type( "config_wgSitename", VALID_WIKI_NAME );
+
+
+ // Verify warning message for the invalid "Project namespace'
+ $this->click( "config__NamespaceType_other" );
+ $this->type( "config_wgMetaNamespace", INVALID_NAMESPACE );
+ parent::clickContinueButton();
+ $this->assertEquals( "The specified namespace \"\" is invalid. Specify a different project namespace.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+
+ // Verify warning message for the blank 'Project namespace'
+ $this->type( "config_wgSitename", VALID_WIKI_NAME );
+ $this->click( "config__NamespaceType_other" );
+ $this->type( "config_wgMetaNamespace" , "" );
+ parent::clickContinueButton();
+ $this->assertEquals( "The specified namespace \"\" is invalid. Specify a different project namespace.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+
+ // Valid 'Project namespace'
+ $this->click( "config__NamespaceType_other" );
+ $this->type( "config_wgMetaNamespace", VALID_NAMESPACE );
+ parent::clickContinueButton();
+
+
+ // Valid 'Site name'
+ $this->click( "config__NamespaceType_site-name" );
+ $this->type( "config_wgSitename", VALID_WIKI_NAME );
+
+
+ // Verify warning message for blank 'Your name'
+ $this->type( "config__AdminName", " " );
+ parent::clickContinueButton();
+ $this->assertEquals( "Enter an administrator username.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+ $this->type( "config_wgSitename", VALID_WIKI_NAME );
+ // Verify warning message for blank 'Password'
+ $this->type( "config__AdminName", VALID_YOUR_NAME );
+ $this->type( "config__AdminPassword", " " );
+ parent::clickContinueButton();
+ $this->assertEquals( "Enter a password for the administrator account.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+
+ // Verify warning message for the blank 'Password again'
+ $this->type( "config_wgSitename", VALID_WIKI_NAME );
+ $this->type( "config__AdminPassword", VALID_PASSWORD );
+ $this->type( "config__AdminPassword2", " " );
+ parent::clickContinueButton();
+ $this->assertEquals( "The two passwords you entered do not match.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+
+
+ // Verify warning message for the different'Password' and 'Password again'
+ $this->type( "config_wgSitename", VALID_WIKI_NAME );
+ $this->type( "config__AdminPassword", VALID_PASSWORD );
+ $this->type( "config__AdminPassword2", INVALID_PASSWORD_AGAIN );
+ parent::clickContinueButton();
+ $this->assertEquals( "The two passwords you entered do not match.",
+ $this->getText( LINK_DIV."div[2]/div[2]" ));
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiHelpFieldHintTestCase.php b/tests/selenium/installer/MediaWikiHelpFieldHintTestCase.php
new file mode 100644
index 00000000..355a2857
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiHelpFieldHintTestCase.php
@@ -0,0 +1,140 @@
+<?php
+
+/**
+ * MediaWikiHelpFieldHintTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+/*
+ * Test Case ID : 29 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Help field hint availability for the fields.
+ * Version : MediaWiki 1.18alpha
+*/
+
+require_once ( dirname( __FILE__ ) . '/MediaWikiInstallationCommonFunction.php' );
+
+class MediaWikiHelpFieldHintTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+
+ // Verify help field availability for the fields
+ public function testMySQLConnectToDatabaseFieldHint() {
+
+ parent::navigateConnetToDatabasePage();
+
+ // Verify help field for 'Database host'
+ $this->click( "//div[@id='DB_wrapper_mysql']/div/div[1]/div/span[1]" );
+ $this->assertEquals( MYSQL_DATABASE_HOST_HELP,
+ $this->getText( "//div[@id='DB_wrapper_mysql']/div/div[1]/div/span[2]" ) );
+
+ // Verify help field for 'Database name'
+ $this->click( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[1]/div[1]/div/span[1]" );
+ $this->assertEquals( MYSQL_DATABASE_NAME_HELP,
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[1]/div[1]/div/span[2]" ));
+
+
+ // Verify help field for 'Database table prefix'
+ $this->click("//div[@id='DB_wrapper_mysql']/fieldset[1]/div[2]/div[1]/div/span[1]" );
+ $this->assertEquals(MYSQL_DATABASE_TABLE_PREFIX_HELP,
+ $this->getText("//div[@id='DB_wrapper_mysql']/fieldset[1]/div[1]/div[1]/div/span[2]/p[1]" ));
+
+ // Verify help field for 'Database username'
+ $this->click( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[1]/div[1]/div/span[1]" );
+ $this->assertEquals( MYSQL_DATBASE_USERNAME_HELP,
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[1]/div[1]/div/span[2]" ));
+
+ // Verify help field for 'Database password'
+ $this->click( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[2]/div[1]/div/span[1]" );
+ $this->assertEquals( MYSQL_DATABASE_PASSWORD_HELP,
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[2]/div[1]/div/span[2]/p" ));
+ }
+
+
+ public function testSQLiteConnectToDatabaseFieldHint() {
+
+ parent::navigateConnetToDatabasePage();
+ $this->click( "DBType_sqlite" );
+
+ // Verify help field for 'SQLite data directory'
+ $this->click( "//div[@id='DB_wrapper_sqlite']/div[1]/div[1]/div/span[1]" );
+ $this->assertEquals( SQLITE_DATA_DIRECTORY_HELP,
+ $this->getText( "//div[@id='DB_wrapper_sqlite']/div[1]/div[1]/div/span[2]" ));
+
+ // Verify help field for 'Database name'
+ $this->click( "//div[@id='DB_wrapper_sqlite']/div[2]/div[1]/div/span[1]" );
+ $this->assertEquals( SQLITE_DATABASE_NAME_HELP , $this->getText( "//div[@id='DB_wrapper_sqlite']/div[2]/div[1]/div/span[2]/p" ));
+ }
+
+
+ public function testDatabaseSettingsFieldHint() {
+
+ $databaseName = DB_NAME_PREFIX."_db_field";
+ parent::navigateDatabaseSettingsPage($databaseName);
+
+ // Verify help field for 'Search engine'
+ $this->click( LINK_FORM."div[2]/span[1]" );
+ $this->assertEquals( SEARCH_ENGINE_HELP,
+ $this->getText( LINK_FORM."div[2]/span[2]" ));
+
+ // Verify help field for 'Database character set'
+ $this->click( LINK_FORM."div[4]/span[1]" );
+ $this->assertEquals( DATABASE_CHARACTER_SET_HELP,
+ $this->getText( LINK_FORM."div[4]/span[2]"));
+ parent::restartInstallation();
+ }
+
+
+ public function testNameFieldHint() {
+
+ $databaseName = DB_NAME_PREFIX."_name_field";
+ parent::navigateNamePage( $databaseName );
+
+ // Verify help field for 'Name of Wiki'
+ $this->click( LINK_FORM."div[1]/div[1]/div/span[1]" );
+ $this->assertEquals( NAME_OF_WIKI_HELP,
+ $this->getText( LINK_FORM."div[1]/div[1]/div/span[2]/p" ));
+
+ // Verify help field for 'Project namespace'
+ $this->click( LINK_FORM."div[2]/div[1]/div/span[1]" );
+ $this->assertEquals( PROJECT_NAMESPACE_HELP,
+ $this->getText( LINK_FORM."div[2]/div[1]/div/span[2]/p"));
+
+ // Verify help field for 'Your Name'
+ $this->click( LINK_FORM."fieldset/div[1]/div[1]/div/span[1]" );
+ $this->assertEquals( USER_NAME_HELP,
+ $this->getText( LINK_FORM."fieldset/div[1]/div[1]/div/span[2]/p" ));
+
+ // Verify help field for 'E mail address'
+ $this->click( LINK_FORM."fieldset/div[4]/div[1]/div/span[1]" );
+ $this->assertEquals( EMAIL_ADDRESS_HELP,
+ $this->getText( LINK_FORM."fieldset/div[4]/div[1]/div/span[2]/p" ));
+
+ parent::restartInstallation();
+ }
+}
+
diff --git a/tests/selenium/installer/MediaWikiInstallationCommonFunction.php b/tests/selenium/installer/MediaWikiInstallationCommonFunction.php
new file mode 100644
index 00000000..99df8a2a
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiInstallationCommonFunction.php
@@ -0,0 +1,283 @@
+<?php
+/**
+ * MediaWikiInstallationCommonFunction
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
+require_once ( dirname( __FILE__ ) . '/MediaWikiInstallationConfig.php' );
+require_once ( dirname(__FILE__) . '/MediaWikiInstallationMessage.php' );
+require_once ( dirname(__FILE__) . '/MediaWikiInstallationVariables.php');
+
+
+class MediaWikiInstallationCommonFunction extends PHPUnit_Extensions_SeleniumTestCase {
+
+ function setUp() {
+ $this->setBrowser( TEST_BROWSER );
+ $this->setBrowserUrl("http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/");
+ }
+
+
+ public function navigateInitialpage() {
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/" );
+ }
+
+
+ // Navigate to the 'Language' page
+ public function navigateLanguagePage() {
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+ }
+
+
+ // Navigate to the 'Welcome to MediaWiki' page
+ public function navigateWelcometoMediaWikiPage() {
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+ $this->click( "submit-continue ");
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Navigate yo 'Connect to Database' page
+ public function navigateConnetToDatabasePage() {
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // 'Welcome to MediaWiki!' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Connect to Database' page
+ $this->click("submit-continue");
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Navigate to the 'Database Settings' page
+ public function navigateDatabaseSettingsPage( $databaseName ) {
+
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // 'Welcome to MediaWiki!' page
+ $this->click("submit-continue");
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Connect to Database' page
+ $this->click("submit-continue");
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ $this->type("mysql_wgDBname", $databaseName );
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Navigate to the 'Name' page
+ public function navigateNamePage( $databaseName ) {
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // 'Welcome to MediaWiki!' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Connect to Database' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ $this->type( "mysql_wgDBname", $databaseName );
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Database settings
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Navigate 'Options' page
+ public function navigateOptionsPage( $databaseName ) {
+
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // 'Welcome to MediaWiki!' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Connect to Database' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ $this->type( "mysql_wgDBname", $databaseName );
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Database settings
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Name
+ $this->type( "config_wgSitename", NAME_OF_WIKI );
+ $this->type( "config__AdminName", ADMIN_USER_NAME);
+ $this->type( "config__AdminPassword", ADMIN_PASSWORD );
+ $this->type( "config__AdminPassword2", ADMIN_RETYPE_PASSWORD );
+ $this->type( "config__AdminEmail", ADMIN_EMAIL_ADDRESS );
+
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Navigate 'Install' page
+ public function navigateInstallPage( $databaseName ) {
+
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // 'Welcome to MediaWiki!' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Connect to Database' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ $this->type( "mysql_wgDBname", $databaseName );
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Database settings
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Name
+ $this->type( "config_wgSitename", NAME_OF_WIKI );
+ $this->type( "config__AdminName", ADMIN_USER_NAME);
+ $this->type( "config__AdminPassword", ADMIN_PASSWORD );
+ $this->type( "config__AdminPassword2", ADMIN_RETYPE_PASSWORD );
+ $this->type( "config__AdminEmail", ADMIN_EMAIL_ADDRESS );
+
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Options page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Navigate to 'Complete' page
+ public function navigateCompletePage( $databaseName ) {
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // 'Welcome to MediaWiki!' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Connect to Database' page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ $this->type( "mysql_wgDBname", $databaseName );
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Database settings
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Name
+ $this->type( "config_wgSitename", NAME_OF_WIKI );
+ $this->type( "config__AdminName", ADMIN_USER_NAME);
+ $this->type( "config__AdminPassword", ADMIN_PASSWORD );
+ $this->type( "config__AdminPassword2", ADMIN_RETYPE_PASSWORD );
+ $this->type( "config__AdminEmail", ADMIN_EMAIL_ADDRESS );
+
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Options page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Install page
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ $this->chooseCancelOnNextConfirmation();
+ }
+
+
+ // Complete the Name page fields
+ public function completeNamePage() {
+ $this->type( "config_wgSitename", NAME_OF_WIKI );
+ $this->type( "config__AdminName", ADMIN_USER_NAME);
+ $this->type( "config__AdminPassword", ADMIN_PASSWORD );
+ $this->type( "config__AdminPassword2", ADMIN_RETYPE_PASSWORD );
+ $this->type( "config__AdminEmail", ADMIN_EMAIL_ADDRESS );
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME);
+ }
+
+
+ // Clicking on the 'Continue' button in any MediaWiki page
+ public function clickContinueButton() {
+ $this->click( "submit-continue" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Clicking on the 'Back' button in any MediaWiki page
+ public function clickBackButton() {
+ $this->click( "submit-back" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Restarting the installation
+ public function restartInstallation() {
+ $this->click( "link=Restart installation" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ $this->click( "submit-restart" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ }
+
+
+ // Verify 'MediaWiki' logo available in the initial screen
+ public function mediaWikiLogoPresentInitialScreen() {
+ $this->assertTrue( $this->isElementPresent( "//img[@alt='The MediaWiki logo']" ));
+ }
+
+
+ // Verify 'MediaWiki' logo available
+ public function mediaWikiLogoPresent() {
+ $this->assertTrue( $this->isElementPresent( "//div[@id='p-logo']/a" ));
+ }
+
+
+ public function completePageSuccessfull() {
+ $this->assertEquals( "Complete!",
+ $this->getText( "//div[@id='bodyContent']/div/div/h2" ));
+
+ // 'Congratulations!' text should be available in the 'Complete!' page.
+ $this->assertEquals( "Congratulations!",
+ $this->getText( "//div[@id='bodyContent']/div/div/div[2]/form/div[1]/div[2]/p[1]/b" ));
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiInstallationConfig.php b/tests/selenium/installer/MediaWikiInstallationConfig.php
new file mode 100644
index 00000000..d3067d69
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiInstallationConfig.php
@@ -0,0 +1,49 @@
+<?php
+
+/**
+ * MediaWikiInstallationConfig
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+/*
+ * MediaWikiInstallerTestSuite.php can be run one time successfully
+ * with current value of the 'DB_NAME_PREFIX'.
+ * If you wish to run the suite more than one time, you need to change
+ * the value of the 'DB_NAME_PREFIX'.
+*/
+define('DB_NAME_PREFIX', "database_name" );
+define('DIRECTORY_NAME', "mediawiki" );
+define( 'PORT', "8080" );
+define( 'HOST_NAME', "localhost" );
+
+/*
+ * Use the followings to run the test suite in different browsers.
+ * Firefox : *firefox
+ * IE : *iexplore
+ * Google chrome : *googlechrome
+ * Opera : *opera
+*/
+define ( 'TEST_BROWSER', "*firefox" );
diff --git a/tests/selenium/installer/MediaWikiInstallationMessage.php b/tests/selenium/installer/MediaWikiInstallationMessage.php
new file mode 100644
index 00000000..a348b542
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiInstallationMessage.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * MediaWikiInstallationConfig
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+// 'MySQL' database type help field hint
+define( 'MYSQL_DATABASE_HOST_HELP', "If your database server is on different server, enter the host name or IP address here. \nIf you are using shared web hosting, your hosting provider should give you the correct host name in their documentation. \nIf you are installing on a Windows server and using MySQL, using \"localhost\" may not work for the server name. If it does not, try \"127.0.0.1\" for the local IP address." );
+define( 'MYSQL_DATABASE_NAME_HELP', "Choose a name that identifies your wiki. It should not contain spaces or hyphens. \nIf you are using shared web hosting, your hosting provider will either give you a specific database name to use or let you create databases via a control panel." );
+define( 'MYSQL_DATABASE_TABLE_PREFIX_HELP', "Choose a name that identifies your wiki. It should not contain spaces or hyphens.");
+define( 'MYSQL_DATBASE_USERNAME_HELP', "Enter the username that will be used to connect to the database during the installation process. This is not the username of the MediaWiki account; this is the username for your database." );
+define( 'MYSQL_DATABASE_PASSWORD_HELP', "Enter the password that will be used to connect to the database during the installation process. This is not the password for the MediaWiki account; this is the password for your database." );
+
+
+// 'SQLite' database type help field hint
+define( 'SQLITE_DATA_DIRECTORY_HELP', "SQLite stores all data in a single file. \nThe directory you provide must be writable by the webserver during installation. \nIt should not be accessible via the web, this is why we're not putting it where your PHP files are. \nThe installer will write a .htaccess file along with it, but if that fails someone can gain access to your raw database. That includes raw user data (e-mail addresses, hashed passwords) as well as deleted revisions and other restricted data on the wiki. \nConsider putting the database somewhere else altogether, for example in /var/lib/mediawiki/yourwiki." );
+define( 'SQLITE_DATABASE_NAME_HELP', "Choose a name that identifies your wiki. Do not use spaces or hyphens. This will be used for the SQLite data file name.");
+
+
+// 'Database settings' page hel0p field hint
+define( 'SEARCH_ENGINE_HELP', "InnoDB is almost always the best option, since it has good concurrency support. \nMyISAM may be faster in single-user or read-only installations. MyISAM databases tend to get corrupted more often than InnoDB databases." );
+define( 'DATABASE_CHARACTER_SET_HELP', "In binary mode, MediaWiki stores UTF-8 text to the database in binary fields. This is more efficient than MySQL's UTF-8 mode, and allows you to use the full range of Unicode characters. \nIn UTF-8 mode, MySQL will know what character set your data is in, and can present and convert it appropriately, but it will not let you store characters above the Basic Multilingual Plane." );
+
+
+// 'Name' page help field hint
+define( 'NAME_OF_WIKI_HELP', "This will appear in the title bar of the browser and in various other places.");
+define( 'PROJECT_NAMESPACE_HELP', "Following Wikipedia's example, many wikis keep their policy pages separate from their content pages, in a \"project namespace\". All page titles in this namespace start with a certain prefix, which you can specify here. Traditionally, this prefix is derived from the name of the wiki, but it cannot contain punctuation characters such as \"#\" or \":\"." );
+define( 'USER_NAME_HELP', "Enter your preferred username here, for example \"Joe Bloggs\". This is the name you will use to log in to the wiki." );
+define( 'EMAIL_ADDRESS_HELP', "Enter an e-mail address here to allow you to receive e-mail from other users on the wiki, reset your password, and be notified of changes to pages on your watchlist." );
+define( 'SUBSCRIBE_MAILING_LIST_HELP', "This is a low-volume mailing list used for release announcements, including important security announcements. You should subscribe to it and update your MediaWiki installation when new versions come out." );
+
+
+
diff --git a/tests/selenium/installer/MediaWikiInstallationVariables.php b/tests/selenium/installer/MediaWikiInstallationVariables.php
new file mode 100644
index 00000000..bb11d022
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiInstallationVariables.php
@@ -0,0 +1,77 @@
+<?php
+
+/**
+ * MediaWikiInstallationConfig
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+// Common variables
+define('PAGE_LOAD_TIME', "80000" );
+
+// Common links
+define( 'LINK_DIV', "//div[@id='bodyContent']/div/div/");
+define( 'LINK_FORM', "//div[@id='bodyContent']/div/div/div[2]/form/" );
+define( 'LINK_RIGHT_FRAMEWORK', "//div[@id='bodyContent']/div/div/div[1]/ul[1]/");
+
+// 'Name' page input values
+define( 'NAME_OF_WIKI', "Site Name" );
+define( 'ADMIN_USER_NAME', "My Name" );
+define( 'ADMIN_PASSWORD', "12345" );
+define ( 'ADMIN_RETYPE_PASSWORD', "12345" );
+define ( 'ADMIN_EMAIL_ADDRESS', "admin@example.com" );
+
+
+// 'Name' page input values for warning messages
+define( 'VALID_WIKI_NAME', "MyWiki" );
+define( 'VALID_YOUR_NAME', "FirstName LastName" );
+define( 'VALID_PASSWORD', "12345" );
+define( 'VALID_PASSWORD_AGAIN', "12345" );
+define( 'INVALID_PASSWORD_AGAIN', "123" );
+define( 'VALID_NAMESPACE', "Mynamespace" );
+define( 'INVALID_NAMESPACE', "##..##" );
+
+
+// 'Database settings' page input values
+define( 'DB_WEB_USER', "different" );
+define('DB_WEB_USER_PASSWORD', "12345" );
+
+
+// 'Connet to database' page input values
+define( 'DATABASE_PREFIX',"databaseprefix" );
+
+
+// 'Connet to database' page input values for warning messages
+define( 'VALID_DB_HOST', "localhost" );
+define( 'INVALID_DB_HOST', "local" );
+define( 'INVALID_DB_NAME', "my-wiki" );
+define( 'VALID_DB_NAME', "my_wiki1");
+define( 'INVALID_DB_PREFIX', "database prefix" );
+define( 'VALID_DB_PREFIX', "database_prefix");
+define( 'INVALID_DB_USER_NAME', "roots" );
+define( 'VALID_DB_USER_NAME', "root");
+define( 'INVALID_DB_PASSWORD', "12345" );
+
+
diff --git a/tests/selenium/installer/MediaWikiInstallerTestSuite.php b/tests/selenium/installer/MediaWikiInstallerTestSuite.php
new file mode 100644
index 00000000..386a50ea
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiInstallerTestSuite.php
@@ -0,0 +1,53 @@
+<?php
+
+/**
+ * MediaWikiInstallerTestSuite
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+require_once 'PHPUnit/Framework.php';
+require_once 'PHPUnit/Framework/TestSuite.php';
+
+require_once ( dirname( __FILE__ ) . '/MediaWikiUserInterfaceTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiButtonsAvailabilityTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiHelpFieldHintTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiRightFrameworkLinksTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiRestartInstallationTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiErrorsConnectToDatabasePageTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiErrorsNamepageTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiMySQLDataBaseTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiMySQLiteDataBaseTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiUpgradeExistingDatabaseTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiDifferntDatabasePrefixTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiDifferentDatabaseAccountTestCase.php' );
+require_once ( dirname( __FILE__ ) . '/MediaWikiOnAlreadyInstalledTestCase.php' );
+
+
+
+
+$suite = new PHPUnit_Framework_TestSuite('ArrayTest');
+$result = new PHPUnit_Framework_TestResult;
+
+$suite->run($result);
diff --git a/tests/selenium/installer/MediaWikiMySQLDataBaseTestCase.php b/tests/selenium/installer/MediaWikiMySQLDataBaseTestCase.php
new file mode 100644
index 00000000..abf9ddf2
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiMySQLDataBaseTestCase.php
@@ -0,0 +1,78 @@
+<?php
+
+/**
+ * MediaWikiOnAlreadyInstalledTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 01 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install Mediawiki using 'MySQL' database type successfully
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiMySQLDataBaseTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Verify MediaWiki installation using 'MySQL' database type
+ public function testMySQLDatabaseSuccess() {
+
+ $databaseName = DB_NAME_PREFIX."_sql_db";
+
+ parent::navigateConnetToDatabasePage();
+
+ // Verify 'MySQL" is selected as the default database type
+ $this->assertEquals( "MySQL settings", $this->getText( "//div[@id='DB_wrapper_mysql']/h3" ));
+
+ // Change 'Database name'
+ $defaultDbName = $this->getText( "mysql_wgDBname" );
+ $this->type( "mysql_wgDBname", " ");
+ $this->type( "mysql_wgDBname", $databaseName );
+ $this->assertNotEquals( $defaultDbName, $databaseName );
+
+ // 'Database settings' page
+ parent::clickContinueButton();
+
+ // 'Name' page
+ parent::clickContinueButton();
+ parent::completeNamePage();
+
+ // 'Options page
+ parent::clickContinueButton();
+
+ // 'Install' page
+ parent::clickContinueButton();
+
+ // 'Complete' page
+ parent::completePageSuccessfull();
+ parent::restartInstallation();
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiMySQLiteDataBaseTestCase.php b/tests/selenium/installer/MediaWikiMySQLiteDataBaseTestCase.php
new file mode 100644
index 00000000..fe704a42
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiMySQLiteDataBaseTestCase.php
@@ -0,0 +1,79 @@
+<?php
+
+/**
+ * MediaWikiMySQLiteataBaseTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 06 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install Mediawiki using 'MySQL' database type successfully
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiMySQLiteDataBaseTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Verify MediaWiki installation using 'MySQL' database type
+ public function testMySQLDatabaseSuccess() {
+
+ $databaseName = DB_NAME_PREFIX."_sqlite_db";
+
+ parent::navigateConnetToDatabasePage();
+ $this->click( "DBType_sqlite" );
+
+ // Select 'SQLite' database type
+ $this->assertEquals( "SQLite settings", $this->getText( "//div[@id='DB_wrapper_sqlite']/h3" ));
+
+ // Change database name
+ $defaultDbName = $this->getText( "sqlite_wgDBname" );
+ $this->type( "sqlite_wgDBname", " ");
+ $this->type( "sqlite_wgDBname", $databaseName );
+ $this->assertNotEquals( $defaultDbName, $databaseName );
+
+ // 'Database settings' page
+ parent::clickContinueButton();
+
+ // 'Name' page
+ parent::clickContinueButton();
+ parent::completeNamePage();
+
+ // 'Options page
+ parent::clickContinueButton();
+
+ // 'Install' page
+ parent::clickContinueButton();
+
+ // 'Complete' page
+ parent::completePageSuccessfull();
+ parent::restartInstallation();
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiOnAlreadyInstalledTestCase.php b/tests/selenium/installer/MediaWikiOnAlreadyInstalledTestCase.php
new file mode 100644
index 00000000..e8b8f9b0
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiOnAlreadyInstalledTestCase.php
@@ -0,0 +1,71 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+
+/*
+ * Test Case ID : 03 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install mediawiki on a already installed Mediawiki.]
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiOnAlreadyInstalledTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Install Mediawiki using 'MySQL' database type.
+ public function testInstallOnAlreadyInstalled() {
+
+ $databaseName = DB_NAME_PREFIX."_already_installed";
+ parent::navigateInstallPage( $databaseName );
+
+ // 'Options' page
+ parent::clickBackButton();
+
+ // Install page
+ parent::clickContinueButton();
+
+ // 'Install' page should display after the 'Option' page
+ $this->assertEquals( "Install", $this->getText( LINK_DIV."h2" ));
+
+ // Verify warning text displayed
+ $this->assertEquals( "Warning: You seem to have already installed MediaWiki and are trying to install it again. Please proceed to the next page.",
+ $this->getText( LINK_FORM."div[1]/div[2]" ));
+
+ // Complete page
+ parent::clickContinueButton();
+ parent::completePageSuccessfull();
+ $this->chooseCancelOnNextConfirmation();
+ parent::restartInstallation();
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiRestartInstallationTestCase.php b/tests/selenium/installer/MediaWikiRestartInstallationTestCase.php
new file mode 100644
index 00000000..b0a38000
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiRestartInstallationTestCase.php
@@ -0,0 +1,115 @@
+<?php
+
+/**
+ * MediaWikiRestartInstallationTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 11, 12 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install mediawiki on a already installed Mediawiki.
+ * Version : MediaWiki 1.18alpha
+*/
+
+class MediaWikiRestartInstallationTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Verify restarting the installation
+ public function testSuccessRestartInstallation() {
+
+ $dbNameBeforeRestart = DB_NAME_PREFIX."_db_before";
+ parent::navigateDatabaseSettingsPage( $dbNameBeforeRestart );
+
+ // Verify 'Restart installation' link available
+ $this->assertTrue($this->isElementPresent( "link=Restart installation" ));
+
+ // Click 'Restart installation'
+ $this->click( "link=Restart installation ");
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Restart Installation' page displayed
+ $this->assertEquals( "Restart installation", $this->getText( LINK_DIV."h2"));
+
+ // Restart warning message displayed
+ $this->assertTrue($this->isTextPresent( "exact:Do you want to clear all saved data that you have entered and restart the installation process?" ));
+
+ // Click on the 'Yes, restart' button
+ $this->click( "submit-restart" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Navigate to the initial installation page(Language).
+ $this->assertEquals( "Language", $this->getText( LINK_DIV."h2" ));
+
+ // 'Welcome to MediaWiki!' page
+ parent::clickContinueButton();
+
+ // 'Connect to database' page
+ parent::clickContinueButton();
+
+ // saved data should be deleted
+ $dbNameAfterRestart = $this->getValue("mysql_wgDBname");
+ $this->assertNotEquals($dbNameBeforeRestart, $dbNameAfterRestart);
+ }
+
+
+ // Verify cancelling restart
+ public function testCancelRestartInstallation() {
+
+ $dbNameBeforeRestart = DB_NAME_PREFIX."_cancel_restart";
+
+ parent::navigateDatabaseSettingsPage( $dbNameBeforeRestart);
+ // Verify 'Restart installation' link available
+ $this->assertTrue($this->isElementPresent( "link=Restart installation" ));
+
+ $this->click( "link=Restart installation" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Restart Installation' page displayed
+ $this->assertEquals( "Restart installation", $this->getText( LINK_DIV."h2" ));
+
+ // Restart warning message displayed
+ $this->assertTrue( $this->isTextPresent( "Do you want to clear all saved data that you have entered and restart the installation process?"));
+
+ // Click on the 'Back' button
+ parent::clickBackButton();
+
+ // Navigates to the previous page
+ $this->assertEquals( "Database settings", $this->getText( LINK_DIV."h2" ));
+
+ // 'Connect to database' page
+ parent::clickBackButton();
+
+ // Saved data remain on the page.
+ $dbNameAfterRestart = $this->getValue( "mysql_wgDBname" );
+ $this->assertEquals( $dbNameBeforeRestart, $dbNameAfterRestart );
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiRightFrameworkLinksTestCase.php b/tests/selenium/installer/MediaWikiRightFrameworkLinksTestCase.php
new file mode 100644
index 00000000..346f24f8
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiRightFrameworkLinksTestCase.php
@@ -0,0 +1,93 @@
+<?php
+
+/**
+ * MediaWikiRightFrameworkLinksTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 14, 15, 16, 17 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : User selects 'Read me' link.
+ * User selects 'Release notes' link.
+ * User selects 'Copying' link.
+ * User selects 'Upgrading' link.
+ * Version : MediaWiki 1.18alpha
+*/
+
+
+class MediaWikiRightFrameworkLinksTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ public function testLinksAvailability() {
+
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // Verify 'Read me' link availability
+ $this->assertTrue($this->isElementPresent( "link=Read me" ));
+
+ // Verify 'Release notes' link availability
+ $this->assertTrue($this->isElementPresent( "link=Release notes" ));
+
+ // Verify 'Copying' link availability
+ $this->assertTrue($this->isElementPresent( "link=Copying" ));
+ }
+
+ public function testPageNavigation() {
+
+ $this->open( "http://".HOST_NAME.":".PORT."/".DIRECTORY_NAME."/config/index.php" );
+
+ // Navigate to the 'Read me' page
+ $this->click( "link=Read me" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ $this->assertEquals( "Read me", $this->getText( LINK_DIV."h2[1]" ));
+ $this->assertTrue($this->isElementPresent( "submit-back" ));
+ parent::clickBackButton();
+
+ // Navigate to the 'Release notes' page
+ $this->click( "link=Release notes" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME);
+ $this->assertEquals( "Release notes", $this->getText( LINK_DIV."h2[1]" ));
+ $this->assertTrue( $this->isElementPresent( "submit-back" ));
+ parent::clickBackButton();
+
+ // Navigate to the 'Copying' page
+ $this->click( "link=Copying" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ $this->assertEquals( "Copying", $this->getText( LINK_DIV."h2[1]" ));
+ $this->assertTrue($this->isElementPresent( "submit-back" ));
+ parent::clickBackButton();
+
+ // Navigate to the 'Upgrading' page
+ $this->click( "link=Upgrading" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ $this->assertEquals( "Upgrading", $this->getText( LINK_DIV."h2[1]" ));
+ }
+}
diff --git a/tests/selenium/installer/MediaWikiUpgradeExistingDatabaseTestCase.php b/tests/selenium/installer/MediaWikiUpgradeExistingDatabaseTestCase.php
new file mode 100644
index 00000000..0ab5e659
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiUpgradeExistingDatabaseTestCase.php
@@ -0,0 +1,117 @@
+<?php
+
+/**
+ * MediaWikiUpgradeExistingDatabaseTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 05 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : Install Mediawiki by updating the existing database.
+ * Version : MediaWiki 1.18alpha
+*/
+
+
+class MediaWikiUpgradeExistingDatabaseTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+ // Install Mediawiki using 'MySQL' database type.
+ public function testUpgradeExistingDatabase() {
+
+ $databaseName = DB_NAME_PREFIX."_upgrade_existing";
+ parent::navigateInstallPage( $databaseName );
+
+ $this->open( "http://localhost:".PORT."/".DIRECTORY_NAME."/config/index.php" );
+ $this->assertEquals( "Install", $this->getText( LINK_DIV."h2" ));
+ $this->assertEquals( "Warning: You seem to have already installed MediaWiki and are trying to install it again. Please proceed to the next page.",
+ $this->getText( LINK_DIV."div[2]/form/div[1]/div[2]" ));
+
+ // 'Optionis' page
+ parent::clickBackButton();
+
+ // 'Name' page
+ parent::clickBackButton();
+
+ // 'Database settings' page
+ parent::clickBackButton();
+
+ // 'Connect to database' page
+ parent::clickBackButton();
+ $this->type( "mysql_wgDBname", $databaseName );
+ parent::clickContinueButton();
+
+ // 'Upgrade existing installation' page displayed next to the 'Connect to database' page.
+ $this->assertEquals( "Upgrade existing installation", $this->getText( LINK_DIV."h2" ));
+
+ // Warning message displayed.
+ $this->assertEquals( "There are MediaWiki tables in this database. To upgrade them to MediaWiki 1.18alpha, click Continue.",
+ $this->getText( LINK_DIV."div[2]/form/div[1]/div[2]" ));
+
+ parent::clickContinueButton();
+ $this->assertEquals( "Upgrade existing installation",
+ $this->getText( LINK_DIV."h2" ));
+
+ // 'Upgrade complete.' text display
+ $this->assertEquals("Upgrade complete.",
+ $this->getText("//div[@id='bodyContent']/div/div[1]/div[4]/form/div[1]/div[2]/p[1]"));
+
+ $this->assertEquals("You can now Folder/index.php start using your wiki.",
+ $this->getText("//div[@id='bodyContent']/div/div[1]/div[4]/form/div[1]/div[2]/p[2]" ));
+
+ $this->assertEquals( "Folder/index.php start using your wiki",
+ $this->getText( "link=Folder/index.php start using your wiki" ));
+
+ $this->assertTrue($this->isElementPresent( "submit-regenerate" ));
+ $this->click( "submit-regenerate" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+ $this->assertEquals( "Database settings",
+ $this->getText( LINK_DIV."h2" ));
+
+ // 'Database settings' page
+ parent::clickContinueButton();
+
+ // Name page
+ parent::completeNamePage();
+
+ // Options page
+ parent::clickContinueButton();
+
+ // Install page
+ $this->assertEquals( "Warning: You seem to have already installed MediaWiki and are trying to install it again. Please proceed to the next page.",
+ $this->getText( LINK_FORM."div[1]/div[2]" ));
+ parent::clickContinueButton();
+
+ // complete
+ parent::completePageSuccessfull();
+ $this->chooseCancelOnNextConfirmation();
+ parent::restartInstallation();
+ }
+} \ No newline at end of file
diff --git a/tests/selenium/installer/MediaWikiUserInterfaceTestCase.php b/tests/selenium/installer/MediaWikiUserInterfaceTestCase.php
new file mode 100644
index 00000000..7be39c04
--- /dev/null
+++ b/tests/selenium/installer/MediaWikiUserInterfaceTestCase.php
@@ -0,0 +1,531 @@
+<?php
+
+/**
+ * MediaWikiUserInterfaceTestCase
+ *
+ * @file
+ * @ingroup Maintenance
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Maintenance
+ *
+ */
+
+require_once (dirname(__FILE__).'/'.'MediaWikiInstallationCommonFunction.php');
+
+/*
+ * Test Case ID : 18 - 27 (http://www.mediawiki.org/wiki/New_installer/Test_plan)
+ * Test Case Name : UI of MediaWiki initial/ Language/ Welcome to MediaWiki!/ Connect to database/
+ * Database settings/ Name/ Options/ Install/ Complete/ Restart Inslation pages
+ * Version : MediaWiki 1.18alpha
+*/
+
+
+class MediaWikiUserInterfaceTestCase extends MediaWikiInstallationCommonFunction {
+
+ function setUp() {
+ parent::setUp();
+ }
+
+
+ public function testInitialPageUI() {
+
+ parent::navigateInitialpage();
+
+ // MediaWiki logo available
+ $this->assertTrue( $this->isElementPresent( "//img[@alt='The MediaWiki logo']" ));
+
+ // 'MediaWiki 1.18alpha' text available
+ $this->assertEquals( "MediaWiki 1.18alpha", $this->getText( "//h1" ));
+
+ // 'LocalSettings.php not found.' text available
+ $this->assertEquals( "LocalSettings.php not found.", $this->getText( "//p[1]" ));
+
+ // 'Please set up the wiki first' text available
+ $this->assertEquals( "Please set up the wiki first.", $this->getText( "//p[2]" ));
+
+ // 'set up the wiki' link available
+ $this->assertTrue($this->isElementPresent( "link=set up the wiki" ));
+ }
+
+
+ public function testlanguagePageUI() {
+
+ parent::navigateLanguagePage();
+
+ // Verify 'Language' heading
+ $this->assertEquals( "Language", $this->getText( LINK_DIV."h2" ));
+
+ // 'Your language' label available
+ $this->assertEquals( "Your language:",
+ $this->getText( LINK_FORM."div[1]/div[1]/label" ));
+
+ // 'Your language' dropdown available
+ $this->assertTrue( $this->isElementPresent( "UserLang" ));
+
+ // 'Wiki language' label available
+ $this->assertEquals( "Wiki language:",
+ $this->getText( LINK_FORM."div[2]/div[1]/label" ));
+
+ // 'Wiki language' dropdown available
+ $this->assertTrue($this->isElementPresent( "ContLang" ));
+ }
+
+
+ public function testWelcometoMediaWikiUI() {
+
+ parent::navigateWelcometoMediaWikiPage();
+
+ // Verify 'Welcome to MediaWiki!' heading
+ $this->assertEquals( "Welcome to MediaWiki!",
+ $this->getText( LINK_DIV."h2" ));
+
+ // Verify environment ok text displayed.
+ $this->assertEquals( "The environment has been checked.You can install MediaWiki.",
+ $this->getText( LINK_DIV."div[6]/span" ));
+ }
+
+
+ public function testConnectToDatabaseUI() {
+
+ parent::navigateConnetToDatabasePage();
+
+ // 'MYSQL radio button available
+ $this->assertEquals( "MySQL",
+ $this->getText( LINK_FORM."div[2]/div[2]/ul/li[1]/label" ));
+ $this->assertTrue( $this->isElementPresent( LINK_FORM."div[2]/div[2]/ul/li[1]" ));
+
+ // 'SQLite' radio button available
+ $this->assertTrue( $this->isElementPresent( LINK_FORM."div[2]/div[2]/ul/li[2]" ));
+ $this->assertEquals( "SQLite", $this->getText( LINK_FORM."div[2]/div[2]/ul/li[2]/label "));
+
+ // 'Database host' label available
+ $this->assertEquals( "Database host:", $this->getText( "//div[@id='DB_wrapper_mysql']/div/div[1]/label" ));
+
+ // 'Database host' text box default to 'localhost'
+ $this->assertEquals( "localhost", $this->getValue( "mysql_wgDBserver" ));
+
+ // 'Identify this wiki' section available
+ $this->assertTrue( $this->isElementPresent( "//div[@id='DB_wrapper_mysql']/fieldset[1]/legend" ));
+
+ // 'Identify this wiki' label available
+ $this->assertEquals( "Identify this wiki", $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[1]/legend" ));
+
+ // 'Database name' lable available
+ $this->assertEquals( "Database name:",
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[1]/div[1]/label" ));
+
+ // Verify 'Database name:' text box is default to 'my_wiki'
+ $this->assertEquals( "my_wiki", $this->getValue( "mysql_wgDBname" ));
+
+ // Verify 'Database table prefix:' label available
+ $this->assertEquals( "Database table prefix:",
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[1]/div[2]/div[1]/label" ));
+
+ // 'User account for installation' section available
+ $this->assertTrue( $this->isElementPresent( "//div[@id='DB_wrapper_mysql']/fieldset[2]/legend" ));
+
+ // 'User account for installation' label available
+ $this->assertEquals( "User account for installation", $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/legend" ));
+
+ // 'Database username' label available
+ $this->assertEquals( "Database username:",
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[1]/div[1]/label" ));
+
+ // 'Database username' text box defaults to 'root'
+ $this->assertEquals("root", $this->getValue( "mysql__InstallUser" ));
+
+ // 'Database password' label available
+ $this->assertEquals( "Database password:",
+ $this->getText( "//div[@id='DB_wrapper_mysql']/fieldset[2]/div[2]/div[1]/label" ));
+ }
+
+
+
+ public function testDatabaseSettingsUI() {
+
+ $databaseName = DB_NAME_PREFIX."_db_settings_UI";
+ parent::navigateDatabaseSettingsPage( $databaseName );
+
+ // 'Database settings' text available.
+ $this->assertEquals( "Database settings", $this->getText( LINK_DIV."h2" ));
+
+ // 'Database account for web access' section available
+ $this->assertTrue( $this->isElementPresent( LINK_FORM."fieldset" ));
+
+ // 'Database account for web access' label available
+ $this->assertEquals( "Database account for web access", $this->getText( LINK_FORM."fieldset/legend" ));
+
+ // 'Use the same account as for installation' check box available
+ $this->assertEquals( "Use the same account as for installation", $this->getText( LINK_FORM."fieldset/div[1]/label" ));
+
+ // 'Use the same account as for installation' check box is selected by default
+ $this->assertEquals( "on", $this->getValue( "mysql__SameAccount" ));
+
+ // 'Use the same account as for installation' check box deselected
+ $this->click( "mysql__SameAccount" );
+
+ // verify 'Use the same account as for installation' check box is not selected
+ $this->assertEquals( "off", $this->getValue( "mysql__SameAccount" ));
+
+ // 'Database username' label available
+ $this->assertEquals( "Database username:", $this->getText( "//div[@id='dbOtherAccount']/div[1]/div[1]/label" ));
+
+ // 'Database username' text box is default to the 'wikiuser'
+ $this->assertEquals( "wikiuser", $this->getValue( "mysql_wgDBuser" ));
+
+ // 'Database password' label available
+ $this->assertEquals( "Database password:", $this->getText( "//div[@id='dbOtherAccount']/div[2]/div[1]/label" ));
+
+ // 'Create the account if it does not already exist' label available
+ $this->assertEquals( "Create the account if it does not already exist", $this->getText( "//div[@id='dbOtherAccount']/div[4]/label" ));
+
+ // 'Create the account if it does not already exist' check box is not selected by default
+ $this->assertEquals( "off" , $this->getValue( "mysql__CreateDBAccount" ));
+
+ // 'Create the account if it does not already exist' check box selected
+ $this->click( "mysql__CreateDBAccount" );
+
+ // Verify 'Create the account if it does not already exist' check box is selected
+ $this->assertEquals( "on" , $this->getValue( "mysql__CreateDBAccount" ));
+ $this->click( "mysql__SameAccount" );
+ $this->assertEquals( "on", $this->getValue( "mysql__SameAccount" ));
+
+ // 'Storage engine' label available
+ $this->assertEquals( "Storage engine:",
+ $this->getText( LINK_FORM."div[1]/div[1]/label"));
+
+ // 'InnoDB' label available
+ $this->assertEquals( "InnoDB",
+ $this->getText( LINK_FORM."div[1]/div[2]/ul/li[1]/label" ));
+
+ // 'InnoDB' radio button available
+ $this->assertTrue( $this->isElementPresent( "mysql__MysqlEngine_InnoDB" ));
+
+ // 'MyISAM' label available
+ $this->assertEquals( "MyISAM", $this->getText( LINK_FORM."div[1]/div[2]/ul/li[2]/label" ));
+
+ // 'MyISAM' radio button available
+ $this->assertTrue($this->isElementPresent( "mysql__MysqlEngine_MyISAM" ));
+
+ // 'Database character set' label available
+ $this->assertEquals( "Database character set:",
+ $this->getText( LINK_FORM."div[3]/div[1]/label" ));
+
+ // 'Binary' radio button available
+ $this->assertTrue( $this->isElementPresent( "mysql__MysqlCharset_binary" ));
+
+ // 'Binary' radio button available
+ $this->assertEquals( "Binary", $this->getText( LINK_FORM."div[3]/div[2]/ul/li[1]/label" ));
+
+ // 'UTF-8' radio button available
+ $this->assertTrue( $this->isElementPresent( "mysql__MysqlCharset_utf8" ));
+
+ // 'UTF-8' label available
+ $this->assertEquals( "UTF-8", $this->getText( LINK_FORM."div[3]/div[2]/ul/li[2]/label" ));
+
+ // 'Binary' radio button is selected
+ $this->assertEquals( "on", $this->getValue( "mysql__MysqlCharset_binary" ));
+ }
+
+
+
+ public function testNamePageUI() {
+
+ $databaseName = DB_NAME_PREFIX."_name_UI";
+ parent::navigateNamePage($databaseName);
+
+ // 'Name of wiki' text box available
+ $this->assertEquals( "Name of wiki:",
+ $this->getText( LINK_FORM."div[1]/div[1]/label" ));
+
+ $this->assertTrue( $this->isElementPresent( "config_wgSitename" ));
+
+ // 'Project namespace' label available
+ $this->assertEquals( "Project namespace:",
+ $this->getText( LINK_FORM."div[2]/div[1]/label" ));
+
+ // 'Same as the wiki name' radio button available
+ $this->assertTrue( $this->isElementPresent( "config__NamespaceType_site-name" ));
+
+ // 'Project' radio button available
+ $this->assertTrue( $this->isElementPresent( "config__NamespaceType_generic" ));
+
+ // 'Project' radio button available
+ $this->assertTrue( $this->isElementPresent( "config__NamespaceType_other" ));
+
+ // 'Same as the wiki name' label available
+ $this->assertEquals( "Same as the wiki name:",
+ $this->getText( LINK_FORM."div[2]/div[2]/ul/li[1]/label" ));
+
+ // 'Project' label available
+ $this->assertEquals("Project",
+ $this->getText( LINK_FORM."div[2]/div[2]/ul/li[2]/label" ));
+
+ // 'Project' label available
+ $this->assertEquals( "Other (specify)",
+ $this->getText( LINK_FORM."div[2]/div[2]/ul/li[3]/label" ));
+
+ // 'Same as the wiki name' radio button selected by default
+ $this->assertEquals( "on", $this->getValue( "config__NamespaceType_site-name" ));
+
+ // 'Administrator account' section available
+ $this->assertTrue( $this->isElementPresent( LINK_FORM."fieldset" ));
+
+ // 'Administrator account' label available
+ $this->assertEquals( "Administrator account",
+ $this->getText( LINK_FORM."fieldset/legend" ));
+
+ // 'Your Name' label available
+ $this->assertEquals( "Your name:",
+ $this->getText( LINK_FORM."fieldset/div[1]/div[1]/label" ));
+
+ // 'Your Name' text box available
+ $this->assertTrue( $this->isElementPresent( "config__AdminName" ));
+
+ // 'Password' label available
+ $this->assertEquals( "Password:",
+ $this->getText( LINK_FORM."fieldset/div[2]/div[1]/label" ));
+
+ // 'Password' text box available
+ $this->assertTrue( $this->isElementPresent( "config__AdminPassword" ));
+
+ // 'Password again' label available
+ $this->assertEquals( "Password again:",
+ $this->getText( LINK_FORM."fieldset/div[3]/div[1]/label" ));
+
+ // 'Password again' text box available
+ $this->assertTrue( $this->isElementPresent( "config__AdminPassword2" ));
+
+ // 'Email address' label avaialble
+ $this->assertEquals( "E-mail address:",
+ $this->getText( LINK_FORM."fieldset/div[4]/div[1]/label" ));
+
+ // 'Email address' text box available
+ $this->assertTrue( $this->isElementPresent( "config__AdminEmail" ));
+
+ // Message displayed
+ $this->assertEquals( "You are almost done! You can now skip the remaining configuration and install the wiki right now.",
+ $this->getText( LINK_FORM."/div[4]/div[2]/p" ));
+
+ // 'Ask me more questions.' radio button available
+ $this->assertTrue( $this->isElementPresent( "config__SkipOptional_continue" ));
+
+ // 'Ask me more questions.' label available
+ $this->assertEquals( "Ask me more questions.",
+ $this->getText( LINK_FORM."div[5]/div[2]/ul/li[1]/label" ));
+
+ // 'I'm bored already, just install the wiki' radio button is avaiable
+ $this->assertTrue( $this->isElementPresent( "config__SkipOptional_skip" ));
+
+ // 'I'm bored already, just install the wiki' label available
+ $this->assertEquals( "I'm bored already, just install the wiki.",
+ $this->getText( LINK_FORM."div[5]/div[2]/ul/li[2]/label" ));
+
+ // 'Ask me more questions.' radio button is default selected
+ $this->assertEquals( "on", $this->getValue( "config__SkipOptional_continue" ));
+ }
+
+
+
+ public function testOptionPageUI() {
+
+ $databaseName = DB_NAME_PREFIX."_options_UI";
+ parent::navigateOptionsPage($databaseName);
+
+ // 'Options' label available
+ $this->assertEquals( "Options", $this->getText( LINK_DIV."h2"));
+
+ // 'Return e-mail address' label available
+ $this->assertEquals( "Return e-mail address:", $this->getText( "//div[@id='emailwrapper']/div[1]/div[1]/label" ));
+
+ // 'Return e-mail address' text box available
+ $this->assertTrue( $this->isElementPresent( "config_wgPasswordSender" ));
+
+ // Text 'apache@localhost' is default value of the 'Return e-mail address' text box
+ $this->assertEquals( "apache@localhost", $this->getValue( "config_wgPasswordSender" ));
+
+ // 'Logo URL' label available
+ $this->assertEquals( "Logo URL:", $this->getText( LINK_FORM."fieldset[2]/div[3]/div[1]/label" ));
+
+ // 'Logo URL' text box available
+ $this->assertTrue( $this->isElementPresent( "config_wgLogo" ));
+
+ // Correct path available in the 'Logo URL' text box
+ $this->assertEquals( "/wiki/skins/common/images/wiki.png", $this->getValue( "config_wgLogo" ));
+
+ // 'Enable file uploads' radio button available
+ $this->assertTrue( $this->isElementPresent( "config_wgEnableUploads" ));
+
+ // 'Enable file uploads' label available
+ $this->assertEquals( "Enable file uploads",
+ $this->getText( LINK_FORM."fieldset[2]/div[1]/label" ));
+
+ // 'Enable file uploads' check box is not selected
+ $this->assertEquals( "off", $this->getValue( "config_wgEnableUploads" ));
+
+ $this->click( "config_wgEnableUploads" );
+
+ // 'Directory for deleted files' label available
+ $this->assertEquals( "Directory for deleted files:",
+ $this->getText( "//div[@id='uploadwrapper']/div/div[1]/label" ));
+
+ // 'Directory for deleted files' text box available
+ $this->assertTrue( $this->isElementPresent( "config_wgDeletedDirectory" ));
+
+ // Correct path available in the 'Directory for deleted files' text box
+ $this->assertEquals( "C:\\wamp\\www\\".DIRECTORY_NAME."/images/deleted",
+ $this->getValue( "config_wgDeletedDirectory" ));
+ }
+
+
+
+ public function testInstallPageUI() {
+
+ $databaseName = DB_NAME_PREFIX."_install_UI";
+ parent::navigateInstallPage( $databaseName );
+
+ // Verify installation done messages display
+ $this->assertEquals( "Setting up database... done",
+ $this->getText( LINK_FORM."ul/li[1]" ));
+ $this->assertEquals( "Creating tables... done",
+ $this->getText( LINK_FORM."ul/li[2]" ));
+ $this->assertEquals( "Creating database user... done",
+ $this->getText( LINK_FORM."ul/li[3]" ));
+ $this->assertEquals( "Populating default interwiki table... done",
+ $this->getText( LINK_FORM."ul/li[4]" ));
+ $this->assertEquals( "Generating secret key... done",
+ $this->getText( LINK_FORM."ul/li[5]" ));
+ $this->assertEquals( "Generating default upgrade key... done",
+ $this->getText( LINK_FORM."ul/li[6]" ));
+ $this->assertEquals( "Creating administrator user account... done",
+ $this->getText( LINK_FORM."ul/li[7]" ));
+ $this->assertEquals( "Creating main page with default content... done",
+ $this->getText( LINK_FORM."ul/li[8]" ));
+ }
+
+
+
+ public function testCompletePageUI() {
+
+ $databaseName = DB_NAME_PREFIX."_complete_UI";
+ parent::navigateCompletePage( $databaseName );
+
+ // 'Congratulations!' text display
+ $this->assertEquals("Congratulations!",
+ $this->getText( LINK_FORM."div[1]/div[2]/p[1]/b"));
+ // 'LocalSettings.php' generated message display
+ $this->assertEquals( "The installer has generated a LocalSettings.php file. It contains all your configuration.",
+ $this->getText( LINK_FORM."div[1]/div[2]/p[2]" ));
+
+ // 'Download LocalSettings.php'' link available
+ $this->assertTrue( $this->isElementPresent( "link=Download LocalSettings.php" ));
+
+ // 'enter your wiki' link available
+ $this->assertTrue($this->isElementPresent("link=Folder/index.php enter your wiki"));
+ }
+
+
+
+ public function testRestartInstallation() {
+
+ parent::navigateConnetToDatabasePage();
+ $this->click( "link=Restart installation" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // Restart installation' label should be available.
+ $this->assertEquals( "Restart installation", $this->getText( LINK_DIV."h2" ));
+
+ //'Do you want to clear all saved data that you have entered and restart the installation process?' label available
+ $this->assertEquals( "Do you want to clear all saved data that you have entered and restart the installation process?",
+ $this->getText( "//*[@id='bodyContent']/div/div/div[2]/form/div[1]/div[2]" ));
+ // 'Back' button available
+ $this->assertTrue($this->isElementPresent( "submit-back" ));
+
+ // 'Restart' button available
+ $this->assertTrue($this->isElementPresent( "submit-restart" ));
+ }
+
+
+
+ public function testMediaWikiLogoAvailability() {
+
+ $databaseName = DB_NAME_PREFIX."_mediawiki_logo";
+ parent::navigateInitialpage();
+ parent::mediaWikiLogoPresentInitialScreen();
+ $this->click( "link=set up the wiki" );
+ $this->waitForPageToLoad( PAGE_LOAD_TIME );
+
+ // 'Language' page
+ parent::mediaWikiLogoPresent();
+ parent::clickContinueButton();
+
+ // 'Welcome to MediaWiki' page
+ parent::mediaWikiLogoPresent();
+ parent::clickContinueButton();
+
+ // 'Connet to database' page
+ parent::mediaWikiLogoPresent();
+ $this->type("mysql_wgDBname", $databaseName );
+ parent::clickContinueButton();
+
+ // 'Database setting' page
+ parent::mediaWikiLogoPresent();
+ parent::clickContinueButton();
+
+ // 'Name' page
+ parent::mediaWikiLogoPresent();
+ parent::completeNamePage();
+ parent::clickContinueButton();
+
+ // 'Options' page
+ parent::mediaWikiLogoPresent();
+ parent::clickContinueButton();
+
+ // 'Install' page
+ parent::mediaWikiLogoPresent();
+ }
+
+
+ public function testRightFramework() {
+
+ parent::navigateLanguagePage();
+ // Verfy right framework texts display
+ $this->assertEquals( "Language",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[1]" ));
+ $this->assertEquals( "Existing wiki",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[2]" ));
+ $this->assertEquals( "Welcome to MediaWiki!",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[3]" ));
+ $this->assertEquals( "Connect to database",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[4]" ));
+ $this->assertEquals( "Upgrade existing installation",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[5]" ));
+ $this->assertEquals( "Database settings",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[6]" ));
+ $this->assertEquals( "Name",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[7]" ));
+ $this->assertEquals( "Options",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[8]" ));
+ $this->assertEquals( "Install",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[9]" ));
+ $this->assertEquals( "Complete!",
+ $this->getText( LINK_RIGHT_FRAMEWORK."li[10]/span" ));
+ }
+}
diff --git a/tests/selenium/installer/README.txt b/tests/selenium/installer/README.txt
new file mode 100644
index 00000000..83d1a346
--- /dev/null
+++ b/tests/selenium/installer/README.txt
@@ -0,0 +1,32 @@
+== Details==
+
+Automated Selenium test scripts written for MediaWiki Installer is available at svn.wikimedia.org/svnroot/mediawiki/trunk/phase3/tests/selenium/installer.
+Detailed test cases available at http://www.mediawiki.org/wiki/New_installer/Test_plan.
+
+Version : MediaWiki 1.18alpha
+Date : 27/12/2010
+
+== Running tests ==
+
+Test cases can be run independently or can run all the test cases using MediaWikiInstallerTestSuite.php within PHPUnit/Selenium.
+
+
+== Dependencies ==
+
+MediaWikiInstallationConfig.php
+
+Value of the 'DB_NAME_PREFIX' should be replace with the database name prefix. Several DB instances will get created to cover different installation scenarios starting with the above prefix.
+You need to change the value of the 'DB_NAME_PREFIX' in MediaWikiInstallationConfig everytime you planned to
+run the tests.
+'DIRECTORY_NAME', 'PORT' and the 'HOST_NAME' should be replaced with your local values.
+You may specify the test browser you wish to run the test using 'TEST_BROWSER'. Default browser is Firefox.
+
+Note : MediaWikiInstallerTestSuite.php has no dependency on 'Selenium' test framework.
+
+
+== Known problems ==
+
+If you run the MediaWikiInstallerTestSuite.php twice without changing the name of the database, the second run should be falied.
+(Please read the more information on how to change the database name which is avaialable under 'Dependencies' section)
+
+
diff --git a/maintenance/tests/selenium/selenium_settings.ini.sample b/tests/selenium/selenium_settings.ini.sample
index bacc0a90..b1d88193 100644
--- a/maintenance/tests/selenium/selenium_settings.ini.sample
+++ b/tests/selenium/selenium_settings.ini.sample
@@ -27,6 +27,6 @@ seleniumserverexecpath = "/opt/local/selenium-remote-control-1.0.3/selenium-serv
[SeleniumTests]
-testSuite[SimpleSeleniumTestSuite] = "maintenance/tests/selenium/suites/SimpleSeleniumTestSuite.php"
+testSuite[SimpleSeleniumTestSuite] = "tests/selenium/suites/SimpleSeleniumTestSuite.php"
testSuite[WikiEditorTestSuite] = "extensions/WikiEditor/selenium/WikiEditorTestSuite.php"
diff --git a/maintenance/tests/selenium/selenium_settings_grid.ini.sample b/tests/selenium/selenium_settings_grid.ini.sample
index eca60b0a..3bbd534a 100644
--- a/maintenance/tests/selenium/selenium_settings_grid.ini.sample
+++ b/tests/selenium/selenium_settings_grid.ini.sample
@@ -8,7 +8,9 @@ userPassword = "wikipass"
testBrowser = "Safari on OS X Snow Leopard"
jUnitLogFile =
runAgainstGrid = true
+startserver = false
+stopserver = false
-[testSuite]
+[SeleniumTests]
-SimpleSeleniumTestSuite = "maintenance/tests/selenium/suites/SimpleSeleniumTestSuite.php" \ No newline at end of file
+testSuite[SimpleSeleniumTestSuite] = "tests/selenium/suites/SimpleSeleniumTestSuite.php"
diff --git a/maintenance/tests/selenium/suites/AddContentToNewPageTestCase.php b/tests/selenium/suites/AddContentToNewPageTestCase.php
index dd4bc005..72e75e11 100644
--- a/maintenance/tests/selenium/suites/AddContentToNewPageTestCase.php
+++ b/tests/selenium/suites/AddContentToNewPageTestCase.php
@@ -4,9 +4,9 @@
* Selenium server manager
*
* @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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
@@ -23,7 +23,7 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @addtogroup Maintenance
+ * @addtogroup Testing
*
*/
@@ -40,7 +40,7 @@ class AddContentToNewPageTestCase extends SeleniumTestCase {
$this->clearWikiEditor();
$this->click( "//*[@id='mw-editbutton-bold']" );
$this->clickShowPreviewBtn();
- $this->waitForPageToLoad( "600000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify bold text displayed on mediawiki preview
$this->assertTrue($this->isElementPresent( "//div[@id='wikiPreview']/p/b" ));
@@ -56,7 +56,7 @@ class AddContentToNewPageTestCase extends SeleniumTestCase {
$this->clearWikiEditor();
$this->click( "//*[@id='mw-editbutton-italic']" );
$this->clickShowPreviewBtn();
- $this->waitForPageToLoad( "600000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify italic text displayed on mediawiki preview
$this->assertTrue($this->isElementPresent("//div[@id='wikiPreview']/p/i"));
@@ -71,15 +71,15 @@ class AddContentToNewPageTestCase extends SeleniumTestCase {
$this->clearWikiEditor();
$this->click( "//*[@id='mw-editbutton-link']" );
$this->clickShowPreviewBtn();
- $this->waitForPageToLoad( "600000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify internal link displayed on mediawiki preview
$source = $this->getText( "//*[@id='wikiPreview']/p/a" );
$correct = strstr( $source, "Link title" );
$this->assertEquals( $correct, true );
- $this->click( "link=Link title" );
- $this->waitForPageToLoad( "600000" );
+ $this->click( SeleniumTestConstants::LINK_START."Link title" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify internal link open as a new page - editing mode
$source = $this->getText( "firstHeading" );
@@ -94,17 +94,17 @@ class AddContentToNewPageTestCase extends SeleniumTestCase {
$this->loadWikiEditor();
$this->clearWikiEditor();
$this->click( "//*[@id='mw-editbutton-extlink']" );
- $this->type( "wpTextbox1", "[http://www.google.com Google]" );
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, "[http://www.google.com Google]" );
$this->clickShowPreviewBtn();
- $this->waitForPageToLoad( "600000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify external links displayed on mediawiki preview
$source = $this->getText( "//*[@id='wikiPreview']/p/a" );
$correct = strstr( $source, "Google" );
$this->assertEquals( $correct, true );
- $this->click( "link=Google" );
- $this->waitForPageToLoad( "600000" );
+ $this->click( SeleniumTestConstants::LINK_START."Google" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify external link opens
$source = $this->getTitle();
@@ -114,15 +114,15 @@ class AddContentToNewPageTestCase extends SeleniumTestCase {
// Add level 2 headline and verify output in the preview
public function testAddLevel2HeadLine() {
- $blnElementPresent = False;
- $blnTextPresent = False;
+ $blnElementPresent = false;
+ $blnTextPresent = false;
$this->getExistingPage();
$this->clickEditLink();
$this->loadWikiEditor();
$this->clearWikiEditor();
$this->click( "mw-editbutton-headline" );
$this->clickShowPreviewBtn();
- $this->waitForPageToLoad( "600000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->assertTrue($this->isElementPresent( "//div[@id='wikiPreview']/h2" ));
// Verify level 2 headline displayed on mediawiki preview
@@ -139,7 +139,7 @@ class AddContentToNewPageTestCase extends SeleniumTestCase {
$this->clearWikiEditor();
$this->click( "//*[@id='mw-editbutton-nowiki']" );
$this->clickShowPreviewBtn();
- $this->waitForPageToLoad( "600000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify ignore wiki format text displayed on mediawiki preview
$source = $this->getText( "//div[@id='wikiPreview']/p" );
@@ -155,7 +155,7 @@ class AddContentToNewPageTestCase extends SeleniumTestCase {
$this->clearWikiEditor();
$this->click( "mw-editbutton-signature" );
$this->clickShowPreviewBtn();
- $this->waitForPageToLoad( "600000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify signature displayed on mediawiki preview
$source = $this->getText( "//*[@id='wikiPreview']/p/a" );
@@ -173,7 +173,7 @@ class AddContentToNewPageTestCase extends SeleniumTestCase {
$this->click( "mw-editbutton-hr" );
$this->clickShowPreviewBtn();
- $this->waitForPageToLoad( "600000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify horizontal line displayed on mediawiki preview
$this->assertTrue( $this->isElementPresent( "//div[@id='wikiPreview']/hr" ));
diff --git a/maintenance/tests/selenium/suites/AddNewPageTestCase.php b/tests/selenium/suites/AddNewPageTestCase.php
index 423f2a2c..f3302e5e 100644
--- a/maintenance/tests/selenium/suites/AddNewPageTestCase.php
+++ b/tests/selenium/suites/AddNewPageTestCase.php
@@ -4,9 +4,9 @@
* Selenium server manager
*
* @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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
@@ -23,7 +23,7 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @addtogroup Maintenance
+ * @addtogroup Testing
*
*/
@@ -38,7 +38,7 @@ class AddNewPageTestCase extends SeleniumTestCase {
'/index.php?title=Main_Page&action=edit' );
$this->type( "searchInput", $newPage );
$this->click( "searchGoButton" );
- $this->waitForPageToLoad( "600000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify 'Search results' text available
$source = $this->gettext( "firstHeading" );
@@ -50,12 +50,12 @@ class AddNewPageTestCase extends SeleniumTestCase {
$correct = strstr ( $source, "Create the page \"New\" on this wiki!" );
$this->assertEquals( $correct, true );
- $this->click( "link=".$displayName );
- $this->waitForPageToLoad( "600000" );
+ $this->click( SeleniumTestConstants::LINK_START.$displayName );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
- $this->assertTrue($this->isElementPresent( "link=Create" ));
+ $this->assertTrue($this->isElementPresent( SeleniumTestConstants::LINK_START."Create" ));
$this->type( "wpTextbox1", "add new test page" );
- $this->click( "wpSave" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
// Verify new page added
$source = $this->gettext( "firstHeading" );
diff --git a/maintenance/tests/selenium/suites/CreateAccountTestCase.php b/tests/selenium/suites/CreateAccountTestCase.php
index 1cfda2e0..5708bcff 100644
--- a/maintenance/tests/selenium/suites/CreateAccountTestCase.php
+++ b/tests/selenium/suites/CreateAccountTestCase.php
@@ -4,9 +4,9 @@
* Selenium server manager
*
* @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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
@@ -23,7 +23,7 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @addtogroup Maintenance
+ * @addtogroup Testing
*
*/
@@ -37,7 +37,7 @@ Class CreateAccountTestCase extends SeleniumTestCase {
public function testMainPageLink() {
$this->click( "link=Log out" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->open( $this->getUrl().'/index.php?title=Main_Page' );
$this->assertTrue($this->isElementPresent( "link=Log in / create account" ));
@@ -47,13 +47,13 @@ Class CreateAccountTestCase extends SeleniumTestCase {
public function testCreateAccountPageLink() {
$this->click( "link=Log out" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->open( $this->getUrl().'/index.php?title=Main_Page' );
// click Log in / create account link to open Log in / create account' page
$this->click( "link=Log in / create account" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->assertTrue($this->isElementPresent( "link=Create an account" ));
}
@@ -61,27 +61,27 @@ Class CreateAccountTestCase extends SeleniumTestCase {
public function testCreateAccount() {
$this->click( "link=Log out" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->open( $this->getUrl().'/index.php?title=Main_Page' );
$this->click( "link=Log in / create account" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->click( "link=Create an account" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify for blank user name
$this->type( "wpName2", "" );
$this->click( "wpCreateaccount" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->assertEquals( "Login error\n You have not specified a valid user name.",
$this->getText( "//div[@id='bodyContent']/div[4]" ));
// Verify for invalid user name
$this->type( "wpName2", "@" );
$this->click("wpCreateaccount" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->assertEquals( "Login error\n You have not specified a valid user name.",
$this->getText( "//div[@id='bodyContent']/div[4]" ));
@@ -89,14 +89,14 @@ Class CreateAccountTestCase extends SeleniumTestCase {
$this->type( "wpName2", $this->userName);
$this->type( "wpPassword2", "" );
$this->click( "wpCreateaccount" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->assertEquals( "Login error\n Passwords must be at least 1 character.",
$this->getText("//div[@id='bodyContent']/div[4]" ));
$this->type( "wpName2", $this->userName );
$this->type( "wpPassword2", $this->password );
$this->click( "wpCreateaccount" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->assertEquals( "Login error\n The passwords you entered do not match.",
$this->getText( "//div[@id='bodyContent']/div[4]" ));
@@ -104,7 +104,7 @@ Class CreateAccountTestCase extends SeleniumTestCase {
$this->type( "wpPassword2", $this->password );
$this->type( "wpRetype", $this->password );
$this->click( "wpCreateaccount" );
- $this->waitForPageToLoad( "30000 ");
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify successful account creation for valid combination of 'Username', 'Password', 'Retype password'
$this->assertEquals( "Welcome, ".ucfirst( $this->userName )."!",
diff --git a/maintenance/tests/selenium/suites/DeletePageAdminTestCase.php b/tests/selenium/suites/DeletePageAdminTestCase.php
index 40628986..9898188f 100644
--- a/maintenance/tests/selenium/suites/DeletePageAdminTestCase.php
+++ b/tests/selenium/suites/DeletePageAdminTestCase.php
@@ -4,9 +4,9 @@
* Selenium server manager
*
* @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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
@@ -23,7 +23,7 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @addtogroup Maintenance
+ * @addtogroup Testing
*
*/
@@ -41,40 +41,40 @@ class DeletePageAdminTestCase extends SeleniumTestCase {
$this->type( "searchInput", $newPage );
$this->click( "searchGoButton" );
- $this->waitForPageToLoad( "30000" );
- $this->click( "link=".$displayName );
- $this->waitForPageToLoad( "60000" );
- $this->type( "wpTextbox1", $newPage." text" );
- $this->click( "wpSave" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_START.$displayName );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, $newPage." text" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
$this->open( $this->getUrl() .
'/index.php?title=Main_Page&action=edit' );
- $this->click( "link=Log out" );
- $this->waitForPageToLoad( "30000" );
- $this->click( "link=Log in / create account" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."Log out" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_START."Log in / create account" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->type( "wpName1", $this->selenium->getUser() );
$this->type( "wpPassword1", $this->selenium->getPass() );
$this->click( "wpLoginAttempt" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->type( "searchInput", "new" );
$this->click( "searchGoButton");
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify 'Delete' link displayed
- $source = $this->gettext( "link=Delete" );
+ $source = $this->gettext( SeleniumTestConstants::LINK_START."Delete" );
$correct = strstr ( $source, "Delete" );
$this->assertEquals($correct, true );
- $this->click( "link=Delete" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."Delete" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify 'Delete' button available
$this->assertTrue($this->isElementPresent( "wpConfirmB" ));
$this->click( "wpConfirmB" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify 'Action complete' text displayed
$source = $this->gettext( "firstHeading" );
diff --git a/maintenance/tests/selenium/suites/EmailPasswordTestCase.php b/tests/selenium/suites/EmailPasswordTestCase.php
index 8356f43a..88d9cf97 100644
--- a/maintenance/tests/selenium/suites/EmailPasswordTestCase.php
+++ b/tests/selenium/suites/EmailPasswordTestCase.php
@@ -4,9 +4,9 @@
* Selenium server manager
*
* @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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
@@ -23,7 +23,7 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @addtogroup Maintenance
+ * @addtogroup Testing
*
*/
@@ -34,38 +34,38 @@ class EmailPasswordTestCase extends SeleniumTestCase {
public function testEmailPasswordButton() {
- $this->click( "link=Log out" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."Log out" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->open( $this->getUrl().'/index.php?title=Main_Page' );
// click Log in / create account link to open Log in / create account' page
- $this->click( "link=Log in / create account" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."Log in / create account" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->assertTrue($this->isElementPresent( "wpMailmypassword" ));
}
// Verify Email password functionality
public function testEmailPasswordMessages() {
- $this->click( "link=Log out" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."Log out" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->open( $this->getUrl().'/index.php?title=Main_Page' );
// click Log in / create account link to open Log in / create account' page
- $this->click( "link=Log in / create account" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."Log in / create account" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->type( "wpName1", "" );
$this->click( "wpMailmypassword" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->assertEquals( "Login error\n You have not specified a valid user name.",
$this->getText("//div[@id='bodyContent']/div[4]"));
$this->type( "wpName1", $this->userName );
$this->click( "wpMailmypassword" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Can not run on localhost
$this->assertEquals( "A new password has been sent to the e-mail address registered for ".ucfirst($this->userName).". Please log in again after you receive it.",
@@ -73,7 +73,7 @@ class EmailPasswordTestCase extends SeleniumTestCase {
$this->type( "wpName1", $this->userName );
$this->click( "wpMailmypassword" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->assertEquals( "Login error\n A password reminder has already been sent, within the last 24 hours. To prevent abuse, only one password reminder will be sent per 24 hours.",
$this->getText( "//div[@id='bodyContent']/div[4]" ));
}
diff --git a/maintenance/tests/selenium/suites/MediaWikiEditorConfig.php b/tests/selenium/suites/MediaWikiEditorConfig.php
index 2803117d..072c3cb2 100644
--- a/maintenance/tests/selenium/suites/MediaWikiEditorConfig.php
+++ b/tests/selenium/suites/MediaWikiEditorConfig.php
@@ -4,9 +4,9 @@
* Selenium server manager
*
* @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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
@@ -23,7 +23,7 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @addtogroup Maintenance
+ * @addtogroup Testing
*
*/
@@ -32,7 +32,8 @@ class MediaWikiEditorConfig {
public static function getSettings(&$includeFiles, &$globalConfigs) {
$includes = array(
//files that needed to be included would go here
- 'maintenance/tests/selenium/suites/MediaWikiCommonFunction.php'
+ //commenting out because this does not exist
+ //'tests/selenium/suites/MediaWikiCommonFunction.php'
);
$configs = array(
'wgPageLoadTime' => "600000"
diff --git a/tests/selenium/suites/MediaWikiEditorTestSuite.php b/tests/selenium/suites/MediaWikiEditorTestSuite.php
new file mode 100644
index 00000000..c0aee9f5
--- /dev/null
+++ b/tests/selenium/suites/MediaWikiEditorTestSuite.php
@@ -0,0 +1,18 @@
+<?php
+
+class MediaWikiEditorTestSuite extends SeleniumTestSuite {
+ public function setUp() {
+ $this->setLoginBeforeTests( true );
+ parent::setUp();
+ }
+ public function addTests() {
+ $testFiles = array(
+ 'tests/selenium/suites/AddNewPageTestCase.php',
+ 'tests/selenium/suites/AddContentToNewPageTestCase.php',
+ 'tests/selenium/suites/PreviewPageTestCase.php',
+ 'tests/selenium/suites/SavePageTestCase.php',
+ );
+ parent::addTestFiles( $testFiles );
+ }
+}
+
diff --git a/tests/selenium/suites/MediaWikiExtraTestSuite.php b/tests/selenium/suites/MediaWikiExtraTestSuite.php
new file mode 100644
index 00000000..5cd0a349
--- /dev/null
+++ b/tests/selenium/suites/MediaWikiExtraTestSuite.php
@@ -0,0 +1,20 @@
+<?php
+
+class MediaWikiExtraTestSuite extends SeleniumTestSuite {
+ public function setUp() {
+ $this->setLoginBeforeTests( true );
+ parent::setUp();
+ }
+ public function addTests() {
+ $testFiles = array(
+ 'tests/selenium/suites/MyContributionsTestCase.php',
+ 'tests/selenium/suites/MyWatchListTestCase.php',
+ 'tests/selenium/suites/UserPreferencesTestCase.php',
+ 'tests/selenium/suites/MovePageTestCase.php',
+ 'tests/selenium/suites/PageSearchTestCase.php',
+ 'tests/selenium/suites/EmailPasswordTestCase.php',
+ 'tests/selenium/suites/CreateAccountTestCase.php'
+ );
+ parent::addTestFiles( $testFiles );
+ }
+}
diff --git a/maintenance/tests/selenium/suites/MediawikiCoreSmokeTestCase.php b/tests/selenium/suites/MediawikiCoreSmokeTestCase.php
index 7b9525af..7b9525af 100644
--- a/maintenance/tests/selenium/suites/MediawikiCoreSmokeTestCase.php
+++ b/tests/selenium/suites/MediawikiCoreSmokeTestCase.php
diff --git a/maintenance/tests/selenium/suites/MediawikiCoreSmokeTestSuite.php b/tests/selenium/suites/MediawikiCoreSmokeTestSuite.php
index 76287b23..5d5ef518 100644
--- a/maintenance/tests/selenium/suites/MediawikiCoreSmokeTestSuite.php
+++ b/tests/selenium/suites/MediawikiCoreSmokeTestSuite.php
@@ -10,7 +10,7 @@ class MediawikiCoreSmokeTestSuite extends SeleniumTestSuite
}
public function addTests() {
$testFiles = array(
- 'maintenance/tests/selenium/suites/MediawikiCoreSmokeTestCase.php'
+ 'tests/selenium/suites/MediawikiCoreSmokeTestCase.php'
);
parent::addTestFiles( $testFiles );
}
diff --git a/maintenance/tests/selenium/suites/MovePageTestCase.php b/tests/selenium/suites/MovePageTestCase.php
index d4d3b1f2..5263e7bb 100644
--- a/maintenance/tests/selenium/suites/MovePageTestCase.php
+++ b/tests/selenium/suites/MovePageTestCase.php
@@ -4,9 +4,9 @@
* Selenium server manager
*
* @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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
@@ -23,7 +23,7 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @addtogroup Maintenance
+ * @addtogroup Testing
*
*/
@@ -39,18 +39,18 @@ class MovePageTestCase extends SeleniumTestCase {
'/index.php?title=Main_Page&action=edit' );
$this->type( "searchInput", $newPage );
$this->click( "searchGoButton" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->click( "link=".$displayName );
- $this->waitForPageToLoad( "60000" );
- $this->type( "wpTextbox1", $newPage." text" );
- $this->click( "wpSave" );
- $this->waitForPageToLoad( "60000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, $newPage." text" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify link 'Move' available
$this->assertTrue($this->isElementPresent( "link=Move" ));
$this->click( "link=Move" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify correct page name displayed under 'Move Page' field
$this->assertEquals($displayName,
@@ -64,7 +64,7 @@ class MovePageTestCase extends SeleniumTestCase {
$this->type( "wpNewTitle", $displayName );
$this->click( "wpMove" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify warning message for the same source and destination titles
$this->assertEquals( "Source and destination titles are the same; cannot move a page over itself.",
@@ -73,7 +73,7 @@ class MovePageTestCase extends SeleniumTestCase {
// Verify warning message for the blank title
$this->type( "wpNewTitle", "" );
$this->click( "wpMove" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify warning message for the blank title
$this->assertEquals( "The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title. It may contain one or more characters which cannot be used in titles.",
@@ -82,13 +82,13 @@ class MovePageTestCase extends SeleniumTestCase {
// Verify warning messages for the invalid titles
$this->type( "wpNewTitle", "# < > [ ] | { }" );
$this->click( "wpMove" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->assertEquals( "The requested page title was invalid, empty, or an incorrectly linked inter-language or inter-wiki title. It may contain one or more characters which cannot be used in titles.",
$this->getText( "//div[@id='bodyContent']/p[4]/strong" ));
$this->type( "wpNewTitle", $displayName."move" );
$this->click( "wpMove" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify move success message displayed correctly
$this->assertEquals( "\"".$displayName."\" has been moved to \"".$displayName."move"."\"",
@@ -96,14 +96,14 @@ class MovePageTestCase extends SeleniumTestCase {
$this->type( "searchInput", $newPage."move" );
$this->click( "searchGoButton" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify search using new page name
$this->assertEquals( $displayName."move", $this->getText( "firstHeading" ));
$this->type( "searchInput", $newPage );
$this->click( "searchGoButton" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify search using old page name
$redirectPageName = $this->getText( "//*[@id='contentSub']" );
diff --git a/tests/selenium/suites/MyContributionsTestCase.php b/tests/selenium/suites/MyContributionsTestCase.php
new file mode 100644
index 00000000..01d87e4b
--- /dev/null
+++ b/tests/selenium/suites/MyContributionsTestCase.php
@@ -0,0 +1,65 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+require_once dirname( dirname( __FILE__ ) ) . '/SeleniumTestConstants.php';
+
+class MyContributionsTestCase extends SeleniumTestCase {
+
+ // Verify user contributions
+ public function testRecentChangesAvailability() {
+
+ $newPage = $this->createNewTestPage( "MyContributionsTest" );
+
+ // Verify My contributions Link available
+ $this->assertTrue($this->isElementPresent( "link=Contributions" ));
+
+
+ $this->click( "link=Contributions" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify recent page adding available on My Contributions list
+ $this->assertEquals( $newPage, $this->getText( "link=".$newPage ));
+
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, $newPage );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ $this->click( SeleniumTestConstants::LINK_EDIT );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, $newPage . " text changed" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( "link=Contributions" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify recent page changes available on My Contributions
+ $this->assertTrue( $this->isTextPresent( $newPage ) );
+ }
+}
+
diff --git a/tests/selenium/suites/MyWatchListTestCase.php b/tests/selenium/suites/MyWatchListTestCase.php
new file mode 100644
index 00000000..d1ee3e78
--- /dev/null
+++ b/tests/selenium/suites/MyWatchListTestCase.php
@@ -0,0 +1,57 @@
+<?php
+
+/**
+ * Selenium server manager
+ *
+ * @file
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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.,
+ * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * http://www.gnu.org/copyleft/gpl.html
+ *
+ * @addtogroup Testing
+ *
+ */
+
+require_once dirname( dirname( __FILE__ ) ) . '/SeleniumTestConstants.php';
+
+class MyWatchListTestCase extends SeleniumTestCase {
+
+ // Verify user watchlist
+ public function testMyWatchlist() {
+
+ $pageName = $this->createNewTestPage( "MyWatchListTest", true );
+ // Verify link 'My Watchlist' available
+ $this->assertTrue( $this->isElementPresent( SeleniumTestConstants::LINK_START."Watchlist" ) );
+
+ $this->click( SeleniumTestConstants::LINK_START."Watchlist" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+
+ // Verify newly added page to the watchlist is available
+ $this->assertEquals( $pageName, $this->getText( SeleniumTestConstants::LINK_START.$pageName ));
+
+ $this->click( SeleniumTestConstants::LINK_START.$pageName );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_EDIT );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( "wpWatchthis" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->assertFalse( $this->isElementPresent( SeleniumTestConstants::LINK_START.$pageName ) );
+ //todo watch using the dropdown menu
+ }
+}
+
diff --git a/maintenance/tests/selenium/suites/PageDeleteTestSuite.php b/tests/selenium/suites/PageDeleteTestSuite.php
index 2e535c11..256e3542 100644
--- a/maintenance/tests/selenium/suites/PageDeleteTestSuite.php
+++ b/tests/selenium/suites/PageDeleteTestSuite.php
@@ -7,7 +7,7 @@ class PageDeleteTestSuite extends SeleniumTestSuite {
}
public function addTests() {
$testFiles = array(
- 'maintenance/tests/selenium/suites/DeletePageAdminTestCase.php'
+ 'tests/selenium/suites/DeletePageAdminTestCase.php'
);
parent::addTestFiles( $testFiles );
}
diff --git a/maintenance/tests/selenium/suites/PageSearchTestCase.php b/tests/selenium/suites/PageSearchTestCase.php
index e139f7a0..fe71eada 100644
--- a/maintenance/tests/selenium/suites/PageSearchTestCase.php
+++ b/tests/selenium/suites/PageSearchTestCase.php
@@ -4,9 +4,9 @@
* Selenium server manager
*
* @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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
@@ -23,7 +23,7 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @addtogroup Maintenance
+ * @addtogroup Testing
*
*/
@@ -34,9 +34,9 @@ class PageSearchTestCase extends SeleniumTestCase {
$this->open( $this->getUrl() .
'/index.php?title=Main_Page&action=edit' );
- $this->type( "searchInput", "calcey qa" );
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, "calcey qa" );
$this->click( "searchGoButton" );
- $this->waitForPageToLoad( "600000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify no page matched with the entered search text
$source = $this->gettext( "//div[@id='bodyContent']/div[4]/p/b" );
@@ -44,11 +44,11 @@ class PageSearchTestCase extends SeleniumTestCase {
$this->assertEquals( $correct, true );
$this->click( "link=Calcey qa" );
- $this->waitForPageToLoad( "600000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
- $this->type( "wpTextbox1", "Calcey QA team" );
+ $this->type( SeleniumTestConstants::TEXT_EDITOR , "Calcey QA team" );
$this->click( "wpSave" );
- $this->waitForPageToLoad( "600000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
}
@@ -57,9 +57,9 @@ class PageSearchTestCase extends SeleniumTestCase {
$this->open( $this->getUrl() .
'/index.php?title=Main_Page&action=edit' );
- $this->type( "searchInput", "Calcey web" );
- $this->click( "mw-searchButton" );
- $this->waitForPageToLoad( "30000" );
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, "Calcey web" );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify no page is available as the search text
$source = $this->gettext( "//div[@id='bodyContent']/div[4]/p[2]/b" );
@@ -67,16 +67,16 @@ class PageSearchTestCase extends SeleniumTestCase {
$this->assertEquals( $correct, true );
$this->click( "link=Calcey web" );
- $this->waitForPageToLoad( "600000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
- $this->type( "wpTextbox1", "Calcey web team" );
- $this->click( "wpSave" );
- $this->waitForPageToLoad( "600000" );
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, "Calcey web team" );
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify saved page is opened when the exact page name is given
- $this->type( "searchInput", "Calcey web" );
- $this->click( "mw-searchButton" );
- $this->waitForPageToLoad( "30000" );
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, "Calcey web" );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify exact page matched with the entered search text using 'Search' button
$source = $this->getText( "//*[@id='bodyContent']/div[4]/p/b" );
@@ -84,9 +84,9 @@ class PageSearchTestCase extends SeleniumTestCase {
$this->assertEquals( $correct, true );
// Verify resutls available when partial page name is entered as the search text
- $this->type( "searchInput", "Calcey" );
- $this->click( "mw-searchButton" );
- $this->waitForPageToLoad( "30000" );
+ $this->type( SeleniumTestConstants::INPUT_SEARCH_BOX, "Calcey" );
+ $this->click( SeleniumTestConstants::BUTTON_SEARCH );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify text avaialble in the search result under the page titles
if($this->isElementPresent( "Page_title_matches" )) {
diff --git a/maintenance/tests/selenium/suites/PreviewPageTestCase.php b/tests/selenium/suites/PreviewPageTestCase.php
index b704bf39..32206b98 100644
--- a/maintenance/tests/selenium/suites/PreviewPageTestCase.php
+++ b/tests/selenium/suites/PreviewPageTestCase.php
@@ -4,9 +4,9 @@
* Selenium server manager
*
* @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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
@@ -23,7 +23,7 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @addtogroup Maintenance
+ * @addtogroup Testing
*
*/
@@ -36,7 +36,7 @@ class PreviewPageTestCase extends SeleniumTestCase {
$this->open( $this->getUrl() .
'/index.php?title=Main_Page&action=edit' );
$this->getNewPage( $newPage );
- $this->type( "wpTextbox1", $wikiText."" );
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, $wikiText."" );
$this->assertTrue($this->isElementPresent( "//*[@id='wpPreview']" ));
$this->click( "wpPreview" );
diff --git a/maintenance/tests/selenium/suites/SavePageTestCase.php b/tests/selenium/suites/SavePageTestCase.php
index 7f1a6924..310ff20a 100644
--- a/maintenance/tests/selenium/suites/SavePageTestCase.php
+++ b/tests/selenium/suites/SavePageTestCase.php
@@ -4,9 +4,9 @@
* Selenium server manager
*
* @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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
@@ -23,7 +23,7 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @addtogroup Maintenance
+ * @addtogroup Testing
*
*/
@@ -37,11 +37,11 @@ class SavePageTestCase extends SeleniumTestCase {
$this->open( $this->getUrl() .
'/index.php?title=Main_Page&action=edit' );
$this->getNewPage($newPage);
- $this->type("wpTextbox1", $wikiText);
+ $this->type( SeleniumTestConstants::TEXT_EDITOR, $wikiText );
// verify 'Save' button available
- $this->assertTrue($this->isElementPresent( "wpSave" ));
- $this->click( "wpSave" );
+ $this->assertTrue($this->isElementPresent( SeleniumTestConstants::BUTTON_SAVE ));
+ $this->click( SeleniumTestConstants::BUTTON_SAVE );
// Verify saved page available
$source = $this->gettext( "firstHeading" );
diff --git a/tests/selenium/suites/SimpleSeleniumConfig.php b/tests/selenium/suites/SimpleSeleniumConfig.php
new file mode 100644
index 00000000..54def35a
--- /dev/null
+++ b/tests/selenium/suites/SimpleSeleniumConfig.php
@@ -0,0 +1,30 @@
+<?php
+class SimpleSeleniumConfig {
+
+ public static function getSettings(&$includeFiles, &$globalConfigs, &$resourceFiles) {
+ global $IP;
+ $includes = array(
+ //files that needed to be included would go here
+ );
+ $configs = array(
+ 'wgDBprefix' => 'mw_',
+ 'wgDBTableOptions' => 'ENGINE=InnoDB, DEFAULT CHARSET=binary',
+ 'wgDBmysql5' => 'false',
+ 'wgMainCacheType' => 'CACHE_NONE',
+ 'wgParserCacheType' => 'CACHE_NONE',
+ 'wgMemCachedServers'=> array(),
+ 'wgLanguageCode' => 'en',
+ 'wgSitename' => 'test_wiki',
+ 'wgDefaultSkin' => 'chick'
+ );
+ $resources = array(
+ 'db' => "$IP/tests/selenium/data/SimpleSeleniumTestDB.sql",
+ 'images' => "$IP/tests/selenium/data/SimpleSeleniumTestImages.zip"
+ );
+
+ $includeFiles = array_merge( $includeFiles, $includes );
+ $globalConfigs = array_merge( $globalConfigs, $configs);
+ $resourceFiles = array_merge( $resourceFiles, $resources );
+ return true;
+ }
+} \ No newline at end of file
diff --git a/maintenance/tests/selenium/suites/SimpleSeleniumTestCase.php b/tests/selenium/suites/SimpleSeleniumTestCase.php
index 8f01b437..99a75c12 100644
--- a/maintenance/tests/selenium/suites/SimpleSeleniumTestCase.php
+++ b/tests/selenium/suites/SimpleSeleniumTestCase.php
@@ -1,7 +1,7 @@
<?php
/*
* This test case is part of the SimpleSeleniumTestSuite.
- * Configuration for these tests are dosumented as part of SimpleSeleniumTestSuite.php
+ * Configuration for these tests are documented as part of SimpleSeleniumTestSuite.php
*/
class SimpleSeleniumTestCase extends SeleniumTestCase {
public function testBasic() {
@@ -9,7 +9,7 @@ class SimpleSeleniumTestCase extends SeleniumTestCase {
'/index.php?title=Selenium&action=edit' );
$this->type( "wpTextbox1", "This is a basic test" );
$this->click( "wpPreview" );
- $this->waitForPageToLoad( 10000 );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// check result
$source = $this->getText( "//div[@id='wikiPreview']/p" );
@@ -22,9 +22,18 @@ class SimpleSeleniumTestCase extends SeleniumTestCase {
* It depends on $wgDefaultSkin = 'chick'; being set
*/
public function testGlobalVariableForDefaultSkin() {
- $this->open( $this->getUrl() . '/index.php?&action=purge' );
+ $this->open( $this->getUrl() . '/index.php' );
$bodyClass = $this->getAttribute( "//body/@class" );
$this-> assertContains('skin-chick', $bodyClass, 'Chick skin not set');
}
+
+ /*
+ * Just verify that the test db was loaded correctly
+ */
+ public function testDatabaseResourceLoadedCorrectly() {
+ $this->open( $this->getUrl() . '/index.php/TestResources?action=purge' );
+ $testString = $this->gettext( "//body//*[@id='firstHeading']" );
+ $this-> assertEquals('TestResources', $testString, 'Article that should be present in the test db was not found.');
+ }
}
diff --git a/maintenance/tests/selenium/suites/SimpleSeleniumTestSuite.php b/tests/selenium/suites/SimpleSeleniumTestSuite.php
index a04f33ed..3f5e3645 100644
--- a/maintenance/tests/selenium/suites/SimpleSeleniumTestSuite.php
+++ b/tests/selenium/suites/SimpleSeleniumTestSuite.php
@@ -3,7 +3,7 @@
* Sample test suite.
* Two ways to configure MW for these tests
* 1) If you are running multiple test suites, add the following in LocalSettings.php
- * require_once("maintenance/tests/selenium/SimpleSeleniumConfig.php");
+ * require_once("tests/selenium/SimpleSeleniumConfig.php");
* $wgSeleniumTestConfigs['SimpleSeleniumTestSuite'] = 'SimpleSeleniumConfig::getSettings';
* OR
* 2) Add the following to your Localsettings.php
@@ -17,7 +17,7 @@ class SimpleSeleniumTestSuite extends SeleniumTestSuite
}
public function addTests() {
$testFiles = array(
- 'maintenance/tests/selenium/suites/SimpleSeleniumTestCase.php'
+ 'selenium/suites/SimpleSeleniumTestCase.php'
);
parent::addTestFiles( $testFiles );
}
diff --git a/maintenance/tests/selenium/suites/UserPreferencesTestCase.php b/tests/selenium/suites/UserPreferencesTestCase.php
index 12824307..3ceb3a99 100644
--- a/maintenance/tests/selenium/suites/UserPreferencesTestCase.php
+++ b/tests/selenium/suites/UserPreferencesTestCase.php
@@ -4,9 +4,9 @@
* Selenium server manager
*
* @file
- * @ingroup Maintenance
- * Copyright (C) 2010 Dan Nessett <dnessett@yahoo.com>
- * http://citizendium.org/
+ * @ingroup Testing
+ * Copyright (C) 2010 Nadeesha Weerasinghe <nadeesha@calcey.com>
+ * http://www.calcey.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
@@ -23,7 +23,7 @@
* 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
* http://www.gnu.org/copyleft/gpl.html
*
- * @addtogroup Maintenance
+ * @addtogroup Testing
*
*/
@@ -34,8 +34,8 @@ class UserPreferencesTestCase extends SeleniumTestCase {
$this->open( $this->getUrl() .
'/index.php?title=Main_Page&action=edit' );
- $this->click( "link=My preferences" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."My preferences" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify correct username displayed in User Preferences
$this->assertEquals( $this->getText( "//li[@id='pt-userpage']/a" ),
@@ -51,38 +51,38 @@ class UserPreferencesTestCase extends SeleniumTestCase {
$this->open( $this->getUrl() .
'/index.php?title=Main_Page&action=edit' );
- $this->click( "link=My preferences" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."My preferences" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
- $this->click( "link=Change password" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."Change password" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->type( "wpPassword", "12345" );
$this->type( "wpNewPassword", "54321" );
$this->type( "wpRetype", "54321" );
$this->click( "//input[@value='Change password']" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->assertEquals( "Preferences", $this->getText( "firstHeading" ));
- $this->click( "link=Change password" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."Change password" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->type( "wpPassword", "54321" );
$this->type( "wpNewPassword", "12345" );
$this->type( "wpRetype", "12345" );
$this->click( "//input[@value='Change password']" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->assertEquals( "Preferences", $this->getText( "firstHeading" ));
- $this->click( "link=Change password" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."Change password" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->type( "wpPassword", "54321" );
$this->type( "wpNewPassword", "12345" );
$this->type( "wpRetype", "12345" );
$this->click( "//input[@value='Change password']" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
}
// Verify successful preferences save
@@ -90,19 +90,19 @@ class UserPreferencesTestCase extends SeleniumTestCase {
$this->open( $this->getUrl() .
'/index.php?title=Main_Page&action=edit' );
- $this->click( "link=My preferences" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."My preferences" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->type( "mw-input-realname", "Test User" );
$this->click( "prefcontrol" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify "Your preferences have been saved." message
$this->assertEquals( "Your preferences have been saved.",
$this->getText( "//div[@id='bodyContent']/div[4]/strong/p" ));
$this->type( "mw-input-realname", "" );
$this->click( "prefcontrol" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
}
@@ -111,18 +111,18 @@ class UserPreferencesTestCase extends SeleniumTestCase {
$this->open( $this->getUrl() .
'/index.php?title=Main_Page&action=edit' );
- $this->click( "link=My preferences" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."My preferences" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->type( "mw-input-nickname", "TestSignature" );
$this->click( "prefcontrol" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify change user signature
- $this->assertEquals( "TestSignature", $this->getText( "link=TestSignature" ));
+ $this->assertEquals( "TestSignature", $this->getText( SeleniumTestConstants::LINK_START."TestSignature" ));
$this->type( "mw-input-nickname", "Test" );
$this->click( "prefcontrol" );
- $this->waitForPageToLoad("30000");
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
}
// Verify change date format
@@ -131,15 +131,15 @@ class UserPreferencesTestCase extends SeleniumTestCase {
$this->open( $this->getUrl() .
'/index.php?title=Main_Page&action=edit' );
- $this->click( "link=My preferences" );
- $this->waitForPageToLoad( "30000" );
- $this->click( "link=Date and time" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."My preferences" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
+ $this->click( SeleniumTestConstants::LINK_START."Date and time" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
$this->click( "mw-input-date-dmy" );
$this->select( "mw-input-timecorrection", "label=Asia/Colombo" );
$this->click( "prefcontrol" );
- $this->waitForPageToLoad( "30000" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify Date format and time zome saved
$this->assertEquals( "Your preferences have been saved.",
@@ -151,15 +151,15 @@ class UserPreferencesTestCase extends SeleniumTestCase {
$this->open( $this->getUrl() .
'/index.php?title=Main_Page&action=edit' );
- $this->click( "link=My preferences" );
- $this->waitForPageToLoad( "30000" );
+ $this->click( SeleniumTestConstants::LINK_START."My preferences" );
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify restoring all default settings
$this->assertEquals( "Restore all default settings",
- $this->getText( "link=Restore all default settings" ));
+ $this->getText( SeleniumTestConstants::LINK_START."Restore all default settings" ));
$this->click("//*[@id='preferences']/div/a");
- $this->waitForPageToLoad("30000");
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify 'This can not be undone' warning message displayed
$this->assertTrue($this->isElementPresent("//input[@value='Restore all default settings']"));
@@ -169,7 +169,7 @@ class UserPreferencesTestCase extends SeleniumTestCase {
$this->getText("//div[@id='bodyContent']/p"));
$this->click("//input[@value='Restore all default settings']");
- $this->waitForPageToLoad("30000");
+ $this->waitForPageToLoad( SeleniumTestConstants::WIKI_TEST_WAIT_TIME );
// Verify preferences saved successfully
$this->assertEquals("Your preferences have been saved.",
diff --git a/maintenance/tests/testHelpers.inc b/tests/testHelpers.inc
index 94ca6abc..5d56e625 100644
--- a/maintenance/tests/testHelpers.inc
+++ b/tests/testHelpers.inc
@@ -1,7 +1,7 @@
<?php
/**
- * @ingroup Maintenance
+ * @ingroup Testing
*
* Set of classes to help with test output and such. Right now pretty specific
* to the parser tests but could be more useful one day :)
@@ -75,7 +75,7 @@ class TestRecorder {
if ( $this->total > 0 ) {
$this->reportPercentage( $this->success, $this->total );
} else {
- wfDie( "No tests found.\n" );
+ throw new MWException( "No tests found.\n" );
}
}
@@ -302,7 +302,6 @@ class DbTestRecorder extends DbTestPreviewer {
* and all that fun stuff
*/
function start() {
- global $wgDBtype;
$this->db->begin();
if ( ! $this->db->tableExists( 'testrun' )
@@ -324,7 +323,7 @@ class DbTestRecorder extends DbTestPreviewer {
'tr_uname' => php_uname()
),
__METHOD__ );
- if ( $wgDBtype === 'postgres' ) {
+ if ( $this->db->getType() === 'postgres' ) {
$this->curRun = $this->db->currentSequenceValue( 'testrun_id_seq' );
} else {
$this->curRun = $this->db->insertId();
@@ -350,99 +349,6 @@ class DbTestRecorder extends DbTestPreviewer {
}
}
-class RemoteTestRecorder extends TestRecorder {
- function start() {
- parent::start();
-
- $this->results = array();
- $this->ping( 'running' );
- }
-
- function record( $test, $result ) {
- parent::record( $test, $result );
- $this->results[$test] = (bool)$result;
- }
-
- function end() {
- $this->ping( 'complete', $this->results );
- parent::end();
- }
-
- /**
- * Inform a CodeReview instance that we've started or completed a test run...
- *
- * @param $status string: "running" - tell it we've started
- * "complete" - provide test results array
- * "abort" - something went horribly awry
- * @param $results array of test name => true/false
- */
- function ping( $status, $results = false ) {
- global $wgParserTestRemote, $IP;
-
- $remote = $wgParserTestRemote;
- $revId = SpecialVersion::getSvnRevision( $IP );
- $jsonResults = FormatJson::encode( $results );
-
- if ( !$remote ) {
- print "Can't do remote upload without configuring \$wgParserTestRemote!\n";
- exit( 1 );
- }
-
- // Generate a hash MAC to validate our credentials
- $message = array(
- $remote['repo'],
- $remote['suite'],
- $revId,
- $status,
- );
-
- if ( $status == "complete" ) {
- $message[] = $jsonResults;
- }
- $hmac = hash_hmac( "sha1", implode( "|", $message ), $remote['secret'] );
-
- $postData = array(
- 'action' => 'codetestupload',
- 'format' => 'json',
- 'repo' => $remote['repo'],
- 'suite' => $remote['suite'],
- 'rev' => $revId,
- 'status' => $status,
- 'hmac' => $hmac,
- );
-
- if ( $status == "complete" ) {
- $postData['results'] = $jsonResults;
- }
-
- $response = $this->post( $remote['api-url'], $postData );
-
- if ( $response === false ) {
- print "CodeReview info upload failed to reach server.\n";
- exit( 1 );
- }
-
- $responseData = FormatJson::decode( $response, true );
-
- if ( !is_array( $responseData ) ) {
- print "CodeReview API response not recognized...\n";
- wfDebug( "Unrecognized CodeReview API response: $response\n" );
- exit( 1 );
- }
-
- if ( isset( $responseData['error'] ) ) {
- $code = $responseData['error']['code'];
- $info = $responseData['error']['info'];
- print "CodeReview info upload failed: $code $info\n";
- exit( 1 );
- }
- }
-
- function post( $url, $data ) {
- return Http::post( $url, array( 'postData' => $data ) );
- }
-}
-
class TestFileIterator implements Iterator {
private $file;
private $fh;
@@ -452,28 +358,25 @@ class TestFileIterator implements Iterator {
private $lineNum;
private $eof;
- function __construct( $file, $parserTest = null ) {
+ function __construct( $file, $parserTest ) {
global $IP;
$this->file = $file;
$this->fh = fopen( $this->file, "rt" );
if ( !$this->fh ) {
- wfDie( "Couldn't open file '$file'\n" );
+ throw new MWException( "Couldn't open file '$file'\n" );
}
$this->parserTest = $parserTest;
-
- if ( $this->parserTest ) {
- $this->parserTest->showRunFile( wfRelativePath( $this->file, $IP ) );
- }
+ $this->parserTest->showRunFile( wfRelativePath( $this->file, $IP ) );
$this->lineNum = $this->index = 0;
}
function rewind() {
if ( fseek( $this->fh, 0 ) ) {
- wfDie( "Couldn't fseek to the start of '$this->file'\n" );
+ throw new MWException( "Couldn't fseek to the start of '$this->file'\n" );
}
$this->index = -1;
@@ -518,18 +421,15 @@ class TestFileIterator implements Iterator {
if ( $section == 'endarticle' ) {
if ( !isset( $data['text'] ) ) {
- wfDie( "'endarticle' without 'text' at line {$this->lineNum} of $this->file\n" );
+ throw new MWException( "'endarticle' without 'text' at line {$this->lineNum} of $this->file\n" );
}
if ( !isset( $data['article'] ) ) {
- wfDie( "'endarticle' without 'article' at line {$this->lineNum} of $this->file\n" );
+ throw new MWException( "'endarticle' without 'article' at line {$this->lineNum} of $this->file\n" );
}
- if ( $this->parserTest ) {
- $this->parserTest->addArticle( ParserTest::chomp( $data['article'] ), $data['text'], $this->lineNum );
- } else {wfDie("JAJA");
- ParserTest::addArticle( $data['article'], $data['text'], $this->lineNum );
- }
+ $this->parserTest->addArticle( ParserTest::chomp( $data['article'] ), $data['text'], $this->lineNum );
+
$data = array();
$section = null;
@@ -538,14 +438,14 @@ class TestFileIterator implements Iterator {
if ( $section == 'endhooks' ) {
if ( !isset( $data['hooks'] ) ) {
- wfDie( "'endhooks' without 'hooks' at line {$this->lineNum} of $this->file\n" );
+ throw new MWException( "'endhooks' without 'hooks' at line {$this->lineNum} of $this->file\n" );
}
foreach ( explode( "\n", $data['hooks'] ) as $line ) {
$line = trim( $line );
if ( $line ) {
- if ( $this->parserTest && !$this->parserTest->requireHook( $line ) ) {
+ if ( !$this->parserTest->requireHook( $line ) ) {
return false;
}
}
@@ -559,14 +459,14 @@ class TestFileIterator implements Iterator {
if ( $section == 'endfunctionhooks' ) {
if ( !isset( $data['functionhooks'] ) ) {
- wfDie( "'endfunctionhooks' without 'functionhooks' at line {$this->lineNum} of $this->file\n" );
+ throw new MWException( "'endfunctionhooks' without 'functionhooks' at line {$this->lineNum} of $this->file\n" );
}
foreach ( explode( "\n", $data['functionhooks'] ) as $line ) {
$line = trim( $line );
if ( $line ) {
- if ( $this->parserTest && !$this->parserTest->requireFunctionHook( $line ) ) {
+ if ( !$this->parserTest->requireFunctionHook( $line ) ) {
return false;
}
}
@@ -580,15 +480,15 @@ class TestFileIterator implements Iterator {
if ( $section == 'end' ) {
if ( !isset( $data['test'] ) ) {
- wfDie( "'end' without 'test' at line {$this->lineNum} of $this->file\n" );
+ throw new MWException( "'end' without 'test' at line {$this->lineNum} of $this->file\n" );
}
if ( !isset( $data['input'] ) ) {
- wfDie( "'end' without 'input' at line {$this->lineNum} of $this->file\n" );
+ throw new MWException( "'end' without 'input' at line {$this->lineNum} of $this->file\n" );
}
if ( !isset( $data['result'] ) ) {
- wfDie( "'end' without 'result' at line {$this->lineNum} of $this->file\n" );
+ throw new MWException( "'end' without 'result' at line {$this->lineNum} of $this->file\n" );
}
if ( !isset( $data['options'] ) ) {
@@ -598,8 +498,7 @@ class TestFileIterator implements Iterator {
if ( !isset( $data['config'] ) )
$data['config'] = '';
- if ( $this->parserTest
- && ( ( preg_match( '/\\bdisabled\\b/i', $data['options'] ) && !$this->parserTest->runDisabled )
+ if ( ( ( preg_match( '/\\bdisabled\\b/i', $data['options'] ) && !$this->parserTest->runDisabled )
|| !preg_match( "/" . $this->parserTest->regex . "/i", $data['test'] ) ) ) {
# disabled test
$data = array();
@@ -608,33 +507,18 @@ class TestFileIterator implements Iterator {
continue;
}
- global $wgUseTeX;
-
- if ( $this->parserTest &&
- preg_match( '/\\bmath\\b/i', $data['options'] ) && !$wgUseTeX ) {
- # don't run math tests if $wgUseTeX is set to false in LocalSettings
- $data = array();
- $section = null;
-
- continue;
- }
-
- if ( $this->parserTest ) {
- $this->test = array(
- 'test' => ParserTest::chomp( $data['test'] ),
- 'input' => ParserTest::chomp( $data['input'] ),
- 'result' => ParserTest::chomp( $data['result'] ),
- 'options' => ParserTest::chomp( $data['options'] ),
- 'config' => ParserTest::chomp( $data['config'] ) );
- } else {
- $this->test['test'] = $data['test'];
- }
+ $this->test = array(
+ 'test' => ParserTest::chomp( $data['test'] ),
+ 'input' => ParserTest::chomp( $data['input'] ),
+ 'result' => ParserTest::chomp( $data['result'] ),
+ 'options' => ParserTest::chomp( $data['options'] ),
+ 'config' => ParserTest::chomp( $data['config'] ) );
return true;
}
if ( isset ( $data[$section] ) ) {
- wfDie( "duplicate section '$section' at line {$this->lineNum} of $this->file\n" );
+ throw new MWException( "duplicate section '$section' at line {$this->lineNum} of $this->file\n" );
}
$data[$section] = '';
diff --git a/thumb.php b/thumb.php
index 1a1dee46..1fe564d8 100644
--- a/thumb.php
+++ b/thumb.php
@@ -7,7 +7,11 @@
* @ingroup Media
*/
define( 'MW_NO_OUTPUT_COMPRESSION', 1 );
-require_once( './includes/WebStart.php' );
+if ( isset( $_SERVER['MW_COMPILED'] ) ) {
+ require ( 'phase3/includes/WebStart.php' );
+} else {
+ require ( dirname( __FILE__ ) . '/includes/WebStart.php' );
+}
$wgTrivialMimeDetection = true; //don't use fancy mime detection, just check the file extension for jpg/gif/png.
@@ -41,7 +45,7 @@ function wfThumbMain() {
if ( isset( $params['p'] ) ) {
$params['page'] = $params['p'];
}
- unset( $params['r'] );
+ unset( $params['r'] ); // ignore 'r' because we unconditionally pass File::RENDER
// Is this a thumb of an archived file?
$isOld = (isset( $params['archived'] ) && $params['archived']);
diff --git a/trackback.php b/trackback.php
index f673c508..0e2036a9 100644
--- a/trackback.php
+++ b/trackback.php
@@ -5,7 +5,11 @@
* @ingroup SpecialPage
*/
-require_once( './includes/WebStart.php' );
+if ( isset( $_SERVER['MW_COMPILED'] ) ) {
+ require ( 'phase3/includes/WebStart.php' );
+} else {
+ require ( dirname( __FILE__ ) . '/includes/WebStart.php' );
+}
class TrackBack {